summaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm_hubs.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs/wm_hubs.c')
-rw-r--r--sound/soc/codecs/wm_hubs.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
index fed6ea9b019f..e93af7edd8f7 100644
--- a/sound/soc/codecs/wm_hubs.c
+++ b/sound/soc/codecs/wm_hubs.c
@@ -1,14 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0-only
/*
* wm_hubs.c -- WM8993/4 common code
*
* Copyright 2009-12 Wolfson Microelectronics plc
*
* Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
- *
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
*/
#include <linux/module.h>
2b4af6366931e6f66b60338cf6b08a4b32ae'>Documentation/core-api/workqueue.rst12
-rw-r--r--Documentation/cpu-freq/index.txt2
-rw-r--r--Documentation/device-mapper/dm-raid.txt1
-rw-r--r--Documentation/devicetree/bindings/clock/st,stm32h7-rcc.txt2
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-altera.txt39
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-stm32.txt29
-rw-r--r--Documentation/devicetree/bindings/iio/proximity/as3935.txt5
-rw-r--r--Documentation/devicetree/bindings/input/pwm-vibrator.txt66
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.txt6
-rw-r--r--Documentation/devicetree/bindings/leds/ams,as3645a.txt28
-rw-r--r--Documentation/devicetree/bindings/mips/lantiq/fpi-bus.txt31
-rw-r--r--Documentation/devicetree/bindings/mips/lantiq/rcu-gphy.txt36
-rw-r--r--Documentation/devicetree/bindings/mips/lantiq/rcu.txt89
-rw-r--r--Documentation/devicetree/bindings/mips/ni.txt7
-rw-r--r--Documentation/devicetree/bindings/mips/ralink.txt1
-rw-r--r--Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt12
-rw-r--r--Documentation/devicetree/bindings/net/marvell-pp2.txt10
-rw-r--r--Documentation/devicetree/bindings/net/rockchip-dwmac.txt1
-rw-r--r--Documentation/devicetree/bindings/phy/phy-lantiq-rcu-usb2.txt40
-rw-r--r--Documentation/devicetree/bindings/reset/lantiq,reset.txt30
-rw-r--r--Documentation/devicetree/bindings/reset/snps,hsdk-reset.txt28
-rw-r--r--Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt6
-rw-r--r--Documentation/devicetree/bindings/serial/renesas,sci-serial.txt2
-rw-r--r--Documentation/devicetree/bindings/vendor-prefixes.txt3
-rw-r--r--Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt40
-rw-r--r--Documentation/devicetree/bindings/watchdog/lantiq-wdt.txt24
-rw-r--r--Documentation/devicetree/bindings/watchdog/meson-wdt.txt6
-rw-r--r--Documentation/devicetree/bindings/watchdog/mtk-wdt.txt2
-rw-r--r--Documentation/devicetree/bindings/watchdog/renesas-wdt.txt1
-rw-r--r--Documentation/driver-api/pm/devices.rst2
-rw-r--r--Documentation/driver-model/driver.txt7
-rw-r--r--Documentation/fb/fbcon.txt7
-rw-r--r--Documentation/filesystems/cifs/AUTHORS5
-rw-r--r--Documentation/filesystems/cifs/README81
-rw-r--r--Documentation/filesystems/cifs/TODO72
-rw-r--r--Documentation/filesystems/cifs/cifs.txt24
-rw-r--r--Documentation/filesystems/orangefs.txt14
-rw-r--r--Documentation/filesystems/overlayfs.txt5
-rw-r--r--Documentation/filesystems/porting2
-rw-r--r--Documentation/filesystems/sysfs.txt3
-rw-r--r--Documentation/i2c/busses/i2c-i8011
-rw-r--r--Documentation/kbuild/makefiles.txt31
-rw-r--r--Documentation/networking/bonding.txt2
-rw-r--r--Documentation/networking/filter.txt4
-rw-r--r--Documentation/networking/ip-sysctl.txt18
-rw-r--r--Documentation/networking/switchdev.txt68
-rw-r--r--Documentation/process/index.rst1
-rw-r--r--Documentation/process/kernel-enforcement-statement.rst147
-rw-r--r--Documentation/sysctl/kernel.txt1
-rw-r--r--Documentation/userspace-api/seccomp_filter.rst52
-rw-r--r--Documentation/watchdog/watchdog-parameters.txt2
-rw-r--r--Kbuild1
-rw-r--r--Kconfig1
-rw-r--r--MAINTAINERS101
-rw-r--r--Makefile43
-rw-r--r--arch/Kconfig4
-rw-r--r--arch/alpha/Kconfig1
-rw-r--r--arch/alpha/Kconfig.debug1
-rw-r--r--arch/alpha/boot/bootloader.lds1
-rw-r--r--arch/alpha/boot/bootp.c1
-rw-r--r--arch/alpha/boot/bootpz.c1
-rw-r--r--arch/alpha/boot/head.S1
-rw-r--r--arch/alpha/boot/main.c1
-rw-r--r--arch/alpha/boot/misc.c1
-rw-r--r--arch/alpha/boot/tools/mkbb.c1
-rw-r--r--arch/alpha/boot/tools/objstrip.c1
-rw-r--r--arch/alpha/include/asm/Kbuild1
-rw-r--r--arch/alpha/include/asm/a.out.h1
-rw-r--r--arch/alpha/include/asm/agp.h1
-rw-r--r--arch/alpha/include/asm/agp_backend.h1
-rw-r--r--arch/alpha/include/asm/atomic.h1
-rw-r--r--arch/alpha/include/asm/barrier.h1
-rw-r--r--arch/alpha/include/asm/bitops.h1
-rw-r--r--arch/alpha/include/asm/bug.h1
-rw-r--r--arch/alpha/include/asm/cache.h1
-rw-r--r--arch/alpha/include/asm/cacheflush.h1
-rw-r--r--arch/alpha/include/asm/checksum.h1
-rw-r--r--arch/alpha/include/asm/cmpxchg.h1
-rw-r--r--arch/alpha/include/asm/compiler.h1
-rw-r--r--arch/alpha/include/asm/console.h1
-rw-r--r--arch/alpha/include/asm/core_apecs.h1
-rw-r--r--arch/alpha/include/asm/core_cia.h1
-rw-r--r--arch/alpha/include/asm/core_irongate.h1
-rw-r--r--arch/alpha/include/asm/core_lca.h1
-rw-r--r--arch/alpha/include/asm/core_marvel.h1
-rw-r--r--arch/alpha/include/asm/core_mcpcia.h1
-rw-r--r--arch/alpha/include/asm/core_polaris.h1
-rw-r--r--arch/alpha/include/asm/core_t2.h1
-rw-r--r--arch/alpha/include/asm/core_titan.h1
-rw-r--r--arch/alpha/include/asm/core_tsunami.h1
-rw-r--r--arch/alpha/include/asm/core_wildfire.h1
-rw-r--r--arch/alpha/include/asm/delay.h1
-rw-r--r--arch/alpha/include/asm/dma-mapping.h1
-rw-r--r--arch/alpha/include/asm/dma.h1
-rw-r--r--arch/alpha/include/asm/elf.h1
-rw-r--r--arch/alpha/include/asm/err_common.h1
-rw-r--r--arch/alpha/include/asm/err_ev7.h1
-rw-r--r--arch/alpha/include/asm/extable.h1
-rw-r--r--arch/alpha/include/asm/fpu.h1
-rw-r--r--arch/alpha/include/asm/futex.h1
-rw-r--r--arch/alpha/include/asm/gct.h1
-rw-r--r--arch/alpha/include/asm/hardirq.h1
-rw-r--r--arch/alpha/include/asm/hw_irq.h1
-rw-r--r--arch/alpha/include/asm/hwrpb.h1
-rw-r--r--arch/alpha/include/asm/io.h1
-rw-r--r--arch/alpha/include/asm/io_trivial.h1
-rw-r--r--arch/alpha/include/asm/irq.h1
-rw-r--r--arch/alpha/include/asm/irqflags.h1
-rw-r--r--arch/alpha/include/asm/jensen.h1
-rw-r--r--arch/alpha/include/asm/kmap_types.h1
-rw-r--r--arch/alpha/include/asm/linkage.h1
-rw-r--r--arch/alpha/include/asm/local.h1
-rw-r--r--arch/alpha/include/asm/machvec.h1
-rw-r--r--arch/alpha/include/asm/mc146818rtc.h1
-rw-r--r--arch/alpha/include/asm/mce.h1
-rw-r--r--arch/alpha/include/asm/mmu.h1
-rw-r--r--arch/alpha/include/asm/mmu_context.h2
-rw-r--r--arch/alpha/include/asm/mmzone.h1
-rw-r--r--arch/alpha/include/asm/module.h1
-rw-r--r--arch/alpha/include/asm/page.h1
-rw-r--r--arch/alpha/include/asm/pal.h1
-rw-r--r--arch/alpha/include/asm/param.h1
-rw-r--r--arch/alpha/include/asm/parport.h1
-rw-r--r--arch/alpha/include/asm/pci.h1
-rw-r--r--arch/alpha/include/asm/percpu.h1
-rw-r--r--arch/alpha/include/asm/pgalloc.h1
-rw-r--r--arch/alpha/include/asm/pgtable.h1
-rw-r--r--arch/alpha/include/asm/processor.h1
-rw-r--r--arch/alpha/include/asm/ptrace.h1
-rw-r--r--arch/alpha/include/asm/rwsem.h1
-rw-r--r--arch/alpha/include/asm/serial.h1
-rw-r--r--arch/alpha/include/asm/shmparam.h1
-rw-r--r--arch/alpha/include/asm/signal.h1
-rw-r--r--arch/alpha/include/asm/smp.h1
-rw-r--r--arch/alpha/include/asm/socket.h1
-rw-r--r--arch/alpha/include/asm/special_insns.h1
-rw-r--r--arch/alpha/include/asm/spinlock.h1
-rw-r--r--arch/alpha/include/asm/spinlock_types.h1
-rw-r--r--arch/alpha/include/asm/string.h1
-rw-r--r--arch/alpha/include/asm/switch_to.h1
-rw-r--r--arch/alpha/include/asm/syscall.h1
-rw-r--r--arch/alpha/include/asm/termios.h1
-rw-r--r--arch/alpha/include/asm/thread_info.h1
-rw-r--r--arch/alpha/include/asm/timex.h1
-rw-r--r--arch/alpha/include/asm/tlb.h1
-rw-r--r--arch/alpha/include/asm/tlbflush.h1
-rw-r--r--arch/alpha/include/asm/topology.h1
-rw-r--r--arch/alpha/include/asm/types.h1
-rw-r--r--arch/alpha/include/asm/uaccess.h1
-rw-r--r--arch/alpha/include/asm/ucontext.h1
-rw-r--r--arch/alpha/include/asm/unaligned.h1
-rw-r--r--arch/alpha/include/asm/unistd.h1
-rw-r--r--arch/alpha/include/asm/user.h1
-rw-r--r--arch/alpha/include/asm/vga.h1
-rw-r--r--arch/alpha/include/asm/word-at-a-time.h1
-rw-r--r--arch/alpha/include/asm/wrperfmon.h1
-rw-r--r--arch/alpha/include/asm/xchg.h1
-rw-r--r--arch/alpha/include/uapi/asm/a.out.h1
-rw-r--r--arch/alpha/include/uapi/asm/auxvec.h1
-rw-r--r--arch/alpha/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/alpha/include/uapi/asm/byteorder.h1
-rw-r--r--arch/alpha/include/uapi/asm/compiler.h1
-rw-r--r--arch/alpha/include/uapi/asm/console.h1
-rw-r--r--arch/alpha/include/uapi/asm/errno.h1
-rw-r--r--arch/alpha/include/uapi/asm/fcntl.h1
-rw-r--r--arch/alpha/include/uapi/asm/fpu.h1
-rw-r--r--arch/alpha/include/uapi/asm/gentrap.h1
-rw-r--r--arch/alpha/include/uapi/asm/ioctl.h1
-rw-r--r--arch/alpha/include/uapi/asm/ioctls.h1
-rw-r--r--arch/alpha/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/alpha/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/alpha/include/uapi/asm/mman.h1
-rw-r--r--arch/alpha/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/alpha/include/uapi/asm/pal.h1
-rw-r--r--arch/alpha/include/uapi/asm/param.h1
-rw-r--r--arch/alpha/include/uapi/asm/poll.h1
-rw-r--r--arch/alpha/include/uapi/asm/posix_types.h1
-rw-r--r--arch/alpha/include/uapi/asm/ptrace.h1
-rw-r--r--arch/alpha/include/uapi/asm/reg.h1
-rw-r--r--arch/alpha/include/uapi/asm/regdef.h1
-rw-r--r--arch/alpha/include/uapi/asm/resource.h1
-rw-r--r--arch/alpha/include/uapi/asm/sembuf.h1
-rw-r--r--arch/alpha/include/uapi/asm/setup.h1
-rw-r--r--arch/alpha/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/alpha/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/alpha/include/uapi/asm/siginfo.h1
-rw-r--r--arch/alpha/include/uapi/asm/signal.h1
-rw-r--r--arch/alpha/include/uapi/asm/socket.h1
-rw-r--r--arch/alpha/include/uapi/asm/sockios.h1
-rw-r--r--arch/alpha/include/uapi/asm/stat.h1
-rw-r--r--arch/alpha/include/uapi/asm/statfs.h1
-rw-r--r--arch/alpha/include/uapi/asm/swab.h1
-rw-r--r--arch/alpha/include/uapi/asm/sysinfo.h1
-rw-r--r--arch/alpha/include/uapi/asm/termbits.h1
-rw-r--r--arch/alpha/include/uapi/asm/termios.h1
-rw-r--r--arch/alpha/include/uapi/asm/types.h1
-rw-r--r--arch/alpha/include/uapi/asm/unistd.h1
-rw-r--r--arch/alpha/kernel/Makefile1
-rw-r--r--arch/alpha/kernel/asm-offsets.c1
-rw-r--r--arch/alpha/kernel/binfmt_loader.c1
-rw-r--r--arch/alpha/kernel/console.c1
-rw-r--r--arch/alpha/kernel/core_apecs.c1
-rw-r--r--arch/alpha/kernel/core_cia.c1
-rw-r--r--arch/alpha/kernel/core_irongate.c1
-rw-r--r--arch/alpha/kernel/core_lca.c1
-rw-r--r--arch/alpha/kernel/core_marvel.c1
-rw-r--r--arch/alpha/kernel/core_mcpcia.c1
-rw-r--r--arch/alpha/kernel/core_polaris.c1
-rw-r--r--arch/alpha/kernel/core_t2.c1
-rw-r--r--arch/alpha/kernel/core_titan.c1
-rw-r--r--arch/alpha/kernel/core_tsunami.c1
-rw-r--r--arch/alpha/kernel/core_wildfire.c1
-rw-r--r--arch/alpha/kernel/entry.S1
-rw-r--r--arch/alpha/kernel/err_common.c1
-rw-r--r--arch/alpha/kernel/err_ev6.c1
-rw-r--r--arch/alpha/kernel/err_ev7.c1
-rw-r--r--arch/alpha/kernel/err_impl.h1
-rw-r--r--arch/alpha/kernel/err_marvel.c1
-rw-r--r--arch/alpha/kernel/err_titan.c1
-rw-r--r--arch/alpha/kernel/es1888.c1
-rw-r--r--arch/alpha/kernel/gct.c1
-rw-r--r--arch/alpha/kernel/head.S1
-rw-r--r--arch/alpha/kernel/io.c1
-rw-r--r--arch/alpha/kernel/irq.c1
-rw-r--r--arch/alpha/kernel/irq_alpha.c1
-rw-r--r--arch/alpha/kernel/irq_i8259.c1
-rw-r--r--arch/alpha/kernel/irq_impl.h1
-rw-r--r--arch/alpha/kernel/irq_pyxis.c1
-rw-r--r--arch/alpha/kernel/irq_srm.c1
-rw-r--r--arch/alpha/kernel/machvec_impl.h1
-rw-r--r--arch/alpha/kernel/osf_sys.c1
-rw-r--r--arch/alpha/kernel/pc873xx.c1
-rw-r--r--arch/alpha/kernel/pc873xx.h1
-rw-r--r--arch/alpha/kernel/pci-noop.c1
-rw-r--r--arch/alpha/kernel/pci-sysfs.c1
-rw-r--r--arch/alpha/kernel/pci.c1
-rw-r--r--arch/alpha/kernel/pci_impl.h1
-rw-r--r--arch/alpha/kernel/pci_iommu.c1
-rw-r--r--arch/alpha/kernel/perf_event.c1
-rw-r--r--arch/alpha/kernel/process.c1
-rw-r--r--arch/alpha/kernel/proto.h1
-rw-r--r--arch/alpha/kernel/ptrace.c1
-rw-r--r--arch/alpha/kernel/rtc.c1
-rw-r--r--arch/alpha/kernel/setup.c1
-rw-r--r--arch/alpha/kernel/signal.c1
-rw-r--r--arch/alpha/kernel/smc37c93x.c1
-rw-r--r--arch/alpha/kernel/smp.c1
-rw-r--r--arch/alpha/kernel/srmcons.c1
-rw-r--r--arch/alpha/kernel/sys_alcor.c5
-rw-r--r--arch/alpha/kernel/sys_cabriolet.c13
-rw-r--r--arch/alpha/kernel/sys_dp264.c21
-rw-r--r--arch/alpha/kernel/sys_eb64p.c5
-rw-r--r--arch/alpha/kernel/sys_eiger.c5
-rw-r--r--arch/alpha/kernel/sys_jensen.c1
-rw-r--r--arch/alpha/kernel/sys_marvel.c1
-rw-r--r--arch/alpha/kernel/sys_miata.c7
-rw-r--r--arch/alpha/kernel/sys_mikasa.c5
-rw-r--r--arch/alpha/kernel/sys_nautilus.c3
-rw-r--r--arch/alpha/kernel/sys_noritake.c7
-rw-r--r--arch/alpha/kernel/sys_rawhide.c5
-rw-r--r--arch/alpha/kernel/sys_ruffian.c7
-rw-r--r--arch/alpha/kernel/sys_rx164.c5
-rw-r--r--arch/alpha/kernel/sys_sable.c11
-rw-r--r--arch/alpha/kernel/sys_sio.c9
-rw-r--r--arch/alpha/kernel/sys_sx164.c5
-rw-r--r--arch/alpha/kernel/sys_takara.c7
-rw-r--r--arch/alpha/kernel/sys_titan.c1
-rw-r--r--arch/alpha/kernel/sys_wildfire.c5
-rw-r--r--arch/alpha/kernel/systbls.S1
-rw-r--r--arch/alpha/kernel/time.c1
-rw-r--r--arch/alpha/kernel/traps.c1
-rw-r--r--arch/alpha/kernel/vmlinux.lds.S1
-rw-r--r--arch/alpha/lib/Makefile1
-rw-r--r--arch/alpha/lib/callback_srm.S1
-rw-r--r--arch/alpha/lib/checksum.c1
-rw-r--r--arch/alpha/lib/clear_page.S1
-rw-r--r--arch/alpha/lib/clear_user.S1
-rw-r--r--arch/alpha/lib/copy_page.S1
-rw-r--r--arch/alpha/lib/copy_user.S1
-rw-r--r--arch/alpha/lib/csum_ipv6_magic.S1
-rw-r--r--arch/alpha/lib/csum_partial_copy.c1
-rw-r--r--arch/alpha/lib/dbg_current.S1
-rw-r--r--arch/alpha/lib/dbg_stackcheck.S1
-rw-r--r--arch/alpha/lib/dbg_stackkill.S1
-rw-r--r--arch/alpha/lib/dec_and_lock.c1
-rw-r--r--arch/alpha/lib/divide.S1
-rw-r--r--arch/alpha/lib/ev6-clear_page.S1
-rw-r--r--arch/alpha/lib/ev6-clear_user.S1
-rw-r--r--arch/alpha/lib/ev6-copy_page.S1
-rw-r--r--arch/alpha/lib/ev6-copy_user.S1
-rw-r--r--arch/alpha/lib/ev6-csum_ipv6_magic.S1
-rw-r--r--arch/alpha/lib/ev6-divide.S1
-rw-r--r--arch/alpha/lib/ev6-memchr.S1
-rw-r--r--arch/alpha/lib/ev6-memcpy.S1
-rw-r--r--arch/alpha/lib/ev6-memset.S1
-rw-r--r--arch/alpha/lib/ev6-stxcpy.S1
-rw-r--r--arch/alpha/lib/ev6-stxncpy.S1
-rw-r--r--arch/alpha/lib/ev67-strcat.S1
-rw-r--r--arch/alpha/lib/ev67-strchr.S1
-rw-r--r--arch/alpha/lib/ev67-strlen.S1
-rw-r--r--arch/alpha/lib/ev67-strncat.S1
-rw-r--r--arch/alpha/lib/ev67-strrchr.S1
-rw-r--r--arch/alpha/lib/fls.c1
-rw-r--r--arch/alpha/lib/fpreg.c1
-rw-r--r--arch/alpha/lib/memcpy.c1
-rw-r--r--arch/alpha/lib/memmove.S1
-rw-r--r--arch/alpha/lib/memset.S1
-rw-r--r--arch/alpha/lib/srm_printk.c1
-rw-r--r--arch/alpha/lib/srm_puts.c1
-rw-r--r--arch/alpha/lib/stacktrace.c1
-rw-r--r--arch/alpha/lib/strcat.S1
-rw-r--r--arch/alpha/lib/strchr.S1
-rw-r--r--arch/alpha/lib/strcpy.S1
-rw-r--r--arch/alpha/lib/strlen.S1
-rw-r--r--arch/alpha/lib/strncat.S1
-rw-r--r--arch/alpha/lib/strncpy.S1
-rw-r--r--arch/alpha/lib/strrchr.S1
-rw-r--r--arch/alpha/lib/stxcpy.S1
-rw-r--r--arch/alpha/lib/stxncpy.S1
-rw-r--r--arch/alpha/lib/udelay.c1
-rw-r--r--arch/alpha/math-emu/sfp-util.h1
-rw-r--r--arch/alpha/mm/fault.c1
-rw-r--r--arch/alpha/mm/init.c1
-rw-r--r--arch/alpha/mm/numa.c1
-rw-r--r--arch/alpha/oprofile/Makefile1
-rw-r--r--arch/arc/Kconfig2
-rw-r--r--arch/arc/Kconfig.debug1
-rw-r--r--arch/arc/Makefile2
-rw-r--r--arch/arc/boot/Makefile1
-rw-r--r--arch/arc/boot/dts/Makefile1
-rw-r--r--arch/arc/boot/dts/axs10x_mb.dtsi9
-rw-r--r--arch/arc/boot/dts/hsdk.dts33
-rw-r--r--arch/arc/configs/axs101_defconfig2
-rw-r--r--arch/arc/configs/axs103_defconfig2
-rw-r--r--arch/arc/configs/axs103_smp_defconfig2
-rw-r--r--arch/arc/configs/haps_hs_smp_defconfig2
-rw-r--r--arch/arc/configs/hsdk_defconfig2
-rw-r--r--arch/arc/configs/vdk_hs38_defconfig2
-rw-r--r--arch/arc/configs/vdk_hs38_smp_defconfig2
-rw-r--r--arch/arc/include/asm/Kbuild1
-rw-r--r--arch/arc/include/asm/arcregs.h11
-rw-r--r--arch/arc/include/asm/entry-arcv2.h1
-rw-r--r--arch/arc/include/asm/fb.h1
-rw-r--r--arch/arc/include/asm/processor.h3
-rw-r--r--arch/arc/include/uapi/asm/byteorder.h1
-rw-r--r--arch/arc/include/uapi/asm/cachectl.h1
-rw-r--r--arch/arc/include/uapi/asm/elf.h1
-rw-r--r--arch/arc/include/uapi/asm/page.h1
-rw-r--r--arch/arc/include/uapi/asm/ptrace.h1
-rw-r--r--arch/arc/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/arc/include/uapi/asm/signal.h1
-rw-r--r--arch/arc/include/uapi/asm/swab.h1
-rw-r--r--arch/arc/include/uapi/asm/unistd.h1
-rw-r--r--arch/arc/kernel/setup.c34
-rw-r--r--arch/arc/kernel/smp.c5
-rw-r--r--arch/arc/kernel/sys.c1
-rw-r--r--arch/arc/kernel/troubleshoot.c2
-rw-r--r--arch/arc/oprofile/Makefile1
-rw-r--r--arch/arc/plat-axs10x/axs10x.c7
-rw-r--r--arch/arc/plat-eznps/Kconfig1
-rw-r--r--arch/arc/plat-hsdk/Kconfig4
-rw-r--r--arch/arc/plat-hsdk/platform.c52
-rw-r--r--arch/arm/Kconfig1
-rw-r--r--arch/arm/Kconfig-nommu1
-rw-r--r--arch/arm/Kconfig.debug1
-rw-r--r--arch/arm/Makefile2
-rw-r--r--arch/arm/boot/bootp/Makefile1
-rw-r--r--arch/arm/boot/bootp/initrd.S1
-rw-r--r--arch/arm/boot/bootp/kernel.S1
-rw-r--r--arch/arm/boot/compressed/Makefile1
-rw-r--r--arch/arm/boot/compressed/atags_to_fdt.c1
-rw-r--r--arch/arm/boot/compressed/big-endian.S1
-rw-r--r--arch/arm/boot/compressed/debug.S5
-rw-r--r--arch/arm/boot/compressed/decompress.c1
-rw-r--r--arch/arm/boot/compressed/head-sa1100.S1
-rw-r--r--arch/arm/boot/compressed/head-sharpsl.S1
-rw-r--r--arch/arm/boot/compressed/head-xscale.S1
-rw-r--r--arch/arm/boot/compressed/libfdt_env.h1
-rw-r--r--arch/arm/boot/compressed/misc.c1
-rw-r--r--arch/arm/boot/compressed/piggy.S1
-rw-r--r--arch/arm/boot/compressed/string.c1
-rw-r--r--arch/arm/boot/dts/Makefile1
-rw-r--r--arch/arm/boot/dts/am33xx.dtsi2
-rw-r--r--arch/arm/boot/dts/am43x-epos-evm.dts6
-rw-r--r--arch/arm/boot/dts/am57xx-commercial-grade.dtsi1
-rw-r--r--arch/arm/boot/dts/am57xx-industrial-grade.dtsi1
-rw-r--r--arch/arm/boot/dts/armada-38x.dtsi4
-rw-r--r--arch/arm/boot/dts/armv7-m.dtsi1
-rw-r--r--arch/arm/boot/dts/aspeed-ast2500-evb.dts1
-rw-r--r--arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts1
-rw-r--r--arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts1
-rw-r--r--arch/arm/boot/dts/aspeed-g4.dtsi1
-rw-r--r--arch/arm/boot/dts/aspeed-g5.dtsi1
-rw-r--r--arch/arm/boot/dts/at91-ariettag25.dts1
-rw-r--r--arch/arm/boot/dts/at91-sama5d27_som1.dtsi4
-rw-r--r--arch/arm/boot/dts/at91-sama5d27_som1_ek.dts19
-rw-r--r--arch/arm/boot/dts/at91-sama5d2_xplained.dts16
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-a-plus.dts1
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-a.dts1
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-b-plus.dts1
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts1
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-b.dts1
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-zero-w.dts9
-rw-r--r--arch/arm/boot/dts/bcm2835.dtsi1
-rw-r--r--arch/arm/boot/dts/bcm2836-rpi-2-b.dts1
-rw-r--r--arch/arm/boot/dts/bcm2836.dtsi1
-rw-r--r--arch/arm/boot/dts/bcm2837-rpi-3-b.dts6
-rw-r--r--arch/arm/boot/dts/bcm283x-rpi-smsc9512.dtsi1
-rw-r--r--arch/arm/boot/dts/bcm283x-rpi-usb-otg.dtsi1
-rw-r--r--arch/arm/boot/dts/bcm283x.dtsi7
-rw-r--r--arch/arm/boot/dts/bcm63138.dtsi1
-rw-r--r--arch/arm/boot/dts/bcm7445-bcm97445svmb.dts1
-rw-r--r--arch/arm/boot/dts/bcm7445.dtsi1
-rw-r--r--arch/arm/boot/dts/bcm963138dvt.dts1
-rw-r--r--arch/arm/boot/dts/da850-evm.dts7
-rw-r--r--arch/arm/boot/dts/dove-cubox-es.dts1
-rw-r--r--arch/arm/boot/dts/dove-cubox.dts1
-rw-r--r--arch/arm/boot/dts/dove-d2plug.dts1
-rw-r--r--arch/arm/boot/dts/dove-d3plug.dts1
-rw-r--r--arch/arm/boot/dts/dove-dove-db.dts1
-rw-r--r--arch/arm/boot/dts/dove.dtsi1
-rw-r--r--arch/arm/boot/dts/dra7xx-clocks.dtsi2
-rw-r--r--arch/arm/boot/dts/efm32gg-dk3750.dts1
-rw-r--r--arch/arm/boot/dts/efm32gg.dtsi1
-rw-r--r--arch/arm/boot/dts/elpida_ecb240abacn.dtsi1
-rw-r--r--arch/arm/boot/dts/gemini-nas4220b.dts1
-rw-r--r--arch/arm/boot/dts/gemini-rut1xx.dts1
-rw-r--r--arch/arm/boot/dts/gemini-sq201.dts1
-rw-r--r--arch/arm/boot/dts/gemini-wbd111.dts1
-rw-r--r--arch/arm/boot/dts/gemini-wbd222.dts1
-rw-r--r--arch/arm/boot/dts/gemini.dtsi4
-rw-r--r--arch/arm/boot/dts/imx28-apx4devkit.dts1
-rw-r--r--arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi1
-rw-r--r--arch/arm/boot/dts/imx7d.dtsi8
-rw-r--r--arch/arm/boot/dts/integrator.dtsi1
-rw-r--r--arch/arm/boot/dts/integratorap.dts1
-rw-r--r--arch/arm/boot/dts/integratorcp.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-6192.dtsi1
-rw-r--r--arch/arm/boot/dts/kirkwood-6281.dtsi1
-rw-r--r--arch/arm/boot/dts/kirkwood-6282.dtsi1
-rw-r--r--arch/arm/boot/dts/kirkwood-98dx4122.dtsi1
-rw-r--r--arch/arm/boot/dts/kirkwood-cloudbox.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-dns320.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-dns325.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-dnskw.dtsi1
-rw-r--r--arch/arm/boot/dts/kirkwood-dockstar.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-dreamplug.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-goflexnet.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-ib62x0.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-iconnect.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-is2.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-km_common.dtsi1
-rw-r--r--arch/arm/boot/dts/kirkwood-km_fixedeth.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-km_kirkwood.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-lschlv2.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-lsxhl.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-lsxl.dtsi1
-rw-r--r--arch/arm/boot/dts/kirkwood-mplcec4.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2-common.dtsi1
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2lite.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2max.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2mini.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-nsa310.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-nsa310a.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-nsa3x0-common.dtsi1
-rw-r--r--arch/arm/boot/dts/kirkwood-openblocks_a6.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-pogoplug-series-4.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-topkick.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-ts219-6281.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-ts219-6282.dts1
-rw-r--r--arch/arm/boot/dts/kirkwood-ts219.dtsi1
-rw-r--r--arch/arm/boot/dts/kirkwood.dtsi1
-rw-r--r--arch/arm/boot/dts/moxart.dtsi3
-rw-r--r--arch/arm/boot/dts/omap-gpmc-smsc911x.dtsi1
-rw-r--r--arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi1
-rw-r--r--arch/arm/boot/dts/omap-zoom-common.dtsi1
-rw-r--r--arch/arm/boot/dts/omap2420-n800.dts1
-rw-r--r--arch/arm/boot/dts/omap2420-n810-wimax.dts1
-rw-r--r--arch/arm/boot/dts/omap2420-n810.dts1
-rw-r--r--arch/arm/boot/dts/omap2420-n8x0-common.dtsi1
-rw-r--r--arch/arm/boot/dts/omap3-cm-t3517.dts1
-rw-r--r--arch/arm/boot/dts/omap3-cm-t3530.dts1
-rw-r--r--arch/arm/boot/dts/omap3-cm-t3730.dts1
-rw-r--r--arch/arm/boot/dts/omap3-cm-t3x.dtsi1
-rw-r--r--arch/arm/boot/dts/omap3-cm-t3x30.dtsi1
-rw-r--r--arch/arm/boot/dts/omap3-evm-common.dtsi1
-rw-r--r--arch/arm/boot/dts/omap3-n900.dts11
-rw-r--r--arch/arm/boot/dts/omap3-n950-n9.dtsi10
-rw-r--r--arch/arm/boot/dts/omap3-panel-sharp-ls037v7dw01.dtsi1
-rw-r--r--arch/arm/boot/dts/omap3-sb-t35.dtsi1
-rw-r--r--arch/arm/boot/dts/omap3-sbc-t3517.dts1
-rw-r--r--arch/arm/boot/dts/omap3-sbc-t3530.dts1
-rw-r--r--arch/arm/boot/dts/omap3-sbc-t3730.dts1
-rw-r--r--arch/arm/boot/dts/omap5-cm-t54.dts1
-rw-r--r--arch/arm/boot/dts/omap5-sbc-t54.dts1
-rw-r--r--arch/arm/boot/dts/pxa27x.dtsi1
-rw-r--r--arch/arm/boot/dts/pxa3xx.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval-pins.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts1
-rw-r--r--arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts1
-rw-r--r--arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts1
-rw-r--r--arch/arm/boot/dts/qcom-apq8064-ifc6410.dts1
-rw-r--r--arch/arm/boot/dts/qcom-apq8064-pins.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-apq8064-sony-xperia-yuga.dts1
-rw-r--r--arch/arm/boot/dts/qcom-apq8064-v2.0.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-apq8064.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-apq8074-dragonboard.dts1
-rw-r--r--arch/arm/boot/dts/qcom-apq8084-ifc6540.dts1
-rw-r--r--arch/arm/boot/dts/qcom-apq8084-mtp.dts1
-rw-r--r--arch/arm/boot/dts/qcom-apq8084.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-ipq8064-ap148.dts1
-rw-r--r--arch/arm/boot/dts/qcom-ipq8064-v1.0.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-ipq8064.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-msm8660-surf.dts1
-rw-r--r--arch/arm/boot/dts/qcom-msm8660.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-msm8960-cdp.dts1
-rw-r--r--arch/arm/boot/dts/qcom-msm8960.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts1
-rw-r--r--arch/arm/boot/dts/qcom-msm8974-sony-xperia-honami.dts1
-rw-r--r--arch/arm/boot/dts/qcom-msm8974.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-pm8841.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-pm8941.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-pma8084.dtsi1
-rw-r--r--arch/arm/boot/dts/sama5d2-pinfunc.h1
-rw-r--r--arch/arm/boot/dts/sama5d2.dtsi1
-rw-r--r--arch/arm/boot/dts/samsung_k3pe0e000b.dtsi1
-rw-r--r--arch/arm/boot/dts/skeleton.dtsi1
-rw-r--r--arch/arm/boot/dts/skeleton64.dtsi1
-rw-r--r--arch/arm/boot/dts/st-pincfg.h1
-rw-r--r--arch/arm/boot/dts/ste-nomadik-nhk15.dts1
-rw-r--r--arch/arm/boot/dts/ste-nomadik-s8815.dts1
-rw-r--r--arch/arm/boot/dts/ste-nomadik-stn8815.dtsi1
-rw-r--r--arch/arm/boot/dts/ste-u300.dts1
-rw-r--r--arch/arm/boot/dts/stm32429i-eval.dts5
-rw-r--r--arch/arm/boot/dts/stm32f4-pinctrl.dtsi343
-rw-r--r--arch/arm/boot/dts/stm32f429-disco.dts1
-rw-r--r--arch/arm/boot/dts/stm32f429-pinctrl.dtsi95
-rw-r--r--arch/arm/boot/dts/stm32f429.dtsi297
-rw-r--r--arch/arm/boot/dts/stm32f469-disco.dts1
-rw-r--r--arch/arm/boot/dts/stm32f469-pinctrl.dtsi96
-rw-r--r--arch/arm/boot/dts/sun6i-a31.dtsi16
-rw-r--r--arch/arm/boot/dts/tango4-common.dtsi1
-rw-r--r--arch/arm/boot/dts/tango4-smp8758.dtsi1
-rw-r--r--arch/arm/boot/dts/tango4-vantage-1172.dts1
-rw-r--r--arch/arm/boot/dts/tegra114-dalmore.dts1
-rw-r--r--arch/arm/boot/dts/tegra114-roth.dts1
-rw-r--r--arch/arm/boot/dts/tegra114-tn7.dts1
-rw-r--r--arch/arm/boot/dts/tegra114.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra124-jetson-tk1-emc.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra124-jetson-tk1.dts1
-rw-r--r--arch/arm/boot/dts/tegra124-nyan-big-emc.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra124-nyan-big.dts1
-rw-r--r--arch/arm/boot/dts/tegra124-nyan-blaze-emc.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra124-nyan-blaze.dts1
-rw-r--r--arch/arm/boot/dts/tegra124-nyan.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra124-venice2.dts1
-rw-r--r--arch/arm/boot/dts/tegra124.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra20-colibri-512.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra20-harmony.dts1
-rw-r--r--arch/arm/boot/dts/tegra20-iris-512.dts1
-rw-r--r--arch/arm/boot/dts/tegra20-medcom-wide.dts1
-rw-r--r--arch/arm/boot/dts/tegra20-paz00.dts1
-rw-r--r--arch/arm/boot/dts/tegra20-plutux.dts1
-rw-r--r--arch/arm/boot/dts/tegra20-seaboard.dts1
-rw-r--r--arch/arm/boot/dts/tegra20-tamonten.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra20-tec.dts1
-rw-r--r--arch/arm/boot/dts/tegra20-trimslice.dts1
-rw-r--r--arch/arm/boot/dts/tegra20-ventana.dts1
-rw-r--r--arch/arm/boot/dts/tegra20.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra30-apalis-eval.dts1
-rw-r--r--arch/arm/boot/dts/tegra30-apalis.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra30-beaver.dts1
-rw-r--r--arch/arm/boot/dts/tegra30-cardhu-a02.dts1
-rw-r--r--arch/arm/boot/dts/tegra30-cardhu-a04.dts1
-rw-r--r--arch/arm/boot/dts/tegra30-cardhu.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra30-colibri-eval-v3.dts1
-rw-r--r--arch/arm/boot/dts/tegra30-colibri.dtsi1
-rw-r--r--arch/arm/boot/dts/tegra30.dtsi1
-rw-r--r--arch/arm/boot/dts/versatile-ab.dts1
-rw-r--r--arch/arm/boot/dts/versatile-pb.dts1
-rw-r--r--arch/arm/boot/dts/vexpress-v2m.dtsi1
-rw-r--r--arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts1
-rw-r--r--arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts1
-rw-r--r--arch/arm/boot/dts/vexpress-v2p-ca5s.dts1
-rw-r--r--arch/arm/boot/dts/vexpress-v2p-ca9.dts1
-rw-r--r--arch/arm/boot/dts/xenvm-4.2.dts1
-rw-r--r--arch/arm/boot/dts/zx296702-ad1.dts1
-rw-r--r--arch/arm/boot/dts/zx296702.dtsi1
-rw-r--r--arch/arm/common/Kconfig1
-rw-r--r--arch/arm/common/Makefile1
-rw-r--r--arch/arm/configs/gemini_defconfig3
-rw-r--r--arch/arm/configs/pxa_defconfig2
-rw-r--r--arch/arm/configs/viper_defconfig2
-rw-r--r--arch/arm/configs/zeus_defconfig2
-rw-r--r--arch/arm/crypto/Kconfig1
-rw-r--r--arch/arm/crypto/Makefile1
-rw-r--r--arch/arm/crypto/sha1.h1
-rw-r--r--arch/arm/crypto/sha256_glue.h1
-rw-r--r--arch/arm/crypto/sha512.h1
-rw-r--r--arch/arm/include/asm/arch_timer.h1
-rw-r--r--arch/arm/include/asm/barrier.h1
-rw-r--r--arch/arm/include/asm/bitops.h1
-rw-r--r--arch/arm/include/asm/bitrev.h1
-rw-r--r--arch/arm/include/asm/bug.h1
-rw-r--r--arch/arm/include/asm/cache.h1
-rw-r--r--arch/arm/include/asm/cachetype.h1
-rw-r--r--arch/arm/include/asm/checksum.h1
-rw-r--r--arch/arm/include/asm/cmpxchg.h1
-rw-r--r--arch/arm/include/asm/compiler.h1
-rw-r--r--arch/arm/include/asm/cp15.h1
-rw-r--r--arch/arm/include/asm/cpuidle.h1
-rw-r--r--arch/arm/include/asm/cputype.h1
-rw-r--r--arch/arm/include/asm/cti.h1
-rw-r--r--arch/arm/include/asm/delay.h1
-rw-r--r--arch/arm/include/asm/div64.h1
-rw-r--r--arch/arm/include/asm/dma-contiguous.h1
-rw-r--r--arch/arm/include/asm/dma-iommu.h1
-rw-r--r--arch/arm/include/asm/dma-mapping.h1
-rw-r--r--arch/arm/include/asm/dma.h1
-rw-r--r--arch/arm/include/asm/ecard.h1
-rw-r--r--arch/arm/include/asm/elf.h1
-rw-r--r--arch/arm/include/asm/entry-macro-multi.S1
-rw-r--r--arch/arm/include/asm/exception.h1
-rw-r--r--arch/arm/include/asm/fiq.h1
-rw-r--r--arch/arm/include/asm/fixmap.h1
-rw-r--r--arch/arm/include/asm/flat.h1
-rw-r--r--arch/arm/include/asm/ftrace.h1
-rw-r--r--arch/arm/include/asm/futex.h1
-rw-r--r--arch/arm/include/asm/gpio.h1
-rw-r--r--arch/arm/include/asm/hardirq.h1
-rw-r--r--arch/arm/include/asm/hardware/it8152.h1
-rw-r--r--arch/arm/include/asm/hardware/sa1111.h1
-rw-r--r--arch/arm/include/asm/highmem.h1
-rw-r--r--arch/arm/include/asm/hw_breakpoint.h1
-rw-r--r--arch/arm/include/asm/hw_irq.h1
-rw-r--r--arch/arm/include/asm/hwcap.h1
-rw-r--r--arch/arm/include/asm/hypervisor.h1
-rw-r--r--arch/arm/include/asm/ide.h1
-rw-r--r--arch/arm/include/asm/idmap.h1
-rw-r--r--arch/arm/include/asm/insn.h1
-rw-r--r--arch/arm/include/asm/irq.h1
-rw-r--r--arch/arm/include/asm/irq_work.h1
-rw-r--r--arch/arm/include/asm/irqflags.h1
-rw-r--r--arch/arm/include/asm/jump_label.h1
-rw-r--r--arch/arm/include/asm/kexec.h1
-rw-r--r--arch/arm/include/asm/kgdb.h1
-rw-r--r--arch/arm/include/asm/kmap_types.h1
-rw-r--r--arch/arm/include/asm/limits.h1
-rw-r--r--arch/arm/include/asm/linkage.h1
-rw-r--r--arch/arm/include/asm/mc146818rtc.h1
-rw-r--r--arch/arm/include/asm/mcs_spinlock.h1
-rw-r--r--arch/arm/include/asm/memblock.h1
-rw-r--r--arch/arm/include/asm/mmu.h1
-rw-r--r--arch/arm/include/asm/module.h1
-rw-r--r--arch/arm/include/asm/mpu.h1
-rw-r--r--arch/arm/include/asm/nwflash.h1
-rw-r--r--arch/arm/include/asm/paravirt.h1
-rw-r--r--arch/arm/include/asm/patch.h1
-rw-r--r--arch/arm/include/asm/pci.h1
-rw-r--r--arch/arm/include/asm/sections.h1
-rw-r--r--arch/arm/include/asm/shmparam.h1
-rw-r--r--arch/arm/include/asm/signal.h1
-rw-r--r--arch/arm/include/asm/smp_plat.h1
-rw-r--r--arch/arm/include/asm/smp_scu.h1
-rw-r--r--arch/arm/include/asm/smp_twd.h1
-rw-r--r--arch/arm/include/asm/sparsemem.h1
-rw-r--r--arch/arm/include/asm/spinlock.h1
-rw-r--r--arch/arm/include/asm/spinlock_types.h1
-rw-r--r--arch/arm/include/asm/stackprotector.h1
-rw-r--r--arch/arm/include/asm/stacktrace.h1
-rw-r--r--arch/arm/include/asm/string.h1
-rw-r--r--arch/arm/include/asm/suspend.h1
-rw-r--r--arch/arm/include/asm/swab.h1
-rw-r--r--arch/arm/include/asm/switch_to.h1
-rw-r--r--arch/arm/include/asm/sync_bitops.h1
-rw-r--r--arch/arm/include/asm/syscall.h1
-rw-r--r--arch/arm/include/asm/system_info.h1
-rw-r--r--arch/arm/include/asm/system_misc.h1
-rw-r--r--arch/arm/include/asm/therm.h1
-rw-r--r--arch/arm/include/asm/thread_info.h15
-rw-r--r--arch/arm/include/asm/tls.h1
-rw-r--r--arch/arm/include/asm/topology.h1
-rw-r--r--arch/arm/include/asm/traps.h1
-rw-r--r--arch/arm/include/asm/uaccess.h2
-rw-r--r--arch/arm/include/asm/ucontext.h1
-rw-r--r--arch/arm/include/asm/user.h1
-rw-r--r--arch/arm/include/asm/v7m.h1
-rw-r--r--arch/arm/include/asm/vdso.h1
-rw-r--r--arch/arm/include/asm/vfp.h1
-rw-r--r--arch/arm/include/asm/vfpmacros.h1
-rw-r--r--arch/arm/include/asm/vga.h1
-rw-r--r--arch/arm/include/asm/word-at-a-time.h1
-rw-r--r--arch/arm/include/asm/xen/events.h1
-rw-r--r--arch/arm/include/debug/palmchip.S1
-rw-r--r--arch/arm/include/debug/uncompress.h1
-rw-r--r--arch/arm/include/uapi/asm/Kbuild1
-rw-r--r--arch/arm/include/uapi/asm/auxvec.h1
-rw-r--r--arch/arm/include/uapi/asm/byteorder.h1
-rw-r--r--arch/arm/include/uapi/asm/fcntl.h1
-rw-r--r--arch/arm/include/uapi/asm/hwcap.h1
-rw-r--r--arch/arm/include/uapi/asm/ioctls.h1
-rw-r--r--arch/arm/include/uapi/asm/kvm.h1
-rw-r--r--arch/arm/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/arm/include/uapi/asm/perf_regs.h1
-rw-r--r--arch/arm/include/uapi/asm/posix_types.h1
-rw-r--r--arch/arm/include/uapi/asm/ptrace.h1
-rw-r--r--arch/arm/include/uapi/asm/setup.h1
-rw-r--r--arch/arm/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/arm/include/uapi/asm/signal.h1
-rw-r--r--arch/arm/include/uapi/asm/stat.h1
-rw-r--r--arch/arm/include/uapi/asm/statfs.h1
-rw-r--r--arch/arm/include/uapi/asm/swab.h1
-rw-r--r--arch/arm/include/uapi/asm/types.h1
-rw-r--r--arch/arm/include/uapi/asm/unistd.h1
-rw-r--r--arch/arm/kernel/Makefile1
-rw-r--r--arch/arm/kernel/atags.h1
-rw-r--r--arch/arm/kernel/atags_proc.c1
-rw-r--r--arch/arm/kernel/bios32.c1
-rw-r--r--arch/arm/kernel/debug.S8
-rw-r--r--arch/arm/kernel/elf.c1
-rw-r--r--arch/arm/kernel/entry-common.S20
-rw-r--r--arch/arm/kernel/entry-header.S1
-rw-r--r--arch/arm/kernel/fiq.c1
-rw-r--r--arch/arm/kernel/insn.c1
-rw-r--r--arch/arm/kernel/io.c1
-rw-r--r--arch/arm/kernel/jump_label.c1
-rw-r--r--arch/arm/kernel/kgdb.c1
-rw-r--r--arch/arm/kernel/machine_kexec.c1
-rw-r--r--arch/arm/kernel/module.lds1
-rw-r--r--arch/arm/kernel/patch.c1
-rw-r--r--arch/arm/kernel/perf_callchain.c1
-rw-r--r--arch/arm/kernel/perf_event_v6.c1
-rw-r--r--arch/arm/kernel/perf_event_v7.c1
-rw-r--r--arch/arm/kernel/perf_event_xscale.c1
-rw-r--r--arch/arm/kernel/perf_regs.c1
-rw-r--r--arch/arm/kernel/reboot.h1
-rw-r--r--arch/arm/kernel/relocate_kernel.S1
-rw-r--r--arch/arm/kernel/signal.c10
-rw-r--r--arch/arm/kernel/sleep.S1
-rw-r--r--arch/arm/kernel/suspend.c1
-rw-r--r--arch/arm/kernel/vmlinux-xip.lds.S1
-rw-r--r--arch/arm/kernel/vmlinux.lds.S1
-rw-r--r--arch/arm/kvm/Kconfig1
-rw-r--r--arch/arm/kvm/Makefile1
-rw-r--r--arch/arm/kvm/hyp/Makefile1
-rw-r--r--arch/arm/kvm/trace.h1
-rw-r--r--arch/arm/lib/Makefile1
-rw-r--r--arch/arm/lib/bitops.h1
-rw-r--r--arch/arm/lib/bswapsdi2.S1
-rw-r--r--arch/arm/mach-actions/Kconfig1
-rw-r--r--arch/arm/mach-alpine/Kconfig1
-rw-r--r--arch/arm/mach-at91/Makefile1
-rw-r--r--arch/arm/mach-at91/pm.c4
-rw-r--r--arch/arm/mach-at91/pm_data-offsets.c1
-rw-r--r--arch/arm/mach-axxia/Kconfig1
-rw-r--r--arch/arm/mach-axxia/Makefile1
-rw-r--r--arch/arm/mach-bcm/Kconfig1
-rw-r--r--arch/arm/mach-bcm/bcm63xx_smp.h1
-rw-r--r--arch/arm/mach-clps711x/Kconfig1
-rw-r--r--arch/arm/mach-clps711x/Makefile1
-rw-r--r--arch/arm/mach-cns3xxx/Kconfig1
-rw-r--r--arch/arm/mach-cns3xxx/Makefile1
-rw-r--r--arch/arm/mach-davinci/Kconfig1
-rw-r--r--arch/arm/mach-davinci/Makefile1
-rw-r--r--arch/arm/mach-davinci/Makefile.boot1
-rw-r--r--arch/arm/mach-davinci/asp.h1
-rw-r--r--arch/arm/mach-davinci/ddr2.h1
-rw-r--r--arch/arm/mach-davinci/usb-da8xx.c1
-rw-r--r--arch/arm/mach-davinci/usb.c1
-rw-r--r--arch/arm/mach-digicolor/Kconfig1
-rw-r--r--arch/arm/mach-dove/Kconfig1
-rw-r--r--arch/arm/mach-dove/Makefile1
-rw-r--r--arch/arm/mach-dove/mpp.h1
-rw-r--r--arch/arm/mach-ebsa110/io.c1
-rw-r--r--arch/arm/mach-efm32/dtmachine.c1
-rw-r--r--arch/arm/mach-ep93xx/Makefile1
-rw-r--r--arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h1
-rw-r--r--arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h1
-rw-r--r--arch/arm/mach-ep93xx/include/mach/hardware.h1
-rw-r--r--arch/arm/mach-ep93xx/include/mach/irqs.h1
-rw-r--r--arch/arm/mach-ep93xx/include/mach/platform.h1
-rw-r--r--arch/arm/mach-ep93xx/timer-ep93xx.c1
-rw-r--r--arch/arm/mach-ep93xx/ts72xx.h1
-rw-r--r--arch/arm/mach-footbridge/Makefile1
-rw-r--r--arch/arm/mach-footbridge/cats-hw.c1
-rw-r--r--arch/arm/mach-footbridge/cats-pci.c1
-rw-r--r--arch/arm/mach-footbridge/common.h1
-rw-r--r--arch/arm/mach-footbridge/dc21285-timer.c1
-rw-r--r--arch/arm/mach-footbridge/dma.c1
-rw-r--r--arch/arm/mach-footbridge/ebsa285-pci.c1
-rw-r--r--arch/arm/mach-footbridge/ebsa285.c1
-rw-r--r--arch/arm/mach-footbridge/include/mach/irqs.h1
-rw-r--r--arch/arm/mach-footbridge/include/mach/isa-dma.h1
-rw-r--r--arch/arm/mach-footbridge/isa-rtc.c1
-rw-r--r--arch/arm/mach-footbridge/isa-timer.c1
-rw-r--r--arch/arm/mach-footbridge/netwinder-hw.c1
-rw-r--r--arch/arm/mach-footbridge/netwinder-pci.c1
-rw-r--r--arch/arm/mach-footbridge/personal-pci.c1
-rw-r--r--arch/arm/mach-footbridge/personal.c1
-rw-r--r--arch/arm/mach-gemini/board-dt.c1
-rw-r--r--arch/arm/mach-highbank/core.h1
-rw-r--r--arch/arm/mach-hisi/core.h1
-rw-r--r--arch/arm/mach-imx/Makefile1
-rw-r--r--arch/arm/mach-imx/cpu.c1
-rw-r--r--arch/arm/mach-imx/devices/Makefile1
-rw-r--r--arch/arm/mach-imx/ehci.h1
-rw-r--r--arch/arm/mach-imx/mx31.h1
-rw-r--r--arch/arm/mach-imx/mx35.h1
-rw-r--r--arch/arm/mach-imx/pcm037.h1
-rw-r--r--arch/arm/mach-imx/ulpi.h1
-rw-r--r--arch/arm/mach-integrator/Makefile1
-rw-r--r--arch/arm/mach-integrator/cm.h1
-rw-r--r--arch/arm/mach-integrator/common.h1
-rw-r--r--arch/arm/mach-integrator/impd1.h1
-rw-r--r--arch/arm/mach-integrator/lm.h1
-rw-r--r--arch/arm/mach-integrator/pci_v3.h1
-rw-r--r--arch/arm/mach-iop13xx/Kconfig1
-rw-r--r--arch/arm/mach-iop13xx/Makefile1
-rw-r--r--arch/arm/mach-iop13xx/include/mach/hardware.h1
-rw-r--r--arch/arm/mach-iop13xx/include/mach/iop13xx.h1
-rw-r--r--arch/arm/mach-iop13xx/include/mach/iq81340.h1
-rw-r--r--arch/arm/mach-iop13xx/include/mach/irqs.h1
-rw-r--r--arch/arm/mach-iop13xx/include/mach/memory.h1
-rw-r--r--arch/arm/mach-iop13xx/include/mach/time.h1
-rw-r--r--arch/arm/mach-iop13xx/include/mach/uncompress.h1
-rw-r--r--arch/arm/mach-iop13xx/msi.h1
-rw-r--r--arch/arm/mach-iop13xx/pci.h1
-rw-r--r--arch/arm/mach-iop32x/Kconfig1
-rw-r--r--arch/arm/mach-iop32x/Makefile1
-rw-r--r--arch/arm/mach-iop32x/gpio-iop32x.h1
-rw-r--r--arch/arm/mach-iop32x/include/mach/adma.h1
-rw-r--r--arch/arm/mach-iop32x/include/mach/glantank.h1
-rw-r--r--arch/arm/mach-iop32x/include/mach/hardware.h1
-rw-r--r--arch/arm/mach-iop32x/include/mach/iq31244.h1
-rw-r--r--arch/arm/mach-iop32x/include/mach/iq80321.h1
-rw-r--r--arch/arm/mach-iop32x/include/mach/n2100.h1
-rw-r--r--arch/arm/mach-iop32x/include/mach/time.h1
-rw-r--r--arch/arm/mach-iop32x/include/mach/uncompress.h1
-rw-r--r--arch/arm/mach-iop33x/include/mach/adma.h1
-rw-r--r--arch/arm/mach-iop33x/include/mach/hardware.h1
-rw-r--r--arch/arm/mach-iop33x/include/mach/iq80331.h1
-rw-r--r--arch/arm/mach-iop33x/include/mach/iq80332.h1
-rw-r--r--arch/arm/mach-iop33x/include/mach/time.h1
-rw-r--r--arch/arm/mach-iop33x/include/mach/uncompress.h1
-rw-r--r--arch/arm/mach-ixp4xx/Makefile1
-rw-r--r--arch/arm/mach-ixp4xx/avila-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/coyote-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/dsmg600-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/fsg-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/gateway7001-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/goramo_mlr.c1
-rw-r--r--arch/arm/mach-ixp4xx/include/mach/npe.h1
-rw-r--r--arch/arm/mach-ixp4xx/include/mach/platform.h1
-rw-r--r--arch/arm/mach-ixp4xx/ixdp425-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/nas100d-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/nslu2-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/vulcan-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/wg302v2-setup.c1
-rw-r--r--arch/arm/mach-keystone/Makefile1
-rw-r--r--arch/arm/mach-ks8695/Makefile1
-rw-r--r--arch/arm/mach-mmp/Makefile1
-rw-r--r--arch/arm/mach-mmp/clock-mmp2.c1
-rw-r--r--arch/arm/mach-mmp/clock-pxa168.c1
-rw-r--r--arch/arm/mach-mmp/clock-pxa910.c1
-rw-r--r--arch/arm/mach-mmp/common.h1
-rw-r--r--arch/arm/mach-mmp/cputype.h1
-rw-r--r--arch/arm/mach-mmp/devices.h1
-rw-r--r--arch/arm/mach-mmp/irqs.h1
-rw-r--r--arch/arm/mach-mmp/mfp-mmp2.h1
-rw-r--r--arch/arm/mach-mmp/mfp-pxa168.h1
-rw-r--r--arch/arm/mach-mmp/mfp-pxa910.h1
-rw-r--r--arch/arm/mach-mmp/mfp.h1
-rw-r--r--arch/arm/mach-mmp/mmp2.h1
-rw-r--r--arch/arm/mach-mmp/pxa168.h1
-rw-r--r--arch/arm/mach-mmp/pxa910.h1
-rw-r--r--arch/arm/mach-mv78xx0/Makefile1
-rw-r--r--arch/arm/mach-mvebu/Makefile1
-rw-r--r--arch/arm/mach-omap1/Makefile1
-rw-r--r--arch/arm/mach-omap1/camera.h1
-rw-r--r--arch/arm/mach-omap1/include/mach/memory.h1
-rw-r--r--arch/arm/mach-omap1/include/mach/usb.h1
-rw-r--r--arch/arm/mach-omap1/mmc.h1
-rw-r--r--arch/arm/mach-omap1/reset.c1
-rw-r--r--arch/arm/mach-omap1/sram.h1
-rw-r--r--arch/arm/mach-omap2/Makefile1
-rw-r--r--arch/arm/mach-omap2/clock2xxx.h1
-rw-r--r--arch/arm/mach-omap2/clock3xxx.h1
-rw-r--r--arch/arm/mach-omap2/clockdomains2420_data.c1
-rw-r--r--arch/arm/mach-omap2/clockdomains2430_data.c1
-rw-r--r--arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c1
-rw-r--r--arch/arm/mach-omap2/clockdomains3xxx_data.c1
-rw-r--r--arch/arm/mach-omap2/common-board-devices.h1
-rw-r--r--arch/arm/mach-omap2/hsmmc.c4
-rw-r--r--arch/arm/mach-omap2/mmc.h1
-rw-r--r--arch/arm/mach-omap2/omap-pm-noop.c1
-rw-r--r--arch/arm/mach-omap2/omap-pm.h1
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_7xx_data.c1
-rw-r--r--arch/arm/mach-omap2/opp2420_data.c1
-rw-r--r--arch/arm/mach-omap2/opp2430_data.c1
-rw-r--r--arch/arm/mach-omap2/opp2xxx.h1
-rw-r--r--arch/arm/mach-omap2/usb.h1
-rw-r--r--arch/arm/mach-omap2/vp.c1
-rw-r--r--arch/arm/mach-orion5x/Makefile1
-rw-r--r--arch/arm/mach-orion5x/common.h1
-rw-r--r--arch/arm/mach-orion5x/mpp.h1
-rw-r--r--arch/arm/mach-orion5x/ts78xx-fpga.h1
-rw-r--r--arch/arm/mach-orion5x/tsx09-common.h1
-rw-r--r--arch/arm/mach-prima2/Makefile1
-rw-r--r--arch/arm/mach-pxa/Makefile1
-rw-r--r--arch/arm/mach-pxa/cm-x2xx-pci.h1
-rw-r--r--arch/arm/mach-pxa/colibri.h1
-rw-r--r--arch/arm/mach-pxa/csb701.c1
-rw-r--r--arch/arm/mach-pxa/devices.c1
-rw-r--r--arch/arm/mach-pxa/devices.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/addr-map.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/audio.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/bitfield.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/io.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/regs-ac97.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/regs-lcd.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/regs-ost.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/regs-uart.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/reset.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/trizeps4.h1
-rw-r--r--arch/arm/mach-pxa/littleton.h1
-rw-r--r--arch/arm/mach-pxa/mfp-pxa25x.h1
-rw-r--r--arch/arm/mach-pxa/mfp-pxa27x.h1
-rw-r--r--arch/arm/mach-pxa/mfp-pxa2xx.h1
-rw-r--r--arch/arm/mach-pxa/mfp-pxa3xx.h1
-rw-r--r--arch/arm/mach-pxa/mioa701.h1
-rw-r--r--arch/arm/mach-pxa/mxm8x10.h1
-rw-r--r--arch/arm/mach-pxa/pxa25x.h1
-rw-r--r--arch/arm/mach-pxa/pxa27x-udc.h1
-rw-r--r--arch/arm/mach-pxa/pxa27x.h1
-rw-r--r--arch/arm/mach-pxa/pxa300.h1
-rw-r--r--arch/arm/mach-pxa/pxa320.h1
-rw-r--r--arch/arm/mach-pxa/pxa3xx.h1
-rw-r--r--arch/arm/mach-pxa/pxa930.h1
-rw-r--r--arch/arm/mach-pxa/regs-rtc.h1
-rw-r--r--arch/arm/mach-pxa/regs-u2d.h1
-rw-r--r--arch/arm/mach-pxa/smemc.c1
-rw-r--r--arch/arm/mach-pxa/zylonite.h1
-rw-r--r--arch/arm/mach-rpc/fiq.S1
-rw-r--r--arch/arm/mach-rpc/include/mach/entry-macro.S1
-rw-r--r--arch/arm/mach-rpc/irq.c1
-rw-r--r--arch/arm/mach-s3c24xx/include/mach/io.h1
-rw-r--r--arch/arm/mach-s3c64xx/include/mach/dma.h1
-rw-r--r--arch/arm/mach-s3c64xx/include/mach/irqs.h1
-rw-r--r--arch/arm/mach-s3c64xx/include/mach/regs-gpio.h1
-rw-r--r--arch/arm/mach-s3c64xx/regs-gpio-memport.h1
-rw-r--r--arch/arm/mach-sa1100/Makefile1
-rw-r--r--arch/arm/mach-sa1100/clock.c1
-rw-r--r--arch/arm/mach-sa1100/generic.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/SA-1100.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/assabet.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/collie.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/hardware.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/irqs.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/memory.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/neponset.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/reset.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/shannon.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/simpad.h1
-rw-r--r--arch/arm/mach-sa1100/include/mach/uncompress.h1
-rw-r--r--arch/arm/mach-sa1100/lart.c1
-rw-r--r--arch/arm/mach-sa1100/neponset.c1
-rw-r--r--arch/arm/mach-sa1100/pleb.c1
-rw-r--r--arch/arm/mach-sa1100/shannon.c1
-rw-r--r--arch/arm/mach-sa1100/simpad.c1
-rw-r--r--arch/arm/mach-shmobile/Makefile1
-rw-r--r--arch/arm/mach-shmobile/common.h1
-rw-r--r--arch/arm/mach-shmobile/emev2.h1
-rw-r--r--arch/arm/mach-shmobile/r8a7779.h1
-rw-r--r--arch/arm/mach-shmobile/r8a7790.h1
-rw-r--r--arch/arm/mach-shmobile/r8a7791.h1
-rw-r--r--arch/arm/mach-shmobile/rcar-gen2.h1
-rw-r--r--arch/arm/mach-shmobile/sh73a0.h1
-rw-r--r--arch/arm/mach-socfpga/Makefile1
-rw-r--r--arch/arm/mach-spear/Makefile1
-rw-r--r--arch/arm/mach-tango/Kconfig1
-rw-r--r--arch/arm/mach-tango/Makefile1
-rw-r--r--arch/arm/mach-tango/platsmp.c1
-rw-r--r--arch/arm/mach-tango/pm.c1
-rw-r--r--arch/arm/mach-tango/setup.c1
-rw-r--r--arch/arm/mach-tango/smc.S1
-rw-r--r--arch/arm/mach-tango/smc.h1
-rw-r--r--arch/arm/mach-tegra/Kconfig1
-rw-r--r--arch/arm/mach-tegra/Makefile1
-rw-r--r--arch/arm/mach-u300/Kconfig1
-rw-r--r--arch/arm/mach-uniphier/Kconfig1
-rw-r--r--arch/arm/mach-ux500/Kconfig1
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c4
-rw-r--r--arch/arm/mach-ux500/pm.c4
-rw-r--r--arch/arm/mach-versatile/Kconfig1
-rw-r--r--arch/arm/mach-vexpress/Kconfig1
-rw-r--r--arch/arm/mach-vexpress/Makefile1
-rw-r--r--arch/arm/mach-vexpress/v2m.c1
-rw-r--r--arch/arm/mach-vt8500/Kconfig1
-rw-r--r--arch/arm/mach-w90x900/Kconfig1
-rw-r--r--arch/arm/mach-w90x900/Makefile1
-rw-r--r--arch/arm/mach-zx/Kconfig1
-rw-r--r--arch/arm/mach-zynq/Kconfig1
-rw-r--r--arch/arm/mm/Kconfig1
-rw-r--r--arch/arm/mm/Makefile1
-rw-r--r--arch/arm/mm/abort-ev4.S1
-rw-r--r--arch/arm/mm/abort-ev4t.S1
-rw-r--r--arch/arm/mm/abort-ev5t.S1
-rw-r--r--arch/arm/mm/abort-ev5tj.S1
-rw-r--r--arch/arm/mm/abort-ev6.S1
-rw-r--r--arch/arm/mm/abort-ev7.S1
-rw-r--r--arch/arm/mm/abort-lv4t.S1
-rw-r--r--arch/arm/mm/abort-macro.S1
-rw-r--r--arch/arm/mm/abort-nommu.S1
-rw-r--r--arch/arm/mm/dma.h1
-rw-r--r--arch/arm/mm/extable.c1
-rw-r--r--arch/arm/mm/fault.h1
-rw-r--r--arch/arm/mm/fsr-2level.c1
-rw-r--r--arch/arm/mm/fsr-3level.c1
-rw-r--r--arch/arm/mm/idmap.c1
-rw-r--r--arch/arm/mm/iomap.c1
-rw-r--r--arch/arm/mm/l2c-l2x0-resume.S1
-rw-r--r--arch/arm/mm/mm.h1
-rw-r--r--arch/arm/mm/mmap.c1
-rw-r--r--arch/arm/mm/nommu.c5
-rw-r--r--arch/arm/mm/pabort-legacy.S1
-rw-r--r--arch/arm/mm/pabort-v6.S1
-rw-r--r--arch/arm/mm/pabort-v7.S1
-rw-r--r--arch/arm/mm/physaddr.c1
-rw-r--r--arch/arm/mm/proc-macros.S1
-rw-r--r--arch/arm/nwfpe/ARM-gcc.h1
-rw-r--r--arch/arm/nwfpe/Makefile1
-rw-r--r--arch/arm/oprofile/Makefile1
-rw-r--r--arch/arm/plat-iop/Makefile1
-rw-r--r--arch/arm/plat-omap/Kconfig1
-rw-r--r--arch/arm/plat-omap/include/plat/sram.h1
-rw-r--r--arch/arm/plat-versatile/include/plat/sched_clock.h1
-rw-r--r--arch/arm/probes/Makefile1
-rw-r--r--arch/arm/probes/kprobes/Makefile1
-rw-r--r--arch/arm/tools/Makefile1
-rw-r--r--arch/arm/tools/gen-mach-types1
-rw-r--r--arch/arm/tools/syscallhdr.sh1
-rw-r--r--arch/arm/tools/syscallnr.sh1
-rw-r--r--arch/arm/tools/syscalltbl.sh1
-rw-r--r--arch/arm/vdso/Makefile1
-rw-r--r--arch/arm/vdso/datapage.S1
-rw-r--r--arch/arm/xen/p2m.c2
-rw-r--r--arch/arm64/Makefile5
-rw-r--r--arch/arm64/boot/dts/Makefile1
-rw-r--r--arch/arm64/boot/dts/allwinner/Makefile1
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts9
-rw-r--r--arch/arm64/boot/dts/amd/Makefile1
-rw-r--r--arch/arm64/boot/dts/amd/amd-overdrive-rev-b0.dts1
-rw-r--r--arch/arm64/boot/dts/amd/amd-overdrive-rev-b1.dts1
-rw-r--r--arch/arm64/boot/dts/amd/amd-overdrive.dts1
-rw-r--r--arch/arm64/boot/dts/amd/amd-seattle-clks.dtsi1
-rw-r--r--arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi1
-rw-r--r--arch/arm64/boot/dts/amd/amd-seattle-xgbe-b.dtsi1
-rw-r--r--arch/arm64/boot/dts/amd/husky.dts1
-rw-r--r--arch/arm64/boot/dts/amlogic/Makefile1
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi10
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts19
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts12
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts9
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi13
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi10
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi39
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts7
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts13
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts10
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi10
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl.dtsi39
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts7
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts1
-rw-r--r--arch/arm64/boot/dts/apm/Makefile1
-rw-r--r--arch/arm64/boot/dts/arm/Makefile1
-rw-r--r--arch/arm64/boot/dts/arm/foundation-v8-gicv3.dts1
-rw-r--r--arch/arm64/boot/dts/arm/foundation-v8.dts1
-rw-r--r--arch/arm64/boot/dts/arm/foundation-v8.dtsi1
-rw-r--r--arch/arm64/boot/dts/arm/juno-base.dtsi1
-rw-r--r--arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi1
-rw-r--r--arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts1
-rw-r--r--arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi1
-rw-r--r--arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts1
-rw-r--r--arch/arm64/boot/dts/broadcom/Makefile1
-rw-r--r--arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts1
-rw-r--r--arch/arm64/boot/dts/broadcom/stingray/Makefile1
-rw-r--r--arch/arm64/boot/dts/cavium/Makefile1
-rw-r--r--arch/arm64/boot/dts/exynos/Makefile1
-rw-r--r--arch/arm64/boot/dts/freescale/Makefile1
-rw-r--r--arch/arm64/boot/dts/hisilicon/Makefile1
-rw-r--r--arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts1
-rw-r--r--arch/arm64/boot/dts/hisilicon/hi3660.dtsi1
-rw-r--r--arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts1
-rw-r--r--arch/arm64/boot/dts/hisilicon/hi6220.dtsi1
-rw-r--r--arch/arm64/boot/dts/hisilicon/hikey-pinctrl.dtsi1
-rw-r--r--arch/arm64/boot/dts/hisilicon/hikey960-pinctrl.dtsi1
-rw-r--r--arch/arm64/boot/dts/lg/Makefile1
-rw-r--r--arch/arm64/boot/dts/lg/lg1312-ref.dts1
-rw-r--r--arch/arm64/boot/dts/lg/lg1312.dtsi1
-rw-r--r--arch/arm64/boot/dts/lg/lg1313-ref.dts1
-rw-r--r--arch/arm64/boot/dts/lg/lg1313.dtsi1
-rw-r--r--arch/arm64/boot/dts/marvell/Makefile1
-rw-r--r--arch/arm64/boot/dts/marvell/armada-ap806.dtsi4
-rw-r--r--arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi6
-rw-r--r--arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi6
-rw-r--r--arch/arm64/boot/dts/mediatek/Makefile1
-rw-r--r--arch/arm64/boot/dts/nvidia/Makefile1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra132-norrin.dts1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra132.dtsi1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra186.dtsi1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra210-p2371-0000.dts1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra210-p2571.dts1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra210-p2595.dtsi1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra210-smaug.dts1
-rw-r--r--arch/arm64/boot/dts/nvidia/tegra210.dtsi1
-rw-r--r--arch/arm64/boot/dts/qcom/Makefile1
-rw-r--r--arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi1
-rw-r--r--arch/arm64/boot/dts/qcom/apq8016-sbc-soc-pins.dtsi1
-rw-r--r--arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi1
-rw-r--r--arch/arm64/boot/dts/qcom/pm8004.dtsi1
-rw-r--r--arch/arm64/boot/dts/qcom/pm8916.dtsi1
-rw-r--r--arch/arm64/boot/dts/qcom/pm8994.dtsi1
-rw-r--r--arch/arm64/boot/dts/qcom/pmi8994.dtsi1
-rw-r--r--arch/arm64/boot/dts/renesas/Makefile1
-rw-r--r--arch/arm64/boot/dts/renesas/salvator-common.dtsi10
-rw-r--r--arch/arm64/boot/dts/rockchip/Makefile1
-rw-r--r--arch/arm64/boot/dts/rockchip/rk3328.dtsi2
-rw-r--r--arch/arm64/boot/dts/rockchip/rk3368.dtsi74
-rw-r--r--arch/arm64/boot/dts/rockchip/rk3399-firefly.dts4
-rw-r--r--arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi4
-rw-r--r--arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi4
-rw-r--r--arch/arm64/boot/dts/rockchip/rk3399.dtsi6
-rw-r--r--arch/arm64/boot/dts/socionext/Makefile1
-rw-r--r--arch/arm64/boot/dts/sprd/Makefile1
-rw-r--r--arch/arm64/crypto/Kconfig1
-rw-r--r--arch/arm64/crypto/aes-ce-setkey.h1
-rw-r--r--arch/arm64/include/asm/alternative.h1
-rw-r--r--arch/arm64/include/asm/asm-uaccess.h1
-rw-r--r--arch/arm64/include/asm/bitrev.h1
-rw-r--r--arch/arm64/include/asm/boot.h1
-rw-r--r--arch/arm64/include/asm/clocksource.h1
-rw-r--r--arch/arm64/include/asm/cpuidle.h1
-rw-r--r--arch/arm64/include/asm/current.h1
-rw-r--r--arch/arm64/include/asm/efi.h1
-rw-r--r--arch/arm64/include/asm/extable.h1
-rw-r--r--arch/arm64/include/asm/hypervisor.h1
-rw-r--r--arch/arm64/include/asm/irq.h1
-rw-r--r--arch/arm64/include/asm/irq_work.h1
-rw-r--r--arch/arm64/include/asm/kasan.h1
-rw-r--r--arch/arm64/include/asm/linkage.h4
-rw-r--r--arch/arm64/include/asm/lse.h1
-rw-r--r--arch/arm64/include/asm/memory.h9
-rw-r--r--arch/arm64/include/asm/mmzone.h1
-rw-r--r--arch/arm64/include/asm/numa.h1
-rw-r--r--arch/arm64/include/asm/paravirt.h1
-rw-r--r--arch/arm64/include/asm/pci.h1
-rw-r--r--arch/arm64/include/asm/pgtable.h2
-rw-r--r--arch/arm64/include/asm/stack_pointer.h1
-rw-r--r--arch/arm64/include/asm/stackprotector.h1
-rw-r--r--arch/arm64/include/asm/suspend.h1
-rw-r--r--arch/arm64/include/asm/sync_bitops.h1
-rw-r--r--arch/arm64/include/asm/topology.h1
-rw-r--r--arch/arm64/include/asm/xen/events.h1
-rw-r--r--arch/arm64/include/asm/xen/xen-ops.h1
-rw-r--r--arch/arm64/include/uapi/asm/Kbuild1
-rw-r--r--arch/arm64/include/uapi/asm/auxvec.h1
-rw-r--r--arch/arm64/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/arm64/include/uapi/asm/byteorder.h1
-rw-r--r--arch/arm64/include/uapi/asm/fcntl.h1
-rw-r--r--arch/arm64/include/uapi/asm/hwcap.h1
-rw-r--r--arch/arm64/include/uapi/asm/kvm.h1
-rw-r--r--arch/arm64/include/uapi/asm/param.h1
-rw-r--r--arch/arm64/include/uapi/asm/perf_regs.h1
-rw-r--r--arch/arm64/include/uapi/asm/posix_types.h1
-rw-r--r--arch/arm64/include/uapi/asm/ptrace.h1
-rw-r--r--arch/arm64/include/uapi/asm/setup.h1
-rw-r--r--arch/arm64/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/arm64/include/uapi/asm/siginfo.h1
-rw-r--r--arch/arm64/include/uapi/asm/signal.h1
-rw-r--r--arch/arm64/include/uapi/asm/stat.h1
-rw-r--r--arch/arm64/include/uapi/asm/statfs.h1
-rw-r--r--arch/arm64/include/uapi/asm/ucontext.h1
-rw-r--r--arch/arm64/include/uapi/asm/unistd.h1
-rw-r--r--arch/arm64/kernel/Makefile1
-rw-r--r--arch/arm64/kernel/acpi_numa.c1
-rw-r--r--arch/arm64/kernel/armv8_deprecated.c2
-rw-r--r--arch/arm64/kernel/cpufeature.c2
-rw-r--r--arch/arm64/kernel/fpsimd.c6
-rw-r--r--arch/arm64/kernel/head.S1
-rw-r--r--arch/arm64/kernel/perf_regs.c1
-rw-r--r--arch/arm64/kernel/probes/Makefile1
-rw-r--r--arch/arm64/kernel/probes/kprobes_trampoline.S1
-rw-r--r--arch/arm64/kernel/signal.c6
-rw-r--r--arch/arm64/kernel/sleep.S1
-rw-r--r--arch/arm64/kernel/stacktrace.c18
-rw-r--r--arch/arm64/kernel/suspend.c1
-rw-r--r--arch/arm64/kernel/trace-events-emulation.h1
-rw-r--r--arch/arm64/kernel/traps.c2
-rw-r--r--arch/arm64/kernel/vdso/Makefile1
-rwxr-xr-xarch/arm64/kernel/vdso/gen_vdso_offsets.sh1
-rw-r--r--arch/arm64/kernel/vmlinux.lds.S1
-rw-r--r--arch/arm64/kvm/Kconfig1
-rw-r--r--arch/arm64/kvm/Makefile1
-rw-r--r--arch/arm64/kvm/hyp/Makefile1
-rw-r--r--arch/arm64/kvm/trace.h1
-rw-r--r--arch/arm64/lib/Makefile1
-rw-r--r--arch/arm64/mm/Makefile1
-rw-r--r--arch/arm64/mm/extable.c1
-rw-r--r--arch/arm64/mm/fault.c4
-rw-r--r--arch/arm64/mm/physaddr.c1
-rw-r--r--arch/arm64/mm/ptdump_debugfs.c1
-rw-r--r--arch/blackfin/Kconfig1
-rw-r--r--arch/blackfin/Kconfig.debug1
-rw-r--r--arch/blackfin/include/asm/clkdev.h1
-rw-r--r--arch/blackfin/include/asm/pci.h1
-rw-r--r--arch/blackfin/include/asm/rwlock.h1
-rw-r--r--arch/blackfin/include/mach-common/ports-a.h1
-rw-r--r--arch/blackfin/include/mach-common/ports-b.h1
-rw-r--r--arch/blackfin/include/mach-common/ports-c.h1
-rw-r--r--arch/blackfin/include/mach-common/ports-d.h1
-rw-r--r--arch/blackfin/include/mach-common/ports-e.h1
-rw-r--r--arch/blackfin/include/mach-common/ports-f.h1
-rw-r--r--arch/blackfin/include/mach-common/ports-g.h1
-rw-r--r--arch/blackfin/include/mach-common/ports-h.h1
-rw-r--r--arch/blackfin/include/mach-common/ports-i.h1
-rw-r--r--arch/blackfin/include/mach-common/ports-j.h1
-rw-r--r--arch/blackfin/include/uapi/asm/bfin_sport.h1
-rw-r--r--arch/blackfin/include/uapi/asm/byteorder.h1
-rw-r--r--arch/blackfin/include/uapi/asm/cachectl.h1
-rw-r--r--arch/blackfin/include/uapi/asm/fcntl.h1
-rw-r--r--arch/blackfin/include/uapi/asm/fixed_code.h1
-rw-r--r--arch/blackfin/include/uapi/asm/ioctls.h1
-rw-r--r--arch/blackfin/include/uapi/asm/poll.h1
-rw-r--r--arch/blackfin/include/uapi/asm/posix_types.h1
-rw-r--r--arch/blackfin/include/uapi/asm/ptrace.h1
-rw-r--r--arch/blackfin/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/blackfin/include/uapi/asm/siginfo.h1
-rw-r--r--arch/blackfin/include/uapi/asm/signal.h1
-rw-r--r--arch/blackfin/include/uapi/asm/stat.h1
-rw-r--r--arch/blackfin/include/uapi/asm/swab.h1
-rw-r--r--arch/blackfin/include/uapi/asm/unistd.h1
-rw-r--r--arch/blackfin/kernel/Makefile1
-rw-r--r--arch/blackfin/kernel/cplb-nompu/Makefile1
-rw-r--r--arch/blackfin/lib/Makefile1
-rw-r--r--arch/blackfin/mach-bf518/Kconfig1
-rw-r--r--arch/blackfin/mach-bf518/boards/Kconfig1
-rw-r--r--arch/blackfin/mach-bf527/Kconfig1
-rw-r--r--arch/blackfin/mach-bf527/boards/Kconfig1
-rw-r--r--arch/blackfin/mach-bf527/boards/Makefile1
-rw-r--r--arch/blackfin/mach-bf533/Kconfig1
-rw-r--r--arch/blackfin/mach-bf533/boards/Kconfig1
-rw-r--r--arch/blackfin/mach-bf533/boards/Makefile1
-rw-r--r--arch/blackfin/mach-bf537/Kconfig1
-rw-r--r--arch/blackfin/mach-bf537/boards/Kconfig1
-rw-r--r--arch/blackfin/mach-bf537/boards/Makefile1
-rw-r--r--arch/blackfin/mach-bf538/Kconfig1
-rw-r--r--arch/blackfin/mach-bf538/boards/Kconfig1
-rw-r--r--arch/blackfin/mach-bf548/Kconfig1
-rw-r--r--arch/blackfin/mach-bf548/boards/Kconfig1
-rw-r--r--arch/blackfin/mach-bf561/Kconfig1
-rw-r--r--arch/blackfin/mach-bf561/boards/Kconfig1
-rw-r--r--arch/blackfin/mach-bf609/Kconfig1
-rw-r--r--arch/blackfin/mach-bf609/boards/Kconfig1
-rw-r--r--arch/blackfin/mach-bf609/clock.c1
-rw-r--r--arch/blackfin/mach-bf609/dpm.S1
-rw-r--r--arch/blackfin/mach-common/Makefile1
-rw-r--r--arch/blackfin/mach-common/clock.h1
-rw-r--r--arch/blackfin/oprofile/Makefile1
-rw-r--r--arch/c6x/Kconfig1
-rw-r--r--arch/c6x/boot/Makefile1
-rw-r--r--arch/c6x/boot/dts/Makefile1
-rw-r--r--arch/c6x/boot/dts/tms320c6455.dtsi1
-rw-r--r--arch/c6x/boot/dts/tms320c6457.dtsi1
-rw-r--r--arch/c6x/boot/dts/tms320c6472.dtsi1
-rw-r--r--arch/c6x/boot/dts/tms320c6474.dtsi1
-rw-r--r--arch/c6x/boot/dts/tms320c6678.dtsi1
-rw-r--r--arch/c6x/include/asm/flat.h1
-rw-r--r--arch/c6x/include/asm/linkage.h1
-rw-r--r--arch/c6x/include/asm/megamod-pic.h1
-rw-r--r--arch/c6x/include/asm/page.h1
-rw-r--r--arch/c6x/include/asm/processor.h3
-rw-r--r--arch/c6x/include/asm/sections.h1
-rw-r--r--arch/c6x/include/asm/timer64.h1
-rw-r--r--arch/c6x/include/asm/tlb.h1
-rw-r--r--arch/c6x/include/uapi/asm/byteorder.h1
-rw-r--r--arch/c6x/include/uapi/asm/ptrace.h1
-rw-r--r--arch/c6x/include/uapi/asm/setup.h1
-rw-r--r--arch/c6x/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/c6x/include/uapi/asm/swab.h1
-rw-r--r--arch/c6x/include/uapi/asm/unistd.h1
-rw-r--r--arch/c6x/kernel/Makefile1
-rw-r--r--arch/c6x/kernel/asm-offsets.c1
-rw-r--r--arch/c6x/kernel/vmlinux.lds.S1
-rw-r--r--arch/c6x/platforms/Kconfig1
-rw-r--r--arch/cris/Kconfig1
-rw-r--r--arch/cris/Kconfig.debug1
-rw-r--r--arch/cris/arch-v10/Kconfig1
-rw-r--r--arch/cris/arch-v10/drivers/Kconfig1
-rw-r--r--arch/cris/arch-v10/drivers/Makefile1
-rw-r--r--arch/cris/arch-v10/drivers/eeprom.c1
-rw-r--r--arch/cris/arch-v10/drivers/gpio.c1
-rw-r--r--arch/cris/arch-v10/drivers/i2c.c1
-rw-r--r--arch/cris/arch-v10/drivers/i2c.h1
-rw-r--r--arch/cris/arch-v10/drivers/sync_serial.c1
-rw-r--r--arch/cris/arch-v10/kernel/Makefile1
-rw-r--r--arch/cris/arch-v10/kernel/crisksyms.c1
-rw-r--r--arch/cris/arch-v10/kernel/debugport.c1
-rw-r--r--arch/cris/arch-v10/kernel/dma.c1
-rw-r--r--arch/cris/arch-v10/kernel/entry.S1
-rw-r--r--arch/cris/arch-v10/kernel/fasttimer.c1
-rw-r--r--arch/cris/arch-v10/kernel/head.S1
-rw-r--r--arch/cris/arch-v10/kernel/io_interface_mux.c1
-rw-r--r--arch/cris/arch-v10/kernel/irq.c1
-rw-r--r--arch/cris/arch-v10/kernel/kgdb.c1
-rw-r--r--arch/cris/arch-v10/kernel/process.c1
-rw-r--r--arch/cris/arch-v10/kernel/ptrace.c1
-rw-r--r--arch/cris/arch-v10/kernel/setup.c1
-rw-r--r--arch/cris/arch-v10/kernel/shadows.c1
-rw-r--r--arch/cris/arch-v10/kernel/signal.c1
-rw-r--r--arch/cris/arch-v10/kernel/time.c1
-rw-r--r--arch/cris/arch-v10/kernel/traps.c1
-rw-r--r--arch/cris/arch-v10/lib/checksum.S1
-rw-r--r--arch/cris/arch-v10/lib/checksumcopy.S1
-rw-r--r--arch/cris/arch-v10/lib/csumcpfruser.S1
-rw-r--r--arch/cris/arch-v10/lib/dram_init.S1
-rw-r--r--arch/cris/arch-v10/lib/hw_settings.S1
-rw-r--r--arch/cris/arch-v10/lib/usercopy.c1
-rw-r--r--arch/cris/arch-v10/mm/fault.c1
-rw-r--r--arch/cris/arch-v10/mm/init.c1
-rw-r--r--arch/cris/arch-v10/mm/tlb.c1
-rw-r--r--arch/cris/arch-v32/Kconfig1
-rw-r--r--arch/cris/arch-v32/drivers/Kconfig1
-rw-r--r--arch/cris/arch-v32/drivers/Makefile1
-rw-r--r--arch/cris/arch-v32/drivers/cryptocop.c1
-rw-r--r--arch/cris/arch-v32/drivers/pci/bios.c1
-rw-r--r--arch/cris/arch-v32/drivers/pci/dma.c1
-rw-r--r--arch/cris/arch-v32/kernel/Makefile1
-rw-r--r--arch/cris/arch-v32/kernel/cache.c1
-rw-r--r--arch/cris/arch-v32/kernel/cacheflush.S1
-rw-r--r--arch/cris/arch-v32/kernel/crisksyms.c1
-rw-r--r--arch/cris/arch-v32/kernel/debugport.c1
-rw-r--r--arch/cris/arch-v32/kernel/entry.S1
-rw-r--r--arch/cris/arch-v32/kernel/fasttimer.c1
-rw-r--r--arch/cris/arch-v32/kernel/head.S1
-rw-r--r--arch/cris/arch-v32/kernel/irq.c1
-rw-r--r--arch/cris/arch-v32/kernel/kgdb.c1
-rw-r--r--arch/cris/arch-v32/kernel/kgdb_asm.S1
-rw-r--r--arch/cris/arch-v32/kernel/process.c1
-rw-r--r--arch/cris/arch-v32/kernel/ptrace.c1
-rw-r--r--arch/cris/arch-v32/kernel/setup.c1
-rw-r--r--arch/cris/arch-v32/kernel/signal.c1
-rw-r--r--arch/cris/arch-v32/kernel/time.c1
-rw-r--r--arch/cris/arch-v32/kernel/traps.c1
-rw-r--r--arch/cris/arch-v32/lib/checksum.S1
-rw-r--r--arch/cris/arch-v32/lib/checksumcopy.S1
-rw-r--r--arch/cris/arch-v32/lib/csumcpfruser.S1
-rw-r--r--arch/cris/arch-v32/lib/delay.c1
-rw-r--r--arch/cris/arch-v32/lib/usercopy.c1
-rw-r--r--arch/cris/arch-v32/mach-a3/Kconfig1
-rw-r--r--arch/cris/arch-v32/mach-a3/arbiter.c1
-rw-r--r--arch/cris/arch-v32/mach-a3/dma.c1
-rw-r--r--arch/cris/arch-v32/mach-a3/dram_init.S1
-rw-r--r--arch/cris/arch-v32/mach-a3/hw_settings.S1
-rw-r--r--arch/cris/arch-v32/mach-a3/pinmux.c1
-rw-r--r--arch/cris/arch-v32/mach-fs/Kconfig1
-rw-r--r--arch/cris/arch-v32/mach-fs/arbiter.c1
-rw-r--r--arch/cris/arch-v32/mach-fs/dma.c1
-rw-r--r--arch/cris/arch-v32/mach-fs/dram_init.S1
-rw-r--r--arch/cris/arch-v32/mach-fs/hw_settings.S1
-rw-r--r--arch/cris/arch-v32/mach-fs/pinmux.c1
-rw-r--r--arch/cris/arch-v32/mm/init.c1
-rw-r--r--arch/cris/arch-v32/mm/intmem.c1
-rw-r--r--arch/cris/arch-v32/mm/l2cache.c1
-rw-r--r--arch/cris/arch-v32/mm/mmu.S1
-rw-r--r--arch/cris/arch-v32/mm/tlb.c1
-rw-r--r--arch/cris/boot/Makefile1
-rw-r--r--arch/cris/boot/compressed/Makefile1
-rw-r--r--arch/cris/boot/compressed/decompress_v10.lds1
-rw-r--r--arch/cris/boot/compressed/decompress_v32.lds1
-rw-r--r--arch/cris/boot/compressed/head_v10.S1
-rw-r--r--arch/cris/boot/compressed/head_v32.S1
-rw-r--r--arch/cris/boot/compressed/misc.c1
-rw-r--r--arch/cris/boot/dts/Makefile1
-rw-r--r--arch/cris/boot/dts/artpec3.dtsi1
-rw-r--r--arch/cris/boot/dts/dev88.dts1
-rw-r--r--arch/cris/boot/dts/etraxfs.dtsi1
-rw-r--r--arch/cris/boot/dts/p1343.dts1
-rw-r--r--arch/cris/boot/rescue/Makefile1
-rw-r--r--arch/cris/boot/rescue/head_v10.S1
-rw-r--r--arch/cris/boot/rescue/head_v32.S1
-rw-r--r--arch/cris/boot/rescue/kimagerescue.S1
-rw-r--r--arch/cris/boot/rescue/rescue_v10.lds1
-rw-r--r--arch/cris/boot/rescue/rescue_v32.lds1
-rw-r--r--arch/cris/boot/rescue/testrescue.S1
-rw-r--r--arch/cris/boot/tools/build.c1
-rw-r--r--arch/cris/include/arch-v10/arch/bitops.h1
-rw-r--r--arch/cris/include/arch-v10/arch/bug.h1
-rw-r--r--arch/cris/include/arch-v10/arch/cache.h1
-rw-r--r--arch/cris/include/arch-v10/arch/checksum.h1
-rw-r--r--arch/cris/include/arch-v10/arch/delay.h1
-rw-r--r--arch/cris/include/arch-v10/arch/dma.h1
-rw-r--r--arch/cris/include/arch-v10/arch/io.h1
-rw-r--r--arch/cris/include/arch-v10/arch/io_interface_mux.h1
-rw-r--r--arch/cris/include/arch-v10/arch/irq.h1
-rw-r--r--arch/cris/include/arch-v10/arch/irqflags.h1
-rw-r--r--arch/cris/include/arch-v10/arch/memmap.h1
-rw-r--r--arch/cris/include/arch-v10/arch/mmu.h1
-rw-r--r--arch/cris/include/arch-v10/arch/offset.h1
-rw-r--r--arch/cris/include/arch-v10/arch/page.h1
-rw-r--r--arch/cris/include/arch-v10/arch/pgtable.h1
-rw-r--r--arch/cris/include/arch-v10/arch/processor.h1
-rw-r--r--arch/cris/include/arch-v10/arch/swab.h1
-rw-r--r--arch/cris/include/arch-v10/arch/system.h1
-rw-r--r--arch/cris/include/arch-v10/arch/thread_info.h1
-rw-r--r--arch/cris/include/arch-v10/arch/timex.h1
-rw-r--r--arch/cris/include/arch-v10/arch/tlb.h1
-rw-r--r--arch/cris/include/arch-v10/arch/uaccess.h1
-rw-r--r--arch/cris/include/arch-v10/arch/unistd.h1
-rw-r--r--arch/cris/include/arch-v32/arch/bitops.h1
-rw-r--r--arch/cris/include/arch-v32/arch/bug.h1
-rw-r--r--arch/cris/include/arch-v32/arch/cache.h1
-rw-r--r--arch/cris/include/arch-v32/arch/checksum.h1
-rw-r--r--arch/cris/include/arch-v32/arch/cryptocop.h1
-rw-r--r--arch/cris/include/arch-v32/arch/delay.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/Makefile1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/ata_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/bif_core_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/bif_dma_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/bif_slave_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/config_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/cris_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/cris_supp_reg.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/dma_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/eth_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/gio_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/intr_vect.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/intr_vect_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/irq_nmi_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/marb_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/mmu_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/mmu_supp_reg.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/rt_trace_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/ser_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/sser_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/strcop_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/strmux_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/asm/timer_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/ata_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/bif_core_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/bif_dma_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/bif_slave_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/config_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/cpu_vect.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/dma.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/dma_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/eth_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/extmem_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/Makefile1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_crc_par_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_dmc_in_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_dmc_out_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_in_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_in_extra_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_out_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_out_extra_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_mpu_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_reg_space_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sap_in_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sap_out_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_scrc_in_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_scrc_out_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_spu_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_cfg_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_cpu_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_mpu_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_spu_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_timer_grp_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_trigger_grp_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_version_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_crc_par_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_dmc_in_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_dmc_out_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_in_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_in_extra_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_out_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_out_extra_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_mpu_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_mpu_macros.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_reg_space.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_sap_in_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_sap_out_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_scrc_in_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_scrc_out_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_spu_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_cfg_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_cpu_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_mpu_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_spu_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_timer_grp_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_trigger_grp_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/iop/iop_version_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/irq_nmi_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/marb_bp_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/marb_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/reg_rdwr.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/rt_trace_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/ser_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/sser_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/strcop.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/strcop_defs.h1
-rw-r--r--arch/cris/include/arch-v32/arch/hwregs/supp_reg.h1
-rw-r--r--arch/cris/include/arch-v32/arch/intmem.h1
-rw-r--r--arch/cris/include/arch-v32/arch/irq.h1
-rw-r--r--arch/cris/include/arch-v32/arch/irqflags.h1
-rw-r--r--arch/cris/include/arch-v32/arch/mmu.h1
-rw-r--r--arch/cris/include/arch-v32/arch/offset.h1
-rw-r--r--arch/cris/include/arch-v32/arch/page.h1
-rw-r--r--arch/cris/include/arch-v32/arch/pgtable.h1
-rw-r--r--arch/cris/include/arch-v32/arch/processor.h1
-rw-r--r--arch/cris/include/arch-v32/arch/swab.h1
-rw-r--r--arch/cris/include/arch-v32/arch/system.h1
-rw-r--r--arch/cris/include/arch-v32/arch/thread_info.h1
-rw-r--r--arch/cris/include/arch-v32/arch/timex.h1
-rw-r--r--arch/cris/include/arch-v32/arch/tlb.h1
-rw-r--r--arch/cris/include/arch-v32/arch/uaccess.h1
-rw-r--r--arch/cris/include/arch-v32/arch/unistd.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/arbiter.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/dma.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/clkgen_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/ddr2_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/gio_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/pinmux_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/pio_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/reg_map_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/timer_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/clkgen_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/ddr2_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/gio_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/intr_vect.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/intr_vect_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_reg_space_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sap_in_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sap_out_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_cfg_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_cpu_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_mpu_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_spu_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_version_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_reg_space.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sap_in_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sap_out_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_cfg_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_cpu_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_mpu_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_spu_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_version_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/l2cache_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/marb_bar_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/marb_foo_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/pinmux_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/pio_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/reg_map.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/strmux_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/hwregs/timer_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/memmap.h1
-rw-r--r--arch/cris/include/arch-v32/mach-a3/mach/pinmux.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/arbiter.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/dma.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/bif_core_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/config_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/gio_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/pinmux_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/reg_map_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/timer_defs_asm.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_core_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_dma_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_slave_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/config_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/gio_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/intr_vect.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/intr_vect_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/marb_bp_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/marb_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/pinmux_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/reg_map.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/strmux_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/hwregs/timer_defs.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/memmap.h1
-rw-r--r--arch/cris/include/arch-v32/mach-fs/mach/pinmux.h1
-rw-r--r--arch/cris/include/asm/axisflashmap.h1
-rw-r--r--arch/cris/include/asm/bitops.h1
-rw-r--r--arch/cris/include/asm/bug.h1
-rw-r--r--arch/cris/include/asm/cache.h1
-rw-r--r--arch/cris/include/asm/cacheflush.h1
-rw-r--r--arch/cris/include/asm/checksum.h1
-rw-r--r--arch/cris/include/asm/delay.h1
-rw-r--r--arch/cris/include/asm/dma-mapping.h1
-rw-r--r--arch/cris/include/asm/dma.h1
-rw-r--r--arch/cris/include/asm/eshlibld.h1
-rw-r--r--arch/cris/include/asm/etraxi2c.h1
-rw-r--r--arch/cris/include/asm/fasttimer.h1
-rw-r--r--arch/cris/include/asm/fb.h1
-rw-r--r--arch/cris/include/asm/io.h1
-rw-r--r--arch/cris/include/asm/irq.h1
-rw-r--r--arch/cris/include/asm/mmu.h1
-rw-r--r--arch/cris/include/asm/mmu_context.h1
-rw-r--r--arch/cris/include/asm/page.h1
-rw-r--r--arch/cris/include/asm/pci.h1
-rw-r--r--arch/cris/include/asm/pgalloc.h1
-rw-r--r--arch/cris/include/asm/pgtable.h1
-rw-r--r--arch/cris/include/asm/processor.h1
-rw-r--r--arch/cris/include/asm/ptrace.h1
-rw-r--r--arch/cris/include/asm/segment.h1
-rw-r--r--arch/cris/include/asm/serial.h1
-rw-r--r--arch/cris/include/asm/shmparam.h1
-rw-r--r--arch/cris/include/asm/signal.h1
-rw-r--r--arch/cris/include/asm/stacktrace.h1
-rw-r--r--arch/cris/include/asm/string.h1
-rw-r--r--arch/cris/include/asm/swab.h1
-rw-r--r--arch/cris/include/asm/switch_to.h1
-rw-r--r--arch/cris/include/asm/termios.h1
-rw-r--r--arch/cris/include/asm/thread_info.h1
-rw-r--r--arch/cris/include/asm/timex.h1
-rw-r--r--arch/cris/include/asm/tlb.h1
-rw-r--r--arch/cris/include/asm/tlbflush.h1
-rw-r--r--arch/cris/include/asm/uaccess.h1
-rw-r--r--arch/cris/include/asm/ucontext.h1
-rw-r--r--arch/cris/include/asm/unaligned.h1
-rw-r--r--arch/cris/include/asm/unistd.h1
-rw-r--r--arch/cris/include/asm/user.h1
-rw-r--r--arch/cris/include/uapi/arch-v10/arch/sv_addr_ag.h1
-rw-r--r--arch/cris/include/uapi/arch-v10/arch/svinto.h1
-rw-r--r--arch/cris/include/uapi/arch-v10/arch/user.h1
-rw-r--r--arch/cris/include/uapi/arch-v32/arch/cryptocop.h1
-rw-r--r--arch/cris/include/uapi/arch-v32/arch/user.h1
-rw-r--r--arch/cris/include/uapi/asm/byteorder.h1
-rw-r--r--arch/cris/include/uapi/asm/elf.h1
-rw-r--r--arch/cris/include/uapi/asm/elf_v10.h1
-rw-r--r--arch/cris/include/uapi/asm/elf_v32.h1
-rw-r--r--arch/cris/include/uapi/asm/ethernet.h1
-rw-r--r--arch/cris/include/uapi/asm/etraxgpio.h1
-rw-r--r--arch/cris/include/uapi/asm/ioctls.h1
-rw-r--r--arch/cris/include/uapi/asm/param.h1
-rw-r--r--arch/cris/include/uapi/asm/posix_types.h1
-rw-r--r--arch/cris/include/uapi/asm/ptrace.h1
-rw-r--r--arch/cris/include/uapi/asm/ptrace_v10.h1
-rw-r--r--arch/cris/include/uapi/asm/ptrace_v32.h1
-rw-r--r--arch/cris/include/uapi/asm/rs485.h1
-rw-r--r--arch/cris/include/uapi/asm/setup.h1
-rw-r--r--arch/cris/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/cris/include/uapi/asm/signal.h1
-rw-r--r--arch/cris/include/uapi/asm/stat.h1
-rw-r--r--arch/cris/include/uapi/asm/sync_serial.h1
-rw-r--r--arch/cris/include/uapi/asm/termbits.h1
-rw-r--r--arch/cris/include/uapi/asm/termios.h1
-rw-r--r--arch/cris/include/uapi/asm/unistd.h1
-rw-r--r--arch/cris/kernel/Makefile1
-rw-r--r--arch/cris/kernel/asm-offsets.c1
-rw-r--r--arch/cris/kernel/crisksyms.c1
-rw-r--r--arch/cris/kernel/devicetree.c1
-rw-r--r--arch/cris/kernel/irq.c1
-rw-r--r--arch/cris/kernel/process.c1
-rw-r--r--arch/cris/kernel/profile.c1
-rw-r--r--arch/cris/kernel/ptrace.c1
-rw-r--r--arch/cris/kernel/setup.c1
-rw-r--r--arch/cris/kernel/sys_cris.c1
-rw-r--r--arch/cris/kernel/time.c1
-rw-r--r--arch/cris/kernel/traps.c1
-rw-r--r--arch/cris/kernel/vmlinux.lds.S1
-rw-r--r--arch/cris/mm/fault.c1
-rw-r--r--arch/cris/mm/init.c1
-rw-r--r--arch/cris/mm/ioremap.c1
-rw-r--r--arch/cris/mm/tlb.c1
-rw-r--r--arch/frv/Kconfig1
-rw-r--r--arch/frv/Kconfig.debug1
-rw-r--r--arch/frv/include/asm/atomic_defs.h1
-rw-r--r--arch/frv/include/asm/dma-mapping.h1
-rw-r--r--arch/frv/include/asm/fpu.h1
-rw-r--r--arch/frv/include/asm/futex.h1
-rw-r--r--arch/frv/include/asm/kmap_types.h1
-rw-r--r--arch/frv/include/asm/local.h1
-rw-r--r--arch/frv/include/asm/math-emu.h1
-rw-r--r--arch/frv/include/asm/page.h1
-rw-r--r--arch/frv/include/asm/percpu.h1
-rw-r--r--arch/frv/include/asm/processor.h4
-rw-r--r--arch/frv/include/asm/shmparam.h1
-rw-r--r--arch/frv/include/asm/signal.h1
-rw-r--r--arch/frv/include/asm/smp.h1
-rw-r--r--arch/frv/include/asm/termios.h1
-rw-r--r--arch/frv/include/asm/timex.h1
-rw-r--r--arch/frv/include/asm/tlb.h1
-rw-r--r--arch/frv/include/asm/topology.h1
-rw-r--r--arch/frv/include/asm/ucontext.h1
-rw-r--r--arch/frv/include/asm/unistd.h1
-rw-r--r--arch/frv/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/frv/include/uapi/asm/byteorder.h1
-rw-r--r--arch/frv/include/uapi/asm/errno.h1
-rw-r--r--arch/frv/include/uapi/asm/fcntl.h1
-rw-r--r--arch/frv/include/uapi/asm/ioctl.h1
-rw-r--r--arch/frv/include/uapi/asm/ioctls.h1
-rw-r--r--arch/frv/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/frv/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/frv/include/uapi/asm/mman.h1
-rw-r--r--arch/frv/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/frv/include/uapi/asm/param.h1
-rw-r--r--arch/frv/include/uapi/asm/poll.h1
-rw-r--r--arch/frv/include/uapi/asm/posix_types.h1
-rw-r--r--arch/frv/include/uapi/asm/ptrace.h1
-rw-r--r--arch/frv/include/uapi/asm/registers.h1
-rw-r--r--arch/frv/include/uapi/asm/resource.h1
-rw-r--r--arch/frv/include/uapi/asm/sembuf.h1
-rw-r--r--arch/frv/include/uapi/asm/setup.h1
-rw-r--r--arch/frv/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/frv/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/frv/include/uapi/asm/siginfo.h1
-rw-r--r--arch/frv/include/uapi/asm/signal.h1
-rw-r--r--arch/frv/include/uapi/asm/socket.h1
-rw-r--r--arch/frv/include/uapi/asm/sockios.h1
-rw-r--r--arch/frv/include/uapi/asm/stat.h1
-rw-r--r--arch/frv/include/uapi/asm/statfs.h1
-rw-r--r--arch/frv/include/uapi/asm/swab.h1
-rw-r--r--arch/frv/include/uapi/asm/termbits.h1
-rw-r--r--arch/frv/include/uapi/asm/termios.h1
-rw-r--r--arch/frv/include/uapi/asm/types.h1
-rw-r--r--arch/frv/include/uapi/asm/unistd.h1
-rw-r--r--arch/frv/kernel/Makefile1
-rw-r--r--arch/frv/kernel/asm-offsets.c1
-rw-r--r--arch/frv/kernel/frv_ksyms.c1
-rw-r--r--arch/frv/kernel/vmlinux.lds.S1
-rw-r--r--arch/frv/lib/atomic-lib.c1
-rw-r--r--arch/frv/mb93090-mb00/Makefile1
-rw-r--r--arch/frv/mb93090-mb00/pci-frv.h1
-rw-r--r--arch/frv/mb93090-mb00/pci-irq.c1
-rw-r--r--arch/frv/mm/extable.c1
-rw-r--r--arch/frv/mm/fault.c1
-rw-r--r--arch/h8300/Kconfig1
-rw-r--r--arch/h8300/Kconfig.cpu1
-rw-r--r--arch/h8300/boot/Makefile1
-rw-r--r--arch/h8300/boot/compressed/Makefile1
-rw-r--r--arch/h8300/boot/compressed/head.S1
-rw-r--r--arch/h8300/boot/compressed/misc.c1
-rw-r--r--arch/h8300/boot/compressed/vmlinux.lds1
-rw-r--r--arch/h8300/boot/dts/Makefile1
-rw-r--r--arch/h8300/boot/dts/edosk2674.dts1
-rw-r--r--arch/h8300/boot/dts/h8300h_sim.dts1
-rw-r--r--arch/h8300/boot/dts/h8s_sim.dts1
-rw-r--r--arch/h8300/include/asm/atomic.h1
-rw-r--r--arch/h8300/include/asm/bitops.h1
-rw-r--r--arch/h8300/include/asm/bug.h1
-rw-r--r--arch/h8300/include/asm/byteorder.h1
-rw-r--r--arch/h8300/include/asm/cache.h1
-rw-r--r--arch/h8300/include/asm/cmpxchg.h1
-rw-r--r--arch/h8300/include/asm/dma-mapping.h1
-rw-r--r--arch/h8300/include/asm/elf.h1
-rw-r--r--arch/h8300/include/asm/flat.h1
-rw-r--r--arch/h8300/include/asm/hash.h1
-rw-r--r--arch/h8300/include/asm/io.h1
-rw-r--r--arch/h8300/include/asm/irq.h1
-rw-r--r--arch/h8300/include/asm/irqflags.h1
-rw-r--r--arch/h8300/include/asm/page.h1
-rw-r--r--arch/h8300/include/asm/pci.h1
-rw-r--r--arch/h8300/include/asm/pgtable.h1
-rw-r--r--arch/h8300/include/asm/processor.h1
-rw-r--r--arch/h8300/include/asm/ptrace.h1
-rw-r--r--arch/h8300/include/asm/segment.h1
-rw-r--r--arch/h8300/include/asm/signal.h1
-rw-r--r--arch/h8300/include/asm/string.h1
-rw-r--r--arch/h8300/include/asm/switch_to.h1
-rw-r--r--arch/h8300/include/asm/syscall.h1
-rw-r--r--arch/h8300/include/asm/thread_info.h1
-rw-r--r--arch/h8300/include/asm/tlb.h1
-rw-r--r--arch/h8300/include/asm/uaccess.h1
-rw-r--r--arch/h8300/include/asm/user.h1
-rw-r--r--arch/h8300/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/h8300/include/uapi/asm/byteorder.h1
-rw-r--r--arch/h8300/include/uapi/asm/ptrace.h1
-rw-r--r--arch/h8300/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/h8300/include/uapi/asm/signal.h1
-rw-r--r--arch/h8300/kernel/Makefile1
-rw-r--r--arch/h8300/kernel/asm-offsets.c1
-rw-r--r--arch/h8300/kernel/entry.S1
-rw-r--r--arch/h8300/kernel/h8300_ksyms.c1
-rw-r--r--arch/h8300/kernel/head_ram.S1
-rw-r--r--arch/h8300/kernel/head_rom.S1
-rw-r--r--arch/h8300/kernel/irq.c1
-rw-r--r--arch/h8300/kernel/module.c1
-rw-r--r--arch/h8300/kernel/process.c1
-rw-r--r--arch/h8300/kernel/setup.c1
-rw-r--r--arch/h8300/kernel/syscalls.c1
-rw-r--r--arch/h8300/kernel/vmlinux.lds.S1
-rw-r--r--arch/h8300/lib/abs.S1
-rw-r--r--arch/h8300/lib/ashldi3.c1
-rw-r--r--arch/h8300/lib/ashrdi3.c1
-rw-r--r--arch/h8300/lib/delay.c1
-rw-r--r--arch/h8300/lib/libgcc.h1
-rw-r--r--arch/h8300/lib/lshrdi3.c1
-rw-r--r--arch/h8300/lib/memcpy.S1
-rw-r--r--arch/h8300/lib/memset.S1
-rw-r--r--arch/h8300/lib/moddivsi3.S1
-rw-r--r--arch/h8300/lib/modsi3.S1
-rw-r--r--arch/h8300/lib/muldi3.c1
-rw-r--r--arch/h8300/lib/mulsi3.S1
-rw-r--r--arch/h8300/lib/strncpy.S1
-rw-r--r--arch/h8300/lib/ucmpdi2.c1
-rw-r--r--arch/h8300/lib/udivsi3.S1
-rw-r--r--arch/h8300/mm/fault.c1
-rw-r--r--arch/h8300/mm/init.c1
-rw-r--r--arch/h8300/mm/memory.c1
-rw-r--r--arch/hexagon/Kconfig1
-rw-r--r--arch/hexagon/Makefile1
-rw-r--r--arch/hexagon/include/asm/Kbuild1
-rw-r--r--arch/hexagon/include/asm/futex.h1
-rw-r--r--arch/hexagon/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/hexagon/include/uapi/asm/byteorder.h1
-rw-r--r--arch/hexagon/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/hexagon/include/uapi/asm/param.h1
-rw-r--r--arch/hexagon/include/uapi/asm/ptrace.h1
-rw-r--r--arch/hexagon/include/uapi/asm/registers.h1
-rw-r--r--arch/hexagon/include/uapi/asm/setup.h1
-rw-r--r--arch/hexagon/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/hexagon/include/uapi/asm/signal.h1
-rw-r--r--arch/hexagon/include/uapi/asm/swab.h1
-rw-r--r--arch/hexagon/include/uapi/asm/unistd.h1
-rw-r--r--arch/hexagon/include/uapi/asm/user.h1
-rw-r--r--arch/hexagon/kernel/Makefile1
-rw-r--r--arch/ia64/Kconfig1
-rw-r--r--arch/ia64/Kconfig.debug6
-rw-r--r--arch/ia64/dig/Makefile1
-rw-r--r--arch/ia64/dig/setup.c1
-rw-r--r--arch/ia64/hp/common/hwsw_iommu.c1
-rw-r--r--arch/ia64/hp/sim/Kconfig1
-rw-r--r--arch/ia64/hp/sim/Makefile1
-rw-r--r--arch/ia64/hp/sim/boot/boot_head.S1
-rw-r--r--arch/ia64/hp/sim/boot/bootloader.c1
-rw-r--r--arch/ia64/hp/sim/boot/bootloader.lds1
-rw-r--r--arch/ia64/hp/sim/boot/fw-emu.c1
-rw-r--r--arch/ia64/hp/sim/boot/ssc.h1
-rw-r--r--arch/ia64/hp/sim/hpsim.S1
-rw-r--r--arch/ia64/hp/sim/hpsim_console.c1
-rw-r--r--arch/ia64/hp/sim/hpsim_irq.c1
-rw-r--r--arch/ia64/hp/sim/hpsim_setup.c1
-rw-r--r--arch/ia64/hp/sim/hpsim_ssc.h1
-rw-r--r--arch/ia64/hp/sim/simeth.c1
-rw-r--r--arch/ia64/hp/sim/simscsi.c1
-rw-r--r--arch/ia64/hp/sim/simserial.c1
-rw-r--r--arch/ia64/include/asm/agp.h1
-rw-r--r--arch/ia64/include/asm/asm-prototypes.h1
-rw-r--r--arch/ia64/include/asm/asmmacro.h1
-rw-r--r--arch/ia64/include/asm/atomic.h1
-rw-r--r--arch/ia64/include/asm/barrier.h1
-rw-r--r--arch/ia64/include/asm/bitops.h1
-rw-r--r--arch/ia64/include/asm/bug.h1
-rw-r--r--arch/ia64/include/asm/bugs.h1
-rw-r--r--arch/ia64/include/asm/cache.h1
-rw-r--r--arch/ia64/include/asm/cacheflush.h1
-rw-r--r--arch/ia64/include/asm/checksum.h1
-rw-r--r--arch/ia64/include/asm/clocksource.h1
-rw-r--r--arch/ia64/include/asm/cpu.h1
-rw-r--r--arch/ia64/include/asm/current.h1
-rw-r--r--arch/ia64/include/asm/cyclone.h1
-rw-r--r--arch/ia64/include/asm/delay.h1
-rw-r--r--arch/ia64/include/asm/dma-mapping.h1
-rw-r--r--arch/ia64/include/asm/dma.h1
-rw-r--r--arch/ia64/include/asm/dmi.h1
-rw-r--r--arch/ia64/include/asm/early_ioremap.h1
-rw-r--r--arch/ia64/include/asm/elf.h1
-rw-r--r--arch/ia64/include/asm/esi.h1
-rw-r--r--arch/ia64/include/asm/extable.h1
-rw-r--r--arch/ia64/include/asm/fb.h1
-rw-r--r--arch/ia64/include/asm/fpswa.h1
-rw-r--r--arch/ia64/include/asm/ftrace.h1
-rw-r--r--arch/ia64/include/asm/futex.h1
-rw-r--r--arch/ia64/include/asm/gcc_intrin.h1
-rw-r--r--arch/ia64/include/asm/hardirq.h1
-rw-r--r--arch/ia64/include/asm/hpsim.h1
-rw-r--r--arch/ia64/include/asm/hugetlb.h1
-rw-r--r--arch/ia64/include/asm/hw_irq.h1
-rw-r--r--arch/ia64/include/asm/idle.h1
-rw-r--r--arch/ia64/include/asm/intrinsics.h1
-rw-r--r--arch/ia64/include/asm/io.h1
-rw-r--r--arch/ia64/include/asm/iommu.h1
-rw-r--r--arch/ia64/include/asm/iommu_table.h1
-rw-r--r--arch/ia64/include/asm/iosapic.h1
-rw-r--r--arch/ia64/include/asm/irq.h1
-rw-r--r--arch/ia64/include/asm/irq_remapping.h1
-rw-r--r--arch/ia64/include/asm/irqflags.h1
-rw-r--r--arch/ia64/include/asm/kexec.h1
-rw-r--r--arch/ia64/include/asm/kmap_types.h1
-rw-r--r--arch/ia64/include/asm/kregs.h1
-rw-r--r--arch/ia64/include/asm/libata-portmap.h1
-rw-r--r--arch/ia64/include/asm/linkage.h1
-rw-r--r--arch/ia64/include/asm/machvec.h1
-rw-r--r--arch/ia64/include/asm/machvec_dig.h1
-rw-r--r--arch/ia64/include/asm/machvec_dig_vtd.h1
-rw-r--r--arch/ia64/include/asm/machvec_hpsim.h1
-rw-r--r--arch/ia64/include/asm/machvec_hpzx1.h1
-rw-r--r--arch/ia64/include/asm/machvec_hpzx1_swiotlb.h1
-rw-r--r--arch/ia64/include/asm/machvec_init.h1
-rw-r--r--arch/ia64/include/asm/mca.h1
-rw-r--r--arch/ia64/include/asm/mca_asm.h1
-rw-r--r--arch/ia64/include/asm/mman.h1
-rw-r--r--arch/ia64/include/asm/mmu.h1
-rw-r--r--arch/ia64/include/asm/mmu_context.h1
-rw-r--r--arch/ia64/include/asm/module.h1
-rw-r--r--arch/ia64/include/asm/msidef.h1
-rw-r--r--arch/ia64/include/asm/page.h1
-rw-r--r--arch/ia64/include/asm/pal.h1
-rw-r--r--arch/ia64/include/asm/param.h1
-rw-r--r--arch/ia64/include/asm/parport.h1
-rw-r--r--arch/ia64/include/asm/patch.h1
-rw-r--r--arch/ia64/include/asm/pci.h1
-rw-r--r--arch/ia64/include/asm/percpu.h1
-rw-r--r--arch/ia64/include/asm/perfmon.h1
-rw-r--r--arch/ia64/include/asm/pgalloc.h1
-rw-r--r--arch/ia64/include/asm/pgtable.h1
-rw-r--r--arch/ia64/include/asm/processor.h1
-rw-r--r--arch/ia64/include/asm/ptrace.h1
-rw-r--r--arch/ia64/include/asm/rwsem.h1
-rw-r--r--arch/ia64/include/asm/sal.h1
-rw-r--r--arch/ia64/include/asm/sections.h1
-rw-r--r--arch/ia64/include/asm/shmparam.h1
-rw-r--r--arch/ia64/include/asm/signal.h1
-rw-r--r--arch/ia64/include/asm/smp.h1
-rw-r--r--arch/ia64/include/asm/sn/ioc3.h1
-rw-r--r--arch/ia64/include/asm/sparsemem.h1
-rw-r--r--arch/ia64/include/asm/spinlock.h1
-rw-r--r--arch/ia64/include/asm/spinlock_types.h1
-rw-r--r--arch/ia64/include/asm/string.h1
-rw-r--r--arch/ia64/include/asm/swiotlb.h1
-rw-r--r--arch/ia64/include/asm/switch_to.h1
-rw-r--r--arch/ia64/include/asm/termios.h1
-rw-r--r--arch/ia64/include/asm/thread_info.h1
-rw-r--r--arch/ia64/include/asm/timex.h1
-rw-r--r--arch/ia64/include/asm/tlb.h1
-rw-r--r--arch/ia64/include/asm/tlbflush.h1
-rw-r--r--arch/ia64/include/asm/types.h1
-rw-r--r--arch/ia64/include/asm/uaccess.h1
-rw-r--r--arch/ia64/include/asm/unaligned.h1
-rw-r--r--arch/ia64/include/asm/unistd.h1
-rw-r--r--arch/ia64/include/asm/unwind.h1
-rw-r--r--arch/ia64/include/asm/user.h1
-rw-r--r--arch/ia64/include/asm/ustack.h1
-rw-r--r--arch/ia64/include/asm/uv/uv.h1
-rw-r--r--arch/ia64/include/asm/vga.h1
-rw-r--r--arch/ia64/include/uapi/asm/auxvec.h1
-rw-r--r--arch/ia64/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/ia64/include/uapi/asm/break.h1
-rw-r--r--arch/ia64/include/uapi/asm/byteorder.h1
-rw-r--r--arch/ia64/include/uapi/asm/cmpxchg.h1
-rw-r--r--arch/ia64/include/uapi/asm/errno.h1
-rw-r--r--arch/ia64/include/uapi/asm/fcntl.h1
-rw-r--r--arch/ia64/include/uapi/asm/fpu.h1
-rw-r--r--arch/ia64/include/uapi/asm/gcc_intrin.h1
-rw-r--r--arch/ia64/include/uapi/asm/ia64regs.h1
-rw-r--r--arch/ia64/include/uapi/asm/intel_intrin.h1
-rw-r--r--arch/ia64/include/uapi/asm/intrinsics.h1
-rw-r--r--arch/ia64/include/uapi/asm/ioctl.h1
-rw-r--r--arch/ia64/include/uapi/asm/ioctls.h1
-rw-r--r--arch/ia64/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/ia64/include/uapi/asm/mman.h1
-rw-r--r--arch/ia64/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/ia64/include/uapi/asm/param.h1
-rw-r--r--arch/ia64/include/uapi/asm/perfmon.h1
-rw-r--r--arch/ia64/include/uapi/asm/perfmon_default_smpl.h1
-rw-r--r--arch/ia64/include/uapi/asm/poll.h1
-rw-r--r--arch/ia64/include/uapi/asm/posix_types.h1
-rw-r--r--arch/ia64/include/uapi/asm/ptrace.h1
-rw-r--r--arch/ia64/include/uapi/asm/ptrace_offsets.h1
-rw-r--r--arch/ia64/include/uapi/asm/resource.h1
-rw-r--r--arch/ia64/include/uapi/asm/rse.h1
-rw-r--r--arch/ia64/include/uapi/asm/sembuf.h1
-rw-r--r--arch/ia64/include/uapi/asm/setup.h1
-rw-r--r--arch/ia64/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/ia64/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/ia64/include/uapi/asm/siginfo.h1
-rw-r--r--arch/ia64/include/uapi/asm/signal.h1
-rw-r--r--arch/ia64/include/uapi/asm/socket.h1
-rw-r--r--arch/ia64/include/uapi/asm/sockios.h1
-rw-r--r--arch/ia64/include/uapi/asm/stat.h1
-rw-r--r--arch/ia64/include/uapi/asm/statfs.h1
-rw-r--r--arch/ia64/include/uapi/asm/swab.h1
-rw-r--r--arch/ia64/include/uapi/asm/termbits.h1
-rw-r--r--arch/ia64/include/uapi/asm/termios.h1
-rw-r--r--arch/ia64/include/uapi/asm/types.h1
-rw-r--r--arch/ia64/include/uapi/asm/ucontext.h1
-rw-r--r--arch/ia64/include/uapi/asm/unistd.h1
-rw-r--r--arch/ia64/include/uapi/asm/ustack.h1
-rw-r--r--arch/ia64/kernel/Makefile1
-rw-r--r--arch/ia64/kernel/Makefile.gate1
-rw-r--r--arch/ia64/kernel/asm-offsets.c1
-rw-r--r--arch/ia64/kernel/audit.c1
-rw-r--r--arch/ia64/kernel/brl_emu.c1
-rw-r--r--arch/ia64/kernel/crash.c1
-rw-r--r--arch/ia64/kernel/crash_dump.c1
-rw-r--r--arch/ia64/kernel/cyclone.c1
-rw-r--r--arch/ia64/kernel/dma-mapping.c1
-rw-r--r--arch/ia64/kernel/efi.c1
-rw-r--r--arch/ia64/kernel/efi_stub.S1
-rw-r--r--arch/ia64/kernel/elfcore.c1
-rw-r--r--arch/ia64/kernel/entry.S1
-rw-r--r--arch/ia64/kernel/entry.h1
-rw-r--r--arch/ia64/kernel/fsys.S1
-rw-r--r--arch/ia64/kernel/fsyscall_gtod_data.h1
-rw-r--r--arch/ia64/kernel/gate.S1
-rw-r--r--arch/ia64/kernel/gate.lds.S1
-rw-r--r--arch/ia64/kernel/head.S1
-rw-r--r--arch/ia64/kernel/ia64_ksyms.c1
-rw-r--r--arch/ia64/kernel/init_task.c1
-rw-r--r--arch/ia64/kernel/iosapic.c1
-rw-r--r--arch/ia64/kernel/irq.c1
-rw-r--r--arch/ia64/kernel/irq_ia64.c1
-rw-r--r--arch/ia64/kernel/irq_lsapic.c1
-rw-r--r--arch/ia64/kernel/ivt.S1
-rw-r--r--arch/ia64/kernel/machvec.c1
-rw-r--r--arch/ia64/kernel/mca_asm.S1
-rw-r--r--arch/ia64/kernel/mca_drv.h1
-rw-r--r--arch/ia64/kernel/mca_drv_asm.S1
-rw-r--r--arch/ia64/kernel/minstate.h1
-rw-r--r--arch/ia64/kernel/module.c1
-rw-r--r--arch/ia64/kernel/msi_ia64.c1
-rw-r--r--arch/ia64/kernel/nr-irqs.c1
-rw-r--r--arch/ia64/kernel/pal.S1
-rw-r--r--arch/ia64/kernel/patch.c1
-rw-r--r--arch/ia64/kernel/pci-dma.c1
-rw-r--r--arch/ia64/kernel/pci-swiotlb.c1
-rw-r--r--arch/ia64/kernel/perfmon_generic.h1
-rw-r--r--arch/ia64/kernel/perfmon_itanium.h1
-rw-r--r--arch/ia64/kernel/perfmon_mckinley.h1
-rw-r--r--arch/ia64/kernel/perfmon_montecito.h1
-rw-r--r--arch/ia64/kernel/process.c1
-rw-r--r--arch/ia64/kernel/ptrace.c1
-rw-r--r--arch/ia64/kernel/setup.c1
-rw-r--r--arch/ia64/kernel/sigframe.h1
-rw-r--r--arch/ia64/kernel/signal.c1
-rw-r--r--arch/ia64/kernel/stacktrace.c1
-rw-r--r--arch/ia64/kernel/sys_ia64.c1
-rw-r--r--arch/ia64/kernel/traps.c1
-rw-r--r--arch/ia64/kernel/unaligned.c1
-rw-r--r--arch/ia64/kernel/unwind.c1
-rw-r--r--arch/ia64/kernel/unwind_decoder.c1
-rw-r--r--arch/ia64/kernel/unwind_i.h1
-rw-r--r--arch/ia64/kernel/vmlinux.lds.S1
-rw-r--r--arch/ia64/lib/Makefile1
-rw-r--r--arch/ia64/lib/carta_random.S1
-rw-r--r--arch/ia64/lib/checksum.c1
-rw-r--r--arch/ia64/lib/clear_page.S1
-rw-r--r--arch/ia64/lib/clear_user.S1
-rw-r--r--arch/ia64/lib/copy_page.S1
-rw-r--r--arch/ia64/lib/copy_page_mck.S1
-rw-r--r--arch/ia64/lib/copy_user.S1
-rw-r--r--arch/ia64/lib/csum_partial_copy.c1
-rw-r--r--arch/ia64/lib/do_csum.S1
-rw-r--r--arch/ia64/lib/idiv32.S1
-rw-r--r--arch/ia64/lib/idiv64.S1
-rw-r--r--arch/ia64/lib/io.c1
-rw-r--r--arch/ia64/lib/ip_fast_csum.S1
-rw-r--r--arch/ia64/lib/memcpy.S1
-rw-r--r--arch/ia64/lib/memcpy_mck.S1
-rw-r--r--arch/ia64/lib/memset.S1
-rw-r--r--arch/ia64/lib/strlen.S1
-rw-r--r--arch/ia64/lib/strncpy_from_user.S1
-rw-r--r--arch/ia64/lib/strnlen_user.S1
-rw-r--r--arch/ia64/mm/Makefile1
-rw-r--r--arch/ia64/mm/discontig.c1
-rw-r--r--arch/ia64/mm/extable.c1
-rw-r--r--arch/ia64/mm/fault.c1
-rw-r--r--arch/ia64/mm/hugetlbpage.c1
-rw-r--r--arch/ia64/mm/init.c1
-rw-r--r--arch/ia64/module.lds1
-rw-r--r--arch/ia64/oprofile/Makefile1
-rw-r--r--arch/ia64/pci/fixup.c1
-rwxr-xr-xarch/ia64/scripts/check-gas1
-rw-r--r--arch/ia64/scripts/check-segrel.S1
-rw-r--r--arch/ia64/scripts/check-segrel.lds1
-rw-r--r--arch/ia64/scripts/check-text-align.S1
-rwxr-xr-xarch/ia64/scripts/toolchain-flags1
-rw-r--r--arch/ia64/scripts/unwcheck.py1
-rw-r--r--arch/ia64/sn/kernel/sn2/timer.c1
-rw-r--r--arch/m32r/Kconfig5
-rw-r--r--arch/m32r/Kconfig.debug1
-rw-r--r--arch/m32r/Makefile1
-rw-r--r--arch/m32r/boot/compressed/Makefile1
-rw-r--r--arch/m32r/boot/compressed/boot.h1
-rw-r--r--arch/m32r/boot/compressed/head.S1
-rw-r--r--arch/m32r/boot/compressed/m32r_sio.c1
-rw-r--r--arch/m32r/boot/compressed/misc.c1
-rw-r--r--arch/m32r/boot/compressed/vmlinux.lds.S1
-rw-r--r--arch/m32r/boot/setup.S1
-rw-r--r--arch/m32r/include/asm/assembler.h1
-rw-r--r--arch/m32r/include/asm/atomic.h1
-rw-r--r--arch/m32r/include/asm/bitops.h1
-rw-r--r--arch/m32r/include/asm/bug.h1
-rw-r--r--arch/m32r/include/asm/bugs.h1
-rw-r--r--arch/m32r/include/asm/cache.h1
-rw-r--r--arch/m32r/include/asm/cachectl.h1
-rw-r--r--arch/m32r/include/asm/cacheflush.h1
-rw-r--r--arch/m32r/include/asm/cmpxchg.h1
-rw-r--r--arch/m32r/include/asm/dma-mapping.h1
-rw-r--r--arch/m32r/include/asm/dma.h1
-rw-r--r--arch/m32r/include/asm/elf.h1
-rw-r--r--arch/m32r/include/asm/emergency-restart.h1
-rw-r--r--arch/m32r/include/asm/fb.h1
-rw-r--r--arch/m32r/include/asm/hardirq.h1
-rw-r--r--arch/m32r/include/asm/io.h1
-rw-r--r--arch/m32r/include/asm/irq.h1
-rw-r--r--arch/m32r/include/asm/kmap_types.h1
-rw-r--r--arch/m32r/include/asm/linkage.h1
-rw-r--r--arch/m32r/include/asm/local.h1
-rw-r--r--arch/m32r/include/asm/m32102.h1
-rw-r--r--arch/m32r/include/asm/m32r.h1
-rw-r--r--arch/m32r/include/asm/m32r_mp_fpga.h1
-rw-r--r--arch/m32r/include/asm/mc146818rtc.h1
-rw-r--r--arch/m32r/include/asm/mmu.h1
-rw-r--r--arch/m32r/include/asm/mmu_context.h1
-rw-r--r--arch/m32r/include/asm/mmzone.h1
-rw-r--r--arch/m32r/include/asm/page.h1
-rw-r--r--arch/m32r/include/asm/pci.h1
-rw-r--r--arch/m32r/include/asm/percpu.h1
-rw-r--r--arch/m32r/include/asm/pgalloc.h1
-rw-r--r--arch/m32r/include/asm/pgtable-2level.h1
-rw-r--r--arch/m32r/include/asm/pgtable.h1
-rw-r--r--arch/m32r/include/asm/processor.h8
-rw-r--r--arch/m32r/include/asm/rtc.h1
-rw-r--r--arch/m32r/include/asm/s1d13806.h1
-rw-r--r--arch/m32r/include/asm/segment.h1
-rw-r--r--arch/m32r/include/asm/serial.h1
-rw-r--r--arch/m32r/include/asm/setup.h1
-rw-r--r--arch/m32r/include/asm/shmparam.h1
-rw-r--r--arch/m32r/include/asm/signal.h1
-rw-r--r--arch/m32r/include/asm/smp.h1
-rw-r--r--arch/m32r/include/asm/spinlock.h1
-rw-r--r--arch/m32r/include/asm/spinlock_types.h1
-rw-r--r--arch/m32r/include/asm/string.h1
-rw-r--r--arch/m32r/include/asm/syscall.h1
-rw-r--r--arch/m32r/include/asm/termios.h1
-rw-r--r--arch/m32r/include/asm/thread_info.h1
-rw-r--r--arch/m32r/include/asm/timex.h1
-rw-r--r--arch/m32r/include/asm/tlb.h1
-rw-r--r--arch/m32r/include/asm/tlbflush.h1
-rw-r--r--arch/m32r/include/asm/topology.h1
-rw-r--r--arch/m32r/include/asm/types.h1
-rw-r--r--arch/m32r/include/asm/uaccess.h1
-rw-r--r--arch/m32r/include/asm/ucontext.h1
-rw-r--r--arch/m32r/include/asm/unaligned.h1
-rw-r--r--arch/m32r/include/asm/unistd.h1
-rw-r--r--arch/m32r/include/asm/user.h1
-rw-r--r--arch/m32r/include/asm/vga.h1
-rw-r--r--arch/m32r/include/asm/xor.h1
-rw-r--r--arch/m32r/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/m32r/include/uapi/asm/byteorder.h1
-rw-r--r--arch/m32r/include/uapi/asm/errno.h1
-rw-r--r--arch/m32r/include/uapi/asm/fcntl.h1
-rw-r--r--arch/m32r/include/uapi/asm/ioctl.h1
-rw-r--r--arch/m32r/include/uapi/asm/ioctls.h1
-rw-r--r--arch/m32r/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/m32r/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/m32r/include/uapi/asm/param.h1
-rw-r--r--arch/m32r/include/uapi/asm/poll.h1
-rw-r--r--arch/m32r/include/uapi/asm/posix_types.h1
-rw-r--r--arch/m32r/include/uapi/asm/ptrace.h1
-rw-r--r--arch/m32r/include/uapi/asm/resource.h1
-rw-r--r--arch/m32r/include/uapi/asm/sembuf.h1
-rw-r--r--arch/m32r/include/uapi/asm/setup.h1
-rw-r--r--arch/m32r/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/m32r/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/m32r/include/uapi/asm/signal.h1
-rw-r--r--arch/m32r/include/uapi/asm/socket.h1
-rw-r--r--arch/m32r/include/uapi/asm/sockios.h1
-rw-r--r--arch/m32r/include/uapi/asm/stat.h1
-rw-r--r--arch/m32r/include/uapi/asm/statfs.h1
-rw-r--r--arch/m32r/include/uapi/asm/swab.h1
-rw-r--r--arch/m32r/include/uapi/asm/termbits.h1
-rw-r--r--arch/m32r/include/uapi/asm/termios.h1
-rw-r--r--arch/m32r/include/uapi/asm/unistd.h1
-rw-r--r--arch/m32r/kernel/Makefile1
-rw-r--r--arch/m32r/kernel/align.c1
-rw-r--r--arch/m32r/kernel/asm-offsets.c1
-rw-r--r--arch/m32r/kernel/entry.S1
-rw-r--r--arch/m32r/kernel/head.S1
-rw-r--r--arch/m32r/kernel/irq.c1
-rw-r--r--arch/m32r/kernel/m32r_ksyms.c1
-rw-r--r--arch/m32r/kernel/process.c1
-rw-r--r--arch/m32r/kernel/ptrace.c1
-rw-r--r--arch/m32r/kernel/setup.c1
-rw-r--r--arch/m32r/kernel/signal.c1
-rw-r--r--arch/m32r/kernel/sys_m32r.c1
-rw-r--r--arch/m32r/kernel/syscall_table.S1
-rw-r--r--arch/m32r/kernel/time.c1
-rw-r--r--arch/m32r/kernel/traps.c10
-rw-r--r--arch/m32r/kernel/vmlinux.lds.S1
-rw-r--r--arch/m32r/lib/ashxdi3.S1
-rw-r--r--arch/m32r/lib/delay.c1
-rw-r--r--arch/m32r/lib/libgcc.h1
-rw-r--r--arch/m32r/lib/memcpy.S1
-rw-r--r--arch/m32r/lib/memset.S1
-rw-r--r--arch/m32r/lib/strlen.S1
-rw-r--r--arch/m32r/lib/ucmpdi2.c1
-rw-r--r--arch/m32r/lib/usercopy.c1
-rw-r--r--arch/m32r/mm/Makefile1
-rw-r--r--arch/m32r/mm/cache.c1
-rw-r--r--arch/m32r/mm/discontig.c1
-rw-r--r--arch/m32r/mm/extable.c1
-rw-r--r--arch/m32r/mm/fault-nommu.c1
-rw-r--r--arch/m32r/mm/fault.c1
-rw-r--r--arch/m32r/mm/init.c1
-rw-r--r--arch/m32r/mm/mmu.S1
-rw-r--r--arch/m32r/oprofile/Makefile1
-rw-r--r--arch/m32r/platforms/Makefile1
-rw-r--r--arch/m32r/platforms/m32104ut/io.c1
-rw-r--r--arch/m32r/platforms/m32104ut/setup.c1
-rw-r--r--arch/m32r/platforms/mappi/io.c1
-rw-r--r--arch/m32r/platforms/mappi/setup.c1
-rw-r--r--arch/m32r/platforms/mappi2/io.c1
-rw-r--r--arch/m32r/platforms/mappi2/setup.c1
-rw-r--r--arch/m32r/platforms/mappi3/io.c1
-rw-r--r--arch/m32r/platforms/mappi3/setup.c1
-rw-r--r--arch/m32r/platforms/oaks32r/io.c1
-rw-r--r--arch/m32r/platforms/oaks32r/setup.c1
-rw-r--r--arch/m32r/platforms/usrv/setup.c1
-rw-r--r--arch/m68k/68000/Makefile1
-rw-r--r--arch/m68k/68000/bootlogo-vz.h1
-rw-r--r--arch/m68k/68000/bootlogo.h1
-rw-r--r--arch/m68k/68000/head.S1
-rw-r--r--arch/m68k/Kconfig1
-rw-r--r--arch/m68k/Kconfig.bus1
-rw-r--r--arch/m68k/Kconfig.cpu1
-rw-r--r--arch/m68k/Kconfig.debug1
-rw-r--r--arch/m68k/Kconfig.devices1
-rw-r--r--arch/m68k/Kconfig.machine1
-rw-r--r--arch/m68k/amiga/chipram.c1
-rw-r--r--arch/m68k/apollo/config.c1
-rw-r--r--arch/m68k/apollo/dn_ints.c1
-rw-r--r--arch/m68k/bvme6000/rtc.c1
-rw-r--r--arch/m68k/coldfire/Makefile1
-rw-r--r--arch/m68k/coldfire/cache.c1
-rw-r--r--arch/m68k/coldfire/clk.c1
-rw-r--r--arch/m68k/coldfire/dma.c1
-rw-r--r--arch/m68k/coldfire/dma_timer.c1
-rw-r--r--arch/m68k/coldfire/firebee.c1
-rw-r--r--arch/m68k/coldfire/head.S1
-rw-r--r--arch/m68k/coldfire/m5206.c1
-rw-r--r--arch/m68k/coldfire/m520x.c1
-rw-r--r--arch/m68k/coldfire/m523x.c1
-rw-r--r--arch/m68k/coldfire/m5249.c1
-rw-r--r--arch/m68k/coldfire/m525x.c1
-rw-r--r--arch/m68k/coldfire/m5272.c1
-rw-r--r--arch/m68k/coldfire/m527x.c1
-rw-r--r--arch/m68k/coldfire/m528x.c1
-rw-r--r--arch/m68k/coldfire/m5307.c1
-rw-r--r--arch/m68k/coldfire/m5407.c1
-rw-r--r--arch/m68k/coldfire/m5441x.c1
-rw-r--r--arch/m68k/coldfire/m54xx.c1
-rw-r--r--arch/m68k/coldfire/nettel.c1
-rw-r--r--arch/m68k/coldfire/pit.c1
-rw-r--r--arch/m68k/coldfire/sltimers.c1
-rw-r--r--arch/m68k/coldfire/timers.c1
-rw-r--r--arch/m68k/coldfire/vectors.c1
-rw-r--r--arch/m68k/fpsp040/Makefile1
-rw-r--r--arch/m68k/hp300/config.c1
-rw-r--r--arch/m68k/hp300/time.c1
-rw-r--r--arch/m68k/include/asm/MC68328.h1
-rw-r--r--arch/m68k/include/asm/MC68EZ328.h1
-rw-r--r--arch/m68k/include/asm/MC68VZ328.h1
-rw-r--r--arch/m68k/include/asm/adb_iop.h1
-rw-r--r--arch/m68k/include/asm/apollohw.h1
-rw-r--r--arch/m68k/include/asm/atafd.h1
-rw-r--r--arch/m68k/include/asm/atafdreg.h1
-rw-r--r--arch/m68k/include/asm/atari_joystick.h1
-rw-r--r--arch/m68k/include/asm/atari_stdma.h1
-rw-r--r--arch/m68k/include/asm/atari_stram.h1
-rw-r--r--arch/m68k/include/asm/atomic.h1
-rw-r--r--arch/m68k/include/asm/bootstd.h1
-rw-r--r--arch/m68k/include/asm/bug.h1
-rw-r--r--arch/m68k/include/asm/bugs.h1
-rw-r--r--arch/m68k/include/asm/bvme6000hw.h1
-rw-r--r--arch/m68k/include/asm/cache.h1
-rw-r--r--arch/m68k/include/asm/cacheflush.h1
-rw-r--r--arch/m68k/include/asm/cacheflush_mm.h1
-rw-r--r--arch/m68k/include/asm/cacheflush_no.h1
-rw-r--r--arch/m68k/include/asm/checksum.h1
-rw-r--r--arch/m68k/include/asm/cmpxchg.h1
-rw-r--r--arch/m68k/include/asm/coldfire.h1
-rw-r--r--arch/m68k/include/asm/contregs.h1
-rw-r--r--arch/m68k/include/asm/current.h1
-rw-r--r--arch/m68k/include/asm/delay.h1
-rw-r--r--arch/m68k/include/asm/div64.h1
-rw-r--r--arch/m68k/include/asm/dma-mapping.h1
-rw-r--r--arch/m68k/include/asm/dma.h1
-rw-r--r--arch/m68k/include/asm/dvma.h1
-rw-r--r--arch/m68k/include/asm/elf.h1
-rw-r--r--arch/m68k/include/asm/entry.h1
-rw-r--r--arch/m68k/include/asm/fb.h1
-rw-r--r--arch/m68k/include/asm/fbio.h1
-rw-r--r--arch/m68k/include/asm/flat.h1
-rw-r--r--arch/m68k/include/asm/fpu.h1
-rw-r--r--arch/m68k/include/asm/hardirq.h1
-rw-r--r--arch/m68k/include/asm/hash.h1
-rw-r--r--arch/m68k/include/asm/hp300hw.h1
-rw-r--r--arch/m68k/include/asm/hwtest.h1
-rw-r--r--arch/m68k/include/asm/ide.h1
-rw-r--r--arch/m68k/include/asm/idprom.h1
-rw-r--r--arch/m68k/include/asm/intersil.h1
-rw-r--r--arch/m68k/include/asm/io.h1
-rw-r--r--arch/m68k/include/asm/io_mm.h1
-rw-r--r--arch/m68k/include/asm/io_no.h1
-rw-r--r--arch/m68k/include/asm/irq.h1
-rw-r--r--arch/m68k/include/asm/irqflags.h1
-rw-r--r--arch/m68k/include/asm/kexec.h1
-rw-r--r--arch/m68k/include/asm/linkage.h1
-rw-r--r--arch/m68k/include/asm/m5206sim.h1
-rw-r--r--arch/m68k/include/asm/m520xsim.h1
-rw-r--r--arch/m68k/include/asm/m523xsim.h1
-rw-r--r--arch/m68k/include/asm/m525xsim.h1
-rw-r--r--arch/m68k/include/asm/m5272sim.h1
-rw-r--r--arch/m68k/include/asm/m527xsim.h1
-rw-r--r--arch/m68k/include/asm/m528xsim.h1
-rw-r--r--arch/m68k/include/asm/m52xxacr.h1
-rw-r--r--arch/m68k/include/asm/m5307sim.h1
-rw-r--r--arch/m68k/include/asm/m53xxacr.h1
-rw-r--r--arch/m68k/include/asm/m53xxsim.h1
-rw-r--r--arch/m68k/include/asm/m5407sim.h1
-rw-r--r--arch/m68k/include/asm/m5441xsim.h1
-rw-r--r--arch/m68k/include/asm/m54xxacr.h1
-rw-r--r--arch/m68k/include/asm/m54xxgpt.h1
-rw-r--r--arch/m68k/include/asm/m54xxsim.h1
-rw-r--r--arch/m68k/include/asm/mac_asc.h1
-rw-r--r--arch/m68k/include/asm/mac_baboon.h1
-rw-r--r--arch/m68k/include/asm/mac_iop.h1
-rw-r--r--arch/m68k/include/asm/mac_oss.h1
-rw-r--r--arch/m68k/include/asm/mac_psc.h1
-rw-r--r--arch/m68k/include/asm/mac_via.h1
-rw-r--r--arch/m68k/include/asm/machdep.h1
-rw-r--r--arch/m68k/include/asm/machines.h1
-rw-r--r--arch/m68k/include/asm/macintosh.h1
-rw-r--r--arch/m68k/include/asm/math-emu.h1
-rw-r--r--arch/m68k/include/asm/mc146818rtc.h1
-rw-r--r--arch/m68k/include/asm/mcf8390.h1
-rw-r--r--arch/m68k/include/asm/mcf_pgalloc.h1
-rw-r--r--arch/m68k/include/asm/mcf_pgtable.h1
-rw-r--r--arch/m68k/include/asm/mcfclk.h1
-rw-r--r--arch/m68k/include/asm/mcfdma.h1
-rw-r--r--arch/m68k/include/asm/mcfintc.h1
-rw-r--r--arch/m68k/include/asm/mcfpit.h1
-rw-r--r--arch/m68k/include/asm/mcfsim.h1
-rw-r--r--arch/m68k/include/asm/mcfslt.h1
-rw-r--r--arch/m68k/include/asm/mcftimer.h1
-rw-r--r--arch/m68k/include/asm/mcfuart.h1
-rw-r--r--arch/m68k/include/asm/mcfwdebug.h1
-rw-r--r--arch/m68k/include/asm/mmu.h1
-rw-r--r--arch/m68k/include/asm/mmu_context.h1
-rw-r--r--arch/m68k/include/asm/mmzone.h1
-rw-r--r--arch/m68k/include/asm/module.h1
-rw-r--r--arch/m68k/include/asm/motorola_pgalloc.h1
-rw-r--r--arch/m68k/include/asm/motorola_pgtable.h1
-rw-r--r--arch/m68k/include/asm/movs.h1
-rw-r--r--arch/m68k/include/asm/mvme147hw.h1
-rw-r--r--arch/m68k/include/asm/mvme16xhw.h1
-rw-r--r--arch/m68k/include/asm/nettel.h1
-rw-r--r--arch/m68k/include/asm/nubus.h1
-rw-r--r--arch/m68k/include/asm/openprom.h1
-rw-r--r--arch/m68k/include/asm/oplib.h1
-rw-r--r--arch/m68k/include/asm/page.h1
-rw-r--r--arch/m68k/include/asm/page_mm.h1
-rw-r--r--arch/m68k/include/asm/page_no.h1
-rw-r--r--arch/m68k/include/asm/page_offset.h1
-rw-r--r--arch/m68k/include/asm/parport.h1
-rw-r--r--arch/m68k/include/asm/pci.h1
-rw-r--r--arch/m68k/include/asm/pgalloc.h1
-rw-r--r--arch/m68k/include/asm/pgtable.h1
-rw-r--r--arch/m68k/include/asm/pgtable_mm.h1
-rw-r--r--arch/m68k/include/asm/pgtable_no.h1
-rw-r--r--arch/m68k/include/asm/processor.h1
-rw-r--r--arch/m68k/include/asm/ptrace.h1
-rw-r--r--arch/m68k/include/asm/q40_master.h1
-rw-r--r--arch/m68k/include/asm/q40ints.h1
-rw-r--r--arch/m68k/include/asm/quicc_simple.h1
-rw-r--r--arch/m68k/include/asm/raw_io.h1
-rw-r--r--arch/m68k/include/asm/segment.h1
-rw-r--r--arch/m68k/include/asm/serial.h1
-rw-r--r--arch/m68k/include/asm/signal.h1
-rw-r--r--arch/m68k/include/asm/string.h1
-rw-r--r--arch/m68k/include/asm/sun3-head.h1
-rw-r--r--arch/m68k/include/asm/sun3_pgalloc.h1
-rw-r--r--arch/m68k/include/asm/sun3_pgtable.h1
-rw-r--r--arch/m68k/include/asm/sun3mmu.h1
-rw-r--r--arch/m68k/include/asm/sun3x.h1
-rw-r--r--arch/m68k/include/asm/sun3xflop.h1
-rw-r--r--arch/m68k/include/asm/sun3xprom.h1
-rw-r--r--arch/m68k/include/asm/switch_to.h1
-rw-r--r--arch/m68k/include/asm/thread_info.h1
-rw-r--r--arch/m68k/include/asm/timex.h1
-rw-r--r--arch/m68k/include/asm/tlb.h1
-rw-r--r--arch/m68k/include/asm/tlbflush.h1
-rw-r--r--arch/m68k/include/asm/uaccess.h1
-rw-r--r--arch/m68k/include/asm/uaccess_mm.h1
-rw-r--r--arch/m68k/include/asm/uaccess_no.h1
-rw-r--r--arch/m68k/include/asm/ucontext.h1
-rw-r--r--arch/m68k/include/asm/unaligned.h1
-rw-r--r--arch/m68k/include/asm/unistd.h1
-rw-r--r--arch/m68k/include/asm/user.h1
-rw-r--r--arch/m68k/include/asm/vga.h1
-rw-r--r--arch/m68k/include/asm/virtconvert.h1
-rw-r--r--arch/m68k/include/asm/zorro.h1
-rw-r--r--arch/m68k/include/uapi/asm/a.out.h1
-rw-r--r--arch/m68k/include/uapi/asm/bootinfo-amiga.h1
-rw-r--r--arch/m68k/include/uapi/asm/bootinfo-apollo.h1
-rw-r--r--arch/m68k/include/uapi/asm/bootinfo-atari.h1
-rw-r--r--arch/m68k/include/uapi/asm/bootinfo-hp300.h1
-rw-r--r--arch/m68k/include/uapi/asm/bootinfo-mac.h1
-rw-r--r--arch/m68k/include/uapi/asm/bootinfo-q40.h1
-rw-r--r--arch/m68k/include/uapi/asm/bootinfo-vme.h1
-rw-r--r--arch/m68k/include/uapi/asm/bootinfo.h1
-rw-r--r--arch/m68k/include/uapi/asm/byteorder.h1
-rw-r--r--arch/m68k/include/uapi/asm/cachectl.h1
-rw-r--r--arch/m68k/include/uapi/asm/fcntl.h1
-rw-r--r--arch/m68k/include/uapi/asm/ioctls.h1
-rw-r--r--arch/m68k/include/uapi/asm/param.h1
-rw-r--r--arch/m68k/include/uapi/asm/poll.h1
-rw-r--r--arch/m68k/include/uapi/asm/posix_types.h1
-rw-r--r--arch/m68k/include/uapi/asm/ptrace.h1
-rw-r--r--arch/m68k/include/uapi/asm/setup.h1
-rw-r--r--arch/m68k/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/m68k/include/uapi/asm/signal.h1
-rw-r--r--arch/m68k/include/uapi/asm/stat.h1
-rw-r--r--arch/m68k/include/uapi/asm/swab.h1
-rw-r--r--arch/m68k/include/uapi/asm/unistd.h1
-rw-r--r--arch/m68k/kernel/Makefile1
-rw-r--r--arch/m68k/kernel/asm-offsets.c1
-rw-r--r--arch/m68k/kernel/bootinfo_proc.c1
-rw-r--r--arch/m68k/kernel/machine_kexec.c1
-rw-r--r--arch/m68k/kernel/process.c1
-rw-r--r--arch/m68k/kernel/relocate_kernel.S1
-rw-r--r--arch/m68k/kernel/setup.c1
-rw-r--r--arch/m68k/kernel/setup_mm.c1
-rw-r--r--arch/m68k/kernel/setup_no.c1
-rw-r--r--arch/m68k/kernel/sun3-head.S1
-rw-r--r--arch/m68k/kernel/sys_m68k.c1
-rw-r--r--arch/m68k/kernel/syscalltable.S1
-rw-r--r--arch/m68k/kernel/vmlinux-nommu.lds1
-rw-r--r--arch/m68k/kernel/vmlinux-std.lds1
-rw-r--r--arch/m68k/kernel/vmlinux-sun3.lds1
-rw-r--r--arch/m68k/kernel/vmlinux.lds.S1
-rw-r--r--arch/m68k/lib/Makefile1
-rw-r--r--arch/m68k/mac/baboon.c1
-rw-r--r--arch/m68k/mac/mac_penguin.S1
-rw-r--r--arch/m68k/mac/macboing.c1
-rw-r--r--arch/m68k/mac/macints.c1
-rw-r--r--arch/m68k/mac/misc.c1
-rw-r--r--arch/m68k/mac/oss.c1
-rw-r--r--arch/m68k/mac/via.c1
-rw-r--r--arch/m68k/mm/Makefile1
-rw-r--r--arch/m68k/mm/cache.c1
-rw-r--r--arch/m68k/mm/fault.c1
-rw-r--r--arch/m68k/mm/hwtest.c1
-rw-r--r--arch/m68k/mm/init.c1
-rw-r--r--arch/m68k/mm/kmap.c1
-rw-r--r--arch/m68k/mm/mcfmmu.c1
-rw-r--r--arch/m68k/mm/memory.c1
-rw-r--r--arch/m68k/mm/motorola.c1
-rw-r--r--arch/m68k/mm/sun3mmu.c1
-rw-r--r--arch/m68k/mvme16x/rtc.c1
-rw-r--r--arch/m68k/sun3/dvma.c1
-rw-r--r--arch/m68k/sun3/idprom.c1
-rw-r--r--arch/m68k/sun3/leds.c1
-rw-r--r--arch/m68k/sun3/mmu_emu.c1
-rw-r--r--arch/m68k/sun3/prom/console.c1
-rw-r--r--arch/m68k/sun3/prom/init.c1
-rw-r--r--arch/m68k/sun3/prom/misc.c1
-rw-r--r--arch/m68k/sun3/prom/printf.c1
-rw-r--r--arch/m68k/sun3/sun3dvma.c1
-rw-r--r--arch/m68k/sun3x/config.c1
-rw-r--r--arch/m68k/sun3x/dvma.c1
-rw-r--r--arch/m68k/sun3x/prom.c1
-rw-r--r--arch/m68k/sun3x/time.c1
-rw-r--r--arch/m68k/sun3x/time.h1
-rw-r--r--arch/m68k/tools/amiga/Makefile1
-rw-r--r--arch/metag/Kconfig1
-rw-r--r--arch/metag/Kconfig.debug1
-rw-r--r--arch/metag/Kconfig.soc1
-rw-r--r--arch/metag/boot/dts/Makefile1
-rw-r--r--arch/metag/boot/dts/skeleton.dtsi1
-rw-r--r--arch/metag/include/asm/atomic.h1
-rw-r--r--arch/metag/include/asm/atomic_lnkget.h1
-rw-r--r--arch/metag/include/asm/atomic_lock1.h1
-rw-r--r--arch/metag/include/asm/barrier.h1
-rw-r--r--arch/metag/include/asm/bitops.h1
-rw-r--r--arch/metag/include/asm/bug.h1
-rw-r--r--arch/metag/include/asm/cache.h1
-rw-r--r--arch/metag/include/asm/cacheflush.h1
-rw-r--r--arch/metag/include/asm/cachepart.h1
-rw-r--r--arch/metag/include/asm/checksum.h1
-rw-r--r--arch/metag/include/asm/cmpxchg.h1
-rw-r--r--arch/metag/include/asm/cmpxchg_irq.h1
-rw-r--r--arch/metag/include/asm/cmpxchg_lnkget.h1
-rw-r--r--arch/metag/include/asm/cmpxchg_lock1.h1
-rw-r--r--arch/metag/include/asm/core_reg.h1
-rw-r--r--arch/metag/include/asm/cpu.h1
-rw-r--r--arch/metag/include/asm/da.h1
-rw-r--r--arch/metag/include/asm/delay.h1
-rw-r--r--arch/metag/include/asm/div64.h1
-rw-r--r--arch/metag/include/asm/dma-mapping.h1
-rw-r--r--arch/metag/include/asm/elf.h1
-rw-r--r--arch/metag/include/asm/ftrace.h1
-rw-r--r--arch/metag/include/asm/global_lock.h1
-rw-r--r--arch/metag/include/asm/highmem.h1
-rw-r--r--arch/metag/include/asm/hugetlb.h1
-rw-r--r--arch/metag/include/asm/hwthread.h1
-rw-r--r--arch/metag/include/asm/io.h1
-rw-r--r--arch/metag/include/asm/irq.h1
-rw-r--r--arch/metag/include/asm/irqflags.h1
-rw-r--r--arch/metag/include/asm/l2cache.h1
-rw-r--r--arch/metag/include/asm/linkage.h1
-rw-r--r--arch/metag/include/asm/mman.h1
-rw-r--r--arch/metag/include/asm/mmu.h1
-rw-r--r--arch/metag/include/asm/mmu_context.h1
-rw-r--r--arch/metag/include/asm/mmzone.h1
-rw-r--r--arch/metag/include/asm/module.h1
-rw-r--r--arch/metag/include/asm/page.h1
-rw-r--r--arch/metag/include/asm/pgalloc.h1
-rw-r--r--arch/metag/include/asm/pgtable-bits.h1
-rw-r--r--arch/metag/include/asm/pgtable.h1
-rw-r--r--arch/metag/include/asm/processor.h4
-rw-r--r--arch/metag/include/asm/ptrace.h1
-rw-r--r--arch/metag/include/asm/setup.h1
-rw-r--r--arch/metag/include/asm/smp.h1
-rw-r--r--arch/metag/include/asm/sparsemem.h1
-rw-r--r--arch/metag/include/asm/spinlock.h1
-rw-r--r--arch/metag/include/asm/spinlock_lnkget.h1
-rw-r--r--arch/metag/include/asm/spinlock_lock1.h1
-rw-r--r--arch/metag/include/asm/spinlock_types.h1
-rw-r--r--arch/metag/include/asm/stacktrace.h1
-rw-r--r--arch/metag/include/asm/string.h1
-rw-r--r--arch/metag/include/asm/syscalls.h1
-rw-r--r--arch/metag/include/asm/tcm.h1
-rw-r--r--arch/metag/include/asm/thread_info.h1
-rw-r--r--arch/metag/include/asm/tlb.h1
-rw-r--r--arch/metag/include/asm/tlbflush.h1
-rw-r--r--arch/metag/include/asm/topology.h1
-rw-r--r--arch/metag/include/asm/uaccess.h1
-rw-r--r--arch/metag/include/asm/user_gateway.h1
-rw-r--r--arch/metag/include/uapi/asm/byteorder.h1
-rw-r--r--arch/metag/include/uapi/asm/ech.h1
-rw-r--r--arch/metag/include/uapi/asm/ptrace.h1
-rw-r--r--arch/metag/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/metag/include/uapi/asm/siginfo.h1
-rw-r--r--arch/metag/include/uapi/asm/swab.h1
-rw-r--r--arch/metag/include/uapi/asm/unistd.h1
-rw-r--r--arch/metag/kernel/Makefile1
-rw-r--r--arch/metag/kernel/asm-offsets.c1
-rw-r--r--arch/metag/kernel/cachepart.c1
-rw-r--r--arch/metag/kernel/core_reg.c1
-rw-r--r--arch/metag/kernel/head.S1
-rw-r--r--arch/metag/kernel/irq.c1
-rw-r--r--arch/metag/kernel/machines.c1
-rw-r--r--arch/metag/kernel/metag_ksyms.c1
-rw-r--r--arch/metag/kernel/perf_callchain.c1
-rw-r--r--arch/metag/kernel/process.c1
-rw-r--r--arch/metag/kernel/signal.c1
-rw-r--r--arch/metag/kernel/sys_metag.c1
-rw-r--r--arch/metag/kernel/tbiunexp.S1
-rw-r--r--arch/metag/kernel/tcm.c1
-rw-r--r--arch/metag/kernel/time.c1
-rw-r--r--arch/metag/kernel/user_gateway.S1
-rw-r--r--arch/metag/kernel/vmlinux.lds.S1
-rw-r--r--arch/metag/lib/Makefile1
-rw-r--r--arch/metag/lib/ashldi3.S1
-rw-r--r--arch/metag/lib/ashrdi3.S1
-rw-r--r--arch/metag/lib/clear_page.S1
-rw-r--r--arch/metag/lib/cmpdi2.S1
-rw-r--r--arch/metag/lib/copy_page.S1
-rw-r--r--arch/metag/lib/delay.c1
-rw-r--r--arch/metag/lib/div64.S1
-rw-r--r--arch/metag/lib/divsi3.S1
-rw-r--r--arch/metag/lib/ip_fast_csum.S1
-rw-r--r--arch/metag/lib/lshrdi3.S1
-rw-r--r--arch/metag/lib/memcpy.S1
-rw-r--r--arch/metag/lib/memmove.S1
-rw-r--r--arch/metag/lib/memset.S1
-rw-r--r--arch/metag/lib/modsi3.S1
-rw-r--r--arch/metag/lib/muldi3.S1
-rw-r--r--arch/metag/lib/ucmpdi2.S1
-rw-r--r--arch/metag/lib/usercopy.c1
-rw-r--r--arch/metag/mm/Kconfig1
-rw-r--r--arch/metag/mm/Makefile1
-rw-r--r--arch/metag/mm/extable.c1
-rw-r--r--arch/metag/mm/fault.c1
-rw-r--r--arch/metag/mm/highmem.c1
-rw-r--r--arch/metag/mm/hugetlbpage.c1
-rw-r--r--arch/metag/mm/init.c1
-rw-r--r--arch/metag/mm/ioremap.c1
-rw-r--r--arch/metag/mm/l2cache.c1
-rw-r--r--arch/metag/mm/maccess.c1
-rw-r--r--arch/metag/mm/mmu-meta1.c1
-rw-r--r--arch/metag/mm/mmu-meta2.c1
-rw-r--r--arch/metag/oprofile/Makefile1
-rw-r--r--arch/metag/oprofile/backtrace.h1
-rw-r--r--arch/metag/tbx/Makefile1
-rw-r--r--arch/microblaze/Kconfig2
-rw-r--r--arch/microblaze/Makefile1
-rw-r--r--arch/microblaze/boot/Makefile1
-rw-r--r--arch/microblaze/boot/dts/Makefile1
-rw-r--r--arch/microblaze/include/asm/asm-compat.h1
-rw-r--r--arch/microblaze/include/asm/atomic.h1
-rw-r--r--arch/microblaze/include/asm/cmpxchg.h1
-rw-r--r--arch/microblaze/include/asm/ftrace.h1
-rw-r--r--arch/microblaze/include/asm/futex.h1
-rw-r--r--arch/microblaze/include/asm/hash.h1
-rw-r--r--arch/microblaze/include/asm/highmem.h1
-rw-r--r--arch/microblaze/include/asm/kgdb.h1
-rw-r--r--arch/microblaze/include/asm/mmu_context.h1
-rw-r--r--arch/microblaze/include/asm/seccomp.h1
-rw-r--r--arch/microblaze/include/asm/syscall.h1
-rw-r--r--arch/microblaze/include/uapi/asm/Kbuild1
-rw-r--r--arch/microblaze/include/uapi/asm/auxvec.h1
-rw-r--r--arch/microblaze/include/uapi/asm/byteorder.h1
-rw-r--r--arch/microblaze/include/uapi/asm/elf.h1
-rw-r--r--arch/microblaze/include/uapi/asm/posix_types.h1
-rw-r--r--arch/microblaze/include/uapi/asm/ptrace.h1
-rw-r--r--arch/microblaze/include/uapi/asm/setup.h1
-rw-r--r--arch/microblaze/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/microblaze/include/uapi/asm/unistd.h1
-rw-r--r--arch/microblaze/kernel/Makefile1
-rw-r--r--arch/microblaze/kernel/cpu/Makefile1
-rw-r--r--arch/microblaze/kernel/dma.c3
-rw-r--r--arch/microblaze/kernel/syscall_table.S1
-rw-r--r--arch/microblaze/lib/Makefile1
-rw-r--r--arch/microblaze/lib/ashldi3.c1
-rw-r--r--arch/microblaze/lib/ashrdi3.c1
-rw-r--r--arch/microblaze/lib/cmpdi2.c1
-rw-r--r--arch/microblaze/lib/divsi3.S1
-rw-r--r--arch/microblaze/lib/libgcc.h1
-rw-r--r--arch/microblaze/lib/lshrdi3.c1
-rw-r--r--arch/microblaze/lib/modsi3.S1
-rw-r--r--arch/microblaze/lib/muldi3.c1
-rw-r--r--arch/microblaze/lib/mulsi3.S1
-rw-r--r--arch/microblaze/lib/ucmpdi2.c1
-rw-r--r--arch/microblaze/lib/udivsi3.S1
-rw-r--r--arch/microblaze/lib/umodsi3.S1
-rw-r--r--arch/microblaze/mm/highmem.c1
-rw-r--r--arch/microblaze/oprofile/Makefile1
-rw-r--r--arch/microblaze/pci/iomap.c1
-rw-r--r--arch/mips/Kconfig22
-rw-r--r--arch/mips/Kconfig.debug1
-rw-r--r--arch/mips/Makefile31
-rw-r--r--arch/mips/Makefile.postlink1
-rw-r--r--arch/mips/alchemy/Kconfig1
-rw-r--r--arch/mips/alchemy/common/clock.c1
-rw-r--r--arch/mips/alchemy/devboards/db1200.c64
-rw-r--r--arch/mips/alchemy/devboards/db1300.c32
-rw-r--r--arch/mips/alchemy/devboards/db1550.c1
-rw-r--r--arch/mips/alchemy/devboards/db1xxx.c3
-rw-r--r--arch/mips/alchemy/devboards/platform.c1
-rw-r--r--arch/mips/alchemy/devboards/platform.h1
-rw-r--r--arch/mips/alchemy/devboards/pm.c1
-rw-r--r--arch/mips/ar7/Makefile1
-rw-r--r--arch/mips/ar7/clock.c3
-rw-r--r--arch/mips/ath25/Kconfig1
-rw-r--r--arch/mips/ath25/ar2315.h1
-rw-r--r--arch/mips/ath25/ar5312.h1
-rw-r--r--arch/mips/ath25/devices.c1
-rw-r--r--arch/mips/ath25/devices.h1
-rw-r--r--arch/mips/ath79/Kconfig1
-rw-r--r--arch/mips/ath79/clock.c9
-rw-r--r--arch/mips/ath79/pci.c12
-rw-r--r--arch/mips/bcm47xx/Kconfig1
-rw-r--r--arch/mips/bcm47xx/bcm47xx_private.h1
-rw-r--r--arch/mips/bcm47xx/board.c1
-rw-r--r--arch/mips/bcm47xx/buttons.c1
-rw-r--r--arch/mips/bcm47xx/leds.c1
-rw-r--r--arch/mips/bcm47xx/workarounds.c1
-rw-r--r--arch/mips/bcm63xx/Kconfig1
-rw-r--r--arch/mips/bcm63xx/Makefile1
-rw-r--r--arch/mips/bcm63xx/boards/Kconfig1
-rw-r--r--arch/mips/bcm63xx/clk.c3
-rw-r--r--arch/mips/bmips/Kconfig1
-rw-r--r--arch/mips/boot/Makefile16
-rw-r--r--arch/mips/boot/compressed/dbg.c1
-rw-r--r--arch/mips/boot/compressed/string.c1
-rw-r--r--arch/mips/boot/compressed/uart-16550.c1
-rw-r--r--arch/mips/boot/compressed/uart-alchemy.c1
-rw-r--r--arch/mips/boot/compressed/uart-prom.c1
-rw-r--r--arch/mips/boot/dts/Makefile2
-rw-r--r--arch/mips/boot/dts/brcm/Makefile1
-rw-r--r--arch/mips/boot/dts/brcm/bcm3368-netgear-cvg834g.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm3368.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm3384_viper.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm3384_zephyr.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm63268-comtrend-vr-3032u.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm63268.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm6328.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm6358-neufbox4-sercomm.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm6358.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm6362-neufbox6-sercomm.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm6362.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm6368.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm7125.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm7346.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm7358.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm7360.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm7362.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm7420.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm7425.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm7435.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm93384wvg.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm93384wvg_viper.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm96368mvwg.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm97125cbmb.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm97346dbsmb.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm97358svmb.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm97360svmb.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm97362svmb.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm97420c.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm97425svmb.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm97435svmb.dts1
-rw-r--r--arch/mips/boot/dts/brcm/bcm97xxx-nand-cs1-bch24.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm97xxx-nand-cs1-bch4.dtsi1
-rw-r--r--arch/mips/boot/dts/brcm/bcm9ejtagprb.dts1
-rw-r--r--arch/mips/boot/dts/cavium-octeon/Makefile1
-rw-r--r--arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dts1
-rw-r--r--arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dtsi1
-rw-r--r--arch/mips/boot/dts/cavium-octeon/octeon_68xx.dts1
-rw-r--r--arch/mips/boot/dts/img/Makefile1
-rw-r--r--arch/mips/boot/dts/img/boston.dts1
-rw-r--r--arch/mips/boot/dts/ingenic/Makefile1
-rw-r--r--arch/mips/boot/dts/ingenic/ci20.dts38
-rw-r--r--arch/mips/boot/dts/ingenic/jz4740.dtsi1
-rw-r--r--arch/mips/boot/dts/ingenic/jz4780.dtsi12
-rw-r--r--arch/mips/boot/dts/ingenic/qi_lb60.dts1
-rw-r--r--arch/mips/boot/dts/lantiq/Makefile1
-rw-r--r--arch/mips/boot/dts/lantiq/danube.dtsi1
-rw-r--r--arch/mips/boot/dts/lantiq/easy50712.dts1
-rw-r--r--arch/mips/boot/dts/mti/Makefile1
-rw-r--r--arch/mips/boot/dts/mti/malta.dts1
-rw-r--r--arch/mips/boot/dts/mti/sead3.dts1
-rw-r--r--arch/mips/boot/dts/netlogic/Makefile1
-rw-r--r--arch/mips/boot/dts/netlogic/xlp_evp.dts1
-rw-r--r--arch/mips/boot/dts/netlogic/xlp_fvp.dts1
-rw-r--r--arch/mips/boot/dts/netlogic/xlp_gvp.dts1
-rw-r--r--arch/mips/boot/dts/netlogic/xlp_rvp.dts1
-rw-r--r--arch/mips/boot/dts/netlogic/xlp_svp.dts1
-rw-r--r--arch/mips/boot/dts/ni/169445.dts100
-rw-r--r--arch/mips/boot/dts/ni/Makefile7
-rw-r--r--arch/mips/boot/dts/pic32/Makefile1
-rw-r--r--arch/mips/boot/dts/qca/Makefile1
-rw-r--r--arch/mips/boot/dts/qca/ar9132.dtsi1
-rw-r--r--arch/mips/boot/dts/qca/ar9132_tl_wr1043nd_v1.dts1
-rw-r--r--arch/mips/boot/dts/qca/ar9331.dtsi1
-rw-r--r--arch/mips/boot/dts/qca/ar9331_dpt_module.dts1
-rw-r--r--arch/mips/boot/dts/qca/ar9331_dragino_ms14.dts1
-rw-r--r--arch/mips/boot/dts/qca/ar9331_omega.dts1
-rw-r--r--arch/mips/boot/dts/qca/ar9331_tl_mr3020.dts1
-rw-r--r--arch/mips/boot/dts/ralink/Makefile3
-rw-r--r--arch/mips/boot/dts/ralink/mt7620a.dtsi1
-rw-r--r--arch/mips/boot/dts/ralink/mt7620a_eval.dts1
-rw-r--r--arch/mips/boot/dts/ralink/mt7628a.dtsi126
-rw-r--r--arch/mips/boot/dts/ralink/omega2p.dts18
-rw-r--r--arch/mips/boot/dts/ralink/rt2880.dtsi1
-rw-r--r--arch/mips/boot/dts/ralink/rt2880_eval.dts1
-rw-r--r--arch/mips/boot/dts/ralink/rt3050.dtsi1
-rw-r--r--arch/mips/boot/dts/ralink/rt3052_eval.dts1
-rw-r--r--arch/mips/boot/dts/ralink/rt3883.dtsi1
-rw-r--r--arch/mips/boot/dts/ralink/rt3883_eval.dts1
-rw-r--r--arch/mips/boot/dts/ralink/vocore2.dts18
-rw-r--r--arch/mips/boot/dts/xilfpga/Makefile1
-rw-r--r--arch/mips/boot/dts/xilfpga/microAptiv.dtsi1
-rw-r--r--arch/mips/boot/dts/xilfpga/nexys4ddr.dts1
-rw-r--r--arch/mips/boot/ecoff.h1
-rw-r--r--arch/mips/boot/tools/Makefile1
-rw-r--r--arch/mips/boot/tools/relocs.c1
-rw-r--r--arch/mips/boot/tools/relocs.h1
-rw-r--r--arch/mips/boot/tools/relocs_32.c1
-rw-r--r--arch/mips/boot/tools/relocs_64.c1
-rw-r--r--arch/mips/boot/tools/relocs_main.c1
-rw-r--r--arch/mips/cavium-octeon/Kconfig1
-rw-r--r--arch/mips/cavium-octeon/crypto/Makefile1
-rw-r--r--arch/mips/cavium-octeon/executive/Makefile2
-rw-r--r--arch/mips/cavium-octeon/executive/cvmx-boot-vector.c167
-rw-r--r--arch/mips/cavium-octeon/executive/cvmx-bootmem.c85
-rw-r--r--arch/mips/cavium-octeon/octeon-irq.c9
-rw-r--r--arch/mips/cavium-octeon/smp.c14
-rw-r--r--arch/mips/configs/cavium_octeon_defconfig25
-rw-r--r--arch/mips/configs/ci20_defconfig3
-rw-r--r--arch/mips/configs/generic/board-ni169445.config30
-rw-r--r--arch/mips/configs/generic/board-sead-3.config2
-rw-r--r--arch/mips/configs/generic_defconfig3
-rw-r--r--arch/mips/configs/gpr_defconfig4
-rw-r--r--arch/mips/configs/lemote2f_defconfig1
-rw-r--r--arch/mips/configs/malta_defconfig1
-rw-r--r--arch/mips/configs/malta_kvm_defconfig1
-rw-r--r--arch/mips/configs/malta_kvm_guest_defconfig1
-rw-r--r--arch/mips/configs/maltasmvp_defconfig1
-rw-r--r--arch/mips/configs/maltasmvp_eva_defconfig1
-rw-r--r--arch/mips/configs/mtx1_defconfig4
-rw-r--r--arch/mips/configs/nlm_xlp_defconfig1
-rw-r--r--arch/mips/configs/nlm_xlr_defconfig4
-rw-r--r--arch/mips/configs/omega2p_defconfig129
-rw-r--r--arch/mips/configs/pistachio_defconfig5
-rw-r--r--arch/mips/configs/vocore2_defconfig129
-rw-r--r--arch/mips/dec/int-handler.S1
-rw-r--r--arch/mips/dec/prom/cmdline.c1
-rw-r--r--arch/mips/dec/prom/dectypes.h1
-rw-r--r--arch/mips/dec/prom/identify.c1
-rw-r--r--arch/mips/dec/prom/init.c1
-rw-r--r--arch/mips/dec/prom/locore.S1
-rw-r--r--arch/mips/dec/prom/memory.c1
-rw-r--r--arch/mips/dec/reset.c1
-rw-r--r--arch/mips/dec/time.c1
-rw-r--r--arch/mips/fw/arc/Makefile1
-rw-r--r--arch/mips/fw/arc/arc_con.c1
-rw-r--r--arch/mips/fw/arc/init.c2
-rw-r--r--arch/mips/fw/arc/memory.c1
-rw-r--r--arch/mips/fw/arc/salone.c1
-rw-r--r--arch/mips/generic/Kconfig7
-rw-r--r--arch/mips/generic/Makefile2
-rw-r--r--arch/mips/generic/Platform6
-rw-r--r--arch/mips/generic/board-boston.its.S22
-rw-r--r--arch/mips/generic/board-ni169445.its.S22
-rw-r--r--arch/mips/generic/board-sead3.c2
-rw-r--r--arch/mips/generic/init.c7
-rw-r--r--arch/mips/generic/irq.c11
-rw-r--r--arch/mips/generic/proc.c2
-rw-r--r--arch/mips/generic/vmlinux.its.S26
-rw-r--r--arch/mips/generic/yamon-dt.c2
-rw-r--r--arch/mips/include/asm/asm-prototypes.h1
-rw-r--r--arch/mips/include/asm/asm.h3
-rw-r--r--arch/mips/include/asm/asmmacro-32.h1
-rw-r--r--arch/mips/include/asm/asmmacro-64.h1
-rw-r--r--arch/mips/include/asm/bitrev.h1
-rw-r--r--arch/mips/include/asm/bmips-spaces.h1
-rw-r--r--arch/mips/include/asm/bmips.h4
-rw-r--r--arch/mips/include/asm/bug.h1
-rw-r--r--arch/mips/include/asm/bugs.h1
-rw-r--r--arch/mips/include/asm/clock.h1
-rw-r--r--arch/mips/include/asm/cmp.h1
-rw-r--r--arch/mips/include/asm/cmpxchg.h6
-rw-r--r--arch/mips/include/asm/compat-signal.h1
-rw-r--r--arch/mips/include/asm/compat.h1
-rw-r--r--arch/mips/include/asm/cpu-info.h62
-rw-r--r--arch/mips/include/asm/cpu-type.h5
-rw-r--r--arch/mips/include/asm/cpu.h6
-rw-r--r--arch/mips/include/asm/dma-mapping.h1
-rw-r--r--arch/mips/include/asm/dma.h1
-rw-r--r--arch/mips/include/asm/dsemul.h2
-rw-r--r--arch/mips/include/asm/edac.h1
-rw-r--r--arch/mips/include/asm/extable.h1
-rw-r--r--arch/mips/include/asm/floppy.h4
-rw-r--r--arch/mips/include/asm/fpu_emulator.h118
-rw-r--r--arch/mips/include/asm/fw/arc/hinv.h1
-rw-r--r--arch/mips/include/asm/gio_device.h1
-rw-r--r--arch/mips/include/asm/highmem.h1
-rw-r--r--arch/mips/include/asm/hpet.h1
-rw-r--r--arch/mips/include/asm/idle.h1
-rw-r--r--arch/mips/include/asm/io.h2
-rw-r--r--arch/mips/include/asm/isadep.h1
-rw-r--r--arch/mips/include/asm/jazzdma.h1
-rw-r--r--arch/mips/include/asm/kdebug.h1
-rw-r--r--arch/mips/include/asm/kgdb.h1
-rw-r--r--arch/mips/include/asm/kmap_types.h1
-rw-r--r--arch/mips/include/asm/kvm_para.h1
-rw-r--r--arch/mips/include/asm/lasat/ds1603.h1
-rw-r--r--arch/mips/include/asm/lasat/eeprom.h1
-rw-r--r--arch/mips/include/asm/lasat/head.h1
-rw-r--r--arch/mips/include/asm/lasat/lasatint.h1
-rw-r--r--arch/mips/include/asm/lasat/picvue.h1
-rw-r--r--arch/mips/include/asm/lasat/serial.h1
-rw-r--r--arch/mips/include/asm/linkage.h1
-rw-r--r--arch/mips/include/asm/local.h1
-rw-r--r--arch/mips/include/asm/m48t37.h1
-rw-r--r--arch/mips/include/asm/maar.h2
-rw-r--r--arch/mips/include/asm/mach-ath25/ath25_platform.h1
-rw-r--r--arch/mips/include/asm/mach-au1x00/au1200fb.h1
-rw-r--r--arch/mips/include/asm/mach-au1x00/au1550_spi.h1
-rw-r--r--arch/mips/include/asm/mach-au1x00/au1550nd.h1
-rw-r--r--arch/mips/include/asm/mach-au1x00/au1xxx_eth.h1
-rw-r--r--arch/mips/include/asm/mach-au1x00/cpu-feature-overrides.h26
-rw-r--r--arch/mips/include/asm/mach-au1x00/gpio-au1300.h1
-rw-r--r--arch/mips/include/asm/mach-au1x00/prom.h1
-rw-r--r--arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h1
-rw-r--r--arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_board.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_cs.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_hsspi.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pci.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pcmcia.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_spi.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_usb_usbd.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_io.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_irq.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_iudma.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_nvram.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h3
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_reset.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_timer.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/ioremap.h1
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/irq.h1
-rw-r--r--arch/mips/include/asm/mach-bmips/cpu-feature-overrides.h1
-rw-r--r--arch/mips/include/asm/mach-bmips/ioremap.h1
-rw-r--r--arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h6
-rw-r--r--arch/mips/include/asm/mach-db1x00/bcsr.h1
-rw-r--r--arch/mips/include/asm/mach-generic/kmalloc.h1
-rw-r--r--arch/mips/include/asm/mach-ip27/mmzone.h1
-rw-r--r--arch/mips/include/asm/mach-ip27/topology.h2
-rw-r--r--arch/mips/include/asm/mach-ip32/kmalloc.h1
-rw-r--r--arch/mips/include/asm/mach-jz4740/base.h1
-rw-r--r--arch/mips/include/asm/mach-jz4740/jz4740_mmc.h1
-rw-r--r--arch/mips/include/asm/mach-lantiq/lantiq.h2
-rw-r--r--arch/mips/include/asm/mach-lasat/irq.h1
-rw-r--r--arch/mips/include/asm/mach-lasat/mach-gt64120.h1
-rw-r--r--arch/mips/include/asm/mach-loongson64/boot_param.h1
-rw-r--r--arch/mips/include/asm/mach-loongson64/cs5536/cs5536.h1
-rw-r--r--arch/mips/include/asm/mach-loongson64/cs5536/cs5536_mfgpt.h1
-rw-r--r--arch/mips/include/asm/mach-loongson64/cs5536/cs5536_pci.h1
-rw-r--r--arch/mips/include/asm/mach-loongson64/cs5536/cs5536_vsm.h1
-rw-r--r--arch/mips/include/asm/mach-loongson64/irq.h1
-rw-r--r--arch/mips/include/asm/mach-loongson64/loongson.h2
-rw-r--r--arch/mips/include/asm/mach-loongson64/loongson_hwmon.h1
-rw-r--r--arch/mips/include/asm/mach-loongson64/spaces.h1
-rw-r--r--arch/mips/include/asm/mach-loongson64/topology.h2
-rw-r--r--arch/mips/include/asm/mach-loongson64/workarounds.h1
-rw-r--r--arch/mips/include/asm/mach-malta/irq.h1
-rw-r--r--arch/mips/include/asm/mach-malta/mach-gt64120.h1
-rw-r--r--arch/mips/include/asm/mach-malta/malta-dtshim.h2
-rw-r--r--arch/mips/include/asm/mach-malta/malta-pm.h2
-rw-r--r--arch/mips/include/asm/mach-ralink/irq.h1
-rw-r--r--arch/mips/include/asm/mach-rc32434/dma.h1
-rw-r--r--arch/mips/include/asm/mach-rc32434/dma_v.h1
-rw-r--r--arch/mips/include/asm/mach-rc32434/gpio.h1
-rw-r--r--arch/mips/include/asm/mach-rc32434/irq.h1
-rw-r--r--arch/mips/include/asm/mach-rc32434/rc32434.h1
-rw-r--r--arch/mips/include/asm/mach-tx39xx/mangle-port.h1
-rw-r--r--arch/mips/include/asm/mach-tx49xx/cpu-feature-overrides.h1
-rw-r--r--arch/mips/include/asm/mach-tx49xx/kmalloc.h1
-rw-r--r--arch/mips/include/asm/mach-tx49xx/mangle-port.h1
-rw-r--r--arch/mips/include/asm/mach-vr41xx/irq.h1
-rw-r--r--arch/mips/include/asm/machine.h2
-rw-r--r--arch/mips/include/asm/mips-boards/launch.h1
-rw-r--r--arch/mips/include/asm/mips-boards/maltaint.h5
-rw-r--r--arch/mips/include/asm/mips-cm.h569
-rw-r--r--arch/mips/include/asm/mips-cpc.h179
-rw-r--r--arch/mips/include/asm/mips-cps.h240
-rw-r--r--arch/mips/include/asm/mips-gic.h347
-rw-r--r--arch/mips/include/asm/mips_mt.h1
-rw-r--r--arch/mips/include/asm/mipsmtregs.h1
-rw-r--r--arch/mips/include/asm/mipsprom.h1
-rw-r--r--arch/mips/include/asm/mipsregs.h28
-rw-r--r--arch/mips/include/asm/mmu.h1
-rw-r--r--arch/mips/include/asm/mmzone.h1
-rw-r--r--arch/mips/include/asm/module.h3
-rw-r--r--arch/mips/include/asm/msa.h2
-rw-r--r--arch/mips/include/asm/netlogic/common.h2
-rw-r--r--arch/mips/include/asm/nile4.h1
-rw-r--r--arch/mips/include/asm/octeon/cvmx-boot-vector.h53
-rw-r--r--arch/mips/include/asm/octeon/cvmx-bootmem.h28
-rw-r--r--arch/mips/include/asm/octeon/cvmx-ciu-defs.h10
-rw-r--r--arch/mips/include/asm/octeon/cvmx-config.h1
-rw-r--r--arch/mips/include/asm/octeon/cvmx.h28
-rw-r--r--arch/mips/include/asm/octeon/octeon.h2
-rw-r--r--arch/mips/include/asm/pm-cps.h2
-rw-r--r--arch/mips/include/asm/seccomp.h1
-rw-r--r--arch/mips/include/asm/setup.h1
-rw-r--r--arch/mips/include/asm/sgi/pi1.h1
-rw-r--r--arch/mips/include/asm/smp-cps.h2
-rw-r--r--arch/mips/include/asm/smp-ops.h16
-rw-r--r--arch/mips/include/asm/smp.h10
-rw-r--r--arch/mips/include/asm/sn/hub.h1
-rw-r--r--arch/mips/include/asm/sn/ioc3.h1
-rw-r--r--arch/mips/include/asm/sn/klkernvars.h1
-rw-r--r--arch/mips/include/asm/sn/mapped_kernel.h1
-rw-r--r--arch/mips/include/asm/sn/sn_private.h1
-rw-r--r--arch/mips/include/asm/sparsemem.h1
-rw-r--r--arch/mips/include/asm/spinlock_types.h1
-rw-r--r--arch/mips/include/asm/spram.h1
-rw-r--r--arch/mips/include/asm/stackframe.h280
-rw-r--r--arch/mips/include/asm/stackprotector.h1
-rw-r--r--arch/mips/include/asm/stacktrace.h65
-rw-r--r--arch/mips/include/asm/thread_info.h1
-rw-r--r--arch/mips/include/asm/tlb.h1
-rw-r--r--arch/mips/include/asm/tlbex.h1
-rw-r--r--arch/mips/include/asm/tlbflush.h1
-rw-r--r--arch/mips/include/asm/tlbmisc.h1
-rw-r--r--arch/mips/include/asm/topology.h2
-rw-r--r--arch/mips/include/asm/txx9/boards.h1
-rw-r--r--arch/mips/include/asm/vga.h1
-rw-r--r--arch/mips/include/asm/yamon-dt.h2
-rw-r--r--arch/mips/include/uapi/asm/auxvec.h1
-rw-r--r--arch/mips/include/uapi/asm/bitfield.h1
-rw-r--r--arch/mips/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/mips/include/uapi/asm/break.h1
-rw-r--r--arch/mips/include/uapi/asm/byteorder.h1
-rw-r--r--arch/mips/include/uapi/asm/cachectl.h1
-rw-r--r--arch/mips/include/uapi/asm/errno.h1
-rw-r--r--arch/mips/include/uapi/asm/fcntl.h1
-rw-r--r--arch/mips/include/uapi/asm/hwcap.h1
-rw-r--r--arch/mips/include/uapi/asm/inst.h3
-rw-r--r--arch/mips/include/uapi/asm/ioctl.h1
-rw-r--r--arch/mips/include/uapi/asm/ioctls.h1
-rw-r--r--arch/mips/include/uapi/asm/kvm.h1
-rw-r--r--arch/mips/include/uapi/asm/mman.h1
-rw-r--r--arch/mips/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/mips/include/uapi/asm/param.h1
-rw-r--r--arch/mips/include/uapi/asm/poll.h1
-rw-r--r--arch/mips/include/uapi/asm/posix_types.h1
-rw-r--r--arch/mips/include/uapi/asm/ptrace.h1
-rw-r--r--arch/mips/include/uapi/asm/reg.h1
-rw-r--r--arch/mips/include/uapi/asm/resource.h1
-rw-r--r--arch/mips/include/uapi/asm/sembuf.h1
-rw-r--r--arch/mips/include/uapi/asm/setup.h1
-rw-r--r--arch/mips/include/uapi/asm/sgidefs.h1
-rw-r--r--arch/mips/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/mips/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/mips/include/uapi/asm/siginfo.h1
-rw-r--r--arch/mips/include/uapi/asm/signal.h1
-rw-r--r--arch/mips/include/uapi/asm/socket.h1
-rw-r--r--arch/mips/include/uapi/asm/sockios.h1
-rw-r--r--arch/mips/include/uapi/asm/stat.h1
-rw-r--r--arch/mips/include/uapi/asm/statfs.h1
-rw-r--r--arch/mips/include/uapi/asm/swab.h1
-rw-r--r--arch/mips/include/uapi/asm/sysmips.h1
-rw-r--r--arch/mips/include/uapi/asm/termbits.h1
-rw-r--r--arch/mips/include/uapi/asm/termios.h1
-rw-r--r--arch/mips/include/uapi/asm/types.h1
-rw-r--r--arch/mips/include/uapi/asm/ucontext.h1
-rw-r--r--arch/mips/include/uapi/asm/unistd.h1
-rw-r--r--arch/mips/jazz/Kconfig1
-rw-r--r--arch/mips/jazz/jazzdma.c1
-rw-r--r--arch/mips/jazz/reset.c1
-rw-r--r--arch/mips/jz4740/Kconfig1
-rw-r--r--arch/mips/jz4740/Makefile1
-rw-r--r--arch/mips/jz4740/reset.h1
-rw-r--r--arch/mips/kernel/Makefile15
-rw-r--r--arch/mips/kernel/asm-offsets.c1
-rw-r--r--arch/mips/kernel/binfmt_elfn32.c1
-rw-r--r--arch/mips/kernel/binfmt_elfo32.c1
-rw-r--r--arch/mips/kernel/cmpxchg.c2
-rw-r--r--arch/mips/kernel/cps-vec-ns16550.S2
-rw-r--r--arch/mips/kernel/cps-vec.S6
-rw-r--r--arch/mips/kernel/cpu-probe.c59
-rw-r--r--arch/mips/kernel/crash.c1
-rw-r--r--arch/mips/kernel/crash_dump.c1
-rw-r--r--arch/mips/kernel/elf.c14
-rw-r--r--arch/mips/kernel/ftrace.c1
-rw-r--r--arch/mips/kernel/genex.S13
-rw-r--r--arch/mips/kernel/i8253.c1
-rw-r--r--arch/mips/kernel/idle.c1
-rw-r--r--arch/mips/kernel/linux32.c1
-rw-r--r--arch/mips/kernel/mips-cm.c96
-rw-r--r--arch/mips/kernel/mips-cpc.c19
-rw-r--r--arch/mips/kernel/mips-mt-fpaff.c1
-rw-r--r--arch/mips/kernel/mips-mt.c1
-rw-r--r--arch/mips/kernel/mips-r2-to-r6-emul.c16
-rw-r--r--arch/mips/kernel/octeon_switch.S11
-rw-r--r--arch/mips/kernel/perf_event_mipsxx.c3
-rw-r--r--arch/mips/kernel/pm-cps.c19
-rw-r--r--arch/mips/kernel/proc.c7
-rw-r--r--arch/mips/kernel/process.c102
-rw-r--r--arch/mips/kernel/r2300_fpu.S80
-rw-r--r--arch/mips/kernel/r2300_switch.S82
-rw-r--r--arch/mips/kernel/r4k_fpu.S196
-rw-r--r--arch/mips/kernel/r4k_switch.S203
-rw-r--r--arch/mips/kernel/r6000_fpu.S99
-rw-r--r--arch/mips/kernel/relocate.c2
-rw-r--r--arch/mips/kernel/smp-bmips.c10
-rw-r--r--arch/mips/kernel/smp-cmp.c6
-rw-r--r--arch/mips/kernel/smp-cps.c154
-rw-r--r--arch/mips/kernel/smp-mt.c14
-rw-r--r--arch/mips/kernel/smp-up.c5
-rw-r--r--arch/mips/kernel/smp.c24
-rw-r--r--arch/mips/kernel/spinlock_test.c1
-rw-r--r--arch/mips/kernel/sync-r4k.c1
-rw-r--r--arch/mips/kernel/sysrq.c1
-rw-r--r--arch/mips/kernel/time.c14
-rw-r--r--arch/mips/kernel/topology.c1
-rw-r--r--arch/mips/kernel/traps.c29
-rw-r--r--arch/mips/kernel/unaligned.c2
-rw-r--r--arch/mips/kernel/uprobes.c1
-rw-r--r--arch/mips/kernel/vdso.c15
-rw-r--r--arch/mips/kernel/vmlinux.lds.S1
-rw-r--r--arch/mips/kvm/Kconfig1
-rw-r--r--arch/mips/kvm/Makefile1
-rw-r--r--arch/mips/kvm/mips.c4
-rw-r--r--arch/mips/lantiq/Kconfig3
-rw-r--r--arch/mips/lantiq/falcon/reset.c23
-rw-r--r--arch/mips/lantiq/irq.c4
-rw-r--r--arch/mips/lantiq/prom.c2
-rw-r--r--arch/mips/lantiq/xway/Makefile4
-rw-r--r--arch/mips/lantiq/xway/reset.c387
-rw-r--r--arch/mips/lantiq/xway/sysctrl.c83
-rw-r--r--arch/mips/lantiq/xway/xrx200_phy_fw.c113
-rw-r--r--arch/mips/lasat/Kconfig1
-rw-r--r--arch/mips/lasat/Makefile1
-rw-r--r--arch/mips/lasat/at93c.c1
-rw-r--r--arch/mips/lasat/at93c.h1
-rw-r--r--arch/mips/lasat/ds1603.c1
-rw-r--r--arch/mips/lasat/ds1603.h1
-rw-r--r--arch/mips/lasat/image/Makefile1
-rw-r--r--arch/mips/lasat/image/head.S1
-rw-r--r--arch/mips/lasat/lasat_models.h1
-rw-r--r--arch/mips/lasat/picvue.h1
-rw-r--r--arch/mips/lasat/prom.c1
-rw-r--r--arch/mips/lasat/prom.h1
-rw-r--r--arch/mips/lib/Makefile3
-rw-r--r--arch/mips/lib/ashldi3.c1
-rw-r--r--arch/mips/lib/ashrdi3.c1
-rw-r--r--arch/mips/lib/bswapdi.c1
-rw-r--r--arch/mips/lib/bswapsi.c1
-rw-r--r--arch/mips/lib/cmpdi2.c1
-rw-r--r--arch/mips/lib/delay.c1
-rw-r--r--arch/mips/lib/dump_tlb.c1
-rw-r--r--arch/mips/lib/iomap-pci.c1
-rw-r--r--arch/mips/lib/iomap.c1
-rw-r--r--arch/mips/lib/iomap_copy.c42
-rw-r--r--arch/mips/lib/libgcc.h1
-rw-r--r--arch/mips/lib/lshrdi3.c1
-rw-r--r--arch/mips/lib/r3k_dump_tlb.c1
-rw-r--r--arch/mips/lib/ucmpdi2.c1
-rw-r--r--arch/mips/loongson32/Kconfig1
-rw-r--r--arch/mips/loongson32/common/platform.c38
-rw-r--r--arch/mips/loongson64/Kconfig1
-rw-r--r--arch/mips/loongson64/common/Makefile1
-rw-r--r--arch/mips/loongson64/common/dma-swiotlb.c1
-rw-r--r--arch/mips/loongson64/lemote-2f/clock.c3
-rw-r--r--arch/mips/loongson64/loongson-3/acpi_init.c1
-rw-r--r--arch/mips/loongson64/loongson-3/hpet.c1
-rw-r--r--arch/mips/loongson64/loongson-3/irq.c1
-rw-r--r--arch/mips/loongson64/loongson-3/smp.c16
-rw-r--r--arch/mips/loongson64/loongson-3/smp.h1
-rw-r--r--arch/mips/math-emu/Makefile7
-rw-r--r--arch/mips/math-emu/cp1emu.c286
-rw-r--r--arch/mips/math-emu/dp_fmax.c84
-rw-r--r--arch/mips/math-emu/dp_fmin.c86
-rw-r--r--arch/mips/math-emu/dp_maddf.c246
-rw-r--r--arch/mips/math-emu/dp_rint.c89
-rw-r--r--arch/mips/math-emu/dsemul.c1
-rw-r--r--arch/mips/math-emu/ieee754.h2
-rw-r--r--arch/mips/math-emu/ieee754int.h4
-rw-r--r--arch/mips/math-emu/ieee754sp.h4
-rw-r--r--arch/mips/math-emu/me-debugfs.c319
-rw-r--r--arch/mips/math-emu/sp_fmax.c84
-rw-r--r--arch/mips/math-emu/sp_fmin.c86
-rw-r--r--arch/mips/math-emu/sp_maddf.c229
-rw-r--r--arch/mips/math-emu/sp_rint.c90
-rw-r--r--arch/mips/mm/Makefile1
-rw-r--r--arch/mips/mm/c-r3k.c1
-rw-r--r--arch/mips/mm/c-r4k.c2
-rw-r--r--arch/mips/mm/c-tx39.c1
-rw-r--r--arch/mips/mm/cache.c2
-rw-r--r--arch/mips/mm/dma-default.c46
-rw-r--r--arch/mips/mm/gup.c1
-rw-r--r--arch/mips/mm/highmem.c1
-rw-r--r--arch/mips/mm/init.c1
-rw-r--r--arch/mips/mm/mmap.c1
-rw-r--r--arch/mips/mm/sc-debugfs.c2
-rw-r--r--arch/mips/mm/sc-ip22.c1
-rw-r--r--arch/mips/mm/sc-mips.c48
-rw-r--r--arch/mips/mm/sc-r5k.c1
-rw-r--r--arch/mips/mm/sc-rm7k.c1
-rw-r--r--arch/mips/mm/tlb-r3k.c1
-rw-r--r--arch/mips/mm/tlbex-fault.S7
-rw-r--r--arch/mips/mm/tlbex.c5
-rw-r--r--arch/mips/mti-malta/Makefile1
-rw-r--r--arch/mips/mti-malta/malta-dt.c2
-rw-r--r--arch/mips/mti-malta/malta-dtshim.c6
-rw-r--r--arch/mips/mti-malta/malta-init.c3
-rw-r--r--arch/mips/mti-malta/malta-int.c5
-rw-r--r--arch/mips/mti-malta/malta-pm.c2
-rw-r--r--arch/mips/mti-malta/malta-setup.c4
-rw-r--r--arch/mips/mti-malta/malta-time.c26
-rw-r--r--arch/mips/net/ebpf_jit.c2
-rw-r--r--arch/mips/netlogic/Kconfig1
-rw-r--r--arch/mips/netlogic/common/Makefile1
-rw-r--r--arch/mips/netlogic/common/smp.c8
-rw-r--r--arch/mips/netlogic/xlp/Makefile1
-rw-r--r--arch/mips/oprofile/Makefile1
-rw-r--r--arch/mips/oprofile/backtrace.c1
-rw-r--r--arch/mips/oprofile/op_model_mipsxx.c4
-rw-r--r--arch/mips/paravirt/Kconfig1
-rw-r--r--arch/mips/paravirt/paravirt-smp.c5
-rw-r--r--arch/mips/paravirt/setup.c2
-rw-r--r--arch/mips/pci/Makefile1
-rw-r--r--arch/mips/pci/fixup-capcella.c4
-rw-r--r--arch/mips/pci/fixup-cobalt.c8
-rw-r--r--arch/mips/pci/fixup-emma2rh.c4
-rw-r--r--arch/mips/pci/fixup-fuloong2e.c2
-rw-r--r--arch/mips/pci/fixup-ip32.c5
-rw-r--r--arch/mips/pci/fixup-jmr3927.c2
-rw-r--r--arch/mips/pci/fixup-lantiq.c2
-rw-r--r--arch/mips/pci/fixup-lemote2f.c4
-rw-r--r--arch/mips/pci/fixup-loongson3.c2
-rw-r--r--arch/mips/pci/fixup-malta.c5
-rw-r--r--arch/mips/pci/fixup-mpc30x.c6
-rw-r--r--arch/mips/pci/fixup-pmcmsp.c8
-rw-r--r--arch/mips/pci/fixup-rbtx4927.c2
-rw-r--r--arch/mips/pci/fixup-rbtx4938.c2
-rw-r--r--arch/mips/pci/fixup-sni.c12
-rw-r--r--arch/mips/pci/fixup-tb0219.c2
-rw-r--r--arch/mips/pci/fixup-tb0226.c2
-rw-r--r--arch/mips/pci/fixup-tb0287.c2
-rw-r--r--arch/mips/pci/ops-loongson3.c1
-rw-r--r--arch/mips/pci/ops-nile4.c1
-rw-r--r--arch/mips/pci/pci-alchemy.c3
-rw-r--r--arch/mips/pci/pci-bcm47xx.c2
-rw-r--r--arch/mips/pci/pci-bcm63xx.h1
-rw-r--r--arch/mips/pci/pci-generic.c2
-rw-r--r--arch/mips/pci/pci-lasat.c2
-rw-r--r--arch/mips/pci/pci-legacy.c2
-rw-r--r--arch/mips/pci/pci-malta.c6
-rw-r--r--arch/mips/pci/pci-mt7620.c4
-rw-r--r--arch/mips/pci/pci-octeon.c5
-rw-r--r--arch/mips/pci/pci-rt2880.c2
-rw-r--r--arch/mips/pci/pci-rt3883.c13
-rw-r--r--arch/mips/pci/pci-tx4938.c2
-rw-r--r--arch/mips/pci/pci-tx4939.c4
-rw-r--r--arch/mips/pci/pci-xlp.c2
-rw-r--r--arch/mips/pci/pci-xlr.c2
-rw-r--r--arch/mips/pci/pcie-octeon.c3
-rw-r--r--arch/mips/pic32/Kconfig1
-rw-r--r--arch/mips/pistachio/Kconfig1
-rw-r--r--arch/mips/pistachio/init.c3
-rw-r--r--arch/mips/pistachio/irq.c1
-rw-r--r--arch/mips/pistachio/time.c2
-rw-r--r--arch/mips/pmcs-msp71xx/Kconfig1
-rw-r--r--arch/mips/pmcs-msp71xx/Makefile1
-rw-r--r--arch/mips/pmcs-msp71xx/msp_smp.c2
-rw-r--r--arch/mips/power/hibernate.c1
-rw-r--r--arch/mips/ralink/Kconfig11
-rw-r--r--arch/mips/ralink/clk.c3
-rw-r--r--arch/mips/ralink/irq-gic.c2
-rw-r--r--arch/mips/ralink/mt7621.c5
-rw-r--r--arch/mips/rb532/setup.c1
-rw-r--r--arch/mips/sgi-ip22/Makefile1
-rw-r--r--arch/mips/sgi-ip22/ip22-berr.c1
-rw-r--r--arch/mips/sgi-ip22/ip22-hpc.c1
-rw-r--r--arch/mips/sgi-ip22/ip22-int.c1
-rw-r--r--arch/mips/sgi-ip22/ip22-mc.c1
-rw-r--r--arch/mips/sgi-ip22/ip22-nvram.c1
-rw-r--r--arch/mips/sgi-ip22/ip22-platform.c1
-rw-r--r--arch/mips/sgi-ip22/ip22-setup.c1
-rw-r--r--arch/mips/sgi-ip22/ip28-berr.c1
-rw-r--r--arch/mips/sgi-ip27/Kconfig1
-rw-r--r--arch/mips/sgi-ip27/Makefile1
-rw-r--r--arch/mips/sgi-ip27/ip27-irq-pci.c1
-rw-r--r--arch/mips/sgi-ip27/ip27-irq.c1
-rw-r--r--arch/mips/sgi-ip27/ip27-klconfig.c1
-rw-r--r--arch/mips/sgi-ip27/ip27-klnuma.c1
-rw-r--r--arch/mips/sgi-ip27/ip27-nmi.c1
-rw-r--r--arch/mips/sgi-ip27/ip27-smp.c5
-rw-r--r--arch/mips/sgi-ip27/ip27-timer.c1
-rw-r--r--arch/mips/sibyte/Kconfig1
-rw-r--r--arch/mips/sibyte/Makefile1
-rw-r--r--arch/mips/sibyte/bcm1480/smp.c5
-rw-r--r--arch/mips/sibyte/common/cfe.c4
-rw-r--r--arch/mips/sibyte/common/cfe_console.c1
-rw-r--r--arch/mips/sibyte/sb1250/smp.c5
-rw-r--r--arch/mips/sibyte/swarm/platform.c1
-rw-r--r--arch/mips/sni/reset.c1
-rw-r--r--arch/mips/sni/time.c1
-rwxr-xr-xarch/mips/tools/generic-board-config.sh88
-rw-r--r--arch/mips/txx9/Kconfig1
-rw-r--r--arch/mips/txx9/Makefile1
-rw-r--r--arch/mips/txx9/generic/Makefile1
-rw-r--r--arch/mips/txx9/generic/pci.c8
-rw-r--r--arch/mips/vdso/Makefile1
-rw-r--r--arch/mips/vdso/gettimeofday.c8
-rw-r--r--arch/mips/vdso/sigreturn.S10
-rw-r--r--arch/mips/vr41xx/Kconfig1
-rw-r--r--arch/mips/xilfpga/Kconfig1
-rw-r--r--arch/mn10300/Kconfig1
-rw-r--r--arch/mn10300/Kconfig.debug1
-rw-r--r--arch/mn10300/boot/compressed/Makefile1
-rw-r--r--arch/mn10300/boot/tools/build.c1
-rw-r--r--arch/mn10300/include/asm/kmap_types.h1
-rw-r--r--arch/mn10300/include/asm/mmu.h1
-rw-r--r--arch/mn10300/include/asm/page_offset.h1
-rw-r--r--arch/mn10300/include/asm/shmparam.h1
-rw-r--r--arch/mn10300/include/asm/spinlock_types.h1
-rw-r--r--arch/mn10300/include/asm/termios.h1
-rw-r--r--arch/mn10300/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/mn10300/include/uapi/asm/byteorder.h1
-rw-r--r--arch/mn10300/include/uapi/asm/errno.h1
-rw-r--r--arch/mn10300/include/uapi/asm/fcntl.h1
-rw-r--r--arch/mn10300/include/uapi/asm/ioctl.h1
-rw-r--r--arch/mn10300/include/uapi/asm/ioctls.h1
-rw-r--r--arch/mn10300/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/mn10300/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/mn10300/include/uapi/asm/mman.h1
-rw-r--r--arch/mn10300/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/mn10300/include/uapi/asm/param.h1
-rw-r--r--arch/mn10300/include/uapi/asm/poll.h1
-rw-r--r--arch/mn10300/include/uapi/asm/posix_types.h1
-rw-r--r--arch/mn10300/include/uapi/asm/ptrace.h1
-rw-r--r--arch/mn10300/include/uapi/asm/resource.h1
-rw-r--r--arch/mn10300/include/uapi/asm/sembuf.h1
-rw-r--r--arch/mn10300/include/uapi/asm/setup.h1
-rw-r--r--arch/mn10300/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/mn10300/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/mn10300/include/uapi/asm/signal.h1
-rw-r--r--arch/mn10300/include/uapi/asm/socket.h1
-rw-r--r--arch/mn10300/include/uapi/asm/sockios.h1
-rw-r--r--arch/mn10300/include/uapi/asm/stat.h1
-rw-r--r--arch/mn10300/include/uapi/asm/swab.h1
-rw-r--r--arch/mn10300/include/uapi/asm/termbits.h1
-rw-r--r--arch/mn10300/include/uapi/asm/termios.h1
-rw-r--r--arch/mn10300/include/uapi/asm/types.h1
-rw-r--r--arch/mn10300/include/uapi/asm/unistd.h1
-rw-r--r--arch/mn10300/kernel/Makefile1
-rw-r--r--arch/mn10300/kernel/asm-offsets.c1
-rw-r--r--arch/mn10300/kernel/gdb-stub.c1
-rw-r--r--arch/mn10300/kernel/process.c12
-rw-r--r--arch/mn10300/mm/Kconfig.cache1
-rw-r--r--arch/mn10300/mm/Makefile1
-rw-r--r--arch/mn10300/oprofile/Makefile1
-rw-r--r--arch/mn10300/proc-mn103e010/include/proc/intctl-regs.h1
-rw-r--r--arch/mn10300/proc-mn2ws0050/include/proc/intctl-regs.h1
-rw-r--r--arch/mn10300/unit-asb2364/include/unit/fpga-regs.h1
-rw-r--r--arch/nios2/Kconfig1
-rw-r--r--arch/nios2/Kconfig.debug1
-rw-r--r--arch/nios2/boot/compressed/Makefile1
-rw-r--r--arch/nios2/boot/dts/3c120_devboard.dts3
-rw-r--r--arch/nios2/include/uapi/asm/byteorder.h1
-rw-r--r--arch/nios2/include/uapi/asm/elf.h1
-rw-r--r--arch/nios2/include/uapi/asm/ptrace.h1
-rw-r--r--arch/nios2/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/nios2/include/uapi/asm/signal.h1
-rw-r--r--arch/nios2/include/uapi/asm/swab.h1
-rw-r--r--arch/nios2/include/uapi/asm/unistd.h1
-rw-r--r--arch/nios2/kernel/Makefile1
-rw-r--r--arch/nios2/kernel/time.c5
-rw-r--r--arch/nios2/mm/Makefile1
-rw-r--r--arch/openrisc/Kconfig1
-rw-r--r--arch/openrisc/boot/dts/Makefile1
-rw-r--r--arch/openrisc/boot/dts/or1ksim.dts1
-rw-r--r--arch/openrisc/include/asm/futex.h1
-rw-r--r--arch/openrisc/include/asm/pgtable.h2
-rw-r--r--arch/openrisc/include/asm/string.h1
-rw-r--r--arch/openrisc/include/uapi/asm/elf.h1
-rw-r--r--arch/openrisc/include/uapi/asm/param.h1
-rw-r--r--arch/openrisc/include/uapi/asm/ptrace.h1
-rw-r--r--arch/openrisc/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/openrisc/include/uapi/asm/unistd.h1
-rw-r--r--arch/openrisc/kernel/Makefile1
-rw-r--r--arch/openrisc/kernel/vmlinux.h1
-rw-r--r--arch/openrisc/lib/memcpy.c1
-rw-r--r--arch/parisc/Kconfig13
-rw-r--r--arch/parisc/Kconfig.debug1
-rw-r--r--arch/parisc/Makefile5
-rw-r--r--arch/parisc/boot/compressed/Makefile2
-rw-r--r--arch/parisc/boot/compressed/misc.c3
-rw-r--r--arch/parisc/include/asm/agp.h1
-rw-r--r--arch/parisc/include/asm/atomic.h1
-rw-r--r--arch/parisc/include/asm/bitops.h1
-rw-r--r--arch/parisc/include/asm/bug.h1
-rw-r--r--arch/parisc/include/asm/bugs.h1
-rw-r--r--arch/parisc/include/asm/cache.h1
-rw-r--r--arch/parisc/include/asm/cacheflush.h1
-rw-r--r--arch/parisc/include/asm/checksum.h1
-rw-r--r--arch/parisc/include/asm/cmpxchg.h1
-rw-r--r--arch/parisc/include/asm/compat.h1
-rw-r--r--arch/parisc/include/asm/compat_ucontext.h1
-rw-r--r--arch/parisc/include/asm/delay.h1
-rw-r--r--arch/parisc/include/asm/dma-mapping.h1
-rw-r--r--arch/parisc/include/asm/dma.h1
-rw-r--r--arch/parisc/include/asm/elf.h1
-rw-r--r--arch/parisc/include/asm/fb.h1
-rw-r--r--arch/parisc/include/asm/fixmap.h1
-rw-r--r--arch/parisc/include/asm/ftrace.h1
-rw-r--r--arch/parisc/include/asm/futex.h1
-rw-r--r--arch/parisc/include/asm/hardirq.h1
-rw-r--r--arch/parisc/include/asm/hardware.h1
-rw-r--r--arch/parisc/include/asm/hash.h1
-rw-r--r--arch/parisc/include/asm/hugetlb.h1
-rw-r--r--arch/parisc/include/asm/ide.h1
-rw-r--r--arch/parisc/include/asm/io.h1
-rw-r--r--arch/parisc/include/asm/irq.h1
-rw-r--r--arch/parisc/include/asm/irqflags.h1
-rw-r--r--arch/parisc/include/asm/kbdleds.h1
-rw-r--r--arch/parisc/include/asm/kmap_types.h1
-rw-r--r--arch/parisc/include/asm/ldcw.h1
-rw-r--r--arch/parisc/include/asm/led.h1
-rw-r--r--arch/parisc/include/asm/linkage.h1
-rw-r--r--arch/parisc/include/asm/machdep.h1
-rw-r--r--arch/parisc/include/asm/mckinley.h1
-rw-r--r--arch/parisc/include/asm/mmu.h1
-rw-r--r--arch/parisc/include/asm/mmu_context.h1
-rw-r--r--arch/parisc/include/asm/mmzone.h1
-rw-r--r--arch/parisc/include/asm/module.h1
-rw-r--r--arch/parisc/include/asm/page.h1
-rw-r--r--arch/parisc/include/asm/parisc-device.h1
-rw-r--r--arch/parisc/include/asm/parport.h1
-rw-r--r--arch/parisc/include/asm/pci.h1
-rw-r--r--arch/parisc/include/asm/pdc.h2
-rw-r--r--arch/parisc/include/asm/perf.h1
-rw-r--r--arch/parisc/include/asm/pgalloc.h1
-rw-r--r--arch/parisc/include/asm/pgtable.h1
-rw-r--r--arch/parisc/include/asm/prefetch.h1
-rw-r--r--arch/parisc/include/asm/processor.h1
-rw-r--r--arch/parisc/include/asm/psw.h1
-rw-r--r--arch/parisc/include/asm/ptrace.h1
-rw-r--r--arch/parisc/include/asm/ropes.h1
-rw-r--r--arch/parisc/include/asm/rt_sigframe.h1
-rw-r--r--arch/parisc/include/asm/runway.h1
-rw-r--r--arch/parisc/include/asm/sections.h1
-rw-r--r--arch/parisc/include/asm/shmparam.h1
-rw-r--r--arch/parisc/include/asm/signal.h1
-rw-r--r--arch/parisc/include/asm/smp.h2
-rw-r--r--arch/parisc/include/asm/socket.h1
-rw-r--r--arch/parisc/include/asm/special_insns.h1
-rw-r--r--arch/parisc/include/asm/spinlock.h1
-rw-r--r--arch/parisc/include/asm/spinlock_types.h1
-rw-r--r--arch/parisc/include/asm/string.h1
-rw-r--r--arch/parisc/include/asm/superio.h1
-rw-r--r--arch/parisc/include/asm/switch_to.h1
-rw-r--r--arch/parisc/include/asm/syscall.h1
-rw-r--r--arch/parisc/include/asm/termios.h1
-rw-r--r--arch/parisc/include/asm/thread_info.h1
-rw-r--r--arch/parisc/include/asm/timex.h1
-rw-r--r--arch/parisc/include/asm/tlb.h1
-rw-r--r--arch/parisc/include/asm/tlbflush.h1
-rw-r--r--arch/parisc/include/asm/traps.h1
-rw-r--r--arch/parisc/include/asm/uaccess.h1
-rw-r--r--arch/parisc/include/asm/ucontext.h1
-rw-r--r--arch/parisc/include/asm/unaligned.h1
-rw-r--r--arch/parisc/include/asm/unistd.h1
-rw-r--r--arch/parisc/include/asm/unwind.h1
-rw-r--r--arch/parisc/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/parisc/include/uapi/asm/byteorder.h1
-rw-r--r--arch/parisc/include/uapi/asm/errno.h1
-rw-r--r--arch/parisc/include/uapi/asm/fcntl.h1
-rw-r--r--arch/parisc/include/uapi/asm/ioctl.h1
-rw-r--r--arch/parisc/include/uapi/asm/ioctls.h1
-rw-r--r--arch/parisc/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/parisc/include/uapi/asm/mman.h1
-rw-r--r--arch/parisc/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/parisc/include/uapi/asm/pdc.h1
-rw-r--r--arch/parisc/include/uapi/asm/posix_types.h1
-rw-r--r--arch/parisc/include/uapi/asm/ptrace.h1
-rw-r--r--arch/parisc/include/uapi/asm/sembuf.h1
-rw-r--r--arch/parisc/include/uapi/asm/setup.h1
-rw-r--r--arch/parisc/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/parisc/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/parisc/include/uapi/asm/siginfo.h1
-rw-r--r--arch/parisc/include/uapi/asm/signal.h1
-rw-r--r--arch/parisc/include/uapi/asm/socket.h1
-rw-r--r--arch/parisc/include/uapi/asm/sockios.h1
-rw-r--r--arch/parisc/include/uapi/asm/stat.h1
-rw-r--r--arch/parisc/include/uapi/asm/statfs.h1
-rw-r--r--arch/parisc/include/uapi/asm/swab.h1
-rw-r--r--arch/parisc/include/uapi/asm/termbits.h1
-rw-r--r--arch/parisc/include/uapi/asm/termios.h1
-rw-r--r--arch/parisc/include/uapi/asm/types.h1
-rw-r--r--arch/parisc/include/uapi/asm/unistd.h1
-rw-r--r--arch/parisc/kernel/Makefile1
-rw-r--r--arch/parisc/kernel/audit.c1
-rw-r--r--arch/parisc/kernel/binfmt_elf32.c1
-rw-r--r--arch/parisc/kernel/compat_audit.c1
-rw-r--r--arch/parisc/kernel/firmware.c20
-rw-r--r--arch/parisc/kernel/ftrace.c1
-rw-r--r--arch/parisc/kernel/pa7300lc.c1
-rw-r--r--arch/parisc/kernel/parisc_ksyms.c2
-rw-r--r--arch/parisc/kernel/pci-dma.c1
-rw-r--r--arch/parisc/kernel/pdt.c10
-rw-r--r--arch/parisc/kernel/process.c2
-rw-r--r--arch/parisc/kernel/processor.c2
-rw-r--r--arch/parisc/kernel/ptrace.c1
-rw-r--r--arch/parisc/kernel/setup.c6
-rw-r--r--arch/parisc/kernel/signal.c1
-rw-r--r--arch/parisc/kernel/smp.c3
-rw-r--r--arch/parisc/kernel/sys_parisc32.c1
-rw-r--r--arch/parisc/kernel/syscall.S6
-rw-r--r--arch/parisc/kernel/time.c6
-rw-r--r--arch/parisc/kernel/traps.c11
-rw-r--r--arch/parisc/kernel/unwind.c13
-rw-r--r--arch/parisc/kernel/vmlinux.lds.S1
-rw-r--r--arch/parisc/lib/bitops.c1
-rw-r--r--arch/parisc/lib/delay.c1
-rw-r--r--arch/parisc/lib/io.c1
-rw-r--r--arch/parisc/lib/iomap.c1
-rw-r--r--arch/parisc/lib/ucmpdi2.c1
-rw-r--r--arch/parisc/math-emu/Makefile1
-rw-r--r--arch/parisc/mm/fault.c33
-rw-r--r--arch/parisc/mm/hugetlbpage.c1
-rw-r--r--arch/parisc/mm/init.c1
-rw-r--r--arch/parisc/mm/ioremap.c1
-rw-r--r--arch/parisc/oprofile/Makefile1
-rw-r--r--arch/powerpc/Kconfig1
-rw-r--r--arch/powerpc/Kconfig.debug1
-rw-r--r--arch/powerpc/Makefile.postlink1
-rw-r--r--arch/powerpc/boot/Makefile1
-rw-r--r--arch/powerpc/boot/cpm-serial.c1
-rw-r--r--arch/powerpc/boot/cuboot.h1
-rw-r--r--arch/powerpc/boot/dcr.h1
-rw-r--r--arch/powerpc/boot/dts/virtex440-ml510.dts1
-rw-r--r--arch/powerpc/boot/elf.h1
-rw-r--r--arch/powerpc/boot/epapr-wrapper.c1
-rw-r--r--arch/powerpc/boot/fixed-head.S1
-rw-r--r--arch/powerpc/boot/fsl-soc.h1
-rw-r--r--arch/powerpc/boot/io.h1
-rw-r--r--arch/powerpc/boot/libfdt_env.h1
-rw-r--r--arch/powerpc/boot/mktree.c1
-rw-r--r--arch/powerpc/boot/motload-head.S1
-rw-r--r--arch/powerpc/boot/mpc52xx-psc.c1
-rw-r--r--arch/powerpc/boot/mpc8xx.h1
-rw-r--r--arch/powerpc/boot/ns16550.c1
-rw-r--r--arch/powerpc/boot/of.h1
-rw-r--r--arch/powerpc/boot/planetcore.h1
-rw-r--r--arch/powerpc/boot/pq2.h1
-rw-r--r--arch/powerpc/boot/pseries-head.S1
-rw-r--r--arch/powerpc/boot/redboot.h1
-rw-r--r--arch/powerpc/boot/rs6000.h1
-rw-r--r--arch/powerpc/boot/stdio.h1
-rw-r--r--arch/powerpc/boot/stdlib.h1
-rw-r--r--arch/powerpc/boot/string.h1
-rw-r--r--arch/powerpc/boot/swab.h1
-rw-r--r--arch/powerpc/boot/types.h1
-rw-r--r--arch/powerpc/boot/virtex405-head.S1
-rw-r--r--arch/powerpc/boot/xz_config.h1
-rw-r--r--arch/powerpc/boot/zImage.coff.lds.S1
-rw-r--r--arch/powerpc/boot/zImage.lds.S1
-rw-r--r--arch/powerpc/boot/zImage.ps3.lds.S1
-rw-r--r--arch/powerpc/configs/g5_defconfig5
-rw-r--r--arch/powerpc/configs/gamecube_defconfig5
-rw-r--r--arch/powerpc/configs/pasemi_defconfig3
-rw-r--r--arch/powerpc/configs/pmac32_defconfig7
-rw-r--r--arch/powerpc/configs/ppc64_defconfig7
-rw-r--r--arch/powerpc/configs/ppc64e_defconfig7
-rw-r--r--arch/powerpc/configs/ppc6xx_defconfig7
-rw-r--r--arch/powerpc/configs/wii_defconfig5
-rw-r--r--arch/powerpc/crypto/Makefile1
-rw-r--r--arch/powerpc/crypto/sha1-powerpc-asm.S1
-rw-r--r--arch/powerpc/include/asm/agp.h1
-rw-r--r--arch/powerpc/include/asm/archrandom.h1
-rw-r--r--arch/powerpc/include/asm/atomic.h1
-rw-r--r--arch/powerpc/include/asm/backlight.h1
-rw-r--r--arch/powerpc/include/asm/barrier.h1
-rw-r--r--arch/powerpc/include/asm/book3s/32/hash.h1
-rw-r--r--arch/powerpc/include/asm/book3s/32/mmu-hash.h1
-rw-r--r--arch/powerpc/include/asm/book3s/32/pgalloc.h1
-rw-r--r--arch/powerpc/include/asm/book3s/32/pgtable.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/hash-4k.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/hash-64k.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/hash.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/hugetlb.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/mmu.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/pgtable-4k.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/pgtable-64k.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/pgtable.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/radix-4k.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/radix-64k.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/radix.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/tlbflush-hash.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/tlbflush-radix.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/tlbflush.h1
-rw-r--r--arch/powerpc/include/asm/book3s/pgalloc.h1
-rw-r--r--arch/powerpc/include/asm/book3s/pgtable.h1
-rw-r--r--arch/powerpc/include/asm/bootx.h1
-rw-r--r--arch/powerpc/include/asm/btext.h1
-rw-r--r--arch/powerpc/include/asm/bug.h1
-rw-r--r--arch/powerpc/include/asm/cache.h1
-rw-r--r--arch/powerpc/include/asm/cell-regs.h1
-rw-r--r--arch/powerpc/include/asm/cmpxchg.h1
-rw-r--r--arch/powerpc/include/asm/code-patching.h10
-rw-r--r--arch/powerpc/include/asm/compat.h1
-rw-r--r--arch/powerpc/include/asm/context_tracking.h1
-rw-r--r--arch/powerpc/include/asm/cpm.h1
-rw-r--r--arch/powerpc/include/asm/cpm1.h1
-rw-r--r--arch/powerpc/include/asm/cpm2.h1
-rw-r--r--arch/powerpc/include/asm/cpu_has_feature.h1
-rw-r--r--arch/powerpc/include/asm/cpuidle.h1
-rw-r--r--arch/powerpc/include/asm/cputable.h1
-rw-r--r--arch/powerpc/include/asm/cputhreads.h1
-rw-r--r--arch/powerpc/include/asm/dbdma.h1
-rw-r--r--arch/powerpc/include/asm/dcr-regs.h1
-rw-r--r--arch/powerpc/include/asm/debug.h1
-rw-r--r--arch/powerpc/include/asm/dma-mapping.h1
-rw-r--r--arch/powerpc/include/asm/dma.h1
-rw-r--r--arch/powerpc/include/asm/dt_cpu_ftrs.h1
-rw-r--r--arch/powerpc/include/asm/exec.h1
-rw-r--r--arch/powerpc/include/asm/extable.h1
-rw-r--r--arch/powerpc/include/asm/fb.h1
-rw-r--r--arch/powerpc/include/asm/ftrace.h1
-rw-r--r--arch/powerpc/include/asm/futex.h1
-rw-r--r--arch/powerpc/include/asm/grackle.h1
-rw-r--r--arch/powerpc/include/asm/hardirq.h1
-rw-r--r--arch/powerpc/include/asm/head-64.h1
-rw-r--r--arch/powerpc/include/asm/heathrow.h1
-rw-r--r--arch/powerpc/include/asm/highmem.h1
-rw-r--r--arch/powerpc/include/asm/hugetlb.h1
-rw-r--r--arch/powerpc/include/asm/hvcall.h1
-rw-r--r--arch/powerpc/include/asm/hvsi.h1
-rw-r--r--arch/powerpc/include/asm/hw_irq.h1
-rw-r--r--arch/powerpc/include/asm/i8259.h1
-rw-r--r--arch/powerpc/include/asm/ide.h1
-rw-r--r--arch/powerpc/include/asm/ima.h1
-rw-r--r--arch/powerpc/include/asm/immap_cpm2.h1
-rw-r--r--arch/powerpc/include/asm/io-defs.h1
-rw-r--r--arch/powerpc/include/asm/irq_work.h1
-rw-r--r--arch/powerpc/include/asm/irqflags.h1
-rw-r--r--arch/powerpc/include/asm/isa-bridge.h1
-rw-r--r--arch/powerpc/include/asm/kdebug.h1
-rw-r--r--arch/powerpc/include/asm/kdump.h1
-rw-r--r--arch/powerpc/include/asm/kexec.h1
-rw-r--r--arch/powerpc/include/asm/keylargo.h1
-rw-r--r--arch/powerpc/include/asm/libata-portmap.h1
-rw-r--r--arch/powerpc/include/asm/linkage.h1
-rw-r--r--arch/powerpc/include/asm/local.h1
-rw-r--r--arch/powerpc/include/asm/macio.h1
-rw-r--r--arch/powerpc/include/asm/mediabay.h1
-rw-r--r--arch/powerpc/include/asm/mmu-40x.h1
-rw-r--r--arch/powerpc/include/asm/mmu-44x.h1
-rw-r--r--arch/powerpc/include/asm/mmu-8xx.h1
-rw-r--r--arch/powerpc/include/asm/mmu-book3e.h1
-rw-r--r--arch/powerpc/include/asm/mmu.h1
-rw-r--r--arch/powerpc/include/asm/mmu_context.h1
-rw-r--r--arch/powerpc/include/asm/mmzone.h1
-rw-r--r--arch/powerpc/include/asm/mpc6xx.h1
-rw-r--r--arch/powerpc/include/asm/mpc8260.h1
-rw-r--r--arch/powerpc/include/asm/mpic.h1
-rw-r--r--arch/powerpc/include/asm/nmi.h1
-rw-r--r--arch/powerpc/include/asm/nohash/32/pgalloc.h1
-rw-r--r--arch/powerpc/include/asm/nohash/32/pgtable.h1
-rw-r--r--arch/powerpc/include/asm/nohash/32/pte-40x.h1
-rw-r--r--arch/powerpc/include/asm/nohash/32/pte-44x.h1
-rw-r--r--arch/powerpc/include/asm/nohash/32/pte-8xx.h1
-rw-r--r--arch/powerpc/include/asm/nohash/32/pte-fsl-booke.h1
-rw-r--r--arch/powerpc/include/asm/nohash/64/pgtable-4k.h1
-rw-r--r--arch/powerpc/include/asm/nohash/64/pgtable-64k.h1
-rw-r--r--arch/powerpc/include/asm/nohash/64/pgtable.h1
-rw-r--r--arch/powerpc/include/asm/nohash/pgalloc.h1
-rw-r--r--arch/powerpc/include/asm/nohash/pgtable.h1
-rw-r--r--arch/powerpc/include/asm/nohash/pte-book3e.h1
-rw-r--r--arch/powerpc/include/asm/ohare.h1
-rw-r--r--arch/powerpc/include/asm/page_32.h1
-rw-r--r--arch/powerpc/include/asm/parport.h1
-rw-r--r--arch/powerpc/include/asm/percpu.h1
-rw-r--r--arch/powerpc/include/asm/pgalloc.h1
-rw-r--r--arch/powerpc/include/asm/pgtable-be-types.h1
-rw-r--r--arch/powerpc/include/asm/pgtable-types.h1
-rw-r--r--arch/powerpc/include/asm/pgtable.h1
-rw-r--r--arch/powerpc/include/asm/plpar_wrappers.h1
-rw-r--r--arch/powerpc/include/asm/pmac_pfunc.h1
-rw-r--r--arch/powerpc/include/asm/pte-common.h1
-rw-r--r--arch/powerpc/include/asm/reg.h1
-rw-r--r--arch/powerpc/include/asm/reg_8xx.h1
-rw-r--r--arch/powerpc/include/asm/reg_fsl_emb.h1
-rw-r--r--arch/powerpc/include/asm/runlatch.h1
-rw-r--r--arch/powerpc/include/asm/seccomp.h1
-rw-r--r--arch/powerpc/include/asm/sections.h1
-rw-r--r--arch/powerpc/include/asm/setup.h1
-rw-r--r--arch/powerpc/include/asm/shmparam.h1
-rw-r--r--arch/powerpc/include/asm/signal.h1
-rw-r--r--arch/powerpc/include/asm/smu.h1
-rw-r--r--arch/powerpc/include/asm/sparsemem.h1
-rw-r--r--arch/powerpc/include/asm/spinlock_types.h1
-rw-r--r--arch/powerpc/include/asm/string.h1
-rw-r--r--arch/powerpc/include/asm/switch_to.h1
-rw-r--r--arch/powerpc/include/asm/synch.h1
-rw-r--r--arch/powerpc/include/asm/syscalls.h1
-rw-r--r--arch/powerpc/include/asm/systbl.h1
-rw-r--r--arch/powerpc/include/asm/thread_info.h1
-rw-r--r--arch/powerpc/include/asm/timex.h1
-rw-r--r--arch/powerpc/include/asm/tm.h1
-rw-r--r--arch/powerpc/include/asm/topology.h1
-rw-r--r--arch/powerpc/include/asm/trace.h1
-rw-r--r--arch/powerpc/include/asm/uaccess.h1
-rw-r--r--arch/powerpc/include/asm/unaligned.h1
-rw-r--r--arch/powerpc/include/asm/uninorth.h1
-rw-r--r--arch/powerpc/include/asm/user.h1
-rw-r--r--arch/powerpc/include/asm/vdso.h1
-rw-r--r--arch/powerpc/include/asm/vga.h1
-rw-r--r--arch/powerpc/include/asm/xics.h1
-rw-r--r--arch/powerpc/include/uapi/asm/auxvec.h1
-rw-r--r--arch/powerpc/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/powerpc/include/uapi/asm/bootx.h1
-rw-r--r--arch/powerpc/include/uapi/asm/byteorder.h1
-rw-r--r--arch/powerpc/include/uapi/asm/cputable.h1
-rw-r--r--arch/powerpc/include/uapi/asm/eeh.h1
-rw-r--r--arch/powerpc/include/uapi/asm/elf.h1
-rw-r--r--arch/powerpc/include/uapi/asm/epapr_hcalls.h1
-rw-r--r--arch/powerpc/include/uapi/asm/errno.h1
-rw-r--r--arch/powerpc/include/uapi/asm/fcntl.h1
-rw-r--r--arch/powerpc/include/uapi/asm/ioctl.h1
-rw-r--r--arch/powerpc/include/uapi/asm/ioctls.h1
-rw-r--r--arch/powerpc/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/powerpc/include/uapi/asm/kvm.h1
-rw-r--r--arch/powerpc/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/powerpc/include/uapi/asm/mman.h1
-rw-r--r--arch/powerpc/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/powerpc/include/uapi/asm/nvram.h1
-rw-r--r--arch/powerpc/include/uapi/asm/opal-prd.h1
-rw-r--r--arch/powerpc/include/uapi/asm/perf_event.h1
-rw-r--r--arch/powerpc/include/uapi/asm/perf_regs.h1
-rw-r--r--arch/powerpc/include/uapi/asm/posix_types.h1
-rw-r--r--arch/powerpc/include/uapi/asm/ps3fb.h1
-rw-r--r--arch/powerpc/include/uapi/asm/ptrace.h1
-rw-r--r--arch/powerpc/include/uapi/asm/sembuf.h1
-rw-r--r--arch/powerpc/include/uapi/asm/setup.h1
-rw-r--r--arch/powerpc/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/powerpc/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/powerpc/include/uapi/asm/siginfo.h1
-rw-r--r--arch/powerpc/include/uapi/asm/signal.h1
-rw-r--r--arch/powerpc/include/uapi/asm/socket.h1
-rw-r--r--arch/powerpc/include/uapi/asm/spu_info.h1
-rw-r--r--arch/powerpc/include/uapi/asm/stat.h1
-rw-r--r--arch/powerpc/include/uapi/asm/swab.h1
-rw-r--r--arch/powerpc/include/uapi/asm/termbits.h1
-rw-r--r--arch/powerpc/include/uapi/asm/termios.h1
-rw-r--r--arch/powerpc/include/uapi/asm/tm.h1
-rw-r--r--arch/powerpc/include/uapi/asm/types.h1
-rw-r--r--arch/powerpc/include/uapi/asm/ucontext.h1
-rw-r--r--arch/powerpc/include/uapi/asm/unistd.h1
-rw-r--r--arch/powerpc/kernel/Makefile1
-rw-r--r--arch/powerpc/kernel/align.c4
-rw-r--r--arch/powerpc/kernel/audit.c1
-rw-r--r--arch/powerpc/kernel/btext.c1
-rw-r--r--arch/powerpc/kernel/cacheinfo.h1
-rw-r--r--arch/powerpc/kernel/compat_audit.c1
-rw-r--r--arch/powerpc/kernel/dma-iommu.c1
-rw-r--r--arch/powerpc/kernel/dt_cpu_ftrs.c4
-rw-r--r--arch/powerpc/kernel/eeh.c4
-rw-r--r--arch/powerpc/kernel/eeh_dev.c18
-rw-r--r--arch/powerpc/kernel/exceptions-64s.S25
-rw-r--r--arch/powerpc/kernel/fsl_booke_entry_mapping.S1
-rw-r--r--arch/powerpc/kernel/head_booke.h1
-rw-r--r--arch/powerpc/kernel/iomap.c1
-rw-r--r--arch/powerpc/kernel/kprobes.c7
-rw-r--r--arch/powerpc/kernel/legacy_serial.c1
-rw-r--r--arch/powerpc/kernel/mce_power.c13
-rw-r--r--arch/powerpc/kernel/optprobes.c4
-rw-r--r--arch/powerpc/kernel/prom_parse.c1
-rw-r--r--arch/powerpc/kernel/ptrace.c2
-rw-r--r--arch/powerpc/kernel/rtas-proc.c1
-rw-r--r--arch/powerpc/kernel/rtas-rtc.c1
-rw-r--r--arch/powerpc/kernel/rtas.c4
-rw-r--r--arch/powerpc/kernel/setup-common.c3
-rw-r--r--arch/powerpc/kernel/signal_64.c13
-rw-r--r--arch/powerpc/kernel/smp-tbsync.c1
-rw-r--r--arch/powerpc/kernel/swsusp_32.S1
-rw-r--r--arch/powerpc/kernel/swsusp_booke.S1
-rw-r--r--arch/powerpc/kernel/tau_6xx.c1
-rw-r--r--arch/powerpc/kernel/tm.S1
-rw-r--r--arch/powerpc/kernel/trace/Makefile1
-rw-r--r--arch/powerpc/kernel/trace/ftrace.c1
-rw-r--r--arch/powerpc/kernel/trace/ftrace_64_mprofile.S45
-rw-r--r--arch/powerpc/kernel/traps.c12
-rw-r--r--arch/powerpc/kernel/vdso32/Makefile1
-rw-r--r--arch/powerpc/kernel/vdso32/vdso32.lds.S1
-rw-r--r--arch/powerpc/kernel/vdso32/vdso32_wrapper.S1
-rw-r--r--arch/powerpc/kernel/vdso64/Makefile1
-rw-r--r--arch/powerpc/kernel/vdso64/vdso64.lds.S1
-rw-r--r--arch/powerpc/kernel/vdso64/vdso64_wrapper.S1
-rw-r--r--arch/powerpc/kernel/vecemu.c1
-rw-r--r--arch/powerpc/kernel/vector.S1
-rw-r--r--arch/powerpc/kernel/vmlinux.lds.S1
-rw-r--r--arch/powerpc/kernel/watchdog.c31
-rw-r--r--arch/powerpc/kvm/Kconfig1
-rw-r--r--arch/powerpc/kvm/Makefile1
-rw-r--r--arch/powerpc/kvm/book3s_64_vio.c23
-rw-r--r--arch/powerpc/kvm/book3s_hv.c4
-rw-r--r--arch/powerpc/kvm/book3s_hv_rm_xive.c2
-rw-r--r--arch/powerpc/kvm/book3s_hv_rmhandlers.S44
-rw-r--r--arch/powerpc/kvm/book3s_xive.c6
-rw-r--r--arch/powerpc/kvm/book3s_xive.h1
-rw-r--r--arch/powerpc/kvm/book3s_xive_template.c7
-rw-r--r--arch/powerpc/kvm/irq.h1
-rw-r--r--arch/powerpc/kvm/powerpc.c3
-rw-r--r--arch/powerpc/kvm/trace.h1
-rw-r--r--arch/powerpc/kvm/trace_book3s.h1
-rw-r--r--arch/powerpc/kvm/trace_booke.h1
-rw-r--r--arch/powerpc/kvm/trace_hv.h1
-rw-r--r--arch/powerpc/kvm/trace_pr.h1
-rw-r--r--arch/powerpc/lib/Makefile1
-rw-r--r--arch/powerpc/lib/alloc.c1
-rw-r--r--arch/powerpc/lib/sstep.c29
-rw-r--r--arch/powerpc/lib/xor_vmx.h1
-rw-r--r--arch/powerpc/math-emu/Makefile1
-rw-r--r--arch/powerpc/math-emu/fabs.c1
-rw-r--r--arch/powerpc/math-emu/fadd.c1
-rw-r--r--arch/powerpc/math-emu/fadds.c1
-rw-r--r--arch/powerpc/math-emu/fcmpo.c1
-rw-r--r--arch/powerpc/math-emu/fcmpu.c1
-rw-r--r--arch/powerpc/math-emu/fctiw.c1
-rw-r--r--arch/powerpc/math-emu/fctiwz.c1
-rw-r--r--arch/powerpc/math-emu/fdiv.c1
-rw-r--r--arch/powerpc/math-emu/fdivs.c1
-rw-r--r--arch/powerpc/math-emu/fmadd.c1
-rw-r--r--arch/powerpc/math-emu/fmadds.c1
-rw-r--r--arch/powerpc/math-emu/fmr.c1
-rw-r--r--arch/powerpc/math-emu/fmsub.c1
-rw-r--r--arch/powerpc/math-emu/fmsubs.c1
-rw-r--r--arch/powerpc/math-emu/fmul.c1
-rw-r--r--arch/powerpc/math-emu/fmuls.c1
-rw-r--r--arch/powerpc/math-emu/fnabs.c1
-rw-r--r--arch/powerpc/math-emu/fneg.c1
-rw-r--r--arch/powerpc/math-emu/fnmadd.c1
-rw-r--r--arch/powerpc/math-emu/fnmadds.c1
-rw-r--r--arch/powerpc/math-emu/fnmsub.c1
-rw-r--r--arch/powerpc/math-emu/fnmsubs.c1
-rw-r--r--arch/powerpc/math-emu/fre.c1
-rw-r--r--arch/powerpc/math-emu/fres.c1
-rw-r--r--arch/powerpc/math-emu/frsp.c1
-rw-r--r--arch/powerpc/math-emu/frsqrte.c1
-rw-r--r--arch/powerpc/math-emu/frsqrtes.c1
-rw-r--r--arch/powerpc/math-emu/fsel.c1
-rw-r--r--arch/powerpc/math-emu/fsqrt.c1
-rw-r--r--arch/powerpc/math-emu/fsqrts.c1
-rw-r--r--arch/powerpc/math-emu/fsub.c1
-rw-r--r--arch/powerpc/math-emu/fsubs.c1
-rw-r--r--arch/powerpc/math-emu/lfd.c1
-rw-r--r--arch/powerpc/math-emu/lfs.c1
-rw-r--r--arch/powerpc/math-emu/math.c1
-rw-r--r--arch/powerpc/math-emu/mcrfs.c1
-rw-r--r--arch/powerpc/math-emu/mffs.c1
-rw-r--r--arch/powerpc/math-emu/mtfsb0.c1
-rw-r--r--arch/powerpc/math-emu/mtfsb1.c1
-rw-r--r--arch/powerpc/math-emu/mtfsf.c1
-rw-r--r--arch/powerpc/math-emu/mtfsfi.c1
-rw-r--r--arch/powerpc/math-emu/stfd.c1
-rw-r--r--arch/powerpc/math-emu/stfiwx.c1
-rw-r--r--arch/powerpc/math-emu/stfs.c1
-rw-r--r--arch/powerpc/math-emu/udivmodti4.c1
-rw-r--r--arch/powerpc/mm/Makefile1
-rw-r--r--arch/powerpc/mm/highmem.c1
-rw-r--r--arch/powerpc/mm/hugetlbpage-book3e.c1
-rw-r--r--arch/powerpc/mm/hugetlbpage-hash64.c1
-rw-r--r--arch/powerpc/mm/hugetlbpage-radix.c1
-rw-r--r--arch/powerpc/mm/numa.c1
-rw-r--r--arch/powerpc/mm/pgtable_32.c2
-rw-r--r--arch/powerpc/mm/tlb-radix.c2
-rw-r--r--arch/powerpc/mm/vphn.c1
-rw-r--r--arch/powerpc/mm/vphn.h1
-rw-r--r--arch/powerpc/net/Makefile1
-rw-r--r--arch/powerpc/oprofile/Makefile1
-rw-r--r--arch/powerpc/perf/Makefile1
-rw-r--r--arch/powerpc/perf/core-book3s.c5
-rw-r--r--arch/powerpc/perf/hv-24x7-catalog.h1
-rw-r--r--arch/powerpc/perf/hv-24x7-domains.h1
-rw-r--r--arch/powerpc/perf/hv-24x7.h1
-rw-r--r--arch/powerpc/perf/hv-common.c1
-rw-r--r--arch/powerpc/perf/hv-common.h1
-rw-r--r--arch/powerpc/perf/hv-gpci-requests.h1
-rw-r--r--arch/powerpc/perf/hv-gpci.h1
-rw-r--r--arch/powerpc/perf/imc-pmu.c57
-rw-r--r--arch/powerpc/perf/req-gen/_begin.h1
-rw-r--r--arch/powerpc/perf/req-gen/_clear.h1
-rw-r--r--arch/powerpc/perf/req-gen/_request-begin.h1
-rw-r--r--arch/powerpc/perf/req-gen/_request-end.h1
-rw-r--r--arch/powerpc/perf/req-gen/perf.h1
-rw-r--r--arch/powerpc/platforms/40x/Kconfig1
-rw-r--r--arch/powerpc/platforms/44x/44x.h1
-rw-r--r--arch/powerpc/platforms/44x/Kconfig1
-rw-r--r--arch/powerpc/platforms/44x/Makefile1
-rw-r--r--arch/powerpc/platforms/44x/virtex_ml510.c1
-rw-r--r--arch/powerpc/platforms/512x/Kconfig1
-rw-r--r--arch/powerpc/platforms/512x/Makefile1
-rw-r--r--arch/powerpc/platforms/52xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/52xx/Makefile1
-rw-r--r--arch/powerpc/platforms/52xx/lite5200_pm.c1
-rw-r--r--arch/powerpc/platforms/52xx/lite5200_sleep.S1
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_pm.c1
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_sleep.S1
-rw-r--r--arch/powerpc/platforms/82xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/82xx/Makefile1
-rw-r--r--arch/powerpc/platforms/82xx/pq2.h1
-rw-r--r--arch/powerpc/platforms/83xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/83xx/Makefile1
-rw-r--r--arch/powerpc/platforms/83xx/mpc83xx.h1
-rw-r--r--arch/powerpc/platforms/85xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/85xx/Makefile1
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx.h1
-rw-r--r--arch/powerpc/platforms/85xx/smp.h1
-rw-r--r--arch/powerpc/platforms/86xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/86xx/Makefile1
-rw-r--r--arch/powerpc/platforms/8xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/8xx/Makefile1
-rw-r--r--arch/powerpc/platforms/8xx/m8xx_setup.c1
-rw-r--r--arch/powerpc/platforms/Kconfig1
-rw-r--r--arch/powerpc/platforms/Kconfig.cputype1
-rw-r--r--arch/powerpc/platforms/Makefile1
-rw-r--r--arch/powerpc/platforms/amigaone/Kconfig1
-rw-r--r--arch/powerpc/platforms/cell/Kconfig1
-rw-r--r--arch/powerpc/platforms/cell/Makefile1
-rw-r--r--arch/powerpc/platforms/cell/interrupt.h1
-rw-r--r--arch/powerpc/platforms/cell/ras.h1
-rw-r--r--arch/powerpc/platforms/cell/spufs/Makefile1
-rw-r--r--arch/powerpc/platforms/cell/spufs/run.c1
-rw-r--r--arch/powerpc/platforms/cell/spufs/sputrace.h1
-rw-r--r--arch/powerpc/platforms/cell/spufs/syscalls.c1
-rw-r--r--arch/powerpc/platforms/chrp/Kconfig1
-rw-r--r--arch/powerpc/platforms/chrp/chrp.h1
-rw-r--r--arch/powerpc/platforms/chrp/pci.c1
-rw-r--r--arch/powerpc/platforms/chrp/pegasos_eth.c1
-rw-r--r--arch/powerpc/platforms/chrp/setup.c1
-rw-r--r--arch/powerpc/platforms/chrp/smp.c1
-rw-r--r--arch/powerpc/platforms/chrp/time.c1
-rw-r--r--arch/powerpc/platforms/embedded6xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/embedded6xx/Makefile1
-rw-r--r--arch/powerpc/platforms/maple/Kconfig1
-rw-r--r--arch/powerpc/platforms/maple/maple.h1
-rw-r--r--arch/powerpc/platforms/pasemi/Kconfig1
-rw-r--r--arch/powerpc/platforms/pasemi/pasemi.h1
-rw-r--r--arch/powerpc/platforms/powermac/Kconfig1
-rw-r--r--arch/powerpc/platforms/powermac/Makefile1
-rw-r--r--arch/powerpc/platforms/powermac/pfunc_base.c1
-rw-r--r--arch/powerpc/platforms/powermac/pmac.h1
-rw-r--r--arch/powerpc/platforms/powermac/time.c1
-rw-r--r--arch/powerpc/platforms/powermac/udbg_adb.c1
-rw-r--r--arch/powerpc/platforms/powernv/Kconfig1
-rw-r--r--arch/powerpc/platforms/powernv/Makefile1
-rw-r--r--arch/powerpc/platforms/powernv/idle.c8
-rw-r--r--arch/powerpc/platforms/powernv/opal-tracepoints.c1
-rw-r--r--arch/powerpc/platforms/powernv/pci.h1
-rw-r--r--arch/powerpc/platforms/powernv/powernv.h1
-rw-r--r--arch/powerpc/platforms/powernv/setup.c10
-rw-r--r--arch/powerpc/platforms/ps3/Kconfig1
-rw-r--r--arch/powerpc/platforms/ps3/Makefile1
-rw-r--r--arch/powerpc/platforms/pseries/Kconfig1
-rw-r--r--arch/powerpc/platforms/pseries/Makefile1
-rw-r--r--arch/powerpc/platforms/pseries/dlpar.c1
-rw-r--r--arch/powerpc/platforms/pseries/hotplug-cpu.c6
-rw-r--r--arch/powerpc/platforms/pseries/mobility.c4
-rw-r--r--arch/powerpc/platforms/pseries/of_helpers.c1
-rw-r--r--arch/powerpc/platforms/pseries/of_helpers.h1
-rw-r--r--arch/powerpc/platforms/pseries/offline_states.h1
-rw-r--r--arch/powerpc/platforms/pseries/suspend.c2
-rw-r--r--arch/powerpc/purgatory/Makefile1
-rw-r--r--arch/powerpc/sysdev/Kconfig1
-rw-r--r--arch/powerpc/sysdev/Makefile1
-rw-r--r--arch/powerpc/sysdev/cpm1.c1
-rw-r--r--arch/powerpc/sysdev/cpm2_pic.h1
-rw-r--r--arch/powerpc/sysdev/fsl_rio.c17
-rw-r--r--arch/powerpc/sysdev/fsl_rmu.c8
-rw-r--r--arch/powerpc/sysdev/fsl_soc.h1
-rw-r--r--arch/powerpc/sysdev/ge/ge_pic.h1
-rw-r--r--arch/powerpc/sysdev/micropatch.c1
-rw-r--r--arch/powerpc/sysdev/mpc5xxx_clocks.c1
-rw-r--r--arch/powerpc/sysdev/mv64x60.h1
-rw-r--r--arch/powerpc/sysdev/simple_gpio.h1
-rw-r--r--arch/powerpc/sysdev/xics/Kconfig1
-rw-r--r--arch/powerpc/sysdev/xics/Makefile1
-rw-r--r--arch/powerpc/sysdev/xics/ics-rtas.c1
-rw-r--r--arch/powerpc/sysdev/xive/Kconfig1
-rw-r--r--arch/powerpc/sysdev/xive/common.c8
-rw-r--r--arch/powerpc/sysdev/xive/spapr.c4
-rwxr-xr-xarch/powerpc/tools/gcc-check-mprofile-kernel.sh1
-rw-r--r--arch/powerpc/xmon/Makefile1
-rw-r--r--arch/powerpc/xmon/nonstdio.h1
-rw-r--r--arch/powerpc/xmon/spr_access.S1
-rw-r--r--arch/s390/Kconfig1
-rw-r--r--arch/s390/Kconfig.debug1
-rw-r--r--arch/s390/appldata/appldata.h1
-rw-r--r--arch/s390/boot/Makefile1
-rw-r--r--arch/s390/boot/compressed/Makefile1
-rw-r--r--arch/s390/boot/compressed/head.S1
-rw-r--r--arch/s390/boot/compressed/misc.c1
-rw-r--r--arch/s390/boot/compressed/vmlinux.lds.S1
-rw-r--r--arch/s390/configs/zfcpdump_defconfig2
-rw-r--r--arch/s390/crypto/Makefile1
-rw-r--r--arch/s390/crypto/crc32be-vx.S1
-rw-r--r--arch/s390/crypto/crc32le-vx.S1
-rw-r--r--arch/s390/hypfs/hypfs.h1
-rw-r--r--arch/s390/hypfs/hypfs_dbfs.c1
-rw-r--r--arch/s390/hypfs/hypfs_diag.c1
-rw-r--r--arch/s390/hypfs/hypfs_diag0c.c1
-rw-r--r--arch/s390/hypfs/hypfs_sprp.c1
-rw-r--r--arch/s390/hypfs/hypfs_vm.c1
-rw-r--r--arch/s390/include/asm/airq.h1
-rw-r--r--arch/s390/include/asm/appldata.h1
-rw-r--r--arch/s390/include/asm/archrandom.h1
-rw-r--r--arch/s390/include/asm/asm-prototypes.h1
-rw-r--r--arch/s390/include/asm/atomic.h1
-rw-r--r--arch/s390/include/asm/atomic_ops.h1
-rw-r--r--arch/s390/include/asm/barrier.h1
-rw-r--r--arch/s390/include/asm/bitops.h1
-rw-r--r--arch/s390/include/asm/bug.h1
-rw-r--r--arch/s390/include/asm/cache.h1
-rw-r--r--arch/s390/include/asm/ccwdev.h1
-rw-r--r--arch/s390/include/asm/ccwgroup.h1
-rw-r--r--arch/s390/include/asm/checksum.h1
-rw-r--r--arch/s390/include/asm/chpid.h1
-rw-r--r--arch/s390/include/asm/cio.h1
-rw-r--r--arch/s390/include/asm/clp.h1
-rw-r--r--arch/s390/include/asm/cmb.h1
-rw-r--r--arch/s390/include/asm/cmpxchg.h1
-rw-r--r--arch/s390/include/asm/compat.h1
-rw-r--r--arch/s390/include/asm/cpacf.h1
-rw-r--r--arch/s390/include/asm/cpcmd.h1
-rw-r--r--arch/s390/include/asm/cpu.h1
-rw-r--r--arch/s390/include/asm/cpufeature.h1
-rw-r--r--arch/s390/include/asm/cputime.h1
-rw-r--r--arch/s390/include/asm/crw.h1
-rw-r--r--arch/s390/include/asm/css_chars.h1
-rw-r--r--arch/s390/include/asm/ctl_reg.h1
-rw-r--r--arch/s390/include/asm/current.h1
-rw-r--r--arch/s390/include/asm/debug.h1
-rw-r--r--arch/s390/include/asm/delay.h1
-rw-r--r--arch/s390/include/asm/diag.h1
-rw-r--r--arch/s390/include/asm/dis.h1
-rw-r--r--arch/s390/include/asm/dma-mapping.h1
-rw-r--r--arch/s390/include/asm/dma.h1
-rw-r--r--arch/s390/include/asm/eadm.h1
-rw-r--r--arch/s390/include/asm/ebcdic.h1
-rw-r--r--arch/s390/include/asm/elf.h1
-rw-r--r--arch/s390/include/asm/exec.h1
-rw-r--r--arch/s390/include/asm/extable.h1
-rw-r--r--arch/s390/include/asm/extmem.h1
-rw-r--r--arch/s390/include/asm/facility.h1
-rw-r--r--arch/s390/include/asm/fcx.h1
-rw-r--r--arch/s390/include/asm/fpu/api.h1
-rw-r--r--arch/s390/include/asm/fpu/internal.h1
-rw-r--r--arch/s390/include/asm/fpu/types.h1
-rw-r--r--arch/s390/include/asm/ftrace.h1
-rw-r--r--arch/s390/include/asm/futex.h1
-rw-r--r--arch/s390/include/asm/gmap.h1
-rw-r--r--arch/s390/include/asm/hardirq.h1
-rw-r--r--arch/s390/include/asm/hugetlb.h1
-rw-r--r--arch/s390/include/asm/hw_irq.h1
-rw-r--r--arch/s390/include/asm/idals.h1
-rw-r--r--arch/s390/include/asm/idle.h1
-rw-r--r--arch/s390/include/asm/io.h1
-rw-r--r--arch/s390/include/asm/ipl.h1
-rw-r--r--arch/s390/include/asm/irq.h1
-rw-r--r--arch/s390/include/asm/irqflags.h1
-rw-r--r--arch/s390/include/asm/isc.h1
-rw-r--r--arch/s390/include/asm/itcw.h1
-rw-r--r--arch/s390/include/asm/jump_label.h1
-rw-r--r--arch/s390/include/asm/kdebug.h1
-rw-r--r--arch/s390/include/asm/kexec.h1
-rw-r--r--arch/s390/include/asm/linkage.h1
-rw-r--r--arch/s390/include/asm/lowcore.h1
-rw-r--r--arch/s390/include/asm/mmu.h1
-rw-r--r--arch/s390/include/asm/mmu_context.h1
-rw-r--r--arch/s390/include/asm/mmzone.h1
-rw-r--r--arch/s390/include/asm/module.h1
-rw-r--r--arch/s390/include/asm/nmi.h1
-rw-r--r--arch/s390/include/asm/numa.h1
-rw-r--r--arch/s390/include/asm/os_info.h1
-rw-r--r--arch/s390/include/asm/page-states.h1
-rw-r--r--arch/s390/include/asm/page.h1
-rw-r--r--arch/s390/include/asm/pci.h1
-rw-r--r--arch/s390/include/asm/pci_clp.h1
-rw-r--r--arch/s390/include/asm/pci_debug.h1
-rw-r--r--arch/s390/include/asm/pci_dma.h1
-rw-r--r--arch/s390/include/asm/pci_insn.h1
-rw-r--r--arch/s390/include/asm/pci_io.h1
-rw-r--r--arch/s390/include/asm/percpu.h1
-rw-r--r--arch/s390/include/asm/perf_event.h1
-rw-r--r--arch/s390/include/asm/pgalloc.h1
-rw-r--r--arch/s390/include/asm/pgtable.h5
-rw-r--r--arch/s390/include/asm/pkey.h1
-rw-r--r--arch/s390/include/asm/preempt.h1
-rw-r--r--arch/s390/include/asm/processor.h1
-rw-r--r--arch/s390/include/asm/ptrace.h1
-rw-r--r--arch/s390/include/asm/qdio.h1
-rw-r--r--arch/s390/include/asm/reset.h1
-rw-r--r--arch/s390/include/asm/runtime_instr.h1
-rw-r--r--arch/s390/include/asm/rwsem.h1
-rw-r--r--arch/s390/include/asm/schid.h1
-rw-r--r--arch/s390/include/asm/sclp.h1
-rw-r--r--arch/s390/include/asm/scsw.h1
-rw-r--r--arch/s390/include/asm/seccomp.h1
-rw-r--r--arch/s390/include/asm/sections.h1
-rw-r--r--arch/s390/include/asm/serial.h1
-rw-r--r--arch/s390/include/asm/set_memory.h1
-rw-r--r--arch/s390/include/asm/setup.h1
-rw-r--r--arch/s390/include/asm/shmparam.h1
-rw-r--r--arch/s390/include/asm/signal.h1
-rw-r--r--arch/s390/include/asm/sigp.h1
-rw-r--r--arch/s390/include/asm/smp.h1
-rw-r--r--arch/s390/include/asm/sparsemem.h1
-rw-r--r--arch/s390/include/asm/spinlock.h1
-rw-r--r--arch/s390/include/asm/spinlock_types.h1
-rw-r--r--arch/s390/include/asm/stp.h1
-rw-r--r--arch/s390/include/asm/string.h1
-rw-r--r--arch/s390/include/asm/switch_to.h1
-rw-r--r--arch/s390/include/asm/termios.h1
-rw-r--r--arch/s390/include/asm/thread_info.h1
-rw-r--r--arch/s390/include/asm/timex.h1
-rw-r--r--arch/s390/include/asm/tlb.h1
-rw-r--r--arch/s390/include/asm/tlbflush.h1
-rw-r--r--arch/s390/include/asm/topology.h1
-rw-r--r--arch/s390/include/asm/trace/diag.h1
-rw-r--r--arch/s390/include/asm/trace/zcrypt.h1
-rw-r--r--arch/s390/include/asm/uaccess.h1
-rw-r--r--arch/s390/include/asm/unistd.h1
-rw-r--r--arch/s390/include/asm/uprobes.h1
-rw-r--r--arch/s390/include/asm/user.h1
-rw-r--r--arch/s390/include/asm/vdso.h1
-rw-r--r--arch/s390/include/asm/vtime.h1
-rw-r--r--arch/s390/include/asm/vtimer.h1
-rw-r--r--arch/s390/include/asm/vx-insn.h1
-rw-r--r--arch/s390/include/asm/xor.h1
-rw-r--r--arch/s390/include/uapi/asm/auxvec.h1
-rw-r--r--arch/s390/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/s390/include/uapi/asm/byteorder.h1
-rw-r--r--arch/s390/include/uapi/asm/chpid.h1
-rw-r--r--arch/s390/include/uapi/asm/chsc.h1
-rw-r--r--arch/s390/include/uapi/asm/clp.h1
-rw-r--r--arch/s390/include/uapi/asm/cmb.h1
-rw-r--r--arch/s390/include/uapi/asm/dasd.h1
-rw-r--r--arch/s390/include/uapi/asm/debug.h1
-rw-r--r--arch/s390/include/uapi/asm/guarded_storage.h1
-rw-r--r--arch/s390/include/uapi/asm/hypfs.h1
-rw-r--r--arch/s390/include/uapi/asm/ioctls.h1
-rw-r--r--arch/s390/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/s390/include/uapi/asm/kvm.h1
-rw-r--r--arch/s390/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/s390/include/uapi/asm/kvm_perf.h1
-rw-r--r--arch/s390/include/uapi/asm/kvm_virtio.h1
-rw-r--r--arch/s390/include/uapi/asm/monwriter.h1
-rw-r--r--arch/s390/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/s390/include/uapi/asm/pkey.h1
-rw-r--r--arch/s390/include/uapi/asm/posix_types.h1
-rw-r--r--arch/s390/include/uapi/asm/ptrace.h1
-rw-r--r--arch/s390/include/uapi/asm/qeth.h1
-rw-r--r--arch/s390/include/uapi/asm/schid.h1
-rw-r--r--arch/s390/include/uapi/asm/sclp_ctl.h1
-rw-r--r--arch/s390/include/uapi/asm/sembuf.h1
-rw-r--r--arch/s390/include/uapi/asm/setup.h1
-rw-r--r--arch/s390/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/s390/include/uapi/asm/sie.h1
-rw-r--r--arch/s390/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/s390/include/uapi/asm/siginfo.h1
-rw-r--r--arch/s390/include/uapi/asm/signal.h1
-rw-r--r--arch/s390/include/uapi/asm/socket.h1
-rw-r--r--arch/s390/include/uapi/asm/stat.h1
-rw-r--r--arch/s390/include/uapi/asm/statfs.h1
-rw-r--r--arch/s390/include/uapi/asm/tape390.h1
-rw-r--r--arch/s390/include/uapi/asm/termios.h1
-rw-r--r--arch/s390/include/uapi/asm/types.h1
-rw-r--r--arch/s390/include/uapi/asm/ucontext.h1
-rw-r--r--arch/s390/include/uapi/asm/unistd.h1
-rw-r--r--arch/s390/include/uapi/asm/virtio-ccw.h1
-rw-r--r--arch/s390/include/uapi/asm/vtoc.h1
-rw-r--r--arch/s390/include/uapi/asm/zcrypt.h1
-rw-r--r--arch/s390/kernel/Makefile1
-rw-r--r--arch/s390/kernel/als.c1
-rw-r--r--arch/s390/kernel/asm-offsets.c1
-rw-r--r--arch/s390/kernel/audit.c1
-rw-r--r--arch/s390/kernel/audit.h1
-rw-r--r--arch/s390/kernel/base.S1
-rw-r--r--arch/s390/kernel/cache.c1
-rw-r--r--arch/s390/kernel/compat_audit.c1
-rw-r--r--arch/s390/kernel/compat_linux.c1
-rw-r--r--arch/s390/kernel/compat_linux.h1
-rw-r--r--arch/s390/kernel/compat_ptrace.h1
-rw-r--r--arch/s390/kernel/compat_signal.c1
-rw-r--r--arch/s390/kernel/compat_wrapper.c1
-rw-r--r--arch/s390/kernel/cpcmd.c1
-rw-r--r--arch/s390/kernel/crash_dump.c1
-rw-r--r--arch/s390/kernel/debug.c1
-rw-r--r--arch/s390/kernel/diag.c1
-rw-r--r--arch/s390/kernel/early.c13
-rw-r--r--arch/s390/kernel/early_printk.c1
-rw-r--r--arch/s390/kernel/ebcdic.c1
-rw-r--r--arch/s390/kernel/entry.S8
-rw-r--r--arch/s390/kernel/entry.h1
-rw-r--r--arch/s390/kernel/fpu.c1
-rw-r--r--arch/s390/kernel/ftrace.c1
-rw-r--r--arch/s390/kernel/guarded_storage.c1
-rw-r--r--arch/s390/kernel/head.S1
-rw-r--r--arch/s390/kernel/head64.S1
-rw-r--r--arch/s390/kernel/head_kdump.S1
-rw-r--r--arch/s390/kernel/idle.c1
-rw-r--r--arch/s390/kernel/irq.c1
-rw-r--r--arch/s390/kernel/jump_label.c1
-rw-r--r--arch/s390/kernel/kdebugfs.c1
-rw-r--r--arch/s390/kernel/machine_kexec.c1
-rw-r--r--arch/s390/kernel/mcount.S1
-rw-r--r--arch/s390/kernel/os_info.c1
-rw-r--r--arch/s390/kernel/perf_cpum_cf_events.c1
-rw-r--r--arch/s390/kernel/perf_cpum_sf.c9
-rw-r--r--arch/s390/kernel/pgm_check.S1
-rw-r--r--arch/s390/kernel/process.c1
-rw-r--r--arch/s390/kernel/processor.c1
-rw-r--r--arch/s390/kernel/ptrace.c1
-rw-r--r--arch/s390/kernel/reipl.S1
-rw-r--r--arch/s390/kernel/relocate_kernel.S1
-rw-r--r--arch/s390/kernel/runtime_instr.c1
-rw-r--r--arch/s390/kernel/signal.c1
-rw-r--r--arch/s390/kernel/smp.c4
-rw-r--r--arch/s390/kernel/suspend.c1
-rw-r--r--arch/s390/kernel/swsusp.S1
-rw-r--r--arch/s390/kernel/sys_s390.c1
-rw-r--r--arch/s390/kernel/syscalls.S1
-rw-r--r--arch/s390/kernel/sysinfo.c1
-rw-r--r--arch/s390/kernel/topology.c148
-rw-r--r--arch/s390/kernel/trace.c1
-rw-r--r--arch/s390/kernel/traps.c1
-rw-r--r--arch/s390/kernel/uprobes.c1
-rw-r--r--arch/s390/kernel/vdso32/Makefile1
-rw-r--r--arch/s390/kernel/vdso32/getcpu.S1
-rw-r--r--arch/s390/kernel/vdso32/note.S1
-rw-r--r--arch/s390/kernel/vdso32/vdso32.lds.S1
-rw-r--r--arch/s390/kernel/vdso32/vdso32_wrapper.S1
-rw-r--r--arch/s390/kernel/vdso64/Makefile1
-rw-r--r--arch/s390/kernel/vdso64/getcpu.S1
-rw-r--r--arch/s390/kernel/vdso64/vdso64.lds.S1
-rw-r--r--arch/s390/kernel/vdso64/vdso64_wrapper.S1
-rw-r--r--arch/s390/kernel/vmlinux.lds.S1
-rw-r--r--arch/s390/kvm/Kconfig1
-rw-r--r--arch/s390/kvm/gaccess.c1
-rw-r--r--arch/s390/kvm/trace-s390.h1
-rw-r--r--arch/s390/kvm/trace.h1
-rw-r--r--arch/s390/lib/Makefile1
-rw-r--r--arch/s390/lib/delay.c1
-rw-r--r--arch/s390/lib/find.c1
-rw-r--r--arch/s390/lib/mem.S1
-rw-r--r--arch/s390/lib/probes.c1
-rw-r--r--arch/s390/lib/spinlock.c1
-rw-r--r--arch/s390/lib/string.c1
-rw-r--r--arch/s390/lib/uaccess.c1
-rw-r--r--arch/s390/lib/xor.c1
-rw-r--r--arch/s390/mm/Makefile1
-rw-r--r--arch/s390/mm/dump_pagetables.c1
-rw-r--r--arch/s390/mm/extmem.c1
-rw-r--r--arch/s390/mm/fault.c1
-rw-r--r--arch/s390/mm/gup.c8
-rw-r--r--arch/s390/mm/hugetlbpage.c1
-rw-r--r--arch/s390/mm/init.c1
-rw-r--r--arch/s390/mm/maccess.c1
-rw-r--r--arch/s390/mm/mem_detect.c1
-rw-r--r--arch/s390/mm/page-states.c1
-rw-r--r--arch/s390/mm/pageattr.c1
-rw-r--r--arch/s390/mm/pgalloc.c1
-rw-r--r--arch/s390/mm/vmem.c1
-rw-r--r--arch/s390/net/bpf_jit.S1
-rw-r--r--arch/s390/net/bpf_jit.h1
-rw-r--r--arch/s390/net/bpf_jit_comp.c1
-rw-r--r--arch/s390/numa/mode_emu.c1
-rw-r--r--arch/s390/numa/numa.c1
-rw-r--r--arch/s390/numa/numa_mode.h1
-rw-r--r--arch/s390/numa/toptree.c1
-rw-r--r--arch/s390/numa/toptree.h1
-rw-r--r--arch/s390/oprofile/Makefile1
-rw-r--r--arch/s390/oprofile/init.c1
-rw-r--r--arch/s390/pci/pci_clp.c1
-rw-r--r--arch/s390/pci/pci_event.c1
-rw-r--r--arch/s390/pci/pci_mmio.c1
-rw-r--r--arch/s390/pci/pci_sysfs.c1
-rw-r--r--arch/s390/tools/Makefile1
-rw-r--r--arch/s390/tools/gen_facilities.c1
-rw-r--r--arch/score/Kconfig1
-rw-r--r--arch/score/Kconfig.debug1
-rw-r--r--arch/score/include/asm/asmmacro.h1
-rw-r--r--arch/score/include/asm/atomic.h1
-rw-r--r--arch/score/include/asm/bitops.h1
-rw-r--r--arch/score/include/asm/bug.h1
-rw-r--r--arch/score/include/asm/bugs.h1
-rw-r--r--arch/score/include/asm/cache.h1
-rw-r--r--arch/score/include/asm/cacheflush.h1
-rw-r--r--arch/score/include/asm/checksum.h1
-rw-r--r--arch/score/include/asm/cmpxchg.h1
-rw-r--r--arch/score/include/asm/delay.h1
-rw-r--r--arch/score/include/asm/device.h1
-rw-r--r--arch/score/include/asm/div64.h1
-rw-r--r--arch/score/include/asm/dma.h1
-rw-r--r--arch/score/include/asm/elf.h1
-rw-r--r--arch/score/include/asm/emergency-restart.h1
-rw-r--r--arch/score/include/asm/exec.h1
-rw-r--r--arch/score/include/asm/fixmap.h1
-rw-r--r--arch/score/include/asm/futex.h1
-rw-r--r--arch/score/include/asm/hardirq.h1
-rw-r--r--arch/score/include/asm/io.h1
-rw-r--r--arch/score/include/asm/irq.h1
-rw-r--r--arch/score/include/asm/irq_regs.h1
-rw-r--r--arch/score/include/asm/irqflags.h1
-rw-r--r--arch/score/include/asm/kdebug.h1
-rw-r--r--arch/score/include/asm/kmap_types.h1
-rw-r--r--arch/score/include/asm/linkage.h1
-rw-r--r--arch/score/include/asm/local.h1
-rw-r--r--arch/score/include/asm/mmu.h1
-rw-r--r--arch/score/include/asm/mmu_context.h1
-rw-r--r--arch/score/include/asm/module.h1
-rw-r--r--arch/score/include/asm/page.h1
-rw-r--r--arch/score/include/asm/percpu.h1
-rw-r--r--arch/score/include/asm/pgalloc.h1
-rw-r--r--arch/score/include/asm/pgtable-bits.h1
-rw-r--r--arch/score/include/asm/pgtable.h1
-rw-r--r--arch/score/include/asm/processor.h1
-rw-r--r--arch/score/include/asm/ptrace.h1
-rw-r--r--arch/score/include/asm/scoreregs.h1
-rw-r--r--arch/score/include/asm/segment.h1
-rw-r--r--arch/score/include/asm/setup.h1
-rw-r--r--arch/score/include/asm/shmparam.h1
-rw-r--r--arch/score/include/asm/string.h1
-rw-r--r--arch/score/include/asm/switch_to.h1
-rw-r--r--arch/score/include/asm/syscalls.h1
-rw-r--r--arch/score/include/asm/thread_info.h1
-rw-r--r--arch/score/include/asm/timex.h1
-rw-r--r--arch/score/include/asm/tlb.h1
-rw-r--r--arch/score/include/asm/tlbflush.h1
-rw-r--r--arch/score/include/asm/topology.h1
-rw-r--r--arch/score/include/asm/uaccess.h1
-rw-r--r--arch/score/include/asm/unaligned.h1
-rw-r--r--arch/score/include/asm/user.h1
-rw-r--r--arch/score/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/score/include/uapi/asm/byteorder.h1
-rw-r--r--arch/score/include/uapi/asm/errno.h1
-rw-r--r--arch/score/include/uapi/asm/fcntl.h1
-rw-r--r--arch/score/include/uapi/asm/ioctl.h1
-rw-r--r--arch/score/include/uapi/asm/ioctls.h1
-rw-r--r--arch/score/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/score/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/score/include/uapi/asm/mman.h1
-rw-r--r--arch/score/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/score/include/uapi/asm/param.h1
-rw-r--r--arch/score/include/uapi/asm/poll.h1
-rw-r--r--arch/score/include/uapi/asm/posix_types.h1
-rw-r--r--arch/score/include/uapi/asm/ptrace.h1
-rw-r--r--arch/score/include/uapi/asm/resource.h1
-rw-r--r--arch/score/include/uapi/asm/sembuf.h1
-rw-r--r--arch/score/include/uapi/asm/setup.h1
-rw-r--r--arch/score/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/score/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/score/include/uapi/asm/signal.h1
-rw-r--r--arch/score/include/uapi/asm/socket.h1
-rw-r--r--arch/score/include/uapi/asm/sockios.h1
-rw-r--r--arch/score/include/uapi/asm/stat.h1
-rw-r--r--arch/score/include/uapi/asm/statfs.h1
-rw-r--r--arch/score/include/uapi/asm/swab.h1
-rw-r--r--arch/score/include/uapi/asm/termbits.h1
-rw-r--r--arch/score/include/uapi/asm/termios.h1
-rw-r--r--arch/score/include/uapi/asm/types.h1
-rw-r--r--arch/score/include/uapi/asm/unistd.h1
-rw-r--r--arch/score/kernel/Makefile1
-rw-r--r--arch/score/kernel/sys_call_table.c1
-rw-r--r--arch/sh/Kconfig1
-rw-r--r--arch/sh/Kconfig.cpu1
-rw-r--r--arch/sh/Kconfig.debug1
-rw-r--r--arch/sh/boards/Kconfig1
-rw-r--r--arch/sh/boards/Makefile1
-rw-r--r--arch/sh/boards/board-edosk7705.c1
-rw-r--r--arch/sh/boards/board-polaris.c1
-rw-r--r--arch/sh/boards/board-secureedge5410.c1
-rw-r--r--arch/sh/boards/board-sh2007.c1
-rw-r--r--arch/sh/boards/board-shmin.c1
-rw-r--r--arch/sh/boards/mach-highlander/Kconfig1
-rw-r--r--arch/sh/boards/mach-highlander/Makefile1
-rw-r--r--arch/sh/boards/mach-migor/Kconfig1
-rw-r--r--arch/sh/boards/mach-r2d/Kconfig1
-rw-r--r--arch/sh/boards/mach-r2d/irq.c1
-rw-r--r--arch/sh/boards/mach-rsk/Kconfig1
-rw-r--r--arch/sh/boards/mach-sdk7780/Kconfig1
-rw-r--r--arch/sh/boards/mach-se/7206/irq.c1
-rw-r--r--arch/sh/boards/mach-se/7206/setup.c1
-rw-r--r--arch/sh/boards/mach-se/7343/setup.c1
-rw-r--r--arch/sh/boards/mach-se/770x/irq.c1
-rw-r--r--arch/sh/boards/mach-se/770x/setup.c1
-rw-r--r--arch/sh/boards/mach-se/7751/irq.c1
-rw-r--r--arch/sh/boards/mach-se/7751/setup.c1
-rw-r--r--arch/sh/boards/mach-se/Makefile1
-rw-r--r--arch/sh/boards/mach-se/board-se7619.c1
-rw-r--r--arch/sh/boards/mach-sh03/rtc.c1
-rw-r--r--arch/sh/boards/mach-sh03/setup.c1
-rw-r--r--arch/sh/boot/compressed/Makefile1
-rw-r--r--arch/sh/boot/compressed/cache.c1
-rw-r--r--arch/sh/boot/compressed/head_32.S1
-rw-r--r--arch/sh/boot/compressed/misc.c1
-rw-r--r--arch/sh/boot/dts/j2_mimas_v2.dts1
-rw-r--r--arch/sh/boot/romimage/Makefile1
-rw-r--r--arch/sh/boot/romimage/head.S1
-rw-r--r--arch/sh/cchips/Kconfig1
-rw-r--r--arch/sh/cchips/hd6446x/hd64461.c1
-rw-r--r--arch/sh/drivers/Kconfig1
-rw-r--r--arch/sh/drivers/Makefile1
-rw-r--r--arch/sh/drivers/dma/Kconfig1
-rw-r--r--arch/sh/drivers/pci/Makefile1
-rw-r--r--arch/sh/drivers/pci/common.c1
-rw-r--r--arch/sh/drivers/pci/fixups-cayman.c1
-rw-r--r--arch/sh/drivers/pci/fixups-se7751.c1
-rw-r--r--arch/sh/drivers/pci/fixups-sh03.c1
-rw-r--r--arch/sh/drivers/pci/pci-sh4.h1
-rw-r--r--arch/sh/include/asm/adc.h1
-rw-r--r--arch/sh/include/asm/alignment.h1
-rw-r--r--arch/sh/include/asm/atomic-grb.h1
-rw-r--r--arch/sh/include/asm/atomic-irq.h1
-rw-r--r--arch/sh/include/asm/atomic-llsc.h1
-rw-r--r--arch/sh/include/asm/atomic.h1
-rw-r--r--arch/sh/include/asm/barrier.h1
-rw-r--r--arch/sh/include/asm/bitops-cas.h1
-rw-r--r--arch/sh/include/asm/bitops-grb.h1
-rw-r--r--arch/sh/include/asm/bitops-llsc.h1
-rw-r--r--arch/sh/include/asm/bitops-op32.h1
-rw-r--r--arch/sh/include/asm/bitops.h1
-rw-r--r--arch/sh/include/asm/bl_bit.h1
-rw-r--r--arch/sh/include/asm/bl_bit_32.h1
-rw-r--r--arch/sh/include/asm/bug.h1
-rw-r--r--arch/sh/include/asm/bugs.h1
-rw-r--r--arch/sh/include/asm/cache.h1
-rw-r--r--arch/sh/include/asm/cache_insns.h1
-rw-r--r--arch/sh/include/asm/cache_insns_32.h1
-rw-r--r--arch/sh/include/asm/cacheflush.h1
-rw-r--r--arch/sh/include/asm/checksum.h1
-rw-r--r--arch/sh/include/asm/clock.h1
-rw-r--r--arch/sh/include/asm/cmpxchg-cas.h1
-rw-r--r--arch/sh/include/asm/cmpxchg-grb.h1
-rw-r--r--arch/sh/include/asm/cmpxchg-irq.h1
-rw-r--r--arch/sh/include/asm/cmpxchg-llsc.h1
-rw-r--r--arch/sh/include/asm/cmpxchg.h1
-rw-r--r--arch/sh/include/asm/dma-mapping.h1
-rw-r--r--arch/sh/include/asm/dmabrg.h1
-rw-r--r--arch/sh/include/asm/elf.h1
-rw-r--r--arch/sh/include/asm/entry-macros.S1
-rw-r--r--arch/sh/include/asm/extable.h1
-rw-r--r--arch/sh/include/asm/fpu.h1
-rw-r--r--arch/sh/include/asm/ftrace.h1
-rw-r--r--arch/sh/include/asm/futex-cas.h1
-rw-r--r--arch/sh/include/asm/futex-irq.h1
-rw-r--r--arch/sh/include/asm/futex-llsc.h1
-rw-r--r--arch/sh/include/asm/futex.h1
-rw-r--r--arch/sh/include/asm/hardirq.h1
-rw-r--r--arch/sh/include/asm/hd64461.h1
-rw-r--r--arch/sh/include/asm/heartbeat.h1
-rw-r--r--arch/sh/include/asm/hugetlb.h1
-rw-r--r--arch/sh/include/asm/hw_breakpoint.h1
-rw-r--r--arch/sh/include/asm/hw_irq.h1
-rw-r--r--arch/sh/include/asm/i2c-sh7760.h1
-rw-r--r--arch/sh/include/asm/io.h1
-rw-r--r--arch/sh/include/asm/io_generic.h1
-rw-r--r--arch/sh/include/asm/io_noioport.h1
-rw-r--r--arch/sh/include/asm/io_trapped.h1
-rw-r--r--arch/sh/include/asm/irq.h1
-rw-r--r--arch/sh/include/asm/irqflags.h1
-rw-r--r--arch/sh/include/asm/kdebug.h1
-rw-r--r--arch/sh/include/asm/kexec.h1
-rw-r--r--arch/sh/include/asm/kgdb.h1
-rw-r--r--arch/sh/include/asm/kmap_types.h1
-rw-r--r--arch/sh/include/asm/kprobes.h1
-rw-r--r--arch/sh/include/asm/linkage.h1
-rw-r--r--arch/sh/include/asm/mmu.h1
-rw-r--r--arch/sh/include/asm/mmu_context.h1
-rw-r--r--arch/sh/include/asm/mmu_context_32.h1
-rw-r--r--arch/sh/include/asm/mmzone.h1
-rw-r--r--arch/sh/include/asm/module.h1
-rw-r--r--arch/sh/include/asm/page.h1
-rw-r--r--arch/sh/include/asm/pci.h1
-rw-r--r--arch/sh/include/asm/perf_event.h1
-rw-r--r--arch/sh/include/asm/pgalloc.h1
-rw-r--r--arch/sh/include/asm/pgtable-2level.h1
-rw-r--r--arch/sh/include/asm/pgtable-3level.h1
-rw-r--r--arch/sh/include/asm/pgtable_32.h1
-rw-r--r--arch/sh/include/asm/posix_types.h1
-rw-r--r--arch/sh/include/asm/processor.h1
-rw-r--r--arch/sh/include/asm/processor_32.h5
-rw-r--r--arch/sh/include/asm/processor_64.h4
-rw-r--r--arch/sh/include/asm/ptrace.h1
-rw-r--r--arch/sh/include/asm/ptrace_32.h1
-rw-r--r--arch/sh/include/asm/ptrace_64.h1
-rw-r--r--arch/sh/include/asm/push-switch.h1
-rw-r--r--arch/sh/include/asm/reboot.h1
-rw-r--r--arch/sh/include/asm/romimage-macros.h1
-rw-r--r--arch/sh/include/asm/rtc.h1
-rw-r--r--arch/sh/include/asm/seccomp.h1
-rw-r--r--arch/sh/include/asm/sections.h1
-rw-r--r--arch/sh/include/asm/segment.h1
-rw-r--r--arch/sh/include/asm/setup.h1
-rw-r--r--arch/sh/include/asm/sh7760fb.h1
-rw-r--r--arch/sh/include/asm/sh_bios.h1
-rw-r--r--arch/sh/include/asm/smc37c93x.h1
-rw-r--r--arch/sh/include/asm/smp-ops.h1
-rw-r--r--arch/sh/include/asm/smp.h1
-rw-r--r--arch/sh/include/asm/sparsemem.h1
-rw-r--r--arch/sh/include/asm/spi.h1
-rw-r--r--arch/sh/include/asm/spinlock_types.h1
-rw-r--r--arch/sh/include/asm/sram.h1
-rw-r--r--arch/sh/include/asm/stackprotector.h1
-rw-r--r--arch/sh/include/asm/stacktrace.h1
-rw-r--r--arch/sh/include/asm/string.h1
-rw-r--r--arch/sh/include/asm/string_64.h1
-rw-r--r--arch/sh/include/asm/suspend.h1
-rw-r--r--arch/sh/include/asm/switch_to_32.h1
-rw-r--r--arch/sh/include/asm/syscall.h1
-rw-r--r--arch/sh/include/asm/syscall_32.h1
-rw-r--r--arch/sh/include/asm/syscall_64.h1
-rw-r--r--arch/sh/include/asm/syscalls.h1
-rw-r--r--arch/sh/include/asm/syscalls_32.h1
-rw-r--r--arch/sh/include/asm/syscalls_64.h1
-rw-r--r--arch/sh/include/asm/thread_info.h1
-rw-r--r--arch/sh/include/asm/timex.h1
-rw-r--r--arch/sh/include/asm/tlb.h1
-rw-r--r--arch/sh/include/asm/tlbflush.h1
-rw-r--r--arch/sh/include/asm/topology.h1
-rw-r--r--arch/sh/include/asm/traps.h1
-rw-r--r--arch/sh/include/asm/traps_32.h1
-rw-r--r--arch/sh/include/asm/types.h1
-rw-r--r--arch/sh/include/asm/uaccess.h1
-rw-r--r--arch/sh/include/asm/uaccess_32.h1
-rw-r--r--arch/sh/include/asm/unaligned-sh4a.h1
-rw-r--r--arch/sh/include/asm/unaligned.h1
-rw-r--r--arch/sh/include/asm/uncached.h1
-rw-r--r--arch/sh/include/asm/unistd.h1
-rw-r--r--arch/sh/include/asm/unwinder.h1
-rw-r--r--arch/sh/include/asm/user.h1
-rw-r--r--arch/sh/include/asm/vmlinux.lds.h1
-rw-r--r--arch/sh/include/asm/word-at-a-time.h1
-rw-r--r--arch/sh/include/cpu-common/cpu/rtc.h1
-rw-r--r--arch/sh/include/cpu-common/cpu/sigcontext.h1
-rw-r--r--arch/sh/include/cpu-sh2a/cpu/addrspace.h1
-rw-r--r--arch/sh/include/cpu-sh2a/cpu/rtc.h1
-rw-r--r--arch/sh/include/cpu-sh2a/cpu/sh7203.h1
-rw-r--r--arch/sh/include/cpu-sh2a/cpu/sh7264.h5
-rw-r--r--arch/sh/include/cpu-sh2a/cpu/sh7269.h5
-rw-r--r--arch/sh/include/cpu-sh3/cpu/adc.h1
-rw-r--r--arch/sh/include/cpu-sh3/cpu/dac.h1
-rw-r--r--arch/sh/include/cpu-sh3/cpu/dma.h1
-rw-r--r--arch/sh/include/cpu-sh3/cpu/serial.h1
-rw-r--r--arch/sh/include/cpu-sh3/cpu/sh7720.h1
-rw-r--r--arch/sh/include/cpu-sh4/cpu/dma.h1
-rw-r--r--arch/sh/include/cpu-sh4/cpu/rtc.h1
-rw-r--r--arch/sh/include/cpu-sh4/cpu/sh7722.h3
-rw-r--r--arch/sh/include/cpu-sh4/cpu/sh7723.h1
-rw-r--r--arch/sh/include/cpu-sh4/cpu/sh7724.h1
-rw-r--r--arch/sh/include/cpu-sh4/cpu/sh7734.h1
-rw-r--r--arch/sh/include/cpu-sh4/cpu/sh7757.h9
-rw-r--r--arch/sh/include/cpu-sh4/cpu/sh7785.h1
-rw-r--r--arch/sh/include/cpu-sh4/cpu/shx3.h1
-rw-r--r--arch/sh/include/cpu-sh4/cpu/sigcontext.h1
-rw-r--r--arch/sh/include/cpu-sh4a/cpu/dma.h1
-rw-r--r--arch/sh/include/cpu-sh4a/cpu/serial.h1
-rw-r--r--arch/sh/include/cpu-sh5/cpu/addrspace.h1
-rw-r--r--arch/sh/include/cpu-sh5/cpu/mmu_context.h1
-rw-r--r--arch/sh/include/cpu-sh5/cpu/rtc.h1
-rw-r--r--arch/sh/include/mach-common/mach/highlander.h1
-rw-r--r--arch/sh/include/mach-common/mach/r2d.h1
-rw-r--r--arch/sh/include/mach-common/mach/romimage.h1
-rw-r--r--arch/sh/include/mach-common/mach/sh2007.h1
-rw-r--r--arch/sh/include/mach-common/mach/sh7785lcr.h1
-rw-r--r--arch/sh/include/mach-common/mach/shmin.h1
-rw-r--r--arch/sh/include/mach-common/mach/titan.h1
-rw-r--r--arch/sh/include/mach-common/mach/urquell.h1
-rw-r--r--arch/sh/include/mach-dreamcast/mach/maple.h1
-rw-r--r--arch/sh/include/mach-ecovec24/mach/romimage.h1
-rw-r--r--arch/sh/include/mach-kfr2r09/mach/kfr2r09.h1
-rw-r--r--arch/sh/include/mach-kfr2r09/mach/romimage.h1
-rw-r--r--arch/sh/include/mach-landisk/mach/gio.h1
-rw-r--r--arch/sh/include/mach-landisk/mach/iodata_landisk.h1
-rw-r--r--arch/sh/include/mach-migor/mach/migor.h1
-rw-r--r--arch/sh/include/mach-sdk7786/mach/fpga.h1
-rw-r--r--arch/sh/include/mach-sdk7786/mach/irq.h1
-rw-r--r--arch/sh/include/mach-se/mach/mrshpc.h1
-rw-r--r--arch/sh/include/mach-se/mach/se.h1
-rw-r--r--arch/sh/include/mach-se/mach/se7206.h1
-rw-r--r--arch/sh/include/mach-se/mach/se7343.h1
-rw-r--r--arch/sh/include/mach-se/mach/se7751.h1
-rw-r--r--arch/sh/include/mach-sh03/mach/io.h1
-rw-r--r--arch/sh/include/mach-sh03/mach/sh03.h1
-rw-r--r--arch/sh/include/mach-x3proto/mach/hardware.h1
-rw-r--r--arch/sh/include/mach-x3proto/mach/ilsel.h1
-rw-r--r--arch/sh/include/uapi/asm/auxvec.h1
-rw-r--r--arch/sh/include/uapi/asm/byteorder.h1
-rw-r--r--arch/sh/include/uapi/asm/cachectl.h1
-rw-r--r--arch/sh/include/uapi/asm/cpu-features.h1
-rw-r--r--arch/sh/include/uapi/asm/hw_breakpoint.h1
-rw-r--r--arch/sh/include/uapi/asm/ioctls.h1
-rw-r--r--arch/sh/include/uapi/asm/posix_types.h1
-rw-r--r--arch/sh/include/uapi/asm/posix_types_32.h1
-rw-r--r--arch/sh/include/uapi/asm/posix_types_64.h1
-rw-r--r--arch/sh/include/uapi/asm/ptrace.h1
-rw-r--r--arch/sh/include/uapi/asm/ptrace_32.h1
-rw-r--r--arch/sh/include/uapi/asm/ptrace_64.h1
-rw-r--r--arch/sh/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/sh/include/uapi/asm/signal.h1
-rw-r--r--arch/sh/include/uapi/asm/sockios.h1
-rw-r--r--arch/sh/include/uapi/asm/stat.h1
-rw-r--r--arch/sh/include/uapi/asm/swab.h1
-rw-r--r--arch/sh/include/uapi/asm/unistd.h1
-rw-r--r--arch/sh/include/uapi/asm/unistd_32.h1
-rw-r--r--arch/sh/include/uapi/asm/unistd_64.h1
-rw-r--r--arch/sh/kernel/Makefile1
-rw-r--r--arch/sh/kernel/asm-offsets.c1
-rw-r--r--arch/sh/kernel/cpu/Makefile1
-rw-r--r--arch/sh/kernel/cpu/adc.c1
-rw-r--r--arch/sh/kernel/cpu/clock-cpg.c1
-rw-r--r--arch/sh/kernel/cpu/fpu.c1
-rw-r--r--arch/sh/kernel/cpu/irq/imask.c1
-rw-r--r--arch/sh/kernel/cpu/proc.c1
-rw-r--r--arch/sh/kernel/cpu/sh2a/Makefile1
-rw-r--r--arch/sh/kernel/cpu/sh3/Makefile1
-rw-r--r--arch/sh/kernel/cpu/sh3/serial-sh770x.c1
-rw-r--r--arch/sh/kernel/cpu/sh3/serial-sh7710.c1
-rw-r--r--arch/sh/kernel/cpu/sh3/serial-sh7720.c1
-rw-r--r--arch/sh/kernel/cpu/sh4/Makefile1
-rw-r--r--arch/sh/kernel/cpu/sh4a/Makefile1
-rw-r--r--arch/sh/kernel/cpu/sh4a/pinmux-sh7722.c1
-rw-r--r--arch/sh/kernel/cpu/sh4a/serial-sh7722.c1
-rw-r--r--arch/sh/kernel/cpu/sh5/Makefile1
-rw-r--r--arch/sh/kernel/crash_dump.c1
-rw-r--r--arch/sh/kernel/ftrace.c1
-rw-r--r--arch/sh/kernel/irq.c1
-rw-r--r--arch/sh/kernel/kdebugfs.c1
-rw-r--r--arch/sh/kernel/process.c1
-rw-r--r--arch/sh/kernel/ptrace.c1
-rw-r--r--arch/sh/kernel/reboot.c1
-rw-r--r--arch/sh/kernel/setup.c1
-rw-r--r--arch/sh/kernel/sh_ksyms_32.c1
-rw-r--r--arch/sh/kernel/signal_32.c1
-rw-r--r--arch/sh/kernel/sys_sh.c1
-rw-r--r--arch/sh/kernel/sys_sh32.c1
-rw-r--r--arch/sh/kernel/traps.c1
-rw-r--r--arch/sh/kernel/vmlinux.lds.S1
-rw-r--r--arch/sh/kernel/vsyscall/Makefile1
-rw-r--r--arch/sh/kernel/vsyscall/vsyscall-note.S1
-rw-r--r--arch/sh/kernel/vsyscall/vsyscall-sigreturn.S1
-rw-r--r--arch/sh/kernel/vsyscall/vsyscall-syscall.S1
-rw-r--r--arch/sh/kernel/vsyscall/vsyscall-trapa.S1
-rw-r--r--arch/sh/kernel/vsyscall/vsyscall.lds.S1
-rw-r--r--arch/sh/lib/Makefile1
-rw-r--r--arch/sh/lib/__clear_user.S1
-rw-r--r--arch/sh/lib/ashldi3.c1
-rw-r--r--arch/sh/lib/ashrdi3.c1
-rw-r--r--arch/sh/lib/copy_page.S1
-rw-r--r--arch/sh/lib/delay.c1
-rw-r--r--arch/sh/lib/div64-generic.c1
-rw-r--r--arch/sh/lib/div64.S1
-rw-r--r--arch/sh/lib/lshrdi3.c1
-rw-r--r--arch/sh/lib/memchr.S1
-rw-r--r--arch/sh/lib/memcpy-sh4.S1
-rw-r--r--arch/sh/lib/memcpy.S1
-rw-r--r--arch/sh/lib/memmove.S1
-rw-r--r--arch/sh/lib/memset-sh4.S1
-rw-r--r--arch/sh/lib/memset.S1
-rw-r--r--arch/sh/lib/strlen.S1
-rw-r--r--arch/sh/lib64/copy_user_memcpy.S1
-rw-r--r--arch/sh/lib64/memcpy.S1
-rw-r--r--arch/sh/lib64/memset.S1
-rw-r--r--arch/sh/lib64/sdivsi3.S1
-rw-r--r--arch/sh/lib64/strcpy.S1
-rw-r--r--arch/sh/lib64/strlen.S1
-rw-r--r--arch/sh/lib64/udivdi3.S1
-rw-r--r--arch/sh/lib64/udivsi3.S1
-rw-r--r--arch/sh/math-emu/sfp-util.h1
-rw-r--r--arch/sh/mm/Kconfig1
-rw-r--r--arch/sh/mm/Makefile1
-rw-r--r--arch/sh/mm/extable_32.c1
-rw-r--r--arch/sh/mm/flush-sh4.c1
-rw-r--r--arch/sh/mm/gup.c1
-rw-r--r--arch/sh/mm/hugetlbpage.c1
-rw-r--r--arch/sh/mm/ioremap_fixed.c1
-rw-r--r--arch/sh/mm/pgtable.c1
-rw-r--r--arch/sh/mm/uncached.c1
-rw-r--r--arch/sh/oprofile/Makefile1
-rw-r--r--arch/sh/tools/gen-mach-types1
-rw-r--r--arch/sparc/Kconfig1
-rw-r--r--arch/sparc/Kconfig.debug1
-rw-r--r--arch/sparc/Makefile1
-rw-r--r--arch/sparc/boot/Makefile1
-rw-r--r--arch/sparc/crypto/Makefile1
-rw-r--r--arch/sparc/crypto/aes_asm.S1
-rw-r--r--arch/sparc/crypto/camellia_asm.S1
-rw-r--r--arch/sparc/crypto/crc32c_asm.S1
-rw-r--r--arch/sparc/crypto/crop_devid.c1
-rw-r--r--arch/sparc/crypto/des_asm.S1
-rw-r--r--arch/sparc/crypto/md5_asm.S1
-rw-r--r--arch/sparc/crypto/opcodes.h1
-rw-r--r--arch/sparc/crypto/sha1_asm.S1
-rw-r--r--arch/sparc/crypto/sha256_asm.S1
-rw-r--r--arch/sparc/crypto/sha512_asm.S1
-rw-r--r--arch/sparc/include/asm/agp.h1
-rw-r--r--arch/sparc/include/asm/apb.h1
-rw-r--r--arch/sparc/include/asm/asm-prototypes.h1
-rw-r--r--arch/sparc/include/asm/asm.h1
-rw-r--r--arch/sparc/include/asm/asmmacro.h1
-rw-r--r--arch/sparc/include/asm/atomic.h1
-rw-r--r--arch/sparc/include/asm/atomic_32.h1
-rw-r--r--arch/sparc/include/asm/atomic_64.h1
-rw-r--r--arch/sparc/include/asm/auxio.h1
-rw-r--r--arch/sparc/include/asm/auxio_32.h1
-rw-r--r--arch/sparc/include/asm/auxio_64.h1
-rw-r--r--arch/sparc/include/asm/backoff.h1
-rw-r--r--arch/sparc/include/asm/barrier.h1
-rw-r--r--arch/sparc/include/asm/barrier_32.h1
-rw-r--r--arch/sparc/include/asm/barrier_64.h1
-rw-r--r--arch/sparc/include/asm/bbc.h1
-rw-r--r--arch/sparc/include/asm/bitext.h1
-rw-r--r--arch/sparc/include/asm/bitops.h1
-rw-r--r--arch/sparc/include/asm/bitops_32.h1
-rw-r--r--arch/sparc/include/asm/bitops_64.h1
-rw-r--r--arch/sparc/include/asm/btext.h1
-rw-r--r--arch/sparc/include/asm/bug.h1
-rw-r--r--arch/sparc/include/asm/bugs.h1
-rw-r--r--arch/sparc/include/asm/cache.h1
-rw-r--r--arch/sparc/include/asm/cacheflush.h1
-rw-r--r--arch/sparc/include/asm/cacheflush_32.h1
-rw-r--r--arch/sparc/include/asm/cacheflush_64.h1
-rw-r--r--arch/sparc/include/asm/cachetlb_32.h1
-rw-r--r--arch/sparc/include/asm/chafsr.h1
-rw-r--r--arch/sparc/include/asm/checksum.h1
-rw-r--r--arch/sparc/include/asm/checksum_32.h1
-rw-r--r--arch/sparc/include/asm/checksum_64.h1
-rw-r--r--arch/sparc/include/asm/chmctrl.h1
-rw-r--r--arch/sparc/include/asm/cmpxchg.h1
-rw-r--r--arch/sparc/include/asm/cmpxchg_32.h1
-rw-r--r--arch/sparc/include/asm/cmpxchg_64.h1
-rw-r--r--arch/sparc/include/asm/compat.h1
-rw-r--r--arch/sparc/include/asm/compat_signal.h1
-rw-r--r--arch/sparc/include/asm/contregs.h1
-rw-r--r--arch/sparc/include/asm/cpu_type.h1
-rw-r--r--arch/sparc/include/asm/cpudata.h1
-rw-r--r--arch/sparc/include/asm/cpudata_32.h1
-rw-r--r--arch/sparc/include/asm/cpudata_64.h1
-rw-r--r--arch/sparc/include/asm/current.h1
-rw-r--r--arch/sparc/include/asm/dcr.h1
-rw-r--r--arch/sparc/include/asm/dcu.h1
-rw-r--r--arch/sparc/include/asm/delay.h1
-rw-r--r--arch/sparc/include/asm/delay_32.h1
-rw-r--r--arch/sparc/include/asm/delay_64.h1
-rw-r--r--arch/sparc/include/asm/dma-mapping.h1
-rw-r--r--arch/sparc/include/asm/dma.h1
-rw-r--r--arch/sparc/include/asm/ebus_dma.h1
-rw-r--r--arch/sparc/include/asm/ecc.h1
-rw-r--r--arch/sparc/include/asm/elf.h1
-rw-r--r--arch/sparc/include/asm/elf_32.h1
-rw-r--r--arch/sparc/include/asm/elf_64.h1
-rw-r--r--arch/sparc/include/asm/estate.h1
-rw-r--r--arch/sparc/include/asm/extable_64.h1
-rw-r--r--arch/sparc/include/asm/fb.h1
-rw-r--r--arch/sparc/include/asm/fbio.h1
-rw-r--r--arch/sparc/include/asm/fhc.h1
-rw-r--r--arch/sparc/include/asm/floppy.h1
-rw-r--r--arch/sparc/include/asm/floppy_32.h1
-rw-r--r--arch/sparc/include/asm/floppy_64.h1
-rw-r--r--arch/sparc/include/asm/fpumacro.h1
-rw-r--r--arch/sparc/include/asm/ftrace.h1
-rw-r--r--arch/sparc/include/asm/futex.h1
-rw-r--r--arch/sparc/include/asm/futex_64.h1
-rw-r--r--arch/sparc/include/asm/hardirq.h1
-rw-r--r--arch/sparc/include/asm/hardirq_32.h1
-rw-r--r--arch/sparc/include/asm/hardirq_64.h1
-rw-r--r--arch/sparc/include/asm/head.h1
-rw-r--r--arch/sparc/include/asm/head_32.h1
-rw-r--r--arch/sparc/include/asm/head_64.h1
-rw-r--r--arch/sparc/include/asm/hibernate.h1
-rw-r--r--arch/sparc/include/asm/highmem.h1
-rw-r--r--arch/sparc/include/asm/hugetlb.h1
-rw-r--r--arch/sparc/include/asm/hvtramp.h1
-rw-r--r--arch/sparc/include/asm/hypervisor.h1
-rw-r--r--arch/sparc/include/asm/ide.h1
-rw-r--r--arch/sparc/include/asm/idprom.h1
-rw-r--r--arch/sparc/include/asm/intr_queue.h1
-rw-r--r--arch/sparc/include/asm/io-unit.h1
-rw-r--r--arch/sparc/include/asm/io.h1
-rw-r--r--arch/sparc/include/asm/io_32.h1
-rw-r--r--arch/sparc/include/asm/io_64.h1
-rw-r--r--arch/sparc/include/asm/ioctls.h1
-rw-r--r--arch/sparc/include/asm/iommu.h1
-rw-r--r--arch/sparc/include/asm/iommu_32.h1
-rw-r--r--arch/sparc/include/asm/iommu_64.h1
-rw-r--r--arch/sparc/include/asm/irq.h1
-rw-r--r--arch/sparc/include/asm/irq_32.h1
-rw-r--r--arch/sparc/include/asm/irq_64.h1
-rw-r--r--arch/sparc/include/asm/irqflags.h1
-rw-r--r--arch/sparc/include/asm/irqflags_32.h1
-rw-r--r--arch/sparc/include/asm/irqflags_64.h1
-rw-r--r--arch/sparc/include/asm/jump_label.h1
-rw-r--r--arch/sparc/include/asm/kdebug.h1
-rw-r--r--arch/sparc/include/asm/kdebug_32.h1
-rw-r--r--arch/sparc/include/asm/kdebug_64.h1
-rw-r--r--arch/sparc/include/asm/kgdb.h1
-rw-r--r--arch/sparc/include/asm/kmap_types.h1
-rw-r--r--arch/sparc/include/asm/kprobes.h1
-rw-r--r--arch/sparc/include/asm/ldc.h1
-rw-r--r--arch/sparc/include/asm/leon.h1
-rw-r--r--arch/sparc/include/asm/leon_amba.h1
-rw-r--r--arch/sparc/include/asm/leon_pci.h1
-rw-r--r--arch/sparc/include/asm/lsu.h1
-rw-r--r--arch/sparc/include/asm/machines.h1
-rw-r--r--arch/sparc/include/asm/mbus.h1
-rw-r--r--arch/sparc/include/asm/mc146818rtc.h1
-rw-r--r--arch/sparc/include/asm/mc146818rtc_32.h1
-rw-r--r--arch/sparc/include/asm/mc146818rtc_64.h1
-rw-r--r--arch/sparc/include/asm/mdesc.h1
-rw-r--r--arch/sparc/include/asm/memctrl.h1
-rw-r--r--arch/sparc/include/asm/mman.h1
-rw-r--r--arch/sparc/include/asm/mmu.h1
-rw-r--r--arch/sparc/include/asm/mmu_32.h1
-rw-r--r--arch/sparc/include/asm/mmu_64.h1
-rw-r--r--arch/sparc/include/asm/mmu_context.h1
-rw-r--r--arch/sparc/include/asm/mmu_context_32.h1
-rw-r--r--arch/sparc/include/asm/mmu_context_64.h1
-rw-r--r--arch/sparc/include/asm/mmzone.h1
-rw-r--r--arch/sparc/include/asm/msi.h1
-rw-r--r--arch/sparc/include/asm/mxcc.h1
-rw-r--r--arch/sparc/include/asm/nmi.h1
-rw-r--r--arch/sparc/include/asm/ns87303.h1
-rw-r--r--arch/sparc/include/asm/obio.h1
-rw-r--r--arch/sparc/include/asm/openprom.h1
-rw-r--r--arch/sparc/include/asm/oplib.h1
-rw-r--r--arch/sparc/include/asm/oplib_32.h1
-rw-r--r--arch/sparc/include/asm/oplib_64.h1
-rw-r--r--arch/sparc/include/asm/page.h1
-rw-r--r--arch/sparc/include/asm/page_32.h1
-rw-r--r--arch/sparc/include/asm/page_64.h1
-rw-r--r--arch/sparc/include/asm/parport.h1
-rw-r--r--arch/sparc/include/asm/pbm.h1
-rw-r--r--arch/sparc/include/asm/pci.h1
-rw-r--r--arch/sparc/include/asm/pci_32.h1
-rw-r--r--arch/sparc/include/asm/pci_64.h1
-rw-r--r--arch/sparc/include/asm/pcic.h1
-rw-r--r--arch/sparc/include/asm/pcr.h1
-rw-r--r--arch/sparc/include/asm/percpu.h1
-rw-r--r--arch/sparc/include/asm/percpu_32.h1
-rw-r--r--arch/sparc/include/asm/percpu_64.h1
-rw-r--r--arch/sparc/include/asm/perf_event.h1
-rw-r--r--arch/sparc/include/asm/pgalloc.h1
-rw-r--r--arch/sparc/include/asm/pgalloc_32.h1
-rw-r--r--arch/sparc/include/asm/pgalloc_64.h1
-rw-r--r--arch/sparc/include/asm/pgtable.h1
-rw-r--r--arch/sparc/include/asm/pgtable_32.h1
-rw-r--r--arch/sparc/include/asm/pgtable_64.h1
-rw-r--r--arch/sparc/include/asm/pgtsrmmu.h1
-rw-r--r--arch/sparc/include/asm/pil.h1
-rw-r--r--arch/sparc/include/asm/processor.h1
-rw-r--r--arch/sparc/include/asm/processor_32.h1
-rw-r--r--arch/sparc/include/asm/processor_64.h1
-rw-r--r--arch/sparc/include/asm/psr.h1
-rw-r--r--arch/sparc/include/asm/ptrace.h1
-rw-r--r--arch/sparc/include/asm/qrwlock.h1
-rw-r--r--arch/sparc/include/asm/qspinlock.h1
-rw-r--r--arch/sparc/include/asm/ross.h1
-rw-r--r--arch/sparc/include/asm/sbi.h1
-rw-r--r--arch/sparc/include/asm/scratchpad.h1
-rw-r--r--arch/sparc/include/asm/seccomp.h1
-rw-r--r--arch/sparc/include/asm/sections.h1
-rw-r--r--arch/sparc/include/asm/setup.h1
-rw-r--r--arch/sparc/include/asm/sfafsr.h1
-rw-r--r--arch/sparc/include/asm/sfp-machine.h1
-rw-r--r--arch/sparc/include/asm/shmparam.h1
-rw-r--r--arch/sparc/include/asm/shmparam_32.h1
-rw-r--r--arch/sparc/include/asm/shmparam_64.h1
-rw-r--r--arch/sparc/include/asm/sigcontext.h1
-rw-r--r--arch/sparc/include/asm/signal.h1
-rw-r--r--arch/sparc/include/asm/smp.h1
-rw-r--r--arch/sparc/include/asm/smp_32.h1
-rw-r--r--arch/sparc/include/asm/smp_64.h1
-rw-r--r--arch/sparc/include/asm/sparsemem.h1
-rw-r--r--arch/sparc/include/asm/spinlock.h1
-rw-r--r--arch/sparc/include/asm/spinlock_32.h1
-rw-r--r--arch/sparc/include/asm/spinlock_64.h1
-rw-r--r--arch/sparc/include/asm/spinlock_types.h1
-rw-r--r--arch/sparc/include/asm/spitfire.h1
-rw-r--r--arch/sparc/include/asm/stacktrace.h1
-rw-r--r--arch/sparc/include/asm/starfire.h1
-rw-r--r--arch/sparc/include/asm/string.h1
-rw-r--r--arch/sparc/include/asm/string_32.h1
-rw-r--r--arch/sparc/include/asm/string_64.h1
-rw-r--r--arch/sparc/include/asm/sunbpp.h1
-rw-r--r--arch/sparc/include/asm/swift.h1
-rw-r--r--arch/sparc/include/asm/switch_to.h1
-rw-r--r--arch/sparc/include/asm/switch_to_32.h1
-rw-r--r--arch/sparc/include/asm/switch_to_64.h1
-rw-r--r--arch/sparc/include/asm/syscall.h1
-rw-r--r--arch/sparc/include/asm/syscalls.h1
-rw-r--r--arch/sparc/include/asm/termbits.h1
-rw-r--r--arch/sparc/include/asm/termios.h1
-rw-r--r--arch/sparc/include/asm/thread_info.h1
-rw-r--r--arch/sparc/include/asm/thread_info_32.h1
-rw-r--r--arch/sparc/include/asm/thread_info_64.h1
-rw-r--r--arch/sparc/include/asm/timer.h1
-rw-r--r--arch/sparc/include/asm/timer_32.h1
-rw-r--r--arch/sparc/include/asm/timer_64.h1
-rw-r--r--arch/sparc/include/asm/timex.h1
-rw-r--r--arch/sparc/include/asm/timex_32.h1
-rw-r--r--arch/sparc/include/asm/timex_64.h1
-rw-r--r--arch/sparc/include/asm/tlb.h1
-rw-r--r--arch/sparc/include/asm/tlb_32.h1
-rw-r--r--arch/sparc/include/asm/tlb_64.h1
-rw-r--r--arch/sparc/include/asm/tlbflush.h1
-rw-r--r--arch/sparc/include/asm/tlbflush_32.h1
-rw-r--r--arch/sparc/include/asm/tlbflush_64.h1
-rw-r--r--arch/sparc/include/asm/topology.h1
-rw-r--r--arch/sparc/include/asm/topology_32.h1
-rw-r--r--arch/sparc/include/asm/topology_64.h1
-rw-r--r--arch/sparc/include/asm/trap_block.h1
-rw-r--r--arch/sparc/include/asm/traps.h1
-rw-r--r--arch/sparc/include/asm/tsb.h1
-rw-r--r--arch/sparc/include/asm/tsunami.h1
-rw-r--r--arch/sparc/include/asm/ttable.h1
-rw-r--r--arch/sparc/include/asm/turbosparc.h1
-rw-r--r--arch/sparc/include/asm/uaccess.h1
-rw-r--r--arch/sparc/include/asm/uaccess_32.h1
-rw-r--r--arch/sparc/include/asm/uaccess_64.h1
-rw-r--r--arch/sparc/include/asm/unaligned.h1
-rw-r--r--arch/sparc/include/asm/unistd.h1
-rw-r--r--arch/sparc/include/asm/upa.h1
-rw-r--r--arch/sparc/include/asm/vaddrs.h1
-rw-r--r--arch/sparc/include/asm/vga.h1
-rw-r--r--arch/sparc/include/asm/viking.h1
-rw-r--r--arch/sparc/include/asm/vio.h1
-rw-r--r--arch/sparc/include/asm/visasm.h1
-rw-r--r--arch/sparc/include/asm/winmacro.h1
-rw-r--r--arch/sparc/include/asm/xor.h1
-rw-r--r--arch/sparc/include/uapi/asm/apc.h1
-rw-r--r--arch/sparc/include/uapi/asm/asi.h1
-rw-r--r--arch/sparc/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/sparc/include/uapi/asm/byteorder.h1
-rw-r--r--arch/sparc/include/uapi/asm/display7seg.h1
-rw-r--r--arch/sparc/include/uapi/asm/envctrl.h1
-rw-r--r--arch/sparc/include/uapi/asm/errno.h1
-rw-r--r--arch/sparc/include/uapi/asm/fbio.h1
-rw-r--r--arch/sparc/include/uapi/asm/fcntl.h1
-rw-r--r--arch/sparc/include/uapi/asm/ioctl.h1
-rw-r--r--arch/sparc/include/uapi/asm/ioctls.h1
-rw-r--r--arch/sparc/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/sparc/include/uapi/asm/jsflash.h1
-rw-r--r--arch/sparc/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/sparc/include/uapi/asm/mman.h1
-rw-r--r--arch/sparc/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/sparc/include/uapi/asm/openpromio.h1
-rw-r--r--arch/sparc/include/uapi/asm/param.h1
-rw-r--r--arch/sparc/include/uapi/asm/perfctr.h1
-rw-r--r--arch/sparc/include/uapi/asm/poll.h1
-rw-r--r--arch/sparc/include/uapi/asm/posix_types.h1
-rw-r--r--arch/sparc/include/uapi/asm/psr.h1
-rw-r--r--arch/sparc/include/uapi/asm/psrcompat.h1
-rw-r--r--arch/sparc/include/uapi/asm/pstate.h1
-rw-r--r--arch/sparc/include/uapi/asm/ptrace.h1
-rw-r--r--arch/sparc/include/uapi/asm/resource.h1
-rw-r--r--arch/sparc/include/uapi/asm/sembuf.h1
-rw-r--r--arch/sparc/include/uapi/asm/setup.h1
-rw-r--r--arch/sparc/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/sparc/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/sparc/include/uapi/asm/siginfo.h1
-rw-r--r--arch/sparc/include/uapi/asm/signal.h1
-rw-r--r--arch/sparc/include/uapi/asm/socket.h1
-rw-r--r--arch/sparc/include/uapi/asm/sockios.h1
-rw-r--r--arch/sparc/include/uapi/asm/stat.h1
-rw-r--r--arch/sparc/include/uapi/asm/statfs.h1
-rw-r--r--arch/sparc/include/uapi/asm/swab.h1
-rw-r--r--arch/sparc/include/uapi/asm/termbits.h1
-rw-r--r--arch/sparc/include/uapi/asm/termios.h1
-rw-r--r--arch/sparc/include/uapi/asm/traps.h1
-rw-r--r--arch/sparc/include/uapi/asm/uctx.h1
-rw-r--r--arch/sparc/include/uapi/asm/unistd.h1
-rw-r--r--arch/sparc/include/uapi/asm/utrap.h1
-rw-r--r--arch/sparc/include/uapi/asm/watchdog.h1
-rw-r--r--arch/sparc/kernel/Makefile1
-rw-r--r--arch/sparc/kernel/apc.c1
-rw-r--r--arch/sparc/kernel/asm-offsets.c1
-rw-r--r--arch/sparc/kernel/audit.c1
-rw-r--r--arch/sparc/kernel/auxio_32.c1
-rw-r--r--arch/sparc/kernel/auxio_64.c1
-rw-r--r--arch/sparc/kernel/btext.c1
-rw-r--r--arch/sparc/kernel/central.c1
-rw-r--r--arch/sparc/kernel/cherrs.S1
-rw-r--r--arch/sparc/kernel/compat_audit.c1
-rw-r--r--arch/sparc/kernel/cpu.c1
-rw-r--r--arch/sparc/kernel/cpumap.c1
-rw-r--r--arch/sparc/kernel/cpumap.h1
-rw-r--r--arch/sparc/kernel/devices.c1
-rw-r--r--arch/sparc/kernel/dma.c1
-rw-r--r--arch/sparc/kernel/dtlb_miss.S1
-rw-r--r--arch/sparc/kernel/dtlb_prot.S1
-rw-r--r--arch/sparc/kernel/ebus.c1
-rw-r--r--arch/sparc/kernel/entry.S1
-rw-r--r--arch/sparc/kernel/entry.h1
-rw-r--r--arch/sparc/kernel/etrap_32.S1
-rw-r--r--arch/sparc/kernel/etrap_64.S1
-rw-r--r--arch/sparc/kernel/fpu_traps.S1
-rw-r--r--arch/sparc/kernel/ftrace.c1
-rw-r--r--arch/sparc/kernel/getsetcc.S1
-rw-r--r--arch/sparc/kernel/head_32.S1
-rw-r--r--arch/sparc/kernel/head_64.S1
-rw-r--r--arch/sparc/kernel/hvapi.c1
-rw-r--r--arch/sparc/kernel/hvcalls.S1
-rw-r--r--arch/sparc/kernel/hvtramp.S1
-rw-r--r--arch/sparc/kernel/idprom.c1
-rw-r--r--arch/sparc/kernel/iommu.c1
-rw-r--r--arch/sparc/kernel/iommu_common.h1
-rw-r--r--arch/sparc/kernel/ioport.c1
-rw-r--r--arch/sparc/kernel/irq.h1
-rw-r--r--arch/sparc/kernel/irq_32.c1
-rw-r--r--arch/sparc/kernel/irq_64.c1
-rw-r--r--arch/sparc/kernel/itlb_miss.S1
-rw-r--r--arch/sparc/kernel/ivec.S1
-rw-r--r--arch/sparc/kernel/jump_label.c1
-rw-r--r--arch/sparc/kernel/kernel.h1
-rw-r--r--arch/sparc/kernel/kgdb_32.c1
-rw-r--r--arch/sparc/kernel/kgdb_64.c1
-rw-r--r--arch/sparc/kernel/kprobes.c1
-rw-r--r--arch/sparc/kernel/kstack.h1
-rw-r--r--arch/sparc/kernel/ktlb.S1
-rw-r--r--arch/sparc/kernel/ldc.c1
-rw-r--r--arch/sparc/kernel/leon_kernel.c1
-rw-r--r--arch/sparc/kernel/leon_pci.c1
-rw-r--r--arch/sparc/kernel/leon_pci_grpci1.c1
-rw-r--r--arch/sparc/kernel/leon_pci_grpci2.c1
-rw-r--r--arch/sparc/kernel/leon_pmc.c1
-rw-r--r--arch/sparc/kernel/leon_smp.c1
-rw-r--r--arch/sparc/kernel/mdesc.c1
-rw-r--r--arch/sparc/kernel/misctrap.S1
-rw-r--r--arch/sparc/kernel/module.c1
-rw-r--r--arch/sparc/kernel/of_device_32.c1
-rw-r--r--arch/sparc/kernel/of_device_64.c1
-rw-r--r--arch/sparc/kernel/of_device_common.h1
-rw-r--r--arch/sparc/kernel/pci.c1
-rw-r--r--arch/sparc/kernel/pci_common.c1
-rw-r--r--arch/sparc/kernel/pci_fire.c1
-rw-r--r--arch/sparc/kernel/pci_impl.h1
-rw-r--r--arch/sparc/kernel/pci_msi.c1
-rw-r--r--arch/sparc/kernel/pci_psycho.c1
-rw-r--r--arch/sparc/kernel/pci_sabre.c1
-rw-r--r--arch/sparc/kernel/pci_schizo.c1
-rw-r--r--arch/sparc/kernel/pci_sun4v.c1
-rw-r--r--arch/sparc/kernel/pci_sun4v.h1
-rw-r--r--arch/sparc/kernel/pci_sun4v_asm.S1
-rw-r--r--arch/sparc/kernel/pcic.c1
-rw-r--r--arch/sparc/kernel/perf_event.c1
-rw-r--r--arch/sparc/kernel/pmc.c1
-rw-r--r--arch/sparc/kernel/power.c1
-rw-r--r--arch/sparc/kernel/process_32.c1
-rw-r--r--arch/sparc/kernel/process_64.c1
-rw-r--r--arch/sparc/kernel/prom.h1
-rw-r--r--arch/sparc/kernel/prom_irqtrans.c1
-rw-r--r--arch/sparc/kernel/psycho_common.c1
-rw-r--r--arch/sparc/kernel/psycho_common.h1
-rw-r--r--arch/sparc/kernel/ptrace_32.c1
-rw-r--r--arch/sparc/kernel/reboot.c1
-rw-r--r--arch/sparc/kernel/rtrap_32.S1
-rw-r--r--arch/sparc/kernel/rtrap_64.S1
-rw-r--r--arch/sparc/kernel/sbus.c1
-rw-r--r--arch/sparc/kernel/setup_32.c1
-rw-r--r--arch/sparc/kernel/setup_64.c1
-rw-r--r--arch/sparc/kernel/signal32.c1
-rw-r--r--arch/sparc/kernel/signal_32.c1
-rw-r--r--arch/sparc/kernel/signal_64.c1
-rw-r--r--arch/sparc/kernel/sigutil.h1
-rw-r--r--arch/sparc/kernel/sigutil_32.c1
-rw-r--r--arch/sparc/kernel/sigutil_64.c1
-rw-r--r--arch/sparc/kernel/smp_32.c1
-rw-r--r--arch/sparc/kernel/smp_64.c1
-rw-r--r--arch/sparc/kernel/spiterrs.S1
-rw-r--r--arch/sparc/kernel/sstate.c1
-rw-r--r--arch/sparc/kernel/starfire.c1
-rw-r--r--arch/sparc/kernel/sun4d_irq.c1
-rw-r--r--arch/sparc/kernel/sun4d_smp.c1
-rw-r--r--arch/sparc/kernel/sun4m_irq.c1
-rw-r--r--arch/sparc/kernel/sun4m_smp.c1
-rw-r--r--arch/sparc/kernel/sun4v_ivec.S1
-rw-r--r--arch/sparc/kernel/sun4v_tlb_miss.S1
-rw-r--r--arch/sparc/kernel/sys32.S1
-rw-r--r--arch/sparc/kernel/sys_sparc32.c1
-rw-r--r--arch/sparc/kernel/sys_sparc_32.c1
-rw-r--r--arch/sparc/kernel/sys_sparc_64.c1
-rw-r--r--arch/sparc/kernel/syscalls.S1
-rw-r--r--arch/sparc/kernel/sysfs.c1
-rw-r--r--arch/sparc/kernel/systbls.h1
-rw-r--r--arch/sparc/kernel/systbls_32.S1
-rw-r--r--arch/sparc/kernel/systbls_64.S1
-rw-r--r--arch/sparc/kernel/time_32.c1
-rw-r--r--arch/sparc/kernel/time_64.c1
-rw-r--r--arch/sparc/kernel/trampoline_32.S1
-rw-r--r--arch/sparc/kernel/trampoline_64.S1
-rw-r--r--arch/sparc/kernel/traps_32.c1
-rw-r--r--arch/sparc/kernel/tsb.S1
-rw-r--r--arch/sparc/kernel/ttable_32.S1
-rw-r--r--arch/sparc/kernel/ttable_64.S1
-rw-r--r--arch/sparc/kernel/una_asm_32.S1
-rw-r--r--arch/sparc/kernel/una_asm_64.S1
-rw-r--r--arch/sparc/kernel/unaligned_32.c1
-rw-r--r--arch/sparc/kernel/unaligned_64.c1
-rw-r--r--arch/sparc/kernel/urtt_fill.S1
-rw-r--r--arch/sparc/kernel/utrap.S1
-rw-r--r--arch/sparc/kernel/vio.c1
-rw-r--r--arch/sparc/kernel/viohs.c1
-rw-r--r--arch/sparc/kernel/visemul.c1
-rw-r--r--arch/sparc/kernel/vmlinux.lds.S1
-rw-r--r--arch/sparc/kernel/windows.c1
-rw-r--r--arch/sparc/kernel/winfixup.S1
-rw-r--r--arch/sparc/kernel/wof.S1
-rw-r--r--arch/sparc/kernel/wuf.S1
-rw-r--r--arch/sparc/lib/GENbzero.S1
-rw-r--r--arch/sparc/lib/GENcopy_from_user.S1
-rw-r--r--arch/sparc/lib/GENcopy_to_user.S1
-rw-r--r--arch/sparc/lib/GENmemcpy.S1
-rw-r--r--arch/sparc/lib/GENpage.S1
-rw-r--r--arch/sparc/lib/GENpatch.S1
-rw-r--r--arch/sparc/lib/Makefile1
-rw-r--r--arch/sparc/lib/NG2copy_from_user.S1
-rw-r--r--arch/sparc/lib/NG2copy_to_user.S1
-rw-r--r--arch/sparc/lib/NG2memcpy.S1
-rw-r--r--arch/sparc/lib/NG2patch.S1
-rw-r--r--arch/sparc/lib/NG4clear_page.S1
-rw-r--r--arch/sparc/lib/NG4copy_from_user.S1
-rw-r--r--arch/sparc/lib/NG4copy_page.S1
-rw-r--r--arch/sparc/lib/NG4copy_to_user.S1
-rw-r--r--arch/sparc/lib/NG4memcpy.S1
-rw-r--r--arch/sparc/lib/NG4memset.S1
-rw-r--r--arch/sparc/lib/NG4patch.S1
-rw-r--r--arch/sparc/lib/NGbzero.S1
-rw-r--r--arch/sparc/lib/NGcopy_from_user.S1
-rw-r--r--arch/sparc/lib/NGcopy_to_user.S1
-rw-r--r--arch/sparc/lib/NGmemcpy.S1
-rw-r--r--arch/sparc/lib/NGpage.S1
-rw-r--r--arch/sparc/lib/NGpatch.S1
-rw-r--r--arch/sparc/lib/PeeCeeI.c1
-rw-r--r--arch/sparc/lib/U1copy_from_user.S1
-rw-r--r--arch/sparc/lib/U1copy_to_user.S1
-rw-r--r--arch/sparc/lib/U1memcpy.S1
-rw-r--r--arch/sparc/lib/U3copy_from_user.S1
-rw-r--r--arch/sparc/lib/U3copy_to_user.S1
-rw-r--r--arch/sparc/lib/U3memcpy.S1
-rw-r--r--arch/sparc/lib/U3patch.S1
-rw-r--r--arch/sparc/lib/VISsave.S1
-rw-r--r--arch/sparc/lib/ashldi3.S1
-rw-r--r--arch/sparc/lib/ashrdi3.S1
-rw-r--r--arch/sparc/lib/atomic32.c1
-rw-r--r--arch/sparc/lib/atomic_64.S1
-rw-r--r--arch/sparc/lib/bitext.c1
-rw-r--r--arch/sparc/lib/bitops.S1
-rw-r--r--arch/sparc/lib/blockops.S1
-rw-r--r--arch/sparc/lib/bzero.S1
-rw-r--r--arch/sparc/lib/checksum_32.S1
-rw-r--r--arch/sparc/lib/checksum_64.S1
-rw-r--r--arch/sparc/lib/clear_page.S1
-rw-r--r--arch/sparc/lib/cmpdi2.c1
-rw-r--r--arch/sparc/lib/copy_in_user.S1
-rw-r--r--arch/sparc/lib/copy_page.S1
-rw-r--r--arch/sparc/lib/copy_user.S1
-rw-r--r--arch/sparc/lib/csum_copy.S1
-rw-r--r--arch/sparc/lib/csum_copy_from_user.S1
-rw-r--r--arch/sparc/lib/csum_copy_to_user.S1
-rw-r--r--arch/sparc/lib/ffs.S1
-rw-r--r--arch/sparc/lib/hweight.S1
-rw-r--r--arch/sparc/lib/iomap.c1
-rw-r--r--arch/sparc/lib/ipcsum.S1
-rw-r--r--arch/sparc/lib/libgcc.h1
-rw-r--r--arch/sparc/lib/locks.S1
-rw-r--r--arch/sparc/lib/lshrdi3.S1
-rw-r--r--arch/sparc/lib/mcount.S1
-rw-r--r--arch/sparc/lib/memcmp.S1
-rw-r--r--arch/sparc/lib/memcpy.S1
-rw-r--r--arch/sparc/lib/memmove.S1
-rw-r--r--arch/sparc/lib/memscan_32.S1
-rw-r--r--arch/sparc/lib/memscan_64.S1
-rw-r--r--arch/sparc/lib/memset.S1
-rw-r--r--arch/sparc/lib/multi3.S1
-rw-r--r--arch/sparc/lib/strlen.S1
-rw-r--r--arch/sparc/lib/strncmp_32.S1
-rw-r--r--arch/sparc/lib/strncmp_64.S1
-rw-r--r--arch/sparc/lib/ucmpdi2.c1
-rw-r--r--arch/sparc/lib/xor.S1
-rw-r--r--arch/sparc/math-emu/math_32.c1
-rw-r--r--arch/sparc/math-emu/math_64.c1
-rw-r--r--arch/sparc/math-emu/sfp-util_32.h1
-rw-r--r--arch/sparc/math-emu/sfp-util_64.h1
-rw-r--r--arch/sparc/mm/Makefile1
-rw-r--r--arch/sparc/mm/extable.c1
-rw-r--r--arch/sparc/mm/fault_32.c1
-rw-r--r--arch/sparc/mm/fault_64.c1
-rw-r--r--arch/sparc/mm/gup.c1
-rw-r--r--arch/sparc/mm/highmem.c1
-rw-r--r--arch/sparc/mm/hugetlbpage.c1
-rw-r--r--arch/sparc/mm/hypersparc.S1
-rw-r--r--arch/sparc/mm/init_32.c1
-rw-r--r--arch/sparc/mm/init_64.c1
-rw-r--r--arch/sparc/mm/init_64.h1
-rw-r--r--arch/sparc/mm/io-unit.c1
-rw-r--r--arch/sparc/mm/iommu.c1
-rw-r--r--arch/sparc/mm/leon_mm.c1
-rw-r--r--arch/sparc/mm/mm_32.h1
-rw-r--r--arch/sparc/mm/srmmu.c1
-rw-r--r--arch/sparc/mm/srmmu_access.S1
-rw-r--r--arch/sparc/mm/swift.S1
-rw-r--r--arch/sparc/mm/tlb.c1
-rw-r--r--arch/sparc/mm/tsb.c1
-rw-r--r--arch/sparc/mm/tsunami.S1
-rw-r--r--arch/sparc/mm/ultra.S1
-rw-r--r--arch/sparc/mm/viking.S1
-rw-r--r--arch/sparc/net/bpf_jit_32.h1
-rw-r--r--arch/sparc/net/bpf_jit_64.h1
-rw-r--r--arch/sparc/net/bpf_jit_asm_32.S1
-rw-r--r--arch/sparc/net/bpf_jit_asm_64.S1
-rw-r--r--arch/sparc/net/bpf_jit_comp_32.c1
-rw-r--r--arch/sparc/net/bpf_jit_comp_64.c1
-rw-r--r--arch/sparc/power/hibernate.c1
-rw-r--r--arch/sparc/power/hibernate_asm.S1
-rw-r--r--arch/sparc/prom/Makefile1
-rw-r--r--arch/sparc/prom/bootstr_32.c1
-rw-r--r--arch/sparc/prom/bootstr_64.c1
-rw-r--r--arch/sparc/prom/cif.S1
-rw-r--r--arch/sparc/prom/console_32.c1
-rw-r--r--arch/sparc/prom/console_64.c1
-rw-r--r--arch/sparc/prom/init_32.c1
-rw-r--r--arch/sparc/prom/init_64.c1
-rw-r--r--arch/sparc/prom/memory.c1
-rw-r--r--arch/sparc/prom/misc_32.c1
-rw-r--r--arch/sparc/prom/misc_64.c1
-rw-r--r--arch/sparc/prom/mp.c1
-rw-r--r--arch/sparc/prom/p1275.c1
-rw-r--r--arch/sparc/prom/printf.c1
-rw-r--r--arch/sparc/prom/ranges.c1
-rw-r--r--arch/sparc/prom/tree_32.c1
-rw-r--r--arch/sparc/prom/tree_64.c1
-rw-r--r--arch/tile/Kconfig1
-rw-r--r--arch/tile/Kconfig.debug1
-rw-r--r--arch/tile/configs/tilegx_defconfig1
-rw-r--r--arch/tile/configs/tilepro_defconfig2
-rw-r--r--arch/tile/gxio/Kconfig1
-rw-r--r--arch/tile/gxio/Makefile1
-rw-r--r--arch/tile/include/asm/div64.h1
-rw-r--r--arch/tile/include/asm/irq_work.h1
-rw-r--r--arch/tile/include/asm/word-at-a-time.h1
-rw-r--r--arch/tile/include/uapi/arch/abi.h1
-rw-r--r--arch/tile/include/uapi/arch/chip.h1
-rw-r--r--arch/tile/include/uapi/arch/chip_tilegx.h1
-rw-r--r--arch/tile/include/uapi/arch/chip_tilepro.h1
-rw-r--r--arch/tile/include/uapi/arch/icache.h1
-rw-r--r--arch/tile/include/uapi/arch/interrupts.h1
-rw-r--r--arch/tile/include/uapi/arch/interrupts_32.h1
-rw-r--r--arch/tile/include/uapi/arch/interrupts_64.h1
-rw-r--r--arch/tile/include/uapi/arch/intreg.h1
-rw-r--r--arch/tile/include/uapi/arch/opcode.h1
-rw-r--r--arch/tile/include/uapi/arch/opcode_tilegx.h1
-rw-r--r--arch/tile/include/uapi/arch/opcode_tilepro.h1
-rw-r--r--arch/tile/include/uapi/arch/sim.h1
-rw-r--r--arch/tile/include/uapi/arch/sim_def.h1
-rw-r--r--arch/tile/include/uapi/arch/spr_def.h1
-rw-r--r--arch/tile/include/uapi/arch/spr_def_32.h1
-rw-r--r--arch/tile/include/uapi/arch/spr_def_64.h1
-rw-r--r--arch/tile/include/uapi/asm/auxvec.h1
-rw-r--r--arch/tile/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/tile/include/uapi/asm/byteorder.h1
-rw-r--r--arch/tile/include/uapi/asm/cachectl.h1
-rw-r--r--arch/tile/include/uapi/asm/hardwall.h1
-rw-r--r--arch/tile/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/tile/include/uapi/asm/mman.h1
-rw-r--r--arch/tile/include/uapi/asm/ptrace.h1
-rw-r--r--arch/tile/include/uapi/asm/setup.h1
-rw-r--r--arch/tile/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/tile/include/uapi/asm/siginfo.h1
-rw-r--r--arch/tile/include/uapi/asm/signal.h1
-rw-r--r--arch/tile/include/uapi/asm/stat.h1
-rw-r--r--arch/tile/include/uapi/asm/swab.h1
-rw-r--r--arch/tile/include/uapi/asm/unistd.h1
-rw-r--r--arch/tile/kernel/Makefile1
-rw-r--r--arch/tile/kernel/hvglue.S1
-rw-r--r--arch/tile/kernel/setup.c2
-rw-r--r--arch/tile/kernel/vdso/Makefile1
-rw-r--r--arch/tile/kernel/vmlinux.lds.S1
-rw-r--r--arch/tile/kvm/Kconfig1
-rw-r--r--arch/tile/lib/Makefile1
-rw-r--r--arch/um/Kconfig.char1
-rw-r--r--arch/um/Kconfig.common1
-rw-r--r--arch/um/Kconfig.debug1
-rw-r--r--arch/um/Kconfig.net1
-rw-r--r--arch/um/Kconfig.rest1
-rw-r--r--arch/um/Kconfig.um2
-rw-r--r--arch/um/Makefile2
-rw-r--r--arch/um/configs/i386_defconfig1
-rw-r--r--arch/um/configs/x86_64_defconfig1
-rw-r--r--arch/um/drivers/cow.h1
-rw-r--r--arch/um/drivers/cow_sys.h1
-rw-r--r--arch/um/drivers/mconsole_kern.c7
-rw-r--r--arch/um/drivers/slip.h1
-rw-r--r--arch/um/drivers/slip_common.c1
-rw-r--r--arch/um/drivers/slip_common.h1
-rw-r--r--arch/um/drivers/slirp.h1
-rw-r--r--arch/um/drivers/stderr_console.c1
-rw-r--r--arch/um/include/asm/bugs.h1
-rw-r--r--arch/um/include/asm/cache.h1
-rw-r--r--arch/um/include/asm/common.lds.S1
-rw-r--r--arch/um/include/asm/dma.h1
-rw-r--r--arch/um/include/asm/fixmap.h1
-rw-r--r--arch/um/include/asm/hardirq.h1
-rw-r--r--arch/um/include/asm/io.h1
-rw-r--r--arch/um/include/asm/irq.h1
-rw-r--r--arch/um/include/asm/irqflags.h1
-rw-r--r--arch/um/include/asm/processor-generic.h5
-rw-r--r--arch/um/include/asm/sections.h1
-rw-r--r--arch/um/include/asm/setup.h1
-rw-r--r--arch/um/include/asm/smp.h1
-rw-r--r--arch/um/include/asm/stacktrace.h1
-rw-r--r--arch/um/include/asm/sysrq.h1
-rw-r--r--arch/um/include/asm/thread_info.h3
-rw-r--r--arch/um/include/asm/timex.h1
-rw-r--r--arch/um/include/asm/tlb.h1
-rw-r--r--arch/um/include/shared/common-offsets.h1
-rw-r--r--arch/um/include/shared/init.h1
-rw-r--r--arch/um/include/shared/longjmp.h1
-rw-r--r--arch/um/include/shared/os.h2
-rw-r--r--arch/um/kernel/dyn.lds.S1
-rw-r--r--arch/um/kernel/gmon_syms.c7
-rw-r--r--arch/um/kernel/kmsg_dump.c1
-rw-r--r--arch/um/kernel/process.c4
-rw-r--r--arch/um/kernel/time.c4
-rw-r--r--arch/um/kernel/uml.lds.S1
-rw-r--r--arch/um/os-Linux/drivers/tuntap_user.c2
-rw-r--r--arch/um/os-Linux/elf_aux.c1
-rw-r--r--arch/um/os-Linux/skas/process.c17
-rw-r--r--arch/um/os-Linux/start_up.c6
-rw-r--r--arch/um/os-Linux/user_syms.c1
-rw-r--r--arch/um/scripts/Makefile.rules1
-rw-r--r--arch/unicore32/Kconfig1
-rw-r--r--arch/unicore32/Kconfig.debug1
-rw-r--r--arch/unicore32/include/mach/regs-ac97.h1
-rw-r--r--arch/unicore32/include/mach/regs-dmac.h1
-rw-r--r--arch/unicore32/include/mach/regs-gpio.h1
-rw-r--r--arch/unicore32/include/mach/regs-i2c.h1
-rw-r--r--arch/unicore32/include/mach/regs-intc.h1
-rw-r--r--arch/unicore32/include/mach/regs-nand.h1
-rw-r--r--arch/unicore32/include/mach/regs-ost.h1
-rw-r--r--arch/unicore32/include/mach/regs-pci.h1
-rw-r--r--arch/unicore32/include/mach/regs-pm.h1
-rw-r--r--arch/unicore32/include/mach/regs-ps2.h1
-rw-r--r--arch/unicore32/include/mach/regs-resetc.h1
-rw-r--r--arch/unicore32/include/mach/regs-rtc.h1
-rw-r--r--arch/unicore32/include/mach/regs-sdc.h1
-rw-r--r--arch/unicore32/include/mach/regs-spi.h1
-rw-r--r--arch/unicore32/include/mach/regs-umal.h1
-rw-r--r--arch/unicore32/include/mach/regs-unigfx.h1
-rw-r--r--arch/unicore32/include/uapi/asm/byteorder.h1
-rw-r--r--arch/unicore32/include/uapi/asm/ptrace.h1
-rw-r--r--arch/unicore32/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/unicore32/include/uapi/asm/unistd.h1
-rw-r--r--arch/unicore32/kernel/Makefile1
-rw-r--r--arch/unicore32/kernel/ksyms.h1
-rw-r--r--arch/unicore32/lib/Makefile1
-rw-r--r--arch/unicore32/mm/Kconfig1
-rw-r--r--arch/unicore32/mm/Makefile1
-rw-r--r--arch/x86/Kconfig1
-rw-r--r--arch/x86/Kconfig.cpu1
-rw-r--r--arch/x86/Kconfig.debug1
-rw-r--r--arch/x86/Makefile1
-rw-r--r--arch/x86/Makefile.um1
-rw-r--r--arch/x86/Makefile_32.cpu1
-rw-r--r--arch/x86/boot/code16gcc.h1
-rw-r--r--arch/x86/boot/compressed/Makefile1
-rw-r--r--arch/x86/boot/compressed/cmdline.c1
-rw-r--r--arch/x86/boot/compressed/cpuflags.c1
-rw-r--r--arch/x86/boot/compressed/eboot.h1
-rw-r--r--arch/x86/boot/compressed/efi_stub_32.S1
-rw-r--r--arch/x86/boot/compressed/efi_thunk_64.S1
-rw-r--r--arch/x86/boot/compressed/error.c1
-rw-r--r--arch/x86/boot/compressed/error.h1
-rw-r--r--arch/x86/boot/compressed/head_32.S1
-rw-r--r--arch/x86/boot/compressed/head_64.S1
-rw-r--r--arch/x86/boot/compressed/kaslr.c1
-rw-r--r--arch/x86/boot/compressed/misc.c1
-rw-r--r--arch/x86/boot/compressed/misc.h1
-rw-r--r--arch/x86/boot/compressed/pagetable.c1
-rw-r--r--arch/x86/boot/compressed/string.c1
-rw-r--r--arch/x86/boot/compressed/vmlinux.lds.S1
-rw-r--r--arch/x86/boot/cpuflags.c1
-rw-r--r--arch/x86/boot/cpuflags.h1
-rw-r--r--arch/x86/boot/ctype.h1
-rw-r--r--arch/x86/boot/early_serial_console.c1
-rw-r--r--arch/x86/boot/header.S1
-rw-r--r--arch/x86/boot/string.h1
-rw-r--r--arch/x86/boot/tools/build.c1
-rw-r--r--arch/x86/crypto/Makefile1
-rw-r--r--arch/x86/crypto/blowfish-x86_64-asm_64.S48
-rw-r--r--arch/x86/crypto/camellia-x86_64-asm_64.S26
-rw-r--r--arch/x86/crypto/cast5-avx-x86_64-asm_64.S47
-rw-r--r--arch/x86/crypto/cast6-avx-x86_64-asm_64.S50
-rw-r--r--arch/x86/crypto/chacha20-avx2-x86_64.S4
-rw-r--r--arch/x86/crypto/chacha20-ssse3-x86_64.S4
-rw-r--r--arch/x86/crypto/des3_ede-asm_64.S15
-rw-r--r--arch/x86/crypto/salsa20-x86_64-asm_64.S1
-rw-r--r--arch/x86/crypto/sha1-mb/Makefile1
-rw-r--r--arch/x86/crypto/sha1_avx2_x86_64_asm.S4
-rw-r--r--arch/x86/crypto/sha1_ssse3_asm.S11
-rw-r--r--arch/x86/crypto/sha256-avx-asm.S15
-rw-r--r--arch/x86/crypto/sha256-avx2-asm.S22
-rw-r--r--arch/x86/crypto/sha256-mb/Makefile1
-rw-r--r--arch/x86/crypto/sha256-ssse3-asm.S15
-rw-r--r--arch/x86/crypto/sha512-avx2-asm.S75
-rw-r--r--arch/x86/crypto/sha512-mb/Makefile1
-rw-r--r--arch/x86/crypto/twofish-avx-x86_64-asm_64.S12
-rw-r--r--arch/x86/entry/Makefile1
-rw-r--r--arch/x86/entry/calling.h1
-rw-r--r--arch/x86/entry/entry_32.S5
-rw-r--r--arch/x86/entry/entry_64.S3
-rw-r--r--arch/x86/entry/entry_64_compat.S1
-rw-r--r--arch/x86/entry/syscall_32.c1
-rw-r--r--arch/x86/entry/syscall_64.c1
-rw-r--r--arch/x86/entry/syscalls/Makefile1
-rw-r--r--arch/x86/entry/syscalls/syscallhdr.sh1
-rw-r--r--arch/x86/entry/syscalls/syscalltbl.sh1
-rw-r--r--arch/x86/entry/vdso/Makefile1
-rw-r--r--arch/x86/entry/vdso/vdso-layout.lds.S1
-rw-r--r--arch/x86/entry/vdso/vdso.lds.S1
-rw-r--r--arch/x86/entry/vdso/vdso2c.h1
-rw-r--r--arch/x86/entry/vdso/vdso32-setup.c1
-rw-r--r--arch/x86/entry/vdso/vdso32/note.S1
-rw-r--r--arch/x86/entry/vdso/vdso32/sigreturn.S1
-rw-r--r--arch/x86/entry/vdso/vdso32/system_call.S1
-rw-r--r--arch/x86/entry/vdso/vdso32/vclock_gettime.c1
-rw-r--r--arch/x86/entry/vdso/vdso32/vdso32.lds.S1
-rw-r--r--arch/x86/entry/vdso/vdsox32.lds.S1
-rw-r--r--arch/x86/entry/vsyscall/vsyscall_64.c1
-rw-r--r--arch/x86/entry/vsyscall/vsyscall_gtod.c1
-rw-r--r--arch/x86/entry/vsyscall/vsyscall_trace.h1
-rw-r--r--arch/x86/events/Kconfig1
-rw-r--r--arch/x86/events/amd/Makefile1
-rw-r--r--arch/x86/events/intel/Makefile1
-rw-r--r--arch/x86/events/intel/bts.c6
-rw-r--r--arch/x86/events/intel/core.c11
-rw-r--r--arch/x86/events/intel/cstate.c4
-rw-r--r--arch/x86/events/intel/ds.c1
-rw-r--r--arch/x86/events/intel/knc.c1
-rw-r--r--arch/x86/events/intel/lbr.c1
-rw-r--r--arch/x86/events/intel/p6.c1
-rw-r--r--arch/x86/events/intel/rapl.c3
-rw-r--r--arch/x86/events/intel/uncore.c12
-rw-r--r--arch/x86/events/intel/uncore.h1
-rw-r--r--arch/x86/events/intel/uncore_nhmex.c1
-rw-r--r--arch/x86/events/intel/uncore_snb.c1
-rw-r--r--arch/x86/events/intel/uncore_snbep.c5
-rw-r--r--arch/x86/events/msr.c9
-rw-r--r--arch/x86/hyperv/hv_init.c5
-rw-r--r--arch/x86/hyperv/mmu.c57
-rw-r--r--arch/x86/ia32/audit.c1
-rw-r--r--arch/x86/ia32/ia32_aout.c4
-rw-r--r--arch/x86/ia32/ia32_signal.c3
-rw-r--r--arch/x86/ia32/sys_ia32.c1
-rw-r--r--arch/x86/include/asm/agp.h1
-rw-r--r--arch/x86/include/asm/alternative-asm.h5
-rw-r--r--arch/x86/include/asm/alternative.h10
-rw-r--r--arch/x86/include/asm/amd_nb.h1
-rw-r--r--arch/x86/include/asm/apic_flat_64.h1
-rw-r--r--arch/x86/include/asm/apicdef.h1
-rw-r--r--arch/x86/include/asm/apm.h1
-rw-r--r--arch/x86/include/asm/arch_hweight.h1
-rw-r--r--arch/x86/include/asm/asm-prototypes.h1
-rw-r--r--arch/x86/include/asm/asm.h16
-rw-r--r--arch/x86/include/asm/atomic.h1
-rw-r--r--arch/x86/include/asm/atomic64_32.h1
-rw-r--r--arch/x86/include/asm/atomic64_64.h1
-rw-r--r--arch/x86/include/asm/barrier.h1
-rw-r--r--arch/x86/include/asm/bios_ebda.h1
-rw-r--r--arch/x86/include/asm/bitops.h1
-rw-r--r--arch/x86/include/asm/boot.h1
-rw-r--r--arch/x86/include/asm/bootparam_utils.h1
-rw-r--r--arch/x86/include/asm/bug.h1
-rw-r--r--arch/x86/include/asm/bugs.h1
-rw-r--r--arch/x86/include/asm/cache.h1
-rw-r--r--arch/x86/include/asm/cacheflush.h1
-rw-r--r--arch/x86/include/asm/ce4100.h1
-rw-r--r--arch/x86/include/asm/checksum.h1
-rw-r--r--arch/x86/include/asm/checksum_32.h1
-rw-r--r--arch/x86/include/asm/checksum_64.h1
-rw-r--r--arch/x86/include/asm/clocksource.h1
-rw-r--r--arch/x86/include/asm/cmdline.h1
-rw-r--r--arch/x86/include/asm/cmpxchg.h1
-rw-r--r--arch/x86/include/asm/cmpxchg_32.h1
-rw-r--r--arch/x86/include/asm/cmpxchg_64.h1
-rw-r--r--arch/x86/include/asm/compat.h1
-rw-r--r--arch/x86/include/asm/cpu.h1
-rw-r--r--arch/x86/include/asm/cpu_device_id.h1
-rw-r--r--arch/x86/include/asm/cpufeature.h1
-rw-r--r--arch/x86/include/asm/cpufeatures.h1
-rw-r--r--arch/x86/include/asm/cpumask.h1
-rw-r--r--arch/x86/include/asm/crash.h1
-rw-r--r--arch/x86/include/asm/crypto/aes.h1
-rw-r--r--arch/x86/include/asm/crypto/camellia.h1
-rw-r--r--arch/x86/include/asm/crypto/glue_helper.h1
-rw-r--r--arch/x86/include/asm/crypto/serpent-avx.h1
-rw-r--r--arch/x86/include/asm/crypto/serpent-sse2.h1
-rw-r--r--arch/x86/include/asm/crypto/twofish.h1
-rw-r--r--arch/x86/include/asm/current.h1
-rw-r--r--arch/x86/include/asm/debugreg.h1
-rw-r--r--arch/x86/include/asm/delay.h1
-rw-r--r--arch/x86/include/asm/desc.h4
-rw-r--r--arch/x86/include/asm/desc_defs.h1
-rw-r--r--arch/x86/include/asm/device.h1
-rw-r--r--arch/x86/include/asm/div64.h1
-rw-r--r--arch/x86/include/asm/dma-mapping.h1
-rw-r--r--arch/x86/include/asm/dma.h1
-rw-r--r--arch/x86/include/asm/dmi.h1
-rw-r--r--arch/x86/include/asm/dwarf2.h1
-rw-r--r--arch/x86/include/asm/e820/api.h1
-rw-r--r--arch/x86/include/asm/e820/types.h1
-rw-r--r--arch/x86/include/asm/edac.h1
-rw-r--r--arch/x86/include/asm/efi.h1
-rw-r--r--arch/x86/include/asm/elf.h1
-rw-r--r--arch/x86/include/asm/emergency-restart.h1
-rw-r--r--arch/x86/include/asm/entry_arch.h1
-rw-r--r--arch/x86/include/asm/espfix.h1
-rw-r--r--arch/x86/include/asm/export.h1
-rw-r--r--arch/x86/include/asm/extable.h1
-rw-r--r--arch/x86/include/asm/fb.h1
-rw-r--r--arch/x86/include/asm/fpu/api.h1
-rw-r--r--arch/x86/include/asm/fpu/internal.h91
-rw-r--r--arch/x86/include/asm/fpu/regset.h1
-rw-r--r--arch/x86/include/asm/fpu/signal.h1
-rw-r--r--arch/x86/include/asm/fpu/types.h33
-rw-r--r--arch/x86/include/asm/fpu/xstate.h13
-rw-r--r--arch/x86/include/asm/frame.h1
-rw-r--r--arch/x86/include/asm/ftrace.h1
-rw-r--r--arch/x86/include/asm/futex.h1
-rw-r--r--arch/x86/include/asm/gart.h1
-rw-r--r--arch/x86/include/asm/hardirq.h1
-rw-r--r--arch/x86/include/asm/highmem.h1
-rw-r--r--arch/x86/include/asm/hpet.h1
-rw-r--r--arch/x86/include/asm/hugetlb.h1
-rw-r--r--arch/x86/include/asm/hw_breakpoint.h1
-rw-r--r--arch/x86/include/asm/hw_irq.h1
-rw-r--r--arch/x86/include/asm/hypertransport.h1
-rw-r--r--arch/x86/include/asm/i8259.h1
-rw-r--r--arch/x86/include/asm/ia32.h1
-rw-r--r--arch/x86/include/asm/ia32_unistd.h1
-rw-r--r--arch/x86/include/asm/init.h1
-rw-r--r--arch/x86/include/asm/inst.h1
-rw-r--r--arch/x86/include/asm/intel-family.h1
-rw-r--r--arch/x86/include/asm/intel_mid_vrtc.h1
-rw-r--r--arch/x86/include/asm/intel_pmc_ipc.h1
-rw-r--r--arch/x86/include/asm/intel_pt.h1
-rw-r--r--arch/x86/include/asm/intel_punit_ipc.h1
-rw-r--r--arch/x86/include/asm/intel_rdt_sched.h1
-rw-r--r--arch/x86/include/asm/intel_scu_ipc.h1
-rw-r--r--arch/x86/include/asm/io.h1
-rw-r--r--arch/x86/include/asm/io_apic.h1
-rw-r--r--arch/x86/include/asm/iommu.h1
-rw-r--r--arch/x86/include/asm/iommu_table.h1
-rw-r--r--arch/x86/include/asm/iosf_mbi.h1
-rw-r--r--arch/x86/include/asm/irq.h1
-rw-r--r--arch/x86/include/asm/irq_regs.h1
-rw-r--r--arch/x86/include/asm/irq_vectors.h1
-rw-r--r--arch/x86/include/asm/irq_work.h1
-rw-r--r--arch/x86/include/asm/irqdomain.h1
-rw-r--r--arch/x86/include/asm/irqflags.h1
-rw-r--r--arch/x86/include/asm/jump_label.h1
-rw-r--r--arch/x86/include/asm/kasan.h1
-rw-r--r--arch/x86/include/asm/kaslr.h1
-rw-r--r--arch/x86/include/asm/kbdleds.h1
-rw-r--r--arch/x86/include/asm/kdebug.h1
-rw-r--r--arch/x86/include/asm/kexec-bzimage64.h1
-rw-r--r--arch/x86/include/asm/kexec.h1
-rw-r--r--arch/x86/include/asm/kgdb.h1
-rw-r--r--arch/x86/include/asm/kmap_types.h1
-rw-r--r--arch/x86/include/asm/kmemcheck.h1
-rw-r--r--arch/x86/include/asm/kvm_emulate.h1
-rw-r--r--arch/x86/include/asm/kvm_guest.h1
-rw-r--r--arch/x86/include/asm/kvm_host.h3
-rw-r--r--arch/x86/include/asm/kvm_page_track.h1
-rw-r--r--arch/x86/include/asm/kvm_para.h5
-rw-r--r--arch/x86/include/asm/kvmclock.h1
-rw-r--r--arch/x86/include/asm/linkage.h1
-rw-r--r--arch/x86/include/asm/local.h1
-rw-r--r--arch/x86/include/asm/mach_timer.h1
-rw-r--r--arch/x86/include/asm/mach_traps.h1
-rw-r--r--arch/x86/include/asm/math_emu.h1
-rw-r--r--arch/x86/include/asm/mc146818rtc.h1
-rw-r--r--arch/x86/include/asm/mce.h2
-rw-r--r--arch/x86/include/asm/microcode.h1
-rw-r--r--arch/x86/include/asm/microcode_amd.h1
-rw-r--r--arch/x86/include/asm/microcode_intel.h1
-rw-r--r--arch/x86/include/asm/misc.h1
-rw-r--r--arch/x86/include/asm/mmconfig.h1
-rw-r--r--arch/x86/include/asm/mmu.h1
-rw-r--r--arch/x86/include/asm/mmu_context.h41
-rw-r--r--arch/x86/include/asm/mmx.h1
-rw-r--r--arch/x86/include/asm/mmzone.h1
-rw-r--r--arch/x86/include/asm/mmzone_32.h1
-rw-r--r--arch/x86/include/asm/mmzone_64.h1
-rw-r--r--arch/x86/include/asm/module.h1
-rw-r--r--arch/x86/include/asm/mpspec.h1
-rw-r--r--arch/x86/include/asm/mpspec_def.h1
-rw-r--r--arch/x86/include/asm/mpx.h1
-rw-r--r--arch/x86/include/asm/mshyperv.h12
-rw-r--r--arch/x86/include/asm/msi.h1
-rw-r--r--arch/x86/include/asm/msidef.h1
-rw-r--r--arch/x86/include/asm/msr-index.h1
-rw-r--r--arch/x86/include/asm/msr-trace.h1
-rw-r--r--arch/x86/include/asm/msr.h1
-rw-r--r--arch/x86/include/asm/mwait.h1
-rw-r--r--arch/x86/include/asm/nmi.h1
-rw-r--r--arch/x86/include/asm/nops.h1
-rw-r--r--arch/x86/include/asm/numa.h1
-rw-r--r--arch/x86/include/asm/numa_32.h1
-rw-r--r--arch/x86/include/asm/olpc.h1
-rw-r--r--arch/x86/include/asm/olpc_ofw.h1
-rw-r--r--arch/x86/include/asm/page.h1
-rw-r--r--arch/x86/include/asm/page_32.h1
-rw-r--r--arch/x86/include/asm/page_32_types.h1
-rw-r--r--arch/x86/include/asm/page_64.h1
-rw-r--r--arch/x86/include/asm/page_64_types.h1
-rw-r--r--arch/x86/include/asm/page_types.h1
-rw-r--r--arch/x86/include/asm/paravirt.h38
-rw-r--r--arch/x86/include/asm/paravirt_types.h24
-rw-r--r--arch/x86/include/asm/parport.h1
-rw-r--r--arch/x86/include/asm/pat.h1
-rw-r--r--arch/x86/include/asm/pci-direct.h1
-rw-r--r--arch/x86/include/asm/pci-functions.h1
-rw-r--r--arch/x86/include/asm/pci.h1
-rw-r--r--arch/x86/include/asm/pci_64.h1
-rw-r--r--arch/x86/include/asm/pci_x86.h1
-rw-r--r--arch/x86/include/asm/percpu.h1
-rw-r--r--arch/x86/include/asm/perf_event.h1
-rw-r--r--arch/x86/include/asm/perf_event_p4.h1
-rw-r--r--arch/x86/include/asm/pgalloc.h1
-rw-r--r--arch/x86/include/asm/pgtable-2level.h1
-rw-r--r--arch/x86/include/asm/pgtable-2level_types.h1
-rw-r--r--arch/x86/include/asm/pgtable-3level.h1
-rw-r--r--arch/x86/include/asm/pgtable-3level_types.h1
-rw-r--r--arch/x86/include/asm/pgtable.h28
-rw-r--r--arch/x86/include/asm/pgtable_32.h1
-rw-r--r--arch/x86/include/asm/pgtable_32_types.h1
-rw-r--r--arch/x86/include/asm/pgtable_64.h1
-rw-r--r--arch/x86/include/asm/pgtable_64_types.h1
-rw-r--r--arch/x86/include/asm/pgtable_types.h1
-rw-r--r--arch/x86/include/asm/pkeys.h1
-rw-r--r--arch/x86/include/asm/pm-trace.h1
-rw-r--r--arch/x86/include/asm/posix_types.h1
-rw-r--r--arch/x86/include/asm/preempt.h16
-rw-r--r--arch/x86/include/asm/probe_roms.h1
-rw-r--r--arch/x86/include/asm/processor-cyrix.h1
-rw-r--r--arch/x86/include/asm/processor-flags.h1
-rw-r--r--arch/x86/include/asm/processor.h7
-rw-r--r--arch/x86/include/asm/proto.h1
-rw-r--r--arch/x86/include/asm/ptrace.h1
-rw-r--r--arch/x86/include/asm/purgatory.h1
-rw-r--r--arch/x86/include/asm/pvclock-abi.h1
-rw-r--r--arch/x86/include/asm/pvclock.h1
-rw-r--r--arch/x86/include/asm/qrwlock.h1
-rw-r--r--arch/x86/include/asm/qspinlock.h1
-rw-r--r--arch/x86/include/asm/qspinlock_paravirt.h1
-rw-r--r--arch/x86/include/asm/realmode.h1
-rw-r--r--arch/x86/include/asm/reboot.h1
-rw-r--r--arch/x86/include/asm/reboot_fixups.h1
-rw-r--r--arch/x86/include/asm/rio.h1
-rw-r--r--arch/x86/include/asm/rmwcc.h1
-rw-r--r--arch/x86/include/asm/rwsem.h5
-rw-r--r--arch/x86/include/asm/seccomp.h1
-rw-r--r--arch/x86/include/asm/sections.h1
-rw-r--r--arch/x86/include/asm/segment.h1
-rw-r--r--arch/x86/include/asm/serial.h1
-rw-r--r--arch/x86/include/asm/set_memory.h1
-rw-r--r--arch/x86/include/asm/setup.h1
-rw-r--r--arch/x86/include/asm/shmparam.h1
-rw-r--r--arch/x86/include/asm/sigcontext.h1
-rw-r--r--arch/x86/include/asm/sigframe.h1
-rw-r--r--arch/x86/include/asm/sighandling.h1
-rw-r--r--arch/x86/include/asm/signal.h1
-rw-r--r--arch/x86/include/asm/simd.h1
-rw-r--r--arch/x86/include/asm/smp.h1
-rw-r--r--arch/x86/include/asm/sparsemem.h1
-rw-r--r--arch/x86/include/asm/special_insns.h11
-rw-r--r--arch/x86/include/asm/spinlock.h1
-rw-r--r--arch/x86/include/asm/spinlock_types.h1
-rw-r--r--arch/x86/include/asm/sta2x11.h1
-rw-r--r--arch/x86/include/asm/stackprotector.h1
-rw-r--r--arch/x86/include/asm/stacktrace.h1
-rw-r--r--arch/x86/include/asm/string.h1
-rw-r--r--arch/x86/include/asm/string_32.h1
-rw-r--r--arch/x86/include/asm/string_64.h1
-rw-r--r--arch/x86/include/asm/suspend.h1
-rw-r--r--arch/x86/include/asm/suspend_32.h1
-rw-r--r--arch/x86/include/asm/suspend_64.h1
-rw-r--r--arch/x86/include/asm/svm.h1
-rw-r--r--arch/x86/include/asm/swiotlb.h1
-rw-r--r--arch/x86/include/asm/switch_to.h1
-rw-r--r--arch/x86/include/asm/sync_bitops.h1
-rw-r--r--arch/x86/include/asm/text-patching.h1
-rw-r--r--arch/x86/include/asm/thread_info.h12
-rw-r--r--arch/x86/include/asm/time.h1
-rw-r--r--arch/x86/include/asm/timer.h1
-rw-r--r--arch/x86/include/asm/timex.h1
-rw-r--r--arch/x86/include/asm/tlb.h1
-rw-r--r--arch/x86/include/asm/tlbbatch.h1
-rw-r--r--arch/x86/include/asm/tlbflush.h34
-rw-r--r--arch/x86/include/asm/trace/exceptions.h1
-rw-r--r--arch/x86/include/asm/trace/fpu.h12
-rw-r--r--arch/x86/include/asm/trace/irq_vectors.h1
-rw-r--r--arch/x86/include/asm/trace/mpx.h1
-rw-r--r--arch/x86/include/asm/trace_clock.h1
-rw-r--r--arch/x86/include/asm/traps.h1
-rw-r--r--arch/x86/include/asm/tsc.h1
-rw-r--r--arch/x86/include/asm/uaccess.h7
-rw-r--r--arch/x86/include/asm/uaccess_32.h1
-rw-r--r--arch/x86/include/asm/uaccess_64.h1
-rw-r--r--arch/x86/include/asm/unaligned.h1
-rw-r--r--arch/x86/include/asm/unistd.h1
-rw-r--r--arch/x86/include/asm/unwind.h1
-rw-r--r--arch/x86/include/asm/user.h1
-rw-r--r--arch/x86/include/asm/user32.h1
-rw-r--r--arch/x86/include/asm/user_32.h1
-rw-r--r--arch/x86/include/asm/user_64.h1
-rw-r--r--arch/x86/include/asm/uv/uv.h1
-rw-r--r--arch/x86/include/asm/vdso.h1
-rw-r--r--arch/x86/include/asm/vga.h1
-rw-r--r--arch/x86/include/asm/vgtod.h1
-rw-r--r--arch/x86/include/asm/vm86.h1
-rw-r--r--arch/x86/include/asm/vsyscall.h1
-rw-r--r--arch/x86/include/asm/word-at-a-time.h1
-rw-r--r--arch/x86/include/asm/x2apic.h1
-rw-r--r--arch/x86/include/asm/x86_init.h1
-rw-r--r--arch/x86/include/asm/xen/events.h1
-rw-r--r--arch/x86/include/asm/xen/hypercall.h9
-rw-r--r--arch/x86/include/asm/xen/interface_32.h1
-rw-r--r--arch/x86/include/asm/xen/interface_64.h1
-rw-r--r--arch/x86/include/asm/xen/page-coherent.h1
-rw-r--r--arch/x86/include/asm/xen/page.h1
-rw-r--r--arch/x86/include/asm/xen/pci.h1
-rw-r--r--arch/x86/include/asm/xen/swiotlb-xen.h1
-rw-r--r--arch/x86/include/asm/xen/trace_types.h1
-rw-r--r--arch/x86/include/asm/xor_64.h1
-rw-r--r--arch/x86/include/uapi/asm/a.out.h1
-rw-r--r--arch/x86/include/uapi/asm/auxvec.h1
-rw-r--r--arch/x86/include/uapi/asm/bitsperlong.h1
-rw-r--r--arch/x86/include/uapi/asm/boot.h1
-rw-r--r--arch/x86/include/uapi/asm/bootparam.h1
-rw-r--r--arch/x86/include/uapi/asm/byteorder.h1
-rw-r--r--arch/x86/include/uapi/asm/debugreg.h1
-rw-r--r--arch/x86/include/uapi/asm/e820.h1
-rw-r--r--arch/x86/include/uapi/asm/hw_breakpoint.h1
-rw-r--r--arch/x86/include/uapi/asm/hwcap2.h1
-rw-r--r--arch/x86/include/uapi/asm/hyperv.h7
-rw-r--r--arch/x86/include/uapi/asm/ist.h1
-rw-r--r--arch/x86/include/uapi/asm/kvm.h1
-rw-r--r--arch/x86/include/uapi/asm/kvm_para.h1
-rw-r--r--arch/x86/include/uapi/asm/kvm_perf.h1
-rw-r--r--arch/x86/include/uapi/asm/ldt.h1
-rw-r--r--arch/x86/include/uapi/asm/mce.h1
-rw-r--r--arch/x86/include/uapi/asm/mman.h1
-rw-r--r--arch/x86/include/uapi/asm/msr.h1
-rw-r--r--arch/x86/include/uapi/asm/mtrr.h1
-rw-r--r--arch/x86/include/uapi/asm/perf_regs.h1
-rw-r--r--arch/x86/include/uapi/asm/posix_types.h1
-rw-r--r--arch/x86/include/uapi/asm/posix_types_32.h1
-rw-r--r--arch/x86/include/uapi/asm/posix_types_64.h1
-rw-r--r--arch/x86/include/uapi/asm/posix_types_x32.h1
-rw-r--r--arch/x86/include/uapi/asm/prctl.h1
-rw-r--r--arch/x86/include/uapi/asm/processor-flags.h1
-rw-r--r--arch/x86/include/uapi/asm/ptrace-abi.h1
-rw-r--r--arch/x86/include/uapi/asm/ptrace.h1
-rw-r--r--arch/x86/include/uapi/asm/sembuf.h1
-rw-r--r--arch/x86/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/x86/include/uapi/asm/sigcontext32.h1
-rw-r--r--arch/x86/include/uapi/asm/siginfo.h1
-rw-r--r--arch/x86/include/uapi/asm/signal.h1
-rw-r--r--arch/x86/include/uapi/asm/stat.h1
-rw-r--r--arch/x86/include/uapi/asm/statfs.h1
-rw-r--r--arch/x86/include/uapi/asm/svm.h1
-rw-r--r--arch/x86/include/uapi/asm/swab.h1
-rw-r--r--arch/x86/include/uapi/asm/types.h1
-rw-r--r--arch/x86/include/uapi/asm/ucontext.h1
-rw-r--r--arch/x86/include/uapi/asm/unistd.h1
-rw-r--r--arch/x86/include/uapi/asm/vm86.h1
-rw-r--r--arch/x86/include/uapi/asm/vmx.h1
-rw-r--r--arch/x86/include/uapi/asm/vsyscall.h1
-rw-r--r--arch/x86/kernel/Makefile1
-rw-r--r--arch/x86/kernel/acpi/Makefile1
-rw-r--r--arch/x86/kernel/acpi/boot.c4
-rw-r--r--arch/x86/kernel/acpi/sleep.c1
-rw-r--r--arch/x86/kernel/acpi/sleep.h1
-rw-r--r--arch/x86/kernel/amd_nb.c41
-rw-r--r--arch/x86/kernel/aperture_64.c1
-rw-r--r--arch/x86/kernel/apic/Makefile1
-rw-r--r--arch/x86/kernel/apic/apic.c15
-rw-r--r--arch/x86/kernel/apic/apic_noop.c1
-rw-r--r--arch/x86/kernel/apic/bigsmp_32.c1
-rw-r--r--arch/x86/kernel/apic/hw_nmi.c1
-rw-r--r--arch/x86/kernel/apic/io_apic.c1
-rw-r--r--arch/x86/kernel/apic/ipi.c1
-rw-r--r--arch/x86/kernel/apic/x2apic_cluster.c1
-rw-r--r--arch/x86/kernel/apic/x2apic_phys.c1
-rw-r--r--arch/x86/kernel/apm_32.c2
-rw-r--r--arch/x86/kernel/asm-offsets.c1
-rw-r--r--arch/x86/kernel/asm-offsets_32.c1
-rw-r--r--arch/x86/kernel/asm-offsets_64.c1
-rw-r--r--arch/x86/kernel/audit_64.c1
-rw-r--r--arch/x86/kernel/bootflag.c1
-rw-r--r--arch/x86/kernel/check.c1
-rw-r--r--arch/x86/kernel/cpu/Makefile3
-rw-r--r--arch/x86/kernel/cpu/amd.c11
-rw-r--r--arch/x86/kernel/cpu/aperfmperf.c11
-rw-r--r--arch/x86/kernel/cpu/bugs.c9
-rw-r--r--arch/x86/kernel/cpu/centaur.c1
-rw-r--r--arch/x86/kernel/cpu/common.c57
-rw-r--r--arch/x86/kernel/cpu/cpu.h1
-rw-r--r--arch/x86/kernel/cpu/cyrix.c1
-rw-r--r--arch/x86/kernel/cpu/intel.c1
-rw-r--r--arch/x86/kernel/cpu/intel_cacheinfo.c2
-rw-r--r--arch/x86/kernel/cpu/intel_rdt.h1
-rw-r--r--arch/x86/kernel/cpu/match.c1
-rw-r--r--arch/x86/kernel/cpu/mcheck/Makefile1
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce-internal.h8
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce_amd.c2
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce_intel.c1
-rw-r--r--arch/x86/kernel/cpu/mcheck/p5.c1
-rw-r--r--arch/x86/kernel/cpu/mcheck/threshold.c1
-rw-r--r--arch/x86/kernel/cpu/mcheck/winchip.c1
-rw-r--r--arch/x86/kernel/cpu/microcode/core.c27
-rw-r--r--arch/x86/kernel/cpu/microcode/intel.c19
-rw-r--r--arch/x86/kernel/cpu/mkcapflags.sh1
-rw-r--r--arch/x86/kernel/cpu/mshyperv.c4
-rw-r--r--arch/x86/kernel/cpu/mtrr/amd.c1
-rw-r--r--arch/x86/kernel/cpu/mtrr/centaur.c1
-rw-r--r--arch/x86/kernel/cpu/mtrr/cyrix.c1
-rw-r--r--arch/x86/kernel/cpu/mtrr/if.c1
-rw-r--r--arch/x86/kernel/cpu/mtrr/mtrr.h1
-rw-r--r--arch/x86/kernel/cpu/perfctr-watchdog.c1
-rw-r--r--arch/x86/kernel/cpu/powerflags.c1
-rw-r--r--arch/x86/kernel/cpu/proc.c13
-rw-r--r--arch/x86/kernel/cpu/topology.c1
-rw-r--r--arch/x86/kernel/cpu/transmeta.c1
-rw-r--r--arch/x86/kernel/cpu/umc.c1
-rw-r--r--arch/x86/kernel/crash_dump_32.c1
-rw-r--r--arch/x86/kernel/crash_dump_64.c1
-rw-r--r--arch/x86/kernel/devicetree.c1
-rw-r--r--arch/x86/kernel/doublefault.c1
-rw-r--r--arch/x86/kernel/dumpstack_32.c1
-rw-r--r--arch/x86/kernel/dumpstack_64.c1
-rw-r--r--arch/x86/kernel/early-quirks.c1
-rw-r--r--arch/x86/kernel/early_printk.c1
-rw-r--r--arch/x86/kernel/ebda.c1
-rw-r--r--arch/x86/kernel/fpu/bugs.c1
-rw-r--r--arch/x86/kernel/fpu/core.c155
-rw-r--r--arch/x86/kernel/fpu/init.c2
-rw-r--r--arch/x86/kernel/fpu/regset.c49
-rw-r--r--arch/x86/kernel/fpu/signal.c38
-rw-r--r--arch/x86/kernel/fpu/xstate.c264
-rw-r--r--arch/x86/kernel/ftrace.c1
-rw-r--r--arch/x86/kernel/ftrace_32.S1
-rw-r--r--arch/x86/kernel/ftrace_64.S1
-rw-r--r--arch/x86/kernel/head32.c6
-rw-r--r--arch/x86/kernel/head64.c1
-rw-r--r--arch/x86/kernel/head_32.S1
-rw-r--r--arch/x86/kernel/head_64.S1
-rw-r--r--arch/x86/kernel/i8253.c1
-rw-r--r--arch/x86/kernel/i8259.c1
-rw-r--r--arch/x86/kernel/io_delay.c3
-rw-r--r--arch/x86/kernel/ioport.c1
-rw-r--r--arch/x86/kernel/irq_32.c7
-rw-r--r--arch/x86/kernel/irq_64.c1
-rw-r--r--arch/x86/kernel/irq_work.c1
-rw-r--r--arch/x86/kernel/irqinit.c1
-rw-r--r--arch/x86/kernel/jump_label.c1
-rw-r--r--arch/x86/kernel/kprobes/common.h14
-rw-r--r--arch/x86/kernel/kprobes/core.c2
-rw-r--r--arch/x86/kernel/ksysfs.c2
-rw-r--r--arch/x86/kernel/kvm.c15
-rw-r--r--arch/x86/kernel/ldt.c1
-rw-r--r--arch/x86/kernel/mmconf-fam10h_64.c1
-rw-r--r--arch/x86/kernel/mpparse.c1
-rw-r--r--arch/x86/kernel/nmi_selftest.c1
-rw-r--r--arch/x86/kernel/paravirt-spinlocks.c1
-rw-r--r--arch/x86/kernel/paravirt.c5
-rw-r--r--arch/x86/kernel/paravirt_patch_32.c1
-rw-r--r--arch/x86/kernel/paravirt_patch_64.c1
-rw-r--r--arch/x86/kernel/pci-dma.c1
-rw-r--r--arch/x86/kernel/pci-iommu_table.c1
-rw-r--r--arch/x86/kernel/pci-nommu.c1
-rw-r--r--arch/x86/kernel/pci-swiotlb.c1
-rw-r--r--arch/x86/kernel/pcspeaker.c1
-rw-r--r--arch/x86/kernel/perf_regs.c1
-rw-r--r--arch/x86/kernel/platform-quirks.c1
-rw-r--r--arch/x86/kernel/pmem.c1
-rw-r--r--arch/x86/kernel/probe_roms.c1
-rw-r--r--arch/x86/kernel/process.c1
-rw-r--r--arch/x86/kernel/quirks.c1
-rw-r--r--arch/x86/kernel/reboot.c7
-rw-r--r--arch/x86/kernel/reboot_fixups_32.c1
-rw-r--r--arch/x86/kernel/resource.c1
-rw-r--r--arch/x86/kernel/rtc.c1
-rw-r--r--arch/x86/kernel/setup.c5
-rw-r--r--arch/x86/kernel/setup_percpu.c1
-rw-r--r--arch/x86/kernel/signal.c7
-rw-r--r--arch/x86/kernel/signal_compat.c1
-rw-r--r--arch/x86/kernel/smpboot.c21
-rw-r--r--arch/x86/kernel/step.c1
-rw-r--r--arch/x86/kernel/sys_x86_64.c1
-rw-r--r--arch/x86/kernel/time.c1
-rw-r--r--arch/x86/kernel/tls.c1
-rw-r--r--arch/x86/kernel/trace_clock.c1
-rw-r--r--arch/x86/kernel/tracepoint.c1
-rw-r--r--arch/x86/kernel/traps.c2
-rw-r--r--arch/x86/kernel/tsc_sync.c1
-rw-r--r--arch/x86/kernel/unwind_frame.c38
-rw-r--r--arch/x86/kernel/unwind_orc.c29
-rw-r--r--arch/x86/kernel/vm86_32.c1
-rw-r--r--arch/x86/kernel/vmlinux.lds.S1
-rw-r--r--arch/x86/kvm/Kconfig2
-rw-r--r--arch/x86/kvm/Makefile1
-rw-r--r--arch/x86/kvm/cpuid.h2
-rw-r--r--arch/x86/kvm/emulate.c17
-rw-r--r--arch/x86/kvm/i8254.h1
-rw-r--r--arch/x86/kvm/ioapic.h1
-rw-r--r--arch/x86/kvm/kvm_cache_regs.h1
-rw-r--r--arch/x86/kvm/lapic.c4
-rw-r--r--arch/x86/kvm/lapic.h1
-rw-r--r--arch/x86/kvm/mmu.c17
-rw-r--r--arch/x86/kvm/mmu.h1
-rw-r--r--arch/x86/kvm/mmutrace.h1
-rw-r--r--arch/x86/kvm/paging_tmpl.h3
-rw-r--r--arch/x86/kvm/pmu.h1
-rw-r--r--arch/x86/kvm/svm.c38
-rw-r--r--arch/x86/kvm/trace.h1
-rw-r--r--arch/x86/kvm/tss.h1
-rw-r--r--arch/x86/kvm/vmx.c414
-rw-r--r--arch/x86/kvm/x86.c53
-rw-r--r--arch/x86/kvm/x86.h1
-rw-r--r--arch/x86/lib/Makefile1
-rw-r--r--arch/x86/lib/cache-smp.c1
-rw-r--r--arch/x86/lib/copy_page_64.S1
-rw-r--r--arch/x86/lib/csum-partial_64.c1
-rw-r--r--arch/x86/lib/delay.c1
-rw-r--r--arch/x86/lib/getuser.S1
-rw-r--r--arch/x86/lib/hweight.S1
-rw-r--r--arch/x86/lib/kaslr.c1
-rw-r--r--arch/x86/lib/memcpy_32.c1
-rw-r--r--arch/x86/lib/memmove_64.S1
-rw-r--r--arch/x86/lib/memset_64.S1
-rw-r--r--arch/x86/lib/misc.c1
-rw-r--r--arch/x86/lib/mmx_32.c1
-rw-r--r--arch/x86/lib/msr-reg-export.c1
-rw-r--r--arch/x86/lib/msr-reg.S1
-rw-r--r--arch/x86/lib/msr-smp.c1
-rw-r--r--arch/x86/lib/msr.c1
-rw-r--r--arch/x86/lib/putuser.S1
-rw-r--r--arch/x86/lib/string_32.c1
-rw-r--r--arch/x86/lib/strstr_32.c1
-rw-r--r--arch/x86/lib/usercopy_32.c1
-rw-r--r--arch/x86/math-emu/Makefile1
-rw-r--r--arch/x86/math-emu/control_w.h1
-rw-r--r--arch/x86/math-emu/div_Xsig.S1
-rw-r--r--arch/x86/math-emu/div_small.S1
-rw-r--r--arch/x86/math-emu/errors.c1
-rw-r--r--arch/x86/math-emu/exception.h1
-rw-r--r--arch/x86/math-emu/fpu_arith.c1
-rw-r--r--arch/x86/math-emu/fpu_asm.h1
-rw-r--r--arch/x86/math-emu/fpu_aux.c1
-rw-r--r--arch/x86/math-emu/fpu_emu.h1
-rw-r--r--arch/x86/math-emu/fpu_entry.c3
-rw-r--r--arch/x86/math-emu/fpu_etc.c1
-rw-r--r--arch/x86/math-emu/fpu_proto.h1
-rw-r--r--arch/x86/math-emu/fpu_system.h1
-rw-r--r--arch/x86/math-emu/fpu_tags.c1
-rw-r--r--arch/x86/math-emu/fpu_trig.c1
-rw-r--r--arch/x86/math-emu/get_address.c1
-rw-r--r--arch/x86/math-emu/load_store.c1
-rw-r--r--arch/x86/math-emu/mul_Xsig.S1
-rw-r--r--arch/x86/math-emu/poly.h1
-rw-r--r--arch/x86/math-emu/poly_2xm1.c1
-rw-r--r--arch/x86/math-emu/poly_atan.c1
-rw-r--r--arch/x86/math-emu/poly_l2.c1
-rw-r--r--arch/x86/math-emu/poly_sin.c1
-rw-r--r--arch/x86/math-emu/poly_tan.c1
-rw-r--r--arch/x86/math-emu/polynom_Xsig.S1
-rw-r--r--arch/x86/math-emu/reg_add_sub.c1
-rw-r--r--arch/x86/math-emu/reg_compare.c1
-rw-r--r--arch/x86/math-emu/reg_constant.c1
-rw-r--r--arch/x86/math-emu/reg_constant.h1
-rw-r--r--arch/x86/math-emu/reg_convert.c1
-rw-r--r--arch/x86/math-emu/reg_divide.c1
-rw-r--r--arch/x86/math-emu/reg_ld_str.c1
-rw-r--r--arch/x86/math-emu/reg_mul.c1
-rw-r--r--arch/x86/math-emu/reg_norm.S1
-rw-r--r--arch/x86/math-emu/reg_round.S1
-rw-r--r--arch/x86/math-emu/reg_u_add.S1
-rw-r--r--arch/x86/math-emu/reg_u_div.S1
-rw-r--r--arch/x86/math-emu/reg_u_mul.S1
-rw-r--r--arch/x86/math-emu/reg_u_sub.S1
-rw-r--r--arch/x86/math-emu/round_Xsig.S1
-rw-r--r--arch/x86/math-emu/shr_Xsig.S1
-rw-r--r--arch/x86/math-emu/status_w.h1
-rw-r--r--arch/x86/math-emu/wm_shrx.S1
-rw-r--r--arch/x86/math-emu/wm_sqrt.S1
-rw-r--r--arch/x86/mm/Makefile12
-rw-r--r--arch/x86/mm/amdtopology.c1
-rw-r--r--arch/x86/mm/extable.c24
-rw-r--r--arch/x86/mm/fault.c60
-rw-r--r--arch/x86/mm/hugetlbpage.c1
-rw-r--r--arch/x86/mm/ident_map.c1
-rw-r--r--arch/x86/mm/init.c34
-rw-r--r--arch/x86/mm/kasan_init_64.c1
-rw-r--r--arch/x86/mm/kaslr.c1
-rw-r--r--arch/x86/mm/kmemcheck/error.c1
-rw-r--r--arch/x86/mm/kmemcheck/error.h1
-rw-r--r--arch/x86/mm/kmemcheck/opcode.c1
-rw-r--r--arch/x86/mm/kmemcheck/opcode.h1
-rw-r--r--arch/x86/mm/kmemcheck/pte.c1
-rw-r--r--arch/x86/mm/kmemcheck/pte.h1
-rw-r--r--arch/x86/mm/kmemcheck/selftest.c1
-rw-r--r--arch/x86/mm/kmemcheck/selftest.h1
-rw-r--r--arch/x86/mm/kmemcheck/shadow.h1
-rw-r--r--arch/x86/mm/kmmio.c1
-rw-r--r--arch/x86/mm/mem_encrypt.c2
-rw-r--r--arch/x86/mm/mm_internal.h1
-rw-r--r--arch/x86/mm/mpx.c1
-rw-r--r--arch/x86/mm/numa_64.c1
-rw-r--r--arch/x86/mm/numa_emulation.c1
-rw-r--r--arch/x86/mm/numa_internal.h1
-rw-r--r--arch/x86/mm/pageattr-test.c1
-rw-r--r--arch/x86/mm/pat_internal.h1
-rw-r--r--arch/x86/mm/pat_rbtree.c1
-rw-r--r--arch/x86/mm/pgtable.c8
-rw-r--r--arch/x86/mm/pgtable_32.c1
-rw-r--r--arch/x86/mm/physaddr.c1
-rw-r--r--arch/x86/mm/physaddr.h1
-rw-r--r--arch/x86/mm/pkeys.c3
-rw-r--r--arch/x86/mm/setup_nx.c1
-rw-r--r--arch/x86/mm/srat.c1
-rw-r--r--arch/x86/mm/tlb.c134
-rw-r--r--arch/x86/net/bpf_jit_comp.c4
-rw-r--r--arch/x86/oprofile/Makefile1
-rw-r--r--arch/x86/pci/Makefile1
-rw-r--r--arch/x86/pci/acpi.c1
-rw-r--r--arch/x86/pci/amd_bus.c1
-rw-r--r--arch/x86/pci/bus_numa.c1
-rw-r--r--arch/x86/pci/bus_numa.h1
-rw-r--r--arch/x86/pci/direct.c1
-rw-r--r--arch/x86/pci/early.c1
-rw-r--r--arch/x86/pci/fixup.c1
-rw-r--r--arch/x86/pci/i386.c1
-rw-r--r--arch/x86/pci/init.c1
-rw-r--r--arch/x86/pci/intel_mid_pci.c1
-rw-r--r--arch/x86/pci/irq.c3
-rw-r--r--arch/x86/pci/mmconfig-shared.c1
-rw-r--r--arch/x86/pci/mmconfig_64.c1
-rw-r--r--arch/x86/pci/pcbios.c1
-rw-r--r--arch/x86/platform/Makefile1
-rw-r--r--arch/x86/platform/efi/Makefile1
-rw-r--r--arch/x86/platform/efi/efi.c1
-rw-r--r--arch/x86/platform/efi/efi_32.c1
-rw-r--r--arch/x86/platform/efi/efi_64.c1
-rw-r--r--arch/x86/platform/efi/efi_stub_32.S1
-rw-r--r--arch/x86/platform/efi/efi_stub_64.S1
-rw-r--r--arch/x86/platform/efi/efi_thunk_64.S1
-rw-r--r--arch/x86/platform/intel-mid/device_libs/Makefile1
-rw-r--r--arch/x86/platform/intel-quark/imr_selftest.c1
-rw-r--r--arch/x86/platform/olpc/Makefile1
-rw-r--r--arch/x86/platform/olpc/xo1-wakeup.S1
-rw-r--r--arch/x86/power/Makefile1
-rw-r--r--arch/x86/power/cpu.c2
-rw-r--r--arch/x86/power/hibernate_64.c21
-rw-r--r--arch/x86/power/hibernate_asm_32.S1
-rw-r--r--arch/x86/purgatory/Makefile1
-rw-r--r--arch/x86/ras/Kconfig1
-rw-r--r--arch/x86/realmode/init.c1
-rw-r--r--arch/x86/realmode/rm/header.S1
-rw-r--r--arch/x86/realmode/rm/realmode.h1
-rw-r--r--arch/x86/realmode/rm/realmode.lds.S1
-rw-r--r--arch/x86/realmode/rm/reboot.S1
-rw-r--r--arch/x86/realmode/rm/stack.S1
-rw-r--r--arch/x86/realmode/rm/trampoline_32.S1
-rw-r--r--arch/x86/realmode/rm/trampoline_64.S1
-rw-r--r--arch/x86/realmode/rm/trampoline_common.S1
-rw-r--r--arch/x86/realmode/rm/wakemain.c1
-rw-r--r--arch/x86/realmode/rm/wakeup.h1
-rw-r--r--arch/x86/realmode/rm/wakeup_asm.S1
-rw-r--r--arch/x86/realmode/rmpiggy.S1
-rw-r--r--arch/x86/tools/Makefile1
-rw-r--r--arch/x86/tools/distill.awk1
-rw-r--r--arch/x86/tools/gen-insn-attr-x86.awk1
-rw-r--r--arch/x86/tools/relocs.c1
-rw-r--r--arch/x86/tools/relocs.h1
-rw-r--r--arch/x86/tools/relocs_32.c1
-rw-r--r--arch/x86/tools/relocs_64.c1
-rw-r--r--arch/x86/tools/relocs_common.c1
-rw-r--r--arch/x86/um/Kconfig1
-rw-r--r--arch/x86/um/Makefile1
-rw-r--r--arch/x86/um/asm/arch_hweight.h1
-rw-r--r--arch/x86/um/asm/barrier.h1
-rw-r--r--arch/x86/um/asm/checksum.h1
-rw-r--r--arch/x86/um/asm/desc.h1
-rw-r--r--arch/x86/um/asm/module.h1
-rw-r--r--arch/x86/um/asm/processor.h1
-rw-r--r--arch/x86/um/asm/ptrace.h1
-rw-r--r--arch/x86/um/asm/segment.h1
-rw-r--r--arch/x86/um/asm/syscall.h1
-rw-r--r--arch/x86/um/elfcore.c1
-rw-r--r--arch/x86/um/mem_64.c1
-rw-r--r--arch/x86/um/os-Linux/mcontext.c1
-rw-r--r--arch/x86/um/os-Linux/registers.c18
-rw-r--r--arch/x86/um/os-Linux/task_size.c1
-rw-r--r--arch/x86/um/os-Linux/tls.c3
-rw-r--r--arch/x86/um/setjmp_32.S1
-rw-r--r--arch/x86/um/setjmp_64.S1
-rw-r--r--arch/x86/um/shared/sysdep/archsetjmp.h1
-rw-r--r--arch/x86/um/shared/sysdep/archsetjmp_32.h1
-rw-r--r--arch/x86/um/shared/sysdep/archsetjmp_64.h1
-rw-r--r--arch/x86/um/shared/sysdep/faultinfo.h1
-rw-r--r--arch/x86/um/shared/sysdep/kernel-offsets.h1
-rw-r--r--arch/x86/um/shared/sysdep/ptrace.h1
-rw-r--r--arch/x86/um/shared/sysdep/ptrace_user.h1
-rw-r--r--arch/x86/um/shared/sysdep/stub.h1
-rw-r--r--arch/x86/um/shared/sysdep/syscalls.h1
-rw-r--r--arch/x86/um/shared/sysdep/tls.h1
-rw-r--r--arch/x86/um/stub_32.S1
-rw-r--r--arch/x86/um/stub_64.S1
-rw-r--r--arch/x86/um/sys_call_table_32.c1
-rw-r--r--arch/x86/um/sys_call_table_64.c1
-rw-r--r--arch/x86/um/syscalls_32.c1
-rw-r--r--arch/x86/um/tls_64.c1
-rw-r--r--arch/x86/um/user-offsets.c3
-rw-r--r--arch/x86/um/vdso/Makefile1
-rw-r--r--arch/x86/um/vdso/checkundef.sh1
-rw-r--r--arch/x86/um/vdso/vdso-layout.lds.S1
-rw-r--r--arch/x86/um/vdso/vdso.S1
-rw-r--r--arch/x86/um/vdso/vdso.lds.S1
-rw-r--r--arch/x86/xen/Kconfig1
-rw-r--r--arch/x86/xen/Makefile1
-rw-r--r--arch/x86/xen/apic.c1
-rw-r--r--arch/x86/xen/debugfs.c1
-rw-r--r--arch/x86/xen/debugfs.h1
-rw-r--r--arch/x86/xen/enlighten.c4
-rw-r--r--arch/x86/xen/enlighten_pv.c3
-rw-r--r--arch/x86/xen/enlighten_pvh.c1
-rw-r--r--arch/x86/xen/irq.c1
-rw-r--r--arch/x86/xen/mmu.h1
-rw-r--r--arch/x86/xen/mmu_hvm.c1
-rw-r--r--arch/x86/xen/mmu_pv.c17
-rw-r--r--arch/x86/xen/multicalls.c1
-rw-r--r--arch/x86/xen/multicalls.h1
-rw-r--r--arch/x86/xen/pmu.c1
-rw-r--r--arch/x86/xen/pmu.h1
-rw-r--r--arch/x86/xen/setup.c1
-rw-r--r--arch/x86/xen/smp.c1
-rw-r--r--arch/x86/xen/smp.h1
-rw-r--r--arch/x86/xen/smp_hvm.c1
-rw-r--r--arch/x86/xen/smp_pv.c1
-rw-r--r--arch/x86/xen/spinlock.c1
-rw-r--r--arch/x86/xen/suspend.c1
-rw-r--r--arch/x86/xen/suspend_hvm.c1
-rw-r--r--arch/x86/xen/suspend_pv.c1
-rw-r--r--arch/x86/xen/time.c1
-rw-r--r--arch/x86/xen/trace.c1
-rw-r--r--arch/x86/xen/vga.c1
-rw-r--r--arch/x86/xen/xen-asm.S1
-rw-r--r--arch/x86/xen/xen-asm_32.S1
-rw-r--r--arch/x86/xen/xen-asm_64.S1
-rw-r--r--arch/x86/xen/xen-head.S1
-rw-r--r--arch/x86/xen/xen-ops.h1
-rw-r--r--arch/xtensa/Kconfig1
-rw-r--r--arch/xtensa/Kconfig.debug1
-rw-r--r--arch/xtensa/boot/boot-redboot/bootstrap.S1
-rw-r--r--arch/xtensa/boot/dts/csp.dts1
-rw-r--r--arch/xtensa/boot/dts/kc705.dts1
-rw-r--r--arch/xtensa/boot/dts/kc705_nommu.dts1
-rw-r--r--arch/xtensa/boot/dts/lx200mx.dts1
-rw-r--r--arch/xtensa/boot/dts/lx60.dts1
-rw-r--r--arch/xtensa/boot/dts/ml605.dts1
-rw-r--r--arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi1
-rw-r--r--arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi1
-rw-r--r--arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi1
-rw-r--r--arch/xtensa/boot/dts/xtfpga.dtsi1
-rw-r--r--arch/xtensa/boot/lib/Makefile1
-rw-r--r--arch/xtensa/boot/lib/zmem.c1
-rw-r--r--arch/xtensa/include/asm/flat.h1
-rw-r--r--arch/xtensa/include/asm/nommu_context.h1
-rw-r--r--arch/xtensa/include/asm/processor.h5
-rw-r--r--arch/xtensa/include/asm/spinlock_types.h1
-rw-r--r--arch/xtensa/include/asm/unistd.h1
-rw-r--r--arch/xtensa/include/uapi/asm/byteorder.h1
-rw-r--r--arch/xtensa/include/uapi/asm/ioctls.h1
-rw-r--r--arch/xtensa/include/uapi/asm/ipcbuf.h1
-rw-r--r--arch/xtensa/include/uapi/asm/mman.h1
-rw-r--r--arch/xtensa/include/uapi/asm/msgbuf.h1
-rw-r--r--arch/xtensa/include/uapi/asm/param.h1
-rw-r--r--arch/xtensa/include/uapi/asm/poll.h1
-rw-r--r--arch/xtensa/include/uapi/asm/posix_types.h1
-rw-r--r--arch/xtensa/include/uapi/asm/ptrace.h1
-rw-r--r--arch/xtensa/include/uapi/asm/sembuf.h1
-rw-r--r--arch/xtensa/include/uapi/asm/setup.h1
-rw-r--r--arch/xtensa/include/uapi/asm/shmbuf.h1
-rw-r--r--arch/xtensa/include/uapi/asm/sigcontext.h1
-rw-r--r--arch/xtensa/include/uapi/asm/signal.h1
-rw-r--r--arch/xtensa/include/uapi/asm/socket.h1
-rw-r--r--arch/xtensa/include/uapi/asm/sockios.h1
-rw-r--r--arch/xtensa/include/uapi/asm/stat.h1
-rw-r--r--arch/xtensa/include/uapi/asm/swab.h1
-rw-r--r--arch/xtensa/include/uapi/asm/termbits.h1
-rw-r--r--arch/xtensa/include/uapi/asm/types.h1
-rw-r--r--arch/xtensa/include/uapi/asm/unistd.h1
-rw-r--r--arch/xtensa/kernel/Makefile1
-rw-r--r--arch/xtensa/kernel/irq.c1
-rw-r--r--arch/xtensa/mm/mmu.c1
-rw-r--r--arch/xtensa/oprofile/Makefile1
-rw-r--r--block/Kconfig1
-rw-r--r--block/Kconfig.iosched1
-rw-r--r--block/Makefile1
-rw-r--r--block/bio.c26
-rw-r--r--block/blk-core.c3
-rw-r--r--block/blk-ioc.c1
-rw-r--r--block/blk-lib.c1
-rw-r--r--block/blk-map.c1
-rw-r--r--block/blk-merge.c1
-rw-r--r--block/blk-mq-debugfs.c6
-rw-r--r--block/blk-mq-debugfs.h1
-rw-r--r--block/blk-mq-sched.h1
-rw-r--r--block/blk-mq-tag.h1
-rw-r--r--block/blk-mq.h1
-rw-r--r--block/blk-softirq.c1
-rw-r--r--block/blk-stat.h1
-rw-r--r--block/blk-sysfs.c1
-rw-r--r--block/blk-tag.c1
-rw-r--r--block/blk-throttle.c5
-rw-r--r--block/blk-wbt.h1
-rw-r--r--block/blk.h1
-rw-r--r--block/bounce.c1
-rw-r--r--block/bsg-lib.c28
-rw-r--r--block/cmdline-parser.c1
-rw-r--r--block/compat_ioctl.c1
-rw-r--r--block/partition-generic.c3
-rw-r--r--block/partitions/Kconfig1
-rw-r--r--block/partitions/Makefile1
-rw-r--r--block/partitions/acorn.h1
-rw-r--r--block/partitions/aix.c1
-rw-r--r--block/partitions/amiga.c1
-rw-r--r--block/partitions/atari.c1
-rw-r--r--block/partitions/atari.h1
-rw-r--r--block/partitions/check.c1
-rw-r--r--block/partitions/check.h1
-rw-r--r--block/partitions/cmdline.c1
-rw-r--r--block/partitions/cmdline.h1
-rw-r--r--block/partitions/ibm.c1
-rw-r--r--block/partitions/karma.c1
-rw-r--r--block/partitions/mac.c1
-rw-r--r--block/partitions/mac.h1
-rw-r--r--block/partitions/msdos.c1
-rw-r--r--block/partitions/osf.c1
-rw-r--r--block/partitions/sgi.c1
-rw-r--r--block/partitions/sun.c1
-rw-r--r--block/partitions/sysv68.c1
-rw-r--r--block/partitions/ultrix.c1
-rw-r--r--certs/Kconfig1
-rw-r--r--certs/Makefile1
-rw-r--r--certs/blacklist_hashes.c1
-rw-r--r--certs/blacklist_nohashes.c1
-rw-r--r--certs/system_certificates.S1
-rw-r--r--crypto/Kconfig1
-rw-r--r--crypto/Makefile1
-rw-r--r--crypto/af_alg.c4
-rw-r--r--crypto/asymmetric_keys/Kconfig1
-rw-r--r--crypto/asymmetric_keys/Makefile1
-rw-r--r--crypto/asymmetric_keys/asymmetric_type.c4
-rw-r--r--crypto/asymmetric_keys/pkcs7_parser.c3
-rw-r--r--crypto/async_tx/Kconfig1
-rw-r--r--crypto/async_tx/Makefile1
-rw-r--r--crypto/drbg.c8
-rw-r--r--crypto/ecc_curve_defs.h1
-rw-r--r--crypto/ripemd.h1
-rw-r--r--crypto/shash.c10
-rw-r--r--crypto/skcipher.c17
-rw-r--r--crypto/xts.c6
-rw-r--r--drivers/Kconfig1
-rw-r--r--drivers/Makefile1
-rw-r--r--drivers/accessibility/Kconfig1
-rw-r--r--drivers/acpi/Kconfig1
-rw-r--r--drivers/acpi/Makefile1
-rw-r--r--drivers/acpi/acpi_video.c2
-rw-r--r--drivers/acpi/acpi_watchdog.c2
-rw-r--r--drivers/acpi/acpica/Makefile1
-rw-r--r--drivers/acpi/apei/Kconfig1
-rw-r--r--drivers/acpi/apei/Makefile1
-rw-r--r--drivers/acpi/apei/apei-internal.h1
-rw-r--r--drivers/acpi/apei/ghes.c16
-rw-r--r--drivers/acpi/arm64/iort.c35
-rw-r--r--drivers/acpi/battery.h1
-rw-r--r--drivers/acpi/blacklist.c4
-rw-r--r--drivers/acpi/bus.c4
-rw-r--r--drivers/acpi/dptf/Kconfig1
-rw-r--r--drivers/acpi/ec.c2
-rw-r--r--drivers/acpi/event.c1
-rw-r--r--drivers/acpi/nfit/Kconfig1
-rw-r--r--drivers/acpi/osi.c2
-rw-r--r--drivers/acpi/pci_slot.c2
-rw-r--r--drivers/acpi/pmic/intel_pmic.h1
-rw-r--r--drivers/acpi/proc.c1
-rw-r--r--drivers/acpi/processor_pdc.c3
-rw-r--r--drivers/acpi/property.c53
-rw-r--r--drivers/acpi/reboot.c1
-rw-r--r--drivers/acpi/sbshc.h1
-rw-r--r--drivers/acpi/sleep.c2
-rw-r--r--drivers/acpi/sleep.h1
-rw-r--r--drivers/acpi/sysfs.c1
-rw-r--r--drivers/acpi/thermal.c2
-rw-r--r--drivers/acpi/wakeup.c1
-rw-r--r--drivers/amba/Kconfig1
-rw-r--r--drivers/android/Kconfig1
-rw-r--r--drivers/android/binder.c112
-rw-r--r--drivers/android/binder_alloc.c42
-rw-r--r--drivers/android/binder_alloc.h1
-rw-r--r--drivers/ata/Kconfig1
-rw-r--r--drivers/ata/Makefile1
-rw-r--r--drivers/ata/ahci.c5
-rw-r--r--drivers/ata/ata_piix.c1
-rw-r--r--drivers/ata/libata-core.c20
-rw-r--r--drivers/ata/libata-transport.h1
-rw-r--r--drivers/ata/libata-zpodd.c1
-rw-r--r--drivers/ata/sata_gemini.h1
-rw-r--r--drivers/ata/sis.h1
-rw-r--r--drivers/atm/Kconfig1
-rw-r--r--drivers/atm/Makefile1
-rw-r--r--drivers/atm/eni.h1
-rw-r--r--drivers/atm/fore200e.h1
-rw-r--r--drivers/atm/idt77105.h1
-rw-r--r--drivers/atm/idt77252_tables.h1
-rw-r--r--drivers/atm/midway.h1
-rw-r--r--drivers/atm/nicstar.h1
-rw-r--r--drivers/atm/nicstarmac.c1
-rw-r--r--drivers/atm/solos-attrlist.c1
-rw-r--r--drivers/atm/suni.h1
-rw-r--r--drivers/atm/tonga.h1
-rw-r--r--drivers/atm/uPD98401.h1
-rw-r--r--drivers/atm/uPD98402.h1
-rw-r--r--drivers/atm/zatm.h1
-rw-r--r--drivers/atm/zeprom.h1
-rw-r--r--drivers/auxdisplay/Kconfig1
-rw-r--r--drivers/auxdisplay/Makefile1
-rw-r--r--drivers/auxdisplay/charlcd.c11
-rw-r--r--drivers/auxdisplay/img-ascii-lcd.c2
-rw-r--r--drivers/auxdisplay/panel.c11
-rw-r--r--drivers/base/Kconfig6
-rw-r--r--drivers/base/Makefile1
-rw-r--r--drivers/base/arch_topology.c12
-rw-r--r--drivers/base/base.h1
-rw-r--r--drivers/base/devtmpfs.c1
-rw-r--r--drivers/base/dma-coherent.c20
-rw-r--r--drivers/base/memory.c1
-rw-r--r--drivers/base/node.c13
-rw-r--r--drivers/base/platform.c3
-rw-r--r--drivers/base/power/Makefile1
-rw-r--r--drivers/base/power/main.c9
-rw-r--r--drivers/base/power/opp/core.c7
-rw-r--r--drivers/base/power/power.h1
-rw-r--r--drivers/base/power/qos.c10
-rw-r--r--drivers/base/property.c19
-rw-r--r--drivers/base/regmap/Kconfig1
-rw-r--r--drivers/base/regmap/Makefile1
-rw-r--r--drivers/base/regmap/trace.h1
-rw-r--r--drivers/base/test/Kconfig1
-rw-r--r--drivers/bcma/Kconfig1
-rw-r--r--drivers/bcma/Makefile1
-rw-r--r--drivers/bcma/bcma_private.h1
-rw-r--r--drivers/bcma/scan.h1
-rw-r--r--drivers/block/Kconfig3
-rw-r--r--drivers/block/Makefile1
-rw-r--r--drivers/block/brd.c2
-rw-r--r--drivers/block/drbd/Kconfig1
-rw-r--r--drivers/block/drbd/Makefile1
-rw-r--r--drivers/block/drbd/drbd_debugfs.c1
-rw-r--r--drivers/block/drbd/drbd_debugfs.h1
-rw-r--r--drivers/block/drbd/drbd_interval.c1
-rw-r--r--drivers/block/drbd/drbd_interval.h1
-rw-r--r--drivers/block/drbd/drbd_nla.c1
-rw-r--r--drivers/block/drbd/drbd_nla.h1
-rw-r--r--drivers/block/drbd/drbd_protocol.h1
-rw-r--r--drivers/block/drbd/drbd_state.h1
-rw-r--r--drivers/block/drbd/drbd_state_change.h1
-rw-r--r--drivers/block/drbd/drbd_strings.h1
-rw-r--r--drivers/block/loop.h6
-rw-r--r--drivers/block/mtip32xx/Kconfig1
-rw-r--r--drivers/block/nbd.c27
-rw-r--r--drivers/block/paride/Kconfig1
-rw-r--r--drivers/block/paride/Makefile1
-rw-r--r--drivers/block/paride/mkd1
-rw-r--r--drivers/block/skd_main.c2
-rw-r--r--drivers/block/virtio_blk.c12
-rw-r--r--drivers/block/zram/Kconfig1
-rw-r--r--drivers/block/zram/zram_drv.c36
-rw-r--r--drivers/bluetooth/Kconfig1
-rw-r--r--drivers/bluetooth/Makefile1
-rw-r--r--drivers/bus/Kconfig1
-rw-r--r--drivers/bus/Makefile1
-rw-r--r--drivers/bus/mvebu-mbus.c2
-rw-r--r--drivers/cdrom/Makefile1
-rw-r--r--drivers/char/Kconfig1
-rw-r--r--drivers/char/Makefile1
-rw-r--r--drivers/char/agp/Kconfig1
-rw-r--r--drivers/char/agp/Makefile1
-rw-r--r--drivers/char/agp/intel-agp.h1
-rw-r--r--drivers/char/agp/isoch.c1
-rw-r--r--drivers/char/applicom.h1
-rw-r--r--drivers/char/ds1302.c1
-rw-r--r--drivers/char/hw_random/Makefile1
-rw-r--r--drivers/char/hw_random/n2-asm.S1
-rw-r--r--drivers/char/hw_random/n2rng.h1
-rw-r--r--drivers/char/ipmi/Makefile1
-rw-r--r--drivers/char/ipmi/ipmi_dmi.c1
-rw-r--r--drivers/char/ipmi/ipmi_dmi.h1
-rw-r--r--drivers/char/mem.c1
-rw-r--r--drivers/char/misc.c1
-rw-r--r--drivers/char/nwbutton.h1
-rw-r--r--drivers/char/pcmcia/cm4040_cs.h1
-rw-r--r--drivers/char/sonypi.c2
-rw-r--r--drivers/char/tpm/Makefile1
-rw-r--r--drivers/char/tpm/st33zp24/Makefile1
-rw-r--r--drivers/char/tpm/tpm-dev.h1
-rw-r--r--drivers/char/tpm/tpm-interface.c10
-rw-r--r--drivers/char/tpm/tpm.h9
-rw-r--r--drivers/char/tpm/tpm2-cmd.c2
-rw-r--r--drivers/char/tpm/tpm_crb.c2
-rw-r--r--drivers/char/tpm/tpm_eventlog.h1
-rw-r--r--drivers/char/tpm/tpm_ibmvtpm.c98
-rw-r--r--drivers/char/tpm/tpm_infineon.c6
-rw-r--r--drivers/char/tpm/tpm_tis_core.c8
-rw-r--r--drivers/clk/Makefile1
-rw-r--r--drivers/clk/at91/Makefile1
-rw-r--r--drivers/clk/bcm/Makefile1
-rw-r--r--drivers/clk/clk-bulk.c1
-rw-r--r--drivers/clk/clk-gemini.c1
-rw-r--r--drivers/clk/clk-tango4.c1
-rw-r--r--drivers/clk/h8300/clk-div.c1
-rw-r--r--drivers/clk/h8300/clk-h8s2678.c1
-rw-r--r--drivers/clk/hisilicon/Makefile1
-rw-r--r--drivers/clk/imgtec/clk-boston.c2
-rw-r--r--drivers/clk/imx/Makefile1
-rw-r--r--drivers/clk/imx/clk-imx27.c1
-rw-r--r--drivers/clk/imx/clk-pllv1.c1
-rw-r--r--drivers/clk/imx/clk-pllv2.c1
-rw-r--r--drivers/clk/imx/clk.c1
-rw-r--r--drivers/clk/imx/clk.h1
-rw-r--r--drivers/clk/ingenic/cgu.c2
-rw-r--r--drivers/clk/ingenic/cgu.h2
-rw-r--r--drivers/clk/ingenic/jz4740-cgu.c2
-rw-r--r--drivers/clk/ingenic/jz4780-cgu.c2
-rw-r--r--drivers/clk/mediatek/Makefile1
-rw-r--r--drivers/clk/mmp/Makefile1
-rw-r--r--drivers/clk/mmp/clk.c1
-rw-r--r--drivers/clk/mmp/clk.h1
-rw-r--r--drivers/clk/mmp/reset.c1
-rw-r--r--drivers/clk/mmp/reset.h1
-rw-r--r--drivers/clk/mvebu/Makefile1
-rw-r--r--drivers/clk/mvebu/dove-divider.c1
-rw-r--r--drivers/clk/mvebu/dove-divider.h1
-rw-r--r--drivers/clk/qcom/Makefile1
-rw-r--r--drivers/clk/renesas/Makefile1
-rw-r--r--drivers/clk/renesas/clk-div6.h1
-rw-r--r--drivers/clk/rockchip/Makefile1
-rw-r--r--drivers/clk/rockchip/clk-rk3128.c12
-rw-r--r--drivers/clk/samsung/Makefile1
-rw-r--r--drivers/clk/samsung/clk-exynos4.c15
-rw-r--r--drivers/clk/sirf/atlas6.h1
-rw-r--r--drivers/clk/sirf/prima2.h1
-rw-r--r--drivers/clk/socfpga/Makefile1
-rw-r--r--drivers/clk/spear/Makefile1
-rw-r--r--drivers/clk/st/clkgen.h1
-rw-r--r--drivers/clk/sunxi-ng/Makefile1
-rw-r--r--drivers/clk/sunxi-ng/ccu_mult.h1
-rw-r--r--drivers/clk/sunxi-ng/ccu_mux.h1
-rw-r--r--drivers/clk/sunxi/Makefile1
-rw-r--r--drivers/clk/sunxi/clk-factors.h1
-rw-r--r--drivers/clk/sunxi/clk-sun9i-cpus.c1
-rw-r--r--drivers/clk/tegra/Makefile1
-rw-r--r--drivers/clk/tegra/clk-id.h1
-rw-r--r--drivers/clk/ti/Makefile1
-rw-r--r--drivers/clk/uniphier/Makefile1
-rw-r--r--drivers/clk/ux500/Makefile1
-rw-r--r--drivers/clk/versatile/clk-icst.h1
-rw-r--r--drivers/clocksource/Makefile1
-rw-r--r--drivers/clocksource/cs5535-clockevt.c3
-rw-r--r--drivers/clocksource/h8300_timer16.c1
-rw-r--r--drivers/clocksource/h8300_timer8.c1
-rw-r--r--drivers/clocksource/h8300_tpu.c1
-rw-r--r--drivers/clocksource/i8253.c1
-rw-r--r--drivers/clocksource/mips-gic-timer.c37
-rw-r--r--drivers/clocksource/numachip.c2
-rw-r--r--drivers/clocksource/tango_xtal.c1
-rw-r--r--drivers/clocksource/tcb_clksrc.c1
-rw-r--r--drivers/clocksource/timer-fttmr010.c1
-rw-r--r--drivers/clocksource/timer-integrator-ap.c4
-rw-r--r--drivers/clocksource/timer-of.h1
-rw-r--r--drivers/clocksource/timer-sp.h1
-rw-r--r--drivers/cpufreq/Makefile1
-rw-r--r--drivers/cpufreq/cpufreq-dt-platdev.c16
-rw-r--r--drivers/cpufreq/cris-artpec3-cpufreq.c1
-rw-r--r--drivers/cpufreq/cris-etraxfs-cpufreq.c1
-rw-r--r--drivers/cpufreq/powernow-k7.c2
-rw-r--r--drivers/cpufreq/ppc_cbe_cpufreq.h1
-rw-r--r--drivers/cpufreq/ti-cpufreq.c2
-rw-r--r--drivers/cpuidle/Makefile1
-rw-r--r--drivers/cpuidle/cpuidle-arm.c6
-rw-r--r--drivers/cpuidle/cpuidle-cps.c4
-rw-r--r--drivers/cpuidle/cpuidle-powernv.c1
-rw-r--r--drivers/cpuidle/cpuidle-pseries.c1
-rw-r--r--drivers/cpuidle/cpuidle.h1
-rw-r--r--drivers/cpuidle/dt_idle_states.h1
-rw-r--r--drivers/crypto/Makefile1
-rw-r--r--drivers/crypto/atmel-aes-regs.h1
-rw-r--r--drivers/crypto/atmel-sha-regs.h1
-rw-r--r--drivers/crypto/atmel-tdes-regs.h1
-rw-r--r--drivers/crypto/axis/artpec6_crypto.c4
-rw-r--r--drivers/crypto/caam/Kconfig5
-rw-r--r--drivers/crypto/caam/Makefile1
-rw-r--r--drivers/crypto/caam/caamalg_desc.h1
-rw-r--r--drivers/crypto/caam/caampkc.h1
-rw-r--r--drivers/crypto/caam/compat.h1
-rw-r--r--drivers/crypto/caam/ctrl.c19
-rw-r--r--drivers/crypto/caam/ctrl.h1
-rw-r--r--drivers/crypto/caam/desc.h1
-rw-r--r--drivers/crypto/caam/desc_constr.h1
-rw-r--r--drivers/crypto/caam/error.c1
-rw-r--r--drivers/crypto/caam/error.h1
-rw-r--r--drivers/crypto/caam/intern.h1
-rw-r--r--drivers/crypto/caam/jr.h1
-rw-r--r--drivers/crypto/caam/key_gen.c1
-rw-r--r--drivers/crypto/caam/key_gen.h1
-rw-r--r--drivers/crypto/caam/pdb.h1
-rw-r--r--drivers/crypto/caam/pkc_desc.c1
-rw-r--r--drivers/crypto/caam/qi.c1
-rw-r--r--drivers/crypto/caam/qi.h1
-rw-r--r--drivers/crypto/caam/regs.h60
-rw-r--r--drivers/crypto/caam/sg_sw_sec4.h1
-rw-r--r--drivers/crypto/cavium/nitrox/Makefile1
-rw-r--r--drivers/crypto/cavium/nitrox/nitrox_algs.c1
-rw-r--r--drivers/crypto/cavium/nitrox/nitrox_common.h1
-rw-r--r--drivers/crypto/cavium/nitrox/nitrox_csr.h1
-rw-r--r--drivers/crypto/cavium/nitrox/nitrox_dev.h1
-rw-r--r--drivers/crypto/cavium/nitrox/nitrox_hal.c1
-rw-r--r--drivers/crypto/cavium/nitrox/nitrox_isr.c1
-rw-r--r--drivers/crypto/cavium/nitrox/nitrox_lib.c1
-rw-r--r--drivers/crypto/cavium/nitrox/nitrox_req.h1
-rw-r--r--drivers/crypto/cavium/nitrox/nitrox_reqmgr.c1
-rw-r--r--drivers/crypto/cavium/zip/Makefile1
-rw-r--r--drivers/crypto/ccp/Makefile1
-rw-r--r--drivers/crypto/inside-secure/safexcel_cipher.c2
-rw-r--r--drivers/crypto/inside-secure/safexcel_hash.c2
-rw-r--r--drivers/crypto/marvell/cesa.h1
-rw-r--r--drivers/crypto/mv_cesa.h1
-rw-r--r--drivers/crypto/n2_asm.S1
-rw-r--r--drivers/crypto/n2_core.h1
-rw-r--r--drivers/crypto/nx/Makefile1
-rw-r--r--drivers/crypto/nx/nx-842.h1
-rw-r--r--drivers/crypto/nx/nx.h1
-rw-r--r--drivers/crypto/nx/nx_csbcpb.h1
-rw-r--r--drivers/crypto/qat/Makefile1
-rw-r--r--drivers/crypto/qat/qat_common/Makefile1
-rw-r--r--drivers/crypto/qce/Makefile1
-rw-r--r--drivers/crypto/rockchip/rk3288_crypto.h1
-rw-r--r--drivers/crypto/stm32/stm32-hash.c15
-rw-r--r--drivers/crypto/talitos.c9
-rw-r--r--drivers/crypto/virtio/Makefile1
-rw-r--r--drivers/crypto/vmx/Makefile1
-rw-r--r--drivers/crypto/vmx/aesp8-ppc.h1
-rw-r--r--drivers/crypto/vmx/ppc-xlate.pl1
-rw-r--r--drivers/dax/Makefile1
-rw-r--r--drivers/dax/super.c21
-rw-r--r--drivers/devfreq/Makefile1
-rw-r--r--drivers/dio/dio.c1
-rw-r--r--drivers/dma-buf/sync_file.c17
-rw-r--r--drivers/dma-buf/sync_trace.h1
-rw-r--r--drivers/dma/Makefile1
-rw-r--r--drivers/dma/altera-msgdma.c41
-rw-r--r--drivers/dma/bestcomm/Makefile1
-rw-r--r--drivers/dma/dmaengine.h1
-rw-r--r--drivers/dma/dw/Makefile1
-rw-r--r--drivers/dma/edma.c19
-rw-r--r--drivers/dma/qcom/Makefile1
-rw-r--r--drivers/dma/sh/Makefile1
-rw-r--r--drivers/dma/ti-dma-crossbar.c3
-rw-r--r--drivers/edac/amd64_edac_dbg.c1
-rw-r--r--drivers/edac/amd64_edac_inj.c1
-rw-r--r--drivers/edac/edac_module.h1
-rw-r--r--drivers/edac/mce_amd.h1
-rw-r--r--drivers/eisa/Makefile1
-rw-r--r--drivers/extcon/Makefile1
-rw-r--r--drivers/extcon/extcon.h1
-rw-r--r--drivers/firewire/Makefile1
-rw-r--r--drivers/firewire/core.h1
-rw-r--r--drivers/firewire/nosy-user.h1
-rw-r--r--drivers/firewire/nosy.h1
-rw-r--r--drivers/firewire/ohci.h1
-rw-r--r--drivers/firmware/Makefile1
-rw-r--r--drivers/firmware/efi/Makefile1
-rw-r--r--drivers/firmware/efi/libstub/Makefile1
-rw-r--r--drivers/firmware/efi/libstub/arm-stub.c3
-rw-r--r--drivers/firmware/efi/libstub/efistub.h1
-rw-r--r--drivers/firmware/efi/libstub/string.c1
-rw-r--r--drivers/firmware/efi/memmap.c1
-rw-r--r--drivers/firmware/efi/reboot.c1
-rw-r--r--drivers/firmware/efi/test/efi_test.c3
-rw-r--r--drivers/firmware/efi/test/efi_test.h1
-rw-r--r--drivers/firmware/google/Makefile1
-rw-r--r--drivers/firmware/google/gsmi.c2
-rw-r--r--drivers/firmware/google/memconsole-x86-legacy.c2
-rw-r--r--drivers/fmc/Makefile1
-rw-r--r--drivers/fpga/Makefile1
-rw-r--r--drivers/fpga/altera-cvp.c6
-rw-r--r--drivers/gpio/Kconfig3
-rw-r--r--drivers/gpio/Makefile1
-rw-r--r--drivers/gpio/gpio-etraxfs.c1
-rw-r--r--drivers/gpio/gpio-ftgpio010.c1
-rw-r--r--drivers/gpio/gpio-omap.c24
-rw-r--r--drivers/gpio/gpiolib-acpi.c2
-rw-r--r--drivers/gpu/drm/Makefile1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/Makefile1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c7
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_device.c10
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c12
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_gart.h1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c14
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c5
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_object.c46
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c16
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_trace_points.c1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c76
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c46
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c189
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c12
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c5
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c19
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c22
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c21
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c16
-rw-r--r--drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c5
-rw-r--r--drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c20
-rw-r--r--drivers/gpu/drm/amd/amdgpu/vce_v3_0.c12
-rw-r--r--drivers/gpu/drm/amd/amdkfd/Makefile1
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_chardev.c2
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_events.c5
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c22
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_priv.h1
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c1
-rw-r--r--drivers/gpu/drm/amd/include/vi_structs.h4
-rw-r--r--drivers/gpu/drm/amd/powerplay/Makefile1
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/Makefile1
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/pp_overdriver.c1
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c6
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c11
-rw-r--r--drivers/gpu/drm/amd/powerplay/inc/smu72.h1
-rw-r--r--drivers/gpu/drm/amd/powerplay/inc/smu72_discrete.h1
-rw-r--r--drivers/gpu/drm/amd/powerplay/inc/smu9_driver_if.h6
-rw-r--r--drivers/gpu/drm/amd/powerplay/smumgr/Makefile1
-rw-r--r--drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c3
-rw-r--r--drivers/gpu/drm/amd/scheduler/gpu_sched_trace.h1
-rw-r--r--drivers/gpu/drm/arm/hdlcd_drv.h1
-rw-r--r--drivers/gpu/drm/armada/Makefile1
-rw-r--r--drivers/gpu/drm/armada/armada_trace.c1
-rw-r--r--drivers/gpu/drm/armada/armada_trace.h1
-rw-r--r--drivers/gpu/drm/ast/ast_dp501.c1
-rw-r--r--drivers/gpu/drm/ast/ast_dram_tables.h1
-rw-r--r--drivers/gpu/drm/atmel-hlcdc/Makefile1
-rw-r--r--drivers/gpu/drm/bochs/bochs.h1
-rw-r--r--drivers/gpu/drm/bridge/Makefile1
-rw-r--r--drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h1
-rw-r--r--drivers/gpu/drm/drm_atomic_helper.c1
-rw-r--r--drivers/gpu/drm/drm_blend.c2
-rw-r--r--drivers/gpu/drm/drm_dp_dual_mode_helper.c2
-rw-r--r--drivers/gpu/drm/drm_scdc_helper.c2
-rw-r--r--drivers/gpu/drm/drm_trace.h1
-rw-r--r--drivers/gpu/drm/etnaviv/Makefile1
-rw-r--r--drivers/gpu/drm/etnaviv/etnaviv_gem.c3
-rw-r--r--drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c8
-rw-r--r--drivers/gpu/drm/etnaviv/state.xml.h1
-rw-r--r--drivers/gpu/drm/etnaviv/state_3d.xml.h1
-rw-r--r--drivers/gpu/drm/etnaviv/state_hi.xml.h1
-rw-r--r--drivers/gpu/drm/exynos/Makefile1
-rw-r--r--drivers/gpu/drm/exynos/exynos5433_drm_decon.c1
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_drv.c38
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_drv.h1
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fbdev.c20
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fbdev.h10
-rw-r--r--drivers/gpu/drm/exynos/exynos_hdmi.c14
-rw-r--r--drivers/gpu/drm/fsl-dcu/Makefile1
-rw-r--r--drivers/gpu/drm/gma500/Makefile1
-rw-r--r--drivers/gpu/drm/i2c/Makefile1
-rw-r--r--drivers/gpu/drm/i915/Makefile1
-rw-r--r--drivers/gpu/drm/i915/gvt/Makefile1
-rw-r--r--drivers/gpu/drm/i915/gvt/cfg_space.c113
-rw-r--r--drivers/gpu/drm/i915/gvt/cmd_parser.c3
-rw-r--r--drivers/gpu/drm/i915/gvt/execlist.c3
-rw-r--r--drivers/gpu/drm/i915/gvt/handlers.c70
-rw-r--r--drivers/gpu/drm/i915/gvt/reg.h3
-rw-r--r--drivers/gpu/drm/i915/gvt/sched_policy.c22
-rw-r--r--drivers/gpu/drm/i915/gvt/scheduler.h1
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c14
-rw-r--r--drivers/gpu/drm/i915/i915_gem_context.c2
-rw-r--r--drivers/gpu/drm/i915/i915_gem_evict.c63
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c16
-rw-r--r--drivers/gpu/drm/i915/i915_gem_gtt.c2
-rw-r--r--drivers/gpu/drm/i915/i915_gem_userptr.c4
-rw-r--r--drivers/gpu/drm/i915/i915_gpu_error.c6
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c3
-rw-r--r--drivers/gpu/drm/i915/i915_perf.c4
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h1
-rw-r--r--drivers/gpu/drm/i915/i915_trace.h1
-rw-r--r--drivers/gpu/drm/i915/i915_trace_points.c1
-rw-r--r--drivers/gpu/drm/i915/intel_acpi.c1
-rw-r--r--drivers/gpu/drm/i915/intel_audio.c5
-rw-r--r--drivers/gpu/drm/i915/intel_bios.c9
-rw-r--r--drivers/gpu/drm/i915/intel_color.c16
-rw-r--r--drivers/gpu/drm/i915/intel_csr.c2
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c10
-rw-r--r--drivers/gpu/drm/i915/intel_display.c37
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c17
-rw-r--r--drivers/gpu/drm/i915/intel_dpio_phy.c20
-rw-r--r--drivers/gpu/drm/i915/intel_dpll_mgr.c2
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h1
-rw-r--r--drivers/gpu/drm/i915/intel_dsi.c11
-rw-r--r--drivers/gpu/drm/i915/intel_engine_cs.c9
-rw-r--r--drivers/gpu/drm/i915/intel_modes.c17
-rw-r--r--drivers/gpu/drm/i915/intel_panel.c4
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c60
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.h1
-rw-r--r--drivers/gpu/drm/i915/intel_runtime_pm.c5
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_live_selftests.h1
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_mock_selftests.h1
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_random.c2
-rw-r--r--drivers/gpu/drm/i915/selftests/intel_breadcrumbs.c10
-rw-r--r--drivers/gpu/drm/i915/selftests/intel_uncore.c2
-rw-r--r--drivers/gpu/drm/i915/selftests/mock_gem_device.h1
-rw-r--r--drivers/gpu/drm/i915/selftests/mock_gem_object.h1
-rw-r--r--drivers/gpu/drm/imx/Makefile1
-rw-r--r--drivers/gpu/drm/imx/imx-drm.h1
-rw-r--r--drivers/gpu/drm/imx/ipuv3-plane.h1
-rw-r--r--drivers/gpu/drm/lib/drm_random.c3
-rw-r--r--drivers/gpu/drm/lib/drm_random.h1
-rw-r--r--drivers/gpu/drm/mediatek/Makefile1
-rw-r--r--drivers/gpu/drm/mgag200/mgag200_reg.h1
-rw-r--r--drivers/gpu/drm/msm/Makefile1
-rw-r--r--drivers/gpu/drm/msm/dsi/dsi_host.c2
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c2
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c2
-rw-r--r--drivers/gpu/drm/msm/msm_gem.c15
-rw-r--r--drivers/gpu/drm/msm/msm_gem_submit.c26
-rw-r--r--drivers/gpu/drm/msm/msm_gpu.c3
-rw-r--r--drivers/gpu/drm/msm/msm_rd.c12
-rw-r--r--drivers/gpu/drm/nouveau/dispnv04/cursor.c1
-rw-r--r--drivers/gpu/drm/nouveau/dispnv04/disp.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl0002.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl0046.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl006b.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl0080.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl506e.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl506f.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl5070.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl507a.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl507b.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl507c.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl507d.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl507e.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl826e.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl826f.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl906f.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cl9097.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/cla06f.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/class.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/client.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/device.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/driver.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/event.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/if0000.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/if0001.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/if0002.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/if0003.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/if0004.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/if0005.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/ioctl.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/notify.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/object.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/os.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvif/unpack.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/client.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/debug.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/device.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/engine.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/enum.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/event.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/firmware.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/gpuobj.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/ioctl.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/memory.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/mm.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/notify.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/object.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/oproxy.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/option.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/os.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/pci.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/ramht.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/bsp.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/cipher.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/disp.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/dma.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/gr.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/mpeg.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/msenc.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/mspdec.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/msppp.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/msvld.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/nvdec.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/nvenc.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/pm.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/sec.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/sec2.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/sw.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/vic.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/vp.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/xtensa.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bar.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0203.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0205.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0209.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/P0260.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/bit.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/bmp.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/boost.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/cstep.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/dcb.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/disp.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/dp.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/extdev.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/fan.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/gpio.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/i2c.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/iccsense.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/image.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/init.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/mxm.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/npde.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pcir.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/perf.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pll.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pmu.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/power_budget.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/ramcfg.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/rammap.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/therm.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/timing.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/vmap.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/volt.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/vpstate.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/xpio.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bus.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/clk.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/devinit.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/fb.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/fuse.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/gpio.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/i2c.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/ibus.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/iccsense.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/instmem.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/ltc.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/mmu.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/mxm.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/pci.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/pmu.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/therm.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/top.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/vga.h1
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_abi16.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_acpi.c1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_acpi.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_bo.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_chan.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_debugfs.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_display.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_drv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_fbcon.c7
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_fence.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_gem.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_ioctl.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_reg.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_sgdma.c1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_ttm.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_usif.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_vga.c1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_vga.h1
-rw-r--r--drivers/gpu/drm/nouveau/nv10_fence.h1
-rw-r--r--drivers/gpu/drm/nouveau/nv50_display.c11
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/bsp/g84.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf100.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gt215.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/ce/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/device/acpi.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/device/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/conn.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/dmacnv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.c1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/head.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/dma/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/dma/user.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/changf100.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/changk104.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv04.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/regsnv04.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf100.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf117.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk104.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk110.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk208.fuc5.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgm107.fuc5.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf100.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf117.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk104.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk110.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk208.fuc5.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgm107.fuc5.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/os.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/nv10.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/nv25.c1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/nv2a.c1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.c1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.c1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/nv35.c1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/gr/regs.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv31.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/mpeg/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/mspdec/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/msppp/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/msvld/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/nvdec/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/pm/gf100.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/pm/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/sec/fuc/g98.fuc0s.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/sec2/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/sw/nvsw.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/sw/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/falcon/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/bar/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/bus/hwsq.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/bus/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/clk/pll.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/clk/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/clk/seq.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv04.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/devinit/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf100.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramfuc.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramseq.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/fb/regsnv04.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/fuse/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/gpio/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/pad.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/ibus/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/instmem/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/ltc/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/mc/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv04.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/mxm/mxms.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/mxm/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pci/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/os.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pmu/memx.c1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/timer/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/timer/regsnv04.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/top/priv.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/volt/priv.h1
-rw-r--r--drivers/gpu/drm/omapdrm/Makefile1
-rw-r--r--drivers/gpu/drm/omapdrm/displays/Makefile1
-rw-r--r--drivers/gpu/drm/omapdrm/dss/Makefile1
-rw-r--r--drivers/gpu/drm/omapdrm/dss/hdmi_common.c1
-rw-r--r--drivers/gpu/drm/panel/Makefile1
-rw-r--r--drivers/gpu/drm/pl111/Makefile1
-rw-r--r--drivers/gpu/drm/qxl/qxl_display.c41
-rw-r--r--drivers/gpu/drm/radeon/Makefile1
-rw-r--r--drivers/gpu/drm/radeon/mkregtable.c1
-rw-r--r--drivers/gpu/drm/radeon/r100_track.h1
-rw-r--r--drivers/gpu/drm/radeon/radeon_device.c2
-rw-r--r--drivers/gpu/drm/radeon/radeon_dp_mst.c1
-rw-r--r--drivers/gpu/drm/radeon/radeon_legacy_tv.c1
-rw-r--r--drivers/gpu/drm/radeon/radeon_trace.h1
-rw-r--r--drivers/gpu/drm/radeon/radeon_trace_points.c1
-rw-r--r--drivers/gpu/drm/rcar-du/Makefile1
-rw-r--r--drivers/gpu/drm/rockchip/Makefile1
-rw-r--r--drivers/gpu/drm/selftests/drm_mm_selftests.h1
-rw-r--r--drivers/gpu/drm/selftests/test-drm_mm.c4
-rw-r--r--drivers/gpu/drm/shmobile/Makefile1
-rw-r--r--drivers/gpu/drm/sti/Makefile1
-rw-r--r--drivers/gpu/drm/sun4i/Kconfig2
-rw-r--r--drivers/gpu/drm/sun4i/Makefile1
-rw-r--r--drivers/gpu/drm/sun4i/sun4i_hdmi.h2
-rw-r--r--drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c19
-rw-r--r--drivers/gpu/drm/tegra/Makefile1
-rw-r--r--drivers/gpu/drm/tegra/trace.h2
-rw-r--r--drivers/gpu/drm/tilcdc/Makefile1
-rw-r--r--drivers/gpu/drm/ttm/Makefile1
-rw-r--r--drivers/gpu/drm/ttm/ttm_bo.c4
-rw-r--r--drivers/gpu/drm/ttm/ttm_bo_util.c1
-rw-r--r--drivers/gpu/drm/vc4/Makefile1
-rw-r--r--drivers/gpu/drm/virtio/Makefile1
-rw-r--r--drivers/gpu/drm/vmwgfx/Makefile1
-rw-r--r--drivers/gpu/drm/vmwgfx/device_include/vm_basic_types.h1
-rw-r--r--drivers/gpu/drm/zte/Makefile1
-rw-r--r--drivers/gpu/host1x/Makefile1
-rw-r--r--drivers/gpu/ipu-v3/Makefile1
-rw-r--r--drivers/gpu/ipu-v3/ipu-common.c8
-rw-r--r--drivers/gpu/ipu-v3/ipu-pre.c29
-rw-r--r--drivers/gpu/ipu-v3/ipu-prg.c7
-rw-r--r--drivers/hid/Kconfig1
-rw-r--r--drivers/hid/Makefile1
-rw-r--r--drivers/hid/hid-core.c2
-rw-r--r--drivers/hid/hid-elecom.c13
-rw-r--r--drivers/hid/hid-ids.h4
-rw-r--r--drivers/hid/hid-lg.h1
-rw-r--r--drivers/hid/hid-lg4ff.h1
-rw-r--r--drivers/hid/hid-multitouch.c7
-rw-r--r--drivers/hid/hid-rmi.c13
-rw-r--r--drivers/hid/hidraw.c2
-rw-r--r--drivers/hid/i2c-hid/i2c-hid.c3
-rw-r--r--drivers/hid/intel-ish-hid/Makefile1
-rw-r--r--drivers/hid/usbhid/Makefile1
-rw-r--r--drivers/hid/usbhid/hid-core.c12
-rw-r--r--drivers/hid/usbhid/hid-quirks.c1
-rw-r--r--drivers/hid/wacom_sys.c7
-rw-r--r--drivers/hid/wacom_wac.c110
-rw-r--r--drivers/hsi/Makefile1
-rw-r--r--drivers/hv/Makefile1
-rw-r--r--drivers/hv/channel.c6
-rw-r--r--drivers/hv/channel_mgmt.c46
-rw-r--r--drivers/hv/hv_fcopy.c4
-rw-r--r--drivers/hv/vmbus_drv.c3
-rw-r--r--drivers/hwmon/Makefile1
-rw-r--r--drivers/hwmon/acpi_power_meter.c2
-rw-r--r--drivers/hwmon/adt7x10.h1
-rw-r--r--drivers/hwmon/applesmc.c2
-rw-r--r--drivers/hwmon/da9052-hwmon.c5
-rw-r--r--drivers/hwmon/dell-smm-hwmon.c4
-rw-r--r--drivers/hwmon/pmbus/Makefile1
-rw-r--r--drivers/hwmon/tmp102.c13
-rw-r--r--drivers/hwmon/xgene-hwmon.c19
-rw-r--r--drivers/hwspinlock/Makefile1
-rw-r--r--drivers/hwtracing/coresight/Makefile1
-rw-r--r--drivers/hwtracing/intel_th/Makefile1
-rw-r--r--drivers/hwtracing/intel_th/pci.c10
-rw-r--r--drivers/hwtracing/stm/Makefile1
-rw-r--r--drivers/hwtracing/stm/core.c2
-rw-r--r--drivers/i2c/Makefile1
-rw-r--r--drivers/i2c/busses/Kconfig21
-rw-r--r--drivers/i2c/busses/Makefile3
-rw-r--r--drivers/i2c/busses/i2c-altera.c511
-rw-r--r--drivers/i2c/busses/i2c-i801.c4
-rw-r--r--drivers/i2c/busses/i2c-img-scb.c2
-rw-r--r--drivers/i2c/busses/i2c-imx.c4
-rw-r--r--drivers/i2c/busses/i2c-ismt.c5
-rw-r--r--drivers/i2c/busses/i2c-octeon-core.h1
-rw-r--r--drivers/i2c/busses/i2c-omap.c14
-rw-r--r--drivers/i2c/busses/i2c-piix4.c162
-rw-r--r--drivers/i2c/busses/i2c-sprd.c1
-rw-r--r--drivers/i2c/busses/i2c-stm32.h20
-rw-r--r--drivers/i2c/busses/i2c-stm32f4.c18
-rw-r--r--drivers/i2c/busses/i2c-stm32f7.c969
-rw-r--r--drivers/i2c/muxes/Makefile1
-rw-r--r--drivers/ide/Makefile1
-rw-r--r--drivers/ide/ide-acpi.c1
-rw-r--r--drivers/ide/ide-cd.c1
-rw-r--r--drivers/ide/ide-cd.h1
-rw-r--r--drivers/ide/ide-cd_ioctl.c1
-rw-r--r--drivers/ide/ide-cd_verbose.c1
-rw-r--r--drivers/ide/ide-devsets.c1
-rw-r--r--drivers/ide/ide-disk.c1
-rw-r--r--drivers/ide/ide-disk.h1
-rw-r--r--drivers/ide/ide-disk_ioctl.c1
-rw-r--r--drivers/ide/ide-disk_proc.c1
-rw-r--r--drivers/ide/ide-floppy.c1
-rw-r--r--drivers/ide/ide-floppy.h1
-rw-r--r--drivers/ide/ide-floppy_ioctl.c1
-rw-r--r--drivers/ide/ide-floppy_proc.c1
-rw-r--r--drivers/ide/ide-gd.h1
-rw-r--r--drivers/ide/ide-park.c1
-rw-r--r--drivers/ide/ide-pio-blacklist.c1
-rw-r--r--drivers/ide/ide-pm.c1
-rw-r--r--drivers/ide/ide-probe.c1
-rw-r--r--drivers/ide/ide-scan-pci.c13
-rw-r--r--drivers/ide/ide-sysfs.c1
-rw-r--r--drivers/ide/qd65xx.h1
-rw-r--r--drivers/ide/setup-pci.c63
-rw-r--r--drivers/iio/Makefile1
-rw-r--r--drivers/iio/accel/Makefile1
-rw-r--r--drivers/iio/accel/bmc150-accel.h1
-rw-r--r--drivers/iio/accel/kxsd9-i2c.c1
-rw-r--r--drivers/iio/accel/kxsd9.h1
-rw-r--r--drivers/iio/adc/Kconfig2
-rw-r--r--drivers/iio/adc/Makefile1
-rw-r--r--drivers/iio/adc/ad7793.c4
-rw-r--r--drivers/iio/adc/ad_sigma_delta.c28
-rw-r--r--drivers/iio/adc/at91-sama5d2_adc.c45
-rw-r--r--drivers/iio/adc/mcp320x.c25
-rw-r--r--drivers/iio/adc/qcom-vadc-common.c1
-rw-r--r--drivers/iio/adc/qcom-vadc-common.h1
-rw-r--r--drivers/iio/adc/stm32-adc.c2
-rw-r--r--drivers/iio/adc/ti-ads1015.c8
-rw-r--r--drivers/iio/adc/twl4030-madc.c14
-rw-r--r--drivers/iio/buffer/Makefile1
-rw-r--r--drivers/iio/common/Makefile1
-rw-r--r--drivers/iio/common/ssp_sensors/ssp_iio_sensor.h1
-rw-r--r--drivers/iio/common/st_sensors/Makefile1
-rw-r--r--drivers/iio/common/st_sensors/st_sensors_core.c11
-rw-r--r--drivers/iio/common/st_sensors/st_sensors_core.h1
-rw-r--r--drivers/iio/dac/Makefile1
-rw-r--r--drivers/iio/dummy/Makefile1
-rw-r--r--drivers/iio/dummy/iio_dummy_evgen.h1
-rw-r--r--drivers/iio/dummy/iio_simple_dummy_events.c1
-rw-r--r--drivers/iio/gyro/Makefile1
-rw-r--r--drivers/iio/gyro/bmg160.h1
-rw-r--r--drivers/iio/gyro/mpu3050.h1
-rw-r--r--drivers/iio/humidity/Makefile1
-rw-r--r--drivers/iio/imu/Makefile1
-rw-r--r--drivers/iio/imu/adis16400_buffer.c1
-rw-r--r--drivers/iio/imu/bmi160/bmi160.h1
-rw-r--r--drivers/iio/imu/inv_mpu6050/Makefile1
-rw-r--r--drivers/iio/industrialio-core.c4
-rw-r--r--drivers/iio/light/Makefile1
-rw-r--r--drivers/iio/magnetometer/Makefile1
-rw-r--r--drivers/iio/magnetometer/bmc150_magn.h1
-rw-r--r--drivers/iio/magnetometer/st_magn_core.c4
-rw-r--r--drivers/iio/potentiometer/Makefile1
-rw-r--r--drivers/iio/pressure/Makefile1
-rw-r--r--drivers/iio/pressure/bmp280-core.c2
-rw-r--r--drivers/iio/pressure/bmp280-regmap.c1
-rw-r--r--drivers/iio/pressure/bmp280.h1
-rw-r--r--drivers/iio/pressure/zpa2326.c10
-rw-r--r--drivers/iio/proximity/Makefile1
-rw-r--r--drivers/iio/proximity/as3935.c43
-rw-r--r--drivers/iio/temperature/Makefile1
-rw-r--r--drivers/iio/trigger/Makefile1
-rw-r--r--drivers/iio/trigger/stm32-timer-trigger.c4
-rw-r--r--drivers/infiniband/core/Makefile1
-rw-r--r--drivers/infiniband/core/iwpm_msg.c8
-rw-r--r--drivers/infiniband/core/iwpm_util.c5
-rw-r--r--drivers/infiniband/core/netlink.c13
-rw-r--r--drivers/infiniband/core/nldev.c4
-rw-r--r--drivers/infiniband/core/security.c4
-rw-r--r--drivers/infiniband/core/uverbs_cmd.c14
-rw-r--r--drivers/infiniband/core/verbs.c4
-rw-r--r--drivers/infiniband/hw/Makefile1
-rw-r--r--drivers/infiniband/hw/bnxt_re/Makefile1
-rw-r--r--drivers/infiniband/hw/bnxt_re/bnxt_re.h14
-rw-r--r--drivers/infiniband/hw/bnxt_re/ib_verbs.c107
-rw-r--r--drivers/infiniband/hw/bnxt_re/main.c28
-rw-r--r--drivers/infiniband/hw/bnxt_re/qplib_rcfw.c4
-rw-r--r--drivers/infiniband/hw/bnxt_re/qplib_rcfw.h3
-rw-r--r--drivers/infiniband/hw/cxgb3/Makefile1
-rw-r--r--drivers/infiniband/hw/cxgb4/cm.c9
-rw-r--r--drivers/infiniband/hw/hfi1/Makefile1
-rw-r--r--drivers/infiniband/hw/hfi1/chip.c101
-rw-r--r--drivers/infiniband/hw/hfi1/chip.h3
-rw-r--r--drivers/infiniband/hw/hfi1/eprom.c20
-rw-r--r--drivers/infiniband/hw/hfi1/file_ops.c41
-rw-r--r--drivers/infiniband/hw/hfi1/pcie.c50
-rw-r--r--drivers/infiniband/hw/hfi1/platform.c4
-rw-r--r--drivers/infiniband/hw/i40iw/Makefile1
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw.h1
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_cm.c154
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_cm.h5
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_ctrl.c2
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_main.c39
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_p.h2
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_puda.c11
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_utils.c6
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_verbs.c14
-rw-r--r--drivers/infiniband/hw/mlx4/sysfs.c2
-rw-r--r--drivers/infiniband/hw/mlx5/main.c20
-rw-r--r--drivers/infiniband/hw/mlx5/mem.c47
-rw-r--r--drivers/infiniband/hw/mlx5/mr.c27
-rw-r--r--drivers/infiniband/hw/mthca/Makefile1
-rw-r--r--drivers/infiniband/hw/nes/nes_verbs.c4
-rw-r--r--drivers/infiniband/hw/ocrdma/ocrdma_hw.c3
-rw-r--r--drivers/infiniband/hw/qedr/qedr.h2
-rw-r--r--drivers/infiniband/hw/qedr/qedr_cm.c12
-rw-r--r--drivers/infiniband/hw/qib/Makefile1
-rw-r--r--drivers/infiniband/hw/usnic/Makefile1
-rw-r--r--drivers/infiniband/hw/vmw_pvrdma/pvrdma.h31
-rw-r--r--drivers/infiniband/sw/rxe/Makefile1
-rw-r--r--drivers/infiniband/ulp/Makefile1
-rw-r--r--drivers/infiniband/ulp/ipoib/Makefile1
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_cm.c16
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_ib.c13
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_main.c15
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_vlan.c30
-rw-r--r--drivers/infiniband/ulp/iser/iser_memory.c2
-rw-r--r--drivers/infiniband/ulp/isert/ib_isert.h1
-rw-r--r--drivers/input/Makefile1
-rw-r--r--drivers/input/ff-core.c13
-rw-r--r--drivers/input/gameport/Makefile1
-rw-r--r--drivers/input/input.c84
-rw-r--r--drivers/input/joydev.c70
-rw-r--r--drivers/input/joystick/Makefile1
-rw-r--r--drivers/input/joystick/adi.c2
-rw-r--r--drivers/input/joystick/xpad.c10
-rw-r--r--drivers/input/keyboard/Makefile1
-rw-r--r--drivers/input/keyboard/tca8418_keypad.c29
-rw-r--r--drivers/input/misc/Kconfig12
-rw-r--r--drivers/input/misc/Makefile2
-rw-r--r--drivers/input/misc/axp20x-pek.c2
-rw-r--r--drivers/input/misc/ims-pcu.c16
-rw-r--r--drivers/input/misc/pwm-vibra.c267
-rw-r--r--drivers/input/misc/uinput.c57
-rw-r--r--drivers/input/mouse/Makefile1
-rw-r--r--drivers/input/mouse/byd.h1
-rw-r--r--drivers/input/mouse/cypress_ps2.h1
-rw-r--r--drivers/input/mouse/elan_i2c_core.c1
-rw-r--r--drivers/input/mouse/elan_i2c_i2c.c2
-rw-r--r--drivers/input/mouse/elantech.c8
-rw-r--r--drivers/input/mouse/hgpk.h1
-rw-r--r--drivers/input/mouse/psmouse.h1
-rw-r--r--drivers/input/mouse/synaptics.c3
-rw-r--r--drivers/input/rmi4/Makefile1
-rw-r--r--drivers/input/rmi4/rmi_f30.c5
-rw-r--r--drivers/input/serio/Makefile1
-rw-r--r--drivers/input/serio/i8042-sparcio.h1
-rw-r--r--drivers/input/serio/i8042-x86ia64io.h7
-rw-r--r--drivers/input/tablet/Makefile1
-rw-r--r--drivers/input/tablet/gtco.c17
-rw-r--r--drivers/input/touchscreen/Makefile1
-rw-r--r--drivers/input/touchscreen/edt-ft5x06.c3
-rw-r--r--drivers/input/touchscreen/goodix.c76
-rw-r--r--drivers/input/touchscreen/htcpen.c2
-rw-r--r--drivers/input/touchscreen/stmfts.c6
-rw-r--r--drivers/input/touchscreen/surface3_spi.c2
-rw-r--r--drivers/input/touchscreen/ti_am335x_tsc.c2
-rw-r--r--drivers/input/touchscreen/tsc200x-core.h1
-rw-r--r--drivers/input/touchscreen/ucb1400_ts.c4
-rw-r--r--drivers/iommu/Kconfig5
-rw-r--r--drivers/iommu/Makefile1
-rw-r--r--drivers/iommu/amd_iommu.c11
-rw-r--r--drivers/iommu/amd_iommu_init.c8
-rw-r--r--drivers/iommu/dmar.c2
-rw-r--r--drivers/iommu/exynos-iommu.c2
-rw-r--r--drivers/iommu/intel_irq_remapping.c1
-rw-r--r--drivers/iommu/io-pgtable-arm-v7s.c2
-rw-r--r--drivers/iommu/io-pgtable.h1
-rw-r--r--drivers/iommu/iommu-traces.c1
-rw-r--r--drivers/iommu/mtk_iommu.c3
-rw-r--r--drivers/iommu/of_iommu.c5
-rw-r--r--drivers/iommu/s390-iommu.c1
-rw-r--r--drivers/irqchip/Makefile1
-rw-r--r--drivers/irqchip/irq-ftintc010.c1
-rw-r--r--drivers/irqchip/irq-gic-realview.c1
-rw-r--r--drivers/irqchip/irq-gic-v3-its.c43
-rw-r--r--drivers/irqchip/irq-gic-v3.c8
-rw-r--r--drivers/irqchip/irq-gic-v4.c12
-rw-r--r--drivers/irqchip/irq-imgpdc.c1
-rw-r--r--drivers/irqchip/irq-metag-ext.c1
-rw-r--r--drivers/irqchip/irq-metag.c1
-rw-r--r--drivers/irqchip/irq-mips-cpu.c2
-rw-r--r--drivers/irqchip/irq-mips-gic.c619
-rw-r--r--drivers/irqchip/irq-mvebu-gicp.h1
-rw-r--r--drivers/irqchip/irq-renesas-h8300h.c1
-rw-r--r--drivers/irqchip/irq-renesas-h8s.c1
-rw-r--r--drivers/irqchip/irq-tango.c2
-rw-r--r--drivers/irqchip/irq-versatile-fpga.c1
-rw-r--r--drivers/isdn/Makefile1
-rw-r--r--drivers/isdn/capi/Makefile1
-rw-r--r--drivers/isdn/capi/capilib.c1
-rw-r--r--drivers/isdn/gigaset/Makefile1
-rw-r--r--drivers/isdn/hardware/avm/Makefile1
-rw-r--r--drivers/isdn/hardware/eicon/Makefile1
-rw-r--r--drivers/isdn/hardware/eicon/adapter.h1
-rw-r--r--drivers/isdn/hardware/eicon/debug.c1
-rw-r--r--drivers/isdn/hardware/eicon/diva.c1
-rw-r--r--drivers/isdn/hardware/eicon/diva.h1
-rw-r--r--drivers/isdn/hardware/eicon/diva_pci.h1
-rw-r--r--drivers/isdn/hardware/eicon/dqueue.h1
-rw-r--r--drivers/isdn/hardware/eicon/dsp_tst.h1
-rw-r--r--drivers/isdn/hardware/eicon/entity.h1
-rw-r--r--drivers/isdn/hardware/eicon/os_4bri.c1
-rw-r--r--drivers/isdn/hardware/eicon/os_4bri.h1
-rw-r--r--drivers/isdn/hardware/eicon/os_bri.c1
-rw-r--r--drivers/isdn/hardware/eicon/os_bri.h1
-rw-r--r--drivers/isdn/hardware/eicon/os_pri.c1
-rw-r--r--drivers/isdn/hardware/eicon/os_pri.h1
-rw-r--r--drivers/isdn/hardware/eicon/um_idi.c1
-rw-r--r--drivers/isdn/hardware/eicon/um_idi.h1
-rw-r--r--drivers/isdn/hardware/eicon/um_xdi.h1
-rw-r--r--drivers/isdn/hardware/eicon/xdi_adapter.h1
-rw-r--r--drivers/isdn/hardware/eicon/xdi_msg.h1
-rw-r--r--drivers/isdn/hardware/mISDN/Makefile1
-rw-r--r--drivers/isdn/hardware/mISDN/hfc_multi.h1
-rw-r--r--drivers/isdn/hardware/mISDN/hfc_multi_8xx.h1
-rw-r--r--drivers/isdn/hardware/mISDN/hfcsusb.h1
-rw-r--r--drivers/isdn/hisax/Makefile1
-rw-r--r--drivers/isdn/hisax/hfc4s8s_l1.h1
-rw-r--r--drivers/isdn/hisax/hfc_usb.h1
-rw-r--r--drivers/isdn/hisax/hisax_fcpcipnp.h1
-rw-r--r--drivers/isdn/hisax/hisax_isac.h1
-rw-r--r--drivers/isdn/i4l/Makefile1
-rw-r--r--drivers/isdn/i4l/isdn_ppp.c37
-rw-r--r--drivers/isdn/mISDN/Makefile1
-rw-r--r--drivers/isdn/mISDN/dsp_hwec.h1
-rw-r--r--drivers/isdn/mISDN/l1oip.h1
-rw-r--r--drivers/leds/Makefile1
-rw-r--r--drivers/leds/leds-as3645a.c29
-rw-r--r--drivers/leds/leds-clevo-mail.c2
-rw-r--r--drivers/leds/leds-ss4200.c2
-rw-r--r--drivers/leds/trigger/Makefile1
-rw-r--r--drivers/lightnvm/Makefile1
-rw-r--r--drivers/macintosh/Makefile1
-rw-r--r--drivers/macintosh/adb-iop.c1
-rw-r--r--drivers/macintosh/adb.c1
-rw-r--r--drivers/macintosh/adbhid.c1
-rw-r--r--drivers/macintosh/ams/ams.h1
-rw-r--r--drivers/macintosh/ans-lcd.c1
-rw-r--r--drivers/macintosh/ans-lcd.h1
-rw-r--r--drivers/macintosh/macio-adb.c1
-rw-r--r--drivers/macintosh/macio_sysfs.c1
-rw-r--r--drivers/macintosh/via-cuda.c1
-rw-r--r--drivers/macintosh/via-macii.c1
-rw-r--r--drivers/macintosh/via-pmu-backlight.c1
-rw-r--r--drivers/macintosh/via-pmu-event.h1
-rw-r--r--drivers/macintosh/via-pmu.c1
-rw-r--r--drivers/macintosh/via-pmu68k.c1
-rw-r--r--drivers/mailbox/Makefile1
-rw-r--r--drivers/mcb/Makefile1
-rw-r--r--drivers/mcb/mcb-internal.h1
-rw-r--r--drivers/md/Makefile1
-rw-r--r--drivers/md/bcache/Makefile1
-rw-r--r--drivers/md/bcache/alloc.c1
-rw-r--r--drivers/md/bcache/bcache.h1
-rw-r--r--drivers/md/bcache/bset.c1
-rw-r--r--drivers/md/bcache/bset.h1
-rw-r--r--drivers/md/bcache/btree.c1
-rw-r--r--drivers/md/bcache/btree.h1
-rw-r--r--drivers/md/bcache/closure.c4
-rw-r--r--drivers/md/bcache/closure.h1
-rw-r--r--drivers/md/bcache/debug.c1
-rw-r--r--drivers/md/bcache/debug.h1
-rw-r--r--drivers/md/bcache/extents.c1
-rw-r--r--drivers/md/bcache/extents.h1
-rw-r--r--drivers/md/bcache/io.c1
-rw-r--r--drivers/md/bcache/journal.c1
-rw-r--r--drivers/md/bcache/journal.h1
-rw-r--r--drivers/md/bcache/movinggc.c1
-rw-r--r--drivers/md/bcache/request.c1
-rw-r--r--drivers/md/bcache/request.h1
-rw-r--r--drivers/md/bcache/stats.c1
-rw-r--r--drivers/md/bcache/stats.h1
-rw-r--r--drivers/md/bcache/sysfs.c1
-rw-r--r--drivers/md/bcache/sysfs.h1
-rw-r--r--drivers/md/bcache/trace.c1
-rw-r--r--drivers/md/bcache/util.h1
-rw-r--r--drivers/md/bcache/writeback.c1
-rw-r--r--drivers/md/bcache/writeback.h1
-rw-r--r--drivers/md/bitmap.h1
-rw-r--r--drivers/md/dm-bufio.c95
-rw-r--r--drivers/md/dm-bufio.h9
-rw-r--r--drivers/md/dm-builtin.c1
-rw-r--r--drivers/md/dm-cache-target.c4
-rw-r--r--drivers/md/dm-core.h1
-rw-r--r--drivers/md/dm-crypt.c7
-rw-r--r--drivers/md/dm-flakey.c4
-rw-r--r--drivers/md/dm-integrity.c42
-rw-r--r--drivers/md/dm-ioctl.c39
-rw-r--r--drivers/md/dm-linear.c15
-rw-r--r--drivers/md/dm-log-writes.c44
-rw-r--r--drivers/md/dm-mpath.c15
-rw-r--r--drivers/md/dm-raid.c13
-rw-r--r--drivers/md/dm-rq.c27
-rw-r--r--drivers/md/dm-rq.h1
-rw-r--r--drivers/md/dm-stats.c1
-rw-r--r--drivers/md/dm-stats.h1
-rw-r--r--drivers/md/dm-stripe.c20
-rw-r--r--drivers/md/dm-switch.c2
-rw-r--r--drivers/md/dm-table.c7
-rw-r--r--drivers/md/dm-thin.c2
-rw-r--r--drivers/md/dm-verity-target.c2
-rw-r--r--drivers/md/dm.c29
-rw-r--r--drivers/md/linear.h1
-rw-r--r--drivers/md/md-cluster.h1
-rw-r--r--drivers/md/md.c72
-rw-r--r--drivers/md/md.h1
-rw-r--r--drivers/md/multipath.h1
-rw-r--r--drivers/md/persistent-data/Makefile1
-rw-r--r--drivers/md/raid0.h1
-rw-r--r--drivers/md/raid1-10.c1
-rw-r--r--drivers/md/raid1.h1
-rw-r--r--drivers/md/raid10.h1
-rw-r--r--drivers/md/raid5-log.h1
-rw-r--r--drivers/md/raid5.c20
-rw-r--r--drivers/md/raid5.h1
-rw-r--r--drivers/media/Makefile1
-rw-r--r--drivers/media/cec/Makefile1
-rw-r--r--drivers/media/cec/cec-adap.c18
-rw-r--r--drivers/media/common/b2c2/Makefile1
-rw-r--r--drivers/media/common/b2c2/flexcop-common.h1
-rw-r--r--drivers/media/common/b2c2/flexcop-eeprom.c1
-rw-r--r--drivers/media/common/b2c2/flexcop-fe-tuner.c1
-rw-r--r--drivers/media/common/b2c2/flexcop-hw-filter.c1
-rw-r--r--drivers/media/common/b2c2/flexcop-i2c.c1
-rw-r--r--drivers/media/common/b2c2/flexcop-misc.c1
-rw-r--r--drivers/media/common/b2c2/flexcop-reg.h1
-rw-r--r--drivers/media/common/b2c2/flexcop-sram.c1
-rw-r--r--drivers/media/common/b2c2/flexcop.h1
-rw-r--r--drivers/media/common/b2c2/flexcop_ibi_value_be.h1
-rw-r--r--drivers/media/common/b2c2/flexcop_ibi_value_le.h1
-rw-r--r--drivers/media/common/btcx-risc.h1
-rw-r--r--drivers/media/common/cypress_firmware.h1
-rw-r--r--drivers/media/common/saa7146/saa7146_i2c.c1
-rw-r--r--drivers/media/common/saa7146/saa7146_vbi.c1
-rw-r--r--drivers/media/common/siano/Makefile1
-rw-r--r--drivers/media/dvb-core/Makefile1
-rw-r--r--drivers/media/dvb-core/dvb-usb-ids.h1
-rw-r--r--drivers/media/dvb-core/dvb_frontend.c25
-rw-r--r--drivers/media/dvb-frontends/Makefile1
-rw-r--r--drivers/media/dvb-frontends/dib3000mc.c50
-rw-r--r--drivers/media/dvb-frontends/dib7000m.h1
-rw-r--r--drivers/media/dvb-frontends/dib7000p.h1
-rw-r--r--drivers/media/dvb-frontends/dib8000.h1
-rw-r--r--drivers/media/dvb-frontends/dib9000.h1
-rw-r--r--drivers/media/dvb-frontends/dibx000_common.h1
-rw-r--r--drivers/media/dvb-frontends/drxk.h1
-rw-r--r--drivers/media/dvb-frontends/drxk_hard.h1
-rw-r--r--drivers/media/dvb-frontends/drxk_map.h1
-rw-r--r--drivers/media/dvb-frontends/dvb-pll.c22
-rw-r--r--drivers/media/dvb-frontends/dvb-pll.h1
-rw-r--r--drivers/media/dvb-frontends/nxt6000_priv.h1
-rw-r--r--drivers/media/dvb-frontends/si21xx.h1
-rw-r--r--drivers/media/dvb-frontends/sp887x.h1
-rw-r--r--drivers/media/dvb-frontends/tda18271c2dd.h1
-rw-r--r--drivers/media/dvb-frontends/tda18271c2dd_maps.h1
-rw-r--r--drivers/media/i2c/Makefile1
-rw-r--r--drivers/media/i2c/msp3400-driver.h1
-rw-r--r--drivers/media/i2c/soc_camera/Makefile1
-rw-r--r--drivers/media/i2c/tea6415c.h1
-rw-r--r--drivers/media/i2c/tea6420.h1
-rw-r--r--drivers/media/mmc/Makefile1
-rw-r--r--drivers/media/pci/Makefile1
-rw-r--r--drivers/media/pci/b2c2/Makefile1
-rw-r--r--drivers/media/pci/b2c2/flexcop-dma.c1
-rw-r--r--drivers/media/pci/bt8xx/Makefile1
-rw-r--r--drivers/media/pci/bt8xx/btcx-risc.h1
-rw-r--r--drivers/media/pci/bt8xx/bttv.h1
-rw-r--r--drivers/media/pci/bt8xx/dst_priv.h1
-rw-r--r--drivers/media/pci/cx18/Makefile1
-rw-r--r--drivers/media/pci/cx23885/Makefile1
-rw-r--r--drivers/media/pci/cx23885/cx23885-f300.h1
-rw-r--r--drivers/media/pci/cx25821/Makefile1
-rw-r--r--drivers/media/pci/cx25821/cx25821-audio-upstream.c13
-rw-r--r--drivers/media/pci/cx88/Makefile1
-rw-r--r--drivers/media/pci/cx88/cx88-vbi.c1
-rw-r--r--drivers/media/pci/ddbridge/Makefile1
-rw-r--r--drivers/media/pci/ivtv/Makefile1
-rw-r--r--drivers/media/pci/mantis/Makefile1
-rw-r--r--drivers/media/pci/netup_unidvb/Makefile1
-rw-r--r--drivers/media/pci/ngene/Makefile1
-rw-r--r--drivers/media/pci/pt3/Makefile1
-rw-r--r--drivers/media/pci/saa7134/Makefile1
-rw-r--r--drivers/media/pci/saa7134/saa7134-reg.h1
-rw-r--r--drivers/media/pci/saa7164/Makefile1
-rw-r--r--drivers/media/pci/smipcie/Makefile1
-rw-r--r--drivers/media/pci/ttpci/Makefile1
-rw-r--r--drivers/media/pci/ttpci/av7110.h1
-rw-r--r--drivers/media/pci/ttpci/av7110_av.h1
-rw-r--r--drivers/media/pci/ttpci/av7110_ca.h1
-rw-r--r--drivers/media/pci/ttpci/av7110_hw.h1
-rw-r--r--drivers/media/pci/ttpci/av7110_ipack.c1
-rw-r--r--drivers/media/pci/ttpci/av7110_ipack.h1
-rw-r--r--drivers/media/pci/ttpci/budget.h1
-rw-r--r--drivers/media/pci/ttpci/dvb_filter.c1
-rw-r--r--drivers/media/pci/tw5864/tw5864-util.c1
-rw-r--r--drivers/media/pci/tw686x/tw686x-regs.h1
-rw-r--r--drivers/media/pci/zoran/Makefile1
-rw-r--r--drivers/media/platform/Kconfig2
-rw-r--r--drivers/media/platform/Makefile1
-rw-r--r--drivers/media/platform/atmel/atmel-isc-regs.h1
-rw-r--r--drivers/media/platform/coda/trace.h1
-rw-r--r--drivers/media/platform/davinci/Makefile1
-rw-r--r--drivers/media/platform/exynos4-is/Makefile1
-rw-r--r--drivers/media/platform/marvell-ccic/mcam-core.c1
-rw-r--r--drivers/media/platform/marvell-ccic/mcam-core.h1
-rw-r--r--drivers/media/platform/mtk-mdp/Makefile1
-rw-r--r--drivers/media/platform/mtk-vcodec/Makefile1
-rw-r--r--drivers/media/platform/omap3isp/Makefile1
-rw-r--r--drivers/media/platform/qcom/camss-8x16/camss-vfe.c2
-rw-r--r--drivers/media/platform/qcom/venus/Makefile1
-rw-r--r--drivers/media/platform/qcom/venus/helpers.c1
-rw-r--r--drivers/media/platform/s5p-cec/exynos_hdmi_cecctrl.c3
-rw-r--r--drivers/media/platform/s5p-cec/s5p_cec.c11
-rw-r--r--drivers/media/platform/s5p-cec/s5p_cec.h2
-rw-r--r--drivers/media/platform/s5p-mfc/Makefile1
-rw-r--r--drivers/media/platform/sti/c8sectpfe/Makefile1
-rw-r--r--drivers/media/platform/ti-vpe/Makefile1
-rw-r--r--drivers/media/platform/via-camera.h1
-rw-r--r--drivers/media/platform/vimc/Makefile1
-rw-r--r--drivers/media/platform/vivid/Makefile1
-rw-r--r--drivers/media/platform/vsp1/Makefile1
-rw-r--r--drivers/media/radio/Makefile1
-rw-r--r--drivers/media/radio/lm7000.h1
-rw-r--r--drivers/media/rc/Makefile1
-rw-r--r--drivers/media/rc/img-ir/Makefile1
-rw-r--r--drivers/media/rc/ir-sharp-decoder.c2
-rw-r--r--drivers/media/rc/keymaps/Makefile1
-rw-r--r--drivers/media/tuners/Makefile1
-rw-r--r--drivers/media/tuners/fc0011.h1
-rw-r--r--drivers/media/tuners/mt2060.c59
-rw-r--r--drivers/media/tuners/mt2063.h1
-rw-r--r--drivers/media/usb/Makefile1
-rw-r--r--drivers/media/usb/as102/Makefile1
-rw-r--r--drivers/media/usb/au0828/Makefile1
-rw-r--r--drivers/media/usb/b2c2/flexcop-usb.h1
-rw-r--r--drivers/media/usb/cx231xx/Makefile1
-rw-r--r--drivers/media/usb/dvb-usb-v2/Makefile1
-rw-r--r--drivers/media/usb/dvb-usb-v2/gl861.h1
-rw-r--r--drivers/media/usb/dvb-usb-v2/usb_urb.c1
-rw-r--r--drivers/media/usb/dvb-usb/Makefile1
-rw-r--r--drivers/media/usb/dvb-usb/af9005-script.h1
-rw-r--r--drivers/media/usb/dvb-usb/az6027.h1
-rw-r--r--drivers/media/usb/dvb-usb/cxusb.h1
-rw-r--r--drivers/media/usb/dvb-usb/dib07x0.h1
-rw-r--r--drivers/media/usb/dvb-usb/digitv.h1
-rw-r--r--drivers/media/usb/dvb-usb/dvb-usb-common.h1
-rw-r--r--drivers/media/usb/dvb-usb/dvb-usb-dvb.c1
-rw-r--r--drivers/media/usb/dvb-usb/dvb-usb-firmware.c1
-rw-r--r--drivers/media/usb/dvb-usb/dvb-usb-i2c.c1
-rw-r--r--drivers/media/usb/dvb-usb/dvb-usb-remote.c1
-rw-r--r--drivers/media/usb/dvb-usb/dvb-usb-urb.c1
-rw-r--r--drivers/media/usb/dvb-usb/dvb-usb.h1
-rw-r--r--drivers/media/usb/dvb-usb/dw2102.h1
-rw-r--r--drivers/media/usb/dvb-usb/m920x.h1
-rw-r--r--drivers/media/usb/dvb-usb/usb-urb.c1
-rw-r--r--drivers/media/usb/dvb-usb/vp702x.h1
-rw-r--r--drivers/media/usb/em28xx/Makefile1
-rw-r--r--drivers/media/usb/em28xx/em28xx-reg.h1
-rw-r--r--drivers/media/usb/go7007/Makefile1
-rw-r--r--drivers/media/usb/gspca/Makefile1
-rw-r--r--drivers/media/usb/gspca/gl860/Makefile1
-rw-r--r--drivers/media/usb/gspca/gspca.h1
-rw-r--r--drivers/media/usb/gspca/m5602/Makefile1
-rw-r--r--drivers/media/usb/gspca/stv06xx/Makefile1
-rw-r--r--drivers/media/usb/pvrusb2/Makefile1
-rw-r--r--drivers/media/usb/pvrusb2/pvrusb2-dvb.h1
-rw-r--r--drivers/media/usb/pwc/pwc-nala.h1
-rw-r--r--drivers/media/usb/stk1160/Makefile1
-rw-r--r--drivers/media/usb/tm6000/Makefile1
-rw-r--r--drivers/media/usb/usbvision/usbvision-cards.h1
-rw-r--r--drivers/media/usb/uvc/Makefile1
-rw-r--r--drivers/media/usb/uvc/uvcvideo.h1
-rw-r--r--drivers/media/v4l2-core/Makefile1
-rw-r--r--drivers/media/v4l2-core/v4l2-trace.c1
-rw-r--r--drivers/media/v4l2-core/vb2-trace.c1
-rw-r--r--drivers/memory/Makefile1
-rw-r--r--drivers/memory/tegra/Makefile1
-rw-r--r--drivers/memstick/host/Makefile1
-rw-r--r--drivers/message/fusion/Makefile1
-rw-r--r--drivers/message/fusion/lsi/mpi.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_cnfg.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_fc.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_init.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_ioc.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_lan.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_log_fc.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_log_sas.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_raid.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_sas.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_targ.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_tool.h1
-rw-r--r--drivers/message/fusion/lsi/mpi_type.h1
-rw-r--r--drivers/message/fusion/mptdebug.h1
-rw-r--r--drivers/mfd/Makefile1
-rw-r--r--drivers/mfd/kempld-core.c2
-rw-r--r--drivers/mfd/twl-core.h1
-rw-r--r--drivers/misc/Makefile1
-rw-r--r--drivers/misc/cxl/Makefile1
-rw-r--r--drivers/misc/cxl/cxllib.c13
-rw-r--r--drivers/misc/cxl/flash.c1
-rw-r--r--drivers/misc/cxl/pci.c2
-rw-r--r--drivers/misc/eeprom/Makefile1
-rw-r--r--drivers/misc/ibmasm/Makefile1
-rw-r--r--drivers/misc/lkdtm.h1
-rw-r--r--drivers/misc/lkdtm_bugs.c1
-rw-r--r--drivers/misc/lkdtm_heap.c1
-rw-r--r--drivers/misc/lkdtm_perms.c1
-rw-r--r--drivers/misc/lkdtm_rodata.c1
-rw-r--r--drivers/misc/lkdtm_usercopy.c1
-rw-r--r--drivers/misc/mei/Makefile1
-rw-r--r--drivers/misc/mei/hw-me-regs.h2
-rw-r--r--drivers/misc/mei/pci-me.c23
-rw-r--r--drivers/misc/mei/pci-txe.c30
-rw-r--r--drivers/misc/mic/Makefile1
-rw-r--r--drivers/misc/mic/card/Makefile1
-rw-r--r--drivers/misc/mic/cosm/Makefile1
-rw-r--r--drivers/misc/mic/host/Makefile1
-rw-r--r--drivers/misc/mic/scif/Makefile1
-rw-r--r--drivers/misc/sgi-xp/Makefile1
-rw-r--r--drivers/mmc/core/Makefile1
-rw-r--r--drivers/mmc/core/block.c3
-rw-r--r--drivers/mmc/core/block.h1
-rw-r--r--drivers/mmc/core/mmc.c36
-rw-r--r--drivers/mmc/core/queue.c120
-rw-r--r--drivers/mmc/core/queue.h7
-rw-r--r--drivers/mmc/core/quirks.h1
-rw-r--r--drivers/mmc/core/sd.h1
-rw-r--r--drivers/mmc/host/Kconfig2
-rw-r--r--drivers/mmc/host/Makefile1
-rw-r--r--drivers/mmc/host/cavium-thunderx.c6
-rw-r--r--drivers/mmc/host/cavium.c2
-rw-r--r--drivers/mmc/host/dw_mmc-zx.h1
-rw-r--r--drivers/mmc/host/dw_mmc.c107
-rw-r--r--drivers/mmc/host/meson-gx-mmc.c26
-rw-r--r--drivers/mmc/host/pxamci.c6
-rw-r--r--drivers/mmc/host/pxamci.h1
-rw-r--r--drivers/mmc/host/renesas_sdhi_internal_dmac.c17
-rw-r--r--drivers/mmc/host/sdhci-pci-core.c17
-rw-r--r--drivers/mmc/host/sdhci-pci.h1
-rw-r--r--drivers/mmc/host/sdhci-xenon.c24
-rw-r--r--drivers/mmc/host/sdhci-xenon.h1
-rw-r--r--drivers/mmc/host/tmio_mmc_core.c60
-rw-r--r--drivers/mtd/Makefile1
-rw-r--r--drivers/mtd/chips/Makefile1
-rw-r--r--drivers/mtd/chips/fwh_lock.h1
-rw-r--r--drivers/mtd/devices/Makefile1
-rw-r--r--drivers/mtd/devices/bcm47xxsflash.h1
-rw-r--r--drivers/mtd/maps/Makefile1
-rw-r--r--drivers/mtd/maps/lantiq-flash.c6
-rw-r--r--drivers/mtd/maps/physmap_of_gemini.c1
-rw-r--r--drivers/mtd/maps/physmap_of_gemini.h1
-rw-r--r--drivers/mtd/maps/physmap_of_versatile.h1
-rw-r--r--drivers/mtd/maps/tsunami_flash.c1
-rw-r--r--drivers/mtd/mtdcore.h1
-rw-r--r--drivers/mtd/mtdpart.c8
-rw-r--r--drivers/mtd/nand/Makefile1
-rw-r--r--drivers/mtd/nand/atmel/pmecc.c2
-rw-r--r--drivers/mtd/nand/bcm47xxnflash/bcm47xxnflash.h1
-rw-r--r--drivers/mtd/nand/brcmnand/Makefile1
-rw-r--r--drivers/mtd/nand/lpc32xx_mlc.c3
-rw-r--r--drivers/mtd/nand/nand_base.c3
-rw-r--r--drivers/mtd/nand/nandsim.c4
-rw-r--r--drivers/mtd/onenand/Makefile1
-rw-r--r--drivers/mtd/onenand/onenand_bbt.c1
-rw-r--r--drivers/mtd/spi-nor/Makefile1
-rw-r--r--drivers/mtd/spi-nor/spi-nor.c45
-rw-r--r--drivers/mtd/tests/Makefile1
-rw-r--r--drivers/mtd/tests/mtd_test.c1
-rw-r--r--drivers/mtd/tests/mtd_test.h1
-rw-r--r--drivers/mtd/ubi/Makefile1
-rw-r--r--drivers/mtd/ubi/block.c6
-rw-r--r--drivers/mtd/ubi/build.c20
-rw-r--r--drivers/mtd/ubi/fastmap.c2
-rw-r--r--drivers/mtd/ubi/ubi-media.h4
-rw-r--r--drivers/mtd/ubi/wl.h1
-rw-r--r--drivers/net/Makefile1
-rw-r--r--drivers/net/appletalk/cops.h1
-rw-r--r--drivers/net/appletalk/ipddp.h1
-rw-r--r--drivers/net/appletalk/ltpc.h1
-rw-r--r--drivers/net/arcnet/Makefile1
-rw-r--r--drivers/net/arcnet/com9026.h1
-rw-r--r--drivers/net/bonding/bond_debugfs.c1
-rw-r--r--drivers/net/bonding/bond_main.c17
-rw-r--r--drivers/net/bonding/bond_options.c3
-rw-r--r--drivers/net/bonding/bond_procfs.c1
-rw-r--r--drivers/net/caif/Makefile1
-rw-r--r--drivers/net/can/Makefile1
-rw-r--r--drivers/net/can/flexcan.c91
-rw-r--r--drivers/net/can/sja1000/Makefile1
-rw-r--r--drivers/net/can/softing/softing.h1
-rw-r--r--drivers/net/can/softing/softing_platform.h1
-rw-r--r--drivers/net/can/sun4i_can.c3
-rw-r--r--drivers/net/can/usb/Makefile1
-rw-r--r--drivers/net/can/usb/esd_usb2.c2
-rw-r--r--drivers/net/can/usb/gs_usb.c10
-rw-r--r--drivers/net/can/usb/kvaser_usb.c9
-rw-r--r--drivers/net/cris/eth_v10.c1
-rw-r--r--drivers/net/dsa/Makefile1
-rw-r--r--drivers/net/dsa/b53/Makefile1
-rw-r--r--drivers/net/dsa/dsa_loop.h1
-rw-r--r--drivers/net/dsa/lan9303.h1
-rw-r--r--drivers/net/dsa/mv88e6060.c10
-rw-r--r--drivers/net/dsa/mv88e6xxx/Makefile1
-rw-r--r--drivers/net/dsa/mv88e6xxx/chip.c6
-rw-r--r--drivers/net/ethernet/3com/Makefile1
-rw-r--r--drivers/net/ethernet/8390/Makefile1
-rw-r--r--drivers/net/ethernet/Makefile1
-rw-r--r--drivers/net/ethernet/aeroflex/greth.h1
-rw-r--r--drivers/net/ethernet/alacritech/slic.h1
-rw-r--r--drivers/net/ethernet/alteon/acenic.h1
-rw-r--r--drivers/net/ethernet/amazon/ena/ena_ethtool.c4
-rw-r--r--drivers/net/ethernet/amazon/ena/ena_netdev.c7
-rw-r--r--drivers/net/ethernet/amd/7990.h1
-rw-r--r--drivers/net/ethernet/amd/Makefile1
-rw-r--r--drivers/net/ethernet/amd/hplance.h1
-rw-r--r--drivers/net/ethernet/amd/xgbe/Makefile1
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_cfg.h12
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c157
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_hw.h5
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_nic.c182
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_nic.h6
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c14
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_ring.c53
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_ring.h10
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_vec.c11
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c21
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c89
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0_internal.h5
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c72
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h18
-rw-r--r--drivers/net/ethernet/arc/emac.h1
-rw-r--r--drivers/net/ethernet/arc/emac_mdio.c1
-rw-r--r--drivers/net/ethernet/atheros/Makefile1
-rw-r--r--drivers/net/ethernet/aurora/nb8800.h1
-rw-r--r--drivers/net/ethernet/broadcom/Makefile1
-rw-r--r--drivers/net/ethernet/broadcom/b44.h1
-rw-r--r--drivers/net/ethernet/broadcom/bcm63xx_enet.h1
-rw-r--r--drivers/net/ethernet/broadcom/bcmsysport.c65
-rw-r--r--drivers/net/ethernet/broadcom/bgmac.h1
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.c99
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.h5
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c23
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c8
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c11
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c4
-rw-r--r--drivers/net/ethernet/broadcom/cnic.c2
-rw-r--r--drivers/net/ethernet/broadcom/tg3.c4
-rw-r--r--drivers/net/ethernet/broadcom/tg3.h1
-rw-r--r--drivers/net/ethernet/cadence/Makefile1
-rw-r--r--drivers/net/ethernet/cavium/liquidio/Makefile1
-rw-r--r--drivers/net/ethernet/cavium/liquidio/lio_main.c2
-rw-r--r--drivers/net/ethernet/cavium/thunder/Makefile1
-rw-r--r--drivers/net/ethernet/cavium/thunder/nicvf_main.c2
-rw-r--r--drivers/net/ethernet/chelsio/Makefile1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb/fpga_defs.h1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb/mv88e1xxx.c1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb/mv88e1xxx.h1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb/my3126.c1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb/tp.c1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb/tp.h1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb/vsc7326.c1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb/vsc7326_reg.h1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb3/regs.h1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb3/sge_defs.h1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/Makefile1
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_clsf.c1
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_clsf.h1
-rw-r--r--drivers/net/ethernet/davicom/dm9000.h1
-rw-r--r--drivers/net/ethernet/dec/tulip/Makefile1
-rw-r--r--drivers/net/ethernet/emulex/benet/be.h8
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c14
-rw-r--r--drivers/net/ethernet/freescale/Makefile1
-rw-r--r--drivers/net/ethernet/freescale/dpaa/Makefile1
-rw-r--r--drivers/net/ethernet/freescale/fec.h5
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c8
-rw-r--r--drivers/net/ethernet/freescale/fman/Makefile1
-rw-r--r--drivers/net/ethernet/freescale/fs_enet/Makefile1
-rw-r--r--drivers/net/ethernet/freescale/fs_enet/fec.h1
-rw-r--r--drivers/net/ethernet/freescale/fs_enet/fs_enet.h1
-rw-r--r--drivers/net/ethernet/hisilicon/Makefile1
-rw-r--r--drivers/net/ethernet/hisilicon/hns/Makefile1
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_enet.c4
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hnae3.c43
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hnae3.h15
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h12
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c184
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h3
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c41
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h4
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c23
-rw-r--r--drivers/net/ethernet/i825xx/Makefile1
-rw-r--r--drivers/net/ethernet/ibm/emac/Makefile1
-rw-r--r--drivers/net/ethernet/ibm/emac/mal.c3
-rw-r--r--drivers/net/ethernet/ibm/ibmvnic.c16
-rw-r--r--drivers/net/ethernet/intel/Makefile1
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000_ethtool.c9
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000_main.c11
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_nvm.c2
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_txrx.c66
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40evf_client.c1
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40evf_client.h1
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c2
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c22
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_common.c19
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c16
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c24
-rw-r--r--drivers/net/ethernet/marvell/Makefile1
-rw-r--r--drivers/net/ethernet/marvell/mvpp2.c81
-rw-r--r--drivers/net/ethernet/marvell/skge.c2
-rw-r--r--drivers/net/ethernet/marvell/skge.h1
-rw-r--r--drivers/net/ethernet/marvell/sky2.h1
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/Makefile1
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/mlx4_stats.h1
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/Makefile1
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/dev.c70
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h4
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c113
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_fs.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_main.c13
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_rx.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_stats.h6
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_tc.c180
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_tx.c1
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.h2
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/fpga/core.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c8
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/fs_core.h11
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/health.c5
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/port.c21
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/sriov.c2
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/Makefile1
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/core.c11
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/i2c.c2
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/reg.h56
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum.c38
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c46
-rw-r--r--drivers/net/ethernet/micrel/Makefile1
-rw-r--r--drivers/net/ethernet/micrel/ks8695net.h1
-rw-r--r--drivers/net/ethernet/microchip/enc28j60_hw.h1
-rw-r--r--drivers/net/ethernet/microchip/encx24j600_hw.h1
-rw-r--r--drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp.h1
-rw-r--r--drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp_gen_header.h1
-rw-r--r--drivers/net/ethernet/natsemi/Makefile1
-rw-r--r--drivers/net/ethernet/natsemi/jazzsonic.c1
-rw-r--r--drivers/net/ethernet/natsemi/macsonic.c1
-rw-r--r--drivers/net/ethernet/natsemi/sonic.h1
-rw-r--r--drivers/net/ethernet/natsemi/xtsonic.c1
-rw-r--r--drivers/net/ethernet/netronome/nfp/Makefile1
-rw-r--r--drivers/net/ethernet/netronome/nfp/flower/action.c2
-rw-r--r--drivers/net/ethernet/netronome/nfp/flower/offload.c13
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_main.c47
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_net_common.c20
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c8
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_net_main.c23
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfpcore/nfp.h2
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfpcore/nfp_resource.c45
-rw-r--r--drivers/net/ethernet/nuvoton/w90p910_ether.c1
-rw-r--r--drivers/net/ethernet/qlogic/Makefile1
-rw-r--r--drivers/net/ethernet/qlogic/qed/Makefile1
-rw-r--r--drivers/net/ethernet/qlogic/qed/qed_dcbx.c1
-rw-r--r--drivers/net/ethernet/qlogic/qed/qed_selftest.h1
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/Makefile1
-rw-r--r--drivers/net/ethernet/qlogic/qlge/qlge_dbg.c1
-rw-r--r--drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c1
-rw-r--r--drivers/net/ethernet/qlogic/qlge/qlge_mpi.c1
-rw-r--r--drivers/net/ethernet/qualcomm/Makefile1
-rw-r--r--drivers/net/ethernet/qualcomm/emac/emac-ethtool.c30
-rw-r--r--drivers/net/ethernet/qualcomm/emac/emac-mac.c25
-rw-r--r--drivers/net/ethernet/qualcomm/emac/emac.c3
-rw-r--r--drivers/net/ethernet/qualcomm/emac/emac.h3
-rw-r--r--drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c5
-rw-r--r--drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c10
-rw-r--r--drivers/net/ethernet/realtek/8139too.c5
-rw-r--r--drivers/net/ethernet/realtek/atp.h1
-rw-r--r--drivers/net/ethernet/realtek/r8169.c2
-rw-r--r--drivers/net/ethernet/rocker/rocker_tlv.h48
-rw-r--r--drivers/net/ethernet/seeq/sgiseeq.h1
-rw-r--r--drivers/net/ethernet/sfc/Makefile1
-rw-r--r--drivers/net/ethernet/sfc/falcon/Makefile1
-rw-r--r--drivers/net/ethernet/sis/sis900.h1
-rw-r--r--drivers/net/ethernet/smsc/Makefile1
-rw-r--r--drivers/net/ethernet/smsc/smsc911x.c15
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/Makefile1
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c3
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c112
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c7
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c2
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c2
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/stmmac_main.c17
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c24
-rw-r--r--drivers/net/ethernet/sun/Makefile1
-rw-r--r--drivers/net/ethernet/sun/niu.h1
-rw-r--r--drivers/net/ethernet/sun/sunbmac.h1
-rw-r--r--drivers/net/ethernet/sun/sungem.h1
-rw-r--r--drivers/net/ethernet/sun/sunhme.h1
-rw-r--r--drivers/net/ethernet/sun/sunqe.h1
-rw-r--r--drivers/net/ethernet/sun/sunvnet_common.h1
-rw-r--r--drivers/net/ethernet/synopsys/Makefile1
-rw-r--r--drivers/net/ethernet/ti/Makefile1
-rw-r--r--drivers/net/ethernet/tile/Makefile1
-rw-r--r--drivers/net/ethernet/toshiba/Makefile1
-rw-r--r--drivers/net/ethernet/via/via-rhine.c2
-rw-r--r--drivers/net/ethernet/xilinx/Makefile1
-rw-r--r--drivers/net/ethernet/xilinx/ll_temac.h1
-rw-r--r--drivers/net/ethernet/xilinx/ll_temac_mdio.c1
-rw-r--r--drivers/net/ethernet/xilinx/xilinx_axienet.h1
-rw-r--r--drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c1
-rw-r--r--drivers/net/fddi/skfp/Makefile1
-rw-r--r--drivers/net/geneve.c6
-rw-r--r--drivers/net/hamradio/Makefile1
-rw-r--r--drivers/net/hamradio/z8530.h1
-rw-r--r--drivers/net/hippi/rrunner.h1
-rw-r--r--drivers/net/hyperv/hyperv_net.h5
-rw-r--r--drivers/net/hyperv/netvsc.c10
-rw-r--r--drivers/net/hyperv/netvsc_drv.c21
-rw-r--r--drivers/net/hyperv/rndis_filter.c126
-rw-r--r--drivers/net/ieee802154/Makefile1
-rw-r--r--drivers/net/ipvlan/ipvtap.c4
-rw-r--r--drivers/net/macsec.c2
-rw-r--r--drivers/net/macvtap.c4
-rw-r--r--drivers/net/phy/Kconfig18
-rw-r--r--drivers/net/phy/Makefile1
-rw-r--r--drivers/net/phy/dp83640_reg.h1
-rw-r--r--drivers/net/phy/marvell.c8
-rw-r--r--drivers/net/phy/mdio-boardinfo.h1
-rw-r--r--drivers/net/phy/phy.c3
-rw-r--r--drivers/net/phy/phy_device.c2
-rw-r--r--drivers/net/phy/swphy.h1
-rw-r--r--drivers/net/phy/xilinx_gmii2rgmii.c2
-rw-r--r--drivers/net/ppp/Makefile1
-rw-r--r--drivers/net/ppp/ppp_generic.c22
-rw-r--r--drivers/net/ppp/ppp_mppe.h1
-rw-r--r--drivers/net/slip/slip.h1
-rw-r--r--drivers/net/tap.c25
-rw-r--r--drivers/net/team/Makefile1
-rw-r--r--drivers/net/tun.c16
-rw-r--r--drivers/net/usb/Makefile1
-rw-r--r--drivers/net/usb/cdc_ether.c48
-rw-r--r--drivers/net/usb/lan78xx.c34
-rw-r--r--drivers/net/usb/r8152.c4
-rw-r--r--drivers/net/usb/rndis_host.c4
-rw-r--r--drivers/net/usb/smsc95xx.c11
-rw-r--r--drivers/net/vrf.c8
-rw-r--r--drivers/net/wan/Makefile1
-rw-r--r--drivers/net/wan/hd64570.h1
-rw-r--r--drivers/net/wan/lapbether.c1
-rw-r--r--drivers/net/wan/lmc/lmc.h1
-rw-r--r--drivers/net/wan/lmc/lmc_debug.c1
-rw-r--r--drivers/net/wan/lmc/lmc_debug.h1
-rw-r--r--drivers/net/wan/lmc/lmc_proto.h1
-rw-r--r--drivers/net/wan/x25_asy.h1
-rw-r--r--drivers/net/wan/z85230.h1
-rw-r--r--drivers/net/wimax/i2400m/Makefile1
-rw-r--r--drivers/net/wimax/i2400m/fw.c2
-rw-r--r--drivers/net/wireless/Makefile1
-rw-r--r--drivers/net/wireless/admtek/adm8211.h1
-rw-r--r--drivers/net/wireless/ath/Makefile1
-rw-r--r--drivers/net/wireless/ath/ath10k/Makefile1
-rw-r--r--drivers/net/wireless/ath/ath10k/htt_rx.c122
-rw-r--r--drivers/net/wireless/ath/ath10k/pci.c7
-rw-r--r--drivers/net/wireless/ath/ath10k/rx_desc.h3
-rw-r--r--drivers/net/wireless/ath/ath5k/Makefile1
-rw-r--r--drivers/net/wireless/ath/ath5k/sysfs.c1
-rw-r--r--drivers/net/wireless/ath/ath5k/trace.h1
-rw-r--r--drivers/net/wireless/ath/ath6kl/trace.h1
-rw-r--r--drivers/net/wireless/ath/ath9k/Makefile1
-rw-r--r--drivers/net/wireless/ath/carl9170/version.h1
-rw-r--r--drivers/net/wireless/ath/wcn36xx/Makefile1
-rw-r--r--drivers/net/wireless/ath/wcn36xx/main.c1
-rw-r--r--drivers/net/wireless/ath/wil6210/Makefile1
-rw-r--r--drivers/net/wireless/broadcom/b43/Makefile1
-rw-r--r--drivers/net/wireless/broadcom/b43/b43.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/bus.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/debugfs.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/dma.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/leds.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/lo.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/phy_a.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/phy_ac.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/phy_common.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/phy_g.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/phy_ht.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/phy_lcn.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/phy_lp.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/phy_n.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/pio.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/ppr.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/radio_2055.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/radio_2056.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/radio_2057.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/radio_2059.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/rfkill.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/sdio.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/sysfs.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/tables.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/tables_lpphy.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/tables_nphy.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/tables_phy_ht.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/tables_phy_lcn.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/wa.h1
-rw-r--r--drivers/net/wireless/broadcom/b43/xmit.h1
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/Makefile1
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/b43legacy.h1
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/debugfs.h1
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/dma.h1
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/ilt.h1
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/leds.h1
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/pio.h1
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/rfkill.h1
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/sysfs.h1
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/xmit.h1
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c37
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c3
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h5
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.c1
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c197
-rw-r--r--drivers/net/wireless/cisco/airo.h1
-rw-r--r--drivers/net/wireless/intel/ipw2x00/Makefile1
-rw-r--r--drivers/net/wireless/intel/iwlegacy/Makefile1
-rw-r--r--drivers/net/wireless/intel/iwlwifi/Makefile1
-rw-r--r--drivers/net/wireless/intel/iwlwifi/cfg/7000.c1
-rw-r--r--drivers/net/wireless/intel/iwlwifi/cfg/8000.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/cfg/9000.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/cfg/a000.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/dvm/Makefile1
-rw-r--r--drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/fw/dbg.c7
-rw-r--r--drivers/net/wireless/intel/iwlwifi/fw/dbg.h15
-rw-r--r--drivers/net/wireless/intel/iwlwifi/iwl-config.h16
-rw-r--r--drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c137
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/Makefile1
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/d3.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c69
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mvm.h5
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/nvm.c21
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rs.c3
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rx.c4
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c11
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/scan.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/sta.c8
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/sta.h2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/tt.c3
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/tx.c10
-rw-r--r--drivers/net/wireless/intersil/hostap/Makefile1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap.h1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_80211.h1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_80211_rx.c1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_80211_tx.c1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_ap.c1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_ap.h1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_common.h1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_config.h1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_download.c1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_info.c1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_ioctl.c1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_proc.c1
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_wlan.h1
-rw-r--r--drivers/net/wireless/intersil/orinoco/Makefile1
-rw-r--r--drivers/net/wireless/intersil/p54/Makefile1
-rw-r--r--drivers/net/wireless/marvell/libertas/Makefile1
-rw-r--r--drivers/net/wireless/marvell/libertas/cfg.c1
-rw-r--r--drivers/net/wireless/marvell/libertas/cfg.h1
-rw-r--r--drivers/net/wireless/marvell/libertas/cmd.h1
-rw-r--r--drivers/net/wireless/marvell/libertas/cmdresp.c1
-rw-r--r--drivers/net/wireless/marvell/libertas/debugfs.c1
-rw-r--r--drivers/net/wireless/marvell/libertas/debugfs.h1
-rw-r--r--drivers/net/wireless/marvell/libertas/decl.h1
-rw-r--r--drivers/net/wireless/marvell/libertas/defs.h1
-rw-r--r--drivers/net/wireless/marvell/libertas/dev.h1
-rw-r--r--drivers/net/wireless/marvell/libertas/ethtool.c1
-rw-r--r--drivers/net/wireless/marvell/libertas/host.h1
-rw-r--r--drivers/net/wireless/marvell/libertas/if_usb.h1
-rw-r--r--drivers/net/wireless/marvell/libertas/mesh.c1
-rw-r--r--drivers/net/wireless/marvell/libertas/mesh.h1
-rw-r--r--drivers/net/wireless/marvell/libertas/radiotap.h1
-rw-r--r--drivers/net/wireless/marvell/libertas/types.h1
-rw-r--r--drivers/net/wireless/marvell/libertas_tf/deb_defs.h1
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/Makefile1
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/cfg80211.c9
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/cfg80211.h3
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/event.c2
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c9
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/pearl/pcie_bus_priv.h2
-rw-r--r--drivers/net/wireless/ralink/rt2x00/Makefile1
-rw-r--r--drivers/net/wireless/ray_cs.h1
-rw-r--r--drivers/net/wireless/rayctl.h1
-rw-r--r--drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8180.h1
-rw-r--r--drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8225.h1
-rw-r--r--drivers/net/wireless/realtek/rtl818x/rtl8187/rfkill.h1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/btcoexist/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8188ee/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8192c/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8192ce/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8192cu/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8192de/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8192ee/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8192se/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8723ae/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8723be/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8723com/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8821ae/Makefile1
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c2
-rw-r--r--drivers/net/wireless/rsi/Makefile1
-rw-r--r--drivers/net/wireless/st/cw1200/Makefile1
-rw-r--r--drivers/net/wireless/ti/Makefile1
-rw-r--r--drivers/net/wireless/ti/wl1251/Makefile1
-rw-r--r--drivers/net/wireless/ti/wl1251/acx.c1
-rw-r--r--drivers/net/wireless/ti/wl1251/cmd.c1
-rw-r--r--drivers/net/wireless/ti/wl1251/wl12xx_80211.h1
-rw-r--r--drivers/net/wireless/ti/wlcore/Makefile1
-rw-r--r--drivers/net/wireless/ti/wlcore/wl12xx_80211.h1
-rw-r--r--drivers/net/wireless/wl3501.h1
-rw-r--r--drivers/net/wireless/zydas/zd1211rw/Makefile1
-rw-r--r--drivers/net/xen-netback/interface.c2
-rw-r--r--drivers/net/xen-netfront.c2
-rw-r--r--drivers/nfc/Makefile1
-rw-r--r--drivers/nfc/mei_phy.h1
-rw-r--r--drivers/nfc/microread/Makefile1
-rw-r--r--drivers/nfc/nfcmrvl/Makefile1
-rw-r--r--drivers/nfc/st-nci/Makefile1
-rw-r--r--drivers/nubus/nubus.c1
-rw-r--r--drivers/nubus/proc.c1
-rw-r--r--drivers/nvdimm/Makefile1
-rw-r--r--drivers/nvdimm/namespace_devs.c9
-rw-r--r--drivers/nvdimm/pmem.c7
-rw-r--r--drivers/nvdimm/pmem.h1
-rw-r--r--drivers/nvme/host/Makefile1
-rw-r--r--drivers/nvme/host/core.c12
-rw-r--r--drivers/nvme/host/fabrics.c18
-rw-r--r--drivers/nvme/host/fc.c58
-rw-r--r--drivers/nvme/host/pci.c48
-rw-r--r--drivers/nvme/host/rdma.c36
-rw-r--r--drivers/nvme/target/Makefile1
-rw-r--r--drivers/nvme/target/core.c18
-rw-r--r--drivers/nvme/target/fabrics-cmd.c9
-rw-r--r--drivers/nvme/target/fc.c24
-rw-r--r--drivers/nvme/target/fcloop.c104
-rw-r--r--drivers/nvme/target/nvmet.h1
-rw-r--r--drivers/nvmem/Makefile1
-rw-r--r--drivers/nvmem/core.c3
-rw-r--r--drivers/of/Makefile1
-rw-r--r--drivers/of/base.c8
-rw-r--r--drivers/of/of_mdio.c39
-rw-r--r--drivers/of/of_reserved_mem.c2
-rw-r--r--drivers/of/property.c2
-rw-r--r--drivers/of/unittest-data/Makefile1
-rw-r--r--drivers/of/unittest-data/overlay.dts1
-rw-r--r--drivers/of/unittest-data/overlay_bad_phandle.dts1
-rw-r--r--drivers/of/unittest-data/overlay_base.dts1
-rw-r--r--drivers/of/unittest-data/testcases.dts1
-rw-r--r--drivers/of/unittest-data/tests-interrupts.dtsi1
-rw-r--r--drivers/of/unittest-data/tests-match.dtsi1
-rw-r--r--drivers/of/unittest-data/tests-overlay.dtsi1
-rw-r--r--drivers/of/unittest-data/tests-phandle.dtsi1
-rw-r--r--drivers/of/unittest-data/tests-platform.dtsi1
-rw-r--r--drivers/of/unittest.c1
-rw-r--r--drivers/oprofile/nmi_timer_int.c1
-rw-r--r--drivers/oprofile/oprofile_perf.c1
-rw-r--r--drivers/parisc/Makefile1
-rw-r--r--drivers/parisc/iommu-helpers.h1
-rw-r--r--drivers/parport/Makefile1
-rw-r--r--drivers/parport/ieee1284_ops.c1
-rw-r--r--drivers/parport/multiface.h1
-rw-r--r--drivers/parport/probe.c1
-rw-r--r--drivers/parport/procfs.c1
-rw-r--r--drivers/pci/Makefile1
-rw-r--r--drivers/pci/dwc/Makefile1
-rw-r--r--drivers/pci/endpoint/functions/pci-epf-test.c13
-rw-r--r--drivers/pci/host/Makefile1
-rw-r--r--drivers/pci/host/pci-aardvark.c2
-rw-r--r--drivers/pci/host/pci-ftpci100.c1
-rw-r--r--drivers/pci/host/pci-tegra.c22
-rw-r--r--drivers/pci/host/pcie-tango.c1
-rw-r--r--drivers/pci/hotplug/Makefile1
-rw-r--r--drivers/pci/htirq.c1
-rw-r--r--drivers/pci/irq.c1
-rw-r--r--drivers/pci/pci-label.c1
-rw-r--r--drivers/pci/pci-sysfs.c12
-rw-r--r--drivers/pci/pci.c13
-rw-r--r--drivers/pci/pci.h1
-rw-r--r--drivers/pci/pcie/Makefile1
-rw-r--r--drivers/pci/pcie/aer/Makefile1
-rw-r--r--drivers/pci/pcie/aer/aerdrv.h1
-rw-r--r--drivers/pci/pcie/aer/aerdrv_acpi.c1
-rw-r--r--drivers/pci/pcie/aspm.c1
-rw-r--r--drivers/pci/pcie/portdrv.h1
-rw-r--r--drivers/pci/pcie/portdrv_core.c1
-rw-r--r--drivers/pci/pcie/portdrv_pci.c3
-rw-r--r--drivers/pci/proc.c1
-rw-r--r--drivers/pci/quirks.c3
-rw-r--r--drivers/pci/setup-res.c1
-rw-r--r--drivers/pci/syscall.c1
-rw-r--r--drivers/pcmcia/Makefile1
-rw-r--r--drivers/pcmcia/bcm63xx_pcmcia.h1
-rw-r--r--drivers/pcmcia/db1xxx_ss.c33
-rw-r--r--drivers/pcmcia/i82092aa.h1
-rw-r--r--drivers/pcmcia/m32r_cfc.h1
-rw-r--r--drivers/pcmcia/m32r_pcc.h1
-rw-r--r--drivers/pcmcia/pd6729.h1
-rw-r--r--drivers/pcmcia/sa1100_assabet.c1
-rw-r--r--drivers/pcmcia/sa1100_cerf.c1
-rw-r--r--drivers/pcmcia/sa1100_generic.h1
-rw-r--r--drivers/pcmcia/sa1100_h3600.c1
-rw-r--r--drivers/pcmcia/sa1100_shannon.c1
-rw-r--r--drivers/pcmcia/sa1100_simpad.c1
-rw-r--r--drivers/pcmcia/sa1111_generic.h1
-rw-r--r--drivers/pcmcia/sa1111_jornada720.c1
-rw-r--r--drivers/pcmcia/sa1111_neponset.c1
-rw-r--r--drivers/pcmcia/soc_common.h1
-rw-r--r--drivers/pcmcia/yenta_socket.h1
-rw-r--r--drivers/perf/Makefile1
-rw-r--r--drivers/perf/arm_pmu_acpi.c1
-rw-r--r--drivers/perf/arm_pmu_platform.c1
-rw-r--r--drivers/phy/Kconfig1
-rw-r--r--drivers/phy/Makefile3
-rw-r--r--drivers/phy/broadcom/Makefile1
-rw-r--r--drivers/phy/lantiq/Kconfig9
-rw-r--r--drivers/phy/lantiq/Makefile1
-rw-r--r--drivers/phy/lantiq/phy-lantiq-rcu-usb2.c254
-rw-r--r--drivers/phy/marvell/Makefile1
-rw-r--r--drivers/phy/marvell/phy-mvebu-cp110-comphy.c18
-rw-r--r--drivers/phy/mediatek/phy-mtk-tphy.c3
-rw-r--r--drivers/phy/qualcomm/Makefile1
-rw-r--r--drivers/phy/rockchip/Makefile1
-rw-r--r--drivers/phy/rockchip/phy-rockchip-typec.c82
-rw-r--r--drivers/phy/samsung/Makefile1
-rw-r--r--drivers/phy/tegra/xusb.c2
-rw-r--r--drivers/phy/ti/Makefile1
-rw-r--r--drivers/pinctrl/Kconfig1
-rw-r--r--drivers/pinctrl/Makefile1
-rw-r--r--drivers/pinctrl/bcm/Makefile1
-rw-r--r--drivers/pinctrl/bcm/pinctrl-bcm2835.c4
-rw-r--r--drivers/pinctrl/freescale/Makefile1
-rw-r--r--drivers/pinctrl/intel/Makefile1
-rw-r--r--drivers/pinctrl/intel/pinctrl-cherryview.c14
-rw-r--r--drivers/pinctrl/mediatek/Makefile1
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-mtk-mt6397.h1
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-mtk-mt8127.h1
-rw-r--r--drivers/pinctrl/mvebu/Makefile1
-rw-r--r--drivers/pinctrl/mvebu/pinctrl-armada-37xx.c41
-rw-r--r--drivers/pinctrl/nomadik/Makefile1
-rw-r--r--drivers/pinctrl/nomadik/pinctrl-abx500.h1
-rw-r--r--drivers/pinctrl/nomadik/pinctrl-nomadik-db8500.c1
-rw-r--r--drivers/pinctrl/nomadik/pinctrl-nomadik-db8540.c1
-rw-r--r--drivers/pinctrl/nomadik/pinctrl-nomadik-stn8815.c1
-rw-r--r--drivers/pinctrl/nomadik/pinctrl-nomadik.h1
-rw-r--r--drivers/pinctrl/pinctrl-amd.c85
-rw-r--r--drivers/pinctrl/pinctrl-amd.h1
-rw-r--r--drivers/pinctrl/pinctrl-coh901.h1
-rw-r--r--drivers/pinctrl/pinctrl-mcp23s08.c6
-rw-r--r--drivers/pinctrl/qcom/Makefile1
-rw-r--r--drivers/pinctrl/samsung/Makefile1
-rw-r--r--drivers/pinctrl/sh-pfc/Makefile1
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-sh7722.c1
-rw-r--r--drivers/pinctrl/spear/Makefile1
-rw-r--r--drivers/pinctrl/sprd/Kconfig3
-rw-r--r--drivers/pinctrl/sprd/pinctrl-sprd.c32
-rw-r--r--drivers/pinctrl/stm32/Makefile1
-rw-r--r--drivers/pinctrl/sunxi/Makefile1
-rw-r--r--drivers/pinctrl/tegra/Makefile1
-rw-r--r--drivers/pinctrl/uniphier/Makefile1
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier.h2
-rw-r--r--drivers/pinctrl/vt8500/Makefile1
-rw-r--r--drivers/platform/Makefile1
-rw-r--r--drivers/platform/chrome/Makefile1
-rw-r--r--drivers/platform/chrome/chromeos_laptop.c2
-rw-r--r--drivers/platform/chrome/chromeos_pstore.c2
-rw-r--r--drivers/platform/chrome/cros_ec_lpc.c2
-rw-r--r--drivers/platform/x86/Makefile1
-rw-r--r--drivers/platform/x86/compal-laptop.c2
-rw-r--r--drivers/platform/x86/fujitsu-laptop.c10
-rw-r--r--drivers/platform/x86/hdaps.c2
-rw-r--r--drivers/platform/x86/ibm_rtl.c2
-rw-r--r--drivers/platform/x86/intel_oaktrail.c2
-rw-r--r--drivers/platform/x86/intel_pmc_ipc.c115
-rw-r--r--drivers/platform/x86/mlx-platform.c2
-rw-r--r--drivers/platform/x86/msi-laptop.c2
-rw-r--r--drivers/platform/x86/samsung-laptop.c2
-rw-r--r--drivers/platform/x86/samsung-q10.c2
-rw-r--r--drivers/platform/x86/sony-laptop.c2
-rw-r--r--drivers/platform/x86/toshiba-wmi.c2
-rw-r--r--drivers/pnp/Makefile1
-rw-r--r--drivers/pnp/base.h1
-rw-r--r--drivers/pnp/card.c1
-rw-r--r--drivers/pnp/core.c1
-rw-r--r--drivers/pnp/driver.c1
-rw-r--r--drivers/pnp/interface.c1
-rw-r--r--drivers/pnp/isapnp/compat.c1
-rw-r--r--drivers/pnp/manager.c1
-rw-r--r--drivers/pnp/pnpacpi/pnpacpi.h1
-rw-r--r--drivers/pnp/pnpbios/bioscalls.c1
-rw-r--r--drivers/pnp/pnpbios/core.c2
-rw-r--r--drivers/pnp/pnpbios/proc.c1
-rw-r--r--drivers/pnp/pnpbios/rsparser.c1
-rw-r--r--drivers/pnp/quirks.c1
-rw-r--r--drivers/pnp/resource.c1
-rw-r--r--drivers/pnp/support.c1
-rw-r--r--drivers/pnp/system.c1
-rw-r--r--drivers/power/reset/Makefile1
-rw-r--r--drivers/power/reset/gemini-poweroff.c1
-rw-r--r--drivers/power/reset/piix4-poweroff.c4
-rw-r--r--drivers/power/supply/Makefile1
-rw-r--r--drivers/power/supply/ab8500_bmdata.c1
-rw-r--r--drivers/ptp/Makefile1
-rw-r--r--drivers/pwm/Makefile1
-rw-r--r--drivers/rapidio/Makefile1
-rw-r--r--drivers/rapidio/devices/tsi721.c7
-rw-r--r--drivers/rapidio/rio-access.c40
-rw-r--r--drivers/rapidio/switches/Makefile1
-rw-r--r--drivers/ras/cec.c3
-rw-r--r--drivers/ras/debugfs.h1
-rw-r--r--drivers/ras/ras.c1
-rw-r--r--drivers/regulator/Makefile1
-rw-r--r--drivers/regulator/axp20x-regulator.c2
-rw-r--r--drivers/regulator/fixed-helper.c1
-rw-r--r--drivers/regulator/rn5t618-regulator.c2
-rw-r--r--drivers/remoteproc/Kconfig2
-rw-r--r--drivers/remoteproc/Makefile1
-rw-r--r--drivers/remoteproc/imx_rproc.c9
-rw-r--r--drivers/remoteproc/qcom_common.h1
-rw-r--r--drivers/remoteproc/qcom_wcnss.h1
-rw-r--r--drivers/reset/Kconfig15
-rw-r--r--drivers/reset/Makefile4
-rw-r--r--drivers/reset/reset-hsdk.c (renamed from drivers/reset/reset-hsdk-v1.c)44
-rw-r--r--drivers/reset/reset-lantiq.c212
-rw-r--r--drivers/reset/reset-socfpga.c17
-rw-r--r--drivers/rpmsg/Makefile1
-rw-r--r--drivers/rpmsg/qcom_glink_native.c14
-rw-r--r--drivers/rtc/Makefile1
-rw-r--r--drivers/rtc/rtc-core.h1
-rw-r--r--drivers/rtc/rtc-efi-platform.c1
-rw-r--r--drivers/rtc/rtc-sa1100.h1
-rw-r--r--drivers/s390/block/Makefile1
-rw-r--r--drivers/s390/block/dasd.c12
-rw-r--r--drivers/s390/block/dasd_3990_erp.c1
-rw-r--r--drivers/s390/block/dasd_alias.c1
-rw-r--r--drivers/s390/block/dasd_diag.h1
-rw-r--r--drivers/s390/block/dasd_eckd.h1
-rw-r--r--drivers/s390/block/dasd_eer.c1
-rw-r--r--drivers/s390/block/dasd_erp.c1
-rw-r--r--drivers/s390/block/dasd_fba.h1
-rw-r--r--drivers/s390/block/dasd_genhd.c1
-rw-r--r--drivers/s390/block/dasd_int.h1
-rw-r--r--drivers/s390/block/dasd_ioctl.c1
-rw-r--r--drivers/s390/block/dasd_proc.c1
-rw-r--r--drivers/s390/block/scm_blk.c6
-rw-r--r--drivers/s390/block/scm_blk.h1
-rw-r--r--drivers/s390/block/scm_drv.c1
-rw-r--r--drivers/s390/char/Makefile1
-rw-r--r--drivers/s390/char/con3215.c1
-rw-r--r--drivers/s390/char/con3270.c1
-rw-r--r--drivers/s390/char/ctrlchar.c1
-rw-r--r--drivers/s390/char/ctrlchar.h1
-rw-r--r--drivers/s390/char/defkeymap.c1
-rw-r--r--drivers/s390/char/diag_ftp.c1
-rw-r--r--drivers/s390/char/diag_ftp.h1
-rw-r--r--drivers/s390/char/hmcdrv_cache.c1
-rw-r--r--drivers/s390/char/hmcdrv_cache.h1
-rw-r--r--drivers/s390/char/hmcdrv_dev.c1
-rw-r--r--drivers/s390/char/hmcdrv_dev.h1
-rw-r--r--drivers/s390/char/hmcdrv_ftp.c1
-rw-r--r--drivers/s390/char/hmcdrv_ftp.h1
-rw-r--r--drivers/s390/char/keyboard.c1
-rw-r--r--drivers/s390/char/keyboard.h1
-rw-r--r--drivers/s390/char/raw3270.h1
-rw-r--r--drivers/s390/char/sclp.c1
-rw-r--r--drivers/s390/char/sclp.h1
-rw-r--r--drivers/s390/char/sclp_cmd.c1
-rw-r--r--drivers/s390/char/sclp_con.c1
-rw-r--r--drivers/s390/char/sclp_config.c1
-rw-r--r--drivers/s390/char/sclp_cpi_sys.c1
-rw-r--r--drivers/s390/char/sclp_cpi_sys.h1
-rw-r--r--drivers/s390/char/sclp_ctl.c1
-rw-r--r--drivers/s390/char/sclp_diag.h1
-rw-r--r--drivers/s390/char/sclp_early.c1
-rw-r--r--drivers/s390/char/sclp_early_core.c1
-rw-r--r--drivers/s390/char/sclp_ftp.c1
-rw-r--r--drivers/s390/char/sclp_ftp.h1
-rw-r--r--drivers/s390/char/sclp_ocf.c1
-rw-r--r--drivers/s390/char/sclp_pci.c1
-rw-r--r--drivers/s390/char/sclp_quiesce.c1
-rw-r--r--drivers/s390/char/sclp_rw.c1
-rw-r--r--drivers/s390/char/sclp_rw.h1
-rw-r--r--drivers/s390/char/sclp_sdias.c1
-rw-r--r--drivers/s390/char/sclp_sdias.h1
-rw-r--r--drivers/s390/char/sclp_tty.c1
-rw-r--r--drivers/s390/char/sclp_tty.h1
-rw-r--r--drivers/s390/char/sclp_vt220.c1
-rw-r--r--drivers/s390/char/tape.h1
-rw-r--r--drivers/s390/char/tape_3590.h1
-rw-r--r--drivers/s390/char/tape_char.c1
-rw-r--r--drivers/s390/char/tape_class.h1
-rw-r--r--drivers/s390/char/tape_proc.c1
-rw-r--r--drivers/s390/char/tape_std.c1
-rw-r--r--drivers/s390/char/tape_std.h1
-rw-r--r--drivers/s390/char/tty3270.h1
-rw-r--r--drivers/s390/char/vmcp.c1
-rw-r--r--drivers/s390/char/vmur.h1
-rw-r--r--drivers/s390/cio/Makefile1
-rw-r--r--drivers/s390/cio/airq.c1
-rw-r--r--drivers/s390/cio/blacklist.c1
-rw-r--r--drivers/s390/cio/ccwreq.c1
-rw-r--r--drivers/s390/cio/chp.h1
-rw-r--r--drivers/s390/cio/chsc.h1
-rw-r--r--drivers/s390/cio/chsc_sch.h1
-rw-r--r--drivers/s390/cio/cio.h1
-rw-r--r--drivers/s390/cio/cio_debug.h1
-rw-r--r--drivers/s390/cio/crw.c1
-rw-r--r--drivers/s390/cio/css.h1
-rw-r--r--drivers/s390/cio/device.c12
-rw-r--r--drivers/s390/cio/device.h2
-rw-r--r--drivers/s390/cio/device_fsm.c12
-rw-r--r--drivers/s390/cio/device_id.c1
-rw-r--r--drivers/s390/cio/device_pgid.c1
-rw-r--r--drivers/s390/cio/device_status.c1
-rw-r--r--drivers/s390/cio/eadm_sch.h1
-rw-r--r--drivers/s390/cio/fcx.c1
-rw-r--r--drivers/s390/cio/idset.c1
-rw-r--r--drivers/s390/cio/idset.h1
-rw-r--r--drivers/s390/cio/io_sch.h3
-rw-r--r--drivers/s390/cio/ioasm.c1
-rw-r--r--drivers/s390/cio/ioasm.h1
-rw-r--r--drivers/s390/cio/itcw.c1
-rw-r--r--drivers/s390/cio/orb.h1
-rw-r--r--drivers/s390/cio/qdio.h1
-rw-r--r--drivers/s390/cio/qdio_debug.c1
-rw-r--r--drivers/s390/cio/qdio_debug.h1
-rw-r--r--drivers/s390/cio/qdio_thinint.c1
-rw-r--r--drivers/s390/cio/trace.c1
-rw-r--r--drivers/s390/cio/trace.h1
-rw-r--r--drivers/s390/cio/vfio_ccw_cp.c1
-rw-r--r--drivers/s390/cio/vfio_ccw_cp.h1
-rw-r--r--drivers/s390/cio/vfio_ccw_fsm.c1
-rw-r--r--drivers/s390/cio/vfio_ccw_ops.c1
-rw-r--r--drivers/s390/cio/vfio_ccw_private.h1
-rw-r--r--drivers/s390/crypto/Makefile1
-rw-r--r--drivers/s390/crypto/ap_asm.h1
-rw-r--r--drivers/s390/crypto/ap_card.c1
-rw-r--r--drivers/s390/crypto/ap_debug.h1
-rw-r--r--drivers/s390/crypto/ap_queue.c1
-rw-r--r--drivers/s390/crypto/zcrypt_cex4.h1
-rw-r--r--drivers/s390/crypto/zcrypt_debug.h1
-rw-r--r--drivers/s390/net/Makefile1
-rw-r--r--drivers/s390/net/ctcm_dbug.c1
-rw-r--r--drivers/s390/net/ctcm_dbug.h1
-rw-r--r--drivers/s390/net/ctcm_fsms.c1
-rw-r--r--drivers/s390/net/ctcm_fsms.h1
-rw-r--r--drivers/s390/net/ctcm_main.h1
-rw-r--r--drivers/s390/net/ctcm_mpc.c1
-rw-r--r--drivers/s390/net/ctcm_mpc.h1
-rw-r--r--drivers/s390/net/ctcm_sysfs.c1
-rw-r--r--drivers/s390/net/fsm.h1
-rw-r--r--drivers/s390/net/lcs.h1
-rw-r--r--drivers/s390/net/qeth_core.h1
-rw-r--r--drivers/s390/net/qeth_core_mpc.c1
-rw-r--r--drivers/s390/net/qeth_core_mpc.h1
-rw-r--r--drivers/s390/net/qeth_l2.h1
-rw-r--r--drivers/s390/net/qeth_l2_sys.c1
-rw-r--r--drivers/s390/net/qeth_l3.h1
-rw-r--r--drivers/s390/net/qeth_l3_sys.c1
-rw-r--r--drivers/s390/net/smsgiucv.h1
-rw-r--r--drivers/s390/scsi/zfcp_ccw.c1
-rw-r--r--drivers/s390/scsi/zfcp_dbf.c1
-rw-r--r--drivers/s390/scsi/zfcp_dbf.h1
-rw-r--r--drivers/s390/scsi/zfcp_def.h1
-rw-r--r--drivers/s390/scsi/zfcp_erp.c1
-rw-r--r--drivers/s390/scsi/zfcp_ext.h1
-rw-r--r--drivers/s390/scsi/zfcp_fc.c1
-rw-r--r--drivers/s390/scsi/zfcp_fc.h1
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c1
-rw-r--r--drivers/s390/scsi/zfcp_fsf.h1
-rw-r--r--drivers/s390/scsi/zfcp_qdio.c1
-rw-r--r--drivers/s390/scsi/zfcp_qdio.h1
-rw-r--r--drivers/s390/scsi/zfcp_reqlist.h1
-rw-r--r--drivers/s390/scsi/zfcp_scsi.c1
-rw-r--r--drivers/s390/scsi/zfcp_sysfs.c1
-rw-r--r--drivers/s390/scsi/zfcp_unit.c1
-rw-r--r--drivers/sbus/char/Makefile1
-rw-r--r--drivers/sbus/char/bbc_envctrl.c1
-rw-r--r--drivers/sbus/char/bbc_i2c.h1
-rw-r--r--drivers/sbus/char/max1617.h1
-rw-r--r--drivers/scsi/53c700.h1
-rw-r--r--drivers/scsi/Makefile1
-rw-r--r--drivers/scsi/NCR5380.c1
-rw-r--r--drivers/scsi/NCR5380.h1
-rw-r--r--drivers/scsi/NCR_D700.h1
-rw-r--r--drivers/scsi/NCR_Q720.h1
-rw-r--r--drivers/scsi/a2091.h1
-rw-r--r--drivers/scsi/a3000.h1
-rw-r--r--drivers/scsi/aha152x.h1
-rw-r--r--drivers/scsi/aha1542.h1
-rw-r--r--drivers/scsi/aha1740.h1
-rw-r--r--drivers/scsi/aic7xxx/Makefile1
-rw-r--r--drivers/scsi/aic7xxx/aicasm/Makefile1
-rw-r--r--drivers/scsi/arm/Makefile1
-rw-r--r--drivers/scsi/atp870u.h1
-rw-r--r--drivers/scsi/bfa/Makefile1
-rw-r--r--drivers/scsi/constants.c1
-rw-r--r--drivers/scsi/csiostor/Makefile1
-rw-r--r--drivers/scsi/dc395x.h1
-rw-r--r--drivers/scsi/eata_generic.h1
-rw-r--r--drivers/scsi/eata_pio.h1
-rw-r--r--drivers/scsi/esp_scsi.h1
-rw-r--r--drivers/scsi/fcoe/libfcoe.h1
-rw-r--r--drivers/scsi/fnic/Makefile1
-rw-r--r--drivers/scsi/gdth.h1
-rw-r--r--drivers/scsi/gdth_ioctl.h1
-rw-r--r--drivers/scsi/gdth_proc.c1
-rw-r--r--drivers/scsi/gdth_proc.h1
-rw-r--r--drivers/scsi/gvp11.h1
-rw-r--r--drivers/scsi/ibmvscsi_tgt/libsrp.h1
-rw-r--r--drivers/scsi/imm.h1
-rw-r--r--drivers/scsi/isci/Makefile1
-rw-r--r--drivers/scsi/libfc/Makefile1
-rw-r--r--drivers/scsi/lpfc/lpfc_nvme.c2
-rw-r--r--drivers/scsi/mac53c94.h1
-rw-r--r--drivers/scsi/megaraid.h1
-rw-r--r--drivers/scsi/megaraid/Makefile1
-rw-r--r--drivers/scsi/mesh.h1
-rw-r--r--drivers/scsi/mpt3sas/Makefile1
-rw-r--r--drivers/scsi/mpt3sas/mpi/mpi2.h1
-rw-r--r--drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h1
-rw-r--r--drivers/scsi/mpt3sas/mpi/mpi2_init.h1
-rw-r--r--drivers/scsi/mpt3sas/mpi/mpi2_ioc.h1
-rw-r--r--drivers/scsi/mpt3sas/mpi/mpi2_raid.h1
-rw-r--r--drivers/scsi/mpt3sas/mpi/mpi2_sas.h1
-rw-r--r--drivers/scsi/mpt3sas/mpi/mpi2_tool.h1
-rw-r--r--drivers/scsi/mpt3sas/mpi/mpi2_type.h1
-rw-r--r--drivers/scsi/mvme147.c1
-rw-r--r--drivers/scsi/mvme147.h1
-rw-r--r--drivers/scsi/osst.h1
-rw-r--r--drivers/scsi/osst_detect.h1
-rw-r--r--drivers/scsi/osst_options.h1
-rw-r--r--drivers/scsi/pcmcia/Makefile1
-rw-r--r--drivers/scsi/pm8001/Makefile1
-rw-r--r--drivers/scsi/ppa.h1
-rw-r--r--drivers/scsi/qla2xxx/Makefile1
-rw-r--r--drivers/scsi/qla2xxx/qla_devtbl.h1
-rw-r--r--drivers/scsi/qla2xxx/qla_nvme.c2
-rw-r--r--drivers/scsi/qla2xxx/tcm_qla2xxx.h1
-rw-r--r--drivers/scsi/qlogicfas408.h1
-rw-r--r--drivers/scsi/qlogicpti.h1
-rw-r--r--drivers/scsi/scsi.h1
-rw-r--r--drivers/scsi/scsi_common.c1
-rw-r--r--drivers/scsi/scsi_debugfs.c1
-rw-r--r--drivers/scsi/scsi_devinfo.c1
-rw-r--r--drivers/scsi/scsi_lib_dma.c1
-rw-r--r--drivers/scsi/scsi_logging.h1
-rw-r--r--drivers/scsi/scsi_priv.h1
-rw-r--r--drivers/scsi/scsi_proc.c1
-rw-r--r--drivers/scsi/scsi_sas_internal.h1
-rw-r--r--drivers/scsi/scsi_scan.c1
-rw-r--r--drivers/scsi/scsi_transport_api.h1
-rw-r--r--drivers/scsi/scsicam.c1
-rw-r--r--drivers/scsi/sd.h1
-rw-r--r--drivers/scsi/sense_codes.h1
-rw-r--r--drivers/scsi/snic/Makefile1
-rw-r--r--drivers/scsi/sr.h1
-rw-r--r--drivers/scsi/sr_ioctl.c1
-rw-r--r--drivers/scsi/sr_vendor.c1
-rw-r--r--drivers/scsi/st.h1
-rw-r--r--drivers/scsi/st_options.h1
-rw-r--r--drivers/scsi/ufs/Makefile1
-rw-r--r--drivers/scsi/wd719x.h1
-rw-r--r--drivers/sh/Makefile1
-rw-r--r--drivers/sh/intc/internals.h1
-rw-r--r--drivers/soc/Makefile2
-rw-r--r--drivers/soc/dove/pmu.c1
-rw-r--r--drivers/soc/fsl/qbman/Makefile1
-rw-r--r--drivers/soc/fsl/qe/Makefile1
-rw-r--r--drivers/soc/lantiq/Makefile2
-rw-r--r--drivers/soc/lantiq/fpi-bus.c87
-rw-r--r--drivers/soc/lantiq/gphy.c260
-rw-r--r--drivers/soc/qcom/Makefile1
-rw-r--r--drivers/soc/renesas/Makefile1
-rw-r--r--drivers/soc/tegra/Makefile1
-rw-r--r--drivers/soc/tegra/fuse/Makefile1
-rw-r--r--drivers/soc/ti/Makefile1
-rw-r--r--drivers/spi/Makefile1
-rw-r--r--drivers/spi/spi-armada-3700.c145
-rw-r--r--drivers/spi/spi-bcm-qspi.c9
-rw-r--r--drivers/spi/spi-bcm53xx.h1
-rw-r--r--drivers/spi/spi-bitbang-txrx.h1
-rw-r--r--drivers/spi/spi-cavium.h1
-rw-r--r--drivers/spi/spi-dw.h1
-rw-r--r--drivers/spi/spi-stm32.c4
-rw-r--r--drivers/spi/spi.c13
-rw-r--r--drivers/ssb/Makefile1
-rw-r--r--drivers/ssb/ssb_private.h1
-rw-r--r--drivers/staging/Makefile1
-rw-r--r--drivers/staging/android/ashmem.c29
-rw-r--r--drivers/staging/android/ion/Makefile1
-rw-r--r--drivers/staging/board/board.h1
-rw-r--r--drivers/staging/board/kzm9d.c1
-rw-r--r--drivers/staging/comedi/Makefile1
-rw-r--r--drivers/staging/comedi/comedi_internal.h1
-rw-r--r--drivers/staging/comedi/drivers/Makefile1
-rw-r--r--drivers/staging/comedi/drivers/addi_tcw.h1
-rw-r--r--drivers/staging/comedi/drivers/addi_watchdog.h1
-rw-r--r--drivers/staging/comedi/drivers/amcc_s5933.h1
-rw-r--r--drivers/staging/comedi/drivers/jr3_pci.h1
-rw-r--r--drivers/staging/comedi/drivers/ni_labpc_isadma.h1
-rw-r--r--drivers/staging/comedi/drivers/ni_labpc_regs.h1
-rw-r--r--drivers/staging/comedi/drivers/serial2002.c24
-rw-r--r--drivers/staging/comedi/drivers/z8536.h1
-rw-r--r--drivers/staging/dgnc/dgnc_utils.c1
-rw-r--r--drivers/staging/dgnc/dgnc_utils.h1
-rw-r--r--drivers/staging/fbtft/Makefile1
-rw-r--r--drivers/staging/fbtft/fbtft-bus.c1
-rw-r--r--drivers/staging/fbtft/fbtft-io.c1
-rw-r--r--drivers/staging/fbtft/fbtft-sysfs.c1
-rw-r--r--drivers/staging/fwserial/fwserial.h1
-rw-r--r--drivers/staging/gdm724x/Makefile1
-rw-r--r--drivers/staging/greybus/Makefile1
-rw-r--r--drivers/staging/greybus/greybus_id.h1
-rw-r--r--drivers/staging/greybus/tools/Makefile1
-rw-r--r--drivers/staging/iio/Makefile1
-rw-r--r--drivers/staging/iio/adc/Makefile1
-rw-r--r--drivers/staging/iio/adc/ad7192.c4
-rw-r--r--drivers/staging/iio/meter/Makefile1
-rw-r--r--drivers/staging/iio/meter/ade7759.c2
-rw-r--r--drivers/staging/iio/meter/ade7854.h1
-rw-r--r--drivers/staging/iio/meter/meter.h1
-rw-r--r--drivers/staging/iio/trigger/iio-trig-bfin-timer.h1
-rw-r--r--drivers/staging/ks7010/eap_packet.h1
-rw-r--r--drivers/staging/lustre/lnet/libcfs/Makefile1
-rw-r--r--drivers/staging/lustre/lnet/libcfs/tracefile.c10
-rw-r--r--drivers/staging/lustre/lnet/lnet/Makefile1
-rw-r--r--drivers/staging/lustre/lustre/llite/Makefile1
-rw-r--r--drivers/staging/lustre/lustre/llite/llite_lib.c4
-rw-r--r--drivers/staging/lustre/lustre/llite/namei.c3
-rw-r--r--drivers/staging/lustre/lustre/llite/xattr_cache.c1
-rw-r--r--drivers/staging/lustre/lustre/lov/Makefile1
-rw-r--r--drivers/staging/lustre/lustre/obdclass/Makefile1
-rw-r--r--drivers/staging/lustre/lustre/obdclass/kernelcomm.c7
-rw-r--r--drivers/staging/lustre/lustre/ptlrpc/Makefile1
-rw-r--r--drivers/staging/media/Makefile1
-rw-r--r--drivers/staging/media/atomisp/i2c/Makefile1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/Makefile1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/ad5816g.c1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/ad5816g.h1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/common.h1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/drv201.c1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/drv201.h1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/dw9714.c1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/dw9714.h1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/imx134.h1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/imx175.h1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/imx219.h1
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/imx227.h1
-rw-r--r--drivers/staging/media/atomisp/i2c/ov5693/Makefile1
-rw-r--r--drivers/staging/media/atomisp/include/asm/intel_mid_pcihelpers.h1
-rw-r--r--drivers/staging/media/atomisp/pci/atomisp2/Makefile1
-rw-r--r--drivers/staging/media/atomisp/platform/intel-mid/intel_mid_pcihelpers.c1
-rw-r--r--drivers/staging/media/imx/Makefile1
-rw-r--r--drivers/staging/media/imx/imx-media-dev.c4
-rw-r--r--drivers/staging/most/Makefile1
-rw-r--r--drivers/staging/mt29f_spinand/mt29f_spinand.c8
-rw-r--r--drivers/staging/nvec/Makefile1
-rw-r--r--drivers/staging/olpc_dcon/olpc_dcon.h1
-rw-r--r--drivers/staging/pi433/rf69.c9
-rw-r--r--drivers/staging/rtl8188eu/Makefile1
-rw-r--r--drivers/staging/rtl8188eu/hal/Hal8188ERateAdaptive.c1
-rw-r--r--drivers/staging/rtl8188eu/include/Hal8188ERateAdaptive.h1
-rw-r--r--drivers/staging/rtl8188eu/include/phy.h1
-rw-r--r--drivers/staging/rtl8188eu/include/rf.h1
-rw-r--r--drivers/staging/rtl8192e/Makefile1
-rw-r--r--drivers/staging/rtl8192e/rtl8192e/Makefile1
-rw-r--r--drivers/staging/rtl8192u/Makefile1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/Makefile1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/dot11d.c1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/dot11d.h1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/rtl819x_BA.h1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/rtl819x_BAProc.c1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/rtl819x_HT.h1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/rtl819x_HTProc.c1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/rtl819x_Qos.h1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/rtl819x_TS.h1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/rtl819x_TSProc.c1
-rw-r--r--drivers/staging/rtl8192u/r8192U_dm.c1
-rw-r--r--drivers/staging/rtl8192u/r8192U_dm.h1
-rw-r--r--drivers/staging/rtl8192u/r819xU_cmdpkt.c1
-rw-r--r--drivers/staging/rtl8192u/r819xU_cmdpkt.h1
-rw-r--r--drivers/staging/rtl8192u/r819xU_firmware.c1
-rw-r--r--drivers/staging/rtl8192u/r819xU_firmware.h1
-rw-r--r--drivers/staging/rtl8192u/r819xU_firmware_img.c1
-rw-r--r--drivers/staging/rtl8192u/r819xU_firmware_img.h1
-rw-r--r--drivers/staging/rtl8192u/r819xU_phy.c1
-rw-r--r--drivers/staging/rtl8192u/r819xU_phy.h1
-rw-r--r--drivers/staging/rtl8192u/r819xU_phyreg.h1
-rw-r--r--drivers/staging/rtl8712/Makefile1
-rw-r--r--drivers/staging/rtl8712/rtl8712_efuse.h1
-rw-r--r--drivers/staging/rtl8712/rtl871x_ioctl.h1
-rw-r--r--drivers/staging/rtl8712/rtl871x_mp_phy_regdef.h1
-rw-r--r--drivers/staging/rtl8712/rtl871x_recv.h1
-rw-r--r--drivers/staging/rtl8723bs/Makefile1
-rw-r--r--drivers/staging/rtl8723bs/core/rtw_mlme.c3
-rw-r--r--drivers/staging/rtl8723bs/hal/Hal8723BReg.h1
-rw-r--r--drivers/staging/rtl8723bs/include/Hal8723BPwrSeq.h1
-rw-r--r--drivers/staging/rtl8723bs/include/rtw_wifi_regd.h1
-rw-r--r--drivers/staging/rtl8723bs/os_dep/rtw_proc.c2
-rw-r--r--drivers/staging/rtl8723bs/os_dep/wifi_regd.c1
-rw-r--r--drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_api_88xx.c4
-rw-r--r--drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c13
-rw-r--r--drivers/staging/rts5208/trace.c1
-rw-r--r--drivers/staging/skein/Makefile1
-rw-r--r--drivers/staging/skein/skein_iv.h1
-rw-r--r--drivers/staging/skein/threefish_api.c1
-rw-r--r--drivers/staging/skein/threefish_api.h1
-rw-r--r--drivers/staging/skein/threefish_block.c1
-rw-r--r--drivers/staging/sm750fb/ddk750_chip.c1
-rw-r--r--drivers/staging/sm750fb/ddk750_chip.h1
-rw-r--r--drivers/staging/sm750fb/ddk750_display.c1
-rw-r--r--drivers/staging/sm750fb/ddk750_display.h1
-rw-r--r--drivers/staging/sm750fb/ddk750_dvi.c1
-rw-r--r--drivers/staging/sm750fb/ddk750_dvi.h1
-rw-r--r--drivers/staging/sm750fb/ddk750_hwi2c.c1
-rw-r--r--drivers/staging/sm750fb/ddk750_hwi2c.h1
-rw-r--r--drivers/staging/sm750fb/ddk750_mode.c1
-rw-r--r--drivers/staging/sm750fb/ddk750_mode.h1
-rw-r--r--drivers/staging/sm750fb/ddk750_power.c1
-rw-r--r--drivers/staging/sm750fb/ddk750_power.h1
-rw-r--r--drivers/staging/sm750fb/ddk750_reg.h1
-rw-r--r--drivers/staging/sm750fb/ddk750_sii164.c1
-rw-r--r--drivers/staging/sm750fb/ddk750_sii164.h1
-rw-r--r--drivers/staging/sm750fb/sm750.h1
-rw-r--r--drivers/staging/sm750fb/sm750_accel.c1
-rw-r--r--drivers/staging/sm750fb/sm750_accel.h1
-rw-r--r--drivers/staging/sm750fb/sm750_cursor.c1
-rw-r--r--drivers/staging/sm750fb/sm750_cursor.h1
-rw-r--r--drivers/staging/sm750fb/sm750_hw.c1
-rw-r--r--drivers/staging/speakup/Makefile1
-rw-r--r--drivers/staging/speakup/devsynth.c1
-rw-r--r--drivers/staging/speakup/i18n.c1
-rw-r--r--drivers/staging/speakup/i18n.h1
-rw-r--r--drivers/staging/speakup/main.c15
-rw-r--r--drivers/staging/speakup/selection.c1
-rw-r--r--drivers/staging/speakup/serialio.h1
-rw-r--r--drivers/staging/speakup/speakup.h1
-rw-r--r--drivers/staging/speakup/speakup_acnt.h1
-rw-r--r--drivers/staging/speakup/speakup_dtlk.h1
-rw-r--r--drivers/staging/speakup/speakupmap.h1
-rw-r--r--drivers/staging/speakup/spk_types.h1
-rw-r--r--drivers/staging/unisys/visorbus/Makefile1
-rw-r--r--drivers/staging/unisys/visorbus/visorchipset.c4
-rw-r--r--drivers/staging/vboxvideo/Makefile1
-rw-r--r--drivers/staging/vc04_services/Makefile1
-rw-r--r--drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c19
-rw-r--r--drivers/staging/vc04_services/bcm2835-camera/Makefile1
-rw-r--r--drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c6
-rw-r--r--drivers/staging/vc04_services/interface/vchiq_arm/vchiq_genversion1
-rw-r--r--drivers/staging/vme/devices/vme_pio2.h1
-rw-r--r--drivers/staging/vme/devices/vme_user.h1
-rw-r--r--drivers/staging/vt6655/Makefile1
-rw-r--r--drivers/staging/vt6656/Makefile1
-rw-r--r--drivers/staging/wilc1000/Makefile1
-rw-r--r--drivers/staging/wilc1000/coreconfigurator.c1
-rw-r--r--drivers/staging/wilc1000/coreconfigurator.h1
-rw-r--r--drivers/staging/wilc1000/host_interface.c1
-rw-r--r--drivers/staging/wilc1000/host_interface.h1
-rw-r--r--drivers/staging/wilc1000/linux_mon.c1
-rw-r--r--drivers/staging/wilc1000/wilc_wfi_cfgoperations.c1
-rw-r--r--drivers/staging/wilc1000/wilc_wfi_cfgoperations.h1
-rw-r--r--drivers/staging/wilc1000/wilc_wfi_netdevice.h1
-rw-r--r--drivers/staging/wilc1000/wilc_wlan.h1
-rw-r--r--drivers/staging/wilc1000/wilc_wlan_cfg.c1
-rw-r--r--drivers/staging/wilc1000/wilc_wlan_cfg.h1
-rw-r--r--drivers/staging/wilc1000/wilc_wlan_if.h1
-rw-r--r--drivers/staging/wlan-ng/Makefile1
-rw-r--r--drivers/staging/wlan-ng/cfg80211.c1
-rw-r--r--drivers/staging/wlan-ng/prism2usb.c1
-rw-r--r--drivers/staging/xgifb/XGI_main.h1
-rw-r--r--drivers/staging/xgifb/XGIfb.h1
-rw-r--r--drivers/staging/xgifb/vb_def.h1
-rw-r--r--drivers/staging/xgifb/vb_init.c1
-rw-r--r--drivers/staging/xgifb/vb_init.h1
-rw-r--r--drivers/staging/xgifb/vb_setmode.c1
-rw-r--r--drivers/staging/xgifb/vb_setmode.h1
-rw-r--r--drivers/staging/xgifb/vb_struct.h1
-rw-r--r--drivers/staging/xgifb/vb_table.h1
-rw-r--r--drivers/staging/xgifb/vb_util.h1
-rw-r--r--drivers/staging/xgifb/vgatypes.h1
-rw-r--r--drivers/target/Makefile1
-rw-r--r--drivers/target/iscsi/Makefile1
-rw-r--r--drivers/target/iscsi/cxgbit/Makefile1
-rw-r--r--drivers/target/iscsi/iscsi_target.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_auth.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_datain_values.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_device.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_erl0.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_erl1.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_erl2.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_login.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_nego.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_nodeattrib.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_parameters.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_seq_pdu_list.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_tmr.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_tpg.h1
-rw-r--r--drivers/target/iscsi/iscsi_target_transport.c1
-rw-r--r--drivers/target/iscsi/iscsi_target_util.h1
-rw-r--r--drivers/target/loopback/tcm_loop.h1
-rw-r--r--drivers/target/sbp/sbp_target.h1
-rw-r--r--drivers/target/target_core_alua.c3
-rw-r--r--drivers/target/target_core_alua.h1
-rw-r--r--drivers/target/target_core_file.c2
-rw-r--r--drivers/target/target_core_file.h1
-rw-r--r--drivers/target/target_core_iblock.h1
-rw-r--r--drivers/target/target_core_internal.h1
-rw-r--r--drivers/target/target_core_pr.c3
-rw-r--r--drivers/target/target_core_pr.h1
-rw-r--r--drivers/target/target_core_pscsi.h1
-rw-r--r--drivers/target/target_core_rd.h1
-rw-r--r--drivers/target/target_core_ua.h1
-rw-r--r--drivers/target/target_core_xcopy.h1
-rw-r--r--drivers/target/tcm_fc/Makefile1
-rw-r--r--drivers/tee/Makefile1
-rw-r--r--drivers/tee/optee/Makefile1
-rw-r--r--drivers/thermal/Makefile1
-rw-r--r--drivers/thermal/int340x_thermal/Makefile1
-rw-r--r--drivers/thermal/int340x_thermal/acpi_thermal_rel.h1
-rw-r--r--drivers/thermal/tegra/Makefile1
-rw-r--r--drivers/thermal/ti-soc-thermal/Makefile1
-rw-r--r--drivers/thunderbolt/cap.c1
-rw-r--r--drivers/thunderbolt/ctl.c1
-rw-r--r--drivers/thunderbolt/ctl.h1
-rw-r--r--drivers/thunderbolt/eeprom.c1
-rw-r--r--drivers/thunderbolt/nhi.h1
-rw-r--r--drivers/thunderbolt/nhi_regs.h1
-rw-r--r--drivers/thunderbolt/path.c1
-rw-r--r--drivers/thunderbolt/switch.c1
-rw-r--r--drivers/thunderbolt/tb.c1
-rw-r--r--drivers/thunderbolt/tb.h1
-rw-r--r--drivers/thunderbolt/tb_regs.h1
-rw-r--r--drivers/thunderbolt/tunnel_pci.c1
-rw-r--r--drivers/thunderbolt/tunnel_pci.h1
-rw-r--r--drivers/tty/Makefile1
-rw-r--r--drivers/tty/hvc/Makefile1
-rw-r--r--drivers/tty/hvc/hvc_irq.c1
-rw-r--r--drivers/tty/hvc/hvc_iucv.c1
-rw-r--r--drivers/tty/hvc/hvsi_lib.c1
-rw-r--r--drivers/tty/ipwireless/hardware.c1
-rw-r--r--drivers/tty/ipwireless/hardware.h1
-rw-r--r--drivers/tty/ipwireless/main.h1
-rw-r--r--drivers/tty/ipwireless/network.c1
-rw-r--r--drivers/tty/ipwireless/network.h1
-rw-r--r--drivers/tty/ipwireless/setup_protocol.h1
-rw-r--r--drivers/tty/ipwireless/tty.c1
-rw-r--r--drivers/tty/ipwireless/tty.h1
-rw-r--r--drivers/tty/moxa.h1
-rw-r--r--drivers/tty/mxser.c16
-rw-r--r--drivers/tty/mxser.h1
-rw-r--r--drivers/tty/pty.c1
-rw-r--r--drivers/tty/rocket.h1
-rw-r--r--drivers/tty/rocket_int.h1
-rw-r--r--drivers/tty/serial/8250/Makefile1
-rw-r--r--drivers/tty/serial/Makefile1
-rw-r--r--drivers/tty/serial/amba-pl011.h1
-rw-r--r--drivers/tty/serial/apbuart.h1
-rw-r--r--drivers/tty/serial/bcm63xx_uart.c5
-rw-r--r--drivers/tty/serial/cpm_uart/cpm_uart_cpm1.h1
-rw-r--r--drivers/tty/serial/cpm_uart/cpm_uart_cpm2.h1
-rw-r--r--drivers/tty/serial/crisv10.c1
-rw-r--r--drivers/tty/serial/crisv10.h1
-rw-r--r--drivers/tty/serial/dz.h1
-rw-r--r--drivers/tty/serial/etraxfs-uart.c1
-rw-r--r--drivers/tty/serial/fsl_lpuart.c40
-rw-r--r--drivers/tty/serial/ip22zilog.h1
-rw-r--r--drivers/tty/serial/pch_uart.c2
-rw-r--r--drivers/tty/serial/pmac_zilog.h1
-rw-r--r--drivers/tty/serial/sccnxp.c13
-rw-r--r--drivers/tty/serial/sh-sci.h1
-rw-r--r--drivers/tty/serial/sunsab.h1
-rw-r--r--drivers/tty/serial/sunzilog.h1
-rw-r--r--drivers/tty/serial/zs.h1
-rw-r--r--drivers/tty/sysrq.c1
-rw-r--r--drivers/tty/tty_ldisc.c11
-rw-r--r--drivers/tty/tty_mutex.c1
-rw-r--r--drivers/tty/vt/Makefile1
-rw-r--r--drivers/tty/vt/selection.c1
-rw-r--r--drivers/tty/vt/vc_screen.c1
-rw-r--r--drivers/tty/vt/vt_ioctl.c1
-rw-r--r--drivers/uio/Makefile1
-rw-r--r--drivers/usb/Makefile1
-rw-r--r--drivers/usb/atm/Makefile1
-rw-r--r--drivers/usb/chipidea/Makefile1
-rw-r--r--drivers/usb/chipidea/debug.c1
-rw-r--r--drivers/usb/chipidea/host.h1
-rw-r--r--drivers/usb/class/cdc-acm.c3
-rw-r--r--drivers/usb/class/cdc-acm.h1
-rw-r--r--drivers/usb/class/cdc-wdm.c4
-rw-r--r--drivers/usb/common/Makefile1
-rw-r--r--drivers/usb/core/Makefile1
-rw-r--r--drivers/usb/core/config.c22
-rw-r--r--drivers/usb/core/devio.c5
-rw-r--r--drivers/usb/core/hub.c13
-rw-r--r--drivers/usb/core/message.c4
-rw-r--r--drivers/usb/core/quirks.c4
-rw-r--r--drivers/usb/dwc2/Makefile1
-rw-r--r--drivers/usb/dwc3/Makefile1
-rw-r--r--drivers/usb/dwc3/dwc3-of-simple.c1
-rw-r--r--drivers/usb/dwc3/ep0.c7
-rw-r--r--drivers/usb/gadget/Makefile1
-rw-r--r--drivers/usb/gadget/composite.c5
-rw-r--r--drivers/usb/gadget/configfs.c15
-rw-r--r--drivers/usb/gadget/configfs.h12
-rw-r--r--drivers/usb/gadget/function/Makefile1
-rw-r--r--drivers/usb/gadget/function/f_fs.c17
-rw-r--r--drivers/usb/gadget/function/f_mass_storage.c48
-rw-r--r--drivers/usb/gadget/function/f_mass_storage.h15
-rw-r--r--drivers/usb/gadget/function/f_printer.c7
-rw-r--r--drivers/usb/gadget/function/f_rndis.c12
-rw-r--r--drivers/usb/gadget/function/g_zero.h1
-rw-r--r--drivers/usb/gadget/function/storage_common.h1
-rw-r--r--drivers/usb/gadget/function/tcm.h1
-rw-r--r--drivers/usb/gadget/function/u_fs.h1
-rw-r--r--drivers/usb/gadget/function/u_rndis.h1
-rw-r--r--drivers/usb/gadget/function/uvc_queue.h1
-rw-r--r--drivers/usb/gadget/legacy/Makefile1
-rw-r--r--drivers/usb/gadget/legacy/inode.c46
-rw-r--r--drivers/usb/gadget/legacy/mass_storage.c26
-rw-r--r--drivers/usb/gadget/udc/Kconfig1
-rw-r--r--drivers/usb/gadget/udc/Makefile1
-rw-r--r--drivers/usb/gadget/udc/atmel_usba_udc.c4
-rw-r--r--drivers/usb/gadget/udc/bdc/Makefile1
-rw-r--r--drivers/usb/gadget/udc/core.c3
-rw-r--r--drivers/usb/gadget/udc/dummy_hcd.c74
-rw-r--r--drivers/usb/gadget/udc/omap_udc.h1
-rw-r--r--drivers/usb/gadget/udc/renesas_usb3.c19
-rw-r--r--drivers/usb/host/Makefile1
-rw-r--r--drivers/usb/host/fotg210.h1
-rw-r--r--drivers/usb/host/isp116x.h1
-rw-r--r--drivers/usb/host/isp1362.h1
-rw-r--r--drivers/usb/host/oxu210hp.h1
-rw-r--r--drivers/usb/host/pci-quirks.c10
-rw-r--r--drivers/usb/host/pci-quirks.h1
-rw-r--r--drivers/usb/host/sl811.h1
-rw-r--r--drivers/usb/host/uhci-debug.c1
-rw-r--r--drivers/usb/host/uhci-grlib.c1
-rw-r--r--drivers/usb/host/uhci-hcd.h1
-rw-r--r--drivers/usb/host/uhci-hub.c1
-rw-r--r--drivers/usb/host/uhci-pci.c1
-rw-r--r--drivers/usb/host/uhci-platform.c1
-rw-r--r--drivers/usb/host/uhci-q.c1
-rw-r--r--drivers/usb/host/xhci-hub.c37
-rw-r--r--drivers/usb/host/xhci-pci.c12
-rw-r--r--drivers/usb/host/xhci-plat.c16
-rw-r--r--drivers/usb/host/xhci-ring.c21
-rw-r--r--drivers/usb/host/xhci.c6
-rw-r--r--drivers/usb/host/xhci.h10
-rw-r--r--drivers/usb/image/microtek.h1
-rw-r--r--drivers/usb/isp1760/isp1760-hcd.c1
-rw-r--r--drivers/usb/isp1760/isp1760-hcd.h1
-rw-r--r--drivers/usb/isp1760/isp1760-if.c1
-rw-r--r--drivers/usb/misc/Makefile1
-rw-r--r--drivers/usb/misc/usbtest.c10
-rw-r--r--drivers/usb/mon/mon_bin.c1
-rw-r--r--drivers/usb/mon/mon_stat.c1
-rw-r--r--drivers/usb/mon/mon_text.c1
-rw-r--r--drivers/usb/mon/usb_mon.h1
-rw-r--r--drivers/usb/mtu3/Makefile1
-rw-r--r--drivers/usb/musb/Makefile1
-rw-r--r--drivers/usb/musb/cppi_dma.h1
-rw-r--r--drivers/usb/musb/musb_core.c21
-rw-r--r--drivers/usb/musb/musb_core.h2
-rw-r--r--drivers/usb/musb/musb_cppi41.c94
-rw-r--r--drivers/usb/musb/sunxi.c2
-rw-r--r--drivers/usb/phy/Makefile1
-rw-r--r--drivers/usb/phy/phy-am335x-control.h1
-rw-r--r--drivers/usb/phy/phy-generic.h1
-rw-r--r--drivers/usb/phy/phy-tegra-usb.c17
-rw-r--r--drivers/usb/renesas_usbhs/Makefile1
-rw-r--r--drivers/usb/renesas_usbhs/fifo.c23
-rw-r--r--drivers/usb/serial/Makefile1
-rw-r--r--drivers/usb/serial/console.c3
-rw-r--r--drivers/usb/serial/cp210x.c13
-rw-r--r--drivers/usb/serial/cypress_m8.h1
-rw-r--r--drivers/usb/serial/ezusb_convert.pl1
-rw-r--r--drivers/usb/serial/ftdi_sio.c2
-rw-r--r--drivers/usb/serial/ftdi_sio.h1
-rw-r--r--drivers/usb/serial/ftdi_sio_ids.h8
-rw-r--r--drivers/usb/serial/kl5kusb105.h1
-rw-r--r--drivers/usb/serial/kobil_sct.h1
-rw-r--r--drivers/usb/serial/metro-usb.c1
-rw-r--r--drivers/usb/serial/option.c2
-rw-r--r--drivers/usb/serial/qcserial.c4
-rw-r--r--drivers/usb/serial/usb-wwan.h1
-rw-r--r--drivers/usb/storage/Makefile1
-rw-r--r--drivers/usb/storage/option_ms.h1
-rw-r--r--drivers/usb/storage/sierra_ms.c1
-rw-r--r--drivers/usb/storage/sierra_ms.h1
-rw-r--r--drivers/usb/storage/transport.c14
-rw-r--r--drivers/usb/storage/uas-detect.h16
-rw-r--r--drivers/usb/storage/uas.c10
-rw-r--r--drivers/usb/storage/unusual_devs.h7
-rw-r--r--drivers/usb/typec/ucsi/Makefile1
-rw-r--r--drivers/usb/typec/ucsi/debug.h1
-rw-r--r--drivers/usb/typec/ucsi/trace.h1
-rw-r--r--drivers/usb/typec/ucsi/ucsi.h1
-rw-r--r--drivers/usb/usbip/Makefile1
-rw-r--r--drivers/usb/wusbcore/Makefile1
-rw-r--r--drivers/uwb/Makefile1
-rw-r--r--drivers/uwb/hwa-rc.c2
-rw-r--r--drivers/uwb/i1480/dfu/Makefile1
-rw-r--r--drivers/uwb/uwbd.c12
-rw-r--r--drivers/vfio/Makefile1
-rw-r--r--drivers/vfio/platform/Makefile1
-rw-r--r--drivers/vfio/platform/reset/Makefile1
-rw-r--r--drivers/vhost/Makefile1
-rw-r--r--drivers/vhost/test.h1
-rw-r--r--drivers/vhost/vhost.h1
-rw-r--r--drivers/video/Makefile1
-rw-r--r--drivers/video/backlight/Makefile1
-rw-r--r--drivers/video/backlight/kb3886_bl.c2
-rw-r--r--drivers/video/console/Kconfig2
-rw-r--r--drivers/video/console/Makefile9
-rw-r--r--drivers/video/console/vgacon.c5
-rw-r--r--drivers/video/fbdev/68328fb.c2
-rw-r--r--drivers/video/fbdev/Kconfig2
-rw-r--r--drivers/video/fbdev/Makefile1
-rw-r--r--drivers/video/fbdev/amba-clcd-nomadik.h1
-rw-r--r--drivers/video/fbdev/amba-clcd-versatile.h1
-rw-r--r--drivers/video/fbdev/amba-clcd.c2
-rw-r--r--drivers/video/fbdev/arkfb.c2
-rw-r--r--drivers/video/fbdev/asiliantfb.c2
-rw-r--r--drivers/video/fbdev/atafb.h1
-rw-r--r--drivers/video/fbdev/atafb_utils.h1
-rw-r--r--drivers/video/fbdev/atmel_lcdfb.c2
-rw-r--r--drivers/video/fbdev/aty/Makefile1
-rw-r--r--drivers/video/fbdev/aty/ati_ids.h1
-rw-r--r--drivers/video/fbdev/aty/aty128fb.c4
-rw-r--r--drivers/video/fbdev/aty/atyfb.h1
-rw-r--r--drivers/video/fbdev/aty/atyfb_base.c6
-rw-r--r--drivers/video/fbdev/aty/mach64_accel.c1
-rw-r--r--drivers/video/fbdev/aty/mach64_ct.c1
-rw-r--r--drivers/video/fbdev/aty/mach64_cursor.c1
-rw-r--r--drivers/video/fbdev/aty/mach64_gx.c1
-rw-r--r--drivers/video/fbdev/aty/radeon_accel.c1
-rw-r--r--drivers/video/fbdev/aty/radeon_base.c6
-rw-r--r--drivers/video/fbdev/aty/radeon_i2c.c1
-rw-r--r--drivers/video/fbdev/aty/radeon_monitor.c1
-rw-r--r--drivers/video/fbdev/aty/radeon_pm.c1
-rw-r--r--drivers/video/fbdev/aty/radeonfb.h1
-rw-r--r--drivers/video/fbdev/bfin-lq035q1-fb.c2
-rw-r--r--drivers/video/fbdev/bw2.c4
-rw-r--r--drivers/video/fbdev/carminefb.h1
-rw-r--r--drivers/video/fbdev/carminefb_regs.h1
-rw-r--r--drivers/video/fbdev/cg14.c4
-rw-r--r--drivers/video/fbdev/cg3.c4
-rw-r--r--drivers/video/fbdev/cg6.c4
-rw-r--r--drivers/video/fbdev/chipsfb.c4
-rw-r--r--drivers/video/fbdev/cobalt_lcdfb.c2
-rw-r--r--drivers/video/fbdev/core/Makefile15
-rw-r--r--drivers/video/fbdev/core/bitblit.c (renamed from drivers/video/console/bitblit.c)8
-rw-r--r--drivers/video/fbdev/core/fb_draw.h1
-rw-r--r--drivers/video/fbdev/core/fbcon.c (renamed from drivers/video/console/fbcon.c)37
-rw-r--r--drivers/video/fbdev/core/fbcon.h (renamed from drivers/video/console/fbcon.h)9
-rw-r--r--drivers/video/fbdev/core/fbcon_ccw.c (renamed from drivers/video/console/fbcon_ccw.c)8
-rw-r--r--drivers/video/fbdev/core/fbcon_cw.c (renamed from drivers/video/console/fbcon_cw.c)8
-rw-r--r--drivers/video/fbdev/core/fbcon_dmi_quirks.c145
-rw-r--r--drivers/video/fbdev/core/fbcon_rotate.c (renamed from drivers/video/console/fbcon_rotate.c)4
-rw-r--r--drivers/video/fbdev/core/fbcon_rotate.h (renamed from drivers/video/console/fbcon_rotate.h)0
-rw-r--r--drivers/video/fbdev/core/fbcon_ud.c (renamed from drivers/video/console/fbcon_ud.c)8
-rw-r--r--drivers/video/fbdev/core/fbmem.c12
-rw-r--r--drivers/video/fbdev/core/fbmon.c4
-rw-r--r--drivers/video/fbdev/core/softcursor.c (renamed from drivers/video/console/softcursor.c)4
-rw-r--r--drivers/video/fbdev/core/tileblit.c (renamed from drivers/video/console/tileblit.c)7
-rw-r--r--drivers/video/fbdev/cyber2000fb.c2
-rw-r--r--drivers/video/fbdev/da8xx-fb.c2
-rw-r--r--drivers/video/fbdev/dnfb.c2
-rw-r--r--drivers/video/fbdev/efifb.c1
-rw-r--r--drivers/video/fbdev/fb-puv3.c2
-rw-r--r--drivers/video/fbdev/ffb.c4
-rw-r--r--drivers/video/fbdev/fm2fb.c2
-rw-r--r--drivers/video/fbdev/geode/Makefile1
-rw-r--r--drivers/video/fbdev/geode/gxfb_core.c2
-rw-r--r--drivers/video/fbdev/grvga.c2
-rw-r--r--drivers/video/fbdev/i810/Makefile1
-rw-r--r--drivers/video/fbdev/i810/i810_main.c4
-rw-r--r--drivers/video/fbdev/imsttfb.c2
-rw-r--r--drivers/video/fbdev/intelfb/Makefile1
-rw-r--r--drivers/video/fbdev/intelfb/intelfb.h1
-rw-r--r--drivers/video/fbdev/intelfb/intelfbdrv.c2
-rw-r--r--drivers/video/fbdev/kyro/fbdev.c2
-rw-r--r--drivers/video/fbdev/leo.c4
-rw-r--r--drivers/video/fbdev/matrox/g450_pll.h1
-rw-r--r--drivers/video/fbdev/matrox/matroxfb_DAC1064.h1
-rw-r--r--drivers/video/fbdev/matrox/matroxfb_Ti3026.h1
-rw-r--r--drivers/video/fbdev/matrox/matroxfb_accel.h1
-rw-r--r--drivers/video/fbdev/matrox/matroxfb_base.c14
-rw-r--r--drivers/video/fbdev/matrox/matroxfb_base.h1
-rw-r--r--drivers/video/fbdev/matrox/matroxfb_crtc2.h1
-rw-r--r--drivers/video/fbdev/matrox/matroxfb_g450.h1
-rw-r--r--drivers/video/fbdev/matrox/matroxfb_maven.h1
-rw-r--r--drivers/video/fbdev/matrox/matroxfb_misc.h1
-rw-r--r--drivers/video/fbdev/maxinefb.c2
-rw-r--r--drivers/video/fbdev/mb862xx/mb862xx_reg.h1
-rw-r--r--drivers/video/fbdev/mb862xx/mb862xxfb.h1
-rw-r--r--drivers/video/fbdev/mb862xx/mb862xxfb_accel.h1
-rw-r--r--drivers/video/fbdev/mb862xx/mb862xxfbdrv.c2
-rw-r--r--drivers/video/fbdev/mbx/mbxdebugfs.c1
-rw-r--r--drivers/video/fbdev/mbx/mbxfb.c4
-rw-r--r--drivers/video/fbdev/mbx/reg_bits.h1
-rw-r--r--drivers/video/fbdev/mbx/regs.h1
-rw-r--r--drivers/video/fbdev/mmp/panel/Kconfig1
-rw-r--r--drivers/video/fbdev/neofb.c2
-rw-r--r--drivers/video/fbdev/nvidia/Makefile1
-rw-r--r--drivers/video/fbdev/nvidia/nv_proto.h1
-rw-r--r--drivers/video/fbdev/nvidia/nv_type.h1
-rw-r--r--drivers/video/fbdev/nvidia/nvidia.c2
-rw-r--r--drivers/video/fbdev/offb.c10
-rw-r--r--drivers/video/fbdev/omap/Makefile1
-rw-r--r--drivers/video/fbdev/omap/lcd_mipid.c2
-rw-r--r--drivers/video/fbdev/omap/lcdc.h1
-rw-r--r--drivers/video/fbdev/omap2/omapfb/Makefile1
-rw-r--r--drivers/video/fbdev/omap2/omapfb/displays/Makefile1
-rw-r--r--drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c2
-rw-r--r--drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c2
-rw-r--r--drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c2
-rw-r--r--drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c2
-rw-r--r--drivers/video/fbdev/omap2/omapfb/dss/Kconfig1
-rw-r--r--drivers/video/fbdev/omap2/omapfb/dss/Makefile1
-rw-r--r--drivers/video/fbdev/omap2/omapfb/dss/dss-of.c3
-rw-r--r--drivers/video/fbdev/omap2/omapfb/dss/hdmi_common.c1
-rw-r--r--drivers/video/fbdev/p9100.c4
-rw-r--r--drivers/video/fbdev/pm2fb.c2
-rw-r--r--drivers/video/fbdev/pm3fb.c2
-rw-r--r--drivers/video/fbdev/pmag-aa-fb.c4
-rw-r--r--drivers/video/fbdev/pmag-ba-fb.c4
-rw-r--r--drivers/video/fbdev/pmagb-b-fb.c4
-rw-r--r--drivers/video/fbdev/ps3fb.c2
-rw-r--r--drivers/video/fbdev/pvr2fb.c4
-rw-r--r--drivers/video/fbdev/pxa168fb.h1
-rw-r--r--drivers/video/fbdev/pxa3xx-gcu.c4
-rw-r--r--drivers/video/fbdev/pxa3xx-gcu.h1
-rw-r--r--drivers/video/fbdev/q40fb.c2
-rw-r--r--drivers/video/fbdev/riva/Makefile1
-rw-r--r--drivers/video/fbdev/riva/fbdev.c2
-rw-r--r--drivers/video/fbdev/riva/nv_type.h1
-rw-r--r--drivers/video/fbdev/riva/rivafb.h1
-rw-r--r--drivers/video/fbdev/s3fb.c2
-rw-r--r--drivers/video/fbdev/savage/savagefb_driver.c2
-rw-r--r--drivers/video/fbdev/sbuslib.c1
-rw-r--r--drivers/video/fbdev/sbuslib.h1
-rw-r--r--drivers/video/fbdev/sh_mobile_lcdcfb.h1
-rw-r--r--drivers/video/fbdev/sis/init301.c15
-rw-r--r--drivers/video/fbdev/skeletonfb.c4
-rw-r--r--drivers/video/fbdev/sm501fb.c2
-rw-r--r--drivers/video/fbdev/sm712fb.c17
-rw-r--r--drivers/video/fbdev/smscufx.c2
-rw-r--r--drivers/video/fbdev/sticore.h1
-rw-r--r--drivers/video/fbdev/sunxvr1000.c10
-rw-r--r--drivers/video/fbdev/sunxvr2500.c2
-rw-r--r--drivers/video/fbdev/sunxvr500.c2
-rw-r--r--drivers/video/fbdev/tcx.c4
-rw-r--r--drivers/video/fbdev/tdfxfb.c2
-rw-r--r--drivers/video/fbdev/tridentfb.c2
-rw-r--r--drivers/video/fbdev/udlfb.c5
-rw-r--r--drivers/video/fbdev/uvesafb.c2
-rw-r--r--drivers/video/fbdev/vermilion/vermilion.c4
-rw-r--r--drivers/video/fbdev/via/Makefile1
-rw-r--r--drivers/video/fbdev/via/via-core.c2
-rw-r--r--drivers/video/fbdev/vt8623fb.c4
-rw-r--r--drivers/video/fbdev/wmt_ge_rops.h1
-rw-r--r--drivers/video/fbdev/xilinxfb.c62
-rw-r--r--drivers/video/logo/Makefile1
-rw-r--r--drivers/video/of_display_timing.c41
-rw-r--r--drivers/video/of_videomode.c2
-rw-r--r--drivers/virtio/Makefile1
-rw-r--r--drivers/vme/vme_bridge.h1
-rw-r--r--drivers/w1/masters/Makefile1
-rw-r--r--drivers/w1/slaves/Makefile1
-rw-r--r--drivers/watchdog/Makefile1
-rw-r--r--drivers/watchdog/asm9260_wdt.c4
-rw-r--r--drivers/watchdog/aspeed_wdt.c132
-rw-r--r--drivers/watchdog/bcm7038_wdt.c4
-rw-r--r--drivers/watchdog/cadence_wdt.c6
-rw-r--r--drivers/watchdog/coh901327_wdt.c2
-rw-r--r--drivers/watchdog/da9063_wdt.c67
-rw-r--r--drivers/watchdog/diag288_wdt.c2
-rw-r--r--drivers/watchdog/iTCO_vendor.h1
-rw-r--r--drivers/watchdog/iTCO_wdt.c22
-rw-r--r--drivers/watchdog/it87_wdt.c2
-rw-r--r--drivers/watchdog/lantiq_wdt.c74
-rw-r--r--drivers/watchdog/max77620_wdt.c2
-rw-r--r--drivers/watchdog/mei_wdt.c2
-rw-r--r--drivers/watchdog/meson_wdt.c2
-rw-r--r--drivers/watchdog/mt7621_wdt.c4
-rw-r--r--drivers/watchdog/octeon-wdt-main.c354
-rw-r--r--drivers/watchdog/octeon-wdt-nmi.S42
-rw-r--r--drivers/watchdog/of_xilinx_wdt.c83
-rw-r--r--drivers/watchdog/pcwd_usb.c2
-rw-r--r--drivers/watchdog/qcom-wdt.c2
-rw-r--r--drivers/watchdog/renesas_wdt.c80
-rw-r--r--drivers/watchdog/rt2880_wdt.c4
-rw-r--r--drivers/watchdog/sc1200wdt.c2
-rw-r--r--drivers/watchdog/sp5100_tco.h1
-rw-r--r--drivers/watchdog/sp805_wdt.c2
-rw-r--r--drivers/watchdog/stm32_iwdg.c2
-rw-r--r--drivers/watchdog/ts72xx_wdt.c2
-rw-r--r--drivers/watchdog/w83627hf_wdt.c2
-rw-r--r--drivers/watchdog/watchdog_pretimeout.h1
-rw-r--r--drivers/watchdog/ziirave_wdt.c2
-rw-r--r--drivers/watchdog/zx2967_wdt.c2
-rw-r--r--drivers/xen/Makefile1
-rw-r--r--drivers/xen/biomerge.c1
-rw-r--r--drivers/xen/cpu_hotplug.c1
-rw-r--r--drivers/xen/events/events_2l.c1
-rw-r--r--drivers/xen/gntalloc.c2
-rw-r--r--drivers/xen/gntdev.c2
-rw-r--r--drivers/xen/time.c1
-rw-r--r--drivers/xen/xen-balloon.c19
-rw-r--r--drivers/xen/xen-pciback/Makefile1
-rw-r--r--drivers/xen/xen-pciback/conf_space.c1
-rw-r--r--drivers/xen/xen-pciback/conf_space.h1
-rw-r--r--drivers/xen/xen-pciback/conf_space_capability.c1
-rw-r--r--drivers/xen/xen-pciback/conf_space_header.c12
-rw-r--r--drivers/xen/xen-pciback/conf_space_quirks.c1
-rw-r--r--drivers/xen/xen-pciback/conf_space_quirks.h1
-rw-r--r--drivers/xen/xen-pciback/passthrough.c1
-rw-r--r--drivers/xen/xen-pciback/pciback.h1
-rw-r--r--drivers/xen/xen-pciback/pciback_ops.c1
-rw-r--r--drivers/xen/xen-pciback/vpci.c1
-rw-r--r--drivers/xen/xen-pciback/xenbus.c1
-rw-r--r--drivers/xen/xen-selfballoon.c1
-rw-r--r--drivers/xen/xenbus/Makefile1
-rw-r--r--drivers/xen/xenbus/xenbus_client.c130
-rw-r--r--drivers/xen/xenbus/xenbus_dev_backend.c1
-rw-r--r--drivers/xen/xenfs/xenfs.h1
-rw-r--r--drivers/xen/xenfs/xenstored.c1
-rw-r--r--drivers/xen/xenfs/xensyms.c1
-rw-r--r--drivers/zorro/Makefile1
-rw-r--r--drivers/zorro/gen-devlist.c1
-rw-r--r--drivers/zorro/names.c1
-rw-r--r--drivers/zorro/proc.c1
-rw-r--r--drivers/zorro/zorro.h1
-rw-r--r--firmware/3com/typhoon.bin.ihex2819
-rw-r--r--firmware/Makefile180
-rw-r--r--firmware/README.AddingFirmware45
-rw-r--r--firmware/WHENCE854
-rw-r--r--firmware/acenic/tg1.bin.ihex4573
-rw-r--r--firmware/acenic/tg2.bin.ihex4844
-rw-r--r--firmware/adaptec/starfire_rx.bin.ihex53
-rw-r--r--firmware/adaptec/starfire_tx.bin.ihex53
-rw-r--r--firmware/advansys/3550.bin.ihex317
-rw-r--r--firmware/advansys/38C0800.bin.ihex336
-rw-r--r--firmware/advansys/38C1600.bin.ihex398
-rw-r--r--firmware/advansys/mcode.bin.ihex147
-rw-r--r--firmware/atmsar11.HEX204
-rw-r--r--firmware/av7110/Boot.S109
-rw-r--r--firmware/av7110/bootcode.bin.ihex15
-rw-r--r--firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex5818
-rw-r--r--firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex6512
-rw-r--r--firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex366
-rw-r--r--firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex392
-rw-r--r--firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex425
-rw-r--r--firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex9484
-rw-r--r--firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex13192
-rw-r--r--firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex15473
-rw-r--r--firmware/cis/.gitignore1
-rw-r--r--firmware/cis/3CCFEM556.cis.ihex13
-rw-r--r--firmware/cis/3CXEM556.cis.ihex13
-rw-r--r--firmware/cis/COMpad2.cis.ihex11
-rw-r--r--firmware/cis/COMpad4.cis.ihex9
-rw-r--r--firmware/cis/DP83903.cis.ihex14
-rw-r--r--firmware/cis/LA-PCM.cis.ihex20
-rw-r--r--firmware/cis/MT5634ZLX.cis.ihex11
-rw-r--r--firmware/cis/NE2K.cis.ihex8
-rw-r--r--firmware/cis/PCMLM28.cis.ihex18
-rw-r--r--firmware/cis/PE-200.cis.ihex9
-rw-r--r--firmware/cis/PE520.cis.ihex9
-rw-r--r--firmware/cis/RS-COM-2P.cis.ihex10
-rw-r--r--firmware/cis/SW_555_SER.cis.ihex12
-rw-r--r--firmware/cis/SW_7xx_SER.cis.ihex13
-rw-r--r--firmware/cis/SW_8xx_SER.cis.ihex13
-rw-r--r--firmware/cis/tamarack.cis.ihex10
-rw-r--r--firmware/cpia2/stv0672_vp4.bin.ihex73
-rw-r--r--firmware/cxgb3/ael2005_opt_edc.bin.ihex69
-rw-r--r--firmware/cxgb3/ael2005_twx_edc.bin.ihex93
-rw-r--r--firmware/cxgb3/ael2020_twx_edc.bin.ihex100
-rw-r--r--firmware/cxgb3/t3b_psram-1.1.0.bin.ihex162
-rw-r--r--firmware/cxgb3/t3c_psram-1.1.0.bin.ihex162
-rw-r--r--firmware/dsp56k/bootstrap.asm98
-rw-r--r--firmware/dsp56k/bootstrap.bin.ihex26
-rw-r--r--firmware/e100/d101m_ucode.bin.ihex38
-rw-r--r--firmware/e100/d101s_ucode.bin.ihex38
-rw-r--r--firmware/e100/d102e_ucode.bin.ihex38
-rw-r--r--firmware/edgeport/boot.H1629
-rw-r--r--firmware/edgeport/boot2.H1628
-rw-r--r--firmware/edgeport/down.H1629
-rw-r--r--firmware/edgeport/down2.H1629
-rw-r--r--firmware/edgeport/down3.bin.ihex815
-rw-r--r--firmware/emi26/bitstream.HEX4391
-rw-r--r--firmware/emi26/firmware.HEX1261
-rw-r--r--firmware/emi26/loader.HEX116
-rw-r--r--firmware/emi62/bitstream.HEX6107
-rw-r--r--firmware/emi62/loader.HEX107
-rw-r--r--firmware/emi62/midi.HEX1266
-rw-r--r--firmware/emi62/spdif.HEX1257
-rw-r--r--firmware/ess/maestro3_assp_kernel.fw.ihex120
-rw-r--r--firmware/ess/maestro3_assp_minisrc.fw.ihex51
-rw-r--r--firmware/ihex2fw.c281
-rw-r--r--firmware/kaweth/new_code.bin.ihex206
-rw-r--r--firmware/kaweth/new_code_fix.bin.ihex40
-rw-r--r--firmware/kaweth/trigger_code.bin.ihex13
-rw-r--r--firmware/kaweth/trigger_code_fix.bin.ihex3
-rw-r--r--firmware/keyspan/mpr.HEX104
-rw-r--r--firmware/keyspan/usa18x.HEX141
-rw-r--r--firmware/keyspan/usa19.HEX101
-rw-r--r--firmware/keyspan/usa19qi.HEX101
-rw-r--r--firmware/keyspan/usa19qw.HEX142
-rw-r--r--firmware/keyspan/usa19w.HEX141
-rw-r--r--firmware/keyspan/usa28.HEX148
-rw-r--r--firmware/keyspan/usa28x.HEX141
-rw-r--r--firmware/keyspan/usa28xa.HEX141
-rw-r--r--firmware/keyspan/usa28xb.HEX142
-rw-r--r--firmware/keyspan/usa49w.HEX145
-rw-r--r--firmware/keyspan/usa49wlc.HEX153
-rw-r--r--firmware/keyspan_pda/keyspan_pda.HEX83
-rw-r--r--firmware/keyspan_pda/keyspan_pda.S1124
-rw-r--r--firmware/keyspan_pda/xircom_pgs.HEX87
-rw-r--r--firmware/keyspan_pda/xircom_pgs.S1192
-rw-r--r--firmware/korg/k1212.dsp.ihex987
-rw-r--r--firmware/matrox/g200_warp.H1628
-rw-r--r--firmware/matrox/g400_warp.H1644
-rw-r--r--firmware/mts_cdma.fw.ihex867
-rw-r--r--firmware/mts_edge.fw.ihex881
-rw-r--r--firmware/mts_gsm.fw.ihex867
-rw-r--r--firmware/myricom/lanai.bin.ihex4771
-rw-r--r--firmware/ositech/Xilinx7OD.bin.ihex177
-rw-r--r--firmware/qlogic/1040.bin.ihex2111
-rw-r--r--firmware/qlogic/12160.bin.ihex1771
-rw-r--r--firmware/qlogic/1280.bin.ihex2008
-rw-r--r--firmware/qlogic/isp1000.bin.ihex1158
-rw-r--r--firmware/qlogic/sd7220.fw.ihex513
-rw-r--r--firmware/r128/r128_cce.bin.ihex129
-rw-r--r--firmware/radeon/R100_cp.bin.ihex130
-rw-r--r--firmware/radeon/R200_cp.bin.ihex130
-rw-r--r--firmware/radeon/R300_cp.bin.ihex130
-rw-r--r--firmware/radeon/R420_cp.bin.ihex130
-rw-r--r--firmware/radeon/R520_cp.bin.ihex130
-rw-r--r--firmware/radeon/R600_me.bin.ihex1345
-rw-r--r--firmware/radeon/R600_pfp.bin.ihex145
-rw-r--r--firmware/radeon/RS600_cp.bin.ihex130
-rw-r--r--firmware/radeon/RS690_cp.bin.ihex130
-rw-r--r--firmware/radeon/RS780_me.bin.ihex1345
-rw-r--r--firmware/radeon/RS780_pfp.bin.ihex145
-rw-r--r--firmware/radeon/RV610_me.bin.ihex1345
-rw-r--r--firmware/radeon/RV610_pfp.bin.ihex145
-rw-r--r--firmware/radeon/RV620_me.bin.ihex1345
-rw-r--r--firmware/radeon/RV620_pfp.bin.ihex145
-rw-r--r--firmware/radeon/RV630_me.bin.ihex1345
-rw-r--r--firmware/radeon/RV630_pfp.bin.ihex145
-rw-r--r--firmware/radeon/RV635_me.bin.ihex1345
-rw-r--r--firmware/radeon/RV635_pfp.bin.ihex145
-rw-r--r--firmware/radeon/RV670_me.bin.ihex1345
-rw-r--r--firmware/radeon/RV670_pfp.bin.ihex145
-rw-r--r--firmware/radeon/RV710_me.bin.ihex341
-rw-r--r--firmware/radeon/RV710_pfp.bin.ihex213
-rw-r--r--firmware/radeon/RV730_me.bin.ihex341
-rw-r--r--firmware/radeon/RV730_pfp.bin.ihex213
-rw-r--r--firmware/radeon/RV770_me.bin.ihex341
-rw-r--r--firmware/radeon/RV770_pfp.bin.ihex213
-rw-r--r--firmware/sb16/alaw_main.csp.ihex87
-rw-r--r--firmware/sb16/ima_adpcm_capture.csp.ihex121
-rw-r--r--firmware/sb16/ima_adpcm_init.csp.ihex70
-rw-r--r--firmware/sb16/ima_adpcm_playback.csp.ihex122
-rw-r--r--firmware/sb16/mulaw_main.csp.ihex84
-rw-r--r--firmware/sun/cassini.bin.ihex143
-rw-r--r--firmware/tehuti/bdx.bin.ihex2678
-rw-r--r--firmware/ti_3410.fw.ihex862
-rw-r--r--firmware/ti_5052.fw.ihex862
-rw-r--r--firmware/tigon/tg3.bin.ihex175
-rw-r--r--firmware/tigon/tg3_tso.bin.ihex446
-rw-r--r--firmware/tigon/tg3_tso5.bin.ihex252
-rw-r--r--firmware/ttusb-budget/dspbootcode.bin.ihex820
-rw-r--r--firmware/vicam/firmware.H167
-rw-r--r--firmware/whiteheat.HEX1097
-rw-r--r--firmware/whiteheat_loader.HEX314
-rw-r--r--firmware/whiteheat_loader_debug.HEX403
-rw-r--r--firmware/yam/1200.bin.ihex342
-rw-r--r--firmware/yam/9600.bin.ihex342
-rw-r--r--firmware/yamaha/ds1_ctrl.fw.ihex769
-rw-r--r--firmware/yamaha/ds1_dsp.fw.ihex9
-rw-r--r--firmware/yamaha/ds1e_ctrl.fw.ihex769
-rw-r--r--firmware/yamaha/yss225_registers.bin.ihex998
-rw-r--r--fs/9p/Makefile1
-rw-r--r--fs/9p/vfs_addr.c10
-rw-r--r--fs/Makefile1
-rw-r--r--fs/adfs/adfs.h1
-rw-r--r--fs/adfs/file.c1
-rw-r--r--fs/affs/affs.h1
-rw-r--r--fs/affs/amigaffs.c3
-rw-r--r--fs/affs/amigaffs.h1
-rw-r--r--fs/affs/bitmap.c3
-rw-r--r--fs/affs/dir.c1
-rw-r--r--fs/affs/file.c1
-rw-r--r--fs/affs/inode.c1
-rw-r--r--fs/affs/namei.c1
-rw-r--r--fs/affs/super.c6
-rw-r--r--fs/affs/symlink.c1
-rw-r--r--fs/afs/Makefile1
-rw-r--r--fs/afs/netdevices.c1
-rw-r--r--fs/aio.c6
-rw-r--r--fs/attr.c1
-rw-r--r--fs/autofs4/waitq.c9
-rw-r--r--fs/bad_inode.c1
-rw-r--r--fs/befs/befs.h1
-rw-r--r--fs/befs/befs_fs_types.h1
-rw-r--r--fs/befs/btree.h1
-rw-r--r--fs/befs/datastream.c1
-rw-r--r--fs/befs/datastream.h1
-rw-r--r--fs/befs/debug.c1
-rw-r--r--fs/befs/endian.h1
-rw-r--r--fs/befs/inode.c1
-rw-r--r--fs/befs/io.c1
-rw-r--r--fs/befs/linuxvfs.c2
-rw-r--r--fs/bfs/bfs.h1
-rw-r--r--fs/bfs/dir.c1
-rw-r--r--fs/bfs/file.c1
-rw-r--r--fs/binfmt_aout.c3
-rw-r--r--fs/binfmt_elf.c23
-rw-r--r--fs/binfmt_elf_fdpic.c17
-rw-r--r--fs/binfmt_flat.c19
-rw-r--r--fs/binfmt_misc.c61
-rw-r--r--fs/binfmt_script.c17
-rw-r--r--fs/block_dev.c11
-rw-r--r--fs/btrfs/Kconfig2
-rw-r--r--fs/btrfs/Makefile3
-rw-r--r--fs/btrfs/compression.c19
-rw-r--r--fs/btrfs/compression.h4
-rw-r--r--fs/btrfs/ctree.h4
-rw-r--r--fs/btrfs/dev-replace.c2
-rw-r--r--fs/btrfs/disk-io.c23
-rw-r--r--fs/btrfs/export.c1
-rw-r--r--fs/btrfs/export.h1
-rw-r--r--fs/btrfs/extent_io.c15
-rw-r--r--fs/btrfs/extent_io.h1
-rw-r--r--fs/btrfs/extent_map.c1
-rw-r--r--fs/btrfs/extent_map.h1
-rw-r--r--fs/btrfs/file.c6
-rw-r--r--fs/btrfs/inode-map.h1
-rw-r--r--fs/btrfs/inode.c29
-rw-r--r--fs/btrfs/ioctl.c20
-rw-r--r--fs/btrfs/props.c6
-rw-r--r--fs/btrfs/qgroup.c6
-rw-r--r--fs/btrfs/relocation.c2
-rw-r--r--fs/btrfs/root-tree.c2
-rw-r--r--fs/btrfs/send.c20
-rw-r--r--fs/btrfs/super.c25
-rw-r--r--fs/btrfs/sysfs.c6
-rw-r--r--fs/btrfs/sysfs.h1
-rw-r--r--fs/btrfs/tree-log.c12
-rw-r--r--fs/btrfs/volumes.c6
-rw-r--r--fs/btrfs/zstd.c432
-rw-r--r--fs/cachefiles/Makefile1
-rw-r--r--fs/cachefiles/bind.c2
-rw-r--r--fs/ceph/Makefile1
-rw-r--r--fs/ceph/addr.c1
-rw-r--r--fs/ceph/caps.c6
-rw-r--r--fs/ceph/ceph_frag.c1
-rw-r--r--fs/ceph/debugfs.c1
-rw-r--r--fs/ceph/dir.c1
-rw-r--r--fs/ceph/export.c1
-rw-r--r--fs/ceph/file.c1
-rw-r--r--fs/ceph/inode.c1
-rw-r--r--fs/ceph/ioctl.c1
-rw-r--r--fs/ceph/ioctl.h1
-rw-r--r--fs/ceph/locks.c1
-rw-r--r--fs/ceph/mds_client.c19
-rw-r--r--fs/ceph/mds_client.h4
-rw-r--r--fs/ceph/mdsmap.c1
-rw-r--r--fs/ceph/snap.c9
-rw-r--r--fs/ceph/strings.c1
-rw-r--r--fs/ceph/super.h1
-rw-r--r--fs/ceph/xattr.c1
-rw-r--r--fs/char_dev.c1
-rw-r--r--fs/cifs/Kconfig5
-rw-r--r--fs/cifs/Makefile1
-rw-r--r--fs/cifs/cifs_debug.c9
-rw-r--r--fs/cifs/cifsfs.c4
-rw-r--r--fs/cifs/cifsfs.h2
-rw-r--r--fs/cifs/cifsglob.h14
-rw-r--r--fs/cifs/connect.c32
-rw-r--r--fs/cifs/dir.c5
-rw-r--r--fs/cifs/file.c19
-rw-r--r--fs/cifs/inode.c15
-rw-r--r--fs/cifs/smb2maperror.c2
-rw-r--r--fs/cifs/smb2ops.c73
-rw-r--r--fs/cifs/smb2pdu.c144
-rw-r--r--fs/cifs/smb2pdu.h7
-rw-r--r--fs/cifs/smb2proto.h1
-rw-r--r--fs/cifs/smb2transport.c26
-rw-r--r--fs/coda/cache.c1
-rw-r--r--fs/coda/cnode.c1
-rw-r--r--fs/coda/coda_cache.h1
-rw-r--r--fs/coda/coda_fs_i.h1
-rw-r--r--fs/coda/coda_int.h1
-rw-r--r--fs/coda/coda_linux.c1
-rw-r--r--fs/coda/coda_linux.h1
-rw-r--r--fs/coda/dir.c6
-rw-r--r--fs/coda/file.c1
-rw-r--r--fs/coda/inode.c1
-rw-r--r--fs/coda/pioctl.c1
-rw-r--r--fs/coda/symlink.c1
-rw-r--r--fs/coda/sysctl.c1
-rw-r--r--fs/coda/upcall.c1
-rw-r--r--fs/compat_ioctl.c1
-rw-r--r--fs/coredump.c3
-rw-r--r--fs/cramfs/uncompress.c1
-rw-r--r--fs/crypto/bio.c1
-rw-r--r--fs/crypto/fname.c1
-rw-r--r--fs/crypto/fscrypt_private.h1
-rw-r--r--fs/crypto/keyinfo.c6
-rw-r--r--fs/crypto/policy.c1
-rw-r--r--fs/dax.c4
-rw-r--r--fs/direct-io.c75
-rw-r--r--fs/dlm/Makefile1
-rw-r--r--fs/drop_caches.c1
-rw-r--r--fs/ecryptfs/ecryptfs_kernel.h24
-rw-r--r--fs/ecryptfs/keystore.c9
-rw-r--r--fs/ecryptfs/main.c3
-rw-r--r--fs/ecryptfs/read_write.c4
-rw-r--r--fs/efs/dir.c1
-rw-r--r--fs/efs/efs.h1
-rw-r--r--fs/efs/file.c1
-rw-r--r--fs/efs/namei.c1
-rw-r--r--fs/efs/super.c3
-rw-r--r--fs/efs/symlink.c1
-rw-r--r--fs/exec.c33
-rw-r--r--fs/ext2/Makefile1
-rw-r--r--fs/ext2/acl.c1
-rw-r--r--fs/ext2/acl.h1
-rw-r--r--fs/ext2/balloc.c1
-rw-r--r--fs/ext2/dir.c1
-rw-r--r--fs/ext2/ext2.h1
-rw-r--r--fs/ext2/file.c1
-rw-r--r--fs/ext2/ialloc.c1
-rw-r--r--fs/ext2/inode.c1
-rw-r--r--fs/ext2/ioctl.c1
-rw-r--r--fs/ext2/namei.c1
-rw-r--r--fs/ext2/super.c13
-rw-r--r--fs/ext2/symlink.c1
-rw-r--r--fs/ext2/xattr.c1
-rw-r--r--fs/ext2/xattr.h1
-rw-r--r--fs/ext2/xattr_security.c1
-rw-r--r--fs/ext2/xattr_trusted.c1
-rw-r--r--fs/ext2/xattr_user.c1
-rw-r--r--fs/ext4/Makefile1
-rw-r--r--fs/ext4/acl.c1
-rw-r--r--fs/ext4/acl.h1
-rw-r--r--fs/ext4/balloc.c1
-rw-r--r--fs/ext4/bitmap.c1
-rw-r--r--fs/ext4/block_validity.c1
-rw-r--r--fs/ext4/dir.c1
-rw-r--r--fs/ext4/ext4.h1
-rw-r--r--fs/ext4/ext4_jbd2.c3
-rw-r--r--fs/ext4/extents_status.c1
-rw-r--r--fs/ext4/extents_status.h1
-rw-r--r--fs/ext4/file.c9
-rw-r--r--fs/ext4/fsync.c3
-rw-r--r--fs/ext4/ialloc.c3
-rw-r--r--fs/ext4/indirect.c1
-rw-r--r--fs/ext4/inode.c1
-rw-r--r--fs/ext4/ioctl.c1
-rw-r--r--fs/ext4/mballoc.h1
-rw-r--r--fs/ext4/mmp.c3
-rw-r--r--fs/ext4/namei.c1
-rw-r--r--fs/ext4/page-io.c1
-rw-r--r--fs/ext4/readpage.c1
-rw-r--r--fs/ext4/resize.c1
-rw-r--r--fs/ext4/super.c57
-rw-r--r--fs/ext4/symlink.c1
-rw-r--r--fs/ext4/sysfs.c1
-rw-r--r--fs/ext4/truncate.h1
-rw-r--r--fs/ext4/xattr.c1
-rw-r--r--fs/ext4/xattr.h1
-rw-r--r--fs/ext4/xattr_security.c1
-rw-r--r--fs/ext4/xattr_trusted.c1
-rw-r--r--fs/ext4/xattr_user.c1
-rw-r--r--fs/f2fs/Makefile1
-rw-r--r--fs/f2fs/f2fs.h2
-rw-r--r--fs/f2fs/segment.c6
-rw-r--r--fs/f2fs/super.c2
-rw-r--r--fs/fat/Makefile1
-rw-r--r--fs/fat/cache.c1
-rw-r--r--fs/fat/fat.h1
-rw-r--r--fs/fat/fatent.c2
-rw-r--r--fs/fat/inode.c4
-rw-r--r--fs/fat/misc.c2
-rw-r--r--fs/fcntl.c3
-rw-r--r--fs/fhandle.c1
-rw-r--r--fs/file.c1
-rw-r--r--fs/file_table.c12
-rw-r--r--fs/filesystems.c1
-rw-r--r--fs/fs_pin.c1
-rw-r--r--fs/fscache/Makefile1
-rw-r--r--fs/fscache/object-list.c10
-rw-r--r--fs/fuse/dir.c3
-rw-r--r--fs/fuse/inode.c2
-rw-r--r--fs/gfs2/Makefile1
-rw-r--r--fs/gfs2/glock.c14
-rw-r--r--fs/gfs2/glops.c2
-rw-r--r--fs/gfs2/ops_fstype.c4
-rw-r--r--fs/gfs2/quota.c2
-rw-r--r--fs/gfs2/recovery.c2
-rw-r--r--fs/gfs2/super.c4
-rw-r--r--fs/gfs2/sys.c2
-rw-r--r--fs/gfs2/trace_gfs2.h1
-rw-r--r--fs/hfs/attr.c1
-rw-r--r--fs/hfs/bfind.c1
-rw-r--r--fs/hfs/bnode.c1
-rw-r--r--fs/hfs/brec.c1
-rw-r--r--fs/hfs/btree.c1
-rw-r--r--fs/hfs/btree.h1
-rw-r--r--fs/hfs/mdb.c6
-rw-r--r--fs/hfs/super.c4
-rw-r--r--fs/hfsplus/Makefile1
-rw-r--r--fs/hfsplus/acl.h1
-rw-r--r--fs/hfsplus/attributes.c1
-rw-r--r--fs/hfsplus/bfind.c1
-rw-r--r--fs/hfsplus/bitmap.c1
-rw-r--r--fs/hfsplus/bnode.c1
-rw-r--r--fs/hfsplus/brec.c1
-rw-r--r--fs/hfsplus/btree.c1
-rw-r--r--fs/hfsplus/catalog.c1
-rw-r--r--fs/hfsplus/dir.c1
-rw-r--r--fs/hfsplus/extents.c1
-rw-r--r--fs/hfsplus/hfsplus_fs.h1
-rw-r--r--fs/hfsplus/hfsplus_raw.h1
-rw-r--r--fs/hfsplus/inode.c1
-rw-r--r--fs/hfsplus/ioctl.c1
-rw-r--r--fs/hfsplus/options.c1
-rw-r--r--fs/hfsplus/posix_acl.c1
-rw-r--r--fs/hfsplus/super.c10
-rw-r--r--fs/hfsplus/tables.c1
-rw-r--r--fs/hfsplus/unicode.c1
-rw-r--r--fs/hfsplus/wrapper.c1
-rw-r--r--fs/hfsplus/xattr.c1
-rw-r--r--fs/hfsplus/xattr.h1
-rw-r--r--fs/hfsplus/xattr_security.c1
-rw-r--r--fs/hfsplus/xattr_trusted.c1
-rw-r--r--fs/hfsplus/xattr_user.c1
-rw-r--r--fs/hostfs/hostfs.h1
-rw-r--r--fs/hpfs/alloc.c5
-rw-r--r--fs/hpfs/anode.c1
-rw-r--r--fs/hpfs/buffer.c1
-rw-r--r--fs/hpfs/dentry.c1
-rw-r--r--fs/hpfs/dir.c3
-rw-r--r--fs/hpfs/dnode.c1
-rw-r--r--fs/hpfs/ea.c1
-rw-r--r--fs/hpfs/file.c1
-rw-r--r--fs/hpfs/hpfs.h1
-rw-r--r--fs/hpfs/hpfs_fn.h1
-rw-r--r--fs/hpfs/inode.c1
-rw-r--r--fs/hpfs/map.c1
-rw-r--r--fs/hpfs/name.c1
-rw-r--r--fs/hpfs/namei.c1
-rw-r--r--fs/hpfs/super.c13
-rw-r--r--fs/hugetlbfs/inode.c5
-rw-r--r--fs/ioctl.c1
-rw-r--r--fs/iomap.c54
-rw-r--r--fs/isofs/Makefile1
-rw-r--r--fs/isofs/dir.c1
-rw-r--r--fs/isofs/export.c1
-rw-r--r--fs/isofs/inode.c4
-rw-r--r--fs/isofs/isofs.h1
-rw-r--r--fs/isofs/joliet.c1
-rw-r--r--fs/isofs/namei.c1
-rw-r--r--fs/isofs/rock.c1
-rw-r--r--fs/isofs/rock.h1
-rw-r--r--fs/isofs/util.c1
-rw-r--r--fs/jffs2/Makefile1
-rw-r--r--fs/jffs2/fs.c6
-rw-r--r--fs/jffs2/super.c2
-rw-r--r--fs/jffs2/wbuf.c4
-rw-r--r--fs/jfs/Makefile1
-rw-r--r--fs/jfs/ioctl.c1
-rw-r--r--fs/jfs/jfs_mount.c2
-rw-r--r--fs/jfs/super.c16
-rw-r--r--fs/lockd/Makefile1
-rw-r--r--fs/lockd/clnt4xdr.c1
-rw-r--r--fs/lockd/clntxdr.c1
-rw-r--r--fs/lockd/host.c1
-rw-r--r--fs/lockd/mon.c1
-rw-r--r--fs/lockd/netns.h1
-rw-r--r--fs/lockd/procfs.c1
-rw-r--r--fs/lockd/procfs.h1
-rw-r--r--fs/lockd/svc4proc.c1
-rw-r--r--fs/lockd/svclock.c1
-rw-r--r--fs/lockd/svcproc.c1
-rw-r--r--fs/lockd/svcshare.c1
-rw-r--r--fs/lockd/xdr.c1
-rw-r--r--fs/lockd/xdr4.c1
-rw-r--r--fs/minix/bitmap.c1
-rw-r--r--fs/minix/dir.c1
-rw-r--r--fs/minix/file.c1
-rw-r--r--fs/minix/inode.c6
-rw-r--r--fs/minix/itree_common.c1
-rw-r--r--fs/minix/itree_v1.c1
-rw-r--r--fs/minix/itree_v2.c1
-rw-r--r--fs/minix/minix.h1
-rw-r--r--fs/minix/namei.c1
-rw-r--r--fs/mount.h1
-rw-r--r--fs/mpage.c15
-rw-r--r--fs/namei.c4
-rw-r--r--fs/namespace.c75
-rw-r--r--fs/ncpfs/Makefile1
-rw-r--r--fs/ncpfs/dir.c1
-rw-r--r--fs/ncpfs/file.c1
-rw-r--r--fs/ncpfs/getopt.c1
-rw-r--r--fs/ncpfs/getopt.h1
-rw-r--r--fs/ncpfs/ioctl.c1
-rw-r--r--fs/ncpfs/mmap.c1
-rw-r--r--fs/ncpfs/ncp_fs.h1
-rw-r--r--fs/ncpfs/ncp_fs_i.h1
-rw-r--r--fs/ncpfs/ncp_fs_sb.h1
-rw-r--r--fs/ncpfs/ncplib_kernel.c1
-rw-r--r--fs/ncpfs/ncplib_kernel.h1
-rw-r--r--fs/ncpfs/ncpsign_kernel.c1
-rw-r--r--fs/ncpfs/ncpsign_kernel.h1
-rw-r--r--fs/ncpfs/sock.c1
-rw-r--r--fs/ncpfs/symlink.c1
-rw-r--r--fs/nfs/Makefile1
-rw-r--r--fs/nfs/blocklayout/dev.c1
-rw-r--r--fs/nfs/blocklayout/extent_tree.c1
-rw-r--r--fs/nfs/cache_lib.c1
-rw-r--r--fs/nfs/cache_lib.h1
-rw-r--r--fs/nfs/callback.c1
-rw-r--r--fs/nfs/callback.h1
-rw-r--r--fs/nfs/callback_proc.c1
-rw-r--r--fs/nfs/callback_xdr.c1
-rw-r--r--fs/nfs/client.c2
-rw-r--r--fs/nfs/delegation.h1
-rw-r--r--fs/nfs/dns_resolve.c1
-rw-r--r--fs/nfs/dns_resolve.h1
-rw-r--r--fs/nfs/export.c1
-rw-r--r--fs/nfs/file.c16
-rw-r--r--fs/nfs/filelayout/filelayout.c3
-rw-r--r--fs/nfs/flexfilelayout/flexfilelayout.h1
-rw-r--r--fs/nfs/flexfilelayout/flexfilelayoutdev.c1
-rw-r--r--fs/nfs/internal.h8
-rw-r--r--fs/nfs/io.c1
-rw-r--r--fs/nfs/iostat.h1
-rw-r--r--fs/nfs/mount_clnt.c1
-rw-r--r--fs/nfs/netns.h1
-rw-r--r--fs/nfs/nfs.h1
-rw-r--r--fs/nfs/nfs2xdr.c1
-rw-r--r--fs/nfs/nfs3_fs.h1
-rw-r--r--fs/nfs/nfs3acl.c1
-rw-r--r--fs/nfs/nfs3proc.c1
-rw-r--r--fs/nfs/nfs3xdr.c1
-rw-r--r--fs/nfs/nfs42.h1
-rw-r--r--fs/nfs/nfs42proc.c1
-rw-r--r--fs/nfs/nfs42xdr.c1
-rw-r--r--fs/nfs/nfs4_fs.h1
-rw-r--r--fs/nfs/nfs4file.c1
-rw-r--r--fs/nfs/nfs4getroot.c1
-rw-r--r--fs/nfs/nfs4idmap.c2
-rw-r--r--fs/nfs/nfs4namespace.c1
-rw-r--r--fs/nfs/nfs4proc.c3
-rw-r--r--fs/nfs/nfs4session.h1
-rw-r--r--fs/nfs/nfs4sysctl.c1
-rw-r--r--fs/nfs/nfs4trace.c1
-rw-r--r--fs/nfs/nfs4trace.h1
-rw-r--r--fs/nfs/nfs4xdr.c4
-rw-r--r--fs/nfs/nfsroot.c1
-rw-r--r--fs/nfs/nfstrace.c1
-rw-r--r--fs/nfs/nfstrace.h249
-rw-r--r--fs/nfs/pagelist.c4
-rw-r--r--fs/nfs/pnfs.c14
-rw-r--r--fs/nfs/proc.c1
-rw-r--r--fs/nfs/read.c4
-rw-r--r--fs/nfs/super.c2
-rw-r--r--fs/nfs/symlink.c1
-rw-r--r--fs/nfs/sysctl.c1
-rw-r--r--fs/nfs/unlink.c1
-rw-r--r--fs/nfs/write.c14
-rw-r--r--fs/nfsd/Makefile1
-rw-r--r--fs/nfsd/auth.c1
-rw-r--r--fs/nfsd/auth.h1
-rw-r--r--fs/nfsd/blocklayout.c1
-rw-r--r--fs/nfsd/blocklayoutxdr.c1
-rw-r--r--fs/nfsd/blocklayoutxdr.h1
-rw-r--r--fs/nfsd/cache.h1
-rw-r--r--fs/nfsd/current_stateid.h1
-rw-r--r--fs/nfsd/export.c1
-rw-r--r--fs/nfsd/export.h1
-rw-r--r--fs/nfsd/fault_inject.c1
-rw-r--r--fs/nfsd/flexfilelayout.c1
-rw-r--r--fs/nfsd/flexfilelayoutxdr.c1
-rw-r--r--fs/nfsd/flexfilelayoutxdr.h1
-rw-r--r--fs/nfsd/lockd.c1
-rw-r--r--fs/nfsd/nfs2acl.c1
-rw-r--r--fs/nfsd/nfs3acl.c1
-rw-r--r--fs/nfsd/nfs3proc.c1
-rw-r--r--fs/nfsd/nfs3xdr.c1
-rw-r--r--fs/nfsd/nfs4layouts.c1
-rw-r--r--fs/nfsd/nfs4proc.c9
-rw-r--r--fs/nfsd/nfscache.c1
-rw-r--r--fs/nfsd/nfsd.h1
-rw-r--r--fs/nfsd/nfsfh.c1
-rw-r--r--fs/nfsd/nfsfh.h1
-rw-r--r--fs/nfsd/nfsproc.c1
-rw-r--r--fs/nfsd/nfssvc.c1
-rw-r--r--fs/nfsd/nfsxdr.c1
-rw-r--r--fs/nfsd/pnfs.h1
-rw-r--r--fs/nfsd/stats.c1
-rw-r--r--fs/nfsd/stats.h1
-rw-r--r--fs/nfsd/trace.h1
-rw-r--r--fs/nfsd/vfs.c1
-rw-r--r--fs/nfsd/vfs.h1
-rw-r--r--fs/nfsd/xdr.h1
-rw-r--r--fs/nfsd/xdr3.h1
-rw-r--r--fs/nfsd/xdr4cb.h1
-rw-r--r--fs/nilfs2/Makefile1
-rw-r--r--fs/nilfs2/export.h1
-rw-r--r--fs/nilfs2/inode.c4
-rw-r--r--fs/nilfs2/mdt.c2
-rw-r--r--fs/nilfs2/super.c19
-rw-r--r--fs/nls/Makefile1
-rw-r--r--fs/notify/Makefile1
-rw-r--r--fs/notify/fanotify/fanotify.c1
-rw-r--r--fs/notify/fanotify/fanotify.h1
-rw-r--r--fs/notify/fanotify/fanotify_user.c1
-rw-r--r--fs/notify/fdinfo.c1
-rw-r--r--fs/notify/fdinfo.h1
-rw-r--r--fs/notify/fsnotify.h1
-rw-r--r--fs/notify/inotify/inotify.h1
-rw-r--r--fs/nsfs.c1
-rw-r--r--fs/ntfs/Makefile1
-rw-r--r--fs/ntfs/super.c31
-rw-r--r--fs/ocfs2/Makefile1
-rw-r--r--fs/ocfs2/alloc.c24
-rw-r--r--fs/ocfs2/ioctl.c1
-rw-r--r--fs/ocfs2/ioctl.h1
-rw-r--r--fs/ocfs2/mmap.h1
-rw-r--r--fs/ocfs2/ocfs2_trace.h1
-rw-r--r--fs/ocfs2/quota.h1
-rw-r--r--fs/ocfs2/quota_global.c1
-rw-r--r--fs/ocfs2/quota_local.c1
-rw-r--r--fs/ocfs2/super.c15
-rw-r--r--fs/omfs/bitmap.c1
-rw-r--r--fs/omfs/omfs.h1
-rw-r--r--fs/omfs/omfs_fs.h1
-rw-r--r--fs/orangefs/Makefile1
-rw-r--r--fs/orangefs/acl.c64
-rw-r--r--fs/orangefs/dcache.c1
-rw-r--r--fs/orangefs/devorangefs-req.c10
-rw-r--r--fs/orangefs/dir.c1
-rw-r--r--fs/orangefs/downcall.h1
-rw-r--r--fs/orangefs/file.c6
-rw-r--r--fs/orangefs/inode.c1
-rw-r--r--fs/orangefs/namei.c1
-rw-r--r--fs/orangefs/orangefs-bufmap.c11
-rw-r--r--fs/orangefs/orangefs-bufmap.h1
-rw-r--r--fs/orangefs/orangefs-cache.c1
-rw-r--r--fs/orangefs/orangefs-debug.h1
-rw-r--r--fs/orangefs/orangefs-debugfs.c6
-rw-r--r--fs/orangefs/orangefs-debugfs.h1
-rw-r--r--fs/orangefs/orangefs-dev-proto.h1
-rw-r--r--fs/orangefs/orangefs-kernel.h1
-rw-r--r--fs/orangefs/orangefs-mod.c1
-rw-r--r--fs/orangefs/orangefs-sysfs.c1
-rw-r--r--fs/orangefs/orangefs-utils.c1
-rw-r--r--fs/orangefs/protocol.h1
-rw-r--r--fs/orangefs/super.c5
-rw-r--r--fs/orangefs/symlink.c1
-rw-r--r--fs/orangefs/upcall.h1
-rw-r--r--fs/orangefs/waitqueue.c1
-rw-r--r--fs/orangefs/xattr.c13
-rw-r--r--fs/overlayfs/copy_up.c8
-rw-r--r--fs/overlayfs/dir.c22
-rw-r--r--fs/overlayfs/inode.c20
-rw-r--r--fs/overlayfs/namei.c45
-rw-r--r--fs/overlayfs/overlayfs.h4
-rw-r--r--fs/overlayfs/ovl_entry.h3
-rw-r--r--fs/overlayfs/readdir.c17
-rw-r--r--fs/overlayfs/super.c32
-rw-r--r--fs/overlayfs/util.c24
-rw-r--r--fs/pipe.c1
-rw-r--r--fs/proc/Makefile1
-rw-r--r--fs/proc/array.c45
-rw-r--r--fs/proc/base.c9
-rw-r--r--fs/proc/cmdline.c1
-rw-r--r--fs/proc/cpuinfo.c1
-rw-r--r--fs/proc/devices.c1
-rw-r--r--fs/proc/fd.c1
-rw-r--r--fs/proc/fd.h1
-rw-r--r--fs/proc/inode.c1
-rw-r--r--fs/proc/interrupts.c1
-rw-r--r--fs/proc/kcore.c1
-rw-r--r--fs/proc/kmsg.c1
-rw-r--r--fs/proc/loadavg.c1
-rw-r--r--fs/proc/meminfo.c1
-rw-r--r--fs/proc/namespaces.c1
-rw-r--r--fs/proc/page.c1
-rw-r--r--fs/proc/proc_sysctl.c1
-rw-r--r--fs/proc/proc_tty.c1
-rw-r--r--fs/proc/root.c1
-rw-r--r--fs/proc/self.c1
-rw-r--r--fs/proc/softirqs.c1
-rw-r--r--fs/proc/stat.c1
-rw-r--r--fs/proc/task_mmu.c9
-rw-r--r--fs/proc/task_nommu.c2
-rw-r--r--fs/proc/thread_self.c1
-rw-r--r--fs/proc/uptime.c1
-rw-r--r--fs/proc/version.c1
-rw-r--r--fs/proc_namespace.c3
-rw-r--r--fs/pstore/Makefile1
-rw-r--r--fs/pstore/internal.h1
-rw-r--r--fs/qnx4/bitmap.c1
-rw-r--r--fs/qnx4/dir.c1
-rw-r--r--fs/qnx4/namei.c1
-rw-r--r--fs/qnx4/qnx4.h1
-rw-r--r--fs/qnx6/dir.c1
-rw-r--r--fs/qnx6/namei.c1
-rw-r--r--fs/qnx6/qnx6.h1
-rw-r--r--fs/qnx6/super_mmi.c1
-rw-r--r--fs/quota/Makefile1
-rw-r--r--fs/quota/compat.c1
-rw-r--r--fs/quota/dquot.c30
-rw-r--r--fs/quota/kqid.c1
-rw-r--r--fs/quota/netlink.c1
-rw-r--r--fs/quota/quota.c3
-rw-r--r--fs/quota/quota_tree.h1
-rw-r--r--fs/quota/quota_v2.c4
-rw-r--r--fs/quota/quotaio_v1.h1
-rw-r--r--fs/quota/quotaio_v2.h1
-rw-r--r--fs/read_write.c48
-rw-r--r--fs/readdir.c1
-rw-r--r--fs/reiserfs/Makefile1
-rw-r--r--fs/reiserfs/acl.h1
-rw-r--r--fs/reiserfs/inode.c2
-rw-r--r--fs/reiserfs/journal.c3
-rw-r--r--fs/reiserfs/lock.c1
-rw-r--r--fs/reiserfs/prints.c2
-rw-r--r--fs/reiserfs/reiserfs.h1
-rw-r--r--fs/reiserfs/super.c18
-rw-r--r--fs/reiserfs/tail_conversion.c1
-rw-r--r--fs/reiserfs/xattr.c1
-rw-r--r--fs/reiserfs/xattr.h1
-rw-r--r--fs/reiserfs/xattr_acl.c1
-rw-r--r--fs/reiserfs/xattr_security.c1
-rw-r--r--fs/reiserfs/xattr_trusted.c1
-rw-r--r--fs/reiserfs/xattr_user.c1
-rw-r--r--fs/romfs/Makefile1
-rw-r--r--fs/select.c1
-rw-r--r--fs/seq_file.c1
-rw-r--r--fs/signalfd.c1
-rw-r--r--fs/splice.c16
-rw-r--r--fs/squashfs/Kconfig14
-rw-r--r--fs/squashfs/Makefile2
-rw-r--r--fs/squashfs/decompressor.c7
-rw-r--r--fs/squashfs/decompressor.h4
-rw-r--r--fs/squashfs/squashfs_fs.h1
-rw-r--r--fs/squashfs/zstd_wrapper.c151
-rw-r--r--fs/stat.c1
-rw-r--r--fs/statfs.c1
-rw-r--r--fs/super.c75
-rw-r--r--fs/sync.c7
-rw-r--r--fs/sysv/balloc.c3
-rw-r--r--fs/sysv/dir.c1
-rw-r--r--fs/sysv/file.c1
-rw-r--r--fs/sysv/ialloc.c3
-rw-r--r--fs/sysv/inode.c3
-rw-r--r--fs/sysv/itree.c1
-rw-r--r--fs/sysv/namei.c1
-rw-r--r--fs/sysv/super.c2
-rw-r--r--fs/sysv/sysv.h1
-rw-r--r--fs/timerfd.c1
-rw-r--r--fs/ubifs/Makefile1
-rw-r--r--fs/ubifs/crypto.c1
-rw-r--r--fs/ubifs/misc.c1
-rw-r--r--fs/ubifs/super.c2
-rw-r--r--fs/udf/super.c14
-rw-r--r--fs/udf/udf_i.h1
-rw-r--r--fs/udf/udf_sb.h1
-rw-r--r--fs/udf/udfdecl.h1
-rw-r--r--fs/udf/udfend.h1
-rw-r--r--fs/ufs/balloc.c1
-rw-r--r--fs/ufs/cylinder.c1
-rw-r--r--fs/ufs/dir.c1
-rw-r--r--fs/ufs/file.c1
-rw-r--r--fs/ufs/ialloc.c1
-rw-r--r--fs/ufs/inode.c1
-rw-r--r--fs/ufs/namei.c1
-rw-r--r--fs/ufs/super.c24
-rw-r--r--fs/ufs/swab.h1
-rw-r--r--fs/ufs/ufs.h1
-rw-r--r--fs/ufs/ufs_fs.h1
-rw-r--r--fs/ufs/util.c1
-rw-r--r--fs/ufs/util.h1
-rw-r--r--fs/userfaultfd.c66
-rw-r--r--fs/utimes.c24
-rw-r--r--fs/xattr.c2
-rw-r--r--fs/xfs/libxfs/xfs_ag_resv.c12
-rw-r--r--fs/xfs/libxfs/xfs_alloc.c8
-rw-r--r--fs/xfs/libxfs/xfs_bmap.c32
-rw-r--r--fs/xfs/libxfs/xfs_bmap.h1
-rw-r--r--fs/xfs/libxfs/xfs_cksum.h1
-rw-r--r--fs/xfs/libxfs/xfs_ialloc.c4
-rw-r--r--fs/xfs/libxfs/xfs_log_format.h27
-rw-r--r--fs/xfs/xfs_acl.c22
-rw-r--r--fs/xfs/xfs_aops.c50
-rw-r--r--fs/xfs/xfs_attr_inactive.c2
-rw-r--r--fs/xfs/xfs_bmap_util.c40
-rw-r--r--fs/xfs/xfs_bmap_util.h13
-rw-r--r--fs/xfs/xfs_buf.c2
-rw-r--r--fs/xfs/xfs_discard.h1
-rw-r--r--fs/xfs/xfs_error.c2
-rw-r--r--fs/xfs/xfs_file.c71
-rw-r--r--fs/xfs/xfs_fsmap.c58
-rw-r--r--fs/xfs/xfs_inode.c8
-rw-r--r--fs/xfs/xfs_inode_item.c81
-rw-r--r--fs/xfs/xfs_ioctl.c3
-rw-r--r--fs/xfs/xfs_iomap.c7
-rw-r--r--fs/xfs/xfs_iomap.h2
-rw-r--r--fs/xfs/xfs_log.c2
-rw-r--r--fs/xfs/xfs_message.h1
-rw-r--r--fs/xfs/xfs_mount.c2
-rw-r--r--fs/xfs/xfs_ondisk.h2
-rw-r--r--fs/xfs/xfs_pnfs.c3
-rw-r--r--fs/xfs/xfs_pnfs.h1
-rw-r--r--fs/xfs/xfs_quotaops.c10
-rw-r--r--fs/xfs/xfs_reflink.c9
-rw-r--r--fs/xfs/xfs_super.c14
-rw-r--r--include/acpi/acpi_bus.h18
-rw-r--r--include/acpi/acpi_io.h1
-rw-r--r--include/acpi/acpi_numa.h1
-rw-r--r--include/acpi/apei.h1
-rw-r--r--include/acpi/button.h1
-rw-r--r--include/acpi/ghes.h1
-rw-r--r--include/acpi/pdc_intel.h1
-rw-r--r--include/acpi/processor.h1
-rw-r--r--include/acpi/reboot.h1
-rw-r--r--include/acpi/video.h1
-rw-r--r--include/asm-generic/4level-fixup.h1
-rw-r--r--include/asm-generic/5level-fixup.h1
-rw-r--r--include/asm-generic/asm-prototypes.h1
-rw-r--r--include/asm-generic/atomic-long.h1
-rw-r--r--include/asm-generic/audit_change_attr.h1
-rw-r--r--include/asm-generic/audit_dir_write.h1
-rw-r--r--include/asm-generic/audit_read.h1
-rw-r--r--include/asm-generic/audit_write.h1
-rw-r--r--include/asm-generic/bitops.h1
-rw-r--r--include/asm-generic/bitops/__ffs.h1
-rw-r--r--include/asm-generic/bitops/__fls.h1
-rw-r--r--include/asm-generic/bitops/arch_hweight.h1
-rw-r--r--include/asm-generic/bitops/atomic.h1
-rw-r--r--include/asm-generic/bitops/builtin-__ffs.h1
-rw-r--r--include/asm-generic/bitops/builtin-__fls.h1
-rw-r--r--include/asm-generic/bitops/builtin-ffs.h1
-rw-r--r--include/asm-generic/bitops/builtin-fls.h1
-rw-r--r--include/asm-generic/bitops/const_hweight.h1
-rw-r--r--include/asm-generic/bitops/ext2-atomic-setbit.h1
-rw-r--r--include/asm-generic/bitops/ext2-atomic.h1
-rw-r--r--include/asm-generic/bitops/ffs.h1
-rw-r--r--include/asm-generic/bitops/ffz.h1
-rw-r--r--include/asm-generic/bitops/find.h1
-rw-r--r--include/asm-generic/bitops/fls.h1
-rw-r--r--include/asm-generic/bitops/fls64.h1
-rw-r--r--include/asm-generic/bitops/hweight.h1
-rw-r--r--include/asm-generic/bitops/le.h1
-rw-r--r--include/asm-generic/bitops/lock.h1
-rw-r--r--include/asm-generic/bitops/non-atomic.h1
-rw-r--r--include/asm-generic/bitops/sched.h1
-rw-r--r--include/asm-generic/bitsperlong.h1
-rw-r--r--include/asm-generic/bug.h1
-rw-r--r--include/asm-generic/bugs.h1
-rw-r--r--include/asm-generic/cache.h1
-rw-r--r--include/asm-generic/cacheflush.h1
-rw-r--r--include/asm-generic/checksum.h1
-rw-r--r--include/asm-generic/cmpxchg-local.h1
-rw-r--r--include/asm-generic/cmpxchg.h1
-rw-r--r--include/asm-generic/current.h1
-rw-r--r--include/asm-generic/delay.h1
-rw-r--r--include/asm-generic/div64.h1
-rw-r--r--include/asm-generic/dma-contiguous.h1
-rw-r--r--include/asm-generic/dma.h1
-rw-r--r--include/asm-generic/early_ioremap.h1
-rw-r--r--include/asm-generic/emergency-restart.h1
-rw-r--r--include/asm-generic/extable.h1
-rw-r--r--include/asm-generic/fb.h1
-rw-r--r--include/asm-generic/futex.h1
-rw-r--r--include/asm-generic/getorder.h1
-rw-r--r--include/asm-generic/gpio.h1
-rw-r--r--include/asm-generic/hardirq.h1
-rw-r--r--include/asm-generic/hugetlb.h1
-rw-r--r--include/asm-generic/ide_iops.h1
-rw-r--r--include/asm-generic/int-ll64.h1
-rw-r--r--include/asm-generic/ioctl.h1
-rw-r--r--include/asm-generic/iomap.h1
-rw-r--r--include/asm-generic/irq.h1
-rw-r--r--include/asm-generic/irq_work.h1
-rw-r--r--include/asm-generic/irqflags.h1
-rw-r--r--include/asm-generic/kdebug.h1
-rw-r--r--include/asm-generic/kmap_types.h1
-rw-r--r--include/asm-generic/kprobes.h1
-rw-r--r--include/asm-generic/kvm_para.h1
-rw-r--r--include/asm-generic/local.h1
-rw-r--r--include/asm-generic/local64.h1
-rw-r--r--include/asm-generic/memory_model.h1
-rw-r--r--include/asm-generic/mm_hooks.h1
-rw-r--r--include/asm-generic/mmu.h1
-rw-r--r--include/asm-generic/mmu_context.h1
-rw-r--r--include/asm-generic/module.h1
-rw-r--r--include/asm-generic/msi.h1
-rw-r--r--include/asm-generic/page.h1
-rw-r--r--include/asm-generic/param.h1
-rw-r--r--include/asm-generic/parport.h1
-rw-r--r--include/asm-generic/pci.h1
-rw-r--r--include/asm-generic/percpu.h25
-rw-r--r--include/asm-generic/pgalloc.h1
-rw-r--r--include/asm-generic/pgtable-nop4d-hack.h1
-rw-r--r--include/asm-generic/pgtable-nop4d.h1
-rw-r--r--include/asm-generic/pgtable-nopmd.h1
-rw-r--r--include/asm-generic/pgtable-nopud.h1
-rw-r--r--include/asm-generic/pgtable.h1
-rw-r--r--include/asm-generic/preempt.h1
-rw-r--r--include/asm-generic/qrwlock_types.h1
-rw-r--r--include/asm-generic/resource.h1
-rw-r--r--include/asm-generic/rwsem.h1
-rw-r--r--include/asm-generic/sections.h1
-rw-r--r--include/asm-generic/serial.h1
-rw-r--r--include/asm-generic/set_memory.h1
-rw-r--r--include/asm-generic/signal.h1
-rw-r--r--include/asm-generic/simd.h1
-rw-r--r--include/asm-generic/spinlock.h1
-rw-r--r--include/asm-generic/statfs.h1
-rw-r--r--include/asm-generic/syscalls.h1
-rw-r--r--include/asm-generic/termios-base.h1
-rw-r--r--include/asm-generic/termios.h1
-rw-r--r--include/asm-generic/timex.h1
-rw-r--r--include/asm-generic/tlbflush.h1
-rw-r--r--include/asm-generic/trace_clock.h1
-rw-r--r--include/asm-generic/uaccess.h9
-rw-r--r--include/asm-generic/unaligned.h1
-rw-r--r--include/asm-generic/unistd.h1
-rw-r--r--include/asm-generic/vga.h1
-rw-r--r--include/asm-generic/word-at-a-time.h1
-rw-r--r--include/clocksource/timer-sp804.h1
-rw-r--r--include/crypto/ablk_helper.h1
-rw-r--r--include/crypto/aes.h1
-rw-r--r--include/crypto/blowfish.h1
-rw-r--r--include/crypto/cast5.h1
-rw-r--r--include/crypto/cast6.h1
-rw-r--r--include/crypto/cast_common.h1
-rw-r--r--include/crypto/chacha20.h1
-rw-r--r--include/crypto/cryptd.h1
-rw-r--r--include/crypto/crypto_wq.h1
-rw-r--r--include/crypto/des.h1
-rw-r--r--include/crypto/ghash.h1
-rw-r--r--include/crypto/hmac.h1
-rw-r--r--include/crypto/internal/simd.h1
-rw-r--r--include/crypto/lrw.h1
-rw-r--r--include/crypto/mcryptd.h1
-rw-r--r--include/crypto/md5.h1
-rw-r--r--include/crypto/null.h1
-rw-r--r--include/crypto/poly1305.h1
-rw-r--r--include/crypto/serpent.h1
-rw-r--r--include/crypto/sha.h1
-rw-r--r--include/crypto/sha3.h1
-rw-r--r--include/crypto/twofish.h1
-rw-r--r--include/crypto/xts.h1
-rw-r--r--include/drm/ati_pcigart.h1
-rw-r--r--include/drm/drm_agpsupport.h1
-rw-r--r--include/drm/drm_fb_cma_helper.h1
-rw-r--r--include/drm/drm_gem_cma_helper.h1
-rw-r--r--include/drm/drm_of.h1
-rw-r--r--include/drm/drm_os_linux.h1
-rw-r--r--include/drm/drm_pciids.h1
-rw-r--r--include/drm/drm_sysfs.h1
-rw-r--r--include/drm/i2c/tda998x.h1
-rw-r--r--include/drm/intel-gtt.h1
-rw-r--r--include/dt-bindings/clock/berlin2.h1
-rw-r--r--include/dt-bindings/clock/berlin2q.h1
-rw-r--r--include/dt-bindings/clock/cortina,gemini-clock.h1
-rw-r--r--include/dt-bindings/clock/efm32-cmu.h1
-rw-r--r--include/dt-bindings/clock/exynos-audss-clk.h1
-rw-r--r--include/dt-bindings/clock/gxbb-clkc.h1
-rw-r--r--include/dt-bindings/clock/jz4740-cgu.h1
-rw-r--r--include/dt-bindings/clock/jz4780-cgu.h1
-rw-r--r--include/dt-bindings/clock/marvell,mmp2.h1
-rw-r--r--include/dt-bindings/clock/marvell,pxa168.h1
-rw-r--r--include/dt-bindings/clock/marvell,pxa1928.h1
-rw-r--r--include/dt-bindings/clock/marvell,pxa910.h1
-rw-r--r--include/dt-bindings/clock/meson8b-clkc.h1
-rw-r--r--include/dt-bindings/clock/mpc512x-clock.h1
-rw-r--r--include/dt-bindings/clock/rockchip,rk808.h1
-rw-r--r--include/dt-bindings/clock/ste-ab8500.h1
-rw-r--r--include/dt-bindings/clock/stih407-clks.h1
-rw-r--r--include/dt-bindings/clock/stih410-clks.h1
-rw-r--r--include/dt-bindings/clock/stih416-clks.h1
-rw-r--r--include/dt-bindings/clock/stih418-clks.h1
-rw-r--r--include/dt-bindings/clock/tegra114-car.h1
-rw-r--r--include/dt-bindings/clock/tegra124-car-common.h1
-rw-r--r--include/dt-bindings/clock/tegra124-car.h1
-rw-r--r--include/dt-bindings/clock/tegra186-clock.h1
-rw-r--r--include/dt-bindings/clock/tegra20-car.h1
-rw-r--r--include/dt-bindings/clock/tegra210-car.h1
-rw-r--r--include/dt-bindings/clock/tegra30-car.h1
-rw-r--r--include/dt-bindings/display/tda998x.h1
-rw-r--r--include/dt-bindings/gpio/gpio.h1
-rw-r--r--include/dt-bindings/gpio/tegra-gpio.h1
-rw-r--r--include/dt-bindings/gpio/tegra186-gpio.h1
-rw-r--r--include/dt-bindings/iio/adc/fsl-imx25-gcq.h1
-rw-r--r--include/dt-bindings/iio/adi,ad5592r.h1
-rw-r--r--include/dt-bindings/input/input.h1
-rw-r--r--include/dt-bindings/interrupt-controller/arm-gic.h1
-rw-r--r--include/dt-bindings/interrupt-controller/irq.h1
-rw-r--r--include/dt-bindings/interrupt-controller/mips-gic.h1
-rw-r--r--include/dt-bindings/interrupt-controller/mvebu-icu.h1
-rw-r--r--include/dt-bindings/leds/common.h1
-rw-r--r--include/dt-bindings/leds/leds-ns2.h1
-rw-r--r--include/dt-bindings/mailbox/tegra186-hsp.h1
-rw-r--r--include/dt-bindings/media/c8sectpfe.h1
-rw-r--r--include/dt-bindings/memory/tegra114-mc.h1
-rw-r--r--include/dt-bindings/memory/tegra124-mc.h1
-rw-r--r--include/dt-bindings/memory/tegra210-mc.h1
-rw-r--r--include/dt-bindings/memory/tegra30-mc.h1
-rw-r--r--include/dt-bindings/mfd/as3722.h1
-rw-r--r--include/dt-bindings/mfd/dbx500-prcmu.h1
-rw-r--r--include/dt-bindings/mfd/max77620.h1
-rw-r--r--include/dt-bindings/mfd/palmas.h1
-rw-r--r--include/dt-bindings/mfd/qcom-rpm.h1
-rw-r--r--include/dt-bindings/mfd/st-lpc.h1
-rw-r--r--include/dt-bindings/mfd/stm32f4-rcc.h1
-rw-r--r--include/dt-bindings/mfd/stm32f7-rcc.h1
-rw-r--r--include/dt-bindings/mips/lantiq_rcu_gphy.h15
-rw-r--r--include/dt-bindings/mux/mux.h1
-rw-r--r--include/dt-bindings/pinctrl/am33xx.h1
-rw-r--r--include/dt-bindings/pinctrl/am43xx.h1
-rw-r--r--include/dt-bindings/pinctrl/dm814x.h1
-rw-r--r--include/dt-bindings/pinctrl/mt6397-pinfunc.h1
-rw-r--r--include/dt-bindings/pinctrl/mt7623-pinfunc.h1
-rw-r--r--include/dt-bindings/pinctrl/omap.h1
-rw-r--r--include/dt-bindings/pinctrl/pinctrl-tegra-xusb.h1
-rw-r--r--include/dt-bindings/pinctrl/qcom,pmic-gpio.h1
-rw-r--r--include/dt-bindings/pinctrl/qcom,pmic-mpp.h1
-rw-r--r--include/dt-bindings/pinctrl/r7s72100-pinctrl.h1
-rw-r--r--include/dt-bindings/pinctrl/stm32f429-pinfunc.h1
-rw-r--r--include/dt-bindings/pinctrl/stm32f746-pinfunc.h1
-rw-r--r--include/dt-bindings/pinctrl/stm32h7-pinfunc.h1
-rw-r--r--include/dt-bindings/power/mt8173-power.h1
-rw-r--r--include/dt-bindings/power/rk3288-power.h1
-rw-r--r--include/dt-bindings/power/rk3328-power.h1
-rw-r--r--include/dt-bindings/power/rk3368-power.h1
-rw-r--r--include/dt-bindings/power/rk3399-power.h1
-rw-r--r--include/dt-bindings/pwm/pwm.h1
-rw-r--r--include/dt-bindings/reset/cortina,gemini-reset.h1
-rw-r--r--include/dt-bindings/reset/hisi,hi6220-resets.h1
-rw-r--r--include/dt-bindings/reset/pistachio-resets.h1
-rw-r--r--include/dt-bindings/reset/snps,hsdk-reset.h17
-rw-r--r--include/dt-bindings/reset/snps,hsdk-v1-reset.h17
-rw-r--r--include/dt-bindings/reset/stih407-resets.h1
-rw-r--r--include/dt-bindings/reset/stih415-resets.h1
-rw-r--r--include/dt-bindings/reset/stih416-resets.h1
-rw-r--r--include/dt-bindings/reset/tegra124-car.h1
-rw-r--r--include/dt-bindings/reset/tegra210-car.h1
-rw-r--r--include/dt-bindings/soc/rockchip,boot-mode.h1
-rw-r--r--include/dt-bindings/sound/apq8016-lpass.h1
-rw-r--r--include/dt-bindings/sound/audio-jack-events.h1
-rw-r--r--include/dt-bindings/sound/cs35l32.h1
-rw-r--r--include/dt-bindings/sound/fsl-imx-audmux.h1
-rw-r--r--include/dt-bindings/sound/samsung-i2s.h1
-rw-r--r--include/dt-bindings/sound/tas2552.h1
-rw-r--r--include/dt-bindings/sound/tlv320aic31xx-micbias.h1
-rw-r--r--include/dt-bindings/thermal/lm90.h1
-rw-r--r--include/dt-bindings/thermal/tegra124-soctherm.h1
-rw-r--r--include/keys/ceph-type.h1
-rw-r--r--include/linux/8250_pci.h1
-rw-r--r--include/linux/a.out.h1
-rw-r--r--include/linux/acct.h1
-rw-r--r--include/linux/acpi_pmtmr.h1
-rw-r--r--include/linux/adb.h1
-rw-r--r--include/linux/adfs_fs.h1
-rw-r--r--include/linux/aer.h1
-rw-r--r--include/linux/ahci-remap.h1
-rw-r--r--include/linux/aio.h1
-rw-r--r--include/linux/alarmtimer.h1
-rw-r--r--include/linux/altera_jtaguart.h1
-rw-r--r--include/linux/altera_uart.h1
-rw-r--r--include/linux/amba/mmci.h1
-rw-r--r--include/linux/amifd.h1
-rw-r--r--include/linux/amifdreg.h1
-rw-r--r--include/linux/anon_inodes.h1
-rw-r--r--include/linux/apple_bl.h1
-rw-r--r--include/linux/arch_topology.h1
-rw-r--r--include/linux/ata_platform.h1
-rw-r--r--include/linux/atalk.h1
-rw-r--r--include/linux/atm.h1
-rw-r--r--include/linux/atm_tcp.h1
-rw-r--r--include/linux/atmdev.h1
-rw-r--r--include/linux/atmel-mci.h1
-rw-r--r--include/linux/atmel-ssc.h1
-rw-r--r--include/linux/atomic.h1
-rw-r--r--include/linux/audit.h12
-rw-r--r--include/linux/auxvec.h1
-rw-r--r--include/linux/average.h1
-rw-r--r--include/linux/backing-dev-defs.h1
-rw-r--r--include/linux/backing-dev.h1
-rw-r--r--include/linux/backlight.h1
-rw-r--r--include/linux/badblocks.h1
-rw-r--r--include/linux/balloon_compaction.h1
-rw-r--r--include/linux/bcd.h1
-rw-r--r--include/linux/bcm47xx_wdt.h1
-rw-r--r--include/linux/bcm963xx_nvram.h1
-rw-r--r--include/linux/bcm963xx_tag.h1
-rw-r--r--include/linux/bcma/bcma.h1
-rw-r--r--include/linux/bcma/bcma_driver_arm_c9.h1
-rw-r--r--include/linux/bcma/bcma_driver_chipcommon.h1
-rw-r--r--include/linux/bcma/bcma_driver_gmac_cmn.h1
-rw-r--r--include/linux/bcma/bcma_driver_mips.h1
-rw-r--r--include/linux/bcma/bcma_driver_pci.h1
-rw-r--r--include/linux/bcma/bcma_driver_pcie2.h1
-rw-r--r--include/linux/bcma/bcma_regs.h1
-rw-r--r--include/linux/bcma/bcma_soc.h1
-rw-r--r--include/linux/binfmts.h3
-rw-r--r--include/linux/bit_spinlock.h1
-rw-r--r--include/linux/bitfield.h2
-rw-r--r--include/linux/bitmap.h1
-rw-r--r--include/linux/bitops.h1
-rw-r--r--include/linux/bitrev.h1
-rw-r--r--include/linux/blk-cgroup.h1
-rw-r--r--include/linux/blk-mq-pci.h1
-rw-r--r--include/linux/blk-mq-virtio.h1
-rw-r--r--include/linux/blk-mq.h1
-rw-r--r--include/linux/blk_types.h1
-rw-r--r--include/linux/blkdev.h2
-rw-r--r--include/linux/blkpg.h1
-rw-r--r--include/linux/blktrace_api.h1
-rw-r--r--include/linux/blockgroup_lock.h1
-rw-r--r--include/linux/bootmem.h1
-rw-r--r--include/linux/bottom_half.h1
-rw-r--r--include/linux/bpf-cgroup.h1
-rw-r--r--include/linux/bpf.h5
-rw-r--r--include/linux/bpf_trace.h1
-rw-r--r--include/linux/bpf_types.h1
-rw-r--r--include/linux/brcmphy.h1
-rw-r--r--include/linux/bsearch.h1
-rw-r--r--include/linux/bsg.h1
-rw-r--r--include/linux/btree-128.h1
-rw-r--r--include/linux/btree-type.h1
-rw-r--r--include/linux/btree.h1
-rw-r--r--include/linux/btrfs.h1
-rw-r--r--include/linux/buffer_head.h2
-rw-r--r--include/linux/bug.h1
-rw-r--r--include/linux/build_bug.h1
-rw-r--r--include/linux/byteorder/big_endian.h1
-rw-r--r--include/linux/byteorder/generic.h1
-rw-r--r--include/linux/byteorder/little_endian.h1
-rw-r--r--include/linux/cache.h1
-rw-r--r--include/linux/cacheinfo.h1
-rw-r--r--include/linux/can/core.h1
-rw-r--r--include/linux/can/dev.h1
-rw-r--r--include/linux/can/platform/cc770.h1
-rw-r--r--include/linux/can/platform/mcp251x.h1
-rw-r--r--include/linux/can/platform/rcar_can.h1
-rw-r--r--include/linux/can/platform/sja1000.h1
-rw-r--r--include/linux/can/skb.h1
-rw-r--r--include/linux/capability.h1
-rw-r--r--include/linux/cciss_ioctl.h1
-rw-r--r--include/linux/cdev.h1
-rw-r--r--include/linux/cdrom.h1
-rw-r--r--include/linux/ceph/auth.h1
-rw-r--r--include/linux/ceph/buffer.h1
-rw-r--r--include/linux/ceph/ceph_debug.h1
-rw-r--r--include/linux/ceph/ceph_features.h1
-rw-r--r--include/linux/ceph/ceph_frag.h1
-rw-r--r--include/linux/ceph/ceph_fs.h1
-rw-r--r--include/linux/ceph/ceph_hash.h1
-rw-r--r--include/linux/ceph/cls_lock_client.h1
-rw-r--r--include/linux/ceph/debugfs.h1
-rw-r--r--include/linux/ceph/decode.h1
-rw-r--r--include/linux/ceph/libceph.h1
-rw-r--r--include/linux/ceph/mdsmap.h1
-rw-r--r--include/linux/ceph/messenger.h1
-rw-r--r--include/linux/ceph/mon_client.h1
-rw-r--r--include/linux/ceph/msgpool.h1
-rw-r--r--include/linux/ceph/msgr.h1
-rw-r--r--include/linux/ceph/osd_client.h1
-rw-r--r--include/linux/ceph/osdmap.h1
-rw-r--r--include/linux/ceph/pagelist.h1
-rw-r--r--include/linux/ceph/rados.h1
-rw-r--r--include/linux/ceph/string_table.h1
-rw-r--r--include/linux/ceph/types.h1
-rw-r--r--include/linux/cgroup-defs.h1
-rw-r--r--include/linux/cgroup.h1
-rw-r--r--include/linux/cgroup_subsys.h1
-rw-r--r--include/linux/circ_buf.h1
-rw-r--r--include/linux/cleancache.h1
-rw-r--r--include/linux/clk/mmp.h1
-rw-r--r--include/linux/clockchips.h1
-rw-r--r--include/linux/clocksource.h1
-rw-r--r--include/linux/cm4000_cs.h1
-rw-r--r--include/linux/cma.h1
-rw-r--r--include/linux/cmdline-parser.h1
-rw-r--r--include/linux/coda_psdev.h1
-rw-r--r--include/linux/compaction.h1
-rw-r--r--include/linux/compat.h10
-rw-r--r--include/linux/compiler-clang.h1
-rw-r--r--include/linux/compiler-gcc.h1
-rw-r--r--include/linux/compiler-intel.h1
-rw-r--r--include/linux/compiler.h1
-rw-r--r--include/linux/completion.h1
-rw-r--r--include/linux/component.h1
-rw-r--r--include/linux/console_struct.h1
-rw-r--r--include/linux/consolemap.h1
-rw-r--r--include/linux/context_tracking.h1
-rw-r--r--include/linux/context_tracking_state.h1
-rw-r--r--include/linux/coredump.h1
-rw-r--r--include/linux/coresight-stm.h1
-rw-r--r--include/linux/cpu.h1
-rw-r--r--include/linux/cpuhotplug.h22
-rw-r--r--include/linux/cpumask.h1
-rw-r--r--include/linux/cpuset.h1
-rw-r--r--include/linux/crash_core.h1
-rw-r--r--include/linux/crash_dump.h1
-rw-r--r--include/linux/crc-ccitt.h1
-rw-r--r--include/linux/crc-t10dif.h1
-rw-r--r--include/linux/crc32c.h1
-rw-r--r--include/linux/crc4.h1
-rw-r--r--include/linux/crc7.h1
-rw-r--r--include/linux/crush/crush.h1
-rw-r--r--include/linux/crush/hash.h1
-rw-r--r--include/linux/crush/mapper.h1
-rw-r--r--include/linux/cryptohash.h1
-rw-r--r--include/linux/ctype.h1
-rw-r--r--include/linux/cuda.h1
-rw-r--r--include/linux/cyclades.h1
-rw-r--r--include/linux/dax.h6
-rw-r--r--include/linux/dcache.h1
-rw-r--r--include/linux/dccp.h1
-rw-r--r--include/linux/dcookies.h1
-rw-r--r--include/linux/debug_locks.h1
-rw-r--r--include/linux/debugobjects.h1
-rw-r--r--include/linux/decompress/bunzip2.h1
-rw-r--r--include/linux/decompress/generic.h1
-rw-r--r--include/linux/decompress/inflate.h1
-rw-r--r--include/linux/decompress/mm.h1
-rw-r--r--include/linux/decompress/unlz4.h1
-rw-r--r--include/linux/decompress/unlzma.h1
-rw-r--r--include/linux/decompress/unlzo.h1
-rw-r--r--include/linux/delay.h1
-rw-r--r--include/linux/delayed_call.h1
-rw-r--r--include/linux/dell-led.h1
-rw-r--r--include/linux/device-mapper.h7
-rw-r--r--include/linux/device.h4
-rw-r--r--include/linux/device_cgroup.h1
-rw-r--r--include/linux/dio.h1
-rw-r--r--include/linux/dirent.h1
-rw-r--r--include/linux/dma-direction.h1
-rw-r--r--include/linux/dma-mapping.h1
-rw-r--r--include/linux/dma/mmp-pdma.h1
-rw-r--r--include/linux/dma/pxa-dma.h1
-rw-r--r--include/linux/dma_remapping.h1
-rw-r--r--include/linux/dmi.h1
-rw-r--r--include/linux/dnotify.h1
-rw-r--r--include/linux/dqblk_qtree.h1
-rw-r--r--include/linux/dqblk_v1.h1
-rw-r--r--include/linux/dqblk_v2.h1
-rw-r--r--include/linux/drbd_genl.h1
-rw-r--r--include/linux/drbd_genl_api.h1
-rw-r--r--include/linux/drbd_limits.h1
-rw-r--r--include/linux/ds2782_battery.h1
-rw-r--r--include/linux/dtlk.h1
-rw-r--r--include/linux/dynamic_debug.h1
-rw-r--r--include/linux/dynamic_queue_limits.h1
-rw-r--r--include/linux/earlycpio.h1
-rw-r--r--include/linux/ecryptfs.h1
-rw-r--r--include/linux/eeprom_93xx46.h1
-rw-r--r--include/linux/efi-bgrt.h1
-rw-r--r--include/linux/efi.h1
-rw-r--r--include/linux/efs_vh.h1
-rw-r--r--include/linux/eisa.h1
-rw-r--r--include/linux/elevator.h1
-rw-r--r--include/linux/elf-randomize.h1
-rw-r--r--include/linux/elf.h1
-rw-r--r--include/linux/elfcore-compat.h1
-rw-r--r--include/linux/elfcore.h1
-rw-r--r--include/linux/elfnote.h1
-rw-r--r--include/linux/err.h1
-rw-r--r--include/linux/errno.h1
-rw-r--r--include/linux/errqueue.h1
-rw-r--r--include/linux/errseq.h1
-rw-r--r--include/linux/ethtool.h1
-rw-r--r--include/linux/eventfd.h1
-rw-r--r--include/linux/evm.h1
-rw-r--r--include/linux/exportfs.h1
-rw-r--r--include/linux/ext2_fs.h1
-rw-r--r--include/linux/extable.h1
-rw-r--r--include/linux/falloc.h1
-rw-r--r--include/linux/fanotify.h1
-rw-r--r--include/linux/fault-inject.h1
-rw-r--r--include/linux/fb.h11
-rw-r--r--include/linux/fbcon.h12
-rw-r--r--include/linux/fcntl.h1
-rw-r--r--include/linux/fd.h1
-rw-r--r--include/linux/fdtable.h1
-rw-r--r--include/linux/file.h1
-rw-r--r--include/linux/filter.h3
-rw-r--r--include/linux/fips.h1
-rw-r--r--include/linux/firewire.h1
-rw-r--r--include/linux/firmware.h1
-rw-r--r--include/linux/flat.h1
-rw-r--r--include/linux/flex_array.h1
-rw-r--r--include/linux/flex_proportions.h1
-rw-r--r--include/linux/fmc-sdb.h1
-rw-r--r--include/linux/fpga/fpga-bridge.h1
-rw-r--r--include/linux/frame.h1
-rw-r--r--include/linux/freezer.h1
-rw-r--r--include/linux/frontswap.h1
-rw-r--r--include/linux/fs.h68
-rw-r--r--include/linux/fs_pin.h1
-rw-r--r--include/linux/fs_stack.h1
-rw-r--r--include/linux/fs_struct.h1
-rw-r--r--include/linux/fscrypt_common.h1
-rw-r--r--include/linux/fscrypt_notsupp.h1
-rw-r--r--include/linux/fscrypt_supp.h1
-rw-r--r--include/linux/fsl/edac.h1
-rw-r--r--include/linux/fsnotify.h1
-rw-r--r--include/linux/fsnotify_backend.h1
-rw-r--r--include/linux/ftrace.h1
-rw-r--r--include/linux/ftrace_irq.h1
-rw-r--r--include/linux/futex.h1
-rw-r--r--include/linux/gcd.h1
-rw-r--r--include/linux/genetlink.h1
-rw-r--r--include/linux/genhd.h1
-rw-r--r--include/linux/genl_magic_func.h1
-rw-r--r--include/linux/genl_magic_struct.h1
-rw-r--r--include/linux/getcpu.h1
-rw-r--r--include/linux/gfp.h3
-rw-r--r--include/linux/glob.h1
-rw-r--r--include/linux/goldfish.h1
-rw-r--r--include/linux/gpio-pxa.h1
-rw-r--r--include/linux/gpio.h1
-rw-r--r--include/linux/gpio/consumer.h1
-rw-r--r--include/linux/gpio/driver.h1
-rw-r--r--include/linux/gpio/gpio-reg.h1
-rw-r--r--include/linux/gpio/machine.h1
-rw-r--r--include/linux/gpio_keys.h1
-rw-r--r--include/linux/hardirq.h1
-rw-r--r--include/linux/hashtable.h1
-rw-r--r--include/linux/hdlcdrv.h1
-rw-r--r--include/linux/highmem.h1
-rw-r--r--include/linux/highuid.h1
-rw-r--r--include/linux/hpet.h1
-rw-r--r--include/linux/htcpld.h1
-rw-r--r--include/linux/htirq.h1
-rw-r--r--include/linux/huge_mm.h1
-rw-r--r--include/linux/hugetlb.h1
-rw-r--r--include/linux/hugetlb_inline.h1
-rw-r--r--include/linux/hw_breakpoint.h1
-rw-r--r--include/linux/hyperv.h2
-rw-r--r--include/linux/hypervisor.h1
-rw-r--r--include/linux/i2c-algo-pca.h1
-rw-r--r--include/linux/i2c-omap.h1
-rw-r--r--include/linux/i2c-pca-platform.h1
-rw-r--r--include/linux/i2c-pxa.h1
-rw-r--r--include/linux/i7300_idle.h1
-rw-r--r--include/linux/icmpv6.h1
-rw-r--r--include/linux/ide.h1
-rw-r--r--include/linux/if_link.h1
-rw-r--r--include/linux/if_ltalk.h1
-rw-r--r--include/linux/if_macvlan.h1
-rw-r--r--include/linux/if_phonet.h1
-rw-r--r--include/linux/if_tap.h5
-rw-r--r--include/linux/if_tunnel.h1
-rw-r--r--include/linux/ihex.h1
-rw-r--r--include/linux/iio/adc/ad_sigma_delta.h3
-rw-r--r--include/linux/iio/buffer_impl.h1
-rw-r--r--include/linux/iio/dac/ad5421.h1
-rw-r--r--include/linux/iio/kfifo_buf.h1
-rw-r--r--include/linux/iio/magnetometer/ak8975.h1
-rw-r--r--include/linux/iio/triggered_buffer.h1
-rw-r--r--include/linux/iio/triggered_event.h1
-rw-r--r--include/linux/inet_diag.h1
-rw-r--r--include/linux/inetdevice.h1
-rw-r--r--include/linux/init.h1
-rw-r--r--include/linux/init_ohci1394_dma.h1
-rw-r--r--include/linux/init_task.h1
-rw-r--r--include/linux/initrd.h1
-rw-r--r--include/linux/inotify.h1
-rw-r--r--include/linux/input.h8
-rw-r--r--include/linux/input/cy8ctmg110_pdata.h1
-rw-r--r--include/linux/input/gp2ap002a00f.h1
-rw-r--r--include/linux/input/gpio_tilt.h1
-rw-r--r--include/linux/input/ili210x.h1
-rw-r--r--include/linux/input/matrix_keypad.h1
-rw-r--r--include/linux/input/sh_keysc.h1
-rw-r--r--include/linux/interrupt.h1
-rw-r--r--include/linux/interval_tree.h1
-rw-r--r--include/linux/io-64-nonatomic-hi-lo.h1
-rw-r--r--include/linux/io-64-nonatomic-lo-hi.h1
-rw-r--r--include/linux/iocontext.h1
-rw-r--r--include/linux/iomap.h1
-rw-r--r--include/linux/iommu-common.h1
-rw-r--r--include/linux/iommu-helper.h1
-rw-r--r--include/linux/iommu.h2
-rw-r--r--include/linux/ioport.h1
-rw-r--r--include/linux/ioprio.h1
-rw-r--r--include/linux/ipc.h1
-rw-r--r--include/linux/ipc_namespace.h1
-rw-r--r--include/linux/ipv6.h1
-rw-r--r--include/linux/irq.h8
-rw-r--r--include/linux/irq_cpustat.h1
-rw-r--r--include/linux/irq_poll.h1
-rw-r--r--include/linux/irq_work.h1
-rw-r--r--include/linux/irqchip/arm-gic-v3.h2
-rw-r--r--include/linux/irqchip/metag-ext.h1
-rw-r--r--include/linux/irqchip/metag.h1
-rw-r--r--include/linux/irqchip/mips-gic.h297
-rw-r--r--include/linux/irqchip/mmp.h1
-rw-r--r--include/linux/irqchip/versatile-fpga.h1
-rw-r--r--include/linux/irqdesc.h1
-rw-r--r--include/linux/irqdomain.h1
-rw-r--r--include/linux/irqflags.h1
-rw-r--r--include/linux/irqhandler.h1
-rw-r--r--include/linux/irqnr.h1
-rw-r--r--include/linux/irqreturn.h1
-rw-r--r--include/linux/isa.h1
-rw-r--r--include/linux/isicom.h1
-rw-r--r--include/linux/jiffies.h1
-rw-r--r--include/linux/journal-head.h1
-rw-r--r--include/linux/jump_label.h1
-rw-r--r--include/linux/jump_label_ratelimit.h1
-rw-r--r--include/linux/jz4740-adc.h1
-rw-r--r--include/linux/kallsyms.h1
-rw-r--r--include/linux/kasan-checks.h1
-rw-r--r--include/linux/kasan.h1
-rw-r--r--include/linux/kbd_diacr.h1
-rw-r--r--include/linux/kbd_kern.h1
-rw-r--r--include/linux/kbuild.h1
-rw-r--r--include/linux/kconfig.h1
-rw-r--r--include/linux/kcore.h1
-rw-r--r--include/linux/kcov.h1
-rw-r--r--include/linux/kd.h1
-rw-r--r--include/linux/kdebug.h1
-rw-r--r--include/linux/kdev_t.h1
-rw-r--r--include/linux/kern_levels.h1
-rw-r--r--include/linux/kernel-page-flags.h1
-rw-r--r--include/linux/kernel.h91
-rw-r--r--include/linux/kernel_stat.h1
-rw-r--r--include/linux/kernelcapi.h1
-rw-r--r--include/linux/kexec.h1
-rw-r--r--include/linux/key.h47
-rw-r--r--include/linux/keyboard.h1
-rw-r--r--include/linux/khugepaged.h1
-rw-r--r--include/linux/kmemcheck.h1
-rw-r--r--include/linux/kobj_map.h1
-rw-r--r--include/linux/ksm.h1
-rw-r--r--include/linux/kthread.h1
-rw-r--r--include/linux/kvm_para.h1
-rw-r--r--include/linux/l2tp.h1
-rw-r--r--include/linux/lapb.h1
-rw-r--r--include/linux/latencytop.h1
-rw-r--r--include/linux/lcd.h1
-rw-r--r--include/linux/lcm.h1
-rw-r--r--include/linux/leds_pwm.h1
-rw-r--r--include/linux/libfdt.h1
-rw-r--r--include/linux/libfdt_env.h1
-rw-r--r--include/linux/lightnvm.h1
-rw-r--r--include/linux/linkage.h1
-rw-r--r--include/linux/linux_logo.h1
-rw-r--r--include/linux/lis3lv02d.h1
-rw-r--r--include/linux/list.h1
-rw-r--r--include/linux/list_bl.h1
-rw-r--r--include/linux/list_lru.h1
-rw-r--r--include/linux/list_nulls.h1
-rw-r--r--include/linux/list_sort.h1
-rw-r--r--include/linux/lockd/bind.h1
-rw-r--r--include/linux/lockd/debug.h1
-rw-r--r--include/linux/lockd/lockd.h1
-rw-r--r--include/linux/lockd/nlm.h1
-rw-r--r--include/linux/lockd/share.h1
-rw-r--r--include/linux/lockd/xdr.h1
-rw-r--r--include/linux/lockd/xdr4.h1
-rw-r--r--include/linux/lockdep.h1
-rw-r--r--include/linux/lockref.h1
-rw-r--r--include/linux/lp.h1
-rw-r--r--include/linux/lsm_audit.h1
-rw-r--r--include/linux/lzo.h1
-rw-r--r--include/linux/mISDNdsp.h1
-rw-r--r--include/linux/maple.h1
-rw-r--r--include/linux/marvell_phy.h1
-rw-r--r--include/linux/math64.h1
-rw-r--r--include/linux/mbcache.h1
-rw-r--r--include/linux/mbus.h4
-rw-r--r--include/linux/mc6821.h1
-rw-r--r--include/linux/mdio-bitbang.h1
-rw-r--r--include/linux/mei_cl_bus.h1
-rw-r--r--include/linux/memory.h1
-rw-r--r--include/linux/memory_hotplug.h1
-rw-r--r--include/linux/mempolicy.h1
-rw-r--r--include/linux/mempool.h1
-rw-r--r--include/linux/memremap.h1
-rw-r--r--include/linux/mfd/da903x.h1
-rw-r--r--include/linux/mfd/dln2.h1
-rw-r--r--include/linux/mfd/ds1wm.h1
-rw-r--r--include/linux/mfd/ezx-pcap.h1
-rw-r--r--include/linux/mfd/imx25-tsadc.h1
-rw-r--r--include/linux/mfd/ipaq-micro.h1
-rw-r--r--include/linux/mfd/menelaus.h1
-rw-r--r--include/linux/mfd/pcf50633/pmic.h1
-rw-r--r--include/linux/mfd/qcom_rpm.h1
-rw-r--r--include/linux/mfd/rdc321x.h1
-rw-r--r--include/linux/mfd/tmio.h1
-rw-r--r--include/linux/mfd/tps6586x.h1
-rw-r--r--include/linux/migrate.h1
-rw-r--r--include/linux/migrate_mode.h1
-rw-r--r--include/linux/mii.h1
-rw-r--r--include/linux/miscdevice.h1
-rw-r--r--include/linux/mlx5/device.h5
-rw-r--r--include/linux/mlx5/driver.h1
-rw-r--r--include/linux/mlx5/mlx5_ifc.h3
-rw-r--r--include/linux/mlx5/port.h2
-rw-r--r--include/linux/mm.h3
-rw-r--r--include/linux/mm_inline.h1
-rw-r--r--include/linux/mm_types.h4
-rw-r--r--include/linux/mm_types_task.h1
-rw-r--r--include/linux/mman.h1
-rw-r--r--include/linux/mmc/host.h2
-rw-r--r--include/linux/mmc/sdhci-pci-data.h1
-rw-r--r--include/linux/mmc/sdio_ids.h1
-rw-r--r--include/linux/mmdebug.h1
-rw-r--r--include/linux/mmiotrace.h1
-rw-r--r--include/linux/mmu_context.h1
-rw-r--r--include/linux/mmu_notifier.h6
-rw-r--r--include/linux/mmzone.h11
-rw-r--r--include/linux/mnt_namespace.h1
-rw-r--r--include/linux/mod_devicetable.h4
-rw-r--r--include/linux/module.h2
-rw-r--r--include/linux/moduleloader.h1
-rw-r--r--include/linux/moduleparam.h1
-rw-r--r--include/linux/mount.h1
-rw-r--r--include/linux/mpage.h1
-rw-r--r--include/linux/mpls.h1
-rw-r--r--include/linux/mpls_iptunnel.h1
-rw-r--r--include/linux/mroute.h1
-rw-r--r--include/linux/mroute6.h1
-rw-r--r--include/linux/msdos_fs.h1
-rw-r--r--include/linux/msg.h16
-rw-r--r--include/linux/msi.h1
-rw-r--r--include/linux/mtd/inftl.h1
-rw-r--r--include/linux/mtd/mtdram.h1
-rw-r--r--include/linux/mtd/nand-gpio.h1
-rw-r--r--include/linux/mtd/pfow.h1
-rw-r--r--include/linux/mtd/qinfo.h1
-rw-r--r--include/linux/mutex.h1
-rw-r--r--include/linux/mv643xx_eth.h1
-rw-r--r--include/linux/namei.h1
-rw-r--r--include/linux/netdevice.h3
-rw-r--r--include/linux/netfilter.h1
-rw-r--r--include/linux/netfilter/ipset/ip_set_bitmap.h1
-rw-r--r--include/linux/netfilter/ipset/ip_set_getport.h1
-rw-r--r--include/linux/netfilter/ipset/ip_set_hash.h1
-rw-r--r--include/linux/netfilter/ipset/ip_set_list.h1
-rw-r--r--include/linux/netfilter/ipset/pfxlen.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_amanda.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_common.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_dccp.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_ftp.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_h323.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_irc.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_pptp.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_proto_gre.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_sane.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_sctp.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_sip.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_snmp.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_tcp.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_tftp.h1
-rw-r--r--include/linux/netfilter/nf_conntrack_zones_common.h1
-rw-r--r--include/linux/netfilter/nfnetlink.h1
-rw-r--r--include/linux/netfilter/nfnetlink_acct.h1
-rw-r--r--include/linux/netfilter/x_tables.h1
-rw-r--r--include/linux/netfilter/xt_hashlimit.h1
-rw-r--r--include/linux/netfilter/xt_physdev.h1
-rw-r--r--include/linux/netfilter_arp/arp_tables.h1
-rw-r--r--include/linux/netfilter_bridge.h1
-rw-r--r--include/linux/netfilter_bridge/ebt_802_3.h1
-rw-r--r--include/linux/netfilter_bridge/ebtables.h8
-rw-r--r--include/linux/netfilter_defs.h1
-rw-r--r--include/linux/netfilter_ingress.h1
-rw-r--r--include/linux/netfilter_ipv4/ip_tables.h1
-rw-r--r--include/linux/netfilter_ipv6/ip6_tables.h1
-rw-r--r--include/linux/netlink.h1
-rw-r--r--include/linux/netpoll.h1
-rw-r--r--include/linux/nfs.h1
-rw-r--r--include/linux/nfs3.h1
-rw-r--r--include/linux/nfs4.h1
-rw-r--r--include/linux/nfs_fs.h1
-rw-r--r--include/linux/nfs_fs_i.h1
-rw-r--r--include/linux/nfs_fs_sb.h1
-rw-r--r--include/linux/nfs_iostat.h1
-rw-r--r--include/linux/nfs_page.h1
-rw-r--r--include/linux/nfs_xdr.h1
-rw-r--r--include/linux/nfsacl.h1
-rw-r--r--include/linux/nls.h1
-rw-r--r--include/linux/nmi.h122
-rw-r--r--include/linux/node.h1
-rw-r--r--include/linux/nodemask.h1
-rw-r--r--include/linux/notifier.h1
-rw-r--r--include/linux/ns_common.h1
-rw-r--r--include/linux/nsc_gpio.h1
-rw-r--r--include/linux/nsproxy.h1
-rw-r--r--include/linux/nubus.h1
-rw-r--r--include/linux/numa.h1
-rw-r--r--include/linux/nvme-fc-driver.h13
-rw-r--r--include/linux/nvme.h19
-rw-r--r--include/linux/nvram.h1
-rw-r--r--include/linux/of.h10
-rw-r--r--include/linux/of_address.h1
-rw-r--r--include/linux/of_device.h1
-rw-r--r--include/linux/of_iommu.h1
-rw-r--r--include/linux/of_irq.h1
-rw-r--r--include/linux/of_pci.h1
-rw-r--r--include/linux/of_platform.h7
-rw-r--r--include/linux/of_reserved_mem.h1
-rw-r--r--include/linux/olpc-ec.h1
-rw-r--r--include/linux/omap-dma.h1
-rw-r--r--include/linux/once.h1
-rw-r--r--include/linux/oom.h1
-rw-r--r--include/linux/osq_lock.h1
-rw-r--r--include/linux/oxu210hp.h1
-rw-r--r--include/linux/page-flags-layout.h1
-rw-r--r--include/linux/page-flags.h1
-rw-r--r--include/linux/page-isolation.h1
-rw-r--r--include/linux/page_counter.h1
-rw-r--r--include/linux/page_ext.h1
-rw-r--r--include/linux/page_idle.h1
-rw-r--r--include/linux/page_owner.h1
-rw-r--r--include/linux/page_ref.h1
-rw-r--r--include/linux/pagemap.h1
-rw-r--r--include/linux/pagevec.h1
-rw-r--r--include/linux/parport_pc.h1
-rw-r--r--include/linux/parser.h1
-rw-r--r--include/linux/patchkey.h1
-rw-r--r--include/linux/path.h1
-rw-r--r--include/linux/pci-acpi.h1
-rw-r--r--include/linux/pci-aspm.h1
-rw-r--r--include/linux/pci-ats.h1
-rw-r--r--include/linux/pci-dma-compat.h1
-rw-r--r--include/linux/pci-dma.h1
-rw-r--r--include/linux/pci.h3
-rw-r--r--include/linux/pci_ids.h1
-rw-r--r--include/linux/pcieport_if.h1
-rw-r--r--include/linux/percpu-refcount.h1
-rw-r--r--include/linux/percpu-rwsem.h1
-rw-r--r--include/linux/percpu.h1
-rw-r--r--include/linux/percpu_counter.h1
-rw-r--r--include/linux/percpu_ida.h1
-rw-r--r--include/linux/perf_regs.h1
-rw-r--r--include/linux/personality.h1
-rw-r--r--include/linux/pfn.h1
-rw-r--r--include/linux/pfn_t.h1
-rw-r--r--include/linux/phy/ulpi_phy.h1
-rw-r--r--include/linux/phy_fixed.h1
-rw-r--r--include/linux/pid.h1
-rw-r--r--include/linux/pid_namespace.h1
-rw-r--r--include/linux/pim.h1
-rw-r--r--include/linux/pinctrl/pinctrl-state.h1
-rw-r--r--include/linux/pipe_fs_i.h1
-rw-r--r--include/linux/pkeys.h1
-rw-r--r--include/linux/platform_data/ad7291.h1
-rw-r--r--include/linux/platform_data/ad7791.h1
-rw-r--r--include/linux/platform_data/ad7879.h1
-rw-r--r--include/linux/platform_data/asoc-imx-ssi.h1
-rw-r--r--include/linux/platform_data/asoc-kirkwood.h1
-rw-r--r--include/linux/platform_data/asoc-mx27vis.h1
-rw-r--r--include/linux/platform_data/asoc-palm27x.h1
-rw-r--r--include/linux/platform_data/bcmgenet.h1
-rw-r--r--include/linux/platform_data/crypto-atmel.h1
-rw-r--r--include/linux/platform_data/dma-ep93xx.h1
-rw-r--r--include/linux/platform_data/dma-imx-sdma.h1
-rw-r--r--include/linux/platform_data/dma-mv_xor.h1
-rw-r--r--include/linux/platform_data/ds620.h1
-rw-r--r--include/linux/platform_data/efm32-spi.h1
-rw-r--r--include/linux/platform_data/efm32-uart.h1
-rw-r--r--include/linux/platform_data/gpio-htc-egpio.h1
-rw-r--r--include/linux/platform_data/i2c-nuc900.h1
-rw-r--r--include/linux/platform_data/irda-pxaficp.h1
-rw-r--r--include/linux/platform_data/itco_wdt.h1
-rw-r--r--include/linux/platform_data/keyboard-pxa930_rotary.h1
-rw-r--r--include/linux/platform_data/keypad-ep93xx.h1
-rw-r--r--include/linux/platform_data/keypad-pxa27x.h1
-rw-r--r--include/linux/platform_data/keypad-w90p910.h1
-rw-r--r--include/linux/platform_data/lcd-mipid.h1
-rw-r--r--include/linux/platform_data/max3421-hcd.h1
-rw-r--r--include/linux/platform_data/max6639.h1
-rw-r--r--include/linux/platform_data/max732x.h1
-rw-r--r--include/linux/platform_data/media/ir-rx51.h1
-rw-r--r--include/linux/platform_data/media/mmp-camera.h1
-rw-r--r--include/linux/platform_data/media/omap4iss.h1
-rw-r--r--include/linux/platform_data/mmc-davinci.h1
-rw-r--r--include/linux/platform_data/mmc-mxcmmc.h1
-rw-r--r--include/linux/platform_data/mmc-pxamci.h1
-rw-r--r--include/linux/platform_data/mmc-s3cmci.h1
-rw-r--r--include/linux/platform_data/mmc-sdhci-s3c.h1
-rw-r--r--include/linux/platform_data/mouse-pxa930_trkball.h1
-rw-r--r--include/linux/platform_data/mtd-nand-pxa3xx.h1
-rw-r--r--include/linux/platform_data/omap1_bl.h1
-rw-r--r--include/linux/platform_data/pca953x.h1
-rw-r--r--include/linux/platform_data/pcf857x.h1
-rw-r--r--include/linux/platform_data/pcmcia-pxa2xx_viper.h1
-rw-r--r--include/linux/platform_data/pinctrl-single.h1
-rw-r--r--include/linux/platform_data/pixcir_i2c_ts.h1
-rw-r--r--include/linux/platform_data/pxa2xx_udc.h1
-rw-r--r--include/linux/platform_data/sa11x0-serial.h1
-rw-r--r--include/linux/platform_data/si5351.h1
-rw-r--r--include/linux/platform_data/spi-ep93xx.h1
-rw-r--r--include/linux/platform_data/spi-imx.h1
-rw-r--r--include/linux/platform_data/spi-omap2-mcspi.h1
-rw-r--r--include/linux/platform_data/st1232_pdata.h1
-rw-r--r--include/linux/platform_data/syscon.h1
-rw-r--r--include/linux/platform_data/tsc2007.h1
-rw-r--r--include/linux/platform_data/tsl2563.h1
-rw-r--r--include/linux/platform_data/usb-ehci-mxc.h1
-rw-r--r--include/linux/platform_data/usb-ohci-pxa27x.h1
-rw-r--r--include/linux/platform_data/usb3503.h1
-rw-r--r--include/linux/platform_data/video-clcd-versatile.h1
-rw-r--r--include/linux/platform_data/video-ep93xx.h1
-rw-r--r--include/linux/platform_data/video-imxfb.h1
-rw-r--r--include/linux/platform_data/video_s3c.h1
-rw-r--r--include/linux/pm-trace.h1
-rw-r--r--include/linux/pm_qos.h1
-rw-r--r--include/linux/pmu.h1
-rw-r--r--include/linux/pnp.h1
-rw-r--r--include/linux/poison.h1
-rw-r--r--include/linux/poll.h1
-rw-r--r--include/linux/posix-timers.h1
-rw-r--r--include/linux/posix_acl.h1
-rw-r--r--include/linux/posix_acl_xattr.h1
-rw-r--r--include/linux/power/bq27xxx_battery.h1
-rw-r--r--include/linux/pr.h1
-rw-r--r--include/linux/preempt.h1
-rw-r--r--include/linux/prefetch.h1
-rw-r--r--include/linux/prime_numbers.h1
-rw-r--r--include/linux/printk.h1
-rw-r--r--include/linux/proc_fs.h1
-rw-r--r--include/linux/proc_ns.h1
-rw-r--r--include/linux/processor.h1
-rw-r--r--include/linux/profile.h1
-rw-r--r--include/linux/projid.h1
-rw-r--r--include/linux/ptrace.h1
-rw-r--r--include/linux/purgatory.h1
-rw-r--r--include/linux/pvclock_gtod.h1
-rw-r--r--include/linux/pwm.h1
-rw-r--r--include/linux/pwm_backlight.h1
-rw-r--r--include/linux/pxa168_eth.h1
-rw-r--r--include/linux/qed/qed_fcoe_if.h1
-rw-r--r--include/linux/qnx6_fs.h1
-rw-r--r--include/linux/quicklist.h1
-rw-r--r--include/linux/quotaops.h1
-rw-r--r--include/linux/raid/xor.h1
-rw-r--r--include/linux/ramfs.h1
-rw-r--r--include/linux/random.h1
-rw-r--r--include/linux/range.h1
-rw-r--r--include/linux/ras.h1
-rw-r--r--include/linux/ratelimit.h1
-rw-r--r--include/linux/rational.h1
-rw-r--r--include/linux/rbtree_latch.h1
-rw-r--r--include/linux/rculist.h3
-rw-r--r--include/linux/rculist_bl.h1
-rw-r--r--include/linux/rculist_nulls.h1
-rw-r--r--include/linux/rcupdate.h22
-rw-r--r--include/linux/rcupdate_wait.h1
-rw-r--r--include/linux/rcuwait.h1
-rw-r--r--include/linux/reboot-mode.h1
-rw-r--r--include/linux/reboot.h1
-rw-r--r--include/linux/reciprocal_div.h1
-rw-r--r--include/linux/refcount.h1
-rw-r--r--include/linux/regulator/of_regulator.h1
-rw-r--r--include/linux/regulator/userspace-consumer.h1
-rw-r--r--include/linux/relay.h1
-rw-r--r--include/linux/reset-controller.h1
-rw-r--r--include/linux/reset.h1
-rw-r--r--include/linux/resource.h1
-rw-r--r--include/linux/restart_block.h1
-rw-r--r--include/linux/ring_buffer.h1
-rw-r--r--include/linux/rmap.h1
-rw-r--r--include/linux/rndis.h1
-rw-r--r--include/linux/root_dev.h1
-rw-r--r--include/linux/rpmsg/qcom_smd.h1
-rw-r--r--include/linux/rtc.h1
-rw-r--r--include/linux/rtmutex.h1
-rw-r--r--include/linux/rtnetlink.h1
-rw-r--r--include/linux/rwsem-spinlock.h1
-rw-r--r--include/linux/rwsem.h1
-rw-r--r--include/linux/s3c_adc_battery.h1
-rw-r--r--include/linux/scatterlist.h1
-rw-r--r--include/linux/scc.h1
-rw-r--r--include/linux/sched.h65
-rw-r--r--include/linux/sched/autogroup.h1
-rw-r--r--include/linux/sched/clock.h1
-rw-r--r--include/linux/sched/coredump.h1
-rw-r--r--include/linux/sched/cpufreq.h1
-rw-r--r--include/linux/sched/cputime.h1
-rw-r--r--include/linux/sched/deadline.h1
-rw-r--r--include/linux/sched/debug.h1
-rw-r--r--include/linux/sched/hotplug.h1
-rw-r--r--include/linux/sched/idle.h1
-rw-r--r--include/linux/sched/init.h1
-rw-r--r--include/linux/sched/jobctl.h1
-rw-r--r--include/linux/sched/loadavg.h1
-rw-r--r--include/linux/sched/mm.h23
-rw-r--r--include/linux/sched/nohz.h1
-rw-r--r--include/linux/sched/numa_balancing.h1
-rw-r--r--include/linux/sched/prio.h1
-rw-r--r--include/linux/sched/rt.h1
-rw-r--r--include/linux/sched/signal.h1
-rw-r--r--include/linux/sched/stat.h1
-rw-r--r--include/linux/sched/sysctl.h1
-rw-r--r--include/linux/sched/task.h1
-rw-r--r--include/linux/sched/task_stack.h1
-rw-r--r--include/linux/sched/topology.h9
-rw-r--r--include/linux/sched/user.h1
-rw-r--r--include/linux/sched/wake_q.h1
-rw-r--r--include/linux/sched/xacct.h1
-rw-r--r--include/linux/screen_info.h1
-rw-r--r--include/linux/sctp.h34
-rw-r--r--include/linux/scx200.h1
-rw-r--r--include/linux/scx200_gpio.h1
-rw-r--r--include/linux/sdb.h1
-rw-r--r--include/linux/seccomp.h4
-rw-r--r--include/linux/securebits.h1
-rw-r--r--include/linux/seg6.h1
-rw-r--r--include/linux/seg6_genl.h1
-rw-r--r--include/linux/seg6_hmac.h1
-rw-r--r--include/linux/seg6_iptunnel.h1
-rw-r--r--include/linux/selection.h1
-rw-r--r--include/linux/sem.h4
-rw-r--r--include/linux/seq_buf.h1
-rw-r--r--include/linux/seq_file.h1
-rw-r--r--include/linux/seq_file_net.h1
-rw-r--r--include/linux/seqlock.h1
-rw-r--r--include/linux/serial_bcm63xx.h1
-rw-r--r--include/linux/serial_sci.h1
-rw-r--r--include/linux/sh_clk.h1
-rw-r--r--include/linux/sh_eth.h1
-rw-r--r--include/linux/sh_intc.h1
-rw-r--r--include/linux/sh_timer.h1
-rw-r--r--include/linux/shm.h7
-rw-r--r--include/linux/shmem_fs.h1
-rw-r--r--include/linux/shrinker.h1
-rw-r--r--include/linux/signal.h1
-rw-r--r--include/linux/signal_types.h1
-rw-r--r--include/linux/signalfd.h1
-rw-r--r--include/linux/sirfsoc_dma.h1
-rw-r--r--include/linux/slab.h1
-rw-r--r--include/linux/slab_def.h1
-rw-r--r--include/linux/slub_def.h1
-rw-r--r--include/linux/smc911x.h1
-rw-r--r--include/linux/smc91x.h1
-rw-r--r--include/linux/smp.h1
-rw-r--r--include/linux/smpboot.h5
-rw-r--r--include/linux/smscphy.h1
-rw-r--r--include/linux/soc/brcmstb/brcmstb.h1
-rw-r--r--include/linux/soc/dove/pmu.h1
-rw-r--r--include/linux/soc/mediatek/infracfg.h1
-rw-r--r--include/linux/soc/qcom/mdt_loader.h1
-rw-r--r--include/linux/soc/qcom/smd-rpm.h1
-rw-r--r--include/linux/soc/qcom/smem.h1
-rw-r--r--include/linux/soc/qcom/smem_state.h1
-rw-r--r--include/linux/soc/qcom/wcnss_ctrl.h1
-rw-r--r--include/linux/soc/renesas/rcar-rst.h1
-rw-r--r--include/linux/soc/renesas/rcar-sysc.h1
-rw-r--r--include/linux/sock_diag.h1
-rw-r--r--include/linux/socket.h1
-rw-r--r--include/linux/sonet.h1
-rw-r--r--include/linux/sony-laptop.h1
-rw-r--r--include/linux/sort.h1
-rw-r--r--include/linux/sound.h1
-rw-r--r--include/linux/spi/ad7877.h1
-rw-r--r--include/linux/spi/ads7846.h1
-rw-r--r--include/linux/spi/at73c213.h1
-rw-r--r--include/linux/spi/corgi_lcd.h1
-rw-r--r--include/linux/spi/ds1305.h1
-rw-r--r--include/linux/spi/eeprom.h1
-rw-r--r--include/linux/spi/flash.h1
-rw-r--r--include/linux/spi/ifx_modem.h1
-rw-r--r--include/linux/spi/max7301.h1
-rw-r--r--include/linux/spi/mc33880.h1
-rw-r--r--include/linux/spi/mcp23s08.h1
-rw-r--r--include/linux/spi/mmc_spi.h1
-rw-r--r--include/linux/spi/sh_msiof.h1
-rw-r--r--include/linux/spi/spi_bitbang.h1
-rw-r--r--include/linux/spi/spi_gpio.h1
-rw-r--r--include/linux/spi/spi_oc_tiny.h1
-rw-r--r--include/linux/spi/tdo24m.h1
-rw-r--r--include/linux/spi/xilinx_spi.h1
-rw-r--r--include/linux/spinlock.h1
-rw-r--r--include/linux/splice.h1
-rw-r--r--include/linux/srcu.h1
-rw-r--r--include/linux/ssb/ssb.h1
-rw-r--r--include/linux/ssb/ssb_driver_gige.h1
-rw-r--r--include/linux/ssb/ssb_driver_mips.h1
-rw-r--r--include/linux/ssb/ssb_driver_pci.h1
-rw-r--r--include/linux/ssb/ssb_embedded.h1
-rw-r--r--include/linux/ssb/ssb_regs.h1
-rw-r--r--include/linux/stackprotector.h1
-rw-r--r--include/linux/stacktrace.h1
-rw-r--r--include/linux/start_kernel.h1
-rw-r--r--include/linux/stat.h1
-rw-r--r--include/linux/statfs.h1
-rw-r--r--include/linux/stddef.h1
-rw-r--r--include/linux/stmmac.h8
-rw-r--r--include/linux/stop_machine.h1
-rw-r--r--include/linux/string.h1
-rw-r--r--include/linux/string_helpers.h1
-rw-r--r--include/linux/stringhash.h1
-rw-r--r--include/linux/sungem_phy.h1
-rw-r--r--include/linux/sunrpc/addr.h1
-rw-r--r--include/linux/sunrpc/auth.h1
-rw-r--r--include/linux/sunrpc/auth_gss.h1
-rw-r--r--include/linux/sunrpc/clnt.h1
-rw-r--r--include/linux/sunrpc/debug.h1
-rw-r--r--include/linux/sunrpc/gss_api.h1
-rw-r--r--include/linux/sunrpc/metrics.h1
-rw-r--r--include/linux/sunrpc/msg_prot.h1
-rw-r--r--include/linux/sunrpc/rpc_pipe_fs.h1
-rw-r--r--include/linux/sunrpc/sched.h1
-rw-r--r--include/linux/sunrpc/stats.h1
-rw-r--r--include/linux/sunrpc/svc.h1
-rw-r--r--include/linux/sunrpc/svc_xprt.h1
-rw-r--r--include/linux/sunrpc/svcauth.h1
-rw-r--r--include/linux/sunrpc/svcauth_gss.h1
-rw-r--r--include/linux/sunrpc/svcsock.h1
-rw-r--r--include/linux/sunrpc/timer.h1
-rw-r--r--include/linux/sunrpc/types.h1
-rw-r--r--include/linux/sunrpc/xdr.h1
-rw-r--r--include/linux/sunrpc/xprt.h1
-rw-r--r--include/linux/sunrpc/xprtmultipath.h1
-rw-r--r--include/linux/sunrpc/xprtsock.h1
-rw-r--r--include/linux/sunserialcore.h1
-rw-r--r--include/linux/suspend.h1
-rw-r--r--include/linux/svga.h1
-rw-r--r--include/linux/sw842.h1
-rw-r--r--include/linux/swab.h1
-rw-r--r--include/linux/swait.h86
-rw-r--r--include/linux/swap.h5
-rw-r--r--include/linux/swap_cgroup.h1
-rw-r--r--include/linux/swap_slots.h1
-rw-r--r--include/linux/swapfile.h1
-rw-r--r--include/linux/swapops.h1
-rw-r--r--include/linux/swiotlb.h1
-rw-r--r--include/linux/sys.h1
-rw-r--r--include/linux/syscalls.h14
-rw-r--r--include/linux/sysctl.h1
-rw-r--r--include/linux/sysfs.h1
-rw-r--r--include/linux/sysrq.h1
-rw-r--r--include/linux/sysv_fs.h1
-rw-r--r--include/linux/t10-pi.h1
-rw-r--r--include/linux/task_io_accounting.h1
-rw-r--r--include/linux/task_io_accounting_ops.h1
-rw-r--r--include/linux/task_work.h1
-rw-r--r--include/linux/taskstats_kern.h1
-rw-r--r--include/linux/textsearch.h1
-rw-r--r--include/linux/textsearch_fsm.h1
-rw-r--r--include/linux/thinkpad_acpi.h1
-rw-r--r--include/linux/thread_info.h3
-rw-r--r--include/linux/threads.h1
-rw-r--r--include/linux/tick.h1
-rw-r--r--include/linux/time.h3
-rw-r--r--include/linux/time64.h1
-rw-r--r--include/linux/timekeeper_internal.h1
-rw-r--r--include/linux/timekeeping.h1
-rw-r--r--include/linux/timer.h15
-rw-r--r--include/linux/timerfd.h1
-rw-r--r--include/linux/timerqueue.h1
-rw-r--r--include/linux/tpm_command.h1
-rw-r--r--include/linux/trace.h1
-rw-r--r--include/linux/trace_clock.h1
-rw-r--r--include/linux/trace_events.h2
-rw-r--r--include/linux/trace_seq.h1
-rw-r--r--include/linux/tracepoint-defs.h1
-rw-r--r--include/linux/tsacct_kern.h1
-rw-r--r--include/linux/tty.h1
-rw-r--r--include/linux/tty_driver.h1
-rw-r--r--include/linux/tty_flip.h1
-rw-r--r--include/linux/tty_ldisc.h1
-rw-r--r--include/linux/typecheck.h1
-rw-r--r--include/linux/types.h1
-rw-r--r--include/linux/u64_stats_sync.h1
-rw-r--r--include/linux/uaccess.h1
-rw-r--r--include/linux/ucs2_string.h1
-rw-r--r--include/linux/uidgid.h1
-rw-r--r--include/linux/ulpi/driver.h1
-rw-r--r--include/linux/ulpi/interface.h1
-rw-r--r--include/linux/ulpi/regs.h1
-rw-r--r--include/linux/unaligned/access_ok.h1
-rw-r--r--include/linux/unaligned/be_byteshift.h1
-rw-r--r--include/linux/unaligned/be_memmove.h1
-rw-r--r--include/linux/unaligned/be_struct.h1
-rw-r--r--include/linux/unaligned/generic.h1
-rw-r--r--include/linux/unaligned/le_byteshift.h1
-rw-r--r--include/linux/unaligned/le_memmove.h1
-rw-r--r--include/linux/unaligned/le_struct.h1
-rw-r--r--include/linux/unaligned/memmove.h1
-rw-r--r--include/linux/usb.h1
-rw-r--r--include/linux/usb/atmel_usba_udc.h1
-rw-r--r--include/linux/usb/ch9.h1
-rw-r--r--include/linux/usb/chipidea.h1
-rw-r--r--include/linux/usb/ehci-dbgp.h1
-rw-r--r--include/linux/usb/ezusb.h1
-rw-r--r--include/linux/usb/functionfs.h1
-rw-r--r--include/linux/usb/gadget_configfs.h1
-rw-r--r--include/linux/usb/iowarrior.h1
-rw-r--r--include/linux/usb/irda.h1
-rw-r--r--include/linux/usb/isp116x.h1
-rw-r--r--include/linux/usb/isp1362.h1
-rw-r--r--include/linux/usb/isp1760.h1
-rw-r--r--include/linux/usb/musb.h1
-rw-r--r--include/linux/usb/otg.h1
-rw-r--r--include/linux/usb/phy.h1
-rw-r--r--include/linux/usb/quirks.h1
-rw-r--r--include/linux/usb/sl811.h1
-rw-r--r--include/linux/usb/typec.h1
-rw-r--r--include/linux/usb/uas.h1
-rw-r--r--include/linux/usb/usb_phy_generic.h1
-rw-r--r--include/linux/usb_usual.h1
-rw-r--r--include/linux/user-return-notifier.h1
-rw-r--r--include/linux/user_namespace.h1
-rw-r--r--include/linux/userfaultfd_k.h1
-rw-r--r--include/linux/util_macros.h1
-rw-r--r--include/linux/uts.h1
-rw-r--r--include/linux/utsname.h1
-rw-r--r--include/linux/vermagic.h1
-rw-r--r--include/linux/vfs.h1
-rw-r--r--include/linux/via.h1
-rw-r--r--include/linux/virtio.h1
-rw-r--r--include/linux/virtio_byteorder.h1
-rw-r--r--include/linux/virtio_config.h1
-rw-r--r--include/linux/virtio_net.h1
-rw-r--r--include/linux/virtio_ring.h1
-rw-r--r--include/linux/virtio_vsock.h1
-rw-r--r--include/linux/vm_event_item.h1
-rw-r--r--include/linux/vmacache.h1
-rw-r--r--include/linux/vmalloc.h1
-rw-r--r--include/linux/vme.h1
-rw-r--r--include/linux/vmpressure.h1
-rw-r--r--include/linux/vmstat.h1
-rw-r--r--include/linux/vt.h1
-rw-r--r--include/linux/vt_buffer.h1
-rw-r--r--include/linux/vt_kern.h1
-rw-r--r--include/linux/vtime.h1
-rw-r--r--include/linux/wait.h4
-rw-r--r--include/linux/wait_bit.h1
-rw-r--r--include/linux/wanrouter.h1
-rw-r--r--include/linux/watchdog.h1
-rw-r--r--include/linux/win_minmax.h1
-rw-r--r--include/linux/wireless.h1
-rw-r--r--include/linux/wm97xx.h1
-rw-r--r--include/linux/workqueue.h1
-rw-r--r--include/linux/writeback.h1
-rw-r--r--include/linux/ww_mutex.h1
-rw-r--r--include/linux/xattr.h1
-rw-r--r--include/linux/xxhash.h236
-rw-r--r--include/linux/z2_battery.h1
-rw-r--r--include/linux/zbud.h1
-rw-r--r--include/linux/zpool.h1
-rw-r--r--include/linux/zstd.h1157
-rw-r--r--include/media/blackfin/bfin_capture.h1
-rw-r--r--include/media/drv-intf/saa7146.h1
-rw-r--r--include/media/drv-intf/saa7146_vv.h1
-rw-r--r--include/media/drv-intf/sh_mobile_ceu.h1
-rw-r--r--include/media/i2c-addr.h1
-rw-r--r--include/media/i2c/ir-kbd-i2c.h1
-rw-r--r--include/media/i2c/mt9p031.h1
-rw-r--r--include/media/i2c/mt9t001.h1
-rw-r--r--include/media/i2c/mt9v032.h1
-rw-r--r--include/media/tuner-types.h1
-rw-r--r--include/media/tveeprom.h1
-rw-r--r--include/media/v4l2-dev.h1
-rw-r--r--include/media/v4l2-ioctl.h1
-rw-r--r--include/media/videobuf-dvb.h1
-rw-r--r--include/media/videobuf2-dvb.h1
-rw-r--r--include/net/Space.h1
-rw-r--r--include/net/act_api.h9
-rw-r--r--include/net/addrconf.h1
-rw-r--r--include/net/af_unix.h1
-rw-r--r--include/net/ah.h1
-rw-r--r--include/net/arp.h1
-rw-r--r--include/net/atmclip.h1
-rw-r--r--include/net/ax25.h1
-rw-r--r--include/net/compat.h1
-rw-r--r--include/net/datalink.h1
-rw-r--r--include/net/dn.h1
-rw-r--r--include/net/dn_dev.h1
-rw-r--r--include/net/dn_fib.h1
-rw-r--r--include/net/dn_neigh.h1
-rw-r--r--include/net/dsfield.h1
-rw-r--r--include/net/dst.h23
-rw-r--r--include/net/dst_cache.h1
-rw-r--r--include/net/dst_metadata.h1
-rw-r--r--include/net/dst_ops.h1
-rw-r--r--include/net/esp.h1
-rw-r--r--include/net/fib_rules.h1
-rw-r--r--include/net/firewire.h1
-rw-r--r--include/net/flow.h1
-rw-r--r--include/net/flow_dissector.h1
-rw-r--r--include/net/fou.h1
-rw-r--r--include/net/fq_impl.h9
-rw-r--r--include/net/garp.h1
-rw-r--r--include/net/gen_stats.h1
-rw-r--r--include/net/genetlink.h1
-rw-r--r--include/net/geneve.h1
-rw-r--r--include/net/gre.h1
-rw-r--r--include/net/gro_cells.h1
-rw-r--r--include/net/gtp.h1
-rw-r--r--include/net/gue.h1
-rw-r--r--include/net/hwbm.h1
-rw-r--r--include/net/ife.h1
-rw-r--r--include/net/inet_common.h1
-rw-r--r--include/net/inet_ecn.h1
-rw-r--r--include/net/inet_frag.h1
-rw-r--r--include/net/inet_sock.h8
-rw-r--r--include/net/inetpeer.h1
-rw-r--r--include/net/ip6_route.h1
-rw-r--r--include/net/ip6_tunnel.h1
-rw-r--r--include/net/ip_tunnels.h1
-rw-r--r--include/net/ip_vs.h1
-rw-r--r--include/net/ipcomp.h1
-rw-r--r--include/net/ipconfig.h1
-rw-r--r--include/net/ipx.h1
-rw-r--r--include/net/iucv/af_iucv.h1
-rw-r--r--include/net/iucv/iucv.h1
-rw-r--r--include/net/iw_handler.h1
-rw-r--r--include/net/lapb.h1
-rw-r--r--include/net/lib80211.h1
-rw-r--r--include/net/lwtunnel.h1
-rw-r--r--include/net/mld.h1
-rw-r--r--include/net/mrp.h1
-rw-r--r--include/net/ncsi.h1
-rw-r--r--include/net/ndisc.h1
-rw-r--r--include/net/neighbour.h1
-rw-r--r--include/net/net_namespace.h1
-rw-r--r--include/net/net_ratelimit.h1
-rw-r--r--include/net/netevent.h1
-rw-r--r--include/net/netfilter/br_netfilter.h1
-rw-r--r--include/net/netfilter/ipv4/nf_conntrack_ipv4.h1
-rw-r--r--include/net/netfilter/ipv4/nf_defrag_ipv4.h1
-rw-r--r--include/net/netfilter/ipv4/nf_dup_ipv4.h1
-rw-r--r--include/net/netfilter/ipv4/nf_nat_masquerade.h1
-rw-r--r--include/net/netfilter/ipv4/nf_reject.h1
-rw-r--r--include/net/netfilter/ipv6/nf_conntrack_icmpv6.h1
-rw-r--r--include/net/netfilter/ipv6/nf_conntrack_ipv6.h1
-rw-r--r--include/net/netfilter/ipv6/nf_defrag_ipv6.h1
-rw-r--r--include/net/netfilter/ipv6/nf_dup_ipv6.h1
-rw-r--r--include/net/netfilter/ipv6/nf_nat_masquerade.h1
-rw-r--r--include/net/netfilter/ipv6/nf_reject.h1
-rw-r--r--include/net/netfilter/nf_conntrack.h1
-rw-r--r--include/net/netfilter/nf_conntrack_core.h1
-rw-r--r--include/net/netfilter/nf_conntrack_ecache.h1
-rw-r--r--include/net/netfilter/nf_conntrack_expect.h1
-rw-r--r--include/net/netfilter/nf_conntrack_extend.h1
-rw-r--r--include/net/netfilter/nf_conntrack_helper.h1
-rw-r--r--include/net/netfilter/nf_conntrack_l3proto.h1
-rw-r--r--include/net/netfilter/nf_conntrack_l4proto.h1
-rw-r--r--include/net/netfilter/nf_conntrack_labels.h1
-rw-r--r--include/net/netfilter/nf_conntrack_seqadj.h1
-rw-r--r--include/net/netfilter/nf_conntrack_synproxy.h1
-rw-r--r--include/net/netfilter/nf_conntrack_timeout.h1
-rw-r--r--include/net/netfilter/nf_conntrack_timestamp.h1
-rw-r--r--include/net/netfilter/nf_conntrack_tuple.h1
-rw-r--r--include/net/netfilter/nf_conntrack_zones.h1
-rw-r--r--include/net/netfilter/nf_dup_netdev.h1
-rw-r--r--include/net/netfilter/nf_log.h1
-rw-r--r--include/net/netfilter/nf_nat.h1
-rw-r--r--include/net/netfilter/nf_nat_core.h1
-rw-r--r--include/net/netfilter/nf_nat_helper.h1
-rw-r--r--include/net/netfilter/nf_nat_l3proto.h1
-rw-r--r--include/net/netfilter/nf_nat_l4proto.h1
-rw-r--r--include/net/netfilter/nf_nat_redirect.h1
-rw-r--r--include/net/netfilter/nf_queue.h1
-rw-r--r--include/net/netfilter/nf_socket.h1
-rw-r--r--include/net/netfilter/nf_tables.h1
-rw-r--r--include/net/netfilter/nf_tables_core.h1
-rw-r--r--include/net/netfilter/nf_tables_ipv4.h1
-rw-r--r--include/net/netfilter/nf_tables_ipv6.h1
-rw-r--r--include/net/netfilter/nfnetlink_log.h1
-rw-r--r--include/net/netfilter/nft_dup.h1
-rw-r--r--include/net/netfilter/nft_fib.h1
-rw-r--r--include/net/netfilter/nft_masq.h1
-rw-r--r--include/net/netfilter/nft_meta.h1
-rw-r--r--include/net/netfilter/nft_redir.h1
-rw-r--r--include/net/netfilter/nft_reject.h1
-rw-r--r--include/net/netfilter/xt_rateest.h1
-rw-r--r--include/net/netlink.h74
-rw-r--r--include/net/netns/can.h1
-rw-r--r--include/net/netns/conntrack.h1
-rw-r--r--include/net/netns/core.h1
-rw-r--r--include/net/netns/dccp.h1
-rw-r--r--include/net/netns/generic.h1
-rw-r--r--include/net/netns/hash.h1
-rw-r--r--include/net/netns/ieee802154_6lowpan.h1
-rw-r--r--include/net/netns/ipv4.h1
-rw-r--r--include/net/netns/ipv6.h1
-rw-r--r--include/net/netns/mib.h1
-rw-r--r--include/net/netns/mpls.h1
-rw-r--r--include/net/netns/netfilter.h1
-rw-r--r--include/net/netns/nftables.h1
-rw-r--r--include/net/netns/packet.h1
-rw-r--r--include/net/netns/sctp.h1
-rw-r--r--include/net/netns/unix.h1
-rw-r--r--include/net/netns/x_tables.h1
-rw-r--r--include/net/netns/xfrm.h1
-rw-r--r--include/net/netrom.h1
-rw-r--r--include/net/nexthop.h1
-rw-r--r--include/net/p8022.h1
-rw-r--r--include/net/pkt_cls.h4
-rw-r--r--include/net/pkt_sched.h1
-rw-r--r--include/net/pptp.h1
-rw-r--r--include/net/protocol.h4
-rw-r--r--include/net/psample.h1
-rw-r--r--include/net/psnap.h1
-rw-r--r--include/net/rawv6.h1
-rw-r--r--include/net/red.h1
-rw-r--r--include/net/rose.h1
-rw-r--r--include/net/route.h6
-rw-r--r--include/net/rtnetlink.h1
-rw-r--r--include/net/sch_generic.h3
-rw-r--r--include/net/scm.h1
-rw-r--r--include/net/sctp/sctp.h3
-rw-r--r--include/net/sctp/sm.h2
-rw-r--r--include/net/sctp/ulpevent.h8
-rw-r--r--include/net/secure_seq.h1
-rw-r--r--include/net/smc.h1
-rw-r--r--include/net/sock.h2
-rw-r--r--include/net/sock_reuseport.h1
-rw-r--r--include/net/stp.h1
-rw-r--r--include/net/strparser.h3
-rw-r--r--include/net/tc_act/tc_connmark.h1
-rw-r--r--include/net/tc_act/tc_csum.h1
-rw-r--r--include/net/tc_act/tc_defact.h1
-rw-r--r--include/net/tc_act/tc_gact.h1
-rw-r--r--include/net/tc_act/tc_ife.h1
-rw-r--r--include/net/tc_act/tc_ipt.h1
-rw-r--r--include/net/tc_act/tc_mirred.h1
-rw-r--r--include/net/tc_act/tc_nat.h1
-rw-r--r--include/net/tc_act/tc_pedit.h1
-rw-r--r--include/net/tc_act/tc_sample.h1
-rw-r--r--include/net/tcp.h15
-rw-r--r--include/net/transp_v6.h1
-rw-r--r--include/net/tso.h1
-rw-r--r--include/net/udp.h2
-rw-r--r--include/net/udp_tunnel.h1
-rw-r--r--include/net/udplite.h1
-rw-r--r--include/net/vxlan.h1
-rw-r--r--include/net/wext.h1
-rw-r--r--include/net/x25.h1
-rw-r--r--include/net/x25device.h1
-rw-r--r--include/net/xfrm.h1
-rw-r--r--include/ras/ras_event.h1
-rw-r--r--include/rdma/ib_verbs.h6
-rw-r--r--include/rdma/rdma_netlink.h1
-rw-r--r--include/scsi/osd_attributes.h1
-rw-r--r--include/scsi/scsi.h1
-rw-r--r--include/scsi/scsi_cmnd.h1
-rw-r--r--include/scsi/scsi_common.h1
-rw-r--r--include/scsi/scsi_dbg.h1
-rw-r--r--include/scsi/scsi_device.h1
-rw-r--r--include/scsi/scsi_devinfo.h1
-rw-r--r--include/scsi/scsi_driver.h1
-rw-r--r--include/scsi/scsi_eh.h1
-rw-r--r--include/scsi/scsi_host.h1
-rw-r--r--include/scsi/scsi_ioctl.h1
-rw-r--r--include/scsi/scsi_proto.h1
-rw-r--r--include/scsi/scsi_request.h1
-rw-r--r--include/scsi/scsi_tcq.h1
-rw-r--r--include/scsi/scsi_transport_sas.h1
-rw-r--r--include/scsi/scsi_transport_srp.h1
-rw-r--r--include/scsi/scsicam.h1
-rw-r--r--include/scsi/sg.h1
-rw-r--r--include/sound/aci.h1
-rw-r--r--include/sound/alc5623.h1
-rw-r--r--include/sound/control.h3
-rw-r--r--include/sound/hda_chmap.h1
-rw-r--r--include/sound/hda_i915.h1
-rw-r--r--include/sound/hda_register.h1
-rw-r--r--include/sound/hda_regmap.h1
-rw-r--r--include/sound/hda_verbs.h2
-rw-r--r--include/sound/hdaudio.h1
-rw-r--r--include/sound/hdaudio_ext.h1
-rw-r--r--include/sound/l3.h1
-rw-r--r--include/sound/pcm_drm_eld.h1
-rw-r--r--include/sound/pcm_iec958.h1
-rw-r--r--include/sound/pxa2xx-lib.h1
-rw-r--r--include/sound/s3c24xx_uda134x.h1
-rw-r--r--include/sound/seq_virmidi.h1
-rw-r--r--include/sound/snd_wavefront.h1
-rw-r--r--include/sound/tas5086.h1
-rw-r--r--include/target/iscsi/iscsi_target_core.h1
-rw-r--r--include/target/iscsi/iscsi_target_stat.h1
-rw-r--r--include/target/iscsi/iscsi_transport.h1
-rw-r--r--include/target/target_core_backend.h1
-rw-r--r--include/target/target_core_base.h1
-rw-r--r--include/target/target_core_fabric.h1
-rw-r--r--include/trace/define_trace.h1
-rw-r--r--include/trace/events/9p.h1
-rw-r--r--include/trace/events/alarmtimer.h1
-rw-r--r--include/trace/events/asoc.h1
-rw-r--r--include/trace/events/bcache.h1
-rw-r--r--include/trace/events/block.h1
-rw-r--r--include/trace/events/bpf.h1
-rw-r--r--include/trace/events/btrfs.h1
-rw-r--r--include/trace/events/cgroup.h1
-rw-r--r--include/trace/events/cma.h1
-rw-r--r--include/trace/events/compaction.h1
-rw-r--r--include/trace/events/context_tracking.h1
-rw-r--r--include/trace/events/cpuhp.h1
-rw-r--r--include/trace/events/devlink.h1
-rw-r--r--include/trace/events/dma_fence.h1
-rw-r--r--include/trace/events/ext4.h1
-rw-r--r--include/trace/events/f2fs.h1
-rw-r--r--include/trace/events/fib.h1
-rw-r--r--include/trace/events/fib6.h1
-rw-r--r--include/trace/events/filelock.h1
-rw-r--r--include/trace/events/filemap.h1
-rw-r--r--include/trace/events/fs_dax.h1
-rw-r--r--include/trace/events/fsi.h1
-rw-r--r--include/trace/events/fsi_master_gpio.h1
-rw-r--r--include/trace/events/gpio.h1
-rw-r--r--include/trace/events/hswadsp.h1
-rw-r--r--include/trace/events/huge_memory.h1
-rw-r--r--include/trace/events/intel-sst.h1
-rw-r--r--include/trace/events/intel_ish.h1
-rw-r--r--include/trace/events/iommu.h1
-rw-r--r--include/trace/events/ipi.h1
-rw-r--r--include/trace/events/irq.h1
-rw-r--r--include/trace/events/jbd2.h1
-rw-r--r--include/trace/events/kmem.h1
-rw-r--r--include/trace/events/kvm.h5
-rw-r--r--include/trace/events/libata.h1
-rw-r--r--include/trace/events/lock.h1
-rw-r--r--include/trace/events/mce.h1
-rw-r--r--include/trace/events/mdio.h1
-rw-r--r--include/trace/events/migrate.h1
-rw-r--r--include/trace/events/mmc.h1
-rw-r--r--include/trace/events/mmflags.h2
-rw-r--r--include/trace/events/module.h1
-rw-r--r--include/trace/events/napi.h1
-rw-r--r--include/trace/events/net.h1
-rw-r--r--include/trace/events/nilfs2.h1
-rw-r--r--include/trace/events/nmi.h1
-rw-r--r--include/trace/events/oom.h1
-rw-r--r--include/trace/events/page_isolation.h1
-rw-r--r--include/trace/events/page_ref.h1
-rw-r--r--include/trace/events/pagemap.h1
-rw-r--r--include/trace/events/percpu.h1
-rw-r--r--include/trace/events/power.h1
-rw-r--r--include/trace/events/power_cpu_migrate.h1
-rw-r--r--include/trace/events/printk.h1
-rw-r--r--include/trace/events/random.h1
-rw-r--r--include/trace/events/rcu.h1
-rw-r--r--include/trace/events/regulator.h1
-rw-r--r--include/trace/events/rpm.h1
-rw-r--r--include/trace/events/sched.h20
-rw-r--r--include/trace/events/scsi.h1
-rw-r--r--include/trace/events/signal.h1
-rw-r--r--include/trace/events/skb.h1
-rw-r--r--include/trace/events/sock.h1
-rw-r--r--include/trace/events/spi.h1
-rw-r--r--include/trace/events/spmi.h1
-rw-r--r--include/trace/events/sunrpc.h1
-rw-r--r--include/trace/events/sunvnet.h1
-rw-r--r--include/trace/events/swiotlb.h1
-rw-r--r--include/trace/events/syscalls.h1
-rw-r--r--include/trace/events/target.h1
-rw-r--r--include/trace/events/task.h1
-rw-r--r--include/trace/events/thermal.h1
-rw-r--r--include/trace/events/thermal_power_allocator.h1
-rw-r--r--include/trace/events/thp.h1
-rw-r--r--include/trace/events/timer.h1
-rw-r--r--include/trace/events/tlb.h1
-rw-r--r--include/trace/events/udp.h1
-rw-r--r--include/trace/events/v4l2.h1
-rw-r--r--include/trace/events/vb2.h1
-rw-r--r--include/trace/events/vmscan.h1
-rw-r--r--include/trace/events/vsock_virtio_transport_common.h1
-rw-r--r--include/trace/events/wbt.h1
-rw-r--r--include/trace/events/workqueue.h1
-rw-r--r--include/trace/events/writeback.h1
-rw-r--r--include/trace/events/xdp.h5
-rw-r--r--include/trace/events/xen.h1
-rw-r--r--include/trace/perf.h1
-rw-r--r--include/trace/syscall.h1
-rw-r--r--include/trace/trace_events.h1
-rw-r--r--include/uapi/asm-generic/bitsperlong.h1
-rw-r--r--include/uapi/asm-generic/errno-base.h1
-rw-r--r--include/uapi/asm-generic/errno.h1
-rw-r--r--include/uapi/asm-generic/fcntl.h1
-rw-r--r--include/uapi/asm-generic/int-l64.h1
-rw-r--r--include/uapi/asm-generic/int-ll64.h1
-rw-r--r--include/uapi/asm-generic/ioctl.h1
-rw-r--r--include/uapi/asm-generic/ioctls.h1
-rw-r--r--include/uapi/asm-generic/ipcbuf.h1
-rw-r--r--include/uapi/asm-generic/mman-common.h1
-rw-r--r--include/uapi/asm-generic/mman.h1
-rw-r--r--include/uapi/asm-generic/msgbuf.h1
-rw-r--r--include/uapi/asm-generic/param.h1
-rw-r--r--include/uapi/asm-generic/poll.h1
-rw-r--r--include/uapi/asm-generic/posix_types.h1
-rw-r--r--include/uapi/asm-generic/resource.h1
-rw-r--r--include/uapi/asm-generic/sembuf.h1
-rw-r--r--include/uapi/asm-generic/setup.h1
-rw-r--r--include/uapi/asm-generic/shmbuf.h1
-rw-r--r--include/uapi/asm-generic/shmparam.h1
-rw-r--r--include/uapi/asm-generic/siginfo.h1
-rw-r--r--include/uapi/asm-generic/signal-defs.h1
-rw-r--r--include/uapi/asm-generic/signal.h1
-rw-r--r--include/uapi/asm-generic/socket.h1
-rw-r--r--include/uapi/asm-generic/sockios.h1
-rw-r--r--include/uapi/asm-generic/stat.h1
-rw-r--r--include/uapi/asm-generic/statfs.h1
-rw-r--r--include/uapi/asm-generic/swab.h1
-rw-r--r--include/uapi/asm-generic/termbits.h1
-rw-r--r--include/uapi/asm-generic/termios.h1
-rw-r--r--include/uapi/asm-generic/types.h1
-rw-r--r--include/uapi/asm-generic/ucontext.h1
-rw-r--r--include/uapi/asm-generic/unistd.h1
-rw-r--r--include/uapi/drm/armada_drm.h1
-rw-r--r--include/uapi/drm/etnaviv_drm.h1
-rw-r--r--include/uapi/drm/exynos_drm.h1
-rw-r--r--include/uapi/drm/i810_drm.h1
-rw-r--r--include/uapi/drm/omap_drm.h1
-rw-r--r--include/uapi/linux/a.out.h1
-rw-r--r--include/uapi/linux/acct.h1
-rw-r--r--include/uapi/linux/adb.h1
-rw-r--r--include/uapi/linux/adfs_fs.h1
-rw-r--r--include/uapi/linux/affs_hardblocks.h1
-rw-r--r--include/uapi/linux/am437x-vpfe.h1
-rw-r--r--include/uapi/linux/android/binder.h1
-rw-r--r--include/uapi/linux/apm_bios.h1
-rw-r--r--include/uapi/linux/arcfb.h1
-rw-r--r--include/uapi/linux/aspeed-lpc-ctrl.h1
-rw-r--r--include/uapi/linux/atalk.h1
-rw-r--r--include/uapi/linux/atm.h1
-rw-r--r--include/uapi/linux/atm_eni.h1
-rw-r--r--include/uapi/linux/atm_he.h1
-rw-r--r--include/uapi/linux/atm_idt77105.h1
-rw-r--r--include/uapi/linux/atm_nicstar.h1
-rw-r--r--include/uapi/linux/atm_tcp.h1
-rw-r--r--include/uapi/linux/atm_zatm.h1
-rw-r--r--include/uapi/linux/atmapi.h1
-rw-r--r--include/uapi/linux/atmarp.h1
-rw-r--r--include/uapi/linux/atmbr2684.h1
-rw-r--r--include/uapi/linux/atmclip.h1
-rw-r--r--include/uapi/linux/atmdev.h1
-rw-r--r--include/uapi/linux/atmioc.h1
-rw-r--r--include/uapi/linux/atmlec.h1
-rw-r--r--include/uapi/linux/atmmpc.h1
-rw-r--r--include/uapi/linux/atmppp.h1
-rw-r--r--include/uapi/linux/atmsap.h1
-rw-r--r--include/uapi/linux/atmsvc.h1
-rw-r--r--include/uapi/linux/audit.h1
-rw-r--r--include/uapi/linux/auto_dev-ioctl.h1
-rw-r--r--include/uapi/linux/auto_fs.h1
-rw-r--r--include/uapi/linux/auto_fs4.h1
-rw-r--r--include/uapi/linux/auxvec.h1
-rw-r--r--include/uapi/linux/ax25.h1
-rw-r--r--include/uapi/linux/b1lli.h1
-rw-r--r--include/uapi/linux/baycom.h1
-rw-r--r--include/uapi/linux/bcache.h1
-rw-r--r--include/uapi/linux/bcm933xx_hcs.h1
-rw-r--r--include/uapi/linux/bfs_fs.h1
-rw-r--r--include/uapi/linux/binfmts.h1
-rw-r--r--include/uapi/linux/blkpg.h1
-rw-r--r--include/uapi/linux/blktrace_api.h1
-rw-r--r--include/uapi/linux/blkzoned.h1
-rw-r--r--include/uapi/linux/bpf.h10
-rw-r--r--include/uapi/linux/bpf_common.h1
-rw-r--r--include/uapi/linux/bpf_perf_event.h1
-rw-r--r--include/uapi/linux/bpqether.h1
-rw-r--r--include/uapi/linux/bsg.h1
-rw-r--r--include/uapi/linux/bt-bmc.h1
-rw-r--r--include/uapi/linux/btrfs.h9
-rw-r--r--include/uapi/linux/btrfs_tree.h1
-rw-r--r--include/uapi/linux/byteorder/big_endian.h1
-rw-r--r--include/uapi/linux/byteorder/little_endian.h1
-rw-r--r--include/uapi/linux/caif/caif_socket.h1
-rw-r--r--include/uapi/linux/caif/if_caif.h1
-rw-r--r--include/uapi/linux/can.h1
-rw-r--r--include/uapi/linux/can/bcm.h1
-rw-r--r--include/uapi/linux/can/error.h1
-rw-r--r--include/uapi/linux/can/gw.h1
-rw-r--r--include/uapi/linux/can/netlink.h1
-rw-r--r--include/uapi/linux/can/raw.h1
-rw-r--r--include/uapi/linux/can/vxcan.h1
-rw-r--r--include/uapi/linux/capability.h1
-rw-r--r--include/uapi/linux/capi.h1
-rw-r--r--include/uapi/linux/cciss_defs.h1
-rw-r--r--include/uapi/linux/cciss_ioctl.h1
-rw-r--r--include/uapi/linux/cdrom.h1
-rw-r--r--include/uapi/linux/cec-funcs.h1
-rw-r--r--include/uapi/linux/cec.h1
-rw-r--r--include/uapi/linux/cgroupstats.h1
-rw-r--r--include/uapi/linux/chio.h1
-rw-r--r--include/uapi/linux/cifs/cifs_mount.h1
-rw-r--r--include/uapi/linux/cm4000_cs.h1
-rw-r--r--include/uapi/linux/cn_proc.h1
-rw-r--r--include/uapi/linux/coda_psdev.h1
-rw-r--r--include/uapi/linux/coff.h1
-rw-r--r--include/uapi/linux/connector.h1
-rw-r--r--include/uapi/linux/const.h1
-rw-r--r--include/uapi/linux/coresight-stm.h1
-rw-r--r--include/uapi/linux/cramfs_fs.h1
-rw-r--r--include/uapi/linux/cryptouser.h1
-rw-r--r--include/uapi/linux/cuda.h1
-rw-r--r--include/uapi/linux/cyclades.h1
-rw-r--r--include/uapi/linux/cycx_cfm.h1
-rw-r--r--include/uapi/linux/dcbnl.h1
-rw-r--r--include/uapi/linux/dccp.h1
-rw-r--r--include/uapi/linux/devlink.h1
-rw-r--r--include/uapi/linux/dlm.h1
-rw-r--r--include/uapi/linux/dlm_device.h1
-rw-r--r--include/uapi/linux/dlm_netlink.h1
-rw-r--r--include/uapi/linux/dlm_plock.h1
-rw-r--r--include/uapi/linux/dlmconstants.h1
-rw-r--r--include/uapi/linux/dm-ioctl.h5
-rw-r--r--include/uapi/linux/dm-log-userspace.h1
-rw-r--r--include/uapi/linux/dma-buf.h1
-rw-r--r--include/uapi/linux/dn.h1
-rw-r--r--include/uapi/linux/dqblk_xfs.h1
-rw-r--r--include/uapi/linux/dvb/audio.h1
-rw-r--r--include/uapi/linux/dvb/ca.h1
-rw-r--r--include/uapi/linux/dvb/dmx.h1
-rw-r--r--include/uapi/linux/dvb/frontend.h1
-rw-r--r--include/uapi/linux/dvb/net.h1
-rw-r--r--include/uapi/linux/dvb/osd.h1
-rw-r--r--include/uapi/linux/dvb/version.h1
-rw-r--r--include/uapi/linux/dvb/video.h1
-rw-r--r--include/uapi/linux/edd.h1
-rw-r--r--include/uapi/linux/efs_fs_sb.h1
-rw-r--r--include/uapi/linux/elf-em.h1
-rw-r--r--include/uapi/linux/elf-fdpic.h1
-rw-r--r--include/uapi/linux/elf.h1
-rw-r--r--include/uapi/linux/elfcore.h1
-rw-r--r--include/uapi/linux/errqueue.h1
-rw-r--r--include/uapi/linux/ethtool.h7
-rw-r--r--include/uapi/linux/eventpoll.h1
-rw-r--r--include/uapi/linux/fadvise.h1
-rw-r--r--include/uapi/linux/falloc.h1
-rw-r--r--include/uapi/linux/fanotify.h1
-rw-r--r--include/uapi/linux/fb.h1
-rw-r--r--include/uapi/linux/fcntl.h1
-rw-r--r--include/uapi/linux/fd.h1
-rw-r--r--include/uapi/linux/fdreg.h1
-rw-r--r--include/uapi/linux/fib_rules.h1
-rw-r--r--include/uapi/linux/fiemap.h1
-rw-r--r--include/uapi/linux/filter.h1
-rw-r--r--include/uapi/linux/flat.h1
-rw-r--r--include/uapi/linux/fou.h1
-rw-r--r--include/uapi/linux/fs.h1
-rw-r--r--include/uapi/linux/fsl_hypervisor.h1
-rw-r--r--include/uapi/linux/fsmap.h1
-rw-r--r--include/uapi/linux/fuse.h1
-rw-r--r--include/uapi/linux/futex.h1
-rw-r--r--include/uapi/linux/gameport.h1
-rw-r--r--include/uapi/linux/gen_stats.h1
-rw-r--r--include/uapi/linux/genetlink.h1
-rw-r--r--include/uapi/linux/genwqe/genwqe_card.h1
-rw-r--r--include/uapi/linux/gfs2_ondisk.h1
-rw-r--r--include/uapi/linux/gigaset_dev.h1
-rw-r--r--include/uapi/linux/gpio.h1
-rw-r--r--include/uapi/linux/gsmmux.h1
-rw-r--r--include/uapi/linux/gtp.h1
-rw-r--r--include/uapi/linux/hash_info.h1
-rw-r--r--include/uapi/linux/hdlc.h1
-rw-r--r--include/uapi/linux/hdlc/ioctl.h1
-rw-r--r--include/uapi/linux/hdlcdrv.h1
-rw-r--r--include/uapi/linux/hdreg.h1
-rw-r--r--include/uapi/linux/hid.h1
-rw-r--r--include/uapi/linux/hiddev.h1
-rw-r--r--include/uapi/linux/hidraw.h1
-rw-r--r--include/uapi/linux/hpet.h1
-rw-r--r--include/uapi/linux/hsi/cs-protocol.h1
-rw-r--r--include/uapi/linux/hsi/hsi_char.h1
-rw-r--r--include/uapi/linux/hsr_netlink.h1
-rw-r--r--include/uapi/linux/hw_breakpoint.h1
-rw-r--r--include/uapi/linux/hyperv.h1
-rw-r--r--include/uapi/linux/hysdn_if.h1
-rw-r--r--include/uapi/linux/i2c-dev.h1
-rw-r--r--include/uapi/linux/i2c.h1
-rw-r--r--include/uapi/linux/i2o-dev.h1
-rw-r--r--include/uapi/linux/i8k.h1
-rw-r--r--include/uapi/linux/icmp.h1
-rw-r--r--include/uapi/linux/icmpv6.h1
-rw-r--r--include/uapi/linux/if.h1
-rw-r--r--include/uapi/linux/if_addr.h1
-rw-r--r--include/uapi/linux/if_addrlabel.h1
-rw-r--r--include/uapi/linux/if_alg.h1
-rw-r--r--include/uapi/linux/if_arcnet.h1
-rw-r--r--include/uapi/linux/if_arp.h1
-rw-r--r--include/uapi/linux/if_bonding.h1
-rw-r--r--include/uapi/linux/if_bridge.h1
-rw-r--r--include/uapi/linux/if_cablemodem.h1
-rw-r--r--include/uapi/linux/if_eql.h1
-rw-r--r--include/uapi/linux/if_ether.h1
-rw-r--r--include/uapi/linux/if_fc.h1
-rw-r--r--include/uapi/linux/if_fddi.h1
-rw-r--r--include/uapi/linux/if_frad.h1
-rw-r--r--include/uapi/linux/if_hippi.h1
-rw-r--r--include/uapi/linux/if_infiniband.h1
-rw-r--r--include/uapi/linux/if_link.h1
-rw-r--r--include/uapi/linux/if_ltalk.h1
-rw-r--r--include/uapi/linux/if_macsec.h1
-rw-r--r--include/uapi/linux/if_packet.h1
-rw-r--r--include/uapi/linux/if_phonet.h1
-rw-r--r--include/uapi/linux/if_plip.h1
-rw-r--r--include/uapi/linux/if_pppol2tp.h1
-rw-r--r--include/uapi/linux/if_pppox.h1
-rw-r--r--include/uapi/linux/if_slip.h1
-rw-r--r--include/uapi/linux/if_team.h1
-rw-r--r--include/uapi/linux/if_tun.h1
-rw-r--r--include/uapi/linux/if_tunnel.h1
-rw-r--r--include/uapi/linux/if_vlan.h1
-rw-r--r--include/uapi/linux/if_x25.h1
-rw-r--r--include/uapi/linux/ife.h1
-rw-r--r--include/uapi/linux/igmp.h1
-rw-r--r--include/uapi/linux/iio/events.h1
-rw-r--r--include/uapi/linux/iio/types.h1
-rw-r--r--include/uapi/linux/ila.h1
-rw-r--r--include/uapi/linux/in.h1
-rw-r--r--include/uapi/linux/in6.h1
-rw-r--r--include/uapi/linux/in_route.h1
-rw-r--r--include/uapi/linux/inet_diag.h1
-rw-r--r--include/uapi/linux/inotify.h1
-rw-r--r--include/uapi/linux/input-event-codes.h1
-rw-r--r--include/uapi/linux/input.h1
-rw-r--r--include/uapi/linux/ioctl.h1
-rw-r--r--include/uapi/linux/ip.h1
-rw-r--r--include/uapi/linux/ip6_tunnel.h1
-rw-r--r--include/uapi/linux/ip_vs.h1
-rw-r--r--include/uapi/linux/ipc.h1
-rw-r--r--include/uapi/linux/ipmi.h1
-rw-r--r--include/uapi/linux/ipmi_msgdefs.h1
-rw-r--r--include/uapi/linux/ipsec.h1
-rw-r--r--include/uapi/linux/ipv6.h1
-rw-r--r--include/uapi/linux/ipv6_route.h1
-rw-r--r--include/uapi/linux/ipx.h1
-rw-r--r--include/uapi/linux/irda.h1
-rw-r--r--include/uapi/linux/isdn.h1
-rw-r--r--include/uapi/linux/isdn/capicmd.h1
-rw-r--r--include/uapi/linux/isdn_divertif.h1
-rw-r--r--include/uapi/linux/isdn_ppp.h1
-rw-r--r--include/uapi/linux/isdnif.h1
-rw-r--r--include/uapi/linux/iso_fs.h1
-rw-r--r--include/uapi/linux/ivtv.h1
-rw-r--r--include/uapi/linux/ivtvfb.h1
-rw-r--r--include/uapi/linux/ixjuser.h1
-rw-r--r--include/uapi/linux/joystick.h1
-rw-r--r--include/uapi/linux/kcm.h1
-rw-r--r--include/uapi/linux/kcmp.h1
-rw-r--r--include/uapi/linux/kcov.h1
-rw-r--r--include/uapi/linux/kd.h1
-rw-r--r--include/uapi/linux/kdev_t.h1
-rw-r--r--include/uapi/linux/kernel-page-flags.h1
-rw-r--r--include/uapi/linux/kernel.h1
-rw-r--r--include/uapi/linux/kernelcapi.h1
-rw-r--r--include/uapi/linux/kexec.h1
-rw-r--r--include/uapi/linux/keyboard.h1
-rw-r--r--include/uapi/linux/keyctl.h1
-rw-r--r--include/uapi/linux/kfd_ioctl.h172
-rw-r--r--include/uapi/linux/kvm.h1
-rw-r--r--include/uapi/linux/kvm_para.h1
-rw-r--r--include/uapi/linux/l2tp.h1
-rw-r--r--include/uapi/linux/libc-compat.h1
-rw-r--r--include/uapi/linux/lightnvm.h1
-rw-r--r--include/uapi/linux/limits.h1
-rw-r--r--include/uapi/linux/lirc.h1
-rw-r--r--include/uapi/linux/llc.h1
-rw-r--r--include/uapi/linux/loop.h1
-rw-r--r--include/uapi/linux/lp.h1
-rw-r--r--include/uapi/linux/lwtunnel.h1
-rw-r--r--include/uapi/linux/magic.h1
-rw-r--r--include/uapi/linux/major.h1
-rw-r--r--include/uapi/linux/map_to_7segment.h1
-rw-r--r--include/uapi/linux/matroxfb.h1
-rw-r--r--include/uapi/linux/max2175.h1
-rw-r--r--include/uapi/linux/mdio.h1
-rw-r--r--include/uapi/linux/media-bus-format.h1
-rw-r--r--include/uapi/linux/media.h1
-rw-r--r--include/uapi/linux/mei.h1
-rw-r--r--include/uapi/linux/membarrier.h23
-rw-r--r--include/uapi/linux/memfd.h1
-rw-r--r--include/uapi/linux/mempolicy.h1
-rw-r--r--include/uapi/linux/meye.h1
-rw-r--r--include/uapi/linux/mic_common.h1
-rw-r--r--include/uapi/linux/mic_ioctl.h1
-rw-r--r--include/uapi/linux/mii.h1
-rw-r--r--include/uapi/linux/minix_fs.h1
-rw-r--r--include/uapi/linux/mman.h1
-rw-r--r--include/uapi/linux/mmc/ioctl.h1
-rw-r--r--include/uapi/linux/mmtimer.h1
-rw-r--r--include/uapi/linux/module.h1
-rw-r--r--include/uapi/linux/mpls.h1
-rw-r--r--include/uapi/linux/mpls_iptunnel.h1
-rw-r--r--include/uapi/linux/mqueue.h1
-rw-r--r--include/uapi/linux/mroute.h1
-rw-r--r--include/uapi/linux/mroute6.h1
-rw-r--r--include/uapi/linux/msdos_fs.h1
-rw-r--r--include/uapi/linux/msg.h1
-rw-r--r--include/uapi/linux/mtio.h1
-rw-r--r--include/uapi/linux/n_r3964.h1
-rw-r--r--include/uapi/linux/nbd-netlink.h1
-rw-r--r--include/uapi/linux/nbd.h1
-rw-r--r--include/uapi/linux/ncp.h1
-rw-r--r--include/uapi/linux/ncp_fs.h1
-rw-r--r--include/uapi/linux/ncp_mount.h1
-rw-r--r--include/uapi/linux/ncp_no.h1
-rw-r--r--include/uapi/linux/neighbour.h1
-rw-r--r--include/uapi/linux/net.h1
-rw-r--r--include/uapi/linux/net_dropmon.h1
-rw-r--r--include/uapi/linux/net_namespace.h1
-rw-r--r--include/uapi/linux/net_tstamp.h1
-rw-r--r--include/uapi/linux/netconf.h1
-rw-r--r--include/uapi/linux/netdevice.h1
-rw-r--r--include/uapi/linux/netfilter.h1
-rw-r--r--include/uapi/linux/netfilter/ipset/ip_set.h1
-rw-r--r--include/uapi/linux/netfilter/ipset/ip_set_bitmap.h1
-rw-r--r--include/uapi/linux/netfilter/ipset/ip_set_hash.h1
-rw-r--r--include/uapi/linux/netfilter/ipset/ip_set_list.h1
-rw-r--r--include/uapi/linux/netfilter/nf_conntrack_common.h1
-rw-r--r--include/uapi/linux/netfilter/nf_conntrack_ftp.h1
-rw-r--r--include/uapi/linux/netfilter/nf_conntrack_sctp.h1
-rw-r--r--include/uapi/linux/netfilter/nf_conntrack_tcp.h1
-rw-r--r--include/uapi/linux/netfilter/nf_conntrack_tuple_common.h1
-rw-r--r--include/uapi/linux/netfilter/nf_log.h1
-rw-r--r--include/uapi/linux/netfilter/nf_nat.h1
-rw-r--r--include/uapi/linux/netfilter/nf_tables.h1
-rw-r--r--include/uapi/linux/netfilter/nf_tables_compat.h1
-rw-r--r--include/uapi/linux/netfilter/nfnetlink.h1
-rw-r--r--include/uapi/linux/netfilter/nfnetlink_acct.h1
-rw-r--r--include/uapi/linux/netfilter/nfnetlink_compat.h1
-rw-r--r--include/uapi/linux/netfilter/nfnetlink_conntrack.h1
-rw-r--r--include/uapi/linux/netfilter/nfnetlink_cthelper.h1
-rw-r--r--include/uapi/linux/netfilter/nfnetlink_cttimeout.h1
-rw-r--r--include/uapi/linux/netfilter/nfnetlink_log.h1
-rw-r--r--include/uapi/linux/netfilter/nfnetlink_queue.h1
-rw-r--r--include/uapi/linux/netfilter/x_tables.h1
-rw-r--r--include/uapi/linux/netfilter/xt_AUDIT.h1
-rw-r--r--include/uapi/linux/netfilter/xt_CHECKSUM.h1
-rw-r--r--include/uapi/linux/netfilter/xt_CLASSIFY.h1
-rw-r--r--include/uapi/linux/netfilter/xt_CONNMARK.h1
-rw-r--r--include/uapi/linux/netfilter/xt_CONNSECMARK.h1
-rw-r--r--include/uapi/linux/netfilter/xt_CT.h1
-rw-r--r--include/uapi/linux/netfilter/xt_DSCP.h1
-rw-r--r--include/uapi/linux/netfilter/xt_HMARK.h1
-rw-r--r--include/uapi/linux/netfilter/xt_IDLETIMER.h1
-rw-r--r--include/uapi/linux/netfilter/xt_LED.h1
-rw-r--r--include/uapi/linux/netfilter/xt_LOG.h1
-rw-r--r--include/uapi/linux/netfilter/xt_MARK.h1
-rw-r--r--include/uapi/linux/netfilter/xt_NFLOG.h1
-rw-r--r--include/uapi/linux/netfilter/xt_NFQUEUE.h1
-rw-r--r--include/uapi/linux/netfilter/xt_RATEEST.h1
-rw-r--r--include/uapi/linux/netfilter/xt_SECMARK.h1
-rw-r--r--include/uapi/linux/netfilter/xt_SYNPROXY.h1
-rw-r--r--include/uapi/linux/netfilter/xt_TCPMSS.h1
-rw-r--r--include/uapi/linux/netfilter/xt_TCPOPTSTRIP.h1
-rw-r--r--include/uapi/linux/netfilter/xt_TEE.h1
-rw-r--r--include/uapi/linux/netfilter/xt_TPROXY.h1
-rw-r--r--include/uapi/linux/netfilter/xt_addrtype.h1
-rw-r--r--include/uapi/linux/netfilter/xt_bpf.h2
-rw-r--r--include/uapi/linux/netfilter/xt_cgroup.h1
-rw-r--r--include/uapi/linux/netfilter/xt_cluster.h1
-rw-r--r--include/uapi/linux/netfilter/xt_comment.h1
-rw-r--r--include/uapi/linux/netfilter/xt_connbytes.h1
-rw-r--r--include/uapi/linux/netfilter/xt_connlabel.h1
-rw-r--r--include/uapi/linux/netfilter/xt_connlimit.h1
-rw-r--r--include/uapi/linux/netfilter/xt_connmark.h1
-rw-r--r--include/uapi/linux/netfilter/xt_conntrack.h1
-rw-r--r--include/uapi/linux/netfilter/xt_cpu.h1
-rw-r--r--include/uapi/linux/netfilter/xt_dccp.h1
-rw-r--r--include/uapi/linux/netfilter/xt_devgroup.h1
-rw-r--r--include/uapi/linux/netfilter/xt_dscp.h1
-rw-r--r--include/uapi/linux/netfilter/xt_ecn.h1
-rw-r--r--include/uapi/linux/netfilter/xt_esp.h1
-rw-r--r--include/uapi/linux/netfilter/xt_hashlimit.h1
-rw-r--r--include/uapi/linux/netfilter/xt_helper.h1
-rw-r--r--include/uapi/linux/netfilter/xt_ipcomp.h1
-rw-r--r--include/uapi/linux/netfilter/xt_iprange.h1
-rw-r--r--include/uapi/linux/netfilter/xt_ipvs.h1
-rw-r--r--include/uapi/linux/netfilter/xt_l2tp.h1
-rw-r--r--include/uapi/linux/netfilter/xt_length.h1
-rw-r--r--include/uapi/linux/netfilter/xt_limit.h1
-rw-r--r--include/uapi/linux/netfilter/xt_mac.h1
-rw-r--r--include/uapi/linux/netfilter/xt_mark.h1
-rw-r--r--include/uapi/linux/netfilter/xt_multiport.h1
-rw-r--r--include/uapi/linux/netfilter/xt_nfacct.h1
-rw-r--r--include/uapi/linux/netfilter/xt_osf.h1
-rw-r--r--include/uapi/linux/netfilter/xt_owner.h1
-rw-r--r--include/uapi/linux/netfilter/xt_physdev.h1
-rw-r--r--include/uapi/linux/netfilter/xt_pkttype.h1
-rw-r--r--include/uapi/linux/netfilter/xt_policy.h1
-rw-r--r--include/uapi/linux/netfilter/xt_quota.h1
-rw-r--r--include/uapi/linux/netfilter/xt_rateest.h1
-rw-r--r--include/uapi/linux/netfilter/xt_realm.h1
-rw-r--r--include/uapi/linux/netfilter/xt_recent.h1
-rw-r--r--include/uapi/linux/netfilter/xt_rpfilter.h1
-rw-r--r--include/uapi/linux/netfilter/xt_sctp.h1
-rw-r--r--include/uapi/linux/netfilter/xt_set.h1
-rw-r--r--include/uapi/linux/netfilter/xt_socket.h1
-rw-r--r--include/uapi/linux/netfilter/xt_state.h1
-rw-r--r--include/uapi/linux/netfilter/xt_statistic.h1
-rw-r--r--include/uapi/linux/netfilter/xt_string.h1
-rw-r--r--include/uapi/linux/netfilter/xt_tcpmss.h1
-rw-r--r--include/uapi/linux/netfilter/xt_tcpudp.h1
-rw-r--r--include/uapi/linux/netfilter/xt_time.h1
-rw-r--r--include/uapi/linux/netfilter/xt_u32.h1
-rw-r--r--include/uapi/linux/netfilter_arp.h1
-rw-r--r--include/uapi/linux/netfilter_arp/arp_tables.h1
-rw-r--r--include/uapi/linux/netfilter_arp/arpt_mangle.h1
-rw-r--r--include/uapi/linux/netfilter_bridge.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_802_3.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_among.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_arp.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_arpreply.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_ip.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_ip6.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_limit.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_log.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_mark_m.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_mark_t.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_nat.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_nflog.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_pkttype.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_redirect.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_stp.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebt_vlan.h1
-rw-r--r--include/uapi/linux/netfilter_bridge/ebtables.h1
-rw-r--r--include/uapi/linux/netfilter_decnet.h1
-rw-r--r--include/uapi/linux/netfilter_ipv4.h1
-rw-r--r--include/uapi/linux/netfilter_ipv4/ip_tables.h1
-rw-r--r--include/uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h1
-rw-r--r--include/uapi/linux/netfilter_ipv4/ipt_ECN.h1
-rw-r--r--include/uapi/linux/netfilter_ipv4/ipt_LOG.h1
-rw-r--r--include/uapi/linux/netfilter_ipv4/ipt_REJECT.h1
-rw-r--r--include/uapi/linux/netfilter_ipv4/ipt_TTL.h1
-rw-r--r--include/uapi/linux/netfilter_ipv4/ipt_ah.h1
-rw-r--r--include/uapi/linux/netfilter_ipv4/ipt_ecn.h1
-rw-r--r--include/uapi/linux/netfilter_ipv4/ipt_ttl.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6_tables.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_HL.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_LOG.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_NPT.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_REJECT.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_ah.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_frag.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_hl.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_ipv6header.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_mh.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_opts.h1
-rw-r--r--include/uapi/linux/netfilter_ipv6/ip6t_rt.h1
-rw-r--r--include/uapi/linux/netlink.h1
-rw-r--r--include/uapi/linux/netlink_diag.h1
-rw-r--r--include/uapi/linux/netrom.h1
-rw-r--r--include/uapi/linux/nfs.h1
-rw-r--r--include/uapi/linux/nfs2.h1
-rw-r--r--include/uapi/linux/nfs3.h1
-rw-r--r--include/uapi/linux/nfs4.h1
-rw-r--r--include/uapi/linux/nfs4_mount.h1
-rw-r--r--include/uapi/linux/nfs_fs.h1
-rw-r--r--include/uapi/linux/nfs_mount.h1
-rw-r--r--include/uapi/linux/nfsacl.h1
-rw-r--r--include/uapi/linux/nfsd/cld.h1
-rw-r--r--include/uapi/linux/nfsd/debug.h1
-rw-r--r--include/uapi/linux/nfsd/export.h1
-rw-r--r--include/uapi/linux/nfsd/nfsfh.h1
-rw-r--r--include/uapi/linux/nfsd/stats.h1
-rw-r--r--include/uapi/linux/nilfs2_api.h1
-rw-r--r--include/uapi/linux/nilfs2_ondisk.h1
-rw-r--r--include/uapi/linux/nsfs.h1
-rw-r--r--include/uapi/linux/nubus.h1
-rw-r--r--include/uapi/linux/nvme_ioctl.h1
-rw-r--r--include/uapi/linux/nvram.h1
-rw-r--r--include/uapi/linux/omap3isp.h1
-rw-r--r--include/uapi/linux/omapfb.h1
-rw-r--r--include/uapi/linux/oom.h1
-rw-r--r--include/uapi/linux/openvswitch.h1
-rw-r--r--include/uapi/linux/packet_diag.h1
-rw-r--r--include/uapi/linux/param.h1
-rw-r--r--include/uapi/linux/patchkey.h1
-rw-r--r--include/uapi/linux/pci.h1
-rw-r--r--include/uapi/linux/pci_regs.h1
-rw-r--r--include/uapi/linux/pcitest.h1
-rw-r--r--include/uapi/linux/perf_event.h1
-rw-r--r--include/uapi/linux/personality.h1
-rw-r--r--include/uapi/linux/pfkeyv2.h1
-rw-r--r--include/uapi/linux/pg.h1
-rw-r--r--include/uapi/linux/phantom.h1
-rw-r--r--include/uapi/linux/phonet.h1
-rw-r--r--include/uapi/linux/pkt_cls.h1
-rw-r--r--include/uapi/linux/pkt_sched.h1
-rw-r--r--include/uapi/linux/pktcdvd.h1
-rw-r--r--include/uapi/linux/pmu.h1
-rw-r--r--include/uapi/linux/posix_acl.h1
-rw-r--r--include/uapi/linux/posix_acl_xattr.h1
-rw-r--r--include/uapi/linux/posix_types.h1
-rw-r--r--include/uapi/linux/ppdev.h1
-rw-r--r--include/uapi/linux/ppp-comp.h1
-rw-r--r--include/uapi/linux/ppp-ioctl.h1
-rw-r--r--include/uapi/linux/ppp_defs.h1
-rw-r--r--include/uapi/linux/pps.h1
-rw-r--r--include/uapi/linux/pr.h1
-rw-r--r--include/uapi/linux/prctl.h1
-rw-r--r--include/uapi/linux/psample.h1
-rw-r--r--include/uapi/linux/psci.h1
-rw-r--r--include/uapi/linux/ptp_clock.h1
-rw-r--r--include/uapi/linux/ptrace.h1
-rw-r--r--include/uapi/linux/qnx4_fs.h1
-rw-r--r--include/uapi/linux/qnxtypes.h1
-rw-r--r--include/uapi/linux/qrtr.h1
-rw-r--r--include/uapi/linux/radeonfb.h1
-rw-r--r--include/uapi/linux/raid/md_p.h1
-rw-r--r--include/uapi/linux/raid/md_u.h1
-rw-r--r--include/uapi/linux/random.h1
-rw-r--r--include/uapi/linux/raw.h1
-rw-r--r--include/uapi/linux/rds.h1
-rw-r--r--include/uapi/linux/reboot.h1
-rw-r--r--include/uapi/linux/reiserfs_fs.h1
-rw-r--r--include/uapi/linux/reiserfs_xattr.h1
-rw-r--r--include/uapi/linux/resource.h1
-rw-r--r--include/uapi/linux/rio_cm_cdev.h1
-rw-r--r--include/uapi/linux/rio_mport_cdev.h1
-rw-r--r--include/uapi/linux/romfs_fs.h1
-rw-r--r--include/uapi/linux/rose.h1
-rw-r--r--include/uapi/linux/route.h1
-rw-r--r--include/uapi/linux/rpmsg.h1
-rw-r--r--include/uapi/linux/rtc.h1
-rw-r--r--include/uapi/linux/rtnetlink.h1
-rw-r--r--include/uapi/linux/scc.h1
-rw-r--r--include/uapi/linux/sched.h1
-rw-r--r--include/uapi/linux/sched/types.h1
-rw-r--r--include/uapi/linux/scif_ioctl.h1
-rw-r--r--include/uapi/linux/screen_info.h1
-rw-r--r--include/uapi/linux/sctp.h3
-rw-r--r--include/uapi/linux/sdla.h1
-rw-r--r--include/uapi/linux/seccomp.h24
-rw-r--r--include/uapi/linux/securebits.h1
-rw-r--r--include/uapi/linux/sed-opal.h1
-rw-r--r--include/uapi/linux/seg6.h1
-rw-r--r--include/uapi/linux/seg6_genl.h1
-rw-r--r--include/uapi/linux/seg6_hmac.h1
-rw-r--r--include/uapi/linux/seg6_iptunnel.h1
-rw-r--r--include/uapi/linux/selinux_netlink.h1
-rw-r--r--include/uapi/linux/sem.h1
-rw-r--r--include/uapi/linux/serial.h1
-rw-r--r--include/uapi/linux/serial_core.h1
-rw-r--r--include/uapi/linux/serial_reg.h1
-rw-r--r--include/uapi/linux/serio.h1
-rw-r--r--include/uapi/linux/shm.h1
-rw-r--r--include/uapi/linux/signal.h1
-rw-r--r--include/uapi/linux/signalfd.h1
-rw-r--r--include/uapi/linux/smc.h1
-rw-r--r--include/uapi/linux/smc_diag.h1
-rw-r--r--include/uapi/linux/smiapp.h1
-rw-r--r--include/uapi/linux/snmp.h1
-rw-r--r--include/uapi/linux/sock_diag.h1
-rw-r--r--include/uapi/linux/socket.h1
-rw-r--r--include/uapi/linux/sockios.h1
-rw-r--r--include/uapi/linux/sonet.h1
-rw-r--r--include/uapi/linux/sonypi.h1
-rw-r--r--include/uapi/linux/sound.h1
-rw-r--r--include/uapi/linux/spi/spidev.h2
-rw-r--r--include/uapi/linux/stat.h1
-rw-r--r--include/uapi/linux/stddef.h1
-rw-r--r--include/uapi/linux/stm.h1
-rw-r--r--include/uapi/linux/string.h1
-rw-r--r--include/uapi/linux/sunrpc/debug.h1
-rw-r--r--include/uapi/linux/suspend_ioctls.h1
-rw-r--r--include/uapi/linux/swab.h1
-rw-r--r--include/uapi/linux/switchtec_ioctl.h1
-rw-r--r--include/uapi/linux/sync_file.h1
-rw-r--r--include/uapi/linux/synclink.h1
-rw-r--r--include/uapi/linux/sysctl.h1
-rw-r--r--include/uapi/linux/sysinfo.h1
-rw-r--r--include/uapi/linux/target_core_user.h1
-rw-r--r--include/uapi/linux/taskstats.h1
-rw-r--r--include/uapi/linux/tc_act/tc_bpf.h1
-rw-r--r--include/uapi/linux/tc_act/tc_connmark.h1
-rw-r--r--include/uapi/linux/tc_act/tc_csum.h1
-rw-r--r--include/uapi/linux/tc_act/tc_defact.h1
-rw-r--r--include/uapi/linux/tc_act/tc_gact.h1
-rw-r--r--include/uapi/linux/tc_act/tc_ife.h1
-rw-r--r--include/uapi/linux/tc_act/tc_ipt.h1
-rw-r--r--include/uapi/linux/tc_act/tc_mirred.h1
-rw-r--r--include/uapi/linux/tc_act/tc_nat.h1
-rw-r--r--include/uapi/linux/tc_act/tc_pedit.h1
-rw-r--r--include/uapi/linux/tc_act/tc_sample.h1
-rw-r--r--include/uapi/linux/tc_act/tc_skbedit.h1
-rw-r--r--include/uapi/linux/tc_act/tc_skbmod.h1
-rw-r--r--include/uapi/linux/tc_act/tc_tunnel_key.h1
-rw-r--r--include/uapi/linux/tc_act/tc_vlan.h1
-rw-r--r--include/uapi/linux/tc_ematch/tc_em_cmp.h1
-rw-r--r--include/uapi/linux/tc_ematch/tc_em_meta.h1
-rw-r--r--include/uapi/linux/tc_ematch/tc_em_nbyte.h1
-rw-r--r--include/uapi/linux/tc_ematch/tc_em_text.h1
-rw-r--r--include/uapi/linux/tcp.h1
-rw-r--r--include/uapi/linux/tcp_metrics.h1
-rw-r--r--include/uapi/linux/telephony.h1
-rw-r--r--include/uapi/linux/termios.h1
-rw-r--r--include/uapi/linux/thermal.h1
-rw-r--r--include/uapi/linux/time.h1
-rw-r--r--include/uapi/linux/timerfd.h1
-rw-r--r--include/uapi/linux/times.h1
-rw-r--r--include/uapi/linux/tiocl.h1
-rw-r--r--include/uapi/linux/tipc.h1
-rw-r--r--include/uapi/linux/tipc_config.h1
-rw-r--r--include/uapi/linux/tipc_netlink.h1
-rw-r--r--include/uapi/linux/tls.h1
-rw-r--r--include/uapi/linux/toshiba.h1
-rw-r--r--include/uapi/linux/tty.h1
-rw-r--r--include/uapi/linux/tty_flags.h1
-rw-r--r--include/uapi/linux/types.h1
-rw-r--r--include/uapi/linux/udf_fs_i.h1
-rw-r--r--include/uapi/linux/udp.h1
-rw-r--r--include/uapi/linux/uhid.h1
-rw-r--r--include/uapi/linux/uinput.h1
-rw-r--r--include/uapi/linux/uio.h1
-rw-r--r--include/uapi/linux/uleds.h1
-rw-r--r--include/uapi/linux/ultrasound.h1
-rw-r--r--include/uapi/linux/un.h1
-rw-r--r--include/uapi/linux/unistd.h1
-rw-r--r--include/uapi/linux/unix_diag.h1
-rw-r--r--include/uapi/linux/usb/audio.h1
-rw-r--r--include/uapi/linux/usb/cdc-wdm.h1
-rw-r--r--include/uapi/linux/usb/cdc.h1
-rw-r--r--include/uapi/linux/usb/ch11.h1
-rw-r--r--include/uapi/linux/usb/ch9.h2
-rw-r--r--include/uapi/linux/usb/functionfs.h1
-rw-r--r--include/uapi/linux/usb/g_printer.h1
-rw-r--r--include/uapi/linux/usb/gadgetfs.h1
-rw-r--r--include/uapi/linux/usb/midi.h1
-rw-r--r--include/uapi/linux/usb/tmc.h1
-rw-r--r--include/uapi/linux/usb/video.h1
-rw-r--r--include/uapi/linux/usbdevice_fs.h1
-rw-r--r--include/uapi/linux/usbip.h1
-rw-r--r--include/uapi/linux/userfaultfd.h1
-rw-r--r--include/uapi/linux/userio.h1
-rw-r--r--include/uapi/linux/utime.h1
-rw-r--r--include/uapi/linux/utsname.h1
-rw-r--r--include/uapi/linux/uuid.h1
-rw-r--r--include/uapi/linux/uvcvideo.h1
-rw-r--r--include/uapi/linux/v4l2-common.h1
-rw-r--r--include/uapi/linux/v4l2-controls.h1
-rw-r--r--include/uapi/linux/v4l2-dv-timings.h1
-rw-r--r--include/uapi/linux/v4l2-mediabus.h1
-rw-r--r--include/uapi/linux/v4l2-subdev.h1
-rw-r--r--include/uapi/linux/veth.h1
-rw-r--r--include/uapi/linux/vfio.h1
-rw-r--r--include/uapi/linux/vfio_ccw.h1
-rw-r--r--include/uapi/linux/vhost.h1
-rw-r--r--include/uapi/linux/videodev2.h1
-rw-r--r--include/uapi/linux/vm_sockets.h1
-rw-r--r--include/uapi/linux/vsockmon.h1
-rw-r--r--include/uapi/linux/vt.h1
-rw-r--r--include/uapi/linux/vtpm_proxy.h1
-rw-r--r--include/uapi/linux/wait.h1
-rw-r--r--include/uapi/linux/wanrouter.h1
-rw-r--r--include/uapi/linux/watchdog.h1
-rw-r--r--include/uapi/linux/wireless.h1
-rw-r--r--include/uapi/linux/x25.h1
-rw-r--r--include/uapi/linux/xattr.h1
-rw-r--r--include/uapi/linux/xfrm.h1
-rw-r--r--include/uapi/linux/xilinx-v4l2-controls.h1
-rw-r--r--include/uapi/linux/zorro.h1
-rw-r--r--include/uapi/linux/zorro_ids.h1
-rw-r--r--include/uapi/misc/cxl.h1
-rw-r--r--include/uapi/mtd/inftl-user.h1
-rw-r--r--include/uapi/mtd/mtd-abi.h1
-rw-r--r--include/uapi/mtd/mtd-user.h1
-rw-r--r--include/uapi/mtd/nftl-user.h1
-rw-r--r--include/uapi/mtd/ubi-user.h1
-rw-r--r--include/uapi/rdma/bnxt_re-abi.h1
-rw-r--r--include/uapi/rdma/cxgb3-abi.h1
-rw-r--r--include/uapi/rdma/cxgb4-abi.h1
-rw-r--r--include/uapi/rdma/hfi/hfi1_ioctl.h1
-rw-r--r--include/uapi/rdma/hfi/hfi1_user.h1
-rw-r--r--include/uapi/rdma/hns-abi.h1
-rw-r--r--include/uapi/rdma/ib_user_cm.h1
-rw-r--r--include/uapi/rdma/ib_user_mad.h1
-rw-r--r--include/uapi/rdma/ib_user_sa.h1
-rw-r--r--include/uapi/rdma/ib_user_verbs.h3
-rw-r--r--include/uapi/rdma/mlx4-abi.h1
-rw-r--r--include/uapi/rdma/mlx5-abi.h1
-rw-r--r--include/uapi/rdma/mthca-abi.h1
-rw-r--r--include/uapi/rdma/nes-abi.h1
-rw-r--r--include/uapi/rdma/ocrdma-abi.h1
-rw-r--r--include/uapi/rdma/qedr-abi.h1
-rw-r--r--include/uapi/rdma/rdma_netlink.h1
-rw-r--r--include/uapi/rdma/rdma_user_cm.h1
-rw-r--r--include/uapi/rdma/rdma_user_ioctl.h1
-rw-r--r--include/uapi/rdma/rdma_user_rxe.h1
-rw-r--r--include/uapi/rdma/vmw_pvrdma-abi.h1
-rw-r--r--include/uapi/scsi/cxlflash_ioctl.h1
-rw-r--r--include/uapi/scsi/fc/fc_els.h1
-rw-r--r--include/uapi/scsi/fc/fc_fs.h1
-rw-r--r--include/uapi/scsi/fc/fc_gs.h1
-rw-r--r--include/uapi/scsi/fc/fc_ns.h1
-rw-r--r--include/uapi/scsi/scsi_bsg_fc.h1
-rw-r--r--include/uapi/scsi/scsi_netlink.h1
-rw-r--r--include/uapi/scsi/scsi_netlink_fc.h1
-rw-r--r--include/uapi/sound/asequencer.h1
-rw-r--r--include/uapi/sound/asoc.h1
-rw-r--r--include/uapi/sound/asound.h1
-rw-r--r--include/uapi/sound/asound_fm.h1
-rw-r--r--include/uapi/sound/compress_offload.h1
-rw-r--r--include/uapi/sound/compress_params.h1
-rw-r--r--include/uapi/sound/emu10k1.h1
-rw-r--r--include/uapi/sound/firewire.h1
-rw-r--r--include/uapi/sound/hdsp.h1
-rw-r--r--include/uapi/sound/hdspm.h1
-rw-r--r--include/uapi/sound/sb16_csp.h1
-rw-r--r--include/uapi/sound/sfnt_info.h1
-rw-r--r--include/uapi/sound/snd_sst_tokens.h1
-rw-r--r--include/uapi/sound/tlv.h1
-rw-r--r--include/uapi/sound/usb_stream.h1
-rw-r--r--include/uapi/video/edid.h1
-rw-r--r--include/uapi/video/sisfb.h1
-rw-r--r--include/uapi/video/uvesafb.h1
-rw-r--r--include/uapi/xen/evtchn.h1
-rw-r--r--include/uapi/xen/gntdev.h1
-rw-r--r--include/uapi/xen/privcmd.h1
-rw-r--r--include/video/aty128.h1
-rw-r--r--include/video/edid.h1
-rw-r--r--include/video/iga.h1
-rw-r--r--include/video/mbxfb.h1
-rw-r--r--include/video/newport.h1
-rw-r--r--include/video/radeon.h1
-rw-r--r--include/video/sh_mobile_lcdc.h1
-rw-r--r--include/video/sh_mobile_meram.h1
-rw-r--r--include/video/sstfb.h1
-rw-r--r--include/video/tdfx.h1
-rw-r--r--include/video/trident.h1
-rw-r--r--include/video/udlfb.h1
-rw-r--r--include/video/uvesafb.h1
-rw-r--r--include/xen/arm/hypervisor.h1
-rw-r--r--include/xen/arm/interface.h1
-rw-r--r--include/xen/arm/page-coherent.h1
-rw-r--r--include/xen/arm/page.h11
-rw-r--r--include/xen/balloon.h1
-rw-r--r--include/xen/events.h1
-rw-r--r--include/xen/features.h1
-rw-r--r--include/xen/hvc-console.h1
-rw-r--r--include/xen/hvm.h1
-rw-r--r--include/xen/interface/event_channel.h1
-rw-r--r--include/xen/interface/features.h1
-rw-r--r--include/xen/interface/io/blkif.h1
-rw-r--r--include/xen/interface/io/console.h1
-rw-r--r--include/xen/interface/io/protocols.h1
-rw-r--r--include/xen/interface/io/ring.h1
-rw-r--r--include/xen/interface/io/xenbus.h1
-rw-r--r--include/xen/interface/io/xs_wire.h1
-rw-r--r--include/xen/interface/memory.h1
-rw-r--r--include/xen/interface/nmi.h1
-rw-r--r--include/xen/interface/version.h1
-rw-r--r--include/xen/interface/xenpmu.h1
-rw-r--r--include/xen/page.h1
-rw-r--r--include/xen/platform_pci.h1
-rw-r--r--include/xen/swiotlb-xen.h1
-rw-r--r--include/xen/tmem.h1
-rw-r--r--include/xen/xen-ops.h1
-rw-r--r--include/xen/xen.h1
-rw-r--r--init/Kconfig2
-rw-r--r--init/Makefile1
-rw-r--r--init/calibrate.c1
-rw-r--r--init/do_mounts.c6
-rw-r--r--init/do_mounts.h1
-rw-r--r--init/do_mounts_initrd.c1
-rw-r--r--init/do_mounts_md.c1
-rw-r--r--init/do_mounts_rd.c1
-rw-r--r--init/init_task.c1
-rw-r--r--init/initramfs.c3
-rw-r--r--ipc/Makefile1
-rw-r--r--ipc/compat.c741
-rw-r--r--ipc/mqueue.c28
-rw-r--r--ipc/msg.c367
-rw-r--r--ipc/namespace.c1
-rw-r--r--ipc/sem.c345
-rw-r--r--ipc/shm.c534
-rw-r--r--ipc/syscall.c91
-rw-r--r--ipc/util.c1
-rw-r--r--ipc/util.h31
-rw-r--r--kernel/Makefile1
-rw-r--r--kernel/acct.c3
-rw-r--r--kernel/audit.h2
-rw-r--r--kernel/audit_tree.c1
-rw-r--r--kernel/auditsc.c12
-rw-r--r--kernel/bounds.c1
-rw-r--r--kernel/bpf/Makefile1
-rw-r--r--kernel/bpf/arraymap.c2
-rw-r--r--kernel/bpf/core.c2
-rw-r--r--kernel/bpf/devmap.c16
-rw-r--r--kernel/bpf/hashtab.c4
-rw-r--r--kernel/bpf/inode.c1
-rw-r--r--kernel/bpf/sockmap.c57
-rw-r--r--kernel/bpf/syscall.c6
-rw-r--r--kernel/bpf/verifier.c80
-rw-r--r--kernel/capability.c1
-rw-r--r--kernel/cgroup/Makefile1
-rw-r--r--kernel/cgroup/cgroup-internal.h1
-rw-r--r--kernel/cgroup/cgroup.c8
-rw-r--r--kernel/cgroup/debug.c1
-rw-r--r--kernel/cgroup/namespace.c1
-rw-r--r--kernel/compat.c23
-rw-r--r--kernel/cpu.c513
-rw-r--r--kernel/dma.c1
-rw-r--r--kernel/elfcore.c1
-rw-r--r--kernel/events/Makefile1
-rw-r--r--kernel/events/core.c13
-rw-r--r--kernel/events/internal.h1
-rw-r--r--kernel/events/ring_buffer.c20
-rw-r--r--kernel/exec_domain.c1
-rw-r--r--kernel/exit.c29
-rw-r--r--kernel/extable.c45
-rw-r--r--kernel/fork.c22
-rw-r--r--kernel/futex.c45
-rw-r--r--kernel/futex_compat.c1
-rw-r--r--kernel/gcov/Makefile1
-rw-r--r--kernel/gcov/base.c1
-rw-r--r--kernel/gcov/fs.c1
-rw-r--r--kernel/gcov/gcc_3_4.c1
-rw-r--r--kernel/gcov/gcc_4_7.c1
-rw-r--r--kernel/gcov/gcov.h1
-rw-r--r--kernel/groups.c1
-rw-r--r--kernel/irq/Makefile1
-rw-r--r--kernel/irq/affinity.c1
-rw-r--r--kernel/irq/autoprobe.c1
-rw-r--r--kernel/irq/chip.c4
-rw-r--r--kernel/irq/cpuhotplug.c28
-rw-r--r--kernel/irq/debug.h1
-rw-r--r--kernel/irq/generic-chip.c16
-rw-r--r--kernel/irq/internals.h1
-rw-r--r--kernel/irq/irqdomain.c4
-rw-r--r--kernel/irq/manage.c21
-rw-r--r--kernel/irq/migration.c1
-rw-r--r--kernel/irq/proc.c1
-rw-r--r--kernel/irq/resend.c1
-rw-r--r--kernel/irq/settings.h1
-rw-r--r--kernel/irq/spurious.c1
-rw-r--r--kernel/kcmp.c3
-rw-r--r--kernel/kcov.c1
-rw-r--r--kernel/kexec_internal.h1
-rw-r--r--kernel/livepatch/core.c60
-rw-r--r--kernel/livepatch/core.h1
-rw-r--r--kernel/livepatch/patch.h1
-rw-r--r--kernel/livepatch/transition.h1
-rw-r--r--kernel/locking/Makefile1
-rw-r--r--kernel/locking/lockdep.c48
-rw-r--r--kernel/locking/lockdep_internals.h1
-rw-r--r--kernel/locking/lockdep_proc.c1
-rw-r--r--kernel/locking/mcs_spinlock.h1
-rw-r--r--kernel/locking/mutex-debug.h1
-rw-r--r--kernel/locking/mutex.h1
-rw-r--r--kernel/locking/osq_lock.c1
-rw-r--r--kernel/locking/qspinlock_paravirt.h1
-rw-r--r--kernel/locking/rtmutex-debug.c1
-rw-r--r--kernel/locking/rtmutex-debug.h1
-rw-r--r--kernel/locking/rtmutex.h1
-rw-r--r--kernel/locking/rtmutex_common.h1
-rw-r--r--kernel/locking/rwsem-spinlock.c1
-rw-r--r--kernel/locking/rwsem-xadd.c28
-rw-r--r--kernel/locking/rwsem.c1
-rw-r--r--kernel/locking/rwsem.h1
-rw-r--r--kernel/locking/spinlock.c1
-rw-r--r--kernel/locking/test-ww_mutex.c2
-rw-r--r--kernel/memremap.c4
-rw-r--r--kernel/module.c12
-rw-r--r--kernel/params.c35
-rw-r--r--kernel/power/Makefile1
-rw-r--r--kernel/power/autosleep.c1
-rw-r--r--kernel/power/console.c1
-rw-r--r--kernel/power/power.h1
-rw-r--r--kernel/power/process.c1
-rw-r--r--kernel/power/suspend.c18
-rw-r--r--kernel/power/wakelock.c1
-rw-r--r--kernel/printk/braille.c1
-rw-r--r--kernel/printk/braille.h1
-rw-r--r--kernel/printk/console_cmdline.h1
-rw-r--r--kernel/range.c1
-rw-r--r--kernel/rcu/Makefile1
-rw-r--r--kernel/rcu/srcutree.c2
-rw-r--r--kernel/rcu/sync.c9
-rw-r--r--kernel/rcu/tree.c28
-rw-r--r--kernel/sched/Makefile1
-rw-r--r--kernel/sched/autogroup.c1
-rw-r--r--kernel/sched/autogroup.h1
-rw-r--r--kernel/sched/completion.c1
-rw-r--r--kernel/sched/core.c28
-rw-r--r--kernel/sched/cpuacct.c1
-rw-r--r--kernel/sched/cpuacct.h1
-rw-r--r--kernel/sched/cpudeadline.h1
-rw-r--r--kernel/sched/cpupri.h1
-rw-r--r--kernel/sched/deadline.c1
-rw-r--r--kernel/sched/debug.c7
-rw-r--r--kernel/sched/fair.c154
-rw-r--r--kernel/sched/features.h4
-rw-r--r--kernel/sched/idle_task.c1
-rw-r--r--kernel/sched/loadavg.c1
-rw-r--r--kernel/sched/membarrier.c34
-rw-r--r--kernel/sched/rt.c1
-rw-r--r--kernel/sched/sched-pelt.h1
-rw-r--r--kernel/sched/sched.h3
-rw-r--r--kernel/sched/stats.c1
-rw-r--r--kernel/sched/stats.h1
-rw-r--r--kernel/sched/stop_task.c1
-rw-r--r--kernel/sched/swait.c1
-rw-r--r--kernel/sched/topology.c5
-rw-r--r--kernel/sched/wait.c85
-rw-r--r--kernel/seccomp.c345
-rw-r--r--kernel/signal.c2
-rw-r--r--kernel/smpboot.c25
-rw-r--r--kernel/smpboot.h1
-rw-r--r--kernel/sys.c1
-rw-r--r--kernel/sys_ni.c1
-rw-r--r--kernel/sysctl.c27
-rw-r--r--kernel/sysctl_binary.c22
-rw-r--r--kernel/task_work.c1
-rw-r--r--kernel/time/Makefile1
-rw-r--r--kernel/time/itimer.c1
-rw-r--r--kernel/time/ntp.c1
-rw-r--r--kernel/time/ntp_internal.h1
-rw-r--r--kernel/time/posix-cpu-timers.c1
-rw-r--r--kernel/time/posix-timers.h1
-rw-r--r--kernel/time/tick-broadcast-hrtimer.c1
-rw-r--r--kernel/time/tick-internal.h1
-rw-r--r--kernel/time/tick-sched.h1
-rw-r--r--kernel/time/timekeeping.h1
-rw-r--r--kernel/time/timekeeping_internal.h1
-rw-r--r--kernel/trace/Makefile1
-rw-r--r--kernel/trace/blktrace.c18
-rw-r--r--kernel/trace/ftrace.c14
-rw-r--r--kernel/trace/power-traces.c1
-rw-r--r--kernel/trace/rpm-traces.c1
-rw-r--r--kernel/trace/trace.c19
-rw-r--r--kernel/trace/trace.h3
-rw-r--r--kernel/trace/trace_benchmark.c1
-rw-r--r--kernel/trace/trace_benchmark.h1
-rw-r--r--kernel/trace/trace_branch.c1
-rw-r--r--kernel/trace/trace_entries.h1
-rw-r--r--kernel/trace/trace_events_filter.c2
-rw-r--r--kernel/trace/trace_events_filter_test.h1
-rw-r--r--kernel/trace/trace_export.c1
-rw-r--r--kernel/trace/trace_functions.c1
-rw-r--r--kernel/trace/trace_functions_graph.c1
-rw-r--r--kernel/trace/trace_kdb.c1
-rw-r--r--kernel/trace/trace_mmiotrace.c2
-rw-r--r--kernel/trace/trace_nop.c1
-rw-r--r--kernel/trace/trace_output.c21
-rw-r--r--kernel/trace/trace_output.h1
-rw-r--r--kernel/trace/trace_sched_switch.c1
-rw-r--r--kernel/trace/trace_sched_wakeup.c9
-rw-r--r--kernel/trace/trace_selftest.c1
-rw-r--r--kernel/trace/trace_selftest_dynamic.c1
-rw-r--r--kernel/trace/trace_stack.c16
-rw-r--r--kernel/trace/trace_stat.c1
-rw-r--r--kernel/trace/trace_stat.h1
-rw-r--r--kernel/trace/trace_syscalls.c3
-rw-r--r--kernel/trace/tracing_map.h1
-rw-r--r--kernel/uid16.c1
-rw-r--r--kernel/watchdog.c644
-rw-r--r--kernel/watchdog_hld.c197
-rw-r--r--kernel/workqueue.c37
-rw-r--r--kernel/workqueue_internal.h1
-rw-r--r--lib/842/842.h1
-rw-r--r--lib/842/842_debugfs.h1
-rw-r--r--lib/Kconfig11
-rw-r--r--lib/Kconfig.debug150
-rw-r--r--lib/Makefile4
-rw-r--r--lib/argv_split.c1
-rw-r--r--lib/asn1_decoder.c3
-rw-r--r--lib/assoc_array.c51
-rw-r--r--lib/audit.c1
-rw-r--r--lib/bcd.c1
-rw-r--r--lib/bug.c1
-rw-r--r--lib/bust_spinlocks.c1
-rw-r--r--lib/check_signature.c1
-rw-r--r--lib/clz_tab.c1
-rw-r--r--lib/compat_audit.c1
-rw-r--r--lib/cpumask.c1
-rw-r--r--lib/crc32defs.h1
-rw-r--r--lib/ctype.c1
-rw-r--r--lib/debug_info.c1
-rw-r--r--lib/dec_and_lock.c1
-rw-r--r--lib/decompress.c1
-rw-r--r--lib/decompress_inflate.c1
-rw-r--r--lib/devres.c1
-rw-r--r--lib/digsig.c6
-rw-r--r--lib/div64.c1
-rw-r--r--lib/dma-noop.c1
-rw-r--r--lib/dma-virt.c1
-rw-r--r--lib/dump_stack.c1
-rw-r--r--lib/dynamic_queue_limits.c1
-rw-r--r--lib/errseq.c1
-rw-r--r--lib/flex_proportions.c1
-rw-r--r--lib/fonts/Makefile1
-rw-r--r--lib/fonts/font_10x18.c1
-rw-r--r--lib/fonts/font_6x10.c1
-rw-r--r--lib/fonts/font_6x11.c1
-rw-r--r--lib/fonts/font_7x14.c1
-rw-r--r--lib/fonts/font_8x16.c1
-rw-r--r--lib/fonts/font_8x8.c1
-rw-r--r--lib/fonts/font_acorn_8x8.c1
-rw-r--r--lib/fonts/font_pearl_8x8.c1
-rw-r--r--lib/fonts/font_sun12x22.c1
-rw-r--r--lib/fonts/font_sun8x16.c1
-rw-r--r--lib/gen_crc32table.c1
-rw-r--r--lib/hweight.c1
-rw-r--r--lib/idr.c6
-rw-r--r--lib/inflate.c1
-rw-r--r--lib/int_sqrt.c1
-rw-r--r--lib/iomap.c1
-rw-r--r--lib/iommu-common.c1
-rw-r--r--lib/iommu-helper.c1
-rw-r--r--lib/ioremap.c2
-rw-r--r--lib/iov_iter.c6
-rw-r--r--lib/irq_poll.c1
-rw-r--r--lib/kasprintf.c1
-rw-r--r--lib/kobject_uevent.c49
-rw-r--r--lib/kstrtox.c1
-rw-r--r--lib/kstrtox.h1
-rw-r--r--lib/list_sort.c1
-rw-r--r--lib/locking-selftest-hardirq.h1
-rw-r--r--lib/locking-selftest-mutex.h1
-rw-r--r--lib/locking-selftest-rlock.h1
-rw-r--r--lib/locking-selftest-rsem.h1
-rw-r--r--lib/locking-selftest-rtmutex.h1
-rw-r--r--lib/locking-selftest-softirq.h1
-rw-r--r--lib/locking-selftest-spin.h1
-rw-r--r--lib/locking-selftest-wlock.h1
-rw-r--r--lib/locking-selftest-wsem.h1
-rw-r--r--lib/locking-selftest.c3
-rw-r--r--lib/lockref.c1
-rw-r--r--lib/lz4/lz4_decompress.c4
-rw-r--r--lib/lzo/lzodefs.h1
-rw-r--r--lib/memweight.c1
-rw-r--r--lib/mpi/Makefile1
-rw-r--r--lib/net_utils.c1
-rw-r--r--lib/nlattr.c1
-rw-r--r--lib/nmi_backtrace.c1
-rw-r--r--lib/nodemask.c1
-rw-r--r--lib/notifier-error-inject.h1
-rw-r--r--lib/once.c1
-rw-r--r--lib/percpu_counter.c1
-rw-r--r--lib/raid6/Makefile1
-rw-r--r--lib/raid6/recov_s390xc.c1
-rw-r--r--lib/raid6/s390vx.uc1
-rw-r--r--lib/raid6/test/Makefile1
-rw-r--r--lib/random32.c1
-rw-r--r--lib/ratelimit.c4
-rw-r--r--lib/rational.c1
-rw-r--r--lib/reciprocal_div.c1
-rw-r--r--lib/refcount.c1
-rw-r--r--lib/rhashtable.c9
-rw-r--r--lib/seq_buf.c1
-rw-r--r--lib/sha1.c1
-rw-r--r--lib/smp_processor_id.c1
-rw-r--r--lib/sort.c1
-rw-r--r--lib/string.c1
-rw-r--r--lib/string_helpers.c4
-rw-r--r--lib/strncpy_from_user.c1
-rw-r--r--lib/strnlen_user.c1
-rw-r--r--lib/syscall.c1
-rw-r--r--lib/test_bitmap.c8
-rw-r--r--lib/ts_fsm.c2
-rw-r--r--lib/ts_kmp.c2
-rw-r--r--lib/ubsan.h1
-rw-r--r--lib/ucs2_string.c1
-rw-r--r--lib/usercopy.c1
-rw-r--r--lib/win_minmax.c1
-rw-r--r--lib/xxhash.c500
-rw-r--r--lib/zstd/Makefile18
-rw-r--r--lib/zstd/bitstream.h374
-rw-r--r--lib/zstd/compress.c3484
-rw-r--r--lib/zstd/decompress.c2528
-rw-r--r--lib/zstd/entropy_common.c243
-rw-r--r--lib/zstd/error_private.h53
-rw-r--r--lib/zstd/fse.h575
-rw-r--r--lib/zstd/fse_compress.c795
-rw-r--r--lib/zstd/fse_decompress.c332
-rw-r--r--lib/zstd/huf.h212
-rw-r--r--lib/zstd/huf_compress.c770
-rw-r--r--lib/zstd/huf_decompress.c960
-rw-r--r--lib/zstd/mem.h151
-rw-r--r--lib/zstd/zstd_common.c75
-rw-r--r--lib/zstd/zstd_internal.h263
-rw-r--r--lib/zstd/zstd_opt.h1014
-rw-r--r--mm/Makefile1
-rw-r--r--mm/bootmem.c1
-rw-r--r--mm/cma.c2
-rw-r--r--mm/cma.h1
-rw-r--r--mm/cma_debug.c1
-rw-r--r--mm/compaction.c14
-rw-r--r--mm/debug.c1
-rw-r--r--mm/debug_page_ref.c1
-rw-r--r--mm/early_ioremap.c1
-rw-r--r--mm/fadvise.c1
-rw-r--r--mm/failslab.c1
-rw-r--r--mm/filemap.c64
-rw-r--r--mm/frame_vector.c1
-rw-r--r--mm/highmem.c1
-rw-r--r--mm/huge_memory.c3
-rw-r--r--mm/hugetlb.c32
-rw-r--r--mm/init-mm.c1
-rw-r--r--mm/kasan/Makefile1
-rw-r--r--mm/kasan/kasan.h1
-rw-r--r--mm/khugepaged.c1
-rw-r--r--mm/kmemcheck.c1
-rw-r--r--mm/ksm.c5
-rw-r--r--mm/list_lru.c12
-rw-r--r--mm/madvise.c20
-rw-r--r--mm/memcontrol.c38
-rw-r--r--mm/memory.c2
-rw-r--r--mm/memory_hotplug.c7
-rw-r--r--mm/mempolicy.c7
-rw-r--r--mm/mempool.c1
-rw-r--r--mm/memtest.c1
-rw-r--r--mm/migrate.c4
-rw-r--r--mm/mincore.c1
-rw-r--r--mm/mlock.c1
-rw-r--r--mm/mmzone.c1
-rw-r--r--mm/mprotect.c1
-rw-r--r--mm/mremap.c1
-rw-r--r--mm/msync.c1
-rw-r--r--mm/nobootmem.c1
-rw-r--r--mm/nommu.c7
-rw-r--r--mm/oom_kill.c16
-rw-r--r--mm/page_alloc.c3
-rw-r--r--mm/page_counter.c1
-rw-r--r--mm/page_ext.c1
-rw-r--r--mm/page_idle.c1
-rw-r--r--mm/page_io.c1
-rw-r--r--mm/page_isolation.c1
-rw-r--r--mm/page_owner.c3
-rw-r--r--mm/page_poison.c1
-rw-r--r--mm/page_vma_mapped.c29
-rw-r--r--mm/pagewalk.c1
-rw-r--r--mm/percpu-internal.h1
-rw-r--r--mm/percpu-stats.c2
-rw-r--r--mm/percpu.c19
-rw-r--r--mm/pgtable-generic.c1
-rw-r--r--mm/quicklist.c1
-rw-r--r--mm/rodata_test.c2
-rw-r--r--mm/shmem.c2
-rw-r--r--mm/slab.c1
-rw-r--r--mm/slab.h1
-rw-r--r--mm/slab_common.c23
-rw-r--r--mm/slob.c1
-rw-r--r--mm/slub.c3
-rw-r--r--mm/sparse-vmemmap.c1
-rw-r--r--mm/sparse.c1
-rw-r--r--mm/swap.c4
-rw-r--r--mm/swap_cgroup.c1
-rw-r--r--mm/swap_slots.c1
-rw-r--r--mm/swap_state.c53
-rw-r--r--mm/swapfile.c23
-rw-r--r--mm/vmacache.c1
-rw-r--r--mm/vmalloc.c6
-rw-r--r--mm/vmscan.c1
-rw-r--r--mm/workingset.c1
-rw-r--r--mm/z3fold.c10
-rw-r--r--net/6lowpan/6lowpan_i.h1
-rw-r--r--net/6lowpan/Makefile1
-rw-r--r--net/6lowpan/nhc.h1
-rw-r--r--net/802/Makefile1
-rw-r--r--net/8021q/Makefile1
-rw-r--r--net/8021q/vlan.h1
-rw-r--r--net/8021q/vlan_core.c7
-rw-r--r--net/8021q/vlanproc.h1
-rw-r--r--net/9p/Makefile1
-rw-r--r--net/9p/trans_fd.c14
-rw-r--r--net/Makefile1
-rw-r--r--net/appletalk/dev.c1
-rw-r--r--net/appletalk/sysctl_net_atalk.c1
-rw-r--r--net/atm/Makefile1
-rw-r--r--net/atm/addr.c1
-rw-r--r--net/atm/addr.h1
-rw-r--r--net/atm/atm_misc.c1
-rw-r--r--net/atm/atm_sysfs.c1
-rw-r--r--net/atm/common.h1
-rw-r--r--net/atm/ioctl.c1
-rw-r--r--net/atm/lec.h1
-rw-r--r--net/atm/lec_arpc.h1
-rw-r--r--net/atm/mpc.h1
-rw-r--r--net/atm/mpoa_caches.c1
-rw-r--r--net/atm/mpoa_caches.h1
-rw-r--r--net/atm/mpoa_proc.c1
-rw-r--r--net/atm/proc.c1
-rw-r--r--net/atm/protocols.h1
-rw-r--r--net/atm/pvc.c1
-rw-r--r--net/atm/raw.c1
-rw-r--r--net/atm/resources.c1
-rw-r--r--net/atm/resources.h1
-rw-r--r--net/atm/signaling.c1
-rw-r--r--net/atm/signaling.h1
-rw-r--r--net/atm/svc.c1
-rw-r--r--net/ax25/Makefile1
-rw-r--r--net/bluetooth/Kconfig10
-rw-r--r--net/bluetooth/Makefile1
-rw-r--r--net/bluetooth/hci_sock.c6
-rw-r--r--net/bluetooth/hci_sysfs.c1
-rw-r--r--net/bridge/Makefile1
-rw-r--r--net/bridge/br_mdb.c1
-rw-r--r--net/bridge/br_netlink.c2
-rw-r--r--net/bridge/br_switchdev.c1
-rw-r--r--net/bridge/netfilter/Makefile1
-rw-r--r--net/bridge/netfilter/ebtable_broute.c4
-rw-r--r--net/bridge/netfilter/ebtable_filter.c4
-rw-r--r--net/bridge/netfilter/ebtable_nat.c4
-rw-r--r--net/bridge/netfilter/ebtables.c17
-rw-r--r--net/caif/Makefile1
-rw-r--r--net/can/Makefile1
-rw-r--r--net/can/af_can.c20
-rw-r--r--net/can/bcm.c5
-rw-r--r--net/ceph/Makefile1
-rw-r--r--net/ceph/armor.c1
-rw-r--r--net/ceph/auth.c1
-rw-r--r--net/ceph/auth_none.c1
-rw-r--r--net/ceph/auth_none.h1
-rw-r--r--net/ceph/auth_x.c1
-rw-r--r--net/ceph/auth_x.h1
-rw-r--r--net/ceph/auth_x_protocol.h1
-rw-r--r--net/ceph/buffer.c1
-rw-r--r--net/ceph/ceph_fs.c1
-rw-r--r--net/ceph/ceph_strings.c1
-rw-r--r--net/ceph/cls_lock_client.c1
-rw-r--r--net/ceph/crush/crush.c1
-rw-r--r--net/ceph/crush/hash.c1
-rw-r--r--net/ceph/crypto.c1
-rw-r--r--net/ceph/crypto.h1
-rw-r--r--net/ceph/debugfs.c1
-rw-r--r--net/ceph/messenger.c1
-rw-r--r--net/ceph/mon_client.c1
-rw-r--r--net/ceph/msgpool.c1
-rw-r--r--net/ceph/osd_client.c1
-rw-r--r--net/ceph/osdmap.c36
-rw-r--r--net/ceph/pagelist.c1
-rw-r--r--net/ceph/pagevec.c1
-rw-r--r--net/ceph/string_table.c1
-rw-r--r--net/compat.c7
-rw-r--r--net/core/Makefile1
-rw-r--r--net/core/datagram.c1
-rw-r--r--net/core/dev.c15
-rw-r--r--net/core/dev_ioctl.c14
-rw-r--r--net/core/ethtool.c7
-rw-r--r--net/core/filter.c129
-rw-r--r--net/core/gen_estimator.c4
-rw-r--r--net/core/gro_cells.c1
-rw-r--r--net/core/net-procfs.c1
-rw-r--r--net/core/net-sysfs.h1
-rw-r--r--net/core/net-traces.c1
-rw-r--r--net/core/rtnetlink.c16
-rw-r--r--net/core/skbuff.c6
-rw-r--r--net/core/sock.c15
-rw-r--r--net/core/sock_reuseport.c13
-rw-r--r--net/core/stream.c1
-rw-r--r--net/core/sysctl_net_core.c1
-rw-r--r--net/core/tso.c1
-rw-r--r--net/dccp/Makefile1
-rw-r--r--net/dccp/ccids/lib/tfrc.c1
-rw-r--r--net/dccp/ipv4.c13
-rw-r--r--net/decnet/Makefile1
-rw-r--r--net/decnet/dn_dev.c1
-rw-r--r--net/decnet/dn_fib.c1
-rw-r--r--net/decnet/dn_neigh.c1
-rw-r--r--net/decnet/dn_rules.c1
-rw-r--r--net/decnet/dn_table.c1
-rw-r--r--net/decnet/dn_timer.c1
-rw-r--r--net/decnet/sysctl_net_decnet.c1
-rw-r--r--net/dns_resolver/dns_key.c2
-rw-r--r--net/dsa/Makefile1
-rw-r--r--net/dsa/dsa2.c7
-rw-r--r--net/dsa/slave.c31
-rw-r--r--net/ieee802154/6lowpan/6lowpan_i.h1
-rw-r--r--net/ieee802154/Makefile1
-rw-r--r--net/ieee802154/core.h1
-rw-r--r--net/ieee802154/nl802154.h1
-rw-r--r--net/ieee802154/rdev-ops.h1
-rw-r--r--net/ieee802154/sysfs.h1
-rw-r--r--net/ieee802154/trace.h1
-rw-r--r--net/ife/ife.c2
-rw-r--r--net/ipv4/Kconfig8
-rw-r--r--net/ipv4/Makefile1
-rw-r--r--net/ipv4/cipso_ipv4.c24
-rw-r--r--net/ipv4/fib_lookup.h1
-rw-r--r--net/ipv4/fib_notifier.c1
-rw-r--r--net/ipv4/fib_semantics.c16
-rw-r--r--net/ipv4/gre_offload.c2
-rw-r--r--net/ipv4/inet_connection_sock.c18
-rw-r--r--net/ipv4/inet_hashtables.c5
-rw-r--r--net/ipv4/inetpeer.c4
-rw-r--r--net/ipv4/ip_forward.c1
-rw-r--r--net/ipv4/ip_fragment.c1
-rw-r--r--net/ipv4/ip_gre.c12
-rw-r--r--net/ipv4/ip_input.c25
-rw-r--r--net/ipv4/ip_options.c1
-rw-r--r--net/ipv4/ip_sockglue.c9
-rw-r--r--net/ipv4/ip_tunnel.c2
-rw-r--r--net/ipv4/ip_vti.c3
-rw-r--r--net/ipv4/ipconfig.c1
-rw-r--r--net/ipv4/ipip.c59
-rw-r--r--net/ipv4/netfilter/Makefile1
-rw-r--r--net/ipv4/netfilter/ipt_SYNPROXY.c3
-rw-r--r--net/ipv4/netfilter/nf_reject_ipv4.c2
-rw-r--r--net/ipv4/route.c48
-rw-r--r--net/ipv4/syncookies.c2
-rw-r--r--net/ipv4/sysctl_net_ipv4.c1
-rw-r--r--net/ipv4/tcp_fastopen.c1
-rw-r--r--net/ipv4/tcp_input.c3
-rw-r--r--net/ipv4/tcp_ipv4.c31
-rw-r--r--net/ipv4/tcp_metrics.c1
-rw-r--r--net/ipv4/tcp_nv.c2
-rw-r--r--net/ipv4/tcp_output.c87
-rw-r--r--net/ipv4/tcp_recovery.c1
-rw-r--r--net/ipv4/tcp_vegas.h1
-rw-r--r--net/ipv4/udp.c45
-rw-r--r--net/ipv4/udp_impl.h1
-rw-r--r--net/ipv4/udp_offload.c2
-rw-r--r--net/ipv4/xfrm4_input.c1
-rw-r--r--net/ipv4/xfrm4_policy.c1
-rw-r--r--net/ipv4/xfrm4_state.c1
-rw-r--r--net/ipv6/Makefile1
-rw-r--r--net/ipv6/addrconf.c35
-rw-r--r--net/ipv6/addrlabel.c1
-rw-r--r--net/ipv6/ila/ila_lwt.c1
-rw-r--r--net/ipv6/ila/ila_xlat.c1
-rw-r--r--net/ipv6/ip6_checksum.c1
-rw-r--r--net/ipv6/ip6_flowlabel.c1
-rw-r--r--net/ipv6/ip6_gre.c42
-rw-r--r--net/ipv6/ip6_icmp.c1
-rw-r--r--net/ipv6/ip6_offload.c2
-rw-r--r--net/ipv6/ip6_output.c4
-rw-r--r--net/ipv6/ip6_tunnel.c10
-rw-r--r--net/ipv6/ip6_vti.c3
-rw-r--r--net/ipv6/netfilter/Makefile1
-rw-r--r--net/ipv6/netfilter/ip6t_SYNPROXY.c2
-rw-r--r--net/ipv6/route.c2
-rw-r--r--net/ipv6/seg6_local.c4
-rw-r--r--net/ipv6/sysctl_net_ipv6.c1
-rw-r--r--net/ipv6/udp.c1
-rw-r--r--net/ipv6/udp_impl.h1
-rw-r--r--net/ipv6/xfrm6_input.c1
-rw-r--r--net/ipv6/xfrm6_policy.c1
-rw-r--r--net/ipv6/xfrm6_state.c1
-rw-r--r--net/ipx/ipx_proc.c1
-rw-r--r--net/ipx/ipx_route.c1
-rw-r--r--net/ipx/pe2.c1
-rw-r--r--net/ipx/sysctl_net_ipx.c1
-rw-r--r--net/kcm/kcmproc.c1
-rw-r--r--net/l2tp/Makefile1
-rw-r--r--net/l2tp/l2tp_core.c16
-rw-r--r--net/l2tp/l2tp_core.h6
-rw-r--r--net/l2tp/l2tp_eth.c51
-rw-r--r--net/l2tp/l2tp_ppp.c18
-rw-r--r--net/llc/sysctl_net_llc.c1
-rw-r--r--net/mac80211/Makefile1
-rw-r--r--net/mac80211/cfg.c12
-rw-r--r--net/mac80211/debug.h1
-rw-r--r--net/mac80211/debugfs.h1
-rw-r--r--net/mac80211/debugfs_key.h1
-rw-r--r--net/mac80211/debugfs_netdev.h1
-rw-r--r--net/mac80211/debugfs_sta.h1
-rw-r--r--net/mac80211/driver-ops.h1
-rw-r--r--net/mac80211/key.c54
-rw-r--r--net/mac80211/pm.c1
-rw-r--r--net/mac80211/trace.c1
-rw-r--r--net/mac80211/trace.h1
-rw-r--r--net/mac80211/trace_msg.h1
-rw-r--r--net/mac802154/cfg.h1
-rw-r--r--net/mac802154/driver-ops.h1
-rw-r--r--net/mac802154/trace.c1
-rw-r--r--net/mac802154/trace.h1
-rw-r--r--net/mpls/internal.h1
-rw-r--r--net/ncsi/internal.h1
-rw-r--r--net/ncsi/ncsi-aen.c2
-rw-r--r--net/ncsi/ncsi-manage.c52
-rw-r--r--net/ncsi/ncsi-rsp.c2
-rw-r--r--net/netfilter/Makefile1
-rw-r--r--net/netfilter/ipset/Makefile1
-rw-r--r--net/netfilter/ipset/ip_set_core.c29
-rw-r--r--net/netfilter/ipset/ip_set_hash_gen.h14
-rw-r--r--net/netfilter/ipset/ip_set_hash_ip.c22
-rw-r--r--net/netfilter/ipset/ip_set_hash_ipmark.c2
-rw-r--r--net/netfilter/ipset/ip_set_hash_ipport.c2
-rw-r--r--net/netfilter/ipset/ip_set_hash_ipportip.c2
-rw-r--r--net/netfilter/ipset/ip_set_hash_ipportnet.c4
-rw-r--r--net/netfilter/ipset/ip_set_hash_net.c2
-rw-r--r--net/netfilter/ipset/ip_set_hash_netiface.c2
-rw-r--r--net/netfilter/ipset/ip_set_hash_netnet.c4
-rw-r--r--net/netfilter/ipset/ip_set_hash_netport.c2
-rw-r--r--net/netfilter/ipset/ip_set_hash_netportnet.c4
-rw-r--r--net/netfilter/ipvs/Makefile1
-rw-r--r--net/netfilter/ipvs/ip_vs_proto_sctp.c1
-rw-r--r--net/netfilter/ipvs/ip_vs_sync.c1
-rw-r--r--net/netfilter/ipvs/ip_vs_xmit.c8
-rw-r--r--net/netfilter/nf_internals.h1
-rw-r--r--net/netfilter/nf_nat_core.c12
-rw-r--r--net/netfilter/nf_sockopt.c1
-rw-r--r--net/netfilter/nf_tables_api.c10
-rw-r--r--net/netfilter/nft_set_hash.c1
-rw-r--r--net/netfilter/x_tables.c4
-rw-r--r--net/netfilter/xt_bpf.c22
-rw-r--r--net/netfilter/xt_repldata.h1
-rw-r--r--net/netfilter/xt_socket.c4
-rw-r--r--net/netlabel/Makefile1
-rw-r--r--net/netlink/af_netlink.c18
-rw-r--r--net/netlink/af_netlink.h1
-rw-r--r--net/netlink/genetlink.c1
-rw-r--r--net/nfc/Makefile1
-rw-r--r--net/nfc/nci/Makefile1
-rw-r--r--net/openvswitch/Makefile1
-rw-r--r--net/openvswitch/datapath.c3
-rw-r--r--net/packet/af_packet.c52
-rw-r--r--net/packet/internal.h1
-rw-r--r--net/phonet/Makefile1
-rw-r--r--net/psample/psample.c2
-rw-r--r--net/qrtr/qrtr.h1
-rw-r--r--net/rds/Makefile1
-rw-r--r--net/rds/ib.h1
-rw-r--r--net/rds/ib_send.c16
-rw-r--r--net/rds/info.h1
-rw-r--r--net/rds/loop.h1
-rw-r--r--net/rds/rdma_transport.h1
-rw-r--r--net/rds/rds.h1
-rw-r--r--net/rds/rds_single_path.h1
-rw-r--r--net/rds/tcp.h1
-rw-r--r--net/rxrpc/Makefile1
-rw-r--r--net/rxrpc/af_rxrpc.c5
-rw-r--r--net/sched/Makefile1
-rw-r--r--net/sched/act_api.c27
-rw-r--r--net/sched/act_bpf.c2
-rw-r--r--net/sched/act_connmark.c2
-rw-r--r--net/sched/act_csum.c2
-rw-r--r--net/sched/act_gact.c2
-rw-r--r--net/sched/act_ife.c2
-rw-r--r--net/sched/act_ipt.c4
-rw-r--r--net/sched/act_mirred.c2
-rw-r--r--net/sched/act_nat.c2
-rw-r--r--net/sched/act_pedit.c2
-rw-r--r--net/sched/act_police.c2
-rw-r--r--net/sched/act_sample.c5
-rw-r--r--net/sched/act_simple.c2
-rw-r--r--net/sched/act_skbedit.c2
-rw-r--r--net/sched/act_skbmod.c2
-rw-r--r--net/sched/act_tunnel_key.c2
-rw-r--r--net/sched/act_vlan.c2
-rw-r--r--net/sched/cls_api.c79
-rw-r--r--net/sched/cls_basic.c20
-rw-r--r--net/sched/cls_bpf.c19
-rw-r--r--net/sched/cls_cgroup.c22
-rw-r--r--net/sched/cls_flow.c19
-rw-r--r--net/sched/cls_flower.c36
-rw-r--r--net/sched/cls_fw.c19
-rw-r--r--net/sched/cls_matchall.c20
-rw-r--r--net/sched/cls_route.c19
-rw-r--r--net/sched/cls_rsvp.h21
-rw-r--r--net/sched/cls_tcindex.c38
-rw-r--r--net/sched/cls_u32.c29
-rw-r--r--net/sched/sch_api.c2
-rw-r--r--net/sched/sch_generic.c1
-rw-r--r--net/sched/sch_hfsc.c23
-rw-r--r--net/sctp/Makefile1
-rw-r--r--net/sctp/input.c24
-rw-r--r--net/sctp/ipv6.c8
-rw-r--r--net/sctp/sctp_diag.c35
-rw-r--r--net/sctp/sm_make_chunk.c9
-rw-r--r--net/sctp/sm_sideeffect.c8
-rw-r--r--net/sctp/socket.c76
-rw-r--r--net/sctp/stream.c26
-rw-r--r--net/sctp/ulpevent.c2
-rw-r--r--net/smc/af_smc.c16
-rw-r--r--net/smc/smc.h3
-rw-r--r--net/smc/smc_cdc.c1
-rw-r--r--net/smc/smc_cdc.h1
-rw-r--r--net/smc/smc_clc.c11
-rw-r--r--net/smc/smc_clc.h4
-rw-r--r--net/smc/smc_close.c28
-rw-r--r--net/smc/smc_close.h1
-rw-r--r--net/smc/smc_core.c17
-rw-r--r--net/smc/smc_core.h1
-rw-r--r--net/smc/smc_ib.c2
-rw-r--r--net/smc/smc_ib.h1
-rw-r--r--net/smc/smc_llc.c1
-rw-r--r--net/smc/smc_llc.h1
-rw-r--r--net/smc/smc_pnet.c5
-rw-r--r--net/smc/smc_pnet.h1
-rw-r--r--net/smc/smc_rx.c3
-rw-r--r--net/smc/smc_rx.h1
-rw-r--r--net/smc/smc_tx.c13
-rw-r--r--net/smc/smc_tx.h1
-rw-r--r--net/smc/smc_wr.c3
-rw-r--r--net/smc/smc_wr.h1
-rw-r--r--net/strparser/strparser.c17
-rw-r--r--net/sunrpc/Makefile1
-rw-r--r--net/sunrpc/auth_gss/Makefile1
-rw-r--r--net/sunrpc/auth_null.c1
-rw-r--r--net/sunrpc/auth_unix.c1
-rw-r--r--net/sunrpc/debugfs.c1
-rw-r--r--net/sunrpc/netns.h1
-rw-r--r--net/sunrpc/xprt.c36
-rw-r--r--net/sunrpc/xprtmultipath.c1
-rw-r--r--net/sunrpc/xprtrdma/Makefile1
-rw-r--r--net/sunrpc/xprtrdma/backchannel.c1
-rw-r--r--net/sunrpc/xprtrdma/fmr_ops.c1
-rw-r--r--net/sunrpc/xprtrdma/frwr_ops.c3
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_backchannel.c1
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_rw.c1
-rw-r--r--net/sunrpc/xprtsock.c3
-rw-r--r--net/tipc/Makefile1
-rw-r--r--net/tipc/bcast.c4
-rw-r--r--net/tipc/msg.c10
-rw-r--r--net/tls/tls_sw.c2
-rw-r--r--net/unix/Makefile1
-rw-r--r--net/unix/diag.c2
-rw-r--r--net/vmw_vsock/Makefile1
-rw-r--r--net/vmw_vsock/hyperv_transport.c22
-rw-r--r--net/wimax/Makefile1
-rw-r--r--net/wireless/Makefile1
-rw-r--r--net/wireless/ap.c1
-rw-r--r--net/wireless/chan.c1
-rw-r--r--net/wireless/core.h1
-rw-r--r--net/wireless/debugfs.h1
-rw-r--r--net/wireless/ethtool.c1
-rw-r--r--net/wireless/ibss.c1
-rw-r--r--net/wireless/mesh.c1
-rw-r--r--net/wireless/mlme.c1
-rw-r--r--net/wireless/nl80211.c20
-rw-r--r--net/wireless/nl80211.h1
-rw-r--r--net/wireless/rdev-ops.h1
-rw-r--r--net/wireless/scan.c1
-rw-r--r--net/wireless/sme.c51
-rw-r--r--net/wireless/sysfs.h1
-rw-r--r--net/wireless/trace.h1
-rw-r--r--net/wireless/util.c1
-rw-r--r--net/wireless/wext-compat.c1
-rw-r--r--net/wireless/wext-sme.c1
-rw-r--r--net/x25/Makefile1
-rw-r--r--net/x25/sysctl_net_x25.c1
-rw-r--r--net/xfrm/Makefile1
-rw-r--r--net/xfrm/xfrm_device.c1
-rw-r--r--net/xfrm/xfrm_hash.c1
-rw-r--r--net/xfrm/xfrm_hash.h1
-rw-r--r--net/xfrm/xfrm_input.c7
-rw-r--r--net/xfrm/xfrm_output.c4
-rw-r--r--net/xfrm/xfrm_policy.c17
-rw-r--r--net/xfrm/xfrm_state.c5
-rw-r--r--net/xfrm/xfrm_sysctl.c1
-rw-r--r--net/xfrm/xfrm_user.c26
-rw-r--r--samples/auxdisplay/Makefile1
-rw-r--r--samples/bpf/Makefile1
-rw-r--r--samples/bpf/bpf_load.c1
-rw-r--r--samples/bpf/bpf_load.h1
-rw-r--r--samples/bpf/cgroup_helpers.c1
-rw-r--r--samples/bpf/cgroup_helpers.h1
-rw-r--r--samples/bpf/libbpf.h1
-rw-r--r--samples/bpf/lwt_len_hist.sh1
-rw-r--r--samples/bpf/lwt_len_hist_user.c1
-rwxr-xr-xsamples/bpf/run_cookie_uid_helper_example.sh1
-rw-r--r--samples/bpf/sock_example.h1
-rw-r--r--samples/bpf/sockex1_user.c1
-rw-r--r--samples/bpf/sockex2_user.c1
-rw-r--r--samples/bpf/sockex3_user.c1
-rw-r--r--samples/bpf/spintest_user.c1
-rw-r--r--samples/bpf/syscall_nrs.c1
-rwxr-xr-xsamples/bpf/tc_l2_redirect.sh1
-rwxr-xr-xsamples/bpf/test_cgrp2_sock.sh1
-rw-r--r--samples/bpf/test_cgrp2_sock2.c1
-rwxr-xr-xsamples/bpf/test_cgrp2_sock2.sh1
-rwxr-xr-xsamples/bpf/test_cgrp2_tc.sh1
-rwxr-xr-xsamples/bpf/test_cls_bpf.sh1
-rwxr-xr-xsamples/bpf/test_ipip.sh1
-rw-r--r--samples/bpf/test_lwt_bpf.sh1
-rw-r--r--samples/bpf/test_probe_write_user_user.c1
-rwxr-xr-xsamples/bpf/test_tunnel_bpf.sh1
-rw-r--r--samples/bpf/tracex1_user.c1
-rw-r--r--samples/bpf/tracex2_user.c1
-rw-r--r--samples/bpf/tracex5_user.c1
-rw-r--r--samples/bpf/tracex6_user.c1
-rw-r--r--samples/connector/Makefile1
-rw-r--r--samples/hidraw/Makefile1
-rw-r--r--samples/hidraw/hid-example.c1
-rw-r--r--samples/mei/Makefile1
-rw-r--r--samples/mic/mpssd/Makefile1
-rw-r--r--samples/pktgen/parameters.sh1
-rwxr-xr-xsamples/pktgen/pktgen.conf-1-1-ip61
-rwxr-xr-xsamples/pktgen/pktgen.conf-1-1-ip6-rdos1
-rwxr-xr-xsamples/pktgen/pktgen.conf-1-21
-rwxr-xr-xsamples/pktgen/pktgen_bench_xmit_mode_netif_receive.sh1
-rwxr-xr-xsamples/pktgen/pktgen_bench_xmit_mode_queue_xmit.sh1
-rwxr-xr-xsamples/pktgen/pktgen_sample01_simple.sh1
-rwxr-xr-xsamples/pktgen/pktgen_sample02_multiqueue.sh1
-rwxr-xr-xsamples/pktgen/pktgen_sample03_burst_single_flow.sh1
-rwxr-xr-xsamples/pktgen/pktgen_sample04_many_flows.sh1
-rwxr-xr-xsamples/pktgen/pktgen_sample05_flow_per_thread.sh1
-rw-r--r--samples/seccomp/Makefile1
-rw-r--r--samples/seccomp/bpf-direct.c1
-rw-r--r--samples/seccomp/bpf-fancy.c1
-rw-r--r--samples/seccomp/bpf-helper.c1
-rw-r--r--samples/seccomp/bpf-helper.h1
-rw-r--r--samples/seccomp/dropper.c1
-rw-r--r--samples/sockmap/sockmap_kern.c2
-rw-r--r--samples/timers/Makefile1
-rw-r--r--samples/timers/hpet_example.c1
-rw-r--r--samples/trace_events/trace-events-sample.c14
-rw-r--r--samples/trace_events/trace-events-sample.h1
-rw-r--r--samples/uhid/uhid-example.c1
-rw-r--r--samples/watchdog/Makefile1
-rw-r--r--samples/watchdog/watchdog-simple.c1
-rwxr-xr-xscripts/Lindent1
-rw-r--r--scripts/Makefile1
-rw-r--r--scripts/Makefile.asm-generic1
-rw-r--r--scripts/Makefile.build5
-rw-r--r--scripts/Makefile.clean1
-rw-r--r--scripts/Makefile.dtbinst1
-rw-r--r--scripts/Makefile.extrawarn2
-rw-r--r--scripts/Makefile.fwinst70
-rw-r--r--scripts/Makefile.gcc-plugins1
-rw-r--r--scripts/Makefile.headersinst1
-rw-r--r--scripts/Makefile.host1
-rw-r--r--scripts/Makefile.kasan1
-rw-r--r--scripts/Makefile.lib1
-rw-r--r--scripts/Makefile.modbuiltin1
-rw-r--r--scripts/Makefile.modinst1
-rw-r--r--scripts/Makefile.modpost2
-rw-r--r--scripts/Makefile.modsign1
-rw-r--r--scripts/Makefile.ubsan1
-rwxr-xr-xscripts/check_00index.sh1
-rwxr-xr-xscripts/check_extable.sh1
-rwxr-xr-xscripts/checkincludes.pl1
-rwxr-xr-xscripts/checkpatch.pl2
-rwxr-xr-xscripts/checkstack.pl1
-rwxr-xr-xscripts/checksyscalls.sh1
-rwxr-xr-xscripts/checkversion.pl1
-rwxr-xr-xscripts/cleanfile1
-rwxr-xr-xscripts/cleanpatch1
-rwxr-xr-xscripts/coccicheck1
-rw-r--r--scripts/coccinelle/api/d_find_alias.cocci1
-rw-r--r--scripts/coccinelle/api/debugfs/debugfs_simple_attr.cocci1
-rw-r--r--scripts/coccinelle/api/drm-get-put.cocci1
-rw-r--r--scripts/coccinelle/api/simple_open.cocci1
-rw-r--r--scripts/coccinelle/api/vma_pages.cocci1
-rw-r--r--scripts/coccinelle/misc/boolreturn.cocci1
-rw-r--r--scripts/coccinelle/misc/irqf_oneshot.cocci1
-rw-r--r--scripts/coccinelle/misc/of_table.cocci1
-rwxr-xr-xscripts/config1
-rwxr-xr-xscripts/decode_stacktrace.sh1
-rwxr-xr-xscripts/decodecode1
-rwxr-xr-xscripts/depmod.sh1
-rwxr-xr-xscripts/diffconfig1
-rw-r--r--scripts/dtc/Makefile1
-rwxr-xr-xscripts/dtc/dtx_diff22
-rw-r--r--scripts/dtc/fdtdump.c1
-rwxr-xr-xscripts/dtc/update-dtc-source.sh1
-rwxr-xr-xscripts/extract-module-sig.pl1
-rwxr-xr-xscripts/extract-sys-certs.pl1
-rwxr-xr-xscripts/faddr2line6
-rwxr-xr-xscripts/gcc-goto.sh1
-rwxr-xr-xscripts/gcc-ld1
-rwxr-xr-xscripts/gcc-plugin.sh1
-rw-r--r--scripts/gcc-plugins/Makefile1
-rw-r--r--scripts/gcc-plugins/gcc-common.h1
-rw-r--r--scripts/gcc-plugins/gcc-generate-gimple-pass.h1
-rw-r--r--scripts/gcc-plugins/gcc-generate-ipa-pass.h1
-rw-r--r--scripts/gcc-plugins/gcc-generate-rtl-pass.h1
-rw-r--r--scripts/gcc-plugins/gcc-generate-simple_ipa-pass.h1
-rw-r--r--scripts/gcc-plugins/gen-random-seed.sh1
-rwxr-xr-xscripts/gcc-version.sh1
-rwxr-xr-xscripts/gcc-x86_32-has-stack-protector.sh1
-rwxr-xr-xscripts/gcc-x86_64-has-stack-protector.sh1
-rw-r--r--scripts/gdb/linux/Makefile3
-rw-r--r--scripts/genksyms/Makefile1
-rwxr-xr-xscripts/headerdep.pl1
-rwxr-xr-xscripts/headers.sh1
-rwxr-xr-xscripts/headers_check.pl1
-rwxr-xr-xscripts/headers_install.sh1
-rw-r--r--scripts/kallsyms.c2
-rw-r--r--scripts/kconfig/Makefile1
-rwxr-xr-xscripts/kconfig/check.sh1
-rw-r--r--scripts/kconfig/list.h1
-rw-r--r--scripts/kconfig/lkc_proto.h1
-rwxr-xr-xscripts/kconfig/lxdialog/check-lxdialog.sh1
-rwxr-xr-xscripts/ld-version.sh1
-rwxr-xr-xscripts/link-vmlinux.sh1
-rwxr-xr-xscripts/makelst1
-rwxr-xr-xscripts/mkcompile_h1
-rwxr-xr-xscripts/mkmakefile1
-rwxr-xr-xscripts/mkuboot.sh1
-rw-r--r--scripts/mkversion6
-rw-r--r--scripts/mod/Makefile1
-rw-r--r--scripts/mod/devicetable-offsets.c1
-rw-r--r--scripts/mod/mk_elfconfig.c1
-rw-r--r--scripts/mod/modpost.c29
-rw-r--r--scripts/mod/modpost.h1
-rw-r--r--scripts/package/Makefile5
-rwxr-xr-xscripts/package/builddeb22
-rwxr-xr-xscripts/package/buildtar37
-rwxr-xr-xscripts/package/mkspec14
-rw-r--r--scripts/parse-maintainers.pl1
-rwxr-xr-xscripts/patch-kernel1
-rwxr-xr-xscripts/profile2linkerlist.pl1
-rwxr-xr-xscripts/prune-kernel1
-rw-r--r--scripts/selinux/genheaders/Makefile1
-rw-r--r--scripts/selinux/genheaders/genheaders.c1
-rwxr-xr-xscripts/selinux/install_policy.sh1
-rw-r--r--scripts/selinux/mdp/Makefile1
-rwxr-xr-xscripts/setlocalversion1
-rw-r--r--scripts/spelling.txt33
-rwxr-xr-xscripts/stackdelta1
-rwxr-xr-xscripts/stackusage1
-rwxr-xr-xscripts/tracing/ftrace-bisect.sh1
-rwxr-xr-xscripts/ver_linux1
-rw-r--r--scripts/xen-hypercalls.sh1
-rw-r--r--security/Makefile1
-rw-r--r--security/apparmor/Makefile3
-rw-r--r--security/apparmor/apparmorfs.c44
-rw-r--r--security/apparmor/domain.c4
-rw-r--r--security/apparmor/include/apparmor.h2
-rw-r--r--security/apparmor/include/audit.h17
-rw-r--r--security/apparmor/include/domain.h5
-rw-r--r--security/apparmor/include/ipc.h6
-rw-r--r--security/apparmor/include/label.h1
-rw-r--r--security/apparmor/include/mount.h54
-rw-r--r--security/apparmor/include/sig_names.h98
-rw-r--r--security/apparmor/ipc.c99
-rw-r--r--security/apparmor/label.c36
-rw-r--r--security/apparmor/lsm.c85
-rw-r--r--security/apparmor/mount.c696
-rw-r--r--security/apparmor/policy.c166
-rw-r--r--security/apparmor/policy_ns.c2
-rw-r--r--security/apparmor/policy_unpack.c58
-rw-r--r--security/commoncap.c9
-rw-r--r--security/device_cgroup.c1
-rw-r--r--security/integrity/Makefile1
-rw-r--r--security/integrity/ima/Makefile1
-rw-r--r--security/keys/Kconfig5
-rw-r--r--security/keys/Makefile1
-rw-r--r--security/keys/big_key.c149
-rw-r--r--security/keys/encrypted-keys/Makefile1
-rw-r--r--security/keys/encrypted-keys/encrypted.c9
-rw-r--r--security/keys/encrypted-keys/encrypted.h1
-rw-r--r--security/keys/gc.c8
-rw-r--r--security/keys/internal.h2
-rw-r--r--security/keys/key.c47
-rw-r--r--security/keys/keyctl.c14
-rw-r--r--security/keys/keyring.c86
-rw-r--r--security/keys/permission.c7
-rw-r--r--security/keys/proc.c39
-rw-r--r--security/keys/process_keys.c8
-rw-r--r--security/keys/request_key.c7
-rw-r--r--security/keys/request_key_auth.c76
-rw-r--r--security/keys/trusted.c25
-rw-r--r--security/keys/trusted.h1
-rw-r--r--security/keys/user_defined.c4
-rw-r--r--security/min_addr.c1
-rw-r--r--security/selinux/Makefile1
-rw-r--r--security/selinux/include/avc.h1
-rw-r--r--security/selinux/include/avc_ss.h1
-rw-r--r--security/selinux/include/classmap.h1
-rw-r--r--security/selinux/include/initial_sid_to_string.h1
-rw-r--r--security/selinux/include/security.h1
-rw-r--r--security/selinux/include/xfrm.h1
-rw-r--r--security/selinux/ss/constraint.h1
-rw-r--r--security/selinux/ss/context.h1
-rw-r--r--security/selinux/ss/ebitmap.c1
-rw-r--r--security/selinux/ss/ebitmap.h1
-rw-r--r--security/selinux/ss/hashtab.c1
-rw-r--r--security/selinux/ss/hashtab.h1
-rw-r--r--security/selinux/ss/mls.c1
-rw-r--r--security/selinux/ss/mls.h1
-rw-r--r--security/selinux/ss/mls_types.h1
-rw-r--r--security/selinux/ss/services.h1
-rw-r--r--security/selinux/ss/sidtab.c1
-rw-r--r--security/selinux/ss/sidtab.h1
-rw-r--r--security/selinux/ss/symtab.c1
-rw-r--r--security/selinux/ss/symtab.h1
-rw-r--r--security/smack/smack_lsm.c55
-rw-r--r--security/tomoyo/Makefile1
-rw-r--r--security/tomoyo/audit.c1
-rw-r--r--security/tomoyo/common.c1
-rw-r--r--security/tomoyo/common.h1
-rw-r--r--security/tomoyo/condition.c1
-rw-r--r--security/tomoyo/domain.c1
-rw-r--r--security/tomoyo/environ.c1
-rw-r--r--security/tomoyo/file.c1
-rw-r--r--security/tomoyo/gc.c1
-rw-r--r--security/tomoyo/group.c1
-rw-r--r--security/tomoyo/load_policy.c1
-rw-r--r--security/tomoyo/memory.c1
-rw-r--r--security/tomoyo/mount.c1
-rw-r--r--security/tomoyo/network.c1
-rw-r--r--security/tomoyo/realpath.c1
-rw-r--r--security/tomoyo/securityfs_if.c1
-rw-r--r--security/tomoyo/tomoyo.c1
-rw-r--r--security/tomoyo/util.c1
-rw-r--r--sound/Makefile1
-rw-r--r--sound/aoa/codecs/Makefile1
-rw-r--r--sound/aoa/codecs/tas-basstreble.h1
-rw-r--r--sound/aoa/codecs/tas-gain-table.h1
-rw-r--r--sound/aoa/core/Makefile1
-rw-r--r--sound/aoa/soundbus/sysfs.c1
-rw-r--r--sound/arm/Makefile1
-rw-r--r--sound/core/Makefile1
-rw-r--r--sound/core/compress_offload.c3
-rw-r--r--sound/core/oss/Makefile1
-rw-r--r--sound/core/pcm_compat.c1
-rw-r--r--sound/core/pcm_param_trace.h1
-rw-r--r--sound/core/pcm_trace.h1
-rw-r--r--sound/core/seq/Makefile1
-rw-r--r--sound/core/seq/seq_clientmgr.c8
-rw-r--r--sound/core/seq/seq_lock.c4
-rw-r--r--sound/core/seq/seq_lock.h13
-rw-r--r--sound/core/seq/seq_ports.c7
-rw-r--r--sound/core/seq/seq_virmidi.c27
-rw-r--r--sound/core/timer_compat.c17
-rw-r--r--sound/core/vmaster.c31
-rw-r--r--sound/drivers/Makefile1
-rw-r--r--sound/drivers/opl3/Makefile1
-rw-r--r--sound/drivers/opl4/Makefile1
-rw-r--r--sound/drivers/pcsp/pcsp.h1
-rw-r--r--sound/drivers/pcsp/pcsp_input.h1
-rw-r--r--sound/drivers/pcsp/pcsp_lib.c1
-rw-r--r--sound/drivers/pcsp/pcsp_mixer.c1
-rw-r--r--sound/firewire/Makefile1
-rw-r--r--sound/firewire/amdtp-am824.h1
-rw-r--r--sound/firewire/amdtp-stream.h1
-rw-r--r--sound/firewire/bebob/Makefile1
-rw-r--r--sound/firewire/cmp.h1
-rw-r--r--sound/firewire/dice/dice-interface.h1
-rw-r--r--sound/firewire/fcp.h1
-rw-r--r--sound/firewire/iso-resources.h1
-rw-r--r--sound/firewire/lib.h1
-rw-r--r--sound/firewire/motu/Makefile1
-rw-r--r--sound/firewire/packets-buffer.h1
-rw-r--r--sound/hda/Makefile1
-rw-r--r--sound/hda/hdac_controller.c5
-rw-r--r--sound/hda/hdac_sysfs.c1
-rw-r--r--sound/hda/local.h1
-rw-r--r--sound/hda/trace.h1
-rw-r--r--sound/i2c/Makefile1
-rw-r--r--sound/i2c/other/Makefile1
-rw-r--r--sound/isa/Makefile1
-rw-r--r--sound/isa/gus/Makefile1
-rw-r--r--sound/isa/msnd/Makefile1
-rw-r--r--sound/isa/opti9xx/Makefile1
-rw-r--r--sound/isa/sb/Makefile1
-rw-r--r--sound/oss/Makefile1
-rw-r--r--sound/oss/ad1848.h1
-rw-r--r--sound/oss/bin2hex.c1
-rw-r--r--sound/oss/dmasound/dmasound.h1
-rw-r--r--sound/oss/hex2hex.c1
-rw-r--r--sound/oss/midi_ctrl.h1
-rw-r--r--sound/oss/midi_synth.h1
-rw-r--r--sound/oss/mpu401.h1
-rw-r--r--sound/oss/os.h1
-rw-r--r--sound/oss/pas2.h1
-rw-r--r--sound/oss/sb.h1
-rw-r--r--sound/oss/sb_ess.c1
-rw-r--r--sound/oss/sb_ess.h1
-rw-r--r--sound/oss/sleep.h1
-rw-r--r--sound/oss/sound_calls.h1
-rw-r--r--sound/oss/sound_firmware.h3
-rw-r--r--sound/oss/tuning.h1
-rw-r--r--sound/oss/ulaw.h1
-rw-r--r--sound/oss/v_midi.h1
-rw-r--r--sound/oss/waveartist.h1
-rw-r--r--sound/parisc/harmony.h1
-rw-r--r--sound/pci/Makefile1
-rw-r--r--sound/pci/ad1889.h1
-rw-r--r--sound/pci/asihpi/hpi_version.h1
-rw-r--r--sound/pci/asihpi/hpifunc.c1
-rw-r--r--sound/pci/asihpi/hpioctl.c12
-rw-r--r--sound/pci/au88x0/Makefile1
-rw-r--r--sound/pci/au88x0/au8810.c1
-rw-r--r--sound/pci/au88x0/au8810.h1
-rw-r--r--sound/pci/au88x0/au8820.c1
-rw-r--r--sound/pci/au88x0/au8820.h1
-rw-r--r--sound/pci/au88x0/au8830.c1
-rw-r--r--sound/pci/au88x0/au8830.h1
-rw-r--r--sound/pci/au88x0/au88x0_eq.h1
-rw-r--r--sound/pci/au88x0/au88x0_eqdata.c1
-rw-r--r--sound/pci/au88x0/au88x0_mixer.c1
-rw-r--r--sound/pci/au88x0/au88x0_wt.h1
-rw-r--r--sound/pci/azt3328.h1
-rw-r--r--sound/pci/cs5535audio/cs5535audio.h1
-rw-r--r--sound/pci/ctxfi/cttimer.h1
-rw-r--r--sound/pci/echoaudio/Makefile1
-rw-r--r--sound/pci/echoaudio/echoaudio.c6
-rw-r--r--sound/pci/emu10k1/Makefile1
-rw-r--r--sound/pci/hda/Makefile1
-rw-r--r--sound/pci/hda/dell_wmi_helper.c1
-rw-r--r--sound/pci/hda/hda_codec.c97
-rw-r--r--sound/pci/hda/hda_controller_trace.h1
-rw-r--r--sound/pci/hda/hda_intel_trace.h1
-rw-r--r--sound/pci/hda/local.h1
-rw-r--r--sound/pci/hda/patch_hdmi.c21
-rw-r--r--sound/pci/hda/patch_realtek.c19
-rw-r--r--sound/pci/hda/thinkpad_helper.c1
-rw-r--r--sound/pci/ice1712/Makefile1
-rw-r--r--sound/pci/ice1712/juli.h1
-rw-r--r--sound/pci/ice1712/maya44.h1
-rw-r--r--sound/pci/ice1712/prodigy192.h1
-rw-r--r--sound/pci/ice1712/psc724.h1
-rw-r--r--sound/pci/ice1712/quartet.h1
-rw-r--r--sound/pci/ice1712/se.h1
-rw-r--r--sound/pci/ice1712/stac946x.h1
-rw-r--r--sound/pci/ice1712/wtm.h1
-rw-r--r--sound/pci/nm256/nm256_coef.c1
-rw-r--r--sound/pci/oxygen/Makefile1
-rw-r--r--sound/pci/oxygen/ak4396.h1
-rw-r--r--sound/pci/oxygen/cm9780.h1
-rw-r--r--sound/pci/oxygen/cs2000.h1
-rw-r--r--sound/pci/oxygen/cs4245.h1
-rw-r--r--sound/pci/oxygen/cs4362a.h1
-rw-r--r--sound/pci/oxygen/cs4398.h1
-rw-r--r--sound/pci/oxygen/oxygen.h1
-rw-r--r--sound/pci/oxygen/oxygen_regs.h1
-rw-r--r--sound/pci/oxygen/pcm1796.h1
-rw-r--r--sound/pci/oxygen/wm8766.h1
-rw-r--r--sound/pci/oxygen/wm8785.h1
-rw-r--r--sound/pci/oxygen/xonar.h1
-rw-r--r--sound/pci/oxygen/xonar_dg.h1
-rw-r--r--sound/pci/rme9652/Makefile1
-rw-r--r--sound/ppc/tumbler_volume.h1
-rw-r--r--sound/soc/Makefile1
-rw-r--r--sound/soc/amd/acp.h1
-rw-r--r--sound/soc/atmel/Makefile1
-rw-r--r--sound/soc/atmel/atmel-classd.h1
-rw-r--r--sound/soc/atmel/atmel-pdmic.h1
-rw-r--r--sound/soc/au1x/Makefile1
-rw-r--r--sound/soc/blackfin/Makefile1
-rw-r--r--sound/soc/cirrus/Makefile1
-rw-r--r--sound/soc/codecs/Makefile1
-rw-r--r--sound/soc/codecs/adau-utils.h1
-rw-r--r--sound/soc/codecs/adau1373.h1
-rw-r--r--sound/soc/codecs/adau17x1.c24
-rw-r--r--sound/soc/codecs/adau17x1.h3
-rw-r--r--sound/soc/codecs/cs4271.h1
-rw-r--r--sound/soc/codecs/es8328.h1
-rw-r--r--sound/soc/codecs/hdac_hdmi.h1
-rw-r--r--sound/soc/codecs/inno_rk3036.h1
-rw-r--r--sound/soc/codecs/rt5514-spi.c17
-rw-r--r--sound/soc/codecs/rt5514-spi.h3
-rw-r--r--sound/soc/codecs/rt5514.c63
-rw-r--r--sound/soc/codecs/rt5514.h3
-rw-r--r--sound/soc/codecs/rt5616.c2
-rw-r--r--sound/soc/codecs/rt5631.h1
-rw-r--r--sound/soc/codecs/rt5645.c2
-rw-r--r--sound/soc/codecs/rt5659.c4
-rw-r--r--sound/soc/codecs/rt5663.c3
-rw-r--r--sound/soc/codecs/tlv320aic26.h1
-rw-r--r--sound/soc/codecs/uda134x.h1
-rw-r--r--sound/soc/codecs/wm8993.h1
-rw-r--r--sound/soc/codecs/wm9713.h1
-rw-r--r--sound/soc/davinci/Makefile1
-rw-r--r--sound/soc/fsl/Makefile1
-rw-r--r--sound/soc/fsl/imx-audmux.h1
-rw-r--r--sound/soc/fsl/mpc5200_dma.h1
-rw-r--r--sound/soc/generic/Makefile1
-rw-r--r--sound/soc/img/Makefile1
-rw-r--r--sound/soc/intel/Makefile1
-rw-r--r--sound/soc/intel/atom/Makefile1
-rw-r--r--sound/soc/intel/atom/sst/Makefile1
-rw-r--r--sound/soc/intel/boards/Makefile1
-rw-r--r--sound/soc/intel/common/Makefile1
-rw-r--r--sound/soc/intel/skylake/Makefile1
-rw-r--r--sound/soc/mediatek/mt8173/Makefile1
-rw-r--r--sound/soc/mxs/Makefile1
-rw-r--r--sound/soc/nuc900/Makefile1
-rw-r--r--sound/soc/omap/Makefile1
-rw-r--r--sound/soc/pxa/Makefile1
-rw-r--r--sound/soc/qcom/Makefile1
-rw-r--r--sound/soc/rockchip/Makefile1
-rw-r--r--sound/soc/samsung/Makefile1
-rw-r--r--sound/soc/sh/Makefile1
-rw-r--r--sound/soc/sirf/Makefile1
-rw-r--r--sound/soc/soc-topology.c5
-rw-r--r--sound/soc/spear/Makefile1
-rw-r--r--sound/soc/stm/Makefile1
-rw-r--r--sound/soc/sunxi/Makefile1
-rw-r--r--sound/soc/tegra/Makefile1
-rw-r--r--sound/soc/txx9/Makefile1
-rw-r--r--sound/soc/ux500/Makefile1
-rw-r--r--sound/sparc/Makefile1
-rw-r--r--sound/spi/Makefile1
-rw-r--r--sound/synth/Makefile1
-rw-r--r--sound/synth/emux/Makefile1
-rw-r--r--sound/usb/Makefile1
-rw-r--r--sound/usb/caiaq/audio.h1
-rw-r--r--sound/usb/caiaq/control.h1
-rw-r--r--sound/usb/caiaq/device.c12
-rw-r--r--sound/usb/caiaq/device.h1
-rw-r--r--sound/usb/caiaq/input.h1
-rw-r--r--sound/usb/caiaq/midi.h1
-rw-r--r--sound/usb/card.c20
-rw-r--r--sound/usb/card.h1
-rw-r--r--sound/usb/clock.h1
-rw-r--r--sound/usb/debug.h1
-rw-r--r--sound/usb/endpoint.h1
-rw-r--r--sound/usb/format.h1
-rw-r--r--sound/usb/helper.h1
-rw-r--r--sound/usb/line6/Makefile1
-rw-r--r--sound/usb/line6/driver.c7
-rw-r--r--sound/usb/line6/podhd.c8
-rw-r--r--sound/usb/midi.h1
-rw-r--r--sound/usb/mixer.c12
-rw-r--r--sound/usb/mixer.h3
-rw-r--r--sound/usb/mixer_quirks.h1
-rw-r--r--sound/usb/mixer_scarlett.h1
-rw-r--r--sound/usb/mixer_us16x08.h1
-rw-r--r--sound/usb/pcm.h1
-rw-r--r--sound/usb/power.h1
-rw-r--r--sound/usb/proc.h1
-rw-r--r--sound/usb/quirks.c4
-rw-r--r--sound/usb/quirks.h1
-rw-r--r--sound/usb/stream.h1
-rw-r--r--sound/usb/usx2y/Makefile1
-rw-r--r--sound/usb/usx2y/us122l.h1
-rw-r--r--sound/usb/usx2y/usX2Yhwdep.h1
-rw-r--r--sound/usb/usx2y/usb_stream.c6
-rw-r--r--sound/usb/usx2y/usb_stream.h1
-rw-r--r--sound/usb/usx2y/usbusx2y.h1
-rw-r--r--sound/usb/usx2y/usx2yhwdeppcm.h1
-rw-r--r--tools/Makefile1
-rw-r--r--tools/accounting/Makefile1
-rw-r--r--tools/accounting/getdelays.c1
-rw-r--r--tools/arch/alpha/include/asm/barrier.h1
-rw-r--r--tools/arch/alpha/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/alpha/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/arc/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/arm/include/uapi/asm/kvm.h1
-rw-r--r--tools/arch/arm/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/arm/include/uapi/asm/perf_regs.h1
-rw-r--r--tools/arch/arm64/include/asm/barrier.h1
-rw-r--r--tools/arch/arm64/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/arm64/include/uapi/asm/kvm.h1
-rw-r--r--tools/arch/arm64/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/arm64/include/uapi/asm/perf_regs.h1
-rw-r--r--tools/arch/frv/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/frv/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/h8300/include/asm/bitsperlong.h1
-rw-r--r--tools/arch/h8300/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/hexagon/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/hexagon/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/ia64/include/asm/barrier.h1
-rw-r--r--tools/arch/ia64/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/ia64/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/m32r/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/m32r/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/microblaze/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/microblaze/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/mips/include/asm/barrier.h1
-rw-r--r--tools/arch/mips/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/mips/include/uapi/asm/kvm.h1
-rw-r--r--tools/arch/mips/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/mn10300/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/parisc/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/parisc/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/powerpc/include/asm/barrier.h1
-rw-r--r--tools/arch/powerpc/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/powerpc/include/uapi/asm/kvm.h1
-rw-r--r--tools/arch/powerpc/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/powerpc/include/uapi/asm/perf_regs.h1
-rw-r--r--tools/arch/s390/include/asm/barrier.h1
-rw-r--r--tools/arch/s390/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/s390/include/uapi/asm/kvm.h7
-rw-r--r--tools/arch/s390/include/uapi/asm/kvm_perf.h1
-rw-r--r--tools/arch/s390/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/s390/include/uapi/asm/sie.h1
-rw-r--r--tools/arch/score/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/score/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/sh/include/asm/barrier.h1
-rw-r--r--tools/arch/sh/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/sparc/include/asm/barrier.h1
-rw-r--r--tools/arch/sparc/include/asm/barrier_32.h1
-rw-r--r--tools/arch/sparc/include/asm/barrier_64.h1
-rw-r--r--tools/arch/sparc/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/sparc/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/tile/include/asm/barrier.h1
-rw-r--r--tools/arch/tile/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/tile/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/x86/include/asm/atomic.h1
-rw-r--r--tools/arch/x86/include/asm/barrier.h1
-rw-r--r--tools/arch/x86/include/asm/cmpxchg.h1
-rw-r--r--tools/arch/x86/include/asm/cpufeatures.h3
-rw-r--r--tools/arch/x86/include/asm/disabled-features.h5
-rw-r--r--tools/arch/x86/include/asm/required-features.h1
-rw-r--r--tools/arch/x86/include/asm/rmwcc.h1
-rw-r--r--tools/arch/x86/include/asm/unistd_32.h1
-rw-r--r--tools/arch/x86/include/asm/unistd_64.h1
-rw-r--r--tools/arch/x86/include/uapi/asm/bitsperlong.h1
-rw-r--r--tools/arch/x86/include/uapi/asm/kvm.h1
-rw-r--r--tools/arch/x86/include/uapi/asm/kvm_perf.h1
-rw-r--r--tools/arch/x86/include/uapi/asm/mman.h1
-rw-r--r--tools/arch/x86/include/uapi/asm/perf_regs.h1
-rw-r--r--tools/arch/x86/include/uapi/asm/svm.h1
-rw-r--r--tools/arch/x86/include/uapi/asm/vmx.h1
-rw-r--r--tools/arch/x86/lib/memcpy_64.S1
-rw-r--r--tools/arch/x86/lib/memset_64.S1
-rw-r--r--tools/arch/xtensa/include/uapi/asm/mman.h1
-rw-r--r--tools/build/Makefile1
-rw-r--r--tools/build/Makefile.build1
-rw-r--r--tools/build/feature/Makefile1
-rw-r--r--tools/build/feature/test-all.c1
-rw-r--r--tools/build/feature/test-backtrace.c1
-rw-r--r--tools/build/feature/test-bionic.c1
-rw-r--r--tools/build/feature/test-bpf.c1
-rw-r--r--tools/build/feature/test-clang.cpp1
-rw-r--r--tools/build/feature/test-compile.c1
-rw-r--r--tools/build/feature/test-cplus-demangle.c1
-rw-r--r--tools/build/feature/test-cxx.cpp1
-rw-r--r--tools/build/feature/test-dwarf.c1
-rw-r--r--tools/build/feature/test-dwarf_getlocations.c1
-rw-r--r--tools/build/feature/test-get_cpuid.c1
-rw-r--r--tools/build/feature/test-glibc.c1
-rw-r--r--tools/build/feature/test-gtk2-infobar.c1
-rw-r--r--tools/build/feature/test-gtk2.c1
-rw-r--r--tools/build/feature/test-jvmti.c1
-rw-r--r--tools/build/feature/test-libaudit.c1
-rw-r--r--tools/build/feature/test-libbabeltrace.c1
-rw-r--r--tools/build/feature/test-libbfd.c1
-rw-r--r--tools/build/feature/test-libcrypto.c1
-rw-r--r--tools/build/feature/test-libdw-dwarf-unwind.c1
-rw-r--r--tools/build/feature/test-libelf-gelf_getnote.c1
-rw-r--r--tools/build/feature/test-libelf-getphdrnum.c1
-rw-r--r--tools/build/feature/test-libelf-getshdrstrndx.c1
-rw-r--r--tools/build/feature/test-libelf-mmap.c1
-rw-r--r--tools/build/feature/test-libelf.c1
-rw-r--r--tools/build/feature/test-libnuma.c1
-rw-r--r--tools/build/feature/test-libperl.c1
-rw-r--r--tools/build/feature/test-libpython-version.c1
-rw-r--r--tools/build/feature/test-libpython.c1
-rw-r--r--tools/build/feature/test-libslang.c1
-rw-r--r--tools/build/feature/test-libunwind-aarch64.c1
-rw-r--r--tools/build/feature/test-libunwind-arm.c1
-rw-r--r--tools/build/feature/test-libunwind-debug-frame-aarch64.c1
-rw-r--r--tools/build/feature/test-libunwind-debug-frame-arm.c1
-rw-r--r--tools/build/feature/test-libunwind-debug-frame.c1
-rw-r--r--tools/build/feature/test-libunwind-x86.c1
-rw-r--r--tools/build/feature/test-libunwind-x86_64.c1
-rw-r--r--tools/build/feature/test-libunwind.c1
-rw-r--r--tools/build/feature/test-llvm-version.cpp1
-rw-r--r--tools/build/feature/test-llvm.cpp1
-rw-r--r--tools/build/feature/test-lzma.c1
-rw-r--r--tools/build/feature/test-numa_num_possible_cpus.c1
-rw-r--r--tools/build/feature/test-pthread-attr-setaffinity-np.c1
-rw-r--r--tools/build/feature/test-sched_getcpu.c1
-rw-r--r--tools/build/feature/test-sdt.c1
-rw-r--r--tools/build/feature/test-stackprotector-all.c1
-rw-r--r--tools/build/feature/test-sync-compare-and-swap.c1
-rw-r--r--tools/build/feature/test-timerfd.c1
-rw-r--r--tools/build/feature/test-zlib.c1
-rw-r--r--tools/build/fixdep.c1
-rw-r--r--tools/build/tests/ex/Makefile1
-rw-r--r--tools/build/tests/ex/a.c1
-rw-r--r--tools/build/tests/ex/arch/e.c1
-rw-r--r--tools/build/tests/ex/arch/f.c1
-rw-r--r--tools/build/tests/ex/b.c1
-rw-r--r--tools/build/tests/ex/c.c1
-rw-r--r--tools/build/tests/ex/d.c1
-rw-r--r--tools/build/tests/ex/ex.c1
-rw-r--r--tools/build/tests/ex/inc.c1
-rwxr-xr-xtools/build/tests/run.sh1
-rw-r--r--tools/cgroup/Makefile1
-rw-r--r--tools/cgroup/cgroup_event_listener.c1
-rw-r--r--tools/firewire/Makefile1
-rw-r--r--tools/firewire/decode-fcp.c1
-rw-r--r--tools/firewire/list.h1
-rw-r--r--tools/firewire/nosy-dump.h1
-rw-r--r--tools/gpio/Makefile1
-rw-r--r--tools/hv/Makefile1
-rwxr-xr-xtools/hv/hv_get_dhcp_info.sh1
-rwxr-xr-xtools/hv/hv_set_ifconfig.sh1
-rw-r--r--tools/hv/lsvmbus1
-rw-r--r--tools/iio/Makefile1
-rw-r--r--tools/include/asm-generic/atomic-gcc.h1
-rw-r--r--tools/include/asm-generic/bitops.h1
-rw-r--r--tools/include/asm-generic/bitops/__ffs.h1
-rw-r--r--tools/include/asm-generic/bitops/atomic.h1
-rw-r--r--tools/include/asm-generic/bitops/find.h1
-rw-r--r--tools/include/asm-generic/bitops/hweight.h1
-rw-r--r--tools/include/asm-generic/bitsperlong.h1
-rw-r--r--tools/include/asm-generic/hugetlb_encode.h34
-rw-r--r--tools/include/asm/alternative-asm.h1
-rw-r--r--tools/include/asm/atomic.h1
-rw-r--r--tools/include/asm/barrier.h1
-rw-r--r--tools/include/asm/bug.h1
-rw-r--r--tools/include/linux/atomic.h1
-rw-r--r--tools/include/linux/bitmap.h1
-rw-r--r--tools/include/linux/bitops.h1
-rw-r--r--tools/include/linux/bug.h1
-rw-r--r--tools/include/linux/compiler-gcc.h10
-rw-r--r--tools/include/linux/compiler.h1
-rw-r--r--tools/include/linux/debug_locks.h1
-rw-r--r--tools/include/linux/err.h1
-rw-r--r--tools/include/linux/filter.h1
-rw-r--r--tools/include/linux/hardirq.h1
-rw-r--r--tools/include/linux/hash.h1
-rw-r--r--tools/include/linux/hashtable.h1
-rw-r--r--tools/include/linux/irqflags.h1
-rw-r--r--tools/include/linux/kallsyms.h1
-rw-r--r--tools/include/linux/kern_levels.h1
-rw-r--r--tools/include/linux/kernel.h1
-rw-r--r--tools/include/linux/kmemcheck.h1
-rw-r--r--tools/include/linux/list.h1
-rw-r--r--tools/include/linux/lockdep.h1
-rw-r--r--tools/include/linux/module.h1
-rw-r--r--tools/include/linux/poison.h1
-rw-r--r--tools/include/linux/rcu.h1
-rw-r--r--tools/include/linux/refcount.h1
-rw-r--r--tools/include/linux/spinlock.h1
-rw-r--r--tools/include/linux/stacktrace.h1
-rw-r--r--tools/include/linux/string.h1
-rw-r--r--tools/include/linux/stringify.h1
-rw-r--r--tools/include/linux/time64.h1
-rw-r--r--tools/include/linux/types.h1
-rw-r--r--tools/include/linux/unaligned/packed_struct.h1
-rw-r--r--tools/include/tools/be_byteshift.h1
-rw-r--r--tools/include/tools/endian.h1
-rw-r--r--tools/include/tools/le_byteshift.h1
-rw-r--r--tools/include/uapi/asm-generic/mman-common.h14
-rw-r--r--tools/include/uapi/asm-generic/mman.h1
-rw-r--r--tools/include/uapi/drm/drm.h22
-rw-r--r--tools/include/uapi/drm/i915_drm.h51
-rw-r--r--tools/include/uapi/linux/bpf.h44
-rw-r--r--tools/include/uapi/linux/bpf_common.h1
-rw-r--r--tools/include/uapi/linux/fcntl.h1
-rw-r--r--tools/include/uapi/linux/hw_breakpoint.h1
-rw-r--r--tools/include/uapi/linux/kvm.h3
-rw-r--r--tools/include/uapi/linux/mman.h25
-rw-r--r--tools/include/uapi/linux/stat.h1
-rw-r--r--tools/kvm/kvm_stat/Makefile1
-rw-r--r--tools/laptop/dslm/Makefile1
-rw-r--r--tools/laptop/freefall/Makefile1
-rw-r--r--tools/leds/Makefile1
-rw-r--r--tools/leds/led_hw_brightness_mon.c1
-rw-r--r--tools/leds/uledmon.c1
-rw-r--r--tools/lib/api/Makefile9
-rw-r--r--tools/lib/api/cpu.c1
-rw-r--r--tools/lib/api/cpu.h1
-rw-r--r--tools/lib/api/debug-internal.h1
-rw-r--r--tools/lib/api/debug.c1
-rw-r--r--tools/lib/api/debug.h1
-rw-r--r--tools/lib/api/fd/array.h1
-rw-r--r--tools/lib/api/fs/fs.c1
-rw-r--r--tools/lib/api/fs/fs.h1
-rw-r--r--tools/lib/api/fs/tracing_path.c1
-rw-r--r--tools/lib/api/fs/tracing_path.h1
-rw-r--r--tools/lib/bpf/Makefile1
-rw-r--r--tools/lib/hweight.c1
-rw-r--r--tools/lib/lockdep/Makefile1
-rw-r--r--tools/lib/lockdep/common.c1
-rw-r--r--tools/lib/lockdep/include/liblockdep/common.h1
-rw-r--r--tools/lib/lockdep/include/liblockdep/mutex.h1
-rw-r--r--tools/lib/lockdep/include/liblockdep/rwlock.h1
-rw-r--r--tools/lib/lockdep/lockdep.c1
-rw-r--r--tools/lib/lockdep/preload.c1
-rwxr-xr-xtools/lib/lockdep/run_tests.sh1
-rw-r--r--tools/lib/lockdep/tests/AA.c1
-rw-r--r--tools/lib/lockdep/tests/ABA.c1
-rw-r--r--tools/lib/lockdep/tests/ABBA.c1
-rw-r--r--tools/lib/lockdep/tests/ABBA_2threads.c1
-rw-r--r--tools/lib/lockdep/tests/ABBCCA.c1
-rw-r--r--tools/lib/lockdep/tests/ABBCCDDA.c1
-rw-r--r--tools/lib/lockdep/tests/ABCABC.c1
-rw-r--r--tools/lib/lockdep/tests/ABCDBCDA.c1
-rw-r--r--tools/lib/lockdep/tests/ABCDBDDA.c1
-rw-r--r--tools/lib/lockdep/tests/WW.c1
-rw-r--r--tools/lib/lockdep/tests/common.h1
-rw-r--r--tools/lib/lockdep/tests/unlock_balance.c1
-rw-r--r--tools/lib/str_error_r.c1
-rw-r--r--tools/lib/string.c1
-rw-r--r--tools/lib/subcmd/Makefile1
-rw-r--r--tools/lib/subcmd/exec-cmd.c1
-rw-r--r--tools/lib/subcmd/exec-cmd.h1
-rw-r--r--tools/lib/subcmd/help.c1
-rw-r--r--tools/lib/subcmd/help.h1
-rw-r--r--tools/lib/subcmd/pager.c1
-rw-r--r--tools/lib/subcmd/pager.h1
-rw-r--r--tools/lib/subcmd/parse-options.c1
-rw-r--r--tools/lib/subcmd/parse-options.h1
-rw-r--r--tools/lib/subcmd/run-command.c1
-rw-r--r--tools/lib/subcmd/run-command.h1
-rw-r--r--tools/lib/subcmd/sigchain.c1
-rw-r--r--tools/lib/subcmd/sigchain.h1
-rw-r--r--tools/lib/subcmd/subcmd-config.c1
-rw-r--r--tools/lib/subcmd/subcmd-config.h1
-rw-r--r--tools/lib/subcmd/subcmd-util.h1
-rw-r--r--tools/lib/symbol/kallsyms.c1
-rw-r--r--tools/lib/symbol/kallsyms.h1
-rw-r--r--tools/lib/traceevent/Makefile1
-rw-r--r--tools/lib/traceevent/plugin_cfg80211.c1
-rw-r--r--tools/lib/traceevent/plugin_scsi.c1
-rw-r--r--tools/lib/traceevent/plugin_xen.c1
-rw-r--r--tools/lib/vsprintf.c1
-rw-r--r--tools/net/Makefile1
-rwxr-xr-xtools/nfsd/inject_fault.sh1
-rw-r--r--tools/objtool/Documentation/stack-validation.txt6
-rw-r--r--tools/objtool/Makefile1
-rw-r--r--tools/objtool/arch/x86/decode.c17
-rw-r--r--tools/objtool/check.c52
-rw-r--r--tools/objtool/elf.c33
-rw-r--r--tools/pci/pcitest.sh1
-rw-r--r--tools/pcmcia/Makefile1
-rw-r--r--tools/perf/Documentation/perf-record.txt4
-rw-r--r--tools/perf/MANIFEST87
-rw-r--r--tools/perf/Makefile1
-rw-r--r--tools/perf/arch/arm/annotate/instructions.c1
-rw-r--r--tools/perf/arch/arm/include/dwarf-regs-table.h1
-rw-r--r--tools/perf/arch/arm/include/perf_regs.h1
-rw-r--r--tools/perf/arch/arm/tests/dwarf-unwind.c1
-rw-r--r--tools/perf/arch/arm/tests/regs_load.S1
-rw-r--r--tools/perf/arch/arm/util/unwind-libdw.c1
-rw-r--r--tools/perf/arch/arm/util/unwind-libunwind.c1
-rw-r--r--tools/perf/arch/arm64/Makefile1
-rw-r--r--tools/perf/arch/arm64/annotate/instructions.c1
-rw-r--r--tools/perf/arch/arm64/include/dwarf-regs-table.h1
-rw-r--r--tools/perf/arch/arm64/include/perf_regs.h1
-rw-r--r--tools/perf/arch/arm64/tests/dwarf-unwind.c1
-rw-r--r--tools/perf/arch/arm64/tests/regs_load.S1
-rw-r--r--tools/perf/arch/arm64/util/unwind-libunwind.c1
-rw-r--r--tools/perf/arch/common.c1
-rw-r--r--tools/perf/arch/common.h1
-rw-r--r--tools/perf/arch/powerpc/Makefile1
-rw-r--r--tools/perf/arch/powerpc/annotate/instructions.c1
-rw-r--r--tools/perf/arch/powerpc/include/arch-tests.h1
-rw-r--r--tools/perf/arch/powerpc/include/dwarf-regs-table.h1
-rw-r--r--tools/perf/arch/powerpc/include/perf_regs.h1
-rw-r--r--tools/perf/arch/powerpc/tests/arch-tests.c1
-rw-r--r--tools/perf/arch/powerpc/tests/dwarf-unwind.c1
-rw-r--r--tools/perf/arch/powerpc/tests/regs_load.S1
-rw-r--r--tools/perf/arch/powerpc/util/book3s_hcalls.h1
-rw-r--r--tools/perf/arch/powerpc/util/book3s_hv_exits.h1
-rw-r--r--tools/perf/arch/powerpc/util/header.c1
-rw-r--r--tools/perf/arch/powerpc/util/kvm-stat.c1
-rw-r--r--tools/perf/arch/powerpc/util/perf_regs.c1
-rw-r--r--tools/perf/arch/powerpc/util/unwind-libdw.c1
-rw-r--r--tools/perf/arch/s390/annotate/instructions.c1
-rw-r--r--tools/perf/arch/s390/include/dwarf-regs-table.h1
-rw-r--r--tools/perf/arch/s390/util/Build1
-rw-r--r--tools/perf/arch/s390/util/dwarf-regs.c1
-rw-r--r--tools/perf/arch/s390/util/machine.c1
-rw-r--r--tools/perf/arch/s390/util/sym-handling.c29
-rw-r--r--tools/perf/arch/sh/include/dwarf-regs-table.h1
-rw-r--r--tools/perf/arch/sparc/include/dwarf-regs-table.h1
-rw-r--r--tools/perf/arch/x86/Makefile1
-rw-r--r--tools/perf/arch/x86/annotate/instructions.c1
-rwxr-xr-xtools/perf/arch/x86/entry/syscalls/syscalltbl.sh1
-rw-r--r--tools/perf/arch/x86/include/arch-tests.h1
-rw-r--r--tools/perf/arch/x86/include/dwarf-regs-table.h1
-rw-r--r--tools/perf/arch/x86/include/perf_regs.h1
-rw-r--r--tools/perf/arch/x86/tests/arch-tests.c1
-rw-r--r--tools/perf/arch/x86/tests/dwarf-unwind.c1
-rw-r--r--tools/perf/arch/x86/tests/insn-x86-dat-32.c1
-rw-r--r--tools/perf/arch/x86/tests/insn-x86-dat-64.c1
-rw-r--r--tools/perf/arch/x86/tests/insn-x86-dat-src.c1
-rw-r--r--tools/perf/arch/x86/tests/insn-x86.c1
-rw-r--r--tools/perf/arch/x86/tests/intel-cqm.c1
-rw-r--r--tools/perf/arch/x86/tests/perf-time-to-tsc.c1
-rw-r--r--tools/perf/arch/x86/tests/rdpmc.c1
-rw-r--r--tools/perf/arch/x86/tests/regs_load.S1
-rw-r--r--tools/perf/arch/x86/util/group.c1
-rw-r--r--tools/perf/arch/x86/util/header.c1
-rw-r--r--tools/perf/arch/x86/util/kvm-stat.c1
-rw-r--r--tools/perf/arch/x86/util/perf_regs.c1
-rw-r--r--tools/perf/arch/x86/util/pmu.c1
-rw-r--r--tools/perf/arch/x86/util/tsc.c1
-rw-r--r--tools/perf/arch/x86/util/unwind-libdw.c1
-rw-r--r--tools/perf/arch/x86/util/unwind-libunwind.c1
-rw-r--r--tools/perf/arch/xtensa/include/dwarf-regs-table.h1
-rw-r--r--tools/perf/bench/bench.h1
-rw-r--r--tools/perf/bench/futex-hash.c1
-rw-r--r--tools/perf/bench/futex-lock-pi.c1
-rw-r--r--tools/perf/bench/futex-requeue.c1
-rw-r--r--tools/perf/bench/futex-wake-parallel.c1
-rw-r--r--tools/perf/bench/futex-wake.c1
-rw-r--r--tools/perf/bench/futex.h1
-rw-r--r--tools/perf/bench/mem-functions.c1
-rw-r--r--tools/perf/bench/mem-memcpy-arch.h1
-rw-r--r--tools/perf/bench/mem-memcpy-x86-64-asm-def.h1
-rw-r--r--tools/perf/bench/mem-memcpy-x86-64-asm.S1
-rw-r--r--tools/perf/bench/mem-memset-arch.h1
-rw-r--r--tools/perf/bench/mem-memset-x86-64-asm-def.h1
-rw-r--r--tools/perf/bench/mem-memset-x86-64-asm.S1
-rw-r--r--tools/perf/bench/numa.c1
-rw-r--r--tools/perf/bench/sched-messaging.c1
-rw-r--r--tools/perf/bench/sched-pipe.c1
-rw-r--r--tools/perf/builtin-annotate.c1
-rw-r--r--tools/perf/builtin-bench.c1
-rw-r--r--tools/perf/builtin-buildid-cache.c1
-rw-r--r--tools/perf/builtin-buildid-list.c1
-rw-r--r--tools/perf/builtin-c2c.c1
-rw-r--r--tools/perf/builtin-config.c3
-rw-r--r--tools/perf/builtin-data.c1
-rw-r--r--tools/perf/builtin-diff.c1
-rw-r--r--tools/perf/builtin-evlist.c1
-rw-r--r--tools/perf/builtin-help.c1
-rw-r--r--tools/perf/builtin-inject.c1
-rw-r--r--tools/perf/builtin-kmem.c2
-rw-r--r--tools/perf/builtin-kvm.c1
-rw-r--r--tools/perf/builtin-list.c1
-rw-r--r--tools/perf/builtin-lock.c1
-rw-r--r--tools/perf/builtin-mem.c1
-rw-r--r--tools/perf/builtin-record.c1
-rw-r--r--tools/perf/builtin-report.c1
-rw-r--r--tools/perf/builtin-sched.c1
-rw-r--r--tools/perf/builtin-script.c5
-rw-r--r--tools/perf/builtin-stat.c2
-rw-r--r--tools/perf/builtin-version.c1
-rw-r--r--tools/perf/builtin.h1
-rwxr-xr-xtools/perf/check-headers.sh1
-rw-r--r--tools/perf/jvmti/jvmti_agent.h1
-rw-r--r--tools/perf/jvmti/libjvmti.c1
-rw-r--r--tools/perf/perf-archive.sh1
-rw-r--r--tools/perf/perf-completion.sh1
-rw-r--r--tools/perf/perf-read-vdso.c1
-rw-r--r--tools/perf/perf-sys.h1
-rw-r--r--tools/perf/perf.c15
-rw-r--r--tools/perf/perf.h1
-rw-r--r--tools/perf/pmu-events/jevents.h1
-rw-r--r--tools/perf/pmu-events/jsmn.h1
-rw-r--r--tools/perf/pmu-events/json.h1
-rw-r--r--tools/perf/pmu-events/pmu-events.h1
-rwxr-xr-xtools/perf/python/tracepoint.py1
-rw-r--r--tools/perf/scripts/perl/Perf-Trace-Util/Makefile.PL1
-rwxr-xr-xtools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/EventClass.py1
-rw-r--r--tools/perf/scripts/python/event_analyzing_sample.py1
-rwxr-xr-xtools/perf/scripts/python/net_dropmonitor.py1
-rw-r--r--tools/perf/scripts/python/netdev-times.py1
-rwxr-xr-xtools/perf/scripts/python/stackcollapse.py1
-rw-r--r--tools/perf/scripts/python/stat-cpi.py1
-rw-r--r--tools/perf/tests/attr.c1
-rw-r--r--tools/perf/tests/attr.py1
-rw-r--r--tools/perf/tests/backward-ring-buffer.c1
-rw-r--r--tools/perf/tests/bitmap.c1
-rw-r--r--tools/perf/tests/bp_signal.c1
-rw-r--r--tools/perf/tests/bp_signal_overflow.c1
-rw-r--r--tools/perf/tests/builtin-test.c1
-rw-r--r--tools/perf/tests/clang.c1
-rw-r--r--tools/perf/tests/code-reading.c1
-rw-r--r--tools/perf/tests/cpumap.c1
-rw-r--r--tools/perf/tests/dso-data.c1
-rw-r--r--tools/perf/tests/dwarf-unwind.c3
-rw-r--r--tools/perf/tests/event-times.c1
-rw-r--r--tools/perf/tests/event_update.c1
-rw-r--r--tools/perf/tests/evsel-roundtrip-name.c1
-rw-r--r--tools/perf/tests/evsel-tp-sched.c1
-rw-r--r--tools/perf/tests/expr.c1
-rw-r--r--tools/perf/tests/fdarray.c1
-rw-r--r--tools/perf/tests/hists_common.c1
-rw-r--r--tools/perf/tests/hists_common.h1
-rw-r--r--tools/perf/tests/hists_cumulate.c1
-rw-r--r--tools/perf/tests/hists_filter.c1
-rw-r--r--tools/perf/tests/hists_link.c1
-rw-r--r--tools/perf/tests/hists_output.c1
-rw-r--r--tools/perf/tests/is_printable_array.c1
-rw-r--r--tools/perf/tests/keep-tracking.c1
-rw-r--r--tools/perf/tests/kmod-path.c1
-rw-r--r--tools/perf/tests/llvm.c1
-rw-r--r--tools/perf/tests/llvm.h1
-rw-r--r--tools/perf/tests/mmap-basic.c1
-rw-r--r--tools/perf/tests/mmap-thread-lookup.c1
-rw-r--r--tools/perf/tests/openat-syscall-all-cpus.c1
-rw-r--r--tools/perf/tests/openat-syscall-tp-fields.c1
-rw-r--r--tools/perf/tests/openat-syscall.c1
-rw-r--r--tools/perf/tests/parse-events.c1
-rw-r--r--tools/perf/tests/parse-no-sample-id-all.c1
-rw-r--r--tools/perf/tests/perf-hooks.c1
-rw-r--r--tools/perf/tests/perf-record.c1
-rwxr-xr-xtools/perf/tests/perf-targz-src-pkg1
-rw-r--r--tools/perf/tests/pmu.c1
-rw-r--r--tools/perf/tests/python-use.c1
-rw-r--r--tools/perf/tests/sample-parsing.c1
-rw-r--r--tools/perf/tests/sdt.c1
-rwxr-xr-xtools/perf/tests/shell/trace+probe_libc_inet_pton.sh9
-rw-r--r--tools/perf/tests/stat.c1
-rw-r--r--tools/perf/tests/sw-clock.c1
-rw-r--r--tools/perf/tests/switch-tracking.c1
-rw-r--r--tools/perf/tests/task-exit.c1
-rw-r--r--tools/perf/tests/tests.h1
-rw-r--r--tools/perf/tests/thread-map.c1
-rw-r--r--tools/perf/tests/thread-mg-share.c1
-rw-r--r--tools/perf/tests/topology.c1
-rw-r--r--tools/perf/tests/unit_number__scnprintf.c1
-rw-r--r--tools/perf/tests/vmlinux-kallsyms.c1
-rw-r--r--tools/perf/trace/beauty/beauty.h1
-rw-r--r--tools/perf/trace/beauty/eventfd.c1
-rw-r--r--tools/perf/trace/beauty/flock.c1
-rw-r--r--tools/perf/trace/beauty/futex_op.c1
-rw-r--r--tools/perf/trace/beauty/mmap.c1
-rw-r--r--tools/perf/trace/beauty/mode_t.c1
-rw-r--r--tools/perf/trace/beauty/msg_flags.c1
-rw-r--r--tools/perf/trace/beauty/open_flags.c1
-rw-r--r--tools/perf/trace/beauty/perf_event_open.c1
-rw-r--r--tools/perf/trace/beauty/pid.c1
-rw-r--r--tools/perf/trace/beauty/sched_policy.c1
-rw-r--r--tools/perf/trace/beauty/seccomp.c1
-rw-r--r--tools/perf/trace/beauty/signum.c1
-rw-r--r--tools/perf/trace/beauty/socket_type.c1
-rw-r--r--tools/perf/trace/beauty/waitid_options.c1
-rw-r--r--tools/perf/ui/browser.c1
-rw-r--r--tools/perf/ui/browser.h1
-rw-r--r--tools/perf/ui/browsers/annotate.c1
-rw-r--r--tools/perf/ui/browsers/header.c1
-rw-r--r--tools/perf/ui/browsers/hists.c1
-rw-r--r--tools/perf/ui/browsers/hists.h1
-rw-r--r--tools/perf/ui/browsers/map.c1
-rw-r--r--tools/perf/ui/browsers/map.h1
-rw-r--r--tools/perf/ui/browsers/scripts.c1
-rw-r--r--tools/perf/ui/gtk/annotate.c1
-rw-r--r--tools/perf/ui/gtk/browser.c1
-rw-r--r--tools/perf/ui/gtk/gtk.h1
-rw-r--r--tools/perf/ui/gtk/helpline.c1
-rw-r--r--tools/perf/ui/gtk/hists.c1
-rw-r--r--tools/perf/ui/gtk/progress.c1
-rw-r--r--tools/perf/ui/gtk/setup.c1
-rw-r--r--tools/perf/ui/gtk/util.c1
-rw-r--r--tools/perf/ui/helpline.c1
-rw-r--r--tools/perf/ui/helpline.h1
-rw-r--r--tools/perf/ui/hist.c10
-rw-r--r--tools/perf/ui/keysyms.h1
-rw-r--r--tools/perf/ui/libslang.h1
-rw-r--r--tools/perf/ui/progress.c10
-rw-r--r--tools/perf/ui/progress.h1
-rw-r--r--tools/perf/ui/setup.c1
-rw-r--r--tools/perf/ui/stdio/hist.c1
-rw-r--r--tools/perf/ui/tui/helpline.c1
-rw-r--r--tools/perf/ui/tui/progress.c1
-rw-r--r--tools/perf/ui/tui/setup.c1
-rw-r--r--tools/perf/ui/tui/tui.h1
-rw-r--r--tools/perf/ui/tui/util.c1
-rw-r--r--tools/perf/ui/ui.h1
-rw-r--r--tools/perf/ui/util.c1
-rw-r--r--tools/perf/ui/util.h1
-rwxr-xr-xtools/perf/util/PERF-VERSION-GEN1
-rw-r--r--tools/perf/util/annotate.h1
-rw-r--r--tools/perf/util/block-range.c1
-rw-r--r--tools/perf/util/block-range.h1
-rw-r--r--tools/perf/util/bpf-loader.c1
-rw-r--r--tools/perf/util/bpf-loader.h1
-rw-r--r--tools/perf/util/bpf-prologue.c1
-rw-r--r--tools/perf/util/bpf-prologue.h1
-rw-r--r--tools/perf/util/build-id.c1
-rw-r--r--tools/perf/util/build-id.h1
-rw-r--r--tools/perf/util/c++/clang-c.h1
-rw-r--r--tools/perf/util/c++/clang-test.cpp1
-rw-r--r--tools/perf/util/c++/clang.cpp1
-rw-r--r--tools/perf/util/c++/clang.h1
-rw-r--r--tools/perf/util/cache.h1
-rw-r--r--tools/perf/util/callchain.c42
-rw-r--r--tools/perf/util/callchain.h1
-rw-r--r--tools/perf/util/cgroup.c1
-rw-r--r--tools/perf/util/cgroup.h1
-rw-r--r--tools/perf/util/cloexec.c1
-rw-r--r--tools/perf/util/cloexec.h1
-rw-r--r--tools/perf/util/color.c1
-rw-r--r--tools/perf/util/color.h1
-rw-r--r--tools/perf/util/comm.c1
-rw-r--r--tools/perf/util/comm.h1
-rw-r--r--tools/perf/util/compress.h1
-rw-r--r--tools/perf/util/config.c1
-rw-r--r--tools/perf/util/config.h1
-rw-r--r--tools/perf/util/counts.c1
-rw-r--r--tools/perf/util/counts.h1
-rw-r--r--tools/perf/util/cpumap.c1
-rw-r--r--tools/perf/util/cpumap.h1
-rw-r--r--tools/perf/util/ctype.c1
-rw-r--r--tools/perf/util/data-convert-bt.h1
-rw-r--r--tools/perf/util/data-convert.h1
-rw-r--r--tools/perf/util/data.c14
-rw-r--r--tools/perf/util/data.h1
-rw-r--r--tools/perf/util/debug.c1
-rw-r--r--tools/perf/util/debug.h1
-rw-r--r--tools/perf/util/demangle-java.c1
-rw-r--r--tools/perf/util/demangle-java.h1
-rw-r--r--tools/perf/util/demangle-rust.c1
-rw-r--r--tools/perf/util/demangle-rust.h1
-rw-r--r--tools/perf/util/dso.c1
-rw-r--r--tools/perf/util/dso.h1
-rw-r--r--tools/perf/util/dump-insn.c1
-rw-r--r--tools/perf/util/dump-insn.h1
-rw-r--r--tools/perf/util/dwarf-regs.c1
-rw-r--r--tools/perf/util/env.c1
-rw-r--r--tools/perf/util/env.h1
-rw-r--r--tools/perf/util/event.c1
-rw-r--r--tools/perf/util/event.h1
-rw-r--r--tools/perf/util/evlist.h1
-rw-r--r--tools/perf/util/evsel.c7
-rw-r--r--tools/perf/util/evsel.h1
-rw-r--r--tools/perf/util/evsel_fprintf.c1
-rw-r--r--tools/perf/util/expr.h1
-rw-r--r--tools/perf/util/find-vdso-map.c1
-rw-r--r--tools/perf/util/genelf.h1
-rwxr-xr-xtools/perf/util/generate-cmdlist.sh1
-rw-r--r--tools/perf/util/group.h1
-rw-r--r--tools/perf/util/header.c1
-rw-r--r--tools/perf/util/header.h1
-rw-r--r--tools/perf/util/help-unknown-cmd.c1
-rw-r--r--tools/perf/util/hist.c1
-rw-r--r--tools/perf/util/hist.h1
-rw-r--r--tools/perf/util/include/asm/asm-offsets.h1
-rw-r--r--tools/perf/util/include/asm/cpufeature.h1
-rw-r--r--tools/perf/util/include/asm/dwarf2.h1
-rw-r--r--tools/perf/util/include/asm/uaccess.h1
-rw-r--r--tools/perf/util/include/dwarf-regs.h1
-rw-r--r--tools/perf/util/include/linux/linkage.h1
-rw-r--r--tools/perf/util/intel-pt-decoder/gen-insn-attr-x86.awk1
-rw-r--r--tools/perf/util/intlist.h1
-rw-r--r--tools/perf/util/jit.h1
-rw-r--r--tools/perf/util/jitdump.c1
-rw-r--r--tools/perf/util/kvm-stat.h1
-rw-r--r--tools/perf/util/levenshtein.c1
-rw-r--r--tools/perf/util/levenshtein.h1
-rw-r--r--tools/perf/util/libunwind/arm64.c1
-rw-r--r--tools/perf/util/libunwind/x86_32.c1
-rw-r--r--tools/perf/util/llvm-utils.c1
-rw-r--r--tools/perf/util/llvm-utils.h1
-rw-r--r--tools/perf/util/lzma.c1
-rw-r--r--tools/perf/util/machine.c1
-rw-r--r--tools/perf/util/machine.h1
-rw-r--r--tools/perf/util/map.c1
-rw-r--r--tools/perf/util/map.h1
-rw-r--r--tools/perf/util/mem-events.c1
-rw-r--r--tools/perf/util/mem-events.h1
-rw-r--r--tools/perf/util/memswap.c1
-rw-r--r--tools/perf/util/memswap.h1
-rw-r--r--tools/perf/util/ordered-events.c1
-rw-r--r--tools/perf/util/ordered-events.h1
-rw-r--r--tools/perf/util/parse-branch-options.c1
-rw-r--r--tools/perf/util/parse-branch-options.h1
-rw-r--r--tools/perf/util/parse-events.c10
-rw-r--r--tools/perf/util/parse-events.h1
-rw-r--r--tools/perf/util/parse-events.l17
-rw-r--r--tools/perf/util/parse-regs-options.c1
-rw-r--r--tools/perf/util/parse-regs-options.h1
-rw-r--r--tools/perf/util/path.c1
-rw-r--r--tools/perf/util/path.h1
-rw-r--r--tools/perf/util/perf-hooks.c1
-rw-r--r--tools/perf/util/perf-hooks.h1
-rw-r--r--tools/perf/util/perf_regs.c1
-rw-r--r--tools/perf/util/perf_regs.h1
-rw-r--r--tools/perf/util/pmu.c57
-rw-r--r--tools/perf/util/pmu.h2
-rw-r--r--tools/perf/util/print_binary.c1
-rw-r--r--tools/perf/util/print_binary.h1
-rw-r--r--tools/perf/util/probe-event.h1
-rw-r--r--tools/perf/util/probe-file.h1
-rw-r--r--tools/perf/util/probe-finder.h1
-rw-r--r--tools/perf/util/pstack.c1
-rw-r--r--tools/perf/util/pstack.h1
-rw-r--r--tools/perf/util/python.c1
-rw-r--r--tools/perf/util/quote.c1
-rw-r--r--tools/perf/util/quote.h1
-rw-r--r--tools/perf/util/rb_resort.h1
-rw-r--r--tools/perf/util/rblist.h1
-rw-r--r--tools/perf/util/record.c1
-rw-r--r--tools/perf/util/sane_ctype.h1
-rw-r--r--tools/perf/util/session.c3
-rw-r--r--tools/perf/util/session.h1
-rw-r--r--tools/perf/util/sort.c1
-rw-r--r--tools/perf/util/sort.h1
-rw-r--r--tools/perf/util/srcline.c1
-rw-r--r--tools/perf/util/srcline.h1
-rw-r--r--tools/perf/util/stat-shadow.c1
-rw-r--r--tools/perf/util/stat.c1
-rw-r--r--tools/perf/util/stat.h1
-rw-r--r--tools/perf/util/strbuf.c1
-rw-r--r--tools/perf/util/strbuf.h1
-rw-r--r--tools/perf/util/strfilter.c1
-rw-r--r--tools/perf/util/strfilter.h1
-rw-r--r--tools/perf/util/string.c1
-rw-r--r--tools/perf/util/string2.h1
-rw-r--r--tools/perf/util/strlist.h1
-rw-r--r--tools/perf/util/svghelper.h1
-rw-r--r--tools/perf/util/symbol-elf.c9
-rw-r--r--tools/perf/util/symbol-minimal.c1
-rw-r--r--tools/perf/util/symbol.c1
-rw-r--r--tools/perf/util/symbol.h4
-rw-r--r--tools/perf/util/symbol_fprintf.c1
-rw-r--r--tools/perf/util/syscalltbl.c2
-rw-r--r--tools/perf/util/syscalltbl.h1
-rw-r--r--tools/perf/util/target.h1
-rw-r--r--tools/perf/util/term.c1
-rw-r--r--tools/perf/util/term.h1
-rw-r--r--tools/perf/util/thread.c1
-rw-r--r--tools/perf/util/thread.h1
-rw-r--r--tools/perf/util/thread_map.c1
-rw-r--r--tools/perf/util/thread_map.h1
-rw-r--r--tools/perf/util/time-utils.c1
-rw-r--r--tools/perf/util/time-utils.h1
-rw-r--r--tools/perf/util/tool.h1
-rw-r--r--tools/perf/util/top.h1
-rw-r--r--tools/perf/util/trace-event.c1
-rw-r--r--tools/perf/util/trace-event.h1
-rw-r--r--tools/perf/util/trigger.h1
-rw-r--r--tools/perf/util/tsc.c1
-rw-r--r--tools/perf/util/tsc.h1
-rw-r--r--tools/perf/util/units.c1
-rw-r--r--tools/perf/util/units.h1
-rw-r--r--tools/perf/util/unwind-libdw.c1
-rw-r--r--tools/perf/util/unwind-libdw.h1
-rw-r--r--tools/perf/util/unwind-libunwind-local.c1
-rw-r--r--tools/perf/util/unwind-libunwind.c1
-rw-r--r--tools/perf/util/unwind.h1
-rw-r--r--tools/perf/util/usage.c1
-rw-r--r--tools/perf/util/util-cxx.h1
-rw-r--r--tools/perf/util/util.c1
-rw-r--r--tools/perf/util/util.h1
-rw-r--r--tools/perf/util/values.c1
-rw-r--r--tools/perf/util/values.h1
-rw-r--r--tools/perf/util/vdso.c1
-rw-r--r--tools/perf/util/vdso.h1
-rw-r--r--tools/perf/util/xyarray.c1
-rw-r--r--tools/perf/util/xyarray.h5
-rw-r--r--tools/perf/util/zlib.c1
-rw-r--r--tools/power/cpupower/bench/Makefile1
-rw-r--r--tools/power/cpupower/debug/i386/Makefile1
-rw-r--r--tools/power/cpupower/debug/kernel/Makefile1
-rw-r--r--tools/power/cpupower/debug/x86_64/Makefile1
-rw-r--r--tools/power/cpupower/lib/cpuidle.h1
-rw-r--r--tools/power/cpupower/lib/cpupower.h1
-rw-r--r--tools/power/cpupower/lib/cpupower_intern.h1
-rw-r--r--tools/power/cpupower/utils/builtin.h1
-rw-r--r--tools/power/cpupower/utils/cpuidle-set.c1
-rw-r--r--tools/power/cpupower/utils/helpers/amd.c1
-rw-r--r--tools/power/cpupower/utils/helpers/bitmask.c1
-rw-r--r--tools/power/cpupower/utils/helpers/bitmask.h1
-rw-r--r--tools/power/cpupower/utils/helpers/cpuid.c1
-rw-r--r--tools/power/cpupower/utils/helpers/misc.c1
-rw-r--r--tools/power/cpupower/utils/helpers/msr.c1
-rw-r--r--tools/power/cpupower/utils/helpers/pci.c1
-rw-r--r--tools/power/cpupower/utils/helpers/sysfs.h1
-rwxr-xr-xtools/power/cpupower/utils/version-gen.sh1
-rw-r--r--tools/power/pm-graph/Makefile1
-rw-r--r--tools/power/x86/turbostat/Makefile1
-rw-r--r--tools/power/x86/turbostat/turbostat.c10
-rw-r--r--tools/power/x86/x86_energy_perf_policy/Makefile1
-rw-r--r--tools/scripts/Makefile.arch1
-rw-r--r--tools/scripts/Makefile.include1
-rw-r--r--tools/spi/spidev_fdx.c1
-rw-r--r--tools/testing/fault-injection/failcmd.sh1
-rwxr-xr-xtools/testing/ktest/compare-ktest-sample.pl1
-rw-r--r--tools/testing/nvdimm/Kbuild1
-rw-r--r--tools/testing/nvdimm/Makefile1
-rw-r--r--tools/testing/nvdimm/config_check.c1
-rw-r--r--tools/testing/nvdimm/test/Kbuild1
-rw-r--r--tools/testing/nvdimm/test/nfit.c3
-rw-r--r--tools/testing/radix-tree/Makefile1
-rw-r--r--tools/testing/radix-tree/linux.c1
-rw-r--r--tools/testing/radix-tree/linux/gfp.h1
-rw-r--r--tools/testing/radix-tree/linux/kernel.h1
-rw-r--r--tools/testing/radix-tree/linux/percpu.h1
-rw-r--r--tools/testing/radix-tree/linux/preempt.h1
-rw-r--r--tools/testing/radix-tree/linux/radix-tree.h1
-rw-r--r--tools/testing/radix-tree/linux/rcupdate.h1
-rw-r--r--tools/testing/radix-tree/linux/slab.h1
-rw-r--r--tools/testing/radix-tree/main.c1
-rw-r--r--tools/testing/radix-tree/regression.h1
-rw-r--r--tools/testing/radix-tree/regression1.c1
-rw-r--r--tools/testing/radix-tree/regression2.c1
-rw-r--r--tools/testing/radix-tree/regression3.c1
-rw-r--r--tools/testing/radix-tree/tag_check.c1
-rw-r--r--tools/testing/radix-tree/test.c1
-rw-r--r--tools/testing/radix-tree/test.h1
-rw-r--r--tools/testing/selftests/Makefile19
-rw-r--r--tools/testing/selftests/bpf/Makefile1
-rw-r--r--tools/testing/selftests/bpf/bpf_endian.h1
-rw-r--r--tools/testing/selftests/bpf/bpf_helpers.h3
-rw-r--r--tools/testing/selftests/bpf/bpf_util.h18
-rw-r--r--tools/testing/selftests/bpf/include/uapi/linux/types.h1
-rw-r--r--tools/testing/selftests/bpf/sockmap_verdict_prog.c4
-rwxr-xr-xtools/testing/selftests/bpf/test_kmod.sh1
-rw-r--r--tools/testing/selftests/bpf/test_lpm_map.c1
-rw-r--r--tools/testing/selftests/bpf/test_maps.c12
-rw-r--r--tools/testing/selftests/bpf/test_tag.c1
-rw-r--r--tools/testing/selftests/bpf/test_verifier.c526
-rw-r--r--tools/testing/selftests/breakpoints/Makefile9
-rw-r--r--tools/testing/selftests/capabilities/Makefile1
-rw-r--r--tools/testing/selftests/capabilities/test_execve.c1
-rw-r--r--tools/testing/selftests/capabilities/validate_cap.c1
-rw-r--r--tools/testing/selftests/cpu-hotplug/Makefile1
-rwxr-xr-xtools/testing/selftests/cpu-hotplug/cpu-on-off-test.sh1
-rw-r--r--tools/testing/selftests/cpufreq/Makefile1
-rwxr-xr-xtools/testing/selftests/cpufreq/cpu.sh1
-rwxr-xr-xtools/testing/selftests/cpufreq/cpufreq.sh1
-rwxr-xr-xtools/testing/selftests/cpufreq/governor.sh1
-rwxr-xr-xtools/testing/selftests/cpufreq/main.sh1
-rwxr-xr-xtools/testing/selftests/cpufreq/module.sh1
-rwxr-xr-xtools/testing/selftests/cpufreq/special-tests.sh1
-rwxr-xr-xtools/testing/selftests/drivers/gpu/drm_mm.sh1
-rwxr-xr-xtools/testing/selftests/drivers/gpu/i915.sh1
-rw-r--r--tools/testing/selftests/efivarfs/create-read.c1
-rwxr-xr-xtools/testing/selftests/efivarfs/efivarfs.sh1
-rw-r--r--tools/testing/selftests/efivarfs/open-unlink.c1
-rw-r--r--tools/testing/selftests/exec/Makefile1
-rw-r--r--tools/testing/selftests/filesystems/Makefile1
-rw-r--r--tools/testing/selftests/filesystems/dnotify_test.c1
-rwxr-xr-xtools/testing/selftests/firmware/fw_fallback.sh1
-rwxr-xr-xtools/testing/selftests/firmware/fw_filesystem.sh1
-rw-r--r--tools/testing/selftests/ftrace/Makefile1
-rw-r--r--tools/testing/selftests/ftrace/test.d/00basic/basic2.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/00basic/basic3.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/event/event-enable.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/event/event-pid.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func-filter-glob.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/instances/instance-event.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/instances/instance.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc3
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-snapshot.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-stacktrace.tc1
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-traceonoff.tc1
-rw-r--r--tools/testing/selftests/futex/Makefile10
-rw-r--r--tools/testing/selftests/futex/functional/Makefile1
-rw-r--r--tools/testing/selftests/gpio/Makefile1
-rwxr-xr-xtools/testing/selftests/gpio/gpio-mockup-sysfs.sh1
-rwxr-xr-xtools/testing/selftests/gpio/gpio-mockup.sh1
-rw-r--r--tools/testing/selftests/ia64/Makefile1
-rw-r--r--tools/testing/selftests/intel_pstate/Makefile3
-rw-r--r--tools/testing/selftests/intel_pstate/aperf.c1
-rw-r--r--tools/testing/selftests/intel_pstate/msr.c1
-rwxr-xr-xtools/testing/selftests/intel_pstate/run.sh12
-rw-r--r--tools/testing/selftests/ipc/Makefile1
-rw-r--r--tools/testing/selftests/ipc/msgque.c1
-rw-r--r--tools/testing/selftests/kcmp/kcmp_test.c1
-rw-r--r--tools/testing/selftests/lib.mk52
-rwxr-xr-xtools/testing/selftests/lib/bitmap.sh1
-rwxr-xr-xtools/testing/selftests/lib/prime_numbers.sh1
-rwxr-xr-xtools/testing/selftests/lib/printf.sh1
-rw-r--r--tools/testing/selftests/locking/ww_mutex.sh1
-rw-r--r--tools/testing/selftests/media_tests/Makefile1
-rwxr-xr-xtools/testing/selftests/media_tests/bind_unbind_sample.sh1
-rwxr-xr-xtools/testing/selftests/media_tests/open_loop_test.sh1
-rw-r--r--tools/testing/selftests/membarrier/membarrier_test.c1
-rw-r--r--tools/testing/selftests/memfd/Makefile1
-rw-r--r--tools/testing/selftests/memfd/fuse_mnt.c1
-rw-r--r--tools/testing/selftests/memfd/fuse_test.c1
-rw-r--r--tools/testing/selftests/memfd/memfd_test.c1
-rwxr-xr-xtools/testing/selftests/memfd/run_fuse_test.sh1
-rwxr-xr-x[-rw-r--r--]tools/testing/selftests/memfd/run_tests.sh0
-rw-r--r--tools/testing/selftests/memory-hotplug/Makefile1
-rwxr-xr-xtools/testing/selftests/memory-hotplug/mem-on-off-test.sh1
-rw-r--r--tools/testing/selftests/mount/Makefile1
-rw-r--r--tools/testing/selftests/mount/unprivileged-remount-test.c1
-rw-r--r--tools/testing/selftests/mqueue/Makefile5
-rw-r--r--tools/testing/selftests/net/.gitignore1
-rw-r--r--tools/testing/selftests/net/Makefile7
-rw-r--r--tools/testing/selftests/net/msg_zerocopy.c2
-rwxr-xr-xtools/testing/selftests/net/netdevice.sh3
-rw-r--r--tools/testing/selftests/net/reuseaddr_conflict.c114
-rw-r--r--tools/testing/selftests/net/reuseport_bpf_cpu.c1
-rw-r--r--tools/testing/selftests/net/reuseport_bpf_numa.c1
-rw-r--r--tools/testing/selftests/net/reuseport_dualstack.c1
-rwxr-xr-xtools/testing/selftests/net/run_afpackettests1
-rwxr-xr-xtools/testing/selftests/net/run_netsocktests1
-rw-r--r--tools/testing/selftests/net/socket.c1
-rwxr-xr-xtools/testing/selftests/net/test_bpf.sh1
-rw-r--r--tools/testing/selftests/networking/timestamping/Makefile1
-rw-r--r--tools/testing/selftests/networking/timestamping/hwtstamp_config.c1
-rw-r--r--tools/testing/selftests/networking/timestamping/rxtimestamp.c2
-rw-r--r--tools/testing/selftests/nsfs/owner.c1
-rw-r--r--tools/testing/selftests/nsfs/pidns.c1
-rw-r--r--tools/testing/selftests/powerpc/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/benchmarks/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/cache_shape/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/copyloops/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/copyloops/asm/export.h1
-rw-r--r--tools/testing/selftests/powerpc/copyloops/asm/ppc_asm.h1
-rw-r--r--tools/testing/selftests/powerpc/copyloops/validate.c1
-rw-r--r--tools/testing/selftests/powerpc/dscr/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/include/basic_asm.h1
-rw-r--r--tools/testing/selftests/powerpc/include/instructions.h1
-rw-r--r--tools/testing/selftests/powerpc/math/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/mm/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/mm/hugetlb_vs_thp_test.c1
-rw-r--r--tools/testing/selftests/powerpc/pmu/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/pmu/ebb/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/ptrace/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/signal/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/stringloops/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/stringloops/asm/ppc_asm.h1
-rw-r--r--tools/testing/selftests/powerpc/stringloops/memcmp.c1
-rw-r--r--tools/testing/selftests/powerpc/switch_endian/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/switch_endian/check.S1
-rw-r--r--tools/testing/selftests/powerpc/switch_endian/common.h1
-rw-r--r--tools/testing/selftests/powerpc/switch_endian/switch_endian_test.S1
-rw-r--r--tools/testing/selftests/powerpc/syscalls/ipc.h1
-rw-r--r--tools/testing/selftests/powerpc/tm/Makefile1
-rw-r--r--tools/testing/selftests/powerpc/tm/tm-resched-dscr.c1
-rw-r--r--tools/testing/selftests/powerpc/tm/tm-syscall-asm.S1
-rw-r--r--tools/testing/selftests/powerpc/vphn/test-vphn.c1
-rw-r--r--tools/testing/selftests/prctl/Makefile1
-rw-r--r--tools/testing/selftests/prctl/disable-tsc-ctxt-sw-stress-test.c1
-rw-r--r--tools/testing/selftests/prctl/disable-tsc-on-off-stress-test.c1
-rw-r--r--tools/testing/selftests/prctl/disable-tsc-test.c1
-rw-r--r--tools/testing/selftests/pstore/Makefile1
-rw-r--r--tools/testing/selftests/ptp/Makefile1
-rw-r--r--tools/testing/selftests/ptrace/peeksiginfo.c1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/Makefile1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/include/linux/types.h1
-rwxr-xr-xtools/testing/selftests/rcutorture/formal/srcu-cbmc/modify_srcu.awk1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/assume.h1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/barriers.h1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/bug_on.h1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/combined_source.c1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/config.h1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/include_srcu.c1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/int_typedefs.h1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/locks.h1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/misc.c1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/percpu.h1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/preempt.c1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/preempt.h1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/simple_sync_srcu.c1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/workqueues.h1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/store_buffering/Makefile1
-rw-r--r--tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/store_buffering/test.c1
-rwxr-xr-xtools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/test_script.sh1
-rw-r--r--tools/testing/selftests/seccomp/Makefile19
-rw-r--r--tools/testing/selftests/seccomp/seccomp_benchmark.c99
-rw-r--r--tools/testing/selftests/seccomp/seccomp_bpf.c628
-rw-r--r--tools/testing/selftests/sigaltstack/sas.c5
-rw-r--r--tools/testing/selftests/splice/Makefile1
-rw-r--r--tools/testing/selftests/splice/default_file_splice_read.c1
-rwxr-xr-xtools/testing/selftests/splice/default_file_splice_read.sh1
-rwxr-xr-xtools/testing/selftests/static_keys/test_static_keys.sh1
-rw-r--r--tools/testing/selftests/sync/Makefile25
-rw-r--r--tools/testing/selftests/tc-testing/tc-tests/filters/tests.json23
-rwxr-xr-xtools/testing/selftests/tc-testing/tdc.py23
-rwxr-xr-xtools/testing/selftests/tc-testing/tdc_batch.py62
-rw-r--r--tools/testing/selftests/tc-testing/tdc_config.py3
-rw-r--r--tools/testing/selftests/tc-testing/tdc_helper.py1
-rw-r--r--tools/testing/selftests/timers/Makefile1
-rw-r--r--tools/testing/selftests/timers/set-timer-lat.c13
-rwxr-xr-xtools/testing/selftests/user/test_user_copy.sh1
-rw-r--r--tools/testing/selftests/vDSO/Makefile1
-rw-r--r--tools/testing/selftests/vm/Makefile1
-rw-r--r--tools/testing/selftests/vm/compaction_test.c1
-rw-r--r--tools/testing/selftests/vm/hugepage-mmap.c1
-rw-r--r--tools/testing/selftests/vm/hugepage-shm.c1
-rw-r--r--tools/testing/selftests/vm/map_hugetlb.c1
-rw-r--r--tools/testing/selftests/vm/mlock-random-test.c1
-rw-r--r--tools/testing/selftests/vm/mlock2-tests.c1
-rw-r--r--tools/testing/selftests/vm/mlock2.h1
-rw-r--r--tools/testing/selftests/vm/on-fault-limit.c1
-rwxr-xr-xtools/testing/selftests/vm/run_vmtests1
-rw-r--r--tools/testing/selftests/vm/thuge-gen.c1
-rw-r--r--tools/testing/selftests/vm/userfaultfd.c25
-rw-r--r--tools/testing/selftests/watchdog/Makefile8
-rw-r--r--tools/testing/selftests/watchdog/watchdog-test.c1
-rw-r--r--tools/testing/selftests/x86/Makefile3
-rw-r--r--tools/testing/selftests/x86/ioperm.c1
-rw-r--r--tools/testing/selftests/x86/iopl.c1
-rw-r--r--tools/testing/selftests/x86/ldt_gdt.c1
-rw-r--r--tools/testing/selftests/x86/mpx-debug.h1
-rw-r--r--tools/testing/selftests/x86/mpx-dig.c1
-rw-r--r--tools/testing/selftests/x86/mpx-hw.h1
-rw-r--r--tools/testing/selftests/x86/mpx-mm.h1
-rw-r--r--tools/testing/selftests/x86/pkey-helpers.h1
-rw-r--r--tools/testing/selftests/x86/protection_keys.c1
-rw-r--r--tools/testing/selftests/x86/ptrace_syscall.c1
-rw-r--r--tools/testing/selftests/x86/raw_syscall_helper_32.S1
-rw-r--r--tools/testing/selftests/x86/test_FCMOV.c1
-rw-r--r--tools/testing/selftests/x86/test_FCOMI.c1
-rw-r--r--tools/testing/selftests/x86/test_FISTTP.c1
-rw-r--r--tools/testing/selftests/x86/test_vdso.c1
-rw-r--r--tools/testing/selftests/zram/Makefile1
-rwxr-xr-xtools/testing/selftests/zram/zram.sh1
-rw-r--r--tools/thermal/tmon/Makefile1
-rw-r--r--tools/thermal/tmon/tmon.81
-rw-r--r--tools/usb/Makefile1
-rw-r--r--tools/usb/ffs-aio-example/multibuff/host_app/Makefile1
-rw-r--r--tools/usb/hcd-tests.sh1
-rw-r--r--tools/usb/usbip/Makefile.am1
-rwxr-xr-xtools/usb/usbip/cleanup.sh1
-rw-r--r--tools/usb/usbip/libsrc/Makefile.am1
-rw-r--r--tools/usb/usbip/libsrc/list.h1
-rw-r--r--tools/usb/usbip/libsrc/sysfs_utils.c1
-rw-r--r--tools/usb/usbip/libsrc/sysfs_utils.h1
-rw-r--r--tools/usb/usbip/libsrc/usbip_common.c1
-rw-r--r--tools/usb/usbip/libsrc/usbip_common.h1
-rw-r--r--tools/usb/usbip/libsrc/vhci_driver.c1
-rw-r--r--tools/usb/usbip/libsrc/vhci_driver.h1
-rw-r--r--tools/usb/usbip/src/Makefile.am1
-rw-r--r--tools/usb/usbip/src/usbip_network.h1
-rw-r--r--tools/virtio/Makefile1
-rw-r--r--tools/virtio/asm/barrier.h1
-rw-r--r--tools/virtio/linux/bug.h1
-rw-r--r--tools/virtio/linux/compiler.h1
-rw-r--r--tools/virtio/linux/dma-mapping.h1
-rw-r--r--tools/virtio/linux/err.h1
-rw-r--r--tools/virtio/linux/kernel.h1
-rw-r--r--tools/virtio/linux/module.h1
-rw-r--r--tools/virtio/linux/scatterlist.h1
-rw-r--r--tools/virtio/linux/slab.h1
-rw-r--r--tools/virtio/linux/uaccess.h1
-rw-r--r--tools/virtio/linux/virtio.h1
-rw-r--r--tools/virtio/linux/virtio_byteorder.h1
-rw-r--r--tools/virtio/linux/virtio_config.h1
-rw-r--r--tools/virtio/ringtest/Makefile1
-rw-r--r--tools/virtio/ringtest/noring.c1
-rw-r--r--tools/virtio/ringtest/ptr_ring.c1
-rwxr-xr-xtools/virtio/ringtest/run-on-all.sh1
-rw-r--r--tools/virtio/uapi/linux/virtio_ring.h1
-rw-r--r--tools/virtio/virtio-trace/Makefile1
-rw-r--r--tools/virtio/virtio-trace/trace-agent.h1
-rw-r--r--tools/virtio/virtio_test.c1
-rw-r--r--tools/virtio/vringh_test.c1
-rw-r--r--tools/vm/Makefile1
-rw-r--r--tools/vm/page_owner_sort.c1
-rw-r--r--tools/vm/slabinfo.c1
-rw-r--r--usr/Kconfig1
-rw-r--r--usr/Makefile10
-rw-r--r--usr/gen_init_cpio.c1
-rw-r--r--usr/initramfs_data.S1
-rw-r--r--virt/kvm/Kconfig1
-rw-r--r--virt/kvm/arm/trace.h1
-rw-r--r--virt/kvm/arm/vgic/trace.h1
-rw-r--r--virt/kvm/async_pf.c6
-rw-r--r--virt/kvm/coalesced_mmio.c1
-rw-r--r--virt/kvm/coalesced_mmio.h1
-rw-r--r--virt/kvm/kvm_main.c3
-rw-r--r--virt/kvm/vfio.h1
14675 files changed, 59511 insertions, 145939 deletions
diff --git a/.mailmap b/.mailmap
index 5273cfd70ad6..a32879a9f970 100644
--- a/.mailmap
+++ b/.mailmap
@@ -43,6 +43,7 @@ Corey Minyard <minyard@acm.org>
Damian Hobson-Garcia <dhobsong@igel.co.jp>
David Brownell <david-b@pacbell.net>
David Woodhouse <dwmw2@shinybook.infradead.org>
+Deng-Cheng Zhu <dengcheng.zhu@mips.com> <dengcheng.zhu@imgtec.com>
Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Domen Puncer <domen@coderock.org>
Douglas Gilbert <dougg@torque.net>
@@ -68,6 +69,8 @@ Jacob Shin <Jacob.Shin@amd.com>
James Bottomley <jejb@mulgrave.(none)>
James Bottomley <jejb@titanic.il.steeleye.com>
James E Wilson <wilson@specifix.com>
+James Hogan <jhogan@kernel.org> <james.hogan@imgtec.com>
+James Hogan <jhogan@kernel.org> <james@albanarts.com>
James Ketrenos <jketreno@io.(none)>
Javi Merino <javi.merino@kernel.org> <javi.merino@arm.com>
<javier@osg.samsung.com> <javier.martinez@collabora.co.uk>
@@ -112,6 +115,7 @@ Mauro Carvalho Chehab <mchehab@kernel.org> <mchehab@s-opensource.com>
Matt Ranostay <mranostay@gmail.com> Matthew Ranostay <mranostay@embeddedalley.com>
Matt Ranostay <mranostay@gmail.com> <matt.ranostay@intel.com>
Matt Ranostay <matt.ranostay@konsulko.com> <matt@ranostay.consulting>
+Matt Redfearn <matt.redfearn@mips.com> <matt.redfearn@imgtec.com>
Mayuresh Janorkar <mayur@ti.com>
Michael Buesch <m@bues.ch>
Michel Dänzer <michel@tungstengraphics.com>
@@ -125,6 +129,7 @@ Mythri P K <mythripk@ti.com>
Nguyen Anh Quynh <aquynh@gmail.com>
Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Patrick Mochel <mochel@digitalimplant.org>
+Paul Burton <paul.burton@mips.com> <paul.burton@imgtec.com>
Peter A Jonsson <pj@ludd.ltu.se>
Peter Oruba <peter@oruba.de>
Peter Oruba <peter.oruba@amd.com>
diff --git a/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935 b/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935
index 33e96f740639..147d4e8a1403 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935
+++ b/Documentation/ABI/testing/sysfs-bus-iio-proximity-as3935
@@ -14,3 +14,11 @@ Description:
Show or set the gain boost of the amp, from 0-31 range.
18 = indoors (default)
14 = outdoors
+
+What /sys/bus/iio/devices/iio:deviceX/noise_level_tripped
+Date: May 2017
+KernelVersion: 4.13
+Contact: Matt Ranostay <matt.ranostay@konsulko.com>
+Description:
+ When 1 the noise level is over the trip level and not reporting
+ valid data
diff --git a/Documentation/ABI/testing/sysfs-class-remoteproc b/Documentation/ABI/testing/sysfs-class-remoteproc
index d188afebc8ba..c3afe9fab646 100644
--- a/Documentation/ABI/testing/sysfs-class-remoteproc
+++ b/Documentation/ABI/testing/sysfs-class-remoteproc
@@ -1,6 +1,6 @@
What: /sys/class/remoteproc/.../firmware
Date: October 2016
-Contact: Matt Redfearn <matt.redfearn@imgtec.com>
+Contact: Matt Redfearn <matt.redfearn@mips.com>
Description: Remote processor firmware
Reports the name of the firmware currently loaded to the
@@ -11,7 +11,7 @@ Description: Remote processor firmware
What: /sys/class/remoteproc/.../state
Date: October 2016
-Contact: Matt Redfearn <matt.redfearn@imgtec.com>
+Contact: Matt Redfearn <matt.redfearn@mips.com>
Description: Remote processor state
Reports the state of the remote processor, which will be one of:
diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-swap b/Documentation/ABI/testing/sysfs-kernel-mm-swap
index 587db52084c7..94672016c268 100644
--- a/Documentation/ABI/testing/sysfs-kernel-mm-swap
+++ b/Documentation/ABI/testing/sysfs-kernel-mm-swap
@@ -14,13 +14,3 @@ Description: Enable/disable VMA based swap readahead.
still used for tmpfs etc. other users. If set to
false, the global swap readahead algorithm will be
used for all swappable pages.
-
-What: /sys/kernel/mm/swap/vma_ra_max_order
-Date: August 2017
-Contact: Linux memory management mailing list <linux-mm@kvack.org>
-Description: The max readahead size in order for VMA based swap readahead
-
- VMA based swap readahead algorithm will readahead at
- most 1 << max_order pages for each readahead. The
- real readahead size for each readahead will be scaled
- according to the estimation algorithm.
diff --git a/Documentation/ABI/testing/sysfs-power b/Documentation/ABI/testing/sysfs-power
index 713cab1d5f12..a1d1612f3651 100644
--- a/Documentation/ABI/testing/sysfs-power
+++ b/Documentation/ABI/testing/sysfs-power
@@ -127,7 +127,7 @@ Description:
What; /sys/power/pm_trace_dev_match
Date: October 2010
-Contact: James Hogan <james@albanarts.com>
+Contact: James Hogan <jhogan@kernel.org>
Description:
The /sys/power/pm_trace_dev_match file contains the name of the
device associated with the last PM event point saved in the RTC
diff --git a/Documentation/core-api/kernel-api.rst b/Documentation/core-api/kernel-api.rst
index 8282099e0cbf..5da10184d908 100644
--- a/Documentation/core-api/kernel-api.rst
+++ b/Documentation/core-api/kernel-api.rst
@@ -352,44 +352,30 @@ Read-Copy Update (RCU)
----------------------
.. kernel-doc:: include/linux/rcupdate.h
- :external:
.. kernel-doc:: include/linux/rcupdate_wait.h
- :external:
.. kernel-doc:: include/linux/rcutree.h
- :external:
.. kernel-doc:: kernel/rcu/tree.c
- :external:
.. kernel-doc:: kernel/rcu/tree_plugin.h
- :external:
.. kernel-doc:: kernel/rcu/tree_exp.h
- :external:
.. kernel-doc:: kernel/rcu/update.c
- :external:
.. kernel-doc:: include/linux/srcu.h
- :external:
.. kernel-doc:: kernel/rcu/srcutree.c
- :external:
.. kernel-doc:: include/linux/rculist_bl.h
- :external:
.. kernel-doc:: include/linux/rculist.h
- :external:
.. kernel-doc:: include/linux/rculist_nulls.h
- :external:
.. kernel-doc:: include/linux/rcu_sync.h
- :external:
.. kernel-doc:: kernel/rcu/sync.c
- :external:
diff --git a/Documentation/core-api/workqueue.rst b/Documentation/core-api/workqueue.rst
index 3943b5bfa8cf..00a5ba51e63f 100644
--- a/Documentation/core-api/workqueue.rst
+++ b/Documentation/core-api/workqueue.rst
@@ -39,8 +39,8 @@ up.
Although MT wq wasted a lot of resource, the level of concurrency
provided was unsatisfactory. The limitation was common to both ST and
MT wq albeit less severe on MT. Each wq maintained its own separate
-worker pool. A MT wq could provide only one execution context per CPU
-while a ST wq one for the whole system. Work items had to compete for
+worker pool. An MT wq could provide only one execution context per CPU
+while an ST wq one for the whole system. Work items had to compete for
those very limited execution contexts leading to various problems
including proneness to deadlocks around the single execution context.
@@ -151,7 +151,7 @@ Application Programming Interface (API)
``alloc_workqueue()`` allocates a wq. The original
``create_*workqueue()`` functions are deprecated and scheduled for
-removal. ``alloc_workqueue()`` takes three arguments - @``name``,
+removal. ``alloc_workqueue()`` takes three arguments - ``@name``,
``@flags`` and ``@max_active``. ``@name`` is the name of the wq and
also used as the name of the rescuer thread if there is one.
@@ -197,7 +197,7 @@ resources, scheduled and executed.
served by worker threads with elevated nice level.
Note that normal and highpri worker-pools don't interact with
- each other. Each maintain its separate pool of workers and
+ each other. Each maintains its separate pool of workers and
implements concurrency management among its workers.
``WQ_CPU_INTENSIVE``
@@ -249,8 +249,8 @@ unbound worker-pools and only one work item could be active at any given
time thus achieving the same ordering property as ST wq.
In the current implementation the above configuration only guarantees
-ST behavior within a given NUMA node. Instead alloc_ordered_queue should
-be used to achieve system wide ST behavior.
+ST behavior within a given NUMA node. Instead ``alloc_ordered_queue()`` should
+be used to achieve system-wide ST behavior.
Example Execution Scenarios
diff --git a/Documentation/cpu-freq/index.txt b/Documentation/cpu-freq/index.txt
index 03a7cee6ac73..c15e75386a05 100644
--- a/Documentation/cpu-freq/index.txt
+++ b/Documentation/cpu-freq/index.txt
@@ -32,8 +32,6 @@ cpufreq-stats.txt - General description of sysfs cpufreq stats.
index.txt - File index, Mailing list and Links (this document)
-intel-pstate.txt - Intel pstate cpufreq driver specific file.
-
pcc-cpufreq.txt - PCC cpufreq driver specific file.
diff --git a/Documentation/device-mapper/dm-raid.txt b/Documentation/device-mapper/dm-raid.txt
index 4a0a7469fdd7..32df07e29f68 100644
--- a/Documentation/device-mapper/dm-raid.txt
+++ b/Documentation/device-mapper/dm-raid.txt
@@ -344,3 +344,4 @@ Version History
(wrong raid10_copies/raid10_format sequence)
1.11.1 Add raid4/5/6 journal write-back support via journal_mode option
1.12.1 fix for MD deadlock between mddev_suspend() and md_write_start() available
+1.13.0 Fix dev_health status at end of "recover" (was 'a', now 'A')
diff --git a/Documentation/devicetree/bindings/clock/st,stm32h7-rcc.txt b/Documentation/devicetree/bindings/clock/st,stm32h7-rcc.txt
index a135504c7d57..cac24ee10b72 100644
--- a/Documentation/devicetree/bindings/clock/st,stm32h7-rcc.txt
+++ b/Documentation/devicetree/bindings/clock/st,stm32h7-rcc.txt
@@ -32,7 +32,7 @@ Example:
compatible = "st,stm32h743-rcc", "st,stm32-rcc";
reg = <0x58024400 0x400>;
#reset-cells = <1>;
- #clock-cells = <2>;
+ #clock-cells = <1>;
clocks = <&clk_hse>, <&clk_lse>, <&clk_i2s_ckin>;
st,syscfg = <&pwrcfg>;
diff --git a/Documentation/devicetree/bindings/i2c/i2c-altera.txt b/Documentation/devicetree/bindings/i2c/i2c-altera.txt
new file mode 100644
index 000000000000..767664f448ec
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/i2c-altera.txt
@@ -0,0 +1,39 @@
+* Altera I2C Controller
+* This is Altera's synthesizable logic block I2C Controller for use
+* in Altera's FPGAs.
+
+Required properties :
+ - compatible : should be "altr,softip-i2c-v1.0"
+ - reg : Offset and length of the register set for the device
+ - interrupts : <IRQ> where IRQ is the interrupt number.
+ - clocks : phandle to input clock.
+ - #address-cells = <1>;
+ - #size-cells = <0>;
+
+Recommended properties :
+ - clock-frequency : desired I2C bus clock frequency in Hz.
+
+Optional properties :
+ - fifo-size : Size of the RX and TX FIFOs in bytes.
+ - Child nodes conforming to i2c bus binding
+
+Example :
+
+ i2c@100080000 {
+ compatible = "altr,softip-i2c-v1.0";
+ reg = <0x00000001 0x00080000 0x00000040>;
+ interrupt-parent = <&intc>;
+ interrupts = <0 43 4>;
+ clocks = <&clk_0>;
+ clock-frequency = <100000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ fifo-size = <4>;
+
+ eeprom@51 {
+ compatible = "atmel,24c32";
+ reg = <0x51>;
+ pagesize = <32>;
+ };
+ };
+
diff --git a/Documentation/devicetree/bindings/i2c/i2c-stm32.txt b/Documentation/devicetree/bindings/i2c/i2c-stm32.txt
index 78eaf7b718ed..3b5489966634 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-stm32.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-stm32.txt
@@ -1,7 +1,9 @@
* I2C controller embedded in STMicroelectronics STM32 I2C platform
Required properties :
-- compatible : Must be "st,stm32f4-i2c"
+- compatible : Must be one of the following
+ - "st,stm32f4-i2c"
+ - "st,stm32f7-i2c"
- reg : Offset and length of the register set for the device
- interrupts : Must contain the interrupt id for I2C event and then the
interrupt id for I2C error.
@@ -14,8 +16,16 @@ Required properties :
Optional properties :
- clock-frequency : Desired I2C bus clock frequency in Hz. If not specified,
- the default 100 kHz frequency will be used. As only Normal and Fast modes
- are supported, possible values are 100000 and 400000.
+ the default 100 kHz frequency will be used.
+ For STM32F4 SoC Standard-mode and Fast-mode are supported, possible values are
+ 100000 and 400000.
+ For STM32F7 SoC, Standard-mode, Fast-mode and Fast-mode Plus are supported,
+ possible values are 100000, 400000 and 1000000.
+- i2c-scl-rising-time-ns : Only for STM32F7, I2C SCL Rising time for the board
+ (default: 25)
+- i2c-scl-falling-time-ns : Only for STM32F7, I2C SCL Falling time for the board
+ (default: 10)
+ I2C Timings are derived from these 2 values
Example :
@@ -31,3 +41,16 @@ Example :
pinctrl-0 = <&i2c1_sda_pin>, <&i2c1_scl_pin>;
pinctrl-names = "default";
};
+
+ i2c@40005400 {
+ compatible = "st,stm32f7-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x40005400 0x400>;
+ interrupts = <31>,
+ <32>;
+ resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
+ clocks = <&rcc 1 CLK_I2C1>;
+ pinctrl-0 = <&i2c1_sda_pin>, <&i2c1_scl_pin>;
+ pinctrl-names = "default";
+ };
diff --git a/Documentation/devicetree/bindings/iio/proximity/as3935.txt b/Documentation/devicetree/bindings/iio/proximity/as3935.txt
index 38d74314b7ab..b6c1afa6f02d 100644
--- a/Documentation/devicetree/bindings/iio/proximity/as3935.txt
+++ b/Documentation/devicetree/bindings/iio/proximity/as3935.txt
@@ -16,6 +16,10 @@ Optional properties:
- ams,tuning-capacitor-pf: Calibration tuning capacitor stepping
value 0 - 120pF. This will require using the calibration data from
the manufacturer.
+ - ams,nflwdth: Set the noise and watchdog threshold register on
+ startup. This will need to set according to the noise from the
+ MCU board, and possibly the local environment. Refer to the
+ datasheet for the threshold settings.
Example:
@@ -27,4 +31,5 @@ as3935@0 {
interrupt-parent = <&gpio1>;
interrupts = <16 1>;
ams,tuning-capacitor-pf = <80>;
+ ams,nflwdth = <0x44>;
};
diff --git a/Documentation/devicetree/bindings/input/pwm-vibrator.txt b/Documentation/devicetree/bindings/input/pwm-vibrator.txt
new file mode 100644
index 000000000000..09145d18491d
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/pwm-vibrator.txt
@@ -0,0 +1,66 @@
+* PWM vibrator device tree bindings
+
+Registers a PWM device as vibrator. It is expected, that the vibrator's
+strength increases based on the duty cycle of the enable PWM channel
+(100% duty cycle meaning strongest vibration, 0% meaning no vibration).
+
+The binding supports an optional direction PWM channel, that can be
+driven at fixed duty cycle. If available this is can be used to increase
+the vibration effect of some devices.
+
+Required properties:
+- compatible: should contain "pwm-vibrator"
+- pwm-names: Should contain "enable" and optionally "direction"
+- pwms: Should contain a PWM handle for each entry in pwm-names
+
+Optional properties:
+- vcc-supply: Phandle for the regulator supplying power
+- direction-duty-cycle-ns: Duty cycle of the direction PWM channel in
+ nanoseconds, defaults to 50% of the channel's
+ period.
+
+Example from Motorola Droid 4:
+
+&omap4_pmx_core {
+ vibrator_direction_pin: pinmux_vibrator_direction_pin {
+ pinctrl-single,pins = <
+ OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1) /* dmtimer8_pwm_evt (gpio_27) */
+ >;
+ };
+
+ vibrator_enable_pin: pinmux_vibrator_enable_pin {
+ pinctrl-single,pins = <
+ OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1) /* dmtimer9_pwm_evt (gpio_28) */
+ >;
+ };
+};
+
+/ {
+ pwm8: dmtimer-pwm {
+ pinctrl-names = "default";
+ pinctrl-0 = <&vibrator_direction_pin>;
+
+ compatible = "ti,omap-dmtimer-pwm";
+ #pwm-cells = <3>;
+ ti,timers = <&timer8>;
+ ti,clock-source = <0x01>;
+ };
+
+ pwm9: dmtimer-pwm {
+ pinctrl-names = "default";
+ pinctrl-0 = <&vibrator_enable_pin>;
+
+ compatible = "ti,omap-dmtimer-pwm";
+ #pwm-cells = <3>;
+ ti,timers = <&timer9>;
+ ti,clock-source = <0x01>;
+ };
+
+ vibrator {
+ compatible = "pwm-vibrator";
+ pwms = <&pwm8 0 1000000000 0>,
+ <&pwm9 0 1000000000 0>;
+ pwm-names = "enable", "direction";
+ direction-duty-cycle-ns = <1000000000>;
+ };
+};
diff --git a/Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.txt b/Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.txt
index 4c29cdab0ea5..5eb108e180fa 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.txt
+++ b/Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.txt
@@ -99,7 +99,7 @@ Examples:
compatible = "arm,gic-v3-its";
msi-controller;
#msi-cells = <1>;
- reg = <0x0 0x2c200000 0 0x200000>;
+ reg = <0x0 0x2c200000 0 0x20000>;
};
};
@@ -124,14 +124,14 @@ Examples:
compatible = "arm,gic-v3-its";
msi-controller;
#msi-cells = <1>;
- reg = <0x0 0x2c200000 0 0x200000>;
+ reg = <0x0 0x2c200000 0 0x20000>;
};
gic-its@2c400000 {
compatible = "arm,gic-v3-its";
msi-controller;
#msi-cells = <1>;
- reg = <0x0 0x2c400000 0 0x200000>;
+ reg = <0x0 0x2c400000 0 0x20000>;
};
ppi-partitions {
diff --git a/Documentation/devicetree/bindings/leds/ams,as3645a.txt b/Documentation/devicetree/bindings/leds/ams,as3645a.txt
index 12c5ef26ec73..fdc40e354a64 100644
--- a/Documentation/devicetree/bindings/leds/ams,as3645a.txt
+++ b/Documentation/devicetree/bindings/leds/ams,as3645a.txt
@@ -15,11 +15,14 @@ Required properties
compatible : Must be "ams,as3645a".
reg : The I2C address of the device. Typically 0x30.
+#address-cells : 1
+#size-cells : 0
-Required properties of the "flash" child node
-=============================================
+Required properties of the flash child node (0)
+===============================================
+reg: 0
flash-timeout-us: Flash timeout in microseconds. The value must be in
the range [100000, 850000] and divisible by 50000.
flash-max-microamp: Maximum flash current in microamperes. Has to be
@@ -33,20 +36,21 @@ ams,input-max-microamp: Maximum flash controller input current. The
and divisible by 50000.
-Optional properties of the "flash" child node
-=============================================
+Optional properties of the flash child node
+===========================================
label : The label of the flash LED.
-Required properties of the "indicator" child node
-=================================================
+Required properties of the indicator child node (1)
+===================================================
+reg: 1
led-max-microamp: Maximum indicator current. The allowed values are
2500, 5000, 7500 and 10000.
-Optional properties of the "indicator" child node
-=================================================
+Optional properties of the indicator child node
+===============================================
label : The label of the indicator LED.
@@ -55,16 +59,20 @@ Example
=======
as3645a@30 {
+ #address-cells: 1
+ #size-cells: 0
reg = <0x30>;
compatible = "ams,as3645a";
- flash {
+ flash@0 {
+ reg = <0x0>;
flash-timeout-us = <150000>;
flash-max-microamp = <320000>;
led-max-microamp = <60000>;
ams,input-max-microamp = <1750000>;
label = "as3645a:flash";
};
- indicator {
+ indicator@1 {
+ reg = <0x1>;
led-max-microamp = <10000>;
label = "as3645a:indicator";
};
diff --git a/Documentation/devicetree/bindings/mips/lantiq/fpi-bus.txt b/Documentation/devicetree/bindings/mips/lantiq/fpi-bus.txt
new file mode 100644
index 000000000000..0a2df4338332
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/lantiq/fpi-bus.txt
@@ -0,0 +1,31 @@
+Lantiq XWAY SoC FPI BUS binding
+============================
+
+
+-------------------------------------------------------------------------------
+Required properties:
+- compatible : Should be one of
+ "lantiq,xrx200-fpi"
+- reg : The address and length of the XBAR
+ configuration register.
+ Address and length of the FPI bus itself.
+- lantiq,rcu : A phandle to the RCU syscon
+- lantiq,offset-endianness : Offset of the endianness configuration
+ register
+
+-------------------------------------------------------------------------------
+Example for the FPI on the xrx200 SoCs:
+ fpi@10000000 {
+ compatible = "lantiq,xrx200-fpi";
+ ranges = <0x0 0x10000000 0xf000000>;
+ reg = <0x1f400000 0x1000>,
+ <0x10000000 0xf000000>;
+ lantiq,rcu = <&rcu0>;
+ lantiq,offset-endianness = <0x4c>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ gptu@e100a00 {
+ ......
+ };
+ };
diff --git a/Documentation/devicetree/bindings/mips/lantiq/rcu-gphy.txt b/Documentation/devicetree/bindings/mips/lantiq/rcu-gphy.txt
new file mode 100644
index 000000000000..a0c19bd1ce66
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/lantiq/rcu-gphy.txt
@@ -0,0 +1,36 @@
+Lantiq XWAY SoC GPHY binding
+============================
+
+This binding describes a software-defined ethernet PHY, provided by the RCU
+module on newer Lantiq XWAY SoCs (xRX200 and newer).
+
+-------------------------------------------------------------------------------
+Required properties:
+- compatible : Should be one of
+ "lantiq,xrx200a1x-gphy"
+ "lantiq,xrx200a2x-gphy"
+ "lantiq,xrx300-gphy"
+ "lantiq,xrx330-gphy"
+- reg : Addrress of the GPHY FW load address register
+- resets : Must reference the RCU GPHY reset bit
+- reset-names : One entry, value must be "gphy" or optional "gphy2"
+- clocks : A reference to the (PMU) GPHY clock gate
+
+Optional properties:
+- lantiq,gphy-mode : GPHY_MODE_GE (default) or GPHY_MODE_FE as defined in
+ <dt-bindings/mips/lantiq_xway_gphy.h>
+
+
+-------------------------------------------------------------------------------
+Example for the GPHys on the xRX200 SoCs:
+
+#include <dt-bindings/mips/lantiq_rcu_gphy.h>
+ gphy0: gphy@20 {
+ compatible = "lantiq,xrx200a2x-gphy";
+ reg = <0x20 0x4>;
+
+ resets = <&reset0 31 30>, <&reset1 7 7>;
+ reset-names = "gphy", "gphy2";
+ clocks = <&pmu0 XRX200_PMU_GATE_GPHY>;
+ lantiq,gphy-mode = <GPHY_MODE_GE>;
+ };
diff --git a/Documentation/devicetree/bindings/mips/lantiq/rcu.txt b/Documentation/devicetree/bindings/mips/lantiq/rcu.txt
new file mode 100644
index 000000000000..a086f1e1cdd7
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/lantiq/rcu.txt
@@ -0,0 +1,89 @@
+Lantiq XWAY SoC RCU binding
+===========================
+
+This binding describes the RCU (reset controller unit) multifunction device,
+where each sub-device has it's own set of registers.
+
+The RCU register range is used for multiple purposes. Mostly one device
+uses one or multiple register exclusively, but for some registers some
+bits are for one driver and some other bits are for a different driver.
+With this patch all accesses to the RCU registers will go through
+syscon.
+
+
+-------------------------------------------------------------------------------
+Required properties:
+- compatible : The first and second values must be:
+ "lantiq,xrx200-rcu", "simple-mfd", "syscon"
+- reg : The address and length of the system control registers
+
+
+-------------------------------------------------------------------------------
+Example of the RCU bindings on a xRX200 SoC:
+ rcu0: rcu@203000 {
+ compatible = "lantiq,xrx200-rcu", "simple-mfd", "syscon";
+ reg = <0x203000 0x100>;
+ ranges = <0x0 0x203000 0x100>;
+ big-endian;
+
+ gphy0: gphy@20 {
+ compatible = "lantiq,xrx200a2x-gphy";
+ reg = <0x20 0x4>;
+
+ resets = <&reset0 31 30>, <&reset1 7 7>;
+ reset-names = "gphy", "gphy2";
+ lantiq,gphy-mode = <GPHY_MODE_GE>;
+ };
+
+ gphy1: gphy@68 {
+ compatible = "lantiq,xrx200a2x-gphy";
+ reg = <0x68 0x4>;
+
+ resets = <&reset0 29 28>, <&reset1 6 6>;
+ reset-names = "gphy", "gphy2";
+ lantiq,gphy-mode = <GPHY_MODE_GE>;
+ };
+
+ reset0: reset-controller@10 {
+ compatible = "lantiq,xrx200-reset";
+ reg = <0x10 4>, <0x14 4>;
+
+ #reset-cells = <2>;
+ };
+
+ reset1: reset-controller@48 {
+ compatible = "lantiq,xrx200-reset";
+ reg = <0x48 4>, <0x24 4>;
+
+ #reset-cells = <2>;
+ };
+
+ usb_phy0: usb2-phy@18 {
+ compatible = "lantiq,xrx200-usb2-phy";
+ reg = <0x18 4>, <0x38 4>;
+ status = "disabled";
+
+ resets = <&reset1 4 4>, <&reset0 4 4>;
+ reset-names = "phy", "ctrl";
+ #phy-cells = <0>;
+ };
+
+ usb_phy1: usb2-phy@34 {
+ compatible = "lantiq,xrx200-usb2-phy";
+ reg = <0x34 4>, <0x3C 4>;
+ status = "disabled";
+
+ resets = <&reset1 5 4>, <&reset0 4 4>;
+ reset-names = "phy", "ctrl";
+ #phy-cells = <0>;
+ };
+
+ reboot@10 {
+ compatible = "syscon-reboot";
+ reg = <0x10 4>;
+
+ regmap = <&rcu0>;
+ offset = <0x10>;
+ mask = <0x40000000>;
+ };
+ };
diff --git a/Documentation/devicetree/bindings/mips/ni.txt b/Documentation/devicetree/bindings/mips/ni.txt
new file mode 100644
index 000000000000..722bf2d62da9
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/ni.txt
@@ -0,0 +1,7 @@
+National Instruments MIPS platforms
+
+required root node properties:
+ - compatible: must be "ni,169445"
+
+CPU Nodes
+ - compatible: must be "mti,mips14KEc"
diff --git a/Documentation/devicetree/bindings/mips/ralink.txt b/Documentation/devicetree/bindings/mips/ralink.txt
index b35a8d04f8b6..a16e8d7fe56c 100644
--- a/Documentation/devicetree/bindings/mips/ralink.txt
+++ b/Documentation/devicetree/bindings/mips/ralink.txt
@@ -15,3 +15,4 @@ value must be one of the following values:
ralink,rt5350-soc
ralink,mt7620a-soc
ralink,mt7620n-soc
+ ralink,mt7628a-soc
diff --git a/Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt b/Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt
index b878a1e305af..ed1456f5c94d 100644
--- a/Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt
+++ b/Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt
@@ -16,11 +16,13 @@ Required Properties:
- clocks:
Array of clocks required for SDHC.
- Require at least input clock for Xenon IP core.
+ Require at least input clock for Xenon IP core. For Armada AP806 and
+ CP110, the AXI clock is also mandatory.
- clock-names:
Array of names corresponding to clocks property.
The input clock for Xenon IP core should be named as "core".
+ The input clock for the AXI bus must be named as "axi".
- reg:
* For "marvell,armada-3700-sdhci", two register areas.
@@ -106,8 +108,8 @@ Example:
compatible = "marvell,armada-ap806-sdhci";
reg = <0xaa0000 0x1000>;
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>
- clocks = <&emmc_clk>;
- clock-names = "core";
+ clocks = <&emmc_clk>,<&axi_clk>;
+ clock-names = "core", "axi";
bus-width = <4>;
marvell,xenon-phy-slow-mode;
marvell,xenon-tun-count = <11>;
@@ -126,8 +128,8 @@ Example:
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>
vqmmc-supply = <&sd_vqmmc_regulator>;
vmmc-supply = <&sd_vmmc_regulator>;
- clocks = <&sdclk>;
- clock-names = "core";
+ clocks = <&sdclk>, <&axi_clk>;
+ clock-names = "core", "axi";
bus-width = <4>;
marvell,xenon-tun-count = <9>;
};
diff --git a/Documentation/devicetree/bindings/net/marvell-pp2.txt b/Documentation/devicetree/bindings/net/marvell-pp2.txt
index 7e2dad08a12e..1814fa13f6ab 100644
--- a/Documentation/devicetree/bindings/net/marvell-pp2.txt
+++ b/Documentation/devicetree/bindings/net/marvell-pp2.txt
@@ -21,8 +21,9 @@ Required properties:
- main controller clock (for both armada-375-pp2 and armada-7k-pp2)
- GOP clock (for both armada-375-pp2 and armada-7k-pp2)
- MG clock (only for armada-7k-pp2)
-- clock-names: names of used clocks, must be "pp_clk", "gop_clk" and
- "mg_clk" (the latter only for armada-7k-pp2).
+ - AXI clock (only for armada-7k-pp2)
+- clock-names: names of used clocks, must be "pp_clk", "gop_clk", "mg_clk"
+ and "axi_clk" (the 2 latter only for armada-7k-pp2).
The ethernet ports are represented by subnodes. At least one port is
required.
@@ -78,8 +79,9 @@ Example for marvell,armada-7k-pp2:
cpm_ethernet: ethernet@0 {
compatible = "marvell,armada-7k-pp22";
reg = <0x0 0x100000>, <0x129000 0xb000>;
- clocks = <&cpm_syscon0 1 3>, <&cpm_syscon0 1 9>, <&cpm_syscon0 1 5>;
- clock-names = "pp_clk", "gop_clk", "gp_clk";
+ clocks = <&cpm_syscon0 1 3>, <&cpm_syscon0 1 9>,
+ <&cpm_syscon0 1 5>, <&cpm_syscon0 1 18>;
+ clock-names = "pp_clk", "gop_clk", "gp_clk", "axi_clk";
eth0: eth0 {
interrupts = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>,
diff --git a/Documentation/devicetree/bindings/net/rockchip-dwmac.txt b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt
index 6af8eed1adeb..9c16ee2965a2 100644
--- a/Documentation/devicetree/bindings/net/rockchip-dwmac.txt
+++ b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt
@@ -4,6 +4,7 @@ The device node has following properties.
Required properties:
- compatible: should be "rockchip,<name>-gamc"
+ "rockchip,rk3128-gmac": found on RK312x SoCs
"rockchip,rk3228-gmac": found on RK322x SoCs
"rockchip,rk3288-gmac": found on RK3288 SoCs
"rockchip,rk3328-gmac": found on RK3328 SoCs
diff --git a/Documentation/devicetree/bindings/phy/phy-lantiq-rcu-usb2.txt b/Documentation/devicetree/bindings/phy/phy-lantiq-rcu-usb2.txt
new file mode 100644
index 000000000000..643948b6b576
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/phy-lantiq-rcu-usb2.txt
@@ -0,0 +1,40 @@
+Lantiq XWAY SoC RCU USB 1.1/2.0 PHY binding
+===========================================
+
+This binding describes the USB PHY hardware provided by the RCU module on the
+Lantiq XWAY SoCs.
+
+This node has to be a sub node of the Lantiq RCU block.
+
+-------------------------------------------------------------------------------
+Required properties (controller (parent) node):
+- compatible : Should be one of
+ "lantiq,ase-usb2-phy"
+ "lantiq,danube-usb2-phy"
+ "lantiq,xrx100-usb2-phy"
+ "lantiq,xrx200-usb2-phy"
+ "lantiq,xrx300-usb2-phy"
+- reg : Defines the following sets of registers in the parent
+ syscon device
+ - Offset of the USB PHY configuration register
+ - Offset of the USB Analog configuration
+ register (only for xrx200 and xrx200)
+- clocks : References to the (PMU) "phy" clk gate.
+- clock-names : Must be "phy"
+- resets : References to the RCU USB configuration reset bits.
+- reset-names : Must be one of the following:
+ "phy" (optional)
+ "ctrl" (shared)
+
+-------------------------------------------------------------------------------
+Example for the USB PHYs on an xRX200 SoC:
+ usb_phy0: usb2-phy@18 {
+ compatible = "lantiq,xrx200-usb2-phy";
+ reg = <0x18 4>, <0x38 4>;
+
+ clocks = <&pmu PMU_GATE_USB0_PHY>;
+ clock-names = "phy";
+ resets = <&reset1 4 4>, <&reset0 4 4>;
+ reset-names = "phy", "ctrl";
+ #phy-cells = <0>;
+ };
diff --git a/Documentation/devicetree/bindings/reset/lantiq,reset.txt b/Documentation/devicetree/bindings/reset/lantiq,reset.txt
new file mode 100644
index 000000000000..c6aef36b7d15
--- /dev/null
+++ b/Documentation/devicetree/bindings/reset/lantiq,reset.txt
@@ -0,0 +1,30 @@
+Lantiq XWAY SoC RCU reset controller binding
+============================================
+
+This binding describes a reset-controller found on the RCU module on Lantiq
+XWAY SoCs.
+
+This node has to be a sub node of the Lantiq RCU block.
+
+-------------------------------------------------------------------------------
+Required properties:
+- compatible : Should be one of
+ "lantiq,danube-reset"
+ "lantiq,xrx200-reset"
+- reg : Defines the following sets of registers in the parent
+ syscon device
+ - Offset of the reset set register
+ - Offset of the reset status register
+- #reset-cells : Specifies the number of cells needed to encode the
+ reset line, should be 2.
+ The first cell takes the reset set bit and the
+ second cell takes the status bit.
+
+-------------------------------------------------------------------------------
+Example for the reset-controllers on the xRX200 SoCs:
+ reset0: reset-controller@10 {
+ compatible = "lantiq,xrx200-reset";
+ reg <0x10 0x04>, <0x14 0x04>;
+
+ #reset-cells = <2>;
+ };
diff --git a/Documentation/devicetree/bindings/reset/snps,hsdk-reset.txt b/Documentation/devicetree/bindings/reset/snps,hsdk-reset.txt
new file mode 100644
index 000000000000..830069b1c37c
--- /dev/null
+++ b/Documentation/devicetree/bindings/reset/snps,hsdk-reset.txt
@@ -0,0 +1,28 @@
+Binding for the Synopsys HSDK reset controller
+
+This binding uses the common reset binding[1].
+
+[1] Documentation/devicetree/bindings/reset/reset.txt
+
+Required properties:
+- compatible: should be "snps,hsdk-reset".
+- reg: should always contain 2 pairs address - length: first for reset
+ configuration register and second for corresponding SW reset and status bits
+ register.
+- #reset-cells: from common reset binding; Should always be set to 1.
+
+Example:
+ reset: reset@880 {
+ compatible = "snps,hsdk-reset";
+ #reset-cells = <1>;
+ reg = <0x8A0 0x4>, <0xFF0 0x4>;
+ };
+
+Specifying reset lines connected to IP modules:
+ ethernet@.... {
+ ....
+ resets = <&reset HSDK_V1_ETH_RESET>;
+ ....
+ };
+
+The index could be found in <dt-bindings/reset/snps,hsdk-reset.h>
diff --git a/Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt b/Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt
index 3eca6de6369d..a65d7b71e81a 100644
--- a/Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt
+++ b/Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt
@@ -8,6 +8,12 @@ Required properties:
the firmware event log
- linux,sml-size : size of the memory allocated for the firmware event log
+Optional properties:
+
+- powered-while-suspended: present when the TPM is left powered on between
+ suspend and resume (makes the suspend/resume
+ callbacks do nothing).
+
Example (for OpenPower Systems with Nuvoton TPM 2.0 on I2C)
----------------------------------------------------------
diff --git a/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt b/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt
index 4fc96946f81d..cf504d0380ae 100644
--- a/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt
+++ b/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt
@@ -41,6 +41,8 @@ Required properties:
- "renesas,hscif-r8a7795" for R8A7795 (R-Car H3) HSCIF compatible UART.
- "renesas,scif-r8a7796" for R8A7796 (R-Car M3-W) SCIF compatible UART.
- "renesas,hscif-r8a7796" for R8A7796 (R-Car M3-W) HSCIF compatible UART.
+ - "renesas,scif-r8a77970" for R8A77970 (R-Car V3M) SCIF compatible UART.
+ - "renesas,hscif-r8a77970" for R8A77970 (R-Car V3M) HSCIF compatible UART.
- "renesas,scif-r8a77995" for R8A77995 (R-Car D3) SCIF compatible UART.
- "renesas,hscif-r8a77995" for R8A77995 (R-Car D3) HSCIF compatible UART.
- "renesas,scifa-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFA compatible UART.
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 69183f0fbc78..1afd298eddd7 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -3,8 +3,8 @@ Device tree binding vendor prefix registry. Keep list in alphabetical order.
This isn't an exhaustive list, but you should add new prefixes to it before
using them to avoid name-space collisions.
-abcn Abracon Corporation
abilis Abilis Systems
+abracon Abracon Corporation
actions Actions Semiconductor Co., Ltd.
active-semi Active-Semi International Inc
ad Avionic Design GmbH
@@ -361,6 +361,7 @@ variscite Variscite Ltd.
via VIA Technologies, Inc.
virtio Virtual I/O Device Specification, developed by the OASIS consortium
vivante Vivante Corporation
+vocore VoCore Studio
voipac Voipac Technologies s.r.o.
wd Western Digital Corp.
wetek WeTek Electronics, limited.
diff --git a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt
index c5e74d7b4406..c5077a1f5cb3 100644
--- a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt
@@ -8,9 +8,49 @@ Required properties:
- reg: physical base address of the controller and length of memory mapped
region
+Optional properties:
+
+ - aspeed,reset-type = "cpu|soc|system|none"
+
+ Reset behavior - Whenever a timeout occurs the watchdog can be programmed
+ to generate one of three different, mutually exclusive, types of resets.
+
+ Type "none" can be specified to indicate that no resets are to be done.
+ This is useful in situations where another watchdog engine on chip is
+ to perform the reset.
+
+ If 'aspeed,reset-type=' is not specfied the default is to enable system
+ reset.
+
+ Reset types:
+
+ - cpu: Reset CPU on watchdog timeout
+
+ - soc: Reset 'System on Chip' on watchdog timeout
+
+ - system: Reset system on watchdog timeout
+
+ - none: No reset is performed on timeout. Assumes another watchdog
+ engine is responsible for this.
+
+ - aspeed,alt-boot: If property is present then boot from alternate block.
+ - aspeed,external-signal: If property is present then signal is sent to
+ external reset counter (only WDT1 and WDT2). If not
+ specified no external signal is sent.
+ - aspeed,ext-pulse-duration: External signal pulse duration in microseconds
+
+Optional properties for AST2500-compatible watchdogs:
+ - aspeed,ext-push-pull: If aspeed,external-signal is present, set the pin's
+ drive type to push-pull. The default is open-drain.
+ - aspeed,ext-active-high: If aspeed,external-signal is present and and the pin
+ is configured as push-pull, then set the pulse
+ polarity to active-high. The default is active-low.
+
Example:
wdt1: watchdog@1e785000 {
compatible = "aspeed,ast2400-wdt";
reg = <0x1e785000 0x1c>;
+ aspeed,reset-type = "system";
+ aspeed,external-signal;
};
diff --git a/Documentation/devicetree/bindings/watchdog/lantiq-wdt.txt b/Documentation/devicetree/bindings/watchdog/lantiq-wdt.txt
new file mode 100644
index 000000000000..18d4d8302702
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/lantiq-wdt.txt
@@ -0,0 +1,24 @@
+Lantiq WTD watchdog binding
+============================
+
+This describes the binding of the Lantiq watchdog driver.
+
+-------------------------------------------------------------------------------
+Required properties:
+- compatible : Should be one of
+ "lantiq,wdt"
+ "lantiq,xrx100-wdt"
+ "lantiq,xrx200-wdt", "lantiq,xrx100-wdt"
+ "lantiq,falcon-wdt"
+- reg : Address of the watchdog block
+- lantiq,rcu : A phandle to the RCU syscon (required for
+ "lantiq,falcon-wdt" and "lantiq,xrx100-wdt")
+
+-------------------------------------------------------------------------------
+Example for the watchdog on the xRX200 SoCs:
+ watchdog@803f0 {
+ compatible = "lantiq,xrx200-wdt", "lantiq,xrx100-wdt";
+ reg = <0x803f0 0x10>;
+
+ lantiq,rcu = <&rcu0>;
+ };
diff --git a/Documentation/devicetree/bindings/watchdog/meson-wdt.txt b/Documentation/devicetree/bindings/watchdog/meson-wdt.txt
index ae70185d96e6..8a6d84cb36c9 100644
--- a/Documentation/devicetree/bindings/watchdog/meson-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/meson-wdt.txt
@@ -2,7 +2,11 @@ Meson SoCs Watchdog timer
Required properties:
-- compatible : should be "amlogic,meson6-wdt" or "amlogic,meson8b-wdt"
+- compatible : depending on the SoC this should be one of:
+ "amlogic,meson6-wdt" on Meson6 SoCs
+ "amlogic,meson8-wdt" and "amlogic,meson6-wdt" on Meson8 SoCs
+ "amlogic,meson8b-wdt" on Meson8b SoCs
+ "amlogic,meson8m2-wdt" and "amlogic,meson8b-wdt" on Meson8m2 SoCs
- reg : Specifies base physical address and size of the registers.
Example:
diff --git a/Documentation/devicetree/bindings/watchdog/mtk-wdt.txt b/Documentation/devicetree/bindings/watchdog/mtk-wdt.txt
index 20ada673ab0c..235de0683bb6 100644
--- a/Documentation/devicetree/bindings/watchdog/mtk-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/mtk-wdt.txt
@@ -6,6 +6,8 @@ Required properties:
"mediatek,mt2701-wdt", "mediatek,mt6589-wdt": for MT2701
"mediatek,mt6589-wdt": for MT6589
"mediatek,mt6797-wdt", "mediatek,mt6589-wdt": for MT6797
+ "mediatek,mt7622-wdt", "mediatek,mt6589-wdt": for MT7622
+ "mediatek,mt7623-wdt", "mediatek,mt6589-wdt": for MT7623
- reg : Specifies base physical address and size of the registers.
diff --git a/Documentation/devicetree/bindings/watchdog/renesas-wdt.txt b/Documentation/devicetree/bindings/watchdog/renesas-wdt.txt
index 9e306afbbd49..bf6d1ca58af7 100644
--- a/Documentation/devicetree/bindings/watchdog/renesas-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/renesas-wdt.txt
@@ -6,6 +6,7 @@ Required properties:
Examples with soctypes are:
- "renesas,r8a7795-wdt" (R-Car H3)
- "renesas,r8a7796-wdt" (R-Car M3-W)
+ - "renesas,r8a77995-wdt" (R-Car D3)
- "renesas,r7s72100-wdt" (RZ/A1)
When compatible with the generic version, nodes must list the SoC-specific
diff --git a/Documentation/driver-api/pm/devices.rst b/Documentation/driver-api/pm/devices.rst
index bedd32388dac..a0dc2879a152 100644
--- a/Documentation/driver-api/pm/devices.rst
+++ b/Documentation/driver-api/pm/devices.rst
@@ -675,7 +675,7 @@ sub-domain of the parent domain.
Support for power domains is provided through the :c:member:`pm_domain` field of
|struct device|. This field is a pointer to an object of type
-|struct dev_pm_domain|, defined in :file:`include/linux/pm.h``, providing a set
+|struct dev_pm_domain|, defined in :file:`include/linux/pm.h`, providing a set
of power management callbacks analogous to the subsystem-level and device driver
callbacks that are executed for the given device during all power transitions,
instead of the respective subsystem-level callbacks. Specifically, if a
diff --git a/Documentation/driver-model/driver.txt b/Documentation/driver-model/driver.txt
index 4421135826a2..d661e6f7e6a0 100644
--- a/Documentation/driver-model/driver.txt
+++ b/Documentation/driver-model/driver.txt
@@ -196,12 +196,13 @@ struct driver_attribute {
};
Device drivers can export attributes via their sysfs directories.
-Drivers can declare attributes using a DRIVER_ATTR macro that works
-identically to the DEVICE_ATTR macro.
+Drivers can declare attributes using a DRIVER_ATTR_RW and DRIVER_ATTR_RO
+macro that works identically to the DEVICE_ATTR_RW and DEVICE_ATTR_RO
+macros.
Example:
-DRIVER_ATTR(debug,0644,show_debug,store_debug);
+DRIVER_ATTR_RW(debug);
This is equivalent to declaring:
diff --git a/Documentation/fb/fbcon.txt b/Documentation/fb/fbcon.txt
index 4a9739abc860..a38d3aa4d189 100644
--- a/Documentation/fb/fbcon.txt
+++ b/Documentation/fb/fbcon.txt
@@ -148,6 +148,13 @@ C. Boot options
Actually, the underlying fb driver is totally ignorant of console
rotation.
+5. fbcon=margin:<color>
+
+ This option specifies the color of the margins. The margins are the
+ leftover area at the right and the bottom of the screen that are not
+ used by text. By default, this area will be black. The 'color' value
+ is an integer number that depends on the framebuffer driver being used.
+
C. Attaching, Detaching and Unloading
Before going on how to attach, detach and unload the framebuffer console, an
diff --git a/Documentation/filesystems/cifs/AUTHORS b/Documentation/filesystems/cifs/AUTHORS
index c98800df677f..9f4f87e16240 100644
--- a/Documentation/filesystems/cifs/AUTHORS
+++ b/Documentation/filesystems/cifs/AUTHORS
@@ -41,6 +41,11 @@ Igor Mammedov (DFS support)
Jeff Layton (many, many fixes, as well as great work on the cifs Kerberos code)
Scott Lovenberg
Pavel Shilovsky (for great work adding SMB2 support, and various SMB3 features)
+Aurelien Aptel (for DFS SMB3 work and some key bug fixes)
+Ronnie Sahlberg (for SMB3 xattr work and bug fixes)
+Shirish Pargaonkar (for many ACL patches over the years)
+Sachin Prabhu (many bug fixes, including for reconnect, copy offload and security)
+
Test case and Bug Report contributors
-------------------------------------
diff --git a/Documentation/filesystems/cifs/README b/Documentation/filesystems/cifs/README
index a54788405429..a9da51553ba3 100644
--- a/Documentation/filesystems/cifs/README
+++ b/Documentation/filesystems/cifs/README
@@ -1,10 +1,14 @@
-The CIFS VFS support for Linux supports many advanced network filesystem
-features such as hierarchical dfs like namespace, hardlinks, locking and more.
+This module supports the SMB3 family of advanced network protocols (as well
+as older dialects, originally called "CIFS" or SMB1).
+
+The CIFS VFS module for Linux supports many advanced network filesystem
+features such as hierarchical DFS like namespace, hardlinks, locking and more.
It was designed to comply with the SNIA CIFS Technical Reference (which
supersedes the 1992 X/Open SMB Standard) as well as to perform best practice
practical interoperability with Windows 2000, Windows XP, Samba and equivalent
servers. This code was developed in participation with the Protocol Freedom
-Information Foundation.
+Information Foundation. CIFS and now SMB3 has now become a defacto
+standard for interoperating between Macs and Windows and major NAS appliances.
Please see
http://protocolfreedom.org/ and
@@ -15,30 +19,11 @@ for more details.
For questions or bug reports please contact:
sfrench@samba.org (sfrench@us.ibm.com)
+See the project page at: https://wiki.samba.org/index.php/LinuxCIFS_utils
+
Build instructions:
==================
-For Linux 2.4:
-1) Get the kernel source (e.g.from http://www.kernel.org)
-and download the cifs vfs source (see the project page
-at http://us1.samba.org/samba/Linux_CIFS_client.html)
-and change directory into the top of the kernel directory
-then patch the kernel (e.g. "patch -p1 < cifs_24.patch")
-to add the cifs vfs to your kernel configure options if
-it has not already been added (e.g. current SuSE and UL
-users do not need to apply the cifs_24.patch since the cifs vfs is
-already in the kernel configure menu) and then
-mkdir linux/fs/cifs and then copy the current cifs vfs files from
-the cifs download to your kernel build directory e.g.
-
- cp <cifs_download_dir>/fs/cifs/* to <kernel_download_dir>/fs/cifs
-
-2) make menuconfig (or make xconfig)
-3) select cifs from within the network filesystem choices
-4) save and exit
-5) make dep
-6) make modules (or "make" if CIFS VFS not to be built as a module)
-
-For Linux 2.6:
+For Linux:
1) Download the kernel (e.g. from http://www.kernel.org)
and change directory into the top of the kernel directory tree
(e.g. /usr/src/linux-2.5.73)
@@ -61,16 +46,13 @@ would simply type "make install").
If you do not have the utility mount.cifs (in the Samba 3.0 source tree and on
the CIFS VFS web site) copy it to the same directory in which mount.smbfs and
similar files reside (usually /sbin). Although the helper software is not
-required, mount.cifs is recommended. Eventually the Samba 3.0 utility program
-"net" may also be helpful since it may someday provide easier mount syntax for
-users who are used to Windows e.g.
- net use <mount point> <UNC name or cifs URL>
+required, mount.cifs is recommended. Most distros include a "cifs-utils"
+package that includes this utility so it is recommended to install this.
+
Note that running the Winbind pam/nss module (logon service) on all of your
Linux clients is useful in mapping Uids and Gids consistently across the
domain to the proper network user. The mount.cifs mount helper can be
-trivially built from Samba 3.0 or later source e.g. by executing:
-
- gcc samba/source/client/mount.cifs.c -o mount.cifs
+found at cifs-utils.git on git.samba.org
If cifs is built as a module, then the size and number of network buffers
and maximum number of simultaneous requests to one server can be configured.
@@ -79,6 +61,18 @@ Changing these from their defaults is not recommended. By executing modinfo
on kernel/fs/cifs/cifs.ko the list of configuration changes that can be made
at module initialization time (by running insmod cifs.ko) can be seen.
+Recommendations
+===============
+To improve security the SMB2.1 dialect or later (usually will get SMB3) is now
+the new default. To use old dialects (e.g. to mount Windows XP) use "vers=1.0"
+on mount (or vers=2.0 for Windows Vista). Note that the CIFS (vers=1.0) is
+much older and less secure than the default dialect SMB3 which includes
+many advanced security features such as downgrade attack detection
+and encrypted shares and stronger signing and authentication algorithms.
+There are additional mount options that may be helpful for SMB3 to get
+improved POSIX behavior (NB: can use vers=3.0 to force only SMB3, never 2.1):
+ "mfsymlinks" and "cifsacl" and "idsfromsid"
+
Allowing User Mounts
====================
To permit users to mount and unmount over directories they own is possible
@@ -98,9 +92,7 @@ and execution of suid programs on the remote target would be enabled
by default. This can be changed, as with nfs and other filesystems,
by simply specifying "nosuid" among the mount options. For user mounts
though to be able to pass the suid flag to mount requires rebuilding
-mount.cifs with the following flag:
-
- gcc samba/source/client/mount.cifs.c -DCIFS_ALLOW_USR_SUID -o mount.cifs
+mount.cifs with the following flag: CIFS_ALLOW_USR_SUID
There is a corresponding manual page for cifs mounting in the Samba 3.0 and
later source tree in docs/manpages/mount.cifs.8
@@ -189,18 +181,18 @@ applications running on the same server as Samba.
Use instructions:
================
Once the CIFS VFS support is built into the kernel or installed as a module
-(cifs.o), you can use mount syntax like the following to access Samba or Windows
-servers:
+(cifs.ko), you can use mount syntax like the following to access Samba or
+Mac or Windows servers:
- mount -t cifs //9.53.216.11/e$ /mnt -o user=myname,pass=mypassword
+ mount -t cifs //9.53.216.11/e$ /mnt -o username=myname,password=mypassword
Before -o the option -v may be specified to make the mount.cifs
mount helper display the mount steps more verbosely.
After -o the following commonly used cifs vfs specific options
are supported:
- user=<username>
- pass=<password>
+ username=<username>
+ password=<password>
domain=<domain name>
Other cifs mount options are described below. Use of TCP names (in addition to
@@ -246,13 +238,16 @@ the Server's registry. Samba starting with version 3.10 will allow such
filenames (ie those which contain valid Linux characters, which normally
would be forbidden for Windows/CIFS semantics) as long as the server is
configured for Unix Extensions (and the client has not disabled
-/proc/fs/cifs/LinuxExtensionsEnabled).
-
+/proc/fs/cifs/LinuxExtensionsEnabled). In addition the mount option
+"mapposix" can be used on CIFS (vers=1.0) to force the mapping of
+illegal Windows/NTFS/SMB characters to a remap range (this mount parm
+is the default for SMB3). This remap ("mapposix") range is also
+compatible with Mac (and "Services for Mac" on some older Windows).
CIFS VFS Mount Options
======================
A partial list of the supported mount options follows:
- user The user name to use when trying to establish
+ username The user name to use when trying to establish
the CIFS session.
password The user password. If the mount helper is
installed, the user will be prompted for password
diff --git a/Documentation/filesystems/cifs/TODO b/Documentation/filesystems/cifs/TODO
index 066ffddc3964..396ecfd6ff4a 100644
--- a/Documentation/filesystems/cifs/TODO
+++ b/Documentation/filesystems/cifs/TODO
@@ -1,4 +1,4 @@
-Version 2.03 August 1, 2014
+Version 2.04 September 13, 2017
A Partial List of Missing Features
==================================
@@ -8,73 +8,69 @@ for visible, important contributions to this module. Here
is a partial list of the known problems and missing features:
a) SMB3 (and SMB3.02) missing optional features:
- - RDMA
+ - RDMA (started)
- multichannel (started)
- directory leases (improved metadata caching)
- T10 copy offload (copy chunk is only mechanism supported)
- - encrypted shares
b) improved sparse file support
c) Directory entry caching relies on a 1 second timer, rather than
-using FindNotify or equivalent. - (started)
+using Directory Leases
d) quota support (needs minor kernel change since quota calls
to make it to network filesystems or deviceless filesystems)
-e) improve support for very old servers (OS/2 and Win9x for example)
-Including support for changing the time remotely (utimes command).
+e) Better optimize open to reduce redundant opens (using reference
+counts more) and to improve use of compounding in SMB3 to reduce
+number of roundtrips.
-f) hook lower into the sockets api (as NFS/SunRPC does) to avoid the
-extra copy in/out of the socket buffers in some cases.
-
-g) Better optimize open (and pathbased setfilesize) to reduce the
-oplock breaks coming from windows srv. Piggyback identical file
-opens on top of each other by incrementing reference count rather
-than resending (helps reduce server resource utilization and avoid
-spurious oplock breaks).
-
-h) Add support for storing symlink info to Windows servers
-in the Extended Attribute format their SFU clients would recognize.
-
-i) Finish inotify support so kde and gnome file list windows
+f) Finish inotify support so kde and gnome file list windows
will autorefresh (partially complete by Asser). Needs minor kernel
vfs change to support removing D_NOTIFY on a file.
-j) Add GUI tool to configure /proc/fs/cifs settings and for display of
+g) Add GUI tool to configure /proc/fs/cifs settings and for display of
the CIFS statistics (started)
-k) implement support for security and trusted categories of xattrs
+h) implement support for security and trusted categories of xattrs
(requires minor protocol extension) to enable better support for SELINUX
-l) Implement O_DIRECT flag on open (already supported on mount)
+i) Implement O_DIRECT flag on open (already supported on mount)
-m) Create UID mapping facility so server UIDs can be mapped on a per
+j) Create UID mapping facility so server UIDs can be mapped on a per
mount or a per server basis to client UIDs or nobody if no mapping
-exists. This is helpful when Unix extensions are negotiated to
-allow better permission checking when UIDs differ on the server
-and client. Add new protocol request to the CIFS protocol
-standard for asking the server for the corresponding name of a
-particular uid.
+exists. Also better integration with winbind for resolving SID owners
+
+k) Add tools to take advantage of more smb3 specific ioctls and features
+
+l) encrypted file support
+
+m) improved stats gathering, tools (perhaps integration with nfsometer?)
-n) DOS attrs - returned as pseudo-xattr in Samba format (check VFAT and NTFS for this too)
+n) allow setting more NTFS/SMB3 file attributes remotely (currently limited to compressed
+file attribute via chflags) and improve user space tools for managing and
+viewing them.
-o) mount check for unmatched uids
+o) mount helper GUI (to simplify the various configuration options on mount)
-p) Add support for new vfs entry point for fallocate
+p) autonegotiation of dialects (offering more than one dialect ie SMB3.02,
+SMB3, SMB2.1 not just SMB3).
-q) Add tools to take advantage of cifs/smb3 specific ioctls and features
-such as "CopyChunk" (fast server side file copy)
+q) Allow mount.cifs to be more verbose in reporting errors with dialect
+or unsupported feature errors.
-r) encrypted file support
+r) updating cifs documentation, and user guid.
-s) improved stats gathering, tools (perhaps integration with nfsometer?)
+s) Addressing bugs found by running a broader set of xfstests in standard
+file system xfstest suite.
-t) allow setting more NTFS/SMB3 file attributes remotely (currently limited to compressed
-file attribute via chflags)
+t) split cifs and smb3 support into separate modules so legacy (and less
+secure) CIFS dialect can be disabled in environments that don't need it
+and simplify the code.
-u) mount helper GUI (to simplify the various configuration options on mount)
+u) Finish up SMB3.1.1 dialect support
+v) POSIX Extensions for SMB3.1.1
KNOWN BUGS
====================================
diff --git a/Documentation/filesystems/cifs/cifs.txt b/Documentation/filesystems/cifs/cifs.txt
index 2fac91ac96cf..67756607246e 100644
--- a/Documentation/filesystems/cifs/cifs.txt
+++ b/Documentation/filesystems/cifs/cifs.txt
@@ -1,24 +1,28 @@
- This is the client VFS module for the Common Internet File System
- (CIFS) protocol which is the successor to the Server Message Block
+ This is the client VFS module for the SMB3 NAS protocol as well
+ older dialects such as the Common Internet File System (CIFS)
+ protocol which was the successor to the Server Message Block
(SMB) protocol, the native file sharing mechanism for most early
PC operating systems. New and improved versions of CIFS are now
called SMB2 and SMB3. These dialects are also supported by the
CIFS VFS module. CIFS is fully supported by network
- file servers such as Windows 2000, 2003, 2008 and 2012
+ file servers such as Windows 2000, 2003, 2008, 2012 and 2016
as well by Samba (which provides excellent CIFS
- server support for Linux and many other operating systems), so
+ server support for Linux and many other operating systems), Apple
+ systems, as well as most Network Attached Storage vendors, so
this network filesystem client can mount to a wide variety of
servers.
The intent of this module is to provide the most advanced network
- file system function for CIFS compliant servers, including better
- POSIX compliance, secure per-user session establishment, high
- performance safe distributed caching (oplock), optional packet
+ file system function for SMB3 compliant servers, including advanced
+ security features, excellent parallelized high performance i/o, better
+ POSIX compliance, secure per-user session establishment, encryption,
+ high performance safe distributed caching (leases/oplocks), optional packet
signing, large files, Unicode support and other internationalization
improvements. Since both Samba server and this filesystem client support
- the CIFS Unix extensions, the combination can provide a reasonable
- alternative to NFSv4 for fileserving in some Linux to Linux environments,
- not just in Linux to Windows environments.
+ the CIFS Unix extensions (and in the future SMB3 POSIX extensions),
+ the combination can provide a reasonable alternative to other network and
+ cluster file systems for fileserving in some Linux to Linux environments,
+ not just in Linux to Windows (or Linux to Mac) environments.
This filesystem has an mount utility (mount.cifs) that can be obtained from
diff --git a/Documentation/filesystems/orangefs.txt b/Documentation/filesystems/orangefs.txt
index 1dfdec790946..e2818b60a5c2 100644
--- a/Documentation/filesystems/orangefs.txt
+++ b/Documentation/filesystems/orangefs.txt
@@ -45,14 +45,11 @@ upstream version of the kernel client.
BUILDING THE USERSPACE FILESYSTEM ON A SINGLE SERVER
====================================================
-When Orangefs is upstream, "--with-kernel" shouldn't be needed, but
-until then the path to where the kernel with the Orangefs kernel client
-patch was built is needed to ensure that pvfs2-client-core (the bridge
-between kernel space and user space) will build properly. You can omit
---prefix if you don't care that things are sprinkled around in
-/usr/local.
+You can omit --prefix if you don't care that things are sprinkled around in
+/usr/local. As of version 2.9.6, Orangefs uses Berkeley DB by default, we
+will probably be changing the default to lmdb soon.
-./configure --prefix=/opt/ofs --with-kernel=/path/to/orangefs/kernel
+./configure --prefix=/opt/ofs --with-db-backend=lmdb
make
@@ -82,9 +79,6 @@ prove things are working with:
/opt/osf/bin/pvfs2-ls /mymountpoint
-You might not want to enforce selinux, it doesn't seem to matter by
-linux 3.11...
-
If stuff seems to be working, turn on the client core:
/opt/osf/sbin/pvfs2-client -p /opt/osf/sbin/pvfs2-client-core
diff --git a/Documentation/filesystems/overlayfs.txt b/Documentation/filesystems/overlayfs.txt
index 36f528a7fdd6..8caa60734647 100644
--- a/Documentation/filesystems/overlayfs.txt
+++ b/Documentation/filesystems/overlayfs.txt
@@ -210,8 +210,11 @@ path as another overlay mount and it may use a lower layer path that is
beneath or above the path of another overlay lower layer path.
Using an upper layer path and/or a workdir path that are already used by
-another overlay mount is not allowed and will fail with EBUSY. Using
+another overlay mount is not allowed and may fail with EBUSY. Using
partially overlapping paths is not allowed but will not fail with EBUSY.
+If files are accessed from two overlayfs mounts which share or overlap the
+upper layer and/or workdir path the behavior of the overlay is undefined,
+though it will not result in a crash or deadlock.
Mounting an overlay using an upper layer path, where the upper layer path
was previously used by another mounted overlay in combination with a
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting
index 5fb17f49f7a2..93e0a2404532 100644
--- a/Documentation/filesystems/porting
+++ b/Documentation/filesystems/porting
@@ -228,7 +228,7 @@ anything from oops to silent memory corruption.
---
[mandatory]
- FS_NOMOUNT is gone. If you use it - just set MS_NOUSER in flags
+ FS_NOMOUNT is gone. If you use it - just set SB_NOUSER in flags
(see rootfs for one kind of solution and bdev/socket/pipe for another).
---
diff --git a/Documentation/filesystems/sysfs.txt b/Documentation/filesystems/sysfs.txt
index 24da7b32c489..9a3658cc399e 100644
--- a/Documentation/filesystems/sysfs.txt
+++ b/Documentation/filesystems/sysfs.txt
@@ -366,7 +366,8 @@ struct driver_attribute {
Declaring:
-DRIVER_ATTR(_name, _mode, _show, _store)
+DRIVER_ATTR_RO(_name)
+DRIVER_ATTR_RW(_name)
Creation/Removal:
diff --git a/Documentation/i2c/busses/i2c-i801 b/Documentation/i2c/busses/i2c-i801
index 0500193434cb..d47702456926 100644
--- a/Documentation/i2c/busses/i2c-i801
+++ b/Documentation/i2c/busses/i2c-i801
@@ -36,6 +36,7 @@ Supported adapters:
* Intel Gemini Lake (SOC)
* Intel Cannon Lake-H (PCH)
* Intel Cannon Lake-LP (PCH)
+ * Intel Cedar Fork (PCH)
Datasheets: Publicly available at the Intel website
On Intel Patsburg and later chipsets, both the normal host SMBus controller
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index 329e740adea7..f6f80380dff2 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -1108,14 +1108,6 @@ When kbuild executes, the following steps are followed (roughly):
ld
Link target. Often, LDFLAGS_$@ is used to set specific options to ld.
- objcopy
- Copy binary. Uses OBJCOPYFLAGS usually specified in
- arch/$(ARCH)/Makefile.
- OBJCOPYFLAGS_$@ may be used to set additional options.
-
- gzip
- Compress target. Use maximum compression to compress target.
-
Example:
#arch/x86/boot/Makefile
LDFLAGS_bootsect := -Ttext 0x0 -s --oformat binary
@@ -1139,6 +1131,19 @@ When kbuild executes, the following steps are followed (roughly):
resulting in the target file being recompiled for no
obvious reason.
+ objcopy
+ Copy binary. Uses OBJCOPYFLAGS usually specified in
+ arch/$(ARCH)/Makefile.
+ OBJCOPYFLAGS_$@ may be used to set additional options.
+
+ gzip
+ Compress target. Use maximum compression to compress target.
+
+ Example:
+ #arch/x86/boot/compressed/Makefile
+ $(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
+ $(call if_changed,gzip)
+
dtc
Create flattened device tree blob object suitable for linking
into vmlinux. Device tree blobs linked into vmlinux are placed
@@ -1219,7 +1224,7 @@ When kbuild executes, the following steps are followed (roughly):
that may be shared between individual architectures.
The recommended approach how to use a generic header file is
to list the file in the Kbuild file.
- See "7.3 generic-y" for further info on syntax etc.
+ See "7.2 generic-y" for further info on syntax etc.
--- 6.11 Post-link pass
@@ -1254,13 +1259,13 @@ A Kbuild file may be defined under arch/<arch>/include/uapi/asm/ and
arch/<arch>/include/asm/ to list asm files coming from asm-generic.
See subsequent chapter for the syntax of the Kbuild file.
- --- 7.1 no-export-headers
+--- 7.1 no-export-headers
no-export-headers is essentially used by include/uapi/linux/Kbuild to
avoid exporting specific headers (e.g. kvm.h) on architectures that do
not support it. It should be avoided as much as possible.
- --- 7.2 generic-y
+--- 7.2 generic-y
If an architecture uses a verbatim copy of a header from
include/asm-generic then this is listed in the file
@@ -1287,7 +1292,7 @@ See subsequent chapter for the syntax of the Kbuild file.
Example: termios.h
#include <asm-generic/termios.h>
- --- 7.3 generated-y
+--- 7.3 generated-y
If an architecture generates other header files alongside generic-y
wrappers, generated-y specifies them.
@@ -1299,7 +1304,7 @@ See subsequent chapter for the syntax of the Kbuild file.
#arch/x86/include/asm/Kbuild
generated-y += syscalls_32.h
- --- 7.5 mandatory-y
+--- 7.4 mandatory-y
mandatory-y is essentially used by include/uapi/asm-generic/Kbuild.asm
to define the minimum set of headers that must be exported in
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
index 57f52cdce32e..9ba04c0bab8d 100644
--- a/Documentation/networking/bonding.txt
+++ b/Documentation/networking/bonding.txt
@@ -2387,7 +2387,7 @@ broadcast: Like active-backup, there is not much advantage to this
and packet type ID), so in a "gatewayed" configuration, all
outgoing traffic will generally use the same device. Incoming
traffic may also end up on a single device, but that is
- dependent upon the balancing policy of the peer's 8023.ad
+ dependent upon the balancing policy of the peer's 802.3ad
implementation. In a "local" configuration, traffic will be
distributed across the devices in the bond.
diff --git a/Documentation/networking/filter.txt b/Documentation/networking/filter.txt
index e5e33bac2068..87814859cfc2 100644
--- a/Documentation/networking/filter.txt
+++ b/Documentation/networking/filter.txt
@@ -45,7 +45,7 @@ in many more places. There's xt_bpf for netfilter, cls_bpf in the kernel
qdisc layer, SECCOMP-BPF (SECure COMPuting [1]), and lots of other places
such as team driver, PTP code, etc where BPF is being used.
- [1] Documentation/prctl/seccomp_filter.txt
+ [1] Documentation/userspace-api/seccomp_filter.rst
Original BPF paper:
@@ -337,7 +337,7 @@ Examples for low-level BPF:
jeq #14, good /* __NR_rt_sigprocmask */
jeq #13, good /* __NR_rt_sigaction */
jeq #35, good /* __NR_nanosleep */
- bad: ret #0 /* SECCOMP_RET_KILL */
+ bad: ret #0 /* SECCOMP_RET_KILL_THREAD */
good: ret #0x7fff0000 /* SECCOMP_RET_ALLOW */
The above example code can be placed into a file (here called "foo"), and
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index b3345d0fe0a6..77f4de59dc9c 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -1680,6 +1680,9 @@ accept_dad - INTEGER
2: Enable DAD, and disable IPv6 operation if MAC-based duplicate
link-local address has been found.
+ DAD operation and mode on a given interface will be selected according
+ to the maximum value of conf/{all,interface}/accept_dad.
+
force_tllao - BOOLEAN
Enable sending the target link-layer address option even when
responding to a unicast neighbor solicitation.
@@ -1727,16 +1730,23 @@ suppress_frag_ndisc - INTEGER
optimistic_dad - BOOLEAN
Whether to perform Optimistic Duplicate Address Detection (RFC 4429).
- 0: disabled (default)
- 1: enabled
+ 0: disabled (default)
+ 1: enabled
+
+ Optimistic Duplicate Address Detection for the interface will be enabled
+ if at least one of conf/{all,interface}/optimistic_dad is set to 1,
+ it will be disabled otherwise.
use_optimistic - BOOLEAN
If enabled, do not classify optimistic addresses as deprecated during
source address selection. Preferred addresses will still be chosen
before optimistic addresses, subject to other ranking in the source
address selection algorithm.
- 0: disabled (default)
- 1: enabled
+ 0: disabled (default)
+ 1: enabled
+
+ This will be enabled if at least one of
+ conf/{all,interface}/use_optimistic is set to 1, disabled otherwise.
stable_secret - IPv6 address
This IPv6 address will be used as a secret to generate IPv6
diff --git a/Documentation/networking/switchdev.txt b/Documentation/networking/switchdev.txt
index 5e40e1f68873..82236a17b5e6 100644
--- a/Documentation/networking/switchdev.txt
+++ b/Documentation/networking/switchdev.txt
@@ -13,42 +13,42 @@ an example setup using a data-center-class switch ASIC chip. Other setups
with SR-IOV or soft switches, such as OVS, are possible.
-                             User-space tools
-
-       user space                   |
-      +-------------------------------------------------------------------+
-       kernel                       | Netlink
-                                    |
-                     +--------------+-------------------------------+
-                     |         Network stack                        |
-                     |           (Linux)                            |
-                     |                                              |
-                     +----------------------------------------------+
+ User-space tools
+
+ user space |
+ +-------------------------------------------------------------------+
+ kernel | Netlink
+ |
+ +--------------+-------------------------------+
+ | Network stack |
+ | (Linux) |
+ | |
+ +----------------------------------------------+
sw1p2 sw1p4 sw1p6
-                      sw1p1  + sw1p3 +  sw1p5 +         eth1
-                        +    |    +    |    +    |            +
-                        |    |    |    |    |    |            |
-                     +--+----+----+----+-+--+----+---+  +-----+-----+
-                     |         Switch driver         |  |    mgmt   |
-                     |        (this document)        |  |   driver  |
-                     |                               |  |           |
-                     +--------------+----------------+  +-----------+
-                                    |
-       kernel                       | HW bus (eg PCI)
-      +-------------------------------------------------------------------+
-       hardware                     |
-                     +--------------+---+------------+
-                     |         Switch device (sw1)   |
-                     |  +----+                       +--------+
-                     |  |    v offloaded data path   | mgmt port
-                     |  |    |                       |
-                     +--|----|----+----+----+----+---+
-                        |    |    |    |    |    |
-                        +    +    +    +    +    +
-                       p1   p2   p3   p4   p5   p6
-
-                             front-panel ports
+ sw1p1 + sw1p3 + sw1p5 + eth1
+ + | + | + | +
+ | | | | | | |
+ +--+----+----+----+----+----+---+ +-----+-----+
+ | Switch driver | | mgmt |
+ | (this document) | | driver |
+ | | | |
+ +--------------+----------------+ +-----------+
+ |
+ kernel | HW bus (eg PCI)
+ +-------------------------------------------------------------------+
+ hardware |
+ +--------------+----------------+
+ | Switch device (sw1) |
+ | +----+ +--------+
+ | | v offloaded data path | mgmt port
+ | | | |
+ +--|----|----+----+----+----+---+
+ | | | | | |
+ + + + + + +
+ p1 p2 p3 p4 p5 p6
+
+ front-panel ports
Fig 1.
diff --git a/Documentation/process/index.rst b/Documentation/process/index.rst
index 82fc399fcd33..61e43cc3ed17 100644
--- a/Documentation/process/index.rst
+++ b/Documentation/process/index.rst
@@ -25,6 +25,7 @@ Below are the essential guides that every developer should read.
submitting-patches
coding-style
email-clients
+ kernel-enforcement-statement
Other guides to the community that are of interest to most developers are:
diff --git a/Documentation/process/kernel-enforcement-statement.rst b/Documentation/process/kernel-enforcement-statement.rst
new file mode 100644
index 000000000000..1e23d4227337
--- /dev/null
+++ b/Documentation/process/kernel-enforcement-statement.rst
@@ -0,0 +1,147 @@
+Linux Kernel Enforcement Statement
+----------------------------------
+
+As developers of the Linux kernel, we have a keen interest in how our software
+is used and how the license for our software is enforced. Compliance with the
+reciprocal sharing obligations of GPL-2.0 is critical to the long-term
+sustainability of our software and community.
+
+Although there is a right to enforce the separate copyright interests in the
+contributions made to our community, we share an interest in ensuring that
+individual enforcement actions are conducted in a manner that benefits our
+community and do not have an unintended negative impact on the health and
+growth of our software ecosystem. In order to deter unhelpful enforcement
+actions, we agree that it is in the best interests of our development
+community to undertake the following commitment to users of the Linux kernel
+on behalf of ourselves and any successors to our copyright interests:
+
+ Notwithstanding the termination provisions of the GPL-2.0, we agree that
+ it is in the best interests of our development community to adopt the
+ following provisions of GPL-3.0 as additional permissions under our
+ license with respect to any non-defensive assertion of rights under the
+ license.
+
+ However, if you cease all violation of this License, then your license
+ from a particular copyright holder is reinstated (a) provisionally,
+ unless and until the copyright holder explicitly and finally
+ terminates your license, and (b) permanently, if the copyright holder
+ fails to notify you of the violation by some reasonable means prior to
+ 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from that
+ copyright holder, and you cure the violation prior to 30 days after
+ your receipt of the notice.
+
+Our intent in providing these assurances is to encourage more use of the
+software. We want companies and individuals to use, modify and distribute
+this software. We want to work with users in an open and transparent way to
+eliminate any uncertainty about our expectations regarding compliance or
+enforcement that might limit adoption of our software. We view legal action
+as a last resort, to be initiated only when other community efforts have
+failed to resolve the problem.
+
+Finally, once a non-compliance issue is resolved, we hope the user will feel
+welcome to join us in our efforts on this project. Working together, we will
+be stronger.
+
+Except where noted below, we speak only for ourselves, and not for any company
+we might work for today, have in the past, or will in the future.
+
+ - Bjorn Andersson (Linaro)
+ - Andrea Arcangeli (Red Hat)
+ - Neil Armstrong
+ - Jens Axboe
+ - Pablo Neira Ayuso
+ - Khalid Aziz
+ - Ralf Baechle
+ - Felipe Balbi
+ - Arnd Bergmann
+ - Ard Biesheuvel
+ - Paolo Bonzini (Red Hat)
+ - Christian Borntraeger
+ - Mark Brown (Linaro)
+ - Paul Burton
+ - Javier Martinez Canillas
+ - Rob Clark
+ - Jonathan Corbet
+ - Vivien Didelot (Savoir-faire Linux)
+ - Hans de Goede (Red Hat)
+ - Mel Gorman (SUSE)
+ - Sven Eckelmann
+ - Alex Elder (Linaro)
+ - Fabio Estevam
+ - Larry Finger
+ - Bhumika Goyal
+ - Andy Gross
+ - Juergen Gross
+ - Shawn Guo
+ - Ulf Hansson
+ - Tejun Heo
+ - Rob Herring
+ - Masami Hiramatsu
+ - Michal Hocko
+ - Simon Horman
+ - Johan Hovold (Hovold Consulting AB)
+ - Christophe JAILLET
+ - Olof Johansson
+ - Lee Jones (Linaro)
+ - Heiner Kallweit
+ - Srinivas Kandagatla
+ - Jan Kara
+ - Shuah Khan (Samsung)
+ - David Kershner
+ - Jaegeuk Kim
+ - Namhyung Kim
+ - Colin Ian King
+ - Jeff Kirsher
+ - Greg Kroah-Hartman (Linux Foundation)
+ - Christian König
+ - Vinod Koul
+ - Krzysztof Kozlowski
+ - Viresh Kumar
+ - Aneesh Kumar K.V
+ - Julia Lawall
+ - Doug Ledford (Red Hat)
+ - Chuck Lever (Oracle)
+ - Daniel Lezcano
+ - Shaohua Li
+ - Xin Long (Red Hat)
+ - Tony Luck
+ - Mike Marshall
+ - Chris Mason
+ - Paul E. McKenney
+ - David S. Miller
+ - Ingo Molnar
+ - Kuninori Morimoto
+ - Borislav Petkov
+ - Jiri Pirko
+ - Josh Poimboeuf
+ - Sebastian Reichel (Collabora)
+ - Guenter Roeck
+ - Joerg Roedel
+ - Leon Romanovsky
+ - Steven Rostedt (VMware)
+ - Ivan Safonov
+ - Ivan Safonov
+ - Anna Schumaker
+ - Jes Sorensen
+ - K.Y. Srinivasan
+ - Heiko Stuebner
+ - Jiri Kosina (SUSE)
+ - Dmitry Torokhov
+ - Linus Torvalds
+ - Thierry Reding
+ - Rik van Riel
+ - Geert Uytterhoeven (Glider bvba)
+ - Daniel Vetter
+ - Linus Walleij
+ - Richard Weinberger
+ - Dan Williams
+ - Rafael J. Wysocki
+ - Arvind Yadav
+ - Masahiro Yamada
+ - Wei Yongjun
+ - Lv Zheng
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
index ce61d1fe08ca..694968c7523c 100644
--- a/Documentation/sysctl/kernel.txt
+++ b/Documentation/sysctl/kernel.txt
@@ -75,6 +75,7 @@ show up in /proc/sys/kernel:
- reboot-cmd [ SPARC only ]
- rtsig-max
- rtsig-nr
+- seccomp/ ==> Documentation/userspace-api/seccomp_filter.rst
- sem
- sem_next_id [ sysv ipc ]
- sg-big-buff [ generic SCSI device (sg) ]
diff --git a/Documentation/userspace-api/seccomp_filter.rst b/Documentation/userspace-api/seccomp_filter.rst
index f71eb5ef1f2d..099c412951d6 100644
--- a/Documentation/userspace-api/seccomp_filter.rst
+++ b/Documentation/userspace-api/seccomp_filter.rst
@@ -87,11 +87,16 @@ Return values
A seccomp filter may return any of the following values. If multiple
filters exist, the return value for the evaluation of a given system
call will always use the highest precedent value. (For example,
-``SECCOMP_RET_KILL`` will always take precedence.)
+``SECCOMP_RET_KILL_PROCESS`` will always take precedence.)
In precedence order, they are:
-``SECCOMP_RET_KILL``:
+``SECCOMP_RET_KILL_PROCESS``:
+ Results in the entire process exiting immediately without executing
+ the system call. The exit status of the task (``status & 0x7f``)
+ will be ``SIGSYS``, not ``SIGKILL``.
+
+``SECCOMP_RET_KILL_THREAD``:
Results in the task exiting immediately without executing the
system call. The exit status of the task (``status & 0x7f``) will
be ``SIGSYS``, not ``SIGKILL``.
@@ -141,6 +146,15 @@ In precedence order, they are:
allow use of ptrace, even of other sandboxed processes, without
extreme care; ptracers can use this mechanism to escape.)
+``SECCOMP_RET_LOG``:
+ Results in the system call being executed after it is logged. This
+ should be used by application developers to learn which syscalls their
+ application needs without having to iterate through multiple test and
+ development cycles to build the list.
+
+ This action will only be logged if "log" is present in the
+ actions_logged sysctl string.
+
``SECCOMP_RET_ALLOW``:
Results in the system call being executed.
@@ -169,7 +183,41 @@ The ``samples/seccomp/`` directory contains both an x86-specific example
and a more generic example of a higher level macro interface for BPF
program generation.
+Sysctls
+=======
+Seccomp's sysctl files can be found in the ``/proc/sys/kernel/seccomp/``
+directory. Here's a description of each file in that directory:
+
+``actions_avail``:
+ A read-only ordered list of seccomp return values (refer to the
+ ``SECCOMP_RET_*`` macros above) in string form. The ordering, from
+ left-to-right, is the least permissive return value to the most
+ permissive return value.
+
+ The list represents the set of seccomp return values supported
+ by the kernel. A userspace program may use this list to
+ determine if the actions found in the ``seccomp.h``, when the
+ program was built, differs from the set of actions actually
+ supported in the current running kernel.
+
+``actions_logged``:
+ A read-write ordered list of seccomp return values (refer to the
+ ``SECCOMP_RET_*`` macros above) that are allowed to be logged. Writes
+ to the file do not need to be in ordered form but reads from the file
+ will be ordered in the same way as the actions_avail sysctl.
+
+ It is important to note that the value of ``actions_logged`` does not
+ prevent certain actions from being logged when the audit subsystem is
+ configured to audit a task. If the action is not found in
+ ``actions_logged`` list, the final decision on whether to audit the
+ action for that task is ultimately left up to the audit subsystem to
+ decide for all seccomp return values other than ``SECCOMP_RET_ALLOW``.
+
+ The ``allow`` string is not accepted in the ``actions_logged`` sysctl
+ as it is not possible to log ``SECCOMP_RET_ALLOW`` actions. Attempting
+ to write ``allow`` to the sysctl will result in an EINVAL being
+ returned.
Adding architecture support
===========================
diff --git a/Documentation/watchdog/watchdog-parameters.txt b/Documentation/watchdog/watchdog-parameters.txt
index b3526365ea8e..6f9d7b418917 100644
--- a/Documentation/watchdog/watchdog-parameters.txt
+++ b/Documentation/watchdog/watchdog-parameters.txt
@@ -117,7 +117,7 @@ nowayout: Watchdog cannot be stopped once started
-------------------------------------------------
iTCO_wdt:
heartbeat: Watchdog heartbeat in seconds.
- (5<=heartbeat<=74 (TCO v1) or 1226 (TCO v2), default=30)
+ (2<heartbeat<39 (TCO v1) or 613 (TCO v2), default=30)
nowayout: Watchdog cannot be stopped once started
(default=kernel config parameter)
-------------------------------------------------
diff --git a/Kbuild b/Kbuild
index 94c752762bc2..af161aa1facd 100644
--- a/Kbuild
+++ b/Kbuild
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Kbuild for top-level directory of the kernel
# This file takes care of the following:
diff --git a/Kconfig b/Kconfig
index c13f48d65898..8c4c1cb0f9cd 100644
--- a/Kconfig
+++ b/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
diff --git a/MAINTAINERS b/MAINTAINERS
index b61848afb9d2..00b0fda6c2e1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -352,6 +352,18 @@ L: linux-acpi@vger.kernel.org
S: Maintained
F: drivers/acpi/arm64
+ACPI PMIC DRIVERS
+M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
+M: Len Brown <lenb@kernel.org>
+R: Andy Shevchenko <andy@infradead.org>
+R: Mika Westerberg <mika.westerberg@linux.intel.com>
+L: linux-acpi@vger.kernel.org
+Q: https://patchwork.kernel.org/project/linux-acpi/list/
+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
+B: https://bugzilla.kernel.org
+S: Supported
+F: drivers/acpi/pmic/
+
ACPI THERMAL DRIVER
M: Zhang Rui <rui.zhang@intel.com>
L: linux-acpi@vger.kernel.org
@@ -644,6 +656,11 @@ ALPS PS/2 TOUCHPAD DRIVER
R: Pali Rohár <pali.rohar@gmail.com>
F: drivers/input/mouse/alps.*
+ALTERA I2C CONTROLLER DRIVER
+M: Thor Thayer <thor.thayer@linux.intel.com>
+S: Maintained
+F: drivers/i2c/busses/i2c-altera.c
+
ALTERA MAILBOX DRIVER
M: Ley Foon Tan <lftan@altera.com>
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
@@ -2848,7 +2865,6 @@ S: Supported
F: drivers/scsi/bnx2i/
BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
-M: Yuval Mintz <Yuval.Mintz@cavium.com>
M: Ariel Elior <ariel.elior@cavium.com>
M: everest-linux-l2@cavium.com
L: netdev@vger.kernel.org
@@ -5243,7 +5259,8 @@ S: Maintained
F: drivers/iommu/exynos-iommu.c
EZchip NPS platform support
-M: Noam Camus <noamc@ezchip.com>
+M: Elad Kanfi <eladkan@mellanox.com>
+M: Vineet Gupta <vgupta@synopsys.com>
S: Supported
F: arch/arc/plat-eznps
F: arch/arc/boot/dts/eznps.dts
@@ -5329,9 +5346,7 @@ M: "J. Bruce Fields" <bfields@fieldses.org>
L: linux-fsdevel@vger.kernel.org
S: Maintained
F: include/linux/fcntl.h
-F: include/linux/fs.h
F: include/uapi/linux/fcntl.h
-F: include/uapi/linux/fs.h
F: fs/fcntl.c
F: fs/locks.c
@@ -5340,6 +5355,8 @@ M: Alexander Viro <viro@zeniv.linux.org.uk>
L: linux-fsdevel@vger.kernel.org
S: Maintained
F: fs/*
+F: include/linux/fs.h
+F: include/uapi/linux/fs.h
FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
M: Riku Voipio <riku.voipio@iki.fi>
@@ -6638,8 +6655,8 @@ M: Alexander Aring <alex.aring@gmail.com>
M: Stefan Schmidt <stefan@osg.samsung.com>
L: linux-wpan@vger.kernel.org
W: http://wpan.cakelab.org/
-T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git
-T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git
+T: git git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan.git
+T: git git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan-next.git
S: Maintained
F: net/ieee802154/
F: net/mac802154/
@@ -6654,7 +6671,7 @@ F: include/net/ieee802154_netdev.h
F: Documentation/networking/ieee802154.txt
IFE PROTOCOL
-M: Yotam Gigi <yotamg@mellanox.com>
+M: Yotam Gigi <yotam.gi@gmail.com>
M: Jamal Hadi Salim <jhs@mojatatu.com>
F: net/ife
F: include/net/ife.h
@@ -6716,13 +6733,13 @@ S: Maintained
F: drivers/usb/atm/ueagle-atm.c
IMGTEC ASCII LCD DRIVER
-M: Paul Burton <paul.burton@imgtec.com>
+M: Paul Burton <paul.burton@mips.com>
S: Maintained
F: Documentation/devicetree/bindings/auxdisplay/img-ascii-lcd.txt
F: drivers/auxdisplay/img-ascii-lcd.c
IMGTEC IR DECODER DRIVER
-M: James Hogan <james.hogan@imgtec.com>
+M: James Hogan <jhogan@kernel.org>
S: Maintained
F: drivers/media/rc/img-ir/
@@ -7546,7 +7563,7 @@ F: arch/arm64/include/asm/kvm*
F: arch/arm64/kvm/
KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips)
-M: James Hogan <james.hogan@imgtec.com>
+M: James Hogan <jhogan@kernel.org>
L: linux-mips@linux-mips.org
S: Supported
F: arch/mips/include/uapi/asm/kvm*
@@ -7554,7 +7571,7 @@ F: arch/mips/include/asm/kvm*
F: arch/mips/kvm/
KERNEL VIRTUAL MACHINE FOR POWERPC (KVM/powerpc)
-M: Alexander Graf <agraf@suse.com>
+M: Paul Mackerras <paulus@ozlabs.org>
L: kvm-ppc@vger.kernel.org
W: http://www.linux-kvm.org/
T: git git://github.com/agraf/linux-2.6.git
@@ -7712,6 +7729,7 @@ M: John Crispin <john@phrozen.org>
L: linux-mips@linux-mips.org
S: Maintained
F: arch/mips/lantiq
+F: drivers/soc/lantiq
LAPB module
L: linux-x25@vger.kernel.org
@@ -8247,6 +8265,12 @@ L: libertas-dev@lists.infradead.org
S: Orphan
F: drivers/net/wireless/marvell/libertas/
+MARVELL MACCHIATOBIN SUPPORT
+M: Russell King <rmk@armlinux.org.uk>
+L: linux-arm-kernel@lists.infradead.org
+S: Maintained
+F: arch/arm64/boot/dts/marvell/armada-8040-mcbin.dts
+
MARVELL MV643XX ETHERNET DRIVER
M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
L: netdev@vger.kernel.org
@@ -8580,6 +8604,12 @@ M: Sean Wang <sean.wang@mediatek.com>
S: Maintained
F: drivers/media/rc/mtk-cir.c
+MEDIATEK PMIC LED DRIVER
+M: Sean Wang <sean.wang@mediatek.com>
+S: Maintained
+F: drivers/leds/leds-mt6323.c
+F: Documentation/devicetree/bindings/leds/leds-mt6323.txt
+
MEDIATEK ETHERNET DRIVER
M: Felix Fietkau <nbd@openwrt.org>
M: John Crispin <john@phrozen.org>
@@ -8713,7 +8743,7 @@ Q: http://patchwork.ozlabs.org/project/netdev/list/
F: drivers/net/ethernet/mellanox/mlxsw/
MELLANOX FIRMWARE FLASH LIBRARY (mlxfw)
-M: Yotam Gigi <yotamg@mellanox.com>
+M: mlxsw@mellanox.com
L: netdev@vger.kernel.org
S: Supported
W: http://www.mellanox.com
@@ -8862,7 +8892,7 @@ F: Documentation/devicetree/bindings/media/meson-ao-cec.txt
T: git git://linuxtv.org/media_tree.git
METAG ARCHITECTURE
-M: James Hogan <james.hogan@imgtec.com>
+M: James Hogan <jhogan@kernel.org>
L: linux-metag@vger.kernel.org
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag.git
S: Odd Fixes
@@ -8963,7 +8993,7 @@ F: Documentation/mips/
F: arch/mips/
MIPS BOSTON DEVELOPMENT BOARD
-M: Paul Burton <paul.burton@imgtec.com>
+M: Paul Burton <paul.burton@mips.com>
L: linux-mips@linux-mips.org
S: Maintained
F: Documentation/devicetree/bindings/clock/img,boston-clock.txt
@@ -8973,10 +9003,11 @@ F: drivers/clk/imgtec/clk-boston.c
F: include/dt-bindings/clock/boston-clock.h
MIPS GENERIC PLATFORM
-M: Paul Burton <paul.burton@imgtec.com>
+M: Paul Burton <paul.burton@mips.com>
L: linux-mips@linux-mips.org
S: Supported
F: arch/mips/generic/
+F: arch/mips/tools/generic-board-config.sh
MIPS/LOONGSON1 ARCHITECTURE
M: Keguang Zhang <keguang.zhang@gmail.com>
@@ -8987,6 +9018,13 @@ F: arch/mips/include/asm/mach-loongson32/
F: drivers/*/*loongson1*
F: drivers/*/*/*loongson1*
+MIPS RINT INSTRUCTION EMULATION
+M: Aleksandar Markovic <aleksandar.markovic@imgtec.com>
+L: linux-mips@linux-mips.org
+S: Supported
+F: arch/mips/math-emu/sp_rint.c
+F: arch/mips/math-emu/dp_rint.c
+
MIROSOUND PCM20 FM RADIO RECEIVER DRIVER
M: Hans Verkuil <hverkuil@xs4all.nl>
L: linux-media@vger.kernel.org
@@ -9175,7 +9213,6 @@ F: include/linux/isicom.h
MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
M: Bin Liu <b-liu@ti.com>
L: linux-usb@vger.kernel.org
-T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
S: Maintained
F: drivers/usb/musb/
@@ -9323,7 +9360,7 @@ NETWORK BLOCK DEVICE (NBD)
M: Josef Bacik <jbacik@fb.com>
S: Maintained
L: linux-block@vger.kernel.org
-L: nbd-general@lists.sourceforge.net
+L: nbd@other.debian.org
F: Documentation/blockdev/nbd.txt
F: drivers/block/nbd.c
F: include/uapi/linux/nbd.h
@@ -9864,6 +9901,12 @@ F: drivers/regulator/twl-regulator.c
F: drivers/regulator/twl6030-regulator.c
F: include/linux/i2c-omap.h
+ONION OMEGA2+ BOARD
+M: Harvey Hunt <harveyhuntnexus@gmail.com>
+L: linux-mips@linux-mips.org
+S: Maintained
+F: arch/mips/boot/dts/ralink/omega2p.dts
+
OMFS FILESYSTEM
M: Bob Copeland <me@bobcopeland.com>
L: linux-karma-devel@lists.sourceforge.net
@@ -10135,15 +10178,14 @@ F: include/uapi/linux/ppdev.h
F: Documentation/parport*.txt
PARAVIRT_OPS INTERFACE
-M: Jeremy Fitzhardinge <jeremy@goop.org>
-M: Chris Wright <chrisw@sous-sol.org>
+M: Juergen Gross <jgross@suse.com>
M: Alok Kataria <akataria@vmware.com>
M: Rusty Russell <rusty@rustcorp.com.au>
L: virtualization@lists.linux-foundation.org
S: Supported
F: Documentation/virtual/paravirt_ops.txt
F: arch/*/kernel/paravirt*
-F: arch/*/include/asm/paravirt.h
+F: arch/*/include/asm/paravirt*.h
F: include/linux/hypervisor.h
PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
@@ -10516,6 +10558,8 @@ M: Peter Zijlstra <peterz@infradead.org>
M: Ingo Molnar <mingo@redhat.com>
M: Arnaldo Carvalho de Melo <acme@kernel.org>
R: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+R: Jiri Olsa <jolsa@redhat.com>
+R: Namhyung Kim <namhyung@kernel.org>
L: linux-kernel@vger.kernel.org
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core
S: Supported
@@ -10846,7 +10890,7 @@ S: Maintained
F: drivers/block/ps3vram.c
PSAMPLE PACKET SAMPLING SUPPORT:
-M: Yotam Gigi <yotamg@mellanox.com>
+M: Yotam Gigi <yotam.gi@gmail.com>
S: Maintained
F: net/psample
F: include/net/psample.h
@@ -11027,7 +11071,6 @@ S: Supported
F: drivers/scsi/qedi/
QLOGIC QL4xxx ETHERNET DRIVER
-M: Yuval Mintz <Yuval.Mintz@cavium.com>
M: Ariel Elior <Ariel.Elior@cavium.com>
M: everest-linux-l2@cavium.com
L: netdev@vger.kernel.org
@@ -11415,6 +11458,8 @@ RENESAS ETHERNET DRIVERS
R: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
L: netdev@vger.kernel.org
L: linux-renesas-soc@vger.kernel.org
+F: Documentation/devicetree/bindings/net/renesas,*.txt
+F: Documentation/devicetree/bindings/net/sh_eth.txt
F: drivers/net/ethernet/renesas/
F: include/linux/sh_eth.h
@@ -12893,9 +12938,9 @@ F: drivers/mmc/host/dw_mmc*
SYNOPSYS HSDK RESET CONTROLLER DRIVER
M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
S: Supported
-F: drivers/reset/reset-hsdk-v1.c
-F: include/dt-bindings/reset/snps,hsdk-v1-reset.h
-F: Documentation/devicetree/bindings/reset/snps,hsdk-v1-reset.txt
+F: drivers/reset/reset-hsdk.c
+F: include/dt-bindings/reset/snps,hsdk-reset.h
+F: Documentation/devicetree/bindings/reset/snps,hsdk-reset.txt
SYSTEM CONFIGURATION (SYSCON)
M: Lee Jones <lee.jones@linaro.org>
@@ -14385,6 +14430,12 @@ L: netdev@vger.kernel.org
S: Maintained
F: drivers/net/vmxnet3/
+VOCORE VOCORE2 BOARD
+M: Harvey Hunt <harveyhuntnexus@gmail.com>
+L: linux-mips@linux-mips.org
+S: Maintained
+F: arch/mips/boot/dts/ralink/vocore2.dts
+
VOLTAGE AND CURRENT REGULATOR FRAMEWORK
M: Liam Girdwood <lgirdwood@gmail.com>
M: Mark Brown <broonie@kernel.org>
diff --git a/Makefile b/Makefile
index ab067d51ddf1..3a8868ee967e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0
VERSION = 4
-PATCHLEVEL = 13
+PATCHLEVEL = 14
SUBLEVEL = 0
-EXTRAVERSION =
+EXTRAVERSION = -rc7
NAME = Fearless Coyote
# *DOCUMENTATION*
@@ -697,11 +698,11 @@ KBUILD_CFLAGS += $(stackp-flag)
ifeq ($(cc-name),clang)
ifneq ($(CROSS_COMPILE),)
-CLANG_TARGET := -target $(notdir $(CROSS_COMPILE:%-=%))
+CLANG_TARGET := --target=$(notdir $(CROSS_COMPILE:%-=%))
GCC_TOOLCHAIN := $(realpath $(dir $(shell which $(LD)))/..)
endif
ifneq ($(GCC_TOOLCHAIN),)
-CLANG_GCC_TC := -gcc-toolchain $(GCC_TOOLCHAIN)
+CLANG_GCC_TC := --gcc-toolchain=$(GCC_TOOLCHAIN)
endif
KBUILD_CFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
KBUILD_AFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
@@ -933,7 +934,11 @@ ifdef CONFIG_STACK_VALIDATION
ifeq ($(has_libelf),1)
objtool_target := tools/objtool FORCE
else
- $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
+ ifdef CONFIG_ORC_UNWINDER
+ $(error "Cannot generate ORC metadata for CONFIG_ORC_UNWINDER=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
+ else
+ $(warning "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
+ endif
SKIP_STACK_VALIDATION := 1
export SKIP_STACK_VALIDATION
endif
@@ -978,7 +983,7 @@ ifdef CONFIG_HEADERS_CHECK
$(Q)$(MAKE) -f $(srctree)/Makefile headers_check
endif
ifdef CONFIG_GDB_SCRIPTS
- $(Q)ln -fsn `cd $(srctree) && /bin/pwd`/scripts/gdb/vmlinux-gdb.py
+ $(Q)ln -fsn $(abspath $(srctree)/scripts/gdb/vmlinux-gdb.py)
endif
ifdef CONFIG_TRIM_UNUSED_KSYMS
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
@@ -1129,16 +1134,6 @@ headerdep:
$(srctree)/scripts/headerdep.pl -I$(srctree)/include
# ---------------------------------------------------------------------------
-# Firmware install
-INSTALL_FW_PATH=$(INSTALL_MOD_PATH)/lib/firmware
-export INSTALL_FW_PATH
-
-PHONY += firmware_install
-firmware_install:
- @mkdir -p $(objtree)/firmware
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_install
-
-# ---------------------------------------------------------------------------
# Kernel headers
#Default location for installed headers
@@ -1182,11 +1177,11 @@ headers_check: headers_install
PHONY += kselftest
kselftest:
- $(Q)$(MAKE) -C tools/testing/selftests run_tests
+ $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests run_tests
PHONY += kselftest-clean
kselftest-clean:
- $(Q)$(MAKE) -C tools/testing/selftests clean
+ $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests clean
PHONY += kselftest-merge
kselftest-merge:
@@ -1216,7 +1211,6 @@ modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
@$(kecho) ' Building modules, stage 2.';
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
$(Q)$(AWK) '!x[$$0]++' $^ > $(objtree)/modules.builtin
@@ -1238,7 +1232,7 @@ _modinst_:
@rm -rf $(MODLIB)/kernel
@rm -f $(MODLIB)/source
@mkdir -p $(MODLIB)/kernel
- @ln -s `cd $(srctree) && /bin/pwd` $(MODLIB)/source
+ @ln -s $(abspath $(srctree)) $(MODLIB)/source
@if [ ! $(objtree) -ef $(MODLIB)/build ]; then \
rm -f $(MODLIB)/build ; \
ln -s $(CURDIR) $(MODLIB)/build ; \
@@ -1252,7 +1246,6 @@ _modinst_:
# boot script depmod is the master version.
PHONY += _modinst_post
_modinst_post: _modinst_
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modinst
$(call cmd,depmod)
ifeq ($(CONFIG_MODULE_SIG), y)
@@ -1375,8 +1368,6 @@ help:
@echo '* vmlinux - Build the bare kernel'
@echo '* modules - Build all modules'
@echo ' modules_install - Install all modules to INSTALL_MOD_PATH (default: /)'
- @echo ' firmware_install- Install all firmware to INSTALL_FW_PATH'
- @echo ' (default: $$(INSTALL_MOD_PATH)/lib/firmware)'
@echo ' dir/ - Build all files in dir and below'
@echo ' dir/file.[ois] - Build specified target only'
@echo ' dir/file.ll - Build the LLVM assembly file'
@@ -1409,7 +1400,7 @@ help:
@echo ' Build, install, and boot kernel before'
@echo ' running kselftest on it'
@echo ' kselftest-clean - Remove all generated kselftest files'
- @echo ' kselftest-merge - Merge all the config dependencies of kselftest to existed'
+ @echo ' kselftest-merge - Merge all the config dependencies of kselftest to existing'
@echo ' .config.'
@echo ''
@echo 'Userspace tools targets:'
@@ -1630,11 +1621,11 @@ image_name:
# Clear a bunch of variables before executing the submake
tools/: FORCE
$(Q)mkdir -p $(objtree)/tools
- $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/
+ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(src)/tools/
tools/%: FORCE
$(Q)mkdir -p $(objtree)/tools
- $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/ $*
+ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(src)/tools/ $*
# Single targets
# ---------------------------------------------------------------------------
diff --git a/arch/Kconfig b/arch/Kconfig
index 1aafb4efbb51..057370a0ac4e 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# General architecture dependent options
#
@@ -937,9 +938,6 @@ config STRICT_MODULE_RWX
and non-text memory will be made non-executable. This provides
protection against certain security exploits (e.g. writing to text)
-config ARCH_WANT_RELAX_ORDER
- bool
-
config ARCH_HAS_REFCOUNT
bool
help
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 0e49d39ea74a..69b875880754 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ALPHA
bool
default y
diff --git a/arch/alpha/Kconfig.debug b/arch/alpha/Kconfig.debug
index 3f6265f2d9d4..5e93dffb818a 100644
--- a/arch/alpha/Kconfig.debug
+++ b/arch/alpha/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/alpha/boot/bootloader.lds b/arch/alpha/boot/bootloader.lds
index 31c081ce1d50..8cdff54c6e41 100644
--- a/arch/alpha/boot/bootloader.lds
+++ b/arch/alpha/boot/bootloader.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
OUTPUT_FORMAT("elf64-alpha")
ENTRY(__start)
printk = srm_printk;
diff --git a/arch/alpha/boot/bootp.c b/arch/alpha/boot/bootp.c
index 2a542a506557..95c0359f4858 100644
--- a/arch/alpha/boot/bootp.c
+++ b/arch/alpha/boot/bootp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/boot/bootp.c
*
diff --git a/arch/alpha/boot/bootpz.c b/arch/alpha/boot/bootpz.c
index d6ad191698da..99b8d7dc344b 100644
--- a/arch/alpha/boot/bootpz.c
+++ b/arch/alpha/boot/bootpz.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/boot/bootpz.c
*
diff --git a/arch/alpha/boot/head.S b/arch/alpha/boot/head.S
index 8efb26686d47..06a7c95fe9ad 100644
--- a/arch/alpha/boot/head.S
+++ b/arch/alpha/boot/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/boot/head.S
*
diff --git a/arch/alpha/boot/main.c b/arch/alpha/boot/main.c
index dd6eb4a33582..8f5ed8610970 100644
--- a/arch/alpha/boot/main.c
+++ b/arch/alpha/boot/main.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/boot/main.c
*
diff --git a/arch/alpha/boot/misc.c b/arch/alpha/boot/misc.c
index 1b568ed74f95..d65192202703 100644
--- a/arch/alpha/boot/misc.c
+++ b/arch/alpha/boot/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* misc.c
*
diff --git a/arch/alpha/boot/tools/mkbb.c b/arch/alpha/boot/tools/mkbb.c
index 1185778e6a1e..fc47f33f8a44 100644
--- a/arch/alpha/boot/tools/mkbb.c
+++ b/arch/alpha/boot/tools/mkbb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* This utility makes a bootblock suitable for the SRM console/miniloader */
/* Usage:
diff --git a/arch/alpha/boot/tools/objstrip.c b/arch/alpha/boot/tools/objstrip.c
index dee82695f48b..825a16f5f622 100644
--- a/arch/alpha/boot/tools/objstrip.c
+++ b/arch/alpha/boot/tools/objstrip.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/boot/tools/objstrip.c
*
diff --git a/arch/alpha/include/asm/Kbuild b/arch/alpha/include/asm/Kbuild
index 5b974ab8425c..47f3fba3e41f 100644
--- a/arch/alpha/include/asm/Kbuild
+++ b/arch/alpha/include/asm/Kbuild
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
generic-y += clkdev.h
diff --git a/arch/alpha/include/asm/a.out.h b/arch/alpha/include/asm/a.out.h
index 9abbd2455306..d2346b7caff1 100644
--- a/arch/alpha/include/asm/a.out.h
+++ b/arch/alpha/include/asm/a.out.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_A_OUT_H__
#define __ALPHA_A_OUT_H__
diff --git a/arch/alpha/include/asm/agp.h b/arch/alpha/include/asm/agp.h
index a94d48b8677f..7173eada1567 100644
--- a/arch/alpha/include/asm/agp.h
+++ b/arch/alpha/include/asm/agp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef AGP_H
#define AGP_H 1
diff --git a/arch/alpha/include/asm/agp_backend.h b/arch/alpha/include/asm/agp_backend.h
index 55dd44a2cea7..2718802407d6 100644
--- a/arch/alpha/include/asm/agp_backend.h
+++ b/arch/alpha/include/asm/agp_backend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_AGP_BACKEND_H
#define _ALPHA_AGP_BACKEND_H 1
diff --git a/arch/alpha/include/asm/atomic.h b/arch/alpha/include/asm/atomic.h
index 498933a7df97..85867d3cea64 100644
--- a/arch/alpha/include/asm/atomic.h
+++ b/arch/alpha/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_ATOMIC_H
#define _ALPHA_ATOMIC_H
diff --git a/arch/alpha/include/asm/barrier.h b/arch/alpha/include/asm/barrier.h
index 77516c87255d..92ec486a4f9e 100644
--- a/arch/alpha/include/asm/barrier.h
+++ b/arch/alpha/include/asm/barrier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BARRIER_H
#define __BARRIER_H
diff --git a/arch/alpha/include/asm/bitops.h b/arch/alpha/include/asm/bitops.h
index 4bdfbd444e63..ca43f4d0b937 100644
--- a/arch/alpha/include/asm/bitops.h
+++ b/arch/alpha/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_BITOPS_H
#define _ALPHA_BITOPS_H
diff --git a/arch/alpha/include/asm/bug.h b/arch/alpha/include/asm/bug.h
index f091682e3cc8..b88ebdfedf7c 100644
--- a/arch/alpha/include/asm/bug.h
+++ b/arch/alpha/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_BUG_H
#define _ALPHA_BUG_H
diff --git a/arch/alpha/include/asm/cache.h b/arch/alpha/include/asm/cache.h
index ad368a93a46a..6ce508c68907 100644
--- a/arch/alpha/include/asm/cache.h
+++ b/arch/alpha/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-alpha/cache.h
*/
diff --git a/arch/alpha/include/asm/cacheflush.h b/arch/alpha/include/asm/cacheflush.h
index a9cb6aa447aa..89128489cb59 100644
--- a/arch/alpha/include/asm/cacheflush.h
+++ b/arch/alpha/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_CACHEFLUSH_H
#define _ALPHA_CACHEFLUSH_H
diff --git a/arch/alpha/include/asm/checksum.h b/arch/alpha/include/asm/checksum.h
index f2bbdd2ace51..473e6ccb65a3 100644
--- a/arch/alpha/include/asm/checksum.h
+++ b/arch/alpha/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_CHECKSUM_H
#define _ALPHA_CHECKSUM_H
diff --git a/arch/alpha/include/asm/cmpxchg.h b/arch/alpha/include/asm/cmpxchg.h
index e5117766529e..46ebf14aed4e 100644
--- a/arch/alpha/include/asm/cmpxchg.h
+++ b/arch/alpha/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_CMPXCHG_H
#define _ALPHA_CMPXCHG_H
diff --git a/arch/alpha/include/asm/compiler.h b/arch/alpha/include/asm/compiler.h
index a7720b96bcc9..5159ba259d65 100644
--- a/arch/alpha/include/asm/compiler.h
+++ b/arch/alpha/include/asm/compiler.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_COMPILER_H
#define __ALPHA_COMPILER_H
diff --git a/arch/alpha/include/asm/console.h b/arch/alpha/include/asm/console.h
index f2b584fe0994..088b7b9eb15a 100644
--- a/arch/alpha/include/asm/console.h
+++ b/arch/alpha/include/asm/console.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __AXP_CONSOLE_H
#define __AXP_CONSOLE_H
diff --git a/arch/alpha/include/asm/core_apecs.h b/arch/alpha/include/asm/core_apecs.h
index 6785ff7e02bc..0a07055bc0fe 100644
--- a/arch/alpha/include/asm/core_apecs.h
+++ b/arch/alpha/include/asm/core_apecs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_APECS__H__
#define __ALPHA_APECS__H__
diff --git a/arch/alpha/include/asm/core_cia.h b/arch/alpha/include/asm/core_cia.h
index 9e0516c0ca27..c706a7f2b061 100644
--- a/arch/alpha/include/asm/core_cia.h
+++ b/arch/alpha/include/asm/core_cia.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_CIA__H__
#define __ALPHA_CIA__H__
diff --git a/arch/alpha/include/asm/core_irongate.h b/arch/alpha/include/asm/core_irongate.h
index 24b2db541501..1c8906bf76c6 100644
--- a/arch/alpha/include/asm/core_irongate.h
+++ b/arch/alpha/include/asm/core_irongate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_IRONGATE__H__
#define __ALPHA_IRONGATE__H__
diff --git a/arch/alpha/include/asm/core_lca.h b/arch/alpha/include/asm/core_lca.h
index 8ee6c516279c..84d5e5b84f4f 100644
--- a/arch/alpha/include/asm/core_lca.h
+++ b/arch/alpha/include/asm/core_lca.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_LCA__H__
#define __ALPHA_LCA__H__
diff --git a/arch/alpha/include/asm/core_marvel.h b/arch/alpha/include/asm/core_marvel.h
index 8dcf9dbda618..cc6fd92d5fa9 100644
--- a/arch/alpha/include/asm/core_marvel.h
+++ b/arch/alpha/include/asm/core_marvel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Marvel systems use the IO7 I/O chip provides PCI/PCIX/AGP access
*
diff --git a/arch/alpha/include/asm/core_mcpcia.h b/arch/alpha/include/asm/core_mcpcia.h
index ad44bef29fba..b30dc128210d 100644
--- a/arch/alpha/include/asm/core_mcpcia.h
+++ b/arch/alpha/include/asm/core_mcpcia.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_MCPCIA__H__
#define __ALPHA_MCPCIA__H__
diff --git a/arch/alpha/include/asm/core_polaris.h b/arch/alpha/include/asm/core_polaris.h
index 2f966b64659d..1c56dea647b5 100644
--- a/arch/alpha/include/asm/core_polaris.h
+++ b/arch/alpha/include/asm/core_polaris.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_POLARIS__H__
#define __ALPHA_POLARIS__H__
diff --git a/arch/alpha/include/asm/core_t2.h b/arch/alpha/include/asm/core_t2.h
index ade9d92e68b4..e0b33d09e93a 100644
--- a/arch/alpha/include/asm/core_t2.h
+++ b/arch/alpha/include/asm/core_t2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_T2__H__
#define __ALPHA_T2__H__
diff --git a/arch/alpha/include/asm/core_titan.h b/arch/alpha/include/asm/core_titan.h
index 8cf79d1219e1..dcc02682c1e1 100644
--- a/arch/alpha/include/asm/core_titan.h
+++ b/arch/alpha/include/asm/core_titan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_TITAN__H__
#define __ALPHA_TITAN__H__
diff --git a/arch/alpha/include/asm/core_tsunami.h b/arch/alpha/include/asm/core_tsunami.h
index 8e39ecf09419..3391e95754f2 100644
--- a/arch/alpha/include/asm/core_tsunami.h
+++ b/arch/alpha/include/asm/core_tsunami.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_TSUNAMI__H__
#define __ALPHA_TSUNAMI__H__
diff --git a/arch/alpha/include/asm/core_wildfire.h b/arch/alpha/include/asm/core_wildfire.h
index cd562f544ba2..5d1b37f412cd 100644
--- a/arch/alpha/include/asm/core_wildfire.h
+++ b/arch/alpha/include/asm/core_wildfire.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_WILDFIRE__H__
#define __ALPHA_WILDFIRE__H__
diff --git a/arch/alpha/include/asm/delay.h b/arch/alpha/include/asm/delay.h
index 2aa3f410f7e6..868aa61aba2f 100644
--- a/arch/alpha/include/asm/delay.h
+++ b/arch/alpha/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_DELAY_H
#define __ALPHA_DELAY_H
diff --git a/arch/alpha/include/asm/dma-mapping.h b/arch/alpha/include/asm/dma-mapping.h
index 5d53666935e6..e542cb272b67 100644
--- a/arch/alpha/include/asm/dma-mapping.h
+++ b/arch/alpha/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_DMA_MAPPING_H
#define _ALPHA_DMA_MAPPING_H
diff --git a/arch/alpha/include/asm/dma.h b/arch/alpha/include/asm/dma.h
index 87cfdbdf08fc..28610ea7786d 100644
--- a/arch/alpha/include/asm/dma.h
+++ b/arch/alpha/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-alpha/dma.h
*
diff --git a/arch/alpha/include/asm/elf.h b/arch/alpha/include/asm/elf.h
index 968d9991f5ee..8049997fa372 100644
--- a/arch/alpha/include/asm/elf.h
+++ b/arch/alpha/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ALPHA_ELF_H
#define __ASM_ALPHA_ELF_H
diff --git a/arch/alpha/include/asm/err_common.h b/arch/alpha/include/asm/err_common.h
index c25095942107..610e01fe73ab 100644
--- a/arch/alpha/include/asm/err_common.h
+++ b/arch/alpha/include/asm/err_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-alpha/err_common.h
*
diff --git a/arch/alpha/include/asm/err_ev7.h b/arch/alpha/include/asm/err_ev7.h
index 87f99777c2e4..ab17e6333764 100644
--- a/arch/alpha/include/asm/err_ev7.h
+++ b/arch/alpha/include/asm/err_ev7.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_ERR_EV7_H
#define __ALPHA_ERR_EV7_H 1
diff --git a/arch/alpha/include/asm/extable.h b/arch/alpha/include/asm/extable.h
index 048e209e524c..e42592390ee0 100644
--- a/arch/alpha/include/asm/extable.h
+++ b/arch/alpha/include/asm/extable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_EXTABLE_H
#define _ASM_EXTABLE_H
diff --git a/arch/alpha/include/asm/fpu.h b/arch/alpha/include/asm/fpu.h
index 71c20956b905..b9691405e56b 100644
--- a/arch/alpha/include/asm/fpu.h
+++ b/arch/alpha/include/asm/fpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ALPHA_FPU_H
#define __ASM_ALPHA_FPU_H
diff --git a/arch/alpha/include/asm/futex.h b/arch/alpha/include/asm/futex.h
index 05a70edd57b6..d2e4da93e68c 100644
--- a/arch/alpha/include/asm/futex.h
+++ b/arch/alpha/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ALPHA_FUTEX_H
#define _ASM_ALPHA_FUTEX_H
diff --git a/arch/alpha/include/asm/gct.h b/arch/alpha/include/asm/gct.h
index 3504c704927c..2847449fb168 100644
--- a/arch/alpha/include/asm/gct.h
+++ b/arch/alpha/include/asm/gct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_GCT_H
#define __ALPHA_GCT_H
diff --git a/arch/alpha/include/asm/hardirq.h b/arch/alpha/include/asm/hardirq.h
index 242c09ba98c4..5ce5b34e8a1a 100644
--- a/arch/alpha/include/asm/hardirq.h
+++ b/arch/alpha/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_HARDIRQ_H
#define _ALPHA_HARDIRQ_H
diff --git a/arch/alpha/include/asm/hw_irq.h b/arch/alpha/include/asm/hw_irq.h
index 5050ac81cd90..e2d81ac0d934 100644
--- a/arch/alpha/include/asm/hw_irq.h
+++ b/arch/alpha/include/asm/hw_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_HW_IRQ_H
#define _ALPHA_HW_IRQ_H
diff --git a/arch/alpha/include/asm/hwrpb.h b/arch/alpha/include/asm/hwrpb.h
index 8e8f871af7cf..d8180e527a1e 100644
--- a/arch/alpha/include/asm/hwrpb.h
+++ b/arch/alpha/include/asm/hwrpb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_HWRPB_H
#define __ALPHA_HWRPB_H
diff --git a/arch/alpha/include/asm/io.h b/arch/alpha/include/asm/io.h
index 4d61d2a50c52..d123ff90f7a8 100644
--- a/arch/alpha/include/asm/io.h
+++ b/arch/alpha/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_IO_H
#define __ALPHA_IO_H
diff --git a/arch/alpha/include/asm/io_trivial.h b/arch/alpha/include/asm/io_trivial.h
index 1c77f10b4b36..ba3d8f0cfe0c 100644
--- a/arch/alpha/include/asm/io_trivial.h
+++ b/arch/alpha/include/asm/io_trivial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Trivial implementations of basic i/o routines. Assumes that all
of the hard work has been done by ioremap and ioportmap, and that
access to i/o space is linear. */
diff --git a/arch/alpha/include/asm/irq.h b/arch/alpha/include/asm/irq.h
index 06377400dc09..4d17cacd1462 100644
--- a/arch/alpha/include/asm/irq.h
+++ b/arch/alpha/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_IRQ_H
#define _ALPHA_IRQ_H
diff --git a/arch/alpha/include/asm/irqflags.h b/arch/alpha/include/asm/irqflags.h
index ffb1726484af..9f25d4e0d37e 100644
--- a/arch/alpha/include/asm/irqflags.h
+++ b/arch/alpha/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_IRQFLAGS_H
#define __ALPHA_IRQFLAGS_H
diff --git a/arch/alpha/include/asm/jensen.h b/arch/alpha/include/asm/jensen.h
index 964b06ead43b..436dc905b6ad 100644
--- a/arch/alpha/include/asm/jensen.h
+++ b/arch/alpha/include/asm/jensen.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_JENSEN_H
#define __ALPHA_JENSEN_H
diff --git a/arch/alpha/include/asm/kmap_types.h b/arch/alpha/include/asm/kmap_types.h
index a8d4ec8ea4b6..651714b45729 100644
--- a/arch/alpha/include/asm/kmap_types.h
+++ b/arch/alpha/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_KMAP_TYPES_H
#define _ASM_KMAP_TYPES_H
diff --git a/arch/alpha/include/asm/linkage.h b/arch/alpha/include/asm/linkage.h
index 7cfd06e8c935..aa8661fa60dc 100644
--- a/arch/alpha/include/asm/linkage.h
+++ b/arch/alpha/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
diff --git a/arch/alpha/include/asm/local.h b/arch/alpha/include/asm/local.h
index 9c94b8456043..fab26a1c93d5 100644
--- a/arch/alpha/include/asm/local.h
+++ b/arch/alpha/include/asm/local.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_LOCAL_H
#define _ALPHA_LOCAL_H
diff --git a/arch/alpha/include/asm/machvec.h b/arch/alpha/include/asm/machvec.h
index 75cb3641ed2f..a6b73c6d10ee 100644
--- a/arch/alpha/include/asm/machvec.h
+++ b/arch/alpha/include/asm/machvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_MACHVEC_H
#define __ALPHA_MACHVEC_H 1
diff --git a/arch/alpha/include/asm/mc146818rtc.h b/arch/alpha/include/asm/mc146818rtc.h
index 097703f1c8cb..2154fd4f7857 100644
--- a/arch/alpha/include/asm/mc146818rtc.h
+++ b/arch/alpha/include/asm/mc146818rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine dependent access functions for RTC registers.
*/
diff --git a/arch/alpha/include/asm/mce.h b/arch/alpha/include/asm/mce.h
index 660285b9aca8..200e04e98a2f 100644
--- a/arch/alpha/include/asm/mce.h
+++ b/arch/alpha/include/asm/mce.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_MCE_H
#define __ALPHA_MCE_H
diff --git a/arch/alpha/include/asm/mmu.h b/arch/alpha/include/asm/mmu.h
index 3dc127779329..dadfc1b6e3e7 100644
--- a/arch/alpha/include/asm/mmu.h
+++ b/arch/alpha/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_MMU_H
#define __ALPHA_MMU_H
diff --git a/arch/alpha/include/asm/mmu_context.h b/arch/alpha/include/asm/mmu_context.h
index 384bd47b5187..6d7d9bc1b4b8 100644
--- a/arch/alpha/include/asm/mmu_context.h
+++ b/arch/alpha/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_MMU_CONTEXT_H
#define __ALPHA_MMU_CONTEXT_H
@@ -8,6 +9,7 @@
*/
#include <linux/mm_types.h>
+#include <linux/sched.h>
#include <asm/machvec.h>
#include <asm/compiler.h>
diff --git a/arch/alpha/include/asm/mmzone.h b/arch/alpha/include/asm/mmzone.h
index 14ce27bccd24..889b5d3ad825 100644
--- a/arch/alpha/include/asm/mmzone.h
+++ b/arch/alpha/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Written by Kanoj Sarcar (kanoj@sgi.com) Aug 99
* Adapted for the alpha wildfire architecture Jan 2001.
diff --git a/arch/alpha/include/asm/module.h b/arch/alpha/include/asm/module.h
index 9cd13b55155f..1e96e42f5d54 100644
--- a/arch/alpha/include/asm/module.h
+++ b/arch/alpha/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_MODULE_H
#define _ALPHA_MODULE_H
diff --git a/arch/alpha/include/asm/page.h b/arch/alpha/include/asm/page.h
index 07af062544fb..f3fb2848470a 100644
--- a/arch/alpha/include/asm/page.h
+++ b/arch/alpha/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_PAGE_H
#define _ALPHA_PAGE_H
diff --git a/arch/alpha/include/asm/pal.h b/arch/alpha/include/asm/pal.h
index 5422a47646fc..db2b3b18b34c 100644
--- a/arch/alpha/include/asm/pal.h
+++ b/arch/alpha/include/asm/pal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_PAL_H
#define __ALPHA_PAL_H
diff --git a/arch/alpha/include/asm/param.h b/arch/alpha/include/asm/param.h
index a5b68b268bcf..cfe947ce9461 100644
--- a/arch/alpha/include/asm/param.h
+++ b/arch/alpha/include/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ALPHA_PARAM_H
#define _ASM_ALPHA_PARAM_H
diff --git a/arch/alpha/include/asm/parport.h b/arch/alpha/include/asm/parport.h
index 6abd0af11f13..0519a51e61f8 100644
--- a/arch/alpha/include/asm/parport.h
+++ b/arch/alpha/include/asm/parport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* parport.h: platform-specific PC-style parport initialisation
*
diff --git a/arch/alpha/include/asm/pci.h b/arch/alpha/include/asm/pci.h
index a06c24b3a2e1..fc988c16e894 100644
--- a/arch/alpha/include/asm/pci.h
+++ b/arch/alpha/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_PCI_H
#define __ALPHA_PCI_H
diff --git a/arch/alpha/include/asm/percpu.h b/arch/alpha/include/asm/percpu.h
index 2c12378e3aa9..6923249f2d49 100644
--- a/arch/alpha/include/asm/percpu.h
+++ b/arch/alpha/include/asm/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_PERCPU_H
#define __ALPHA_PERCPU_H
diff --git a/arch/alpha/include/asm/pgalloc.h b/arch/alpha/include/asm/pgalloc.h
index c2ebb6f36c9d..ab3e3a8638fb 100644
--- a/arch/alpha/include/asm/pgalloc.h
+++ b/arch/alpha/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_PGALLOC_H
#define _ALPHA_PGALLOC_H
diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h
index a9a119592372..89c2032f9960 100644
--- a/arch/alpha/include/asm/pgtable.h
+++ b/arch/alpha/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_PGTABLE_H
#define _ALPHA_PGTABLE_H
diff --git a/arch/alpha/include/asm/processor.h b/arch/alpha/include/asm/processor.h
index 2fec2dee3020..bfe784f2d4af 100644
--- a/arch/alpha/include/asm/processor.h
+++ b/arch/alpha/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-alpha/processor.h
*
diff --git a/arch/alpha/include/asm/ptrace.h b/arch/alpha/include/asm/ptrace.h
index 9047c2fe8f23..df5f317ab3fc 100644
--- a/arch/alpha/include/asm/ptrace.h
+++ b/arch/alpha/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMAXP_PTRACE_H
#define _ASMAXP_PTRACE_H
diff --git a/arch/alpha/include/asm/rwsem.h b/arch/alpha/include/asm/rwsem.h
index 77873d0ad293..3925f06afd6b 100644
--- a/arch/alpha/include/asm/rwsem.h
+++ b/arch/alpha/include/asm/rwsem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_RWSEM_H
#define _ALPHA_RWSEM_H
diff --git a/arch/alpha/include/asm/serial.h b/arch/alpha/include/asm/serial.h
index e31557fc06cc..91115447319c 100644
--- a/arch/alpha/include/asm/serial.h
+++ b/arch/alpha/include/asm/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-alpha/serial.h
*/
diff --git a/arch/alpha/include/asm/shmparam.h b/arch/alpha/include/asm/shmparam.h
index cc901d58aebb..0c04fde1aeba 100644
--- a/arch/alpha/include/asm/shmparam.h
+++ b/arch/alpha/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMAXP_SHMPARAM_H
#define _ASMAXP_SHMPARAM_H
diff --git a/arch/alpha/include/asm/signal.h b/arch/alpha/include/asm/signal.h
index 963f0494dca7..a40f02011667 100644
--- a/arch/alpha/include/asm/signal.h
+++ b/arch/alpha/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMAXP_SIGNAL_H
#define _ASMAXP_SIGNAL_H
diff --git a/arch/alpha/include/asm/smp.h b/arch/alpha/include/asm/smp.h
index c46e714aa3e0..2264ae72673b 100644
--- a/arch/alpha/include/asm/smp.h
+++ b/arch/alpha/include/asm/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SMP_H
#define __ASM_SMP_H
diff --git a/arch/alpha/include/asm/socket.h b/arch/alpha/include/asm/socket.h
index 8d806d80ed24..76a32817e7be 100644
--- a/arch/alpha/include/asm/socket.h
+++ b/arch/alpha/include/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SOCKET_H
#define _ASM_SOCKET_H
diff --git a/arch/alpha/include/asm/special_insns.h b/arch/alpha/include/asm/special_insns.h
index 88d3452b21f0..ca2c5c30b22e 100644
--- a/arch/alpha/include/asm/special_insns.h
+++ b/arch/alpha/include/asm/special_insns.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_SPECIAL_INSNS_H
#define __ALPHA_SPECIAL_INSNS_H
diff --git a/arch/alpha/include/asm/spinlock.h b/arch/alpha/include/asm/spinlock.h
index 718ac0b64adf..aa4304afbea6 100644
--- a/arch/alpha/include/asm/spinlock.h
+++ b/arch/alpha/include/asm/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_SPINLOCK_H
#define _ALPHA_SPINLOCK_H
diff --git a/arch/alpha/include/asm/spinlock_types.h b/arch/alpha/include/asm/spinlock_types.h
index 54c2afce0a1d..1d5716bc060b 100644
--- a/arch/alpha/include/asm/spinlock_types.h
+++ b/arch/alpha/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_SPINLOCK_TYPES_H
#define _ALPHA_SPINLOCK_TYPES_H
diff --git a/arch/alpha/include/asm/string.h b/arch/alpha/include/asm/string.h
index 9eb9933d845f..f043f91ff988 100644
--- a/arch/alpha/include/asm/string.h
+++ b/arch/alpha/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_STRING_H__
#define __ALPHA_STRING_H__
diff --git a/arch/alpha/include/asm/switch_to.h b/arch/alpha/include/asm/switch_to.h
index 44c0d4f2c0b2..762b7f975310 100644
--- a/arch/alpha/include/asm/switch_to.h
+++ b/arch/alpha/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_SWITCH_TO_H
#define __ALPHA_SWITCH_TO_H
diff --git a/arch/alpha/include/asm/syscall.h b/arch/alpha/include/asm/syscall.h
index 88d28eb2a566..d73a6fcb519c 100644
--- a/arch/alpha/include/asm/syscall.h
+++ b/arch/alpha/include/asm/syscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ALPHA_SYSCALL_H
#define _ASM_ALPHA_SYSCALL_H
diff --git a/arch/alpha/include/asm/termios.h b/arch/alpha/include/asm/termios.h
index 7fde0f88da88..6a8c53dec57e 100644
--- a/arch/alpha/include/asm/termios.h
+++ b/arch/alpha/include/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_TERMIOS_H
#define _ALPHA_TERMIOS_H
diff --git a/arch/alpha/include/asm/thread_info.h b/arch/alpha/include/asm/thread_info.h
index e9e90bfa2b50..8c20c5e35432 100644
--- a/arch/alpha/include/asm/thread_info.h
+++ b/arch/alpha/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_THREAD_INFO_H
#define _ALPHA_THREAD_INFO_H
diff --git a/arch/alpha/include/asm/timex.h b/arch/alpha/include/asm/timex.h
index afa0c45e3e98..b565cc6f408e 100644
--- a/arch/alpha/include/asm/timex.h
+++ b/arch/alpha/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-alpha/timex.h
*
diff --git a/arch/alpha/include/asm/tlb.h b/arch/alpha/include/asm/tlb.h
index 42866759f3fa..8f5042b61875 100644
--- a/arch/alpha/include/asm/tlb.h
+++ b/arch/alpha/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_TLB_H
#define _ALPHA_TLB_H
diff --git a/arch/alpha/include/asm/tlbflush.h b/arch/alpha/include/asm/tlbflush.h
index e89e0c2e15b1..f8b492408f51 100644
--- a/arch/alpha/include/asm/tlbflush.h
+++ b/arch/alpha/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_TLBFLUSH_H
#define _ALPHA_TLBFLUSH_H
diff --git a/arch/alpha/include/asm/topology.h b/arch/alpha/include/asm/topology.h
index 9251e13e144f..e6e13a85796a 100644
--- a/arch/alpha/include/asm/topology.h
+++ b/arch/alpha/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ALPHA_TOPOLOGY_H
#define _ASM_ALPHA_TOPOLOGY_H
diff --git a/arch/alpha/include/asm/types.h b/arch/alpha/include/asm/types.h
index 0bc66e1d3a7e..b60b60276484 100644
--- a/arch/alpha/include/asm/types.h
+++ b/arch/alpha/include/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_TYPES_H
#define _ALPHA_TYPES_H
diff --git a/arch/alpha/include/asm/uaccess.h b/arch/alpha/include/asm/uaccess.h
index 133a4884ed44..87d8c4f0307d 100644
--- a/arch/alpha/include/asm/uaccess.h
+++ b/arch/alpha/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ALPHA_UACCESS_H
#define __ALPHA_UACCESS_H
diff --git a/arch/alpha/include/asm/ucontext.h b/arch/alpha/include/asm/ucontext.h
index 47578ab42152..af1f3465b8d7 100644
--- a/arch/alpha/include/asm/ucontext.h
+++ b/arch/alpha/include/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMAXP_UCONTEXT_H
#define _ASMAXP_UCONTEXT_H
diff --git a/arch/alpha/include/asm/unaligned.h b/arch/alpha/include/asm/unaligned.h
index 3787c60aed3f..863c807b66f8 100644
--- a/arch/alpha/include/asm/unaligned.h
+++ b/arch/alpha/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ALPHA_UNALIGNED_H
#define _ASM_ALPHA_UNALIGNED_H
diff --git a/arch/alpha/include/asm/unistd.h b/arch/alpha/include/asm/unistd.h
index db7fc0f511e2..d6e29a1de4cc 100644
--- a/arch/alpha/include/asm/unistd.h
+++ b/arch/alpha/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_UNISTD_H
#define _ALPHA_UNISTD_H
diff --git a/arch/alpha/include/asm/user.h b/arch/alpha/include/asm/user.h
index a4eb6a4ca8d1..3df37492c7b7 100644
--- a/arch/alpha/include/asm/user.h
+++ b/arch/alpha/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_USER_H
#define _ALPHA_USER_H
diff --git a/arch/alpha/include/asm/vga.h b/arch/alpha/include/asm/vga.h
index 3c1c2b6128e7..4c347a8454c7 100644
--- a/arch/alpha/include/asm/vga.h
+++ b/arch/alpha/include/asm/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Access to VGA videoram
*
diff --git a/arch/alpha/include/asm/word-at-a-time.h b/arch/alpha/include/asm/word-at-a-time.h
index 902e6ab00a06..4035265f1ad9 100644
--- a/arch/alpha/include/asm/word-at-a-time.h
+++ b/arch/alpha/include/asm/word-at-a-time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_WORD_AT_A_TIME_H
#define _ASM_WORD_AT_A_TIME_H
diff --git a/arch/alpha/include/asm/wrperfmon.h b/arch/alpha/include/asm/wrperfmon.h
index 319bf6788d87..c97b82a1f7db 100644
--- a/arch/alpha/include/asm/wrperfmon.h
+++ b/arch/alpha/include/asm/wrperfmon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for use with the Alpha wrperfmon PAL call.
*/
diff --git a/arch/alpha/include/asm/xchg.h b/arch/alpha/include/asm/xchg.h
index 0ca9724597c1..68dfb3cb7145 100644
--- a/arch/alpha/include/asm/xchg.h
+++ b/arch/alpha/include/asm/xchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_CMPXCHG_H
#error Do not include xchg.h directly!
#else
diff --git a/arch/alpha/include/uapi/asm/a.out.h b/arch/alpha/include/uapi/asm/a.out.h
index 547707246f63..7d692df04ba9 100644
--- a/arch/alpha/include/uapi/asm/a.out.h
+++ b/arch/alpha/include/uapi/asm/a.out.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ALPHA_A_OUT_H__
#define _UAPI__ALPHA_A_OUT_H__
diff --git a/arch/alpha/include/uapi/asm/auxvec.h b/arch/alpha/include/uapi/asm/auxvec.h
index a3a579dfdb4d..57cae8780d81 100644
--- a/arch/alpha/include/uapi/asm/auxvec.h
+++ b/arch/alpha/include/uapi/asm/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_ALPHA_AUXVEC_H
#define __ASM_ALPHA_AUXVEC_H
diff --git a/arch/alpha/include/uapi/asm/bitsperlong.h b/arch/alpha/include/uapi/asm/bitsperlong.h
index ad57f7868203..6c5bf7d03f4e 100644
--- a/arch/alpha/include/uapi/asm/bitsperlong.h
+++ b/arch/alpha/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_ALPHA_BITSPERLONG_H
#define __ASM_ALPHA_BITSPERLONG_H
diff --git a/arch/alpha/include/uapi/asm/byteorder.h b/arch/alpha/include/uapi/asm/byteorder.h
index 73683093202d..efa9b51b4595 100644
--- a/arch/alpha/include/uapi/asm/byteorder.h
+++ b/arch/alpha/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_BYTEORDER_H
#define _ALPHA_BYTEORDER_H
diff --git a/arch/alpha/include/uapi/asm/compiler.h b/arch/alpha/include/uapi/asm/compiler.h
index 32cc7833f0c1..0e00c0e13374 100644
--- a/arch/alpha/include/uapi/asm/compiler.h
+++ b/arch/alpha/include/uapi/asm/compiler.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ALPHA_COMPILER_H
#define _UAPI__ALPHA_COMPILER_H
diff --git a/arch/alpha/include/uapi/asm/console.h b/arch/alpha/include/uapi/asm/console.h
index fd08a191f360..5fcb65300b56 100644
--- a/arch/alpha/include/uapi/asm/console.h
+++ b/arch/alpha/include/uapi/asm/console.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__AXP_CONSOLE_H
#define _UAPI__AXP_CONSOLE_H
diff --git a/arch/alpha/include/uapi/asm/errno.h b/arch/alpha/include/uapi/asm/errno.h
index 17f92aa76b2f..3d265f6babaf 100644
--- a/arch/alpha/include/uapi/asm/errno.h
+++ b/arch/alpha/include/uapi/asm/errno.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_ERRNO_H
#define _ALPHA_ERRNO_H
diff --git a/arch/alpha/include/uapi/asm/fcntl.h b/arch/alpha/include/uapi/asm/fcntl.h
index 09f49a6b87d1..50bdc8e8a271 100644
--- a/arch/alpha/include/uapi/asm/fcntl.h
+++ b/arch/alpha/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_FCNTL_H
#define _ALPHA_FCNTL_H
diff --git a/arch/alpha/include/uapi/asm/fpu.h b/arch/alpha/include/uapi/asm/fpu.h
index 21a053ca2233..cea9eafa056f 100644
--- a/arch/alpha/include/uapi/asm/fpu.h
+++ b/arch/alpha/include/uapi/asm/fpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ASM_ALPHA_FPU_H
#define _UAPI__ASM_ALPHA_FPU_H
diff --git a/arch/alpha/include/uapi/asm/gentrap.h b/arch/alpha/include/uapi/asm/gentrap.h
index ae50cc3192c7..c02ccc5ecec0 100644
--- a/arch/alpha/include/uapi/asm/gentrap.h
+++ b/arch/alpha/include/uapi/asm/gentrap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASMAXP_GENTRAP_H
#define _ASMAXP_GENTRAP_H
diff --git a/arch/alpha/include/uapi/asm/ioctl.h b/arch/alpha/include/uapi/asm/ioctl.h
index fc63727f4178..a9d68a08ee84 100644
--- a/arch/alpha/include/uapi/asm/ioctl.h
+++ b/arch/alpha/include/uapi/asm/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_IOCTL_H
#define _ALPHA_IOCTL_H
diff --git a/arch/alpha/include/uapi/asm/ioctls.h b/arch/alpha/include/uapi/asm/ioctls.h
index 1cd7dc7d4870..3729d92d3fa8 100644
--- a/arch/alpha/include/uapi/asm/ioctls.h
+++ b/arch/alpha/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_ALPHA_IOCTLS_H
#define _ASM_ALPHA_IOCTLS_H
diff --git a/arch/alpha/include/uapi/asm/ipcbuf.h b/arch/alpha/include/uapi/asm/ipcbuf.h
index 84c7e51cb6d0..90d6445a14df 100644
--- a/arch/alpha/include/uapi/asm/ipcbuf.h
+++ b/arch/alpha/include/uapi/asm/ipcbuf.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/ipcbuf.h>
diff --git a/arch/alpha/include/uapi/asm/kvm_para.h b/arch/alpha/include/uapi/asm/kvm_para.h
index 14fab8f0b957..baacc4996d18 100644
--- a/arch/alpha/include/uapi/asm/kvm_para.h
+++ b/arch/alpha/include/uapi/asm/kvm_para.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/kvm_para.h>
diff --git a/arch/alpha/include/uapi/asm/mman.h b/arch/alpha/include/uapi/asm/mman.h
index 3b26cc62dadb..6bf730063e3f 100644
--- a/arch/alpha/include/uapi/asm/mman.h
+++ b/arch/alpha/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ALPHA_MMAN_H__
#define __ALPHA_MMAN_H__
diff --git a/arch/alpha/include/uapi/asm/msgbuf.h b/arch/alpha/include/uapi/asm/msgbuf.h
index 98496501a2bb..8c5d4d8c1b16 100644
--- a/arch/alpha/include/uapi/asm/msgbuf.h
+++ b/arch/alpha/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_MSGBUF_H
#define _ALPHA_MSGBUF_H
diff --git a/arch/alpha/include/uapi/asm/pal.h b/arch/alpha/include/uapi/asm/pal.h
index dfc8140b9088..7427e028db64 100644
--- a/arch/alpha/include/uapi/asm/pal.h
+++ b/arch/alpha/include/uapi/asm/pal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ALPHA_PAL_H
#define _UAPI__ALPHA_PAL_H
diff --git a/arch/alpha/include/uapi/asm/param.h b/arch/alpha/include/uapi/asm/param.h
index dbcd9834af6d..49c7119934e2 100644
--- a/arch/alpha/include/uapi/asm/param.h
+++ b/arch/alpha/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_ALPHA_PARAM_H
#define _UAPI_ASM_ALPHA_PARAM_H
diff --git a/arch/alpha/include/uapi/asm/poll.h b/arch/alpha/include/uapi/asm/poll.h
index c98509d3149e..b7132a305a47 100644
--- a/arch/alpha/include/uapi/asm/poll.h
+++ b/arch/alpha/include/uapi/asm/poll.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/poll.h>
diff --git a/arch/alpha/include/uapi/asm/posix_types.h b/arch/alpha/include/uapi/asm/posix_types.h
index 5a8a48320efe..04f1ea57505b 100644
--- a/arch/alpha/include/uapi/asm/posix_types.h
+++ b/arch/alpha/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_POSIX_TYPES_H
#define _ALPHA_POSIX_TYPES_H
diff --git a/arch/alpha/include/uapi/asm/ptrace.h b/arch/alpha/include/uapi/asm/ptrace.h
index 5ce83fa9a05b..1dfd065e45b1 100644
--- a/arch/alpha/include/uapi/asm/ptrace.h
+++ b/arch/alpha/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASMAXP_PTRACE_H
#define _UAPI_ASMAXP_PTRACE_H
diff --git a/arch/alpha/include/uapi/asm/reg.h b/arch/alpha/include/uapi/asm/reg.h
index 86ff916fb069..2652f3a385f7 100644
--- a/arch/alpha/include/uapi/asm/reg.h
+++ b/arch/alpha/include/uapi/asm/reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __reg_h__
#define __reg_h__
diff --git a/arch/alpha/include/uapi/asm/regdef.h b/arch/alpha/include/uapi/asm/regdef.h
index 142df9c4f8b8..cc99df0c60a5 100644
--- a/arch/alpha/include/uapi/asm/regdef.h
+++ b/arch/alpha/include/uapi/asm/regdef.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __alpha_regdef_h__
#define __alpha_regdef_h__
diff --git a/arch/alpha/include/uapi/asm/resource.h b/arch/alpha/include/uapi/asm/resource.h
index c10874ff5973..362423ffe10b 100644
--- a/arch/alpha/include/uapi/asm/resource.h
+++ b/arch/alpha/include/uapi/asm/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_RESOURCE_H
#define _ALPHA_RESOURCE_H
diff --git a/arch/alpha/include/uapi/asm/sembuf.h b/arch/alpha/include/uapi/asm/sembuf.h
index 7b38b1534784..f28ffa668b2f 100644
--- a/arch/alpha/include/uapi/asm/sembuf.h
+++ b/arch/alpha/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_SEMBUF_H
#define _ALPHA_SEMBUF_H
diff --git a/arch/alpha/include/uapi/asm/setup.h b/arch/alpha/include/uapi/asm/setup.h
index b50014b30909..13b7ee465b0e 100644
--- a/arch/alpha/include/uapi/asm/setup.h
+++ b/arch/alpha/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ALPHA_SETUP_H
#define __ALPHA_SETUP_H
diff --git a/arch/alpha/include/uapi/asm/shmbuf.h b/arch/alpha/include/uapi/asm/shmbuf.h
index 37ee84f05085..7e041ca2eb40 100644
--- a/arch/alpha/include/uapi/asm/shmbuf.h
+++ b/arch/alpha/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_SHMBUF_H
#define _ALPHA_SHMBUF_H
diff --git a/arch/alpha/include/uapi/asm/sigcontext.h b/arch/alpha/include/uapi/asm/sigcontext.h
index 323cdb026198..5428c42567e6 100644
--- a/arch/alpha/include/uapi/asm/sigcontext.h
+++ b/arch/alpha/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASMAXP_SIGCONTEXT_H
#define _ASMAXP_SIGCONTEXT_H
diff --git a/arch/alpha/include/uapi/asm/siginfo.h b/arch/alpha/include/uapi/asm/siginfo.h
index 70494d1d8f29..0cf3b527b274 100644
--- a/arch/alpha/include/uapi/asm/siginfo.h
+++ b/arch/alpha/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_SIGINFO_H
#define _ALPHA_SIGINFO_H
diff --git a/arch/alpha/include/uapi/asm/signal.h b/arch/alpha/include/uapi/asm/signal.h
index dd4ca4bcbb4a..74c750bf1c1a 100644
--- a/arch/alpha/include/uapi/asm/signal.h
+++ b/arch/alpha/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASMAXP_SIGNAL_H
#define _UAPI_ASMAXP_SIGNAL_H
diff --git a/arch/alpha/include/uapi/asm/socket.h b/arch/alpha/include/uapi/asm/socket.h
index c6133a045352..be14f16149d5 100644
--- a/arch/alpha/include/uapi/asm/socket.h
+++ b/arch/alpha/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_SOCKET_H
#define _UAPI_ASM_SOCKET_H
diff --git a/arch/alpha/include/uapi/asm/sockios.h b/arch/alpha/include/uapi/asm/sockios.h
index 7932c7ab4a4d..ba287e4b01bf 100644
--- a/arch/alpha/include/uapi/asm/sockios.h
+++ b/arch/alpha/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_ALPHA_SOCKIOS_H
#define _ASM_ALPHA_SOCKIOS_H
diff --git a/arch/alpha/include/uapi/asm/stat.h b/arch/alpha/include/uapi/asm/stat.h
index 07ad3e6b3f3e..3f454fbd307a 100644
--- a/arch/alpha/include/uapi/asm/stat.h
+++ b/arch/alpha/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_STAT_H
#define _ALPHA_STAT_H
diff --git a/arch/alpha/include/uapi/asm/statfs.h b/arch/alpha/include/uapi/asm/statfs.h
index ccd2e186bfd8..95852a4f576d 100644
--- a/arch/alpha/include/uapi/asm/statfs.h
+++ b/arch/alpha/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_STATFS_H
#define _ALPHA_STATFS_H
diff --git a/arch/alpha/include/uapi/asm/swab.h b/arch/alpha/include/uapi/asm/swab.h
index 4d682b16c7c4..1cc70d2727f7 100644
--- a/arch/alpha/include/uapi/asm/swab.h
+++ b/arch/alpha/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_SWAB_H
#define _ALPHA_SWAB_H
diff --git a/arch/alpha/include/uapi/asm/sysinfo.h b/arch/alpha/include/uapi/asm/sysinfo.h
index 0b80e79d75e5..188ea76c7f2f 100644
--- a/arch/alpha/include/uapi/asm/sysinfo.h
+++ b/arch/alpha/include/uapi/asm/sysinfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-alpha/sysinfo.h
*/
diff --git a/arch/alpha/include/uapi/asm/termbits.h b/arch/alpha/include/uapi/asm/termbits.h
index 879dd3589921..05e0398a83a6 100644
--- a/arch/alpha/include/uapi/asm/termbits.h
+++ b/arch/alpha/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ALPHA_TERMBITS_H
#define _ALPHA_TERMBITS_H
diff --git a/arch/alpha/include/uapi/asm/termios.h b/arch/alpha/include/uapi/asm/termios.h
index 580ed1e4854c..e1b981222a24 100644
--- a/arch/alpha/include/uapi/asm/termios.h
+++ b/arch/alpha/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ALPHA_TERMIOS_H
#define _UAPI_ALPHA_TERMIOS_H
diff --git a/arch/alpha/include/uapi/asm/types.h b/arch/alpha/include/uapi/asm/types.h
index 8d1024d7be05..6c3d49938126 100644
--- a/arch/alpha/include/uapi/asm/types.h
+++ b/arch/alpha/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ALPHA_TYPES_H
#define _UAPI_ALPHA_TYPES_H
diff --git a/arch/alpha/include/uapi/asm/unistd.h b/arch/alpha/include/uapi/asm/unistd.h
index 53de540e39a7..e153ca6e15d6 100644
--- a/arch/alpha/include/uapi/asm/unistd.h
+++ b/arch/alpha/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ALPHA_UNISTD_H
#define _UAPI_ALPHA_UNISTD_H
diff --git a/arch/alpha/kernel/Makefile b/arch/alpha/kernel/Makefile
index 8ce13d7a2ad3..bf7b41fa7b01 100644
--- a/arch/alpha/kernel/Makefile
+++ b/arch/alpha/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/alpha/kernel/asm-offsets.c b/arch/alpha/kernel/asm-offsets.c
index 6ff8886e7e22..2e125e5c1508 100644
--- a/arch/alpha/kernel/asm-offsets.c
+++ b/arch/alpha/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generate definitions needed by assembly language modules.
* This code generates raw asm output which is post-processed to extract
diff --git a/arch/alpha/kernel/binfmt_loader.c b/arch/alpha/kernel/binfmt_loader.c
index 9525660c93c0..a8d0d6e06526 100644
--- a/arch/alpha/kernel/binfmt_loader.c
+++ b/arch/alpha/kernel/binfmt_loader.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/file.h>
diff --git a/arch/alpha/kernel/console.c b/arch/alpha/kernel/console.c
index 6a61deed4a85..8e9a41966881 100644
--- a/arch/alpha/kernel/console.c
+++ b/arch/alpha/kernel/console.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/console.c
*
diff --git a/arch/alpha/kernel/core_apecs.c b/arch/alpha/kernel/core_apecs.c
index 708c831efa76..1bf3eef34c22 100644
--- a/arch/alpha/kernel/core_apecs.c
+++ b/arch/alpha/kernel/core_apecs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_apecs.c
*
diff --git a/arch/alpha/kernel/core_cia.c b/arch/alpha/kernel/core_cia.c
index c44339e176c1..4b38386f6e62 100644
--- a/arch/alpha/kernel/core_cia.c
+++ b/arch/alpha/kernel/core_cia.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_cia.c
*
diff --git a/arch/alpha/kernel/core_irongate.c b/arch/alpha/kernel/core_irongate.c
index 83d0a359a1b2..aec757250e07 100644
--- a/arch/alpha/kernel/core_irongate.c
+++ b/arch/alpha/kernel/core_irongate.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_irongate.c
*
diff --git a/arch/alpha/kernel/core_lca.c b/arch/alpha/kernel/core_lca.c
index cb2801cfd3df..81c0c43635b0 100644
--- a/arch/alpha/kernel/core_lca.c
+++ b/arch/alpha/kernel/core_lca.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_lca.c
*
diff --git a/arch/alpha/kernel/core_marvel.c b/arch/alpha/kernel/core_marvel.c
index b10c316475dd..bdebb8c206f1 100644
--- a/arch/alpha/kernel/core_marvel.c
+++ b/arch/alpha/kernel/core_marvel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_marvel.c
*
diff --git a/arch/alpha/kernel/core_mcpcia.c b/arch/alpha/kernel/core_mcpcia.c
index da7bcc372f16..b1549db54260 100644
--- a/arch/alpha/kernel/core_mcpcia.c
+++ b/arch/alpha/kernel/core_mcpcia.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_mcpcia.c
*
diff --git a/arch/alpha/kernel/core_polaris.c b/arch/alpha/kernel/core_polaris.c
index c5a271d37abd..75d622d96ff2 100644
--- a/arch/alpha/kernel/core_polaris.c
+++ b/arch/alpha/kernel/core_polaris.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_polaris.c
*
diff --git a/arch/alpha/kernel/core_t2.c b/arch/alpha/kernel/core_t2.c
index 3ada4f7b085d..2c00b61ca379 100644
--- a/arch/alpha/kernel/core_t2.c
+++ b/arch/alpha/kernel/core_t2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_t2.c
*
diff --git a/arch/alpha/kernel/core_titan.c b/arch/alpha/kernel/core_titan.c
index b532d925443d..132b06bdf903 100644
--- a/arch/alpha/kernel/core_titan.c
+++ b/arch/alpha/kernel/core_titan.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_titan.c
*
diff --git a/arch/alpha/kernel/core_tsunami.c b/arch/alpha/kernel/core_tsunami.c
index 61893d7bdda5..e7c956ea46b6 100644
--- a/arch/alpha/kernel/core_tsunami.c
+++ b/arch/alpha/kernel/core_tsunami.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_tsunami.c
*
diff --git a/arch/alpha/kernel/core_wildfire.c b/arch/alpha/kernel/core_wildfire.c
index 7e072443d7fd..cad36fc6ed7d 100644
--- a/arch/alpha/kernel/core_wildfire.c
+++ b/arch/alpha/kernel/core_wildfire.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/core_wildfire.c
*
diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S
index 98703d99b565..d92abb01c249 100644
--- a/arch/alpha/kernel/entry.S
+++ b/arch/alpha/kernel/entry.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/kernel/entry.S
*
diff --git a/arch/alpha/kernel/err_common.c b/arch/alpha/kernel/err_common.c
index 13d53b1c9657..94e1b3dcf6d4 100644
--- a/arch/alpha/kernel/err_common.c
+++ b/arch/alpha/kernel/err_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/err_common.c
*
diff --git a/arch/alpha/kernel/err_ev6.c b/arch/alpha/kernel/err_ev6.c
index 51267ac5729b..8144f2045b5b 100644
--- a/arch/alpha/kernel/err_ev6.c
+++ b/arch/alpha/kernel/err_ev6.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/err_ev6.c
*
diff --git a/arch/alpha/kernel/err_ev7.c b/arch/alpha/kernel/err_ev7.c
index d738a67112d4..565de1acf1f5 100644
--- a/arch/alpha/kernel/err_ev7.c
+++ b/arch/alpha/kernel/err_ev7.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/err_ev7.c
*
diff --git a/arch/alpha/kernel/err_impl.h b/arch/alpha/kernel/err_impl.h
index ae529c416037..737b958a586d 100644
--- a/arch/alpha/kernel/err_impl.h
+++ b/arch/alpha/kernel/err_impl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/alpha/kernel/err_impl.h
*
diff --git a/arch/alpha/kernel/err_marvel.c b/arch/alpha/kernel/err_marvel.c
index ae54ad91e18f..c0c0ccefc467 100644
--- a/arch/alpha/kernel/err_marvel.c
+++ b/arch/alpha/kernel/err_marvel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/err_marvel.c
*
diff --git a/arch/alpha/kernel/err_titan.c b/arch/alpha/kernel/err_titan.c
index 14b26c466c89..0ffb2feea42a 100644
--- a/arch/alpha/kernel/err_titan.c
+++ b/arch/alpha/kernel/err_titan.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/err_titan.c
*
diff --git a/arch/alpha/kernel/es1888.c b/arch/alpha/kernel/es1888.c
index d584c85fea7a..297476bb08fb 100644
--- a/arch/alpha/kernel/es1888.c
+++ b/arch/alpha/kernel/es1888.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/es1888.c
*
diff --git a/arch/alpha/kernel/gct.c b/arch/alpha/kernel/gct.c
index c0c7155448e0..8ac0088dca54 100644
--- a/arch/alpha/kernel/gct.c
+++ b/arch/alpha/kernel/gct.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/gct.c
*/
diff --git a/arch/alpha/kernel/head.S b/arch/alpha/kernel/head.S
index c352499ab9f8..bb48a8ae4e79 100644
--- a/arch/alpha/kernel/head.S
+++ b/arch/alpha/kernel/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/kernel/head.S
*
diff --git a/arch/alpha/kernel/io.c b/arch/alpha/kernel/io.c
index 19c5875ab398..3e3d49c254c5 100644
--- a/arch/alpha/kernel/io.c
+++ b/arch/alpha/kernel/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Alpha IO and memory functions.
*/
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index 2f26ae74b61a..f6d2946edbd2 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/irq.c
*
diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c
index 1c8625cb0e25..da3e10d5f7fe 100644
--- a/arch/alpha/kernel/irq_alpha.c
+++ b/arch/alpha/kernel/irq_alpha.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Alpha specific irq code.
*/
diff --git a/arch/alpha/kernel/irq_i8259.c b/arch/alpha/kernel/irq_i8259.c
index e1861c77dabc..5d54c076a8ae 100644
--- a/arch/alpha/kernel/irq_i8259.c
+++ b/arch/alpha/kernel/irq_i8259.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/irq_i8259.c
*
diff --git a/arch/alpha/kernel/irq_impl.h b/arch/alpha/kernel/irq_impl.h
index d507a234b05d..16f2b0276f3a 100644
--- a/arch/alpha/kernel/irq_impl.h
+++ b/arch/alpha/kernel/irq_impl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/alpha/kernel/irq_impl.h
*
diff --git a/arch/alpha/kernel/irq_pyxis.c b/arch/alpha/kernel/irq_pyxis.c
index 13c97a5b31e8..a968b10e687d 100644
--- a/arch/alpha/kernel/irq_pyxis.c
+++ b/arch/alpha/kernel/irq_pyxis.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/irq_pyxis.c
*
diff --git a/arch/alpha/kernel/irq_srm.c b/arch/alpha/kernel/irq_srm.c
index a79fa30e7552..bfacd6a06194 100644
--- a/arch/alpha/kernel/irq_srm.c
+++ b/arch/alpha/kernel/irq_srm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Handle interrupts from the SRM, assuming no additional weirdness.
*/
diff --git a/arch/alpha/kernel/machvec_impl.h b/arch/alpha/kernel/machvec_impl.h
index b7d69604b6d2..38f045ec5cd2 100644
--- a/arch/alpha/kernel/machvec_impl.h
+++ b/arch/alpha/kernel/machvec_impl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/alpha/kernel/machvec_impl.h
*
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index df0d0a5e9353..ce3a675c0c4b 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/osf_sys.c
*
diff --git a/arch/alpha/kernel/pc873xx.c b/arch/alpha/kernel/pc873xx.c
index 27dcbff85613..63aee5d86e02 100644
--- a/arch/alpha/kernel/pc873xx.c
+++ b/arch/alpha/kernel/pc873xx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ioport.h>
#include <asm/io.h>
diff --git a/arch/alpha/kernel/pc873xx.h b/arch/alpha/kernel/pc873xx.h
index 25e16956fe3e..043533027573 100644
--- a/arch/alpha/kernel/pc873xx.h
+++ b/arch/alpha/kernel/pc873xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PC873xx_H_
#define _PC873xx_H_
diff --git a/arch/alpha/kernel/pci-noop.c b/arch/alpha/kernel/pci-noop.c
index 676bab6e3123..b995987b1557 100644
--- a/arch/alpha/kernel/pci-noop.c
+++ b/arch/alpha/kernel/pci-noop.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/pci-noop.c
*
diff --git a/arch/alpha/kernel/pci-sysfs.c b/arch/alpha/kernel/pci-sysfs.c
index cbecd527c696..f94c732fedeb 100644
--- a/arch/alpha/kernel/pci-sysfs.c
+++ b/arch/alpha/kernel/pci-sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/kernel/pci-sysfs.c
*
diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c
index 564114eb85e1..08235bb1f035 100644
--- a/arch/alpha/kernel/pci.c
+++ b/arch/alpha/kernel/pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/pci.c
*
diff --git a/arch/alpha/kernel/pci_impl.h b/arch/alpha/kernel/pci_impl.h
index 2b0ac429f5eb..26231601630e 100644
--- a/arch/alpha/kernel/pci_impl.h
+++ b/arch/alpha/kernel/pci_impl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/alpha/kernel/pci_impl.h
*
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c
index 7fd2329038a3..83b34b9188ea 100644
--- a/arch/alpha/kernel/pci_iommu.c
+++ b/arch/alpha/kernel/pci_iommu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/pci_iommu.c
*/
diff --git a/arch/alpha/kernel/perf_event.c b/arch/alpha/kernel/perf_event.c
index 5c218aa3f3df..a1f6bc7f1e4c 100644
--- a/arch/alpha/kernel/perf_event.c
+++ b/arch/alpha/kernel/perf_event.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Hardware performance events for the Alpha.
*
diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c
index 0b9635040721..74bfb1f2d68e 100644
--- a/arch/alpha/kernel/process.c
+++ b/arch/alpha/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/process.c
*
diff --git a/arch/alpha/kernel/proto.h b/arch/alpha/kernel/proto.h
index da2d6ec9c370..f1fce942fddc 100644
--- a/arch/alpha/kernel/proto.h
+++ b/arch/alpha/kernel/proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/interrupt.h>
#include <linux/io.h>
diff --git a/arch/alpha/kernel/ptrace.c b/arch/alpha/kernel/ptrace.c
index 285a82d491ef..cb8d599e72d6 100644
--- a/arch/alpha/kernel/ptrace.c
+++ b/arch/alpha/kernel/ptrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* ptrace.c */
/* By Ross Biro 1/23/92 */
/* edited by Linus Torvalds */
diff --git a/arch/alpha/kernel/rtc.c b/arch/alpha/kernel/rtc.c
index ceed68c7500b..b3da0dcda47d 100644
--- a/arch/alpha/kernel/rtc.c
+++ b/arch/alpha/kernel/rtc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/rtc.c
*
diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c
index 249229ab4942..5576f7646fb6 100644
--- a/arch/alpha/kernel/setup.c
+++ b/arch/alpha/kernel/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/setup.c
*
diff --git a/arch/alpha/kernel/signal.c b/arch/alpha/kernel/signal.c
index 8129dd92cadc..9ebb3bcbc626 100644
--- a/arch/alpha/kernel/signal.c
+++ b/arch/alpha/kernel/signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/signal.c
*
diff --git a/arch/alpha/kernel/smc37c93x.c b/arch/alpha/kernel/smc37c93x.c
index 6886b834f487..733f08966fd2 100644
--- a/arch/alpha/kernel/smc37c93x.c
+++ b/arch/alpha/kernel/smc37c93x.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SMC 37C93X initialization code
*/
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c
index f6726a746427..d0dccae53ba9 100644
--- a/arch/alpha/kernel/smp.c
+++ b/arch/alpha/kernel/smp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/smp.c
*
diff --git a/arch/alpha/kernel/srmcons.c b/arch/alpha/kernel/srmcons.c
index e9c45b65a905..5da0aec8ce90 100644
--- a/arch/alpha/kernel/srmcons.c
+++ b/arch/alpha/kernel/srmcons.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/srmcons.c
*
diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c
index 118dc6af1805..e56efd5b855f 100644
--- a/arch/alpha/kernel/sys_alcor.c
+++ b/arch/alpha/kernel/sys_alcor.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_alcor.c
*
@@ -181,10 +182,10 @@ alcor_init_irq(void)
* comes in on. This makes interrupt processing much easier.
*/
-static int __init
+static int
alcor_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[7][5] __initdata = {
+ static char irq_tab[7][5] = {
/*INT INTA INTB INTC INTD */
/* note: IDSEL 17 is XLT only */
{16+13, 16+13, 16+13, 16+13, 16+13}, /* IdSel 17, TULIP */
diff --git a/arch/alpha/kernel/sys_cabriolet.c b/arch/alpha/kernel/sys_cabriolet.c
index 4c50f8f40cbb..10bc46a4ec40 100644
--- a/arch/alpha/kernel/sys_cabriolet.c
+++ b/arch/alpha/kernel/sys_cabriolet.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_cabriolet.c
*
@@ -173,10 +174,10 @@ pc164_init_irq(void)
* because it is the Saturn IO (SIO) PCI/ISA Bridge Chip.
*/
-static inline int __init
+static inline int
eb66p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[5][5] __initdata = {
+ static char irq_tab[5][5] = {
/*INT INTA INTB INTC INTD */
{16+0, 16+0, 16+5, 16+9, 16+13}, /* IdSel 6, slot 0, J25 */
{16+1, 16+1, 16+6, 16+10, 16+14}, /* IdSel 7, slot 1, J26 */
@@ -203,10 +204,10 @@ eb66p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
* because it is the Saturn IO (SIO) PCI/ISA Bridge Chip.
*/
-static inline int __init
+static inline int
cabriolet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[5][5] __initdata = {
+ static char irq_tab[5][5] = {
/*INT INTA INTB INTC INTD */
{ 16+2, 16+2, 16+7, 16+11, 16+15}, /* IdSel 5, slot 2, J21 */
{ 16+0, 16+0, 16+5, 16+9, 16+13}, /* IdSel 6, slot 0, J19 */
@@ -287,10 +288,10 @@ cia_cab_init_pci(void)
*
*/
-static inline int __init
+static inline int
alphapc164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[7][5] __initdata = {
+ static char irq_tab[7][5] = {
/*INT INTA INTB INTC INTD */
{ 16+2, 16+2, 16+9, 16+13, 16+17}, /* IdSel 5, slot 2, J20 */
{ 16+0, 16+0, 16+7, 16+11, 16+15}, /* IdSel 6, slot 0, J29 */
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c
index 6c35159bc00e..d33508621820 100644
--- a/arch/alpha/kernel/sys_dp264.c
+++ b/arch/alpha/kernel/sys_dp264.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_dp264.c
*
@@ -356,7 +357,7 @@ clipper_init_irq(void)
* 10 64 bit PCI option slot 3 (not bus 0)
*/
-static int __init
+static int
isa_irq_fixup(const struct pci_dev *dev, int irq)
{
u8 irq8;
@@ -372,10 +373,10 @@ isa_irq_fixup(const struct pci_dev *dev, int irq)
return irq8 & 0xf;
}
-static int __init
+static int
dp264_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[6][5] __initdata = {
+ static char irq_tab[6][5] = {
/*INT INTA INTB INTC INTD */
{ -1, -1, -1, -1, -1}, /* IdSel 5 ISA Bridge */
{ 16+ 3, 16+ 3, 16+ 2, 16+ 2, 16+ 2}, /* IdSel 6 SCSI builtin*/
@@ -394,10 +395,10 @@ dp264_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return isa_irq_fixup(dev, irq);
}
-static int __init
+static int
monet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[13][5] __initdata = {
+ static char irq_tab[13][5] = {
/*INT INTA INTB INTC INTD */
{ 45, 45, 45, 45, 45}, /* IdSel 3 21143 PCI1 */
{ -1, -1, -1, -1, -1}, /* IdSel 4 unused */
@@ -423,7 +424,7 @@ monet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
}
-static u8 __init
+static u8
monet_swizzle(struct pci_dev *dev, u8 *pinp)
{
struct pci_controller *hose = dev->sysdata;
@@ -456,10 +457,10 @@ monet_swizzle(struct pci_dev *dev, u8 *pinp)
return slot;
}
-static int __init
+static int
webbrick_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[13][5] __initdata = {
+ static char irq_tab[13][5] = {
/*INT INTA INTB INTC INTD */
{ -1, -1, -1, -1, -1}, /* IdSel 7 ISA Bridge */
{ -1, -1, -1, -1, -1}, /* IdSel 8 unused */
@@ -478,10 +479,10 @@ webbrick_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
}
-static int __init
+static int
clipper_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[7][5] __initdata = {
+ static char irq_tab[7][5] = {
/*INT INTA INTB INTC INTD */
{ 16+ 8, 16+ 8, 16+ 9, 16+10, 16+11}, /* IdSel 1 slot 1 */
{ 16+12, 16+12, 16+13, 16+14, 16+15}, /* IdSel 2 slot 2 */
diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c
index ad40a425e841..5251937ec1b4 100644
--- a/arch/alpha/kernel/sys_eb64p.c
+++ b/arch/alpha/kernel/sys_eb64p.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_eb64p.c
*
@@ -167,10 +168,10 @@ eb64p_init_irq(void)
* comes in on. This makes interrupt processing much easier.
*/
-static int __init
+static int
eb64p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[5][5] __initdata = {
+ static char irq_tab[5][5] = {
/*INT INTA INTB INTC INTD */
{16+7, 16+7, 16+7, 16+7, 16+7}, /* IdSel 5, slot ?, ?? */
{16+0, 16+0, 16+2, 16+4, 16+9}, /* IdSel 6, slot ?, ?? */
diff --git a/arch/alpha/kernel/sys_eiger.c b/arch/alpha/kernel/sys_eiger.c
index 15f42083bdb3..016f79251141 100644
--- a/arch/alpha/kernel/sys_eiger.c
+++ b/arch/alpha/kernel/sys_eiger.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_eiger.c
*
@@ -141,7 +142,7 @@ eiger_init_irq(void)
}
}
-static int __init
+static int
eiger_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
u8 irq_orig;
@@ -158,7 +159,7 @@ eiger_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return irq_orig - 0x80;
}
-static u8 __init
+static u8
eiger_swizzle(struct pci_dev *dev, u8 *pinp)
{
struct pci_controller *hose = dev->sysdata;
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c
index 608f2a7fa0a3..d0d44f543d77 100644
--- a/arch/alpha/kernel/sys_jensen.c
+++ b/arch/alpha/kernel/sys_jensen.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_jensen.c
*
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c
index 3e533920371f..8d34cf6e002a 100644
--- a/arch/alpha/kernel/sys_marvel.c
+++ b/arch/alpha/kernel/sys_marvel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_marvel.c
*
diff --git a/arch/alpha/kernel/sys_miata.c b/arch/alpha/kernel/sys_miata.c
index d5b9776a608d..6fa07dc5339d 100644
--- a/arch/alpha/kernel/sys_miata.c
+++ b/arch/alpha/kernel/sys_miata.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_miata.c
*
@@ -149,10 +150,10 @@ miata_init_irq(void)
* comes in on. This makes interrupt processing much easier.
*/
-static int __init
+static int
miata_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[18][5] __initdata = {
+ static char irq_tab[18][5] = {
/*INT INTA INTB INTC INTD */
{16+ 8, 16+ 8, 16+ 8, 16+ 8, 16+ 8}, /* IdSel 14, DC21142 */
{ -1, -1, -1, -1, -1}, /* IdSel 15, EIDE */
@@ -196,7 +197,7 @@ miata_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return COMMON_TABLE_LOOKUP;
}
-static u8 __init
+static u8
miata_swizzle(struct pci_dev *dev, u8 *pinp)
{
int slot, pin = *pinp;
diff --git a/arch/alpha/kernel/sys_mikasa.c b/arch/alpha/kernel/sys_mikasa.c
index 5e82dc1ad6f2..3af4f94113e1 100644
--- a/arch/alpha/kernel/sys_mikasa.c
+++ b/arch/alpha/kernel/sys_mikasa.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_mikasa.c
*
@@ -145,10 +146,10 @@ mikasa_init_irq(void)
* comes in on. This makes interrupt processing much easier.
*/
-static int __init
+static int
mikasa_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[8][5] __initdata = {
+ static char irq_tab[8][5] = {
/*INT INTA INTB INTC INTD */
{16+12, 16+12, 16+12, 16+12, 16+12}, /* IdSel 17, SCSI */
{ -1, -1, -1, -1, -1}, /* IdSel 18, PCEB */
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c
index 8ae04a121186..239dc0e601d5 100644
--- a/arch/alpha/kernel/sys_nautilus.c
+++ b/arch/alpha/kernel/sys_nautilus.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_nautilus.c
*
@@ -62,7 +63,7 @@ nautilus_init_irq(void)
common_init_isa_dma();
}
-static int __init
+static int
nautilus_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
/* Preserve the IRQ set up by the console. */
diff --git a/arch/alpha/kernel/sys_noritake.c b/arch/alpha/kernel/sys_noritake.c
index 063e594fd969..b106f327f765 100644
--- a/arch/alpha/kernel/sys_noritake.c
+++ b/arch/alpha/kernel/sys_noritake.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_noritake.c
*
@@ -193,10 +194,10 @@ noritake_init_irq(void)
* comes in on. This makes interrupt processing much easier.
*/
-static int __init
+static int
noritake_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[15][5] __initdata = {
+ static char irq_tab[15][5] = {
/*INT INTA INTB INTC INTD */
/* note: IDSELs 16, 17, and 25 are CORELLE only */
{ 16+1, 16+1, 16+1, 16+1, 16+1}, /* IdSel 16, QLOGIC */
@@ -221,7 +222,7 @@ noritake_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return COMMON_TABLE_LOOKUP;
}
-static u8 __init
+static u8
noritake_swizzle(struct pci_dev *dev, u8 *pinp)
{
int slot, pin = *pinp;
diff --git a/arch/alpha/kernel/sys_rawhide.c b/arch/alpha/kernel/sys_rawhide.c
index dfd510ae5d8c..b76f65d0e8b5 100644
--- a/arch/alpha/kernel/sys_rawhide.c
+++ b/arch/alpha/kernel/sys_rawhide.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_rawhide.c
*
@@ -221,10 +222,10 @@ rawhide_init_irq(void)
*
*/
-static int __init
+static int
rawhide_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[5][5] __initdata = {
+ static char irq_tab[5][5] = {
/*INT INTA INTB INTC INTD */
{ 16+16, 16+16, 16+16, 16+16, 16+16}, /* IdSel 1 SCSI PCI 1 */
{ 16+ 0, 16+ 0, 16+ 1, 16+ 2, 16+ 3}, /* IdSel 2 slot 2 */
diff --git a/arch/alpha/kernel/sys_ruffian.c b/arch/alpha/kernel/sys_ruffian.c
index a3f485257170..07830cccabf9 100644
--- a/arch/alpha/kernel/sys_ruffian.c
+++ b/arch/alpha/kernel/sys_ruffian.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_ruffian.c
*
@@ -117,10 +118,10 @@ ruffian_kill_arch (int mode)
*
*/
-static int __init
+static int
ruffian_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[11][5] __initdata = {
+ static char irq_tab[11][5] = {
/*INT INTA INTB INTC INTD */
{-1, -1, -1, -1, -1}, /* IdSel 13, 21052 */
{-1, -1, -1, -1, -1}, /* IdSel 14, SIO */
@@ -139,7 +140,7 @@ ruffian_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return COMMON_TABLE_LOOKUP;
}
-static u8 __init
+static u8
ruffian_swizzle(struct pci_dev *dev, u8 *pinp)
{
int slot, pin = *pinp;
diff --git a/arch/alpha/kernel/sys_rx164.c b/arch/alpha/kernel/sys_rx164.c
index 08ee737d4fba..a3db719d3c38 100644
--- a/arch/alpha/kernel/sys_rx164.c
+++ b/arch/alpha/kernel/sys_rx164.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_rx164.c
*
@@ -142,7 +143,7 @@ rx164_init_irq(void)
*
*/
-static int __init
+static int
rx164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
#if 0
@@ -156,7 +157,7 @@ rx164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{ 16+1, 16+1, 16+6, 16+11, 16+16}, /* IdSel 10, slot 4 */
};
#else
- static char irq_tab[6][5] __initdata = {
+ static char irq_tab[6][5] = {
/*INT INTA INTB INTC INTD */
{ 16+0, 16+0, 16+6, 16+11, 16+16}, /* IdSel 5, slot 0 */
{ 16+1, 16+1, 16+7, 16+12, 16+17}, /* IdSel 6, slot 1 */
diff --git a/arch/alpha/kernel/sys_sable.c b/arch/alpha/kernel/sys_sable.c
index 8a0aa6d67b53..3cf0d32da5d8 100644
--- a/arch/alpha/kernel/sys_sable.c
+++ b/arch/alpha/kernel/sys_sable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_sable.c
*
@@ -192,10 +193,10 @@ sable_init_irq(void)
* with the values in the irq swizzling tables above.
*/
-static int __init
+static int
sable_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[9][5] __initdata = {
+ static char irq_tab[9][5] = {
/*INT INTA INTB INTC INTD */
{ 32+0, 32+0, 32+0, 32+0, 32+0}, /* IdSel 0, TULIP */
{ 32+1, 32+1, 32+1, 32+1, 32+1}, /* IdSel 1, SCSI */
@@ -374,10 +375,10 @@ lynx_init_irq(void)
* with the values in the irq swizzling tables above.
*/
-static int __init
+static int
lynx_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[19][5] __initdata = {
+ static char irq_tab[19][5] = {
/*INT INTA INTB INTC INTD */
{ -1, -1, -1, -1, -1}, /* IdSel 13, PCEB */
{ -1, -1, -1, -1, -1}, /* IdSel 14, PPB */
@@ -404,7 +405,7 @@ lynx_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return COMMON_TABLE_LOOKUP;
}
-static u8 __init
+static u8
lynx_swizzle(struct pci_dev *dev, u8 *pinp)
{
int slot, pin = *pinp;
diff --git a/arch/alpha/kernel/sys_sio.c b/arch/alpha/kernel/sys_sio.c
index febd24eba7a6..37bd6d9b8eb9 100644
--- a/arch/alpha/kernel/sys_sio.c
+++ b/arch/alpha/kernel/sys_sio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_sio.c
*
@@ -144,7 +145,7 @@ sio_fixup_irq_levels(unsigned int level_bits)
outb((level_bits >> 8) & 0xff, 0x4d1);
}
-static inline int __init
+static inline int
noname_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
/*
@@ -165,7 +166,7 @@ noname_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
* that they use the default INTA line, if they are interrupt
* driven at all).
*/
- static char irq_tab[][5] __initdata = {
+ static char irq_tab[][5] = {
/*INT A B C D */
{ 3, 3, 3, 3, 3}, /* idsel 6 (53c810) */
{-1, -1, -1, -1, -1}, /* idsel 7 (SIO: PCI/ISA bridge) */
@@ -183,10 +184,10 @@ noname_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return irq >= 0 ? tmp : -1;
}
-static inline int __init
+static inline int
p2k_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[][5] __initdata = {
+ static char irq_tab[][5] = {
/*INT A B C D */
{ 0, 0, -1, -1, -1}, /* idsel 6 (53c810) */
{-1, -1, -1, -1, -1}, /* idsel 7 (SIO: PCI/ISA bridge) */
diff --git a/arch/alpha/kernel/sys_sx164.c b/arch/alpha/kernel/sys_sx164.c
index d063b360efed..1ec638a2746a 100644
--- a/arch/alpha/kernel/sys_sx164.c
+++ b/arch/alpha/kernel/sys_sx164.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_sx164.c
*
@@ -94,10 +95,10 @@ sx164_init_irq(void)
* 9 32 bit PCI option slot 3
*/
-static int __init
+static int
sx164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[5][5] __initdata = {
+ static char irq_tab[5][5] = {
/*INT INTA INTB INTC INTD */
{ 16+ 9, 16+ 9, 16+13, 16+17, 16+21}, /* IdSel 5 slot 2 J17 */
{ 16+11, 16+11, 16+15, 16+19, 16+23}, /* IdSel 6 slot 0 J19 */
diff --git a/arch/alpha/kernel/sys_takara.c b/arch/alpha/kernel/sys_takara.c
index dd0f1eae3c68..e230c6864088 100644
--- a/arch/alpha/kernel/sys_takara.c
+++ b/arch/alpha/kernel/sys_takara.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_takara.c
*
@@ -155,10 +156,10 @@ takara_init_irq(void)
* assign it whatever the hell IRQ we like and it doesn't matter.
*/
-static int __init
+static int
takara_map_irq_srm(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[15][5] __initdata = {
+ static char irq_tab[15][5] = {
{ 16+3, 16+3, 16+3, 16+3, 16+3}, /* slot 6 == device 3 */
{ 16+2, 16+2, 16+2, 16+2, 16+2}, /* slot 7 == device 2 */
{ 16+1, 16+1, 16+1, 16+1, 16+1}, /* slot 8 == device 1 */
@@ -210,7 +211,7 @@ takara_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return COMMON_TABLE_LOOKUP;
}
-static u8 __init
+static u8
takara_swizzle(struct pci_dev *dev, u8 *pinp)
{
int slot = PCI_SLOT(dev->devfn);
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c
index a53cf03f49d5..c8390d8de140 100644
--- a/arch/alpha/kernel/sys_titan.c
+++ b/arch/alpha/kernel/sys_titan.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_titan.c
*
diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c
index ee1874887776..8e64052811ab 100644
--- a/arch/alpha/kernel/sys_wildfire.c
+++ b/arch/alpha/kernel/sys_wildfire.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/sys_wildfire.c
*
@@ -288,10 +289,10 @@ wildfire_device_interrupt(unsigned long vector)
* 7 64 bit PCI 1 option slot 7
*/
-static int __init
+static int
wildfire_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- static char irq_tab[8][5] __initdata = {
+ static char irq_tab[8][5] = {
/*INT INTA INTB INTC INTD */
{ -1, -1, -1, -1, -1}, /* IdSel 0 ISA Bridge */
{ 36, 36, 36+1, 36+2, 36+3}, /* IdSel 1 SCSI builtin */
diff --git a/arch/alpha/kernel/systbls.S b/arch/alpha/kernel/systbls.S
index 5b4514abb234..1374e591511f 100644
--- a/arch/alpha/kernel/systbls.S
+++ b/arch/alpha/kernel/systbls.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/kernel/systbls.S
*
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c
index 3bfe058d75d9..0069360697ee 100644
--- a/arch/alpha/kernel/time.c
+++ b/arch/alpha/kernel/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/kernel/time.c
*
diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c
index 49d3b1e63ce5..4bd99a7b1c41 100644
--- a/arch/alpha/kernel/traps.c
+++ b/arch/alpha/kernel/traps.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/kernel/traps.c
*
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S
index cebecfb76fbf..c4b5ceceab52 100644
--- a/arch/alpha/kernel/vmlinux.lds.S
+++ b/arch/alpha/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/vmlinux.lds.h>
#include <asm/thread_info.h>
#include <asm/cache.h>
diff --git a/arch/alpha/lib/Makefile b/arch/alpha/lib/Makefile
index a80815960364..04f9729de57c 100644
--- a/arch/alpha/lib/Makefile
+++ b/arch/alpha/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for alpha-specific library files..
#
diff --git a/arch/alpha/lib/callback_srm.S b/arch/alpha/lib/callback_srm.S
index 6093addc931a..b13c4a231f1b 100644
--- a/arch/alpha/lib/callback_srm.S
+++ b/arch/alpha/lib/callback_srm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/callback_srm.S
*/
diff --git a/arch/alpha/lib/checksum.c b/arch/alpha/lib/checksum.c
index b57f8007db14..3f35c3ed6948 100644
--- a/arch/alpha/lib/checksum.c
+++ b/arch/alpha/lib/checksum.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/lib/checksum.c
*
diff --git a/arch/alpha/lib/clear_page.S b/arch/alpha/lib/clear_page.S
index 263d7393c0e7..ce02de7b0493 100644
--- a/arch/alpha/lib/clear_page.S
+++ b/arch/alpha/lib/clear_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/clear_page.S
*
diff --git a/arch/alpha/lib/clear_user.S b/arch/alpha/lib/clear_user.S
index 006f469fef73..db6c6ca45896 100644
--- a/arch/alpha/lib/clear_user.S
+++ b/arch/alpha/lib/clear_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/clear_user.S
* Contributed by Richard Henderson <rth@tamu.edu>
diff --git a/arch/alpha/lib/copy_page.S b/arch/alpha/lib/copy_page.S
index 2ee0bd0508c5..5439a30c77d0 100644
--- a/arch/alpha/lib/copy_page.S
+++ b/arch/alpha/lib/copy_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/copy_page.S
*
diff --git a/arch/alpha/lib/copy_user.S b/arch/alpha/lib/copy_user.S
index c277a1a4383e..32ab0344b185 100644
--- a/arch/alpha/lib/copy_user.S
+++ b/arch/alpha/lib/copy_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/copy_user.S
*
diff --git a/arch/alpha/lib/csum_ipv6_magic.S b/arch/alpha/lib/csum_ipv6_magic.S
index e74b4544b0cc..c7b213ab01ab 100644
--- a/arch/alpha/lib/csum_ipv6_magic.S
+++ b/arch/alpha/lib/csum_ipv6_magic.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/csum_ipv6_magic.S
* Contributed by Richard Henderson <rth@tamu.edu>
diff --git a/arch/alpha/lib/csum_partial_copy.c b/arch/alpha/lib/csum_partial_copy.c
index ab42afba1720..ddb9c2f376fa 100644
--- a/arch/alpha/lib/csum_partial_copy.c
+++ b/arch/alpha/lib/csum_partial_copy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* csum_partial_copy - do IP checksumming and copy
*
diff --git a/arch/alpha/lib/dbg_current.S b/arch/alpha/lib/dbg_current.S
index e6d071015f9b..be6612131277 100644
--- a/arch/alpha/lib/dbg_current.S
+++ b/arch/alpha/lib/dbg_current.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/dbg_current.S
* Contributed by Richard Henderson (rth@cygnus.com)
diff --git a/arch/alpha/lib/dbg_stackcheck.S b/arch/alpha/lib/dbg_stackcheck.S
index 78f6b924ad8f..b3b6fc94f7f3 100644
--- a/arch/alpha/lib/dbg_stackcheck.S
+++ b/arch/alpha/lib/dbg_stackcheck.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/dbg_stackcheck.S
* Contributed by Richard Henderson (rth@tamu.edu)
diff --git a/arch/alpha/lib/dbg_stackkill.S b/arch/alpha/lib/dbg_stackkill.S
index c1e40a1a43d5..6d9197e52a42 100644
--- a/arch/alpha/lib/dbg_stackkill.S
+++ b/arch/alpha/lib/dbg_stackkill.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/dbg_stackkill.S
* Contributed by Richard Henderson (rth@cygnus.com)
diff --git a/arch/alpha/lib/dec_and_lock.c b/arch/alpha/lib/dec_and_lock.c
index 4221b40167ee..a117707f57fe 100644
--- a/arch/alpha/lib/dec_and_lock.c
+++ b/arch/alpha/lib/dec_and_lock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/lib/dec_and_lock.c
*
diff --git a/arch/alpha/lib/divide.S b/arch/alpha/lib/divide.S
index 1e33bd127621..2b60eb45e50b 100644
--- a/arch/alpha/lib/divide.S
+++ b/arch/alpha/lib/divide.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/divide.S
*
diff --git a/arch/alpha/lib/ev6-clear_page.S b/arch/alpha/lib/ev6-clear_page.S
index abe99e69a194..325864c81586 100644
--- a/arch/alpha/lib/ev6-clear_page.S
+++ b/arch/alpha/lib/ev6-clear_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-clear_page.S
*
diff --git a/arch/alpha/lib/ev6-clear_user.S b/arch/alpha/lib/ev6-clear_user.S
index e179e4757ef8..7e644f83cdf2 100644
--- a/arch/alpha/lib/ev6-clear_user.S
+++ b/arch/alpha/lib/ev6-clear_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-clear_user.S
* 21264 version contributed by Rick Gorton <rick.gorton@alpha-processor.com>
diff --git a/arch/alpha/lib/ev6-copy_page.S b/arch/alpha/lib/ev6-copy_page.S
index 77935061bddb..fd7212c8dcf1 100644
--- a/arch/alpha/lib/ev6-copy_page.S
+++ b/arch/alpha/lib/ev6-copy_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-copy_page.S
*
diff --git a/arch/alpha/lib/ev6-copy_user.S b/arch/alpha/lib/ev6-copy_user.S
index 954ca03ebebe..f3e433754397 100644
--- a/arch/alpha/lib/ev6-copy_user.S
+++ b/arch/alpha/lib/ev6-copy_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-copy_user.S
*
diff --git a/arch/alpha/lib/ev6-csum_ipv6_magic.S b/arch/alpha/lib/ev6-csum_ipv6_magic.S
index de62627ac4fe..9a73f90700a1 100644
--- a/arch/alpha/lib/ev6-csum_ipv6_magic.S
+++ b/arch/alpha/lib/ev6-csum_ipv6_magic.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-csum_ipv6_magic.S
* 21264 version contributed by Rick Gorton <rick.gorton@alpha-processor.com>
diff --git a/arch/alpha/lib/ev6-divide.S b/arch/alpha/lib/ev6-divide.S
index d18dc0e96e3d..137ff1a07356 100644
--- a/arch/alpha/lib/ev6-divide.S
+++ b/arch/alpha/lib/ev6-divide.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-divide.S
*
diff --git a/arch/alpha/lib/ev6-memchr.S b/arch/alpha/lib/ev6-memchr.S
index 419adc53ccb4..56bf9e14eeee 100644
--- a/arch/alpha/lib/ev6-memchr.S
+++ b/arch/alpha/lib/ev6-memchr.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-memchr.S
*
diff --git a/arch/alpha/lib/ev6-memcpy.S b/arch/alpha/lib/ev6-memcpy.S
index b19798b2efc0..ffbd056b6eb2 100644
--- a/arch/alpha/lib/ev6-memcpy.S
+++ b/arch/alpha/lib/ev6-memcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-memcpy.S
* 21264 version by Rick Gorton <rick.gorton@alpha-processor.com>
diff --git a/arch/alpha/lib/ev6-memset.S b/arch/alpha/lib/ev6-memset.S
index fed21c6893e8..316a99aa9efe 100644
--- a/arch/alpha/lib/ev6-memset.S
+++ b/arch/alpha/lib/ev6-memset.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-memset.S
*
diff --git a/arch/alpha/lib/ev6-stxcpy.S b/arch/alpha/lib/ev6-stxcpy.S
index 4643ff2ffc8d..65f5f7310d80 100644
--- a/arch/alpha/lib/ev6-stxcpy.S
+++ b/arch/alpha/lib/ev6-stxcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-stxcpy.S
* 21264 version contributed by Rick Gorton <rick.gorton@alpha-processor.com>
diff --git a/arch/alpha/lib/ev6-stxncpy.S b/arch/alpha/lib/ev6-stxncpy.S
index 1aa6e97e04b5..76da205282ee 100644
--- a/arch/alpha/lib/ev6-stxncpy.S
+++ b/arch/alpha/lib/ev6-stxncpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev6-stxncpy.S
* 21264 version contributed by Rick Gorton <rick.gorton@api-networks.com>
diff --git a/arch/alpha/lib/ev67-strcat.S b/arch/alpha/lib/ev67-strcat.S
index b69f60419be1..ec3096a9e8d4 100644
--- a/arch/alpha/lib/ev67-strcat.S
+++ b/arch/alpha/lib/ev67-strcat.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev67-strcat.S
* 21264 version contributed by Rick Gorton <rick.gorton@alpha-processor.com>
diff --git a/arch/alpha/lib/ev67-strchr.S b/arch/alpha/lib/ev67-strchr.S
index ea8f2f35db9c..fbf89e0b6dc3 100644
--- a/arch/alpha/lib/ev67-strchr.S
+++ b/arch/alpha/lib/ev67-strchr.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev67-strchr.S
* 21264 version contributed by Rick Gorton <rick.gorton@alpha-processor.com>
diff --git a/arch/alpha/lib/ev67-strlen.S b/arch/alpha/lib/ev67-strlen.S
index 736fd41884a8..b73106ffbbc7 100644
--- a/arch/alpha/lib/ev67-strlen.S
+++ b/arch/alpha/lib/ev67-strlen.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev67-strlen.S
* 21264 version by Rick Gorton <rick.gorton@alpha-processor.com>
diff --git a/arch/alpha/lib/ev67-strncat.S b/arch/alpha/lib/ev67-strncat.S
index cd35cbade73a..ceb0ca528789 100644
--- a/arch/alpha/lib/ev67-strncat.S
+++ b/arch/alpha/lib/ev67-strncat.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev67-strncat.S
* 21264 version contributed by Rick Gorton <rick.gorton@api-networks.com>
diff --git a/arch/alpha/lib/ev67-strrchr.S b/arch/alpha/lib/ev67-strrchr.S
index 747455f0328c..7f80e398530f 100644
--- a/arch/alpha/lib/ev67-strrchr.S
+++ b/arch/alpha/lib/ev67-strrchr.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/ev67-strrchr.S
* 21264 version by Rick Gorton <rick.gorton@alpha-processor.com>
diff --git a/arch/alpha/lib/fls.c b/arch/alpha/lib/fls.c
index ddd048c0d825..02e156776645 100644
--- a/arch/alpha/lib/fls.c
+++ b/arch/alpha/lib/fls.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/lib/fls.c
*/
diff --git a/arch/alpha/lib/fpreg.c b/arch/alpha/lib/fpreg.c
index 4aa6dbfa14ee..34fea465645b 100644
--- a/arch/alpha/lib/fpreg.c
+++ b/arch/alpha/lib/fpreg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/lib/fpreg.c
*
diff --git a/arch/alpha/lib/memcpy.c b/arch/alpha/lib/memcpy.c
index 57d9291ad172..cbac3dc6d963 100644
--- a/arch/alpha/lib/memcpy.c
+++ b/arch/alpha/lib/memcpy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/lib/memcpy.c
*
diff --git a/arch/alpha/lib/memmove.S b/arch/alpha/lib/memmove.S
index 6872c85cb5e5..42d1922d0edf 100644
--- a/arch/alpha/lib/memmove.S
+++ b/arch/alpha/lib/memmove.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/memmove.S
*
diff --git a/arch/alpha/lib/memset.S b/arch/alpha/lib/memset.S
index f824969e9e77..00393e30df25 100644
--- a/arch/alpha/lib/memset.S
+++ b/arch/alpha/lib/memset.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/alpha/lib/memset.S
*
diff --git a/arch/alpha/lib/srm_printk.c b/arch/alpha/lib/srm_printk.c
index 31b53c49435e..6276eed76276 100644
--- a/arch/alpha/lib/srm_printk.c
+++ b/arch/alpha/lib/srm_printk.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/lib/srm_printk.c
*/
diff --git a/arch/alpha/lib/srm_puts.c b/arch/alpha/lib/srm_puts.c
index 7b60a6f75a78..df7991f6fc69 100644
--- a/arch/alpha/lib/srm_puts.c
+++ b/arch/alpha/lib/srm_puts.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/alpha/lib/srm_puts.c
*/
diff --git a/arch/alpha/lib/stacktrace.c b/arch/alpha/lib/stacktrace.c
index 5e832161e6d2..62454a7810e2 100644
--- a/arch/alpha/lib/stacktrace.c
+++ b/arch/alpha/lib/stacktrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
typedef unsigned int instr;
diff --git a/arch/alpha/lib/strcat.S b/arch/alpha/lib/strcat.S
index 249837b03d4b..055877dccd27 100644
--- a/arch/alpha/lib/strcat.S
+++ b/arch/alpha/lib/strcat.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/strcat.S
* Contributed by Richard Henderson (rth@tamu.edu)
diff --git a/arch/alpha/lib/strchr.S b/arch/alpha/lib/strchr.S
index 7412a173ea39..17871dd00280 100644
--- a/arch/alpha/lib/strchr.S
+++ b/arch/alpha/lib/strchr.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/strchr.S
* Contributed by Richard Henderson (rth@tamu.edu)
diff --git a/arch/alpha/lib/strcpy.S b/arch/alpha/lib/strcpy.S
index 98deae1e4d08..cb74ad23a90d 100644
--- a/arch/alpha/lib/strcpy.S
+++ b/arch/alpha/lib/strcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/strcpy.S
* Contributed by Richard Henderson (rth@tamu.edu)
diff --git a/arch/alpha/lib/strlen.S b/arch/alpha/lib/strlen.S
index 79c416f71bac..dd882fe4d7e3 100644
--- a/arch/alpha/lib/strlen.S
+++ b/arch/alpha/lib/strlen.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* strlen.S (c) 1995 David Mosberger (davidm@cs.arizona.edu)
*
diff --git a/arch/alpha/lib/strncat.S b/arch/alpha/lib/strncat.S
index 6c29ea60869a..522fee3e26ac 100644
--- a/arch/alpha/lib/strncat.S
+++ b/arch/alpha/lib/strncat.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/strncat.S
* Contributed by Richard Henderson (rth@tamu.edu)
diff --git a/arch/alpha/lib/strncpy.S b/arch/alpha/lib/strncpy.S
index e102cf1567dd..cc57fad8b7ca 100644
--- a/arch/alpha/lib/strncpy.S
+++ b/arch/alpha/lib/strncpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/strncpy.S
* Contributed by Richard Henderson (rth@tamu.edu)
diff --git a/arch/alpha/lib/strrchr.S b/arch/alpha/lib/strrchr.S
index 4bc6cb4b9812..7650ba99b7e2 100644
--- a/arch/alpha/lib/strrchr.S
+++ b/arch/alpha/lib/strrchr.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/strrchr.S
* Contributed by Richard Henderson (rth@tamu.edu)
diff --git a/arch/alpha/lib/stxcpy.S b/arch/alpha/lib/stxcpy.S
index 2a8d51bfc05d..58723b0a36d4 100644
--- a/arch/alpha/lib/stxcpy.S
+++ b/arch/alpha/lib/stxcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/stxcpy.S
* Contributed by Richard Henderson (rth@tamu.edu)
diff --git a/arch/alpha/lib/stxncpy.S b/arch/alpha/lib/stxncpy.S
index 3dece25283a3..011d9091c6e1 100644
--- a/arch/alpha/lib/stxncpy.S
+++ b/arch/alpha/lib/stxncpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/alpha/lib/stxncpy.S
* Contributed by Richard Henderson (rth@tamu.edu)
diff --git a/arch/alpha/lib/udelay.c b/arch/alpha/lib/udelay.c
index f2d81ff38aa6..873648263430 100644
--- a/arch/alpha/lib/udelay.c
+++ b/arch/alpha/lib/udelay.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1993, 2000 Linus Torvalds
*
diff --git a/arch/alpha/math-emu/sfp-util.h b/arch/alpha/math-emu/sfp-util.h
index f53707f77455..ae30f3417522 100644
--- a/arch/alpha/math-emu/sfp-util.h
+++ b/arch/alpha/math-emu/sfp-util.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/types.h>
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
index c25e8827e7cd..cd3c572ee912 100644
--- a/arch/alpha/mm/fault.c
+++ b/arch/alpha/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/mm/fault.c
*
diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c
index 0542e973c73d..9d74520298ab 100644
--- a/arch/alpha/mm/init.c
+++ b/arch/alpha/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/mm/init.c
*
diff --git a/arch/alpha/mm/numa.c b/arch/alpha/mm/numa.c
index d543d71c28b4..a9e86475f169 100644
--- a/arch/alpha/mm/numa.c
+++ b/arch/alpha/mm/numa.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/alpha/mm/numa.c
*
diff --git a/arch/alpha/oprofile/Makefile b/arch/alpha/oprofile/Makefile
index 3473de751b03..79f32820a42f 100644
--- a/arch/alpha/oprofile/Makefile
+++ b/arch/alpha/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -Werror -Wno-sign-compare
obj-$(CONFIG_OPROFILE) += oprofile.o
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index a598641eed98..c84e67fdea09 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -24,7 +24,7 @@ config ARC
select GENERIC_SMP_IDLE_THREAD
select HAVE_ARCH_KGDB
select HAVE_ARCH_TRACEHOOK
- select HAVE_FUTEX_CMPXCHG
+ select HAVE_FUTEX_CMPXCHG if FUTEX
select HAVE_IOREMAP_PROT
select HAVE_KPROBES
select HAVE_KRETPROBES
diff --git a/arch/arc/Kconfig.debug b/arch/arc/Kconfig.debug
index ff6a4b5ce927..03da1a6b3072 100644
--- a/arch/arc/Kconfig.debug
+++ b/arch/arc/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/arc/Makefile b/arch/arc/Makefile
index 3a4b52b7e09d..d37f49d6a27f 100644
--- a/arch/arc/Makefile
+++ b/arch/arc/Makefile
@@ -6,8 +6,6 @@
# published by the Free Software Foundation.
#
-UTS_MACHINE := arc
-
ifeq ($(CROSS_COMPILE),)
ifndef CONFIG_CPU_BIG_ENDIAN
CROSS_COMPILE := arc-linux-
diff --git a/arch/arc/boot/Makefile b/arch/arc/boot/Makefile
index f94cf151e06a..538b92f4dd25 100644
--- a/arch/arc/boot/Makefile
+++ b/arch/arc/boot/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
targets := vmlinux.bin vmlinux.bin.gz uImage
# uImage build relies on mkimage being availble on your host for ARC target
diff --git a/arch/arc/boot/dts/Makefile b/arch/arc/boot/dts/Makefile
index a09f11b71e66..83c9e076ef63 100644
--- a/arch/arc/boot/dts/Makefile
+++ b/arch/arc/boot/dts/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Built-in dtb
builtindtb-y := nsim_700
diff --git a/arch/arc/boot/dts/axs10x_mb.dtsi b/arch/arc/boot/dts/axs10x_mb.dtsi
index 2367a67c5f10..e114000a84f5 100644
--- a/arch/arc/boot/dts/axs10x_mb.dtsi
+++ b/arch/arc/boot/dts/axs10x_mb.dtsi
@@ -44,7 +44,14 @@
mmcclk: mmcclk {
compatible = "fixed-clock";
- clock-frequency = <50000000>;
+ /*
+ * DW sdio controller has external ciu clock divider
+ * controlled via register in SDIO IP. It divides
+ * sdio_ref_clk (which comes from CGU) by 16 for
+ * default. So default mmcclk clock (which comes
+ * to sdk_in) is 25000000 Hz.
+ */
+ clock-frequency = <25000000>;
#clock-cells = <0>;
};
diff --git a/arch/arc/boot/dts/hsdk.dts b/arch/arc/boot/dts/hsdk.dts
index 229d13adbce4..8f627c200d60 100644
--- a/arch/arc/boot/dts/hsdk.dts
+++ b/arch/arc/boot/dts/hsdk.dts
@@ -12,6 +12,7 @@
/dts-v1/;
#include <dt-bindings/net/ti-dp83867.h>
+#include <dt-bindings/reset/snps,hsdk-reset.h>
/ {
model = "snps,hsdk";
@@ -57,10 +58,10 @@
};
};
- core_clk: core-clk {
+ input_clk: input-clk {
#clock-cells = <0>;
compatible = "fixed-clock";
- clock-frequency = <500000000>;
+ clock-frequency = <33333333>;
};
cpu_intc: cpu-interrupt-controller {
@@ -102,6 +103,19 @@
ranges = <0x00000000 0xf0000000 0x10000000>;
+ cgu_rst: reset-controller@8a0 {
+ compatible = "snps,hsdk-reset";
+ #reset-cells = <1>;
+ reg = <0x8A0 0x4>, <0xFF0 0x4>;
+ };
+
+ core_clk: core-clk@0 {
+ compatible = "snps,hsdk-core-pll-clock";
+ reg = <0x00 0x10>, <0x14B8 0x4>;
+ #clock-cells = <0>;
+ clocks = <&input_clk>;
+ };
+
serial: serial@5000 {
compatible = "snps,dw-apb-uart";
reg = <0x5000 0x100>;
@@ -120,7 +134,18 @@
mmcclk_ciu: mmcclk-ciu {
compatible = "fixed-clock";
- clock-frequency = <100000000>;
+ /*
+ * DW sdio controller has external ciu clock divider
+ * controlled via register in SDIO IP. Due to its
+ * unexpected default value (it should divide by 1
+ * but it divides by 8) SDIO IP uses wrong clock and
+ * works unstable (see STAR 9001204800)
+ * We switched to the minimum possible value of the
+ * divisor (div-by-2) in HSDK platform code.
+ * So add temporary fix and change clock frequency
+ * to 50000000 Hz until we fix dw sdio driver itself.
+ */
+ clock-frequency = <50000000>;
#clock-cells = <0>;
};
@@ -141,6 +166,8 @@
clocks = <&gmacclk>;
clock-names = "stmmaceth";
phy-handle = <&phy0>;
+ resets = <&cgu_rst HSDK_ETH_RESET>;
+ reset-names = "stmmaceth";
mdio {
#address-cells = <1>;
diff --git a/arch/arc/configs/axs101_defconfig b/arch/arc/configs/axs101_defconfig
index 6980b966a364..ec7c849a5c8e 100644
--- a/arch/arc/configs/axs101_defconfig
+++ b/arch/arc/configs/axs101_defconfig
@@ -105,7 +105,7 @@ CONFIG_NLS_ISO8859_1=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_STRIP_ASM_SYMS=y
-CONFIG_LOCKUP_DETECTOR=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_PREEMPT is not set
diff --git a/arch/arc/configs/axs103_defconfig b/arch/arc/configs/axs103_defconfig
index 2233f5777a71..63d3cf69e0b0 100644
--- a/arch/arc/configs/axs103_defconfig
+++ b/arch/arc/configs/axs103_defconfig
@@ -104,7 +104,7 @@ CONFIG_NLS_ISO8859_1=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_STRIP_ASM_SYMS=y
-CONFIG_LOCKUP_DETECTOR=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_PREEMPT is not set
diff --git a/arch/arc/configs/axs103_smp_defconfig b/arch/arc/configs/axs103_smp_defconfig
index 30a3d4cf53d2..f613ecac14a7 100644
--- a/arch/arc/configs/axs103_smp_defconfig
+++ b/arch/arc/configs/axs103_smp_defconfig
@@ -107,7 +107,7 @@ CONFIG_NLS_ISO8859_1=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_STRIP_ASM_SYMS=y
-CONFIG_LOCKUP_DETECTOR=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_PREEMPT is not set
diff --git a/arch/arc/configs/haps_hs_smp_defconfig b/arch/arc/configs/haps_hs_smp_defconfig
index 821a2e562f3f..3507be2af6fe 100644
--- a/arch/arc/configs/haps_hs_smp_defconfig
+++ b/arch/arc/configs/haps_hs_smp_defconfig
@@ -84,5 +84,5 @@ CONFIG_TMPFS=y
CONFIG_NFS_FS=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
-CONFIG_LOCKUP_DETECTOR=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
# CONFIG_DEBUG_PREEMPT is not set
diff --git a/arch/arc/configs/hsdk_defconfig b/arch/arc/configs/hsdk_defconfig
index 9a3fcf446388..7b8f8faf8a24 100644
--- a/arch/arc/configs/hsdk_defconfig
+++ b/arch/arc/configs/hsdk_defconfig
@@ -72,7 +72,7 @@ CONFIG_NLS_ISO8859_1=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_STRIP_ASM_SYMS=y
-CONFIG_LOCKUP_DETECTOR=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_PREEMPT is not set
diff --git a/arch/arc/configs/vdk_hs38_defconfig b/arch/arc/configs/vdk_hs38_defconfig
index c0d6a010751a..4fcf4f2503f6 100644
--- a/arch/arc/configs/vdk_hs38_defconfig
+++ b/arch/arc/configs/vdk_hs38_defconfig
@@ -94,7 +94,7 @@ CONFIG_NLS_ISO8859_1=y
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_STRIP_ASM_SYMS=y
CONFIG_DEBUG_SHIRQ=y
-CONFIG_LOCKUP_DETECTOR=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_PREEMPT is not set
diff --git a/arch/arc/configs/vdk_hs38_smp_defconfig b/arch/arc/configs/vdk_hs38_smp_defconfig
index 5c0971787acf..7b71464f6c2f 100644
--- a/arch/arc/configs/vdk_hs38_smp_defconfig
+++ b/arch/arc/configs/vdk_hs38_smp_defconfig
@@ -98,7 +98,7 @@ CONFIG_NLS_ISO8859_1=y
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_STRIP_ASM_SYMS=y
CONFIG_DEBUG_SHIRQ=y
-CONFIG_LOCKUP_DETECTOR=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_PREEMPT is not set
diff --git a/arch/arc/include/asm/Kbuild b/arch/arc/include/asm/Kbuild
index 353dae386b2f..cd8398daccee 100644
--- a/arch/arc/include/asm/Kbuild
+++ b/arch/arc/include/asm/Kbuild
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
generic-y += bugs.h
generic-y += clkdev.h
generic-y += device.h
diff --git a/arch/arc/include/asm/arcregs.h b/arch/arc/include/asm/arcregs.h
index ba8e802dba80..b1c56d35f2a9 100644
--- a/arch/arc/include/asm/arcregs.h
+++ b/arch/arc/include/asm/arcregs.h
@@ -98,6 +98,7 @@
/* Auxiliary registers */
#define AUX_IDENTITY 4
+#define AUX_EXEC_CTRL 8
#define AUX_INTR_VEC_BASE 0x25
#define AUX_VOL 0x5e
@@ -135,12 +136,12 @@ struct bcr_identity {
#endif
};
-struct bcr_isa {
+struct bcr_isa_arcv2 {
#ifdef CONFIG_CPU_BIG_ENDIAN
unsigned int div_rem:4, pad2:4, ldd:1, unalign:1, atomic:1, be:1,
- pad1:11, atomic1:1, ver:8;
+ pad1:12, ver:8;
#else
- unsigned int ver:8, atomic1:1, pad1:11, be:1, atomic:1, unalign:1,
+ unsigned int ver:8, pad1:12, be:1, atomic:1, unalign:1,
ldd:1, pad2:4, div_rem:4;
#endif
};
@@ -263,13 +264,13 @@ struct cpuinfo_arc {
struct cpuinfo_arc_mmu mmu;
struct cpuinfo_arc_bpu bpu;
struct bcr_identity core;
- struct bcr_isa isa;
+ struct bcr_isa_arcv2 isa;
const char *details, *name;
unsigned int vec_base;
struct cpuinfo_arc_ccm iccm, dccm;
struct {
unsigned int swap:1, norm:1, minmax:1, barrel:1, crc:1, swape:1, pad1:2,
- fpu_sp:1, fpu_dp:1, pad2:6,
+ fpu_sp:1, fpu_dp:1, dual_iss_enb:1, dual_iss_exist:1, pad2:4,
debug:1, ap:1, smart:1, rtt:1, pad3:4,
timer0:1, timer1:1, rtc:1, gfrc:1, pad4:4;
} extn;
diff --git a/arch/arc/include/asm/entry-arcv2.h b/arch/arc/include/asm/entry-arcv2.h
index ac85380d14a4..257a68f3c2fe 100644
--- a/arch/arc/include/asm/entry-arcv2.h
+++ b/arch/arc/include/asm/entry-arcv2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARC_ENTRY_ARCV2_H
#define __ASM_ARC_ENTRY_ARCV2_H
diff --git a/arch/arc/include/asm/fb.h b/arch/arc/include/asm/fb.h
index bd3f68c9ddfc..dc2e303cdbbb 100644
--- a/arch/arc/include/asm/fb.h
+++ b/arch/arc/include/asm/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FB_H_
#define _ASM_FB_H_
diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h
index d400a2161935..8ee41e988169 100644
--- a/arch/arc/include/asm/processor.h
+++ b/arch/arc/include/asm/processor.h
@@ -78,9 +78,6 @@ struct task_struct;
#endif
-#define copy_segments(tsk, mm) do { } while (0)
-#define release_segments(mm) do { } while (0)
-
#define KSTK_EIP(tsk) (task_pt_regs(tsk)->ret)
#define KSTK_ESP(tsk) (task_pt_regs(tsk)->sp)
diff --git a/arch/arc/include/uapi/asm/byteorder.h b/arch/arc/include/uapi/asm/byteorder.h
index ea5ca444c7e3..5540111531c7 100644
--- a/arch/arc/include/uapi/asm/byteorder.h
+++ b/arch/arc/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/arch/arc/include/uapi/asm/cachectl.h b/arch/arc/include/uapi/asm/cachectl.h
index 51c73f0255b3..0e4f2affc7e9 100644
--- a/arch/arc/include/uapi/asm/cachectl.h
+++ b/arch/arc/include/uapi/asm/cachectl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/arch/arc/include/uapi/asm/elf.h b/arch/arc/include/uapi/asm/elf.h
index 06d95e611616..3c1dae4e5aad 100644
--- a/arch/arc/include/uapi/asm/elf.h
+++ b/arch/arc/include/uapi/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/arch/arc/include/uapi/asm/page.h b/arch/arc/include/uapi/asm/page.h
index 059aff38f10a..2a97e2718a21 100644
--- a/arch/arc/include/uapi/asm/page.h
+++ b/arch/arc/include/uapi/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/arch/arc/include/uapi/asm/ptrace.h b/arch/arc/include/uapi/asm/ptrace.h
index dd206e6b482c..2a6eff57f6dd 100644
--- a/arch/arc/include/uapi/asm/ptrace.h
+++ b/arch/arc/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/arch/arc/include/uapi/asm/sigcontext.h b/arch/arc/include/uapi/asm/sigcontext.h
index 9678a11fc158..95f8a4380e11 100644
--- a/arch/arc/include/uapi/asm/sigcontext.h
+++ b/arch/arc/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/arch/arc/include/uapi/asm/signal.h b/arch/arc/include/uapi/asm/signal.h
index fad62f7f42d6..ba3143a1b375 100644
--- a/arch/arc/include/uapi/asm/signal.h
+++ b/arch/arc/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/arch/arc/include/uapi/asm/swab.h b/arch/arc/include/uapi/asm/swab.h
index 71f3918b0fc3..02109cd48ee1 100644
--- a/arch/arc/include/uapi/asm/swab.h
+++ b/arch/arc/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/arch/arc/include/uapi/asm/unistd.h b/arch/arc/include/uapi/asm/unistd.h
index 9a34136d84b2..517178b1daef 100644
--- a/arch/arc/include/uapi/asm/unistd.h
+++ b/arch/arc/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c
index c4ffb441716c..fb83844daeea 100644
--- a/arch/arc/kernel/setup.c
+++ b/arch/arc/kernel/setup.c
@@ -51,6 +51,7 @@ static const struct id_to_str arc_cpu_rel[] = {
{ 0x51, "R2.0" },
{ 0x52, "R2.1" },
{ 0x53, "R3.0" },
+ { 0x54, "R4.0" },
#endif
{ 0x00, NULL }
};
@@ -62,6 +63,7 @@ static const struct id_to_str arc_cpu_nm[] = {
#else
{ 0x40, "ARC EM" },
{ 0x50, "ARC HS38" },
+ { 0x54, "ARC HS48" },
#endif
{ 0x00, "Unknown" }
};
@@ -119,11 +121,11 @@ static void read_arc_build_cfg_regs(void)
struct bcr_generic bcr;
struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()];
const struct id_to_str *tbl;
+ struct bcr_isa_arcv2 isa;
FIX_PTR(cpu);
READ_BCR(AUX_IDENTITY, cpu->core);
- READ_BCR(ARC_REG_ISA_CFG_BCR, cpu->isa);
for (tbl = &arc_cpu_rel[0]; tbl->id != 0; tbl++) {
if (cpu->core.family == tbl->id) {
@@ -133,7 +135,7 @@ static void read_arc_build_cfg_regs(void)
}
for (tbl = &arc_cpu_nm[0]; tbl->id != 0; tbl++) {
- if ((cpu->core.family & 0xF0) == tbl->id)
+ if ((cpu->core.family & 0xF4) == tbl->id)
break;
}
cpu->name = tbl->str;
@@ -192,6 +194,14 @@ static void read_arc_build_cfg_regs(void)
cpu->bpu.full = bpu.ft;
cpu->bpu.num_cache = 256 << bpu.bce;
cpu->bpu.num_pred = 2048 << bpu.pte;
+
+ if (cpu->core.family >= 0x54) {
+ unsigned int exec_ctrl;
+
+ READ_BCR(AUX_EXEC_CTRL, exec_ctrl);
+ cpu->extn.dual_iss_exist = 1;
+ cpu->extn.dual_iss_enb = exec_ctrl & 1;
+ }
}
READ_BCR(ARC_REG_AP_BCR, bcr);
@@ -205,18 +215,25 @@ static void read_arc_build_cfg_regs(void)
cpu->extn.debug = cpu->extn.ap | cpu->extn.smart | cpu->extn.rtt;
+ READ_BCR(ARC_REG_ISA_CFG_BCR, isa);
+
/* some hacks for lack of feature BCR info in old ARC700 cores */
if (is_isa_arcompact()) {
- if (!cpu->isa.ver) /* ISA BCR absent, use Kconfig info */
+ if (!isa.ver) /* ISA BCR absent, use Kconfig info */
cpu->isa.atomic = IS_ENABLED(CONFIG_ARC_HAS_LLSC);
- else
- cpu->isa.atomic = cpu->isa.atomic1;
+ else {
+ /* ARC700_BUILD only has 2 bits of isa info */
+ struct bcr_generic bcr = *(struct bcr_generic *)&isa;
+ cpu->isa.atomic = bcr.info & 1;
+ }
cpu->isa.be = IS_ENABLED(CONFIG_CPU_BIG_ENDIAN);
/* there's no direct way to distinguish 750 vs. 770 */
if (unlikely(cpu->core.family < 0x34 || cpu->mmu.ver < 3))
cpu->name = "ARC750";
+ } else {
+ cpu->isa = isa;
}
}
@@ -232,10 +249,11 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
"\nIDENTITY\t: ARCVER [%#02x] ARCNUM [%#02x] CHIPID [%#4x]\n",
core->family, core->cpu_id, core->chip_id);
- n += scnprintf(buf + n, len - n, "processor [%d]\t: %s %s (%s ISA) %s\n",
+ n += scnprintf(buf + n, len - n, "processor [%d]\t: %s %s (%s ISA) %s%s%s\n",
cpu_id, cpu->name, cpu->details,
is_isa_arcompact() ? "ARCompact" : "ARCv2",
- IS_AVAIL1(cpu->isa.be, "[Big-Endian]"));
+ IS_AVAIL1(cpu->isa.be, "[Big-Endian]"),
+ IS_AVAIL3(cpu->extn.dual_iss_exist, cpu->extn.dual_iss_enb, " Dual-Issue"));
n += scnprintf(buf + n, len - n, "Timers\t\t: %s%s%s%s%s%s\nISA Extn\t: ",
IS_AVAIL1(cpu->extn.timer0, "Timer0 "),
@@ -510,7 +528,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
goto done;
}
- str = (char *)__get_free_page(GFP_TEMPORARY);
+ str = (char *)__get_free_page(GFP_KERNEL);
if (!str)
goto done;
diff --git a/arch/arc/kernel/smp.c b/arch/arc/kernel/smp.c
index f46267153ec2..6df9d94a9537 100644
--- a/arch/arc/kernel/smp.c
+++ b/arch/arc/kernel/smp.c
@@ -23,6 +23,8 @@
#include <linux/cpumask.h>
#include <linux/reboot.h>
#include <linux/irqdomain.h>
+#include <linux/export.h>
+
#include <asm/processor.h>
#include <asm/setup.h>
#include <asm/mach_desc.h>
@@ -30,6 +32,9 @@
#ifndef CONFIG_ARC_HAS_LLSC
arch_spinlock_t smp_atomic_ops_lock = __ARCH_SPIN_LOCK_UNLOCKED;
arch_spinlock_t smp_bitops_lock = __ARCH_SPIN_LOCK_UNLOCKED;
+
+EXPORT_SYMBOL_GPL(smp_atomic_ops_lock);
+EXPORT_SYMBOL_GPL(smp_bitops_lock);
#endif
struct plat_smp_ops __weak plat_smp_ops;
diff --git a/arch/arc/kernel/sys.c b/arch/arc/kernel/sys.c
index 9d6c1ca26af6..fddecc76efb7 100644
--- a/arch/arc/kernel/sys.c
+++ b/arch/arc/kernel/sys.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/syscalls.h>
#include <linux/signal.h>
diff --git a/arch/arc/kernel/troubleshoot.c b/arch/arc/kernel/troubleshoot.c
index 7e94476f3994..7d8c1d6c2f60 100644
--- a/arch/arc/kernel/troubleshoot.c
+++ b/arch/arc/kernel/troubleshoot.c
@@ -178,7 +178,7 @@ void show_regs(struct pt_regs *regs)
struct callee_regs *cregs;
char *buf;
- buf = (char *)__get_free_page(GFP_TEMPORARY);
+ buf = (char *)__get_free_page(GFP_KERNEL);
if (!buf)
return;
diff --git a/arch/arc/oprofile/Makefile b/arch/arc/oprofile/Makefile
index ce417a6e70b8..698367bb41d0 100644
--- a/arch/arc/oprofile/Makefile
+++ b/arch/arc/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
diff --git a/arch/arc/plat-axs10x/axs10x.c b/arch/arc/plat-axs10x/axs10x.c
index f1ac6790da5f..cf14ebc36916 100644
--- a/arch/arc/plat-axs10x/axs10x.c
+++ b/arch/arc/plat-axs10x/axs10x.c
@@ -111,6 +111,13 @@ static void __init axs10x_early_init(void)
axs10x_enable_gpio_intc_wire();
+ /*
+ * Reset ethernet IP core.
+ * TODO: get rid of this quirk after axs10x reset driver (or simple
+ * reset driver) will be available in upstream.
+ */
+ iowrite32((1 << 5), (void __iomem *) CREG_MB_SW_RESET);
+
scnprintf(mb, 32, "MainBoard v%d", mb_rev);
axs10x_print_board_ver(CREG_MB_VER, mb);
}
diff --git a/arch/arc/plat-eznps/Kconfig b/arch/arc/plat-eznps/Kconfig
index e151e2067886..8eff057efcae 100644
--- a/arch/arc/plat-eznps/Kconfig
+++ b/arch/arc/plat-eznps/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
diff --git a/arch/arc/plat-hsdk/Kconfig b/arch/arc/plat-hsdk/Kconfig
index 5a6ed5afb009..19ab3cf98f0f 100644
--- a/arch/arc/plat-hsdk/Kconfig
+++ b/arch/arc/plat-hsdk/Kconfig
@@ -6,4 +6,6 @@
#
menuconfig ARC_SOC_HSDK
- bool "ARC HS Development Kit SOC"
+ bool "ARC HS Development Kit SOC"
+ select CLK_HSDK
+ select RESET_HSDK
diff --git a/arch/arc/plat-hsdk/platform.c b/arch/arc/plat-hsdk/platform.c
index a2e7fd17e36d..fd0ae5e38639 100644
--- a/arch/arc/plat-hsdk/platform.c
+++ b/arch/arc/plat-hsdk/platform.c
@@ -38,6 +38,46 @@ static void __init hsdk_init_per_cpu(unsigned int cpu)
#define CREG_PAE (CREG_BASE + 0x180)
#define CREG_PAE_UPDATE (CREG_BASE + 0x194)
+#define CREG_CORE_IF_CLK_DIV (CREG_BASE + 0x4B8)
+#define CREG_CORE_IF_CLK_DIV_2 0x1
+#define CGU_BASE ARC_PERIPHERAL_BASE
+#define CGU_PLL_STATUS (ARC_PERIPHERAL_BASE + 0x4)
+#define CGU_PLL_CTRL (ARC_PERIPHERAL_BASE + 0x0)
+#define CGU_PLL_STATUS_LOCK BIT(0)
+#define CGU_PLL_STATUS_ERR BIT(1)
+#define CGU_PLL_CTRL_1GHZ 0x3A10
+#define HSDK_PLL_LOCK_TIMEOUT 500
+
+#define HSDK_PLL_LOCKED() \
+ !!(ioread32((void __iomem *) CGU_PLL_STATUS) & CGU_PLL_STATUS_LOCK)
+
+#define HSDK_PLL_ERR() \
+ !!(ioread32((void __iomem *) CGU_PLL_STATUS) & CGU_PLL_STATUS_ERR)
+
+static void __init hsdk_set_cpu_freq_1ghz(void)
+{
+ u32 timeout = HSDK_PLL_LOCK_TIMEOUT;
+
+ /*
+ * As we set cpu clock which exceeds 500MHz, the divider for the interface
+ * clock must be programmed to div-by-2.
+ */
+ iowrite32(CREG_CORE_IF_CLK_DIV_2, (void __iomem *) CREG_CORE_IF_CLK_DIV);
+
+ /* Set cpu clock to 1GHz */
+ iowrite32(CGU_PLL_CTRL_1GHZ, (void __iomem *) CGU_PLL_CTRL);
+
+ while (!HSDK_PLL_LOCKED() && timeout--)
+ cpu_relax();
+
+ if (!HSDK_PLL_LOCKED() || HSDK_PLL_ERR())
+ pr_err("Failed to setup CPU frequency to 1GHz!");
+}
+
+#define SDIO_BASE (ARC_PERIPHERAL_BASE + 0xA000)
+#define SDIO_UHS_REG_EXT (SDIO_BASE + 0x108)
+#define SDIO_UHS_REG_EXT_DIV_2 (2 << 30)
+
static void __init hsdk_init_early(void)
{
/*
@@ -52,6 +92,18 @@ static void __init hsdk_init_early(void)
/* Really apply settings made above */
writel(1, (void __iomem *) CREG_PAE_UPDATE);
+
+ /*
+ * Switch SDIO external ciu clock divider from default div-by-8 to
+ * minimum possible div-by-2.
+ */
+ iowrite32(SDIO_UHS_REG_EXT_DIV_2, (void __iomem *) SDIO_UHS_REG_EXT);
+
+ /*
+ * Setup CPU frequency to 1GHz.
+ * TODO: remove it after smart hsdk pll driver will be introduced.
+ */
+ hsdk_set_cpu_freq_1ghz();
}
static const char *hsdk_compat[] __initconst = {
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 7888c9803eb0..d1346a160760 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARM
bool
default y
diff --git a/arch/arm/Kconfig-nommu b/arch/arm/Kconfig-nommu
index b7576349528c..22f34c423be6 100644
--- a/arch/arm/Kconfig-nommu
+++ b/arch/arm/Kconfig-nommu
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Kconfig for uClinux(non-paged MM) depend configurations
# Hyok S. Choi <hyok.choi@samsung.com>
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 6dcea8e8e941..954ba8b81052 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 47d3a1ab08d2..817e5cfef83a 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -131,7 +131,7 @@ endif
KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
-CHECKFLAGS += -D__arm__
+CHECKFLAGS += -D__arm__ -m32
#Default value
head-y := arch/arm/kernel/head$(MMUEXT).o
diff --git a/arch/arm/boot/bootp/Makefile b/arch/arm/boot/bootp/Makefile
index 5e4acd253b30..83e1a076a5d6 100644
--- a/arch/arm/boot/bootp/Makefile
+++ b/arch/arm/boot/bootp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/arm/boot/bootp/Makefile
#
diff --git a/arch/arm/boot/bootp/initrd.S b/arch/arm/boot/bootp/initrd.S
index d81ea183785c..dd3d04971c42 100644
--- a/arch/arm/boot/bootp/initrd.S
+++ b/arch/arm/boot/bootp/initrd.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.type initrd_start,#object
.globl initrd_start
initrd_start:
diff --git a/arch/arm/boot/bootp/kernel.S b/arch/arm/boot/bootp/kernel.S
index b87a25c7ef88..dc6236c173d2 100644
--- a/arch/arm/boot/bootp/kernel.S
+++ b/arch/arm/boot/bootp/kernel.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.globl kernel_start
kernel_start:
.incbin "arch/arm/boot/zImage"
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index d50430c40045..a5889238fc9f 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/arm/boot/compressed/Makefile
#
diff --git a/arch/arm/boot/compressed/atags_to_fdt.c b/arch/arm/boot/compressed/atags_to_fdt.c
index 9448aa0c6686..41fa7316c52b 100644
--- a/arch/arm/boot/compressed/atags_to_fdt.c
+++ b/arch/arm/boot/compressed/atags_to_fdt.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/setup.h>
#include <libfdt.h>
diff --git a/arch/arm/boot/compressed/big-endian.S b/arch/arm/boot/compressed/big-endian.S
index 25ab26f1c6f0..88e2a88d324b 100644
--- a/arch/arm/boot/compressed/big-endian.S
+++ b/arch/arm/boot/compressed/big-endian.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/arm/boot/compressed/big-endian.S
*
diff --git a/arch/arm/boot/compressed/debug.S b/arch/arm/boot/compressed/debug.S
index 5392ee63338f..6bf2917a4621 100644
--- a/arch/arm/boot/compressed/debug.S
+++ b/arch/arm/boot/compressed/debug.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
@@ -23,7 +24,11 @@ ENTRY(putc)
strb r0, [r1]
mov r0, #0x03 @ SYS_WRITEC
ARM( svc #0x123456 )
+#ifdef CONFIG_CPU_V7M
+ THUMB( bkpt #0xab )
+#else
THUMB( svc #0xab )
+#endif
mov pc, lr
.align 2
1: .word _GLOBAL_OFFSET_TABLE_ - .
diff --git a/arch/arm/boot/compressed/decompress.c b/arch/arm/boot/compressed/decompress.c
index f3a4bedd1afc..a2ac3fe7dbf8 100644
--- a/arch/arm/boot/compressed/decompress.c
+++ b/arch/arm/boot/compressed/decompress.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define _LINUX_STRING_H_
#include <linux/compiler.h> /* for inline */
diff --git a/arch/arm/boot/compressed/head-sa1100.S b/arch/arm/boot/compressed/head-sa1100.S
index 3115e313d9f6..95abdd850fe3 100644
--- a/arch/arm/boot/compressed/head-sa1100.S
+++ b/arch/arm/boot/compressed/head-sa1100.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/arm/boot/compressed/head-sa1100.S
*
diff --git a/arch/arm/boot/compressed/head-sharpsl.S b/arch/arm/boot/compressed/head-sharpsl.S
index eb0084ea1ec4..992e784500fa 100644
--- a/arch/arm/boot/compressed/head-sharpsl.S
+++ b/arch/arm/boot/compressed/head-sharpsl.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/arm/boot/compressed/head-sharpsl.S
*
diff --git a/arch/arm/boot/compressed/head-xscale.S b/arch/arm/boot/compressed/head-xscale.S
index 6ab0599c02dd..20fa44d59f82 100644
--- a/arch/arm/boot/compressed/head-xscale.S
+++ b/arch/arm/boot/compressed/head-xscale.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/arm/boot/compressed/head-xscale.S
*
diff --git a/arch/arm/boot/compressed/libfdt_env.h b/arch/arm/boot/compressed/libfdt_env.h
index 17ae0f3efac8..07437816e098 100644
--- a/arch/arm/boot/compressed/libfdt_env.h
+++ b/arch/arm/boot/compressed/libfdt_env.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARM_LIBFDT_ENV_H
#define _ARM_LIBFDT_ENV_H
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
index d4f891f56996..16a8a804e958 100644
--- a/arch/arm/boot/compressed/misc.c
+++ b/arch/arm/boot/compressed/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* misc.c
*
diff --git a/arch/arm/boot/compressed/piggy.S b/arch/arm/boot/compressed/piggy.S
index f72088495f43..0284f84dcf38 100644
--- a/arch/arm/boot/compressed/piggy.S
+++ b/arch/arm/boot/compressed/piggy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.section .piggydata,#alloc
.globl input_data
input_data:
diff --git a/arch/arm/boot/compressed/string.c b/arch/arm/boot/compressed/string.c
index 689467448736..309e1bbad75d 100644
--- a/arch/arm/boot/compressed/string.c
+++ b/arch/arm/boot/compressed/string.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/boot/compressed/string.c
*
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index faf46abaa4a2..eff87a344566 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ifeq ($(CONFIG_OF),y)
dtb-$(CONFIG_ARCH_ALPINE) += \
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 7d7ca054c557..e58fab8aec5d 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -36,6 +36,8 @@
phy1 = &usb1_phy;
ethernet0 = &cpsw_emac0;
ethernet1 = &cpsw_emac1;
+ spi0 = &spi0;
+ spi1 = &spi1;
};
cpus {
diff --git a/arch/arm/boot/dts/am43x-epos-evm.dts b/arch/arm/boot/dts/am43x-epos-evm.dts
index 9d276af7c539..081fa68b6f98 100644
--- a/arch/arm/boot/dts/am43x-epos-evm.dts
+++ b/arch/arm/boot/dts/am43x-epos-evm.dts
@@ -388,6 +388,7 @@
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;
status = "okay";
+ slaves = <1>;
};
&davinci_mdio {
@@ -402,11 +403,6 @@
phy-mode = "rmii";
};
-&cpsw_emac1 {
- phy_id = <&davinci_mdio>, <1>;
- phy-mode = "rmii";
-};
-
&phy_sel {
rmii-clock-ext;
};
diff --git a/arch/arm/boot/dts/am57xx-commercial-grade.dtsi b/arch/arm/boot/dts/am57xx-commercial-grade.dtsi
index c183654464e9..3eed6e09c884 100644
--- a/arch/arm/boot/dts/am57xx-commercial-grade.dtsi
+++ b/arch/arm/boot/dts/am57xx-commercial-grade.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
&cpu_alert0 {
temperature = <80000>; /* milliCelsius */
};
diff --git a/arch/arm/boot/dts/am57xx-industrial-grade.dtsi b/arch/arm/boot/dts/am57xx-industrial-grade.dtsi
index 70c8c4ba1933..422f953fc8d8 100644
--- a/arch/arm/boot/dts/am57xx-industrial-grade.dtsi
+++ b/arch/arm/boot/dts/am57xx-industrial-grade.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
&cpu_alert0 {
temperature = <90000>; /* milliCelsius */
};
diff --git a/arch/arm/boot/dts/armada-38x.dtsi b/arch/arm/boot/dts/armada-38x.dtsi
index 7ff0811e61db..4960722aab32 100644
--- a/arch/arm/boot/dts/armada-38x.dtsi
+++ b/arch/arm/boot/dts/armada-38x.dtsi
@@ -178,7 +178,7 @@
};
i2c0: i2c@11000 {
- compatible = "marvell,mv64xxx-i2c";
+ compatible = "marvell,mv78230-a0-i2c", "marvell,mv64xxx-i2c";
reg = <0x11000 0x20>;
#address-cells = <1>;
#size-cells = <0>;
@@ -189,7 +189,7 @@
};
i2c1: i2c@11100 {
- compatible = "marvell,mv64xxx-i2c";
+ compatible = "marvell,mv78230-a0-i2c", "marvell,mv64xxx-i2c";
reg = <0x11100 0x20>;
#address-cells = <1>;
#size-cells = <0>;
diff --git a/arch/arm/boot/dts/armv7-m.dtsi b/arch/arm/boot/dts/armv7-m.dtsi
index ba332e399be4..26f5443d85e1 100644
--- a/arch/arm/boot/dts/armv7-m.dtsi
+++ b/arch/arm/boot/dts/armv7-m.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
nvic: interrupt-controller@e000e100 {
compatible = "arm,armv7m-nvic";
diff --git a/arch/arm/boot/dts/aspeed-ast2500-evb.dts b/arch/arm/boot/dts/aspeed-ast2500-evb.dts
index 7c90dac99822..f53e89d63477 100644
--- a/arch/arm/boot/dts/aspeed-ast2500-evb.dts
+++ b/arch/arm/boot/dts/aspeed-ast2500-evb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "aspeed-g5.dtsi"
diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts b/arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts
index 112551766275..e1b523bd5b8b 100644
--- a/arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "aspeed-g4.dtsi"
diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts b/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
index 1190fec1b5d0..6dd77cba191c 100644
--- a/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "aspeed-g5.dtsi"
diff --git a/arch/arm/boot/dts/aspeed-g4.dtsi b/arch/arm/boot/dts/aspeed-g4.dtsi
index 22b958537d31..fcc5efbd0879 100644
--- a/arch/arm/boot/dts/aspeed-g4.dtsi
+++ b/arch/arm/boot/dts/aspeed-g4.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "skeleton.dtsi"
/ {
diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi
index 9cffe347b828..eab8f549a6fe 100644
--- a/arch/arm/boot/dts/aspeed-g5.dtsi
+++ b/arch/arm/boot/dts/aspeed-g5.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "skeleton.dtsi"
/ {
diff --git a/arch/arm/boot/dts/at91-ariettag25.dts b/arch/arm/boot/dts/at91-ariettag25.dts
index c514502081d2..21c5b56c92e0 100644
--- a/arch/arm/boot/dts/at91-ariettag25.dts
+++ b/arch/arm/boot/dts/at91-ariettag25.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree file for Arietta G25
* This device tree is minimal, to activate more peripherals, see:
diff --git a/arch/arm/boot/dts/at91-sama5d27_som1.dtsi b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
index 63a5af898165..cf0087b4c9e1 100644
--- a/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
+++ b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
@@ -67,8 +67,8 @@
pinctrl-0 = <&pinctrl_macb0_default>;
phy-mode = "rmii";
- ethernet-phy@1 {
- reg = <0x1>;
+ ethernet-phy@0 {
+ reg = <0x0>;
interrupt-parent = <&pioA>;
interrupts = <PIN_PD31 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
index 9c9088c99cc4..60cb084a8d92 100644
--- a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
+++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
@@ -67,7 +67,10 @@
usb1: ohci@00400000 {
num-ports = <3>;
- atmel,vbus-gpio = <&pioA PIN_PA10 GPIO_ACTIVE_HIGH>;
+ atmel,vbus-gpio = <0 /* &pioA PIN_PD20 GPIO_ACTIVE_HIGH */
+ &pioA PIN_PA27 GPIO_ACTIVE_HIGH
+ 0
+ >;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usb_default>;
status = "okay";
@@ -120,7 +123,7 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mikrobus2_uart>;
atmel,use-dma-rx;
- atmel-use-dma-tx;
+ atmel,use-dma-tx;
status = "okay";
};
@@ -178,7 +181,7 @@
uart4: serial@fc00c000 {
atmel,use-dma-rx;
atmel,use-dma-tx;
- pinctrl-name = "default";
+ pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mikrobus1_uart>;
status = "okay";
};
@@ -330,7 +333,7 @@
};
pinctrl_led_gpio_default: led_gpio_default {
- pinmux = <PIN_PA27__GPIO>,
+ pinmux = <PIN_PA10__GPIO>,
<PIN_PB1__GPIO>,
<PIN_PA31__GPIO>;
bias-pull-up;
@@ -396,7 +399,7 @@
};
pinctrl_usb_default: usb_default {
- pinmux = <PIN_PA10__GPIO>,
+ pinmux = <PIN_PA27__GPIO>,
<PIN_PD19__GPIO>;
bias-disable;
};
@@ -520,17 +523,17 @@
red {
label = "red";
- gpios = <&pioA PIN_PA27 GPIO_ACTIVE_LOW>;
+ gpios = <&pioA PIN_PA10 GPIO_ACTIVE_HIGH>;
};
green {
label = "green";
- gpios = <&pioA PIN_PB1 GPIO_ACTIVE_LOW>;
+ gpios = <&pioA PIN_PB1 GPIO_ACTIVE_HIGH>;
};
blue {
label = "blue";
- gpios = <&pioA PIN_PA31 GPIO_ACTIVE_LOW>;
+ gpios = <&pioA PIN_PA31 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
};
};
diff --git a/arch/arm/boot/dts/at91-sama5d2_xplained.dts b/arch/arm/boot/dts/at91-sama5d2_xplained.dts
index c7e9ccf2bc87..cbc26001247b 100644
--- a/arch/arm/boot/dts/at91-sama5d2_xplained.dts
+++ b/arch/arm/boot/dts/at91-sama5d2_xplained.dts
@@ -309,7 +309,7 @@
vddana-supply = <&vdd_3v3_lp_reg>;
vref-supply = <&vdd_3v3_lp_reg>;
pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_adc_default>;
+ pinctrl-0 = <&pinctrl_adc_default &pinctrl_adtrg_default>;
status = "okay";
};
@@ -340,6 +340,20 @@
bias-disable;
};
+ /*
+ * The ADTRG pin can work on any edge type.
+ * In here it's being pulled up, so need to
+ * connect it to ground to get an edge e.g.
+ * Trigger can be configured on falling, rise
+ * or any edge, and the pull-up can be changed
+ * to pull-down or left floating according to
+ * needs.
+ */
+ pinctrl_adtrg_default: adtrg_default {
+ pinmux = <PIN_PD31__ADTRG>;
+ bias-pull-up;
+ };
+
pinctrl_charger_chglev: charger_chglev {
pinmux = <PIN_PA12__GPIO>;
bias-disable;
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
index 9f866491efdf..f81ae0a10310 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts
index 4b1af06c8dc0..7a960a048204 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-a.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
index a846f1e781d8..0161a8483e39 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
index e860964e39fa..4bc70efe43d6 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
index 5d77f3f8c4c5..cca4a75a5651 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
index 82651c3eb682..b8565fc33eea 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
@@ -18,12 +18,9 @@
compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
model = "Raspberry Pi Zero W";
- /* Needed by firmware to properly init UARTs */
- aliases {
- uart0 = "/soc/serial@7e201000";
- uart1 = "/soc/serial@7e215040";
- serial0 = "/soc/serial@7e201000";
- serial1 = "/soc/serial@7e215040";
+ chosen {
+ /* 8250 auxiliary UART instead of pl011 */
+ stdout-path = "serial1:115200n8";
};
leds {
diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
index 659b6e9513b1..0e3d2a5ff208 100644
--- a/arch/arm/boot/dts/bcm2835.dtsi
+++ b/arch/arm/boot/dts/bcm2835.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "bcm283x.dtsi"
/ {
diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
index e8de41444b68..6669355fd655 100644
--- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
+++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "bcm2836.dtsi"
#include "bcm2835-rpi.dtsi"
diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi
index 2c26d0be8b03..61e158003509 100644
--- a/arch/arm/boot/dts/bcm2836.dtsi
+++ b/arch/arm/boot/dts/bcm2836.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "bcm283x.dtsi"
/ {
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
index 20725ca487f3..eb1a28da57e3 100644
--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "bcm2837.dtsi"
#include "bcm2835-rpi.dtsi"
@@ -8,6 +9,11 @@
compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
model = "Raspberry Pi 3 Model B";
+ chosen {
+ /* 8250 auxiliary UART instead of pl011 */
+ stdout-path = "serial1:115200n8";
+ };
+
memory {
reg = <0 0x40000000>;
};
diff --git a/arch/arm/boot/dts/bcm283x-rpi-smsc9512.dtsi b/arch/arm/boot/dts/bcm283x-rpi-smsc9512.dtsi
index 9a0599f711ff..967e081cb9c2 100644
--- a/arch/arm/boot/dts/bcm283x-rpi-smsc9512.dtsi
+++ b/arch/arm/boot/dts/bcm283x-rpi-smsc9512.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
aliases {
ethernet0 = &ethernet;
diff --git a/arch/arm/boot/dts/bcm283x-rpi-usb-otg.dtsi b/arch/arm/boot/dts/bcm283x-rpi-usb-otg.dtsi
index e7d217c967a1..e2fd9610e125 100644
--- a/arch/arm/boot/dts/bcm283x-rpi-usb-otg.dtsi
+++ b/arch/arm/boot/dts/bcm283x-rpi-usb-otg.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
&usb {
dr_mode = "otg";
g-rx-fifo-size = <256>;
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
index 431dcfc900c0..013431e3d7c3 100644
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
@@ -20,8 +20,13 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ serial0 = &uart0;
+ serial1 = &uart1;
+ };
+
chosen {
- bootargs = "earlyprintk console=ttyAMA0";
+ stdout-path = "serial0:115200n8";
};
thermal-zones {
diff --git a/arch/arm/boot/dts/bcm63138.dtsi b/arch/arm/boot/dts/bcm63138.dtsi
index d0560e8cd6de..43ee992ccdcf 100644
--- a/arch/arm/boot/dts/bcm63138.dtsi
+++ b/arch/arm/boot/dts/bcm63138.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Broadcom BCM63138 DSL SoCs Device Tree
*/
diff --git a/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts b/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts
index 0bb8d17e4c2d..8006c69a3fdf 100644
--- a/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts
+++ b/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "bcm7445.dtsi"
diff --git a/arch/arm/boot/dts/bcm7445.dtsi b/arch/arm/boot/dts/bcm7445.dtsi
index 4791321969b3..c859aa6f358c 100644
--- a/arch/arm/boot/dts/bcm7445.dtsi
+++ b/arch/arm/boot/dts/bcm7445.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "skeleton.dtsi"
diff --git a/arch/arm/boot/dts/bcm963138dvt.dts b/arch/arm/boot/dts/bcm963138dvt.dts
index 370aa2cfddf2..c61673638fa8 100644
--- a/arch/arm/boot/dts/bcm963138dvt.dts
+++ b/arch/arm/boot/dts/bcm963138dvt.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Broadcom BCM63138 Reference Board DTS
*/
diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index 67e72bc72e80..c75507922f7d 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -15,6 +15,13 @@
compatible = "ti,da850-evm", "ti,da850";
model = "DA850/AM1808/OMAP-L138 EVM";
+ aliases {
+ serial0 = &serial0;
+ serial1 = &serial1;
+ serial2 = &serial2;
+ ethernet0 = &eth0;
+ };
+
soc@1c00000 {
pmx_core: pinmux@14120 {
status = "okay";
diff --git a/arch/arm/boot/dts/dove-cubox-es.dts b/arch/arm/boot/dts/dove-cubox-es.dts
index e28ef056dd17..ad361ec1361d 100644
--- a/arch/arm/boot/dts/dove-cubox-es.dts
+++ b/arch/arm/boot/dts/dove-cubox-es.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "dove-cubox.dts"
/ {
diff --git a/arch/arm/boot/dts/dove-cubox.dts b/arch/arm/boot/dts/dove-cubox.dts
index af3cb633135f..580e3cbcfbf7 100644
--- a/arch/arm/boot/dts/dove-cubox.dts
+++ b/arch/arm/boot/dts/dove-cubox.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "dove.dtsi"
diff --git a/arch/arm/boot/dts/dove-d2plug.dts b/arch/arm/boot/dts/dove-d2plug.dts
index c11d3636c8e5..273f12ca2512 100644
--- a/arch/arm/boot/dts/dove-d2plug.dts
+++ b/arch/arm/boot/dts/dove-d2plug.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "dove.dtsi"
diff --git a/arch/arm/boot/dts/dove-d3plug.dts b/arch/arm/boot/dts/dove-d3plug.dts
index e88ff83f1dec..826026c28f90 100644
--- a/arch/arm/boot/dts/dove-d3plug.dts
+++ b/arch/arm/boot/dts/dove-d3plug.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "dove.dtsi"
diff --git a/arch/arm/boot/dts/dove-dove-db.dts b/arch/arm/boot/dts/dove-dove-db.dts
index bb725dca3a10..1754a62e014e 100644
--- a/arch/arm/boot/dts/dove-dove-db.dts
+++ b/arch/arm/boot/dts/dove-dove-db.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "dove.dtsi"
diff --git a/arch/arm/boot/dts/dove.dtsi b/arch/arm/boot/dts/dove.dtsi
index 1475d3672e56..f4a07bb7c3a2 100644
--- a/arch/arm/boot/dts/dove.dtsi
+++ b/arch/arm/boot/dts/dove.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/include/ "skeleton.dtsi"
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index cf229dfabf61..e62b62875cba 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -1817,6 +1817,8 @@
clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
ti,bit-shift = <24>;
reg = <0x1868>;
+ assigned-clocks = <&mcasp3_ahclkx_mux>;
+ assigned-clock-parents = <&abe_24m_fclk>;
};
mcasp3_aux_gfclk_mux: mcasp3_aux_gfclk_mux@1868 {
diff --git a/arch/arm/boot/dts/efm32gg-dk3750.dts b/arch/arm/boot/dts/efm32gg-dk3750.dts
index 98fc667d22c7..c9f3ea29cf9e 100644
--- a/arch/arm/boot/dts/efm32gg-dk3750.dts
+++ b/arch/arm/boot/dts/efm32gg-dk3750.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device tree for EFM32GG-DK3750 development board.
*
diff --git a/arch/arm/boot/dts/efm32gg.dtsi b/arch/arm/boot/dts/efm32gg.dtsi
index b78c57e51ed5..8a58e49144cc 100644
--- a/arch/arm/boot/dts/efm32gg.dtsi
+++ b/arch/arm/boot/dts/efm32gg.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device tree for Energy Micro EFM32 Giant Gecko SoC.
*
diff --git a/arch/arm/boot/dts/elpida_ecb240abacn.dtsi b/arch/arm/boot/dts/elpida_ecb240abacn.dtsi
index f97f70f83374..d87ee4794f83 100644
--- a/arch/arm/boot/dts/elpida_ecb240abacn.dtsi
+++ b/arch/arm/boot/dts/elpida_ecb240abacn.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common devices used in different OMAP boards
*/
diff --git a/arch/arm/boot/dts/gemini-nas4220b.dts b/arch/arm/boot/dts/gemini-nas4220b.dts
index b4fc58c8cf8d..d6a22e677c7a 100644
--- a/arch/arm/boot/dts/gemini-nas4220b.dts
+++ b/arch/arm/boot/dts/gemini-nas4220b.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree file for the Gemini-based Raidsonic NAS IB-4220-B
*/
diff --git a/arch/arm/boot/dts/gemini-rut1xx.dts b/arch/arm/boot/dts/gemini-rut1xx.dts
index 3613b264f45f..500057b6570e 100644
--- a/arch/arm/boot/dts/gemini-rut1xx.dts
+++ b/arch/arm/boot/dts/gemini-rut1xx.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree file for Teltonika RUT1xx
*/
diff --git a/arch/arm/boot/dts/gemini-sq201.dts b/arch/arm/boot/dts/gemini-sq201.dts
index 7cfa9caf47d4..63c02ca9513c 100644
--- a/arch/arm/boot/dts/gemini-sq201.dts
+++ b/arch/arm/boot/dts/gemini-sq201.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree file for ITian Square One SQ201 NAS
*/
diff --git a/arch/arm/boot/dts/gemini-wbd111.dts b/arch/arm/boot/dts/gemini-wbd111.dts
index 38a49e750478..b413fd12c5ba 100644
--- a/arch/arm/boot/dts/gemini-wbd111.dts
+++ b/arch/arm/boot/dts/gemini-wbd111.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree file for Wiliboard WBD-111
*/
diff --git a/arch/arm/boot/dts/gemini-wbd222.dts b/arch/arm/boot/dts/gemini-wbd222.dts
index f77e34e0df0b..3ba710538662 100644
--- a/arch/arm/boot/dts/gemini-wbd222.dts
+++ b/arch/arm/boot/dts/gemini-wbd222.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree file for Wiliboard WBD-222
*/
diff --git a/arch/arm/boot/dts/gemini.dtsi b/arch/arm/boot/dts/gemini.dtsi
index c68e8d430234..b9b07d0895cf 100644
--- a/arch/arm/boot/dts/gemini.dtsi
+++ b/arch/arm/boot/dts/gemini.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree file for Cortina systems Gemini SoC
*/
@@ -145,11 +146,12 @@
};
watchdog@41000000 {
- compatible = "cortina,gemini-watchdog";
+ compatible = "cortina,gemini-watchdog", "faraday,ftwdt010";
reg = <0x41000000 0x1000>;
interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
resets = <&syscon GEMINI_RESET_WDOG>;
clocks = <&syscon GEMINI_CLK_APB>;
+ clock-names = "PCLK";
};
uart0: serial@42000000 {
diff --git a/arch/arm/boot/dts/imx28-apx4devkit.dts b/arch/arm/boot/dts/imx28-apx4devkit.dts
index 1092b761d7ac..d2a91976e67f 100644
--- a/arch/arm/boot/dts/imx28-apx4devkit.dts
+++ b/arch/arm/boot/dts/imx28-apx4devkit.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "imx28.dtsi"
diff --git a/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi b/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi
index d78312c63672..ebe7a8bddf04 100644
--- a/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/gpio/gpio.h>
/ {
diff --git a/arch/arm/boot/dts/imx7d.dtsi b/arch/arm/boot/dts/imx7d.dtsi
index f46814a7ea44..4d308d17f040 100644
--- a/arch/arm/boot/dts/imx7d.dtsi
+++ b/arch/arm/boot/dts/imx7d.dtsi
@@ -144,10 +144,10 @@
interrupt-names = "msi";
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 0x7>;
- interrupt-map = <0 0 0 1 &intc GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
- <0 0 0 2 &intc GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
- <0 0 0 3 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
- <0 0 0 4 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-map = <0 0 0 1 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 2 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 3 &intc GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 4 &intc GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_PCIE_CTRL_ROOT_CLK>,
<&clks IMX7D_PLL_ENET_MAIN_100M_CLK>,
<&clks IMX7D_PCIE_PHY_ROOT_CLK>;
diff --git a/arch/arm/boot/dts/integrator.dtsi b/arch/arm/boot/dts/integrator.dtsi
index 6fe0dd1d3541..380f9ae60c78 100644
--- a/arch/arm/boot/dts/integrator.dtsi
+++ b/arch/arm/boot/dts/integrator.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SoC core Device Tree for the ARM Integrator platforms
*/
diff --git a/arch/arm/boot/dts/integratorap.dts b/arch/arm/boot/dts/integratorap.dts
index e8b249f92fb3..a5d88a213dcd 100644
--- a/arch/arm/boot/dts/integratorap.dts
+++ b/arch/arm/boot/dts/integratorap.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree for the ARM Integrator/AP platform
*/
diff --git a/arch/arm/boot/dts/integratorcp.dts b/arch/arm/boot/dts/integratorcp.dts
index 97f38b57a702..a185ab8759fa 100644
--- a/arch/arm/boot/dts/integratorcp.dts
+++ b/arch/arm/boot/dts/integratorcp.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree for the ARM Integrator/CP platform
*/
diff --git a/arch/arm/boot/dts/kirkwood-6192.dtsi b/arch/arm/boot/dts/kirkwood-6192.dtsi
index f003f3f1bd65..396bcba08adb 100644
--- a/arch/arm/boot/dts/kirkwood-6192.dtsi
+++ b/arch/arm/boot/dts/kirkwood-6192.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
mbus@f1000000 {
pciec: pcie@82000000 {
diff --git a/arch/arm/boot/dts/kirkwood-6281.dtsi b/arch/arm/boot/dts/kirkwood-6281.dtsi
index 47d4b3d3d9e9..faa05849a40d 100644
--- a/arch/arm/boot/dts/kirkwood-6281.dtsi
+++ b/arch/arm/boot/dts/kirkwood-6281.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
mbus@f1000000 {
pciec: pcie@82000000 {
diff --git a/arch/arm/boot/dts/kirkwood-6282.dtsi b/arch/arm/boot/dts/kirkwood-6282.dtsi
index a13dad0a7c08..e84c54b77dea 100644
--- a/arch/arm/boot/dts/kirkwood-6282.dtsi
+++ b/arch/arm/boot/dts/kirkwood-6282.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
mbus@f1000000 {
pciec: pcie@82000000 {
diff --git a/arch/arm/boot/dts/kirkwood-98dx4122.dtsi b/arch/arm/boot/dts/kirkwood-98dx4122.dtsi
index 90d4d71b6683..299c147298c3 100644
--- a/arch/arm/boot/dts/kirkwood-98dx4122.dtsi
+++ b/arch/arm/boot/dts/kirkwood-98dx4122.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
mbus@f1000000 {
pciec: pcie@82000000 {
diff --git a/arch/arm/boot/dts/kirkwood-cloudbox.dts b/arch/arm/boot/dts/kirkwood-cloudbox.dts
index 555b7e4c58a5..448b0cd23b5f 100644
--- a/arch/arm/boot/dts/kirkwood-cloudbox.dts
+++ b/arch/arm/boot/dts/kirkwood-cloudbox.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-dns320.dts b/arch/arm/boot/dts/kirkwood-dns320.dts
index d85ef0a91b50..d6b0f418fd01 100644
--- a/arch/arm/boot/dts/kirkwood-dns320.dts
+++ b/arch/arm/boot/dts/kirkwood-dns320.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood-dnskw.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-dns325.dts b/arch/arm/boot/dts/kirkwood-dns325.dts
index 5e586ed04c58..94d9c06cbbf5 100644
--- a/arch/arm/boot/dts/kirkwood-dns325.dts
+++ b/arch/arm/boot/dts/kirkwood-dns325.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood-dnskw.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-dnskw.dtsi b/arch/arm/boot/dts/kirkwood-dnskw.dtsi
index d8fca9db46d0..cbaf06f2f78e 100644
--- a/arch/arm/boot/dts/kirkwood-dnskw.dtsi
+++ b/arch/arm/boot/dts/kirkwood-dnskw.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-dockstar.dts b/arch/arm/boot/dts/kirkwood-dockstar.dts
index 849736349511..6a3f1bf6d9f1 100644
--- a/arch/arm/boot/dts/kirkwood-dockstar.dts
+++ b/arch/arm/boot/dts/kirkwood-dockstar.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts
index e2abc8246bf3..7f326e267494 100644
--- a/arch/arm/boot/dts/kirkwood-dreamplug.dts
+++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-goflexnet.dts b/arch/arm/boot/dts/kirkwood-goflexnet.dts
index aa60a0b049a7..02d87e0a1061 100644
--- a/arch/arm/boot/dts/kirkwood-goflexnet.dts
+++ b/arch/arm/boot/dts/kirkwood-goflexnet.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts b/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
index b2d9834bf458..ff1260ee3fe8 100644
--- a/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
+++ b/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-ib62x0.dts b/arch/arm/boot/dts/kirkwood-ib62x0.dts
index 5bf62897014c..962a910a6f5c 100644
--- a/arch/arm/boot/dts/kirkwood-ib62x0.dts
+++ b/arch/arm/boot/dts/kirkwood-ib62x0.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-iconnect.dts b/arch/arm/boot/dts/kirkwood-iconnect.dts
index d25184ae4af3..4a512d80912c 100644
--- a/arch/arm/boot/dts/kirkwood-iconnect.dts
+++ b/arch/arm/boot/dts/kirkwood-iconnect.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
index 8474bffec0ca..62272d58664f 100644
--- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
+++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-is2.dts b/arch/arm/boot/dts/kirkwood-is2.dts
index 4121674abd1c..1bc16a5cdbaa 100644
--- a/arch/arm/boot/dts/kirkwood-is2.dts
+++ b/arch/arm/boot/dts/kirkwood-is2.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/leds/leds-ns2.h>
diff --git a/arch/arm/boot/dts/kirkwood-km_common.dtsi b/arch/arm/boot/dts/kirkwood-km_common.dtsi
index 7962bdefde49..75dc83914f56 100644
--- a/arch/arm/boot/dts/kirkwood-km_common.dtsi
+++ b/arch/arm/boot/dts/kirkwood-km_common.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
chosen {
bootargs = "console=ttyS0,115200n8 earlyprintk";
diff --git a/arch/arm/boot/dts/kirkwood-km_fixedeth.dts b/arch/arm/boot/dts/kirkwood-km_fixedeth.dts
index 9895f2b10f8a..515be7bccc0a 100644
--- a/arch/arm/boot/dts/kirkwood-km_fixedeth.dts
+++ b/arch/arm/boot/dts/kirkwood-km_fixedeth.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
index 235bf382fff9..f035eff1c111 100644
--- a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
+++ b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-lschlv2.dts b/arch/arm/boot/dts/kirkwood-lschlv2.dts
index e2fa368aef25..1d737d903f5f 100644
--- a/arch/arm/boot/dts/kirkwood-lschlv2.dts
+++ b/arch/arm/boot/dts/kirkwood-lschlv2.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood-lsxl.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-lsxhl.dts b/arch/arm/boot/dts/kirkwood-lsxhl.dts
index 8d89cdf8d6bf..a56e0d797778 100644
--- a/arch/arm/boot/dts/kirkwood-lsxhl.dts
+++ b/arch/arm/boot/dts/kirkwood-lsxhl.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood-lsxl.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-lsxl.dtsi b/arch/arm/boot/dts/kirkwood-lsxl.dtsi
index 8b7c6ce79a41..7b151acb9984 100644
--- a/arch/arm/boot/dts/kirkwood-lsxl.dtsi
+++ b/arch/arm/boot/dts/kirkwood-lsxl.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-mplcec4.dts b/arch/arm/boot/dts/kirkwood-mplcec4.dts
index aa413b0bcce2..b80d12f6aa49 100644
--- a/arch/arm/boot/dts/kirkwood-mplcec4.dts
+++ b/arch/arm/boot/dts/kirkwood-mplcec4.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
index 282605f4c92c..51530ea86622 100644
--- a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
+++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-ns2.dts b/arch/arm/boot/dts/kirkwood-ns2.dts
index 190189d235e6..7b67083e1ec0 100644
--- a/arch/arm/boot/dts/kirkwood-ns2.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/leds/leds-ns2.h>
diff --git a/arch/arm/boot/dts/kirkwood-ns2lite.dts b/arch/arm/boot/dts/kirkwood-ns2lite.dts
index 2c661add0cc0..b0cb5907ed63 100644
--- a/arch/arm/boot/dts/kirkwood-ns2lite.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2lite.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood-ns2-common.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-ns2max.dts b/arch/arm/boot/dts/kirkwood-ns2max.dts
index 55cc41d9c80c..c0a087e77408 100644
--- a/arch/arm/boot/dts/kirkwood-ns2max.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2max.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/leds/leds-ns2.h>
diff --git a/arch/arm/boot/dts/kirkwood-ns2mini.dts b/arch/arm/boot/dts/kirkwood-ns2mini.dts
index 9935f3ec29b4..5b9fa14b6428 100644
--- a/arch/arm/boot/dts/kirkwood-ns2mini.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2mini.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/leds/leds-ns2.h>
diff --git a/arch/arm/boot/dts/kirkwood-nsa310.dts b/arch/arm/boot/dts/kirkwood-nsa310.dts
index 0b69ee4934fa..9b861c2e76c5 100644
--- a/arch/arm/boot/dts/kirkwood-nsa310.dts
+++ b/arch/arm/boot/dts/kirkwood-nsa310.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood-nsa3x0-common.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-nsa310a.dts b/arch/arm/boot/dts/kirkwood-nsa310a.dts
index 3d2b3d494c19..b85e314f045a 100644
--- a/arch/arm/boot/dts/kirkwood-nsa310a.dts
+++ b/arch/arm/boot/dts/kirkwood-nsa310a.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood-nsa3x0-common.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-nsa3x0-common.dtsi b/arch/arm/boot/dts/kirkwood-nsa3x0-common.dtsi
index e09b79ac73fd..2c4037b07282 100644
--- a/arch/arm/boot/dts/kirkwood-nsa3x0-common.dtsi
+++ b/arch/arm/boot/dts/kirkwood-nsa3x0-common.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-openblocks_a6.dts b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
index c75da5f0ca48..8ea430168ea5 100644
--- a/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
+++ b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-pogoplug-series-4.dts b/arch/arm/boot/dts/kirkwood-pogoplug-series-4.dts
index b2f26239d298..5ce220ac9611 100644
--- a/arch/arm/boot/dts/kirkwood-pogoplug-series-4.dts
+++ b/arch/arm/boot/dts/kirkwood-pogoplug-series-4.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* kirkwood-pogoplug-series-4.dts - Device tree file for PogoPlug Series 4
* inspired by the board files made by Kevin Mihelich for ArchLinux,
diff --git a/arch/arm/boot/dts/kirkwood-topkick.dts b/arch/arm/boot/dts/kirkwood-topkick.dts
index 330aada6d33f..a5b51e29f63e 100644
--- a/arch/arm/boot/dts/kirkwood-topkick.dts
+++ b/arch/arm/boot/dts/kirkwood-topkick.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-ts219-6281.dts b/arch/arm/boot/dts/kirkwood-ts219-6281.dts
index ee62204e4ecd..30892c19aceb 100644
--- a/arch/arm/boot/dts/kirkwood-ts219-6281.dts
+++ b/arch/arm/boot/dts/kirkwood-ts219-6281.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-ts219-6282.dts b/arch/arm/boot/dts/kirkwood-ts219-6282.dts
index 3437bb396844..aba1205981f1 100644
--- a/arch/arm/boot/dts/kirkwood-ts219-6282.dts
+++ b/arch/arm/boot/dts/kirkwood-ts219-6282.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "kirkwood.dtsi"
diff --git a/arch/arm/boot/dts/kirkwood-ts219.dtsi b/arch/arm/boot/dts/kirkwood-ts219.dtsi
index 62e5e2d5c348..4faea1d9facf 100644
--- a/arch/arm/boot/dts/kirkwood-ts219.dtsi
+++ b/arch/arm/boot/dts/kirkwood-ts219.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
model = "QNAP TS219 family";
compatible = "qnap,ts219", "marvell,kirkwood";
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi
index 29b8bd7e0d93..a70fc7f01fc3 100644
--- a/arch/arm/boot/dts/kirkwood.dtsi
+++ b/arch/arm/boot/dts/kirkwood.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/include/ "skeleton.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/arm/boot/dts/moxart.dtsi b/arch/arm/boot/dts/moxart.dtsi
index 1f4c795d3f72..da7b3237bfe9 100644
--- a/arch/arm/boot/dts/moxart.dtsi
+++ b/arch/arm/boot/dts/moxart.dtsi
@@ -87,9 +87,10 @@
};
watchdog: watchdog@98500000 {
- compatible = "moxa,moxart-watchdog";
+ compatible = "moxa,moxart-watchdog", "faraday,ftwdt010";
reg = <0x98500000 0x10>;
clocks = <&clk_apb>;
+ clock-names = "PCLK";
};
sdhci: sdhci@98e00000 {
diff --git a/arch/arm/boot/dts/omap-gpmc-smsc911x.dtsi b/arch/arm/boot/dts/omap-gpmc-smsc911x.dtsi
index 445fafc73254..ded7e8fec9eb 100644
--- a/arch/arm/boot/dts/omap-gpmc-smsc911x.dtsi
+++ b/arch/arm/boot/dts/omap-gpmc-smsc911x.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common file for GPMC connected smsc911x on omaps
*
diff --git a/arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi b/arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi
index 73e272fadc20..7f6aefd13451 100644
--- a/arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi
+++ b/arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common file for GPMC connected smsc9221 on omaps
*
diff --git a/arch/arm/boot/dts/omap-zoom-common.dtsi b/arch/arm/boot/dts/omap-zoom-common.dtsi
index 46ef3e443861..d4ad9e58b199 100644
--- a/arch/arm/boot/dts/omap-zoom-common.dtsi
+++ b/arch/arm/boot/dts/omap-zoom-common.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common features on the Zoom debug board
*/
diff --git a/arch/arm/boot/dts/omap2420-n800.dts b/arch/arm/boot/dts/omap2420-n800.dts
index d8c1b423606a..f06d767e818b 100644
--- a/arch/arm/boot/dts/omap2420-n800.dts
+++ b/arch/arm/boot/dts/omap2420-n800.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "omap2420-n8x0-common.dtsi"
diff --git a/arch/arm/boot/dts/omap2420-n810-wimax.dts b/arch/arm/boot/dts/omap2420-n810-wimax.dts
index 6b25b0359ac9..ac9acbd609b6 100644
--- a/arch/arm/boot/dts/omap2420-n810-wimax.dts
+++ b/arch/arm/boot/dts/omap2420-n810-wimax.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "omap2420-n8x0-common.dtsi"
diff --git a/arch/arm/boot/dts/omap2420-n810.dts b/arch/arm/boot/dts/omap2420-n810.dts
index b604d26bd48c..7c485fbfa535 100644
--- a/arch/arm/boot/dts/omap2420-n810.dts
+++ b/arch/arm/boot/dts/omap2420-n810.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "omap2420-n8x0-common.dtsi"
diff --git a/arch/arm/boot/dts/omap2420-n8x0-common.dtsi b/arch/arm/boot/dts/omap2420-n8x0-common.dtsi
index 91886231e5a8..1de80c7886ab 100644
--- a/arch/arm/boot/dts/omap2420-n8x0-common.dtsi
+++ b/arch/arm/boot/dts/omap2420-n8x0-common.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "omap2420.dtsi"
/ {
diff --git a/arch/arm/boot/dts/omap3-cm-t3517.dts b/arch/arm/boot/dts/omap3-cm-t3517.dts
index 3d293b345e99..4994e33bf663 100644
--- a/arch/arm/boot/dts/omap3-cm-t3517.dts
+++ b/arch/arm/boot/dts/omap3-cm-t3517.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for CompuLab CM-T3517
*/
diff --git a/arch/arm/boot/dts/omap3-cm-t3530.dts b/arch/arm/boot/dts/omap3-cm-t3530.dts
index 8dd14fcf6825..76e52c78cbb4 100644
--- a/arch/arm/boot/dts/omap3-cm-t3530.dts
+++ b/arch/arm/boot/dts/omap3-cm-t3530.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for CompuLab CM-T3530
*/
diff --git a/arch/arm/boot/dts/omap3-cm-t3730.dts b/arch/arm/boot/dts/omap3-cm-t3730.dts
index bdf4b7fdda39..8c63ac5bbb12 100644
--- a/arch/arm/boot/dts/omap3-cm-t3730.dts
+++ b/arch/arm/boot/dts/omap3-cm-t3730.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for CompuLab CM-T3730
*/
diff --git a/arch/arm/boot/dts/omap3-cm-t3x.dtsi b/arch/arm/boot/dts/omap3-cm-t3x.dtsi
index fccd5383243c..31d5ebf38892 100644
--- a/arch/arm/boot/dts/omap3-cm-t3x.dtsi
+++ b/arch/arm/boot/dts/omap3-cm-t3x.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common support for CompuLab CM-T3x CoMs
*/
diff --git a/arch/arm/boot/dts/omap3-cm-t3x30.dtsi b/arch/arm/boot/dts/omap3-cm-t3x30.dtsi
index 046cd7733c4f..5e8943539fcc 100644
--- a/arch/arm/boot/dts/omap3-cm-t3x30.dtsi
+++ b/arch/arm/boot/dts/omap3-cm-t3x30.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common support for CompuLab CM-T3x30 CoMs
*/
diff --git a/arch/arm/boot/dts/omap3-evm-common.dtsi b/arch/arm/boot/dts/omap3-evm-common.dtsi
index ff35803088e3..dbc3f030a16c 100644
--- a/arch/arm/boot/dts/omap3-evm-common.dtsi
+++ b/arch/arm/boot/dts/omap3-evm-common.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common support for omap3 EVM boards
*/
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
index 26c20e1167b9..4acd32a1c4ef 100644
--- a/arch/arm/boot/dts/omap3-n900.dts
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -144,15 +144,6 @@
io-channel-names = "temp", "bsi", "vbat";
};
- rear_camera: camera@0 {
- compatible = "linux,camera";
-
- module {
- model = "TCM8341MD";
- sensor = <&cam1>;
- };
- };
-
pwm9: dmtimer-pwm {
compatible = "ti,omap-dmtimer-pwm";
#pwm-cells = <3>;
@@ -189,10 +180,8 @@
clock-lanes = <1>;
data-lanes = <0>;
lane-polarity = <0 0>;
- clock-inv = <0>;
/* Select strobe = <1> for back camera, <0> for front camera */
strobe = <1>;
- crc = <0>;
};
};
};
diff --git a/arch/arm/boot/dts/omap3-n950-n9.dtsi b/arch/arm/boot/dts/omap3-n950-n9.dtsi
index cb47ae79a5f9..1b0bd72945f2 100644
--- a/arch/arm/boot/dts/omap3-n950-n9.dtsi
+++ b/arch/arm/boot/dts/omap3-n950-n9.dtsi
@@ -267,15 +267,19 @@
clock-frequency = <400000>;
as3645a@30 {
+ #address-cells = <1>;
+ #size-cells = <0>;
reg = <0x30>;
compatible = "ams,as3645a";
- flash {
+ flash@0 {
+ reg = <0x0>;
flash-timeout-us = <150000>;
flash-max-microamp = <320000>;
led-max-microamp = <60000>;
- peak-current-limit = <1750000>;
+ ams,input-max-microamp = <1750000>;
};
- indicator {
+ indicator@1 {
+ reg = <0x1>;
led-max-microamp = <10000>;
};
};
diff --git a/arch/arm/boot/dts/omap3-panel-sharp-ls037v7dw01.dtsi b/arch/arm/boot/dts/omap3-panel-sharp-ls037v7dw01.dtsi
index 157345bb8e79..25e100db7b1a 100644
--- a/arch/arm/boot/dts/omap3-panel-sharp-ls037v7dw01.dtsi
+++ b/arch/arm/boot/dts/omap3-panel-sharp-ls037v7dw01.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common file for omap dpi panels with QVGA and reset pins
*
diff --git a/arch/arm/boot/dts/omap3-sb-t35.dtsi b/arch/arm/boot/dts/omap3-sb-t35.dtsi
index 4476fb685a1b..22b4c8bdcc65 100644
--- a/arch/arm/boot/dts/omap3-sb-t35.dtsi
+++ b/arch/arm/boot/dts/omap3-sb-t35.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common support for CompuLab SB-T35 used on SBC-T3530, SBC-T3517 and SBC-T3730
*/
diff --git a/arch/arm/boot/dts/omap3-sbc-t3517.dts b/arch/arm/boot/dts/omap3-sbc-t3517.dts
index c2d5c28a1a70..a69d32860421 100644
--- a/arch/arm/boot/dts/omap3-sbc-t3517.dts
+++ b/arch/arm/boot/dts/omap3-sbc-t3517.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Suppport for CompuLab SBC-T3517 with CM-T3517
*/
diff --git a/arch/arm/boot/dts/omap3-sbc-t3530.dts b/arch/arm/boot/dts/omap3-sbc-t3530.dts
index 834bc786cd12..ae96002abb3b 100644
--- a/arch/arm/boot/dts/omap3-sbc-t3530.dts
+++ b/arch/arm/boot/dts/omap3-sbc-t3530.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Suppport for CompuLab SBC-T3530 with CM-T3530
*/
diff --git a/arch/arm/boot/dts/omap3-sbc-t3730.dts b/arch/arm/boot/dts/omap3-sbc-t3730.dts
index 73c7bf4a4a08..7de6df16fc17 100644
--- a/arch/arm/boot/dts/omap3-sbc-t3730.dts
+++ b/arch/arm/boot/dts/omap3-sbc-t3730.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Suppport for CompuLab SBC-T3730 with CM-T3730
*/
diff --git a/arch/arm/boot/dts/omap5-cm-t54.dts b/arch/arm/boot/dts/omap5-cm-t54.dts
index 552a5c4c5942..5b172a04b6f1 100644
--- a/arch/arm/boot/dts/omap5-cm-t54.dts
+++ b/arch/arm/boot/dts/omap5-cm-t54.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for CompuLab CM-T54
*/
diff --git a/arch/arm/boot/dts/omap5-sbc-t54.dts b/arch/arm/boot/dts/omap5-sbc-t54.dts
index 7b8810d13257..657df46251c2 100644
--- a/arch/arm/boot/dts/omap5-sbc-t54.dts
+++ b/arch/arm/boot/dts/omap5-sbc-t54.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Suppport for CompuLab CM-T54 on SB-T54 baseboard
*/
diff --git a/arch/arm/boot/dts/pxa27x.dtsi b/arch/arm/boot/dts/pxa27x.dtsi
index 5f1d6da02a4c..747f750f675d 100644
--- a/arch/arm/boot/dts/pxa27x.dtsi
+++ b/arch/arm/boot/dts/pxa27x.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* The pxa3xx skeleton simply augments the 2xx version */
#include "pxa2xx.dtsi"
#include "dt-bindings/clock/pxa-clock.h"
diff --git a/arch/arm/boot/dts/pxa3xx.dtsi b/arch/arm/boot/dts/pxa3xx.dtsi
index 7a0cc4ea819a..55c75b67351c 100644
--- a/arch/arm/boot/dts/pxa3xx.dtsi
+++ b/arch/arm/boot/dts/pxa3xx.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* The pxa3xx skeleton simply augments the 2xx version */
#include "pxa2xx.dtsi"
diff --git a/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval-pins.dtsi b/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval-pins.dtsi
index a3efb9704fcd..8df73156b73a 100644
--- a/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval-pins.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval-pins.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
&tlmm_pinmux {
card_detect: card-detect {
mux {
diff --git a/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts b/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts
index f245064f320e..76b56eafaab9 100644
--- a/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts
+++ b/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-apq8064-v2.0.dtsi"
#include "qcom-apq8064-arrow-sd-600eval-pins.dtsi"
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts b/arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts
index 3483a66e44c1..a701d4bac320 100644
--- a/arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts
+++ b/arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-apq8064-v2.0.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts b/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts
index 5b151e425530..b818ebce0978 100644
--- a/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts
+++ b/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-apq8064-v2.0.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
diff --git a/arch/arm/boot/dts/qcom-apq8064-ifc6410.dts b/arch/arm/boot/dts/qcom-apq8064-ifc6410.dts
index 053b5bdd7808..83aaf4a74398 100644
--- a/arch/arm/boot/dts/qcom-apq8064-ifc6410.dts
+++ b/arch/arm/boot/dts/qcom-apq8064-ifc6410.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-apq8064-v2.0.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
diff --git a/arch/arm/boot/dts/qcom-apq8064-pins.dtsi b/arch/arm/boot/dts/qcom-apq8064-pins.dtsi
index 173ab7c299ce..cbe42c4153a0 100644
--- a/arch/arm/boot/dts/qcom-apq8064-pins.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8064-pins.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
&tlmm_pinmux {
sdc4_gpios: sdc4-gpios {
diff --git a/arch/arm/boot/dts/qcom-apq8064-sony-xperia-yuga.dts b/arch/arm/boot/dts/qcom-apq8064-sony-xperia-yuga.dts
index 88a9aff41e2f..8bf488fb86ad 100644
--- a/arch/arm/boot/dts/qcom-apq8064-sony-xperia-yuga.dts
+++ b/arch/arm/boot/dts/qcom-apq8064-sony-xperia-yuga.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-apq8064-v2.0.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/qcom-apq8064-v2.0.dtsi b/arch/arm/boot/dts/qcom-apq8064-v2.0.dtsi
index 935c3945fc5e..46ed48f0244f 100644
--- a/arch/arm/boot/dts/qcom-apq8064-v2.0.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8064-v2.0.dtsi
@@ -1 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-apq8064.dtsi"
diff --git a/arch/arm/boot/dts/qcom-apq8064.dtsi b/arch/arm/boot/dts/qcom-apq8064.dtsi
index f3db185a6809..6089c8d56cd5 100644
--- a/arch/arm/boot/dts/qcom-apq8064.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8064.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "skeleton.dtsi"
diff --git a/arch/arm/boot/dts/qcom-apq8074-dragonboard.dts b/arch/arm/boot/dts/qcom-apq8074-dragonboard.dts
index 32f3b81f609c..244f04e19c9d 100644
--- a/arch/arm/boot/dts/qcom-apq8074-dragonboard.dts
+++ b/arch/arm/boot/dts/qcom-apq8074-dragonboard.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-msm8974.dtsi"
#include "qcom-pm8841.dtsi"
#include "qcom-pm8941.dtsi"
diff --git a/arch/arm/boot/dts/qcom-apq8084-ifc6540.dts b/arch/arm/boot/dts/qcom-apq8084-ifc6540.dts
index 2052b84a77c6..44cd72f1b1be 100644
--- a/arch/arm/boot/dts/qcom-apq8084-ifc6540.dts
+++ b/arch/arm/boot/dts/qcom-apq8084-ifc6540.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-apq8084.dtsi"
#include "qcom-pma8084.dtsi"
diff --git a/arch/arm/boot/dts/qcom-apq8084-mtp.dts b/arch/arm/boot/dts/qcom-apq8084-mtp.dts
index d174d15bcf70..c6b6680248a6 100644
--- a/arch/arm/boot/dts/qcom-apq8084-mtp.dts
+++ b/arch/arm/boot/dts/qcom-apq8084-mtp.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-apq8084.dtsi"
#include "qcom-pma8084.dtsi"
diff --git a/arch/arm/boot/dts/qcom-apq8084.dtsi b/arch/arm/boot/dts/qcom-apq8084.dtsi
index 80d48867107f..0e1e98707e3f 100644
--- a/arch/arm/boot/dts/qcom-apq8084.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8084.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "skeleton.dtsi"
diff --git a/arch/arm/boot/dts/qcom-ipq8064-ap148.dts b/arch/arm/boot/dts/qcom-ipq8064-ap148.dts
index 348503d1a1c1..bcf53e37ed93 100644
--- a/arch/arm/boot/dts/qcom-ipq8064-ap148.dts
+++ b/arch/arm/boot/dts/qcom-ipq8064-ap148.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-ipq8064-v1.0.dtsi"
/ {
diff --git a/arch/arm/boot/dts/qcom-ipq8064-v1.0.dtsi b/arch/arm/boot/dts/qcom-ipq8064-v1.0.dtsi
index 7093b075e408..e1181194e8d3 100644
--- a/arch/arm/boot/dts/qcom-ipq8064-v1.0.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq8064-v1.0.dtsi
@@ -1 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-ipq8064.dtsi"
diff --git a/arch/arm/boot/dts/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom-ipq8064.dtsi
index f1fbffe59b93..1e0a3b446f7a 100644
--- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "skeleton.dtsi"
diff --git a/arch/arm/boot/dts/qcom-msm8660-surf.dts b/arch/arm/boot/dts/qcom-msm8660-surf.dts
index 1adc04978a47..f01a11b18d6a 100644
--- a/arch/arm/boot/dts/qcom-msm8660-surf.dts
+++ b/arch/arm/boot/dts/qcom-msm8660-surf.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/input/input.h>
#include "qcom-msm8660.dtsi"
diff --git a/arch/arm/boot/dts/qcom-msm8660.dtsi b/arch/arm/boot/dts/qcom-msm8660.dtsi
index 1b5d31b33b5e..221c4584552f 100644
--- a/arch/arm/boot/dts/qcom-msm8660.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8660.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "skeleton.dtsi"
diff --git a/arch/arm/boot/dts/qcom-msm8960-cdp.dts b/arch/arm/boot/dts/qcom-msm8960-cdp.dts
index b72a55462caf..82d5d8267adf 100644
--- a/arch/arm/boot/dts/qcom-msm8960-cdp.dts
+++ b/arch/arm/boot/dts/qcom-msm8960-cdp.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/input/input.h>
#include "qcom-msm8960.dtsi"
diff --git a/arch/arm/boot/dts/qcom-msm8960.dtsi b/arch/arm/boot/dts/qcom-msm8960.dtsi
index 288f56e0ccf5..1733d8f40ab1 100644
--- a/arch/arm/boot/dts/qcom-msm8960.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8960.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "skeleton.dtsi"
diff --git a/arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts b/arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts
index 382bcc3231a9..4dc0b347b1ee 100644
--- a/arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts
+++ b/arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-msm8974.dtsi"
#include "qcom-pm8841.dtsi"
#include "qcom-pm8941.dtsi"
diff --git a/arch/arm/boot/dts/qcom-msm8974-sony-xperia-honami.dts b/arch/arm/boot/dts/qcom-msm8974-sony-xperia-honami.dts
index 50966378f9e4..450b8321e0a6 100644
--- a/arch/arm/boot/dts/qcom-msm8974-sony-xperia-honami.dts
+++ b/arch/arm/boot/dts/qcom-msm8974-sony-xperia-honami.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qcom-msm8974.dtsi"
#include "qcom-pm8841.dtsi"
#include "qcom-pm8941.dtsi"
diff --git a/arch/arm/boot/dts/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom-msm8974.dtsi
index a39207625354..33002fed8cc3 100644
--- a/arch/arm/boot/dts/qcom-msm8974.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8974.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/interrupt-controller/arm-gic.h>
diff --git a/arch/arm/boot/dts/qcom-pm8841.dtsi b/arch/arm/boot/dts/qcom-pm8841.dtsi
index 0512f645922e..2fd59c440903 100644
--- a/arch/arm/boot/dts/qcom-pm8841.dtsi
+++ b/arch/arm/boot/dts/qcom-pm8841.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>
diff --git a/arch/arm/boot/dts/qcom-pm8941.dtsi b/arch/arm/boot/dts/qcom-pm8941.dtsi
index 3fc9f34f45bb..1d5ef55c7ee5 100644
--- a/arch/arm/boot/dts/qcom-pm8941.dtsi
+++ b/arch/arm/boot/dts/qcom-pm8941.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/iio/qcom,spmi-vadc.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>
diff --git a/arch/arm/boot/dts/qcom-pma8084.dtsi b/arch/arm/boot/dts/qcom-pma8084.dtsi
index 82d258094156..aac7e73b6872 100644
--- a/arch/arm/boot/dts/qcom-pma8084.dtsi
+++ b/arch/arm/boot/dts/qcom-pma8084.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/iio/qcom,spmi-vadc.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>
diff --git a/arch/arm/boot/dts/sama5d2-pinfunc.h b/arch/arm/boot/dts/sama5d2-pinfunc.h
index 8a394f336003..e57191fb83de 100644
--- a/arch/arm/boot/dts/sama5d2-pinfunc.h
+++ b/arch/arm/boot/dts/sama5d2-pinfunc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define PINMUX_PIN(no, func, ioset) \
(((no) & 0xffff) | (((func) & 0xf) << 16) | (((ioset) & 0xff) << 20))
diff --git a/arch/arm/boot/dts/sama5d2.dtsi b/arch/arm/boot/dts/sama5d2.dtsi
index 38d2216c7ead..b1a26b42d190 100644
--- a/arch/arm/boot/dts/sama5d2.dtsi
+++ b/arch/arm/boot/dts/sama5d2.dtsi
@@ -1430,6 +1430,7 @@
atmel,min-sample-rate-hz = <200000>;
atmel,max-sample-rate-hz = <20000000>;
atmel,startup-time-ms = <4>;
+ atmel,trigger-edge-type = <IRQ_TYPE_EDGE_RISING>;
status = "disabled";
};
diff --git a/arch/arm/boot/dts/samsung_k3pe0e000b.dtsi b/arch/arm/boot/dts/samsung_k3pe0e000b.dtsi
index 9657a5cbc3ad..dbdda36179ee 100644
--- a/arch/arm/boot/dts/samsung_k3pe0e000b.dtsi
+++ b/arch/arm/boot/dts/samsung_k3pe0e000b.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Timings and Geometry for Samsung K3PE0E000B memory part
*/
diff --git a/arch/arm/boot/dts/skeleton.dtsi b/arch/arm/boot/dts/skeleton.dtsi
index 28b81d60b407..34eda68d9ea2 100644
--- a/arch/arm/boot/dts/skeleton.dtsi
+++ b/arch/arm/boot/dts/skeleton.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file is deprecated, and will be removed once existing users have been
* updated. New dts{,i} files should *not* include skeleton.dtsi, and should
diff --git a/arch/arm/boot/dts/skeleton64.dtsi b/arch/arm/boot/dts/skeleton64.dtsi
index b5d7f36f33de..54e637752b9d 100644
--- a/arch/arm/boot/dts/skeleton64.dtsi
+++ b/arch/arm/boot/dts/skeleton64.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Skeleton device tree in the 64 bits version; the bare minimum
* needed to boot; just include and add a compatible value. The
diff --git a/arch/arm/boot/dts/st-pincfg.h b/arch/arm/boot/dts/st-pincfg.h
index 4851c387d52d..d80551202292 100644
--- a/arch/arm/boot/dts/st-pincfg.h
+++ b/arch/arm/boot/dts/st-pincfg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ST_PINCFG_H_
#define _ST_PINCFG_H_
diff --git a/arch/arm/boot/dts/ste-nomadik-nhk15.dts b/arch/arm/boot/dts/ste-nomadik-nhk15.dts
index 1ec46a794a4d..12afdc7467e7 100644
--- a/arch/arm/boot/dts/ste-nomadik-nhk15.dts
+++ b/arch/arm/boot/dts/ste-nomadik-nhk15.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree for the ST-Ericsson Nomadik S8815 board
* Produced by Calao Systems
diff --git a/arch/arm/boot/dts/ste-nomadik-s8815.dts b/arch/arm/boot/dts/ste-nomadik-s8815.dts
index 789329030658..4445446fa828 100644
--- a/arch/arm/boot/dts/ste-nomadik-s8815.dts
+++ b/arch/arm/boot/dts/ste-nomadik-s8815.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree for the ST-Ericsson Nomadik S8815 board
* Produced by Calao Systems
diff --git a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
index adb1c0998b81..68aab50a73ab 100644
--- a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
+++ b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC
*/
diff --git a/arch/arm/boot/dts/ste-u300.dts b/arch/arm/boot/dts/ste-u300.dts
index 2f5107ffeef0..62ecb6a2fa39 100644
--- a/arch/arm/boot/dts/ste-u300.dts
+++ b/arch/arm/boot/dts/ste-u300.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device Tree for the ST-Ericsson U300 Machine and SoC
*/
diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts
index 97b1c2321ba9..293ecb957227 100644
--- a/arch/arm/boot/dts/stm32429i-eval.dts
+++ b/arch/arm/boot/dts/stm32429i-eval.dts
@@ -47,6 +47,7 @@
/dts-v1/;
#include "stm32f429.dtsi"
+#include "stm32f429-pinctrl.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
@@ -202,10 +203,8 @@
stmpe1600: stmpe1600@42 {
compatible = "st,stmpe1600";
reg = <0x42>;
- irq-gpio = <&gpioi 8 0>;
- irq-trigger = <3>;
interrupts = <8 3>;
- interrupt-parent = <&exti>;
+ interrupt-parent = <&gpioi>;
interrupt-controller;
wakeup-source;
diff --git a/arch/arm/boot/dts/stm32f4-pinctrl.dtsi b/arch/arm/boot/dts/stm32f4-pinctrl.dtsi
new file mode 100644
index 000000000000..7f3560c0211d
--- /dev/null
+++ b/arch/arm/boot/dts/stm32f4-pinctrl.dtsi
@@ -0,0 +1,343 @@
+/*
+ * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ * a) This file is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ * b) Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/pinctrl/stm32f429-pinfunc.h>
+#include <dt-bindings/mfd/stm32f4-rcc.h>
+
+/ {
+ soc {
+ pinctrl: pin-controller {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x40020000 0x3000>;
+ interrupt-parent = <&exti>;
+ st,syscfg = <&syscfg 0x8>;
+ pins-are-numbered;
+
+ gpioa: gpio@40020000 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0x0 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOA)>;
+ st,bank-name = "GPIOA";
+ };
+
+ gpiob: gpio@40020400 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0x400 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOB)>;
+ st,bank-name = "GPIOB";
+ };
+
+ gpioc: gpio@40020800 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0x800 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOC)>;
+ st,bank-name = "GPIOC";
+ };
+
+ gpiod: gpio@40020c00 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0xc00 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOD)>;
+ st,bank-name = "GPIOD";
+ };
+
+ gpioe: gpio@40021000 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0x1000 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOE)>;
+ st,bank-name = "GPIOE";
+ };
+
+ gpiof: gpio@40021400 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0x1400 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOF)>;
+ st,bank-name = "GPIOF";
+ };
+
+ gpiog: gpio@40021800 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0x1800 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOG)>;
+ st,bank-name = "GPIOG";
+ };
+
+ gpioh: gpio@40021c00 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0x1c00 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOH)>;
+ st,bank-name = "GPIOH";
+ };
+
+ gpioi: gpio@40022000 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0x2000 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOI)>;
+ st,bank-name = "GPIOI";
+ };
+
+ gpioj: gpio@40022400 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0x2400 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOJ)>;
+ st,bank-name = "GPIOJ";
+ };
+
+ gpiok: gpio@40022800 {
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ reg = <0x2800 0x400>;
+ clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOK)>;
+ st,bank-name = "GPIOK";
+ };
+
+ usart1_pins_a: usart1@0 {
+ pins1 {
+ pinmux = <STM32F429_PA9_FUNC_USART1_TX>;
+ bias-disable;
+ drive-push-pull;
+ slew-rate = <0>;
+ };
+ pins2 {
+ pinmux = <STM32F429_PA10_FUNC_USART1_RX>;
+ bias-disable;
+ };
+ };
+
+ usart3_pins_a: usart3@0 {
+ pins1 {
+ pinmux = <STM32F429_PB10_FUNC_USART3_TX>;
+ bias-disable;
+ drive-push-pull;
+ slew-rate = <0>;
+ };
+ pins2 {
+ pinmux = <STM32F429_PB11_FUNC_USART3_RX>;
+ bias-disable;
+ };
+ };
+
+ usbotg_fs_pins_a: usbotg_fs@0 {
+ pins {
+ pinmux = <STM32F429_PA10_FUNC_OTG_FS_ID>,
+ <STM32F429_PA11_FUNC_OTG_FS_DM>,
+ <STM32F429_PA12_FUNC_OTG_FS_DP>;
+ bias-disable;
+ drive-push-pull;
+ slew-rate = <2>;
+ };
+ };
+
+ usbotg_fs_pins_b: usbotg_fs@1 {
+ pins {
+ pinmux = <STM32F429_PB12_FUNC_OTG_HS_ID>,
+ <STM32F429_PB14_FUNC_OTG_HS_DM>,
+ <STM32F429_PB15_FUNC_OTG_HS_DP>;
+ bias-disable;
+ drive-push-pull;
+ slew-rate = <2>;
+ };
+ };
+
+ usbotg_hs_pins_a: usbotg_hs@0 {
+ pins {
+ pinmux = <STM32F429_PH4_FUNC_OTG_HS_ULPI_NXT>,
+ <STM32F429_PI11_FUNC_OTG_HS_ULPI_DIR>,
+ <STM32F429_PC0_FUNC_OTG_HS_ULPI_STP>,
+ <STM32F429_PA5_FUNC_OTG_HS_ULPI_CK>,
+ <STM32F429_PA3_FUNC_OTG_HS_ULPI_D0>,
+ <STM32F429_PB0_FUNC_OTG_HS_ULPI_D1>,
+ <STM32F429_PB1_FUNC_OTG_HS_ULPI_D2>,
+ <STM32F429_PB10_FUNC_OTG_HS_ULPI_D3>,
+ <STM32F429_PB11_FUNC_OTG_HS_ULPI_D4>,
+ <STM32F429_PB12_FUNC_OTG_HS_ULPI_D5>,
+ <STM32F429_PB13_FUNC_OTG_HS_ULPI_D6>,
+ <STM32F429_PB5_FUNC_OTG_HS_ULPI_D7>;
+ bias-disable;
+ drive-push-pull;
+ slew-rate = <2>;
+ };
+ };
+
+ ethernet_mii: mii@0 {
+ pins {
+ pinmux = <STM32F429_PG13_FUNC_ETH_MII_TXD0_ETH_RMII_TXD0>,
+ <STM32F429_PG14_FUNC_ETH_MII_TXD1_ETH_RMII_TXD1>,
+ <STM32F429_PC2_FUNC_ETH_MII_TXD2>,
+ <STM32F429_PB8_FUNC_ETH_MII_TXD3>,
+ <STM32F429_PC3_FUNC_ETH_MII_TX_CLK>,
+ <STM32F429_PG11_FUNC_ETH_MII_TX_EN_ETH_RMII_TX_EN>,
+ <STM32F429_PA2_FUNC_ETH_MDIO>,
+ <STM32F429_PC1_FUNC_ETH_MDC>,
+ <STM32F429_PA1_FUNC_ETH_MII_RX_CLK_ETH_RMII_REF_CLK>,
+ <STM32F429_PA7_FUNC_ETH_MII_RX_DV_ETH_RMII_CRS_DV>,
+ <STM32F429_PC4_FUNC_ETH_MII_RXD0_ETH_RMII_RXD0>,
+ <STM32F429_PC5_FUNC_ETH_MII_RXD1_ETH_RMII_RXD1>,
+ <STM32F429_PH6_FUNC_ETH_MII_RXD2>,
+ <STM32F429_PH7_FUNC_ETH_MII_RXD3>;
+ slew-rate = <2>;
+ };
+ };
+
+ adc3_in8_pin: adc@200 {
+ pins {
+ pinmux = <STM32F429_PF10_FUNC_ANALOG>;
+ };
+ };
+
+ pwm1_pins: pwm@1 {
+ pins {
+ pinmux = <STM32F429_PA8_FUNC_TIM1_CH1>,
+ <STM32F429_PB13_FUNC_TIM1_CH1N>,
+ <STM32F429_PB12_FUNC_TIM1_BKIN>;
+ };
+ };
+
+ pwm3_pins: pwm@3 {
+ pins {
+ pinmux = <STM32F429_PB4_FUNC_TIM3_CH1>,
+ <STM32F429_PB5_FUNC_TIM3_CH2>;
+ };
+ };
+
+ i2c1_pins: i2c1@0 {
+ pins {
+ pinmux = <STM32F429_PB9_FUNC_I2C1_SDA>,
+ <STM32F429_PB6_FUNC_I2C1_SCL>;
+ bias-disable;
+ drive-open-drain;
+ slew-rate = <3>;
+ };
+ };
+
+ ltdc_pins: ltdc@0 {
+ pins {
+ pinmux = <STM32F429_PI12_FUNC_LCD_HSYNC>,
+ <STM32F429_PI13_FUNC_LCD_VSYNC>,
+ <STM32F429_PI14_FUNC_LCD_CLK>,
+ <STM32F429_PI15_FUNC_LCD_R0>,
+ <STM32F429_PJ0_FUNC_LCD_R1>,
+ <STM32F429_PJ1_FUNC_LCD_R2>,
+ <STM32F429_PJ2_FUNC_LCD_R3>,
+ <STM32F429_PJ3_FUNC_LCD_R4>,
+ <STM32F429_PJ4_FUNC_LCD_R5>,
+ <STM32F429_PJ5_FUNC_LCD_R6>,
+ <STM32F429_PJ6_FUNC_LCD_R7>,
+ <STM32F429_PJ7_FUNC_LCD_G0>,
+ <STM32F429_PJ8_FUNC_LCD_G1>,
+ <STM32F429_PJ9_FUNC_LCD_G2>,
+ <STM32F429_PJ10_FUNC_LCD_G3>,
+ <STM32F429_PJ11_FUNC_LCD_G4>,
+ <STM32F429_PJ12_FUNC_LCD_B0>,
+ <STM32F429_PJ13_FUNC_LCD_B1>,
+ <STM32F429_PJ14_FUNC_LCD_B2>,
+ <STM32F429_PJ15_FUNC_LCD_B3>,
+ <STM32F429_PK0_FUNC_LCD_G5>,
+ <STM32F429_PK1_FUNC_LCD_G6>,
+ <STM32F429_PK2_FUNC_LCD_G7>,
+ <STM32F429_PK3_FUNC_LCD_B4>,
+ <STM32F429_PK4_FUNC_LCD_B5>,
+ <STM32F429_PK5_FUNC_LCD_B6>,
+ <STM32F429_PK6_FUNC_LCD_B7>,
+ <STM32F429_PK7_FUNC_LCD_DE>;
+ slew-rate = <2>;
+ };
+ };
+
+ dcmi_pins: dcmi@0 {
+ pins {
+ pinmux = <STM32F429_PA4_FUNC_DCMI_HSYNC>,
+ <STM32F429_PB7_FUNC_DCMI_VSYNC>,
+ <STM32F429_PA6_FUNC_DCMI_PIXCLK>,
+ <STM32F429_PC6_FUNC_DCMI_D0>,
+ <STM32F429_PC7_FUNC_DCMI_D1>,
+ <STM32F429_PC8_FUNC_DCMI_D2>,
+ <STM32F429_PC9_FUNC_DCMI_D3>,
+ <STM32F429_PC11_FUNC_DCMI_D4>,
+ <STM32F429_PD3_FUNC_DCMI_D5>,
+ <STM32F429_PB8_FUNC_DCMI_D6>,
+ <STM32F429_PE6_FUNC_DCMI_D7>,
+ <STM32F429_PC10_FUNC_DCMI_D8>,
+ <STM32F429_PC12_FUNC_DCMI_D9>,
+ <STM32F429_PD6_FUNC_DCMI_D10>,
+ <STM32F429_PD2_FUNC_DCMI_D11>;
+ bias-disable;
+ drive-push-pull;
+ slew-rate = <3>;
+ };
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/stm32f429-disco.dts b/arch/arm/boot/dts/stm32f429-disco.dts
index c66d617e4245..5ceb2cf3777f 100644
--- a/arch/arm/boot/dts/stm32f429-disco.dts
+++ b/arch/arm/boot/dts/stm32f429-disco.dts
@@ -47,6 +47,7 @@
/dts-v1/;
#include "stm32f429.dtsi"
+#include "stm32f429-pinctrl.dtsi"
#include <dt-bindings/input/input.h>
/ {
diff --git a/arch/arm/boot/dts/stm32f429-pinctrl.dtsi b/arch/arm/boot/dts/stm32f429-pinctrl.dtsi
new file mode 100644
index 000000000000..3e7a17d9112e
--- /dev/null
+++ b/arch/arm/boot/dts/stm32f429-pinctrl.dtsi
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ * a) This file is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ * b) Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "stm32f4-pinctrl.dtsi"
+
+/ {
+ soc {
+ pinctrl: pin-controller {
+ compatible = "st,stm32f429-pinctrl";
+
+ gpioa: gpio@40020000 {
+ gpio-ranges = <&pinctrl 0 0 16>;
+ };
+
+ gpiob: gpio@40020400 {
+ gpio-ranges = <&pinctrl 0 16 16>;
+ };
+
+ gpioc: gpio@40020800 {
+ gpio-ranges = <&pinctrl 0 32 16>;
+ };
+
+ gpiod: gpio@40020c00 {
+ gpio-ranges = <&pinctrl 0 48 16>;
+ };
+
+ gpioe: gpio@40021000 {
+ gpio-ranges = <&pinctrl 0 64 16>;
+ };
+
+ gpiof: gpio@40021400 {
+ gpio-ranges = <&pinctrl 0 80 16>;
+ };
+
+ gpiog: gpio@40021800 {
+ gpio-ranges = <&pinctrl 0 96 16>;
+ };
+
+ gpioh: gpio@40021c00 {
+ gpio-ranges = <&pinctrl 0 112 16>;
+ };
+
+ gpioi: gpio@40022000 {
+ gpio-ranges = <&pinctrl 0 128 16>;
+ };
+
+ gpioj: gpio@40022400 {
+ gpio-ranges = <&pinctrl 0 144 16>;
+ };
+
+ gpiok: gpio@40022800 {
+ gpio-ranges = <&pinctrl 0 160 8>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi
index dd7e99b1f43b..5b36eb114ddc 100644
--- a/arch/arm/boot/dts/stm32f429.dtsi
+++ b/arch/arm/boot/dts/stm32f429.dtsi
@@ -47,7 +47,6 @@
#include "skeleton.dtsi"
#include "armv7-m.dtsi"
-#include <dt-bindings/pinctrl/stm32f429-pinfunc.h>
#include <dt-bindings/clock/stm32fx-clock.h>
#include <dt-bindings/mfd/stm32f4-rcc.h>
@@ -591,302 +590,6 @@
status = "disabled";
};
- pinctrl: pin-controller {
- #address-cells = <1>;
- #size-cells = <1>;
- compatible = "st,stm32f429-pinctrl";
- ranges = <0 0x40020000 0x3000>;
- interrupt-parent = <&exti>;
- st,syscfg = <&syscfg 0x8>;
- pins-are-numbered;
-
- gpioa: gpio@40020000 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0x0 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOA)>;
- st,bank-name = "GPIOA";
- };
-
- gpiob: gpio@40020400 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0x400 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOB)>;
- st,bank-name = "GPIOB";
- };
-
- gpioc: gpio@40020800 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0x800 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOC)>;
- st,bank-name = "GPIOC";
- };
-
- gpiod: gpio@40020c00 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0xc00 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOD)>;
- st,bank-name = "GPIOD";
- };
-
- gpioe: gpio@40021000 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0x1000 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOE)>;
- st,bank-name = "GPIOE";
- };
-
- gpiof: gpio@40021400 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0x1400 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOF)>;
- st,bank-name = "GPIOF";
- };
-
- gpiog: gpio@40021800 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0x1800 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOG)>;
- st,bank-name = "GPIOG";
- };
-
- gpioh: gpio@40021c00 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0x1c00 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOH)>;
- st,bank-name = "GPIOH";
- };
-
- gpioi: gpio@40022000 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0x2000 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOI)>;
- st,bank-name = "GPIOI";
- };
-
- gpioj: gpio@40022400 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0x2400 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOJ)>;
- st,bank-name = "GPIOJ";
- };
-
- gpiok: gpio@40022800 {
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- reg = <0x2800 0x400>;
- clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOK)>;
- st,bank-name = "GPIOK";
- };
-
- usart1_pins_a: usart1@0 {
- pins1 {
- pinmux = <STM32F429_PA9_FUNC_USART1_TX>;
- bias-disable;
- drive-push-pull;
- slew-rate = <0>;
- };
- pins2 {
- pinmux = <STM32F429_PA10_FUNC_USART1_RX>;
- bias-disable;
- };
- };
-
- usart3_pins_a: usart3@0 {
- pins1 {
- pinmux = <STM32F429_PB10_FUNC_USART3_TX>;
- bias-disable;
- drive-push-pull;
- slew-rate = <0>;
- };
- pins2 {
- pinmux = <STM32F429_PB11_FUNC_USART3_RX>;
- bias-disable;
- };
- };
-
- usbotg_fs_pins_a: usbotg_fs@0 {
- pins {
- pinmux = <STM32F429_PA10_FUNC_OTG_FS_ID>,
- <STM32F429_PA11_FUNC_OTG_FS_DM>,
- <STM32F429_PA12_FUNC_OTG_FS_DP>;
- bias-disable;
- drive-push-pull;
- slew-rate = <2>;
- };
- };
-
- usbotg_fs_pins_b: usbotg_fs@1 {
- pins {
- pinmux = <STM32F429_PB12_FUNC_OTG_HS_ID>,
- <STM32F429_PB14_FUNC_OTG_HS_DM>,
- <STM32F429_PB15_FUNC_OTG_HS_DP>;
- bias-disable;
- drive-push-pull;
- slew-rate = <2>;
- };
- };
-
- usbotg_hs_pins_a: usbotg_hs@0 {
- pins {
- pinmux = <STM32F429_PH4_FUNC_OTG_HS_ULPI_NXT>,
- <STM32F429_PI11_FUNC_OTG_HS_ULPI_DIR>,
- <STM32F429_PC0_FUNC_OTG_HS_ULPI_STP>,
- <STM32F429_PA5_FUNC_OTG_HS_ULPI_CK>,
- <STM32F429_PA3_FUNC_OTG_HS_ULPI_D0>,
- <STM32F429_PB0_FUNC_OTG_HS_ULPI_D1>,
- <STM32F429_PB1_FUNC_OTG_HS_ULPI_D2>,
- <STM32F429_PB10_FUNC_OTG_HS_ULPI_D3>,
- <STM32F429_PB11_FUNC_OTG_HS_ULPI_D4>,
- <STM32F429_PB12_FUNC_OTG_HS_ULPI_D5>,
- <STM32F429_PB13_FUNC_OTG_HS_ULPI_D6>,
- <STM32F429_PB5_FUNC_OTG_HS_ULPI_D7>;
- bias-disable;
- drive-push-pull;
- slew-rate = <2>;
- };
- };
-
- ethernet_mii: mii@0 {
- pins {
- pinmux = <STM32F429_PG13_FUNC_ETH_MII_TXD0_ETH_RMII_TXD0>,
- <STM32F429_PG14_FUNC_ETH_MII_TXD1_ETH_RMII_TXD1>,
- <STM32F429_PC2_FUNC_ETH_MII_TXD2>,
- <STM32F429_PB8_FUNC_ETH_MII_TXD3>,
- <STM32F429_PC3_FUNC_ETH_MII_TX_CLK>,
- <STM32F429_PG11_FUNC_ETH_MII_TX_EN_ETH_RMII_TX_EN>,
- <STM32F429_PA2_FUNC_ETH_MDIO>,
- <STM32F429_PC1_FUNC_ETH_MDC>,
- <STM32F429_PA1_FUNC_ETH_MII_RX_CLK_ETH_RMII_REF_CLK>,
- <STM32F429_PA7_FUNC_ETH_MII_RX_DV_ETH_RMII_CRS_DV>,
- <STM32F429_PC4_FUNC_ETH_MII_RXD0_ETH_RMII_RXD0>,
- <STM32F429_PC5_FUNC_ETH_MII_RXD1_ETH_RMII_RXD1>,
- <STM32F429_PH6_FUNC_ETH_MII_RXD2>,
- <STM32F429_PH7_FUNC_ETH_MII_RXD3>;
- slew-rate = <2>;
- };
- };
-
- adc3_in8_pin: adc@200 {
- pins {
- pinmux = <STM32F429_PF10_FUNC_ANALOG>;
- };
- };
-
- pwm1_pins: pwm@1 {
- pins {
- pinmux = <STM32F429_PA8_FUNC_TIM1_CH1>,
- <STM32F429_PB13_FUNC_TIM1_CH1N>,
- <STM32F429_PB12_FUNC_TIM1_BKIN>;
- };
- };
-
- pwm3_pins: pwm@3 {
- pins {
- pinmux = <STM32F429_PB4_FUNC_TIM3_CH1>,
- <STM32F429_PB5_FUNC_TIM3_CH2>;
- };
- };
-
- i2c1_pins: i2c1@0 {
- pins {
- pinmux = <STM32F429_PB9_FUNC_I2C1_SDA>,
- <STM32F429_PB6_FUNC_I2C1_SCL>;
- bias-disable;
- drive-open-drain;
- slew-rate = <3>;
- };
- };
-
- ltdc_pins: ltdc@0 {
- pins {
- pinmux = <STM32F429_PI12_FUNC_LCD_HSYNC>,
- <STM32F429_PI13_FUNC_LCD_VSYNC>,
- <STM32F429_PI14_FUNC_LCD_CLK>,
- <STM32F429_PI15_FUNC_LCD_R0>,
- <STM32F429_PJ0_FUNC_LCD_R1>,
- <STM32F429_PJ1_FUNC_LCD_R2>,
- <STM32F429_PJ2_FUNC_LCD_R3>,
- <STM32F429_PJ3_FUNC_LCD_R4>,
- <STM32F429_PJ4_FUNC_LCD_R5>,
- <STM32F429_PJ5_FUNC_LCD_R6>,
- <STM32F429_PJ6_FUNC_LCD_R7>,
- <STM32F429_PJ7_FUNC_LCD_G0>,
- <STM32F429_PJ8_FUNC_LCD_G1>,
- <STM32F429_PJ9_FUNC_LCD_G2>,
- <STM32F429_PJ10_FUNC_LCD_G3>,
- <STM32F429_PJ11_FUNC_LCD_G4>,
- <STM32F429_PJ12_FUNC_LCD_B0>,
- <STM32F429_PJ13_FUNC_LCD_B1>,
- <STM32F429_PJ14_FUNC_LCD_B2>,
- <STM32F429_PJ15_FUNC_LCD_B3>,
- <STM32F429_PK0_FUNC_LCD_G5>,
- <STM32F429_PK1_FUNC_LCD_G6>,
- <STM32F429_PK2_FUNC_LCD_G7>,
- <STM32F429_PK3_FUNC_LCD_B4>,
- <STM32F429_PK4_FUNC_LCD_B5>,
- <STM32F429_PK5_FUNC_LCD_B6>,
- <STM32F429_PK6_FUNC_LCD_B7>,
- <STM32F429_PK7_FUNC_LCD_DE>;
- slew-rate = <2>;
- };
- };
-
- dcmi_pins: dcmi@0 {
- pins {
- pinmux = <STM32F429_PA4_FUNC_DCMI_HSYNC>,
- <STM32F429_PB7_FUNC_DCMI_VSYNC>,
- <STM32F429_PA6_FUNC_DCMI_PIXCLK>,
- <STM32F429_PC6_FUNC_DCMI_D0>,
- <STM32F429_PC7_FUNC_DCMI_D1>,
- <STM32F429_PC8_FUNC_DCMI_D2>,
- <STM32F429_PC9_FUNC_DCMI_D3>,
- <STM32F429_PC11_FUNC_DCMI_D4>,
- <STM32F429_PD3_FUNC_DCMI_D5>,
- <STM32F429_PB8_FUNC_DCMI_D6>,
- <STM32F429_PE6_FUNC_DCMI_D7>,
- <STM32F429_PC10_FUNC_DCMI_D8>,
- <STM32F429_PC12_FUNC_DCMI_D9>,
- <STM32F429_PD6_FUNC_DCMI_D10>,
- <STM32F429_PD2_FUNC_DCMI_D11>;
- bias-disable;
- drive-push-pull;
- slew-rate = <3>;
- };
- };
- };
-
crc: crc@40023000 {
compatible = "st,stm32f4-crc";
reg = <0x40023000 0x400>;
diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts
index 6ae1f037f3f0..c18acbe4cf4e 100644
--- a/arch/arm/boot/dts/stm32f469-disco.dts
+++ b/arch/arm/boot/dts/stm32f469-disco.dts
@@ -47,6 +47,7 @@
/dts-v1/;
#include "stm32f429.dtsi"
+#include "stm32f469-pinctrl.dtsi"
/ {
model = "STMicroelectronics STM32F469i-DISCO board";
diff --git a/arch/arm/boot/dts/stm32f469-pinctrl.dtsi b/arch/arm/boot/dts/stm32f469-pinctrl.dtsi
new file mode 100644
index 000000000000..fff542662eea
--- /dev/null
+++ b/arch/arm/boot/dts/stm32f469-pinctrl.dtsi
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ * a) This file is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ * b) Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "stm32f4-pinctrl.dtsi"
+
+/ {
+ soc {
+ pinctrl: pin-controller {
+ compatible = "st,stm32f469-pinctrl";
+
+ gpioa: gpio@40020000 {
+ gpio-ranges = <&pinctrl 0 0 16>;
+ };
+
+ gpiob: gpio@40020400 {
+ gpio-ranges = <&pinctrl 0 16 16>;
+ };
+
+ gpioc: gpio@40020800 {
+ gpio-ranges = <&pinctrl 0 32 16>;
+ };
+
+ gpiod: gpio@40020c00 {
+ gpio-ranges = <&pinctrl 0 48 16>;
+ };
+
+ gpioe: gpio@40021000 {
+ gpio-ranges = <&pinctrl 0 64 16>;
+ };
+
+ gpiof: gpio@40021400 {
+ gpio-ranges = <&pinctrl 0 80 16>;
+ };
+
+ gpiog: gpio@40021800 {
+ gpio-ranges = <&pinctrl 0 96 16>;
+ };
+
+ gpioh: gpio@40021c00 {
+ gpio-ranges = <&pinctrl 0 112 16>;
+ };
+
+ gpioi: gpio@40022000 {
+ gpio-ranges = <&pinctrl 0 128 16>;
+ };
+
+ gpioj: gpio@40022400 {
+ gpio-ranges = <&pinctrl 0 144 6>,
+ <&pinctrl 12 156 4>;
+ };
+
+ gpiok: gpio@40022800 {
+ gpio-ranges = <&pinctrl 3 163 5>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi
index b147cb0dc14b..eef072a21acc 100644
--- a/arch/arm/boot/dts/sun6i-a31.dtsi
+++ b/arch/arm/boot/dts/sun6i-a31.dtsi
@@ -311,8 +311,8 @@
#size-cells = <0>;
reg = <0>;
- tcon1_in_drc1: endpoint@0 {
- reg = <0>;
+ tcon1_in_drc1: endpoint@1 {
+ reg = <1>;
remote-endpoint = <&drc1_out_tcon1>;
};
};
@@ -1012,8 +1012,8 @@
#size-cells = <0>;
reg = <1>;
- be1_out_drc1: endpoint@0 {
- reg = <0>;
+ be1_out_drc1: endpoint@1 {
+ reg = <1>;
remote-endpoint = <&drc1_in_be1>;
};
};
@@ -1042,8 +1042,8 @@
#size-cells = <0>;
reg = <0>;
- drc1_in_be1: endpoint@0 {
- reg = <0>;
+ drc1_in_be1: endpoint@1 {
+ reg = <1>;
remote-endpoint = <&be1_out_drc1>;
};
};
@@ -1053,8 +1053,8 @@
#size-cells = <0>;
reg = <1>;
- drc1_out_tcon1: endpoint@0 {
- reg = <0>;
+ drc1_out_tcon1: endpoint@1 {
+ reg = <1>;
remote-endpoint = <&tcon1_in_drc1>;
};
};
diff --git a/arch/arm/boot/dts/tango4-common.dtsi b/arch/arm/boot/dts/tango4-common.dtsi
index 0c8cad4d6ee6..12ab6e0c0331 100644
--- a/arch/arm/boot/dts/tango4-common.dtsi
+++ b/arch/arm/boot/dts/tango4-common.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Based on Mans Rullgard's Tango3 DT
* https://github.com/mansr/linux-tangox
diff --git a/arch/arm/boot/dts/tango4-smp8758.dtsi b/arch/arm/boot/dts/tango4-smp8758.dtsi
index eca33d568690..1c6a5bf1a86b 100644
--- a/arch/arm/boot/dts/tango4-smp8758.dtsi
+++ b/arch/arm/boot/dts/tango4-smp8758.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "tango4-common.dtsi"
/ {
diff --git a/arch/arm/boot/dts/tango4-vantage-1172.dts b/arch/arm/boot/dts/tango4-vantage-1172.dts
index 13bcc460bcb2..d237d7f02c51 100644
--- a/arch/arm/boot/dts/tango4-vantage-1172.dts
+++ b/arch/arm/boot/dts/tango4-vantage-1172.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tango4-smp8758.dtsi"
diff --git a/arch/arm/boot/dts/tegra114-dalmore.dts b/arch/arm/boot/dts/tegra114-dalmore.dts
index 5af4dd321952..acd6cf51b15b 100644
--- a/arch/arm/boot/dts/tegra114-dalmore.dts
+++ b/arch/arm/boot/dts/tegra114-dalmore.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This dts file supports Dalmore A04.
* Other board revisions are not supported
diff --git a/arch/arm/boot/dts/tegra114-roth.dts b/arch/arm/boot/dts/tegra114-roth.dts
index 966a7fc044af..7ed7370ee67a 100644
--- a/arch/arm/boot/dts/tegra114-roth.dts
+++ b/arch/arm/boot/dts/tegra114-roth.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/tegra114-tn7.dts b/arch/arm/boot/dts/tegra114-tn7.dts
index a161fa1dfb61..7fc4a8b31e45 100644
--- a/arch/arm/boot/dts/tegra114-tn7.dts
+++ b/arch/arm/boot/dts/tegra114-tn7.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/tegra114.dtsi b/arch/arm/boot/dts/tegra114.dtsi
index 8932ea3afd5f..0e4a13295d8a 100644
--- a/arch/arm/boot/dts/tegra114.dtsi
+++ b/arch/arm/boot/dts/tegra114.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/tegra114-car.h>
#include <dt-bindings/gpio/tegra-gpio.h>
#include <dt-bindings/memory/tegra114-mc.h>
diff --git a/arch/arm/boot/dts/tegra124-jetson-tk1-emc.dtsi b/arch/arm/boot/dts/tegra124-jetson-tk1-emc.dtsi
index accb7055165a..784a529e1f19 100644
--- a/arch/arm/boot/dts/tegra124-jetson-tk1-emc.dtsi
+++ b/arch/arm/boot/dts/tegra124-jetson-tk1-emc.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
clock@60006000 {
emc-timings-3 {
diff --git a/arch/arm/boot/dts/tegra124-jetson-tk1.dts b/arch/arm/boot/dts/tegra124-jetson-tk1.dts
index 61873d642a45..e8e777b8ef1b 100644
--- a/arch/arm/boot/dts/tegra124-jetson-tk1.dts
+++ b/arch/arm/boot/dts/tegra124-jetson-tk1.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/tegra124-nyan-big-emc.dtsi b/arch/arm/boot/dts/tegra124-nyan-big-emc.dtsi
index 4458e86b2769..9af21fe93a5c 100644
--- a/arch/arm/boot/dts/tegra124-nyan-big-emc.dtsi
+++ b/arch/arm/boot/dts/tegra124-nyan-big-emc.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
clock@60006000 {
emc-timings-1 {
diff --git a/arch/arm/boot/dts/tegra124-nyan-big.dts b/arch/arm/boot/dts/tegra124-nyan-big.dts
index 12eb7809d9ab..d97791b98958 100644
--- a/arch/arm/boot/dts/tegra124-nyan-big.dts
+++ b/arch/arm/boot/dts/tegra124-nyan-big.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra124-nyan.dtsi"
diff --git a/arch/arm/boot/dts/tegra124-nyan-blaze-emc.dtsi b/arch/arm/boot/dts/tegra124-nyan-blaze-emc.dtsi
index 4e7b59e25728..c7c31d4c1a2b 100644
--- a/arch/arm/boot/dts/tegra124-nyan-blaze-emc.dtsi
+++ b/arch/arm/boot/dts/tegra124-nyan-blaze-emc.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
clock@60006000 {
emc-timings-1 {
diff --git a/arch/arm/boot/dts/tegra124-nyan-blaze.dts b/arch/arm/boot/dts/tegra124-nyan-blaze.dts
index 1078a73d5092..2a029ee86dd7 100644
--- a/arch/arm/boot/dts/tegra124-nyan-blaze.dts
+++ b/arch/arm/boot/dts/tegra124-nyan-blaze.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra124-nyan.dtsi"
diff --git a/arch/arm/boot/dts/tegra124-nyan.dtsi b/arch/arm/boot/dts/tegra124-nyan.dtsi
index 5cf987b5401e..3609367037a6 100644
--- a/arch/arm/boot/dts/tegra124-nyan.dtsi
+++ b/arch/arm/boot/dts/tegra124-nyan.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/input/input.h>
#include "tegra124.dtsi"
diff --git a/arch/arm/boot/dts/tegra124-venice2.dts b/arch/arm/boot/dts/tegra124-venice2.dts
index 6e59cec0962b..32d9079f025b 100644
--- a/arch/arm/boot/dts/tegra124-venice2.dts
+++ b/arch/arm/boot/dts/tegra124-venice2.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/tegra124.dtsi b/arch/arm/boot/dts/tegra124.dtsi
index 8baf00b89efb..a7e43dcbf744 100644
--- a/arch/arm/boot/dts/tegra124.dtsi
+++ b/arch/arm/boot/dts/tegra124.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/tegra124-car.h>
#include <dt-bindings/gpio/tegra-gpio.h>
#include <dt-bindings/memory/tegra124-mc.h>
diff --git a/arch/arm/boot/dts/tegra20-colibri-512.dtsi b/arch/arm/boot/dts/tegra20-colibri-512.dtsi
index 1242b841f147..813ae34edd6a 100644
--- a/arch/arm/boot/dts/tegra20-colibri-512.dtsi
+++ b/arch/arm/boot/dts/tegra20-colibri-512.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "tegra20.dtsi"
/ {
diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts
index 41749693ec3c..628a55a9318b 100644
--- a/arch/arm/boot/dts/tegra20-harmony.dts
+++ b/arch/arm/boot/dts/tegra20-harmony.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/tegra20-iris-512.dts b/arch/arm/boot/dts/tegra20-iris-512.dts
index bb56dfe9e10c..40126388946d 100644
--- a/arch/arm/boot/dts/tegra20-iris-512.dts
+++ b/arch/arm/boot/dts/tegra20-iris-512.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra20-colibri-512.dtsi"
diff --git a/arch/arm/boot/dts/tegra20-medcom-wide.dts b/arch/arm/boot/dts/tegra20-medcom-wide.dts
index 34c6588e92ef..cda5448c2ace 100644
--- a/arch/arm/boot/dts/tegra20-medcom-wide.dts
+++ b/arch/arm/boot/dts/tegra20-medcom-wide.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra20-tamonten.dtsi"
diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts
index bfa9421fcf94..30436969adc0 100644
--- a/arch/arm/boot/dts/tegra20-paz00.dts
+++ b/arch/arm/boot/dts/tegra20-paz00.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/tegra20-plutux.dts b/arch/arm/boot/dts/tegra20-plutux.dts
index a10b415bbdee..429e4605fbdb 100644
--- a/arch/arm/boot/dts/tegra20-plutux.dts
+++ b/arch/arm/boot/dts/tegra20-plutux.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra20-tamonten.dtsi"
diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts
index 2017acacc00c..284aae351ff2 100644
--- a/arch/arm/boot/dts/tegra20-seaboard.dts
+++ b/arch/arm/boot/dts/tegra20-seaboard.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/tegra20-tamonten.dtsi b/arch/arm/boot/dts/tegra20-tamonten.dtsi
index 7361f4a82e80..872046d48709 100644
--- a/arch/arm/boot/dts/tegra20-tamonten.dtsi
+++ b/arch/arm/boot/dts/tegra20-tamonten.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "tegra20.dtsi"
/ {
diff --git a/arch/arm/boot/dts/tegra20-tec.dts b/arch/arm/boot/dts/tegra20-tec.dts
index 9cb534f4441e..4dec27737238 100644
--- a/arch/arm/boot/dts/tegra20-tec.dts
+++ b/arch/arm/boot/dts/tegra20-tec.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra20-tamonten.dtsi"
diff --git a/arch/arm/boot/dts/tegra20-trimslice.dts b/arch/arm/boot/dts/tegra20-trimslice.dts
index b902ab594afa..d55c6b240a30 100644
--- a/arch/arm/boot/dts/tegra20-trimslice.dts
+++ b/arch/arm/boot/dts/tegra20-trimslice.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/tegra20-ventana.dts b/arch/arm/boot/dts/tegra20-ventana.dts
index 8f0aaabf7e28..ee3fbf941e79 100644
--- a/arch/arm/boot/dts/tegra20-ventana.dts
+++ b/arch/arm/boot/dts/tegra20-ventana.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/tegra20.dtsi b/arch/arm/boot/dts/tegra20.dtsi
index 7c85f97f72ea..914f59166a99 100644
--- a/arch/arm/boot/dts/tegra20.dtsi
+++ b/arch/arm/boot/dts/tegra20.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/tegra20-car.h>
#include <dt-bindings/gpio/tegra-gpio.h>
#include <dt-bindings/pinctrl/pinctrl-tegra.h>
diff --git a/arch/arm/boot/dts/tegra30-apalis-eval.dts b/arch/arm/boot/dts/tegra30-apalis-eval.dts
index fc530e4a96c4..07b945b0391a 100644
--- a/arch/arm/boot/dts/tegra30-apalis-eval.dts
+++ b/arch/arm/boot/dts/tegra30-apalis-eval.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm/boot/dts/tegra30-apalis.dtsi b/arch/arm/boot/dts/tegra30-apalis.dtsi
index 7a6a1a014603..faa8cd2914e8 100644
--- a/arch/arm/boot/dts/tegra30-apalis.dtsi
+++ b/arch/arm/boot/dts/tegra30-apalis.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "tegra30.dtsi"
/*
diff --git a/arch/arm/boot/dts/tegra30-beaver.dts b/arch/arm/boot/dts/tegra30-beaver.dts
index 3e104ddeb220..5331a8f7dcf8 100644
--- a/arch/arm/boot/dts/tegra30-beaver.dts
+++ b/arch/arm/boot/dts/tegra30-beaver.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra30.dtsi"
diff --git a/arch/arm/boot/dts/tegra30-cardhu-a02.dts b/arch/arm/boot/dts/tegra30-cardhu-a02.dts
index c9bfedcca6ed..a02ec5082287 100644
--- a/arch/arm/boot/dts/tegra30-cardhu-a02.dts
+++ b/arch/arm/boot/dts/tegra30-cardhu-a02.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra30-cardhu.dtsi"
diff --git a/arch/arm/boot/dts/tegra30-cardhu-a04.dts b/arch/arm/boot/dts/tegra30-cardhu-a04.dts
index fadf55e46b2b..4dbd4af679f0 100644
--- a/arch/arm/boot/dts/tegra30-cardhu-a04.dts
+++ b/arch/arm/boot/dts/tegra30-cardhu-a04.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra30-cardhu.dtsi"
diff --git a/arch/arm/boot/dts/tegra30-cardhu.dtsi b/arch/arm/boot/dts/tegra30-cardhu.dtsi
index 83dc14a9b353..92a9740c533f 100644
--- a/arch/arm/boot/dts/tegra30-cardhu.dtsi
+++ b/arch/arm/boot/dts/tegra30-cardhu.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/input/input.h>
#include "tegra30.dtsi"
diff --git a/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts b/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
index a8c0318743b6..3c5fb2430212 100644
--- a/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
+++ b/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra30-colibri.dtsi"
diff --git a/arch/arm/boot/dts/tegra30-colibri.dtsi b/arch/arm/boot/dts/tegra30-colibri.dtsi
index 5360d638eedc..139bfa028b04 100644
--- a/arch/arm/boot/dts/tegra30-colibri.dtsi
+++ b/arch/arm/boot/dts/tegra30-colibri.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/input/input.h>
#include "tegra30.dtsi"
diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
index 13960fda7471..c3e9f1e847db 100644
--- a/arch/arm/boot/dts/tegra30.dtsi
+++ b/arch/arm/boot/dts/tegra30.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/tegra30-car.h>
#include <dt-bindings/gpio/tegra-gpio.h>
#include <dt-bindings/memory/tegra30-mc.h>
diff --git a/arch/arm/boot/dts/versatile-ab.dts b/arch/arm/boot/dts/versatile-ab.dts
index 409e069b3a84..4a51612996bc 100644
--- a/arch/arm/boot/dts/versatile-ab.dts
+++ b/arch/arm/boot/dts/versatile-ab.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "skeleton.dtsi"
diff --git a/arch/arm/boot/dts/versatile-pb.dts b/arch/arm/boot/dts/versatile-pb.dts
index 9abe26028c8b..06a0fdf24026 100644
--- a/arch/arm/boot/dts/versatile-pb.dts
+++ b/arch/arm/boot/dts/versatile-pb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "versatile-ab.dts"
/ {
diff --git a/arch/arm/boot/dts/vexpress-v2m.dtsi b/arch/arm/boot/dts/vexpress-v2m.dtsi
index 1b6f6393be93..b0021a816028 100644
--- a/arch/arm/boot/dts/vexpress-v2m.dtsi
+++ b/arch/arm/boot/dts/vexpress-v2m.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd. Versatile Express
*
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
index 0c8de0ca73ee..a8ac4e2ed290 100644
--- a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
+++ b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd. Versatile Express
*
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
index 65ecf206388c..a4c7713edfcd 100644
--- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
+++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd. Versatile Express
*
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
index 6e69b8e6c1a7..32f1906ffecf 100644
--- a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
+++ b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd. Versatile Express
*
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca9.dts b/arch/arm/boot/dts/vexpress-v2p-ca9.dts
index c9305b58afc2..5814460e0549 100644
--- a/arch/arm/boot/dts/vexpress-v2p-ca9.dts
+++ b/arch/arm/boot/dts/vexpress-v2p-ca9.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd. Versatile Express
*
diff --git a/arch/arm/boot/dts/xenvm-4.2.dts b/arch/arm/boot/dts/xenvm-4.2.dts
index 336915151398..384cd92f1f84 100644
--- a/arch/arm/boot/dts/xenvm-4.2.dts
+++ b/arch/arm/boot/dts/xenvm-4.2.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Xen Virtual Machine for unprivileged guests
*
diff --git a/arch/arm/boot/dts/zx296702-ad1.dts b/arch/arm/boot/dts/zx296702-ad1.dts
index b0183c3a1d7c..eedd3fcbc002 100644
--- a/arch/arm/boot/dts/zx296702-ad1.dts
+++ b/arch/arm/boot/dts/zx296702-ad1.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
diff --git a/arch/arm/boot/dts/zx296702.dtsi b/arch/arm/boot/dts/zx296702.dtsi
index d45c8fcd7ab4..752d28e0f9b0 100644
--- a/arch/arm/boot/dts/zx296702.dtsi
+++ b/arch/arm/boot/dts/zx296702.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "skeleton.dtsi"
#include <dt-bindings/clock/zx296702-clock.h>
diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig
index 1181053e3ade..e5ad0708849a 100644
--- a/arch/arm/common/Kconfig
+++ b/arch/arm/common/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config SA1111
bool
select DMABOUNCE if !ARCH_PXA
diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile
index 29fdf6a3601d..70b4a14ed993 100644
--- a/arch/arm/common/Makefile
+++ b/arch/arm/common/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/configs/gemini_defconfig b/arch/arm/configs/gemini_defconfig
index d2d75fa664a6..2a63fa10c813 100644
--- a/arch/arm/configs/gemini_defconfig
+++ b/arch/arm/configs/gemini_defconfig
@@ -32,6 +32,7 @@ CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_SD=y
# CONFIG_SCSI_LOWLEVEL is not set
CONFIG_ATA=y
+CONFIG_PATA_FTIDE010=y
CONFIG_INPUT_EVDEV=y
CONFIG_KEYBOARD_GPIO=y
# CONFIG_INPUT_MOUSE is not set
@@ -55,8 +56,8 @@ CONFIG_LEDS_GPIO=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_GEMINI=y
CONFIG_DMADEVICES=y
+CONFIG_AMBA_PL08X=y
# CONFIG_DNOTIFY is not set
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
diff --git a/arch/arm/configs/pxa_defconfig b/arch/arm/configs/pxa_defconfig
index 64e3a2a8cede..d5e1370ec303 100644
--- a/arch/arm/configs/pxa_defconfig
+++ b/arch/arm/configs/pxa_defconfig
@@ -471,7 +471,7 @@ CONFIG_LCD_PLATFORM=m
CONFIG_LCD_TOSA=m
CONFIG_BACKLIGHT_PWM=m
CONFIG_BACKLIGHT_TOSA=m
-CONFIG_FRAMEBUFFER_CONSOLE=m
+CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_LOGO=y
CONFIG_SOUND=m
diff --git a/arch/arm/configs/viper_defconfig b/arch/arm/configs/viper_defconfig
index 44d4fa57ba0a..070e5074f1ee 100644
--- a/arch/arm/configs/viper_defconfig
+++ b/arch/arm/configs/viper_defconfig
@@ -113,7 +113,7 @@ CONFIG_FB_PXA_PARAMETERS=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_PWM=m
# CONFIG_VGA_CONSOLE is not set
-CONFIG_FRAMEBUFFER_CONSOLE=m
+CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_LOGO=y
CONFIG_SOUND=m
CONFIG_SND=m
diff --git a/arch/arm/configs/zeus_defconfig b/arch/arm/configs/zeus_defconfig
index 8d4c0c926c34..09e7050d5653 100644
--- a/arch/arm/configs/zeus_defconfig
+++ b/arch/arm/configs/zeus_defconfig
@@ -112,7 +112,7 @@ CONFIG_FB_PXA=m
CONFIG_FB_PXA_PARAMETERS=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_VGA_CONSOLE is not set
-CONFIG_FRAMEBUFFER_CONSOLE=m
+CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_LOGO=y
CONFIG_SOUND=m
CONFIG_SND=m
diff --git a/arch/arm/crypto/Kconfig b/arch/arm/crypto/Kconfig
index ec72752d5668..b8e69fe282b8 100644
--- a/arch/arm/crypto/Kconfig
+++ b/arch/arm/crypto/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARM_CRYPTO
bool "ARM Accelerated Cryptographic Algorithms"
diff --git a/arch/arm/crypto/Makefile b/arch/arm/crypto/Makefile
index f2215fbeed13..30ef8e291271 100644
--- a/arch/arm/crypto/Makefile
+++ b/arch/arm/crypto/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Arch-specific CryptoAPI modules.
#
diff --git a/arch/arm/crypto/sha1.h b/arch/arm/crypto/sha1.h
index ffd8bd08b1a7..758db3e9ff0a 100644
--- a/arch/arm/crypto/sha1.h
+++ b/arch/arm/crypto/sha1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_ARM_CRYPTO_SHA1_H
#define ASM_ARM_CRYPTO_SHA1_H
diff --git a/arch/arm/crypto/sha256_glue.h b/arch/arm/crypto/sha256_glue.h
index 7cf0bf786ada..9f0d578bab5f 100644
--- a/arch/arm/crypto/sha256_glue.h
+++ b/arch/arm/crypto/sha256_glue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYPTO_SHA256_GLUE_H
#define _CRYPTO_SHA256_GLUE_H
diff --git a/arch/arm/crypto/sha512.h b/arch/arm/crypto/sha512.h
index a75d9a82988a..e14572be76d1 100644
--- a/arch/arm/crypto/sha512.h
+++ b/arch/arm/crypto/sha512.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
int sha512_arm_update(struct shash_desc *desc, const u8 *data,
unsigned int len);
diff --git a/arch/arm/include/asm/arch_timer.h b/arch/arm/include/asm/arch_timer.h
index d4ebf5679f1f..9327e3a101dc 100644
--- a/arch/arm/include/asm/arch_timer.h
+++ b/arch/arm/include/asm/arch_timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASMARM_ARCH_TIMER_H
#define __ASMARM_ARCH_TIMER_H
diff --git a/arch/arm/include/asm/barrier.h b/arch/arm/include/asm/barrier.h
index f5d698182d50..40f5c410fd8c 100644
--- a/arch/arm/include/asm/barrier.h
+++ b/arch/arm/include/asm/barrier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_BARRIER_H
#define __ASM_BARRIER_H
diff --git a/arch/arm/include/asm/bitops.h b/arch/arm/include/asm/bitops.h
index f308c8c40cb9..ce5ee762ed66 100644
--- a/arch/arm/include/asm/bitops.h
+++ b/arch/arm/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 1995, Russell King.
* Various bits and pieces copyrights include:
diff --git a/arch/arm/include/asm/bitrev.h b/arch/arm/include/asm/bitrev.h
index ec291c350ea3..84ad8dde62d6 100644
--- a/arch/arm/include/asm/bitrev.h
+++ b/arch/arm/include/asm/bitrev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_BITREV_H
#define __ASM_BITREV_H
diff --git a/arch/arm/include/asm/bug.h b/arch/arm/include/asm/bug.h
index 2244a94ed9c9..237aa52d8733 100644
--- a/arch/arm/include/asm/bug.h
+++ b/arch/arm/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMARM_BUG_H
#define _ASMARM_BUG_H
diff --git a/arch/arm/include/asm/cache.h b/arch/arm/include/asm/cache.h
index 75fe66bc02b4..1d65ed3a2755 100644
--- a/arch/arm/include/asm/cache.h
+++ b/arch/arm/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/cache.h
*/
diff --git a/arch/arm/include/asm/cachetype.h b/arch/arm/include/asm/cachetype.h
index 01509ae0bbec..e8c30430be33 100644
--- a/arch/arm/include/asm/cachetype.h
+++ b/arch/arm/include/asm/cachetype.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_CACHETYPE_H
#define __ASM_ARM_CACHETYPE_H
diff --git a/arch/arm/include/asm/checksum.h b/arch/arm/include/asm/checksum.h
index 524692f4acab..20043e0ebb07 100644
--- a/arch/arm/include/asm/checksum.h
+++ b/arch/arm/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/checksum.h
*
diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h
index 97882f9bad12..8b701f8e175c 100644
--- a/arch/arm/include/asm/cmpxchg.h
+++ b/arch/arm/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_CMPXCHG_H
#define __ASM_ARM_CMPXCHG_H
diff --git a/arch/arm/include/asm/compiler.h b/arch/arm/include/asm/compiler.h
index 29fe85e59439..5e94e67d1083 100644
--- a/arch/arm/include/asm/compiler.h
+++ b/arch/arm/include/asm/compiler.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_COMPILER_H
#define __ASM_ARM_COMPILER_H
diff --git a/arch/arm/include/asm/cp15.h b/arch/arm/include/asm/cp15.h
index dbdbce1b3a72..4c9fa72b59f5 100644
--- a/arch/arm/include/asm/cp15.h
+++ b/arch/arm/include/asm/cp15.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_CP15_H
#define __ASM_ARM_CP15_H
diff --git a/arch/arm/include/asm/cpuidle.h b/arch/arm/include/asm/cpuidle.h
index baefe1d51517..6b2ff7243b4b 100644
--- a/arch/arm/include/asm/cpuidle.h
+++ b/arch/arm/include/asm/cpuidle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_CPUIDLE_H
#define __ASM_ARM_CPUIDLE_H
diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
index b62eaeb147aa..441933311bbf 100644
--- a/arch/arm/include/asm/cputype.h
+++ b/arch/arm/include/asm/cputype.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_CPUTYPE_H
#define __ASM_ARM_CPUTYPE_H
diff --git a/arch/arm/include/asm/cti.h b/arch/arm/include/asm/cti.h
index 2381199acb7d..f8500e5d6ea8 100644
--- a/arch/arm/include/asm/cti.h
+++ b/arch/arm/include/asm/cti.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASMARM_CTI_H
#define __ASMARM_CTI_H
diff --git a/arch/arm/include/asm/delay.h b/arch/arm/include/asm/delay.h
index e986b7f717c4..4f80b72372b4 100644
--- a/arch/arm/include/asm/delay.h
+++ b/arch/arm/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1995-2004 Russell King
*
diff --git a/arch/arm/include/asm/div64.h b/arch/arm/include/asm/div64.h
index 7d919a9b32e5..898e9c78a7e7 100644
--- a/arch/arm/include/asm/div64.h
+++ b/arch/arm/include/asm/div64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_DIV64
#define __ASM_ARM_DIV64
diff --git a/arch/arm/include/asm/dma-contiguous.h b/arch/arm/include/asm/dma-contiguous.h
index 4f8e9e5514b1..d785187a6f8a 100644
--- a/arch/arm/include/asm/dma-contiguous.h
+++ b/arch/arm/include/asm/dma-contiguous.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASMARM_DMA_CONTIGUOUS_H
#define ASMARM_DMA_CONTIGUOUS_H
diff --git a/arch/arm/include/asm/dma-iommu.h b/arch/arm/include/asm/dma-iommu.h
index c090ec675eac..0722ec6be692 100644
--- a/arch/arm/include/asm/dma-iommu.h
+++ b/arch/arm/include/asm/dma-iommu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASMARM_DMA_IOMMU_H
#define ASMARM_DMA_IOMMU_H
diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h
index 4e0285a66ef8..3ca119997818 100644
--- a/arch/arm/include/asm/dma-mapping.h
+++ b/arch/arm/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASMARM_DMA_MAPPING_H
#define ASMARM_DMA_MAPPING_H
diff --git a/arch/arm/include/asm/dma.h b/arch/arm/include/asm/dma.h
index bb4fa67da541..a81dda65c576 100644
--- a/arch/arm/include/asm/dma.h
+++ b/arch/arm/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_DMA_H
#define __ASM_ARM_DMA_H
diff --git a/arch/arm/include/asm/ecard.h b/arch/arm/include/asm/ecard.h
index eaea14676d57..4befe8d2ae19 100644
--- a/arch/arm/include/asm/ecard.h
+++ b/arch/arm/include/asm/ecard.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/ecard.h
*
diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
index f13ae153fb24..8c5ca92a87a9 100644
--- a/arch/arm/include/asm/elf.h
+++ b/arch/arm/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASMARM_ELF_H
#define __ASMARM_ELF_H
diff --git a/arch/arm/include/asm/entry-macro-multi.S b/arch/arm/include/asm/entry-macro-multi.S
index 609184f522ee..dfc6bfa43012 100644
--- a/arch/arm/include/asm/entry-macro-multi.S
+++ b/arch/arm/include/asm/entry-macro-multi.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/assembler.h>
/*
diff --git a/arch/arm/include/asm/exception.h b/arch/arm/include/asm/exception.h
index bf1991263d2d..a7273ad9587a 100644
--- a/arch/arm/include/asm/exception.h
+++ b/arch/arm/include/asm/exception.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Annotations for marking C functions as exception handlers.
*
diff --git a/arch/arm/include/asm/fiq.h b/arch/arm/include/asm/fiq.h
index d493d0b742a1..6bdfb4a47322 100644
--- a/arch/arm/include/asm/fiq.h
+++ b/arch/arm/include/asm/fiq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/fiq.h
*
diff --git a/arch/arm/include/asm/fixmap.h b/arch/arm/include/asm/fixmap.h
index 8f967d1373f6..472c93db5dac 100644
--- a/arch/arm/include/asm/fixmap.h
+++ b/arch/arm/include/asm/fixmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FIXMAP_H
#define _ASM_FIXMAP_H
diff --git a/arch/arm/include/asm/flat.h b/arch/arm/include/asm/flat.h
index 29d3a1524bce..f0c75ddeea23 100644
--- a/arch/arm/include/asm/flat.h
+++ b/arch/arm/include/asm/flat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/flat.h -- uClinux flat-format executables
*/
diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h
index f379881d5cc3..9e842ff41768 100644
--- a/arch/arm/include/asm/ftrace.h
+++ b/arch/arm/include/asm/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_FTRACE
#define _ASM_ARM_FTRACE
diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h
index cc414382dab4..ffebe7b7a5b7 100644
--- a/arch/arm/include/asm/futex.h
+++ b/arch/arm/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_FUTEX_H
#define _ASM_ARM_FUTEX_H
diff --git a/arch/arm/include/asm/gpio.h b/arch/arm/include/asm/gpio.h
index 504dcddebfcc..c50e383358c4 100644
--- a/arch/arm/include/asm/gpio.h
+++ b/arch/arm/include/asm/gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARCH_ARM_GPIO_H
#define _ARCH_ARM_GPIO_H
diff --git a/arch/arm/include/asm/hardirq.h b/arch/arm/include/asm/hardirq.h
index 3d7351c844aa..cba23eaa6072 100644
--- a/arch/arm/include/asm/hardirq.h
+++ b/arch/arm/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_HARDIRQ_H
#define __ASM_HARDIRQ_H
diff --git a/arch/arm/include/asm/hardware/it8152.h b/arch/arm/include/asm/hardware/it8152.h
index 076777ff3daa..e175c2384f28 100644
--- a/arch/arm/include/asm/hardware/it8152.h
+++ b/arch/arm/include/asm/hardware/it8152.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/arm/hardware/it8152.h
*
diff --git a/arch/arm/include/asm/hardware/sa1111.h b/arch/arm/include/asm/hardware/sa1111.h
index 8979fa3bbf2d..0bbf163d1ed3 100644
--- a/arch/arm/include/asm/hardware/sa1111.h
+++ b/arch/arm/include/asm/hardware/sa1111.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/hardware/sa1111.h
*
diff --git a/arch/arm/include/asm/highmem.h b/arch/arm/include/asm/highmem.h
index 0a0e2d1784c0..b03d3fa2e58d 100644
--- a/arch/arm/include/asm/highmem.h
+++ b/arch/arm/include/asm/highmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_HIGHMEM_H
#define _ASM_HIGHMEM_H
diff --git a/arch/arm/include/asm/hw_breakpoint.h b/arch/arm/include/asm/hw_breakpoint.h
index afcaf8bf971b..e46e4e7bdba3 100644
--- a/arch/arm/include/asm/hw_breakpoint.h
+++ b/arch/arm/include/asm/hw_breakpoint.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARM_HW_BREAKPOINT_H
#define _ARM_HW_BREAKPOINT_H
diff --git a/arch/arm/include/asm/hw_irq.h b/arch/arm/include/asm/hw_irq.h
index 9beb92914f4d..cecc13214ef1 100644
--- a/arch/arm/include/asm/hw_irq.h
+++ b/arch/arm/include/asm/hw_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Nothing to see here yet
*/
diff --git a/arch/arm/include/asm/hwcap.h b/arch/arm/include/asm/hwcap.h
index 6e183fd269fb..e31d9f1b8549 100644
--- a/arch/arm/include/asm/hwcap.h
+++ b/arch/arm/include/asm/hwcap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASMARM_HWCAP_H
#define __ASMARM_HWCAP_H
diff --git a/arch/arm/include/asm/hypervisor.h b/arch/arm/include/asm/hypervisor.h
index b90d9e523d6f..df8524365637 100644
--- a/arch/arm/include/asm/hypervisor.h
+++ b/arch/arm/include/asm/hypervisor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_HYPERVISOR_H
#define _ASM_ARM_HYPERVISOR_H
diff --git a/arch/arm/include/asm/ide.h b/arch/arm/include/asm/ide.h
index b507ce8e5019..a81e0b0d6747 100644
--- a/arch/arm/include/asm/ide.h
+++ b/arch/arm/include/asm/ide.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/ide.h
*
diff --git a/arch/arm/include/asm/idmap.h b/arch/arm/include/asm/idmap.h
index bf863edb517d..73ba956e379f 100644
--- a/arch/arm/include/asm/idmap.h
+++ b/arch/arm/include/asm/idmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_IDMAP_H
#define __ASM_IDMAP_H
diff --git a/arch/arm/include/asm/insn.h b/arch/arm/include/asm/insn.h
index e96065da4dae..f20e08ac85ae 100644
--- a/arch/arm/include/asm/insn.h
+++ b/arch/arm/include/asm/insn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_INSN_H
#define __ASM_ARM_INSN_H
diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h
index e53638c8ed8a..b6f319606e30 100644
--- a/arch/arm/include/asm/irq.h
+++ b/arch/arm/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_IRQ_H
#define __ASM_ARM_IRQ_H
diff --git a/arch/arm/include/asm/irq_work.h b/arch/arm/include/asm/irq_work.h
index 712d03e5973a..8895999834cc 100644
--- a/arch/arm/include/asm/irq_work.h
+++ b/arch/arm/include/asm/irq_work.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_IRQ_WORK_H
#define __ASM_ARM_IRQ_WORK_H
diff --git a/arch/arm/include/asm/irqflags.h b/arch/arm/include/asm/irqflags.h
index e6b70d9d084e..aeec7f24eb75 100644
--- a/arch/arm/include/asm/irqflags.h
+++ b/arch/arm/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_IRQFLAGS_H
#define __ASM_ARM_IRQFLAGS_H
diff --git a/arch/arm/include/asm/jump_label.h b/arch/arm/include/asm/jump_label.h
index 34f7b6980d21..e12d7d096fc0 100644
--- a/arch/arm/include/asm/jump_label.h
+++ b/arch/arm/include/asm/jump_label.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_JUMP_LABEL_H
#define _ASM_ARM_JUMP_LABEL_H
diff --git a/arch/arm/include/asm/kexec.h b/arch/arm/include/asm/kexec.h
index 25021b798a1e..22751b5b5735 100644
--- a/arch/arm/include/asm/kexec.h
+++ b/arch/arm/include/asm/kexec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARM_KEXEC_H
#define _ARM_KEXEC_H
diff --git a/arch/arm/include/asm/kgdb.h b/arch/arm/include/asm/kgdb.h
index 0a9d5dd93294..3b73fdcf3627 100644
--- a/arch/arm/include/asm/kgdb.h
+++ b/arch/arm/include/asm/kgdb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ARM KGDB support
*
diff --git a/arch/arm/include/asm/kmap_types.h b/arch/arm/include/asm/kmap_types.h
index 83eb2f772911..5590940ee43d 100644
--- a/arch/arm/include/asm/kmap_types.h
+++ b/arch/arm/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARM_KMAP_TYPES_H
#define __ARM_KMAP_TYPES_H
diff --git a/arch/arm/include/asm/limits.h b/arch/arm/include/asm/limits.h
index 08d8c6600804..ab159371d786 100644
--- a/arch/arm/include/asm/limits.h
+++ b/arch/arm/include/asm/limits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_PIPE_H
#define __ASM_PIPE_H
diff --git a/arch/arm/include/asm/linkage.h b/arch/arm/include/asm/linkage.h
index 5a25632b1bc0..c4670694ada7 100644
--- a/arch/arm/include/asm/linkage.h
+++ b/arch/arm/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
diff --git a/arch/arm/include/asm/mc146818rtc.h b/arch/arm/include/asm/mc146818rtc.h
index e8567bb99dfc..58922879a600 100644
--- a/arch/arm/include/asm/mc146818rtc.h
+++ b/arch/arm/include/asm/mc146818rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine dependent access functions for RTC registers.
*/
diff --git a/arch/arm/include/asm/mcs_spinlock.h b/arch/arm/include/asm/mcs_spinlock.h
index f652ad65840a..529d2cf4d06f 100644
--- a/arch/arm/include/asm/mcs_spinlock.h
+++ b/arch/arm/include/asm/mcs_spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MCS_LOCK_H
#define __ASM_MCS_LOCK_H
diff --git a/arch/arm/include/asm/memblock.h b/arch/arm/include/asm/memblock.h
index bf47a6c110a2..b10fd358ccc5 100644
--- a/arch/arm/include/asm/memblock.h
+++ b/arch/arm/include/asm/memblock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_MEMBLOCK_H
#define _ASM_ARM_MEMBLOCK_H
diff --git a/arch/arm/include/asm/mmu.h b/arch/arm/include/asm/mmu.h
index a5b47421059d..65669b9ce128 100644
--- a/arch/arm/include/asm/mmu.h
+++ b/arch/arm/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARM_MMU_H
#define __ARM_MMU_H
diff --git a/arch/arm/include/asm/module.h b/arch/arm/include/asm/module.h
index ed2319663a1e..89ad0596033a 100644
--- a/arch/arm/include/asm/module.h
+++ b/arch/arm/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_MODULE_H
#define _ASM_ARM_MODULE_H
diff --git a/arch/arm/include/asm/mpu.h b/arch/arm/include/asm/mpu.h
index c3247cc2fe08..0c3f774fa4b5 100644
--- a/arch/arm/include/asm/mpu.h
+++ b/arch/arm/include/asm/mpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARM_MPU_H
#define __ARM_MPU_H
diff --git a/arch/arm/include/asm/nwflash.h b/arch/arm/include/asm/nwflash.h
index 04e5a557a884..0ec6f07c2d8a 100644
--- a/arch/arm/include/asm/nwflash.h
+++ b/arch/arm/include/asm/nwflash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FLASH_H
#define _FLASH_H
diff --git a/arch/arm/include/asm/paravirt.h b/arch/arm/include/asm/paravirt.h
index 8435ff591386..d51e5cd31d01 100644
--- a/arch/arm/include/asm/paravirt.h
+++ b/arch/arm/include/asm/paravirt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_PARAVIRT_H
#define _ASM_ARM_PARAVIRT_H
diff --git a/arch/arm/include/asm/patch.h b/arch/arm/include/asm/patch.h
index 77e054c2f6cd..0b48247c4600 100644
--- a/arch/arm/include/asm/patch.h
+++ b/arch/arm/include/asm/patch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARM_KERNEL_PATCH_H
#define _ARM_KERNEL_PATCH_H
diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h
index 396c92bcc0cf..960d9dc4f380 100644
--- a/arch/arm/include/asm/pci.h
+++ b/arch/arm/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASMARM_PCI_H
#define ASMARM_PCI_H
diff --git a/arch/arm/include/asm/sections.h b/arch/arm/include/asm/sections.h
index 803bbf2b20b8..63dfe1f10335 100644
--- a/arch/arm/include/asm/sections.h
+++ b/arch/arm/include/asm/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_SECTIONS_H
#define _ASM_ARM_SECTIONS_H
diff --git a/arch/arm/include/asm/shmparam.h b/arch/arm/include/asm/shmparam.h
index a5223b3a9bf9..367a9dac6150 100644
--- a/arch/arm/include/asm/shmparam.h
+++ b/arch/arm/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMARM_SHMPARAM_H
#define _ASMARM_SHMPARAM_H
diff --git a/arch/arm/include/asm/signal.h b/arch/arm/include/asm/signal.h
index c0eb412aff04..65530a042009 100644
--- a/arch/arm/include/asm/signal.h
+++ b/arch/arm/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMARM_SIGNAL_H
#define _ASMARM_SIGNAL_H
diff --git a/arch/arm/include/asm/smp_plat.h b/arch/arm/include/asm/smp_plat.h
index f9080717fc88..f2c36acf9886 100644
--- a/arch/arm/include/asm/smp_plat.h
+++ b/arch/arm/include/asm/smp_plat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ARM specific SMP header, this contains our implementation
* details.
diff --git a/arch/arm/include/asm/smp_scu.h b/arch/arm/include/asm/smp_scu.h
index 5983f6bc62d5..800f5228939f 100644
--- a/arch/arm/include/asm/smp_scu.h
+++ b/arch/arm/include/asm/smp_scu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASMARM_ARCH_SCU_H
#define __ASMARM_ARCH_SCU_H
diff --git a/arch/arm/include/asm/smp_twd.h b/arch/arm/include/asm/smp_twd.h
index 7b2899c2f7fc..312784ee9936 100644
--- a/arch/arm/include/asm/smp_twd.h
+++ b/arch/arm/include/asm/smp_twd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASMARM_SMP_TWD_H
#define __ASMARM_SMP_TWD_H
diff --git a/arch/arm/include/asm/sparsemem.h b/arch/arm/include/asm/sparsemem.h
index 73e5e8513751..d362233856a5 100644
--- a/arch/arm/include/asm/sparsemem.h
+++ b/arch/arm/include/asm/sparsemem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASMARM_SPARSEMEM_H
#define ASMARM_SPARSEMEM_H
diff --git a/arch/arm/include/asm/spinlock.h b/arch/arm/include/asm/spinlock.h
index c030143c18c6..25cb465c8538 100644
--- a/arch/arm/include/asm/spinlock.h
+++ b/arch/arm/include/asm/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPINLOCK_H
#define __ASM_SPINLOCK_H
diff --git a/arch/arm/include/asm/spinlock_types.h b/arch/arm/include/asm/spinlock_types.h
index 47663fcb10ad..5976958647fe 100644
--- a/arch/arm/include/asm/spinlock_types.h
+++ b/arch/arm/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPINLOCK_TYPES_H
#define __ASM_SPINLOCK_TYPES_H
diff --git a/arch/arm/include/asm/stackprotector.h b/arch/arm/include/asm/stackprotector.h
index de003327be97..ef5f7b69443e 100644
--- a/arch/arm/include/asm/stackprotector.h
+++ b/arch/arm/include/asm/stackprotector.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* GCC stack protector support.
*
diff --git a/arch/arm/include/asm/stacktrace.h b/arch/arm/include/asm/stacktrace.h
index 7722201ead19..2d76a2e29f05 100644
--- a/arch/arm/include/asm/stacktrace.h
+++ b/arch/arm/include/asm/stacktrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_STACKTRACE_H
#define __ASM_STACKTRACE_H
diff --git a/arch/arm/include/asm/string.h b/arch/arm/include/asm/string.h
index fe1c6af3a1b1..f54a3136aac6 100644
--- a/arch/arm/include/asm/string.h
+++ b/arch/arm/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_STRING_H
#define __ASM_ARM_STRING_H
diff --git a/arch/arm/include/asm/suspend.h b/arch/arm/include/asm/suspend.h
index a61905c86732..452bbdcbcc83 100644
--- a/arch/arm/include/asm/suspend.h
+++ b/arch/arm/include/asm/suspend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_SUSPEND_H
#define __ASM_ARM_SUSPEND_H
diff --git a/arch/arm/include/asm/swab.h b/arch/arm/include/asm/swab.h
index 537fc9b91889..c6051823048b 100644
--- a/arch/arm/include/asm/swab.h
+++ b/arch/arm/include/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/byteorder.h
*
diff --git a/arch/arm/include/asm/switch_to.h b/arch/arm/include/asm/switch_to.h
index 12ebfcc1d539..d3e937dcee4d 100644
--- a/arch/arm/include/asm/switch_to.h
+++ b/arch/arm/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_SWITCH_TO_H
#define __ASM_ARM_SWITCH_TO_H
diff --git a/arch/arm/include/asm/sync_bitops.h b/arch/arm/include/asm/sync_bitops.h
index 9732b8e11e63..39ff217136d1 100644
--- a/arch/arm/include/asm/sync_bitops.h
+++ b/arch/arm/include/asm/sync_bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SYNC_BITOPS_H__
#define __ASM_SYNC_BITOPS_H__
diff --git a/arch/arm/include/asm/syscall.h b/arch/arm/include/asm/syscall.h
index e86c985b8c7a..06dea6bce293 100644
--- a/arch/arm/include/asm/syscall.h
+++ b/arch/arm/include/asm/syscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Access to user system call parameters and results
*
diff --git a/arch/arm/include/asm/system_info.h b/arch/arm/include/asm/system_info.h
index 3860cbd401ec..ef7fdb588b5f 100644
--- a/arch/arm/include/asm/system_info.h
+++ b/arch/arm/include/asm/system_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_SYSTEM_INFO_H
#define __ASM_ARM_SYSTEM_INFO_H
diff --git a/arch/arm/include/asm/system_misc.h b/arch/arm/include/asm/system_misc.h
index 8c4a89f5ce7d..78f6db114faf 100644
--- a/arch/arm/include/asm/system_misc.h
+++ b/arch/arm/include/asm/system_misc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_SYSTEM_MISC_H
#define __ASM_ARM_SYSTEM_MISC_H
diff --git a/arch/arm/include/asm/therm.h b/arch/arm/include/asm/therm.h
index f002f0197d78..17b0bc9b5e9b 100644
--- a/arch/arm/include/asm/therm.h
+++ b/arch/arm/include/asm/therm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/therm.h: Definitions for Dallas Semiconductor
* DS1620 thermometer driver (as used in the Rebel.com NetWinder)
diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h
index 1d468b527b7b..776757d1604a 100644
--- a/arch/arm/include/asm/thread_info.h
+++ b/arch/arm/include/asm/thread_info.h
@@ -139,11 +139,10 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
#define TIF_NEED_RESCHED 1 /* rescheduling necessary */
#define TIF_NOTIFY_RESUME 2 /* callback before returning to user */
#define TIF_UPROBE 3 /* breakpointed or singlestepping */
-#define TIF_FSCHECK 4 /* Check FS is USER_DS on return */
-#define TIF_SYSCALL_TRACE 5 /* syscall trace active */
-#define TIF_SYSCALL_AUDIT 6 /* syscall auditing active */
-#define TIF_SYSCALL_TRACEPOINT 7 /* syscall tracepoint instrumentation */
-#define TIF_SECCOMP 8 /* seccomp syscall filtering active */
+#define TIF_SYSCALL_TRACE 4 /* syscall trace active */
+#define TIF_SYSCALL_AUDIT 5 /* syscall auditing active */
+#define TIF_SYSCALL_TRACEPOINT 6 /* syscall tracepoint instrumentation */
+#define TIF_SECCOMP 7 /* seccomp syscall filtering active */
#define TIF_NOHZ 12 /* in adaptive nohz mode */
#define TIF_USING_IWMMXT 17
@@ -154,7 +153,6 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
#define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
#define _TIF_UPROBE (1 << TIF_UPROBE)
-#define _TIF_FSCHECK (1 << TIF_FSCHECK)
#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
#define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
@@ -168,9 +166,8 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
/*
* Change these and you break ASM code in entry-common.S
*/
-#define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
- _TIF_NOTIFY_RESUME | _TIF_UPROBE | \
- _TIF_FSCHECK)
+#define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
+ _TIF_NOTIFY_RESUME | _TIF_UPROBE)
#endif /* __KERNEL__ */
#endif /* __ASM_ARM_THREAD_INFO_H */
diff --git a/arch/arm/include/asm/tls.h b/arch/arm/include/asm/tls.h
index 5f833f7adba1..5a66c3b13c92 100644
--- a/arch/arm/include/asm/tls.h
+++ b/arch/arm/include/asm/tls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASMARM_TLS_H
#define __ASMARM_TLS_H
diff --git a/arch/arm/include/asm/topology.h b/arch/arm/include/asm/topology.h
index 370f7a732900..f59ab9bcbaf9 100644
--- a/arch/arm/include/asm/topology.h
+++ b/arch/arm/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_TOPOLOGY_H
#define _ASM_ARM_TOPOLOGY_H
diff --git a/arch/arm/include/asm/traps.h b/arch/arm/include/asm/traps.h
index 683d9230984a..f9a6c5fc3fd1 100644
--- a/arch/arm/include/asm/traps.h
+++ b/arch/arm/include/asm/traps.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMARM_TRAP_H
#define _ASMARM_TRAP_H
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
index 87936dd5d151..0bf2347495f1 100644
--- a/arch/arm/include/asm/uaccess.h
+++ b/arch/arm/include/asm/uaccess.h
@@ -70,8 +70,6 @@ static inline void set_fs(mm_segment_t fs)
{
current_thread_info()->addr_limit = fs;
modify_domain(DOMAIN_KERNEL, fs ? DOMAIN_CLIENT : DOMAIN_MANAGER);
- /* On user-mode return, check fs is correct */
- set_thread_flag(TIF_FSCHECK);
}
#define segment_eq(a, b) ((a) == (b))
diff --git a/arch/arm/include/asm/ucontext.h b/arch/arm/include/asm/ucontext.h
index 921d8274855c..3f0d95ab14b8 100644
--- a/arch/arm/include/asm/ucontext.h
+++ b/arch/arm/include/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMARM_UCONTEXT_H
#define _ASMARM_UCONTEXT_H
diff --git a/arch/arm/include/asm/user.h b/arch/arm/include/asm/user.h
index 35917b3a97f9..c799a3c49342 100644
--- a/arch/arm/include/asm/user.h
+++ b/arch/arm/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARM_USER_H
#define _ARM_USER_H
diff --git a/arch/arm/include/asm/v7m.h b/arch/arm/include/asm/v7m.h
index 1fd775c1bc5d..e6d9e29fcae4 100644
--- a/arch/arm/include/asm/v7m.h
+++ b/arch/arm/include/asm/v7m.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common defines for v7m cpus
*/
diff --git a/arch/arm/include/asm/vdso.h b/arch/arm/include/asm/vdso.h
index d0295f1dd1a3..9c99e817535e 100644
--- a/arch/arm/include/asm/vdso.h
+++ b/arch/arm/include/asm/vdso.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_VDSO_H
#define __ASM_VDSO_H
diff --git a/arch/arm/include/asm/vfp.h b/arch/arm/include/asm/vfp.h
index 22e414056a8c..7157d2a30a49 100644
--- a/arch/arm/include/asm/vfp.h
+++ b/arch/arm/include/asm/vfp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/vfp.h
*
diff --git a/arch/arm/include/asm/vfpmacros.h b/arch/arm/include/asm/vfpmacros.h
index 301c1db3e99b..ef5dfedacd8d 100644
--- a/arch/arm/include/asm/vfpmacros.h
+++ b/arch/arm/include/asm/vfpmacros.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/include/asm/vfpmacros.h
*
diff --git a/arch/arm/include/asm/vga.h b/arch/arm/include/asm/vga.h
index 91f40217bfa5..7c0bee57855a 100644
--- a/arch/arm/include/asm/vga.h
+++ b/arch/arm/include/asm/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASMARM_VGA_H
#define ASMARM_VGA_H
diff --git a/arch/arm/include/asm/word-at-a-time.h b/arch/arm/include/asm/word-at-a-time.h
index 5831dce4b51c..352ab213520d 100644
--- a/arch/arm/include/asm/word-at-a-time.h
+++ b/arch/arm/include/asm/word-at-a-time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARM_WORD_AT_A_TIME_H
#define __ASM_ARM_WORD_AT_A_TIME_H
diff --git a/arch/arm/include/asm/xen/events.h b/arch/arm/include/asm/xen/events.h
index 620dc75362e5..c83086f745cf 100644
--- a/arch/arm/include/asm/xen/events.h
+++ b/arch/arm/include/asm/xen/events.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_XEN_EVENTS_H
#define _ASM_ARM_XEN_EVENTS_H
diff --git a/arch/arm/include/debug/palmchip.S b/arch/arm/include/debug/palmchip.S
index 6824b2d1c38e..aed59332e487 100644
--- a/arch/arm/include/debug/palmchip.S
+++ b/arch/arm/include/debug/palmchip.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/serial_reg.h>
#undef UART_TX
diff --git a/arch/arm/include/debug/uncompress.h b/arch/arm/include/debug/uncompress.h
index 0e2949b0fae9..ff0b227290cb 100644
--- a/arch/arm/include/debug/uncompress.h
+++ b/arch/arm/include/debug/uncompress.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_DEBUG_UNCOMPRESS
extern void putc(int c);
#else
diff --git a/arch/arm/include/uapi/asm/Kbuild b/arch/arm/include/uapi/asm/Kbuild
index 8e17fe80b55b..4d53de308ee0 100644
--- a/arch/arm/include/uapi/asm/Kbuild
+++ b/arch/arm/include/uapi/asm/Kbuild
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# UAPI Header export list
include include/uapi/asm-generic/Kbuild.asm
diff --git a/arch/arm/include/uapi/asm/auxvec.h b/arch/arm/include/uapi/asm/auxvec.h
index cb02a767a500..5c09da5965d4 100644
--- a/arch/arm/include/uapi/asm/auxvec.h
+++ b/arch/arm/include/uapi/asm/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_AUXVEC_H
#define __ASM_AUXVEC_H
diff --git a/arch/arm/include/uapi/asm/byteorder.h b/arch/arm/include/uapi/asm/byteorder.h
index 77379748b171..cb8406afe162 100644
--- a/arch/arm/include/uapi/asm/byteorder.h
+++ b/arch/arm/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* arch/arm/include/asm/byteorder.h
*
diff --git a/arch/arm/include/uapi/asm/fcntl.h b/arch/arm/include/uapi/asm/fcntl.h
index a80b6607b2ef..e6b5d7141c05 100644
--- a/arch/arm/include/uapi/asm/fcntl.h
+++ b/arch/arm/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ARM_FCNTL_H
#define _ARM_FCNTL_H
diff --git a/arch/arm/include/uapi/asm/hwcap.h b/arch/arm/include/uapi/asm/hwcap.h
index 20d12f230a2f..b5971dfa4b8c 100644
--- a/arch/arm/include/uapi/asm/hwcap.h
+++ b/arch/arm/include/uapi/asm/hwcap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ASMARM_HWCAP_H
#define _UAPI__ASMARM_HWCAP_H
diff --git a/arch/arm/include/uapi/asm/ioctls.h b/arch/arm/include/uapi/asm/ioctls.h
index 9c9629816128..1bfe2854fb51 100644
--- a/arch/arm/include/uapi/asm/ioctls.h
+++ b/arch/arm/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_ARM_IOCTLS_H
#define __ASM_ARM_IOCTLS_H
diff --git a/arch/arm/include/uapi/asm/kvm.h b/arch/arm/include/uapi/asm/kvm.h
index 5db2d4c6a55f..1f57bbe82b6f 100644
--- a/arch/arm/include/uapi/asm/kvm.h
+++ b/arch/arm/include/uapi/asm/kvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 - Virtual Open Systems and Columbia University
* Author: Christoffer Dall <c.dall@virtualopensystems.com>
diff --git a/arch/arm/include/uapi/asm/kvm_para.h b/arch/arm/include/uapi/asm/kvm_para.h
index 14fab8f0b957..baacc4996d18 100644
--- a/arch/arm/include/uapi/asm/kvm_para.h
+++ b/arch/arm/include/uapi/asm/kvm_para.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/kvm_para.h>
diff --git a/arch/arm/include/uapi/asm/perf_regs.h b/arch/arm/include/uapi/asm/perf_regs.h
index ce59448458b2..a3c046174e6b 100644
--- a/arch/arm/include/uapi/asm/perf_regs.h
+++ b/arch/arm/include/uapi/asm/perf_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_ARM_PERF_REGS_H
#define _ASM_ARM_PERF_REGS_H
diff --git a/arch/arm/include/uapi/asm/posix_types.h b/arch/arm/include/uapi/asm/posix_types.h
index d2de9cbbcd9b..6bf11ad5d6ba 100644
--- a/arch/arm/include/uapi/asm/posix_types.h
+++ b/arch/arm/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* arch/arm/include/asm/posix_types.h
*
diff --git a/arch/arm/include/uapi/asm/ptrace.h b/arch/arm/include/uapi/asm/ptrace.h
index 5af0ed1b825a..b67cda536c25 100644
--- a/arch/arm/include/uapi/asm/ptrace.h
+++ b/arch/arm/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* arch/arm/include/asm/ptrace.h
*
diff --git a/arch/arm/include/uapi/asm/setup.h b/arch/arm/include/uapi/asm/setup.h
index 979ff4016404..6b335a9ff8c8 100644
--- a/arch/arm/include/uapi/asm/setup.h
+++ b/arch/arm/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/include/asm/setup.h
*
diff --git a/arch/arm/include/uapi/asm/sigcontext.h b/arch/arm/include/uapi/asm/sigcontext.h
index fc0b80b6a6fc..e223c65adabd 100644
--- a/arch/arm/include/uapi/asm/sigcontext.h
+++ b/arch/arm/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASMARM_SIGCONTEXT_H
#define _ASMARM_SIGCONTEXT_H
diff --git a/arch/arm/include/uapi/asm/signal.h b/arch/arm/include/uapi/asm/signal.h
index 33073bdcf091..9b4185ba4f8a 100644
--- a/arch/arm/include/uapi/asm/signal.h
+++ b/arch/arm/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASMARM_SIGNAL_H
#define _UAPI_ASMARM_SIGNAL_H
diff --git a/arch/arm/include/uapi/asm/stat.h b/arch/arm/include/uapi/asm/stat.h
index 42c0c13999d5..9c6580bfc04d 100644
--- a/arch/arm/include/uapi/asm/stat.h
+++ b/arch/arm/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASMARM_STAT_H
#define _ASMARM_STAT_H
diff --git a/arch/arm/include/uapi/asm/statfs.h b/arch/arm/include/uapi/asm/statfs.h
index 079447c05ba7..177f08540079 100644
--- a/arch/arm/include/uapi/asm/statfs.h
+++ b/arch/arm/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASMARM_STATFS_H
#define _ASMARM_STATFS_H
diff --git a/arch/arm/include/uapi/asm/swab.h b/arch/arm/include/uapi/asm/swab.h
index 6fcb32a5c453..301aa8d8e320 100644
--- a/arch/arm/include/uapi/asm/swab.h
+++ b/arch/arm/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* arch/arm/include/asm/byteorder.h
*
diff --git a/arch/arm/include/uapi/asm/types.h b/arch/arm/include/uapi/asm/types.h
index 9435a42f575e..1a667bc26510 100644
--- a/arch/arm/include/uapi/asm/types.h
+++ b/arch/arm/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_TYPES_H
#define _UAPI_ASM_TYPES_H
diff --git a/arch/arm/include/uapi/asm/unistd.h b/arch/arm/include/uapi/asm/unistd.h
index 28bd456494a3..39b2ad997e91 100644
--- a/arch/arm/include/uapi/asm/unistd.h
+++ b/arch/arm/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* arch/arm/include/asm/unistd.h
*
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
index ad325a8c7e1e..499f978fb1fd 100644
--- a/arch/arm/kernel/Makefile
+++ b/arch/arm/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/kernel/atags.h b/arch/arm/kernel/atags.h
index edfa2268c127..201100226301 100644
--- a/arch/arm/kernel/atags.h
+++ b/arch/arm/kernel/atags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
void convert_to_tag_list(struct tag *tags);
#ifdef CONFIG_ATAGS
diff --git a/arch/arm/kernel/atags_proc.c b/arch/arm/kernel/atags_proc.c
index 5a3379055f55..312cb89ec364 100644
--- a/arch/arm/kernel/atags_proc.c
+++ b/arch/arm/kernel/atags_proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/slab.h>
#include <linux/proc_fs.h>
#include <asm/setup.h>
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index c1809fb549dd..0cd0aefb3a8f 100644
--- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/kernel/bios32.c
*
diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S
index ea9646cc2a0e..0a498cb3fad8 100644
--- a/arch/arm/kernel/debug.S
+++ b/arch/arm/kernel/debug.S
@@ -115,7 +115,11 @@ ENTRY(printascii)
mov r1, r0
mov r0, #0x04 @ SYS_WRITE0
ARM( svc #0x123456 )
+#ifdef CONFIG_CPU_V7M
+ THUMB( bkpt #0xab )
+#else
THUMB( svc #0xab )
+#endif
ret lr
ENDPROC(printascii)
@@ -124,7 +128,11 @@ ENTRY(printch)
strb r0, [r1]
mov r0, #0x03 @ SYS_WRITEC
ARM( svc #0x123456 )
+#ifdef CONFIG_CPU_V7M
+ THUMB( bkpt #0xab )
+#else
THUMB( svc #0xab )
+#endif
ret lr
ENDPROC(printch)
diff --git a/arch/arm/kernel/elf.c b/arch/arm/kernel/elf.c
index d0d1e83150c9..846dda2f3c48 100644
--- a/arch/arm/kernel/elf.c
+++ b/arch/arm/kernel/elf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/sched.h>
#include <linux/personality.h>
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index ca3614dc6938..99c908226065 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -12,6 +12,7 @@
#include <asm/unistd.h>
#include <asm/ftrace.h>
#include <asm/unwind.h>
+#include <asm/memory.h>
#ifdef CONFIG_AEABI
#include <asm/unistd-oabi.h>
#endif
@@ -48,12 +49,14 @@ ret_fast_syscall:
UNWIND(.fnstart )
UNWIND(.cantunwind )
disable_irq_notrace @ disable interrupts
+ ldr r2, [tsk, #TI_ADDR_LIMIT]
+ cmp r2, #TASK_SIZE
+ blne addr_limit_check_failed
ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
- tst r1, #_TIF_SYSCALL_WORK
- bne fast_work_pending
- tst r1, #_TIF_WORK_MASK
+ tst r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK
bne fast_work_pending
+
/* perform architecture specific actions before user return */
arch_ret_to_user r1, lr
@@ -76,16 +79,16 @@ ret_fast_syscall:
UNWIND(.cantunwind )
str r0, [sp, #S_R0 + S_OFF]! @ save returned r0
disable_irq_notrace @ disable interrupts
+ ldr r2, [tsk, #TI_ADDR_LIMIT]
+ cmp r2, #TASK_SIZE
+ blne addr_limit_check_failed
ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
- tst r1, #_TIF_SYSCALL_WORK
- bne fast_work_pending
- tst r1, #_TIF_WORK_MASK
+ tst r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK
beq no_work_pending
UNWIND(.fnend )
ENDPROC(ret_fast_syscall)
/* Slower path - fall through to work_pending */
-fast_work_pending:
#endif
tst r1, #_TIF_SYSCALL_WORK
@@ -111,6 +114,9 @@ ENTRY(ret_to_user)
ret_slow_syscall:
disable_irq_notrace @ disable interrupts
ENTRY(ret_to_user_from_irq)
+ ldr r2, [tsk, #TI_ADDR_LIMIT]
+ cmp r2, #TASK_SIZE
+ blne addr_limit_check_failed
ldr r1, [tsk, #TI_FLAGS]
tst r1, #_TIF_WORK_MASK
bne slow_work_pending
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
index 6391728c8f03..d523cd8439a3 100644
--- a/arch/arm/kernel/entry-header.S
+++ b/arch/arm/kernel/entry-header.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/init.h>
#include <linux/linkage.h>
diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c
index 059c3da0fee3..cd1234c103fc 100644
--- a/arch/arm/kernel/fiq.c
+++ b/arch/arm/kernel/fiq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/kernel/fiq.c
*
diff --git a/arch/arm/kernel/insn.c b/arch/arm/kernel/insn.c
index b760340b7014..2e844b70386b 100644
--- a/arch/arm/kernel/insn.c
+++ b/arch/arm/kernel/insn.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bug.h>
#include <linux/kernel.h>
#include <asm/opcodes.h>
diff --git a/arch/arm/kernel/io.c b/arch/arm/kernel/io.c
index eedefe050022..60b621295d6c 100644
--- a/arch/arm/kernel/io.c
+++ b/arch/arm/kernel/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/types.h>
#include <linux/io.h>
diff --git a/arch/arm/kernel/jump_label.c b/arch/arm/kernel/jump_label.c
index 845a5dd9c42b..90bce3d9928e 100644
--- a/arch/arm/kernel/jump_label.c
+++ b/arch/arm/kernel/jump_label.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/jump_label.h>
#include <asm/patch.h>
diff --git a/arch/arm/kernel/kgdb.c b/arch/arm/kernel/kgdb.c
index 1bb4c40a3135..caa0dbe3dc61 100644
--- a/arch/arm/kernel/kgdb.c
+++ b/arch/arm/kernel/kgdb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/kernel/kgdb.c
*
diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c
index fe1419eeb932..6b38d7a634c1 100644
--- a/arch/arm/kernel/machine_kexec.c
+++ b/arch/arm/kernel/machine_kexec.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* machine_kexec.c - handle transition of Linux booting another kernel
*/
diff --git a/arch/arm/kernel/module.lds b/arch/arm/kernel/module.lds
index eacb5c67f61e..79cb6af565e5 100644
--- a/arch/arm/kernel/module.lds
+++ b/arch/arm/kernel/module.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
SECTIONS {
.plt : { BYTE(0) }
.init.plt : { BYTE(0) }
diff --git a/arch/arm/kernel/patch.c b/arch/arm/kernel/patch.c
index a1a34722c655..a50dc00d79a2 100644
--- a/arch/arm/kernel/patch.c
+++ b/arch/arm/kernel/patch.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/spinlock.h>
#include <linux/kprobes.h>
diff --git a/arch/arm/kernel/perf_callchain.c b/arch/arm/kernel/perf_callchain.c
index 22bf1f64d99a..08e43a32a693 100644
--- a/arch/arm/kernel/perf_callchain.c
+++ b/arch/arm/kernel/perf_callchain.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM callchain support
*
diff --git a/arch/arm/kernel/perf_event_v6.c b/arch/arm/kernel/perf_event_v6.c
index 8226d0b71fd3..1d7061a38922 100644
--- a/arch/arm/kernel/perf_event_v6.c
+++ b/arch/arm/kernel/perf_event_v6.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARMv6 Performance counter handling code.
*
diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c
index ab6522b43659..870b66c1e4ef 100644
--- a/arch/arm/kernel/perf_event_v7.c
+++ b/arch/arm/kernel/perf_event_v7.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARMv7 Cortex-A8 and Cortex-A9 Performance Events handling code.
*
diff --git a/arch/arm/kernel/perf_event_xscale.c b/arch/arm/kernel/perf_event_xscale.c
index 0e51f5e4f879..fcf218da660e 100644
--- a/arch/arm/kernel/perf_event_xscale.c
+++ b/arch/arm/kernel/perf_event_xscale.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARMv5 [xscale] Performance counter handling code.
*
diff --git a/arch/arm/kernel/perf_regs.c b/arch/arm/kernel/perf_regs.c
index c366b83bf955..05fe92aa7d98 100644
--- a/arch/arm/kernel/perf_regs.c
+++ b/arch/arm/kernel/perf_regs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/errno.h>
#include <linux/kernel.h>
diff --git a/arch/arm/kernel/reboot.h b/arch/arm/kernel/reboot.h
index bf7a0b1f076e..189ab81b77b6 100644
--- a/arch/arm/kernel/reboot.h
+++ b/arch/arm/kernel/reboot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef REBOOT_H
#define REBOOT_H
diff --git a/arch/arm/kernel/relocate_kernel.S b/arch/arm/kernel/relocate_kernel.S
index 35e72585ec1d..7eaa2ae7aff5 100644
--- a/arch/arm/kernel/relocate_kernel.S
+++ b/arch/arm/kernel/relocate_kernel.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* relocate_kernel.S - put the kernel image in place to boot
*/
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index e2de50bf8742..b67ae12503f3 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -614,10 +614,6 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall)
* Update the trace code with the current status.
*/
trace_hardirqs_off();
-
- /* Check valid user FS if needed */
- addr_limit_user_check();
-
do {
if (likely(thread_flags & _TIF_NEED_RESCHED)) {
schedule();
@@ -678,3 +674,9 @@ struct page *get_signal_page(void)
return page;
}
+
+/* Defer to generic check */
+asmlinkage void addr_limit_check_failed(void)
+{
+ addr_limit_user_check();
+}
diff --git a/arch/arm/kernel/sleep.S b/arch/arm/kernel/sleep.S
index 9f08d214d05a..a8257fc9cf2a 100644
--- a/arch/arm/kernel/sleep.S
+++ b/arch/arm/kernel/sleep.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <linux/threads.h>
#include <asm/asm-offsets.h>
diff --git a/arch/arm/kernel/suspend.c b/arch/arm/kernel/suspend.c
index ef794c799cb6..a40ebb7c0896 100644
--- a/arch/arm/kernel/suspend.c
+++ b/arch/arm/kernel/suspend.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/mm_types.h>
diff --git a/arch/arm/kernel/vmlinux-xip.lds.S b/arch/arm/kernel/vmlinux-xip.lds.S
index 8265b116218d..0951df916b85 100644
--- a/arch/arm/kernel/vmlinux-xip.lds.S
+++ b/arch/arm/kernel/vmlinux-xip.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ld script to make ARM Linux kernel
* taken from the i386 version by Russell King
* Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index c83a7ba737d6..1845a5affb44 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ld script to make ARM Linux kernel
* taken from the i386 version by Russell King
* Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
diff --git a/arch/arm/kvm/Kconfig b/arch/arm/kvm/Kconfig
index 90d0176fb30d..f24628db5409 100644
--- a/arch/arm/kvm/Kconfig
+++ b/arch/arm/kvm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# KVM configuration
#
diff --git a/arch/arm/kvm/Makefile b/arch/arm/kvm/Makefile
index d9beee652d36..f550abd64a25 100644
--- a/arch/arm/kvm/Makefile
+++ b/arch/arm/kvm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Kernel-based Virtual Machine module
#
diff --git a/arch/arm/kvm/hyp/Makefile b/arch/arm/kvm/hyp/Makefile
index 8679405b0b2b..5fca24d52fe6 100644
--- a/arch/arm/kvm/hyp/Makefile
+++ b/arch/arm/kvm/hyp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Kernel-based Virtual Machine module, HYP part
#
diff --git a/arch/arm/kvm/trace.h b/arch/arm/kvm/trace.h
index b0d10648c486..69a9d62a0ac6 100644
--- a/arch/arm/kvm/trace.h
+++ b/arch/arm/kvm/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_ARM_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_ARM_KVM_H
diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index 27f4d96258a2..4cb0b9624d8f 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/arm/lib/Makefile
#
diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h
index 7d807cfd8ef5..93cddab73072 100644
--- a/arch/arm/lib/bitops.h
+++ b/arch/arm/lib/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/assembler.h>
#include <asm/unwind.h>
diff --git a/arch/arm/lib/bswapsdi2.S b/arch/arm/lib/bswapsdi2.S
index 07cda737bb11..591ba077e874 100644
--- a/arch/arm/lib/bswapsdi2.S
+++ b/arch/arm/lib/bswapsdi2.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
diff --git a/arch/arm/mach-actions/Kconfig b/arch/arm/mach-actions/Kconfig
index ad9c5c89c683..b5e0ac965ec0 100644
--- a/arch/arm/mach-actions/Kconfig
+++ b/arch/arm/mach-actions/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARCH_ACTIONS
bool "Actions Semi SoCs"
depends on ARCH_MULTI_V7
diff --git a/arch/arm/mach-alpine/Kconfig b/arch/arm/mach-alpine/Kconfig
index b41838a58ae4..e3cbb07fe1b4 100644
--- a/arch/arm/mach-alpine/Kconfig
+++ b/arch/arm/mach-alpine/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARCH_ALPINE
bool "Annapurna Labs Alpine platform"
depends on ARCH_MULTI_V7
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index ee34aa34cc51..4ea93c9df77b 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
index 5036f996e694..849014c01cf4 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -533,8 +533,8 @@ static void __init at91_pm_backup_init(void)
}
pm_bu->suspended = 0;
- pm_bu->canary = virt_to_phys(&canary);
- pm_bu->resume = virt_to_phys(cpu_resume);
+ pm_bu->canary = __pa_symbol(&canary);
+ pm_bu->resume = __pa_symbol(cpu_resume);
return;
diff --git a/arch/arm/mach-at91/pm_data-offsets.c b/arch/arm/mach-at91/pm_data-offsets.c
index c0a73e62b725..f2d893c03cd9 100644
--- a/arch/arm/mach-at91/pm_data-offsets.c
+++ b/arch/arm/mach-at91/pm_data-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/stddef.h>
#include <linux/kbuild.h>
#include "pm.h"
diff --git a/arch/arm/mach-axxia/Kconfig b/arch/arm/mach-axxia/Kconfig
index fe627cbcfdc5..bb2ce1c63fd9 100644
--- a/arch/arm/mach-axxia/Kconfig
+++ b/arch/arm/mach-axxia/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARCH_AXXIA
bool "LSI Axxia platforms"
depends on ARCH_MULTI_V7 && ARM_LPAE
diff --git a/arch/arm/mach-axxia/Makefile b/arch/arm/mach-axxia/Makefile
index ec4f68b460c6..8df8fe76ad47 100644
--- a/arch/arm/mach-axxia/Makefile
+++ b/arch/arm/mach-axxia/Makefile
@@ -1,2 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += axxia.o
obj-$(CONFIG_SMP) += platsmp.o
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
index 73be3d578851..5d2925e2ce1f 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARCH_BCM
bool "Broadcom SoC Support"
depends on ARCH_MULTI_V6_V7
diff --git a/arch/arm/mach-bcm/bcm63xx_smp.h b/arch/arm/mach-bcm/bcm63xx_smp.h
index 9c6d50e2b111..4e742604a0fd 100644
--- a/arch/arm/mach-bcm/bcm63xx_smp.h
+++ b/arch/arm/mach-bcm/bcm63xx_smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BCM63XX_SMP_H
#define __BCM63XX_SMP_H
diff --git a/arch/arm/mach-clps711x/Kconfig b/arch/arm/mach-clps711x/Kconfig
index f385b1fcafef..fc9188b54dd6 100644
--- a/arch/arm/mach-clps711x/Kconfig
+++ b/arch/arm/mach-clps711x/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARCH_CLPS711X
bool "Cirrus Logic EP721x/EP731x-based"
depends on ARCH_MULTI_V4T
diff --git a/arch/arm/mach-clps711x/Makefile b/arch/arm/mach-clps711x/Makefile
index bd0b7b5d6e9d..f18f330f5364 100644
--- a/arch/arm/mach-clps711x/Makefile
+++ b/arch/arm/mach-clps711x/Makefile
@@ -1 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += board-dt.o
diff --git a/arch/arm/mach-cns3xxx/Kconfig b/arch/arm/mach-cns3xxx/Kconfig
index 5fd836be2701..1ecf5466931e 100644
--- a/arch/arm/mach-cns3xxx/Kconfig
+++ b/arch/arm/mach-cns3xxx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARCH_CNS3XXX
bool "Cavium Networks CNS3XXX family"
depends on ARCH_MULTI_V6
diff --git a/arch/arm/mach-cns3xxx/Makefile b/arch/arm/mach-cns3xxx/Makefile
index a1ff10848698..52ca6ed62304 100644
--- a/arch/arm/mach-cns3xxx/Makefile
+++ b/arch/arm/mach-cns3xxx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ARCH_CNS3XXX) += cns3xxx.o
cns3xxx-y += core.o pm.o
cns3xxx-$(CONFIG_ATAGS) += devices.o
diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig
index 36c8f5324e43..05c3eecf47cb 100644
--- a/arch/arm/mach-davinci/Kconfig
+++ b/arch/arm/mach-davinci/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ARCH_DAVINCI
config AINTC
diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile
index df96ca9eab6d..4e8178050027 100644
--- a/arch/arm/mach-davinci/Makefile
+++ b/arch/arm/mach-davinci/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-davinci/Makefile.boot b/arch/arm/mach-davinci/Makefile.boot
index 4b81601754a2..d36b251f325b 100644
--- a/arch/arm/mach-davinci/Makefile.boot
+++ b/arch/arm/mach-davinci/Makefile.boot
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
zreladdr-$(CONFIG_ARCH_DAVINCI_DA8XX) += 0xc0008000
params_phys-$(CONFIG_ARCH_DAVINCI_DA8XX) := 0xc0000100
initrd_phys-$(CONFIG_ARCH_DAVINCI_DA8XX) := 0xc0800000
diff --git a/arch/arm/mach-davinci/asp.h b/arch/arm/mach-davinci/asp.h
index 1128e1d8e4b4..495aa6907cbc 100644
--- a/arch/arm/mach-davinci/asp.h
+++ b/arch/arm/mach-davinci/asp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* TI DaVinci Audio definitions
*/
diff --git a/arch/arm/mach-davinci/ddr2.h b/arch/arm/mach-davinci/ddr2.h
index c19e047d0e6a..4f7d7824b0c9 100644
--- a/arch/arm/mach-davinci/ddr2.h
+++ b/arch/arm/mach-davinci/ddr2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define DDR2_SDRCR_OFFSET 0xc
#define DDR2_SRPD_BIT (1 << 23)
#define DDR2_MCLKSTOPEN_BIT (1 << 30)
diff --git a/arch/arm/mach-davinci/usb-da8xx.c b/arch/arm/mach-davinci/usb-da8xx.c
index 9a6af0bd5dc3..d480a02e1298 100644
--- a/arch/arm/mach-davinci/usb-da8xx.c
+++ b/arch/arm/mach-davinci/usb-da8xx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DA8xx USB
*/
diff --git a/arch/arm/mach-davinci/usb.c b/arch/arm/mach-davinci/usb.c
index 0e7e89c1f331..31ed7aa47227 100644
--- a/arch/arm/mach-davinci/usb.c
+++ b/arch/arm/mach-davinci/usb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* USB
*/
diff --git a/arch/arm/mach-digicolor/Kconfig b/arch/arm/mach-digicolor/Kconfig
index 9d05c6c4181d..90394433c405 100644
--- a/arch/arm/mach-digicolor/Kconfig
+++ b/arch/arm/mach-digicolor/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARCH_DIGICOLOR
bool "Conexant Digicolor SoC Support"
depends on ARCH_MULTI_V7
diff --git a/arch/arm/mach-dove/Kconfig b/arch/arm/mach-dove/Kconfig
index 0bd6d894c597..7747fe64420a 100644
--- a/arch/arm/mach-dove/Kconfig
+++ b/arch/arm/mach-dove/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ARCH_DOVE
menu "Marvell Dove Implementations"
diff --git a/arch/arm/mach-dove/Makefile b/arch/arm/mach-dove/Makefile
index b608a21919fb..cdf163cab738 100644
--- a/arch/arm/mach-dove/Makefile
+++ b/arch/arm/mach-dove/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += common.o
obj-$(CONFIG_DOVE_LEGACY) += irq.o mpp.o
obj-$(CONFIG_PCI) += pcie.o
diff --git a/arch/arm/mach-dove/mpp.h b/arch/arm/mach-dove/mpp.h
index fbec7c52bfac..2e4b89c86ca8 100644
--- a/arch/arm/mach-dove/mpp.h
+++ b/arch/arm/mach-dove/mpp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_DOVE_MPP_CODED_H
#define __ARCH_DOVE_MPP_CODED_H
diff --git a/arch/arm/mach-ebsa110/io.c b/arch/arm/mach-ebsa110/io.c
index b57980b435fd..3c44dd3596ea 100644
--- a/arch/arm/mach-ebsa110/io.c
+++ b/arch/arm/mach-ebsa110/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-ebsa110/isamem.c
*
diff --git a/arch/arm/mach-efm32/dtmachine.c b/arch/arm/mach-efm32/dtmachine.c
index 2367495193c1..e9364b843641 100644
--- a/arch/arm/mach-efm32/dtmachine.c
+++ b/arch/arm/mach-efm32/dtmachine.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <asm/v7m.h>
diff --git a/arch/arm/mach-ep93xx/Makefile b/arch/arm/mach-ep93xx/Makefile
index b7ae4345ac08..86768495f61d 100644
--- a/arch/arm/mach-ep93xx/Makefile
+++ b/arch/arm/mach-ep93xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
index c64d74246602..6839ea032e58 100644
--- a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
+++ b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
*/
diff --git a/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h b/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h
index 6d7c571a519f..242af4a401ea 100644
--- a/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h
+++ b/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Include file for the EP93XX GPIO controller machine specifics */
#ifndef __GPIO_EP93XX_H
diff --git a/arch/arm/mach-ep93xx/include/mach/hardware.h b/arch/arm/mach-ep93xx/include/mach/hardware.h
index efcd47815a91..8938906e780a 100644
--- a/arch/arm/mach-ep93xx/include/mach/hardware.h
+++ b/arch/arm/mach-ep93xx/include/mach/hardware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-ep93xx/include/mach/hardware.h
*/
diff --git a/arch/arm/mach-ep93xx/include/mach/irqs.h b/arch/arm/mach-ep93xx/include/mach/irqs.h
index ff98390bbf0f..244daf83ce6d 100644
--- a/arch/arm/mach-ep93xx/include/mach/irqs.h
+++ b/arch/arm/mach-ep93xx/include/mach/irqs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-ep93xx/include/mach/irqs.h
*/
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
index db0839691ef5..3bbe1591013e 100644
--- a/arch/arm/mach-ep93xx/include/mach/platform.h
+++ b/arch/arm/mach-ep93xx/include/mach/platform.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-ep93xx/include/mach/platform.h
*/
diff --git a/arch/arm/mach-ep93xx/timer-ep93xx.c b/arch/arm/mach-ep93xx/timer-ep93xx.c
index 874cbc91b669..de998830f534 100644
--- a/arch/arm/mach-ep93xx/timer-ep93xx.c
+++ b/arch/arm/mach-ep93xx/timer-ep93xx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/clocksource.h>
diff --git a/arch/arm/mach-ep93xx/ts72xx.h b/arch/arm/mach-ep93xx/ts72xx.h
index 2255ba29fdd6..b89850f1a965 100644
--- a/arch/arm/mach-ep93xx/ts72xx.h
+++ b/arch/arm/mach-ep93xx/ts72xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-ep93xx/include/mach/ts72xx.h
*/
diff --git a/arch/arm/mach-footbridge/Makefile b/arch/arm/mach-footbridge/Makefile
index e83d5c8396ff..a09f1041f141 100644
--- a/arch/arm/mach-footbridge/Makefile
+++ b/arch/arm/mach-footbridge/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-footbridge/cats-hw.c b/arch/arm/mach-footbridge/cats-hw.c
index 8f05489671b7..e575dc0698cd 100644
--- a/arch/arm/mach-footbridge/cats-hw.c
+++ b/arch/arm/mach-footbridge/cats-hw.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-footbridge/cats-hw.c
*
diff --git a/arch/arm/mach-footbridge/cats-pci.c b/arch/arm/mach-footbridge/cats-pci.c
index 5cec2567c9c5..0b2fd7e2e9b4 100644
--- a/arch/arm/mach-footbridge/cats-pci.c
+++ b/arch/arm/mach-footbridge/cats-pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-footbridge/cats-pci.c
*
diff --git a/arch/arm/mach-footbridge/common.h b/arch/arm/mach-footbridge/common.h
index b911e5587ecf..e12587db59c4 100644
--- a/arch/arm/mach-footbridge/common.h
+++ b/arch/arm/mach-footbridge/common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/reboot.h>
extern void footbridge_timer_init(void);
diff --git a/arch/arm/mach-footbridge/dc21285-timer.c b/arch/arm/mach-footbridge/dc21285-timer.c
index 75395a720e63..f76212d2dbf1 100644
--- a/arch/arm/mach-footbridge/dc21285-timer.c
+++ b/arch/arm/mach-footbridge/dc21285-timer.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-footbridge/dc21285-timer.c
*
diff --git a/arch/arm/mach-footbridge/dma.c b/arch/arm/mach-footbridge/dma.c
index 22536b85a81d..86618074a7a5 100644
--- a/arch/arm/mach-footbridge/dma.c
+++ b/arch/arm/mach-footbridge/dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/kernel/dma-ebsa285.c
*
diff --git a/arch/arm/mach-footbridge/ebsa285-pci.c b/arch/arm/mach-footbridge/ebsa285-pci.c
index fd12d8a36dc5..6f28aaa9ca79 100644
--- a/arch/arm/mach-footbridge/ebsa285-pci.c
+++ b/arch/arm/mach-footbridge/ebsa285-pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-footbridge/ebsa285-pci.c
*
diff --git a/arch/arm/mach-footbridge/ebsa285.c b/arch/arm/mach-footbridge/ebsa285.c
index aee8300f3490..21cf9a358b90 100644
--- a/arch/arm/mach-footbridge/ebsa285.c
+++ b/arch/arm/mach-footbridge/ebsa285.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-footbridge/ebsa285.c
*
diff --git a/arch/arm/mach-footbridge/include/mach/irqs.h b/arch/arm/mach-footbridge/include/mach/irqs.h
index 61c714c4920e..a5f41846ab9c 100644
--- a/arch/arm/mach-footbridge/include/mach/irqs.h
+++ b/arch/arm/mach-footbridge/include/mach/irqs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-footbridge/include/mach/irqs.h
*
diff --git a/arch/arm/mach-footbridge/include/mach/isa-dma.h b/arch/arm/mach-footbridge/include/mach/isa-dma.h
index 5bd4a0d338a8..8a1b991076e1 100644
--- a/arch/arm/mach-footbridge/include/mach/isa-dma.h
+++ b/arch/arm/mach-footbridge/include/mach/isa-dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-footbridge/include/mach/isa-dma.h
*
diff --git a/arch/arm/mach-footbridge/isa-rtc.c b/arch/arm/mach-footbridge/isa-rtc.c
index 07fde4051f78..b8f741a3a37e 100644
--- a/arch/arm/mach-footbridge/isa-rtc.c
+++ b/arch/arm/mach-footbridge/isa-rtc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/mach-footbridge/isa-rtc.c
*
diff --git a/arch/arm/mach-footbridge/isa-timer.c b/arch/arm/mach-footbridge/isa-timer.c
index b73f52e196b9..82f45591fb2c 100644
--- a/arch/arm/mach-footbridge/isa-timer.c
+++ b/arch/arm/mach-footbridge/isa-timer.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-footbridge/isa-timer.c
*
diff --git a/arch/arm/mach-footbridge/netwinder-hw.c b/arch/arm/mach-footbridge/netwinder-hw.c
index cdee08c6d239..5f7265b1b34c 100644
--- a/arch/arm/mach-footbridge/netwinder-hw.c
+++ b/arch/arm/mach-footbridge/netwinder-hw.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-footbridge/netwinder-hw.c
*
diff --git a/arch/arm/mach-footbridge/netwinder-pci.c b/arch/arm/mach-footbridge/netwinder-pci.c
index 0fba5134e4fe..9473aa0305e5 100644
--- a/arch/arm/mach-footbridge/netwinder-pci.c
+++ b/arch/arm/mach-footbridge/netwinder-pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-footbridge/netwinder-pci.c
*
diff --git a/arch/arm/mach-footbridge/personal-pci.c b/arch/arm/mach-footbridge/personal-pci.c
index 5c9ee54613b2..4391e433a4b2 100644
--- a/arch/arm/mach-footbridge/personal-pci.c
+++ b/arch/arm/mach-footbridge/personal-pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-footbridge/personal-pci.c
*
diff --git a/arch/arm/mach-footbridge/personal.c b/arch/arm/mach-footbridge/personal.c
index 7bdeabdcd4d8..ca715754fc00 100644
--- a/arch/arm/mach-footbridge/personal.c
+++ b/arch/arm/mach-footbridge/personal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-footbridge/personal.c
*
diff --git a/arch/arm/mach-gemini/board-dt.c b/arch/arm/mach-gemini/board-dt.c
index c0c0ebdd551e..de0afcc8d94a 100644
--- a/arch/arm/mach-gemini/board-dt.c
+++ b/arch/arm/mach-gemini/board-dt.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Gemini Device Tree boot support
*/
diff --git a/arch/arm/mach-highbank/core.h b/arch/arm/mach-highbank/core.h
index 7ec5edcd1336..3991a6594ae5 100644
--- a/arch/arm/mach-highbank/core.h
+++ b/arch/arm/mach-highbank/core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __HIGHBANK_CORE_H
#define __HIGHBANK_CORE_H
diff --git a/arch/arm/mach-hisi/core.h b/arch/arm/mach-hisi/core.h
index c58b68ab0cb6..61245274fdaf 100644
--- a/arch/arm/mach-hisi/core.h
+++ b/arch/arm/mach-hisi/core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __HISILICON_CORE_H
#define __HISILICON_CORE_H
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index cab128913e72..8ff71058207d 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y := cpu.o system.o irq-common.o
obj-$(CONFIG_SOC_IMX21) += mm-imx21.o
diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index 94906ed49392..d4e55f2a897e 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/err.h>
#include <linux/module.h>
#include <linux/io.h>
diff --git a/arch/arm/mach-imx/devices/Makefile b/arch/arm/mach-imx/devices/Makefile
index aa6cee870795..e44758aaa11c 100644
--- a/arch/arm/mach-imx/devices/Makefile
+++ b/arch/arm/mach-imx/devices/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y := devices.o
obj-$(CONFIG_IMX_HAVE_PLATFORM_FEC) += platform-fec.o
diff --git a/arch/arm/mach-imx/ehci.h b/arch/arm/mach-imx/ehci.h
index 0e060023db8b..b7ad6175f5bf 100644
--- a/arch/arm/mach-imx/ehci.h
+++ b/arch/arm/mach-imx/ehci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_IMX_EHCI_H
#define __MACH_IMX_EHCI_H
diff --git a/arch/arm/mach-imx/mx31.h b/arch/arm/mach-imx/mx31.h
index ee9b1f9215df..d9574671ca5c 100644
--- a/arch/arm/mach-imx/mx31.h
+++ b/arch/arm/mach-imx/mx31.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_MX31_H__
#define __MACH_MX31_H__
diff --git a/arch/arm/mach-imx/mx35.h b/arch/arm/mach-imx/mx35.h
index 2af5d3a699c7..760de6a0af7e 100644
--- a/arch/arm/mach-imx/mx35.h
+++ b/arch/arm/mach-imx/mx35.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_MX35_H__
#define __MACH_MX35_H__
diff --git a/arch/arm/mach-imx/pcm037.h b/arch/arm/mach-imx/pcm037.h
index 7d167690e17d..470d3c887e14 100644
--- a/arch/arm/mach-imx/pcm037.h
+++ b/arch/arm/mach-imx/pcm037.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PCM037_H__
#define __PCM037_H__
diff --git a/arch/arm/mach-imx/ulpi.h b/arch/arm/mach-imx/ulpi.h
index 23f5c0349e80..b367902c9c32 100644
--- a/arch/arm/mach-imx/ulpi.h
+++ b/arch/arm/mach-imx/ulpi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_ULPI_H
#define __MACH_ULPI_H
diff --git a/arch/arm/mach-integrator/Makefile b/arch/arm/mach-integrator/Makefile
index 1ebe45356b09..a5a4470db482 100644
--- a/arch/arm/mach-integrator/Makefile
+++ b/arch/arm/mach-integrator/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-integrator/cm.h b/arch/arm/mach-integrator/cm.h
index 5b8ba8247f45..f09ea18a50f8 100644
--- a/arch/arm/mach-integrator/cm.h
+++ b/arch/arm/mach-integrator/cm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* access the core module control register.
*/
diff --git a/arch/arm/mach-integrator/common.h b/arch/arm/mach-integrator/common.h
index 96c9dc56cabf..f053aeebeb7a 100644
--- a/arch/arm/mach-integrator/common.h
+++ b/arch/arm/mach-integrator/common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/reboot.h>
#include <linux/amba/serial.h>
extern struct amba_pl010_data ap_uart_data;
diff --git a/arch/arm/mach-integrator/impd1.h b/arch/arm/mach-integrator/impd1.h
index 76de4dc9bee4..36124d34c8f7 100644
--- a/arch/arm/mach-integrator/impd1.h
+++ b/arch/arm/mach-integrator/impd1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define IMPD1_LEDS 0x0c
#define IMPD1_INT 0x10
#define IMPD1_SW 0x14
diff --git a/arch/arm/mach-integrator/lm.h b/arch/arm/mach-integrator/lm.h
index 28186b6f2c09..172966a699bd 100644
--- a/arch/arm/mach-integrator/lm.h
+++ b/arch/arm/mach-integrator/lm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
struct lm_device {
struct device dev;
diff --git a/arch/arm/mach-integrator/pci_v3.h b/arch/arm/mach-integrator/pci_v3.h
index 06a9e2e7d007..cafc7174baab 100644
--- a/arch/arm/mach-integrator/pci_v3.h
+++ b/arch/arm/mach-integrator/pci_v3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Simple oneliner include to the PCIv3 early init */
#ifdef CONFIG_PCI
extern int pci_v3_early_init(void);
diff --git a/arch/arm/mach-iop13xx/Kconfig b/arch/arm/mach-iop13xx/Kconfig
index 40c2d689f2eb..c4f04070b4c1 100644
--- a/arch/arm/mach-iop13xx/Kconfig
+++ b/arch/arm/mach-iop13xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ARCH_IOP13XX
menu "IOP13XX Implementation Options"
diff --git a/arch/arm/mach-iop13xx/Makefile b/arch/arm/mach-iop13xx/Makefile
index a3d9260e335f..5757c8f6e371 100644
--- a/arch/arm/mach-iop13xx/Makefile
+++ b/arch/arm/mach-iop13xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ARCH_IOP13XX) += setup.o
obj-$(CONFIG_ARCH_IOP13XX) += irq.o
obj-$(CONFIG_ARCH_IOP13XX) += pci.o
diff --git a/arch/arm/mach-iop13xx/include/mach/hardware.h b/arch/arm/mach-iop13xx/include/mach/hardware.h
index 786fa266fab3..8c943fa6bbd7 100644
--- a/arch/arm/mach-iop13xx/include/mach/hardware.h
+++ b/arch/arm/mach-iop13xx/include/mach/hardware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_HARDWARE_H
#define __ASM_ARCH_HARDWARE_H
#include <asm/types.h>
diff --git a/arch/arm/mach-iop13xx/include/mach/iop13xx.h b/arch/arm/mach-iop13xx/include/mach/iop13xx.h
index 9311ee2126d6..04bb6aca12c5 100644
--- a/arch/arm/mach-iop13xx/include/mach/iop13xx.h
+++ b/arch/arm/mach-iop13xx/include/mach/iop13xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IOP13XX_HW_H_
#define _IOP13XX_HW_H_
diff --git a/arch/arm/mach-iop13xx/include/mach/iq81340.h b/arch/arm/mach-iop13xx/include/mach/iq81340.h
index ba2cf931e9ce..d7ad27a95558 100644
--- a/arch/arm/mach-iop13xx/include/mach/iq81340.h
+++ b/arch/arm/mach-iop13xx/include/mach/iq81340.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IQ81340_H_
#define _IQ81340_H_
diff --git a/arch/arm/mach-iop13xx/include/mach/irqs.h b/arch/arm/mach-iop13xx/include/mach/irqs.h
index e8d24d32121a..cd6b6375c050 100644
--- a/arch/arm/mach-iop13xx/include/mach/irqs.h
+++ b/arch/arm/mach-iop13xx/include/mach/irqs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IOP13XX_IRQS_H_
#define _IOP13XX_IRQS_H_
diff --git a/arch/arm/mach-iop13xx/include/mach/memory.h b/arch/arm/mach-iop13xx/include/mach/memory.h
index 59307e787588..32da0e09c6a3 100644
--- a/arch/arm/mach-iop13xx/include/mach/memory.h
+++ b/arch/arm/mach-iop13xx/include/mach/memory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_MEMORY_H
#define __ASM_ARCH_MEMORY_H
diff --git a/arch/arm/mach-iop13xx/include/mach/time.h b/arch/arm/mach-iop13xx/include/mach/time.h
index c871e6874594..2c2d7532d5c3 100644
--- a/arch/arm/mach-iop13xx/include/mach/time.h
+++ b/arch/arm/mach-iop13xx/include/mach/time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IOP13XX_TIME_H_
#define _IOP13XX_TIME_H_
diff --git a/arch/arm/mach-iop13xx/include/mach/uncompress.h b/arch/arm/mach-iop13xx/include/mach/uncompress.h
index d3791ece2772..c62903041d11 100644
--- a/arch/arm/mach-iop13xx/include/mach/uncompress.h
+++ b/arch/arm/mach-iop13xx/include/mach/uncompress.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/types.h>
#include <linux/serial_reg.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-iop13xx/msi.h b/arch/arm/mach-iop13xx/msi.h
index b80c5ae17e99..766dcfaaa353 100644
--- a/arch/arm/mach-iop13xx/msi.h
+++ b/arch/arm/mach-iop13xx/msi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IOP13XX_MSI_H_
#define _IOP13XX_MSI_H_
#ifdef CONFIG_PCI_MSI
diff --git a/arch/arm/mach-iop13xx/pci.h b/arch/arm/mach-iop13xx/pci.h
index 8dc343cb887a..736168d8c7ac 100644
--- a/arch/arm/mach-iop13xx/pci.h
+++ b/arch/arm/mach-iop13xx/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IOP13XX_PCI_H_
#define _IOP13XX_PCI_H_
#include <linux/io.h>
diff --git a/arch/arm/mach-iop32x/Kconfig b/arch/arm/mach-iop32x/Kconfig
index 5e8c6f7dfabb..f1f342cb0509 100644
--- a/arch/arm/mach-iop32x/Kconfig
+++ b/arch/arm/mach-iop32x/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ARCH_IOP32X
menu "IOP32x Implementation Options"
diff --git a/arch/arm/mach-iop32x/Makefile b/arch/arm/mach-iop32x/Makefile
index 2d4010abb82f..71d62447d4d5 100644
--- a/arch/arm/mach-iop32x/Makefile
+++ b/arch/arm/mach-iop32x/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-iop32x/gpio-iop32x.h b/arch/arm/mach-iop32x/gpio-iop32x.h
index 3c7309c02029..20af87e4c5e8 100644
--- a/arch/arm/mach-iop32x/gpio-iop32x.h
+++ b/arch/arm/mach-iop32x/gpio-iop32x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static struct resource iop32x_gpio_res[] = {
DEFINE_RES_MEM((IOP3XX_PERIPHERAL_PHYS_BASE + 0x07c4), 0x10),
};
diff --git a/arch/arm/mach-iop32x/include/mach/adma.h b/arch/arm/mach-iop32x/include/mach/adma.h
index 5ed92037dd10..2b20063123ad 100644
--- a/arch/arm/mach-iop32x/include/mach/adma.h
+++ b/arch/arm/mach-iop32x/include/mach/adma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef IOP32X_ADMA_H
#define IOP32X_ADMA_H
#include <asm/hardware/iop3xx-adma.h>
diff --git a/arch/arm/mach-iop32x/include/mach/glantank.h b/arch/arm/mach-iop32x/include/mach/glantank.h
index 958eb91c0913..b9df2e4614cf 100644
--- a/arch/arm/mach-iop32x/include/mach/glantank.h
+++ b/arch/arm/mach-iop32x/include/mach/glantank.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-iop32x/include/mach/glantank.h
*
diff --git a/arch/arm/mach-iop32x/include/mach/hardware.h b/arch/arm/mach-iop32x/include/mach/hardware.h
index 48cb1b20ba91..6e5303e60226 100644
--- a/arch/arm/mach-iop32x/include/mach/hardware.h
+++ b/arch/arm/mach-iop32x/include/mach/hardware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-iop32x/include/mach/hardware.h
*/
diff --git a/arch/arm/mach-iop32x/include/mach/iq31244.h b/arch/arm/mach-iop32x/include/mach/iq31244.h
index 6b6b369e781c..e62da5da6ed4 100644
--- a/arch/arm/mach-iop32x/include/mach/iq31244.h
+++ b/arch/arm/mach-iop32x/include/mach/iq31244.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-iop32x/include/mach/iq31244.h
*
diff --git a/arch/arm/mach-iop32x/include/mach/iq80321.h b/arch/arm/mach-iop32x/include/mach/iq80321.h
index 498819b737e7..faf62c26f6f8 100644
--- a/arch/arm/mach-iop32x/include/mach/iq80321.h
+++ b/arch/arm/mach-iop32x/include/mach/iq80321.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-iop32x/include/mach/iq80321.h
*
diff --git a/arch/arm/mach-iop32x/include/mach/n2100.h b/arch/arm/mach-iop32x/include/mach/n2100.h
index 40b8a532b064..70bb660b643a 100644
--- a/arch/arm/mach-iop32x/include/mach/n2100.h
+++ b/arch/arm/mach-iop32x/include/mach/n2100.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-iop32x/include/mach/n2100.h
*
diff --git a/arch/arm/mach-iop32x/include/mach/time.h b/arch/arm/mach-iop32x/include/mach/time.h
index 0f28c9949623..d08950ccebc4 100644
--- a/arch/arm/mach-iop32x/include/mach/time.h
+++ b/arch/arm/mach-iop32x/include/mach/time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IOP32X_TIME_H_
#define _IOP32X_TIME_H_
#define IRQ_IOP_TIMER0 IRQ_IOP32X_TIMER0
diff --git a/arch/arm/mach-iop32x/include/mach/uncompress.h b/arch/arm/mach-iop32x/include/mach/uncompress.h
index b3d45fd365e7..ed4ac3e28fa1 100644
--- a/arch/arm/mach-iop32x/include/mach/uncompress.h
+++ b/arch/arm/mach-iop32x/include/mach/uncompress.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-iop32x/include/mach/uncompress.h
*/
diff --git a/arch/arm/mach-iop33x/include/mach/adma.h b/arch/arm/mach-iop33x/include/mach/adma.h
index 4b92f795f90e..8aa7159ab6d8 100644
--- a/arch/arm/mach-iop33x/include/mach/adma.h
+++ b/arch/arm/mach-iop33x/include/mach/adma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef IOP33X_ADMA_H
#define IOP33X_ADMA_H
#include <asm/hardware/iop3xx-adma.h>
diff --git a/arch/arm/mach-iop33x/include/mach/hardware.h b/arch/arm/mach-iop33x/include/mach/hardware.h
index 839285315e4e..020bafbc36a5 100644
--- a/arch/arm/mach-iop33x/include/mach/hardware.h
+++ b/arch/arm/mach-iop33x/include/mach/hardware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-iop33x/include/mach/hardware.h
*/
diff --git a/arch/arm/mach-iop33x/include/mach/iq80331.h b/arch/arm/mach-iop33x/include/mach/iq80331.h
index fe406b0127f7..c7e68d863e44 100644
--- a/arch/arm/mach-iop33x/include/mach/iq80331.h
+++ b/arch/arm/mach-iop33x/include/mach/iq80331.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-iop33x/include/mach/iq80331.h
*
diff --git a/arch/arm/mach-iop33x/include/mach/iq80332.h b/arch/arm/mach-iop33x/include/mach/iq80332.h
index 8325d71f2ed5..749b44bf7f62 100644
--- a/arch/arm/mach-iop33x/include/mach/iq80332.h
+++ b/arch/arm/mach-iop33x/include/mach/iq80332.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-iop33x/include/mach/iq80332.h
*
diff --git a/arch/arm/mach-iop33x/include/mach/time.h b/arch/arm/mach-iop33x/include/mach/time.h
index 4ac4d7664f85..801f8fd644ad 100644
--- a/arch/arm/mach-iop33x/include/mach/time.h
+++ b/arch/arm/mach-iop33x/include/mach/time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IOP33X_TIME_H_
#define _IOP33X_TIME_H_
#define IRQ_IOP_TIMER0 IRQ_IOP33X_TIMER0
diff --git a/arch/arm/mach-iop33x/include/mach/uncompress.h b/arch/arm/mach-iop33x/include/mach/uncompress.h
index ed282e14176d..62b71cde1f79 100644
--- a/arch/arm/mach-iop33x/include/mach/uncompress.h
+++ b/arch/arm/mach-iop33x/include/mach/uncompress.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-iop33x/include/mach/uncompress.h
*/
diff --git a/arch/arm/mach-ixp4xx/Makefile b/arch/arm/mach-ixp4xx/Makefile
index eded94c96dd4..f09994500a34 100644
--- a/arch/arm/mach-ixp4xx/Makefile
+++ b/arch/arm/mach-ixp4xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-ixp4xx/avila-setup.c b/arch/arm/mach-ixp4xx/avila-setup.c
index 6beec150c060..186df64ceae7 100644
--- a/arch/arm/mach-ixp4xx/avila-setup.c
+++ b/arch/arm/mach-ixp4xx/avila-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/mach-ixp4xx/avila-setup.c
*
diff --git a/arch/arm/mach-ixp4xx/coyote-setup.c b/arch/arm/mach-ixp4xx/coyote-setup.c
index 820cae8608fc..7e40fe70933b 100644
--- a/arch/arm/mach-ixp4xx/coyote-setup.c
+++ b/arch/arm/mach-ixp4xx/coyote-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/mach-ixp4xx/coyote-setup.c
*
diff --git a/arch/arm/mach-ixp4xx/dsmg600-setup.c b/arch/arm/mach-ixp4xx/dsmg600-setup.c
index b3bd0e137f6d..db488ecc98b5 100644
--- a/arch/arm/mach-ixp4xx/dsmg600-setup.c
+++ b/arch/arm/mach-ixp4xx/dsmg600-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DSM-G600 board-setup
*
diff --git a/arch/arm/mach-ixp4xx/fsg-setup.c b/arch/arm/mach-ixp4xx/fsg-setup.c
index 5c4b0c4a1b37..6e32cbc4f590 100644
--- a/arch/arm/mach-ixp4xx/fsg-setup.c
+++ b/arch/arm/mach-ixp4xx/fsg-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/mach-ixp4xx/fsg-setup.c
*
diff --git a/arch/arm/mach-ixp4xx/gateway7001-setup.c b/arch/arm/mach-ixp4xx/gateway7001-setup.c
index 3d24b3fcee87..1be6faf6da9a 100644
--- a/arch/arm/mach-ixp4xx/gateway7001-setup.c
+++ b/arch/arm/mach-ixp4xx/gateway7001-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/mach-ixp4xx/gateway7001-setup.c
*
diff --git a/arch/arm/mach-ixp4xx/goramo_mlr.c b/arch/arm/mach-ixp4xx/goramo_mlr.c
index 80bd9d6d04de..145ec5c1b0eb 100644
--- a/arch/arm/mach-ixp4xx/goramo_mlr.c
+++ b/arch/arm/mach-ixp4xx/goramo_mlr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Goramo MultiLink router platform code
* Copyright (C) 2006-2009 Krzysztof Halasa <khc@pm.waw.pl>
diff --git a/arch/arm/mach-ixp4xx/include/mach/npe.h b/arch/arm/mach-ixp4xx/include/mach/npe.h
index e320db2457ae..3a980845e557 100644
--- a/arch/arm/mach-ixp4xx/include/mach/npe.h
+++ b/arch/arm/mach-ixp4xx/include/mach/npe.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IXP4XX_NPE_H
#define __IXP4XX_NPE_H
diff --git a/arch/arm/mach-ixp4xx/include/mach/platform.h b/arch/arm/mach-ixp4xx/include/mach/platform.h
index 34b3d3f3f131..342acbe20f7c 100644
--- a/arch/arm/mach-ixp4xx/include/mach/platform.h
+++ b/arch/arm/mach-ixp4xx/include/mach/platform.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-ixp4xx/include/mach/platform.h
*
diff --git a/arch/arm/mach-ixp4xx/ixdp425-setup.c b/arch/arm/mach-ixp4xx/ixdp425-setup.c
index 93b89291c06b..8f5e01527b1b 100644
--- a/arch/arm/mach-ixp4xx/ixdp425-setup.c
+++ b/arch/arm/mach-ixp4xx/ixdp425-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/mach-ixp4xx/ixdp425-setup.c
*
diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c
index 4e0f762bc651..1b8170d65c74 100644
--- a/arch/arm/mach-ixp4xx/nas100d-setup.c
+++ b/arch/arm/mach-ixp4xx/nas100d-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/mach-ixp4xx/nas100d-setup.c
*
diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c
index 88c025f52d8d..bd8dc65b4ffc 100644
--- a/arch/arm/mach-ixp4xx/nslu2-setup.c
+++ b/arch/arm/mach-ixp4xx/nslu2-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/mach-ixp4xx/nslu2-setup.c
*
diff --git a/arch/arm/mach-ixp4xx/vulcan-setup.c b/arch/arm/mach-ixp4xx/vulcan-setup.c
index d599e354ca57..731fb2019ecb 100644
--- a/arch/arm/mach-ixp4xx/vulcan-setup.c
+++ b/arch/arm/mach-ixp4xx/vulcan-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/mach-ixp4xx/vulcan-setup.c
*
diff --git a/arch/arm/mach-ixp4xx/wg302v2-setup.c b/arch/arm/mach-ixp4xx/wg302v2-setup.c
index 8f9ea2f3a9a5..90b3c604e8b6 100644
--- a/arch/arm/mach-ixp4xx/wg302v2-setup.c
+++ b/arch/arm/mach-ixp4xx/wg302v2-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/arm/mach-ixp4xx/wg302-setup.c
*
diff --git a/arch/arm/mach-keystone/Makefile b/arch/arm/mach-keystone/Makefile
index 25d92396fbfa..f8b0dccac8dc 100644
--- a/arch/arm/mach-keystone/Makefile
+++ b/arch/arm/mach-keystone/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y := keystone.o smc.o
plus_sec := $(call as-instr,.arch_extension sec,+sec)
diff --git a/arch/arm/mach-ks8695/Makefile b/arch/arm/mach-ks8695/Makefile
index 8ecb7973ae54..439b22255a32 100644
--- a/arch/arm/mach-ks8695/Makefile
+++ b/arch/arm/mach-ks8695/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# arch/arm/mach-ks8695/Makefile
#
# Makefile for KS8695 architecture support
diff --git a/arch/arm/mach-mmp/Makefile b/arch/arm/mach-mmp/Makefile
index 7677ad5414e9..8f267c7bc6e8 100644
--- a/arch/arm/mach-mmp/Makefile
+++ b/arch/arm/mach-mmp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Marvell's PXA168 processors line
#
diff --git a/arch/arm/mach-mmp/clock-mmp2.c b/arch/arm/mach-mmp/clock-mmp2.c
index 835c3e7cc67e..7536398bf1c1 100644
--- a/arch/arm/mach-mmp/clock-mmp2.c
+++ b/arch/arm/mach-mmp/clock-mmp2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
diff --git a/arch/arm/mach-mmp/clock-pxa168.c b/arch/arm/mach-mmp/clock-pxa168.c
index f726a3692431..2d4a5d96a1ff 100644
--- a/arch/arm/mach-mmp/clock-pxa168.c
+++ b/arch/arm/mach-mmp/clock-pxa168.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
diff --git a/arch/arm/mach-mmp/clock-pxa910.c b/arch/arm/mach-mmp/clock-pxa910.c
index bca60a224e07..3cd83ff91bb0 100644
--- a/arch/arm/mach-mmp/clock-pxa910.c
+++ b/arch/arm/mach-mmp/clock-pxa910.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
diff --git a/arch/arm/mach-mmp/common.h b/arch/arm/mach-mmp/common.h
index 7453a90c34bd..7e284d9c429f 100644
--- a/arch/arm/mach-mmp/common.h
+++ b/arch/arm/mach-mmp/common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/reboot.h>
#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
diff --git a/arch/arm/mach-mmp/cputype.h b/arch/arm/mach-mmp/cputype.h
index 8a3b56dfd35d..446edaeb78a7 100644
--- a/arch/arm/mach-mmp/cputype.h
+++ b/arch/arm/mach-mmp/cputype.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_CPUTYPE_H
#define __ASM_MACH_CPUTYPE_H
diff --git a/arch/arm/mach-mmp/devices.h b/arch/arm/mach-mmp/devices.h
index 21217ef11b64..4df596c5c201 100644
--- a/arch/arm/mach-mmp/devices.h
+++ b/arch/arm/mach-mmp/devices.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_DEVICE_H
#define __MACH_DEVICE_H
diff --git a/arch/arm/mach-mmp/irqs.h b/arch/arm/mach-mmp/irqs.h
index fb492a50a817..5acc4d532a43 100644
--- a/arch/arm/mach-mmp/irqs.h
+++ b/arch/arm/mach-mmp/irqs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_IRQS_H
#define __ASM_MACH_IRQS_H
diff --git a/arch/arm/mach-mmp/mfp-mmp2.h b/arch/arm/mach-mmp/mfp-mmp2.h
index b2744349725d..1620222981e3 100644
--- a/arch/arm/mach-mmp/mfp-mmp2.h
+++ b/arch/arm/mach-mmp/mfp-mmp2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_MFP_MMP2_H
#define __ASM_MACH_MFP_MMP2_H
diff --git a/arch/arm/mach-mmp/mfp-pxa168.h b/arch/arm/mach-mmp/mfp-pxa168.h
index 9050d032377e..90d16d3419a4 100644
--- a/arch/arm/mach-mmp/mfp-pxa168.h
+++ b/arch/arm/mach-mmp/mfp-pxa168.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_MFP_PXA168_H
#define __ASM_MACH_MFP_PXA168_H
diff --git a/arch/arm/mach-mmp/mfp-pxa910.h b/arch/arm/mach-mmp/mfp-pxa910.h
index f06db5cd3ad3..6f900cade631 100644
--- a/arch/arm/mach-mmp/mfp-pxa910.h
+++ b/arch/arm/mach-mmp/mfp-pxa910.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_MFP_PXA910_H
#define __ASM_MACH_MFP_PXA910_H
diff --git a/arch/arm/mach-mmp/mfp.h b/arch/arm/mach-mmp/mfp.h
index 62e510e80a58..75a4acb33b1b 100644
--- a/arch/arm/mach-mmp/mfp.h
+++ b/arch/arm/mach-mmp/mfp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_MFP_H
#define __ASM_MACH_MFP_H
diff --git a/arch/arm/mach-mmp/mmp2.h b/arch/arm/mach-mmp/mmp2.h
index 9b5e75ee9e4d..a4b82f719de1 100644
--- a/arch/arm/mach-mmp/mmp2.h
+++ b/arch/arm/mach-mmp/mmp2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_MMP2_H
#define __ASM_MACH_MMP2_H
diff --git a/arch/arm/mach-mmp/pxa168.h b/arch/arm/mach-mmp/pxa168.h
index 75841e9ccd73..b39bff37ff11 100644
--- a/arch/arm/mach-mmp/pxa168.h
+++ b/arch/arm/mach-mmp/pxa168.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_PXA168_H
#define __ASM_MACH_PXA168_H
diff --git a/arch/arm/mach-mmp/pxa910.h b/arch/arm/mach-mmp/pxa910.h
index a211e81e5a08..cb3923dcf580 100644
--- a/arch/arm/mach-mmp/pxa910.h
+++ b/arch/arm/mach-mmp/pxa910.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_PXA910_H
#define __ASM_MACH_PXA910_H
diff --git a/arch/arm/mach-mv78xx0/Makefile b/arch/arm/mach-mv78xx0/Makefile
index ddb3aa98a3c7..a839e960b8c6 100644
--- a/arch/arm/mach-mv78xx0/Makefile
+++ b/arch/arm/mach-mv78xx0/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
obj-y += common.o mpp.o irq.o pcie.o
diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile
index 6c6497e80a7b..cb106899dd7c 100644
--- a/arch/arm/mach-mvebu/Makefile
+++ b/arch/arm/mach-mvebu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
AFLAGS_coherency_ll.o := -Wa,-march=armv7-a
diff --git a/arch/arm/mach-omap1/Makefile b/arch/arm/mach-omap1/Makefile
index 0e8ea95ea822..e8ccf51c6f29 100644
--- a/arch/arm/mach-omap1/Makefile
+++ b/arch/arm/mach-omap1/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-omap1/camera.h b/arch/arm/mach-omap1/camera.h
index caa6c0d6f0ac..8018f410d024 100644
--- a/arch/arm/mach-omap1/camera.h
+++ b/arch/arm/mach-omap1/camera.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_CAMERA_H_
#define __ASM_ARCH_CAMERA_H_
diff --git a/arch/arm/mach-omap1/include/mach/memory.h b/arch/arm/mach-omap1/include/mach/memory.h
index d43ff0f1cbf8..1142560e0078 100644
--- a/arch/arm/mach-omap1/include/mach/memory.h
+++ b/arch/arm/mach-omap1/include/mach/memory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-omap1/include/mach/memory.h
*/
diff --git a/arch/arm/mach-omap1/include/mach/usb.h b/arch/arm/mach-omap1/include/mach/usb.h
index eb76628ff843..77867778d4ec 100644
--- a/arch/arm/mach-omap1/include/mach/usb.h
+++ b/arch/arm/mach-omap1/include/mach/usb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* FIXME correct answer depends on hmc_mode,
* as does (on omap1) any nonzero value for config->otg port number
diff --git a/arch/arm/mach-omap1/mmc.h b/arch/arm/mach-omap1/mmc.h
index d7b46880e4ca..043bd02f3f2a 100644
--- a/arch/arm/mach-omap1/mmc.h
+++ b/arch/arm/mach-omap1/mmc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/mmc/host.h>
#include <linux/platform_data/mmc-omap.h>
diff --git a/arch/arm/mach-omap1/reset.c b/arch/arm/mach-omap1/reset.c
index 72bf4bf4a702..af2c120b0c4e 100644
--- a/arch/arm/mach-omap1/reset.c
+++ b/arch/arm/mach-omap1/reset.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* OMAP1 reset support
*/
diff --git a/arch/arm/mach-omap1/sram.h b/arch/arm/mach-omap1/sram.h
index d5a6c8362301..73efabd119e8 100644
--- a/arch/arm/mach-omap1/sram.h
+++ b/arch/arm/mach-omap1/sram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <plat/sram.h>
extern void omap_sram_reprogram_clock(u32 dpllctl, u32 ckctl);
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index b3b3b3a19183..38f1748a4500 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-omap2/clock2xxx.h b/arch/arm/mach-omap2/clock2xxx.h
index 125c37614848..a8408f9d0f33 100644
--- a/arch/arm/mach-omap2/clock2xxx.h
+++ b/arch/arm/mach-omap2/clock2xxx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* OMAP2 clock function prototypes and macros
*
diff --git a/arch/arm/mach-omap2/clock3xxx.h b/arch/arm/mach-omap2/clock3xxx.h
index 78d9f562e3ce..10a9f577dc1a 100644
--- a/arch/arm/mach-omap2/clock3xxx.h
+++ b/arch/arm/mach-omap2/clock3xxx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* OMAP3-common clock function prototypes and macros
*
diff --git a/arch/arm/mach-omap2/clockdomains2420_data.c b/arch/arm/mach-omap2/clockdomains2420_data.c
index 7e76becf3a4a..ac4ffb5d2ffc 100644
--- a/arch/arm/mach-omap2/clockdomains2420_data.c
+++ b/arch/arm/mach-omap2/clockdomains2420_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* OMAP2420 clockdomains
*
diff --git a/arch/arm/mach-omap2/clockdomains2430_data.c b/arch/arm/mach-omap2/clockdomains2430_data.c
index b923007e45d0..0e97e178abaa 100644
--- a/arch/arm/mach-omap2/clockdomains2430_data.c
+++ b/arch/arm/mach-omap2/clockdomains2430_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* OMAP2xxx clockdomains
*
diff --git a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
index 4972219653ce..220c22f5e0f5 100644
--- a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
+++ b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* OMAP2/3 clockdomain common data
*
diff --git a/arch/arm/mach-omap2/clockdomains3xxx_data.c b/arch/arm/mach-omap2/clockdomains3xxx_data.c
index f03dc97921ad..94bbd3831ac3 100644
--- a/arch/arm/mach-omap2/clockdomains3xxx_data.c
+++ b/arch/arm/mach-omap2/clockdomains3xxx_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* OMAP3xxx clockdomains
*
diff --git a/arch/arm/mach-omap2/common-board-devices.h b/arch/arm/mach-omap2/common-board-devices.h
index 335c7822fea1..b23962c38fb2 100644
--- a/arch/arm/mach-omap2/common-board-devices.h
+++ b/arch/arm/mach-omap2/common-board-devices.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __OMAP_COMMON_BOARD_DEVICES__
#define __OMAP_COMMON_BOARD_DEVICES__
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
index 5b614388d72f..6d28aa20a7d3 100644
--- a/arch/arm/mach-omap2/hsmmc.c
+++ b/arch/arm/mach-omap2/hsmmc.c
@@ -58,10 +58,10 @@ void omap_hsmmc_late_init(struct omap2_hsmmc_info *c)
struct platform_device *pdev;
int res;
- if (omap_hsmmc_done != 1)
+ if (omap_hsmmc_done)
return;
- omap_hsmmc_done++;
+ omap_hsmmc_done = 1;
for (; c->mmc; c++) {
pdev = c->pdev;
diff --git a/arch/arm/mach-omap2/mmc.h b/arch/arm/mach-omap2/mmc.h
index 30d39b97e7dd..9145a6f720fc 100644
--- a/arch/arm/mach-omap2/mmc.h
+++ b/arch/arm/mach-omap2/mmc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define OMAP24XX_NR_MMC 2
#define OMAP2420_MMC_SIZE OMAP1_MMC_SIZE
diff --git a/arch/arm/mach-omap2/omap-pm-noop.c b/arch/arm/mach-omap2/omap-pm-noop.c
index a1ee8066958e..4ead077ea4e7 100644
--- a/arch/arm/mach-omap2/omap-pm-noop.c
+++ b/arch/arm/mach-omap2/omap-pm-noop.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* omap-pm-noop.c - OMAP power management interface - dummy version
*
diff --git a/arch/arm/mach-omap2/omap-pm.h b/arch/arm/mach-omap2/omap-pm.h
index 109bef5538eb..5ba5df47f91b 100644
--- a/arch/arm/mach-omap2/omap-pm.h
+++ b/arch/arm/mach-omap2/omap-pm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* omap-pm.h - OMAP power management interface
*
diff --git a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
index f040244c57e7..2f4f7002f38d 100644
--- a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
@@ -839,6 +839,7 @@ static struct omap_hwmod dra7xx_gpio1_hwmod = {
.name = "gpio1",
.class = &dra7xx_gpio_hwmod_class,
.clkdm_name = "wkupaon_clkdm",
+ .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
.main_clk = "wkupaon_iclk_mux",
.prcm = {
.omap4 = {
diff --git a/arch/arm/mach-omap2/opp2420_data.c b/arch/arm/mach-omap2/opp2420_data.c
index a9e8cf21705d..18a448f938ea 100644
--- a/arch/arm/mach-omap2/opp2420_data.c
+++ b/arch/arm/mach-omap2/opp2420_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* opp2420_data.c - old-style "OPP" table for OMAP2420
*
diff --git a/arch/arm/mach-omap2/opp2430_data.c b/arch/arm/mach-omap2/opp2430_data.c
index b2233b72b24d..ded8b566a23a 100644
--- a/arch/arm/mach-omap2/opp2430_data.c
+++ b/arch/arm/mach-omap2/opp2430_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* opp2430_data.c - old-style "OPP" table for OMAP2430
*
diff --git a/arch/arm/mach-omap2/opp2xxx.h b/arch/arm/mach-omap2/opp2xxx.h
index 8fae534eb157..a451182cdc02 100644
--- a/arch/arm/mach-omap2/opp2xxx.h
+++ b/arch/arm/mach-omap2/opp2xxx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* opp2xxx.h - macros for old-style OMAP2xxx "OPP" definitions
*
diff --git a/arch/arm/mach-omap2/usb.h b/arch/arm/mach-omap2/usb.h
index 3395365ef1db..740a499befce 100644
--- a/arch/arm/mach-omap2/usb.h
+++ b/arch/arm/mach-omap2/usb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/platform_data/usb-omap.h>
/* AM35x */
diff --git a/arch/arm/mach-omap2/vp.c b/arch/arm/mach-omap2/vp.c
index a3c30655aa30..a709655b978c 100644
--- a/arch/arm/mach-omap2/vp.c
+++ b/arch/arm/mach-omap2/vp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/init.h>
diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile
index ae91872eeee4..1a585a62d5e6 100644
--- a/arch/arm/mach-orion5x/Makefile
+++ b/arch/arm/mach-orion5x/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
obj-y += common.o pci.o irq.o mpp.o
diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h
index 4c0c7de665c3..eb96009e21c4 100644
--- a/arch/arm/mach-orion5x/common.h
+++ b/arch/arm/mach-orion5x/common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_ORION5X_COMMON_H
#define __ARCH_ORION5X_COMMON_H
diff --git a/arch/arm/mach-orion5x/mpp.h b/arch/arm/mach-orion5x/mpp.h
index db70e79a1198..be1c78663291 100644
--- a/arch/arm/mach-orion5x/mpp.h
+++ b/arch/arm/mach-orion5x/mpp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_ORION5X_MPP_H
#define __ARCH_ORION5X_MPP_H
diff --git a/arch/arm/mach-orion5x/ts78xx-fpga.h b/arch/arm/mach-orion5x/ts78xx-fpga.h
index 97c393d39ae2..2f4fe3ca5c1a 100644
--- a/arch/arm/mach-orion5x/ts78xx-fpga.h
+++ b/arch/arm/mach-orion5x/ts78xx-fpga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define TS7800_FPGA_MAGIC 0x00b480
#define FPGAID(_magic, _rev) ((_magic << 8) + _rev)
diff --git a/arch/arm/mach-orion5x/tsx09-common.h b/arch/arm/mach-orion5x/tsx09-common.h
index 0984264616f0..72bedc6b82fb 100644
--- a/arch/arm/mach-orion5x/tsx09-common.h
+++ b/arch/arm/mach-orion5x/tsx09-common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_ORION5X_TSX09_COMMON_H
#define __ARCH_ORION5X_TSX09_COMMON_H
diff --git a/arch/arm/mach-prima2/Makefile b/arch/arm/mach-prima2/Makefile
index d7d02b043449..0fd2763031e9 100644
--- a/arch/arm/mach-prima2/Makefile
+++ b/arch/arm/mach-prima2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += rstc.o
obj-y += common.o
obj-y += rtciobrg.o
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
index ef25dc597f30..0a8e9611052f 100644
--- a/arch/arm/mach-pxa/Makefile
+++ b/arch/arm/mach-pxa/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.h b/arch/arm/mach-pxa/cm-x2xx-pci.h
index e24aad2e3ad7..93ffaaee75d7 100644
--- a/arch/arm/mach-pxa/cm-x2xx-pci.h
+++ b/arch/arm/mach-pxa/cm-x2xx-pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
extern void __cmx2xx_pci_init_irq(int irq_gpio);
extern void __cmx2xx_pci_suspend(void);
extern void __cmx2xx_pci_resume(void);
diff --git a/arch/arm/mach-pxa/colibri.h b/arch/arm/mach-pxa/colibri.h
index cb4236e98a0f..673a131da875 100644
--- a/arch/arm/mach-pxa/colibri.h
+++ b/arch/arm/mach-pxa/colibri.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _COLIBRI_H_
#define _COLIBRI_H_
diff --git a/arch/arm/mach-pxa/csb701.c b/arch/arm/mach-pxa/csb701.c
index 5a221a49ea4d..527c9fdf9795 100644
--- a/arch/arm/mach-pxa/csb701.c
+++ b/arch/arm/mach-pxa/csb701.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index fffb697bbf0e..5a72456a19ce 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h
index 04580c407276..905628dfbbbb 100644
--- a/arch/arm/mach-pxa/devices.h
+++ b/arch/arm/mach-pxa/devices.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
extern struct platform_device pxa_device_pmu;
extern struct platform_device pxa_device_mci;
extern struct platform_device pxa3xx_device_mci2;
diff --git a/arch/arm/mach-pxa/include/mach/addr-map.h b/arch/arm/mach-pxa/include/mach/addr-map.h
index 07b93fd24474..93cfe7dbfec6 100644
--- a/arch/arm/mach-pxa/include/mach/addr-map.h
+++ b/arch/arm/mach-pxa/include/mach/addr-map.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_ADDR_MAP_H
#define __ASM_MACH_ADDR_MAP_H
diff --git a/arch/arm/mach-pxa/include/mach/audio.h b/arch/arm/mach-pxa/include/mach/audio.h
index a3449e35a6f5..7beebf7297b5 100644
--- a/arch/arm/mach-pxa/include/mach/audio.h
+++ b/arch/arm/mach-pxa/include/mach/audio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_AUDIO_H__
#define __ASM_ARCH_AUDIO_H__
diff --git a/arch/arm/mach-pxa/include/mach/bitfield.h b/arch/arm/mach-pxa/include/mach/bitfield.h
index f1f0e3387d9c..fe2ca441bc0a 100644
--- a/arch/arm/mach-pxa/include/mach/bitfield.h
+++ b/arch/arm/mach-pxa/include/mach/bitfield.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* FILE bitfield.h
*
diff --git a/arch/arm/mach-pxa/include/mach/io.h b/arch/arm/mach-pxa/include/mach/io.h
index cd78b7fe3567..d54031c4f3df 100644
--- a/arch/arm/mach-pxa/include/mach/io.h
+++ b/arch/arm/mach-pxa/include/mach/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-pxa/include/mach/io.h
*
diff --git a/arch/arm/mach-pxa/include/mach/regs-ac97.h b/arch/arm/mach-pxa/include/mach/regs-ac97.h
index b8d14bd9ae59..1db96fd4df32 100644
--- a/arch/arm/mach-pxa/include/mach/regs-ac97.h
+++ b/arch/arm/mach-pxa/include/mach/regs-ac97.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_REGS_AC97_H
#define __ASM_ARCH_REGS_AC97_H
diff --git a/arch/arm/mach-pxa/include/mach/regs-lcd.h b/arch/arm/mach-pxa/include/mach/regs-lcd.h
index f82dcea792d9..e2b6e3d1f625 100644
--- a/arch/arm/mach-pxa/include/mach/regs-lcd.h
+++ b/arch/arm/mach-pxa/include/mach/regs-lcd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_REGS_LCD_H
#define __ASM_ARCH_REGS_LCD_H
diff --git a/arch/arm/mach-pxa/include/mach/regs-ost.h b/arch/arm/mach-pxa/include/mach/regs-ost.h
index 628819995c52..deb564ed8ee7 100644
--- a/arch/arm/mach-pxa/include/mach/regs-ost.h
+++ b/arch/arm/mach-pxa/include/mach/regs-ost.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_REGS_OST_H
#define __ASM_MACH_REGS_OST_H
diff --git a/arch/arm/mach-pxa/include/mach/regs-uart.h b/arch/arm/mach-pxa/include/mach/regs-uart.h
index 55aeb7fb72f6..9a168f83afeb 100644
--- a/arch/arm/mach-pxa/include/mach/regs-uart.h
+++ b/arch/arm/mach-pxa/include/mach/regs-uart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_REGS_UART_H
#define __ASM_ARCH_REGS_UART_H
diff --git a/arch/arm/mach-pxa/include/mach/reset.h b/arch/arm/mach-pxa/include/mach/reset.h
index b6c10556fbc7..e1c4d100fd45 100644
--- a/arch/arm/mach-pxa/include/mach/reset.h
+++ b/arch/arm/mach-pxa/include/mach/reset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_RESET_H
#define __ASM_ARCH_RESET_H
diff --git a/arch/arm/mach-pxa/include/mach/trizeps4.h b/arch/arm/mach-pxa/include/mach/trizeps4.h
index ae3ca013afab..3cddb1428c5e 100644
--- a/arch/arm/mach-pxa/include/mach/trizeps4.h
+++ b/arch/arm/mach-pxa/include/mach/trizeps4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/************************************************************************
* Include file for TRIZEPS4 SoM and ConXS eval-board
* Copyright (c) Jürgen Schindele
diff --git a/arch/arm/mach-pxa/littleton.h b/arch/arm/mach-pxa/littleton.h
index 8066be54e9f5..a0a8d2bf9d71 100644
--- a/arch/arm/mach-pxa/littleton.h
+++ b/arch/arm/mach-pxa/littleton.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_LITTLETON_H
#define __ASM_ARCH_LITTLETON_H
diff --git a/arch/arm/mach-pxa/mfp-pxa25x.h b/arch/arm/mach-pxa/mfp-pxa25x.h
index 1c59d4b3b19b..d0ebb2154503 100644
--- a/arch/arm/mach-pxa/mfp-pxa25x.h
+++ b/arch/arm/mach-pxa/mfp-pxa25x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_MFP_PXA25X_H
#define __ASM_ARCH_MFP_PXA25X_H
diff --git a/arch/arm/mach-pxa/mfp-pxa27x.h b/arch/arm/mach-pxa/mfp-pxa27x.h
index 9fe5601ce668..9f5ffb785ff5 100644
--- a/arch/arm/mach-pxa/mfp-pxa27x.h
+++ b/arch/arm/mach-pxa/mfp-pxa27x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_MFP_PXA27X_H
#define __ASM_ARCH_MFP_PXA27X_H
diff --git a/arch/arm/mach-pxa/mfp-pxa2xx.h b/arch/arm/mach-pxa/mfp-pxa2xx.h
index cbf51ae81855..980145e7ee99 100644
--- a/arch/arm/mach-pxa/mfp-pxa2xx.h
+++ b/arch/arm/mach-pxa/mfp-pxa2xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_MFP_PXA2XX_H
#define __ASM_ARCH_MFP_PXA2XX_H
diff --git a/arch/arm/mach-pxa/mfp-pxa3xx.h b/arch/arm/mach-pxa/mfp-pxa3xx.h
index d375195d982b..cdd830926d1c 100644
--- a/arch/arm/mach-pxa/mfp-pxa3xx.h
+++ b/arch/arm/mach-pxa/mfp-pxa3xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_MFP_PXA3XX_H
#define __ASM_ARCH_MFP_PXA3XX_H
diff --git a/arch/arm/mach-pxa/mioa701.h b/arch/arm/mach-pxa/mioa701.h
index e57f5c724e8a..d94295c67460 100644
--- a/arch/arm/mach-pxa/mioa701.h
+++ b/arch/arm/mach-pxa/mioa701.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MIOA701_H_
#define _MIOA701_H_
diff --git a/arch/arm/mach-pxa/mxm8x10.h b/arch/arm/mach-pxa/mxm8x10.h
index ffa15665a418..dcd32321c995 100644
--- a/arch/arm/mach-pxa/mxm8x10.h
+++ b/arch/arm/mach-pxa/mxm8x10.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_MXM_8X10_H
#define __MACH_MXM_8X10_H
diff --git a/arch/arm/mach-pxa/pxa25x.h b/arch/arm/mach-pxa/pxa25x.h
index 2011e8da0592..b58d0fbdb4db 100644
--- a/arch/arm/mach-pxa/pxa25x.h
+++ b/arch/arm/mach-pxa/pxa25x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_PXA25x_H
#define __MACH_PXA25x_H
diff --git a/arch/arm/mach-pxa/pxa27x-udc.h b/arch/arm/mach-pxa/pxa27x-udc.h
index 4cf28f670706..faf73804697f 100644
--- a/arch/arm/mach-pxa/pxa27x-udc.h
+++ b/arch/arm/mach-pxa/pxa27x-udc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARCH_PXA27X_UDC_H
#define _ASM_ARCH_PXA27X_UDC_H
diff --git a/arch/arm/mach-pxa/pxa27x.h b/arch/arm/mach-pxa/pxa27x.h
index 075131d83eab..abdc02fb4f03 100644
--- a/arch/arm/mach-pxa/pxa27x.h
+++ b/arch/arm/mach-pxa/pxa27x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_PXA27x_H
#define __MACH_PXA27x_H
diff --git a/arch/arm/mach-pxa/pxa300.h b/arch/arm/mach-pxa/pxa300.h
index 59fa41025c80..d02a8d15c7e8 100644
--- a/arch/arm/mach-pxa/pxa300.h
+++ b/arch/arm/mach-pxa/pxa300.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_PXA300_H
#define __MACH_PXA300_H
diff --git a/arch/arm/mach-pxa/pxa320.h b/arch/arm/mach-pxa/pxa320.h
index b9e5115a1c30..c701e3f663b0 100644
--- a/arch/arm/mach-pxa/pxa320.h
+++ b/arch/arm/mach-pxa/pxa320.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_PXA320_H
#define __MACH_PXA320_H
diff --git a/arch/arm/mach-pxa/pxa3xx.h b/arch/arm/mach-pxa/pxa3xx.h
index b4143fb6631f..6d4502aa9d06 100644
--- a/arch/arm/mach-pxa/pxa3xx.h
+++ b/arch/arm/mach-pxa/pxa3xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_PXA3XX_H
#define __MACH_PXA3XX_H
diff --git a/arch/arm/mach-pxa/pxa930.h b/arch/arm/mach-pxa/pxa930.h
index 4eceb02978e8..bbf25c044641 100644
--- a/arch/arm/mach-pxa/pxa930.h
+++ b/arch/arm/mach-pxa/pxa930.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_PXA930_H
#define __MACH_PXA930_H
diff --git a/arch/arm/mach-pxa/regs-rtc.h b/arch/arm/mach-pxa/regs-rtc.h
index f0e4a589bbe1..b1f9ff14e335 100644
--- a/arch/arm/mach-pxa/regs-rtc.h
+++ b/arch/arm/mach-pxa/regs-rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_REGS_RTC_H
#define __ASM_MACH_REGS_RTC_H
diff --git a/arch/arm/mach-pxa/regs-u2d.h b/arch/arm/mach-pxa/regs-u2d.h
index c15c0c57de08..fe4c80ad87ec 100644
--- a/arch/arm/mach-pxa/regs-u2d.h
+++ b/arch/arm/mach-pxa/regs-u2d.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_PXA3xx_U2D_H
#define __ASM_ARCH_PXA3xx_U2D_H
diff --git a/arch/arm/mach-pxa/smemc.c b/arch/arm/mach-pxa/smemc.c
index f38aa890b2c9..32e82cc92ea5 100644
--- a/arch/arm/mach-pxa/smemc.c
+++ b/arch/arm/mach-pxa/smemc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Static Memory Controller
*/
diff --git a/arch/arm/mach-pxa/zylonite.h b/arch/arm/mach-pxa/zylonite.h
index ecca976f03d2..7300ec2aac0d 100644
--- a/arch/arm/mach-pxa/zylonite.h
+++ b/arch/arm/mach-pxa/zylonite.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_ZYLONITE_H
#define __ASM_ARCH_ZYLONITE_H
diff --git a/arch/arm/mach-rpc/fiq.S b/arch/arm/mach-rpc/fiq.S
index 48ddd57db16e..0de83e9b0b39 100644
--- a/arch/arm/mach-rpc/fiq.S
+++ b/arch/arm/mach-rpc/fiq.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <mach/hardware.h>
diff --git a/arch/arm/mach-rpc/include/mach/entry-macro.S b/arch/arm/mach-rpc/include/mach/entry-macro.S
index 7178368d7062..a6d1a9f4bb79 100644
--- a/arch/arm/mach-rpc/include/mach/entry-macro.S
+++ b/arch/arm/mach-rpc/include/mach/entry-macro.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <mach/hardware.h>
#include <asm/hardware/entry-macro-iomd.S>
diff --git a/arch/arm/mach-rpc/irq.c b/arch/arm/mach-rpc/irq.c
index 66502e6207fe..b8a61cb11207 100644
--- a/arch/arm/mach-rpc/irq.c
+++ b/arch/arm/mach-rpc/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/list.h>
#include <linux/io.h>
diff --git a/arch/arm/mach-s3c24xx/include/mach/io.h b/arch/arm/mach-s3c24xx/include/mach/io.h
index 235c53647aa4..f960e6d10114 100644
--- a/arch/arm/mach-s3c24xx/include/mach/io.h
+++ b/arch/arm/mach-s3c24xx/include/mach/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-s3c2410/include/mach/io.h
* from arch/arm/mach-rpc/include/mach/io.h
diff --git a/arch/arm/mach-s3c64xx/include/mach/dma.h b/arch/arm/mach-s3c64xx/include/mach/dma.h
index 9c739eafe95c..40ca8de21096 100644
--- a/arch/arm/mach-s3c64xx/include/mach/dma.h
+++ b/arch/arm/mach-s3c64xx/include/mach/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/arch/arm/mach-s3c6400/include/mach/dma.h
*
* Copyright 2008 Openmoko, Inc.
diff --git a/arch/arm/mach-s3c64xx/include/mach/irqs.h b/arch/arm/mach-s3c64xx/include/mach/irqs.h
index 3ceb00b5de07..c244e480e6b3 100644
--- a/arch/arm/mach-s3c64xx/include/mach/irqs.h
+++ b/arch/arm/mach-s3c64xx/include/mach/irqs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/arch/arm/mach-s3c64xx/include/mach/irqs.h
*
* Copyright 2008 Openmoko, Inc.
diff --git a/arch/arm/mach-s3c64xx/include/mach/regs-gpio.h b/arch/arm/mach-s3c64xx/include/mach/regs-gpio.h
index 81f7f6e6832e..592a2be3d2aa 100644
--- a/arch/arm/mach-s3c64xx/include/mach/regs-gpio.h
+++ b/arch/arm/mach-s3c64xx/include/mach/regs-gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/arch/arm/plat-s3c64xx/include/mach/regs-gpio.h
*
* Copyright 2008 Openmoko, Inc.
diff --git a/arch/arm/mach-s3c64xx/regs-gpio-memport.h b/arch/arm/mach-s3c64xx/regs-gpio-memport.h
index b927593019f5..589afe1132d6 100644
--- a/arch/arm/mach-s3c64xx/regs-gpio-memport.h
+++ b/arch/arm/mach-s3c64xx/regs-gpio-memport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2008 Openmoko, Inc.
* Copyright 2008 Simtec Electronics
diff --git a/arch/arm/mach-sa1100/Makefile b/arch/arm/mach-sa1100/Makefile
index ebc4d58e1a32..28c1cae0053f 100644
--- a/arch/arm/mach-sa1100/Makefile
+++ b/arch/arm/mach-sa1100/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-sa1100/clock.c b/arch/arm/mach-sa1100/clock.c
index 7d52cd97d96e..b2eb3d232e39 100644
--- a/arch/arm/mach-sa1100/clock.c
+++ b/arch/arm/mach-sa1100/clock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-sa1100/clock.c
*/
diff --git a/arch/arm/mach-sa1100/generic.h b/arch/arm/mach-sa1100/generic.h
index 68199b603ff7..97502922a15d 100644
--- a/arch/arm/mach-sa1100/generic.h
+++ b/arch/arm/mach-sa1100/generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/arm/mach-sa1100/generic.h
*
diff --git a/arch/arm/mach-sa1100/include/mach/SA-1100.h b/arch/arm/mach-sa1100/include/mach/SA-1100.h
index 7972617cca64..6e6ff3e18f0f 100644
--- a/arch/arm/mach-sa1100/include/mach/SA-1100.h
+++ b/arch/arm/mach-sa1100/include/mach/SA-1100.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* FILE SA-1100.h
*
diff --git a/arch/arm/mach-sa1100/include/mach/assabet.h b/arch/arm/mach-sa1100/include/mach/assabet.h
index c23fcdb047a5..558b45323a2d 100644
--- a/arch/arm/mach-sa1100/include/mach/assabet.h
+++ b/arch/arm/mach-sa1100/include/mach/assabet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-sa1100/include/mach/assabet.h
*
diff --git a/arch/arm/mach-sa1100/include/mach/collie.h b/arch/arm/mach-sa1100/include/mach/collie.h
index b478ca180c19..b7bc23ffd3c6 100644
--- a/arch/arm/mach-sa1100/include/mach/collie.h
+++ b/arch/arm/mach-sa1100/include/mach/collie.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-sa1100/include/mach/collie.h
*
diff --git a/arch/arm/mach-sa1100/include/mach/hardware.h b/arch/arm/mach-sa1100/include/mach/hardware.h
index cc43f95f33cc..6f2dbdc28663 100644
--- a/arch/arm/mach-sa1100/include/mach/hardware.h
+++ b/arch/arm/mach-sa1100/include/mach/hardware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-sa1100/include/mach/hardware.h
*
diff --git a/arch/arm/mach-sa1100/include/mach/irqs.h b/arch/arm/mach-sa1100/include/mach/irqs.h
index 734e30e406a3..f4a41e665262 100644
--- a/arch/arm/mach-sa1100/include/mach/irqs.h
+++ b/arch/arm/mach-sa1100/include/mach/irqs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-sa1100/include/mach/irqs.h
*
diff --git a/arch/arm/mach-sa1100/include/mach/memory.h b/arch/arm/mach-sa1100/include/mach/memory.h
index 2054051eb797..fa5cf4744992 100644
--- a/arch/arm/mach-sa1100/include/mach/memory.h
+++ b/arch/arm/mach-sa1100/include/mach/memory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-sa1100/include/mach/memory.h
*
diff --git a/arch/arm/mach-sa1100/include/mach/neponset.h b/arch/arm/mach-sa1100/include/mach/neponset.h
index 5516a52a329d..18411cfdfe8e 100644
--- a/arch/arm/mach-sa1100/include/mach/neponset.h
+++ b/arch/arm/mach-sa1100/include/mach/neponset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-sa1100/include/mach/neponset.h
*
diff --git a/arch/arm/mach-sa1100/include/mach/reset.h b/arch/arm/mach-sa1100/include/mach/reset.h
index f61957e6842a..27695650a567 100644
--- a/arch/arm/mach-sa1100/include/mach/reset.h
+++ b/arch/arm/mach-sa1100/include/mach/reset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_RESET_H
#define __ASM_ARCH_RESET_H
diff --git a/arch/arm/mach-sa1100/include/mach/shannon.h b/arch/arm/mach-sa1100/include/mach/shannon.h
index fff39e02b496..d830375f329c 100644
--- a/arch/arm/mach-sa1100/include/mach/shannon.h
+++ b/arch/arm/mach-sa1100/include/mach/shannon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INCLUDE_SHANNON_H
#define _INCLUDE_SHANNON_H
diff --git a/arch/arm/mach-sa1100/include/mach/simpad.h b/arch/arm/mach-sa1100/include/mach/simpad.h
index ac2ea767215d..d53d680de3d9 100644
--- a/arch/arm/mach-sa1100/include/mach/simpad.h
+++ b/arch/arm/mach-sa1100/include/mach/simpad.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-sa1100/include/mach/simpad.h
*
diff --git a/arch/arm/mach-sa1100/include/mach/uncompress.h b/arch/arm/mach-sa1100/include/mach/uncompress.h
index a1a041b9740b..f5eaa90a4576 100644
--- a/arch/arm/mach-sa1100/include/mach/uncompress.h
+++ b/arch/arm/mach-sa1100/include/mach/uncompress.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/arm/mach-sa1100/include/mach/uncompress.h
*
diff --git a/arch/arm/mach-sa1100/lart.c b/arch/arm/mach-sa1100/lart.c
index 51b0eb52c014..e3a0279750e3 100644
--- a/arch/arm/mach-sa1100/lart.c
+++ b/arch/arm/mach-sa1100/lart.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-sa1100/lart.c
*/
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index 8411985af9ff..a61a2432766b 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-sa1100/neponset.c
*/
diff --git a/arch/arm/mach-sa1100/pleb.c b/arch/arm/mach-sa1100/pleb.c
index 88149f85bc49..b2b0c9fc18f7 100644
--- a/arch/arm/mach-sa1100/pleb.c
+++ b/arch/arm/mach-sa1100/pleb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-sa1100/pleb.c
*/
diff --git a/arch/arm/mach-sa1100/shannon.c b/arch/arm/mach-sa1100/shannon.c
index c8866bce7386..856664c783d9 100644
--- a/arch/arm/mach-sa1100/shannon.c
+++ b/arch/arm/mach-sa1100/shannon.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-sa1100/shannon.c
*/
diff --git a/arch/arm/mach-sa1100/simpad.c b/arch/arm/mach-sa1100/simpad.c
index bb3ca9c763de..e8d25a7bbcb8 100644
--- a/arch/arm/mach-sa1100/simpad.c
+++ b/arch/arm/mach-sa1100/simpad.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mach-sa1100/simpad.c
*/
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile
index 64611a1b4276..e16b81ec4b07 100644
--- a/arch/arm/mach-shmobile/Makefile
+++ b/arch/arm/mach-shmobile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h
index 1a8f7b3ab449..f8fcd799d677 100644
--- a/arch/arm/mach-shmobile/common.h
+++ b/arch/arm/mach-shmobile/common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_MACH_COMMON_H
#define __ARCH_MACH_COMMON_H
diff --git a/arch/arm/mach-shmobile/emev2.h b/arch/arm/mach-shmobile/emev2.h
index 916d25f6780e..39f6cd8e6003 100644
--- a/arch/arm/mach-shmobile/emev2.h
+++ b/arch/arm/mach-shmobile/emev2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_EMEV2_H__
#define __ASM_EMEV2_H__
diff --git a/arch/arm/mach-shmobile/r8a7779.h b/arch/arm/mach-shmobile/r8a7779.h
index 2a5f7730a03c..30668aa6acc3 100644
--- a/arch/arm/mach-shmobile/r8a7779.h
+++ b/arch/arm/mach-shmobile/r8a7779.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_R8A7779_H__
#define __ASM_R8A7779_H__
diff --git a/arch/arm/mach-shmobile/r8a7790.h b/arch/arm/mach-shmobile/r8a7790.h
index 136f3455e9c7..669c8cd09e07 100644
--- a/arch/arm/mach-shmobile/r8a7790.h
+++ b/arch/arm/mach-shmobile/r8a7790.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_R8A7790_H__
#define __ASM_R8A7790_H__
diff --git a/arch/arm/mach-shmobile/r8a7791.h b/arch/arm/mach-shmobile/r8a7791.h
index cf7a8405bd7f..8c794aace938 100644
--- a/arch/arm/mach-shmobile/r8a7791.h
+++ b/arch/arm/mach-shmobile/r8a7791.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_R8A7791_H__
#define __ASM_R8A7791_H__
diff --git a/arch/arm/mach-shmobile/rcar-gen2.h b/arch/arm/mach-shmobile/rcar-gen2.h
index 6792e249cf56..4777fff2de41 100644
--- a/arch/arm/mach-shmobile/rcar-gen2.h
+++ b/arch/arm/mach-shmobile/rcar-gen2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_RCAR_GEN2_H__
#define __ASM_RCAR_GEN2_H__
diff --git a/arch/arm/mach-shmobile/sh73a0.h b/arch/arm/mach-shmobile/sh73a0.h
index 50ef24f780b3..85c7c7c60b1e 100644
--- a/arch/arm/mach-shmobile/sh73a0.h
+++ b/arch/arm/mach-shmobile/sh73a0.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH73A0_H__
#define __ASM_SH73A0_H__
diff --git a/arch/arm/mach-socfpga/Makefile b/arch/arm/mach-socfpga/Makefile
index ed15db19e561..9ec31fad7136 100644
--- a/arch/arm/mach-socfpga/Makefile
+++ b/arch/arm/mach-socfpga/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-spear/Makefile b/arch/arm/mach-spear/Makefile
index a946c19ab31a..176b14f83089 100644
--- a/arch/arm/mach-spear/Makefile
+++ b/arch/arm/mach-spear/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# SPEAr Platform specific Makefile
#
diff --git a/arch/arm/mach-tango/Kconfig b/arch/arm/mach-tango/Kconfig
index ebe15b93bbe8..25b2fd434861 100644
--- a/arch/arm/mach-tango/Kconfig
+++ b/arch/arm/mach-tango/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARCH_TANGO
bool "Sigma Designs Tango4 (SMP87xx)"
depends on ARCH_MULTI_V7
diff --git a/arch/arm/mach-tango/Makefile b/arch/arm/mach-tango/Makefile
index 204fcd9fe180..da6c633d3cc0 100644
--- a/arch/arm/mach-tango/Makefile
+++ b/arch/arm/mach-tango/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
plus_sec := $(call as-instr,.arch_extension sec,+sec)
AFLAGS_smc.o := -Wa,-march=armv7-a$(plus_sec)
diff --git a/arch/arm/mach-tango/platsmp.c b/arch/arm/mach-tango/platsmp.c
index 2f0c6c050fed..65012afbc1a3 100644
--- a/arch/arm/mach-tango/platsmp.c
+++ b/arch/arm/mach-tango/platsmp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/smp.h>
diff --git a/arch/arm/mach-tango/pm.c b/arch/arm/mach-tango/pm.c
index 406c0814eb6e..028e50c6383f 100644
--- a/arch/arm/mach-tango/pm.c
+++ b/arch/arm/mach-tango/pm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/suspend.h>
#include <asm/suspend.h>
diff --git a/arch/arm/mach-tango/setup.c b/arch/arm/mach-tango/setup.c
index f14b6c7d255b..677dd7b5efd9 100644
--- a/arch/arm/mach-tango/setup.c
+++ b/arch/arm/mach-tango/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/mach/arch.h>
#include <asm/hardware/cache-l2x0.h>
#include "smc.h"
diff --git a/arch/arm/mach-tango/smc.S b/arch/arm/mach-tango/smc.S
index 5d932ce3c1bd..361a8dc89804 100644
--- a/arch/arm/mach-tango/smc.S
+++ b/arch/arm/mach-tango/smc.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
ENTRY(tango_smc)
diff --git a/arch/arm/mach-tango/smc.h b/arch/arm/mach-tango/smc.h
index 57919539da1b..455ce3e06daf 100644
--- a/arch/arm/mach-tango/smc.h
+++ b/arch/arm/mach-tango/smc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
extern int tango_smc(unsigned int val, unsigned int service);
#define tango_set_l2_control(val) tango_smc(val, 0x102)
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index c8368d647741..1e0aeb47bac6 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARCH_TEGRA
bool "NVIDIA Tegra"
depends on ARCH_MULTI_V7
diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile
index 3b33f0bb78ae..6c1dff2eccc2 100644
--- a/arch/arm/mach-tegra/Makefile
+++ b/arch/arm/mach-tegra/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
asflags-y += -march=armv7-a
obj-y += io.o
diff --git a/arch/arm/mach-u300/Kconfig b/arch/arm/mach-u300/Kconfig
index 22dcbf5b76b2..4f43c1cd5db0 100644
--- a/arch/arm/mach-u300/Kconfig
+++ b/arch/arm/mach-u300/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARCH_U300
bool "ST-Ericsson U300 Series"
depends on ARCH_MULTI_V5 && MMU
diff --git a/arch/arm/mach-uniphier/Kconfig b/arch/arm/mach-uniphier/Kconfig
index 3930fbba30b4..779235a9147d 100644
--- a/arch/arm/mach-uniphier/Kconfig
+++ b/arch/arm/mach-uniphier/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARCH_UNIPHIER
bool "Socionext UniPhier SoCs"
depends on ARCH_MULTI_V7
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig
index 4740ac393297..f98332ea2ef2 100644
--- a/arch/arm/mach-ux500/Kconfig
+++ b/arch/arm/mach-ux500/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARCH_U8500
bool "ST-Ericsson U8500 Series"
depends on ARCH_MULTI_V7 && MMU
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 71a34e8c345a..57058ac46f49 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -32,6 +32,7 @@
#include <asm/mach/arch.h>
#include "db8500-regs.h"
+#include "pm_domains.h"
static int __init ux500_l2x0_unlock(void)
{
@@ -157,6 +158,9 @@ static const struct of_device_id u8500_local_bus_nodes[] = {
static void __init u8500_init_machine(void)
{
+ /* Initialize ux500 power domains */
+ ux500_pm_domains_init();
+
/* automatically probe child nodes of dbx5x0 devices */
if (of_machine_is_compatible("st-ericsson,u8540"))
of_platform_populate(NULL, u8500_local_bus_nodes,
diff --git a/arch/arm/mach-ux500/pm.c b/arch/arm/mach-ux500/pm.c
index a970e7fcba9e..f6c33a0c1c61 100644
--- a/arch/arm/mach-ux500/pm.c
+++ b/arch/arm/mach-ux500/pm.c
@@ -19,7 +19,6 @@
#include <linux/of_address.h>
#include "db8500-regs.h"
-#include "pm_domains.h"
/* ARM WFI Standby signal register */
#define PRCM_ARM_WFI_STANDBY (prcmu_base + 0x130)
@@ -203,7 +202,4 @@ void __init ux500_pm_init(u32 phy_base, u32 size)
/* Set up ux500 suspend callbacks. */
suspend_set_ops(UX500_SUSPEND_OPS);
-
- /* Initialize ux500 power domains */
- ux500_pm_domains_init();
}
diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig
index c257d40ca51d..f5c275434d6c 100644
--- a/arch/arm/mach-versatile/Kconfig
+++ b/arch/arm/mach-versatile/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARCH_VERSATILE
bool "ARM Ltd. Versatile family"
depends on ARCH_MULTI_V5
diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig
index 7c728ebc0b33..726a68085c3b 100644
--- a/arch/arm/mach-vexpress/Kconfig
+++ b/arch/arm/mach-vexpress/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARCH_VEXPRESS
bool "ARM Ltd. Versatile Express family"
depends on ARCH_MULTI_V7
diff --git a/arch/arm/mach-vexpress/Makefile b/arch/arm/mach-vexpress/Makefile
index 73caae71f307..51c35e2b737a 100644
--- a/arch/arm/mach-vexpress/Makefile
+++ b/arch/arm/mach-vexpress/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
index a0400f4cca89..95886b3bb9dd 100644
--- a/arch/arm/mach-vexpress/v2m.c
+++ b/arch/arm/mach-vexpress/v2m.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/mach/arch.h>
#include "core.h"
diff --git a/arch/arm/mach-vt8500/Kconfig b/arch/arm/mach-vt8500/Kconfig
index c4f1dba7bd8a..1156a585dafc 100644
--- a/arch/arm/mach-vt8500/Kconfig
+++ b/arch/arm/mach-vt8500/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARCH_VT8500
bool
select GPIOLIB
diff --git a/arch/arm/mach-w90x900/Kconfig b/arch/arm/mach-w90x900/Kconfig
index 69bab32a8bc2..b16ffc03bbe5 100644
--- a/arch/arm/mach-w90x900/Kconfig
+++ b/arch/arm/mach-w90x900/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ARCH_W90X900
config CPU_W90P910
diff --git a/arch/arm/mach-w90x900/Makefile b/arch/arm/mach-w90x900/Makefile
index 828c0326441e..33b5bf53990f 100644
--- a/arch/arm/mach-w90x900/Makefile
+++ b/arch/arm/mach-w90x900/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/mach-zx/Kconfig b/arch/arm/mach-zx/Kconfig
index 209c97944de2..ea29c84a7849 100644
--- a/arch/arm/mach-zx/Kconfig
+++ b/arch/arm/mach-zx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARCH_ZX
bool "ZTE ZX family"
depends on ARCH_MULTI_V7
diff --git a/arch/arm/mach-zynq/Kconfig b/arch/arm/mach-zynq/Kconfig
index fd0aeeb09881..1ca633e3d024 100644
--- a/arch/arm/mach-zynq/Kconfig
+++ b/arch/arm/mach-zynq/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARCH_ZYNQ
bool "Xilinx Zynq ARM Cortex A9 Platform"
depends on ARCH_MULTI_V7
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index 60cdfdc151aa..fd9077a74fce 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
comment "Processor Type"
# Select CPU types depending on the architecture selected. This selects
diff --git a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile
index 950d19babb5f..f353ee569f6b 100644
--- a/arch/arm/mm/Makefile
+++ b/arch/arm/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux arm-specific parts of the memory manager.
#
diff --git a/arch/arm/mm/abort-ev4.S b/arch/arm/mm/abort-ev4.S
index b3b31e30cadd..a10bcb89594d 100644
--- a/arch/arm/mm/abort-ev4.S
+++ b/arch/arm/mm/abort-ev4.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
/*
diff --git a/arch/arm/mm/abort-ev4t.S b/arch/arm/mm/abort-ev4t.S
index 9da704e7b86e..14743a2f6997 100644
--- a/arch/arm/mm/abort-ev4t.S
+++ b/arch/arm/mm/abort-ev4t.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
#include "abort-macro.S"
diff --git a/arch/arm/mm/abort-ev5t.S b/arch/arm/mm/abort-ev5t.S
index a6a381a6caa5..98c523118820 100644
--- a/arch/arm/mm/abort-ev5t.S
+++ b/arch/arm/mm/abort-ev5t.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
#include "abort-macro.S"
diff --git a/arch/arm/mm/abort-ev5tj.S b/arch/arm/mm/abort-ev5tj.S
index 00ab011bef58..fec72f4fbaf5 100644
--- a/arch/arm/mm/abort-ev5tj.S
+++ b/arch/arm/mm/abort-ev5tj.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
#include "abort-macro.S"
diff --git a/arch/arm/mm/abort-ev6.S b/arch/arm/mm/abort-ev6.S
index 8801a15aa105..c58bf8b43fea 100644
--- a/arch/arm/mm/abort-ev6.S
+++ b/arch/arm/mm/abort-ev6.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
#include "abort-macro.S"
diff --git a/arch/arm/mm/abort-ev7.S b/arch/arm/mm/abort-ev7.S
index e8d0e08c227f..f7cc5d68444b 100644
--- a/arch/arm/mm/abort-ev7.S
+++ b/arch/arm/mm/abort-ev7.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
/*
diff --git a/arch/arm/mm/abort-lv4t.S b/arch/arm/mm/abort-lv4t.S
index 4cdfab31a0b6..fbd60a120f66 100644
--- a/arch/arm/mm/abort-lv4t.S
+++ b/arch/arm/mm/abort-lv4t.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
/*
diff --git a/arch/arm/mm/abort-macro.S b/arch/arm/mm/abort-macro.S
index 4509bee4e081..bacf53fd0b70 100644
--- a/arch/arm/mm/abort-macro.S
+++ b/arch/arm/mm/abort-macro.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* The ARM LDRD and Thumb LDRSB instructions use bit 20/11 (ARM/Thumb)
* differently than every other instruction, so it is set to 0 (write)
diff --git a/arch/arm/mm/abort-nommu.S b/arch/arm/mm/abort-nommu.S
index 119cb479c2ab..6e2366a26321 100644
--- a/arch/arm/mm/abort-nommu.S
+++ b/arch/arm/mm/abort-nommu.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
/*
diff --git a/arch/arm/mm/dma.h b/arch/arm/mm/dma.h
index 70ea6852f94e..aaef64b7f177 100644
--- a/arch/arm/mm/dma.h
+++ b/arch/arm/mm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DMA_H
#define DMA_H
diff --git a/arch/arm/mm/extable.c b/arch/arm/mm/extable.c
index f436f7439e46..fc33564597b8 100644
--- a/arch/arm/mm/extable.c
+++ b/arch/arm/mm/extable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mm/extable.c
*/
diff --git a/arch/arm/mm/fault.h b/arch/arm/mm/fault.h
index afc1f84e763b..c063708fa503 100644
--- a/arch/arm/mm/fault.h
+++ b/arch/arm/mm/fault.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_ARM_FAULT_H
#define __ARCH_ARM_FAULT_H
diff --git a/arch/arm/mm/fsr-2level.c b/arch/arm/mm/fsr-2level.c
index 18ca74c0f341..f2be95197265 100644
--- a/arch/arm/mm/fsr-2level.c
+++ b/arch/arm/mm/fsr-2level.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
static struct fsr_info fsr_info[] = {
/*
* The following are the standard ARMv3 and ARMv4 aborts. ARMv5
diff --git a/arch/arm/mm/fsr-3level.c b/arch/arm/mm/fsr-3level.c
index ab4409a2307e..d0ae2963656a 100644
--- a/arch/arm/mm/fsr-3level.c
+++ b/arch/arm/mm/fsr-3level.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
static struct fsr_info fsr_info[] = {
{ do_bad, SIGBUS, 0, "unknown 0" },
{ do_bad, SIGBUS, 0, "unknown 1" },
diff --git a/arch/arm/mm/idmap.c b/arch/arm/mm/idmap.c
index 3e511bec69b8..10bfba85eb96 100644
--- a/arch/arm/mm/idmap.c
+++ b/arch/arm/mm/idmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/slab.h>
diff --git a/arch/arm/mm/iomap.c b/arch/arm/mm/iomap.c
index 4614208369f1..091ddc56827e 100644
--- a/arch/arm/mm/iomap.c
+++ b/arch/arm/mm/iomap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mm/iomap.c
*
diff --git a/arch/arm/mm/l2c-l2x0-resume.S b/arch/arm/mm/l2c-l2x0-resume.S
index fda415e4ca8f..fc01f1b18523 100644
--- a/arch/arm/mm/l2c-l2x0-resume.S
+++ b/arch/arm/mm/l2c-l2x0-resume.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* L2C-310 early resume code. This can be used by platforms to restore
* the settings of their L2 cache controller before restoring the
diff --git a/arch/arm/mm/mm.h b/arch/arm/mm/mm.h
index ce727d47275c..6b045c6653ea 100644
--- a/arch/arm/mm/mm.h
+++ b/arch/arm/mm/mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_MMU
#include <linux/list.h>
#include <linux/vmalloc.h>
diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c
index f0701d8d24df..eb1de66517d5 100644
--- a/arch/arm/mm/mmap.c
+++ b/arch/arm/mm/mmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/mm/mmap.c
*/
diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c
index 3b8e728cc944..91537d90f5f5 100644
--- a/arch/arm/mm/nommu.c
+++ b/arch/arm/mm/nommu.c
@@ -344,6 +344,11 @@ void __init arm_mm_memblock_reserve(void)
* reserved here.
*/
#endif
+ /*
+ * In any case, always ensure address 0 is never used as many things
+ * get very confused if 0 is returned as a legitimate address.
+ */
+ memblock_reserve(0, 1);
}
void __init adjust_lowmem_bounds(void)
diff --git a/arch/arm/mm/pabort-legacy.S b/arch/arm/mm/pabort-legacy.S
index 8bbff025269a..b2ffce420106 100644
--- a/arch/arm/mm/pabort-legacy.S
+++ b/arch/arm/mm/pabort-legacy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
diff --git a/arch/arm/mm/pabort-v6.S b/arch/arm/mm/pabort-v6.S
index 9627646ce783..8686265dc941 100644
--- a/arch/arm/mm/pabort-v6.S
+++ b/arch/arm/mm/pabort-v6.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
diff --git a/arch/arm/mm/pabort-v7.S b/arch/arm/mm/pabort-v7.S
index 875761f44f3b..9c70b1a21dc9 100644
--- a/arch/arm/mm/pabort-v7.S
+++ b/arch/arm/mm/pabort-v7.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/assembler.h>
diff --git a/arch/arm/mm/physaddr.c b/arch/arm/mm/physaddr.c
index 02e60f495608..cf75819e4c13 100644
--- a/arch/arm/mm/physaddr.c
+++ b/arch/arm/mm/physaddr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bug.h>
#include <linux/export.h>
#include <linux/types.h>
diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S
index f944836da8a2..f10e31d0730a 100644
--- a/arch/arm/mm/proc-macros.S
+++ b/arch/arm/mm/proc-macros.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* We need constants.h for:
* VMA_VM_MM
diff --git a/arch/arm/nwfpe/ARM-gcc.h b/arch/arm/nwfpe/ARM-gcc.h
index 436e54aa02ec..74389f5b0566 100644
--- a/arch/arm/nwfpe/ARM-gcc.h
+++ b/arch/arm/nwfpe/ARM-gcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
-------------------------------------------------------------------------------
The macro `BITS64' can be defined to indicate that 64-bit integer types are
diff --git a/arch/arm/nwfpe/Makefile b/arch/arm/nwfpe/Makefile
index deb3a82ddbdf..303400fa2cdf 100644
--- a/arch/arm/nwfpe/Makefile
+++ b/arch/arm/nwfpe/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Copyright (C) 1998, 1999, 2001 Philip Blundell
#
diff --git a/arch/arm/oprofile/Makefile b/arch/arm/oprofile/Makefile
index b2215c61cdf0..39688dc9f181 100644
--- a/arch/arm/oprofile/Makefile
+++ b/arch/arm/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
diff --git a/arch/arm/plat-iop/Makefile b/arch/arm/plat-iop/Makefile
index f2af203d601f..4d839a3cf284 100644
--- a/arch/arm/plat-iop/Makefile
+++ b/arch/arm/plat-iop/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
index 3e27bffb352d..7276afee30b3 100644
--- a/arch/arm/plat-omap/Kconfig
+++ b/arch/arm/plat-omap/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARCH_OMAP
bool
diff --git a/arch/arm/plat-omap/include/plat/sram.h b/arch/arm/plat-omap/include/plat/sram.h
index ba4525059a99..fb061cf0d736 100644
--- a/arch/arm/plat-omap/include/plat/sram.h
+++ b/arch/arm/plat-omap/include/plat/sram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
int omap_sram_init(void);
void omap_map_sram(unsigned long start, unsigned long size,
diff --git a/arch/arm/plat-versatile/include/plat/sched_clock.h b/arch/arm/plat-versatile/include/plat/sched_clock.h
index 5c3e4fc9fa0c..83fdaef23c2e 100644
--- a/arch/arm/plat-versatile/include/plat/sched_clock.h
+++ b/arch/arm/plat-versatile/include/plat/sched_clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARM_PLAT_SCHED_CLOCK_H
#define ARM_PLAT_SCHED_CLOCK_H
diff --git a/arch/arm/probes/Makefile b/arch/arm/probes/Makefile
index aa1f8590dcdd..8b0ea5ace100 100644
--- a/arch/arm/probes/Makefile
+++ b/arch/arm/probes/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_UPROBES) += decode.o decode-arm.o uprobes/
obj-$(CONFIG_KPROBES) += decode.o kprobes/
ifdef CONFIG_THUMB2_KERNEL
diff --git a/arch/arm/probes/kprobes/Makefile b/arch/arm/probes/kprobes/Makefile
index 76a36bf102b7..14db56f49f0a 100644
--- a/arch/arm/probes/kprobes/Makefile
+++ b/arch/arm/probes/kprobes/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_KPROBES) += core.o actions-common.o checkers-common.o
obj-$(CONFIG_ARM_KPROBES_TEST) += test-kprobes.o
test-kprobes-objs := test-core.o
diff --git a/arch/arm/tools/Makefile b/arch/arm/tools/Makefile
index 92eb5c3b486c..ddb89a7db36f 100644
--- a/arch/arm/tools/Makefile
+++ b/arch/arm/tools/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/arm/tools/Makefile
#
diff --git a/arch/arm/tools/gen-mach-types b/arch/arm/tools/gen-mach-types
index 04fef71d7be9..cbe1c33bb871 100644
--- a/arch/arm/tools/gen-mach-types
+++ b/arch/arm/tools/gen-mach-types
@@ -1,4 +1,5 @@
#!/bin/awk
+# SPDX-License-Identifier: GPL-2.0
#
# Awk script to generate include/generated/mach-types.h
#
diff --git a/arch/arm/tools/syscallhdr.sh b/arch/arm/tools/syscallhdr.sh
index 72d4b2e3bdec..6b2f25cdd721 100644
--- a/arch/arm/tools/syscallhdr.sh
+++ b/arch/arm/tools/syscallhdr.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
diff --git a/arch/arm/tools/syscallnr.sh b/arch/arm/tools/syscallnr.sh
index d2971296469a..df3ccd0ca831 100644
--- a/arch/arm/tools/syscallnr.sh
+++ b/arch/arm/tools/syscallnr.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
my_abis=`echo "($3)" | tr ',' '|'`
diff --git a/arch/arm/tools/syscalltbl.sh b/arch/arm/tools/syscalltbl.sh
index 5ca834545ed3..ae7e93cfbfd3 100644
--- a/arch/arm/tools/syscalltbl.sh
+++ b/arch/arm/tools/syscalltbl.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
my_abis=`echo "($3)" | tr ',' '|'`
diff --git a/arch/arm/vdso/Makefile b/arch/arm/vdso/Makefile
index 59a8fa7b8a3b..bb4118213fee 100644
--- a/arch/arm/vdso/Makefile
+++ b/arch/arm/vdso/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
hostprogs-y := vdsomunge
obj-vdso := vgettimeofday.o datapage.o
diff --git a/arch/arm/vdso/datapage.S b/arch/arm/vdso/datapage.S
index a2e60367931b..9cd73b725d9f 100644
--- a/arch/arm/vdso/datapage.S
+++ b/arch/arm/vdso/datapage.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/asm-offsets.h>
diff --git a/arch/arm/xen/p2m.c b/arch/arm/xen/p2m.c
index e71eefa2e427..0641ba54ab62 100644
--- a/arch/arm/xen/p2m.c
+++ b/arch/arm/xen/p2m.c
@@ -1,7 +1,7 @@
#include <linux/bootmem.h>
#include <linux/gfp.h>
#include <linux/export.h>
-#include <linux/rwlock.h>
+#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/dma-mapping.h>
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index 9b41f1e3b1a0..939b310913cf 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -50,17 +50,22 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
KBUILD_CFLAGS += $(call cc-option, -mpc-relative-literal-loads)
KBUILD_AFLAGS += $(lseinstr) $(brokengasinst)
+KBUILD_CFLAGS += $(call cc-option,-mabi=lp64)
+KBUILD_AFLAGS += $(call cc-option,-mabi=lp64)
+
ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
KBUILD_CPPFLAGS += -mbig-endian
CHECKFLAGS += -D__AARCH64EB__
AS += -EB
LD += -EB
+LDFLAGS += -maarch64linuxb
UTS_MACHINE := aarch64_be
else
KBUILD_CPPFLAGS += -mlittle-endian
CHECKFLAGS += -D__AARCH64EL__
AS += -EL
LD += -EL
+LDFLAGS += -maarch64linux
UTS_MACHINE := aarch64
endif
diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile
index 8e1951273fd7..c6684ab8e201 100644
--- a/arch/arm64/boot/dts/Makefile
+++ b/arch/arm64/boot/dts/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dts-dirs += actions
dts-dirs += al
dts-dirs += allwinner
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
index 19c3fbd75eda..ff35e184e422 100644
--- a/arch/arm64/boot/dts/allwinner/Makefile
+++ b/arch/arm64/boot/dts/allwinner/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-bananapi-m64.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-nanopi-a64.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino.dtb
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
index caf8b6fbe5e3..d06e34b5d192 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
@@ -61,13 +61,6 @@
chosen {
stdout-path = "serial0:115200n8";
};
-
- reg_vcc3v3: vcc3v3 {
- compatible = "regulator-fixed";
- regulator-name = "vcc3v3";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- };
};
&ehci0 {
@@ -91,7 +84,7 @@
&mmc0 {
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins>;
- vmmc-supply = <&reg_vcc3v3>;
+ vmmc-supply = <&reg_dcdc1>;
cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
cd-inverted;
disable-wp;
diff --git a/arch/arm64/boot/dts/amd/Makefile b/arch/arm64/boot/dts/amd/Makefile
index ba84770f789f..f9963d63006d 100644
--- a/arch/arm64/boot/dts/amd/Makefile
+++ b/arch/arm64/boot/dts/amd/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_SEATTLE) += amd-overdrive.dtb \
amd-overdrive-rev-b0.dtb amd-overdrive-rev-b1.dtb \
husky.dtb
diff --git a/arch/arm64/boot/dts/amd/amd-overdrive-rev-b0.dts b/arch/arm64/boot/dts/amd/amd-overdrive-rev-b0.dts
index 8e3074a4947d..8e341be9a399 100644
--- a/arch/arm64/boot/dts/amd/amd-overdrive-rev-b0.dts
+++ b/arch/arm64/boot/dts/amd/amd-overdrive-rev-b0.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle Overdrive Development Board
* Note: For Seattle Rev.B0
diff --git a/arch/arm64/boot/dts/amd/amd-overdrive-rev-b1.dts b/arch/arm64/boot/dts/amd/amd-overdrive-rev-b1.dts
index ed5e043f37aa..92cef05c6b74 100644
--- a/arch/arm64/boot/dts/amd/amd-overdrive-rev-b1.dts
+++ b/arch/arm64/boot/dts/amd/amd-overdrive-rev-b1.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle Overdrive Development Board
* Note: For Seattle Rev.B1
diff --git a/arch/arm64/boot/dts/amd/amd-overdrive.dts b/arch/arm64/boot/dts/amd/amd-overdrive.dts
index 128fa942f09e..41b3a6c0993d 100644
--- a/arch/arm64/boot/dts/amd/amd-overdrive.dts
+++ b/arch/arm64/boot/dts/amd/amd-overdrive.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle Overdrive Development Board
*
diff --git a/arch/arm64/boot/dts/amd/amd-seattle-clks.dtsi b/arch/arm64/boot/dts/amd/amd-seattle-clks.dtsi
index f623c46525a6..2dd2c28171ee 100644
--- a/arch/arm64/boot/dts/amd/amd-seattle-clks.dtsi
+++ b/arch/arm64/boot/dts/amd/amd-seattle-clks.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle Clocks
*
diff --git a/arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi b/arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi
index bd3adeac374f..125f4deb52fe 100644
--- a/arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi
+++ b/arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle SoC
*
diff --git a/arch/arm64/boot/dts/amd/amd-seattle-xgbe-b.dtsi b/arch/arm64/boot/dts/amd/amd-seattle-xgbe-b.dtsi
index 8e8631952497..d97498361ce3 100644
--- a/arch/arm64/boot/dts/amd/amd-seattle-xgbe-b.dtsi
+++ b/arch/arm64/boot/dts/amd/amd-seattle-xgbe-b.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD Seattle XGBE (RevB)
*
diff --git a/arch/arm64/boot/dts/amd/husky.dts b/arch/arm64/boot/dts/amd/husky.dts
index 1381d4b2bf1b..7acde34772cb 100644
--- a/arch/arm64/boot/dts/amd/husky.dts
+++ b/arch/arm64/boot/dts/amd/husky.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DTS file for AMD/Linaro 96Boards Enterprise Edition Server (Husky) Board
* Note: Based-on AMD Seattle Rev.B0
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 7a9f48c27b1f..543416b8dff5 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nexbox-a95x.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-odroidc2.dtb
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
index c89010e56488..4157987f4a3d 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
@@ -168,7 +168,8 @@
&sd_emmc_a {
status = "okay";
pinctrl-0 = <&sdio_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdio_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
#address-cells = <1>;
#size-cells = <0>;
@@ -194,7 +195,8 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
@@ -212,10 +214,10 @@
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
- cap-sd-highspeed;
cap-mmc-highspeed;
max-frequency = <200000000>;
non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
index 9697a7a79464..4b17a76959b2 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
@@ -107,6 +107,9 @@
states = <3300000 0>,
<1800000 1>;
+
+ regulator-settling-time-up-us = <100>;
+ regulator-settling-time-down-us = <5000>;
};
wifi_32k: wifi-32k {
@@ -250,7 +253,8 @@
&sd_emmc_a {
status = "okay";
pinctrl-0 = <&sdio_pins>, <&sdio_irq_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdio_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
#address-cells = <1>;
#size-cells = <0>;
@@ -276,11 +280,16 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
- max-frequency = <100000000>;
+ sd-uhs-sdr12;
+ sd-uhs-sdr25;
+ sd-uhs-sdr50;
+ sd-uhs-sdr104;
+ max-frequency = <200000000>;
disable-wp;
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
@@ -294,10 +303,10 @@
&sd_emmc_c {
status = "disabled";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
- cap-sd-highspeed;
max-frequency = <200000000>;
non-removable;
disable-wp;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
index 9c59c3c6d1b6..38dfdde5c147 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
@@ -51,7 +51,7 @@
/ {
compatible = "nexbox,a95x", "amlogic,meson-gxbb";
model = "NEXBOX A95X";
-
+
aliases {
serial0 = &uart_AO;
};
@@ -232,7 +232,8 @@
&sd_emmc_a {
status = "okay";
pinctrl-0 = <&sdio_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdio_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
#address-cells = <1>;
#size-cells = <0>;
@@ -253,7 +254,8 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
@@ -271,10 +273,10 @@
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
- cap-sd-highspeed;
cap-mmc-highspeed;
max-frequency = <200000000>;
non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
index d147c853ab05..1ffa1c238a72 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
@@ -50,7 +50,7 @@
/ {
compatible = "hardkernel,odroid-c2", "amlogic,meson-gxbb";
model = "Hardkernel ODROID-C2";
-
+
aliases {
serial0 = &uart_AO;
};
@@ -253,7 +253,8 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
@@ -271,10 +272,10 @@
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
- cap-sd-highspeed;
max-frequency = <200000000>;
non-removable;
disable-wp;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi
index 81ffc689a5bf..23c08c3afd0a 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi
@@ -194,7 +194,8 @@
&sd_emmc_a {
status = "okay";
pinctrl-0 = <&sdio_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdio_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
#address-cells = <1>;
#size-cells = <0>;
@@ -220,10 +221,14 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
+ sd-uhs-sdr12;
+ sd-uhs-sdr25;
+ sd-uhs-sdr50;
max-frequency = <100000000>;
disable-wp;
@@ -238,10 +243,10 @@
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
- cap-sd-highspeed;
cap-mmc-highspeed;
max-frequency = <200000000>;
non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
index 346753fb6324..f2bc6dea1fc6 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
@@ -155,7 +155,8 @@
&sd_emmc_a {
status = "okay";
pinctrl-0 = <&sdio_pins &sdio_irq_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdio_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
#address-cells = <1>;
#size-cells = <0>;
@@ -181,7 +182,8 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
@@ -198,10 +200,10 @@
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
- cap-sd-highspeed;
cap-mmc-highspeed;
max-frequency = <200000000>;
non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
index 52f1687e7a09..af834cdbba79 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
@@ -392,6 +392,17 @@
};
};
+ emmc_clk_gate_pins: emmc_clk_gate {
+ mux {
+ groups = "BOOT_8";
+ function = "gpio_periphs";
+ };
+ cfg-pull-down {
+ pins = "BOOT_8";
+ bias-pull-down;
+ };
+ };
+
nor_pins: nor {
mux {
groups = "nor_d",
@@ -430,6 +441,17 @@
};
};
+ sdcard_clk_gate_pins: sdcard_clk_gate {
+ mux {
+ groups = "CARD_2";
+ function = "gpio_periphs";
+ };
+ cfg-pull-down {
+ pins = "CARD_2";
+ bias-pull-down;
+ };
+ };
+
sdio_pins: sdio {
mux {
groups = "sdio_d0",
@@ -442,6 +464,17 @@
};
};
+ sdio_clk_gate_pins: sdio_clk_gate {
+ mux {
+ groups = "GPIOX_4";
+ function = "gpio_periphs";
+ };
+ cfg-pull-down {
+ pins = "GPIOX_4";
+ bias-pull-down;
+ };
+ };
+
sdio_irq_pins: sdio_irq {
mux {
groups = "sdio_irq";
@@ -661,21 +694,21 @@
&sd_emmc_a {
clocks = <&clkc CLKID_SD_EMMC_A>,
- <&xtal>,
+ <&clkc CLKID_SD_EMMC_A_CLK0>,
<&clkc CLKID_FCLK_DIV2>;
clock-names = "core", "clkin0", "clkin1";
};
&sd_emmc_b {
clocks = <&clkc CLKID_SD_EMMC_B>,
- <&xtal>,
+ <&clkc CLKID_SD_EMMC_B_CLK0>,
<&clkc CLKID_FCLK_DIV2>;
clock-names = "core", "clkin0", "clkin1";
};
&sd_emmc_c {
clocks = <&clkc CLKID_SD_EMMC_C>,
- <&xtal>,
+ <&clkc CLKID_SD_EMMC_C_CLK0>,
<&clkc CLKID_FCLK_DIV2>;
clock-names = "core", "clkin0", "clkin1";
};
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts
index 2a5804ce7f4b..977b4240f3c1 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-hwacom-amazetv.dts
@@ -123,7 +123,8 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
@@ -141,10 +142,10 @@
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
- cap-sd-highspeed;
cap-mmc-highspeed;
max-frequency = <100000000>;
non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
index 69ca14ac10fa..64c54c92e214 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
@@ -91,6 +91,9 @@
states = <3300000 0>,
<1800000 1>;
+
+ regulator-settling-time-up-us = <200>;
+ regulator-settling-time-down-us = <50000>;
};
vddio_boot: regulator-vddio_boot {
@@ -197,10 +200,14 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
+ sd-uhs-sdr12;
+ sd-uhs-sdr25;
+ sd-uhs-sdr50;
max-frequency = <100000000>;
disable-wp;
@@ -215,10 +222,12 @@
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
cap-mmc-highspeed;
+ mmc-ddr-3_3v;
max-frequency = <50000000>;
non-removable;
disable-wp;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts
index 4c2ac7650fcd..1b8f32867aa1 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts
@@ -189,7 +189,8 @@
&sd_emmc_a {
status = "okay";
pinctrl-0 = <&sdio_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdio_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
#address-cells = <1>;
#size-cells = <0>;
@@ -210,7 +211,8 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
@@ -228,10 +230,10 @@
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
- cap-sd-highspeed;
cap-mmc-highspeed;
max-frequency = <200000000>;
non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
index f3eea8e89d12..129af9068814 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
@@ -95,7 +95,8 @@
&sd_emmc_a {
status = "okay";
pinctrl-0 = <&sdio_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdio_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
#address-cells = <1>;
#size-cells = <0>;
@@ -116,7 +117,8 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
@@ -134,10 +136,10 @@
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
- cap-sd-highspeed;
cap-mmc-highspeed;
max-frequency = <200000000>;
non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
index d6876e64979e..d8dd3298b15c 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
@@ -281,6 +281,17 @@
};
};
+ emmc_clk_gate_pins: emmc_clk_gate {
+ mux {
+ groups = "BOOT_8";
+ function = "gpio_periphs";
+ };
+ cfg-pull-down {
+ pins = "BOOT_8";
+ bias-pull-down;
+ };
+ };
+
nor_pins: nor {
mux {
groups = "nor_d",
@@ -319,6 +330,17 @@
};
};
+ sdcard_clk_gate_pins: sdcard_clk_gate {
+ mux {
+ groups = "CARD_2";
+ function = "gpio_periphs";
+ };
+ cfg-pull-down {
+ pins = "CARD_2";
+ bias-pull-down;
+ };
+ };
+
sdio_pins: sdio {
mux {
groups = "sdio_d0",
@@ -331,6 +353,17 @@
};
};
+ sdio_clk_gate_pins: sdio_clk_gate {
+ mux {
+ groups = "GPIOX_4";
+ function = "gpio_periphs";
+ };
+ cfg-pull-down {
+ pins = "GPIOX_4";
+ bias-pull-down;
+ };
+ };
+
sdio_irq_pins: sdio_irq {
mux {
groups = "sdio_irq";
@@ -603,21 +636,21 @@
&sd_emmc_a {
clocks = <&clkc CLKID_SD_EMMC_A>,
- <&xtal>,
+ <&clkc CLKID_SD_EMMC_A_CLK0>,
<&clkc CLKID_FCLK_DIV2>;
clock-names = "core", "clkin0", "clkin1";
};
&sd_emmc_b {
clocks = <&clkc CLKID_SD_EMMC_B>,
- <&xtal>,
+ <&clkc CLKID_SD_EMMC_B_CLK0>,
<&clkc CLKID_FCLK_DIV2>;
clock-names = "core", "clkin0", "clkin1";
};
&sd_emmc_c {
clocks = <&clkc CLKID_SD_EMMC_C>,
- <&xtal>,
+ <&clkc CLKID_SD_EMMC_C_CLK0>,
<&clkc CLKID_FCLK_DIV2>;
clock-names = "core", "clkin0", "clkin1";
};
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
index 9b10c5f4f8c0..22c697732f66 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
@@ -175,7 +175,8 @@
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&sdcard_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
@@ -193,10 +194,10 @@
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
- pinctrl-names = "default";
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
bus-width = <8>;
- cap-sd-highspeed;
cap-mmc-highspeed;
max-frequency = <200000000>;
non-removable;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
index 08f1dd69b679..470f72bb863c 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
@@ -220,7 +220,6 @@
pinctrl-names = "default";
bus-width = <8>;
- cap-sd-highspeed;
cap-mmc-highspeed;
max-frequency = <200000000>;
non-removable;
diff --git a/arch/arm64/boot/dts/apm/Makefile b/arch/arm64/boot/dts/apm/Makefile
index c75f17a49471..a10fbdb34229 100644
--- a/arch/arm64/boot/dts/apm/Makefile
+++ b/arch/arm64/boot/dts/apm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_XGENE) += apm-mustang.dtb
dtb-$(CONFIG_ARCH_XGENE) += apm-merlin.dtb
diff --git a/arch/arm64/boot/dts/arm/Makefile b/arch/arm64/boot/dts/arm/Makefile
index 75cc2aa10101..470378addca4 100644
--- a/arch/arm64/boot/dts/arm/Makefile
+++ b/arch/arm64/boot/dts/arm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_VEXPRESS) += foundation-v8.dtb foundation-v8-gicv3.dtb
dtb-$(CONFIG_ARCH_VEXPRESS) += juno.dtb juno-r1.dtb juno-r2.dtb
dtb-$(CONFIG_ARCH_VEXPRESS) += rtsm_ve-aemv8a.dtb
diff --git a/arch/arm64/boot/dts/arm/foundation-v8-gicv3.dts b/arch/arm64/boot/dts/arm/foundation-v8-gicv3.dts
index 35588dfa095c..4825cdbdcf46 100644
--- a/arch/arm64/boot/dts/arm/foundation-v8-gicv3.dts
+++ b/arch/arm64/boot/dts/arm/foundation-v8-gicv3.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd.
*
diff --git a/arch/arm64/boot/dts/arm/foundation-v8.dts b/arch/arm64/boot/dts/arm/foundation-v8.dts
index 71168077312d..8a9136f4ab74 100644
--- a/arch/arm64/boot/dts/arm/foundation-v8.dts
+++ b/arch/arm64/boot/dts/arm/foundation-v8.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd.
*
diff --git a/arch/arm64/boot/dts/arm/foundation-v8.dtsi b/arch/arm64/boot/dts/arm/foundation-v8.dtsi
index 8ecdd4331980..f0b67e439f58 100644
--- a/arch/arm64/boot/dts/arm/foundation-v8.dtsi
+++ b/arch/arm64/boot/dts/arm/foundation-v8.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd.
*
diff --git a/arch/arm64/boot/dts/arm/juno-base.dtsi b/arch/arm64/boot/dts/arm/juno-base.dtsi
index fbafe62d6b22..f165f04db0c9 100644
--- a/arch/arm64/boot/dts/arm/juno-base.dtsi
+++ b/arch/arm64/boot/dts/arm/juno-base.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "juno-clocks.dtsi"
/ {
diff --git a/arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi b/arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi
index aa03050dd7df..0c43fb3525eb 100644
--- a/arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi
+++ b/arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
funnel@20130000 { /* cssys1 */
compatible = "arm,coresight-funnel", "arm,primecell";
diff --git a/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts b/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts
index a83ed2c6bbf7..7810632d3438 100644
--- a/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts
+++ b/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd. Fast Models
*
diff --git a/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi b/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi
index 528875c75598..e18fe006cc2a 100644
--- a/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi
+++ b/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd. Fast Models
*
diff --git a/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts b/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
index e3a171162bb4..2cb604957808 100644
--- a/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
+++ b/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ARM Ltd. Versatile Express
*
diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
index 3eaef3895d66..3df2db7f8878 100644
--- a/arch/arm64/boot/dts/broadcom/Makefile
+++ b/arch/arm64/boot/dts/broadcom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb
dts-dirs += northstar2
diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
index 699d340a3437..89b78d6c19bf 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
@@ -1 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0
#include "arm/bcm2837-rpi-3-b.dts"
diff --git a/arch/arm64/boot/dts/broadcom/stingray/Makefile b/arch/arm64/boot/dts/broadcom/stingray/Makefile
index f70028edad63..04bb302f3233 100644
--- a/arch/arm64/boot/dts/broadcom/stingray/Makefile
+++ b/arch/arm64/boot/dts/broadcom/stingray/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_BCM_IPROC) += bcm958742k.dtb
dtb-$(CONFIG_ARCH_BCM_IPROC) += bcm958742t.dtb
diff --git a/arch/arm64/boot/dts/cavium/Makefile b/arch/arm64/boot/dts/cavium/Makefile
index 581b2c1c400a..9f68c277302b 100644
--- a/arch/arm64/boot/dts/cavium/Makefile
+++ b/arch/arm64/boot/dts/cavium/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_THUNDER) += thunder-88xx.dtb
dtb-$(CONFIG_ARCH_THUNDER2) += thunder2-99xx.dtb
diff --git a/arch/arm64/boot/dts/exynos/Makefile b/arch/arm64/boot/dts/exynos/Makefile
index 7ddea53769a7..6914b2cbd397 100644
--- a/arch/arm64/boot/dts/exynos/Makefile
+++ b/arch/arm64/boot/dts/exynos/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_EXYNOS) += \
exynos5433-tm2.dtb \
exynos5433-tm2e.dtb \
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 72c4b525726f..dc02e82aba7c 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-frdm.dtb
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-qds.dtb
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-rdb.dtb
diff --git a/arch/arm64/boot/dts/hisilicon/Makefile b/arch/arm64/boot/dts/hisilicon/Makefile
index 8960ecafd37d..521ed484a5d1 100644
--- a/arch/arm64/boot/dts/hisilicon/Makefile
+++ b/arch/arm64/boot/dts/hisilicon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_HISI) += hi3660-hikey960.dtb
dtb-$(CONFIG_ARCH_HISI) += hi3798cv200-poplar.dtb
dtb-$(CONFIG_ARCH_HISI) += hi6220-hikey.dtb
diff --git a/arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts b/arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts
index fd4705c451e2..e9f87cb61ade 100644
--- a/arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts
+++ b/arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dts file for Hisilicon HiKey960 Development Board
*
diff --git a/arch/arm64/boot/dts/hisilicon/hi3660.dtsi b/arch/arm64/boot/dts/hisilicon/hi3660.dtsi
index b7a90d632959..13ae69f5a327 100644
--- a/arch/arm64/boot/dts/hisilicon/hi3660.dtsi
+++ b/arch/arm64/boot/dts/hisilicon/hi3660.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dts file for Hisilicon Hi3660 SoC
*
diff --git a/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts b/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts
index 2b526304ed27..3aee6123d161 100644
--- a/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts
+++ b/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dts file for Hisilicon HiKey Development Board
*
diff --git a/arch/arm64/boot/dts/hisilicon/hi6220.dtsi b/arch/arm64/boot/dts/hisilicon/hi6220.dtsi
index 02a3aa4b2165..ff1dc89f599e 100644
--- a/arch/arm64/boot/dts/hisilicon/hi6220.dtsi
+++ b/arch/arm64/boot/dts/hisilicon/hi6220.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dts file for Hisilicon Hi6220 SoC
*
diff --git a/arch/arm64/boot/dts/hisilicon/hikey-pinctrl.dtsi b/arch/arm64/boot/dts/hisilicon/hikey-pinctrl.dtsi
index 0916e8459d6b..e7d22619a4c0 100644
--- a/arch/arm64/boot/dts/hisilicon/hikey-pinctrl.dtsi
+++ b/arch/arm64/boot/dts/hisilicon/hikey-pinctrl.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* pinctrl dts fils for Hislicon HiKey development board
*
diff --git a/arch/arm64/boot/dts/hisilicon/hikey960-pinctrl.dtsi b/arch/arm64/boot/dts/hisilicon/hikey960-pinctrl.dtsi
index 7e542d28dadb..d11efc81958c 100644
--- a/arch/arm64/boot/dts/hisilicon/hikey960-pinctrl.dtsi
+++ b/arch/arm64/boot/dts/hisilicon/hikey960-pinctrl.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* pinctrl dts fils for Hislicon HiKey960 development board
*
diff --git a/arch/arm64/boot/dts/lg/Makefile b/arch/arm64/boot/dts/lg/Makefile
index 5c7b54c12adc..e345b8e58efe 100644
--- a/arch/arm64/boot/dts/lg/Makefile
+++ b/arch/arm64/boot/dts/lg/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_LG1K) += lg1312-ref.dtb
dtb-$(CONFIG_ARCH_LG1K) += lg1313-ref.dtb
diff --git a/arch/arm64/boot/dts/lg/lg1312-ref.dts b/arch/arm64/boot/dts/lg/lg1312-ref.dts
index 6d78d6bc7f9c..260a2c5b19e5 100644
--- a/arch/arm64/boot/dts/lg/lg1312-ref.dts
+++ b/arch/arm64/boot/dts/lg/lg1312-ref.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dts file for lg1312 Reference Board.
*
diff --git a/arch/arm64/boot/dts/lg/lg1312.dtsi b/arch/arm64/boot/dts/lg/lg1312.dtsi
index fbafa24cd533..860c8fb10795 100644
--- a/arch/arm64/boot/dts/lg/lg1312.dtsi
+++ b/arch/arm64/boot/dts/lg/lg1312.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dts file for lg1312 SoC
*
diff --git a/arch/arm64/boot/dts/lg/lg1313-ref.dts b/arch/arm64/boot/dts/lg/lg1313-ref.dts
index df0ece43cfbf..e89ae853788a 100644
--- a/arch/arm64/boot/dts/lg/lg1313-ref.dts
+++ b/arch/arm64/boot/dts/lg/lg1313-ref.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dts file for lg1313 Reference Board.
*
diff --git a/arch/arm64/boot/dts/lg/lg1313.dtsi b/arch/arm64/boot/dts/lg/lg1313.dtsi
index e703e1149c75..1887af654a7d 100644
--- a/arch/arm64/boot/dts/lg/lg1313.dtsi
+++ b/arch/arm64/boot/dts/lg/lg1313.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dts file for lg1313 SoC
*
diff --git a/arch/arm64/boot/dts/marvell/Makefile b/arch/arm64/boot/dts/marvell/Makefile
index 6cff81eeaae2..5633676fa9d0 100644
--- a/arch/arm64/boot/dts/marvell/Makefile
+++ b/arch/arm64/boot/dts/marvell/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Berlin SoC Family
dtb-$(CONFIG_ARCH_BERLIN) += berlin4ct-dmp.dtb
dtb-$(CONFIG_ARCH_BERLIN) += berlin4ct-stb.dtb
diff --git a/arch/arm64/boot/dts/marvell/armada-ap806.dtsi b/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
index 4d360713ed12..30d48ecf46e0 100644
--- a/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
@@ -254,7 +254,7 @@
ap_syscon: system-controller@6f4000 {
compatible = "syscon", "simple-mfd";
- reg = <0x6f4000 0x1000>;
+ reg = <0x6f4000 0x2000>;
ap_clk: clock {
compatible = "marvell,ap806-clock";
@@ -265,7 +265,7 @@
compatible = "marvell,ap806-pinctrl";
};
- ap_gpio: gpio {
+ ap_gpio: gpio@1040 {
compatible = "marvell,armada-8k-gpio";
offset = <0x1040>;
ngpios = <20>;
diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi
index 8263a8a504a8..f2aa2a81de4d 100644
--- a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi
@@ -336,7 +336,7 @@
/* non-prefetchable memory */
0x82000000 0 0xf6000000 0 0xf6000000 0 0xf00000>;
interrupt-map-mask = <0 0 0 0>;
- interrupt-map = <0 0 0 0 &cpm_icu 0 ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-map = <0 0 0 0 &cpm_icu ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
interrupts = <ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
num-lanes = <1>;
clocks = <&cpm_clk 1 13>;
@@ -362,7 +362,7 @@
/* non-prefetchable memory */
0x82000000 0 0xf7000000 0 0xf7000000 0 0xf00000>;
interrupt-map-mask = <0 0 0 0>;
- interrupt-map = <0 0 0 0 &cpm_icu 0 ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-map = <0 0 0 0 &cpm_icu ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
interrupts = <ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
num-lanes = <1>;
@@ -389,7 +389,7 @@
/* non-prefetchable memory */
0x82000000 0 0xf8000000 0 0xf8000000 0 0xf00000>;
interrupt-map-mask = <0 0 0 0>;
- interrupt-map = <0 0 0 0 &cpm_icu 0 ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-map = <0 0 0 0 &cpm_icu ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
interrupts = <ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
num-lanes = <1>;
diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi
index b71ee6c83668..4fe70323abb3 100644
--- a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi
@@ -335,7 +335,7 @@
/* non-prefetchable memory */
0x82000000 0 0xfa000000 0 0xfa000000 0 0xf00000>;
interrupt-map-mask = <0 0 0 0>;
- interrupt-map = <0 0 0 0 &cps_icu 0 ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-map = <0 0 0 0 &cps_icu ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
interrupts = <ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
num-lanes = <1>;
clocks = <&cps_clk 1 13>;
@@ -361,7 +361,7 @@
/* non-prefetchable memory */
0x82000000 0 0xfb000000 0 0xfb000000 0 0xf00000>;
interrupt-map-mask = <0 0 0 0>;
- interrupt-map = <0 0 0 0 &cps_icu 0 ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-map = <0 0 0 0 &cps_icu ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
interrupts = <ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
num-lanes = <1>;
@@ -388,7 +388,7 @@
/* non-prefetchable memory */
0x82000000 0 0xfc000000 0 0xfc000000 0 0xf00000>;
interrupt-map-mask = <0 0 0 0>;
- interrupt-map = <0 0 0 0 &cps_icu 0 ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-map = <0 0 0 0 &cps_icu ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
interrupts = <ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
num-lanes = <1>;
diff --git a/arch/arm64/boot/dts/mediatek/Makefile b/arch/arm64/boot/dts/mediatek/Makefile
index 151723b5c733..1d05d1824fa9 100644
--- a/arch/arm64/boot/dts/mediatek/Makefile
+++ b/arch/arm64/boot/dts/mediatek/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_MEDIATEK) += mt2712-evb.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt6755-evb.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt6795-evb.dtb
diff --git a/arch/arm64/boot/dts/nvidia/Makefile b/arch/arm64/boot/dts/nvidia/Makefile
index 18941458cb4d..6bc0c6ab4b7f 100644
--- a/arch/arm64/boot/dts/nvidia/Makefile
+++ b/arch/arm64/boot/dts/nvidia/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_TEGRA_132_SOC) += tegra132-norrin.dtb
dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p2371-0000.dtb
dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p2371-2180.dtb
diff --git a/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts b/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts
index 759af96a6b49..a0385a386a3f 100644
--- a/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm64/boot/dts/nvidia/tegra132.dtsi b/arch/arm64/boot/dts/nvidia/tegra132.dtsi
index c2f0f2743578..fa5a7c4bc807 100644
--- a/arch/arm64/boot/dts/nvidia/tegra132.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra132.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/tegra124-car.h>
#include <dt-bindings/gpio/tegra-gpio.h>
#include <dt-bindings/memory/tegra124-mc.h>
diff --git a/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts b/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts
index 8daadadec63a..c71d762bf697 100644
--- a/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/linux-event-codes.h>
diff --git a/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi b/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi
index cf84d7046ad5..54f418d05e15 100644
--- a/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "tegra186.dtsi"
#include <dt-bindings/mfd/max77620.h>
diff --git a/arch/arm64/boot/dts/nvidia/tegra186.dtsi b/arch/arm64/boot/dts/nvidia/tegra186.dtsi
index 0b0552c9f7dd..a9c3eef6c4e0 100644
--- a/arch/arm64/boot/dts/nvidia/tegra186.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra186.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/tegra186-clock.h>
#include <dt-bindings/gpio/tegra186-gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
index 906fb836d241..d10d4430537a 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/mfd/max77620.h>
#include "tegra210.dtsi"
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2371-0000.dts b/arch/arm64/boot/dts/nvidia/tegra210-p2371-0000.dts
index 1ddd8512e100..21c6d3749bc6 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2371-0000.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2371-0000.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra210-p2530.dtsi"
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
index 7cb95e042117..37e3c46e753f 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "tegra210-p2180.dtsi"
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
index 0ec92578cacb..be6066ff97c9 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "tegra210.dtsi"
/ {
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2571.dts b/arch/arm64/boot/dts/nvidia/tegra210-p2571.dts
index 576957a55801..e2a347e57215 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2571.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2571.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2595.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2595.dtsi
index e008e3364d2a..6ae292da7294 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2595.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2595.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
model = "NVIDIA Tegra210 P2595 I/O board";
compatible = "nvidia,p2595", "nvidia,tegra210";
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi
index e5fc67bf46c2..d67ef4319f3b 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/input/input.h>
/ {
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
index 7703227f5d1a..43cae4798870 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/input/input.h>
diff --git a/arch/arm64/boot/dts/nvidia/tegra210.dtsi b/arch/arm64/boot/dts/nvidia/tegra210.dtsi
index 29f471e0f22a..9bdf19f2cca7 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra210.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/tegra210-car.h>
#include <dt-bindings/gpio/tegra-gpio.h>
#include <dt-bindings/memory/tegra210-mc.h>
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index ff81d7e5805e..e7b25bee3f1e 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc.dtb
dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq8074-hk01.dtb
diff --git a/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi b/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi
index 790b7775b901..ec2f0de67993 100644
--- a/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi
+++ b/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
diff --git a/arch/arm64/boot/dts/qcom/apq8016-sbc-soc-pins.dtsi b/arch/arm64/boot/dts/qcom/apq8016-sbc-soc-pins.dtsi
index 185388de914c..21d0822f1ca6 100644
--- a/arch/arm64/boot/dts/qcom/apq8016-sbc-soc-pins.dtsi
+++ b/arch/arm64/boot/dts/qcom/apq8016-sbc-soc-pins.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi
index 8e379782597a..59b29ddfb6e9 100644
--- a/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi
+++ b/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
&pm8994_gpios {
diff --git a/arch/arm64/boot/dts/qcom/pm8004.dtsi b/arch/arm64/boot/dts/qcom/pm8004.dtsi
index ef2207afa86b..297b57bfa87a 100644
--- a/arch/arm64/boot/dts/qcom/pm8004.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm8004.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>
diff --git a/arch/arm64/boot/dts/qcom/pm8916.dtsi b/arch/arm64/boot/dts/qcom/pm8916.dtsi
index 53deebf9f515..0223e60d8b6a 100644
--- a/arch/arm64/boot/dts/qcom/pm8916.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm8916.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/iio/qcom,spmi-vadc.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>
diff --git a/arch/arm64/boot/dts/qcom/pm8994.dtsi b/arch/arm64/boot/dts/qcom/pm8994.dtsi
index b413e44fd09e..80024c0b1c7c 100644
--- a/arch/arm64/boot/dts/qcom/pm8994.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm8994.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>
diff --git a/arch/arm64/boot/dts/qcom/pmi8994.dtsi b/arch/arm64/boot/dts/qcom/pmi8994.dtsi
index 57673f92805d..dae1cdc23f54 100644
--- a/arch/arm64/boot/dts/qcom/pmi8994.dtsi
+++ b/arch/arm64/boot/dts/qcom/pmi8994.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>
diff --git a/arch/arm64/boot/dts/renesas/Makefile b/arch/arm64/boot/dts/renesas/Makefile
index 381928bc1358..d417701640bd 100644
--- a/arch/arm64/boot/dts/renesas/Makefile
+++ b/arch/arm64/boot/dts/renesas/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-salvator-x.dtb r8a7795-h3ulcb.dtb
dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-salvator-xs.dtb
dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-salvator-x.dtb r8a7795-es1-h3ulcb.dtb
diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
index 4786c67b5e65..d9d885006a8e 100644
--- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi
+++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
@@ -62,6 +62,7 @@
brightness-levels = <256 128 64 16 8 4 0>;
default-brightness-level = <6>;
+ power-supply = <&reg_12v>;
enable-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
};
@@ -83,6 +84,15 @@
regulator-always-on;
};
+ reg_12v: regulator2 {
+ compatible = "regulator-fixed";
+ regulator-name = "fixed-12V";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
rsnd_ak4613: sound {
compatible = "simple-audio-card";
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
index f1c9b13cea5c..84801892ee61 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock64.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-evb-act8846.dtb
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
index 6d615cb6e64d..41d61840fb99 100644
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
@@ -582,7 +582,7 @@
vop_mmu: iommu@ff373f00 {
compatible = "rockchip,iommu";
reg = <0x0 0xff373f00 0x0 0x100>;
- interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH 0>;
+ interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "vop_mmu";
#iommu-cells = <0>;
status = "disabled";
diff --git a/arch/arm64/boot/dts/rockchip/rk3368.dtsi b/arch/arm64/boot/dts/rockchip/rk3368.dtsi
index e0518b4bc6c2..1070c8264c13 100644
--- a/arch/arm64/boot/dts/rockchip/rk3368.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3368.dtsi
@@ -113,8 +113,7 @@
compatible = "arm,cortex-a53", "arm,armv8";
reg = <0x0 0x0>;
enable-method = "psci";
- clocks = <&cru ARMCLKL>;
- operating-points-v2 = <&cluster0_opp>;
+
#cooling-cells = <2>; /* min followed by max */
};
@@ -123,8 +122,6 @@
compatible = "arm,cortex-a53", "arm,armv8";
reg = <0x0 0x1>;
enable-method = "psci";
- clocks = <&cru ARMCLKL>;
- operating-points-v2 = <&cluster0_opp>;
};
cpu_l2: cpu@2 {
@@ -132,8 +129,6 @@
compatible = "arm,cortex-a53", "arm,armv8";
reg = <0x0 0x2>;
enable-method = "psci";
- clocks = <&cru ARMCLKL>;
- operating-points-v2 = <&cluster0_opp>;
};
cpu_l3: cpu@3 {
@@ -141,8 +136,6 @@
compatible = "arm,cortex-a53", "arm,armv8";
reg = <0x0 0x3>;
enable-method = "psci";
- clocks = <&cru ARMCLKL>;
- operating-points-v2 = <&cluster0_opp>;
};
cpu_b0: cpu@100 {
@@ -150,8 +143,7 @@
compatible = "arm,cortex-a53", "arm,armv8";
reg = <0x0 0x100>;
enable-method = "psci";
- clocks = <&cru ARMCLKB>;
- operating-points-v2 = <&cluster1_opp>;
+
#cooling-cells = <2>; /* min followed by max */
};
@@ -160,8 +152,6 @@
compatible = "arm,cortex-a53", "arm,armv8";
reg = <0x0 0x101>;
enable-method = "psci";
- clocks = <&cru ARMCLKB>;
- operating-points-v2 = <&cluster1_opp>;
};
cpu_b2: cpu@102 {
@@ -169,8 +159,6 @@
compatible = "arm,cortex-a53", "arm,armv8";
reg = <0x0 0x102>;
enable-method = "psci";
- clocks = <&cru ARMCLKB>;
- operating-points-v2 = <&cluster1_opp>;
};
cpu_b3: cpu@103 {
@@ -178,62 +166,6 @@
compatible = "arm,cortex-a53", "arm,armv8";
reg = <0x0 0x103>;
enable-method = "psci";
- clocks = <&cru ARMCLKB>;
- operating-points-v2 = <&cluster1_opp>;
- };
- };
-
- cluster0_opp: opp-table0 {
- compatible = "operating-points-v2";
- opp-shared;
-
- opp00 {
- opp-hz = /bits/ 64 <312000000>;
- opp-microvolt = <950000>;
- clock-latency-ns = <40000>;
- };
- opp01 {
- opp-hz = /bits/ 64 <408000000>;
- opp-microvolt = <950000>;
- };
- opp02 {
- opp-hz = /bits/ 64 <600000000>;
- opp-microvolt = <950000>;
- };
- opp03 {
- opp-hz = /bits/ 64 <816000000>;
- opp-microvolt = <1025000>;
- };
- opp04 {
- opp-hz = /bits/ 64 <1008000000>;
- opp-microvolt = <1125000>;
- };
- };
-
- cluster1_opp: opp-table1 {
- compatible = "operating-points-v2";
- opp-shared;
-
- opp00 {
- opp-hz = /bits/ 64 <312000000>;
- opp-microvolt = <950000>;
- clock-latency-ns = <40000>;
- };
- opp01 {
- opp-hz = /bits/ 64 <408000000>;
- opp-microvolt = <950000>;
- };
- opp02 {
- opp-hz = /bits/ 64 <600000000>;
- opp-microvolt = <950000>;
- };
- opp03 {
- opp-hz = /bits/ 64 <816000000>;
- opp-microvolt = <975000>;
- };
- opp04 {
- opp-hz = /bits/ 64 <1008000000>;
- opp-microvolt = <1050000>;
};
};
@@ -808,7 +740,7 @@
iep_mmu: iommu@ff900800 {
compatible = "rockchip,iommu";
reg = <0x0 0xff900800 0x0 0x100>;
- interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH 0>;
+ interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "iep_mmu";
#iommu-cells = <0>;
status = "disabled";
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts b/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
index 7fd4bfcaa38e..fef82274a39d 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
@@ -371,10 +371,10 @@
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <3300000>;
+ regulator-max-microvolt = <3000000>;
regulator-state-mem {
regulator-on-in-suspend;
- regulator-suspend-microvolt = <3300000>;
+ regulator-suspend-microvolt = <3000000>;
};
};
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi
index 53ff3d191a1d..910628d18add 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi
@@ -325,12 +325,12 @@
vcc_sd: LDO_REG4 {
regulator-name = "vcc_sd";
regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <3300000>;
+ regulator-max-microvolt = <3000000>;
regulator-always-on;
regulator-boot-on;
regulator-state-mem {
regulator-on-in-suspend;
- regulator-suspend-microvolt = <3300000>;
+ regulator-suspend-microvolt = <3000000>;
};
};
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
index 6c30bb02210d..0f873c897d0d 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
@@ -315,10 +315,10 @@
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <3300000>;
+ regulator-max-microvolt = <3000000>;
regulator-state-mem {
regulator-on-in-suspend;
- regulator-suspend-microvolt = <3300000>;
+ regulator-suspend-microvolt = <3000000>;
};
};
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
index d79e9b3265b9..ab7629c5b856 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
@@ -1629,9 +1629,9 @@
compatible = "rockchip,rk3399-mipi-dsi", "snps,dw-mipi-dsi";
reg = <0x0 0xff960000 0x0 0x8000>;
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH 0>;
- clocks = <&cru SCLK_MIPIDPHY_REF>, <&cru PCLK_MIPI_DSI0>,
- <&cru SCLK_DPHY_TX0_CFG>;
- clock-names = "ref", "pclk", "phy_cfg";
+ clocks = <&cru SCLK_DPHY_PLL>, <&cru PCLK_MIPI_DSI0>,
+ <&cru SCLK_DPHY_TX0_CFG>, <&cru PCLK_VIO_GRF>;
+ clock-names = "ref", "pclk", "phy_cfg", "grf";
power-domains = <&power RK3399_PD_VIO>;
rockchip,grf = <&grf>;
status = "disabled";
diff --git a/arch/arm64/boot/dts/socionext/Makefile b/arch/arm64/boot/dts/socionext/Makefile
index 4bc091b365fd..72dbe8acd9fd 100644
--- a/arch/arm64/boot/dts/socionext/Makefile
+++ b/arch/arm64/boot/dts/socionext/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_UNIPHIER) += \
uniphier-ld11-global.dtb \
uniphier-ld11-ref.dtb \
diff --git a/arch/arm64/boot/dts/sprd/Makefile b/arch/arm64/boot/dts/sprd/Makefile
index f0535e6eaaaa..d7188be103c5 100644
--- a/arch/arm64/boot/dts/sprd/Makefile
+++ b/arch/arm64/boot/dts/sprd/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_SPRD) += sc9836-openphone.dtb \
sp9860g-1h10.dtb
diff --git a/arch/arm64/crypto/Kconfig b/arch/arm64/crypto/Kconfig
index 7ca54a76f6b9..70c517aa4501 100644
--- a/arch/arm64/crypto/Kconfig
+++ b/arch/arm64/crypto/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ARM64_CRYPTO
bool "ARM64 Accelerated Cryptographic Algorithms"
diff --git a/arch/arm64/crypto/aes-ce-setkey.h b/arch/arm64/crypto/aes-ce-setkey.h
index f08a6471d034..fd9ecf07d88c 100644
--- a/arch/arm64/crypto/aes-ce-setkey.h
+++ b/arch/arm64/crypto/aes-ce-setkey.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
int ce_aes_setkey(struct crypto_tfm *tfm, const u8 *in_key,
unsigned int key_len);
diff --git a/arch/arm64/include/asm/alternative.h b/arch/arm64/include/asm/alternative.h
index 6e1cb8c5af4d..4a85c6952a22 100644
--- a/arch/arm64/include/asm/alternative.h
+++ b/arch/arm64/include/asm/alternative.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ALTERNATIVE_H
#define __ASM_ALTERNATIVE_H
diff --git a/arch/arm64/include/asm/asm-uaccess.h b/arch/arm64/include/asm/asm-uaccess.h
index ecd9788cd298..b3da6c886835 100644
--- a/arch/arm64/include/asm/asm-uaccess.h
+++ b/arch/arm64/include/asm/asm-uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ASM_UACCESS_H
#define __ASM_ASM_UACCESS_H
diff --git a/arch/arm64/include/asm/bitrev.h b/arch/arm64/include/asm/bitrev.h
index a5a0c3660137..6faf9fba8c65 100644
--- a/arch/arm64/include/asm/bitrev.h
+++ b/arch/arm64/include/asm/bitrev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_BITREV_H
#define __ASM_BITREV_H
static __always_inline __attribute_const__ u32 __arch_bitrev32(u32 x)
diff --git a/arch/arm64/include/asm/boot.h b/arch/arm64/include/asm/boot.h
index ebf2481889c3..355e552a9175 100644
--- a/arch/arm64/include/asm/boot.h
+++ b/arch/arm64/include/asm/boot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_BOOT_H
#define __ASM_BOOT_H
diff --git a/arch/arm64/include/asm/clocksource.h b/arch/arm64/include/asm/clocksource.h
index 0b350a7e26f3..0ece64a26c8c 100644
--- a/arch/arm64/include/asm/clocksource.h
+++ b/arch/arm64/include/asm/clocksource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CLOCKSOURCE_H
#define _ASM_CLOCKSOURCE_H
diff --git a/arch/arm64/include/asm/cpuidle.h b/arch/arm64/include/asm/cpuidle.h
index 0f74f05d662a..3c5ddb429ea2 100644
--- a/arch/arm64/include/asm/cpuidle.h
+++ b/arch/arm64/include/asm/cpuidle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CPUIDLE_H
#define __ASM_CPUIDLE_H
diff --git a/arch/arm64/include/asm/current.h b/arch/arm64/include/asm/current.h
index f6580d4afb0e..54ceae0874c7 100644
--- a/arch/arm64/include/asm/current.h
+++ b/arch/arm64/include/asm/current.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CURRENT_H
#define __ASM_CURRENT_H
diff --git a/arch/arm64/include/asm/efi.h b/arch/arm64/include/asm/efi.h
index b93904b16fc2..650344d01124 100644
--- a/arch/arm64/include/asm/efi.h
+++ b/arch/arm64/include/asm/efi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_EFI_H
#define _ASM_EFI_H
diff --git a/arch/arm64/include/asm/extable.h b/arch/arm64/include/asm/extable.h
index 42f50f15a44c..56a4f68b262e 100644
--- a/arch/arm64/include/asm/extable.h
+++ b/arch/arm64/include/asm/extable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_EXTABLE_H
#define __ASM_EXTABLE_H
diff --git a/arch/arm64/include/asm/hypervisor.h b/arch/arm64/include/asm/hypervisor.h
index d2c79049ff11..f9cc1d021791 100644
--- a/arch/arm64/include/asm/hypervisor.h
+++ b/arch/arm64/include/asm/hypervisor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM64_HYPERVISOR_H
#define _ASM_ARM64_HYPERVISOR_H
diff --git a/arch/arm64/include/asm/irq.h b/arch/arm64/include/asm/irq.h
index 5e6f77239064..a0fee6985e6a 100644
--- a/arch/arm64/include/asm/irq.h
+++ b/arch/arm64/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_IRQ_H
#define __ASM_IRQ_H
diff --git a/arch/arm64/include/asm/irq_work.h b/arch/arm64/include/asm/irq_work.h
index 8e24ef3f7c82..8a1ef1907760 100644
--- a/arch/arm64/include/asm/irq_work.h
+++ b/arch/arm64/include/asm/irq_work.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_IRQ_WORK_H
#define __ASM_IRQ_WORK_H
diff --git a/arch/arm64/include/asm/kasan.h b/arch/arm64/include/asm/kasan.h
index 71ad0f93eb71..e266f80e45b7 100644
--- a/arch/arm64/include/asm/kasan.h
+++ b/arch/arm64/include/asm/kasan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_KASAN_H
#define __ASM_KASAN_H
diff --git a/arch/arm64/include/asm/linkage.h b/arch/arm64/include/asm/linkage.h
index 636c1bced7d4..1b266292f0be 100644
--- a/arch/arm64/include/asm/linkage.h
+++ b/arch/arm64/include/asm/linkage.h
@@ -1,7 +1,7 @@
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
-#define __ALIGN .align 4
-#define __ALIGN_STR ".align 4"
+#define __ALIGN .align 2
+#define __ALIGN_STR ".align 2"
#endif
diff --git a/arch/arm64/include/asm/lse.h b/arch/arm64/include/asm/lse.h
index 606b20910a5c..eec95768eaad 100644
--- a/arch/arm64/include/asm/lse.h
+++ b/arch/arm64/include/asm/lse.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LSE_H
#define __ASM_LSE_H
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
index 3585a5e26151..f7c4d2146aed 100644
--- a/arch/arm64/include/asm/memory.h
+++ b/arch/arm64/include/asm/memory.h
@@ -95,16 +95,19 @@
#define KERNEL_END _end
/*
- * The size of the KASAN shadow region. This should be 1/8th of the
- * size of the entire kernel virtual address space.
+ * KASAN requires 1/8th of the kernel virtual address space for the shadow
+ * region. KASAN can bloat the stack significantly, so double the (minimum)
+ * stack size when KASAN is in use.
*/
#ifdef CONFIG_KASAN
#define KASAN_SHADOW_SIZE (UL(1) << (VA_BITS - 3))
+#define KASAN_THREAD_SHIFT 1
#else
#define KASAN_SHADOW_SIZE (0)
+#define KASAN_THREAD_SHIFT 0
#endif
-#define MIN_THREAD_SHIFT 14
+#define MIN_THREAD_SHIFT (14 + KASAN_THREAD_SHIFT)
/*
* VMAP'd stacks are allocated at page granularity, so we must ensure that such
diff --git a/arch/arm64/include/asm/mmzone.h b/arch/arm64/include/asm/mmzone.h
index a0de9e6ba73f..fa17e01d9ab2 100644
--- a/arch/arm64/include/asm/mmzone.h
+++ b/arch/arm64/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MMZONE_H
#define __ASM_MMZONE_H
diff --git a/arch/arm64/include/asm/numa.h b/arch/arm64/include/asm/numa.h
index ef7b23863a7c..01bc46d5b43a 100644
--- a/arch/arm64/include/asm/numa.h
+++ b/arch/arm64/include/asm/numa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_NUMA_H
#define __ASM_NUMA_H
diff --git a/arch/arm64/include/asm/paravirt.h b/arch/arm64/include/asm/paravirt.h
index fd5f42886251..bb5dcea42003 100644
--- a/arch/arm64/include/asm/paravirt.h
+++ b/arch/arm64/include/asm/paravirt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM64_PARAVIRT_H
#define _ASM_ARM64_PARAVIRT_H
diff --git a/arch/arm64/include/asm/pci.h b/arch/arm64/include/asm/pci.h
index 1fc19744ffe9..8747f7c5e0e7 100644
--- a/arch/arm64/include/asm/pci.h
+++ b/arch/arm64/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_PCI_H
#define __ASM_PCI_H
#ifdef __KERNEL__
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index bc4e92337d16..b46e54c2399b 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -401,7 +401,7 @@ static inline phys_addr_t pmd_page_paddr(pmd_t pmd)
/* Find an entry in the third-level page table. */
#define pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
-#define pte_offset_phys(dir,addr) (pmd_page_paddr(*(dir)) + pte_index(addr) * sizeof(pte_t))
+#define pte_offset_phys(dir,addr) (pmd_page_paddr(READ_ONCE(*(dir))) + pte_index(addr) * sizeof(pte_t))
#define pte_offset_kernel(dir,addr) ((pte_t *)__va(pte_offset_phys((dir), (addr))))
#define pte_offset_map(dir,addr) pte_offset_kernel((dir), (addr))
diff --git a/arch/arm64/include/asm/stack_pointer.h b/arch/arm64/include/asm/stack_pointer.h
index ffcdf742cddf..8e57c96ad45e 100644
--- a/arch/arm64/include/asm/stack_pointer.h
+++ b/arch/arm64/include/asm/stack_pointer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_STACK_POINTER_H
#define __ASM_STACK_POINTER_H
diff --git a/arch/arm64/include/asm/stackprotector.h b/arch/arm64/include/asm/stackprotector.h
index b86a0865ddf1..58d15be11c4d 100644
--- a/arch/arm64/include/asm/stackprotector.h
+++ b/arch/arm64/include/asm/stackprotector.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* GCC stack protector support.
*
diff --git a/arch/arm64/include/asm/suspend.h b/arch/arm64/include/asm/suspend.h
index de5600f40adf..8939c87c4dce 100644
--- a/arch/arm64/include/asm/suspend.h
+++ b/arch/arm64/include/asm/suspend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SUSPEND_H
#define __ASM_SUSPEND_H
diff --git a/arch/arm64/include/asm/sync_bitops.h b/arch/arm64/include/asm/sync_bitops.h
index 8da0bf4f7659..eee31a9f72a5 100644
--- a/arch/arm64/include/asm/sync_bitops.h
+++ b/arch/arm64/include/asm/sync_bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SYNC_BITOPS_H__
#define __ASM_SYNC_BITOPS_H__
diff --git a/arch/arm64/include/asm/topology.h b/arch/arm64/include/asm/topology.h
index 8b57339823e9..b3202284568b 100644
--- a/arch/arm64/include/asm/topology.h
+++ b/arch/arm64/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_TOPOLOGY_H
#define __ASM_TOPOLOGY_H
diff --git a/arch/arm64/include/asm/xen/events.h b/arch/arm64/include/asm/xen/events.h
index 4318866d053c..4e22b7a8c038 100644
--- a/arch/arm64/include/asm/xen/events.h
+++ b/arch/arm64/include/asm/xen/events.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM64_XEN_EVENTS_H
#define _ASM_ARM64_XEN_EVENTS_H
diff --git a/arch/arm64/include/asm/xen/xen-ops.h b/arch/arm64/include/asm/xen/xen-ops.h
index ec154e719b11..e6e784051932 100644
--- a/arch/arm64/include/asm/xen/xen-ops.h
+++ b/arch/arm64/include/asm/xen/xen-ops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_XEN_OPS_H
#define _ASM_XEN_OPS_H
diff --git a/arch/arm64/include/uapi/asm/Kbuild b/arch/arm64/include/uapi/asm/Kbuild
index fc28bd95c6d3..198afbf0688f 100644
--- a/arch/arm64/include/uapi/asm/Kbuild
+++ b/arch/arm64/include/uapi/asm/Kbuild
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# UAPI Header export list
include include/uapi/asm-generic/Kbuild.asm
diff --git a/arch/arm64/include/uapi/asm/auxvec.h b/arch/arm64/include/uapi/asm/auxvec.h
index 4cf0c17787a8..ec0a86d484e1 100644
--- a/arch/arm64/include/uapi/asm/auxvec.h
+++ b/arch/arm64/include/uapi/asm/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/bitsperlong.h b/arch/arm64/include/uapi/asm/bitsperlong.h
index fce9c2924fa3..485d60bee26c 100644
--- a/arch/arm64/include/uapi/asm/bitsperlong.h
+++ b/arch/arm64/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/byteorder.h b/arch/arm64/include/uapi/asm/byteorder.h
index dc19e9537f0d..ca9cfdab33fc 100644
--- a/arch/arm64/include/uapi/asm/byteorder.h
+++ b/arch/arm64/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/fcntl.h b/arch/arm64/include/uapi/asm/fcntl.h
index cd2e630c235e..f8db34f2622d 100644
--- a/arch/arm64/include/uapi/asm/fcntl.h
+++ b/arch/arm64/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/hwcap.h b/arch/arm64/include/uapi/asm/hwcap.h
index 4b9344cba83a..b3fdeee739ea 100644
--- a/arch/arm64/include/uapi/asm/hwcap.h
+++ b/arch/arm64/include/uapi/asm/hwcap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h
index 9f3ca24bbcc6..51149ec75fe4 100644
--- a/arch/arm64/include/uapi/asm/kvm.h
+++ b/arch/arm64/include/uapi/asm/kvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012,2013 - ARM Ltd
* Author: Marc Zyngier <marc.zyngier@arm.com>
diff --git a/arch/arm64/include/uapi/asm/param.h b/arch/arm64/include/uapi/asm/param.h
index 8e3a281d448a..b115c5557781 100644
--- a/arch/arm64/include/uapi/asm/param.h
+++ b/arch/arm64/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/perf_regs.h b/arch/arm64/include/uapi/asm/perf_regs.h
index 172b8317ee49..d54daafa89e3 100644
--- a/arch/arm64/include/uapi/asm/perf_regs.h
+++ b/arch/arm64/include/uapi/asm/perf_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_ARM64_PERF_REGS_H
#define _ASM_ARM64_PERF_REGS_H
diff --git a/arch/arm64/include/uapi/asm/posix_types.h b/arch/arm64/include/uapi/asm/posix_types.h
index 7985ff60ca3f..b1c2e0df92dc 100644
--- a/arch/arm64/include/uapi/asm/posix_types.h
+++ b/arch/arm64/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_POSIX_TYPES_H
#define __ASM_POSIX_TYPES_H
diff --git a/arch/arm64/include/uapi/asm/ptrace.h b/arch/arm64/include/uapi/asm/ptrace.h
index d1ff83dfe5de..67d4c33974e8 100644
--- a/arch/arm64/include/uapi/asm/ptrace.h
+++ b/arch/arm64/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Based on arch/arm/include/asm/ptrace.h
*
diff --git a/arch/arm64/include/uapi/asm/setup.h b/arch/arm64/include/uapi/asm/setup.h
index 9cf2e46fbbdf..5d703888f351 100644
--- a/arch/arm64/include/uapi/asm/setup.h
+++ b/arch/arm64/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Based on arch/arm/include/asm/setup.h
*
diff --git a/arch/arm64/include/uapi/asm/sigcontext.h b/arch/arm64/include/uapi/asm/sigcontext.h
index f0a76b9fcd6e..f6cc3061b1ae 100644
--- a/arch/arm64/include/uapi/asm/sigcontext.h
+++ b/arch/arm64/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/siginfo.h b/arch/arm64/include/uapi/asm/siginfo.h
index 5a74a0853db0..574d12f86039 100644
--- a/arch/arm64/include/uapi/asm/siginfo.h
+++ b/arch/arm64/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/signal.h b/arch/arm64/include/uapi/asm/signal.h
index 991bf5db2ca1..bdf0cfb046c9 100644
--- a/arch/arm64/include/uapi/asm/signal.h
+++ b/arch/arm64/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/stat.h b/arch/arm64/include/uapi/asm/stat.h
index eeb702e5074a..313325fa22fa 100644
--- a/arch/arm64/include/uapi/asm/stat.h
+++ b/arch/arm64/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/statfs.h b/arch/arm64/include/uapi/asm/statfs.h
index 6f6219050978..615357b6ba89 100644
--- a/arch/arm64/include/uapi/asm/statfs.h
+++ b/arch/arm64/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/ucontext.h b/arch/arm64/include/uapi/asm/ucontext.h
index 791de8e89e35..ee02721a704d 100644
--- a/arch/arm64/include/uapi/asm/ucontext.h
+++ b/arch/arm64/include/uapi/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/include/uapi/asm/unistd.h b/arch/arm64/include/uapi/asm/unistd.h
index 043d17a21342..5072cbd15c82 100644
--- a/arch/arm64/include/uapi/asm/unistd.h
+++ b/arch/arm64/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 ARM Ltd.
*
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index f2b4e816b6de..0029e13adb59 100644
--- a/arch/arm64/kernel/Makefile
+++ b/arch/arm64/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/arm64/kernel/acpi_numa.c b/arch/arm64/kernel/acpi_numa.c
index f01fab637dab..d190a7b231bf 100644
--- a/arch/arm64/kernel/acpi_numa.c
+++ b/arch/arm64/kernel/acpi_numa.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ACPI 5.1 based NUMA setup for ARM64
* Lots of code was borrowed from arch/x86/mm/srat.c
diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
index f0e6d717885b..d06fbe4cd38d 100644
--- a/arch/arm64/kernel/armv8_deprecated.c
+++ b/arch/arm64/kernel/armv8_deprecated.c
@@ -649,4 +649,4 @@ static int __init armv8_deprecated_init(void)
return 0;
}
-late_initcall(armv8_deprecated_init);
+core_initcall(armv8_deprecated_init);
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index cd52d365d1f0..21e2c95d24e7 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -1307,4 +1307,4 @@ static int __init enable_mrs_emulation(void)
return 0;
}
-late_initcall(enable_mrs_emulation);
+core_initcall(enable_mrs_emulation);
diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
index 3a68cf38a6b3..5d547deb6996 100644
--- a/arch/arm64/kernel/fpsimd.c
+++ b/arch/arm64/kernel/fpsimd.c
@@ -321,6 +321,8 @@ void kernel_neon_end(void)
}
EXPORT_SYMBOL(kernel_neon_end);
+#ifdef CONFIG_EFI
+
static DEFINE_PER_CPU(struct fpsimd_state, efi_fpsimd_state);
static DEFINE_PER_CPU(bool, efi_fpsimd_state_used);
@@ -370,6 +372,8 @@ void __efi_fpsimd_end(void)
kernel_neon_end();
}
+#endif /* CONFIG_EFI */
+
#endif /* CONFIG_KERNEL_MODE_NEON */
#ifdef CONFIG_CPU_PM
@@ -440,4 +444,4 @@ static int __init fpsimd_init(void)
return 0;
}
-late_initcall(fpsimd_init);
+core_initcall(fpsimd_init);
diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
index 7434ec0c7a27..0b243ecaf7ac 100644
--- a/arch/arm64/kernel/head.S
+++ b/arch/arm64/kernel/head.S
@@ -384,6 +384,7 @@ ENTRY(kimage_vaddr)
* booted in EL1 or EL2 respectively.
*/
ENTRY(el2_setup)
+ msr SPsel, #1 // We want to use SP_EL{1,2}
mrs x0, CurrentEL
cmp x0, #CurrentEL_EL2
b.eq 1f
diff --git a/arch/arm64/kernel/perf_regs.c b/arch/arm64/kernel/perf_regs.c
index bd1b74c2436f..1d091d048d04 100644
--- a/arch/arm64/kernel/perf_regs.c
+++ b/arch/arm64/kernel/perf_regs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/perf_event.h>
diff --git a/arch/arm64/kernel/probes/Makefile b/arch/arm64/kernel/probes/Makefile
index 89b6df613dde..8e4be92e25b1 100644
--- a/arch/arm64/kernel/probes/Makefile
+++ b/arch/arm64/kernel/probes/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_KPROBES) += kprobes.o decode-insn.o \
kprobes_trampoline.o \
simulate-insn.o
diff --git a/arch/arm64/kernel/probes/kprobes_trampoline.S b/arch/arm64/kernel/probes/kprobes_trampoline.S
index 5d6e7f14638c..45dce03aaeaf 100644
--- a/arch/arm64/kernel/probes/kprobes_trampoline.S
+++ b/arch/arm64/kernel/probes/kprobes_trampoline.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* trampoline entry and return code for kretprobes.
*/
diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c
index c45214f8fb54..0bdc96c61bc0 100644
--- a/arch/arm64/kernel/signal.c
+++ b/arch/arm64/kernel/signal.c
@@ -751,10 +751,10 @@ asmlinkage void do_notify_resume(struct pt_regs *regs,
*/
trace_hardirqs_off();
- /* Check valid user FS if needed */
- addr_limit_user_check();
-
do {
+ /* Check valid user FS if needed */
+ addr_limit_user_check();
+
if (thread_flags & _TIF_NEED_RESCHED) {
schedule();
} else {
diff --git a/arch/arm64/kernel/sleep.S b/arch/arm64/kernel/sleep.S
index df67652e46f0..10dd16d7902d 100644
--- a/arch/arm64/kernel/sleep.S
+++ b/arch/arm64/kernel/sleep.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/errno.h>
#include <linux/linkage.h>
#include <asm/asm-offsets.h>
diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c
index 3144584617e7..76809ccd309c 100644
--- a/arch/arm64/kernel/stacktrace.c
+++ b/arch/arm64/kernel/stacktrace.c
@@ -140,7 +140,8 @@ void save_stack_trace_regs(struct pt_regs *regs, struct stack_trace *trace)
trace->entries[trace->nr_entries++] = ULONG_MAX;
}
-void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
+static noinline void __save_stack_trace(struct task_struct *tsk,
+ struct stack_trace *trace, unsigned int nosched)
{
struct stack_trace_data data;
struct stackframe frame;
@@ -150,15 +151,16 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
data.trace = trace;
data.skip = trace->skip;
+ data.no_sched_functions = nosched;
if (tsk != current) {
- data.no_sched_functions = 1;
frame.fp = thread_saved_fp(tsk);
frame.pc = thread_saved_pc(tsk);
} else {
- data.no_sched_functions = 0;
+ /* We don't want this function nor the caller */
+ data.skip += 2;
frame.fp = (unsigned long)__builtin_frame_address(0);
- frame.pc = (unsigned long)save_stack_trace_tsk;
+ frame.pc = (unsigned long)__save_stack_trace;
}
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
frame.graph = tsk->curr_ret_stack;
@@ -172,9 +174,15 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
}
EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
+void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
+{
+ __save_stack_trace(tsk, trace, 1);
+}
+
void save_stack_trace(struct stack_trace *trace)
{
- save_stack_trace_tsk(current, trace);
+ __save_stack_trace(current, trace, 0);
}
+
EXPORT_SYMBOL_GPL(save_stack_trace);
#endif
diff --git a/arch/arm64/kernel/suspend.c b/arch/arm64/kernel/suspend.c
index 1e3be9064cfa..77cd655e6eb7 100644
--- a/arch/arm64/kernel/suspend.c
+++ b/arch/arm64/kernel/suspend.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ftrace.h>
#include <linux/percpu.h>
#include <linux/slab.h>
diff --git a/arch/arm64/kernel/trace-events-emulation.h b/arch/arm64/kernel/trace-events-emulation.h
index ae1dd598ea65..6c40f58b844a 100644
--- a/arch/arm64/kernel/trace-events-emulation.h
+++ b/arch/arm64/kernel/trace-events-emulation.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM emulation
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
index 5ea4b85aee0e..8383af15a759 100644
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -118,7 +118,7 @@ static void __dump_instr(const char *lvl, struct pt_regs *regs)
for (i = -4; i < 1; i++) {
unsigned int val, bad;
- bad = __get_user(val, &((u32 *)addr)[i]);
+ bad = get_user(val, &((u32 *)addr)[i]);
if (!bad)
p += sprintf(p, i == 0 ? "(%08x) " : "%08x ", val);
diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile
index 62c84f7cb01b..b215c712d897 100644
--- a/arch/arm64/kernel/vdso/Makefile
+++ b/arch/arm64/kernel/vdso/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Building a vDSO image for AArch64.
#
diff --git a/arch/arm64/kernel/vdso/gen_vdso_offsets.sh b/arch/arm64/kernel/vdso/gen_vdso_offsets.sh
index 01924ff071ad..0664acaf61ff 100755
--- a/arch/arm64/kernel/vdso/gen_vdso_offsets.sh
+++ b/arch/arm64/kernel/vdso/gen_vdso_offsets.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
#
# Match symbols in the DSO that look like VDSO_*; produce a header file
diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S
index fe56c268a7d9..7da3e5c366a0 100644
--- a/arch/arm64/kernel/vmlinux.lds.S
+++ b/arch/arm64/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ld script to make ARM Linux kernel
* taken from the i386 version by Russell King
diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig
index 52cb7ad9b2fd..13f81f971390 100644
--- a/arch/arm64/kvm/Kconfig
+++ b/arch/arm64/kvm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# KVM configuration
#
diff --git a/arch/arm64/kvm/Makefile b/arch/arm64/kvm/Makefile
index 5d9810086c25..861acbbac385 100644
--- a/arch/arm64/kvm/Makefile
+++ b/arch/arm64/kvm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Kernel-based Virtual Machine module
#
diff --git a/arch/arm64/kvm/hyp/Makefile b/arch/arm64/kvm/hyp/Makefile
index 14c4e3b14bcb..7c54d8fde855 100644
--- a/arch/arm64/kvm/hyp/Makefile
+++ b/arch/arm64/kvm/hyp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Kernel-based Virtual Machine module, HYP part
#
diff --git a/arch/arm64/kvm/trace.h b/arch/arm64/kvm/trace.h
index 5188c7007169..3b82fb1ddd09 100644
--- a/arch/arm64/kvm/trace.h
+++ b/arch/arm64/kvm/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_ARM64_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_ARM64_KVM_H
diff --git a/arch/arm64/lib/Makefile b/arch/arm64/lib/Makefile
index a0abc142c92b..9a8cb96555d6 100644
--- a/arch/arm64/lib/Makefile
+++ b/arch/arm64/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
lib-y := bitops.o clear_user.o delay.o copy_from_user.o \
copy_to_user.o copy_in_user.o copy_page.o \
clear_page.o memchr.o memcpy.o memmove.o memset.o \
diff --git a/arch/arm64/mm/Makefile b/arch/arm64/mm/Makefile
index 9b0ba191e48e..849c1df3d214 100644
--- a/arch/arm64/mm/Makefile
+++ b/arch/arm64/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y := dma-mapping.o extable.o fault.o init.o \
cache.o copypage.o flush.o \
ioremap.o mmap.o pgd.o mmu.o \
diff --git a/arch/arm64/mm/extable.c b/arch/arm64/mm/extable.c
index c9f118cd812b..81e694af5f8c 100644
--- a/arch/arm64/mm/extable.c
+++ b/arch/arm64/mm/extable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Based on arch/arm/mm/extable.c
*/
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index 89993c4be1be..b64958b23a7f 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -97,7 +97,7 @@ static void data_abort_decode(unsigned int esr)
(esr & ESR_ELx_SF) >> ESR_ELx_SF_SHIFT,
(esr & ESR_ELx_AR) >> ESR_ELx_AR_SHIFT);
} else {
- pr_alert(" ISV = 0, ISS = 0x%08lu\n", esr & ESR_ELx_ISS_MASK);
+ pr_alert(" ISV = 0, ISS = 0x%08lx\n", esr & ESR_ELx_ISS_MASK);
}
pr_alert(" CM = %lu, WnR = %lu\n",
@@ -651,7 +651,7 @@ static const struct fault_info fault_info[] = {
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "level 0 translation fault" },
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "level 1 translation fault" },
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "level 2 translation fault" },
- { do_page_fault, SIGSEGV, SEGV_MAPERR, "level 3 translation fault" },
+ { do_translation_fault, SIGSEGV, SEGV_MAPERR, "level 3 translation fault" },
{ do_bad, SIGBUS, 0, "unknown 8" },
{ do_page_fault, SIGSEGV, SEGV_ACCERR, "level 1 access flag fault" },
{ do_page_fault, SIGSEGV, SEGV_ACCERR, "level 2 access flag fault" },
diff --git a/arch/arm64/mm/physaddr.c b/arch/arm64/mm/physaddr.c
index 91371daf397c..67a9ba9eaa96 100644
--- a/arch/arm64/mm/physaddr.c
+++ b/arch/arm64/mm/physaddr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bug.h>
#include <linux/export.h>
#include <linux/types.h>
diff --git a/arch/arm64/mm/ptdump_debugfs.c b/arch/arm64/mm/ptdump_debugfs.c
index eee4d864350c..02b18f8b2905 100644
--- a/arch/arm64/mm/ptdump_debugfs.c
+++ b/arch/arm64/mm/ptdump_debugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/debugfs.h>
#include <linux/seq_file.h>
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
index 89bdb8264305..af5369422032 100644
--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config MMU
def_bool n
diff --git a/arch/blackfin/Kconfig.debug b/arch/blackfin/Kconfig.debug
index f3337ee03621..4ddd1b73ee3e 100644
--- a/arch/blackfin/Kconfig.debug
+++ b/arch/blackfin/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/blackfin/include/asm/clkdev.h b/arch/blackfin/include/asm/clkdev.h
index 7ac2436856a5..ded0209348c7 100644
--- a/arch/blackfin/include/asm/clkdev.h
+++ b/arch/blackfin/include/asm/clkdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CLKDEV__H_
#define __ASM_CLKDEV__H_
diff --git a/arch/blackfin/include/asm/pci.h b/arch/blackfin/include/asm/pci.h
index 11ea1cb35036..e6458ddbaf7e 100644
--- a/arch/blackfin/include/asm/pci.h
+++ b/arch/blackfin/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Changed from asm-m68k version, Lineo Inc. May 2001 */
#ifndef _ASM_BFIN_PCI_H
diff --git a/arch/blackfin/include/asm/rwlock.h b/arch/blackfin/include/asm/rwlock.h
index 4a724b378971..98ebc07cb283 100644
--- a/arch/blackfin/include/asm/rwlock.h
+++ b/arch/blackfin/include/asm/rwlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_BLACKFIN_RWLOCK_H
#define _ASM_BLACKFIN_RWLOCK_H
diff --git a/arch/blackfin/include/mach-common/ports-a.h b/arch/blackfin/include/mach-common/ports-a.h
index 9f78a761c40a..71bcd74f83fd 100644
--- a/arch/blackfin/include/mach-common/ports-a.h
+++ b/arch/blackfin/include/mach-common/ports-a.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Port A Masks
*/
diff --git a/arch/blackfin/include/mach-common/ports-b.h b/arch/blackfin/include/mach-common/ports-b.h
index b81702f09ec6..8013cc8e839b 100644
--- a/arch/blackfin/include/mach-common/ports-b.h
+++ b/arch/blackfin/include/mach-common/ports-b.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Port B Masks
*/
diff --git a/arch/blackfin/include/mach-common/ports-c.h b/arch/blackfin/include/mach-common/ports-c.h
index 3cc665e0ba08..94e71010ffe9 100644
--- a/arch/blackfin/include/mach-common/ports-c.h
+++ b/arch/blackfin/include/mach-common/ports-c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Port C Masks
*/
diff --git a/arch/blackfin/include/mach-common/ports-d.h b/arch/blackfin/include/mach-common/ports-d.h
index 868c6a01f1b2..ba84a9fb3450 100644
--- a/arch/blackfin/include/mach-common/ports-d.h
+++ b/arch/blackfin/include/mach-common/ports-d.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Port D Masks
*/
diff --git a/arch/blackfin/include/mach-common/ports-e.h b/arch/blackfin/include/mach-common/ports-e.h
index c88b0d0dd443..2264fb58bc2b 100644
--- a/arch/blackfin/include/mach-common/ports-e.h
+++ b/arch/blackfin/include/mach-common/ports-e.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Port E Masks
*/
diff --git a/arch/blackfin/include/mach-common/ports-f.h b/arch/blackfin/include/mach-common/ports-f.h
index d6af20633278..2b8ca3ae2a8e 100644
--- a/arch/blackfin/include/mach-common/ports-f.h
+++ b/arch/blackfin/include/mach-common/ports-f.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Port F Masks
*/
diff --git a/arch/blackfin/include/mach-common/ports-g.h b/arch/blackfin/include/mach-common/ports-g.h
index 09355d333c0e..11ad917fcf91 100644
--- a/arch/blackfin/include/mach-common/ports-g.h
+++ b/arch/blackfin/include/mach-common/ports-g.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Port G Masks
*/
diff --git a/arch/blackfin/include/mach-common/ports-h.h b/arch/blackfin/include/mach-common/ports-h.h
index fa3910c6fbd4..511d088b8094 100644
--- a/arch/blackfin/include/mach-common/ports-h.h
+++ b/arch/blackfin/include/mach-common/ports-h.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Port H Masks
*/
diff --git a/arch/blackfin/include/mach-common/ports-i.h b/arch/blackfin/include/mach-common/ports-i.h
index f176f08af624..21bbab166ae8 100644
--- a/arch/blackfin/include/mach-common/ports-i.h
+++ b/arch/blackfin/include/mach-common/ports-i.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Port I Masks
*/
diff --git a/arch/blackfin/include/mach-common/ports-j.h b/arch/blackfin/include/mach-common/ports-j.h
index 924123ecec5a..96a252b0b0bd 100644
--- a/arch/blackfin/include/mach-common/ports-j.h
+++ b/arch/blackfin/include/mach-common/ports-j.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Port J Masks
*/
diff --git a/arch/blackfin/include/uapi/asm/bfin_sport.h b/arch/blackfin/include/uapi/asm/bfin_sport.h
index c086de87ee61..86c36a208dc5 100644
--- a/arch/blackfin/include/uapi/asm/bfin_sport.h
+++ b/arch/blackfin/include/uapi/asm/bfin_sport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* bfin_sport.h - interface to Blackfin SPORTs
*
diff --git a/arch/blackfin/include/uapi/asm/byteorder.h b/arch/blackfin/include/uapi/asm/byteorder.h
index 3b125da5dcb2..bcab6670c7fe 100644
--- a/arch/blackfin/include/uapi/asm/byteorder.h
+++ b/arch/blackfin/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__BFIN_ASM_BYTEORDER_H
#define _UAPI__BFIN_ASM_BYTEORDER_H
diff --git a/arch/blackfin/include/uapi/asm/cachectl.h b/arch/blackfin/include/uapi/asm/cachectl.h
index 4fdab75dee15..b5c86fbbca94 100644
--- a/arch/blackfin/include/uapi/asm/cachectl.h
+++ b/arch/blackfin/include/uapi/asm/cachectl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* based on the mips/cachectl.h
*
diff --git a/arch/blackfin/include/uapi/asm/fcntl.h b/arch/blackfin/include/uapi/asm/fcntl.h
index f51ad9a4f617..0b02954f06c3 100644
--- a/arch/blackfin/include/uapi/asm/fcntl.h
+++ b/arch/blackfin/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2004-2008 Analog Devices Inc.
*
diff --git a/arch/blackfin/include/uapi/asm/fixed_code.h b/arch/blackfin/include/uapi/asm/fixed_code.h
index 3bef1dca379f..707b9214bb26 100644
--- a/arch/blackfin/include/uapi/asm/fixed_code.h
+++ b/arch/blackfin/include/uapi/asm/fixed_code.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* This file defines the fixed addresses where userspace programs
* can find atomic code sequences.
diff --git a/arch/blackfin/include/uapi/asm/ioctls.h b/arch/blackfin/include/uapi/asm/ioctls.h
index 9a41c20fc83d..422fee3e4776 100644
--- a/arch/blackfin/include/uapi/asm/ioctls.h
+++ b/arch/blackfin/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ARCH_BFIN_IOCTLS_H__
#define _UAPI__ARCH_BFIN_IOCTLS_H__
diff --git a/arch/blackfin/include/uapi/asm/poll.h b/arch/blackfin/include/uapi/asm/poll.h
index 99c7d6816da0..8b094d43e9b7 100644
--- a/arch/blackfin/include/uapi/asm/poll.h
+++ b/arch/blackfin/include/uapi/asm/poll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2004-2009 Analog Devices Inc.
*
diff --git a/arch/blackfin/include/uapi/asm/posix_types.h b/arch/blackfin/include/uapi/asm/posix_types.h
index 9608ef64dc47..8947c75cf638 100644
--- a/arch/blackfin/include/uapi/asm/posix_types.h
+++ b/arch/blackfin/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2004-2009 Analog Devices Inc.
*
diff --git a/arch/blackfin/include/uapi/asm/ptrace.h b/arch/blackfin/include/uapi/asm/ptrace.h
index fd48bd0739d2..e4423d5560da 100644
--- a/arch/blackfin/include/uapi/asm/ptrace.h
+++ b/arch/blackfin/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2004-2008 Analog Devices Inc.
*
diff --git a/arch/blackfin/include/uapi/asm/sigcontext.h b/arch/blackfin/include/uapi/asm/sigcontext.h
index b58f12dc27bd..66b4d32af89c 100644
--- a/arch/blackfin/include/uapi/asm/sigcontext.h
+++ b/arch/blackfin/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2004-2008 Analog Devices Inc.
*
diff --git a/arch/blackfin/include/uapi/asm/siginfo.h b/arch/blackfin/include/uapi/asm/siginfo.h
index 79dfe3979123..b1db506c8d2e 100644
--- a/arch/blackfin/include/uapi/asm/siginfo.h
+++ b/arch/blackfin/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2004-2008 Analog Devices Inc.
*
diff --git a/arch/blackfin/include/uapi/asm/signal.h b/arch/blackfin/include/uapi/asm/signal.h
index f0a0d8b6663a..f8e3b99ba0a2 100644
--- a/arch/blackfin/include/uapi/asm/signal.h
+++ b/arch/blackfin/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_BLACKFIN_SIGNAL_H
#define _UAPI_BLACKFIN_SIGNAL_H
diff --git a/arch/blackfin/include/uapi/asm/stat.h b/arch/blackfin/include/uapi/asm/stat.h
index d3068a750b94..458959d1a5ec 100644
--- a/arch/blackfin/include/uapi/asm/stat.h
+++ b/arch/blackfin/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2004-2006 Analog Devices Inc.
*
diff --git a/arch/blackfin/include/uapi/asm/swab.h b/arch/blackfin/include/uapi/asm/swab.h
index f5626b77684a..d3437933b95f 100644
--- a/arch/blackfin/include/uapi/asm/swab.h
+++ b/arch/blackfin/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2009 Analog Devices Inc.
*
diff --git a/arch/blackfin/include/uapi/asm/unistd.h b/arch/blackfin/include/uapi/asm/unistd.h
index 0cb9078ef482..2d392c09323c 100644
--- a/arch/blackfin/include/uapi/asm/unistd.h
+++ b/arch/blackfin/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2004-2009 Analog Devices Inc.
*
diff --git a/arch/blackfin/kernel/Makefile b/arch/blackfin/kernel/Makefile
index 703dc7cf2ecc..1580791f0e3a 100644
--- a/arch/blackfin/kernel/Makefile
+++ b/arch/blackfin/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/blackfin/kernel/Makefile
#
diff --git a/arch/blackfin/kernel/cplb-nompu/Makefile b/arch/blackfin/kernel/cplb-nompu/Makefile
index 394d0b1b28fe..81baa27bc389 100644
--- a/arch/blackfin/kernel/cplb-nompu/Makefile
+++ b/arch/blackfin/kernel/cplb-nompu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/blackfin/kernel/cplb-nompu/Makefile
#
diff --git a/arch/blackfin/lib/Makefile b/arch/blackfin/lib/Makefile
index 42c47dc9e12f..74ddde0eb2e7 100644
--- a/arch/blackfin/lib/Makefile
+++ b/arch/blackfin/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/blackfin/lib/Makefile
#
diff --git a/arch/blackfin/mach-bf518/Kconfig b/arch/blackfin/mach-bf518/Kconfig
index bde92a19970e..4731f6b27e47 100644
--- a/arch/blackfin/mach-bf518/Kconfig
+++ b/arch/blackfin/mach-bf518/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config BF51x
def_bool y
depends on (BF512 || BF514 || BF516 || BF518)
diff --git a/arch/blackfin/mach-bf518/boards/Kconfig b/arch/blackfin/mach-bf518/boards/Kconfig
index 252261ec04c4..f7b93b950ef4 100644
--- a/arch/blackfin/mach-bf518/boards/Kconfig
+++ b/arch/blackfin/mach-bf518/boards/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "System type"
default BFIN518F_EZBRD
diff --git a/arch/blackfin/mach-bf527/Kconfig b/arch/blackfin/mach-bf527/Kconfig
index 0ba54701af0b..6df20f9c7bd4 100644
--- a/arch/blackfin/mach-bf527/Kconfig
+++ b/arch/blackfin/mach-bf527/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config BF52x
def_bool y
depends on (BF522 || BF523 || BF524 || BF525 || BF526 || BF527)
diff --git a/arch/blackfin/mach-bf527/boards/Kconfig b/arch/blackfin/mach-bf527/boards/Kconfig
index 1cc2667c10f1..a76f02fae11c 100644
--- a/arch/blackfin/mach-bf527/boards/Kconfig
+++ b/arch/blackfin/mach-bf527/boards/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "System type"
default BFIN527_EZKIT
diff --git a/arch/blackfin/mach-bf527/boards/Makefile b/arch/blackfin/mach-bf527/boards/Makefile
index 1d67da9f05ac..6ada1537e20a 100644
--- a/arch/blackfin/mach-bf527/boards/Makefile
+++ b/arch/blackfin/mach-bf527/boards/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/blackfin/mach-bf527/boards/Makefile
#
diff --git a/arch/blackfin/mach-bf533/Kconfig b/arch/blackfin/mach-bf533/Kconfig
index 4c572443147e..4e1a05be7137 100644
--- a/arch/blackfin/mach-bf533/Kconfig
+++ b/arch/blackfin/mach-bf533/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if (BF533 || BF532 || BF531)
source "arch/blackfin/mach-bf533/boards/Kconfig"
diff --git a/arch/blackfin/mach-bf533/boards/Kconfig b/arch/blackfin/mach-bf533/boards/Kconfig
index 8d8b3e7321e6..3fde0df1b5f2 100644
--- a/arch/blackfin/mach-bf533/boards/Kconfig
+++ b/arch/blackfin/mach-bf533/boards/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "System type"
default BFIN533_STAMP
diff --git a/arch/blackfin/mach-bf533/boards/Makefile b/arch/blackfin/mach-bf533/boards/Makefile
index ff1e832f80d2..35256d2fc040 100644
--- a/arch/blackfin/mach-bf533/boards/Makefile
+++ b/arch/blackfin/mach-bf533/boards/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/blackfin/mach-bf533/boards/Makefile
#
diff --git a/arch/blackfin/mach-bf537/Kconfig b/arch/blackfin/mach-bf537/Kconfig
index 08b2b343ccec..1d69b043afd4 100644
--- a/arch/blackfin/mach-bf537/Kconfig
+++ b/arch/blackfin/mach-bf537/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if (BF537 || BF534 || BF536)
source "arch/blackfin/mach-bf537/boards/Kconfig"
diff --git a/arch/blackfin/mach-bf537/boards/Kconfig b/arch/blackfin/mach-bf537/boards/Kconfig
index a44bf3a1816e..60b7b29e512e 100644
--- a/arch/blackfin/mach-bf537/boards/Kconfig
+++ b/arch/blackfin/mach-bf537/boards/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "System type"
default BFIN537_STAMP
diff --git a/arch/blackfin/mach-bf537/boards/Makefile b/arch/blackfin/mach-bf537/boards/Makefile
index fe42258fe1f4..47a1acc5f389 100644
--- a/arch/blackfin/mach-bf537/boards/Makefile
+++ b/arch/blackfin/mach-bf537/boards/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/blackfin/mach-bf537/boards/Makefile
#
diff --git a/arch/blackfin/mach-bf538/Kconfig b/arch/blackfin/mach-bf538/Kconfig
index 2d280f504ab0..4aea85e4e5cf 100644
--- a/arch/blackfin/mach-bf538/Kconfig
+++ b/arch/blackfin/mach-bf538/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if (BF538 || BF539)
source "arch/blackfin/mach-bf538/boards/Kconfig"
diff --git a/arch/blackfin/mach-bf538/boards/Kconfig b/arch/blackfin/mach-bf538/boards/Kconfig
index 215249ba58bb..114cff440d43 100644
--- a/arch/blackfin/mach-bf538/boards/Kconfig
+++ b/arch/blackfin/mach-bf538/boards/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "System type"
default BFIN538_EZKIT
diff --git a/arch/blackfin/mach-bf548/Kconfig b/arch/blackfin/mach-bf548/Kconfig
index 334ec7b12188..71c2a765af1d 100644
--- a/arch/blackfin/mach-bf548/Kconfig
+++ b/arch/blackfin/mach-bf548/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config BF542
def_bool y
depends on BF542_std || BF542M
diff --git a/arch/blackfin/mach-bf548/boards/Kconfig b/arch/blackfin/mach-bf548/boards/Kconfig
index d38e52671853..e8ce579ae8f0 100644
--- a/arch/blackfin/mach-bf548/boards/Kconfig
+++ b/arch/blackfin/mach-bf548/boards/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "System type"
default BFIN548_EZKIT
diff --git a/arch/blackfin/mach-bf561/Kconfig b/arch/blackfin/mach-bf561/Kconfig
index cb9743641511..059c3cbdb5ec 100644
--- a/arch/blackfin/mach-bf561/Kconfig
+++ b/arch/blackfin/mach-bf561/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if (BF561)
source "arch/blackfin/mach-bf561/boards/Kconfig"
diff --git a/arch/blackfin/mach-bf561/boards/Kconfig b/arch/blackfin/mach-bf561/boards/Kconfig
index 1aa529b9f8bb..10e977b56710 100644
--- a/arch/blackfin/mach-bf561/boards/Kconfig
+++ b/arch/blackfin/mach-bf561/boards/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "System type"
default BFIN561_EZKIT
diff --git a/arch/blackfin/mach-bf609/Kconfig b/arch/blackfin/mach-bf609/Kconfig
index 6584190faeb8..7d6a8b8926ba 100644
--- a/arch/blackfin/mach-bf609/Kconfig
+++ b/arch/blackfin/mach-bf609/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config BF60x
def_bool y
depends on (BF609)
diff --git a/arch/blackfin/mach-bf609/boards/Kconfig b/arch/blackfin/mach-bf609/boards/Kconfig
index 30e8b6b0d2ed..350154b2a3ee 100644
--- a/arch/blackfin/mach-bf609/boards/Kconfig
+++ b/arch/blackfin/mach-bf609/boards/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "System type"
default BFIN609_EZKIT
diff --git a/arch/blackfin/mach-bf609/clock.c b/arch/blackfin/mach-bf609/clock.c
index 392a59b9a504..16e0b09e2197 100644
--- a/arch/blackfin/mach-bf609/clock.c
+++ b/arch/blackfin/mach-bf609/clock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/list.h>
diff --git a/arch/blackfin/mach-bf609/dpm.S b/arch/blackfin/mach-bf609/dpm.S
index 54d50c689db1..fcb8f688a8b2 100644
--- a/arch/blackfin/mach-bf609/dpm.S
+++ b/arch/blackfin/mach-bf609/dpm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/blackfin.h>
#include <asm/dpmc.h>
diff --git a/arch/blackfin/mach-common/Makefile b/arch/blackfin/mach-common/Makefile
index f09979204040..fcef1c8e117f 100644
--- a/arch/blackfin/mach-common/Makefile
+++ b/arch/blackfin/mach-common/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/blackfin/mach-common/Makefile
#
diff --git a/arch/blackfin/mach-common/clock.h b/arch/blackfin/mach-common/clock.h
index 645ff460a1f2..fed851a51aaf 100644
--- a/arch/blackfin/mach-common/clock.h
+++ b/arch/blackfin/mach-common/clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_COMMON_CLKDEV_H
#define __MACH_COMMON_CLKDEV_H
diff --git a/arch/blackfin/oprofile/Makefile b/arch/blackfin/oprofile/Makefile
index c70af3a01297..e89e1c9f3496 100644
--- a/arch/blackfin/oprofile/Makefile
+++ b/arch/blackfin/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/blackfin/oprofile/Makefile
#
diff --git a/arch/c6x/Kconfig b/arch/c6x/Kconfig
index 5aa8ea8bad2d..c6b4dd1418b4 100644
--- a/arch/c6x/Kconfig
+++ b/arch/c6x/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
diff --git a/arch/c6x/boot/Makefile b/arch/c6x/boot/Makefile
index 8734abee548e..842b7b0bfe80 100644
--- a/arch/c6x/boot/Makefile
+++ b/arch/c6x/boot/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for bootable kernel images
#
diff --git a/arch/c6x/boot/dts/Makefile b/arch/c6x/boot/dts/Makefile
index c7528b02d061..7368838c6e71 100644
--- a/arch/c6x/boot/dts/Makefile
+++ b/arch/c6x/boot/dts/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for device trees
#
diff --git a/arch/c6x/boot/dts/tms320c6455.dtsi b/arch/c6x/boot/dts/tms320c6455.dtsi
index a804ec1e018b..0b21cb30343b 100644
--- a/arch/c6x/boot/dts/tms320c6455.dtsi
+++ b/arch/c6x/boot/dts/tms320c6455.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
diff --git a/arch/c6x/boot/dts/tms320c6457.dtsi b/arch/c6x/boot/dts/tms320c6457.dtsi
index 35f40709a719..e49f7ae19124 100644
--- a/arch/c6x/boot/dts/tms320c6457.dtsi
+++ b/arch/c6x/boot/dts/tms320c6457.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
diff --git a/arch/c6x/boot/dts/tms320c6472.dtsi b/arch/c6x/boot/dts/tms320c6472.dtsi
index b488aaec65c0..9dd4b04e78ef 100644
--- a/arch/c6x/boot/dts/tms320c6472.dtsi
+++ b/arch/c6x/boot/dts/tms320c6472.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
diff --git a/arch/c6x/boot/dts/tms320c6474.dtsi b/arch/c6x/boot/dts/tms320c6474.dtsi
index cc601bf348a1..0ef5333629a6 100644
--- a/arch/c6x/boot/dts/tms320c6474.dtsi
+++ b/arch/c6x/boot/dts/tms320c6474.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
diff --git a/arch/c6x/boot/dts/tms320c6678.dtsi b/arch/c6x/boot/dts/tms320c6678.dtsi
index 386196e5eae7..da1e3f2bf062 100644
--- a/arch/c6x/boot/dts/tms320c6678.dtsi
+++ b/arch/c6x/boot/dts/tms320c6678.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
diff --git a/arch/c6x/include/asm/flat.h b/arch/c6x/include/asm/flat.h
index 6f1feb00bd52..76fd0bb962a3 100644
--- a/arch/c6x/include/asm/flat.h
+++ b/arch/c6x/include/asm/flat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_C6X_FLAT_H
#define __ASM_C6X_FLAT_H
diff --git a/arch/c6x/include/asm/linkage.h b/arch/c6x/include/asm/linkage.h
index 376925c47d57..1ad615da6479 100644
--- a/arch/c6x/include/asm/linkage.h
+++ b/arch/c6x/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_C6X_LINKAGE_H
#define _ASM_C6X_LINKAGE_H
diff --git a/arch/c6x/include/asm/megamod-pic.h b/arch/c6x/include/asm/megamod-pic.h
index eca0a8678034..a0a6d596bf9b 100644
--- a/arch/c6x/include/asm/megamod-pic.h
+++ b/arch/c6x/include/asm/megamod-pic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _C6X_MEGAMOD_PIC_H
#define _C6X_MEGAMOD_PIC_H
diff --git a/arch/c6x/include/asm/page.h b/arch/c6x/include/asm/page.h
index d18e2b0c7aea..70db1e7632bc 100644
--- a/arch/c6x/include/asm/page.h
+++ b/arch/c6x/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_C6X_PAGE_H
#define _ASM_C6X_PAGE_H
diff --git a/arch/c6x/include/asm/processor.h b/arch/c6x/include/asm/processor.h
index 7c87b5be53b5..8f7cce829f8e 100644
--- a/arch/c6x/include/asm/processor.h
+++ b/arch/c6x/include/asm/processor.h
@@ -92,9 +92,6 @@ static inline void release_thread(struct task_struct *dead_task)
{
}
-#define copy_segments(tsk, mm) do { } while (0)
-#define release_segments(mm) do { } while (0)
-
/*
* saved kernel SP and DP of a blocked thread.
*/
diff --git a/arch/c6x/include/asm/sections.h b/arch/c6x/include/asm/sections.h
index f703989d837a..d6c591ab5b7e 100644
--- a/arch/c6x/include/asm/sections.h
+++ b/arch/c6x/include/asm/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_C6X_SECTIONS_H
#define _ASM_C6X_SECTIONS_H
diff --git a/arch/c6x/include/asm/timer64.h b/arch/c6x/include/asm/timer64.h
index bbe27bb9887e..b850dfef1f79 100644
--- a/arch/c6x/include/asm/timer64.h
+++ b/arch/c6x/include/asm/timer64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _C6X_TIMER64_H
#define _C6X_TIMER64_H
diff --git a/arch/c6x/include/asm/tlb.h b/arch/c6x/include/asm/tlb.h
index 8709e5e29d2d..34525dea1356 100644
--- a/arch/c6x/include/asm/tlb.h
+++ b/arch/c6x/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_C6X_TLB_H
#define _ASM_C6X_TLB_H
diff --git a/arch/c6x/include/uapi/asm/byteorder.h b/arch/c6x/include/uapi/asm/byteorder.h
index 166038db342b..ab61f867391c 100644
--- a/arch/c6x/include/uapi/asm/byteorder.h
+++ b/arch/c6x/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_C6X_BYTEORDER_H
#define _ASM_C6X_BYTEORDER_H
diff --git a/arch/c6x/include/uapi/asm/ptrace.h b/arch/c6x/include/uapi/asm/ptrace.h
index cc0a4d99151e..9b51110a0842 100644
--- a/arch/c6x/include/uapi/asm/ptrace.h
+++ b/arch/c6x/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2004, 2006, 2009, 2010 Texas Instruments Incorporated
* Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com)
diff --git a/arch/c6x/include/uapi/asm/setup.h b/arch/c6x/include/uapi/asm/setup.h
index ad9ac97a8dad..e90548cebec3 100644
--- a/arch/c6x/include/uapi/asm/setup.h
+++ b/arch/c6x/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_C6X_SETUP_H
#define _UAPI_ASM_C6X_SETUP_H
diff --git a/arch/c6x/include/uapi/asm/sigcontext.h b/arch/c6x/include/uapi/asm/sigcontext.h
index eb702f39cde7..4e5a9a260861 100644
--- a/arch/c6x/include/uapi/asm/sigcontext.h
+++ b/arch/c6x/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Port on Texas Instruments TMS320C6x architecture
*
diff --git a/arch/c6x/include/uapi/asm/swab.h b/arch/c6x/include/uapi/asm/swab.h
index fd4bb0520e5e..c407c0497718 100644
--- a/arch/c6x/include/uapi/asm/swab.h
+++ b/arch/c6x/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2011 Texas Instruments Incorporated
* Author: Mark Salter <msalter@redhat.com>
diff --git a/arch/c6x/include/uapi/asm/unistd.h b/arch/c6x/include/uapi/asm/unistd.h
index 12d73d9d81f5..0d2daf7f9809 100644
--- a/arch/c6x/include/uapi/asm/unistd.h
+++ b/arch/c6x/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2011 Texas Instruments Incorporated
*
diff --git a/arch/c6x/kernel/Makefile b/arch/c6x/kernel/Makefile
index 580a515a9443..02f340d7b8fe 100644
--- a/arch/c6x/kernel/Makefile
+++ b/arch/c6x/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for arch/c6x/kernel/
#
diff --git a/arch/c6x/kernel/asm-offsets.c b/arch/c6x/kernel/asm-offsets.c
index 60f1e437745d..cff57764fcad 100644
--- a/arch/c6x/kernel/asm-offsets.c
+++ b/arch/c6x/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generate definitions needed by assembly language modules.
* This code generates raw asm output which is post-processed
diff --git a/arch/c6x/kernel/vmlinux.lds.S b/arch/c6x/kernel/vmlinux.lds.S
index 29ebea49ddd5..1fba5b421eee 100644
--- a/arch/c6x/kernel/vmlinux.lds.S
+++ b/arch/c6x/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ld script for the c6x kernel
*
diff --git a/arch/c6x/platforms/Kconfig b/arch/c6x/platforms/Kconfig
index c4a0fad89aaf..f3a9ae6e0e82 100644
--- a/arch/c6x/platforms/Kconfig
+++ b/arch/c6x/platforms/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config SOC_TMS320C6455
bool "TMS320C6455"
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
index 71b758dc3a96..54d3f426763b 100644
--- a/arch/cris/Kconfig
+++ b/arch/cris/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config MMU
bool
default y
diff --git a/arch/cris/Kconfig.debug b/arch/cris/Kconfig.debug
index 14881e81e8a3..6084d5e0c512 100644
--- a/arch/cris/Kconfig.debug
+++ b/arch/cris/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
config PROFILING
diff --git a/arch/cris/arch-v10/Kconfig b/arch/cris/arch-v10/Kconfig
index df9a38b4f18f..d4015a931374 100644
--- a/arch/cris/arch-v10/Kconfig
+++ b/arch/cris/arch-v10/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ETRAX_ARCH_V10
menu "CRIS v10 options"
diff --git a/arch/cris/arch-v10/drivers/Kconfig b/arch/cris/arch-v10/drivers/Kconfig
index 239dab0b95c1..8792af63c049 100644
--- a/arch/cris/arch-v10/drivers/Kconfig
+++ b/arch/cris/arch-v10/drivers/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ETRAX_ARCH_V10
config ETRAX_ETHERNET
diff --git a/arch/cris/arch-v10/drivers/Makefile b/arch/cris/arch-v10/drivers/Makefile
index e5c13183b97c..d5549dca81bf 100644
--- a/arch/cris/arch-v10/drivers/Makefile
+++ b/arch/cris/arch-v10/drivers/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Etrax-specific drivers
#
diff --git a/arch/cris/arch-v10/drivers/eeprom.c b/arch/cris/arch-v10/drivers/eeprom.c
index 33558d270a53..2d312c8a4dd5 100644
--- a/arch/cris/arch-v10/drivers/eeprom.c
+++ b/arch/cris/arch-v10/drivers/eeprom.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*!*****************************************************************************
*!
*! Implements an interface for i2c compatible eeproms to run under Linux.
diff --git a/arch/cris/arch-v10/drivers/gpio.c b/arch/cris/arch-v10/drivers/gpio.c
index dfd3b3ba5e4e..68dbe261dc57 100644
--- a/arch/cris/arch-v10/drivers/gpio.c
+++ b/arch/cris/arch-v10/drivers/gpio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Etrax general port I/O device
*
diff --git a/arch/cris/arch-v10/drivers/i2c.c b/arch/cris/arch-v10/drivers/i2c.c
index b3d1f9ed1b98..ec35d62e8e63 100644
--- a/arch/cris/arch-v10/drivers/i2c.c
+++ b/arch/cris/arch-v10/drivers/i2c.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*!***************************************************************************
*!
*! FILE NAME : i2c.c
diff --git a/arch/cris/arch-v10/drivers/i2c.h b/arch/cris/arch-v10/drivers/i2c.h
index e36c96276478..de45c1ffbd7b 100644
--- a/arch/cris/arch-v10/drivers/i2c.h
+++ b/arch/cris/arch-v10/drivers/i2c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* i2c.h */
int i2c_init(void);
diff --git a/arch/cris/arch-v10/drivers/sync_serial.c b/arch/cris/arch-v10/drivers/sync_serial.c
index cc62572c1b94..cfe9176f2205 100644
--- a/arch/cris/arch-v10/drivers/sync_serial.c
+++ b/arch/cris/arch-v10/drivers/sync_serial.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Simple synchronous serial port driver for ETRAX 100LX.
*
diff --git a/arch/cris/arch-v10/kernel/Makefile b/arch/cris/arch-v10/kernel/Makefile
index 4841e822cdd1..7ec04b4a285e 100644
--- a/arch/cris/arch-v10/kernel/Makefile
+++ b/arch/cris/arch-v10/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/cris/arch-v10/kernel/crisksyms.c b/arch/cris/arch-v10/kernel/crisksyms.c
index 1ca6fc283232..e1d897ed5b37 100644
--- a/arch/cris/arch-v10/kernel/crisksyms.c
+++ b/arch/cris/arch-v10/kernel/crisksyms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <asm/io.h>
#include <arch/svinto.h>
diff --git a/arch/cris/arch-v10/kernel/debugport.c b/arch/cris/arch-v10/kernel/debugport.c
index b6549e54be29..d30834d4dd7e 100644
--- a/arch/cris/arch-v10/kernel/debugport.c
+++ b/arch/cris/arch-v10/kernel/debugport.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Serialport functions for debugging
*
* Copyright (c) 2000-2007 Axis Communications AB
diff --git a/arch/cris/arch-v10/kernel/dma.c b/arch/cris/arch-v10/kernel/dma.c
index 5795047359b2..c68e978def05 100644
--- a/arch/cris/arch-v10/kernel/dma.c
+++ b/arch/cris/arch-v10/kernel/dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Wrapper for DMA channel allocator that updates DMA client muxing.
* Copyright 2004-2007, Axis Communications AB
*/
diff --git a/arch/cris/arch-v10/kernel/entry.S b/arch/cris/arch-v10/kernel/entry.S
index b5622521dad5..1f066eebbd2b 100644
--- a/arch/cris/arch-v10/kernel/entry.S
+++ b/arch/cris/arch-v10/kernel/entry.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/cris/entry.S
*
diff --git a/arch/cris/arch-v10/kernel/fasttimer.c b/arch/cris/arch-v10/kernel/fasttimer.c
index e9298739d72e..94abbff557ff 100644
--- a/arch/cris/arch-v10/kernel/fasttimer.c
+++ b/arch/cris/arch-v10/kernel/fasttimer.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/kernel/fasttimer.c
*
diff --git a/arch/cris/arch-v10/kernel/head.S b/arch/cris/arch-v10/kernel/head.S
index a74aa233b84e..b260a8833903 100644
--- a/arch/cris/arch-v10/kernel/head.S
+++ b/arch/cris/arch-v10/kernel/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Head of the kernel - alter with care
*
diff --git a/arch/cris/arch-v10/kernel/io_interface_mux.c b/arch/cris/arch-v10/kernel/io_interface_mux.c
index ad64cd1c861a..13a887ce115a 100644
--- a/arch/cris/arch-v10/kernel/io_interface_mux.c
+++ b/arch/cris/arch-v10/kernel/io_interface_mux.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* IO interface mux allocator for ETRAX100LX.
* Copyright 2004-2007, Axis Communications AB
*/
diff --git a/arch/cris/arch-v10/kernel/irq.c b/arch/cris/arch-v10/kernel/irq.c
index 09cae80a834a..df11e383acdd 100644
--- a/arch/cris/arch-v10/kernel/irq.c
+++ b/arch/cris/arch-v10/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/kernel/irq.c
*
diff --git a/arch/cris/arch-v10/kernel/kgdb.c b/arch/cris/arch-v10/kernel/kgdb.c
index ed71ade93a73..79b13564d15c 100644
--- a/arch/cris/arch-v10/kernel/kgdb.c
+++ b/arch/cris/arch-v10/kernel/kgdb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*!**************************************************************************
*!
*! FILE NAME : kgdb.c
diff --git a/arch/cris/arch-v10/kernel/process.c b/arch/cris/arch-v10/kernel/process.c
index a2cdb1521aca..16848b2c61c8 100644
--- a/arch/cris/arch-v10/kernel/process.c
+++ b/arch/cris/arch-v10/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/kernel/process.c
*
diff --git a/arch/cris/arch-v10/kernel/ptrace.c b/arch/cris/arch-v10/kernel/ptrace.c
index c2f2b9b83cc4..b89f57ae096e 100644
--- a/arch/cris/arch-v10/kernel/ptrace.c
+++ b/arch/cris/arch-v10/kernel/ptrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2000-2003, Axis Communications AB.
*/
diff --git a/arch/cris/arch-v10/kernel/setup.c b/arch/cris/arch-v10/kernel/setup.c
index 7ab31f1c7540..8e4fc248f96f 100644
--- a/arch/cris/arch-v10/kernel/setup.c
+++ b/arch/cris/arch-v10/kernel/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
*
* linux/arch/cris/arch-v10/kernel/setup.c
diff --git a/arch/cris/arch-v10/kernel/shadows.c b/arch/cris/arch-v10/kernel/shadows.c
index 2454a0b02f54..2e9565e868f2 100644
--- a/arch/cris/arch-v10/kernel/shadows.c
+++ b/arch/cris/arch-v10/kernel/shadows.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Various shadow registers. Defines for these are in include/asm-etrax100/io.h
*/
diff --git a/arch/cris/arch-v10/kernel/signal.c b/arch/cris/arch-v10/kernel/signal.c
index bab4a8dd6bfd..2beffc37faf8 100644
--- a/arch/cris/arch-v10/kernel/signal.c
+++ b/arch/cris/arch-v10/kernel/signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/kernel/signal.c
*
diff --git a/arch/cris/arch-v10/kernel/time.c b/arch/cris/arch-v10/kernel/time.c
index b5eb5cd2f60b..3d78373db254 100644
--- a/arch/cris/arch-v10/kernel/time.c
+++ b/arch/cris/arch-v10/kernel/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/arch-v10/kernel/time.c
*
diff --git a/arch/cris/arch-v10/kernel/traps.c b/arch/cris/arch-v10/kernel/traps.c
index c0a501f29bd8..876d45b957f4 100644
--- a/arch/cris/arch-v10/kernel/traps.c
+++ b/arch/cris/arch-v10/kernel/traps.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Helper functions for trap handlers
*
diff --git a/arch/cris/arch-v10/lib/checksum.S b/arch/cris/arch-v10/lib/checksum.S
index 7d552f4bd5ae..a3b96391706f 100644
--- a/arch/cris/arch-v10/lib/checksum.S
+++ b/arch/cris/arch-v10/lib/checksum.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* A fast checksum routine using movem
* Copyright (c) 1998-2001 Axis Communications AB
diff --git a/arch/cris/arch-v10/lib/checksumcopy.S b/arch/cris/arch-v10/lib/checksumcopy.S
index 540db8a5f849..b21449cb1ad3 100644
--- a/arch/cris/arch-v10/lib/checksumcopy.S
+++ b/arch/cris/arch-v10/lib/checksumcopy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* A fast checksum+copy routine using movem
* Copyright (c) 1998, 2001 Axis Communications AB
diff --git a/arch/cris/arch-v10/lib/csumcpfruser.S b/arch/cris/arch-v10/lib/csumcpfruser.S
index 5f41ccd62754..beb8992ed478 100644
--- a/arch/cris/arch-v10/lib/csumcpfruser.S
+++ b/arch/cris/arch-v10/lib/csumcpfruser.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Add-on to transform csum_partial_copy_nocheck in checksumcopy.S into
* csum_partial_copy_from_user by adding exception records.
diff --git a/arch/cris/arch-v10/lib/dram_init.S b/arch/cris/arch-v10/lib/dram_init.S
index 93310124333f..fd7437577938 100644
--- a/arch/cris/arch-v10/lib/dram_init.S
+++ b/arch/cris/arch-v10/lib/dram_init.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* DRAM/SDRAM initialization - alter with care
* This file is intended to be included from other assembler files
diff --git a/arch/cris/arch-v10/lib/hw_settings.S b/arch/cris/arch-v10/lib/hw_settings.S
index c09f19f478a5..0d449852517e 100644
--- a/arch/cris/arch-v10/lib/hw_settings.S
+++ b/arch/cris/arch-v10/lib/hw_settings.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This table is used by some tools to extract hardware parameters.
* The table should be included in the kernel and the decompressor.
diff --git a/arch/cris/arch-v10/lib/usercopy.c b/arch/cris/arch-v10/lib/usercopy.c
index 48fa37fe0f9b..3f1e2f4680f7 100644
--- a/arch/cris/arch-v10/lib/usercopy.c
+++ b/arch/cris/arch-v10/lib/usercopy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* User address space access functions.
* The non-inlined parts of asm-cris/uaccess.h are here.
diff --git a/arch/cris/arch-v10/mm/fault.c b/arch/cris/arch-v10/mm/fault.c
index 75210cbe61ce..e6c225169642 100644
--- a/arch/cris/arch-v10/mm/fault.c
+++ b/arch/cris/arch-v10/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/mm/fault.c
*
diff --git a/arch/cris/arch-v10/mm/init.c b/arch/cris/arch-v10/mm/init.c
index 85e3f1b1f3ac..4da99a0e3b57 100644
--- a/arch/cris/arch-v10/mm/init.c
+++ b/arch/cris/arch-v10/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/arch-v10/mm/init.c
*
diff --git a/arch/cris/arch-v10/mm/tlb.c b/arch/cris/arch-v10/mm/tlb.c
index 3225d38bdaea..7f1f752f2445 100644
--- a/arch/cris/arch-v10/mm/tlb.c
+++ b/arch/cris/arch-v10/mm/tlb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/arch-v10/mm/tlb.c
*
diff --git a/arch/cris/arch-v32/Kconfig b/arch/cris/arch-v32/Kconfig
index 17dbe03af5f4..958dabfca7eb 100644
--- a/arch/cris/arch-v32/Kconfig
+++ b/arch/cris/arch-v32/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ETRAX_ARCH_V32
source arch/cris/arch-v32/mach-fs/Kconfig
diff --git a/arch/cris/arch-v32/drivers/Kconfig b/arch/cris/arch-v32/drivers/Kconfig
index b7cd6b9209a9..4d2d744bced2 100644
--- a/arch/cris/arch-v32/drivers/Kconfig
+++ b/arch/cris/arch-v32/drivers/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ETRAX_ARCH_V32
config ETRAX_ETHERNET
diff --git a/arch/cris/arch-v32/drivers/Makefile b/arch/cris/arch-v32/drivers/Makefile
index b5a75fdce77b..57c9568707b0 100644
--- a/arch/cris/arch-v32/drivers/Makefile
+++ b/arch/cris/arch-v32/drivers/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Etrax-specific drivers
#
diff --git a/arch/cris/arch-v32/drivers/cryptocop.c b/arch/cris/arch-v32/drivers/cryptocop.c
index 14970f11bbf2..d688fe117dca 100644
--- a/arch/cris/arch-v32/drivers/cryptocop.c
+++ b/arch/cris/arch-v32/drivers/cryptocop.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Stream co-processor driver for the ETRAX FS
*
diff --git a/arch/cris/arch-v32/drivers/pci/bios.c b/arch/cris/arch-v32/drivers/pci/bios.c
index 5cc622c0225e..6b9e6cfaa29e 100644
--- a/arch/cris/arch-v32/drivers/pci/bios.c
+++ b/arch/cris/arch-v32/drivers/pci/bios.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/pci.h>
#include <linux/kernel.h>
#include <hwregs/intr_vect.h>
diff --git a/arch/cris/arch-v32/drivers/pci/dma.c b/arch/cris/arch-v32/drivers/pci/dma.c
index 7072341995ff..dbbd3816cc0b 100644
--- a/arch/cris/arch-v32/drivers/pci/dma.c
+++ b/arch/cris/arch-v32/drivers/pci/dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Dynamic DMA mapping support.
*
diff --git a/arch/cris/arch-v32/kernel/Makefile b/arch/cris/arch-v32/kernel/Makefile
index d9fc617ea253..2db7e4f7c1fa 100644
--- a/arch/cris/arch-v32/kernel/Makefile
+++ b/arch/cris/arch-v32/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/cris/arch-v32/kernel/cache.c b/arch/cris/arch-v32/kernel/cache.c
index f38433b1f861..a080d2fa4803 100644
--- a/arch/cris/arch-v32/kernel/cache.c
+++ b/arch/cris/arch-v32/kernel/cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <asm/io.h>
#include <arch/cache.h>
diff --git a/arch/cris/arch-v32/kernel/cacheflush.S b/arch/cris/arch-v32/kernel/cacheflush.S
index 6fc3d95d7029..2a54d793f96c 100644
--- a/arch/cris/arch-v32/kernel/cacheflush.S
+++ b/arch/cris/arch-v32/kernel/cacheflush.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.global cris_flush_cache_range
.type cris_flush_cache_range, @function
cris_flush_cache_range:
diff --git a/arch/cris/arch-v32/kernel/crisksyms.c b/arch/cris/arch-v32/kernel/crisksyms.c
index b0566350a840..8cc8ad1cb532 100644
--- a/arch/cris/arch-v32/kernel/crisksyms.c
+++ b/arch/cris/arch-v32/kernel/crisksyms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/irq.h>
#include <arch/dma.h>
diff --git a/arch/cris/arch-v32/kernel/debugport.c b/arch/cris/arch-v32/kernel/debugport.c
index d2f3f9c37102..69247fd2090a 100644
--- a/arch/cris/arch-v32/kernel/debugport.c
+++ b/arch/cris/arch-v32/kernel/debugport.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2003, Axis Communications AB.
*/
diff --git a/arch/cris/arch-v32/kernel/entry.S b/arch/cris/arch-v32/kernel/entry.S
index b17a20999f87..0793a52b2c34 100644
--- a/arch/cris/arch-v32/kernel/entry.S
+++ b/arch/cris/arch-v32/kernel/entry.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2000-2003 Axis Communications AB
*
diff --git a/arch/cris/arch-v32/kernel/fasttimer.c b/arch/cris/arch-v32/kernel/fasttimer.c
index eb4e0ff36295..7452c70f61ff 100644
--- a/arch/cris/arch-v32/kernel/fasttimer.c
+++ b/arch/cris/arch-v32/kernel/fasttimer.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/kernel/fasttimer.c
*
diff --git a/arch/cris/arch-v32/kernel/head.S b/arch/cris/arch-v32/kernel/head.S
index 5ce83eb54f58..92f9fb1f6845 100644
--- a/arch/cris/arch-v32/kernel/head.S
+++ b/arch/cris/arch-v32/kernel/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CRISv32 kernel startup code.
*
diff --git a/arch/cris/arch-v32/kernel/irq.c b/arch/cris/arch-v32/kernel/irq.c
index b07da4b695aa..414afd543232 100644
--- a/arch/cris/arch-v32/kernel/irq.c
+++ b/arch/cris/arch-v32/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2003, Axis Communications AB.
*/
diff --git a/arch/cris/arch-v32/kernel/kgdb.c b/arch/cris/arch-v32/kernel/kgdb.c
index e0fdea706eca..3d6f516763a5 100644
--- a/arch/cris/arch-v32/kernel/kgdb.c
+++ b/arch/cris/arch-v32/kernel/kgdb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/cris/arch-v32/kernel/kgdb.c
*
diff --git a/arch/cris/arch-v32/kernel/kgdb_asm.S b/arch/cris/arch-v32/kernel/kgdb_asm.S
index f3a47605902a..c26ea6b0e334 100644
--- a/arch/cris/arch-v32/kernel/kgdb_asm.S
+++ b/arch/cris/arch-v32/kernel/kgdb_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2004 Axis Communications AB
*
diff --git a/arch/cris/arch-v32/kernel/process.c b/arch/cris/arch-v32/kernel/process.c
index fe87b383fbf3..a02f276d0ed4 100644
--- a/arch/cris/arch-v32/kernel/process.c
+++ b/arch/cris/arch-v32/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2000-2003 Axis Communications AB
*
diff --git a/arch/cris/arch-v32/kernel/ptrace.c b/arch/cris/arch-v32/kernel/ptrace.c
index 0461e95bbb62..ccac1aaadc8a 100644
--- a/arch/cris/arch-v32/kernel/ptrace.c
+++ b/arch/cris/arch-v32/kernel/ptrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2000-2007, Axis Communications AB.
*/
diff --git a/arch/cris/arch-v32/kernel/setup.c b/arch/cris/arch-v32/kernel/setup.c
index fe50287aa928..a36372e35e96 100644
--- a/arch/cris/arch-v32/kernel/setup.c
+++ b/arch/cris/arch-v32/kernel/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Display CPU info in /proc/cpuinfo.
*
diff --git a/arch/cris/arch-v32/kernel/signal.c b/arch/cris/arch-v32/kernel/signal.c
index ea2e8e1398e8..4f2e3ba3bf40 100644
--- a/arch/cris/arch-v32/kernel/signal.c
+++ b/arch/cris/arch-v32/kernel/signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2003, Axis Communications AB.
*/
diff --git a/arch/cris/arch-v32/kernel/time.c b/arch/cris/arch-v32/kernel/time.c
index d2a84407654a..d07a3912687e 100644
--- a/arch/cris/arch-v32/kernel/time.c
+++ b/arch/cris/arch-v32/kernel/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/arch-v32/kernel/time.c
*
diff --git a/arch/cris/arch-v32/kernel/traps.c b/arch/cris/arch-v32/kernel/traps.c
index a34256515036..ba54c7eccbaa 100644
--- a/arch/cris/arch-v32/kernel/traps.c
+++ b/arch/cris/arch-v32/kernel/traps.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2003-2006, Axis Communications AB.
*/
diff --git a/arch/cris/arch-v32/lib/checksum.S b/arch/cris/arch-v32/lib/checksum.S
index 4a72a94a49ad..f773d4d93609 100644
--- a/arch/cris/arch-v32/lib/checksum.S
+++ b/arch/cris/arch-v32/lib/checksum.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* A fast checksum routine using movem
* Copyright (c) 1998-2007 Axis Communications AB
diff --git a/arch/cris/arch-v32/lib/checksumcopy.S b/arch/cris/arch-v32/lib/checksumcopy.S
index 54e209f18b06..a76e586d4114 100644
--- a/arch/cris/arch-v32/lib/checksumcopy.S
+++ b/arch/cris/arch-v32/lib/checksumcopy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* A fast checksum+copy routine using movem
* Copyright (c) 1998-2007 Axis Communications AB
diff --git a/arch/cris/arch-v32/lib/csumcpfruser.S b/arch/cris/arch-v32/lib/csumcpfruser.S
index 600ec16b9f28..093cd757fcfa 100644
--- a/arch/cris/arch-v32/lib/csumcpfruser.S
+++ b/arch/cris/arch-v32/lib/csumcpfruser.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Add-on to transform csum_partial_copy_nocheck in checksumcopy.S into
* csum_partial_copy_from_user by adding exception records.
diff --git a/arch/cris/arch-v32/lib/delay.c b/arch/cris/arch-v32/lib/delay.c
index 39f1ac9995b4..db06a94ef646 100644
--- a/arch/cris/arch-v32/lib/delay.c
+++ b/arch/cris/arch-v32/lib/delay.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Precise Delay Loops for ETRAX FS
*
diff --git a/arch/cris/arch-v32/lib/usercopy.c b/arch/cris/arch-v32/lib/usercopy.c
index 20b608026913..04e78b6ffa22 100644
--- a/arch/cris/arch-v32/lib/usercopy.c
+++ b/arch/cris/arch-v32/lib/usercopy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* User address space access functions.
* The non-inlined parts of asm-cris/uaccess.h are here.
diff --git a/arch/cris/arch-v32/mach-a3/Kconfig b/arch/cris/arch-v32/mach-a3/Kconfig
index 87547271a595..7b63755544dd 100644
--- a/arch/cris/arch-v32/mach-a3/Kconfig
+++ b/arch/cris/arch-v32/mach-a3/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if CRIS_MACH_ARTPEC3
menu "Artpec-3 options"
diff --git a/arch/cris/arch-v32/mach-a3/arbiter.c b/arch/cris/arch-v32/mach-a3/arbiter.c
index 735a9b0abdb8..076182cc65a3 100644
--- a/arch/cris/arch-v32/mach-a3/arbiter.c
+++ b/arch/cris/arch-v32/mach-a3/arbiter.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Memory arbiter functions. Allocates bandwidth through the
* arbiter and sets up arbiter breakpoints.
diff --git a/arch/cris/arch-v32/mach-a3/dma.c b/arch/cris/arch-v32/mach-a3/dma.c
index 11f417f4da98..3f4e923b2527 100644
--- a/arch/cris/arch-v32/mach-a3/dma.c
+++ b/arch/cris/arch-v32/mach-a3/dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Wrapper for DMA channel allocator that starts clocks etc */
#include <linux/kernel.h>
diff --git a/arch/cris/arch-v32/mach-a3/dram_init.S b/arch/cris/arch-v32/mach-a3/dram_init.S
index 7dc26bdb26b5..733c3564ad79 100644
--- a/arch/cris/arch-v32/mach-a3/dram_init.S
+++ b/arch/cris/arch-v32/mach-a3/dram_init.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* DDR SDRAM initialization - alter with care
* This file is intended to be included from other assembler files
diff --git a/arch/cris/arch-v32/mach-a3/hw_settings.S b/arch/cris/arch-v32/mach-a3/hw_settings.S
index 0145725a1ce5..7c325cc59e1f 100644
--- a/arch/cris/arch-v32/mach-a3/hw_settings.S
+++ b/arch/cris/arch-v32/mach-a3/hw_settings.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This table is used by some tools to extract hardware parameters.
* The table should be included in the kernel and the decompressor.
diff --git a/arch/cris/arch-v32/mach-a3/pinmux.c b/arch/cris/arch-v32/mach-a3/pinmux.c
index 591f77526746..4875bf7aa53f 100644
--- a/arch/cris/arch-v32/mach-a3/pinmux.c
+++ b/arch/cris/arch-v32/mach-a3/pinmux.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Allocator for I/O pins. All pins are allocated to GPIO at bootup.
* Unassigned pins and GPIO pins can be allocated to a fixed interface
diff --git a/arch/cris/arch-v32/mach-fs/Kconfig b/arch/cris/arch-v32/mach-fs/Kconfig
index 7d1ab972bc0f..743ba3bcbaec 100644
--- a/arch/cris/arch-v32/mach-fs/Kconfig
+++ b/arch/cris/arch-v32/mach-fs/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ETRAXFS
menu "ETRAX FS options"
diff --git a/arch/cris/arch-v32/mach-fs/arbiter.c b/arch/cris/arch-v32/mach-fs/arbiter.c
index 047c70bdbb23..c4750d97e46c 100644
--- a/arch/cris/arch-v32/mach-fs/arbiter.c
+++ b/arch/cris/arch-v32/mach-fs/arbiter.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Memory arbiter functions. Allocates bandwidth through the
* arbiter and sets up arbiter breakpoints.
diff --git a/arch/cris/arch-v32/mach-fs/dma.c b/arch/cris/arch-v32/mach-fs/dma.c
index 7c93679c02ad..c0347a4f8c65 100644
--- a/arch/cris/arch-v32/mach-fs/dma.c
+++ b/arch/cris/arch-v32/mach-fs/dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Wrapper for DMA channel allocator that starts clocks etc */
#include <linux/kernel.h>
diff --git a/arch/cris/arch-v32/mach-fs/dram_init.S b/arch/cris/arch-v32/mach-fs/dram_init.S
index 2ed51e247e8f..e1a01fa4c272 100644
--- a/arch/cris/arch-v32/mach-fs/dram_init.S
+++ b/arch/cris/arch-v32/mach-fs/dram_init.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* DRAM/SDRAM initialization - alter with care
* This file is intended to be included from other assembler files
diff --git a/arch/cris/arch-v32/mach-fs/hw_settings.S b/arch/cris/arch-v32/mach-fs/hw_settings.S
index 8bde93c36214..7fbadcc48c0c 100644
--- a/arch/cris/arch-v32/mach-fs/hw_settings.S
+++ b/arch/cris/arch-v32/mach-fs/hw_settings.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This table is used by some tools to extract hardware parameters.
* The table should be included in the kernel and the decompressor.
diff --git a/arch/cris/arch-v32/mach-fs/pinmux.c b/arch/cris/arch-v32/mach-fs/pinmux.c
index d8a3a3c439dd..a0b2f101003a 100644
--- a/arch/cris/arch-v32/mach-fs/pinmux.c
+++ b/arch/cris/arch-v32/mach-fs/pinmux.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Allocator for I/O pins. All pins are allocated to GPIO at bootup.
* Unassigned pins and GPIO pins can be allocated to a fixed interface
diff --git a/arch/cris/arch-v32/mm/init.c b/arch/cris/arch-v32/mm/init.c
index f5438ca8122d..784876afa001 100644
--- a/arch/cris/arch-v32/mm/init.c
+++ b/arch/cris/arch-v32/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Set up paging and the MMU.
*
diff --git a/arch/cris/arch-v32/mm/intmem.c b/arch/cris/arch-v32/mm/intmem.c
index c80728401487..928b94d1d320 100644
--- a/arch/cris/arch-v32/mm/intmem.c
+++ b/arch/cris/arch-v32/mm/intmem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Simple allocator for internal RAM in ETRAX FS
*
diff --git a/arch/cris/arch-v32/mm/l2cache.c b/arch/cris/arch-v32/mm/l2cache.c
index 332ff10dcc6b..4fef321d5606 100644
--- a/arch/cris/arch-v32/mm/l2cache.c
+++ b/arch/cris/arch-v32/mm/l2cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/string.h>
diff --git a/arch/cris/arch-v32/mm/mmu.S b/arch/cris/arch-v32/mm/mmu.S
index c0981044eccb..f24965703f6d 100644
--- a/arch/cris/arch-v32/mm/mmu.S
+++ b/arch/cris/arch-v32/mm/mmu.S
@@ -1,3 +1,4 @@
+; SPDX-License-Identifier: GPL-2.0
; WARNING : The refill handler has been modified, see below !!!
/*
diff --git a/arch/cris/arch-v32/mm/tlb.c b/arch/cris/arch-v32/mm/tlb.c
index bc3de5b5e27c..9e4b5ab4971d 100644
--- a/arch/cris/arch-v32/mm/tlb.c
+++ b/arch/cris/arch-v32/mm/tlb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Low level TLB handling.
*
diff --git a/arch/cris/boot/Makefile b/arch/cris/boot/Makefile
index 6e3b509fd7fc..859d275f862b 100644
--- a/arch/cris/boot/Makefile
+++ b/arch/cris/boot/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/cris/boot/Makefile
#
diff --git a/arch/cris/boot/compressed/Makefile b/arch/cris/boot/compressed/Makefile
index e4ba0be0e782..e149c3467c93 100644
--- a/arch/cris/boot/compressed/Makefile
+++ b/arch/cris/boot/compressed/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/cris/boot/compressed/Makefile
#
diff --git a/arch/cris/boot/compressed/decompress_v10.lds b/arch/cris/boot/compressed/decompress_v10.lds
index e80f4594d543..d8326779dda2 100644
--- a/arch/cris/boot/compressed/decompress_v10.lds
+++ b/arch/cris/boot/compressed/decompress_v10.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* OUTPUT_FORMAT(elf32-us-cris) */
OUTPUT_FORMAT(elf32-cris)
diff --git a/arch/cris/boot/compressed/decompress_v32.lds b/arch/cris/boot/compressed/decompress_v32.lds
index 3c837feca3ac..91d311c243ed 100644
--- a/arch/cris/boot/compressed/decompress_v32.lds
+++ b/arch/cris/boot/compressed/decompress_v32.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*#OUTPUT_FORMAT(elf32-us-cris) */
OUTPUT_ARCH (crisv32)
diff --git a/arch/cris/boot/compressed/head_v10.S b/arch/cris/boot/compressed/head_v10.S
index 9edb8ade7e1f..08198d8cd37f 100644
--- a/arch/cris/boot/compressed/head_v10.S
+++ b/arch/cris/boot/compressed/head_v10.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/cris/boot/compressed/head.S
*
diff --git a/arch/cris/boot/compressed/head_v32.S b/arch/cris/boot/compressed/head_v32.S
index f483005f3d48..a997947d31e3 100644
--- a/arch/cris/boot/compressed/head_v32.S
+++ b/arch/cris/boot/compressed/head_v32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Code that sets up the DRAM registers, calls the
* decompressor to unpack the piggybacked kernel, and jumps.
diff --git a/arch/cris/boot/compressed/misc.c b/arch/cris/boot/compressed/misc.c
index 548d886b03d3..1ad464a117b8 100644
--- a/arch/cris/boot/compressed/misc.c
+++ b/arch/cris/boot/compressed/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* misc.c
*
diff --git a/arch/cris/boot/dts/Makefile b/arch/cris/boot/dts/Makefile
index faf69fb9919f..3318c630caa2 100644
--- a/arch/cris/boot/dts/Makefile
+++ b/arch/cris/boot/dts/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_BUILTIN_DTB)).dtb.o
ifneq ($(CONFIG_BUILTIN_DTB),"")
obj-$(CONFIG_OF) += $(BUILTIN_DTB)
diff --git a/arch/cris/boot/dts/artpec3.dtsi b/arch/cris/boot/dts/artpec3.dtsi
index be15be67b653..f857300f4edd 100644
--- a/arch/cris/boot/dts/artpec3.dtsi
+++ b/arch/cris/boot/dts/artpec3.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/cris/boot/dts/dev88.dts b/arch/cris/boot/dts/dev88.dts
index b9a230d10874..415270ea5309 100644
--- a/arch/cris/boot/dts/dev88.dts
+++ b/arch/cris/boot/dts/dev88.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/cris/boot/dts/etraxfs.dtsi b/arch/cris/boot/dts/etraxfs.dtsi
index bf1b8582d4d8..4513edf72545 100644
--- a/arch/cris/boot/dts/etraxfs.dtsi
+++ b/arch/cris/boot/dts/etraxfs.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/cris/boot/dts/p1343.dts b/arch/cris/boot/dts/p1343.dts
index fab7bdbd0f15..6030561d4574 100644
--- a/arch/cris/boot/dts/p1343.dts
+++ b/arch/cris/boot/dts/p1343.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/cris/boot/rescue/Makefile b/arch/cris/boot/rescue/Makefile
index a82025940006..f73ac4c83b96 100644
--- a/arch/cris/boot/rescue/Makefile
+++ b/arch/cris/boot/rescue/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for rescue (bootstrap) code
#
diff --git a/arch/cris/boot/rescue/head_v10.S b/arch/cris/boot/rescue/head_v10.S
index 1c05492f3eb2..11eedb1bf31a 100644
--- a/arch/cris/boot/rescue/head_v10.S
+++ b/arch/cris/boot/rescue/head_v10.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Rescue code, made to reside at the beginning of the
* flash-memory. when it starts, it checks a partition
diff --git a/arch/cris/boot/rescue/head_v32.S b/arch/cris/boot/rescue/head_v32.S
index 5f846b7700a3..9eb04abaa0c0 100644
--- a/arch/cris/boot/rescue/head_v32.S
+++ b/arch/cris/boot/rescue/head_v32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Just get started by jumping to CONFIG_ETRAX_PTABLE_SECTOR to start
* kernel decompressor.
diff --git a/arch/cris/boot/rescue/kimagerescue.S b/arch/cris/boot/rescue/kimagerescue.S
index 655b511fecf3..3306098dee15 100644
--- a/arch/cris/boot/rescue/kimagerescue.S
+++ b/arch/cris/boot/rescue/kimagerescue.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Rescue code to be prepended on a kimage and copied to the
* rescue serial port.
diff --git a/arch/cris/boot/rescue/rescue_v10.lds b/arch/cris/boot/rescue/rescue_v10.lds
index 0b52a9490db6..e58a53f91728 100644
--- a/arch/cris/boot/rescue/rescue_v10.lds
+++ b/arch/cris/boot/rescue/rescue_v10.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
MEMORY
{
flash : ORIGIN = 0x00000000,
diff --git a/arch/cris/boot/rescue/rescue_v32.lds b/arch/cris/boot/rescue/rescue_v32.lds
index 8ac646bc1a2b..f1542183f263 100644
--- a/arch/cris/boot/rescue/rescue_v32.lds
+++ b/arch/cris/boot/rescue/rescue_v32.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*#OUTPUT_FORMAT(elf32-us-cris) */
OUTPUT_ARCH (crisv32)
/* Now that NAND support has been stripped, this file could be simplified,
diff --git a/arch/cris/boot/rescue/testrescue.S b/arch/cris/boot/rescue/testrescue.S
index fc7ec674eca5..06f78a0b0622 100644
--- a/arch/cris/boot/rescue/testrescue.S
+++ b/arch/cris/boot/rescue/testrescue.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Simple testcode to download by the rescue block.
* Just lights some LEDs to show it was downloaded correctly.
diff --git a/arch/cris/boot/tools/build.c b/arch/cris/boot/tools/build.c
index c8adef364160..3ae485049779 100644
--- a/arch/cris/boot/tools/build.c
+++ b/arch/cris/boot/tools/build.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/tools/build.c
*
diff --git a/arch/cris/include/arch-v10/arch/bitops.h b/arch/cris/include/arch-v10/arch/bitops.h
index 03d9cfd92c8a..c18f81858899 100644
--- a/arch/cris/include/arch-v10/arch/bitops.h
+++ b/arch/cris/include/arch-v10/arch/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* asm/arch/bitops.h for Linux/CRISv10 */
#ifndef _CRIS_ARCH_BITOPS_H
diff --git a/arch/cris/include/arch-v10/arch/bug.h b/arch/cris/include/arch-v10/arch/bug.h
index 3485d6b34bb0..905afeacfedf 100644
--- a/arch/cris/include/arch-v10/arch/bug.h
+++ b/arch/cris/include/arch-v10/arch/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CRISv10_ARCH_BUG_H
#define __ASM_CRISv10_ARCH_BUG_H
diff --git a/arch/cris/include/arch-v10/arch/cache.h b/arch/cris/include/arch-v10/arch/cache.h
index aea27184d2d2..d4049bcab3c5 100644
--- a/arch/cris/include/arch-v10/arch/cache.h
+++ b/arch/cris/include/arch-v10/arch/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARCH_CACHE_H
#define _ASM_ARCH_CACHE_H
diff --git a/arch/cris/include/arch-v10/arch/checksum.h b/arch/cris/include/arch-v10/arch/checksum.h
index d1d1bd9e1090..eb186be4fb32 100644
--- a/arch/cris/include/arch-v10/arch/checksum.h
+++ b/arch/cris/include/arch-v10/arch/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_ARCH_CHECKSUM_H
#define _CRIS_ARCH_CHECKSUM_H
diff --git a/arch/cris/include/arch-v10/arch/delay.h b/arch/cris/include/arch-v10/arch/delay.h
index 39481f6e0c30..a57d2cc0baf7 100644
--- a/arch/cris/include/arch-v10/arch/delay.h
+++ b/arch/cris/include/arch-v10/arch/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_ARCH_DELAY_H
#define _CRIS_ARCH_DELAY_H
diff --git a/arch/cris/include/arch-v10/arch/dma.h b/arch/cris/include/arch-v10/arch/dma.h
index ecb9dba6fa4f..ea794a32cf5e 100644
--- a/arch/cris/include/arch-v10/arch/dma.h
+++ b/arch/cris/include/arch-v10/arch/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Defines for using and allocating dma channels. */
#ifndef _ASM_ARCH_DMA_H
diff --git a/arch/cris/include/arch-v10/arch/io.h b/arch/cris/include/arch-v10/arch/io.h
index 4a724172877f..bae5f77cfabc 100644
--- a/arch/cris/include/arch-v10/arch/io.h
+++ b/arch/cris/include/arch-v10/arch/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARCH_CRIS_IO_H
#define _ASM_ARCH_CRIS_IO_H
diff --git a/arch/cris/include/arch-v10/arch/io_interface_mux.h b/arch/cris/include/arch-v10/arch/io_interface_mux.h
index d92500080883..2d5617e67ab0 100644
--- a/arch/cris/include/arch-v10/arch/io_interface_mux.h
+++ b/arch/cris/include/arch-v10/arch/io_interface_mux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* IO interface mux allocator for ETRAX100LX.
* Copyright 2004, Axis Communications AB
* $Id: io_interface_mux.h,v 1.1 2004/12/13 12:21:53 starvik Exp $
diff --git a/arch/cris/include/arch-v10/arch/irq.h b/arch/cris/include/arch-v10/arch/irq.h
index 6aecb835037d..c4e8a78e33d1 100644
--- a/arch/cris/include/arch-v10/arch/irq.h
+++ b/arch/cris/include/arch-v10/arch/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Interrupt handling assembler and defines for Linux/CRISv10
*/
diff --git a/arch/cris/include/arch-v10/arch/irqflags.h b/arch/cris/include/arch-v10/arch/irqflags.h
index 75ef18991240..9959b0a8a58c 100644
--- a/arch/cris/include/arch-v10/arch/irqflags.h
+++ b/arch/cris/include/arch-v10/arch/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CRIS_ARCH_IRQFLAGS_H
#define __ASM_CRIS_ARCH_IRQFLAGS_H
diff --git a/arch/cris/include/arch-v10/arch/memmap.h b/arch/cris/include/arch-v10/arch/memmap.h
index 13f3b971407f..b6b171f48b29 100644
--- a/arch/cris/include/arch-v10/arch/memmap.h
+++ b/arch/cris/include/arch-v10/arch/memmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARCH_MEMMAP_H
#define _ASM_ARCH_MEMMAP_H
diff --git a/arch/cris/include/arch-v10/arch/mmu.h b/arch/cris/include/arch-v10/arch/mmu.h
index 47a5dd21749d..74c53048be79 100644
--- a/arch/cris/include/arch-v10/arch/mmu.h
+++ b/arch/cris/include/arch-v10/arch/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CRIS MMU constants and PTE layout
*/
diff --git a/arch/cris/include/arch-v10/arch/offset.h b/arch/cris/include/arch-v10/arch/offset.h
index 675b51d85639..6f0f2b4a163f 100644
--- a/arch/cris/include/arch-v10/arch/offset.h
+++ b/arch/cris/include/arch-v10/arch/offset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_OFFSETS_H__
#define __ASM_OFFSETS_H__
/*
diff --git a/arch/cris/include/arch-v10/arch/page.h b/arch/cris/include/arch-v10/arch/page.h
index ffafc99c3472..a4bbff64868c 100644
--- a/arch/cris/include/arch-v10/arch/page.h
+++ b/arch/cris/include/arch-v10/arch/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_ARCH_PAGE_H
#define _CRIS_ARCH_PAGE_H
diff --git a/arch/cris/include/arch-v10/arch/pgtable.h b/arch/cris/include/arch-v10/arch/pgtable.h
index 2a2576d1fc97..a61532d06acb 100644
--- a/arch/cris/include/arch-v10/arch/pgtable.h
+++ b/arch/cris/include/arch-v10/arch/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_ARCH_PGTABLE_H
#define _CRIS_ARCH_PGTABLE_H
diff --git a/arch/cris/include/arch-v10/arch/processor.h b/arch/cris/include/arch-v10/arch/processor.h
index 93feb2a487d8..b2df646bc1eb 100644
--- a/arch/cris/include/arch-v10/arch/processor.h
+++ b/arch/cris/include/arch-v10/arch/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CRIS_ARCH_PROCESSOR_H
#define __ASM_CRIS_ARCH_PROCESSOR_H
diff --git a/arch/cris/include/arch-v10/arch/swab.h b/arch/cris/include/arch-v10/arch/swab.h
index e4e847d8a05e..8cc27dfb9d3a 100644
--- a/arch/cris/include/arch-v10/arch/swab.h
+++ b/arch/cris/include/arch-v10/arch/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_ARCH_SWAB_H
#define _CRIS_ARCH_SWAB_H
diff --git a/arch/cris/include/arch-v10/arch/system.h b/arch/cris/include/arch-v10/arch/system.h
index 9b5580f58b96..4c63f728122b 100644
--- a/arch/cris/include/arch-v10/arch/system.h
+++ b/arch/cris/include/arch-v10/arch/system.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CRIS_ARCH_SYSTEM_H
#define __ASM_CRIS_ARCH_SYSTEM_H
diff --git a/arch/cris/include/arch-v10/arch/thread_info.h b/arch/cris/include/arch-v10/arch/thread_info.h
index 218f4152d3e5..0ef1223998c1 100644
--- a/arch/cris/include/arch-v10/arch/thread_info.h
+++ b/arch/cris/include/arch-v10/arch/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARCH_THREAD_INFO_H
#define _ASM_ARCH_THREAD_INFO_H
diff --git a/arch/cris/include/arch-v10/arch/timex.h b/arch/cris/include/arch-v10/arch/timex.h
index e48447d94faf..9c9583e5aed6 100644
--- a/arch/cris/include/arch-v10/arch/timex.h
+++ b/arch/cris/include/arch-v10/arch/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Use prescale timer at 25000 Hz instead of the baudrate timer at
* 19200 to get rid of the 64ppm to fast timer (and we get better
diff --git a/arch/cris/include/arch-v10/arch/tlb.h b/arch/cris/include/arch-v10/arch/tlb.h
index 31525bbe75c3..9f039d83f21b 100644
--- a/arch/cris/include/arch-v10/arch/tlb.h
+++ b/arch/cris/include/arch-v10/arch/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_ARCH_TLB_H
#define _CRIS_ARCH_TLB_H
diff --git a/arch/cris/include/arch-v10/arch/uaccess.h b/arch/cris/include/arch-v10/arch/uaccess.h
index 5477c98c2281..8d033c534f1f 100644
--- a/arch/cris/include/arch-v10/arch/uaccess.h
+++ b/arch/cris/include/arch-v10/arch/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Authors: Bjorn Wesen (bjornw@axis.com)
* Hans-Peter Nilsson (hp@axis.com)
diff --git a/arch/cris/include/arch-v10/arch/unistd.h b/arch/cris/include/arch-v10/arch/unistd.h
index d1a38b9e6264..03cd0b8652f4 100644
--- a/arch/cris/include/arch-v10/arch/unistd.h
+++ b/arch/cris/include/arch-v10/arch/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_UNISTD_H_
#define _ASM_CRIS_ARCH_UNISTD_H_
diff --git a/arch/cris/include/arch-v32/arch/bitops.h b/arch/cris/include/arch-v32/arch/bitops.h
index 147689d6b624..7df94798f063 100644
--- a/arch/cris/include/arch-v32/arch/bitops.h
+++ b/arch/cris/include/arch-v32/arch/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_BITOPS_H
#define _ASM_CRIS_ARCH_BITOPS_H
diff --git a/arch/cris/include/arch-v32/arch/bug.h b/arch/cris/include/arch-v32/arch/bug.h
index fb59faaaae0a..982c6b08fdf1 100644
--- a/arch/cris/include/arch-v32/arch/bug.h
+++ b/arch/cris/include/arch-v32/arch/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CRISv32_ARCH_BUG_H
#define __ASM_CRISv32_ARCH_BUG_H
diff --git a/arch/cris/include/arch-v32/arch/cache.h b/arch/cris/include/arch-v32/arch/cache.h
index 7caf25d58e6b..f61f3088c45b 100644
--- a/arch/cris/include/arch-v32/arch/cache.h
+++ b/arch/cris/include/arch-v32/arch/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_CACHE_H
#define _ASM_CRIS_ARCH_CACHE_H
diff --git a/arch/cris/include/arch-v32/arch/checksum.h b/arch/cris/include/arch-v32/arch/checksum.h
index 65cf205b1329..fea1341ef244 100644
--- a/arch/cris/include/arch-v32/arch/checksum.h
+++ b/arch/cris/include/arch-v32/arch/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_CHECKSUM_H
#define _ASM_CRIS_ARCH_CHECKSUM_H
diff --git a/arch/cris/include/arch-v32/arch/cryptocop.h b/arch/cris/include/arch-v32/arch/cryptocop.h
index a56ac61a9931..f2f8eda1ffb1 100644
--- a/arch/cris/include/arch-v32/arch/cryptocop.h
+++ b/arch/cris/include/arch-v32/arch/cryptocop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* The device /dev/cryptocop is accessible using this driver using
* CRYPTOCOP_MAJOR (254) and minor number 0.
diff --git a/arch/cris/include/arch-v32/arch/delay.h b/arch/cris/include/arch-v32/arch/delay.h
index e9fda03810a9..94307c1fbb1c 100644
--- a/arch/cris/include/arch-v32/arch/delay.h
+++ b/arch/cris/include/arch-v32/arch/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_DELAY_H
#define _ASM_CRIS_ARCH_DELAY_H
diff --git a/arch/cris/include/arch-v32/arch/hwregs/Makefile b/arch/cris/include/arch-v32/arch/hwregs/Makefile
index b8b3f8d666e4..bb5ffa7ff9f4 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/Makefile
+++ b/arch/cris/include/arch-v32/arch/hwregs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile to generate or copy the latest register definitions
# and related datastructures and helpermacros.
# The official place for these files is at:
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/ata_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/ata_defs_asm.h
index 866191418f9c..6886ba3c2d53 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/ata_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/ata_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ata_defs_asm_h
#define __ata_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/bif_core_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/bif_core_defs_asm.h
index c686cb335621..1d75d8c31cc0 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/bif_core_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/bif_core_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __bif_core_defs_asm_h
#define __bif_core_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/bif_dma_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/bif_dma_defs_asm.h
index 71532aa18168..a07447fa75f8 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/bif_dma_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/bif_dma_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __bif_dma_defs_asm_h
#define __bif_dma_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/bif_slave_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/bif_slave_defs_asm.h
index 031f33a365bb..55697fec603e 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/bif_slave_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/bif_slave_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __bif_slave_defs_asm_h
#define __bif_slave_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/config_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/config_defs_asm.h
index e98476332e1f..6455b4897bcc 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/config_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/config_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __config_defs_asm_h
#define __config_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/cris_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/cris_defs_asm.h
index 7f768db272e2..bd048296d2f8 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/cris_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/cris_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __cris_defs_asm_h
#define __cris_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/cris_supp_reg.h b/arch/cris/include/arch-v32/arch/hwregs/asm/cris_supp_reg.h
index 7d3689a6f80d..429fe0d4ffe4 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/cris_supp_reg.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/cris_supp_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define RW_GC_CFG 0
#define RW_GC_CCS 1
#define RW_GC_SRS 2
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/dma_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/dma_defs_asm.h
index 0cb71bc127ae..fec451d2a3db 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/dma_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/dma_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __dma_defs_asm_h
#define __dma_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/eth_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/eth_defs_asm.h
index c9f49864831b..97fe523d4d72 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/eth_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/eth_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __eth_defs_asm_h
#define __eth_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/gio_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/gio_defs_asm.h
index 35356bc08629..41bc2f83795c 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/gio_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/gio_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __gio_defs_asm_h
#define __gio_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/intr_vect.h b/arch/cris/include/arch-v32/arch/hwregs/asm/intr_vect.h
index c8315905c571..e371052fa1bc 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/intr_vect.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/intr_vect.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Interrupt vector numbers autogenerated by /n/asic/design/tools/rdesc/src/rdes2intr version
from ../../inst/intr_vect/rtl/guinness/ivmask.config.r
version . */
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/intr_vect_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/intr_vect_defs_asm.h
index 6df2a433b02d..8d0c788b286b 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/intr_vect_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/intr_vect_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __intr_vect_defs_asm_h
#define __intr_vect_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/irq_nmi_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/irq_nmi_defs_asm.h
index 0c8084054840..f624468346af 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/irq_nmi_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/irq_nmi_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __irq_nmi_defs_asm_h
#define __irq_nmi_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/marb_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/marb_defs_asm.h
index 45400eb8d389..6a5ce2141860 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/marb_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/marb_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __marb_defs_asm_h
#define __marb_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/mmu_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/mmu_defs_asm.h
index 505b7a16d878..083174678961 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/mmu_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/mmu_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __mmu_defs_asm_h
#define __mmu_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/mmu_supp_reg.h b/arch/cris/include/arch-v32/arch/hwregs/asm/mmu_supp_reg.h
index 339500bf3bc0..fd66daa79259 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/mmu_supp_reg.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/mmu_supp_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define RW_MM_CFG 0
#define RW_MM_KBASE_LO 1
#define RW_MM_KBASE_HI 2
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/rt_trace_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/rt_trace_defs_asm.h
index 10246f49fb28..72b3d231d80f 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/rt_trace_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/rt_trace_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __rt_trace_defs_asm_h
#define __rt_trace_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/ser_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/ser_defs_asm.h
index 4a2808bdf390..944f4c7666b4 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/ser_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/ser_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ser_defs_asm_h
#define __ser_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/sser_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/sser_defs_asm.h
index 27d4d91b3abd..607b505100fa 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/sser_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/sser_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __sser_defs_asm_h
#define __sser_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/strcop_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/strcop_defs_asm.h
index 55083e6aec93..fab117b00ab6 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/strcop_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/strcop_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __strcop_defs_asm_h
#define __strcop_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/strmux_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/strmux_defs_asm.h
index 69b299920f71..73755fa8a526 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/strmux_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/strmux_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __strmux_defs_asm_h
#define __strmux_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/asm/timer_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/asm/timer_defs_asm.h
index 43146021fc16..cc67986d7437 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/asm/timer_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/asm/timer_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __timer_defs_asm_h
#define __timer_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/ata_defs.h b/arch/cris/include/arch-v32/arch/hwregs/ata_defs.h
index 43b6643ff0d3..2a8adbcf75d8 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/ata_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/ata_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ata_defs_h
#define __ata_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/bif_core_defs.h b/arch/cris/include/arch-v32/arch/hwregs/bif_core_defs.h
index a56608b50359..054841c45466 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/bif_core_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/bif_core_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __bif_core_defs_h
#define __bif_core_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/bif_dma_defs.h b/arch/cris/include/arch-v32/arch/hwregs/bif_dma_defs.h
index b931c1aab679..5c4abf5c0167 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/bif_dma_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/bif_dma_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __bif_dma_defs_h
#define __bif_dma_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/bif_slave_defs.h b/arch/cris/include/arch-v32/arch/hwregs/bif_slave_defs.h
index d18fc3c9f569..80c740b3c785 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/bif_slave_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/bif_slave_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __bif_slave_defs_h
#define __bif_slave_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/config_defs.h b/arch/cris/include/arch-v32/arch/hwregs/config_defs.h
index 45457a4e3817..1c5da14f27f3 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/config_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/config_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __config_defs_h
#define __config_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/cpu_vect.h b/arch/cris/include/arch-v32/arch/hwregs/cpu_vect.h
index 8370aee8a14a..913f918bba14 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/cpu_vect.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/cpu_vect.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Interrupt vector numbers autogenerated by /n/asic/design/tools/rdesc/src/rdes2intr version
from ../../inst/crisp/doc/cpu_vect.r
version . */
diff --git a/arch/cris/include/arch-v32/arch/hwregs/dma.h b/arch/cris/include/arch-v32/arch/hwregs/dma.h
index 52bf67907f28..dd24c6da09e0 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/dma.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* DMA C definitions and help macros
*
diff --git a/arch/cris/include/arch-v32/arch/hwregs/dma_defs.h b/arch/cris/include/arch-v32/arch/hwregs/dma_defs.h
index 48ac8cef7ebe..a67826f5fe21 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/dma_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/dma_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __dma_defs_h
#define __dma_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/eth_defs.h b/arch/cris/include/arch-v32/arch/hwregs/eth_defs.h
index 90fe8a28894f..d8021b44e5e6 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/eth_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/eth_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __eth_defs_h
#define __eth_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/extmem_defs.h b/arch/cris/include/arch-v32/arch/hwregs/extmem_defs.h
index c47b5ca48ece..5937ed7a5228 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/extmem_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/extmem_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __extmem_defs_h
#define __extmem_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/Makefile b/arch/cris/include/arch-v32/arch/hwregs/iop/Makefile
index 0747a22e3c07..1b9467ae65c1 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/Makefile
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# $Id: Makefile,v 1.3 2004/01/07 20:34:55 johana Exp $
# Makefile to generate or copy the latest register definitions
# and related datastructures and helpermacros.
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_crc_par_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_crc_par_defs_asm.h
index a4b58000c164..10443d789a66 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_crc_par_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_crc_par_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_crc_par_defs_asm_h
#define __iop_crc_par_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_dmc_in_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_dmc_in_defs_asm.h
index e7d539feccb1..fdee9bbe1fd4 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_dmc_in_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_dmc_in_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_dmc_in_defs_asm_h
#define __iop_dmc_in_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_dmc_out_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_dmc_out_defs_asm.h
index 9fe1a8054371..a97b741bd36a 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_dmc_out_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_dmc_out_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_dmc_out_defs_asm_h
#define __iop_dmc_out_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_in_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_in_defs_asm.h
index 974dee082f9f..e2c0990246f2 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_in_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_in_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_fifo_in_defs_asm_h
#define __iop_fifo_in_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_in_extra_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_in_extra_defs_asm.h
index e00fab0c9335..50837b989c90 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_in_extra_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_in_extra_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_fifo_in_extra_defs_asm_h
#define __iop_fifo_in_extra_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_out_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_out_defs_asm.h
index 9ec5f4a826df..9f06dddf33a0 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_out_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_out_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_fifo_out_defs_asm_h
#define __iop_fifo_out_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_out_extra_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_out_extra_defs_asm.h
index 0f84a50cf77c..e8c488c389e4 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_out_extra_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_fifo_out_extra_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_fifo_out_extra_defs_asm_h
#define __iop_fifo_out_extra_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_mpu_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_mpu_defs_asm.h
index 80490c82cc29..48869d445e07 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_mpu_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_mpu_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_mpu_defs_asm_h
#define __iop_mpu_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_reg_space_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_reg_space_asm.h
index a20b8857b4d0..615f869a6de9 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_reg_space_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_reg_space_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Autogenerated Changes here will be lost!
* generated by ../gen_sw.pl Mon Apr 11 16:10:18 2005 iop_sw.cfg
*/
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sap_in_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sap_in_defs_asm.h
index a4a10ff300b3..fe8c90e015b0 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sap_in_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sap_in_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sap_in_defs_asm_h
#define __iop_sap_in_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sap_out_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sap_out_defs_asm.h
index 0ec727f92a25..a5e46f0bbf6f 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sap_out_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sap_out_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sap_out_defs_asm_h
#define __iop_sap_out_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_scrc_in_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_scrc_in_defs_asm.h
index 2cf5721597fc..169aaf8d44b2 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_scrc_in_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_scrc_in_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_scrc_in_defs_asm_h
#define __iop_scrc_in_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_scrc_out_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_scrc_out_defs_asm.h
index 640a25725f20..0e9bca149bc6 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_scrc_out_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_scrc_out_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_scrc_out_defs_asm_h
#define __iop_scrc_out_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_spu_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_spu_defs_asm.h
index bb402c1aa761..cf2b64a9d42c 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_spu_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_spu_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_spu_defs_asm_h
#define __iop_spu_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_cfg_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_cfg_defs_asm.h
index 3be60f9b024c..4f4c7340d39a 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_cfg_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_cfg_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_cfg_defs_asm_h
#define __iop_sw_cfg_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_cpu_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_cpu_defs_asm.h
index db347bcba025..ef04a57a0680 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_cpu_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_cpu_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_cpu_defs_asm_h
#define __iop_sw_cpu_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_mpu_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_mpu_defs_asm.h
index ee7dc0435b59..22292069e4fd 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_mpu_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_mpu_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_mpu_defs_asm_h
#define __iop_sw_mpu_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_spu_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_spu_defs_asm.h
index 0929f144cfa1..82729218621c 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_spu_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_sw_spu_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_spu_defs_asm_h
#define __iop_sw_spu_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_timer_grp_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_timer_grp_defs_asm.h
index 7129a9a4bedc..4f1cf73d86cd 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_timer_grp_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_timer_grp_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_timer_grp_defs_asm_h
#define __iop_timer_grp_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_trigger_grp_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_trigger_grp_defs_asm.h
index 1005d9db80dc..7bc882c62952 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_trigger_grp_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_trigger_grp_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_trigger_grp_defs_asm_h
#define __iop_trigger_grp_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_version_defs_asm.h b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_version_defs_asm.h
index e13feb20a7e3..2e239957e34a 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_version_defs_asm.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/asm/iop_version_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_version_defs_asm_h
#define __iop_version_defs_asm_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_crc_par_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_crc_par_defs.h
index 90e4785b6474..8690034d9bec 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_crc_par_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_crc_par_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_crc_par_defs_h
#define __iop_crc_par_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_dmc_in_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_dmc_in_defs.h
index 76aec6e37f3e..3dd4e870a3a5 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_dmc_in_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_dmc_in_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_dmc_in_defs_h
#define __iop_dmc_in_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_dmc_out_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_dmc_out_defs.h
index 938a0d4c4604..7ed17bc553c3 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_dmc_out_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_dmc_out_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_dmc_out_defs_h
#define __iop_dmc_out_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_in_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_in_defs.h
index e0c982b263fa..dc14868680e6 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_in_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_in_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_fifo_in_defs_h
#define __iop_fifo_in_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_in_extra_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_in_extra_defs.h
index 798ac95870e9..ee7dc07a7862 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_in_extra_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_in_extra_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_fifo_in_extra_defs_h
#define __iop_fifo_in_extra_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_out_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_out_defs.h
index 833e10f02526..ee8194fcfa82 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_out_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_out_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_fifo_out_defs_h
#define __iop_fifo_out_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_out_extra_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_out_extra_defs.h
index 4a840aae84ee..b9721649f6fd 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_out_extra_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_fifo_out_extra_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_fifo_out_extra_defs_h
#define __iop_fifo_out_extra_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_mpu_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_mpu_defs.h
index c2b0ba1be60f..28e1c5903677 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_mpu_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_mpu_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_mpu_defs_h
#define __iop_mpu_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_mpu_macros.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_mpu_macros.h
index 2ec897ced166..41f5178a65b8 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_mpu_macros.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_mpu_macros.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ************************************************************************* */
/* This file is autogenerated by IOPASM Version 1.2 */
/* DO NOT EDIT THIS FILE - All changes will be lost! */
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_reg_space.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_reg_space.h
index 756550f5d6cb..95e9ce8c042a 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_reg_space.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_reg_space.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Autogenerated Changes here will be lost!
* generated by ../gen_sw.pl Mon Apr 11 16:10:18 2005 iop_sw.cfg
*/
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sap_in_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sap_in_defs.h
index 5548ac10074f..22a74eafb8b0 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sap_in_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sap_in_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sap_in_defs_h
#define __iop_sap_in_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sap_out_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sap_out_defs.h
index 273936996183..380133910105 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sap_out_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sap_out_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sap_out_defs_h
#define __iop_sap_out_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_scrc_in_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_scrc_in_defs.h
index 4f0a9a81e737..65d662046ca9 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_scrc_in_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_scrc_in_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_scrc_in_defs_h
#define __iop_scrc_in_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_scrc_out_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_scrc_out_defs.h
index fd1d6ea1d484..ba39605b9737 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_scrc_out_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_scrc_out_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_scrc_out_defs_h
#define __iop_scrc_out_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_spu_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_spu_defs.h
index 0fda26e2f06f..7681fdab93fc 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_spu_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_spu_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_spu_defs_h
#define __iop_spu_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_cfg_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_cfg_defs.h
index d7b6d75884d2..86e5c9b3e593 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_cfg_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_cfg_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_cfg_defs_h
#define __iop_sw_cfg_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_cpu_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_cpu_defs.h
index 5fed844b19e2..31055d3fcd76 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_cpu_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_cpu_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_cpu_defs_h
#define __iop_sw_cpu_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_mpu_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_mpu_defs.h
index da718f2a8cad..5038c08e8a95 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_mpu_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_mpu_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_mpu_defs_h
#define __iop_sw_mpu_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_spu_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_spu_defs.h
index b59dde4bd0d1..aeebd57af7f7 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_spu_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_sw_spu_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_spu_defs_h
#define __iop_sw_spu_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_timer_grp_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_timer_grp_defs.h
index c994114f3b51..b4095422adf6 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_timer_grp_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_timer_grp_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_timer_grp_defs_h
#define __iop_timer_grp_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_trigger_grp_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_trigger_grp_defs.h
index 36e44282399d..aff694506e7f 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_trigger_grp_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_trigger_grp_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_trigger_grp_defs_h
#define __iop_trigger_grp_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_version_defs.h b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_version_defs.h
index b8d6a910c71c..53a4b8cda969 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/iop/iop_version_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/iop/iop_version_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_version_defs_h
#define __iop_version_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/irq_nmi_defs.h b/arch/cris/include/arch-v32/arch/hwregs/irq_nmi_defs.h
index 7b167e3c0572..63b20dee2fd1 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/irq_nmi_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/irq_nmi_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __irq_nmi_defs_h
#define __irq_nmi_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/marb_bp_defs.h b/arch/cris/include/arch-v32/arch/hwregs/marb_bp_defs.h
index a11fdd3cd907..da29a8a22250 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/marb_bp_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/marb_bp_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __marb_bp_defs_h
#define __marb_bp_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/marb_defs.h b/arch/cris/include/arch-v32/arch/hwregs/marb_defs.h
index 71e8af0bb3a4..2858de48a5e0 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/marb_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/marb_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __marb_defs_h
#define __marb_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/reg_rdwr.h b/arch/cris/include/arch-v32/arch/hwregs/reg_rdwr.h
index 236f91efe7e8..8fabdd211507 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/reg_rdwr.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/reg_rdwr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Read/write register macros used by *_defs.h
*/
diff --git a/arch/cris/include/arch-v32/arch/hwregs/rt_trace_defs.h b/arch/cris/include/arch-v32/arch/hwregs/rt_trace_defs.h
index d9f0e924fb23..ebb6bbc6e778 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/rt_trace_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/rt_trace_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __rt_trace_defs_h
#define __rt_trace_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/ser_defs.h b/arch/cris/include/arch-v32/arch/hwregs/ser_defs.h
index 01c2fab97d43..3b04cf9012cf 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/ser_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/ser_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ser_defs_h
#define __ser_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/sser_defs.h b/arch/cris/include/arch-v32/arch/hwregs/sser_defs.h
index 8d1dab218b91..02971f9b6558 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/sser_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/sser_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __sser_defs_h
#define __sser_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/strcop.h b/arch/cris/include/arch-v32/arch/hwregs/strcop.h
index 35131ba466f3..2c522b024ee7 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/strcop.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/strcop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
// $Id: strcop.h,v 1.3 2003/10/22 13:27:12 henriken Exp $
// Streamcop meta-data configuration structs
diff --git a/arch/cris/include/arch-v32/arch/hwregs/strcop_defs.h b/arch/cris/include/arch-v32/arch/hwregs/strcop_defs.h
index bd145a49b2c4..069b2ed9def5 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/strcop_defs.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/strcop_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __strcop_defs_h
#define __strcop_defs_h
diff --git a/arch/cris/include/arch-v32/arch/hwregs/supp_reg.h b/arch/cris/include/arch-v32/arch/hwregs/supp_reg.h
index ffe49625ae36..c3fa0c06c558 100644
--- a/arch/cris/include/arch-v32/arch/hwregs/supp_reg.h
+++ b/arch/cris/include/arch-v32/arch/hwregs/supp_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SUPP_REG_H__
#define __SUPP_REG_H__
diff --git a/arch/cris/include/arch-v32/arch/intmem.h b/arch/cris/include/arch-v32/arch/intmem.h
index c0ada33bf90f..2bcb21c9b25f 100644
--- a/arch/cris/include/arch-v32/arch/intmem.h
+++ b/arch/cris/include/arch-v32/arch/intmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_INTMEM_H
#define _ASM_CRIS_INTMEM_H
diff --git a/arch/cris/include/arch-v32/arch/irq.h b/arch/cris/include/arch-v32/arch/irq.h
index 8270a1bbfdb6..5259084001d4 100644
--- a/arch/cris/include/arch-v32/arch/irq.h
+++ b/arch/cris/include/arch-v32/arch/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARCH_IRQ_H
#define _ASM_ARCH_IRQ_H
diff --git a/arch/cris/include/arch-v32/arch/irqflags.h b/arch/cris/include/arch-v32/arch/irqflags.h
index 5f6fddf99509..d55bf82de77c 100644
--- a/arch/cris/include/arch-v32/arch/irqflags.h
+++ b/arch/cris/include/arch-v32/arch/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CRIS_ARCH_IRQFLAGS_H
#define __ASM_CRIS_ARCH_IRQFLAGS_H
diff --git a/arch/cris/include/arch-v32/arch/mmu.h b/arch/cris/include/arch-v32/arch/mmu.h
index e6db1616dee5..a8eec1312de0 100644
--- a/arch/cris/include/arch-v32/arch/mmu.h
+++ b/arch/cris/include/arch-v32/arch/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_MMU_H
#define _ASM_CRIS_ARCH_MMU_H
diff --git a/arch/cris/include/arch-v32/arch/offset.h b/arch/cris/include/arch-v32/arch/offset.h
index 4442c4bd52f4..10a670443386 100644
--- a/arch/cris/include/arch-v32/arch/offset.h
+++ b/arch/cris/include/arch-v32/arch/offset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_OFFSETS_H__
#define __ASM_OFFSETS_H__
/*
diff --git a/arch/cris/include/arch-v32/arch/page.h b/arch/cris/include/arch-v32/arch/page.h
index e5b5aab52de8..7ac04f615193 100644
--- a/arch/cris/include/arch-v32/arch/page.h
+++ b/arch/cris/include/arch-v32/arch/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_PAGE_H
#define _ASM_CRIS_ARCH_PAGE_H
diff --git a/arch/cris/include/arch-v32/arch/pgtable.h b/arch/cris/include/arch-v32/arch/pgtable.h
index c1051a8da33d..e787b19b700e 100644
--- a/arch/cris/include/arch-v32/arch/pgtable.h
+++ b/arch/cris/include/arch-v32/arch/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_PGTABLE_H
#define _ASM_CRIS_ARCH_PGTABLE_H
diff --git a/arch/cris/include/arch-v32/arch/processor.h b/arch/cris/include/arch-v32/arch/processor.h
index 568759271ab5..554088ab5f01 100644
--- a/arch/cris/include/arch-v32/arch/processor.h
+++ b/arch/cris/include/arch-v32/arch/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_PROCESSOR_H
#define _ASM_CRIS_ARCH_PROCESSOR_H
diff --git a/arch/cris/include/arch-v32/arch/swab.h b/arch/cris/include/arch-v32/arch/swab.h
index 9a4ea5e209c2..280dd7093e4f 100644
--- a/arch/cris/include/arch-v32/arch/swab.h
+++ b/arch/cris/include/arch-v32/arch/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_SWAB_H
#define _ASM_CRIS_ARCH_SWAB_H
diff --git a/arch/cris/include/arch-v32/arch/system.h b/arch/cris/include/arch-v32/arch/system.h
index db853fb3a458..84f00e5d4652 100644
--- a/arch/cris/include/arch-v32/arch/system.h
+++ b/arch/cris/include/arch-v32/arch/system.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_SYSTEM_H
#define _ASM_CRIS_ARCH_SYSTEM_H
diff --git a/arch/cris/include/arch-v32/arch/thread_info.h b/arch/cris/include/arch-v32/arch/thread_info.h
index d6936956a3c6..8514669e5fab 100644
--- a/arch/cris/include/arch-v32/arch/thread_info.h
+++ b/arch/cris/include/arch-v32/arch/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_THREAD_INFO_H
#define _ASM_CRIS_ARCH_THREAD_INFO_H
diff --git a/arch/cris/include/arch-v32/arch/timex.h b/arch/cris/include/arch-v32/arch/timex.h
index 2591d3c5ed9d..2cd8e704a73b 100644
--- a/arch/cris/include/arch-v32/arch/timex.h
+++ b/arch/cris/include/arch-v32/arch/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_TIMEX_H
#define _ASM_CRIS_ARCH_TIMEX_H
diff --git a/arch/cris/include/arch-v32/arch/tlb.h b/arch/cris/include/arch-v32/arch/tlb.h
index 4effb1253660..50452802738f 100644
--- a/arch/cris/include/arch-v32/arch/tlb.h
+++ b/arch/cris/include/arch-v32/arch/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_ARCH_TLB_H
#define _CRIS_ARCH_TLB_H
diff --git a/arch/cris/include/arch-v32/arch/uaccess.h b/arch/cris/include/arch-v32/arch/uaccess.h
index dc2ce090f624..214bd26efcd9 100644
--- a/arch/cris/include/arch-v32/arch/uaccess.h
+++ b/arch/cris/include/arch-v32/arch/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Authors: Hans-Peter Nilsson (hp@axis.com)
*
diff --git a/arch/cris/include/arch-v32/arch/unistd.h b/arch/cris/include/arch-v32/arch/unistd.h
index 0051114c63c7..764435b3b28e 100644
--- a/arch/cris/include/arch-v32/arch/unistd.h
+++ b/arch/cris/include/arch-v32/arch/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_UNISTD_H_
#define _ASM_CRIS_ARCH_UNISTD_H_
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/arbiter.h b/arch/cris/include/arch-v32/mach-a3/mach/arbiter.h
index 65e9d6ff0520..7fafc370def2 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/arbiter.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/arbiter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_ARBITER_H
#define _ASM_CRIS_ARCH_ARBITER_H
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/dma.h b/arch/cris/include/arch-v32/mach-a3/mach/dma.h
index f01dca1ad108..92a74eab4395 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/dma.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARCH_CRIS_DMA_H
#define _ASM_ARCH_CRIS_DMA_H
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/clkgen_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/clkgen_defs_asm.h
index 02855adf63e8..3d7f12ec1c54 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/clkgen_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/clkgen_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __clkgen_defs_asm_h
#define __clkgen_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/ddr2_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/ddr2_defs_asm.h
index b12be03edacb..df79e5a7f02a 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/ddr2_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/ddr2_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ddr2_defs_asm_h
#define __ddr2_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/gio_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/gio_defs_asm.h
index df6714fda179..04b7ff3f70a2 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/gio_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/gio_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __gio_defs_asm_h
#define __gio_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/pinmux_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/pinmux_defs_asm.h
index c3dc9c666c46..a73168a8e93a 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/pinmux_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/pinmux_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __pinmux_defs_asm_h
#define __pinmux_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/pio_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/pio_defs_asm.h
index 3907ef4921c8..463bb9e2c38e 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/pio_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/pio_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __pio_defs_asm_h
#define __pio_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/reg_map_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/reg_map_asm.h
index 89439e9610e2..e3bf8e0692a6 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/reg_map_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/reg_map_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __reg_map_asm_h
#define __reg_map_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/timer_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/timer_defs_asm.h
index b129e826fc34..82da59c382c2 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/timer_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/asm/timer_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __timer_defs_asm_h
#define __timer_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/clkgen_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/clkgen_defs.h
index c1e9ba93b3a3..32d58fed3b03 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/clkgen_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/clkgen_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __clkgen_defs_h
#define __clkgen_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/ddr2_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/ddr2_defs.h
index 0f30e8bf946d..84684c335d7d 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/ddr2_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/ddr2_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ddr2_defs_h
#define __ddr2_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/gio_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/gio_defs.h
index 5d88e0db23ae..83ab1f495612 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/gio_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/gio_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __gio_defs_h
#define __gio_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/intr_vect.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/intr_vect.h
index bea699aa480e..55dab5bd7bd3 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/intr_vect.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/intr_vect.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Interrupt vector numbers autogenerated by ../../../tools/rdesc/bin/rdes2intr
from intr_vect.r */
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/intr_vect_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/intr_vect_defs.h
index b820f6347c74..71a28d1ed74a 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/intr_vect_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/intr_vect_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __intr_vect_defs_h
#define __intr_vect_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_reg_space_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_reg_space_asm.h
index d75a74e90458..5e5f4d94aecf 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_reg_space_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_reg_space_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Autogenerated Changes here will be lost!
* generated by ./gen_sw.pl Wed Feb 14 09:27:48 2007 iop_sw.cfg
*/
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sap_in_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sap_in_defs_asm.h
index 7f90b5a0460d..ee0587ec433c 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sap_in_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sap_in_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sap_in_defs_asm_h
#define __iop_sap_in_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sap_out_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sap_out_defs_asm.h
index 399bd656406b..9bbe0b920c93 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sap_out_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sap_out_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sap_out_defs_asm_h
#define __iop_sap_out_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_cfg_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_cfg_defs_asm.h
index 3b3949b51a66..c4b8bc386cb6 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_cfg_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_cfg_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_cfg_defs_asm_h
#define __iop_sw_cfg_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_cpu_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_cpu_defs_asm.h
index 3f4fe1b31815..89f36dc1f96d 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_cpu_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_cpu_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_cpu_defs_asm_h
#define __iop_sw_cpu_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_mpu_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_mpu_defs_asm.h
index ffcc83b22d21..45e19d79dba9 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_mpu_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_mpu_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_mpu_defs_asm_h
#define __iop_sw_mpu_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_spu_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_spu_defs_asm.h
index 67a745338087..55afb6e320e4 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_spu_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_sw_spu_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_spu_defs_asm_h
#define __iop_sw_spu_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_version_defs_asm.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_version_defs_asm.h
index 4ad671202af0..79ff8fafd3bf 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_version_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/asm/iop_version_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_version_defs_asm_h
#define __iop_version_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_reg_space.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_reg_space.h
index af3196c60a46..23d731f36145 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_reg_space.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_reg_space.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Autogenerated Changes here will be lost!
* generated by ./gen_sw.pl Wed Feb 14 09:27:48 2007 iop_sw.cfg
*/
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sap_in_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sap_in_defs.h
index 51dde016c03a..1d6c09a3230d 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sap_in_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sap_in_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sap_in_defs_h
#define __iop_sap_in_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sap_out_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sap_out_defs.h
index 5af88baa2ac1..1cbd30efadb7 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sap_out_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sap_out_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sap_out_defs_h
#define __iop_sap_out_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_cfg_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_cfg_defs.h
index 98ac95275a1c..07050b053bb4 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_cfg_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_cfg_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_cfg_defs_h
#define __iop_sw_cfg_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_cpu_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_cpu_defs.h
index a16f556370eb..b4acdae4f653 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_cpu_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_cpu_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_cpu_defs_h
#define __iop_sw_cpu_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_mpu_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_mpu_defs.h
index a2e4e1a33e57..bc1abb5fb308 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_mpu_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_mpu_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_mpu_defs_h
#define __iop_sw_mpu_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_spu_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_spu_defs.h
index c8560b865a1a..82b64360a4d3 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_spu_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_sw_spu_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_sw_spu_defs_h
#define __iop_sw_spu_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_version_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_version_defs.h
index 20de425e652b..d944c6ce5f9b 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_version_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/iop/iop_version_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __iop_version_defs_h
#define __iop_version_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/l2cache_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/l2cache_defs.h
index 243ac3c882cb..5c72116f1067 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/l2cache_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/l2cache_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __l2cache_defs_h
#define __l2cache_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/marb_bar_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/marb_bar_defs.h
index c0e7628cbf7d..84f68755a75c 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/marb_bar_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/marb_bar_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __marb_bar_defs_h
#define __marb_bar_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/marb_foo_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/marb_foo_defs.h
index 2baa833f109a..13539bc5d613 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/marb_foo_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/marb_foo_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __marb_foo_defs_h
#define __marb_foo_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/pinmux_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/pinmux_defs.h
index 4b96cd2cba8a..d604042a52bf 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/pinmux_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/pinmux_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __pinmux_defs_h
#define __pinmux_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/pio_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/pio_defs.h
index 2d8e4b4cc602..348e39f419e0 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/pio_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/pio_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __pio_defs_h
#define __pio_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/reg_map.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/reg_map.h
index 36e59d6e96b6..04ef87d42513 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/reg_map.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/reg_map.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __reg_map_h
#define __reg_map_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/strmux_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/strmux_defs.h
index 14f718a4ecc3..a19955fa8d94 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/strmux_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/strmux_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __strmux_defs_h
#define __strmux_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/timer_defs.h b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/timer_defs.h
index 2c33e097d60a..de849a6362f6 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/hwregs/timer_defs.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/hwregs/timer_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __timer_defs_h
#define __timer_defs_h
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/memmap.h b/arch/cris/include/arch-v32/mach-a3/mach/memmap.h
index 7e15c9eb4e49..7b9a9a5699b2 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/memmap.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/memmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARCH_MEMMAP_H
#define _ASM_ARCH_MEMMAP_H
diff --git a/arch/cris/include/arch-v32/mach-a3/mach/pinmux.h b/arch/cris/include/arch-v32/mach-a3/mach/pinmux.h
index db42a7254584..35e3fc97d6a3 100644
--- a/arch/cris/include/arch-v32/mach-a3/mach/pinmux.h
+++ b/arch/cris/include/arch-v32/mach-a3/mach/pinmux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_PINMUX_H
#define _ASM_CRIS_ARCH_PINMUX_H
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/arbiter.h b/arch/cris/include/arch-v32/mach-fs/mach/arbiter.h
index a2e0ec8faa7d..f9401a3de83c 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/arbiter.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/arbiter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_ARBITER_H
#define _ASM_CRIS_ARCH_ARBITER_H
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/dma.h b/arch/cris/include/arch-v32/mach-fs/mach/dma.h
index a8c59292586a..53a59944a48b 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/dma.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARCH_CRIS_DMA_H
#define _ASM_ARCH_CRIS_DMA_H
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/bif_core_defs_asm.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/bif_core_defs_asm.h
index 0a409c92837e..092cad384b86 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/bif_core_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/bif_core_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __bif_core_defs_asm_h
#define __bif_core_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/config_defs_asm.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/config_defs_asm.h
index a9908dfc2937..5b38835b42f7 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/config_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/config_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __config_defs_asm_h
#define __config_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/gio_defs_asm.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/gio_defs_asm.h
index be4c63936d90..3d2056892832 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/gio_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/gio_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __gio_defs_asm_h
#define __gio_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/pinmux_defs_asm.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/pinmux_defs_asm.h
index 30cf5a936b64..99968cfa446a 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/pinmux_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/pinmux_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __pinmux_defs_asm_h
#define __pinmux_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/reg_map_asm.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/reg_map_asm.h
index 87517aebd2cb..412b8748e952 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/reg_map_asm.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/reg_map_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __reg_map_h
#define __reg_map_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/timer_defs_asm.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/timer_defs_asm.h
index e1197194d5c1..3eb17cfbdc75 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/timer_defs_asm.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/asm/timer_defs_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __timer_defs_asm_h
#define __timer_defs_asm_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_core_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_core_defs.h
index 44362a62b47c..a9ffb7edaf91 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_core_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_core_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __bif_core_defs_h
#define __bif_core_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_dma_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_dma_defs.h
index 3cb51a09dba7..d1fa172f58f4 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_dma_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_dma_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __bif_dma_defs_h
#define __bif_dma_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_slave_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_slave_defs.h
index 0c434585a3f9..a8d7cc528546 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_slave_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/bif_slave_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __bif_slave_defs_h
#define __bif_slave_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/config_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/config_defs.h
index abc5f20705f7..cc8b20d17237 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/config_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/config_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __config_defs_h
#define __config_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/gio_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/gio_defs.h
index 26aa3efcf91b..da0b1103b66d 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/gio_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/gio_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __gio_defs_h
#define __gio_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/intr_vect.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/intr_vect.h
index bacc2a895c21..ea752a2d8ee2 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/intr_vect.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/intr_vect.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Interrupt vector numbers autogenerated by /n/asic/design/tools/rdesc/src/rdes2intr version
from ../../inst/intr_vect/rtl/guinness/ivmask.config.r
version . */
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/intr_vect_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/intr_vect_defs.h
index aa65128ae1aa..11ebd66585cd 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/intr_vect_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/intr_vect_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __intr_vect_defs_h
#define __intr_vect_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/marb_bp_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/marb_bp_defs.h
index dcaaec4620ba..fb7e20d77591 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/marb_bp_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/marb_bp_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __marb_bp_defs_h
#define __marb_bp_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/marb_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/marb_defs.h
index 254da0854986..872a7942916a 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/marb_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/marb_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __marb_defs_h
#define __marb_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/pinmux_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/pinmux_defs.h
index 751eab5f191c..0a316dc36a6b 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/pinmux_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/pinmux_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __pinmux_defs_h
#define __pinmux_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/reg_map.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/reg_map.h
index 4146973a58b3..1bfca2666158 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/reg_map.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/reg_map.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __reg_map_h
#define __reg_map_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/strmux_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/strmux_defs.h
index cbfaa867829e..0ab49edb1c81 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/strmux_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/strmux_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __strmux_defs_h
#define __strmux_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/timer_defs.h b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/timer_defs.h
index 76bcc591921d..59c70ba9959b 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/hwregs/timer_defs.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/hwregs/timer_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __timer_defs_h
#define __timer_defs_h
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/memmap.h b/arch/cris/include/arch-v32/mach-fs/mach/memmap.h
index d29df5644d3e..94328936cc91 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/memmap.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/memmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARCH_MEMMAP_H
#define _ASM_ARCH_MEMMAP_H
diff --git a/arch/cris/include/arch-v32/mach-fs/mach/pinmux.h b/arch/cris/include/arch-v32/mach-fs/mach/pinmux.h
index 09bf0c90d2d3..1d87f1392dc8 100644
--- a/arch/cris/include/arch-v32/mach-fs/mach/pinmux.h
+++ b/arch/cris/include/arch-v32/mach-fs/mach/pinmux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_ARCH_PINMUX_H
#define _ASM_CRIS_ARCH_PINMUX_H
diff --git a/arch/cris/include/asm/axisflashmap.h b/arch/cris/include/asm/axisflashmap.h
index 015ca5445ddd..185596c2caab 100644
--- a/arch/cris/include/asm/axisflashmap.h
+++ b/arch/cris/include/asm/axisflashmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_AXISFLASHMAP_H
#define __ASM_AXISFLASHMAP_H
diff --git a/arch/cris/include/asm/bitops.h b/arch/cris/include/asm/bitops.h
index 8062cb52d343..78f975ad42d9 100644
--- a/arch/cris/include/asm/bitops.h
+++ b/arch/cris/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* asm/bitops.h for Linux/CRIS
*
* TODO: asm versions if speed is needed
diff --git a/arch/cris/include/asm/bug.h b/arch/cris/include/asm/bug.h
index 3b3958963801..f1fa72a426c2 100644
--- a/arch/cris/include/asm/bug.h
+++ b/arch/cris/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_BUG_H
#define _CRIS_BUG_H
#include <arch/bug.h>
diff --git a/arch/cris/include/asm/cache.h b/arch/cris/include/asm/cache.h
index a692b9fba8b9..8dac0922721c 100644
--- a/arch/cris/include/asm/cache.h
+++ b/arch/cris/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CACHE_H
#define _ASM_CACHE_H
diff --git a/arch/cris/include/asm/cacheflush.h b/arch/cris/include/asm/cacheflush.h
index 36795bca605e..0da1c76a2bbc 100644
--- a/arch/cris/include/asm/cacheflush.h
+++ b/arch/cris/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_CACHEFLUSH_H
#define _CRIS_CACHEFLUSH_H
diff --git a/arch/cris/include/asm/checksum.h b/arch/cris/include/asm/checksum.h
index ea949c60b190..61b6a4f6a002 100644
--- a/arch/cris/include/asm/checksum.h
+++ b/arch/cris/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* TODO: csum_tcpudp_magic could be speeded up, and csum_fold as well */
#ifndef _CRIS_CHECKSUM_H
diff --git a/arch/cris/include/asm/delay.h b/arch/cris/include/asm/delay.h
index 75ec581bfead..2dfdb13e1a9e 100644
--- a/arch/cris/include/asm/delay.h
+++ b/arch/cris/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_DELAY_H
#define _CRIS_DELAY_H
diff --git a/arch/cris/include/asm/dma-mapping.h b/arch/cris/include/asm/dma-mapping.h
index 256169de3743..1c9bf14807db 100644
--- a/arch/cris/include/asm/dma-mapping.h
+++ b/arch/cris/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_DMA_MAPPING_H
#define _ASM_CRIS_DMA_MAPPING_H
diff --git a/arch/cris/include/asm/dma.h b/arch/cris/include/asm/dma.h
index 30fd715fa589..e1f7d6d9bfc2 100644
--- a/arch/cris/include/asm/dma.h
+++ b/arch/cris/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: dma.h,v 1.2 2001/05/09 12:17:42 johana Exp $ */
#ifndef _ASM_DMA_H
diff --git a/arch/cris/include/asm/eshlibld.h b/arch/cris/include/asm/eshlibld.h
index 70aa448256b0..88940556c2db 100644
--- a/arch/cris/include/asm/eshlibld.h
+++ b/arch/cris/include/asm/eshlibld.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*!**************************************************************************
*!
*! FILE NAME : eshlibld.h
diff --git a/arch/cris/include/asm/etraxi2c.h b/arch/cris/include/asm/etraxi2c.h
index e369a7620893..0fa6f03d93e7 100644
--- a/arch/cris/include/asm/etraxi2c.h
+++ b/arch/cris/include/asm/etraxi2c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: etraxi2c.h,v 1.1 2001/01/18 15:49:57 bjornw Exp $ */
#ifndef _LINUX_ETRAXI2C_H
diff --git a/arch/cris/include/asm/fasttimer.h b/arch/cris/include/asm/fasttimer.h
index 8f8a8d6c9653..bc109f4a8377 100644
--- a/arch/cris/include/asm/fasttimer.h
+++ b/arch/cris/include/asm/fasttimer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-cris/fasttimer.h
*
diff --git a/arch/cris/include/asm/fb.h b/arch/cris/include/asm/fb.h
index c7df38030992..e10150073c30 100644
--- a/arch/cris/include/asm/fb.h
+++ b/arch/cris/include/asm/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FB_H_
#define _ASM_FB_H_
#include <linux/fb.h>
diff --git a/arch/cris/include/asm/io.h b/arch/cris/include/asm/io.h
index fe0b2a0ae03b..c92712d30f54 100644
--- a/arch/cris/include/asm/io.h
+++ b/arch/cris/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_IO_H
#define _ASM_CRIS_IO_H
diff --git a/arch/cris/include/asm/irq.h b/arch/cris/include/asm/irq.h
index ce0fcf540d62..6a932f7db58e 100644
--- a/arch/cris/include/asm/irq.h
+++ b/arch/cris/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IRQ_H
#define _ASM_IRQ_H
diff --git a/arch/cris/include/asm/mmu.h b/arch/cris/include/asm/mmu.h
index e06ea94ecffd..54da8f64b37a 100644
--- a/arch/cris/include/asm/mmu.h
+++ b/arch/cris/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CRIS MMU constants and PTE layout
*/
diff --git a/arch/cris/include/asm/mmu_context.h b/arch/cris/include/asm/mmu_context.h
index 349acfd25d2f..178f3b72e9e3 100644
--- a/arch/cris/include/asm/mmu_context.h
+++ b/arch/cris/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CRIS_MMU_CONTEXT_H
#define __CRIS_MMU_CONTEXT_H
diff --git a/arch/cris/include/asm/page.h b/arch/cris/include/asm/page.h
index dfc53f9b88ec..5b5b3dad7484 100644
--- a/arch/cris/include/asm/page.h
+++ b/arch/cris/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_PAGE_H
#define _CRIS_PAGE_H
diff --git a/arch/cris/include/asm/pci.h b/arch/cris/include/asm/pci.h
index 6e505332b3e3..6f8b366a226a 100644
--- a/arch/cris/include/asm/pci.h
+++ b/arch/cris/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CRIS_PCI_H
#define __ASM_CRIS_PCI_H
diff --git a/arch/cris/include/asm/pgalloc.h b/arch/cris/include/asm/pgalloc.h
index 42f1affb9c2d..d8dc1b834b7d 100644
--- a/arch/cris/include/asm/pgalloc.h
+++ b/arch/cris/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_PGALLOC_H
#define _CRIS_PGALLOC_H
diff --git a/arch/cris/include/asm/pgtable.h b/arch/cris/include/asm/pgtable.h
index fa3a73004cc5..03fca401e23c 100644
--- a/arch/cris/include/asm/pgtable.h
+++ b/arch/cris/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CRIS pgtable.h - macros and functions to manipulate page tables.
*/
diff --git a/arch/cris/include/asm/processor.h b/arch/cris/include/asm/processor.h
index bc2729e4b2c9..124dd5ec7f65 100644
--- a/arch/cris/include/asm/processor.h
+++ b/arch/cris/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-cris/processor.h
*
diff --git a/arch/cris/include/asm/ptrace.h b/arch/cris/include/asm/ptrace.h
index 9e788d04a4ef..d69295f1a7c8 100644
--- a/arch/cris/include/asm/ptrace.h
+++ b/arch/cris/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_PTRACE_H
#define _CRIS_PTRACE_H
diff --git a/arch/cris/include/asm/segment.h b/arch/cris/include/asm/segment.h
index c067513beaaf..6ac914b098bf 100644
--- a/arch/cris/include/asm/segment.h
+++ b/arch/cris/include/asm/segment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SEGMENT_H
#define _ASM_SEGMENT_H
diff --git a/arch/cris/include/asm/serial.h b/arch/cris/include/asm/serial.h
index af7535a955fb..f51e0e10faa7 100644
--- a/arch/cris/include/asm/serial.h
+++ b/arch/cris/include/asm/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SERIAL_H
#define _ASM_SERIAL_H
diff --git a/arch/cris/include/asm/shmparam.h b/arch/cris/include/asm/shmparam.h
index d29d12270687..704a7257cb0d 100644
--- a/arch/cris/include/asm/shmparam.h
+++ b/arch/cris/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_SHMPARAM_H
#define _ASM_CRIS_SHMPARAM_H
diff --git a/arch/cris/include/asm/signal.h b/arch/cris/include/asm/signal.h
index c11b8745cece..64b0943c0b00 100644
--- a/arch/cris/include/asm/signal.h
+++ b/arch/cris/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_SIGNAL_H
#define _ASM_CRIS_SIGNAL_H
diff --git a/arch/cris/include/asm/stacktrace.h b/arch/cris/include/asm/stacktrace.h
index 2d90856943ad..154f0c90d0fa 100644
--- a/arch/cris/include/asm/stacktrace.h
+++ b/arch/cris/include/asm/stacktrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CRIS_STACKTRACE_H
#define __CRIS_STACKTRACE_H
diff --git a/arch/cris/include/asm/string.h b/arch/cris/include/asm/string.h
index d5db39f9eea1..bae5a0867785 100644
--- a/arch/cris/include/asm/string.h
+++ b/arch/cris/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_STRING_H
#define _ASM_CRIS_STRING_H
diff --git a/arch/cris/include/asm/swab.h b/arch/cris/include/asm/swab.h
index 991b6ace1ba9..5e1d8cf277fb 100644
--- a/arch/cris/include/asm/swab.h
+++ b/arch/cris/include/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_SWAB_H
#define _CRIS_SWAB_H
diff --git a/arch/cris/include/asm/switch_to.h b/arch/cris/include/asm/switch_to.h
index d842e1163ba1..dde4acf6e54d 100644
--- a/arch/cris/include/asm/switch_to.h
+++ b/arch/cris/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CRIS_SWITCH_TO_H
#define __ASM_CRIS_SWITCH_TO_H
diff --git a/arch/cris/include/asm/termios.h b/arch/cris/include/asm/termios.h
index 1991cd9e4083..9832bf3221d0 100644
--- a/arch/cris/include/asm/termios.h
+++ b/arch/cris/include/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_TERMIOS_H
#define _CRIS_TERMIOS_H
diff --git a/arch/cris/include/asm/thread_info.h b/arch/cris/include/asm/thread_info.h
index 4ead1b40d2d7..472830c90997 100644
--- a/arch/cris/include/asm/thread_info.h
+++ b/arch/cris/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* thread_info.h: CRIS low-level thread information
*
* Copyright (C) 2002 David Howells (dhowells@redhat.com)
diff --git a/arch/cris/include/asm/timex.h b/arch/cris/include/asm/timex.h
index 980924ae7518..3840a556612b 100644
--- a/arch/cris/include/asm/timex.h
+++ b/arch/cris/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-cris/timex.h
*
diff --git a/arch/cris/include/asm/tlb.h b/arch/cris/include/asm/tlb.h
index 77384ea2f29d..1f6a8a67cfda 100644
--- a/arch/cris/include/asm/tlb.h
+++ b/arch/cris/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_TLB_H
#define _CRIS_TLB_H
diff --git a/arch/cris/include/asm/tlbflush.h b/arch/cris/include/asm/tlbflush.h
index b424f43a9fd6..e7cb964536d0 100644
--- a/arch/cris/include/asm/tlbflush.h
+++ b/arch/cris/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRIS_TLBFLUSH_H
#define _CRIS_TLBFLUSH_H
diff --git a/arch/cris/include/asm/uaccess.h b/arch/cris/include/asm/uaccess.h
index b0c6b077b632..3b42ab0cae93 100644
--- a/arch/cris/include/asm/uaccess.h
+++ b/arch/cris/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Authors: Bjorn Wesen (bjornw@axis.com)
* Hans-Peter Nilsson (hp@axis.com)
diff --git a/arch/cris/include/asm/ucontext.h b/arch/cris/include/asm/ucontext.h
index eed6ad5eb3f2..22f7e7cf59c8 100644
--- a/arch/cris/include/asm/ucontext.h
+++ b/arch/cris/include/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_UCONTEXT_H
#define _ASM_CRIS_UCONTEXT_H
diff --git a/arch/cris/include/asm/unaligned.h b/arch/cris/include/asm/unaligned.h
index 7b3f3fec567c..21772cf600dd 100644
--- a/arch/cris/include/asm/unaligned.h
+++ b/arch/cris/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_UNALIGNED_H
#define _ASM_CRIS_UNALIGNED_H
diff --git a/arch/cris/include/asm/unistd.h b/arch/cris/include/asm/unistd.h
index 9c23535821c0..6a92c0505156 100644
--- a/arch/cris/include/asm/unistd.h
+++ b/arch/cris/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CRIS_UNISTD_H_
#define _ASM_CRIS_UNISTD_H_
diff --git a/arch/cris/include/asm/user.h b/arch/cris/include/asm/user.h
index 59147cf43cf6..a19c39547248 100644
--- a/arch/cris/include/asm/user.h
+++ b/arch/cris/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CRIS_USER_H
#define __ASM_CRIS_USER_H
diff --git a/arch/cris/include/uapi/arch-v10/arch/sv_addr_ag.h b/arch/cris/include/uapi/arch-v10/arch/sv_addr_ag.h
index c4b6b0e9b1da..2644bcbe4490 100644
--- a/arch/cris/include/uapi/arch-v10/arch/sv_addr_ag.h
+++ b/arch/cris/include/uapi/arch-v10/arch/sv_addr_ag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*!**************************************************************************
*!
*! MACROS:
diff --git a/arch/cris/include/uapi/arch-v10/arch/svinto.h b/arch/cris/include/uapi/arch-v10/arch/svinto.h
index da5c15272652..793a4275d26a 100644
--- a/arch/cris/include/uapi/arch-v10/arch/svinto.h
+++ b/arch/cris/include/uapi/arch-v10/arch/svinto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_CRIS_SVINTO_H
#define _ASM_CRIS_SVINTO_H
diff --git a/arch/cris/include/uapi/arch-v10/arch/user.h b/arch/cris/include/uapi/arch-v10/arch/user.h
index 9303ea77c915..5b9288527b98 100644
--- a/arch/cris/include/uapi/arch-v10/arch/user.h
+++ b/arch/cris/include/uapi/arch-v10/arch/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_CRIS_ARCH_USER_H
#define __ASM_CRIS_ARCH_USER_H
diff --git a/arch/cris/include/uapi/arch-v32/arch/cryptocop.h b/arch/cris/include/uapi/arch-v32/arch/cryptocop.h
index 694fd13ce1cf..1072d5bf7d4f 100644
--- a/arch/cris/include/uapi/arch-v32/arch/cryptocop.h
+++ b/arch/cris/include/uapi/arch-v32/arch/cryptocop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* The device /dev/cryptocop is accessible using this driver using
* CRYPTOCOP_MAJOR (254) and minor number 0.
diff --git a/arch/cris/include/uapi/arch-v32/arch/user.h b/arch/cris/include/uapi/arch-v32/arch/user.h
index 03fa1f3c3c00..3576b540ba78 100644
--- a/arch/cris/include/uapi/arch-v32/arch/user.h
+++ b/arch/cris/include/uapi/arch-v32/arch/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_CRIS_ARCH_USER_H
#define _ASM_CRIS_ARCH_USER_H
diff --git a/arch/cris/include/uapi/asm/byteorder.h b/arch/cris/include/uapi/asm/byteorder.h
index bcd189798e26..6e19891e06ee 100644
--- a/arch/cris/include/uapi/asm/byteorder.h
+++ b/arch/cris/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _CRIS_BYTEORDER_H
#define _CRIS_BYTEORDER_H
diff --git a/arch/cris/include/uapi/asm/elf.h b/arch/cris/include/uapi/asm/elf.h
index a5df05bfee66..ea4cbdafe885 100644
--- a/arch/cris/include/uapi/asm/elf.h
+++ b/arch/cris/include/uapi/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASMCRIS_ELF_H
#define __ASMCRIS_ELF_H
diff --git a/arch/cris/include/uapi/asm/elf_v10.h b/arch/cris/include/uapi/asm/elf_v10.h
index 3ea65cef529d..b1515f2684da 100644
--- a/arch/cris/include/uapi/asm/elf_v10.h
+++ b/arch/cris/include/uapi/asm/elf_v10.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASMCRIS_ARCH_ELF_H
#define __ASMCRIS_ARCH_ELF_H
diff --git a/arch/cris/include/uapi/asm/elf_v32.h b/arch/cris/include/uapi/asm/elf_v32.h
index f09fe49005c0..cc00ffdb7f9c 100644
--- a/arch/cris/include/uapi/asm/elf_v32.h
+++ b/arch/cris/include/uapi/asm/elf_v32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_CRIS_ELF_H
#define _ASM_CRIS_ELF_H
diff --git a/arch/cris/include/uapi/asm/ethernet.h b/arch/cris/include/uapi/asm/ethernet.h
index 4d58652c3a49..e0c1a6322824 100644
--- a/arch/cris/include/uapi/asm/ethernet.h
+++ b/arch/cris/include/uapi/asm/ethernet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ioctl defines for ethernet driver
*
diff --git a/arch/cris/include/uapi/asm/etraxgpio.h b/arch/cris/include/uapi/asm/etraxgpio.h
index c6e7d57c8b24..10ab0dd45bfe 100644
--- a/arch/cris/include/uapi/asm/etraxgpio.h
+++ b/arch/cris/include/uapi/asm/etraxgpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* The following devices are accessible using this driver using
* GPIO_MAJOR (120) and a couple of minor numbers.
diff --git a/arch/cris/include/uapi/asm/ioctls.h b/arch/cris/include/uapi/asm/ioctls.h
index 488fbb3f5e84..92d654ce3d84 100644
--- a/arch/cris/include/uapi/asm/ioctls.h
+++ b/arch/cris/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ARCH_CRIS_IOCTLS_H__
#define __ARCH_CRIS_IOCTLS_H__
diff --git a/arch/cris/include/uapi/asm/param.h b/arch/cris/include/uapi/asm/param.h
index 484fcf8667c0..ae296115c7c9 100644
--- a/arch/cris/include/uapi/asm/param.h
+++ b/arch/cris/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASMCRIS_PARAM_H
#define _ASMCRIS_PARAM_H
diff --git a/arch/cris/include/uapi/asm/posix_types.h b/arch/cris/include/uapi/asm/posix_types.h
index 0f22e6a67ea5..c75d8b0acc99 100644
--- a/arch/cris/include/uapi/asm/posix_types.h
+++ b/arch/cris/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Id: posix_types.h,v 1.1 2000/07/10 16:32:31 bjornw Exp $ */
/* We cheat a bit and use our C-coded bitops functions from asm/bitops.h */
diff --git a/arch/cris/include/uapi/asm/ptrace.h b/arch/cris/include/uapi/asm/ptrace.h
index bd8946f83ed3..99de59e54613 100644
--- a/arch/cris/include/uapi/asm/ptrace.h
+++ b/arch/cris/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifdef __arch_v32
#include <asm/ptrace_v32.h>
#else
diff --git a/arch/cris/include/uapi/asm/ptrace_v10.h b/arch/cris/include/uapi/asm/ptrace_v10.h
index 1a232739565e..4ffffb7ab102 100644
--- a/arch/cris/include/uapi/asm/ptrace_v10.h
+++ b/arch/cris/include/uapi/asm/ptrace_v10.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _CRIS_ARCH_PTRACE_H
#define _CRIS_ARCH_PTRACE_H
diff --git a/arch/cris/include/uapi/asm/ptrace_v32.h b/arch/cris/include/uapi/asm/ptrace_v32.h
index 19773d3bd4c4..a91c4aacb14f 100644
--- a/arch/cris/include/uapi/asm/ptrace_v32.h
+++ b/arch/cris/include/uapi/asm/ptrace_v32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _CRIS_ARCH_PTRACE_H
#define _CRIS_ARCH_PTRACE_H
diff --git a/arch/cris/include/uapi/asm/rs485.h b/arch/cris/include/uapi/asm/rs485.h
index ad40f9fbcb8a..041d31fa33d5 100644
--- a/arch/cris/include/uapi/asm/rs485.h
+++ b/arch/cris/include/uapi/asm/rs485.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* RS-485 structures */
/* Used with ioctl() TIOCSERSETRS485 for backward compatibility!
diff --git a/arch/cris/include/uapi/asm/setup.h b/arch/cris/include/uapi/asm/setup.h
index b90728652d1a..4854ace9db76 100644
--- a/arch/cris/include/uapi/asm/setup.h
+++ b/arch/cris/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _CRIS_SETUP_H
#define _CRIS_SETUP_H
diff --git a/arch/cris/include/uapi/asm/sigcontext.h b/arch/cris/include/uapi/asm/sigcontext.h
index a1d634e120df..97565ce3f0b9 100644
--- a/arch/cris/include/uapi/asm/sigcontext.h
+++ b/arch/cris/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Id: sigcontext.h,v 1.1 2000/07/10 16:32:31 bjornw Exp $ */
#ifndef _ASM_CRIS_SIGCONTEXT_H
diff --git a/arch/cris/include/uapi/asm/signal.h b/arch/cris/include/uapi/asm/signal.h
index ce42fa7c32ad..e4ab00f00111 100644
--- a/arch/cris/include/uapi/asm/signal.h
+++ b/arch/cris/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_CRIS_SIGNAL_H
#define _UAPI_ASM_CRIS_SIGNAL_H
diff --git a/arch/cris/include/uapi/asm/stat.h b/arch/cris/include/uapi/asm/stat.h
index 9e558cc3c43b..cdb74d5862e4 100644
--- a/arch/cris/include/uapi/asm/stat.h
+++ b/arch/cris/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _CRIS_STAT_H
#define _CRIS_STAT_H
diff --git a/arch/cris/include/uapi/asm/sync_serial.h b/arch/cris/include/uapi/asm/sync_serial.h
index 7f827fea30e7..f2d468889ba9 100644
--- a/arch/cris/include/uapi/asm/sync_serial.h
+++ b/arch/cris/include/uapi/asm/sync_serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ioctl defines for synchronous serial port driver
*
diff --git a/arch/cris/include/uapi/asm/termbits.h b/arch/cris/include/uapi/asm/termbits.h
index 1c43bc874ccf..86925dc1fcae 100644
--- a/arch/cris/include/uapi/asm/termbits.h
+++ b/arch/cris/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Id: termbits.h,v 1.1 2000/07/10 16:32:31 bjornw Exp $ */
#ifndef __ARCH_ETRAX100_TERMBITS_H__
diff --git a/arch/cris/include/uapi/asm/termios.h b/arch/cris/include/uapi/asm/termios.h
index 0a0386a55027..d87800a6d854 100644
--- a/arch/cris/include/uapi/asm/termios.h
+++ b/arch/cris/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_CRIS_TERMIOS_H
#define _UAPI_CRIS_TERMIOS_H
diff --git a/arch/cris/include/uapi/asm/unistd.h b/arch/cris/include/uapi/asm/unistd.h
index 062b648b27e1..7aba513b082d 100644
--- a/arch/cris/include/uapi/asm/unistd.h
+++ b/arch/cris/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_CRIS_UNISTD_H_
#define _UAPI_ASM_CRIS_UNISTD_H_
diff --git a/arch/cris/kernel/Makefile b/arch/cris/kernel/Makefile
index 5fae398ca915..af075a5fb9aa 100644
--- a/arch/cris/kernel/Makefile
+++ b/arch/cris/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# $Id: Makefile,v 1.12 2004/10/19 13:07:43 starvik Exp $
#
# Makefile for the linux kernel.
diff --git a/arch/cris/kernel/asm-offsets.c b/arch/cris/kernel/asm-offsets.c
index a5fd88d816a6..0a5129941485 100644
--- a/arch/cris/kernel/asm-offsets.c
+++ b/arch/cris/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kbuild.h>
#include <linux/sched.h>
#include <asm/thread_info.h>
diff --git a/arch/cris/kernel/crisksyms.c b/arch/cris/kernel/crisksyms.c
index 3166d1cf2f84..7024f7278c89 100644
--- a/arch/cris/kernel/crisksyms.c
+++ b/arch/cris/kernel/crisksyms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/user.h>
#include <linux/elfcore.h>
diff --git a/arch/cris/kernel/devicetree.c b/arch/cris/kernel/devicetree.c
index 53ff8d73e7e1..36e1c658229f 100644
--- a/arch/cris/kernel/devicetree.c
+++ b/arch/cris/kernel/devicetree.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/bootmem.h>
#include <linux/printk.h>
diff --git a/arch/cris/kernel/irq.c b/arch/cris/kernel/irq.c
index 09b864f46f8a..726cdf4bf2d8 100644
--- a/arch/cris/kernel/irq.c
+++ b/arch/cris/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
*
* linux/arch/cris/kernel/irq.c
diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c
index 0bbd3a0c3d70..50e5cf09841d 100644
--- a/arch/cris/kernel/process.c
+++ b/arch/cris/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/kernel/process.c
*
diff --git a/arch/cris/kernel/profile.c b/arch/cris/kernel/profile.c
index ad56b37f8e11..d2f978ad129a 100644
--- a/arch/cris/kernel/profile.c
+++ b/arch/cris/kernel/profile.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/kernel.h>
diff --git a/arch/cris/kernel/ptrace.c b/arch/cris/kernel/ptrace.c
index 806b764059d5..af42789a1544 100644
--- a/arch/cris/kernel/ptrace.c
+++ b/arch/cris/kernel/ptrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/kernel/ptrace.c
*
diff --git a/arch/cris/kernel/setup.c b/arch/cris/kernel/setup.c
index 4b4853d914e2..524d47501a23 100644
--- a/arch/cris/kernel/setup.c
+++ b/arch/cris/kernel/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
*
* linux/arch/cris/kernel/setup.c
diff --git a/arch/cris/kernel/sys_cris.c b/arch/cris/kernel/sys_cris.c
index 8febb032fdd7..ecea13f1d760 100644
--- a/arch/cris/kernel/sys_cris.c
+++ b/arch/cris/kernel/sys_cris.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* $Id: sys_cris.c,v 1.6 2004/03/11 11:38:40 starvik Exp $
*
* linux/arch/cris/kernel/sys_cris.c
diff --git a/arch/cris/kernel/time.c b/arch/cris/kernel/time.c
index bc562cf511a6..593239274f98 100644
--- a/arch/cris/kernel/time.c
+++ b/arch/cris/kernel/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/kernel/time.c
*
diff --git a/arch/cris/kernel/traps.c b/arch/cris/kernel/traps.c
index d98131c45bb5..d4bc80469218 100644
--- a/arch/cris/kernel/traps.c
+++ b/arch/cris/kernel/traps.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/traps.c
*
diff --git a/arch/cris/kernel/vmlinux.lds.S b/arch/cris/kernel/vmlinux.lds.S
index 867f237d7c5c..6d1dbc1ba767 100644
--- a/arch/cris/kernel/vmlinux.lds.S
+++ b/arch/cris/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ld script to make the Linux/CRIS kernel
* Authors: Bjorn Wesen (bjornw@axis.com)
*
diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
index 1fca464f1b9e..29cc58038b98 100644
--- a/arch/cris/mm/fault.c
+++ b/arch/cris/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/cris/mm/fault.c
*
diff --git a/arch/cris/mm/init.c b/arch/cris/mm/init.c
index 1e7fd45b60f8..e41d9c833e1c 100644
--- a/arch/cris/mm/init.c
+++ b/arch/cris/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/mm/init.c
*
diff --git a/arch/cris/mm/ioremap.c b/arch/cris/mm/ioremap.c
index 80fdb995a8ce..350bd2a86ade 100644
--- a/arch/cris/mm/ioremap.c
+++ b/arch/cris/mm/ioremap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/cris/mm/ioremap.c
*
diff --git a/arch/cris/mm/tlb.c b/arch/cris/mm/tlb.c
index 8413741cfa0f..e0dbea62cb81 100644
--- a/arch/cris/mm/tlb.c
+++ b/arch/cris/mm/tlb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/cris/mm/tlb.c
*
diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig
index 1cce8243449e..af369b05fed5 100644
--- a/arch/frv/Kconfig
+++ b/arch/frv/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config FRV
bool
default y
diff --git a/arch/frv/Kconfig.debug b/arch/frv/Kconfig.debug
index 98c99a3ed2be..ecab6d8a79ed 100644
--- a/arch/frv/Kconfig.debug
+++ b/arch/frv/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/frv/include/asm/atomic_defs.h b/arch/frv/include/asm/atomic_defs.h
index d4912c88b829..ce3b8a4efc12 100644
--- a/arch/frv/include/asm/atomic_defs.h
+++ b/arch/frv/include/asm/atomic_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/spr-regs.h>
diff --git a/arch/frv/include/asm/dma-mapping.h b/arch/frv/include/asm/dma-mapping.h
index 354900917585..273defa02a02 100644
--- a/arch/frv/include/asm/dma-mapping.h
+++ b/arch/frv/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_DMA_MAPPING_H
#define _ASM_DMA_MAPPING_H
diff --git a/arch/frv/include/asm/fpu.h b/arch/frv/include/asm/fpu.h
index d73c60b56641..2f0929333f91 100644
--- a/arch/frv/include/asm/fpu.h
+++ b/arch/frv/include/asm/fpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_FPU_H
#define __ASM_FPU_H
diff --git a/arch/frv/include/asm/futex.h b/arch/frv/include/asm/futex.h
index ab346f5f8820..dfcc3484231d 100644
--- a/arch/frv/include/asm/futex.h
+++ b/arch/frv/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FUTEX_H
#define _ASM_FUTEX_H
diff --git a/arch/frv/include/asm/kmap_types.h b/arch/frv/include/asm/kmap_types.h
index 43901f220963..0849db1362d6 100644
--- a/arch/frv/include/asm/kmap_types.h
+++ b/arch/frv/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_KMAP_TYPES_H
#define _ASM_KMAP_TYPES_H
diff --git a/arch/frv/include/asm/local.h b/arch/frv/include/asm/local.h
index c27bdf04630e..259ae7b041a7 100644
--- a/arch/frv/include/asm/local.h
+++ b/arch/frv/include/asm/local.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_LOCAL_H
#define _ASM_LOCAL_H
diff --git a/arch/frv/include/asm/math-emu.h b/arch/frv/include/asm/math-emu.h
index 0c8f731b2180..8af762dd6109 100644
--- a/arch/frv/include/asm/math-emu.h
+++ b/arch/frv/include/asm/math-emu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MATH_EMU_H
#define _ASM_MATH_EMU_H
diff --git a/arch/frv/include/asm/page.h b/arch/frv/include/asm/page.h
index ec5eebce4fb3..0f76a0d586f6 100644
--- a/arch/frv/include/asm/page.h
+++ b/arch/frv/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PAGE_H
#define _ASM_PAGE_H
diff --git a/arch/frv/include/asm/percpu.h b/arch/frv/include/asm/percpu.h
index 2cad3f874ded..4209fe5fe0a2 100644
--- a/arch/frv/include/asm/percpu.h
+++ b/arch/frv/include/asm/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_PERCPU_H
#define __ASM_PERCPU_H
diff --git a/arch/frv/include/asm/processor.h b/arch/frv/include/asm/processor.h
index e4d08d74ed9f..021cce78b401 100644
--- a/arch/frv/include/asm/processor.h
+++ b/arch/frv/include/asm/processor.h
@@ -92,10 +92,6 @@ static inline void release_thread(struct task_struct *dead_task)
extern asmlinkage void save_user_regs(struct user_context *target);
extern asmlinkage void *restore_user_regs(const struct user_context *target, ...);
-#define copy_segments(tsk, mm) do { } while (0)
-#define release_segments(mm) do { } while (0)
-#define forget_segments() do { } while (0)
-
unsigned long get_wchan(struct task_struct *p);
#define KSTK_EIP(tsk) ((tsk)->thread.frame0->pc)
diff --git a/arch/frv/include/asm/shmparam.h b/arch/frv/include/asm/shmparam.h
index ab711009cfaa..50ea51f26c46 100644
--- a/arch/frv/include/asm/shmparam.h
+++ b/arch/frv/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SHMPARAM_H
#define _ASM_SHMPARAM_H
diff --git a/arch/frv/include/asm/signal.h b/arch/frv/include/asm/signal.h
index eca0abcb79d6..796394113904 100644
--- a/arch/frv/include/asm/signal.h
+++ b/arch/frv/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SIGNAL_H
#define _ASM_SIGNAL_H
diff --git a/arch/frv/include/asm/smp.h b/arch/frv/include/asm/smp.h
index 38349ec8b61b..0d7fa409312d 100644
--- a/arch/frv/include/asm/smp.h
+++ b/arch/frv/include/asm/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SMP_H
#define __ASM_SMP_H
diff --git a/arch/frv/include/asm/termios.h b/arch/frv/include/asm/termios.h
index 9f753fc09532..5a8c63554617 100644
--- a/arch/frv/include/asm/termios.h
+++ b/arch/frv/include/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_TERMIOS_H
#define _ASM_TERMIOS_H
diff --git a/arch/frv/include/asm/timex.h b/arch/frv/include/asm/timex.h
index 139093fab326..bf53166f2793 100644
--- a/arch/frv/include/asm/timex.h
+++ b/arch/frv/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* timex.h: FR-V architecture timex specifications
*/
#ifndef _ASM_TIMEX_H
diff --git a/arch/frv/include/asm/tlb.h b/arch/frv/include/asm/tlb.h
index cd458eb6d75e..d3e361ad725a 100644
--- a/arch/frv/include/asm/tlb.h
+++ b/arch/frv/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_TLB_H
#define _ASM_TLB_H
diff --git a/arch/frv/include/asm/topology.h b/arch/frv/include/asm/topology.h
index 942724352705..207603071f78 100644
--- a/arch/frv/include/asm/topology.h
+++ b/arch/frv/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_TOPOLOGY_H
#define _ASM_TOPOLOGY_H
diff --git a/arch/frv/include/asm/ucontext.h b/arch/frv/include/asm/ucontext.h
index 8d8c0c948007..0cc2d95dd209 100644
--- a/arch/frv/include/asm/ucontext.h
+++ b/arch/frv/include/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_UCONTEXT_H
#define _ASM_UCONTEXT_H
diff --git a/arch/frv/include/asm/unistd.h b/arch/frv/include/asm/unistd.h
index 17b5df8fc28a..b4b3f9b26b81 100644
--- a/arch/frv/include/asm/unistd.h
+++ b/arch/frv/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_UNISTD_H_
#define _ASM_UNISTD_H_
diff --git a/arch/frv/include/uapi/asm/bitsperlong.h b/arch/frv/include/uapi/asm/bitsperlong.h
index 6dc0bb0c13b2..76da34b10f59 100644
--- a/arch/frv/include/uapi/asm/bitsperlong.h
+++ b/arch/frv/include/uapi/asm/bitsperlong.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/bitsperlong.h>
diff --git a/arch/frv/include/uapi/asm/byteorder.h b/arch/frv/include/uapi/asm/byteorder.h
index f29b7593e088..a46f6472acdc 100644
--- a/arch/frv/include/uapi/asm/byteorder.h
+++ b/arch/frv/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_BYTEORDER_H
#define _ASM_BYTEORDER_H
diff --git a/arch/frv/include/uapi/asm/errno.h b/arch/frv/include/uapi/asm/errno.h
index d010795ceefe..c5b82f2f2970 100644
--- a/arch/frv/include/uapi/asm/errno.h
+++ b/arch/frv/include/uapi/asm/errno.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_ERRNO_H
#define _ASM_ERRNO_H
diff --git a/arch/frv/include/uapi/asm/fcntl.h b/arch/frv/include/uapi/asm/fcntl.h
index 46ab12db5739..a77648c505d1 100644
--- a/arch/frv/include/uapi/asm/fcntl.h
+++ b/arch/frv/include/uapi/asm/fcntl.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/fcntl.h>
diff --git a/arch/frv/include/uapi/asm/ioctl.h b/arch/frv/include/uapi/asm/ioctl.h
index b279fe06dfe5..b809c4566e5f 100644
--- a/arch/frv/include/uapi/asm/ioctl.h
+++ b/arch/frv/include/uapi/asm/ioctl.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/ioctl.h>
diff --git a/arch/frv/include/uapi/asm/ioctls.h b/arch/frv/include/uapi/asm/ioctls.h
index 2f9fb436ec3c..dd9f5eb9feda 100644
--- a/arch/frv/include/uapi/asm/ioctls.h
+++ b/arch/frv/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_IOCTLS_H__
#define __ASM_IOCTLS_H__
diff --git a/arch/frv/include/uapi/asm/ipcbuf.h b/arch/frv/include/uapi/asm/ipcbuf.h
index 84c7e51cb6d0..90d6445a14df 100644
--- a/arch/frv/include/uapi/asm/ipcbuf.h
+++ b/arch/frv/include/uapi/asm/ipcbuf.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/ipcbuf.h>
diff --git a/arch/frv/include/uapi/asm/kvm_para.h b/arch/frv/include/uapi/asm/kvm_para.h
index 14fab8f0b957..baacc4996d18 100644
--- a/arch/frv/include/uapi/asm/kvm_para.h
+++ b/arch/frv/include/uapi/asm/kvm_para.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/kvm_para.h>
diff --git a/arch/frv/include/uapi/asm/mman.h b/arch/frv/include/uapi/asm/mman.h
index 8eebf89f5ab1..306fc0460b80 100644
--- a/arch/frv/include/uapi/asm/mman.h
+++ b/arch/frv/include/uapi/asm/mman.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/mman.h>
diff --git a/arch/frv/include/uapi/asm/msgbuf.h b/arch/frv/include/uapi/asm/msgbuf.h
index 97ceb55a06fb..156c81bb46d7 100644
--- a/arch/frv/include/uapi/asm/msgbuf.h
+++ b/arch/frv/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_MSGBUF_H
#define _ASM_MSGBUF_H
diff --git a/arch/frv/include/uapi/asm/param.h b/arch/frv/include/uapi/asm/param.h
index a52dca9a9566..d3e0168d8937 100644
--- a/arch/frv/include/uapi/asm/param.h
+++ b/arch/frv/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_PARAM_H
#define _ASM_PARAM_H
diff --git a/arch/frv/include/uapi/asm/poll.h b/arch/frv/include/uapi/asm/poll.h
index 0d01479ccc56..887b67288340 100644
--- a/arch/frv/include/uapi/asm/poll.h
+++ b/arch/frv/include/uapi/asm/poll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_POLL_H
#define _ASM_POLL_H
diff --git a/arch/frv/include/uapi/asm/posix_types.h b/arch/frv/include/uapi/asm/posix_types.h
index fe512af74a5a..2995777227b3 100644
--- a/arch/frv/include/uapi/asm/posix_types.h
+++ b/arch/frv/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_POSIX_TYPES_H
#define _ASM_POSIX_TYPES_H
diff --git a/arch/frv/include/uapi/asm/ptrace.h b/arch/frv/include/uapi/asm/ptrace.h
index 3887e4934683..f1d2f652d083 100644
--- a/arch/frv/include/uapi/asm/ptrace.h
+++ b/arch/frv/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* ptrace.h: ptrace() relevant definitions
*
* Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/frv/include/uapi/asm/registers.h b/arch/frv/include/uapi/asm/registers.h
index 9666119fcf6e..4caf09b6c193 100644
--- a/arch/frv/include/uapi/asm/registers.h
+++ b/arch/frv/include/uapi/asm/registers.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* registers.h: register frame declarations
*
* Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/frv/include/uapi/asm/resource.h b/arch/frv/include/uapi/asm/resource.h
index 5fc60548fd02..2100305f9b3e 100644
--- a/arch/frv/include/uapi/asm/resource.h
+++ b/arch/frv/include/uapi/asm/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_RESOURCE_H
#define _ASM_RESOURCE_H
diff --git a/arch/frv/include/uapi/asm/sembuf.h b/arch/frv/include/uapi/asm/sembuf.h
index 164b12786d6d..d5477f95832b 100644
--- a/arch/frv/include/uapi/asm/sembuf.h
+++ b/arch/frv/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SEMBUF_H
#define _ASM_SEMBUF_H
diff --git a/arch/frv/include/uapi/asm/setup.h b/arch/frv/include/uapi/asm/setup.h
index fbf3fc96aae9..f54957047900 100644
--- a/arch/frv/include/uapi/asm/setup.h
+++ b/arch/frv/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* setup.h: setup stuff
*
* Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/frv/include/uapi/asm/shmbuf.h b/arch/frv/include/uapi/asm/shmbuf.h
index 4c6e711a4779..1de8f892e412 100644
--- a/arch/frv/include/uapi/asm/shmbuf.h
+++ b/arch/frv/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SHMBUF_H
#define _ASM_SHMBUF_H
diff --git a/arch/frv/include/uapi/asm/sigcontext.h b/arch/frv/include/uapi/asm/sigcontext.h
index 3b263f3cc96f..8fbb0b00afdd 100644
--- a/arch/frv/include/uapi/asm/sigcontext.h
+++ b/arch/frv/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* sigcontext.h: FRV signal context
*
* Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/frv/include/uapi/asm/siginfo.h b/arch/frv/include/uapi/asm/siginfo.h
index f55d9e0e9068..4c8c975747ac 100644
--- a/arch/frv/include/uapi/asm/siginfo.h
+++ b/arch/frv/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SIGINFO_H
#define _ASM_SIGINFO_H
diff --git a/arch/frv/include/uapi/asm/signal.h b/arch/frv/include/uapi/asm/signal.h
index bf3b162f9bea..603bb796cf46 100644
--- a/arch/frv/include/uapi/asm/signal.h
+++ b/arch/frv/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_SIGNAL_H
#define _UAPI_ASM_SIGNAL_H
diff --git a/arch/frv/include/uapi/asm/socket.h b/arch/frv/include/uapi/asm/socket.h
index 9abf02d6855a..9168e78fa32a 100644
--- a/arch/frv/include/uapi/asm/socket.h
+++ b/arch/frv/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SOCKET_H
#define _ASM_SOCKET_H
diff --git a/arch/frv/include/uapi/asm/sockios.h b/arch/frv/include/uapi/asm/sockios.h
index 5dbdd13e6de3..2f62caf1ce84 100644
--- a/arch/frv/include/uapi/asm/sockios.h
+++ b/arch/frv/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SOCKIOS__
#define _ASM_SOCKIOS__
diff --git a/arch/frv/include/uapi/asm/stat.h b/arch/frv/include/uapi/asm/stat.h
index ce56de9b37ba..0ff9fab915a4 100644
--- a/arch/frv/include/uapi/asm/stat.h
+++ b/arch/frv/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_STAT_H
#define _ASM_STAT_H
diff --git a/arch/frv/include/uapi/asm/statfs.h b/arch/frv/include/uapi/asm/statfs.h
index 741f586045ba..2a378cbff07f 100644
--- a/arch/frv/include/uapi/asm/statfs.h
+++ b/arch/frv/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_STATFS_H
#define _ASM_STATFS_H
diff --git a/arch/frv/include/uapi/asm/swab.h b/arch/frv/include/uapi/asm/swab.h
index f305834b4799..c78257d172e5 100644
--- a/arch/frv/include/uapi/asm/swab.h
+++ b/arch/frv/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SWAB_H
#define _ASM_SWAB_H
diff --git a/arch/frv/include/uapi/asm/termbits.h b/arch/frv/include/uapi/asm/termbits.h
index 7722e19cc349..b1dcd8d0ff78 100644
--- a/arch/frv/include/uapi/asm/termbits.h
+++ b/arch/frv/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_TERMBITS_H__
#define _ASM_TERMBITS_H__
diff --git a/arch/frv/include/uapi/asm/termios.h b/arch/frv/include/uapi/asm/termios.h
index edcc08a22382..ae35bedae6a2 100644
--- a/arch/frv/include/uapi/asm/termios.h
+++ b/arch/frv/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_TERMIOS_H
#define _UAPI_ASM_TERMIOS_H
diff --git a/arch/frv/include/uapi/asm/types.h b/arch/frv/include/uapi/asm/types.h
index cf23149943f9..db74ad9ba6c0 100644
--- a/arch/frv/include/uapi/asm/types.h
+++ b/arch/frv/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* types.h: FRV types
*
* Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/frv/include/uapi/asm/unistd.h b/arch/frv/include/uapi/asm/unistd.h
index 9e2612ff1c9d..4b46acaf832b 100644
--- a/arch/frv/include/uapi/asm/unistd.h
+++ b/arch/frv/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_UNISTD_H_
#define _UAPI_ASM_UNISTD_H_
diff --git a/arch/frv/kernel/Makefile b/arch/frv/kernel/Makefile
index 3cbb3294b9f9..216ddf30c3c1 100644
--- a/arch/frv/kernel/Makefile
+++ b/arch/frv/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/frv/kernel/asm-offsets.c b/arch/frv/kernel/asm-offsets.c
index 20c5b79b55f9..0a468e9b51ad 100644
--- a/arch/frv/kernel/asm-offsets.c
+++ b/arch/frv/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generate definitions needed by assembly language modules.
* This code generates raw asm output which is post-processed
diff --git a/arch/frv/kernel/frv_ksyms.c b/arch/frv/kernel/frv_ksyms.c
index cdb4ce9960eb..6ea430d58149 100644
--- a/arch/frv/kernel/frv_ksyms.c
+++ b/arch/frv/kernel/frv_ksyms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/linkage.h>
#include <linux/sched.h>
diff --git a/arch/frv/kernel/vmlinux.lds.S b/arch/frv/kernel/vmlinux.lds.S
index 3f44dcbbad4d..42806c512758 100644
--- a/arch/frv/kernel/vmlinux.lds.S
+++ b/arch/frv/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ld script to make FRV Linux kernel
* Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
*/
diff --git a/arch/frv/lib/atomic-lib.c b/arch/frv/lib/atomic-lib.c
index 4d1b887c248b..3027576f7782 100644
--- a/arch/frv/lib/atomic-lib.c
+++ b/arch/frv/lib/atomic-lib.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <asm/atomic.h>
diff --git a/arch/frv/mb93090-mb00/Makefile b/arch/frv/mb93090-mb00/Makefile
index 21f1df1b378a..bcb03ebb3583 100644
--- a/arch/frv/mb93090-mb00/Makefile
+++ b/arch/frv/mb93090-mb00/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the MB93090-MB00 motherboard stuff
#
diff --git a/arch/frv/mb93090-mb00/pci-frv.h b/arch/frv/mb93090-mb00/pci-frv.h
index d51992ff5a61..41fbb6bae558 100644
--- a/arch/frv/mb93090-mb00/pci-frv.h
+++ b/arch/frv/mb93090-mb00/pci-frv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Low-Level PCI Access for FRV machines.
*
diff --git a/arch/frv/mb93090-mb00/pci-irq.c b/arch/frv/mb93090-mb00/pci-irq.c
index 1c35c93f942b..a40aa8663056 100644
--- a/arch/frv/mb93090-mb00/pci-irq.c
+++ b/arch/frv/mb93090-mb00/pci-irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* pci-irq.c: PCI IRQ routing on the FRV motherboard
*
* Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/frv/mm/extable.c b/arch/frv/mm/extable.c
index 9198ddd16092..77c0c5ba88bc 100644
--- a/arch/frv/mm/extable.c
+++ b/arch/frv/mm/extable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/frv/mm/extable.c
*/
diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
index 179e79e220e5..cbe7aec863e3 100644
--- a/arch/frv/mm/fault.c
+++ b/arch/frv/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/frv/mm/fault.c
*
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
index 3089f7fe2abd..f8d3fde08190 100644
--- a/arch/h8300/Kconfig
+++ b/arch/h8300/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config H8300
def_bool y
select GENERIC_ATOMIC64
diff --git a/arch/h8300/Kconfig.cpu b/arch/h8300/Kconfig.cpu
index 8d0ff20c749a..b5e14d513e62 100644
--- a/arch/h8300/Kconfig.cpu
+++ b/arch/h8300/Kconfig.cpu
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config CPU_H8300H
bool
diff --git a/arch/h8300/boot/Makefile b/arch/h8300/boot/Makefile
index 2f6393a5da57..8e62df20ebf9 100644
--- a/arch/h8300/boot/Makefile
+++ b/arch/h8300/boot/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# arch/h8300/boot/Makefile
targets := vmlinux.srec vmlinux.bin zImage
diff --git a/arch/h8300/boot/compressed/Makefile b/arch/h8300/boot/compressed/Makefile
index 613bfe6f5272..9e2701069bbe 100644
--- a/arch/h8300/boot/compressed/Makefile
+++ b/arch/h8300/boot/compressed/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/sh/boot/compressed/Makefile
#
diff --git a/arch/h8300/boot/compressed/head.S b/arch/h8300/boot/compressed/head.S
index 0436350c1df5..11ef509579cf 100644
--- a/arch/h8300/boot/compressed/head.S
+++ b/arch/h8300/boot/compressed/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/h8300/boot/compressed/head.S
*
diff --git a/arch/h8300/boot/compressed/misc.c b/arch/h8300/boot/compressed/misc.c
index a947dbb4fd91..8915d8fe2e53 100644
--- a/arch/h8300/boot/compressed/misc.c
+++ b/arch/h8300/boot/compressed/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/h8300/boot/compressed/misc.c
*
diff --git a/arch/h8300/boot/compressed/vmlinux.lds b/arch/h8300/boot/compressed/vmlinux.lds
index ad848a72fd3f..7f7bb419ce15 100644
--- a/arch/h8300/boot/compressed/vmlinux.lds
+++ b/arch/h8300/boot/compressed/vmlinux.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
SECTIONS
{
.text :
diff --git a/arch/h8300/boot/dts/Makefile b/arch/h8300/boot/dts/Makefile
index 6c08467c6a3a..14593b51b2b2 100644
--- a/arch/h8300/boot/dts/Makefile
+++ b/arch/h8300/boot/dts/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ifneq '$(CONFIG_H8300_BUILTIN_DTB)' '""'
BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_H8300_BUILTIN_DTB)).dtb.o
endif
diff --git a/arch/h8300/boot/dts/edosk2674.dts b/arch/h8300/boot/dts/edosk2674.dts
index 6ae884bf66a5..d1733805ea67 100644
--- a/arch/h8300/boot/dts/edosk2674.dts
+++ b/arch/h8300/boot/dts/edosk2674.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/ {
compatible = "renesas,edosk2674";
diff --git a/arch/h8300/boot/dts/h8300h_sim.dts b/arch/h8300/boot/dts/h8300h_sim.dts
index 9c733d920f1f..f1c31cecdec8 100644
--- a/arch/h8300/boot/dts/h8300h_sim.dts
+++ b/arch/h8300/boot/dts/h8300h_sim.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/ {
compatible = "gnu,gdbsim";
diff --git a/arch/h8300/boot/dts/h8s_sim.dts b/arch/h8300/boot/dts/h8s_sim.dts
index 97e1f4b17ef0..932cc3c5a81b 100644
--- a/arch/h8300/boot/dts/h8s_sim.dts
+++ b/arch/h8300/boot/dts/h8s_sim.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/ {
compatible = "gnu,gdbsim";
diff --git a/arch/h8300/include/asm/atomic.h b/arch/h8300/include/asm/atomic.h
index 349a47a918db..941e7554e886 100644
--- a/arch/h8300/include/asm/atomic.h
+++ b/arch/h8300/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_H8300_ATOMIC__
#define __ARCH_H8300_ATOMIC__
diff --git a/arch/h8300/include/asm/bitops.h b/arch/h8300/include/asm/bitops.h
index 05999aba1d6a..ea0cb0cf6a8b 100644
--- a/arch/h8300/include/asm/bitops.h
+++ b/arch/h8300/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_BITOPS_H
#define _H8300_BITOPS_H
diff --git a/arch/h8300/include/asm/bug.h b/arch/h8300/include/asm/bug.h
index 1e1be8119935..00fe5e966bb5 100644
--- a/arch/h8300/include/asm/bug.h
+++ b/arch/h8300/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_BUG_H
#define _H8300_BUG_H
diff --git a/arch/h8300/include/asm/byteorder.h b/arch/h8300/include/asm/byteorder.h
index 888478a38145..ecff2d1ca5a3 100644
--- a/arch/h8300/include/asm/byteorder.h
+++ b/arch/h8300/include/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __H8300_BYTEORDER_H__
#define __H8300_BYTEORDER_H__
diff --git a/arch/h8300/include/asm/cache.h b/arch/h8300/include/asm/cache.h
index 0ef1edc5a6a6..4243eb319acf 100644
--- a/arch/h8300/include/asm/cache.h
+++ b/arch/h8300/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_H8300_CACHE_H
#define __ARCH_H8300_CACHE_H
diff --git a/arch/h8300/include/asm/cmpxchg.h b/arch/h8300/include/asm/cmpxchg.h
index 95fec4cd1081..c64bb38ce242 100644
--- a/arch/h8300/include/asm/cmpxchg.h
+++ b/arch/h8300/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_H8300_CMPXCHG__
#define __ARCH_H8300_CMPXCHG__
diff --git a/arch/h8300/include/asm/dma-mapping.h b/arch/h8300/include/asm/dma-mapping.h
index 847c7562e046..21bb1fc3a6f1 100644
--- a/arch/h8300/include/asm/dma-mapping.h
+++ b/arch/h8300/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_DMA_MAPPING_H
#define _H8300_DMA_MAPPING_H
diff --git a/arch/h8300/include/asm/elf.h b/arch/h8300/include/asm/elf.h
index 09031d0127a3..029647cda44c 100644
--- a/arch/h8300/include/asm/elf.h
+++ b/arch/h8300/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_H8300_ELF_H
#define __ASM_H8300_ELF_H
diff --git a/arch/h8300/include/asm/flat.h b/arch/h8300/include/asm/flat.h
index 7e0bd6fa1532..f4cdfcbdd2ba 100644
--- a/arch/h8300/include/asm/flat.h
+++ b/arch/h8300/include/asm/flat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/h8300/asm/include/flat.h -- uClinux flat-format executables
*/
diff --git a/arch/h8300/include/asm/hash.h b/arch/h8300/include/asm/hash.h
index 04cfbd2bd850..2960b4c9e4ed 100644
--- a/arch/h8300/include/asm/hash.h
+++ b/arch/h8300/include/asm/hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_HASH_H
#define _ASM_HASH_H
diff --git a/arch/h8300/include/asm/io.h b/arch/h8300/include/asm/io.h
index f86918aed9e1..096d99580db6 100644
--- a/arch/h8300/include/asm/io.h
+++ b/arch/h8300/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_IO_H
#define _H8300_IO_H
diff --git a/arch/h8300/include/asm/irq.h b/arch/h8300/include/asm/irq.h
index 69f23f0981b3..5fc5b436dde9 100644
--- a/arch/h8300/include/asm/irq.h
+++ b/arch/h8300/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_IRQ_H_
#define _H8300_IRQ_H_
diff --git a/arch/h8300/include/asm/irqflags.h b/arch/h8300/include/asm/irqflags.h
index 5e1e3242e470..48756b7f405e 100644
--- a/arch/h8300/include/asm/irqflags.h
+++ b/arch/h8300/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_IRQFLAGS_H
#define _H8300_IRQFLAGS_H
diff --git a/arch/h8300/include/asm/page.h b/arch/h8300/include/asm/page.h
index 3a987a567258..8da5124ad344 100644
--- a/arch/h8300/include/asm/page.h
+++ b/arch/h8300/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_PAGE_H
#define _H8300_PAGE_H
diff --git a/arch/h8300/include/asm/pci.h b/arch/h8300/include/asm/pci.h
index 0b2acaa3dd84..7c9e55d62215 100644
--- a/arch/h8300/include/asm/pci.h
+++ b/arch/h8300/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_H8300_PCI_H
#define _ASM_H8300_PCI_H
diff --git a/arch/h8300/include/asm/pgtable.h b/arch/h8300/include/asm/pgtable.h
index 7d265d28ba5e..a99caa49d265 100644
--- a/arch/h8300/include/asm/pgtable.h
+++ b/arch/h8300/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_PGTABLE_H
#define _H8300_PGTABLE_H
#define __ARCH_USE_5LEVEL_HACK
diff --git a/arch/h8300/include/asm/processor.h b/arch/h8300/include/asm/processor.h
index afa53147e66a..985346393e4a 100644
--- a/arch/h8300/include/asm/processor.h
+++ b/arch/h8300/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-h8300/processor.h
*
diff --git a/arch/h8300/include/asm/ptrace.h b/arch/h8300/include/asm/ptrace.h
index e693fb463ea8..313cafa85380 100644
--- a/arch/h8300/include/asm/ptrace.h
+++ b/arch/h8300/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_PTRACE_H
#define _H8300_PTRACE_H
diff --git a/arch/h8300/include/asm/segment.h b/arch/h8300/include/asm/segment.h
index 48424c6e169f..9adbf7e1aaa3 100644
--- a/arch/h8300/include/asm/segment.h
+++ b/arch/h8300/include/asm/segment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_SEGMENT_H
#define _H8300_SEGMENT_H
diff --git a/arch/h8300/include/asm/signal.h b/arch/h8300/include/asm/signal.h
index 5870835c0470..a42f32ca530f 100644
--- a/arch/h8300/include/asm/signal.h
+++ b/arch/h8300/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_SIGNAL_H
#define _H8300_SIGNAL_H
diff --git a/arch/h8300/include/asm/string.h b/arch/h8300/include/asm/string.h
index 5dc5a8ac0544..78e45bb2fef0 100644
--- a/arch/h8300/include/asm/string.h
+++ b/arch/h8300/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_STRING_H_
#define _H8300_STRING_H_
diff --git a/arch/h8300/include/asm/switch_to.h b/arch/h8300/include/asm/switch_to.h
index 7ad1bf92dbc3..2b7e9555bcd1 100644
--- a/arch/h8300/include/asm/switch_to.h
+++ b/arch/h8300/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_SWITCH_TO_H
#define _H8300_SWITCH_TO_H
diff --git a/arch/h8300/include/asm/syscall.h b/arch/h8300/include/asm/syscall.h
index b41f688d02cf..924990401237 100644
--- a/arch/h8300/include/asm/syscall.h
+++ b/arch/h8300/include/asm/syscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_H8300_SYSCALLS_32_H
#define __ASM_H8300_SYSCALLS_32_H
diff --git a/arch/h8300/include/asm/thread_info.h b/arch/h8300/include/asm/thread_info.h
index 3cef06875f5c..072b92c0d8b5 100644
--- a/arch/h8300/include/asm/thread_info.h
+++ b/arch/h8300/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* thread_info.h: h8300 low-level thread information
* adapted from the i386 and PPC versions by Yoshinori Sato <ysato@users.sourceforge.jp>
*
diff --git a/arch/h8300/include/asm/tlb.h b/arch/h8300/include/asm/tlb.h
index 2c6fa4eed448..98f344279904 100644
--- a/arch/h8300/include/asm/tlb.h
+++ b/arch/h8300/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __H8300_TLB_H__
#define __H8300_TLB_H__
diff --git a/arch/h8300/include/asm/uaccess.h b/arch/h8300/include/asm/uaccess.h
index 6f6144a240ce..bc8031949d07 100644
--- a/arch/h8300/include/asm/uaccess.h
+++ b/arch/h8300/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_UACCESS_H
#define _ASM_UACCESS_H
diff --git a/arch/h8300/include/asm/user.h b/arch/h8300/include/asm/user.h
index 2e3555f451f0..2298909f24c6 100644
--- a/arch/h8300/include/asm/user.h
+++ b/arch/h8300/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _H8300_USER_H
#define _H8300_USER_H
diff --git a/arch/h8300/include/uapi/asm/bitsperlong.h b/arch/h8300/include/uapi/asm/bitsperlong.h
index 34212608371e..a33e358f1c1b 100644
--- a/arch/h8300/include/uapi/asm/bitsperlong.h
+++ b/arch/h8300/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ASM_H8300_BITS_PER_LONG
#define _UAPI__ASM_H8300_BITS_PER_LONG
diff --git a/arch/h8300/include/uapi/asm/byteorder.h b/arch/h8300/include/uapi/asm/byteorder.h
index 13539da99efd..1fe2f9344458 100644
--- a/arch/h8300/include/uapi/asm/byteorder.h
+++ b/arch/h8300/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _H8300_BYTEORDER_H
#define _H8300_BYTEORDER_H
diff --git a/arch/h8300/include/uapi/asm/ptrace.h b/arch/h8300/include/uapi/asm/ptrace.h
index e132670d70ec..78167f517ca4 100644
--- a/arch/h8300/include/uapi/asm/ptrace.h
+++ b/arch/h8300/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_H8300_PTRACE_H
#define _UAPI_H8300_PTRACE_H
diff --git a/arch/h8300/include/uapi/asm/sigcontext.h b/arch/h8300/include/uapi/asm/sigcontext.h
index c41fdaa04657..f77273c857d7 100644
--- a/arch/h8300/include/uapi/asm/sigcontext.h
+++ b/arch/h8300/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_H8300_SIGCONTEXT_H
#define _ASM_H8300_SIGCONTEXT_H
diff --git a/arch/h8300/include/uapi/asm/signal.h b/arch/h8300/include/uapi/asm/signal.h
index af3a6c37fee6..e15521037348 100644
--- a/arch/h8300/include/uapi/asm/signal.h
+++ b/arch/h8300/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_H8300_SIGNAL_H
#define _UAPI_H8300_SIGNAL_H
diff --git a/arch/h8300/kernel/Makefile b/arch/h8300/kernel/Makefile
index 253f8e322ecc..b62e830525c6 100644
--- a/arch/h8300/kernel/Makefile
+++ b/arch/h8300/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/h8300/kernel/asm-offsets.c b/arch/h8300/kernel/asm-offsets.c
index dc2d16ce8a0d..85e60509f0a8 100644
--- a/arch/h8300/kernel/asm-offsets.c
+++ b/arch/h8300/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This program is used to generate definitions needed by
* assembly language modules.
diff --git a/arch/h8300/kernel/entry.S b/arch/h8300/kernel/entry.S
index 4f67d4b350d5..4ade5f8299ba 100644
--- a/arch/h8300/kernel/entry.S
+++ b/arch/h8300/kernel/entry.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* linux/arch/h8300/kernel/entry.S
diff --git a/arch/h8300/kernel/h8300_ksyms.c b/arch/h8300/kernel/h8300_ksyms.c
index a9033c838968..1c6f902e82a5 100644
--- a/arch/h8300/kernel/h8300_ksyms.c
+++ b/arch/h8300/kernel/h8300_ksyms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/linkage.h>
diff --git a/arch/h8300/kernel/head_ram.S b/arch/h8300/kernel/head_ram.S
index 84ac5c3ed31a..dbf8429f5fab 100644
--- a/arch/h8300/kernel/head_ram.S
+++ b/arch/h8300/kernel/head_ram.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/sys.h>
#include <linux/init.h>
diff --git a/arch/h8300/kernel/head_rom.S b/arch/h8300/kernel/head_rom.S
index 9868a4121a1f..ab55a9cb2f36 100644
--- a/arch/h8300/kernel/head_rom.S
+++ b/arch/h8300/kernel/head_rom.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/init.h>
#include <asm/thread_info.h>
diff --git a/arch/h8300/kernel/irq.c b/arch/h8300/kernel/irq.c
index da79f9521699..834e4d7b1bcf 100644
--- a/arch/h8300/kernel/irq.c
+++ b/arch/h8300/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/h8300/kernel/irq.c
*
diff --git a/arch/h8300/kernel/module.c b/arch/h8300/kernel/module.c
index 515f6c4e8d80..cd802cc78d97 100644
--- a/arch/h8300/kernel/module.c
+++ b/arch/h8300/kernel/module.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/moduleloader.h>
#include <linux/elf.h>
#include <linux/vmalloc.h>
diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c
index d1ddcabbbe83..e35cdf092e07 100644
--- a/arch/h8300/kernel/process.c
+++ b/arch/h8300/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/h8300/kernel/process.c
*
diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
index 6be15d634650..a4d0470c10a9 100644
--- a/arch/h8300/kernel/setup.c
+++ b/arch/h8300/kernel/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/h8300/kernel/setup.c
*
diff --git a/arch/h8300/kernel/syscalls.c b/arch/h8300/kernel/syscalls.c
index 1f9123a013d3..9022036fb3d2 100644
--- a/arch/h8300/kernel/syscalls.c
+++ b/arch/h8300/kernel/syscalls.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/syscalls.h>
#include <linux/signal.h>
#include <linux/unistd.h>
diff --git a/arch/h8300/kernel/vmlinux.lds.S b/arch/h8300/kernel/vmlinux.lds.S
index 7f11da1b895e..35716a3048de 100644
--- a/arch/h8300/kernel/vmlinux.lds.S
+++ b/arch/h8300/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/vmlinux.lds.h>
#include <asm/page.h>
#include <asm/thread_info.h>
diff --git a/arch/h8300/lib/abs.S b/arch/h8300/lib/abs.S
index efda749db03e..6e1a4ed3af53 100644
--- a/arch/h8300/lib/abs.S
+++ b/arch/h8300/lib/abs.S
@@ -1,3 +1,4 @@
+;;; SPDX-License-Identifier: GPL-2.0
;;; abs.S
#include <asm/linkage.h>
diff --git a/arch/h8300/lib/ashldi3.c b/arch/h8300/lib/ashldi3.c
index c6aa8ea5f4be..430720c0c5d8 100644
--- a/arch/h8300/lib/ashldi3.c
+++ b/arch/h8300/lib/ashldi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "libgcc.h"
DWtype
diff --git a/arch/h8300/lib/ashrdi3.c b/arch/h8300/lib/ashrdi3.c
index 070adf96d3b6..2c6cd424eb3e 100644
--- a/arch/h8300/lib/ashrdi3.c
+++ b/arch/h8300/lib/ashrdi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "libgcc.h"
DWtype __ashrdi3(DWtype u, word_type b)
diff --git a/arch/h8300/lib/delay.c b/arch/h8300/lib/delay.c
index 463f6b3afb52..f4277529a9b9 100644
--- a/arch/h8300/lib/delay.c
+++ b/arch/h8300/lib/delay.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* delay loops
*
diff --git a/arch/h8300/lib/libgcc.h b/arch/h8300/lib/libgcc.h
index 468a8f78197a..b8bcf7035ff5 100644
--- a/arch/h8300/lib/libgcc.h
+++ b/arch/h8300/lib/libgcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __H8300_LIBGCC_H__
#define __H8300_LIBGCC_H__
diff --git a/arch/h8300/lib/lshrdi3.c b/arch/h8300/lib/lshrdi3.c
index a86bbe395f17..8dbc861ca589 100644
--- a/arch/h8300/lib/lshrdi3.c
+++ b/arch/h8300/lib/lshrdi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "libgcc.h"
DWtype __lshrdi3(DWtype u, word_type b)
diff --git a/arch/h8300/lib/memcpy.S b/arch/h8300/lib/memcpy.S
index 0c9a51fcdea1..f1cd67d5e3ea 100644
--- a/arch/h8300/lib/memcpy.S
+++ b/arch/h8300/lib/memcpy.S
@@ -1,3 +1,4 @@
+;;; SPDX-License-Identifier: GPL-2.0
;;; memcpy.S
#include <asm/linkage.h>
diff --git a/arch/h8300/lib/memset.S b/arch/h8300/lib/memset.S
index 18d4e709b5f4..2d1abc37fd08 100644
--- a/arch/h8300/lib/memset.S
+++ b/arch/h8300/lib/memset.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* memset.S */
#include <asm/linkage.h>
diff --git a/arch/h8300/lib/moddivsi3.S b/arch/h8300/lib/moddivsi3.S
index c803129e877f..9e33ab0456c7 100644
--- a/arch/h8300/lib/moddivsi3.S
+++ b/arch/h8300/lib/moddivsi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "libgcc.h"
; numerator in A0/A1
diff --git a/arch/h8300/lib/modsi3.S b/arch/h8300/lib/modsi3.S
index 68b1dfc32824..bdc8a002921d 100644
--- a/arch/h8300/lib/modsi3.S
+++ b/arch/h8300/lib/modsi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "libgcc.h"
; numerator in A0/A1
diff --git a/arch/h8300/lib/muldi3.c b/arch/h8300/lib/muldi3.c
index 790512243531..9cb11b134e54 100644
--- a/arch/h8300/lib/muldi3.c
+++ b/arch/h8300/lib/muldi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "libgcc.h"
#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2))
diff --git a/arch/h8300/lib/mulsi3.S b/arch/h8300/lib/mulsi3.S
index 451f0e0538ee..5a062fd298d1 100644
--- a/arch/h8300/lib/mulsi3.S
+++ b/arch/h8300/lib/mulsi3.S
@@ -1,3 +1,4 @@
+; SPDX-License-Identifier: GPL-2.0
;
; mulsi3 for H8/300H - based on Renesas SH implementation
;
diff --git a/arch/h8300/lib/strncpy.S b/arch/h8300/lib/strncpy.S
index d00396a378f4..8b65d7c4727b 100644
--- a/arch/h8300/lib/strncpy.S
+++ b/arch/h8300/lib/strncpy.S
@@ -1,3 +1,4 @@
+;;; SPDX-License-Identifier: GPL-2.0
;;; strncpy.S
#include <asm/linkage.h>
diff --git a/arch/h8300/lib/ucmpdi2.c b/arch/h8300/lib/ucmpdi2.c
index 772399d705cb..9f646885f3d7 100644
--- a/arch/h8300/lib/ucmpdi2.c
+++ b/arch/h8300/lib/ucmpdi2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "libgcc.h"
word_type __ucmpdi2(DWtype a, DWtype b)
diff --git a/arch/h8300/lib/udivsi3.S b/arch/h8300/lib/udivsi3.S
index bbe65610f316..b810aba8e100 100644
--- a/arch/h8300/lib/udivsi3.S
+++ b/arch/h8300/lib/udivsi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "libgcc.h"
;; This function also computes the remainder and stores it in er3.
diff --git a/arch/h8300/mm/fault.c b/arch/h8300/mm/fault.c
index 5924ff555ded..fabffb83930a 100644
--- a/arch/h8300/mm/fault.c
+++ b/arch/h8300/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/h8300/mm/fault.c
*
diff --git a/arch/h8300/mm/init.c b/arch/h8300/mm/init.c
index 495a3d6b539b..eeead51bed2d 100644
--- a/arch/h8300/mm/init.c
+++ b/arch/h8300/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/h8300/mm/init.c
*
diff --git a/arch/h8300/mm/memory.c b/arch/h8300/mm/memory.c
index 4974aa40bcb8..3785f72bf3fc 100644
--- a/arch/h8300/mm/memory.c
+++ b/arch/h8300/mm/memory.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/h8300/mm/memory.c
*
diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig
index 1941e4baaee6..76d2f20d525e 100644
--- a/arch/hexagon/Kconfig
+++ b/arch/hexagon/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Hexagon configuration
comment "Linux Kernel Configuration for Hexagon"
diff --git a/arch/hexagon/Makefile b/arch/hexagon/Makefile
index 207711a0fd0c..48fe08230a80 100644
--- a/arch/hexagon/Makefile
+++ b/arch/hexagon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the Hexagon arch
KBUILD_DEFCONFIG = comet_defconfig
diff --git a/arch/hexagon/include/asm/Kbuild b/arch/hexagon/include/asm/Kbuild
index 34013683d123..4a23e527d651 100644
--- a/arch/hexagon/include/asm/Kbuild
+++ b/arch/hexagon/include/asm/Kbuild
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
generic-y += barrier.h
generic-y += bug.h
generic-y += bugs.h
diff --git a/arch/hexagon/include/asm/futex.h b/arch/hexagon/include/asm/futex.h
index c607b77c8215..c889f5993ecd 100644
--- a/arch/hexagon/include/asm/futex.h
+++ b/arch/hexagon/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_HEXAGON_FUTEX_H
#define _ASM_HEXAGON_FUTEX_H
diff --git a/arch/hexagon/include/uapi/asm/bitsperlong.h b/arch/hexagon/include/uapi/asm/bitsperlong.h
index 4a658151383d..5adca0d26913 100644
--- a/arch/hexagon/include/uapi/asm/bitsperlong.h
+++ b/arch/hexagon/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
*
diff --git a/arch/hexagon/include/uapi/asm/byteorder.h b/arch/hexagon/include/uapi/asm/byteorder.h
index e31f3f7d9a45..1364fa4b27e8 100644
--- a/arch/hexagon/include/uapi/asm/byteorder.h
+++ b/arch/hexagon/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
*
diff --git a/arch/hexagon/include/uapi/asm/kvm_para.h b/arch/hexagon/include/uapi/asm/kvm_para.h
index 14fab8f0b957..baacc4996d18 100644
--- a/arch/hexagon/include/uapi/asm/kvm_para.h
+++ b/arch/hexagon/include/uapi/asm/kvm_para.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/kvm_para.h>
diff --git a/arch/hexagon/include/uapi/asm/param.h b/arch/hexagon/include/uapi/asm/param.h
index 5cec8c0417fb..a1283866d599 100644
--- a/arch/hexagon/include/uapi/asm/param.h
+++ b/arch/hexagon/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
*
diff --git a/arch/hexagon/include/uapi/asm/ptrace.h b/arch/hexagon/include/uapi/asm/ptrace.h
index 065e5b32313f..f79de05b8689 100644
--- a/arch/hexagon/include/uapi/asm/ptrace.h
+++ b/arch/hexagon/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Ptrace definitions for the Hexagon architecture
*
diff --git a/arch/hexagon/include/uapi/asm/registers.h b/arch/hexagon/include/uapi/asm/registers.h
index e7be31840a90..d51270f3b358 100644
--- a/arch/hexagon/include/uapi/asm/registers.h
+++ b/arch/hexagon/include/uapi/asm/registers.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Register definitions for the Hexagon architecture
*/
diff --git a/arch/hexagon/include/uapi/asm/setup.h b/arch/hexagon/include/uapi/asm/setup.h
index 7e3952d6221c..8ce9428b1583 100644
--- a/arch/hexagon/include/uapi/asm/setup.h
+++ b/arch/hexagon/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
*
diff --git a/arch/hexagon/include/uapi/asm/sigcontext.h b/arch/hexagon/include/uapi/asm/sigcontext.h
index b6ba5369ccc6..7171edb1b8b7 100644
--- a/arch/hexagon/include/uapi/asm/sigcontext.h
+++ b/arch/hexagon/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
*
diff --git a/arch/hexagon/include/uapi/asm/signal.h b/arch/hexagon/include/uapi/asm/signal.h
index 24b998888916..a08fc425387d 100644
--- a/arch/hexagon/include/uapi/asm/signal.h
+++ b/arch/hexagon/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
*
diff --git a/arch/hexagon/include/uapi/asm/swab.h b/arch/hexagon/include/uapi/asm/swab.h
index 9069e9247a2e..b39f12104da4 100644
--- a/arch/hexagon/include/uapi/asm/swab.h
+++ b/arch/hexagon/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
*
diff --git a/arch/hexagon/include/uapi/asm/unistd.h b/arch/hexagon/include/uapi/asm/unistd.h
index 21517600432b..ea181e79162e 100644
--- a/arch/hexagon/include/uapi/asm/unistd.h
+++ b/arch/hexagon/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Syscall support for Hexagon
*
diff --git a/arch/hexagon/include/uapi/asm/user.h b/arch/hexagon/include/uapi/asm/user.h
index 3dae94d9ced7..7327ec59b22f 100644
--- a/arch/hexagon/include/uapi/asm/user.h
+++ b/arch/hexagon/include/uapi/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef HEXAGON_ASM_USER_H
#define HEXAGON_ASM_USER_H
diff --git a/arch/hexagon/kernel/Makefile b/arch/hexagon/kernel/Makefile
index 009228b8611c..fae3dce32fde 100644
--- a/arch/hexagon/kernel/Makefile
+++ b/arch/hexagon/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
extra-y := head.o vmlinux.lds
obj-$(CONFIG_SMP) += smp.o
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 6a15083cc366..1efc444f5fa1 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PGTABLE_LEVELS
int "Page Table Levels" if !IA64_PAGE_SIZE_64KB
range 3 4 if !IA64_PAGE_SIZE_64KB
diff --git a/arch/ia64/Kconfig.debug b/arch/ia64/Kconfig.debug
index de9d507ba0fd..677c409425df 100644
--- a/arch/ia64/Kconfig.debug
+++ b/arch/ia64/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
@@ -56,9 +57,4 @@ config IA64_DEBUG_IRQ
and restore instructions. It's useful for tracking down spinlock
problems, but slow! If you're unsure, select N.
-config SYSVIPC_COMPAT
- bool
- depends on COMPAT && SYSVIPC
- default y
-
endmenu
diff --git a/arch/ia64/dig/Makefile b/arch/ia64/dig/Makefile
index ae16ec4f6308..e7f830825470 100644
--- a/arch/ia64/dig/Makefile
+++ b/arch/ia64/dig/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# ia64/platform/dig/Makefile
#
diff --git a/arch/ia64/dig/setup.c b/arch/ia64/dig/setup.c
index 98131e1db7a0..cc14fdce6db6 100644
--- a/arch/ia64/dig/setup.c
+++ b/arch/ia64/dig/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Platform dependent support for DIG64 platforms.
*
diff --git a/arch/ia64/hp/common/hwsw_iommu.c b/arch/ia64/hp/common/hwsw_iommu.c
index 0310078a95f8..63d8e1d2477f 100644
--- a/arch/ia64/hp/common/hwsw_iommu.c
+++ b/arch/ia64/hp/common/hwsw_iommu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2004 Hewlett-Packard Development Company, L.P.
* Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/hp/sim/Kconfig b/arch/ia64/hp/sim/Kconfig
index d84707d55203..56fb4f1d4f7c 100644
--- a/arch/ia64/hp/sim/Kconfig
+++ b/arch/ia64/hp/sim/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "HP Simulator drivers"
depends on IA64_HP_SIM || IA64_GENERIC
diff --git a/arch/ia64/hp/sim/Makefile b/arch/ia64/hp/sim/Makefile
index d10da47931d7..0224a13d2c5b 100644
--- a/arch/ia64/hp/sim/Makefile
+++ b/arch/ia64/hp/sim/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# ia64/platform/hp/sim/Makefile
#
diff --git a/arch/ia64/hp/sim/boot/boot_head.S b/arch/ia64/hp/sim/boot/boot_head.S
index 8808565491fb..a7d178fb41e8 100644
--- a/arch/ia64/hp/sim/boot/boot_head.S
+++ b/arch/ia64/hp/sim/boot/boot_head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1998-2003 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/hp/sim/boot/bootloader.c b/arch/ia64/hp/sim/boot/bootloader.c
index 28f4b230b8cb..6d804608dc81 100644
--- a/arch/ia64/hp/sim/boot/bootloader.c
+++ b/arch/ia64/hp/sim/boot/bootloader.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/ia64/hp/sim/boot/bootloader.c
*
diff --git a/arch/ia64/hp/sim/boot/bootloader.lds b/arch/ia64/hp/sim/boot/bootloader.lds
index 3977f25a1265..f3f284d6514c 100644
--- a/arch/ia64/hp/sim/boot/bootloader.lds
+++ b/arch/ia64/hp/sim/boot/bootloader.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
OUTPUT_FORMAT("elf64-ia64-little")
OUTPUT_ARCH(ia64)
ENTRY(_start)
diff --git a/arch/ia64/hp/sim/boot/fw-emu.c b/arch/ia64/hp/sim/boot/fw-emu.c
index 87bf9ad8cf0f..517fb2822e04 100644
--- a/arch/ia64/hp/sim/boot/fw-emu.c
+++ b/arch/ia64/hp/sim/boot/fw-emu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PAL & SAL emulation.
*
diff --git a/arch/ia64/hp/sim/boot/ssc.h b/arch/ia64/hp/sim/boot/ssc.h
index 3b94c03e43a9..88752c7509e0 100644
--- a/arch/ia64/hp/sim/boot/ssc.h
+++ b/arch/ia64/hp/sim/boot/ssc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1998-2003 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/hp/sim/hpsim.S b/arch/ia64/hp/sim/hpsim.S
index ff16e8a857d1..44b4d53e1689 100644
--- a/arch/ia64/hp/sim/hpsim.S
+++ b/arch/ia64/hp/sim/hpsim.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/asmmacro.h>
/*
diff --git a/arch/ia64/hp/sim/hpsim_console.c b/arch/ia64/hp/sim/hpsim_console.c
index 01663bc42b1a..bffd9f67a8a1 100644
--- a/arch/ia64/hp/sim/hpsim_console.c
+++ b/arch/ia64/hp/sim/hpsim_console.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Platform dependent support for HP simulator.
*
diff --git a/arch/ia64/hp/sim/hpsim_irq.c b/arch/ia64/hp/sim/hpsim_irq.c
index 0aa70ebda49d..2f1cc59650ab 100644
--- a/arch/ia64/hp/sim/hpsim_irq.c
+++ b/arch/ia64/hp/sim/hpsim_irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Platform dependent support for HP simulator.
*
diff --git a/arch/ia64/hp/sim/hpsim_setup.c b/arch/ia64/hp/sim/hpsim_setup.c
index 664a5402a695..41d21d51dc4d 100644
--- a/arch/ia64/hp/sim/hpsim_setup.c
+++ b/arch/ia64/hp/sim/hpsim_setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Platform dependent support for HP simulator.
*
diff --git a/arch/ia64/hp/sim/hpsim_ssc.h b/arch/ia64/hp/sim/hpsim_ssc.h
index bfa3906274b3..6fd97a487811 100644
--- a/arch/ia64/hp/sim/hpsim_ssc.h
+++ b/arch/ia64/hp/sim/hpsim_ssc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Platform dependent support for HP simulator.
*
diff --git a/arch/ia64/hp/sim/simeth.c b/arch/ia64/hp/sim/simeth.c
index d1b04c4c95e3..f39ef2b4ed72 100644
--- a/arch/ia64/hp/sim/simeth.c
+++ b/arch/ia64/hp/sim/simeth.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Simulated Ethernet Driver
*
diff --git a/arch/ia64/hp/sim/simscsi.c b/arch/ia64/hp/sim/simscsi.c
index 085047f3a545..7e1426e76d96 100644
--- a/arch/ia64/hp/sim/simscsi.c
+++ b/arch/ia64/hp/sim/simscsi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Simulated SCSI driver.
*
diff --git a/arch/ia64/hp/sim/simserial.c b/arch/ia64/hp/sim/simserial.c
index 70d52e9bb575..a419ccf33cde 100644
--- a/arch/ia64/hp/sim/simserial.c
+++ b/arch/ia64/hp/sim/simserial.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Simulated Serial Driver (fake serial)
*
diff --git a/arch/ia64/include/asm/agp.h b/arch/ia64/include/asm/agp.h
index 01d09c401c5c..2b451c4496da 100644
--- a/arch/ia64/include/asm/agp.h
+++ b/arch/ia64/include/asm/agp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_AGP_H
#define _ASM_IA64_AGP_H
diff --git a/arch/ia64/include/asm/asm-prototypes.h b/arch/ia64/include/asm/asm-prototypes.h
index a2c139808cfe..c711536674e3 100644
--- a/arch/ia64/include/asm/asm-prototypes.h
+++ b/arch/ia64/include/asm/asm-prototypes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_ASM_PROTOTYPES_H
#define _ASM_IA64_ASM_PROTOTYPES_H
diff --git a/arch/ia64/include/asm/asmmacro.h b/arch/ia64/include/asm/asmmacro.h
index 3ab6d75aa3db..52619c517f09 100644
--- a/arch/ia64/include/asm/asmmacro.h
+++ b/arch/ia64/include/asm/asmmacro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_ASMMACRO_H
#define _ASM_IA64_ASMMACRO_H
diff --git a/arch/ia64/include/asm/atomic.h b/arch/ia64/include/asm/atomic.h
index 65d4bb2b6685..28e02c99be6d 100644
--- a/arch/ia64/include/asm/atomic.h
+++ b/arch/ia64/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_ATOMIC_H
#define _ASM_IA64_ATOMIC_H
diff --git a/arch/ia64/include/asm/barrier.h b/arch/ia64/include/asm/barrier.h
index 588f1614cafc..751cdd353446 100644
--- a/arch/ia64/include/asm/barrier.h
+++ b/arch/ia64/include/asm/barrier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Memory barrier definitions. This is based on information published
* in the Processor Abstraction Layer and the System Abstraction Layer
diff --git a/arch/ia64/include/asm/bitops.h b/arch/ia64/include/asm/bitops.h
index 71e8145243ee..56a774bf13fa 100644
--- a/arch/ia64/include/asm/bitops.h
+++ b/arch/ia64/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_BITOPS_H
#define _ASM_IA64_BITOPS_H
diff --git a/arch/ia64/include/asm/bug.h b/arch/ia64/include/asm/bug.h
index 823616b5020b..bd3eeb8d1cfa 100644
--- a/arch/ia64/include/asm/bug.h
+++ b/arch/ia64/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_BUG_H
#define _ASM_IA64_BUG_H
diff --git a/arch/ia64/include/asm/bugs.h b/arch/ia64/include/asm/bugs.h
index 433523e3b2ed..0d6b9bded56c 100644
--- a/arch/ia64/include/asm/bugs.h
+++ b/arch/ia64/include/asm/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is included by init/main.c to check for architecture-dependent bugs.
*
diff --git a/arch/ia64/include/asm/cache.h b/arch/ia64/include/asm/cache.h
index 988254a7d349..4eb6f742d14f 100644
--- a/arch/ia64/include/asm/cache.h
+++ b/arch/ia64/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_CACHE_H
#define _ASM_IA64_CACHE_H
diff --git a/arch/ia64/include/asm/cacheflush.h b/arch/ia64/include/asm/cacheflush.h
index 429eefc93ee7..6d3478f8abc8 100644
--- a/arch/ia64/include/asm/cacheflush.h
+++ b/arch/ia64/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_CACHEFLUSH_H
#define _ASM_IA64_CACHEFLUSH_H
diff --git a/arch/ia64/include/asm/checksum.h b/arch/ia64/include/asm/checksum.h
index 7accf54162b2..0ed18bc3f6cf 100644
--- a/arch/ia64/include/asm/checksum.h
+++ b/arch/ia64/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_CHECKSUM_H
#define _ASM_IA64_CHECKSUM_H
diff --git a/arch/ia64/include/asm/clocksource.h b/arch/ia64/include/asm/clocksource.h
index 5c8596e4cb02..71a517751afa 100644
--- a/arch/ia64/include/asm/clocksource.h
+++ b/arch/ia64/include/asm/clocksource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* IA64-specific clocksource additions */
#ifndef _ASM_IA64_CLOCKSOURCE_H
diff --git a/arch/ia64/include/asm/cpu.h b/arch/ia64/include/asm/cpu.h
index fcca30b9f110..db125df9e088 100644
--- a/arch/ia64/include/asm/cpu.h
+++ b/arch/ia64/include/asm/cpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_CPU_H_
#define _ASM_IA64_CPU_H_
diff --git a/arch/ia64/include/asm/current.h b/arch/ia64/include/asm/current.h
index c659f90fbfd9..86fbcc88dff2 100644
--- a/arch/ia64/include/asm/current.h
+++ b/arch/ia64/include/asm/current.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_CURRENT_H
#define _ASM_IA64_CURRENT_H
diff --git a/arch/ia64/include/asm/cyclone.h b/arch/ia64/include/asm/cyclone.h
index 88f6500e84ab..a481393647e9 100644
--- a/arch/ia64/include/asm/cyclone.h
+++ b/arch/ia64/include/asm/cyclone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_IA64_CYCLONE_H
#define ASM_IA64_CYCLONE_H
diff --git a/arch/ia64/include/asm/delay.h b/arch/ia64/include/asm/delay.h
index a30a62f235e1..0227ac586107 100644
--- a/arch/ia64/include/asm/delay.h
+++ b/arch/ia64/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_DELAY_H
#define _ASM_IA64_DELAY_H
diff --git a/arch/ia64/include/asm/dma-mapping.h b/arch/ia64/include/asm/dma-mapping.h
index 3ce5ab4339f3..5da9421fb0ff 100644
--- a/arch/ia64/include/asm/dma-mapping.h
+++ b/arch/ia64/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_DMA_MAPPING_H
#define _ASM_IA64_DMA_MAPPING_H
diff --git a/arch/ia64/include/asm/dma.h b/arch/ia64/include/asm/dma.h
index 4d97f60f1ef5..186850eec934 100644
--- a/arch/ia64/include/asm/dma.h
+++ b/arch/ia64/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_DMA_H
#define _ASM_IA64_DMA_H
diff --git a/arch/ia64/include/asm/dmi.h b/arch/ia64/include/asm/dmi.h
index f365a61f5c71..ecd9e0a0f5f9 100644
--- a/arch/ia64/include/asm/dmi.h
+++ b/arch/ia64/include/asm/dmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_DMI_H
#define _ASM_DMI_H 1
diff --git a/arch/ia64/include/asm/early_ioremap.h b/arch/ia64/include/asm/early_ioremap.h
index eec9e1d1b833..934191b1e2e3 100644
--- a/arch/ia64/include/asm/early_ioremap.h
+++ b/arch/ia64/include/asm/early_ioremap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_EARLY_IOREMAP_H
#define _ASM_IA64_EARLY_IOREMAP_H
diff --git a/arch/ia64/include/asm/elf.h b/arch/ia64/include/asm/elf.h
index 5a83c5cc3dc8..c70bb9c11f52 100644
--- a/arch/ia64/include/asm/elf.h
+++ b/arch/ia64/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_ELF_H
#define _ASM_IA64_ELF_H
diff --git a/arch/ia64/include/asm/esi.h b/arch/ia64/include/asm/esi.h
index 40991c6ba647..56d1310af06e 100644
--- a/arch/ia64/include/asm/esi.h
+++ b/arch/ia64/include/asm/esi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ESI service calls.
*
diff --git a/arch/ia64/include/asm/extable.h b/arch/ia64/include/asm/extable.h
index 20376e71eab4..83eac6aa0639 100644
--- a/arch/ia64/include/asm/extable.h
+++ b/arch/ia64/include/asm/extable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_EXTABLE_H
#define _ASM_IA64_EXTABLE_H
diff --git a/arch/ia64/include/asm/fb.h b/arch/ia64/include/asm/fb.h
index 89a397cee90a..5f95782bfa46 100644
--- a/arch/ia64/include/asm/fb.h
+++ b/arch/ia64/include/asm/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FB_H_
#define _ASM_FB_H_
diff --git a/arch/ia64/include/asm/fpswa.h b/arch/ia64/include/asm/fpswa.h
index 62edfceadaa6..2a0c23728b26 100644
--- a/arch/ia64/include/asm/fpswa.h
+++ b/arch/ia64/include/asm/fpswa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_FPSWA_H
#define _ASM_IA64_FPSWA_H
diff --git a/arch/ia64/include/asm/ftrace.h b/arch/ia64/include/asm/ftrace.h
index fbd1a2470cae..a07a8e575453 100644
--- a/arch/ia64/include/asm/ftrace.h
+++ b/arch/ia64/include/asm/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_FTRACE_H
#define _ASM_IA64_FTRACE_H
diff --git a/arch/ia64/include/asm/futex.h b/arch/ia64/include/asm/futex.h
index 6d67dc1eaf2b..db2dd85918c2 100644
--- a/arch/ia64/include/asm/futex.h
+++ b/arch/ia64/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FUTEX_H
#define _ASM_FUTEX_H
diff --git a/arch/ia64/include/asm/gcc_intrin.h b/arch/ia64/include/asm/gcc_intrin.h
index f9495b1757a8..83f230b23867 100644
--- a/arch/ia64/include/asm/gcc_intrin.h
+++ b/arch/ia64/include/asm/gcc_intrin.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Copyright (C) 2002,2003 Jun Nakajima <jun.nakajima@intel.com>
diff --git a/arch/ia64/include/asm/hardirq.h b/arch/ia64/include/asm/hardirq.h
index 8fb7d33a661f..bdc4669c71c3 100644
--- a/arch/ia64/include/asm/hardirq.h
+++ b/arch/ia64/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_HARDIRQ_H
#define _ASM_IA64_HARDIRQ_H
diff --git a/arch/ia64/include/asm/hpsim.h b/arch/ia64/include/asm/hpsim.h
index 0fe50225daa4..00fbd5cc8ab8 100644
--- a/arch/ia64/include/asm/hpsim.h
+++ b/arch/ia64/include/asm/hpsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMIA64_HPSIM_H
#define _ASMIA64_HPSIM_H
diff --git a/arch/ia64/include/asm/hugetlb.h b/arch/ia64/include/asm/hugetlb.h
index ef65f026b11e..74d2a5540aaf 100644
--- a/arch/ia64/include/asm/hugetlb.h
+++ b/arch/ia64/include/asm/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_HUGETLB_H
#define _ASM_IA64_HUGETLB_H
diff --git a/arch/ia64/include/asm/hw_irq.h b/arch/ia64/include/asm/hw_irq.h
index 74347ebf7d68..5dd3c6485c3a 100644
--- a/arch/ia64/include/asm/hw_irq.h
+++ b/arch/ia64/include/asm/hw_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_HW_IRQ_H
#define _ASM_IA64_HW_IRQ_H
diff --git a/arch/ia64/include/asm/idle.h b/arch/ia64/include/asm/idle.h
index b7685015a8ba..97c55b97e0ba 100644
--- a/arch/ia64/include/asm/idle.h
+++ b/arch/ia64/include/asm/idle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_IDLE_H
#define _ASM_IA64_IDLE_H
diff --git a/arch/ia64/include/asm/intrinsics.h b/arch/ia64/include/asm/intrinsics.h
index ec970a920132..035b17fe12ef 100644
--- a/arch/ia64/include/asm/intrinsics.h
+++ b/arch/ia64/include/asm/intrinsics.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Compiler-dependent intrinsics.
*
diff --git a/arch/ia64/include/asm/io.h b/arch/ia64/include/asm/io.h
index a2540e21f919..fb0651961e2c 100644
--- a/arch/ia64/include/asm/io.h
+++ b/arch/ia64/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_IO_H
#define _ASM_IA64_IO_H
diff --git a/arch/ia64/include/asm/iommu.h b/arch/ia64/include/asm/iommu.h
index 1d1212901ae7..156b9d8e1932 100644
--- a/arch/ia64/include/asm/iommu.h
+++ b/arch/ia64/include/asm/iommu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_IOMMU_H
#define _ASM_IA64_IOMMU_H 1
diff --git a/arch/ia64/include/asm/iommu_table.h b/arch/ia64/include/asm/iommu_table.h
index 92c8d36ae5ae..cc96116ac276 100644
--- a/arch/ia64/include/asm/iommu_table.h
+++ b/arch/ia64/include/asm/iommu_table.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_IOMMU_TABLE_H
#define _ASM_IA64_IOMMU_TABLE_H
diff --git a/arch/ia64/include/asm/iosapic.h b/arch/ia64/include/asm/iosapic.h
index 4ae1fbd7f10e..f48556cb8afc 100644
--- a/arch/ia64/include/asm/iosapic.h
+++ b/arch/ia64/include/asm/iosapic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_IA64_IOSAPIC_H
#define __ASM_IA64_IOSAPIC_H
diff --git a/arch/ia64/include/asm/irq.h b/arch/ia64/include/asm/irq.h
index 820667cbea7e..8b84a55ed38a 100644
--- a/arch/ia64/include/asm/irq.h
+++ b/arch/ia64/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_IRQ_H
#define _ASM_IA64_IRQ_H
diff --git a/arch/ia64/include/asm/irq_remapping.h b/arch/ia64/include/asm/irq_remapping.h
index a8687b1d8906..547a6e87018c 100644
--- a/arch/ia64/include/asm/irq_remapping.h
+++ b/arch/ia64/include/asm/irq_remapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IA64_INTR_REMAPPING_H
#define __IA64_INTR_REMAPPING_H
#define irq_remapping_enabled 0
diff --git a/arch/ia64/include/asm/irqflags.h b/arch/ia64/include/asm/irqflags.h
index cec6c06b52c0..d97f8435be4f 100644
--- a/arch/ia64/include/asm/irqflags.h
+++ b/arch/ia64/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IRQ flags defines.
*
diff --git a/arch/ia64/include/asm/kexec.h b/arch/ia64/include/asm/kexec.h
index aea2b81b03a3..294b1e1ebd2d 100644
--- a/arch/ia64/include/asm/kexec.h
+++ b/arch/ia64/include/asm/kexec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_KEXEC_H
#define _ASM_IA64_KEXEC_H
diff --git a/arch/ia64/include/asm/kmap_types.h b/arch/ia64/include/asm/kmap_types.h
index 05d5f9996105..5c268cf7c2bd 100644
--- a/arch/ia64/include/asm/kmap_types.h
+++ b/arch/ia64/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_KMAP_TYPES_H
#define _ASM_IA64_KMAP_TYPES_H
diff --git a/arch/ia64/include/asm/kregs.h b/arch/ia64/include/asm/kregs.h
index 39e65f6639f5..44113b75e4eb 100644
--- a/arch/ia64/include/asm/kregs.h
+++ b/arch/ia64/include/asm/kregs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_KREGS_H
#define _ASM_IA64_KREGS_H
diff --git a/arch/ia64/include/asm/libata-portmap.h b/arch/ia64/include/asm/libata-portmap.h
index 7a1f8310596b..757f84e5dc6e 100644
--- a/arch/ia64/include/asm/libata-portmap.h
+++ b/arch/ia64/include/asm/libata-portmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_IA64_LIBATA_PORTMAP_H
#define __ASM_IA64_LIBATA_PORTMAP_H
diff --git a/arch/ia64/include/asm/linkage.h b/arch/ia64/include/asm/linkage.h
index 787575701f1c..5178af560925 100644
--- a/arch/ia64/include/asm/linkage.h
+++ b/arch/ia64/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
diff --git a/arch/ia64/include/asm/machvec.h b/arch/ia64/include/asm/machvec.h
index af285c423e1e..267f4f170191 100644
--- a/arch/ia64/include/asm/machvec.h
+++ b/arch/ia64/include/asm/machvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine vector for IA-64.
*
diff --git a/arch/ia64/include/asm/machvec_dig.h b/arch/ia64/include/asm/machvec_dig.h
index 1f7403a2fbee..bc230f69faeb 100644
--- a/arch/ia64/include/asm/machvec_dig.h
+++ b/arch/ia64/include/asm/machvec_dig.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_MACHVEC_DIG_h
#define _ASM_IA64_MACHVEC_DIG_h
diff --git a/arch/ia64/include/asm/machvec_dig_vtd.h b/arch/ia64/include/asm/machvec_dig_vtd.h
index 44308b4c3f6e..bb44eb9039dd 100644
--- a/arch/ia64/include/asm/machvec_dig_vtd.h
+++ b/arch/ia64/include/asm/machvec_dig_vtd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_MACHVEC_DIG_VTD_h
#define _ASM_IA64_MACHVEC_DIG_VTD_h
diff --git a/arch/ia64/include/asm/machvec_hpsim.h b/arch/ia64/include/asm/machvec_hpsim.h
index e75711279366..056f8405822e 100644
--- a/arch/ia64/include/asm/machvec_hpsim.h
+++ b/arch/ia64/include/asm/machvec_hpsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_MACHVEC_HPSIM_h
#define _ASM_IA64_MACHVEC_HPSIM_h
diff --git a/arch/ia64/include/asm/machvec_hpzx1.h b/arch/ia64/include/asm/machvec_hpzx1.h
index c74d3159e9eb..5299ac38bfb6 100644
--- a/arch/ia64/include/asm/machvec_hpzx1.h
+++ b/arch/ia64/include/asm/machvec_hpzx1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_MACHVEC_HPZX1_h
#define _ASM_IA64_MACHVEC_HPZX1_h
diff --git a/arch/ia64/include/asm/machvec_hpzx1_swiotlb.h b/arch/ia64/include/asm/machvec_hpzx1_swiotlb.h
index 906ef6210774..5aec6a008c61 100644
--- a/arch/ia64/include/asm/machvec_hpzx1_swiotlb.h
+++ b/arch/ia64/include/asm/machvec_hpzx1_swiotlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_MACHVEC_HPZX1_SWIOTLB_h
#define _ASM_IA64_MACHVEC_HPZX1_SWIOTLB_h
diff --git a/arch/ia64/include/asm/machvec_init.h b/arch/ia64/include/asm/machvec_init.h
index 37a469849ab9..2b32fd06b7c6 100644
--- a/arch/ia64/include/asm/machvec_init.h
+++ b/arch/ia64/include/asm/machvec_init.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/iommu.h>
#include <asm/machvec.h>
diff --git a/arch/ia64/include/asm/mca.h b/arch/ia64/include/asm/mca.h
index 8c7096168716..726df17f1b51 100644
--- a/arch/ia64/include/asm/mca.h
+++ b/arch/ia64/include/asm/mca.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File: mca.h
* Purpose: Machine check handling specific defines
diff --git a/arch/ia64/include/asm/mca_asm.h b/arch/ia64/include/asm/mca_asm.h
index 13c1d4994d49..e3ab1f41f1c3 100644
--- a/arch/ia64/include/asm/mca_asm.h
+++ b/arch/ia64/include/asm/mca_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File: mca_asm.h
* Purpose: Machine check handling specific defines
diff --git a/arch/ia64/include/asm/mman.h b/arch/ia64/include/asm/mman.h
index fdd5f5229f78..15cf100add0e 100644
--- a/arch/ia64/include/asm/mman.h
+++ b/arch/ia64/include/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Based on <asm-i386/mman.h>.
*
diff --git a/arch/ia64/include/asm/mmu.h b/arch/ia64/include/asm/mmu.h
index 611432ba579c..f75f44f531c2 100644
--- a/arch/ia64/include/asm/mmu.h
+++ b/arch/ia64/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MMU_H
#define __MMU_H
diff --git a/arch/ia64/include/asm/mmu_context.h b/arch/ia64/include/asm/mmu_context.h
index 9b99368633b5..2da0e2eb036b 100644
--- a/arch/ia64/include/asm/mmu_context.h
+++ b/arch/ia64/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_MMU_CONTEXT_H
#define _ASM_IA64_MMU_CONTEXT_H
diff --git a/arch/ia64/include/asm/module.h b/arch/ia64/include/asm/module.h
index f31894b2a354..f319144260ce 100644
--- a/arch/ia64/include/asm/module.h
+++ b/arch/ia64/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_MODULE_H
#define _ASM_IA64_MODULE_H
diff --git a/arch/ia64/include/asm/msidef.h b/arch/ia64/include/asm/msidef.h
index 592c1047a0c5..18d0e4226748 100644
--- a/arch/ia64/include/asm/msidef.h
+++ b/arch/ia64/include/asm/msidef.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IA64_MSI_DEF_H
#define _IA64_MSI_DEF_H
diff --git a/arch/ia64/include/asm/page.h b/arch/ia64/include/asm/page.h
index e8c486ef0d76..5798bd2b462c 100644
--- a/arch/ia64/include/asm/page.h
+++ b/arch/ia64/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_PAGE_H
#define _ASM_IA64_PAGE_H
/*
diff --git a/arch/ia64/include/asm/pal.h b/arch/ia64/include/asm/pal.h
index 2e69284df8e7..f9d2b3b2dfad 100644
--- a/arch/ia64/include/asm/pal.h
+++ b/arch/ia64/include/asm/pal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_PAL_H
#define _ASM_IA64_PAL_H
diff --git a/arch/ia64/include/asm/param.h b/arch/ia64/include/asm/param.h
index 1295913d6a82..f0b786227c40 100644
--- a/arch/ia64/include/asm/param.h
+++ b/arch/ia64/include/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Fundamental kernel parameters.
*
diff --git a/arch/ia64/include/asm/parport.h b/arch/ia64/include/asm/parport.h
index 638b4d271b99..360ca9bf2f6f 100644
--- a/arch/ia64/include/asm/parport.h
+++ b/arch/ia64/include/asm/parport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* parport.h: platform-specific PC-style parport initialisation
*
diff --git a/arch/ia64/include/asm/patch.h b/arch/ia64/include/asm/patch.h
index 295fe6ab4584..bd487ed22bf5 100644
--- a/arch/ia64/include/asm/patch.h
+++ b/arch/ia64/include/asm/patch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_PATCH_H
#define _ASM_IA64_PATCH_H
diff --git a/arch/ia64/include/asm/pci.h b/arch/ia64/include/asm/pci.h
index 6459f2d46200..e20d77f6a3c1 100644
--- a/arch/ia64/include/asm/pci.h
+++ b/arch/ia64/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_PCI_H
#define _ASM_IA64_PCI_H
diff --git a/arch/ia64/include/asm/percpu.h b/arch/ia64/include/asm/percpu.h
index b9295793a5e2..f357b9bb3576 100644
--- a/arch/ia64/include/asm/percpu.h
+++ b/arch/ia64/include/asm/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_PERCPU_H
#define _ASM_IA64_PERCPU_H
diff --git a/arch/ia64/include/asm/perfmon.h b/arch/ia64/include/asm/perfmon.h
index 15476dd3a8b0..e0545869cc8c 100644
--- a/arch/ia64/include/asm/perfmon.h
+++ b/arch/ia64/include/asm/perfmon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2001-2003 Hewlett-Packard Co
* Stephane Eranian <eranian@hpl.hp.com>
diff --git a/arch/ia64/include/asm/pgalloc.h b/arch/ia64/include/asm/pgalloc.h
index f5e70e961948..3ee5362f2661 100644
--- a/arch/ia64/include/asm/pgalloc.h
+++ b/arch/ia64/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_PGALLOC_H
#define _ASM_IA64_PGALLOC_H
diff --git a/arch/ia64/include/asm/pgtable.h b/arch/ia64/include/asm/pgtable.h
index 6cc22c8d8923..165827774bea 100644
--- a/arch/ia64/include/asm/pgtable.h
+++ b/arch/ia64/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_PGTABLE_H
#define _ASM_IA64_PGTABLE_H
diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h
index ab982f07ea68..10061ccf0440 100644
--- a/arch/ia64/include/asm/processor.h
+++ b/arch/ia64/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_PROCESSOR_H
#define _ASM_IA64_PROCESSOR_H
diff --git a/arch/ia64/include/asm/ptrace.h b/arch/ia64/include/asm/ptrace.h
index 845143990a1d..7ff574d56429 100644
--- a/arch/ia64/include/asm/ptrace.h
+++ b/arch/ia64/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1998-2004 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/include/asm/rwsem.h b/arch/ia64/include/asm/rwsem.h
index 8fa98dd303b4..7d6fceb3d567 100644
--- a/arch/ia64/include/asm/rwsem.h
+++ b/arch/ia64/include/asm/rwsem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* R/W semaphores for ia64
*
diff --git a/arch/ia64/include/asm/sal.h b/arch/ia64/include/asm/sal.h
index e504f382115e..588f33156da6 100644
--- a/arch/ia64/include/asm/sal.h
+++ b/arch/ia64/include/asm/sal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_SAL_H
#define _ASM_IA64_SAL_H
diff --git a/arch/ia64/include/asm/sections.h b/arch/ia64/include/asm/sections.h
index 2ab2003698ef..f3481408594e 100644
--- a/arch/ia64/include/asm/sections.h
+++ b/arch/ia64/include/asm/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_SECTIONS_H
#define _ASM_IA64_SECTIONS_H
diff --git a/arch/ia64/include/asm/shmparam.h b/arch/ia64/include/asm/shmparam.h
index d07508dc54ae..43bd8324ab71 100644
--- a/arch/ia64/include/asm/shmparam.h
+++ b/arch/ia64/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_SHMPARAM_H
#define _ASM_IA64_SHMPARAM_H
diff --git a/arch/ia64/include/asm/signal.h b/arch/ia64/include/asm/signal.h
index c62afa4a0dc2..80f067f9b3ce 100644
--- a/arch/ia64/include/asm/signal.h
+++ b/arch/ia64/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Modified 1998-2001, 2003
* David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co
diff --git a/arch/ia64/include/asm/smp.h b/arch/ia64/include/asm/smp.h
index fea21e986022..7847ae40a181 100644
--- a/arch/ia64/include/asm/smp.h
+++ b/arch/ia64/include/asm/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SMP Support
*
diff --git a/arch/ia64/include/asm/sn/ioc3.h b/arch/ia64/include/asm/sn/ioc3.h
index 6eaa3cc1e919..d4a524951df3 100644
--- a/arch/ia64/include/asm/sn/ioc3.h
+++ b/arch/ia64/include/asm/sn/ioc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2005 Silicon Graphics, Inc.
*/
diff --git a/arch/ia64/include/asm/sparsemem.h b/arch/ia64/include/asm/sparsemem.h
index 67a7c40ec27f..336d0570e1fa 100644
--- a/arch/ia64/include/asm/sparsemem.h
+++ b/arch/ia64/include/asm/sparsemem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_SPARSEMEM_H
#define _ASM_IA64_SPARSEMEM_H
diff --git a/arch/ia64/include/asm/spinlock.h b/arch/ia64/include/asm/spinlock.h
index df2c121164b8..aa057abd948e 100644
--- a/arch/ia64/include/asm/spinlock.h
+++ b/arch/ia64/include/asm/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_SPINLOCK_H
#define _ASM_IA64_SPINLOCK_H
diff --git a/arch/ia64/include/asm/spinlock_types.h b/arch/ia64/include/asm/spinlock_types.h
index e2b42a52a6d3..6e345fefcdca 100644
--- a/arch/ia64/include/asm/spinlock_types.h
+++ b/arch/ia64/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_SPINLOCK_TYPES_H
#define _ASM_IA64_SPINLOCK_TYPES_H
diff --git a/arch/ia64/include/asm/string.h b/arch/ia64/include/asm/string.h
index 85fd65c52a8c..8b84df0dbfad 100644
--- a/arch/ia64/include/asm/string.h
+++ b/arch/ia64/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_STRING_H
#define _ASM_IA64_STRING_H
diff --git a/arch/ia64/include/asm/swiotlb.h b/arch/ia64/include/asm/swiotlb.h
index f0acde68aaea..841e2c7d0b21 100644
--- a/arch/ia64/include/asm/swiotlb.h
+++ b/arch/ia64/include/asm/swiotlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_IA64__SWIOTLB_H
#define ASM_IA64__SWIOTLB_H
diff --git a/arch/ia64/include/asm/switch_to.h b/arch/ia64/include/asm/switch_to.h
index e8f3585e7e7a..b10f31ec522c 100644
--- a/arch/ia64/include/asm/switch_to.h
+++ b/arch/ia64/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Low-level task switching. This is based on information published in
* the Processor Abstraction Layer and the System Abstraction Layer
diff --git a/arch/ia64/include/asm/termios.h b/arch/ia64/include/asm/termios.h
index a42f870ca4f6..589c026444cc 100644
--- a/arch/ia64/include/asm/termios.h
+++ b/arch/ia64/include/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Modified 1999
* David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co
diff --git a/arch/ia64/include/asm/thread_info.h b/arch/ia64/include/asm/thread_info.h
index 8742d741d19a..1d172a4119a7 100644
--- a/arch/ia64/include/asm/thread_info.h
+++ b/arch/ia64/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2002-2003 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/include/asm/timex.h b/arch/ia64/include/asm/timex.h
index 86c7db861180..869a3ac6bf23 100644
--- a/arch/ia64/include/asm/timex.h
+++ b/arch/ia64/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_TIMEX_H
#define _ASM_IA64_TIMEX_H
diff --git a/arch/ia64/include/asm/tlb.h b/arch/ia64/include/asm/tlb.h
index cbe5ac3699bf..44f0ac0df308 100644
--- a/arch/ia64/include/asm/tlb.h
+++ b/arch/ia64/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_TLB_H
#define _ASM_IA64_TLB_H
/*
diff --git a/arch/ia64/include/asm/tlbflush.h b/arch/ia64/include/asm/tlbflush.h
index 3be25dfed164..25e280810f6c 100644
--- a/arch/ia64/include/asm/tlbflush.h
+++ b/arch/ia64/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_TLBFLUSH_H
#define _ASM_IA64_TLBFLUSH_H
diff --git a/arch/ia64/include/asm/types.h b/arch/ia64/include/asm/types.h
index 4c351b169da2..5ddc7703de99 100644
--- a/arch/ia64/include/asm/types.h
+++ b/arch/ia64/include/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file is never included by application software unless explicitly
* requested (e.g., via linux/types.h) in which case the application is
diff --git a/arch/ia64/include/asm/uaccess.h b/arch/ia64/include/asm/uaccess.h
index 0890ded638f0..a74524f2d625 100644
--- a/arch/ia64/include/asm/uaccess.h
+++ b/arch/ia64/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_UACCESS_H
#define _ASM_IA64_UACCESS_H
diff --git a/arch/ia64/include/asm/unaligned.h b/arch/ia64/include/asm/unaligned.h
index 7bddc7f58584..328942e3cbce 100644
--- a/arch/ia64/include/asm/unaligned.h
+++ b/arch/ia64/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_UNALIGNED_H
#define _ASM_IA64_UNALIGNED_H
diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h
index 8c85209753ab..ffb705dc9c13 100644
--- a/arch/ia64/include/asm/unistd.h
+++ b/arch/ia64/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IA-64 Linux syscall numbers and inline-functions.
*
diff --git a/arch/ia64/include/asm/unwind.h b/arch/ia64/include/asm/unwind.h
index 1af3875f1a57..c5bd4b3e3a36 100644
--- a/arch/ia64/include/asm/unwind.h
+++ b/arch/ia64/include/asm/unwind.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_UNWIND_H
#define _ASM_IA64_UNWIND_H
diff --git a/arch/ia64/include/asm/user.h b/arch/ia64/include/asm/user.h
index 8b9821110348..0ba486651b7c 100644
--- a/arch/ia64/include/asm/user.h
+++ b/arch/ia64/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_USER_H
#define _ASM_IA64_USER_H
diff --git a/arch/ia64/include/asm/ustack.h b/arch/ia64/include/asm/ustack.h
index b275401b96d3..112d40a0fec2 100644
--- a/arch/ia64/include/asm/ustack.h
+++ b/arch/ia64/include/asm/ustack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_USTACK_H
#define _ASM_IA64_USTACK_H
diff --git a/arch/ia64/include/asm/uv/uv.h b/arch/ia64/include/asm/uv/uv.h
index 8f6cbaa742e9..71df93ee3bc0 100644
--- a/arch/ia64/include/asm/uv/uv.h
+++ b/arch/ia64/include/asm/uv/uv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IA64_UV_UV_H
#define _ASM_IA64_UV_UV_H
diff --git a/arch/ia64/include/asm/vga.h b/arch/ia64/include/asm/vga.h
index 02184ecd8208..30cb373f3de8 100644
--- a/arch/ia64/include/asm/vga.h
+++ b/arch/ia64/include/asm/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Access to VGA videoram
*
diff --git a/arch/ia64/include/uapi/asm/auxvec.h b/arch/ia64/include/uapi/asm/auxvec.h
index 58277fc650ef..09969a5d2e0a 100644
--- a/arch/ia64/include/uapi/asm/auxvec.h
+++ b/arch/ia64/include/uapi/asm/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_AUXVEC_H
#define _ASM_IA64_AUXVEC_H
diff --git a/arch/ia64/include/uapi/asm/bitsperlong.h b/arch/ia64/include/uapi/asm/bitsperlong.h
index ec4db3c970b7..1146d55563db 100644
--- a/arch/ia64/include/uapi/asm/bitsperlong.h
+++ b/arch/ia64/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_IA64_BITSPERLONG_H
#define __ASM_IA64_BITSPERLONG_H
diff --git a/arch/ia64/include/uapi/asm/break.h b/arch/ia64/include/uapi/asm/break.h
index f03402039896..5d742bcb0018 100644
--- a/arch/ia64/include/uapi/asm/break.h
+++ b/arch/ia64/include/uapi/asm/break.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_BREAK_H
#define _ASM_IA64_BREAK_H
diff --git a/arch/ia64/include/uapi/asm/byteorder.h b/arch/ia64/include/uapi/asm/byteorder.h
index a8dd73558150..f85d0faaaf34 100644
--- a/arch/ia64/include/uapi/asm/byteorder.h
+++ b/arch/ia64/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_BYTEORDER_H
#define _ASM_IA64_BYTEORDER_H
diff --git a/arch/ia64/include/uapi/asm/cmpxchg.h b/arch/ia64/include/uapi/asm/cmpxchg.h
index a0e3620f8f13..d69c979936d4 100644
--- a/arch/ia64/include/uapi/asm/cmpxchg.h
+++ b/arch/ia64/include/uapi/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_CMPXCHG_H
#define _ASM_IA64_CMPXCHG_H
diff --git a/arch/ia64/include/uapi/asm/errno.h b/arch/ia64/include/uapi/asm/errno.h
index 4c82b503d92f..9addba592646 100644
--- a/arch/ia64/include/uapi/asm/errno.h
+++ b/arch/ia64/include/uapi/asm/errno.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/errno.h>
diff --git a/arch/ia64/include/uapi/asm/fcntl.h b/arch/ia64/include/uapi/asm/fcntl.h
index 7b485876cad4..7b95523efe5a 100644
--- a/arch/ia64/include/uapi/asm/fcntl.h
+++ b/arch/ia64/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_FCNTL_H
#define _ASM_IA64_FCNTL_H
/*
diff --git a/arch/ia64/include/uapi/asm/fpu.h b/arch/ia64/include/uapi/asm/fpu.h
index b6395ad1500a..0df392982ce8 100644
--- a/arch/ia64/include/uapi/asm/fpu.h
+++ b/arch/ia64/include/uapi/asm/fpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_FPU_H
#define _ASM_IA64_FPU_H
diff --git a/arch/ia64/include/uapi/asm/gcc_intrin.h b/arch/ia64/include/uapi/asm/gcc_intrin.h
index 61d0d0111978..c60696fd1e37 100644
--- a/arch/ia64/include/uapi/asm/gcc_intrin.h
+++ b/arch/ia64/include/uapi/asm/gcc_intrin.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
* Copyright (C) 2002,2003 Jun Nakajima <jun.nakajima@intel.com>
diff --git a/arch/ia64/include/uapi/asm/ia64regs.h b/arch/ia64/include/uapi/asm/ia64regs.h
index 1757f1c11ad4..d7d10cec8b9f 100644
--- a/arch/ia64/include/uapi/asm/ia64regs.h
+++ b/arch/ia64/include/uapi/asm/ia64regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2002,2003 Intel Corp.
* Jun Nakajima <jun.nakajima@intel.com>
diff --git a/arch/ia64/include/uapi/asm/intel_intrin.h b/arch/ia64/include/uapi/asm/intel_intrin.h
index 53cec577558a..ab649691545a 100644
--- a/arch/ia64/include/uapi/asm/intel_intrin.h
+++ b/arch/ia64/include/uapi/asm/intel_intrin.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_INTEL_INTRIN_H
#define _ASM_IA64_INTEL_INTRIN_H
/*
diff --git a/arch/ia64/include/uapi/asm/intrinsics.h b/arch/ia64/include/uapi/asm/intrinsics.h
index 5829978ff466..aecc217eca63 100644
--- a/arch/ia64/include/uapi/asm/intrinsics.h
+++ b/arch/ia64/include/uapi/asm/intrinsics.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Compiler-dependent intrinsics.
*
diff --git a/arch/ia64/include/uapi/asm/ioctl.h b/arch/ia64/include/uapi/asm/ioctl.h
index b279fe06dfe5..b809c4566e5f 100644
--- a/arch/ia64/include/uapi/asm/ioctl.h
+++ b/arch/ia64/include/uapi/asm/ioctl.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/ioctl.h>
diff --git a/arch/ia64/include/uapi/asm/ioctls.h b/arch/ia64/include/uapi/asm/ioctls.h
index f3aab5512e98..b86001940209 100644
--- a/arch/ia64/include/uapi/asm/ioctls.h
+++ b/arch/ia64/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_IOCTLS_H
#define _ASM_IA64_IOCTLS_H
diff --git a/arch/ia64/include/uapi/asm/ipcbuf.h b/arch/ia64/include/uapi/asm/ipcbuf.h
index 84c7e51cb6d0..90d6445a14df 100644
--- a/arch/ia64/include/uapi/asm/ipcbuf.h
+++ b/arch/ia64/include/uapi/asm/ipcbuf.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/ipcbuf.h>
diff --git a/arch/ia64/include/uapi/asm/mman.h b/arch/ia64/include/uapi/asm/mman.h
index 8740819adc54..ce0cc3d7509e 100644
--- a/arch/ia64/include/uapi/asm/mman.h
+++ b/arch/ia64/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Based on <asm-i386/mman.h>.
*
diff --git a/arch/ia64/include/uapi/asm/msgbuf.h b/arch/ia64/include/uapi/asm/msgbuf.h
index 6c64c0d2aae1..aa25df92d9dc 100644
--- a/arch/ia64/include/uapi/asm/msgbuf.h
+++ b/arch/ia64/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_MSGBUF_H
#define _ASM_IA64_MSGBUF_H
diff --git a/arch/ia64/include/uapi/asm/param.h b/arch/ia64/include/uapi/asm/param.h
index d7da41d9497d..123ab45940b4 100644
--- a/arch/ia64/include/uapi/asm/param.h
+++ b/arch/ia64/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Fundamental kernel parameters.
*
diff --git a/arch/ia64/include/uapi/asm/perfmon.h b/arch/ia64/include/uapi/asm/perfmon.h
index 1a10a2dd58a1..017548365e5c 100644
--- a/arch/ia64/include/uapi/asm/perfmon.h
+++ b/arch/ia64/include/uapi/asm/perfmon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2001-2003 Hewlett-Packard Co
* Stephane Eranian <eranian@hpl.hp.com>
diff --git a/arch/ia64/include/uapi/asm/perfmon_default_smpl.h b/arch/ia64/include/uapi/asm/perfmon_default_smpl.h
index a2d560c67230..d3f36aff0e1f 100644
--- a/arch/ia64/include/uapi/asm/perfmon_default_smpl.h
+++ b/arch/ia64/include/uapi/asm/perfmon_default_smpl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2002-2003 Hewlett-Packard Co
* Stephane Eranian <eranian@hpl.hp.com>
diff --git a/arch/ia64/include/uapi/asm/poll.h b/arch/ia64/include/uapi/asm/poll.h
index c98509d3149e..b7132a305a47 100644
--- a/arch/ia64/include/uapi/asm/poll.h
+++ b/arch/ia64/include/uapi/asm/poll.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/poll.h>
diff --git a/arch/ia64/include/uapi/asm/posix_types.h b/arch/ia64/include/uapi/asm/posix_types.h
index 99ee1d6510cf..bded40f7defe 100644
--- a/arch/ia64/include/uapi/asm/posix_types.h
+++ b/arch/ia64/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_POSIX_TYPES_H
#define _ASM_IA64_POSIX_TYPES_H
diff --git a/arch/ia64/include/uapi/asm/ptrace.h b/arch/ia64/include/uapi/asm/ptrace.h
index 0a02f634e12b..f52655b44414 100644
--- a/arch/ia64/include/uapi/asm/ptrace.h
+++ b/arch/ia64/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 1998-2004 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/include/uapi/asm/ptrace_offsets.h b/arch/ia64/include/uapi/asm/ptrace_offsets.h
index b712773c759e..2847c18139ef 100644
--- a/arch/ia64/include/uapi/asm/ptrace_offsets.h
+++ b/arch/ia64/include/uapi/asm/ptrace_offsets.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_PTRACE_OFFSETS_H
#define _ASM_IA64_PTRACE_OFFSETS_H
diff --git a/arch/ia64/include/uapi/asm/resource.h b/arch/ia64/include/uapi/asm/resource.h
index ba2272a87fc7..d488d2b22ac4 100644
--- a/arch/ia64/include/uapi/asm/resource.h
+++ b/arch/ia64/include/uapi/asm/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_RESOURCE_H
#define _ASM_IA64_RESOURCE_H
diff --git a/arch/ia64/include/uapi/asm/rse.h b/arch/ia64/include/uapi/asm/rse.h
index 02830a3b0196..6d260af571c5 100644
--- a/arch/ia64/include/uapi/asm/rse.h
+++ b/arch/ia64/include/uapi/asm/rse.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_RSE_H
#define _ASM_IA64_RSE_H
diff --git a/arch/ia64/include/uapi/asm/sembuf.h b/arch/ia64/include/uapi/asm/sembuf.h
index 1340fbc04d3e..6ed058760afc 100644
--- a/arch/ia64/include/uapi/asm/sembuf.h
+++ b/arch/ia64/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_SEMBUF_H
#define _ASM_IA64_SEMBUF_H
diff --git a/arch/ia64/include/uapi/asm/setup.h b/arch/ia64/include/uapi/asm/setup.h
index 8d56458310b3..8d13ce8fb03a 100644
--- a/arch/ia64/include/uapi/asm/setup.h
+++ b/arch/ia64/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __IA64_SETUP_H
#define __IA64_SETUP_H
diff --git a/arch/ia64/include/uapi/asm/shmbuf.h b/arch/ia64/include/uapi/asm/shmbuf.h
index 585002a77acd..6ef57cb70dee 100644
--- a/arch/ia64/include/uapi/asm/shmbuf.h
+++ b/arch/ia64/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_SHMBUF_H
#define _ASM_IA64_SHMBUF_H
diff --git a/arch/ia64/include/uapi/asm/sigcontext.h b/arch/ia64/include/uapi/asm/sigcontext.h
index 57ff777bcc40..1bb6f0f2bd73 100644
--- a/arch/ia64/include/uapi/asm/sigcontext.h
+++ b/arch/ia64/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_SIGCONTEXT_H
#define _ASM_IA64_SIGCONTEXT_H
diff --git a/arch/ia64/include/uapi/asm/siginfo.h b/arch/ia64/include/uapi/asm/siginfo.h
index 33389fc36f23..f3a02a10c3a3 100644
--- a/arch/ia64/include/uapi/asm/siginfo.h
+++ b/arch/ia64/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Based on <asm-i386/siginfo.h>.
*
diff --git a/arch/ia64/include/uapi/asm/signal.h b/arch/ia64/include/uapi/asm/signal.h
index c0ea2855e96b..aa98ff1b9e22 100644
--- a/arch/ia64/include/uapi/asm/signal.h
+++ b/arch/ia64/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Modified 1998-2001, 2003
* David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co
diff --git a/arch/ia64/include/uapi/asm/socket.h b/arch/ia64/include/uapi/asm/socket.h
index 002eb85a6941..3efba40adc54 100644
--- a/arch/ia64/include/uapi/asm/socket.h
+++ b/arch/ia64/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_SOCKET_H
#define _ASM_IA64_SOCKET_H
diff --git a/arch/ia64/include/uapi/asm/sockios.h b/arch/ia64/include/uapi/asm/sockios.h
index 15c92468ad38..f27a12f95d20 100644
--- a/arch/ia64/include/uapi/asm/sockios.h
+++ b/arch/ia64/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_SOCKIOS_H
#define _ASM_IA64_SOCKIOS_H
diff --git a/arch/ia64/include/uapi/asm/stat.h b/arch/ia64/include/uapi/asm/stat.h
index 367bb90cdffa..3265ed5aac0f 100644
--- a/arch/ia64/include/uapi/asm/stat.h
+++ b/arch/ia64/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_STAT_H
#define _ASM_IA64_STAT_H
diff --git a/arch/ia64/include/uapi/asm/statfs.h b/arch/ia64/include/uapi/asm/statfs.h
index 1e589669de56..de3bae4f137d 100644
--- a/arch/ia64/include/uapi/asm/statfs.h
+++ b/arch/ia64/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_STATFS_H
#define _ASM_IA64_STATFS_H
diff --git a/arch/ia64/include/uapi/asm/swab.h b/arch/ia64/include/uapi/asm/swab.h
index c89a8cb5d8a5..79f3fef1a05e 100644
--- a/arch/ia64/include/uapi/asm/swab.h
+++ b/arch/ia64/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_SWAB_H
#define _ASM_IA64_SWAB_H
diff --git a/arch/ia64/include/uapi/asm/termbits.h b/arch/ia64/include/uapi/asm/termbits.h
index c009b94e58d9..000a1a297c75 100644
--- a/arch/ia64/include/uapi/asm/termbits.h
+++ b/arch/ia64/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_TERMBITS_H
#define _ASM_IA64_TERMBITS_H
diff --git a/arch/ia64/include/uapi/asm/termios.h b/arch/ia64/include/uapi/asm/termios.h
index d59b48c307f8..199742d08f2c 100644
--- a/arch/ia64/include/uapi/asm/termios.h
+++ b/arch/ia64/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Modified 1999
* David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co
diff --git a/arch/ia64/include/uapi/asm/types.h b/arch/ia64/include/uapi/asm/types.h
index 321193b05eed..2000de474be6 100644
--- a/arch/ia64/include/uapi/asm/types.h
+++ b/arch/ia64/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is never included by application software unless explicitly
* requested (e.g., via linux/types.h) in which case the application is
diff --git a/arch/ia64/include/uapi/asm/ucontext.h b/arch/ia64/include/uapi/asm/ucontext.h
index bf573dc8ca6a..46f51e535e04 100644
--- a/arch/ia64/include/uapi/asm/ucontext.h
+++ b/arch/ia64/include/uapi/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IA64_UCONTEXT_H
#define _ASM_IA64_UCONTEXT_H
diff --git a/arch/ia64/include/uapi/asm/unistd.h b/arch/ia64/include/uapi/asm/unistd.h
index ea5363daa7bd..5fe71d4a43de 100644
--- a/arch/ia64/include/uapi/asm/unistd.h
+++ b/arch/ia64/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* IA-64 Linux syscall numbers and inline-functions.
*
diff --git a/arch/ia64/include/uapi/asm/ustack.h b/arch/ia64/include/uapi/asm/ustack.h
index 1dfebc622692..703cc5f546ff 100644
--- a/arch/ia64/include/uapi/asm/ustack.h
+++ b/arch/ia64/include/uapi/asm/ustack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_IA64_USTACK_H
#define _UAPI_ASM_IA64_USTACK_H
diff --git a/arch/ia64/kernel/Makefile b/arch/ia64/kernel/Makefile
index 9edda5466020..14ad79f394e5 100644
--- a/arch/ia64/kernel/Makefile
+++ b/arch/ia64/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/ia64/kernel/Makefile.gate b/arch/ia64/kernel/Makefile.gate
index 7da7c65a9bb1..f53faf48b7ce 100644
--- a/arch/ia64/kernel/Makefile.gate
+++ b/arch/ia64/kernel/Makefile.gate
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# The gate DSO image is built using a special linker script.
targets += gate.so gate.lds gate.o gate-dummy.o
diff --git a/arch/ia64/kernel/asm-offsets.c b/arch/ia64/kernel/asm-offsets.c
index 798bdb209d00..b385ff2bf6ce 100644
--- a/arch/ia64/kernel/asm-offsets.c
+++ b/arch/ia64/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generate definitions needed by assembly language modules.
* This code generates raw asm output which is post-processed
diff --git a/arch/ia64/kernel/audit.c b/arch/ia64/kernel/audit.c
index 96a9d18ff4c4..5192ca899fe6 100644
--- a/arch/ia64/kernel/audit.c
+++ b/arch/ia64/kernel/audit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/types.h>
#include <linux/audit.h>
diff --git a/arch/ia64/kernel/brl_emu.c b/arch/ia64/kernel/brl_emu.c
index 987b11be0021..9bcc908bc85e 100644
--- a/arch/ia64/kernel/brl_emu.c
+++ b/arch/ia64/kernel/brl_emu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Emulation of the "brl" instruction for IA64 processors that
* don't support it in hardware.
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c
index 75859a07d75b..39f4433a6f0e 100644
--- a/arch/ia64/kernel/crash.c
+++ b/arch/ia64/kernel/crash.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/ia64/kernel/crash.c
*
diff --git a/arch/ia64/kernel/crash_dump.c b/arch/ia64/kernel/crash_dump.c
index 9c12b794e774..0ed3c3dee4cd 100644
--- a/arch/ia64/kernel/crash_dump.c
+++ b/arch/ia64/kernel/crash_dump.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* kernel/crash_dump.c - Memory preserving reboot related code.
*
diff --git a/arch/ia64/kernel/cyclone.c b/arch/ia64/kernel/cyclone.c
index ee1a4afbf9da..f80eb7fb544d 100644
--- a/arch/ia64/kernel/cyclone.c
+++ b/arch/ia64/kernel/cyclone.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/smp.h>
#include <linux/time.h>
diff --git a/arch/ia64/kernel/dma-mapping.c b/arch/ia64/kernel/dma-mapping.c
index e0dd97f4eb69..7a82c9259609 100644
--- a/arch/ia64/kernel/dma-mapping.c
+++ b/arch/ia64/kernel/dma-mapping.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/dma-mapping.h>
#include <linux/export.h>
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 81416000c5e0..9c09bf390cce 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Extensible Firmware Interface
*
diff --git a/arch/ia64/kernel/efi_stub.S b/arch/ia64/kernel/efi_stub.S
index a56e161d7515..58233bb7976d 100644
--- a/arch/ia64/kernel/efi_stub.S
+++ b/arch/ia64/kernel/efi_stub.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* EFI call stub.
*
diff --git a/arch/ia64/kernel/elfcore.c b/arch/ia64/kernel/elfcore.c
index 04bc8fd5f893..94680521fbf9 100644
--- a/arch/ia64/kernel/elfcore.c
+++ b/arch/ia64/kernel/elfcore.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/elf.h>
#include <linux/coredump.h>
#include <linux/fs.h>
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index e7a716b09350..68362b30ea47 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/ia64/kernel/entry.S
*
diff --git a/arch/ia64/kernel/entry.h b/arch/ia64/kernel/entry.h
index b83edac02965..6463dc316263 100644
--- a/arch/ia64/kernel/entry.h
+++ b/arch/ia64/kernel/entry.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Preserved registers that are shared between code in ivt.S and
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
index edbf7af95849..c0e7c9af2bb9 100644
--- a/arch/ia64/kernel/fsys.S
+++ b/arch/ia64/kernel/fsys.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains the light-weight system call handlers (fsyscall-handlers).
*
diff --git a/arch/ia64/kernel/fsyscall_gtod_data.h b/arch/ia64/kernel/fsyscall_gtod_data.h
index dcc514917731..0914c02a1eb0 100644
--- a/arch/ia64/kernel/fsyscall_gtod_data.h
+++ b/arch/ia64/kernel/fsyscall_gtod_data.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* (c) Copyright 2007 Hewlett-Packard Development Company, L.P.
* Contributed by Peter Keilty <peter.keilty@hp.com>
diff --git a/arch/ia64/kernel/gate.S b/arch/ia64/kernel/gate.S
index 0bd1b3bfaf1c..9f235cd551ab 100644
--- a/arch/ia64/kernel/gate.S
+++ b/arch/ia64/kernel/gate.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains the code that gets mapped at the upper end of each task's text
* region. For now, it contains the signal trampoline code only.
diff --git a/arch/ia64/kernel/gate.lds.S b/arch/ia64/kernel/gate.lds.S
index 3e8271e85a1e..461c7e69d465 100644
--- a/arch/ia64/kernel/gate.lds.S
+++ b/arch/ia64/kernel/gate.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linker script for gate DSO. The gate pages are an ELF shared object
* prelinked to its virtual address, with only one read-only segment and
diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S
index 3204fddc439c..e6f45170a4b9 100644
--- a/arch/ia64/kernel/head.S
+++ b/arch/ia64/kernel/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Here is where the ball gets rolling as far as the kernel is concerned.
* When control is transferred to _start, the bootload has already
diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
index d111248af719..6b51c88e3578 100644
--- a/arch/ia64/kernel/ia64_ksyms.c
+++ b/arch/ia64/kernel/ia64_ksyms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Architecture-specific kernel symbols
*/
diff --git a/arch/ia64/kernel/init_task.c b/arch/ia64/kernel/init_task.c
index fa8ee64adac2..8df9245e29d9 100644
--- a/arch/ia64/kernel/init_task.c
+++ b/arch/ia64/kernel/init_task.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This is where we statically allocate and initialize the initial
* task.
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index 90fde5b8669d..550243a94b5d 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* I/O SAPIC support.
*
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index 2ff1df7b14ea..8ed81b252694 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/ia64/kernel/irq.c
*
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index eaa3199f98c8..ab87d6c25b15 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/ia64/kernel/irq_ia64.c
*
diff --git a/arch/ia64/kernel/irq_lsapic.c b/arch/ia64/kernel/irq_lsapic.c
index 1b3a776e5161..23bf4499a75d 100644
--- a/arch/ia64/kernel/irq_lsapic.c
+++ b/arch/ia64/kernel/irq_lsapic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* LSAPIC Interrupt Controller
*
diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S
index 44a103a5de2b..1efcbe5f0c78 100644
--- a/arch/ia64/kernel/ivt.S
+++ b/arch/ia64/kernel/ivt.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/ia64/kernel/ivt.S
*
diff --git a/arch/ia64/kernel/machvec.c b/arch/ia64/kernel/machvec.c
index f5a1e5246b3e..7bfe98859911 100644
--- a/arch/ia64/kernel/machvec.c
+++ b/arch/ia64/kernel/machvec.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/dma-mapping.h>
#include <asm/machvec.h>
diff --git a/arch/ia64/kernel/mca_asm.S b/arch/ia64/kernel/mca_asm.S
index d5bdf9de36b6..086cfa4999fd 100644
--- a/arch/ia64/kernel/mca_asm.S
+++ b/arch/ia64/kernel/mca_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File: mca_asm.S
* Purpose: assembly portion of the IA64 MCA handling
diff --git a/arch/ia64/kernel/mca_drv.h b/arch/ia64/kernel/mca_drv.h
index 53b8ecb5b4b9..45bc4e3ae14f 100644
--- a/arch/ia64/kernel/mca_drv.h
+++ b/arch/ia64/kernel/mca_drv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File: mca_drv.h
* Purpose: Define helpers for Generic MCA handling
diff --git a/arch/ia64/kernel/mca_drv_asm.S b/arch/ia64/kernel/mca_drv_asm.S
index 767ac2c20d16..4428f57bee73 100644
--- a/arch/ia64/kernel/mca_drv_asm.S
+++ b/arch/ia64/kernel/mca_drv_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File: mca_drv_asm.S
* Purpose: Assembly portion of Generic MCA handling
diff --git a/arch/ia64/kernel/minstate.h b/arch/ia64/kernel/minstate.h
index 5704700fb703..d6eab2a1084d 100644
--- a/arch/ia64/kernel/minstate.h
+++ b/arch/ia64/kernel/minstate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/cache.h>
diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c
index d1d945c6bd05..853b5611a894 100644
--- a/arch/ia64/kernel/module.c
+++ b/arch/ia64/kernel/module.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IA-64-specific support for kernel module loader.
*
diff --git a/arch/ia64/kernel/msi_ia64.c b/arch/ia64/kernel/msi_ia64.c
index af4eaec0f7c3..519d9432f407 100644
--- a/arch/ia64/kernel/msi_ia64.c
+++ b/arch/ia64/kernel/msi_ia64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* MSI hooks for standard x86 apic
*/
diff --git a/arch/ia64/kernel/nr-irqs.c b/arch/ia64/kernel/nr-irqs.c
index f6769cd54bd9..f2633b22d3be 100644
--- a/arch/ia64/kernel/nr-irqs.c
+++ b/arch/ia64/kernel/nr-irqs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* calculate
* NR_IRQS = max(IA64_NATIVE_NR_IRQS, XEN_NR_IRQS, FOO_NR_IRQS...)
diff --git a/arch/ia64/kernel/pal.S b/arch/ia64/kernel/pal.S
index 94fb2e395498..d3e22c018b68 100644
--- a/arch/ia64/kernel/pal.S
+++ b/arch/ia64/kernel/pal.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PAL Firmware support
* IA-64 Processor Programmers Reference Vol 2
diff --git a/arch/ia64/kernel/patch.c b/arch/ia64/kernel/patch.c
index 944a8e2438a6..7f21a8c57ed7 100644
--- a/arch/ia64/kernel/patch.c
+++ b/arch/ia64/kernel/patch.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Instruction-patching support.
*
diff --git a/arch/ia64/kernel/pci-dma.c b/arch/ia64/kernel/pci-dma.c
index 9094a73f996f..3ba87c22dfbc 100644
--- a/arch/ia64/kernel/pci-dma.c
+++ b/arch/ia64/kernel/pci-dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Dynamic DMA mapping support.
*/
diff --git a/arch/ia64/kernel/pci-swiotlb.c b/arch/ia64/kernel/pci-swiotlb.c
index a14989dacded..5e50939aa03e 100644
--- a/arch/ia64/kernel/pci-swiotlb.c
+++ b/arch/ia64/kernel/pci-swiotlb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Glue code to lib/swiotlb.c */
#include <linux/pci.h>
diff --git a/arch/ia64/kernel/perfmon_generic.h b/arch/ia64/kernel/perfmon_generic.h
index 67489478041e..96af4696cea9 100644
--- a/arch/ia64/kernel/perfmon_generic.h
+++ b/arch/ia64/kernel/perfmon_generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains the generic PMU register description tables
* and pmc checker used by perfmon.c.
diff --git a/arch/ia64/kernel/perfmon_itanium.h b/arch/ia64/kernel/perfmon_itanium.h
index d1d508a0fbd3..f2d348648a03 100644
--- a/arch/ia64/kernel/perfmon_itanium.h
+++ b/arch/ia64/kernel/perfmon_itanium.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains the Itanium PMU register description tables
* and pmc checker used by perfmon.c.
diff --git a/arch/ia64/kernel/perfmon_mckinley.h b/arch/ia64/kernel/perfmon_mckinley.h
index c4bec7a9d18f..a993249e58bc 100644
--- a/arch/ia64/kernel/perfmon_mckinley.h
+++ b/arch/ia64/kernel/perfmon_mckinley.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains the McKinley PMU register description tables
* and pmc checker used by perfmon.c.
diff --git a/arch/ia64/kernel/perfmon_montecito.h b/arch/ia64/kernel/perfmon_montecito.h
index 7f8da4c7ca67..c0b5b9110c88 100644
--- a/arch/ia64/kernel/perfmon_montecito.h
+++ b/arch/ia64/kernel/perfmon_montecito.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains the Montecito PMU register description tables
* and pmc checker used by perfmon.c.
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index d344d0d691aa..dda0082056b3 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Architecture-specific setup.
*
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
index 3f8293378a83..427cd565fd61 100644
--- a/arch/ia64/kernel/ptrace.c
+++ b/arch/ia64/kernel/ptrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Kernel support for the ptrace() and syscall tracing interfaces.
*
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 23e3fd61e335..dee56bcb993d 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Architecture-specific setup.
*
diff --git a/arch/ia64/kernel/sigframe.h b/arch/ia64/kernel/sigframe.h
index 9fd9a1933b3d..58a36ce6c26e 100644
--- a/arch/ia64/kernel/sigframe.h
+++ b/arch/ia64/kernel/sigframe.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
struct sigscratch {
unsigned long scratch_unat; /* ar.unat for the general registers saved in pt */
unsigned long ar_pfs; /* for syscalls, the user-level function-state */
diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c
index 6146d53b6ad7..a254cc98f95c 100644
--- a/arch/ia64/kernel/signal.c
+++ b/arch/ia64/kernel/signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Architecture-specific signal handling support.
*
diff --git a/arch/ia64/kernel/stacktrace.c b/arch/ia64/kernel/stacktrace.c
index 5af2783a87f4..6e583a6bd2f6 100644
--- a/arch/ia64/kernel/stacktrace.c
+++ b/arch/ia64/kernel/stacktrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/ia64/kernel/stacktrace.c
*
diff --git a/arch/ia64/kernel/sys_ia64.c b/arch/ia64/kernel/sys_ia64.c
index 5ce927c854a6..085adfcc74a4 100644
--- a/arch/ia64/kernel/sys_ia64.c
+++ b/arch/ia64/kernel/sys_ia64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file contains various system calls that have different calling
* conventions on different platforms.
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c
index 3cb17cf9b362..6d4e76a4267f 100644
--- a/arch/ia64/kernel/traps.c
+++ b/arch/ia64/kernel/traps.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Architecture-specific trap handling.
*
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c
index a13680ca1e61..72e9b4242564 100644
--- a/arch/ia64/kernel/unaligned.c
+++ b/arch/ia64/kernel/unaligned.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Architecture-specific unaligned trap handling.
*
diff --git a/arch/ia64/kernel/unwind.c b/arch/ia64/kernel/unwind.c
index 9704e2cd9878..e04efa088902 100644
--- a/arch/ia64/kernel/unwind.c
+++ b/arch/ia64/kernel/unwind.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1999-2004 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/kernel/unwind_decoder.c b/arch/ia64/kernel/unwind_decoder.c
index 50ac2d82f9bf..83f54f7929b5 100644
--- a/arch/ia64/kernel/unwind_decoder.c
+++ b/arch/ia64/kernel/unwind_decoder.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2000 Hewlett-Packard Co
* Copyright (C) 2000 David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/kernel/unwind_i.h b/arch/ia64/kernel/unwind_i.h
index 96693a6ae370..67994a7e5816 100644
--- a/arch/ia64/kernel/unwind_i.h
+++ b/arch/ia64/kernel/unwind_i.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2000, 2002-2003 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S
index 798026dde52e..58db59da0bd8 100644
--- a/arch/ia64/kernel/vmlinux.lds.S
+++ b/arch/ia64/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/cache.h>
#include <asm/ptrace.h>
diff --git a/arch/ia64/lib/Makefile b/arch/ia64/lib/Makefile
index 1a36a3a39624..82118b38532f 100644
--- a/arch/ia64/lib/Makefile
+++ b/arch/ia64/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for ia64-specific library routines..
#
diff --git a/arch/ia64/lib/carta_random.S b/arch/ia64/lib/carta_random.S
index d0674c360364..1a4a639dc42f 100644
--- a/arch/ia64/lib/carta_random.S
+++ b/arch/ia64/lib/carta_random.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Fast, simple, yet decent quality random number generator based on
* a paper by David G. Carta ("Two Fast Implementations of the
diff --git a/arch/ia64/lib/checksum.c b/arch/ia64/lib/checksum.c
index 2cb23cb0c2e1..d26517fe3500 100644
--- a/arch/ia64/lib/checksum.c
+++ b/arch/ia64/lib/checksum.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Network checksum routines
*
diff --git a/arch/ia64/lib/clear_page.S b/arch/ia64/lib/clear_page.S
index 3cf5b76e587f..65b75085c8f4 100644
--- a/arch/ia64/lib/clear_page.S
+++ b/arch/ia64/lib/clear_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999-2002 Hewlett-Packard Co
* Stephane Eranian <eranian@hpl.hp.com>
diff --git a/arch/ia64/lib/clear_user.S b/arch/ia64/lib/clear_user.S
index 7b40731ee5d8..a28f39d349eb 100644
--- a/arch/ia64/lib/clear_user.S
+++ b/arch/ia64/lib/clear_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This routine clears to zero a linear memory buffer in user space.
*
diff --git a/arch/ia64/lib/copy_page.S b/arch/ia64/lib/copy_page.S
index cbdb9e323ffb..176f857c522e 100644
--- a/arch/ia64/lib/copy_page.S
+++ b/arch/ia64/lib/copy_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Optimized version of the standard copy_page() function
diff --git a/arch/ia64/lib/copy_page_mck.S b/arch/ia64/lib/copy_page_mck.S
index c13f69036876..d6fd56e4f1c1 100644
--- a/arch/ia64/lib/copy_page_mck.S
+++ b/arch/ia64/lib/copy_page_mck.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* McKinley-optimized version of copy_page().
*
diff --git a/arch/ia64/lib/copy_user.S b/arch/ia64/lib/copy_user.S
index 66facd52e8d0..f681556c6b86 100644
--- a/arch/ia64/lib/copy_user.S
+++ b/arch/ia64/lib/copy_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Optimized version of the copy_user() routine.
diff --git a/arch/ia64/lib/csum_partial_copy.c b/arch/ia64/lib/csum_partial_copy.c
index 42f7678ef6ad..bf9396b1ed32 100644
--- a/arch/ia64/lib/csum_partial_copy.c
+++ b/arch/ia64/lib/csum_partial_copy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Network Checksum & Copy routine
*
diff --git a/arch/ia64/lib/do_csum.S b/arch/ia64/lib/do_csum.S
index 1a431a5cf86f..6004dad2597c 100644
--- a/arch/ia64/lib/do_csum.S
+++ b/arch/ia64/lib/do_csum.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Optmized version of the standard do_csum() function
diff --git a/arch/ia64/lib/idiv32.S b/arch/ia64/lib/idiv32.S
index 715aed79a9ce..def92b708e6e 100644
--- a/arch/ia64/lib/idiv32.S
+++ b/arch/ia64/lib/idiv32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2000 Hewlett-Packard Co
* Copyright (C) 2000 David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/lib/idiv64.S b/arch/ia64/lib/idiv64.S
index 25840f697753..a8ba3bd3d4d8 100644
--- a/arch/ia64/lib/idiv64.S
+++ b/arch/ia64/lib/idiv64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999-2000 Hewlett-Packard Co
* Copyright (C) 1999-2000 David Mosberger-Tang <davidm@hpl.hp.com>
diff --git a/arch/ia64/lib/io.c b/arch/ia64/lib/io.c
index bcd16f8ad9d9..d107eaf3790d 100644
--- a/arch/ia64/lib/io.c
+++ b/arch/ia64/lib/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/types.h>
diff --git a/arch/ia64/lib/ip_fast_csum.S b/arch/ia64/lib/ip_fast_csum.S
index 648e0d4a4839..dc9e6e6fe876 100644
--- a/arch/ia64/lib/ip_fast_csum.S
+++ b/arch/ia64/lib/ip_fast_csum.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Optmized version of the ip_fast_csum() function
* Used for calculating IP header checksum
diff --git a/arch/ia64/lib/memcpy.S b/arch/ia64/lib/memcpy.S
index ba172fd6acf4..91a625fddbf0 100644
--- a/arch/ia64/lib/memcpy.S
+++ b/arch/ia64/lib/memcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Optimized version of the standard memcpy() function
diff --git a/arch/ia64/lib/memcpy_mck.S b/arch/ia64/lib/memcpy_mck.S
index bbbadc478f5b..cc4e6ac914b6 100644
--- a/arch/ia64/lib/memcpy_mck.S
+++ b/arch/ia64/lib/memcpy_mck.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Itanium 2-optimized version of memcpy and copy_user function
*
diff --git a/arch/ia64/lib/memset.S b/arch/ia64/lib/memset.S
index 87b974704075..07a8b92c6496 100644
--- a/arch/ia64/lib/memset.S
+++ b/arch/ia64/lib/memset.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Optimized version of the standard memset() function.
Copyright (c) 2002 Hewlett-Packard Co/CERN
diff --git a/arch/ia64/lib/strlen.S b/arch/ia64/lib/strlen.S
index 1a6e17c657b4..d66de5966974 100644
--- a/arch/ia64/lib/strlen.S
+++ b/arch/ia64/lib/strlen.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Optimized version of the standard strlen() function
diff --git a/arch/ia64/lib/strncpy_from_user.S b/arch/ia64/lib/strncpy_from_user.S
index ca9ccf280e2e..49eb81b69cd2 100644
--- a/arch/ia64/lib/strncpy_from_user.S
+++ b/arch/ia64/lib/strncpy_from_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Just like strncpy() except that if a fault occurs during copying,
* -EFAULT is returned.
diff --git a/arch/ia64/lib/strnlen_user.S b/arch/ia64/lib/strnlen_user.S
index 80a5dfd1d402..4b684d4da106 100644
--- a/arch/ia64/lib/strnlen_user.S
+++ b/arch/ia64/lib/strnlen_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Returns 0 if exception before NUL or reaching the supplied limit (N),
* a value greater than N if the string is longer than the limit, else
diff --git a/arch/ia64/mm/Makefile b/arch/ia64/mm/Makefile
index bb0a01a81878..99a35039b548 100644
--- a/arch/ia64/mm/Makefile
+++ b/arch/ia64/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the ia64-specific parts of the memory manager.
#
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
index 878626805369..9b2d994cddf6 100644
--- a/arch/ia64/mm/discontig.c
+++ b/arch/ia64/mm/discontig.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2000, 2003 Silicon Graphics, Inc. All rights reserved.
* Copyright (c) 2001 Intel Corp.
diff --git a/arch/ia64/mm/extable.c b/arch/ia64/mm/extable.c
index 10dd4a66e167..da477c11770b 100644
--- a/arch/ia64/mm/extable.c
+++ b/arch/ia64/mm/extable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Kernel exception handling table support. Derived from arch/alpha/mm/extable.c.
*
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index 15f09cfff335..dfdc152d6737 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* MMU fault handling support.
*
diff --git a/arch/ia64/mm/hugetlbpage.c b/arch/ia64/mm/hugetlbpage.c
index ae35140332f7..d16e419fd712 100644
--- a/arch/ia64/mm/hugetlbpage.c
+++ b/arch/ia64/mm/hugetlbpage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IA-64 Huge TLB Page Support for Kernel.
*
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index a4e8d6bd9cfa..7af4e05bb61e 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Initialize MMU support.
*
diff --git a/arch/ia64/module.lds b/arch/ia64/module.lds
index 6481f42fbd8c..eff68f362793 100644
--- a/arch/ia64/module.lds
+++ b/arch/ia64/module.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
SECTIONS {
/* Group unwind sections into a single section: */
.IA_64.unwind_info : { *(.IA_64.unwind_info*) }
diff --git a/arch/ia64/oprofile/Makefile b/arch/ia64/oprofile/Makefile
index aad27a718ee0..cd134d6643bf 100644
--- a/arch/ia64/oprofile/Makefile
+++ b/arch/ia64/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
DRIVER_OBJS := $(addprefix ../../../drivers/oprofile/, \
diff --git a/arch/ia64/pci/fixup.c b/arch/ia64/pci/fixup.c
index 41caa99add51..e1fa45b2148c 100644
--- a/arch/ia64/pci/fixup.c
+++ b/arch/ia64/pci/fixup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Exceptions for specific devices. Usually work-arounds for fatal design flaws.
* Derived from fixup.c of i386 tree.
diff --git a/arch/ia64/scripts/check-gas b/arch/ia64/scripts/check-gas
index 2499e0b2243d..787cf9b6b04a 100755
--- a/arch/ia64/scripts/check-gas
+++ b/arch/ia64/scripts/check-gas
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
dir=$(dirname $0)
CC=$1
OBJDUMP=$2
diff --git a/arch/ia64/scripts/check-segrel.S b/arch/ia64/scripts/check-segrel.S
index 3be4e3dbeb83..65d6378adaaa 100644
--- a/arch/ia64/scripts/check-segrel.S
+++ b/arch/ia64/scripts/check-segrel.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.rodata
data4 @segrel(start)
.data
diff --git a/arch/ia64/scripts/check-segrel.lds b/arch/ia64/scripts/check-segrel.lds
index 85a0d54fb5ab..c385d246e458 100644
--- a/arch/ia64/scripts/check-segrel.lds
+++ b/arch/ia64/scripts/check-segrel.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
SECTIONS {
. = SIZEOF_HEADERS;
.rodata : { *(.rodata) } :ro
diff --git a/arch/ia64/scripts/check-text-align.S b/arch/ia64/scripts/check-text-align.S
index 03f586abb734..107fa1c88c2e 100644
--- a/arch/ia64/scripts/check-text-align.S
+++ b/arch/ia64/scripts/check-text-align.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.proc foo
.prologue
foo: .save rp, r2
diff --git a/arch/ia64/scripts/toolchain-flags b/arch/ia64/scripts/toolchain-flags
index 3f0c2adacb70..12dff5c981cf 100755
--- a/arch/ia64/scripts/toolchain-flags
+++ b/arch/ia64/scripts/toolchain-flags
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
#
# Check whether linker can handle cross-segment @segrel():
#
diff --git a/arch/ia64/scripts/unwcheck.py b/arch/ia64/scripts/unwcheck.py
index 2bfd941ff7c7..89f3a1480a63 100644
--- a/arch/ia64/scripts/unwcheck.py
+++ b/arch/ia64/scripts/unwcheck.py
@@ -1,4 +1,5 @@
#!/usr/bin/python
+# SPDX-License-Identifier: GPL-2.0
#
# Usage: unwcheck.py FILE
#
diff --git a/arch/ia64/sn/kernel/sn2/timer.c b/arch/ia64/sn/kernel/sn2/timer.c
index 66edc36426ed..3009d9d86f29 100644
--- a/arch/ia64/sn/kernel/sn2/timer.c
+++ b/arch/ia64/sn/kernel/sn2/timer.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/ia64/sn/kernel/sn2/timer.c
*
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig
index 87cde1e4b38c..0d9446c37ae8 100644
--- a/arch/m32r/Kconfig
+++ b/arch/m32r/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config M32R
bool
default y
@@ -194,6 +195,10 @@ config TIMER_DIVIDE
int "Timer divider (integer)"
default "128"
+config CPU_BIG_ENDIAN
+ bool "Generate big endian code"
+ default n
+
config CPU_LITTLE_ENDIAN
bool "Generate little endian code"
default n
diff --git a/arch/m32r/Kconfig.debug b/arch/m32r/Kconfig.debug
index 6c612b7691b0..ffca1e194f91 100644
--- a/arch/m32r/Kconfig.debug
+++ b/arch/m32r/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/m32r/Makefile b/arch/m32r/Makefile
index def8dd0b6bc5..d73b58c847a6 100644
--- a/arch/m32r/Makefile
+++ b/arch/m32r/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# m32r/Makefile
#
diff --git a/arch/m32r/boot/compressed/Makefile b/arch/m32r/boot/compressed/Makefile
index 0606a727aab2..abd3c75ebd32 100644
--- a/arch/m32r/boot/compressed/Makefile
+++ b/arch/m32r/boot/compressed/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/m32r/boot/compressed/Makefile
#
diff --git a/arch/m32r/boot/compressed/boot.h b/arch/m32r/boot/compressed/boot.h
index 9272e38d1104..7fce713e8aac 100644
--- a/arch/m32r/boot/compressed/boot.h
+++ b/arch/m32r/boot/compressed/boot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* 1. load vmlinuz
*
diff --git a/arch/m32r/boot/compressed/head.S b/arch/m32r/boot/compressed/head.S
index 95a0563ff076..39b693640375 100644
--- a/arch/m32r/boot/compressed/head.S
+++ b/arch/m32r/boot/compressed/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/m32r/boot/compressed/head.S
*
diff --git a/arch/m32r/boot/compressed/m32r_sio.c b/arch/m32r/boot/compressed/m32r_sio.c
index cf3023dced49..9d34bd063c31 100644
--- a/arch/m32r/boot/compressed/m32r_sio.c
+++ b/arch/m32r/boot/compressed/m32r_sio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/m32r/boot/compressed/m32r_sio.c
*
diff --git a/arch/m32r/boot/compressed/misc.c b/arch/m32r/boot/compressed/misc.c
index 3a7692745868..43e367055669 100644
--- a/arch/m32r/boot/compressed/misc.c
+++ b/arch/m32r/boot/compressed/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/m32r/boot/compressed/misc.c
*
diff --git a/arch/m32r/boot/compressed/vmlinux.lds.S b/arch/m32r/boot/compressed/vmlinux.lds.S
index dd11963f6939..c393eb559c4c 100644
--- a/arch/m32r/boot/compressed/vmlinux.lds.S
+++ b/arch/m32r/boot/compressed/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
OUTPUT_ARCH(m32r)
ENTRY(startup)
diff --git a/arch/m32r/boot/setup.S b/arch/m32r/boot/setup.S
index ef843d63083d..5909a825e2ed 100644
--- a/arch/m32r/boot/setup.S
+++ b/arch/m32r/boot/setup.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/m32r/boot/setup.S -- A setup code.
*
diff --git a/arch/m32r/include/asm/assembler.h b/arch/m32r/include/asm/assembler.h
index 728799fc70aa..ed90d894f285 100644
--- a/arch/m32r/include/asm/assembler.h
+++ b/arch/m32r/include/asm/assembler.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_ASSEMBLER_H
#define _ASM_M32R_ASSEMBLER_H
diff --git a/arch/m32r/include/asm/atomic.h b/arch/m32r/include/asm/atomic.h
index 640cc1c7099f..8bf67e55ff54 100644
--- a/arch/m32r/include/asm/atomic.h
+++ b/arch/m32r/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_ATOMIC_H
#define _ASM_M32R_ATOMIC_H
diff --git a/arch/m32r/include/asm/bitops.h b/arch/m32r/include/asm/bitops.h
index 86ba2b42a6cf..64e70e57c154 100644
--- a/arch/m32r/include/asm/bitops.h
+++ b/arch/m32r/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_BITOPS_H
#define _ASM_M32R_BITOPS_H
diff --git a/arch/m32r/include/asm/bug.h b/arch/m32r/include/asm/bug.h
index 4cc0462c15b8..7197688254da 100644
--- a/arch/m32r/include/asm/bug.h
+++ b/arch/m32r/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M32R_BUG_H
#define _M32R_BUG_H
#include <asm-generic/bug.h>
diff --git a/arch/m32r/include/asm/bugs.h b/arch/m32r/include/asm/bugs.h
index f77214eff136..74a6d428aebe 100644
--- a/arch/m32r/include/asm/bugs.h
+++ b/arch/m32r/include/asm/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_BUGS_H
#define _ASM_M32R_BUGS_H
diff --git a/arch/m32r/include/asm/cache.h b/arch/m32r/include/asm/cache.h
index 40b3ee98193d..47a766a258f8 100644
--- a/arch/m32r/include/asm/cache.h
+++ b/arch/m32r/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_CACHE_H
#define _ASM_M32R_CACHE_H
diff --git a/arch/m32r/include/asm/cachectl.h b/arch/m32r/include/asm/cachectl.h
index 2aab8f6fff41..12f73f6c1759 100644
--- a/arch/m32r/include/asm/cachectl.h
+++ b/arch/m32r/include/asm/cachectl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* cachectl.h -- defines for M32R cache control system calls
*
diff --git a/arch/m32r/include/asm/cacheflush.h b/arch/m32r/include/asm/cacheflush.h
index 8e8e04516c39..5ad2a3045483 100644
--- a/arch/m32r/include/asm/cacheflush.h
+++ b/arch/m32r/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_CACHEFLUSH_H
#define _ASM_M32R_CACHEFLUSH_H
diff --git a/arch/m32r/include/asm/cmpxchg.h b/arch/m32r/include/asm/cmpxchg.h
index 23c9d0537201..1ccdce5ff0ac 100644
--- a/arch/m32r/include/asm/cmpxchg.h
+++ b/arch/m32r/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_CMPXCHG_H
#define _ASM_M32R_CMPXCHG_H
diff --git a/arch/m32r/include/asm/dma-mapping.h b/arch/m32r/include/asm/dma-mapping.h
index aff3ae8b62f7..4abfc07f4762 100644
--- a/arch/m32r/include/asm/dma-mapping.h
+++ b/arch/m32r/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_DMA_MAPPING_H
#define _ASM_M32R_DMA_MAPPING_H
diff --git a/arch/m32r/include/asm/dma.h b/arch/m32r/include/asm/dma.h
index 52f6a22dd232..661bc3b343ed 100644
--- a/arch/m32r/include/asm/dma.h
+++ b/arch/m32r/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_DMA_H
#define _ASM_M32R_DMA_H
diff --git a/arch/m32r/include/asm/elf.h b/arch/m32r/include/asm/elf.h
index 8acc9da9a15e..576b2ff57957 100644
--- a/arch/m32r/include/asm/elf.h
+++ b/arch/m32r/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R__ELF_H
#define _ASM_M32R__ELF_H
diff --git a/arch/m32r/include/asm/emergency-restart.h b/arch/m32r/include/asm/emergency-restart.h
index 108d8c48e42e..cca44d5ae264 100644
--- a/arch/m32r/include/asm/emergency-restart.h
+++ b/arch/m32r/include/asm/emergency-restart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_EMERGENCY_RESTART_H
#define _ASM_EMERGENCY_RESTART_H
diff --git a/arch/m32r/include/asm/fb.h b/arch/m32r/include/asm/fb.h
index d92e99cd8c8a..9a0bca2686fd 100644
--- a/arch/m32r/include/asm/fb.h
+++ b/arch/m32r/include/asm/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FB_H_
#define _ASM_FB_H_
diff --git a/arch/m32r/include/asm/hardirq.h b/arch/m32r/include/asm/hardirq.h
index 5f2ac4f64ddf..10c23de02b3a 100644
--- a/arch/m32r/include/asm/hardirq.h
+++ b/arch/m32r/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __KERNEL__
#ifndef __ASM_HARDIRQ_H
#define __ASM_HARDIRQ_H
diff --git a/arch/m32r/include/asm/io.h b/arch/m32r/include/asm/io.h
index 4b0f5e001d4d..1b653bb16f9a 100644
--- a/arch/m32r/include/asm/io.h
+++ b/arch/m32r/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_IO_H
#define _ASM_M32R_IO_H
diff --git a/arch/m32r/include/asm/irq.h b/arch/m32r/include/asm/irq.h
index 242028b4d86a..85b475fff90e 100644
--- a/arch/m32r/include/asm/irq.h
+++ b/arch/m32r/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __KERNEL__
#ifndef _ASM_M32R_IRQ_H
#define _ASM_M32R_IRQ_H
diff --git a/arch/m32r/include/asm/kmap_types.h b/arch/m32r/include/asm/kmap_types.h
index 4cdb5e3a06bf..3dcba0d17d40 100644
--- a/arch/m32r/include/asm/kmap_types.h
+++ b/arch/m32r/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __M32R_KMAP_TYPES_H
#define __M32R_KMAP_TYPES_H
diff --git a/arch/m32r/include/asm/linkage.h b/arch/m32r/include/asm/linkage.h
index a9fb151cf648..f1aee6ec5bc3 100644
--- a/arch/m32r/include/asm/linkage.h
+++ b/arch/m32r/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
diff --git a/arch/m32r/include/asm/local.h b/arch/m32r/include/asm/local.h
index 4045db3e4f65..6780680c185d 100644
--- a/arch/m32r/include/asm/local.h
+++ b/arch/m32r/include/asm/local.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __M32R_LOCAL_H
#define __M32R_LOCAL_H
diff --git a/arch/m32r/include/asm/m32102.h b/arch/m32r/include/asm/m32102.h
index 52807f8db166..f0a986fece65 100644
--- a/arch/m32r/include/asm/m32102.h
+++ b/arch/m32r/include/asm/m32102.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M32102_H_
#define _M32102_H_
diff --git a/arch/m32r/include/asm/m32r.h b/arch/m32r/include/asm/m32r.h
index 214b44b40757..d27f056d92f3 100644
--- a/arch/m32r/include/asm/m32r.h
+++ b/arch/m32r/include/asm/m32r.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_M32R_H_
#define _ASM_M32R_M32R_H_
diff --git a/arch/m32r/include/asm/m32r_mp_fpga.h b/arch/m32r/include/asm/m32r_mp_fpga.h
index 976d2b995919..8eeaa9a420c5 100644
--- a/arch/m32r/include/asm/m32r_mp_fpga.h
+++ b/arch/m32r/include/asm/m32r_mp_fpga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_M32R_MP_FPGA_
#define _ASM_M32R_M32R_MP_FPGA_
diff --git a/arch/m32r/include/asm/mc146818rtc.h b/arch/m32r/include/asm/mc146818rtc.h
index aa1b7bf84f51..4effa4704347 100644
--- a/arch/m32r/include/asm/mc146818rtc.h
+++ b/arch/m32r/include/asm/mc146818rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine dependent access functions for RTC registers.
*/
diff --git a/arch/m32r/include/asm/mmu.h b/arch/m32r/include/asm/mmu.h
index 150cb92bb666..34bcccd8007d 100644
--- a/arch/m32r/include/asm/mmu.h
+++ b/arch/m32r/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_MMU_H
#define _ASM_M32R_MMU_H
diff --git a/arch/m32r/include/asm/mmu_context.h b/arch/m32r/include/asm/mmu_context.h
index 1230b7050d8e..8a499d0fb3a2 100644
--- a/arch/m32r/include/asm/mmu_context.h
+++ b/arch/m32r/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_MMU_CONTEXT_H
#define _ASM_M32R_MMU_CONTEXT_H
#ifdef __KERNEL__
diff --git a/arch/m32r/include/asm/mmzone.h b/arch/m32r/include/asm/mmzone.h
index 115ced33febd..568946c13ba6 100644
--- a/arch/m32r/include/asm/mmzone.h
+++ b/arch/m32r/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Written by Pat Gaughen (gone@us.ibm.com) Mar 2002
*
diff --git a/arch/m32r/include/asm/page.h b/arch/m32r/include/asm/page.h
index 725ede8f2889..fe4e38b394d3 100644
--- a/arch/m32r/include/asm/page.h
+++ b/arch/m32r/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_PAGE_H
#define _ASM_M32R_PAGE_H
diff --git a/arch/m32r/include/asm/pci.h b/arch/m32r/include/asm/pci.h
index 07d3834c6dec..cbcb28b5f6ff 100644
--- a/arch/m32r/include/asm/pci.h
+++ b/arch/m32r/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_PCI_H
#define _ASM_M32R_PCI_H
diff --git a/arch/m32r/include/asm/percpu.h b/arch/m32r/include/asm/percpu.h
index e3169301fe66..41e1680d1117 100644
--- a/arch/m32r/include/asm/percpu.h
+++ b/arch/m32r/include/asm/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_M32R_PERCPU__
#define __ARCH_M32R_PERCPU__
diff --git a/arch/m32r/include/asm/pgalloc.h b/arch/m32r/include/asm/pgalloc.h
index 2d55a064ccac..eed2cad57d68 100644
--- a/arch/m32r/include/asm/pgalloc.h
+++ b/arch/m32r/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_PGALLOC_H
#define _ASM_M32R_PGALLOC_H
diff --git a/arch/m32r/include/asm/pgtable-2level.h b/arch/m32r/include/asm/pgtable-2level.h
index 421e6ba3a173..d7ab1e94e3cb 100644
--- a/arch/m32r/include/asm/pgtable-2level.h
+++ b/arch/m32r/include/asm/pgtable-2level.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_PGTABLE_2LEVEL_H
#define _ASM_M32R_PGTABLE_2LEVEL_H
#ifdef __KERNEL__
diff --git a/arch/m32r/include/asm/pgtable.h b/arch/m32r/include/asm/pgtable.h
index 8c1fb902a9ce..eb7f9050c8d6 100644
--- a/arch/m32r/include/asm/pgtable.h
+++ b/arch/m32r/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_PGTABLE_H
#define _ASM_M32R_PGTABLE_H
diff --git a/arch/m32r/include/asm/processor.h b/arch/m32r/include/asm/processor.h
index 657874eeeccc..c70fa9ac7169 100644
--- a/arch/m32r/include/asm/processor.h
+++ b/arch/m32r/include/asm/processor.h
@@ -118,14 +118,6 @@ struct mm_struct;
/* Free all resources held by a thread. */
extern void release_thread(struct task_struct *);
-/* Copy and release all segment info associated with a VM */
-extern void copy_segments(struct task_struct *p, struct mm_struct * mm);
-extern void release_segments(struct mm_struct * mm);
-
-/* Copy and release all segment info associated with a VM */
-#define copy_segments(p, mm) do { } while (0)
-#define release_segments(mm) do { } while (0)
-
unsigned long get_wchan(struct task_struct *p);
#define KSTK_EIP(tsk) ((tsk)->thread.lr)
#define KSTK_ESP(tsk) ((tsk)->thread.sp)
diff --git a/arch/m32r/include/asm/rtc.h b/arch/m32r/include/asm/rtc.h
index 0340633f3f4d..a94cf1edc60f 100644
--- a/arch/m32r/include/asm/rtc.h
+++ b/arch/m32r/include/asm/rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RTC_H__
#define __RTC_H__
diff --git a/arch/m32r/include/asm/s1d13806.h b/arch/m32r/include/asm/s1d13806.h
index 248d36a82d79..79e98a259ebe 100644
--- a/arch/m32r/include/asm/s1d13806.h
+++ b/arch/m32r/include/asm/s1d13806.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
//----------------------------------------------------------------------------
//
// File generated by S1D13806CFG.EXE
diff --git a/arch/m32r/include/asm/segment.h b/arch/m32r/include/asm/segment.h
index 42b11aeb3249..4095f14728e5 100644
--- a/arch/m32r/include/asm/segment.h
+++ b/arch/m32r/include/asm/segment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_SEGMENT_H
#define _ASM_M32R_SEGMENT_H
diff --git a/arch/m32r/include/asm/serial.h b/arch/m32r/include/asm/serial.h
index 5ac244c72f15..b1375c841b4d 100644
--- a/arch/m32r/include/asm/serial.h
+++ b/arch/m32r/include/asm/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_SERIAL_H
#define _ASM_M32R_SERIAL_H
diff --git a/arch/m32r/include/asm/setup.h b/arch/m32r/include/asm/setup.h
index bbe59a9ce8c6..71b4d6514078 100644
--- a/arch/m32r/include/asm/setup.h
+++ b/arch/m32r/include/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_SETUP_H
#define _ASM_M32R_SETUP_H
diff --git a/arch/m32r/include/asm/shmparam.h b/arch/m32r/include/asm/shmparam.h
index 35986d81a528..1af73d92c96d 100644
--- a/arch/m32r/include/asm/shmparam.h
+++ b/arch/m32r/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_SHMPARAM_H
#define _ASM_M32R_SHMPARAM_H
diff --git a/arch/m32r/include/asm/signal.h b/arch/m32r/include/asm/signal.h
index ed3ded6601e8..8bf57950d21e 100644
--- a/arch/m32r/include/asm/signal.h
+++ b/arch/m32r/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_SIGNAL_H
#define _ASM_M32R_SIGNAL_H
diff --git a/arch/m32r/include/asm/smp.h b/arch/m32r/include/asm/smp.h
index c689b828dfe2..763f22700ce6 100644
--- a/arch/m32r/include/asm/smp.h
+++ b/arch/m32r/include/asm/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_SMP_H
#define _ASM_M32R_SMP_H
diff --git a/arch/m32r/include/asm/spinlock.h b/arch/m32r/include/asm/spinlock.h
index a56825592b90..604af84427ff 100644
--- a/arch/m32r/include/asm/spinlock.h
+++ b/arch/m32r/include/asm/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_SPINLOCK_H
#define _ASM_M32R_SPINLOCK_H
diff --git a/arch/m32r/include/asm/spinlock_types.h b/arch/m32r/include/asm/spinlock_types.h
index 92e27672661f..bb0d17b64198 100644
--- a/arch/m32r/include/asm/spinlock_types.h
+++ b/arch/m32r/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_SPINLOCK_TYPES_H
#define _ASM_M32R_SPINLOCK_TYPES_H
diff --git a/arch/m32r/include/asm/string.h b/arch/m32r/include/asm/string.h
index e61e2b0bfc1f..a9ea3b6c3e5a 100644
--- a/arch/m32r/include/asm/string.h
+++ b/arch/m32r/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_STRING_H
#define _ASM_M32R_STRING_H
diff --git a/arch/m32r/include/asm/syscall.h b/arch/m32r/include/asm/syscall.h
index 25f316f2b78d..22c8516d3c18 100644
--- a/arch/m32r/include/asm/syscall.h
+++ b/arch/m32r/include/asm/syscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_SYSCALL_H
#define _ASM_M32R_SYSCALL_H
diff --git a/arch/m32r/include/asm/termios.h b/arch/m32r/include/asm/termios.h
index 680898f0b3d6..40274b89cea5 100644
--- a/arch/m32r/include/asm/termios.h
+++ b/arch/m32r/include/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M32R_TERMIOS_H
#define _M32R_TERMIOS_H
diff --git a/arch/m32r/include/asm/thread_info.h b/arch/m32r/include/asm/thread_info.h
index f630d9c30b28..b3a215b0ce0a 100644
--- a/arch/m32r/include/asm/thread_info.h
+++ b/arch/m32r/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_THREAD_INFO_H
#define _ASM_M32R_THREAD_INFO_H
diff --git a/arch/m32r/include/asm/timex.h b/arch/m32r/include/asm/timex.h
index bb9fe4feb12d..a4f9f852d9e6 100644
--- a/arch/m32r/include/asm/timex.h
+++ b/arch/m32r/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_TIMEX_H
#define _ASM_M32R_TIMEX_H
diff --git a/arch/m32r/include/asm/tlb.h b/arch/m32r/include/asm/tlb.h
index c7ebd8d48f3b..3576f88b6ea4 100644
--- a/arch/m32r/include/asm/tlb.h
+++ b/arch/m32r/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M32R_TLB_H
#define _M32R_TLB_H
diff --git a/arch/m32r/include/asm/tlbflush.h b/arch/m32r/include/asm/tlbflush.h
index 92614b0ccf17..f6c7237316d0 100644
--- a/arch/m32r/include/asm/tlbflush.h
+++ b/arch/m32r/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_TLBFLUSH_H
#define _ASM_M32R_TLBFLUSH_H
diff --git a/arch/m32r/include/asm/topology.h b/arch/m32r/include/asm/topology.h
index d607eb32bd7e..ee79404e8878 100644
--- a/arch/m32r/include/asm/topology.h
+++ b/arch/m32r/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_TOPOLOGY_H
#define _ASM_M32R_TOPOLOGY_H
diff --git a/arch/m32r/include/asm/types.h b/arch/m32r/include/asm/types.h
index 04a44c6ee34d..fce0bf60536c 100644
--- a/arch/m32r/include/asm/types.h
+++ b/arch/m32r/include/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_TYPES_H
#define _ASM_M32R_TYPES_H
diff --git a/arch/m32r/include/asm/uaccess.h b/arch/m32r/include/asm/uaccess.h
index 496c4716dbc8..9d89bc3d8181 100644
--- a/arch/m32r/include/asm/uaccess.h
+++ b/arch/m32r/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_UACCESS_H
#define _ASM_M32R_UACCESS_H
diff --git a/arch/m32r/include/asm/ucontext.h b/arch/m32r/include/asm/ucontext.h
index 09324741eec3..5f9de3736624 100644
--- a/arch/m32r/include/asm/ucontext.h
+++ b/arch/m32r/include/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_UCONTEXT_H
#define _ASM_M32R_UCONTEXT_H
diff --git a/arch/m32r/include/asm/unaligned.h b/arch/m32r/include/asm/unaligned.h
index 377eb20d1ec6..5981361672f9 100644
--- a/arch/m32r/include/asm/unaligned.h
+++ b/arch/m32r/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_UNALIGNED_H
#define _ASM_M32R_UNALIGNED_H
diff --git a/arch/m32r/include/asm/unistd.h b/arch/m32r/include/asm/unistd.h
index de602533a3bd..dee4c196972e 100644
--- a/arch/m32r/include/asm/unistd.h
+++ b/arch/m32r/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_UNISTD_H
#define _ASM_M32R_UNISTD_H
diff --git a/arch/m32r/include/asm/user.h b/arch/m32r/include/asm/user.h
index 03b3c11c2aff..489b60d4aec2 100644
--- a/arch/m32r/include/asm/user.h
+++ b/arch/m32r/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_USER_H
#define _ASM_M32R_USER_H
diff --git a/arch/m32r/include/asm/vga.h b/arch/m32r/include/asm/vga.h
index a1b63061c06f..783d5bf779c2 100644
--- a/arch/m32r/include/asm/vga.h
+++ b/arch/m32r/include/asm/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_VGA_H
#define _ASM_M32R_VGA_H
diff --git a/arch/m32r/include/asm/xor.h b/arch/m32r/include/asm/xor.h
index 6d525259df3e..a4d546752c77 100644
--- a/arch/m32r/include/asm/xor.h
+++ b/arch/m32r/include/asm/xor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M32R_XOR_H
#define _ASM_M32R_XOR_H
diff --git a/arch/m32r/include/uapi/asm/bitsperlong.h b/arch/m32r/include/uapi/asm/bitsperlong.h
index 6dc0bb0c13b2..76da34b10f59 100644
--- a/arch/m32r/include/uapi/asm/bitsperlong.h
+++ b/arch/m32r/include/uapi/asm/bitsperlong.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/bitsperlong.h>
diff --git a/arch/m32r/include/uapi/asm/byteorder.h b/arch/m32r/include/uapi/asm/byteorder.h
index 21855d8b028b..9b4a8ba483cd 100644
--- a/arch/m32r/include/uapi/asm/byteorder.h
+++ b/arch/m32r/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_BYTEORDER_H
#define _ASM_M32R_BYTEORDER_H
diff --git a/arch/m32r/include/uapi/asm/errno.h b/arch/m32r/include/uapi/asm/errno.h
index 777149262aad..ab38ef607882 100644
--- a/arch/m32r/include/uapi/asm/errno.h
+++ b/arch/m32r/include/uapi/asm/errno.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_ERRNO_H
#define _ASM_M32R_ERRNO_H
diff --git a/arch/m32r/include/uapi/asm/fcntl.h b/arch/m32r/include/uapi/asm/fcntl.h
index 46ab12db5739..a77648c505d1 100644
--- a/arch/m32r/include/uapi/asm/fcntl.h
+++ b/arch/m32r/include/uapi/asm/fcntl.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/fcntl.h>
diff --git a/arch/m32r/include/uapi/asm/ioctl.h b/arch/m32r/include/uapi/asm/ioctl.h
index b279fe06dfe5..b809c4566e5f 100644
--- a/arch/m32r/include/uapi/asm/ioctl.h
+++ b/arch/m32r/include/uapi/asm/ioctl.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/ioctl.h>
diff --git a/arch/m32r/include/uapi/asm/ioctls.h b/arch/m32r/include/uapi/asm/ioctls.h
index 349bf87bfbd0..31da4c3bab94 100644
--- a/arch/m32r/include/uapi/asm/ioctls.h
+++ b/arch/m32r/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ARCH_M32R_IOCTLS_H__
#define __ARCH_M32R_IOCTLS_H__
diff --git a/arch/m32r/include/uapi/asm/ipcbuf.h b/arch/m32r/include/uapi/asm/ipcbuf.h
index 84c7e51cb6d0..90d6445a14df 100644
--- a/arch/m32r/include/uapi/asm/ipcbuf.h
+++ b/arch/m32r/include/uapi/asm/ipcbuf.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/ipcbuf.h>
diff --git a/arch/m32r/include/uapi/asm/msgbuf.h b/arch/m32r/include/uapi/asm/msgbuf.h
index 0d5a877b813e..4386ff2735ba 100644
--- a/arch/m32r/include/uapi/asm/msgbuf.h
+++ b/arch/m32r/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_MSGBUF_H
#define _ASM_M32R_MSGBUF_H
diff --git a/arch/m32r/include/uapi/asm/param.h b/arch/m32r/include/uapi/asm/param.h
index fa207bdf96e7..0bff6d6133f5 100644
--- a/arch/m32r/include/uapi/asm/param.h
+++ b/arch/m32r/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_PARAM_H
#define _ASM_M32R_PARAM_H
diff --git a/arch/m32r/include/uapi/asm/poll.h b/arch/m32r/include/uapi/asm/poll.h
index c98509d3149e..b7132a305a47 100644
--- a/arch/m32r/include/uapi/asm/poll.h
+++ b/arch/m32r/include/uapi/asm/poll.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/poll.h>
diff --git a/arch/m32r/include/uapi/asm/posix_types.h b/arch/m32r/include/uapi/asm/posix_types.h
index 236de26a409b..63316fcb1b57 100644
--- a/arch/m32r/include/uapi/asm/posix_types.h
+++ b/arch/m32r/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_POSIX_TYPES_H
#define _ASM_M32R_POSIX_TYPES_H
diff --git a/arch/m32r/include/uapi/asm/ptrace.h b/arch/m32r/include/uapi/asm/ptrace.h
index f6930a822517..99aec86cf5c0 100644
--- a/arch/m32r/include/uapi/asm/ptrace.h
+++ b/arch/m32r/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/include/asm-m32r/ptrace.h
*
diff --git a/arch/m32r/include/uapi/asm/resource.h b/arch/m32r/include/uapi/asm/resource.h
index b1ce766e37a0..3282f3c4a5ca 100644
--- a/arch/m32r/include/uapi/asm/resource.h
+++ b/arch/m32r/include/uapi/asm/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_RESOURCE_H
#define _ASM_M32R_RESOURCE_H
diff --git a/arch/m32r/include/uapi/asm/sembuf.h b/arch/m32r/include/uapi/asm/sembuf.h
index c9873d6890e2..de34664d8cd7 100644
--- a/arch/m32r/include/uapi/asm/sembuf.h
+++ b/arch/m32r/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_SEMBUF_H
#define _ASM_M32R_SEMBUF_H
diff --git a/arch/m32r/include/uapi/asm/setup.h b/arch/m32r/include/uapi/asm/setup.h
index 96961a42e5f4..d936a64bbafd 100644
--- a/arch/m32r/include/uapi/asm/setup.h
+++ b/arch/m32r/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_M32R_SETUP_H
#define _UAPI_ASM_M32R_SETUP_H
diff --git a/arch/m32r/include/uapi/asm/shmbuf.h b/arch/m32r/include/uapi/asm/shmbuf.h
index b0cdf0aa7d65..44c2ea924829 100644
--- a/arch/m32r/include/uapi/asm/shmbuf.h
+++ b/arch/m32r/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_SHMBUF_H
#define _ASM_M32R_SHMBUF_H
diff --git a/arch/m32r/include/uapi/asm/sigcontext.h b/arch/m32r/include/uapi/asm/sigcontext.h
index da4a9c36d09b..cc9ee73525ff 100644
--- a/arch/m32r/include/uapi/asm/sigcontext.h
+++ b/arch/m32r/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_SIGCONTEXT_H
#define _ASM_M32R_SIGCONTEXT_H
diff --git a/arch/m32r/include/uapi/asm/signal.h b/arch/m32r/include/uapi/asm/signal.h
index 54acacb1f1f7..c2ac3417fb98 100644
--- a/arch/m32r/include/uapi/asm/signal.h
+++ b/arch/m32r/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_M32R_SIGNAL_H
#define _UAPI_ASM_M32R_SIGNAL_H
diff --git a/arch/m32r/include/uapi/asm/socket.h b/arch/m32r/include/uapi/asm/socket.h
index e268e51a38d1..cf5018e82c3d 100644
--- a/arch/m32r/include/uapi/asm/socket.h
+++ b/arch/m32r/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_SOCKET_H
#define _ASM_M32R_SOCKET_H
diff --git a/arch/m32r/include/uapi/asm/sockios.h b/arch/m32r/include/uapi/asm/sockios.h
index 6c1fb9b43bdb..948229e474c5 100644
--- a/arch/m32r/include/uapi/asm/sockios.h
+++ b/arch/m32r/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_SOCKIOS_H
#define _ASM_M32R_SOCKIOS_H
diff --git a/arch/m32r/include/uapi/asm/stat.h b/arch/m32r/include/uapi/asm/stat.h
index 98470fe483b6..0fe9f96ce8f0 100644
--- a/arch/m32r/include/uapi/asm/stat.h
+++ b/arch/m32r/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_STAT_H
#define _ASM_M32R_STAT_H
diff --git a/arch/m32r/include/uapi/asm/statfs.h b/arch/m32r/include/uapi/asm/statfs.h
index 6eb4c6007e6b..d42ae20dbb2b 100644
--- a/arch/m32r/include/uapi/asm/statfs.h
+++ b/arch/m32r/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_STATFS_H
#define _ASM_M32R_STATFS_H
diff --git a/arch/m32r/include/uapi/asm/swab.h b/arch/m32r/include/uapi/asm/swab.h
index 54dab001d6d1..18dce47d2841 100644
--- a/arch/m32r/include/uapi/asm/swab.h
+++ b/arch/m32r/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_SWAB_H
#define _ASM_M32R_SWAB_H
diff --git a/arch/m32r/include/uapi/asm/termbits.h b/arch/m32r/include/uapi/asm/termbits.h
index 957a3c688549..6cbbae9695b4 100644
--- a/arch/m32r/include/uapi/asm/termbits.h
+++ b/arch/m32r/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M32R_TERMBITS_H
#define _ASM_M32R_TERMBITS_H
diff --git a/arch/m32r/include/uapi/asm/termios.h b/arch/m32r/include/uapi/asm/termios.h
index 07ad27b8f7db..9b80a85e83ac 100644
--- a/arch/m32r/include/uapi/asm/termios.h
+++ b/arch/m32r/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_M32R_TERMIOS_H
#define _UAPI_M32R_TERMIOS_H
diff --git a/arch/m32r/include/uapi/asm/unistd.h b/arch/m32r/include/uapi/asm/unistd.h
index 5a54f2ae3b51..adf8666a68ef 100644
--- a/arch/m32r/include/uapi/asm/unistd.h
+++ b/arch/m32r/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_M32R_UNISTD_H
#define _UAPI_ASM_M32R_UNISTD_H
diff --git a/arch/m32r/kernel/Makefile b/arch/m32r/kernel/Makefile
index 0c09dad8b1f8..bd94dca51596 100644
--- a/arch/m32r/kernel/Makefile
+++ b/arch/m32r/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/M32R kernel.
#
diff --git a/arch/m32r/kernel/align.c b/arch/m32r/kernel/align.c
index ec51e5b34860..2919a6647aff 100644
--- a/arch/m32r/kernel/align.c
+++ b/arch/m32r/kernel/align.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* align.c - address exception handler for M32R
*
diff --git a/arch/m32r/kernel/asm-offsets.c b/arch/m32r/kernel/asm-offsets.c
index cd3d2fc9c8df..7cb90b459e07 100644
--- a/arch/m32r/kernel/asm-offsets.c
+++ b/arch/m32r/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/thread_info.h>
#include <linux/kbuild.h>
diff --git a/arch/m32r/kernel/entry.S b/arch/m32r/kernel/entry.S
index c639bfa32232..bbf48f2aa2a7 100644
--- a/arch/m32r/kernel/entry.S
+++ b/arch/m32r/kernel/entry.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/m32r/kernel/entry.S
*
diff --git a/arch/m32r/kernel/head.S b/arch/m32r/kernel/head.S
index a46652dd83e6..1f040973df1c 100644
--- a/arch/m32r/kernel/head.S
+++ b/arch/m32r/kernel/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/m32r/kernel/head.S
*
diff --git a/arch/m32r/kernel/irq.c b/arch/m32r/kernel/irq.c
index 5537f7397297..83b5032f176c 100644
--- a/arch/m32r/kernel/irq.c
+++ b/arch/m32r/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/kernel/irq.c
*
diff --git a/arch/m32r/kernel/m32r_ksyms.c b/arch/m32r/kernel/m32r_ksyms.c
index 68da6b800453..46ebe071e4d6 100644
--- a/arch/m32r/kernel/m32r_ksyms.c
+++ b/arch/m32r/kernel/m32r_ksyms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/smp.h>
#include <linux/user.h>
diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c
index 8cd7e03f4370..a1a4cb136e99 100644
--- a/arch/m32r/kernel/process.c
+++ b/arch/m32r/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/kernel/process.c
*
diff --git a/arch/m32r/kernel/ptrace.c b/arch/m32r/kernel/ptrace.c
index 2d887400e30e..d702a5ca0f92 100644
--- a/arch/m32r/kernel/ptrace.c
+++ b/arch/m32r/kernel/ptrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/kernel/ptrace.c
*
diff --git a/arch/m32r/kernel/setup.c b/arch/m32r/kernel/setup.c
index 1a9e977287e6..b72d5db39f00 100644
--- a/arch/m32r/kernel/setup.c
+++ b/arch/m32r/kernel/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/kernel/setup.c
*
diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c
index 1ed597041fba..ba4d8d6330f1 100644
--- a/arch/m32r/kernel/signal.c
+++ b/arch/m32r/kernel/signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/kernel/signal.c
*
diff --git a/arch/m32r/kernel/sys_m32r.c b/arch/m32r/kernel/sys_m32r.c
index f34957032504..22a50fc49ab7 100644
--- a/arch/m32r/kernel/sys_m32r.c
+++ b/arch/m32r/kernel/sys_m32r.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/kernel/sys_m32r.c
*
diff --git a/arch/m32r/kernel/syscall_table.S b/arch/m32r/kernel/syscall_table.S
index f365c19795ef..cf0bcf014b98 100644
--- a/arch/m32r/kernel/syscall_table.S
+++ b/arch/m32r/kernel/syscall_table.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
ENTRY(sys_call_table)
.long sys_restart_syscall /* 0 - old "setup()" system call*/
.long sys_exit
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c
index 093f2761aa51..521749fbbb56 100644
--- a/arch/m32r/kernel/time.c
+++ b/arch/m32r/kernel/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/kernel/time.c
*
diff --git a/arch/m32r/kernel/traps.c b/arch/m32r/kernel/traps.c
index 647dd94a0c39..cb79fba79d43 100644
--- a/arch/m32r/kernel/traps.c
+++ b/arch/m32r/kernel/traps.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/kernel/traps.c
*
@@ -114,6 +115,15 @@ static void set_eit_vector_entries(void)
_flush_cache_copyback_all();
}
+void abort(void)
+{
+ BUG();
+
+ /* if that doesn't kill us, halt */
+ panic("Oops failed to kill thread");
+}
+EXPORT_SYMBOL(abort);
+
void __init trap_init(void)
{
set_eit_vector_entries();
diff --git a/arch/m32r/kernel/vmlinux.lds.S b/arch/m32r/kernel/vmlinux.lds.S
index ad1fe56455aa..7e4d957f7f7f 100644
--- a/arch/m32r/kernel/vmlinux.lds.S
+++ b/arch/m32r/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ld script to make M32R Linux kernel
*/
diff --git a/arch/m32r/lib/ashxdi3.S b/arch/m32r/lib/ashxdi3.S
index 7fc0c19801ba..cd1acca53911 100644
--- a/arch/m32r/lib/ashxdi3.S
+++ b/arch/m32r/lib/ashxdi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/m32r/lib/ashxdi3.S
*
diff --git a/arch/m32r/lib/delay.c b/arch/m32r/lib/delay.c
index 940f4837e42b..ae1fe90892f9 100644
--- a/arch/m32r/lib/delay.c
+++ b/arch/m32r/lib/delay.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/lib/delay.c
*
diff --git a/arch/m32r/lib/libgcc.h b/arch/m32r/lib/libgcc.h
index 267aa435bc35..4854690d944a 100644
--- a/arch/m32r/lib/libgcc.h
+++ b/arch/m32r/lib/libgcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LIBGCC_H
#define __ASM_LIBGCC_H
diff --git a/arch/m32r/lib/memcpy.S b/arch/m32r/lib/memcpy.S
index 05987cd639ef..249da3e3358d 100644
--- a/arch/m32r/lib/memcpy.S
+++ b/arch/m32r/lib/memcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/m32r/lib/memcpy.S
*
diff --git a/arch/m32r/lib/memset.S b/arch/m32r/lib/memset.S
index 2b2831a37927..e7f45e6c73f5 100644
--- a/arch/m32r/lib/memset.S
+++ b/arch/m32r/lib/memset.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/m32r/lib/memset.S
*
diff --git a/arch/m32r/lib/strlen.S b/arch/m32r/lib/strlen.S
index 916de9e8f801..41c77e387593 100644
--- a/arch/m32r/lib/strlen.S
+++ b/arch/m32r/lib/strlen.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/m32r/strlen.S -- strlen code.
*
diff --git a/arch/m32r/lib/ucmpdi2.c b/arch/m32r/lib/ucmpdi2.c
index 9d3c682c89b5..e20fa3484fd8 100644
--- a/arch/m32r/lib/ucmpdi2.c
+++ b/arch/m32r/lib/ucmpdi2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "libgcc.h"
int __ucmpdi2(unsigned long long a, unsigned long long b)
diff --git a/arch/m32r/lib/usercopy.c b/arch/m32r/lib/usercopy.c
index b723b11107c7..0892a4341b3a 100644
--- a/arch/m32r/lib/usercopy.c
+++ b/arch/m32r/lib/usercopy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* User address space access functions.
* The non inlined parts of asm-m32r/uaccess.h are here.
diff --git a/arch/m32r/mm/Makefile b/arch/m32r/mm/Makefile
index c51c1c3b4a5f..cb20d90c51d1 100644
--- a/arch/m32r/mm/Makefile
+++ b/arch/m32r/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux M32R-specific parts of the memory manager.
#
diff --git a/arch/m32r/mm/cache.c b/arch/m32r/mm/cache.c
index fac759584875..0d1ae744e56f 100644
--- a/arch/m32r/mm/cache.c
+++ b/arch/m32r/mm/cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/mm/cache.c
*
diff --git a/arch/m32r/mm/discontig.c b/arch/m32r/mm/discontig.c
index 27196303ce36..eb8e7966dcaf 100644
--- a/arch/m32r/mm/discontig.c
+++ b/arch/m32r/mm/discontig.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/mm/discontig.c
*
diff --git a/arch/m32r/mm/extable.c b/arch/m32r/mm/extable.c
index 8ac8ba6ef60c..066982756a4e 100644
--- a/arch/m32r/mm/extable.c
+++ b/arch/m32r/mm/extable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/mm/extable.c
*/
diff --git a/arch/m32r/mm/fault-nommu.c b/arch/m32r/mm/fault-nommu.c
index e22d5ddae5cb..240e00067d5e 100644
--- a/arch/m32r/mm/fault-nommu.c
+++ b/arch/m32r/mm/fault-nommu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/mm/fault.c
*
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
index a05dc3184594..46d9a5ca0e3a 100644
--- a/arch/m32r/mm/fault.c
+++ b/arch/m32r/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/mm/fault.c
*
diff --git a/arch/m32r/mm/init.c b/arch/m32r/mm/init.c
index 11fa717d93b1..93abc8c3a46e 100644
--- a/arch/m32r/mm/init.c
+++ b/arch/m32r/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/mm/init.c
*
diff --git a/arch/m32r/mm/mmu.S b/arch/m32r/mm/mmu.S
index e9491a5ae827..fd8f9c9b7b07 100644
--- a/arch/m32r/mm/mmu.S
+++ b/arch/m32r/mm/mmu.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/m32r/mm/mmu.S
*
diff --git a/arch/m32r/oprofile/Makefile b/arch/m32r/oprofile/Makefile
index 06e7c81ead2e..8e63a3a5a64c 100644
--- a/arch/m32r/oprofile/Makefile
+++ b/arch/m32r/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
DRIVER_OBJS := $(addprefix ../../../drivers/oprofile/, \
diff --git a/arch/m32r/platforms/Makefile b/arch/m32r/platforms/Makefile
index da03e1a8fe91..9e1a82529ad9 100644
--- a/arch/m32r/platforms/Makefile
+++ b/arch/m32r/platforms/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# arch/m32r/platforms/Makefile
obj-$(CONFIG_PLAT_M32104UT) += m32104ut/
obj-$(CONFIG_PLAT_M32700UT) += m32700ut/
diff --git a/arch/m32r/platforms/m32104ut/io.c b/arch/m32r/platforms/m32104ut/io.c
index e5d8be6fbb2d..ff2bb3b58bb5 100644
--- a/arch/m32r/platforms/m32104ut/io.c
+++ b/arch/m32r/platforms/m32104ut/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/m32104ut/io.c
*
diff --git a/arch/m32r/platforms/m32104ut/setup.c b/arch/m32r/platforms/m32104ut/setup.c
index e2dd778aeac7..297936003b1f 100644
--- a/arch/m32r/platforms/m32104ut/setup.c
+++ b/arch/m32r/platforms/m32104ut/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/m32104ut/setup.c
*
diff --git a/arch/m32r/platforms/mappi/io.c b/arch/m32r/platforms/mappi/io.c
index ac1c396d477d..06ea6d9bc576 100644
--- a/arch/m32r/platforms/mappi/io.c
+++ b/arch/m32r/platforms/mappi/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/mappi/io.c
*
diff --git a/arch/m32r/platforms/mappi/setup.c b/arch/m32r/platforms/mappi/setup.c
index 767d2f4d6ded..c8d642ec4bfb 100644
--- a/arch/m32r/platforms/mappi/setup.c
+++ b/arch/m32r/platforms/mappi/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/mappi/setup.c
*
diff --git a/arch/m32r/platforms/mappi2/io.c b/arch/m32r/platforms/mappi2/io.c
index da58960b3f8a..18a408ff3fd1 100644
--- a/arch/m32r/platforms/mappi2/io.c
+++ b/arch/m32r/platforms/mappi2/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/mappi2/io.c
*
diff --git a/arch/m32r/platforms/mappi2/setup.c b/arch/m32r/platforms/mappi2/setup.c
index 76d665abf51e..7253258a7880 100644
--- a/arch/m32r/platforms/mappi2/setup.c
+++ b/arch/m32r/platforms/mappi2/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/mappi2/setup.c
*
diff --git a/arch/m32r/platforms/mappi3/io.c b/arch/m32r/platforms/mappi3/io.c
index 1bc3f90fdc53..e7edcab72a6b 100644
--- a/arch/m32r/platforms/mappi3/io.c
+++ b/arch/m32r/platforms/mappi3/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/mappi3/io.c
*
diff --git a/arch/m32r/platforms/mappi3/setup.c b/arch/m32r/platforms/mappi3/setup.c
index a3646d4b05bd..87d2000081f7 100644
--- a/arch/m32r/platforms/mappi3/setup.c
+++ b/arch/m32r/platforms/mappi3/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/mappi3/setup.c
*
diff --git a/arch/m32r/platforms/oaks32r/io.c b/arch/m32r/platforms/oaks32r/io.c
index 364a3b2e8907..3ce1f3ac0d16 100644
--- a/arch/m32r/platforms/oaks32r/io.c
+++ b/arch/m32r/platforms/oaks32r/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/oaks32r/io.c
*
diff --git a/arch/m32r/platforms/oaks32r/setup.c b/arch/m32r/platforms/oaks32r/setup.c
index f8373c069524..8188c0baa064 100644
--- a/arch/m32r/platforms/oaks32r/setup.c
+++ b/arch/m32r/platforms/oaks32r/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/oaks32r/setup.c
*
diff --git a/arch/m32r/platforms/usrv/setup.c b/arch/m32r/platforms/usrv/setup.c
index dcde0ec777f6..ba828b16c6e3 100644
--- a/arch/m32r/platforms/usrv/setup.c
+++ b/arch/m32r/platforms/usrv/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m32r/platforms/usrv/setup.c
*
diff --git a/arch/m68k/68000/Makefile b/arch/m68k/68000/Makefile
index 1eab70c7194b..4f7d4b45a46f 100644
--- a/arch/m68k/68000/Makefile
+++ b/arch/m68k/68000/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
##################################################
#
# Makefile for 68000 core based cpus
diff --git a/arch/m68k/68000/bootlogo-vz.h b/arch/m68k/68000/bootlogo-vz.h
index 6ff09beba1ba..1afa33955368 100644
--- a/arch/m68k/68000/bootlogo-vz.h
+++ b/arch/m68k/68000/bootlogo-vz.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/compiler.h>
#define splash_width 640
diff --git a/arch/m68k/68000/bootlogo.h b/arch/m68k/68000/bootlogo.h
index c466db3ca3a8..b4d7e6c26cad 100644
--- a/arch/m68k/68000/bootlogo.h
+++ b/arch/m68k/68000/bootlogo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/compiler.h>
#define bootlogo_width 160
diff --git a/arch/m68k/68000/head.S b/arch/m68k/68000/head.S
index 536ef9616dad..140220662e33 100644
--- a/arch/m68k/68000/head.S
+++ b/arch/m68k/68000/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* head.S - Common startup code for 68000 core based CPU's
*
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index 353d90487c2b..785612b576f7 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config M68K
bool
default y
diff --git a/arch/m68k/Kconfig.bus b/arch/m68k/Kconfig.bus
index 675b087198f6..d5e66ec136db 100644
--- a/arch/m68k/Kconfig.bus
+++ b/arch/m68k/Kconfig.bus
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if MMU
comment "Bus Support"
diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu
index d2219f30b78f..ff5f0896318b 100644
--- a/arch/m68k/Kconfig.cpu
+++ b/arch/m68k/Kconfig.cpu
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
comment "Processor Type"
choice
diff --git a/arch/m68k/Kconfig.debug b/arch/m68k/Kconfig.debug
index 50a67d08aec4..04690b179a6e 100644
--- a/arch/m68k/Kconfig.debug
+++ b/arch/m68k/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/m68k/Kconfig.devices b/arch/m68k/Kconfig.devices
index 42b6fcfc30ef..3e9b0b826f8a 100644
--- a/arch/m68k/Kconfig.devices
+++ b/arch/m68k/Kconfig.devices
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if MMU
config ARCH_MAY_HAVE_PC_FDC
diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine
index 9225b4ad9aeb..5cd57b4d3615 100644
--- a/arch/m68k/Kconfig.machine
+++ b/arch/m68k/Kconfig.machine
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
comment "Machine Types"
if M68KCLASSIC
diff --git a/arch/m68k/amiga/chipram.c b/arch/m68k/amiga/chipram.c
index ba03cec3f711..a537953bc10c 100644
--- a/arch/m68k/amiga/chipram.c
+++ b/arch/m68k/amiga/chipram.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
** linux/amiga/chipram.c
**
diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c
index 432bc8bacfc2..0d27706f14d4 100644
--- a/arch/m68k/apollo/config.c
+++ b/arch/m68k/apollo/config.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/types.h>
#include <linux/kernel.h>
diff --git a/arch/m68k/apollo/dn_ints.c b/arch/m68k/apollo/dn_ints.c
index 17be1e7e2df2..02cff7efc834 100644
--- a/arch/m68k/apollo/dn_ints.c
+++ b/arch/m68k/apollo/dn_ints.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/interrupt.h>
#include <linux/irq.h>
diff --git a/arch/m68k/bvme6000/rtc.c b/arch/m68k/bvme6000/rtc.c
index e4f1faffe32b..b43eeef0982c 100644
--- a/arch/m68k/bvme6000/rtc.c
+++ b/arch/m68k/bvme6000/rtc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Real Time Clock interface for Linux on the BVME6000
*
diff --git a/arch/m68k/coldfire/Makefile b/arch/m68k/coldfire/Makefile
index 4aa2c57afc35..f8cef9681416 100644
--- a/arch/m68k/coldfire/Makefile
+++ b/arch/m68k/coldfire/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the m68knommu kernel.
#
diff --git a/arch/m68k/coldfire/cache.c b/arch/m68k/coldfire/cache.c
index 71beeaf0c5c4..98ee89b87439 100644
--- a/arch/m68k/coldfire/cache.c
+++ b/arch/m68k/coldfire/cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/clk.c b/arch/m68k/coldfire/clk.c
index 856069a3196d..849cd208e2ed 100644
--- a/arch/m68k/coldfire/clk.c
+++ b/arch/m68k/coldfire/clk.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/dma.c b/arch/m68k/coldfire/dma.c
index df5ce20d181c..c3279f7467d7 100644
--- a/arch/m68k/coldfire/dma.c
+++ b/arch/m68k/coldfire/dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/dma_timer.c b/arch/m68k/coldfire/dma_timer.c
index 8273eea57874..cbb289439606 100644
--- a/arch/m68k/coldfire/dma_timer.c
+++ b/arch/m68k/coldfire/dma_timer.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dma_timer.c -- Freescale ColdFire DMA Timer.
*
diff --git a/arch/m68k/coldfire/firebee.c b/arch/m68k/coldfire/firebee.c
index 46d50534f981..3b9d4fc6f12e 100644
--- a/arch/m68k/coldfire/firebee.c
+++ b/arch/m68k/coldfire/firebee.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/head.S b/arch/m68k/coldfire/head.S
index bdb472c48401..c6d7fd28c602 100644
--- a/arch/m68k/coldfire/head.S
+++ b/arch/m68k/coldfire/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*****************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m5206.c b/arch/m68k/coldfire/m5206.c
index a3bcf0883f98..2f14ea95c391 100644
--- a/arch/m68k/coldfire/m5206.c
+++ b/arch/m68k/coldfire/m5206.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m520x.c b/arch/m68k/coldfire/m520x.c
index 5ba69217ce6c..b5b2a267dada 100644
--- a/arch/m68k/coldfire/m520x.c
+++ b/arch/m68k/coldfire/m520x.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m523x.c b/arch/m68k/coldfire/m523x.c
index f7a0fcc5618c..ddf2496ed117 100644
--- a/arch/m68k/coldfire/m523x.c
+++ b/arch/m68k/coldfire/m523x.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m5249.c b/arch/m68k/coldfire/m5249.c
index b16cf9b4580c..0590f8c421f1 100644
--- a/arch/m68k/coldfire/m5249.c
+++ b/arch/m68k/coldfire/m5249.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m525x.c b/arch/m68k/coldfire/m525x.c
index 110e2cd34e62..1772359c416c 100644
--- a/arch/m68k/coldfire/m525x.c
+++ b/arch/m68k/coldfire/m525x.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m5272.c b/arch/m68k/coldfire/m5272.c
index 9abb1a441da0..ad1185c68df7 100644
--- a/arch/m68k/coldfire/m5272.c
+++ b/arch/m68k/coldfire/m5272.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m527x.c b/arch/m68k/coldfire/m527x.c
index b10b436b5a31..cad462df6861 100644
--- a/arch/m68k/coldfire/m527x.c
+++ b/arch/m68k/coldfire/m527x.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m528x.c b/arch/m68k/coldfire/m528x.c
index ea76998d5ab9..7ad3193887e8 100644
--- a/arch/m68k/coldfire/m528x.c
+++ b/arch/m68k/coldfire/m528x.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m5307.c b/arch/m68k/coldfire/m5307.c
index cc5e8a50a423..64b4b1fd34ff 100644
--- a/arch/m68k/coldfire/m5307.c
+++ b/arch/m68k/coldfire/m5307.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m5407.c b/arch/m68k/coldfire/m5407.c
index 38863ddbeab0..0400d76115a1 100644
--- a/arch/m68k/coldfire/m5407.c
+++ b/arch/m68k/coldfire/m5407.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/m5441x.c b/arch/m68k/coldfire/m5441x.c
index 04fd7fde9fb3..315d14b0dca0 100644
--- a/arch/m68k/coldfire/m5441x.c
+++ b/arch/m68k/coldfire/m5441x.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* m5441x.c -- support for Coldfire m5441x processors
*
diff --git a/arch/m68k/coldfire/m54xx.c b/arch/m68k/coldfire/m54xx.c
index c552851ec617..e53ffed13ba8 100644
--- a/arch/m68k/coldfire/m54xx.c
+++ b/arch/m68k/coldfire/m54xx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/nettel.c b/arch/m68k/coldfire/nettel.c
index ddc48ec1b800..ea8df6e7a6cc 100644
--- a/arch/m68k/coldfire/nettel.c
+++ b/arch/m68k/coldfire/nettel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/pit.c b/arch/m68k/coldfire/pit.c
index 6c0878018b44..eb6f16b0e2e6 100644
--- a/arch/m68k/coldfire/pit.c
+++ b/arch/m68k/coldfire/pit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/sltimers.c b/arch/m68k/coldfire/sltimers.c
index 3292c0d68b18..1b11e7bacab3 100644
--- a/arch/m68k/coldfire/sltimers.c
+++ b/arch/m68k/coldfire/sltimers.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/timers.c b/arch/m68k/coldfire/timers.c
index 2dc7a58204f6..227aa5d13709 100644
--- a/arch/m68k/coldfire/timers.c
+++ b/arch/m68k/coldfire/timers.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/coldfire/vectors.c b/arch/m68k/coldfire/vectors.c
index 08923fe600e0..3bf0d69eec9e 100644
--- a/arch/m68k/coldfire/vectors.c
+++ b/arch/m68k/coldfire/vectors.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
diff --git a/arch/m68k/fpsp040/Makefile b/arch/m68k/fpsp040/Makefile
index 9506d883ace5..aab04d372ae7 100644
--- a/arch/m68k/fpsp040/Makefile
+++ b/arch/m68k/fpsp040/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Linux arch/m68k/fpsp040 source directory
#
diff --git a/arch/m68k/hp300/config.c b/arch/m68k/hp300/config.c
index 7cfab158fb61..a19bcd23f80b 100644
--- a/arch/m68k/hp300/config.c
+++ b/arch/m68k/hp300/config.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/hp300/config.c
*
diff --git a/arch/m68k/hp300/time.c b/arch/m68k/hp300/time.c
index 749543b425a4..289d928a46cb 100644
--- a/arch/m68k/hp300/time.c
+++ b/arch/m68k/hp300/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/hp300/time.c
*
diff --git a/arch/m68k/include/asm/MC68328.h b/arch/m68k/include/asm/MC68328.h
index b61230e74e63..6e14e92260fd 100644
--- a/arch/m68k/include/asm/MC68328.h
+++ b/arch/m68k/include/asm/MC68328.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* include/asm-m68knommu/MC68328.h: '328 control registers
*
diff --git a/arch/m68k/include/asm/MC68EZ328.h b/arch/m68k/include/asm/MC68EZ328.h
index 703331ece328..c50b9f6a8f66 100644
--- a/arch/m68k/include/asm/MC68EZ328.h
+++ b/arch/m68k/include/asm/MC68EZ328.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* include/asm-m68knommu/MC68EZ328.h: 'EZ328 control registers
*
diff --git a/arch/m68k/include/asm/MC68VZ328.h b/arch/m68k/include/asm/MC68VZ328.h
index fbaed7ddfb41..dc894cfcff68 100644
--- a/arch/m68k/include/asm/MC68VZ328.h
+++ b/arch/m68k/include/asm/MC68VZ328.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* include/asm-m68knommu/MC68VZ328.h: 'VZ328 control registers
*
diff --git a/arch/m68k/include/asm/adb_iop.h b/arch/m68k/include/asm/adb_iop.h
index 8a48e56f2d62..195d7fb1268c 100644
--- a/arch/m68k/include/asm/adb_iop.h
+++ b/arch/m68k/include/asm/adb_iop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ADB through the IOP
* Written by Joshua M. Thompson
diff --git a/arch/m68k/include/asm/apollohw.h b/arch/m68k/include/asm/apollohw.h
index 87fc899d32ee..52066f3b8658 100644
--- a/arch/m68k/include/asm/apollohw.h
+++ b/arch/m68k/include/asm/apollohw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* apollohw.h : some structures to access apollo HW */
#ifndef _ASMm68k_APOLLOHW_H_
diff --git a/arch/m68k/include/asm/atafd.h b/arch/m68k/include/asm/atafd.h
index 8456889ee7da..ad7014cad633 100644
--- a/arch/m68k/include/asm/atafd.h
+++ b/arch/m68k/include/asm/atafd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_FD_H
#define _ASM_M68K_FD_H
diff --git a/arch/m68k/include/asm/atafdreg.h b/arch/m68k/include/asm/atafdreg.h
index bbf80949fd9f..c31b4919ed2d 100644
--- a/arch/m68k/include/asm/atafdreg.h
+++ b/arch/m68k/include/asm/atafdreg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FDREG_H
#define _LINUX_FDREG_H
diff --git a/arch/m68k/include/asm/atari_joystick.h b/arch/m68k/include/asm/atari_joystick.h
index 93be7da9f2c7..c4a6a06e68c8 100644
--- a/arch/m68k/include/asm/atari_joystick.h
+++ b/arch/m68k/include/asm/atari_joystick.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ATARI_JOYSTICK_H
#define _LINUX_ATARI_JOYSTICK_H
diff --git a/arch/m68k/include/asm/atari_stdma.h b/arch/m68k/include/asm/atari_stdma.h
index d24e34d870dc..70de9b12470a 100644
--- a/arch/m68k/include/asm/atari_stdma.h
+++ b/arch/m68k/include/asm/atari_stdma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _atari_stdma_h
#define _atari_stdma_h
diff --git a/arch/m68k/include/asm/atari_stram.h b/arch/m68k/include/asm/atari_stram.h
index 4e771c22d6a9..1fc19102aac9 100644
--- a/arch/m68k/include/asm/atari_stram.h
+++ b/arch/m68k/include/asm/atari_stram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_ATARI_STRAM_H
#define _M68K_ATARI_STRAM_H
diff --git a/arch/m68k/include/asm/atomic.h b/arch/m68k/include/asm/atomic.h
index cf4c3a7b1a45..e993e2860ee1 100644
--- a/arch/m68k/include/asm/atomic.h
+++ b/arch/m68k/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_M68K_ATOMIC__
#define __ARCH_M68K_ATOMIC__
diff --git a/arch/m68k/include/asm/bootstd.h b/arch/m68k/include/asm/bootstd.h
index e518f5a575b7..1dab93ddb090 100644
--- a/arch/m68k/include/asm/bootstd.h
+++ b/arch/m68k/include/asm/bootstd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* bootstd.h: Bootloader system call interface
*
* (c) 1999, Rt-Control, Inc.
diff --git a/arch/m68k/include/asm/bug.h b/arch/m68k/include/asm/bug.h
index 5bc8d91d68d4..b7e2bf1ba4a6 100644
--- a/arch/m68k/include/asm/bug.h
+++ b/arch/m68k/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_BUG_H
#define _M68K_BUG_H
diff --git a/arch/m68k/include/asm/bugs.h b/arch/m68k/include/asm/bugs.h
index d06207b9ba5a..745530651e0b 100644
--- a/arch/m68k/include/asm/bugs.h
+++ b/arch/m68k/include/asm/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-m68k/bugs.h
*
diff --git a/arch/m68k/include/asm/bvme6000hw.h b/arch/m68k/include/asm/bvme6000hw.h
index f40d2f8510ee..7b1309bb2c07 100644
--- a/arch/m68k/include/asm/bvme6000hw.h
+++ b/arch/m68k/include/asm/bvme6000hw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_BVME6000HW_H_
#define _M68K_BVME6000HW_H_
diff --git a/arch/m68k/include/asm/cache.h b/arch/m68k/include/asm/cache.h
index 0395c51e46a6..9c06458f3bc9 100644
--- a/arch/m68k/include/asm/cache.h
+++ b/arch/m68k/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-m68k/cache.h
*/
diff --git a/arch/m68k/include/asm/cacheflush.h b/arch/m68k/include/asm/cacheflush.h
index 4fc738209bd1..29b8e638b912 100644
--- a/arch/m68k/include/asm/cacheflush.h
+++ b/arch/m68k/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __uClinux__
#include <asm/cacheflush_no.h>
#else
diff --git a/arch/m68k/include/asm/cacheflush_mm.h b/arch/m68k/include/asm/cacheflush_mm.h
index fa2c3d681d84..1e2544ecaf88 100644
--- a/arch/m68k/include/asm/cacheflush_mm.h
+++ b/arch/m68k/include/asm/cacheflush_mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_CACHEFLUSH_H
#define _M68K_CACHEFLUSH_H
diff --git a/arch/m68k/include/asm/cacheflush_no.h b/arch/m68k/include/asm/cacheflush_no.h
index d2b3935ae147..11e9a9dcbfb2 100644
--- a/arch/m68k/include/asm/cacheflush_no.h
+++ b/arch/m68k/include/asm/cacheflush_no.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68KNOMMU_CACHEFLUSH_H
#define _M68KNOMMU_CACHEFLUSH_H
diff --git a/arch/m68k/include/asm/checksum.h b/arch/m68k/include/asm/checksum.h
index 75e91f03b178..f9b94e4b94f9 100644
--- a/arch/m68k/include/asm/checksum.h
+++ b/arch/m68k/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_CHECKSUM_H
#define _M68K_CHECKSUM_H
diff --git a/arch/m68k/include/asm/cmpxchg.h b/arch/m68k/include/asm/cmpxchg.h
index 83b1df80f0ac..38e1d7acc44d 100644
--- a/arch/m68k/include/asm/cmpxchg.h
+++ b/arch/m68k/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_M68K_CMPXCHG__
#define __ARCH_M68K_CMPXCHG__
diff --git a/arch/m68k/include/asm/coldfire.h b/arch/m68k/include/asm/coldfire.h
index 50aa4dac9ca2..d9cb26fb3e65 100644
--- a/arch/m68k/include/asm/coldfire.h
+++ b/arch/m68k/include/asm/coldfire.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/contregs.h b/arch/m68k/include/asm/contregs.h
index d1ea750bddfe..f82ca0ab38bc 100644
--- a/arch/m68k/include/asm/contregs.h
+++ b/arch/m68k/include/asm/contregs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_CONTREGS_H
#define _M68K_CONTREGS_H
diff --git a/arch/m68k/include/asm/current.h b/arch/m68k/include/asm/current.h
index 91fcc5358cfe..6390ef2f7f86 100644
--- a/arch/m68k/include/asm/current.h
+++ b/arch/m68k/include/asm/current.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_CURRENT_H
#define _M68K_CURRENT_H
diff --git a/arch/m68k/include/asm/delay.h b/arch/m68k/include/asm/delay.h
index c598d847d56b..7f474121e4ca 100644
--- a/arch/m68k/include/asm/delay.h
+++ b/arch/m68k/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_DELAY_H
#define _M68K_DELAY_H
diff --git a/arch/m68k/include/asm/div64.h b/arch/m68k/include/asm/div64.h
index ef881cfbbca9..365f39f5e256 100644
--- a/arch/m68k/include/asm/div64.h
+++ b/arch/m68k/include/asm/div64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_DIV64_H
#define _M68K_DIV64_H
diff --git a/arch/m68k/include/asm/dma-mapping.h b/arch/m68k/include/asm/dma-mapping.h
index 9210e470771b..3e1a3ffba291 100644
--- a/arch/m68k/include/asm/dma-mapping.h
+++ b/arch/m68k/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_DMA_MAPPING_H
#define _M68K_DMA_MAPPING_H
diff --git a/arch/m68k/include/asm/dma.h b/arch/m68k/include/asm/dma.h
index 208b4daa14b3..b0978a23bad1 100644
--- a/arch/m68k/include/asm/dma.h
+++ b/arch/m68k/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_DMA_H
#define _M68K_DMA_H 1
diff --git a/arch/m68k/include/asm/dvma.h b/arch/m68k/include/asm/dvma.h
index 890bbf7e7758..f609ec1de36d 100644
--- a/arch/m68k/include/asm/dvma.h
+++ b/arch/m68k/include/asm/dvma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-m68k/dma.h
*
diff --git a/arch/m68k/include/asm/elf.h b/arch/m68k/include/asm/elf.h
index b1c26de438be..3d387ceaea3f 100644
--- a/arch/m68k/include/asm/elf.h
+++ b/arch/m68k/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASMm68k_ELF_H
#define __ASMm68k_ELF_H
diff --git a/arch/m68k/include/asm/entry.h b/arch/m68k/include/asm/entry.h
index d7de0f1a8957..9b52b060c76a 100644
--- a/arch/m68k/include/asm/entry.h
+++ b/arch/m68k/include/asm/entry.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __M68K_ENTRY_H
#define __M68K_ENTRY_H
diff --git a/arch/m68k/include/asm/fb.h b/arch/m68k/include/asm/fb.h
index be4e4c6797e8..b86c6e2e26dd 100644
--- a/arch/m68k/include/asm/fb.h
+++ b/arch/m68k/include/asm/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FB_H_
#define _ASM_FB_H_
diff --git a/arch/m68k/include/asm/fbio.h b/arch/m68k/include/asm/fbio.h
index 0a21da87f7d6..590b923c470d 100644
--- a/arch/m68k/include/asm/fbio.h
+++ b/arch/m68k/include/asm/fbio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_FBIO_H
#define __LINUX_FBIO_H
diff --git a/arch/m68k/include/asm/flat.h b/arch/m68k/include/asm/flat.h
index b2a41f5b3890..4f1d1e373420 100644
--- a/arch/m68k/include/asm/flat.h
+++ b/arch/m68k/include/asm/flat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* flat.h -- uClinux flat-format executables
*/
diff --git a/arch/m68k/include/asm/fpu.h b/arch/m68k/include/asm/fpu.h
index 526db9da9e43..ab12be88d75f 100644
--- a/arch/m68k/include/asm/fpu.h
+++ b/arch/m68k/include/asm/fpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __M68K_FPU_H
#define __M68K_FPU_H
diff --git a/arch/m68k/include/asm/hardirq.h b/arch/m68k/include/asm/hardirq.h
index 6c618529d9b9..11793165445d 100644
--- a/arch/m68k/include/asm/hardirq.h
+++ b/arch/m68k/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __M68K_HARDIRQ_H
#define __M68K_HARDIRQ_H
diff --git a/arch/m68k/include/asm/hash.h b/arch/m68k/include/asm/hash.h
index 6407af84a994..6d0d0c893f16 100644
--- a/arch/m68k/include/asm/hash.h
+++ b/arch/m68k/include/asm/hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_HASH_H
#define _ASM_HASH_H
diff --git a/arch/m68k/include/asm/hp300hw.h b/arch/m68k/include/asm/hp300hw.h
index 64f5271dd7be..0909800beef4 100644
--- a/arch/m68k/include/asm/hp300hw.h
+++ b/arch/m68k/include/asm/hp300hw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_HP300HW_H
#define _M68K_HP300HW_H
diff --git a/arch/m68k/include/asm/hwtest.h b/arch/m68k/include/asm/hwtest.h
index 402c8a4401fe..f8d646205ba3 100644
--- a/arch/m68k/include/asm/hwtest.h
+++ b/arch/m68k/include/asm/hwtest.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Routines to test for presence/absence of hardware registers:
* see arch/m68k/mm/hwtest.c.
* -- PMM <pmaydell@chiark.greenend.org.uk> 05/1998
diff --git a/arch/m68k/include/asm/ide.h b/arch/m68k/include/asm/ide.h
index 492fee8a1ab2..05cc7dc00e0c 100644
--- a/arch/m68k/include/asm/ide.h
+++ b/arch/m68k/include/asm/ide.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1994-1996 Linus Torvalds & authors
*/
diff --git a/arch/m68k/include/asm/idprom.h b/arch/m68k/include/asm/idprom.h
index 160616a89e05..13b099d011b5 100644
--- a/arch/m68k/include/asm/idprom.h
+++ b/arch/m68k/include/asm/idprom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_IDPROM_H
#define _M68K_IDPROM_H
/*
diff --git a/arch/m68k/include/asm/intersil.h b/arch/m68k/include/asm/intersil.h
index f482902cac8a..b696348f9ab8 100644
--- a/arch/m68k/include/asm/intersil.h
+++ b/arch/m68k/include/asm/intersil.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SUN3_INTERSIL_H
#define _SUN3_INTERSIL_H
/* bits 0 and 1 */
diff --git a/arch/m68k/include/asm/io.h b/arch/m68k/include/asm/io.h
index bccd5a914eb6..756089cc019c 100644
--- a/arch/m68k/include/asm/io.h
+++ b/arch/m68k/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __uClinux__
#include <asm/io_no.h>
#else
diff --git a/arch/m68k/include/asm/io_mm.h b/arch/m68k/include/asm/io_mm.h
index c98ac81582ac..ed5333e87879 100644
--- a/arch/m68k/include/asm/io_mm.h
+++ b/arch/m68k/include/asm/io_mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-m68k/io.h
*
diff --git a/arch/m68k/include/asm/io_no.h b/arch/m68k/include/asm/io_no.h
index ad7bd40e6742..86f45b403bcc 100644
--- a/arch/m68k/include/asm/io_no.h
+++ b/arch/m68k/include/asm/io_no.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68KNOMMU_IO_H
#define _M68KNOMMU_IO_H
diff --git a/arch/m68k/include/asm/irq.h b/arch/m68k/include/asm/irq.h
index a644f4a53b94..91dd493791d7 100644
--- a/arch/m68k/include/asm/irq.h
+++ b/arch/m68k/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_IRQ_H_
#define _M68K_IRQ_H_
diff --git a/arch/m68k/include/asm/irqflags.h b/arch/m68k/include/asm/irqflags.h
index b5941818346f..3799a2481095 100644
--- a/arch/m68k/include/asm/irqflags.h
+++ b/arch/m68k/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_IRQFLAGS_H
#define _M68K_IRQFLAGS_H
diff --git a/arch/m68k/include/asm/kexec.h b/arch/m68k/include/asm/kexec.h
index 3df97abac147..f5a8b2defa4b 100644
--- a/arch/m68k/include/asm/kexec.h
+++ b/arch/m68k/include/asm/kexec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_KEXEC_H
#define _ASM_M68K_KEXEC_H
diff --git a/arch/m68k/include/asm/linkage.h b/arch/m68k/include/asm/linkage.h
index 066e74f666ae..c8b84282764c 100644
--- a/arch/m68k/include/asm/linkage.h
+++ b/arch/m68k/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
diff --git a/arch/m68k/include/asm/m5206sim.h b/arch/m68k/include/asm/m5206sim.h
index 0ddf3efbcae9..ceb42670aee5 100644
--- a/arch/m68k/include/asm/m5206sim.h
+++ b/arch/m68k/include/asm/m5206sim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m520xsim.h b/arch/m68k/include/asm/m520xsim.h
index 6d50cefa76c3..8b3da5624a73 100644
--- a/arch/m68k/include/asm/m520xsim.h
+++ b/arch/m68k/include/asm/m520xsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m523xsim.h b/arch/m68k/include/asm/m523xsim.h
index d43f6ab1edc9..a3082411abee 100644
--- a/arch/m68k/include/asm/m523xsim.h
+++ b/arch/m68k/include/asm/m523xsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m525xsim.h b/arch/m68k/include/asm/m525xsim.h
index 699f20c8a0fe..de01b701d95f 100644
--- a/arch/m68k/include/asm/m525xsim.h
+++ b/arch/m68k/include/asm/m525xsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m5272sim.h b/arch/m68k/include/asm/m5272sim.h
index 1fb01bb05d6c..135dd50f0f8f 100644
--- a/arch/m68k/include/asm/m5272sim.h
+++ b/arch/m68k/include/asm/m5272sim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m527xsim.h b/arch/m68k/include/asm/m527xsim.h
index 35f6fbc89b92..d92814bf9915 100644
--- a/arch/m68k/include/asm/m527xsim.h
+++ b/arch/m68k/include/asm/m527xsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m528xsim.h b/arch/m68k/include/asm/m528xsim.h
index 67f6182d10a4..7b60a57e9b70 100644
--- a/arch/m68k/include/asm/m528xsim.h
+++ b/arch/m68k/include/asm/m528xsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m52xxacr.h b/arch/m68k/include/asm/m52xxacr.h
index abc391a9ae8d..2cb29ed5266c 100644
--- a/arch/m68k/include/asm/m52xxacr.h
+++ b/arch/m68k/include/asm/m52xxacr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m5307sim.h b/arch/m68k/include/asm/m5307sim.h
index d2595e04eb1d..25059f20524b 100644
--- a/arch/m68k/include/asm/m5307sim.h
+++ b/arch/m68k/include/asm/m5307sim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m53xxacr.h b/arch/m68k/include/asm/m53xxacr.h
index 3177ce8331d6..9138a624c5c8 100644
--- a/arch/m68k/include/asm/m53xxacr.h
+++ b/arch/m68k/include/asm/m53xxacr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m53xxsim.h b/arch/m68k/include/asm/m53xxsim.h
index 53329ae4d3e3..22c1c92b9811 100644
--- a/arch/m68k/include/asm/m53xxsim.h
+++ b/arch/m68k/include/asm/m53xxsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m5407sim.h b/arch/m68k/include/asm/m5407sim.h
index ab40c16ba989..0c2720d8ede9 100644
--- a/arch/m68k/include/asm/m5407sim.h
+++ b/arch/m68k/include/asm/m5407sim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/m5441xsim.h b/arch/m68k/include/asm/m5441xsim.h
index 64f60be47066..4e9095b9480a 100644
--- a/arch/m68k/include/asm/m5441xsim.h
+++ b/arch/m68k/include/asm/m5441xsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* m5441xsim.h -- Coldfire 5441x register definitions
*
diff --git a/arch/m68k/include/asm/m54xxacr.h b/arch/m68k/include/asm/m54xxacr.h
index c6ac05cda282..466df7b03c6b 100644
--- a/arch/m68k/include/asm/m54xxacr.h
+++ b/arch/m68k/include/asm/m54xxacr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Bit definitions for the MCF54xx ACR and CACR registers.
*/
diff --git a/arch/m68k/include/asm/m54xxgpt.h b/arch/m68k/include/asm/m54xxgpt.h
index 0b69cd1ed0ed..b1f912157be9 100644
--- a/arch/m68k/include/asm/m54xxgpt.h
+++ b/arch/m68k/include/asm/m54xxgpt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File: m54xxgpt.h
* Purpose: Register and bit definitions for the MCF54XX
diff --git a/arch/m68k/include/asm/m54xxsim.h b/arch/m68k/include/asm/m54xxsim.h
index 7758d0a1a84d..2a3305f6fac6 100644
--- a/arch/m68k/include/asm/m54xxsim.h
+++ b/arch/m68k/include/asm/m54xxsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* m54xxsim.h -- ColdFire 547x/548x System Integration Unit support.
*/
diff --git a/arch/m68k/include/asm/mac_asc.h b/arch/m68k/include/asm/mac_asc.h
index fc2e5467b41e..075990251345 100644
--- a/arch/m68k/include/asm/mac_asc.h
+++ b/arch/m68k/include/asm/mac_asc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Apple Sound Chip
*/
diff --git a/arch/m68k/include/asm/mac_baboon.h b/arch/m68k/include/asm/mac_baboon.h
index a2d32f6589f9..08d9b8829a1a 100644
--- a/arch/m68k/include/asm/mac_baboon.h
+++ b/arch/m68k/include/asm/mac_baboon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for the "Baboon" custom IC on the PowerBook 190.
*/
diff --git a/arch/m68k/include/asm/mac_iop.h b/arch/m68k/include/asm/mac_iop.h
index 42566fd052bc..73dae2abeba3 100644
--- a/arch/m68k/include/asm/mac_iop.h
+++ b/arch/m68k/include/asm/mac_iop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* I/O Processor (IOP) defines and structures, mostly snagged from A/UX
* header files.
diff --git a/arch/m68k/include/asm/mac_oss.h b/arch/m68k/include/asm/mac_oss.h
index 425fbff4f4d8..56ef986c0a9b 100644
--- a/arch/m68k/include/asm/mac_oss.h
+++ b/arch/m68k/include/asm/mac_oss.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* OSS
*
diff --git a/arch/m68k/include/asm/mac_psc.h b/arch/m68k/include/asm/mac_psc.h
index 923305117a69..86a5a5eab89e 100644
--- a/arch/m68k/include/asm/mac_psc.h
+++ b/arch/m68k/include/asm/mac_psc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Apple Peripheral System Controller (PSC)
*
diff --git a/arch/m68k/include/asm/mac_via.h b/arch/m68k/include/asm/mac_via.h
index 53c632c85b03..de1470c4d829 100644
--- a/arch/m68k/include/asm/mac_via.h
+++ b/arch/m68k/include/asm/mac_via.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* 6522 Versatile Interface Adapter (VIA)
*
diff --git a/arch/m68k/include/asm/machdep.h b/arch/m68k/include/asm/machdep.h
index 953ca21da8ee..1605da48ebf2 100644
--- a/arch/m68k/include/asm/machdep.h
+++ b/arch/m68k/include/asm/machdep.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_MACHDEP_H
#define _M68K_MACHDEP_H
diff --git a/arch/m68k/include/asm/machines.h b/arch/m68k/include/asm/machines.h
index be667e84f01b..1332bad001fa 100644
--- a/arch/m68k/include/asm/machines.h
+++ b/arch/m68k/include/asm/machines.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* machines.h: Defines for taking apart the machine type value in the
* idprom and determining the kind of machine we are on.
diff --git a/arch/m68k/include/asm/macintosh.h b/arch/m68k/include/asm/macintosh.h
index 5b81ab188aa5..f42c27400dbc 100644
--- a/arch/m68k/include/asm/macintosh.h
+++ b/arch/m68k/include/asm/macintosh.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACINTOSH_H
#define __ASM_MACINTOSH_H
diff --git a/arch/m68k/include/asm/math-emu.h b/arch/m68k/include/asm/math-emu.h
index b062696d5a0d..eefaa3a2b596 100644
--- a/arch/m68k/include/asm/math-emu.h
+++ b/arch/m68k/include/asm/math-emu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_SETUP_H
#define _ASM_M68K_SETUP_H
diff --git a/arch/m68k/include/asm/mc146818rtc.h b/arch/m68k/include/asm/mc146818rtc.h
index 05b43bf5cdf3..6e9f319ce478 100644
--- a/arch/m68k/include/asm/mc146818rtc.h
+++ b/arch/m68k/include/asm/mc146818rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine dependent access functions for RTC registers.
*/
diff --git a/arch/m68k/include/asm/mcf8390.h b/arch/m68k/include/asm/mcf8390.h
index a72a20819a54..412360ef1dc1 100644
--- a/arch/m68k/include/asm/mcf8390.h
+++ b/arch/m68k/include/asm/mcf8390.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/mcf_pgalloc.h b/arch/m68k/include/asm/mcf_pgalloc.h
index fb95aed5f428..8b707c249026 100644
--- a/arch/m68k/include/asm/mcf_pgalloc.h
+++ b/arch/m68k/include/asm/mcf_pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef M68K_MCF_PGALLOC_H
#define M68K_MCF_PGALLOC_H
diff --git a/arch/m68k/include/asm/mcf_pgtable.h b/arch/m68k/include/asm/mcf_pgtable.h
index 2500ce04fcc4..5d5502cb2b2d 100644
--- a/arch/m68k/include/asm/mcf_pgtable.h
+++ b/arch/m68k/include/asm/mcf_pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MCF_PGTABLE_H
#define _MCF_PGTABLE_H
diff --git a/arch/m68k/include/asm/mcfclk.h b/arch/m68k/include/asm/mcfclk.h
index ea4791e3a557..0aca504fae31 100644
--- a/arch/m68k/include/asm/mcfclk.h
+++ b/arch/m68k/include/asm/mcfclk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* mcfclk.h -- coldfire specific clock structure
*/
diff --git a/arch/m68k/include/asm/mcfdma.h b/arch/m68k/include/asm/mcfdma.h
index 10bc7e391c14..6227317dd0f7 100644
--- a/arch/m68k/include/asm/mcfdma.h
+++ b/arch/m68k/include/asm/mcfdma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/mcfintc.h b/arch/m68k/include/asm/mcfintc.h
index 4183320a3813..8bcfa33efa0f 100644
--- a/arch/m68k/include/asm/mcfintc.h
+++ b/arch/m68k/include/asm/mcfintc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/mcfpit.h b/arch/m68k/include/asm/mcfpit.h
index 9fd321ca0725..20c81e07df1b 100644
--- a/arch/m68k/include/asm/mcfpit.h
+++ b/arch/m68k/include/asm/mcfpit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/mcfsim.h b/arch/m68k/include/asm/mcfsim.h
index bc867de8a1e9..bef089510e55 100644
--- a/arch/m68k/include/asm/mcfsim.h
+++ b/arch/m68k/include/asm/mcfsim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/mcfslt.h b/arch/m68k/include/asm/mcfslt.h
index c2314b6f8caa..a539f0eccfcb 100644
--- a/arch/m68k/include/asm/mcfslt.h
+++ b/arch/m68k/include/asm/mcfslt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/mcftimer.h b/arch/m68k/include/asm/mcftimer.h
index 1150e42c3f19..4fe83db6497d 100644
--- a/arch/m68k/include/asm/mcftimer.h
+++ b/arch/m68k/include/asm/mcftimer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/mcfuart.h b/arch/m68k/include/asm/mcfuart.h
index b40c20f66647..a1f35352f328 100644
--- a/arch/m68k/include/asm/mcfuart.h
+++ b/arch/m68k/include/asm/mcfuart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/mcfwdebug.h b/arch/m68k/include/asm/mcfwdebug.h
index 27f70e45d700..bbe06cf036d1 100644
--- a/arch/m68k/include/asm/mcfwdebug.h
+++ b/arch/m68k/include/asm/mcfwdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/mmu.h b/arch/m68k/include/asm/mmu.h
index 8a11a63ee15a..5c15aacb1370 100644
--- a/arch/m68k/include/asm/mmu.h
+++ b/arch/m68k/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MMU_H
#define __MMU_H
diff --git a/arch/m68k/include/asm/mmu_context.h b/arch/m68k/include/asm/mmu_context.h
index 4a6ae6dffa34..836acea8f758 100644
--- a/arch/m68k/include/asm/mmu_context.h
+++ b/arch/m68k/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __M68K_MMU_CONTEXT_H
#define __M68K_MMU_CONTEXT_H
diff --git a/arch/m68k/include/asm/mmzone.h b/arch/m68k/include/asm/mmzone.h
index e1f1ec7b7006..64573fe8e60d 100644
--- a/arch/m68k/include/asm/mmzone.h
+++ b/arch/m68k/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_MMZONE_H_
#define _ASM_M68K_MMZONE_H_
diff --git a/arch/m68k/include/asm/module.h b/arch/m68k/include/asm/module.h
index 8b58fce843dd..36cb06cc03e6 100644
--- a/arch/m68k/include/asm/module.h
+++ b/arch/m68k/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_MODULE_H
#define _ASM_M68K_MODULE_H
diff --git a/arch/m68k/include/asm/motorola_pgalloc.h b/arch/m68k/include/asm/motorola_pgalloc.h
index c895b987202c..7859a86319cf 100644
--- a/arch/m68k/include/asm/motorola_pgalloc.h
+++ b/arch/m68k/include/asm/motorola_pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MOTOROLA_PGALLOC_H
#define _MOTOROLA_PGALLOC_H
diff --git a/arch/m68k/include/asm/motorola_pgtable.h b/arch/m68k/include/asm/motorola_pgtable.h
index 0085aab80e5a..7f66a7bad7a5 100644
--- a/arch/m68k/include/asm/motorola_pgtable.h
+++ b/arch/m68k/include/asm/motorola_pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MOTOROLA_PGTABLE_H
#define _MOTOROLA_PGTABLE_H
diff --git a/arch/m68k/include/asm/movs.h b/arch/m68k/include/asm/movs.h
index 67dbea36960f..390d7b47b8eb 100644
--- a/arch/m68k/include/asm/movs.h
+++ b/arch/m68k/include/asm/movs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MOVS_H__
#define __MOVS_H__
diff --git a/arch/m68k/include/asm/mvme147hw.h b/arch/m68k/include/asm/mvme147hw.h
index b81043108472..9c7ff67c5ffd 100644
--- a/arch/m68k/include/asm/mvme147hw.h
+++ b/arch/m68k/include/asm/mvme147hw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MVME147HW_H_
#define _MVME147HW_H_
diff --git a/arch/m68k/include/asm/mvme16xhw.h b/arch/m68k/include/asm/mvme16xhw.h
index 1eb89de631e5..cc7f5ae1220f 100644
--- a/arch/m68k/include/asm/mvme16xhw.h
+++ b/arch/m68k/include/asm/mvme16xhw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_MVME16xHW_H_
#define _M68K_MVME16xHW_H_
diff --git a/arch/m68k/include/asm/nettel.h b/arch/m68k/include/asm/nettel.h
index 926375d538ec..45716ead7b9d 100644
--- a/arch/m68k/include/asm/nettel.h
+++ b/arch/m68k/include/asm/nettel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
diff --git a/arch/m68k/include/asm/nubus.h b/arch/m68k/include/asm/nubus.h
index d6be9976f1ae..d0d2039e434e 100644
--- a/arch/m68k/include/asm/nubus.h
+++ b/arch/m68k/include/asm/nubus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_NUBUS_H
#define _ASM_M68K_NUBUS_H
diff --git a/arch/m68k/include/asm/openprom.h b/arch/m68k/include/asm/openprom.h
index d33cdadf78e1..dd22e649f5c5 100644
--- a/arch/m68k/include/asm/openprom.h
+++ b/arch/m68k/include/asm/openprom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_OPENPROM_H
#define __SPARC_OPENPROM_H
diff --git a/arch/m68k/include/asm/oplib.h b/arch/m68k/include/asm/oplib.h
index f082d03336bd..48cb4fd09f8d 100644
--- a/arch/m68k/include/asm/oplib.h
+++ b/arch/m68k/include/asm/oplib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* oplib.h: Describes the interface and available routines in the
* Linux Prom library.
diff --git a/arch/m68k/include/asm/page.h b/arch/m68k/include/asm/page.h
index d8a02c7e72d3..700d8195880c 100644
--- a/arch/m68k/include/asm/page.h
+++ b/arch/m68k/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_PAGE_H
#define _M68K_PAGE_H
diff --git a/arch/m68k/include/asm/page_mm.h b/arch/m68k/include/asm/page_mm.h
index e7a1946455a8..e6b75992192b 100644
--- a/arch/m68k/include/asm/page_mm.h
+++ b/arch/m68k/include/asm/page_mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_PAGE_MM_H
#define _M68K_PAGE_MM_H
diff --git a/arch/m68k/include/asm/page_no.h b/arch/m68k/include/asm/page_no.h
index fa7f32d9836b..e644c4daf540 100644
--- a/arch/m68k/include/asm/page_no.h
+++ b/arch/m68k/include/asm/page_no.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_PAGE_NO_H
#define _M68K_PAGE_NO_H
diff --git a/arch/m68k/include/asm/page_offset.h b/arch/m68k/include/asm/page_offset.h
index 82626a8f1d0a..11dc3cb8c35b 100644
--- a/arch/m68k/include/asm/page_offset.h
+++ b/arch/m68k/include/asm/page_offset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* This handles the memory map.. */
#if defined(CONFIG_RAMBASE)
diff --git a/arch/m68k/include/asm/parport.h b/arch/m68k/include/asm/parport.h
index c85cece778e8..becfebd5c6b7 100644
--- a/arch/m68k/include/asm/parport.h
+++ b/arch/m68k/include/asm/parport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* parport.h: platform-specific PC-style parport initialisation
*
diff --git a/arch/m68k/include/asm/pci.h b/arch/m68k/include/asm/pci.h
index 3a3dbcf4051d..ef26fae8cf0b 100644
--- a/arch/m68k/include/asm/pci.h
+++ b/arch/m68k/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_PCI_H
#define _ASM_M68K_PCI_H
diff --git a/arch/m68k/include/asm/pgalloc.h b/arch/m68k/include/asm/pgalloc.h
index 37bee7e3223d..24ca46d2e090 100644
--- a/arch/m68k/include/asm/pgalloc.h
+++ b/arch/m68k/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef M68K_PGALLOC_H
#define M68K_PGALLOC_H
diff --git a/arch/m68k/include/asm/pgtable.h b/arch/m68k/include/asm/pgtable.h
index a3d733b524d2..ad15d655a9bf 100644
--- a/arch/m68k/include/asm/pgtable.h
+++ b/arch/m68k/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __uClinux__
#include <asm/pgtable_no.h>
#else
diff --git a/arch/m68k/include/asm/pgtable_mm.h b/arch/m68k/include/asm/pgtable_mm.h
index 35ed4a9981ae..6181e4134483 100644
--- a/arch/m68k/include/asm/pgtable_mm.h
+++ b/arch/m68k/include/asm/pgtable_mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_PGTABLE_H
#define _M68K_PGTABLE_H
diff --git a/arch/m68k/include/asm/pgtable_no.h b/arch/m68k/include/asm/pgtable_no.h
index ac7d87a02335..fc3a96c77bd8 100644
--- a/arch/m68k/include/asm/pgtable_no.h
+++ b/arch/m68k/include/asm/pgtable_no.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68KNOMMU_PGTABLE_H
#define _M68KNOMMU_PGTABLE_H
diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h
index 94c36030440c..464e9f5f50ee 100644
--- a/arch/m68k/include/asm/processor.h
+++ b/arch/m68k/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-m68k/processor.h
*
diff --git a/arch/m68k/include/asm/ptrace.h b/arch/m68k/include/asm/ptrace.h
index a45cb6894ad3..ea5a80ca1ab3 100644
--- a/arch/m68k/include/asm/ptrace.h
+++ b/arch/m68k/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_PTRACE_H
#define _M68K_PTRACE_H
diff --git a/arch/m68k/include/asm/q40_master.h b/arch/m68k/include/asm/q40_master.h
index c48d21b68f04..3a89c088800c 100644
--- a/arch/m68k/include/asm/q40_master.h
+++ b/arch/m68k/include/asm/q40_master.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Q40 master Chip Control
* RTC stuff merged for compactness.
diff --git a/arch/m68k/include/asm/q40ints.h b/arch/m68k/include/asm/q40ints.h
index 22f12c9eb910..7c93ac4117b8 100644
--- a/arch/m68k/include/asm/q40ints.h
+++ b/arch/m68k/include/asm/q40ints.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* contains some Q40 related interrupt definitions
*/
diff --git a/arch/m68k/include/asm/quicc_simple.h b/arch/m68k/include/asm/quicc_simple.h
index c3636932d4bc..b9e2808b44ac 100644
--- a/arch/m68k/include/asm/quicc_simple.h
+++ b/arch/m68k/include/asm/quicc_simple.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/***********************************
* $Id: quicc_simple.h,v 1.1 2002/03/02 15:01:10 gerg Exp $
***********************************
diff --git a/arch/m68k/include/asm/raw_io.h b/arch/m68k/include/asm/raw_io.h
index 932faa35655b..05e940c29b54 100644
--- a/arch/m68k/include/asm/raw_io.h
+++ b/arch/m68k/include/asm/raw_io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-m68k/raw_io.h
*
diff --git a/arch/m68k/include/asm/segment.h b/arch/m68k/include/asm/segment.h
index 98216b8111f0..0b4cc1e079b5 100644
--- a/arch/m68k/include/asm/segment.h
+++ b/arch/m68k/include/asm/segment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_SEGMENT_H
#define _M68K_SEGMENT_H
diff --git a/arch/m68k/include/asm/serial.h b/arch/m68k/include/asm/serial.h
index 6d4497049b4b..3f76bc7b9edb 100644
--- a/arch/m68k/include/asm/serial.h
+++ b/arch/m68k/include/asm/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-m68k/serial.h
*
diff --git a/arch/m68k/include/asm/signal.h b/arch/m68k/include/asm/signal.h
index 3bc64d02ba5f..8af85c38d377 100644
--- a/arch/m68k/include/asm/signal.h
+++ b/arch/m68k/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_SIGNAL_H
#define _M68K_SIGNAL_H
diff --git a/arch/m68k/include/asm/string.h b/arch/m68k/include/asm/string.h
index c30c03d98581..f759d944c449 100644
--- a/arch/m68k/include/asm/string.h
+++ b/arch/m68k/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_STRING_H_
#define _M68K_STRING_H_
diff --git a/arch/m68k/include/asm/sun3-head.h b/arch/m68k/include/asm/sun3-head.h
index 05af2f18b3bd..5656a265ea58 100644
--- a/arch/m68k/include/asm/sun3-head.h
+++ b/arch/m68k/include/asm/sun3-head.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SUN3_HEAD_H
#define __SUN3_HEAD_H
diff --git a/arch/m68k/include/asm/sun3_pgalloc.h b/arch/m68k/include/asm/sun3_pgalloc.h
index 1901f61f926f..11485d38de4e 100644
--- a/arch/m68k/include/asm/sun3_pgalloc.h
+++ b/arch/m68k/include/asm/sun3_pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* sun3_pgalloc.h --
* reorganization around 2.3.39, routines moved from sun3_pgtable.h
*
diff --git a/arch/m68k/include/asm/sun3_pgtable.h b/arch/m68k/include/asm/sun3_pgtable.h
index d5104a7b5388..c987d50866b4 100644
--- a/arch/m68k/include/asm/sun3_pgtable.h
+++ b/arch/m68k/include/asm/sun3_pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SUN3_PGTABLE_H
#define _SUN3_PGTABLE_H
diff --git a/arch/m68k/include/asm/sun3mmu.h b/arch/m68k/include/asm/sun3mmu.h
index d8f17a0d8c9f..21a75daa278f 100644
--- a/arch/m68k/include/asm/sun3mmu.h
+++ b/arch/m68k/include/asm/sun3mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for Sun3 custom MMU.
*/
diff --git a/arch/m68k/include/asm/sun3x.h b/arch/m68k/include/asm/sun3x.h
index f5691a1ed7cc..b3a83bcaf47e 100644
--- a/arch/m68k/include/asm/sun3x.h
+++ b/arch/m68k/include/asm/sun3x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SUN3X_H
#define SUN3X_H
diff --git a/arch/m68k/include/asm/sun3xflop.h b/arch/m68k/include/asm/sun3xflop.h
index 159269b7f2e8..ef04c43acd13 100644
--- a/arch/m68k/include/asm/sun3xflop.h
+++ b/arch/m68k/include/asm/sun3xflop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* sun3xflop.h: Sun3/80 specific parts of the floppy driver.
*
* Derived partially from asm-sparc/floppy.h, which is:
diff --git a/arch/m68k/include/asm/sun3xprom.h b/arch/m68k/include/asm/sun3xprom.h
index 6735efcf5f6d..d244ca4a9149 100644
--- a/arch/m68k/include/asm/sun3xprom.h
+++ b/arch/m68k/include/asm/sun3xprom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Useful PROM locations */
#ifndef SUN3X_PROM_H
diff --git a/arch/m68k/include/asm/switch_to.h b/arch/m68k/include/asm/switch_to.h
index 16fd6b634982..94f02f46c5fb 100644
--- a/arch/m68k/include/asm/switch_to.h
+++ b/arch/m68k/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_SWITCH_TO_H
#define _M68K_SWITCH_TO_H
diff --git a/arch/m68k/include/asm/thread_info.h b/arch/m68k/include/asm/thread_info.h
index cee13c2e5161..928035591f2e 100644
--- a/arch/m68k/include/asm/thread_info.h
+++ b/arch/m68k/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_THREAD_INFO_H
#define _ASM_M68K_THREAD_INFO_H
diff --git a/arch/m68k/include/asm/timex.h b/arch/m68k/include/asm/timex.h
index efc1f4892357..6a21d9358280 100644
--- a/arch/m68k/include/asm/timex.h
+++ b/arch/m68k/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-m68k/timex.h
*
diff --git a/arch/m68k/include/asm/tlb.h b/arch/m68k/include/asm/tlb.h
index 1785cff73449..b4b9efb6f963 100644
--- a/arch/m68k/include/asm/tlb.h
+++ b/arch/m68k/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_TLB_H
#define _M68K_TLB_H
diff --git a/arch/m68k/include/asm/tlbflush.h b/arch/m68k/include/asm/tlbflush.h
index 965ea35c9a40..191e75a6bb24 100644
--- a/arch/m68k/include/asm/tlbflush.h
+++ b/arch/m68k/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_TLBFLUSH_H
#define _M68K_TLBFLUSH_H
diff --git a/arch/m68k/include/asm/uaccess.h b/arch/m68k/include/asm/uaccess.h
index 63ba18e4c9a2..e896466a41a4 100644
--- a/arch/m68k/include/asm/uaccess.h
+++ b/arch/m68k/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __uClinux__
#include <asm/uaccess_no.h>
#else
diff --git a/arch/m68k/include/asm/uaccess_mm.h b/arch/m68k/include/asm/uaccess_mm.h
index 1da1e23de74c..75c172e909ac 100644
--- a/arch/m68k/include/asm/uaccess_mm.h
+++ b/arch/m68k/include/asm/uaccess_mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __M68K_UACCESS_H
#define __M68K_UACCESS_H
diff --git a/arch/m68k/include/asm/uaccess_no.h b/arch/m68k/include/asm/uaccess_no.h
index 53d7b792a43d..892efb56beef 100644
--- a/arch/m68k/include/asm/uaccess_no.h
+++ b/arch/m68k/include/asm/uaccess_no.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __M68KNOMMU_UACCESS_H
#define __M68KNOMMU_UACCESS_H
diff --git a/arch/m68k/include/asm/ucontext.h b/arch/m68k/include/asm/ucontext.h
index e4e22669edc0..1523a8e5ff22 100644
--- a/arch/m68k/include/asm/ucontext.h
+++ b/arch/m68k/include/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_UCONTEXT_H
#define _M68K_UCONTEXT_H
diff --git a/arch/m68k/include/asm/unaligned.h b/arch/m68k/include/asm/unaligned.h
index 2b3ca0bf7a0d..98c8930d3d35 100644
--- a/arch/m68k/include/asm/unaligned.h
+++ b/arch/m68k/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_UNALIGNED_H
#define _ASM_M68K_UNALIGNED_H
diff --git a/arch/m68k/include/asm/unistd.h b/arch/m68k/include/asm/unistd.h
index aab1edd0d4ba..30d0d3fbd4ef 100644
--- a/arch/m68k/include/asm/unistd.h
+++ b/arch/m68k/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_UNISTD_H_
#define _ASM_M68K_UNISTD_H_
diff --git a/arch/m68k/include/asm/user.h b/arch/m68k/include/asm/user.h
index f1f478d6e050..509d555977c8 100644
--- a/arch/m68k/include/asm/user.h
+++ b/arch/m68k/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _M68K_USER_H
#define _M68K_USER_H
diff --git a/arch/m68k/include/asm/vga.h b/arch/m68k/include/asm/vga.h
index d3aa1401e7aa..010a624d1b39 100644
--- a/arch/m68k/include/asm/vga.h
+++ b/arch/m68k/include/asm/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_VGA_H
#define _ASM_M68K_VGA_H
diff --git a/arch/m68k/include/asm/virtconvert.h b/arch/m68k/include/asm/virtconvert.h
index b8a82fb1cef8..4aea6be7b220 100644
--- a/arch/m68k/include/asm/virtconvert.h
+++ b/arch/m68k/include/asm/virtconvert.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __VIRT_CONVERT__
#define __VIRT_CONVERT__
diff --git a/arch/m68k/include/asm/zorro.h b/arch/m68k/include/asm/zorro.h
index 5ce97c22b582..96f64bf7bcaa 100644
--- a/arch/m68k/include/asm/zorro.h
+++ b/arch/m68k/include/asm/zorro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_M68K_ZORRO_H
#define _ASM_M68K_ZORRO_H
diff --git a/arch/m68k/include/uapi/asm/a.out.h b/arch/m68k/include/uapi/asm/a.out.h
index 3885fe43432a..3eb24fd8b810 100644
--- a/arch/m68k/include/uapi/asm/a.out.h
+++ b/arch/m68k/include/uapi/asm/a.out.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __M68K_A_OUT_H__
#define __M68K_A_OUT_H__
diff --git a/arch/m68k/include/uapi/asm/bootinfo-amiga.h b/arch/m68k/include/uapi/asm/bootinfo-amiga.h
index daad3c58d2da..69bf4dda341e 100644
--- a/arch/m68k/include/uapi/asm/bootinfo-amiga.h
+++ b/arch/m68k/include/uapi/asm/bootinfo-amiga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
** asm/bootinfo-amiga.h -- Amiga-specific boot information definitions
*/
diff --git a/arch/m68k/include/uapi/asm/bootinfo-apollo.h b/arch/m68k/include/uapi/asm/bootinfo-apollo.h
index a93e0af1c6fe..c226f7957938 100644
--- a/arch/m68k/include/uapi/asm/bootinfo-apollo.h
+++ b/arch/m68k/include/uapi/asm/bootinfo-apollo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
** asm/bootinfo-apollo.h -- Apollo-specific boot information definitions
*/
diff --git a/arch/m68k/include/uapi/asm/bootinfo-atari.h b/arch/m68k/include/uapi/asm/bootinfo-atari.h
index a817854049bb..f2218a090fdb 100644
--- a/arch/m68k/include/uapi/asm/bootinfo-atari.h
+++ b/arch/m68k/include/uapi/asm/bootinfo-atari.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
** asm/bootinfo-atari.h -- Atari-specific boot information definitions
*/
diff --git a/arch/m68k/include/uapi/asm/bootinfo-hp300.h b/arch/m68k/include/uapi/asm/bootinfo-hp300.h
index c90cb71ed89a..2141c4f5f0a7 100644
--- a/arch/m68k/include/uapi/asm/bootinfo-hp300.h
+++ b/arch/m68k/include/uapi/asm/bootinfo-hp300.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
** asm/bootinfo-hp300.h -- HP9000/300-specific boot information definitions
*/
diff --git a/arch/m68k/include/uapi/asm/bootinfo-mac.h b/arch/m68k/include/uapi/asm/bootinfo-mac.h
index b44ff73898a9..449928cfcbf2 100644
--- a/arch/m68k/include/uapi/asm/bootinfo-mac.h
+++ b/arch/m68k/include/uapi/asm/bootinfo-mac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
** asm/bootinfo-mac.h -- Macintosh-specific boot information definitions
*/
diff --git a/arch/m68k/include/uapi/asm/bootinfo-q40.h b/arch/m68k/include/uapi/asm/bootinfo-q40.h
index c79fea7e555b..78bda04bf788 100644
--- a/arch/m68k/include/uapi/asm/bootinfo-q40.h
+++ b/arch/m68k/include/uapi/asm/bootinfo-q40.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
** asm/bootinfo-q40.h -- Q40-specific boot information definitions
*/
diff --git a/arch/m68k/include/uapi/asm/bootinfo-vme.h b/arch/m68k/include/uapi/asm/bootinfo-vme.h
index a135eb41d672..f36a09ab5e79 100644
--- a/arch/m68k/include/uapi/asm/bootinfo-vme.h
+++ b/arch/m68k/include/uapi/asm/bootinfo-vme.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
** asm/bootinfo-vme.h -- VME-specific boot information definitions
*/
diff --git a/arch/m68k/include/uapi/asm/bootinfo.h b/arch/m68k/include/uapi/asm/bootinfo.h
index a48cf544c762..38d3140381fa 100644
--- a/arch/m68k/include/uapi/asm/bootinfo.h
+++ b/arch/m68k/include/uapi/asm/bootinfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* asm/bootinfo.h -- Definition of the Linux/m68k boot information structure
*
diff --git a/arch/m68k/include/uapi/asm/byteorder.h b/arch/m68k/include/uapi/asm/byteorder.h
index 31b260a88803..1fb5732f4a91 100644
--- a/arch/m68k/include/uapi/asm/byteorder.h
+++ b/arch/m68k/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _M68K_BYTEORDER_H
#define _M68K_BYTEORDER_H
diff --git a/arch/m68k/include/uapi/asm/cachectl.h b/arch/m68k/include/uapi/asm/cachectl.h
index 525978e959e3..6171e246ca7b 100644
--- a/arch/m68k/include/uapi/asm/cachectl.h
+++ b/arch/m68k/include/uapi/asm/cachectl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _M68K_CACHECTL_H
#define _M68K_CACHECTL_H
diff --git a/arch/m68k/include/uapi/asm/fcntl.h b/arch/m68k/include/uapi/asm/fcntl.h
index 1c369b20dc45..c6861e6ee313 100644
--- a/arch/m68k/include/uapi/asm/fcntl.h
+++ b/arch/m68k/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _M68K_FCNTL_H
#define _M68K_FCNTL_H
diff --git a/arch/m68k/include/uapi/asm/ioctls.h b/arch/m68k/include/uapi/asm/ioctls.h
index 1332bb4ca5b0..d92d7c7786bf 100644
--- a/arch/m68k/include/uapi/asm/ioctls.h
+++ b/arch/m68k/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ARCH_M68K_IOCTLS_H__
#define __ARCH_M68K_IOCTLS_H__
diff --git a/arch/m68k/include/uapi/asm/param.h b/arch/m68k/include/uapi/asm/param.h
index 36265ccf5c7b..726b2e7ec70d 100644
--- a/arch/m68k/include/uapi/asm/param.h
+++ b/arch/m68k/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _M68K_PARAM_H
#define _M68K_PARAM_H
diff --git a/arch/m68k/include/uapi/asm/poll.h b/arch/m68k/include/uapi/asm/poll.h
index f080fcdb61bf..c3e3fcc15e1d 100644
--- a/arch/m68k/include/uapi/asm/poll.h
+++ b/arch/m68k/include/uapi/asm/poll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __m68k_POLL_H
#define __m68k_POLL_H
diff --git a/arch/m68k/include/uapi/asm/posix_types.h b/arch/m68k/include/uapi/asm/posix_types.h
index cf4dbf70fdc7..10a65149b5f2 100644
--- a/arch/m68k/include/uapi/asm/posix_types.h
+++ b/arch/m68k/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ARCH_M68K_POSIX_TYPES_H
#define __ARCH_M68K_POSIX_TYPES_H
diff --git a/arch/m68k/include/uapi/asm/ptrace.h b/arch/m68k/include/uapi/asm/ptrace.h
index caf92fd34939..19a1b9d0d858 100644
--- a/arch/m68k/include/uapi/asm/ptrace.h
+++ b/arch/m68k/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_M68K_PTRACE_H
#define _UAPI_M68K_PTRACE_H
diff --git a/arch/m68k/include/uapi/asm/setup.h b/arch/m68k/include/uapi/asm/setup.h
index 6a6dc636761e..25fe26d5597c 100644
--- a/arch/m68k/include/uapi/asm/setup.h
+++ b/arch/m68k/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
** asm/setup.h -- Definition of the Linux/m68k setup information
**
diff --git a/arch/m68k/include/uapi/asm/sigcontext.h b/arch/m68k/include/uapi/asm/sigcontext.h
index 523db2a51cf3..6cc8421c8a73 100644
--- a/arch/m68k/include/uapi/asm/sigcontext.h
+++ b/arch/m68k/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_M68k_SIGCONTEXT_H
#define _ASM_M68k_SIGCONTEXT_H
diff --git a/arch/m68k/include/uapi/asm/signal.h b/arch/m68k/include/uapi/asm/signal.h
index cba6f858bb46..915cc755a184 100644
--- a/arch/m68k/include/uapi/asm/signal.h
+++ b/arch/m68k/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_M68K_SIGNAL_H
#define _UAPI_M68K_SIGNAL_H
diff --git a/arch/m68k/include/uapi/asm/stat.h b/arch/m68k/include/uapi/asm/stat.h
index dd38bc2e9f98..1e15e6517b9c 100644
--- a/arch/m68k/include/uapi/asm/stat.h
+++ b/arch/m68k/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _M68K_STAT_H
#define _M68K_STAT_H
diff --git a/arch/m68k/include/uapi/asm/swab.h b/arch/m68k/include/uapi/asm/swab.h
index b7b37a40defc..9ef4fafba7d4 100644
--- a/arch/m68k/include/uapi/asm/swab.h
+++ b/arch/m68k/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _M68K_SWAB_H
#define _M68K_SWAB_H
diff --git a/arch/m68k/include/uapi/asm/unistd.h b/arch/m68k/include/uapi/asm/unistd.h
index 25589f5b8669..de3054f8a681 100644
--- a/arch/m68k/include/uapi/asm/unistd.h
+++ b/arch/m68k/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_M68K_UNISTD_H_
#define _UAPI_ASM_M68K_UNISTD_H_
diff --git a/arch/m68k/kernel/Makefile b/arch/m68k/kernel/Makefile
index 74c898ced8cc..dbac7f8743fc 100644
--- a/arch/m68k/kernel/Makefile
+++ b/arch/m68k/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/m68k/kernel/asm-offsets.c b/arch/m68k/kernel/asm-offsets.c
index 3a386341aa6e..ccea355052ef 100644
--- a/arch/m68k/kernel/asm-offsets.c
+++ b/arch/m68k/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This program is used to generate definitions needed by
* assembly language modules.
diff --git a/arch/m68k/kernel/bootinfo_proc.c b/arch/m68k/kernel/bootinfo_proc.c
index 2a33a9645ad8..3b9cab84917d 100644
--- a/arch/m68k/kernel/bootinfo_proc.c
+++ b/arch/m68k/kernel/bootinfo_proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Based on arch/arm/kernel/atags_proc.c
*/
diff --git a/arch/m68k/kernel/machine_kexec.c b/arch/m68k/kernel/machine_kexec.c
index d4affc917d9d..206f84983120 100644
--- a/arch/m68k/kernel/machine_kexec.c
+++ b/arch/m68k/kernel/machine_kexec.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* machine_kexec.c - handle transition of Linux booting another kernel
*/
diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c
index 7df92f8b0781..4e77a06735c1 100644
--- a/arch/m68k/kernel/process.c
+++ b/arch/m68k/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/kernel/process.c
*
diff --git a/arch/m68k/kernel/relocate_kernel.S b/arch/m68k/kernel/relocate_kernel.S
index 3e09a89067ad..ab0f1e7d4653 100644
--- a/arch/m68k/kernel/relocate_kernel.S
+++ b/arch/m68k/kernel/relocate_kernel.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/asm-offsets.h>
diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c
index 4bf129f1d2e2..854e09f403e7 100644
--- a/arch/m68k/kernel/setup.c
+++ b/arch/m68k/kernel/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#ifdef CONFIG_MMU
#include "setup_mm.c"
#else
diff --git a/arch/m68k/kernel/setup_mm.c b/arch/m68k/kernel/setup_mm.c
index 7a2c21212820..657a9843ebfa 100644
--- a/arch/m68k/kernel/setup_mm.c
+++ b/arch/m68k/kernel/setup_mm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/kernel/setup.c
*
diff --git a/arch/m68k/kernel/setup_no.c b/arch/m68k/kernel/setup_no.c
index 8afe6f651c1c..a98af1018201 100644
--- a/arch/m68k/kernel/setup_no.c
+++ b/arch/m68k/kernel/setup_no.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68knommu/kernel/setup.c
*
diff --git a/arch/m68k/kernel/sun3-head.S b/arch/m68k/kernel/sun3-head.S
index 43036bf4aeed..faf18f4fab1f 100644
--- a/arch/m68k/kernel/sun3-head.S
+++ b/arch/m68k/kernel/sun3-head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <linux/init.h>
diff --git a/arch/m68k/kernel/sys_m68k.c b/arch/m68k/kernel/sys_m68k.c
index 933e4815dac8..27e10af5153a 100644
--- a/arch/m68k/kernel/sys_m68k.c
+++ b/arch/m68k/kernel/sys_m68k.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/kernel/sys_m68k.c
*
diff --git a/arch/m68k/kernel/syscalltable.S b/arch/m68k/kernel/syscalltable.S
index 8c9fcfafe0dd..2c8402e75f62 100644
--- a/arch/m68k/kernel/syscalltable.S
+++ b/arch/m68k/kernel/syscalltable.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2002, Greg Ungerer (gerg@snapgear.com)
*
diff --git a/arch/m68k/kernel/vmlinux-nommu.lds b/arch/m68k/kernel/vmlinux-nommu.lds
index d2c8abf1c8c4..3aa571a513b5 100644
--- a/arch/m68k/kernel/vmlinux-nommu.lds
+++ b/arch/m68k/kernel/vmlinux-nommu.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* vmlinux.lds.S -- master linker script for m68knommu arch
*
diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds
index 5b5ce1e4d1ed..89172b8974b9 100644
--- a/arch/m68k/kernel/vmlinux-std.lds
+++ b/arch/m68k/kernel/vmlinux-std.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ld script to make m68k Linux kernel */
#include <asm-generic/vmlinux.lds.h>
diff --git a/arch/m68k/kernel/vmlinux-sun3.lds b/arch/m68k/kernel/vmlinux-sun3.lds
index fe5ea1974b16..293990efc917 100644
--- a/arch/m68k/kernel/vmlinux-sun3.lds
+++ b/arch/m68k/kernel/vmlinux-sun3.lds
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ld script to make m68k Linux kernel */
#include <asm-generic/vmlinux.lds.h>
diff --git a/arch/m68k/kernel/vmlinux.lds.S b/arch/m68k/kernel/vmlinux.lds.S
index 69ec79638870..d3d3c305ebc9 100644
--- a/arch/m68k/kernel/vmlinux.lds.S
+++ b/arch/m68k/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if defined(CONFIG_MMU) && !defined(CONFIG_COLDFIRE)
PHDRS
{
diff --git a/arch/m68k/lib/Makefile b/arch/m68k/lib/Makefile
index fcd8eb1d7c7d..eca17f14b4d5 100644
--- a/arch/m68k/lib/Makefile
+++ b/arch/m68k/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for m68k-specific library files..
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c
index 514acde3cd40..850f0dc284ca 100644
--- a/arch/m68k/mac/baboon.c
+++ b/arch/m68k/mac/baboon.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Baboon Custom IC Management
*
diff --git a/arch/m68k/mac/mac_penguin.S b/arch/m68k/mac/mac_penguin.S
index b3ce30b6071d..359e63bb632d 100644
--- a/arch/m68k/mac/mac_penguin.S
+++ b/arch/m68k/mac/mac_penguin.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.byte \
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
diff --git a/arch/m68k/mac/macboing.c b/arch/m68k/mac/macboing.c
index ffaa1f6439ae..fa2b9604fd24 100644
--- a/arch/m68k/mac/macboing.c
+++ b/arch/m68k/mac/macboing.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Mac bong noise generator. Note - we ought to put a boingy noise
* here 8)
diff --git a/arch/m68k/mac/macints.c b/arch/m68k/mac/macints.c
index 9637dee90dac..e3575388cd05 100644
--- a/arch/m68k/mac/macints.c
+++ b/arch/m68k/mac/macints.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Macintosh interrupts
*
diff --git a/arch/m68k/mac/misc.c b/arch/m68k/mac/misc.c
index d96348a52362..4956edaac926 100644
--- a/arch/m68k/mac/misc.c
+++ b/arch/m68k/mac/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Miscellaneous Mac68K-specific stuff
*/
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c
index ca84dcf41fc9..34c0993dc689 100644
--- a/arch/m68k/mac/oss.c
+++ b/arch/m68k/mac/oss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Operating System Services (OSS) chip handling
* Written by Joshua M. Thompson (funaho@jurai.org)
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index 16629e91feba..9f59a662ace5 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* 6522 Versatile Interface Adapter (VIA)
*
diff --git a/arch/m68k/mm/Makefile b/arch/m68k/mm/Makefile
index cfbf3205724a..b3adb5253393 100644
--- a/arch/m68k/mm/Makefile
+++ b/arch/m68k/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux m68k-specific parts of the memory manager.
#
diff --git a/arch/m68k/mm/cache.c b/arch/m68k/mm/cache.c
index 3d84c1f2ffb2..079e64898e6a 100644
--- a/arch/m68k/mm/cache.c
+++ b/arch/m68k/mm/cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/mm/cache.c
*
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
index 2795e4ca09d7..127d7c1f2090 100644
--- a/arch/m68k/mm/fault.c
+++ b/arch/m68k/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/mm/fault.c
*
diff --git a/arch/m68k/mm/hwtest.c b/arch/m68k/mm/hwtest.c
index fb8be4dd38c4..fe99aa99987e 100644
--- a/arch/m68k/mm/hwtest.c
+++ b/arch/m68k/mm/hwtest.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Tests for presence or absence of hardware registers.
* This code was originally in atari/config.c, but I noticed
* that it was also in drivers/nubus/nubus.c and I wanted to
diff --git a/arch/m68k/mm/init.c b/arch/m68k/mm/init.c
index a6ffead9bef5..e85acd131fa8 100644
--- a/arch/m68k/mm/init.c
+++ b/arch/m68k/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/mm/init.c
*
diff --git a/arch/m68k/mm/kmap.c b/arch/m68k/mm/kmap.c
index 6e4955bc542b..c2a38321c96d 100644
--- a/arch/m68k/mm/kmap.c
+++ b/arch/m68k/mm/kmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/mm/kmap.c
*
diff --git a/arch/m68k/mm/mcfmmu.c b/arch/m68k/mm/mcfmmu.c
index 87131cd3bc8f..8d1408583cf4 100644
--- a/arch/m68k/mm/mcfmmu.c
+++ b/arch/m68k/mm/mcfmmu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Based upon linux/arch/m68k/mm/sun3mmu.c
* Based upon linux/arch/ppc/mm/mmu_context.c
diff --git a/arch/m68k/mm/memory.c b/arch/m68k/mm/memory.c
index 4902b681a9fc..b86a2e21693b 100644
--- a/arch/m68k/mm/memory.c
+++ b/arch/m68k/mm/memory.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/mm/memory.c
*
diff --git a/arch/m68k/mm/motorola.c b/arch/m68k/mm/motorola.c
index 7cb72dbc2eaa..e490ecc7842c 100644
--- a/arch/m68k/mm/motorola.c
+++ b/arch/m68k/mm/motorola.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/mm/motorola.c
*
diff --git a/arch/m68k/mm/sun3mmu.c b/arch/m68k/mm/sun3mmu.c
index 177d776de1a0..4a9979908357 100644
--- a/arch/m68k/mm/sun3mmu.c
+++ b/arch/m68k/mm/sun3mmu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/mm/sun3mmu.c
*
diff --git a/arch/m68k/mvme16x/rtc.c b/arch/m68k/mvme16x/rtc.c
index 7b24577a7bd0..ccbaae1125e6 100644
--- a/arch/m68k/mvme16x/rtc.c
+++ b/arch/m68k/mvme16x/rtc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Real Time Clock interface for Linux on the MVME16x
*
diff --git a/arch/m68k/sun3/dvma.c b/arch/m68k/sun3/dvma.c
index ca02ee25894c..5f92c72b05c3 100644
--- a/arch/m68k/sun3/dvma.c
+++ b/arch/m68k/sun3/dvma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/sun3/dvma.c
*
diff --git a/arch/m68k/sun3/idprom.c b/arch/m68k/sun3/idprom.c
index 9c23f506d60d..1ace5353d78f 100644
--- a/arch/m68k/sun3/idprom.c
+++ b/arch/m68k/sun3/idprom.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* idprom.c: Routines to load the idprom into kernel addresses and
* interpret the data contained within.
diff --git a/arch/m68k/sun3/leds.c b/arch/m68k/sun3/leds.c
index aad2e0a0682e..7c67b58ebf13 100644
--- a/arch/m68k/sun3/leds.c
+++ b/arch/m68k/sun3/leds.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/contregs.h>
#include <asm/sun3mmu.h>
#include <asm/io.h>
diff --git a/arch/m68k/sun3/mmu_emu.c b/arch/m68k/sun3/mmu_emu.c
index 7fdc61525e0b..d30da12a1702 100644
--- a/arch/m68k/sun3/mmu_emu.c
+++ b/arch/m68k/sun3/mmu_emu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
** Tablewalk MMU emulator
**
diff --git a/arch/m68k/sun3/prom/console.c b/arch/m68k/sun3/prom/console.c
index e92364373b07..eb4f6c903fb8 100644
--- a/arch/m68k/sun3/prom/console.c
+++ b/arch/m68k/sun3/prom/console.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* console.c: Routines that deal with sending and receiving IO
* to/from the current console device using the PROM.
diff --git a/arch/m68k/sun3/prom/init.c b/arch/m68k/sun3/prom/init.c
index eeba067d565f..0c6d99df6aee 100644
--- a/arch/m68k/sun3/prom/init.c
+++ b/arch/m68k/sun3/prom/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* init.c: Initialize internal variables used by the PROM
* library functions.
diff --git a/arch/m68k/sun3/prom/misc.c b/arch/m68k/sun3/prom/misc.c
index 3d60e1337f75..b8c95940d089 100644
--- a/arch/m68k/sun3/prom/misc.c
+++ b/arch/m68k/sun3/prom/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* misc.c: Miscellaneous prom functions that don't belong
* anywhere else.
diff --git a/arch/m68k/sun3/prom/printf.c b/arch/m68k/sun3/prom/printf.c
index 5b82bea03493..b6724cc66795 100644
--- a/arch/m68k/sun3/prom/printf.c
+++ b/arch/m68k/sun3/prom/printf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* printf.c: Internal prom library printf facility.
*
diff --git a/arch/m68k/sun3/sun3dvma.c b/arch/m68k/sun3/sun3dvma.c
index d36bd15f9fdc..8546922adb47 100644
--- a/arch/m68k/sun3/sun3dvma.c
+++ b/arch/m68k/sun3/sun3dvma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/sun3/sun3dvma.c
*
diff --git a/arch/m68k/sun3x/config.c b/arch/m68k/sun3x/config.c
index 0532d64d191e..33d3a1c6fba0 100644
--- a/arch/m68k/sun3x/config.c
+++ b/arch/m68k/sun3x/config.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Setup kernel for a Sun3x machine
*
diff --git a/arch/m68k/sun3x/dvma.c b/arch/m68k/sun3x/dvma.c
index 9413c8724b0d..b2acbc862f60 100644
--- a/arch/m68k/sun3x/dvma.c
+++ b/arch/m68k/sun3x/dvma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Virtual DMA allocation
*
diff --git a/arch/m68k/sun3x/prom.c b/arch/m68k/sun3x/prom.c
index 5d60e65c1ee5..be14c899ab7d 100644
--- a/arch/m68k/sun3x/prom.c
+++ b/arch/m68k/sun3x/prom.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Prom access routines for the sun3x */
#include <linux/types.h>
diff --git a/arch/m68k/sun3x/time.c b/arch/m68k/sun3x/time.c
index 431d3c4306dd..7a2c53d9f779 100644
--- a/arch/m68k/sun3x/time.c
+++ b/arch/m68k/sun3x/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/m68k/sun3x/time.c
*
diff --git a/arch/m68k/sun3x/time.h b/arch/m68k/sun3x/time.h
index a4f9126be7e2..496f406412ad 100644
--- a/arch/m68k/sun3x/time.h
+++ b/arch/m68k/sun3x/time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SUN3X_TIME_H
#define SUN3X_TIME_H
diff --git a/arch/m68k/tools/amiga/Makefile b/arch/m68k/tools/amiga/Makefile
index 113436136089..e6425b367ca8 100644
--- a/arch/m68k/tools/amiga/Makefile
+++ b/arch/m68k/tools/amiga/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
CC = m68k-cbm-amigados-gcc
CFLAGS = -Wall -O2
diff --git a/arch/metag/Kconfig b/arch/metag/Kconfig
index 7d8b322e5101..c7b62a339539 100644
--- a/arch/metag/Kconfig
+++ b/arch/metag/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config METAG
def_bool y
select EMBEDDED
diff --git a/arch/metag/Kconfig.debug b/arch/metag/Kconfig.debug
index cb5c92860540..ac4516c605db 100644
--- a/arch/metag/Kconfig.debug
+++ b/arch/metag/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
config TRACE_IRQFLAGS_SUPPORT
diff --git a/arch/metag/Kconfig.soc b/arch/metag/Kconfig.soc
index 50f979c2b02d..c521f0e00d8e 100644
--- a/arch/metag/Kconfig.soc
+++ b/arch/metag/Kconfig.soc
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "SoC Type"
default META21_FPGA
diff --git a/arch/metag/boot/dts/Makefile b/arch/metag/boot/dts/Makefile
index 097c6da4547f..ad5dde558db1 100644
--- a/arch/metag/boot/dts/Makefile
+++ b/arch/metag/boot/dts/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-y += skeleton.dtb
dtb-y += tz1090_generic.dtb
diff --git a/arch/metag/boot/dts/skeleton.dtsi b/arch/metag/boot/dts/skeleton.dtsi
index 78229eacced7..43e2ffe73c27 100644
--- a/arch/metag/boot/dts/skeleton.dtsi
+++ b/arch/metag/boot/dts/skeleton.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Skeleton device tree; the bare minimum needed to boot; just include and
* add a compatible value. The bootloader will typically populate the memory
diff --git a/arch/metag/include/asm/atomic.h b/arch/metag/include/asm/atomic.h
index 8ff0a70865f6..97ae189c2dd8 100644
--- a/arch/metag/include/asm/atomic.h
+++ b/arch/metag/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_ATOMIC_H
#define __ASM_METAG_ATOMIC_H
diff --git a/arch/metag/include/asm/atomic_lnkget.h b/arch/metag/include/asm/atomic_lnkget.h
index def2c642f053..17e8c61c946d 100644
--- a/arch/metag/include/asm/atomic_lnkget.h
+++ b/arch/metag/include/asm/atomic_lnkget.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_ATOMIC_LNKGET_H
#define __ASM_METAG_ATOMIC_LNKGET_H
diff --git a/arch/metag/include/asm/atomic_lock1.h b/arch/metag/include/asm/atomic_lock1.h
index eee779f26cc4..2ce8fa3a79c2 100644
--- a/arch/metag/include/asm/atomic_lock1.h
+++ b/arch/metag/include/asm/atomic_lock1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_ATOMIC_LOCK1_H
#define __ASM_METAG_ATOMIC_LOCK1_H
diff --git a/arch/metag/include/asm/barrier.h b/arch/metag/include/asm/barrier.h
index 5418517aa5eb..2661fec5696a 100644
--- a/arch/metag/include/asm/barrier.h
+++ b/arch/metag/include/asm/barrier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_BARRIER_H
#define _ASM_METAG_BARRIER_H
diff --git a/arch/metag/include/asm/bitops.h b/arch/metag/include/asm/bitops.h
index 2671134ee745..766ad43010ad 100644
--- a/arch/metag/include/asm/bitops.h
+++ b/arch/metag/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_BITOPS_H
#define __ASM_METAG_BITOPS_H
diff --git a/arch/metag/include/asm/bug.h b/arch/metag/include/asm/bug.h
index 9f8967f10f8c..ee07a943f931 100644
--- a/arch/metag/include/asm/bug.h
+++ b/arch/metag/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_BUG_H
#define _ASM_METAG_BUG_H
diff --git a/arch/metag/include/asm/cache.h b/arch/metag/include/asm/cache.h
index a43b650cfdc0..b5df02239c8d 100644
--- a/arch/metag/include/asm/cache.h
+++ b/arch/metag/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_CACHE_H
#define __ASM_METAG_CACHE_H
diff --git a/arch/metag/include/asm/cacheflush.h b/arch/metag/include/asm/cacheflush.h
index 7787ec5e3ed0..2584a51eca1a 100644
--- a/arch/metag/include/asm/cacheflush.h
+++ b/arch/metag/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _METAG_CACHEFLUSH_H
#define _METAG_CACHEFLUSH_H
diff --git a/arch/metag/include/asm/cachepart.h b/arch/metag/include/asm/cachepart.h
index cf6b44e916b5..79411e977586 100644
--- a/arch/metag/include/asm/cachepart.h
+++ b/arch/metag/include/asm/cachepart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Meta cache partition manipulation.
*
diff --git a/arch/metag/include/asm/checksum.h b/arch/metag/include/asm/checksum.h
index f65fe83b1730..6533d14e9789 100644
--- a/arch/metag/include/asm/checksum.h
+++ b/arch/metag/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _METAG_CHECKSUM_H
#define _METAG_CHECKSUM_H
diff --git a/arch/metag/include/asm/cmpxchg.h b/arch/metag/include/asm/cmpxchg.h
index be29e3e44321..68c4ab1466fd 100644
--- a/arch/metag/include/asm/cmpxchg.h
+++ b/arch/metag/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_CMPXCHG_H
#define __ASM_METAG_CMPXCHG_H
diff --git a/arch/metag/include/asm/cmpxchg_irq.h b/arch/metag/include/asm/cmpxchg_irq.h
index 649573168b05..5255e37f8496 100644
--- a/arch/metag/include/asm/cmpxchg_irq.h
+++ b/arch/metag/include/asm/cmpxchg_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_CMPXCHG_IRQ_H
#define __ASM_METAG_CMPXCHG_IRQ_H
diff --git a/arch/metag/include/asm/cmpxchg_lnkget.h b/arch/metag/include/asm/cmpxchg_lnkget.h
index 2369ad394876..c69be00a4739 100644
--- a/arch/metag/include/asm/cmpxchg_lnkget.h
+++ b/arch/metag/include/asm/cmpxchg_lnkget.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_CMPXCHG_LNKGET_H
#define __ASM_METAG_CMPXCHG_LNKGET_H
diff --git a/arch/metag/include/asm/cmpxchg_lock1.h b/arch/metag/include/asm/cmpxchg_lock1.h
index fd6850474969..5976e39db2b4 100644
--- a/arch/metag/include/asm/cmpxchg_lock1.h
+++ b/arch/metag/include/asm/cmpxchg_lock1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_CMPXCHG_LOCK1_H
#define __ASM_METAG_CMPXCHG_LOCK1_H
diff --git a/arch/metag/include/asm/core_reg.h b/arch/metag/include/asm/core_reg.h
index bdbc3a51f31c..ca70a0a29b61 100644
--- a/arch/metag/include/asm/core_reg.h
+++ b/arch/metag/include/asm/core_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_CORE_REG_H_
#define __ASM_METAG_CORE_REG_H_
diff --git a/arch/metag/include/asm/cpu.h b/arch/metag/include/asm/cpu.h
index decf12969268..9dac67de4748 100644
--- a/arch/metag/include/asm/cpu.h
+++ b/arch/metag/include/asm/cpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_CPU_H
#define _ASM_METAG_CPU_H
diff --git a/arch/metag/include/asm/da.h b/arch/metag/include/asm/da.h
index 81bd5212fb03..901daa540e6e 100644
--- a/arch/metag/include/asm/da.h
+++ b/arch/metag/include/asm/da.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Meta DA JTAG debugger control.
*
diff --git a/arch/metag/include/asm/delay.h b/arch/metag/include/asm/delay.h
index 9c92f996957a..fd73d3d5d294 100644
--- a/arch/metag/include/asm/delay.h
+++ b/arch/metag/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _METAG_DELAY_H
#define _METAG_DELAY_H
diff --git a/arch/metag/include/asm/div64.h b/arch/metag/include/asm/div64.h
index 0fdd11676212..e3686d2ae20e 100644
--- a/arch/metag/include/asm/div64.h
+++ b/arch/metag/include/asm/div64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_DIV64_H__
#define __ASM_DIV64_H__
diff --git a/arch/metag/include/asm/dma-mapping.h b/arch/metag/include/asm/dma-mapping.h
index ea573be2b6d0..7465ce54a4a9 100644
--- a/arch/metag/include/asm/dma-mapping.h
+++ b/arch/metag/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_DMA_MAPPING_H
#define _ASM_METAG_DMA_MAPPING_H
diff --git a/arch/metag/include/asm/elf.h b/arch/metag/include/asm/elf.h
index 87b0cf1e0acb..a6c33800ba66 100644
--- a/arch/metag/include/asm/elf.h
+++ b/arch/metag/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_ELF_H
#define __ASM_METAG_ELF_H
diff --git a/arch/metag/include/asm/ftrace.h b/arch/metag/include/asm/ftrace.h
index a2269d60a945..b1c8c76fb772 100644
--- a/arch/metag/include/asm/ftrace.h
+++ b/arch/metag/include/asm/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_FTRACE
#define _ASM_METAG_FTRACE
diff --git a/arch/metag/include/asm/global_lock.h b/arch/metag/include/asm/global_lock.h
index fc831c88c22a..4d3da9682233 100644
--- a/arch/metag/include/asm/global_lock.h
+++ b/arch/metag/include/asm/global_lock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_GLOBAL_LOCK_H
#define __ASM_METAG_GLOBAL_LOCK_H
diff --git a/arch/metag/include/asm/highmem.h b/arch/metag/include/asm/highmem.h
index 9b1d172cd884..8b0dfd684e15 100644
--- a/arch/metag/include/asm/highmem.h
+++ b/arch/metag/include/asm/highmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_HIGHMEM_H
#define _ASM_HIGHMEM_H
diff --git a/arch/metag/include/asm/hugetlb.h b/arch/metag/include/asm/hugetlb.h
index 905ed422dbeb..1607363d2639 100644
--- a/arch/metag/include/asm/hugetlb.h
+++ b/arch/metag/include/asm/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_HUGETLB_H
#define _ASM_METAG_HUGETLB_H
diff --git a/arch/metag/include/asm/hwthread.h b/arch/metag/include/asm/hwthread.h
index 8f9786619b1d..8d2171da5414 100644
--- a/arch/metag/include/asm/hwthread.h
+++ b/arch/metag/include/asm/hwthread.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2008 Imagination Technologies
*/
diff --git a/arch/metag/include/asm/io.h b/arch/metag/include/asm/io.h
index 9890f21eadbe..71cd2bc54718 100644
--- a/arch/metag/include/asm/io.h
+++ b/arch/metag/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_IO_H
#define _ASM_METAG_IO_H
diff --git a/arch/metag/include/asm/irq.h b/arch/metag/include/asm/irq.h
index 6ac6d4a051dd..cb02c29935a4 100644
--- a/arch/metag/include/asm/irq.h
+++ b/arch/metag/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_IRQ_H
#define __ASM_METAG_IRQ_H
diff --git a/arch/metag/include/asm/irqflags.h b/arch/metag/include/asm/irqflags.h
index 339b16f062eb..e2fe34acb93b 100644
--- a/arch/metag/include/asm/irqflags.h
+++ b/arch/metag/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IRQ flags handling
*
diff --git a/arch/metag/include/asm/l2cache.h b/arch/metag/include/asm/l2cache.h
index bffbeaa4d93b..f260b158b8fe 100644
--- a/arch/metag/include/asm/l2cache.h
+++ b/arch/metag/include/asm/l2cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _METAG_L2CACHE_H
#define _METAG_L2CACHE_H
diff --git a/arch/metag/include/asm/linkage.h b/arch/metag/include/asm/linkage.h
index 73bf25ba4e18..3a9024ecb827 100644
--- a/arch/metag/include/asm/linkage.h
+++ b/arch/metag/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
diff --git a/arch/metag/include/asm/mman.h b/arch/metag/include/asm/mman.h
index 17999dba9275..dcb0d20a64fd 100644
--- a/arch/metag/include/asm/mman.h
+++ b/arch/metag/include/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __METAG_MMAN_H__
#define __METAG_MMAN_H__
diff --git a/arch/metag/include/asm/mmu.h b/arch/metag/include/asm/mmu.h
index 9c321147c0b4..cab5a01c3dcb 100644
--- a/arch/metag/include/asm/mmu.h
+++ b/arch/metag/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MMU_H
#define __MMU_H
diff --git a/arch/metag/include/asm/mmu_context.h b/arch/metag/include/asm/mmu_context.h
index 2e0312748197..7b4766379622 100644
--- a/arch/metag/include/asm/mmu_context.h
+++ b/arch/metag/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __METAG_MMU_CONTEXT_H
#define __METAG_MMU_CONTEXT_H
diff --git a/arch/metag/include/asm/mmzone.h b/arch/metag/include/asm/mmzone.h
index 9c88a9c65f59..8627fb532206 100644
--- a/arch/metag/include/asm/mmzone.h
+++ b/arch/metag/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_MMZONE_H
#define __ASM_METAG_MMZONE_H
diff --git a/arch/metag/include/asm/module.h b/arch/metag/include/asm/module.h
index e47e60941b2b..e957171c320b 100644
--- a/arch/metag/include/asm/module.h
+++ b/arch/metag/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_MODULE_H
#define _ASM_METAG_MODULE_H
diff --git a/arch/metag/include/asm/page.h b/arch/metag/include/asm/page.h
index 1e8e281b8bb7..9e994d77069d 100644
--- a/arch/metag/include/asm/page.h
+++ b/arch/metag/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _METAG_PAGE_H
#define _METAG_PAGE_H
diff --git a/arch/metag/include/asm/pgalloc.h b/arch/metag/include/asm/pgalloc.h
index c2caa1ee4360..0b9d95d78b61 100644
--- a/arch/metag/include/asm/pgalloc.h
+++ b/arch/metag/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _METAG_PGALLOC_H
#define _METAG_PGALLOC_H
diff --git a/arch/metag/include/asm/pgtable-bits.h b/arch/metag/include/asm/pgtable-bits.h
index 25ba6729f496..5f6b82282a41 100644
--- a/arch/metag/include/asm/pgtable-bits.h
+++ b/arch/metag/include/asm/pgtable-bits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Meta page table definitions.
*/
diff --git a/arch/metag/include/asm/pgtable.h b/arch/metag/include/asm/pgtable.h
index 0c151e5af079..a3422f06c03b 100644
--- a/arch/metag/include/asm/pgtable.h
+++ b/arch/metag/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Macros and functions to manipulate Meta page tables.
*/
diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h
index ec6a49076980..9a0c502cd4a0 100644
--- a/arch/metag/include/asm/processor.h
+++ b/arch/metag/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2005,2006,2007,2008 Imagination Technologies
*/
@@ -131,9 +132,6 @@ static inline void release_thread(struct task_struct *dead_task)
{
}
-#define copy_segments(tsk, mm) do { } while (0)
-#define release_segments(mm) do { } while (0)
-
/*
* Return saved PC of a blocked thread.
*/
diff --git a/arch/metag/include/asm/ptrace.h b/arch/metag/include/asm/ptrace.h
index fcabc18daf25..9074f254c9ca 100644
--- a/arch/metag/include/asm/ptrace.h
+++ b/arch/metag/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _METAG_PTRACE_H
#define _METAG_PTRACE_H
diff --git a/arch/metag/include/asm/setup.h b/arch/metag/include/asm/setup.h
index e9fdee9452b1..504621d79ef5 100644
--- a/arch/metag/include/asm/setup.h
+++ b/arch/metag/include/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_SETUP_H
#define _ASM_METAG_SETUP_H
diff --git a/arch/metag/include/asm/smp.h b/arch/metag/include/asm/smp.h
index 1d7e770f7a54..8d3683d83680 100644
--- a/arch/metag/include/asm/smp.h
+++ b/arch/metag/include/asm/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SMP_H
#define __ASM_SMP_H
diff --git a/arch/metag/include/asm/sparsemem.h b/arch/metag/include/asm/sparsemem.h
index 03fe255d697a..2942894bace5 100644
--- a/arch/metag/include/asm/sparsemem.h
+++ b/arch/metag/include/asm/sparsemem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_SPARSEMEM_H
#define __ASM_METAG_SPARSEMEM_H
diff --git a/arch/metag/include/asm/spinlock.h b/arch/metag/include/asm/spinlock.h
index ddf7fe5708a6..349938c35f2d 100644
--- a/arch/metag/include/asm/spinlock.h
+++ b/arch/metag/include/asm/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPINLOCK_H
#define __ASM_SPINLOCK_H
diff --git a/arch/metag/include/asm/spinlock_lnkget.h b/arch/metag/include/asm/spinlock_lnkget.h
index ad8436feed8d..029935560b7f 100644
--- a/arch/metag/include/asm/spinlock_lnkget.h
+++ b/arch/metag/include/asm/spinlock_lnkget.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPINLOCK_LNKGET_H
#define __ASM_SPINLOCK_LNKGET_H
diff --git a/arch/metag/include/asm/spinlock_lock1.h b/arch/metag/include/asm/spinlock_lock1.h
index c630444cffe9..12de9862d190 100644
--- a/arch/metag/include/asm/spinlock_lock1.h
+++ b/arch/metag/include/asm/spinlock_lock1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPINLOCK_LOCK1_H
#define __ASM_SPINLOCK_LOCK1_H
diff --git a/arch/metag/include/asm/spinlock_types.h b/arch/metag/include/asm/spinlock_types.h
index b76391405fea..cd197f1bed59 100644
--- a/arch/metag/include/asm/spinlock_types.h
+++ b/arch/metag/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_SPINLOCK_TYPES_H
#define _ASM_METAG_SPINLOCK_TYPES_H
diff --git a/arch/metag/include/asm/stacktrace.h b/arch/metag/include/asm/stacktrace.h
index 2830a0fe7ac9..f45e3cb2bbb5 100644
--- a/arch/metag/include/asm/stacktrace.h
+++ b/arch/metag/include/asm/stacktrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_STACKTRACE_H
#define __ASM_STACKTRACE_H
diff --git a/arch/metag/include/asm/string.h b/arch/metag/include/asm/string.h
index 53e3806eee04..86f9614d5fc6 100644
--- a/arch/metag/include/asm/string.h
+++ b/arch/metag/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _METAG_STRING_H_
#define _METAG_STRING_H_
diff --git a/arch/metag/include/asm/syscalls.h b/arch/metag/include/asm/syscalls.h
index a02b95556522..eac0cf120323 100644
--- a/arch/metag/include/asm/syscalls.h
+++ b/arch/metag/include/asm/syscalls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_SYSCALLS_H
#define _ASM_METAG_SYSCALLS_H
diff --git a/arch/metag/include/asm/tcm.h b/arch/metag/include/asm/tcm.h
index 7711c317b1d2..a0a4997e4b8a 100644
--- a/arch/metag/include/asm/tcm.h
+++ b/arch/metag/include/asm/tcm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_TCM_H__
#define __ASM_TCM_H__
diff --git a/arch/metag/include/asm/thread_info.h b/arch/metag/include/asm/thread_info.h
index 32677cc278aa..554f73a77e6e 100644
--- a/arch/metag/include/asm/thread_info.h
+++ b/arch/metag/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* thread_info.h: Meta low-level thread information
*
* Copyright (C) 2002 David Howells (dhowells@redhat.com)
diff --git a/arch/metag/include/asm/tlb.h b/arch/metag/include/asm/tlb.h
index 048282f1cc1f..fbe6ee91e8e7 100644
--- a/arch/metag/include/asm/tlb.h
+++ b/arch/metag/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_TLB_H
#define __ASM_METAG_TLB_H
diff --git a/arch/metag/include/asm/tlbflush.h b/arch/metag/include/asm/tlbflush.h
index 566acf918a64..f3e5d99a3891 100644
--- a/arch/metag/include/asm/tlbflush.h
+++ b/arch/metag/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_METAG_TLBFLUSH_H
#define __ASM_METAG_TLBFLUSH_H
diff --git a/arch/metag/include/asm/topology.h b/arch/metag/include/asm/topology.h
index 707c7f7b6bea..df0d9e6b7f12 100644
--- a/arch/metag/include/asm/topology.h
+++ b/arch/metag/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_TOPOLOGY_H
#define _ASM_METAG_TOPOLOGY_H
diff --git a/arch/metag/include/asm/uaccess.h b/arch/metag/include/asm/uaccess.h
index 47469e26641a..a5311eb36e32 100644
--- a/arch/metag/include/asm/uaccess.h
+++ b/arch/metag/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __METAG_UACCESS_H
#define __METAG_UACCESS_H
diff --git a/arch/metag/include/asm/user_gateway.h b/arch/metag/include/asm/user_gateway.h
index e404c09e3b74..cf2392b95a56 100644
--- a/arch/metag/include/asm/user_gateway.h
+++ b/arch/metag/include/asm/user_gateway.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2010 Imagination Technologies
*/
diff --git a/arch/metag/include/uapi/asm/byteorder.h b/arch/metag/include/uapi/asm/byteorder.h
index 9558416d578b..e5e03ff7e20d 100644
--- a/arch/metag/include/uapi/asm/byteorder.h
+++ b/arch/metag/include/uapi/asm/byteorder.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <linux/byteorder/little_endian.h>
diff --git a/arch/metag/include/uapi/asm/ech.h b/arch/metag/include/uapi/asm/ech.h
index ac94d1cf9be4..1e09f1ea4f7f 100644
--- a/arch/metag/include/uapi/asm/ech.h
+++ b/arch/metag/include/uapi/asm/ech.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_METAG_ECH_H
#define _UAPI_METAG_ECH_H
diff --git a/arch/metag/include/uapi/asm/ptrace.h b/arch/metag/include/uapi/asm/ptrace.h
index 45d97809d33e..8ad9daa841c3 100644
--- a/arch/metag/include/uapi/asm/ptrace.h
+++ b/arch/metag/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_METAG_PTRACE_H
#define _UAPI_METAG_PTRACE_H
diff --git a/arch/metag/include/uapi/asm/sigcontext.h b/arch/metag/include/uapi/asm/sigcontext.h
index ef79a910c1c4..ac7e1f28d584 100644
--- a/arch/metag/include/uapi/asm/sigcontext.h
+++ b/arch/metag/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_METAG_SIGCONTEXT_H
#define _ASM_METAG_SIGCONTEXT_H
diff --git a/arch/metag/include/uapi/asm/siginfo.h b/arch/metag/include/uapi/asm/siginfo.h
index b2e0c8b62aef..b54ef7186ca3 100644
--- a/arch/metag/include/uapi/asm/siginfo.h
+++ b/arch/metag/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _METAG_SIGINFO_H
#define _METAG_SIGINFO_H
diff --git a/arch/metag/include/uapi/asm/swab.h b/arch/metag/include/uapi/asm/swab.h
index 1076b3a6387a..30d696fcc237 100644
--- a/arch/metag/include/uapi/asm/swab.h
+++ b/arch/metag/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_METAG_SWAB_H
#define __ASM_METAG_SWAB_H
diff --git a/arch/metag/include/uapi/asm/unistd.h b/arch/metag/include/uapi/asm/unistd.h
index 459b6ec15848..9f72c4cfcfb5 100644
--- a/arch/metag/include/uapi/asm/unistd.h
+++ b/arch/metag/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2012 Imagination Technologies Ltd.
*
diff --git a/arch/metag/kernel/Makefile b/arch/metag/kernel/Makefile
index d7675f4a5df8..73441d8c0369 100644
--- a/arch/metag/kernel/Makefile
+++ b/arch/metag/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/Meta kernel.
#
diff --git a/arch/metag/kernel/asm-offsets.c b/arch/metag/kernel/asm-offsets.c
index bfc9205f9647..d9b348b99ff2 100644
--- a/arch/metag/kernel/asm-offsets.c
+++ b/arch/metag/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This program is used to generate definitions needed by
* assembly language modules.
diff --git a/arch/metag/kernel/cachepart.c b/arch/metag/kernel/cachepart.c
index db944c2e7d88..6e0f8a80cc96 100644
--- a/arch/metag/kernel/cachepart.c
+++ b/arch/metag/kernel/cachepart.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Meta cache partition manipulation.
*
diff --git a/arch/metag/kernel/core_reg.c b/arch/metag/kernel/core_reg.c
index 671cce8c34f2..df2833f2766f 100644
--- a/arch/metag/kernel/core_reg.c
+++ b/arch/metag/kernel/core_reg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for reading and writing Meta core internal registers.
*
diff --git a/arch/metag/kernel/head.S b/arch/metag/kernel/head.S
index 713f71d1bdfe..3ed27813413e 100644
--- a/arch/metag/kernel/head.S
+++ b/arch/metag/kernel/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
! Copyright 2005,2006,2007,2009 Imagination Technologies
#include <linux/init.h>
diff --git a/arch/metag/kernel/irq.c b/arch/metag/kernel/irq.c
index c9939604a38f..704cf17f8370 100644
--- a/arch/metag/kernel/irq.c
+++ b/arch/metag/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Linux/Meta general interrupt handling code
*
diff --git a/arch/metag/kernel/machines.c b/arch/metag/kernel/machines.c
index 1edf6ba193b1..e49790181051 100644
--- a/arch/metag/kernel/machines.c
+++ b/arch/metag/kernel/machines.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/metag/kernel/machines.c
*
diff --git a/arch/metag/kernel/metag_ksyms.c b/arch/metag/kernel/metag_ksyms.c
index 215c94ad63ac..e312386efb72 100644
--- a/arch/metag/kernel/metag_ksyms.c
+++ b/arch/metag/kernel/metag_ksyms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/types.h>
diff --git a/arch/metag/kernel/perf_callchain.c b/arch/metag/kernel/perf_callchain.c
index 3e8e048040df..d325ba101de0 100644
--- a/arch/metag/kernel/perf_callchain.c
+++ b/arch/metag/kernel/perf_callchain.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Perf callchain handling code.
*
diff --git a/arch/metag/kernel/process.c b/arch/metag/kernel/process.c
index c4606ce743d2..0909834c83a7 100644
--- a/arch/metag/kernel/process.c
+++ b/arch/metag/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2005,2006,2007,2008,2009,2010,2011 Imagination Technologies
*
diff --git a/arch/metag/kernel/signal.c b/arch/metag/kernel/signal.c
index 338925d808e6..e64e8b0a9363 100644
--- a/arch/metag/kernel/signal.c
+++ b/arch/metag/kernel/signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1991,1992 Linus Torvalds
* Copyright (C) 2005-2012 Imagination Technologies Ltd.
diff --git a/arch/metag/kernel/sys_metag.c b/arch/metag/kernel/sys_metag.c
index efe833a452f7..27d96499dd38 100644
--- a/arch/metag/kernel/sys_metag.c
+++ b/arch/metag/kernel/sys_metag.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file contains various random system calls that
* have a non-standard calling sequence on the Linux/Meta
diff --git a/arch/metag/kernel/tbiunexp.S b/arch/metag/kernel/tbiunexp.S
index 907bbe0b2e68..2664808086c7 100644
--- a/arch/metag/kernel/tbiunexp.S
+++ b/arch/metag/kernel/tbiunexp.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Pass a breakpoint through to Codescape */
#include <asm/tbx.h>
diff --git a/arch/metag/kernel/tcm.c b/arch/metag/kernel/tcm.c
index 5d102b31ce84..1d7b4e33b114 100644
--- a/arch/metag/kernel/tcm.c
+++ b/arch/metag/kernel/tcm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2010 Imagination Technologies Ltd.
*/
diff --git a/arch/metag/kernel/time.c b/arch/metag/kernel/time.c
index f1c8c53dace7..1e809e3b43d1 100644
--- a/arch/metag/kernel/time.c
+++ b/arch/metag/kernel/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2005-2013 Imagination Technologies Ltd.
*
diff --git a/arch/metag/kernel/user_gateway.S b/arch/metag/kernel/user_gateway.S
index 7167f3e8db6b..7833fb8f9ddd 100644
--- a/arch/metag/kernel/user_gateway.S
+++ b/arch/metag/kernel/user_gateway.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2010 Imagination Technologies Ltd.
*
diff --git a/arch/metag/kernel/vmlinux.lds.S b/arch/metag/kernel/vmlinux.lds.S
index e6c700eaf207..1efadae2ea8e 100644
--- a/arch/metag/kernel/vmlinux.lds.S
+++ b/arch/metag/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ld script to make Meta Linux kernel */
#include <asm/thread_info.h>
diff --git a/arch/metag/lib/Makefile b/arch/metag/lib/Makefile
index a41d24e270e6..3982850d692c 100644
--- a/arch/metag/lib/Makefile
+++ b/arch/metag/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Meta-specific library files.
#
diff --git a/arch/metag/lib/ashldi3.S b/arch/metag/lib/ashldi3.S
index 78d6974cffef..5055df9e5c7b 100644
--- a/arch/metag/lib/ashldi3.S
+++ b/arch/metag/lib/ashldi3.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2012 by Imagination Technologies Ltd.
!
! 64-bit arithmetic shift left routine.
diff --git a/arch/metag/lib/ashrdi3.S b/arch/metag/lib/ashrdi3.S
index 7cb7ed3bb1ad..0c838fd9da85 100644
--- a/arch/metag/lib/ashrdi3.S
+++ b/arch/metag/lib/ashrdi3.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2012 by Imagination Technologies Ltd.
!
! 64-bit arithmetic shift right routine.
diff --git a/arch/metag/lib/clear_page.S b/arch/metag/lib/clear_page.S
index 43144eebec55..87756a5d1367 100644
--- a/arch/metag/lib/clear_page.S
+++ b/arch/metag/lib/clear_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
! Copyright 2007,2008,2009 Imagination Technologies Ltd.
#include <asm/page.h>
diff --git a/arch/metag/lib/cmpdi2.S b/arch/metag/lib/cmpdi2.S
index 9c5c663c5aea..ab70bd94fd81 100644
--- a/arch/metag/lib/cmpdi2.S
+++ b/arch/metag/lib/cmpdi2.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2012 by Imagination Technologies Ltd.
!
! 64-bit signed compare routine.
diff --git a/arch/metag/lib/copy_page.S b/arch/metag/lib/copy_page.S
index 91f7d461239c..abbc75e94374 100644
--- a/arch/metag/lib/copy_page.S
+++ b/arch/metag/lib/copy_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
! Copyright 2007,2008 Imagination Technologies Ltd.
#include <asm/page.h>
diff --git a/arch/metag/lib/delay.c b/arch/metag/lib/delay.c
index 0b308f48b37a..6754012a261f 100644
--- a/arch/metag/lib/delay.c
+++ b/arch/metag/lib/delay.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Precise Delay Loops for Meta
*
diff --git a/arch/metag/lib/div64.S b/arch/metag/lib/div64.S
index 1cfc93498f70..55eece273a6b 100644
--- a/arch/metag/lib/div64.S
+++ b/arch/metag/lib/div64.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2012 Imagination Technologies Ltd.
!
! Signed/unsigned 64-bit division routines.
diff --git a/arch/metag/lib/divsi3.S b/arch/metag/lib/divsi3.S
index 11124cc93dee..9e31abefb160 100644
--- a/arch/metag/lib/divsi3.S
+++ b/arch/metag/lib/divsi3.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
! Imagination Technologies Ltd
!
diff --git a/arch/metag/lib/ip_fast_csum.S b/arch/metag/lib/ip_fast_csum.S
index 533b1e73deac..441f489d6a81 100644
--- a/arch/metag/lib/ip_fast_csum.S
+++ b/arch/metag/lib/ip_fast_csum.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.text
/*
diff --git a/arch/metag/lib/lshrdi3.S b/arch/metag/lib/lshrdi3.S
index 47f720283077..cf7ffc9b377f 100644
--- a/arch/metag/lib/lshrdi3.S
+++ b/arch/metag/lib/lshrdi3.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2012 by Imagination Technologies Ltd.
!
! 64-bit logical shift right routine.
diff --git a/arch/metag/lib/memcpy.S b/arch/metag/lib/memcpy.S
index 46b7a2b9479e..c2e8395f9456 100644
--- a/arch/metag/lib/memcpy.S
+++ b/arch/metag/lib/memcpy.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2008-2012 Imagination Technologies Ltd.
.text
diff --git a/arch/metag/lib/memmove.S b/arch/metag/lib/memmove.S
index 228ea04d7b39..934abda0e680 100644
--- a/arch/metag/lib/memmove.S
+++ b/arch/metag/lib/memmove.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2008-2012 Imagination Technologies Ltd.
.text
diff --git a/arch/metag/lib/memset.S b/arch/metag/lib/memset.S
index 721085bad1d2..6ee246d831c7 100644
--- a/arch/metag/lib/memset.S
+++ b/arch/metag/lib/memset.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2008-2012 Imagination Technologies Ltd.
.text
diff --git a/arch/metag/lib/modsi3.S b/arch/metag/lib/modsi3.S
index 210cfa856593..d65a2e5b3154 100644
--- a/arch/metag/lib/modsi3.S
+++ b/arch/metag/lib/modsi3.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
! Imagination Technologies Ltd
!
diff --git a/arch/metag/lib/muldi3.S b/arch/metag/lib/muldi3.S
index ee66ca8644d0..9d106790244d 100644
--- a/arch/metag/lib/muldi3.S
+++ b/arch/metag/lib/muldi3.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2012 by Imagination Technologies Ltd.
!
! 64-bit multiply routine.
diff --git a/arch/metag/lib/ucmpdi2.S b/arch/metag/lib/ucmpdi2.S
index 6f3347f7daeb..46f5686db8b1 100644
--- a/arch/metag/lib/ucmpdi2.S
+++ b/arch/metag/lib/ucmpdi2.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! Copyright (C) 2012 by Imagination Technologies Ltd.
!
! 64-bit unsigned compare routine.
diff --git a/arch/metag/lib/usercopy.c b/arch/metag/lib/usercopy.c
index c941abdb8f85..a48ef522c02d 100644
--- a/arch/metag/lib/usercopy.c
+++ b/arch/metag/lib/usercopy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* User address space access functions.
* The non-inlined parts of asm-metag/uaccess.h are here.
diff --git a/arch/metag/mm/Kconfig b/arch/metag/mm/Kconfig
index 03fb8f1555a1..9d4b2c67dcc1 100644
--- a/arch/metag/mm/Kconfig
+++ b/arch/metag/mm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Memory management options"
config PAGE_OFFSET
diff --git a/arch/metag/mm/Makefile b/arch/metag/mm/Makefile
index 994331164125..0c7c91ba9fb9 100644
--- a/arch/metag/mm/Makefile
+++ b/arch/metag/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux Meta-specific parts of the memory manager.
#
diff --git a/arch/metag/mm/extable.c b/arch/metag/mm/extable.c
index 3aa90b78b43d..9b92d3ad7f9c 100644
--- a/arch/metag/mm/extable.c
+++ b/arch/metag/mm/extable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/extable.h>
#include <linux/uaccess.h>
diff --git a/arch/metag/mm/fault.c b/arch/metag/mm/fault.c
index 5055477486b6..de54fe686080 100644
--- a/arch/metag/mm/fault.c
+++ b/arch/metag/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Meta page fault handling.
*
diff --git a/arch/metag/mm/highmem.c b/arch/metag/mm/highmem.c
index f19a87f2c1ec..83527fc7c8a7 100644
--- a/arch/metag/mm/highmem.c
+++ b/arch/metag/mm/highmem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/highmem.h>
#include <linux/sched.h>
diff --git a/arch/metag/mm/hugetlbpage.c b/arch/metag/mm/hugetlbpage.c
index 67fd53e2935a..012ee4c80dc7 100644
--- a/arch/metag/mm/hugetlbpage.c
+++ b/arch/metag/mm/hugetlbpage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/metag/mm/hugetlbpage.c
*
diff --git a/arch/metag/mm/init.c b/arch/metag/mm/init.c
index 188d4d9fbed4..0e2ca9058998 100644
--- a/arch/metag/mm/init.c
+++ b/arch/metag/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2005,2006,2007,2008,2009,2010 Imagination Technologies
*
diff --git a/arch/metag/mm/ioremap.c b/arch/metag/mm/ioremap.c
index a136a435fdaa..df2b59cb02eb 100644
--- a/arch/metag/mm/ioremap.c
+++ b/arch/metag/mm/ioremap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Re-map IO memory to kernel address space so that we can access it.
* Needed for memory-mapped I/O devices mapped outside our normal DRAM
diff --git a/arch/metag/mm/l2cache.c b/arch/metag/mm/l2cache.c
index c64ee615cf90..addffc58989c 100644
--- a/arch/metag/mm/l2cache.c
+++ b/arch/metag/mm/l2cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/delay.h>
diff --git a/arch/metag/mm/maccess.c b/arch/metag/mm/maccess.c
index eba2cfc935b1..c22755165df9 100644
--- a/arch/metag/mm/maccess.c
+++ b/arch/metag/mm/maccess.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* safe read and write memory routines callable while atomic
*
diff --git a/arch/metag/mm/mmu-meta1.c b/arch/metag/mm/mmu-meta1.c
index 62ebab90924d..53190b13dc54 100644
--- a/arch/metag/mm/mmu-meta1.c
+++ b/arch/metag/mm/mmu-meta1.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2005,2006,2007,2008,2009 Imagination Technologies
*
diff --git a/arch/metag/mm/mmu-meta2.c b/arch/metag/mm/mmu-meta2.c
index 81dcbb0bba34..8b668a69c980 100644
--- a/arch/metag/mm/mmu-meta2.c
+++ b/arch/metag/mm/mmu-meta2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2008,2009,2010,2011 Imagination Technologies Ltd.
*
diff --git a/arch/metag/oprofile/Makefile b/arch/metag/oprofile/Makefile
index c9639d4734d6..dc92a4a3d618 100644
--- a/arch/metag/oprofile/Makefile
+++ b/arch/metag/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
oprofile-core-y += buffer_sync.o
diff --git a/arch/metag/oprofile/backtrace.h b/arch/metag/oprofile/backtrace.h
index c0fcc4265abb..60adb862aa2c 100644
--- a/arch/metag/oprofile/backtrace.h
+++ b/arch/metag/oprofile/backtrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _METAG_OPROFILE_BACKTRACE_H
#define _METAG_OPROFILE_BACKTRACE_H
diff --git a/arch/metag/tbx/Makefile b/arch/metag/tbx/Makefile
index e994239e518c..98bc5453cf24 100644
--- a/arch/metag/tbx/Makefile
+++ b/arch/metag/tbx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for TBX library files..
#
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
index 9d26abdf0dc1..4f798aa671dd 100644
--- a/arch/microblaze/Kconfig
+++ b/arch/microblaze/Kconfig
@@ -39,7 +39,7 @@ config MICROBLAZE
# Endianness selection
choice
prompt "Endianness selection"
- default CPU_BIG_ENDIAN
+ default CPU_LITTLE_ENDIAN
help
microblaze architectures can be configured for either little or
big endian formats. Be sure to select the appropriate mode.
diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile
index 1f6c486826a0..830ee7d42fa0 100644
--- a/arch/microblaze/Makefile
+++ b/arch/microblaze/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
KBUILD_DEFCONFIG := mmu_defconfig
ifeq ($(CONFIG_MMU),y)
diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
index 91d2068da1b9..47f94cc383b6 100644
--- a/arch/microblaze/boot/Makefile
+++ b/arch/microblaze/boot/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/microblaze/boot/Makefile
#
diff --git a/arch/microblaze/boot/dts/Makefile b/arch/microblaze/boot/dts/Makefile
index a3d2e42c3c97..1f77913d404d 100644
--- a/arch/microblaze/boot/dts/Makefile
+++ b/arch/microblaze/boot/dts/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
obj-y += linked_dtb.o
diff --git a/arch/microblaze/include/asm/asm-compat.h b/arch/microblaze/include/asm/asm-compat.h
index e7bc9dc11b57..c05259ce2d2c 100644
--- a/arch/microblaze/include/asm/asm-compat.h
+++ b/arch/microblaze/include/asm/asm-compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MICROBLAZE_ASM_COMPAT_H
#define _ASM_MICROBLAZE_ASM_COMPAT_H
diff --git a/arch/microblaze/include/asm/atomic.h b/arch/microblaze/include/asm/atomic.h
index 42ac382a09da..41e9aff23a62 100644
--- a/arch/microblaze/include/asm/atomic.h
+++ b/arch/microblaze/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MICROBLAZE_ATOMIC_H
#define _ASM_MICROBLAZE_ATOMIC_H
diff --git a/arch/microblaze/include/asm/cmpxchg.h b/arch/microblaze/include/asm/cmpxchg.h
index 538afc0ab9f3..596300c74509 100644
--- a/arch/microblaze/include/asm/cmpxchg.h
+++ b/arch/microblaze/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MICROBLAZE_CMPXCHG_H
#define _ASM_MICROBLAZE_CMPXCHG_H
diff --git a/arch/microblaze/include/asm/ftrace.h b/arch/microblaze/include/asm/ftrace.h
index da0144f40d99..5db7f4489f05 100644
--- a/arch/microblaze/include/asm/ftrace.h
+++ b/arch/microblaze/include/asm/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MICROBLAZE_FTRACE
#define _ASM_MICROBLAZE_FTRACE
diff --git a/arch/microblaze/include/asm/futex.h b/arch/microblaze/include/asm/futex.h
index a9dad9e5e132..2572077b04ea 100644
--- a/arch/microblaze/include/asm/futex.h
+++ b/arch/microblaze/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MICROBLAZE_FUTEX_H
#define _ASM_MICROBLAZE_FUTEX_H
diff --git a/arch/microblaze/include/asm/hash.h b/arch/microblaze/include/asm/hash.h
index 753513ae8cb0..ef4741a40583 100644
--- a/arch/microblaze/include/asm/hash.h
+++ b/arch/microblaze/include/asm/hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_HASH_H
#define _ASM_HASH_H
diff --git a/arch/microblaze/include/asm/highmem.h b/arch/microblaze/include/asm/highmem.h
index 67925ef18cfa..332c78e15198 100644
--- a/arch/microblaze/include/asm/highmem.h
+++ b/arch/microblaze/include/asm/highmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* highmem.h: virtual kernel memory mappings for high memory
*
diff --git a/arch/microblaze/include/asm/kgdb.h b/arch/microblaze/include/asm/kgdb.h
index ad27acb2b15f..8dc5ebb07fd5 100644
--- a/arch/microblaze/include/asm/kgdb.h
+++ b/arch/microblaze/include/asm/kgdb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __KERNEL__
#ifndef __MICROBLAZE_KGDB_H__
#define __MICROBLAZE_KGDB_H__
diff --git a/arch/microblaze/include/asm/mmu_context.h b/arch/microblaze/include/asm/mmu_context.h
index 0ccd8c402cd9..f74f9da07fdc 100644
--- a/arch/microblaze/include/asm/mmu_context.h
+++ b/arch/microblaze/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_MMU
# include <asm/mmu_context_mm.h>
#else
diff --git a/arch/microblaze/include/asm/seccomp.h b/arch/microblaze/include/asm/seccomp.h
index 204618a2ce84..95cdcabee28c 100644
--- a/arch/microblaze/include/asm/seccomp.h
+++ b/arch/microblaze/include/asm/seccomp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MICROBLAZE_SECCOMP_H
#define _ASM_MICROBLAZE_SECCOMP_H
diff --git a/arch/microblaze/include/asm/syscall.h b/arch/microblaze/include/asm/syscall.h
index 04a5bece8168..220decd605a4 100644
--- a/arch/microblaze/include/asm/syscall.h
+++ b/arch/microblaze/include/asm/syscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MICROBLAZE_SYSCALL_H
#define __ASM_MICROBLAZE_SYSCALL_H
diff --git a/arch/microblaze/include/uapi/asm/Kbuild b/arch/microblaze/include/uapi/asm/Kbuild
index e77a596f3f1e..06609ca36115 100644
--- a/arch/microblaze/include/uapi/asm/Kbuild
+++ b/arch/microblaze/include/uapi/asm/Kbuild
@@ -7,6 +7,7 @@ generic-y += fcntl.h
generic-y += ioctl.h
generic-y += ioctls.h
generic-y += ipcbuf.h
+generic-y += kvm_para.h
generic-y += mman.h
generic-y += msgbuf.h
generic-y += param.h
diff --git a/arch/microblaze/include/uapi/asm/auxvec.h b/arch/microblaze/include/uapi/asm/auxvec.h
index 8b137891791f..93dd07bd0af7 100644
--- a/arch/microblaze/include/uapi/asm/auxvec.h
+++ b/arch/microblaze/include/uapi/asm/auxvec.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
diff --git a/arch/microblaze/include/uapi/asm/byteorder.h b/arch/microblaze/include/uapi/asm/byteorder.h
index 31902762a426..763660169456 100644
--- a/arch/microblaze/include/uapi/asm/byteorder.h
+++ b/arch/microblaze/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_MICROBLAZE_BYTEORDER_H
#define _ASM_MICROBLAZE_BYTEORDER_H
diff --git a/arch/microblaze/include/uapi/asm/elf.h b/arch/microblaze/include/uapi/asm/elf.h
index e9bcdb6e0086..6b656de29f00 100644
--- a/arch/microblaze/include/uapi/asm/elf.h
+++ b/arch/microblaze/include/uapi/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
* Copyright (C) 2008-2009 PetaLogix
diff --git a/arch/microblaze/include/uapi/asm/posix_types.h b/arch/microblaze/include/uapi/asm/posix_types.h
index 0e15039673e3..f3249da69121 100644
--- a/arch/microblaze/include/uapi/asm/posix_types.h
+++ b/arch/microblaze/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_MICROBLAZE_POSIX_TYPES_H
#define _ASM_MICROBLAZE_POSIX_TYPES_H
diff --git a/arch/microblaze/include/uapi/asm/ptrace.h b/arch/microblaze/include/uapi/asm/ptrace.h
index d31238a5f946..46dd94cb7802 100644
--- a/arch/microblaze/include/uapi/asm/ptrace.h
+++ b/arch/microblaze/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2006 Atmark Techno, Inc.
*
diff --git a/arch/microblaze/include/uapi/asm/setup.h b/arch/microblaze/include/uapi/asm/setup.h
index 76bc2acee6af..6831794e6f2c 100644
--- a/arch/microblaze/include/uapi/asm/setup.h
+++ b/arch/microblaze/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
* Copyright (C) 2007-2009 PetaLogix
diff --git a/arch/microblaze/include/uapi/asm/sigcontext.h b/arch/microblaze/include/uapi/asm/sigcontext.h
index 55873c80c917..47eb2e2111bb 100644
--- a/arch/microblaze/include/uapi/asm/sigcontext.h
+++ b/arch/microblaze/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2006 Atmark Techno, Inc.
*
diff --git a/arch/microblaze/include/uapi/asm/unistd.h b/arch/microblaze/include/uapi/asm/unistd.h
index a88b3c11cc20..eb156f914793 100644
--- a/arch/microblaze/include/uapi/asm/unistd.h
+++ b/arch/microblaze/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
* Copyright (C) 2006 Atmark Techno, Inc.
diff --git a/arch/microblaze/kernel/Makefile b/arch/microblaze/kernel/Makefile
index e098381af928..0da76fa1ab17 100644
--- a/arch/microblaze/kernel/Makefile
+++ b/arch/microblaze/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile
#
diff --git a/arch/microblaze/kernel/cpu/Makefile b/arch/microblaze/kernel/cpu/Makefile
index fceed4edea41..059afc75a976 100644
--- a/arch/microblaze/kernel/cpu/Makefile
+++ b/arch/microblaze/kernel/cpu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Build the appropriate CPU version support
#
diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c
index e45ada8fb006..e63f154be964 100644
--- a/arch/microblaze/kernel/dma.c
+++ b/arch/microblaze/kernel/dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2009-2010 PetaLogix
* Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corporation
@@ -165,7 +166,7 @@ int dma_direct_mmap_coherent(struct device *dev, struct vm_area_struct *vma,
unsigned long attrs)
{
#ifdef CONFIG_MMU
- unsigned long user_count = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
+ unsigned long user_count = vma_pages(vma);
unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
unsigned long off = vma->vm_pgoff;
unsigned long pfn;
diff --git a/arch/microblaze/kernel/syscall_table.S b/arch/microblaze/kernel/syscall_table.S
index c48ff4ad2070..56bcf313121f 100644
--- a/arch/microblaze/kernel/syscall_table.S
+++ b/arch/microblaze/kernel/syscall_table.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
ENTRY(sys_call_table)
.long sys_restart_syscall /* 0 - old "setup()" system call,
* used for restarting */
diff --git a/arch/microblaze/lib/Makefile b/arch/microblaze/lib/Makefile
index 70c7ae6a3fb5..9fe7ab688ca5 100644
--- a/arch/microblaze/lib/Makefile
+++ b/arch/microblaze/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile
#
diff --git a/arch/microblaze/lib/ashldi3.c b/arch/microblaze/lib/ashldi3.c
index 1af904cd972d..4d0f9481bdb7 100644
--- a/arch/microblaze/lib/ashldi3.c
+++ b/arch/microblaze/lib/ashldi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/microblaze/lib/ashrdi3.c b/arch/microblaze/lib/ashrdi3.c
index 32c334c05d04..268098a962a1 100644
--- a/arch/microblaze/lib/ashrdi3.c
+++ b/arch/microblaze/lib/ashrdi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/microblaze/lib/cmpdi2.c b/arch/microblaze/lib/cmpdi2.c
index 67abc9ac1bd4..b3f89638518c 100644
--- a/arch/microblaze/lib/cmpdi2.c
+++ b/arch/microblaze/lib/cmpdi2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/microblaze/lib/divsi3.S b/arch/microblaze/lib/divsi3.S
index 595b02d6e86b..919fb69f8589 100644
--- a/arch/microblaze/lib/divsi3.S
+++ b/arch/microblaze/lib/divsi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
/*
diff --git a/arch/microblaze/lib/libgcc.h b/arch/microblaze/lib/libgcc.h
index ab077ef7e14b..a909366c202e 100644
--- a/arch/microblaze/lib/libgcc.h
+++ b/arch/microblaze/lib/libgcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LIBGCC_H
#define __ASM_LIBGCC_H
diff --git a/arch/microblaze/lib/lshrdi3.c b/arch/microblaze/lib/lshrdi3.c
index adcb253f11c8..00eb8268227a 100644
--- a/arch/microblaze/lib/lshrdi3.c
+++ b/arch/microblaze/lib/lshrdi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/microblaze/lib/modsi3.S b/arch/microblaze/lib/modsi3.S
index 84e0bee6e8c7..64154865c1c5 100644
--- a/arch/microblaze/lib/modsi3.S
+++ b/arch/microblaze/lib/modsi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
/*
diff --git a/arch/microblaze/lib/muldi3.c b/arch/microblaze/lib/muldi3.c
index a3f9a03acdcd..8e6bc17e2cd3 100644
--- a/arch/microblaze/lib/muldi3.c
+++ b/arch/microblaze/lib/muldi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/microblaze/lib/mulsi3.S b/arch/microblaze/lib/mulsi3.S
index 90bd7b93afe6..d6703a4d91f6 100644
--- a/arch/microblaze/lib/mulsi3.S
+++ b/arch/microblaze/lib/mulsi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
/*
diff --git a/arch/microblaze/lib/ucmpdi2.c b/arch/microblaze/lib/ucmpdi2.c
index d05f1585121c..c60e068ff8bb 100644
--- a/arch/microblaze/lib/ucmpdi2.c
+++ b/arch/microblaze/lib/ucmpdi2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/microblaze/lib/udivsi3.S b/arch/microblaze/lib/udivsi3.S
index 64cf57e4bb85..acdc667235c4 100644
--- a/arch/microblaze/lib/udivsi3.S
+++ b/arch/microblaze/lib/udivsi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
/*
diff --git a/arch/microblaze/lib/umodsi3.S b/arch/microblaze/lib/umodsi3.S
index 17d16bafae58..f4b814e88ce3 100644
--- a/arch/microblaze/lib/umodsi3.S
+++ b/arch/microblaze/lib/umodsi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
/*
diff --git a/arch/microblaze/mm/highmem.c b/arch/microblaze/mm/highmem.c
index ed4454c5ce35..d7569f77fa15 100644
--- a/arch/microblaze/mm/highmem.c
+++ b/arch/microblaze/mm/highmem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* highmem.c: virtual kernel memory mappings for high memory
*
diff --git a/arch/microblaze/oprofile/Makefile b/arch/microblaze/oprofile/Makefile
index 0d0348c8af97..107f2f55d995 100644
--- a/arch/microblaze/oprofile/Makefile
+++ b/arch/microblaze/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# arch/microblaze/oprofile/Makefile
#
diff --git a/arch/microblaze/pci/iomap.c b/arch/microblaze/pci/iomap.c
index 94149f5e6ebe..bde74af4c1cd 100644
--- a/arch/microblaze/pci/iomap.c
+++ b/arch/microblaze/pci/iomap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ppc64 "iomap" interface implementation.
*
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 48d91d5be4e9..5d3284d20678 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config MIPS
bool
default y
@@ -1627,14 +1628,6 @@ config CPU_R5500
NEC VR5500 and VR5500A series processors implement 64-bit MIPS IV
instruction set.
-config CPU_R6000
- bool "R6000"
- depends on SYS_HAS_CPU_R6000
- select CPU_SUPPORTS_32BIT_KERNEL
- help
- MIPS Technologies R6000 and R6000A series processors. Note these
- processors are extremely rare and the support for them is incomplete.
-
config CPU_NEVADA
bool "RM52xx"
depends on SYS_HAS_CPU_NEVADA
@@ -1950,9 +1943,6 @@ config SYS_HAS_CPU_R5432
config SYS_HAS_CPU_R5500
bool
-config SYS_HAS_CPU_R6000
- bool
-
config SYS_HAS_CPU_NEVADA
bool
@@ -2180,7 +2170,7 @@ config PAGE_SIZE_32KB
config PAGE_SIZE_64KB
bool "64kB"
- depends on !CPU_R3000 && !CPU_TX39XX && !CPU_R6000
+ depends on !CPU_R3000 && !CPU_TX39XX
help
Using 64kB page size will result in higher performance kernel at
the price of higher memory consumption. This option is available on
@@ -2248,11 +2238,11 @@ config CPU_HAS_PREFETCH
config CPU_GENERIC_DUMP_TLB
bool
- default y if !(CPU_R3000 || CPU_R6000 || CPU_R8000 || CPU_TX39XX)
+ default y if !(CPU_R3000 || CPU_R8000 || CPU_TX39XX)
config CPU_R4K_FPU
bool
- default y if !(CPU_R3000 || CPU_R6000 || CPU_TX39XX || CPU_CAVIUM_OCTEON)
+ default y if !(CPU_R3000 || CPU_TX39XX)
config CPU_R4K_CACHE_TLB
bool
@@ -2260,6 +2250,7 @@ config CPU_R4K_CACHE_TLB
config MIPS_MT_SMP
bool "MIPS MT SMP support (1 TC on each available VPE)"
+ default y
depends on SYS_SUPPORTS_MULTITHREADING && !CPU_MIPSR6 && !CPU_MICROMIPS
select CPU_MIPSR2_IRQ_VI
select CPU_MIPSR2_IRQ_EI
@@ -2376,7 +2367,6 @@ config MIPS_CPS
bool "MIPS Coherent Processing System support"
depends on SYS_SUPPORTS_MIPS_CPS
select MIPS_CM
- select MIPS_CPC
select MIPS_CPS_PM if HOTPLUG_CPU
select SMP
select SYNC_R4K if (CEVT_R4K || CSRC_R4K)
@@ -2393,11 +2383,11 @@ config MIPS_CPS
config MIPS_CPS_PM
depends on MIPS_CPS
- select MIPS_CPC
bool
config MIPS_CM
bool
+ select MIPS_CPC
config MIPS_CPC
bool
diff --git a/arch/mips/Kconfig.debug b/arch/mips/Kconfig.debug
index 42a97c59200f..464af5e025d6 100644
--- a/arch/mips/Kconfig.debug
+++ b/arch/mips/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
config TRACE_IRQFLAGS_SUPPORT
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index bc2708c9ada4..a96d97a806c9 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -151,7 +151,6 @@ cflags-y += -fno-stack-check
#
cflags-$(CONFIG_CPU_R3000) += -march=r3000
cflags-$(CONFIG_CPU_TX39XX) += -march=r3900
-cflags-$(CONFIG_CPU_R6000) += -march=r6000 -Wa,--trap
cflags-$(CONFIG_CPU_R4300) += -march=r4300 -Wa,--trap
cflags-$(CONFIG_CPU_VR41XX) += -march=r4100 -Wa,--trap
cflags-$(CONFIG_CPU_R4X00) += -march=r4600 -Wa,--trap
@@ -291,7 +290,8 @@ KBUILD_CPPFLAGS += -DDATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0)
bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y) \
VMLINUX_ENTRY_ADDRESS=$(entry-y) \
- PLATFORM="$(platform-y)"
+ PLATFORM="$(platform-y)" \
+ ITS_INPUTS="$(its-y)"
ifdef CONFIG_32BIT
bootvars-y += ADDR_BITS=32
endif
@@ -299,6 +299,10 @@ ifdef CONFIG_64BIT
bootvars-y += ADDR_BITS=64
endif
+# This is required to get dwarf unwinding tables into .debug_frame
+# instead of .eh_frame so we don't discard them.
+KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
+
LDFLAGS += -m $(ld-emul)
ifdef CONFIG_MIPS
@@ -500,8 +504,14 @@ $(eval $(call gen_generic_defconfigs,micro32,r2,eb el))
.PHONY: $(generic_defconfigs)
$(generic_defconfigs):
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
- -m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/generic_defconfig $^ \
- $(foreach board,$(BOARDS),$(generic_config_dir)/board-$(board).config)
+ -m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/generic_defconfig $^ | \
+ grep -Ev '^#'
+ $(Q)cp $(KCONFIG_CONFIG) $(objtree)/.config.$@
+ $(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig \
+ KCONFIG_CONFIG=$(objtree)/.config.$@ >/dev/null
+ $(Q)$(CONFIG_SHELL) $(srctree)/arch/$(ARCH)/tools/generic-board-config.sh \
+ $(srctree) $(objtree) $(objtree)/.config.$@ $(KCONFIG_CONFIG) \
+ "$(origin BOARDS)" $(BOARDS)
$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
#
@@ -510,6 +520,19 @@ $(generic_defconfigs):
$(generic_config_dir)/%.config: ;
#
+# Prevent direct use of generic_defconfig, which is intended to be used as the
+# basis of the various ISA-specific targets generated above.
+#
+.PHONY: generic_defconfig
+generic_defconfig:
+ $(Q)echo "generic_defconfig is not intended for direct use, but should instead be"
+ $(Q)echo "used via an ISA-specific target from the following list:"
+ $(Q)echo
+ $(Q)for cfg in $(generic_defconfigs); do echo " $${cfg}"; done
+ $(Q)echo
+ $(Q)false
+
+#
# Legacy defconfig compatibility - these targets used to be real defconfigs but
# now that the boards have been converted to use the generic kernel they are
# wrappers around the generic rules above.
diff --git a/arch/mips/Makefile.postlink b/arch/mips/Makefile.postlink
index 4b7f5a648c79..4eea4188cb20 100644
--- a/arch/mips/Makefile.postlink
+++ b/arch/mips/Makefile.postlink
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# ===========================================================================
# Post-link MIPS pass
# ===========================================================================
diff --git a/arch/mips/alchemy/Kconfig b/arch/mips/alchemy/Kconfig
index 88b4d6a792c1..7d73f7f4202b 100644
--- a/arch/mips/alchemy/Kconfig
+++ b/arch/mips/alchemy/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# au1000-style gpio and interrupt controllers
config ALCHEMY_GPIOINT_AU1000
bool
diff --git a/arch/mips/alchemy/common/clock.c b/arch/mips/alchemy/common/clock.c
index 7ba7ea0a22f8..a83c7b7e2eb1 100644
--- a/arch/mips/alchemy/common/clock.c
+++ b/arch/mips/alchemy/common/clock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Alchemy clocks.
*
diff --git a/arch/mips/alchemy/devboards/db1200.c b/arch/mips/alchemy/devboards/db1200.c
index 83831002c832..da7663770425 100644
--- a/arch/mips/alchemy/devboards/db1200.c
+++ b/arch/mips/alchemy/devboards/db1200.c
@@ -344,28 +344,32 @@ static struct platform_device db1200_ide_dev = {
/* SD carddetects: they're supposed to be edge-triggered, but ack
* doesn't seem to work (CPLD Rev 2). Instead, the screaming one
- * is disabled and its counterpart enabled. The 500ms timeout is
- * because the carddetect isn't debounced in hardware.
+ * is disabled and its counterpart enabled. The 200ms timeout is
+ * because the carddetect usually triggers twice, after debounce.
*/
static irqreturn_t db1200_mmc_cd(int irq, void *ptr)
{
- void(*mmc_cd)(struct mmc_host *, unsigned long);
+ disable_irq_nosync(irq);
+ return IRQ_WAKE_THREAD;
+}
- if (irq == DB1200_SD0_INSERT_INT) {
- disable_irq_nosync(DB1200_SD0_INSERT_INT);
- enable_irq(DB1200_SD0_EJECT_INT);
- } else {
- disable_irq_nosync(DB1200_SD0_EJECT_INT);
- enable_irq(DB1200_SD0_INSERT_INT);
- }
+static irqreturn_t db1200_mmc_cdfn(int irq, void *ptr)
+{
+ void (*mmc_cd)(struct mmc_host *, unsigned long);
/* link against CONFIG_MMC=m */
mmc_cd = symbol_get(mmc_detect_change);
if (mmc_cd) {
- mmc_cd(ptr, msecs_to_jiffies(500));
+ mmc_cd(ptr, msecs_to_jiffies(200));
symbol_put(mmc_detect_change);
}
+ msleep(100); /* debounce */
+ if (irq == DB1200_SD0_INSERT_INT)
+ enable_irq(DB1200_SD0_EJECT_INT);
+ else
+ enable_irq(DB1200_SD0_INSERT_INT);
+
return IRQ_HANDLED;
}
@@ -374,13 +378,13 @@ static int db1200_mmc_cd_setup(void *mmc_host, int en)
int ret;
if (en) {
- ret = request_irq(DB1200_SD0_INSERT_INT, db1200_mmc_cd,
- 0, "sd_insert", mmc_host);
+ ret = request_threaded_irq(DB1200_SD0_INSERT_INT, db1200_mmc_cd,
+ db1200_mmc_cdfn, 0, "sd_insert", mmc_host);
if (ret)
goto out;
- ret = request_irq(DB1200_SD0_EJECT_INT, db1200_mmc_cd,
- 0, "sd_eject", mmc_host);
+ ret = request_threaded_irq(DB1200_SD0_EJECT_INT, db1200_mmc_cd,
+ db1200_mmc_cdfn, 0, "sd_eject", mmc_host);
if (ret) {
free_irq(DB1200_SD0_INSERT_INT, mmc_host);
goto out;
@@ -436,23 +440,27 @@ static struct led_classdev db1200_mmc_led = {
static irqreturn_t pb1200_mmc1_cd(int irq, void *ptr)
{
- void(*mmc_cd)(struct mmc_host *, unsigned long);
+ disable_irq_nosync(irq);
+ return IRQ_WAKE_THREAD;
+}
- if (irq == PB1200_SD1_INSERT_INT) {
- disable_irq_nosync(PB1200_SD1_INSERT_INT);
- enable_irq(PB1200_SD1_EJECT_INT);
- } else {
- disable_irq_nosync(PB1200_SD1_EJECT_INT);
- enable_irq(PB1200_SD1_INSERT_INT);
- }
+static irqreturn_t pb1200_mmc1_cdfn(int irq, void *ptr)
+{
+ void (*mmc_cd)(struct mmc_host *, unsigned long);
/* link against CONFIG_MMC=m */
mmc_cd = symbol_get(mmc_detect_change);
if (mmc_cd) {
- mmc_cd(ptr, msecs_to_jiffies(500));
+ mmc_cd(ptr, msecs_to_jiffies(200));
symbol_put(mmc_detect_change);
}
+ msleep(100); /* debounce */
+ if (irq == PB1200_SD1_INSERT_INT)
+ enable_irq(PB1200_SD1_EJECT_INT);
+ else
+ enable_irq(PB1200_SD1_INSERT_INT);
+
return IRQ_HANDLED;
}
@@ -461,13 +469,13 @@ static int pb1200_mmc1_cd_setup(void *mmc_host, int en)
int ret;
if (en) {
- ret = request_irq(PB1200_SD1_INSERT_INT, pb1200_mmc1_cd, 0,
- "sd1_insert", mmc_host);
+ ret = request_threaded_irq(PB1200_SD1_INSERT_INT, pb1200_mmc1_cd,
+ pb1200_mmc1_cdfn, 0, "sd1_insert", mmc_host);
if (ret)
goto out;
- ret = request_irq(PB1200_SD1_EJECT_INT, pb1200_mmc1_cd, 0,
- "sd1_eject", mmc_host);
+ ret = request_threaded_irq(PB1200_SD1_EJECT_INT, pb1200_mmc1_cd,
+ pb1200_mmc1_cdfn, 0, "sd1_eject", mmc_host);
if (ret) {
free_irq(PB1200_SD1_INSERT_INT, mmc_host);
goto out;
diff --git a/arch/mips/alchemy/devboards/db1300.c b/arch/mips/alchemy/devboards/db1300.c
index 3e7fbdbdb3c4..efb318e03e0a 100644
--- a/arch/mips/alchemy/devboards/db1300.c
+++ b/arch/mips/alchemy/devboards/db1300.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DBAu1300 init and platform device setup.
*
@@ -450,24 +451,27 @@ static struct platform_device db1300_ide_dev = {
static irqreturn_t db1300_mmc_cd(int irq, void *ptr)
{
- void(*mmc_cd)(struct mmc_host *, unsigned long);
+ disable_irq_nosync(irq);
+ return IRQ_WAKE_THREAD;
+}
- /* disable the one currently screaming. No other way to shut it up */
- if (irq == DB1300_SD1_INSERT_INT) {
- disable_irq_nosync(DB1300_SD1_INSERT_INT);
- enable_irq(DB1300_SD1_EJECT_INT);
- } else {
- disable_irq_nosync(DB1300_SD1_EJECT_INT);
- enable_irq(DB1300_SD1_INSERT_INT);
- }
+static irqreturn_t db1300_mmc_cdfn(int irq, void *ptr)
+{
+ void (*mmc_cd)(struct mmc_host *, unsigned long);
/* link against CONFIG_MMC=m. We can only be called once MMC core has
* initialized the controller, so symbol_get() should always succeed.
*/
mmc_cd = symbol_get(mmc_detect_change);
- mmc_cd(ptr, msecs_to_jiffies(500));
+ mmc_cd(ptr, msecs_to_jiffies(200));
symbol_put(mmc_detect_change);
+ msleep(100); /* debounce */
+ if (irq == DB1300_SD1_INSERT_INT)
+ enable_irq(DB1300_SD1_EJECT_INT);
+ else
+ enable_irq(DB1300_SD1_INSERT_INT);
+
return IRQ_HANDLED;
}
@@ -487,13 +491,13 @@ static int db1300_mmc_cd_setup(void *mmc_host, int en)
int ret;
if (en) {
- ret = request_irq(DB1300_SD1_INSERT_INT, db1300_mmc_cd, 0,
- "sd_insert", mmc_host);
+ ret = request_threaded_irq(DB1300_SD1_INSERT_INT, db1300_mmc_cd,
+ db1300_mmc_cdfn, 0, "sd_insert", mmc_host);
if (ret)
goto out;
- ret = request_irq(DB1300_SD1_EJECT_INT, db1300_mmc_cd, 0,
- "sd_eject", mmc_host);
+ ret = request_threaded_irq(DB1300_SD1_EJECT_INT, db1300_mmc_cd,
+ db1300_mmc_cdfn, 0, "sd_eject", mmc_host);
if (ret) {
free_irq(DB1300_SD1_INSERT_INT, mmc_host);
goto out;
diff --git a/arch/mips/alchemy/devboards/db1550.c b/arch/mips/alchemy/devboards/db1550.c
index 421bd5793f7e..7d3dfaa10231 100644
--- a/arch/mips/alchemy/devboards/db1550.c
+++ b/arch/mips/alchemy/devboards/db1550.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Alchemy Db1550/Pb1550 board support
*
diff --git a/arch/mips/alchemy/devboards/db1xxx.c b/arch/mips/alchemy/devboards/db1xxx.c
index 2d47f951121a..e6d25aad8350 100644
--- a/arch/mips/alchemy/devboards/db1xxx.c
+++ b/arch/mips/alchemy/devboards/db1xxx.c
@@ -1,7 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Alchemy DB/PB1xxx board support.
*/
+#include <asm/prom.h>
#include <asm/mach-au1x00/au1000.h>
#include <asm/mach-db1x00/bcsr.h>
@@ -97,6 +99,7 @@ arch_initcall(db1xxx_arch_init);
static int __init db1xxx_dev_init(void)
{
+ mips_set_machine_name(board_type_str());
switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
case BCSR_WHOAMI_DB1000:
case BCSR_WHOAMI_DB1500:
diff --git a/arch/mips/alchemy/devboards/platform.c b/arch/mips/alchemy/devboards/platform.c
index be139a0198b0..4640edab207c 100644
--- a/arch/mips/alchemy/devboards/platform.c
+++ b/arch/mips/alchemy/devboards/platform.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* devoard misc stuff.
*/
diff --git a/arch/mips/alchemy/devboards/platform.h b/arch/mips/alchemy/devboards/platform.h
index 5ac055d2cda9..23d98fc09a43 100644
--- a/arch/mips/alchemy/devboards/platform.h
+++ b/arch/mips/alchemy/devboards/platform.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DEVBOARD_PLATFORM_H_
#define _DEVBOARD_PLATFORM_H_
diff --git a/arch/mips/alchemy/devboards/pm.c b/arch/mips/alchemy/devboards/pm.c
index 93024dc6b314..73c77814687a 100644
--- a/arch/mips/alchemy/devboards/pm.c
+++ b/arch/mips/alchemy/devboards/pm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Alchemy Development Board example suspend userspace interface.
*
diff --git a/arch/mips/ar7/Makefile b/arch/mips/ar7/Makefile
index 7435e44b3964..cd51c6c6e686 100644
--- a/arch/mips/ar7/Makefile
+++ b/arch/mips/ar7/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y := \
prom.o \
diff --git a/arch/mips/ar7/clock.c b/arch/mips/ar7/clock.c
index dda422a0f36c..0137656107a9 100644
--- a/arch/mips/ar7/clock.c
+++ b/arch/mips/ar7/clock.c
@@ -430,6 +430,9 @@ EXPORT_SYMBOL(clk_disable);
unsigned long clk_get_rate(struct clk *clk)
{
+ if (!clk)
+ return 0;
+
return clk->rate;
}
EXPORT_SYMBOL(clk_get_rate);
diff --git a/arch/mips/ath25/Kconfig b/arch/mips/ath25/Kconfig
index fc19dd57e42d..7070b4bcd01d 100644
--- a/arch/mips/ath25/Kconfig
+++ b/arch/mips/ath25/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config SOC_AR5312
bool "Atheros AR5312/AR2312+ SoC support"
depends on ATH25
diff --git a/arch/mips/ath25/ar2315.h b/arch/mips/ath25/ar2315.h
index 877afe63eed5..fccc64f6db6c 100644
--- a/arch/mips/ath25/ar2315.h
+++ b/arch/mips/ath25/ar2315.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __AR2315_H
#define __AR2315_H
diff --git a/arch/mips/ath25/ar5312.h b/arch/mips/ath25/ar5312.h
index 470abb0052bd..67518a59ac3c 100644
--- a/arch/mips/ath25/ar5312.h
+++ b/arch/mips/ath25/ar5312.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __AR5312_H
#define __AR5312_H
diff --git a/arch/mips/ath25/devices.c b/arch/mips/ath25/devices.c
index 7a64567d1ac3..e1156347da53 100644
--- a/arch/mips/ath25/devices.c
+++ b/arch/mips/ath25/devices.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/serial_8250.h>
diff --git a/arch/mips/ath25/devices.h b/arch/mips/ath25/devices.h
index 04d414115356..44cf690634b8 100644
--- a/arch/mips/ath25/devices.h
+++ b/arch/mips/ath25/devices.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ATH25_DEVICES_H
#define __ATH25_DEVICES_H
diff --git a/arch/mips/ath79/Kconfig b/arch/mips/ath79/Kconfig
index dfc60209dc63..9547cf1ea38d 100644
--- a/arch/mips/ath79/Kconfig
+++ b/arch/mips/ath79/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if ATH79
menu "Atheros AR71XX/AR724X/AR913X machine selection"
diff --git a/arch/mips/ath79/clock.c b/arch/mips/ath79/clock.c
index fa845953f736..6b1000b6a6a6 100644
--- a/arch/mips/ath79/clock.c
+++ b/arch/mips/ath79/clock.c
@@ -487,17 +487,16 @@ static void __init ath79_clocks_init_dt_ng(struct device_node *np)
{
struct clk *ref_clk;
void __iomem *pll_base;
- const char *dnfn = of_node_full_name(np);
ref_clk = of_clk_get(np, 0);
if (IS_ERR(ref_clk)) {
- pr_err("%s: of_clk_get failed\n", dnfn);
+ pr_err("%pOF: of_clk_get failed\n", np);
goto err;
}
pll_base = of_iomap(np, 0);
if (!pll_base) {
- pr_err("%s: can't map pll registers\n", dnfn);
+ pr_err("%pOF: can't map pll registers\n", np);
goto err_clk;
}
@@ -506,12 +505,12 @@ static void __init ath79_clocks_init_dt_ng(struct device_node *np)
else if (of_device_is_compatible(np, "qca,ar9330-pll"))
ar9330_clk_init(ref_clk, pll_base);
else {
- pr_err("%s: could not find any appropriate clk_init()\n", dnfn);
+ pr_err("%pOF: could not find any appropriate clk_init()\n", np);
goto err_iounmap;
}
if (of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data)) {
- pr_err("%s: could not register clk provider\n", dnfn);
+ pr_err("%pOF: could not register clk provider\n", np);
goto err_iounmap;
}
diff --git a/arch/mips/ath79/pci.c b/arch/mips/ath79/pci.c
index 730c0b03060d..b816cb4a25ff 100644
--- a/arch/mips/ath79/pci.c
+++ b/arch/mips/ath79/pci.c
@@ -22,10 +22,10 @@
#include "pci.h"
static int (*ath79_pci_plat_dev_init)(struct pci_dev *dev);
-static const struct ath79_pci_irq *ath79_pci_irq_map __initdata;
-static unsigned ath79_pci_nr_irqs __initdata;
+static const struct ath79_pci_irq *ath79_pci_irq_map;
+static unsigned ath79_pci_nr_irqs;
-static const struct ath79_pci_irq ar71xx_pci_irq_map[] __initconst = {
+static const struct ath79_pci_irq ar71xx_pci_irq_map[] = {
{
.slot = 17,
.pin = 1,
@@ -41,7 +41,7 @@ static const struct ath79_pci_irq ar71xx_pci_irq_map[] __initconst = {
}
};
-static const struct ath79_pci_irq ar724x_pci_irq_map[] __initconst = {
+static const struct ath79_pci_irq ar724x_pci_irq_map[] = {
{
.slot = 0,
.pin = 1,
@@ -49,7 +49,7 @@ static const struct ath79_pci_irq ar724x_pci_irq_map[] __initconst = {
}
};
-static const struct ath79_pci_irq qca955x_pci_irq_map[] __initconst = {
+static const struct ath79_pci_irq qca955x_pci_irq_map[] = {
{
.bus = 0,
.slot = 0,
@@ -64,7 +64,7 @@ static const struct ath79_pci_irq qca955x_pci_irq_map[] __initconst = {
},
};
-int __init pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin)
+int pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin)
{
int irq = -1;
int i;
diff --git a/arch/mips/bcm47xx/Kconfig b/arch/mips/bcm47xx/Kconfig
index e970fd9cf769..29471038d817 100644
--- a/arch/mips/bcm47xx/Kconfig
+++ b/arch/mips/bcm47xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if BCM47XX
config BCM47XX_SSB
diff --git a/arch/mips/bcm47xx/bcm47xx_private.h b/arch/mips/bcm47xx/bcm47xx_private.h
index 0367ac7286fe..bb96743bb92e 100644
--- a/arch/mips/bcm47xx/bcm47xx_private.h
+++ b/arch/mips/bcm47xx/bcm47xx_private.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCM47XX_PRIVATE_H_
#define LINUX_BCM47XX_PRIVATE_H_
diff --git a/arch/mips/bcm47xx/board.c b/arch/mips/bcm47xx/board.c
index 8cbe60cc51d4..edfaef0d73a4 100644
--- a/arch/mips/bcm47xx/board.c
+++ b/arch/mips/bcm47xx/board.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/errno.h>
#include <linux/export.h>
#include <linux/string.h>
diff --git a/arch/mips/bcm47xx/buttons.c b/arch/mips/bcm47xx/buttons.c
index 8a760d801895..88a8fb2bbc71 100644
--- a/arch/mips/bcm47xx/buttons.c
+++ b/arch/mips/bcm47xx/buttons.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "bcm47xx_private.h"
#include <linux/input.h>
diff --git a/arch/mips/bcm47xx/leds.c b/arch/mips/bcm47xx/leds.c
index a35f1d5cde9f..d4f2407a42c6 100644
--- a/arch/mips/bcm47xx/leds.c
+++ b/arch/mips/bcm47xx/leds.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "bcm47xx_private.h"
#include <linux/leds.h>
diff --git a/arch/mips/bcm47xx/workarounds.c b/arch/mips/bcm47xx/workarounds.c
index e81ce4623070..1a8a07e7a563 100644
--- a/arch/mips/bcm47xx/workarounds.c
+++ b/arch/mips/bcm47xx/workarounds.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "bcm47xx_private.h"
#include <linux/gpio.h>
diff --git a/arch/mips/bcm63xx/Kconfig b/arch/mips/bcm63xx/Kconfig
index a057fdf111c6..96ed735a4f4a 100644
--- a/arch/mips/bcm63xx/Kconfig
+++ b/arch/mips/bcm63xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "CPU support"
depends on BCM63XX
diff --git a/arch/mips/bcm63xx/Makefile b/arch/mips/bcm63xx/Makefile
index 9019f54aee69..c69f297fc1df 100644
--- a/arch/mips/bcm63xx/Makefile
+++ b/arch/mips/bcm63xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o reset.o \
setup.o timer.o dev-dsp.o dev-enet.o dev-flash.o \
dev-pcmcia.o dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o \
diff --git a/arch/mips/bcm63xx/boards/Kconfig b/arch/mips/bcm63xx/boards/Kconfig
index c6aed33d893e..6ff0a7481081 100644
--- a/arch/mips/bcm63xx/boards/Kconfig
+++ b/arch/mips/bcm63xx/boards/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "Board support"
depends on BCM63XX
diff --git a/arch/mips/bcm63xx/clk.c b/arch/mips/bcm63xx/clk.c
index 73626040e4d6..19577f771c1f 100644
--- a/arch/mips/bcm63xx/clk.c
+++ b/arch/mips/bcm63xx/clk.c
@@ -339,6 +339,9 @@ EXPORT_SYMBOL(clk_disable);
unsigned long clk_get_rate(struct clk *clk)
{
+ if (!clk)
+ return 0;
+
return clk->rate;
}
diff --git a/arch/mips/bmips/Kconfig b/arch/mips/bmips/Kconfig
index 2d60f25403de..63dfc695087b 100644
--- a/arch/mips/bmips/Kconfig
+++ b/arch/mips/bmips/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if BMIPS_GENERIC
choice
diff --git a/arch/mips/boot/Makefile b/arch/mips/boot/Makefile
index 145b5ce8eb7e..1bd5c4f00d19 100644
--- a/arch/mips/boot/Makefile
+++ b/arch/mips/boot/Makefile
@@ -118,6 +118,12 @@ ifeq ($(ADDR_BITS),64)
itb_addr_cells = 2
endif
+quiet_cmd_its_cat = CAT $@
+ cmd_its_cat = cat $^ >$@
+
+$(obj)/vmlinux.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS))
+ $(call if_changed,its_cat)
+
quiet_cmd_cpp_its_S = ITS $@
cmd_cpp_its_S = $(CPP) $(cpp_flags) -P -C -o $@ $< \
-DKERNEL_NAME="\"Linux $(KERNELRELEASE)\"" \
@@ -128,19 +134,19 @@ quiet_cmd_cpp_its_S = ITS $@
-DADDR_BITS=$(ADDR_BITS) \
-DADDR_CELLS=$(itb_addr_cells)
-$(obj)/vmlinux.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
+$(obj)/vmlinux.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
$(call if_changed_dep,cpp_its_S,none,vmlinux.bin)
-$(obj)/vmlinux.gz.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
+$(obj)/vmlinux.gz.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
$(call if_changed_dep,cpp_its_S,gzip,vmlinux.bin.gz)
-$(obj)/vmlinux.bz2.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
+$(obj)/vmlinux.bz2.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
$(call if_changed_dep,cpp_its_S,bzip2,vmlinux.bin.bz2)
-$(obj)/vmlinux.lzma.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
+$(obj)/vmlinux.lzma.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
$(call if_changed_dep,cpp_its_S,lzma,vmlinux.bin.lzma)
-$(obj)/vmlinux.lzo.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
+$(obj)/vmlinux.lzo.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
$(call if_changed_dep,cpp_its_S,lzo,vmlinux.bin.lzo)
quiet_cmd_itb-image = ITB $@
diff --git a/arch/mips/boot/compressed/dbg.c b/arch/mips/boot/compressed/dbg.c
index 06c6a5bd175d..f6728a8fd1c3 100644
--- a/arch/mips/boot/compressed/dbg.c
+++ b/arch/mips/boot/compressed/dbg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* MIPS-specific debug support for pre-boot environment
*
diff --git a/arch/mips/boot/compressed/string.c b/arch/mips/boot/compressed/string.c
index 9de9885acd0d..43beecc3587c 100644
--- a/arch/mips/boot/compressed/string.c
+++ b/arch/mips/boot/compressed/string.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/mips/boot/compressed/string.c
*
diff --git a/arch/mips/boot/compressed/uart-16550.c b/arch/mips/boot/compressed/uart-16550.c
index f7521142deda..b3043c08f769 100644
--- a/arch/mips/boot/compressed/uart-16550.c
+++ b/arch/mips/boot/compressed/uart-16550.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* 16550 compatible uart based serial debug support for zboot
*/
diff --git a/arch/mips/boot/compressed/uart-alchemy.c b/arch/mips/boot/compressed/uart-alchemy.c
index 4bee55b93f6a..8ec63011e7dc 100644
--- a/arch/mips/boot/compressed/uart-alchemy.c
+++ b/arch/mips/boot/compressed/uart-alchemy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/mach-au1x00/au1000.h>
void putc(char c)
diff --git a/arch/mips/boot/compressed/uart-prom.c b/arch/mips/boot/compressed/uart-prom.c
index 1c3d51bc90bb..d6f0fee0a151 100644
--- a/arch/mips/boot/compressed/uart-prom.c
+++ b/arch/mips/boot/compressed/uart-prom.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
extern void prom_putchar(unsigned char ch);
diff --git a/arch/mips/boot/dts/Makefile b/arch/mips/boot/dts/Makefile
index b9db49203e0c..e0a4e939f843 100644
--- a/arch/mips/boot/dts/Makefile
+++ b/arch/mips/boot/dts/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dts-dirs += brcm
dts-dirs += cavium-octeon
dts-dirs += img
@@ -5,6 +6,7 @@ dts-dirs += ingenic
dts-dirs += lantiq
dts-dirs += mti
dts-dirs += netlogic
+dts-dirs += ni
dts-dirs += pic32
dts-dirs += qca
dts-dirs += ralink
diff --git a/arch/mips/boot/dts/brcm/Makefile b/arch/mips/boot/dts/brcm/Makefile
index d61bc2aebf69..9e09cc4556b3 100644
--- a/arch/mips/boot/dts/brcm/Makefile
+++ b/arch/mips/boot/dts/brcm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_DT_BCM93384WVG) += bcm93384wvg.dtb
dtb-$(CONFIG_DT_BCM93384WVG_VIPER) += bcm93384wvg_viper.dtb
dtb-$(CONFIG_DT_BCM96368MVWG) += bcm96368mvwg.dtb
diff --git a/arch/mips/boot/dts/brcm/bcm3368-netgear-cvg834g.dts b/arch/mips/boot/dts/brcm/bcm3368-netgear-cvg834g.dts
index 2f2e80fdcde8..ed6023a91763 100644
--- a/arch/mips/boot/dts/brcm/bcm3368-netgear-cvg834g.dts
+++ b/arch/mips/boot/dts/brcm/bcm3368-netgear-cvg834g.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm3368.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm3368.dtsi b/arch/mips/boot/dts/brcm/bcm3368.dtsi
index bee855cb8073..277cde02b744 100644
--- a/arch/mips/boot/dts/brcm/bcm3368.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm3368.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm3384_viper.dtsi b/arch/mips/boot/dts/brcm/bcm3384_viper.dtsi
index aa406b43c65f..eb2a9c6ed604 100644
--- a/arch/mips/boot/dts/brcm/bcm3384_viper.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm3384_viper.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm3384_zephyr.dtsi b/arch/mips/boot/dts/brcm/bcm3384_zephyr.dtsi
index a7bd8564e9f6..d7ad769a42fc 100644
--- a/arch/mips/boot/dts/brcm/bcm3384_zephyr.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm3384_zephyr.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm63268-comtrend-vr-3032u.dts b/arch/mips/boot/dts/brcm/bcm63268-comtrend-vr-3032u.dts
index 430d35ca33d5..2bc0d8401ad6 100644
--- a/arch/mips/boot/dts/brcm/bcm63268-comtrend-vr-3032u.dts
+++ b/arch/mips/boot/dts/brcm/bcm63268-comtrend-vr-3032u.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm63268.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm63268.dtsi b/arch/mips/boot/dts/brcm/bcm63268.dtsi
index 7e6bf2cc0287..3b09f44e67fb 100644
--- a/arch/mips/boot/dts/brcm/bcm63268.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm63268.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm6328.dtsi b/arch/mips/boot/dts/brcm/bcm6328.dtsi
index 5633b9d90f55..644486fe4159 100644
--- a/arch/mips/boot/dts/brcm/bcm6328.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm6328.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm6358-neufbox4-sercomm.dts b/arch/mips/boot/dts/brcm/bcm6358-neufbox4-sercomm.dts
index 702eae2a22a0..5e62190aa3d5 100644
--- a/arch/mips/boot/dts/brcm/bcm6358-neufbox4-sercomm.dts
+++ b/arch/mips/boot/dts/brcm/bcm6358-neufbox4-sercomm.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm6358.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm6358.dtsi b/arch/mips/boot/dts/brcm/bcm6358.dtsi
index f9d8d392162b..682df7fb7069 100644
--- a/arch/mips/boot/dts/brcm/bcm6358.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm6358.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm6362-neufbox6-sercomm.dts b/arch/mips/boot/dts/brcm/bcm6362-neufbox6-sercomm.dts
index 480f2a5bf1da..3e83bee5b91e 100644
--- a/arch/mips/boot/dts/brcm/bcm6362-neufbox6-sercomm.dts
+++ b/arch/mips/boot/dts/brcm/bcm6362-neufbox6-sercomm.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm6362.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm6362.dtsi b/arch/mips/boot/dts/brcm/bcm6362.dtsi
index c507da594f2f..a82a5e5de672 100644
--- a/arch/mips/boot/dts/brcm/bcm6362.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm6362.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm6368.dtsi b/arch/mips/boot/dts/brcm/bcm6368.dtsi
index d0e3a70b32e2..7a72f59ae457 100644
--- a/arch/mips/boot/dts/brcm/bcm6368.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm6368.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm7125.dtsi b/arch/mips/boot/dts/brcm/bcm7125.dtsi
index 79f838ed96c5..2f9ef565e5d0 100644
--- a/arch/mips/boot/dts/brcm/bcm7125.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm7125.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm7346.dtsi b/arch/mips/boot/dts/brcm/bcm7346.dtsi
index da7bfa45a57d..02e426fe6013 100644
--- a/arch/mips/boot/dts/brcm/bcm7346.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm7346.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm7358.dtsi b/arch/mips/boot/dts/brcm/bcm7358.dtsi
index 9b05760453f0..1089d6ebc841 100644
--- a/arch/mips/boot/dts/brcm/bcm7358.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm7358.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm7360.dtsi b/arch/mips/boot/dts/brcm/bcm7360.dtsi
index 57b613c6acf2..4b87ebec407a 100644
--- a/arch/mips/boot/dts/brcm/bcm7360.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm7360.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm7362.dtsi b/arch/mips/boot/dts/brcm/bcm7362.dtsi
index c2a2843aaa9a..ca657df34b6d 100644
--- a/arch/mips/boot/dts/brcm/bcm7362.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm7362.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm7420.dtsi b/arch/mips/boot/dts/brcm/bcm7420.dtsi
index 532fc8a15796..d262e11bc3f9 100644
--- a/arch/mips/boot/dts/brcm/bcm7420.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm7420.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm7425.dtsi b/arch/mips/boot/dts/brcm/bcm7425.dtsi
index f56fb25f2e6b..e4fb9b6e6dce 100644
--- a/arch/mips/boot/dts/brcm/bcm7425.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm7425.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm7435.dtsi b/arch/mips/boot/dts/brcm/bcm7435.dtsi
index f2cead2eae5c..1484e8990e52 100644
--- a/arch/mips/boot/dts/brcm/bcm7435.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm7435.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/brcm/bcm93384wvg.dts b/arch/mips/boot/dts/brcm/bcm93384wvg.dts
index d1e44a17d41a..601e4d9293ab 100644
--- a/arch/mips/boot/dts/brcm/bcm93384wvg.dts
+++ b/arch/mips/boot/dts/brcm/bcm93384wvg.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm3384_zephyr.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm93384wvg_viper.dts b/arch/mips/boot/dts/brcm/bcm93384wvg_viper.dts
index 1ecb2696aca8..938a8e66128c 100644
--- a/arch/mips/boot/dts/brcm/bcm93384wvg_viper.dts
+++ b/arch/mips/boot/dts/brcm/bcm93384wvg_viper.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm3384_viper.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm96368mvwg.dts b/arch/mips/boot/dts/brcm/bcm96368mvwg.dts
index 8c71c6845730..6d772c394e41 100644
--- a/arch/mips/boot/dts/brcm/bcm96368mvwg.dts
+++ b/arch/mips/boot/dts/brcm/bcm96368mvwg.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm6368.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm97125cbmb.dts b/arch/mips/boot/dts/brcm/bcm97125cbmb.dts
index d72bc423ceaa..7f59ea2ded6c 100644
--- a/arch/mips/boot/dts/brcm/bcm97125cbmb.dts
+++ b/arch/mips/boot/dts/brcm/bcm97125cbmb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm7125.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm97346dbsmb.dts b/arch/mips/boot/dts/brcm/bcm97346dbsmb.dts
index ea52d7b5772f..9e7d5228f2b7 100644
--- a/arch/mips/boot/dts/brcm/bcm97346dbsmb.dts
+++ b/arch/mips/boot/dts/brcm/bcm97346dbsmb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm7346.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm97358svmb.dts b/arch/mips/boot/dts/brcm/bcm97358svmb.dts
index 71357fdc19af..708207a0002d 100644
--- a/arch/mips/boot/dts/brcm/bcm97358svmb.dts
+++ b/arch/mips/boot/dts/brcm/bcm97358svmb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm7358.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm97360svmb.dts b/arch/mips/boot/dts/brcm/bcm97360svmb.dts
index e2fed406c6ee..73c6dc9c8c6d 100644
--- a/arch/mips/boot/dts/brcm/bcm97360svmb.dts
+++ b/arch/mips/boot/dts/brcm/bcm97360svmb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm7360.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm97362svmb.dts b/arch/mips/boot/dts/brcm/bcm97362svmb.dts
index 78bffdf11872..37bacfdcf9d9 100644
--- a/arch/mips/boot/dts/brcm/bcm97362svmb.dts
+++ b/arch/mips/boot/dts/brcm/bcm97362svmb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm7362.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm97420c.dts b/arch/mips/boot/dts/brcm/bcm97420c.dts
index d62b448a152d..f96241e94874 100644
--- a/arch/mips/boot/dts/brcm/bcm97420c.dts
+++ b/arch/mips/boot/dts/brcm/bcm97420c.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm7420.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm97425svmb.dts b/arch/mips/boot/dts/brcm/bcm97425svmb.dts
index 73aa006bd9ce..ce762c7b2e54 100644
--- a/arch/mips/boot/dts/brcm/bcm97425svmb.dts
+++ b/arch/mips/boot/dts/brcm/bcm97425svmb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm7425.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm97435svmb.dts b/arch/mips/boot/dts/brcm/bcm97435svmb.dts
index 0a915f3feab6..d4dd31a543fd 100644
--- a/arch/mips/boot/dts/brcm/bcm97435svmb.dts
+++ b/arch/mips/boot/dts/brcm/bcm97435svmb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm7435.dtsi"
diff --git a/arch/mips/boot/dts/brcm/bcm97xxx-nand-cs1-bch24.dtsi b/arch/mips/boot/dts/brcm/bcm97xxx-nand-cs1-bch24.dtsi
index 3c24f97de922..96c30d857be4 100644
--- a/arch/mips/boot/dts/brcm/bcm97xxx-nand-cs1-bch24.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm97xxx-nand-cs1-bch24.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
&nand {
nandcs@1 {
compatible = "brcm,nandcs";
diff --git a/arch/mips/boot/dts/brcm/bcm97xxx-nand-cs1-bch4.dtsi b/arch/mips/boot/dts/brcm/bcm97xxx-nand-cs1-bch4.dtsi
index cb531816ef4c..7b5afefbbfab 100644
--- a/arch/mips/boot/dts/brcm/bcm97xxx-nand-cs1-bch4.dtsi
+++ b/arch/mips/boot/dts/brcm/bcm97xxx-nand-cs1-bch4.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
&nand {
nandcs@1 {
compatible = "brcm,nandcs";
diff --git a/arch/mips/boot/dts/brcm/bcm9ejtagprb.dts b/arch/mips/boot/dts/brcm/bcm9ejtagprb.dts
index 1da4608680aa..8d58c1971b30 100644
--- a/arch/mips/boot/dts/brcm/bcm9ejtagprb.dts
+++ b/arch/mips/boot/dts/brcm/bcm9ejtagprb.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "bcm6328.dtsi"
diff --git a/arch/mips/boot/dts/cavium-octeon/Makefile b/arch/mips/boot/dts/cavium-octeon/Makefile
index 5b99c40a058f..35300e091573 100644
--- a/arch/mips/boot/dts/cavium-octeon/Makefile
+++ b/arch/mips/boot/dts/cavium-octeon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_CAVIUM_OCTEON_SOC) += octeon_3xxx.dtb octeon_68xx.dtb
obj-y += $(patsubst %.dtb, %.dtb.o, $(dtb-y))
diff --git a/arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dts b/arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dts
index ca6b4467bcd3..0fa3dd1819ff 100644
--- a/arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dts
+++ b/arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* OCTEON 3XXX, 5XXX, 63XX device tree skeleton.
*
diff --git a/arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dtsi b/arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dtsi
index 5302148e05a3..3c296623d870 100644
--- a/arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dtsi
+++ b/arch/mips/boot/dts/cavium-octeon/octeon_3xxx.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* OCTEON 3XXX DTS common parts. */
/dts-v1/;
diff --git a/arch/mips/boot/dts/cavium-octeon/octeon_68xx.dts b/arch/mips/boot/dts/cavium-octeon/octeon_68xx.dts
index 79b46fcb0a11..3d0acbb2e15f 100644
--- a/arch/mips/boot/dts/cavium-octeon/octeon_68xx.dts
+++ b/arch/mips/boot/dts/cavium-octeon/octeon_68xx.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/*
* OCTEON 68XX device tree skeleton.
diff --git a/arch/mips/boot/dts/img/Makefile b/arch/mips/boot/dts/img/Makefile
index 3d70958d0f5a..139bcd887b86 100644
--- a/arch/mips/boot/dts/img/Makefile
+++ b/arch/mips/boot/dts/img/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_FIT_IMAGE_FDT_BOSTON) += boston.dtb
dtb-$(CONFIG_MACH_PISTACHIO) += pistachio_marduk.dtb
diff --git a/arch/mips/boot/dts/img/boston.dts b/arch/mips/boot/dts/img/boston.dts
index 53bfa29a7093..2cd49b60e030 100644
--- a/arch/mips/boot/dts/img/boston.dts
+++ b/arch/mips/boot/dts/img/boston.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/clock/boston-clock.h>
diff --git a/arch/mips/boot/dts/ingenic/Makefile b/arch/mips/boot/dts/ingenic/Makefile
index f2b864f07850..7798262570da 100644
--- a/arch/mips/boot/dts/ingenic/Makefile
+++ b/arch/mips/boot/dts/ingenic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_JZ4740_QI_LB60) += qi_lb60.dtb
dtb-$(CONFIG_JZ4780_CI20) += ci20.dtb
diff --git a/arch/mips/boot/dts/ingenic/ci20.dts b/arch/mips/boot/dts/ingenic/ci20.dts
index fd138d9978c1..a4cc52214dbd 100644
--- a/arch/mips/boot/dts/ingenic/ci20.dts
+++ b/arch/mips/boot/dts/ingenic/ci20.dts
@@ -1,6 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "jz4780.dtsi"
+#include <dt-bindings/gpio/gpio.h>
/ {
compatible = "img,ci20", "ingenic,jz4780";
@@ -21,6 +23,13 @@
reg = <0x0 0x10000000
0x30000000 0x30000000>;
};
+
+ eth0_power: fixedregulator@0 {
+ compatible = "regulator-fixed";
+ regulator-name = "eth0_power";
+ gpio = <&gpb 25 GPIO_ACTIVE_LOW>;
+ enable-active-high;
+ };
};
&ext {
@@ -123,6 +132,29 @@
};
};
};
+
+ dm9000@6 {
+ compatible = "davicom,dm9000";
+ davicom,no-eeprom;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pins_nemc_cs6>;
+
+ reg = <6 0 1 /* addr */
+ 6 2 1>; /* data */
+
+ ingenic,nemc-tAS = <15>;
+ ingenic,nemc-tAH = <10>;
+ ingenic,nemc-tBP = <20>;
+ ingenic,nemc-tAW = <50>;
+ ingenic,nemc-tSTRV = <100>;
+
+ reset-gpios = <&gpf 12 GPIO_ACTIVE_HIGH>;
+ vcc-supply = <&eth0_power>;
+
+ interrupt-parent = <&gpe>;
+ interrupts = <19 4>;
+ };
};
&bch {
@@ -165,4 +197,10 @@
groups = "nemc-cs1";
bias-disable;
};
+
+ pins_nemc_cs6: nemc-cs6 {
+ function = "nemc-cs6";
+ groups = "nemc-cs6";
+ bias-disable;
+ };
};
diff --git a/arch/mips/boot/dts/ingenic/jz4740.dtsi b/arch/mips/boot/dts/ingenic/jz4740.dtsi
index 2ca7ce7481f1..cd5185bb90ae 100644
--- a/arch/mips/boot/dts/ingenic/jz4740.dtsi
+++ b/arch/mips/boot/dts/ingenic/jz4740.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/jz4740-cgu.h>
/ {
diff --git a/arch/mips/boot/dts/ingenic/jz4780.dtsi b/arch/mips/boot/dts/ingenic/jz4780.dtsi
index 4853ef67b3ab..ff3298f29ec4 100644
--- a/arch/mips/boot/dts/ingenic/jz4780.dtsi
+++ b/arch/mips/boot/dts/ingenic/jz4780.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/jz4780-cgu.h>
/ {
@@ -44,6 +45,17 @@
#clock-cells = <1>;
};
+ rtc_dev: rtc@10003000 {
+ compatible = "ingenic,jz4780-rtc";
+ reg = <0x10003000 0x4c>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <32>;
+
+ clocks = <&cgu JZ4780_CLK_RTCLK>;
+ clock-names = "rtc";
+ };
+
pinctrl: pin-controller@10010000 {
compatible = "ingenic,jz4780-pinctrl";
reg = <0x10010000 0x600>;
diff --git a/arch/mips/boot/dts/ingenic/qi_lb60.dts b/arch/mips/boot/dts/ingenic/qi_lb60.dts
index b715ee2ac2ee..76aaf8982554 100644
--- a/arch/mips/boot/dts/ingenic/qi_lb60.dts
+++ b/arch/mips/boot/dts/ingenic/qi_lb60.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "jz4740.dtsi"
diff --git a/arch/mips/boot/dts/lantiq/Makefile b/arch/mips/boot/dts/lantiq/Makefile
index 0906c62141b9..0c50e3246a63 100644
--- a/arch/mips/boot/dts/lantiq/Makefile
+++ b/arch/mips/boot/dts/lantiq/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_DT_EASY50712) += easy50712.dtb
obj-y += $(patsubst %.dtb, %.dtb.o, $(dtb-y))
diff --git a/arch/mips/boot/dts/lantiq/danube.dtsi b/arch/mips/boot/dts/lantiq/danube.dtsi
index d4c59e003708..2dd950181f8a 100644
--- a/arch/mips/boot/dts/lantiq/danube.dtsi
+++ b/arch/mips/boot/dts/lantiq/danube.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/lantiq/easy50712.dts b/arch/mips/boot/dts/lantiq/easy50712.dts
index b59962585dde..c37a33962f28 100644
--- a/arch/mips/boot/dts/lantiq/easy50712.dts
+++ b/arch/mips/boot/dts/lantiq/easy50712.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "danube.dtsi"
diff --git a/arch/mips/boot/dts/mti/Makefile b/arch/mips/boot/dts/mti/Makefile
index fcabd69b7030..5ee06f73c348 100644
--- a/arch/mips/boot/dts/mti/Makefile
+++ b/arch/mips/boot/dts/mti/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_MIPS_MALTA) += malta.dtb
dtb-$(CONFIG_LEGACY_BOARD_SEAD3) += sead3.dtb
diff --git a/arch/mips/boot/dts/mti/malta.dts b/arch/mips/boot/dts/mti/malta.dts
index ffe3a1508e72..9944e716eac8 100644
--- a/arch/mips/boot/dts/mti/malta.dts
+++ b/arch/mips/boot/dts/mti/malta.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/interrupt-controller/irq.h>
diff --git a/arch/mips/boot/dts/mti/sead3.dts b/arch/mips/boot/dts/mti/sead3.dts
index 4f8bc83c2960..192c26ff1d3d 100644
--- a/arch/mips/boot/dts/mti/sead3.dts
+++ b/arch/mips/boot/dts/mti/sead3.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/memreserve/ 0x00000000 0x00001000; // reserved
diff --git a/arch/mips/boot/dts/netlogic/Makefile b/arch/mips/boot/dts/netlogic/Makefile
index 9868057140b5..1cb2fdbd8949 100644
--- a/arch/mips/boot/dts/netlogic/Makefile
+++ b/arch/mips/boot/dts/netlogic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_DT_XLP_EVP) += xlp_evp.dtb
dtb-$(CONFIG_DT_XLP_SVP) += xlp_svp.dtb
dtb-$(CONFIG_DT_XLP_FVP) += xlp_fvp.dtb
diff --git a/arch/mips/boot/dts/netlogic/xlp_evp.dts b/arch/mips/boot/dts/netlogic/xlp_evp.dts
index ec16ec2d8d02..e63e55926e04 100644
--- a/arch/mips/boot/dts/netlogic/xlp_evp.dts
+++ b/arch/mips/boot/dts/netlogic/xlp_evp.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* XLP8XX Device Tree Source for EVP boards
*/
diff --git a/arch/mips/boot/dts/netlogic/xlp_fvp.dts b/arch/mips/boot/dts/netlogic/xlp_fvp.dts
index 4bcebe641d8e..d05abf13fb7d 100644
--- a/arch/mips/boot/dts/netlogic/xlp_fvp.dts
+++ b/arch/mips/boot/dts/netlogic/xlp_fvp.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* XLP2XX Device Tree Source for FVP boards
*/
diff --git a/arch/mips/boot/dts/netlogic/xlp_gvp.dts b/arch/mips/boot/dts/netlogic/xlp_gvp.dts
index b3ccb82ad7e4..d47de4851786 100644
--- a/arch/mips/boot/dts/netlogic/xlp_gvp.dts
+++ b/arch/mips/boot/dts/netlogic/xlp_gvp.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* XLP9XX Device Tree Source for GVP boards
*/
diff --git a/arch/mips/boot/dts/netlogic/xlp_rvp.dts b/arch/mips/boot/dts/netlogic/xlp_rvp.dts
index 3783639a318a..aa0faee194ec 100644
--- a/arch/mips/boot/dts/netlogic/xlp_rvp.dts
+++ b/arch/mips/boot/dts/netlogic/xlp_rvp.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* XLP5XX Device Tree Source for RVP boards
*/
diff --git a/arch/mips/boot/dts/netlogic/xlp_svp.dts b/arch/mips/boot/dts/netlogic/xlp_svp.dts
index 44d6640c1441..3bb0b2e08e4a 100644
--- a/arch/mips/boot/dts/netlogic/xlp_svp.dts
+++ b/arch/mips/boot/dts/netlogic/xlp_svp.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* XLP3XX Device Tree Source for SVP boards
*/
diff --git a/arch/mips/boot/dts/ni/169445.dts b/arch/mips/boot/dts/ni/169445.dts
new file mode 100644
index 000000000000..5389ef46c480
--- /dev/null
+++ b/arch/mips/boot/dts/ni/169445.dts
@@ -0,0 +1,100 @@
+/dts-v1/;
+
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "ni,169445";
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ cpu@0 {
+ device_type = "cpu";
+ compatible = "mti,mips14KEc";
+ clocks = <&baseclk>;
+ reg = <0>;
+ };
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x10000000>;
+ };
+
+ baseclk: baseclock {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <50000000>;
+ };
+
+ cpu_intc: interrupt-controller {
+ #address-cells = <0>;
+ compatible = "mti,cpu-interrupt-controller";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ ahb@1f300000 {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0x1f300000 0x80FFF>;
+
+ gpio1: gpio@10 {
+ compatible = "ni,169445-nand-gpio";
+ reg = <0x10 0x4>;
+ reg-names = "dat";
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio2: gpio@14 {
+ compatible = "ni,169445-nand-gpio";
+ reg = <0x14 0x4>;
+ reg-names = "dat";
+ gpio-controller;
+ #gpio-cells = <2>;
+ no-output;
+ };
+
+ nand@0 {
+ compatible = "gpio-control-nand";
+ nand-on-flash-bbt;
+ nand-ecc-mode = "soft_bch";
+ nand-ecc-step-size = <512>;
+ nand-ecc-strength = <4>;
+ reg = <0x0 4>;
+ gpios = <&gpio2 0 0>, /* rdy */
+ <&gpio1 1 0>, /* nce */
+ <&gpio1 2 0>, /* ale */
+ <&gpio1 3 0>, /* cle */
+ <&gpio1 4 0>; /* nwp */
+ };
+
+ serial@80000 {
+ compatible = "ns16550a";
+ reg = <0x80000 0x1000>;
+ interrupt-parent = <&cpu_intc>;
+ interrupts = <6>;
+ clocks = <&baseclk>;
+ reg-shift = <0>;
+ };
+
+ ethernet@40000 {
+ compatible = "snps,dwmac-4.10a";
+ interrupt-parent = <&cpu_intc>;
+ interrupts = <5>;
+ interrupt-names = "macirq";
+ reg = <0x40000 0x2000>;
+ clock-names = "stmmaceth", "pclk";
+ clocks = <&baseclk>, <&baseclk>;
+
+ phy-mode = "rgmii";
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+};
diff --git a/arch/mips/boot/dts/ni/Makefile b/arch/mips/boot/dts/ni/Makefile
new file mode 100644
index 000000000000..66cfdffc51c2
--- /dev/null
+++ b/arch/mips/boot/dts/ni/Makefile
@@ -0,0 +1,7 @@
+dtb-$(CONFIG_FIT_IMAGE_FDT_NI169445) += 169445.dtb
+
+# Force kbuild to make empty built-in.o if necessary
+obj- += dummy.o
+
+always := $(dtb-y)
+clean-files := *.dtb *.dtb.S
diff --git a/arch/mips/boot/dts/pic32/Makefile b/arch/mips/boot/dts/pic32/Makefile
index 7ac790551ec9..a86ddd289cfd 100644
--- a/arch/mips/boot/dts/pic32/Makefile
+++ b/arch/mips/boot/dts/pic32/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_DTB_PIC32_MZDA_SK) += pic32mzda_sk.dtb
dtb-$(CONFIG_DTB_PIC32_NONE) += \
diff --git a/arch/mips/boot/dts/qca/Makefile b/arch/mips/boot/dts/qca/Makefile
index 63a9ddf048c9..eabd94eb59db 100644
--- a/arch/mips/boot/dts/qca/Makefile
+++ b/arch/mips/boot/dts/qca/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# All DTBs
dtb-$(CONFIG_ATH79) += ar9132_tl_wr1043nd_v1.dtb
dtb-$(CONFIG_ATH79) += ar9331_dpt_module.dtb
diff --git a/arch/mips/boot/dts/qca/ar9132.dtsi b/arch/mips/boot/dts/qca/ar9132.dtsi
index 302f0a8d2988..1fe561c5f90e 100644
--- a/arch/mips/boot/dts/qca/ar9132.dtsi
+++ b/arch/mips/boot/dts/qca/ar9132.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/ath79-clk.h>
/ {
diff --git a/arch/mips/boot/dts/qca/ar9132_tl_wr1043nd_v1.dts b/arch/mips/boot/dts/qca/ar9132_tl_wr1043nd_v1.dts
index 3c3b7ce5737b..3931033e47c8 100644
--- a/arch/mips/boot/dts/qca/ar9132_tl_wr1043nd_v1.dts
+++ b/arch/mips/boot/dts/qca/ar9132_tl_wr1043nd_v1.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/mips/boot/dts/qca/ar9331.dtsi b/arch/mips/boot/dts/qca/ar9331.dtsi
index cf47ed4d8569..efd5f0722206 100644
--- a/arch/mips/boot/dts/qca/ar9331.dtsi
+++ b/arch/mips/boot/dts/qca/ar9331.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/ath79-clk.h>
/ {
diff --git a/arch/mips/boot/dts/qca/ar9331_dpt_module.dts b/arch/mips/boot/dts/qca/ar9331_dpt_module.dts
index 98e74500e79d..d4e4502daaa8 100644
--- a/arch/mips/boot/dts/qca/ar9331_dpt_module.dts
+++ b/arch/mips/boot/dts/qca/ar9331_dpt_module.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/mips/boot/dts/qca/ar9331_dragino_ms14.dts b/arch/mips/boot/dts/qca/ar9331_dragino_ms14.dts
index 56f832076a69..4f95ccf17c4c 100644
--- a/arch/mips/boot/dts/qca/ar9331_dragino_ms14.dts
+++ b/arch/mips/boot/dts/qca/ar9331_dragino_ms14.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/mips/boot/dts/qca/ar9331_omega.dts b/arch/mips/boot/dts/qca/ar9331_omega.dts
index b2be3b04479d..f70f79c4d0d5 100644
--- a/arch/mips/boot/dts/qca/ar9331_omega.dts
+++ b/arch/mips/boot/dts/qca/ar9331_omega.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/mips/boot/dts/qca/ar9331_tl_mr3020.dts b/arch/mips/boot/dts/qca/ar9331_tl_mr3020.dts
index 919cf3b854a5..748131aea22e 100644
--- a/arch/mips/boot/dts/qca/ar9331_tl_mr3020.dts
+++ b/arch/mips/boot/dts/qca/ar9331_tl_mr3020.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
diff --git a/arch/mips/boot/dts/ralink/Makefile b/arch/mips/boot/dts/ralink/Makefile
index 2a7225954bf6..a80eeeecf613 100644
--- a/arch/mips/boot/dts/ralink/Makefile
+++ b/arch/mips/boot/dts/ralink/Makefile
@@ -1,7 +1,10 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_DTB_RT2880_EVAL) += rt2880_eval.dtb
dtb-$(CONFIG_DTB_RT305X_EVAL) += rt3052_eval.dtb
dtb-$(CONFIG_DTB_RT3883_EVAL) += rt3883_eval.dtb
dtb-$(CONFIG_DTB_MT7620A_EVAL) += mt7620a_eval.dtb
+dtb-$(CONFIG_DTB_OMEGA2P) += omega2p.dtb
+dtb-$(CONFIG_DTB_VOCORE2) += vocore2.dtb
obj-y += $(patsubst %.dtb, %.dtb.o, $(dtb-y))
diff --git a/arch/mips/boot/dts/ralink/mt7620a.dtsi b/arch/mips/boot/dts/ralink/mt7620a.dtsi
index 793c0c7ca921..1f6e5320f486 100644
--- a/arch/mips/boot/dts/ralink/mt7620a.dtsi
+++ b/arch/mips/boot/dts/ralink/mt7620a.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/ralink/mt7620a_eval.dts b/arch/mips/boot/dts/ralink/mt7620a_eval.dts
index 709f58132f5c..8de8f89f31b8 100644
--- a/arch/mips/boot/dts/ralink/mt7620a_eval.dts
+++ b/arch/mips/boot/dts/ralink/mt7620a_eval.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "mt7620a.dtsi"
diff --git a/arch/mips/boot/dts/ralink/mt7628a.dtsi b/arch/mips/boot/dts/ralink/mt7628a.dtsi
new file mode 100644
index 000000000000..9ff7e8faaecc
--- /dev/null
+++ b/arch/mips/boot/dts/ralink/mt7628a.dtsi
@@ -0,0 +1,126 @@
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "ralink,mt7628a-soc";
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ compatible = "mti,mips24KEc";
+ device_type = "cpu";
+ reg = <0>;
+ };
+ };
+
+ resetc: reset-controller {
+ compatible = "ralink,rt2880-reset";
+ #reset-cells = <1>;
+ };
+
+ cpuintc: interrupt-controller {
+ #address-cells = <0>;
+ #interrupt-cells = <1>;
+ interrupt-controller;
+ compatible = "mti,cpu-interrupt-controller";
+ };
+
+ palmbus@10000000 {
+ compatible = "palmbus";
+ reg = <0x10000000 0x200000>;
+ ranges = <0x0 0x10000000 0x1FFFFF>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ sysc: system-controller@0 {
+ compatible = "ralink,mt7620a-sysc", "syscon";
+ reg = <0x0 0x100>;
+ };
+
+ intc: interrupt-controller@200 {
+ compatible = "ralink,rt2880-intc";
+ reg = <0x200 0x100>;
+
+ interrupt-controller;
+ #interrupt-cells = <1>;
+
+ resets = <&resetc 9>;
+ reset-names = "intc";
+
+ interrupt-parent = <&cpuintc>;
+ interrupts = <2>;
+
+ ralink,intc-registers = <0x9c 0xa0
+ 0x6c 0xa4
+ 0x80 0x78>;
+ };
+
+ memory-controller@300 {
+ compatible = "ralink,mt7620a-memc";
+ reg = <0x300 0x100>;
+ };
+
+ uart0: uartlite@c00 {
+ compatible = "ns16550a";
+ reg = <0xc00 0x100>;
+
+ resets = <&resetc 12>;
+ reset-names = "uart0";
+
+ interrupt-parent = <&intc>;
+ interrupts = <20>;
+
+ reg-shift = <2>;
+ };
+
+ uart1: uart1@d00 {
+ compatible = "ns16550a";
+ reg = <0xd00 0x100>;
+
+ resets = <&resetc 19>;
+ reset-names = "uart1";
+
+ interrupt-parent = <&intc>;
+ interrupts = <21>;
+
+ reg-shift = <2>;
+ };
+
+ uart2: uart2@e00 {
+ compatible = "ns16550a";
+ reg = <0xe00 0x100>;
+
+ resets = <&resetc 20>;
+ reset-names = "uart2";
+
+ interrupt-parent = <&intc>;
+ interrupts = <22>;
+
+ reg-shift = <2>;
+ };
+ };
+
+ usb_phy: usb-phy@10120000 {
+ compatible = "mediatek,mt7628-usbphy";
+ reg = <0x10120000 0x1000>;
+
+ #phy-cells = <0>;
+
+ ralink,sysctl = <&sysc>;
+ resets = <&resetc 22 &resetc 25>;
+ reset-names = "host", "device";
+ };
+
+ ehci@101c0000 {
+ compatible = "generic-ehci";
+ reg = <0x101c0000 0x1000>;
+
+ phys = <&usb_phy>;
+ phy-names = "usb";
+
+ interrupt-parent = <&intc>;
+ interrupts = <18>;
+ };
+};
diff --git a/arch/mips/boot/dts/ralink/omega2p.dts b/arch/mips/boot/dts/ralink/omega2p.dts
new file mode 100644
index 000000000000..5884fd48f59a
--- /dev/null
+++ b/arch/mips/boot/dts/ralink/omega2p.dts
@@ -0,0 +1,18 @@
+/dts-v1/;
+
+/include/ "mt7628a.dtsi"
+
+/ {
+ compatible = "onion,omega2+", "ralink,mt7688a-soc", "ralink,mt7628a-soc";
+ model = "Onion Omega2+";
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x8000000>;
+ };
+
+ chosen {
+ bootargs = "console=ttyS0,115200";
+ stdout-path = &uart0;
+ };
+};
diff --git a/arch/mips/boot/dts/ralink/rt2880.dtsi b/arch/mips/boot/dts/ralink/rt2880.dtsi
index fb2faef0ab79..8fc1987d9063 100644
--- a/arch/mips/boot/dts/ralink/rt2880.dtsi
+++ b/arch/mips/boot/dts/ralink/rt2880.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/ralink/rt2880_eval.dts b/arch/mips/boot/dts/ralink/rt2880_eval.dts
index 0a685db093d4..759bc1dd5b83 100644
--- a/arch/mips/boot/dts/ralink/rt2880_eval.dts
+++ b/arch/mips/boot/dts/ralink/rt2880_eval.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "rt2880.dtsi"
diff --git a/arch/mips/boot/dts/ralink/rt3050.dtsi b/arch/mips/boot/dts/ralink/rt3050.dtsi
index d3cb57f985da..23062333a76d 100644
--- a/arch/mips/boot/dts/ralink/rt3050.dtsi
+++ b/arch/mips/boot/dts/ralink/rt3050.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/ralink/rt3052_eval.dts b/arch/mips/boot/dts/ralink/rt3052_eval.dts
index ec9e9a035541..674efdd42e74 100644
--- a/arch/mips/boot/dts/ralink/rt3052_eval.dts
+++ b/arch/mips/boot/dts/ralink/rt3052_eval.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "rt3050.dtsi"
diff --git a/arch/mips/boot/dts/ralink/rt3883.dtsi b/arch/mips/boot/dts/ralink/rt3883.dtsi
index 3d6fc9afdaf6..61132cf157e5 100644
--- a/arch/mips/boot/dts/ralink/rt3883.dtsi
+++ b/arch/mips/boot/dts/ralink/rt3883.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/ralink/rt3883_eval.dts b/arch/mips/boot/dts/ralink/rt3883_eval.dts
index e8df21a5d10d..c22bc84df219 100644
--- a/arch/mips/boot/dts/ralink/rt3883_eval.dts
+++ b/arch/mips/boot/dts/ralink/rt3883_eval.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "rt3883.dtsi"
diff --git a/arch/mips/boot/dts/ralink/vocore2.dts b/arch/mips/boot/dts/ralink/vocore2.dts
new file mode 100644
index 000000000000..fa8a5f8f236a
--- /dev/null
+++ b/arch/mips/boot/dts/ralink/vocore2.dts
@@ -0,0 +1,18 @@
+/dts-v1/;
+
+#include "mt7628a.dtsi"
+
+/ {
+ compatible = "vocore,vocore2", "ralink,mt7628a-soc";
+ model = "VoCore2";
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x8000000>;
+ };
+
+ chosen {
+ bootargs = "console=ttyS2,115200";
+ stdout-path = &uart2;
+ };
+};
diff --git a/arch/mips/boot/dts/xilfpga/Makefile b/arch/mips/boot/dts/xilfpga/Makefile
index 913a752a9ff1..498ac081e2fe 100644
--- a/arch/mips/boot/dts/xilfpga/Makefile
+++ b/arch/mips/boot/dts/xilfpga/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_XILFPGA_NEXYS4DDR) += nexys4ddr.dtb
obj-y += $(patsubst %.dtb, %.dtb.o, $(dtb-y))
diff --git a/arch/mips/boot/dts/xilfpga/microAptiv.dtsi b/arch/mips/boot/dts/xilfpga/microAptiv.dtsi
index 81d518e75785..87b2b1f9a1b0 100644
--- a/arch/mips/boot/dts/xilfpga/microAptiv.dtsi
+++ b/arch/mips/boot/dts/xilfpga/microAptiv.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/arch/mips/boot/dts/xilfpga/nexys4ddr.dts b/arch/mips/boot/dts/xilfpga/nexys4ddr.dts
index 09a62f2e2f8f..41fee03dc312 100644
--- a/arch/mips/boot/dts/xilfpga/nexys4ddr.dts
+++ b/arch/mips/boot/dts/xilfpga/nexys4ddr.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "microAptiv.dtsi"
diff --git a/arch/mips/boot/ecoff.h b/arch/mips/boot/ecoff.h
index 7a75ce2c1bcd..b3e73c22c345 100644
--- a/arch/mips/boot/ecoff.h
+++ b/arch/mips/boot/ecoff.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Some ECOFF definitions.
*/
diff --git a/arch/mips/boot/tools/Makefile b/arch/mips/boot/tools/Makefile
index d232a68f6c8a..5f8e737348eb 100644
--- a/arch/mips/boot/tools/Makefile
+++ b/arch/mips/boot/tools/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
hostprogs-y += relocs
relocs-objs += relocs_32.o
diff --git a/arch/mips/boot/tools/relocs.c b/arch/mips/boot/tools/relocs.c
index b9cbf78527e8..1bf53f3524b3 100644
--- a/arch/mips/boot/tools/relocs.c
+++ b/arch/mips/boot/tools/relocs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* This is included from relocs_32/64.c */
#define ElfW(type) _ElfW(ELF_BITS, type)
diff --git a/arch/mips/boot/tools/relocs.h b/arch/mips/boot/tools/relocs.h
index 3cf676f49e18..607ff0103064 100644
--- a/arch/mips/boot/tools/relocs.h
+++ b/arch/mips/boot/tools/relocs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef RELOCS_H
#define RELOCS_H
diff --git a/arch/mips/boot/tools/relocs_32.c b/arch/mips/boot/tools/relocs_32.c
index 915bdc07f5ed..428bea489303 100644
--- a/arch/mips/boot/tools/relocs_32.c
+++ b/arch/mips/boot/tools/relocs_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "relocs.h"
#define ELF_BITS 32
diff --git a/arch/mips/boot/tools/relocs_64.c b/arch/mips/boot/tools/relocs_64.c
index 06066e6ac2f9..154015d745d6 100644
--- a/arch/mips/boot/tools/relocs_64.c
+++ b/arch/mips/boot/tools/relocs_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "relocs.h"
#define ELF_BITS 64
diff --git a/arch/mips/boot/tools/relocs_main.c b/arch/mips/boot/tools/relocs_main.c
index d8fe2343b8d0..e2453a564b11 100644
--- a/arch/mips/boot/tools/relocs_main.c
+++ b/arch/mips/boot/tools/relocs_main.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <stdio.h>
#include <stdint.h>
diff --git a/arch/mips/cavium-octeon/Kconfig b/arch/mips/cavium-octeon/Kconfig
index 5c0b56203bae..204a1670fd9b 100644
--- a/arch/mips/cavium-octeon/Kconfig
+++ b/arch/mips/cavium-octeon/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if CPU_CAVIUM_OCTEON
config CAVIUM_CN63XXP1
diff --git a/arch/mips/cavium-octeon/crypto/Makefile b/arch/mips/cavium-octeon/crypto/Makefile
index f7aa9d5d3b87..db26c73fa0ed 100644
--- a/arch/mips/cavium-octeon/crypto/Makefile
+++ b/arch/mips/cavium-octeon/crypto/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# OCTEON-specific crypto modules.
#
diff --git a/arch/mips/cavium-octeon/executive/Makefile b/arch/mips/cavium-octeon/executive/Makefile
index b6d6e841a984..50b427879465 100644
--- a/arch/mips/cavium-octeon/executive/Makefile
+++ b/arch/mips/cavium-octeon/executive/Makefile
@@ -16,4 +16,4 @@ obj-y += cvmx-pko.o cvmx-spi.o cvmx-cmd-queue.o \
cvmx-helper-loop.o cvmx-helper-spi.o cvmx-helper-util.o \
cvmx-interrupt-decodes.o cvmx-interrupt-rsl.o
-obj-y += cvmx-helper-errata.o cvmx-helper-jtag.o
+obj-y += cvmx-helper-errata.o cvmx-helper-jtag.o cvmx-boot-vector.o
diff --git a/arch/mips/cavium-octeon/executive/cvmx-boot-vector.c b/arch/mips/cavium-octeon/executive/cvmx-boot-vector.c
new file mode 100644
index 000000000000..b7019d21808e
--- /dev/null
+++ b/arch/mips/cavium-octeon/executive/cvmx-boot-vector.c
@@ -0,0 +1,167 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 2004-2017 Cavium, Inc.
+ */
+
+
+/*
+ We install this program at the bootvector:
+------------------------------------
+ .set noreorder
+ .set nomacro
+ .set noat
+reset_vector:
+ dmtc0 $k0, $31, 0 # Save $k0 to DESAVE
+ dmtc0 $k1, $31, 3 # Save $k1 to KScratch2
+
+ mfc0 $k0, $12, 0 # Status
+ mfc0 $k1, $15, 1 # Ebase
+
+ ori $k0, 0x84 # Enable 64-bit addressing, set
+ # ERL (should already be set)
+ andi $k1, 0x3ff # mask out core ID
+
+ mtc0 $k0, $12, 0 # Status
+ sll $k1, 5
+
+ lui $k0, 0xbfc0
+ cache 17, 0($0) # Core-14345, clear L1 Dcache virtual
+ # tags if the core hit an NMI
+
+ ld $k0, 0x78($k0) # k0 <- (bfc00078) pointer to the reset vector
+ synci 0($0) # Invalidate ICache to get coherent
+ # view of target code.
+
+ daddu $k0, $k0, $k1
+ nop
+
+ ld $k0, 0($k0) # k0 <- core specific target address
+ dmfc0 $k1, $31, 3 # Restore $k1 from KScratch2
+
+ beqz $k0, wait_loop # Spin in wait loop
+ nop
+
+ jr $k0
+ nop
+
+ nop # NOPs needed here to fill delay slots
+ nop # on endian reversal of previous instructions
+
+wait_loop:
+ wait
+ nop
+
+ b wait_loop
+ nop
+
+ nop
+ nop
+------------------------------------
+
+0000000000000000 <reset_vector>:
+ 0: 40baf800 dmtc0 k0,c0_desave
+ 4: 40bbf803 dmtc0 k1,c0_kscratch2
+
+ 8: 401a6000 mfc0 k0,c0_status
+ c: 401b7801 mfc0 k1,c0_ebase
+
+ 10: 375a0084 ori k0,k0,0x84
+ 14: 337b03ff andi k1,k1,0x3ff
+
+ 18: 409a6000 mtc0 k0,c0_status
+ 1c: 001bd940 sll k1,k1,0x5
+
+ 20: 3c1abfc0 lui k0,0xbfc0
+ 24: bc110000 cache 0x11,0(zero)
+
+ 28: df5a0078 ld k0,120(k0)
+ 2c: 041f0000 synci 0(zero)
+
+ 30: 035bd02d daddu k0,k0,k1
+ 34: 00000000 nop
+
+ 38: df5a0000 ld k0,0(k0)
+ 3c: 403bf803 dmfc0 k1,c0_kscratch2
+
+ 40: 13400005 beqz k0,58 <wait_loop>
+ 44: 00000000 nop
+
+ 48: 03400008 jr k0
+ 4c: 00000000 nop
+
+ 50: 00000000 nop
+ 54: 00000000 nop
+
+0000000000000058 <wait_loop>:
+ 58: 42000020 wait
+ 5c: 00000000 nop
+
+ 60: 1000fffd b 58 <wait_loop>
+ 64: 00000000 nop
+
+ 68: 00000000 nop
+ 6c: 00000000 nop
+
+ */
+
+#include <asm/octeon/cvmx-boot-vector.h>
+
+static unsigned long long _cvmx_bootvector_data[16] = {
+ 0x40baf80040bbf803ull, /* patch low order 8-bits if no KScratch*/
+ 0x401a6000401b7801ull,
+ 0x375a0084337b03ffull,
+ 0x409a6000001bd940ull,
+ 0x3c1abfc0bc110000ull,
+ 0xdf5a0078041f0000ull,
+ 0x035bd02d00000000ull,
+ 0xdf5a0000403bf803ull, /* patch low order 8-bits if no KScratch*/
+ 0x1340000500000000ull,
+ 0x0340000800000000ull,
+ 0x0000000000000000ull,
+ 0x4200002000000000ull,
+ 0x1000fffd00000000ull,
+ 0x0000000000000000ull,
+ OCTEON_BOOT_MOVEABLE_MAGIC1,
+ 0 /* To be filled in with address of vector block*/
+};
+
+/* 2^10 CPUs */
+#define VECTOR_TABLE_SIZE (1024 * sizeof(struct cvmx_boot_vector_element))
+
+static void cvmx_boot_vector_init(void *mem)
+{
+ uint64_t kseg0_mem;
+ int i;
+
+ memset(mem, 0, VECTOR_TABLE_SIZE);
+ kseg0_mem = cvmx_ptr_to_phys(mem) | 0x8000000000000000ull;
+
+ for (i = 0; i < 15; i++) {
+ uint64_t v = _cvmx_bootvector_data[i];
+
+ if (OCTEON_IS_OCTEON1PLUS() && (i == 0 || i == 7))
+ v &= 0xffffffff00000000ull; /* KScratch not availble. */
+ cvmx_write_csr(CVMX_MIO_BOOT_LOC_ADR, i * 8);
+ cvmx_write_csr(CVMX_MIO_BOOT_LOC_DAT, v);
+ }
+ cvmx_write_csr(CVMX_MIO_BOOT_LOC_ADR, 15 * 8);
+ cvmx_write_csr(CVMX_MIO_BOOT_LOC_DAT, kseg0_mem);
+ cvmx_write_csr(CVMX_MIO_BOOT_LOC_CFGX(0), 0x81fc0000);
+}
+
+/**
+ * Get a pointer to the per-core table of reset vector pointers
+ *
+ */
+struct cvmx_boot_vector_element *cvmx_boot_vector_get(void)
+{
+ struct cvmx_boot_vector_element *ret;
+
+ ret = cvmx_bootmem_alloc_named_range_once(VECTOR_TABLE_SIZE, 0,
+ (1ull << 32) - 1, 8, "__boot_vector1__", cvmx_boot_vector_init);
+ return ret;
+}
+EXPORT_SYMBOL(cvmx_boot_vector_get);
diff --git a/arch/mips/cavium-octeon/executive/cvmx-bootmem.c b/arch/mips/cavium-octeon/executive/cvmx-bootmem.c
index 8d54d774933c..94d97ebfa036 100644
--- a/arch/mips/cavium-octeon/executive/cvmx-bootmem.c
+++ b/arch/mips/cavium-octeon/executive/cvmx-bootmem.c
@@ -44,6 +44,55 @@ static struct cvmx_bootmem_desc *cvmx_bootmem_desc;
/* See header file for descriptions of functions */
+/**
+ * This macro returns the size of a member of a structure.
+ * Logically it is the same as "sizeof(s::field)" in C++, but
+ * C lacks the "::" operator.
+ */
+#define SIZEOF_FIELD(s, field) sizeof(((s *)NULL)->field)
+
+/**
+ * This macro returns a member of the
+ * cvmx_bootmem_named_block_desc_t structure. These members can't
+ * be directly addressed as they might be in memory not directly
+ * reachable. In the case where bootmem is compiled with
+ * LINUX_HOST, the structure itself might be located on a remote
+ * Octeon. The argument "field" is the member name of the
+ * cvmx_bootmem_named_block_desc_t to read. Regardless of the type
+ * of the field, the return type is always a uint64_t. The "addr"
+ * parameter is the physical address of the structure.
+ */
+#define CVMX_BOOTMEM_NAMED_GET_FIELD(addr, field) \
+ __cvmx_bootmem_desc_get(addr, \
+ offsetof(struct cvmx_bootmem_named_block_desc, field), \
+ SIZEOF_FIELD(struct cvmx_bootmem_named_block_desc, field))
+
+/**
+ * This function is the implementation of the get macros defined
+ * for individual structure members. The argument are generated
+ * by the macros inorder to read only the needed memory.
+ *
+ * @param base 64bit physical address of the complete structure
+ * @param offset Offset from the beginning of the structure to the member being
+ * accessed.
+ * @param size Size of the structure member.
+ *
+ * @return Value of the structure member promoted into a uint64_t.
+ */
+static inline uint64_t __cvmx_bootmem_desc_get(uint64_t base, int offset,
+ int size)
+{
+ base = (1ull << 63) | (base + offset);
+ switch (size) {
+ case 4:
+ return cvmx_read64_uint32(base);
+ case 8:
+ return cvmx_read64_uint64(base);
+ default:
+ return 0;
+ }
+}
+
/*
* Wrapper functions are provided for reading/writing the size and
* next block values as these may not be directly addressible (in 32
@@ -98,6 +147,42 @@ void *cvmx_bootmem_alloc(uint64_t size, uint64_t alignment)
return cvmx_bootmem_alloc_range(size, alignment, 0, 0);
}
+void *cvmx_bootmem_alloc_named_range_once(uint64_t size, uint64_t min_addr,
+ uint64_t max_addr, uint64_t align,
+ char *name,
+ void (*init) (void *))
+{
+ int64_t addr;
+ void *ptr;
+ uint64_t named_block_desc_addr;
+
+ named_block_desc_addr = (uint64_t)
+ cvmx_bootmem_phy_named_block_find(name,
+ (uint32_t)CVMX_BOOTMEM_FLAG_NO_LOCKING);
+
+ if (named_block_desc_addr) {
+ addr = CVMX_BOOTMEM_NAMED_GET_FIELD(named_block_desc_addr,
+ base_addr);
+ return cvmx_phys_to_ptr(addr);
+ }
+
+ addr = cvmx_bootmem_phy_named_block_alloc(size, min_addr, max_addr,
+ align, name,
+ (uint32_t)CVMX_BOOTMEM_FLAG_NO_LOCKING);
+
+ if (addr < 0)
+ return NULL;
+ ptr = cvmx_phys_to_ptr(addr);
+
+ if (init)
+ init(ptr);
+ else
+ memset(ptr, 0, size);
+
+ return ptr;
+}
+EXPORT_SYMBOL(cvmx_bootmem_alloc_named_range_once);
+
void *cvmx_bootmem_alloc_named_range(uint64_t size, uint64_t min_addr,
uint64_t max_addr, uint64_t align,
char *name)
diff --git a/arch/mips/cavium-octeon/octeon-irq.c b/arch/mips/cavium-octeon/octeon-irq.c
index c1eb1ff7c800..5b3a3f6a9ad3 100644
--- a/arch/mips/cavium-octeon/octeon-irq.c
+++ b/arch/mips/cavium-octeon/octeon-irq.c
@@ -2963,3 +2963,12 @@ void octeon_fixup_irqs(void)
}
#endif /* CONFIG_HOTPLUG_CPU */
+
+struct irq_domain *octeon_irq_get_block_domain(int node, uint8_t block)
+{
+ struct octeon_ciu3_info *ciu3_info;
+
+ ciu3_info = octeon_ciu3_info_per_node[node & CVMX_NODE_MASK];
+ return ciu3_info->domain[block];
+}
+EXPORT_SYMBOL(octeon_irq_get_block_domain);
diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c
index 3de786545ded..75e7c8625659 100644
--- a/arch/mips/cavium-octeon/smp.c
+++ b/arch/mips/cavium-octeon/smp.c
@@ -205,7 +205,7 @@ int plat_post_relocation(long offset)
* Firmware CPU startup hook
*
*/
-static void octeon_boot_secondary(int cpu, struct task_struct *idle)
+static int octeon_boot_secondary(int cpu, struct task_struct *idle)
{
int count;
@@ -223,8 +223,12 @@ static void octeon_boot_secondary(int cpu, struct task_struct *idle)
udelay(1);
count--;
}
- if (count == 0)
+ if (count == 0) {
pr_err("Secondary boot timeout\n");
+ return -ETIMEDOUT;
+ }
+
+ return 0;
}
/**
@@ -408,7 +412,7 @@ late_initcall(register_cavium_notifier);
#endif /* CONFIG_HOTPLUG_CPU */
-struct plat_smp_ops octeon_smp_ops = {
+const struct plat_smp_ops octeon_smp_ops = {
.send_ipi_single = octeon_send_ipi_single,
.send_ipi_mask = octeon_send_ipi_mask,
.init_secondary = octeon_init_secondary,
@@ -485,7 +489,7 @@ static void octeon_78xx_send_ipi_mask(const struct cpumask *mask,
octeon_78xx_send_ipi_single(cpu, action);
}
-static struct plat_smp_ops octeon_78xx_smp_ops = {
+static const struct plat_smp_ops octeon_78xx_smp_ops = {
.send_ipi_single = octeon_78xx_send_ipi_single,
.send_ipi_mask = octeon_78xx_send_ipi_mask,
.init_secondary = octeon_init_secondary,
@@ -501,7 +505,7 @@ static struct plat_smp_ops octeon_78xx_smp_ops = {
void __init octeon_setup_smp(void)
{
- struct plat_smp_ops *ops;
+ const struct plat_smp_ops *ops;
if (octeon_has_feature(OCTEON_FEATURE_CIU3))
ops = &octeon_78xx_smp_ops;
diff --git a/arch/mips/configs/cavium_octeon_defconfig b/arch/mips/configs/cavium_octeon_defconfig
index e5b18f1a31a0..490b12af103c 100644
--- a/arch/mips/configs/cavium_octeon_defconfig
+++ b/arch/mips/configs/cavium_octeon_defconfig
@@ -60,11 +60,8 @@ CONFIG_BLK_DEV_SD=y
CONFIG_ATA=y
CONFIG_SATA_AHCI=y
CONFIG_SATA_AHCI_PLATFORM=y
-CONFIG_AHCI_OCTEON=y
CONFIG_PATA_OCTEON_CF=y
-CONFIG_SATA_SIL=y
CONFIG_NETDEVICES=y
-CONFIG_MII=y
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_ADAPTEC is not set
# CONFIG_NET_VENDOR_ALTEON is not set
@@ -121,22 +118,30 @@ CONFIG_SPI=y
CONFIG_SPI_OCTEON=y
# CONFIG_HWMON is not set
CONFIG_WATCHDOG=y
-CONFIG_USB=m
-CONFIG_USB_EHCI_HCD=m
-CONFIG_USB_EHCI_HCD_PLATFORM=m
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_OHCI_HCD_PLATFORM=m
+CONFIG_USB=y
+# CONFIG_USB_PCI is not set
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PLATFORM=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_DWC3=y
CONFIG_MMC=y
# CONFIG_PWRSEQ_EMMC is not set
# CONFIG_PWRSEQ_SIMPLE is not set
-# CONFIG_MMC_BLOCK_BOUNCE is not set
CONFIG_MMC_CAVIUM_OCTEON=y
+CONFIG_EDAC=y
+CONFIG_EDAC_OCTEON_PC=y
+CONFIG_EDAC_OCTEON_L2C=y
+CONFIG_EDAC_OCTEON_LMC=y
+CONFIG_EDAC_OCTEON_PCI=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_DS1307=y
CONFIG_STAGING=y
CONFIG_OCTEON_ETHERNET=y
-CONFIG_OCTEON_USB=m
# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_RAS=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
diff --git a/arch/mips/configs/ci20_defconfig b/arch/mips/configs/ci20_defconfig
index b42cfa7865f9..5ea3104a3aca 100644
--- a/arch/mips/configs/ci20_defconfig
+++ b/arch/mips/configs/ci20_defconfig
@@ -91,6 +91,7 @@ CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_I2C=y
CONFIG_I2C_JZ4780=y
CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_INGENIC=y
# CONFIG_HWMON is not set
CONFIG_REGULATOR=y
CONFIG_REGULATOR_DEBUG=y
@@ -99,6 +100,8 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y
# CONFIG_HID is not set
# CONFIG_USB_SUPPORT is not set
CONFIG_MMC=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_JZ4740=y
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_MEMORY=y
# CONFIG_DNOTIFY is not set
diff --git a/arch/mips/configs/generic/board-ni169445.config b/arch/mips/configs/generic/board-ni169445.config
new file mode 100644
index 000000000000..f72223b366ca
--- /dev/null
+++ b/arch/mips/configs/generic/board-ni169445.config
@@ -0,0 +1,30 @@
+# require CONFIG_CPU_MIPS32_R2=y
+# require CONFIG_CPU_LITTLE_ENDIAN=y
+
+CONFIG_FIT_IMAGE_FDT_NI169445=y
+
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_OF_PLATFORM=y
+
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC_PLATFORM=y
+
+CONFIG_MTD=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CMDLINE_PARTS=y
+
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_BCH=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPIO=y
+CONFIG_MTD_NAND_IDS=y
+
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BLOCK=y
+
+CONFIG_NETDEVICES=y
+CONFIG_STMMAC_ETH=y
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_DWMAC_GENERIC=y
diff --git a/arch/mips/configs/generic/board-sead-3.config b/arch/mips/configs/generic/board-sead-3.config
index 3b5e1ac579eb..df49a592dbb5 100644
--- a/arch/mips/configs/generic/board-sead-3.config
+++ b/arch/mips/configs/generic/board-sead-3.config
@@ -1,3 +1,5 @@
+# require CONFIG_32BIT=y
+
CONFIG_LEGACY_BOARD_SEAD3=y
CONFIG_AUXDISPLAY=y
diff --git a/arch/mips/configs/generic_defconfig b/arch/mips/configs/generic_defconfig
index 91aacf2ef26d..26b1cd5ffbf5 100644
--- a/arch/mips/configs/generic_defconfig
+++ b/arch/mips/configs/generic_defconfig
@@ -3,7 +3,7 @@ CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_MIPS_CPS=y
CONFIG_CPU_HAS_MSA=y
CONFIG_HIGHMEM=y
-CONFIG_NR_CPUS=2
+CONFIG_NR_CPUS=16
CONFIG_MIPS_O32_FP64_SUPPORT=y
CONFIG_SYSVIPC=y
CONFIG_NO_HZ_IDLE=y
@@ -61,7 +61,6 @@ CONFIG_HID_KENSINGTON=y
CONFIG_HID_LOGITECH=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
-# CONFIG_USB_SUPPORT is not set
# CONFIG_MIPS_PLATFORM_DEVICES is not set
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_EXT4_FS=y
diff --git a/arch/mips/configs/gpr_defconfig b/arch/mips/configs/gpr_defconfig
index b1911816337c..55438fc9991e 100644
--- a/arch/mips/configs/gpr_defconfig
+++ b/arch/mips/configs/gpr_defconfig
@@ -111,12 +111,8 @@ CONFIG_ATALK=m
CONFIG_DEV_APPLETALK=m
CONFIG_IPDDP=m
CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
CONFIG_X25=m
CONFIG_LAPB=m
-CONFIG_ECONET=m
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
CONFIG_WAN_ROUTER=m
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CBQ=m
diff --git a/arch/mips/configs/lemote2f_defconfig b/arch/mips/configs/lemote2f_defconfig
index 1ec8ed8d05d1..02be95c1b712 100644
--- a/arch/mips/configs/lemote2f_defconfig
+++ b/arch/mips/configs/lemote2f_defconfig
@@ -37,7 +37,6 @@ CONFIG_PM=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION="/dev/hda3"
CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
diff --git a/arch/mips/configs/malta_defconfig b/arch/mips/configs/malta_defconfig
index 078ecac071ab..396408404487 100644
--- a/arch/mips/configs/malta_defconfig
+++ b/arch/mips/configs/malta_defconfig
@@ -2,7 +2,6 @@ CONFIG_MIPS_MALTA=y
CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MIPS32_R2=y
CONFIG_PAGE_SIZE_16KB=y
-CONFIG_MIPS_MT_SMP=y
CONFIG_NR_CPUS=8
CONFIG_HZ_100=y
CONFIG_SYSVIPC=y
diff --git a/arch/mips/configs/malta_kvm_defconfig b/arch/mips/configs/malta_kvm_defconfig
index 80ecd94ed126..5691673a3327 100644
--- a/arch/mips/configs/malta_kvm_defconfig
+++ b/arch/mips/configs/malta_kvm_defconfig
@@ -2,7 +2,6 @@ CONFIG_MIPS_MALTA=y
CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MIPS32_R2=y
CONFIG_PAGE_SIZE_16KB=y
-CONFIG_MIPS_MT_SMP=y
CONFIG_NR_CPUS=8
CONFIG_HZ_100=y
CONFIG_SYSVIPC=y
diff --git a/arch/mips/configs/malta_kvm_guest_defconfig b/arch/mips/configs/malta_kvm_guest_defconfig
index 35ad1f8d1a79..e9cadb37d684 100644
--- a/arch/mips/configs/malta_kvm_guest_defconfig
+++ b/arch/mips/configs/malta_kvm_guest_defconfig
@@ -3,6 +3,7 @@ CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MIPS32_R2=y
CONFIG_KVM_GUEST=y
CONFIG_PAGE_SIZE_16KB=y
+# CONFIG_MIPS_MT_SMP is not set
CONFIG_HZ_100=y
CONFIG_SYSVIPC=y
CONFIG_NO_HZ=y
diff --git a/arch/mips/configs/maltasmvp_defconfig b/arch/mips/configs/maltasmvp_defconfig
index 55b68b981b05..d8c8f5fb8918 100644
--- a/arch/mips/configs/maltasmvp_defconfig
+++ b/arch/mips/configs/maltasmvp_defconfig
@@ -2,7 +2,6 @@ CONFIG_MIPS_MALTA=y
CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MIPS32_R2=y
CONFIG_PAGE_SIZE_16KB=y
-CONFIG_MIPS_MT_SMP=y
CONFIG_SCHED_SMT=y
CONFIG_MIPS_CPS=y
CONFIG_NR_CPUS=8
diff --git a/arch/mips/configs/maltasmvp_eva_defconfig b/arch/mips/configs/maltasmvp_eva_defconfig
index 5ca590cf1635..04827bc9f87f 100644
--- a/arch/mips/configs/maltasmvp_eva_defconfig
+++ b/arch/mips/configs/maltasmvp_eva_defconfig
@@ -3,7 +3,6 @@ CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MIPS32_R2=y
CONFIG_CPU_MIPS32_3_5_FEATURES=y
CONFIG_PAGE_SIZE_16KB=y
-CONFIG_MIPS_MT_SMP=y
CONFIG_SCHED_SMT=y
CONFIG_MIPS_CPS=y
CONFIG_NR_CPUS=8
diff --git a/arch/mips/configs/mtx1_defconfig b/arch/mips/configs/mtx1_defconfig
index 4011f1869e72..c3d0d0a6e044 100644
--- a/arch/mips/configs/mtx1_defconfig
+++ b/arch/mips/configs/mtx1_defconfig
@@ -146,12 +146,8 @@ CONFIG_ATALK=m
CONFIG_DEV_APPLETALK=m
CONFIG_IPDDP=m
CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
CONFIG_X25=m
CONFIG_LAPB=m
-CONFIG_ECONET=m
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
CONFIG_WAN_ROUTER=m
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CBQ=m
diff --git a/arch/mips/configs/nlm_xlp_defconfig b/arch/mips/configs/nlm_xlp_defconfig
index 5720ce23e9aa..7357248b3d7a 100644
--- a/arch/mips/configs/nlm_xlp_defconfig
+++ b/arch/mips/configs/nlm_xlp_defconfig
@@ -259,7 +259,6 @@ CONFIG_ATALK=m
CONFIG_DEV_APPLETALK=m
CONFIG_IPDDP=m
CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
CONFIG_X25=m
CONFIG_LAPB=m
CONFIG_WAN_ROUTER=m
diff --git a/arch/mips/configs/nlm_xlr_defconfig b/arch/mips/configs/nlm_xlr_defconfig
index fea56c535d92..1e18fd7de209 100644
--- a/arch/mips/configs/nlm_xlr_defconfig
+++ b/arch/mips/configs/nlm_xlr_defconfig
@@ -240,12 +240,8 @@ CONFIG_ATALK=m
CONFIG_DEV_APPLETALK=m
CONFIG_IPDDP=m
CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
CONFIG_X25=m
CONFIG_LAPB=m
-CONFIG_ECONET=m
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
CONFIG_WAN_ROUTER=m
CONFIG_PHONET=m
CONFIG_IEEE802154=m
diff --git a/arch/mips/configs/omega2p_defconfig b/arch/mips/configs/omega2p_defconfig
new file mode 100644
index 000000000000..e2731c3cc7e7
--- /dev/null
+++ b/arch/mips/configs/omega2p_defconfig
@@ -0,0 +1,129 @@
+CONFIG_RALINK=y
+CONFIG_SOC_MT7620=y
+CONFIG_DTB_OMEGA2P=y
+CONFIG_CPU_MIPS32_R2=y
+# CONFIG_COMPACTION is not set
+CONFIG_HZ_100=y
+CONFIG_PREEMPT=y
+# CONFIG_SECCOMP is not set
+CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_CGROUPS=y
+CONFIG_MEMCG=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_NAMESPACES=y
+CONFIG_USER_NS=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_EMBEDDED=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_SUSPEND is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_WIRELESS is not set
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_ALLOW_DEV_COREDUMP is not set
+CONFIG_NETDEVICES=y
+# CONFIG_ETHERNET is not set
+# CONFIG_WLAN is not set
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_SERIO is not set
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_LEGACY_PTY_COUNT=2
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=3
+CONFIG_SERIAL_8250_RUNTIME_UARTS=3
+CONFIG_SERIAL_OF_PLATFORM=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_HWMON is not set
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_MMC=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_MEMORY=y
+CONFIG_PHY_RALINK_USB=y
+# CONFIG_DNOTIFY is not set
+CONFIG_PROC_KCORE=y
+# CONFIG_PROC_PAGE_MONITOR is not set
+CONFIG_TMPFS=y
+CONFIG_CONFIGFS_FS=y
+# CONFIG_NETWORK_FILESYSTEMS is not set
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=y
+CONFIG_NLS_CODEPAGE_775=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_CODEPAGE_852=y
+CONFIG_NLS_CODEPAGE_855=y
+CONFIG_NLS_CODEPAGE_857=y
+CONFIG_NLS_CODEPAGE_860=y
+CONFIG_NLS_CODEPAGE_861=y
+CONFIG_NLS_CODEPAGE_862=y
+CONFIG_NLS_CODEPAGE_863=y
+CONFIG_NLS_CODEPAGE_864=y
+CONFIG_NLS_CODEPAGE_865=y
+CONFIG_NLS_CODEPAGE_866=y
+CONFIG_NLS_CODEPAGE_869=y
+CONFIG_NLS_CODEPAGE_936=y
+CONFIG_NLS_CODEPAGE_950=y
+CONFIG_NLS_CODEPAGE_932=y
+CONFIG_NLS_CODEPAGE_949=y
+CONFIG_NLS_CODEPAGE_874=y
+CONFIG_NLS_ISO8859_8=y
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=y
+CONFIG_NLS_ISO8859_3=y
+CONFIG_NLS_ISO8859_4=y
+CONFIG_NLS_ISO8859_5=y
+CONFIG_NLS_ISO8859_6=y
+CONFIG_NLS_ISO8859_7=y
+CONFIG_NLS_ISO8859_9=y
+CONFIG_NLS_ISO8859_13=y
+CONFIG_NLS_ISO8859_14=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_KOI8_R=y
+CONFIG_NLS_KOI8_U=y
+CONFIG_NLS_UTF8=y
+CONFIG_PRINTK_TIME=y
+CONFIG_DEBUG_INFO=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_PANIC_TIMEOUT=10
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_PREEMPT is not set
+CONFIG_STACKTRACE=y
+# CONFIG_FTRACE is not set
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRC16=y
+CONFIG_XZ_DEC=y
diff --git a/arch/mips/configs/pistachio_defconfig b/arch/mips/configs/pistachio_defconfig
index 3598d58aac30..b22a3cf149b6 100644
--- a/arch/mips/configs/pistachio_defconfig
+++ b/arch/mips/configs/pistachio_defconfig
@@ -47,6 +47,8 @@ CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
@@ -292,7 +294,8 @@ CONFIG_SQUASHFS_LZO=y
CONFIG_PSTORE=y
CONFIG_PSTORE_CONSOLE=y
CONFIG_PSTORE_RAM=y
-# CONFIG_NETWORK_FILESYSTEMS is not set
+CONFIG_NFS_FS=y
+CONFIG_ROOT_NFS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=m
CONFIG_NLS_ASCII=m
diff --git a/arch/mips/configs/vocore2_defconfig b/arch/mips/configs/vocore2_defconfig
new file mode 100644
index 000000000000..9121e4194a63
--- /dev/null
+++ b/arch/mips/configs/vocore2_defconfig
@@ -0,0 +1,129 @@
+CONFIG_RALINK=y
+CONFIG_SOC_MT7620=y
+CONFIG_DTB_VOCORE2=y
+CONFIG_CPU_MIPS32_R2=y
+# CONFIG_COMPACTION is not set
+CONFIG_HZ_100=y
+CONFIG_PREEMPT=y
+# CONFIG_SECCOMP is not set
+CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_CGROUPS=y
+CONFIG_MEMCG=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_NAMESPACES=y
+CONFIG_USER_NS=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_EMBEDDED=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_SUSPEND is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_WIRELESS is not set
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_ALLOW_DEV_COREDUMP is not set
+CONFIG_NETDEVICES=y
+# CONFIG_ETHERNET is not set
+# CONFIG_WLAN is not set
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_SERIO is not set
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_LEGACY_PTY_COUNT=2
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=3
+CONFIG_SERIAL_8250_RUNTIME_UARTS=3
+CONFIG_SERIAL_OF_PLATFORM=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_HWMON is not set
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_MMC=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_MEMORY=y
+CONFIG_PHY_RALINK_USB=y
+# CONFIG_DNOTIFY is not set
+CONFIG_PROC_KCORE=y
+# CONFIG_PROC_PAGE_MONITOR is not set
+CONFIG_TMPFS=y
+CONFIG_CONFIGFS_FS=y
+# CONFIG_NETWORK_FILESYSTEMS is not set
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=y
+CONFIG_NLS_CODEPAGE_775=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_CODEPAGE_852=y
+CONFIG_NLS_CODEPAGE_855=y
+CONFIG_NLS_CODEPAGE_857=y
+CONFIG_NLS_CODEPAGE_860=y
+CONFIG_NLS_CODEPAGE_861=y
+CONFIG_NLS_CODEPAGE_862=y
+CONFIG_NLS_CODEPAGE_863=y
+CONFIG_NLS_CODEPAGE_864=y
+CONFIG_NLS_CODEPAGE_865=y
+CONFIG_NLS_CODEPAGE_866=y
+CONFIG_NLS_CODEPAGE_869=y
+CONFIG_NLS_CODEPAGE_936=y
+CONFIG_NLS_CODEPAGE_950=y
+CONFIG_NLS_CODEPAGE_932=y
+CONFIG_NLS_CODEPAGE_949=y
+CONFIG_NLS_CODEPAGE_874=y
+CONFIG_NLS_ISO8859_8=y
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=y
+CONFIG_NLS_ISO8859_3=y
+CONFIG_NLS_ISO8859_4=y
+CONFIG_NLS_ISO8859_5=y
+CONFIG_NLS_ISO8859_6=y
+CONFIG_NLS_ISO8859_7=y
+CONFIG_NLS_ISO8859_9=y
+CONFIG_NLS_ISO8859_13=y
+CONFIG_NLS_ISO8859_14=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_KOI8_R=y
+CONFIG_NLS_KOI8_U=y
+CONFIG_NLS_UTF8=y
+CONFIG_PRINTK_TIME=y
+CONFIG_DEBUG_INFO=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_PANIC_TIMEOUT=10
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_PREEMPT is not set
+CONFIG_STACKTRACE=y
+# CONFIG_FTRACE is not set
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRC16=y
+CONFIG_XZ_DEC=y
diff --git a/arch/mips/dec/int-handler.S b/arch/mips/dec/int-handler.S
index cea2bb1621e6..a25ef822e725 100644
--- a/arch/mips/dec/int-handler.S
+++ b/arch/mips/dec/int-handler.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1995, 1996, 1997 Paul M. Antoine and Harald Koerfgen
* Copyright (C) 2000, 2001, 2002, 2003, 2005 Maciej W. Rozycki
diff --git a/arch/mips/dec/prom/cmdline.c b/arch/mips/dec/prom/cmdline.c
index c3490bebbc5d..3ed63280ae29 100644
--- a/arch/mips/dec/prom/cmdline.c
+++ b/arch/mips/dec/prom/cmdline.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* cmdline.c: read the command line passed to us by the PROM.
*
diff --git a/arch/mips/dec/prom/dectypes.h b/arch/mips/dec/prom/dectypes.h
index 69ea5b9c8190..9fcbcc7cdbd3 100644
--- a/arch/mips/dec/prom/dectypes.h
+++ b/arch/mips/dec/prom/dectypes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DECTYPES
#define DECTYPES
diff --git a/arch/mips/dec/prom/identify.c b/arch/mips/dec/prom/identify.c
index 0c14a9d6a84a..80cd14cd1a63 100644
--- a/arch/mips/dec/prom/identify.c
+++ b/arch/mips/dec/prom/identify.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* identify.c: machine identification code.
*
diff --git a/arch/mips/dec/prom/init.c b/arch/mips/dec/prom/init.c
index d88eb7a6662b..cc988bbd27fc 100644
--- a/arch/mips/dec/prom/init.c
+++ b/arch/mips/dec/prom/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* init.c: PROM library initialisation code.
*
diff --git a/arch/mips/dec/prom/locore.S b/arch/mips/dec/prom/locore.S
index f72b5741025f..0eb8fab62ab0 100644
--- a/arch/mips/dec/prom/locore.S
+++ b/arch/mips/dec/prom/locore.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* locore.S
*/
diff --git a/arch/mips/dec/prom/memory.c b/arch/mips/dec/prom/memory.c
index 8c62316f22f4..a2acc6454cf3 100644
--- a/arch/mips/dec/prom/memory.c
+++ b/arch/mips/dec/prom/memory.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* memory.c: memory initialisation code.
*
diff --git a/arch/mips/dec/reset.c b/arch/mips/dec/reset.c
index c15a879046e5..3df01f1da347 100644
--- a/arch/mips/dec/reset.c
+++ b/arch/mips/dec/reset.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Reset a DECstation machine.
*
diff --git a/arch/mips/dec/time.c b/arch/mips/dec/time.c
index 1914e56f0d96..a2a150e4fbc2 100644
--- a/arch/mips/dec/time.c
+++ b/arch/mips/dec/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1991, 1992, 1995 Linus Torvalds
* Copyright (C) 2000, 2003 Maciej W. Rozycki
diff --git a/arch/mips/fw/arc/Makefile b/arch/mips/fw/arc/Makefile
index 4f349ec1ea2d..31dd7305d643 100644
--- a/arch/mips/fw/arc/Makefile
+++ b/arch/mips/fw/arc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the ARC prom monitor library routines under Linux.
#
diff --git a/arch/mips/fw/arc/arc_con.c b/arch/mips/fw/arc/arc_con.c
index bc32fe64f42a..769d4b9ac82e 100644
--- a/arch/mips/fw/arc/arc_con.c
+++ b/arch/mips/fw/arc/arc_con.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Wrap-around code for a console using the
* ARC io-routines.
diff --git a/arch/mips/fw/arc/init.c b/arch/mips/fw/arc/init.c
index 629b24db0d3a..008555969534 100644
--- a/arch/mips/fw/arc/init.c
+++ b/arch/mips/fw/arc/init.c
@@ -51,7 +51,7 @@ void __init prom_init(void)
#endif
#ifdef CONFIG_SGI_IP27
{
- extern struct plat_smp_ops ip27_smp_ops;
+ extern const struct plat_smp_ops ip27_smp_ops;
register_smp_ops(&ip27_smp_ops);
}
diff --git a/arch/mips/fw/arc/memory.c b/arch/mips/fw/arc/memory.c
index 0d75b5a0bad4..dd9496f26e6a 100644
--- a/arch/mips/fw/arc/memory.c
+++ b/arch/mips/fw/arc/memory.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* memory.c: PROM library functions for acquiring/using memory descriptors
* given to us from the ARCS firmware.
diff --git a/arch/mips/fw/arc/salone.c b/arch/mips/fw/arc/salone.c
index 9b568950d1fd..2d99f44d5576 100644
--- a/arch/mips/fw/arc/salone.c
+++ b/arch/mips/fw/arc/salone.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Routines to load into memory and execute stand-along program images using
* ARCS PROM firmware.
diff --git a/arch/mips/generic/Kconfig b/arch/mips/generic/Kconfig
index 51ffbbaddee2..0b67c46666cc 100644
--- a/arch/mips/generic/Kconfig
+++ b/arch/mips/generic/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if MIPS_GENERIC
config LEGACY_BOARDS
@@ -36,4 +37,10 @@ config FIT_IMAGE_FDT_BOSTON
enable this if you wish to boot on a MIPS Boston board, as it is
expected by the bootloader.
+config FIT_IMAGE_FDT_NI169445
+ bool "Include FDT for NI 169445"
+ help
+ Enable this to include the FDT for the 169445 platform from
+ National Instruments in the FIT kernel image.
+
endif
diff --git a/arch/mips/generic/Makefile b/arch/mips/generic/Makefile
index 56b3ea565ed9..874967363dbb 100644
--- a/arch/mips/generic/Makefile
+++ b/arch/mips/generic/Makefile
@@ -1,6 +1,6 @@
#
# Copyright (C) 2016 Imagination Technologies
-# Author: Paul Burton <paul.burton@imgtec.com>
+# Author: Paul Burton <paul.burton@mips.com>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/generic/Platform b/arch/mips/generic/Platform
index 9a30d69e2281..b51432dd10b6 100644
--- a/arch/mips/generic/Platform
+++ b/arch/mips/generic/Platform
@@ -1,6 +1,6 @@
#
# Copyright (C) 2016 Imagination Technologies
-# Author: Paul Burton <paul.burton@imgtec.com>
+# Author: Paul Burton <paul.burton@mips.com>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
@@ -12,3 +12,7 @@ platform-$(CONFIG_MIPS_GENERIC) += generic/
cflags-$(CONFIG_MIPS_GENERIC) += -I$(srctree)/arch/mips/include/asm/mach-generic
load-$(CONFIG_MIPS_GENERIC) += 0xffffffff80100000
all-$(CONFIG_MIPS_GENERIC) := vmlinux.gz.itb
+
+its-y := vmlinux.its.S
+its-$(CONFIG_FIT_IMAGE_FDT_BOSTON) += board-boston.its.S
+its-$(CONFIG_FIT_IMAGE_FDT_NI169445) += board-ni169445.its.S
diff --git a/arch/mips/generic/board-boston.its.S b/arch/mips/generic/board-boston.its.S
new file mode 100644
index 000000000000..a7f51f97b910
--- /dev/null
+++ b/arch/mips/generic/board-boston.its.S
@@ -0,0 +1,22 @@
+/ {
+ images {
+ fdt@boston {
+ description = "img,boston Device Tree";
+ data = /incbin/("boot/dts/img/boston.dtb");
+ type = "flat_dt";
+ arch = "mips";
+ compression = "none";
+ hash@0 {
+ algo = "sha1";
+ };
+ };
+ };
+
+ configurations {
+ conf@boston {
+ description = "Boston Linux kernel";
+ kernel = "kernel@0";
+ fdt = "fdt@boston";
+ };
+ };
+};
diff --git a/arch/mips/generic/board-ni169445.its.S b/arch/mips/generic/board-ni169445.its.S
new file mode 100644
index 000000000000..d12e12fe90be
--- /dev/null
+++ b/arch/mips/generic/board-ni169445.its.S
@@ -0,0 +1,22 @@
+{
+ images {
+ fdt@ni169445 {
+ description = "NI 169445 device tree";
+ data = /incbin/("boot/dts/ni/169445.dtb");
+ type = "flat_dt";
+ arch = "mips";
+ compression = "none";
+ hash@0 {
+ algo = "sha1";
+ };
+ };
+ };
+
+ configurations {
+ conf@ni169445 {
+ description = "NI 169445 Linux Kernel";
+ kernel = "kernel@0";
+ fdt = "fdt@ni169445";
+ };
+ };
+};
diff --git a/arch/mips/generic/board-sead3.c b/arch/mips/generic/board-sead3.c
index f109a6b9fdd0..10cf93d97346 100644
--- a/arch/mips/generic/board-sead3.c
+++ b/arch/mips/generic/board-sead3.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/generic/init.c b/arch/mips/generic/init.c
index 3f32b376d30e..cf409ba358a1 100644
--- a/arch/mips/generic/init.c
+++ b/arch/mips/generic/init.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -16,6 +16,7 @@
#include <linux/of_fdt.h>
#include <linux/of_platform.h>
+#include <asm/bootinfo.h>
#include <asm/fw/fw.h>
#include <asm/irq_cpu.h>
#include <asm/machine.h>
@@ -88,6 +89,8 @@ void __init *plat_get_fdt(void)
return (void *)fdt;
}
+#ifdef CONFIG_RELOCATABLE
+
void __init plat_fdt_relocated(void *new_location)
{
/*
@@ -101,6 +104,8 @@ void __init plat_fdt_relocated(void *new_location)
fw_arg1 = (unsigned long)new_location;
}
+#endif /* CONFIG_RELOCATABLE */
+
void __init plat_mem_setup(void)
{
if (mach && mach->fixup_fdt)
diff --git a/arch/mips/generic/irq.c b/arch/mips/generic/irq.c
index 14064bdd91dd..394f8161e462 100644
--- a/arch/mips/generic/irq.c
+++ b/arch/mips/generic/irq.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -12,10 +12,11 @@
#include <linux/clk-provider.h>
#include <linux/clocksource.h>
#include <linux/init.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/types.h>
#include <asm/irq.h>
+#include <asm/mips-cps.h>
+#include <asm/time.h>
int get_c0_fdc_int(void)
{
@@ -23,7 +24,7 @@ int get_c0_fdc_int(void)
if (cpu_has_veic)
panic("Unimplemented!");
- else if (gic_present)
+ else if (mips_gic_present())
mips_cpu_fdc_irq = gic_get_c0_fdc_int();
else if (cp0_fdc_irq >= 0)
mips_cpu_fdc_irq = MIPS_CPU_IRQ_BASE + cp0_fdc_irq;
@@ -39,7 +40,7 @@ int get_c0_perfcount_int(void)
if (cpu_has_veic)
panic("Unimplemented!");
- else if (gic_present)
+ else if (mips_gic_present())
mips_cpu_perf_irq = gic_get_c0_perfcount_int();
else if (cp0_perfcount_irq >= 0)
mips_cpu_perf_irq = MIPS_CPU_IRQ_BASE + cp0_perfcount_irq;
@@ -55,7 +56,7 @@ unsigned int get_c0_compare_int(void)
if (cpu_has_veic)
panic("Unimplemented!");
- else if (gic_present)
+ else if (mips_gic_present())
mips_cpu_timer_irq = gic_get_c0_compare_int();
else
mips_cpu_timer_irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq;
diff --git a/arch/mips/generic/proc.c b/arch/mips/generic/proc.c
index 42b33250a4a2..199fb2cc57ee 100644
--- a/arch/mips/generic/proc.c
+++ b/arch/mips/generic/proc.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/generic/vmlinux.its.S b/arch/mips/generic/vmlinux.its.S
index 3390e2f80b80..1a08438fd893 100644
--- a/arch/mips/generic/vmlinux.its.S
+++ b/arch/mips/generic/vmlinux.its.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/dts-v1/;
/ {
@@ -29,28 +30,3 @@
};
};
};
-
-#ifdef CONFIG_FIT_IMAGE_FDT_BOSTON
-/ {
- images {
- fdt@boston {
- description = "img,boston Device Tree";
- data = /incbin/("boot/dts/img/boston.dtb");
- type = "flat_dt";
- arch = "mips";
- compression = "none";
- hash@0 {
- algo = "sha1";
- };
- };
- };
-
- configurations {
- conf@boston {
- description = "Boston Linux kernel";
- kernel = "kernel@0";
- fdt = "fdt@boston";
- };
- };
-};
-#endif /* CONFIG_FIT_IMAGE_FDT_BOSTON */
diff --git a/arch/mips/generic/yamon-dt.c b/arch/mips/generic/yamon-dt.c
index 6077bca9b364..b408dac722ac 100644
--- a/arch/mips/generic/yamon-dt.c
+++ b/arch/mips/generic/yamon-dt.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/asm/asm-prototypes.h b/arch/mips/include/asm/asm-prototypes.h
index 6e28971fe73a..d60b57f34e92 100644
--- a/arch/mips/include/asm/asm-prototypes.h
+++ b/arch/mips/include/asm/asm-prototypes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/checksum.h>
#include <asm/page.h>
#include <asm/fpu.h>
diff --git a/arch/mips/include/asm/asm.h b/arch/mips/include/asm/asm.h
index 859cf7048347..81fae23ce7cd 100644
--- a/arch/mips/include/asm/asm.h
+++ b/arch/mips/include/asm/asm.h
@@ -55,6 +55,7 @@
.type symbol, @function; \
.ent symbol, 0; \
symbol: .frame sp, 0, ra; \
+ .cfi_startproc; \
.insn
/*
@@ -66,12 +67,14 @@ symbol: .frame sp, 0, ra; \
.type symbol, @function; \
.ent symbol, 0; \
symbol: .frame sp, framesize, rpc; \
+ .cfi_startproc; \
.insn
/*
* END - mark end of function
*/
#define END(function) \
+ .cfi_endproc; \
.end function; \
.size function, .-function
diff --git a/arch/mips/include/asm/asmmacro-32.h b/arch/mips/include/asm/asmmacro-32.h
index 0ef39ad0f2d4..1c08c1f7903c 100644
--- a/arch/mips/include/asm/asmmacro-32.h
+++ b/arch/mips/include/asm/asmmacro-32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* asmmacro.h: Assembler macros to make things easier to read.
*
diff --git a/arch/mips/include/asm/asmmacro-64.h b/arch/mips/include/asm/asmmacro-64.h
index 38ea609465b1..68039dee5ba6 100644
--- a/arch/mips/include/asm/asmmacro-64.h
+++ b/arch/mips/include/asm/asmmacro-64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* asmmacro.h: Assembler macros to make things easier to read.
*
diff --git a/arch/mips/include/asm/bitrev.h b/arch/mips/include/asm/bitrev.h
index bc739a404ae3..8a2538e08a4e 100644
--- a/arch/mips/include/asm/bitrev.h
+++ b/arch/mips/include/asm/bitrev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MIPS_ASM_BITREV_H__
#define __MIPS_ASM_BITREV_H__
diff --git a/arch/mips/include/asm/bmips-spaces.h b/arch/mips/include/asm/bmips-spaces.h
index eb96541ae67e..febc4c30a308 100644
--- a/arch/mips/include/asm/bmips-spaces.h
+++ b/arch/mips/include/asm/bmips-spaces.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_BMIPS_SPACES_H
#define __ASM_BMIPS_SPACES_H
diff --git a/arch/mips/include/asm/bmips.h b/arch/mips/include/asm/bmips.h
index a92aee7b977a..b3e2975f83d3 100644
--- a/arch/mips/include/asm/bmips.h
+++ b/arch/mips/include/asm/bmips.h
@@ -48,8 +48,8 @@
#include <asm/r4kcache.h>
#include <asm/smp-ops.h>
-extern struct plat_smp_ops bmips43xx_smp_ops;
-extern struct plat_smp_ops bmips5000_smp_ops;
+extern const struct plat_smp_ops bmips43xx_smp_ops;
+extern const struct plat_smp_ops bmips5000_smp_ops;
static inline int register_bmips_smp_ops(void)
{
diff --git a/arch/mips/include/asm/bug.h b/arch/mips/include/asm/bug.h
index 540c98a810d1..745dc160a069 100644
--- a/arch/mips/include/asm/bug.h
+++ b/arch/mips/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_BUG_H
#define __ASM_BUG_H
diff --git a/arch/mips/include/asm/bugs.h b/arch/mips/include/asm/bugs.h
index b160a706795d..d8ab8b7129b5 100644
--- a/arch/mips/include/asm/bugs.h
+++ b/arch/mips/include/asm/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is included by init/main.c to check for architecture-dependent bugs.
*
diff --git a/arch/mips/include/asm/clock.h b/arch/mips/include/asm/clock.h
index 4809c29a4890..5a8f96ebe5fa 100644
--- a/arch/mips/include/asm/clock.h
+++ b/arch/mips/include/asm/clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MIPS_CLOCK_H
#define __ASM_MIPS_CLOCK_H
diff --git a/arch/mips/include/asm/cmp.h b/arch/mips/include/asm/cmp.h
index 033d97303c85..e9e87504bb0c 100644
--- a/arch/mips/include/asm/cmp.h
+++ b/arch/mips/include/asm/cmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CMP_H
#define _ASM_CMP_H
diff --git a/arch/mips/include/asm/cmpxchg.h b/arch/mips/include/asm/cmpxchg.h
index 903f3bf48419..7e25c5cc353a 100644
--- a/arch/mips/include/asm/cmpxchg.h
+++ b/arch/mips/include/asm/cmpxchg.h
@@ -155,14 +155,16 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
return __cmpxchg_small(ptr, old, new, size);
case 4:
- return __cmpxchg_asm("ll", "sc", (volatile u32 *)ptr, old, new);
+ return __cmpxchg_asm("ll", "sc", (volatile u32 *)ptr,
+ (u32)old, new);
case 8:
/* lld/scd are only available for MIPS64 */
if (!IS_ENABLED(CONFIG_64BIT))
return __cmpxchg_called_with_bad_pointer();
- return __cmpxchg_asm("lld", "scd", (volatile u64 *)ptr, old, new);
+ return __cmpxchg_asm("lld", "scd", (volatile u64 *)ptr,
+ (u64)old, new);
default:
return __cmpxchg_called_with_bad_pointer();
diff --git a/arch/mips/include/asm/compat-signal.h b/arch/mips/include/asm/compat-signal.h
index 4c6176467146..e87cd243b0f4 100644
--- a/arch/mips/include/asm/compat-signal.h
+++ b/arch/mips/include/asm/compat-signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_COMPAT_SIGNAL_H
#define __ASM_COMPAT_SIGNAL_H
diff --git a/arch/mips/include/asm/compat.h b/arch/mips/include/asm/compat.h
index a9580097cba8..8e2b5b556488 100644
--- a/arch/mips/include/asm/compat.h
+++ b/arch/mips/include/asm/compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_COMPAT_H
#define _ASM_COMPAT_H
/*
diff --git a/arch/mips/include/asm/cpu-info.h b/arch/mips/include/asm/cpu-info.h
index cd6efb07c980..a41059d47d31 100644
--- a/arch/mips/include/asm/cpu-info.h
+++ b/arch/mips/include/asm/cpu-info.h
@@ -15,6 +15,8 @@
#include <linux/cache.h>
#include <linux/types.h>
+#include <asm/mipsregs.h>
+
/*
* Descriptor for a cache
*/
@@ -77,17 +79,10 @@ struct cpuinfo_mips {
struct cache_desc tcache; /* Tertiary/split secondary cache */
int srsets; /* Shadow register sets */
int package;/* physical package number */
- int core; /* physical core number */
+ unsigned int globalnumber;
#ifdef CONFIG_64BIT
int vmbits; /* Virtual memory size in bits */
#endif
-#if defined(CONFIG_MIPS_MT_SMP) || defined(CONFIG_CPU_MIPSR6)
- /*
- * There is not necessarily a 1:1 mapping of VPE num to CPU number
- * in particular on multi-core systems.
- */
- int vpe_id; /* Virtual Processor number */
-#endif
void *data; /* Additional data */
unsigned int watch_reg_count; /* Number that exist */
unsigned int watch_reg_use_cnt; /* Usable by ptrace */
@@ -144,11 +139,52 @@ struct proc_cpuinfo_notifier_args {
unsigned long n;
};
-#if defined(CONFIG_MIPS_MT_SMP) || defined(CONFIG_CPU_MIPSR6)
-# define cpu_vpe_id(cpuinfo) ((cpuinfo)->vpe_id)
-#else
-# define cpu_vpe_id(cpuinfo) ({ (void)cpuinfo; 0; })
-#endif
+static inline unsigned int cpu_cluster(struct cpuinfo_mips *cpuinfo)
+{
+ /* Optimisation for systems where multiple clusters aren't used */
+ if (!IS_ENABLED(CONFIG_CPU_MIPSR6))
+ return 0;
+
+ return (cpuinfo->globalnumber & MIPS_GLOBALNUMBER_CLUSTER) >>
+ MIPS_GLOBALNUMBER_CLUSTER_SHF;
+}
+
+static inline unsigned int cpu_core(struct cpuinfo_mips *cpuinfo)
+{
+ return (cpuinfo->globalnumber & MIPS_GLOBALNUMBER_CORE) >>
+ MIPS_GLOBALNUMBER_CORE_SHF;
+}
+
+static inline unsigned int cpu_vpe_id(struct cpuinfo_mips *cpuinfo)
+{
+ /* Optimisation for systems where VP(E)s aren't used */
+ if (!IS_ENABLED(CONFIG_MIPS_MT_SMP) && !IS_ENABLED(CONFIG_CPU_MIPSR6))
+ return 0;
+
+ return (cpuinfo->globalnumber & MIPS_GLOBALNUMBER_VP) >>
+ MIPS_GLOBALNUMBER_VP_SHF;
+}
+
+extern void cpu_set_cluster(struct cpuinfo_mips *cpuinfo, unsigned int cluster);
+extern void cpu_set_core(struct cpuinfo_mips *cpuinfo, unsigned int core);
+extern void cpu_set_vpe_id(struct cpuinfo_mips *cpuinfo, unsigned int vpe);
+
+static inline bool cpus_are_siblings(int cpua, int cpub)
+{
+ struct cpuinfo_mips *infoa = &cpu_data[cpua];
+ struct cpuinfo_mips *infob = &cpu_data[cpub];
+ unsigned int gnuma, gnumb;
+
+ if (infoa->package != infob->package)
+ return false;
+
+ gnuma = infoa->globalnumber & ~MIPS_GLOBALNUMBER_VP;
+ gnumb = infob->globalnumber & ~MIPS_GLOBALNUMBER_VP;
+ if (gnuma != gnumb)
+ return false;
+
+ return true;
+}
static inline unsigned long cpu_asid_inc(void)
{
diff --git a/arch/mips/include/asm/cpu-type.h b/arch/mips/include/asm/cpu-type.h
index 175fe565f4e1..a45af3de075d 100644
--- a/arch/mips/include/asm/cpu-type.h
+++ b/arch/mips/include/asm/cpu-type.h
@@ -151,11 +151,6 @@ static inline int __pure __get_cpu_type(const int cpu_type)
case CPU_R5500:
#endif
-#ifdef CONFIG_SYS_HAS_CPU_R6000
- case CPU_R6000:
- case CPU_R6000A:
-#endif
-
#ifdef CONFIG_SYS_HAS_CPU_NEVADA
case CPU_NEVADA:
#endif
diff --git a/arch/mips/include/asm/cpu.h b/arch/mips/include/asm/cpu.h
index d0c152b989f8..d39324c4adf1 100644
--- a/arch/mips/include/asm/cpu.h
+++ b/arch/mips/include/asm/cpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* cpu.h: Values of the PRId register used to match up
* various MIPS cpu types.
@@ -286,11 +287,6 @@ enum cpu_type_enum {
CPU_R3081, CPU_R3081E,
/*
- * R6000 class processors
- */
- CPU_R6000, CPU_R6000A,
-
- /*
* R4000 class processors
*/
CPU_R4000PC, CPU_R4000SC, CPU_R4000MC, CPU_R4200, CPU_R4300, CPU_R4310,
diff --git a/arch/mips/include/asm/dma-mapping.h b/arch/mips/include/asm/dma-mapping.h
index aba71385f9d1..42f8cbad6c23 100644
--- a/arch/mips/include/asm/dma-mapping.h
+++ b/arch/mips/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_DMA_MAPPING_H
#define _ASM_DMA_MAPPING_H
diff --git a/arch/mips/include/asm/dma.h b/arch/mips/include/asm/dma.h
index 5b9ed1bffdbc..be726b943530 100644
--- a/arch/mips/include/asm/dma.h
+++ b/arch/mips/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm/dma.h: Defines for using and allocating dma channels.
* Written by Hennus Bergman, 1992.
diff --git a/arch/mips/include/asm/dsemul.h b/arch/mips/include/asm/dsemul.h
index a6e067801f23..b47a97527673 100644
--- a/arch/mips/include/asm/dsemul.h
+++ b/arch/mips/include/asm/dsemul.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/asm/edac.h b/arch/mips/include/asm/edac.h
index 980b16527374..fc467767329b 100644
--- a/arch/mips/include/asm/edac.h
+++ b/arch/mips/include/asm/edac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_EDAC_H
#define ASM_EDAC_H
diff --git a/arch/mips/include/asm/extable.h b/arch/mips/include/asm/extable.h
index dce7a627a925..78d0ae156058 100644
--- a/arch/mips/include/asm/extable.h
+++ b/arch/mips/include/asm/extable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_EXTABLE_H
#define _ASM_EXTABLE_H
diff --git a/arch/mips/include/asm/floppy.h b/arch/mips/include/asm/floppy.h
index d75aed36480a..021d09ae5670 100644
--- a/arch/mips/include/asm/floppy.h
+++ b/arch/mips/include/asm/floppy.h
@@ -10,11 +10,11 @@
#ifndef _ASM_FLOPPY_H
#define _ASM_FLOPPY_H
-#include <linux/dma-mapping.h>
+#include <asm/io.h>
static inline void fd_cacheflush(char * addr, long size)
{
- dma_cache_sync(NULL, addr, size, DMA_BIDIRECTIONAL);
+ dma_cache_wback_inv((unsigned long)addr, size);
}
#define MAX_BUFFER_SECTORS 24
diff --git a/arch/mips/include/asm/fpu_emulator.h b/arch/mips/include/asm/fpu_emulator.h
index c05369e0b8d6..b36097d3cbf4 100644
--- a/arch/mips/include/asm/fpu_emulator.h
+++ b/arch/mips/include/asm/fpu_emulator.h
@@ -36,6 +36,7 @@ struct mips_fpu_emulator_stats {
unsigned long emulated;
unsigned long loads;
unsigned long stores;
+ unsigned long branches;
unsigned long cp1ops;
unsigned long cp1xops;
unsigned long errors;
@@ -45,6 +46,121 @@ struct mips_fpu_emulator_stats {
unsigned long ieee754_zerodiv;
unsigned long ieee754_invalidop;
unsigned long ds_emul;
+
+ unsigned long abs_s;
+ unsigned long abs_d;
+ unsigned long add_s;
+ unsigned long add_d;
+ unsigned long bc1eqz;
+ unsigned long bc1nez;
+ unsigned long ceil_w_s;
+ unsigned long ceil_w_d;
+ unsigned long ceil_l_s;
+ unsigned long ceil_l_d;
+ unsigned long class_s;
+ unsigned long class_d;
+ unsigned long cmp_af_s;
+ unsigned long cmp_af_d;
+ unsigned long cmp_eq_s;
+ unsigned long cmp_eq_d;
+ unsigned long cmp_le_s;
+ unsigned long cmp_le_d;
+ unsigned long cmp_lt_s;
+ unsigned long cmp_lt_d;
+ unsigned long cmp_ne_s;
+ unsigned long cmp_ne_d;
+ unsigned long cmp_or_s;
+ unsigned long cmp_or_d;
+ unsigned long cmp_ueq_s;
+ unsigned long cmp_ueq_d;
+ unsigned long cmp_ule_s;
+ unsigned long cmp_ule_d;
+ unsigned long cmp_ult_s;
+ unsigned long cmp_ult_d;
+ unsigned long cmp_un_s;
+ unsigned long cmp_un_d;
+ unsigned long cmp_une_s;
+ unsigned long cmp_une_d;
+ unsigned long cmp_saf_s;
+ unsigned long cmp_saf_d;
+ unsigned long cmp_seq_s;
+ unsigned long cmp_seq_d;
+ unsigned long cmp_sle_s;
+ unsigned long cmp_sle_d;
+ unsigned long cmp_slt_s;
+ unsigned long cmp_slt_d;
+ unsigned long cmp_sne_s;
+ unsigned long cmp_sne_d;
+ unsigned long cmp_sor_s;
+ unsigned long cmp_sor_d;
+ unsigned long cmp_sueq_s;
+ unsigned long cmp_sueq_d;
+ unsigned long cmp_sule_s;
+ unsigned long cmp_sule_d;
+ unsigned long cmp_sult_s;
+ unsigned long cmp_sult_d;
+ unsigned long cmp_sun_s;
+ unsigned long cmp_sun_d;
+ unsigned long cmp_sune_s;
+ unsigned long cmp_sune_d;
+ unsigned long cvt_d_l;
+ unsigned long cvt_d_s;
+ unsigned long cvt_d_w;
+ unsigned long cvt_l_s;
+ unsigned long cvt_l_d;
+ unsigned long cvt_s_d;
+ unsigned long cvt_s_l;
+ unsigned long cvt_s_w;
+ unsigned long cvt_w_s;
+ unsigned long cvt_w_d;
+ unsigned long div_s;
+ unsigned long div_d;
+ unsigned long floor_w_s;
+ unsigned long floor_w_d;
+ unsigned long floor_l_s;
+ unsigned long floor_l_d;
+ unsigned long maddf_s;
+ unsigned long maddf_d;
+ unsigned long max_s;
+ unsigned long max_d;
+ unsigned long maxa_s;
+ unsigned long maxa_d;
+ unsigned long min_s;
+ unsigned long min_d;
+ unsigned long mina_s;
+ unsigned long mina_d;
+ unsigned long mov_s;
+ unsigned long mov_d;
+ unsigned long msubf_s;
+ unsigned long msubf_d;
+ unsigned long mul_s;
+ unsigned long mul_d;
+ unsigned long neg_s;
+ unsigned long neg_d;
+ unsigned long recip_s;
+ unsigned long recip_d;
+ unsigned long rint_s;
+ unsigned long rint_d;
+ unsigned long round_w_s;
+ unsigned long round_w_d;
+ unsigned long round_l_s;
+ unsigned long round_l_d;
+ unsigned long rsqrt_s;
+ unsigned long rsqrt_d;
+ unsigned long sel_s;
+ unsigned long sel_d;
+ unsigned long seleqz_s;
+ unsigned long seleqz_d;
+ unsigned long selnez_s;
+ unsigned long selnez_d;
+ unsigned long sqrt_s;
+ unsigned long sqrt_d;
+ unsigned long sub_s;
+ unsigned long sub_d;
+ unsigned long trunc_w_s;
+ unsigned long trunc_w_d;
+ unsigned long trunc_l_s;
+ unsigned long trunc_l_d;
};
DECLARE_PER_CPU(struct mips_fpu_emulator_stats, fpuemustats);
@@ -62,7 +178,7 @@ do { \
extern int fpu_emulator_cop1Handler(struct pt_regs *xcp,
struct mips_fpu_struct *ctx, int has_fpu,
- void *__user *fault_addr);
+ void __user **fault_addr);
void force_fcr31_sig(unsigned long fcr31, void __user *fault_addr,
struct task_struct *tsk);
int process_fpemu_return(int sig, void __user *fault_addr,
diff --git a/arch/mips/include/asm/fw/arc/hinv.h b/arch/mips/include/asm/fw/arc/hinv.h
index 9fac64a26353..d67b6a90f9b3 100644
--- a/arch/mips/include/asm/fw/arc/hinv.h
+++ b/arch/mips/include/asm/fw/arc/hinv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ARCS hardware/memory inventory/configuration and system ID definitions.
*/
diff --git a/arch/mips/include/asm/gio_device.h b/arch/mips/include/asm/gio_device.h
index 71a986e9b694..c52948f9ca95 100644
--- a/arch/mips/include/asm/gio_device.h
+++ b/arch/mips/include/asm/gio_device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/device.h>
#include <linux/mod_devicetable.h>
diff --git a/arch/mips/include/asm/highmem.h b/arch/mips/include/asm/highmem.h
index 279b6d14ffeb..9d84aafc33d0 100644
--- a/arch/mips/include/asm/highmem.h
+++ b/arch/mips/include/asm/highmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* highmem.h: virtual kernel memory mappings for high memory
*
diff --git a/arch/mips/include/asm/hpet.h b/arch/mips/include/asm/hpet.h
index 18a8f778bfaa..d47268eceabc 100644
--- a/arch/mips/include/asm/hpet.h
+++ b/arch/mips/include/asm/hpet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_HPET_H
#define _ASM_HPET_H
diff --git a/arch/mips/include/asm/idle.h b/arch/mips/include/asm/idle.h
index a2d18ab57ac6..655a6dbc861a 100644
--- a/arch/mips/include/asm/idle.h
+++ b/arch/mips/include/asm/idle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_IDLE_H
#define __ASM_IDLE_H
diff --git a/arch/mips/include/asm/io.h b/arch/mips/include/asm/io.h
index ecabc00c1e66..0cbf3af37eca 100644
--- a/arch/mips/include/asm/io.h
+++ b/arch/mips/include/asm/io.h
@@ -632,4 +632,6 @@ extern void (*_dma_cache_inv)(unsigned long start, unsigned long size);
*/
#define xlate_dev_kmem_ptr(p) p
+void __ioread64_copy(void *to, const void __iomem *from, size_t count);
+
#endif /* _ASM_IO_H */
diff --git a/arch/mips/include/asm/isadep.h b/arch/mips/include/asm/isadep.h
index b4af6eb24ab9..d1683202399b 100644
--- a/arch/mips/include/asm/isadep.h
+++ b/arch/mips/include/asm/isadep.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Various ISA level dependent constants.
* Most of the following constants reflect the different layout
diff --git a/arch/mips/include/asm/jazzdma.h b/arch/mips/include/asm/jazzdma.h
index 2cefc3c47241..d913439c738c 100644
--- a/arch/mips/include/asm/jazzdma.h
+++ b/arch/mips/include/asm/jazzdma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Helpfile for jazzdma.c -- Mips Jazz R4030 DMA controller support
*/
diff --git a/arch/mips/include/asm/kdebug.h b/arch/mips/include/asm/kdebug.h
index 8e3d08e739c1..a55a207cfaa3 100644
--- a/arch/mips/include/asm/kdebug.h
+++ b/arch/mips/include/asm/kdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MIPS_KDEBUG_H
#define _ASM_MIPS_KDEBUG_H
diff --git a/arch/mips/include/asm/kgdb.h b/arch/mips/include/asm/kgdb.h
index 69dc0df94a96..4f2302267deb 100644
--- a/arch/mips/include/asm/kgdb.h
+++ b/arch/mips/include/asm/kgdb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_KGDB_H_
#define __ASM_KGDB_H_
diff --git a/arch/mips/include/asm/kmap_types.h b/arch/mips/include/asm/kmap_types.h
index c1909dcada39..16665dc2431b 100644
--- a/arch/mips/include/asm/kmap_types.h
+++ b/arch/mips/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_KMAP_TYPES_H
#define _ASM_KMAP_TYPES_H
diff --git a/arch/mips/include/asm/kvm_para.h b/arch/mips/include/asm/kvm_para.h
index 5a9aa918abe6..60b1aa0b7014 100644
--- a/arch/mips/include/asm/kvm_para.h
+++ b/arch/mips/include/asm/kvm_para.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MIPS_KVM_PARA_H
#define _ASM_MIPS_KVM_PARA_H
diff --git a/arch/mips/include/asm/lasat/ds1603.h b/arch/mips/include/asm/lasat/ds1603.h
index edcd7544b358..ab833be9637d 100644
--- a/arch/mips/include/asm/lasat/ds1603.h
+++ b/arch/mips/include/asm/lasat/ds1603.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/addrspace.h>
/* Lasat 100 */
diff --git a/arch/mips/include/asm/lasat/eeprom.h b/arch/mips/include/asm/lasat/eeprom.h
index d918b822e376..24001a5cbb11 100644
--- a/arch/mips/include/asm/lasat/eeprom.h
+++ b/arch/mips/include/asm/lasat/eeprom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/addrspace.h>
/* lasat 100 */
diff --git a/arch/mips/include/asm/lasat/head.h b/arch/mips/include/asm/lasat/head.h
index f5589f31a197..20b0ecedd4b5 100644
--- a/arch/mips/include/asm/lasat/head.h
+++ b/arch/mips/include/asm/lasat/head.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Image header stuff
*/
diff --git a/arch/mips/include/asm/lasat/lasatint.h b/arch/mips/include/asm/lasat/lasatint.h
index e0d2458b43d0..b2b346e0ca38 100644
--- a/arch/mips/include/asm/lasat/lasatint.h
+++ b/arch/mips/include/asm/lasat/lasatint.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LASAT_LASATINT_H
#define __ASM_LASAT_LASATINT_H
diff --git a/arch/mips/include/asm/lasat/picvue.h b/arch/mips/include/asm/lasat/picvue.h
index 42a492edc40e..99987c5a4b83 100644
--- a/arch/mips/include/asm/lasat/picvue.h
+++ b/arch/mips/include/asm/lasat/picvue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Lasat 100 */
#define PVC_REG_100 KSEG1ADDR(0x1c820000)
#define PVC_DATA_SHIFT_100 0
diff --git a/arch/mips/include/asm/lasat/serial.h b/arch/mips/include/asm/lasat/serial.h
index a2f6c7a9cfe8..7b43d74089d1 100644
--- a/arch/mips/include/asm/lasat/serial.h
+++ b/arch/mips/include/asm/lasat/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/lasat/lasat.h>
/* Lasat 100 boards serial configuration */
diff --git a/arch/mips/include/asm/linkage.h b/arch/mips/include/asm/linkage.h
index 99651b0ea7c7..1829c2b6da6c 100644
--- a/arch/mips/include/asm/linkage.h
+++ b/arch/mips/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
diff --git a/arch/mips/include/asm/local.h b/arch/mips/include/asm/local.h
index 8feaed62a2ab..ac8264eca1e9 100644
--- a/arch/mips/include/asm/local.h
+++ b/arch/mips/include/asm/local.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARCH_MIPS_LOCAL_H
#define _ARCH_MIPS_LOCAL_H
diff --git a/arch/mips/include/asm/m48t37.h b/arch/mips/include/asm/m48t37.h
index e6eaf5339e4e..3687a02e692b 100644
--- a/arch/mips/include/asm/m48t37.h
+++ b/arch/mips/include/asm/m48t37.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Registers for the SGS-Thomson M48T37 Timekeeper RAM chip
*/
diff --git a/arch/mips/include/asm/maar.h b/arch/mips/include/asm/maar.h
index e10f78befbd9..1e0da80bba13 100644
--- a/arch/mips/include/asm/maar.h
+++ b/arch/mips/include/asm/maar.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2014 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/asm/mach-ath25/ath25_platform.h b/arch/mips/include/asm/mach-ath25/ath25_platform.h
index 4f4ee4f9e5ec..0aacc55aa51d 100644
--- a/arch/mips/include/asm/mach-ath25/ath25_platform.h
+++ b/arch/mips/include/asm/mach-ath25/ath25_platform.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_ATH25_PLATFORM_H
#define __ASM_MACH_ATH25_PLATFORM_H
diff --git a/arch/mips/include/asm/mach-au1x00/au1200fb.h b/arch/mips/include/asm/mach-au1x00/au1200fb.h
index b3c87cc64bb9..e0e98f06c642 100644
--- a/arch/mips/include/asm/mach-au1x00/au1200fb.h
+++ b/arch/mips/include/asm/mach-au1x00/au1200fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* platform data for au1200fb driver.
*/
diff --git a/arch/mips/include/asm/mach-au1x00/au1550_spi.h b/arch/mips/include/asm/mach-au1x00/au1550_spi.h
index 08e1958e9410..fe6ca4606d77 100644
--- a/arch/mips/include/asm/mach-au1x00/au1550_spi.h
+++ b/arch/mips/include/asm/mach-au1x00/au1550_spi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* au1550_spi.h - Au1550 PSC SPI controller driver - platform data structure
*/
diff --git a/arch/mips/include/asm/mach-au1x00/au1550nd.h b/arch/mips/include/asm/mach-au1x00/au1550nd.h
index ad4c0a03afef..d26dc1dadf44 100644
--- a/arch/mips/include/asm/mach-au1x00/au1550nd.h
+++ b/arch/mips/include/asm/mach-au1x00/au1550nd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* platform data for the Au1550 NAND driver
*/
diff --git a/arch/mips/include/asm/mach-au1x00/au1xxx_eth.h b/arch/mips/include/asm/mach-au1x00/au1xxx_eth.h
index 49dc8d9db186..9d1c8d5ed4a8 100644
--- a/arch/mips/include/asm/mach-au1x00/au1xxx_eth.h
+++ b/arch/mips/include/asm/mach-au1x00/au1xxx_eth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __AU1X00_ETH_DATA_H
#define __AU1X00_ETH_DATA_H
diff --git a/arch/mips/include/asm/mach-au1x00/cpu-feature-overrides.h b/arch/mips/include/asm/mach-au1x00/cpu-feature-overrides.h
index bace5b9ae4df..f439cf9cf9d1 100644
--- a/arch/mips/include/asm/mach-au1x00/cpu-feature-overrides.h
+++ b/arch/mips/include/asm/mach-au1x00/cpu-feature-overrides.h
@@ -8,12 +8,16 @@
#define __ASM_MACH_AU1X00_CPU_FEATURE_OVERRIDES_H
#define cpu_has_tlb 1
+#define cpu_has_ftlb 0
#define cpu_has_tlbinv 0
#define cpu_has_segments 0
#define cpu_has_eva 0
#define cpu_has_htw 0
+#define cpu_has_ldpte 0
#define cpu_has_rixiex 0
#define cpu_has_maar 0
+#define cpu_has_rw_llb 0
+#define cpu_has_3kex 0
#define cpu_has_4kex 1
#define cpu_has_3k_cache 0
#define cpu_has_4k_cache 1
@@ -30,6 +34,12 @@
#define cpu_has_mcheck 1
#define cpu_has_ejtag 1
#define cpu_has_llsc 1
+#define cpu_has_guestctl0ext 0
+#define cpu_has_guestctl1 0
+#define cpu_has_guestctl2 0
+#define cpu_has_guestid 0
+#define cpu_has_drg 0
+#define cpu_has_bp_ghist 0
#define cpu_has_mips16 0
#define cpu_has_mips16e2 0
#define cpu_has_mdmx 0
@@ -37,17 +47,23 @@
#define cpu_has_smartmips 0
#define cpu_has_rixi 0
#define cpu_has_mmips 0
+#define cpu_has_lpa 0
+#define cpu_has_mhv 0
#define cpu_has_vtag_icache 0
#define cpu_has_dc_aliases 0
#define cpu_has_ic_fills_f_dc 1
#define cpu_has_pindexed_dcache 0
#define cpu_has_mips32r1 1
#define cpu_has_mips32r2 0
+#define cpu_has_mips32r6 0
#define cpu_has_mips64r1 0
#define cpu_has_mips64r2 0
+#define cpu_has_mips64r6 0
#define cpu_has_dsp 0
#define cpu_has_dsp2 0
+#define cpu_has_dsp3 0
#define cpu_has_mipsmt 0
+#define cpu_has_vp 0
#define cpu_has_userlocal 0
#define cpu_has_nofpuex 0
#define cpu_has_64bits 0
@@ -58,9 +74,19 @@
#define cpu_dcache_line_size() 32
#define cpu_icache_line_size() 32
+#define cpu_scache_line_size() 0
#define cpu_has_perf_cntr_intr_bit 0
#define cpu_has_vz 0
#define cpu_has_msa 0
+#define cpu_has_fre 0
+#define cpu_has_cdmm 0
+#define cpu_has_small_pages 0
+#define cpu_has_nan_legacy 1
+#define cpu_has_nan_2008 1
+#define cpu_has_ebase_wg 0
+#define cpu_has_badinstr 0
+#define cpu_has_badinstrp 0
+#define cpu_has_contextconfig 0
#endif /* __ASM_MACH_AU1X00_CPU_FEATURE_OVERRIDES_H */
diff --git a/arch/mips/include/asm/mach-au1x00/gpio-au1300.h b/arch/mips/include/asm/mach-au1x00/gpio-au1300.h
index d607d643b973..d25846a1291f 100644
--- a/arch/mips/include/asm/mach-au1x00/gpio-au1300.h
+++ b/arch/mips/include/asm/mach-au1x00/gpio-au1300.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* gpio-au1300.h -- GPIO control for Au1300 GPIC and compatibles.
*
diff --git a/arch/mips/include/asm/mach-au1x00/prom.h b/arch/mips/include/asm/mach-au1x00/prom.h
index 4c0e09cf1735..c62ee0246d76 100644
--- a/arch/mips/include/asm/mach-au1x00/prom.h
+++ b/arch/mips/include/asm/mach-au1x00/prom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __AU1X00_PROM_H
#define __AU1X00_PROM_H
diff --git a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
index ee3d4fe515a0..cbf9da7f2f94 100644
--- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BCM47XX_BOARD_H
#define __BCM47XX_BOARD_H
diff --git a/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h b/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h
index b7992cd4aaf9..b23ff47ea475 100644
--- a/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h
+++ b/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H
#define __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_board.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_board.h
index fa3e7e617b09..1d19a726f86c 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_board.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_board.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_BOARD_H_
#define BCM63XX_BOARD_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h
index 56bb19219d48..1cad18e6681d 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_CPU_H_
#define BCM63XX_CPU_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cs.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cs.h
index b1821c866e53..1c634d7c1597 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cs.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_CS_H
#define BCM63XX_CS_H
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
index b587d45c3045..4e4970787371 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BCM63XX_DSP_H
#define __BCM63XX_DSP_H
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h
index c4e856f27040..c0bd47444cff 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_DEV_ENET_H_
#define BCM63XX_DEV_ENET_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
index 354b8481ec4a..4d5005f2b8b5 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BCM63XX_FLASH_H
#define __BCM63XX_FLASH_H
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_hsspi.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_hsspi.h
index 1b1acafb3d79..f93f176c1bee 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_hsspi.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_hsspi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_DEV_HSSPI_H
#define BCM63XX_DEV_HSSPI_H
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pci.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pci.h
index c549344b70ad..1951c125cf0e 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pci.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_DEV_PCI_H_
#define BCM63XX_DEV_PCI_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pcmcia.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pcmcia.h
index 2beb3969ce3b..01674ac58bb5 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pcmcia.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pcmcia.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_DEV_PCMCIA_H_
#define BCM63XX_DEV_PCMCIA_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_spi.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_spi.h
index dd299548860d..0ab750522324 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_spi.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_spi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_DEV_SPI_H
#define BCM63XX_DEV_SPI_H
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h
index 23c705baf171..88f8cf1c7094 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_DEV_UART_H_
#define BCM63XX_DEV_UART_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_usb_usbd.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_usb_usbd.h
index 5d6d6986f40b..3f920baff966 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_usb_usbd.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_usb_usbd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_DEV_USB_USBD_H_
#define BCM63XX_DEV_USB_USBD_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
index 565ff36a1119..8fe88c2251e4 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_GPIO_H
#define BCM63XX_GPIO_H
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_io.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_io.h
index 7033144aab2d..31c692433ada 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_io.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_IO_H_
#define BCM63XX_IO_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_irq.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_irq.h
index 0c3074b871b8..7887bc6905f5 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_irq.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_IRQ_H_
#define BCM63XX_IRQ_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_iudma.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_iudma.h
index 1e89df7244bd..73df916e414d 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_iudma.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_iudma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_IUDMA_H_
#define BCM63XX_IUDMA_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_nvram.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_nvram.h
index 348df49dcc9f..f78d725f263f 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_nvram.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_nvram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_NVRAM_H
#define BCM63XX_NVRAM_H
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
index 5035f09c5427..bc3444cd4ef2 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_REGS_H_
#define BCM63XX_REGS_H_
@@ -710,7 +711,7 @@
/* Broadcom 6345 ENET DMA definitions */
#define ENETDMA_6345_CHANCFG_REG (0x00)
-#define ENETDMA_6345_MAXBURST_REG (0x40)
+#define ENETDMA_6345_MAXBURST_REG (0x04)
#define ENETDMA_6345_RSTART_REG (0x08)
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_reset.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_reset.h
index 3a6eb9c1adc6..2c0645b7da84 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_reset.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_reset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BCM63XX_RESET_H
#define __BCM63XX_RESET_H
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_timer.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_timer.h
index c0fce833c9ed..bcbece793fd8 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_timer.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_TIMER_H_
#define BCM63XX_TIMER_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
index b86a0efba665..5e5b1bc4a324 100644
--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BOARD_BCM963XX_H_
#define BOARD_BCM963XX_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h b/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h
index b56cf10b91d3..0ebecbdb9749 100644
--- a/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h
+++ b/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_BCM963XX_CPU_FEATURE_OVERRIDES_H
#define __ASM_MACH_BCM963XX_CPU_FEATURE_OVERRIDES_H
diff --git a/arch/mips/include/asm/mach-bcm63xx/ioremap.h b/arch/mips/include/asm/mach-bcm63xx/ioremap.h
index aea6e64b828f..8cd261ec0a75 100644
--- a/arch/mips/include/asm/mach-bcm63xx/ioremap.h
+++ b/arch/mips/include/asm/mach-bcm63xx/ioremap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_IOREMAP_H_
#define BCM63XX_IOREMAP_H_
diff --git a/arch/mips/include/asm/mach-bcm63xx/irq.h b/arch/mips/include/asm/mach-bcm63xx/irq.h
index 2bbfc8d1f307..b016f0615d5f 100644
--- a/arch/mips/include/asm/mach-bcm63xx/irq.h
+++ b/arch/mips/include/asm/mach-bcm63xx/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_BCM63XX_IRQ_H
#define __ASM_MACH_BCM63XX_IRQ_H
diff --git a/arch/mips/include/asm/mach-bmips/cpu-feature-overrides.h b/arch/mips/include/asm/mach-bmips/cpu-feature-overrides.h
index fa0583e1ce0d..68a219d80407 100644
--- a/arch/mips/include/asm/mach-bmips/cpu-feature-overrides.h
+++ b/arch/mips/include/asm/mach-bmips/cpu-feature-overrides.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_BMIPS_CPU_FEATURE_OVERRIDES_H
#define __ASM_MACH_BMIPS_CPU_FEATURE_OVERRIDES_H
diff --git a/arch/mips/include/asm/mach-bmips/ioremap.h b/arch/mips/include/asm/mach-bmips/ioremap.h
index 29c7a7bb7080..52632ebc705f 100644
--- a/arch/mips/include/asm/mach-bmips/ioremap.h
+++ b/arch/mips/include/asm/mach-bmips/ioremap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_BMIPS_IOREMAP_H
#define __ASM_MACH_BMIPS_IOREMAP_H
diff --git a/arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h b/arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h
index bd8b9bbe1771..a4f798629c3d 100644
--- a/arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h
+++ b/arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h
@@ -46,9 +46,9 @@
#define cpu_has_64bits 1
#define cpu_has_octeon_cache 1
#define cpu_has_saa octeon_has_saa()
-#define cpu_has_mips32r1 0
-#define cpu_has_mips32r2 0
-#define cpu_has_mips64r1 0
+#define cpu_has_mips32r1 1
+#define cpu_has_mips32r2 1
+#define cpu_has_mips64r1 1
#define cpu_has_mips64r2 1
#define cpu_has_dsp 0
#define cpu_has_dsp2 0
diff --git a/arch/mips/include/asm/mach-db1x00/bcsr.h b/arch/mips/include/asm/mach-db1x00/bcsr.h
index 3c3ed4ae45e2..4a27738e8b22 100644
--- a/arch/mips/include/asm/mach-db1x00/bcsr.h
+++ b/arch/mips/include/asm/mach-db1x00/bcsr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* bcsr.h -- Db1xxx/Pb1xxx Devboard CPLD registers ("BCSR") abstraction.
*
diff --git a/arch/mips/include/asm/mach-generic/kmalloc.h b/arch/mips/include/asm/mach-generic/kmalloc.h
index a5d669086ed9..74207c7bd00d 100644
--- a/arch/mips/include/asm/mach-generic/kmalloc.h
+++ b/arch/mips/include/asm/mach-generic/kmalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_GENERIC_KMALLOC_H
#define __ASM_MACH_GENERIC_KMALLOC_H
diff --git a/arch/mips/include/asm/mach-ip27/mmzone.h b/arch/mips/include/asm/mach-ip27/mmzone.h
index ebc9377ff876..2ed3094dee07 100644
--- a/arch/mips/include/asm/mach-ip27/mmzone.h
+++ b/arch/mips/include/asm/mach-ip27/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MACH_MMZONE_H
#define _ASM_MACH_MMZONE_H
diff --git a/arch/mips/include/asm/mach-ip27/topology.h b/arch/mips/include/asm/mach-ip27/topology.h
index defd135e7ac8..42ea1313626c 100644
--- a/arch/mips/include/asm/mach-ip27/topology.h
+++ b/arch/mips/include/asm/mach-ip27/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MACH_TOPOLOGY_H
#define _ASM_MACH_TOPOLOGY_H 1
@@ -23,7 +24,6 @@ struct cpuinfo_ip27 {
extern struct cpuinfo_ip27 sn_cpu_info[NR_CPUS];
#define cpu_to_node(cpu) (sn_cpu_info[(cpu)].p_nodeid)
-#define parent_node(node) (node)
#define cpumask_of_node(node) ((node) == -1 ? \
cpu_all_mask : \
&hub_data(node)->h_cpus)
diff --git a/arch/mips/include/asm/mach-ip32/kmalloc.h b/arch/mips/include/asm/mach-ip32/kmalloc.h
index 042ca926c48f..07a0146ea61f 100644
--- a/arch/mips/include/asm/mach-ip32/kmalloc.h
+++ b/arch/mips/include/asm/mach-ip32/kmalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_IP32_KMALLOC_H
#define __ASM_MACH_IP32_KMALLOC_H
diff --git a/arch/mips/include/asm/mach-jz4740/base.h b/arch/mips/include/asm/mach-jz4740/base.h
index f37318605452..96b2d6674cdb 100644
--- a/arch/mips/include/asm/mach-jz4740/base.h
+++ b/arch/mips/include/asm/mach-jz4740/base.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_JZ4740_BASE_H__
#define __ASM_MACH_JZ4740_BASE_H__
diff --git a/arch/mips/include/asm/mach-jz4740/jz4740_mmc.h b/arch/mips/include/asm/mach-jz4740/jz4740_mmc.h
index 8543f432b4b3..e9cc62cfac99 100644
--- a/arch/mips/include/asm/mach-jz4740/jz4740_mmc.h
+++ b/arch/mips/include/asm/mach-jz4740/jz4740_mmc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_MMC_JZ4740_MMC
#define __LINUX_MMC_JZ4740_MMC
diff --git a/arch/mips/include/asm/mach-lantiq/lantiq.h b/arch/mips/include/asm/mach-lantiq/lantiq.h
index 8064d7a4b33d..d750f93232e4 100644
--- a/arch/mips/include/asm/mach-lantiq/lantiq.h
+++ b/arch/mips/include/asm/mach-lantiq/lantiq.h
@@ -46,8 +46,6 @@ extern struct clk *clk_get_ppe(void);
/* find out what bootsource we have */
extern unsigned char ltq_boot_select(void);
-/* find out what caused the last cpu reset */
-extern int ltq_reset_cause(void);
/* find out the soc type */
extern int ltq_soc_type(void);
diff --git a/arch/mips/include/asm/mach-lasat/irq.h b/arch/mips/include/asm/mach-lasat/irq.h
index 3a282419d5f9..d79cbe075084 100644
--- a/arch/mips/include/asm/mach-lasat/irq.h
+++ b/arch/mips/include/asm/mach-lasat/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MACH_LASAT_IRQ_H
#define _ASM_MACH_LASAT_IRQ_H
diff --git a/arch/mips/include/asm/mach-lasat/mach-gt64120.h b/arch/mips/include/asm/mach-lasat/mach-gt64120.h
index c253d3fa5167..6666a8871a23 100644
--- a/arch/mips/include/asm/mach-lasat/mach-gt64120.h
+++ b/arch/mips/include/asm/mach-lasat/mach-gt64120.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is a direct copy of the ev96100.h file, with a global
* search and replace. The numbers are the same.
diff --git a/arch/mips/include/asm/mach-loongson64/boot_param.h b/arch/mips/include/asm/mach-loongson64/boot_param.h
index 9f9bb9c53785..4f69f08717f6 100644
--- a/arch/mips/include/asm/mach-loongson64/boot_param.h
+++ b/arch/mips/include/asm/mach-loongson64/boot_param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_LOONGSON64_BOOT_PARAM_H_
#define __ASM_MACH_LOONGSON64_BOOT_PARAM_H_
diff --git a/arch/mips/include/asm/mach-loongson64/cs5536/cs5536.h b/arch/mips/include/asm/mach-loongson64/cs5536/cs5536.h
index a0ee0cb775ad..9795b3361532 100644
--- a/arch/mips/include/asm/mach-loongson64/cs5536/cs5536.h
+++ b/arch/mips/include/asm/mach-loongson64/cs5536/cs5536.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* The header file of cs5536 south bridge.
*
diff --git a/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_mfgpt.h b/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_mfgpt.h
index 021d0172dad6..52e8bb0fc04d 100644
--- a/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_mfgpt.h
+++ b/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_mfgpt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* cs5536 mfgpt header file
*/
diff --git a/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_pci.h b/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_pci.h
index bf9dd9eb4ceb..a0d4b752899e 100644
--- a/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_pci.h
+++ b/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* the definition file of cs5536 Virtual Support Module(VSM).
* pci configuration space can be accessed through the VSM, so
diff --git a/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_vsm.h b/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_vsm.h
index 1f17c1815ee5..70d0153cccc3 100644
--- a/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_vsm.h
+++ b/arch/mips/include/asm/mach-loongson64/cs5536/cs5536_vsm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* the read/write interfaces for Virtual Support Module(VSM)
*
diff --git a/arch/mips/include/asm/mach-loongson64/irq.h b/arch/mips/include/asm/mach-loongson64/irq.h
index d18c45c7c394..3644b68c0ccc 100644
--- a/arch/mips/include/asm/mach-loongson64/irq.h
+++ b/arch/mips/include/asm/mach-loongson64/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_LOONGSON64_IRQ_H_
#define __ASM_MACH_LOONGSON64_IRQ_H_
diff --git a/arch/mips/include/asm/mach-loongson64/loongson.h b/arch/mips/include/asm/mach-loongson64/loongson.h
index c68c0cc879c6..d0ae5d55413b 100644
--- a/arch/mips/include/asm/mach-loongson64/loongson.h
+++ b/arch/mips/include/asm/mach-loongson64/loongson.h
@@ -26,7 +26,7 @@ extern void mach_prepare_shutdown(void);
/* environment arguments from bootloader */
extern u32 cpu_clock_freq;
extern u32 memsize, highmemsize;
-extern struct plat_smp_ops loongson3_smp_ops;
+extern const struct plat_smp_ops loongson3_smp_ops;
/* loongson-specific command line, env and memory initialization */
extern void __init prom_init_memory(void);
diff --git a/arch/mips/include/asm/mach-loongson64/loongson_hwmon.h b/arch/mips/include/asm/mach-loongson64/loongson_hwmon.h
index 74230d0ca98b..545f91f2ae16 100644
--- a/arch/mips/include/asm/mach-loongson64/loongson_hwmon.h
+++ b/arch/mips/include/asm/mach-loongson64/loongson_hwmon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LOONGSON_HWMON_H_
#define __LOONGSON_HWMON_H_
diff --git a/arch/mips/include/asm/mach-loongson64/spaces.h b/arch/mips/include/asm/mach-loongson64/spaces.h
index c6040b9fcf94..e85bc1d9c4f2 100644
--- a/arch/mips/include/asm/mach-loongson64/spaces.h
+++ b/arch/mips/include/asm/mach-loongson64/spaces.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_LOONGSON64_SPACES_H_
#define __ASM_MACH_LOONGSON64_SPACES_H_
diff --git a/arch/mips/include/asm/mach-loongson64/topology.h b/arch/mips/include/asm/mach-loongson64/topology.h
index 0d8f3b55bdbc..7ff819ab308a 100644
--- a/arch/mips/include/asm/mach-loongson64/topology.h
+++ b/arch/mips/include/asm/mach-loongson64/topology.h
@@ -1,10 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MACH_TOPOLOGY_H
#define _ASM_MACH_TOPOLOGY_H
#ifdef CONFIG_NUMA
#define cpu_to_node(cpu) (cpu_logical_map(cpu) >> 2)
-#define parent_node(node) (node)
#define cpumask_of_node(node) (&__node_data[(node)]->cpumask)
struct pci_bus;
diff --git a/arch/mips/include/asm/mach-loongson64/workarounds.h b/arch/mips/include/asm/mach-loongson64/workarounds.h
index e659f041e116..17b71172a097 100644
--- a/arch/mips/include/asm/mach-loongson64/workarounds.h
+++ b/arch/mips/include/asm/mach-loongson64/workarounds.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_LOONGSON64_WORKAROUNDS_H_
#define __ASM_MACH_LOONGSON64_WORKAROUNDS_H_
diff --git a/arch/mips/include/asm/mach-malta/irq.h b/arch/mips/include/asm/mach-malta/irq.h
index 47cfe64efbb0..af9eeea250ed 100644
--- a/arch/mips/include/asm/mach-malta/irq.h
+++ b/arch/mips/include/asm/mach-malta/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_MIPS_IRQ_H
#define __ASM_MACH_MIPS_IRQ_H
diff --git a/arch/mips/include/asm/mach-malta/mach-gt64120.h b/arch/mips/include/asm/mach-malta/mach-gt64120.h
index 62a4b2889fa7..b9dee7c3e469 100644
--- a/arch/mips/include/asm/mach-malta/mach-gt64120.h
+++ b/arch/mips/include/asm/mach-malta/mach-gt64120.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is a direct copy of the ev96100.h file, with a global
* search and replace. The numbers are the same.
diff --git a/arch/mips/include/asm/mach-malta/malta-dtshim.h b/arch/mips/include/asm/mach-malta/malta-dtshim.h
index cfd777663c64..d696a7598ea7 100644
--- a/arch/mips/include/asm/mach-malta/malta-dtshim.h
+++ b/arch/mips/include/asm/mach-malta/malta-dtshim.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2015 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/asm/mach-malta/malta-pm.h b/arch/mips/include/asm/mach-malta/malta-pm.h
index c2c2e201013d..347b53dbc88f 100644
--- a/arch/mips/include/asm/mach-malta/malta-pm.h
+++ b/arch/mips/include/asm/mach-malta/malta-pm.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2014 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/asm/mach-ralink/irq.h b/arch/mips/include/asm/mach-ralink/irq.h
index 4321865e04b9..86473e3999aa 100644
--- a/arch/mips/include/asm/mach-ralink/irq.h
+++ b/arch/mips/include/asm/mach-ralink/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_RALINK_IRQ_H
#define __ASM_MACH_RALINK_IRQ_H
diff --git a/arch/mips/include/asm/mach-rc32434/dma.h b/arch/mips/include/asm/mach-rc32434/dma.h
index 4322191e46bf..44dc87bb8087 100644
--- a/arch/mips/include/asm/mach-rc32434/dma.h
+++ b/arch/mips/include/asm/mach-rc32434/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2002 Integrated Device Technology, Inc.
* All rights reserved.
diff --git a/arch/mips/include/asm/mach-rc32434/dma_v.h b/arch/mips/include/asm/mach-rc32434/dma_v.h
index 28c54063a345..37d73b9877c6 100644
--- a/arch/mips/include/asm/mach-rc32434/dma_v.h
+++ b/arch/mips/include/asm/mach-rc32434/dma_v.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2002 Integrated Device Technology, Inc.
* All rights reserved.
diff --git a/arch/mips/include/asm/mach-rc32434/gpio.h b/arch/mips/include/asm/mach-rc32434/gpio.h
index db211212ce79..a3192da9f227 100644
--- a/arch/mips/include/asm/mach-rc32434/gpio.h
+++ b/arch/mips/include/asm/mach-rc32434/gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2002 Integrated Device Technology, Inc.
* All rights reserved.
diff --git a/arch/mips/include/asm/mach-rc32434/irq.h b/arch/mips/include/asm/mach-rc32434/irq.h
index b76dec95c04e..ebe32bd5a5fb 100644
--- a/arch/mips/include/asm/mach-rc32434/irq.h
+++ b/arch/mips/include/asm/mach-rc32434/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_RC32434_IRQ_H
#define __ASM_RC32434_IRQ_H
diff --git a/arch/mips/include/asm/mach-rc32434/rc32434.h b/arch/mips/include/asm/mach-rc32434/rc32434.h
index 02fd32b4be16..1bec6cc8abf0 100644
--- a/arch/mips/include/asm/mach-rc32434/rc32434.h
+++ b/arch/mips/include/asm/mach-rc32434/rc32434.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for IDT RC323434 CPU.
*/
diff --git a/arch/mips/include/asm/mach-tx39xx/mangle-port.h b/arch/mips/include/asm/mach-tx39xx/mangle-port.h
index ef0b502fd8b7..ab7a70bd895e 100644
--- a/arch/mips/include/asm/mach-tx39xx/mangle-port.h
+++ b/arch/mips/include/asm/mach-tx39xx/mangle-port.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_TX39XX_MANGLE_PORT_H
#define __ASM_MACH_TX39XX_MANGLE_PORT_H
diff --git a/arch/mips/include/asm/mach-tx49xx/cpu-feature-overrides.h b/arch/mips/include/asm/mach-tx49xx/cpu-feature-overrides.h
index b9d39dc45420..04e4247255da 100644
--- a/arch/mips/include/asm/mach-tx49xx/cpu-feature-overrides.h
+++ b/arch/mips/include/asm/mach-tx49xx/cpu-feature-overrides.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_TX49XX_CPU_FEATURE_OVERRIDES_H
#define __ASM_MACH_TX49XX_CPU_FEATURE_OVERRIDES_H
diff --git a/arch/mips/include/asm/mach-tx49xx/kmalloc.h b/arch/mips/include/asm/mach-tx49xx/kmalloc.h
index ff9a8b86cb93..c2a0a6fa483f 100644
--- a/arch/mips/include/asm/mach-tx49xx/kmalloc.h
+++ b/arch/mips/include/asm/mach-tx49xx/kmalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_TX49XX_KMALLOC_H
#define __ASM_MACH_TX49XX_KMALLOC_H
diff --git a/arch/mips/include/asm/mach-tx49xx/mangle-port.h b/arch/mips/include/asm/mach-tx49xx/mangle-port.h
index 490867b03c8f..e061ef38fb5f 100644
--- a/arch/mips/include/asm/mach-tx49xx/mangle-port.h
+++ b/arch/mips/include/asm/mach-tx49xx/mangle-port.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_TX49XX_MANGLE_PORT_H
#define __ASM_MACH_TX49XX_MANGLE_PORT_H
diff --git a/arch/mips/include/asm/mach-vr41xx/irq.h b/arch/mips/include/asm/mach-vr41xx/irq.h
index 862058d3f81b..3d63afae37a8 100644
--- a/arch/mips/include/asm/mach-vr41xx/irq.h
+++ b/arch/mips/include/asm/mach-vr41xx/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_VR41XX_IRQ_H
#define __ASM_MACH_VR41XX_IRQ_H
diff --git a/arch/mips/include/asm/machine.h b/arch/mips/include/asm/machine.h
index ecb6c7335484..e0d9b373d415 100644
--- a/arch/mips/include/asm/machine.h
+++ b/arch/mips/include/asm/machine.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/asm/mips-boards/launch.h b/arch/mips/include/asm/mips-boards/launch.h
index 653477e4074d..f93aa5ee2e2e 100644
--- a/arch/mips/include/asm/mips-boards/launch.h
+++ b/arch/mips/include/asm/mips-boards/launch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
*/
diff --git a/arch/mips/include/asm/mips-boards/maltaint.h b/arch/mips/include/asm/mips-boards/maltaint.h
index 987ff580466b..817698abf2eb 100644
--- a/arch/mips/include/asm/mips-boards/maltaint.h
+++ b/arch/mips/include/asm/mips-boards/maltaint.h
@@ -10,8 +10,6 @@
#ifndef _MIPS_MALTAINT_H
#define _MIPS_MALTAINT_H
-#include <linux/irqchip/mips-gic.h>
-
/*
* Interrupts 0..15 are used for Malta ISA compatible interrupts
*/
@@ -62,7 +60,4 @@
#define MSC01E_INT_PERFCTR 10
#define MSC01E_INT_CPUCTR 11
-/* GIC external interrupts */
-#define GIC_INT_I8259A GIC_SHARED_TO_HWIRQ(3)
-
#endif /* !(_MIPS_MALTAINT_H) */
diff --git a/arch/mips/include/asm/mips-cm.h b/arch/mips/include/asm/mips-cm.h
index cfdbab015769..3708b8ccc0b4 100644
--- a/arch/mips/include/asm/mips-cm.h
+++ b/arch/mips/include/asm/mips-cm.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2013 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -8,16 +8,18 @@
* option) any later version.
*/
+#ifndef __MIPS_ASM_MIPS_CPS_H__
+# error Please include asm/mips-cps.h rather than asm/mips-cm.h
+#endif
+
#ifndef __MIPS_ASM_MIPS_CM_H__
#define __MIPS_ASM_MIPS_CM_H__
#include <linux/bitops.h>
#include <linux/errno.h>
-#include <linux/io.h>
-#include <linux/types.h>
/* The base address of the CM GCR block */
-extern void __iomem *mips_cm_base;
+extern void __iomem *mips_gcr_base;
/* The base address of the CM L2-only sync region */
extern void __iomem *mips_cm_l2sync_base;
@@ -80,7 +82,7 @@ static inline int mips_cm_probe(void)
static inline bool mips_cm_present(void)
{
#ifdef CONFIG_MIPS_CM
- return mips_cm_base != NULL;
+ return mips_gcr_base != NULL;
#else
return false;
#endif
@@ -112,321 +114,219 @@ static inline bool mips_cm_has_l2sync(void)
/* Size of the L2-only sync region */
#define MIPS_CM_L2SYNC_SIZE 0x1000
-/* Macros to ease the creation of register access functions */
-#define BUILD_CM_R_(name, off) \
-static inline unsigned long __iomem *addr_gcr_##name(void) \
-{ \
- return (unsigned long __iomem *)(mips_cm_base + (off)); \
-} \
- \
-static inline u32 read32_gcr_##name(void) \
-{ \
- return __raw_readl(addr_gcr_##name()); \
-} \
- \
-static inline u64 read64_gcr_##name(void) \
-{ \
- void __iomem *addr = addr_gcr_##name(); \
- u64 ret; \
- \
- if (mips_cm_is64) { \
- ret = __raw_readq(addr); \
- } else { \
- ret = __raw_readl(addr); \
- ret |= (u64)__raw_readl(addr + 0x4) << 32; \
- } \
- \
- return ret; \
-} \
- \
-static inline unsigned long read_gcr_##name(void) \
-{ \
- if (mips_cm_is64) \
- return read64_gcr_##name(); \
- else \
- return read32_gcr_##name(); \
-}
-
-#define BUILD_CM__W(name, off) \
-static inline void write32_gcr_##name(u32 value) \
-{ \
- __raw_writel(value, addr_gcr_##name()); \
-} \
- \
-static inline void write64_gcr_##name(u64 value) \
-{ \
- __raw_writeq(value, addr_gcr_##name()); \
-} \
- \
-static inline void write_gcr_##name(unsigned long value) \
-{ \
- if (mips_cm_is64) \
- write64_gcr_##name(value); \
- else \
- write32_gcr_##name(value); \
-}
-
-#define BUILD_CM_RW(name, off) \
- BUILD_CM_R_(name, off) \
- BUILD_CM__W(name, off)
-
-#define BUILD_CM_Cx_R_(name, off) \
- BUILD_CM_R_(cl_##name, MIPS_CM_CLCB_OFS + (off)) \
- BUILD_CM_R_(co_##name, MIPS_CM_COCB_OFS + (off))
-
-#define BUILD_CM_Cx__W(name, off) \
- BUILD_CM__W(cl_##name, MIPS_CM_CLCB_OFS + (off)) \
- BUILD_CM__W(co_##name, MIPS_CM_COCB_OFS + (off))
-
-#define BUILD_CM_Cx_RW(name, off) \
- BUILD_CM_Cx_R_(name, off) \
- BUILD_CM_Cx__W(name, off)
-
-/* GCB register accessor functions */
-BUILD_CM_R_(config, MIPS_CM_GCB_OFS + 0x00)
-BUILD_CM_RW(base, MIPS_CM_GCB_OFS + 0x08)
-BUILD_CM_RW(access, MIPS_CM_GCB_OFS + 0x20)
-BUILD_CM_R_(rev, MIPS_CM_GCB_OFS + 0x30)
-BUILD_CM_RW(err_control, MIPS_CM_GCB_OFS + 0x38)
-BUILD_CM_RW(error_mask, MIPS_CM_GCB_OFS + 0x40)
-BUILD_CM_RW(error_cause, MIPS_CM_GCB_OFS + 0x48)
-BUILD_CM_RW(error_addr, MIPS_CM_GCB_OFS + 0x50)
-BUILD_CM_RW(error_mult, MIPS_CM_GCB_OFS + 0x58)
-BUILD_CM_RW(l2_only_sync_base, MIPS_CM_GCB_OFS + 0x70)
-BUILD_CM_RW(gic_base, MIPS_CM_GCB_OFS + 0x80)
-BUILD_CM_RW(cpc_base, MIPS_CM_GCB_OFS + 0x88)
-BUILD_CM_RW(reg0_base, MIPS_CM_GCB_OFS + 0x90)
-BUILD_CM_RW(reg0_mask, MIPS_CM_GCB_OFS + 0x98)
-BUILD_CM_RW(reg1_base, MIPS_CM_GCB_OFS + 0xa0)
-BUILD_CM_RW(reg1_mask, MIPS_CM_GCB_OFS + 0xa8)
-BUILD_CM_RW(reg2_base, MIPS_CM_GCB_OFS + 0xb0)
-BUILD_CM_RW(reg2_mask, MIPS_CM_GCB_OFS + 0xb8)
-BUILD_CM_RW(reg3_base, MIPS_CM_GCB_OFS + 0xc0)
-BUILD_CM_RW(reg3_mask, MIPS_CM_GCB_OFS + 0xc8)
-BUILD_CM_R_(gic_status, MIPS_CM_GCB_OFS + 0xd0)
-BUILD_CM_R_(cpc_status, MIPS_CM_GCB_OFS + 0xf0)
-BUILD_CM_RW(l2_config, MIPS_CM_GCB_OFS + 0x130)
-BUILD_CM_RW(sys_config2, MIPS_CM_GCB_OFS + 0x150)
-BUILD_CM_RW(l2_pft_control, MIPS_CM_GCB_OFS + 0x300)
-BUILD_CM_RW(l2_pft_control_b, MIPS_CM_GCB_OFS + 0x308)
-BUILD_CM_RW(bev_base, MIPS_CM_GCB_OFS + 0x680)
-
-/* Core Local & Core Other register accessor functions */
-BUILD_CM_Cx_RW(reset_release, 0x00)
-BUILD_CM_Cx_RW(coherence, 0x08)
-BUILD_CM_Cx_R_(config, 0x10)
-BUILD_CM_Cx_RW(other, 0x18)
-BUILD_CM_Cx_RW(reset_base, 0x20)
-BUILD_CM_Cx_R_(id, 0x28)
-BUILD_CM_Cx_RW(reset_ext_base, 0x30)
-BUILD_CM_Cx_R_(tcid_0_priority, 0x40)
-BUILD_CM_Cx_R_(tcid_1_priority, 0x48)
-BUILD_CM_Cx_R_(tcid_2_priority, 0x50)
-BUILD_CM_Cx_R_(tcid_3_priority, 0x58)
-BUILD_CM_Cx_R_(tcid_4_priority, 0x60)
-BUILD_CM_Cx_R_(tcid_5_priority, 0x68)
-BUILD_CM_Cx_R_(tcid_6_priority, 0x70)
-BUILD_CM_Cx_R_(tcid_7_priority, 0x78)
-BUILD_CM_Cx_R_(tcid_8_priority, 0x80)
-
-/* GCR_CONFIG register fields */
-#define CM_GCR_CONFIG_NUMIOCU_SHF 8
-#define CM_GCR_CONFIG_NUMIOCU_MSK (_ULCAST_(0xf) << 8)
-#define CM_GCR_CONFIG_PCORES_SHF 0
-#define CM_GCR_CONFIG_PCORES_MSK (_ULCAST_(0xff) << 0)
-
-/* GCR_BASE register fields */
-#define CM_GCR_BASE_GCRBASE_SHF 15
-#define CM_GCR_BASE_GCRBASE_MSK (_ULCAST_(0x1ffff) << 15)
-#define CM_GCR_BASE_CMDEFTGT_SHF 0
-#define CM_GCR_BASE_CMDEFTGT_MSK (_ULCAST_(0x3) << 0)
+#define GCR_ACCESSOR_RO(sz, off, name) \
+ CPS_ACCESSOR_RO(gcr, sz, MIPS_CM_GCB_OFS + off, name) \
+ CPS_ACCESSOR_RO(gcr, sz, MIPS_CM_COCB_OFS + off, redir_##name)
+
+#define GCR_ACCESSOR_RW(sz, off, name) \
+ CPS_ACCESSOR_RW(gcr, sz, MIPS_CM_GCB_OFS + off, name) \
+ CPS_ACCESSOR_RW(gcr, sz, MIPS_CM_COCB_OFS + off, redir_##name)
+
+#define GCR_CX_ACCESSOR_RO(sz, off, name) \
+ CPS_ACCESSOR_RO(gcr, sz, MIPS_CM_CLCB_OFS + off, cl_##name) \
+ CPS_ACCESSOR_RO(gcr, sz, MIPS_CM_COCB_OFS + off, co_##name)
+
+#define GCR_CX_ACCESSOR_RW(sz, off, name) \
+ CPS_ACCESSOR_RW(gcr, sz, MIPS_CM_CLCB_OFS + off, cl_##name) \
+ CPS_ACCESSOR_RW(gcr, sz, MIPS_CM_COCB_OFS + off, co_##name)
+
+/* GCR_CONFIG - Information about the system */
+GCR_ACCESSOR_RO(64, 0x000, config)
+#define CM_GCR_CONFIG_CLUSTER_COH_CAPABLE BIT_ULL(43)
+#define CM_GCR_CONFIG_CLUSTER_ID GENMASK_ULL(39, 32)
+#define CM_GCR_CONFIG_NUM_CLUSTERS GENMASK(29, 23)
+#define CM_GCR_CONFIG_NUMIOCU GENMASK(15, 8)
+#define CM_GCR_CONFIG_PCORES GENMASK(7, 0)
+
+/* GCR_BASE - Base address of the Global Configuration Registers (GCRs) */
+GCR_ACCESSOR_RW(64, 0x008, base)
+#define CM_GCR_BASE_GCRBASE GENMASK_ULL(47, 15)
+#define CM_GCR_BASE_CMDEFTGT GENMASK(1, 0)
#define CM_GCR_BASE_CMDEFTGT_DISABLED 0
#define CM_GCR_BASE_CMDEFTGT_MEM 1
#define CM_GCR_BASE_CMDEFTGT_IOCU0 2
#define CM_GCR_BASE_CMDEFTGT_IOCU1 3
-/* GCR_RESET_EXT_BASE register fields */
-#define CM_GCR_RESET_EXT_BASE_EVARESET BIT(31)
-#define CM_GCR_RESET_EXT_BASE_UEB BIT(30)
-
-/* GCR_ACCESS register fields */
-#define CM_GCR_ACCESS_ACCESSEN_SHF 0
-#define CM_GCR_ACCESS_ACCESSEN_MSK (_ULCAST_(0xff) << 0)
+/* GCR_ACCESS - Controls core/IOCU access to GCRs */
+GCR_ACCESSOR_RW(32, 0x020, access)
+#define CM_GCR_ACCESS_ACCESSEN GENMASK(7, 0)
-/* GCR_REV register fields */
-#define CM_GCR_REV_MAJOR_SHF 8
-#define CM_GCR_REV_MAJOR_MSK (_ULCAST_(0xff) << 8)
-#define CM_GCR_REV_MINOR_SHF 0
-#define CM_GCR_REV_MINOR_MSK (_ULCAST_(0xff) << 0)
+/* GCR_REV - Indicates the Coherence Manager revision */
+GCR_ACCESSOR_RO(32, 0x030, rev)
+#define CM_GCR_REV_MAJOR GENMASK(15, 8)
+#define CM_GCR_REV_MINOR GENMASK(7, 0)
#define CM_ENCODE_REV(major, minor) \
- (((major) << CM_GCR_REV_MAJOR_SHF) | \
- ((minor) << CM_GCR_REV_MINOR_SHF))
+ (((major) << __ffs(CM_GCR_REV_MAJOR)) | \
+ ((minor) << __ffs(CM_GCR_REV_MINOR)))
#define CM_REV_CM2 CM_ENCODE_REV(6, 0)
#define CM_REV_CM2_5 CM_ENCODE_REV(7, 0)
#define CM_REV_CM3 CM_ENCODE_REV(8, 0)
-
-/* GCR_ERR_CONTROL register fields */
-#define CM_GCR_ERR_CONTROL_L2_ECC_EN_SHF 1
-#define CM_GCR_ERR_CONTROL_L2_ECC_EN_MSK (_ULCAST_(0x1) << 1)
-#define CM_GCR_ERR_CONTROL_L2_ECC_SUPPORT_SHF 0
-#define CM_GCR_ERR_CONTROL_L2_ECC_SUPPORT_MSK (_ULCAST_(0x1) << 0)
-
-/* GCR_ERROR_CAUSE register fields */
-#define CM_GCR_ERROR_CAUSE_ERRTYPE_SHF 27
-#define CM_GCR_ERROR_CAUSE_ERRTYPE_MSK (_ULCAST_(0x1f) << 27)
-#define CM3_GCR_ERROR_CAUSE_ERRTYPE_SHF 58
-#define CM3_GCR_ERROR_CAUSE_ERRTYPE_MSK GENMASK_ULL(63, 58)
-#define CM_GCR_ERROR_CAUSE_ERRINFO_SHF 0
-#define CM_GCR_ERROR_CAUSE_ERRINGO_MSK (_ULCAST_(0x7ffffff) << 0)
-
-/* GCR_ERROR_MULT register fields */
-#define CM_GCR_ERROR_MULT_ERR2ND_SHF 0
-#define CM_GCR_ERROR_MULT_ERR2ND_MSK (_ULCAST_(0x1f) << 0)
-
-/* GCR_L2_ONLY_SYNC_BASE register fields */
-#define CM_GCR_L2_ONLY_SYNC_BASE_SYNCBASE_SHF 12
-#define CM_GCR_L2_ONLY_SYNC_BASE_SYNCBASE_MSK (_ULCAST_(0xfffff) << 12)
-#define CM_GCR_L2_ONLY_SYNC_BASE_SYNCEN_SHF 0
-#define CM_GCR_L2_ONLY_SYNC_BASE_SYNCEN_MSK (_ULCAST_(0x1) << 0)
-
-/* GCR_GIC_BASE register fields */
-#define CM_GCR_GIC_BASE_GICBASE_SHF 17
-#define CM_GCR_GIC_BASE_GICBASE_MSK (_ULCAST_(0x7fff) << 17)
-#define CM_GCR_GIC_BASE_GICEN_SHF 0
-#define CM_GCR_GIC_BASE_GICEN_MSK (_ULCAST_(0x1) << 0)
-
-/* GCR_CPC_BASE register fields */
-#define CM_GCR_CPC_BASE_CPCBASE_SHF 15
-#define CM_GCR_CPC_BASE_CPCBASE_MSK (_ULCAST_(0x1ffff) << 15)
-#define CM_GCR_CPC_BASE_CPCEN_SHF 0
-#define CM_GCR_CPC_BASE_CPCEN_MSK (_ULCAST_(0x1) << 0)
-
-/* GCR_GIC_STATUS register fields */
-#define CM_GCR_GIC_STATUS_GICEX_SHF 0
-#define CM_GCR_GIC_STATUS_GICEX_MSK (_ULCAST_(0x1) << 0)
-
-/* GCR_REGn_BASE register fields */
-#define CM_GCR_REGn_BASE_BASEADDR_SHF 16
-#define CM_GCR_REGn_BASE_BASEADDR_MSK (_ULCAST_(0xffff) << 16)
-
-/* GCR_REGn_MASK register fields */
-#define CM_GCR_REGn_MASK_ADDRMASK_SHF 16
-#define CM_GCR_REGn_MASK_ADDRMASK_MSK (_ULCAST_(0xffff) << 16)
-#define CM_GCR_REGn_MASK_CCAOVR_SHF 5
-#define CM_GCR_REGn_MASK_CCAOVR_MSK (_ULCAST_(0x3) << 5)
-#define CM_GCR_REGn_MASK_CCAOVREN_SHF 4
-#define CM_GCR_REGn_MASK_CCAOVREN_MSK (_ULCAST_(0x1) << 4)
-#define CM_GCR_REGn_MASK_DROPL2_SHF 2
-#define CM_GCR_REGn_MASK_DROPL2_MSK (_ULCAST_(0x1) << 2)
-#define CM_GCR_REGn_MASK_CMTGT_SHF 0
-#define CM_GCR_REGn_MASK_CMTGT_MSK (_ULCAST_(0x3) << 0)
-#define CM_GCR_REGn_MASK_CMTGT_DISABLED (_ULCAST_(0x0) << 0)
-#define CM_GCR_REGn_MASK_CMTGT_MEM (_ULCAST_(0x1) << 0)
-#define CM_GCR_REGn_MASK_CMTGT_IOCU0 (_ULCAST_(0x2) << 0)
-#define CM_GCR_REGn_MASK_CMTGT_IOCU1 (_ULCAST_(0x3) << 0)
-
-/* GCR_GIC_STATUS register fields */
-#define CM_GCR_GIC_STATUS_EX_SHF 0
-#define CM_GCR_GIC_STATUS_EX_MSK (_ULCAST_(0x1) << 0)
-
-/* GCR_CPC_STATUS register fields */
-#define CM_GCR_CPC_STATUS_EX_SHF 0
-#define CM_GCR_CPC_STATUS_EX_MSK (_ULCAST_(0x1) << 0)
-
-/* GCR_L2_CONFIG register fields */
-#define CM_GCR_L2_CONFIG_BYPASS_SHF 20
-#define CM_GCR_L2_CONFIG_BYPASS_MSK (_ULCAST_(0x1) << 20)
-#define CM_GCR_L2_CONFIG_SET_SIZE_SHF 12
-#define CM_GCR_L2_CONFIG_SET_SIZE_MSK (_ULCAST_(0xf) << 12)
-#define CM_GCR_L2_CONFIG_LINE_SIZE_SHF 8
-#define CM_GCR_L2_CONFIG_LINE_SIZE_MSK (_ULCAST_(0xf) << 8)
-#define CM_GCR_L2_CONFIG_ASSOC_SHF 0
-#define CM_GCR_L2_CONFIG_ASSOC_MSK (_ULCAST_(0xff) << 0)
-
-/* GCR_SYS_CONFIG2 register fields */
-#define CM_GCR_SYS_CONFIG2_MAXVPW_SHF 0
-#define CM_GCR_SYS_CONFIG2_MAXVPW_MSK (_ULCAST_(0xf) << 0)
-
-/* GCR_L2_PFT_CONTROL register fields */
-#define CM_GCR_L2_PFT_CONTROL_PAGEMASK_SHF 12
-#define CM_GCR_L2_PFT_CONTROL_PAGEMASK_MSK (_ULCAST_(0xfffff) << 12)
-#define CM_GCR_L2_PFT_CONTROL_PFTEN_SHF 8
-#define CM_GCR_L2_PFT_CONTROL_PFTEN_MSK (_ULCAST_(0x1) << 8)
-#define CM_GCR_L2_PFT_CONTROL_NPFT_SHF 0
-#define CM_GCR_L2_PFT_CONTROL_NPFT_MSK (_ULCAST_(0xff) << 0)
-
-/* GCR_L2_PFT_CONTROL_B register fields */
-#define CM_GCR_L2_PFT_CONTROL_B_CEN_SHF 8
-#define CM_GCR_L2_PFT_CONTROL_B_CEN_MSK (_ULCAST_(0x1) << 8)
-#define CM_GCR_L2_PFT_CONTROL_B_PORTID_SHF 0
-#define CM_GCR_L2_PFT_CONTROL_B_PORTID_MSK (_ULCAST_(0xff) << 0)
-
-/* GCR_Cx_COHERENCE register fields */
-#define CM_GCR_Cx_COHERENCE_COHDOMAINEN_SHF 0
-#define CM_GCR_Cx_COHERENCE_COHDOMAINEN_MSK (_ULCAST_(0xff) << 0)
-#define CM3_GCR_Cx_COHERENCE_COHEN_MSK (_ULCAST_(0x1) << 0)
-
-/* GCR_Cx_CONFIG register fields */
-#define CM_GCR_Cx_CONFIG_IOCUTYPE_SHF 10
-#define CM_GCR_Cx_CONFIG_IOCUTYPE_MSK (_ULCAST_(0x3) << 10)
-#define CM_GCR_Cx_CONFIG_PVPE_SHF 0
-#define CM_GCR_Cx_CONFIG_PVPE_MSK (_ULCAST_(0x3ff) << 0)
-
-/* GCR_Cx_OTHER register fields */
-#define CM_GCR_Cx_OTHER_CORENUM_SHF 16
-#define CM_GCR_Cx_OTHER_CORENUM_MSK (_ULCAST_(0xffff) << 16)
-#define CM3_GCR_Cx_OTHER_CORE_SHF 8
-#define CM3_GCR_Cx_OTHER_CORE_MSK (_ULCAST_(0x3f) << 8)
-#define CM3_GCR_Cx_OTHER_VP_SHF 0
-#define CM3_GCR_Cx_OTHER_VP_MSK (_ULCAST_(0x7) << 0)
-
-/* GCR_Cx_RESET_BASE register fields */
-#define CM_GCR_Cx_RESET_BASE_BEVEXCBASE_SHF 12
-#define CM_GCR_Cx_RESET_BASE_BEVEXCBASE_MSK (_ULCAST_(0xfffff) << 12)
-
-/* GCR_Cx_RESET_EXT_BASE register fields */
-#define CM_GCR_Cx_RESET_EXT_BASE_EVARESET_SHF 31
-#define CM_GCR_Cx_RESET_EXT_BASE_EVARESET_MSK (_ULCAST_(0x1) << 31)
-#define CM_GCR_Cx_RESET_EXT_BASE_UEB_SHF 30
-#define CM_GCR_Cx_RESET_EXT_BASE_UEB_MSK (_ULCAST_(0x1) << 30)
-#define CM_GCR_Cx_RESET_EXT_BASE_BEVEXCMASK_SHF 20
-#define CM_GCR_Cx_RESET_EXT_BASE_BEVEXCMASK_MSK (_ULCAST_(0xff) << 20)
-#define CM_GCR_Cx_RESET_EXT_BASE_BEVEXCPA_SHF 1
-#define CM_GCR_Cx_RESET_EXT_BASE_BEVEXCPA_MSK (_ULCAST_(0x7f) << 1)
-#define CM_GCR_Cx_RESET_EXT_BASE_PRESENT_SHF 0
-#define CM_GCR_Cx_RESET_EXT_BASE_PRESENT_MSK (_ULCAST_(0x1) << 0)
-
-/**
- * mips_cm_numcores - return the number of cores present in the system
- *
- * Returns the value of the PCORES field of the GCR_CONFIG register plus 1, or
- * zero if no Coherence Manager is present.
- */
-static inline unsigned mips_cm_numcores(void)
-{
- if (!mips_cm_present())
- return 0;
-
- return ((read_gcr_config() & CM_GCR_CONFIG_PCORES_MSK)
- >> CM_GCR_CONFIG_PCORES_SHF) + 1;
-}
-
-/**
- * mips_cm_numiocu - return the number of IOCUs present in the system
- *
- * Returns the value of the NUMIOCU field of the GCR_CONFIG register, or zero
- * if no Coherence Manager is present.
- */
-static inline unsigned mips_cm_numiocu(void)
-{
- if (!mips_cm_present())
- return 0;
-
- return (read_gcr_config() & CM_GCR_CONFIG_NUMIOCU_MSK)
- >> CM_GCR_CONFIG_NUMIOCU_SHF;
-}
+#define CM_REV_CM3_5 CM_ENCODE_REV(9, 0)
+
+/* GCR_ERR_CONTROL - Control error checking logic */
+GCR_ACCESSOR_RW(32, 0x038, err_control)
+#define CM_GCR_ERR_CONTROL_L2_ECC_EN BIT(1)
+#define CM_GCR_ERR_CONTROL_L2_ECC_SUPPORT BIT(0)
+
+/* GCR_ERR_MASK - Control which errors are reported as interrupts */
+GCR_ACCESSOR_RW(64, 0x040, error_mask)
+
+/* GCR_ERR_CAUSE - Indicates the type of error that occurred */
+GCR_ACCESSOR_RW(64, 0x048, error_cause)
+#define CM_GCR_ERROR_CAUSE_ERRTYPE GENMASK(31, 27)
+#define CM3_GCR_ERROR_CAUSE_ERRTYPE GENMASK_ULL(63, 58)
+#define CM_GCR_ERROR_CAUSE_ERRINFO GENMASK(26, 0)
+
+/* GCR_ERR_ADDR - Indicates the address associated with an error */
+GCR_ACCESSOR_RW(64, 0x050, error_addr)
+
+/* GCR_ERR_MULT - Indicates when multiple errors have occurred */
+GCR_ACCESSOR_RW(64, 0x058, error_mult)
+#define CM_GCR_ERROR_MULT_ERR2ND GENMASK(4, 0)
+
+/* GCR_L2_ONLY_SYNC_BASE - Base address of the L2 cache-only sync region */
+GCR_ACCESSOR_RW(64, 0x070, l2_only_sync_base)
+#define CM_GCR_L2_ONLY_SYNC_BASE_SYNCBASE GENMASK(31, 12)
+#define CM_GCR_L2_ONLY_SYNC_BASE_SYNCEN BIT(0)
+
+/* GCR_GIC_BASE - Base address of the Global Interrupt Controller (GIC) */
+GCR_ACCESSOR_RW(64, 0x080, gic_base)
+#define CM_GCR_GIC_BASE_GICBASE GENMASK(31, 17)
+#define CM_GCR_GIC_BASE_GICEN BIT(0)
+
+/* GCR_CPC_BASE - Base address of the Cluster Power Controller (CPC) */
+GCR_ACCESSOR_RW(64, 0x088, cpc_base)
+#define CM_GCR_CPC_BASE_CPCBASE GENMASK(31, 15)
+#define CM_GCR_CPC_BASE_CPCEN BIT(0)
+
+/* GCR_REGn_BASE - Base addresses of CM address regions */
+GCR_ACCESSOR_RW(64, 0x090, reg0_base)
+GCR_ACCESSOR_RW(64, 0x0a0, reg1_base)
+GCR_ACCESSOR_RW(64, 0x0b0, reg2_base)
+GCR_ACCESSOR_RW(64, 0x0c0, reg3_base)
+#define CM_GCR_REGn_BASE_BASEADDR GENMASK(31, 16)
+
+/* GCR_REGn_MASK - Size & destination of CM address regions */
+GCR_ACCESSOR_RW(64, 0x098, reg0_mask)
+GCR_ACCESSOR_RW(64, 0x0a8, reg1_mask)
+GCR_ACCESSOR_RW(64, 0x0b8, reg2_mask)
+GCR_ACCESSOR_RW(64, 0x0c8, reg3_mask)
+#define CM_GCR_REGn_MASK_ADDRMASK GENMASK(31, 16)
+#define CM_GCR_REGn_MASK_CCAOVR GENMASK(7, 5)
+#define CM_GCR_REGn_MASK_CCAOVREN BIT(4)
+#define CM_GCR_REGn_MASK_DROPL2 BIT(2)
+#define CM_GCR_REGn_MASK_CMTGT GENMASK(1, 0)
+#define CM_GCR_REGn_MASK_CMTGT_DISABLED 0x0
+#define CM_GCR_REGn_MASK_CMTGT_MEM 0x1
+#define CM_GCR_REGn_MASK_CMTGT_IOCU0 0x2
+#define CM_GCR_REGn_MASK_CMTGT_IOCU1 0x3
+
+/* GCR_GIC_STATUS - Indicates presence of a Global Interrupt Controller (GIC) */
+GCR_ACCESSOR_RO(32, 0x0d0, gic_status)
+#define CM_GCR_GIC_STATUS_EX BIT(0)
+
+/* GCR_CPC_STATUS - Indicates presence of a Cluster Power Controller (CPC) */
+GCR_ACCESSOR_RO(32, 0x0f0, cpc_status)
+#define CM_GCR_CPC_STATUS_EX BIT(0)
+
+/* GCR_L2_CONFIG - Indicates L2 cache configuration when Config5.L2C=1 */
+GCR_ACCESSOR_RW(32, 0x130, l2_config)
+#define CM_GCR_L2_CONFIG_BYPASS BIT(20)
+#define CM_GCR_L2_CONFIG_SET_SIZE GENMASK(15, 12)
+#define CM_GCR_L2_CONFIG_LINE_SIZE GENMASK(11, 8)
+#define CM_GCR_L2_CONFIG_ASSOC GENMASK(7, 0)
+
+/* GCR_SYS_CONFIG2 - Further information about the system */
+GCR_ACCESSOR_RO(32, 0x150, sys_config2)
+#define CM_GCR_SYS_CONFIG2_MAXVPW GENMASK(3, 0)
+
+/* GCR_L2_PFT_CONTROL - Controls hardware L2 prefetching */
+GCR_ACCESSOR_RW(32, 0x300, l2_pft_control)
+#define CM_GCR_L2_PFT_CONTROL_PAGEMASK GENMASK(31, 12)
+#define CM_GCR_L2_PFT_CONTROL_PFTEN BIT(8)
+#define CM_GCR_L2_PFT_CONTROL_NPFT GENMASK(7, 0)
+
+/* GCR_L2_PFT_CONTROL_B - Controls hardware L2 prefetching */
+GCR_ACCESSOR_RW(32, 0x308, l2_pft_control_b)
+#define CM_GCR_L2_PFT_CONTROL_B_CEN BIT(8)
+#define CM_GCR_L2_PFT_CONTROL_B_PORTID GENMASK(7, 0)
+
+/* GCR_L2SM_COP - L2 cache op state machine control */
+GCR_ACCESSOR_RW(32, 0x620, l2sm_cop)
+#define CM_GCR_L2SM_COP_PRESENT BIT(31)
+#define CM_GCR_L2SM_COP_RESULT GENMASK(8, 6)
+#define CM_GCR_L2SM_COP_RESULT_DONTCARE 0
+#define CM_GCR_L2SM_COP_RESULT_DONE_OK 1
+#define CM_GCR_L2SM_COP_RESULT_DONE_ERROR 2
+#define CM_GCR_L2SM_COP_RESULT_ABORT_OK 3
+#define CM_GCR_L2SM_COP_RESULT_ABORT_ERROR 4
+#define CM_GCR_L2SM_COP_RUNNING BIT(5)
+#define CM_GCR_L2SM_COP_TYPE GENMASK(4, 2)
+#define CM_GCR_L2SM_COP_TYPE_IDX_WBINV 0
+#define CM_GCR_L2SM_COP_TYPE_IDX_STORETAG 1
+#define CM_GCR_L2SM_COP_TYPE_IDX_STORETAGDATA 2
+#define CM_GCR_L2SM_COP_TYPE_HIT_INV 4
+#define CM_GCR_L2SM_COP_TYPE_HIT_WBINV 5
+#define CM_GCR_L2SM_COP_TYPE_HIT_WB 6
+#define CM_GCR_L2SM_COP_TYPE_FETCHLOCK 7
+#define CM_GCR_L2SM_COP_CMD GENMASK(1, 0)
+#define CM_GCR_L2SM_COP_CMD_START 1 /* only when idle */
+#define CM_GCR_L2SM_COP_CMD_ABORT 3 /* only when running */
+
+/* GCR_L2SM_TAG_ADDR_COP - L2 cache op state machine address control */
+GCR_ACCESSOR_RW(64, 0x628, l2sm_tag_addr_cop)
+#define CM_GCR_L2SM_TAG_ADDR_COP_NUM_LINES GENMASK_ULL(63, 48)
+#define CM_GCR_L2SM_TAG_ADDR_COP_START_TAG GENMASK_ULL(47, 6)
+
+/* GCR_BEV_BASE - Controls the location of the BEV for powered up cores */
+GCR_ACCESSOR_RW(64, 0x680, bev_base)
+
+/* GCR_Cx_RESET_RELEASE - Controls core reset for CM 1.x */
+GCR_CX_ACCESSOR_RW(32, 0x000, reset_release)
+
+/* GCR_Cx_COHERENCE - Controls core coherence */
+GCR_CX_ACCESSOR_RW(32, 0x008, coherence)
+#define CM_GCR_Cx_COHERENCE_COHDOMAINEN GENMASK(7, 0)
+#define CM3_GCR_Cx_COHERENCE_COHEN BIT(0)
+
+/* GCR_Cx_CONFIG - Information about a core's configuration */
+GCR_CX_ACCESSOR_RO(32, 0x010, config)
+#define CM_GCR_Cx_CONFIG_IOCUTYPE GENMASK(11, 10)
+#define CM_GCR_Cx_CONFIG_PVPE GENMASK(9, 0)
+
+/* GCR_Cx_OTHER - Configure the core-other/redirect GCR block */
+GCR_CX_ACCESSOR_RW(32, 0x018, other)
+#define CM_GCR_Cx_OTHER_CORENUM GENMASK(31, 16) /* CM < 3 */
+#define CM_GCR_Cx_OTHER_CLUSTER_EN BIT(31) /* CM >= 3.5 */
+#define CM_GCR_Cx_OTHER_GIC_EN BIT(30) /* CM >= 3.5 */
+#define CM_GCR_Cx_OTHER_BLOCK GENMASK(25, 24) /* CM >= 3.5 */
+#define CM_GCR_Cx_OTHER_BLOCK_LOCAL 0
+#define CM_GCR_Cx_OTHER_BLOCK_GLOBAL 1
+#define CM_GCR_Cx_OTHER_BLOCK_USER 2
+#define CM_GCR_Cx_OTHER_BLOCK_GLOBAL_HIGH 3
+#define CM_GCR_Cx_OTHER_CLUSTER GENMASK(21, 16) /* CM >= 3.5 */
+#define CM3_GCR_Cx_OTHER_CORE GENMASK(13, 8) /* CM >= 3 */
+#define CM_GCR_Cx_OTHER_CORE_CM 32
+#define CM3_GCR_Cx_OTHER_VP GENMASK(2, 0) /* CM >= 3 */
+
+/* GCR_Cx_RESET_BASE - Configure where powered up cores will fetch from */
+GCR_CX_ACCESSOR_RW(32, 0x020, reset_base)
+#define CM_GCR_Cx_RESET_BASE_BEVEXCBASE GENMASK(31, 12)
+
+/* GCR_Cx_ID - Identify the current core */
+GCR_CX_ACCESSOR_RO(32, 0x028, id)
+#define CM_GCR_Cx_ID_CLUSTER GENMASK(15, 8)
+#define CM_GCR_Cx_ID_CORE GENMASK(7, 0)
+
+/* GCR_Cx_RESET_EXT_BASE - Configure behaviour when cores reset or power up */
+GCR_CX_ACCESSOR_RW(32, 0x030, reset_ext_base)
+#define CM_GCR_Cx_RESET_EXT_BASE_EVARESET BIT(31)
+#define CM_GCR_Cx_RESET_EXT_BASE_UEB BIT(30)
+#define CM_GCR_Cx_RESET_EXT_BASE_BEVEXCMASK GENMASK(27, 20)
+#define CM_GCR_Cx_RESET_EXT_BASE_BEVEXCPA GENMASK(7, 1)
+#define CM_GCR_Cx_RESET_EXT_BASE_PRESENT BIT(0)
/**
* mips_cm_l2sync - perform an L2-only sync operation
@@ -469,7 +369,7 @@ static inline unsigned int mips_cm_max_vp_width(void)
uint32_t cfg;
if (mips_cm_revision() >= CM_REV_CM3)
- return read_gcr_sys_config2() & CM_GCR_SYS_CONFIG2_MAXVPW_MSK;
+ return read_gcr_sys_config2() & CM_GCR_SYS_CONFIG2_MAXVPW;
if (mips_cm_present()) {
/*
@@ -477,8 +377,8 @@ static inline unsigned int mips_cm_max_vp_width(void)
* number of VP(E)s, and if that ever changes then this will
* need revisiting.
*/
- cfg = read_gcr_cl_config() & CM_GCR_Cx_CONFIG_PVPE_MSK;
- return (cfg >> CM_GCR_Cx_CONFIG_PVPE_SHF) + 1;
+ cfg = read_gcr_cl_config() & CM_GCR_Cx_CONFIG_PVPE;
+ return (cfg >> __ffs(CM_GCR_Cx_CONFIG_PVPE)) + 1;
}
if (IS_ENABLED(CONFIG_SMP))
@@ -499,7 +399,7 @@ static inline unsigned int mips_cm_max_vp_width(void)
*/
static inline unsigned int mips_cm_vp_id(unsigned int cpu)
{
- unsigned int core = cpu_data[cpu].core;
+ unsigned int core = cpu_core(&cpu_data[cpu]);
unsigned int vp = cpu_vpe_id(&cpu_data[cpu]);
return (core * mips_cm_max_vp_width()) + vp;
@@ -508,29 +408,56 @@ static inline unsigned int mips_cm_vp_id(unsigned int cpu)
#ifdef CONFIG_MIPS_CM
/**
- * mips_cm_lock_other - lock access to another core
+ * mips_cm_lock_other - lock access to redirect/other region
+ * @cluster: the other cluster to be accessed
* @core: the other core to be accessed
* @vp: the VP within the other core to be accessed
+ * @block: the register block to be accessed
*
- * Call before operating upon a core via the 'other' register region in
- * order to prevent the region being moved during access. Must be followed
- * by a call to mips_cm_unlock_other.
+ * Configure the redirect/other region for the local core/VP (depending upon
+ * the CM revision) to target the specified @cluster, @core, @vp & register
+ * @block. Must be called before using the redirect/other region, and followed
+ * by a call to mips_cm_unlock_other() when access to the redirect/other region
+ * is complete.
+ *
+ * This function acquires a spinlock such that code between it &
+ * mips_cm_unlock_other() calls cannot be pre-empted by anything which may
+ * reconfigure the redirect/other region, and cannot be interfered with by
+ * another VP in the core. As such calls to this function should not be nested.
*/
-extern void mips_cm_lock_other(unsigned int core, unsigned int vp);
+extern void mips_cm_lock_other(unsigned int cluster, unsigned int core,
+ unsigned int vp, unsigned int block);
/**
- * mips_cm_unlock_other - unlock access to another core
+ * mips_cm_unlock_other - unlock access to redirect/other region
*
- * Call after operating upon another core via the 'other' register region.
- * Must be called after mips_cm_lock_other.
+ * Must be called after mips_cm_lock_other() once all required access to the
+ * redirect/other region has been completed.
*/
extern void mips_cm_unlock_other(void);
#else /* !CONFIG_MIPS_CM */
-static inline void mips_cm_lock_other(unsigned int core, unsigned int vp) { }
+static inline void mips_cm_lock_other(unsigned int cluster, unsigned int core,
+ unsigned int vp, unsigned int block) { }
static inline void mips_cm_unlock_other(void) { }
#endif /* !CONFIG_MIPS_CM */
+/**
+ * mips_cm_lock_other_cpu - lock access to redirect/other region
+ * @cpu: the other CPU whose register we want to access
+ *
+ * Configure the redirect/other region for the local core/VP (depending upon
+ * the CM revision) to target the specified @cpu & register @block. This is
+ * equivalent to calling mips_cm_lock_other() but accepts a Linux CPU number
+ * for convenience.
+ */
+static inline void mips_cm_lock_other_cpu(unsigned int cpu, unsigned int block)
+{
+ struct cpuinfo_mips *d = &cpu_data[cpu];
+
+ mips_cm_lock_other(cpu_cluster(d), cpu_core(d), cpu_vpe_id(d), block);
+}
+
#endif /* __MIPS_ASM_MIPS_CM_H__ */
diff --git a/arch/mips/include/asm/mips-cpc.h b/arch/mips/include/asm/mips-cpc.h
index 8c519f9827a3..b55e335cfba4 100644
--- a/arch/mips/include/asm/mips-cpc.h
+++ b/arch/mips/include/asm/mips-cpc.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2013 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -8,11 +8,15 @@
* option) any later version.
*/
+#ifndef __MIPS_ASM_MIPS_CPS_H__
+# error Please include asm/mips-cps.h rather than asm/mips-cpc.h
+#endif
+
#ifndef __MIPS_ASM_MIPS_CPC_H__
#define __MIPS_ASM_MIPS_CPC_H__
-#include <linux/io.h>
-#include <linux/types.h>
+#include <linux/bitops.h>
+#include <linux/errno.h>
/* The base address of the CPC registers */
extern void __iomem *mips_cpc_base;
@@ -61,89 +65,92 @@ static inline bool mips_cpc_present(void)
#define MIPS_CPC_CLCB_OFS 0x2000
#define MIPS_CPC_COCB_OFS 0x4000
-/* Macros to ease the creation of register access functions */
-#define BUILD_CPC_R_(name, off) \
-static inline u32 *addr_cpc_##name(void) \
-{ \
- return (u32 *)(mips_cpc_base + (off)); \
-} \
- \
-static inline u32 read_cpc_##name(void) \
-{ \
- return __raw_readl(mips_cpc_base + (off)); \
-}
-
-#define BUILD_CPC__W(name, off) \
-static inline void write_cpc_##name(u32 value) \
-{ \
- __raw_writel(value, mips_cpc_base + (off)); \
-}
-
-#define BUILD_CPC_RW(name, off) \
- BUILD_CPC_R_(name, off) \
- BUILD_CPC__W(name, off)
-
-#define BUILD_CPC_Cx_R_(name, off) \
- BUILD_CPC_R_(cl_##name, MIPS_CPC_CLCB_OFS + (off)) \
- BUILD_CPC_R_(co_##name, MIPS_CPC_COCB_OFS + (off))
-
-#define BUILD_CPC_Cx__W(name, off) \
- BUILD_CPC__W(cl_##name, MIPS_CPC_CLCB_OFS + (off)) \
- BUILD_CPC__W(co_##name, MIPS_CPC_COCB_OFS + (off))
-
-#define BUILD_CPC_Cx_RW(name, off) \
- BUILD_CPC_Cx_R_(name, off) \
- BUILD_CPC_Cx__W(name, off)
-
-/* GCB register accessor functions */
-BUILD_CPC_RW(access, MIPS_CPC_GCB_OFS + 0x00)
-BUILD_CPC_RW(seqdel, MIPS_CPC_GCB_OFS + 0x08)
-BUILD_CPC_RW(rail, MIPS_CPC_GCB_OFS + 0x10)
-BUILD_CPC_RW(resetlen, MIPS_CPC_GCB_OFS + 0x18)
-BUILD_CPC_R_(revision, MIPS_CPC_GCB_OFS + 0x20)
-
-/* Core Local & Core Other accessor functions */
-BUILD_CPC_Cx_RW(cmd, 0x00)
-BUILD_CPC_Cx_RW(stat_conf, 0x08)
-BUILD_CPC_Cx_RW(other, 0x10)
-BUILD_CPC_Cx_RW(vp_stop, 0x20)
-BUILD_CPC_Cx_RW(vp_run, 0x28)
-BUILD_CPC_Cx_RW(vp_running, 0x30)
-
-/* CPC_Cx_CMD register fields */
-#define CPC_Cx_CMD_SHF 0
-#define CPC_Cx_CMD_MSK (_ULCAST_(0xf) << 0)
-#define CPC_Cx_CMD_CLOCKOFF (_ULCAST_(0x1) << 0)
-#define CPC_Cx_CMD_PWRDOWN (_ULCAST_(0x2) << 0)
-#define CPC_Cx_CMD_PWRUP (_ULCAST_(0x3) << 0)
-#define CPC_Cx_CMD_RESET (_ULCAST_(0x4) << 0)
-
-/* CPC_Cx_STAT_CONF register fields */
-#define CPC_Cx_STAT_CONF_PWRUPE_SHF 23
-#define CPC_Cx_STAT_CONF_PWRUPE_MSK (_ULCAST_(0x1) << 23)
-#define CPC_Cx_STAT_CONF_SEQSTATE_SHF 19
-#define CPC_Cx_STAT_CONF_SEQSTATE_MSK (_ULCAST_(0xf) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_D0 (_ULCAST_(0x0) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_U0 (_ULCAST_(0x1) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_U1 (_ULCAST_(0x2) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_U2 (_ULCAST_(0x3) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_U3 (_ULCAST_(0x4) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_U4 (_ULCAST_(0x5) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_U5 (_ULCAST_(0x6) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_U6 (_ULCAST_(0x7) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_D1 (_ULCAST_(0x8) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_D3 (_ULCAST_(0x9) << 19)
-#define CPC_Cx_STAT_CONF_SEQSTATE_D2 (_ULCAST_(0xa) << 19)
-#define CPC_Cx_STAT_CONF_CLKGAT_IMPL_SHF 17
-#define CPC_Cx_STAT_CONF_CLKGAT_IMPL_MSK (_ULCAST_(0x1) << 17)
-#define CPC_Cx_STAT_CONF_PWRDN_IMPL_SHF 16
-#define CPC_Cx_STAT_CONF_PWRDN_IMPL_MSK (_ULCAST_(0x1) << 16)
-#define CPC_Cx_STAT_CONF_EJTAG_PROBE_SHF 15
-#define CPC_Cx_STAT_CONF_EJTAG_PROBE_MSK (_ULCAST_(0x1) << 15)
-
-/* CPC_Cx_OTHER register fields */
-#define CPC_Cx_OTHER_CORENUM_SHF 16
-#define CPC_Cx_OTHER_CORENUM_MSK (_ULCAST_(0xff) << 16)
+#define CPC_ACCESSOR_RO(sz, off, name) \
+ CPS_ACCESSOR_RO(cpc, sz, MIPS_CPC_GCB_OFS + off, name) \
+ CPS_ACCESSOR_RO(cpc, sz, MIPS_CPC_COCB_OFS + off, redir_##name)
+
+#define CPC_ACCESSOR_RW(sz, off, name) \
+ CPS_ACCESSOR_RW(cpc, sz, MIPS_CPC_GCB_OFS + off, name) \
+ CPS_ACCESSOR_RW(cpc, sz, MIPS_CPC_COCB_OFS + off, redir_##name)
+
+#define CPC_CX_ACCESSOR_RO(sz, off, name) \
+ CPS_ACCESSOR_RO(cpc, sz, MIPS_CPC_CLCB_OFS + off, cl_##name) \
+ CPS_ACCESSOR_RO(cpc, sz, MIPS_CPC_COCB_OFS + off, co_##name)
+
+#define CPC_CX_ACCESSOR_RW(sz, off, name) \
+ CPS_ACCESSOR_RW(cpc, sz, MIPS_CPC_CLCB_OFS + off, cl_##name) \
+ CPS_ACCESSOR_RW(cpc, sz, MIPS_CPC_COCB_OFS + off, co_##name)
+
+/* CPC_ACCESS - Control core/IOCU access to CPC registers prior to CM 3 */
+CPC_ACCESSOR_RW(32, 0x000, access)
+
+/* CPC_SEQDEL - Configure delays between command sequencer steps */
+CPC_ACCESSOR_RW(32, 0x008, seqdel)
+
+/* CPC_RAIL - Configure the delay from rail power-up to stability */
+CPC_ACCESSOR_RW(32, 0x010, rail)
+
+/* CPC_RESETLEN - Configure the length of reset sequences */
+CPC_ACCESSOR_RW(32, 0x018, resetlen)
+
+/* CPC_REVISION - Indicates the revisison of the CPC */
+CPC_ACCESSOR_RO(32, 0x020, revision)
+
+/* CPC_PWRUP_CTL - Control power to the Coherence Manager (CM) */
+CPC_ACCESSOR_RW(32, 0x030, pwrup_ctl)
+#define CPC_PWRUP_CTL_CM_PWRUP BIT(0)
+
+/* CPC_CONFIG - Mirrors GCR_CONFIG */
+CPC_ACCESSOR_RW(64, 0x138, config)
+
+/* CPC_SYS_CONFIG - Control cluster endianness */
+CPC_ACCESSOR_RW(32, 0x140, sys_config)
+#define CPC_SYS_CONFIG_BE_IMMEDIATE BIT(2)
+#define CPC_SYS_CONFIG_BE_STATUS BIT(1)
+#define CPC_SYS_CONFIG_BE BIT(0)
+
+/* CPC_Cx_CMD - Instruct the CPC to take action on a core */
+CPC_CX_ACCESSOR_RW(32, 0x000, cmd)
+#define CPC_Cx_CMD GENMASK(3, 0)
+#define CPC_Cx_CMD_CLOCKOFF 0x1
+#define CPC_Cx_CMD_PWRDOWN 0x2
+#define CPC_Cx_CMD_PWRUP 0x3
+#define CPC_Cx_CMD_RESET 0x4
+
+/* CPC_Cx_STAT_CONF - Indicates core configuration & state */
+CPC_CX_ACCESSOR_RW(32, 0x008, stat_conf)
+#define CPC_Cx_STAT_CONF_PWRUPE BIT(23)
+#define CPC_Cx_STAT_CONF_SEQSTATE GENMASK(22, 19)
+#define CPC_Cx_STAT_CONF_SEQSTATE_D0 0x0
+#define CPC_Cx_STAT_CONF_SEQSTATE_U0 0x1
+#define CPC_Cx_STAT_CONF_SEQSTATE_U1 0x2
+#define CPC_Cx_STAT_CONF_SEQSTATE_U2 0x3
+#define CPC_Cx_STAT_CONF_SEQSTATE_U3 0x4
+#define CPC_Cx_STAT_CONF_SEQSTATE_U4 0x5
+#define CPC_Cx_STAT_CONF_SEQSTATE_U5 0x6
+#define CPC_Cx_STAT_CONF_SEQSTATE_U6 0x7
+#define CPC_Cx_STAT_CONF_SEQSTATE_D1 0x8
+#define CPC_Cx_STAT_CONF_SEQSTATE_D3 0x9
+#define CPC_Cx_STAT_CONF_SEQSTATE_D2 0xa
+#define CPC_Cx_STAT_CONF_CLKGAT_IMPL BIT(17)
+#define CPC_Cx_STAT_CONF_PWRDN_IMPL BIT(16)
+#define CPC_Cx_STAT_CONF_EJTAG_PROBE BIT(15)
+
+/* CPC_Cx_OTHER - Configure the core-other register block prior to CM 3 */
+CPC_CX_ACCESSOR_RW(32, 0x010, other)
+#define CPC_Cx_OTHER_CORENUM GENMASK(23, 16)
+
+/* CPC_Cx_VP_STOP - Stop Virtual Processors (VPs) within a core from running */
+CPC_CX_ACCESSOR_RW(32, 0x020, vp_stop)
+
+/* CPC_Cx_VP_START - Start Virtual Processors (VPs) within a core running */
+CPC_CX_ACCESSOR_RW(32, 0x028, vp_run)
+
+/* CPC_Cx_VP_RUNNING - Indicate which Virtual Processors (VPs) are running */
+CPC_CX_ACCESSOR_RW(32, 0x030, vp_running)
+
+/* CPC_Cx_CONFIG - Mirrors GCR_Cx_CONFIG */
+CPC_CX_ACCESSOR_RW(32, 0x090, config)
#ifdef CONFIG_MIPS_CPC
diff --git a/arch/mips/include/asm/mips-cps.h b/arch/mips/include/asm/mips-cps.h
new file mode 100644
index 000000000000..8ad4a85eed0c
--- /dev/null
+++ b/arch/mips/include/asm/mips-cps.h
@@ -0,0 +1,240 @@
+/*
+ * Copyright (C) 2017 Imagination Technologies
+ * Author: Paul Burton <paul.burton@mips.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ */
+
+#ifndef __MIPS_ASM_MIPS_CPS_H__
+#define __MIPS_ASM_MIPS_CPS_H__
+
+#include <linux/io.h>
+#include <linux/types.h>
+
+extern unsigned long __cps_access_bad_size(void)
+ __compiletime_error("Bad size for CPS accessor");
+
+#define CPS_ACCESSOR_A(unit, off, name) \
+static inline void *addr_##unit##_##name(void) \
+{ \
+ return mips_##unit##_base + (off); \
+}
+
+#define CPS_ACCESSOR_R(unit, sz, name) \
+static inline uint##sz##_t read_##unit##_##name(void) \
+{ \
+ uint64_t val64; \
+ \
+ switch (sz) { \
+ case 32: \
+ return __raw_readl(addr_##unit##_##name()); \
+ \
+ case 64: \
+ if (mips_cm_is64) \
+ return __raw_readq(addr_##unit##_##name()); \
+ \
+ val64 = __raw_readl(addr_##unit##_##name() + 4); \
+ val64 <<= 32; \
+ val64 |= __raw_readl(addr_##unit##_##name()); \
+ return val64; \
+ \
+ default: \
+ return __cps_access_bad_size(); \
+ } \
+}
+
+#define CPS_ACCESSOR_W(unit, sz, name) \
+static inline void write_##unit##_##name(uint##sz##_t val) \
+{ \
+ switch (sz) { \
+ case 32: \
+ __raw_writel(val, addr_##unit##_##name()); \
+ break; \
+ \
+ case 64: \
+ if (mips_cm_is64) { \
+ __raw_writeq(val, addr_##unit##_##name()); \
+ break; \
+ } \
+ \
+ __raw_writel((uint64_t)val >> 32, \
+ addr_##unit##_##name() + 4); \
+ __raw_writel(val, addr_##unit##_##name()); \
+ break; \
+ \
+ default: \
+ __cps_access_bad_size(); \
+ break; \
+ } \
+}
+
+#define CPS_ACCESSOR_M(unit, sz, name) \
+static inline void change_##unit##_##name(uint##sz##_t mask, \
+ uint##sz##_t val) \
+{ \
+ uint##sz##_t reg_val = read_##unit##_##name(); \
+ reg_val &= ~mask; \
+ reg_val |= val; \
+ write_##unit##_##name(reg_val); \
+} \
+ \
+static inline void set_##unit##_##name(uint##sz##_t val) \
+{ \
+ change_##unit##_##name(val, val); \
+} \
+ \
+static inline void clear_##unit##_##name(uint##sz##_t val) \
+{ \
+ change_##unit##_##name(val, 0); \
+}
+
+#define CPS_ACCESSOR_RO(unit, sz, off, name) \
+ CPS_ACCESSOR_A(unit, off, name) \
+ CPS_ACCESSOR_R(unit, sz, name)
+
+#define CPS_ACCESSOR_WO(unit, sz, off, name) \
+ CPS_ACCESSOR_A(unit, off, name) \
+ CPS_ACCESSOR_W(unit, sz, name)
+
+#define CPS_ACCESSOR_RW(unit, sz, off, name) \
+ CPS_ACCESSOR_A(unit, off, name) \
+ CPS_ACCESSOR_R(unit, sz, name) \
+ CPS_ACCESSOR_W(unit, sz, name) \
+ CPS_ACCESSOR_M(unit, sz, name)
+
+#include <asm/mips-cm.h>
+#include <asm/mips-cpc.h>
+#include <asm/mips-gic.h>
+
+/**
+ * mips_cps_numclusters - return the number of clusters present in the system
+ *
+ * Returns the number of clusters in the system.
+ */
+static inline unsigned int mips_cps_numclusters(void)
+{
+ unsigned int num_clusters;
+
+ if (mips_cm_revision() < CM_REV_CM3_5)
+ return 1;
+
+ num_clusters = read_gcr_config() & CM_GCR_CONFIG_NUM_CLUSTERS;
+ num_clusters >>= __ffs(CM_GCR_CONFIG_NUM_CLUSTERS);
+ return num_clusters;
+}
+
+/**
+ * mips_cps_cluster_config - return (GCR|CPC)_CONFIG from a cluster
+ * @cluster: the ID of the cluster whose config we want
+ *
+ * Read the value of GCR_CONFIG (or its CPC_CONFIG mirror) from a @cluster.
+ *
+ * Returns the value of GCR_CONFIG.
+ */
+static inline uint64_t mips_cps_cluster_config(unsigned int cluster)
+{
+ uint64_t config;
+
+ if (mips_cm_revision() < CM_REV_CM3_5) {
+ /*
+ * Prior to CM 3.5 we don't have the notion of multiple
+ * clusters so we can trivially read the GCR_CONFIG register
+ * within this cluster.
+ */
+ WARN_ON(cluster != 0);
+ config = read_gcr_config();
+ } else {
+ /*
+ * From CM 3.5 onwards we read the CPC_CONFIG mirror of
+ * GCR_CONFIG via the redirect region, since the CPC is always
+ * powered up allowing us not to need to power up the CM.
+ */
+ mips_cm_lock_other(cluster, 0, 0, CM_GCR_Cx_OTHER_BLOCK_GLOBAL);
+ config = read_cpc_redir_config();
+ mips_cm_unlock_other();
+ }
+
+ return config;
+}
+
+/**
+ * mips_cps_numcores - return the number of cores present in a cluster
+ * @cluster: the ID of the cluster whose core count we want
+ *
+ * Returns the value of the PCORES field of the GCR_CONFIG register plus 1, or
+ * zero if no Coherence Manager is present.
+ */
+static inline unsigned int mips_cps_numcores(unsigned int cluster)
+{
+ if (!mips_cm_present())
+ return 0;
+
+ /* Add one before masking to handle 0xff indicating no cores */
+ return (mips_cps_cluster_config(cluster) + 1) & CM_GCR_CONFIG_PCORES;
+}
+
+/**
+ * mips_cps_numiocu - return the number of IOCUs present in a cluster
+ * @cluster: the ID of the cluster whose IOCU count we want
+ *
+ * Returns the value of the NUMIOCU field of the GCR_CONFIG register, or zero
+ * if no Coherence Manager is present.
+ */
+static inline unsigned int mips_cps_numiocu(unsigned int cluster)
+{
+ unsigned int num_iocu;
+
+ if (!mips_cm_present())
+ return 0;
+
+ num_iocu = mips_cps_cluster_config(cluster) & CM_GCR_CONFIG_NUMIOCU;
+ num_iocu >>= __ffs(CM_GCR_CONFIG_NUMIOCU);
+ return num_iocu;
+}
+
+/**
+ * mips_cps_numvps - return the number of VPs (threads) supported by a core
+ * @cluster: the ID of the cluster containing the core we want to examine
+ * @core: the ID of the core whose VP count we want
+ *
+ * Returns the number of Virtual Processors (VPs, ie. hardware threads) that
+ * are supported by the given @core in the given @cluster. If the core or the
+ * kernel do not support hardware mutlti-threading this returns 1.
+ */
+static inline unsigned int mips_cps_numvps(unsigned int cluster, unsigned int core)
+{
+ unsigned int cfg;
+
+ if (!mips_cm_present())
+ return 1;
+
+ if ((!IS_ENABLED(CONFIG_MIPS_MT_SMP) || !cpu_has_mipsmt)
+ && (!IS_ENABLED(CONFIG_CPU_MIPSR6) || !cpu_has_vp))
+ return 1;
+
+ mips_cm_lock_other(cluster, core, 0, CM_GCR_Cx_OTHER_BLOCK_LOCAL);
+
+ if (mips_cm_revision() < CM_REV_CM3_5) {
+ /*
+ * Prior to CM 3.5 we can only have one cluster & don't have
+ * CPC_Cx_CONFIG, so we read GCR_Cx_CONFIG.
+ */
+ cfg = read_gcr_co_config();
+ } else {
+ /*
+ * From CM 3.5 onwards we read CPC_Cx_CONFIG because the CPC is
+ * always powered, which allows us to not worry about powering
+ * up the cluster's CM here.
+ */
+ cfg = read_cpc_co_config();
+ }
+
+ mips_cm_unlock_other();
+
+ return (cfg + 1) & CM_GCR_Cx_CONFIG_PVPE;
+}
+
+#endif /* __MIPS_ASM_MIPS_CPS_H__ */
diff --git a/arch/mips/include/asm/mips-gic.h b/arch/mips/include/asm/mips-gic.h
new file mode 100644
index 000000000000..558059a8f218
--- /dev/null
+++ b/arch/mips/include/asm/mips-gic.h
@@ -0,0 +1,347 @@
+/*
+ * Copyright (C) 2017 Imagination Technologies
+ * Author: Paul Burton <paul.burton@mips.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ */
+
+#ifndef __MIPS_ASM_MIPS_CPS_H__
+# error Please include asm/mips-cps.h rather than asm/mips-gic.h
+#endif
+
+#ifndef __MIPS_ASM_MIPS_GIC_H__
+#define __MIPS_ASM_MIPS_GIC_H__
+
+#include <linux/bitops.h>
+
+/* The base address of the GIC registers */
+extern void __iomem *mips_gic_base;
+
+/* Offsets from the GIC base address to various control blocks */
+#define MIPS_GIC_SHARED_OFS 0x00000
+#define MIPS_GIC_SHARED_SZ 0x08000
+#define MIPS_GIC_LOCAL_OFS 0x08000
+#define MIPS_GIC_LOCAL_SZ 0x04000
+#define MIPS_GIC_REDIR_OFS 0x0c000
+#define MIPS_GIC_REDIR_SZ 0x04000
+#define MIPS_GIC_USER_OFS 0x10000
+#define MIPS_GIC_USER_SZ 0x10000
+
+/* For read-only shared registers */
+#define GIC_ACCESSOR_RO(sz, off, name) \
+ CPS_ACCESSOR_RO(gic, sz, MIPS_GIC_SHARED_OFS + off, name)
+
+/* For read-write shared registers */
+#define GIC_ACCESSOR_RW(sz, off, name) \
+ CPS_ACCESSOR_RW(gic, sz, MIPS_GIC_SHARED_OFS + off, name)
+
+/* For read-only local registers */
+#define GIC_VX_ACCESSOR_RO(sz, off, name) \
+ CPS_ACCESSOR_RO(gic, sz, MIPS_GIC_LOCAL_OFS + off, vl_##name) \
+ CPS_ACCESSOR_RO(gic, sz, MIPS_GIC_REDIR_OFS + off, vo_##name)
+
+/* For read-write local registers */
+#define GIC_VX_ACCESSOR_RW(sz, off, name) \
+ CPS_ACCESSOR_RW(gic, sz, MIPS_GIC_LOCAL_OFS + off, vl_##name) \
+ CPS_ACCESSOR_RW(gic, sz, MIPS_GIC_REDIR_OFS + off, vo_##name)
+
+/* For read-only shared per-interrupt registers */
+#define GIC_ACCESSOR_RO_INTR_REG(sz, off, stride, name) \
+static inline void __iomem *addr_gic_##name(unsigned int intr) \
+{ \
+ return mips_gic_base + (off) + (intr * (stride)); \
+} \
+ \
+static inline unsigned int read_gic_##name(unsigned int intr) \
+{ \
+ BUILD_BUG_ON(sz != 32); \
+ return __raw_readl(addr_gic_##name(intr)); \
+}
+
+/* For read-write shared per-interrupt registers */
+#define GIC_ACCESSOR_RW_INTR_REG(sz, off, stride, name) \
+ GIC_ACCESSOR_RO_INTR_REG(sz, off, stride, name) \
+ \
+static inline void write_gic_##name(unsigned int intr, \
+ unsigned int val) \
+{ \
+ BUILD_BUG_ON(sz != 32); \
+ __raw_writel(val, addr_gic_##name(intr)); \
+}
+
+/* For read-only local per-interrupt registers */
+#define GIC_VX_ACCESSOR_RO_INTR_REG(sz, off, stride, name) \
+ GIC_ACCESSOR_RO_INTR_REG(sz, MIPS_GIC_LOCAL_OFS + off, \
+ stride, vl_##name) \
+ GIC_ACCESSOR_RO_INTR_REG(sz, MIPS_GIC_REDIR_OFS + off, \
+ stride, vo_##name)
+
+/* For read-write local per-interrupt registers */
+#define GIC_VX_ACCESSOR_RW_INTR_REG(sz, off, stride, name) \
+ GIC_ACCESSOR_RW_INTR_REG(sz, MIPS_GIC_LOCAL_OFS + off, \
+ stride, vl_##name) \
+ GIC_ACCESSOR_RW_INTR_REG(sz, MIPS_GIC_REDIR_OFS + off, \
+ stride, vo_##name)
+
+/* For read-only shared bit-per-interrupt registers */
+#define GIC_ACCESSOR_RO_INTR_BIT(off, name) \
+static inline void __iomem *addr_gic_##name(void) \
+{ \
+ return mips_gic_base + (off); \
+} \
+ \
+static inline unsigned int read_gic_##name(unsigned int intr) \
+{ \
+ void __iomem *addr = addr_gic_##name(); \
+ unsigned int val; \
+ \
+ if (mips_cm_is64) { \
+ addr += (intr / 64) * sizeof(uint64_t); \
+ val = __raw_readq(addr) >> intr % 64; \
+ } else { \
+ addr += (intr / 32) * sizeof(uint32_t); \
+ val = __raw_readl(addr) >> intr % 32; \
+ } \
+ \
+ return val & 0x1; \
+}
+
+/* For read-write shared bit-per-interrupt registers */
+#define GIC_ACCESSOR_RW_INTR_BIT(off, name) \
+ GIC_ACCESSOR_RO_INTR_BIT(off, name) \
+ \
+static inline void write_gic_##name(unsigned int intr) \
+{ \
+ void __iomem *addr = addr_gic_##name(); \
+ \
+ if (mips_cm_is64) { \
+ addr += (intr / 64) * sizeof(uint64_t); \
+ __raw_writeq(BIT(intr % 64), addr); \
+ } else { \
+ addr += (intr / 32) * sizeof(uint32_t); \
+ __raw_writel(BIT(intr % 32), addr); \
+ } \
+} \
+ \
+static inline void change_gic_##name(unsigned int intr, \
+ unsigned int val) \
+{ \
+ void __iomem *addr = addr_gic_##name(); \
+ \
+ if (mips_cm_is64) { \
+ uint64_t _val; \
+ \
+ addr += (intr / 64) * sizeof(uint64_t); \
+ _val = __raw_readq(addr); \
+ _val &= ~BIT_ULL(intr % 64); \
+ _val |= (uint64_t)val << (intr % 64); \
+ __raw_writeq(_val, addr); \
+ } else { \
+ uint32_t _val; \
+ \
+ addr += (intr / 32) * sizeof(uint32_t); \
+ _val = __raw_readl(addr); \
+ _val &= ~BIT(intr % 32); \
+ _val |= val << (intr % 32); \
+ __raw_writel(_val, addr); \
+ } \
+}
+
+/* For read-only local bit-per-interrupt registers */
+#define GIC_VX_ACCESSOR_RO_INTR_BIT(sz, off, name) \
+ GIC_ACCESSOR_RO_INTR_BIT(sz, MIPS_GIC_LOCAL_OFS + off, \
+ vl_##name) \
+ GIC_ACCESSOR_RO_INTR_BIT(sz, MIPS_GIC_REDIR_OFS + off, \
+ vo_##name)
+
+/* For read-write local bit-per-interrupt registers */
+#define GIC_VX_ACCESSOR_RW_INTR_BIT(sz, off, name) \
+ GIC_ACCESSOR_RW_INTR_BIT(sz, MIPS_GIC_LOCAL_OFS + off, \
+ vl_##name) \
+ GIC_ACCESSOR_RW_INTR_BIT(sz, MIPS_GIC_REDIR_OFS + off, \
+ vo_##name)
+
+/* GIC_SH_CONFIG - Information about the GIC configuration */
+GIC_ACCESSOR_RW(32, 0x000, config)
+#define GIC_CONFIG_COUNTSTOP BIT(28)
+#define GIC_CONFIG_COUNTBITS GENMASK(27, 24)
+#define GIC_CONFIG_NUMINTERRUPTS GENMASK(23, 16)
+#define GIC_CONFIG_PVPS GENMASK(6, 0)
+
+/* GIC_SH_COUNTER - Shared global counter value */
+GIC_ACCESSOR_RW(64, 0x010, counter)
+GIC_ACCESSOR_RW(32, 0x010, counter_32l)
+GIC_ACCESSOR_RW(32, 0x014, counter_32h)
+
+/* GIC_SH_POL_* - Configures interrupt polarity */
+GIC_ACCESSOR_RW_INTR_BIT(0x100, pol)
+#define GIC_POL_ACTIVE_LOW 0 /* when level triggered */
+#define GIC_POL_ACTIVE_HIGH 1 /* when level triggered */
+#define GIC_POL_FALLING_EDGE 0 /* when single-edge triggered */
+#define GIC_POL_RISING_EDGE 1 /* when single-edge triggered */
+
+/* GIC_SH_TRIG_* - Configures interrupts to be edge or level triggered */
+GIC_ACCESSOR_RW_INTR_BIT(0x180, trig)
+#define GIC_TRIG_LEVEL 0
+#define GIC_TRIG_EDGE 1
+
+/* GIC_SH_DUAL_* - Configures whether interrupts trigger on both edges */
+GIC_ACCESSOR_RW_INTR_BIT(0x200, dual)
+#define GIC_DUAL_SINGLE 0 /* when edge-triggered */
+#define GIC_DUAL_DUAL 1 /* when edge-triggered */
+
+/* GIC_SH_WEDGE - Write an 'edge', ie. trigger an interrupt */
+GIC_ACCESSOR_RW(32, 0x280, wedge)
+#define GIC_WEDGE_RW BIT(31)
+#define GIC_WEDGE_INTR GENMASK(7, 0)
+
+/* GIC_SH_RMASK_* - Reset/clear shared interrupt mask bits */
+GIC_ACCESSOR_RW_INTR_BIT(0x300, rmask)
+
+/* GIC_SH_SMASK_* - Set shared interrupt mask bits */
+GIC_ACCESSOR_RW_INTR_BIT(0x380, smask)
+
+/* GIC_SH_MASK_* - Read the current shared interrupt mask */
+GIC_ACCESSOR_RO_INTR_BIT(0x400, mask)
+
+/* GIC_SH_PEND_* - Read currently pending shared interrupts */
+GIC_ACCESSOR_RO_INTR_BIT(0x480, pend)
+
+/* GIC_SH_MAPx_PIN - Map shared interrupts to a particular CPU pin */
+GIC_ACCESSOR_RW_INTR_REG(32, 0x500, 0x4, map_pin)
+#define GIC_MAP_PIN_MAP_TO_PIN BIT(31)
+#define GIC_MAP_PIN_MAP_TO_NMI BIT(30)
+#define GIC_MAP_PIN_MAP GENMASK(5, 0)
+
+/* GIC_SH_MAPx_VP - Map shared interrupts to a particular Virtual Processor */
+GIC_ACCESSOR_RW_INTR_REG(32, 0x2000, 0x20, map_vp)
+
+/* GIC_Vx_CTL - VP-level interrupt control */
+GIC_VX_ACCESSOR_RW(32, 0x000, ctl)
+#define GIC_VX_CTL_FDC_ROUTABLE BIT(4)
+#define GIC_VX_CTL_SWINT_ROUTABLE BIT(3)
+#define GIC_VX_CTL_PERFCNT_ROUTABLE BIT(2)
+#define GIC_VX_CTL_TIMER_ROUTABLE BIT(1)
+#define GIC_VX_CTL_EIC BIT(0)
+
+/* GIC_Vx_PEND - Read currently pending local interrupts */
+GIC_VX_ACCESSOR_RO(32, 0x004, pend)
+
+/* GIC_Vx_MASK - Read the current local interrupt mask */
+GIC_VX_ACCESSOR_RO(32, 0x008, mask)
+
+/* GIC_Vx_RMASK - Reset/clear local interrupt mask bits */
+GIC_VX_ACCESSOR_RW(32, 0x00c, rmask)
+
+/* GIC_Vx_SMASK - Set local interrupt mask bits */
+GIC_VX_ACCESSOR_RW(32, 0x010, smask)
+
+/* GIC_Vx_*_MAP - Route local interrupts to the desired pins */
+GIC_VX_ACCESSOR_RW_INTR_REG(32, 0x040, 0x4, map)
+
+/* GIC_Vx_WD_MAP - Route the local watchdog timer interrupt */
+GIC_VX_ACCESSOR_RW(32, 0x040, wd_map)
+
+/* GIC_Vx_COMPARE_MAP - Route the local count/compare interrupt */
+GIC_VX_ACCESSOR_RW(32, 0x044, compare_map)
+
+/* GIC_Vx_TIMER_MAP - Route the local CPU timer (cp0 count/compare) interrupt */
+GIC_VX_ACCESSOR_RW(32, 0x048, timer_map)
+
+/* GIC_Vx_FDC_MAP - Route the local fast debug channel interrupt */
+GIC_VX_ACCESSOR_RW(32, 0x04c, fdc_map)
+
+/* GIC_Vx_PERFCTR_MAP - Route the local performance counter interrupt */
+GIC_VX_ACCESSOR_RW(32, 0x050, perfctr_map)
+
+/* GIC_Vx_SWINT0_MAP - Route the local software interrupt 0 */
+GIC_VX_ACCESSOR_RW(32, 0x054, swint0_map)
+
+/* GIC_Vx_SWINT1_MAP - Route the local software interrupt 1 */
+GIC_VX_ACCESSOR_RW(32, 0x058, swint1_map)
+
+/* GIC_Vx_OTHER - Configure access to other Virtual Processor registers */
+GIC_VX_ACCESSOR_RW(32, 0x080, other)
+#define GIC_VX_OTHER_VPNUM GENMASK(5, 0)
+
+/* GIC_Vx_IDENT - Retrieve the local Virtual Processor's ID */
+GIC_VX_ACCESSOR_RO(32, 0x088, ident)
+#define GIC_VX_IDENT_VPNUM GENMASK(5, 0)
+
+/* GIC_Vx_COMPARE - Value to compare with GIC_SH_COUNTER */
+GIC_VX_ACCESSOR_RW(64, 0x0a0, compare)
+
+/* GIC_Vx_EIC_SHADOW_SET_BASE - Set shadow register set for each interrupt */
+GIC_VX_ACCESSOR_RW_INTR_REG(32, 0x100, 0x4, eic_shadow_set)
+
+/**
+ * enum mips_gic_local_interrupt - GIC local interrupts
+ * @GIC_LOCAL_INT_WD: GIC watchdog timer interrupt
+ * @GIC_LOCAL_INT_COMPARE: GIC count/compare interrupt
+ * @GIC_LOCAL_INT_TIMER: CP0 count/compare interrupt
+ * @GIC_LOCAL_INT_PERFCTR: Performance counter interrupt
+ * @GIC_LOCAL_INT_SWINT0: Software interrupt 0
+ * @GIC_LOCAL_INT_SWINT1: Software interrupt 1
+ * @GIC_LOCAL_INT_FDC: Fast debug channel interrupt
+ * @GIC_NUM_LOCAL_INTRS: The number of local interrupts
+ *
+ * Enumerates interrupts provided by the GIC that are local to a VP.
+ */
+enum mips_gic_local_interrupt {
+ GIC_LOCAL_INT_WD,
+ GIC_LOCAL_INT_COMPARE,
+ GIC_LOCAL_INT_TIMER,
+ GIC_LOCAL_INT_PERFCTR,
+ GIC_LOCAL_INT_SWINT0,
+ GIC_LOCAL_INT_SWINT1,
+ GIC_LOCAL_INT_FDC,
+ GIC_NUM_LOCAL_INTRS
+};
+
+/**
+ * mips_gic_present() - Determine whether a GIC is present
+ *
+ * Determines whether a MIPS Global Interrupt Controller (GIC) is present in
+ * the system that the kernel is running on.
+ *
+ * Return true if a GIC is present, else false.
+ */
+static inline bool mips_gic_present(void)
+{
+ return IS_ENABLED(CONFIG_MIPS_GIC) && mips_gic_base;
+}
+
+/**
+ * gic_get_c0_compare_int() - Return cp0 count/compare interrupt virq
+ *
+ * Determine the virq number to use for the coprocessor 0 count/compare
+ * interrupt, which may be routed via the GIC.
+ *
+ * Returns the virq number or a negative error number.
+ */
+extern int gic_get_c0_compare_int(void);
+
+/**
+ * gic_get_c0_perfcount_int() - Return performance counter interrupt virq
+ *
+ * Determine the virq number to use for CPU performance counter interrupts,
+ * which may be routed via the GIC.
+ *
+ * Returns the virq number or a negative error number.
+ */
+extern int gic_get_c0_perfcount_int(void);
+
+/**
+ * gic_get_c0_fdc_int() - Return fast debug channel interrupt virq
+ *
+ * Determine the virq number to use for fast debug channel (FDC) interrupts,
+ * which may be routed via the GIC.
+ *
+ * Returns the virq number or a negative error number.
+ */
+extern int gic_get_c0_fdc_int(void);
+
+#endif /* __MIPS_ASM_MIPS_CPS_H__ */
diff --git a/arch/mips/include/asm/mips_mt.h b/arch/mips/include/asm/mips_mt.h
index aa4cca060e0a..b444523ecd50 100644
--- a/arch/mips/include/asm/mips_mt.h
+++ b/arch/mips/include/asm/mips_mt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions and declarations for MIPS MT support that are common between
* the VSMP, and AP/SP kernel models.
diff --git a/arch/mips/include/asm/mipsmtregs.h b/arch/mips/include/asm/mipsmtregs.h
index 5f8052ce43bf..212336b7c0f4 100644
--- a/arch/mips/include/asm/mipsmtregs.h
+++ b/arch/mips/include/asm/mipsmtregs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* MT regs definitions, follows on from mipsregs.h
* Copyright (C) 2004 - 2005 MIPS Technologies, Inc. All rights reserved.
diff --git a/arch/mips/include/asm/mipsprom.h b/arch/mips/include/asm/mipsprom.h
index e93943fabeac..2eda19f8fd4c 100644
--- a/arch/mips/include/asm/mipsprom.h
+++ b/arch/mips/include/asm/mipsprom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MIPSPROM_H
#define __ASM_MIPSPROM_H
diff --git a/arch/mips/include/asm/mipsregs.h b/arch/mips/include/asm/mipsregs.h
index dbb0eceda2c6..a6810923b3f0 100644
--- a/arch/mips/include/asm/mipsregs.h
+++ b/arch/mips/include/asm/mipsregs.h
@@ -48,6 +48,7 @@
#define CP0_ENTRYLO0 $2
#define CP0_ENTRYLO1 $3
#define CP0_CONF $3
+#define CP0_GLOBALNUMBER $3, 1
#define CP0_CONTEXT $4
#define CP0_PAGEMASK $5
#define CP0_SEGCTL0 $5, 2
@@ -148,6 +149,16 @@
#define MIPS_ENTRYLO_RI (_ULCAST_(1) << (BITS_PER_LONG - 1))
/*
+ * MIPSr6+ GlobalNumber register definitions
+ */
+#define MIPS_GLOBALNUMBER_VP_SHF 0
+#define MIPS_GLOBALNUMBER_VP (_ULCAST_(0xff) << MIPS_GLOBALNUMBER_VP_SHF)
+#define MIPS_GLOBALNUMBER_CORE_SHF 8
+#define MIPS_GLOBALNUMBER_CORE (_ULCAST_(0xff) << MIPS_GLOBALNUMBER_CORE_SHF)
+#define MIPS_GLOBALNUMBER_CLUSTER_SHF 16
+#define MIPS_GLOBALNUMBER_CLUSTER (_ULCAST_(0xf) << MIPS_GLOBALNUMBER_CLUSTER_SHF)
+
+/*
* Values for PageMask register
*/
#ifdef CONFIG_CPU_VR41XX
@@ -1366,29 +1377,32 @@ do { \
#define __write_64bit_c0_split(source, sel, val) \
do { \
+ unsigned long long __tmp; \
unsigned long __flags; \
\
local_irq_save(__flags); \
if (sel == 0) \
__asm__ __volatile__( \
".set\tmips64\n\t" \
- "dsll\t%L0, %L0, 32\n\t" \
+ "dsll\t%L0, %L1, 32\n\t" \
"dsrl\t%L0, %L0, 32\n\t" \
- "dsll\t%M0, %M0, 32\n\t" \
+ "dsll\t%M0, %M1, 32\n\t" \
"or\t%L0, %L0, %M0\n\t" \
"dmtc0\t%L0, " #source "\n\t" \
".set\tmips0" \
- : : "r" (val)); \
+ : "=&r,r" (__tmp) \
+ : "r,0" (val)); \
else \
__asm__ __volatile__( \
".set\tmips64\n\t" \
- "dsll\t%L0, %L0, 32\n\t" \
+ "dsll\t%L0, %L1, 32\n\t" \
"dsrl\t%L0, %L0, 32\n\t" \
- "dsll\t%M0, %M0, 32\n\t" \
+ "dsll\t%M0, %M1, 32\n\t" \
"or\t%L0, %L0, %M0\n\t" \
"dmtc0\t%L0, " #source ", " #sel "\n\t" \
".set\tmips0" \
- : : "r" (val)); \
+ : "=&r,r" (__tmp) \
+ : "r,0" (val)); \
local_irq_restore(__flags); \
} while (0)
@@ -1446,6 +1460,8 @@ do { \
#define read_c0_conf() __read_32bit_c0_register($3, 0)
#define write_c0_conf(val) __write_32bit_c0_register($3, 0, val)
+#define read_c0_globalnumber() __read_32bit_c0_register($3, 1)
+
#define read_c0_context() __read_ulong_c0_register($4, 0)
#define write_c0_context(val) __write_ulong_c0_register($4, 0, val)
diff --git a/arch/mips/include/asm/mmu.h b/arch/mips/include/asm/mmu.h
index f6ba08d77931..0740be7d5d4a 100644
--- a/arch/mips/include/asm/mmu.h
+++ b/arch/mips/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MMU_H
#define __ASM_MMU_H
diff --git a/arch/mips/include/asm/mmzone.h b/arch/mips/include/asm/mmzone.h
index f53ec54c92ff..f085fba41da5 100644
--- a/arch/mips/include/asm/mmzone.h
+++ b/arch/mips/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Written by Kanoj Sarcar (kanoj@sgi.com) Aug 99
* Rewritten for Linux 2.6 by Christoph Hellwig (hch@lst.de) Jan 2004
diff --git a/arch/mips/include/asm/module.h b/arch/mips/include/asm/module.h
index e51add184717..6dc0b21b8acd 100644
--- a/arch/mips/include/asm/module.h
+++ b/arch/mips/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_MODULE_H
#define _ASM_MODULE_H
@@ -114,8 +115,6 @@ search_module_dbetables(unsigned long addr)
#define MODULE_PROC_FAMILY "R5432 "
#elif defined CONFIG_CPU_R5500
#define MODULE_PROC_FAMILY "R5500 "
-#elif defined CONFIG_CPU_R6000
-#define MODULE_PROC_FAMILY "R6000 "
#elif defined CONFIG_CPU_NEVADA
#define MODULE_PROC_FAMILY "NEVADA "
#elif defined CONFIG_CPU_R8000
diff --git a/arch/mips/include/asm/msa.h b/arch/mips/include/asm/msa.h
index 8967b475ab10..b1845102f8f9 100644
--- a/arch/mips/include/asm/msa.h
+++ b/arch/mips/include/asm/msa.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2013 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/asm/netlogic/common.h b/arch/mips/include/asm/netlogic/common.h
index e0717d10e650..a6e6cbebe046 100644
--- a/arch/mips/include/asm/netlogic/common.h
+++ b/arch/mips/include/asm/netlogic/common.h
@@ -84,7 +84,7 @@ nlm_set_nmi_handler(void *handler)
*/
void nlm_init_boot_cpu(void);
unsigned int nlm_get_cpu_frequency(void);
-extern struct plat_smp_ops nlm_smp_ops;
+extern const struct plat_smp_ops nlm_smp_ops;
extern char nlm_reset_entry[], nlm_reset_entry_end[];
/* SWIOTLB */
diff --git a/arch/mips/include/asm/nile4.h b/arch/mips/include/asm/nile4.h
index 99e97f8bfbca..9d36b7823603 100644
--- a/arch/mips/include/asm/nile4.h
+++ b/arch/mips/include/asm/nile4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* asm-mips/nile4.h -- NEC Vrc-5074 Nile 4 definitions
*
diff --git a/arch/mips/include/asm/octeon/cvmx-boot-vector.h b/arch/mips/include/asm/octeon/cvmx-boot-vector.h
new file mode 100644
index 000000000000..8db08241d53c
--- /dev/null
+++ b/arch/mips/include/asm/octeon/cvmx-boot-vector.h
@@ -0,0 +1,53 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 2003-2017 Cavium, Inc.
+ */
+
+#ifndef __CVMX_BOOT_VECTOR_H__
+#define __CVMX_BOOT_VECTOR_H__
+
+#include <asm/octeon/octeon.h>
+
+/*
+ * The boot vector table is made up of an array of 1024 elements of
+ * struct cvmx_boot_vector_element. There is one entry for each
+ * possible MIPS CPUNum, indexed by the CPUNum.
+ *
+ * Once cvmx_boot_vector_get() returns a non-NULL value (indicating
+ * success), NMI to a core will cause execution to transfer to the
+ * target_ptr location for that core's entry in the vector table.
+ *
+ * The struct cvmx_boot_vector_element fields app0, app1, and app2 can
+ * be used by the application that has set the target_ptr in any
+ * application specific manner, they are not touched by the vectoring
+ * code.
+ *
+ * The boot vector code clobbers the CP0_DESAVE register, and on
+ * OCTEON II and later CPUs also clobbers CP0_KScratch2. All GP
+ * registers are preserved, except on pre-OCTEON II CPUs, where k1 is
+ * clobbered.
+ *
+ */
+
+
+/*
+ * Applications install the boot bus code in cvmx-boot-vector.c, which
+ * uses this magic:
+ */
+#define OCTEON_BOOT_MOVEABLE_MAGIC1 0xdb00110ad358eacdull
+
+struct cvmx_boot_vector_element {
+ /* kseg0 or xkphys address of target code. */
+ uint64_t target_ptr;
+ /* Three application specific arguments. */
+ uint64_t app0;
+ uint64_t app1;
+ uint64_t app2;
+};
+
+struct cvmx_boot_vector_element *cvmx_boot_vector_get(void);
+
+#endif /* __CVMX_BOOT_VECTOR_H__ */
diff --git a/arch/mips/include/asm/octeon/cvmx-bootmem.h b/arch/mips/include/asm/octeon/cvmx-bootmem.h
index 374562507d0b..72d2e403a6e4 100644
--- a/arch/mips/include/asm/octeon/cvmx-bootmem.h
+++ b/arch/mips/include/asm/octeon/cvmx-bootmem.h
@@ -255,6 +255,34 @@ extern void *cvmx_bootmem_alloc_named_range(uint64_t size, uint64_t min_addr,
uint64_t max_addr, uint64_t align,
char *name);
+/**
+ * Allocate if needed a block of memory from a specific range of the
+ * free list that was passed to the application by the bootloader, and
+ * assign it a name in the global named block table. (part of the
+ * cvmx_bootmem_descriptor_t structure) Named blocks can later be
+ * freed. If the requested name block is already allocated, return
+ * the pointer to block of memory. If request cannot be satisfied
+ * within the address range specified, NULL is returned
+ *
+ * @param size Size in bytes of block to allocate
+ * @param min_addr minimum address of range
+ * @param max_addr maximum address of range
+ * @param align Alignment of memory to be allocated. (must be a power of 2)
+ * @param name name of block - must be less than CVMX_BOOTMEM_NAME_LEN bytes
+ * @param init Initialization function
+ *
+ * The initialization function is optional, if omitted the named block
+ * is initialized to all zeros when it is created, i.e. once.
+ *
+ * @return pointer to block of memory, NULL on error
+ */
+void *cvmx_bootmem_alloc_named_range_once(uint64_t size,
+ uint64_t min_addr,
+ uint64_t max_addr,
+ uint64_t align,
+ char *name,
+ void (*init) (void *));
+
extern int cvmx_bootmem_free_named(char *name);
/**
diff --git a/arch/mips/include/asm/octeon/cvmx-ciu-defs.h b/arch/mips/include/asm/octeon/cvmx-ciu-defs.h
index 0dd0e40c96d4..6e61792d9248 100644
--- a/arch/mips/include/asm/octeon/cvmx-ciu-defs.h
+++ b/arch/mips/include/asm/octeon/cvmx-ciu-defs.h
@@ -128,6 +128,7 @@ static inline uint64_t CVMX_CIU_PP_POKEX(unsigned long offset)
case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
+ case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8;
case OCTEON_CN31XX & OCTEON_FAMILY_MASK:
case OCTEON_CN50XX & OCTEON_FAMILY_MASK:
@@ -143,6 +144,10 @@ static inline uint64_t CVMX_CIU_PP_POKEX(unsigned long offset)
return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8;
case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
return CVMX_ADD_IO_SEG(0x0001070100100200ull) + (offset) * 8;
+ case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
+ case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
+ case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
+ return CVMX_ADD_IO_SEG(0x0001010000030000ull) + (offset) * 8;
}
return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8;
}
@@ -180,6 +185,7 @@ static inline uint64_t CVMX_CIU_WDOGX(unsigned long offset)
case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
+ case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8;
case OCTEON_CN31XX & OCTEON_FAMILY_MASK:
case OCTEON_CN50XX & OCTEON_FAMILY_MASK:
@@ -195,6 +201,10 @@ static inline uint64_t CVMX_CIU_WDOGX(unsigned long offset)
return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8;
case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
return CVMX_ADD_IO_SEG(0x0001070100100000ull) + (offset) * 8;
+ case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
+ case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
+ case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
+ return CVMX_ADD_IO_SEG(0x0001010000020000ull) + (offset) * 8;
}
return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8;
}
diff --git a/arch/mips/include/asm/octeon/cvmx-config.h b/arch/mips/include/asm/octeon/cvmx-config.h
index f4f1996e0fac..a8c358c02b05 100644
--- a/arch/mips/include/asm/octeon/cvmx-config.h
+++ b/arch/mips/include/asm/octeon/cvmx-config.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CVMX_CONFIG_H__
#define __CVMX_CONFIG_H__
diff --git a/arch/mips/include/asm/octeon/cvmx.h b/arch/mips/include/asm/octeon/cvmx.h
index e638735cc3ac..205ab2ce10f8 100644
--- a/arch/mips/include/asm/octeon/cvmx.h
+++ b/arch/mips/include/asm/octeon/cvmx.h
@@ -357,6 +357,34 @@ static inline unsigned int cvmx_get_local_core_num(void)
return cvmx_get_core_num() & ((1 << CVMX_NODE_NO_SHIFT) - 1);
}
+#define CVMX_NODE_BITS (2) /* Number of bits to define a node */
+#define CVMX_MAX_NODES (1 << CVMX_NODE_BITS)
+#define CVMX_NODE_IO_SHIFT (36)
+#define CVMX_NODE_MEM_SHIFT (40)
+#define CVMX_NODE_IO_MASK ((uint64_t)CVMX_NODE_MASK << CVMX_NODE_IO_SHIFT)
+
+static inline void cvmx_write_csr_node(uint64_t node, uint64_t csr_addr,
+ uint64_t val)
+{
+ uint64_t composite_csr_addr, node_addr;
+
+ node_addr = (node & CVMX_NODE_MASK) << CVMX_NODE_IO_SHIFT;
+ composite_csr_addr = (csr_addr & ~CVMX_NODE_IO_MASK) | node_addr;
+
+ cvmx_write64_uint64(composite_csr_addr, val);
+ if (((csr_addr >> 40) & 0x7ffff) == (0x118))
+ cvmx_read64_uint64(CVMX_MIO_BOOT_BIST_STAT | node_addr);
+}
+
+static inline uint64_t cvmx_read_csr_node(uint64_t node, uint64_t csr_addr)
+{
+ uint64_t node_addr;
+
+ node_addr = (csr_addr & ~CVMX_NODE_IO_MASK) |
+ (node & CVMX_NODE_MASK) << CVMX_NODE_IO_SHIFT;
+ return cvmx_read_csr(node_addr);
+}
+
/**
* Returns the number of bits set in the provided value.
* Simple wrapper for POP instruction.
diff --git a/arch/mips/include/asm/octeon/octeon.h b/arch/mips/include/asm/octeon/octeon.h
index 07c0516ef4d5..c99c4b6a79f4 100644
--- a/arch/mips/include/asm/octeon/octeon.h
+++ b/arch/mips/include/asm/octeon/octeon.h
@@ -362,4 +362,6 @@ extern void octeon_fixup_irqs(void);
extern struct semaphore octeon_bootbus_sem;
+struct irq_domain *octeon_irq_get_block_domain(int node, uint8_t block);
+
#endif /* __ASM_OCTEON_OCTEON_H */
diff --git a/arch/mips/include/asm/pm-cps.h b/arch/mips/include/asm/pm-cps.h
index 89d58d80b77b..bb0616967342 100644
--- a/arch/mips/include/asm/pm-cps.h
+++ b/arch/mips/include/asm/pm-cps.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2014 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/asm/seccomp.h b/arch/mips/include/asm/seccomp.h
index d886d6f7687a..e383d7e27b93 100644
--- a/arch/mips/include/asm/seccomp.h
+++ b/arch/mips/include/asm/seccomp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SECCOMP_H
#include <linux/unistd.h>
diff --git a/arch/mips/include/asm/setup.h b/arch/mips/include/asm/setup.h
index 4f5279a8308d..d49d247d48a1 100644
--- a/arch/mips/include/asm/setup.h
+++ b/arch/mips/include/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MIPS_SETUP_H
#define _MIPS_SETUP_H
diff --git a/arch/mips/include/asm/sgi/pi1.h b/arch/mips/include/asm/sgi/pi1.h
index 96b1a0771ec3..88b814ef3f18 100644
--- a/arch/mips/include/asm/sgi/pi1.h
+++ b/arch/mips/include/asm/sgi/pi1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* pi1.h: Definitions for SGI PI1 parallel port
*/
diff --git a/arch/mips/include/asm/smp-cps.h b/arch/mips/include/asm/smp-cps.h
index 2ae1f61a4a95..16b4ee3feb98 100644
--- a/arch/mips/include/asm/smp-cps.h
+++ b/arch/mips/include/asm/smp-cps.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2013 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/asm/smp-ops.h b/arch/mips/include/asm/smp-ops.h
index db7c322f057f..53b2cb8e5966 100644
--- a/arch/mips/include/asm/smp-ops.h
+++ b/arch/mips/include/asm/smp-ops.h
@@ -13,7 +13,7 @@
#include <linux/errno.h>
-#include <asm/mips-cm.h>
+#include <asm/mips-cps.h>
#ifdef CONFIG_SMP
@@ -26,7 +26,7 @@ struct plat_smp_ops {
void (*send_ipi_mask)(const struct cpumask *mask, unsigned int action);
void (*init_secondary)(void);
void (*smp_finish)(void);
- void (*boot_secondary)(int cpu, struct task_struct *idle);
+ int (*boot_secondary)(int cpu, struct task_struct *idle);
void (*smp_setup)(void);
void (*prepare_cpus)(unsigned int max_cpus);
#ifdef CONFIG_HOTPLUG_CPU
@@ -35,11 +35,11 @@ struct plat_smp_ops {
#endif
};
-extern void register_smp_ops(struct plat_smp_ops *ops);
+extern void register_smp_ops(const struct plat_smp_ops *ops);
static inline void plat_smp_setup(void)
{
- extern struct plat_smp_ops *mp_ops; /* private */
+ extern const struct plat_smp_ops *mp_ops; /* private */
mp_ops->smp_setup();
}
@@ -57,7 +57,7 @@ static inline void plat_smp_setup(void)
/* UP, nothing to do ... */
}
-static inline void register_smp_ops(struct plat_smp_ops *ops)
+static inline void register_smp_ops(const struct plat_smp_ops *ops)
{
}
@@ -66,7 +66,7 @@ static inline void register_smp_ops(struct plat_smp_ops *ops)
static inline int register_up_smp_ops(void)
{
#ifdef CONFIG_SMP_UP
- extern struct plat_smp_ops up_smp_ops;
+ extern const struct plat_smp_ops up_smp_ops;
register_smp_ops(&up_smp_ops);
@@ -79,7 +79,7 @@ static inline int register_up_smp_ops(void)
static inline int register_cmp_smp_ops(void)
{
#ifdef CONFIG_MIPS_CMP
- extern struct plat_smp_ops cmp_smp_ops;
+ extern const struct plat_smp_ops cmp_smp_ops;
if (!mips_cm_present())
return -ENODEV;
@@ -95,7 +95,7 @@ static inline int register_cmp_smp_ops(void)
static inline int register_vsmp_smp_ops(void)
{
#ifdef CONFIG_MIPS_MT_SMP
- extern struct plat_smp_ops vsmp_smp_ops;
+ extern const struct plat_smp_ops vsmp_smp_ops;
register_smp_ops(&vsmp_smp_ops);
diff --git a/arch/mips/include/asm/smp.h b/arch/mips/include/asm/smp.h
index bab3d41e5987..9e494f8d9c03 100644
--- a/arch/mips/include/asm/smp.h
+++ b/arch/mips/include/asm/smp.h
@@ -58,7 +58,7 @@ extern void calculate_cpu_foreign_map(void);
*/
static inline void smp_send_reschedule(int cpu)
{
- extern struct plat_smp_ops *mp_ops; /* private */
+ extern const struct plat_smp_ops *mp_ops; /* private */
mp_ops->send_ipi_single(cpu, SMP_RESCHEDULE_YOURSELF);
}
@@ -66,14 +66,14 @@ static inline void smp_send_reschedule(int cpu)
#ifdef CONFIG_HOTPLUG_CPU
static inline int __cpu_disable(void)
{
- extern struct plat_smp_ops *mp_ops; /* private */
+ extern const struct plat_smp_ops *mp_ops; /* private */
return mp_ops->cpu_disable();
}
static inline void __cpu_die(unsigned int cpu)
{
- extern struct plat_smp_ops *mp_ops; /* private */
+ extern const struct plat_smp_ops *mp_ops; /* private */
mp_ops->cpu_die(cpu);
}
@@ -97,14 +97,14 @@ int mips_smp_ipi_free(const struct cpumask *mask);
static inline void arch_send_call_function_single_ipi(int cpu)
{
- extern struct plat_smp_ops *mp_ops; /* private */
+ extern const struct plat_smp_ops *mp_ops; /* private */
mp_ops->send_ipi_mask(cpumask_of(cpu), SMP_CALL_FUNCTION);
}
static inline void arch_send_call_function_ipi_mask(const struct cpumask *mask)
{
- extern struct plat_smp_ops *mp_ops; /* private */
+ extern const struct plat_smp_ops *mp_ops; /* private */
mp_ops->send_ipi_mask(mask, SMP_CALL_FUNCTION);
}
diff --git a/arch/mips/include/asm/sn/hub.h b/arch/mips/include/asm/sn/hub.h
index 1992d9254a08..338f7eed74f1 100644
--- a/arch/mips/include/asm/sn/hub.h
+++ b/arch/mips/include/asm/sn/hub.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SN_HUB_H
#define __ASM_SN_HUB_H
diff --git a/arch/mips/include/asm/sn/ioc3.h b/arch/mips/include/asm/sn/ioc3.h
index feb385180f87..25c8dccab51f 100644
--- a/arch/mips/include/asm/sn/ioc3.h
+++ b/arch/mips/include/asm/sn/ioc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999, 2000 Ralf Baechle
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
diff --git a/arch/mips/include/asm/sn/klkernvars.h b/arch/mips/include/asm/sn/klkernvars.h
index 6af25ba41ade..ea6b21795163 100644
--- a/arch/mips/include/asm/sn/klkernvars.h
+++ b/arch/mips/include/asm/sn/klkernvars.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File ported from IRIX to Linux by Kanoj Sarcar, 06/08/00.
* Copyright 2000 Silicon Graphics, Inc.
diff --git a/arch/mips/include/asm/sn/mapped_kernel.h b/arch/mips/include/asm/sn/mapped_kernel.h
index 401f3b0eee17..2f3efa91c16e 100644
--- a/arch/mips/include/asm/sn/mapped_kernel.h
+++ b/arch/mips/include/asm/sn/mapped_kernel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File created by Kanoj Sarcar 06/06/00.
* Copyright 2000 Silicon Graphics, Inc.
diff --git a/arch/mips/include/asm/sn/sn_private.h b/arch/mips/include/asm/sn/sn_private.h
index fdfae43d8b99..f09ba846c644 100644
--- a/arch/mips/include/asm/sn/sn_private.h
+++ b/arch/mips/include/asm/sn/sn_private.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SN_SN_PRIVATE_H
#define __ASM_SN_SN_PRIVATE_H
diff --git a/arch/mips/include/asm/sparsemem.h b/arch/mips/include/asm/sparsemem.h
index b1071c1e54f5..b0686ca3d8bf 100644
--- a/arch/mips/include/asm/sparsemem.h
+++ b/arch/mips/include/asm/sparsemem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MIPS_SPARSEMEM_H
#define _MIPS_SPARSEMEM_H
#ifdef CONFIG_SPARSEMEM
diff --git a/arch/mips/include/asm/spinlock_types.h b/arch/mips/include/asm/spinlock_types.h
index 177e722eb96c..28fd4b140bea 100644
--- a/arch/mips/include/asm/spinlock_types.h
+++ b/arch/mips/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPINLOCK_TYPES_H
#define _ASM_SPINLOCK_TYPES_H
diff --git a/arch/mips/include/asm/spram.h b/arch/mips/include/asm/spram.h
index 0f90d88e464d..63cb90fd4148 100644
--- a/arch/mips/include/asm/spram.h
+++ b/arch/mips/include/asm/spram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MIPS_SPRAM_H
#define _MIPS_SPRAM_H
diff --git a/arch/mips/include/asm/stackframe.h b/arch/mips/include/asm/stackframe.h
index eaa5a4d7d5e5..5d3563c55e0c 100644
--- a/arch/mips/include/asm/stackframe.h
+++ b/arch/mips/include/asm/stackframe.h
@@ -19,20 +19,43 @@
#include <asm/asm-offsets.h>
#include <asm/thread_info.h>
+/* Make the addition of cfi info a little easier. */
+ .macro cfi_rel_offset reg offset=0 docfi=0
+ .if \docfi
+ .cfi_rel_offset \reg, \offset
+ .endif
+ .endm
+
+ .macro cfi_st reg offset=0 docfi=0
+ LONG_S \reg, \offset(sp)
+ cfi_rel_offset \reg, \offset, \docfi
+ .endm
+
+ .macro cfi_restore reg offset=0 docfi=0
+ .if \docfi
+ .cfi_restore \reg
+ .endif
+ .endm
+
+ .macro cfi_ld reg offset=0 docfi=0
+ LONG_L \reg, \offset(sp)
+ cfi_restore \reg \offset \docfi
+ .endm
+
#if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX)
#define STATMASK 0x3f
#else
#define STATMASK 0x1f
#endif
- .macro SAVE_AT
+ .macro SAVE_AT docfi=0
.set push
.set noat
- LONG_S $1, PT_R1(sp)
+ cfi_st $1, PT_R1, \docfi
.set pop
.endm
- .macro SAVE_TEMP
+ .macro SAVE_TEMP docfi=0
#ifdef CONFIG_CPU_HAS_SMARTMIPS
mflhxu v1
LONG_S v1, PT_LO(sp)
@@ -44,20 +67,20 @@
mfhi v1
#endif
#ifdef CONFIG_32BIT
- LONG_S $8, PT_R8(sp)
- LONG_S $9, PT_R9(sp)
+ cfi_st $8, PT_R8, \docfi
+ cfi_st $9, PT_R9, \docfi
#endif
- LONG_S $10, PT_R10(sp)
- LONG_S $11, PT_R11(sp)
- LONG_S $12, PT_R12(sp)
+ cfi_st $10, PT_R10, \docfi
+ cfi_st $11, PT_R11, \docfi
+ cfi_st $12, PT_R12, \docfi
#if !defined(CONFIG_CPU_HAS_SMARTMIPS) && !defined(CONFIG_CPU_MIPSR6)
LONG_S v1, PT_HI(sp)
mflo v1
#endif
- LONG_S $13, PT_R13(sp)
- LONG_S $14, PT_R14(sp)
- LONG_S $15, PT_R15(sp)
- LONG_S $24, PT_R24(sp)
+ cfi_st $13, PT_R13, \docfi
+ cfi_st $14, PT_R14, \docfi
+ cfi_st $15, PT_R15, \docfi
+ cfi_st $24, PT_R24, \docfi
#if !defined(CONFIG_CPU_HAS_SMARTMIPS) && !defined(CONFIG_CPU_MIPSR6)
LONG_S v1, PT_LO(sp)
#endif
@@ -71,20 +94,28 @@
#endif
.endm
- .macro SAVE_STATIC
- LONG_S $16, PT_R16(sp)
- LONG_S $17, PT_R17(sp)
- LONG_S $18, PT_R18(sp)
- LONG_S $19, PT_R19(sp)
- LONG_S $20, PT_R20(sp)
- LONG_S $21, PT_R21(sp)
- LONG_S $22, PT_R22(sp)
- LONG_S $23, PT_R23(sp)
- LONG_S $30, PT_R30(sp)
+ .macro SAVE_STATIC docfi=0
+ cfi_st $16, PT_R16, \docfi
+ cfi_st $17, PT_R17, \docfi
+ cfi_st $18, PT_R18, \docfi
+ cfi_st $19, PT_R19, \docfi
+ cfi_st $20, PT_R20, \docfi
+ cfi_st $21, PT_R21, \docfi
+ cfi_st $22, PT_R22, \docfi
+ cfi_st $23, PT_R23, \docfi
+ cfi_st $30, PT_R30, \docfi
.endm
+/*
+ * get_saved_sp returns the SP for the current CPU by looking in the
+ * kernelsp array for it. If tosp is set, it stores the current sp in
+ * k0 and loads the new value in sp. If not, it clobbers k0 and
+ * stores the new value in k1, leaving sp unaffected.
+ */
#ifdef CONFIG_SMP
- .macro get_saved_sp /* SMP variation */
+
+ /* SMP variation */
+ .macro get_saved_sp docfi=0 tosp=0
ASM_CPUID_MFC0 k0, ASM_SMP_CPUID_REG
#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
lui k1, %hi(kernelsp)
@@ -97,7 +128,15 @@
#endif
LONG_SRL k0, SMP_CPUID_PTRSHIFT
LONG_ADDU k1, k0
+ .if \tosp
+ move k0, sp
+ .if \docfi
+ .cfi_register sp, k0
+ .endif
+ LONG_L sp, %lo(kernelsp)(k1)
+ .else
LONG_L k1, %lo(kernelsp)(k1)
+ .endif
.endm
.macro set_saved_sp stackp temp temp2
@@ -106,7 +145,8 @@
LONG_S \stackp, kernelsp(\temp)
.endm
#else /* !CONFIG_SMP */
- .macro get_saved_sp /* Uniprocessor variation */
+ /* Uniprocessor variation */
+ .macro get_saved_sp docfi=0 tosp=0
#ifdef CONFIG_CPU_JUMP_WORKAROUNDS
/*
* Clear BTB (branch target buffer), forbid RAS (return address
@@ -135,7 +175,15 @@
daddiu k1, %hi(kernelsp)
dsll k1, k1, 16
#endif
+ .if \tosp
+ move k0, sp
+ .if \docfi
+ .cfi_register sp, k0
+ .endif
+ LONG_L sp, %lo(kernelsp)(k1)
+ .else
LONG_L k1, %lo(kernelsp)(k1)
+ .endif
.endm
.macro set_saved_sp stackp temp temp2
@@ -143,7 +191,7 @@
.endm
#endif
- .macro SAVE_SOME
+ .macro SAVE_SOME docfi=0
.set push
.set noat
.set reorder
@@ -151,7 +199,6 @@
sll k0, 3 /* extract cu0 bit */
.set noreorder
bltz k0, 8f
- move k1, sp
#ifdef CONFIG_EVA
/*
* Flush interAptiv's Return Prediction Stack (RPS) by writing
@@ -178,20 +225,26 @@
MTC0 k0, CP0_ENTRYHI
#endif
.set reorder
+ move k0, sp
+ .if \docfi
+ .cfi_register sp, k0
+ .endif
/* Called from user mode, new stack. */
- get_saved_sp
-#ifndef CONFIG_CPU_DADDI_WORKAROUNDS
-8: move k0, sp
- PTR_SUBU sp, k1, PT_SIZE
-#else
- .set at=k0
-8: PTR_SUBU k1, PT_SIZE
+ get_saved_sp docfi=\docfi tosp=1
+8:
+#ifdef CONFIG_CPU_DADDI_WORKAROUNDS
+ .set at=k1
+#endif
+ PTR_SUBU sp, PT_SIZE
+#ifdef CONFIG_CPU_DADDI_WORKAROUNDS
.set noat
- move k0, sp
- move sp, k1
#endif
- LONG_S k0, PT_R29(sp)
- LONG_S $3, PT_R3(sp)
+ .if \docfi
+ .cfi_def_cfa sp,0
+ .endif
+ cfi_st k0, PT_R29, \docfi
+ cfi_rel_offset sp, PT_R29, \docfi
+ cfi_st v1, PT_R3, \docfi
/*
* You might think that you don't need to save $0,
* but the FPU emulator and gdb remote debug stub
@@ -199,23 +252,26 @@
*/
LONG_S $0, PT_R0(sp)
mfc0 v1, CP0_STATUS
- LONG_S $2, PT_R2(sp)
+ cfi_st v0, PT_R2, \docfi
LONG_S v1, PT_STATUS(sp)
- LONG_S $4, PT_R4(sp)
+ cfi_st $4, PT_R4, \docfi
mfc0 v1, CP0_CAUSE
- LONG_S $5, PT_R5(sp)
+ cfi_st $5, PT_R5, \docfi
LONG_S v1, PT_CAUSE(sp)
- LONG_S $6, PT_R6(sp)
- MFC0 v1, CP0_EPC
- LONG_S $7, PT_R7(sp)
+ cfi_st $6, PT_R6, \docfi
+ cfi_st ra, PT_R31, \docfi
+ MFC0 ra, CP0_EPC
+ cfi_st $7, PT_R7, \docfi
#ifdef CONFIG_64BIT
- LONG_S $8, PT_R8(sp)
- LONG_S $9, PT_R9(sp)
+ cfi_st $8, PT_R8, \docfi
+ cfi_st $9, PT_R9, \docfi
#endif
- LONG_S v1, PT_EPC(sp)
- LONG_S $25, PT_R25(sp)
- LONG_S $28, PT_R28(sp)
- LONG_S $31, PT_R31(sp)
+ LONG_S ra, PT_EPC(sp)
+ .if \docfi
+ .cfi_rel_offset ra, PT_EPC
+ .endif
+ cfi_st $25, PT_R25, \docfi
+ cfi_st $28, PT_R28, \docfi
/* Set thread_info if we're coming from user mode */
mfc0 k0, CP0_STATUS
@@ -232,21 +288,21 @@
.set pop
.endm
- .macro SAVE_ALL
- SAVE_SOME
- SAVE_AT
- SAVE_TEMP
- SAVE_STATIC
+ .macro SAVE_ALL docfi=0
+ SAVE_SOME \docfi
+ SAVE_AT \docfi
+ SAVE_TEMP \docfi
+ SAVE_STATIC \docfi
.endm
- .macro RESTORE_AT
+ .macro RESTORE_AT docfi=0
.set push
.set noat
- LONG_L $1, PT_R1(sp)
+ cfi_ld $1, PT_R1, \docfi
.set pop
.endm
- .macro RESTORE_TEMP
+ .macro RESTORE_TEMP docfi=0
#ifdef CONFIG_CPU_CAVIUM_OCTEON
/* Restore the Octeon multiplier state */
jal octeon_mult_restore
@@ -265,33 +321,37 @@
mthi $24
#endif
#ifdef CONFIG_32BIT
- LONG_L $8, PT_R8(sp)
- LONG_L $9, PT_R9(sp)
+ cfi_ld $8, PT_R8, \docfi
+ cfi_ld $9, PT_R9, \docfi
#endif
- LONG_L $10, PT_R10(sp)
- LONG_L $11, PT_R11(sp)
- LONG_L $12, PT_R12(sp)
- LONG_L $13, PT_R13(sp)
- LONG_L $14, PT_R14(sp)
- LONG_L $15, PT_R15(sp)
- LONG_L $24, PT_R24(sp)
+ cfi_ld $10, PT_R10, \docfi
+ cfi_ld $11, PT_R11, \docfi
+ cfi_ld $12, PT_R12, \docfi
+ cfi_ld $13, PT_R13, \docfi
+ cfi_ld $14, PT_R14, \docfi
+ cfi_ld $15, PT_R15, \docfi
+ cfi_ld $24, PT_R24, \docfi
.endm
- .macro RESTORE_STATIC
- LONG_L $16, PT_R16(sp)
- LONG_L $17, PT_R17(sp)
- LONG_L $18, PT_R18(sp)
- LONG_L $19, PT_R19(sp)
- LONG_L $20, PT_R20(sp)
- LONG_L $21, PT_R21(sp)
- LONG_L $22, PT_R22(sp)
- LONG_L $23, PT_R23(sp)
- LONG_L $30, PT_R30(sp)
+ .macro RESTORE_STATIC docfi=0
+ cfi_ld $16, PT_R16, \docfi
+ cfi_ld $17, PT_R17, \docfi
+ cfi_ld $18, PT_R18, \docfi
+ cfi_ld $19, PT_R19, \docfi
+ cfi_ld $20, PT_R20, \docfi
+ cfi_ld $21, PT_R21, \docfi
+ cfi_ld $22, PT_R22, \docfi
+ cfi_ld $23, PT_R23, \docfi
+ cfi_ld $30, PT_R30, \docfi
+ .endm
+
+ .macro RESTORE_SP docfi=0
+ cfi_ld sp, PT_R29, \docfi
.endm
#if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX)
- .macro RESTORE_SOME
+ .macro RESTORE_SOME docfi=0
.set push
.set reorder
.set noat
@@ -306,30 +366,30 @@
and v0, v1
or v0, a0
mtc0 v0, CP0_STATUS
- LONG_L $31, PT_R31(sp)
- LONG_L $28, PT_R28(sp)
- LONG_L $25, PT_R25(sp)
- LONG_L $7, PT_R7(sp)
- LONG_L $6, PT_R6(sp)
- LONG_L $5, PT_R5(sp)
- LONG_L $4, PT_R4(sp)
- LONG_L $3, PT_R3(sp)
- LONG_L $2, PT_R2(sp)
+ cfi_ld $31, PT_R31, \docfi
+ cfi_ld $28, PT_R28, \docfi
+ cfi_ld $25, PT_R25, \docfi
+ cfi_ld $7, PT_R7, \docfi
+ cfi_ld $6, PT_R6, \docfi
+ cfi_ld $5, PT_R5, \docfi
+ cfi_ld $4, PT_R4, \docfi
+ cfi_ld $3, PT_R3, \docfi
+ cfi_ld $2, PT_R2, \docfi
.set pop
.endm
- .macro RESTORE_SP_AND_RET
+ .macro RESTORE_SP_AND_RET docfi=0
.set push
.set noreorder
LONG_L k0, PT_EPC(sp)
- LONG_L sp, PT_R29(sp)
+ RESTORE_SP \docfi
jr k0
rfe
.set pop
.endm
#else
- .macro RESTORE_SOME
+ .macro RESTORE_SOME docfi=0
.set push
.set reorder
.set noat
@@ -346,24 +406,24 @@
mtc0 v0, CP0_STATUS
LONG_L v1, PT_EPC(sp)
MTC0 v1, CP0_EPC
- LONG_L $31, PT_R31(sp)
- LONG_L $28, PT_R28(sp)
- LONG_L $25, PT_R25(sp)
+ cfi_ld $31, PT_R31, \docfi
+ cfi_ld $28, PT_R28, \docfi
+ cfi_ld $25, PT_R25, \docfi
#ifdef CONFIG_64BIT
- LONG_L $8, PT_R8(sp)
- LONG_L $9, PT_R9(sp)
+ cfi_ld $8, PT_R8, \docfi
+ cfi_ld $9, PT_R9, \docfi
#endif
- LONG_L $7, PT_R7(sp)
- LONG_L $6, PT_R6(sp)
- LONG_L $5, PT_R5(sp)
- LONG_L $4, PT_R4(sp)
- LONG_L $3, PT_R3(sp)
- LONG_L $2, PT_R2(sp)
+ cfi_ld $7, PT_R7, \docfi
+ cfi_ld $6, PT_R6, \docfi
+ cfi_ld $5, PT_R5, \docfi
+ cfi_ld $4, PT_R4, \docfi
+ cfi_ld $3, PT_R3, \docfi
+ cfi_ld $2, PT_R2, \docfi
.set pop
.endm
- .macro RESTORE_SP_AND_RET
- LONG_L sp, PT_R29(sp)
+ .macro RESTORE_SP_AND_RET docfi=0
+ RESTORE_SP \docfi
#ifdef CONFIG_CPU_MIPSR6
eretnc
#else
@@ -375,16 +435,12 @@
#endif
- .macro RESTORE_SP
- LONG_L sp, PT_R29(sp)
- .endm
-
- .macro RESTORE_ALL
- RESTORE_TEMP
- RESTORE_STATIC
- RESTORE_AT
- RESTORE_SOME
- RESTORE_SP
+ .macro RESTORE_ALL docfi=0
+ RESTORE_TEMP \docfi
+ RESTORE_STATIC \docfi
+ RESTORE_AT \docfi
+ RESTORE_SOME \docfi
+ RESTORE_SP \docfi
.endm
/*
diff --git a/arch/mips/include/asm/stackprotector.h b/arch/mips/include/asm/stackprotector.h
index eb9b1035e926..68d4be9e1254 100644
--- a/arch/mips/include/asm/stackprotector.h
+++ b/arch/mips/include/asm/stackprotector.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* GCC stack protector support.
*
diff --git a/arch/mips/include/asm/stacktrace.h b/arch/mips/include/asm/stacktrace.h
index 780ee2c2a2ac..8ad25c25b4f8 100644
--- a/arch/mips/include/asm/stacktrace.h
+++ b/arch/mips/include/asm/stacktrace.h
@@ -1,7 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_STACKTRACE_H
#define _ASM_STACKTRACE_H
#include <asm/ptrace.h>
+#include <asm/asm.h>
+#include <linux/stringify.h>
#ifdef CONFIG_KALLSYMS
extern int raw_show_trace;
@@ -20,6 +23,14 @@ static inline unsigned long unwind_stack(struct task_struct *task,
}
#endif
+#define STR_PTR_LA __stringify(PTR_LA)
+#define STR_LONG_S __stringify(LONG_S)
+#define STR_LONG_L __stringify(LONG_L)
+#define STR_LONGSIZE __stringify(LONGSIZE)
+
+#define STORE_ONE_REG(r) \
+ STR_LONG_S " $" __stringify(r)",("STR_LONGSIZE"*"__stringify(r)")(%1)\n\t"
+
static __always_inline void prepare_frametrace(struct pt_regs *regs)
{
#ifndef CONFIG_KALLSYMS
@@ -32,21 +43,47 @@ static __always_inline void prepare_frametrace(struct pt_regs *regs)
__asm__ __volatile__(
".set push\n\t"
".set noat\n\t"
-#ifdef CONFIG_64BIT
- "1: dla $1, 1b\n\t"
- "sd $1, %0\n\t"
- "sd $29, %1\n\t"
- "sd $31, %2\n\t"
-#else
- "1: la $1, 1b\n\t"
- "sw $1, %0\n\t"
- "sw $29, %1\n\t"
- "sw $31, %2\n\t"
-#endif
+ /* Store $1 so we can use it */
+ STR_LONG_S " $1,"STR_LONGSIZE"(%1)\n\t"
+ /* Store the PC */
+ "1: " STR_PTR_LA " $1, 1b\n\t"
+ STR_LONG_S " $1,%0\n\t"
+ STORE_ONE_REG(2)
+ STORE_ONE_REG(3)
+ STORE_ONE_REG(4)
+ STORE_ONE_REG(5)
+ STORE_ONE_REG(6)
+ STORE_ONE_REG(7)
+ STORE_ONE_REG(8)
+ STORE_ONE_REG(9)
+ STORE_ONE_REG(10)
+ STORE_ONE_REG(11)
+ STORE_ONE_REG(12)
+ STORE_ONE_REG(13)
+ STORE_ONE_REG(14)
+ STORE_ONE_REG(15)
+ STORE_ONE_REG(16)
+ STORE_ONE_REG(17)
+ STORE_ONE_REG(18)
+ STORE_ONE_REG(19)
+ STORE_ONE_REG(20)
+ STORE_ONE_REG(21)
+ STORE_ONE_REG(22)
+ STORE_ONE_REG(23)
+ STORE_ONE_REG(24)
+ STORE_ONE_REG(25)
+ STORE_ONE_REG(26)
+ STORE_ONE_REG(27)
+ STORE_ONE_REG(28)
+ STORE_ONE_REG(29)
+ STORE_ONE_REG(30)
+ STORE_ONE_REG(31)
+ /* Restore $1 */
+ STR_LONG_L " $1,"STR_LONGSIZE"(%1)\n\t"
".set pop\n\t"
- : "=m" (regs->cp0_epc),
- "=m" (regs->regs[29]), "=m" (regs->regs[31])
- : : "memory");
+ : "=m" (regs->cp0_epc)
+ : "r" (regs->regs)
+ : "memory");
}
#endif /* _ASM_STACKTRACE_H */
diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h
index b439e512792b..5e8927f99a76 100644
--- a/arch/mips/include/asm/thread_info.h
+++ b/arch/mips/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* thread_info.h: MIPS low-level thread information
*
* Copyright (C) 2002 David Howells (dhowells@redhat.com)
diff --git a/arch/mips/include/asm/tlb.h b/arch/mips/include/asm/tlb.h
index 939734de4359..b6823b9e94da 100644
--- a/arch/mips/include/asm/tlb.h
+++ b/arch/mips/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_TLB_H
#define __ASM_TLB_H
diff --git a/arch/mips/include/asm/tlbex.h b/arch/mips/include/asm/tlbex.h
index 53050e9dd2c9..4ed7ebed3bf1 100644
--- a/arch/mips/include/asm/tlbex.h
+++ b/arch/mips/include/asm/tlbex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_TLBEX_H
#define __ASM_TLBEX_H
diff --git a/arch/mips/include/asm/tlbflush.h b/arch/mips/include/asm/tlbflush.h
index 86b21de12e91..40a361092491 100644
--- a/arch/mips/include/asm/tlbflush.h
+++ b/arch/mips/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_TLBFLUSH_H
#define __ASM_TLBFLUSH_H
diff --git a/arch/mips/include/asm/tlbmisc.h b/arch/mips/include/asm/tlbmisc.h
index 3a452282cba0..c1a540669c23 100644
--- a/arch/mips/include/asm/tlbmisc.h
+++ b/arch/mips/include/asm/tlbmisc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_TLBMISC_H
#define __ASM_TLBMISC_H
diff --git a/arch/mips/include/asm/topology.h b/arch/mips/include/asm/topology.h
index 7afda4150a59..0673d2d0f2e6 100644
--- a/arch/mips/include/asm/topology.h
+++ b/arch/mips/include/asm/topology.h
@@ -13,7 +13,7 @@
#ifdef CONFIG_SMP
#define topology_physical_package_id(cpu) (cpu_data[cpu].package)
-#define topology_core_id(cpu) (cpu_data[cpu].core)
+#define topology_core_id(cpu) (cpu_core(&cpu_data[cpu]))
#define topology_core_cpumask(cpu) (&cpu_core_map[cpu])
#define topology_sibling_cpumask(cpu) (&cpu_sibling_map[cpu])
#endif
diff --git a/arch/mips/include/asm/txx9/boards.h b/arch/mips/include/asm/txx9/boards.h
index cbe9476d963e..d45237befd3e 100644
--- a/arch/mips/include/asm/txx9/boards.h
+++ b/arch/mips/include/asm/txx9/boards.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_TOSHIBA_JMR3927
BOARD_VEC(jmr3927_vec)
#endif
diff --git a/arch/mips/include/asm/vga.h b/arch/mips/include/asm/vga.h
index 975ff51f80c4..0136e0366698 100644
--- a/arch/mips/include/asm/vga.h
+++ b/arch/mips/include/asm/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Access to VGA videoram
*
diff --git a/arch/mips/include/asm/yamon-dt.h b/arch/mips/include/asm/yamon-dt.h
index 485cfe3e45e1..10a073e6877a 100644
--- a/arch/mips/include/asm/yamon-dt.h
+++ b/arch/mips/include/asm/yamon-dt.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/uapi/asm/auxvec.h b/arch/mips/include/uapi/asm/auxvec.h
index 45ba259a3618..612c2c41f60b 100644
--- a/arch/mips/include/uapi/asm/auxvec.h
+++ b/arch/mips/include/uapi/asm/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2015 Imagination Technologies
* Author: Alex Smith <alex.smith@imgtec.com>
diff --git a/arch/mips/include/uapi/asm/bitfield.h b/arch/mips/include/uapi/asm/bitfield.h
index ad9861359cea..b11713d8743e 100644
--- a/arch/mips/include/uapi/asm/bitfield.h
+++ b/arch/mips/include/uapi/asm/bitfield.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/bitsperlong.h b/arch/mips/include/uapi/asm/bitsperlong.h
index 3e4c10a8e787..7268380d8d28 100644
--- a/arch/mips/include/uapi/asm/bitsperlong.h
+++ b/arch/mips/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_MIPS_BITSPERLONG_H
#define __ASM_MIPS_BITSPERLONG_H
diff --git a/arch/mips/include/uapi/asm/break.h b/arch/mips/include/uapi/asm/break.h
index 9c4265cbf151..10380b1bc601 100644
--- a/arch/mips/include/uapi/asm/break.h
+++ b/arch/mips/include/uapi/asm/break.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/byteorder.h b/arch/mips/include/uapi/asm/byteorder.h
index 9579051ff1c7..b4edc85f9c30 100644
--- a/arch/mips/include/uapi/asm/byteorder.h
+++ b/arch/mips/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/cachectl.h b/arch/mips/include/uapi/asm/cachectl.h
index 230390908773..af7639ff423b 100644
--- a/arch/mips/include/uapi/asm/cachectl.h
+++ b/arch/mips/include/uapi/asm/cachectl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/errno.h b/arch/mips/include/uapi/asm/errno.h
index 02d645d7aa9a..2fb714e2d6d8 100644
--- a/arch/mips/include/uapi/asm/errno.h
+++ b/arch/mips/include/uapi/asm/errno.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/fcntl.h b/arch/mips/include/uapi/asm/fcntl.h
index 6ca432f00860..42e13dead543 100644
--- a/arch/mips/include/uapi/asm/fcntl.h
+++ b/arch/mips/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/hwcap.h b/arch/mips/include/uapi/asm/hwcap.h
index c7484a7ca686..600ad8fd6835 100644
--- a/arch/mips/include/uapi/asm/hwcap.h
+++ b/arch/mips/include/uapi/asm/hwcap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_HWCAP_H
#define _UAPI_ASM_HWCAP_H
diff --git a/arch/mips/include/uapi/asm/inst.h b/arch/mips/include/uapi/asm/inst.h
index d61897535926..c05dcf5ab414 100644
--- a/arch/mips/include/uapi/asm/inst.h
+++ b/arch/mips/include/uapi/asm/inst.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Format of an instruction in memory.
*
@@ -981,7 +982,7 @@ struct mm16_r3_format { /* Load from global pointer format */
struct mm16_r5_format { /* Load/store from stack pointer format */
__BITFIELD_FIELD(unsigned int opcode : 6,
__BITFIELD_FIELD(unsigned int rt : 5,
- __BITFIELD_FIELD(signed int simmediate : 5,
+ __BITFIELD_FIELD(unsigned int imm : 5,
__BITFIELD_FIELD(unsigned int : 16, /* Ignored */
;))))
};
diff --git a/arch/mips/include/uapi/asm/ioctl.h b/arch/mips/include/uapi/asm/ioctl.h
index c515a1a4c47c..1050a6ea211c 100644
--- a/arch/mips/include/uapi/asm/ioctl.h
+++ b/arch/mips/include/uapi/asm/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/ioctls.h b/arch/mips/include/uapi/asm/ioctls.h
index 1609cb0907ac..890245a9f0c4 100644
--- a/arch/mips/include/uapi/asm/ioctls.h
+++ b/arch/mips/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/kvm.h b/arch/mips/include/uapi/asm/kvm.h
index 0318c6b442ab..edcf717c4327 100644
--- a/arch/mips/include/uapi/asm/kvm.h
+++ b/arch/mips/include/uapi/asm/kvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/mman.h b/arch/mips/include/uapi/asm/mman.h
index da3216007fe0..20c3df7a8fdd 100644
--- a/arch/mips/include/uapi/asm/mman.h
+++ b/arch/mips/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/msgbuf.h b/arch/mips/include/uapi/asm/msgbuf.h
index df849e87d9ae..eb4d0f9d7364 100644
--- a/arch/mips/include/uapi/asm/msgbuf.h
+++ b/arch/mips/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_MSGBUF_H
#define _ASM_MSGBUF_H
diff --git a/arch/mips/include/uapi/asm/param.h b/arch/mips/include/uapi/asm/param.h
index da3920fce9ad..3f337ed66f6a 100644
--- a/arch/mips/include/uapi/asm/param.h
+++ b/arch/mips/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/poll.h b/arch/mips/include/uapi/asm/poll.h
index 47b952080431..ad289d7b7434 100644
--- a/arch/mips/include/uapi/asm/poll.h
+++ b/arch/mips/include/uapi/asm/poll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_POLL_H
#define __ASM_POLL_H
diff --git a/arch/mips/include/uapi/asm/posix_types.h b/arch/mips/include/uapi/asm/posix_types.h
index fa03ec3fbf89..6aa49c10f88f 100644
--- a/arch/mips/include/uapi/asm/posix_types.h
+++ b/arch/mips/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/ptrace.h b/arch/mips/include/uapi/asm/ptrace.h
index 91a3d197ede3..f3c025445e45 100644
--- a/arch/mips/include/uapi/asm/ptrace.h
+++ b/arch/mips/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/reg.h b/arch/mips/include/uapi/asm/reg.h
index 081e377f4f02..56d15cb8109f 100644
--- a/arch/mips/include/uapi/asm/reg.h
+++ b/arch/mips/include/uapi/asm/reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Various register offset definitions for debuggers, core file
* examiners and whatnot.
diff --git a/arch/mips/include/uapi/asm/resource.h b/arch/mips/include/uapi/asm/resource.h
index b26439d4ab0b..372ff8f4bc06 100644
--- a/arch/mips/include/uapi/asm/resource.h
+++ b/arch/mips/include/uapi/asm/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/sembuf.h b/arch/mips/include/uapi/asm/sembuf.h
index e1085ac880f2..2c0f507ab7d1 100644
--- a/arch/mips/include/uapi/asm/sembuf.h
+++ b/arch/mips/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SEMBUF_H
#define _ASM_SEMBUF_H
diff --git a/arch/mips/include/uapi/asm/setup.h b/arch/mips/include/uapi/asm/setup.h
index 93f237bb1353..7d48c433b0c2 100644
--- a/arch/mips/include/uapi/asm/setup.h
+++ b/arch/mips/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_MIPS_SETUP_H
#define _UAPI_MIPS_SETUP_H
diff --git a/arch/mips/include/uapi/asm/sgidefs.h b/arch/mips/include/uapi/asm/sgidefs.h
index 876442fcfb32..26143e3b7c26 100644
--- a/arch/mips/include/uapi/asm/sgidefs.h
+++ b/arch/mips/include/uapi/asm/sgidefs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/shmbuf.h b/arch/mips/include/uapi/asm/shmbuf.h
index f994438277bf..379e6bca518b 100644
--- a/arch/mips/include/uapi/asm/shmbuf.h
+++ b/arch/mips/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SHMBUF_H
#define _ASM_SHMBUF_H
diff --git a/arch/mips/include/uapi/asm/sigcontext.h b/arch/mips/include/uapi/asm/sigcontext.h
index 5cbd9ae6421f..d0a540e88bb4 100644
--- a/arch/mips/include/uapi/asm/sigcontext.h
+++ b/arch/mips/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/siginfo.h b/arch/mips/include/uapi/asm/siginfo.h
index cf6113bbcb98..f17d8163dec6 100644
--- a/arch/mips/include/uapi/asm/siginfo.h
+++ b/arch/mips/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/signal.h b/arch/mips/include/uapi/asm/signal.h
index addb9f556b71..53104b10aae2 100644
--- a/arch/mips/include/uapi/asm/signal.h
+++ b/arch/mips/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/socket.h b/arch/mips/include/uapi/asm/socket.h
index 6c755bc07975..49c3d4795963 100644
--- a/arch/mips/include/uapi/asm/socket.h
+++ b/arch/mips/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/sockios.h b/arch/mips/include/uapi/asm/sockios.h
index 419fbe661da3..5b40a88593fa 100644
--- a/arch/mips/include/uapi/asm/sockios.h
+++ b/arch/mips/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Socket-level I/O control calls.
*
diff --git a/arch/mips/include/uapi/asm/stat.h b/arch/mips/include/uapi/asm/stat.h
index b47bc541bbc0..95416f366d7f 100644
--- a/arch/mips/include/uapi/asm/stat.h
+++ b/arch/mips/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/statfs.h b/arch/mips/include/uapi/asm/statfs.h
index 3305c834fc16..f4174dcaef5e 100644
--- a/arch/mips/include/uapi/asm/statfs.h
+++ b/arch/mips/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/swab.h b/arch/mips/include/uapi/asm/swab.h
index 23cd9b118c9e..d6795fe4ec59 100644
--- a/arch/mips/include/uapi/asm/swab.h
+++ b/arch/mips/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/sysmips.h b/arch/mips/include/uapi/asm/sysmips.h
index ae637e907856..4c009e10dfd2 100644
--- a/arch/mips/include/uapi/asm/sysmips.h
+++ b/arch/mips/include/uapi/asm/sysmips.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Definitions for the MIPS sysmips(2) call
*
diff --git a/arch/mips/include/uapi/asm/termbits.h b/arch/mips/include/uapi/asm/termbits.h
index 2750203e1e7d..dfeffba729b7 100644
--- a/arch/mips/include/uapi/asm/termbits.h
+++ b/arch/mips/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/termios.h b/arch/mips/include/uapi/asm/termios.h
index baeb2fa87451..d6c576794178 100644
--- a/arch/mips/include/uapi/asm/termios.h
+++ b/arch/mips/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/types.h b/arch/mips/include/uapi/asm/types.h
index f3dd9ff0cc0c..6b21504842a4 100644
--- a/arch/mips/include/uapi/asm/types.h
+++ b/arch/mips/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/include/uapi/asm/ucontext.h b/arch/mips/include/uapi/asm/ucontext.h
index 2320144ce858..2d3bf8eebf1f 100644
--- a/arch/mips/include/uapi/asm/ucontext.h
+++ b/arch/mips/include/uapi/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __MIPS_UAPI_ASM_UCONTEXT_H
#define __MIPS_UAPI_ASM_UCONTEXT_H
diff --git a/arch/mips/include/uapi/asm/unistd.h b/arch/mips/include/uapi/asm/unistd.h
index 78faf4292e90..bb05e9916a5f 100644
--- a/arch/mips/include/uapi/asm/unistd.h
+++ b/arch/mips/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
diff --git a/arch/mips/jazz/Kconfig b/arch/mips/jazz/Kconfig
index fb1e072da30b..06838f80a5d7 100644
--- a/arch/mips/jazz/Kconfig
+++ b/arch/mips/jazz/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ACER_PICA_61
bool "Support for Acer PICA 1 chipset"
depends on MACH_JAZZ
diff --git a/arch/mips/jazz/jazzdma.c b/arch/mips/jazz/jazzdma.c
index 11172fdaeffc..d626a9a391cc 100644
--- a/arch/mips/jazz/jazzdma.c
+++ b/arch/mips/jazz/jazzdma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Mips Jazz DMA controller support
* Copyright (C) 1995, 1996 by Andreas Busse
diff --git a/arch/mips/jazz/reset.c b/arch/mips/jazz/reset.c
index dd889fe86bd1..052b01f5d935 100644
--- a/arch/mips/jazz/reset.c
+++ b/arch/mips/jazz/reset.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Reset a Jazz machine.
*
diff --git a/arch/mips/jz4740/Kconfig b/arch/mips/jz4740/Kconfig
index 36f82017695d..643af2012e14 100644
--- a/arch/mips/jz4740/Kconfig
+++ b/arch/mips/jz4740/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "Machine type"
depends on MACH_INGENIC
diff --git a/arch/mips/jz4740/Makefile b/arch/mips/jz4740/Makefile
index 6b9c1f7c31c9..88d6aa7d000b 100644
--- a/arch/mips/jz4740/Makefile
+++ b/arch/mips/jz4740/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Ingenic JZ4740.
#
diff --git a/arch/mips/jz4740/reset.h b/arch/mips/jz4740/reset.h
index 5202ab4ad9db..4e8746ee9b61 100644
--- a/arch/mips/jz4740/reset.h
+++ b/arch/mips/jz4740/reset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MIPS_JZ4740_RESET_H__
#define __MIPS_JZ4740_RESET_H__
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile
index 46c0581256f1..f10e1e15e1c6 100644
--- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/MIPS kernel.
#
@@ -35,11 +36,15 @@ obj-$(CONFIG_MODULES) += module.o
obj-$(CONFIG_FTRACE_SYSCALLS) += ftrace.o
obj-$(CONFIG_FUNCTION_TRACER) += mcount.o ftrace.o
-obj-$(CONFIG_CPU_R4K_FPU) += r4k_fpu.o r4k_switch.o
-obj-$(CONFIG_CPU_R3000) += r2300_fpu.o r2300_switch.o
-obj-$(CONFIG_CPU_R6000) += r6000_fpu.o r4k_switch.o
-obj-$(CONFIG_CPU_TX39XX) += r2300_fpu.o r2300_switch.o
-obj-$(CONFIG_CPU_CAVIUM_OCTEON) += r4k_fpu.o octeon_switch.o
+sw-y := r4k_switch.o
+sw-$(CONFIG_CPU_R3000) := r2300_switch.o
+sw-$(CONFIG_CPU_TX39XX) := r2300_switch.o
+sw-$(CONFIG_CPU_CAVIUM_OCTEON) := octeon_switch.o
+obj-y += $(sw-y)
+
+obj-$(CONFIG_CPU_R4K_FPU) += r4k_fpu.o
+obj-$(CONFIG_CPU_R3000) += r2300_fpu.o
+obj-$(CONFIG_CPU_TX39XX) += r2300_fpu.o
obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_SMP_UP) += smp-up.o
diff --git a/arch/mips/kernel/asm-offsets.c b/arch/mips/kernel/asm-offsets.c
index a670c0c11875..c1cd41456d42 100644
--- a/arch/mips/kernel/asm-offsets.c
+++ b/arch/mips/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* asm-offsets.c: Calculate pt_regs and task_struct offsets.
*
diff --git a/arch/mips/kernel/binfmt_elfn32.c b/arch/mips/kernel/binfmt_elfn32.c
index 4a2ff3953b99..89b234844534 100644
--- a/arch/mips/kernel/binfmt_elfn32.c
+++ b/arch/mips/kernel/binfmt_elfn32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for n32 Linux/MIPS ELF binaries.
* Author: Ralf Baechle (ralf@linux-mips.org)
diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c
index 3916404e7fd1..a88c59db3d48 100644
--- a/arch/mips/kernel/binfmt_elfo32.c
+++ b/arch/mips/kernel/binfmt_elfo32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for o32 Linux/MIPS ELF binaries.
* Author: Ralf Baechle (ralf@linux-mips.org)
diff --git a/arch/mips/kernel/cmpxchg.c b/arch/mips/kernel/cmpxchg.c
index 7730f1d3434f..0b9535bc2c53 100644
--- a/arch/mips/kernel/cmpxchg.c
+++ b/arch/mips/kernel/cmpxchg.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2017 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/kernel/cps-vec-ns16550.S b/arch/mips/kernel/cps-vec-ns16550.S
index 6d246ad05638..b37af23a5358 100644
--- a/arch/mips/kernel/cps-vec-ns16550.S
+++ b/arch/mips/kernel/cps-vec-ns16550.S
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2015 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/kernel/cps-vec.S b/arch/mips/kernel/cps-vec.S
index b849fe6aad94..c7ed26029cbb 100644
--- a/arch/mips/kernel/cps-vec.S
+++ b/arch/mips/kernel/cps-vec.S
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2013 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -327,8 +327,8 @@ LEAF(mips_cps_get_bootcfg)
* to handle contiguous VP numbering, but no such systems yet
* exist.
*/
- mfc0 t9, $3, 1
- andi t9, t9, 0xff
+ mfc0 t9, CP0_GLOBALNUMBER
+ andi t9, t9, MIPS_GLOBALNUMBER_VP
#elif defined(CONFIG_MIPS_MT_SMP)
has_mt ta2, 1f
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index d08afc7dc507..cf3fd549e16d 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -326,7 +326,7 @@ static int __init fpu_disable(char *s)
__setup("nofpu", fpu_disable);
-int mips_dsp_disabled;
+static int mips_dsp_disabled;
static int __init dsp_disable(char *s)
{
@@ -919,9 +919,12 @@ static void decode_configs(struct cpuinfo_mips *c)
#ifndef CONFIG_MIPS_CPS
if (cpu_has_mips_r2_r6) {
- c->core = get_ebase_cpunum();
+ unsigned int core;
+
+ core = get_ebase_cpunum();
if (cpu_has_mipsmt)
- c->core >>= fls(core_nvpes()) - 1;
+ core >>= fls(core_nvpes()) - 1;
+ cpu_set_core(c, core);
}
#endif
}
@@ -1394,24 +1397,6 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c, unsigned int cpu)
MIPS_CPU_DIVEC | MIPS_CPU_LLSC;
c->tlbsize = 48;
break;
- case PRID_IMP_R6000:
- c->cputype = CPU_R6000;
- __cpu_name[cpu] = "R6000";
- set_isa(c, MIPS_CPU_ISA_II);
- c->fpu_msk31 |= FPU_CSR_CONDX | FPU_CSR_FS;
- c->options = MIPS_CPU_TLB | MIPS_CPU_FPU |
- MIPS_CPU_LLSC;
- c->tlbsize = 32;
- break;
- case PRID_IMP_R6000A:
- c->cputype = CPU_R6000A;
- __cpu_name[cpu] = "R6000A";
- set_isa(c, MIPS_CPU_ISA_II);
- c->fpu_msk31 |= FPU_CSR_CONDX | FPU_CSR_FS;
- c->options = MIPS_CPU_TLB | MIPS_CPU_FPU |
- MIPS_CPU_LLSC;
- c->tlbsize = 32;
- break;
case PRID_IMP_RM7000:
c->cputype = CPU_RM7000;
__cpu_name[cpu] = "RM7000";
@@ -2113,3 +2098,35 @@ void cpu_report(void)
if (cpu_has_msa)
pr_info("MSA revision is: %08x\n", c->msa_id);
}
+
+void cpu_set_cluster(struct cpuinfo_mips *cpuinfo, unsigned int cluster)
+{
+ /* Ensure the core number fits in the field */
+ WARN_ON(cluster > (MIPS_GLOBALNUMBER_CLUSTER >>
+ MIPS_GLOBALNUMBER_CLUSTER_SHF));
+
+ cpuinfo->globalnumber &= ~MIPS_GLOBALNUMBER_CLUSTER;
+ cpuinfo->globalnumber |= cluster << MIPS_GLOBALNUMBER_CLUSTER_SHF;
+}
+
+void cpu_set_core(struct cpuinfo_mips *cpuinfo, unsigned int core)
+{
+ /* Ensure the core number fits in the field */
+ WARN_ON(core > (MIPS_GLOBALNUMBER_CORE >> MIPS_GLOBALNUMBER_CORE_SHF));
+
+ cpuinfo->globalnumber &= ~MIPS_GLOBALNUMBER_CORE;
+ cpuinfo->globalnumber |= core << MIPS_GLOBALNUMBER_CORE_SHF;
+}
+
+void cpu_set_vpe_id(struct cpuinfo_mips *cpuinfo, unsigned int vpe)
+{
+ /* Ensure the VP(E) ID fits in the field */
+ WARN_ON(vpe > (MIPS_GLOBALNUMBER_VP >> MIPS_GLOBALNUMBER_VP_SHF));
+
+ /* Ensure we're not using VP(E)s without support */
+ WARN_ON(vpe && !IS_ENABLED(CONFIG_MIPS_MT_SMP) &&
+ !IS_ENABLED(CONFIG_CPU_MIPSR6));
+
+ cpuinfo->globalnumber &= ~MIPS_GLOBALNUMBER_VP;
+ cpuinfo->globalnumber |= vpe << MIPS_GLOBALNUMBER_VP_SHF;
+}
diff --git a/arch/mips/kernel/crash.c b/arch/mips/kernel/crash.c
index ca25cd393b1c..d455363d51c3 100644
--- a/arch/mips/kernel/crash.c
+++ b/arch/mips/kernel/crash.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/smp.h>
#include <linux/reboot.h>
diff --git a/arch/mips/kernel/crash_dump.c b/arch/mips/kernel/crash_dump.c
index 77ee99a2d0aa..a8657d29c62e 100644
--- a/arch/mips/kernel/crash_dump.c
+++ b/arch/mips/kernel/crash_dump.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/highmem.h>
#include <linux/bootmem.h>
#include <linux/crash_dump.h>
diff --git a/arch/mips/kernel/elf.c b/arch/mips/kernel/elf.c
index 5c429d70e17f..731325a61a78 100644
--- a/arch/mips/kernel/elf.c
+++ b/arch/mips/kernel/elf.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2014 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -87,6 +87,7 @@ int arch_elf_pt_proc(void *_ehdr, void *_phdr, struct file *elf,
bool elf32;
u32 flags;
int ret;
+ loff_t pos;
elf32 = ehdr->e32.e_ident[EI_CLASS] == ELFCLASS32;
flags = elf32 ? ehdr->e32.e_flags : ehdr->e64.e_flags;
@@ -108,21 +109,16 @@ int arch_elf_pt_proc(void *_ehdr, void *_phdr, struct file *elf,
if (phdr32->p_filesz < sizeof(abiflags))
return -EINVAL;
-
- ret = kernel_read(elf, phdr32->p_offset,
- (char *)&abiflags,
- sizeof(abiflags));
+ pos = phdr32->p_offset;
} else {
if (phdr64->p_type != PT_MIPS_ABIFLAGS)
return 0;
if (phdr64->p_filesz < sizeof(abiflags))
return -EINVAL;
-
- ret = kernel_read(elf, phdr64->p_offset,
- (char *)&abiflags,
- sizeof(abiflags));
+ pos = phdr64->p_offset;
}
+ ret = kernel_read(elf, &abiflags, sizeof(abiflags), &pos);
if (ret < 0)
return ret;
if (ret != sizeof(abiflags))
diff --git a/arch/mips/kernel/ftrace.c b/arch/mips/kernel/ftrace.c
index 9d9b8fbae202..99285be0e088 100644
--- a/arch/mips/kernel/ftrace.c
+++ b/arch/mips/kernel/ftrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Code for replacing ftrace calls with jumps.
*
diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S
index ae810da4d499..37b9383eacd3 100644
--- a/arch/mips/kernel/genex.S
+++ b/arch/mips/kernel/genex.S
@@ -150,6 +150,7 @@ LEAF(__r4k_wait)
.align 5
BUILD_ROLLBACK_PROLOGUE handle_int
NESTED(handle_int, PT_SIZE, sp)
+ .cfi_signal_frame
#ifdef CONFIG_TRACE_IRQFLAGS
/*
* Check to see if the interrupted code has just disabled
@@ -181,7 +182,7 @@ NESTED(handle_int, PT_SIZE, sp)
1:
.set pop
#endif
- SAVE_ALL
+ SAVE_ALL docfi=1
CLI
TRACE_IRQS_OFF
@@ -269,8 +270,8 @@ NESTED(except_vec_ejtag_debug, 0, sp)
*/
BUILD_ROLLBACK_PROLOGUE except_vec_vi
NESTED(except_vec_vi, 0, sp)
- SAVE_SOME
- SAVE_AT
+ SAVE_SOME docfi=1
+ SAVE_AT docfi=1
.set push
.set noreorder
PTR_LA v1, except_vec_vi_handler
@@ -396,6 +397,7 @@ NESTED(except_vec_nmi, 0, sp)
__FINIT
NESTED(nmi_handler, PT_SIZE, sp)
+ .cfi_signal_frame
.set push
.set noat
/*
@@ -478,6 +480,7 @@ NESTED(nmi_handler, PT_SIZE, sp)
.macro __BUILD_HANDLER exception handler clear verbose ext
.align 5
NESTED(handle_\exception, PT_SIZE, sp)
+ .cfi_signal_frame
.set noat
SAVE_ALL
FEXPORT(handle_\exception\ext)
@@ -485,8 +488,8 @@ NESTED(nmi_handler, PT_SIZE, sp)
.set at
__BUILD_\verbose \exception
move a0, sp
- PTR_LA ra, ret_from_exception
- j do_\handler
+ jal do_\handler
+ j ret_from_exception
END(handle_\exception)
.endm
diff --git a/arch/mips/kernel/i8253.c b/arch/mips/kernel/i8253.c
index c5bc344fc745..5f209f111e59 100644
--- a/arch/mips/kernel/i8253.c
+++ b/arch/mips/kernel/i8253.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* i8253.c 8253/PIT functions
*
diff --git a/arch/mips/kernel/idle.c b/arch/mips/kernel/idle.c
index 60ab4c44d305..7c246b69c545 100644
--- a/arch/mips/kernel/idle.c
+++ b/arch/mips/kernel/idle.c
@@ -11,6 +11,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#include <linux/cpu.h>
#include <linux/export.h>
#include <linux/init.h>
#include <linux/irqflags.h>
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index b01bdef101a8..b332f6fc1e72 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Conversion between 32-bit and 64-bit native system calls.
*
diff --git a/arch/mips/kernel/mips-cm.c b/arch/mips/kernel/mips-cm.c
index cb0c57f860d4..dd5567b1e305 100644
--- a/arch/mips/kernel/mips-cm.c
+++ b/arch/mips/kernel/mips-cm.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2013 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -12,10 +12,10 @@
#include <linux/percpu.h>
#include <linux/spinlock.h>
-#include <asm/mips-cm.h>
+#include <asm/mips-cps.h>
#include <asm/mipsregs.h>
-void __iomem *mips_cm_base;
+void __iomem *mips_gcr_base;
void __iomem *mips_cm_l2sync_base;
int mips_cm_is64;
@@ -167,8 +167,8 @@ phys_addr_t __mips_cm_l2sync_phys_base(void)
* current location.
*/
base_reg = read_gcr_l2_only_sync_base();
- if (base_reg & CM_GCR_L2_ONLY_SYNC_BASE_SYNCEN_MSK)
- return base_reg & CM_GCR_L2_ONLY_SYNC_BASE_SYNCBASE_MSK;
+ if (base_reg & CM_GCR_L2_ONLY_SYNC_BASE_SYNCEN)
+ return base_reg & CM_GCR_L2_ONLY_SYNC_BASE_SYNCBASE;
/* Default to following the CM */
return mips_cm_phys_base() + MIPS_CM_GCR_SIZE;
@@ -183,19 +183,19 @@ static void mips_cm_probe_l2sync(void)
phys_addr_t addr;
/* L2-only sync was introduced with CM major revision 6 */
- major_rev = (read_gcr_rev() & CM_GCR_REV_MAJOR_MSK) >>
- CM_GCR_REV_MAJOR_SHF;
+ major_rev = (read_gcr_rev() & CM_GCR_REV_MAJOR) >>
+ __ffs(CM_GCR_REV_MAJOR);
if (major_rev < 6)
return;
/* Find a location for the L2 sync region */
addr = mips_cm_l2sync_phys_base();
- BUG_ON((addr & CM_GCR_L2_ONLY_SYNC_BASE_SYNCBASE_MSK) != addr);
+ BUG_ON((addr & CM_GCR_L2_ONLY_SYNC_BASE_SYNCBASE) != addr);
if (!addr)
return;
/* Set the region base address & enable it */
- write_gcr_l2_only_sync_base(addr | CM_GCR_L2_ONLY_SYNC_BASE_SYNCEN_MSK);
+ write_gcr_l2_only_sync_base(addr | CM_GCR_L2_ONLY_SYNC_BASE_SYNCEN);
/* Map the region */
mips_cm_l2sync_base = ioremap_nocache(addr, MIPS_CM_L2SYNC_SIZE);
@@ -211,41 +211,39 @@ int mips_cm_probe(void)
* No need to probe again if we have already been
* here before.
*/
- if (mips_cm_base)
+ if (mips_gcr_base)
return 0;
addr = mips_cm_phys_base();
- BUG_ON((addr & CM_GCR_BASE_GCRBASE_MSK) != addr);
+ BUG_ON((addr & CM_GCR_BASE_GCRBASE) != addr);
if (!addr)
return -ENODEV;
- mips_cm_base = ioremap_nocache(addr, MIPS_CM_GCR_SIZE);
- if (!mips_cm_base)
+ mips_gcr_base = ioremap_nocache(addr, MIPS_CM_GCR_SIZE);
+ if (!mips_gcr_base)
return -ENXIO;
/* sanity check that we're looking at a CM */
base_reg = read_gcr_base();
- if ((base_reg & CM_GCR_BASE_GCRBASE_MSK) != addr) {
+ if ((base_reg & CM_GCR_BASE_GCRBASE) != addr) {
pr_err("GCRs appear to have been moved (expected them at 0x%08lx)!\n",
(unsigned long)addr);
- mips_cm_base = NULL;
+ mips_gcr_base = NULL;
return -ENODEV;
}
/* set default target to memory */
- base_reg &= ~CM_GCR_BASE_CMDEFTGT_MSK;
- base_reg |= CM_GCR_BASE_CMDEFTGT_MEM;
- write_gcr_base(base_reg);
+ change_gcr_base(CM_GCR_BASE_CMDEFTGT, CM_GCR_BASE_CMDEFTGT_MEM);
/* disable CM regions */
- write_gcr_reg0_base(CM_GCR_REGn_BASE_BASEADDR_MSK);
- write_gcr_reg0_mask(CM_GCR_REGn_MASK_ADDRMASK_MSK);
- write_gcr_reg1_base(CM_GCR_REGn_BASE_BASEADDR_MSK);
- write_gcr_reg1_mask(CM_GCR_REGn_MASK_ADDRMASK_MSK);
- write_gcr_reg2_base(CM_GCR_REGn_BASE_BASEADDR_MSK);
- write_gcr_reg2_mask(CM_GCR_REGn_MASK_ADDRMASK_MSK);
- write_gcr_reg3_base(CM_GCR_REGn_BASE_BASEADDR_MSK);
- write_gcr_reg3_mask(CM_GCR_REGn_MASK_ADDRMASK_MSK);
+ write_gcr_reg0_base(CM_GCR_REGn_BASE_BASEADDR);
+ write_gcr_reg0_mask(CM_GCR_REGn_MASK_ADDRMASK);
+ write_gcr_reg1_base(CM_GCR_REGn_BASE_BASEADDR);
+ write_gcr_reg1_mask(CM_GCR_REGn_MASK_ADDRMASK);
+ write_gcr_reg2_base(CM_GCR_REGn_BASE_BASEADDR);
+ write_gcr_reg2_mask(CM_GCR_REGn_MASK_ADDRMASK);
+ write_gcr_reg3_base(CM_GCR_REGn_BASE_BASEADDR);
+ write_gcr_reg3_mask(CM_GCR_REGn_MASK_ADDRMASK);
/* probe for an L2-only sync region */
mips_cm_probe_l2sync();
@@ -259,16 +257,27 @@ int mips_cm_probe(void)
return 0;
}
-void mips_cm_lock_other(unsigned int core, unsigned int vp)
+void mips_cm_lock_other(unsigned int cluster, unsigned int core,
+ unsigned int vp, unsigned int block)
{
- unsigned curr_core;
+ unsigned int curr_core, cm_rev;
u32 val;
+ cm_rev = mips_cm_revision();
preempt_disable();
- if (mips_cm_revision() >= CM_REV_CM3) {
- val = core << CM3_GCR_Cx_OTHER_CORE_SHF;
- val |= vp << CM3_GCR_Cx_OTHER_VP_SHF;
+ if (cm_rev >= CM_REV_CM3) {
+ val = core << __ffs(CM3_GCR_Cx_OTHER_CORE);
+ val |= vp << __ffs(CM3_GCR_Cx_OTHER_VP);
+
+ if (cm_rev >= CM_REV_CM3_5) {
+ val |= CM_GCR_Cx_OTHER_CLUSTER_EN;
+ val |= cluster << __ffs(CM_GCR_Cx_OTHER_CLUSTER);
+ val |= block << __ffs(CM_GCR_Cx_OTHER_BLOCK);
+ } else {
+ WARN_ON(cluster != 0);
+ WARN_ON(block != CM_GCR_Cx_OTHER_BLOCK_LOCAL);
+ }
/*
* We need to disable interrupts in SMP systems in order to
@@ -282,18 +291,20 @@ void mips_cm_lock_other(unsigned int core, unsigned int vp)
spin_lock_irqsave(this_cpu_ptr(&cm_core_lock),
*this_cpu_ptr(&cm_core_lock_flags));
} else {
+ WARN_ON(cluster != 0);
WARN_ON(vp != 0);
+ WARN_ON(block != CM_GCR_Cx_OTHER_BLOCK_LOCAL);
/*
* We only have a GCR_CL_OTHER per core in systems with
* CM 2.5 & older, so have to ensure other VP(E)s don't
* race with us.
*/
- curr_core = current_cpu_data.core;
+ curr_core = cpu_core(&current_cpu_data);
spin_lock_irqsave(&per_cpu(cm_core_lock, curr_core),
per_cpu(cm_core_lock_flags, curr_core));
- val = core << CM_GCR_Cx_OTHER_CORENUM_SHF;
+ val = core << __ffs(CM_GCR_Cx_OTHER_CORENUM);
}
write_gcr_cl_other(val);
@@ -310,7 +321,7 @@ void mips_cm_unlock_other(void)
unsigned int curr_core;
if (mips_cm_revision() < CM_REV_CM3) {
- curr_core = current_cpu_data.core;
+ curr_core = cpu_core(&current_cpu_data);
spin_unlock_irqrestore(&per_cpu(cm_core_lock, curr_core),
per_cpu(cm_core_lock_flags, curr_core));
} else {
@@ -332,13 +343,13 @@ void mips_cm_error_report(void)
return;
revision = mips_cm_revision();
+ cm_error = read_gcr_error_cause();
+ cm_addr = read_gcr_error_addr();
+ cm_other = read_gcr_error_mult();
if (revision < CM_REV_CM3) { /* CM2 */
- cm_error = read_gcr_error_cause();
- cm_addr = read_gcr_error_addr();
- cm_other = read_gcr_error_mult();
- cause = cm_error >> CM_GCR_ERROR_CAUSE_ERRTYPE_SHF;
- ocause = cm_other >> CM_GCR_ERROR_MULT_ERR2ND_SHF;
+ cause = cm_error >> __ffs(CM_GCR_ERROR_CAUSE_ERRTYPE);
+ ocause = cm_other >> __ffs(CM_GCR_ERROR_MULT_ERR2ND);
if (!cause)
return;
@@ -380,11 +391,8 @@ void mips_cm_error_report(void)
ulong core_id_bits, vp_id_bits, cmd_bits, cmd_group_bits;
ulong cm3_cca_bits, mcp_bits, cm3_tr_bits, sched_bit;
- cm_error = read64_gcr_error_cause();
- cm_addr = read64_gcr_error_addr();
- cm_other = read64_gcr_error_mult();
- cause = cm_error >> CM3_GCR_ERROR_CAUSE_ERRTYPE_SHF;
- ocause = cm_other >> CM_GCR_ERROR_MULT_ERR2ND_SHF;
+ cause = cm_error >> __ffs64(CM3_GCR_ERROR_CAUSE_ERRTYPE);
+ ocause = cm_other >> __ffs(CM_GCR_ERROR_MULT_ERR2ND);
if (!cause)
return;
diff --git a/arch/mips/kernel/mips-cpc.c b/arch/mips/kernel/mips-cpc.c
index a4964c334cab..19c88d770054 100644
--- a/arch/mips/kernel/mips-cpc.c
+++ b/arch/mips/kernel/mips-cpc.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2013 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -12,8 +12,7 @@
#include <linux/percpu.h>
#include <linux/spinlock.h>
-#include <asm/mips-cm.h>
-#include <asm/mips-cpc.h>
+#include <asm/mips-cps.h>
void __iomem *mips_cpc_base;
@@ -40,13 +39,13 @@ static phys_addr_t mips_cpc_phys_base(void)
if (!mips_cm_present())
return 0;
- if (!(read_gcr_cpc_status() & CM_GCR_CPC_STATUS_EX_MSK))
+ if (!(read_gcr_cpc_status() & CM_GCR_CPC_STATUS_EX))
return 0;
/* If the CPC is already enabled, leave it so */
cpc_base = read_gcr_cpc_base();
- if (cpc_base & CM_GCR_CPC_BASE_CPCEN_MSK)
- return cpc_base & CM_GCR_CPC_BASE_CPCBASE_MSK;
+ if (cpc_base & CM_GCR_CPC_BASE_CPCEN)
+ return cpc_base & CM_GCR_CPC_BASE_CPCBASE;
/* Otherwise, use the default address */
cpc_base = mips_cpc_default_phys_base();
@@ -54,7 +53,7 @@ static phys_addr_t mips_cpc_phys_base(void)
return cpc_base;
/* Enable the CPC, mapped at the default address */
- write_gcr_cpc_base(cpc_base | CM_GCR_CPC_BASE_CPCEN_MSK);
+ write_gcr_cpc_base(cpc_base | CM_GCR_CPC_BASE_CPCEN);
return cpc_base;
}
@@ -86,10 +85,10 @@ void mips_cpc_lock_other(unsigned int core)
return;
preempt_disable();
- curr_core = current_cpu_data.core;
+ curr_core = cpu_core(&current_cpu_data);
spin_lock_irqsave(&per_cpu(cpc_core_lock, curr_core),
per_cpu(cpc_core_lock_flags, curr_core));
- write_cpc_cl_other(core << CPC_Cx_OTHER_CORENUM_SHF);
+ write_cpc_cl_other(core << __ffs(CPC_Cx_OTHER_CORENUM));
/*
* Ensure the core-other region reflects the appropriate core &
@@ -106,7 +105,7 @@ void mips_cpc_unlock_other(void)
/* Systems with CM >= 3 lock the CPC via mips_cm_lock_other */
return;
- curr_core = current_cpu_data.core;
+ curr_core = cpu_core(&current_cpu_data);
spin_unlock_irqrestore(&per_cpu(cpc_core_lock, curr_core),
per_cpu(cpc_core_lock_flags, curr_core));
preempt_enable();
diff --git a/arch/mips/kernel/mips-mt-fpaff.c b/arch/mips/kernel/mips-mt-fpaff.c
index 8cab633e0e5a..a7c0f97e4b0d 100644
--- a/arch/mips/kernel/mips-mt-fpaff.c
+++ b/arch/mips/kernel/mips-mt-fpaff.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* General MIPS MT support routines, usable in AP/SP and SMVP.
* Copyright (C) 2005 Mips Technologies, Inc
diff --git a/arch/mips/kernel/mips-mt.c b/arch/mips/kernel/mips-mt.c
index 88b1ef5f868a..efaa2527657d 100644
--- a/arch/mips/kernel/mips-mt.c
+++ b/arch/mips/kernel/mips-mt.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* General MIPS MT support routines, usable in AP/SP and SMVP.
* Copyright (C) 2005 Mips Technologies, Inc
diff --git a/arch/mips/kernel/mips-r2-to-r6-emul.c b/arch/mips/kernel/mips-r2-to-r6-emul.c
index ae64c8f56a8c..eb18b186e858 100644
--- a/arch/mips/kernel/mips-r2-to-r6-emul.c
+++ b/arch/mips/kernel/mips-r2-to-r6-emul.c
@@ -46,9 +46,11 @@
#define LL "ll "
#define SC "sc "
-DEFINE_PER_CPU(struct mips_r2_emulator_stats, mipsr2emustats);
-DEFINE_PER_CPU(struct mips_r2_emulator_stats, mipsr2bdemustats);
-DEFINE_PER_CPU(struct mips_r2br_emulator_stats, mipsr2bremustats);
+#ifdef CONFIG_DEBUG_FS
+static DEFINE_PER_CPU(struct mips_r2_emulator_stats, mipsr2emustats);
+static DEFINE_PER_CPU(struct mips_r2_emulator_stats, mipsr2bdemustats);
+static DEFINE_PER_CPU(struct mips_r2br_emulator_stats, mipsr2bremustats);
+#endif
extern const unsigned int fpucondbit[8];
@@ -600,7 +602,7 @@ static int ddivu_func(struct pt_regs *regs, u32 ir)
}
/* R6 removed instructions for the SPECIAL opcode */
-static struct r2_decoder_table spec_op_table[] = {
+static const struct r2_decoder_table spec_op_table[] = {
{ 0xfc1ff83f, 0x00000008, jr_func },
{ 0xfc00ffff, 0x00000018, mult_func },
{ 0xfc00ffff, 0x00000019, multu_func },
@@ -867,7 +869,7 @@ static int dclo_func(struct pt_regs *regs, u32 ir)
}
/* R6 removed instructions for the SPECIAL2 opcode */
-static struct r2_decoder_table spec2_op_table[] = {
+static const struct r2_decoder_table spec2_op_table[] = {
{ 0xfc00ffff, 0x70000000, madd_func },
{ 0xfc00ffff, 0x70000001, maddu_func },
{ 0xfc0007ff, 0x70000002, mul_func },
@@ -881,9 +883,9 @@ static struct r2_decoder_table spec2_op_table[] = {
};
static inline int mipsr2_find_op_func(struct pt_regs *regs, u32 inst,
- struct r2_decoder_table *table)
+ const struct r2_decoder_table *table)
{
- struct r2_decoder_table *p;
+ const struct r2_decoder_table *p;
int err;
for (p = table; p->func; p++) {
diff --git a/arch/mips/kernel/octeon_switch.S b/arch/mips/kernel/octeon_switch.S
index 3375745b9198..e42113fe2762 100644
--- a/arch/mips/kernel/octeon_switch.S
+++ b/arch/mips/kernel/octeon_switch.S
@@ -10,12 +10,13 @@
* Copyright (C) 2000 MIPS Technologies, Inc.
* written by Carsten Langgaard, carstenl@mips.com
*/
+#include <asm/asm.h>
+#include <asm/export.h>
+#include <asm/asm-offsets.h>
+#include <asm/mipsregs.h>
+#include <asm/regdef.h>
+#include <asm/stackframe.h>
-#define USE_ALTERNATE_RESUME_IMPL 1
- .set push
- .set arch=mips64r2
-#include "r4k_switch.S"
- .set pop
/*
* task_struct *resume(task_struct *prev, task_struct *next,
* struct thread_info *next_ti)
diff --git a/arch/mips/kernel/perf_event_mipsxx.c b/arch/mips/kernel/perf_event_mipsxx.c
index 9e6c74bf66c4..6668f67a61c3 100644
--- a/arch/mips/kernel/perf_event_mipsxx.c
+++ b/arch/mips/kernel/perf_event_mipsxx.c
@@ -618,8 +618,7 @@ static int mipspmu_event_init(struct perf_event *event)
return -ENOENT;
}
- if ((unsigned int)event->cpu >= nr_cpumask_bits ||
- (event->cpu >= 0 && !cpu_online(event->cpu)))
+ if (event->cpu >= 0 && !cpu_online(event->cpu))
return -ENODEV;
if (!atomic_inc_not_zero(&active_events)) {
diff --git a/arch/mips/kernel/pm-cps.c b/arch/mips/kernel/pm-cps.c
index d99416094ba9..9dd624c2fe56 100644
--- a/arch/mips/kernel/pm-cps.c
+++ b/arch/mips/kernel/pm-cps.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2014 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -17,8 +17,7 @@
#include <asm/cacheflush.h>
#include <asm/cacheops.h>
#include <asm/idle.h>
-#include <asm/mips-cm.h>
-#include <asm/mips-cpc.h>
+#include <asm/mips-cps.h>
#include <asm/mipsmtregs.h>
#include <asm/pm.h>
#include <asm/pm-cps.h>
@@ -49,7 +48,7 @@ static DEFINE_PER_CPU_READ_MOSTLY(cps_nc_entry_fn[CPS_PM_STATE_COUNT],
nc_asm_enter);
/* Bitmap indicating which states are supported by the system */
-DECLARE_BITMAP(state_support, CPS_PM_STATE_COUNT);
+static DECLARE_BITMAP(state_support, CPS_PM_STATE_COUNT);
/*
* Indicates the number of coupled VPEs ready to operate in a non-coherent
@@ -114,7 +113,7 @@ static void coupled_barrier(atomic_t *a, unsigned online)
int cps_pm_enter_state(enum cps_pm_state state)
{
unsigned cpu = smp_processor_id();
- unsigned core = current_cpu_data.core;
+ unsigned core = cpu_core(&current_cpu_data);
unsigned online, left;
cpumask_t *coupled_mask = this_cpu_ptr(&online_coupled);
u32 *core_ready_count, *nc_core_ready_count;
@@ -486,7 +485,7 @@ static void *cps_gen_entry_code(unsigned cpu, enum cps_pm_state state)
* defined by the interAptiv & proAptiv SUMs as ensuring that the
* operation resulting from the preceding store is complete.
*/
- uasm_i_addiu(&p, t0, zero, 1 << cpu_data[cpu].core);
+ uasm_i_addiu(&p, t0, zero, 1 << cpu_core(&cpu_data[cpu]));
uasm_i_sw(&p, t0, 0, r_pcohctl);
uasm_i_lw(&p, t0, 0, r_pcohctl);
@@ -569,8 +568,8 @@ static void *cps_gen_entry_code(unsigned cpu, enum cps_pm_state state)
* rest will just be performing a rather unusual nop.
*/
uasm_i_addiu(&p, t0, zero, mips_cm_revision() < CM_REV_CM3
- ? CM_GCR_Cx_COHERENCE_COHDOMAINEN_MSK
- : CM3_GCR_Cx_COHERENCE_COHEN_MSK);
+ ? CM_GCR_Cx_COHERENCE_COHDOMAINEN
+ : CM3_GCR_Cx_COHERENCE_COHEN);
uasm_i_sw(&p, t0, 0, r_pcohctl);
uasm_i_lw(&p, t0, 0, r_pcohctl);
@@ -640,7 +639,7 @@ out_err:
static int cps_pm_online_cpu(unsigned int cpu)
{
enum cps_pm_state state;
- unsigned core = cpu_data[cpu].core;
+ unsigned core = cpu_core(&cpu_data[cpu]);
void *entry_fn, *core_rc;
for (state = CPS_PM_NC_WAIT; state < CPS_PM_STATE_COUNT; state++) {
@@ -692,7 +691,7 @@ static int __init cps_pm_init(void)
/* Detect whether a CPC is present */
if (mips_cpc_present()) {
/* Detect whether clock gating is implemented */
- if (read_cpc_cl_stat_conf() & CPC_Cx_STAT_CONF_CLKGAT_IMPL_MSK)
+ if (read_cpc_cl_stat_conf() & CPC_Cx_STAT_CONF_CLKGAT_IMPL)
set_bit(CPS_PM_CLOCK_GATED, state_support);
else
pr_warn("pm-cps: CPC does not support clock gating\n");
diff --git a/arch/mips/kernel/proc.c b/arch/mips/kernel/proc.c
index 70604c753aa4..b2de408a259e 100644
--- a/arch/mips/kernel/proc.c
+++ b/arch/mips/kernel/proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1995, 1996, 2001 Ralf Baechle
* Copyright (C) 2001, 2004 MIPS Technologies, Inc.
@@ -134,13 +135,13 @@ static int show_cpuinfo(struct seq_file *m, void *v)
seq_printf(m, "kscratch registers\t: %d\n",
hweight8(cpu_data[n].kscratch_mask));
seq_printf(m, "package\t\t\t: %d\n", cpu_data[n].package);
- seq_printf(m, "core\t\t\t: %d\n", cpu_data[n].core);
+ seq_printf(m, "core\t\t\t: %d\n", cpu_core(&cpu_data[n]));
#if defined(CONFIG_MIPS_MT_SMP) || defined(CONFIG_CPU_MIPSR6)
if (cpu_has_mipsmt)
- seq_printf(m, "VPE\t\t\t: %d\n", cpu_data[n].vpe_id);
+ seq_printf(m, "VPE\t\t\t: %d\n", cpu_vpe_id(&cpu_data[n]));
else if (cpu_has_vp)
- seq_printf(m, "VP\t\t\t: %d\n", cpu_data[n].vpe_id);
+ seq_printf(m, "VP\t\t\t: %d\n", cpu_vpe_id(&cpu_data[n]));
#endif
sprintf(fmt, "VCE%%c exceptions\t\t: %s\n",
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 5351e1f3950d..c5ff6bfe2825 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -208,13 +208,13 @@ static inline int is_ra_save_ins(union mips_instruction *ip, int *poff)
*
* microMIPS is way more fun...
*/
- if (mm_insn_16bit(ip->halfword[1])) {
+ if (mm_insn_16bit(ip->word >> 16)) {
switch (ip->mm16_r5_format.opcode) {
case mm_swsp16_op:
if (ip->mm16_r5_format.rt != 31)
return 0;
- *poff = ip->mm16_r5_format.simmediate;
+ *poff = ip->mm16_r5_format.imm;
*poff = (*poff << 2) / sizeof(ulong);
return 1;
@@ -287,7 +287,7 @@ static inline int is_jump_ins(union mips_instruction *ip)
*
* microMIPS is kind of more fun...
*/
- if (mm_insn_16bit(ip->halfword[1])) {
+ if (mm_insn_16bit(ip->word >> 16)) {
if ((ip->mm16_r5_format.opcode == mm_pool16c_op &&
(ip->mm16_r5_format.rt & mm_jr16_op) == mm_jr16_op))
return 1;
@@ -313,9 +313,11 @@ static inline int is_jump_ins(union mips_instruction *ip)
#endif
}
-static inline int is_sp_move_ins(union mips_instruction *ip)
+static inline int is_sp_move_ins(union mips_instruction *ip, int *frame_size)
{
#ifdef CONFIG_CPU_MICROMIPS
+ unsigned short tmp;
+
/*
* addiusp -imm
* addius5 sp,-imm
@@ -324,21 +326,40 @@ static inline int is_sp_move_ins(union mips_instruction *ip)
*
* microMIPS is not more fun...
*/
- if (mm_insn_16bit(ip->halfword[1])) {
- return (ip->mm16_r3_format.opcode == mm_pool16d_op &&
- ip->mm16_r3_format.simmediate && mm_addiusp_func) ||
- (ip->mm16_r5_format.opcode == mm_pool16d_op &&
- ip->mm16_r5_format.rt == 29);
+ if (mm_insn_16bit(ip->word >> 16)) {
+ if (ip->mm16_r3_format.opcode == mm_pool16d_op &&
+ ip->mm16_r3_format.simmediate & mm_addiusp_func) {
+ tmp = ip->mm_b0_format.simmediate >> 1;
+ tmp = ((tmp & 0x1ff) ^ 0x100) - 0x100;
+ if ((tmp + 2) < 4) /* 0x0,0x1,0x1fe,0x1ff are special */
+ tmp ^= 0x100;
+ *frame_size = -(signed short)(tmp << 2);
+ return 1;
+ }
+ if (ip->mm16_r5_format.opcode == mm_pool16d_op &&
+ ip->mm16_r5_format.rt == 29) {
+ tmp = ip->mm16_r5_format.imm >> 1;
+ *frame_size = -(signed short)(tmp & 0xf);
+ return 1;
+ }
+ return 0;
}
- return ip->mm_i_format.opcode == mm_addiu32_op &&
- ip->mm_i_format.rt == 29 && ip->mm_i_format.rs == 29;
+ if (ip->mm_i_format.opcode == mm_addiu32_op &&
+ ip->mm_i_format.rt == 29 && ip->mm_i_format.rs == 29) {
+ *frame_size = -ip->i_format.simmediate;
+ return 1;
+ }
#else
/* addiu/daddiu sp,sp,-imm */
if (ip->i_format.rs != 29 || ip->i_format.rt != 29)
return 0;
- if (ip->i_format.opcode == addiu_op || ip->i_format.opcode == daddiu_op)
+
+ if (ip->i_format.opcode == addiu_op ||
+ ip->i_format.opcode == daddiu_op) {
+ *frame_size = -ip->i_format.simmediate;
return 1;
+ }
#endif
return 0;
}
@@ -348,7 +369,9 @@ static int get_frame_info(struct mips_frame_info *info)
bool is_mmips = IS_ENABLED(CONFIG_CPU_MICROMIPS);
union mips_instruction insn, *ip, *ip_end;
const unsigned int max_insns = 128;
+ unsigned int last_insn_size = 0;
unsigned int i;
+ bool saw_jump = false;
info->pc_offset = -1;
info->frame_size = 0;
@@ -359,47 +382,44 @@ static int get_frame_info(struct mips_frame_info *info)
ip_end = (void *)ip + info->func_size;
- for (i = 0; i < max_insns && ip < ip_end; i++, ip++) {
+ for (i = 0; i < max_insns && ip < ip_end; i++) {
+ ip = (void *)ip + last_insn_size;
if (is_mmips && mm_insn_16bit(ip->halfword[0])) {
- insn.halfword[0] = 0;
- insn.halfword[1] = ip->halfword[0];
+ insn.word = ip->halfword[0] << 16;
+ last_insn_size = 2;
} else if (is_mmips) {
- insn.halfword[0] = ip->halfword[1];
- insn.halfword[1] = ip->halfword[0];
+ insn.word = ip->halfword[0] << 16 | ip->halfword[1];
+ last_insn_size = 4;
} else {
insn.word = ip->word;
+ last_insn_size = 4;
}
- if (is_jump_ins(&insn))
- break;
-
if (!info->frame_size) {
- if (is_sp_move_ins(&insn))
- {
-#ifdef CONFIG_CPU_MICROMIPS
- if (mm_insn_16bit(ip->halfword[0]))
- {
- unsigned short tmp;
-
- if (ip->halfword[0] & mm_addiusp_func)
- {
- tmp = (((ip->halfword[0] >> 1) & 0x1ff) << 2);
- info->frame_size = -(signed short)(tmp | ((tmp & 0x100) ? 0xfe00 : 0));
- } else {
- tmp = (ip->halfword[0] >> 1);
- info->frame_size = -(signed short)(tmp & 0xf);
- }
- ip = (void *) &ip->halfword[1];
- ip--;
- } else
-#endif
- info->frame_size = - ip->i_format.simmediate;
- }
+ is_sp_move_ins(&insn, &info->frame_size);
+ continue;
+ } else if (!saw_jump && is_jump_ins(ip)) {
+ /*
+ * If we see a jump instruction, we are finished
+ * with the frame save.
+ *
+ * Some functions can have a shortcut return at
+ * the beginning of the function, so don't start
+ * looking for jump instruction until we see the
+ * frame setup.
+ *
+ * The RA save instruction can get put into the
+ * delay slot of the jump instruction, so look
+ * at the next instruction, too.
+ */
+ saw_jump = true;
continue;
}
if (info->pc_offset == -1 &&
is_ra_save_ins(&insn, &info->pc_offset))
break;
+ if (saw_jump)
+ break;
}
if (info->frame_size && info->pc_offset >= 0) /* nested */
return 0;
diff --git a/arch/mips/kernel/r2300_fpu.S b/arch/mips/kernel/r2300_fpu.S
index 918f2f6d3861..3062ba66c563 100644
--- a/arch/mips/kernel/r2300_fpu.S
+++ b/arch/mips/kernel/r2300_fpu.S
@@ -12,7 +12,9 @@
* Copyright (c) 1998 Harald Koerfgen
*/
#include <asm/asm.h>
+#include <asm/asmmacro.h>
#include <asm/errno.h>
+#include <asm/export.h>
#include <asm/fpregdef.h>
#include <asm/mipsregs.h>
#include <asm/asm-offsets.h>
@@ -31,9 +33,85 @@
PTR 9b+4,bad_stack; \
.previous
- .set noreorder
.set mips1
+/*
+ * Save a thread's fp context.
+ */
+LEAF(_save_fp)
+EXPORT_SYMBOL(_save_fp)
+ fpu_save_single a0, t1 # clobbers t1
+ jr ra
+ END(_save_fp)
+
+/*
+ * Restore a thread's fp context.
+ */
+LEAF(_restore_fp)
+ fpu_restore_single a0, t1 # clobbers t1
+ jr ra
+ END(_restore_fp)
+
+/*
+ * Load the FPU with signalling NANS. This bit pattern we're using has
+ * the property that no matter whether considered as single or as double
+ * precision represents signaling NANS.
+ *
+ * The value to initialize fcr31 to comes in $a0.
+ */
+
+ .set push
+ SET_HARDFLOAT
+
+LEAF(_init_fpu)
+ mfc0 t0, CP0_STATUS
+ li t1, ST0_CU1
+ or t0, t1
+ mtc0 t0, CP0_STATUS
+
+ ctc1 a0, fcr31
+
+ li t0, -1
+
+ mtc1 t0, $f0
+ mtc1 t0, $f1
+ mtc1 t0, $f2
+ mtc1 t0, $f3
+ mtc1 t0, $f4
+ mtc1 t0, $f5
+ mtc1 t0, $f6
+ mtc1 t0, $f7
+ mtc1 t0, $f8
+ mtc1 t0, $f9
+ mtc1 t0, $f10
+ mtc1 t0, $f11
+ mtc1 t0, $f12
+ mtc1 t0, $f13
+ mtc1 t0, $f14
+ mtc1 t0, $f15
+ mtc1 t0, $f16
+ mtc1 t0, $f17
+ mtc1 t0, $f18
+ mtc1 t0, $f19
+ mtc1 t0, $f20
+ mtc1 t0, $f21
+ mtc1 t0, $f22
+ mtc1 t0, $f23
+ mtc1 t0, $f24
+ mtc1 t0, $f25
+ mtc1 t0, $f26
+ mtc1 t0, $f27
+ mtc1 t0, $f28
+ mtc1 t0, $f29
+ mtc1 t0, $f30
+ mtc1 t0, $f31
+ jr ra
+ END(_init_fpu)
+
+ .set pop
+
+ .set noreorder
+
/**
* _save_fp_context() - save FP context from the FPU
* @a0 - pointer to fpregs field of sigcontext
diff --git a/arch/mips/kernel/r2300_switch.S b/arch/mips/kernel/r2300_switch.S
index 1049eeafd97d..665897139f30 100644
--- a/arch/mips/kernel/r2300_switch.S
+++ b/arch/mips/kernel/r2300_switch.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* r2300_switch.S: R2300 specific task switching code.
*
@@ -26,12 +27,6 @@
.align 5
/*
- * Offset to the current process status flags, the first 32 bytes of the
- * stack are not used.
- */
-#define ST_OFF (_THREAD_SIZE - 32 - PT_SIZE + PT_STATUS)
-
-/*
* task_struct *resume(task_struct *prev, task_struct *next,
* struct thread_info *next_ti)
*/
@@ -68,78 +63,3 @@ LEAF(resume)
move v0, a0
jr ra
END(resume)
-
-/*
- * Save a thread's fp context.
- */
-LEAF(_save_fp)
-EXPORT_SYMBOL(_save_fp)
- fpu_save_single a0, t1 # clobbers t1
- jr ra
- END(_save_fp)
-
-/*
- * Restore a thread's fp context.
- */
-LEAF(_restore_fp)
- fpu_restore_single a0, t1 # clobbers t1
- jr ra
- END(_restore_fp)
-
-/*
- * Load the FPU with signalling NANS. This bit pattern we're using has
- * the property that no matter whether considered as single or as double
- * precision represents signaling NANS.
- *
- * The value to initialize fcr31 to comes in $a0.
- */
-
- .set push
- SET_HARDFLOAT
-
-LEAF(_init_fpu)
- mfc0 t0, CP0_STATUS
- li t1, ST0_CU1
- or t0, t1
- mtc0 t0, CP0_STATUS
-
- ctc1 a0, fcr31
-
- li t0, -1
-
- mtc1 t0, $f0
- mtc1 t0, $f1
- mtc1 t0, $f2
- mtc1 t0, $f3
- mtc1 t0, $f4
- mtc1 t0, $f5
- mtc1 t0, $f6
- mtc1 t0, $f7
- mtc1 t0, $f8
- mtc1 t0, $f9
- mtc1 t0, $f10
- mtc1 t0, $f11
- mtc1 t0, $f12
- mtc1 t0, $f13
- mtc1 t0, $f14
- mtc1 t0, $f15
- mtc1 t0, $f16
- mtc1 t0, $f17
- mtc1 t0, $f18
- mtc1 t0, $f19
- mtc1 t0, $f20
- mtc1 t0, $f21
- mtc1 t0, $f22
- mtc1 t0, $f23
- mtc1 t0, $f24
- mtc1 t0, $f25
- mtc1 t0, $f26
- mtc1 t0, $f27
- mtc1 t0, $f28
- mtc1 t0, $f29
- mtc1 t0, $f30
- mtc1 t0, $f31
- jr ra
- END(_init_fpu)
-
- .set pop
diff --git a/arch/mips/kernel/r4k_fpu.S b/arch/mips/kernel/r4k_fpu.S
index 56d86b09c917..0a83b1708b3c 100644
--- a/arch/mips/kernel/r4k_fpu.S
+++ b/arch/mips/kernel/r4k_fpu.S
@@ -15,6 +15,7 @@
#include <asm/asm.h>
#include <asm/asmmacro.h>
#include <asm/errno.h>
+#include <asm/export.h>
#include <asm/fpregdef.h>
#include <asm/mipsregs.h>
#include <asm/asm-offsets.h>
@@ -34,6 +35,201 @@
.previous
.endm
+/*
+ * Save a thread's fp context.
+ */
+LEAF(_save_fp)
+EXPORT_SYMBOL(_save_fp)
+#if defined(CONFIG_64BIT) || defined(CONFIG_CPU_MIPS32_R2) || \
+ defined(CONFIG_CPU_MIPS32_R6)
+ mfc0 t0, CP0_STATUS
+#endif
+ fpu_save_double a0 t0 t1 # clobbers t1
+ jr ra
+ END(_save_fp)
+
+/*
+ * Restore a thread's fp context.
+ */
+LEAF(_restore_fp)
+#if defined(CONFIG_64BIT) || defined(CONFIG_CPU_MIPS32_R2) || \
+ defined(CONFIG_CPU_MIPS32_R6)
+ mfc0 t0, CP0_STATUS
+#endif
+ fpu_restore_double a0 t0 t1 # clobbers t1
+ jr ra
+ END(_restore_fp)
+
+#ifdef CONFIG_CPU_HAS_MSA
+
+/*
+ * Save a thread's MSA vector context.
+ */
+LEAF(_save_msa)
+EXPORT_SYMBOL(_save_msa)
+ msa_save_all a0
+ jr ra
+ END(_save_msa)
+
+/*
+ * Restore a thread's MSA vector context.
+ */
+LEAF(_restore_msa)
+ msa_restore_all a0
+ jr ra
+ END(_restore_msa)
+
+LEAF(_init_msa_upper)
+ msa_init_all_upper
+ jr ra
+ END(_init_msa_upper)
+
+#endif
+
+/*
+ * Load the FPU with signalling NANS. This bit pattern we're using has
+ * the property that no matter whether considered as single or as double
+ * precision represents signaling NANS.
+ *
+ * The value to initialize fcr31 to comes in $a0.
+ */
+
+ .set push
+ SET_HARDFLOAT
+
+LEAF(_init_fpu)
+ mfc0 t0, CP0_STATUS
+ li t1, ST0_CU1
+ or t0, t1
+ mtc0 t0, CP0_STATUS
+ enable_fpu_hazard
+
+ ctc1 a0, fcr31
+
+ li t1, -1 # SNaN
+
+#ifdef CONFIG_64BIT
+ sll t0, t0, 5
+ bgez t0, 1f # 16 / 32 register mode?
+
+ dmtc1 t1, $f1
+ dmtc1 t1, $f3
+ dmtc1 t1, $f5
+ dmtc1 t1, $f7
+ dmtc1 t1, $f9
+ dmtc1 t1, $f11
+ dmtc1 t1, $f13
+ dmtc1 t1, $f15
+ dmtc1 t1, $f17
+ dmtc1 t1, $f19
+ dmtc1 t1, $f21
+ dmtc1 t1, $f23
+ dmtc1 t1, $f25
+ dmtc1 t1, $f27
+ dmtc1 t1, $f29
+ dmtc1 t1, $f31
+1:
+#endif
+
+#ifdef CONFIG_CPU_MIPS32
+ mtc1 t1, $f0
+ mtc1 t1, $f1
+ mtc1 t1, $f2
+ mtc1 t1, $f3
+ mtc1 t1, $f4
+ mtc1 t1, $f5
+ mtc1 t1, $f6
+ mtc1 t1, $f7
+ mtc1 t1, $f8
+ mtc1 t1, $f9
+ mtc1 t1, $f10
+ mtc1 t1, $f11
+ mtc1 t1, $f12
+ mtc1 t1, $f13
+ mtc1 t1, $f14
+ mtc1 t1, $f15
+ mtc1 t1, $f16
+ mtc1 t1, $f17
+ mtc1 t1, $f18
+ mtc1 t1, $f19
+ mtc1 t1, $f20
+ mtc1 t1, $f21
+ mtc1 t1, $f22
+ mtc1 t1, $f23
+ mtc1 t1, $f24
+ mtc1 t1, $f25
+ mtc1 t1, $f26
+ mtc1 t1, $f27
+ mtc1 t1, $f28
+ mtc1 t1, $f29
+ mtc1 t1, $f30
+ mtc1 t1, $f31
+
+#if defined(CONFIG_CPU_MIPS32_R2) || defined(CONFIG_CPU_MIPS32_R6)
+ .set push
+ .set MIPS_ISA_LEVEL_RAW
+ .set fp=64
+ sll t0, t0, 5 # is Status.FR set?
+ bgez t0, 1f # no: skip setting upper 32b
+
+ mthc1 t1, $f0
+ mthc1 t1, $f1
+ mthc1 t1, $f2
+ mthc1 t1, $f3
+ mthc1 t1, $f4
+ mthc1 t1, $f5
+ mthc1 t1, $f6
+ mthc1 t1, $f7
+ mthc1 t1, $f8
+ mthc1 t1, $f9
+ mthc1 t1, $f10
+ mthc1 t1, $f11
+ mthc1 t1, $f12
+ mthc1 t1, $f13
+ mthc1 t1, $f14
+ mthc1 t1, $f15
+ mthc1 t1, $f16
+ mthc1 t1, $f17
+ mthc1 t1, $f18
+ mthc1 t1, $f19
+ mthc1 t1, $f20
+ mthc1 t1, $f21
+ mthc1 t1, $f22
+ mthc1 t1, $f23
+ mthc1 t1, $f24
+ mthc1 t1, $f25
+ mthc1 t1, $f26
+ mthc1 t1, $f27
+ mthc1 t1, $f28
+ mthc1 t1, $f29
+ mthc1 t1, $f30
+ mthc1 t1, $f31
+1: .set pop
+#endif /* CONFIG_CPU_MIPS32_R2 || CONFIG_CPU_MIPS32_R6 */
+#else
+ .set MIPS_ISA_ARCH_LEVEL_RAW
+ dmtc1 t1, $f0
+ dmtc1 t1, $f2
+ dmtc1 t1, $f4
+ dmtc1 t1, $f6
+ dmtc1 t1, $f8
+ dmtc1 t1, $f10
+ dmtc1 t1, $f12
+ dmtc1 t1, $f14
+ dmtc1 t1, $f16
+ dmtc1 t1, $f18
+ dmtc1 t1, $f20
+ dmtc1 t1, $f22
+ dmtc1 t1, $f24
+ dmtc1 t1, $f26
+ dmtc1 t1, $f28
+ dmtc1 t1, $f30
+#endif
+ jr ra
+ END(_init_fpu)
+
+ .set pop /* SET_HARDFLOAT */
+
.set noreorder
/**
diff --git a/arch/mips/kernel/r4k_switch.S b/arch/mips/kernel/r4k_switch.S
index 7b386d54fd65..17cf9341c1cf 100644
--- a/arch/mips/kernel/r4k_switch.S
+++ b/arch/mips/kernel/r4k_switch.S
@@ -12,8 +12,6 @@
*/
#include <asm/asm.h>
#include <asm/cachectl.h>
-#include <asm/export.h>
-#include <asm/fpregdef.h>
#include <asm/mipsregs.h>
#include <asm/asm-offsets.h>
#include <asm/regdef.h>
@@ -22,10 +20,6 @@
#include <asm/asmmacro.h>
-/* preprocessor replaces the fp in ".set fp=64" with $30 otherwise */
-#undef fp
-
-#ifndef USE_ALTERNATE_RESUME_IMPL
/*
* task_struct *resume(task_struct *prev, task_struct *next,
* struct thread_info *next_ti)
@@ -63,200 +57,3 @@
move v0, a0
jr ra
END(resume)
-
-#endif /* USE_ALTERNATE_RESUME_IMPL */
-
-/*
- * Save a thread's fp context.
- */
-LEAF(_save_fp)
-EXPORT_SYMBOL(_save_fp)
-#if defined(CONFIG_64BIT) || defined(CONFIG_CPU_MIPS32_R2) || \
- defined(CONFIG_CPU_MIPS32_R6)
- mfc0 t0, CP0_STATUS
-#endif
- fpu_save_double a0 t0 t1 # clobbers t1
- jr ra
- END(_save_fp)
-
-/*
- * Restore a thread's fp context.
- */
-LEAF(_restore_fp)
-#if defined(CONFIG_64BIT) || defined(CONFIG_CPU_MIPS32_R2) || \
- defined(CONFIG_CPU_MIPS32_R6)
- mfc0 t0, CP0_STATUS
-#endif
- fpu_restore_double a0 t0 t1 # clobbers t1
- jr ra
- END(_restore_fp)
-
-#ifdef CONFIG_CPU_HAS_MSA
-
-/*
- * Save a thread's MSA vector context.
- */
-LEAF(_save_msa)
-EXPORT_SYMBOL(_save_msa)
- msa_save_all a0
- jr ra
- END(_save_msa)
-
-/*
- * Restore a thread's MSA vector context.
- */
-LEAF(_restore_msa)
- msa_restore_all a0
- jr ra
- END(_restore_msa)
-
-LEAF(_init_msa_upper)
- msa_init_all_upper
- jr ra
- END(_init_msa_upper)
-
-#endif
-
-/*
- * Load the FPU with signalling NANS. This bit pattern we're using has
- * the property that no matter whether considered as single or as double
- * precision represents signaling NANS.
- *
- * The value to initialize fcr31 to comes in $a0.
- */
-
- .set push
- SET_HARDFLOAT
-
-LEAF(_init_fpu)
- mfc0 t0, CP0_STATUS
- li t1, ST0_CU1
- or t0, t1
- mtc0 t0, CP0_STATUS
- enable_fpu_hazard
-
- ctc1 a0, fcr31
-
- li t1, -1 # SNaN
-
-#ifdef CONFIG_64BIT
- sll t0, t0, 5
- bgez t0, 1f # 16 / 32 register mode?
-
- dmtc1 t1, $f1
- dmtc1 t1, $f3
- dmtc1 t1, $f5
- dmtc1 t1, $f7
- dmtc1 t1, $f9
- dmtc1 t1, $f11
- dmtc1 t1, $f13
- dmtc1 t1, $f15
- dmtc1 t1, $f17
- dmtc1 t1, $f19
- dmtc1 t1, $f21
- dmtc1 t1, $f23
- dmtc1 t1, $f25
- dmtc1 t1, $f27
- dmtc1 t1, $f29
- dmtc1 t1, $f31
-1:
-#endif
-
-#ifdef CONFIG_CPU_MIPS32
- mtc1 t1, $f0
- mtc1 t1, $f1
- mtc1 t1, $f2
- mtc1 t1, $f3
- mtc1 t1, $f4
- mtc1 t1, $f5
- mtc1 t1, $f6
- mtc1 t1, $f7
- mtc1 t1, $f8
- mtc1 t1, $f9
- mtc1 t1, $f10
- mtc1 t1, $f11
- mtc1 t1, $f12
- mtc1 t1, $f13
- mtc1 t1, $f14
- mtc1 t1, $f15
- mtc1 t1, $f16
- mtc1 t1, $f17
- mtc1 t1, $f18
- mtc1 t1, $f19
- mtc1 t1, $f20
- mtc1 t1, $f21
- mtc1 t1, $f22
- mtc1 t1, $f23
- mtc1 t1, $f24
- mtc1 t1, $f25
- mtc1 t1, $f26
- mtc1 t1, $f27
- mtc1 t1, $f28
- mtc1 t1, $f29
- mtc1 t1, $f30
- mtc1 t1, $f31
-
-#if defined(CONFIG_CPU_MIPS32_R2) || defined(CONFIG_CPU_MIPS32_R6)
- .set push
- .set MIPS_ISA_LEVEL_RAW
- .set fp=64
- sll t0, t0, 5 # is Status.FR set?
- bgez t0, 1f # no: skip setting upper 32b
-
- mthc1 t1, $f0
- mthc1 t1, $f1
- mthc1 t1, $f2
- mthc1 t1, $f3
- mthc1 t1, $f4
- mthc1 t1, $f5
- mthc1 t1, $f6
- mthc1 t1, $f7
- mthc1 t1, $f8
- mthc1 t1, $f9
- mthc1 t1, $f10
- mthc1 t1, $f11
- mthc1 t1, $f12
- mthc1 t1, $f13
- mthc1 t1, $f14
- mthc1 t1, $f15
- mthc1 t1, $f16
- mthc1 t1, $f17
- mthc1 t1, $f18
- mthc1 t1, $f19
- mthc1 t1, $f20
- mthc1 t1, $f21
- mthc1 t1, $f22
- mthc1 t1, $f23
- mthc1 t1, $f24
- mthc1 t1, $f25
- mthc1 t1, $f26
- mthc1 t1, $f27
- mthc1 t1, $f28
- mthc1 t1, $f29
- mthc1 t1, $f30
- mthc1 t1, $f31
-1: .set pop
-#endif /* CONFIG_CPU_MIPS32_R2 || CONFIG_CPU_MIPS32_R6 */
-#else
- .set MIPS_ISA_ARCH_LEVEL_RAW
- dmtc1 t1, $f0
- dmtc1 t1, $f2
- dmtc1 t1, $f4
- dmtc1 t1, $f6
- dmtc1 t1, $f8
- dmtc1 t1, $f10
- dmtc1 t1, $f12
- dmtc1 t1, $f14
- dmtc1 t1, $f16
- dmtc1 t1, $f18
- dmtc1 t1, $f20
- dmtc1 t1, $f22
- dmtc1 t1, $f24
- dmtc1 t1, $f26
- dmtc1 t1, $f28
- dmtc1 t1, $f30
-#endif
- jr ra
- END(_init_fpu)
-
- .set pop /* SET_HARDFLOAT */
diff --git a/arch/mips/kernel/r6000_fpu.S b/arch/mips/kernel/r6000_fpu.S
deleted file mode 100644
index 9cc7bfab3419..000000000000
--- a/arch/mips/kernel/r6000_fpu.S
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * r6000_fpu.S: Save/restore floating point context for signal handlers.
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1996 by Ralf Baechle
- *
- * Multi-arch abstraction and asm macros for easier reading:
- * Copyright (C) 1996 David S. Miller (davem@davemloft.net)
- */
-#include <asm/asm.h>
-#include <asm/fpregdef.h>
-#include <asm/mipsregs.h>
-#include <asm/asm-offsets.h>
-#include <asm/regdef.h>
-
- .set noreorder
- .set mips2
- .set push
- SET_HARDFLOAT
-
-/**
- * _save_fp_context() - save FP context from the FPU
- * @a0 - pointer to fpregs field of sigcontext
- * @a1 - pointer to fpc_csr field of sigcontext
- *
- * Save FP context, including the 32 FP data registers and the FP
- * control & status register, from the FPU to signal context.
- */
- LEAF(_save_fp_context)
- mfc0 t0,CP0_STATUS
- sll t0,t0,2
- bgez t0,1f
- nop
-
- cfc1 t1,fcr31
- /* Store the 16 double precision registers */
- sdc1 $f0,0(a0)
- sdc1 $f2,16(a0)
- sdc1 $f4,32(a0)
- sdc1 $f6,48(a0)
- sdc1 $f8,64(a0)
- sdc1 $f10,80(a0)
- sdc1 $f12,96(a0)
- sdc1 $f14,112(a0)
- sdc1 $f16,128(a0)
- sdc1 $f18,144(a0)
- sdc1 $f20,160(a0)
- sdc1 $f22,176(a0)
- sdc1 $f24,192(a0)
- sdc1 $f26,208(a0)
- sdc1 $f28,224(a0)
- sdc1 $f30,240(a0)
- jr ra
- sw t0,(a1)
-1: jr ra
- nop
- END(_save_fp_context)
-
-/**
- * _restore_fp_context() - restore FP context to the FPU
- * @a0 - pointer to fpregs field of sigcontext
- * @a1 - pointer to fpc_csr field of sigcontext
- *
- * Restore FP context, including the 32 FP data registers and the FP
- * control & status register, from signal context to the FPU.
- */
- LEAF(_restore_fp_context)
- mfc0 t0,CP0_STATUS
- sll t0,t0,2
-
- bgez t0,1f
- lw t0,(a1)
- /* Restore the 16 double precision registers */
- ldc1 $f0,0(a0)
- ldc1 $f2,16(a0)
- ldc1 $f4,32(a0)
- ldc1 $f6,48(a0)
- ldc1 $f8,64(a0)
- ldc1 $f10,80(a0)
- ldc1 $f12,96(a0)
- ldc1 $f14,112(a0)
- ldc1 $f16,128(a0)
- ldc1 $f18,144(a0)
- ldc1 $f20,160(a0)
- ldc1 $f22,176(a0)
- ldc1 $f24,192(a0)
- ldc1 $f26,208(a0)
- ldc1 $f28,224(a0)
- ldc1 $f30,240(a0)
- jr ra
- ctc1 t0,fcr31
-1: jr ra
- nop
- END(_restore_fp_context)
-
- .set pop /* SET_HARDFLOAT */
diff --git a/arch/mips/kernel/relocate.c b/arch/mips/kernel/relocate.c
index 2d1a0c438771..cbf4cc0b0b6c 100644
--- a/arch/mips/kernel/relocate.c
+++ b/arch/mips/kernel/relocate.c
@@ -6,7 +6,7 @@
* Support for Kernel relocation at boot time
*
* Copyright (C) 2015, Imagination Technologies Ltd.
- * Authors: Matt Redfearn (matt.redfearn@imgtec.com)
+ * Authors: Matt Redfearn (matt.redfearn@mips.com)
*/
#include <asm/bootinfo.h>
#include <asm/cacheflush.h>
diff --git a/arch/mips/kernel/smp-bmips.c b/arch/mips/kernel/smp-bmips.c
index 1b070a76fcdd..406072e26752 100644
--- a/arch/mips/kernel/smp-bmips.c
+++ b/arch/mips/kernel/smp-bmips.c
@@ -179,7 +179,7 @@ static void bmips_prepare_cpus(unsigned int max_cpus)
/*
* Tell the hardware to boot CPUx - runs on CPU0
*/
-static void bmips_boot_secondary(int cpu, struct task_struct *idle)
+static int bmips_boot_secondary(int cpu, struct task_struct *idle)
{
bmips_smp_boot_sp = __KSTK_TOS(idle);
bmips_smp_boot_gp = (unsigned long)task_thread_info(idle);
@@ -231,6 +231,8 @@ static void bmips_boot_secondary(int cpu, struct task_struct *idle)
}
cpumask_set_cpu(cpu, &bmips_booted_mask);
}
+
+ return 0;
}
/*
@@ -245,7 +247,7 @@ static void bmips_init_secondary(void)
break;
case CPU_BMIPS5000:
write_c0_brcm_action(ACTION_CLR_IPI(smp_processor_id(), 0));
- current_cpu_data.core = (read_c0_brcm_config() >> 25) & 3;
+ cpu_set_core(&current_cpu_data, (read_c0_brcm_config() >> 25) & 3);
break;
}
}
@@ -409,7 +411,7 @@ void __ref play_dead(void)
#endif /* CONFIG_HOTPLUG_CPU */
-struct plat_smp_ops bmips43xx_smp_ops = {
+const struct plat_smp_ops bmips43xx_smp_ops = {
.smp_setup = bmips_smp_setup,
.prepare_cpus = bmips_prepare_cpus,
.boot_secondary = bmips_boot_secondary,
@@ -423,7 +425,7 @@ struct plat_smp_ops bmips43xx_smp_ops = {
#endif
};
-struct plat_smp_ops bmips5000_smp_ops = {
+const struct plat_smp_ops bmips5000_smp_ops = {
.smp_setup = bmips_smp_setup,
.prepare_cpus = bmips_prepare_cpus,
.boot_secondary = bmips_boot_secondary,
diff --git a/arch/mips/kernel/smp-cmp.c b/arch/mips/kernel/smp-cmp.c
index 76923349b4fe..05295a4909f1 100644
--- a/arch/mips/kernel/smp-cmp.c
+++ b/arch/mips/kernel/smp-cmp.c
@@ -24,7 +24,6 @@
#include <linux/cpumask.h>
#include <linux/interrupt.h>
#include <linux/compiler.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/atomic.h>
#include <asm/cacheflush.h>
@@ -78,7 +77,7 @@ static void cmp_smp_finish(void)
* __KSTK_TOS(idle) is apparently the stack pointer
* (unsigned long)idle->thread_info the gp
*/
-static void cmp_boot_secondary(int cpu, struct task_struct *idle)
+static int cmp_boot_secondary(int cpu, struct task_struct *idle)
{
struct thread_info *gp = task_thread_info(idle);
unsigned long sp = __KSTK_TOS(idle);
@@ -95,6 +94,7 @@ static void cmp_boot_secondary(int cpu, struct task_struct *idle)
#endif
amon_cpu_start(cpu, pc, sp, (unsigned long)gp, a0);
+ return 0;
}
/*
@@ -148,7 +148,7 @@ void __init cmp_prepare_cpus(unsigned int max_cpus)
}
-struct plat_smp_ops cmp_smp_ops = {
+const struct plat_smp_ops cmp_smp_ops = {
.send_ipi_single = mips_smp_send_ipi_single,
.send_ipi_mask = mips_smp_send_ipi_mask,
.init_secondary = cmp_init_secondary,
diff --git a/arch/mips/kernel/smp-cps.c b/arch/mips/kernel/smp-cps.c
index f832e99ad4c3..7d6af41888e8 100644
--- a/arch/mips/kernel/smp-cps.c
+++ b/arch/mips/kernel/smp-cps.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2013 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -11,7 +11,6 @@
#include <linux/cpu.h>
#include <linux/delay.h>
#include <linux/io.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/sched/task_stack.h>
#include <linux/sched/hotplug.h>
#include <linux/slab.h>
@@ -19,8 +18,7 @@
#include <linux/types.h>
#include <asm/bcache.h>
-#include <asm/mips-cm.h>
-#include <asm/mips-cpc.h>
+#include <asm/mips-cps.h>
#include <asm/mips_mt.h>
#include <asm/mipsregs.h>
#include <asm/pm-cps.h>
@@ -41,55 +39,58 @@ static int __init setup_nothreads(char *s)
}
early_param("nothreads", setup_nothreads);
-static unsigned core_vpe_count(unsigned core)
+static unsigned core_vpe_count(unsigned int cluster, unsigned core)
{
- unsigned cfg;
-
if (threads_disabled)
return 1;
- if ((!IS_ENABLED(CONFIG_MIPS_MT_SMP) || !cpu_has_mipsmt)
- && (!IS_ENABLED(CONFIG_CPU_MIPSR6) || !cpu_has_vp))
- return 1;
-
- mips_cm_lock_other(core, 0);
- cfg = read_gcr_co_config() & CM_GCR_Cx_CONFIG_PVPE_MSK;
- mips_cm_unlock_other();
- return (cfg >> CM_GCR_Cx_CONFIG_PVPE_SHF) + 1;
+ return mips_cps_numvps(cluster, core);
}
static void __init cps_smp_setup(void)
{
- unsigned int ncores, nvpes, core_vpes;
+ unsigned int nclusters, ncores, nvpes, core_vpes;
unsigned long core_entry;
- int c, v;
+ int cl, c, v;
/* Detect & record VPE topology */
- ncores = mips_cm_numcores();
+ nvpes = 0;
+ nclusters = mips_cps_numclusters();
pr_info("%s topology ", cpu_has_mips_r6 ? "VP" : "VPE");
- for (c = nvpes = 0; c < ncores; c++) {
- core_vpes = core_vpe_count(c);
- pr_cont("%c%u", c ? ',' : '{', core_vpes);
-
- /* Use the number of VPEs in core 0 for smp_num_siblings */
- if (!c)
- smp_num_siblings = core_vpes;
-
- for (v = 0; v < min_t(int, core_vpes, NR_CPUS - nvpes); v++) {
- cpu_data[nvpes + v].core = c;
-#if defined(CONFIG_MIPS_MT_SMP) || defined(CONFIG_CPU_MIPSR6)
- cpu_data[nvpes + v].vpe_id = v;
-#endif
+ for (cl = 0; cl < nclusters; cl++) {
+ if (cl > 0)
+ pr_cont(",");
+ pr_cont("{");
+
+ ncores = mips_cps_numcores(cl);
+ for (c = 0; c < ncores; c++) {
+ core_vpes = core_vpe_count(cl, c);
+
+ if (c > 0)
+ pr_cont(",");
+ pr_cont("%u", core_vpes);
+
+ /* Use the number of VPEs in cluster 0 core 0 for smp_num_siblings */
+ if (!cl && !c)
+ smp_num_siblings = core_vpes;
+
+ for (v = 0; v < min_t(int, core_vpes, NR_CPUS - nvpes); v++) {
+ cpu_set_cluster(&cpu_data[nvpes + v], cl);
+ cpu_set_core(&cpu_data[nvpes + v], c);
+ cpu_set_vpe_id(&cpu_data[nvpes + v], v);
+ }
+
+ nvpes += core_vpes;
}
- nvpes += core_vpes;
+ pr_cont("}");
}
- pr_cont("} total %u\n", nvpes);
+ pr_cont(" total %u\n", nvpes);
/* Indicate present CPUs (CPU being synonymous with VPE) */
for (v = 0; v < min_t(unsigned, nvpes, NR_CPUS); v++) {
- set_cpu_possible(v, true);
- set_cpu_present(v, true);
+ set_cpu_possible(v, cpu_cluster(&cpu_data[v]) == 0);
+ set_cpu_present(v, cpu_cluster(&cpu_data[v]) == 0);
__cpu_number_map[v] = v;
__cpu_logical_map[v] = v;
}
@@ -121,7 +122,7 @@ static void __init cps_smp_setup(void)
static void __init cps_prepare_cpus(unsigned int max_cpus)
{
unsigned ncores, core_vpes, c, cca;
- bool cca_unsuitable;
+ bool cca_unsuitable, cores_limited;
u32 *entry_code;
mips_mt_set_cpuoptions();
@@ -141,19 +142,22 @@ static void __init cps_prepare_cpus(unsigned int max_cpus)
}
/* Warn the user if the CCA prevents multi-core */
- ncores = mips_cm_numcores();
- if ((cca_unsuitable || cpu_has_dc_aliases) && ncores > 1) {
+ cores_limited = false;
+ if (cca_unsuitable || cpu_has_dc_aliases) {
+ for_each_present_cpu(c) {
+ if (cpus_are_siblings(smp_processor_id(), c))
+ continue;
+
+ set_cpu_present(c, false);
+ cores_limited = true;
+ }
+ }
+ if (cores_limited)
pr_warn("Using only one core due to %s%s%s\n",
cca_unsuitable ? "unsuitable CCA" : "",
(cca_unsuitable && cpu_has_dc_aliases) ? " & " : "",
cpu_has_dc_aliases ? "dcache aliasing" : "");
- for_each_present_cpu(c) {
- if (cpu_data[c].core)
- set_cpu_present(c, false);
- }
- }
-
/*
* Patch the start of mips_cps_core_entry to provide:
*
@@ -168,6 +172,7 @@ static void __init cps_prepare_cpus(unsigned int max_cpus)
__sync();
/* Allocate core boot configuration structs */
+ ncores = mips_cps_numcores(0);
mips_cps_core_bootcfg = kcalloc(ncores, sizeof(*mips_cps_core_bootcfg),
GFP_KERNEL);
if (!mips_cps_core_bootcfg) {
@@ -177,7 +182,7 @@ static void __init cps_prepare_cpus(unsigned int max_cpus)
/* Allocate VPE boot configuration structs */
for (c = 0; c < ncores; c++) {
- core_vpes = core_vpe_count(c);
+ core_vpes = core_vpe_count(0, c);
mips_cps_core_bootcfg[c].vpe_config = kcalloc(core_vpes,
sizeof(*mips_cps_core_bootcfg[c].vpe_config),
GFP_KERNEL);
@@ -189,7 +194,7 @@ static void __init cps_prepare_cpus(unsigned int max_cpus)
}
/* Mark this CPU as booted */
- atomic_set(&mips_cps_core_bootcfg[current_cpu_data.core].vpe_mask,
+ atomic_set(&mips_cps_core_bootcfg[cpu_core(&current_cpu_data)].vpe_mask,
1 << cpu_vpe_id(&current_cpu_data));
return;
@@ -212,11 +217,11 @@ err_out:
static void boot_core(unsigned int core, unsigned int vpe_id)
{
- u32 access, stat, seq_state;
+ u32 stat, seq_state;
unsigned timeout;
/* Select the appropriate core */
- mips_cm_lock_other(core, 0);
+ mips_cm_lock_other(0, core, 0, CM_GCR_Cx_OTHER_BLOCK_LOCAL);
/* Set its reset vector */
write_gcr_co_reset_base(CKSEG1ADDR((unsigned long)mips_cps_core_entry));
@@ -225,12 +230,10 @@ static void boot_core(unsigned int core, unsigned int vpe_id)
write_gcr_co_coherence(0);
/* Start it with the legacy memory map and exception base */
- write_gcr_co_reset_ext_base(CM_GCR_RESET_EXT_BASE_UEB);
+ write_gcr_co_reset_ext_base(CM_GCR_Cx_RESET_EXT_BASE_UEB);
/* Ensure the core can access the GCRs */
- access = read_gcr_access();
- access |= 1 << (CM_GCR_ACCESS_ACCESSEN_SHF + core);
- write_gcr_access(access);
+ set_gcr_access(1 << core);
if (mips_cpc_present()) {
/* Reset the core */
@@ -253,7 +256,8 @@ static void boot_core(unsigned int core, unsigned int vpe_id)
timeout = 100;
while (true) {
stat = read_cpc_co_stat_conf();
- seq_state = stat & CPC_Cx_STAT_CONF_SEQSTATE_MSK;
+ seq_state = stat & CPC_Cx_STAT_CONF_SEQSTATE;
+ seq_state >>= __ffs(CPC_Cx_STAT_CONF_SEQSTATE);
/* U6 == coherent execution, ie. the core is up */
if (seq_state == CPC_Cx_STAT_CONF_SEQSTATE_U6)
@@ -285,15 +289,15 @@ static void boot_core(unsigned int core, unsigned int vpe_id)
static void remote_vpe_boot(void *dummy)
{
- unsigned core = current_cpu_data.core;
+ unsigned core = cpu_core(&current_cpu_data);
struct core_boot_config *core_cfg = &mips_cps_core_bootcfg[core];
mips_cps_boot_vpes(core_cfg, cpu_vpe_id(&current_cpu_data));
}
-static void cps_boot_secondary(int cpu, struct task_struct *idle)
+static int cps_boot_secondary(int cpu, struct task_struct *idle)
{
- unsigned core = cpu_data[cpu].core;
+ unsigned core = cpu_core(&cpu_data[cpu]);
unsigned vpe_id = cpu_vpe_id(&cpu_data[cpu]);
struct core_boot_config *core_cfg = &mips_cps_core_bootcfg[core];
struct vpe_boot_config *vpe_cfg = &core_cfg->vpe_config[vpe_id];
@@ -301,6 +305,10 @@ static void cps_boot_secondary(int cpu, struct task_struct *idle)
unsigned int remote;
int err;
+ /* We don't yet support booting CPUs in other clusters */
+ if (cpu_cluster(&cpu_data[cpu]) != cpu_cluster(&current_cpu_data))
+ return -ENOSYS;
+
vpe_cfg->pc = (unsigned long)&smp_bootstrap;
vpe_cfg->sp = __KSTK_TOS(idle);
vpe_cfg->gp = (unsigned long)task_thread_info(idle);
@@ -316,16 +324,16 @@ static void cps_boot_secondary(int cpu, struct task_struct *idle)
}
if (cpu_has_vp) {
- mips_cm_lock_other(core, vpe_id);
+ mips_cm_lock_other(0, core, vpe_id, CM_GCR_Cx_OTHER_BLOCK_LOCAL);
core_entry = CKSEG1ADDR((unsigned long)mips_cps_core_entry);
write_gcr_co_reset_base(core_entry);
mips_cm_unlock_other();
}
- if (core != current_cpu_data.core) {
+ if (!cpus_are_siblings(cpu, smp_processor_id())) {
/* Boot a VPE on another powered up core */
for (remote = 0; remote < NR_CPUS; remote++) {
- if (cpu_data[remote].core != core)
+ if (!cpus_are_siblings(cpu, remote))
continue;
if (cpu_online(remote))
break;
@@ -349,6 +357,7 @@ static void cps_boot_secondary(int cpu, struct task_struct *idle)
mips_cps_boot_vpes(core_cfg, vpe_id);
out:
preempt_enable();
+ return 0;
}
static void cps_init_secondary(void)
@@ -358,7 +367,7 @@ static void cps_init_secondary(void)
dmt();
if (mips_cm_revision() >= CM_REV_CM3) {
- unsigned ident = gic_read_local_vp_id();
+ unsigned int ident = read_gic_vl_ident();
/*
* Ensure that our calculation of the VP ID matches up with
@@ -402,7 +411,7 @@ static int cps_cpu_disable(void)
if (!cps_pm_support_state(CPS_PM_POWER_GATED))
return -EINVAL;
- core_cfg = &mips_cps_core_bootcfg[current_cpu_data.core];
+ core_cfg = &mips_cps_core_bootcfg[cpu_core(&current_cpu_data)];
atomic_sub(1 << cpu_vpe_id(&current_cpu_data), &core_cfg->vpe_mask);
smp_mb__after_atomic();
set_cpu_online(cpu, false);
@@ -424,15 +433,17 @@ void play_dead(void)
local_irq_disable();
idle_task_exit();
cpu = smp_processor_id();
- core = cpu_data[cpu].core;
+ core = cpu_core(&cpu_data[cpu]);
cpu_death = CPU_DEATH_POWER;
pr_debug("CPU%d going offline\n", cpu);
if (cpu_has_mipsmt || cpu_has_vp) {
+ core = cpu_core(&cpu_data[cpu]);
+
/* Look for another online VPE within the core */
for_each_online_cpu(cpu_death_sibling) {
- if (cpu_data[cpu_death_sibling].core != core)
+ if (!cpus_are_siblings(cpu, cpu_death_sibling))
continue;
/*
@@ -488,7 +499,7 @@ static void wait_for_sibling_halt(void *ptr_cpu)
static void cps_cpu_die(unsigned int cpu)
{
- unsigned core = cpu_data[cpu].core;
+ unsigned core = cpu_core(&cpu_data[cpu]);
unsigned int vpe_id = cpu_vpe_id(&cpu_data[cpu]);
ktime_t fail_time;
unsigned stat;
@@ -519,10 +530,11 @@ static void cps_cpu_die(unsigned int cpu)
*/
fail_time = ktime_add_ms(ktime_get(), 2000);
do {
- mips_cm_lock_other(core, 0);
+ mips_cm_lock_other(0, core, 0, CM_GCR_Cx_OTHER_BLOCK_LOCAL);
mips_cpc_lock_other(core);
stat = read_cpc_co_stat_conf();
- stat &= CPC_Cx_STAT_CONF_SEQSTATE_MSK;
+ stat &= CPC_Cx_STAT_CONF_SEQSTATE;
+ stat >>= __ffs(CPC_Cx_STAT_CONF_SEQSTATE);
mips_cpc_unlock_other();
mips_cm_unlock_other();
@@ -544,7 +556,7 @@ static void cps_cpu_die(unsigned int cpu)
*/
if (WARN(ktime_after(ktime_get(), fail_time),
"CPU%u hasn't powered down, seq. state %u\n",
- cpu, stat >> CPC_Cx_STAT_CONF_SEQSTATE_SHF))
+ cpu, stat))
break;
} while (1);
@@ -562,7 +574,7 @@ static void cps_cpu_die(unsigned int cpu)
panic("Failed to call remote sibling CPU\n");
} else if (cpu_has_vp) {
do {
- mips_cm_lock_other(core, vpe_id);
+ mips_cm_lock_other(0, core, vpe_id, CM_GCR_Cx_OTHER_BLOCK_LOCAL);
stat = read_cpc_co_vp_running();
mips_cm_unlock_other();
} while (stat & (1 << vpe_id));
@@ -571,7 +583,7 @@ static void cps_cpu_die(unsigned int cpu)
#endif /* CONFIG_HOTPLUG_CPU */
-static struct plat_smp_ops cps_smp_ops = {
+static const struct plat_smp_ops cps_smp_ops = {
.smp_setup = cps_smp_setup,
.prepare_cpus = cps_prepare_cpus,
.boot_secondary = cps_boot_secondary,
@@ -587,7 +599,7 @@ static struct plat_smp_ops cps_smp_ops = {
bool mips_cps_smp_in_use(void)
{
- extern struct plat_smp_ops *mp_ops;
+ extern const struct plat_smp_ops *mp_ops;
return mp_ops == &cps_smp_ops;
}
@@ -599,7 +611,7 @@ int register_cps_smp_ops(void)
}
/* check we have a GIC - we need one for IPIs */
- if (!(read_gcr_gic_status() & CM_GCR_GIC_STATUS_EX_MSK)) {
+ if (!(read_gcr_gic_status() & CM_GCR_GIC_STATUS_EX)) {
pr_warn("MIPS CPS SMP unable to proceed without a GIC\n");
return -ENODEV;
}
diff --git a/arch/mips/kernel/smp-mt.c b/arch/mips/kernel/smp-mt.c
index ed6b4df583ea..94ab3276b48c 100644
--- a/arch/mips/kernel/smp-mt.c
+++ b/arch/mips/kernel/smp-mt.c
@@ -21,7 +21,6 @@
#include <linux/sched.h>
#include <linux/cpumask.h>
#include <linux/interrupt.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/compiler.h>
#include <linux/sched/task_stack.h>
#include <linux/smp.h>
@@ -36,6 +35,7 @@
#include <asm/mipsregs.h>
#include <asm/mipsmtregs.h>
#include <asm/mips_mt.h>
+#include <asm/mips-cps.h>
static void __init smvp_copy_vpe_config(void)
{
@@ -83,7 +83,7 @@ static unsigned int __init smvp_vpe_init(unsigned int tc, unsigned int mvpconf0,
if (tc != 0)
smvp_copy_vpe_config();
- cpu_data[ncpu].vpe_id = tc;
+ cpu_set_vpe_id(&cpu_data[ncpu], tc);
return ncpu;
}
@@ -118,14 +118,12 @@ static void __init smvp_tc_init(unsigned int tc, unsigned int mvpconf0)
static void vsmp_init_secondary(void)
{
-#ifdef CONFIG_MIPS_GIC
/* This is Malta specific: IPI,performance and timer interrupts */
- if (gic_present)
+ if (mips_gic_present())
change_c0_status(ST0_IM, STATUSF_IP2 | STATUSF_IP3 |
STATUSF_IP4 | STATUSF_IP5 |
STATUSF_IP6 | STATUSF_IP7);
else
-#endif
change_c0_status(ST0_IM, STATUSF_IP0 | STATUSF_IP1 |
STATUSF_IP6 | STATUSF_IP7);
}
@@ -152,7 +150,7 @@ static void vsmp_smp_finish(void)
* (unsigned long)idle->thread_info the gp
* assumes a 1:1 mapping of TC => VPE
*/
-static void vsmp_boot_secondary(int cpu, struct task_struct *idle)
+static int vsmp_boot_secondary(int cpu, struct task_struct *idle)
{
struct thread_info *gp = task_thread_info(idle);
dvpe();
@@ -184,6 +182,8 @@ static void vsmp_boot_secondary(int cpu, struct task_struct *idle)
clear_c0_mvpcontrol(MVPCONTROL_VPC);
evpe(EVPE_ENABLE);
+
+ return 0;
}
/*
@@ -239,7 +239,7 @@ static void __init vsmp_prepare_cpus(unsigned int max_cpus)
mips_mt_set_cpuoptions();
}
-struct plat_smp_ops vsmp_smp_ops = {
+const struct plat_smp_ops vsmp_smp_ops = {
.send_ipi_single = mips_smp_send_ipi_single,
.send_ipi_mask = mips_smp_send_ipi_mask,
.init_secondary = vsmp_init_secondary,
diff --git a/arch/mips/kernel/smp-up.c b/arch/mips/kernel/smp-up.c
index 17878d71ef2b..525d3196f793 100644
--- a/arch/mips/kernel/smp-up.c
+++ b/arch/mips/kernel/smp-up.c
@@ -39,8 +39,9 @@ static void up_smp_finish(void)
/*
* Firmware CPU startup hook
*/
-static void up_boot_secondary(int cpu, struct task_struct *idle)
+static int up_boot_secondary(int cpu, struct task_struct *idle)
{
+ return 0;
}
static void __init up_smp_setup(void)
@@ -63,7 +64,7 @@ static void up_cpu_die(unsigned int cpu)
}
#endif
-struct plat_smp_ops up_smp_ops = {
+const struct plat_smp_ops up_smp_ops = {
.send_ipi_single = up_send_ipi_single,
.send_ipi_mask = up_send_ipi_mask,
.init_secondary = up_init_secondary,
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index c7cbddfcdc3b..bbe19b64def5 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -96,8 +96,7 @@ static inline void set_cpu_sibling_map(int cpu)
if (smp_num_siblings > 1) {
for_each_cpu(i, &cpu_sibling_setup_map) {
- if (cpu_data[cpu].package == cpu_data[i].package &&
- cpu_data[cpu].core == cpu_data[i].core) {
+ if (cpus_are_siblings(cpu, i)) {
cpumask_set_cpu(i, &cpu_sibling_map[cpu]);
cpumask_set_cpu(cpu, &cpu_sibling_map[i]);
}
@@ -134,8 +133,7 @@ void calculate_cpu_foreign_map(void)
for_each_online_cpu(i) {
core_present = 0;
for_each_cpu(k, &temp_foreign_map)
- if (cpu_data[i].package == cpu_data[k].package &&
- cpu_data[i].core == cpu_data[k].core)
+ if (cpus_are_siblings(i, k))
core_present = 1;
if (!core_present)
cpumask_set_cpu(i, &temp_foreign_map);
@@ -146,10 +144,10 @@ void calculate_cpu_foreign_map(void)
&temp_foreign_map, &cpu_sibling_map[i]);
}
-struct plat_smp_ops *mp_ops;
+const struct plat_smp_ops *mp_ops;
EXPORT_SYMBOL(mp_ops);
-void register_smp_ops(struct plat_smp_ops *ops)
+void register_smp_ops(const struct plat_smp_ops *ops)
{
if (mp_ops)
printk(KERN_WARNING "Overriding previously set SMP ops\n");
@@ -186,13 +184,13 @@ void mips_smp_send_ipi_mask(const struct cpumask *mask, unsigned int action)
if (mips_cpc_present()) {
for_each_cpu(cpu, mask) {
- core = cpu_data[cpu].core;
-
- if (core == current_cpu_data.core)
+ if (cpus_are_siblings(cpu, smp_processor_id()))
continue;
+ core = cpu_core(&cpu_data[cpu]);
+
while (!cpumask_test_cpu(cpu, &cpu_coherent_mask)) {
- mips_cm_lock_other(core, 0);
+ mips_cm_lock_other_cpu(cpu, CM_GCR_Cx_OTHER_BLOCK_LOCAL);
mips_cpc_lock_other(core);
write_cpc_co_cmd(CPC_Cx_CMD_PWRUP);
mips_cpc_unlock_other();
@@ -441,7 +439,11 @@ void smp_prepare_boot_cpu(void)
int __cpu_up(unsigned int cpu, struct task_struct *tidle)
{
- mp_ops->boot_secondary(cpu, tidle);
+ int err;
+
+ err = mp_ops->boot_secondary(cpu, tidle);
+ if (err)
+ return err;
/*
* We must check for timeout here, as the CPU will not be marked
diff --git a/arch/mips/kernel/spinlock_test.c b/arch/mips/kernel/spinlock_test.c
index f7d86955d1b8..eaed550e79a2 100644
--- a/arch/mips/kernel/spinlock_test.c
+++ b/arch/mips/kernel/spinlock_test.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/kthread.h>
#include <linux/hrtimer.h>
diff --git a/arch/mips/kernel/sync-r4k.c b/arch/mips/kernel/sync-r4k.c
index 1df1160b6a47..f2973ce87f53 100644
--- a/arch/mips/kernel/sync-r4k.c
+++ b/arch/mips/kernel/sync-r4k.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Count register synchronisation.
*
diff --git a/arch/mips/kernel/sysrq.c b/arch/mips/kernel/sysrq.c
index 5f055393092d..e5a2a6ab71ac 100644
--- a/arch/mips/kernel/sysrq.c
+++ b/arch/mips/kernel/sysrq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* MIPS specific sysrq operations.
*
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c
index c036157fb891..a6ebc8135112 100644
--- a/arch/mips/kernel/time.c
+++ b/arch/mips/kernel/time.c
@@ -72,20 +72,6 @@ EXPORT_SYMBOL(perf_irq);
unsigned int mips_hpt_frequency;
EXPORT_SYMBOL_GPL(mips_hpt_frequency);
-/*
- * This function exists in order to cause an error due to a duplicate
- * definition if platform code should have its own implementation. The hook
- * to use instead is plat_time_init. plat_time_init does not receive the
- * irqaction pointer argument anymore. This is because any function which
- * initializes an interrupt timer now takes care of its own request_irq rsp.
- * setup_irq calls and each clock_event_device should use its own
- * struct irqrequest.
- */
-void __init plat_timer_setup(void)
-{
- BUG();
-}
-
static __init int cpu_has_mfc0_count_bug(void)
{
switch (current_cpu_type()) {
diff --git a/arch/mips/kernel/topology.c b/arch/mips/kernel/topology.c
index cf3eb61fad12..cd3e1f82e1a5 100644
--- a/arch/mips/kernel/topology.c
+++ b/arch/mips/kernel/topology.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/cpu.h>
#include <linux/cpumask.h>
#include <linux/init.h>
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 2bf414993347..5669d3b8bd38 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -50,9 +50,8 @@
#include <asm/fpu.h>
#include <asm/fpu_emulator.h>
#include <asm/idle.h>
-#include <asm/mips-cm.h>
+#include <asm/mips-cps.h>
#include <asm/mips-r2-to-r6-emul.h>
-#include <asm/mips-cm.h>
#include <asm/mipsregs.h>
#include <asm/mipsmtregs.h>
#include <asm/module.h>
@@ -734,8 +733,7 @@ void force_fcr31_sig(unsigned long fcr31, void __user *fault_addr,
si.si_code = FPE_FLTUND;
else if (fcr31 & FPU_CSR_INE_X)
si.si_code = FPE_FLTRES;
- else
- return; /* Broken hardware? */
+
force_sig_info(SIGFPE, &si, tsk);
}
@@ -1673,7 +1671,7 @@ static inline void parity_protection_init(void)
/* Probe L2 ECC support */
gcr_ectl = read_gcr_err_control();
- if (!(gcr_ectl & CM_GCR_ERR_CONTROL_L2_ECC_SUPPORT_MSK) ||
+ if (!(gcr_ectl & CM_GCR_ERR_CONTROL_L2_ECC_SUPPORT) ||
!(cp0_ectl & ERRCTL_PE)) {
/*
* One of L1 or L2 ECC checking isn't supported,
@@ -1693,12 +1691,12 @@ static inline void parity_protection_init(void)
/* Configure L2 ECC checking */
if (l2parity)
- gcr_ectl |= CM_GCR_ERR_CONTROL_L2_ECC_EN_MSK;
+ gcr_ectl |= CM_GCR_ERR_CONTROL_L2_ECC_EN;
else
- gcr_ectl &= ~CM_GCR_ERR_CONTROL_L2_ECC_EN_MSK;
+ gcr_ectl &= ~CM_GCR_ERR_CONTROL_L2_ECC_EN;
write_gcr_err_control(gcr_ectl);
gcr_ectl = read_gcr_err_control();
- gcr_ectl &= CM_GCR_ERR_CONTROL_L2_ECC_EN_MSK;
+ gcr_ectl &= CM_GCR_ERR_CONTROL_L2_ECC_EN;
WARN_ON(!!gcr_ectl != l2parity);
pr_info("Cache parity protection %sabled\n",
@@ -2428,21 +2426,6 @@ void __init trap_init(void)
set_except_vector(EXCCODE_TR, handle_tr);
set_except_vector(EXCCODE_MSAFPE, handle_msa_fpe);
- if (current_cpu_type() == CPU_R6000 ||
- current_cpu_type() == CPU_R6000A) {
- /*
- * The R6000 is the only R-series CPU that features a machine
- * check exception (similar to the R4000 cache error) and
- * unaligned ldc1/sdc1 exception. The handlers have not been
- * written yet. Well, anyway there is no R6000 machine on the
- * current list of targets for Linux/MIPS.
- * (Duh, crap, there is someone with a triple R6k machine)
- */
- //set_except_vector(14, handle_mc);
- //set_except_vector(15, handle_ndc);
- }
-
-
if (board_nmi_handler_setup)
board_nmi_handler_setup();
diff --git a/arch/mips/kernel/unaligned.c b/arch/mips/kernel/unaligned.c
index 5eaf2578ac04..2d0b912f9e3e 100644
--- a/arch/mips/kernel/unaligned.c
+++ b/arch/mips/kernel/unaligned.c
@@ -1378,7 +1378,7 @@ sigill:
const int reg16to32[] = { 16, 17, 2, 3, 4, 5, 6, 7 };
/* Recode table from 16-bit STORE register notation to 32-bit GPR. */
-const int reg16to32st[] = { 0, 17, 2, 3, 4, 5, 6, 7 };
+static const int reg16to32st[] = { 0, 17, 2, 3, 4, 5, 6, 7 };
static void emulate_load_store_microMIPS(struct pt_regs *regs,
void __user *addr)
diff --git a/arch/mips/kernel/uprobes.c b/arch/mips/kernel/uprobes.c
index e99e3fae5326..f7a0645ccb82 100644
--- a/arch/mips/kernel/uprobes.c
+++ b/arch/mips/kernel/uprobes.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/highmem.h>
#include <linux/kdebug.h>
#include <linux/types.h>
diff --git a/arch/mips/kernel/vdso.c b/arch/mips/kernel/vdso.c
index 093517e85a6c..019035d7225c 100644
--- a/arch/mips/kernel/vdso.c
+++ b/arch/mips/kernel/vdso.c
@@ -13,13 +13,13 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/ioport.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/timekeeper_internal.h>
#include <asm/abi.h>
+#include <asm/mips-cps.h>
#include <asm/vdso.h>
/* Kernel-provided data used by the VDSO. */
@@ -99,9 +99,8 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
{
struct mips_vdso_image *image = current->thread.abi->vdso;
struct mm_struct *mm = current->mm;
- unsigned long gic_size, vvar_size, size, base, data_addr, vdso_addr;
+ unsigned long gic_size, vvar_size, size, base, data_addr, vdso_addr, gic_pfn;
struct vm_area_struct *vma;
- struct resource gic_res;
int ret;
if (down_write_killable(&mm->mmap_sem))
@@ -125,7 +124,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
* only map a page even though the total area is 64K, as we only need
* the counter registers at the start.
*/
- gic_size = gic_present ? PAGE_SIZE : 0;
+ gic_size = mips_gic_present() ? PAGE_SIZE : 0;
vvar_size = gic_size + PAGE_SIZE;
size = vvar_size + image->size;
@@ -148,13 +147,9 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
/* Map GIC user page. */
if (gic_size) {
- ret = gic_get_usm_range(&gic_res);
- if (ret)
- goto out;
+ gic_pfn = virt_to_phys(mips_gic_base + MIPS_GIC_USER_OFS) >> PAGE_SHIFT;
- ret = io_remap_pfn_range(vma, base,
- gic_res.start >> PAGE_SHIFT,
- gic_size,
+ ret = io_remap_pfn_range(vma, base, gic_pfn, gic_size,
pgprot_noncached(PAGE_READONLY));
if (ret)
goto out;
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
index 8ca2371aa684..971a504001c2 100644
--- a/arch/mips/kernel/vmlinux.lds.S
+++ b/arch/mips/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/asm-offsets.h>
#include <asm/thread_info.h>
diff --git a/arch/mips/kvm/Kconfig b/arch/mips/kvm/Kconfig
index 50a722dfb236..b17447ce8873 100644
--- a/arch/mips/kvm/Kconfig
+++ b/arch/mips/kvm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# KVM configuration
#
diff --git a/arch/mips/kvm/Makefile b/arch/mips/kvm/Makefile
index 45d90f5d5177..01affc1d21c5 100644
--- a/arch/mips/kvm/Makefile
+++ b/arch/mips/kvm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for KVM support for MIPS
#
diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c
index bce2a6431430..d535edc01434 100644
--- a/arch/mips/kvm/mips.c
+++ b/arch/mips/kvm/mips.c
@@ -514,7 +514,7 @@ int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu,
dvcpu->arch.wait = 0;
- if (swait_active(&dvcpu->wq))
+ if (swq_has_sleeper(&dvcpu->wq))
swake_up(&dvcpu->wq);
return 0;
@@ -1179,7 +1179,7 @@ static void kvm_mips_comparecount_func(unsigned long data)
kvm_mips_callbacks->queue_timer_int(vcpu);
vcpu->arch.wait = 0;
- if (swait_active(&vcpu->wq))
+ if (swq_has_sleeper(&vcpu->wq))
swake_up(&vcpu->wq);
}
diff --git a/arch/mips/lantiq/Kconfig b/arch/mips/lantiq/Kconfig
index 177769dbb0e8..692ae85a3e3d 100644
--- a/arch/mips/lantiq/Kconfig
+++ b/arch/mips/lantiq/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if LANTIQ
config SOC_TYPE_XWAY
@@ -17,6 +18,8 @@ config SOC_XWAY
bool "XWAY"
select SOC_TYPE_XWAY
select HW_HAS_PCI
+ select MFD_SYSCON
+ select MFD_CORE
config SOC_FALCON
bool "FALCON"
diff --git a/arch/mips/lantiq/falcon/reset.c b/arch/mips/lantiq/falcon/reset.c
index 7a535d72f541..058b85578cf7 100644
--- a/arch/mips/lantiq/falcon/reset.c
+++ b/arch/mips/lantiq/falcon/reset.c
@@ -15,27 +15,14 @@
#include <lantiq_soc.h>
-/* CPU0 Reset Source Register */
-#define SYS1_CPU0RS 0x0040
-/* reset cause mask */
-#define CPU0RS_MASK 0x0003
-/* CPU0 Boot Mode Register */
-#define SYS1_BM 0x00a0
-/* boot mode mask */
-#define BM_MASK 0x0005
-
-/* allow platform code to find out what surce we booted from */
+/*
+ * Dummy implementation. Used to allow platform code to find out what
+ * source was booted from
+ */
unsigned char ltq_boot_select(void)
{
- return ltq_sys1_r32(SYS1_BM) & BM_MASK;
-}
-
-/* allow the watchdog driver to find out what the boot reason was */
-int ltq_reset_cause(void)
-{
- return ltq_sys1_r32(SYS1_CPU0RS) & CPU0RS_MASK;
+ return BS_SPI;
}
-EXPORT_SYMBOL_GPL(ltq_reset_cause);
#define BOOT_REG_BASE (KSEG1 | 0x1F200000)
#define BOOT_PW1_REG (BOOT_REG_BASE | 0x20)
diff --git a/arch/mips/lantiq/irq.c b/arch/mips/lantiq/irq.c
index 33728b7af426..f0bc3312ed11 100644
--- a/arch/mips/lantiq/irq.c
+++ b/arch/mips/lantiq/irq.c
@@ -61,10 +61,6 @@
/* we have a cascade of 8 irqs */
#define MIPS_CPU_IRQ_CASCADE 8
-#ifdef CONFIG_MIPS_MT_SMP
-int gic_present;
-#endif
-
static int exin_avail;
static u32 ltq_eiu_irq[MAX_EIU];
static void __iomem *ltq_icu_membase[MAX_IM];
diff --git a/arch/mips/lantiq/prom.c b/arch/mips/lantiq/prom.c
index 96773bed8a8a..9ff7ccde9de0 100644
--- a/arch/mips/lantiq/prom.c
+++ b/arch/mips/lantiq/prom.c
@@ -117,7 +117,7 @@ void __init prom_init(void)
int __init plat_of_setup(void)
{
- return __dt_register_buses(soc_info.compatible, "simple-bus");
+ return of_platform_default_populate(NULL, NULL, NULL);
}
arch_initcall(plat_of_setup);
diff --git a/arch/mips/lantiq/xway/Makefile b/arch/mips/lantiq/xway/Makefile
index a2edc538f477..fbb0747c70b7 100644
--- a/arch/mips/lantiq/xway/Makefile
+++ b/arch/mips/lantiq/xway/Makefile
@@ -1,5 +1,3 @@
-obj-y := prom.o sysctrl.o clk.o reset.o dma.o gptu.o dcdc.o
+obj-y := prom.o sysctrl.o clk.o dma.o gptu.o dcdc.o
obj-y += vmmc.o
-
-obj-$(CONFIG_XRX200_PHY_FW) += xrx200_phy_fw.o
diff --git a/arch/mips/lantiq/xway/reset.c b/arch/mips/lantiq/xway/reset.c
deleted file mode 100644
index 83fd65d76e81..000000000000
--- a/arch/mips/lantiq/xway/reset.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published
- * by the Free Software Foundation.
- *
- * Copyright (C) 2010 John Crispin <john@phrozen.org>
- * Copyright (C) 2013-2015 Lantiq Beteiligungs-GmbH & Co.KG
- */
-
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/ioport.h>
-#include <linux/pm.h>
-#include <linux/export.h>
-#include <linux/delay.h>
-#include <linux/of_address.h>
-#include <linux/of_platform.h>
-#include <linux/reset-controller.h>
-
-#include <asm/reboot.h>
-
-#include <lantiq_soc.h>
-
-#include "../prom.h"
-
-/* reset request register */
-#define RCU_RST_REQ 0x0010
-/* reset status register */
-#define RCU_RST_STAT 0x0014
-/* vr9 gphy registers */
-#define RCU_GFS_ADD0_XRX200 0x0020
-#define RCU_GFS_ADD1_XRX200 0x0068
-/* xRX300 gphy registers */
-#define RCU_GFS_ADD0_XRX300 0x0020
-#define RCU_GFS_ADD1_XRX300 0x0058
-#define RCU_GFS_ADD2_XRX300 0x00AC
-/* xRX330 gphy registers */
-#define RCU_GFS_ADD0_XRX330 0x0020
-#define RCU_GFS_ADD1_XRX330 0x0058
-#define RCU_GFS_ADD2_XRX330 0x00AC
-#define RCU_GFS_ADD3_XRX330 0x0264
-
-/* xbar BE flag */
-#define RCU_AHB_ENDIAN 0x004C
-#define RCU_VR9_BE_AHB1S 0x00000008
-
-/* reboot bit */
-#define RCU_RD_GPHY0_XRX200 BIT(31)
-#define RCU_RD_SRST BIT(30)
-#define RCU_RD_GPHY1_XRX200 BIT(29)
-/* xRX300 bits */
-#define RCU_RD_GPHY0_XRX300 BIT(31)
-#define RCU_RD_GPHY1_XRX300 BIT(29)
-#define RCU_RD_GPHY2_XRX300 BIT(28)
-/* xRX330 bits */
-#define RCU_RD_GPHY0_XRX330 BIT(31)
-#define RCU_RD_GPHY1_XRX330 BIT(29)
-#define RCU_RD_GPHY2_XRX330 BIT(28)
-#define RCU_RD_GPHY3_XRX330 BIT(10)
-
-/* reset cause */
-#define RCU_STAT_SHIFT 26
-/* boot selection */
-#define RCU_BOOT_SEL(x) ((x >> 18) & 0x7)
-#define RCU_BOOT_SEL_XRX200(x) (((x >> 17) & 0xf) | ((x >> 8) & 0x10))
-
-/* dwc2 USB configuration registers */
-#define RCU_USB1CFG 0x0018
-#define RCU_USB2CFG 0x0034
-
-/* USB DMA endianness bits */
-#define RCU_USBCFG_HDSEL_BIT BIT(11)
-#define RCU_USBCFG_HOST_END_BIT BIT(10)
-#define RCU_USBCFG_SLV_END_BIT BIT(9)
-
-/* USB reset bits */
-#define RCU_USBRESET 0x0010
-
-#define USBRESET_BIT BIT(4)
-
-#define RCU_USBRESET2 0x0048
-
-#define USB1RESET_BIT BIT(4)
-#define USB2RESET_BIT BIT(5)
-
-#define RCU_CFG1A 0x0038
-#define RCU_CFG1B 0x003C
-
-/* USB PMU devices */
-#define PMU_AHBM BIT(15)
-#define PMU_USB0 BIT(6)
-#define PMU_USB1 BIT(27)
-
-/* USB PHY PMU devices */
-#define PMU_USB0_P BIT(0)
-#define PMU_USB1_P BIT(26)
-
-/* remapped base addr of the reset control unit */
-static void __iomem *ltq_rcu_membase;
-static struct device_node *ltq_rcu_np;
-static DEFINE_SPINLOCK(ltq_rcu_lock);
-
-static void ltq_rcu_w32(uint32_t val, uint32_t reg_off)
-{
- ltq_w32(val, ltq_rcu_membase + reg_off);
-}
-
-static uint32_t ltq_rcu_r32(uint32_t reg_off)
-{
- return ltq_r32(ltq_rcu_membase + reg_off);
-}
-
-static void ltq_rcu_w32_mask(uint32_t clr, uint32_t set, uint32_t reg_off)
-{
- unsigned long flags;
-
- spin_lock_irqsave(&ltq_rcu_lock, flags);
- ltq_rcu_w32((ltq_rcu_r32(reg_off) & ~(clr)) | (set), reg_off);
- spin_unlock_irqrestore(&ltq_rcu_lock, flags);
-}
-
-/* This function is used by the watchdog driver */
-int ltq_reset_cause(void)
-{
- u32 val = ltq_rcu_r32(RCU_RST_STAT);
- return val >> RCU_STAT_SHIFT;
-}
-EXPORT_SYMBOL_GPL(ltq_reset_cause);
-
-/* allow platform code to find out what source we booted from */
-unsigned char ltq_boot_select(void)
-{
- u32 val = ltq_rcu_r32(RCU_RST_STAT);
-
- if (of_device_is_compatible(ltq_rcu_np, "lantiq,rcu-xrx200"))
- return RCU_BOOT_SEL_XRX200(val);
-
- return RCU_BOOT_SEL(val);
-}
-
-struct ltq_gphy_reset {
- u32 rd;
- u32 addr;
-};
-
-/* reset / boot a gphy */
-static struct ltq_gphy_reset xrx200_gphy[] = {
- {RCU_RD_GPHY0_XRX200, RCU_GFS_ADD0_XRX200},
- {RCU_RD_GPHY1_XRX200, RCU_GFS_ADD1_XRX200},
-};
-
-/* reset / boot a gphy */
-static struct ltq_gphy_reset xrx300_gphy[] = {
- {RCU_RD_GPHY0_XRX300, RCU_GFS_ADD0_XRX300},
- {RCU_RD_GPHY1_XRX300, RCU_GFS_ADD1_XRX300},
- {RCU_RD_GPHY2_XRX300, RCU_GFS_ADD2_XRX300},
-};
-
-/* reset / boot a gphy */
-static struct ltq_gphy_reset xrx330_gphy[] = {
- {RCU_RD_GPHY0_XRX330, RCU_GFS_ADD0_XRX330},
- {RCU_RD_GPHY1_XRX330, RCU_GFS_ADD1_XRX330},
- {RCU_RD_GPHY2_XRX330, RCU_GFS_ADD2_XRX330},
- {RCU_RD_GPHY3_XRX330, RCU_GFS_ADD3_XRX330},
-};
-
-static void xrx200_gphy_boot_addr(struct ltq_gphy_reset *phy_regs,
- dma_addr_t dev_addr)
-{
- ltq_rcu_w32_mask(0, phy_regs->rd, RCU_RST_REQ);
- ltq_rcu_w32(dev_addr, phy_regs->addr);
- ltq_rcu_w32_mask(phy_regs->rd, 0, RCU_RST_REQ);
-}
-
-/* reset and boot a gphy. these phys only exist on xrx200 SoC */
-int xrx200_gphy_boot(struct device *dev, unsigned int id, dma_addr_t dev_addr)
-{
- struct clk *clk;
-
- if (!of_device_is_compatible(ltq_rcu_np, "lantiq,rcu-xrx200")) {
- dev_err(dev, "this SoC has no GPHY\n");
- return -EINVAL;
- }
-
- if (of_machine_is_compatible("lantiq,vr9")) {
- clk = clk_get_sys("1f203000.rcu", "gphy");
- if (IS_ERR(clk))
- return PTR_ERR(clk);
- clk_enable(clk);
- }
-
- dev_info(dev, "booting GPHY%u firmware at %X\n", id, dev_addr);
-
- if (of_machine_is_compatible("lantiq,vr9")) {
- if (id >= ARRAY_SIZE(xrx200_gphy)) {
- dev_err(dev, "%u is an invalid gphy id\n", id);
- return -EINVAL;
- }
- xrx200_gphy_boot_addr(&xrx200_gphy[id], dev_addr);
- } else if (of_machine_is_compatible("lantiq,ar10")) {
- if (id >= ARRAY_SIZE(xrx300_gphy)) {
- dev_err(dev, "%u is an invalid gphy id\n", id);
- return -EINVAL;
- }
- xrx200_gphy_boot_addr(&xrx300_gphy[id], dev_addr);
- } else if (of_machine_is_compatible("lantiq,grx390")) {
- if (id >= ARRAY_SIZE(xrx330_gphy)) {
- dev_err(dev, "%u is an invalid gphy id\n", id);
- return -EINVAL;
- }
- xrx200_gphy_boot_addr(&xrx330_gphy[id], dev_addr);
- }
- return 0;
-}
-
-/* reset a io domain for u micro seconds */
-void ltq_reset_once(unsigned int module, ulong u)
-{
- ltq_rcu_w32(ltq_rcu_r32(RCU_RST_REQ) | module, RCU_RST_REQ);
- udelay(u);
- ltq_rcu_w32(ltq_rcu_r32(RCU_RST_REQ) & ~module, RCU_RST_REQ);
-}
-
-static int ltq_assert_device(struct reset_controller_dev *rcdev,
- unsigned long id)
-{
- u32 val;
-
- if (id < 8)
- return -1;
-
- val = ltq_rcu_r32(RCU_RST_REQ);
- val |= BIT(id);
- ltq_rcu_w32(val, RCU_RST_REQ);
-
- return 0;
-}
-
-static int ltq_deassert_device(struct reset_controller_dev *rcdev,
- unsigned long id)
-{
- u32 val;
-
- if (id < 8)
- return -1;
-
- val = ltq_rcu_r32(RCU_RST_REQ);
- val &= ~BIT(id);
- ltq_rcu_w32(val, RCU_RST_REQ);
-
- return 0;
-}
-
-static int ltq_reset_device(struct reset_controller_dev *rcdev,
- unsigned long id)
-{
- ltq_assert_device(rcdev, id);
- return ltq_deassert_device(rcdev, id);
-}
-
-static const struct reset_control_ops reset_ops = {
- .reset = ltq_reset_device,
- .assert = ltq_assert_device,
- .deassert = ltq_deassert_device,
-};
-
-static struct reset_controller_dev reset_dev = {
- .ops = &reset_ops,
- .owner = THIS_MODULE,
- .nr_resets = 32,
- .of_reset_n_cells = 1,
-};
-
-void ltq_rst_init(void)
-{
- reset_dev.of_node = of_find_compatible_node(NULL, NULL,
- "lantiq,xway-reset");
- if (!reset_dev.of_node)
- pr_err("Failed to find reset controller node");
- else
- reset_controller_register(&reset_dev);
-}
-
-static void ltq_machine_restart(char *command)
-{
- u32 val = ltq_rcu_r32(RCU_RST_REQ);
-
- if (of_device_is_compatible(ltq_rcu_np, "lantiq,rcu-xrx200"))
- val |= RCU_RD_GPHY1_XRX200 | RCU_RD_GPHY0_XRX200;
-
- val |= RCU_RD_SRST;
-
- local_irq_disable();
- ltq_rcu_w32(val, RCU_RST_REQ);
- unreachable();
-}
-
-static void ltq_machine_halt(void)
-{
- local_irq_disable();
- unreachable();
-}
-
-static void ltq_machine_power_off(void)
-{
- local_irq_disable();
- unreachable();
-}
-
-static void ltq_usb_init(void)
-{
- /* Power for USB cores 1 & 2 */
- ltq_pmu_enable(PMU_AHBM);
- ltq_pmu_enable(PMU_USB0);
- ltq_pmu_enable(PMU_USB1);
-
- ltq_rcu_w32(ltq_rcu_r32(RCU_CFG1A) | BIT(0), RCU_CFG1A);
- ltq_rcu_w32(ltq_rcu_r32(RCU_CFG1B) | BIT(0), RCU_CFG1B);
-
- /* Enable USB PHY power for cores 1 & 2 */
- ltq_pmu_enable(PMU_USB0_P);
- ltq_pmu_enable(PMU_USB1_P);
-
- /* Configure cores to host mode */
- ltq_rcu_w32(ltq_rcu_r32(RCU_USB1CFG) & ~RCU_USBCFG_HDSEL_BIT,
- RCU_USB1CFG);
- ltq_rcu_w32(ltq_rcu_r32(RCU_USB2CFG) & ~RCU_USBCFG_HDSEL_BIT,
- RCU_USB2CFG);
-
- /* Select DMA endianness (Host-endian: big-endian) */
- ltq_rcu_w32((ltq_rcu_r32(RCU_USB1CFG) & ~RCU_USBCFG_SLV_END_BIT)
- | RCU_USBCFG_HOST_END_BIT, RCU_USB1CFG);
- ltq_rcu_w32(ltq_rcu_r32((RCU_USB2CFG) & ~RCU_USBCFG_SLV_END_BIT)
- | RCU_USBCFG_HOST_END_BIT, RCU_USB2CFG);
-
- /* Hard reset USB state machines */
- ltq_rcu_w32(ltq_rcu_r32(RCU_USBRESET) | USBRESET_BIT, RCU_USBRESET);
- udelay(50 * 1000);
- ltq_rcu_w32(ltq_rcu_r32(RCU_USBRESET) & ~USBRESET_BIT, RCU_USBRESET);
-
- /* Soft reset USB state machines */
- ltq_rcu_w32(ltq_rcu_r32(RCU_USBRESET2)
- | USB1RESET_BIT | USB2RESET_BIT, RCU_USBRESET2);
- udelay(50 * 1000);
- ltq_rcu_w32(ltq_rcu_r32(RCU_USBRESET2)
- & ~(USB1RESET_BIT | USB2RESET_BIT), RCU_USBRESET2);
-}
-
-static int __init mips_reboot_setup(void)
-{
- struct resource res;
-
- ltq_rcu_np = of_find_compatible_node(NULL, NULL, "lantiq,rcu-xway");
- if (!ltq_rcu_np)
- ltq_rcu_np = of_find_compatible_node(NULL, NULL,
- "lantiq,rcu-xrx200");
-
- /* check if all the reset register range is available */
- if (!ltq_rcu_np)
- panic("Failed to load reset resources from devicetree");
-
- if (of_address_to_resource(ltq_rcu_np, 0, &res))
- panic("Failed to get rcu memory range");
-
- if (!request_mem_region(res.start, resource_size(&res), res.name))
- pr_err("Failed to request rcu memory");
-
- ltq_rcu_membase = ioremap_nocache(res.start, resource_size(&res));
- if (!ltq_rcu_membase)
- panic("Failed to remap core memory");
-
- if (of_machine_is_compatible("lantiq,ar9") ||
- of_machine_is_compatible("lantiq,vr9"))
- ltq_usb_init();
-
- if (of_machine_is_compatible("lantiq,vr9"))
- ltq_rcu_w32(ltq_rcu_r32(RCU_AHB_ENDIAN) | RCU_VR9_BE_AHB1S,
- RCU_AHB_ENDIAN);
-
- _machine_restart = ltq_machine_restart;
- _machine_halt = ltq_machine_halt;
- pm_power_off = ltq_machine_power_off;
-
- return 0;
-}
-
-arch_initcall(mips_reboot_setup);
diff --git a/arch/mips/lantiq/xway/sysctrl.c b/arch/mips/lantiq/xway/sysctrl.c
index 95bec460b651..7611c3013793 100644
--- a/arch/mips/lantiq/xway/sysctrl.c
+++ b/arch/mips/lantiq/xway/sysctrl.c
@@ -145,15 +145,7 @@ static u32 pmu_clk_cr_b[] = {
#define pmu_w32(x, y) ltq_w32((x), pmu_membase + (y))
#define pmu_r32(x) ltq_r32(pmu_membase + (x))
-#define XBAR_ALWAYS_LAST 0x430
-#define XBAR_FPI_BURST_EN BIT(1)
-#define XBAR_AHB_BURST_EN BIT(2)
-
-#define xbar_w32(x, y) ltq_w32((x), ltq_xbar_membase + (y))
-#define xbar_r32(x) ltq_r32(ltq_xbar_membase + (x))
-
static void __iomem *pmu_membase;
-static void __iomem *ltq_xbar_membase;
void __iomem *ltq_cgu_membase;
void __iomem *ltq_ebu_membase;
@@ -293,16 +285,6 @@ static void pci_ext_disable(struct clk *clk)
ltq_cgu_w32((1 << 31) | (1 << 30), pcicr);
}
-static void xbar_fpi_burst_disable(void)
-{
- u32 reg;
-
- /* bit 1 as 1 --burst; bit 1 as 0 -- single */
- reg = xbar_r32(XBAR_ALWAYS_LAST);
- reg &= ~XBAR_FPI_BURST_EN;
- xbar_w32(reg, XBAR_ALWAYS_LAST);
-}
-
/* enable a clockout source */
static int clkout_enable(struct clk *clk)
{
@@ -459,26 +441,6 @@ void __init ltq_soc_init(void)
if (!pmu_membase || !ltq_cgu_membase || !ltq_ebu_membase)
panic("Failed to remap core resources");
- if (of_machine_is_compatible("lantiq,vr9")) {
- struct resource res_xbar;
- struct device_node *np_xbar =
- of_find_compatible_node(NULL, NULL,
- "lantiq,xbar-xway");
-
- if (!np_xbar)
- panic("Failed to load xbar nodes from devicetree");
- if (of_address_to_resource(np_xbar, 0, &res_xbar))
- panic("Failed to get xbar resources");
- if (!request_mem_region(res_xbar.start, resource_size(&res_xbar),
- res_xbar.name))
- panic("Failed to get xbar resources");
-
- ltq_xbar_membase = ioremap_nocache(res_xbar.start,
- resource_size(&res_xbar));
- if (!ltq_xbar_membase)
- panic("Failed to remap xbar resources");
- }
-
/* make sure to unprotect the memory region where flash is located */
ltq_ebu_w32(ltq_ebu_r32(LTQ_EBU_BUSCON0) & ~EBU_WRDIS, LTQ_EBU_BUSCON0);
@@ -507,8 +469,8 @@ void __init ltq_soc_init(void)
if (of_machine_is_compatible("lantiq,grx390") ||
of_machine_is_compatible("lantiq,ar10")) {
- clkdev_add_pmu("1e101000.usb", "phy", 1, 2, PMU_ANALOG_USB0_P);
- clkdev_add_pmu("1e106000.usb", "phy", 1, 2, PMU_ANALOG_USB1_P);
+ clkdev_add_pmu("1f203018.usb2-phy", "phy", 1, 2, PMU_ANALOG_USB0_P);
+ clkdev_add_pmu("1f203034.usb2-phy", "phy", 1, 2, PMU_ANALOG_USB1_P);
/* rc 0 */
clkdev_add_pmu("1d900000.pcie", "phy", 1, 2, PMU_ANALOG_PCIE0_P);
clkdev_add_pmu("1d900000.pcie", "msi", 1, 1, PMU1_PCIE_MSI);
@@ -528,8 +490,8 @@ void __init ltq_soc_init(void)
else
clkdev_add_static(CLOCK_133M, CLOCK_133M,
CLOCK_133M, CLOCK_133M);
- clkdev_add_pmu("1e101000.usb", "ctl", 1, 0, PMU_USB0);
- clkdev_add_pmu("1e101000.usb", "phy", 1, 0, PMU_USB0_P);
+ clkdev_add_pmu("1e101000.usb", "otg", 1, 0, PMU_USB0);
+ clkdev_add_pmu("1f203018.usb2-phy", "phy", 1, 0, PMU_USB0_P);
clkdev_add_pmu("1e180000.etop", "ppe", 1, 0, PMU_PPE);
clkdev_add_cgu("1e180000.etop", "ephycgu", CGU_EPHY);
clkdev_add_pmu("1e180000.etop", "ephy", 1, 0, PMU_EPHY);
@@ -538,8 +500,8 @@ void __init ltq_soc_init(void)
} else if (of_machine_is_compatible("lantiq,grx390")) {
clkdev_add_static(ltq_grx390_cpu_hz(), ltq_grx390_fpi_hz(),
ltq_grx390_fpi_hz(), ltq_grx390_pp32_hz());
- clkdev_add_pmu("1e101000.usb", "ctl", 1, 0, PMU_USB0);
- clkdev_add_pmu("1e106000.usb", "ctl", 1, 0, PMU_USB1);
+ clkdev_add_pmu("1e101000.usb", "otg", 1, 0, PMU_USB0);
+ clkdev_add_pmu("1e106000.usb", "otg", 1, 0, PMU_USB1);
/* rc 2 */
clkdev_add_pmu("1a800000.pcie", "phy", 1, 2, PMU_ANALOG_PCIE2_P);
clkdev_add_pmu("1a800000.pcie", "msi", 1, 1, PMU1_PCIE2_MSI);
@@ -551,22 +513,23 @@ void __init ltq_soc_init(void)
} else if (of_machine_is_compatible("lantiq,ar10")) {
clkdev_add_static(ltq_ar10_cpu_hz(), ltq_ar10_fpi_hz(),
ltq_ar10_fpi_hz(), ltq_ar10_pp32_hz());
- clkdev_add_pmu("1e101000.usb", "ctl", 1, 0, PMU_USB0);
- clkdev_add_pmu("1e106000.usb", "ctl", 1, 0, PMU_USB1);
+ clkdev_add_pmu("1e101000.usb", "otg", 1, 0, PMU_USB0);
+ clkdev_add_pmu("1e106000.usb", "otg", 1, 0, PMU_USB1);
clkdev_add_pmu("1e108000.eth", NULL, 0, 0, PMU_SWITCH |
PMU_PPE_DP | PMU_PPE_TC);
clkdev_add_pmu("1da00000.usif", "NULL", 1, 0, PMU_USIF);
- clkdev_add_pmu("1f203000.rcu", "gphy", 1, 0, PMU_GPHY);
+ clkdev_add_pmu("1f203020.gphy", NULL, 1, 0, PMU_GPHY);
+ clkdev_add_pmu("1f203068.gphy", NULL, 1, 0, PMU_GPHY);
clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU);
clkdev_add_pmu("1e116000.mei", "afe", 1, 2, PMU_ANALOG_DSL_AFE);
clkdev_add_pmu("1e116000.mei", "dfe", 1, 0, PMU_DFE);
} else if (of_machine_is_compatible("lantiq,vr9")) {
clkdev_add_static(ltq_vr9_cpu_hz(), ltq_vr9_fpi_hz(),
ltq_vr9_fpi_hz(), ltq_vr9_pp32_hz());
- clkdev_add_pmu("1e101000.usb", "phy", 1, 0, PMU_USB0_P);
- clkdev_add_pmu("1e101000.usb", "ctl", 1, 0, PMU_USB0 | PMU_AHBM);
- clkdev_add_pmu("1e106000.usb", "phy", 1, 0, PMU_USB1_P);
- clkdev_add_pmu("1e106000.usb", "ctl", 1, 0, PMU_USB1 | PMU_AHBM);
+ clkdev_add_pmu("1f203018.usb2-phy", "phy", 1, 0, PMU_USB0_P);
+ clkdev_add_pmu("1e101000.usb", "otg", 1, 0, PMU_USB0 | PMU_AHBM);
+ clkdev_add_pmu("1f203034.usb2-phy", "phy", 1, 0, PMU_USB1_P);
+ clkdev_add_pmu("1e106000.usb", "otg", 1, 0, PMU_USB1 | PMU_AHBM);
clkdev_add_pmu("1d900000.pcie", "phy", 1, 1, PMU1_PCIE_PHY);
clkdev_add_pmu("1d900000.pcie", "bus", 1, 0, PMU_PCIE_CLK);
clkdev_add_pmu("1d900000.pcie", "msi", 1, 1, PMU1_PCIE_MSI);
@@ -579,17 +542,18 @@ void __init ltq_soc_init(void)
PMU_SWITCH | PMU_PPE_DPLUS | PMU_PPE_DPLUM |
PMU_PPE_EMA | PMU_PPE_TC | PMU_PPE_SLL01 |
PMU_PPE_QSB | PMU_PPE_TOP);
- clkdev_add_pmu("1f203000.rcu", "gphy", 0, 0, PMU_GPHY);
+ clkdev_add_pmu("1f203020.gphy", NULL, 0, 0, PMU_GPHY);
+ clkdev_add_pmu("1f203068.gphy", NULL, 0, 0, PMU_GPHY);
clkdev_add_pmu("1e103000.sdio", NULL, 1, 0, PMU_SDIO);
clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU);
clkdev_add_pmu("1e116000.mei", "dfe", 1, 0, PMU_DFE);
} else if (of_machine_is_compatible("lantiq,ar9")) {
clkdev_add_static(ltq_ar9_cpu_hz(), ltq_ar9_fpi_hz(),
ltq_ar9_fpi_hz(), CLOCK_250M);
- clkdev_add_pmu("1e101000.usb", "ctl", 1, 0, PMU_USB0);
- clkdev_add_pmu("1e101000.usb", "phy", 1, 0, PMU_USB0_P);
- clkdev_add_pmu("1e106000.usb", "ctl", 1, 0, PMU_USB1);
- clkdev_add_pmu("1e106000.usb", "phy", 1, 0, PMU_USB1_P);
+ clkdev_add_pmu("1f203018.usb2-phy", "phy", 1, 0, PMU_USB0_P);
+ clkdev_add_pmu("1e101000.usb", "otg", 1, 0, PMU_USB0);
+ clkdev_add_pmu("1f203034.usb2-phy", "phy", 1, 0, PMU_USB1_P);
+ clkdev_add_pmu("1e106000.usb", "otg", 1, 0, PMU_USB1);
clkdev_add_pmu("1e180000.etop", "switch", 1, 0, PMU_SWITCH);
clkdev_add_pmu("1e103000.sdio", NULL, 1, 0, PMU_SDIO);
clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU);
@@ -598,14 +562,11 @@ void __init ltq_soc_init(void)
} else {
clkdev_add_static(ltq_danube_cpu_hz(), ltq_danube_fpi_hz(),
ltq_danube_fpi_hz(), ltq_danube_pp32_hz());
- clkdev_add_pmu("1e101000.usb", "ctl", 1, 0, PMU_USB0);
- clkdev_add_pmu("1e101000.usb", "phy", 1, 0, PMU_USB0_P);
+ clkdev_add_pmu("1f203018.usb2-phy", "ctrl", 1, 0, PMU_USB0);
+ clkdev_add_pmu("1f203018.usb2-phy", "phy", 1, 0, PMU_USB0_P);
clkdev_add_pmu("1e103000.sdio", NULL, 1, 0, PMU_SDIO);
clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU);
clkdev_add_pmu("1e116000.mei", "dfe", 1, 0, PMU_DFE);
clkdev_add_pmu("1e100400.serial", NULL, 1, 0, PMU_ASC0);
}
-
- if (of_machine_is_compatible("lantiq,vr9"))
- xbar_fpi_burst_disable();
}
diff --git a/arch/mips/lantiq/xway/xrx200_phy_fw.c b/arch/mips/lantiq/xway/xrx200_phy_fw.c
deleted file mode 100644
index f0a0f2d431b2..000000000000
--- a/arch/mips/lantiq/xway/xrx200_phy_fw.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Lantiq XRX200 PHY Firmware Loader
- * Author: John Crispin
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published
- * by the Free Software Foundation.
- *
- * Copyright (C) 2012 John Crispin <john@phrozen.org>
- */
-
-#include <linux/delay.h>
-#include <linux/dma-mapping.h>
-#include <linux/firmware.h>
-#include <linux/of_platform.h>
-
-#include <lantiq_soc.h>
-
-#define XRX200_GPHY_FW_ALIGN (16 * 1024)
-
-static dma_addr_t xway_gphy_load(struct platform_device *pdev)
-{
- const struct firmware *fw;
- dma_addr_t dev_addr = 0;
- const char *fw_name;
- void *fw_addr;
- size_t size;
-
- if (of_get_property(pdev->dev.of_node, "firmware1", NULL) ||
- of_get_property(pdev->dev.of_node, "firmware2", NULL)) {
- switch (ltq_soc_type()) {
- case SOC_TYPE_VR9:
- if (of_property_read_string(pdev->dev.of_node,
- "firmware1", &fw_name)) {
- dev_err(&pdev->dev,
- "failed to load firmware filename\n");
- return 0;
- }
- break;
- case SOC_TYPE_VR9_2:
- if (of_property_read_string(pdev->dev.of_node,
- "firmware2", &fw_name)) {
- dev_err(&pdev->dev,
- "failed to load firmware filename\n");
- return 0;
- }
- break;
- }
- } else if (of_property_read_string(pdev->dev.of_node,
- "firmware", &fw_name)) {
- dev_err(&pdev->dev, "failed to load firmware filename\n");
- return 0;
- }
-
- dev_info(&pdev->dev, "requesting %s\n", fw_name);
- if (request_firmware(&fw, fw_name, &pdev->dev)) {
- dev_err(&pdev->dev, "failed to load firmware: %s\n", fw_name);
- return 0;
- }
-
- /*
- * GPHY cores need the firmware code in a persistent and contiguous
- * memory area with a 16 kB boundary aligned start address
- */
- size = fw->size + XRX200_GPHY_FW_ALIGN;
-
- fw_addr = dma_alloc_coherent(&pdev->dev, size, &dev_addr, GFP_KERNEL);
- if (fw_addr) {
- fw_addr = PTR_ALIGN(fw_addr, XRX200_GPHY_FW_ALIGN);
- dev_addr = ALIGN(dev_addr, XRX200_GPHY_FW_ALIGN);
- memcpy(fw_addr, fw->data, fw->size);
- } else {
- dev_err(&pdev->dev, "failed to alloc firmware memory\n");
- }
-
- release_firmware(fw);
- return dev_addr;
-}
-
-static int xway_phy_fw_probe(struct platform_device *pdev)
-{
- dma_addr_t fw_addr;
- struct property *pp;
- unsigned char *phyids;
- int i, ret = 0;
-
- fw_addr = xway_gphy_load(pdev);
- if (!fw_addr)
- return -EINVAL;
- pp = of_find_property(pdev->dev.of_node, "phys", NULL);
- if (!pp)
- return -ENOENT;
- phyids = pp->value;
- for (i = 0; i < pp->length && !ret; i++)
- ret = xrx200_gphy_boot(&pdev->dev, phyids[i], fw_addr);
- if (!ret)
- mdelay(100);
- return ret;
-}
-
-static const struct of_device_id xway_phy_match[] = {
- { .compatible = "lantiq,phy-xrx200" },
- {},
-};
-
-static struct platform_driver xway_phy_driver = {
- .probe = xway_phy_fw_probe,
- .driver = {
- .name = "phy-xrx200",
- .of_match_table = xway_phy_match,
- },
-};
-builtin_platform_driver(xway_phy_driver);
diff --git a/arch/mips/lasat/Kconfig b/arch/mips/lasat/Kconfig
index 8776d0a34274..11b89e94b835 100644
--- a/arch/mips/lasat/Kconfig
+++ b/arch/mips/lasat/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PICVUE
tristate "PICVUE LCD display driver"
depends on LASAT
diff --git a/arch/mips/lasat/Makefile b/arch/mips/lasat/Makefile
index 869bd3b37c17..1789b227ef20 100644
--- a/arch/mips/lasat/Makefile
+++ b/arch/mips/lasat/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the LASAT specific kernel interface routines under Linux.
#
diff --git a/arch/mips/lasat/at93c.c b/arch/mips/lasat/at93c.c
index 4e272a2622a4..f895fe94b937 100644
--- a/arch/mips/lasat/at93c.c
+++ b/arch/mips/lasat/at93c.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Atmel AT93C46 serial eeprom driver
*
diff --git a/arch/mips/lasat/at93c.h b/arch/mips/lasat/at93c.h
index cfe2f99b1d44..7a99a02d81d0 100644
--- a/arch/mips/lasat/at93c.h
+++ b/arch/mips/lasat/at93c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Atmel AT93C46 serial eeprom driver
*
diff --git a/arch/mips/lasat/ds1603.c b/arch/mips/lasat/ds1603.c
index c6fd96ff118d..8bd5cf820eed 100644
--- a/arch/mips/lasat/ds1603.c
+++ b/arch/mips/lasat/ds1603.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Dallas Semiconductors 1603 RTC driver
*
diff --git a/arch/mips/lasat/ds1603.h b/arch/mips/lasat/ds1603.h
index 3e718b1cca02..00987d3bdc21 100644
--- a/arch/mips/lasat/ds1603.h
+++ b/arch/mips/lasat/ds1603.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Dallas Semiconductors 1603 RTC driver
*
diff --git a/arch/mips/lasat/image/Makefile b/arch/mips/lasat/image/Makefile
index fd32075679c6..9ab1326f57c9 100644
--- a/arch/mips/lasat/image/Makefile
+++ b/arch/mips/lasat/image/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# MAKEFILE FOR THE MIPS LINUX BOOTLOADER AND ROM DEBUGGER
#
diff --git a/arch/mips/lasat/image/head.S b/arch/mips/lasat/image/head.S
index 41babbe43a8e..1a27312d4c2e 100644
--- a/arch/mips/lasat/image/head.S
+++ b/arch/mips/lasat/image/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/lasat/head.h>
.text
diff --git a/arch/mips/lasat/lasat_models.h b/arch/mips/lasat/lasat_models.h
index e1cbd26ae1b3..474e57342484 100644
--- a/arch/mips/lasat/lasat_models.h
+++ b/arch/mips/lasat/lasat_models.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Model description tables
*/
diff --git a/arch/mips/lasat/picvue.h b/arch/mips/lasat/picvue.h
index d0119fca3862..161d3bf50811 100644
--- a/arch/mips/lasat/picvue.h
+++ b/arch/mips/lasat/picvue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Picvue PVC160206 display driver
*
diff --git a/arch/mips/lasat/prom.c b/arch/mips/lasat/prom.c
index 20fde19a5fbf..17e15b50a551 100644
--- a/arch/mips/lasat/prom.c
+++ b/arch/mips/lasat/prom.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PROM interface routines.
*/
diff --git a/arch/mips/lasat/prom.h b/arch/mips/lasat/prom.h
index 337acbc27442..3d1df853e9d3 100644
--- a/arch/mips/lasat/prom.h
+++ b/arch/mips/lasat/prom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PROM_H
#define __PROM_H
diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile
index a37fe3d1ee2f..78c2affeabf8 100644
--- a/arch/mips/lib/Makefile
+++ b/arch/mips/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for MIPS-specific library files..
#
@@ -6,7 +7,7 @@ lib-y += bitops.o csum_partial.o delay.o memcpy.o memset.o \
mips-atomic.o strncpy_user.o \
strnlen_user.o uncached.o
-obj-y += iomap.o
+obj-y += iomap.o iomap_copy.o
obj-$(CONFIG_PCI) += iomap-pci.o
lib-$(CONFIG_GENERIC_CSUM) := $(filter-out csum_partial.o, $(lib-y))
diff --git a/arch/mips/lib/ashldi3.c b/arch/mips/lib/ashldi3.c
index c3e22053d13e..24cd6903e797 100644
--- a/arch/mips/lib/ashldi3.c
+++ b/arch/mips/lib/ashldi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/mips/lib/ashrdi3.c b/arch/mips/lib/ashrdi3.c
index 17456024873d..23f5295af51e 100644
--- a/arch/mips/lib/ashrdi3.c
+++ b/arch/mips/lib/ashrdi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/mips/lib/bswapdi.c b/arch/mips/lib/bswapdi.c
index a8114148f82a..fcef74084492 100644
--- a/arch/mips/lib/bswapdi.c
+++ b/arch/mips/lib/bswapdi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/compiler.h>
diff --git a/arch/mips/lib/bswapsi.c b/arch/mips/lib/bswapsi.c
index 106fd978317d..22d8e4f6d66e 100644
--- a/arch/mips/lib/bswapsi.c
+++ b/arch/mips/lib/bswapsi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/compiler.h>
diff --git a/arch/mips/lib/cmpdi2.c b/arch/mips/lib/cmpdi2.c
index 9d849d8743c9..93cfc785927d 100644
--- a/arch/mips/lib/cmpdi2.c
+++ b/arch/mips/lib/cmpdi2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/mips/lib/delay.c b/arch/mips/lib/delay.c
index 2307a3cb2714..68c495ed71e3 100644
--- a/arch/mips/lib/delay.c
+++ b/arch/mips/lib/delay.c
@@ -8,6 +8,7 @@
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
* Copyright (C) 2007, 2014 Maciej W. Rozycki
*/
+#include <linux/delay.h>
#include <linux/export.h>
#include <linux/param.h>
#include <linux/smp.h>
diff --git a/arch/mips/lib/dump_tlb.c b/arch/mips/lib/dump_tlb.c
index 6eb50a7137db..781ad96b78c4 100644
--- a/arch/mips/lib/dump_tlb.c
+++ b/arch/mips/lib/dump_tlb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Dump R4x00 TLB for debugging purposes.
*
diff --git a/arch/mips/lib/iomap-pci.c b/arch/mips/lib/iomap-pci.c
index 8ed3f25a9047..4850509c5534 100644
--- a/arch/mips/lib/iomap-pci.c
+++ b/arch/mips/lib/iomap-pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Implement the default iomap interfaces
*
diff --git a/arch/mips/lib/iomap.c b/arch/mips/lib/iomap.c
index 9daa92428e23..9b31653f318c 100644
--- a/arch/mips/lib/iomap.c
+++ b/arch/mips/lib/iomap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Implement the default iomap interfaces
*
diff --git a/arch/mips/lib/iomap_copy.c b/arch/mips/lib/iomap_copy.c
new file mode 100644
index 000000000000..368bb38267c5
--- /dev/null
+++ b/arch/mips/lib/iomap_copy.c
@@ -0,0 +1,42 @@
+/*
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU General Public License
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <linux/export.h>
+#include <linux/io.h>
+
+/**
+ * __ioread64_copy - copy data from MMIO space, in 64-bit units
+ * @to: destination (must be 64-bit aligned)
+ * @from: source, in MMIO space (must be 64-bit aligned)
+ * @count: number of 64-bit quantities to copy
+ *
+ * Copy data from MMIO space to kernel space, in units of 32 or 64 bits at a
+ * time. Order of access is not guaranteed, nor is a memory barrier
+ * performed afterwards.
+ */
+void __ioread64_copy(void *to, const void __iomem *from, size_t count)
+{
+#ifdef CONFIG_64BIT
+ u64 *dst = to;
+ const u64 __iomem *src = from;
+ const u64 __iomem *end = src + count;
+
+ while (src < end)
+ *dst++ = __raw_readq(src++);
+#else
+ __ioread32_copy(to, from, count * 2);
+#endif
+}
+EXPORT_SYMBOL_GPL(__ioread64_copy);
diff --git a/arch/mips/lib/libgcc.h b/arch/mips/lib/libgcc.h
index 05909d58e2fe..28002ed90c2c 100644
--- a/arch/mips/lib/libgcc.h
+++ b/arch/mips/lib/libgcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LIBGCC_H
#define __ASM_LIBGCC_H
diff --git a/arch/mips/lib/lshrdi3.c b/arch/mips/lib/lshrdi3.c
index 221167c1be55..914b971aca3b 100644
--- a/arch/mips/lib/lshrdi3.c
+++ b/arch/mips/lib/lshrdi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/mips/lib/r3k_dump_tlb.c b/arch/mips/lib/r3k_dump_tlb.c
index 85b4086e553e..b97d9c5d8323 100644
--- a/arch/mips/lib/r3k_dump_tlb.c
+++ b/arch/mips/lib/r3k_dump_tlb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Dump R3000 TLB for debugging purposes.
*
diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c
index 08067fa538f2..c31c78ca4175 100644
--- a/arch/mips/lib/ucmpdi2.c
+++ b/arch/mips/lib/ucmpdi2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include "libgcc.h"
diff --git a/arch/mips/loongson32/Kconfig b/arch/mips/loongson32/Kconfig
index 3c0c2f2096cd..462b126f45aa 100644
--- a/arch/mips/loongson32/Kconfig
+++ b/arch/mips/loongson32/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if MACH_LOONGSON32
choice
diff --git a/arch/mips/loongson32/common/platform.c b/arch/mips/loongson32/common/platform.c
index 100f23dfa438..ac584c5823d0 100644
--- a/arch/mips/loongson32/common/platform.c
+++ b/arch/mips/loongson32/common/platform.c
@@ -183,18 +183,20 @@ int ls1x_eth_mux_init(struct platform_device *pdev, void *priv)
}
static struct plat_stmmacenet_data ls1x_eth0_pdata = {
- .bus_id = 0,
- .phy_addr = -1,
+ .bus_id = 0,
+ .phy_addr = -1,
#if defined(CONFIG_LOONGSON1_LS1B)
- .interface = PHY_INTERFACE_MODE_MII,
+ .interface = PHY_INTERFACE_MODE_MII,
#elif defined(CONFIG_LOONGSON1_LS1C)
- .interface = PHY_INTERFACE_MODE_RMII,
+ .interface = PHY_INTERFACE_MODE_RMII,
#endif
- .mdio_bus_data = &ls1x_mdio_bus_data,
- .dma_cfg = &ls1x_eth_dma_cfg,
- .has_gmac = 1,
- .tx_coe = 1,
- .init = ls1x_eth_mux_init,
+ .mdio_bus_data = &ls1x_mdio_bus_data,
+ .dma_cfg = &ls1x_eth_dma_cfg,
+ .has_gmac = 1,
+ .tx_coe = 1,
+ .rx_queues_to_use = 1,
+ .tx_queues_to_use = 1,
+ .init = ls1x_eth_mux_init,
};
static struct resource ls1x_eth0_resources[] = {
@@ -222,14 +224,16 @@ struct platform_device ls1x_eth0_pdev = {
#ifdef CONFIG_LOONGSON1_LS1B
static struct plat_stmmacenet_data ls1x_eth1_pdata = {
- .bus_id = 1,
- .phy_addr = -1,
- .interface = PHY_INTERFACE_MODE_MII,
- .mdio_bus_data = &ls1x_mdio_bus_data,
- .dma_cfg = &ls1x_eth_dma_cfg,
- .has_gmac = 1,
- .tx_coe = 1,
- .init = ls1x_eth_mux_init,
+ .bus_id = 1,
+ .phy_addr = -1,
+ .interface = PHY_INTERFACE_MODE_MII,
+ .mdio_bus_data = &ls1x_mdio_bus_data,
+ .dma_cfg = &ls1x_eth_dma_cfg,
+ .has_gmac = 1,
+ .tx_coe = 1,
+ .rx_queues_to_use = 1,
+ .tx_queues_to_use = 1,
+ .init = ls1x_eth_mux_init,
};
static struct resource ls1x_eth1_resources[] = {
diff --git a/arch/mips/loongson64/Kconfig b/arch/mips/loongson64/Kconfig
index 8e6e292675b2..0d249fc3cfe9 100644
--- a/arch/mips/loongson64/Kconfig
+++ b/arch/mips/loongson64/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if MACH_LOONGSON64
choice
diff --git a/arch/mips/loongson64/common/Makefile b/arch/mips/loongson64/common/Makefile
index 074d9cb15cd2..8235ac7eac95 100644
--- a/arch/mips/loongson64/common/Makefile
+++ b/arch/mips/loongson64/common/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for loongson based machines.
#
diff --git a/arch/mips/loongson64/common/dma-swiotlb.c b/arch/mips/loongson64/common/dma-swiotlb.c
index 34486c138206..ef07740cee61 100644
--- a/arch/mips/loongson64/common/dma-swiotlb.c
+++ b/arch/mips/loongson64/common/dma-swiotlb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <linux/init.h>
#include <linux/dma-mapping.h>
diff --git a/arch/mips/loongson64/lemote-2f/clock.c b/arch/mips/loongson64/lemote-2f/clock.c
index a78fb657068c..8281334df9c8 100644
--- a/arch/mips/loongson64/lemote-2f/clock.c
+++ b/arch/mips/loongson64/lemote-2f/clock.c
@@ -80,6 +80,9 @@ EXPORT_SYMBOL(clk_disable);
unsigned long clk_get_rate(struct clk *clk)
{
+ if (!clk)
+ return 0;
+
return (unsigned long)clk->rate;
}
EXPORT_SYMBOL(clk_get_rate);
diff --git a/arch/mips/loongson64/loongson-3/acpi_init.c b/arch/mips/loongson64/loongson-3/acpi_init.c
index dbdad79ead8f..8d7c119ddf91 100644
--- a/arch/mips/loongson64/loongson-3/acpi_init.c
+++ b/arch/mips/loongson64/loongson-3/acpi_init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/io.h>
#include <linux/init.h>
#include <linux/ioport.h>
diff --git a/arch/mips/loongson64/loongson-3/hpet.c b/arch/mips/loongson64/loongson-3/hpet.c
index 4df9d4b7356a..ed15430ad64f 100644
--- a/arch/mips/loongson64/loongson-3/hpet.c
+++ b/arch/mips/loongson64/loongson-3/hpet.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/percpu.h>
diff --git a/arch/mips/loongson64/loongson-3/irq.c b/arch/mips/loongson64/loongson-3/irq.c
index 7202e52cd046..cbeb20f9fc95 100644
--- a/arch/mips/loongson64/loongson-3/irq.c
+++ b/arch/mips/loongson64/loongson-3/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <loongson.h>
#include <irq.h>
#include <linux/interrupt.h>
diff --git a/arch/mips/loongson64/loongson-3/smp.c b/arch/mips/loongson64/loongson-3/smp.c
index b7a355c3c408..8501109bb0f0 100644
--- a/arch/mips/loongson64/loongson-3/smp.c
+++ b/arch/mips/loongson64/loongson-3/smp.c
@@ -319,8 +319,8 @@ static void loongson3_init_secondary(void)
loongson3_ipi_write32(0xffffffff, ipi_en0_regs[cpu_logical_map(i)]);
per_cpu(cpu_state, cpu) = CPU_ONLINE;
- cpu_data[cpu].core =
- cpu_logical_map(cpu) % loongson_sysconf.cores_per_package;
+ cpu_set_core(&cpu_data[cpu],
+ cpu_logical_map(cpu) % loongson_sysconf.cores_per_package);
cpu_data[cpu].package =
cpu_logical_map(cpu) / loongson_sysconf.cores_per_package;
@@ -386,7 +386,8 @@ static void __init loongson3_smp_setup(void)
ipi_status0_regs_init();
ipi_en0_regs_init();
ipi_mailbox_buf_init();
- cpu_data[0].core = cpu_logical_map(0) % loongson_sysconf.cores_per_package;
+ cpu_set_core(&cpu_data[0],
+ cpu_logical_map(0) % loongson_sysconf.cores_per_package);
cpu_data[0].package = cpu_logical_map(0) / loongson_sysconf.cores_per_package;
}
@@ -399,7 +400,7 @@ static void __init loongson3_prepare_cpus(unsigned int max_cpus)
/*
* Setup the PC, SP, and GP of a secondary processor and start it runing!
*/
-static void loongson3_boot_secondary(int cpu, struct task_struct *idle)
+static int loongson3_boot_secondary(int cpu, struct task_struct *idle)
{
unsigned long startargs[4];
@@ -422,6 +423,7 @@ static void loongson3_boot_secondary(int cpu, struct task_struct *idle)
(void *)(ipi_mailbox_buf[cpu_logical_map(cpu)]+0x8));
loongson3_ipi_write64(startargs[0],
(void *)(ipi_mailbox_buf[cpu_logical_map(cpu)]+0x0));
+ return 0;
}
#ifdef CONFIG_HOTPLUG_CPU
@@ -697,7 +699,7 @@ void play_dead(void)
static int loongson3_disable_clock(unsigned int cpu)
{
- uint64_t core_id = cpu_data[cpu].core;
+ uint64_t core_id = cpu_core(&cpu_data[cpu]);
uint64_t package_id = cpu_data[cpu].package;
if ((read_c0_prid() & PRID_REV_MASK) == PRID_REV_LOONGSON3A_R1) {
@@ -711,7 +713,7 @@ static int loongson3_disable_clock(unsigned int cpu)
static int loongson3_enable_clock(unsigned int cpu)
{
- uint64_t core_id = cpu_data[cpu].core;
+ uint64_t core_id = cpu_core(&cpu_data[cpu]);
uint64_t package_id = cpu_data[cpu].package;
if ((read_c0_prid() & PRID_REV_MASK) == PRID_REV_LOONGSON3A_R1) {
@@ -734,7 +736,7 @@ early_initcall(register_loongson3_notifier);
#endif
-struct plat_smp_ops loongson3_smp_ops = {
+const struct plat_smp_ops loongson3_smp_ops = {
.send_ipi_single = loongson3_send_ipi_single,
.send_ipi_mask = loongson3_send_ipi_mask,
.init_secondary = loongson3_init_secondary,
diff --git a/arch/mips/loongson64/loongson-3/smp.h b/arch/mips/loongson64/loongson-3/smp.h
index d98ff654b7d7..957bde81e0e4 100644
--- a/arch/mips/loongson64/loongson-3/smp.h
+++ b/arch/mips/loongson64/loongson-3/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LOONGSON_SMP_H_
#define __LOONGSON_SMP_H_
diff --git a/arch/mips/math-emu/Makefile b/arch/mips/math-emu/Makefile
index e9bbc2a6526f..81d25ff328a7 100644
--- a/arch/mips/math-emu/Makefile
+++ b/arch/mips/math-emu/Makefile
@@ -1,12 +1,15 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/MIPS kernel FPU emulation.
#
obj-y += cp1emu.o ieee754dp.o ieee754sp.o ieee754.o \
dp_div.o dp_mul.o dp_sub.o dp_add.o dp_fsp.o dp_cmp.o dp_simple.o \
- dp_tint.o dp_fint.o dp_maddf.o dp_2008class.o dp_fmin.o dp_fmax.o \
+ dp_tint.o dp_fint.o dp_rint.o dp_maddf.o dp_2008class.o dp_fmin.o \
+ dp_fmax.o \
sp_div.o sp_mul.o sp_sub.o sp_add.o sp_fdp.o sp_cmp.o sp_simple.o \
- sp_tint.o sp_fint.o sp_maddf.o sp_2008class.o sp_fmin.o sp_fmax.o \
+ sp_tint.o sp_fint.o sp_rint.o sp_maddf.o sp_2008class.o sp_fmin.o \
+ sp_fmax.o \
dsemul.o
lib-y += ieee754d.o \
diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c
index f08a7b4facb9..16d9ef5a78c5 100644
--- a/arch/mips/math-emu/cp1emu.c
+++ b/arch/mips/math-emu/cp1emu.c
@@ -58,7 +58,7 @@ static int fpu_emu(struct pt_regs *, struct mips_fpu_struct *,
mips_instruction);
static int fpux_emu(struct pt_regs *,
- struct mips_fpu_struct *, mips_instruction, void *__user *);
+ struct mips_fpu_struct *, mips_instruction, void __user **);
/* Control registers */
@@ -830,12 +830,12 @@ do { \
} while (0)
#define DIFROMREG(di, x) \
- ((di) = get_fpr64(&ctx->fpr[(x) & ~(cop1_64bit(xcp) == 0)], 0))
+ ((di) = get_fpr64(&ctx->fpr[(x) & ~(cop1_64bit(xcp) ^ 1)], 0))
#define DITOREG(di, x) \
do { \
unsigned fpr, i; \
- fpr = (x) & ~(cop1_64bit(xcp) == 0); \
+ fpr = (x) & ~(cop1_64bit(xcp) ^ 1); \
set_fpr64(&ctx->fpr[fpr], 0, di); \
for (i = 1; i < ARRAY_SIZE(ctx->fpr[x].val64); i++) \
set_fpr64(&ctx->fpr[fpr], i, 0); \
@@ -973,7 +973,7 @@ static inline void cop1_ctc(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
*/
static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
- struct mm_decoded_insn dec_insn, void *__user *fault_addr)
+ struct mm_decoded_insn dec_insn, void __user **fault_addr)
{
unsigned long contpc = xcp->cp0_epc + dec_insn.pc_inc;
unsigned int cond, cbit, bit0;
@@ -1195,9 +1195,11 @@ emul:
bit0 = get_fpr32(fpr, 0) & 0x1;
switch (MIPSInst_RS(ir)) {
case bc1eqz_op:
+ MIPS_FPU_EMU_INC_STATS(bc1eqz);
cond = bit0 == 0;
break;
case bc1nez_op:
+ MIPS_FPU_EMU_INC_STATS(bc1nez);
cond = bit0 != 0;
break;
}
@@ -1230,6 +1232,7 @@ emul:
break;
}
branch_common:
+ MIPS_FPU_EMU_INC_STATS(branches);
set_delay_slot(xcp);
if (cond) {
/*
@@ -1460,7 +1463,7 @@ DEF3OP(nmadd, dp, ieee754dp_mul, ieee754dp_add, ieee754dp_neg);
DEF3OP(nmsub, dp, ieee754dp_mul, ieee754dp_sub, ieee754dp_neg);
static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
- mips_instruction ir, void *__user *fault_addr)
+ mips_instruction ir, void __user **fault_addr)
{
unsigned rcsr = 0; /* resulting csr */
@@ -1682,15 +1685,19 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
switch (MIPSInst_FUNC(ir)) {
/* binary ops */
case fadd_op:
+ MIPS_FPU_EMU_INC_STATS(add_s);
handler.b = ieee754sp_add;
goto scopbop;
case fsub_op:
+ MIPS_FPU_EMU_INC_STATS(sub_s);
handler.b = ieee754sp_sub;
goto scopbop;
case fmul_op:
+ MIPS_FPU_EMU_INC_STATS(mul_s);
handler.b = ieee754sp_mul;
goto scopbop;
case fdiv_op:
+ MIPS_FPU_EMU_INC_STATS(div_s);
handler.b = ieee754sp_div;
goto scopbop;
@@ -1699,6 +1706,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_2_3_4_5_r)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(sqrt_s);
handler.u = ieee754sp_sqrt;
goto scopuop;
@@ -1711,6 +1719,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_4_5_64_r2_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(rsqrt_s);
handler.u = fpemu_sp_rsqrt;
goto scopuop;
@@ -1718,6 +1727,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_4_5_64_r2_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(recip_s);
handler.u = fpemu_sp_recip;
goto scopuop;
@@ -1754,6 +1764,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(seleqz_s);
SPFROMREG(rv.s, MIPSInst_FT(ir));
if (rv.w & 0x1)
rv.w = 0;
@@ -1765,6 +1776,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(selnez_s);
SPFROMREG(rv.s, MIPSInst_FT(ir));
if (rv.w & 0x1)
SPFROMREG(rv.s, MIPSInst_FS(ir));
@@ -1778,6 +1790,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(maddf_s);
SPFROMREG(ft, MIPSInst_FT(ir));
SPFROMREG(fs, MIPSInst_FS(ir));
SPFROMREG(fd, MIPSInst_FD(ir));
@@ -1791,6 +1804,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(msubf_s);
SPFROMREG(ft, MIPSInst_FT(ir));
SPFROMREG(fs, MIPSInst_FS(ir));
SPFROMREG(fd, MIPSInst_FD(ir));
@@ -1804,9 +1818,9 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(rint_s);
SPFROMREG(fs, MIPSInst_FS(ir));
- rv.l = ieee754sp_tlong(fs);
- rv.s = ieee754sp_flong(rv.l);
+ rv.s = ieee754sp_rint(fs);
goto copcsr;
}
@@ -1816,6 +1830,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(class_s);
SPFROMREG(fs, MIPSInst_FS(ir));
rv.w = ieee754sp_2008class(fs);
rfmt = w_fmt;
@@ -1828,6 +1843,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(min_s);
SPFROMREG(ft, MIPSInst_FT(ir));
SPFROMREG(fs, MIPSInst_FS(ir));
rv.s = ieee754sp_fmin(fs, ft);
@@ -1840,6 +1856,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(mina_s);
SPFROMREG(ft, MIPSInst_FT(ir));
SPFROMREG(fs, MIPSInst_FS(ir));
rv.s = ieee754sp_fmina(fs, ft);
@@ -1852,6 +1869,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(max_s);
SPFROMREG(ft, MIPSInst_FT(ir));
SPFROMREG(fs, MIPSInst_FS(ir));
rv.s = ieee754sp_fmax(fs, ft);
@@ -1864,6 +1882,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(maxa_s);
SPFROMREG(ft, MIPSInst_FT(ir));
SPFROMREG(fs, MIPSInst_FS(ir));
rv.s = ieee754sp_fmaxa(fs, ft);
@@ -1871,15 +1890,18 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
}
case fabs_op:
+ MIPS_FPU_EMU_INC_STATS(abs_s);
handler.u = ieee754sp_abs;
goto scopuop;
case fneg_op:
+ MIPS_FPU_EMU_INC_STATS(neg_s);
handler.u = ieee754sp_neg;
goto scopuop;
case fmov_op:
/* an easy one */
+ MIPS_FPU_EMU_INC_STATS(mov_s);
SPFROMREG(rv.s, MIPSInst_FS(ir));
goto copcsr;
@@ -1922,12 +1944,14 @@ copcsr:
return SIGILL; /* not defined */
case fcvtd_op:
+ MIPS_FPU_EMU_INC_STATS(cvt_d_s);
SPFROMREG(fs, MIPSInst_FS(ir));
rv.d = ieee754dp_fsp(fs);
rfmt = d_fmt;
goto copcsr;
case fcvtw_op:
+ MIPS_FPU_EMU_INC_STATS(cvt_w_s);
SPFROMREG(fs, MIPSInst_FS(ir));
rv.w = ieee754sp_tint(fs);
rfmt = w_fmt;
@@ -1940,6 +1964,15 @@ copcsr:
if (!cpu_has_mips_2_3_4_5_r)
return SIGILL;
+ if (MIPSInst_FUNC(ir) == fceil_op)
+ MIPS_FPU_EMU_INC_STATS(ceil_w_s);
+ if (MIPSInst_FUNC(ir) == ffloor_op)
+ MIPS_FPU_EMU_INC_STATS(floor_w_s);
+ if (MIPSInst_FUNC(ir) == fround_op)
+ MIPS_FPU_EMU_INC_STATS(round_w_s);
+ if (MIPSInst_FUNC(ir) == ftrunc_op)
+ MIPS_FPU_EMU_INC_STATS(trunc_w_s);
+
oldrm = ieee754_csr.rm;
SPFROMREG(fs, MIPSInst_FS(ir));
ieee754_csr.rm = MIPSInst_FUNC(ir);
@@ -1952,6 +1985,7 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(sel_s);
SPFROMREG(fd, MIPSInst_FD(ir));
if (fd.bits & 0x1)
SPFROMREG(rv.s, MIPSInst_FT(ir));
@@ -1963,6 +1997,7 @@ copcsr:
if (!cpu_has_mips_3_4_5_64_r2_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(cvt_l_s);
SPFROMREG(fs, MIPSInst_FS(ir));
rv.l = ieee754sp_tlong(fs);
rfmt = l_fmt;
@@ -1975,6 +2010,15 @@ copcsr:
if (!cpu_has_mips_3_4_5_64_r2_r6)
return SIGILL;
+ if (MIPSInst_FUNC(ir) == fceill_op)
+ MIPS_FPU_EMU_INC_STATS(ceil_l_s);
+ if (MIPSInst_FUNC(ir) == ffloorl_op)
+ MIPS_FPU_EMU_INC_STATS(floor_l_s);
+ if (MIPSInst_FUNC(ir) == froundl_op)
+ MIPS_FPU_EMU_INC_STATS(round_l_s);
+ if (MIPSInst_FUNC(ir) == ftruncl_op)
+ MIPS_FPU_EMU_INC_STATS(trunc_l_s);
+
oldrm = ieee754_csr.rm;
SPFROMREG(fs, MIPSInst_FS(ir));
ieee754_csr.rm = MIPSInst_FUNC(ir);
@@ -2016,15 +2060,19 @@ copcsr:
switch (MIPSInst_FUNC(ir)) {
/* binary ops */
case fadd_op:
+ MIPS_FPU_EMU_INC_STATS(add_d);
handler.b = ieee754dp_add;
goto dcopbop;
case fsub_op:
+ MIPS_FPU_EMU_INC_STATS(sub_d);
handler.b = ieee754dp_sub;
goto dcopbop;
case fmul_op:
+ MIPS_FPU_EMU_INC_STATS(mul_d);
handler.b = ieee754dp_mul;
goto dcopbop;
case fdiv_op:
+ MIPS_FPU_EMU_INC_STATS(div_d);
handler.b = ieee754dp_div;
goto dcopbop;
@@ -2033,6 +2081,7 @@ copcsr:
if (!cpu_has_mips_2_3_4_5_r)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(sqrt_d);
handler.u = ieee754dp_sqrt;
goto dcopuop;
/*
@@ -2044,12 +2093,14 @@ copcsr:
if (!cpu_has_mips_4_5_64_r2_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(rsqrt_d);
handler.u = fpemu_dp_rsqrt;
goto dcopuop;
case frecip_op:
if (!cpu_has_mips_4_5_64_r2_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(recip_d);
handler.u = fpemu_dp_recip;
goto dcopuop;
case fmovc_op:
@@ -2083,6 +2134,7 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(seleqz_d);
DPFROMREG(rv.d, MIPSInst_FT(ir));
if (rv.l & 0x1)
rv.l = 0;
@@ -2094,6 +2146,7 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(selnez_d);
DPFROMREG(rv.d, MIPSInst_FT(ir));
if (rv.l & 0x1)
DPFROMREG(rv.d, MIPSInst_FS(ir));
@@ -2107,6 +2160,7 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(maddf_d);
DPFROMREG(ft, MIPSInst_FT(ir));
DPFROMREG(fs, MIPSInst_FS(ir));
DPFROMREG(fd, MIPSInst_FD(ir));
@@ -2120,6 +2174,7 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(msubf_d);
DPFROMREG(ft, MIPSInst_FT(ir));
DPFROMREG(fs, MIPSInst_FS(ir));
DPFROMREG(fd, MIPSInst_FD(ir));
@@ -2133,9 +2188,9 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(rint_d);
DPFROMREG(fs, MIPSInst_FS(ir));
- rv.l = ieee754dp_tlong(fs);
- rv.d = ieee754dp_flong(rv.l);
+ rv.d = ieee754dp_rint(fs);
goto copcsr;
}
@@ -2145,9 +2200,10 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(class_d);
DPFROMREG(fs, MIPSInst_FS(ir));
- rv.w = ieee754dp_2008class(fs);
- rfmt = w_fmt;
+ rv.l = ieee754dp_2008class(fs);
+ rfmt = l_fmt;
break;
}
@@ -2157,6 +2213,7 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(min_d);
DPFROMREG(ft, MIPSInst_FT(ir));
DPFROMREG(fs, MIPSInst_FS(ir));
rv.d = ieee754dp_fmin(fs, ft);
@@ -2169,6 +2226,7 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(mina_d);
DPFROMREG(ft, MIPSInst_FT(ir));
DPFROMREG(fs, MIPSInst_FS(ir));
rv.d = ieee754dp_fmina(fs, ft);
@@ -2181,6 +2239,7 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(max_d);
DPFROMREG(ft, MIPSInst_FT(ir));
DPFROMREG(fs, MIPSInst_FS(ir));
rv.d = ieee754dp_fmax(fs, ft);
@@ -2193,6 +2252,7 @@ copcsr:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(maxa_d);
DPFROMREG(ft, MIPSInst_FT(ir));
DPFROMREG(fs, MIPSInst_FS(ir));
rv.d = ieee754dp_fmaxa(fs, ft);
@@ -2200,15 +2260,18 @@ copcsr:
}
case fabs_op:
+ MIPS_FPU_EMU_INC_STATS(abs_d);
handler.u = ieee754dp_abs;
goto dcopuop;
case fneg_op:
+ MIPS_FPU_EMU_INC_STATS(neg_d);
handler.u = ieee754dp_neg;
goto dcopuop;
case fmov_op:
/* an easy one */
+ MIPS_FPU_EMU_INC_STATS(mov_d);
DPFROMREG(rv.d, MIPSInst_FS(ir));
goto copcsr;
@@ -2228,6 +2291,7 @@ dcopuop:
* unary conv ops
*/
case fcvts_op:
+ MIPS_FPU_EMU_INC_STATS(cvt_s_d);
DPFROMREG(fs, MIPSInst_FS(ir));
rv.s = ieee754sp_fdp(fs);
rfmt = s_fmt;
@@ -2237,6 +2301,7 @@ dcopuop:
return SIGILL; /* not defined */
case fcvtw_op:
+ MIPS_FPU_EMU_INC_STATS(cvt_w_d);
DPFROMREG(fs, MIPSInst_FS(ir));
rv.w = ieee754dp_tint(fs); /* wrong */
rfmt = w_fmt;
@@ -2249,6 +2314,15 @@ dcopuop:
if (!cpu_has_mips_2_3_4_5_r)
return SIGILL;
+ if (MIPSInst_FUNC(ir) == fceil_op)
+ MIPS_FPU_EMU_INC_STATS(ceil_w_d);
+ if (MIPSInst_FUNC(ir) == ffloor_op)
+ MIPS_FPU_EMU_INC_STATS(floor_w_d);
+ if (MIPSInst_FUNC(ir) == fround_op)
+ MIPS_FPU_EMU_INC_STATS(round_w_d);
+ if (MIPSInst_FUNC(ir) == ftrunc_op)
+ MIPS_FPU_EMU_INC_STATS(trunc_w_d);
+
oldrm = ieee754_csr.rm;
DPFROMREG(fs, MIPSInst_FS(ir));
ieee754_csr.rm = MIPSInst_FUNC(ir);
@@ -2261,6 +2335,7 @@ dcopuop:
if (!cpu_has_mips_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(sel_d);
DPFROMREG(fd, MIPSInst_FD(ir));
if (fd.bits & 0x1)
DPFROMREG(rv.d, MIPSInst_FT(ir));
@@ -2272,6 +2347,7 @@ dcopuop:
if (!cpu_has_mips_3_4_5_64_r2_r6)
return SIGILL;
+ MIPS_FPU_EMU_INC_STATS(cvt_l_d);
DPFROMREG(fs, MIPSInst_FS(ir));
rv.l = ieee754dp_tlong(fs);
rfmt = l_fmt;
@@ -2284,6 +2360,15 @@ dcopuop:
if (!cpu_has_mips_3_4_5_64_r2_r6)
return SIGILL;
+ if (MIPSInst_FUNC(ir) == fceill_op)
+ MIPS_FPU_EMU_INC_STATS(ceil_l_d);
+ if (MIPSInst_FUNC(ir) == ffloorl_op)
+ MIPS_FPU_EMU_INC_STATS(floor_l_d);
+ if (MIPSInst_FUNC(ir) == froundl_op)
+ MIPS_FPU_EMU_INC_STATS(round_l_d);
+ if (MIPSInst_FUNC(ir) == ftruncl_op)
+ MIPS_FPU_EMU_INC_STATS(trunc_l_d);
+
oldrm = ieee754_csr.rm;
DPFROMREG(fs, MIPSInst_FS(ir));
ieee754_csr.rm = MIPSInst_FUNC(ir);
@@ -2325,12 +2410,14 @@ dcopuop:
switch (MIPSInst_FUNC(ir)) {
case fcvts_op:
/* convert word to single precision real */
+ MIPS_FPU_EMU_INC_STATS(cvt_s_w);
SPFROMREG(fs, MIPSInst_FS(ir));
rv.s = ieee754sp_fint(fs.bits);
rfmt = s_fmt;
goto copcsr;
case fcvtd_op:
/* convert word to double precision real */
+ MIPS_FPU_EMU_INC_STATS(cvt_d_w);
SPFROMREG(fs, MIPSInst_FS(ir));
rv.d = ieee754dp_fint(fs.bits);
rfmt = d_fmt;
@@ -2350,6 +2437,90 @@ dcopuop:
(MIPSInst_FUNC(ir) & 0x20))
return SIGILL;
+ if (!sig) {
+ if (!(MIPSInst_FUNC(ir) & PREDICATE_BIT)) {
+ switch (cmpop) {
+ case 0:
+ MIPS_FPU_EMU_INC_STATS(cmp_af_s);
+ break;
+ case 1:
+ MIPS_FPU_EMU_INC_STATS(cmp_un_s);
+ break;
+ case 2:
+ MIPS_FPU_EMU_INC_STATS(cmp_eq_s);
+ break;
+ case 3:
+ MIPS_FPU_EMU_INC_STATS(cmp_ueq_s);
+ break;
+ case 4:
+ MIPS_FPU_EMU_INC_STATS(cmp_lt_s);
+ break;
+ case 5:
+ MIPS_FPU_EMU_INC_STATS(cmp_ult_s);
+ break;
+ case 6:
+ MIPS_FPU_EMU_INC_STATS(cmp_le_s);
+ break;
+ case 7:
+ MIPS_FPU_EMU_INC_STATS(cmp_ule_s);
+ break;
+ }
+ } else {
+ switch (cmpop) {
+ case 1:
+ MIPS_FPU_EMU_INC_STATS(cmp_or_s);
+ break;
+ case 2:
+ MIPS_FPU_EMU_INC_STATS(cmp_une_s);
+ break;
+ case 3:
+ MIPS_FPU_EMU_INC_STATS(cmp_ne_s);
+ break;
+ }
+ }
+ } else {
+ if (!(MIPSInst_FUNC(ir) & PREDICATE_BIT)) {
+ switch (cmpop) {
+ case 0:
+ MIPS_FPU_EMU_INC_STATS(cmp_saf_s);
+ break;
+ case 1:
+ MIPS_FPU_EMU_INC_STATS(cmp_sun_s);
+ break;
+ case 2:
+ MIPS_FPU_EMU_INC_STATS(cmp_seq_s);
+ break;
+ case 3:
+ MIPS_FPU_EMU_INC_STATS(cmp_sueq_s);
+ break;
+ case 4:
+ MIPS_FPU_EMU_INC_STATS(cmp_slt_s);
+ break;
+ case 5:
+ MIPS_FPU_EMU_INC_STATS(cmp_sult_s);
+ break;
+ case 6:
+ MIPS_FPU_EMU_INC_STATS(cmp_sle_s);
+ break;
+ case 7:
+ MIPS_FPU_EMU_INC_STATS(cmp_sule_s);
+ break;
+ }
+ } else {
+ switch (cmpop) {
+ case 1:
+ MIPS_FPU_EMU_INC_STATS(cmp_sor_s);
+ break;
+ case 2:
+ MIPS_FPU_EMU_INC_STATS(cmp_sune_s);
+ break;
+ case 3:
+ MIPS_FPU_EMU_INC_STATS(cmp_sne_s);
+ break;
+ }
+ }
+ }
+
/* fmt is w_fmt for single precision so fix it */
rfmt = s_fmt;
/* default to false */
@@ -2387,13 +2558,13 @@ dcopuop:
break;
default:
/* Reserved R6 ops */
- pr_err("Reserved MIPS R6 CMP.condn.S operation\n");
return SIGILL;
}
}
break;
}
}
+ break;
}
case l_fmt:
@@ -2406,11 +2577,13 @@ dcopuop:
switch (MIPSInst_FUNC(ir)) {
case fcvts_op:
/* convert long to single precision real */
+ MIPS_FPU_EMU_INC_STATS(cvt_s_l);
rv.s = ieee754sp_flong(bits);
rfmt = s_fmt;
goto copcsr;
case fcvtd_op:
/* convert long to double precision real */
+ MIPS_FPU_EMU_INC_STATS(cvt_d_l);
rv.d = ieee754dp_flong(bits);
rfmt = d_fmt;
goto copcsr;
@@ -2424,6 +2597,90 @@ dcopuop:
(MIPSInst_FUNC(ir) & 0x20))
return SIGILL;
+ if (!sig) {
+ if (!(MIPSInst_FUNC(ir) & PREDICATE_BIT)) {
+ switch (cmpop) {
+ case 0:
+ MIPS_FPU_EMU_INC_STATS(cmp_af_d);
+ break;
+ case 1:
+ MIPS_FPU_EMU_INC_STATS(cmp_un_d);
+ break;
+ case 2:
+ MIPS_FPU_EMU_INC_STATS(cmp_eq_d);
+ break;
+ case 3:
+ MIPS_FPU_EMU_INC_STATS(cmp_ueq_d);
+ break;
+ case 4:
+ MIPS_FPU_EMU_INC_STATS(cmp_lt_d);
+ break;
+ case 5:
+ MIPS_FPU_EMU_INC_STATS(cmp_ult_d);
+ break;
+ case 6:
+ MIPS_FPU_EMU_INC_STATS(cmp_le_d);
+ break;
+ case 7:
+ MIPS_FPU_EMU_INC_STATS(cmp_ule_d);
+ break;
+ }
+ } else {
+ switch (cmpop) {
+ case 1:
+ MIPS_FPU_EMU_INC_STATS(cmp_or_d);
+ break;
+ case 2:
+ MIPS_FPU_EMU_INC_STATS(cmp_une_d);
+ break;
+ case 3:
+ MIPS_FPU_EMU_INC_STATS(cmp_ne_d);
+ break;
+ }
+ }
+ } else {
+ if (!(MIPSInst_FUNC(ir) & PREDICATE_BIT)) {
+ switch (cmpop) {
+ case 0:
+ MIPS_FPU_EMU_INC_STATS(cmp_saf_d);
+ break;
+ case 1:
+ MIPS_FPU_EMU_INC_STATS(cmp_sun_d);
+ break;
+ case 2:
+ MIPS_FPU_EMU_INC_STATS(cmp_seq_d);
+ break;
+ case 3:
+ MIPS_FPU_EMU_INC_STATS(cmp_sueq_d);
+ break;
+ case 4:
+ MIPS_FPU_EMU_INC_STATS(cmp_slt_d);
+ break;
+ case 5:
+ MIPS_FPU_EMU_INC_STATS(cmp_sult_d);
+ break;
+ case 6:
+ MIPS_FPU_EMU_INC_STATS(cmp_sle_d);
+ break;
+ case 7:
+ MIPS_FPU_EMU_INC_STATS(cmp_sule_d);
+ break;
+ }
+ } else {
+ switch (cmpop) {
+ case 1:
+ MIPS_FPU_EMU_INC_STATS(cmp_sor_d);
+ break;
+ case 2:
+ MIPS_FPU_EMU_INC_STATS(cmp_sune_d);
+ break;
+ case 3:
+ MIPS_FPU_EMU_INC_STATS(cmp_sne_d);
+ break;
+ }
+ }
+ }
+
/* fmt is l_fmt for double precision so fix it */
rfmt = d_fmt;
/* default to false */
@@ -2461,13 +2718,14 @@ dcopuop:
break;
default:
/* Reserved R6 ops */
- pr_err("Reserved MIPS R6 CMP.condn.D operation\n");
return SIGILL;
}
}
break;
}
}
+ break;
+
default:
return SIGILL;
}
@@ -2553,7 +2811,7 @@ dcopuop:
* For simplicity we always terminate upon an ISA mode switch.
*/
int fpu_emulator_cop1Handler(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
- int has_fpu, void *__user *fault_addr)
+ int has_fpu, void __user **fault_addr)
{
unsigned long oldepc, prevepc;
struct mm_decoded_insn dec_insn;
diff --git a/arch/mips/math-emu/dp_fmax.c b/arch/mips/math-emu/dp_fmax.c
index fd71b8daaaf2..5bec64f2884e 100644
--- a/arch/mips/math-emu/dp_fmax.c
+++ b/arch/mips/math-emu/dp_fmax.c
@@ -47,14 +47,26 @@ union ieee754dp ieee754dp_fmax(union ieee754dp x, union ieee754dp y)
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
return ieee754dp_nanxcpt(x);
- /* numbers are preferred to NaNs */
+ /*
+ * Quiet NaN handling
+ */
+
+ /*
+ * The case of both inputs quiet NaNs
+ */
+ case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
+ return x;
+
+ /*
+ * The cases of exactly one input quiet NaN (numbers
+ * are here preferred as returned values to NaNs)
+ */
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
return x;
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -80,9 +92,7 @@ union ieee754dp ieee754dp_fmax(union ieee754dp x, union ieee754dp y)
return ys ? x : y;
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
- if (xs == ys)
- return x;
- return ieee754dp_zero(1);
+ return ieee754dp_zero(xs & ys);
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
DPDNORMX;
@@ -106,16 +116,32 @@ union ieee754dp ieee754dp_fmax(union ieee754dp x, union ieee754dp y)
else if (xs < ys)
return x;
- /* Compare exponent */
- if (xe > ye)
- return x;
- else if (xe < ye)
- return y;
+ /* Signs of inputs are equal, let's compare exponents */
+ if (xs == 0) {
+ /* Inputs are both positive */
+ if (xe > ye)
+ return x;
+ else if (xe < ye)
+ return y;
+ } else {
+ /* Inputs are both negative */
+ if (xe > ye)
+ return y;
+ else if (xe < ye)
+ return x;
+ }
- /* Compare mantissa */
+ /* Signs and exponents of inputs are equal, let's compare mantissas */
+ if (xs == 0) {
+ /* Inputs are both positive, with equal signs and exponents */
+ if (xm <= ym)
+ return y;
+ return x;
+ }
+ /* Inputs are both negative, with equal signs and exponents */
if (xm <= ym)
- return y;
- return x;
+ return x;
+ return y;
}
union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
@@ -147,14 +173,26 @@ union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
return ieee754dp_nanxcpt(x);
- /* numbers are preferred to NaNs */
+ /*
+ * Quiet NaN handling
+ */
+
+ /*
+ * The case of both inputs quiet NaNs
+ */
+ case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
+ return x;
+
+ /*
+ * The cases of exactly one input quiet NaN (numbers
+ * are here preferred as returned values to NaNs)
+ */
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
return x;
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -164,6 +202,9 @@ union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
/*
* Infinity and zero handling
*/
+ case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
+ return ieee754dp_inf(xs & ys);
+
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_DNORM):
@@ -171,7 +212,6 @@ union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_ZERO):
return x;
- case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_INF):
@@ -180,9 +220,7 @@ union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
return y;
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
- if (xs == ys)
- return x;
- return ieee754dp_zero(1);
+ return ieee754dp_zero(xs & ys);
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
DPDNORMX;
@@ -207,7 +245,11 @@ union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
return y;
/* Compare mantissa */
- if (xm <= ym)
+ if (xm < ym)
return y;
- return x;
+ else if (xm > ym)
+ return x;
+ else if (xs == 0)
+ return x;
+ return y;
}
diff --git a/arch/mips/math-emu/dp_fmin.c b/arch/mips/math-emu/dp_fmin.c
index c1072b0dfb95..a287b23818d8 100644
--- a/arch/mips/math-emu/dp_fmin.c
+++ b/arch/mips/math-emu/dp_fmin.c
@@ -47,14 +47,26 @@ union ieee754dp ieee754dp_fmin(union ieee754dp x, union ieee754dp y)
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
return ieee754dp_nanxcpt(x);
- /* numbers are preferred to NaNs */
+ /*
+ * Quiet NaN handling
+ */
+
+ /*
+ * The case of both inputs quiet NaNs
+ */
+ case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
+ return x;
+
+ /*
+ * The cases of exactly one input quiet NaN (numbers
+ * are here preferred as returned values to NaNs)
+ */
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
return x;
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -80,9 +92,7 @@ union ieee754dp ieee754dp_fmin(union ieee754dp x, union ieee754dp y)
return ys ? y : x;
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
- if (xs == ys)
- return x;
- return ieee754dp_zero(1);
+ return ieee754dp_zero(xs | ys);
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
DPDNORMX;
@@ -106,16 +116,32 @@ union ieee754dp ieee754dp_fmin(union ieee754dp x, union ieee754dp y)
else if (xs < ys)
return y;
- /* Compare exponent */
- if (xe > ye)
- return y;
- else if (xe < ye)
- return x;
+ /* Signs of inputs are the same, let's compare exponents */
+ if (xs == 0) {
+ /* Inputs are both positive */
+ if (xe > ye)
+ return y;
+ else if (xe < ye)
+ return x;
+ } else {
+ /* Inputs are both negative */
+ if (xe > ye)
+ return x;
+ else if (xe < ye)
+ return y;
+ }
- /* Compare mantissa */
+ /* Signs and exponents of inputs are equal, let's compare mantissas */
+ if (xs == 0) {
+ /* Inputs are both positive, with equal signs and exponents */
+ if (xm <= ym)
+ return x;
+ return y;
+ }
+ /* Inputs are both negative, with equal signs and exponents */
if (xm <= ym)
- return x;
- return y;
+ return y;
+ return x;
}
union ieee754dp ieee754dp_fmina(union ieee754dp x, union ieee754dp y)
@@ -147,14 +173,26 @@ union ieee754dp ieee754dp_fmina(union ieee754dp x, union ieee754dp y)
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
return ieee754dp_nanxcpt(x);
- /* numbers are preferred to NaNs */
+ /*
+ * Quiet NaN handling
+ */
+
+ /*
+ * The case of both inputs quiet NaNs
+ */
+ case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
+ return x;
+
+ /*
+ * The cases of exactly one input quiet NaN (numbers
+ * are here preferred as returned values to NaNs)
+ */
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
return x;
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -164,25 +202,25 @@ union ieee754dp ieee754dp_fmina(union ieee754dp x, union ieee754dp y)
/*
* Infinity and zero handling
*/
+ case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
+ return ieee754dp_inf(xs | ys);
+
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_DNORM):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_ZERO):
- return x;
+ return y;
- case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_DNORM):
- return y;
+ return x;
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
- if (xs == ys)
- return x;
- return ieee754dp_zero(1);
+ return ieee754dp_zero(xs | ys);
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
DPDNORMX;
@@ -207,7 +245,11 @@ union ieee754dp ieee754dp_fmina(union ieee754dp x, union ieee754dp y)
return x;
/* Compare mantissa */
- if (xm <= ym)
+ if (xm < ym)
+ return x;
+ else if (xm > ym)
+ return y;
+ else if (xs == 1)
return x;
return y;
}
diff --git a/arch/mips/math-emu/dp_maddf.c b/arch/mips/math-emu/dp_maddf.c
index caa62f20a888..e0d9be5fbf4c 100644
--- a/arch/mips/math-emu/dp_maddf.c
+++ b/arch/mips/math-emu/dp_maddf.c
@@ -14,22 +14,45 @@
#include "ieee754dp.h"
-enum maddf_flags {
- maddf_negate_product = 1 << 0,
-};
+
+/* 128 bits shift right logical with rounding. */
+void srl128(u64 *hptr, u64 *lptr, int count)
+{
+ u64 low;
+
+ if (count >= 128) {
+ *lptr = *hptr != 0 || *lptr != 0;
+ *hptr = 0;
+ } else if (count >= 64) {
+ if (count == 64) {
+ *lptr = *hptr | (*lptr != 0);
+ } else {
+ low = *lptr;
+ *lptr = *hptr >> (count - 64);
+ *lptr |= (*hptr << (128 - count)) != 0 || low != 0;
+ }
+ *hptr = 0;
+ } else {
+ low = *lptr;
+ *lptr = low >> count | *hptr << (64 - count);
+ *lptr |= (low << (64 - count)) != 0;
+ *hptr = *hptr >> count;
+ }
+}
static union ieee754dp _dp_maddf(union ieee754dp z, union ieee754dp x,
union ieee754dp y, enum maddf_flags flags)
{
int re;
int rs;
- u64 rm;
unsigned lxm;
unsigned hxm;
unsigned lym;
unsigned hym;
u64 lrm;
u64 hrm;
+ u64 lzm;
+ u64 hzm;
u64 t;
u64 at;
int s;
@@ -48,52 +71,34 @@ static union ieee754dp _dp_maddf(union ieee754dp z, union ieee754dp x,
ieee754_clearcx();
- switch (zc) {
- case IEEE754_CLASS_SNAN:
- ieee754_setcx(IEEE754_INVALID_OPERATION);
+ /*
+ * Handle the cases when at least one of x, y or z is a NaN.
+ * Order of precedence is sNaN, qNaN and z, x, y.
+ */
+ if (zc == IEEE754_CLASS_SNAN)
return ieee754dp_nanxcpt(z);
- case IEEE754_CLASS_DNORM:
- DPDNORMZ;
- /* QNAN and ZERO cases are handled separately below */
- }
-
- switch (CLPAIR(xc, yc)) {
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_SNAN):
- case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_SNAN):
- case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_SNAN):
- case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_SNAN):
- case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_SNAN):
- return ieee754dp_nanxcpt(y);
-
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_SNAN):
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_QNAN):
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_ZERO):
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_NORM):
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_DNORM):
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
+ if (xc == IEEE754_CLASS_SNAN)
return ieee754dp_nanxcpt(x);
-
- case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
- case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
- case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
- case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
+ if (yc == IEEE754_CLASS_SNAN)
+ return ieee754dp_nanxcpt(y);
+ if (zc == IEEE754_CLASS_QNAN)
+ return z;
+ if (xc == IEEE754_CLASS_QNAN)
+ return x;
+ if (yc == IEEE754_CLASS_QNAN)
return y;
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_INF):
- return x;
+ if (zc == IEEE754_CLASS_DNORM)
+ DPDNORMZ;
+ /* ZERO z cases are handled separately below */
+ switch (CLPAIR(xc, yc)) {
/*
* Infinity handling
*/
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_INF):
- if (zc == IEEE754_CLASS_QNAN)
- return z;
ieee754_setcx(IEEE754_INVALID_OPERATION);
return ieee754dp_indef();
@@ -102,9 +107,27 @@ static union ieee754dp _dp_maddf(union ieee754dp z, union ieee754dp x,
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_DNORM):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
- if (zc == IEEE754_CLASS_QNAN)
- return z;
- return ieee754dp_inf(xs ^ ys);
+ if ((zc == IEEE754_CLASS_INF) &&
+ ((!(flags & MADDF_NEGATE_PRODUCT) && (zs != (xs ^ ys))) ||
+ ((flags & MADDF_NEGATE_PRODUCT) && (zs == (xs ^ ys))))) {
+ /*
+ * Cases of addition of infinities with opposite signs
+ * or subtraction of infinities with same signs.
+ */
+ ieee754_setcx(IEEE754_INVALID_OPERATION);
+ return ieee754dp_indef();
+ }
+ /*
+ * z is here either not an infinity, or an infinity having the
+ * same sign as product (x*y) (in case of MADDF.D instruction)
+ * or product -(x*y) (in MSUBF.D case). The result must be an
+ * infinity, and its sign is determined only by the value of
+ * (flags & MADDF_NEGATE_PRODUCT) and the signs of x and y.
+ */
+ if (flags & MADDF_NEGATE_PRODUCT)
+ return ieee754dp_inf(1 ^ (xs ^ ys));
+ else
+ return ieee754dp_inf(xs ^ ys);
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_NORM):
@@ -113,32 +136,42 @@ static union ieee754dp _dp_maddf(union ieee754dp z, union ieee754dp x,
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_ZERO):
if (zc == IEEE754_CLASS_INF)
return ieee754dp_inf(zs);
- /* Multiplication is 0 so just return z */
+ if (zc == IEEE754_CLASS_ZERO) {
+ /* Handle cases +0 + (-0) and similar ones. */
+ if ((!(flags & MADDF_NEGATE_PRODUCT)
+ && (zs == (xs ^ ys))) ||
+ ((flags & MADDF_NEGATE_PRODUCT)
+ && (zs != (xs ^ ys))))
+ /*
+ * Cases of addition of zeros of equal signs
+ * or subtraction of zeroes of opposite signs.
+ * The sign of the resulting zero is in any
+ * such case determined only by the sign of z.
+ */
+ return z;
+
+ return ieee754dp_zero(ieee754_csr.rm == FPU_CSR_RD);
+ }
+ /* x*y is here 0, and z is not 0, so just return z */
return z;
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
DPDNORMX;
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_DNORM):
- if (zc == IEEE754_CLASS_QNAN)
- return z;
- else if (zc == IEEE754_CLASS_INF)
+ if (zc == IEEE754_CLASS_INF)
return ieee754dp_inf(zs);
DPDNORMY;
break;
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_NORM):
- if (zc == IEEE754_CLASS_QNAN)
- return z;
- else if (zc == IEEE754_CLASS_INF)
+ if (zc == IEEE754_CLASS_INF)
return ieee754dp_inf(zs);
DPDNORMX;
break;
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_NORM):
- if (zc == IEEE754_CLASS_QNAN)
- return z;
- else if (zc == IEEE754_CLASS_INF)
+ if (zc == IEEE754_CLASS_INF)
return ieee754dp_inf(zs);
/* fall through to real computations */
}
@@ -157,7 +190,7 @@ static union ieee754dp _dp_maddf(union ieee754dp z, union ieee754dp x,
re = xe + ye;
rs = xs ^ ys;
- if (flags & maddf_negate_product)
+ if (flags & MADDF_NEGATE_PRODUCT)
rs ^= 1;
/* shunt to top of word */
@@ -165,7 +198,7 @@ static union ieee754dp _dp_maddf(union ieee754dp z, union ieee754dp x,
ym <<= 64 - (DP_FBITS + 1);
/*
- * Multiply 64 bits xm, ym to give high 64 bits rm with stickness.
+ * Multiply 64 bits xm and ym to give 128 bits result in hrm:lrm.
*/
/* 32 * 32 => 64 */
@@ -195,81 +228,110 @@ static union ieee754dp _dp_maddf(union ieee754dp z, union ieee754dp x,
hrm = hrm + (t >> 32);
- rm = hrm | (lrm != 0);
-
- /*
- * Sticky shift down to normal rounding precision.
- */
- if ((s64) rm < 0) {
- rm = (rm >> (64 - (DP_FBITS + 1 + 3))) |
- ((rm << (DP_FBITS + 1 + 3)) != 0);
+ /* Put explicit bit at bit 126 if necessary */
+ if ((int64_t)hrm < 0) {
+ lrm = (hrm << 63) | (lrm >> 1);
+ hrm = hrm >> 1;
re++;
- } else {
- rm = (rm >> (64 - (DP_FBITS + 1 + 3 + 1))) |
- ((rm << (DP_FBITS + 1 + 3 + 1)) != 0);
}
- assert(rm & (DP_HIDDEN_BIT << 3));
- if (zc == IEEE754_CLASS_ZERO)
- return ieee754dp_format(rs, re, rm);
+ assert(hrm & (1 << 62));
- /* And now the addition */
- assert(zm & DP_HIDDEN_BIT);
+ if (zc == IEEE754_CLASS_ZERO) {
+ /*
+ * Move explicit bit from bit 126 to bit 55 since the
+ * ieee754dp_format code expects the mantissa to be
+ * 56 bits wide (53 + 3 rounding bits).
+ */
+ srl128(&hrm, &lrm, (126 - 55));
+ return ieee754dp_format(rs, re, lrm);
+ }
- /*
- * Provide guard,round and stick bit space.
- */
- zm <<= 3;
+ /* Move explicit bit from bit 52 to bit 126 */
+ lzm = 0;
+ hzm = zm << 10;
+ assert(hzm & (1 << 62));
+ /* Make the exponents the same */
if (ze > re) {
/*
* Have to shift y fraction right to align.
*/
s = ze - re;
- rm = XDPSRS(rm, s);
+ srl128(&hrm, &lrm, s);
re += s;
} else if (re > ze) {
/*
* Have to shift x fraction right to align.
*/
s = re - ze;
- zm = XDPSRS(zm, s);
+ srl128(&hzm, &lzm, s);
ze += s;
}
assert(ze == re);
assert(ze <= DP_EMAX);
+ /* Do the addition */
if (zs == rs) {
/*
- * Generate 28 bit result of adding two 27 bit numbers
- * leaving result in xm, xs and xe.
+ * Generate 128 bit result by adding two 127 bit numbers
+ * leaving result in hzm:lzm, zs and ze.
*/
- zm = zm + rm;
-
- if (zm >> (DP_FBITS + 1 + 3)) { /* carry out */
- zm = XDPSRS1(zm);
+ hzm = hzm + hrm + (lzm > (lzm + lrm));
+ lzm = lzm + lrm;
+ if ((int64_t)hzm < 0) { /* carry out */
+ srl128(&hzm, &lzm, 1);
ze++;
}
} else {
- if (zm >= rm) {
- zm = zm - rm;
+ if (hzm > hrm || (hzm == hrm && lzm >= lrm)) {
+ hzm = hzm - hrm - (lzm < lrm);
+ lzm = lzm - lrm;
} else {
- zm = rm - zm;
+ hzm = hrm - hzm - (lrm < lzm);
+ lzm = lrm - lzm;
zs = rs;
}
- if (zm == 0)
+ if (lzm == 0 && hzm == 0)
return ieee754dp_zero(ieee754_csr.rm == FPU_CSR_RD);
/*
- * Normalize to rounding precision.
+ * Put explicit bit at bit 126 if necessary.
*/
- while ((zm >> (DP_FBITS + 3)) == 0) {
- zm <<= 1;
- ze--;
+ if (hzm == 0) {
+ /* left shift by 63 or 64 bits */
+ if ((int64_t)lzm < 0) {
+ /* MSB of lzm is the explicit bit */
+ hzm = lzm >> 1;
+ lzm = lzm << 63;
+ ze -= 63;
+ } else {
+ hzm = lzm;
+ lzm = 0;
+ ze -= 64;
+ }
+ }
+
+ t = 0;
+ while ((hzm >> (62 - t)) == 0)
+ t++;
+
+ assert(t <= 62);
+ if (t) {
+ hzm = hzm << t | lzm >> (64 - t);
+ lzm = lzm << t;
+ ze -= t;
}
}
- return ieee754dp_format(zs, ze, zm);
+ /*
+ * Move explicit bit from bit 126 to bit 55 since the
+ * ieee754dp_format code expects the mantissa to be
+ * 56 bits wide (53 + 3 rounding bits).
+ */
+ srl128(&hzm, &lzm, (126 - 55));
+
+ return ieee754dp_format(zs, ze, lzm);
}
union ieee754dp ieee754dp_maddf(union ieee754dp z, union ieee754dp x,
@@ -281,5 +343,5 @@ union ieee754dp ieee754dp_maddf(union ieee754dp z, union ieee754dp x,
union ieee754dp ieee754dp_msubf(union ieee754dp z, union ieee754dp x,
union ieee754dp y)
{
- return _dp_maddf(z, x, y, maddf_negate_product);
+ return _dp_maddf(z, x, y, MADDF_NEGATE_PRODUCT);
}
diff --git a/arch/mips/math-emu/dp_rint.c b/arch/mips/math-emu/dp_rint.c
new file mode 100644
index 000000000000..c3b9077ff357
--- /dev/null
+++ b/arch/mips/math-emu/dp_rint.c
@@ -0,0 +1,89 @@
+/* IEEE754 floating point arithmetic
+ * double precision: common utilities
+ */
+/*
+ * MIPS floating point support
+ * Copyright (C) 1994-2000 Algorithmics Ltd.
+ * Copyright (C) 2017 Imagination Technologies, Ltd.
+ * Author: Aleksandar Markovic <aleksandar.markovic@imgtec.com>
+ *
+ * This program is free software; you can distribute it and/or modify it
+ * under the terms of the GNU General Public License (Version 2) as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.
+ */
+
+#include "ieee754dp.h"
+
+union ieee754dp ieee754dp_rint(union ieee754dp x)
+{
+ union ieee754dp ret;
+ u64 residue;
+ int sticky;
+ int round;
+ int odd;
+
+ COMPXDP;
+
+ ieee754_clearcx();
+
+ EXPLODEXDP;
+ FLUSHXDP;
+
+ if (xc == IEEE754_CLASS_SNAN)
+ return ieee754dp_nanxcpt(x);
+
+ if ((xc == IEEE754_CLASS_QNAN) ||
+ (xc == IEEE754_CLASS_INF) ||
+ (xc == IEEE754_CLASS_ZERO))
+ return x;
+
+ if (xe >= DP_FBITS)
+ return x;
+
+ if (xe < -1) {
+ residue = xm;
+ round = 0;
+ sticky = residue != 0;
+ xm = 0;
+ } else {
+ residue = xm << (64 - DP_FBITS + xe);
+ round = (residue >> 63) != 0;
+ sticky = (residue << 1) != 0;
+ xm >>= DP_FBITS - xe;
+ }
+
+ odd = (xm & 0x1) != 0x0;
+
+ switch (ieee754_csr.rm) {
+ case FPU_CSR_RN: /* toward nearest */
+ if (round && (sticky || odd))
+ xm++;
+ break;
+ case FPU_CSR_RZ: /* toward zero */
+ break;
+ case FPU_CSR_RU: /* toward +infinity */
+ if ((round || sticky) && !xs)
+ xm++;
+ break;
+ case FPU_CSR_RD: /* toward -infinity */
+ if ((round || sticky) && xs)
+ xm++;
+ break;
+ }
+
+ if (round || sticky)
+ ieee754_setcx(IEEE754_INEXACT);
+
+ ret = ieee754dp_flong(xm);
+ DPSIGN(ret) = xs;
+
+ return ret;
+}
diff --git a/arch/mips/math-emu/dsemul.c b/arch/mips/math-emu/dsemul.c
index b6bfd3625369..5450f4d1c920 100644
--- a/arch/mips/math-emu/dsemul.c
+++ b/arch/mips/math-emu/dsemul.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/err.h>
#include <linux/slab.h>
#include <linux/mm_types.h>
diff --git a/arch/mips/math-emu/ieee754.h b/arch/mips/math-emu/ieee754.h
index d3be351aed15..92dc8fa565cb 100644
--- a/arch/mips/math-emu/ieee754.h
+++ b/arch/mips/math-emu/ieee754.h
@@ -67,6 +67,7 @@ union ieee754sp ieee754sp_div(union ieee754sp x, union ieee754sp y);
union ieee754sp ieee754sp_fint(int x);
union ieee754sp ieee754sp_flong(s64 x);
union ieee754sp ieee754sp_fdp(union ieee754dp x);
+union ieee754sp ieee754sp_rint(union ieee754sp x);
int ieee754sp_tint(union ieee754sp x);
s64 ieee754sp_tlong(union ieee754sp x);
@@ -101,6 +102,7 @@ union ieee754dp ieee754dp_neg(union ieee754dp x);
union ieee754dp ieee754dp_fint(int x);
union ieee754dp ieee754dp_flong(s64 x);
union ieee754dp ieee754dp_fsp(union ieee754sp x);
+union ieee754dp ieee754dp_rint(union ieee754dp x);
int ieee754dp_tint(union ieee754dp x);
s64 ieee754dp_tlong(union ieee754dp x);
diff --git a/arch/mips/math-emu/ieee754int.h b/arch/mips/math-emu/ieee754int.h
index 8bc2f6963324..dd2071f430e0 100644
--- a/arch/mips/math-emu/ieee754int.h
+++ b/arch/mips/math-emu/ieee754int.h
@@ -26,6 +26,10 @@
#define CLPAIR(x, y) ((x)*6+(y))
+enum maddf_flags {
+ MADDF_NEGATE_PRODUCT = 1 << 0,
+};
+
static inline void ieee754_clearcx(void)
{
ieee754_csr.cx = 0;
diff --git a/arch/mips/math-emu/ieee754sp.h b/arch/mips/math-emu/ieee754sp.h
index 8476067075fe..0f63e4202cff 100644
--- a/arch/mips/math-emu/ieee754sp.h
+++ b/arch/mips/math-emu/ieee754sp.h
@@ -45,6 +45,10 @@ static inline int ieee754sp_finite(union ieee754sp x)
return SPBEXP(x) != SP_EMAX + 1 + SP_EBIAS;
}
+/* 64 bit right shift with rounding */
+#define XSPSRS64(v, rs) \
+ (((rs) >= 64) ? ((v) != 0) : ((v) >> (rs)) | ((v) << (64-(rs)) != 0))
+
/* 3bit extended single precision sticky right shift */
#define XSPSRS(v, rs) \
((rs > (SP_FBITS+3))?1:((v) >> (rs)) | ((v) << (32-(rs)) != 0))
diff --git a/arch/mips/math-emu/me-debugfs.c b/arch/mips/math-emu/me-debugfs.c
index be650ed7db59..62566385ce0e 100644
--- a/arch/mips/math-emu/me-debugfs.c
+++ b/arch/mips/math-emu/me-debugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/cpumask.h>
#include <linux/debugfs.h>
#include <linux/fs.h>
@@ -28,14 +29,190 @@ static int fpuemu_stat_get(void *data, u64 *val)
}
DEFINE_SIMPLE_ATTRIBUTE(fops_fpuemu_stat, fpuemu_stat_get, NULL, "%llu\n");
+/*
+ * Used to obtain names for a debugfs instruction counter, given field name
+ * in fpuemustats structure. For example, for input "cmp_sueq_d", the output
+ * would be "cmp.sueq.d". This is needed since dots are not allowed to be
+ * used in structure field names, and are, on the other hand, desired to be
+ * used in debugfs item names to be clearly associated to corresponding
+ * MIPS FPU instructions.
+ */
+static void adjust_instruction_counter_name(char *out_name, char *in_name)
+{
+ int i = 0;
+
+ strcpy(out_name, in_name);
+ while (in_name[i] != '\0') {
+ if (out_name[i] == '_')
+ out_name[i] = '.';
+ i++;
+ }
+}
+
+static int fpuemustats_clear_show(struct seq_file *s, void *unused)
+{
+ __this_cpu_write((fpuemustats).emulated, 0);
+ __this_cpu_write((fpuemustats).loads, 0);
+ __this_cpu_write((fpuemustats).stores, 0);
+ __this_cpu_write((fpuemustats).branches, 0);
+ __this_cpu_write((fpuemustats).cp1ops, 0);
+ __this_cpu_write((fpuemustats).cp1xops, 0);
+ __this_cpu_write((fpuemustats).errors, 0);
+ __this_cpu_write((fpuemustats).ieee754_inexact, 0);
+ __this_cpu_write((fpuemustats).ieee754_underflow, 0);
+ __this_cpu_write((fpuemustats).ieee754_overflow, 0);
+ __this_cpu_write((fpuemustats).ieee754_zerodiv, 0);
+ __this_cpu_write((fpuemustats).ieee754_invalidop, 0);
+ __this_cpu_write((fpuemustats).ds_emul, 0);
+
+ __this_cpu_write((fpuemustats).abs_s, 0);
+ __this_cpu_write((fpuemustats).abs_d, 0);
+ __this_cpu_write((fpuemustats).add_s, 0);
+ __this_cpu_write((fpuemustats).add_d, 0);
+ __this_cpu_write((fpuemustats).bc1eqz, 0);
+ __this_cpu_write((fpuemustats).bc1nez, 0);
+ __this_cpu_write((fpuemustats).ceil_w_s, 0);
+ __this_cpu_write((fpuemustats).ceil_w_d, 0);
+ __this_cpu_write((fpuemustats).ceil_l_s, 0);
+ __this_cpu_write((fpuemustats).ceil_l_d, 0);
+ __this_cpu_write((fpuemustats).class_s, 0);
+ __this_cpu_write((fpuemustats).class_d, 0);
+ __this_cpu_write((fpuemustats).cmp_af_s, 0);
+ __this_cpu_write((fpuemustats).cmp_af_d, 0);
+ __this_cpu_write((fpuemustats).cmp_eq_s, 0);
+ __this_cpu_write((fpuemustats).cmp_eq_d, 0);
+ __this_cpu_write((fpuemustats).cmp_le_s, 0);
+ __this_cpu_write((fpuemustats).cmp_le_d, 0);
+ __this_cpu_write((fpuemustats).cmp_lt_s, 0);
+ __this_cpu_write((fpuemustats).cmp_lt_d, 0);
+ __this_cpu_write((fpuemustats).cmp_ne_s, 0);
+ __this_cpu_write((fpuemustats).cmp_ne_d, 0);
+ __this_cpu_write((fpuemustats).cmp_or_s, 0);
+ __this_cpu_write((fpuemustats).cmp_or_d, 0);
+ __this_cpu_write((fpuemustats).cmp_ueq_s, 0);
+ __this_cpu_write((fpuemustats).cmp_ueq_d, 0);
+ __this_cpu_write((fpuemustats).cmp_ule_s, 0);
+ __this_cpu_write((fpuemustats).cmp_ule_d, 0);
+ __this_cpu_write((fpuemustats).cmp_ult_s, 0);
+ __this_cpu_write((fpuemustats).cmp_ult_d, 0);
+ __this_cpu_write((fpuemustats).cmp_un_s, 0);
+ __this_cpu_write((fpuemustats).cmp_un_d, 0);
+ __this_cpu_write((fpuemustats).cmp_une_s, 0);
+ __this_cpu_write((fpuemustats).cmp_une_d, 0);
+ __this_cpu_write((fpuemustats).cmp_saf_s, 0);
+ __this_cpu_write((fpuemustats).cmp_saf_d, 0);
+ __this_cpu_write((fpuemustats).cmp_seq_s, 0);
+ __this_cpu_write((fpuemustats).cmp_seq_d, 0);
+ __this_cpu_write((fpuemustats).cmp_sle_s, 0);
+ __this_cpu_write((fpuemustats).cmp_sle_d, 0);
+ __this_cpu_write((fpuemustats).cmp_slt_s, 0);
+ __this_cpu_write((fpuemustats).cmp_slt_d, 0);
+ __this_cpu_write((fpuemustats).cmp_sne_s, 0);
+ __this_cpu_write((fpuemustats).cmp_sne_d, 0);
+ __this_cpu_write((fpuemustats).cmp_sor_s, 0);
+ __this_cpu_write((fpuemustats).cmp_sor_d, 0);
+ __this_cpu_write((fpuemustats).cmp_sueq_s, 0);
+ __this_cpu_write((fpuemustats).cmp_sueq_d, 0);
+ __this_cpu_write((fpuemustats).cmp_sule_s, 0);
+ __this_cpu_write((fpuemustats).cmp_sule_d, 0);
+ __this_cpu_write((fpuemustats).cmp_sult_s, 0);
+ __this_cpu_write((fpuemustats).cmp_sult_d, 0);
+ __this_cpu_write((fpuemustats).cmp_sun_s, 0);
+ __this_cpu_write((fpuemustats).cmp_sun_d, 0);
+ __this_cpu_write((fpuemustats).cmp_sune_s, 0);
+ __this_cpu_write((fpuemustats).cmp_sune_d, 0);
+ __this_cpu_write((fpuemustats).cvt_d_l, 0);
+ __this_cpu_write((fpuemustats).cvt_d_s, 0);
+ __this_cpu_write((fpuemustats).cvt_d_w, 0);
+ __this_cpu_write((fpuemustats).cvt_l_s, 0);
+ __this_cpu_write((fpuemustats).cvt_l_d, 0);
+ __this_cpu_write((fpuemustats).cvt_s_d, 0);
+ __this_cpu_write((fpuemustats).cvt_s_l, 0);
+ __this_cpu_write((fpuemustats).cvt_s_w, 0);
+ __this_cpu_write((fpuemustats).cvt_w_s, 0);
+ __this_cpu_write((fpuemustats).cvt_w_d, 0);
+ __this_cpu_write((fpuemustats).div_s, 0);
+ __this_cpu_write((fpuemustats).div_d, 0);
+ __this_cpu_write((fpuemustats).floor_w_s, 0);
+ __this_cpu_write((fpuemustats).floor_w_d, 0);
+ __this_cpu_write((fpuemustats).floor_l_s, 0);
+ __this_cpu_write((fpuemustats).floor_l_d, 0);
+ __this_cpu_write((fpuemustats).maddf_s, 0);
+ __this_cpu_write((fpuemustats).maddf_d, 0);
+ __this_cpu_write((fpuemustats).max_s, 0);
+ __this_cpu_write((fpuemustats).max_d, 0);
+ __this_cpu_write((fpuemustats).maxa_s, 0);
+ __this_cpu_write((fpuemustats).maxa_d, 0);
+ __this_cpu_write((fpuemustats).min_s, 0);
+ __this_cpu_write((fpuemustats).min_d, 0);
+ __this_cpu_write((fpuemustats).mina_s, 0);
+ __this_cpu_write((fpuemustats).mina_d, 0);
+ __this_cpu_write((fpuemustats).mov_s, 0);
+ __this_cpu_write((fpuemustats).mov_d, 0);
+ __this_cpu_write((fpuemustats).msubf_s, 0);
+ __this_cpu_write((fpuemustats).msubf_d, 0);
+ __this_cpu_write((fpuemustats).mul_s, 0);
+ __this_cpu_write((fpuemustats).mul_d, 0);
+ __this_cpu_write((fpuemustats).neg_s, 0);
+ __this_cpu_write((fpuemustats).neg_d, 0);
+ __this_cpu_write((fpuemustats).recip_s, 0);
+ __this_cpu_write((fpuemustats).recip_d, 0);
+ __this_cpu_write((fpuemustats).rint_s, 0);
+ __this_cpu_write((fpuemustats).rint_d, 0);
+ __this_cpu_write((fpuemustats).round_w_s, 0);
+ __this_cpu_write((fpuemustats).round_w_d, 0);
+ __this_cpu_write((fpuemustats).round_l_s, 0);
+ __this_cpu_write((fpuemustats).round_l_d, 0);
+ __this_cpu_write((fpuemustats).rsqrt_s, 0);
+ __this_cpu_write((fpuemustats).rsqrt_d, 0);
+ __this_cpu_write((fpuemustats).sel_s, 0);
+ __this_cpu_write((fpuemustats).sel_d, 0);
+ __this_cpu_write((fpuemustats).seleqz_s, 0);
+ __this_cpu_write((fpuemustats).seleqz_d, 0);
+ __this_cpu_write((fpuemustats).selnez_s, 0);
+ __this_cpu_write((fpuemustats).selnez_d, 0);
+ __this_cpu_write((fpuemustats).sqrt_s, 0);
+ __this_cpu_write((fpuemustats).sqrt_d, 0);
+ __this_cpu_write((fpuemustats).sub_s, 0);
+ __this_cpu_write((fpuemustats).sub_d, 0);
+ __this_cpu_write((fpuemustats).trunc_w_s, 0);
+ __this_cpu_write((fpuemustats).trunc_w_d, 0);
+ __this_cpu_write((fpuemustats).trunc_l_s, 0);
+ __this_cpu_write((fpuemustats).trunc_l_d, 0);
+
+ return 0;
+}
+
+static int fpuemustats_clear_open(struct inode *inode, struct file *file)
+{
+ return single_open(file, fpuemustats_clear_show, inode->i_private);
+}
+
+static const struct file_operations fpuemustats_clear_fops = {
+ .open = fpuemustats_clear_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+};
+
static int __init debugfs_fpuemu(void)
{
- struct dentry *d, *dir;
+ struct dentry *fpuemu_debugfs_base_dir;
+ struct dentry *fpuemu_debugfs_inst_dir;
+ struct dentry *d, *reset_file;
if (!mips_debugfs_dir)
return -ENODEV;
- dir = debugfs_create_dir("fpuemustats", mips_debugfs_dir);
- if (!dir)
+
+ fpuemu_debugfs_base_dir = debugfs_create_dir("fpuemustats",
+ mips_debugfs_dir);
+ if (!fpuemu_debugfs_base_dir)
+ return -ENOMEM;
+
+ reset_file = debugfs_create_file("fpuemustats_clear", 0444,
+ mips_debugfs_dir, NULL,
+ &fpuemustats_clear_fops);
+ if (!reset_file)
return -ENOMEM;
#define FPU_EMU_STAT_OFFSET(m) \
@@ -43,7 +220,7 @@ static int __init debugfs_fpuemu(void)
#define FPU_STAT_CREATE(m) \
do { \
- d = debugfs_create_file(#m , S_IRUGO, dir, \
+ d = debugfs_create_file(#m, 0444, fpuemu_debugfs_base_dir, \
(void *)FPU_EMU_STAT_OFFSET(m), \
&fops_fpuemu_stat); \
if (!d) \
@@ -53,6 +230,7 @@ do { \
FPU_STAT_CREATE(emulated);
FPU_STAT_CREATE(loads);
FPU_STAT_CREATE(stores);
+ FPU_STAT_CREATE(branches);
FPU_STAT_CREATE(cp1ops);
FPU_STAT_CREATE(cp1xops);
FPU_STAT_CREATE(errors);
@@ -63,6 +241,139 @@ do { \
FPU_STAT_CREATE(ieee754_invalidop);
FPU_STAT_CREATE(ds_emul);
+ fpuemu_debugfs_inst_dir = debugfs_create_dir("instructions",
+ fpuemu_debugfs_base_dir);
+ if (!fpuemu_debugfs_inst_dir)
+ return -ENOMEM;
+
+#define FPU_STAT_CREATE_EX(m) \
+do { \
+ char name[32]; \
+ \
+ adjust_instruction_counter_name(name, #m); \
+ \
+ d = debugfs_create_file(name, 0444, fpuemu_debugfs_inst_dir, \
+ (void *)FPU_EMU_STAT_OFFSET(m), \
+ &fops_fpuemu_stat); \
+ if (!d) \
+ return -ENOMEM; \
+} while (0)
+
+ FPU_STAT_CREATE_EX(abs_s);
+ FPU_STAT_CREATE_EX(abs_d);
+ FPU_STAT_CREATE_EX(add_s);
+ FPU_STAT_CREATE_EX(add_d);
+ FPU_STAT_CREATE_EX(bc1eqz);
+ FPU_STAT_CREATE_EX(bc1nez);
+ FPU_STAT_CREATE_EX(ceil_w_s);
+ FPU_STAT_CREATE_EX(ceil_w_d);
+ FPU_STAT_CREATE_EX(ceil_l_s);
+ FPU_STAT_CREATE_EX(ceil_l_d);
+ FPU_STAT_CREATE_EX(class_s);
+ FPU_STAT_CREATE_EX(class_d);
+ FPU_STAT_CREATE_EX(cmp_af_s);
+ FPU_STAT_CREATE_EX(cmp_af_d);
+ FPU_STAT_CREATE_EX(cmp_eq_s);
+ FPU_STAT_CREATE_EX(cmp_eq_d);
+ FPU_STAT_CREATE_EX(cmp_le_s);
+ FPU_STAT_CREATE_EX(cmp_le_d);
+ FPU_STAT_CREATE_EX(cmp_lt_s);
+ FPU_STAT_CREATE_EX(cmp_lt_d);
+ FPU_STAT_CREATE_EX(cmp_ne_s);
+ FPU_STAT_CREATE_EX(cmp_ne_d);
+ FPU_STAT_CREATE_EX(cmp_or_s);
+ FPU_STAT_CREATE_EX(cmp_or_d);
+ FPU_STAT_CREATE_EX(cmp_ueq_s);
+ FPU_STAT_CREATE_EX(cmp_ueq_d);
+ FPU_STAT_CREATE_EX(cmp_ule_s);
+ FPU_STAT_CREATE_EX(cmp_ule_d);
+ FPU_STAT_CREATE_EX(cmp_ult_s);
+ FPU_STAT_CREATE_EX(cmp_ult_d);
+ FPU_STAT_CREATE_EX(cmp_un_s);
+ FPU_STAT_CREATE_EX(cmp_un_d);
+ FPU_STAT_CREATE_EX(cmp_une_s);
+ FPU_STAT_CREATE_EX(cmp_une_d);
+ FPU_STAT_CREATE_EX(cmp_saf_s);
+ FPU_STAT_CREATE_EX(cmp_saf_d);
+ FPU_STAT_CREATE_EX(cmp_seq_s);
+ FPU_STAT_CREATE_EX(cmp_seq_d);
+ FPU_STAT_CREATE_EX(cmp_sle_s);
+ FPU_STAT_CREATE_EX(cmp_sle_d);
+ FPU_STAT_CREATE_EX(cmp_slt_s);
+ FPU_STAT_CREATE_EX(cmp_slt_d);
+ FPU_STAT_CREATE_EX(cmp_sne_s);
+ FPU_STAT_CREATE_EX(cmp_sne_d);
+ FPU_STAT_CREATE_EX(cmp_sor_s);
+ FPU_STAT_CREATE_EX(cmp_sor_d);
+ FPU_STAT_CREATE_EX(cmp_sueq_s);
+ FPU_STAT_CREATE_EX(cmp_sueq_d);
+ FPU_STAT_CREATE_EX(cmp_sule_s);
+ FPU_STAT_CREATE_EX(cmp_sule_d);
+ FPU_STAT_CREATE_EX(cmp_sult_s);
+ FPU_STAT_CREATE_EX(cmp_sult_d);
+ FPU_STAT_CREATE_EX(cmp_sun_s);
+ FPU_STAT_CREATE_EX(cmp_sun_d);
+ FPU_STAT_CREATE_EX(cmp_sune_s);
+ FPU_STAT_CREATE_EX(cmp_sune_d);
+ FPU_STAT_CREATE_EX(cvt_d_l);
+ FPU_STAT_CREATE_EX(cvt_d_s);
+ FPU_STAT_CREATE_EX(cvt_d_w);
+ FPU_STAT_CREATE_EX(cvt_l_s);
+ FPU_STAT_CREATE_EX(cvt_l_d);
+ FPU_STAT_CREATE_EX(cvt_s_d);
+ FPU_STAT_CREATE_EX(cvt_s_l);
+ FPU_STAT_CREATE_EX(cvt_s_w);
+ FPU_STAT_CREATE_EX(cvt_w_s);
+ FPU_STAT_CREATE_EX(cvt_w_d);
+ FPU_STAT_CREATE_EX(div_s);
+ FPU_STAT_CREATE_EX(div_d);
+ FPU_STAT_CREATE_EX(floor_w_s);
+ FPU_STAT_CREATE_EX(floor_w_d);
+ FPU_STAT_CREATE_EX(floor_l_s);
+ FPU_STAT_CREATE_EX(floor_l_d);
+ FPU_STAT_CREATE_EX(maddf_s);
+ FPU_STAT_CREATE_EX(maddf_d);
+ FPU_STAT_CREATE_EX(max_s);
+ FPU_STAT_CREATE_EX(max_d);
+ FPU_STAT_CREATE_EX(maxa_s);
+ FPU_STAT_CREATE_EX(maxa_d);
+ FPU_STAT_CREATE_EX(min_s);
+ FPU_STAT_CREATE_EX(min_d);
+ FPU_STAT_CREATE_EX(mina_s);
+ FPU_STAT_CREATE_EX(mina_d);
+ FPU_STAT_CREATE_EX(mov_s);
+ FPU_STAT_CREATE_EX(mov_d);
+ FPU_STAT_CREATE_EX(msubf_s);
+ FPU_STAT_CREATE_EX(msubf_d);
+ FPU_STAT_CREATE_EX(mul_s);
+ FPU_STAT_CREATE_EX(mul_d);
+ FPU_STAT_CREATE_EX(neg_s);
+ FPU_STAT_CREATE_EX(neg_d);
+ FPU_STAT_CREATE_EX(recip_s);
+ FPU_STAT_CREATE_EX(recip_d);
+ FPU_STAT_CREATE_EX(rint_s);
+ FPU_STAT_CREATE_EX(rint_d);
+ FPU_STAT_CREATE_EX(round_w_s);
+ FPU_STAT_CREATE_EX(round_w_d);
+ FPU_STAT_CREATE_EX(round_l_s);
+ FPU_STAT_CREATE_EX(round_l_d);
+ FPU_STAT_CREATE_EX(rsqrt_s);
+ FPU_STAT_CREATE_EX(rsqrt_d);
+ FPU_STAT_CREATE_EX(sel_s);
+ FPU_STAT_CREATE_EX(sel_d);
+ FPU_STAT_CREATE_EX(seleqz_s);
+ FPU_STAT_CREATE_EX(seleqz_d);
+ FPU_STAT_CREATE_EX(selnez_s);
+ FPU_STAT_CREATE_EX(selnez_d);
+ FPU_STAT_CREATE_EX(sqrt_s);
+ FPU_STAT_CREATE_EX(sqrt_d);
+ FPU_STAT_CREATE_EX(sub_s);
+ FPU_STAT_CREATE_EX(sub_d);
+ FPU_STAT_CREATE_EX(trunc_w_s);
+ FPU_STAT_CREATE_EX(trunc_w_d);
+ FPU_STAT_CREATE_EX(trunc_l_s);
+ FPU_STAT_CREATE_EX(trunc_l_d);
+
return 0;
}
arch_initcall(debugfs_fpuemu);
diff --git a/arch/mips/math-emu/sp_fmax.c b/arch/mips/math-emu/sp_fmax.c
index 4d000844e48e..74a5a00d2f22 100644
--- a/arch/mips/math-emu/sp_fmax.c
+++ b/arch/mips/math-emu/sp_fmax.c
@@ -47,14 +47,26 @@ union ieee754sp ieee754sp_fmax(union ieee754sp x, union ieee754sp y)
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
return ieee754sp_nanxcpt(x);
- /* numbers are preferred to NaNs */
+ /*
+ * Quiet NaN handling
+ */
+
+ /*
+ * The case of both inputs quiet NaNs
+ */
+ case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
+ return x;
+
+ /*
+ * The cases of exactly one input quiet NaN (numbers
+ * are here preferred as returned values to NaNs)
+ */
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
return x;
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -80,9 +92,7 @@ union ieee754sp ieee754sp_fmax(union ieee754sp x, union ieee754sp y)
return ys ? x : y;
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
- if (xs == ys)
- return x;
- return ieee754sp_zero(1);
+ return ieee754sp_zero(xs & ys);
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
SPDNORMX;
@@ -106,16 +116,32 @@ union ieee754sp ieee754sp_fmax(union ieee754sp x, union ieee754sp y)
else if (xs < ys)
return x;
- /* Compare exponent */
- if (xe > ye)
- return x;
- else if (xe < ye)
- return y;
+ /* Signs of inputs are equal, let's compare exponents */
+ if (xs == 0) {
+ /* Inputs are both positive */
+ if (xe > ye)
+ return x;
+ else if (xe < ye)
+ return y;
+ } else {
+ /* Inputs are both negative */
+ if (xe > ye)
+ return y;
+ else if (xe < ye)
+ return x;
+ }
- /* Compare mantissa */
+ /* Signs and exponents of inputs are equal, let's compare mantissas */
+ if (xs == 0) {
+ /* Inputs are both positive, with equal signs and exponents */
+ if (xm <= ym)
+ return y;
+ return x;
+ }
+ /* Inputs are both negative, with equal signs and exponents */
if (xm <= ym)
- return y;
- return x;
+ return x;
+ return y;
}
union ieee754sp ieee754sp_fmaxa(union ieee754sp x, union ieee754sp y)
@@ -147,14 +173,26 @@ union ieee754sp ieee754sp_fmaxa(union ieee754sp x, union ieee754sp y)
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
return ieee754sp_nanxcpt(x);
- /* numbers are preferred to NaNs */
+ /*
+ * Quiet NaN handling
+ */
+
+ /*
+ * The case of both inputs quiet NaNs
+ */
+ case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
+ return x;
+
+ /*
+ * The cases of exactly one input quiet NaN (numbers
+ * are here preferred as returned values to NaNs)
+ */
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
return x;
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -164,6 +202,9 @@ union ieee754sp ieee754sp_fmaxa(union ieee754sp x, union ieee754sp y)
/*
* Infinity and zero handling
*/
+ case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
+ return ieee754sp_inf(xs & ys);
+
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_DNORM):
@@ -171,7 +212,6 @@ union ieee754sp ieee754sp_fmaxa(union ieee754sp x, union ieee754sp y)
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_ZERO):
return x;
- case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_INF):
@@ -180,9 +220,7 @@ union ieee754sp ieee754sp_fmaxa(union ieee754sp x, union ieee754sp y)
return y;
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
- if (xs == ys)
- return x;
- return ieee754sp_zero(1);
+ return ieee754sp_zero(xs & ys);
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
SPDNORMX;
@@ -207,7 +245,11 @@ union ieee754sp ieee754sp_fmaxa(union ieee754sp x, union ieee754sp y)
return y;
/* Compare mantissa */
- if (xm <= ym)
+ if (xm < ym)
return y;
- return x;
+ else if (xm > ym)
+ return x;
+ else if (xs == 0)
+ return x;
+ return y;
}
diff --git a/arch/mips/math-emu/sp_fmin.c b/arch/mips/math-emu/sp_fmin.c
index 4eb1bb9e9dec..c51385f46b09 100644
--- a/arch/mips/math-emu/sp_fmin.c
+++ b/arch/mips/math-emu/sp_fmin.c
@@ -47,14 +47,26 @@ union ieee754sp ieee754sp_fmin(union ieee754sp x, union ieee754sp y)
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
return ieee754sp_nanxcpt(x);
- /* numbers are preferred to NaNs */
+ /*
+ * Quiet NaN handling
+ */
+
+ /*
+ * The case of both inputs quiet NaNs
+ */
+ case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
+ return x;
+
+ /*
+ * The cases of exactly one input quiet NaN (numbers
+ * are here preferred as returned values to NaNs)
+ */
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
return x;
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -80,9 +92,7 @@ union ieee754sp ieee754sp_fmin(union ieee754sp x, union ieee754sp y)
return ys ? y : x;
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
- if (xs == ys)
- return x;
- return ieee754sp_zero(1);
+ return ieee754sp_zero(xs | ys);
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
SPDNORMX;
@@ -106,16 +116,32 @@ union ieee754sp ieee754sp_fmin(union ieee754sp x, union ieee754sp y)
else if (xs < ys)
return y;
- /* Compare exponent */
- if (xe > ye)
- return y;
- else if (xe < ye)
- return x;
+ /* Signs of inputs are the same, let's compare exponents */
+ if (xs == 0) {
+ /* Inputs are both positive */
+ if (xe > ye)
+ return y;
+ else if (xe < ye)
+ return x;
+ } else {
+ /* Inputs are both negative */
+ if (xe > ye)
+ return x;
+ else if (xe < ye)
+ return y;
+ }
- /* Compare mantissa */
+ /* Signs and exponents of inputs are equal, let's compare mantissas */
+ if (xs == 0) {
+ /* Inputs are both positive, with equal signs and exponents */
+ if (xm <= ym)
+ return x;
+ return y;
+ }
+ /* Inputs are both negative, with equal signs and exponents */
if (xm <= ym)
- return x;
- return y;
+ return y;
+ return x;
}
union ieee754sp ieee754sp_fmina(union ieee754sp x, union ieee754sp y)
@@ -147,14 +173,26 @@ union ieee754sp ieee754sp_fmina(union ieee754sp x, union ieee754sp y)
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
return ieee754sp_nanxcpt(x);
- /* numbers are preferred to NaNs */
+ /*
+ * Quiet NaN handling
+ */
+
+ /*
+ * The case of both inputs quiet NaNs
+ */
+ case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
+ return x;
+
+ /*
+ * The cases of exactly one input quiet NaN (numbers
+ * are here preferred as returned values to NaNs)
+ */
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
return x;
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -164,25 +202,25 @@ union ieee754sp ieee754sp_fmina(union ieee754sp x, union ieee754sp y)
/*
* Infinity and zero handling
*/
+ case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
+ return ieee754sp_inf(xs | ys);
+
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_DNORM):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_ZERO):
- return x;
+ return y;
- case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_INF):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_DNORM):
- return y;
+ return x;
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
- if (xs == ys)
- return x;
- return ieee754sp_zero(1);
+ return ieee754sp_zero(xs | ys);
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
SPDNORMX;
@@ -207,7 +245,11 @@ union ieee754sp ieee754sp_fmina(union ieee754sp x, union ieee754sp y)
return x;
/* Compare mantissa */
- if (xm <= ym)
+ if (xm < ym)
+ return x;
+ else if (xm > ym)
+ return y;
+ else if (xs == 1)
return x;
return y;
}
diff --git a/arch/mips/math-emu/sp_maddf.c b/arch/mips/math-emu/sp_maddf.c
index c91d5e5d9b5f..7195fe785d81 100644
--- a/arch/mips/math-emu/sp_maddf.c
+++ b/arch/mips/math-emu/sp_maddf.c
@@ -14,9 +14,6 @@
#include "ieee754sp.h"
-enum maddf_flags {
- maddf_negate_product = 1 << 0,
-};
static union ieee754sp _sp_maddf(union ieee754sp z, union ieee754sp x,
union ieee754sp y, enum maddf_flags flags)
@@ -24,14 +21,8 @@ static union ieee754sp _sp_maddf(union ieee754sp z, union ieee754sp x,
int re;
int rs;
unsigned rm;
- unsigned short lxm;
- unsigned short hxm;
- unsigned short lym;
- unsigned short hym;
- unsigned lrm;
- unsigned hrm;
- unsigned t;
- unsigned at;
+ uint64_t rm64;
+ uint64_t zm64;
int s;
COMPXSP;
@@ -48,51 +39,35 @@ static union ieee754sp _sp_maddf(union ieee754sp z, union ieee754sp x,
ieee754_clearcx();
- switch (zc) {
- case IEEE754_CLASS_SNAN:
- ieee754_setcx(IEEE754_INVALID_OPERATION);
+ /*
+ * Handle the cases when at least one of x, y or z is a NaN.
+ * Order of precedence is sNaN, qNaN and z, x, y.
+ */
+ if (zc == IEEE754_CLASS_SNAN)
return ieee754sp_nanxcpt(z);
- case IEEE754_CLASS_DNORM:
- SPDNORMZ;
- /* QNAN and ZERO cases are handled separately below */
- }
-
- switch (CLPAIR(xc, yc)) {
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_SNAN):
- case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_SNAN):
- case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_SNAN):
- case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_SNAN):
- case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_SNAN):
+ if (xc == IEEE754_CLASS_SNAN)
+ return ieee754sp_nanxcpt(x);
+ if (yc == IEEE754_CLASS_SNAN)
return ieee754sp_nanxcpt(y);
+ if (zc == IEEE754_CLASS_QNAN)
+ return z;
+ if (xc == IEEE754_CLASS_QNAN)
+ return x;
+ if (yc == IEEE754_CLASS_QNAN)
+ return y;
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_SNAN):
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_QNAN):
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_ZERO):
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_NORM):
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_DNORM):
- case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
- return ieee754sp_nanxcpt(x);
+ if (zc == IEEE754_CLASS_DNORM)
+ SPDNORMZ;
+ /* ZERO z cases are handled separately below */
- case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
- case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
- case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
- case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
- return y;
+ switch (CLPAIR(xc, yc)) {
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
- case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_INF):
- return x;
/*
* Infinity handling
*/
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_INF):
- if (zc == IEEE754_CLASS_QNAN)
- return z;
ieee754_setcx(IEEE754_INVALID_OPERATION);
return ieee754sp_indef();
@@ -101,9 +76,27 @@ static union ieee754sp _sp_maddf(union ieee754sp z, union ieee754sp x,
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_NORM):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_DNORM):
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
- if (zc == IEEE754_CLASS_QNAN)
- return z;
- return ieee754sp_inf(xs ^ ys);
+ if ((zc == IEEE754_CLASS_INF) &&
+ ((!(flags & MADDF_NEGATE_PRODUCT) && (zs != (xs ^ ys))) ||
+ ((flags & MADDF_NEGATE_PRODUCT) && (zs == (xs ^ ys))))) {
+ /*
+ * Cases of addition of infinities with opposite signs
+ * or subtraction of infinities with same signs.
+ */
+ ieee754_setcx(IEEE754_INVALID_OPERATION);
+ return ieee754sp_indef();
+ }
+ /*
+ * z is here either not an infinity, or an infinity having the
+ * same sign as product (x*y) (in case of MADDF.D instruction)
+ * or product -(x*y) (in MSUBF.D case). The result must be an
+ * infinity, and its sign is determined only by the value of
+ * (flags & MADDF_NEGATE_PRODUCT) and the signs of x and y.
+ */
+ if (flags & MADDF_NEGATE_PRODUCT)
+ return ieee754sp_inf(1 ^ (xs ^ ys));
+ else
+ return ieee754sp_inf(xs ^ ys);
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_NORM):
@@ -112,32 +105,42 @@ static union ieee754sp _sp_maddf(union ieee754sp z, union ieee754sp x,
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_ZERO):
if (zc == IEEE754_CLASS_INF)
return ieee754sp_inf(zs);
- /* Multiplication is 0 so just return z */
+ if (zc == IEEE754_CLASS_ZERO) {
+ /* Handle cases +0 + (-0) and similar ones. */
+ if ((!(flags & MADDF_NEGATE_PRODUCT)
+ && (zs == (xs ^ ys))) ||
+ ((flags & MADDF_NEGATE_PRODUCT)
+ && (zs != (xs ^ ys))))
+ /*
+ * Cases of addition of zeros of equal signs
+ * or subtraction of zeroes of opposite signs.
+ * The sign of the resulting zero is in any
+ * such case determined only by the sign of z.
+ */
+ return z;
+
+ return ieee754sp_zero(ieee754_csr.rm == FPU_CSR_RD);
+ }
+ /* x*y is here 0, and z is not 0, so just return z */
return z;
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
SPDNORMX;
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_DNORM):
- if (zc == IEEE754_CLASS_QNAN)
- return z;
- else if (zc == IEEE754_CLASS_INF)
+ if (zc == IEEE754_CLASS_INF)
return ieee754sp_inf(zs);
SPDNORMY;
break;
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_NORM):
- if (zc == IEEE754_CLASS_QNAN)
- return z;
- else if (zc == IEEE754_CLASS_INF)
+ if (zc == IEEE754_CLASS_INF)
return ieee754sp_inf(zs);
SPDNORMX;
break;
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_NORM):
- if (zc == IEEE754_CLASS_QNAN)
- return z;
- else if (zc == IEEE754_CLASS_INF)
+ if (zc == IEEE754_CLASS_INF)
return ieee754sp_inf(zs);
/* fall through to real computations */
}
@@ -158,111 +161,93 @@ static union ieee754sp _sp_maddf(union ieee754sp z, union ieee754sp x,
re = xe + ye;
rs = xs ^ ys;
- if (flags & maddf_negate_product)
+ if (flags & MADDF_NEGATE_PRODUCT)
rs ^= 1;
- /* shunt to top of word */
- xm <<= 32 - (SP_FBITS + 1);
- ym <<= 32 - (SP_FBITS + 1);
-
- /*
- * Multiply 32 bits xm, ym to give high 32 bits rm with stickness.
- */
- lxm = xm & 0xffff;
- hxm = xm >> 16;
- lym = ym & 0xffff;
- hym = ym >> 16;
-
- lrm = lxm * lym; /* 16 * 16 => 32 */
- hrm = hxm * hym; /* 16 * 16 => 32 */
-
- t = lxm * hym; /* 16 * 16 => 32 */
- at = lrm + (t << 16);
- hrm += at < lrm;
- lrm = at;
- hrm = hrm + (t >> 16);
+ /* Multiple 24 bit xm and ym to give 48 bit results */
+ rm64 = (uint64_t)xm * ym;
- t = hxm * lym; /* 16 * 16 => 32 */
- at = lrm + (t << 16);
- hrm += at < lrm;
- lrm = at;
- hrm = hrm + (t >> 16);
+ /* Shunt to top of word */
+ rm64 = rm64 << 16;
- rm = hrm | (lrm != 0);
-
- /*
- * Sticky shift down to normal rounding precision.
- */
- if ((int) rm < 0) {
- rm = (rm >> (32 - (SP_FBITS + 1 + 3))) |
- ((rm << (SP_FBITS + 1 + 3)) != 0);
+ /* Put explicit bit at bit 62 if necessary */
+ if ((int64_t) rm64 < 0) {
+ rm64 = rm64 >> 1;
re++;
- } else {
- rm = (rm >> (32 - (SP_FBITS + 1 + 3 + 1))) |
- ((rm << (SP_FBITS + 1 + 3 + 1)) != 0);
}
- assert(rm & (SP_HIDDEN_BIT << 3));
-
- if (zc == IEEE754_CLASS_ZERO)
- return ieee754sp_format(rs, re, rm);
- /* And now the addition */
+ assert(rm64 & (1 << 62));
- assert(zm & SP_HIDDEN_BIT);
+ if (zc == IEEE754_CLASS_ZERO) {
+ /*
+ * Move explicit bit from bit 62 to bit 26 since the
+ * ieee754sp_format code expects the mantissa to be
+ * 27 bits wide (24 + 3 rounding bits).
+ */
+ rm = XSPSRS64(rm64, (62 - 26));
+ return ieee754sp_format(rs, re, rm);
+ }
- /*
- * Provide guard,round and stick bit space.
- */
- zm <<= 3;
+ /* Move explicit bit from bit 23 to bit 62 */
+ zm64 = (uint64_t)zm << (62 - 23);
+ assert(zm64 & (1 << 62));
+ /* Make the exponents the same */
if (ze > re) {
/*
* Have to shift r fraction right to align.
*/
s = ze - re;
- rm = XSPSRS(rm, s);
+ rm64 = XSPSRS64(rm64, s);
re += s;
} else if (re > ze) {
/*
* Have to shift z fraction right to align.
*/
s = re - ze;
- zm = XSPSRS(zm, s);
+ zm64 = XSPSRS64(zm64, s);
ze += s;
}
assert(ze == re);
assert(ze <= SP_EMAX);
+ /* Do the addition */
if (zs == rs) {
/*
- * Generate 28 bit result of adding two 27 bit numbers
- * leaving result in zm, zs and ze.
+ * Generate 64 bit result by adding two 63 bit numbers
+ * leaving result in zm64, zs and ze.
*/
- zm = zm + rm;
-
- if (zm >> (SP_FBITS + 1 + 3)) { /* carry out */
- zm = XSPSRS1(zm);
+ zm64 = zm64 + rm64;
+ if ((int64_t)zm64 < 0) { /* carry out */
+ zm64 = XSPSRS1(zm64);
ze++;
}
} else {
- if (zm >= rm) {
- zm = zm - rm;
+ if (zm64 >= rm64) {
+ zm64 = zm64 - rm64;
} else {
- zm = rm - zm;
+ zm64 = rm64 - zm64;
zs = rs;
}
- if (zm == 0)
+ if (zm64 == 0)
return ieee754sp_zero(ieee754_csr.rm == FPU_CSR_RD);
/*
- * Normalize in extended single precision
+ * Put explicit bit at bit 62 if necessary.
*/
- while ((zm >> (SP_MBITS + 3)) == 0) {
- zm <<= 1;
+ while ((zm64 >> 62) == 0) {
+ zm64 <<= 1;
ze--;
}
-
}
+
+ /*
+ * Move explicit bit from bit 62 to bit 26 since the
+ * ieee754sp_format code expects the mantissa to be
+ * 27 bits wide (24 + 3 rounding bits).
+ */
+ zm = XSPSRS64(zm64, (62 - 26));
+
return ieee754sp_format(zs, ze, zm);
}
@@ -275,5 +260,5 @@ union ieee754sp ieee754sp_maddf(union ieee754sp z, union ieee754sp x,
union ieee754sp ieee754sp_msubf(union ieee754sp z, union ieee754sp x,
union ieee754sp y)
{
- return _sp_maddf(z, x, y, maddf_negate_product);
+ return _sp_maddf(z, x, y, MADDF_NEGATE_PRODUCT);
}
diff --git a/arch/mips/math-emu/sp_rint.c b/arch/mips/math-emu/sp_rint.c
new file mode 100644
index 000000000000..70765b17e196
--- /dev/null
+++ b/arch/mips/math-emu/sp_rint.c
@@ -0,0 +1,90 @@
+/* IEEE754 floating point arithmetic
+ * single precision
+ */
+/*
+ * MIPS floating point support
+ * Copyright (C) 1994-2000 Algorithmics Ltd.
+ * Copyright (C) 2017 Imagination Technologies, Ltd.
+ * Author: Aleksandar Markovic <aleksandar.markovic@imgtec.com>
+ *
+ * This program is free software; you can distribute it and/or modify it
+ * under the terms of the GNU General Public License (Version 2) as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.
+ */
+
+#include "ieee754sp.h"
+
+union ieee754sp ieee754sp_rint(union ieee754sp x)
+{
+ union ieee754sp ret;
+ u32 residue;
+ int sticky;
+ int round;
+ int odd;
+
+ COMPXDP; /* <-- DP needed for 64-bit mantissa tmp */
+
+ ieee754_clearcx();
+
+ EXPLODEXSP;
+ FLUSHXSP;
+
+ if (xc == IEEE754_CLASS_SNAN)
+ return ieee754sp_nanxcpt(x);
+
+ if ((xc == IEEE754_CLASS_QNAN) ||
+ (xc == IEEE754_CLASS_INF) ||
+ (xc == IEEE754_CLASS_ZERO))
+ return x;
+
+ if (xe >= SP_FBITS)
+ return x;
+
+ if (xe < -1) {
+ residue = xm;
+ round = 0;
+ sticky = residue != 0;
+ xm = 0;
+ } else {
+ residue = xm << (xe + 1);
+ residue <<= 31 - SP_FBITS;
+ round = (residue >> 31) != 0;
+ sticky = (residue << 1) != 0;
+ xm >>= SP_FBITS - xe;
+ }
+
+ odd = (xm & 0x1) != 0x0;
+
+ switch (ieee754_csr.rm) {
+ case FPU_CSR_RN: /* toward nearest */
+ if (round && (sticky || odd))
+ xm++;
+ break;
+ case FPU_CSR_RZ: /* toward zero */
+ break;
+ case FPU_CSR_RU: /* toward +infinity */
+ if ((round || sticky) && !xs)
+ xm++;
+ break;
+ case FPU_CSR_RD: /* toward -infinity */
+ if ((round || sticky) && xs)
+ xm++;
+ break;
+ }
+
+ if (round || sticky)
+ ieee754_setcx(IEEE754_INEXACT);
+
+ ret = ieee754sp_flong(xm);
+ SPSIGN(ret) = xs;
+
+ return ret;
+}
diff --git a/arch/mips/mm/Makefile b/arch/mips/mm/Makefile
index b4cc8811a664..c463bdad45c7 100644
--- a/arch/mips/mm/Makefile
+++ b/arch/mips/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/MIPS-specific parts of the memory manager.
#
diff --git a/arch/mips/mm/c-r3k.c b/arch/mips/mm/c-r3k.c
index 21e4e662c1fa..3466fcdae0ca 100644
--- a/arch/mips/mm/c-r3k.c
+++ b/arch/mips/mm/c-r3k.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* r2300.c: R2000 and R3000 specific mmu/cache code.
*
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index 81d6a15c93d0..6f534b209971 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -37,7 +37,7 @@
#include <asm/cacheflush.h> /* for run_uncached() */
#include <asm/traps.h>
#include <asm/dma-coherence.h>
-#include <asm/mips-cm.h>
+#include <asm/mips-cps.h>
/*
* Bits describing what cache ops an SMP callback function may perform.
diff --git a/arch/mips/mm/c-tx39.c b/arch/mips/mm/c-tx39.c
index 5c282583edf1..5f6c099a9457 100644
--- a/arch/mips/mm/c-tx39.c
+++ b/arch/mips/mm/c-tx39.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* r2300.c: R2000 and R3000 specific mmu/cache code.
*
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index 899e46279902..44ac64d51827 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -20,6 +20,7 @@
#include <asm/processor.h>
#include <asm/cpu.h>
#include <asm/cpu-features.h>
+#include <asm/setup.h>
/* Cache operations. */
void (*flush_cache_all)(void);
@@ -44,7 +45,6 @@ void (*__flush_cache_vunmap)(void);
void (*__flush_kernel_vmap_range)(unsigned long vaddr, int size);
EXPORT_SYMBOL_GPL(__flush_kernel_vmap_range);
-void (*__invalidate_kernel_vmap_range)(unsigned long vaddr, int size);
/* MIPS specific cache operations */
void (*flush_cache_sigtramp)(unsigned long addr);
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index 8e78251eccc2..c01bd20d0208 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -127,23 +127,6 @@ static gfp_t massage_gfp_flags(const struct device *dev, gfp_t gfp)
return gfp | dma_flag;
}
-static void *mips_dma_alloc_noncoherent(struct device *dev, size_t size,
- dma_addr_t * dma_handle, gfp_t gfp)
-{
- void *ret;
-
- gfp = massage_gfp_flags(dev, gfp);
-
- ret = (void *) __get_free_pages(gfp, get_order(size));
-
- if (ret != NULL) {
- memset(ret, 0, size);
- *dma_handle = plat_map_dma_mem(dev, ret, size);
- }
-
- return ret;
-}
-
static void *mips_dma_alloc_coherent(struct device *dev, size_t size,
dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs)
{
@@ -151,13 +134,6 @@ static void *mips_dma_alloc_coherent(struct device *dev, size_t size,
struct page *page = NULL;
unsigned int count = PAGE_ALIGN(size) >> PAGE_SHIFT;
- /*
- * XXX: seems like the coherent and non-coherent implementations could
- * be consolidated.
- */
- if (attrs & DMA_ATTR_NON_CONSISTENT)
- return mips_dma_alloc_noncoherent(dev, size, dma_handle, gfp);
-
gfp = massage_gfp_flags(dev, gfp);
if (IS_ENABLED(CONFIG_DMA_CMA) && gfpflags_allow_blocking(gfp))
@@ -172,7 +148,8 @@ static void *mips_dma_alloc_coherent(struct device *dev, size_t size,
ret = page_address(page);
memset(ret, 0, size);
*dma_handle = plat_map_dma_mem(dev, ret, size);
- if (!plat_device_is_coherent(dev)) {
+ if (!(attrs & DMA_ATTR_NON_CONSISTENT) &&
+ !plat_device_is_coherent(dev)) {
dma_cache_wback_inv((unsigned long) ret, size);
ret = UNCAC_ADDR(ret);
}
@@ -180,14 +157,6 @@ static void *mips_dma_alloc_coherent(struct device *dev, size_t size,
return ret;
}
-
-static void mips_dma_free_noncoherent(struct device *dev, size_t size,
- void *vaddr, dma_addr_t dma_handle)
-{
- plat_unmap_dma_mem(dev, dma_handle, size, DMA_BIDIRECTIONAL);
- free_pages((unsigned long) vaddr, get_order(size));
-}
-
static void mips_dma_free_coherent(struct device *dev, size_t size, void *vaddr,
dma_addr_t dma_handle, unsigned long attrs)
{
@@ -195,14 +164,9 @@ static void mips_dma_free_coherent(struct device *dev, size_t size, void *vaddr,
unsigned int count = PAGE_ALIGN(size) >> PAGE_SHIFT;
struct page *page = NULL;
- if (attrs & DMA_ATTR_NON_CONSISTENT) {
- mips_dma_free_noncoherent(dev, size, vaddr, dma_handle);
- return;
- }
-
plat_unmap_dma_mem(dev, dma_handle, size, DMA_BIDIRECTIONAL);
- if (!plat_device_is_coherent(dev))
+ if (!(attrs & DMA_ATTR_NON_CONSISTENT) && !plat_device_is_coherent(dev))
addr = CAC_ADDR(addr);
page = virt_to_page((void *) addr);
@@ -409,12 +373,12 @@ static void mips_dma_sync_sg_for_device(struct device *dev,
}
}
-int mips_dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
+static int mips_dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
{
return 0;
}
-int mips_dma_supported(struct device *dev, u64 mask)
+static int mips_dma_supported(struct device *dev, u64 mask)
{
return plat_dma_supported(dev, mask);
}
diff --git a/arch/mips/mm/gup.c b/arch/mips/mm/gup.c
index d8c3c159289a..1e4658eee13f 100644
--- a/arch/mips/mm/gup.c
+++ b/arch/mips/mm/gup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Lockless get_user_pages_fast for MIPS
*
diff --git a/arch/mips/mm/highmem.c b/arch/mips/mm/highmem.c
index f13f51003bd8..d08e6d7d533b 100644
--- a/arch/mips/mm/highmem.c
+++ b/arch/mips/mm/highmem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/compiler.h>
#include <linux/init.h>
#include <linux/export.h>
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index 8ce2983a7015..5f6ea7d746de 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -31,6 +31,7 @@
#include <linux/gfp.h>
#include <linux/kcore.h>
#include <linux/export.h>
+#include <linux/initrd.h>
#include <asm/asm-offsets.h>
#include <asm/bootinfo.h>
diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c
index 28adeabe851f..33d3251ecd37 100644
--- a/arch/mips/mm/mmap.c
+++ b/arch/mips/mm/mmap.c
@@ -7,6 +7,7 @@
* written by Ralf Baechle <ralf@linux-mips.org>
*/
#include <linux/compiler.h>
+#include <linux/elf-randomize.h>
#include <linux/errno.h>
#include <linux/mm.h>
#include <linux/mman.h>
diff --git a/arch/mips/mm/sc-debugfs.c b/arch/mips/mm/sc-debugfs.c
index 7e945e310b44..2e2132d3f5c7 100644
--- a/arch/mips/mm/sc-debugfs.c
+++ b/arch/mips/mm/sc-debugfs.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2015 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/mm/sc-ip22.c b/arch/mips/mm/sc-ip22.c
index f293a97cb885..ea059cd86496 100644
--- a/arch/mips/mm/sc-ip22.c
+++ b/arch/mips/mm/sc-ip22.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* sc-ip22.c: Indy cache management functions.
*
diff --git a/arch/mips/mm/sc-mips.c b/arch/mips/mm/sc-mips.c
index c909c3342729..548acb7f8557 100644
--- a/arch/mips/mm/sc-mips.c
+++ b/arch/mips/mm/sc-mips.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2006 Chris Dearman (chris@mips.com),
*/
@@ -14,7 +15,7 @@
#include <asm/pgtable.h>
#include <asm/mmu_context.h>
#include <asm/r4kcache.h>
-#include <asm/mips-cm.h>
+#include <asm/mips-cps.h>
/*
* MIPS32/MIPS64 L2 cache handling
@@ -63,34 +64,25 @@ static void mips_sc_prefetch_enable(void)
* prefetching for both code & data, for all ports.
*/
pftctl = read_gcr_l2_pft_control();
- if (pftctl & CM_GCR_L2_PFT_CONTROL_NPFT_MSK) {
- pftctl &= ~CM_GCR_L2_PFT_CONTROL_PAGEMASK_MSK;
- pftctl |= PAGE_MASK & CM_GCR_L2_PFT_CONTROL_PAGEMASK_MSK;
- pftctl |= CM_GCR_L2_PFT_CONTROL_PFTEN_MSK;
+ if (pftctl & CM_GCR_L2_PFT_CONTROL_NPFT) {
+ pftctl &= ~CM_GCR_L2_PFT_CONTROL_PAGEMASK;
+ pftctl |= PAGE_MASK & CM_GCR_L2_PFT_CONTROL_PAGEMASK;
+ pftctl |= CM_GCR_L2_PFT_CONTROL_PFTEN;
write_gcr_l2_pft_control(pftctl);
- pftctl = read_gcr_l2_pft_control_b();
- pftctl |= CM_GCR_L2_PFT_CONTROL_B_PORTID_MSK;
- pftctl |= CM_GCR_L2_PFT_CONTROL_B_CEN_MSK;
- write_gcr_l2_pft_control_b(pftctl);
+ set_gcr_l2_pft_control_b(CM_GCR_L2_PFT_CONTROL_B_PORTID |
+ CM_GCR_L2_PFT_CONTROL_B_CEN);
}
}
static void mips_sc_prefetch_disable(void)
{
- unsigned long pftctl;
-
if (mips_cm_revision() < CM_REV_CM2_5)
return;
- pftctl = read_gcr_l2_pft_control();
- pftctl &= ~CM_GCR_L2_PFT_CONTROL_PFTEN_MSK;
- write_gcr_l2_pft_control(pftctl);
-
- pftctl = read_gcr_l2_pft_control_b();
- pftctl &= ~CM_GCR_L2_PFT_CONTROL_B_PORTID_MSK;
- pftctl &= ~CM_GCR_L2_PFT_CONTROL_B_CEN_MSK;
- write_gcr_l2_pft_control_b(pftctl);
+ clear_gcr_l2_pft_control(CM_GCR_L2_PFT_CONTROL_PFTEN);
+ clear_gcr_l2_pft_control_b(CM_GCR_L2_PFT_CONTROL_B_PORTID |
+ CM_GCR_L2_PFT_CONTROL_B_CEN);
}
static bool mips_sc_prefetch_is_enabled(void)
@@ -101,9 +93,9 @@ static bool mips_sc_prefetch_is_enabled(void)
return false;
pftctl = read_gcr_l2_pft_control();
- if (!(pftctl & CM_GCR_L2_PFT_CONTROL_NPFT_MSK))
+ if (!(pftctl & CM_GCR_L2_PFT_CONTROL_NPFT))
return false;
- return !!(pftctl & CM_GCR_L2_PFT_CONTROL_PFTEN_MSK);
+ return !!(pftctl & CM_GCR_L2_PFT_CONTROL_PFTEN);
}
static struct bcache_ops mips_sc_ops = {
@@ -160,21 +152,21 @@ static int __init mips_sc_probe_cm3(void)
unsigned long cfg = read_gcr_l2_config();
unsigned long sets, line_sz, assoc;
- if (cfg & CM_GCR_L2_CONFIG_BYPASS_MSK)
+ if (cfg & CM_GCR_L2_CONFIG_BYPASS)
return 0;
- sets = cfg & CM_GCR_L2_CONFIG_SET_SIZE_MSK;
- sets >>= CM_GCR_L2_CONFIG_SET_SIZE_SHF;
+ sets = cfg & CM_GCR_L2_CONFIG_SET_SIZE;
+ sets >>= __ffs(CM_GCR_L2_CONFIG_SET_SIZE);
if (sets)
c->scache.sets = 64 << sets;
- line_sz = cfg & CM_GCR_L2_CONFIG_LINE_SIZE_MSK;
- line_sz >>= CM_GCR_L2_CONFIG_LINE_SIZE_SHF;
+ line_sz = cfg & CM_GCR_L2_CONFIG_LINE_SIZE;
+ line_sz >>= __ffs(CM_GCR_L2_CONFIG_LINE_SIZE);
if (line_sz)
c->scache.linesz = 2 << line_sz;
- assoc = cfg & CM_GCR_L2_CONFIG_ASSOC_MSK;
- assoc >>= CM_GCR_L2_CONFIG_ASSOC_SHF;
+ assoc = cfg & CM_GCR_L2_CONFIG_ASSOC;
+ assoc >>= __ffs(CM_GCR_L2_CONFIG_ASSOC);
c->scache.ways = assoc + 1;
c->scache.waysize = c->scache.sets * c->scache.linesz;
c->scache.waybit = __ffs(c->scache.waysize);
diff --git a/arch/mips/mm/sc-r5k.c b/arch/mips/mm/sc-r5k.c
index 751b5cd18bf2..c7b94c951d98 100644
--- a/arch/mips/mm/sc-r5k.c
+++ b/arch/mips/mm/sc-r5k.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1997, 2001 Ralf Baechle (ralf@gnu.org),
* derived from r4xx0.c by David S. Miller (davem@davemloft.net).
diff --git a/arch/mips/mm/sc-rm7k.c b/arch/mips/mm/sc-rm7k.c
index 78f900c59276..e9e3777a7848 100644
--- a/arch/mips/mm/sc-rm7k.c
+++ b/arch/mips/mm/sc-rm7k.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* sc-rm7k.c: RM7000 cache management functions.
*
diff --git a/arch/mips/mm/tlb-r3k.c b/arch/mips/mm/tlb-r3k.c
index 1290b995695d..6f589e0112ce 100644
--- a/arch/mips/mm/tlb-r3k.c
+++ b/arch/mips/mm/tlb-r3k.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* r2300.c: R2000 and R3000 specific mmu/cache code.
*
diff --git a/arch/mips/mm/tlbex-fault.S b/arch/mips/mm/tlbex-fault.S
index 318855eb5f80..77db401fc620 100644
--- a/arch/mips/mm/tlbex-fault.S
+++ b/arch/mips/mm/tlbex-fault.S
@@ -12,14 +12,15 @@
.macro tlb_do_page_fault, write
NESTED(tlb_do_page_fault_\write, PT_SIZE, sp)
- SAVE_ALL
+ .cfi_signal_frame
+ SAVE_ALL docfi=1
MFC0 a2, CP0_BADVADDR
KMODE
move a0, sp
REG_S a2, PT_BVADDR(sp)
li a1, \write
- PTR_LA ra, ret_from_exception
- j do_page_fault
+ jal do_page_fault
+ j ret_from_exception
END(tlb_do_page_fault_\write)
.endm
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
index 5aadc69c8ce3..79b9f2ad3ff5 100644
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -2634,11 +2634,6 @@ void build_tlb_refill_handler(void)
#endif
break;
- case CPU_R6000:
- case CPU_R6000A:
- panic("No R6000 TLB refill handler yet");
- break;
-
case CPU_R8000:
panic("No R8000 TLB refill handler yet");
break;
diff --git a/arch/mips/mti-malta/Makefile b/arch/mips/mti-malta/Makefile
index 5827af77c18e..63940bdce698 100644
--- a/arch/mips/mti-malta/Makefile
+++ b/arch/mips/mti-malta/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Carsten Langgaard, carstenl@mips.com
# Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
diff --git a/arch/mips/mti-malta/malta-dt.c b/arch/mips/mti-malta/malta-dt.c
index 4822943100f3..b397117033aa 100644
--- a/arch/mips/mti-malta/malta-dt.c
+++ b/arch/mips/mti-malta/malta-dt.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2015 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/mti-malta/malta-dtshim.c b/arch/mips/mti-malta/malta-dtshim.c
index c398582c316f..7859b6e49863 100644
--- a/arch/mips/mti-malta/malta-dtshim.c
+++ b/arch/mips/mti-malta/malta-dtshim.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2015 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -18,7 +18,7 @@
#include <asm/fw/fw.h>
#include <asm/mips-boards/generic.h>
#include <asm/mips-boards/malta.h>
-#include <asm/mips-cm.h>
+#include <asm/mips-cps.h>
#include <asm/page.h>
#define ROCIT_REG_BASE 0x1f403000
@@ -236,7 +236,7 @@ static void __init remove_gic(void *fdt)
/* if we have a CM which reports a GIC is present, leave the DT alone */
err = mips_cm_probe();
- if (!err && (read_gcr_gic_status() & CM_GCR_GIC_STATUS_GICEX_MSK))
+ if (!err && (read_gcr_gic_status() & CM_GCR_GIC_STATUS_EX))
return;
if (malta_scon() == MIPS_REVISION_SCON_ROCIT) {
diff --git a/arch/mips/mti-malta/malta-init.c b/arch/mips/mti-malta/malta-init.c
index 0f3b881a3190..009f2918b320 100644
--- a/arch/mips/mti-malta/malta-init.c
+++ b/arch/mips/mti-malta/malta-init.c
@@ -21,8 +21,7 @@
#include <asm/smp-ops.h>
#include <asm/traps.h>
#include <asm/fw/fw.h>
-#include <asm/mips-cm.h>
-#include <asm/mips-cpc.h>
+#include <asm/mips-cps.h>
#include <asm/mips-boards/generic.h>
#include <asm/mips-boards/malta.h>
diff --git a/arch/mips/mti-malta/malta-int.c b/arch/mips/mti-malta/malta-int.c
index b0f9b188e833..a840e0c1642c 100644
--- a/arch/mips/mti-malta/malta-int.c
+++ b/arch/mips/mti-malta/malta-int.c
@@ -19,7 +19,6 @@
#include <linux/smp.h>
#include <linux/interrupt.h>
#include <linux/io.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/of_irq.h>
#include <linux/kernel_stat.h>
#include <linux/kernel.h>
@@ -29,9 +28,9 @@
#include <asm/i8259.h>
#include <asm/irq_cpu.h>
#include <asm/irq_regs.h>
-#include <asm/mips-cm.h>
#include <asm/mips-boards/malta.h>
#include <asm/mips-boards/maltaint.h>
+#include <asm/mips-cps.h>
#include <asm/gt64120.h>
#include <asm/mips-boards/generic.h>
#include <asm/mips-boards/msc01_pci.h>
@@ -215,7 +214,7 @@ void __init arch_init_irq(void)
msc_nr_irqs);
}
- if (gic_present) {
+ if (mips_gic_present()) {
corehi_irq = MIPS_CPU_IRQ_BASE + MIPSCPU_INT_COREHI;
} else if (cpu_has_veic) {
set_vi_handler(MSC01E_INT_COREHI, corehi_irqdispatch);
diff --git a/arch/mips/mti-malta/malta-pm.c b/arch/mips/mti-malta/malta-pm.c
index c1e456c01a44..efbd659fb602 100644
--- a/arch/mips/mti-malta/malta-pm.c
+++ b/arch/mips/mti-malta/malta-pm.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2014 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/mti-malta/malta-setup.c b/arch/mips/mti-malta/malta-setup.c
index a01d5debfcaf..de34adb76157 100644
--- a/arch/mips/mti-malta/malta-setup.c
+++ b/arch/mips/mti-malta/malta-setup.c
@@ -28,7 +28,7 @@
#include <asm/fw/fw.h>
#include <asm/mach-malta/malta-dtshim.h>
-#include <asm/mips-cm.h>
+#include <asm/mips-cps.h>
#include <asm/mips-boards/generic.h>
#include <asm/mips-boards/malta.h>
#include <asm/mips-boards/maltaint.h>
@@ -128,7 +128,7 @@ static int __init plat_enable_iocoherency(void)
BONITO_PCIMEMBASECFG_MEMBASE1_CACHED);
pr_info("Enabled Bonito IOBC coherency\n");
}
- } else if (mips_cm_numiocu() != 0) {
+ } else if (mips_cps_numiocu(0) != 0) {
/* Nothing special needs to be done to enable coherency */
pr_info("CMP IOCU detected\n");
cfg = __raw_readl((u32 *)CKSEG1ADDR(ROCIT_CONFIG_GEN0));
diff --git a/arch/mips/mti-malta/malta-time.c b/arch/mips/mti-malta/malta-time.c
index cea4ec909806..66c866740ff2 100644
--- a/arch/mips/mti-malta/malta-time.c
+++ b/arch/mips/mti-malta/malta-time.c
@@ -26,7 +26,6 @@
#include <linux/sched.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/timex.h>
#include <linux/mc146818rtc.h>
@@ -40,6 +39,7 @@
#include <asm/time.h>
#include <asm/mc146818-time.h>
#include <asm/msc01_ic.h>
+#include <asm/mips-cps.h>
#include <asm/mips-boards/generic.h>
#include <asm/mips-boards/maltaint.h>
@@ -85,8 +85,8 @@ static void __init estimate_frequencies(void)
local_irq_save(flags);
- if (gic_present)
- gic_start_count();
+ if (mips_gic_present())
+ clear_gic_config(GIC_CONFIG_COUNTSTOP);
/*
* Read counters exactly on rising edge of update flag.
@@ -95,8 +95,8 @@ static void __init estimate_frequencies(void)
while (CMOS_READ(RTC_REG_A) & RTC_UIP);
while (!(CMOS_READ(RTC_REG_A) & RTC_UIP));
start = read_c0_count();
- if (gic_present)
- gicstart = gic_read_count();
+ if (mips_gic_present())
+ gicstart = read_gic_counter();
/* Wait for falling edge before reading RTC. */
while (CMOS_READ(RTC_REG_A) & RTC_UIP);
@@ -105,8 +105,8 @@ static void __init estimate_frequencies(void)
/* Read counters again exactly on rising edge of update flag. */
while (!(CMOS_READ(RTC_REG_A) & RTC_UIP));
count = read_c0_count();
- if (gic_present)
- giccount = gic_read_count();
+ if (mips_gic_present())
+ giccount = read_gic_counter();
/* Wait for falling edge before reading RTC again. */
while (CMOS_READ(RTC_REG_A) & RTC_UIP);
@@ -128,7 +128,7 @@ static void __init estimate_frequencies(void)
count /= secs;
mips_hpt_frequency = count;
- if (gic_present) {
+ if (mips_gic_present()) {
giccount = div_u64(giccount - gicstart, secs);
gic_frequency = giccount;
}
@@ -154,7 +154,7 @@ int get_c0_fdc_int(void)
if (cpu_has_veic)
return -1;
- else if (gic_present)
+ else if (mips_gic_present())
return gic_get_c0_fdc_int();
else if (cp0_fdc_irq >= 0)
return MIPS_CPU_IRQ_BASE + cp0_fdc_irq;
@@ -167,7 +167,7 @@ int get_c0_perfcount_int(void)
if (cpu_has_veic) {
set_vi_handler(MSC01E_INT_PERFCTR, mips_perf_dispatch);
mips_cpu_perf_irq = MSC01E_INT_BASE + MSC01E_INT_PERFCTR;
- } else if (gic_present) {
+ } else if (mips_gic_present()) {
mips_cpu_perf_irq = gic_get_c0_perfcount_int();
} else if (cp0_perfcount_irq >= 0) {
mips_cpu_perf_irq = MIPS_CPU_IRQ_BASE + cp0_perfcount_irq;
@@ -184,7 +184,7 @@ unsigned int get_c0_compare_int(void)
if (cpu_has_veic) {
set_vi_handler(MSC01E_INT_CPUCTR, mips_timer_dispatch);
mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR;
- } else if (gic_present) {
+ } else if (mips_gic_present()) {
mips_cpu_timer_irq = gic_get_c0_compare_int();
} else {
mips_cpu_timer_irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq;
@@ -258,8 +258,7 @@ void __init plat_time_init(void)
setup_pit_timer();
#endif
-#ifdef CONFIG_MIPS_GIC
- if (gic_present) {
+ if (mips_gic_present()) {
freq = freqround(gic_frequency, 5000);
printk("GIC frequency %d.%02d MHz\n", freq/1000000,
(freq%1000000)*100/1000000);
@@ -268,5 +267,4 @@ void __init plat_time_init(void)
timer_probe();
#endif
}
-#endif
}
diff --git a/arch/mips/net/ebpf_jit.c b/arch/mips/net/ebpf_jit.c
index 7646891c4e9b..01b7a87ea678 100644
--- a/arch/mips/net/ebpf_jit.c
+++ b/arch/mips/net/ebpf_jit.c
@@ -667,7 +667,7 @@ static int build_one_insn(const struct bpf_insn *insn, struct jit_ctx *ctx,
{
int src, dst, r, td, ts, mem_off, b_off;
bool need_swap, did_move, cmp_eq;
- unsigned int target;
+ unsigned int target = 0;
u64 t64;
s64 t64s;
int bpf_op = BPF_OP(insn->code);
diff --git a/arch/mips/netlogic/Kconfig b/arch/mips/netlogic/Kconfig
index fb00606e352d..8296b13affd2 100644
--- a/arch/mips/netlogic/Kconfig
+++ b/arch/mips/netlogic/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if NLM_XLP_BOARD || NLM_XLR_BOARD
if NLM_XLP_BOARD
diff --git a/arch/mips/netlogic/common/Makefile b/arch/mips/netlogic/common/Makefile
index 362739d62b1d..60d00b5d748e 100644
--- a/arch/mips/netlogic/common/Makefile
+++ b/arch/mips/netlogic/common/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += irq.o time.o
obj-y += nlm-dma.o
obj-y += reset.o
diff --git a/arch/mips/netlogic/common/smp.c b/arch/mips/netlogic/common/smp.c
index bddf1ef553a4..39a300bd6cc2 100644
--- a/arch/mips/netlogic/common/smp.c
+++ b/arch/mips/netlogic/common/smp.c
@@ -122,7 +122,7 @@ static void nlm_init_secondary(void)
int hwtid;
hwtid = hard_smp_processor_id();
- current_cpu_data.core = hwtid / NLM_THREADS_PER_CORE;
+ cpu_set_core(&current_cpu_data, hwtid / NLM_THREADS_PER_CORE);
current_cpu_data.package = nlm_nodeid();
nlm_percpu_init(hwtid);
nlm_smp_irq_init(hwtid);
@@ -147,7 +147,7 @@ unsigned long nlm_next_gp;
unsigned long nlm_next_sp;
static cpumask_t phys_cpu_present_mask;
-void nlm_boot_secondary(int logical_cpu, struct task_struct *idle)
+int nlm_boot_secondary(int logical_cpu, struct task_struct *idle)
{
uint64_t picbase;
int hwtid;
@@ -161,6 +161,8 @@ void nlm_boot_secondary(int logical_cpu, struct task_struct *idle)
/* barrier for sp/gp store above */
__sync();
nlm_pic_send_ipi(picbase, hwtid, 1, 1); /* NMI */
+
+ return 0;
}
void __init nlm_smp_setup(void)
@@ -272,7 +274,7 @@ int nlm_wakeup_secondary_cpus(void)
return 0;
}
-struct plat_smp_ops nlm_smp_ops = {
+const struct plat_smp_ops nlm_smp_ops = {
.send_ipi_single = nlm_send_ipi_single,
.send_ipi_mask = nlm_send_ipi_mask,
.init_secondary = nlm_init_secondary,
diff --git a/arch/mips/netlogic/xlp/Makefile b/arch/mips/netlogic/xlp/Makefile
index 6b43af0a34d9..d62465717393 100644
--- a/arch/mips/netlogic/xlp/Makefile
+++ b/arch/mips/netlogic/xlp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += setup.o nlm_hal.o cop2-ex.o dt.o
obj-$(CONFIG_SMP) += wakeup.o
ifdef CONFIG_USB
diff --git a/arch/mips/oprofile/Makefile b/arch/mips/oprofile/Makefile
index 070afdb297df..011cf9f891e7 100644
--- a/arch/mips/oprofile/Makefile
+++ b/arch/mips/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
diff --git a/arch/mips/oprofile/backtrace.c b/arch/mips/oprofile/backtrace.c
index 16ace558cd9d..806fb798091f 100644
--- a/arch/mips/oprofile/backtrace.c
+++ b/arch/mips/oprofile/backtrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/oprofile.h>
#include <linux/sched.h>
#include <linux/mm.h>
diff --git a/arch/mips/oprofile/op_model_mipsxx.c b/arch/mips/oprofile/op_model_mipsxx.c
index c57da6f13929..c3e4c18ef8d4 100644
--- a/arch/mips/oprofile/op_model_mipsxx.c
+++ b/arch/mips/oprofile/op_model_mipsxx.c
@@ -38,9 +38,9 @@ static int perfcount_irq;
#ifdef CONFIG_MIPS_MT_SMP
static int cpu_has_mipsmt_pertccounters;
#define WHAT (MIPS_PERFCTRL_MT_EN_VPE | \
- M_PERFCTL_VPEID(cpu_data[smp_processor_id()].vpe_id))
+ M_PERFCTL_VPEID(cpu_vpe_id(&current_cpu_data)))
#define vpe_id() (cpu_has_mipsmt_pertccounters ? \
- 0 : cpu_data[smp_processor_id()].vpe_id)
+ 0 : cpu_vpe_id(&current_cpu_data))
/*
* The number of bits to shift to convert between counters per core and
diff --git a/arch/mips/paravirt/Kconfig b/arch/mips/paravirt/Kconfig
index ecae5861b601..46b110fec967 100644
--- a/arch/mips/paravirt/Kconfig
+++ b/arch/mips/paravirt/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if MIPS_PARAVIRT
config MIPS_PCI_VIRTIO
diff --git a/arch/mips/paravirt/paravirt-smp.c b/arch/mips/paravirt/paravirt-smp.c
index 72eb1a56c645..107d9f90d668 100644
--- a/arch/mips/paravirt/paravirt-smp.c
+++ b/arch/mips/paravirt/paravirt-smp.c
@@ -100,11 +100,12 @@ static void paravirt_smp_finish(void)
local_irq_enable();
}
-static void paravirt_boot_secondary(int cpu, struct task_struct *idle)
+static int paravirt_boot_secondary(int cpu, struct task_struct *idle)
{
paravirt_smp_gp[cpu] = (unsigned long)task_thread_info(idle);
smp_wmb();
paravirt_smp_sp[cpu] = __KSTK_TOS(idle);
+ return 0;
}
static irqreturn_t paravirt_reched_interrupt(int irq, void *dev_id)
@@ -133,7 +134,7 @@ static void paravirt_prepare_cpus(unsigned int max_cpus)
}
}
-struct plat_smp_ops paravirt_smp_ops = {
+const struct plat_smp_ops paravirt_smp_ops = {
.send_ipi_single = paravirt_send_ipi_single,
.send_ipi_mask = paravirt_send_ipi_mask,
.init_secondary = paravirt_init_secondary,
diff --git a/arch/mips/paravirt/setup.c b/arch/mips/paravirt/setup.c
index cb8448b373a7..d2ffec1409a7 100644
--- a/arch/mips/paravirt/setup.c
+++ b/arch/mips/paravirt/setup.c
@@ -14,7 +14,7 @@
#include <asm/smp-ops.h>
#include <asm/time.h>
-extern struct plat_smp_ops paravirt_smp_ops;
+extern const struct plat_smp_ops paravirt_smp_ops;
const char *get_system_type(void)
{
diff --git a/arch/mips/pci/Makefile b/arch/mips/pci/Makefile
index 4b821481dd44..8185a2bfaf09 100644
--- a/arch/mips/pci/Makefile
+++ b/arch/mips/pci/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the PCI specific kernel interface routines under Linux.
#
diff --git a/arch/mips/pci/fixup-capcella.c b/arch/mips/pci/fixup-capcella.c
index 1c02f5737367..b4c263f16b15 100644
--- a/arch/mips/pci/fixup-capcella.c
+++ b/arch/mips/pci/fixup-capcella.c
@@ -32,13 +32,13 @@
#define INTC PC104PLUS_INTC_IRQ
#define INTD PC104PLUS_INTD_IRQ
-static char irq_tab_capcella[][5] __initdata = {
+static char irq_tab_capcella[][5] = {
[11] = { -1, INT1, INT1, INT1, INT1 },
[12] = { -1, INT2, INT2, INT2, INT2 },
[14] = { -1, INTA, INTB, INTC, INTD }
};
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
return irq_tab_capcella[slot][pin];
}
diff --git a/arch/mips/pci/fixup-cobalt.c b/arch/mips/pci/fixup-cobalt.c
index b3ab59318d91..44be65c3e6bb 100644
--- a/arch/mips/pci/fixup-cobalt.c
+++ b/arch/mips/pci/fixup-cobalt.c
@@ -147,7 +147,7 @@ static void qube_raq_via_board_id_fixup(struct pci_dev *dev)
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0,
qube_raq_via_board_id_fixup);
-static char irq_tab_qube1[] __initdata = {
+static char irq_tab_qube1[] = {
[COBALT_PCICONF_CPU] = 0,
[COBALT_PCICONF_ETH0] = QUBE1_ETH0_IRQ,
[COBALT_PCICONF_RAQSCSI] = SCSI_IRQ,
@@ -156,7 +156,7 @@ static char irq_tab_qube1[] __initdata = {
[COBALT_PCICONF_ETH1] = 0
};
-static char irq_tab_cobalt[] __initdata = {
+static char irq_tab_cobalt[] = {
[COBALT_PCICONF_CPU] = 0,
[COBALT_PCICONF_ETH0] = ETH0_IRQ,
[COBALT_PCICONF_RAQSCSI] = SCSI_IRQ,
@@ -165,7 +165,7 @@ static char irq_tab_cobalt[] __initdata = {
[COBALT_PCICONF_ETH1] = ETH1_IRQ
};
-static char irq_tab_raq2[] __initdata = {
+static char irq_tab_raq2[] = {
[COBALT_PCICONF_CPU] = 0,
[COBALT_PCICONF_ETH0] = ETH0_IRQ,
[COBALT_PCICONF_RAQSCSI] = RAQ2_SCSI_IRQ,
@@ -174,7 +174,7 @@ static char irq_tab_raq2[] __initdata = {
[COBALT_PCICONF_ETH1] = ETH1_IRQ
};
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
if (cobalt_board_id <= COBALT_BRD_ID_QUBE1)
return irq_tab_qube1[slot];
diff --git a/arch/mips/pci/fixup-emma2rh.c b/arch/mips/pci/fixup-emma2rh.c
index 19caf775c206..c31cb6af1cd0 100644
--- a/arch/mips/pci/fixup-emma2rh.c
+++ b/arch/mips/pci/fixup-emma2rh.c
@@ -43,7 +43,7 @@
*/
#define MAX_SLOT_NUM 10
-static unsigned char irq_map[][5] __initdata = {
+static unsigned char irq_map[][5] = {
[3] = {0, MARKEINS_PCI_IRQ_INTB, MARKEINS_PCI_IRQ_INTC,
MARKEINS_PCI_IRQ_INTD, 0,},
[4] = {0, MARKEINS_PCI_IRQ_INTA, 0, 0, 0,},
@@ -85,7 +85,7 @@ static void emma2rh_pci_host_fixup(struct pci_dev *dev)
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_EMMA2RH,
emma2rh_pci_host_fixup);
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
return irq_map[slot][pin];
}
diff --git a/arch/mips/pci/fixup-fuloong2e.c b/arch/mips/pci/fixup-fuloong2e.c
index 50da773faede..b47c2771dc99 100644
--- a/arch/mips/pci/fixup-fuloong2e.c
+++ b/arch/mips/pci/fixup-fuloong2e.c
@@ -19,7 +19,7 @@
/* South bridge slot number is set by the pci probe process */
static u8 sb_slot = 5;
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
int irq = 0;
diff --git a/arch/mips/pci/fixup-ip32.c b/arch/mips/pci/fixup-ip32.c
index 133685e215ee..d091ffc53569 100644
--- a/arch/mips/pci/fixup-ip32.c
+++ b/arch/mips/pci/fixup-ip32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/pci.h>
@@ -21,7 +22,7 @@
#define INTB MACEPCI_SHARED0_IRQ
#define INTC MACEPCI_SHARED1_IRQ
#define INTD MACEPCI_SHARED2_IRQ
-static char irq_tab_mace[][5] __initdata = {
+static char irq_tab_mace[][5] = {
/* Dummy INT#A INT#B INT#C INT#D */
{0, 0, 0, 0, 0}, /* This is placeholder row - never used */
{0, SCSI0, SCSI0, SCSI0, SCSI0},
@@ -39,7 +40,7 @@ static char irq_tab_mace[][5] __initdata = {
* irqs. I suppose a device without a pin A will thank us for doing it
* right if there exists such a broken piece of crap.
*/
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
return irq_tab_mace[slot][pin];
}
diff --git a/arch/mips/pci/fixup-jmr3927.c b/arch/mips/pci/fixup-jmr3927.c
index 0f1069527cba..d3102eeea898 100644
--- a/arch/mips/pci/fixup-jmr3927.c
+++ b/arch/mips/pci/fixup-jmr3927.c
@@ -31,7 +31,7 @@
#include <asm/txx9/pci.h>
#include <asm/txx9/jmr3927.h>
-int __init jmr3927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int jmr3927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
unsigned char irq = pin;
diff --git a/arch/mips/pci/fixup-lantiq.c b/arch/mips/pci/fixup-lantiq.c
index 2b5427d3f35c..81530a13b349 100644
--- a/arch/mips/pci/fixup-lantiq.c
+++ b/arch/mips/pci/fixup-lantiq.c
@@ -23,7 +23,7 @@ int pcibios_plat_dev_init(struct pci_dev *dev)
return 0;
}
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
return of_irq_parse_and_map_pci(dev, slot, pin);
}
diff --git a/arch/mips/pci/fixup-lemote2f.c b/arch/mips/pci/fixup-lemote2f.c
index 95ab9a1bd010..20cdfdc08938 100644
--- a/arch/mips/pci/fixup-lemote2f.c
+++ b/arch/mips/pci/fixup-lemote2f.c
@@ -30,7 +30,7 @@
#define PCID 7
/* all the pci device has the PCIA pin, check the datasheet. */
-static char irq_tab[][5] __initdata = {
+static char irq_tab[][5] = {
/* INTA INTB INTC INTD */
{0, 0, 0, 0, 0}, /* 11: Unused */
{0, 0, 0, 0, 0}, /* 12: Unused */
@@ -51,7 +51,7 @@ static char irq_tab[][5] __initdata = {
{0, 0, 0, 0, 0}, /* 27: Unused */
};
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
int virq;
diff --git a/arch/mips/pci/fixup-loongson3.c b/arch/mips/pci/fixup-loongson3.c
index 2b6d5e196f99..8a741c2c6685 100644
--- a/arch/mips/pci/fixup-loongson3.c
+++ b/arch/mips/pci/fixup-loongson3.c
@@ -32,7 +32,7 @@ static void print_fixup_info(const struct pci_dev *pdev)
pdev->vendor, pdev->device, pdev->irq);
}
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
print_fixup_info(dev);
return dev->irq;
diff --git a/arch/mips/pci/fixup-malta.c b/arch/mips/pci/fixup-malta.c
index 40e920c653cc..8131e0ffe735 100644
--- a/arch/mips/pci/fixup-malta.c
+++ b/arch/mips/pci/fixup-malta.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/pci.h>
#include <asm/mips-boards/piix4.h>
@@ -12,7 +13,7 @@
static char pci_irq[5] = {
};
-static char irq_tab[][5] __initdata = {
+static char irq_tab[][5] = {
/* INTA INTB INTC INTD */
{0, 0, 0, 0, 0 }, /* 0: GT64120 PCI bridge */
{0, 0, 0, 0, 0 }, /* 1: Unused */
@@ -38,7 +39,7 @@ static char irq_tab[][5] __initdata = {
{0, PCID, PCIA, PCIB, PCIC } /* 21: PCI Slot 4 */
};
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
int virq;
virq = irq_tab[slot][pin];
diff --git a/arch/mips/pci/fixup-mpc30x.c b/arch/mips/pci/fixup-mpc30x.c
index 8e4f8288eca2..66eaf456bc89 100644
--- a/arch/mips/pci/fixup-mpc30x.c
+++ b/arch/mips/pci/fixup-mpc30x.c
@@ -22,19 +22,19 @@
#include <asm/vr41xx/mpc30x.h>
-static const int internal_func_irqs[] __initconst = {
+static const int internal_func_irqs[] = {
VRC4173_CASCADE_IRQ,
VRC4173_AC97_IRQ,
VRC4173_USB_IRQ,
};
-static const int irq_tab_mpc30x[] __initconst = {
+static const int irq_tab_mpc30x[] = {
[12] = VRC4173_PCMCIA1_IRQ,
[13] = VRC4173_PCMCIA2_IRQ,
[29] = MQ200_IRQ,
};
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
if (slot == 30)
return internal_func_irqs[PCI_FUNC(dev->devfn)];
diff --git a/arch/mips/pci/fixup-pmcmsp.c b/arch/mips/pci/fixup-pmcmsp.c
index fab405c21c2f..4ad2ef02087b 100644
--- a/arch/mips/pci/fixup-pmcmsp.c
+++ b/arch/mips/pci/fixup-pmcmsp.c
@@ -47,7 +47,7 @@
#if defined(CONFIG_PMC_MSP7120_GW)
/* Garibaldi Board IRQ wiring to PCI slots */
-static char irq_tab[][5] __initdata = {
+static char irq_tab[][5] = {
/* INTA INTB INTC INTD */
{0, 0, 0, 0, 0 }, /* (AD[0]): Unused */
{0, 0, 0, 0, 0 }, /* (AD[1]): Unused */
@@ -86,7 +86,7 @@ static char irq_tab[][5] __initdata = {
#elif defined(CONFIG_PMC_MSP7120_EVAL)
/* MSP7120 Eval Board IRQ wiring to PCI slots */
-static char irq_tab[][5] __initdata = {
+static char irq_tab[][5] = {
/* INTA INTB INTC INTD */
{0, 0, 0, 0, 0 }, /* (AD[0]): Unused */
{0, 0, 0, 0, 0 }, /* (AD[1]): Unused */
@@ -125,7 +125,7 @@ static char irq_tab[][5] __initdata = {
#else
/* Unknown board -- don't assign any IRQs */
-static char irq_tab[][5] __initdata = {
+static char irq_tab[][5] = {
/* INTA INTB INTC INTD */
{0, 0, 0, 0, 0 }, /* (AD[0]): Unused */
{0, 0, 0, 0, 0 }, /* (AD[1]): Unused */
@@ -202,7 +202,7 @@ int pcibios_plat_dev_init(struct pci_dev *dev)
* RETURNS: IRQ number
*
****************************************************************************/
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
#if !defined(CONFIG_PMC_MSP7120_GW) && !defined(CONFIG_PMC_MSP7120_EVAL)
printk(KERN_WARNING "PCI: unknown board, no PCI IRQs assigned.\n");
diff --git a/arch/mips/pci/fixup-rbtx4927.c b/arch/mips/pci/fixup-rbtx4927.c
index 321db265829c..d6aaed1d6be9 100644
--- a/arch/mips/pci/fixup-rbtx4927.c
+++ b/arch/mips/pci/fixup-rbtx4927.c
@@ -36,7 +36,7 @@
#include <asm/txx9/pci.h>
#include <asm/txx9/rbtx4927.h>
-int __init rbtx4927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int rbtx4927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
unsigned char irq = pin;
diff --git a/arch/mips/pci/fixup-rbtx4938.c b/arch/mips/pci/fixup-rbtx4938.c
index a80579af609b..ff22a22db73e 100644
--- a/arch/mips/pci/fixup-rbtx4938.c
+++ b/arch/mips/pci/fixup-rbtx4938.c
@@ -13,7 +13,7 @@
#include <asm/txx9/pci.h>
#include <asm/txx9/rbtx4938.h>
-int __init rbtx4938_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int rbtx4938_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
int irq = tx4938_pcic1_map_irq(dev, slot);
diff --git a/arch/mips/pci/fixup-sni.c b/arch/mips/pci/fixup-sni.c
index f67ebeeb4200..adb9a58641e8 100644
--- a/arch/mips/pci/fixup-sni.c
+++ b/arch/mips/pci/fixup-sni.c
@@ -40,7 +40,7 @@
* seem to be a documentation error. At least on my RM200C the Cirrus
* Logic CL-GD5434 VGA is device 3.
*/
-static char irq_tab_rm200[8][5] __initdata = {
+static char irq_tab_rm200[8][5] = {
/* INTA INTB INTC INTD */
{ 0, 0, 0, 0, 0 }, /* EISA bridge */
{ SCSI, SCSI, SCSI, SCSI, SCSI }, /* SCSI */
@@ -57,7 +57,7 @@ static char irq_tab_rm200[8][5] __initdata = {
*
* The VGA card is optional for RM300 systems.
*/
-static char irq_tab_rm300d[8][5] __initdata = {
+static char irq_tab_rm300d[8][5] = {
/* INTA INTB INTC INTD */
{ 0, 0, 0, 0, 0 }, /* EISA bridge */
{ SCSI, SCSI, SCSI, SCSI, SCSI }, /* SCSI */
@@ -69,7 +69,7 @@ static char irq_tab_rm300d[8][5] __initdata = {
{ 0, INTD, INTA, INTB, INTC }, /* Slot 4 */
};
-static char irq_tab_rm300e[5][5] __initdata = {
+static char irq_tab_rm300e[5][5] = {
/* INTA INTB INTC INTD */
{ 0, 0, 0, 0, 0 }, /* HOST bridge */
{ SCSI, SCSI, SCSI, SCSI, SCSI }, /* SCSI */
@@ -96,7 +96,7 @@ static char irq_tab_rm300e[5][5] __initdata = {
#define INTC PCIT_IRQ_INTC
#define INTD PCIT_IRQ_INTD
-static char irq_tab_pcit[13][5] __initdata = {
+static char irq_tab_pcit[13][5] = {
/* INTA INTB INTC INTD */
{ 0, 0, 0, 0, 0 }, /* HOST bridge */
{ SCSI0, SCSI0, SCSI0, SCSI0, SCSI0 }, /* SCSI */
@@ -113,7 +113,7 @@ static char irq_tab_pcit[13][5] __initdata = {
{ 0, INTA, INTB, INTC, INTD }, /* Slot 5 */
};
-static char irq_tab_pcit_cplus[13][5] __initdata = {
+static char irq_tab_pcit_cplus[13][5] = {
/* INTA INTB INTC INTD */
{ 0, 0, 0, 0, 0 }, /* HOST bridge */
{ 0, INTB, INTC, INTD, INTA }, /* PCI Slot 9 */
@@ -130,7 +130,7 @@ static inline int is_rm300_revd(void)
return (csmsr & 0xa0) == 0x20;
}
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
switch (sni_brd_type) {
case SNI_BRD_PCI_TOWER_CPLUS:
diff --git a/arch/mips/pci/fixup-tb0219.c b/arch/mips/pci/fixup-tb0219.c
index d0b0083fbd27..cc581535f257 100644
--- a/arch/mips/pci/fixup-tb0219.c
+++ b/arch/mips/pci/fixup-tb0219.c
@@ -23,7 +23,7 @@
#include <asm/vr41xx/tb0219.h>
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
int irq = -1;
diff --git a/arch/mips/pci/fixup-tb0226.c b/arch/mips/pci/fixup-tb0226.c
index 4196ccf3ea3d..b827b5cad5fd 100644
--- a/arch/mips/pci/fixup-tb0226.c
+++ b/arch/mips/pci/fixup-tb0226.c
@@ -23,7 +23,7 @@
#include <asm/vr41xx/giu.h>
#include <asm/vr41xx/tb0226.h>
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
int irq = -1;
diff --git a/arch/mips/pci/fixup-tb0287.c b/arch/mips/pci/fixup-tb0287.c
index 8c5039ed75d7..98f26285f2e3 100644
--- a/arch/mips/pci/fixup-tb0287.c
+++ b/arch/mips/pci/fixup-tb0287.c
@@ -22,7 +22,7 @@
#include <asm/vr41xx/tb0287.h>
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
unsigned char bus;
int irq = -1;
diff --git a/arch/mips/pci/ops-loongson3.c b/arch/mips/pci/ops-loongson3.c
index 46ed541a3ec7..9e118431e226 100644
--- a/arch/mips/pci/ops-loongson3.c
+++ b/arch/mips/pci/ops-loongson3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/pci.h>
#include <linux/kernel.h>
diff --git a/arch/mips/pci/ops-nile4.c b/arch/mips/pci/ops-nile4.c
index b9d1fd0ff7e2..b00658d19116 100644
--- a/arch/mips/pci/ops-nile4.c
+++ b/arch/mips/pci/ops-nile4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/pci.h>
#include <asm/bootinfo.h>
diff --git a/arch/mips/pci/pci-alchemy.c b/arch/mips/pci/pci-alchemy.c
index e99ca7702d8a..4f2411f489af 100644
--- a/arch/mips/pci/pci-alchemy.c
+++ b/arch/mips/pci/pci-alchemy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Alchemy PCI host mode support.
*
@@ -522,7 +523,7 @@ static int __init alchemy_pci_init(void)
arch_initcall(alchemy_pci_init);
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
struct alchemy_pci_context *ctx = dev->sysdata;
if (ctx && ctx->board_map_irq)
diff --git a/arch/mips/pci/pci-bcm47xx.c b/arch/mips/pci/pci-bcm47xx.c
index 76f16eaed0ad..230d7dd273e2 100644
--- a/arch/mips/pci/pci-bcm47xx.c
+++ b/arch/mips/pci/pci-bcm47xx.c
@@ -28,7 +28,7 @@
#include <linux/bcma/bcma.h>
#include <bcm47xx.h>
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
return 0;
}
diff --git a/arch/mips/pci/pci-bcm63xx.h b/arch/mips/pci/pci-bcm63xx.h
index ffab4da7bd00..214def1e45a5 100644
--- a/arch/mips/pci/pci-bcm63xx.h
+++ b/arch/mips/pci/pci-bcm63xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef PCI_BCM63XX_H_
#define PCI_BCM63XX_H_
diff --git a/arch/mips/pci/pci-generic.c b/arch/mips/pci/pci-generic.c
index dce304dc3d62..676348164027 100644
--- a/arch/mips/pci/pci-generic.c
+++ b/arch/mips/pci/pci-generic.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* pcibios_align_resource taken from arch/arm/kernel/bios32.c.
*
diff --git a/arch/mips/pci/pci-lasat.c b/arch/mips/pci/pci-lasat.c
index 40d2797d2bc4..47f4ee6bbb3b 100644
--- a/arch/mips/pci/pci-lasat.c
+++ b/arch/mips/pci/pci-lasat.c
@@ -61,7 +61,7 @@ arch_initcall(lasat_pci_setup);
#define LASAT_IRQ_PCIC (LASAT_IRQ_BASE + 7)
#define LASAT_IRQ_PCID (LASAT_IRQ_BASE + 8)
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
switch (slot) {
case 1:
diff --git a/arch/mips/pci/pci-legacy.c b/arch/mips/pci/pci-legacy.c
index fc7726088103..0c65c38e05d6 100644
--- a/arch/mips/pci/pci-legacy.c
+++ b/arch/mips/pci/pci-legacy.c
@@ -139,7 +139,7 @@ void pci_load_of_ranges(struct pci_controller *hose, struct device_node *node)
struct of_pci_range range;
struct of_pci_range_parser parser;
- pr_info("PCI host bridge %s ranges:\n", node->full_name);
+ pr_info("PCI host bridge %pOF ranges:\n", node);
hose->of_node = node;
if (of_pci_range_parser_init(&parser, node))
diff --git a/arch/mips/pci/pci-malta.c b/arch/mips/pci/pci-malta.c
index cfbbc3e3e914..88e625fb3a47 100644
--- a/arch/mips/pci/pci-malta.c
+++ b/arch/mips/pci/pci-malta.c
@@ -27,7 +27,7 @@
#include <linux/init.h>
#include <asm/gt64120.h>
-#include <asm/mips-cm.h>
+#include <asm/mips-cps.h>
#include <asm/mips-boards/generic.h>
#include <asm/mips-boards/bonito64.h>
#include <asm/mips-boards/msc01_pci.h>
@@ -201,7 +201,7 @@ void __init mips_pcibios_init(void)
msc_mem_resource.start = start & mask;
msc_mem_resource.end = (start & mask) | ~mask;
msc_controller.mem_offset = (start & mask) - (map & mask);
- if (mips_cm_numiocu()) {
+ if (mips_cps_numiocu(0)) {
write_gcr_reg0_base(start);
write_gcr_reg0_mask(mask |
CM_GCR_REGn_MASK_CMTGT_IOCU0);
@@ -213,7 +213,7 @@ void __init mips_pcibios_init(void)
msc_io_resource.end = (map & mask) | ~mask;
msc_controller.io_offset = 0;
ioport_resource.end = ~mask;
- if (mips_cm_numiocu()) {
+ if (mips_cps_numiocu(0)) {
write_gcr_reg1_base(start);
write_gcr_reg1_mask(mask |
CM_GCR_REGn_MASK_CMTGT_IOCU0);
diff --git a/arch/mips/pci/pci-mt7620.c b/arch/mips/pci/pci-mt7620.c
index 628c5132b3d8..90fba9bf98da 100644
--- a/arch/mips/pci/pci-mt7620.c
+++ b/arch/mips/pci/pci-mt7620.c
@@ -291,7 +291,7 @@ static int mt7620_pci_probe(struct platform_device *pdev)
IORESOURCE_MEM, 1);
u32 val = 0;
- rstpcie0 = devm_reset_control_get(&pdev->dev, "pcie0");
+ rstpcie0 = devm_reset_control_get_exclusive(&pdev->dev, "pcie0");
if (IS_ERR(rstpcie0))
return PTR_ERR(rstpcie0);
@@ -361,7 +361,7 @@ static int mt7620_pci_probe(struct platform_device *pdev)
return 0;
}
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
u16 cmd;
u32 val;
diff --git a/arch/mips/pci/pci-octeon.c b/arch/mips/pci/pci-octeon.c
index 9ee01936862e..3e92a06fa772 100644
--- a/arch/mips/pci/pci-octeon.c
+++ b/arch/mips/pci/pci-octeon.c
@@ -59,8 +59,7 @@ union octeon_pci_address {
} s;
};
-int __initconst (*octeon_pcibios_map_irq)(const struct pci_dev *dev,
- u8 slot, u8 pin);
+int (*octeon_pcibios_map_irq)(const struct pci_dev *dev, u8 slot, u8 pin);
enum octeon_dma_bar_type octeon_dma_bar_type = OCTEON_DMA_BAR_TYPE_INVALID;
/**
@@ -74,7 +73,7 @@ enum octeon_dma_bar_type octeon_dma_bar_type = OCTEON_DMA_BAR_TYPE_INVALID;
* as it goes through each bridge.
* Returns Interrupt number for the device
*/
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
if (octeon_pcibios_map_irq)
return octeon_pcibios_map_irq(dev, slot, pin);
diff --git a/arch/mips/pci/pci-rt2880.c b/arch/mips/pci/pci-rt2880.c
index d6360fe73d05..711cdccdf65b 100644
--- a/arch/mips/pci/pci-rt2880.c
+++ b/arch/mips/pci/pci-rt2880.c
@@ -181,7 +181,7 @@ static inline void rt2880_pci_write_u32(unsigned long reg, u32 val)
spin_unlock_irqrestore(&rt2880_pci_lock, flags);
}
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
u16 cmd;
int irq = -1;
diff --git a/arch/mips/pci/pci-rt3883.c b/arch/mips/pci/pci-rt3883.c
index 3520e9b414e7..958899ffe99c 100644
--- a/arch/mips/pci/pci-rt3883.c
+++ b/arch/mips/pci/pci-rt3883.c
@@ -207,8 +207,7 @@ static int rt3883_pci_irq_init(struct device *dev,
irq = irq_of_parse_and_map(rpc->intc_of_node, 0);
if (irq == 0) {
- dev_err(dev, "%s has no IRQ",
- of_node_full_name(rpc->intc_of_node));
+ dev_err(dev, "%pOF has no IRQ", rpc->intc_of_node);
return -EINVAL;
}
@@ -438,8 +437,8 @@ static int rt3883_pci_probe(struct platform_device *pdev)
}
if (!rpc->intc_of_node) {
- dev_err(dev, "%s has no %s child node",
- of_node_full_name(rpc->intc_of_node),
+ dev_err(dev, "%pOF has no %s child node",
+ rpc->intc_of_node,
"interrupt controller");
return -EINVAL;
}
@@ -454,8 +453,8 @@ static int rt3883_pci_probe(struct platform_device *pdev)
}
if (!rpc->pci_controller.of_node) {
- dev_err(dev, "%s has no %s child node",
- of_node_full_name(rpc->intc_of_node),
+ dev_err(dev, "%pOF has no %s child node",
+ rpc->intc_of_node,
"PCI host bridge");
err = -EINVAL;
goto err_put_intc_node;
@@ -565,7 +564,7 @@ err_put_intc_node:
return err;
}
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
return of_irq_parse_and_map_pci(dev, slot, pin);
}
diff --git a/arch/mips/pci/pci-tx4938.c b/arch/mips/pci/pci-tx4938.c
index 000c0e1f9ef8..a6418460e3c4 100644
--- a/arch/mips/pci/pci-tx4938.c
+++ b/arch/mips/pci/pci-tx4938.c
@@ -112,7 +112,7 @@ int __init tx4938_pciclk66_setup(void)
return pciclk;
}
-int __init tx4938_pcic1_map_irq(const struct pci_dev *dev, u8 slot)
+int tx4938_pcic1_map_irq(const struct pci_dev *dev, u8 slot)
{
if (get_tx4927_pcicptr(dev->bus->sysdata) == tx4938_pcic1ptr) {
switch (slot) {
diff --git a/arch/mips/pci/pci-tx4939.c b/arch/mips/pci/pci-tx4939.c
index 9d6acc00f348..09a65f7dbe7c 100644
--- a/arch/mips/pci/pci-tx4939.c
+++ b/arch/mips/pci/pci-tx4939.c
@@ -48,7 +48,7 @@ void __init tx4939_report_pci1clk(void)
((pciclk + 50000) / 100000) % 10);
}
-int __init tx4939_pcic1_map_irq(const struct pci_dev *dev, u8 slot)
+int tx4939_pcic1_map_irq(const struct pci_dev *dev, u8 slot)
{
if (get_tx4927_pcicptr(dev->bus->sysdata) == tx4939_pcic1ptr) {
switch (slot) {
@@ -68,7 +68,7 @@ int __init tx4939_pcic1_map_irq(const struct pci_dev *dev, u8 slot)
return -1;
}
-int __init tx4939_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int tx4939_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
int irq = tx4939_pcic1_map_irq(dev, slot);
diff --git a/arch/mips/pci/pci-xlp.c b/arch/mips/pci/pci-xlp.c
index 7babf01600cb..9eff9137f78e 100644
--- a/arch/mips/pci/pci-xlp.c
+++ b/arch/mips/pci/pci-xlp.c
@@ -205,7 +205,7 @@ int xlp_socdev_to_node(const struct pci_dev *lnkdev)
return PCI_SLOT(lnkdev->devfn) / 8;
}
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
struct pci_dev *lnkdev;
int lnkfunc, node;
diff --git a/arch/mips/pci/pci-xlr.c b/arch/mips/pci/pci-xlr.c
index 26d2dabef281..2a1c81a129ba 100644
--- a/arch/mips/pci/pci-xlr.c
+++ b/arch/mips/pci/pci-xlr.c
@@ -315,7 +315,7 @@ static void xls_pcie_ack_b(struct irq_data *d)
}
}
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
return get_irq_vector(dev);
}
diff --git a/arch/mips/pci/pcie-octeon.c b/arch/mips/pci/pcie-octeon.c
index ad3584dbc9d7..fd2887415bc8 100644
--- a/arch/mips/pci/pcie-octeon.c
+++ b/arch/mips/pci/pcie-octeon.c
@@ -1464,8 +1464,7 @@ static int cvmx_pcie_rc_initialize(int pcie_port)
* as it goes through each bridge.
* Returns Interrupt number for the device
*/
-int __init octeon_pcie_pcibios_map_irq(const struct pci_dev *dev,
- u8 slot, u8 pin)
+int octeon_pcie_pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
/*
* The EBH5600 board with the PCI to PCIe bridge mistakenly
diff --git a/arch/mips/pic32/Kconfig b/arch/mips/pic32/Kconfig
index 527d37da05ac..e284e89183cc 100644
--- a/arch/mips/pic32/Kconfig
+++ b/arch/mips/pic32/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if MACH_PIC32
choice
diff --git a/arch/mips/pistachio/Kconfig b/arch/mips/pistachio/Kconfig
index 97731ea94322..9a0e06c95184 100644
--- a/arch/mips/pistachio/Kconfig
+++ b/arch/mips/pistachio/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PISTACHIO_GPTIMER_CLKSRC
bool "Enable General Purpose Timer based clocksource"
depends on MACH_PISTACHIO
diff --git a/arch/mips/pistachio/init.c b/arch/mips/pistachio/init.c
index 1c91cad7988f..0b06c953d293 100644
--- a/arch/mips/pistachio/init.c
+++ b/arch/mips/pistachio/init.c
@@ -19,8 +19,7 @@
#include <asm/dma-coherence.h>
#include <asm/fw/fw.h>
#include <asm/mips-boards/generic.h>
-#include <asm/mips-cm.h>
-#include <asm/mips-cpc.h>
+#include <asm/mips-cps.h>
#include <asm/prom.h>
#include <asm/smp-ops.h>
#include <asm/traps.h>
diff --git a/arch/mips/pistachio/irq.c b/arch/mips/pistachio/irq.c
index 0a6b24c24652..709a8219073a 100644
--- a/arch/mips/pistachio/irq.c
+++ b/arch/mips/pistachio/irq.c
@@ -10,7 +10,6 @@
#include <linux/init.h>
#include <linux/irqchip.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/kernel.h>
#include <asm/cpu-features.h>
diff --git a/arch/mips/pistachio/time.c b/arch/mips/pistachio/time.c
index 17a0f1dec05b..8a6af9b76202 100644
--- a/arch/mips/pistachio/time.c
+++ b/arch/mips/pistachio/time.c
@@ -12,9 +12,9 @@
#include <linux/clk-provider.h>
#include <linux/clocksource.h>
#include <linux/init.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/of.h>
+#include <asm/mips-cps.h>
#include <asm/time.h>
unsigned int get_c0_compare_int(void)
diff --git a/arch/mips/pmcs-msp71xx/Kconfig b/arch/mips/pmcs-msp71xx/Kconfig
index 4190093d3053..d319bc0c3df6 100644
--- a/arch/mips/pmcs-msp71xx/Kconfig
+++ b/arch/mips/pmcs-msp71xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "PMC-Sierra MSP SOC type"
depends on PMC_MSP
diff --git a/arch/mips/pmcs-msp71xx/Makefile b/arch/mips/pmcs-msp71xx/Makefile
index d4f7220f2485..c040bd6ed62d 100644
--- a/arch/mips/pmcs-msp71xx/Makefile
+++ b/arch/mips/pmcs-msp71xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the PMC-Sierra MSP SOCs
#
diff --git a/arch/mips/pmcs-msp71xx/msp_smp.c b/arch/mips/pmcs-msp71xx/msp_smp.c
index ffa0f7101a97..2b08242ade62 100644
--- a/arch/mips/pmcs-msp71xx/msp_smp.c
+++ b/arch/mips/pmcs-msp71xx/msp_smp.c
@@ -22,6 +22,8 @@
#include <linux/smp.h>
#include <linux/interrupt.h>
+#include <asm/setup.h>
+
#ifdef CONFIG_MIPS_MT_SMP
#define MIPS_CPU_IPI_RESCHED_IRQ 0 /* SW int 0 for resched */
#define MIPS_CPU_IPI_CALL_IRQ 1 /* SW int 1 for call */
diff --git a/arch/mips/power/hibernate.c b/arch/mips/power/hibernate.c
index 19a9af68bcdb..94ab17c3c49d 100644
--- a/arch/mips/power/hibernate.c
+++ b/arch/mips/power/hibernate.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/tlbflush.h>
extern int restore_image(void);
diff --git a/arch/mips/ralink/Kconfig b/arch/mips/ralink/Kconfig
index 710b04cf4851..f26736b7080b 100644
--- a/arch/mips/ralink/Kconfig
+++ b/arch/mips/ralink/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if RALINK
config CLKEVT_RT3352
@@ -82,6 +83,16 @@ choice
depends on SOC_MT7620
select BUILTIN_DTB
+ config DTB_OMEGA2P
+ bool "Onion Omega2+"
+ depends on SOC_MT7620
+ select BUILTIN_DTB
+
+ config DTB_VOCORE2
+ bool "VoCore2"
+ depends on SOC_MT7620
+ select BUILTIN_DTB
+
endchoice
endif
diff --git a/arch/mips/ralink/clk.c b/arch/mips/ralink/clk.c
index eb1c61917eb7..1b7df115eb60 100644
--- a/arch/mips/ralink/clk.c
+++ b/arch/mips/ralink/clk.c
@@ -53,6 +53,9 @@ EXPORT_SYMBOL_GPL(clk_disable);
unsigned long clk_get_rate(struct clk *clk)
{
+ if (!clk)
+ return 0;
+
return clk->rate;
}
EXPORT_SYMBOL_GPL(clk_get_rate);
diff --git a/arch/mips/ralink/irq-gic.c b/arch/mips/ralink/irq-gic.c
index 2058280450b5..bda576f2cad8 100644
--- a/arch/mips/ralink/irq-gic.c
+++ b/arch/mips/ralink/irq-gic.c
@@ -11,7 +11,7 @@
#include <linux/of.h>
#include <linux/irqchip.h>
-#include <linux/irqchip/mips-gic.h>
+#include <asm/mips-cps.h>
int get_c0_perfcount_int(void)
{
diff --git a/arch/mips/ralink/mt7621.c b/arch/mips/ralink/mt7621.c
index 0695c2d64e49..1b274742077d 100644
--- a/arch/mips/ralink/mt7621.c
+++ b/arch/mips/ralink/mt7621.c
@@ -12,8 +12,7 @@
#include <asm/mipsregs.h>
#include <asm/smp-ops.h>
-#include <asm/mips-cm.h>
-#include <asm/mips-cpc.h>
+#include <asm/mips-cps.h>
#include <asm/mach-ralink/ralink_regs.h>
#include <asm/mach-ralink/mt7621.h>
@@ -199,7 +198,7 @@ void prom_soc_init(struct ralink_soc_info *soc_info)
mips_cm_probe();
mips_cpc_probe();
- if (mips_cm_numiocu()) {
+ if (mips_cps_numiocu(0)) {
/*
* mips_cm_probe() wipes out bootloader
* config for CM regions and we have to configure them
diff --git a/arch/mips/rb532/setup.c b/arch/mips/rb532/setup.c
index d0c64e71d532..1aa4df1385cb 100644
--- a/arch/mips/rb532/setup.c
+++ b/arch/mips/rb532/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* setup.c - boot time setup code
*/
diff --git a/arch/mips/sgi-ip22/Makefile b/arch/mips/sgi-ip22/Makefile
index 411cda9ee030..45f42fa08faa 100644
--- a/arch/mips/sgi-ip22/Makefile
+++ b/arch/mips/sgi-ip22/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the SGI specific kernel interface routines
# under Linux.
diff --git a/arch/mips/sgi-ip22/ip22-berr.c b/arch/mips/sgi-ip22/ip22-berr.c
index ff8e1935c873..34bb9801d5ff 100644
--- a/arch/mips/sgi-ip22/ip22-berr.c
+++ b/arch/mips/sgi-ip22/ip22-berr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ip22-berr.c: Bus error handling.
*
diff --git a/arch/mips/sgi-ip22/ip22-hpc.c b/arch/mips/sgi-ip22/ip22-hpc.c
index 396956e07307..49922e86cf1d 100644
--- a/arch/mips/sgi-ip22/ip22-hpc.c
+++ b/arch/mips/sgi-ip22/ip22-hpc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ip22-hpc.c: Routines for generic manipulation of the HPC controllers.
*
diff --git a/arch/mips/sgi-ip22/ip22-int.c b/arch/mips/sgi-ip22/ip22-int.c
index c66889fc4913..3804895fa697 100644
--- a/arch/mips/sgi-ip22/ip22-int.c
+++ b/arch/mips/sgi-ip22/ip22-int.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ip22-int.c: Routines for generic manipulation of the INT[23] ASIC
* found on INDY and Indigo2 workstations.
diff --git a/arch/mips/sgi-ip22/ip22-mc.c b/arch/mips/sgi-ip22/ip22-mc.c
index db5a64026443..1944d41507ef 100644
--- a/arch/mips/sgi-ip22/ip22-mc.c
+++ b/arch/mips/sgi-ip22/ip22-mc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ip22-mc.c: Routines for manipulating SGI Memory Controller.
*
diff --git a/arch/mips/sgi-ip22/ip22-nvram.c b/arch/mips/sgi-ip22/ip22-nvram.c
index cc6133bb57ca..e727ef519acf 100644
--- a/arch/mips/sgi-ip22/ip22-nvram.c
+++ b/arch/mips/sgi-ip22/ip22-nvram.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ip22-nvram.c: NVRAM and serial EEPROM handling.
*
diff --git a/arch/mips/sgi-ip22/ip22-platform.c b/arch/mips/sgi-ip22/ip22-platform.c
index a14fd32b76bd..37ad26716579 100644
--- a/arch/mips/sgi-ip22/ip22-platform.c
+++ b/arch/mips/sgi-ip22/ip22-platform.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/if_ether.h>
#include <linux/kernel.h>
diff --git a/arch/mips/sgi-ip22/ip22-setup.c b/arch/mips/sgi-ip22/ip22-setup.c
index 872159970935..b69daa02401b 100644
--- a/arch/mips/sgi-ip22/ip22-setup.c
+++ b/arch/mips/sgi-ip22/ip22-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ip22-setup.c: SGI specific setup, including init of the feature struct.
*
diff --git a/arch/mips/sgi-ip22/ip28-berr.c b/arch/mips/sgi-ip22/ip28-berr.c
index 75460e1e106b..2ed8e4990b7a 100644
--- a/arch/mips/sgi-ip22/ip28-berr.c
+++ b/arch/mips/sgi-ip22/ip28-berr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ip28-berr.c: Bus error handling.
*
diff --git a/arch/mips/sgi-ip27/Kconfig b/arch/mips/sgi-ip27/Kconfig
index 4d8705a65e4a..ef3847e7aee0 100644
--- a/arch/mips/sgi-ip27/Kconfig
+++ b/arch/mips/sgi-ip27/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "Node addressing mode"
depends on SGI_IP27
diff --git a/arch/mips/sgi-ip27/Makefile b/arch/mips/sgi-ip27/Makefile
index ab4affa626c7..73502fda13ee 100644
--- a/arch/mips/sgi-ip27/Makefile
+++ b/arch/mips/sgi-ip27/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the IP27 specific kernel interface routines under Linux.
#
diff --git a/arch/mips/sgi-ip27/ip27-irq-pci.c b/arch/mips/sgi-ip27/ip27-irq-pci.c
index 2a1c40784bd9..cd449e90b917 100644
--- a/arch/mips/sgi-ip27/ip27-irq-pci.c
+++ b/arch/mips/sgi-ip27/ip27-irq-pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ip27-irq.c: Highlevel interrupt handling for IP27 architecture.
*
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c
index 16ec4e12daa3..0dde6164a06f 100644
--- a/arch/mips/sgi-ip27/ip27-irq.c
+++ b/arch/mips/sgi-ip27/ip27-irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ip27-irq.c: Highlevel interrupt handling for IP27 architecture.
*
diff --git a/arch/mips/sgi-ip27/ip27-klconfig.c b/arch/mips/sgi-ip27/ip27-klconfig.c
index c873d62ff083..41171ff0c75e 100644
--- a/arch/mips/sgi-ip27/ip27-klconfig.c
+++ b/arch/mips/sgi-ip27/ip27-klconfig.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1999, 2000 Ralf Baechle (ralf@gnu.org)
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
diff --git a/arch/mips/sgi-ip27/ip27-klnuma.c b/arch/mips/sgi-ip27/ip27-klnuma.c
index 2beb03907d09..a4f01328de62 100644
--- a/arch/mips/sgi-ip27/ip27-klnuma.c
+++ b/arch/mips/sgi-ip27/ip27-klnuma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Ported from IRIX to Linux by Kanoj Sarcar, 06/08/00.
* Copyright 2000 - 2001 Silicon Graphics, Inc.
diff --git a/arch/mips/sgi-ip27/ip27-nmi.c b/arch/mips/sgi-ip27/ip27-nmi.c
index cfceaea92724..8ac2bfa35fb6 100644
--- a/arch/mips/sgi-ip27/ip27-nmi.c
+++ b/arch/mips/sgi-ip27/ip27-nmi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/mmzone.h>
#include <linux/nodemask.h>
diff --git a/arch/mips/sgi-ip27/ip27-smp.c b/arch/mips/sgi-ip27/ip27-smp.c
index 4cd47d23d81a..545446dfe7fa 100644
--- a/arch/mips/sgi-ip27/ip27-smp.c
+++ b/arch/mips/sgi-ip27/ip27-smp.c
@@ -195,7 +195,7 @@ static void ip27_smp_finish(void)
* set sp to the kernel stack of the newly created idle process, gp to the proc
* struct so that current_thread_info() will work.
*/
-static void ip27_boot_secondary(int cpu, struct task_struct *idle)
+static int ip27_boot_secondary(int cpu, struct task_struct *idle)
{
unsigned long gp = (unsigned long)task_thread_info(idle);
unsigned long sp = __KSTK_TOS(idle);
@@ -203,6 +203,7 @@ static void ip27_boot_secondary(int cpu, struct task_struct *idle)
LAUNCH_SLAVE(cputonasid(cpu), cputoslice(cpu),
(launch_proc_t)MAPPED_KERN_RW_TO_K0(smp_bootstrap),
0, (void *) sp, (void *) gp);
+ return 0;
}
static void __init ip27_smp_setup(void)
@@ -231,7 +232,7 @@ static void __init ip27_prepare_cpus(unsigned int max_cpus)
/* We already did everything necessary earlier */
}
-struct plat_smp_ops ip27_smp_ops = {
+const struct plat_smp_ops ip27_smp_ops = {
.send_ipi_single = ip27_send_ipi_single,
.send_ipi_mask = ip27_send_ipi_mask,
.init_secondary = ip27_init_secondary,
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index a53f0c8c901e..9d55247533a5 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copytight (C) 1999, 2000, 05, 06 Ralf Baechle (ralf@linux-mips.org)
* Copytight (C) 1999, 2000 Silicon Graphics, Inc.
diff --git a/arch/mips/sibyte/Kconfig b/arch/mips/sibyte/Kconfig
index 707b88441567..f4dbce25bc6a 100644
--- a/arch/mips/sibyte/Kconfig
+++ b/arch/mips/sibyte/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config SIBYTE_SB1250
bool
select CEVT_SB1250
diff --git a/arch/mips/sibyte/Makefile b/arch/mips/sibyte/Makefile
index 455c40d6d625..d015c4d79c3e 100644
--- a/arch/mips/sibyte/Makefile
+++ b/arch/mips/sibyte/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Sibyte SB1250 / BCM1480 family of SOCs
#
diff --git a/arch/mips/sibyte/bcm1480/smp.c b/arch/mips/sibyte/bcm1480/smp.c
index d0e94ffcc1b8..90c9d1255ad7 100644
--- a/arch/mips/sibyte/bcm1480/smp.c
+++ b/arch/mips/sibyte/bcm1480/smp.c
@@ -117,7 +117,7 @@ static void bcm1480_smp_finish(void)
* Setup the PC, SP, and GP of a secondary processor and start it
* running!
*/
-static void bcm1480_boot_secondary(int cpu, struct task_struct *idle)
+static int bcm1480_boot_secondary(int cpu, struct task_struct *idle)
{
int retval;
@@ -126,6 +126,7 @@ static void bcm1480_boot_secondary(int cpu, struct task_struct *idle)
(unsigned long)task_thread_info(idle), 0);
if (retval != 0)
printk("cfe_start_cpu(%i) returned %i\n" , cpu, retval);
+ return retval;
}
/*
@@ -157,7 +158,7 @@ static void __init bcm1480_prepare_cpus(unsigned int max_cpus)
{
}
-struct plat_smp_ops bcm1480_smp_ops = {
+const struct plat_smp_ops bcm1480_smp_ops = {
.send_ipi_single = bcm1480_send_ipi_single,
.send_ipi_mask = bcm1480_send_ipi_mask,
.init_secondary = bcm1480_init_secondary,
diff --git a/arch/mips/sibyte/common/cfe.c b/arch/mips/sibyte/common/cfe.c
index c1a11a11db7f..115399202eab 100644
--- a/arch/mips/sibyte/common/cfe.c
+++ b/arch/mips/sibyte/common/cfe.c
@@ -229,8 +229,8 @@ static int __init initrd_setup(char *str)
#endif
-extern struct plat_smp_ops sb_smp_ops;
-extern struct plat_smp_ops bcm1480_smp_ops;
+extern const struct plat_smp_ops sb_smp_ops;
+extern const struct plat_smp_ops bcm1480_smp_ops;
/*
* prom_init is called just after the cpu type is determined, from setup_arch()
diff --git a/arch/mips/sibyte/common/cfe_console.c b/arch/mips/sibyte/common/cfe_console.c
index 1ad2da103fe9..8af7b41f7c19 100644
--- a/arch/mips/sibyte/common/cfe_console.c
+++ b/arch/mips/sibyte/common/cfe_console.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/console.h>
diff --git a/arch/mips/sibyte/sb1250/smp.c b/arch/mips/sibyte/sb1250/smp.c
index 0a4a2c3982d8..5baabca52f25 100644
--- a/arch/mips/sibyte/sb1250/smp.c
+++ b/arch/mips/sibyte/sb1250/smp.c
@@ -106,7 +106,7 @@ static void sb1250_smp_finish(void)
* Setup the PC, SP, and GP of a secondary processor and start it
* running!
*/
-static void sb1250_boot_secondary(int cpu, struct task_struct *idle)
+static int sb1250_boot_secondary(int cpu, struct task_struct *idle)
{
int retval;
@@ -115,6 +115,7 @@ static void sb1250_boot_secondary(int cpu, struct task_struct *idle)
(unsigned long)task_thread_info(idle), 0);
if (retval != 0)
printk("cfe_start_cpu(%i) returned %i\n" , cpu, retval);
+ return retval;
}
/*
@@ -146,7 +147,7 @@ static void __init sb1250_prepare_cpus(unsigned int max_cpus)
{
}
-struct plat_smp_ops sb_smp_ops = {
+const struct plat_smp_ops sb_smp_ops = {
.send_ipi_single = sb1250_send_ipi_single,
.send_ipi_mask = sb1250_send_ipi_mask,
.init_secondary = sb1250_init_secondary,
diff --git a/arch/mips/sibyte/swarm/platform.c b/arch/mips/sibyte/swarm/platform.c
index 1cecdcf85cf1..484969db7713 100644
--- a/arch/mips/sibyte/swarm/platform.c
+++ b/arch/mips/sibyte/swarm/platform.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/err.h>
#include <linux/kernel.h>
#include <linux/init.h>
diff --git a/arch/mips/sni/reset.c b/arch/mips/sni/reset.c
index 6afa34346b81..66f963d8da7e 100644
--- a/arch/mips/sni/reset.c
+++ b/arch/mips/sni/reset.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/mips/sni/process.c
*
diff --git a/arch/mips/sni/time.c b/arch/mips/sni/time.c
index 7ee14f41fc25..0eb7d1e8821b 100644
--- a/arch/mips/sni/time.c
+++ b/arch/mips/sni/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/i8253.h>
#include <linux/interrupt.h>
diff --git a/arch/mips/tools/generic-board-config.sh b/arch/mips/tools/generic-board-config.sh
new file mode 100755
index 000000000000..08849f83ef6c
--- /dev/null
+++ b/arch/mips/tools/generic-board-config.sh
@@ -0,0 +1,88 @@
+#!/bin/sh
+#
+# Copyright (C) 2017 Imagination Technologies
+# Author: Paul Burton <paul.burton@mips.com>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This script merges configuration fragments for boards supported by the
+# generic MIPS kernel. It checks each for requirements specified using
+# formatted comments, and then calls merge_config.sh to merge those
+# fragments which have no unmet requirements.
+#
+# An example of requirements in your board config fragment might be:
+#
+# # require CONFIG_CPU_MIPS32_R2=y
+# # require CONFIG_CPU_LITTLE_ENDIAN=y
+#
+# This would mean that your board is only included in kernels which are
+# configured for little endian MIPS32r2 CPUs, and not for example in kernels
+# configured for 64 bit or big endian systems.
+#
+
+srctree="$1"
+objtree="$2"
+ref_cfg="$3"
+cfg="$4"
+boards_origin="$5"
+shift 5
+
+# Only print Skipping... lines if the user explicitly specified BOARDS=. In the
+# general case it only serves to obscure the useful output about what actually
+# was included.
+case ${boards_origin} in
+"command line")
+ print_skipped=1
+ ;;
+environment*)
+ print_skipped=1
+ ;;
+*)
+ print_skipped=0
+ ;;
+esac
+
+for board in $@; do
+ board_cfg="${srctree}/arch/mips/configs/generic/board-${board}.config"
+ if [ ! -f "${board_cfg}" ]; then
+ echo "WARNING: Board config '${board_cfg}' not found"
+ continue
+ fi
+
+ # For each line beginning with # require, cut out the field following
+ # it & search for that in the reference config file. If the requirement
+ # is not found then the subshell will exit with code 1, and we'll
+ # continue on to the next board.
+ grep -E '^# require ' "${board_cfg}" | \
+ cut -d' ' -f 3- | \
+ while read req; do
+ case ${req} in
+ *=y)
+ # If we require something =y then we check that a line
+ # containing it is present in the reference config.
+ grep -Eq "^${req}\$" "${ref_cfg}" && continue
+ ;;
+ *=n)
+ # If we require something =n then we just invert that
+ # check, considering the requirement met if there isn't
+ # a line containing the value =y in the reference
+ # config.
+ grep -Eq "^${req/%=n/=y}\$" "${ref_cfg}" || continue
+ ;;
+ *)
+ echo "WARNING: Unhandled requirement '${req}'"
+ ;;
+ esac
+
+ [ ${print_skipped} -eq 1 ] && echo "Skipping ${board_cfg}"
+ exit 1
+ done || continue
+
+ # Merge this board config fragment into our final config file
+ ${srctree}/scripts/kconfig/merge_config.sh \
+ -m -O ${objtree} ${cfg} ${board_cfg} \
+ | grep -Ev '^(#|Using)'
+done
diff --git a/arch/mips/txx9/Kconfig b/arch/mips/txx9/Kconfig
index 42923478d45c..d2509c93f0ee 100644
--- a/arch/mips/txx9/Kconfig
+++ b/arch/mips/txx9/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config MACH_TX39XX
bool
select MACH_TXX9
diff --git a/arch/mips/txx9/Makefile b/arch/mips/txx9/Makefile
index 34787dabff06..195295937282 100644
--- a/arch/mips/txx9/Makefile
+++ b/arch/mips/txx9/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Common TXx9
#
diff --git a/arch/mips/txx9/generic/Makefile b/arch/mips/txx9/generic/Makefile
index 1863c167e66e..6d00580fc81d 100644
--- a/arch/mips/txx9/generic/Makefile
+++ b/arch/mips/txx9/generic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for common code for TXx9 based systems
#
diff --git a/arch/mips/txx9/generic/pci.c b/arch/mips/txx9/generic/pci.c
index 0bd2a1e1ff9a..fb998726bd5d 100644
--- a/arch/mips/txx9/generic/pci.c
+++ b/arch/mips/txx9/generic/pci.c
@@ -386,9 +386,10 @@ int pcibios_plat_dev_init(struct pci_dev *dev)
return 0;
}
-int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+static int (*txx9_pci_map_irq)(const struct pci_dev *dev, u8 slot, u8 pin);
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- return txx9_board_vec->pci_map_irq(dev, slot, pin);
+ return txx9_pci_map_irq(dev, slot, pin);
}
char * (*txx9_board_pcibios_setup)(char *str) __initdata;
@@ -424,5 +425,8 @@ char *__init txx9_pcibios_setup(char *str)
txx9_pci_err_action = TXX9_PCI_ERR_IGNORE;
return NULL;
}
+
+ txx9_pci_map_irq = txx9_board_vec->pci_map_irq;
+
return str;
}
diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
index b47d2a45dbf4..ce196046ac3e 100644
--- a/arch/mips/vdso/Makefile
+++ b/arch/mips/vdso/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Objects to go into the VDSO.
obj-vdso-y := elf.o gettimeofday.o sigreturn.o
diff --git a/arch/mips/vdso/gettimeofday.c b/arch/mips/vdso/gettimeofday.c
index e2690d7ca4dd..e22b422f282c 100644
--- a/arch/mips/vdso/gettimeofday.c
+++ b/arch/mips/vdso/gettimeofday.c
@@ -11,12 +11,10 @@
#include "vdso.h"
#include <linux/compiler.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/time.h>
#include <asm/clocksource.h>
#include <asm/io.h>
-#include <asm/mips-cm.h>
#include <asm/unistd.h>
#include <asm/vdso.h>
@@ -126,9 +124,9 @@ static __always_inline u64 read_gic_count(const union mips_vdso_data *data)
u32 hi, hi2, lo;
do {
- hi = __raw_readl(gic + GIC_UMV_SH_COUNTER_63_32_OFS);
- lo = __raw_readl(gic + GIC_UMV_SH_COUNTER_31_00_OFS);
- hi2 = __raw_readl(gic + GIC_UMV_SH_COUNTER_63_32_OFS);
+ hi = __raw_readl(gic + sizeof(lo));
+ lo = __raw_readl(gic);
+ hi2 = __raw_readl(gic + sizeof(lo));
} while (hi2 != hi);
return (((u64)hi) << 32) + lo;
diff --git a/arch/mips/vdso/sigreturn.S b/arch/mips/vdso/sigreturn.S
index 715bf5993529..30c6219912ac 100644
--- a/arch/mips/vdso/sigreturn.S
+++ b/arch/mips/vdso/sigreturn.S
@@ -19,31 +19,21 @@
.cfi_sections .debug_frame
LEAF(__vdso_rt_sigreturn)
- .cfi_startproc
- .frame sp, 0, ra
- .mask 0x00000000, 0
- .fmask 0x00000000, 0
.cfi_signal_frame
li v0, __NR_rt_sigreturn
syscall
- .cfi_endproc
END(__vdso_rt_sigreturn)
#if _MIPS_SIM == _MIPS_SIM_ABI32
LEAF(__vdso_sigreturn)
- .cfi_startproc
- .frame sp, 0, ra
- .mask 0x00000000, 0
- .fmask 0x00000000, 0
.cfi_signal_frame
li v0, __NR_sigreturn
syscall
- .cfi_endproc
END(__vdso_sigreturn)
#endif
diff --git a/arch/mips/vr41xx/Kconfig b/arch/mips/vr41xx/Kconfig
index 74927b4d4f0b..992c988b83b0 100644
--- a/arch/mips/vr41xx/Kconfig
+++ b/arch/mips/vr41xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "Machine type"
depends on MACH_VR41XX
diff --git a/arch/mips/xilfpga/Kconfig b/arch/mips/xilfpga/Kconfig
index 42a030a0edba..ca7b2368eab7 100644
--- a/arch/mips/xilfpga/Kconfig
+++ b/arch/mips/xilfpga/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
choice
prompt "Machine type"
depends on MACH_XILFPGA
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig
index 38e3494bfb63..e9d8d60bd28b 100644
--- a/arch/mn10300/Kconfig
+++ b/arch/mn10300/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config MN10300
def_bool y
select HAVE_EXIT_THREAD
diff --git a/arch/mn10300/Kconfig.debug b/arch/mn10300/Kconfig.debug
index 94efb3ed223f..37ada651f756 100644
--- a/arch/mn10300/Kconfig.debug
+++ b/arch/mn10300/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/mn10300/boot/compressed/Makefile b/arch/mn10300/boot/compressed/Makefile
index 5f56f9de1061..9b9a48fc8e53 100644
--- a/arch/mn10300/boot/compressed/Makefile
+++ b/arch/mn10300/boot/compressed/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Create a compressed vmlinux image from the original vmlinux
#
diff --git a/arch/mn10300/boot/tools/build.c b/arch/mn10300/boot/tools/build.c
index 4f552ead0f8e..3ce158fe07b0 100644
--- a/arch/mn10300/boot/tools/build.c
+++ b/arch/mn10300/boot/tools/build.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 1997 Martin Mares
diff --git a/arch/mn10300/include/asm/kmap_types.h b/arch/mn10300/include/asm/kmap_types.h
index 76d093b58d4f..f444d7ffa766 100644
--- a/arch/mn10300/include/asm/kmap_types.h
+++ b/arch/mn10300/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_KMAP_TYPES_H
#define _ASM_KMAP_TYPES_H
diff --git a/arch/mn10300/include/asm/mmu.h b/arch/mn10300/include/asm/mmu.h
index 2d2d097e7309..b9d6d41adace 100644
--- a/arch/mn10300/include/asm/mmu.h
+++ b/arch/mn10300/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* MN10300 Memory management context
*
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/mn10300/include/asm/page_offset.h b/arch/mn10300/include/asm/page_offset.h
index 8eb5b16ad86b..1e869aa09418 100644
--- a/arch/mn10300/include/asm/page_offset.h
+++ b/arch/mn10300/include/asm/page_offset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* MN10300 Kernel base address
*
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/mn10300/include/asm/shmparam.h b/arch/mn10300/include/asm/shmparam.h
index ab666ed1a070..3a31faaa4353 100644
--- a/arch/mn10300/include/asm/shmparam.h
+++ b/arch/mn10300/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SHMPARAM_H
#define _ASM_SHMPARAM_H
diff --git a/arch/mn10300/include/asm/spinlock_types.h b/arch/mn10300/include/asm/spinlock_types.h
index 653dc519b405..32abdc89bbc7 100644
--- a/arch/mn10300/include/asm/spinlock_types.h
+++ b/arch/mn10300/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPINLOCK_TYPES_H
#define _ASM_SPINLOCK_TYPES_H
diff --git a/arch/mn10300/include/asm/termios.h b/arch/mn10300/include/asm/termios.h
index c2e29c75dfac..4010edcaa08e 100644
--- a/arch/mn10300/include/asm/termios.h
+++ b/arch/mn10300/include/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_TERMIOS_H
#define _ASM_TERMIOS_H
diff --git a/arch/mn10300/include/uapi/asm/bitsperlong.h b/arch/mn10300/include/uapi/asm/bitsperlong.h
index 6dc0bb0c13b2..76da34b10f59 100644
--- a/arch/mn10300/include/uapi/asm/bitsperlong.h
+++ b/arch/mn10300/include/uapi/asm/bitsperlong.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/bitsperlong.h>
diff --git a/arch/mn10300/include/uapi/asm/byteorder.h b/arch/mn10300/include/uapi/asm/byteorder.h
index 5dd0bdd9feee..3467df91216c 100644
--- a/arch/mn10300/include/uapi/asm/byteorder.h
+++ b/arch/mn10300/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_BYTEORDER_H
#define _ASM_BYTEORDER_H
diff --git a/arch/mn10300/include/uapi/asm/errno.h b/arch/mn10300/include/uapi/asm/errno.h
index 4c82b503d92f..9addba592646 100644
--- a/arch/mn10300/include/uapi/asm/errno.h
+++ b/arch/mn10300/include/uapi/asm/errno.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/errno.h>
diff --git a/arch/mn10300/include/uapi/asm/fcntl.h b/arch/mn10300/include/uapi/asm/fcntl.h
index 46ab12db5739..a77648c505d1 100644
--- a/arch/mn10300/include/uapi/asm/fcntl.h
+++ b/arch/mn10300/include/uapi/asm/fcntl.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/fcntl.h>
diff --git a/arch/mn10300/include/uapi/asm/ioctl.h b/arch/mn10300/include/uapi/asm/ioctl.h
index b279fe06dfe5..b809c4566e5f 100644
--- a/arch/mn10300/include/uapi/asm/ioctl.h
+++ b/arch/mn10300/include/uapi/asm/ioctl.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/ioctl.h>
diff --git a/arch/mn10300/include/uapi/asm/ioctls.h b/arch/mn10300/include/uapi/asm/ioctls.h
index 0212f4b22557..0955d4f854e9 100644
--- a/arch/mn10300/include/uapi/asm/ioctls.h
+++ b/arch/mn10300/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_IOCTLS_H
#define _ASM_IOCTLS_H
diff --git a/arch/mn10300/include/uapi/asm/ipcbuf.h b/arch/mn10300/include/uapi/asm/ipcbuf.h
index 84c7e51cb6d0..90d6445a14df 100644
--- a/arch/mn10300/include/uapi/asm/ipcbuf.h
+++ b/arch/mn10300/include/uapi/asm/ipcbuf.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/ipcbuf.h>
diff --git a/arch/mn10300/include/uapi/asm/kvm_para.h b/arch/mn10300/include/uapi/asm/kvm_para.h
index 14fab8f0b957..baacc4996d18 100644
--- a/arch/mn10300/include/uapi/asm/kvm_para.h
+++ b/arch/mn10300/include/uapi/asm/kvm_para.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/kvm_para.h>
diff --git a/arch/mn10300/include/uapi/asm/mman.h b/arch/mn10300/include/uapi/asm/mman.h
index db5c53da73ce..eb7f4798c036 100644
--- a/arch/mn10300/include/uapi/asm/mman.h
+++ b/arch/mn10300/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/mman.h>
#define MIN_MAP_ADDR PAGE_SIZE /* minimum fixed mmap address */
diff --git a/arch/mn10300/include/uapi/asm/msgbuf.h b/arch/mn10300/include/uapi/asm/msgbuf.h
index 8b602450cc4a..5982def83355 100644
--- a/arch/mn10300/include/uapi/asm/msgbuf.h
+++ b/arch/mn10300/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_MSGBUF_H
#define _ASM_MSGBUF_H
diff --git a/arch/mn10300/include/uapi/asm/param.h b/arch/mn10300/include/uapi/asm/param.h
index 02a0ca6f13ce..e0020d7742bd 100644
--- a/arch/mn10300/include/uapi/asm/param.h
+++ b/arch/mn10300/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* MN10300 Kernel parameters
*
* Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
diff --git a/arch/mn10300/include/uapi/asm/poll.h b/arch/mn10300/include/uapi/asm/poll.h
index c98509d3149e..b7132a305a47 100644
--- a/arch/mn10300/include/uapi/asm/poll.h
+++ b/arch/mn10300/include/uapi/asm/poll.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/poll.h>
diff --git a/arch/mn10300/include/uapi/asm/posix_types.h b/arch/mn10300/include/uapi/asm/posix_types.h
index d31eeea480cf..6b4cfc7136e9 100644
--- a/arch/mn10300/include/uapi/asm/posix_types.h
+++ b/arch/mn10300/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* MN10300 POSIX types
*
* Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
diff --git a/arch/mn10300/include/uapi/asm/ptrace.h b/arch/mn10300/include/uapi/asm/ptrace.h
index 71b2251b7bff..f485c481a266 100644
--- a/arch/mn10300/include/uapi/asm/ptrace.h
+++ b/arch/mn10300/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* MN10300 Exception frame layout and ptrace constants
*
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/mn10300/include/uapi/asm/resource.h b/arch/mn10300/include/uapi/asm/resource.h
index 04bc4db8921b..49a81fbab43d 100644
--- a/arch/mn10300/include/uapi/asm/resource.h
+++ b/arch/mn10300/include/uapi/asm/resource.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/resource.h>
diff --git a/arch/mn10300/include/uapi/asm/sembuf.h b/arch/mn10300/include/uapi/asm/sembuf.h
index 301f3f9d8aa9..ef44c42c7e0f 100644
--- a/arch/mn10300/include/uapi/asm/sembuf.h
+++ b/arch/mn10300/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SEMBUF_H
#define _ASM_SEMBUF_H
diff --git a/arch/mn10300/include/uapi/asm/setup.h b/arch/mn10300/include/uapi/asm/setup.h
index ae5704fa77ad..043dd4b92026 100644
--- a/arch/mn10300/include/uapi/asm/setup.h
+++ b/arch/mn10300/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* There isn't anything here anymore, but the file must not be empty or patch
* will delete it.
diff --git a/arch/mn10300/include/uapi/asm/shmbuf.h b/arch/mn10300/include/uapi/asm/shmbuf.h
index 8f300cc35d6c..6e81f74f51c6 100644
--- a/arch/mn10300/include/uapi/asm/shmbuf.h
+++ b/arch/mn10300/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SHMBUF_H
#define _ASM_SHMBUF_H
diff --git a/arch/mn10300/include/uapi/asm/sigcontext.h b/arch/mn10300/include/uapi/asm/sigcontext.h
index 4de3afff4ad7..1c361fabb977 100644
--- a/arch/mn10300/include/uapi/asm/sigcontext.h
+++ b/arch/mn10300/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* MN10300 Userspace signal context
*
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/mn10300/include/uapi/asm/signal.h b/arch/mn10300/include/uapi/asm/signal.h
index f423a08d7eeb..566cb199d5ac 100644
--- a/arch/mn10300/include/uapi/asm/signal.h
+++ b/arch/mn10300/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* MN10300 Signal definitions
*
* Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
diff --git a/arch/mn10300/include/uapi/asm/socket.h b/arch/mn10300/include/uapi/asm/socket.h
index ac82a3f26dbf..b35eee132142 100644
--- a/arch/mn10300/include/uapi/asm/socket.h
+++ b/arch/mn10300/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SOCKET_H
#define _ASM_SOCKET_H
diff --git a/arch/mn10300/include/uapi/asm/sockios.h b/arch/mn10300/include/uapi/asm/sockios.h
index b03043a1c564..5706baa3cd0d 100644
--- a/arch/mn10300/include/uapi/asm/sockios.h
+++ b/arch/mn10300/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SOCKIOS_H
#define _ASM_SOCKIOS_H
diff --git a/arch/mn10300/include/uapi/asm/stat.h b/arch/mn10300/include/uapi/asm/stat.h
index 63ff8371cf2c..769f5f8829d4 100644
--- a/arch/mn10300/include/uapi/asm/stat.h
+++ b/arch/mn10300/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_STAT_H
#define _ASM_STAT_H
diff --git a/arch/mn10300/include/uapi/asm/swab.h b/arch/mn10300/include/uapi/asm/swab.h
index bd818a820ca8..d2284dd27ad4 100644
--- a/arch/mn10300/include/uapi/asm/swab.h
+++ b/arch/mn10300/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* MN10300 Byte-order primitive construction
*
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/mn10300/include/uapi/asm/termbits.h b/arch/mn10300/include/uapi/asm/termbits.h
index 130d42495972..fca82ea2ca2c 100644
--- a/arch/mn10300/include/uapi/asm/termbits.h
+++ b/arch/mn10300/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_TERMBITS_H
#define _ASM_TERMBITS_H
diff --git a/arch/mn10300/include/uapi/asm/termios.h b/arch/mn10300/include/uapi/asm/termios.h
index 11d3cc9d3162..25981aadb8cd 100644
--- a/arch/mn10300/include/uapi/asm/termios.h
+++ b/arch/mn10300/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_TERMIOS_H
#define _UAPI_ASM_TERMIOS_H
diff --git a/arch/mn10300/include/uapi/asm/types.h b/arch/mn10300/include/uapi/asm/types.h
index 8b3f0501b9bc..7d2a697e2937 100644
--- a/arch/mn10300/include/uapi/asm/types.h
+++ b/arch/mn10300/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* MN10300 Basic type definitions
*
* Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
diff --git a/arch/mn10300/include/uapi/asm/unistd.h b/arch/mn10300/include/uapi/asm/unistd.h
index e28ac3f42479..c0c96b650692 100644
--- a/arch/mn10300/include/uapi/asm/unistd.h
+++ b/arch/mn10300/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* MN10300 System call number list
*
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
diff --git a/arch/mn10300/kernel/Makefile b/arch/mn10300/kernel/Makefile
index 561029f7fa44..de32af0e4b6e 100644
--- a/arch/mn10300/kernel/Makefile
+++ b/arch/mn10300/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the MN10300-specific core kernel code
#
diff --git a/arch/mn10300/kernel/asm-offsets.c b/arch/mn10300/kernel/asm-offsets.c
index e5a61c659b5a..57e6cc96267b 100644
--- a/arch/mn10300/kernel/asm-offsets.c
+++ b/arch/mn10300/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generate definitions needed by assembly language modules.
* This code generates raw asm output which is post-processed
diff --git a/arch/mn10300/kernel/gdb-stub.c b/arch/mn10300/kernel/gdb-stub.c
index a128c57b586b..3399d5699804 100644
--- a/arch/mn10300/kernel/gdb-stub.c
+++ b/arch/mn10300/kernel/gdb-stub.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* MN10300 GDB stub
*
* Originally written by Glenn Engel, Lake Stevens Instrument Division
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c
index 89e8027e07fb..7c475fd99c46 100644
--- a/arch/mn10300/kernel/process.c
+++ b/arch/mn10300/kernel/process.c
@@ -59,10 +59,6 @@ void arch_cpu_idle(void)
}
#endif
-void release_segments(struct mm_struct *mm)
-{
-}
-
void machine_restart(char *cmd)
{
#ifdef CONFIG_KERNEL_DEBUGGER
@@ -113,14 +109,6 @@ void release_thread(struct task_struct *dead_task)
}
/*
- * we do not have to muck with descriptors here, that is
- * done in switch_mm() as needed.
- */
-void copy_segments(struct task_struct *p, struct mm_struct *new_mm)
-{
-}
-
-/*
* this gets called so that we can store lazy state into memory and copy the
* current task into the new thread.
*/
diff --git a/arch/mn10300/mm/Kconfig.cache b/arch/mn10300/mm/Kconfig.cache
index bfbe52691f2c..8cc5d9ec3b6c 100644
--- a/arch/mn10300/mm/Kconfig.cache
+++ b/arch/mn10300/mm/Kconfig.cache
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# MN10300 CPU cache options
#
diff --git a/arch/mn10300/mm/Makefile b/arch/mn10300/mm/Makefile
index 11f38466ac28..048ba6f67f9a 100644
--- a/arch/mn10300/mm/Makefile
+++ b/arch/mn10300/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the MN10300-specific memory management code
#
diff --git a/arch/mn10300/oprofile/Makefile b/arch/mn10300/oprofile/Makefile
index 918dbe60ebb6..9fa95aaf496b 100644
--- a/arch/mn10300/oprofile/Makefile
+++ b/arch/mn10300/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the MN10300-specific profiling code
#
diff --git a/arch/mn10300/proc-mn103e010/include/proc/intctl-regs.h b/arch/mn10300/proc-mn103e010/include/proc/intctl-regs.h
index f537801a44ba..516afe824055 100644
--- a/arch/mn10300/proc-mn103e010/include/proc/intctl-regs.h
+++ b/arch/mn10300/proc-mn103e010/include/proc/intctl-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PROC_INTCTL_REGS_H
#define _ASM_PROC_INTCTL_REGS_H
diff --git a/arch/mn10300/proc-mn2ws0050/include/proc/intctl-regs.h b/arch/mn10300/proc-mn2ws0050/include/proc/intctl-regs.h
index a1e977273d19..4d4084ea6694 100644
--- a/arch/mn10300/proc-mn2ws0050/include/proc/intctl-regs.h
+++ b/arch/mn10300/proc-mn2ws0050/include/proc/intctl-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PROC_INTCTL_REGS_H
#define _ASM_PROC_INTCTL_REGS_H
diff --git a/arch/mn10300/unit-asb2364/include/unit/fpga-regs.h b/arch/mn10300/unit-asb2364/include/unit/fpga-regs.h
index 33f100f9b468..2901ed344b3d 100644
--- a/arch/mn10300/unit-asb2364/include/unit/fpga-regs.h
+++ b/arch/mn10300/unit-asb2364/include/unit/fpga-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ASB2364 FPGA registers
*/
diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig
index c587764b9c5a..60fae03dac79 100644
--- a/arch/nios2/Kconfig
+++ b/arch/nios2/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config NIOS2
def_bool y
select TIMER_OF
diff --git a/arch/nios2/Kconfig.debug b/arch/nios2/Kconfig.debug
index 55105220370c..edfeef049a51 100644
--- a/arch/nios2/Kconfig.debug
+++ b/arch/nios2/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
config TRACE_IRQFLAGS_SUPPORT
diff --git a/arch/nios2/boot/compressed/Makefile b/arch/nios2/boot/compressed/Makefile
index d5921c9a9726..791e4309250a 100644
--- a/arch/nios2/boot/compressed/Makefile
+++ b/arch/nios2/boot/compressed/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# create a compressed vmlinux image from the original vmlinux
#
diff --git a/arch/nios2/boot/dts/3c120_devboard.dts b/arch/nios2/boot/dts/3c120_devboard.dts
index 31c51f9a2f09..36ccdf05837d 100644
--- a/arch/nios2/boot/dts/3c120_devboard.dts
+++ b/arch/nios2/boot/dts/3c120_devboard.dts
@@ -159,6 +159,7 @@
};
chosen {
- bootargs = "debug console=ttyJ0,115200";
+ bootargs = "debug earlycon console=ttyJ0,115200";
+ stdout-path = &jtag_uart;
};
};
diff --git a/arch/nios2/include/uapi/asm/byteorder.h b/arch/nios2/include/uapi/asm/byteorder.h
index 3ab5dc20d757..639007a5544e 100644
--- a/arch/nios2/include/uapi/asm/byteorder.h
+++ b/arch/nios2/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2009 Thomas Chou <thomas@wytron.com.tw>
* Copyright (C) 2004 Microtronix Datacom Ltd
diff --git a/arch/nios2/include/uapi/asm/elf.h b/arch/nios2/include/uapi/asm/elf.h
index 6f06d3b2949e..ab0df71f81b2 100644
--- a/arch/nios2/include/uapi/asm/elf.h
+++ b/arch/nios2/include/uapi/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2011 Tobias Klauser <tklauser@distanz.ch>
*
diff --git a/arch/nios2/include/uapi/asm/ptrace.h b/arch/nios2/include/uapi/asm/ptrace.h
index 1d35de90a977..2b91dbe5bcfe 100644
--- a/arch/nios2/include/uapi/asm/ptrace.h
+++ b/arch/nios2/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch>
* Copyright (C) 2004 Microtronix Datacom Ltd
diff --git a/arch/nios2/include/uapi/asm/sigcontext.h b/arch/nios2/include/uapi/asm/sigcontext.h
index b67944a50927..204ae3475b4e 100644
--- a/arch/nios2/include/uapi/asm/sigcontext.h
+++ b/arch/nios2/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2004, Microtronix Datacom Ltd.
*
diff --git a/arch/nios2/include/uapi/asm/signal.h b/arch/nios2/include/uapi/asm/signal.h
index f29ee6314481..b0d983068fa5 100644
--- a/arch/nios2/include/uapi/asm/signal.h
+++ b/arch/nios2/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright Altera Corporation (C) 2013. All rights reserved
*
diff --git a/arch/nios2/include/uapi/asm/swab.h b/arch/nios2/include/uapi/asm/swab.h
index b4e22ebaeb17..9750547a5f82 100644
--- a/arch/nios2/include/uapi/asm/swab.h
+++ b/arch/nios2/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 Tobias Klauser <tklauser@distanz.ch>
* Copyright (C) 2011 Pyramid Technical Consultants, Inc.
diff --git a/arch/nios2/include/uapi/asm/unistd.h b/arch/nios2/include/uapi/asm/unistd.h
index 51a32c71ce2b..b6bdae04bc84 100644
--- a/arch/nios2/include/uapi/asm/unistd.h
+++ b/arch/nios2/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2013 Altera Corporation
*
diff --git a/arch/nios2/kernel/Makefile b/arch/nios2/kernel/Makefile
index 06d07432b38d..0b645e1e3158 100644
--- a/arch/nios2/kernel/Makefile
+++ b/arch/nios2/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the nios2 linux kernel.
#
diff --git a/arch/nios2/kernel/time.c b/arch/nios2/kernel/time.c
index 645129aaa9a0..20e86209ef2e 100644
--- a/arch/nios2/kernel/time.c
+++ b/arch/nios2/kernel/time.c
@@ -107,7 +107,10 @@ static struct nios2_clocksource nios2_cs = {
cycles_t get_cycles(void)
{
- return nios2_timer_read(&nios2_cs.cs);
+ /* Only read timer if it has been initialized */
+ if (nios2_cs.timer.base)
+ return nios2_timer_read(&nios2_cs.cs);
+ return 0;
}
EXPORT_SYMBOL(get_cycles);
diff --git a/arch/nios2/mm/Makefile b/arch/nios2/mm/Makefile
index 3cbd0840873c..9d37fafd1dd1 100644
--- a/arch/nios2/mm/Makefile
+++ b/arch/nios2/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Nios2-specific parts of the memory manager.
#
diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
index a0f2e4a323c1..df2136ab1dcc 100644
--- a/arch/openrisc/Kconfig
+++ b/arch/openrisc/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
diff --git a/arch/openrisc/boot/dts/Makefile b/arch/openrisc/boot/dts/Makefile
index b092d30d6c23..792ce7143c3a 100644
--- a/arch/openrisc/boot/dts/Makefile
+++ b/arch/openrisc/boot/dts/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ifneq '$(CONFIG_OPENRISC_BUILTIN_DTB)' '""'
BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_OPENRISC_BUILTIN_DTB)).dtb.o
else
diff --git a/arch/openrisc/boot/dts/or1ksim.dts b/arch/openrisc/boot/dts/or1ksim.dts
index 5d4f9027afaf..9f4b856da580 100644
--- a/arch/openrisc/boot/dts/or1ksim.dts
+++ b/arch/openrisc/boot/dts/or1ksim.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/ {
compatible = "opencores,or1ksim";
diff --git a/arch/openrisc/include/asm/futex.h b/arch/openrisc/include/asm/futex.h
index 8fed278a24b8..618da4a1bffb 100644
--- a/arch/openrisc/include/asm/futex.h
+++ b/arch/openrisc/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_OPENRISC_FUTEX_H
#define __ASM_OPENRISC_FUTEX_H
diff --git a/arch/openrisc/include/asm/pgtable.h b/arch/openrisc/include/asm/pgtable.h
index ff97374ca069..71a6f08de8f2 100644
--- a/arch/openrisc/include/asm/pgtable.h
+++ b/arch/openrisc/include/asm/pgtable.h
@@ -414,6 +414,8 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep)
extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; /* defined in head.S */
+struct vm_area_struct;
+
/*
* or32 doesn't have any external MMU info: the kernel page
* tables contain all the necessary information.
diff --git a/arch/openrisc/include/asm/string.h b/arch/openrisc/include/asm/string.h
index 64939ccd7531..69b975454ff2 100644
--- a/arch/openrisc/include/asm/string.h
+++ b/arch/openrisc/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_OPENRISC_STRING_H
#define __ASM_OPENRISC_STRING_H
diff --git a/arch/openrisc/include/uapi/asm/elf.h b/arch/openrisc/include/uapi/asm/elf.h
index 88842760e66f..e892d5061685 100644
--- a/arch/openrisc/include/uapi/asm/elf.h
+++ b/arch/openrisc/include/uapi/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* OpenRISC Linux
*
diff --git a/arch/openrisc/include/uapi/asm/param.h b/arch/openrisc/include/uapi/asm/param.h
index c39a336610e2..103471e310ca 100644
--- a/arch/openrisc/include/uapi/asm/param.h
+++ b/arch/openrisc/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* OpenRISC Linux
*
diff --git a/arch/openrisc/include/uapi/asm/ptrace.h b/arch/openrisc/include/uapi/asm/ptrace.h
index 9760bd17fbcc..d4fab268f6aa 100644
--- a/arch/openrisc/include/uapi/asm/ptrace.h
+++ b/arch/openrisc/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* OpenRISC Linux
*
diff --git a/arch/openrisc/include/uapi/asm/sigcontext.h b/arch/openrisc/include/uapi/asm/sigcontext.h
index b79c2b19afbe..8ab775fc3450 100644
--- a/arch/openrisc/include/uapi/asm/sigcontext.h
+++ b/arch/openrisc/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* OpenRISC Linux
*
diff --git a/arch/openrisc/include/uapi/asm/unistd.h b/arch/openrisc/include/uapi/asm/unistd.h
index 471905bd7745..9a3ee389631e 100644
--- a/arch/openrisc/include/uapi/asm/unistd.h
+++ b/arch/openrisc/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* OpenRISC Linux
*
diff --git a/arch/openrisc/kernel/Makefile b/arch/openrisc/kernel/Makefile
index ec6d9d37cefd..c4ea6cabad46 100644
--- a/arch/openrisc/kernel/Makefile
+++ b/arch/openrisc/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/openrisc/kernel/vmlinux.h b/arch/openrisc/kernel/vmlinux.h
index bbcdf21b0b35..bdea46c617c7 100644
--- a/arch/openrisc/kernel/vmlinux.h
+++ b/arch/openrisc/kernel/vmlinux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __OPENRISC_VMLINUX_H_
#define __OPENRISC_VMLINUX_H_
diff --git a/arch/openrisc/lib/memcpy.c b/arch/openrisc/lib/memcpy.c
index 669887a60e27..fe2177628fd9 100644
--- a/arch/openrisc/lib/memcpy.c
+++ b/arch/openrisc/lib/memcpy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/openrisc/lib/memcpy.c
*
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index ba7b7ddc3844..1fd3eb5b66c6 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PARISC
def_bool y
select ARCH_MIGHT_HAVE_PC_PARPORT
@@ -257,6 +258,18 @@ config PARISC_PAGE_SIZE_64KB
endchoice
+config PARISC_SELF_EXTRACT
+ bool "Build kernel as self-extracting executable"
+ default y
+ help
+ Say Y if you want to build the parisc kernel as a kind of
+ self-extracting executable.
+
+ If you say N here, the kernel will be compressed with gzip
+ which can be loaded by the palo bootloader directly too.
+
+ If you don't know what to do here, say Y.
+
config SMP
bool "Symmetric multi-processing support"
---help---
diff --git a/arch/parisc/Kconfig.debug b/arch/parisc/Kconfig.debug
index 0d856b94c9b1..fb3507f9b14a 100644
--- a/arch/parisc/Kconfig.debug
+++ b/arch/parisc/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
index 58fae5d2449d..01946ebaff72 100644
--- a/arch/parisc/Makefile
+++ b/arch/parisc/Makefile
@@ -129,8 +129,13 @@ Image: vmlinux
bzImage: vmlinux
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
+ifdef CONFIG_PARISC_SELF_EXTRACT
vmlinuz: bzImage
$(OBJCOPY) $(boot)/bzImage $@
+else
+vmlinuz: vmlinux
+ @gzip -cf -9 $< > $@
+endif
install:
$(CONFIG_SHELL) $(src)/arch/parisc/install.sh \
diff --git a/arch/parisc/boot/compressed/Makefile b/arch/parisc/boot/compressed/Makefile
index 5450a11c9d10..7d7e594bda36 100644
--- a/arch/parisc/boot/compressed/Makefile
+++ b/arch/parisc/boot/compressed/Makefile
@@ -15,7 +15,7 @@ targets += misc.o piggy.o sizes.h head.o real2.o firmware.o
KBUILD_CFLAGS := -D__KERNEL__ -O2 -DBOOTLOADER
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
KBUILD_CFLAGS += $(cflags-y) -fno-delete-null-pointer-checks
-KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdisable-fpregs
+KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdisable-fpregs -Os
ifndef CONFIG_64BIT
KBUILD_CFLAGS += -mfast-indirect-calls
endif
diff --git a/arch/parisc/boot/compressed/misc.c b/arch/parisc/boot/compressed/misc.c
index 13a4bf9ac4da..9345b44b86f0 100644
--- a/arch/parisc/boot/compressed/misc.c
+++ b/arch/parisc/boot/compressed/misc.c
@@ -24,7 +24,8 @@
/* Symbols defined by linker scripts */
extern char input_data[];
extern int input_len;
-extern __le32 output_len; /* at unaligned address, little-endian */
+/* output_len is inserted by the linker possibly at an unaligned address */
+extern __le32 output_len __aligned(1);
extern char _text, _end;
extern char _bss, _ebss;
extern char _startcode_end;
diff --git a/arch/parisc/include/asm/agp.h b/arch/parisc/include/asm/agp.h
index d226ffa8fc12..cb04470e63d0 100644
--- a/arch/parisc/include/asm/agp.h
+++ b/arch/parisc/include/asm/agp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_AGP_H
#define _ASM_PARISC_AGP_H
diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h
index 17b98a87e5e2..bc54addd589f 100644
--- a/arch/parisc/include/asm/atomic.h
+++ b/arch/parisc/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>
* Copyright (C) 2006 Kyle McMartin <kyle@parisc-linux.org>
*/
diff --git a/arch/parisc/include/asm/bitops.h b/arch/parisc/include/asm/bitops.h
index da87943328a5..53252d4f9a57 100644
--- a/arch/parisc/include/asm/bitops.h
+++ b/arch/parisc/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_BITOPS_H
#define _PARISC_BITOPS_H
diff --git a/arch/parisc/include/asm/bug.h b/arch/parisc/include/asm/bug.h
index 07ea467f22fc..4b6d60b94124 100644
--- a/arch/parisc/include/asm/bug.h
+++ b/arch/parisc/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_BUG_H
#define _PARISC_BUG_H
diff --git a/arch/parisc/include/asm/bugs.h b/arch/parisc/include/asm/bugs.h
index 9e6284342a5f..0a7f9db6bd1c 100644
--- a/arch/parisc/include/asm/bugs.h
+++ b/arch/parisc/include/asm/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-parisc/bugs.h
*
diff --git a/arch/parisc/include/asm/cache.h b/arch/parisc/include/asm/cache.h
index df0f52bd18b4..150b7f30ea90 100644
--- a/arch/parisc/include/asm/cache.h
+++ b/arch/parisc/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-parisc/cache.h
*/
diff --git a/arch/parisc/include/asm/cacheflush.h b/arch/parisc/include/asm/cacheflush.h
index c7e15cc5c668..3742508cc534 100644
--- a/arch/parisc/include/asm/cacheflush.h
+++ b/arch/parisc/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_CACHEFLUSH_H
#define _PARISC_CACHEFLUSH_H
diff --git a/arch/parisc/include/asm/checksum.h b/arch/parisc/include/asm/checksum.h
index 60c2c42619c9..3cbf1f1c1188 100644
--- a/arch/parisc/include/asm/checksum.h
+++ b/arch/parisc/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_CHECKSUM_H
#define _PARISC_CHECKSUM_H
diff --git a/arch/parisc/include/asm/cmpxchg.h b/arch/parisc/include/asm/cmpxchg.h
index 7ada30900807..f627c37dad9c 100644
--- a/arch/parisc/include/asm/cmpxchg.h
+++ b/arch/parisc/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* forked from parisc asm/atomic.h which was:
* Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>
diff --git a/arch/parisc/include/asm/compat.h b/arch/parisc/include/asm/compat.h
index 3387307cc33e..07f48827afda 100644
--- a/arch/parisc/include/asm/compat.h
+++ b/arch/parisc/include/asm/compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_COMPAT_H
#define _ASM_PARISC_COMPAT_H
/*
diff --git a/arch/parisc/include/asm/compat_ucontext.h b/arch/parisc/include/asm/compat_ucontext.h
index 2f7292afde3c..c606f1bc891d 100644
--- a/arch/parisc/include/asm/compat_ucontext.h
+++ b/arch/parisc/include/asm/compat_ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_COMPAT_UCONTEXT_H
#define _ASM_PARISC_COMPAT_UCONTEXT_H
diff --git a/arch/parisc/include/asm/delay.h b/arch/parisc/include/asm/delay.h
index 08e58e679e3e..841b506b702a 100644
--- a/arch/parisc/include/asm/delay.h
+++ b/arch/parisc/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_DELAY_H
#define _ASM_PARISC_DELAY_H
diff --git a/arch/parisc/include/asm/dma-mapping.h b/arch/parisc/include/asm/dma-mapping.h
index 2b16282add69..7af4a00b5ce2 100644
--- a/arch/parisc/include/asm/dma-mapping.h
+++ b/arch/parisc/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_DMA_MAPPING_H
#define _PARISC_DMA_MAPPING_H
diff --git a/arch/parisc/include/asm/dma.h b/arch/parisc/include/asm/dma.h
index fd48ae2de950..eea80ed34e6d 100644
--- a/arch/parisc/include/asm/dma.h
+++ b/arch/parisc/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* asm/dma.h: Defines for using and allocating dma channels.
* Written by Hennus Bergman, 1992.
* High DMA channel support & info by Hannu Savolainen
diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h
index a6b2a421571e..382d75a2ee4f 100644
--- a/arch/parisc/include/asm/elf.h
+++ b/arch/parisc/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASMPARISC_ELF_H
#define __ASMPARISC_ELF_H
diff --git a/arch/parisc/include/asm/fb.h b/arch/parisc/include/asm/fb.h
index 4d503a023ab2..c4cd6360f996 100644
--- a/arch/parisc/include/asm/fb.h
+++ b/arch/parisc/include/asm/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FB_H_
#define _ASM_FB_H_
diff --git a/arch/parisc/include/asm/fixmap.h b/arch/parisc/include/asm/fixmap.h
index 6fec4d4a1a18..f7c3a0905de4 100644
--- a/arch/parisc/include/asm/fixmap.h
+++ b/arch/parisc/include/asm/fixmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FIXMAP_H
#define _ASM_FIXMAP_H
diff --git a/arch/parisc/include/asm/ftrace.h b/arch/parisc/include/asm/ftrace.h
index d635c6b0269d..42b2c75a1645 100644
--- a/arch/parisc/include/asm/ftrace.h
+++ b/arch/parisc/include/asm/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_FTRACE_H
#define _ASM_PARISC_FTRACE_H
diff --git a/arch/parisc/include/asm/futex.h b/arch/parisc/include/asm/futex.h
index c601aab2fb36..cf7ba058f619 100644
--- a/arch/parisc/include/asm/futex.h
+++ b/arch/parisc/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_FUTEX_H
#define _ASM_PARISC_FUTEX_H
diff --git a/arch/parisc/include/asm/hardirq.h b/arch/parisc/include/asm/hardirq.h
index 9b3bd039a609..077815169258 100644
--- a/arch/parisc/include/asm/hardirq.h
+++ b/arch/parisc/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* hardirq.h: PA-RISC hard IRQ support.
*
* Copyright (C) 2001 Matthew Wilcox <matthew@wil.cx>
diff --git a/arch/parisc/include/asm/hardware.h b/arch/parisc/include/asm/hardware.h
index d1d864b81bae..d6e1ed145031 100644
--- a/arch/parisc/include/asm/hardware.h
+++ b/arch/parisc/include/asm/hardware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_HARDWARE_H
#define _PARISC_HARDWARE_H
diff --git a/arch/parisc/include/asm/hash.h b/arch/parisc/include/asm/hash.h
index dbe93311aa26..525950ed862d 100644
--- a/arch/parisc/include/asm/hash.h
+++ b/arch/parisc/include/asm/hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_HASH_H
#define _ASM_HASH_H
diff --git a/arch/parisc/include/asm/hugetlb.h b/arch/parisc/include/asm/hugetlb.h
index a65d888716c4..58e0f4620426 100644
--- a/arch/parisc/include/asm/hugetlb.h
+++ b/arch/parisc/include/asm/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC64_HUGETLB_H
#define _ASM_PARISC64_HUGETLB_H
diff --git a/arch/parisc/include/asm/ide.h b/arch/parisc/include/asm/ide.h
index 81700a2321cf..34cdac01ed35 100644
--- a/arch/parisc/include/asm/ide.h
+++ b/arch/parisc/include/asm/ide.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-parisc/ide.h
*
diff --git a/arch/parisc/include/asm/io.h b/arch/parisc/include/asm/io.h
index af98254f7257..27c62baa9c4e 100644
--- a/arch/parisc/include/asm/io.h
+++ b/arch/parisc/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IO_H
#define _ASM_IO_H
diff --git a/arch/parisc/include/asm/irq.h b/arch/parisc/include/asm/irq.h
index 1073599a7be9..959e79cd2c14 100644
--- a/arch/parisc/include/asm/irq.h
+++ b/arch/parisc/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-parisc/irq.h
*
diff --git a/arch/parisc/include/asm/irqflags.h b/arch/parisc/include/asm/irqflags.h
index 34f9cb9b4754..38a19c0bac3a 100644
--- a/arch/parisc/include/asm/irqflags.h
+++ b/arch/parisc/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PARISC_IRQFLAGS_H
#define __PARISC_IRQFLAGS_H
diff --git a/arch/parisc/include/asm/kbdleds.h b/arch/parisc/include/asm/kbdleds.h
index 2e2e75a83c28..50fcce810655 100644
--- a/arch/parisc/include/asm/kbdleds.h
+++ b/arch/parisc/include/asm/kbdleds.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_KBDLEDS_H
#define _ASM_PARISC_KBDLEDS_H
diff --git a/arch/parisc/include/asm/kmap_types.h b/arch/parisc/include/asm/kmap_types.h
index 58e91ed0388f..3e70b5cd1123 100644
--- a/arch/parisc/include/asm/kmap_types.h
+++ b/arch/parisc/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_KMAP_TYPES_H
#define _ASM_KMAP_TYPES_H
diff --git a/arch/parisc/include/asm/ldcw.h b/arch/parisc/include/asm/ldcw.h
index 8be707e1b6c7..dd5a08aaa4da 100644
--- a/arch/parisc/include/asm/ldcw.h
+++ b/arch/parisc/include/asm/ldcw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PARISC_LDCW_H
#define __PARISC_LDCW_H
diff --git a/arch/parisc/include/asm/led.h b/arch/parisc/include/asm/led.h
index c3405ab9d60a..6de13d08a388 100644
--- a/arch/parisc/include/asm/led.h
+++ b/arch/parisc/include/asm/led.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LED_H
#define LED_H
diff --git a/arch/parisc/include/asm/linkage.h b/arch/parisc/include/asm/linkage.h
index 67e6b433d399..9a69bf6fc4b6 100644
--- a/arch/parisc/include/asm/linkage.h
+++ b/arch/parisc/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_PARISC_LINKAGE_H
#define __ASM_PARISC_LINKAGE_H
diff --git a/arch/parisc/include/asm/machdep.h b/arch/parisc/include/asm/machdep.h
index a231c97d703e..215d2c43989d 100644
--- a/arch/parisc/include/asm/machdep.h
+++ b/arch/parisc/include/asm/machdep.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_MACHDEP_H
#define _PARISC_MACHDEP_H
diff --git a/arch/parisc/include/asm/mckinley.h b/arch/parisc/include/asm/mckinley.h
index d1ea6f12915e..eb84dbeb7fd9 100644
--- a/arch/parisc/include/asm/mckinley.h
+++ b/arch/parisc/include/asm/mckinley.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_PARISC_MCKINLEY_H
#define ASM_PARISC_MCKINLEY_H
#ifdef __KERNEL__
diff --git a/arch/parisc/include/asm/mmu.h b/arch/parisc/include/asm/mmu.h
index 6a310cf8b734..3fb70a601d5c 100644
--- a/arch/parisc/include/asm/mmu.h
+++ b/arch/parisc/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_MMU_H_
#define _PARISC_MMU_H_
diff --git a/arch/parisc/include/asm/mmu_context.h b/arch/parisc/include/asm/mmu_context.h
index e4a657094058..697a906ab1b0 100644
--- a/arch/parisc/include/asm/mmu_context.h
+++ b/arch/parisc/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PARISC_MMU_CONTEXT_H
#define __PARISC_MMU_CONTEXT_H
diff --git a/arch/parisc/include/asm/mmzone.h b/arch/parisc/include/asm/mmzone.h
index b6b34a0987e7..fafa3893fd70 100644
--- a/arch/parisc/include/asm/mmzone.h
+++ b/arch/parisc/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_MMZONE_H
#define _PARISC_MMZONE_H
diff --git a/arch/parisc/include/asm/module.h b/arch/parisc/include/asm/module.h
index bab37e99168a..c8c131a74919 100644
--- a/arch/parisc/include/asm/module.h
+++ b/arch/parisc/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_MODULE_H
#define _ASM_PARISC_MODULE_H
diff --git a/arch/parisc/include/asm/page.h b/arch/parisc/include/asm/page.h
index bfed09d80bae..af00fe9bf846 100644
--- a/arch/parisc/include/asm/page.h
+++ b/arch/parisc/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_PAGE_H
#define _PARISC_PAGE_H
diff --git a/arch/parisc/include/asm/parisc-device.h b/arch/parisc/include/asm/parisc-device.h
index eaf4dc1c7294..d02d144c6012 100644
--- a/arch/parisc/include/asm/parisc-device.h
+++ b/arch/parisc/include/asm/parisc-device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_PARISC_DEVICE_H_
#define _ASM_PARISC_PARISC_DEVICE_H_
diff --git a/arch/parisc/include/asm/parport.h b/arch/parisc/include/asm/parport.h
index c391d7cbc223..2c8e2321c24d 100644
--- a/arch/parisc/include/asm/parport.h
+++ b/arch/parisc/include/asm/parport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* parport.h: ia32-compatible parport initialisation
diff --git a/arch/parisc/include/asm/pci.h b/arch/parisc/include/asm/pci.h
index 1de1a3f412ec..6108e9df0296 100644
--- a/arch/parisc/include/asm/pci.h
+++ b/arch/parisc/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_PARISC_PCI_H
#define __ASM_PARISC_PCI_H
diff --git a/arch/parisc/include/asm/pdc.h b/arch/parisc/include/asm/pdc.h
index 26b4455baa83..efee44a5e063 100644
--- a/arch/parisc/include/asm/pdc.h
+++ b/arch/parisc/include/asm/pdc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_PDC_H
#define _PARISC_PDC_H
@@ -280,6 +281,7 @@ void setup_pdc(void); /* in inventory.c */
/* wrapper-functions from pdc.c */
int pdc_add_valid(unsigned long address);
+int pdc_instr(unsigned int *instr);
int pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_info, unsigned long len);
int pdc_chassis_disp(unsigned long disp);
int pdc_chassis_warn(unsigned long *warn);
diff --git a/arch/parisc/include/asm/perf.h b/arch/parisc/include/asm/perf.h
index a18e11972c09..2a5a60affe70 100644
--- a/arch/parisc/include/asm/perf.h
+++ b/arch/parisc/include/asm/perf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PERF_H_
#define _ASM_PERF_H_
diff --git a/arch/parisc/include/asm/pgalloc.h b/arch/parisc/include/asm/pgalloc.h
index f08dda3f0995..cf13275f7c6d 100644
--- a/arch/parisc/include/asm/pgalloc.h
+++ b/arch/parisc/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PGALLOC_H
#define _ASM_PGALLOC_H
diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h
index 71ca86cb0f16..fa6b7c78f18a 100644
--- a/arch/parisc/include/asm/pgtable.h
+++ b/arch/parisc/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_PGTABLE_H
#define _PARISC_PGTABLE_H
diff --git a/arch/parisc/include/asm/prefetch.h b/arch/parisc/include/asm/prefetch.h
index 1ee7c82672c1..6e63f720024d 100644
--- a/arch/parisc/include/asm/prefetch.h
+++ b/arch/parisc/include/asm/prefetch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-parisc/prefetch.h
*
diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
index b3b66c3d6f3c..0e6ab6e4a4e9 100644
--- a/arch/parisc/include/asm/processor.h
+++ b/arch/parisc/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-parisc/processor.h
*
diff --git a/arch/parisc/include/asm/psw.h b/arch/parisc/include/asm/psw.h
index ad69a35e9c0f..76c301146c31 100644
--- a/arch/parisc/include/asm/psw.h
+++ b/arch/parisc/include/asm/psw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_PSW_H
diff --git a/arch/parisc/include/asm/ptrace.h b/arch/parisc/include/asm/ptrace.h
index 3c3cb004b7e2..46da07670c2b 100644
--- a/arch/parisc/include/asm/ptrace.h
+++ b/arch/parisc/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* written by Philipp Rumpf, Copyright (C) 1999 SuSE GmbH Nuernberg
** Copyright (C) 2000 Grant Grundler, Hewlett-Packard
*/
diff --git a/arch/parisc/include/asm/ropes.h b/arch/parisc/include/asm/ropes.h
index 09f51d5ab57c..8e51c775c80a 100644
--- a/arch/parisc/include/asm/ropes.h
+++ b/arch/parisc/include/asm/ropes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_ROPES_H_
#define _ASM_PARISC_ROPES_H_
diff --git a/arch/parisc/include/asm/rt_sigframe.h b/arch/parisc/include/asm/rt_sigframe.h
index f0dd3b30f6c4..2b3010ade00e 100644
--- a/arch/parisc/include/asm/rt_sigframe.h
+++ b/arch/parisc/include/asm/rt_sigframe.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_RT_SIGFRAME_H
#define _ASM_PARISC_RT_SIGFRAME_H
diff --git a/arch/parisc/include/asm/runway.h b/arch/parisc/include/asm/runway.h
index 5bea02da7e22..f3cfe69439f6 100644
--- a/arch/parisc/include/asm/runway.h
+++ b/arch/parisc/include/asm/runway.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_PARISC_RUNWAY_H
#define ASM_PARISC_RUNWAY_H
#ifdef __KERNEL__
diff --git a/arch/parisc/include/asm/sections.h b/arch/parisc/include/asm/sections.h
index 9d13c3507ad6..accdf40aa5b7 100644
--- a/arch/parisc/include/asm/sections.h
+++ b/arch/parisc/include/asm/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_SECTIONS_H
#define _PARISC_SECTIONS_H
diff --git a/arch/parisc/include/asm/shmparam.h b/arch/parisc/include/asm/shmparam.h
index afe1300ab667..74f74e4d35b7 100644
--- a/arch/parisc/include/asm/shmparam.h
+++ b/arch/parisc/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMPARISC_SHMPARAM_H
#define _ASMPARISC_SHMPARAM_H
diff --git a/arch/parisc/include/asm/signal.h b/arch/parisc/include/asm/signal.h
index 81a545773971..eeb5c8858663 100644
--- a/arch/parisc/include/asm/signal.h
+++ b/arch/parisc/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_SIGNAL_H
#define _ASM_PARISC_SIGNAL_H
diff --git a/arch/parisc/include/asm/smp.h b/arch/parisc/include/asm/smp.h
index a5dc9066c6d8..b9a18db4b05a 100644
--- a/arch/parisc/include/asm/smp.h
+++ b/arch/parisc/include/asm/smp.h
@@ -1,6 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SMP_H
#define __ASM_SMP_H
+extern int init_per_cpu(int cpuid);
#if defined(CONFIG_SMP)
diff --git a/arch/parisc/include/asm/socket.h b/arch/parisc/include/asm/socket.h
index 748016cb122d..79feff1b0721 100644
--- a/arch/parisc/include/asm/socket.h
+++ b/arch/parisc/include/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SOCKET_H
#define _ASM_SOCKET_H
diff --git a/arch/parisc/include/asm/special_insns.h b/arch/parisc/include/asm/special_insns.h
index e1509308899f..3d4dd68e181b 100644
--- a/arch/parisc/include/asm/special_insns.h
+++ b/arch/parisc/include/asm/special_insns.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PARISC_SPECIAL_INSNS_H
#define __PARISC_SPECIAL_INSNS_H
diff --git a/arch/parisc/include/asm/spinlock.h b/arch/parisc/include/asm/spinlock.h
index 55bfe4affca3..af03359e6ac5 100644
--- a/arch/parisc/include/asm/spinlock.h
+++ b/arch/parisc/include/asm/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPINLOCK_H
#define __ASM_SPINLOCK_H
diff --git a/arch/parisc/include/asm/spinlock_types.h b/arch/parisc/include/asm/spinlock_types.h
index 8c373aa28a86..42979c5704dc 100644
--- a/arch/parisc/include/asm/spinlock_types.h
+++ b/arch/parisc/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPINLOCK_TYPES_H
#define __ASM_SPINLOCK_TYPES_H
diff --git a/arch/parisc/include/asm/string.h b/arch/parisc/include/asm/string.h
index eda01be65e35..f6e1132f4e35 100644
--- a/arch/parisc/include/asm/string.h
+++ b/arch/parisc/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PA_STRING_H_
#define _PA_STRING_H_
diff --git a/arch/parisc/include/asm/superio.h b/arch/parisc/include/asm/superio.h
index 6598acb4d46d..5e11c11d4395 100644
--- a/arch/parisc/include/asm/superio.h
+++ b/arch/parisc/include/asm/superio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_SUPERIO_H
#define _PARISC_SUPERIO_H
diff --git a/arch/parisc/include/asm/switch_to.h b/arch/parisc/include/asm/switch_to.h
index 8ed8fea1e784..f2ac9cc0de60 100644
--- a/arch/parisc/include/asm/switch_to.h
+++ b/arch/parisc/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PARISC_SWITCH_TO_H
#define __PARISC_SWITCH_TO_H
diff --git a/arch/parisc/include/asm/syscall.h b/arch/parisc/include/asm/syscall.h
index 5e0b4e6bd99d..8bff1a58c97f 100644
--- a/arch/parisc/include/asm/syscall.h
+++ b/arch/parisc/include/asm/syscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* syscall.h */
#ifndef _ASM_PARISC_SYSCALL_H_
diff --git a/arch/parisc/include/asm/termios.h b/arch/parisc/include/asm/termios.h
index 9bbc0c8974ea..cded9dc90c1b 100644
--- a/arch/parisc/include/asm/termios.h
+++ b/arch/parisc/include/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_TERMIOS_H
#define _PARISC_TERMIOS_H
diff --git a/arch/parisc/include/asm/thread_info.h b/arch/parisc/include/asm/thread_info.h
index bc208136bbb2..c980a02a52bc 100644
--- a/arch/parisc/include/asm/thread_info.h
+++ b/arch/parisc/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_THREAD_INFO_H
#define _ASM_PARISC_THREAD_INFO_H
diff --git a/arch/parisc/include/asm/timex.h b/arch/parisc/include/asm/timex.h
index 2bd51f6d832b..45537cd4d1d3 100644
--- a/arch/parisc/include/asm/timex.h
+++ b/arch/parisc/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-parisc/timex.h
*
diff --git a/arch/parisc/include/asm/tlb.h b/arch/parisc/include/asm/tlb.h
index 07924903989e..0c881e74d8a6 100644
--- a/arch/parisc/include/asm/tlb.h
+++ b/arch/parisc/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_TLB_H
#define _PARISC_TLB_H
diff --git a/arch/parisc/include/asm/tlbflush.h b/arch/parisc/include/asm/tlbflush.h
index e84b96478193..14668bd52d60 100644
--- a/arch/parisc/include/asm/tlbflush.h
+++ b/arch/parisc/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PARISC_TLBFLUSH_H
#define _PARISC_TLBFLUSH_H
diff --git a/arch/parisc/include/asm/traps.h b/arch/parisc/include/asm/traps.h
index 63670231f48a..e00013248907 100644
--- a/arch/parisc/include/asm/traps.h
+++ b/arch/parisc/include/asm/traps.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_TRAPS_H
#define __ASM_TRAPS_H
diff --git a/arch/parisc/include/asm/uaccess.h b/arch/parisc/include/asm/uaccess.h
index cab33a0d0e82..ea70e36ce6af 100644
--- a/arch/parisc/include/asm/uaccess.h
+++ b/arch/parisc/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PARISC_UACCESS_H
#define __PARISC_UACCESS_H
diff --git a/arch/parisc/include/asm/ucontext.h b/arch/parisc/include/asm/ucontext.h
index 6c8883e4b0bd..ac7f863864c5 100644
--- a/arch/parisc/include/asm/ucontext.h
+++ b/arch/parisc/include/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_UCONTEXT_H
#define _ASM_PARISC_UCONTEXT_H
diff --git a/arch/parisc/include/asm/unaligned.h b/arch/parisc/include/asm/unaligned.h
index dfc5d3321a54..e9029c7c2a69 100644
--- a/arch/parisc/include/asm/unaligned.h
+++ b/arch/parisc/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_UNALIGNED_H
#define _ASM_PARISC_UNALIGNED_H
diff --git a/arch/parisc/include/asm/unistd.h b/arch/parisc/include/asm/unistd.h
index 7dc31c84dd37..3d507d04eb4c 100644
--- a/arch/parisc/include/asm/unistd.h
+++ b/arch/parisc/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_PARISC_UNISTD_H_
#define _ASM_PARISC_UNISTD_H_
diff --git a/arch/parisc/include/asm/unwind.h b/arch/parisc/include/asm/unwind.h
index 52482e4fc20d..c73a3ee20226 100644
--- a/arch/parisc/include/asm/unwind.h
+++ b/arch/parisc/include/asm/unwind.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _UNWIND_H_
#define _UNWIND_H_
diff --git a/arch/parisc/include/uapi/asm/bitsperlong.h b/arch/parisc/include/uapi/asm/bitsperlong.h
index 07fa7e50bdc0..307e2ef1c62d 100644
--- a/arch/parisc/include/uapi/asm/bitsperlong.h
+++ b/arch/parisc/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_PARISC_BITSPERLONG_H
#define __ASM_PARISC_BITSPERLONG_H
diff --git a/arch/parisc/include/uapi/asm/byteorder.h b/arch/parisc/include/uapi/asm/byteorder.h
index 58af2c5f5d61..a59d9b7e35a8 100644
--- a/arch/parisc/include/uapi/asm/byteorder.h
+++ b/arch/parisc/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_BYTEORDER_H
#define _PARISC_BYTEORDER_H
diff --git a/arch/parisc/include/uapi/asm/errno.h b/arch/parisc/include/uapi/asm/errno.h
index 274d5bc6ecce..fc0df353ff0d 100644
--- a/arch/parisc/include/uapi/asm/errno.h
+++ b/arch/parisc/include/uapi/asm/errno.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_ERRNO_H
#define _PARISC_ERRNO_H
diff --git a/arch/parisc/include/uapi/asm/fcntl.h b/arch/parisc/include/uapi/asm/fcntl.h
index 34a46cbc76ed..03ce20e5ad7d 100644
--- a/arch/parisc/include/uapi/asm/fcntl.h
+++ b/arch/parisc/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_FCNTL_H
#define _PARISC_FCNTL_H
diff --git a/arch/parisc/include/uapi/asm/ioctl.h b/arch/parisc/include/uapi/asm/ioctl.h
index ec8efa02beda..b509bcc94a03 100644
--- a/arch/parisc/include/uapi/asm/ioctl.h
+++ b/arch/parisc/include/uapi/asm/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Linux/PA-RISC Project (http://www.parisc-linux.org/)
* Copyright (C) 1999,2003 Matthew Wilcox < willy at debian . org >
diff --git a/arch/parisc/include/uapi/asm/ioctls.h b/arch/parisc/include/uapi/asm/ioctls.h
index d0e3321403be..aafb1c0ca0af 100644
--- a/arch/parisc/include/uapi/asm/ioctls.h
+++ b/arch/parisc/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ARCH_PARISC_IOCTLS_H__
#define __ARCH_PARISC_IOCTLS_H__
diff --git a/arch/parisc/include/uapi/asm/ipcbuf.h b/arch/parisc/include/uapi/asm/ipcbuf.h
index 790c4119f647..edf266204b49 100644
--- a/arch/parisc/include/uapi/asm/ipcbuf.h
+++ b/arch/parisc/include/uapi/asm/ipcbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __PARISC_IPCBUF_H__
#define __PARISC_IPCBUF_H__
diff --git a/arch/parisc/include/uapi/asm/mman.h b/arch/parisc/include/uapi/asm/mman.h
index 775b5d5e41a1..d1af0d74a188 100644
--- a/arch/parisc/include/uapi/asm/mman.h
+++ b/arch/parisc/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __PARISC_MMAN_H__
#define __PARISC_MMAN_H__
diff --git a/arch/parisc/include/uapi/asm/msgbuf.h b/arch/parisc/include/uapi/asm/msgbuf.h
index 2e83ac758e19..b48b810e626b 100644
--- a/arch/parisc/include/uapi/asm/msgbuf.h
+++ b/arch/parisc/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_MSGBUF_H
#define _PARISC_MSGBUF_H
diff --git a/arch/parisc/include/uapi/asm/pdc.h b/arch/parisc/include/uapi/asm/pdc.h
index 1f30b49772aa..0ad117617f1a 100644
--- a/arch/parisc/include/uapi/asm/pdc.h
+++ b/arch/parisc/include/uapi/asm/pdc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_PARISC_PDC_H
#define _UAPI_PARISC_PDC_H
diff --git a/arch/parisc/include/uapi/asm/posix_types.h b/arch/parisc/include/uapi/asm/posix_types.h
index f3b5f70b9a5f..2785632c85e7 100644
--- a/arch/parisc/include/uapi/asm/posix_types.h
+++ b/arch/parisc/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ARCH_PARISC_POSIX_TYPES_H
#define __ARCH_PARISC_POSIX_TYPES_H
diff --git a/arch/parisc/include/uapi/asm/ptrace.h b/arch/parisc/include/uapi/asm/ptrace.h
index 02ce2eb99a7f..e72e06247f51 100644
--- a/arch/parisc/include/uapi/asm/ptrace.h
+++ b/arch/parisc/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* written by Philipp Rumpf, Copyright (C) 1999 SuSE GmbH Nuernberg
** Copyright (C) 2000 Grant Grundler, Hewlett-Packard
*/
diff --git a/arch/parisc/include/uapi/asm/sembuf.h b/arch/parisc/include/uapi/asm/sembuf.h
index c20971bf520f..746c5d86a9b1 100644
--- a/arch/parisc/include/uapi/asm/sembuf.h
+++ b/arch/parisc/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_SEMBUF_H
#define _PARISC_SEMBUF_H
diff --git a/arch/parisc/include/uapi/asm/setup.h b/arch/parisc/include/uapi/asm/setup.h
index 7da2e5b8747e..78b2f4ec7d65 100644
--- a/arch/parisc/include/uapi/asm/setup.h
+++ b/arch/parisc/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_SETUP_H
#define _PARISC_SETUP_H
diff --git a/arch/parisc/include/uapi/asm/shmbuf.h b/arch/parisc/include/uapi/asm/shmbuf.h
index 750e13e77991..cd4dbce55d0b 100644
--- a/arch/parisc/include/uapi/asm/shmbuf.h
+++ b/arch/parisc/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_SHMBUF_H
#define _PARISC_SHMBUF_H
diff --git a/arch/parisc/include/uapi/asm/sigcontext.h b/arch/parisc/include/uapi/asm/sigcontext.h
index 27ef31bb3b6e..be404bb0f8e3 100644
--- a/arch/parisc/include/uapi/asm/sigcontext.h
+++ b/arch/parisc/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASMPARISC_SIGCONTEXT_H
#define _ASMPARISC_SIGCONTEXT_H
diff --git a/arch/parisc/include/uapi/asm/siginfo.h b/arch/parisc/include/uapi/asm/siginfo.h
index 8fd10f85c50e..4a1062e05aaf 100644
--- a/arch/parisc/include/uapi/asm/siginfo.h
+++ b/arch/parisc/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_SIGINFO_H
#define _PARISC_SIGINFO_H
diff --git a/arch/parisc/include/uapi/asm/signal.h b/arch/parisc/include/uapi/asm/signal.h
index e26043b73f5d..d38563a394f2 100644
--- a/arch/parisc/include/uapi/asm/signal.h
+++ b/arch/parisc/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_PARISC_SIGNAL_H
#define _UAPI_ASM_PARISC_SIGNAL_H
diff --git a/arch/parisc/include/uapi/asm/socket.h b/arch/parisc/include/uapi/asm/socket.h
index 3b2bf7ae703b..1d0fdc3b5d22 100644
--- a/arch/parisc/include/uapi/asm/socket.h
+++ b/arch/parisc/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_SOCKET_H
#define _UAPI_ASM_SOCKET_H
diff --git a/arch/parisc/include/uapi/asm/sockios.h b/arch/parisc/include/uapi/asm/sockios.h
index dabfbc7483f6..66a3ba64d53f 100644
--- a/arch/parisc/include/uapi/asm/sockios.h
+++ b/arch/parisc/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ARCH_PARISC_SOCKIOS__
#define __ARCH_PARISC_SOCKIOS__
diff --git a/arch/parisc/include/uapi/asm/stat.h b/arch/parisc/include/uapi/asm/stat.h
index 3310d2a49759..b5bbf6704cae 100644
--- a/arch/parisc/include/uapi/asm/stat.h
+++ b/arch/parisc/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_STAT_H
#define _PARISC_STAT_H
diff --git a/arch/parisc/include/uapi/asm/statfs.h b/arch/parisc/include/uapi/asm/statfs.h
index 324bea905dc6..e5de020c21ab 100644
--- a/arch/parisc/include/uapi/asm/statfs.h
+++ b/arch/parisc/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_STATFS_H
#define _PARISC_STATFS_H
diff --git a/arch/parisc/include/uapi/asm/swab.h b/arch/parisc/include/uapi/asm/swab.h
index 928e1bbac98f..35fb2d1bfbbd 100644
--- a/arch/parisc/include/uapi/asm/swab.h
+++ b/arch/parisc/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_SWAB_H
#define _PARISC_SWAB_H
diff --git a/arch/parisc/include/uapi/asm/termbits.h b/arch/parisc/include/uapi/asm/termbits.h
index d1ab92177a5c..40e920f8d683 100644
--- a/arch/parisc/include/uapi/asm/termbits.h
+++ b/arch/parisc/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ARCH_PARISC_TERMBITS_H__
#define __ARCH_PARISC_TERMBITS_H__
diff --git a/arch/parisc/include/uapi/asm/termios.h b/arch/parisc/include/uapi/asm/termios.h
index f3377395070d..aba174f23ef0 100644
--- a/arch/parisc/include/uapi/asm/termios.h
+++ b/arch/parisc/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_PARISC_TERMIOS_H
#define _UAPI_PARISC_TERMIOS_H
diff --git a/arch/parisc/include/uapi/asm/types.h b/arch/parisc/include/uapi/asm/types.h
index 8866f9bbdeaf..28c7d7453b10 100644
--- a/arch/parisc/include/uapi/asm/types.h
+++ b/arch/parisc/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _PARISC_TYPES_H
#define _PARISC_TYPES_H
diff --git a/arch/parisc/include/uapi/asm/unistd.h b/arch/parisc/include/uapi/asm/unistd.h
index 667c99421003..4872e77aa96b 100644
--- a/arch/parisc/include/uapi/asm/unistd.h
+++ b/arch/parisc/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_PARISC_UNISTD_H_
#define _UAPI_ASM_PARISC_UNISTD_H_
diff --git a/arch/parisc/kernel/Makefile b/arch/parisc/kernel/Makefile
index c4294df69fb6..649dc3eda448 100644
--- a/arch/parisc/kernel/Makefile
+++ b/arch/parisc/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for arch/parisc/kernel
#
diff --git a/arch/parisc/kernel/audit.c b/arch/parisc/kernel/audit.c
index eb64a6148c82..9eb47b2225d2 100644
--- a/arch/parisc/kernel/audit.c
+++ b/arch/parisc/kernel/audit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/types.h>
#include <linux/audit.h>
diff --git a/arch/parisc/kernel/binfmt_elf32.c b/arch/parisc/kernel/binfmt_elf32.c
index f2adcf33f8f2..20dfa081ed0b 100644
--- a/arch/parisc/kernel/binfmt_elf32.c
+++ b/arch/parisc/kernel/binfmt_elf32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for 32-bit Linux/Parisc ELF binaries on 64 bit kernels
*
diff --git a/arch/parisc/kernel/compat_audit.c b/arch/parisc/kernel/compat_audit.c
index c74478f6bc74..20c39c9d86a9 100644
--- a/arch/parisc/kernel/compat_audit.c
+++ b/arch/parisc/kernel/compat_audit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/unistd.h>
unsigned int parisc32_dir_class[] = {
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c
index ab80e5c6f651..6d471c00c71a 100644
--- a/arch/parisc/kernel/firmware.c
+++ b/arch/parisc/kernel/firmware.c
@@ -233,6 +233,26 @@ int pdc_add_valid(unsigned long address)
EXPORT_SYMBOL(pdc_add_valid);
/**
+ * pdc_instr - Get instruction that invokes PDCE_CHECK in HPMC handler.
+ * @instr: Pointer to variable which will get instruction opcode.
+ *
+ * The return value is PDC_OK (0) in case call succeeded.
+ */
+int __init pdc_instr(unsigned int *instr)
+{
+ int retval;
+ unsigned long flags;
+
+ spin_lock_irqsave(&pdc_lock, flags);
+ retval = mem_pdc_call(PDC_INSTR, 0UL, __pa(pdc_result));
+ convert_to_wide(pdc_result);
+ *instr = pdc_result[0];
+ spin_unlock_irqrestore(&pdc_lock, flags);
+
+ return retval;
+}
+
+/**
* pdc_chassis_info - Return chassis information.
* @result: The return buffer.
* @chassis_info: The memory buffer address.
diff --git a/arch/parisc/kernel/ftrace.c b/arch/parisc/kernel/ftrace.c
index 5a5506a35395..6fa8535d3cce 100644
--- a/arch/parisc/kernel/ftrace.c
+++ b/arch/parisc/kernel/ftrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Code for tracing calls in Linux kernel.
* Copyright (C) 2009-2016 Helge Deller <deller@gmx.de>
diff --git a/arch/parisc/kernel/pa7300lc.c b/arch/parisc/kernel/pa7300lc.c
index 9b245fc67560..0d770ac83f70 100644
--- a/arch/parisc/kernel/pa7300lc.c
+++ b/arch/parisc/kernel/pa7300lc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/parisc/kernel/pa7300lc.c
* - PA7300LC-specific functions
diff --git a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c
index c6d6272a934f..7baa2265d439 100644
--- a/arch/parisc/kernel/parisc_ksyms.c
+++ b/arch/parisc/kernel/parisc_ksyms.c
@@ -35,12 +35,12 @@ EXPORT_SYMBOL(memset);
EXPORT_SYMBOL(__xchg8);
EXPORT_SYMBOL(__xchg32);
EXPORT_SYMBOL(__cmpxchg_u32);
+EXPORT_SYMBOL(__cmpxchg_u64);
#ifdef CONFIG_SMP
EXPORT_SYMBOL(__atomic_hash);
#endif
#ifdef CONFIG_64BIT
EXPORT_SYMBOL(__xchg64);
-EXPORT_SYMBOL(__cmpxchg_u64);
#endif
#include <linux/uaccess.h>
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
index bd4c0a7471d3..412231d101f9 100644
--- a/arch/parisc/kernel/pci-dma.c
+++ b/arch/parisc/kernel/pci-dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
** PARISC 1.1 Dynamic DMA mapping support.
** This implementation is for PA-RISC platforms that do not support
diff --git a/arch/parisc/kernel/pdt.c b/arch/parisc/kernel/pdt.c
index 05730a83895c..e07eb34c8750 100644
--- a/arch/parisc/kernel/pdt.c
+++ b/arch/parisc/kernel/pdt.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Page Deallocation Table (PDT) support
*
@@ -15,6 +16,7 @@
#include <linux/memblock.h>
#include <linux/seq_file.h>
#include <linux/kthread.h>
+#include <linux/initrd.h>
#include <asm/pdc.h>
#include <asm/pdcpat.h>
@@ -216,8 +218,16 @@ void __init pdc_pdt_init(void)
}
for (i = 0; i < pdt_status.pdt_entries; i++) {
+ unsigned long addr;
+
report_mem_err(pdt_entry[i]);
+ addr = pdt_entry[i] & PDT_ADDR_PHYS_MASK;
+ if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) &&
+ addr >= initrd_start && addr < initrd_end)
+ pr_crit("CRITICAL: initrd possibly broken "
+ "due to bad memory!\n");
+
/* mark memory page bad */
memblock_reserve(pdt_entry[i] & PAGE_MASK, PAGE_SIZE);
}
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
index a45a67d526f8..30f92391a93e 100644
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -146,7 +146,7 @@ void machine_power_off(void)
/* prevent soft lockup/stalled CPU messages for endless loop. */
rcu_sysrq_start();
- lockup_detector_suspend();
+ lockup_detector_soft_poweroff();
for (;;);
}
diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c
index a778bd3c107c..e120d63c1b28 100644
--- a/arch/parisc/kernel/processor.c
+++ b/arch/parisc/kernel/processor.c
@@ -317,7 +317,7 @@ void __init collect_boot_cpu_data(void)
*
* o Enable CPU profiling hooks.
*/
-int init_per_cpu(int cpunum)
+int __init init_per_cpu(int cpunum)
{
int ret;
struct pdc_coproc_cfg coproc_cfg;
diff --git a/arch/parisc/kernel/ptrace.c b/arch/parisc/kernel/ptrace.c
index f8b6959d2d97..1a2be6e639b5 100644
--- a/arch/parisc/kernel/ptrace.c
+++ b/arch/parisc/kernel/ptrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Kernel support for the ptrace() and syscall tracing interfaces.
*
diff --git a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c
index dee6f9d6a153..f7d0c3b33d70 100644
--- a/arch/parisc/kernel/setup.c
+++ b/arch/parisc/kernel/setup.c
@@ -38,6 +38,7 @@
#include <linux/export.h>
#include <linux/sched.h>
#include <linux/sched/clock.h>
+#include <linux/start_kernel.h>
#include <asm/processor.h>
#include <asm/sections.h>
@@ -48,6 +49,7 @@
#include <asm/io.h>
#include <asm/setup.h>
#include <asm/unwind.h>
+#include <asm/smp.h>
static char __initdata command_line[COMMAND_LINE_SIZE];
@@ -115,7 +117,6 @@ void __init dma_ops_init(void)
}
#endif
-extern int init_per_cpu(int cpuid);
extern void collect_boot_cpu_data(void);
void __init setup_arch(char **cmdline_p)
@@ -398,9 +399,8 @@ static int __init parisc_init(void)
}
arch_initcall(parisc_init);
-void start_parisc(void)
+void __init start_parisc(void)
{
- extern void start_kernel(void);
extern void early_trap_init(void);
int ret, cpunum;
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c
index 26f12f45b4bb..f2a4038e275b 100644
--- a/arch/parisc/kernel/signal.c
+++ b/arch/parisc/kernel/signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/parisc/kernel/signal.c: Architecture-specific signal
* handling support.
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index 63365106ea19..30c28ab14540 100644
--- a/arch/parisc/kernel/smp.c
+++ b/arch/parisc/kernel/smp.c
@@ -255,12 +255,11 @@ void arch_send_call_function_single_ipi(int cpu)
static void __init
smp_cpu_init(int cpunum)
{
- extern int init_per_cpu(int); /* arch/parisc/kernel/processor.c */
extern void init_IRQ(void); /* arch/parisc/kernel/irq.c */
extern void start_cpu_itimer(void); /* arch/parisc/kernel/time.c */
/* Set modes and Enable floating point coprocessor */
- (void) init_per_cpu(cpunum);
+ init_per_cpu(cpunum);
disable_sr_hashing();
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
index 93c1963d76fe..2a12a547b447 100644
--- a/arch/parisc/kernel/sys_parisc32.c
+++ b/arch/parisc/kernel/sys_parisc32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* sys_parisc32.c: Conversion between 32bit and 64bit native syscalls.
*
diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S
index 23de307c3052..41e60a9c7db2 100644
--- a/arch/parisc/kernel/syscall.S
+++ b/arch/parisc/kernel/syscall.S
@@ -742,7 +742,7 @@ lws_compare_and_swap_2:
10: ldd 0(%r25), %r25
11: ldd 0(%r24), %r24
#else
- /* Load new value into r22/r23 - high/low */
+ /* Load old value into r22/r23 - high/low */
10: ldw 0(%r25), %r22
11: ldw 4(%r25), %r23
/* Load new value into fr4 for atomic store later */
@@ -834,11 +834,11 @@ cas2_action:
copy %r0, %r28
#else
/* Compare first word */
-19: ldw,ma 0(%r26), %r29
+19: ldw 0(%r26), %r29
sub,= %r29, %r22, %r0
b,n cas2_end
/* Compare second word */
-20: ldw,ma 4(%r26), %r29
+20: ldw 4(%r26), %r29
sub,= %r29, %r23, %r0
b,n cas2_end
/* Perform the store */
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index 2d956aa0a38a..4b8fd6dc22da 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/parisc/kernel/time.c
*
@@ -253,7 +254,10 @@ static int __init init_cr16_clocksource(void)
cpu0_loc = per_cpu(cpu_data, 0).cpu_loc;
for_each_online_cpu(cpu) {
- if (cpu0_loc == per_cpu(cpu_data, cpu).cpu_loc)
+ if (cpu == 0)
+ continue;
+ if ((cpu0_loc != 0) &&
+ (cpu0_loc == per_cpu(cpu_data, cpu).cpu_loc))
continue;
clocksource_cr16.name = "cr16_unstable";
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index 991654c88eec..8453724b8009 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/parisc/traps.c
*
@@ -817,7 +818,7 @@ void __init initialize_ivt(const void *iva)
u32 check = 0;
u32 *ivap;
u32 *hpmcp;
- u32 length;
+ u32 length, instr;
if (strcmp((const char *)iva, "cows can fly"))
panic("IVT invalid");
@@ -827,6 +828,14 @@ void __init initialize_ivt(const void *iva)
for (i = 0; i < 8; i++)
*ivap++ = 0;
+ /*
+ * Use PDC_INSTR firmware function to get instruction that invokes
+ * PDCE_CHECK in HPMC handler. See programming note at page 1-31 of
+ * the PA 1.1 Firmware Architecture document.
+ */
+ if (pdc_instr(&instr) == PDC_OK)
+ ivap[0] = instr;
+
/* Compute Checksum for HPMC handler */
length = os_hpmc_size;
ivap[7] = length;
diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c
index 48dc7d4d20bb..5a657986ebbf 100644
--- a/arch/parisc/kernel/unwind.c
+++ b/arch/parisc/kernel/unwind.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Kernel unwinding support
*
@@ -14,6 +15,7 @@
#include <linux/slab.h>
#include <linux/kallsyms.h>
#include <linux/sort.h>
+#include <linux/sched.h>
#include <linux/uaccess.h>
#include <asm/assembly.h>
@@ -279,6 +281,17 @@ static void unwind_frame_regs(struct unwind_frame_info *info)
info->prev_sp = sp - 64;
info->prev_ip = 0;
+
+ /* The stack is at the end inside the thread_union
+ * struct. If we reach data, we have reached the
+ * beginning of the stack and should stop unwinding. */
+ if (info->prev_sp >= (unsigned long) task_thread_info(info->t) &&
+ info->prev_sp < ((unsigned long) task_thread_info(info->t)
+ + THREAD_SZ_ALGN)) {
+ info->prev_sp = 0;
+ break;
+ }
+
if (get_user(tmp, (unsigned long *)(info->prev_sp - RP_OFFSET)))
break;
info->prev_ip = tmp;
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S
index ffe2cbf52d1a..159a2ec0b4e0 100644
--- a/arch/parisc/kernel/vmlinux.lds.S
+++ b/arch/parisc/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Kernel link layout for various "sections"
*
* Copyright (C) 1999-2003 Matthew Wilcox <willy at parisc-linux.org>
diff --git a/arch/parisc/lib/bitops.c b/arch/parisc/lib/bitops.c
index 8e45b0a97abf..70ffbcf889b8 100644
--- a/arch/parisc/lib/bitops.c
+++ b/arch/parisc/lib/bitops.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* bitops.c: atomic operations which got too long to be inlined all over
* the place.
diff --git a/arch/parisc/lib/delay.c b/arch/parisc/lib/delay.c
index ec9255f27a81..7eab4bb8abe6 100644
--- a/arch/parisc/lib/delay.c
+++ b/arch/parisc/lib/delay.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Precise Delay Loops for parisc
*
diff --git a/arch/parisc/lib/io.c b/arch/parisc/lib/io.c
index 7c1406ff825e..7c00496b47d4 100644
--- a/arch/parisc/lib/io.c
+++ b/arch/parisc/lib/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/parisc/lib/io.c
*
diff --git a/arch/parisc/lib/iomap.c b/arch/parisc/lib/iomap.c
index eaffbb90aa14..4b19e6e64fb7 100644
--- a/arch/parisc/lib/iomap.c
+++ b/arch/parisc/lib/iomap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* iomap.c - Implement iomap interface for PA-RISC
* Copyright (c) 2004 Matthew Wilcox
diff --git a/arch/parisc/lib/ucmpdi2.c b/arch/parisc/lib/ucmpdi2.c
index 149c016f32c5..8e6014a142ef 100644
--- a/arch/parisc/lib/ucmpdi2.c
+++ b/arch/parisc/lib/ucmpdi2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
union ull_union {
diff --git a/arch/parisc/math-emu/Makefile b/arch/parisc/math-emu/Makefile
index 0bd63b08a79a..b6c4b254901a 100644
--- a/arch/parisc/math-emu/Makefile
+++ b/arch/parisc/math-emu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux/parisc floating point code
#
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
index 5b101f6a5607..e247edbca68e 100644
--- a/arch/parisc/mm/fault.c
+++ b/arch/parisc/mm/fault.c
@@ -17,6 +17,7 @@
#include <linux/interrupt.h>
#include <linux/extable.h>
#include <linux/uaccess.h>
+#include <linux/hugetlb.h>
#include <asm/traps.h>
@@ -261,7 +262,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
struct task_struct *tsk;
struct mm_struct *mm;
unsigned long acc_type;
- int fault;
+ int fault = 0;
unsigned int flags;
if (faulthandler_disabled())
@@ -315,7 +316,8 @@ good_area:
goto out_of_memory;
else if (fault & VM_FAULT_SIGSEGV)
goto bad_area;
- else if (fault & VM_FAULT_SIGBUS)
+ else if (fault & (VM_FAULT_SIGBUS|VM_FAULT_HWPOISON|
+ VM_FAULT_HWPOISON_LARGE))
goto bad_area;
BUG();
}
@@ -352,8 +354,7 @@ bad_area:
if (user_mode(regs)) {
struct siginfo si;
-
- show_signal_msg(regs, code, address, tsk, vma);
+ unsigned int lsb = 0;
switch (code) {
case 15: /* Data TLB miss fault/Data page fault */
@@ -386,6 +387,30 @@ bad_area:
si.si_code = (code == 26) ? SEGV_ACCERR : SEGV_MAPERR;
break;
}
+
+#ifdef CONFIG_MEMORY_FAILURE
+ if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) {
+ printk(KERN_ERR
+ "MCE: Killing %s:%d due to hardware memory corruption fault at %08lx\n",
+ tsk->comm, tsk->pid, address);
+ si.si_signo = SIGBUS;
+ si.si_code = BUS_MCEERR_AR;
+ }
+#endif
+
+ /*
+ * Either small page or large page may be poisoned.
+ * In other words, VM_FAULT_HWPOISON_LARGE and
+ * VM_FAULT_HWPOISON are mutually exclusive.
+ */
+ if (fault & VM_FAULT_HWPOISON_LARGE)
+ lsb = hstate_index_to_shift(VM_FAULT_GET_HINDEX(fault));
+ else if (fault & VM_FAULT_HWPOISON)
+ lsb = PAGE_SHIFT;
+ else
+ show_signal_msg(regs, code, address, tsk, vma);
+ si.si_addr_lsb = lsb;
+
si.si_errno = 0;
si.si_addr = (void __user *) address;
force_sig_info(si.si_signo, &si, current);
diff --git a/arch/parisc/mm/hugetlbpage.c b/arch/parisc/mm/hugetlbpage.c
index 5eb8f633b282..d77479ae3af2 100644
--- a/arch/parisc/mm/hugetlbpage.c
+++ b/arch/parisc/mm/hugetlbpage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PARISC64 Huge TLB page support.
*
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
index 1ca9a2b4239f..13f7854e0d49 100644
--- a/arch/parisc/mm/init.c
+++ b/arch/parisc/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/parisc/mm/init.c
*
diff --git a/arch/parisc/mm/ioremap.c b/arch/parisc/mm/ioremap.c
index 838d0259cd27..92a9b5f12f98 100644
--- a/arch/parisc/mm/ioremap.c
+++ b/arch/parisc/mm/ioremap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/parisc/mm/ioremap.c
*
diff --git a/arch/parisc/oprofile/Makefile b/arch/parisc/oprofile/Makefile
index e9feca1ca28b..86a1ccc328eb 100644
--- a/arch/parisc/oprofile/Makefile
+++ b/arch/parisc/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 809c468edab1..cb782ac1c35d 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
source "arch/powerpc/platforms/Kconfig.cputype"
config PPC32
diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
index c86df246339e..be1c8c5beb61 100644
--- a/arch/powerpc/Kconfig.debug
+++ b/arch/powerpc/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/powerpc/Makefile.postlink b/arch/powerpc/Makefile.postlink
index 5db43ebbe2df..83f8e5ba2722 100644
--- a/arch/powerpc/Makefile.postlink
+++ b/arch/powerpc/Makefile.postlink
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# ===========================================================================
# Post-link powerpc pass
# ===========================================================================
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index c4e6fe35c075..651974192c4d 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for making ELF bootable images for booting on CHRP
# using Open Firmware.
#
diff --git a/arch/powerpc/boot/cpm-serial.c b/arch/powerpc/boot/cpm-serial.c
index 19dc15abe43d..dfb56829cace 100644
--- a/arch/powerpc/boot/cpm-serial.c
+++ b/arch/powerpc/boot/cpm-serial.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* CPM serial console support.
*
diff --git a/arch/powerpc/boot/cuboot.h b/arch/powerpc/boot/cuboot.h
index cd2aa7f348f3..c2b2c58eaa0b 100644
--- a/arch/powerpc/boot/cuboot.h
+++ b/arch/powerpc/boot/cuboot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_CUBOOT_H_
#define _PPC_BOOT_CUBOOT_H_
diff --git a/arch/powerpc/boot/dcr.h b/arch/powerpc/boot/dcr.h
index bf8f4ede1928..334ab8b5a668 100644
--- a/arch/powerpc/boot/dcr.h
+++ b/arch/powerpc/boot/dcr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_DCR_H_
#define _PPC_BOOT_DCR_H_
diff --git a/arch/powerpc/boot/dts/virtex440-ml510.dts b/arch/powerpc/boot/dts/virtex440-ml510.dts
index 81a8dc2c6365..81201d3907e2 100644
--- a/arch/powerpc/boot/dts/virtex440-ml510.dts
+++ b/arch/powerpc/boot/dts/virtex440-ml510.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Xilinx ML510 Reference Design support
*
diff --git a/arch/powerpc/boot/elf.h b/arch/powerpc/boot/elf.h
index 1941bc50d4c5..f6aa7c20fcaf 100644
--- a/arch/powerpc/boot/elf.h
+++ b/arch/powerpc/boot/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_ELF_H_
#define _PPC_BOOT_ELF_H_
diff --git a/arch/powerpc/boot/epapr-wrapper.c b/arch/powerpc/boot/epapr-wrapper.c
index c10191006673..01262f50b769 100644
--- a/arch/powerpc/boot/epapr-wrapper.c
+++ b/arch/powerpc/boot/epapr-wrapper.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
extern void epapr_platform_init(unsigned long r3, unsigned long r4,
unsigned long r5, unsigned long r6,
unsigned long r7);
diff --git a/arch/powerpc/boot/fixed-head.S b/arch/powerpc/boot/fixed-head.S
index 8e14cd9e1a54..4346c750cac1 100644
--- a/arch/powerpc/boot/fixed-head.S
+++ b/arch/powerpc/boot/fixed-head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.text
.global _zimage_start
_zimage_start:
diff --git a/arch/powerpc/boot/fsl-soc.h b/arch/powerpc/boot/fsl-soc.h
index 5da26fc6e3cf..00b2cb89ff2f 100644
--- a/arch/powerpc/boot/fsl-soc.h
+++ b/arch/powerpc/boot/fsl-soc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_FSL_SOC_H_
#define _PPC_BOOT_FSL_SOC_H_
diff --git a/arch/powerpc/boot/io.h b/arch/powerpc/boot/io.h
index 394da5500466..5c6f90c34923 100644
--- a/arch/powerpc/boot/io.h
+++ b/arch/powerpc/boot/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IO_H
#define _IO_H
diff --git a/arch/powerpc/boot/libfdt_env.h b/arch/powerpc/boot/libfdt_env.h
index 7e3789ea396b..f52c31b1f48f 100644
--- a/arch/powerpc/boot/libfdt_env.h
+++ b/arch/powerpc/boot/libfdt_env.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARCH_POWERPC_BOOT_LIBFDT_ENV_H
#define _ARCH_POWERPC_BOOT_LIBFDT_ENV_H
diff --git a/arch/powerpc/boot/mktree.c b/arch/powerpc/boot/mktree.c
index e2ae24340fc8..dc603f3c15be 100644
--- a/arch/powerpc/boot/mktree.c
+++ b/arch/powerpc/boot/mktree.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Makes a tree bootable image for IBM Evaluation boards.
* Basically, just take a zImage, skip the ELF header, and stuff
diff --git a/arch/powerpc/boot/motload-head.S b/arch/powerpc/boot/motload-head.S
index 41cabb4b63fa..826dad0c19d9 100644
--- a/arch/powerpc/boot/motload-head.S
+++ b/arch/powerpc/boot/motload-head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "ppc_asm.h"
.text
diff --git a/arch/powerpc/boot/mpc52xx-psc.c b/arch/powerpc/boot/mpc52xx-psc.c
index d4cb4e4e0938..c2c08633ee35 100644
--- a/arch/powerpc/boot/mpc52xx-psc.c
+++ b/arch/powerpc/boot/mpc52xx-psc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* MPC5200 PSC serial console support.
*
diff --git a/arch/powerpc/boot/mpc8xx.h b/arch/powerpc/boot/mpc8xx.h
index 3f59901ab1c0..3852ed90047f 100644
--- a/arch/powerpc/boot/mpc8xx.h
+++ b/arch/powerpc/boot/mpc8xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_MPC8xx_H_
#define _PPC_BOOT_MPC8xx_H_
diff --git a/arch/powerpc/boot/ns16550.c b/arch/powerpc/boot/ns16550.c
index 8c9ead94be06..b0da4466d419 100644
--- a/arch/powerpc/boot/ns16550.c
+++ b/arch/powerpc/boot/ns16550.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* 16550 serial console support.
*
diff --git a/arch/powerpc/boot/of.h b/arch/powerpc/boot/of.h
index 53f8f27f94e4..31b2f5dfd589 100644
--- a/arch/powerpc/boot/of.h
+++ b/arch/powerpc/boot/of.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_OF_H_
#define _PPC_BOOT_OF_H_
diff --git a/arch/powerpc/boot/planetcore.h b/arch/powerpc/boot/planetcore.h
index d53c733cc463..5311db06c62b 100644
--- a/arch/powerpc/boot/planetcore.h
+++ b/arch/powerpc/boot/planetcore.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_PLANETCORE_H_
#define _PPC_BOOT_PLANETCORE_H_
diff --git a/arch/powerpc/boot/pq2.h b/arch/powerpc/boot/pq2.h
index 481698c7a51a..f577b3bec60b 100644
--- a/arch/powerpc/boot/pq2.h
+++ b/arch/powerpc/boot/pq2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_PQ2_H_
#define _PPC_BOOT_PQ2_H_
diff --git a/arch/powerpc/boot/pseries-head.S b/arch/powerpc/boot/pseries-head.S
index 6ef6e02e80f9..1b1a638ce6e8 100644
--- a/arch/powerpc/boot/pseries-head.S
+++ b/arch/powerpc/boot/pseries-head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "ppc_asm.h"
.text
diff --git a/arch/powerpc/boot/redboot.h b/arch/powerpc/boot/redboot.h
index ace0b7fed8eb..8f319b1add32 100644
--- a/arch/powerpc/boot/redboot.h
+++ b/arch/powerpc/boot/redboot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_REDBOOT_H
#define _PPC_REDBOOT_H
diff --git a/arch/powerpc/boot/rs6000.h b/arch/powerpc/boot/rs6000.h
index d70517ccc0f7..a9d879155ef9 100644
--- a/arch/powerpc/boot/rs6000.h
+++ b/arch/powerpc/boot/rs6000.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* IBM RS/6000 "XCOFF" file definitions for BFD.
Copyright (C) 1990, 1991 Free Software Foundation, Inc.
FIXME: Can someone provide a transliteration of this name into ASCII?
diff --git a/arch/powerpc/boot/stdio.h b/arch/powerpc/boot/stdio.h
index adffc58412d4..884d5959a9ae 100644
--- a/arch/powerpc/boot/stdio.h
+++ b/arch/powerpc/boot/stdio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_STDIO_H_
#define _PPC_BOOT_STDIO_H_
diff --git a/arch/powerpc/boot/stdlib.h b/arch/powerpc/boot/stdlib.h
index 1bf01ac73aba..0a61fcd10fdb 100644
--- a/arch/powerpc/boot/stdlib.h
+++ b/arch/powerpc/boot/stdlib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_STDLIB_H_
#define _PPC_BOOT_STDLIB_H_
diff --git a/arch/powerpc/boot/string.h b/arch/powerpc/boot/string.h
index 50091cc0eed9..3fb71171da49 100644
--- a/arch/powerpc/boot/string.h
+++ b/arch/powerpc/boot/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_STRING_H_
#define _PPC_BOOT_STRING_H_
#include <stddef.h>
diff --git a/arch/powerpc/boot/swab.h b/arch/powerpc/boot/swab.h
index d0e1431084ca..11d2069fbb66 100644
--- a/arch/powerpc/boot/swab.h
+++ b/arch/powerpc/boot/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_SWAB_H_
#define _PPC_BOOT_SWAB_H_
diff --git a/arch/powerpc/boot/types.h b/arch/powerpc/boot/types.h
index af6b66b842c4..8a4c418b7260 100644
--- a/arch/powerpc/boot/types.h
+++ b/arch/powerpc/boot/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _TYPES_H_
#define _TYPES_H_
diff --git a/arch/powerpc/boot/virtex405-head.S b/arch/powerpc/boot/virtex405-head.S
index 3edb13f94669..00bab7d7c48c 100644
--- a/arch/powerpc/boot/virtex405-head.S
+++ b/arch/powerpc/boot/virtex405-head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "ppc_asm.h"
.text
diff --git a/arch/powerpc/boot/xz_config.h b/arch/powerpc/boot/xz_config.h
index 5c6afdbca642..e22e5b3770dd 100644
--- a/arch/powerpc/boot/xz_config.h
+++ b/arch/powerpc/boot/xz_config.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __XZ_CONFIG_H__
#define __XZ_CONFIG_H__
diff --git a/arch/powerpc/boot/zImage.coff.lds.S b/arch/powerpc/boot/zImage.coff.lds.S
index de4c9e3c9344..117951295117 100644
--- a/arch/powerpc/boot/zImage.coff.lds.S
+++ b/arch/powerpc/boot/zImage.coff.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
OUTPUT_ARCH(powerpc:common)
ENTRY(_zimage_start_opd)
EXTERN(_zimage_start_opd)
diff --git a/arch/powerpc/boot/zImage.lds.S b/arch/powerpc/boot/zImage.lds.S
index f080abfc2f83..4ac1e36edfe7 100644
--- a/arch/powerpc/boot/zImage.lds.S
+++ b/arch/powerpc/boot/zImage.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/vmlinux.lds.h>
#ifdef CONFIG_PPC64_BOOT_WRAPPER
diff --git a/arch/powerpc/boot/zImage.ps3.lds.S b/arch/powerpc/boot/zImage.ps3.lds.S
index aaa469c1e60d..7b2ff2eaa73a 100644
--- a/arch/powerpc/boot/zImage.ps3.lds.S
+++ b/arch/powerpc/boot/zImage.ps3.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
OUTPUT_ARCH(powerpc:common)
ENTRY(_zimage_start)
EXTERN(_zimage_start)
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig
index e084fa548d73..063817fee61c 100644
--- a/arch/powerpc/configs/g5_defconfig
+++ b/arch/powerpc/configs/g5_defconfig
@@ -138,10 +138,11 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_LOGO=y
CONFIG_SOUND=m
CONFIG_SND=m
-CONFIG_SND_SEQUENCER=m
+CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
-CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQUENCER_OSS=m
CONFIG_SND_POWERMAC=m
CONFIG_SND_AOA=m
CONFIG_SND_AOA_FABRIC_LAYOUT=m
diff --git a/arch/powerpc/configs/gamecube_defconfig b/arch/powerpc/configs/gamecube_defconfig
index 79bbc8238b32..805b0f87653c 100644
--- a/arch/powerpc/configs/gamecube_defconfig
+++ b/arch/powerpc/configs/gamecube_defconfig
@@ -64,11 +64,12 @@ CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_CLUT224 is not set
CONFIG_SOUND=y
CONFIG_SND=y
-CONFIG_SND_SEQUENCER=y
+CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
-CONFIG_SND_SEQUENCER_OSS=y
# CONFIG_SND_VERBOSE_PROCFS is not set
+CONFIG_SND_SEQUENCER=y
+CONFIG_SND_SEQUENCER_OSS=y
# CONFIG_USB_SUPPORT is not set
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_GENERIC=y
diff --git a/arch/powerpc/configs/pasemi_defconfig b/arch/powerpc/configs/pasemi_defconfig
index 8cf4a46bef86..6daa56f8895c 100644
--- a/arch/powerpc/configs/pasemi_defconfig
+++ b/arch/powerpc/configs/pasemi_defconfig
@@ -115,9 +115,10 @@ CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_LOGO=y
CONFIG_SOUND=y
CONFIG_SND=y
-CONFIG_SND_SEQUENCER=y
+CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
+CONFIG_SND_SEQUENCER=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_USB_AUDIO=y
CONFIG_SND_USB_USX2Y=y
diff --git a/arch/powerpc/configs/pmac32_defconfig b/arch/powerpc/configs/pmac32_defconfig
index 8e798b1fbc99..1aab9a62a681 100644
--- a/arch/powerpc/configs/pmac32_defconfig
+++ b/arch/powerpc/configs/pmac32_defconfig
@@ -227,11 +227,12 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_LOGO=y
CONFIG_SOUND=m
CONFIG_SND=m
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
-CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_SEQUENCER_OSS=m
CONFIG_SND_DUMMY=m
CONFIG_SND_POWERMAC=m
CONFIG_SND_AOA=m
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig
index 791db775a09c..6ddca80c52c3 100644
--- a/arch/powerpc/configs/ppc64_defconfig
+++ b/arch/powerpc/configs/ppc64_defconfig
@@ -222,11 +222,12 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_LOGO=y
CONFIG_SOUND=m
CONFIG_SND=m
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
-CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_SEQUENCER_OSS=m
CONFIG_SND_POWERMAC=m
CONFIG_SND_AOA=m
CONFIG_SND_AOA_FABRIC_LAYOUT=m
diff --git a/arch/powerpc/configs/ppc64e_defconfig b/arch/powerpc/configs/ppc64e_defconfig
index d0fe0f8f77c2..41d85cb3c9a2 100644
--- a/arch/powerpc/configs/ppc64e_defconfig
+++ b/arch/powerpc/configs/ppc64e_defconfig
@@ -141,11 +141,12 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_LOGO=y
CONFIG_SOUND=m
CONFIG_SND=m
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
-CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_SEQUENCER_OSS=m
CONFIG_HID_DRAGONRISE=y
CONFIG_HID_GYRATION=y
CONFIG_HID_TWINHAN=y
diff --git a/arch/powerpc/configs/ppc6xx_defconfig b/arch/powerpc/configs/ppc6xx_defconfig
index ae6eba482d75..da0e8d535eb8 100644
--- a/arch/powerpc/configs/ppc6xx_defconfig
+++ b/arch/powerpc/configs/ppc6xx_defconfig
@@ -789,17 +789,18 @@ CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_SOUND=m
CONFIG_SND=m
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
-CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_DYNAMIC_MINORS=y
# CONFIG_SND_SUPPORT_OLD_API is not set
CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_SND_DEBUG=y
CONFIG_SND_DEBUG_VERBOSE=y
CONFIG_SND_PCM_XRUN_DEBUG=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_SEQUENCER_OSS=m
CONFIG_SND_DUMMY=m
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
diff --git a/arch/powerpc/configs/wii_defconfig b/arch/powerpc/configs/wii_defconfig
index aef41b17a8bc..9c7400a19e9d 100644
--- a/arch/powerpc/configs/wii_defconfig
+++ b/arch/powerpc/configs/wii_defconfig
@@ -79,11 +79,12 @@ CONFIG_FB=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_SOUND=y
CONFIG_SND=y
-CONFIG_SND_SEQUENCER=y
+CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
-CONFIG_SND_SEQUENCER_OSS=y
# CONFIG_SND_VERBOSE_PROCFS is not set
+CONFIG_SND_SEQUENCER=y
+CONFIG_SND_SEQUENCER_OSS=y
CONFIG_HID_APPLE=m
CONFIG_HID_WACOM=m
CONFIG_MMC=y
diff --git a/arch/powerpc/crypto/Makefile b/arch/powerpc/crypto/Makefile
index 67eca3af9fc7..4808d97fede5 100644
--- a/arch/powerpc/crypto/Makefile
+++ b/arch/powerpc/crypto/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# powerpc/crypto/Makefile
#
diff --git a/arch/powerpc/crypto/sha1-powerpc-asm.S b/arch/powerpc/crypto/sha1-powerpc-asm.S
index 82ddc9bdfeb1..c8951ce0dcc4 100644
--- a/arch/powerpc/crypto/sha1-powerpc-asm.S
+++ b/arch/powerpc/crypto/sha1-powerpc-asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SHA-1 implementation for PowerPC.
*
diff --git a/arch/powerpc/include/asm/agp.h b/arch/powerpc/include/asm/agp.h
index 416e12c2d505..b29b1186f819 100644
--- a/arch/powerpc/include/asm/agp.h
+++ b/arch/powerpc/include/asm/agp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_AGP_H
#define _ASM_POWERPC_AGP_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/archrandom.h b/arch/powerpc/include/asm/archrandom.h
index 85e88f7a59c0..9c63b596e6ce 100644
--- a/arch/powerpc/include/asm/archrandom.h
+++ b/arch/powerpc/include/asm/archrandom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_ARCHRANDOM_H
#define _ASM_POWERPC_ARCHRANDOM_H
diff --git a/arch/powerpc/include/asm/atomic.h b/arch/powerpc/include/asm/atomic.h
index a2cc8010cd72..682b3e6a1e21 100644
--- a/arch/powerpc/include/asm/atomic.h
+++ b/arch/powerpc/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_ATOMIC_H_
#define _ASM_POWERPC_ATOMIC_H_
diff --git a/arch/powerpc/include/asm/backlight.h b/arch/powerpc/include/asm/backlight.h
index 8cf5c37c3817..1b5eab62ed04 100644
--- a/arch/powerpc/include/asm/backlight.h
+++ b/arch/powerpc/include/asm/backlight.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Routines for handling backlight control on PowerBooks
*
diff --git a/arch/powerpc/include/asm/barrier.h b/arch/powerpc/include/asm/barrier.h
index 9c601adfc500..10daa1d56e0a 100644
--- a/arch/powerpc/include/asm/barrier.h
+++ b/arch/powerpc/include/asm/barrier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
*/
diff --git a/arch/powerpc/include/asm/book3s/32/hash.h b/arch/powerpc/include/asm/book3s/32/hash.h
index 880db13a2e9f..f2892c7ab73e 100644
--- a/arch/powerpc/include/asm/book3s/32/hash.h
+++ b/arch/powerpc/include/asm/book3s/32/hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_32_HASH_H
#define _ASM_POWERPC_BOOK3S_32_HASH_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/book3s/32/mmu-hash.h b/arch/powerpc/include/asm/book3s/32/mmu-hash.h
index b82e063494dd..e38c91388c40 100644
--- a/arch/powerpc/include/asm/book3s/32/mmu-hash.h
+++ b/arch/powerpc/include/asm/book3s/32/mmu-hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_32_MMU_HASH_H_
#define _ASM_POWERPC_BOOK3S_32_MMU_HASH_H_
/*
diff --git a/arch/powerpc/include/asm/book3s/32/pgalloc.h b/arch/powerpc/include/asm/book3s/32/pgalloc.h
index a120e7f8d535..5073cc75f1c8 100644
--- a/arch/powerpc/include/asm/book3s/32/pgalloc.h
+++ b/arch/powerpc/include/asm/book3s/32/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_32_PGALLOC_H
#define _ASM_POWERPC_BOOK3S_32_PGALLOC_H
diff --git a/arch/powerpc/include/asm/book3s/32/pgtable.h b/arch/powerpc/include/asm/book3s/32/pgtable.h
index 4d453f979553..016579ef16d3 100644
--- a/arch/powerpc/include/asm/book3s/32/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/32/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_32_PGTABLE_H
#define _ASM_POWERPC_BOOK3S_32_PGTABLE_H
diff --git a/arch/powerpc/include/asm/book3s/64/hash-4k.h b/arch/powerpc/include/asm/book3s/64/hash-4k.h
index 0c4e470571ca..197ced1eaaa0 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-4k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-4k.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_64_HASH_4K_H
#define _ASM_POWERPC_BOOK3S_64_HASH_4K_H
/*
diff --git a/arch/powerpc/include/asm/book3s/64/hash-64k.h b/arch/powerpc/include/asm/book3s/64/hash-64k.h
index 9732837aaae8..8d40cf03cb67 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-64k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-64k.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_64_HASH_64K_H
#define _ASM_POWERPC_BOOK3S_64_HASH_64K_H
diff --git a/arch/powerpc/include/asm/book3s/64/hash.h b/arch/powerpc/include/asm/book3s/64/hash.h
index f88452019114..ecb1239d74f4 100644
--- a/arch/powerpc/include/asm/book3s/64/hash.h
+++ b/arch/powerpc/include/asm/book3s/64/hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_64_HASH_H
#define _ASM_POWERPC_BOOK3S_64_HASH_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/book3s/64/hugetlb.h b/arch/powerpc/include/asm/book3s/64/hugetlb.h
index 2d1ca488ca44..c459f937d484 100644
--- a/arch/powerpc/include/asm/book3s/64/hugetlb.h
+++ b/arch/powerpc/include/asm/book3s/64/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_64_HUGETLB_H
#define _ASM_POWERPC_BOOK3S_64_HUGETLB_H
/*
diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
index c3b00e8ff791..37fdede5a24c 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_64_MMU_H_
#define _ASM_POWERPC_BOOK3S_64_MMU_H_
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable-4k.h b/arch/powerpc/include/asm/book3s/64/pgtable-4k.h
index 8708a0239a56..af5f2baac80f 100644
--- a/arch/powerpc/include/asm/book3s/64/pgtable-4k.h
+++ b/arch/powerpc/include/asm/book3s/64/pgtable-4k.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_64_PGTABLE_4K_H
#define _ASM_POWERPC_BOOK3S_64_PGTABLE_4K_H
/*
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable-64k.h b/arch/powerpc/include/asm/book3s/64/pgtable-64k.h
index 2ce4209399ed..fb4b3ba52339 100644
--- a/arch/powerpc/include/asm/book3s/64/pgtable-64k.h
+++ b/arch/powerpc/include/asm/book3s/64/pgtable-64k.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H
#define _ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h
index b9aff515b4de..9a677cd5997f 100644
--- a/arch/powerpc/include/asm/book3s/64/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_64_PGTABLE_H_
#define _ASM_POWERPC_BOOK3S_64_PGTABLE_H_
diff --git a/arch/powerpc/include/asm/book3s/64/radix-4k.h b/arch/powerpc/include/asm/book3s/64/radix-4k.h
index 7c3b1fe1619e..a61aa9cd63ec 100644
--- a/arch/powerpc/include/asm/book3s/64/radix-4k.h
+++ b/arch/powerpc/include/asm/book3s/64/radix-4k.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PGTABLE_RADIX_4K_H
#define _ASM_POWERPC_PGTABLE_RADIX_4K_H
diff --git a/arch/powerpc/include/asm/book3s/64/radix-64k.h b/arch/powerpc/include/asm/book3s/64/radix-64k.h
index 82dc355f0b45..c7e71ba29555 100644
--- a/arch/powerpc/include/asm/book3s/64/radix-64k.h
+++ b/arch/powerpc/include/asm/book3s/64/radix-64k.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PGTABLE_RADIX_64K_H
#define _ASM_POWERPC_PGTABLE_RADIX_64K_H
diff --git a/arch/powerpc/include/asm/book3s/64/radix.h b/arch/powerpc/include/asm/book3s/64/radix.h
index 1e5ba94e62ef..19c44e1495ae 100644
--- a/arch/powerpc/include/asm/book3s/64/radix.h
+++ b/arch/powerpc/include/asm/book3s/64/radix.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PGTABLE_RADIX_H
#define _ASM_POWERPC_PGTABLE_RADIX_H
diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush-hash.h b/arch/powerpc/include/asm/book3s/64/tlbflush-hash.h
index 2f6373144e2c..42178897a050 100644
--- a/arch/powerpc/include/asm/book3s/64/tlbflush-hash.h
+++ b/arch/powerpc/include/asm/book3s/64/tlbflush-hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_64_TLBFLUSH_HASH_H
#define _ASM_POWERPC_BOOK3S_64_TLBFLUSH_HASH_H
diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
index 9b433a624bf3..c2115dfcef0c 100644
--- a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
+++ b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_TLBFLUSH_RADIX_H
#define _ASM_POWERPC_TLBFLUSH_RADIX_H
diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush.h b/arch/powerpc/include/asm/book3s/64/tlbflush.h
index 72b925f97bab..fcffddbb3102 100644
--- a/arch/powerpc/include/asm/book3s/64/tlbflush.h
+++ b/arch/powerpc/include/asm/book3s/64/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_64_TLBFLUSH_H
#define _ASM_POWERPC_BOOK3S_64_TLBFLUSH_H
diff --git a/arch/powerpc/include/asm/book3s/pgalloc.h b/arch/powerpc/include/asm/book3s/pgalloc.h
index c0a69ae92256..6b178ca143e7 100644
--- a/arch/powerpc/include/asm/book3s/pgalloc.h
+++ b/arch/powerpc/include/asm/book3s/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_PGALLOC_H
#define _ASM_POWERPC_BOOK3S_PGALLOC_H
diff --git a/arch/powerpc/include/asm/book3s/pgtable.h b/arch/powerpc/include/asm/book3s/pgtable.h
index 8b0f4a29259a..6436b65ac7bc 100644
--- a/arch/powerpc/include/asm/book3s/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BOOK3S_PGTABLE_H
#define _ASM_POWERPC_BOOK3S_PGTABLE_H
diff --git a/arch/powerpc/include/asm/bootx.h b/arch/powerpc/include/asm/bootx.h
index dd9461003dfa..1c121f3c524f 100644
--- a/arch/powerpc/include/asm/bootx.h
+++ b/arch/powerpc/include/asm/bootx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file describes the structure passed from the BootX application
* (for MacOS) when it is used to boot Linux.
diff --git a/arch/powerpc/include/asm/btext.h b/arch/powerpc/include/asm/btext.h
index 89fc382648bc..3ffad030393c 100644
--- a/arch/powerpc/include/asm/btext.h
+++ b/arch/powerpc/include/asm/btext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for using the procedures in btext.c.
*
diff --git a/arch/powerpc/include/asm/bug.h b/arch/powerpc/include/asm/bug.h
index 7ee763d3bea9..3c04249bcf39 100644
--- a/arch/powerpc/include/asm/bug.h
+++ b/arch/powerpc/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_BUG_H
#define _ASM_POWERPC_BUG_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h
index d122f7f957ce..c1d257aa4c2d 100644
--- a/arch/powerpc/include/asm/cache.h
+++ b/arch/powerpc/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_CACHE_H
#define _ASM_POWERPC_CACHE_H
diff --git a/arch/powerpc/include/asm/cell-regs.h b/arch/powerpc/include/asm/cell-regs.h
index fdf64fd25950..e1c431ef30e0 100644
--- a/arch/powerpc/include/asm/cell-regs.h
+++ b/arch/powerpc/include/asm/cell-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* cbe_regs.h
*
diff --git a/arch/powerpc/include/asm/cmpxchg.h b/arch/powerpc/include/asm/cmpxchg.h
index fc46b664c49e..9b001f1f6b32 100644
--- a/arch/powerpc/include/asm/cmpxchg.h
+++ b/arch/powerpc/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_CMPXCHG_H_
#define _ASM_POWERPC_CMPXCHG_H_
diff --git a/arch/powerpc/include/asm/code-patching.h b/arch/powerpc/include/asm/code-patching.h
index 5482928eea1b..abef812de7f8 100644
--- a/arch/powerpc/include/asm/code-patching.h
+++ b/arch/powerpc/include/asm/code-patching.h
@@ -83,16 +83,8 @@ static inline unsigned long ppc_function_entry(void *func)
* On PPC64 ABIv1 the function pointer actually points to the
* function's descriptor. The first entry in the descriptor is the
* address of the function text.
- *
- * However, we may also receive pointer to an assembly symbol. To
- * detect that, we first check if the function pointer we receive
- * already points to kernel/module text and we only dereference it
- * if it doesn't.
*/
- if (kernel_text_address((unsigned long)func))
- return (unsigned long)func;
- else
- return ((func_descr_t *)func)->entry;
+ return ((func_descr_t *)func)->entry;
#else
return (unsigned long)func;
#endif
diff --git a/arch/powerpc/include/asm/compat.h b/arch/powerpc/include/asm/compat.h
index f256e1d14a14..a035b1e5dfa7 100644
--- a/arch/powerpc/include/asm/compat.h
+++ b/arch/powerpc/include/asm/compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_COMPAT_H
#define _ASM_POWERPC_COMPAT_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/context_tracking.h b/arch/powerpc/include/asm/context_tracking.h
index 40014921ffff..f2682b28b050 100644
--- a/arch/powerpc/include/asm/context_tracking.h
+++ b/arch/powerpc/include/asm/context_tracking.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_CONTEXT_TRACKING_H
#define _ASM_POWERPC_CONTEXT_TRACKING_H
diff --git a/arch/powerpc/include/asm/cpm.h b/arch/powerpc/include/asm/cpm.h
index 2c5c5b476804..b925df1b87d0 100644
--- a/arch/powerpc/include/asm/cpm.h
+++ b/arch/powerpc/include/asm/cpm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CPM_H
#define __CPM_H
diff --git a/arch/powerpc/include/asm/cpm1.h b/arch/powerpc/include/asm/cpm1.h
index 14ad37865000..3db821876d48 100644
--- a/arch/powerpc/include/asm/cpm1.h
+++ b/arch/powerpc/include/asm/cpm1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* MPC8xx Communication Processor Module.
* Copyright (c) 1997 Dan Malek (dmalek@jlc.net)
diff --git a/arch/powerpc/include/asm/cpm2.h b/arch/powerpc/include/asm/cpm2.h
index 7c8608b09694..2211b934ecb4 100644
--- a/arch/powerpc/include/asm/cpm2.h
+++ b/arch/powerpc/include/asm/cpm2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Communication Processor Module v2.
*
diff --git a/arch/powerpc/include/asm/cpu_has_feature.h b/arch/powerpc/include/asm/cpu_has_feature.h
index 0d1df02bf99d..7897d16e0990 100644
--- a/arch/powerpc/include/asm/cpu_has_feature.h
+++ b/arch/powerpc/include/asm/cpu_has_feature.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_POWERPC_CPU_HAS_FEATURE_H
#define __ASM_POWERPC_CPU_HAS_FEATURE_H
diff --git a/arch/powerpc/include/asm/cpuidle.h b/arch/powerpc/include/asm/cpuidle.h
index eb43b5c3a7b5..e210a83eb196 100644
--- a/arch/powerpc/include/asm/cpuidle.h
+++ b/arch/powerpc/include/asm/cpuidle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_CPUIDLE_H
#define _ASM_POWERPC_CPUIDLE_H
diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h
index a9bf921f4efc..53b31c2bcdf4 100644
--- a/arch/powerpc/include/asm/cputable.h
+++ b/arch/powerpc/include/asm/cputable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_POWERPC_CPUTABLE_H
#define __ASM_POWERPC_CPUTABLE_H
diff --git a/arch/powerpc/include/asm/cputhreads.h b/arch/powerpc/include/asm/cputhreads.h
index 9377bdf42eb8..d71a90924f3b 100644
--- a/arch/powerpc/include/asm/cputhreads.h
+++ b/arch/powerpc/include/asm/cputhreads.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_CPUTHREADS_H
#define _ASM_POWERPC_CPUTHREADS_H
diff --git a/arch/powerpc/include/asm/dbdma.h b/arch/powerpc/include/asm/dbdma.h
index 6c69836b4ec2..4785c1716b3e 100644
--- a/arch/powerpc/include/asm/dbdma.h
+++ b/arch/powerpc/include/asm/dbdma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for using the Apple Descriptor-Based DMA controller
* in Power Macintosh computers.
diff --git a/arch/powerpc/include/asm/dcr-regs.h b/arch/powerpc/include/asm/dcr-regs.h
index 380274de429f..5c1a4973f46a 100644
--- a/arch/powerpc/include/asm/dcr-regs.h
+++ b/arch/powerpc/include/asm/dcr-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common DCR / SDR / CPR register definitions used on various IBM/AMCC
* 4xx processors
diff --git a/arch/powerpc/include/asm/debug.h b/arch/powerpc/include/asm/debug.h
index 5d5af3fddfd8..14e71ff6579e 100644
--- a/arch/powerpc/include/asm/debug.h
+++ b/arch/powerpc/include/asm/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
*/
diff --git a/arch/powerpc/include/asm/dma-mapping.h b/arch/powerpc/include/asm/dma-mapping.h
index eaece3d3e225..ee1e38ff1b77 100644
--- a/arch/powerpc/include/asm/dma-mapping.h
+++ b/arch/powerpc/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2004 IBM
*
diff --git a/arch/powerpc/include/asm/dma.h b/arch/powerpc/include/asm/dma.h
index a5c6d83b5f60..1b4f0254868f 100644
--- a/arch/powerpc/include/asm/dma.h
+++ b/arch/powerpc/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_DMA_H
#define _ASM_POWERPC_DMA_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/dt_cpu_ftrs.h b/arch/powerpc/include/asm/dt_cpu_ftrs.h
index 7a34fc11bf63..71515d909ed1 100644
--- a/arch/powerpc/include/asm/dt_cpu_ftrs.h
+++ b/arch/powerpc/include/asm/dt_cpu_ftrs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_POWERPC_DT_CPU_FTRS_H
#define __ASM_POWERPC_DT_CPU_FTRS_H
diff --git a/arch/powerpc/include/asm/exec.h b/arch/powerpc/include/asm/exec.h
index 8196e9c7d7e8..92cac4851275 100644
--- a/arch/powerpc/include/asm/exec.h
+++ b/arch/powerpc/include/asm/exec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
*/
diff --git a/arch/powerpc/include/asm/extable.h b/arch/powerpc/include/asm/extable.h
index 07cc45cd86d9..eb91b2d2935a 100644
--- a/arch/powerpc/include/asm/extable.h
+++ b/arch/powerpc/include/asm/extable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARCH_POWERPC_EXTABLE_H
#define _ARCH_POWERPC_EXTABLE_H
diff --git a/arch/powerpc/include/asm/fb.h b/arch/powerpc/include/asm/fb.h
index 411af8d17a69..6541ab77c5b9 100644
--- a/arch/powerpc/include/asm/fb.h
+++ b/arch/powerpc/include/asm/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_FB_H_
#define _ASM_FB_H_
diff --git a/arch/powerpc/include/asm/ftrace.h b/arch/powerpc/include/asm/ftrace.h
index 686c5f70eb84..9abddde372ab 100644
--- a/arch/powerpc/include/asm/ftrace.h
+++ b/arch/powerpc/include/asm/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_FTRACE
#define _ASM_POWERPC_FTRACE
diff --git a/arch/powerpc/include/asm/futex.h b/arch/powerpc/include/asm/futex.h
index 719ed9b61ea7..1a944c18c539 100644
--- a/arch/powerpc/include/asm/futex.h
+++ b/arch/powerpc/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_FUTEX_H
#define _ASM_POWERPC_FUTEX_H
diff --git a/arch/powerpc/include/asm/grackle.h b/arch/powerpc/include/asm/grackle.h
index bd7812a519d4..7376e3fa1570 100644
--- a/arch/powerpc/include/asm/grackle.h
+++ b/arch/powerpc/include/asm/grackle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_GRACKLE_H
#define _ASM_POWERPC_GRACKLE_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/hardirq.h b/arch/powerpc/include/asm/hardirq.h
index c97603d617e3..456f9e7b8d83 100644
--- a/arch/powerpc/include/asm/hardirq.h
+++ b/arch/powerpc/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_HARDIRQ_H
#define _ASM_POWERPC_HARDIRQ_H
diff --git a/arch/powerpc/include/asm/head-64.h b/arch/powerpc/include/asm/head-64.h
index d81eac5b509f..fdcff76e9a25 100644
--- a/arch/powerpc/include/asm/head-64.h
+++ b/arch/powerpc/include/asm/head-64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_HEAD_64_H
#define _ASM_POWERPC_HEAD_64_H
diff --git a/arch/powerpc/include/asm/heathrow.h b/arch/powerpc/include/asm/heathrow.h
index 93f54958a9d1..8bc5b168762e 100644
--- a/arch/powerpc/include/asm/heathrow.h
+++ b/arch/powerpc/include/asm/heathrow.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_HEATHROW_H
#define _ASM_POWERPC_HEATHROW_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/highmem.h b/arch/powerpc/include/asm/highmem.h
index 01c2c23b307e..cec820f961da 100644
--- a/arch/powerpc/include/asm/highmem.h
+++ b/arch/powerpc/include/asm/highmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* highmem.h: virtual kernel memory mappings for high memory
*
diff --git a/arch/powerpc/include/asm/hugetlb.h b/arch/powerpc/include/asm/hugetlb.h
index b8a0fb442c64..93f98239159f 100644
--- a/arch/powerpc/include/asm/hugetlb.h
+++ b/arch/powerpc/include/asm/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_HUGETLB_H
#define _ASM_POWERPC_HUGETLB_H
diff --git a/arch/powerpc/include/asm/hvcall.h b/arch/powerpc/include/asm/hvcall.h
index 3d34dc0869f6..a409177be8bd 100644
--- a/arch/powerpc/include/asm/hvcall.h
+++ b/arch/powerpc/include/asm/hvcall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_HVCALL_H
#define _ASM_POWERPC_HVCALL_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/hvsi.h b/arch/powerpc/include/asm/hvsi.h
index d4a5315718ca..3fdc54df63c9 100644
--- a/arch/powerpc/include/asm/hvsi.h
+++ b/arch/powerpc/include/asm/hvsi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _HVSI_H
#define _HVSI_H
diff --git a/arch/powerpc/include/asm/hw_irq.h b/arch/powerpc/include/asm/hw_irq.h
index c1dd1929342d..abd04c36c251 100644
--- a/arch/powerpc/include/asm/hw_irq.h
+++ b/arch/powerpc/include/asm/hw_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
*/
diff --git a/arch/powerpc/include/asm/i8259.h b/arch/powerpc/include/asm/i8259.h
index c3fdfbd5a673..d7f08ae49e12 100644
--- a/arch/powerpc/include/asm/i8259.h
+++ b/arch/powerpc/include/asm/i8259.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_I8259_H
#define _ASM_POWERPC_I8259_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/ide.h b/arch/powerpc/include/asm/ide.h
index da01b20aea59..ce87a4441ca3 100644
--- a/arch/powerpc/include/asm/ide.h
+++ b/arch/powerpc/include/asm/ide.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1994-1996 Linus Torvalds & authors
*
diff --git a/arch/powerpc/include/asm/ima.h b/arch/powerpc/include/asm/ima.h
index 2313bdface34..ead488cf3981 100644
--- a/arch/powerpc/include/asm/ima.h
+++ b/arch/powerpc/include/asm/ima.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_IMA_H
#define _ASM_POWERPC_IMA_H
diff --git a/arch/powerpc/include/asm/immap_cpm2.h b/arch/powerpc/include/asm/immap_cpm2.h
index 7c64fda5357b..845d5b3fb212 100644
--- a/arch/powerpc/include/asm/immap_cpm2.h
+++ b/arch/powerpc/include/asm/immap_cpm2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CPM2 Internal Memory Map
* Copyright (c) 1999 Dan Malek (dmalek@jlc.net)
diff --git a/arch/powerpc/include/asm/io-defs.h b/arch/powerpc/include/asm/io-defs.h
index 44d7927aec69..faf8617cc574 100644
--- a/arch/powerpc/include/asm/io-defs.h
+++ b/arch/powerpc/include/asm/io-defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* This file is meant to be include multiple times by other headers */
/* last 2 argments are used by platforms/cell/io-workarounds.[ch] */
diff --git a/arch/powerpc/include/asm/irq_work.h b/arch/powerpc/include/asm/irq_work.h
index 744fd54de374..c6d3078bd8c3 100644
--- a/arch/powerpc/include/asm/irq_work.h
+++ b/arch/powerpc/include/asm/irq_work.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_IRQ_WORK_H
#define _ASM_POWERPC_IRQ_WORK_H
diff --git a/arch/powerpc/include/asm/irqflags.h b/arch/powerpc/include/asm/irqflags.h
index f2149066fe5d..1aeb5f13b8c4 100644
--- a/arch/powerpc/include/asm/irqflags.h
+++ b/arch/powerpc/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IRQ flags handling
*/
diff --git a/arch/powerpc/include/asm/isa-bridge.h b/arch/powerpc/include/asm/isa-bridge.h
index a3a7c1d63a7c..47295894bf91 100644
--- a/arch/powerpc/include/asm/isa-bridge.h
+++ b/arch/powerpc/include/asm/isa-bridge.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ISA_BRIDGE_H
#define __ISA_BRIDGE_H
diff --git a/arch/powerpc/include/asm/kdebug.h b/arch/powerpc/include/asm/kdebug.h
index ae6d206728af..0f7c1ef37d0d 100644
--- a/arch/powerpc/include/asm/kdebug.h
+++ b/arch/powerpc/include/asm/kdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_KDEBUG_H
#define _ASM_POWERPC_KDEBUG_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/kdump.h b/arch/powerpc/include/asm/kdump.h
index c9776202d7ec..fd128d1e52b3 100644
--- a/arch/powerpc/include/asm/kdump.h
+++ b/arch/powerpc/include/asm/kdump.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC64_KDUMP_H
#define _PPC64_KDUMP_H
diff --git a/arch/powerpc/include/asm/kexec.h b/arch/powerpc/include/asm/kexec.h
index 25668bc8cb2a..4419d435639a 100644
--- a/arch/powerpc/include/asm/kexec.h
+++ b/arch/powerpc/include/asm/kexec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_KEXEC_H
#define _ASM_POWERPC_KEXEC_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/keylargo.h b/arch/powerpc/include/asm/keylargo.h
index 2156315d8a90..debdf548009d 100644
--- a/arch/powerpc/include/asm/keylargo.h
+++ b/arch/powerpc/include/asm/keylargo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_KEYLARGO_H
#define _ASM_POWERPC_KEYLARGO_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/libata-portmap.h b/arch/powerpc/include/asm/libata-portmap.h
index 4396db57b8be..7c602da62560 100644
--- a/arch/powerpc/include/asm/libata-portmap.h
+++ b/arch/powerpc/include/asm/libata-portmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_POWERPC_LIBATA_PORTMAP_H
#define __ASM_POWERPC_LIBATA_PORTMAP_H
diff --git a/arch/powerpc/include/asm/linkage.h b/arch/powerpc/include/asm/linkage.h
index 0cf5e21179fc..1f00d2891d69 100644
--- a/arch/powerpc/include/asm/linkage.h
+++ b/arch/powerpc/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_LINKAGE_H
#define _ASM_POWERPC_LINKAGE_H
diff --git a/arch/powerpc/include/asm/local.h b/arch/powerpc/include/asm/local.h
index b8da91363864..600a68bd77f5 100644
--- a/arch/powerpc/include/asm/local.h
+++ b/arch/powerpc/include/asm/local.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARCH_POWERPC_LOCAL_H
#define _ARCH_POWERPC_LOCAL_H
diff --git a/arch/powerpc/include/asm/macio.h b/arch/powerpc/include/asm/macio.h
index 27af7f8bbb8d..ff5fd82d9ff0 100644
--- a/arch/powerpc/include/asm/macio.h
+++ b/arch/powerpc/include/asm/macio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACIO_ASIC_H__
#define __MACIO_ASIC_H__
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/mediabay.h b/arch/powerpc/include/asm/mediabay.h
index 11037a4133ee..230fda4707b8 100644
--- a/arch/powerpc/include/asm/mediabay.h
+++ b/arch/powerpc/include/asm/mediabay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* mediabay.h: definitions for using the media bay
* on PowerBook 3400 and similar computers.
diff --git a/arch/powerpc/include/asm/mmu-40x.h b/arch/powerpc/include/asm/mmu-40x.h
index 34916865eaef..74f4edb5916e 100644
--- a/arch/powerpc/include/asm/mmu-40x.h
+++ b/arch/powerpc/include/asm/mmu-40x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_MMU_40X_H_
#define _ASM_POWERPC_MMU_40X_H_
diff --git a/arch/powerpc/include/asm/mmu-44x.h b/arch/powerpc/include/asm/mmu-44x.h
index bf52d704fc47..cb57f29f531d 100644
--- a/arch/powerpc/include/asm/mmu-44x.h
+++ b/arch/powerpc/include/asm/mmu-44x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_MMU_44X_H_
#define _ASM_POWERPC_MMU_44X_H_
/*
diff --git a/arch/powerpc/include/asm/mmu-8xx.h b/arch/powerpc/include/asm/mmu-8xx.h
index 798b5bf91427..5bb3dbede41a 100644
--- a/arch/powerpc/include/asm/mmu-8xx.h
+++ b/arch/powerpc/include/asm/mmu-8xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_MMU_8XX_H_
#define _ASM_POWERPC_MMU_8XX_H_
/*
diff --git a/arch/powerpc/include/asm/mmu-book3e.h b/arch/powerpc/include/asm/mmu-book3e.h
index 7ca8d8e80ffa..cda94a0f5146 100644
--- a/arch/powerpc/include/asm/mmu-book3e.h
+++ b/arch/powerpc/include/asm/mmu-book3e.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_MMU_BOOK3E_H_
#define _ASM_POWERPC_MMU_BOOK3E_H_
/*
diff --git a/arch/powerpc/include/asm/mmu.h b/arch/powerpc/include/asm/mmu.h
index 78260409dc9c..6364f5c2cc3e 100644
--- a/arch/powerpc/include/asm/mmu.h
+++ b/arch/powerpc/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_MMU_H_
#define _ASM_POWERPC_MMU_H_
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
index 309592589e30..492d8140a395 100644
--- a/arch/powerpc/include/asm/mmu_context.h
+++ b/arch/powerpc/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_POWERPC_MMU_CONTEXT_H
#define __ASM_POWERPC_MMU_CONTEXT_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/mmzone.h b/arch/powerpc/include/asm/mmzone.h
index 4d52ccfc2366..91c69ff53a8a 100644
--- a/arch/powerpc/include/asm/mmzone.h
+++ b/arch/powerpc/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Written by Kanoj Sarcar (kanoj@sgi.com) Aug 99
*
diff --git a/arch/powerpc/include/asm/mpc6xx.h b/arch/powerpc/include/asm/mpc6xx.h
index effc2291beb2..6ed9f4ccc7b9 100644
--- a/arch/powerpc/include/asm/mpc6xx.h
+++ b/arch/powerpc/include/asm/mpc6xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_POWERPC_MPC6xx_H
#define __ASM_POWERPC_MPC6xx_H
diff --git a/arch/powerpc/include/asm/mpc8260.h b/arch/powerpc/include/asm/mpc8260.h
index 03317e1e6185..fd8c5707425b 100644
--- a/arch/powerpc/include/asm/mpc8260.h
+++ b/arch/powerpc/include/asm/mpc8260.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Since there are many different boards and no standard configuration,
* we have a unique include file for each. Rather than change every
diff --git a/arch/powerpc/include/asm/mpic.h b/arch/powerpc/include/asm/mpic.h
index 98697611e7b3..fad8ddd697ac 100644
--- a/arch/powerpc/include/asm/mpic.h
+++ b/arch/powerpc/include/asm/mpic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_MPIC_H
#define _ASM_POWERPC_MPIC_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/nmi.h b/arch/powerpc/include/asm/nmi.h
index 3760150a0ff0..e97f58689ca7 100644
--- a/arch/powerpc/include/asm/nmi.h
+++ b/arch/powerpc/include/asm/nmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_NMI_H
#define _ASM_NMI_H
diff --git a/arch/powerpc/include/asm/nohash/32/pgalloc.h b/arch/powerpc/include/asm/nohash/32/pgalloc.h
index cc369a70f2bb..d072139ff2e5 100644
--- a/arch/powerpc/include/asm/nohash/32/pgalloc.h
+++ b/arch/powerpc/include/asm/nohash/32/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PGALLOC_32_H
#define _ASM_POWERPC_PGALLOC_32_H
diff --git a/arch/powerpc/include/asm/nohash/32/pgtable.h b/arch/powerpc/include/asm/nohash/32/pgtable.h
index 185c6a47f9ba..cc2bfec3aa3b 100644
--- a/arch/powerpc/include/asm/nohash/32/pgtable.h
+++ b/arch/powerpc/include/asm/nohash/32/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_32_PGTABLE_H
#define _ASM_POWERPC_NOHASH_32_PGTABLE_H
diff --git a/arch/powerpc/include/asm/nohash/32/pte-40x.h b/arch/powerpc/include/asm/nohash/32/pte-40x.h
index 9624ebdacc47..124f9ac23a1e 100644
--- a/arch/powerpc/include/asm/nohash/32/pte-40x.h
+++ b/arch/powerpc/include/asm/nohash/32/pte-40x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_32_PTE_40x_H
#define _ASM_POWERPC_NOHASH_32_PTE_40x_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/nohash/32/pte-44x.h b/arch/powerpc/include/asm/nohash/32/pte-44x.h
index 0656ff81e5b0..f812c0272364 100644
--- a/arch/powerpc/include/asm/nohash/32/pte-44x.h
+++ b/arch/powerpc/include/asm/nohash/32/pte-44x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_32_PTE_44x_H
#define _ASM_POWERPC_NOHASH_32_PTE_44x_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/nohash/32/pte-8xx.h b/arch/powerpc/include/asm/nohash/32/pte-8xx.h
index b4df2734c078..6dc0180fd5c7 100644
--- a/arch/powerpc/include/asm/nohash/32/pte-8xx.h
+++ b/arch/powerpc/include/asm/nohash/32/pte-8xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_32_PTE_8xx_H
#define _ASM_POWERPC_NOHASH_32_PTE_8xx_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/nohash/32/pte-fsl-booke.h b/arch/powerpc/include/asm/nohash/32/pte-fsl-booke.h
index 5422d00c6145..d1ee24e9e137 100644
--- a/arch/powerpc/include/asm/nohash/32/pte-fsl-booke.h
+++ b/arch/powerpc/include/asm/nohash/32/pte-fsl-booke.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_32_PTE_FSL_BOOKE_H
#define _ASM_POWERPC_NOHASH_32_PTE_FSL_BOOKE_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/nohash/64/pgtable-4k.h b/arch/powerpc/include/asm/nohash/64/pgtable-4k.h
index 9f4de0a1035e..c40ec32b8194 100644
--- a/arch/powerpc/include/asm/nohash/64/pgtable-4k.h
+++ b/arch/powerpc/include/asm/nohash/64/pgtable-4k.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_64_PGTABLE_4K_H
#define _ASM_POWERPC_NOHASH_64_PGTABLE_4K_H
diff --git a/arch/powerpc/include/asm/nohash/64/pgtable-64k.h b/arch/powerpc/include/asm/nohash/64/pgtable-64k.h
index 1facb584dd29..7210c2818e41 100644
--- a/arch/powerpc/include/asm/nohash/64/pgtable-64k.h
+++ b/arch/powerpc/include/asm/nohash/64/pgtable-64k.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_64_PGTABLE_64K_H
#define _ASM_POWERPC_NOHASH_64_PGTABLE_64K_H
diff --git a/arch/powerpc/include/asm/nohash/64/pgtable.h b/arch/powerpc/include/asm/nohash/64/pgtable.h
index f0ff384d4ca5..265bbd7cba73 100644
--- a/arch/powerpc/include/asm/nohash/64/pgtable.h
+++ b/arch/powerpc/include/asm/nohash/64/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_64_PGTABLE_H
#define _ASM_POWERPC_NOHASH_64_PGTABLE_H
/*
diff --git a/arch/powerpc/include/asm/nohash/pgalloc.h b/arch/powerpc/include/asm/nohash/pgalloc.h
index b39ec956d71e..0634f2949438 100644
--- a/arch/powerpc/include/asm/nohash/pgalloc.h
+++ b/arch/powerpc/include/asm/nohash/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_PGALLOC_H
#define _ASM_POWERPC_NOHASH_PGALLOC_H
diff --git a/arch/powerpc/include/asm/nohash/pgtable.h b/arch/powerpc/include/asm/nohash/pgtable.h
index 17989c3d9a24..5c68f4a59f75 100644
--- a/arch/powerpc/include/asm/nohash/pgtable.h
+++ b/arch/powerpc/include/asm/nohash/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_PGTABLE_H
#define _ASM_POWERPC_NOHASH_PGTABLE_H
diff --git a/arch/powerpc/include/asm/nohash/pte-book3e.h b/arch/powerpc/include/asm/nohash/pte-book3e.h
index e16807b78edf..2da4532ca377 100644
--- a/arch/powerpc/include/asm/nohash/pte-book3e.h
+++ b/arch/powerpc/include/asm/nohash/pte-book3e.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_NOHASH_PTE_BOOK3E_H
#define _ASM_POWERPC_NOHASH_PTE_BOOK3E_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/ohare.h b/arch/powerpc/include/asm/ohare.h
index 0d030f9dea24..da3371fc348c 100644
--- a/arch/powerpc/include/asm/ohare.h
+++ b/arch/powerpc/include/asm/ohare.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_OHARE_H
#define _ASM_POWERPC_OHARE_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/page_32.h b/arch/powerpc/include/asm/page_32.h
index 6a8e1797f223..5c378e9b78c8 100644
--- a/arch/powerpc/include/asm/page_32.h
+++ b/arch/powerpc/include/asm/page_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PAGE_32_H
#define _ASM_POWERPC_PAGE_32_H
diff --git a/arch/powerpc/include/asm/parport.h b/arch/powerpc/include/asm/parport.h
index 6595ad1d18cc..8abfb8f7c33d 100644
--- a/arch/powerpc/include/asm/parport.h
+++ b/arch/powerpc/include/asm/parport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* parport.h: platform-specific PC-style parport initialisation
*
diff --git a/arch/powerpc/include/asm/percpu.h b/arch/powerpc/include/asm/percpu.h
index 2cedefddba37..dce863a7635c 100644
--- a/arch/powerpc/include/asm/percpu.h
+++ b/arch/powerpc/include/asm/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PERCPU_H_
#define _ASM_POWERPC_PERCPU_H_
#ifdef __powerpc64__
diff --git a/arch/powerpc/include/asm/pgalloc.h b/arch/powerpc/include/asm/pgalloc.h
index 45ae1212ab8a..a14203c005f1 100644
--- a/arch/powerpc/include/asm/pgalloc.h
+++ b/arch/powerpc/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PGALLOC_H
#define _ASM_POWERPC_PGALLOC_H
diff --git a/arch/powerpc/include/asm/pgtable-be-types.h b/arch/powerpc/include/asm/pgtable-be-types.h
index 67e7e3d990f4..beb6e3e79788 100644
--- a/arch/powerpc/include/asm/pgtable-be-types.h
+++ b/arch/powerpc/include/asm/pgtable-be-types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PGTABLE_BE_TYPES_H
#define _ASM_POWERPC_PGTABLE_BE_TYPES_H
diff --git a/arch/powerpc/include/asm/pgtable-types.h b/arch/powerpc/include/asm/pgtable-types.h
index 369a164b545c..cfe89a6fc308 100644
--- a/arch/powerpc/include/asm/pgtable-types.h
+++ b/arch/powerpc/include/asm/pgtable-types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PGTABLE_TYPES_H
#define _ASM_POWERPC_PGTABLE_TYPES_H
diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
index 7d0d38f58243..ab7d2d996be4 100644
--- a/arch/powerpc/include/asm/pgtable.h
+++ b/arch/powerpc/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PGTABLE_H
#define _ASM_POWERPC_PGTABLE_H
diff --git a/arch/powerpc/include/asm/plpar_wrappers.h b/arch/powerpc/include/asm/plpar_wrappers.h
index c7b164836bc3..7f01b22fa6cb 100644
--- a/arch/powerpc/include/asm/plpar_wrappers.h
+++ b/arch/powerpc/include/asm/plpar_wrappers.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_PLPAR_WRAPPERS_H
#define _ASM_POWERPC_PLPAR_WRAPPERS_H
diff --git a/arch/powerpc/include/asm/pmac_pfunc.h b/arch/powerpc/include/asm/pmac_pfunc.h
index 1330d6a58c57..73bd8f28f2a8 100644
--- a/arch/powerpc/include/asm/pmac_pfunc.h
+++ b/arch/powerpc/include/asm/pmac_pfunc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PMAC_PFUNC_H__
#define __PMAC_PFUNC_H__
diff --git a/arch/powerpc/include/asm/pte-common.h b/arch/powerpc/include/asm/pte-common.h
index 4ba26dd259fd..ce142ef99ba7 100644
--- a/arch/powerpc/include/asm/pte-common.h
+++ b/arch/powerpc/include/asm/pte-common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Included from asm/pgtable-*.h only ! */
/*
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
index f92eaf7a4c0d..b779f3ccd412 100644
--- a/arch/powerpc/include/asm/reg.h
+++ b/arch/powerpc/include/asm/reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Contains the definition of registers common to all PowerPC variants.
* If a register definition has been changed in a different PowerPC
diff --git a/arch/powerpc/include/asm/reg_8xx.h b/arch/powerpc/include/asm/reg_8xx.h
index ae16fef7a4d6..53a7e2955d3e 100644
--- a/arch/powerpc/include/asm/reg_8xx.h
+++ b/arch/powerpc/include/asm/reg_8xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Contains register definitions common to PowerPC 8xx CPUs. Notice
*/
diff --git a/arch/powerpc/include/asm/reg_fsl_emb.h b/arch/powerpc/include/asm/reg_fsl_emb.h
index 0e3ddf5177f6..d7ccf93e6279 100644
--- a/arch/powerpc/include/asm/reg_fsl_emb.h
+++ b/arch/powerpc/include/asm/reg_fsl_emb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Contains register definitions for the Freescale Embedded Performance
* Monitor.
diff --git a/arch/powerpc/include/asm/runlatch.h b/arch/powerpc/include/asm/runlatch.h
index 54e9b963876e..cfb390edf7d0 100644
--- a/arch/powerpc/include/asm/runlatch.h
+++ b/arch/powerpc/include/asm/runlatch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
*/
diff --git a/arch/powerpc/include/asm/seccomp.h b/arch/powerpc/include/asm/seccomp.h
index c1818e35cf02..51209f6071c5 100644
--- a/arch/powerpc/include/asm/seccomp.h
+++ b/arch/powerpc/include/asm/seccomp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_SECCOMP_H
#define _ASM_POWERPC_SECCOMP_H
diff --git a/arch/powerpc/include/asm/sections.h b/arch/powerpc/include/asm/sections.h
index 7902d6358854..82bec63bbd4f 100644
--- a/arch/powerpc/include/asm/sections.h
+++ b/arch/powerpc/include/asm/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_SECTIONS_H
#define _ASM_POWERPC_SECTIONS_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/setup.h b/arch/powerpc/include/asm/setup.h
index 3a3fb0ca68f5..257d23dbf55d 100644
--- a/arch/powerpc/include/asm/setup.h
+++ b/arch/powerpc/include/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_SETUP_H
#define _ASM_POWERPC_SETUP_H
diff --git a/arch/powerpc/include/asm/shmparam.h b/arch/powerpc/include/asm/shmparam.h
index 5cda42a6d39e..bc0968839565 100644
--- a/arch/powerpc/include/asm/shmparam.h
+++ b/arch/powerpc/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_SHMPARAM_H
#define _ASM_POWERPC_SHMPARAM_H
diff --git a/arch/powerpc/include/asm/signal.h b/arch/powerpc/include/asm/signal.h
index 5ff77722a52d..0803ca8b9149 100644
--- a/arch/powerpc/include/asm/signal.h
+++ b/arch/powerpc/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_SIGNAL_H
#define _ASM_POWERPC_SIGNAL_H
diff --git a/arch/powerpc/include/asm/smu.h b/arch/powerpc/include/asm/smu.h
index 09f98e861869..8dff086c0cab 100644
--- a/arch/powerpc/include/asm/smu.h
+++ b/arch/powerpc/include/asm/smu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SMU_H
#define _SMU_H
diff --git a/arch/powerpc/include/asm/sparsemem.h b/arch/powerpc/include/asm/sparsemem.h
index c88930c9db7f..a7916ee6dfb6 100644
--- a/arch/powerpc/include/asm/sparsemem.h
+++ b/arch/powerpc/include/asm/sparsemem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_SPARSEMEM_H
#define _ASM_POWERPC_SPARSEMEM_H 1
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/spinlock_types.h b/arch/powerpc/include/asm/spinlock_types.h
index 2351adc4fdc4..87adaf13b7e8 100644
--- a/arch/powerpc/include/asm/spinlock_types.h
+++ b/arch/powerpc/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_SPINLOCK_TYPES_H
#define _ASM_POWERPC_SPINLOCK_TYPES_H
diff --git a/arch/powerpc/include/asm/string.h b/arch/powerpc/include/asm/string.h
index cc9addefb51c..d98ac188cedb 100644
--- a/arch/powerpc/include/asm/string.h
+++ b/arch/powerpc/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_STRING_H
#define _ASM_POWERPC_STRING_H
diff --git a/arch/powerpc/include/asm/switch_to.h b/arch/powerpc/include/asm/switch_to.h
index 17c8380673a6..bf820f53e27e 100644
--- a/arch/powerpc/include/asm/switch_to.h
+++ b/arch/powerpc/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
*/
diff --git a/arch/powerpc/include/asm/synch.h b/arch/powerpc/include/asm/synch.h
index 78efe8d5d775..63e7f5a1f105 100644
--- a/arch/powerpc/include/asm/synch.h
+++ b/arch/powerpc/include/asm/synch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_SYNCH_H
#define _ASM_POWERPC_SYNCH_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/syscalls.h b/arch/powerpc/include/asm/syscalls.h
index 16fab6898240..1b90a3516a35 100644
--- a/arch/powerpc/include/asm/syscalls.h
+++ b/arch/powerpc/include/asm/syscalls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_POWERPC_SYSCALLS_H
#define __ASM_POWERPC_SYSCALLS_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/systbl.h b/arch/powerpc/include/asm/systbl.h
index 1c9470881c4a..449912f057f6 100644
--- a/arch/powerpc/include/asm/systbl.h
+++ b/arch/powerpc/include/asm/systbl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* List of powerpc syscalls. For the meaning of the _SPU suffix see
* arch/powerpc/platforms/cell/spu_callbacks.c
diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h
index a941cc6fc3e9..a264c3ad366b 100644
--- a/arch/powerpc/include/asm/thread_info.h
+++ b/arch/powerpc/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* thread_info.h: PowerPC low-level thread information
* adapted from the i386 version by Paul Mackerras
*
diff --git a/arch/powerpc/include/asm/timex.h b/arch/powerpc/include/asm/timex.h
index cb61eae5b7ed..926b9f91a3ef 100644
--- a/arch/powerpc/include/asm/timex.h
+++ b/arch/powerpc/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_TIMEX_H
#define _ASM_POWERPC_TIMEX_H
diff --git a/arch/powerpc/include/asm/tm.h b/arch/powerpc/include/asm/tm.h
index 82e06ca3a49b..a8bc72a7f4be 100644
--- a/arch/powerpc/include/asm/tm.h
+++ b/arch/powerpc/include/asm/tm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Transactional memory support routines to reclaim and recheckpoint
* transactional process state.
diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h
index 2d84bca8d053..023ff9f17501 100644
--- a/arch/powerpc/include/asm/topology.h
+++ b/arch/powerpc/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_TOPOLOGY_H
#define _ASM_POWERPC_TOPOLOGY_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/include/asm/trace.h b/arch/powerpc/include/asm/trace.h
index 18f168aebae3..33f3b479138b 100644
--- a/arch/powerpc/include/asm/trace.h
+++ b/arch/powerpc/include/asm/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM powerpc
diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h
index 9c0e60ca1666..11f4bd07cce0 100644
--- a/arch/powerpc/include/asm/uaccess.h
+++ b/arch/powerpc/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARCH_POWERPC_UACCESS_H
#define _ARCH_POWERPC_UACCESS_H
diff --git a/arch/powerpc/include/asm/unaligned.h b/arch/powerpc/include/asm/unaligned.h
index 8296381ae432..ce69c5eff95e 100644
--- a/arch/powerpc/include/asm/unaligned.h
+++ b/arch/powerpc/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_UNALIGNED_H
#define _ASM_POWERPC_UNALIGNED_H
diff --git a/arch/powerpc/include/asm/uninorth.h b/arch/powerpc/include/asm/uninorth.h
index a1d112979fd2..e278299b9b37 100644
--- a/arch/powerpc/include/asm/uninorth.h
+++ b/arch/powerpc/include/asm/uninorth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* uninorth.h: definitions for using the "UniNorth" host bridge chip
* from Apple. This chip is used on "Core99" machines
diff --git a/arch/powerpc/include/asm/user.h b/arch/powerpc/include/asm/user.h
index 3fd4545dd74e..5c0e082eae7b 100644
--- a/arch/powerpc/include/asm/user.h
+++ b/arch/powerpc/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_USER_H
#define _ASM_POWERPC_USER_H
diff --git a/arch/powerpc/include/asm/vdso.h b/arch/powerpc/include/asm/vdso.h
index c53f5f6d1761..b5e1f8f8a05c 100644
--- a/arch/powerpc/include/asm/vdso.h
+++ b/arch/powerpc/include/asm/vdso.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PPC64_VDSO_H__
#define __PPC64_VDSO_H__
diff --git a/arch/powerpc/include/asm/vga.h b/arch/powerpc/include/asm/vga.h
index 7a7b541b7493..fcf721682a71 100644
--- a/arch/powerpc/include/asm/vga.h
+++ b/arch/powerpc/include/asm/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_POWERPC_VGA_H_
#define _ASM_POWERPC_VGA_H_
diff --git a/arch/powerpc/include/asm/xics.h b/arch/powerpc/include/asm/xics.h
index 7ce2c3ac2964..8e903b3f9c24 100644
--- a/arch/powerpc/include/asm/xics.h
+++ b/arch/powerpc/include/asm/xics.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common definitions across all variants of ICP and ICS interrupt
* controllers.
diff --git a/arch/powerpc/include/uapi/asm/auxvec.h b/arch/powerpc/include/uapi/asm/auxvec.h
index be6e94ecec42..7af21dc0e320 100644
--- a/arch/powerpc/include/uapi/asm/auxvec.h
+++ b/arch/powerpc/include/uapi/asm/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_AUXVEC_H
#define _ASM_POWERPC_AUXVEC_H
diff --git a/arch/powerpc/include/uapi/asm/bitsperlong.h b/arch/powerpc/include/uapi/asm/bitsperlong.h
index 5f1659032c40..46ece3ecff31 100644
--- a/arch/powerpc/include/uapi/asm/bitsperlong.h
+++ b/arch/powerpc/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_POWERPC_BITSPERLONG_H
#define __ASM_POWERPC_BITSPERLONG_H
diff --git a/arch/powerpc/include/uapi/asm/bootx.h b/arch/powerpc/include/uapi/asm/bootx.h
index 6e51cf0708a1..6728c7e24e58 100644
--- a/arch/powerpc/include/uapi/asm/bootx.h
+++ b/arch/powerpc/include/uapi/asm/bootx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file describes the structure passed from the BootX application
* (for MacOS) when it is used to boot Linux.
diff --git a/arch/powerpc/include/uapi/asm/byteorder.h b/arch/powerpc/include/uapi/asm/byteorder.h
index ca931d074000..8ef66f7d9db9 100644
--- a/arch/powerpc/include/uapi/asm/byteorder.h
+++ b/arch/powerpc/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_BYTEORDER_H
#define _ASM_POWERPC_BYTEORDER_H
diff --git a/arch/powerpc/include/uapi/asm/cputable.h b/arch/powerpc/include/uapi/asm/cputable.h
index 4d877144f377..50bcb4295de4 100644
--- a/arch/powerpc/include/uapi/asm/cputable.h
+++ b/arch/powerpc/include/uapi/asm/cputable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ASM_POWERPC_CPUTABLE_H
#define _UAPI__ASM_POWERPC_CPUTABLE_H
diff --git a/arch/powerpc/include/uapi/asm/eeh.h b/arch/powerpc/include/uapi/asm/eeh.h
index 291b7d1814a6..28186071fafc 100644
--- a/arch/powerpc/include/uapi/asm/eeh.h
+++ b/arch/powerpc/include/uapi/asm/eeh.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2, as
diff --git a/arch/powerpc/include/uapi/asm/elf.h b/arch/powerpc/include/uapi/asm/elf.h
index b2c6fdd5ac30..5f201d40bcca 100644
--- a/arch/powerpc/include/uapi/asm/elf.h
+++ b/arch/powerpc/include/uapi/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* ELF register definitions..
*
diff --git a/arch/powerpc/include/uapi/asm/epapr_hcalls.h b/arch/powerpc/include/uapi/asm/epapr_hcalls.h
index b4504f394427..90a0ee6d0bb3 100644
--- a/arch/powerpc/include/uapi/asm/epapr_hcalls.h
+++ b/arch/powerpc/include/uapi/asm/epapr_hcalls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* ePAPR hcall interface
*
diff --git a/arch/powerpc/include/uapi/asm/errno.h b/arch/powerpc/include/uapi/asm/errno.h
index e8b6b5f7de7c..cc79856896a1 100644
--- a/arch/powerpc/include/uapi/asm/errno.h
+++ b/arch/powerpc/include/uapi/asm/errno.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_ERRNO_H
#define _ASM_POWERPC_ERRNO_H
diff --git a/arch/powerpc/include/uapi/asm/fcntl.h b/arch/powerpc/include/uapi/asm/fcntl.h
index ce5c4516d404..65ce08322a89 100644
--- a/arch/powerpc/include/uapi/asm/fcntl.h
+++ b/arch/powerpc/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_FCNTL_H
#define _ASM_FCNTL_H
diff --git a/arch/powerpc/include/uapi/asm/ioctl.h b/arch/powerpc/include/uapi/asm/ioctl.h
index 57d68304218b..d623af4b9cd6 100644
--- a/arch/powerpc/include/uapi/asm/ioctl.h
+++ b/arch/powerpc/include/uapi/asm/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_IOCTL_H
#define _ASM_POWERPC_IOCTL_H
diff --git a/arch/powerpc/include/uapi/asm/ioctls.h b/arch/powerpc/include/uapi/asm/ioctls.h
index e3b10469f787..41b1a5c15734 100644
--- a/arch/powerpc/include/uapi/asm/ioctls.h
+++ b/arch/powerpc/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_IOCTLS_H
#define _ASM_POWERPC_IOCTLS_H
diff --git a/arch/powerpc/include/uapi/asm/ipcbuf.h b/arch/powerpc/include/uapi/asm/ipcbuf.h
index 2c3e1d94db1d..21e1e0ec0ba2 100644
--- a/arch/powerpc/include/uapi/asm/ipcbuf.h
+++ b/arch/powerpc/include/uapi/asm/ipcbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_IPCBUF_H
#define _ASM_POWERPC_IPCBUF_H
diff --git a/arch/powerpc/include/uapi/asm/kvm.h b/arch/powerpc/include/uapi/asm/kvm.h
index 8cf8f0c96906..61d6049f4c1e 100644
--- a/arch/powerpc/include/uapi/asm/kvm.h
+++ b/arch/powerpc/include/uapi/asm/kvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2, as
diff --git a/arch/powerpc/include/uapi/asm/kvm_para.h b/arch/powerpc/include/uapi/asm/kvm_para.h
index 91e42f09b323..01555c6ae0f5 100644
--- a/arch/powerpc/include/uapi/asm/kvm_para.h
+++ b/arch/powerpc/include/uapi/asm/kvm_para.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2, as
diff --git a/arch/powerpc/include/uapi/asm/mman.h b/arch/powerpc/include/uapi/asm/mman.h
index 03c06ba7464f..e63bc37e33af 100644
--- a/arch/powerpc/include/uapi/asm/mman.h
+++ b/arch/powerpc/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
diff --git a/arch/powerpc/include/uapi/asm/msgbuf.h b/arch/powerpc/include/uapi/asm/msgbuf.h
index dd76743c7537..65beb0942500 100644
--- a/arch/powerpc/include/uapi/asm/msgbuf.h
+++ b/arch/powerpc/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_MSGBUF_H
#define _ASM_POWERPC_MSGBUF_H
diff --git a/arch/powerpc/include/uapi/asm/nvram.h b/arch/powerpc/include/uapi/asm/nvram.h
index 608bdc8aedd1..c92c7f056a91 100644
--- a/arch/powerpc/include/uapi/asm/nvram.h
+++ b/arch/powerpc/include/uapi/asm/nvram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* NVRAM definitions and access functions.
*
diff --git a/arch/powerpc/include/uapi/asm/opal-prd.h b/arch/powerpc/include/uapi/asm/opal-prd.h
index 319ff4a26158..1869cf83a870 100644
--- a/arch/powerpc/include/uapi/asm/opal-prd.h
+++ b/arch/powerpc/include/uapi/asm/opal-prd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* OPAL Runtime Diagnostics interface driver
* Supported on POWERNV platform
diff --git a/arch/powerpc/include/uapi/asm/perf_event.h b/arch/powerpc/include/uapi/asm/perf_event.h
index 80a4d40cf5bc..ce488e48db44 100644
--- a/arch/powerpc/include/uapi/asm/perf_event.h
+++ b/arch/powerpc/include/uapi/asm/perf_event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2013 Michael Ellerman, IBM Corp.
*
diff --git a/arch/powerpc/include/uapi/asm/perf_regs.h b/arch/powerpc/include/uapi/asm/perf_regs.h
index 6a93209748a1..9e52c86ccbd3 100644
--- a/arch/powerpc/include/uapi/asm/perf_regs.h
+++ b/arch/powerpc/include/uapi/asm/perf_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_POWERPC_PERF_REGS_H
#define _UAPI_ASM_POWERPC_PERF_REGS_H
diff --git a/arch/powerpc/include/uapi/asm/posix_types.h b/arch/powerpc/include/uapi/asm/posix_types.h
index 2958c5b97b2d..f698400e4bb0 100644
--- a/arch/powerpc/include/uapi/asm/posix_types.h
+++ b/arch/powerpc/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_POSIX_TYPES_H
#define _ASM_POWERPC_POSIX_TYPES_H
diff --git a/arch/powerpc/include/uapi/asm/ps3fb.h b/arch/powerpc/include/uapi/asm/ps3fb.h
index e7233a849680..fd7e3a0d35d5 100644
--- a/arch/powerpc/include/uapi/asm/ps3fb.h
+++ b/arch/powerpc/include/uapi/asm/ps3fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2006 Sony Computer Entertainment Inc.
* Copyright 2006, 2007 Sony Corporation
diff --git a/arch/powerpc/include/uapi/asm/ptrace.h b/arch/powerpc/include/uapi/asm/ptrace.h
index 8036b385417d..5e3edc2a7634 100644
--- a/arch/powerpc/include/uapi/asm/ptrace.h
+++ b/arch/powerpc/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2001 PPC64 Team, IBM Corp
*
diff --git a/arch/powerpc/include/uapi/asm/sembuf.h b/arch/powerpc/include/uapi/asm/sembuf.h
index 99a41938ae3d..8f393d60f02d 100644
--- a/arch/powerpc/include/uapi/asm/sembuf.h
+++ b/arch/powerpc/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_SEMBUF_H
#define _ASM_POWERPC_SEMBUF_H
diff --git a/arch/powerpc/include/uapi/asm/setup.h b/arch/powerpc/include/uapi/asm/setup.h
index ae3fb68cb28e..c54940b09d06 100644
--- a/arch/powerpc/include/uapi/asm/setup.h
+++ b/arch/powerpc/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_POWERPC_SETUP_H
#define _UAPI_ASM_POWERPC_SETUP_H
diff --git a/arch/powerpc/include/uapi/asm/shmbuf.h b/arch/powerpc/include/uapi/asm/shmbuf.h
index 8efa39698b6c..deb1c3e503d3 100644
--- a/arch/powerpc/include/uapi/asm/shmbuf.h
+++ b/arch/powerpc/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_SHMBUF_H
#define _ASM_POWERPC_SHMBUF_H
diff --git a/arch/powerpc/include/uapi/asm/sigcontext.h b/arch/powerpc/include/uapi/asm/sigcontext.h
index 3ad0c7f001a9..2fbe485acdb4 100644
--- a/arch/powerpc/include/uapi/asm/sigcontext.h
+++ b/arch/powerpc/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_SIGCONTEXT_H
#define _ASM_POWERPC_SIGCONTEXT_H
diff --git a/arch/powerpc/include/uapi/asm/siginfo.h b/arch/powerpc/include/uapi/asm/siginfo.h
index ccce3ef5cd86..1a691141e49f 100644
--- a/arch/powerpc/include/uapi/asm/siginfo.h
+++ b/arch/powerpc/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_SIGINFO_H
#define _ASM_POWERPC_SIGINFO_H
diff --git a/arch/powerpc/include/uapi/asm/signal.h b/arch/powerpc/include/uapi/asm/signal.h
index 6c69ee94fd8d..85b0a7aa43e7 100644
--- a/arch/powerpc/include/uapi/asm/signal.h
+++ b/arch/powerpc/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_POWERPC_SIGNAL_H
#define _UAPI_ASM_POWERPC_SIGNAL_H
diff --git a/arch/powerpc/include/uapi/asm/socket.h b/arch/powerpc/include/uapi/asm/socket.h
index 3c590c7c42c0..94de465e0920 100644
--- a/arch/powerpc/include/uapi/asm/socket.h
+++ b/arch/powerpc/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_SOCKET_H
#define _ASM_POWERPC_SOCKET_H
diff --git a/arch/powerpc/include/uapi/asm/spu_info.h b/arch/powerpc/include/uapi/asm/spu_info.h
index ed071bf97707..cabfcbba9eac 100644
--- a/arch/powerpc/include/uapi/asm/spu_info.h
+++ b/arch/powerpc/include/uapi/asm/spu_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* SPU info structures
*
diff --git a/arch/powerpc/include/uapi/asm/stat.h b/arch/powerpc/include/uapi/asm/stat.h
index 84880b80cc1c..afd25f2ff4e8 100644
--- a/arch/powerpc/include/uapi/asm/stat.h
+++ b/arch/powerpc/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_STAT_H
#define _ASM_POWERPC_STAT_H
/*
diff --git a/arch/powerpc/include/uapi/asm/swab.h b/arch/powerpc/include/uapi/asm/swab.h
index b6c368aa5c05..17b16c44d20c 100644
--- a/arch/powerpc/include/uapi/asm/swab.h
+++ b/arch/powerpc/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
diff --git a/arch/powerpc/include/uapi/asm/termbits.h b/arch/powerpc/include/uapi/asm/termbits.h
index 549d700e18f2..ed18bc61f63d 100644
--- a/arch/powerpc/include/uapi/asm/termbits.h
+++ b/arch/powerpc/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_TERMBITS_H
#define _ASM_POWERPC_TERMBITS_H
diff --git a/arch/powerpc/include/uapi/asm/termios.h b/arch/powerpc/include/uapi/asm/termios.h
index 6cca5cdfec04..5d07fc89bcb6 100644
--- a/arch/powerpc/include/uapi/asm/termios.h
+++ b/arch/powerpc/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Liberally adapted from alpha/termios.h. In particular, the c_cc[]
* fields have been reordered so that termio & termios share the
diff --git a/arch/powerpc/include/uapi/asm/tm.h b/arch/powerpc/include/uapi/asm/tm.h
index 5047659815a5..e1bf0e2fac43 100644
--- a/arch/powerpc/include/uapi/asm/tm.h
+++ b/arch/powerpc/include/uapi/asm/tm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_TM_H
#define _ASM_POWERPC_TM_H
diff --git a/arch/powerpc/include/uapi/asm/types.h b/arch/powerpc/include/uapi/asm/types.h
index 4b8ab990a3c1..327616fb70e4 100644
--- a/arch/powerpc/include/uapi/asm/types.h
+++ b/arch/powerpc/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* This file is never included by application software unless
* explicitly requested (e.g., via linux/types.h) in which case the
diff --git a/arch/powerpc/include/uapi/asm/ucontext.h b/arch/powerpc/include/uapi/asm/ucontext.h
index d9a4ddf0cc86..6f14a96d4985 100644
--- a/arch/powerpc/include/uapi/asm/ucontext.h
+++ b/arch/powerpc/include/uapi/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_POWERPC_UCONTEXT_H
#define _ASM_POWERPC_UCONTEXT_H
diff --git a/arch/powerpc/include/uapi/asm/unistd.h b/arch/powerpc/include/uapi/asm/unistd.h
index b85f14228857..df8684f31919 100644
--- a/arch/powerpc/include/uapi/asm/unistd.h
+++ b/arch/powerpc/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* This file contains the system call numbers.
*
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 91960f83039c..6c6cce937dd8 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/powerpc/kernel/align.c b/arch/powerpc/kernel/align.c
index 26b9994d27ee..3e6c0744c174 100644
--- a/arch/powerpc/kernel/align.c
+++ b/arch/powerpc/kernel/align.c
@@ -332,7 +332,7 @@ int fix_alignment(struct pt_regs *regs)
* when pasting to a co-processor. Furthermore, paste_last is the
* synchronisation point for preceding copy/paste sequences.
*/
- if ((instr & 0xfc0006fe) == PPC_INST_COPY)
+ if ((instr & 0xfc0006fe) == (PPC_INST_COPY & 0xfc0006fe))
return -EIO;
r = analyse_instr(&op, regs, instr);
@@ -341,7 +341,7 @@ int fix_alignment(struct pt_regs *regs)
type = op.type & INSTR_TYPE_MASK;
if (!OP_IS_LOAD_STORE(type)) {
- if (type != CACHEOP + DCBZ)
+ if (op.type != CACHEOP + DCBZ)
return -EINVAL;
PPC_WARN_ALIGNMENT(dcbz, regs);
r = emulate_dcbz(op.ea, regs);
diff --git a/arch/powerpc/kernel/audit.c b/arch/powerpc/kernel/audit.c
index a4dab7cab348..a2dddd7f3d09 100644
--- a/arch/powerpc/kernel/audit.c
+++ b/arch/powerpc/kernel/audit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/types.h>
#include <linux/audit.h>
diff --git a/arch/powerpc/kernel/btext.c b/arch/powerpc/kernel/btext.c
index 3f46ca1c59f9..6537cba1a758 100644
--- a/arch/powerpc/kernel/btext.c
+++ b/arch/powerpc/kernel/btext.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Procedures for drawing on the screen early on in the boot process.
*
diff --git a/arch/powerpc/kernel/cacheinfo.h b/arch/powerpc/kernel/cacheinfo.h
index a7b74d36acd7..955f5e999f1b 100644
--- a/arch/powerpc/kernel/cacheinfo.h
+++ b/arch/powerpc/kernel/cacheinfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_CACHEINFO_H
#define _PPC_CACHEINFO_H
diff --git a/arch/powerpc/kernel/compat_audit.c b/arch/powerpc/kernel/compat_audit.c
index 108ff14e2122..55c6ccda0a85 100644
--- a/arch/powerpc/kernel/compat_audit.c
+++ b/arch/powerpc/kernel/compat_audit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#undef __powerpc64__
#include <asm/unistd.h>
diff --git a/arch/powerpc/kernel/dma-iommu.c b/arch/powerpc/kernel/dma-iommu.c
index 8f7abf9baa63..66f33e7f8d40 100644
--- a/arch/powerpc/kernel/dma-iommu.c
+++ b/arch/powerpc/kernel/dma-iommu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corporation
*
diff --git a/arch/powerpc/kernel/dt_cpu_ftrs.c b/arch/powerpc/kernel/dt_cpu_ftrs.c
index 1df770e8cbe0..7275fed271af 100644
--- a/arch/powerpc/kernel/dt_cpu_ftrs.c
+++ b/arch/powerpc/kernel/dt_cpu_ftrs.c
@@ -102,10 +102,10 @@ static void cpufeatures_flush_tlb(void)
case PVR_POWER8:
case PVR_POWER8E:
case PVR_POWER8NVL:
- __flush_tlb_power8(POWER8_TLB_SETS);
+ __flush_tlb_power8(TLB_INVAL_SCOPE_GLOBAL);
break;
case PVR_POWER9:
- __flush_tlb_power9(POWER9_TLB_SETS_HASH);
+ __flush_tlb_power9(TLB_INVAL_SCOPE_GLOBAL);
break;
default:
pr_err("unknown CPU version for boot TLB flush\n");
diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c
index 9e816787c0d4..116000b45531 100644
--- a/arch/powerpc/kernel/eeh.c
+++ b/arch/powerpc/kernel/eeh.c
@@ -1019,6 +1019,10 @@ int eeh_init(void)
} else if ((ret = eeh_ops->init()))
return ret;
+ /* Initialize PHB PEs */
+ list_for_each_entry_safe(hose, tmp, &hose_list, list_node)
+ eeh_dev_phb_init_dynamic(hose);
+
/* Initialize EEH event */
ret = eeh_event_init();
if (ret)
diff --git a/arch/powerpc/kernel/eeh_dev.c b/arch/powerpc/kernel/eeh_dev.c
index ad04ecd63c20..a34e6912c15e 100644
--- a/arch/powerpc/kernel/eeh_dev.c
+++ b/arch/powerpc/kernel/eeh_dev.c
@@ -78,21 +78,3 @@ void eeh_dev_phb_init_dynamic(struct pci_controller *phb)
/* EEH PE for PHB */
eeh_phb_pe_create(phb);
}
-
-/**
- * eeh_dev_phb_init - Create EEH devices for devices included in existing PHBs
- *
- * Scan all the existing PHBs and create EEH devices for their OF
- * nodes and their children OF nodes
- */
-static int __init eeh_dev_phb_init(void)
-{
- struct pci_controller *phb, *tmp;
-
- list_for_each_entry_safe(phb, tmp, &hose_list, list_node)
- eeh_dev_phb_init_dynamic(phb);
-
- return 0;
-}
-
-core_initcall(eeh_dev_phb_init);
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index 48da0f5d2f7f..1c80bd292e48 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains the 64-bit "server" PowerPC variant
* of the low level exception handling including exception
@@ -734,7 +735,29 @@ EXC_REAL(program_check, 0x700, 0x100)
EXC_VIRT(program_check, 0x4700, 0x100, 0x700)
TRAMP_KVM(PACA_EXGEN, 0x700)
EXC_COMMON_BEGIN(program_check_common)
- EXCEPTION_PROLOG_COMMON(0x700, PACA_EXGEN)
+ /*
+ * It's possible to receive a TM Bad Thing type program check with
+ * userspace register values (in particular r1), but with SRR1 reporting
+ * that we came from the kernel. Normally that would confuse the bad
+ * stack logic, and we would report a bad kernel stack pointer. Instead
+ * we switch to the emergency stack if we're taking a TM Bad Thing from
+ * the kernel.
+ */
+ li r10,MSR_PR /* Build a mask of MSR_PR .. */
+ oris r10,r10,0x200000@h /* .. and SRR1_PROGTM */
+ and r10,r10,r12 /* Mask SRR1 with that. */
+ srdi r10,r10,8 /* Shift it so we can compare */
+ cmpldi r10,(0x200000 >> 8) /* .. with an immediate. */
+ bne 1f /* If != go to normal path. */
+
+ /* SRR1 had PR=0 and SRR1_PROGTM=1, so use the emergency stack */
+ andi. r10,r12,MSR_PR; /* Set CR0 correctly for label */
+ /* 3 in EXCEPTION_PROLOG_COMMON */
+ mr r10,r1 /* Save r1 */
+ ld r1,PACAEMERGSP(r13) /* Use emergency stack */
+ subi r1,r1,INT_FRAME_SIZE /* alloc stack frame */
+ b 3f /* Jump into the macro !! */
+1: EXCEPTION_PROLOG_COMMON(0x700, PACA_EXGEN)
bl save_nvgprs
RECONCILE_IRQ_STATE(r10, r11)
addi r3,r1,STACK_FRAME_OVERHEAD
diff --git a/arch/powerpc/kernel/fsl_booke_entry_mapping.S b/arch/powerpc/kernel/fsl_booke_entry_mapping.S
index 83dd0f6776b3..ea065282b303 100644
--- a/arch/powerpc/kernel/fsl_booke_entry_mapping.S
+++ b/arch/powerpc/kernel/fsl_booke_entry_mapping.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* 1. Find the index of the entry we're executing in */
bl invstr /* Find our address */
diff --git a/arch/powerpc/kernel/head_booke.h b/arch/powerpc/kernel/head_booke.h
index a620203f7de3..d0862a100d29 100644
--- a/arch/powerpc/kernel/head_booke.h
+++ b/arch/powerpc/kernel/head_booke.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __HEAD_BOOKE_H__
#define __HEAD_BOOKE_H__
diff --git a/arch/powerpc/kernel/iomap.c b/arch/powerpc/kernel/iomap.c
index a1854d1ded8b..aab456ed2a00 100644
--- a/arch/powerpc/kernel/iomap.c
+++ b/arch/powerpc/kernel/iomap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ppc64 "iomap" interface implementation.
*
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c
index 367494dc67d9..bebc3007a793 100644
--- a/arch/powerpc/kernel/kprobes.c
+++ b/arch/powerpc/kernel/kprobes.c
@@ -600,7 +600,12 @@ NOKPROBE_SYMBOL(kprobe_fault_handler);
unsigned long arch_deref_entry_point(void *entry)
{
- return ppc_global_function_entry(entry);
+#ifdef PPC64_ELF_ABI_v1
+ if (!kernel_text_address((unsigned long)entry))
+ return ppc_global_function_entry(entry);
+ else
+#endif
+ return (unsigned long)entry;
}
NOKPROBE_SYMBOL(arch_deref_entry_point);
diff --git a/arch/powerpc/kernel/legacy_serial.c b/arch/powerpc/kernel/legacy_serial.c
index 5e5a64a8b4e4..33b34a58fc62 100644
--- a/arch/powerpc/kernel/legacy_serial.c
+++ b/arch/powerpc/kernel/legacy_serial.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/serial.h>
#include <linux/serial_8250.h>
diff --git a/arch/powerpc/kernel/mce_power.c b/arch/powerpc/kernel/mce_power.c
index b76ca198e09c..72f153c6f3fa 100644
--- a/arch/powerpc/kernel/mce_power.c
+++ b/arch/powerpc/kernel/mce_power.c
@@ -624,5 +624,18 @@ long __machine_check_early_realmode_p8(struct pt_regs *regs)
long __machine_check_early_realmode_p9(struct pt_regs *regs)
{
+ /*
+ * On POWER9 DD2.1 and below, it's possible to get a machine check
+ * caused by a paste instruction where only DSISR bit 25 is set. This
+ * will result in the MCE handler seeing an unknown event and the kernel
+ * crashing. An MCE that occurs like this is spurious, so we don't need
+ * to do anything in terms of servicing it. If there is something that
+ * needs to be serviced, the CPU will raise the MCE again with the
+ * correct DSISR so that it can be serviced properly. So detect this
+ * case and mark it as handled.
+ */
+ if (SRR1_MC_LOADSTORE(regs->msr) && regs->dsisr == 0x02000000)
+ return 1;
+
return mce_handle_error(regs, mce_p9_derror_table, mce_p9_ierror_table);
}
diff --git a/arch/powerpc/kernel/optprobes.c b/arch/powerpc/kernel/optprobes.c
index 6f8273f5e988..91e037ab20a1 100644
--- a/arch/powerpc/kernel/optprobes.c
+++ b/arch/powerpc/kernel/optprobes.c
@@ -104,8 +104,10 @@ static unsigned long can_optimize(struct kprobe *p)
* and that can be emulated.
*/
if (!is_conditional_branch(*p->ainsn.insn) &&
- analyse_instr(&op, &regs, *p->ainsn.insn))
+ analyse_instr(&op, &regs, *p->ainsn.insn) == 1) {
+ emulate_update_regs(&regs, &op);
nip = regs.nip;
+ }
return nip;
}
diff --git a/arch/powerpc/kernel/prom_parse.c b/arch/powerpc/kernel/prom_parse.c
index 6295e646f78c..9cb7f88df563 100644
--- a/arch/powerpc/kernel/prom_parse.c
+++ b/arch/powerpc/kernel/prom_parse.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#undef DEBUG
#include <linux/kernel.h>
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
index 07cd22e35405..f52ad5bb7109 100644
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -131,7 +131,7 @@ static void flush_tmregs_to_thread(struct task_struct *tsk)
* in the appropriate thread structures from live.
*/
- if (tsk != current)
+ if ((!cpu_has_feature(CPU_FTR_TM)) || (tsk != current))
return;
if (MSR_TM_SUSPENDED(mfmsr())) {
diff --git a/arch/powerpc/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c
index df56dfc4b681..c8c5f3a550c2 100644
--- a/arch/powerpc/kernel/rtas-proc.c
+++ b/arch/powerpc/kernel/rtas-proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2000 Tilmann Bitterberg
* (tilmann@bitterberg.de)
diff --git a/arch/powerpc/kernel/rtas-rtc.c b/arch/powerpc/kernel/rtas-rtc.c
index c57c19358a26..49600985c7ef 100644
--- a/arch/powerpc/kernel/rtas-rtc.c
+++ b/arch/powerpc/kernel/rtas-rtc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/time.h>
#include <linux/timer.h>
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
index b8a4987f58cf..1643e9e53655 100644
--- a/arch/powerpc/kernel/rtas.c
+++ b/arch/powerpc/kernel/rtas.c
@@ -914,7 +914,7 @@ int rtas_online_cpus_mask(cpumask_var_t cpus)
if (ret) {
cpumask_var_t tmp_mask;
- if (!alloc_cpumask_var(&tmp_mask, GFP_TEMPORARY))
+ if (!alloc_cpumask_var(&tmp_mask, GFP_KERNEL))
return ret;
/* Use tmp_mask to preserve cpus mask from first failure */
@@ -962,7 +962,7 @@ int rtas_ibm_suspend_me(u64 handle)
return -EIO;
}
- if (!alloc_cpumask_var(&offline_mask, GFP_TEMPORARY))
+ if (!alloc_cpumask_var(&offline_mask, GFP_KERNEL))
return -ENOMEM;
atomic_set(&data.working, 0);
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
index 0ac741fae90e..2e3bc16d02b2 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -904,9 +904,6 @@ void __init setup_arch(char **cmdline_p)
#endif
#endif
-#ifdef CONFIG_PPC_64K_PAGES
- init_mm.context.pte_frag = NULL;
-#endif
#ifdef CONFIG_SPAPR_TCE_IOMMU
mm_iommu_init(&init_mm);
#endif
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
index c83c115858c1..b2c002993d78 100644
--- a/arch/powerpc/kernel/signal_64.c
+++ b/arch/powerpc/kernel/signal_64.c
@@ -452,9 +452,20 @@ static long restore_tm_sigcontexts(struct task_struct *tsk,
if (MSR_TM_RESV(msr))
return -EINVAL;
- /* pull in MSR TM from user context */
+ /* pull in MSR TS bits from user context */
regs->msr = (regs->msr & ~MSR_TS_MASK) | (msr & MSR_TS_MASK);
+ /*
+ * Ensure that TM is enabled in regs->msr before we leave the signal
+ * handler. It could be the case that (a) user disabled the TM bit
+ * through the manipulation of the MSR bits in uc_mcontext or (b) the
+ * TM bit was disabled because a sufficient number of context switches
+ * happened whilst in the signal handler and load_tm overflowed,
+ * disabling the TM bit. In either case we can end up with an illegal
+ * TM state leading to a TM Bad Thing when we return to userspace.
+ */
+ regs->msr |= MSR_TM;
+
/* pull in MSR LE from user context */
regs->msr = (regs->msr & ~MSR_LE) | (msr & MSR_LE);
diff --git a/arch/powerpc/kernel/smp-tbsync.c b/arch/powerpc/kernel/smp-tbsync.c
index 7a37ecd3afa3..21c39355b25e 100644
--- a/arch/powerpc/kernel/smp-tbsync.c
+++ b/arch/powerpc/kernel/smp-tbsync.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Smp timebase synchronization for ppc.
*
diff --git a/arch/powerpc/kernel/swsusp_32.S b/arch/powerpc/kernel/swsusp_32.S
index ba4dee3d233f..34b73a262709 100644
--- a/arch/powerpc/kernel/swsusp_32.S
+++ b/arch/powerpc/kernel/swsusp_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/threads.h>
#include <asm/processor.h>
#include <asm/page.h>
diff --git a/arch/powerpc/kernel/swsusp_booke.S b/arch/powerpc/kernel/swsusp_booke.S
index 553c1405ee05..88cfdbd530f1 100644
--- a/arch/powerpc/kernel/swsusp_booke.S
+++ b/arch/powerpc/kernel/swsusp_booke.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Based on swsusp_32.S, modified for FSL BookE by
* Anton Vorontsov <avorontsov@ru.mvista.com>
diff --git a/arch/powerpc/kernel/tau_6xx.c b/arch/powerpc/kernel/tau_6xx.c
index a753b72efbc0..a3374e8a258c 100644
--- a/arch/powerpc/kernel/tau_6xx.c
+++ b/arch/powerpc/kernel/tau_6xx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* temp.c Thermal management for cpu's with Thermal Assist Units
*
diff --git a/arch/powerpc/kernel/tm.S b/arch/powerpc/kernel/tm.S
index c4ba37822ba0..1da12f521cb7 100644
--- a/arch/powerpc/kernel/tm.S
+++ b/arch/powerpc/kernel/tm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Transactional memory support routines to reclaim and recheckpoint
* transactional process state.
diff --git a/arch/powerpc/kernel/trace/Makefile b/arch/powerpc/kernel/trace/Makefile
index 729dffc5f7bc..d22d8bafb643 100644
--- a/arch/powerpc/kernel/trace/Makefile
+++ b/arch/powerpc/kernel/trace/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the powerpc trace subsystem
#
diff --git a/arch/powerpc/kernel/trace/ftrace.c b/arch/powerpc/kernel/trace/ftrace.c
index 32509de6ce4c..4741fe112f05 100644
--- a/arch/powerpc/kernel/trace/ftrace.c
+++ b/arch/powerpc/kernel/trace/ftrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Code for replacing ftrace calls with jumps.
*
diff --git a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
index c98e90b4ea7b..b4e2b7165f79 100644
--- a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
+++ b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
@@ -181,34 +181,25 @@ _GLOBAL(ftrace_stub)
* - we have no stack frame and can not allocate one
* - LR points back to the original caller (in A)
* - CTR holds the new NIP in C
- * - r0 & r12 are free
- *
- * r0 can't be used as the base register for a DS-form load or store, so
- * we temporarily shuffle r1 (stack pointer) into r0 and then put it back.
+ * - r0, r11 & r12 are free
*/
livepatch_handler:
CURRENT_THREAD_INFO(r12, r1)
- /* Save stack pointer into r0 */
- mr r0, r1
-
/* Allocate 3 x 8 bytes */
- ld r1, TI_livepatch_sp(r12)
- addi r1, r1, 24
- std r1, TI_livepatch_sp(r12)
+ ld r11, TI_livepatch_sp(r12)
+ addi r11, r11, 24
+ std r11, TI_livepatch_sp(r12)
/* Save toc & real LR on livepatch stack */
- std r2, -24(r1)
+ std r2, -24(r11)
mflr r12
- std r12, -16(r1)
+ std r12, -16(r11)
/* Store stack end marker */
lis r12, STACK_END_MAGIC@h
ori r12, r12, STACK_END_MAGIC@l
- std r12, -8(r1)
-
- /* Restore real stack pointer */
- mr r1, r0
+ std r12, -8(r11)
/* Put ctr in r12 for global entry and branch there */
mfctr r12
@@ -216,36 +207,30 @@ livepatch_handler:
/*
* Now we are returning from the patched function to the original
- * caller A. We are free to use r0 and r12, and we can use r2 until we
+ * caller A. We are free to use r11, r12 and we can use r2 until we
* restore it.
*/
CURRENT_THREAD_INFO(r12, r1)
- /* Save stack pointer into r0 */
- mr r0, r1
-
- ld r1, TI_livepatch_sp(r12)
+ ld r11, TI_livepatch_sp(r12)
/* Check stack marker hasn't been trashed */
lis r2, STACK_END_MAGIC@h
ori r2, r2, STACK_END_MAGIC@l
- ld r12, -8(r1)
+ ld r12, -8(r11)
1: tdne r12, r2
EMIT_BUG_ENTRY 1b, __FILE__, __LINE__ - 1, 0
/* Restore LR & toc from livepatch stack */
- ld r12, -16(r1)
+ ld r12, -16(r11)
mtlr r12
- ld r2, -24(r1)
+ ld r2, -24(r11)
/* Pop livepatch stack frame */
- CURRENT_THREAD_INFO(r12, r0)
- subi r1, r1, 24
- std r1, TI_livepatch_sp(r12)
-
- /* Restore real stack pointer */
- mr r1, r0
+ CURRENT_THREAD_INFO(r12, r1)
+ subi r11, r11, 24
+ std r11, TI_livepatch_sp(r12)
/* Return to original caller of live patched function */
blr
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index ec74e203ee04..13c9dcdcba69 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -437,6 +437,7 @@ static inline int check_io_access(struct pt_regs *regs)
int machine_check_e500mc(struct pt_regs *regs)
{
unsigned long mcsr = mfspr(SPRN_MCSR);
+ unsigned long pvr = mfspr(SPRN_PVR);
unsigned long reason = mcsr;
int recoverable = 1;
@@ -478,8 +479,15 @@ int machine_check_e500mc(struct pt_regs *regs)
* may still get logged and cause a machine check. We should
* only treat the non-write shadow case as non-recoverable.
*/
- if (!(mfspr(SPRN_L1CSR2) & L1CSR2_DCWS))
- recoverable = 0;
+ /* On e6500 core, L1 DCWS (Data cache write shadow mode) bit
+ * is not implemented but L1 data cache always runs in write
+ * shadow mode. Hence on data cache parity errors HW will
+ * automatically invalidate the L1 Data Cache.
+ */
+ if (PVR_VER(pvr) != PVR_VER_E6500) {
+ if (!(mfspr(SPRN_L1CSR2) & L1CSR2_DCWS))
+ recoverable = 0;
+ }
}
if (reason & MCSR_L2MMU_MHIT) {
diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile
index 78a7449bf489..b8c434d1d459 100644
--- a/arch/powerpc/kernel/vdso32/Makefile
+++ b/arch/powerpc/kernel/vdso32/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# List of files in the vdso, has to be asm only for now
diff --git a/arch/powerpc/kernel/vdso32/vdso32.lds.S b/arch/powerpc/kernel/vdso32/vdso32.lds.S
index e58ee10fa5c0..099a6db14e67 100644
--- a/arch/powerpc/kernel/vdso32/vdso32.lds.S
+++ b/arch/powerpc/kernel/vdso32/vdso32.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is the infamous ld script for the 32 bits vdso
* library
diff --git a/arch/powerpc/kernel/vdso32/vdso32_wrapper.S b/arch/powerpc/kernel/vdso32/vdso32_wrapper.S
index 6ac107ac402a..3f5ef035b0a9 100644
--- a/arch/powerpc/kernel/vdso32/vdso32_wrapper.S
+++ b/arch/powerpc/kernel/vdso32/vdso32_wrapper.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/page.h>
diff --git a/arch/powerpc/kernel/vdso64/Makefile b/arch/powerpc/kernel/vdso64/Makefile
index 31107bf5a61f..69cecb346269 100644
--- a/arch/powerpc/kernel/vdso64/Makefile
+++ b/arch/powerpc/kernel/vdso64/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# List of files in the vdso, has to be asm only for now
obj-vdso64 = sigtramp.o gettimeofday.o datapage.o cacheflush.o note.o getcpu.o
diff --git a/arch/powerpc/kernel/vdso64/vdso64.lds.S b/arch/powerpc/kernel/vdso64/vdso64.lds.S
index 64fb183a47c2..256fb9720298 100644
--- a/arch/powerpc/kernel/vdso64/vdso64.lds.S
+++ b/arch/powerpc/kernel/vdso64/vdso64.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is the infamous ld script for the 64 bits vdso
* library
diff --git a/arch/powerpc/kernel/vdso64/vdso64_wrapper.S b/arch/powerpc/kernel/vdso64/vdso64_wrapper.S
index df60fca6a13d..1d56d81fe3b3 100644
--- a/arch/powerpc/kernel/vdso64/vdso64_wrapper.S
+++ b/arch/powerpc/kernel/vdso64/vdso64_wrapper.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/page.h>
diff --git a/arch/powerpc/kernel/vecemu.c b/arch/powerpc/kernel/vecemu.c
index 2d8f6d8ccafc..8812085883fd 100644
--- a/arch/powerpc/kernel/vecemu.c
+++ b/arch/powerpc/kernel/vecemu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Routines to emulate some Altivec/VMX instructions, specifically
* those that can trap when given denormalized operands in Java mode.
diff --git a/arch/powerpc/kernel/vector.S b/arch/powerpc/kernel/vector.S
index 0c123f3406cd..f314fd475491 100644
--- a/arch/powerpc/kernel/vector.S
+++ b/arch/powerpc/kernel/vector.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/processor.h>
#include <asm/ppc_asm.h>
#include <asm/reg.h>
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 882628fa6987..0494e1566ee2 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_PPC64
#define PROVIDE32(x) PROVIDE(__unused__##x)
#else
diff --git a/arch/powerpc/kernel/watchdog.c b/arch/powerpc/kernel/watchdog.c
index 2f6eadd9408d..57190f384f63 100644
--- a/arch/powerpc/kernel/watchdog.c
+++ b/arch/powerpc/kernel/watchdog.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Watchdog support on powerpc systems.
*
@@ -310,9 +311,6 @@ static int start_wd_on_cpu(unsigned int cpu)
if (!(watchdog_enabled & NMI_WATCHDOG_ENABLED))
return 0;
- if (watchdog_suspended)
- return 0;
-
if (!cpumask_test_cpu(cpu, &watchdog_cpumask))
return 0;
@@ -358,36 +356,39 @@ static void watchdog_calc_timeouts(void)
wd_timer_period_ms = watchdog_thresh * 1000 * 2 / 5;
}
-void watchdog_nmi_reconfigure(void)
+void watchdog_nmi_stop(void)
{
int cpu;
- watchdog_calc_timeouts();
-
for_each_cpu(cpu, &wd_cpus_enabled)
stop_wd_on_cpu(cpu);
+}
+void watchdog_nmi_start(void)
+{
+ int cpu;
+
+ watchdog_calc_timeouts();
for_each_cpu_and(cpu, cpu_online_mask, &watchdog_cpumask)
start_wd_on_cpu(cpu);
}
/*
- * This runs after lockup_detector_init() which sets up watchdog_cpumask.
+ * Invoked from core watchdog init.
*/
-static int __init powerpc_watchdog_init(void)
+int __init watchdog_nmi_probe(void)
{
int err;
- watchdog_calc_timeouts();
-
- err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "powerpc/watchdog:online",
- start_wd_on_cpu, stop_wd_on_cpu);
- if (err < 0)
+ err = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN,
+ "powerpc/watchdog:online",
+ start_wd_on_cpu, stop_wd_on_cpu);
+ if (err < 0) {
pr_warn("Watchdog could not be initialized");
-
+ return err;
+ }
return 0;
}
-arch_initcall(powerpc_watchdog_init);
static void handle_backtrace_ipi(struct pt_regs *regs)
{
diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig
index 0c52cb5d43f5..b12b8eb39c29 100644
--- a/arch/powerpc/kvm/Kconfig
+++ b/arch/powerpc/kvm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# KVM configuration
#
diff --git a/arch/powerpc/kvm/Makefile b/arch/powerpc/kvm/Makefile
index 381a6ec0ff3b..85ba80de7133 100644
--- a/arch/powerpc/kvm/Makefile
+++ b/arch/powerpc/kvm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Kernel-based Virtual Machine module
#
diff --git a/arch/powerpc/kvm/book3s_64_vio.c b/arch/powerpc/kvm/book3s_64_vio.c
index 8f2da8bba737..4dffa611376d 100644
--- a/arch/powerpc/kvm/book3s_64_vio.c
+++ b/arch/powerpc/kvm/book3s_64_vio.c
@@ -478,28 +478,30 @@ long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
return ret;
dir = iommu_tce_direction(tce);
+
+ idx = srcu_read_lock(&vcpu->kvm->srcu);
+
if ((dir != DMA_NONE) && kvmppc_gpa_to_ua(vcpu->kvm,
- tce & ~(TCE_PCI_READ | TCE_PCI_WRITE), &ua, NULL))
- return H_PARAMETER;
+ tce & ~(TCE_PCI_READ | TCE_PCI_WRITE), &ua, NULL)) {
+ ret = H_PARAMETER;
+ goto unlock_exit;
+ }
entry = ioba >> stt->page_shift;
list_for_each_entry_lockless(stit, &stt->iommu_tables, next) {
- if (dir == DMA_NONE) {
+ if (dir == DMA_NONE)
ret = kvmppc_tce_iommu_unmap(vcpu->kvm,
stit->tbl, entry);
- } else {
- idx = srcu_read_lock(&vcpu->kvm->srcu);
+ else
ret = kvmppc_tce_iommu_map(vcpu->kvm, stit->tbl,
entry, ua, dir);
- srcu_read_unlock(&vcpu->kvm->srcu, idx);
- }
if (ret == H_SUCCESS)
continue;
if (ret == H_TOO_HARD)
- return ret;
+ goto unlock_exit;
WARN_ON_ONCE(1);
kvmppc_clear_tce(stit->tbl, entry);
@@ -507,7 +509,10 @@ long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
kvmppc_tce_put(stt, entry, tce);
- return H_SUCCESS;
+unlock_exit:
+ srcu_read_unlock(&vcpu->kvm->srcu, idx);
+
+ return ret;
}
EXPORT_SYMBOL_GPL(kvmppc_h_put_tce);
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 18e974a34fce..73bf1ebfa78f 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -181,7 +181,7 @@ static void kvmppc_fast_vcpu_kick_hv(struct kvm_vcpu *vcpu)
struct swait_queue_head *wqp;
wqp = kvm_arch_vcpu_wq(vcpu);
- if (swait_active(wqp)) {
+ if (swq_has_sleeper(wqp)) {
swake_up(wqp);
++vcpu->stat.halt_wakeup;
}
@@ -4212,11 +4212,13 @@ static int kvmhv_configure_mmu(struct kvm *kvm, struct kvm_ppc_mmuv3_cfg *cfg)
if ((cfg->process_table & PRTS_MASK) > 24)
return -EINVAL;
+ mutex_lock(&kvm->lock);
kvm->arch.process_table = cfg->process_table;
kvmppc_setup_partition_table(kvm);
lpcr = (cfg->flags & KVM_PPC_MMUV3_GTSE) ? LPCR_GTSE : 0;
kvmppc_update_lpcr(kvm, lpcr, LPCR_GTSE);
+ mutex_unlock(&kvm->lock);
return 0;
}
diff --git a/arch/powerpc/kvm/book3s_hv_rm_xive.c b/arch/powerpc/kvm/book3s_hv_rm_xive.c
index abf5f01b6eb1..174d75e476fa 100644
--- a/arch/powerpc/kvm/book3s_hv_rm_xive.c
+++ b/arch/powerpc/kvm/book3s_hv_rm_xive.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/kvm_host.h>
#include <linux/err.h>
@@ -38,7 +39,6 @@ static inline void __iomem *get_tima_phys(void)
#define __x_tima get_tima_phys()
#define __x_eoi_page(xd) ((void __iomem *)((xd)->eoi_page))
#define __x_trig_page(xd) ((void __iomem *)((xd)->trig_page))
-#define __x_readb __raw_rm_readb
#define __x_writeb __raw_rm_writeb
#define __x_readw __raw_rm_readw
#define __x_readq __raw_rm_readq
diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
index 663a4a861e7f..42639fba89e8 100644
--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
@@ -771,6 +771,9 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
BEGIN_FTR_SECTION
+ /*
+ * NOTE THAT THIS TRASHES ALL NON-VOLATILE REGISTERS INCLUDING CR
+ */
bl kvmppc_restore_tm
END_FTR_SECTION_IFSET(CPU_FTR_TM)
#endif
@@ -986,13 +989,14 @@ ALT_FTR_SECTION_END_IFCLR(CPU_FTR_ARCH_300)
beq no_xive
ld r11, VCPU_XIVE_SAVED_STATE(r4)
li r9, TM_QW1_OS
- stdcix r11,r9,r10
eieio
+ stdcix r11,r9,r10
lwz r11, VCPU_XIVE_CAM_WORD(r4)
li r9, TM_QW1_OS + TM_WORD2
stwcix r11,r9,r10
li r9, 1
stw r9, VCPU_XIVE_PUSHED(r4)
+ eieio
no_xive:
#endif /* CONFIG_KVM_XICS */
@@ -1118,6 +1122,13 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
BEGIN_FTR_SECTION
mtspr SPRN_PPR, r0
END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
+
+/* Move canary into DSISR to check for later */
+BEGIN_FTR_SECTION
+ li r0, 0x7fff
+ mtspr SPRN_HDSISR, r0
+END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
+
ld r0, VCPU_GPR(R0)(r4)
ld r4, VCPU_GPR(R4)(r4)
@@ -1300,6 +1311,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
bne 3f
BEGIN_FTR_SECTION
PPC_MSGSYNC
+ lwsync
END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
lbz r0, HSTATE_HOST_IPI(r13)
cmpwi r0, 0
@@ -1390,8 +1402,8 @@ guest_exit_cont: /* r9 = vcpu, r12 = trap, r13 = paca */
cmpldi cr0, r10, 0
beq 1f
/* First load to pull the context, we ignore the value */
- lwzx r11, r7, r10
eieio
+ lwzx r11, r7, r10
/* Second load to recover the context state (Words 0 and 1) */
ldx r11, r6, r10
b 3f
@@ -1399,8 +1411,8 @@ guest_exit_cont: /* r9 = vcpu, r12 = trap, r13 = paca */
cmpldi cr0, r10, 0
beq 1f
/* First load to pull the context, we ignore the value */
- lwzcix r11, r7, r10
eieio
+ lwzcix r11, r7, r10
/* Second load to recover the context state (Words 0 and 1) */
ldcix r11, r6, r10
3: std r11, VCPU_XIVE_SAVED_STATE(r9)
@@ -1410,6 +1422,7 @@ guest_exit_cont: /* r9 = vcpu, r12 = trap, r13 = paca */
stw r10, VCPU_XIVE_PUSHED(r9)
stb r10, (VCPU_XIVE_SAVED_STATE+3)(r9)
stb r0, (VCPU_XIVE_SAVED_STATE+4)(r9)
+ eieio
1:
#endif /* CONFIG_KVM_XICS */
/* Save more register state */
@@ -1630,6 +1643,9 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_300)
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
BEGIN_FTR_SECTION
+ /*
+ * NOTE THAT THIS TRASHES ALL NON-VOLATILE REGISTERS INCLUDING CR
+ */
bl kvmppc_save_tm
END_FTR_SECTION_IFSET(CPU_FTR_TM)
#endif
@@ -1749,7 +1765,10 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
/*
* Are we running hash or radix ?
*/
- beq cr2,3f
+ ld r5, VCPU_KVM(r9)
+ lbz r0, KVM_RADIX(r5)
+ cmpwi cr2, r0, 0
+ beq cr2, 3f
/* Radix: Handle the case where the guest used an illegal PID */
LOAD_REG_ADDR(r4, mmu_base_pid)
@@ -1947,9 +1966,14 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_TYPE_RADIX)
kvmppc_hdsi:
ld r3, VCPU_KVM(r9)
lbz r0, KVM_RADIX(r3)
- cmpwi r0, 0
mfspr r4, SPRN_HDAR
mfspr r6, SPRN_HDSISR
+BEGIN_FTR_SECTION
+ /* Look for DSISR canary. If we find it, retry instruction */
+ cmpdi r6, 0x7fff
+ beq 6f
+END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
+ cmpwi r0, 0
bne .Lradix_hdsi /* on radix, just save DAR/DSISR/ASDR */
/* HPTE not found fault or protection fault? */
andis. r0, r6, (DSISR_NOHPTE | DSISR_PROTFAULT)@h
@@ -2466,6 +2490,9 @@ _GLOBAL(kvmppc_h_cede) /* r3 = vcpu pointer, r11 = msr, r13 = paca */
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
BEGIN_FTR_SECTION
+ /*
+ * NOTE THAT THIS TRASHES ALL NON-VOLATILE REGISTERS INCLUDING CR
+ */
ld r9, HSTATE_KVM_VCPU(r13)
bl kvmppc_save_tm
END_FTR_SECTION_IFSET(CPU_FTR_TM)
@@ -2578,6 +2605,9 @@ kvm_end_cede:
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
BEGIN_FTR_SECTION
+ /*
+ * NOTE THAT THIS TRASHES ALL NON-VOLATILE REGISTERS INCLUDING CR
+ */
bl kvmppc_restore_tm
END_FTR_SECTION_IFSET(CPU_FTR_TM)
#endif
@@ -2761,6 +2791,10 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
PPC_MSGCLR(6)
/* see if it's a host IPI */
li r3, 1
+BEGIN_FTR_SECTION
+ PPC_MSGSYNC
+ lwsync
+END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
lbz r0, HSTATE_HOST_IPI(r13)
cmpwi r0, 0
bnelr
diff --git a/arch/powerpc/kvm/book3s_xive.c b/arch/powerpc/kvm/book3s_xive.c
index 08b200a0bbce..bf457843e032 100644
--- a/arch/powerpc/kvm/book3s_xive.c
+++ b/arch/powerpc/kvm/book3s_xive.c
@@ -48,7 +48,6 @@
#define __x_tima xive_tima
#define __x_eoi_page(xd) ((void __iomem *)((xd)->eoi_mmio))
#define __x_trig_page(xd) ((void __iomem *)((xd)->trig_mmio))
-#define __x_readb __raw_readb
#define __x_writeb __raw_writeb
#define __x_readw __raw_readw
#define __x_readq __raw_readq
@@ -623,7 +622,7 @@ int kvmppc_xive_get_xive(struct kvm *kvm, u32 irq, u32 *server,
return -EINVAL;
state = &sb->irq_state[idx];
arch_spin_lock(&sb->lock);
- *server = state->guest_server;
+ *server = state->act_server;
*priority = state->guest_priority;
arch_spin_unlock(&sb->lock);
@@ -1332,7 +1331,7 @@ static int xive_get_source(struct kvmppc_xive *xive, long irq, u64 addr)
xive->saved_src_count++;
/* Convert saved state into something compatible with xics */
- val = state->guest_server;
+ val = state->act_server;
prio = state->saved_scan_prio;
if (prio == MASKED) {
@@ -1508,7 +1507,6 @@ static int xive_set_source(struct kvmppc_xive *xive, long irq, u64 addr)
/* First convert prio and mark interrupt as untargetted */
act_prio = xive_prio_from_guest(guest_prio);
state->act_priority = MASKED;
- state->guest_server = server;
/*
* We need to drop the lock due to the mutex below. Hopefully
diff --git a/arch/powerpc/kvm/book3s_xive.h b/arch/powerpc/kvm/book3s_xive.h
index 5938f7644dc1..6ba63f8e8a61 100644
--- a/arch/powerpc/kvm/book3s_xive.h
+++ b/arch/powerpc/kvm/book3s_xive.h
@@ -35,7 +35,6 @@ struct kvmppc_xive_irq_state {
struct xive_irq_data *pt_data; /* XIVE Pass-through associated data */
/* Targetting as set by guest */
- u32 guest_server; /* Current guest selected target */
u8 guest_priority; /* Guest set priority */
u8 saved_priority; /* Saved priority when masking */
diff --git a/arch/powerpc/kvm/book3s_xive_template.c b/arch/powerpc/kvm/book3s_xive_template.c
index d1ed2c41b5d2..c7a5deadd1cc 100644
--- a/arch/powerpc/kvm/book3s_xive_template.c
+++ b/arch/powerpc/kvm/book3s_xive_template.c
@@ -28,7 +28,8 @@ static void GLUE(X_PFX,ack_pending)(struct kvmppc_xive_vcpu *xc)
* bit.
*/
if (cpu_has_feature(CPU_FTR_POWER9_DD1)) {
- u8 pipr = __x_readb(__x_tima + TM_QW1_OS + TM_PIPR);
+ __be64 qw1 = __x_readq(__x_tima + TM_QW1_OS);
+ u8 pipr = be64_to_cpu(qw1) & 0xff;
if (pipr >= xc->hw_cppr)
return;
}
@@ -336,7 +337,6 @@ X_STATIC unsigned long GLUE(X_PFX,h_ipoll)(struct kvm_vcpu *vcpu, unsigned long
struct kvmppc_xive_vcpu *xc = vcpu->arch.xive_vcpu;
u8 pending = xc->pending;
u32 hirq;
- u8 pipr;
pr_devel("H_IPOLL(server=%ld)\n", server);
@@ -353,7 +353,8 @@ X_STATIC unsigned long GLUE(X_PFX,h_ipoll)(struct kvm_vcpu *vcpu, unsigned long
pending = 0xff;
} else {
/* Grab pending interrupt if any */
- pipr = __x_readb(__x_tima + TM_QW1_OS + TM_PIPR);
+ __be64 qw1 = __x_readq(__x_tima + TM_QW1_OS);
+ u8 pipr = be64_to_cpu(qw1) & 0xff;
if (pipr < 8)
pending |= 1 << pipr;
}
diff --git a/arch/powerpc/kvm/irq.h b/arch/powerpc/kvm/irq.h
index 3f1be85a83bc..e6463f866abc 100644
--- a/arch/powerpc/kvm/irq.h
+++ b/arch/powerpc/kvm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IRQ_H
#define __IRQ_H
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 3480faaf1ef8..ee279c7f4802 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -644,8 +644,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
break;
#endif
case KVM_CAP_PPC_HTM:
- r = cpu_has_feature(CPU_FTR_TM_COMP) &&
- is_kvmppc_hv_enabled(kvm);
+ r = cpu_has_feature(CPU_FTR_TM_COMP) && hv_enabled;
break;
default:
r = 0;
diff --git a/arch/powerpc/kvm/trace.h b/arch/powerpc/kvm/trace.h
index 2e0e67ef3544..491b0f715d6b 100644
--- a/arch/powerpc/kvm/trace.h
+++ b/arch/powerpc/kvm/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_KVM_H
diff --git a/arch/powerpc/kvm/trace_book3s.h b/arch/powerpc/kvm/trace_book3s.h
index f647ce0f428b..f3b23759e017 100644
--- a/arch/powerpc/kvm/trace_book3s.h
+++ b/arch/powerpc/kvm/trace_book3s.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_KVM_BOOK3S_H)
#define _TRACE_KVM_BOOK3S_H
diff --git a/arch/powerpc/kvm/trace_booke.h b/arch/powerpc/kvm/trace_booke.h
index 7ec534d1db9f..ac640e81fdc5 100644
--- a/arch/powerpc/kvm/trace_booke.h
+++ b/arch/powerpc/kvm/trace_booke.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_KVM_BOOKE_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_KVM_BOOKE_H
diff --git a/arch/powerpc/kvm/trace_hv.h b/arch/powerpc/kvm/trace_hv.h
index ebc6dd449556..bcfe8a987f6a 100644
--- a/arch/powerpc/kvm/trace_hv.h
+++ b/arch/powerpc/kvm/trace_hv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_KVM_HV_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_KVM_HV_H
diff --git a/arch/powerpc/kvm/trace_pr.h b/arch/powerpc/kvm/trace_pr.h
index d44f324184fb..85785a370c0e 100644
--- a/arch/powerpc/kvm/trace_pr.h
+++ b/arch/powerpc/kvm/trace_pr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_KVM_PR_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_KVM_PR_H
diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile
index 50d5bf954cff..c66c3626a216 100644
--- a/arch/powerpc/lib/Makefile
+++ b/arch/powerpc/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for ppc-specific library files..
#
diff --git a/arch/powerpc/lib/alloc.c b/arch/powerpc/lib/alloc.c
index a58abe4afbd1..06796dec01ea 100644
--- a/arch/powerpc/lib/alloc.c
+++ b/arch/powerpc/lib/alloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/init.h>
#include <linux/slab.h>
diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
index fb9f58b868e7..f208f560aecd 100644
--- a/arch/powerpc/lib/sstep.c
+++ b/arch/powerpc/lib/sstep.c
@@ -944,9 +944,9 @@ NOKPROBE_SYMBOL(emulate_dcbz);
: "r" (addr), "i" (-EFAULT), "0" (err))
static nokprobe_inline void set_cr0(const struct pt_regs *regs,
- struct instruction_op *op, int rd)
+ struct instruction_op *op)
{
- long val = regs->gpr[rd];
+ long val = op->val;
op->type |= SETCC;
op->ccval = (regs->ccr & 0x0fffffff) | ((regs->xer >> 3) & 0x10000000);
@@ -1326,7 +1326,7 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
case 13: /* addic. */
imm = (short) instr;
add_with_carry(regs, op, rd, regs->gpr[ra], imm, 0);
- set_cr0(regs, op, rd);
+ set_cr0(regs, op);
return 1;
case 14: /* addi */
@@ -1397,13 +1397,13 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
case 28: /* andi. */
op->val = regs->gpr[rd] & (unsigned short) instr;
- set_cr0(regs, op, ra);
+ set_cr0(regs, op);
goto logical_done_nocc;
case 29: /* andis. */
imm = (unsigned short) instr;
op->val = regs->gpr[rd] & (imm << 16);
- set_cr0(regs, op, ra);
+ set_cr0(regs, op);
goto logical_done_nocc;
#ifdef __powerpc64__
@@ -1513,10 +1513,10 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
op->type = COMPUTE + SETCC;
imm = 0xf0000000UL;
val = regs->gpr[rd];
- op->val = regs->ccr;
+ op->ccval = regs->ccr;
for (sh = 0; sh < 8; ++sh) {
if (instr & (0x80000 >> sh))
- op->val = (op->val & ~imm) |
+ op->ccval = (op->ccval & ~imm) |
(val & imm);
imm >>= 4;
}
@@ -1651,8 +1651,9 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
goto arith_done;
case 235: /* mullw */
- op->val = (unsigned int) regs->gpr[ra] *
- (unsigned int) regs->gpr[rb];
+ op->val = (long)(int) regs->gpr[ra] *
+ (int) regs->gpr[rb];
+
goto arith_done;
case 266: /* add */
@@ -1683,11 +1684,13 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
* Logical instructions
*/
case 26: /* cntlzw */
- op->val = __builtin_clz((unsigned int) regs->gpr[rd]);
+ val = (unsigned int) regs->gpr[rd];
+ op->val = ( val ? __builtin_clz(val) : 32 );
goto logical_done;
#ifdef __powerpc64__
case 58: /* cntlzd */
- op->val = __builtin_clzl(regs->gpr[rd]);
+ val = regs->gpr[rd];
+ op->val = ( val ? __builtin_clzl(val) : 64 );
goto logical_done;
#endif
case 28: /* and */
@@ -2526,7 +2529,7 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
logical_done:
if (instr & 1)
- set_cr0(regs, op, ra);
+ set_cr0(regs, op);
logical_done_nocc:
op->reg = ra;
op->type |= SETREG;
@@ -2534,7 +2537,7 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
arith_done:
if (instr & 1)
- set_cr0(regs, op, rd);
+ set_cr0(regs, op);
compute_done:
op->reg = rd;
op->type |= SETREG;
diff --git a/arch/powerpc/lib/xor_vmx.h b/arch/powerpc/lib/xor_vmx.h
index 4746708451ae..5c2b0839b179 100644
--- a/arch/powerpc/lib/xor_vmx.h
+++ b/arch/powerpc/lib/xor_vmx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Simple interface to link xor_vmx.c and xor_vmx_glue.c
*
diff --git a/arch/powerpc/math-emu/Makefile b/arch/powerpc/math-emu/Makefile
index 1b46ab4f6417..494df26c5988 100644
--- a/arch/powerpc/math-emu/Makefile
+++ b/arch/powerpc/math-emu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
math-emu-common-objs = math.o fre.o fsqrt.o fsqrts.o frsqrtes.o mtfsf.o mtfsfi.o
obj-$(CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED) += $(math-emu-common-objs)
obj-$(CONFIG_MATH_EMULATION_FULL) += $(math-emu-common-objs) fabs.o fadd.o \
diff --git a/arch/powerpc/math-emu/fabs.c b/arch/powerpc/math-emu/fabs.c
index a5e7ad1384ee..3b62fd70b77e 100644
--- a/arch/powerpc/math-emu/fabs.c
+++ b/arch/powerpc/math-emu/fabs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fadd.c b/arch/powerpc/math-emu/fadd.c
index 29de37e0e0da..727e49ad55d1 100644
--- a/arch/powerpc/math-emu/fadd.c
+++ b/arch/powerpc/math-emu/fadd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fadds.c b/arch/powerpc/math-emu/fadds.c
index 7093c5b58002..45254be05662 100644
--- a/arch/powerpc/math-emu/fadds.c
+++ b/arch/powerpc/math-emu/fadds.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fcmpo.c b/arch/powerpc/math-emu/fcmpo.c
index 5d644467221c..f437d0896c59 100644
--- a/arch/powerpc/math-emu/fcmpo.c
+++ b/arch/powerpc/math-emu/fcmpo.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fcmpu.c b/arch/powerpc/math-emu/fcmpu.c
index 0f9bf4864832..65631fa5dc39 100644
--- a/arch/powerpc/math-emu/fcmpu.c
+++ b/arch/powerpc/math-emu/fcmpu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fctiw.c b/arch/powerpc/math-emu/fctiw.c
index 716d6da7f204..ebb0f11e735e 100644
--- a/arch/powerpc/math-emu/fctiw.c
+++ b/arch/powerpc/math-emu/fctiw.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fctiwz.c b/arch/powerpc/math-emu/fctiwz.c
index 7212fa7cfd36..426271c4f004 100644
--- a/arch/powerpc/math-emu/fctiwz.c
+++ b/arch/powerpc/math-emu/fctiwz.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fdiv.c b/arch/powerpc/math-emu/fdiv.c
index e1e452069e49..6e64ece2d395 100644
--- a/arch/powerpc/math-emu/fdiv.c
+++ b/arch/powerpc/math-emu/fdiv.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fdivs.c b/arch/powerpc/math-emu/fdivs.c
index 5511e2d1c3ad..f9f7adf46262 100644
--- a/arch/powerpc/math-emu/fdivs.c
+++ b/arch/powerpc/math-emu/fdivs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fmadd.c b/arch/powerpc/math-emu/fmadd.c
index 2b6fae0bc8c2..e8458aed5edb 100644
--- a/arch/powerpc/math-emu/fmadd.c
+++ b/arch/powerpc/math-emu/fmadd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fmadds.c b/arch/powerpc/math-emu/fmadds.c
index aff35f24a236..a6d3f9842f19 100644
--- a/arch/powerpc/math-emu/fmadds.c
+++ b/arch/powerpc/math-emu/fmadds.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fmr.c b/arch/powerpc/math-emu/fmr.c
index f6347911f6a3..48c64374286e 100644
--- a/arch/powerpc/math-emu/fmr.c
+++ b/arch/powerpc/math-emu/fmr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fmsub.c b/arch/powerpc/math-emu/fmsub.c
index 1fb26cebe04e..605cda49e7b2 100644
--- a/arch/powerpc/math-emu/fmsub.c
+++ b/arch/powerpc/math-emu/fmsub.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fmsubs.c b/arch/powerpc/math-emu/fmsubs.c
index f73965453e05..f26ec0acf0a5 100644
--- a/arch/powerpc/math-emu/fmsubs.c
+++ b/arch/powerpc/math-emu/fmsubs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fmul.c b/arch/powerpc/math-emu/fmul.c
index ffd31b549290..d114f7acdbb1 100644
--- a/arch/powerpc/math-emu/fmul.c
+++ b/arch/powerpc/math-emu/fmul.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fmuls.c b/arch/powerpc/math-emu/fmuls.c
index 21aee431ca9d..aaeba0acb47f 100644
--- a/arch/powerpc/math-emu/fmuls.c
+++ b/arch/powerpc/math-emu/fmuls.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fnabs.c b/arch/powerpc/math-emu/fnabs.c
index af877a53d264..6c439e6c2c58 100644
--- a/arch/powerpc/math-emu/fnabs.c
+++ b/arch/powerpc/math-emu/fnabs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fneg.c b/arch/powerpc/math-emu/fneg.c
index 8417d174758c..791e724f712f 100644
--- a/arch/powerpc/math-emu/fneg.c
+++ b/arch/powerpc/math-emu/fneg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fnmadd.c b/arch/powerpc/math-emu/fnmadd.c
index 6316ef0e0874..02a7099b26af 100644
--- a/arch/powerpc/math-emu/fnmadd.c
+++ b/arch/powerpc/math-emu/fnmadd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fnmadds.c b/arch/powerpc/math-emu/fnmadds.c
index 9ffe037df2b9..ce42a7a44d2e 100644
--- a/arch/powerpc/math-emu/fnmadds.c
+++ b/arch/powerpc/math-emu/fnmadds.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fnmsub.c b/arch/powerpc/math-emu/fnmsub.c
index f97a9cfb54ea..eade699c51d5 100644
--- a/arch/powerpc/math-emu/fnmsub.c
+++ b/arch/powerpc/math-emu/fnmsub.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fnmsubs.c b/arch/powerpc/math-emu/fnmsubs.c
index 7fa1217bd930..4e1f6c2b7c40 100644
--- a/arch/powerpc/math-emu/fnmsubs.c
+++ b/arch/powerpc/math-emu/fnmsubs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fre.c b/arch/powerpc/math-emu/fre.c
index b621a790aa67..584b16f53304 100644
--- a/arch/powerpc/math-emu/fre.c
+++ b/arch/powerpc/math-emu/fre.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fres.c b/arch/powerpc/math-emu/fres.c
index 211c30d0145f..f7d5654ce7d6 100644
--- a/arch/powerpc/math-emu/fres.c
+++ b/arch/powerpc/math-emu/fres.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/frsp.c b/arch/powerpc/math-emu/frsp.c
index 3e3bc73e27ae..cb33e3d9bbb2 100644
--- a/arch/powerpc/math-emu/frsp.c
+++ b/arch/powerpc/math-emu/frsp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/frsqrte.c b/arch/powerpc/math-emu/frsqrte.c
index 7c2ce43750dc..72955b27c3ca 100644
--- a/arch/powerpc/math-emu/frsqrte.c
+++ b/arch/powerpc/math-emu/frsqrte.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/frsqrtes.c b/arch/powerpc/math-emu/frsqrtes.c
index 269951a8c650..a036f7b7140c 100644
--- a/arch/powerpc/math-emu/frsqrtes.c
+++ b/arch/powerpc/math-emu/frsqrtes.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fsel.c b/arch/powerpc/math-emu/fsel.c
index 32b62c6c7f48..b0d15e15a5d3 100644
--- a/arch/powerpc/math-emu/fsel.c
+++ b/arch/powerpc/math-emu/fsel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fsqrt.c b/arch/powerpc/math-emu/fsqrt.c
index 0e2a34b616dc..05438590388e 100644
--- a/arch/powerpc/math-emu/fsqrt.c
+++ b/arch/powerpc/math-emu/fsqrt.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fsqrts.c b/arch/powerpc/math-emu/fsqrts.c
index 420cf19b5fd4..1624f97c69cc 100644
--- a/arch/powerpc/math-emu/fsqrts.c
+++ b/arch/powerpc/math-emu/fsqrts.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fsub.c b/arch/powerpc/math-emu/fsub.c
index feedd705cf62..47a8f847b422 100644
--- a/arch/powerpc/math-emu/fsub.c
+++ b/arch/powerpc/math-emu/fsub.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/fsubs.c b/arch/powerpc/math-emu/fsubs.c
index 74190514063e..fa1b3b18c379 100644
--- a/arch/powerpc/math-emu/fsubs.c
+++ b/arch/powerpc/math-emu/fsubs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/lfd.c b/arch/powerpc/math-emu/lfd.c
index d998a50740a0..3a6b03d999ab 100644
--- a/arch/powerpc/math-emu/lfd.c
+++ b/arch/powerpc/math-emu/lfd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/lfs.c b/arch/powerpc/math-emu/lfs.c
index 1ee10b83d7e3..7fd3d0854cd8 100644
--- a/arch/powerpc/math-emu/lfs.c
+++ b/arch/powerpc/math-emu/lfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/math.c b/arch/powerpc/math-emu/math.c
index 76ee2e5dba65..30b4b69c6941 100644
--- a/arch/powerpc/math-emu/math.c
+++ b/arch/powerpc/math-emu/math.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1999 Eddie C. Dost (ecd@atecom.com)
*/
diff --git a/arch/powerpc/math-emu/mcrfs.c b/arch/powerpc/math-emu/mcrfs.c
index 8e8e72397ebc..9c4fdaace475 100644
--- a/arch/powerpc/math-emu/mcrfs.c
+++ b/arch/powerpc/math-emu/mcrfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/mffs.c b/arch/powerpc/math-emu/mffs.c
index e00fdc22a0bc..d42f1278e958 100644
--- a/arch/powerpc/math-emu/mffs.c
+++ b/arch/powerpc/math-emu/mffs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/mtfsb0.c b/arch/powerpc/math-emu/mtfsb0.c
index 5ed3e7d5063e..5753170b5dfd 100644
--- a/arch/powerpc/math-emu/mtfsb0.c
+++ b/arch/powerpc/math-emu/mtfsb0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/mtfsb1.c b/arch/powerpc/math-emu/mtfsb1.c
index 602aa16eda81..8162c3bfd149 100644
--- a/arch/powerpc/math-emu/mtfsb1.c
+++ b/arch/powerpc/math-emu/mtfsb1.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/mtfsf.c b/arch/powerpc/math-emu/mtfsf.c
index b0d5593ad357..7ae990f6b58b 100644
--- a/arch/powerpc/math-emu/mtfsf.c
+++ b/arch/powerpc/math-emu/mtfsf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/mtfsfi.c b/arch/powerpc/math-emu/mtfsfi.c
index 5df30541a784..45f1edbda357 100644
--- a/arch/powerpc/math-emu/mtfsfi.c
+++ b/arch/powerpc/math-emu/mtfsfi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/stfd.c b/arch/powerpc/math-emu/stfd.c
index 6baeaec134a2..463d2f0832d9 100644
--- a/arch/powerpc/math-emu/stfd.c
+++ b/arch/powerpc/math-emu/stfd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/stfiwx.c b/arch/powerpc/math-emu/stfiwx.c
index 9da7c5d1a872..24ae9622fed6 100644
--- a/arch/powerpc/math-emu/stfiwx.c
+++ b/arch/powerpc/math-emu/stfiwx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/stfs.c b/arch/powerpc/math-emu/stfs.c
index 62bd25264fb5..ddf9bbdb5b55 100644
--- a/arch/powerpc/math-emu/stfs.c
+++ b/arch/powerpc/math-emu/stfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/uaccess.h>
diff --git a/arch/powerpc/math-emu/udivmodti4.c b/arch/powerpc/math-emu/udivmodti4.c
index 6172044ab003..1e52633dcbb7 100644
--- a/arch/powerpc/math-emu/udivmodti4.c
+++ b/arch/powerpc/math-emu/udivmodti4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* This has so very few changes over libgcc2's __udivmoddi4 it isn't funny. */
#include <math-emu/soft-fp.h>
diff --git a/arch/powerpc/mm/Makefile b/arch/powerpc/mm/Makefile
index fb844d2f266e..a0c327d544d1 100644
--- a/arch/powerpc/mm/Makefile
+++ b/arch/powerpc/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux ppc-specific parts of the memory manager.
#
diff --git a/arch/powerpc/mm/highmem.c b/arch/powerpc/mm/highmem.c
index e292c8a60952..668e87d03f9e 100644
--- a/arch/powerpc/mm/highmem.c
+++ b/arch/powerpc/mm/highmem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* highmem.c: virtual kernel memory mappings for high memory
*
diff --git a/arch/powerpc/mm/hugetlbpage-book3e.c b/arch/powerpc/mm/hugetlbpage-book3e.c
index bfe4e8526b2d..f84ec46cdb26 100644
--- a/arch/powerpc/mm/hugetlbpage-book3e.c
+++ b/arch/powerpc/mm/hugetlbpage-book3e.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PPC Huge TLB Page Support for Book3E MMU
*
diff --git a/arch/powerpc/mm/hugetlbpage-hash64.c b/arch/powerpc/mm/hugetlbpage-hash64.c
index a84bb44497f9..0c2a91df3210 100644
--- a/arch/powerpc/mm/hugetlbpage-hash64.c
+++ b/arch/powerpc/mm/hugetlbpage-hash64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PPC64 Huge TLB Page Support for hash based MMUs (POWER4 and later)
*
diff --git a/arch/powerpc/mm/hugetlbpage-radix.c b/arch/powerpc/mm/hugetlbpage-radix.c
index a12e86395025..558e9d3891bf 100644
--- a/arch/powerpc/mm/hugetlbpage-radix.c
+++ b/arch/powerpc/mm/hugetlbpage-radix.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <linux/hugetlb.h>
#include <asm/pgtable.h>
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index b95c584ce19d..a51df9ef529d 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -1438,7 +1438,6 @@ out:
int arch_update_cpu_topology(void)
{
- lockdep_assert_cpus_held();
return numa_update_cpu_topology(true);
}
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
index 65eda1997c3f..f6c7f54c0515 100644
--- a/arch/powerpc/mm/pgtable_32.c
+++ b/arch/powerpc/mm/pgtable_32.c
@@ -361,9 +361,9 @@ static int change_page_attr(struct page *page, int numpages, pgprot_t prot)
break;
}
wmb();
+ local_irq_restore(flags);
flush_tlb_kernel_range((unsigned long)page_address(start),
(unsigned long)page_address(page));
- local_irq_restore(flags);
return err;
}
diff --git a/arch/powerpc/mm/tlb-radix.c b/arch/powerpc/mm/tlb-radix.c
index b3e849c4886e..d304028641a2 100644
--- a/arch/powerpc/mm/tlb-radix.c
+++ b/arch/powerpc/mm/tlb-radix.c
@@ -360,12 +360,14 @@ void radix__flush_tlb_collapsed_pmd(struct mm_struct *mm, unsigned long addr)
pid = mm ? mm->context.id : 0;
+ preempt_disable();
if (unlikely(pid == MMU_NO_CONTEXT))
goto no_context;
/* 4k page size, just blow the world */
if (PAGE_SIZE == 0x1000) {
radix__flush_all_mm(mm);
+ preempt_enable();
return;
}
diff --git a/arch/powerpc/mm/vphn.c b/arch/powerpc/mm/vphn.c
index 5f8ef50e5c66..f83044faac23 100644
--- a/arch/powerpc/mm/vphn.c
+++ b/arch/powerpc/mm/vphn.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/byteorder.h>
#include "vphn.h"
diff --git a/arch/powerpc/mm/vphn.h b/arch/powerpc/mm/vphn.h
index fe8b7805b78f..f9ffdb3942fc 100644
--- a/arch/powerpc/mm/vphn.h
+++ b/arch/powerpc/mm/vphn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARCH_POWERPC_MM_VPHN_H_
#define _ARCH_POWERPC_MM_VPHN_H_
diff --git a/arch/powerpc/net/Makefile b/arch/powerpc/net/Makefile
index c1ff16a6eb51..02d369ca6a53 100644
--- a/arch/powerpc/net/Makefile
+++ b/arch/powerpc/net/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Arch-specific network modules
#
diff --git a/arch/powerpc/oprofile/Makefile b/arch/powerpc/oprofile/Makefile
index cedbbeced632..7a7834c39f64 100644
--- a/arch/powerpc/oprofile/Makefile
+++ b/arch/powerpc/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
ccflags-$(CONFIG_PPC64) := $(NO_MINIMAL_TOC)
diff --git a/arch/powerpc/perf/Makefile b/arch/powerpc/perf/Makefile
index 3f3a5ce66495..225c9c86d7c0 100644
--- a/arch/powerpc/perf/Makefile
+++ b/arch/powerpc/perf/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
obj-$(CONFIG_PERF_EVENTS) += callchain.o perf_regs.o
diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
index 2e3eb7431571..9e3da168d54c 100644
--- a/arch/powerpc/perf/core-book3s.c
+++ b/arch/powerpc/perf/core-book3s.c
@@ -793,6 +793,11 @@ void perf_event_print_debug(void)
u32 pmcs[MAX_HWEVENTS];
int i;
+ if (!ppmu) {
+ pr_info("Performance monitor hardware not registered.\n");
+ return;
+ }
+
if (!ppmu->n_counter)
return;
diff --git a/arch/powerpc/perf/hv-24x7-catalog.h b/arch/powerpc/perf/hv-24x7-catalog.h
index 69e2e1faf902..5fab5a397da9 100644
--- a/arch/powerpc/perf/hv-24x7-catalog.h
+++ b/arch/powerpc/perf/hv-24x7-catalog.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_POWERPC_PERF_HV_24X7_CATALOG_H_
#define LINUX_POWERPC_PERF_HV_24X7_CATALOG_H_
diff --git a/arch/powerpc/perf/hv-24x7-domains.h b/arch/powerpc/perf/hv-24x7-domains.h
index 49c1efd50045..6f91f62e0aa6 100644
--- a/arch/powerpc/perf/hv-24x7-domains.h
+++ b/arch/powerpc/perf/hv-24x7-domains.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* DOMAIN(name, num, index_kind, is_physical)
diff --git a/arch/powerpc/perf/hv-24x7.h b/arch/powerpc/perf/hv-24x7.h
index 5092c4a222a6..ae4ae4813e16 100644
--- a/arch/powerpc/perf/hv-24x7.h
+++ b/arch/powerpc/perf/hv-24x7.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_POWERPC_PERF_HV_24X7_H_
#define LINUX_POWERPC_PERF_HV_24X7_H_
diff --git a/arch/powerpc/perf/hv-common.c b/arch/powerpc/perf/hv-common.c
index 7dce8f109967..0370518edd20 100644
--- a/arch/powerpc/perf/hv-common.c
+++ b/arch/powerpc/perf/hv-common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/io.h>
#include <asm/hvcall.h>
diff --git a/arch/powerpc/perf/hv-common.h b/arch/powerpc/perf/hv-common.h
index 349aaba4d2d1..2cce17bc321c 100644
--- a/arch/powerpc/perf/hv-common.h
+++ b/arch/powerpc/perf/hv-common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_POWERPC_PERF_HV_COMMON_H_
#define LINUX_POWERPC_PERF_HV_COMMON_H_
diff --git a/arch/powerpc/perf/hv-gpci-requests.h b/arch/powerpc/perf/hv-gpci-requests.h
index acd17648cd18..e608f9db12dd 100644
--- a/arch/powerpc/perf/hv-gpci-requests.h
+++ b/arch/powerpc/perf/hv-gpci-requests.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "req-gen/_begin.h"
diff --git a/arch/powerpc/perf/hv-gpci.h b/arch/powerpc/perf/hv-gpci.h
index 86ede8275961..a3053eda5dcc 100644
--- a/arch/powerpc/perf/hv-gpci.h
+++ b/arch/powerpc/perf/hv-gpci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_POWERPC_PERF_HV_GPCI_H_
#define LINUX_POWERPC_PERF_HV_GPCI_H_
diff --git a/arch/powerpc/perf/imc-pmu.c b/arch/powerpc/perf/imc-pmu.c
index 9ccac86f3463..36344117c680 100644
--- a/arch/powerpc/perf/imc-pmu.c
+++ b/arch/powerpc/perf/imc-pmu.c
@@ -399,6 +399,20 @@ static void nest_imc_counters_release(struct perf_event *event)
/* Take the mutex lock for this node and then decrement the reference count */
mutex_lock(&ref->lock);
+ if (ref->refc == 0) {
+ /*
+ * The scenario where this is true is, when perf session is
+ * started, followed by offlining of all cpus in a given node.
+ *
+ * In the cpuhotplug offline path, ppc_nest_imc_cpu_offline()
+ * function set the ref->count to zero, if the cpu which is
+ * about to offline is the last cpu in a given node and make
+ * an OPAL call to disable the engine in that node.
+ *
+ */
+ mutex_unlock(&ref->lock);
+ return;
+ }
ref->refc--;
if (ref->refc == 0) {
rc = opal_imc_counters_stop(OPAL_IMC_COUNTERS_NEST,
@@ -523,8 +537,8 @@ static int core_imc_mem_init(int cpu, int size)
/* We need only vbase for core counters */
mem_info->vbase = page_address(alloc_pages_node(phys_id,
- GFP_KERNEL | __GFP_ZERO | __GFP_THISNODE,
- get_order(size)));
+ GFP_KERNEL | __GFP_ZERO | __GFP_THISNODE |
+ __GFP_NOWARN, get_order(size)));
if (!mem_info->vbase)
return -ENOMEM;
@@ -593,6 +607,20 @@ static int ppc_core_imc_cpu_offline(unsigned int cpu)
if (!cpumask_test_and_clear_cpu(cpu, &core_imc_cpumask))
return 0;
+ /*
+ * Check whether core_imc is registered. We could end up here
+ * if the cpuhotplug callback registration fails. i.e, callback
+ * invokes the offline path for all sucessfully registered cpus.
+ * At this stage, core_imc pmu will not be registered and we
+ * should return here.
+ *
+ * We return with a zero since this is not an offline failure.
+ * And cpuhp_setup_state() returns the actual failure reason
+ * to the caller, which inturn will call the cleanup routine.
+ */
+ if (!core_imc_pmu->pmu.event_init)
+ return 0;
+
/* Find any online cpu in that core except the current "cpu" */
ncpu = cpumask_any_but(cpu_sibling_mask(cpu), cpu);
@@ -646,6 +674,20 @@ static void core_imc_counters_release(struct perf_event *event)
return;
mutex_lock(&ref->lock);
+ if (ref->refc == 0) {
+ /*
+ * The scenario where this is true is, when perf session is
+ * started, followed by offlining of all cpus in a given core.
+ *
+ * In the cpuhotplug offline path, ppc_core_imc_cpu_offline()
+ * function set the ref->count to zero, if the cpu which is
+ * about to offline is the last cpu in a given core and make
+ * an OPAL call to disable the engine in that core.
+ *
+ */
+ mutex_unlock(&ref->lock);
+ return;
+ }
ref->refc--;
if (ref->refc == 0) {
rc = opal_imc_counters_stop(OPAL_IMC_COUNTERS_CORE,
@@ -763,8 +805,8 @@ static int thread_imc_mem_alloc(int cpu_id, int size)
* free the memory in cpu offline path.
*/
local_mem = page_address(alloc_pages_node(phys_id,
- GFP_KERNEL | __GFP_ZERO | __GFP_THISNODE,
- get_order(size)));
+ GFP_KERNEL | __GFP_ZERO | __GFP_THISNODE |
+ __GFP_NOWARN, get_order(size)));
if (!local_mem)
return -ENOMEM;
@@ -1076,7 +1118,7 @@ static int init_nest_pmu_ref(void)
static void cleanup_all_core_imc_memory(void)
{
- int i, nr_cores = num_present_cpus() / threads_per_core;
+ int i, nr_cores = DIV_ROUND_UP(num_present_cpus(), threads_per_core);
struct imc_mem_info *ptr = core_imc_pmu->mem_info;
int size = core_imc_pmu->counter_mem_size;
@@ -1148,7 +1190,8 @@ static void imc_common_cpuhp_mem_free(struct imc_pmu *pmu_ptr)
}
/* Only free the attr_groups which are dynamically allocated */
- kfree(pmu_ptr->attr_groups[IMC_EVENT_ATTR]->attrs);
+ if (pmu_ptr->attr_groups[IMC_EVENT_ATTR])
+ kfree(pmu_ptr->attr_groups[IMC_EVENT_ATTR]->attrs);
kfree(pmu_ptr->attr_groups[IMC_EVENT_ATTR]);
kfree(pmu_ptr);
return;
@@ -1183,7 +1226,7 @@ static int imc_mem_init(struct imc_pmu *pmu_ptr, struct device_node *parent,
if (!pmu_ptr->pmu.name)
return -ENOMEM;
- nr_cores = num_present_cpus() / threads_per_core;
+ nr_cores = DIV_ROUND_UP(num_present_cpus(), threads_per_core);
pmu_ptr->mem_info = kcalloc(nr_cores, sizeof(struct imc_mem_info),
GFP_KERNEL);
diff --git a/arch/powerpc/perf/req-gen/_begin.h b/arch/powerpc/perf/req-gen/_begin.h
index acfb17a55c16..549f8782c52d 100644
--- a/arch/powerpc/perf/req-gen/_begin.h
+++ b/arch/powerpc/perf/req-gen/_begin.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Include paths to be used in interface defining headers */
#ifndef POWERPC_PERF_REQ_GEN_H_
#define POWERPC_PERF_REQ_GEN_H_
diff --git a/arch/powerpc/perf/req-gen/_clear.h b/arch/powerpc/perf/req-gen/_clear.h
index 422974f89573..67c3859157f3 100644
--- a/arch/powerpc/perf/req-gen/_clear.h
+++ b/arch/powerpc/perf/req-gen/_clear.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef __field_
#undef __count_
diff --git a/arch/powerpc/perf/req-gen/_request-begin.h b/arch/powerpc/perf/req-gen/_request-begin.h
index f6d98642cf1d..7c74c2ab4c0c 100644
--- a/arch/powerpc/perf/req-gen/_request-begin.h
+++ b/arch/powerpc/perf/req-gen/_request-begin.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define REQUEST(r_contents) \
REQUEST_(REQUEST_NAME, REQUEST_NUM, REQUEST_IDX_KIND, I(r_contents))
diff --git a/arch/powerpc/perf/req-gen/_request-end.h b/arch/powerpc/perf/req-gen/_request-end.h
index 5573be6c3588..7d9f4046c2ca 100644
--- a/arch/powerpc/perf/req-gen/_request-end.h
+++ b/arch/powerpc/perf/req-gen/_request-end.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef REQUEST
#undef __field
#undef __array
diff --git a/arch/powerpc/perf/req-gen/perf.h b/arch/powerpc/perf/req-gen/perf.h
index 1b122469323d..871a9a1766c2 100644
--- a/arch/powerpc/perf/req-gen/perf.h
+++ b/arch/powerpc/perf/req-gen/perf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_POWERPC_PERF_REQ_GEN_PERF_H_
#define LINUX_POWERPC_PERF_REQ_GEN_PERF_H_
diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig
index abc24501c4c0..60254a321a91 100644
--- a/arch/powerpc/platforms/40x/Kconfig
+++ b/arch/powerpc/platforms/40x/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ACADIA
bool "Acadia"
depends on 40x
diff --git a/arch/powerpc/platforms/44x/44x.h b/arch/powerpc/platforms/44x/44x.h
index 63f703ecd23c..0e912a6a0b9a 100644
--- a/arch/powerpc/platforms/44x/44x.h
+++ b/arch/powerpc/platforms/44x/44x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __POWERPC_PLATFORMS_44X_44X_H
#define __POWERPC_PLATFORMS_44X_44X_H
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig
index 01cb109ebf17..a6011422b861 100644
--- a/arch/powerpc/platforms/44x/Kconfig
+++ b/arch/powerpc/platforms/44x/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_47x
bool "Support for 47x variant"
depends on 44x
diff --git a/arch/powerpc/platforms/44x/Makefile b/arch/powerpc/platforms/44x/Makefile
index 2c5651992369..1b78c6af821a 100644
--- a/arch/powerpc/platforms/44x/Makefile
+++ b/arch/powerpc/platforms/44x/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += misc_44x.o machine_check.o
ifneq ($(CONFIG_PPC4xx_CPM),y)
obj-y += idle.o
diff --git a/arch/powerpc/platforms/44x/virtex_ml510.c b/arch/powerpc/platforms/44x/virtex_ml510.c
index 1fdb8748638d..349f218b335c 100644
--- a/arch/powerpc/platforms/44x/virtex_ml510.c
+++ b/arch/powerpc/platforms/44x/virtex_ml510.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/i8259.h>
#include <linux/pci.h>
#include "44x.h"
diff --git a/arch/powerpc/platforms/512x/Kconfig b/arch/powerpc/platforms/512x/Kconfig
index bf7ae5cbd07a..b59eab6cbb1b 100644
--- a/arch/powerpc/platforms/512x/Kconfig
+++ b/arch/powerpc/platforms/512x/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_MPC512x
bool "512x-based boards"
depends on 6xx
diff --git a/arch/powerpc/platforms/512x/Makefile b/arch/powerpc/platforms/512x/Makefile
index f47d422953df..2daf22ee26a0 100644
--- a/arch/powerpc/platforms/512x/Makefile
+++ b/arch/powerpc/platforms/512x/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Freescale PowerPC 512x linux kernel.
#
diff --git a/arch/powerpc/platforms/52xx/Kconfig b/arch/powerpc/platforms/52xx/Kconfig
index e4c745981912..55a587070342 100644
--- a/arch/powerpc/platforms/52xx/Kconfig
+++ b/arch/powerpc/platforms/52xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_MPC52xx
bool "52xx-based boards"
depends on 6xx
diff --git a/arch/powerpc/platforms/52xx/Makefile b/arch/powerpc/platforms/52xx/Makefile
index 4e62486791e9..ff2f86fe5429 100644
--- a/arch/powerpc/platforms/52xx/Makefile
+++ b/arch/powerpc/platforms/52xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for 52xx based boards
#
diff --git a/arch/powerpc/platforms/52xx/lite5200_pm.c b/arch/powerpc/platforms/52xx/lite5200_pm.c
index 870b70f5d1bd..e7da22d1df87 100644
--- a/arch/powerpc/platforms/52xx/lite5200_pm.c
+++ b/arch/powerpc/platforms/52xx/lite5200_pm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/suspend.h>
#include <asm/io.h>
diff --git a/arch/powerpc/platforms/52xx/lite5200_sleep.S b/arch/powerpc/platforms/52xx/lite5200_sleep.S
index 08ab6fefcf7a..3a9969c429b3 100644
--- a/arch/powerpc/platforms/52xx/lite5200_sleep.S
+++ b/arch/powerpc/platforms/52xx/lite5200_sleep.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/reg.h>
#include <asm/ppc_asm.h>
#include <asm/processor.h>
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pm.c b/arch/powerpc/platforms/52xx/mpc52xx_pm.c
index 8310e8b5b57f..31d3515672f3 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_pm.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_pm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/suspend.h>
#include <linux/io.h>
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_sleep.S b/arch/powerpc/platforms/52xx/mpc52xx_sleep.S
index 4dc170b0ae18..a66eb311b639 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_sleep.S
+++ b/arch/powerpc/platforms/52xx/mpc52xx_sleep.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/reg.h>
#include <asm/ppc_asm.h>
#include <asm/processor.h>
diff --git a/arch/powerpc/platforms/82xx/Kconfig b/arch/powerpc/platforms/82xx/Kconfig
index 994d1a959e20..6e04099361b9 100644
--- a/arch/powerpc/platforms/82xx/Kconfig
+++ b/arch/powerpc/platforms/82xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig PPC_82xx
bool "82xx-based boards (PQ II)"
depends on 6xx
diff --git a/arch/powerpc/platforms/82xx/Makefile b/arch/powerpc/platforms/82xx/Makefile
index 455fe21e37c4..8d713c601bf2 100644
--- a/arch/powerpc/platforms/82xx/Makefile
+++ b/arch/powerpc/platforms/82xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the PowerPC 82xx linux kernel.
#
diff --git a/arch/powerpc/platforms/82xx/pq2.h b/arch/powerpc/platforms/82xx/pq2.h
index 3080ce3441c1..902ef0bd4949 100644
--- a/arch/powerpc/platforms/82xx/pq2.h
+++ b/arch/powerpc/platforms/82xx/pq2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PQ2_H
#define _PQ2_H
diff --git a/arch/powerpc/platforms/83xx/Kconfig b/arch/powerpc/platforms/83xx/Kconfig
index 4ef7f1cd05b7..7e38b7b71a5a 100644
--- a/arch/powerpc/platforms/83xx/Kconfig
+++ b/arch/powerpc/platforms/83xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig PPC_83xx
bool "83xx-based boards"
depends on 6xx
diff --git a/arch/powerpc/platforms/83xx/Makefile b/arch/powerpc/platforms/83xx/Makefile
index ed95bfcbcbff..bb4720897f6a 100644
--- a/arch/powerpc/platforms/83xx/Makefile
+++ b/arch/powerpc/platforms/83xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the PowerPC 83xx linux kernel.
#
diff --git a/arch/powerpc/platforms/83xx/mpc83xx.h b/arch/powerpc/platforms/83xx/mpc83xx.h
index 636eb9d0401a..459145623334 100644
--- a/arch/powerpc/platforms/83xx/mpc83xx.h
+++ b/arch/powerpc/platforms/83xx/mpc83xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MPC83XX_H__
#define __MPC83XX_H__
diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig
index 47b389dc4938..68920d42b4bc 100644
--- a/arch/powerpc/platforms/85xx/Kconfig
+++ b/arch/powerpc/platforms/85xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig FSL_SOC_BOOKE
bool "Freescale Book-E Machine Type"
depends on PPC_85xx || PPC_BOOK3E
diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile
index fe19dad568e2..d1dd0dca5ebf 100644
--- a/arch/powerpc/platforms/85xx/Makefile
+++ b/arch/powerpc/platforms/85xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the PowerPC 85xx linux kernel.
#
diff --git a/arch/powerpc/platforms/85xx/mpc85xx.h b/arch/powerpc/platforms/85xx/mpc85xx.h
index 39056f6befeb..fa23f9b0592c 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx.h
+++ b/arch/powerpc/platforms/85xx/mpc85xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef MPC85xx_H
#define MPC85xx_H
extern int mpc85xx_common_publish_devices(void);
diff --git a/arch/powerpc/platforms/85xx/smp.h b/arch/powerpc/platforms/85xx/smp.h
index 0b20ae315c53..3936ff6dfbdb 100644
--- a/arch/powerpc/platforms/85xx/smp.h
+++ b/arch/powerpc/platforms/85xx/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef POWERPC_85XX_SMP_H_
#define POWERPC_85XX_SMP_H_ 1
diff --git a/arch/powerpc/platforms/86xx/Kconfig b/arch/powerpc/platforms/86xx/Kconfig
index ce619bd1f82d..bcd179d3ed92 100644
--- a/arch/powerpc/platforms/86xx/Kconfig
+++ b/arch/powerpc/platforms/86xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_86xx
menuconfig PPC_86xx
bool "86xx-based boards"
diff --git a/arch/powerpc/platforms/86xx/Makefile b/arch/powerpc/platforms/86xx/Makefile
index 01958fedc3f2..2c04449be107 100644
--- a/arch/powerpc/platforms/86xx/Makefile
+++ b/arch/powerpc/platforms/86xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the PowerPC 86xx linux kernel.
#
diff --git a/arch/powerpc/platforms/8xx/Kconfig b/arch/powerpc/platforms/8xx/Kconfig
index 536b0c5d5ce3..e2089d3de00c 100644
--- a/arch/powerpc/platforms/8xx/Kconfig
+++ b/arch/powerpc/platforms/8xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config CPM1
bool
select CPM
diff --git a/arch/powerpc/platforms/8xx/Makefile b/arch/powerpc/platforms/8xx/Makefile
index f9af3218bd9c..708ab099e886 100644
--- a/arch/powerpc/platforms/8xx/Makefile
+++ b/arch/powerpc/platforms/8xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the PowerPC 8xx linux kernel.
#
diff --git a/arch/powerpc/platforms/8xx/m8xx_setup.c b/arch/powerpc/platforms/8xx/m8xx_setup.c
index 1917d69f84df..e1274db53d48 100644
--- a/arch/powerpc/platforms/8xx/m8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1995 Linus Torvalds
* Adapted from 'alpha' version by Gary Thomas
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig
index 4fd64d3f5c44..d5e34ce5fd5d 100644
--- a/arch/powerpc/platforms/Kconfig
+++ b/arch/powerpc/platforms/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Platform support"
source "arch/powerpc/platforms/powernv/Kconfig"
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index 13663efc1d31..a78f255111f2 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC64
bool "64-bit kernel"
default n
diff --git a/arch/powerpc/platforms/Makefile b/arch/powerpc/platforms/Makefile
index d7a55ecfaee5..e46bb7ea710f 100644
--- a/arch/powerpc/platforms/Makefile
+++ b/arch/powerpc/platforms/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
diff --git a/arch/powerpc/platforms/amigaone/Kconfig b/arch/powerpc/platforms/amigaone/Kconfig
index 128de25cc284..03dc1e37c25b 100644
--- a/arch/powerpc/platforms/amigaone/Kconfig
+++ b/arch/powerpc/platforms/amigaone/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config AMIGAONE
bool "Eyetech AmigaOne/MAI Teron"
depends on 6xx && BROKEN_ON_SMP
diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
index a4522f09d65e..9f5958f16923 100644
--- a/arch/powerpc/platforms/cell/Kconfig
+++ b/arch/powerpc/platforms/cell/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_CELL
bool
default n
diff --git a/arch/powerpc/platforms/cell/Makefile b/arch/powerpc/platforms/cell/Makefile
index 00464305763d..d5f808e8a5f3 100644
--- a/arch/powerpc/platforms/cell/Makefile
+++ b/arch/powerpc/platforms/cell/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PPC_CELL_COMMON) += cbe_regs.o interrupt.o pervasive.o
obj-$(CONFIG_PPC_CELL_NATIVE) += iommu.o setup.o spider-pic.o \
diff --git a/arch/powerpc/platforms/cell/interrupt.h b/arch/powerpc/platforms/cell/interrupt.h
index 4f60ae6ca358..a47902248541 100644
--- a/arch/powerpc/platforms/cell/interrupt.h
+++ b/arch/powerpc/platforms/cell/interrupt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_CELL_PIC_H
#define ASM_CELL_PIC_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/platforms/cell/ras.h b/arch/powerpc/platforms/cell/ras.h
index eb7ee54c82a0..6c2e6bc0062e 100644
--- a/arch/powerpc/platforms/cell/ras.h
+++ b/arch/powerpc/platforms/cell/ras.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef RAS_H
#define RAS_H
diff --git a/arch/powerpc/platforms/cell/spufs/Makefile b/arch/powerpc/platforms/cell/spufs/Makefile
index 52a7d2596d30..52e4c80ec8d0 100644
--- a/arch/powerpc/platforms/cell/spufs/Makefile
+++ b/arch/powerpc/platforms/cell/spufs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_SPU_FS) += spufs.o
spufs-y += inode.o file.o context.o syscalls.o
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c
index cfacbee24d7b..07f82d7395ff 100644
--- a/arch/powerpc/platforms/cell/spufs/run.c
+++ b/arch/powerpc/platforms/cell/spufs/run.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define DEBUG
#include <linux/wait.h>
diff --git a/arch/powerpc/platforms/cell/spufs/sputrace.h b/arch/powerpc/platforms/cell/spufs/sputrace.h
index db2656aa4103..d557e999b662 100644
--- a/arch/powerpc/platforms/cell/spufs/sputrace.h
+++ b/arch/powerpc/platforms/cell/spufs/sputrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_SPUFS_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_SPUFS_H
diff --git a/arch/powerpc/platforms/cell/spufs/syscalls.c b/arch/powerpc/platforms/cell/spufs/syscalls.c
index 0d290ea83dc1..157e046e6e93 100644
--- a/arch/powerpc/platforms/cell/spufs/syscalls.c
+++ b/arch/powerpc/platforms/cell/spufs/syscalls.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/file.h>
#include <linux/fs.h>
#include <linux/export.h>
diff --git a/arch/powerpc/platforms/chrp/Kconfig b/arch/powerpc/platforms/chrp/Kconfig
index d3cdab582c5d..ead99eff875a 100644
--- a/arch/powerpc/platforms/chrp/Kconfig
+++ b/arch/powerpc/platforms/chrp/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_CHRP
bool "Common Hardware Reference Platform (CHRP) based machines"
depends on 6xx
diff --git a/arch/powerpc/platforms/chrp/chrp.h b/arch/powerpc/platforms/chrp/chrp.h
index 63f0aee4c158..a5a7c338caf9 100644
--- a/arch/powerpc/platforms/chrp/chrp.h
+++ b/arch/powerpc/platforms/chrp/chrp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Declarations of CHRP platform-specific things.
*/
diff --git a/arch/powerpc/platforms/chrp/pci.c b/arch/powerpc/platforms/chrp/pci.c
index 27264794f5c0..0f512d35f7c5 100644
--- a/arch/powerpc/platforms/chrp/pci.c
+++ b/arch/powerpc/platforms/chrp/pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* CHRP pci routines.
*/
diff --git a/arch/powerpc/platforms/chrp/pegasos_eth.c b/arch/powerpc/platforms/chrp/pegasos_eth.c
index 19760712b39d..485cf5ef73d4 100644
--- a/arch/powerpc/platforms/chrp/pegasos_eth.c
+++ b/arch/powerpc/platforms/chrp/pegasos_eth.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2005 Sven Luther <sl@bplan-gmbh.de>
* Thanks to :
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index 0ce1b45f02a8..481ed133e04b 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1995 Linus Torvalds
* Adapted from 'alpha' version by Gary Thomas
diff --git a/arch/powerpc/platforms/chrp/smp.c b/arch/powerpc/platforms/chrp/smp.c
index 14515040f7cd..f7bb6cb8d1e3 100644
--- a/arch/powerpc/platforms/chrp/smp.c
+++ b/arch/powerpc/platforms/chrp/smp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Smp support for CHRP machines.
*
diff --git a/arch/powerpc/platforms/chrp/time.c b/arch/powerpc/platforms/chrp/time.c
index f803f4b8ab6f..03d115aaa191 100644
--- a/arch/powerpc/platforms/chrp/time.c
+++ b/arch/powerpc/platforms/chrp/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1991, 1992, 1995 Linus Torvalds
*
diff --git a/arch/powerpc/platforms/embedded6xx/Kconfig b/arch/powerpc/platforms/embedded6xx/Kconfig
index a25f496c2ef9..9fb2d5912c5a 100644
--- a/arch/powerpc/platforms/embedded6xx/Kconfig
+++ b/arch/powerpc/platforms/embedded6xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config EMBEDDED6xx
bool "Embedded 6xx/7xx/7xxx-based boards"
depends on 6xx && BROKEN_ON_SMP
diff --git a/arch/powerpc/platforms/embedded6xx/Makefile b/arch/powerpc/platforms/embedded6xx/Makefile
index f126a2a09981..12154e3257ad 100644
--- a/arch/powerpc/platforms/embedded6xx/Makefile
+++ b/arch/powerpc/platforms/embedded6xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the 6xx/7xx/7xxxx linux kernel.
#
diff --git a/arch/powerpc/platforms/maple/Kconfig b/arch/powerpc/platforms/maple/Kconfig
index e359d0db092c..376d0be36b66 100644
--- a/arch/powerpc/platforms/maple/Kconfig
+++ b/arch/powerpc/platforms/maple/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_MAPLE
depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
bool "Maple 970FX Evaluation Board"
diff --git a/arch/powerpc/platforms/maple/maple.h b/arch/powerpc/platforms/maple/maple.h
index eecfa182b06e..d10f4af3a42e 100644
--- a/arch/powerpc/platforms/maple/maple.h
+++ b/arch/powerpc/platforms/maple/maple.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Declarations for maple-specific code.
*
diff --git a/arch/powerpc/platforms/pasemi/Kconfig b/arch/powerpc/platforms/pasemi/Kconfig
index c7f1dbe94de7..d458a791d35b 100644
--- a/arch/powerpc/platforms/pasemi/Kconfig
+++ b/arch/powerpc/platforms/pasemi/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_PASEMI
depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
bool "PA Semi SoC-based platforms"
diff --git a/arch/powerpc/platforms/pasemi/pasemi.h b/arch/powerpc/platforms/pasemi/pasemi.h
index 74cbcb357612..329d2a619254 100644
--- a/arch/powerpc/platforms/pasemi/pasemi.h
+++ b/arch/powerpc/platforms/pasemi/pasemi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PASEMI_PASEMI_H
#define _PASEMI_PASEMI_H
diff --git a/arch/powerpc/platforms/powermac/Kconfig b/arch/powerpc/platforms/powermac/Kconfig
index 43c606268baf..fc90cb35cea3 100644
--- a/arch/powerpc/platforms/powermac/Kconfig
+++ b/arch/powerpc/platforms/powermac/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_PMAC
bool "Apple PowerMac based machines"
depends on PPC_BOOK3S && CPU_BIG_ENDIAN
diff --git a/arch/powerpc/platforms/powermac/Makefile b/arch/powerpc/platforms/powermac/Makefile
index 1eb7b45e017d..f2839eed0f89 100644
--- a/arch/powerpc/platforms/powermac/Makefile
+++ b/arch/powerpc/platforms/powermac/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
CFLAGS_bootx_init.o += -fPIC
ifdef CONFIG_FUNCTION_TRACER
diff --git a/arch/powerpc/platforms/powermac/pfunc_base.c b/arch/powerpc/platforms/powermac/pfunc_base.c
index 860159d46ab8..fd2e210559c8 100644
--- a/arch/powerpc/platforms/powermac/pfunc_base.c
+++ b/arch/powerpc/platforms/powermac/pfunc_base.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/init.h>
#include <linux/delay.h>
diff --git a/arch/powerpc/platforms/powermac/pmac.h b/arch/powerpc/platforms/powermac/pmac.h
index e7f8163d6769..6f15b8804e9b 100644
--- a/arch/powerpc/platforms/powermac/pmac.h
+++ b/arch/powerpc/platforms/powermac/pmac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PMAC_H__
#define __PMAC_H__
diff --git a/arch/powerpc/platforms/powermac/time.c b/arch/powerpc/platforms/powermac/time.c
index 8680bb69795d..274af6fa388e 100644
--- a/arch/powerpc/platforms/powermac/time.c
+++ b/arch/powerpc/platforms/powermac/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for periodic interrupts (100 per second) and for getting
* the current time from the RTC on Power Macintoshes.
diff --git a/arch/powerpc/platforms/powermac/udbg_adb.c b/arch/powerpc/platforms/powermac/udbg_adb.c
index 366bd221edec..64f38f0d15ed 100644
--- a/arch/powerpc/platforms/powermac/udbg_adb.c
+++ b/arch/powerpc/platforms/powermac/udbg_adb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/errno.h>
diff --git a/arch/powerpc/platforms/powernv/Kconfig b/arch/powerpc/platforms/powernv/Kconfig
index 340cbe263b33..f8dc98d3dc01 100644
--- a/arch/powerpc/platforms/powernv/Kconfig
+++ b/arch/powerpc/platforms/powernv/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_POWERNV
depends on PPC64 && PPC_BOOK3S
bool "IBM PowerNV (Non-Virtualized) platform support"
diff --git a/arch/powerpc/platforms/powernv/Makefile b/arch/powerpc/platforms/powernv/Makefile
index 37d60f7dd86d..7a31c26500e6 100644
--- a/arch/powerpc/platforms/powernv/Makefile
+++ b/arch/powerpc/platforms/powernv/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += setup.o opal-wrappers.o opal.o opal-async.o idle.o
obj-y += opal-rtc.o opal-nvram.o opal-lpc.o opal-flash.o
obj-y += rng.o opal-elog.o opal-dump.o opal-sysparam.o opal-sensor.o
diff --git a/arch/powerpc/platforms/powernv/idle.c b/arch/powerpc/platforms/powernv/idle.c
index 9f59041a172b..443d5ca71995 100644
--- a/arch/powerpc/platforms/powernv/idle.c
+++ b/arch/powerpc/platforms/powernv/idle.c
@@ -393,7 +393,13 @@ static void pnv_program_cpu_hotplug_lpcr(unsigned int cpu, u64 lpcr_val)
u64 pir = get_hard_smp_processor_id(cpu);
mtspr(SPRN_LPCR, lpcr_val);
- opal_slw_set_reg(pir, SPRN_LPCR, lpcr_val);
+
+ /*
+ * Program the LPCR via stop-api only if the deepest stop state
+ * can lose hypervisor context.
+ */
+ if (supported_cpuidle_states & OPAL_PM_LOSE_FULL_CONTEXT)
+ opal_slw_set_reg(pir, SPRN_LPCR, lpcr_val);
}
/*
diff --git a/arch/powerpc/platforms/powernv/opal-tracepoints.c b/arch/powerpc/platforms/powernv/opal-tracepoints.c
index 3c447002edff..1ab7d26c0a2c 100644
--- a/arch/powerpc/platforms/powernv/opal-tracepoints.c
+++ b/arch/powerpc/platforms/powernv/opal-tracepoints.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/percpu.h>
#include <linux/jump_label.h>
#include <asm/trace.h>
diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h
index a95273c524f6..b47f9406d97e 100644
--- a/arch/powerpc/platforms/powernv/pci.h
+++ b/arch/powerpc/platforms/powernv/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __POWERNV_PCI_H
#define __POWERNV_PCI_H
diff --git a/arch/powerpc/platforms/powernv/powernv.h b/arch/powerpc/platforms/powernv/powernv.h
index a159d48573d7..94f17ab1374b 100644
--- a/arch/powerpc/platforms/powernv/powernv.h
+++ b/arch/powerpc/platforms/powernv/powernv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _POWERNV_H
#define _POWERNV_H
diff --git a/arch/powerpc/platforms/powernv/setup.c b/arch/powerpc/platforms/powernv/setup.c
index 897aa1400eb8..bbb73aa0eb8f 100644
--- a/arch/powerpc/platforms/powernv/setup.c
+++ b/arch/powerpc/platforms/powernv/setup.c
@@ -272,7 +272,15 @@ static void pnv_kexec_cpu_down(int crash_shutdown, int secondary)
#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE
static unsigned long pnv_memory_block_size(void)
{
- return 256UL * 1024 * 1024;
+ /*
+ * We map the kernel linear region with 1GB large pages on radix. For
+ * memory hot unplug to work our memory block size must be at least
+ * this size.
+ */
+ if (radix_enabled())
+ return 1UL * 1024 * 1024 * 1024;
+ else
+ return 256UL * 1024 * 1024;
}
#endif
diff --git a/arch/powerpc/platforms/ps3/Kconfig b/arch/powerpc/platforms/ps3/Kconfig
index b27f40f26efc..6f7525555b19 100644
--- a/arch/powerpc/platforms/ps3/Kconfig
+++ b/arch/powerpc/platforms/ps3/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_PS3
bool "Sony PS3"
depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
diff --git a/arch/powerpc/platforms/ps3/Makefile b/arch/powerpc/platforms/ps3/Makefile
index 02b9e636dab7..86bf2967a8d4 100644
--- a/arch/powerpc/platforms/ps3/Makefile
+++ b/arch/powerpc/platforms/ps3/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += setup.o mm.o time.o hvcall.o htab.o repository.o
obj-y += interrupt.o exports.o os-area.o
obj-y += system-bus.o
diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig
index 71dd69d9ec64..0c698fd6d491 100644
--- a/arch/powerpc/platforms/pseries/Kconfig
+++ b/arch/powerpc/platforms/pseries/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_PSERIES
depends on PPC64 && PPC_BOOK3S
bool "IBM pSeries & new (POWER5-based) iSeries"
diff --git a/arch/powerpc/platforms/pseries/Makefile b/arch/powerpc/platforms/pseries/Makefile
index 8f4ba089e802..13eede60c24d 100644
--- a/arch/powerpc/platforms/pseries/Makefile
+++ b/arch/powerpc/platforms/pseries/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_PPC64) := $(NO_MINIMAL_TOC)
ccflags-$(CONFIG_PPC_PSERIES_DEBUG) += -DDEBUG
diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c
index 783f36364690..e45b5f10645a 100644
--- a/arch/powerpc/platforms/pseries/dlpar.c
+++ b/arch/powerpc/platforms/pseries/dlpar.c
@@ -266,7 +266,6 @@ int dlpar_attach_node(struct device_node *dn, struct device_node *parent)
return rc;
}
- of_node_put(dn->parent);
return 0;
}
diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c
index fc0d8f97c03a..fadb95efbb9e 100644
--- a/arch/powerpc/platforms/pseries/hotplug-cpu.c
+++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c
@@ -462,15 +462,19 @@ static ssize_t dlpar_cpu_add(u32 drc_index)
}
dn = dlpar_configure_connector(cpu_to_be32(drc_index), parent);
- of_node_put(parent);
if (!dn) {
pr_warn("Failed call to configure-connector, drc index: %x\n",
drc_index);
dlpar_release_drc(drc_index);
+ of_node_put(parent);
return -EINVAL;
}
rc = dlpar_attach_node(dn, parent);
+
+ /* Regardless we are done with parent now */
+ of_node_put(parent);
+
if (rc) {
saved_rc = rc;
pr_warn("Failed to attach node %s, rc: %d, drc index: %x\n",
diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c
index 210ce632d63e..f7042ad492ba 100644
--- a/arch/powerpc/platforms/pseries/mobility.c
+++ b/arch/powerpc/platforms/pseries/mobility.c
@@ -226,8 +226,10 @@ static int add_dt_node(__be32 parent_phandle, __be32 drc_index)
return -ENOENT;
dn = dlpar_configure_connector(drc_index, parent_dn);
- if (!dn)
+ if (!dn) {
+ of_node_put(parent_dn);
return -ENOENT;
+ }
rc = dlpar_attach_node(dn, parent_dn);
if (rc)
diff --git a/arch/powerpc/platforms/pseries/of_helpers.c b/arch/powerpc/platforms/pseries/of_helpers.c
index 2798933c0e38..7e75101fa522 100644
--- a/arch/powerpc/platforms/pseries/of_helpers.c
+++ b/arch/powerpc/platforms/pseries/of_helpers.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/string.h>
#include <linux/err.h>
#include <linux/slab.h>
diff --git a/arch/powerpc/platforms/pseries/of_helpers.h b/arch/powerpc/platforms/pseries/of_helpers.h
index bb83d39aef65..decad6553d8f 100644
--- a/arch/powerpc/platforms/pseries/of_helpers.h
+++ b/arch/powerpc/platforms/pseries/of_helpers.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PSERIES_OF_HELPERS_H
#define _PSERIES_OF_HELPERS_H
diff --git a/arch/powerpc/platforms/pseries/offline_states.h b/arch/powerpc/platforms/pseries/offline_states.h
index 08672d9136ab..51414aee2862 100644
--- a/arch/powerpc/platforms/pseries/offline_states.h
+++ b/arch/powerpc/platforms/pseries/offline_states.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _OFFLINE_STATES_H_
#define _OFFLINE_STATES_H_
diff --git a/arch/powerpc/platforms/pseries/suspend.c b/arch/powerpc/platforms/pseries/suspend.c
index e76aefae2aa2..89726f07d249 100644
--- a/arch/powerpc/platforms/pseries/suspend.c
+++ b/arch/powerpc/platforms/pseries/suspend.c
@@ -151,7 +151,7 @@ static ssize_t store_hibernate(struct device *dev,
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
- if (!alloc_cpumask_var(&offline_mask, GFP_TEMPORARY))
+ if (!alloc_cpumask_var(&offline_mask, GFP_KERNEL))
return -ENOMEM;
stream_id = simple_strtoul(buf, NULL, 16);
diff --git a/arch/powerpc/purgatory/Makefile b/arch/powerpc/purgatory/Makefile
index ac8793c13348..30e05decbb4c 100644
--- a/arch/powerpc/purgatory/Makefile
+++ b/arch/powerpc/purgatory/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
targets += trampoline.o purgatory.ro kexec-purgatory.c
LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined
diff --git a/arch/powerpc/sysdev/Kconfig b/arch/powerpc/sysdev/Kconfig
index caf882e749dc..bcef2ac56479 100644
--- a/arch/powerpc/sysdev/Kconfig
+++ b/arch/powerpc/sysdev/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
#
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
index 79416fa2e3ba..0baba21404dc 100644
--- a/arch/powerpc/sysdev/Makefile
+++ b/arch/powerpc/sysdev/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
ccflags-$(CONFIG_PPC64) := $(NO_MINIMAL_TOC)
diff --git a/arch/powerpc/sysdev/cpm1.c b/arch/powerpc/sysdev/cpm1.c
index c651e668996b..c6f154b602fb 100644
--- a/arch/powerpc/sysdev/cpm1.c
+++ b/arch/powerpc/sysdev/cpm1.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* General Purpose functions for the global management of the
* Communication Processor Module.
diff --git a/arch/powerpc/sysdev/cpm2_pic.h b/arch/powerpc/sysdev/cpm2_pic.h
index 2c5f70c24485..a8a26951f311 100644
--- a/arch/powerpc/sysdev/cpm2_pic.h
+++ b/arch/powerpc/sysdev/cpm2_pic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_KERNEL_CPM2_H
#define _PPC_KERNEL_CPM2_H
diff --git a/arch/powerpc/sysdev/fsl_rio.c b/arch/powerpc/sysdev/fsl_rio.c
index 9234be1e66f5..5011ffea4e4b 100644
--- a/arch/powerpc/sysdev/fsl_rio.c
+++ b/arch/powerpc/sysdev/fsl_rio.c
@@ -71,6 +71,8 @@
#define RIWAR_WRTYP_ALLOC 0x00006000
#define RIWAR_SIZE_MASK 0x0000003F
+static DEFINE_SPINLOCK(fsl_rio_config_lock);
+
#define __fsl_read_rio_config(x, addr, err, op) \
__asm__ __volatile__( \
"1: "op" %1,0(%2)\n" \
@@ -184,6 +186,7 @@ fsl_rio_config_read(struct rio_mport *mport, int index, u16 destid,
u8 hopcount, u32 offset, int len, u32 *val)
{
struct rio_priv *priv = mport->priv;
+ unsigned long flags;
u8 *data;
u32 rval, err = 0;
@@ -197,6 +200,8 @@ fsl_rio_config_read(struct rio_mport *mport, int index, u16 destid,
if (offset > (0x1000000 - len) || !IS_ALIGNED(offset, len))
return -EINVAL;
+ spin_lock_irqsave(&fsl_rio_config_lock, flags);
+
out_be32(&priv->maint_atmu_regs->rowtar,
(destid << 22) | (hopcount << 12) | (offset >> 12));
out_be32(&priv->maint_atmu_regs->rowtear, (destid >> 10));
@@ -213,6 +218,7 @@ fsl_rio_config_read(struct rio_mport *mport, int index, u16 destid,
__fsl_read_rio_config(rval, data, err, "lwz");
break;
default:
+ spin_unlock_irqrestore(&fsl_rio_config_lock, flags);
return -EINVAL;
}
@@ -221,6 +227,7 @@ fsl_rio_config_read(struct rio_mport *mport, int index, u16 destid,
err, destid, hopcount, offset);
}
+ spin_unlock_irqrestore(&fsl_rio_config_lock, flags);
*val = rval;
return err;
@@ -244,7 +251,10 @@ fsl_rio_config_write(struct rio_mport *mport, int index, u16 destid,
u8 hopcount, u32 offset, int len, u32 val)
{
struct rio_priv *priv = mport->priv;
+ unsigned long flags;
u8 *data;
+ int ret = 0;
+
pr_debug
("fsl_rio_config_write:"
" index %d destid %d hopcount %d offset %8.8x len %d val %8.8x\n",
@@ -255,6 +265,8 @@ fsl_rio_config_write(struct rio_mport *mport, int index, u16 destid,
if (offset > (0x1000000 - len) || !IS_ALIGNED(offset, len))
return -EINVAL;
+ spin_lock_irqsave(&fsl_rio_config_lock, flags);
+
out_be32(&priv->maint_atmu_regs->rowtar,
(destid << 22) | (hopcount << 12) | (offset >> 12));
out_be32(&priv->maint_atmu_regs->rowtear, (destid >> 10));
@@ -271,10 +283,11 @@ fsl_rio_config_write(struct rio_mport *mport, int index, u16 destid,
out_be32((u32 *) data, val);
break;
default:
- return -EINVAL;
+ ret = -EINVAL;
}
+ spin_unlock_irqrestore(&fsl_rio_config_lock, flags);
- return 0;
+ return ret;
}
static void fsl_rio_inbound_mem_init(struct rio_priv *priv)
diff --git a/arch/powerpc/sysdev/fsl_rmu.c b/arch/powerpc/sysdev/fsl_rmu.c
index ab7a74c75be8..88b35a3dcdc5 100644
--- a/arch/powerpc/sysdev/fsl_rmu.c
+++ b/arch/powerpc/sysdev/fsl_rmu.c
@@ -104,6 +104,8 @@
#define DOORBELL_MESSAGE_SIZE 0x08
+static DEFINE_SPINLOCK(fsl_rio_doorbell_lock);
+
struct rio_msg_regs {
u32 omr;
u32 osr;
@@ -626,9 +628,13 @@ err_out:
int fsl_rio_doorbell_send(struct rio_mport *mport,
int index, u16 destid, u16 data)
{
+ unsigned long flags;
+
pr_debug("fsl_doorbell_send: index %d destid %4.4x data %4.4x\n",
index, destid, data);
+ spin_lock_irqsave(&fsl_rio_doorbell_lock, flags);
+
/* In the serial version silicons, such as MPC8548, MPC8641,
* below operations is must be.
*/
@@ -638,6 +644,8 @@ int fsl_rio_doorbell_send(struct rio_mport *mport,
out_be32(&dbell->dbell_regs->oddatr, (index << 20) | data);
out_be32(&dbell->dbell_regs->odmr, 0x00000001);
+ spin_unlock_irqrestore(&fsl_rio_doorbell_lock, flags);
+
return 0;
}
diff --git a/arch/powerpc/sysdev/fsl_soc.h b/arch/powerpc/sysdev/fsl_soc.h
index 2640446f8bc4..db11b06eb38f 100644
--- a/arch/powerpc/sysdev/fsl_soc.h
+++ b/arch/powerpc/sysdev/fsl_soc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PPC_FSL_SOC_H
#define __PPC_FSL_SOC_H
#ifdef __KERNEL__
diff --git a/arch/powerpc/sysdev/ge/ge_pic.h b/arch/powerpc/sysdev/ge/ge_pic.h
index 5bf7e4b81e36..923dedba3c9c 100644
--- a/arch/powerpc/sysdev/ge/ge_pic.h
+++ b/arch/powerpc/sysdev/ge/ge_pic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GEF_PIC_H__
#define __GEF_PIC_H__
diff --git a/arch/powerpc/sysdev/micropatch.c b/arch/powerpc/sysdev/micropatch.c
index 6727dc54d549..33a9042fca80 100644
--- a/arch/powerpc/sysdev/micropatch.c
+++ b/arch/powerpc/sysdev/micropatch.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Microcode patches for the CPM as supplied by Motorola.
* This is the one for IIC/SPI. There is a newer one that
diff --git a/arch/powerpc/sysdev/mpc5xxx_clocks.c b/arch/powerpc/sysdev/mpc5xxx_clocks.c
index 573292663cf2..834a6d7fbd88 100644
--- a/arch/powerpc/sysdev/mpc5xxx_clocks.c
+++ b/arch/powerpc/sysdev/mpc5xxx_clocks.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/**
* mpc5xxx_get_bus_frequency - Find the bus frequency for a device
* @node: device node
diff --git a/arch/powerpc/sysdev/mv64x60.h b/arch/powerpc/sysdev/mv64x60.h
index 4f618fa465c0..60cfcb90d1fa 100644
--- a/arch/powerpc/sysdev/mv64x60.h
+++ b/arch/powerpc/sysdev/mv64x60.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MV64X60_H__
#define __MV64X60_H__
diff --git a/arch/powerpc/sysdev/simple_gpio.h b/arch/powerpc/sysdev/simple_gpio.h
index 3a7b0c513c76..f3f3a20d39e2 100644
--- a/arch/powerpc/sysdev/simple_gpio.h
+++ b/arch/powerpc/sysdev/simple_gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SYSDEV_SIMPLE_GPIO_H
#define __SYSDEV_SIMPLE_GPIO_H
diff --git a/arch/powerpc/sysdev/xics/Kconfig b/arch/powerpc/sysdev/xics/Kconfig
index 385e7aa9e273..86fee428f5f1 100644
--- a/arch/powerpc/sysdev/xics/Kconfig
+++ b/arch/powerpc/sysdev/xics/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_XICS
def_bool n
select PPC_SMP_MUXED_IPI
diff --git a/arch/powerpc/sysdev/xics/Makefile b/arch/powerpc/sysdev/xics/Makefile
index 5d7f5a6564de..5d438d92472b 100644
--- a/arch/powerpc/sysdev/xics/Makefile
+++ b/arch/powerpc/sysdev/xics/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
obj-y += xics-common.o
diff --git a/arch/powerpc/sysdev/xics/ics-rtas.c b/arch/powerpc/sysdev/xics/ics-rtas.c
index 78ee5c778ef8..42e0c56ff81c 100644
--- a/arch/powerpc/sysdev/xics/ics-rtas.c
+++ b/arch/powerpc/sysdev/xics/ics-rtas.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/irq.h>
diff --git a/arch/powerpc/sysdev/xive/Kconfig b/arch/powerpc/sysdev/xive/Kconfig
index 3e3e25b5e30d..70ee976e1de0 100644
--- a/arch/powerpc/sysdev/xive/Kconfig
+++ b/arch/powerpc/sysdev/xive/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config PPC_XIVE
bool
default n
diff --git a/arch/powerpc/sysdev/xive/common.c b/arch/powerpc/sysdev/xive/common.c
index f387318678b9..a3b8d7d1316e 100644
--- a/arch/powerpc/sysdev/xive/common.c
+++ b/arch/powerpc/sysdev/xive/common.c
@@ -1402,6 +1402,14 @@ void xive_teardown_cpu(void)
if (xive_ops->teardown_cpu)
xive_ops->teardown_cpu(cpu, xc);
+
+#ifdef CONFIG_SMP
+ /* Get rid of IPI */
+ xive_cleanup_cpu_ipi(cpu, xc);
+#endif
+
+ /* Disable and free the queues */
+ xive_cleanup_cpu_queues(cpu, xc);
}
void xive_kexec_teardown_cpu(int secondary)
diff --git a/arch/powerpc/sysdev/xive/spapr.c b/arch/powerpc/sysdev/xive/spapr.c
index f24a70bc6855..d9c4c9366049 100644
--- a/arch/powerpc/sysdev/xive/spapr.c
+++ b/arch/powerpc/sysdev/xive/spapr.c
@@ -431,7 +431,11 @@ static int xive_spapr_get_ipi(unsigned int cpu, struct xive_cpu *xc)
static void xive_spapr_put_ipi(unsigned int cpu, struct xive_cpu *xc)
{
+ if (!xc->hw_ipi)
+ return;
+
xive_irq_bitmap_free(xc->hw_ipi);
+ xc->hw_ipi = 0;
}
#endif /* CONFIG_SMP */
diff --git a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
index c658d8cf760b..061f8035bdbe 100755
--- a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
+++ b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
@@ -1,4 +1,5 @@
#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
set -e
set -o pipefail
diff --git a/arch/powerpc/xmon/Makefile b/arch/powerpc/xmon/Makefile
index 1dd88315cff4..1bc3abb237cd 100644
--- a/arch/powerpc/xmon/Makefile
+++ b/arch/powerpc/xmon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for xmon
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
diff --git a/arch/powerpc/xmon/nonstdio.h b/arch/powerpc/xmon/nonstdio.h
index f8653365667e..2202ec61972c 100644
--- a/arch/powerpc/xmon/nonstdio.h
+++ b/arch/powerpc/xmon/nonstdio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define EOF (-1)
#define printf xmon_printf
diff --git a/arch/powerpc/xmon/spr_access.S b/arch/powerpc/xmon/spr_access.S
index 7d8b0e8ed6d9..4099cbcddaaa 100644
--- a/arch/powerpc/xmon/spr_access.S
+++ b/arch/powerpc/xmon/spr_access.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/ppc_asm.h>
/* unsigned long xmon_mfspr(sprn, default_value) */
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 48af970320cb..ae55e715cc74 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config MMU
def_bool y
diff --git a/arch/s390/Kconfig.debug b/arch/s390/Kconfig.debug
index ba5f878a295c..2cfdfbf8d320 100644
--- a/arch/s390/Kconfig.debug
+++ b/arch/s390/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
config TRACE_IRQFLAGS_SUPPORT
diff --git a/arch/s390/appldata/appldata.h b/arch/s390/appldata/appldata.h
index 4a67f2b5f6aa..10346d2f3d4f 100644
--- a/arch/s390/appldata/appldata.h
+++ b/arch/s390/appldata/appldata.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions and interface for Linux - z/VM Monitor Stream.
*
diff --git a/arch/s390/boot/Makefile b/arch/s390/boot/Makefile
index 9a42ecec5647..da9dad35c28e 100644
--- a/arch/s390/boot/Makefile
+++ b/arch/s390/boot/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux s390-specific parts of the memory manager.
#
diff --git a/arch/s390/boot/compressed/Makefile b/arch/s390/boot/compressed/Makefile
index f7e4c834ea24..3df10c989893 100644
--- a/arch/s390/boot/compressed/Makefile
+++ b/arch/s390/boot/compressed/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/s390/boot/compressed/Makefile
#
diff --git a/arch/s390/boot/compressed/head.S b/arch/s390/boot/compressed/head.S
index 11f6254c561e..231d1491d431 100644
--- a/arch/s390/boot/compressed/head.S
+++ b/arch/s390/boot/compressed/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Startup glue code to uncompress the kernel
*
diff --git a/arch/s390/boot/compressed/misc.c b/arch/s390/boot/compressed/misc.c
index 33ca29333e18..77633200f42c 100644
--- a/arch/s390/boot/compressed/misc.c
+++ b/arch/s390/boot/compressed/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Definitions and wrapper functions for kernel decompressor
*
diff --git a/arch/s390/boot/compressed/vmlinux.lds.S b/arch/s390/boot/compressed/vmlinux.lds.S
index 747735f83426..88e46d4a7784 100644
--- a/arch/s390/boot/compressed/vmlinux.lds.S
+++ b/arch/s390/boot/compressed/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/vmlinux.lds.h>
OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
diff --git a/arch/s390/configs/zfcpdump_defconfig b/arch/s390/configs/zfcpdump_defconfig
index afa46a7406ea..04e042edbab7 100644
--- a/arch/s390/configs/zfcpdump_defconfig
+++ b/arch/s390/configs/zfcpdump_defconfig
@@ -27,6 +27,7 @@ CONFIG_NET=y
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_DEVTMPFS=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_BLK_DEV_RAM=y
# CONFIG_BLK_DEV_XPRAM is not set
# CONFIG_DCSSBLK is not set
# CONFIG_DASD is not set
@@ -59,6 +60,7 @@ CONFIG_CONFIGFS_FS=y
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_PRINTK_TIME=y
CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_FS=y
CONFIG_DEBUG_KERNEL=y
CONFIG_PANIC_ON_OOPS=y
# CONFIG_SCHED_DEBUG is not set
diff --git a/arch/s390/crypto/Makefile b/arch/s390/crypto/Makefile
index ad4bd777768d..a51010ea62fa 100644
--- a/arch/s390/crypto/Makefile
+++ b/arch/s390/crypto/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Cryptographic API
#
diff --git a/arch/s390/crypto/crc32be-vx.S b/arch/s390/crypto/crc32be-vx.S
index 8013989cd2e5..e8077f0971f8 100644
--- a/arch/s390/crypto/crc32be-vx.S
+++ b/arch/s390/crypto/crc32be-vx.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Hardware-accelerated CRC-32 variants for Linux on z Systems
*
diff --git a/arch/s390/crypto/crc32le-vx.S b/arch/s390/crypto/crc32le-vx.S
index 17f2504c2633..d8c67a58c0c5 100644
--- a/arch/s390/crypto/crc32le-vx.S
+++ b/arch/s390/crypto/crc32le-vx.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Hardware-accelerated CRC-32 variants for Linux on z Systems
*
diff --git a/arch/s390/hypfs/hypfs.h b/arch/s390/hypfs/hypfs.h
index eecde500ed49..52348e0a812e 100644
--- a/arch/s390/hypfs/hypfs.h
+++ b/arch/s390/hypfs/hypfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Hypervisor filesystem for Linux on s390.
*
diff --git a/arch/s390/hypfs/hypfs_dbfs.c b/arch/s390/hypfs/hypfs_dbfs.c
index 752f6df3e697..b9bdf5c1918e 100644
--- a/arch/s390/hypfs/hypfs_dbfs.c
+++ b/arch/s390/hypfs/hypfs_dbfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Hypervisor filesystem for Linux on s390 - debugfs interface
*
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c
index 794bebb43d23..be8cc53204b5 100644
--- a/arch/s390/hypfs/hypfs_diag.c
+++ b/arch/s390/hypfs/hypfs_diag.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Hypervisor filesystem for Linux on s390. Diag 204 and 224
* implementation.
diff --git a/arch/s390/hypfs/hypfs_diag0c.c b/arch/s390/hypfs/hypfs_diag0c.c
index 0f1927cbba31..dce87f1bec94 100644
--- a/arch/s390/hypfs/hypfs_diag0c.c
+++ b/arch/s390/hypfs/hypfs_diag0c.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Hypervisor filesystem for Linux on s390
*
diff --git a/arch/s390/hypfs/hypfs_sprp.c b/arch/s390/hypfs/hypfs_sprp.c
index c9e5c72f78bd..ae0ed8dd5f1b 100644
--- a/arch/s390/hypfs/hypfs_sprp.c
+++ b/arch/s390/hypfs/hypfs_sprp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Hypervisor filesystem for Linux on s390.
* Set Partition-Resource Parameter interface.
diff --git a/arch/s390/hypfs/hypfs_vm.c b/arch/s390/hypfs/hypfs_vm.c
index 012919d9833b..c4b7b681e055 100644
--- a/arch/s390/hypfs/hypfs_vm.c
+++ b/arch/s390/hypfs/hypfs_vm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Hypervisor filesystem for Linux on s390. z/VM implementation.
*
diff --git a/arch/s390/include/asm/airq.h b/arch/s390/include/asm/airq.h
index bd93ff6661b8..fcf539efb32f 100644
--- a/arch/s390/include/asm/airq.h
+++ b/arch/s390/include/asm/airq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2002, 2007
* Author(s): Ingo Adlung <adlung@de.ibm.com>
diff --git a/arch/s390/include/asm/appldata.h b/arch/s390/include/asm/appldata.h
index a6263d4e8e56..4afbb5938726 100644
--- a/arch/s390/include/asm/appldata.h
+++ b/arch/s390/include/asm/appldata.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2006
*
diff --git a/arch/s390/include/asm/archrandom.h b/arch/s390/include/asm/archrandom.h
index 6033901a40b2..e9f7d7a57f99 100644
--- a/arch/s390/include/asm/archrandom.h
+++ b/arch/s390/include/asm/archrandom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Kernel interface for the s390 arch_random_* functions
*
diff --git a/arch/s390/include/asm/asm-prototypes.h b/arch/s390/include/asm/asm-prototypes.h
index 2c3413b0ca52..c37eb921bfbf 100644
--- a/arch/s390/include/asm/asm-prototypes.h
+++ b/arch/s390/include/asm/asm-prototypes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_PROTOTYPES_H
#include <linux/kvm_host.h>
diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h
index f7f69dfd2db2..4b55532f15c4 100644
--- a/arch/s390/include/asm/atomic.h
+++ b/arch/s390/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2016
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>,
diff --git a/arch/s390/include/asm/atomic_ops.h b/arch/s390/include/asm/atomic_ops.h
index ba6d29412344..f479e4c0b87e 100644
--- a/arch/s390/include/asm/atomic_ops.h
+++ b/arch/s390/include/asm/atomic_ops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Low level function for atomic operations
*
diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
index 5c8db3ce61c8..10432607a573 100644
--- a/arch/s390/include/asm/barrier.h
+++ b/arch/s390/include/asm/barrier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2009
*
diff --git a/arch/s390/include/asm/bitops.h b/arch/s390/include/asm/bitops.h
index 99902b7b9f0c..31e400c1a1f3 100644
--- a/arch/s390/include/asm/bitops.h
+++ b/arch/s390/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999,2013
*
diff --git a/arch/s390/include/asm/bug.h b/arch/s390/include/asm/bug.h
index ce9cc123988b..429f43a8a8e8 100644
--- a/arch/s390/include/asm/bug.h
+++ b/arch/s390/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_BUG_H
#define _ASM_S390_BUG_H
diff --git a/arch/s390/include/asm/cache.h b/arch/s390/include/asm/cache.h
index 05219a5e0b2f..d5e22e837416 100644
--- a/arch/s390/include/asm/cache.h
+++ b/arch/s390/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/include/asm/ccwdev.h b/arch/s390/include/asm/ccwdev.h
index b80e456d6428..633f8da86137 100644
--- a/arch/s390/include/asm/ccwdev.h
+++ b/arch/s390/include/asm/ccwdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2002, 2009
*
diff --git a/arch/s390/include/asm/ccwgroup.h b/arch/s390/include/asm/ccwgroup.h
index 057ce0ca6377..b00777ce93b4 100644
--- a/arch/s390/include/asm/ccwgroup.h
+++ b/arch/s390/include/asm/ccwgroup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef S390_CCWGROUP_H
#define S390_CCWGROUP_H
diff --git a/arch/s390/include/asm/checksum.h b/arch/s390/include/asm/checksum.h
index 12bf4fef2a68..91e376b0d28c 100644
--- a/arch/s390/include/asm/checksum.h
+++ b/arch/s390/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 fast network checksum routines
*
diff --git a/arch/s390/include/asm/chpid.h b/arch/s390/include/asm/chpid.h
index 7298eec98541..4773f747915c 100644
--- a/arch/s390/include/asm/chpid.h
+++ b/arch/s390/include/asm/chpid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2007, 2012
* Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
diff --git a/arch/s390/include/asm/cio.h b/arch/s390/include/asm/cio.h
index 7a38ca85190b..dc84a0171bb3 100644
--- a/arch/s390/include/asm/cio.h
+++ b/arch/s390/include/asm/cio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common interface for I/O on S/390
*/
diff --git a/arch/s390/include/asm/clp.h b/arch/s390/include/asm/clp.h
index 5687d62fb0cb..3925b0f085b7 100644
--- a/arch/s390/include/asm/clp.h
+++ b/arch/s390/include/asm/clp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_CLP_H
#define _ASM_S390_CLP_H
diff --git a/arch/s390/include/asm/cmb.h b/arch/s390/include/asm/cmb.h
index ed2630c23f90..599594c3720f 100644
--- a/arch/s390/include/asm/cmb.h
+++ b/arch/s390/include/asm/cmb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef S390_CMB_H
#define S390_CMB_H
diff --git a/arch/s390/include/asm/cmpxchg.h b/arch/s390/include/asm/cmpxchg.h
index 24ea6948e32b..af99c1f66f12 100644
--- a/arch/s390/include/asm/cmpxchg.h
+++ b/arch/s390/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2011
*
diff --git a/arch/s390/include/asm/compat.h b/arch/s390/include/asm/compat.h
index 07a82bc933a7..1b60eb3676d5 100644
--- a/arch/s390/include/asm/compat.h
+++ b/arch/s390/include/asm/compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390X_COMPAT_H
#define _ASM_S390X_COMPAT_H
/*
diff --git a/arch/s390/include/asm/cpacf.h b/arch/s390/include/asm/cpacf.h
index e06f2556b316..056670ebba67 100644
--- a/arch/s390/include/asm/cpacf.h
+++ b/arch/s390/include/asm/cpacf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CP Assist for Cryptographic Functions (CPACF)
*
diff --git a/arch/s390/include/asm/cpcmd.h b/arch/s390/include/asm/cpcmd.h
index ca2b0624ad46..c3c993abe964 100644
--- a/arch/s390/include/asm/cpcmd.h
+++ b/arch/s390/include/asm/cpcmd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/include/asm/cpu.h b/arch/s390/include/asm/cpu.h
index 91541000378e..62228a884e06 100644
--- a/arch/s390/include/asm/cpu.h
+++ b/arch/s390/include/asm/cpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2000, 2009
* Author(s): Hartmut Penner <hp@de.ibm.com>,
diff --git a/arch/s390/include/asm/cpufeature.h b/arch/s390/include/asm/cpufeature.h
index fa7e69b7c299..1d007c6ede95 100644
--- a/arch/s390/include/asm/cpufeature.h
+++ b/arch/s390/include/asm/cpufeature.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Module interface for CPU features
*
diff --git a/arch/s390/include/asm/cputime.h b/arch/s390/include/asm/cputime.h
index 9072bf63a846..cb729d111e20 100644
--- a/arch/s390/include/asm/cputime.h
+++ b/arch/s390/include/asm/cputime.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2004
*
diff --git a/arch/s390/include/asm/crw.h b/arch/s390/include/asm/crw.h
index bcb9cd2a730a..c6ebfd31f1db 100644
--- a/arch/s390/include/asm/crw.h
+++ b/arch/s390/include/asm/crw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Data definitions for channel report processing
* Copyright IBM Corp. 2000, 2009
diff --git a/arch/s390/include/asm/css_chars.h b/arch/s390/include/asm/css_chars.h
index 09d1dd46bd57..a478eb61aaf7 100644
--- a/arch/s390/include/asm/css_chars.h
+++ b/arch/s390/include/asm/css_chars.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CSS_CHARS_H
#define _ASM_CSS_CHARS_H
diff --git a/arch/s390/include/asm/ctl_reg.h b/arch/s390/include/asm/ctl_reg.h
index e508dff92535..93e0d72f6c94 100644
--- a/arch/s390/include/asm/ctl_reg.h
+++ b/arch/s390/include/asm/ctl_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2009
*
diff --git a/arch/s390/include/asm/current.h b/arch/s390/include/asm/current.h
index b80941f30df5..68f84315277c 100644
--- a/arch/s390/include/asm/current.h
+++ b/arch/s390/include/asm/current.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/include/asm/debug.h b/arch/s390/include/asm/debug.h
index df7b54ea956d..a4ed25dd3278 100644
--- a/arch/s390/include/asm/debug.h
+++ b/arch/s390/include/asm/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S/390 debug facility
*
diff --git a/arch/s390/include/asm/delay.h b/arch/s390/include/asm/delay.h
index 3f6e4095f471..898323fd93d2 100644
--- a/arch/s390/include/asm/delay.h
+++ b/arch/s390/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/include/asm/diag.h b/arch/s390/include/asm/diag.h
index 88162bb5c190..6db78567294c 100644
--- a/arch/s390/include/asm/diag.h
+++ b/arch/s390/include/asm/diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* s390 diagnose functions
*
diff --git a/arch/s390/include/asm/dis.h b/arch/s390/include/asm/dis.h
index 37f617dfbede..78d1b2d725b9 100644
--- a/arch/s390/include/asm/dis.h
+++ b/arch/s390/include/asm/dis.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Disassemble s390 instructions.
*
diff --git a/arch/s390/include/asm/dma-mapping.h b/arch/s390/include/asm/dma-mapping.h
index 512ad0eaa11a..8fc8764fe5ee 100644
--- a/arch/s390/include/asm/dma-mapping.h
+++ b/arch/s390/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_DMA_MAPPING_H
#define _ASM_S390_DMA_MAPPING_H
diff --git a/arch/s390/include/asm/dma.h b/arch/s390/include/asm/dma.h
index bb9bdcd20864..6f26f35d4a71 100644
--- a/arch/s390/include/asm/dma.h
+++ b/arch/s390/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_DMA_H
#define _ASM_S390_DMA_H
diff --git a/arch/s390/include/asm/eadm.h b/arch/s390/include/asm/eadm.h
index 144809a3f4f6..eb5323161f11 100644
--- a/arch/s390/include/asm/eadm.h
+++ b/arch/s390/include/asm/eadm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_EADM_H
#define _ASM_S390_EADM_H
diff --git a/arch/s390/include/asm/ebcdic.h b/arch/s390/include/asm/ebcdic.h
index b71735eab23f..29441beb92e6 100644
--- a/arch/s390/include/asm/ebcdic.h
+++ b/arch/s390/include/asm/ebcdic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* EBCDIC -> ASCII, ASCII -> EBCDIC conversion routines.
*
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
index 65998a1f5d43..9a3cb3983c01 100644
--- a/arch/s390/include/asm/elf.h
+++ b/arch/s390/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
*
diff --git a/arch/s390/include/asm/exec.h b/arch/s390/include/asm/exec.h
index c4a93d6327fa..641bfbec9d52 100644
--- a/arch/s390/include/asm/exec.h
+++ b/arch/s390/include/asm/exec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2009
*
diff --git a/arch/s390/include/asm/extable.h b/arch/s390/include/asm/extable.h
index 16cfe2d62eeb..80a4e5a9cb46 100644
--- a/arch/s390/include/asm/extable.h
+++ b/arch/s390/include/asm/extable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __S390_EXTABLE_H
#define __S390_EXTABLE_H
/*
diff --git a/arch/s390/include/asm/extmem.h b/arch/s390/include/asm/extmem.h
index 6276002d76ba..568fd81bb77b 100644
--- a/arch/s390/include/asm/extmem.h
+++ b/arch/s390/include/asm/extmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* definitions for external memory segment support
* Copyright IBM Corp. 2003
diff --git a/arch/s390/include/asm/facility.h b/arch/s390/include/asm/facility.h
index cb60d5c5755d..f040644575b7 100644
--- a/arch/s390/include/asm/facility.h
+++ b/arch/s390/include/asm/facility.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2009
*
diff --git a/arch/s390/include/asm/fcx.h b/arch/s390/include/asm/fcx.h
index 04cb4b4bcc5f..cff0749e9657 100644
--- a/arch/s390/include/asm/fcx.h
+++ b/arch/s390/include/asm/fcx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Functions for assembling fcx enabled I/O control blocks.
*
diff --git a/arch/s390/include/asm/fpu/api.h b/arch/s390/include/asm/fpu/api.h
index 02124d66bfb5..34a7ae68485c 100644
--- a/arch/s390/include/asm/fpu/api.h
+++ b/arch/s390/include/asm/fpu/api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* In-kernel FPU support functions
*
diff --git a/arch/s390/include/asm/fpu/internal.h b/arch/s390/include/asm/fpu/internal.h
index 629c90865a07..4a71dbbf76fb 100644
--- a/arch/s390/include/asm/fpu/internal.h
+++ b/arch/s390/include/asm/fpu/internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* FPU state and register content conversion primitives
*
diff --git a/arch/s390/include/asm/fpu/types.h b/arch/s390/include/asm/fpu/types.h
index bce255ead72b..d889e9436865 100644
--- a/arch/s390/include/asm/fpu/types.h
+++ b/arch/s390/include/asm/fpu/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* FPU data structures
*
diff --git a/arch/s390/include/asm/ftrace.h b/arch/s390/include/asm/ftrace.h
index 836c56290499..cfccc0edd00d 100644
--- a/arch/s390/include/asm/ftrace.h
+++ b/arch/s390/include/asm/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_FTRACE_H
#define _ASM_S390_FTRACE_H
diff --git a/arch/s390/include/asm/futex.h b/arch/s390/include/asm/futex.h
index 8f8eec9e1198..9b5a3469fed9 100644
--- a/arch/s390/include/asm/futex.h
+++ b/arch/s390/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_FUTEX_H
#define _ASM_S390_FUTEX_H
diff --git a/arch/s390/include/asm/gmap.h b/arch/s390/include/asm/gmap.h
index 741ddba0bf11..e07cce88dfb0 100644
--- a/arch/s390/include/asm/gmap.h
+++ b/arch/s390/include/asm/gmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* KVM guest address space mapping code
*
diff --git a/arch/s390/include/asm/hardirq.h b/arch/s390/include/asm/hardirq.h
index b7eabaaeffbd..a296c6acfd07 100644
--- a/arch/s390/include/asm/hardirq.h
+++ b/arch/s390/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999, 2000
diff --git a/arch/s390/include/asm/hugetlb.h b/arch/s390/include/asm/hugetlb.h
index d95869ce3ca2..9c5fc50204dd 100644
--- a/arch/s390/include/asm/hugetlb.h
+++ b/arch/s390/include/asm/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IBM System z Huge TLB Page Support for Kernel.
*
diff --git a/arch/s390/include/asm/hw_irq.h b/arch/s390/include/asm/hw_irq.h
index ee96a8b697f9..adae176757ae 100644
--- a/arch/s390/include/asm/hw_irq.h
+++ b/arch/s390/include/asm/hw_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _HW_IRQ_H
#define _HW_IRQ_H
diff --git a/arch/s390/include/asm/idals.h b/arch/s390/include/asm/idals.h
index 280b60a0bcd4..15578fd762f6 100644
--- a/arch/s390/include/asm/idals.h
+++ b/arch/s390/include/asm/idals.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/arch/s390/include/asm/idle.h b/arch/s390/include/asm/idle.h
index 51ff96d9f287..6d4226dcf42a 100644
--- a/arch/s390/include/asm/idle.h
+++ b/arch/s390/include/asm/idle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2014
*
diff --git a/arch/s390/include/asm/io.h b/arch/s390/include/asm/io.h
index 904e4b3af95d..f34d729347e4 100644
--- a/arch/s390/include/asm/io.h
+++ b/arch/s390/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h
index 6810bd757312..5a8d92758a58 100644
--- a/arch/s390/include/asm/ipl.h
+++ b/arch/s390/include/asm/ipl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* s390 (re)ipl support
*
diff --git a/arch/s390/include/asm/irq.h b/arch/s390/include/asm/irq.h
index 70c9bce766f5..2f7f27e5493f 100644
--- a/arch/s390/include/asm/irq.h
+++ b/arch/s390/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IRQ_H
#define _ASM_IRQ_H
diff --git a/arch/s390/include/asm/irqflags.h b/arch/s390/include/asm/irqflags.h
index 595a275c36f8..586df4c9e2f2 100644
--- a/arch/s390/include/asm/irqflags.h
+++ b/arch/s390/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2006, 2010
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/arch/s390/include/asm/isc.h b/arch/s390/include/asm/isc.h
index 8a0b721a9b8d..6cb9e2ed05b6 100644
--- a/arch/s390/include/asm/isc.h
+++ b/arch/s390/include/asm/isc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_ISC_H
#define _ASM_S390_ISC_H
diff --git a/arch/s390/include/asm/itcw.h b/arch/s390/include/asm/itcw.h
index fb1bedd3dc0d..59b73961320d 100644
--- a/arch/s390/include/asm/itcw.h
+++ b/arch/s390/include/asm/itcw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Functions for incremental construction of fcx enabled I/O control blocks.
*
diff --git a/arch/s390/include/asm/jump_label.h b/arch/s390/include/asm/jump_label.h
index 9be198f5ee79..40f651292aa7 100644
--- a/arch/s390/include/asm/jump_label.h
+++ b/arch/s390/include/asm/jump_label.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_JUMP_LABEL_H
#define _ASM_S390_JUMP_LABEL_H
diff --git a/arch/s390/include/asm/kdebug.h b/arch/s390/include/asm/kdebug.h
index 5c1abd47612a..d5327f064799 100644
--- a/arch/s390/include/asm/kdebug.h
+++ b/arch/s390/include/asm/kdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _S390_KDEBUG_H
#define _S390_KDEBUG_H
diff --git a/arch/s390/include/asm/kexec.h b/arch/s390/include/asm/kexec.h
index dccf24ee26d3..1d708a419326 100644
--- a/arch/s390/include/asm/kexec.h
+++ b/arch/s390/include/asm/kexec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2005
*
diff --git a/arch/s390/include/asm/linkage.h b/arch/s390/include/asm/linkage.h
index 27da78cf416d..1b95da3fdd64 100644
--- a/arch/s390/include/asm/linkage.h
+++ b/arch/s390/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
diff --git a/arch/s390/include/asm/lowcore.h b/arch/s390/include/asm/lowcore.h
index a6870ea6ea8b..917f7344cab6 100644
--- a/arch/s390/include/asm/lowcore.h
+++ b/arch/s390/include/asm/lowcore.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2012
* Author(s): Hartmut Penner <hp@de.ibm.com>,
diff --git a/arch/s390/include/asm/mmu.h b/arch/s390/include/asm/mmu.h
index 3f46a6577b8d..db35c41a59d5 100644
--- a/arch/s390/include/asm/mmu.h
+++ b/arch/s390/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MMU_H
#define __MMU_H
diff --git a/arch/s390/include/asm/mmu_context.h b/arch/s390/include/asm/mmu_context.h
index 3c9abedc323c..43607bb12cc2 100644
--- a/arch/s390/include/asm/mmu_context.h
+++ b/arch/s390/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
*
diff --git a/arch/s390/include/asm/mmzone.h b/arch/s390/include/asm/mmzone.h
index a9e834e60b84..73e3e7c6976c 100644
--- a/arch/s390/include/asm/mmzone.h
+++ b/arch/s390/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NUMA support for s390
*
diff --git a/arch/s390/include/asm/module.h b/arch/s390/include/asm/module.h
index df1f861a848a..e0a6d29846e2 100644
--- a/arch/s390/include/asm/module.h
+++ b/arch/s390/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_MODULE_H
#define _ASM_S390_MODULE_H
diff --git a/arch/s390/include/asm/nmi.h b/arch/s390/include/asm/nmi.h
index c8e211b9a002..c8a7beadd3d4 100644
--- a/arch/s390/include/asm/nmi.h
+++ b/arch/s390/include/asm/nmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine check handler definitions
*
diff --git a/arch/s390/include/asm/numa.h b/arch/s390/include/asm/numa.h
index dc19ee0c92aa..35f8cbe7e5bb 100644
--- a/arch/s390/include/asm/numa.h
+++ b/arch/s390/include/asm/numa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NUMA support for s390
*
diff --git a/arch/s390/include/asm/os_info.h b/arch/s390/include/asm/os_info.h
index 943475382d51..3c89279d2a4b 100644
--- a/arch/s390/include/asm/os_info.h
+++ b/arch/s390/include/asm/os_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* OS info memory interface
*
diff --git a/arch/s390/include/asm/page-states.h b/arch/s390/include/asm/page-states.h
index 22b0f49e87c1..c33c4deb545f 100644
--- a/arch/s390/include/asm/page-states.h
+++ b/arch/s390/include/asm/page-states.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2017
* Author(s): Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
diff --git a/arch/s390/include/asm/page.h b/arch/s390/include/asm/page.h
index 5d5c2b3500a4..41e3908b397f 100644
--- a/arch/s390/include/asm/page.h
+++ b/arch/s390/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999, 2000
diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h
index 386df9adef0a..12fe3591034f 100644
--- a/arch/s390/include/asm/pci.h
+++ b/arch/s390/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_S390_PCI_H
#define __ASM_S390_PCI_H
diff --git a/arch/s390/include/asm/pci_clp.h b/arch/s390/include/asm/pci_clp.h
index 938b8cc19fc6..b3b31b31f0d3 100644
--- a/arch/s390/include/asm/pci_clp.h
+++ b/arch/s390/include/asm/pci_clp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_PCI_CLP_H
#define _ASM_S390_PCI_CLP_H
diff --git a/arch/s390/include/asm/pci_debug.h b/arch/s390/include/asm/pci_debug.h
index ac24b26fc065..6c2c38060f8b 100644
--- a/arch/s390/include/asm/pci_debug.h
+++ b/arch/s390/include/asm/pci_debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _S390_ASM_PCI_DEBUG_H
#define _S390_ASM_PCI_DEBUG_H
diff --git a/arch/s390/include/asm/pci_dma.h b/arch/s390/include/asm/pci_dma.h
index 92df3eb8d14e..e8d9161fa17a 100644
--- a/arch/s390/include/asm/pci_dma.h
+++ b/arch/s390/include/asm/pci_dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_PCI_DMA_H
#define _ASM_S390_PCI_DMA_H
diff --git a/arch/s390/include/asm/pci_insn.h b/arch/s390/include/asm/pci_insn.h
index 34abcf275799..419e83fa4721 100644
--- a/arch/s390/include/asm/pci_insn.h
+++ b/arch/s390/include/asm/pci_insn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_PCI_INSN_H
#define _ASM_S390_PCI_INSN_H
diff --git a/arch/s390/include/asm/pci_io.h b/arch/s390/include/asm/pci_io.h
index 69aa18be61af..cbb9cb9c6547 100644
--- a/arch/s390/include/asm/pci_io.h
+++ b/arch/s390/include/asm/pci_io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_PCI_IO_H
#define _ASM_S390_PCI_IO_H
diff --git a/arch/s390/include/asm/percpu.h b/arch/s390/include/asm/percpu.h
index 90240dfef76a..0095ddb58ff6 100644
--- a/arch/s390/include/asm/percpu.h
+++ b/arch/s390/include/asm/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_S390_PERCPU__
#define __ARCH_S390_PERCPU__
diff --git a/arch/s390/include/asm/perf_event.h b/arch/s390/include/asm/perf_event.h
index dd32beb9d30c..79aa6421fedb 100644
--- a/arch/s390/include/asm/perf_event.h
+++ b/arch/s390/include/asm/perf_event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Performance event support - s390 specific definitions.
*
diff --git a/arch/s390/include/asm/pgalloc.h b/arch/s390/include/asm/pgalloc.h
index a0d9167519b1..bbe99cb8219d 100644
--- a/arch/s390/include/asm/pgalloc.h
+++ b/arch/s390/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999, 2000
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index dce708e061ea..d7fe9838084d 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999, 2000
@@ -1507,7 +1508,9 @@ static inline pmd_t pmdp_huge_clear_flush(struct vm_area_struct *vma,
static inline void pmdp_invalidate(struct vm_area_struct *vma,
unsigned long addr, pmd_t *pmdp)
{
- pmdp_xchg_direct(vma->vm_mm, addr, pmdp, __pmd(_SEGMENT_ENTRY_EMPTY));
+ pmd_t pmd = __pmd(pmd_val(*pmdp) | _SEGMENT_ENTRY_INVALID);
+
+ pmdp_xchg_direct(vma->vm_mm, addr, pmdp, pmd);
}
#define __HAVE_ARCH_PMDP_SET_WRPROTECT
diff --git a/arch/s390/include/asm/pkey.h b/arch/s390/include/asm/pkey.h
index 4c484590d858..053117ba7328 100644
--- a/arch/s390/include/asm/pkey.h
+++ b/arch/s390/include/asm/pkey.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Kernelspace interface to the pkey device driver
*
diff --git a/arch/s390/include/asm/preempt.h b/arch/s390/include/asm/preempt.h
index b0776b2c8dcf..23a14d187fb1 100644
--- a/arch/s390/include/asm/preempt.h
+++ b/arch/s390/include/asm/preempt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_PREEMPT_H
#define __ASM_PREEMPT_H
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
index c25d57e0aad3..9cf92abe23c3 100644
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/include/asm/ptrace.h b/arch/s390/include/asm/ptrace.h
index 853b01245c20..2f84e77f1f1b 100644
--- a/arch/s390/include/asm/ptrace.h
+++ b/arch/s390/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999, 2000
diff --git a/arch/s390/include/asm/qdio.h b/arch/s390/include/asm/qdio.h
index eaee69e7c42a..de11ecc99c7c 100644
--- a/arch/s390/include/asm/qdio.h
+++ b/arch/s390/include/asm/qdio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2000, 2008
* Author(s): Utz Bacher <utz.bacher@de.ibm.com>
diff --git a/arch/s390/include/asm/reset.h b/arch/s390/include/asm/reset.h
index fe11fa88a0e0..6450b31ade03 100644
--- a/arch/s390/include/asm/reset.h
+++ b/arch/s390/include/asm/reset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2006
* Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
diff --git a/arch/s390/include/asm/runtime_instr.h b/arch/s390/include/asm/runtime_instr.h
index 402ad6df4897..ea8896ba5afc 100644
--- a/arch/s390/include/asm/runtime_instr.h
+++ b/arch/s390/include/asm/runtime_instr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RUNTIME_INSTR_H
#define _RUNTIME_INSTR_H
diff --git a/arch/s390/include/asm/rwsem.h b/arch/s390/include/asm/rwsem.h
index 597e7e96b59e..f731b7b518bd 100644
--- a/arch/s390/include/asm/rwsem.h
+++ b/arch/s390/include/asm/rwsem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _S390_RWSEM_H
#define _S390_RWSEM_H
diff --git a/arch/s390/include/asm/schid.h b/arch/s390/include/asm/schid.h
index 40b47dfa9d66..3ac405a67ff0 100644
--- a/arch/s390/include/asm/schid.h
+++ b/arch/s390/include/asm/schid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_SCHID_H
#define ASM_SCHID_H
diff --git a/arch/s390/include/asm/sclp.h b/arch/s390/include/asm/sclp.h
index 6f5167bc1928..d3c1a8a2e3ad 100644
--- a/arch/s390/include/asm/sclp.h
+++ b/arch/s390/include/asm/sclp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2007
* Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
diff --git a/arch/s390/include/asm/scsw.h b/arch/s390/include/asm/scsw.h
index 17a7904f001a..79b7ffa91832 100644
--- a/arch/s390/include/asm/scsw.h
+++ b/arch/s390/include/asm/scsw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Helper functions for scsw access.
*
diff --git a/arch/s390/include/asm/seccomp.h b/arch/s390/include/asm/seccomp.h
index e10f8337367b..795bbe0d7ca6 100644
--- a/arch/s390/include/asm/seccomp.h
+++ b/arch/s390/include/asm/seccomp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_SECCOMP_H
#define _ASM_S390_SECCOMP_H
diff --git a/arch/s390/include/asm/sections.h b/arch/s390/include/asm/sections.h
index fbd9116eb17b..0ac3e8166e85 100644
--- a/arch/s390/include/asm/sections.h
+++ b/arch/s390/include/asm/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _S390_SECTIONS_H
#define _S390_SECTIONS_H
diff --git a/arch/s390/include/asm/serial.h b/arch/s390/include/asm/serial.h
index 5b3e48ef534b..aaf85a69061c 100644
--- a/arch/s390/include/asm/serial.h
+++ b/arch/s390/include/asm/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_SERIAL_H
#define _ASM_S390_SERIAL_H
diff --git a/arch/s390/include/asm/set_memory.h b/arch/s390/include/asm/set_memory.h
index 46a4db44c47a..c59a83536c70 100644
--- a/arch/s390/include/asm/set_memory.h
+++ b/arch/s390/include/asm/set_memory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMS390_SET_MEMORY_H
#define _ASMS390_SET_MEMORY_H
diff --git a/arch/s390/include/asm/setup.h b/arch/s390/include/asm/setup.h
index 490e035b3716..f2c2b7cd9099 100644
--- a/arch/s390/include/asm/setup.h
+++ b/arch/s390/include/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999, 2010
diff --git a/arch/s390/include/asm/shmparam.h b/arch/s390/include/asm/shmparam.h
index e985182738f8..e75d45649c54 100644
--- a/arch/s390/include/asm/shmparam.h
+++ b/arch/s390/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
*
diff --git a/arch/s390/include/asm/signal.h b/arch/s390/include/asm/signal.h
index abf9e5735943..7daf4d8b5ee5 100644
--- a/arch/s390/include/asm/signal.h
+++ b/arch/s390/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
*
diff --git a/arch/s390/include/asm/sigp.h b/arch/s390/include/asm/sigp.h
index 020a8814d511..53ee795cd3d3 100644
--- a/arch/s390/include/asm/sigp.h
+++ b/arch/s390/include/asm/sigp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __S390_ASM_SIGP_H
#define __S390_ASM_SIGP_H
diff --git a/arch/s390/include/asm/smp.h b/arch/s390/include/asm/smp.h
index 3deb134587b7..babe83ed416c 100644
--- a/arch/s390/include/asm/smp.h
+++ b/arch/s390/include/asm/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2012
* Author(s): Denis Joseph Barrow,
diff --git a/arch/s390/include/asm/sparsemem.h b/arch/s390/include/asm/sparsemem.h
index 334e279f1bce..c549893602ea 100644
--- a/arch/s390/include/asm/sparsemem.h
+++ b/arch/s390/include/asm/sparsemem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_SPARSEMEM_H
#define _ASM_S390_SPARSEMEM_H
diff --git a/arch/s390/include/asm/spinlock.h b/arch/s390/include/asm/spinlock.h
index 8182b521c42f..f3f5e0155b10 100644
--- a/arch/s390/include/asm/spinlock.h
+++ b/arch/s390/include/asm/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/include/asm/spinlock_types.h b/arch/s390/include/asm/spinlock_types.h
index fe755eec275f..1861a0c5dd47 100644
--- a/arch/s390/include/asm/spinlock_types.h
+++ b/arch/s390/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPINLOCK_TYPES_H
#define __ASM_SPINLOCK_TYPES_H
diff --git a/arch/s390/include/asm/stp.h b/arch/s390/include/asm/stp.h
index 7689727585b2..f0ddefb06ec8 100644
--- a/arch/s390/include/asm/stp.h
+++ b/arch/s390/include/asm/stp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2006
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
diff --git a/arch/s390/include/asm/string.h b/arch/s390/include/asm/string.h
index e5f5c7074f2c..27ce494198f5 100644
--- a/arch/s390/include/asm/string.h
+++ b/arch/s390/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/include/asm/switch_to.h b/arch/s390/include/asm/switch_to.h
index f6c2b5814ab0..c21fe1d57c00 100644
--- a/arch/s390/include/asm/switch_to.h
+++ b/arch/s390/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2009
*
diff --git a/arch/s390/include/asm/termios.h b/arch/s390/include/asm/termios.h
index db028d17f061..46fa3020b41e 100644
--- a/arch/s390/include/asm/termios.h
+++ b/arch/s390/include/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
*
diff --git a/arch/s390/include/asm/thread_info.h b/arch/s390/include/asm/thread_info.h
index 1aecf432c48d..0880a37b6d3b 100644
--- a/arch/s390/include/asm/thread_info.h
+++ b/arch/s390/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 2002, 2006
diff --git a/arch/s390/include/asm/timex.h b/arch/s390/include/asm/timex.h
index 93f2eb3f277c..64539c221672 100644
--- a/arch/s390/include/asm/timex.h
+++ b/arch/s390/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/include/asm/tlb.h b/arch/s390/include/asm/tlb.h
index 3a14b864b2e3..457b7ba0fbb6 100644
--- a/arch/s390/include/asm/tlb.h
+++ b/arch/s390/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _S390_TLB_H
#define _S390_TLB_H
diff --git a/arch/s390/include/asm/tlbflush.h b/arch/s390/include/asm/tlbflush.h
index b08d5bc2666e..8c840f0904f3 100644
--- a/arch/s390/include/asm/tlbflush.h
+++ b/arch/s390/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _S390_TLBFLUSH_H
#define _S390_TLBFLUSH_H
diff --git a/arch/s390/include/asm/topology.h b/arch/s390/include/asm/topology.h
index 5222da162b69..55de4eb73604 100644
--- a/arch/s390/include/asm/topology.h
+++ b/arch/s390/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_TOPOLOGY_H
#define _ASM_S390_TOPOLOGY_H
diff --git a/arch/s390/include/asm/trace/diag.h b/arch/s390/include/asm/trace/diag.h
index cc6cfe7889da..22fcac4ff9f0 100644
--- a/arch/s390/include/asm/trace/diag.h
+++ b/arch/s390/include/asm/trace/diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Tracepoint header for s390 diagnose calls
*
diff --git a/arch/s390/include/asm/trace/zcrypt.h b/arch/s390/include/asm/trace/zcrypt.h
index adcb77fafa9d..457ddaa99e19 100644
--- a/arch/s390/include/asm/trace/zcrypt.h
+++ b/arch/s390/include/asm/trace/zcrypt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Tracepoint definitions for the s390 zcrypt device driver
*
diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h
index 304cfe44df50..cdd0f0d999e2 100644
--- a/arch/s390/include/asm/uaccess.h
+++ b/arch/s390/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
* Copyright IBM Corp. 1999, 2000
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h
index 3066031a73fe..7807093b73be 100644
--- a/arch/s390/include/asm/unistd.h
+++ b/arch/s390/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
*
diff --git a/arch/s390/include/asm/uprobes.h b/arch/s390/include/asm/uprobes.h
index 658393c65d7e..b60b3c7ef699 100644
--- a/arch/s390/include/asm/uprobes.h
+++ b/arch/s390/include/asm/uprobes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* User-space Probes (UProbes) for s390
*
diff --git a/arch/s390/include/asm/user.h b/arch/s390/include/asm/user.h
index 6ed1d1886333..0ca572ced21b 100644
--- a/arch/s390/include/asm/user.h
+++ b/arch/s390/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 version
*
diff --git a/arch/s390/include/asm/vdso.h b/arch/s390/include/asm/vdso.h
index 88bdc477a843..bb2ce72300b0 100644
--- a/arch/s390/include/asm/vdso.h
+++ b/arch/s390/include/asm/vdso.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __S390_VDSO_H__
#define __S390_VDSO_H__
diff --git a/arch/s390/include/asm/vtime.h b/arch/s390/include/asm/vtime.h
index af9896c53eb3..3622d4ebc73a 100644
--- a/arch/s390/include/asm/vtime.h
+++ b/arch/s390/include/asm/vtime.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _S390_VTIME_H
#define _S390_VTIME_H
diff --git a/arch/s390/include/asm/vtimer.h b/arch/s390/include/asm/vtimer.h
index 10a179af62d8..42f707d1c1e8 100644
--- a/arch/s390/include/asm/vtimer.h
+++ b/arch/s390/include/asm/vtimer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2003, 2012
* Virtual CPU timer
diff --git a/arch/s390/include/asm/vx-insn.h b/arch/s390/include/asm/vx-insn.h
index 49c24a2afce0..266a72320e05 100644
--- a/arch/s390/include/asm/vx-insn.h
+++ b/arch/s390/include/asm/vx-insn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Support for Vector Instructions
*
diff --git a/arch/s390/include/asm/xor.h b/arch/s390/include/asm/xor.h
index c988df744a70..857d6759b67f 100644
--- a/arch/s390/include/asm/xor.h
+++ b/arch/s390/include/asm/xor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Optimited xor routines
*
diff --git a/arch/s390/include/uapi/asm/auxvec.h b/arch/s390/include/uapi/asm/auxvec.h
index c53e08442255..a056c4637ffc 100644
--- a/arch/s390/include/uapi/asm/auxvec.h
+++ b/arch/s390/include/uapi/asm/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASMS390_AUXVEC_H
#define __ASMS390_AUXVEC_H
diff --git a/arch/s390/include/uapi/asm/bitsperlong.h b/arch/s390/include/uapi/asm/bitsperlong.h
index 6b235aea9c66..cceaf47b021a 100644
--- a/arch/s390/include/uapi/asm/bitsperlong.h
+++ b/arch/s390/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_S390_BITSPERLONG_H
#define __ASM_S390_BITSPERLONG_H
diff --git a/arch/s390/include/uapi/asm/byteorder.h b/arch/s390/include/uapi/asm/byteorder.h
index a332e59e26fc..1442b57dd91b 100644
--- a/arch/s390/include/uapi/asm/byteorder.h
+++ b/arch/s390/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _S390_BYTEORDER_H
#define _S390_BYTEORDER_H
diff --git a/arch/s390/include/uapi/asm/chpid.h b/arch/s390/include/uapi/asm/chpid.h
index 6b4fb29cc197..2ae2ed8c0963 100644
--- a/arch/s390/include/uapi/asm/chpid.h
+++ b/arch/s390/include/uapi/asm/chpid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright IBM Corp. 2007, 2012
* Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
diff --git a/arch/s390/include/uapi/asm/chsc.h b/arch/s390/include/uapi/asm/chsc.h
index 65dc694725a8..dc329aa03f76 100644
--- a/arch/s390/include/uapi/asm/chsc.h
+++ b/arch/s390/include/uapi/asm/chsc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ioctl interface for /dev/chsc
*
diff --git a/arch/s390/include/uapi/asm/clp.h b/arch/s390/include/uapi/asm/clp.h
index ab72d9d24373..b36d9e9cdde6 100644
--- a/arch/s390/include/uapi/asm/clp.h
+++ b/arch/s390/include/uapi/asm/clp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ioctl interface for /dev/clp
*
diff --git a/arch/s390/include/uapi/asm/cmb.h b/arch/s390/include/uapi/asm/cmb.h
index 0c086d00d89e..ecbe94941403 100644
--- a/arch/s390/include/uapi/asm/cmb.h
+++ b/arch/s390/include/uapi/asm/cmb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPIS390_CMB_H
#define _UAPIS390_CMB_H
diff --git a/arch/s390/include/uapi/asm/dasd.h b/arch/s390/include/uapi/asm/dasd.h
index ab5797cdc1b7..451c601406b6 100644
--- a/arch/s390/include/uapi/asm/dasd.h
+++ b/arch/s390/include/uapi/asm/dasd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Bugreports.to..: <Linux390@de.ibm.com>
diff --git a/arch/s390/include/uapi/asm/debug.h b/arch/s390/include/uapi/asm/debug.h
index c59fc79125f2..c7c564d9aea4 100644
--- a/arch/s390/include/uapi/asm/debug.h
+++ b/arch/s390/include/uapi/asm/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S/390 debug facility
*
diff --git a/arch/s390/include/uapi/asm/guarded_storage.h b/arch/s390/include/uapi/asm/guarded_storage.h
index 852850e8e17e..666af1c33b59 100644
--- a/arch/s390/include/uapi/asm/guarded_storage.h
+++ b/arch/s390/include/uapi/asm/guarded_storage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _GUARDED_STORAGE_H
#define _GUARDED_STORAGE_H
diff --git a/arch/s390/include/uapi/asm/hypfs.h b/arch/s390/include/uapi/asm/hypfs.h
index b3fe12d8dd87..fe6174e142cf 100644
--- a/arch/s390/include/uapi/asm/hypfs.h
+++ b/arch/s390/include/uapi/asm/hypfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Structures for hypfs interface
*
diff --git a/arch/s390/include/uapi/asm/ioctls.h b/arch/s390/include/uapi/asm/ioctls.h
index 960a4c1ebdf1..342a3284e69a 100644
--- a/arch/s390/include/uapi/asm/ioctls.h
+++ b/arch/s390/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ARCH_S390_IOCTLS_H__
#define __ARCH_S390_IOCTLS_H__
diff --git a/arch/s390/include/uapi/asm/ipcbuf.h b/arch/s390/include/uapi/asm/ipcbuf.h
index 37f293d12c8f..5b1c4f47c656 100644
--- a/arch/s390/include/uapi/asm/ipcbuf.h
+++ b/arch/s390/include/uapi/asm/ipcbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __S390_IPCBUF_H__
#define __S390_IPCBUF_H__
diff --git a/arch/s390/include/uapi/asm/kvm.h b/arch/s390/include/uapi/asm/kvm.h
index cd7359e23d86..9ad172dcd912 100644
--- a/arch/s390/include/uapi/asm/kvm.h
+++ b/arch/s390/include/uapi/asm/kvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_KVM_S390_H
#define __LINUX_KVM_S390_H
/*
diff --git a/arch/s390/include/uapi/asm/kvm_para.h b/arch/s390/include/uapi/asm/kvm_para.h
index ff1f4e7b3015..0dc86b3a7cb0 100644
--- a/arch/s390/include/uapi/asm/kvm_para.h
+++ b/arch/s390/include/uapi/asm/kvm_para.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* User API definitions for paravirtual devices on s390
*
diff --git a/arch/s390/include/uapi/asm/kvm_perf.h b/arch/s390/include/uapi/asm/kvm_perf.h
index 397282727e21..c36c97ffdc6f 100644
--- a/arch/s390/include/uapi/asm/kvm_perf.h
+++ b/arch/s390/include/uapi/asm/kvm_perf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Definitions for perf-kvm on s390
*
diff --git a/arch/s390/include/uapi/asm/kvm_virtio.h b/arch/s390/include/uapi/asm/kvm_virtio.h
index 44a438ca9e72..73283677a132 100644
--- a/arch/s390/include/uapi/asm/kvm_virtio.h
+++ b/arch/s390/include/uapi/asm/kvm_virtio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* definition for virtio for kvm on s390
*
diff --git a/arch/s390/include/uapi/asm/monwriter.h b/arch/s390/include/uapi/asm/monwriter.h
index f845c8e2f861..03d172f314a3 100644
--- a/arch/s390/include/uapi/asm/monwriter.h
+++ b/arch/s390/include/uapi/asm/monwriter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright IBM Corp. 2006
* Character device driver for writing z/VM APPLDATA monitor records
diff --git a/arch/s390/include/uapi/asm/msgbuf.h b/arch/s390/include/uapi/asm/msgbuf.h
index 1bbdee927924..604f847cd68c 100644
--- a/arch/s390/include/uapi/asm/msgbuf.h
+++ b/arch/s390/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _S390_MSGBUF_H
#define _S390_MSGBUF_H
diff --git a/arch/s390/include/uapi/asm/pkey.h b/arch/s390/include/uapi/asm/pkey.h
index e6c04faf8a6c..6f84a53c3270 100644
--- a/arch/s390/include/uapi/asm/pkey.h
+++ b/arch/s390/include/uapi/asm/pkey.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Userspace interface to the pkey device driver
*
diff --git a/arch/s390/include/uapi/asm/posix_types.h b/arch/s390/include/uapi/asm/posix_types.h
index bf2a2ad2f800..2a3fc638414b 100644
--- a/arch/s390/include/uapi/asm/posix_types.h
+++ b/arch/s390/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
*
diff --git a/arch/s390/include/uapi/asm/ptrace.h b/arch/s390/include/uapi/asm/ptrace.h
index 77630c74f13b..0d23c8ff2900 100644
--- a/arch/s390/include/uapi/asm/ptrace.h
+++ b/arch/s390/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
* Copyright IBM Corp. 1999, 2000
diff --git a/arch/s390/include/uapi/asm/qeth.h b/arch/s390/include/uapi/asm/qeth.h
index 3a896cf52589..fac9995dfe33 100644
--- a/arch/s390/include/uapi/asm/qeth.h
+++ b/arch/s390/include/uapi/asm/qeth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ioctl definitions for qeth driver
*
diff --git a/arch/s390/include/uapi/asm/schid.h b/arch/s390/include/uapi/asm/schid.h
index 32f3ab2a8200..58fca6f48410 100644
--- a/arch/s390/include/uapi/asm/schid.h
+++ b/arch/s390/include/uapi/asm/schid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPIASM_SCHID_H
#define _UAPIASM_SCHID_H
diff --git a/arch/s390/include/uapi/asm/sclp_ctl.h b/arch/s390/include/uapi/asm/sclp_ctl.h
index f2818613ee41..e4e8c4dcd126 100644
--- a/arch/s390/include/uapi/asm/sclp_ctl.h
+++ b/arch/s390/include/uapi/asm/sclp_ctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* IOCTL interface for SCLP
*
diff --git a/arch/s390/include/uapi/asm/sembuf.h b/arch/s390/include/uapi/asm/sembuf.h
index 32626b0cac4b..3e917697b668 100644
--- a/arch/s390/include/uapi/asm/sembuf.h
+++ b/arch/s390/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _S390_SEMBUF_H
#define _S390_SEMBUF_H
diff --git a/arch/s390/include/uapi/asm/setup.h b/arch/s390/include/uapi/asm/setup.h
index 5a637e3e385e..1f8803a31079 100644
--- a/arch/s390/include/uapi/asm/setup.h
+++ b/arch/s390/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
* Copyright IBM Corp. 1999, 2010
diff --git a/arch/s390/include/uapi/asm/shmbuf.h b/arch/s390/include/uapi/asm/shmbuf.h
index eed2e280ce37..9cdce8d7ce60 100644
--- a/arch/s390/include/uapi/asm/shmbuf.h
+++ b/arch/s390/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _S390_SHMBUF_H
#define _S390_SHMBUF_H
diff --git a/arch/s390/include/uapi/asm/sie.h b/arch/s390/include/uapi/asm/sie.h
index 3ac634368939..6ca1e68d7103 100644
--- a/arch/s390/include/uapi/asm/sie.h
+++ b/arch/s390/include/uapi/asm/sie.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_S390_SIE_H
#define _UAPI_ASM_S390_SIE_H
diff --git a/arch/s390/include/uapi/asm/sigcontext.h b/arch/s390/include/uapi/asm/sigcontext.h
index 5f0b8d7ddb0b..8b35033334c4 100644
--- a/arch/s390/include/uapi/asm/sigcontext.h
+++ b/arch/s390/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
* Copyright IBM Corp. 1999, 2000
diff --git a/arch/s390/include/uapi/asm/siginfo.h b/arch/s390/include/uapi/asm/siginfo.h
index 91fd3e4b70ce..6984820f2f1c 100644
--- a/arch/s390/include/uapi/asm/siginfo.h
+++ b/arch/s390/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
*
diff --git a/arch/s390/include/uapi/asm/signal.h b/arch/s390/include/uapi/asm/signal.h
index 2f43cfbf5f1a..c57f9d28d894 100644
--- a/arch/s390/include/uapi/asm/signal.h
+++ b/arch/s390/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
*
diff --git a/arch/s390/include/uapi/asm/socket.h b/arch/s390/include/uapi/asm/socket.h
index a56916c83565..3510c0fd06f4 100644
--- a/arch/s390/include/uapi/asm/socket.h
+++ b/arch/s390/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
*
diff --git a/arch/s390/include/uapi/asm/stat.h b/arch/s390/include/uapi/asm/stat.h
index b4ca97d91466..ac253d23606b 100644
--- a/arch/s390/include/uapi/asm/stat.h
+++ b/arch/s390/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
*
diff --git a/arch/s390/include/uapi/asm/statfs.h b/arch/s390/include/uapi/asm/statfs.h
index 471eb09184d4..72604f7792c3 100644
--- a/arch/s390/include/uapi/asm/statfs.h
+++ b/arch/s390/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
*
diff --git a/arch/s390/include/uapi/asm/tape390.h b/arch/s390/include/uapi/asm/tape390.h
index b2bc4bab7929..90266c696486 100644
--- a/arch/s390/include/uapi/asm/tape390.h
+++ b/arch/s390/include/uapi/asm/tape390.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*************************************************************************
*
* enables user programs to display messages and control encryption
diff --git a/arch/s390/include/uapi/asm/termios.h b/arch/s390/include/uapi/asm/termios.h
index 554f973db1e6..54223169c806 100644
--- a/arch/s390/include/uapi/asm/termios.h
+++ b/arch/s390/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
*
diff --git a/arch/s390/include/uapi/asm/types.h b/arch/s390/include/uapi/asm/types.h
index 3c3951e3415b..da034c606314 100644
--- a/arch/s390/include/uapi/asm/types.h
+++ b/arch/s390/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
*
diff --git a/arch/s390/include/uapi/asm/ucontext.h b/arch/s390/include/uapi/asm/ucontext.h
index 64a69aa5dde0..c95f42e85337 100644
--- a/arch/s390/include/uapi/asm/ucontext.h
+++ b/arch/s390/include/uapi/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
*
diff --git a/arch/s390/include/uapi/asm/unistd.h b/arch/s390/include/uapi/asm/unistd.h
index ea42290e7d51..b52bce8ee941 100644
--- a/arch/s390/include/uapi/asm/unistd.h
+++ b/arch/s390/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* S390 version
*
diff --git a/arch/s390/include/uapi/asm/virtio-ccw.h b/arch/s390/include/uapi/asm/virtio-ccw.h
index a9a4ebf79fa7..967aad390105 100644
--- a/arch/s390/include/uapi/asm/virtio-ccw.h
+++ b/arch/s390/include/uapi/asm/virtio-ccw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Definitions for virtio-ccw devices.
*
diff --git a/arch/s390/include/uapi/asm/vtoc.h b/arch/s390/include/uapi/asm/vtoc.h
index 221419de275e..50c1d7b9e844 100644
--- a/arch/s390/include/uapi/asm/vtoc.h
+++ b/arch/s390/include/uapi/asm/vtoc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file contains volume label definitions for DASD devices.
*
diff --git a/arch/s390/include/uapi/asm/zcrypt.h b/arch/s390/include/uapi/asm/zcrypt.h
index a777f87ef889..137ef473584e 100644
--- a/arch/s390/include/uapi/asm/zcrypt.h
+++ b/arch/s390/include/uapi/asm/zcrypt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* include/asm-s390/zcrypt.h
*
diff --git a/arch/s390/kernel/Makefile b/arch/s390/kernel/Makefile
index adb3fe2e3d42..4ce2d05929a7 100644
--- a/arch/s390/kernel/Makefile
+++ b/arch/s390/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/s390/kernel/als.c b/arch/s390/kernel/als.c
index 14769eb52a33..d1892bf36cab 100644
--- a/arch/s390/kernel/als.c
+++ b/arch/s390/kernel/als.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2016
*/
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c
index 3d42f91c95fd..0e6d2b032484 100644
--- a/arch/s390/kernel/asm-offsets.c
+++ b/arch/s390/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generate definitions needed by assembly language modules.
* This code generates raw asm output which is post-processed to extract
diff --git a/arch/s390/kernel/audit.c b/arch/s390/kernel/audit.c
index f4932c22ebe4..d395c6c9944c 100644
--- a/arch/s390/kernel/audit.c
+++ b/arch/s390/kernel/audit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/types.h>
#include <linux/audit.h>
diff --git a/arch/s390/kernel/audit.h b/arch/s390/kernel/audit.h
index 12b56f4b5a73..4d4b596412ec 100644
--- a/arch/s390/kernel/audit.h
+++ b/arch/s390/kernel/audit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_S390_KERNEL_AUDIT_H
#define __ARCH_S390_KERNEL_AUDIT_H
diff --git a/arch/s390/kernel/base.S b/arch/s390/kernel/base.S
index 326f717df587..f6c56009e822 100644
--- a/arch/s390/kernel/base.S
+++ b/arch/s390/kernel/base.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/s390/kernel/base.S
*
diff --git a/arch/s390/kernel/cache.c b/arch/s390/kernel/cache.c
index c8a83276a4dc..d66825e53fce 100644
--- a/arch/s390/kernel/cache.c
+++ b/arch/s390/kernel/cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Extract CPU cache information and expose them via sysfs.
*
diff --git a/arch/s390/kernel/compat_audit.c b/arch/s390/kernel/compat_audit.c
index d6487bf879e5..444fb1f66944 100644
--- a/arch/s390/kernel/compat_audit.c
+++ b/arch/s390/kernel/compat_audit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#undef __s390x__
#include <asm/unistd.h>
#include "audit.h"
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index a3d14161abcb..f04db3779b34 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* S390 version
* Copyright IBM Corp. 2000
diff --git a/arch/s390/kernel/compat_linux.h b/arch/s390/kernel/compat_linux.h
index a0a886c04977..64509e7dbd3b 100644
--- a/arch/s390/kernel/compat_linux.h
+++ b/arch/s390/kernel/compat_linux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390X_S390_H
#define _ASM_S390X_S390_H
diff --git a/arch/s390/kernel/compat_ptrace.h b/arch/s390/kernel/compat_ptrace.h
index 12b823833510..3c400fc7e987 100644
--- a/arch/s390/kernel/compat_ptrace.h
+++ b/arch/s390/kernel/compat_ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PTRACE32_H
#define _PTRACE32_H
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c
index f549c4657376..a4a1208e3df3 100644
--- a/arch/s390/kernel/compat_signal.c
+++ b/arch/s390/kernel/compat_signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2000, 2006
* Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
diff --git a/arch/s390/kernel/compat_wrapper.c b/arch/s390/kernel/compat_wrapper.c
index 986642a3543b..d04918583971 100644
--- a/arch/s390/kernel/compat_wrapper.c
+++ b/arch/s390/kernel/compat_wrapper.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Compat system call wrappers.
*
diff --git a/arch/s390/kernel/cpcmd.c b/arch/s390/kernel/cpcmd.c
index 63bc6603e0ed..af013b4244d3 100644
--- a/arch/s390/kernel/cpcmd.c
+++ b/arch/s390/kernel/cpcmd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* S390 version
* Copyright IBM Corp. 1999, 2007
diff --git a/arch/s390/kernel/crash_dump.c b/arch/s390/kernel/crash_dump.c
index d628afc26708..9f5ea9d87069 100644
--- a/arch/s390/kernel/crash_dump.c
+++ b/arch/s390/kernel/crash_dump.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* S390 kdump implementation
*
diff --git a/arch/s390/kernel/debug.c b/arch/s390/kernel/debug.c
index 1d9e83c401fc..05a9cf4ae9c2 100644
--- a/arch/s390/kernel/debug.c
+++ b/arch/s390/kernel/debug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* S/390 debug facility
*
diff --git a/arch/s390/kernel/diag.c b/arch/s390/kernel/diag.c
index 349914571772..53a5316cc4b7 100644
--- a/arch/s390/kernel/diag.c
+++ b/arch/s390/kernel/diag.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Implementation of s390 diagnose codes
*
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
index ca8cd80e8feb..b945448b9eae 100644
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2007, 2009
* Author(s): Hongjie Yang <hongjie@us.ibm.com>,
@@ -404,18 +405,6 @@ static inline void save_vector_registers(void)
#endif
}
-static int __init topology_setup(char *str)
-{
- bool enabled;
- int rc;
-
- rc = kstrtobool(str, &enabled);
- if (!rc && !enabled)
- S390_lowcore.machine_flags &= ~MACHINE_FLAG_TOPOLOGY;
- return rc;
-}
-early_param("topology", topology_setup);
-
static int __init disable_vector_extension(char *str)
{
S390_lowcore.machine_flags &= ~MACHINE_FLAG_VX;
diff --git a/arch/s390/kernel/early_printk.c b/arch/s390/kernel/early_printk.c
index 819cb15c67e8..9431784d7796 100644
--- a/arch/s390/kernel/early_printk.c
+++ b/arch/s390/kernel/early_printk.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2017
*/
diff --git a/arch/s390/kernel/ebcdic.c b/arch/s390/kernel/ebcdic.c
index 1d5392b36ad8..c15caeab1dbf 100644
--- a/arch/s390/kernel/ebcdic.c
+++ b/arch/s390/kernel/ebcdic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ECBDIC -> ASCII, ASCII -> ECBDIC,
* upper to lower case (EBCDIC) conversion tables.
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index 21900e1cee9c..7c6904d616d8 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 low-level entry points.
*
@@ -521,12 +522,15 @@ ENTRY(pgm_check_handler)
tmhh %r8,0x0001 # test problem state bit
jnz 2f # -> fault in user space
#if IS_ENABLED(CONFIG_KVM)
- # cleanup critical section for sie64a
+ # cleanup critical section for program checks in sie64a
lgr %r14,%r9
slg %r14,BASED(.Lsie_critical_start)
clg %r14,BASED(.Lsie_critical_length)
jhe 0f
- brasl %r14,.Lcleanup_sie
+ lg %r14,__SF_EMPTY(%r15) # get control block pointer
+ ni __SIE_PROG0C+3(%r14),0xfe # no longer in SIE
+ lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
+ larl %r9,sie_exit # skip forward to sie_exit
#endif
0: tmhh %r8,0x4000 # PER bit set in old PSW ?
jnz 1f # -> enabled, can't be a double fault
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h
index dbf5f7e18246..905bde782490 100644
--- a/arch/s390/kernel/entry.h
+++ b/arch/s390/kernel/entry.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ENTRY_H
#define _ENTRY_H
diff --git a/arch/s390/kernel/fpu.c b/arch/s390/kernel/fpu.c
index 1235b9438df4..594464f2129d 100644
--- a/arch/s390/kernel/fpu.c
+++ b/arch/s390/kernel/fpu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* In-kernel vector facility support functions
*
diff --git a/arch/s390/kernel/ftrace.c b/arch/s390/kernel/ftrace.c
index d03a6d12c4bd..dc76d813e420 100644
--- a/arch/s390/kernel/ftrace.c
+++ b/arch/s390/kernel/ftrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Dynamic function tracer architecture backend.
*
diff --git a/arch/s390/kernel/guarded_storage.c b/arch/s390/kernel/guarded_storage.c
index 6f064745c3b1..bff39b66c9ff 100644
--- a/arch/s390/kernel/guarded_storage.c
+++ b/arch/s390/kernel/guarded_storage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2016
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/arch/s390/kernel/head.S b/arch/s390/kernel/head.S
index 8ed753c72d9b..b86fa3ee4927 100644
--- a/arch/s390/kernel/head.S
+++ b/arch/s390/kernel/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2010
*
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
index 0d8f2a858ced..172002da7075 100644
--- a/arch/s390/kernel/head64.S
+++ b/arch/s390/kernel/head64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999, 2010
*
diff --git a/arch/s390/kernel/head_kdump.S b/arch/s390/kernel/head_kdump.S
index d05950f02c34..174d6959bf5b 100644
--- a/arch/s390/kernel/head_kdump.S
+++ b/arch/s390/kernel/head_kdump.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 kdump lowlevel functions (new kernel)
*
diff --git a/arch/s390/kernel/idle.c b/arch/s390/kernel/idle.c
index 9340b2a07935..b9d8fe45737a 100644
--- a/arch/s390/kernel/idle.c
+++ b/arch/s390/kernel/idle.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Idle functions for s390.
*
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index a2fdff0e730b..94f2099bceb0 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2004, 2011
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>,
diff --git a/arch/s390/kernel/jump_label.c b/arch/s390/kernel/jump_label.c
index 262506cee4c3..43f8430fb67d 100644
--- a/arch/s390/kernel/jump_label.c
+++ b/arch/s390/kernel/jump_label.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Jump label s390 support
*
diff --git a/arch/s390/kernel/kdebugfs.c b/arch/s390/kernel/kdebugfs.c
index ee85e17dd79d..2c46bd6c6fd2 100644
--- a/arch/s390/kernel/kdebugfs.c
+++ b/arch/s390/kernel/kdebugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/debugfs.h>
#include <linux/export.h>
#include <linux/init.h>
diff --git a/arch/s390/kernel/machine_kexec.c b/arch/s390/kernel/machine_kexec.c
index 3d0b14afa232..b0ba2c26b45e 100644
--- a/arch/s390/kernel/machine_kexec.c
+++ b/arch/s390/kernel/machine_kexec.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2005, 2011
*
diff --git a/arch/s390/kernel/mcount.S b/arch/s390/kernel/mcount.S
index 9a17e4475d27..82df7d80fab2 100644
--- a/arch/s390/kernel/mcount.S
+++ b/arch/s390/kernel/mcount.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2008, 2009
*
diff --git a/arch/s390/kernel/os_info.c b/arch/s390/kernel/os_info.c
index 753ba63182b9..0a5e4bafb6ad 100644
--- a/arch/s390/kernel/os_info.c
+++ b/arch/s390/kernel/os_info.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* OS info memory interface
*
diff --git a/arch/s390/kernel/perf_cpum_cf_events.c b/arch/s390/kernel/perf_cpum_cf_events.c
index d3133285b7d1..08bfa17ba0a0 100644
--- a/arch/s390/kernel/perf_cpum_cf_events.c
+++ b/arch/s390/kernel/perf_cpum_cf_events.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Perf PMU sysfs events attributes for available CPU-measurement counters
*
diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c
index c1bf75ffb875..7e1e40323b78 100644
--- a/arch/s390/kernel/perf_cpum_sf.c
+++ b/arch/s390/kernel/perf_cpum_sf.c
@@ -823,9 +823,12 @@ static int cpumsf_pmu_event_init(struct perf_event *event)
}
/* Check online status of the CPU to which the event is pinned */
- if ((unsigned int)event->cpu >= nr_cpumask_bits ||
- (event->cpu >= 0 && !cpu_online(event->cpu)))
- return -ENODEV;
+ if (event->cpu >= 0) {
+ if ((unsigned int)event->cpu >= nr_cpumask_bits)
+ return -ENODEV;
+ if (!cpu_online(event->cpu))
+ return -ENODEV;
+ }
/* Force reset of idle/hv excludes regardless of what the
* user requested.
diff --git a/arch/s390/kernel/pgm_check.S b/arch/s390/kernel/pgm_check.S
index 036aa01d06a9..3e62aae34ea3 100644
--- a/arch/s390/kernel/pgm_check.S
+++ b/arch/s390/kernel/pgm_check.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Program check table.
*
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index bb32b8618bf6..a4a84fb08046 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file handles the architecture dependent parts of process handling.
*
diff --git a/arch/s390/kernel/processor.c b/arch/s390/kernel/processor.c
index 778cd6536175..5362fd868d0d 100644
--- a/arch/s390/kernel/processor.c
+++ b/arch/s390/kernel/processor.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2008
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
index 252ed61a128b..1427d60ce628 100644
--- a/arch/s390/kernel/ptrace.c
+++ b/arch/s390/kernel/ptrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Ptrace user space interface.
*
diff --git a/arch/s390/kernel/reipl.S b/arch/s390/kernel/reipl.S
index 89ea8c213d82..a40ebd1d29d0 100644
--- a/arch/s390/kernel/reipl.S
+++ b/arch/s390/kernel/reipl.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp 2000, 2011
* Author(s): Holger Smolinski <Holger.Smolinski@de.ibm.com>,
diff --git a/arch/s390/kernel/relocate_kernel.S b/arch/s390/kernel/relocate_kernel.S
index 4bdc65636603..ca37e5d5b40c 100644
--- a/arch/s390/kernel/relocate_kernel.S
+++ b/arch/s390/kernel/relocate_kernel.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2005
*
diff --git a/arch/s390/kernel/runtime_instr.c b/arch/s390/kernel/runtime_instr.c
index 429d3a782f1c..32aefb215e59 100644
--- a/arch/s390/kernel/runtime_instr.c
+++ b/arch/s390/kernel/runtime_instr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2012
* Author(s): Jan Glauber <jang@linux.vnet.ibm.com>
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index 289dd50f9744..2d2960ab3e10 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 1999, 2006
* Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 1cee6753d47a..092c4154abd7 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SMP related functions
*
@@ -293,7 +294,10 @@ static void pcpu_attach_task(struct pcpu *pcpu, struct task_struct *tsk)
lc->lpp = LPP_MAGIC;
lc->current_pid = tsk->pid;
lc->user_timer = tsk->thread.user_timer;
+ lc->guest_timer = tsk->thread.guest_timer;
lc->system_timer = tsk->thread.system_timer;
+ lc->hardirq_timer = tsk->thread.hardirq_timer;
+ lc->softirq_timer = tsk->thread.softirq_timer;
lc->steal_timer = 0;
}
diff --git a/arch/s390/kernel/suspend.c b/arch/s390/kernel/suspend.c
index c8ea715bfe10..a8af9c825628 100644
--- a/arch/s390/kernel/suspend.c
+++ b/arch/s390/kernel/suspend.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Suspend support specific for s390.
*
diff --git a/arch/s390/kernel/swsusp.S b/arch/s390/kernel/swsusp.S
index 6bebc935e9c2..e99187149f17 100644
--- a/arch/s390/kernel/swsusp.S
+++ b/arch/s390/kernel/swsusp.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* S390 64-bit swsusp implementation
*
diff --git a/arch/s390/kernel/sys_s390.c b/arch/s390/kernel/sys_s390.c
index b7af452978ca..0090037ab148 100644
--- a/arch/s390/kernel/sys_s390.c
+++ b/arch/s390/kernel/sys_s390.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* S390 version
* Copyright IBM Corp. 1999, 2000
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index 54fce7b065de..d39f121e67a9 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* definitions for sys_call_table, each line represents an
* entry in the table in the form
diff --git a/arch/s390/kernel/sysinfo.c b/arch/s390/kernel/sysinfo.c
index fb869b103825..a441cba8d165 100644
--- a/arch/s390/kernel/sysinfo.c
+++ b/arch/s390/kernel/sysinfo.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2001, 2009
* Author(s): Ulrich Weigand <Ulrich.Weigand@de.ibm.com>,
diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c
index bb47c92476f0..ed0bdd220e1a 100644
--- a/arch/s390/kernel/topology.c
+++ b/arch/s390/kernel/topology.c
@@ -8,6 +8,8 @@
#include <linux/workqueue.h>
#include <linux/bootmem.h>
+#include <linux/uaccess.h>
+#include <linux/sysctl.h>
#include <linux/cpuset.h>
#include <linux/device.h>
#include <linux/export.h>
@@ -29,12 +31,20 @@
#define PTF_VERTICAL (1UL)
#define PTF_CHECK (2UL)
+enum {
+ TOPOLOGY_MODE_HW,
+ TOPOLOGY_MODE_SINGLE,
+ TOPOLOGY_MODE_PACKAGE,
+ TOPOLOGY_MODE_UNINITIALIZED
+};
+
struct mask_info {
struct mask_info *next;
unsigned char id;
cpumask_t mask;
};
+static int topology_mode = TOPOLOGY_MODE_UNINITIALIZED;
static void set_topology_timer(void);
static void topology_work_fn(struct work_struct *work);
static struct sysinfo_15_1_x *tl_info;
@@ -59,11 +69,26 @@ static cpumask_t cpu_group_map(struct mask_info *info, unsigned int cpu)
cpumask_t mask;
cpumask_copy(&mask, cpumask_of(cpu));
- if (!MACHINE_HAS_TOPOLOGY)
- return mask;
- for (; info; info = info->next) {
- if (cpumask_test_cpu(cpu, &info->mask))
- return info->mask;
+ switch (topology_mode) {
+ case TOPOLOGY_MODE_HW:
+ while (info) {
+ if (cpumask_test_cpu(cpu, &info->mask)) {
+ mask = info->mask;
+ break;
+ }
+ info = info->next;
+ }
+ if (cpumask_empty(&mask))
+ cpumask_copy(&mask, cpumask_of(cpu));
+ break;
+ case TOPOLOGY_MODE_PACKAGE:
+ cpumask_copy(&mask, cpu_present_mask);
+ break;
+ default:
+ /* fallthrough */
+ case TOPOLOGY_MODE_SINGLE:
+ cpumask_copy(&mask, cpumask_of(cpu));
+ break;
}
return mask;
}
@@ -74,7 +99,7 @@ static cpumask_t cpu_thread_map(unsigned int cpu)
int i;
cpumask_copy(&mask, cpumask_of(cpu));
- if (!MACHINE_HAS_TOPOLOGY)
+ if (topology_mode != TOPOLOGY_MODE_HW)
return mask;
cpu -= cpu % (smp_cpu_mtid + 1);
for (i = 0; i <= smp_cpu_mtid; i++)
@@ -184,10 +209,8 @@ static void topology_update_polarization_simple(void)
{
int cpu;
- mutex_lock(&smp_cpu_state_mutex);
for_each_possible_cpu(cpu)
smp_cpu_set_polarization(cpu, POLARIZATION_HRZ);
- mutex_unlock(&smp_cpu_state_mutex);
}
static int ptf(unsigned long fc)
@@ -223,7 +246,7 @@ int topology_set_cpu_management(int fc)
static void update_cpu_masks(void)
{
struct cpu_topology_s390 *topo;
- int cpu;
+ int cpu, id;
for_each_possible_cpu(cpu) {
topo = &cpu_topology[cpu];
@@ -231,12 +254,13 @@ static void update_cpu_masks(void)
topo->core_mask = cpu_group_map(&socket_info, cpu);
topo->book_mask = cpu_group_map(&book_info, cpu);
topo->drawer_mask = cpu_group_map(&drawer_info, cpu);
- if (!MACHINE_HAS_TOPOLOGY) {
+ if (topology_mode != TOPOLOGY_MODE_HW) {
+ id = topology_mode == TOPOLOGY_MODE_PACKAGE ? 0 : cpu;
topo->thread_id = cpu;
topo->core_id = cpu;
- topo->socket_id = cpu;
- topo->book_id = cpu;
- topo->drawer_id = cpu;
+ topo->socket_id = id;
+ topo->book_id = id;
+ topo->drawer_id = id;
if (cpu_present(cpu))
cpumask_set_cpu(cpu, &cpus_with_topology);
}
@@ -254,6 +278,7 @@ static int __arch_update_cpu_topology(void)
struct sysinfo_15_1_x *info = tl_info;
int rc = 0;
+ mutex_lock(&smp_cpu_state_mutex);
cpumask_clear(&cpus_with_topology);
if (MACHINE_HAS_TOPOLOGY) {
rc = 1;
@@ -263,6 +288,7 @@ static int __arch_update_cpu_topology(void)
update_cpu_masks();
if (!MACHINE_HAS_TOPOLOGY)
topology_update_polarization_simple();
+ mutex_unlock(&smp_cpu_state_mutex);
return rc;
}
@@ -289,6 +315,11 @@ void topology_schedule_update(void)
schedule_work(&topology_work);
}
+static void topology_flush_work(void)
+{
+ flush_work(&topology_work);
+}
+
static void topology_timer_fn(unsigned long ignored)
{
if (ptf(PTF_CHECK))
@@ -459,6 +490,12 @@ void __init topology_init_early(void)
struct sysinfo_15_1_x *info;
set_sched_topology(s390_topology);
+ if (topology_mode == TOPOLOGY_MODE_UNINITIALIZED) {
+ if (MACHINE_HAS_TOPOLOGY)
+ topology_mode = TOPOLOGY_MODE_HW;
+ else
+ topology_mode = TOPOLOGY_MODE_SINGLE;
+ }
if (!MACHINE_HAS_TOPOLOGY)
goto out;
tl_info = memblock_virt_alloc(PAGE_SIZE, PAGE_SIZE);
@@ -474,12 +511,97 @@ out:
__arch_update_cpu_topology();
}
+static inline int topology_get_mode(int enabled)
+{
+ if (!enabled)
+ return TOPOLOGY_MODE_SINGLE;
+ return MACHINE_HAS_TOPOLOGY ? TOPOLOGY_MODE_HW : TOPOLOGY_MODE_PACKAGE;
+}
+
+static inline int topology_is_enabled(void)
+{
+ return topology_mode != TOPOLOGY_MODE_SINGLE;
+}
+
+static int __init topology_setup(char *str)
+{
+ bool enabled;
+ int rc;
+
+ rc = kstrtobool(str, &enabled);
+ if (rc)
+ return rc;
+ topology_mode = topology_get_mode(enabled);
+ return 0;
+}
+early_param("topology", topology_setup);
+
+static int topology_ctl_handler(struct ctl_table *ctl, int write,
+ void __user *buffer, size_t *lenp, loff_t *ppos)
+{
+ unsigned int len;
+ int new_mode;
+ char buf[2];
+
+ if (!*lenp || *ppos) {
+ *lenp = 0;
+ return 0;
+ }
+ if (!write) {
+ strncpy(buf, topology_is_enabled() ? "1\n" : "0\n",
+ ARRAY_SIZE(buf));
+ len = strnlen(buf, ARRAY_SIZE(buf));
+ if (len > *lenp)
+ len = *lenp;
+ if (copy_to_user(buffer, buf, len))
+ return -EFAULT;
+ goto out;
+ }
+ len = *lenp;
+ if (copy_from_user(buf, buffer, len > sizeof(buf) ? sizeof(buf) : len))
+ return -EFAULT;
+ if (buf[0] != '0' && buf[0] != '1')
+ return -EINVAL;
+ mutex_lock(&smp_cpu_state_mutex);
+ new_mode = topology_get_mode(buf[0] == '1');
+ if (topology_mode != new_mode) {
+ topology_mode = new_mode;
+ topology_schedule_update();
+ }
+ mutex_unlock(&smp_cpu_state_mutex);
+ topology_flush_work();
+out:
+ *lenp = len;
+ *ppos += len;
+ return 0;
+}
+
+static struct ctl_table topology_ctl_table[] = {
+ {
+ .procname = "topology",
+ .mode = 0644,
+ .proc_handler = topology_ctl_handler,
+ },
+ { },
+};
+
+static struct ctl_table topology_dir_table[] = {
+ {
+ .procname = "s390",
+ .maxlen = 0,
+ .mode = 0555,
+ .child = topology_ctl_table,
+ },
+ { },
+};
+
static int __init topology_init(void)
{
if (MACHINE_HAS_TOPOLOGY)
set_topology_timer();
else
topology_update_polarization_simple();
+ register_sysctl_table(topology_dir_table);
return device_create_file(cpu_subsys.dev_root, &dev_attr_dispatching);
}
device_initcall(topology_init);
diff --git a/arch/s390/kernel/trace.c b/arch/s390/kernel/trace.c
index dde7654f5c68..490b52e85014 100644
--- a/arch/s390/kernel/trace.c
+++ b/arch/s390/kernel/trace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Tracepoint definitions for s390
*
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index 442e5423ce3d..a5297a22bc1e 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* S390 version
* Copyright IBM Corp. 1999, 2000
diff --git a/arch/s390/kernel/uprobes.c b/arch/s390/kernel/uprobes.c
index d94baa8db507..d9d1f512f019 100644
--- a/arch/s390/kernel/uprobes.c
+++ b/arch/s390/kernel/uprobes.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* User-space Probes (UProbes) for s390
*
diff --git a/arch/s390/kernel/vdso32/Makefile b/arch/s390/kernel/vdso32/Makefile
index 6cc947896c77..308564b9bf68 100644
--- a/arch/s390/kernel/vdso32/Makefile
+++ b/arch/s390/kernel/vdso32/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# List of files in the vdso, has to be asm only for now
KCOV_INSTRUMENT := n
diff --git a/arch/s390/kernel/vdso32/getcpu.S b/arch/s390/kernel/vdso32/getcpu.S
index c1ed0b72030f..6e30769dd017 100644
--- a/arch/s390/kernel/vdso32/getcpu.S
+++ b/arch/s390/kernel/vdso32/getcpu.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Userland implementation of getcpu() for 32 bits processes in a
* s390 kernel for use in the vDSO
diff --git a/arch/s390/kernel/vdso32/note.S b/arch/s390/kernel/vdso32/note.S
index 79a071e4357e..db19d0680a0a 100644
--- a/arch/s390/kernel/vdso32/note.S
+++ b/arch/s390/kernel/vdso32/note.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This supplies .note.* sections to go into the PT_NOTE inside the vDSO text.
* Here we can supply some information useful to userland.
diff --git a/arch/s390/kernel/vdso32/vdso32.lds.S b/arch/s390/kernel/vdso32/vdso32.lds.S
index 263a7f9eee1e..721c4954cb6e 100644
--- a/arch/s390/kernel/vdso32/vdso32.lds.S
+++ b/arch/s390/kernel/vdso32/vdso32.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is the infamous ld script for the 32 bits vdso
* library
diff --git a/arch/s390/kernel/vdso32/vdso32_wrapper.S b/arch/s390/kernel/vdso32/vdso32_wrapper.S
index ae42f8ce350b..de2fb930471a 100644
--- a/arch/s390/kernel/vdso32/vdso32_wrapper.S
+++ b/arch/s390/kernel/vdso32/vdso32_wrapper.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/init.h>
#include <linux/linkage.h>
#include <asm/page.h>
diff --git a/arch/s390/kernel/vdso64/Makefile b/arch/s390/kernel/vdso64/Makefile
index 2d54c18089eb..f81ae7998883 100644
--- a/arch/s390/kernel/vdso64/Makefile
+++ b/arch/s390/kernel/vdso64/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# List of files in the vdso, has to be asm only for now
KCOV_INSTRUMENT := n
diff --git a/arch/s390/kernel/vdso64/getcpu.S b/arch/s390/kernel/vdso64/getcpu.S
index 4cbe98291931..43983764b959 100644
--- a/arch/s390/kernel/vdso64/getcpu.S
+++ b/arch/s390/kernel/vdso64/getcpu.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Userland implementation of getcpu() for 64 bits processes in a
* s390 kernel for use in the vDSO
diff --git a/arch/s390/kernel/vdso64/vdso64.lds.S b/arch/s390/kernel/vdso64/vdso64.lds.S
index 9e3dbbcc1cfc..7ddb116b5e2e 100644
--- a/arch/s390/kernel/vdso64/vdso64.lds.S
+++ b/arch/s390/kernel/vdso64/vdso64.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is the infamous ld script for the 64 bits vdso
* library
diff --git a/arch/s390/kernel/vdso64/vdso64_wrapper.S b/arch/s390/kernel/vdso64/vdso64_wrapper.S
index c245842b516f..672184998623 100644
--- a/arch/s390/kernel/vdso64/vdso64_wrapper.S
+++ b/arch/s390/kernel/vdso64/vdso64_wrapper.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/init.h>
#include <linux/linkage.h>
#include <asm/page.h>
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
index 6e2c42bd1c3b..96a713a470e7 100644
--- a/arch/s390/kernel/vmlinux.lds.S
+++ b/arch/s390/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ld script to make s390 Linux kernel
* Written by Martin Schwidefsky (schwidefsky@de.ibm.com)
*/
diff --git a/arch/s390/kvm/Kconfig b/arch/s390/kvm/Kconfig
index b1900239b0ab..9a4594e0a1ff 100644
--- a/arch/s390/kvm/Kconfig
+++ b/arch/s390/kvm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# KVM configuration
#
diff --git a/arch/s390/kvm/gaccess.c b/arch/s390/kvm/gaccess.c
index 3cc77391a102..c24bfa72baf7 100644
--- a/arch/s390/kvm/gaccess.c
+++ b/arch/s390/kvm/gaccess.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* guest access functions
*
diff --git a/arch/s390/kvm/trace-s390.h b/arch/s390/kvm/trace-s390.h
index 78b7e847984a..6f0209d45164 100644
--- a/arch/s390/kvm/trace-s390.h
+++ b/arch/s390/kvm/trace-s390.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_KVMS390_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_KVMS390_H
diff --git a/arch/s390/kvm/trace.h b/arch/s390/kvm/trace.h
index 4fc9d4e5be89..aa419eb6a0c8 100644
--- a/arch/s390/kvm/trace.h
+++ b/arch/s390/kvm/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_KVM_H
diff --git a/arch/s390/lib/Makefile b/arch/s390/lib/Makefile
index 1d1af31e8354..9bfe0802684b 100644
--- a/arch/s390/lib/Makefile
+++ b/arch/s390/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for s390-specific library files..
#
diff --git a/arch/s390/lib/delay.c b/arch/s390/lib/delay.c
index 7f17555ad4d5..d4aa10795605 100644
--- a/arch/s390/lib/delay.c
+++ b/arch/s390/lib/delay.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Precise Delay Loops for S390
*
diff --git a/arch/s390/lib/find.c b/arch/s390/lib/find.c
index d90b9245ea41..96a8a2e2d067 100644
--- a/arch/s390/lib/find.c
+++ b/arch/s390/lib/find.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* MSB0 numbered special bitops handling.
*
diff --git a/arch/s390/lib/mem.S b/arch/s390/lib/mem.S
index 7ff79a4ff00c..d66751397e72 100644
--- a/arch/s390/lib/mem.S
+++ b/arch/s390/lib/mem.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* String handling functions.
*
diff --git a/arch/s390/lib/probes.c b/arch/s390/lib/probes.c
index 1963ddbf4ab3..1e184a03442d 100644
--- a/arch/s390/lib/probes.c
+++ b/arch/s390/lib/probes.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common helper functions for kprobes and uprobes
*
diff --git a/arch/s390/lib/spinlock.c b/arch/s390/lib/spinlock.c
index b12663d653d8..1dc85f552f48 100644
--- a/arch/s390/lib/spinlock.c
+++ b/arch/s390/lib/spinlock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Out of line spinlock code.
*
diff --git a/arch/s390/lib/string.c b/arch/s390/lib/string.c
index 4ee27339c792..dbf2fdad2724 100644
--- a/arch/s390/lib/string.c
+++ b/arch/s390/lib/string.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Optimized string functions
*
diff --git a/arch/s390/lib/uaccess.c b/arch/s390/lib/uaccess.c
index 4ea9106417ee..802903c50de1 100644
--- a/arch/s390/lib/uaccess.c
+++ b/arch/s390/lib/uaccess.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Standard user space access functions based on mvcp/mvcs and doing
* interesting things in the secondary space mode.
diff --git a/arch/s390/lib/xor.c b/arch/s390/lib/xor.c
index b4fd05c36151..96580590ccaf 100644
--- a/arch/s390/lib/xor.c
+++ b/arch/s390/lib/xor.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Optimized xor_block operation for RAID4/5
*
diff --git a/arch/s390/mm/Makefile b/arch/s390/mm/Makefile
index 0aa0ad165d8b..33fe418506bc 100644
--- a/arch/s390/mm/Makefile
+++ b/arch/s390/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux s390-specific parts of the memory manager.
#
diff --git a/arch/s390/mm/dump_pagetables.c b/arch/s390/mm/dump_pagetables.c
index 049c3c455b32..507f23ba2034 100644
--- a/arch/s390/mm/dump_pagetables.c
+++ b/arch/s390/mm/dump_pagetables.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/seq_file.h>
#include <linux/debugfs.h>
#include <linux/sched.h>
diff --git a/arch/s390/mm/extmem.c b/arch/s390/mm/extmem.c
index 9f118629b55f..920d40894535 100644
--- a/arch/s390/mm/extmem.c
+++ b/arch/s390/mm/extmem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Author(s)......: Carsten Otte <cotte@de.ibm.com>
* Rob M van der Heij <rvdheij@nl.ibm.com>
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index bdabb013537b..242b78c0a9ec 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/mm/gup.c b/arch/s390/mm/gup.c
index 8ecc25e760fa..05c8abd864f1 100644
--- a/arch/s390/mm/gup.c
+++ b/arch/s390/mm/gup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Lockless get_user_pages_fast for s390
*
@@ -56,13 +57,12 @@ static inline int gup_pte_range(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
static inline int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
unsigned long end, int write, struct page **pages, int *nr)
{
- unsigned long mask, result;
struct page *head, *page;
+ unsigned long mask;
int refs;
- result = write ? 0 : _SEGMENT_ENTRY_PROTECT;
- mask = result | _SEGMENT_ENTRY_INVALID;
- if ((pmd_val(pmd) & mask) != result)
+ mask = (write ? _SEGMENT_ENTRY_PROTECT : 0) | _SEGMENT_ENTRY_INVALID;
+ if ((pmd_val(pmd) & mask) != 0)
return 0;
VM_BUG_ON(!pfn_valid(pmd_val(pmd) >> PAGE_SHIFT));
diff --git a/arch/s390/mm/hugetlbpage.c b/arch/s390/mm/hugetlbpage.c
index 44a8e6f0391e..e804090f4470 100644
--- a/arch/s390/mm/hugetlbpage.c
+++ b/arch/s390/mm/hugetlbpage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IBM System z Huge TLB Page Support for Kernel.
*
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index 3b567838b905..41ba9bd53e48 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* S390 version
* Copyright IBM Corp. 1999
diff --git a/arch/s390/mm/maccess.c b/arch/s390/mm/maccess.c
index 792f9c63fbca..7be06475809b 100644
--- a/arch/s390/mm/maccess.c
+++ b/arch/s390/mm/maccess.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Access kernel memory without faulting -- s390 specific implementation.
*
diff --git a/arch/s390/mm/mem_detect.c b/arch/s390/mm/mem_detect.c
index e58dca05b962..21f6c82c8296 100644
--- a/arch/s390/mm/mem_detect.c
+++ b/arch/s390/mm/mem_detect.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2008, 2009
*
diff --git a/arch/s390/mm/page-states.c b/arch/s390/mm/page-states.c
index 07fa7b8ae233..382153ff17e3 100644
--- a/arch/s390/mm/page-states.c
+++ b/arch/s390/mm/page-states.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2008
*
diff --git a/arch/s390/mm/pageattr.c b/arch/s390/mm/pageattr.c
index 552f898dfa74..c44171588d08 100644
--- a/arch/s390/mm/pageattr.c
+++ b/arch/s390/mm/pageattr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2011
* Author(s): Jan Glauber <jang@linux.vnet.ibm.com>
diff --git a/arch/s390/mm/pgalloc.c b/arch/s390/mm/pgalloc.c
index 05f1f27e6708..cc2faffa7d6e 100644
--- a/arch/s390/mm/pgalloc.c
+++ b/arch/s390/mm/pgalloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Page table allocation functions
*
diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c
index c0af0d7b6e5f..f2ada0bc08e6 100644
--- a/arch/s390/mm/vmem.c
+++ b/arch/s390/mm/vmem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2006
* Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
diff --git a/arch/s390/net/bpf_jit.S b/arch/s390/net/bpf_jit.S
index a1c917d881ec..25bb4643c4f4 100644
--- a/arch/s390/net/bpf_jit.S
+++ b/arch/s390/net/bpf_jit.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* BPF Jit compiler for s390, help functions.
*
diff --git a/arch/s390/net/bpf_jit.h b/arch/s390/net/bpf_jit.h
index fda605dbc1b4..7fa55ccffe48 100644
--- a/arch/s390/net/bpf_jit.h
+++ b/arch/s390/net/bpf_jit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* BPF Jit compiler defines
*
diff --git a/arch/s390/net/bpf_jit_comp.c b/arch/s390/net/bpf_jit_comp.c
index 8ec88497a28d..b15cd2f0320f 100644
--- a/arch/s390/net/bpf_jit_comp.c
+++ b/arch/s390/net/bpf_jit_comp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* BPF Jit compiler for s390.
*
diff --git a/arch/s390/numa/mode_emu.c b/arch/s390/numa/mode_emu.c
index cfd08384f0ab..83b222c57609 100644
--- a/arch/s390/numa/mode_emu.c
+++ b/arch/s390/numa/mode_emu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* NUMA support for s390
*
diff --git a/arch/s390/numa/numa.c b/arch/s390/numa/numa.c
index f576f1073378..06a80434cfe6 100644
--- a/arch/s390/numa/numa.c
+++ b/arch/s390/numa/numa.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* NUMA support for s390
*
diff --git a/arch/s390/numa/numa_mode.h b/arch/s390/numa/numa_mode.h
index 08953b0b1c7f..dfd3e2784081 100644
--- a/arch/s390/numa/numa_mode.h
+++ b/arch/s390/numa/numa_mode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NUMA support for s390
*
diff --git a/arch/s390/numa/toptree.c b/arch/s390/numa/toptree.c
index 26f622b1cd11..21d1e8a1546d 100644
--- a/arch/s390/numa/toptree.c
+++ b/arch/s390/numa/toptree.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* NUMA support for s390
*
diff --git a/arch/s390/numa/toptree.h b/arch/s390/numa/toptree.h
index bdf502027af4..5246371ec713 100644
--- a/arch/s390/numa/toptree.h
+++ b/arch/s390/numa/toptree.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NUMA support for s390
*
diff --git a/arch/s390/oprofile/Makefile b/arch/s390/oprofile/Makefile
index e9dd41b0b8d3..36261f9d360b 100644
--- a/arch/s390/oprofile/Makefile
+++ b/arch/s390/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
diff --git a/arch/s390/oprofile/init.c b/arch/s390/oprofile/init.c
index 9a4de4599c7b..43d9525c36fc 100644
--- a/arch/s390/oprofile/init.c
+++ b/arch/s390/oprofile/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* S390 Version
* Copyright IBM Corp. 2002, 2011
diff --git a/arch/s390/pci/pci_clp.c b/arch/s390/pci/pci_clp.c
index 0ae3936e266f..93cd0f1ca12b 100644
--- a/arch/s390/pci/pci_clp.c
+++ b/arch/s390/pci/pci_clp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2012
*
diff --git a/arch/s390/pci/pci_event.c b/arch/s390/pci/pci_event.c
index 0bbc04af4418..8d6ee4af4230 100644
--- a/arch/s390/pci/pci_event.c
+++ b/arch/s390/pci/pci_event.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2012
*
diff --git a/arch/s390/pci/pci_mmio.c b/arch/s390/pci/pci_mmio.c
index b1bb2b72302c..7d42a8794f10 100644
--- a/arch/s390/pci/pci_mmio.c
+++ b/arch/s390/pci/pci_mmio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Access to PCI I/O memory from user space programs.
*
diff --git a/arch/s390/pci/pci_sysfs.c b/arch/s390/pci/pci_sysfs.c
index ed484dc84d14..430c14b006d1 100644
--- a/arch/s390/pci/pci_sysfs.c
+++ b/arch/s390/pci/pci_sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2012
*
diff --git a/arch/s390/tools/Makefile b/arch/s390/tools/Makefile
index 4b5e1e499527..d54c149fbb6b 100644
--- a/arch/s390/tools/Makefile
+++ b/arch/s390/tools/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for s390 specific build tools
#
diff --git a/arch/s390/tools/gen_facilities.c b/arch/s390/tools/gen_facilities.c
index 70dd8f17d054..0373801d9860 100644
--- a/arch/s390/tools/gen_facilities.c
+++ b/arch/s390/tools/gen_facilities.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Simple program to generate defines out of facility lists that use the bit
* numbering scheme from the Princples of Operations: most significant bit
diff --git a/arch/score/Kconfig b/arch/score/Kconfig
index 507d63181389..d881f99c9ddd 100644
--- a/arch/score/Kconfig
+++ b/arch/score/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Machine selection"
config SCORE
diff --git a/arch/score/Kconfig.debug b/arch/score/Kconfig.debug
index d8a9b2d146ee..041e51dcdafb 100644
--- a/arch/score/Kconfig.debug
+++ b/arch/score/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
config TRACE_IRQFLAGS_SUPPORT
diff --git a/arch/score/include/asm/asmmacro.h b/arch/score/include/asm/asmmacro.h
index a04a54cea25d..7370a35d17d1 100644
--- a/arch/score/include/asm/asmmacro.h
+++ b/arch/score/include/asm/asmmacro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_ASMMACRO_H
#define _ASM_SCORE_ASMMACRO_H
diff --git a/arch/score/include/asm/atomic.h b/arch/score/include/asm/atomic.h
index edf33dbded1e..56700980b9be 100644
--- a/arch/score/include/asm/atomic.h
+++ b/arch/score/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_ATOMIC_H
#define _ASM_SCORE_ATOMIC_H
diff --git a/arch/score/include/asm/bitops.h b/arch/score/include/asm/bitops.h
index c1bf8d6d0fb0..6342b0123725 100644
--- a/arch/score/include/asm/bitops.h
+++ b/arch/score/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_BITOPS_H
#define _ASM_SCORE_BITOPS_H
diff --git a/arch/score/include/asm/bug.h b/arch/score/include/asm/bug.h
index fd7164af1f04..966b2e9e8d74 100644
--- a/arch/score/include/asm/bug.h
+++ b/arch/score/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_BUG_H
#define _ASM_SCORE_BUG_H
diff --git a/arch/score/include/asm/bugs.h b/arch/score/include/asm/bugs.h
index a062e1056bb3..81185dced763 100644
--- a/arch/score/include/asm/bugs.h
+++ b/arch/score/include/asm/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_BUGS_H
#define _ASM_SCORE_BUGS_H
diff --git a/arch/score/include/asm/cache.h b/arch/score/include/asm/cache.h
index ae3d59f2d2c4..d55de3cbbb9f 100644
--- a/arch/score/include/asm/cache.h
+++ b/arch/score/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_CACHE_H
#define _ASM_SCORE_CACHE_H
diff --git a/arch/score/include/asm/cacheflush.h b/arch/score/include/asm/cacheflush.h
index 1d545d0ce206..cf1e609634fd 100644
--- a/arch/score/include/asm/cacheflush.h
+++ b/arch/score/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_CACHEFLUSH_H
#define _ASM_SCORE_CACHEFLUSH_H
diff --git a/arch/score/include/asm/checksum.h b/arch/score/include/asm/checksum.h
index 0338927f4826..9f00ca5fd49d 100644
--- a/arch/score/include/asm/checksum.h
+++ b/arch/score/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_CHECKSUM_H
#define _ASM_SCORE_CHECKSUM_H
diff --git a/arch/score/include/asm/cmpxchg.h b/arch/score/include/asm/cmpxchg.h
index cc3f6420b71c..e503073c8978 100644
--- a/arch/score/include/asm/cmpxchg.h
+++ b/arch/score/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_CMPXCHG_H
#define _ASM_SCORE_CMPXCHG_H
diff --git a/arch/score/include/asm/delay.h b/arch/score/include/asm/delay.h
index 529e494712a5..a4bd2c748ab4 100644
--- a/arch/score/include/asm/delay.h
+++ b/arch/score/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_DELAY_H
#define _ASM_SCORE_DELAY_H
diff --git a/arch/score/include/asm/device.h b/arch/score/include/asm/device.h
index 2dc7cc5d5ef9..818ad4d01197 100644
--- a/arch/score/include/asm/device.h
+++ b/arch/score/include/asm/device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_DEVICE_H
#define _ASM_SCORE_DEVICE_H
diff --git a/arch/score/include/asm/div64.h b/arch/score/include/asm/div64.h
index 75fae19824eb..cf73dc218bec 100644
--- a/arch/score/include/asm/div64.h
+++ b/arch/score/include/asm/div64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_DIV64_H
#define _ASM_SCORE_DIV64_H
diff --git a/arch/score/include/asm/dma.h b/arch/score/include/asm/dma.h
index 9f44185298bf..fd44a9cbee4f 100644
--- a/arch/score/include/asm/dma.h
+++ b/arch/score/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_DMA_H
#define _ASM_SCORE_DMA_H
diff --git a/arch/score/include/asm/elf.h b/arch/score/include/asm/elf.h
index 6a9421c693ca..c970ac160f3c 100644
--- a/arch/score/include/asm/elf.h
+++ b/arch/score/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_ELF_H
#define _ASM_SCORE_ELF_H
diff --git a/arch/score/include/asm/emergency-restart.h b/arch/score/include/asm/emergency-restart.h
index ca31e9803a8a..b0612c677764 100644
--- a/arch/score/include/asm/emergency-restart.h
+++ b/arch/score/include/asm/emergency-restart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_EMERGENCY_RESTART_H
#define _ASM_SCORE_EMERGENCY_RESTART_H
diff --git a/arch/score/include/asm/exec.h b/arch/score/include/asm/exec.h
index f9f3cd59c860..a1f95e1d8a31 100644
--- a/arch/score/include/asm/exec.h
+++ b/arch/score/include/asm/exec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_EXEC_H
#define _ASM_SCORE_EXEC_H
diff --git a/arch/score/include/asm/fixmap.h b/arch/score/include/asm/fixmap.h
index ee1676694024..68ca314830c9 100644
--- a/arch/score/include/asm/fixmap.h
+++ b/arch/score/include/asm/fixmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_FIXMAP_H
#define _ASM_SCORE_FIXMAP_H
diff --git a/arch/score/include/asm/futex.h b/arch/score/include/asm/futex.h
index 1dca2420f8db..ec247fb364c9 100644
--- a/arch/score/include/asm/futex.h
+++ b/arch/score/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_FUTEX_H
#define _ASM_SCORE_FUTEX_H
diff --git a/arch/score/include/asm/hardirq.h b/arch/score/include/asm/hardirq.h
index dc932c50d3ee..d8dd8909cb18 100644
--- a/arch/score/include/asm/hardirq.h
+++ b/arch/score/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_HARDIRQ_H
#define _ASM_SCORE_HARDIRQ_H
diff --git a/arch/score/include/asm/io.h b/arch/score/include/asm/io.h
index 574c8827abe2..37ce8723b06b 100644
--- a/arch/score/include/asm/io.h
+++ b/arch/score/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_IO_H
#define _ASM_SCORE_IO_H
diff --git a/arch/score/include/asm/irq.h b/arch/score/include/asm/irq.h
index c883f3df33fa..c1434c889de2 100644
--- a/arch/score/include/asm/irq.h
+++ b/arch/score/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_IRQ_H
#define _ASM_SCORE_IRQ_H
diff --git a/arch/score/include/asm/irq_regs.h b/arch/score/include/asm/irq_regs.h
index b8e881c9a69f..740b2315d848 100644
--- a/arch/score/include/asm/irq_regs.h
+++ b/arch/score/include/asm/irq_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_IRQ_REGS_H
#define _ASM_SCORE_IRQ_REGS_H
diff --git a/arch/score/include/asm/irqflags.h b/arch/score/include/asm/irqflags.h
index 37c6ac9dd6e8..354c1979ea8d 100644
--- a/arch/score/include/asm/irqflags.h
+++ b/arch/score/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_IRQFLAGS_H
#define _ASM_SCORE_IRQFLAGS_H
diff --git a/arch/score/include/asm/kdebug.h b/arch/score/include/asm/kdebug.h
index a666e513f747..481ba1fb5372 100644
--- a/arch/score/include/asm/kdebug.h
+++ b/arch/score/include/asm/kdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_KDEBUG_H
#define _ASM_SCORE_KDEBUG_H
diff --git a/arch/score/include/asm/kmap_types.h b/arch/score/include/asm/kmap_types.h
index 6c46eb5077d3..14261872c9c7 100644
--- a/arch/score/include/asm/kmap_types.h
+++ b/arch/score/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_KMAP_TYPES_H
#define _ASM_SCORE_KMAP_TYPES_H
diff --git a/arch/score/include/asm/linkage.h b/arch/score/include/asm/linkage.h
index 2323a8ecf445..0c11c009969a 100644
--- a/arch/score/include/asm/linkage.h
+++ b/arch/score/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_LINKAGE_H
#define _ASM_SCORE_LINKAGE_H
diff --git a/arch/score/include/asm/local.h b/arch/score/include/asm/local.h
index 7e02f13dbba8..00bdebdf75f2 100644
--- a/arch/score/include/asm/local.h
+++ b/arch/score/include/asm/local.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_LOCAL_H
#define _ASM_SCORE_LOCAL_H
diff --git a/arch/score/include/asm/mmu.h b/arch/score/include/asm/mmu.h
index 676828e4c10a..d913369adda3 100644
--- a/arch/score/include/asm/mmu.h
+++ b/arch/score/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_MMU_H
#define _ASM_SCORE_MMU_H
diff --git a/arch/score/include/asm/mmu_context.h b/arch/score/include/asm/mmu_context.h
index 073f95d350de..d0aa2a5aebca 100644
--- a/arch/score/include/asm/mmu_context.h
+++ b/arch/score/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_MMU_CONTEXT_H
#define _ASM_SCORE_MMU_CONTEXT_H
diff --git a/arch/score/include/asm/module.h b/arch/score/include/asm/module.h
index 6dc1f2935eef..33777ed32e9e 100644
--- a/arch/score/include/asm/module.h
+++ b/arch/score/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_MODULE_H
#define _ASM_SCORE_MODULE_H
diff --git a/arch/score/include/asm/page.h b/arch/score/include/asm/page.h
index 1e9ade8e77e6..17d9c68b6bd5 100644
--- a/arch/score/include/asm/page.h
+++ b/arch/score/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_PAGE_H
#define _ASM_SCORE_PAGE_H
diff --git a/arch/score/include/asm/percpu.h b/arch/score/include/asm/percpu.h
index e7bd4e05b475..5a6a2f7e5d62 100644
--- a/arch/score/include/asm/percpu.h
+++ b/arch/score/include/asm/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_PERCPU_H
#define _ASM_SCORE_PERCPU_H
diff --git a/arch/score/include/asm/pgalloc.h b/arch/score/include/asm/pgalloc.h
index 49b012d78c1a..7dfc5c163093 100644
--- a/arch/score/include/asm/pgalloc.h
+++ b/arch/score/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_PGALLOC_H
#define _ASM_SCORE_PGALLOC_H
diff --git a/arch/score/include/asm/pgtable-bits.h b/arch/score/include/asm/pgtable-bits.h
index 0e5c6f466520..fb8f306f4d11 100644
--- a/arch/score/include/asm/pgtable-bits.h
+++ b/arch/score/include/asm/pgtable-bits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_PGTABLE_BITS_H
#define _ASM_SCORE_PGTABLE_BITS_H
diff --git a/arch/score/include/asm/pgtable.h b/arch/score/include/asm/pgtable.h
index 46ff8fd678a7..c14226be0559 100644
--- a/arch/score/include/asm/pgtable.h
+++ b/arch/score/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_PGTABLE_H
#define _ASM_SCORE_PGTABLE_H
diff --git a/arch/score/include/asm/processor.h b/arch/score/include/asm/processor.h
index 299274581968..1412c774c6b1 100644
--- a/arch/score/include/asm/processor.h
+++ b/arch/score/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_PROCESSOR_H
#define _ASM_SCORE_PROCESSOR_H
diff --git a/arch/score/include/asm/ptrace.h b/arch/score/include/asm/ptrace.h
index abc279d96b73..026b9c51bee8 100644
--- a/arch/score/include/asm/ptrace.h
+++ b/arch/score/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_PTRACE_H
#define _ASM_SCORE_PTRACE_H
diff --git a/arch/score/include/asm/scoreregs.h b/arch/score/include/asm/scoreregs.h
index d0ad29204518..ff8d20a49aa7 100644
--- a/arch/score/include/asm/scoreregs.h
+++ b/arch/score/include/asm/scoreregs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_SCOREREGS_H
#define _ASM_SCORE_SCOREREGS_H
diff --git a/arch/score/include/asm/segment.h b/arch/score/include/asm/segment.h
index e16cf6afb495..b00c277e17ff 100644
--- a/arch/score/include/asm/segment.h
+++ b/arch/score/include/asm/segment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_SEGMENT_H
#define _ASM_SCORE_SEGMENT_H
diff --git a/arch/score/include/asm/setup.h b/arch/score/include/asm/setup.h
index 1f3aa7262fa3..a596d0bd0632 100644
--- a/arch/score/include/asm/setup.h
+++ b/arch/score/include/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_SETUP_H
#define _ASM_SCORE_SETUP_H
diff --git a/arch/score/include/asm/shmparam.h b/arch/score/include/asm/shmparam.h
index 1d60813141b6..01a3d0eaed80 100644
--- a/arch/score/include/asm/shmparam.h
+++ b/arch/score/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_SHMPARAM_H
#define _ASM_SCORE_SHMPARAM_H
diff --git a/arch/score/include/asm/string.h b/arch/score/include/asm/string.h
index 8a6bf5063aa5..3debf3b234b7 100644
--- a/arch/score/include/asm/string.h
+++ b/arch/score/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_STRING_H
#define _ASM_SCORE_STRING_H
diff --git a/arch/score/include/asm/switch_to.h b/arch/score/include/asm/switch_to.h
index fda3f83308d2..ce730e60cd43 100644
--- a/arch/score/include/asm/switch_to.h
+++ b/arch/score/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_SWITCH_TO_H
#define _ASM_SCORE_SWITCH_TO_H
diff --git a/arch/score/include/asm/syscalls.h b/arch/score/include/asm/syscalls.h
index 98d1df92fbd1..caa099fd9a8e 100644
--- a/arch/score/include/asm/syscalls.h
+++ b/arch/score/include/asm/syscalls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_SYSCALLS_H
#define _ASM_SCORE_SYSCALLS_H
diff --git a/arch/score/include/asm/thread_info.h b/arch/score/include/asm/thread_info.h
index 7d9ffb15c477..ad51b56e51bd 100644
--- a/arch/score/include/asm/thread_info.h
+++ b/arch/score/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_THREAD_INFO_H
#define _ASM_SCORE_THREAD_INFO_H
diff --git a/arch/score/include/asm/timex.h b/arch/score/include/asm/timex.h
index a524ae0c5e7b..ea8e7ff49e57 100644
--- a/arch/score/include/asm/timex.h
+++ b/arch/score/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_TIMEX_H
#define _ASM_SCORE_TIMEX_H
diff --git a/arch/score/include/asm/tlb.h b/arch/score/include/asm/tlb.h
index 46882ed524e6..6e7206428877 100644
--- a/arch/score/include/asm/tlb.h
+++ b/arch/score/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_TLB_H
#define _ASM_SCORE_TLB_H
diff --git a/arch/score/include/asm/tlbflush.h b/arch/score/include/asm/tlbflush.h
index 9cce978367d5..f48722f4b00e 100644
--- a/arch/score/include/asm/tlbflush.h
+++ b/arch/score/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_TLBFLUSH_H
#define _ASM_SCORE_TLBFLUSH_H
diff --git a/arch/score/include/asm/topology.h b/arch/score/include/asm/topology.h
index 425fba381f88..06577d2a1808 100644
--- a/arch/score/include/asm/topology.h
+++ b/arch/score/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_TOPOLOGY_H
#define _ASM_SCORE_TOPOLOGY_H
diff --git a/arch/score/include/asm/uaccess.h b/arch/score/include/asm/uaccess.h
index 0ef220474d9b..a233f3236846 100644
--- a/arch/score/include/asm/uaccess.h
+++ b/arch/score/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SCORE_UACCESS_H
#define __SCORE_UACCESS_H
diff --git a/arch/score/include/asm/unaligned.h b/arch/score/include/asm/unaligned.h
index 2fc06de51c62..5db6c805ce7e 100644
--- a/arch/score/include/asm/unaligned.h
+++ b/arch/score/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_UNALIGNED_H
#define _ASM_SCORE_UNALIGNED_H
diff --git a/arch/score/include/asm/user.h b/arch/score/include/asm/user.h
index 7bfb8e2c8054..f7b0f3434e72 100644
--- a/arch/score/include/asm/user.h
+++ b/arch/score/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_USER_H
#define _ASM_SCORE_USER_H
diff --git a/arch/score/include/uapi/asm/bitsperlong.h b/arch/score/include/uapi/asm/bitsperlong.h
index 86ff337aa459..df48f2717da2 100644
--- a/arch/score/include/uapi/asm/bitsperlong.h
+++ b/arch/score/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_BITSPERLONG_H
#define _ASM_SCORE_BITSPERLONG_H
diff --git a/arch/score/include/uapi/asm/byteorder.h b/arch/score/include/uapi/asm/byteorder.h
index 88cbebc79212..a5247ea66c03 100644
--- a/arch/score/include/uapi/asm/byteorder.h
+++ b/arch/score/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_BYTEORDER_H
#define _ASM_SCORE_BYTEORDER_H
diff --git a/arch/score/include/uapi/asm/errno.h b/arch/score/include/uapi/asm/errno.h
index 29ff39d5ab47..1b914865714f 100644
--- a/arch/score/include/uapi/asm/errno.h
+++ b/arch/score/include/uapi/asm/errno.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_ERRNO_H
#define _ASM_SCORE_ERRNO_H
diff --git a/arch/score/include/uapi/asm/fcntl.h b/arch/score/include/uapi/asm/fcntl.h
index 03968a3103a4..9c5053b87c66 100644
--- a/arch/score/include/uapi/asm/fcntl.h
+++ b/arch/score/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_FCNTL_H
#define _ASM_SCORE_FCNTL_H
diff --git a/arch/score/include/uapi/asm/ioctl.h b/arch/score/include/uapi/asm/ioctl.h
index a351d2194bfd..d6cb6dc33d5f 100644
--- a/arch/score/include/uapi/asm/ioctl.h
+++ b/arch/score/include/uapi/asm/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_IOCTL_H
#define _ASM_SCORE_IOCTL_H
diff --git a/arch/score/include/uapi/asm/ioctls.h b/arch/score/include/uapi/asm/ioctls.h
index ed01d2b9aeab..b93b011f02aa 100644
--- a/arch/score/include/uapi/asm/ioctls.h
+++ b/arch/score/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_IOCTLS_H
#define _ASM_SCORE_IOCTLS_H
diff --git a/arch/score/include/uapi/asm/ipcbuf.h b/arch/score/include/uapi/asm/ipcbuf.h
index e082ceff1818..195ee525308d 100644
--- a/arch/score/include/uapi/asm/ipcbuf.h
+++ b/arch/score/include/uapi/asm/ipcbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_IPCBUF_H
#define _ASM_SCORE_IPCBUF_H
diff --git a/arch/score/include/uapi/asm/kvm_para.h b/arch/score/include/uapi/asm/kvm_para.h
index 14fab8f0b957..baacc4996d18 100644
--- a/arch/score/include/uapi/asm/kvm_para.h
+++ b/arch/score/include/uapi/asm/kvm_para.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/kvm_para.h>
diff --git a/arch/score/include/uapi/asm/mman.h b/arch/score/include/uapi/asm/mman.h
index 84d85ddfed8d..b22b83809432 100644
--- a/arch/score/include/uapi/asm/mman.h
+++ b/arch/score/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_MMAN_H
#define _ASM_SCORE_MMAN_H
diff --git a/arch/score/include/uapi/asm/msgbuf.h b/arch/score/include/uapi/asm/msgbuf.h
index 7506721e29fa..b05a238756ab 100644
--- a/arch/score/include/uapi/asm/msgbuf.h
+++ b/arch/score/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_MSGBUF_H
#define _ASM_SCORE_MSGBUF_H
diff --git a/arch/score/include/uapi/asm/param.h b/arch/score/include/uapi/asm/param.h
index 916b8690b6aa..ce09e2632681 100644
--- a/arch/score/include/uapi/asm/param.h
+++ b/arch/score/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_PARAM_H
#define _ASM_SCORE_PARAM_H
diff --git a/arch/score/include/uapi/asm/poll.h b/arch/score/include/uapi/asm/poll.h
index 18532db02861..c636b85843cd 100644
--- a/arch/score/include/uapi/asm/poll.h
+++ b/arch/score/include/uapi/asm/poll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_POLL_H
#define _ASM_SCORE_POLL_H
diff --git a/arch/score/include/uapi/asm/posix_types.h b/arch/score/include/uapi/asm/posix_types.h
index b88acf80048a..63200d56a4a9 100644
--- a/arch/score/include/uapi/asm/posix_types.h
+++ b/arch/score/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_POSIX_TYPES_H
#define _ASM_SCORE_POSIX_TYPES_H
diff --git a/arch/score/include/uapi/asm/ptrace.h b/arch/score/include/uapi/asm/ptrace.h
index 5c5e794058be..e8bd4923f96e 100644
--- a/arch/score/include/uapi/asm/ptrace.h
+++ b/arch/score/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_SCORE_PTRACE_H
#define _UAPI_ASM_SCORE_PTRACE_H
diff --git a/arch/score/include/uapi/asm/resource.h b/arch/score/include/uapi/asm/resource.h
index 9ce22bc7b475..df3fb9c942c4 100644
--- a/arch/score/include/uapi/asm/resource.h
+++ b/arch/score/include/uapi/asm/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_RESOURCE_H
#define _ASM_SCORE_RESOURCE_H
diff --git a/arch/score/include/uapi/asm/sembuf.h b/arch/score/include/uapi/asm/sembuf.h
index dae5e835ce9e..c16e7a94725d 100644
--- a/arch/score/include/uapi/asm/sembuf.h
+++ b/arch/score/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_SEMBUF_H
#define _ASM_SCORE_SEMBUF_H
diff --git a/arch/score/include/uapi/asm/setup.h b/arch/score/include/uapi/asm/setup.h
index ab9dbdb59bba..dee58323847e 100644
--- a/arch/score/include/uapi/asm/setup.h
+++ b/arch/score/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_SCORE_SETUP_H
#define _UAPI_ASM_SCORE_SETUP_H
diff --git a/arch/score/include/uapi/asm/shmbuf.h b/arch/score/include/uapi/asm/shmbuf.h
index c85b2429ba21..f38acfe733cd 100644
--- a/arch/score/include/uapi/asm/shmbuf.h
+++ b/arch/score/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_SHMBUF_H
#define _ASM_SCORE_SHMBUF_H
diff --git a/arch/score/include/uapi/asm/sigcontext.h b/arch/score/include/uapi/asm/sigcontext.h
index 5ffda39ddb90..2b0cd93a71f6 100644
--- a/arch/score/include/uapi/asm/sigcontext.h
+++ b/arch/score/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_SIGCONTEXT_H
#define _ASM_SCORE_SIGCONTEXT_H
diff --git a/arch/score/include/uapi/asm/signal.h b/arch/score/include/uapi/asm/signal.h
index 2605bc06b64f..7fb694972302 100644
--- a/arch/score/include/uapi/asm/signal.h
+++ b/arch/score/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_SIGNAL_H
#define _ASM_SCORE_SIGNAL_H
diff --git a/arch/score/include/uapi/asm/socket.h b/arch/score/include/uapi/asm/socket.h
index 612a70e385ba..f76ba1f72354 100644
--- a/arch/score/include/uapi/asm/socket.h
+++ b/arch/score/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_SOCKET_H
#define _ASM_SCORE_SOCKET_H
diff --git a/arch/score/include/uapi/asm/sockios.h b/arch/score/include/uapi/asm/sockios.h
index ba8256480189..d0af8ce4373b 100644
--- a/arch/score/include/uapi/asm/sockios.h
+++ b/arch/score/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_SOCKIOS_H
#define _ASM_SCORE_SOCKIOS_H
diff --git a/arch/score/include/uapi/asm/stat.h b/arch/score/include/uapi/asm/stat.h
index 5037055500a2..669b69f764df 100644
--- a/arch/score/include/uapi/asm/stat.h
+++ b/arch/score/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_STAT_H
#define _ASM_SCORE_STAT_H
diff --git a/arch/score/include/uapi/asm/statfs.h b/arch/score/include/uapi/asm/statfs.h
index 36e41004e996..bb92b3e5525d 100644
--- a/arch/score/include/uapi/asm/statfs.h
+++ b/arch/score/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_STATFS_H
#define _ASM_SCORE_STATFS_H
diff --git a/arch/score/include/uapi/asm/swab.h b/arch/score/include/uapi/asm/swab.h
index fadc3cc6d8a2..52b0927282b1 100644
--- a/arch/score/include/uapi/asm/swab.h
+++ b/arch/score/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_SWAB_H
#define _ASM_SCORE_SWAB_H
diff --git a/arch/score/include/uapi/asm/termbits.h b/arch/score/include/uapi/asm/termbits.h
index 9a95c1412437..4a6f5511cd56 100644
--- a/arch/score/include/uapi/asm/termbits.h
+++ b/arch/score/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_TERMBITS_H
#define _ASM_SCORE_TERMBITS_H
diff --git a/arch/score/include/uapi/asm/termios.h b/arch/score/include/uapi/asm/termios.h
index 40984e811ad6..fabb598ecfa3 100644
--- a/arch/score/include/uapi/asm/termios.h
+++ b/arch/score/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_TERMIOS_H
#define _ASM_SCORE_TERMIOS_H
diff --git a/arch/score/include/uapi/asm/types.h b/arch/score/include/uapi/asm/types.h
index 2140032778ee..8515287f412a 100644
--- a/arch/score/include/uapi/asm/types.h
+++ b/arch/score/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SCORE_TYPES_H
#define _ASM_SCORE_TYPES_H
diff --git a/arch/score/include/uapi/asm/unistd.h b/arch/score/include/uapi/asm/unistd.h
index d4008c339e89..04da47bd3d46 100644
--- a/arch/score/include/uapi/asm/unistd.h
+++ b/arch/score/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#define __ARCH_HAVE_MMU
#define __ARCH_WANT_RENAMEAT
diff --git a/arch/score/kernel/Makefile b/arch/score/kernel/Makefile
index fb1802b3f542..42def8cff873 100644
--- a/arch/score/kernel/Makefile
+++ b/arch/score/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/SCORE kernel.
#
diff --git a/arch/score/kernel/sys_call_table.c b/arch/score/kernel/sys_call_table.c
index 287369b88c43..9e6ae793e690 100644
--- a/arch/score/kernel/sys_call_table.c
+++ b/arch/score/kernel/sys_call_table.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/syscalls.h>
#include <linux/signal.h>
#include <linux/unistd.h>
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 640a85925060..97fe29316476 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config SUPERH
def_bool y
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
diff --git a/arch/sh/Kconfig.cpu b/arch/sh/Kconfig.cpu
index 05b518e90cf7..4a4edc7e03d4 100644
--- a/arch/sh/Kconfig.cpu
+++ b/arch/sh/Kconfig.cpu
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Processor features"
choice
diff --git a/arch/sh/Kconfig.debug b/arch/sh/Kconfig.debug
index 5f2bb4242c0f..d0767672640d 100644
--- a/arch/sh/Kconfig.debug
+++ b/arch/sh/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
config TRACE_IRQFLAGS_SUPPORT
diff --git a/arch/sh/boards/Kconfig b/arch/sh/boards/Kconfig
index 3554fcaa023b..6394b4f0a69b 100644
--- a/arch/sh/boards/Kconfig
+++ b/arch/sh/boards/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Board support"
config SOLUTION_ENGINE
diff --git a/arch/sh/boards/Makefile b/arch/sh/boards/Makefile
index cea300362035..4002a22a7c40 100644
--- a/arch/sh/boards/Makefile
+++ b/arch/sh/boards/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Specific board support, not covered by a mach group.
#
diff --git a/arch/sh/boards/board-edosk7705.c b/arch/sh/boards/board-edosk7705.c
index 5e24c17bbdad..67a8803eb3f9 100644
--- a/arch/sh/boards/board-edosk7705.c
+++ b/arch/sh/boards/board-edosk7705.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sh/boards/renesas/edosk7705/setup.c
*
diff --git a/arch/sh/boards/board-polaris.c b/arch/sh/boards/board-polaris.c
index 37a08d094727..3de7bac01903 100644
--- a/arch/sh/boards/board-polaris.c
+++ b/arch/sh/boards/board-polaris.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* June 2006 Steve Glendinning <steve.glendinning@shawell.net>
*
diff --git a/arch/sh/boards/board-secureedge5410.c b/arch/sh/boards/board-secureedge5410.c
index 97ec67ffec2b..603a82325c65 100644
--- a/arch/sh/boards/board-secureedge5410.c
+++ b/arch/sh/boards/board-secureedge5410.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2002 David McCullough <davidm@snapgear.com>
* Copyright (C) 2003 Paul Mundt <lethal@linux-sh.org>
diff --git a/arch/sh/boards/board-sh2007.c b/arch/sh/boards/board-sh2007.c
index 1980bb7e5780..ef9c87deeb08 100644
--- a/arch/sh/boards/board-sh2007.c
+++ b/arch/sh/boards/board-sh2007.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SH-2007 board support.
*
diff --git a/arch/sh/boards/board-shmin.c b/arch/sh/boards/board-shmin.c
index 325bed53b87e..83296c0b75c4 100644
--- a/arch/sh/boards/board-shmin.c
+++ b/arch/sh/boards/board-shmin.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sh/boards/shmin/setup.c
*
diff --git a/arch/sh/boards/mach-highlander/Kconfig b/arch/sh/boards/mach-highlander/Kconfig
index 42f5589b4bf3..b0abd03cac4e 100644
--- a/arch/sh/boards/mach-highlander/Kconfig
+++ b/arch/sh/boards/mach-highlander/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if SH_HIGHLANDER
choice
diff --git a/arch/sh/boards/mach-highlander/Makefile b/arch/sh/boards/mach-highlander/Makefile
index d93aaf880134..880ed68138b0 100644
--- a/arch/sh/boards/mach-highlander/Makefile
+++ b/arch/sh/boards/mach-highlander/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Highlander specific parts of the kernel
#
diff --git a/arch/sh/boards/mach-migor/Kconfig b/arch/sh/boards/mach-migor/Kconfig
index a7b3b728ec3c..fb64a10e2170 100644
--- a/arch/sh/boards/mach-migor/Kconfig
+++ b/arch/sh/boards/mach-migor/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if SH_MIGOR
choice
diff --git a/arch/sh/boards/mach-r2d/Kconfig b/arch/sh/boards/mach-r2d/Kconfig
index 8122a9667fc9..21770e668de2 100644
--- a/arch/sh/boards/mach-r2d/Kconfig
+++ b/arch/sh/boards/mach-r2d/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if SH_RTS7751R2D
menu "RTS7751R2D Board Revision"
diff --git a/arch/sh/boards/mach-r2d/irq.c b/arch/sh/boards/mach-r2d/irq.c
index 574f009c3c31..e34f81e9ae81 100644
--- a/arch/sh/boards/mach-r2d/irq.c
+++ b/arch/sh/boards/mach-r2d/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/boards/renesas/rts7751r2d/irq.c
*
diff --git a/arch/sh/boards/mach-rsk/Kconfig b/arch/sh/boards/mach-rsk/Kconfig
index 0b9b2c4952c1..f0299bc4416f 100644
--- a/arch/sh/boards/mach-rsk/Kconfig
+++ b/arch/sh/boards/mach-rsk/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if SH_RSK
choice
diff --git a/arch/sh/boards/mach-sdk7780/Kconfig b/arch/sh/boards/mach-sdk7780/Kconfig
index 065f1df09bf1..d4392efd2f74 100644
--- a/arch/sh/boards/mach-sdk7780/Kconfig
+++ b/arch/sh/boards/mach-sdk7780/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if SH_SDK7780
choice
diff --git a/arch/sh/boards/mach-se/7206/irq.c b/arch/sh/boards/mach-se/7206/irq.c
index 0db058e709e9..2b15370829ae 100644
--- a/arch/sh/boards/mach-se/7206/irq.c
+++ b/arch/sh/boards/mach-se/7206/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/boards/se/7206/irq.c
*
diff --git a/arch/sh/boards/mach-se/7206/setup.c b/arch/sh/boards/mach-se/7206/setup.c
index 68883ec95682..dc55d3a69665 100644
--- a/arch/sh/boards/mach-se/7206/setup.c
+++ b/arch/sh/boards/mach-se/7206/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
*
* linux/arch/sh/boards/se/7206/setup.c
diff --git a/arch/sh/boards/mach-se/7343/setup.c b/arch/sh/boards/mach-se/7343/setup.c
index 8ce4f2a202a8..fe0e550601a2 100644
--- a/arch/sh/boards/mach-se/7343/setup.c
+++ b/arch/sh/boards/mach-se/7343/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/mtd/physmap.h>
diff --git a/arch/sh/boards/mach-se/770x/irq.c b/arch/sh/boards/mach-se/770x/irq.c
index 1028c17b81bc..66e2c8aa0b69 100644
--- a/arch/sh/boards/mach-se/770x/irq.c
+++ b/arch/sh/boards/mach-se/770x/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/boards/se/770x/irq.c
*
diff --git a/arch/sh/boards/mach-se/770x/setup.c b/arch/sh/boards/mach-se/770x/setup.c
index 658326f44df8..77c35350ee77 100644
--- a/arch/sh/boards/mach-se/770x/setup.c
+++ b/arch/sh/boards/mach-se/770x/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/boards/se/770x/setup.c
*
diff --git a/arch/sh/boards/mach-se/7751/irq.c b/arch/sh/boards/mach-se/7751/irq.c
index 5c9847ea1e7c..dcefe58d8753 100644
--- a/arch/sh/boards/mach-se/7751/irq.c
+++ b/arch/sh/boards/mach-se/7751/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/boards/se/7751/irq.c
*
diff --git a/arch/sh/boards/mach-se/7751/setup.c b/arch/sh/boards/mach-se/7751/setup.c
index 820f4e7ba0d2..4c480605557f 100644
--- a/arch/sh/boards/mach-se/7751/setup.c
+++ b/arch/sh/boards/mach-se/7751/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/boards/se/7751/setup.c
*
diff --git a/arch/sh/boards/mach-se/Makefile b/arch/sh/boards/mach-se/Makefile
index b537e238c6bc..8f69fc147c73 100644
--- a/arch/sh/boards/mach-se/Makefile
+++ b/arch/sh/boards/mach-se/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_SH_7619_SOLUTION_ENGINE) += board-se7619.o
obj-$(CONFIG_SH_SOLUTION_ENGINE) += 770x/
diff --git a/arch/sh/boards/mach-se/board-se7619.c b/arch/sh/boards/mach-se/board-se7619.c
index 958bcd7aacc5..4431da64a56f 100644
--- a/arch/sh/boards/mach-se/board-se7619.c
+++ b/arch/sh/boards/mach-se/board-se7619.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sh/boards/se/7619/setup.c
*
diff --git a/arch/sh/boards/mach-sh03/rtc.c b/arch/sh/boards/mach-sh03/rtc.c
index f83ac7995d0f..dc3d50e3b7a2 100644
--- a/arch/sh/boards/mach-sh03/rtc.c
+++ b/arch/sh/boards/mach-sh03/rtc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/boards/sh03/rtc.c -- CTP/PCI-SH03 on-chip RTC support
*
diff --git a/arch/sh/boards/mach-sh03/setup.c b/arch/sh/boards/mach-sh03/setup.c
index f582dab59343..85e7059a77e9 100644
--- a/arch/sh/boards/mach-sh03/setup.c
+++ b/arch/sh/boards/mach-sh03/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/boards/sh03/setup.c
*
diff --git a/arch/sh/boot/compressed/Makefile b/arch/sh/boot/compressed/Makefile
index c4c47ea9fa94..f5e1bd779789 100644
--- a/arch/sh/boot/compressed/Makefile
+++ b/arch/sh/boot/compressed/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/sh/boot/compressed/Makefile
#
diff --git a/arch/sh/boot/compressed/cache.c b/arch/sh/boot/compressed/cache.c
index d0b77b68a4d0..31e04ff4841e 100644
--- a/arch/sh/boot/compressed/cache.c
+++ b/arch/sh/boot/compressed/cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
int cache_control(unsigned int command)
{
volatile unsigned int *p = (volatile unsigned int *) 0x80000000;
diff --git a/arch/sh/boot/compressed/head_32.S b/arch/sh/boot/compressed/head_32.S
index 3e150326f1fd..7bb168133dbb 100644
--- a/arch/sh/boot/compressed/head_32.S
+++ b/arch/sh/boot/compressed/head_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/sh/boot/compressed/head.S
*
diff --git a/arch/sh/boot/compressed/misc.c b/arch/sh/boot/compressed/misc.c
index ae1dfdb0013b..f2d9d3079d4e 100644
--- a/arch/sh/boot/compressed/misc.c
+++ b/arch/sh/boot/compressed/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sh/boot/compressed/misc.c
*
diff --git a/arch/sh/boot/dts/j2_mimas_v2.dts b/arch/sh/boot/dts/j2_mimas_v2.dts
index 880de75360b3..9f4742fab329 100644
--- a/arch/sh/boot/dts/j2_mimas_v2.dts
+++ b/arch/sh/boot/dts/j2_mimas_v2.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/ {
diff --git a/arch/sh/boot/romimage/Makefile b/arch/sh/boot/romimage/Makefile
index 43c41191de5d..c7c8be58400c 100644
--- a/arch/sh/boot/romimage/Makefile
+++ b/arch/sh/boot/romimage/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/sh/boot/romimage/Makefile
#
diff --git a/arch/sh/boot/romimage/head.S b/arch/sh/boot/romimage/head.S
index 4671d1b82150..81a0652a3dff 100644
--- a/arch/sh/boot/romimage/head.S
+++ b/arch/sh/boot/romimage/head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/sh/boot/romimage/head.S
*
diff --git a/arch/sh/cchips/Kconfig b/arch/sh/cchips/Kconfig
index a5ab2eccdaa6..6be5ddec14d3 100644
--- a/arch/sh/cchips/Kconfig
+++ b/arch/sh/cchips/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Companion Chips"
config HD6446X_SERIES
diff --git a/arch/sh/cchips/hd6446x/hd64461.c b/arch/sh/cchips/hd6446x/hd64461.c
index 8180092502f7..f3fba967445a 100644
--- a/arch/sh/cchips/hd6446x/hd64461.c
+++ b/arch/sh/cchips/hd6446x/hd64461.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2000 YAEGASHI Takeshi
* Hitachi HD64461 companion chip support
diff --git a/arch/sh/drivers/Kconfig b/arch/sh/drivers/Kconfig
index 420c6b2f33a5..80a45ad2852f 100644
--- a/arch/sh/drivers/Kconfig
+++ b/arch/sh/drivers/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
source "arch/sh/drivers/dma/Kconfig"
source "arch/sh/cchips/Kconfig"
diff --git a/arch/sh/drivers/Makefile b/arch/sh/drivers/Makefile
index e13f06bebd92..3e93b434e604 100644
--- a/arch/sh/drivers/Makefile
+++ b/arch/sh/drivers/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux SuperH-specific device drivers.
#
diff --git a/arch/sh/drivers/dma/Kconfig b/arch/sh/drivers/dma/Kconfig
index 78bc97b1d027..d0de378beefe 100644
--- a/arch/sh/drivers/dma/Kconfig
+++ b/arch/sh/drivers/dma/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "DMA support"
diff --git a/arch/sh/drivers/pci/Makefile b/arch/sh/drivers/pci/Makefile
index 82f0a335fd19..947bfe8bb0a7 100644
--- a/arch/sh/drivers/pci/Makefile
+++ b/arch/sh/drivers/pci/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the PCI specific kernel interface routines under Linux.
#
diff --git a/arch/sh/drivers/pci/common.c b/arch/sh/drivers/pci/common.c
index dbf138199871..cae707f3472d 100644
--- a/arch/sh/drivers/pci/common.c
+++ b/arch/sh/drivers/pci/common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/pci.h>
#include <linux/interrupt.h>
#include <linux/timer.h>
diff --git a/arch/sh/drivers/pci/fixups-cayman.c b/arch/sh/drivers/pci/fixups-cayman.c
index 32467884d6f7..c797bfbe2e98 100644
--- a/arch/sh/drivers/pci/fixups-cayman.c
+++ b/arch/sh/drivers/pci/fixups-cayman.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/pci.h>
diff --git a/arch/sh/drivers/pci/fixups-se7751.c b/arch/sh/drivers/pci/fixups-se7751.c
index 1cb8d0ac4fdb..608f6521ceff 100644
--- a/arch/sh/drivers/pci/fixups-se7751.c
+++ b/arch/sh/drivers/pci/fixups-se7751.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/init.h>
diff --git a/arch/sh/drivers/pci/fixups-sh03.c b/arch/sh/drivers/pci/fixups-sh03.c
index 55ac1ba2c74f..7ec4a74ab12c 100644
--- a/arch/sh/drivers/pci/fixups-sh03.c
+++ b/arch/sh/drivers/pci/fixups-sh03.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/types.h>
diff --git a/arch/sh/drivers/pci/pci-sh4.h b/arch/sh/drivers/pci/pci-sh4.h
index 0288efc17ff3..1543c50b6503 100644
--- a/arch/sh/drivers/pci/pci-sh4.h
+++ b/arch/sh/drivers/pci/pci-sh4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PCI_SH4_H
#define __PCI_SH4_H
diff --git a/arch/sh/include/asm/adc.h b/arch/sh/include/asm/adc.h
index 48824c1fab80..99ec66849559 100644
--- a/arch/sh/include/asm/adc.h
+++ b/arch/sh/include/asm/adc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ADC_H
#define __ASM_ADC_H
#ifdef __KERNEL__
diff --git a/arch/sh/include/asm/alignment.h b/arch/sh/include/asm/alignment.h
index b12efecf5294..4f3e715b8c26 100644
--- a/arch/sh/include/asm/alignment.h
+++ b/arch/sh/include/asm/alignment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_ALIGNMENT_H
#define __ASM_SH_ALIGNMENT_H
diff --git a/arch/sh/include/asm/atomic-grb.h b/arch/sh/include/asm/atomic-grb.h
index d755e96c3064..aace62d42288 100644
--- a/arch/sh/include/asm/atomic-grb.h
+++ b/arch/sh/include/asm/atomic-grb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_ATOMIC_GRB_H
#define __ASM_SH_ATOMIC_GRB_H
diff --git a/arch/sh/include/asm/atomic-irq.h b/arch/sh/include/asm/atomic-irq.h
index 8e2da5fa0178..ee523bd2120f 100644
--- a/arch/sh/include/asm/atomic-irq.h
+++ b/arch/sh/include/asm/atomic-irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_ATOMIC_IRQ_H
#define __ASM_SH_ATOMIC_IRQ_H
diff --git a/arch/sh/include/asm/atomic-llsc.h b/arch/sh/include/asm/atomic-llsc.h
index 1d159ce50f5a..1d06e4d288dc 100644
--- a/arch/sh/include/asm/atomic-llsc.h
+++ b/arch/sh/include/asm/atomic-llsc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_ATOMIC_LLSC_H
#define __ASM_SH_ATOMIC_LLSC_H
diff --git a/arch/sh/include/asm/atomic.h b/arch/sh/include/asm/atomic.h
index 8a7bd80c8b33..0fd0099f43cc 100644
--- a/arch/sh/include/asm/atomic.h
+++ b/arch/sh/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_ATOMIC_H
#define __ASM_SH_ATOMIC_H
diff --git a/arch/sh/include/asm/barrier.h b/arch/sh/include/asm/barrier.h
index 3c30b6e166b6..66faae19d254 100644
--- a/arch/sh/include/asm/barrier.h
+++ b/arch/sh/include/asm/barrier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima
* Copyright (C) 2002 Paul Mundt
diff --git a/arch/sh/include/asm/bitops-cas.h b/arch/sh/include/asm/bitops-cas.h
index 88f793c04d3c..ba517b3f24da 100644
--- a/arch/sh/include/asm/bitops-cas.h
+++ b/arch/sh/include/asm/bitops-cas.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_BITOPS_CAS_H
#define __ASM_SH_BITOPS_CAS_H
diff --git a/arch/sh/include/asm/bitops-grb.h b/arch/sh/include/asm/bitops-grb.h
index e73af33acbf4..75b5980399d4 100644
--- a/arch/sh/include/asm/bitops-grb.h
+++ b/arch/sh/include/asm/bitops-grb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_BITOPS_GRB_H
#define __ASM_SH_BITOPS_GRB_H
diff --git a/arch/sh/include/asm/bitops-llsc.h b/arch/sh/include/asm/bitops-llsc.h
index d8328be06191..47036845fc68 100644
--- a/arch/sh/include/asm/bitops-llsc.h
+++ b/arch/sh/include/asm/bitops-llsc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_BITOPS_LLSC_H
#define __ASM_SH_BITOPS_LLSC_H
diff --git a/arch/sh/include/asm/bitops-op32.h b/arch/sh/include/asm/bitops-op32.h
index f0ae7e9218e0..466880362ad1 100644
--- a/arch/sh/include/asm/bitops-op32.h
+++ b/arch/sh/include/asm/bitops-op32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_BITOPS_OP32_H
#define __ASM_SH_BITOPS_OP32_H
diff --git a/arch/sh/include/asm/bitops.h b/arch/sh/include/asm/bitops.h
index a8699d60a8c4..8c3578288db5 100644
--- a/arch/sh/include/asm/bitops.h
+++ b/arch/sh/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_BITOPS_H
#define __ASM_SH_BITOPS_H
diff --git a/arch/sh/include/asm/bl_bit.h b/arch/sh/include/asm/bl_bit.h
index 06e4163c6746..7e3d81691ad5 100644
--- a/arch/sh/include/asm/bl_bit.h
+++ b/arch/sh/include/asm/bl_bit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_BL_BIT_H
#define __ASM_SH_BL_BIT_H
diff --git a/arch/sh/include/asm/bl_bit_32.h b/arch/sh/include/asm/bl_bit_32.h
index fd21eee62149..1f7d225fc604 100644
--- a/arch/sh/include/asm/bl_bit_32.h
+++ b/arch/sh/include/asm/bl_bit_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_BL_BIT_32_H
#define __ASM_SH_BL_BIT_32_H
diff --git a/arch/sh/include/asm/bug.h b/arch/sh/include/asm/bug.h
index 5b5086367639..05a485c4fabc 100644
--- a/arch/sh/include/asm/bug.h
+++ b/arch/sh/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_BUG_H
#define __ASM_SH_BUG_H
diff --git a/arch/sh/include/asm/bugs.h b/arch/sh/include/asm/bugs.h
index 02a19a1c033a..030df56bfdb2 100644
--- a/arch/sh/include/asm/bugs.h
+++ b/arch/sh/include/asm/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_BUGS_H
#define __ASM_SH_BUGS_H
diff --git a/arch/sh/include/asm/cache.h b/arch/sh/include/asm/cache.h
index ef9e555aafba..2408ac4873aa 100644
--- a/arch/sh/include/asm/cache.h
+++ b/arch/sh/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: cache.h,v 1.6 2004/03/11 18:08:05 lethal Exp $
*
* include/asm-sh/cache.h
diff --git a/arch/sh/include/asm/cache_insns.h b/arch/sh/include/asm/cache_insns.h
index 355cb06b7a30..c5a4acdc53f9 100644
--- a/arch/sh/include/asm/cache_insns.h
+++ b/arch/sh/include/asm/cache_insns.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CACHE_INSNS_H
#define __ASM_SH_CACHE_INSNS_H
diff --git a/arch/sh/include/asm/cache_insns_32.h b/arch/sh/include/asm/cache_insns_32.h
index b92fe5416092..470880b972cb 100644
--- a/arch/sh/include/asm/cache_insns_32.h
+++ b/arch/sh/include/asm/cache_insns_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CACHE_INSNS_32_H
#define __ASM_SH_CACHE_INSNS_32_H
diff --git a/arch/sh/include/asm/cacheflush.h b/arch/sh/include/asm/cacheflush.h
index 82e1eabeac98..d103ab5a4e4b 100644
--- a/arch/sh/include/asm/cacheflush.h
+++ b/arch/sh/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CACHEFLUSH_H
#define __ASM_SH_CACHEFLUSH_H
diff --git a/arch/sh/include/asm/checksum.h b/arch/sh/include/asm/checksum.h
index 34ae26204524..a460a108969d 100644
--- a/arch/sh/include/asm/checksum.h
+++ b/arch/sh/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_SUPERH32
# include <asm/checksum_32.h>
#else
diff --git a/arch/sh/include/asm/clock.h b/arch/sh/include/asm/clock.h
index 0390a07e7e3b..b65bc2908e8a 100644
--- a/arch/sh/include/asm/clock.h
+++ b/arch/sh/include/asm/clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CLOCK_H
#define __ASM_SH_CLOCK_H
diff --git a/arch/sh/include/asm/cmpxchg-cas.h b/arch/sh/include/asm/cmpxchg-cas.h
index d0d86649e8c1..f508db6eaf31 100644
--- a/arch/sh/include/asm/cmpxchg-cas.h
+++ b/arch/sh/include/asm/cmpxchg-cas.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CMPXCHG_CAS_H
#define __ASM_SH_CMPXCHG_CAS_H
diff --git a/arch/sh/include/asm/cmpxchg-grb.h b/arch/sh/include/asm/cmpxchg-grb.h
index 2ed557b31bd9..e12279ea35cf 100644
--- a/arch/sh/include/asm/cmpxchg-grb.h
+++ b/arch/sh/include/asm/cmpxchg-grb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CMPXCHG_GRB_H
#define __ASM_SH_CMPXCHG_GRB_H
diff --git a/arch/sh/include/asm/cmpxchg-irq.h b/arch/sh/include/asm/cmpxchg-irq.h
index f88877257171..07d3e7f08389 100644
--- a/arch/sh/include/asm/cmpxchg-irq.h
+++ b/arch/sh/include/asm/cmpxchg-irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CMPXCHG_IRQ_H
#define __ASM_SH_CMPXCHG_IRQ_H
diff --git a/arch/sh/include/asm/cmpxchg-llsc.h b/arch/sh/include/asm/cmpxchg-llsc.h
index fcfd32271bff..d5270cd297c1 100644
--- a/arch/sh/include/asm/cmpxchg-llsc.h
+++ b/arch/sh/include/asm/cmpxchg-llsc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CMPXCHG_LLSC_H
#define __ASM_SH_CMPXCHG_LLSC_H
diff --git a/arch/sh/include/asm/cmpxchg.h b/arch/sh/include/asm/cmpxchg.h
index 3dfe0467a773..e9501d85c278 100644
--- a/arch/sh/include/asm/cmpxchg.h
+++ b/arch/sh/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CMPXCHG_H
#define __ASM_SH_CMPXCHG_H
diff --git a/arch/sh/include/asm/dma-mapping.h b/arch/sh/include/asm/dma-mapping.h
index 9b06be07db4d..68c1536b3aab 100644
--- a/arch/sh/include/asm/dma-mapping.h
+++ b/arch/sh/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_DMA_MAPPING_H
#define __ASM_SH_DMA_MAPPING_H
diff --git a/arch/sh/include/asm/dmabrg.h b/arch/sh/include/asm/dmabrg.h
index c5edba216cf1..69e119cfd711 100644
--- a/arch/sh/include/asm/dmabrg.h
+++ b/arch/sh/include/asm/dmabrg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SH7760 DMABRG (USB/Audio) support
*/
diff --git a/arch/sh/include/asm/elf.h b/arch/sh/include/asm/elf.h
index bf9f44f17c29..5ec8db1ddc20 100644
--- a/arch/sh/include/asm/elf.h
+++ b/arch/sh/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_ELF_H
#define __ASM_SH_ELF_H
diff --git a/arch/sh/include/asm/entry-macros.S b/arch/sh/include/asm/entry-macros.S
index cc43a55e1fcf..5ce142d8c5a8 100644
--- a/arch/sh/include/asm/entry-macros.S
+++ b/arch/sh/include/asm/entry-macros.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
! entry.S macro define
.macro cli
diff --git a/arch/sh/include/asm/extable.h b/arch/sh/include/asm/extable.h
index df2ee2fcb8d3..ed46f8bebb9f 100644
--- a/arch/sh/include/asm/extable.h
+++ b/arch/sh/include/asm/extable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_EXTABLE_H
#define __ASM_SH_EXTABLE_H
diff --git a/arch/sh/include/asm/fpu.h b/arch/sh/include/asm/fpu.h
index 50921c7cc3f0..43cfaf929aa7 100644
--- a/arch/sh/include/asm/fpu.h
+++ b/arch/sh/include/asm/fpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_FPU_H
#define __ASM_SH_FPU_H
diff --git a/arch/sh/include/asm/ftrace.h b/arch/sh/include/asm/ftrace.h
index 1f157b86eaa7..b1c1dc0cc261 100644
--- a/arch/sh/include/asm/ftrace.h
+++ b/arch/sh/include/asm/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_FTRACE_H
#define __ASM_SH_FTRACE_H
diff --git a/arch/sh/include/asm/futex-cas.h b/arch/sh/include/asm/futex-cas.h
index 267cb7a5f101..ed738e32b5ec 100644
--- a/arch/sh/include/asm/futex-cas.h
+++ b/arch/sh/include/asm/futex-cas.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_FUTEX_CAS_H
#define __ASM_SH_FUTEX_CAS_H
diff --git a/arch/sh/include/asm/futex-irq.h b/arch/sh/include/asm/futex-irq.h
index ab01dbee0a82..9bc053242ea0 100644
--- a/arch/sh/include/asm/futex-irq.h
+++ b/arch/sh/include/asm/futex-irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_FUTEX_IRQ_H
#define __ASM_SH_FUTEX_IRQ_H
diff --git a/arch/sh/include/asm/futex-llsc.h b/arch/sh/include/asm/futex-llsc.h
index 23591703bec0..6e1570752bc1 100644
--- a/arch/sh/include/asm/futex-llsc.h
+++ b/arch/sh/include/asm/futex-llsc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_FUTEX_LLSC_H
#define __ASM_SH_FUTEX_LLSC_H
diff --git a/arch/sh/include/asm/futex.h b/arch/sh/include/asm/futex.h
index 8f8cf941a8cd..15bf07bfa96b 100644
--- a/arch/sh/include/asm/futex.h
+++ b/arch/sh/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_FUTEX_H
#define __ASM_SH_FUTEX_H
diff --git a/arch/sh/include/asm/hardirq.h b/arch/sh/include/asm/hardirq.h
index 48b191313a99..edaea3559a23 100644
--- a/arch/sh/include/asm/hardirq.h
+++ b/arch/sh/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_HARDIRQ_H
#define __ASM_SH_HARDIRQ_H
diff --git a/arch/sh/include/asm/hd64461.h b/arch/sh/include/asm/hd64461.h
index 977355f0a483..afb24cb034b1 100644
--- a/arch/sh/include/asm/hd64461.h
+++ b/arch/sh/include/asm/hd64461.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_HD64461
#define __ASM_SH_HD64461
/*
diff --git a/arch/sh/include/asm/heartbeat.h b/arch/sh/include/asm/heartbeat.h
index caaafe5a3ef1..4028ca4058d1 100644
--- a/arch/sh/include/asm/heartbeat.h
+++ b/arch/sh/include/asm/heartbeat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_HEARTBEAT_H
#define __ASM_SH_HEARTBEAT_H
diff --git a/arch/sh/include/asm/hugetlb.h b/arch/sh/include/asm/hugetlb.h
index ef489a56fcce..735939c0f513 100644
--- a/arch/sh/include/asm/hugetlb.h
+++ b/arch/sh/include/asm/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SH_HUGETLB_H
#define _ASM_SH_HUGETLB_H
diff --git a/arch/sh/include/asm/hw_breakpoint.h b/arch/sh/include/asm/hw_breakpoint.h
index ec9ad593c3da..7431c172c0cb 100644
--- a/arch/sh/include/asm/hw_breakpoint.h
+++ b/arch/sh/include/asm/hw_breakpoint.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_HW_BREAKPOINT_H
#define __ASM_SH_HW_BREAKPOINT_H
diff --git a/arch/sh/include/asm/hw_irq.h b/arch/sh/include/asm/hw_irq.h
index 693d44184058..ce23e3332f9c 100644
--- a/arch/sh/include/asm/hw_irq.h
+++ b/arch/sh/include/asm/hw_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_HW_IRQ_H
#define __ASM_SH_HW_IRQ_H
diff --git a/arch/sh/include/asm/i2c-sh7760.h b/arch/sh/include/asm/i2c-sh7760.h
index 69fee1239b03..a777f1410a6e 100644
--- a/arch/sh/include/asm/i2c-sh7760.h
+++ b/arch/sh/include/asm/i2c-sh7760.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* MMIO/IRQ and platform data for SH7760 I2C channels
*/
diff --git a/arch/sh/include/asm/io.h b/arch/sh/include/asm/io.h
index 3280a6bfa503..98cb8c802b1a 100644
--- a/arch/sh/include/asm/io.h
+++ b/arch/sh/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_IO_H
#define __ASM_SH_IO_H
diff --git a/arch/sh/include/asm/io_generic.h b/arch/sh/include/asm/io_generic.h
index b5f6956f19c8..87ec38f4e532 100644
--- a/arch/sh/include/asm/io_generic.h
+++ b/arch/sh/include/asm/io_generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Trivial I/O routine definitions, intentionally meant to be included
* multiple times. Ugly I/O routine concatenation helpers taken from
diff --git a/arch/sh/include/asm/io_noioport.h b/arch/sh/include/asm/io_noioport.h
index c727e6ddf69e..90d6109f1622 100644
--- a/arch/sh/include/asm/io_noioport.h
+++ b/arch/sh/include/asm/io_noioport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_IO_NOIOPORT_H
#define __ASM_SH_IO_NOIOPORT_H
diff --git a/arch/sh/include/asm/io_trapped.h b/arch/sh/include/asm/io_trapped.h
index 4ab94ef51071..ac01b201d9aa 100644
--- a/arch/sh/include/asm/io_trapped.h
+++ b/arch/sh/include/asm/io_trapped.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_IO_TRAPPED_H
#define __ASM_SH_IO_TRAPPED_H
diff --git a/arch/sh/include/asm/irq.h b/arch/sh/include/asm/irq.h
index 0e4f532e4737..8065a3222e19 100644
--- a/arch/sh/include/asm/irq.h
+++ b/arch/sh/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_IRQ_H
#define __ASM_SH_IRQ_H
diff --git a/arch/sh/include/asm/irqflags.h b/arch/sh/include/asm/irqflags.h
index 43b7608606c3..25f6cfef3f04 100644
--- a/arch/sh/include/asm/irqflags.h
+++ b/arch/sh/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_IRQFLAGS_H
#define __ASM_SH_IRQFLAGS_H
diff --git a/arch/sh/include/asm/kdebug.h b/arch/sh/include/asm/kdebug.h
index 8d6a831e7ba1..5212f5fcd752 100644
--- a/arch/sh/include/asm/kdebug.h
+++ b/arch/sh/include/asm/kdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_KDEBUG_H
#define __ASM_SH_KDEBUG_H
diff --git a/arch/sh/include/asm/kexec.h b/arch/sh/include/asm/kexec.h
index ad6ef8a275ee..fd5f331a3912 100644
--- a/arch/sh/include/asm/kexec.h
+++ b/arch/sh/include/asm/kexec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_KEXEC_H
#define __ASM_SH_KEXEC_H
diff --git a/arch/sh/include/asm/kgdb.h b/arch/sh/include/asm/kgdb.h
index 9e7d2d1b03e0..0d5b840cb289 100644
--- a/arch/sh/include/asm/kgdb.h
+++ b/arch/sh/include/asm/kgdb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_KGDB_H
#define __ASM_SH_KGDB_H
diff --git a/arch/sh/include/asm/kmap_types.h b/arch/sh/include/asm/kmap_types.h
index 5962b08b6dd8..b78107f923dd 100644
--- a/arch/sh/include/asm/kmap_types.h
+++ b/arch/sh/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SH_KMAP_TYPES_H
#define __SH_KMAP_TYPES_H
diff --git a/arch/sh/include/asm/kprobes.h b/arch/sh/include/asm/kprobes.h
index f0986f9b3844..85d8bcaa8493 100644
--- a/arch/sh/include/asm/kprobes.h
+++ b/arch/sh/include/asm/kprobes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_KPROBES_H
#define __ASM_SH_KPROBES_H
diff --git a/arch/sh/include/asm/linkage.h b/arch/sh/include/asm/linkage.h
index 3565a4f4009f..7c2fa27a43f8 100644
--- a/arch/sh/include/asm/linkage.h
+++ b/arch/sh/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
diff --git a/arch/sh/include/asm/mmu.h b/arch/sh/include/asm/mmu.h
index 56e4418c19b9..172e329fd92d 100644
--- a/arch/sh/include/asm/mmu.h
+++ b/arch/sh/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MMU_H
#define __MMU_H
diff --git a/arch/sh/include/asm/mmu_context.h b/arch/sh/include/asm/mmu_context.h
index eb6ac3c10c44..2d09650093c7 100644
--- a/arch/sh/include/asm/mmu_context.h
+++ b/arch/sh/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999 Niibe Yutaka
* Copyright (C) 2003 - 2007 Paul Mundt
diff --git a/arch/sh/include/asm/mmu_context_32.h b/arch/sh/include/asm/mmu_context_32.h
index 10e2e17210d2..71bf12ef1f65 100644
--- a/arch/sh/include/asm/mmu_context_32.h
+++ b/arch/sh/include/asm/mmu_context_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_MMU_CONTEXT_32_H
#define __ASM_SH_MMU_CONTEXT_32_H
diff --git a/arch/sh/include/asm/mmzone.h b/arch/sh/include/asm/mmzone.h
index 15a8496960e6..cbaee1d1b673 100644
--- a/arch/sh/include/asm/mmzone.h
+++ b/arch/sh/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_MMZONE_H
#define __ASM_SH_MMZONE_H
diff --git a/arch/sh/include/asm/module.h b/arch/sh/include/asm/module.h
index 81300d8b5448..9f38fb35fe96 100644
--- a/arch/sh/include/asm/module.h
+++ b/arch/sh/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SH_MODULE_H
#define _ASM_SH_MODULE_H
diff --git a/arch/sh/include/asm/page.h b/arch/sh/include/asm/page.h
index ceb5201a30ed..5eef8be3e59f 100644
--- a/arch/sh/include/asm/page.h
+++ b/arch/sh/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PAGE_H
#define __ASM_SH_PAGE_H
diff --git a/arch/sh/include/asm/pci.h b/arch/sh/include/asm/pci.h
index 17fa69bc814d..53f7ae6abaa7 100644
--- a/arch/sh/include/asm/pci.h
+++ b/arch/sh/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PCI_H
#define __ASM_SH_PCI_H
diff --git a/arch/sh/include/asm/perf_event.h b/arch/sh/include/asm/perf_event.h
index 14308bed7ea5..468c7ca8bd2e 100644
--- a/arch/sh/include/asm/perf_event.h
+++ b/arch/sh/include/asm/perf_event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PERF_EVENT_H
#define __ASM_SH_PERF_EVENT_H
diff --git a/arch/sh/include/asm/pgalloc.h b/arch/sh/include/asm/pgalloc.h
index f3f42c84c40f..ed053a359ab7 100644
--- a/arch/sh/include/asm/pgalloc.h
+++ b/arch/sh/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PGALLOC_H
#define __ASM_SH_PGALLOC_H
diff --git a/arch/sh/include/asm/pgtable-2level.h b/arch/sh/include/asm/pgtable-2level.h
index f75cf4387257..bf1eb51c3ee5 100644
--- a/arch/sh/include/asm/pgtable-2level.h
+++ b/arch/sh/include/asm/pgtable-2level.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PGTABLE_2LEVEL_H
#define __ASM_SH_PGTABLE_2LEVEL_H
diff --git a/arch/sh/include/asm/pgtable-3level.h b/arch/sh/include/asm/pgtable-3level.h
index 9b1e776eca31..7d8587eb65ff 100644
--- a/arch/sh/include/asm/pgtable-3level.h
+++ b/arch/sh/include/asm/pgtable-3level.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PGTABLE_3LEVEL_H
#define __ASM_SH_PGTABLE_3LEVEL_H
diff --git a/arch/sh/include/asm/pgtable_32.h b/arch/sh/include/asm/pgtable_32.h
index c646e563abce..29274f0e428e 100644
--- a/arch/sh/include/asm/pgtable_32.h
+++ b/arch/sh/include/asm/pgtable_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PGTABLE_32_H
#define __ASM_SH_PGTABLE_32_H
diff --git a/arch/sh/include/asm/posix_types.h b/arch/sh/include/asm/posix_types.h
index 1aa781079b1e..0d670fd94fe7 100644
--- a/arch/sh/include/asm/posix_types.h
+++ b/arch/sh/include/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
# ifdef CONFIG_SUPERH32
# include <asm/posix_types_32.h>
# else
diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h
index 5addd69f70ef..6fbf8c80e498 100644
--- a/arch/sh/include/asm/processor.h
+++ b/arch/sh/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PROCESSOR_H
#define __ASM_SH_PROCESSOR_H
diff --git a/arch/sh/include/asm/processor_32.h b/arch/sh/include/asm/processor_32.h
index 18e0377f72bb..95100d8a0b7b 100644
--- a/arch/sh/include/asm/processor_32.h
+++ b/arch/sh/include/asm/processor_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-sh/processor.h
*
@@ -136,10 +137,6 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_pc, unsigned lo
/* Free all resources held by a thread. */
extern void release_thread(struct task_struct *);
-/* Copy and release all segment info associated with a VM */
-#define copy_segments(p, mm) do { } while(0)
-#define release_segments(mm) do { } while(0)
-
/*
* FPU lazy state save handling.
*/
diff --git a/arch/sh/include/asm/processor_64.h b/arch/sh/include/asm/processor_64.h
index eedd4f625d07..777a16318aff 100644
--- a/arch/sh/include/asm/processor_64.h
+++ b/arch/sh/include/asm/processor_64.h
@@ -170,10 +170,6 @@ struct mm_struct;
/* Free all resources held by a thread. */
extern void release_thread(struct task_struct *);
-/* Copy and release all segment info associated with a VM */
-#define copy_segments(p, mm) do { } while (0)
-#define release_segments(mm) do { } while (0)
-#define forget_segments() do { } while (0)
/*
* FPU lazy state save handling.
*/
diff --git a/arch/sh/include/asm/ptrace.h b/arch/sh/include/asm/ptrace.h
index 2506c7db76b7..9143c7babcbe 100644
--- a/arch/sh/include/asm/ptrace.h
+++ b/arch/sh/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1999, 2000 Niibe Yutaka
*/
diff --git a/arch/sh/include/asm/ptrace_32.h b/arch/sh/include/asm/ptrace_32.h
index 1dd4480c5363..5f37ad7c6065 100644
--- a/arch/sh/include/asm/ptrace_32.h
+++ b/arch/sh/include/asm/ptrace_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PTRACE_32_H
#define __ASM_SH_PTRACE_32_H
diff --git a/arch/sh/include/asm/ptrace_64.h b/arch/sh/include/asm/ptrace_64.h
index 97f4b5660f2c..6ee08229b433 100644
--- a/arch/sh/include/asm/ptrace_64.h
+++ b/arch/sh/include/asm/ptrace_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PTRACE_64_H
#define __ASM_SH_PTRACE_64_H
diff --git a/arch/sh/include/asm/push-switch.h b/arch/sh/include/asm/push-switch.h
index 4903f9e52dd8..c5f072572fd1 100644
--- a/arch/sh/include/asm/push-switch.h
+++ b/arch/sh/include/asm/push-switch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_PUSH_SWITCH_H
#define __ASM_SH_PUSH_SWITCH_H
diff --git a/arch/sh/include/asm/reboot.h b/arch/sh/include/asm/reboot.h
index b3da0c63fc3d..5c445c90df14 100644
--- a/arch/sh/include/asm/reboot.h
+++ b/arch/sh/include/asm/reboot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_REBOOT_H
#define __ASM_SH_REBOOT_H
diff --git a/arch/sh/include/asm/romimage-macros.h b/arch/sh/include/asm/romimage-macros.h
index ae17a150bb58..f9352ee7c21b 100644
--- a/arch/sh/include/asm/romimage-macros.h
+++ b/arch/sh/include/asm/romimage-macros.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ROMIMAGE_MACRO_H
#define __ROMIMAGE_MACRO_H
diff --git a/arch/sh/include/asm/rtc.h b/arch/sh/include/asm/rtc.h
index f7b010d48af7..c63555ee1255 100644
--- a/arch/sh/include/asm/rtc.h
+++ b/arch/sh/include/asm/rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_RTC_H
#define _ASM_RTC_H
diff --git a/arch/sh/include/asm/seccomp.h b/arch/sh/include/asm/seccomp.h
index 3280ed3802ef..54111e4d32b8 100644
--- a/arch/sh/include/asm/seccomp.h
+++ b/arch/sh/include/asm/seccomp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SECCOMP_H
#include <linux/unistd.h>
diff --git a/arch/sh/include/asm/sections.h b/arch/sh/include/asm/sections.h
index 7a99e6af6372..8edb824049b9 100644
--- a/arch/sh/include/asm/sections.h
+++ b/arch/sh/include/asm/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SECTIONS_H
#define __ASM_SH_SECTIONS_H
diff --git a/arch/sh/include/asm/segment.h b/arch/sh/include/asm/segment.h
index ff795d3a6909..101c13c0c6ad 100644
--- a/arch/sh/include/asm/segment.h
+++ b/arch/sh/include/asm/segment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SEGMENT_H
#define __ASM_SH_SEGMENT_H
diff --git a/arch/sh/include/asm/setup.h b/arch/sh/include/asm/setup.h
index 99238108e7a5..fc807011187f 100644
--- a/arch/sh/include/asm/setup.h
+++ b/arch/sh/include/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SH_SETUP_H
#define _SH_SETUP_H
diff --git a/arch/sh/include/asm/sh7760fb.h b/arch/sh/include/asm/sh7760fb.h
index 8767f61aceca..2d9433d75402 100644
--- a/arch/sh/include/asm/sh7760fb.h
+++ b/arch/sh/include/asm/sh7760fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* sh7760fb.h -- platform data for SH7760/SH7763 LCDC framebuffer driver.
*
diff --git a/arch/sh/include/asm/sh_bios.h b/arch/sh/include/asm/sh_bios.h
index 95714c28422b..ab693b982442 100644
--- a/arch/sh/include/asm/sh_bios.h
+++ b/arch/sh/include/asm/sh_bios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_BIOS_H
#define __ASM_SH_BIOS_H
diff --git a/arch/sh/include/asm/smc37c93x.h b/arch/sh/include/asm/smc37c93x.h
index 585da2a8fc45..f054c30a171a 100644
--- a/arch/sh/include/asm/smc37c93x.h
+++ b/arch/sh/include/asm/smc37c93x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SMC37C93X_H
#define __ASM_SH_SMC37C93X_H
diff --git a/arch/sh/include/asm/smp-ops.h b/arch/sh/include/asm/smp-ops.h
index c590f76856f1..e27702130eb6 100644
--- a/arch/sh/include/asm/smp-ops.h
+++ b/arch/sh/include/asm/smp-ops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SMP_OPS_H
#define __ASM_SH_SMP_OPS_H
diff --git a/arch/sh/include/asm/smp.h b/arch/sh/include/asm/smp.h
index c9f8bbdb1bf8..1a0d7cf71c10 100644
--- a/arch/sh/include/asm/smp.h
+++ b/arch/sh/include/asm/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SMP_H
#define __ASM_SH_SMP_H
diff --git a/arch/sh/include/asm/sparsemem.h b/arch/sh/include/asm/sparsemem.h
index 547a540b6667..4eb899751e45 100644
--- a/arch/sh/include/asm/sparsemem.h
+++ b/arch/sh/include/asm/sparsemem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SPARSEMEM_H
#define __ASM_SH_SPARSEMEM_H
diff --git a/arch/sh/include/asm/spi.h b/arch/sh/include/asm/spi.h
index e96f5b0953c8..6780753bd249 100644
--- a/arch/sh/include/asm/spi.h
+++ b/arch/sh/include/asm/spi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPI_H__
#define __ASM_SPI_H__
diff --git a/arch/sh/include/asm/spinlock_types.h b/arch/sh/include/asm/spinlock_types.h
index 9b7560db06ca..e82369f286a2 100644
--- a/arch/sh/include/asm/spinlock_types.h
+++ b/arch/sh/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SPINLOCK_TYPES_H
#define __ASM_SH_SPINLOCK_TYPES_H
diff --git a/arch/sh/include/asm/sram.h b/arch/sh/include/asm/sram.h
index a2808ce4c0aa..c125cf219868 100644
--- a/arch/sh/include/asm/sram.h
+++ b/arch/sh/include/asm/sram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SRAM_H
#define __ASM_SRAM_H
diff --git a/arch/sh/include/asm/stackprotector.h b/arch/sh/include/asm/stackprotector.h
index 141515a43b78..35616841d0a1 100644
--- a/arch/sh/include/asm/stackprotector.h
+++ b/arch/sh/include/asm/stackprotector.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_STACKPROTECTOR_H
#define __ASM_SH_STACKPROTECTOR_H
diff --git a/arch/sh/include/asm/stacktrace.h b/arch/sh/include/asm/stacktrace.h
index a7e2d4dfd087..50c173c0b9f5 100644
--- a/arch/sh/include/asm/stacktrace.h
+++ b/arch/sh/include/asm/stacktrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2009 Matt Fleming
*
diff --git a/arch/sh/include/asm/string.h b/arch/sh/include/asm/string.h
index 114011fa08af..84fc5ed9c5b3 100644
--- a/arch/sh/include/asm/string.h
+++ b/arch/sh/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_SUPERH32
# include <asm/string_32.h>
#else
diff --git a/arch/sh/include/asm/string_64.h b/arch/sh/include/asm/string_64.h
index 742007172624..d51d6150a4e2 100644
--- a/arch/sh/include/asm/string_64.h
+++ b/arch/sh/include/asm/string_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_STRING_64_H
#define __ASM_SH_STRING_64_H
diff --git a/arch/sh/include/asm/suspend.h b/arch/sh/include/asm/suspend.h
index 70ae0b2888ab..47db17520261 100644
--- a/arch/sh/include/asm/suspend.h
+++ b/arch/sh/include/asm/suspend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SH_SUSPEND_H
#define _ASM_SH_SUSPEND_H
diff --git a/arch/sh/include/asm/switch_to_32.h b/arch/sh/include/asm/switch_to_32.h
index 7661b4ba8259..9c93fb91adb4 100644
--- a/arch/sh/include/asm/switch_to_32.h
+++ b/arch/sh/include/asm/switch_to_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SWITCH_TO_32_H
#define __ASM_SH_SWITCH_TO_32_H
diff --git a/arch/sh/include/asm/syscall.h b/arch/sh/include/asm/syscall.h
index 847128da6eac..90ba00002626 100644
--- a/arch/sh/include/asm/syscall.h
+++ b/arch/sh/include/asm/syscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SYSCALL_H
#define __ASM_SH_SYSCALL_H
diff --git a/arch/sh/include/asm/syscall_32.h b/arch/sh/include/asm/syscall_32.h
index 95be3b0ce0ac..6e118799831c 100644
--- a/arch/sh/include/asm/syscall_32.h
+++ b/arch/sh/include/asm/syscall_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SYSCALL_32_H
#define __ASM_SH_SYSCALL_32_H
diff --git a/arch/sh/include/asm/syscall_64.h b/arch/sh/include/asm/syscall_64.h
index c6a797b90b80..43882580c7f9 100644
--- a/arch/sh/include/asm/syscall_64.h
+++ b/arch/sh/include/asm/syscall_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SYSCALL_64_H
#define __ASM_SH_SYSCALL_64_H
diff --git a/arch/sh/include/asm/syscalls.h b/arch/sh/include/asm/syscalls.h
index 3dbfef06f6b2..995ef046232c 100644
--- a/arch/sh/include/asm/syscalls.h
+++ b/arch/sh/include/asm/syscalls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SYSCALLS_H
#define __ASM_SH_SYSCALLS_H
diff --git a/arch/sh/include/asm/syscalls_32.h b/arch/sh/include/asm/syscalls_32.h
index 4f643aa718e3..9f9faf63b48c 100644
--- a/arch/sh/include/asm/syscalls_32.h
+++ b/arch/sh/include/asm/syscalls_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SYSCALLS_32_H
#define __ASM_SH_SYSCALLS_32_H
diff --git a/arch/sh/include/asm/syscalls_64.h b/arch/sh/include/asm/syscalls_64.h
index d62e8eb22f74..df42656cebea 100644
--- a/arch/sh/include/asm/syscalls_64.h
+++ b/arch/sh/include/asm/syscalls_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SYSCALLS_64_H
#define __ASM_SH_SYSCALLS_64_H
diff --git a/arch/sh/include/asm/thread_info.h b/arch/sh/include/asm/thread_info.h
index 6c65dcd470ab..becb798f1b04 100644
--- a/arch/sh/include/asm/thread_info.h
+++ b/arch/sh/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_THREAD_INFO_H
#define __ASM_SH_THREAD_INFO_H
diff --git a/arch/sh/include/asm/timex.h b/arch/sh/include/asm/timex.h
index 18bf06d9c764..f53f95bf4288 100644
--- a/arch/sh/include/asm/timex.h
+++ b/arch/sh/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-sh/timex.h
*
diff --git a/arch/sh/include/asm/tlb.h b/arch/sh/include/asm/tlb.h
index 51a8bc967e75..77abe192fb43 100644
--- a/arch/sh/include/asm/tlb.h
+++ b/arch/sh/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_TLB_H
#define __ASM_SH_TLB_H
diff --git a/arch/sh/include/asm/tlbflush.h b/arch/sh/include/asm/tlbflush.h
index 0df66f0c7284..8f180cd3bcd6 100644
--- a/arch/sh/include/asm/tlbflush.h
+++ b/arch/sh/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_TLBFLUSH_H
#define __ASM_SH_TLBFLUSH_H
diff --git a/arch/sh/include/asm/topology.h b/arch/sh/include/asm/topology.h
index 358e3f516ef6..9a32eb4098df 100644
--- a/arch/sh/include/asm/topology.h
+++ b/arch/sh/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SH_TOPOLOGY_H
#define _ASM_SH_TOPOLOGY_H
diff --git a/arch/sh/include/asm/traps.h b/arch/sh/include/asm/traps.h
index 9cc149a0dbd1..8844ed0c0fde 100644
--- a/arch/sh/include/asm/traps.h
+++ b/arch/sh/include/asm/traps.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_TRAPS_H
#define __ASM_SH_TRAPS_H
diff --git a/arch/sh/include/asm/traps_32.h b/arch/sh/include/asm/traps_32.h
index 17e129fe459c..8c5bbb7b6053 100644
--- a/arch/sh/include/asm/traps_32.h
+++ b/arch/sh/include/asm/traps_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_TRAPS_32_H
#define __ASM_SH_TRAPS_32_H
diff --git a/arch/sh/include/asm/types.h b/arch/sh/include/asm/types.h
index 6a31053fa5e3..df96c511bb6e 100644
--- a/arch/sh/include/asm/types.h
+++ b/arch/sh/include/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_TYPES_H
#define __ASM_SH_TYPES_H
diff --git a/arch/sh/include/asm/uaccess.h b/arch/sh/include/asm/uaccess.h
index 211b44920dbe..32eb56e00c11 100644
--- a/arch/sh/include/asm/uaccess.h
+++ b/arch/sh/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_UACCESS_H
#define __ASM_SH_UACCESS_H
diff --git a/arch/sh/include/asm/uaccess_32.h b/arch/sh/include/asm/uaccess_32.h
index c0de7ee35ab7..624cf55acc27 100644
--- a/arch/sh/include/asm/uaccess_32.h
+++ b/arch/sh/include/asm/uaccess_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* User space memory access functions
*
diff --git a/arch/sh/include/asm/unaligned-sh4a.h b/arch/sh/include/asm/unaligned-sh4a.h
index 95adc500cabc..d311f00ed530 100644
--- a/arch/sh/include/asm/unaligned-sh4a.h
+++ b/arch/sh/include/asm/unaligned-sh4a.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_UNALIGNED_SH4A_H
#define __ASM_SH_UNALIGNED_SH4A_H
diff --git a/arch/sh/include/asm/unaligned.h b/arch/sh/include/asm/unaligned.h
index 7d14e0669961..0c92e2c73af4 100644
--- a/arch/sh/include/asm/unaligned.h
+++ b/arch/sh/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SH_UNALIGNED_H
#define _ASM_SH_UNALIGNED_H
diff --git a/arch/sh/include/asm/uncached.h b/arch/sh/include/asm/uncached.h
index 6f8816b79cf1..e7f68ec61014 100644
--- a/arch/sh/include/asm/uncached.h
+++ b/arch/sh/include/asm/uncached.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_UNCACHED_H
#define __ASM_SH_UNCACHED_H
diff --git a/arch/sh/include/asm/unistd.h b/arch/sh/include/asm/unistd.h
index 126fe8340b22..b36200af9ce7 100644
--- a/arch/sh/include/asm/unistd.h
+++ b/arch/sh/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
# ifdef CONFIG_SUPERH32
# include <asm/unistd_32.h>
# else
diff --git a/arch/sh/include/asm/unwinder.h b/arch/sh/include/asm/unwinder.h
index 1e65c07b3e18..ce82c96c7899 100644
--- a/arch/sh/include/asm/unwinder.h
+++ b/arch/sh/include/asm/unwinder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UNWINDER_H
#define _LINUX_UNWINDER_H
diff --git a/arch/sh/include/asm/user.h b/arch/sh/include/asm/user.h
index 8fd3cf6c58d4..e97f2efed527 100644
--- a/arch/sh/include/asm/user.h
+++ b/arch/sh/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_USER_H
#define __ASM_SH_USER_H
diff --git a/arch/sh/include/asm/vmlinux.lds.h b/arch/sh/include/asm/vmlinux.lds.h
index d58ad493b3a6..f312813f39d8 100644
--- a/arch/sh/include/asm/vmlinux.lds.h
+++ b/arch/sh/include/asm/vmlinux.lds.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_VMLINUX_LDS_H
#define __ASM_SH_VMLINUX_LDS_H
diff --git a/arch/sh/include/asm/word-at-a-time.h b/arch/sh/include/asm/word-at-a-time.h
index 6e38953ff7fd..4aa398455b94 100644
--- a/arch/sh/include/asm/word-at-a-time.h
+++ b/arch/sh/include/asm/word-at-a-time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_WORD_AT_A_TIME_H
#define __ASM_SH_WORD_AT_A_TIME_H
diff --git a/arch/sh/include/cpu-common/cpu/rtc.h b/arch/sh/include/cpu-common/cpu/rtc.h
index 39e2d6e94782..5fe726acd9f8 100644
--- a/arch/sh/include/cpu-common/cpu/rtc.h
+++ b/arch/sh/include/cpu-common/cpu/rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CPU_SH2_RTC_H
#define __ASM_SH_CPU_SH2_RTC_H
diff --git a/arch/sh/include/cpu-common/cpu/sigcontext.h b/arch/sh/include/cpu-common/cpu/sigcontext.h
index fe5c15dd6e87..e005dd176ff2 100644
--- a/arch/sh/include/cpu-common/cpu/sigcontext.h
+++ b/arch/sh/include/cpu-common/cpu/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CPU_SH2_SIGCONTEXT_H
#define __ASM_CPU_SH2_SIGCONTEXT_H
diff --git a/arch/sh/include/cpu-sh2a/cpu/addrspace.h b/arch/sh/include/cpu-sh2a/cpu/addrspace.h
index 31eb4b58aa6d..3afa46c09fb5 100644
--- a/arch/sh/include/cpu-sh2a/cpu/addrspace.h
+++ b/arch/sh/include/cpu-sh2a/cpu/addrspace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CPU_SH2A_ADDRSPACE_H
#define __ASM_SH_CPU_SH2A_ADDRSPACE_H
diff --git a/arch/sh/include/cpu-sh2a/cpu/rtc.h b/arch/sh/include/cpu-sh2a/cpu/rtc.h
index afb511e2bed7..6b6c7ee752de 100644
--- a/arch/sh/include/cpu-sh2a/cpu/rtc.h
+++ b/arch/sh/include/cpu-sh2a/cpu/rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CPU_SH2A_RTC_H
#define __ASM_SH_CPU_SH2A_RTC_H
diff --git a/arch/sh/include/cpu-sh2a/cpu/sh7203.h b/arch/sh/include/cpu-sh2a/cpu/sh7203.h
index 79f93159018d..f250adfa46c6 100644
--- a/arch/sh/include/cpu-sh2a/cpu/sh7203.h
+++ b/arch/sh/include/cpu-sh2a/cpu/sh7203.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7203_H__
#define __ASM_SH7203_H__
diff --git a/arch/sh/include/cpu-sh2a/cpu/sh7264.h b/arch/sh/include/cpu-sh2a/cpu/sh7264.h
index 4d1ef6d74bd6..d12c19186845 100644
--- a/arch/sh/include/cpu-sh2a/cpu/sh7264.h
+++ b/arch/sh/include/cpu-sh2a/cpu/sh7264.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7264_H__
#define __ASM_SH7264_H__
@@ -43,9 +44,7 @@ enum {
GPIO_PG7, GPIO_PG6, GPIO_PG5, GPIO_PG4,
GPIO_PG3, GPIO_PG2, GPIO_PG1, GPIO_PG0,
- /* Port H */
- GPIO_PH7, GPIO_PH6, GPIO_PH5, GPIO_PH4,
- GPIO_PH3, GPIO_PH2, GPIO_PH1, GPIO_PH0,
+ /* Port H - Port H does not have a Data Register */
/* Port I - not on device */
diff --git a/arch/sh/include/cpu-sh2a/cpu/sh7269.h b/arch/sh/include/cpu-sh2a/cpu/sh7269.h
index 2a0ca8780f0d..d516e5d48818 100644
--- a/arch/sh/include/cpu-sh2a/cpu/sh7269.h
+++ b/arch/sh/include/cpu-sh2a/cpu/sh7269.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7269_H__
#define __ASM_SH7269_H__
@@ -45,9 +46,7 @@ enum {
GPIO_PG7, GPIO_PG6, GPIO_PG5, GPIO_PG4,
GPIO_PG3, GPIO_PG2, GPIO_PG1, GPIO_PG0,
- /* Port H */
- GPIO_PH7, GPIO_PH6, GPIO_PH5, GPIO_PH4,
- GPIO_PH3, GPIO_PH2, GPIO_PH1, GPIO_PH0,
+ /* Port H - Port H does not have a Data Register */
/* Port I - not on device */
diff --git a/arch/sh/include/cpu-sh3/cpu/adc.h b/arch/sh/include/cpu-sh3/cpu/adc.h
index b289e3ca19a6..2ee206c9bf1a 100644
--- a/arch/sh/include/cpu-sh3/cpu/adc.h
+++ b/arch/sh/include/cpu-sh3/cpu/adc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CPU_SH3_ADC_H
#define __ASM_CPU_SH3_ADC_H
diff --git a/arch/sh/include/cpu-sh3/cpu/dac.h b/arch/sh/include/cpu-sh3/cpu/dac.h
index 98f1d15f0ab5..fd02331608a8 100644
--- a/arch/sh/include/cpu-sh3/cpu/dac.h
+++ b/arch/sh/include/cpu-sh3/cpu/dac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CPU_SH3_DAC_H
#define __ASM_CPU_SH3_DAC_H
diff --git a/arch/sh/include/cpu-sh3/cpu/dma.h b/arch/sh/include/cpu-sh3/cpu/dma.h
index bccb4144a5e3..cd139681af4b 100644
--- a/arch/sh/include/cpu-sh3/cpu/dma.h
+++ b/arch/sh/include/cpu-sh3/cpu/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CPU_SH3_DMA_H
#define __ASM_CPU_SH3_DMA_H
diff --git a/arch/sh/include/cpu-sh3/cpu/serial.h b/arch/sh/include/cpu-sh3/cpu/serial.h
index 7766329bc103..7b2ce6e3003e 100644
--- a/arch/sh/include/cpu-sh3/cpu/serial.h
+++ b/arch/sh/include/cpu-sh3/cpu/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CPU_SH3_SERIAL_H
#define __CPU_SH3_SERIAL_H
diff --git a/arch/sh/include/cpu-sh3/cpu/sh7720.h b/arch/sh/include/cpu-sh3/cpu/sh7720.h
index 41c1406d6da2..449790c9eb77 100644
--- a/arch/sh/include/cpu-sh3/cpu/sh7720.h
+++ b/arch/sh/include/cpu-sh3/cpu/sh7720.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7720_H__
#define __ASM_SH7720_H__
diff --git a/arch/sh/include/cpu-sh4/cpu/dma.h b/arch/sh/include/cpu-sh4/cpu/dma.h
index a520eb219621..38187d06b234 100644
--- a/arch/sh/include/cpu-sh4/cpu/dma.h
+++ b/arch/sh/include/cpu-sh4/cpu/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CPU_SH4_DMA_H
#define __ASM_CPU_SH4_DMA_H
diff --git a/arch/sh/include/cpu-sh4/cpu/rtc.h b/arch/sh/include/cpu-sh4/cpu/rtc.h
index 95e6fb76c24d..45647566940f 100644
--- a/arch/sh/include/cpu-sh4/cpu/rtc.h
+++ b/arch/sh/include/cpu-sh4/cpu/rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CPU_SH4_RTC_H
#define __ASM_SH_CPU_SH4_RTC_H
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7722.h b/arch/sh/include/cpu-sh4/cpu/sh7722.h
index 3bb74e534d0f..2306c79f4b5e 100644
--- a/arch/sh/include/cpu-sh4/cpu/sh7722.h
+++ b/arch/sh/include/cpu-sh4/cpu/sh7722.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7722_H__
#define __ASM_SH7722_H__
@@ -67,7 +68,7 @@ enum {
GPIO_PTN3, GPIO_PTN2, GPIO_PTN1, GPIO_PTN0,
/* PTQ */
- GPIO_PTQ7, GPIO_PTQ6, GPIO_PTQ5, GPIO_PTQ4,
+ GPIO_PTQ6, GPIO_PTQ5, GPIO_PTQ4,
GPIO_PTQ3, GPIO_PTQ2, GPIO_PTQ1, GPIO_PTQ0,
/* PTR */
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7723.h b/arch/sh/include/cpu-sh4/cpu/sh7723.h
index 668da89bdac4..41f675307503 100644
--- a/arch/sh/include/cpu-sh4/cpu/sh7723.h
+++ b/arch/sh/include/cpu-sh4/cpu/sh7723.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7723_H__
#define __ASM_SH7723_H__
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7724.h b/arch/sh/include/cpu-sh4/cpu/sh7724.h
index 38859f96d4e5..b3a7caf54c9d 100644
--- a/arch/sh/include/cpu-sh4/cpu/sh7724.h
+++ b/arch/sh/include/cpu-sh4/cpu/sh7724.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7724_H__
#define __ASM_SH7724_H__
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7734.h b/arch/sh/include/cpu-sh4/cpu/sh7734.h
index 2fb9a7b71b41..96f0246ad2f2 100644
--- a/arch/sh/include/cpu-sh4/cpu/sh7734.h
+++ b/arch/sh/include/cpu-sh4/cpu/sh7734.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7734_H__
#define __ASM_SH7734_H__
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7757.h b/arch/sh/include/cpu-sh4/cpu/sh7757.h
index 5340f3bc1863..6781d41b7467 100644
--- a/arch/sh/include/cpu-sh4/cpu/sh7757.h
+++ b/arch/sh/include/cpu-sh4/cpu/sh7757.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7757_H__
#define __ASM_SH7757_H__
@@ -40,7 +41,7 @@ enum {
/* PTJ */
GPIO_PTJ0, GPIO_PTJ1, GPIO_PTJ2, GPIO_PTJ3,
- GPIO_PTJ4, GPIO_PTJ5, GPIO_PTJ6, GPIO_PTJ7_RESV,
+ GPIO_PTJ4, GPIO_PTJ5, GPIO_PTJ6,
/* PTK */
GPIO_PTK0, GPIO_PTK1, GPIO_PTK2, GPIO_PTK3,
@@ -48,7 +49,7 @@ enum {
/* PTL */
GPIO_PTL0, GPIO_PTL1, GPIO_PTL2, GPIO_PTL3,
- GPIO_PTL4, GPIO_PTL5, GPIO_PTL6, GPIO_PTL7_RESV,
+ GPIO_PTL4, GPIO_PTL5, GPIO_PTL6,
/* PTM */
GPIO_PTM0, GPIO_PTM1, GPIO_PTM2, GPIO_PTM3,
@@ -56,7 +57,7 @@ enum {
/* PTN */
GPIO_PTN0, GPIO_PTN1, GPIO_PTN2, GPIO_PTN3,
- GPIO_PTN4, GPIO_PTN5, GPIO_PTN6, GPIO_PTN7_RESV,
+ GPIO_PTN4, GPIO_PTN5, GPIO_PTN6,
/* PTO */
GPIO_PTO0, GPIO_PTO1, GPIO_PTO2, GPIO_PTO3,
@@ -68,7 +69,7 @@ enum {
/* PTQ */
GPIO_PTQ0, GPIO_PTQ1, GPIO_PTQ2, GPIO_PTQ3,
- GPIO_PTQ4, GPIO_PTQ5, GPIO_PTQ6, GPIO_PTQ7_RESV,
+ GPIO_PTQ4, GPIO_PTQ5, GPIO_PTQ6,
/* PTR */
GPIO_PTR0, GPIO_PTR1, GPIO_PTR2, GPIO_PTR3,
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7785.h b/arch/sh/include/cpu-sh4/cpu/sh7785.h
index 9dc9d91e0a8e..37f42071e7d3 100644
--- a/arch/sh/include/cpu-sh4/cpu/sh7785.h
+++ b/arch/sh/include/cpu-sh4/cpu/sh7785.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH7785_H__
#define __ASM_SH7785_H__
diff --git a/arch/sh/include/cpu-sh4/cpu/shx3.h b/arch/sh/include/cpu-sh4/cpu/shx3.h
index 68d9080a8da9..f356810b0bea 100644
--- a/arch/sh/include/cpu-sh4/cpu/shx3.h
+++ b/arch/sh/include/cpu-sh4/cpu/shx3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CPU_SHX3_H
#define __CPU_SHX3_H
diff --git a/arch/sh/include/cpu-sh4/cpu/sigcontext.h b/arch/sh/include/cpu-sh4/cpu/sigcontext.h
index ab392f120e06..2cc5f55dcadd 100644
--- a/arch/sh/include/cpu-sh4/cpu/sigcontext.h
+++ b/arch/sh/include/cpu-sh4/cpu/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CPU_SH4_SIGCONTEXT_H
#define __ASM_CPU_SH4_SIGCONTEXT_H
diff --git a/arch/sh/include/cpu-sh4a/cpu/dma.h b/arch/sh/include/cpu-sh4a/cpu/dma.h
index 8ceccceae844..bdbbba8a784a 100644
--- a/arch/sh/include/cpu-sh4a/cpu/dma.h
+++ b/arch/sh/include/cpu-sh4a/cpu/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CPU_SH4_DMA_SH7780_H
#define __ASM_SH_CPU_SH4_DMA_SH7780_H
diff --git a/arch/sh/include/cpu-sh4a/cpu/serial.h b/arch/sh/include/cpu-sh4a/cpu/serial.h
index ff1bc275d210..fc206c0bf6fb 100644
--- a/arch/sh/include/cpu-sh4a/cpu/serial.h
+++ b/arch/sh/include/cpu-sh4a/cpu/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CPU_SH4A_SERIAL_H
#define __CPU_SH4A_SERIAL_H
diff --git a/arch/sh/include/cpu-sh5/cpu/addrspace.h b/arch/sh/include/cpu-sh5/cpu/addrspace.h
index dc36b9a03af6..6dd1e72f31b2 100644
--- a/arch/sh/include/cpu-sh5/cpu/addrspace.h
+++ b/arch/sh/include/cpu-sh5/cpu/addrspace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CPU_SH5_ADDRSPACE_H
#define __ASM_SH_CPU_SH5_ADDRSPACE_H
diff --git a/arch/sh/include/cpu-sh5/cpu/mmu_context.h b/arch/sh/include/cpu-sh5/cpu/mmu_context.h
index 68a1d2cff457..23c53be945b7 100644
--- a/arch/sh/include/cpu-sh5/cpu/mmu_context.h
+++ b/arch/sh/include/cpu-sh5/cpu/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CPU_SH5_MMU_CONTEXT_H
#define __ASM_SH_CPU_SH5_MMU_CONTEXT_H
diff --git a/arch/sh/include/cpu-sh5/cpu/rtc.h b/arch/sh/include/cpu-sh5/cpu/rtc.h
index 12ea0ed144e1..d7e25d435f4a 100644
--- a/arch/sh/include/cpu-sh5/cpu/rtc.h
+++ b/arch/sh/include/cpu-sh5/cpu/rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_CPU_SH5_RTC_H
#define __ASM_SH_CPU_SH5_RTC_H
diff --git a/arch/sh/include/mach-common/mach/highlander.h b/arch/sh/include/mach-common/mach/highlander.h
index 6ce944e33e59..66d3e40fd046 100644
--- a/arch/sh/include/mach-common/mach/highlander.h
+++ b/arch/sh/include/mach-common/mach/highlander.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_RENESAS_R7780RP_H
#define __ASM_SH_RENESAS_R7780RP_H
diff --git a/arch/sh/include/mach-common/mach/r2d.h b/arch/sh/include/mach-common/mach/r2d.h
index e04f75eaa153..0d7e483c7d3f 100644
--- a/arch/sh/include/mach-common/mach/r2d.h
+++ b/arch/sh/include/mach-common/mach/r2d.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_RENESAS_RTS7751R2D_H
#define __ASM_SH_RENESAS_RTS7751R2D_H
diff --git a/arch/sh/include/mach-common/mach/romimage.h b/arch/sh/include/mach-common/mach/romimage.h
index 3670455faaac..1915714263aa 100644
--- a/arch/sh/include/mach-common/mach/romimage.h
+++ b/arch/sh/include/mach-common/mach/romimage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __ASSEMBLY__
/* do nothing here by default */
diff --git a/arch/sh/include/mach-common/mach/sh2007.h b/arch/sh/include/mach-common/mach/sh2007.h
index 48180b9aa03d..eeb12901a44a 100644
--- a/arch/sh/include/mach-common/mach/sh2007.h
+++ b/arch/sh/include/mach-common/mach/sh2007.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_SH2007_H
#define __MACH_SH2007_H
diff --git a/arch/sh/include/mach-common/mach/sh7785lcr.h b/arch/sh/include/mach-common/mach/sh7785lcr.h
index 1292ae5c21b3..0f3dc3a1329e 100644
--- a/arch/sh/include/mach-common/mach/sh7785lcr.h
+++ b/arch/sh/include/mach-common/mach/sh7785lcr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_RENESAS_SH7785LCR_H
#define __ASM_SH_RENESAS_SH7785LCR_H
diff --git a/arch/sh/include/mach-common/mach/shmin.h b/arch/sh/include/mach-common/mach/shmin.h
index 36ba138a81fb..c2c3e26d1453 100644
--- a/arch/sh/include/mach-common/mach/shmin.h
+++ b/arch/sh/include/mach-common/mach/shmin.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SHMIN_H
#define __ASM_SH_SHMIN_H
diff --git a/arch/sh/include/mach-common/mach/titan.h b/arch/sh/include/mach-common/mach/titan.h
index fa3cd801cf2e..54df351de5e4 100644
--- a/arch/sh/include/mach-common/mach/titan.h
+++ b/arch/sh/include/mach-common/mach/titan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Platform definitions for Titan
*/
diff --git a/arch/sh/include/mach-common/mach/urquell.h b/arch/sh/include/mach-common/mach/urquell.h
index 14b3e1d01777..6c9bff3f93f1 100644
--- a/arch/sh/include/mach-common/mach/urquell.h
+++ b/arch/sh/include/mach-common/mach/urquell.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_URQUELL_H
#define __MACH_URQUELL_H
diff --git a/arch/sh/include/mach-dreamcast/mach/maple.h b/arch/sh/include/mach-dreamcast/mach/maple.h
index 51f6a87f1f11..169bdf415d89 100644
--- a/arch/sh/include/mach-dreamcast/mach/maple.h
+++ b/arch/sh/include/mach-dreamcast/mach/maple.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MAPLE_H
#define __ASM_MAPLE_H
diff --git a/arch/sh/include/mach-ecovec24/mach/romimage.h b/arch/sh/include/mach-ecovec24/mach/romimage.h
index 60f3e8af05fa..2da6ff326cbd 100644
--- a/arch/sh/include/mach-ecovec24/mach/romimage.h
+++ b/arch/sh/include/mach-ecovec24/mach/romimage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __ASSEMBLY__
/* EcoVec board specific boot code:
diff --git a/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h b/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h
index 79f154e5cb9c..0e97473afe0b 100644
--- a/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h
+++ b/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_KFR2R09_H
#define __ASM_SH_KFR2R09_H
diff --git a/arch/sh/include/mach-kfr2r09/mach/romimage.h b/arch/sh/include/mach-kfr2r09/mach/romimage.h
index 1afae21ced5f..209275872ff0 100644
--- a/arch/sh/include/mach-kfr2r09/mach/romimage.h
+++ b/arch/sh/include/mach-kfr2r09/mach/romimage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __ASSEMBLY__
/* kfr2r09 board specific boot code:
diff --git a/arch/sh/include/mach-landisk/mach/gio.h b/arch/sh/include/mach-landisk/mach/gio.h
index 35d7368b718a..b954de617b49 100644
--- a/arch/sh/include/mach-landisk/mach/gio.h
+++ b/arch/sh/include/mach-landisk/mach/gio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_LANDISK_GIO_H
#define __ASM_SH_LANDISK_GIO_H
diff --git a/arch/sh/include/mach-landisk/mach/iodata_landisk.h b/arch/sh/include/mach-landisk/mach/iodata_landisk.h
index ceeea48cc7af..b41308c94d1e 100644
--- a/arch/sh/include/mach-landisk/mach/iodata_landisk.h
+++ b/arch/sh/include/mach-landisk/mach/iodata_landisk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_IODATA_LANDISK_H
#define __ASM_SH_IODATA_LANDISK_H
diff --git a/arch/sh/include/mach-migor/mach/migor.h b/arch/sh/include/mach-migor/mach/migor.h
index 7de7bb74c290..2a422b778e00 100644
--- a/arch/sh/include/mach-migor/mach/migor.h
+++ b/arch/sh/include/mach-migor/mach/migor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_MIGOR_H
#define __ASM_SH_MIGOR_H
diff --git a/arch/sh/include/mach-sdk7786/mach/fpga.h b/arch/sh/include/mach-sdk7786/mach/fpga.h
index a9cdac469927..76c2e84893cc 100644
--- a/arch/sh/include/mach-sdk7786/mach/fpga.h
+++ b/arch/sh/include/mach-sdk7786/mach/fpga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_SDK7786_FPGA_H
#define __MACH_SDK7786_FPGA_H
diff --git a/arch/sh/include/mach-sdk7786/mach/irq.h b/arch/sh/include/mach-sdk7786/mach/irq.h
index 0f584635e6e5..3343380907b2 100644
--- a/arch/sh/include/mach-sdk7786/mach/irq.h
+++ b/arch/sh/include/mach-sdk7786/mach/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_SDK7786_IRQ_H
#define __MACH_SDK7786_IRQ_H
diff --git a/arch/sh/include/mach-se/mach/mrshpc.h b/arch/sh/include/mach-se/mach/mrshpc.h
index 56287ee8563a..4e260f399b79 100644
--- a/arch/sh/include/mach-se/mach/mrshpc.h
+++ b/arch/sh/include/mach-se/mach/mrshpc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_SE_MRSHPC_H
#define __MACH_SE_MRSHPC_H
diff --git a/arch/sh/include/mach-se/mach/se.h b/arch/sh/include/mach-se/mach/se.h
index 8a6d44b4987b..4246ef9b07a3 100644
--- a/arch/sh/include/mach-se/mach/se.h
+++ b/arch/sh/include/mach-se/mach/se.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_HITACHI_SE_H
#define __ASM_SH_HITACHI_SE_H
diff --git a/arch/sh/include/mach-se/mach/se7206.h b/arch/sh/include/mach-se/mach/se7206.h
index 698eb80389ab..cf190279bb1d 100644
--- a/arch/sh/include/mach-se/mach/se7206.h
+++ b/arch/sh/include/mach-se/mach/se7206.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SE7206_H
#define __ASM_SH_SE7206_H
diff --git a/arch/sh/include/mach-se/mach/se7343.h b/arch/sh/include/mach-se/mach/se7343.h
index 542521c970c6..107fb5f3ef80 100644
--- a/arch/sh/include/mach-se/mach/se7343.h
+++ b/arch/sh/include/mach-se/mach/se7343.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_HITACHI_SE7343_H
#define __ASM_SH_HITACHI_SE7343_H
diff --git a/arch/sh/include/mach-se/mach/se7751.h b/arch/sh/include/mach-se/mach/se7751.h
index 271871793d59..ee5b5e6e5979 100644
--- a/arch/sh/include/mach-se/mach/se7751.h
+++ b/arch/sh/include/mach-se/mach/se7751.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_HITACHI_7751SE_H
#define __ASM_SH_HITACHI_7751SE_H
diff --git a/arch/sh/include/mach-sh03/mach/io.h b/arch/sh/include/mach-sh03/mach/io.h
index c39c785bba94..5eacdabd71b6 100644
--- a/arch/sh/include/mach-sh03/mach/io.h
+++ b/arch/sh/include/mach-sh03/mach/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm-sh/sh03/io.h
*
diff --git a/arch/sh/include/mach-sh03/mach/sh03.h b/arch/sh/include/mach-sh03/mach/sh03.h
index 19c40b80428d..4ced684b16a4 100644
--- a/arch/sh/include/mach-sh03/mach/sh03.h
+++ b/arch/sh/include/mach-sh03/mach/sh03.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SH03_H
#define __ASM_SH_SH03_H
diff --git a/arch/sh/include/mach-x3proto/mach/hardware.h b/arch/sh/include/mach-x3proto/mach/hardware.h
index 52bca57bfeb6..57ea4a5cca35 100644
--- a/arch/sh/include/mach-x3proto/mach/hardware.h
+++ b/arch/sh/include/mach-x3proto/mach/hardware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_X3PROTO_HARDWARE_H
#define __MACH_X3PROTO_HARDWARE_H
diff --git a/arch/sh/include/mach-x3proto/mach/ilsel.h b/arch/sh/include/mach-x3proto/mach/ilsel.h
index e3d304b280f6..47aeb4b55ea1 100644
--- a/arch/sh/include/mach-x3proto/mach/ilsel.h
+++ b/arch/sh/include/mach-x3proto/mach/ilsel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_ILSEL_H
#define __ASM_SH_ILSEL_H
diff --git a/arch/sh/include/uapi/asm/auxvec.h b/arch/sh/include/uapi/asm/auxvec.h
index 8bcc51af9367..8eb47ede7193 100644
--- a/arch/sh/include/uapi/asm/auxvec.h
+++ b/arch/sh/include/uapi/asm/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_AUXVEC_H
#define __ASM_SH_AUXVEC_H
diff --git a/arch/sh/include/uapi/asm/byteorder.h b/arch/sh/include/uapi/asm/byteorder.h
index db2f5d7cb17d..e27d6da3212c 100644
--- a/arch/sh/include/uapi/asm/byteorder.h
+++ b/arch/sh/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_BYTEORDER_H
#define __ASM_SH_BYTEORDER_H
diff --git a/arch/sh/include/uapi/asm/cachectl.h b/arch/sh/include/uapi/asm/cachectl.h
index 6ffb4b7a212e..79c5663251a5 100644
--- a/arch/sh/include/uapi/asm/cachectl.h
+++ b/arch/sh/include/uapi/asm/cachectl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SH_CACHECTL_H
#define _SH_CACHECTL_H
diff --git a/arch/sh/include/uapi/asm/cpu-features.h b/arch/sh/include/uapi/asm/cpu-features.h
index 2f1bc851042a..6de5f65194e6 100644
--- a/arch/sh/include/uapi/asm/cpu-features.h
+++ b/arch/sh/include/uapi/asm/cpu-features.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_CPU_FEATURES_H
#define __ASM_SH_CPU_FEATURES_H
diff --git a/arch/sh/include/uapi/asm/hw_breakpoint.h b/arch/sh/include/uapi/asm/hw_breakpoint.h
index ae5704fa77ad..043dd4b92026 100644
--- a/arch/sh/include/uapi/asm/hw_breakpoint.h
+++ b/arch/sh/include/uapi/asm/hw_breakpoint.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* There isn't anything here anymore, but the file must not be empty or patch
* will delete it.
diff --git a/arch/sh/include/uapi/asm/ioctls.h b/arch/sh/include/uapi/asm/ioctls.h
index 787bac9f67da..cc62f6f98103 100644
--- a/arch/sh/include/uapi/asm/ioctls.h
+++ b/arch/sh/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_IOCTLS_H
#define __ASM_SH_IOCTLS_H
diff --git a/arch/sh/include/uapi/asm/posix_types.h b/arch/sh/include/uapi/asm/posix_types.h
index dc55e5adfe1e..2644fdd444e6 100644
--- a/arch/sh/include/uapi/asm/posix_types.h
+++ b/arch/sh/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __KERNEL__
# ifdef __SH5__
# include <asm/posix_types_64.h>
diff --git a/arch/sh/include/uapi/asm/posix_types_32.h b/arch/sh/include/uapi/asm/posix_types_32.h
index ba0bdc423b07..ea0f51d1ac55 100644
--- a/arch/sh/include/uapi/asm/posix_types_32.h
+++ b/arch/sh/include/uapi/asm/posix_types_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_POSIX_TYPES_32_H
#define __ASM_SH_POSIX_TYPES_32_H
diff --git a/arch/sh/include/uapi/asm/posix_types_64.h b/arch/sh/include/uapi/asm/posix_types_64.h
index 244f7e950e17..3a9128d4aee3 100644
--- a/arch/sh/include/uapi/asm/posix_types_64.h
+++ b/arch/sh/include/uapi/asm/posix_types_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_POSIX_TYPES_64_H
#define __ASM_SH_POSIX_TYPES_64_H
diff --git a/arch/sh/include/uapi/asm/ptrace.h b/arch/sh/include/uapi/asm/ptrace.h
index 8b8c5aca9c28..4ec9c2b65fdb 100644
--- a/arch/sh/include/uapi/asm/ptrace.h
+++ b/arch/sh/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 1999, 2000 Niibe Yutaka
*/
diff --git a/arch/sh/include/uapi/asm/ptrace_32.h b/arch/sh/include/uapi/asm/ptrace_32.h
index 926e0cefc2bb..dc8a26015018 100644
--- a/arch/sh/include/uapi/asm/ptrace_32.h
+++ b/arch/sh/include/uapi/asm/ptrace_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ASM_SH_PTRACE_32_H
#define _UAPI__ASM_SH_PTRACE_32_H
diff --git a/arch/sh/include/uapi/asm/ptrace_64.h b/arch/sh/include/uapi/asm/ptrace_64.h
index 0e52ee83e946..a6f84eba5277 100644
--- a/arch/sh/include/uapi/asm/ptrace_64.h
+++ b/arch/sh/include/uapi/asm/ptrace_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ASM_SH_PTRACE_64_H
#define _UAPI__ASM_SH_PTRACE_64_H
diff --git a/arch/sh/include/uapi/asm/sigcontext.h b/arch/sh/include/uapi/asm/sigcontext.h
index faa5d0833412..d2b7e4f033c0 100644
--- a/arch/sh/include/uapi/asm/sigcontext.h
+++ b/arch/sh/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_SIGCONTEXT_H
#define __ASM_SH_SIGCONTEXT_H
diff --git a/arch/sh/include/uapi/asm/signal.h b/arch/sh/include/uapi/asm/signal.h
index cb96d02f55a4..97299daddef5 100644
--- a/arch/sh/include/uapi/asm/signal.h
+++ b/arch/sh/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_SIGNAL_H
#define __ASM_SH_SIGNAL_H
diff --git a/arch/sh/include/uapi/asm/sockios.h b/arch/sh/include/uapi/asm/sockios.h
index cf8b96b1f9ab..17313d2c3527 100644
--- a/arch/sh/include/uapi/asm/sockios.h
+++ b/arch/sh/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_SOCKIOS_H
#define __ASM_SH_SOCKIOS_H
diff --git a/arch/sh/include/uapi/asm/stat.h b/arch/sh/include/uapi/asm/stat.h
index e1810cc6e3da..659b87c7c25a 100644
--- a/arch/sh/include/uapi/asm/stat.h
+++ b/arch/sh/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_STAT_H
#define __ASM_SH_STAT_H
diff --git a/arch/sh/include/uapi/asm/swab.h b/arch/sh/include/uapi/asm/swab.h
index 1cd09767a7a3..f0b02152745c 100644
--- a/arch/sh/include/uapi/asm/swab.h
+++ b/arch/sh/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_SWAB_H
#define __ASM_SH_SWAB_H
diff --git a/arch/sh/include/uapi/asm/unistd.h b/arch/sh/include/uapi/asm/unistd.h
index eeef88dd53ce..9e0b4e5e6da2 100644
--- a/arch/sh/include/uapi/asm/unistd.h
+++ b/arch/sh/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __KERNEL__
# ifdef __SH5__
# include <asm/unistd_64.h>
diff --git a/arch/sh/include/uapi/asm/unistd_32.h b/arch/sh/include/uapi/asm/unistd_32.h
index c801bde9e6f5..58f04cf3d1d9 100644
--- a/arch/sh/include/uapi/asm/unistd_32.h
+++ b/arch/sh/include/uapi/asm/unistd_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_UNISTD_32_H
#define __ASM_SH_UNISTD_32_H
diff --git a/arch/sh/include/uapi/asm/unistd_64.h b/arch/sh/include/uapi/asm/unistd_64.h
index ce0cb3598b62..6f809a53aa24 100644
--- a/arch/sh/include/uapi/asm/unistd_64.h
+++ b/arch/sh/include/uapi/asm/unistd_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_SH_UNISTD_64_H
#define __ASM_SH_UNISTD_64_H
diff --git a/arch/sh/kernel/Makefile b/arch/sh/kernel/Makefile
index 09040fd07d2e..dc80041f7363 100644
--- a/arch/sh/kernel/Makefile
+++ b/arch/sh/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/SuperH kernel.
#
diff --git a/arch/sh/kernel/asm-offsets.c b/arch/sh/kernel/asm-offsets.c
index 4bd44da910f3..a0322e832845 100644
--- a/arch/sh/kernel/asm-offsets.c
+++ b/arch/sh/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This program is used to generate definitions needed by
* assembly language modules.
diff --git a/arch/sh/kernel/cpu/Makefile b/arch/sh/kernel/cpu/Makefile
index 252e9fee687f..f7c22ea98b0f 100644
--- a/arch/sh/kernel/cpu/Makefile
+++ b/arch/sh/kernel/cpu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/SuperH CPU-specific backends.
#
diff --git a/arch/sh/kernel/cpu/adc.c b/arch/sh/kernel/cpu/adc.c
index d307571d54b6..509136715ed5 100644
--- a/arch/sh/kernel/cpu/adc.c
+++ b/arch/sh/kernel/cpu/adc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/kernel/adc.c -- SH3 on-chip ADC support
*
diff --git a/arch/sh/kernel/cpu/clock-cpg.c b/arch/sh/kernel/cpu/clock-cpg.c
index 786c0769b4c3..5b75a384cbf3 100644
--- a/arch/sh/kernel/cpu/clock-cpg.c
+++ b/arch/sh/kernel/cpu/clock-cpg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/clk.h>
#include <linux/compiler.h>
#include <linux/slab.h>
diff --git a/arch/sh/kernel/cpu/fpu.c b/arch/sh/kernel/cpu/fpu.c
index 547c73478459..ae354a2931e7 100644
--- a/arch/sh/kernel/cpu/fpu.c
+++ b/arch/sh/kernel/cpu/fpu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/sched/signal.h>
#include <linux/sched/task.h>
#include <linux/sched/task_stack.h>
diff --git a/arch/sh/kernel/cpu/irq/imask.c b/arch/sh/kernel/cpu/irq/imask.c
index e7f1745bd121..572585c3f2fd 100644
--- a/arch/sh/kernel/cpu/irq/imask.c
+++ b/arch/sh/kernel/cpu/irq/imask.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sh/kernel/cpu/irq/imask.c
*
diff --git a/arch/sh/kernel/cpu/proc.c b/arch/sh/kernel/cpu/proc.c
index 4df4b284f591..85961b4f9c69 100644
--- a/arch/sh/kernel/cpu/proc.c
+++ b/arch/sh/kernel/cpu/proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/seq_file.h>
#include <linux/kernel.h>
#include <linux/module.h>
diff --git a/arch/sh/kernel/cpu/sh2a/Makefile b/arch/sh/kernel/cpu/sh2a/Makefile
index 990195d98456..2a7515b658fd 100644
--- a/arch/sh/kernel/cpu/sh2a/Makefile
+++ b/arch/sh/kernel/cpu/sh2a/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/SuperH SH-2A backends.
#
diff --git a/arch/sh/kernel/cpu/sh3/Makefile b/arch/sh/kernel/cpu/sh3/Makefile
index d3634ae7b71a..1dcb43d93c86 100644
--- a/arch/sh/kernel/cpu/sh3/Makefile
+++ b/arch/sh/kernel/cpu/sh3/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/SuperH SH-3 backends.
#
diff --git a/arch/sh/kernel/cpu/sh3/serial-sh770x.c b/arch/sh/kernel/cpu/sh3/serial-sh770x.c
index 4f7242c676b3..dec027f233f2 100644
--- a/arch/sh/kernel/cpu/sh3/serial-sh770x.c
+++ b/arch/sh/kernel/cpu/sh3/serial-sh770x.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/serial_sci.h>
#include <linux/serial_core.h>
#include <linux/io.h>
diff --git a/arch/sh/kernel/cpu/sh3/serial-sh7710.c b/arch/sh/kernel/cpu/sh3/serial-sh7710.c
index 42190ef6aebf..ee04052e5bdd 100644
--- a/arch/sh/kernel/cpu/sh3/serial-sh7710.c
+++ b/arch/sh/kernel/cpu/sh3/serial-sh7710.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/serial_sci.h>
#include <linux/serial_core.h>
#include <linux/io.h>
diff --git a/arch/sh/kernel/cpu/sh3/serial-sh7720.c b/arch/sh/kernel/cpu/sh3/serial-sh7720.c
index c4a0336660dd..75aaea49de43 100644
--- a/arch/sh/kernel/cpu/sh3/serial-sh7720.c
+++ b/arch/sh/kernel/cpu/sh3/serial-sh7720.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/serial_sci.h>
#include <linux/serial_core.h>
#include <linux/io.h>
diff --git a/arch/sh/kernel/cpu/sh4/Makefile b/arch/sh/kernel/cpu/sh4/Makefile
index 3a1dbc709831..00c16331e07e 100644
--- a/arch/sh/kernel/cpu/sh4/Makefile
+++ b/arch/sh/kernel/cpu/sh4/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/SuperH SH-4 backends.
#
diff --git a/arch/sh/kernel/cpu/sh4a/Makefile b/arch/sh/kernel/cpu/sh4a/Makefile
index 0705df775208..baf73a8fc2a0 100644
--- a/arch/sh/kernel/cpu/sh4a/Makefile
+++ b/arch/sh/kernel/cpu/sh4a/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/SuperH SH-4 backends.
#
diff --git a/arch/sh/kernel/cpu/sh4a/pinmux-sh7722.c b/arch/sh/kernel/cpu/sh4a/pinmux-sh7722.c
index 271bbc864929..0dd5312f930b 100644
--- a/arch/sh/kernel/cpu/sh4a/pinmux-sh7722.c
+++ b/arch/sh/kernel/cpu/sh4a/pinmux-sh7722.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bug.h>
#include <linux/init.h>
#include <linux/kernel.h>
diff --git a/arch/sh/kernel/cpu/sh4a/serial-sh7722.c b/arch/sh/kernel/cpu/sh4a/serial-sh7722.c
index 59bc3a72702e..6ecc8b6e133c 100644
--- a/arch/sh/kernel/cpu/sh4a/serial-sh7722.c
+++ b/arch/sh/kernel/cpu/sh4a/serial-sh7722.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/serial_sci.h>
#include <linux/serial_core.h>
#include <linux/io.h>
diff --git a/arch/sh/kernel/cpu/sh5/Makefile b/arch/sh/kernel/cpu/sh5/Makefile
index a184a31e686e..97d23ec3005f 100644
--- a/arch/sh/kernel/cpu/sh5/Makefile
+++ b/arch/sh/kernel/cpu/sh5/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/SuperH SH-5 backends.
#
diff --git a/arch/sh/kernel/crash_dump.c b/arch/sh/kernel/crash_dump.c
index b33be505361e..a9086127b16d 100644
--- a/arch/sh/kernel/crash_dump.c
+++ b/arch/sh/kernel/crash_dump.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* crash_dump.c - Memory preserving reboot related code.
*
diff --git a/arch/sh/kernel/ftrace.c b/arch/sh/kernel/ftrace.c
index d18724d186f3..96dd9f7da250 100644
--- a/arch/sh/kernel/ftrace.c
+++ b/arch/sh/kernel/ftrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2008 Matt Fleming <matt@console-pimps.org>
* Copyright (C) 2008 Paul Mundt <lethal@linux-sh.org>
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c
index 04487e8fc9b1..245dbeb20afe 100644
--- a/arch/sh/kernel/irq.c
+++ b/arch/sh/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/kernel/irq.c
*
diff --git a/arch/sh/kernel/kdebugfs.c b/arch/sh/kernel/kdebugfs.c
index e11c30bb100c..95428e05d212 100644
--- a/arch/sh/kernel/kdebugfs.c
+++ b/arch/sh/kernel/kdebugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/init.h>
#include <linux/debugfs.h>
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c
index f8a695a223dd..b2d9963d5978 100644
--- a/arch/sh/kernel/process.c
+++ b/arch/sh/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <linux/kernel.h>
#include <linux/slab.h>
diff --git a/arch/sh/kernel/ptrace.c b/arch/sh/kernel/ptrace.c
index 0a05983633ca..bfc59f2c2602 100644
--- a/arch/sh/kernel/ptrace.c
+++ b/arch/sh/kernel/ptrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ptrace.h>
/**
diff --git a/arch/sh/kernel/reboot.c b/arch/sh/kernel/reboot.c
index 04afe5b20663..11001a8a5fe0 100644
--- a/arch/sh/kernel/reboot.c
+++ b/arch/sh/kernel/reboot.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/pm.h>
#include <linux/kexec.h>
#include <linux/kernel.h>
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
index 3a44c753b642..b95c411d0333 100644
--- a/arch/sh/kernel/setup.c
+++ b/arch/sh/kernel/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sh/kernel/setup.c
*
diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c
index 0b30b9dfc87f..282774472603 100644
--- a/arch/sh/kernel/sh_ksyms_32.c
+++ b/arch/sh/kernel/sh_ksyms_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/string.h>
#include <linux/uaccess.h>
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c
index 08bce11badc6..c46c0020ff55 100644
--- a/arch/sh/kernel/signal_32.c
+++ b/arch/sh/kernel/signal_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/kernel/signal.c
*
diff --git a/arch/sh/kernel/sys_sh.c b/arch/sh/kernel/sys_sh.c
index 6576e5ee1fc3..724911c59e7d 100644
--- a/arch/sh/kernel/sys_sh.c
+++ b/arch/sh/kernel/sys_sh.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/kernel/sys_sh.c
*
diff --git a/arch/sh/kernel/sys_sh32.c b/arch/sh/kernel/sys_sh32.c
index a2e1231a90a3..f8dc8bfd4606 100644
--- a/arch/sh/kernel/sys_sh32.c
+++ b/arch/sh/kernel/sys_sh32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/sched/task_stack.h>
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c
index b32d1c3a4655..8b49cced663d 100644
--- a/arch/sh/kernel/traps.c
+++ b/arch/sh/kernel/traps.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bug.h>
#include <linux/io.h>
#include <linux/types.h>
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S
index 5b9a3cc90c58..77a59d8c6b4d 100644
--- a/arch/sh/kernel/vmlinux.lds.S
+++ b/arch/sh/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ld script to make SuperH Linux kernel
* Written by Niibe Yutaka and Paul Mundt
diff --git a/arch/sh/kernel/vsyscall/Makefile b/arch/sh/kernel/vsyscall/Makefile
index 6ab108f1a0c6..5db6579bc44c 100644
--- a/arch/sh/kernel/vsyscall/Makefile
+++ b/arch/sh/kernel/vsyscall/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += vsyscall.o vsyscall-syscall.o vsyscall-syms.o
$(obj)/vsyscall-syscall.o: \
diff --git a/arch/sh/kernel/vsyscall/vsyscall-note.S b/arch/sh/kernel/vsyscall/vsyscall-note.S
index d4b5be4f3d5f..bb350918bebd 100644
--- a/arch/sh/kernel/vsyscall/vsyscall-note.S
+++ b/arch/sh/kernel/vsyscall/vsyscall-note.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This supplies .note.* sections to go into the PT_NOTE inside the vDSO text.
* Here we can supply some information useful to userland.
diff --git a/arch/sh/kernel/vsyscall/vsyscall-sigreturn.S b/arch/sh/kernel/vsyscall/vsyscall-sigreturn.S
index 23af17584054..bece5fa73618 100644
--- a/arch/sh/kernel/vsyscall/vsyscall-sigreturn.S
+++ b/arch/sh/kernel/vsyscall/vsyscall-sigreturn.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/unistd.h>
.text
diff --git a/arch/sh/kernel/vsyscall/vsyscall-syscall.S b/arch/sh/kernel/vsyscall/vsyscall-syscall.S
index c2ac7f0282b3..2aeaa2ddee50 100644
--- a/arch/sh/kernel/vsyscall/vsyscall-syscall.S
+++ b/arch/sh/kernel/vsyscall/vsyscall-syscall.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/init.h>
__INITDATA
diff --git a/arch/sh/kernel/vsyscall/vsyscall-trapa.S b/arch/sh/kernel/vsyscall/vsyscall-trapa.S
index 0eb74d00690a..854ea3235704 100644
--- a/arch/sh/kernel/vsyscall/vsyscall-trapa.S
+++ b/arch/sh/kernel/vsyscall/vsyscall-trapa.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.text
.globl __kernel_vsyscall
.type __kernel_vsyscall,@function
diff --git a/arch/sh/kernel/vsyscall/vsyscall.lds.S b/arch/sh/kernel/vsyscall/vsyscall.lds.S
index 6d59ee7c23dd..e3582e03c0eb 100644
--- a/arch/sh/kernel/vsyscall/vsyscall.lds.S
+++ b/arch/sh/kernel/vsyscall/vsyscall.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linker script for vsyscall DSO. The vsyscall page is an ELF shared
* object prelinked to its virtual address, and with only one read-only
diff --git a/arch/sh/lib/Makefile b/arch/sh/lib/Makefile
index 3baff31e58cf..d0abbe5e38b0 100644
--- a/arch/sh/lib/Makefile
+++ b/arch/sh/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for SuperH-specific library files..
#
diff --git a/arch/sh/lib/__clear_user.S b/arch/sh/lib/__clear_user.S
index db1dca7aad14..0978606907ed 100644
--- a/arch/sh/lib/__clear_user.S
+++ b/arch/sh/lib/__clear_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* __clear_user_page, __clear_user, clear_page implementation of SuperH
*
diff --git a/arch/sh/lib/ashldi3.c b/arch/sh/lib/ashldi3.c
index beb80f316095..e5afe0935847 100644
--- a/arch/sh/lib/ashldi3.c
+++ b/arch/sh/lib/ashldi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include "libgcc.h"
diff --git a/arch/sh/lib/ashrdi3.c b/arch/sh/lib/ashrdi3.c
index c884a912b660..ae263fbf2538 100644
--- a/arch/sh/lib/ashrdi3.c
+++ b/arch/sh/lib/ashrdi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include "libgcc.h"
diff --git a/arch/sh/lib/copy_page.S b/arch/sh/lib/copy_page.S
index 9d7b8bc51866..d4e9d18cee0b 100644
--- a/arch/sh/lib/copy_page.S
+++ b/arch/sh/lib/copy_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* copy_page, __copy_user_page, __copy_user implementation of SuperH
*
diff --git a/arch/sh/lib/delay.c b/arch/sh/lib/delay.c
index 0901b2f14e15..dad8e6a54906 100644
--- a/arch/sh/lib/delay.c
+++ b/arch/sh/lib/delay.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Precise Delay Loops for SuperH
*
diff --git a/arch/sh/lib/div64-generic.c b/arch/sh/lib/div64-generic.c
index 60e76aa8b53e..0b67fbc44f6f 100644
--- a/arch/sh/lib/div64-generic.c
+++ b/arch/sh/lib/div64-generic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generic __div64_32 wrapper for __xdiv64_32.
*/
diff --git a/arch/sh/lib/div64.S b/arch/sh/lib/div64.S
index 5ee7334ea64f..4a9a966e71b0 100644
--- a/arch/sh/lib/div64.S
+++ b/arch/sh/lib/div64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* unsigned long __xdiv64_32(unsigned long long n, unsigned long d);
*/
diff --git a/arch/sh/lib/lshrdi3.c b/arch/sh/lib/lshrdi3.c
index dcf8d6810b7c..33eaa1edbc3c 100644
--- a/arch/sh/lib/lshrdi3.c
+++ b/arch/sh/lib/lshrdi3.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include "libgcc.h"
diff --git a/arch/sh/lib/memchr.S b/arch/sh/lib/memchr.S
index bc6036ad5706..8ded104077aa 100644
--- a/arch/sh/lib/memchr.S
+++ b/arch/sh/lib/memchr.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: memchr.S,v 1.1 2000/04/14 16:49:01 mjd Exp $
*
* "memchr" implementation of SuperH
diff --git a/arch/sh/lib/memcpy-sh4.S b/arch/sh/lib/memcpy-sh4.S
index 459fa92a7c53..a2435c0f6302 100644
--- a/arch/sh/lib/memcpy-sh4.S
+++ b/arch/sh/lib/memcpy-sh4.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* "memcpy" implementation of SuperH
*
diff --git a/arch/sh/lib/memcpy.S b/arch/sh/lib/memcpy.S
index 232fab34c261..08ab3062c4b2 100644
--- a/arch/sh/lib/memcpy.S
+++ b/arch/sh/lib/memcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: memcpy.S,v 1.3 2001/07/27 11:50:52 gniibe Exp $
*
* "memcpy" implementation of SuperH
diff --git a/arch/sh/lib/memmove.S b/arch/sh/lib/memmove.S
index 5a2211f09202..bdca321814a9 100644
--- a/arch/sh/lib/memmove.S
+++ b/arch/sh/lib/memmove.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: memmove.S,v 1.2 2001/07/27 11:51:09 gniibe Exp $
*
* "memmove" implementation of SuperH
diff --git a/arch/sh/lib/memset-sh4.S b/arch/sh/lib/memset-sh4.S
index 1a6e32cc4e4d..10649c4cdab8 100644
--- a/arch/sh/lib/memset-sh4.S
+++ b/arch/sh/lib/memset-sh4.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* "memset" implementation for SH4
*
diff --git a/arch/sh/lib/memset.S b/arch/sh/lib/memset.S
index af91fe2b72a6..a6d5ec0bd9cf 100644
--- a/arch/sh/lib/memset.S
+++ b/arch/sh/lib/memset.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: memset.S,v 1.1 2000/04/14 16:49:01 mjd Exp $
*
* "memset" implementation of SuperH
diff --git a/arch/sh/lib/strlen.S b/arch/sh/lib/strlen.S
index 1bcc13f05962..80ea53dd34f6 100644
--- a/arch/sh/lib/strlen.S
+++ b/arch/sh/lib/strlen.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: strlen.S,v 1.2 2001/06/29 14:07:15 gniibe Exp $
*
* "strlen" implementation of SuperH
diff --git a/arch/sh/lib64/copy_user_memcpy.S b/arch/sh/lib64/copy_user_memcpy.S
index 49aeabeba2c2..515f81b00202 100644
--- a/arch/sh/lib64/copy_user_memcpy.S
+++ b/arch/sh/lib64/copy_user_memcpy.S
@@ -1,3 +1,4 @@
+! SPDX-License-Identifier: GPL-2.0
!
! Fast SH memcpy
!
diff --git a/arch/sh/lib64/memcpy.S b/arch/sh/lib64/memcpy.S
index 5d682e0ee24f..231ea595b39a 100644
--- a/arch/sh/lib64/memcpy.S
+++ b/arch/sh/lib64/memcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Cloned and hacked for uClibc by Paul Mundt, December 2003 */
/* Modified by SuperH, Inc. September 2003 */
!
diff --git a/arch/sh/lib64/memset.S b/arch/sh/lib64/memset.S
index 2d37b0488552..453aa5f1d263 100644
--- a/arch/sh/lib64/memset.S
+++ b/arch/sh/lib64/memset.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Cloned and hacked for uClibc by Paul Mundt, December 2003 */
/* Modified by SuperH, Inc. September 2003 */
!
diff --git a/arch/sh/lib64/sdivsi3.S b/arch/sh/lib64/sdivsi3.S
index 1963bbd42288..b422e2374430 100644
--- a/arch/sh/lib64/sdivsi3.S
+++ b/arch/sh/lib64/sdivsi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.global __sdivsi3
.global __sdivsi3_1
.global __sdivsi3_2
diff --git a/arch/sh/lib64/strcpy.S b/arch/sh/lib64/strcpy.S
index ea7c9c533eea..b61631e523d4 100644
--- a/arch/sh/lib64/strcpy.S
+++ b/arch/sh/lib64/strcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Cloned and hacked for uClibc by Paul Mundt, December 2003 */
/* Modified by SuperH, Inc. September 2003 */
! Entry: arg0: destination
diff --git a/arch/sh/lib64/strlen.S b/arch/sh/lib64/strlen.S
index cbc0d912e5f3..c00b972f9999 100644
--- a/arch/sh/lib64/strlen.S
+++ b/arch/sh/lib64/strlen.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Simplistic strlen() implementation for SHmedia.
*
diff --git a/arch/sh/lib64/udivdi3.S b/arch/sh/lib64/udivdi3.S
index 6895c0225b85..c032cb157589 100644
--- a/arch/sh/lib64/udivdi3.S
+++ b/arch/sh/lib64/udivdi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.section .text..SHmedia32,"ax"
.align 2
.global __udivdi3
diff --git a/arch/sh/lib64/udivsi3.S b/arch/sh/lib64/udivsi3.S
index e68120e4b847..e4788fb4fe82 100644
--- a/arch/sh/lib64/udivsi3.S
+++ b/arch/sh/lib64/udivsi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.global __udivsi3
.section .text..SHmedia32,"ax"
.align 2
diff --git a/arch/sh/math-emu/sfp-util.h b/arch/sh/math-emu/sfp-util.h
index 8ae1bd310ad0..784f541344f3 100644
--- a/arch/sh/math-emu/sfp-util.h
+++ b/arch/sh/math-emu/sfp-util.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* These are copied from glibc/stdlib/longlong.h
*/
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index dba285e86808..50cdd1349015 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Memory management options"
config QUICKLIST
diff --git a/arch/sh/mm/Makefile b/arch/sh/mm/Makefile
index 92c3bd96aee5..fbe5e79751b3 100644
--- a/arch/sh/mm/Makefile
+++ b/arch/sh/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux SuperH-specific parts of the memory manager.
#
diff --git a/arch/sh/mm/extable_32.c b/arch/sh/mm/extable_32.c
index 940e871bc816..14312027bb08 100644
--- a/arch/sh/mm/extable_32.c
+++ b/arch/sh/mm/extable_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sh/mm/extable.c
* Taken from:
diff --git a/arch/sh/mm/flush-sh4.c b/arch/sh/mm/flush-sh4.c
index 0b85dd9dd3a7..8b8ef8972104 100644
--- a/arch/sh/mm/flush-sh4.c
+++ b/arch/sh/mm/flush-sh4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <asm/mmu_context.h>
#include <asm/cache_insns.h>
diff --git a/arch/sh/mm/gup.c b/arch/sh/mm/gup.c
index 063c298ba56c..8045b5bb7075 100644
--- a/arch/sh/mm/gup.c
+++ b/arch/sh/mm/gup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Lockless get_user_pages_fast for SuperH
*
diff --git a/arch/sh/mm/hugetlbpage.c b/arch/sh/mm/hugetlbpage.c
index d2412d2d6462..960deb1f24a1 100644
--- a/arch/sh/mm/hugetlbpage.c
+++ b/arch/sh/mm/hugetlbpage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sh/mm/hugetlbpage.c
*
diff --git a/arch/sh/mm/ioremap_fixed.c b/arch/sh/mm/ioremap_fixed.c
index efbe84af9983..927a1294c465 100644
--- a/arch/sh/mm/ioremap_fixed.c
+++ b/arch/sh/mm/ioremap_fixed.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Re-map IO memory to kernel address space so that we can access it.
*
diff --git a/arch/sh/mm/pgtable.c b/arch/sh/mm/pgtable.c
index a62bd8696779..5c8f9247c3c2 100644
--- a/arch/sh/mm/pgtable.c
+++ b/arch/sh/mm/pgtable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <linux/slab.h>
diff --git a/arch/sh/mm/uncached.c b/arch/sh/mm/uncached.c
index a7767da815e9..010010bf205a 100644
--- a/arch/sh/mm/uncached.c
+++ b/arch/sh/mm/uncached.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/module.h>
#include <asm/sizes.h>
diff --git a/arch/sh/oprofile/Makefile b/arch/sh/oprofile/Makefile
index ce3b119021e7..d478dd8dac0b 100644
--- a/arch/sh/oprofile/Makefile
+++ b/arch/sh/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
CFLAGS_common.o += -DUTS_MACHINE='"$(UTS_MACHINE)"'
diff --git a/arch/sh/tools/gen-mach-types b/arch/sh/tools/gen-mach-types
index f5ff7c5d8913..6d7c2d8eaf55 100644
--- a/arch/sh/tools/gen-mach-types
+++ b/arch/sh/tools/gen-mach-types
@@ -1,4 +1,5 @@
#!/bin/awk
+# SPDX-License-Identifier: GPL-2.0
#
# Awk script to generate include/generated/machtypes.h
# Heavily based on arch/arm/tools/gen-mach-types
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 0be3828752e5..4e83f950713e 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -44,7 +44,6 @@ config SPARC
select ARCH_HAS_SG_CHAIN
select CPU_NO_EFFICIENT_FFS
select LOCKDEP_SMALL if LOCKDEP
- select ARCH_WANT_RELAX_ORDER
config SPARC32
def_bool !64BIT
diff --git a/arch/sparc/Kconfig.debug b/arch/sparc/Kconfig.debug
index 6db35fba79fd..4aef29a11925 100644
--- a/arch/sparc/Kconfig.debug
+++ b/arch/sparc/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
config TRACE_IRQFLAGS_SUPPORT
diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile
index 8496a074bd0e..dbc448923f48 100644
--- a/arch/sparc/Makefile
+++ b/arch/sparc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# sparc/Makefile
#
diff --git a/arch/sparc/boot/Makefile b/arch/sparc/boot/Makefile
index 6a4ceae5ec67..ec8cd703b708 100644
--- a/arch/sparc/boot/Makefile
+++ b/arch/sparc/boot/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the Sparc boot stuff.
#
# Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc/crypto/Makefile b/arch/sparc/crypto/Makefile
index 5d469d81761f..818d3aa5172e 100644
--- a/arch/sparc/crypto/Makefile
+++ b/arch/sparc/crypto/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Arch-specific CryptoAPI modules.
#
diff --git a/arch/sparc/crypto/aes_asm.S b/arch/sparc/crypto/aes_asm.S
index 1cda8aa7cb85..155cefb98520 100644
--- a/arch/sparc/crypto/aes_asm.S
+++ b/arch/sparc/crypto/aes_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/visasm.h>
diff --git a/arch/sparc/crypto/camellia_asm.S b/arch/sparc/crypto/camellia_asm.S
index cc39553a4e43..dcdc9193fcd7 100644
--- a/arch/sparc/crypto/camellia_asm.S
+++ b/arch/sparc/crypto/camellia_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/visasm.h>
diff --git a/arch/sparc/crypto/crc32c_asm.S b/arch/sparc/crypto/crc32c_asm.S
index 2b1976e765b5..b8659a479242 100644
--- a/arch/sparc/crypto/crc32c_asm.S
+++ b/arch/sparc/crypto/crc32c_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/visasm.h>
#include <asm/asi.h>
diff --git a/arch/sparc/crypto/crop_devid.c b/arch/sparc/crypto/crop_devid.c
index 5f5724a0ae22..83fc4536dcd5 100644
--- a/arch/sparc/crypto/crop_devid.c
+++ b/arch/sparc/crypto/crop_devid.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/of_device.h>
diff --git a/arch/sparc/crypto/des_asm.S b/arch/sparc/crypto/des_asm.S
index b5c8fc269b5f..7157468a679d 100644
--- a/arch/sparc/crypto/des_asm.S
+++ b/arch/sparc/crypto/des_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/visasm.h>
diff --git a/arch/sparc/crypto/md5_asm.S b/arch/sparc/crypto/md5_asm.S
index 3150404e602e..7a6637455f37 100644
--- a/arch/sparc/crypto/md5_asm.S
+++ b/arch/sparc/crypto/md5_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/visasm.h>
diff --git a/arch/sparc/crypto/opcodes.h b/arch/sparc/crypto/opcodes.h
index 19cbaea6976f..417b6a10a337 100644
--- a/arch/sparc/crypto/opcodes.h
+++ b/arch/sparc/crypto/opcodes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _OPCODES_H
#define _OPCODES_H
diff --git a/arch/sparc/crypto/sha1_asm.S b/arch/sparc/crypto/sha1_asm.S
index 219d10c5ae0e..7d8bf354f0e7 100644
--- a/arch/sparc/crypto/sha1_asm.S
+++ b/arch/sparc/crypto/sha1_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/visasm.h>
diff --git a/arch/sparc/crypto/sha256_asm.S b/arch/sparc/crypto/sha256_asm.S
index b5f3d5826eb4..0b39ec7d7ca2 100644
--- a/arch/sparc/crypto/sha256_asm.S
+++ b/arch/sparc/crypto/sha256_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/visasm.h>
diff --git a/arch/sparc/crypto/sha512_asm.S b/arch/sparc/crypto/sha512_asm.S
index 54bfba713c0e..b2f6e6728802 100644
--- a/arch/sparc/crypto/sha512_asm.S
+++ b/arch/sparc/crypto/sha512_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/visasm.h>
diff --git a/arch/sparc/include/asm/agp.h b/arch/sparc/include/asm/agp.h
index 70f52c1661bc..efe0d6a12e5a 100644
--- a/arch/sparc/include/asm/agp.h
+++ b/arch/sparc/include/asm/agp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef AGP_H
#define AGP_H 1
diff --git a/arch/sparc/include/asm/apb.h b/arch/sparc/include/asm/apb.h
index 8f3b57db810f..b1dfb1a99f07 100644
--- a/arch/sparc/include/asm/apb.h
+++ b/arch/sparc/include/asm/apb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* apb.h: Advanced PCI Bridge Configuration Registers and Bits
*
diff --git a/arch/sparc/include/asm/asm-prototypes.h b/arch/sparc/include/asm/asm-prototypes.h
index d381e11c5dbb..96e0972e8dbf 100644
--- a/arch/sparc/include/asm/asm-prototypes.h
+++ b/arch/sparc/include/asm/asm-prototypes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
*/
diff --git a/arch/sparc/include/asm/asm.h b/arch/sparc/include/asm/asm.h
index e8e1d94b4cc9..eaed0117a838 100644
--- a/arch/sparc/include/asm/asm.h
+++ b/arch/sparc/include/asm/asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_ASM_H
#define _SPARC_ASM_H
diff --git a/arch/sparc/include/asm/asmmacro.h b/arch/sparc/include/asm/asmmacro.h
index a0e28ef02558..49aaf6f3bc55 100644
--- a/arch/sparc/include/asm/asmmacro.h
+++ b/arch/sparc/include/asm/asmmacro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* asmmacro.h: Assembler macros.
*
* Copyright (C) 1996 David S. Miller (davem@caipfs.rutgers.edu)
diff --git a/arch/sparc/include/asm/atomic.h b/arch/sparc/include/asm/atomic.h
index 8ff83d8cc33f..425151cc4808 100644
--- a/arch/sparc/include/asm/atomic.h
+++ b/arch/sparc/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_ATOMIC_H
#define ___ASM_SPARC_ATOMIC_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/atomic_32.h b/arch/sparc/include/asm/atomic_32.h
index 7643e979e333..0c3b3b4a9963 100644
--- a/arch/sparc/include/asm/atomic_32.h
+++ b/arch/sparc/include/asm/atomic_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* atomic.h: These still suck, but the I-cache hit rate is higher.
*
* Copyright (C) 1996 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/atomic_64.h b/arch/sparc/include/asm/atomic_64.h
index 24827a3f733a..abad97edf736 100644
--- a/arch/sparc/include/asm/atomic_64.h
+++ b/arch/sparc/include/asm/atomic_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* atomic.h: Thankfully the V9 is at least reasonable for this
* stuff.
*
diff --git a/arch/sparc/include/asm/auxio.h b/arch/sparc/include/asm/auxio.h
index 3e09a07b77e9..a2681052e900 100644
--- a/arch/sparc/include/asm/auxio.h
+++ b/arch/sparc/include/asm/auxio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_AUXIO_H
#define ___ASM_SPARC_AUXIO_H
diff --git a/arch/sparc/include/asm/auxio_32.h b/arch/sparc/include/asm/auxio_32.h
index 5d685df427b4..852457c7a265 100644
--- a/arch/sparc/include/asm/auxio_32.h
+++ b/arch/sparc/include/asm/auxio_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* auxio.h: Definitions and code for the Auxiliary I/O register.
*
diff --git a/arch/sparc/include/asm/auxio_64.h b/arch/sparc/include/asm/auxio_64.h
index 6079e59a7ad1..ae1ed41987db 100644
--- a/arch/sparc/include/asm/auxio_64.h
+++ b/arch/sparc/include/asm/auxio_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* auxio.h: Definitions and code for the Auxiliary I/O registers.
*
diff --git a/arch/sparc/include/asm/backoff.h b/arch/sparc/include/asm/backoff.h
index 4e02086b839c..8625946d8d00 100644
--- a/arch/sparc/include/asm/backoff.h
+++ b/arch/sparc/include/asm/backoff.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_BACKOFF_H
#define _SPARC64_BACKOFF_H
diff --git a/arch/sparc/include/asm/barrier.h b/arch/sparc/include/asm/barrier.h
index b25f02a029e0..c10b4164be59 100644
--- a/arch/sparc/include/asm/barrier.h
+++ b/arch/sparc/include/asm/barrier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_BARRIER_H
#define ___ASM_SPARC_BARRIER_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/barrier_32.h b/arch/sparc/include/asm/barrier_32.h
index 8059130a6cee..304f9c3f7c4a 100644
--- a/arch/sparc/include/asm/barrier_32.h
+++ b/arch/sparc/include/asm/barrier_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_BARRIER_H
#define __SPARC_BARRIER_H
diff --git a/arch/sparc/include/asm/barrier_64.h b/arch/sparc/include/asm/barrier_64.h
index c9f6ee64f41d..9fb148bd3c97 100644
--- a/arch/sparc/include/asm/barrier_64.h
+++ b/arch/sparc/include/asm/barrier_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC64_BARRIER_H
#define __SPARC64_BARRIER_H
diff --git a/arch/sparc/include/asm/bbc.h b/arch/sparc/include/asm/bbc.h
index 423a85800aae..00a4f116144d 100644
--- a/arch/sparc/include/asm/bbc.h
+++ b/arch/sparc/include/asm/bbc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* bbc.h: Defines for BootBus Controller found on UltraSPARC-III
* systems.
diff --git a/arch/sparc/include/asm/bitext.h b/arch/sparc/include/asm/bitext.h
index 9c988bf3adb6..2c2a2d85e8ec 100644
--- a/arch/sparc/include/asm/bitext.h
+++ b/arch/sparc/include/asm/bitext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* bitext.h: Bit string operations on the sparc, specific to architecture.
*
diff --git a/arch/sparc/include/asm/bitops.h b/arch/sparc/include/asm/bitops.h
index b1edd94bd64f..4c431d274926 100644
--- a/arch/sparc/include/asm/bitops.h
+++ b/arch/sparc/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_BITOPS_H
#define ___ASM_SPARC_BITOPS_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/bitops_32.h b/arch/sparc/include/asm/bitops_32.h
index 600ed1d9c8c8..0ceff3b915a8 100644
--- a/arch/sparc/include/asm/bitops_32.h
+++ b/arch/sparc/include/asm/bitops_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* bitops.h: Bit string operations on the Sparc.
*
diff --git a/arch/sparc/include/asm/bitops_64.h b/arch/sparc/include/asm/bitops_64.h
index 2d522402a937..a90eea24b286 100644
--- a/arch/sparc/include/asm/bitops_64.h
+++ b/arch/sparc/include/asm/bitops_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* bitops.h: Bit string operations on the V9.
*
diff --git a/arch/sparc/include/asm/btext.h b/arch/sparc/include/asm/btext.h
index 75a32b109e15..01cdc4265733 100644
--- a/arch/sparc/include/asm/btext.h
+++ b/arch/sparc/include/asm/btext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_BTEXT_H
#define _SPARC_BTEXT_H
diff --git a/arch/sparc/include/asm/bug.h b/arch/sparc/include/asm/bug.h
index eaa8f8d38125..6f17528356b2 100644
--- a/arch/sparc/include/asm/bug.h
+++ b/arch/sparc/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_BUG_H
#define _SPARC_BUG_H
diff --git a/arch/sparc/include/asm/bugs.h b/arch/sparc/include/asm/bugs.h
index 61d86bbbe2b2..02fa369b9c21 100644
--- a/arch/sparc/include/asm/bugs.h
+++ b/arch/sparc/include/asm/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* include/asm/bugs.h: Sparc probes for various bugs.
*
* Copyright (C) 1996, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/cache.h b/arch/sparc/include/asm/cache.h
index 5bb6991b4857..dcfd58118c11 100644
--- a/arch/sparc/include/asm/cache.h
+++ b/arch/sparc/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* cache.h: Cache specific code for the Sparc. These include flushing
* and direct tag/data line access.
*
diff --git a/arch/sparc/include/asm/cacheflush.h b/arch/sparc/include/asm/cacheflush.h
index f6c4839b8388..881ac76eab93 100644
--- a/arch/sparc/include/asm/cacheflush.h
+++ b/arch/sparc/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_CACHEFLUSH_H
#define ___ASM_SPARC_CACHEFLUSH_H
diff --git a/arch/sparc/include/asm/cacheflush_32.h b/arch/sparc/include/asm/cacheflush_32.h
index 12164006181c..fb66094a2c30 100644
--- a/arch/sparc/include/asm/cacheflush_32.h
+++ b/arch/sparc/include/asm/cacheflush_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_CACHEFLUSH_H
#define _SPARC_CACHEFLUSH_H
diff --git a/arch/sparc/include/asm/cacheflush_64.h b/arch/sparc/include/asm/cacheflush_64.h
index 68513c41e10d..e7517434d1fa 100644
--- a/arch/sparc/include/asm/cacheflush_64.h
+++ b/arch/sparc/include/asm/cacheflush_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_CACHEFLUSH_H
#define _SPARC64_CACHEFLUSH_H
diff --git a/arch/sparc/include/asm/cachetlb_32.h b/arch/sparc/include/asm/cachetlb_32.h
index efb19889a083..534da70c6357 100644
--- a/arch/sparc/include/asm/cachetlb_32.h
+++ b/arch/sparc/include/asm/cachetlb_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_CACHETLB_H
#define _SPARC_CACHETLB_H
diff --git a/arch/sparc/include/asm/chafsr.h b/arch/sparc/include/asm/chafsr.h
index 85c69b38220b..01540eca1671 100644
--- a/arch/sparc/include/asm/chafsr.h
+++ b/arch/sparc/include/asm/chafsr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_CHAFSR_H
#define _SPARC64_CHAFSR_H
diff --git a/arch/sparc/include/asm/checksum.h b/arch/sparc/include/asm/checksum.h
index 7ac0d7497bc5..c3be56e2e768 100644
--- a/arch/sparc/include/asm/checksum.h
+++ b/arch/sparc/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_CHECKSUM_H
#define ___ASM_SPARC_CHECKSUM_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/checksum_32.h b/arch/sparc/include/asm/checksum_32.h
index e25af5fc99fd..d1e53d7aed39 100644
--- a/arch/sparc/include/asm/checksum_32.h
+++ b/arch/sparc/include/asm/checksum_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_CHECKSUM_H
#define __SPARC_CHECKSUM_H
diff --git a/arch/sparc/include/asm/checksum_64.h b/arch/sparc/include/asm/checksum_64.h
index 96a5ed58cea6..e52450930e4e 100644
--- a/arch/sparc/include/asm/checksum_64.h
+++ b/arch/sparc/include/asm/checksum_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC64_CHECKSUM_H
#define __SPARC64_CHECKSUM_H
diff --git a/arch/sparc/include/asm/chmctrl.h b/arch/sparc/include/asm/chmctrl.h
index 859b4a4b0d30..96f043cb2c3e 100644
--- a/arch/sparc/include/asm/chmctrl.h
+++ b/arch/sparc/include/asm/chmctrl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_CHMCTRL_H
#define _SPARC64_CHMCTRL_H
diff --git a/arch/sparc/include/asm/cmpxchg.h b/arch/sparc/include/asm/cmpxchg.h
index 9355893efa52..b7955c6b91fc 100644
--- a/arch/sparc/include/asm/cmpxchg.h
+++ b/arch/sparc/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_CMPXCHG_H
#define ___ASM_SPARC_CMPXCHG_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/cmpxchg_32.h b/arch/sparc/include/asm/cmpxchg_32.h
index 83ffb83c5397..3e3823db303e 100644
--- a/arch/sparc/include/asm/cmpxchg_32.h
+++ b/arch/sparc/include/asm/cmpxchg_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* 32-bit atomic xchg() and cmpxchg() definitions.
*
* Copyright (C) 1996 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/cmpxchg_64.h b/arch/sparc/include/asm/cmpxchg_64.h
index 4028f4f1e561..f71ef3729888 100644
--- a/arch/sparc/include/asm/cmpxchg_64.h
+++ b/arch/sparc/include/asm/cmpxchg_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* 64-bit atomic xchg() and cmpxchg() definitions.
*
* Copyright (C) 1996, 1997, 2000 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/include/asm/compat.h b/arch/sparc/include/asm/compat.h
index 6f251c4d613e..977c3f280ba1 100644
--- a/arch/sparc/include/asm/compat.h
+++ b/arch/sparc/include/asm/compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC64_COMPAT_H
#define _ASM_SPARC64_COMPAT_H
/*
diff --git a/arch/sparc/include/asm/compat_signal.h b/arch/sparc/include/asm/compat_signal.h
index 4b027b1044fa..e5f7a7f281d2 100644
--- a/arch/sparc/include/asm/compat_signal.h
+++ b/arch/sparc/include/asm/compat_signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _COMPAT_SIGNAL_H
#define _COMPAT_SIGNAL_H
diff --git a/arch/sparc/include/asm/contregs.h b/arch/sparc/include/asm/contregs.h
index b8abdfcf5555..4df56a6ba7d9 100644
--- a/arch/sparc/include/asm/contregs.h
+++ b/arch/sparc/include/asm/contregs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_CONTREGS_H
#define _SPARC_CONTREGS_H
diff --git a/arch/sparc/include/asm/cpu_type.h b/arch/sparc/include/asm/cpu_type.h
index 84d7d83b8084..2b59799859d1 100644
--- a/arch/sparc/include/asm/cpu_type.h
+++ b/arch/sparc/include/asm/cpu_type.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CPU_TYPE_H
#define __ASM_CPU_TYPE_H
diff --git a/arch/sparc/include/asm/cpudata.h b/arch/sparc/include/asm/cpudata.h
index 128b56b08676..d213165ee713 100644
--- a/arch/sparc/include/asm/cpudata.h
+++ b/arch/sparc/include/asm/cpudata.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_CPUDATA_H
#define ___ASM_SPARC_CPUDATA_H
diff --git a/arch/sparc/include/asm/cpudata_32.h b/arch/sparc/include/asm/cpudata_32.h
index 05f366379f53..895d0964b802 100644
--- a/arch/sparc/include/asm/cpudata_32.h
+++ b/arch/sparc/include/asm/cpudata_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* cpudata.h: Per-cpu parameters.
*
* Copyright (C) 2004 Keith M Wesolowski (wesolows@foobazco.org)
diff --git a/arch/sparc/include/asm/cpudata_64.h b/arch/sparc/include/asm/cpudata_64.h
index 5b0ed48e5b0c..666d6b5c0440 100644
--- a/arch/sparc/include/asm/cpudata_64.h
+++ b/arch/sparc/include/asm/cpudata_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* cpudata.h: Per-cpu parameters.
*
* Copyright (C) 2003, 2005, 2006 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/current.h b/arch/sparc/include/asm/current.h
index 10a0df55a574..c68312a89d14 100644
--- a/arch/sparc/include/asm/current.h
+++ b/arch/sparc/include/asm/current.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* include/asm/current.h
*
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
diff --git a/arch/sparc/include/asm/dcr.h b/arch/sparc/include/asm/dcr.h
index 620c9ba642e9..c810e1b4285c 100644
--- a/arch/sparc/include/asm/dcr.h
+++ b/arch/sparc/include/asm/dcr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_DCR_H
#define _SPARC64_DCR_H
diff --git a/arch/sparc/include/asm/dcu.h b/arch/sparc/include/asm/dcu.h
index 0f704e106a1b..93f32507125e 100644
--- a/arch/sparc/include/asm/dcu.h
+++ b/arch/sparc/include/asm/dcu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_DCU_H
#define _SPARC64_DCU_H
diff --git a/arch/sparc/include/asm/delay.h b/arch/sparc/include/asm/delay.h
index 467caa2a97a0..c96af9b91661 100644
--- a/arch/sparc/include/asm/delay.h
+++ b/arch/sparc/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_DELAY_H
#define ___ASM_SPARC_DELAY_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/delay_32.h b/arch/sparc/include/asm/delay_32.h
index 3fb8ca144b4f..0e6dfe857d67 100644
--- a/arch/sparc/include/asm/delay_32.h
+++ b/arch/sparc/include/asm/delay_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* delay.h: Linux delay routines on the Sparc.
*
diff --git a/arch/sparc/include/asm/delay_64.h b/arch/sparc/include/asm/delay_64.h
index 0ba5424856d8..22213b1c119d 100644
--- a/arch/sparc/include/asm/delay_64.h
+++ b/arch/sparc/include/asm/delay_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* delay.h: Linux delay routines on sparc64.
*
* Copyright (C) 1996, 2004, 2007 David S. Miller (davem@davemloft.net).
diff --git a/arch/sparc/include/asm/dma-mapping.h b/arch/sparc/include/asm/dma-mapping.h
index 60bf1633d554..2f3490dd37de 100644
--- a/arch/sparc/include/asm/dma-mapping.h
+++ b/arch/sparc/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_DMA_MAPPING_H
#define ___ASM_SPARC_DMA_MAPPING_H
diff --git a/arch/sparc/include/asm/dma.h b/arch/sparc/include/asm/dma.h
index 3d434ef5eae3..a1d7c86917c6 100644
--- a/arch/sparc/include/asm/dma.h
+++ b/arch/sparc/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC_DMA_H
#define _ASM_SPARC_DMA_H
diff --git a/arch/sparc/include/asm/ebus_dma.h b/arch/sparc/include/asm/ebus_dma.h
index fcfb4948147f..75563ed090f5 100644
--- a/arch/sparc/include/asm/ebus_dma.h
+++ b/arch/sparc/include/asm/ebus_dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPARC_EBUS_DMA_H
#define __ASM_SPARC_EBUS_DMA_H
diff --git a/arch/sparc/include/asm/ecc.h b/arch/sparc/include/asm/ecc.h
index ccb84b66fef1..3d5edee36b4c 100644
--- a/arch/sparc/include/asm/ecc.h
+++ b/arch/sparc/include/asm/ecc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ecc.h: Definitions and defines for the external cache/memory
* controller on the sun4m.
diff --git a/arch/sparc/include/asm/elf.h b/arch/sparc/include/asm/elf.h
index 0a2816c50b07..bbfb4b002ff3 100644
--- a/arch/sparc/include/asm/elf.h
+++ b/arch/sparc/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_ELF_H
#define ___ASM_SPARC_ELF_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/elf_32.h b/arch/sparc/include/asm/elf_32.h
index a24e41fcdde1..37a6016c9ccd 100644
--- a/arch/sparc/include/asm/elf_32.h
+++ b/arch/sparc/include/asm/elf_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASMSPARC_ELF_H
#define __ASMSPARC_ELF_H
diff --git a/arch/sparc/include/asm/elf_64.h b/arch/sparc/include/asm/elf_64.h
index 3f2d403873bd..5894389f5ed5 100644
--- a/arch/sparc/include/asm/elf_64.h
+++ b/arch/sparc/include/asm/elf_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPARC64_ELF_H
#define __ASM_SPARC64_ELF_H
diff --git a/arch/sparc/include/asm/estate.h b/arch/sparc/include/asm/estate.h
index 520c08560d1b..e5e0f84accea 100644
--- a/arch/sparc/include/asm/estate.h
+++ b/arch/sparc/include/asm/estate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_ESTATE_H
#define _SPARC64_ESTATE_H
diff --git a/arch/sparc/include/asm/extable_64.h b/arch/sparc/include/asm/extable_64.h
index 1121cb056ffb..5a0171907b7e 100644
--- a/arch/sparc/include/asm/extable_64.h
+++ b/arch/sparc/include/asm/extable_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_EXTABLE64_H
#define __ASM_EXTABLE64_H
/*
diff --git a/arch/sparc/include/asm/fb.h b/arch/sparc/include/asm/fb.h
index 2173432ad7f7..f699962e9ddf 100644
--- a/arch/sparc/include/asm/fb.h
+++ b/arch/sparc/include/asm/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_FB_H_
#define _SPARC_FB_H_
#include <linux/console.h>
diff --git a/arch/sparc/include/asm/fbio.h b/arch/sparc/include/asm/fbio.h
index 1d9afe277e9c..02654cb95dec 100644
--- a/arch/sparc/include/asm/fbio.h
+++ b/arch/sparc/include/asm/fbio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_FBIO_H
#define __LINUX_FBIO_H
diff --git a/arch/sparc/include/asm/fhc.h b/arch/sparc/include/asm/fhc.h
index 57f1b303ad54..0627fa126540 100644
--- a/arch/sparc/include/asm/fhc.h
+++ b/arch/sparc/include/asm/fhc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* fhc.h: FHC and Clock board register definitions.
*
* Copyright (C) 1997, 1999 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/include/asm/floppy.h b/arch/sparc/include/asm/floppy.h
index faebd335b600..4b315802e635 100644
--- a/arch/sparc/include/asm/floppy.h
+++ b/arch/sparc/include/asm/floppy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_FLOPPY_H
#define ___ASM_SPARC_FLOPPY_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/floppy_32.h b/arch/sparc/include/asm/floppy_32.h
index 071b83e52f15..dd63aa301658 100644
--- a/arch/sparc/include/asm/floppy_32.h
+++ b/arch/sparc/include/asm/floppy_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* asm/floppy.h: Sparc specific parts of the Floppy driver.
*
* Copyright (C) 1995 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/floppy_64.h b/arch/sparc/include/asm/floppy_64.h
index 625756406a7e..22fbeab92a4c 100644
--- a/arch/sparc/include/asm/floppy_64.h
+++ b/arch/sparc/include/asm/floppy_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* floppy.h: Sparc specific parts of the Floppy driver.
*
* Copyright (C) 1996, 2007, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/fpumacro.h b/arch/sparc/include/asm/fpumacro.h
index cc463fec806f..bc378df97fa8 100644
--- a/arch/sparc/include/asm/fpumacro.h
+++ b/arch/sparc/include/asm/fpumacro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* fpumacro.h: FPU related macros.
*
* Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
diff --git a/arch/sparc/include/asm/ftrace.h b/arch/sparc/include/asm/ftrace.h
index 62755a339a59..d3aa1a524431 100644
--- a/arch/sparc/include/asm/ftrace.h
+++ b/arch/sparc/include/asm/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC64_FTRACE
#define _ASM_SPARC64_FTRACE
diff --git a/arch/sparc/include/asm/futex.h b/arch/sparc/include/asm/futex.h
index 736335f36713..75a13a20cc64 100644
--- a/arch/sparc/include/asm/futex.h
+++ b/arch/sparc/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_FUTEX_H
#define ___ASM_SPARC_FUTEX_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/futex_64.h b/arch/sparc/include/asm/futex_64.h
index 1cfd89d92208..0865ce77ec00 100644
--- a/arch/sparc/include/asm/futex_64.h
+++ b/arch/sparc/include/asm/futex_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_FUTEX_H
#define _SPARC64_FUTEX_H
diff --git a/arch/sparc/include/asm/hardirq.h b/arch/sparc/include/asm/hardirq.h
index 44d4e2345148..a185f6647348 100644
--- a/arch/sparc/include/asm/hardirq.h
+++ b/arch/sparc/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_HARDIRQ_H
#define ___ASM_SPARC_HARDIRQ_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/hardirq_32.h b/arch/sparc/include/asm/hardirq_32.h
index ee93923b7f82..9830d8731a09 100644
--- a/arch/sparc/include/asm/hardirq_32.h
+++ b/arch/sparc/include/asm/hardirq_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* hardirq.h: 32-bit Sparc hard IRQ support.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc/include/asm/hardirq_64.h b/arch/sparc/include/asm/hardirq_64.h
index f478ff1ddd02..f56540271993 100644
--- a/arch/sparc/include/asm/hardirq_64.h
+++ b/arch/sparc/include/asm/hardirq_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* hardirq.h: 64-bit Sparc hard IRQ support.
*
* Copyright (C) 1997, 1998, 2005 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/head.h b/arch/sparc/include/asm/head.h
index be8f03f3e731..25299b701df5 100644
--- a/arch/sparc/include/asm/head.h
+++ b/arch/sparc/include/asm/head.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_HEAD_H
#define ___ASM_SPARC_HEAD_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/head_32.h b/arch/sparc/include/asm/head_32.h
index 6fc60fd182c4..d2809c859d0c 100644
--- a/arch/sparc/include/asm/head_32.h
+++ b/arch/sparc/include/asm/head_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_HEAD_H
#define __SPARC_HEAD_H
diff --git a/arch/sparc/include/asm/head_64.h b/arch/sparc/include/asm/head_64.h
index f0700cfeedd7..69a2062d992c 100644
--- a/arch/sparc/include/asm/head_64.h
+++ b/arch/sparc/include/asm/head_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_HEAD_H
#define _SPARC64_HEAD_H
diff --git a/arch/sparc/include/asm/hibernate.h b/arch/sparc/include/asm/hibernate.h
index 2ec34f842249..3bb0a96ec4ef 100644
--- a/arch/sparc/include/asm/hibernate.h
+++ b/arch/sparc/include/asm/hibernate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* hibernate.h: Hibernaton support specific for sparc64.
*
diff --git a/arch/sparc/include/asm/highmem.h b/arch/sparc/include/asm/highmem.h
index 92ded294a4ec..18d776925c45 100644
--- a/arch/sparc/include/asm/highmem.h
+++ b/arch/sparc/include/asm/highmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* highmem.h: virtual kernel memory mappings for high memory
*
diff --git a/arch/sparc/include/asm/hugetlb.h b/arch/sparc/include/asm/hugetlb.h
index 0ca7caab1b06..300557c66698 100644
--- a/arch/sparc/include/asm/hugetlb.h
+++ b/arch/sparc/include/asm/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC64_HUGETLB_H
#define _ASM_SPARC64_HUGETLB_H
diff --git a/arch/sparc/include/asm/hvtramp.h b/arch/sparc/include/asm/hvtramp.h
index 04b56f862bbe..688ea43af0f5 100644
--- a/arch/sparc/include/asm/hvtramp.h
+++ b/arch/sparc/include/asm/hvtramp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_HVTRAP_H
#define _SPARC64_HVTRAP_H
diff --git a/arch/sparc/include/asm/hypervisor.h b/arch/sparc/include/asm/hypervisor.h
index 3dc9215d0357..89a0c57aed59 100644
--- a/arch/sparc/include/asm/hypervisor.h
+++ b/arch/sparc/include/asm/hypervisor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_HYPERVISOR_H
#define _SPARC64_HYPERVISOR_H
diff --git a/arch/sparc/include/asm/ide.h b/arch/sparc/include/asm/ide.h
index b7af3d658239..09f026585550 100644
--- a/arch/sparc/include/asm/ide.h
+++ b/arch/sparc/include/asm/ide.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ide.h: SPARC PCI specific IDE glue.
*
* Copyright (C) 1997 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/idprom.h b/arch/sparc/include/asm/idprom.h
index 3793f7f91c42..4c372199cd70 100644
--- a/arch/sparc/include/asm/idprom.h
+++ b/arch/sparc/include/asm/idprom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* idprom.h: Macros and defines for idprom routines
*
diff --git a/arch/sparc/include/asm/intr_queue.h b/arch/sparc/include/asm/intr_queue.h
index 206077dedc2a..d61be2a3aac1 100644
--- a/arch/sparc/include/asm/intr_queue.h
+++ b/arch/sparc/include/asm/intr_queue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_INTR_QUEUE_H
#define _SPARC64_INTR_QUEUE_H
diff --git a/arch/sparc/include/asm/io-unit.h b/arch/sparc/include/asm/io-unit.h
index 04a9701e7202..3ce96e8c088f 100644
--- a/arch/sparc/include/asm/io-unit.h
+++ b/arch/sparc/include/asm/io-unit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* io-unit.h: Definitions for the sun4d IO-UNIT.
*
* Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
diff --git a/arch/sparc/include/asm/io.h b/arch/sparc/include/asm/io.h
index f6902cf3cbe9..2eefa526b38f 100644
--- a/arch/sparc/include/asm/io.h
+++ b/arch/sparc/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_IO_H
#define ___ASM_SPARC_IO_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/io_32.h b/arch/sparc/include/asm/io_32.h
index 4dd268a3a8b0..cd51a89b393c 100644
--- a/arch/sparc/include/asm/io_32.h
+++ b/arch/sparc/include/asm/io_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_IO_H
#define __SPARC_IO_H
diff --git a/arch/sparc/include/asm/io_64.h b/arch/sparc/include/asm/io_64.h
index c32fa3f752c8..9a1e9cbc7e6d 100644
--- a/arch/sparc/include/asm/io_64.h
+++ b/arch/sparc/include/asm/io_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC64_IO_H
#define __SPARC64_IO_H
diff --git a/arch/sparc/include/asm/ioctls.h b/arch/sparc/include/asm/ioctls.h
index 77413b7e3a18..c92ac780c39f 100644
--- a/arch/sparc/include/asm/ioctls.h
+++ b/arch/sparc/include/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC_IOCTLS_H
#define _ASM_SPARC_IOCTLS_H
diff --git a/arch/sparc/include/asm/iommu.h b/arch/sparc/include/asm/iommu.h
index e650965b4a8d..37935cb34865 100644
--- a/arch/sparc/include/asm/iommu.h
+++ b/arch/sparc/include/asm/iommu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_IOMMU_H
#define ___ASM_SPARC_IOMMU_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/iommu_32.h b/arch/sparc/include/asm/iommu_32.h
index f6c066b52fd6..af51cd5ea3c1 100644
--- a/arch/sparc/include/asm/iommu_32.h
+++ b/arch/sparc/include/asm/iommu_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* iommu.h: Definitions for the sun4m IOMMU.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc/include/asm/iommu_64.h b/arch/sparc/include/asm/iommu_64.h
index f24f356f2503..9ed6b54caa4b 100644
--- a/arch/sparc/include/asm/iommu_64.h
+++ b/arch/sparc/include/asm/iommu_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* iommu.h: Definitions for the sun5 IOMMU.
*
* Copyright (C) 1996, 1999, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/irq.h b/arch/sparc/include/asm/irq.h
index 3b44a6a14074..a2efc274dbb0 100644
--- a/arch/sparc/include/asm/irq.h
+++ b/arch/sparc/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_IRQ_H
#define ___ASM_SPARC_IRQ_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/irq_32.h b/arch/sparc/include/asm/irq_32.h
index eecd3d8442c9..43ec2609b811 100644
--- a/arch/sparc/include/asm/irq_32.h
+++ b/arch/sparc/include/asm/irq_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* irq.h: IRQ registers on the Sparc.
*
* Copyright (C) 1995, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/irq_64.h b/arch/sparc/include/asm/irq_64.h
index 1d51a11fb261..4d748e93b974 100644
--- a/arch/sparc/include/asm/irq_64.h
+++ b/arch/sparc/include/asm/irq_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* irq.h: IRQ registers on the 64-bit Sparc.
*
* Copyright (C) 1996 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/irqflags.h b/arch/sparc/include/asm/irqflags.h
index 1e138632bd3f..d1bdf6c398d1 100644
--- a/arch/sparc/include/asm/irqflags.h
+++ b/arch/sparc/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_IRQFLAGS_H
#define ___ASM_SPARC_IRQFLAGS_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/irqflags_32.h b/arch/sparc/include/asm/irqflags_32.h
index 71cc284f55c5..7ca3eaf3dace 100644
--- a/arch/sparc/include/asm/irqflags_32.h
+++ b/arch/sparc/include/asm/irqflags_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm/irqflags.h
*
diff --git a/arch/sparc/include/asm/irqflags_64.h b/arch/sparc/include/asm/irqflags_64.h
index 23cd27f6beb4..c29ed571ae49 100644
--- a/arch/sparc/include/asm/irqflags_64.h
+++ b/arch/sparc/include/asm/irqflags_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm/irqflags.h
*
diff --git a/arch/sparc/include/asm/jump_label.h b/arch/sparc/include/asm/jump_label.h
index 62d0354d1727..94eb529dcb77 100644
--- a/arch/sparc/include/asm/jump_label.h
+++ b/arch/sparc/include/asm/jump_label.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC_JUMP_LABEL_H
#define _ASM_SPARC_JUMP_LABEL_H
diff --git a/arch/sparc/include/asm/kdebug.h b/arch/sparc/include/asm/kdebug.h
index 8d12581ca386..830053f91da1 100644
--- a/arch/sparc/include/asm/kdebug.h
+++ b/arch/sparc/include/asm/kdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_KDEBUG_H
#define ___ASM_SPARC_KDEBUG_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/kdebug_32.h b/arch/sparc/include/asm/kdebug_32.h
index 1d0b240222ef..763d423823bd 100644
--- a/arch/sparc/include/asm/kdebug_32.h
+++ b/arch/sparc/include/asm/kdebug_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* kdebug.h: Defines and definitions for debugging the Linux kernel
* under various kernel debuggers.
diff --git a/arch/sparc/include/asm/kdebug_64.h b/arch/sparc/include/asm/kdebug_64.h
index 867286bf7b1a..89428bd4f94b 100644
--- a/arch/sparc/include/asm/kdebug_64.h
+++ b/arch/sparc/include/asm/kdebug_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_KDEBUG_H
#define _SPARC64_KDEBUG_H
diff --git a/arch/sparc/include/asm/kgdb.h b/arch/sparc/include/asm/kgdb.h
index a6ad7bf84bac..deabe0279cd9 100644
--- a/arch/sparc/include/asm/kgdb.h
+++ b/arch/sparc/include/asm/kgdb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_KGDB_H
#define _SPARC_KGDB_H
diff --git a/arch/sparc/include/asm/kmap_types.h b/arch/sparc/include/asm/kmap_types.h
index aad21745fbb9..55a99b6bd91e 100644
--- a/arch/sparc/include/asm/kmap_types.h
+++ b/arch/sparc/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_KMAP_TYPES_H
#define _ASM_KMAP_TYPES_H
diff --git a/arch/sparc/include/asm/kprobes.h b/arch/sparc/include/asm/kprobes.h
index 49f8402035d7..3704490b4488 100644
--- a/arch/sparc/include/asm/kprobes.h
+++ b/arch/sparc/include/asm/kprobes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_KPROBES_H
#define _SPARC64_KPROBES_H
diff --git a/arch/sparc/include/asm/ldc.h b/arch/sparc/include/asm/ldc.h
index 698738a10414..ca973955ca86 100644
--- a/arch/sparc/include/asm/ldc.h
+++ b/arch/sparc/include/asm/ldc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_LDC_H
#define _SPARC64_LDC_H
diff --git a/arch/sparc/include/asm/leon.h b/arch/sparc/include/asm/leon.h
index 204771cd74a5..c68bb5b76e3d 100644
--- a/arch/sparc/include/asm/leon.h
+++ b/arch/sparc/include/asm/leon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2004 Konrad Eisele (eiselekd@web.de,konrad@gaisler.com) Gaisler Research
* Copyright (C) 2004 Stefan Holst (mail@s-holst.de) Uni-Stuttgart
diff --git a/arch/sparc/include/asm/leon_amba.h b/arch/sparc/include/asm/leon_amba.h
index 24ec48c3ff90..6433a93f5126 100644
--- a/arch/sparc/include/asm/leon_amba.h
+++ b/arch/sparc/include/asm/leon_amba.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*Copyright (C) 2004 Konrad Eisele (eiselekd@web.de,konrad@gaisler.com), Gaisler Research
*Copyright (C) 2004 Stefan Holst (mail@s-holst.de), Uni-Stuttgart
diff --git a/arch/sparc/include/asm/leon_pci.h b/arch/sparc/include/asm/leon_pci.h
index 049d067ed8be..484a56e81dcc 100644
--- a/arch/sparc/include/asm/leon_pci.h
+++ b/arch/sparc/include/asm/leon_pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* asm/leon_pci.h
*
diff --git a/arch/sparc/include/asm/lsu.h b/arch/sparc/include/asm/lsu.h
index 7190f8de90a0..154ae76c0244 100644
--- a/arch/sparc/include/asm/lsu.h
+++ b/arch/sparc/include/asm/lsu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_LSU_H
#define _SPARC64_LSU_H
diff --git a/arch/sparc/include/asm/machines.h b/arch/sparc/include/asm/machines.h
index fd6ddb05d1b7..9f78f70c6f11 100644
--- a/arch/sparc/include/asm/machines.h
+++ b/arch/sparc/include/asm/machines.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* machines.h: Defines for taking apart the machine type value in the
* idprom and determining the kind of machine we are on.
diff --git a/arch/sparc/include/asm/mbus.h b/arch/sparc/include/asm/mbus.h
index 14128bcc5821..8b6dbe701b9b 100644
--- a/arch/sparc/include/asm/mbus.h
+++ b/arch/sparc/include/asm/mbus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* mbus.h: Various defines for MBUS modules.
*
diff --git a/arch/sparc/include/asm/mc146818rtc.h b/arch/sparc/include/asm/mc146818rtc.h
index d8e72f37dc4b..07faf754eb71 100644
--- a/arch/sparc/include/asm/mc146818rtc.h
+++ b/arch/sparc/include/asm/mc146818rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_MC146818RTC_H
#define ___ASM_SPARC_MC146818RTC_H
diff --git a/arch/sparc/include/asm/mc146818rtc_32.h b/arch/sparc/include/asm/mc146818rtc_32.h
index fa7eac926582..d8fd75da8d49 100644
--- a/arch/sparc/include/asm/mc146818rtc_32.h
+++ b/arch/sparc/include/asm/mc146818rtc_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine dependent access functions for RTC registers.
*/
diff --git a/arch/sparc/include/asm/mc146818rtc_64.h b/arch/sparc/include/asm/mc146818rtc_64.h
index 7238d174e0e3..b1708a7e5735 100644
--- a/arch/sparc/include/asm/mc146818rtc_64.h
+++ b/arch/sparc/include/asm/mc146818rtc_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine dependent access functions for RTC registers.
*/
diff --git a/arch/sparc/include/asm/mdesc.h b/arch/sparc/include/asm/mdesc.h
index e8a4c413a1c7..ec31a06d04cc 100644
--- a/arch/sparc/include/asm/mdesc.h
+++ b/arch/sparc/include/asm/mdesc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_MDESC_H
#define _SPARC64_MDESC_H
diff --git a/arch/sparc/include/asm/memctrl.h b/arch/sparc/include/asm/memctrl.h
index 4065c56af7b6..6790ed608cbc 100644
--- a/arch/sparc/include/asm/memctrl.h
+++ b/arch/sparc/include/asm/memctrl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_MEMCTRL_H
#define _SPARC_MEMCTRL_H
diff --git a/arch/sparc/include/asm/mman.h b/arch/sparc/include/asm/mman.h
index 59bb5938d852..7e9472143f9b 100644
--- a/arch/sparc/include/asm/mman.h
+++ b/arch/sparc/include/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_MMAN_H__
#define __SPARC_MMAN_H__
diff --git a/arch/sparc/include/asm/mmu.h b/arch/sparc/include/asm/mmu.h
index 88fa313887db..286457e589a6 100644
--- a/arch/sparc/include/asm/mmu.h
+++ b/arch/sparc/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_MMU_H
#define ___ASM_SPARC_MMU_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/mmu_32.h b/arch/sparc/include/asm/mmu_32.h
index 6f056e535cf8..d5b220ca7f40 100644
--- a/arch/sparc/include/asm/mmu_32.h
+++ b/arch/sparc/include/asm/mmu_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MMU_H
#define __MMU_H
diff --git a/arch/sparc/include/asm/mmu_64.h b/arch/sparc/include/asm/mmu_64.h
index 83b36a5371ff..5fe64a57b4ba 100644
--- a/arch/sparc/include/asm/mmu_64.h
+++ b/arch/sparc/include/asm/mmu_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MMU_H
#define __MMU_H
diff --git a/arch/sparc/include/asm/mmu_context.h b/arch/sparc/include/asm/mmu_context.h
index 5531346c64f9..5e1ea38511f4 100644
--- a/arch/sparc/include/asm/mmu_context.h
+++ b/arch/sparc/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_MMU_CONTEXT_H
#define ___ASM_SPARC_MMU_CONTEXT_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/mmu_context_32.h b/arch/sparc/include/asm/mmu_context_32.h
index 2df2a9be8f6d..7ddcb8badf70 100644
--- a/arch/sparc/include/asm/mmu_context_32.h
+++ b/arch/sparc/include/asm/mmu_context_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_MMU_CONTEXT_H
#define __SPARC_MMU_CONTEXT_H
diff --git a/arch/sparc/include/asm/mmu_context_64.h b/arch/sparc/include/asm/mmu_context_64.h
index 87841d687f8d..e25d25b0a34b 100644
--- a/arch/sparc/include/asm/mmu_context_64.h
+++ b/arch/sparc/include/asm/mmu_context_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC64_MMU_CONTEXT_H
#define __SPARC64_MMU_CONTEXT_H
diff --git a/arch/sparc/include/asm/mmzone.h b/arch/sparc/include/asm/mmzone.h
index 99d9b9f577bf..6543fb97a849 100644
--- a/arch/sparc/include/asm/mmzone.h
+++ b/arch/sparc/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_MMZONE_H
#define _SPARC64_MMZONE_H
diff --git a/arch/sparc/include/asm/msi.h b/arch/sparc/include/asm/msi.h
index 724ca5667052..3c17c1074431 100644
--- a/arch/sparc/include/asm/msi.h
+++ b/arch/sparc/include/asm/msi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* msi.h: Defines specific to the MBus - Sbus - Interface.
*
diff --git a/arch/sparc/include/asm/mxcc.h b/arch/sparc/include/asm/mxcc.h
index c0517bd05bde..3a2561bea4dd 100644
--- a/arch/sparc/include/asm/mxcc.h
+++ b/arch/sparc/include/asm/mxcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* mxcc.h: Definitions of the Viking MXCC registers
*
diff --git a/arch/sparc/include/asm/nmi.h b/arch/sparc/include/asm/nmi.h
index 284eac3ffaf2..90ee7863d9fe 100644
--- a/arch/sparc/include/asm/nmi.h
+++ b/arch/sparc/include/asm/nmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NMI_H
#define __NMI_H
diff --git a/arch/sparc/include/asm/ns87303.h b/arch/sparc/include/asm/ns87303.h
index 6b947ee0f6aa..5401894a6065 100644
--- a/arch/sparc/include/asm/ns87303.h
+++ b/arch/sparc/include/asm/ns87303.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ns87303.h: Configuration Register Description for the
* National Semiconductor PC87303 (SuperIO).
*
diff --git a/arch/sparc/include/asm/obio.h b/arch/sparc/include/asm/obio.h
index 426ad75103fb..1b151f738b00 100644
--- a/arch/sparc/include/asm/obio.h
+++ b/arch/sparc/include/asm/obio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* obio.h: Some useful locations in 0xFXXXXXXXX PA obio space on sun4d.
*
diff --git a/arch/sparc/include/asm/openprom.h b/arch/sparc/include/asm/openprom.h
index 63374c4413a8..69545b3e5454 100644
--- a/arch/sparc/include/asm/openprom.h
+++ b/arch/sparc/include/asm/openprom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_OPENPROM_H
#define __SPARC_OPENPROM_H
diff --git a/arch/sparc/include/asm/oplib.h b/arch/sparc/include/asm/oplib.h
index 72e04e13a6b4..df49a7700d73 100644
--- a/arch/sparc/include/asm/oplib.h
+++ b/arch/sparc/include/asm/oplib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_OPLIB_H
#define ___ASM_SPARC_OPLIB_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/oplib_32.h b/arch/sparc/include/asm/oplib_32.h
index 56a09b9d7b1b..d1cf3a27a40d 100644
--- a/arch/sparc/include/asm/oplib_32.h
+++ b/arch/sparc/include/asm/oplib_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* oplib.h: Describes the interface and available routines in the
* Linux Prom library.
diff --git a/arch/sparc/include/asm/oplib_64.h b/arch/sparc/include/asm/oplib_64.h
index 2e3a4add8591..a67abebd4359 100644
--- a/arch/sparc/include/asm/oplib_64.h
+++ b/arch/sparc/include/asm/oplib_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* oplib.h: Describes the interface and available routines in the
* Linux Prom library.
*
diff --git a/arch/sparc/include/asm/page.h b/arch/sparc/include/asm/page.h
index 1be2fdec6268..5e44cdf2a8f2 100644
--- a/arch/sparc/include/asm/page.h
+++ b/arch/sparc/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_PAGE_H
#define ___ASM_SPARC_PAGE_H
diff --git a/arch/sparc/include/asm/page_32.h b/arch/sparc/include/asm/page_32.h
index 6249214148c2..b76d59edec8c 100644
--- a/arch/sparc/include/asm/page_32.h
+++ b/arch/sparc/include/asm/page_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* page.h: Various defines and such for MMU operations on the Sparc for
* the Linux kernel.
diff --git a/arch/sparc/include/asm/page_64.h b/arch/sparc/include/asm/page_64.h
index 8ee1f97589a1..c28379b1b0fc 100644
--- a/arch/sparc/include/asm/page_64.h
+++ b/arch/sparc/include/asm/page_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_PAGE_H
#define _SPARC64_PAGE_H
diff --git a/arch/sparc/include/asm/parport.h b/arch/sparc/include/asm/parport.h
index f005ccac91cc..05df5f043053 100644
--- a/arch/sparc/include/asm/parport.h
+++ b/arch/sparc/include/asm/parport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* parport.h: sparc64 specific parport initialization and dma.
*
* Copyright (C) 1999 Eddie C. Dost (ecd@skynet.be)
diff --git a/arch/sparc/include/asm/pbm.h b/arch/sparc/include/asm/pbm.h
index 458a4916d14d..0c86261721e7 100644
--- a/arch/sparc/include/asm/pbm.h
+++ b/arch/sparc/include/asm/pbm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* pbm.h: PCI bus module pseudo driver software state
diff --git a/arch/sparc/include/asm/pci.h b/arch/sparc/include/asm/pci.h
index 6e14fd179335..cad79a6ce0e4 100644
--- a/arch/sparc/include/asm/pci.h
+++ b/arch/sparc/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_PCI_H
#define ___ASM_SPARC_PCI_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/pci_32.h b/arch/sparc/include/asm/pci_32.h
index b7c092df3134..fe361d3d180d 100644
--- a/arch/sparc/include/asm/pci_32.h
+++ b/arch/sparc/include/asm/pci_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_PCI_H
#define __SPARC_PCI_H
diff --git a/arch/sparc/include/asm/pci_64.h b/arch/sparc/include/asm/pci_64.h
index b957ca5527a3..671274e36cfa 100644
--- a/arch/sparc/include/asm/pci_64.h
+++ b/arch/sparc/include/asm/pci_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC64_PCI_H
#define __SPARC64_PCI_H
diff --git a/arch/sparc/include/asm/pcic.h b/arch/sparc/include/asm/pcic.h
index f41706792592..238376b1ffcc 100644
--- a/arch/sparc/include/asm/pcic.h
+++ b/arch/sparc/include/asm/pcic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* pcic.h: JavaEngine 1 specific PCI definitions.
*
diff --git a/arch/sparc/include/asm/pcr.h b/arch/sparc/include/asm/pcr.h
index cdf800c3326c..da834ffbe75d 100644
--- a/arch/sparc/include/asm/pcr.h
+++ b/arch/sparc/include/asm/pcr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PCR_H
#define __PCR_H
diff --git a/arch/sparc/include/asm/percpu.h b/arch/sparc/include/asm/percpu.h
index bfb1d19ff1bf..0cd704ef5ff9 100644
--- a/arch/sparc/include/asm/percpu.h
+++ b/arch/sparc/include/asm/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_PERCPU_H
#define ___ASM_SPARC_PERCPU_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/percpu_32.h b/arch/sparc/include/asm/percpu_32.h
index 06066a7aaec3..ee6c7c1934f6 100644
--- a/arch/sparc/include/asm/percpu_32.h
+++ b/arch/sparc/include/asm/percpu_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_SPARC_PERCPU__
#define __ARCH_SPARC_PERCPU__
diff --git a/arch/sparc/include/asm/percpu_64.h b/arch/sparc/include/asm/percpu_64.h
index 007aafb4ae97..32ef6f05cc56 100644
--- a/arch/sparc/include/asm/percpu_64.h
+++ b/arch/sparc/include/asm/percpu_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_SPARC64_PERCPU__
#define __ARCH_SPARC64_PERCPU__
diff --git a/arch/sparc/include/asm/perf_event.h b/arch/sparc/include/asm/perf_event.h
index 4d3dbe3703e9..c2aec0c7f4f5 100644
--- a/arch/sparc/include/asm/perf_event.h
+++ b/arch/sparc/include/asm/perf_event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPARC_PERF_EVENT_H
#define __ASM_SPARC_PERF_EVENT_H
diff --git a/arch/sparc/include/asm/pgalloc.h b/arch/sparc/include/asm/pgalloc.h
index b6db1f7cdcab..9ea0b37586c9 100644
--- a/arch/sparc/include/asm/pgalloc.h
+++ b/arch/sparc/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_PGALLOC_H
#define ___ASM_SPARC_PGALLOC_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/pgalloc_32.h b/arch/sparc/include/asm/pgalloc_32.h
index 0346c7e62452..90459481c6c7 100644
--- a/arch/sparc/include/asm/pgalloc_32.h
+++ b/arch/sparc/include/asm/pgalloc_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_PGALLOC_H
#define _SPARC_PGALLOC_H
diff --git a/arch/sparc/include/asm/pgalloc_64.h b/arch/sparc/include/asm/pgalloc_64.h
index 3529f1378cd8..874632f34f62 100644
--- a/arch/sparc/include/asm/pgalloc_64.h
+++ b/arch/sparc/include/asm/pgalloc_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_PGALLOC_H
#define _SPARC64_PGALLOC_H
diff --git a/arch/sparc/include/asm/pgtable.h b/arch/sparc/include/asm/pgtable.h
index 59ba6f620732..e48891170f84 100644
--- a/arch/sparc/include/asm/pgtable.h
+++ b/arch/sparc/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_PGTABLE_H
#define ___ASM_SPARC_PGTABLE_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h
index cf190728360b..4eebed6c6781 100644
--- a/arch/sparc/include/asm/pgtable_32.h
+++ b/arch/sparc/include/asm/pgtable_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_PGTABLE_H
#define _SPARC_PGTABLE_H
diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h
index 4fefe3762083..fd9d9bac7cfa 100644
--- a/arch/sparc/include/asm/pgtable_64.h
+++ b/arch/sparc/include/asm/pgtable_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* pgtable.h: SpitFire page table operations.
*
diff --git a/arch/sparc/include/asm/pgtsrmmu.h b/arch/sparc/include/asm/pgtsrmmu.h
index ae51a111a8c7..32a508897501 100644
--- a/arch/sparc/include/asm/pgtsrmmu.h
+++ b/arch/sparc/include/asm/pgtsrmmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* pgtsrmmu.h: SRMMU page table defines and code.
*
diff --git a/arch/sparc/include/asm/pil.h b/arch/sparc/include/asm/pil.h
index 522b43db2ed3..4003c35304bd 100644
--- a/arch/sparc/include/asm/pil.h
+++ b/arch/sparc/include/asm/pil.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_PIL_H
#define _SPARC64_PIL_H
diff --git a/arch/sparc/include/asm/processor.h b/arch/sparc/include/asm/processor.h
index 9da9646bf6c6..18295ea625dd 100644
--- a/arch/sparc/include/asm/processor.h
+++ b/arch/sparc/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_PROCESSOR_H
#define ___ASM_SPARC_PROCESSOR_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/processor_32.h b/arch/sparc/include/asm/processor_32.h
index b395e5620c0b..192493c257fa 100644
--- a/arch/sparc/include/asm/processor_32.h
+++ b/arch/sparc/include/asm/processor_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* include/asm/processor.h
*
* Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h
index f04dc5a43062..c7c79fe8d265 100644
--- a/arch/sparc/include/asm/processor_64.h
+++ b/arch/sparc/include/asm/processor_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm/processor.h
*
diff --git a/arch/sparc/include/asm/psr.h b/arch/sparc/include/asm/psr.h
index e71eb57945e0..65127ce565ab 100644
--- a/arch/sparc/include/asm/psr.h
+++ b/arch/sparc/include/asm/psr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* psr.h: This file holds the macros for masking off various parts of
* the processor status register on the Sparc. This is valid
diff --git a/arch/sparc/include/asm/ptrace.h b/arch/sparc/include/asm/ptrace.h
index d73428e4333c..6a339a78f4f4 100644
--- a/arch/sparc/include/asm/ptrace.h
+++ b/arch/sparc/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_PTRACE_H
#define __SPARC_PTRACE_H
diff --git a/arch/sparc/include/asm/qrwlock.h b/arch/sparc/include/asm/qrwlock.h
index d68a4b102100..c277729152c6 100644
--- a/arch/sparc/include/asm/qrwlock.h
+++ b/arch/sparc/include/asm/qrwlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC_QRWLOCK_H
#define _ASM_SPARC_QRWLOCK_H
diff --git a/arch/sparc/include/asm/qspinlock.h b/arch/sparc/include/asm/qspinlock.h
index 5ae9a2802846..48808f3d9dd7 100644
--- a/arch/sparc/include/asm/qspinlock.h
+++ b/arch/sparc/include/asm/qspinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC_QSPINLOCK_H
#define _ASM_SPARC_QSPINLOCK_H
diff --git a/arch/sparc/include/asm/ross.h b/arch/sparc/include/asm/ross.h
index ecb6e81786a6..79a54d66a2c0 100644
--- a/arch/sparc/include/asm/ross.h
+++ b/arch/sparc/include/asm/ross.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ross.h: Ross module specific definitions and defines.
*
diff --git a/arch/sparc/include/asm/sbi.h b/arch/sparc/include/asm/sbi.h
index 5eb7f1965d33..4d6026c1e446 100644
--- a/arch/sparc/include/asm/sbi.h
+++ b/arch/sparc/include/asm/sbi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* sbi.h: SBI (Sbus Interface on sun4d) definitions
*
diff --git a/arch/sparc/include/asm/scratchpad.h b/arch/sparc/include/asm/scratchpad.h
index 5e8b01fb3343..958351190788 100644
--- a/arch/sparc/include/asm/scratchpad.h
+++ b/arch/sparc/include/asm/scratchpad.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_SCRATCHPAD_H
#define _SPARC64_SCRATCHPAD_H
diff --git a/arch/sparc/include/asm/seccomp.h b/arch/sparc/include/asm/seccomp.h
index 5ef8826d44f8..62d4579efb1a 100644
--- a/arch/sparc/include/asm/seccomp.h
+++ b/arch/sparc/include/asm/seccomp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SECCOMP_H
#define _ASM_SECCOMP_H
diff --git a/arch/sparc/include/asm/sections.h b/arch/sparc/include/asm/sections.h
index f300d1a9b2b6..08f833453ab3 100644
--- a/arch/sparc/include/asm/sections.h
+++ b/arch/sparc/include/asm/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_SECTIONS_H
#define __SPARC_SECTIONS_H
diff --git a/arch/sparc/include/asm/setup.h b/arch/sparc/include/asm/setup.h
index 8b32538084f7..72205684e51e 100644
--- a/arch/sparc/include/asm/setup.h
+++ b/arch/sparc/include/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Just a place holder.
*/
diff --git a/arch/sparc/include/asm/sfafsr.h b/arch/sparc/include/asm/sfafsr.h
index e96137b04a4f..9c98f4fc8839 100644
--- a/arch/sparc/include/asm/sfafsr.h
+++ b/arch/sparc/include/asm/sfafsr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_SFAFSR_H
#define _SPARC64_SFAFSR_H
diff --git a/arch/sparc/include/asm/sfp-machine.h b/arch/sparc/include/asm/sfp-machine.h
index 4ebc3823ed4f..4a247b40573c 100644
--- a/arch/sparc/include/asm/sfp-machine.h
+++ b/arch/sparc/include/asm/sfp-machine.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_SFP_MACHINE_H
#define ___ASM_SPARC_SFP_MACHINE_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/shmparam.h b/arch/sparc/include/asm/shmparam.h
index 8bf0cfe0694f..951a4525fa4b 100644
--- a/arch/sparc/include/asm/shmparam.h
+++ b/arch/sparc/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_SHMPARAM_H
#define ___ASM_SPARC_SHMPARAM_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/shmparam_32.h b/arch/sparc/include/asm/shmparam_32.h
index 142825c8d3ac..9767a8b30242 100644
--- a/arch/sparc/include/asm/shmparam_32.h
+++ b/arch/sparc/include/asm/shmparam_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMSPARC_SHMPARAM_H
#define _ASMSPARC_SHMPARAM_H
diff --git a/arch/sparc/include/asm/shmparam_64.h b/arch/sparc/include/asm/shmparam_64.h
index 1ed0d6701a9b..c0731b57124c 100644
--- a/arch/sparc/include/asm/shmparam_64.h
+++ b/arch/sparc/include/asm/shmparam_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASMSPARC64_SHMPARAM_H
#define _ASMSPARC64_SHMPARAM_H
diff --git a/arch/sparc/include/asm/sigcontext.h b/arch/sparc/include/asm/sigcontext.h
index f4eb630a58ed..ee05f9d2bcf2 100644
--- a/arch/sparc/include/asm/sigcontext.h
+++ b/arch/sparc/include/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_SIGCONTEXT_H
#define __SPARC_SIGCONTEXT_H
diff --git a/arch/sparc/include/asm/signal.h b/arch/sparc/include/asm/signal.h
index c33ce3f2ba84..827b73a97f8a 100644
--- a/arch/sparc/include/asm/signal.h
+++ b/arch/sparc/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_SIGNAL_H
#define __SPARC_SIGNAL_H
diff --git a/arch/sparc/include/asm/smp.h b/arch/sparc/include/asm/smp.h
index b59672d0e19b..dea59f6ce79f 100644
--- a/arch/sparc/include/asm/smp.h
+++ b/arch/sparc/include/asm/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_SMP_H
#define ___ASM_SPARC_SMP_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/smp_32.h b/arch/sparc/include/asm/smp_32.h
index 7c24e08a88d2..856081761b0f 100644
--- a/arch/sparc/include/asm/smp_32.h
+++ b/arch/sparc/include/asm/smp_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* smp.h: Sparc specific SMP stuff.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc/include/asm/smp_64.h b/arch/sparc/include/asm/smp_64.h
index a75089285db8..e75783b6abc4 100644
--- a/arch/sparc/include/asm/smp_64.h
+++ b/arch/sparc/include/asm/smp_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* smp.h: Sparc64 specific SMP stuff.
*
* Copyright (C) 1996, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/sparsemem.h b/arch/sparc/include/asm/sparsemem.h
index e5e1752d5d78..1dd1b61432db 100644
--- a/arch/sparc/include/asm/sparsemem.h
+++ b/arch/sparc/include/asm/sparsemem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_SPARSEMEM_H
#define _SPARC64_SPARSEMEM_H
diff --git a/arch/sparc/include/asm/spinlock.h b/arch/sparc/include/asm/spinlock.h
index f276b0036b2c..3f4ce55bc4d6 100644
--- a/arch/sparc/include/asm/spinlock.h
+++ b/arch/sparc/include/asm/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_SPINLOCK_H
#define ___ASM_SPARC_SPINLOCK_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/spinlock_32.h b/arch/sparc/include/asm/spinlock_32.h
index 67345b2dc408..26f00ac2b470 100644
--- a/arch/sparc/include/asm/spinlock_32.h
+++ b/arch/sparc/include/asm/spinlock_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* spinlock.h: 32-bit Sparc spinlock support.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc/include/asm/spinlock_64.h b/arch/sparc/include/asm/spinlock_64.h
index f7028f5e1a5a..4822a7e94a30 100644
--- a/arch/sparc/include/asm/spinlock_64.h
+++ b/arch/sparc/include/asm/spinlock_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* spinlock.h: 64-bit Sparc spinlock support.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc/include/asm/spinlock_types.h b/arch/sparc/include/asm/spinlock_types.h
index bce8ef44dfa9..ed1d569b638e 100644
--- a/arch/sparc/include/asm/spinlock_types.h
+++ b/arch/sparc/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_SPINLOCK_TYPES_H
#define __SPARC_SPINLOCK_TYPES_H
diff --git a/arch/sparc/include/asm/spitfire.h b/arch/sparc/include/asm/spitfire.h
index 1b1286d05069..e9b7d25b29fa 100644
--- a/arch/sparc/include/asm/spitfire.h
+++ b/arch/sparc/include/asm/spitfire.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* spitfire.h: SpitFire/BlackBird/Cheetah inline MMU operations.
*
* Copyright (C) 1996 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/stacktrace.h b/arch/sparc/include/asm/stacktrace.h
index c30d066f3048..556ec5d59c88 100644
--- a/arch/sparc/include/asm/stacktrace.h
+++ b/arch/sparc/include/asm/stacktrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_STACKTRACE_H
#define _SPARC64_STACKTRACE_H
diff --git a/arch/sparc/include/asm/starfire.h b/arch/sparc/include/asm/starfire.h
index 176fa0ad19f1..fb1a8c499cb0 100644
--- a/arch/sparc/include/asm/starfire.h
+++ b/arch/sparc/include/asm/starfire.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* starfire.h: Group all starfire specific code together.
*
diff --git a/arch/sparc/include/asm/string.h b/arch/sparc/include/asm/string.h
index 86f34be14ce0..3d9cd082716b 100644
--- a/arch/sparc/include/asm/string.h
+++ b/arch/sparc/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_STRING_H
#define ___ASM_SPARC_STRING_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/string_32.h b/arch/sparc/include/asm/string_32.h
index 649412476a69..f488946bd7d6 100644
--- a/arch/sparc/include/asm/string_32.h
+++ b/arch/sparc/include/asm/string_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* string.h: External definitions for optimized assembly string
* routines for the Linux Kernel.
diff --git a/arch/sparc/include/asm/string_64.h b/arch/sparc/include/asm/string_64.h
index 6b9ccb308605..ee9ba67321bd 100644
--- a/arch/sparc/include/asm/string_64.h
+++ b/arch/sparc/include/asm/string_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* string.h: External definitions for optimized assembly string
* routines for the Linux Kernel.
diff --git a/arch/sparc/include/asm/sunbpp.h b/arch/sparc/include/asm/sunbpp.h
index d81a02eaf78b..55de4da70dff 100644
--- a/arch/sparc/include/asm/sunbpp.h
+++ b/arch/sparc/include/asm/sunbpp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/asm/sunbpp.h
*/
diff --git a/arch/sparc/include/asm/swift.h b/arch/sparc/include/asm/swift.h
index e535061bf755..96f6526b964e 100644
--- a/arch/sparc/include/asm/swift.h
+++ b/arch/sparc/include/asm/swift.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* swift.h: Specific definitions for the _broken_ Swift SRMMU
* MMU module.
*
diff --git a/arch/sparc/include/asm/switch_to.h b/arch/sparc/include/asm/switch_to.h
index 2dc4fa5c6f8c..7cf1c5dc734c 100644
--- a/arch/sparc/include/asm/switch_to.h
+++ b/arch/sparc/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_SWITCH_TO_H
#define ___ASM_SPARC_SWITCH_TO_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/switch_to_32.h b/arch/sparc/include/asm/switch_to_32.h
index 475dd4158ae4..42eeafcb8a41 100644
--- a/arch/sparc/include/asm/switch_to_32.h
+++ b/arch/sparc/include/asm/switch_to_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_SWITCH_TO_H
#define __SPARC_SWITCH_TO_H
diff --git a/arch/sparc/include/asm/switch_to_64.h b/arch/sparc/include/asm/switch_to_64.h
index 10e76332dc99..4ff29b1406a9 100644
--- a/arch/sparc/include/asm/switch_to_64.h
+++ b/arch/sparc/include/asm/switch_to_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC64_SWITCH_TO_64_H
#define __SPARC64_SWITCH_TO_64_H
diff --git a/arch/sparc/include/asm/syscall.h b/arch/sparc/include/asm/syscall.h
index 1757cd6c521b..053989e3f6a6 100644
--- a/arch/sparc/include/asm/syscall.h
+++ b/arch/sparc/include/asm/syscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPARC_SYSCALL_H
#define __ASM_SPARC_SYSCALL_H
diff --git a/arch/sparc/include/asm/syscalls.h b/arch/sparc/include/asm/syscalls.h
index b0a0db8ea61a..1d819f5e21da 100644
--- a/arch/sparc/include/asm/syscalls.h
+++ b/arch/sparc/include/asm/syscalls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_SYSCALLS_H
#define _SPARC64_SYSCALLS_H
diff --git a/arch/sparc/include/asm/termbits.h b/arch/sparc/include/asm/termbits.h
index 948067065ac5..fa9de4a46d36 100644
--- a/arch/sparc/include/asm/termbits.h
+++ b/arch/sparc/include/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_TERMBITS_H
#define _SPARC_TERMBITS_H
diff --git a/arch/sparc/include/asm/termios.h b/arch/sparc/include/asm/termios.h
index 0c2414ddd52c..4a558efdfa93 100644
--- a/arch/sparc/include/asm/termios.h
+++ b/arch/sparc/include/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_TERMIOS_H
#define _SPARC_TERMIOS_H
diff --git a/arch/sparc/include/asm/thread_info.h b/arch/sparc/include/asm/thread_info.h
index 122d7acc07e6..740b1743ed8c 100644
--- a/arch/sparc/include/asm/thread_info.h
+++ b/arch/sparc/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_THREAD_INFO_H
#define ___ASM_SPARC_THREAD_INFO_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/thread_info_32.h b/arch/sparc/include/asm/thread_info_32.h
index 229475f0d7ce..febaaeb1a0fe 100644
--- a/arch/sparc/include/asm/thread_info_32.h
+++ b/arch/sparc/include/asm/thread_info_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* thread_info.h: sparc low-level thread information
* adapted from the ppc version by Pete Zaitcev, which was
diff --git a/arch/sparc/include/asm/thread_info_64.h b/arch/sparc/include/asm/thread_info_64.h
index 38a24f257b85..caf915321ba9 100644
--- a/arch/sparc/include/asm/thread_info_64.h
+++ b/arch/sparc/include/asm/thread_info_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* thread_info.h: sparc64 low-level thread information
*
* Copyright (C) 2002 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/include/asm/timer.h b/arch/sparc/include/asm/timer.h
index 612fd2779d9e..eaf6195d17e2 100644
--- a/arch/sparc/include/asm/timer.h
+++ b/arch/sparc/include/asm/timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_TIMER_H
#define ___ASM_SPARC_TIMER_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/timer_32.h b/arch/sparc/include/asm/timer_32.h
index f8e708a0aa58..eecd2696922d 100644
--- a/arch/sparc/include/asm/timer_32.h
+++ b/arch/sparc/include/asm/timer_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* timer.h: Definitions for the timer chips on the Sparc.
*
diff --git a/arch/sparc/include/asm/timer_64.h b/arch/sparc/include/asm/timer_64.h
index 51bc3bc54bfe..c7e4fb601a57 100644
--- a/arch/sparc/include/asm/timer_64.h
+++ b/arch/sparc/include/asm/timer_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* timer.h: System timer definitions for sun5.
*
* Copyright (C) 1997, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/include/asm/timex.h b/arch/sparc/include/asm/timex.h
index 70cc37b73827..9aac26b1f45f 100644
--- a/arch/sparc/include/asm/timex.h
+++ b/arch/sparc/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_TIMEX_H
#define ___ASM_SPARC_TIMEX_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/timex_32.h b/arch/sparc/include/asm/timex_32.h
index b6ccdb0d6f7d..542915b46209 100644
--- a/arch/sparc/include/asm/timex_32.h
+++ b/arch/sparc/include/asm/timex_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm/timex.h
*
diff --git a/arch/sparc/include/asm/timex_64.h b/arch/sparc/include/asm/timex_64.h
index 18b30bc9823b..076c44f6845d 100644
--- a/arch/sparc/include/asm/timex_64.h
+++ b/arch/sparc/include/asm/timex_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm/timex.h
*
diff --git a/arch/sparc/include/asm/tlb.h b/arch/sparc/include/asm/tlb.h
index 92d0393bbcdc..7146a577257f 100644
--- a/arch/sparc/include/asm/tlb.h
+++ b/arch/sparc/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_TLB_H
#define ___ASM_SPARC_TLB_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/tlb_32.h b/arch/sparc/include/asm/tlb_32.h
index 6d02d1ce53f3..343cea19e573 100644
--- a/arch/sparc/include/asm/tlb_32.h
+++ b/arch/sparc/include/asm/tlb_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_TLB_H
#define _SPARC_TLB_H
diff --git a/arch/sparc/include/asm/tlb_64.h b/arch/sparc/include/asm/tlb_64.h
index 4cb392f75d2b..a2f3fa61ee36 100644
--- a/arch/sparc/include/asm/tlb_64.h
+++ b/arch/sparc/include/asm/tlb_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_TLB_H
#define _SPARC64_TLB_H
diff --git a/arch/sparc/include/asm/tlbflush.h b/arch/sparc/include/asm/tlbflush.h
index 2c9629fad1e2..30ae3ea21054 100644
--- a/arch/sparc/include/asm/tlbflush.h
+++ b/arch/sparc/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_TLBFLUSH_H
#define ___ASM_SPARC_TLBFLUSH_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/tlbflush_32.h b/arch/sparc/include/asm/tlbflush_32.h
index a5c4142130f5..470531991a08 100644
--- a/arch/sparc/include/asm/tlbflush_32.h
+++ b/arch/sparc/include/asm/tlbflush_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_TLBFLUSH_H
#define _SPARC_TLBFLUSH_H
diff --git a/arch/sparc/include/asm/tlbflush_64.h b/arch/sparc/include/asm/tlbflush_64.h
index 54be88a6774c..8b8cdaa69272 100644
--- a/arch/sparc/include/asm/tlbflush_64.h
+++ b/arch/sparc/include/asm/tlbflush_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_TLBFLUSH_H
#define _SPARC64_TLBFLUSH_H
diff --git a/arch/sparc/include/asm/topology.h b/arch/sparc/include/asm/topology.h
index ee4f191d394a..ba7b9d9d91cf 100644
--- a/arch/sparc/include/asm/topology.h
+++ b/arch/sparc/include/asm/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_TOPOLOGY_H
#define ___ASM_SPARC_TOPOLOGY_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/topology_32.h b/arch/sparc/include/asm/topology_32.h
index ee5ac9c9da28..66c4f9ff700d 100644
--- a/arch/sparc/include/asm/topology_32.h
+++ b/arch/sparc/include/asm/topology_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC_TOPOLOGY_H
#define _ASM_SPARC_TOPOLOGY_H
diff --git a/arch/sparc/include/asm/topology_64.h b/arch/sparc/include/asm/topology_64.h
index ad5293f89680..3831b1911a19 100644
--- a/arch/sparc/include/asm/topology_64.h
+++ b/arch/sparc/include/asm/topology_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC64_TOPOLOGY_H
#define _ASM_SPARC64_TOPOLOGY_H
diff --git a/arch/sparc/include/asm/trap_block.h b/arch/sparc/include/asm/trap_block.h
index dfc538609eb2..6a4c8652ad67 100644
--- a/arch/sparc/include/asm/trap_block.h
+++ b/arch/sparc/include/asm/trap_block.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_TRAP_BLOCK_H
#define _SPARC_TRAP_BLOCK_H
diff --git a/arch/sparc/include/asm/traps.h b/arch/sparc/include/asm/traps.h
index 51abcb1f9b3b..2fba2602ba69 100644
--- a/arch/sparc/include/asm/traps.h
+++ b/arch/sparc/include/asm/traps.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* traps.h: Format of entries for the Sparc trap table.
*
diff --git a/arch/sparc/include/asm/tsb.h b/arch/sparc/include/asm/tsb.h
index acf55063aa3d..25b6abdb3908 100644
--- a/arch/sparc/include/asm/tsb.h
+++ b/arch/sparc/include/asm/tsb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_TSB_H
#define _SPARC64_TSB_H
diff --git a/arch/sparc/include/asm/tsunami.h b/arch/sparc/include/asm/tsunami.h
index 5bbd1d523baa..acaf014eff46 100644
--- a/arch/sparc/include/asm/tsunami.h
+++ b/arch/sparc/include/asm/tsunami.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* tsunami.h: Module specific definitions for Tsunami V8 Sparcs
*
diff --git a/arch/sparc/include/asm/ttable.h b/arch/sparc/include/asm/ttable.h
index 82e7df296abc..ede2b66cf4a0 100644
--- a/arch/sparc/include/asm/ttable.h
+++ b/arch/sparc/include/asm/ttable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_TTABLE_H
#define _SPARC64_TTABLE_H
diff --git a/arch/sparc/include/asm/turbosparc.h b/arch/sparc/include/asm/turbosparc.h
index 17c73282db0a..23df777f9cea 100644
--- a/arch/sparc/include/asm/turbosparc.h
+++ b/arch/sparc/include/asm/turbosparc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* turbosparc.h: Defines specific to the TurboSparc module.
* This is SRMMU stuff.
diff --git a/arch/sparc/include/asm/uaccess.h b/arch/sparc/include/asm/uaccess.h
index 9e068bf9060a..dd85bc2c2cad 100644
--- a/arch/sparc/include/asm/uaccess.h
+++ b/arch/sparc/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_UACCESS_H
#define ___ASM_SPARC_UACCESS_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h
index bdb1447aa1bb..de71c65b99f0 100644
--- a/arch/sparc/include/asm/uaccess_32.h
+++ b/arch/sparc/include/asm/uaccess_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* uaccess.h: User space memore access functions.
*
diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h
index 6d4c997d1a9e..cbb308cee394 100644
--- a/arch/sparc/include/asm/uaccess_64.h
+++ b/arch/sparc/include/asm/uaccess_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_UACCESS_H
#define _ASM_UACCESS_H
diff --git a/arch/sparc/include/asm/unaligned.h b/arch/sparc/include/asm/unaligned.h
index 11d2d5fb5902..7971d89d2f54 100644
--- a/arch/sparc/include/asm/unaligned.h
+++ b/arch/sparc/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SPARC_UNALIGNED_H
#define _ASM_SPARC_UNALIGNED_H
diff --git a/arch/sparc/include/asm/unistd.h b/arch/sparc/include/asm/unistd.h
index 0aac1e8f2968..b2a6a955113e 100644
--- a/arch/sparc/include/asm/unistd.h
+++ b/arch/sparc/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* System calls under the Sparc.
*
diff --git a/arch/sparc/include/asm/upa.h b/arch/sparc/include/asm/upa.h
index 5b1633223f92..782691b30f54 100644
--- a/arch/sparc/include/asm/upa.h
+++ b/arch/sparc/include/asm/upa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_UPA_H
#define _SPARC64_UPA_H
diff --git a/arch/sparc/include/asm/vaddrs.h b/arch/sparc/include/asm/vaddrs.h
index c3dbcf902034..84d054b07a6f 100644
--- a/arch/sparc/include/asm/vaddrs.h
+++ b/arch/sparc/include/asm/vaddrs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_VADDRS_H
#define _SPARC_VADDRS_H
diff --git a/arch/sparc/include/asm/vga.h b/arch/sparc/include/asm/vga.h
index f54e8b6fb197..2952d667d936 100644
--- a/arch/sparc/include/asm/vga.h
+++ b/arch/sparc/include/asm/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Access to VGA videoram
*
diff --git a/arch/sparc/include/asm/viking.h b/arch/sparc/include/asm/viking.h
index 989930aeb093..0bbefd184221 100644
--- a/arch/sparc/include/asm/viking.h
+++ b/arch/sparc/include/asm/viking.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* viking.h: Defines specific to the GNU/Viking MBUS module.
* This is SRMMU stuff.
diff --git a/arch/sparc/include/asm/vio.h b/arch/sparc/include/asm/vio.h
index f3d4ac232690..059f0eb678e0 100644
--- a/arch/sparc/include/asm/vio.h
+++ b/arch/sparc/include/asm/vio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_VIO_H
#define _SPARC64_VIO_H
diff --git a/arch/sparc/include/asm/visasm.h b/arch/sparc/include/asm/visasm.h
index 6424249d5f78..7903e84e09e0 100644
--- a/arch/sparc/include/asm/visasm.h
+++ b/arch/sparc/include/asm/visasm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_VISASM_H
#define _SPARC64_VISASM_H
diff --git a/arch/sparc/include/asm/winmacro.h b/arch/sparc/include/asm/winmacro.h
index 9b7b21764cde..b6e911f5d93c 100644
--- a/arch/sparc/include/asm/winmacro.h
+++ b/arch/sparc/include/asm/winmacro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* winmacro.h: Window loading-unloading macros.
*
diff --git a/arch/sparc/include/asm/xor.h b/arch/sparc/include/asm/xor.h
index 8ed591c7db2d..f4c651e203c4 100644
--- a/arch/sparc/include/asm/xor.h
+++ b/arch/sparc/include/asm/xor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ___ASM_SPARC_XOR_H
#define ___ASM_SPARC_XOR_H
#if defined(__sparc__) && defined(__arch64__)
diff --git a/arch/sparc/include/uapi/asm/apc.h b/arch/sparc/include/uapi/asm/apc.h
index 24e9a7d4d97e..aeb369b87fcd 100644
--- a/arch/sparc/include/uapi/asm/apc.h
+++ b/arch/sparc/include/uapi/asm/apc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* apc - Driver definitions for power management functions
* of Aurora Personality Chip (APC) on SPARCstation-4/5 and
* derivatives
diff --git a/arch/sparc/include/uapi/asm/asi.h b/arch/sparc/include/uapi/asm/asi.h
index 7ad7203deaec..d371b269571a 100644
--- a/arch/sparc/include/uapi/asm/asi.h
+++ b/arch/sparc/include/uapi/asm/asi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC_ASI_H
#define _SPARC_ASI_H
diff --git a/arch/sparc/include/uapi/asm/bitsperlong.h b/arch/sparc/include/uapi/asm/bitsperlong.h
index 40dcaa3aaa56..cd9a432278d2 100644
--- a/arch/sparc/include/uapi/asm/bitsperlong.h
+++ b/arch/sparc/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_ALPHA_BITSPERLONG_H
#define __ASM_ALPHA_BITSPERLONG_H
diff --git a/arch/sparc/include/uapi/asm/byteorder.h b/arch/sparc/include/uapi/asm/byteorder.h
index ccc1b6b7de6c..216b8e59372f 100644
--- a/arch/sparc/include/uapi/asm/byteorder.h
+++ b/arch/sparc/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC_BYTEORDER_H
#define _SPARC_BYTEORDER_H
diff --git a/arch/sparc/include/uapi/asm/display7seg.h b/arch/sparc/include/uapi/asm/display7seg.h
index 86d4a901df24..7e9fef0c6efe 100644
--- a/arch/sparc/include/uapi/asm/display7seg.h
+++ b/arch/sparc/include/uapi/asm/display7seg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
* display7seg - Driver interface for the 7-segment display
diff --git a/arch/sparc/include/uapi/asm/envctrl.h b/arch/sparc/include/uapi/asm/envctrl.h
index 624fa7e2da8e..cf8aa0a14f40 100644
--- a/arch/sparc/include/uapi/asm/envctrl.h
+++ b/arch/sparc/include/uapi/asm/envctrl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
* envctrl.h: Definitions for access to the i2c environment
diff --git a/arch/sparc/include/uapi/asm/errno.h b/arch/sparc/include/uapi/asm/errno.h
index 20423e172853..81a732b902ee 100644
--- a/arch/sparc/include/uapi/asm/errno.h
+++ b/arch/sparc/include/uapi/asm/errno.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC_ERRNO_H
#define _SPARC_ERRNO_H
diff --git a/arch/sparc/include/uapi/asm/fbio.h b/arch/sparc/include/uapi/asm/fbio.h
index d6cea07afb61..0dafe2c1eab7 100644
--- a/arch/sparc/include/uapi/asm/fbio.h
+++ b/arch/sparc/include/uapi/asm/fbio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_FBIO_H
#define _UAPI__LINUX_FBIO_H
diff --git a/arch/sparc/include/uapi/asm/fcntl.h b/arch/sparc/include/uapi/asm/fcntl.h
index 7e8ace5bf760..67dae75e5274 100644
--- a/arch/sparc/include/uapi/asm/fcntl.h
+++ b/arch/sparc/include/uapi/asm/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC_FCNTL_H
#define _SPARC_FCNTL_H
diff --git a/arch/sparc/include/uapi/asm/ioctl.h b/arch/sparc/include/uapi/asm/ioctl.h
index 7d6bd51321b9..96c598fe746e 100644
--- a/arch/sparc/include/uapi/asm/ioctl.h
+++ b/arch/sparc/include/uapi/asm/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC_IOCTL_H
#define _SPARC_IOCTL_H
diff --git a/arch/sparc/include/uapi/asm/ioctls.h b/arch/sparc/include/uapi/asm/ioctls.h
index f5df72b93bb2..2df52711e170 100644
--- a/arch/sparc/include/uapi/asm/ioctls.h
+++ b/arch/sparc/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_SPARC_IOCTLS_H
#define _UAPI_ASM_SPARC_IOCTLS_H
diff --git a/arch/sparc/include/uapi/asm/ipcbuf.h b/arch/sparc/include/uapi/asm/ipcbuf.h
index 66013b4fe10d..9d0d125500e2 100644
--- a/arch/sparc/include/uapi/asm/ipcbuf.h
+++ b/arch/sparc/include/uapi/asm/ipcbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __SPARC_IPCBUF_H
#define __SPARC_IPCBUF_H
diff --git a/arch/sparc/include/uapi/asm/jsflash.h b/arch/sparc/include/uapi/asm/jsflash.h
index 0717d9e39d2d..68c98a54281a 100644
--- a/arch/sparc/include/uapi/asm/jsflash.h
+++ b/arch/sparc/include/uapi/asm/jsflash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* jsflash.h: OS Flash SIMM support for JavaStations.
*
diff --git a/arch/sparc/include/uapi/asm/kvm_para.h b/arch/sparc/include/uapi/asm/kvm_para.h
index 14fab8f0b957..baacc4996d18 100644
--- a/arch/sparc/include/uapi/asm/kvm_para.h
+++ b/arch/sparc/include/uapi/asm/kvm_para.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/kvm_para.h>
diff --git a/arch/sparc/include/uapi/asm/mman.h b/arch/sparc/include/uapi/asm/mman.h
index 9765896ecb2c..715a2c927e79 100644
--- a/arch/sparc/include/uapi/asm/mman.h
+++ b/arch/sparc/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__SPARC_MMAN_H__
#define _UAPI__SPARC_MMAN_H__
diff --git a/arch/sparc/include/uapi/asm/msgbuf.h b/arch/sparc/include/uapi/asm/msgbuf.h
index efc7cbe9788f..b601c4f4d956 100644
--- a/arch/sparc/include/uapi/asm/msgbuf.h
+++ b/arch/sparc/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC_MSGBUF_H
#define _SPARC_MSGBUF_H
diff --git a/arch/sparc/include/uapi/asm/openpromio.h b/arch/sparc/include/uapi/asm/openpromio.h
index 917fb8e9c633..8817f7d1a70c 100644
--- a/arch/sparc/include/uapi/asm/openpromio.h
+++ b/arch/sparc/include/uapi/asm/openpromio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC_OPENPROMIO_H
#define _SPARC_OPENPROMIO_H
diff --git a/arch/sparc/include/uapi/asm/param.h b/arch/sparc/include/uapi/asm/param.h
index 0bc356bf8c50..057d7135e4d0 100644
--- a/arch/sparc/include/uapi/asm/param.h
+++ b/arch/sparc/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASMSPARC_PARAM_H
#define _ASMSPARC_PARAM_H
diff --git a/arch/sparc/include/uapi/asm/perfctr.h b/arch/sparc/include/uapi/asm/perfctr.h
index 214feefa577c..316b837bcb8f 100644
--- a/arch/sparc/include/uapi/asm/perfctr.h
+++ b/arch/sparc/include/uapi/asm/perfctr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*----------------------------------------
PERFORMANCE INSTRUMENTATION
Guillaume Thouvenin 08/10/98
diff --git a/arch/sparc/include/uapi/asm/poll.h b/arch/sparc/include/uapi/asm/poll.h
index 091d3ad2e830..72356c999125 100644
--- a/arch/sparc/include/uapi/asm/poll.h
+++ b/arch/sparc/include/uapi/asm/poll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __SPARC_POLL_H
#define __SPARC_POLL_H
diff --git a/arch/sparc/include/uapi/asm/posix_types.h b/arch/sparc/include/uapi/asm/posix_types.h
index 156220ed99eb..fec499d6efb7 100644
--- a/arch/sparc/include/uapi/asm/posix_types.h
+++ b/arch/sparc/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file is generally used by user-level software, so you need to
* be a little careful about namespace pollution etc. Also, we cannot
diff --git a/arch/sparc/include/uapi/asm/psr.h b/arch/sparc/include/uapi/asm/psr.h
index 2f0ed856530b..e41f65f0aebd 100644
--- a/arch/sparc/include/uapi/asm/psr.h
+++ b/arch/sparc/include/uapi/asm/psr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* psr.h: This file holds the macros for masking off various parts of
* the processor status register on the Sparc. This is valid
diff --git a/arch/sparc/include/uapi/asm/psrcompat.h b/arch/sparc/include/uapi/asm/psrcompat.h
index 44b6327dbbf5..1eaffbe0d1e2 100644
--- a/arch/sparc/include/uapi/asm/psrcompat.h
+++ b/arch/sparc/include/uapi/asm/psrcompat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC64_PSRCOMPAT_H
#define _SPARC64_PSRCOMPAT_H
diff --git a/arch/sparc/include/uapi/asm/pstate.h b/arch/sparc/include/uapi/asm/pstate.h
index cf832e14aa05..b6999c9e7e86 100644
--- a/arch/sparc/include/uapi/asm/pstate.h
+++ b/arch/sparc/include/uapi/asm/pstate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC64_PSTATE_H
#define _SPARC64_PSTATE_H
diff --git a/arch/sparc/include/uapi/asm/ptrace.h b/arch/sparc/include/uapi/asm/ptrace.h
index 56fe4ea73feb..abe640037a55 100644
--- a/arch/sparc/include/uapi/asm/ptrace.h
+++ b/arch/sparc/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__SPARC_PTRACE_H
#define _UAPI__SPARC_PTRACE_H
diff --git a/arch/sparc/include/uapi/asm/resource.h b/arch/sparc/include/uapi/asm/resource.h
index fe163cafb4c7..cbe2de778838 100644
--- a/arch/sparc/include/uapi/asm/resource.h
+++ b/arch/sparc/include/uapi/asm/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* resource.h: Resource definitions.
*
diff --git a/arch/sparc/include/uapi/asm/sembuf.h b/arch/sparc/include/uapi/asm/sembuf.h
index faee1be08d67..f49b0ffa0ab8 100644
--- a/arch/sparc/include/uapi/asm/sembuf.h
+++ b/arch/sparc/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC_SEMBUF_H
#define _SPARC_SEMBUF_H
diff --git a/arch/sparc/include/uapi/asm/setup.h b/arch/sparc/include/uapi/asm/setup.h
index 533768450872..3c208a4dd464 100644
--- a/arch/sparc/include/uapi/asm/setup.h
+++ b/arch/sparc/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Just a place holder.
*/
diff --git a/arch/sparc/include/uapi/asm/shmbuf.h b/arch/sparc/include/uapi/asm/shmbuf.h
index 83a16055363f..286631db705c 100644
--- a/arch/sparc/include/uapi/asm/shmbuf.h
+++ b/arch/sparc/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC_SHMBUF_H
#define _SPARC_SHMBUF_H
diff --git a/arch/sparc/include/uapi/asm/sigcontext.h b/arch/sparc/include/uapi/asm/sigcontext.h
index ae5704fa77ad..043dd4b92026 100644
--- a/arch/sparc/include/uapi/asm/sigcontext.h
+++ b/arch/sparc/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* There isn't anything here anymore, but the file must not be empty or patch
* will delete it.
diff --git a/arch/sparc/include/uapi/asm/siginfo.h b/arch/sparc/include/uapi/asm/siginfo.h
index 157f46fe374f..896ce447d16a 100644
--- a/arch/sparc/include/uapi/asm/siginfo.h
+++ b/arch/sparc/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__SPARC_SIGINFO_H
#define _UAPI__SPARC_SIGINFO_H
diff --git a/arch/sparc/include/uapi/asm/signal.h b/arch/sparc/include/uapi/asm/signal.h
index f387400fcfdf..ff9505923b9a 100644
--- a/arch/sparc/include/uapi/asm/signal.h
+++ b/arch/sparc/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__SPARC_SIGNAL_H
#define _UAPI__SPARC_SIGNAL_H
diff --git a/arch/sparc/include/uapi/asm/socket.h b/arch/sparc/include/uapi/asm/socket.h
index b2f5c50d0947..d58520c2e6ff 100644
--- a/arch/sparc/include/uapi/asm/socket.h
+++ b/arch/sparc/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SOCKET_H
#define _ASM_SOCKET_H
diff --git a/arch/sparc/include/uapi/asm/sockios.h b/arch/sparc/include/uapi/asm/sockios.h
index 990ea746486b..18a3ec14a847 100644
--- a/arch/sparc/include/uapi/asm/sockios.h
+++ b/arch/sparc/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_SPARC_SOCKIOS_H
#define _ASM_SPARC_SOCKIOS_H
diff --git a/arch/sparc/include/uapi/asm/stat.h b/arch/sparc/include/uapi/asm/stat.h
index 2f0583a2c689..b6ec4eb217f7 100644
--- a/arch/sparc/include/uapi/asm/stat.h
+++ b/arch/sparc/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __SPARC_STAT_H
#define __SPARC_STAT_H
diff --git a/arch/sparc/include/uapi/asm/statfs.h b/arch/sparc/include/uapi/asm/statfs.h
index 55e607ad461d..20c8f5bd340e 100644
--- a/arch/sparc/include/uapi/asm/statfs.h
+++ b/arch/sparc/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef ___ASM_SPARC_STATFS_H
#define ___ASM_SPARC_STATFS_H
diff --git a/arch/sparc/include/uapi/asm/swab.h b/arch/sparc/include/uapi/asm/swab.h
index 4c7c12d69bea..6b1b3f1ad725 100644
--- a/arch/sparc/include/uapi/asm/swab.h
+++ b/arch/sparc/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _SPARC_SWAB_H
#define _SPARC_SWAB_H
diff --git a/arch/sparc/include/uapi/asm/termbits.h b/arch/sparc/include/uapi/asm/termbits.h
index dd91642fcca7..ce5ad5d0f105 100644
--- a/arch/sparc/include/uapi/asm/termbits.h
+++ b/arch/sparc/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_SPARC_TERMBITS_H
#define _UAPI_SPARC_TERMBITS_H
diff --git a/arch/sparc/include/uapi/asm/termios.h b/arch/sparc/include/uapi/asm/termios.h
index ea6f09e51e53..ee86f4093d83 100644
--- a/arch/sparc/include/uapi/asm/termios.h
+++ b/arch/sparc/include/uapi/asm/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_SPARC_TERMIOS_H
#define _UAPI_SPARC_TERMIOS_H
diff --git a/arch/sparc/include/uapi/asm/traps.h b/arch/sparc/include/uapi/asm/traps.h
index a4eceace6ccf..930db746f8bd 100644
--- a/arch/sparc/include/uapi/asm/traps.h
+++ b/arch/sparc/include/uapi/asm/traps.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* traps.h: Format of entries for the Sparc trap table.
*
diff --git a/arch/sparc/include/uapi/asm/uctx.h b/arch/sparc/include/uapi/asm/uctx.h
index dc937c75ffdd..13a13198e04f 100644
--- a/arch/sparc/include/uapi/asm/uctx.h
+++ b/arch/sparc/include/uapi/asm/uctx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* uctx.h: Sparc64 {set,get}context() register state layouts.
*
diff --git a/arch/sparc/include/uapi/asm/unistd.h b/arch/sparc/include/uapi/asm/unistd.h
index ae77df75bffa..09acf0ddec10 100644
--- a/arch/sparc/include/uapi/asm/unistd.h
+++ b/arch/sparc/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* System calls under the Sparc.
*
diff --git a/arch/sparc/include/uapi/asm/utrap.h b/arch/sparc/include/uapi/asm/utrap.h
index b10e527c22d9..d890b7fc6e83 100644
--- a/arch/sparc/include/uapi/asm/utrap.h
+++ b/arch/sparc/include/uapi/asm/utrap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm/utrap.h
*
diff --git a/arch/sparc/include/uapi/asm/watchdog.h b/arch/sparc/include/uapi/asm/watchdog.h
index 5baf2d3919cf..497ac19a9e4e 100644
--- a/arch/sparc/include/uapi/asm/watchdog.h
+++ b/arch/sparc/include/uapi/asm/watchdog.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
* watchdog - Driver interface for the hardware watchdog timers
diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile
index aac609889ee4..8de9617589a5 100644
--- a/arch/sparc/kernel/Makefile
+++ b/arch/sparc/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
diff --git a/arch/sparc/kernel/apc.c b/arch/sparc/kernel/apc.c
index c988e7fa069b..ecd05bc0a104 100644
--- a/arch/sparc/kernel/apc.c
+++ b/arch/sparc/kernel/apc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* apc - Driver implementation for power management functions
* of Aurora Personality Chip (APC) on SPARCstation-4/5 and
* derivatives.
diff --git a/arch/sparc/kernel/asm-offsets.c b/arch/sparc/kernel/asm-offsets.c
index 3f09e1c83f58..5784f2df489a 100644
--- a/arch/sparc/kernel/asm-offsets.c
+++ b/arch/sparc/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This program is used to generate definitions needed by
* assembly language modules.
diff --git a/arch/sparc/kernel/audit.c b/arch/sparc/kernel/audit.c
index 2585c1e14bcc..a6e91bf34d48 100644
--- a/arch/sparc/kernel/audit.c
+++ b/arch/sparc/kernel/audit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/types.h>
#include <linux/audit.h>
diff --git a/arch/sparc/kernel/auxio_32.c b/arch/sparc/kernel/auxio_32.c
index ae88c223e4d3..a32d588174f2 100644
--- a/arch/sparc/kernel/auxio_32.c
+++ b/arch/sparc/kernel/auxio_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* auxio.c: Probing for the Sparc AUXIO register at boot time.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc/kernel/auxio_64.c b/arch/sparc/kernel/auxio_64.c
index 086435c17981..4e8f56c3793c 100644
--- a/arch/sparc/kernel/auxio_64.c
+++ b/arch/sparc/kernel/auxio_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* auxio.c: Probing for the Sparc AUXIO register at boot time.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc/kernel/btext.c b/arch/sparc/kernel/btext.c
index 987f7ec497cc..5869773f3dc4 100644
--- a/arch/sparc/kernel/btext.c
+++ b/arch/sparc/kernel/btext.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Procedures for drawing on the screen early on in the boot process.
*
diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c
index 4696958299e9..38ae4fdc9eb4 100644
--- a/arch/sparc/kernel/central.c
+++ b/arch/sparc/kernel/central.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* central.c: Central FHC driver for Sunfire/Starfire/Wildfire.
*
* Copyright (C) 1997, 1999, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/cherrs.S b/arch/sparc/kernel/cherrs.S
index 655628def68e..7f3d3d264390 100644
--- a/arch/sparc/kernel/cherrs.S
+++ b/arch/sparc/kernel/cherrs.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* These get patched into the trap table at boot time
* once we know we have a cheetah processor.
*/
diff --git a/arch/sparc/kernel/compat_audit.c b/arch/sparc/kernel/compat_audit.c
index e5611cd428f1..10eeb4f15b20 100644
--- a/arch/sparc/kernel/compat_audit.c
+++ b/arch/sparc/kernel/compat_audit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define __32bit_syscall_numbers__
#include <asm/unistd.h>
#include "kernel.h"
diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c
index ef4f18f7a674..4401dee30018 100644
--- a/arch/sparc/kernel/cpu.c
+++ b/arch/sparc/kernel/cpu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* cpu.c: Dinky routines to look for the kind of Sparc cpu
* we are on.
*
diff --git a/arch/sparc/kernel/cpumap.c b/arch/sparc/kernel/cpumap.c
index 90d550bbfeef..d1d52822603d 100644
--- a/arch/sparc/kernel/cpumap.c
+++ b/arch/sparc/kernel/cpumap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* cpumap.c: used for optimizing CPU assignment
*
* Copyright (C) 2009 Hong H. Pham <hong.pham@windriver.com>
diff --git a/arch/sparc/kernel/cpumap.h b/arch/sparc/kernel/cpumap.h
index 9dac398c434a..7d5b774862e7 100644
--- a/arch/sparc/kernel/cpumap.h
+++ b/arch/sparc/kernel/cpumap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CPUMAP_H
#define _CPUMAP_H
diff --git a/arch/sparc/kernel/devices.c b/arch/sparc/kernel/devices.c
index 8d5d09f09caf..23b6e50d4ada 100644
--- a/arch/sparc/kernel/devices.c
+++ b/arch/sparc/kernel/devices.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* devices.c: Initial scan of the prom device tree for important
* Sparc device nodes which we need to find.
*
diff --git a/arch/sparc/kernel/dma.c b/arch/sparc/kernel/dma.c
index b667aa6f28f6..f73e7597c971 100644
--- a/arch/sparc/kernel/dma.c
+++ b/arch/sparc/kernel/dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/dma-mapping.h>
#include <linux/dma-debug.h>
diff --git a/arch/sparc/kernel/dtlb_miss.S b/arch/sparc/kernel/dtlb_miss.S
index 09a6a15a7105..fb9c788437b0 100644
--- a/arch/sparc/kernel/dtlb_miss.S
+++ b/arch/sparc/kernel/dtlb_miss.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* DTLB ** ICACHE line 1: Context 0 check and TSB load */
ldxa [%g0] ASI_DMMU_TSB_8KB_PTR, %g1 ! Get TSB 8K pointer
ldxa [%g0] ASI_DMMU, %g6 ! Get TAG TARGET
diff --git a/arch/sparc/kernel/dtlb_prot.S b/arch/sparc/kernel/dtlb_prot.S
index 4087a62f96b0..9f945771bbd1 100644
--- a/arch/sparc/kernel/dtlb_prot.S
+++ b/arch/sparc/kernel/dtlb_prot.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* dtlb_prot.S: DTLB protection trap strategy.
* This is included directly into the trap table.
diff --git a/arch/sparc/kernel/ebus.c b/arch/sparc/kernel/ebus.c
index acf8314cec48..264b186478f3 100644
--- a/arch/sparc/kernel/ebus.c
+++ b/arch/sparc/kernel/ebus.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* ebus.c: EBUS DMA library code.
*
* Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be)
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S
index d85bdb999819..358fe4ef08a2 100644
--- a/arch/sparc/kernel/entry.S
+++ b/arch/sparc/kernel/entry.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* arch/sparc/kernel/entry.S: Sparc trap low-level entry points.
*
* Copyright (C) 1995, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/entry.h b/arch/sparc/kernel/entry.h
index 0f679421b468..7378567b601f 100644
--- a/arch/sparc/kernel/entry.h
+++ b/arch/sparc/kernel/entry.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ENTRY_H
#define _ENTRY_H
diff --git a/arch/sparc/kernel/etrap_32.S b/arch/sparc/kernel/etrap_32.S
index e3e80d65e39a..9f243f918619 100644
--- a/arch/sparc/kernel/etrap_32.S
+++ b/arch/sparc/kernel/etrap_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* etrap.S: Sparc trap window preparation for entry into the
* Linux kernel.
diff --git a/arch/sparc/kernel/etrap_64.S b/arch/sparc/kernel/etrap_64.S
index 5c237467d156..5c77a2e0e991 100644
--- a/arch/sparc/kernel/etrap_64.S
+++ b/arch/sparc/kernel/etrap_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* etrap.S: Preparing for entry into the kernel on Sparc V9.
*
diff --git a/arch/sparc/kernel/fpu_traps.S b/arch/sparc/kernel/fpu_traps.S
index 336d2750fe78..051659e29c7a 100644
--- a/arch/sparc/kernel/fpu_traps.S
+++ b/arch/sparc/kernel/fpu_traps.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* This is trivial with the new code... */
.globl do_fpdis
.type do_fpdis,#function
diff --git a/arch/sparc/kernel/ftrace.c b/arch/sparc/kernel/ftrace.c
index cec54dc4ab81..915dda4ae412 100644
--- a/arch/sparc/kernel/ftrace.c
+++ b/arch/sparc/kernel/ftrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/spinlock.h>
#include <linux/hardirq.h>
#include <linux/ftrace.h>
diff --git a/arch/sparc/kernel/getsetcc.S b/arch/sparc/kernel/getsetcc.S
index a14d272d2061..181e09fd1c55 100644
--- a/arch/sparc/kernel/getsetcc.S
+++ b/arch/sparc/kernel/getsetcc.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.globl getcc
.type getcc,#function
getcc:
diff --git a/arch/sparc/kernel/head_32.S b/arch/sparc/kernel/head_32.S
index 7274e43ff9be..e55f2c075165 100644
--- a/arch/sparc/kernel/head_32.S
+++ b/arch/sparc/kernel/head_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* head.S: The initial boot code for the Sparc port of Linux.
*
diff --git a/arch/sparc/kernel/head_64.S b/arch/sparc/kernel/head_64.S
index 4de9fbd1a177..9e293de12052 100644
--- a/arch/sparc/kernel/head_64.S
+++ b/arch/sparc/kernel/head_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* head.S: Initial boot code for the Sparc64 port of Linux.
*
* Copyright (C) 1996, 1997, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/hvapi.c b/arch/sparc/kernel/hvapi.c
index d41ce33d87d6..a2bc1b2955b4 100644
--- a/arch/sparc/kernel/hvapi.c
+++ b/arch/sparc/kernel/hvapi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* hvapi.c: Hypervisor API management.
*
* Copyright (C) 2007 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/hvcalls.S b/arch/sparc/kernel/hvcalls.S
index e57007ff7f8f..bdfd3d8c6707 100644
--- a/arch/sparc/kernel/hvcalls.S
+++ b/arch/sparc/kernel/hvcalls.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* %o0: devhandle
* %o1: devino
*
diff --git a/arch/sparc/kernel/hvtramp.S b/arch/sparc/kernel/hvtramp.S
index cdbfec299f2f..f39220471b65 100644
--- a/arch/sparc/kernel/hvtramp.S
+++ b/arch/sparc/kernel/hvtramp.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* hvtramp.S: Hypervisor start-cpu trampoline code.
*
* Copyright (C) 2007, 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/idprom.c b/arch/sparc/kernel/idprom.c
index f95dd11b75ea..d6c46d512220 100644
--- a/arch/sparc/kernel/idprom.c
+++ b/arch/sparc/kernel/idprom.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* idprom.c: Routines to load the idprom into kernel addresses and
* interpret the data contained within.
diff --git a/arch/sparc/kernel/iommu.c b/arch/sparc/kernel/iommu.c
index fcbcc031f615..b08dc3416f06 100644
--- a/arch/sparc/kernel/iommu.c
+++ b/arch/sparc/kernel/iommu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* iommu.c: Generic sparc64 IOMMU support.
*
* Copyright (C) 1999, 2007, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/iommu_common.h b/arch/sparc/kernel/iommu_common.h
index 5ea5c192b1d9..e3c02ba32500 100644
--- a/arch/sparc/kernel/iommu_common.h
+++ b/arch/sparc/kernel/iommu_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* iommu_common.h: UltraSparc SBUS/PCI common iommu declarations.
*
* Copyright (C) 1999, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c
index 12894f259bea..7eeef80c02f7 100644
--- a/arch/sparc/kernel/ioport.c
+++ b/arch/sparc/kernel/ioport.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ioport.c: Simple io mapping allocator.
*
diff --git a/arch/sparc/kernel/irq.h b/arch/sparc/kernel/irq.h
index 70a0b8ddd0ba..b02026ad6e34 100644
--- a/arch/sparc/kernel/irq.h
+++ b/arch/sparc/kernel/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/platform_device.h>
#include <asm/cpu_type.h>
diff --git a/arch/sparc/kernel/irq_32.c b/arch/sparc/kernel/irq_32.c
index cac4a5554c0e..e8452be5123b 100644
--- a/arch/sparc/kernel/irq_32.c
+++ b/arch/sparc/kernel/irq_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Interrupt request handling routines. On the
* Sparc the IRQs are basically 'cast in stone'
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index 99dd133a029f..d66dde833f5e 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* irq.c: UltraSparc IRQ handling/init/registry.
*
* Copyright (C) 1997, 2007, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/itlb_miss.S b/arch/sparc/kernel/itlb_miss.S
index 5a8377b54955..5a5d92482e8d 100644
--- a/arch/sparc/kernel/itlb_miss.S
+++ b/arch/sparc/kernel/itlb_miss.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ITLB ** ICACHE line 1: Context 0 check and TSB load */
ldxa [%g0] ASI_IMMU_TSB_8KB_PTR, %g1 ! Get TSB 8K pointer
ldxa [%g0] ASI_IMMU, %g6 ! Get TAG TARGET
diff --git a/arch/sparc/kernel/ivec.S b/arch/sparc/kernel/ivec.S
index d29f92ebca5e..94ba2c3a29c1 100644
--- a/arch/sparc/kernel/ivec.S
+++ b/arch/sparc/kernel/ivec.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* The registers for cross calls will be:
*
* DATA 0: [low 32-bits] Address of function to call, jmp to this
diff --git a/arch/sparc/kernel/jump_label.c b/arch/sparc/kernel/jump_label.c
index 93adde1ac166..7f8eac51df33 100644
--- a/arch/sparc/kernel/jump_label.c
+++ b/arch/sparc/kernel/jump_label.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/mutex.h>
diff --git a/arch/sparc/kernel/kernel.h b/arch/sparc/kernel/kernel.h
index b625db4cfb78..ddffd368e057 100644
--- a/arch/sparc/kernel/kernel.h
+++ b/arch/sparc/kernel/kernel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPARC_KERNEL_H
#define __SPARC_KERNEL_H
diff --git a/arch/sparc/kernel/kgdb_32.c b/arch/sparc/kernel/kgdb_32.c
index 6e8e318c57be..5868fc333ea8 100644
--- a/arch/sparc/kernel/kgdb_32.c
+++ b/arch/sparc/kernel/kgdb_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* kgdb.c: KGDB support for 32-bit sparc.
*
* Copyright (C) 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/kgdb_64.c b/arch/sparc/kernel/kgdb_64.c
index cbf21d0870e0..d5f7dc6323d5 100644
--- a/arch/sparc/kernel/kgdb_64.c
+++ b/arch/sparc/kernel/kgdb_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* kgdb.c: KGDB support for 64-bit sparc.
*
* Copyright (C) 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/kprobes.c b/arch/sparc/kernel/kprobes.c
index 2d13a4fc0384..ab4ba4347941 100644
--- a/arch/sparc/kernel/kprobes.c
+++ b/arch/sparc/kernel/kprobes.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* arch/sparc64/kernel/kprobes.c
*
* Copyright (C) 2004 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/kstack.h b/arch/sparc/kernel/kstack.h
index 53dfb92e09fb..b3c5e8f2443a 100644
--- a/arch/sparc/kernel/kstack.h
+++ b/arch/sparc/kernel/kstack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _KSTACK_H
#define _KSTACK_H
diff --git a/arch/sparc/kernel/ktlb.S b/arch/sparc/kernel/ktlb.S
index f22bec0db645..1cf91c05e275 100644
--- a/arch/sparc/kernel/ktlb.S
+++ b/arch/sparc/kernel/ktlb.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* arch/sparc64/kernel/ktlb.S: Kernel mapping TLB miss handling.
*
* Copyright (C) 1995, 1997, 2005, 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/ldc.c b/arch/sparc/kernel/ldc.c
index acffbc894ab0..86b625f9d8dc 100644
--- a/arch/sparc/kernel/ldc.c
+++ b/arch/sparc/kernel/ldc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* ldc.c: Logical Domain Channel link-layer protocol driver.
*
* Copyright (C) 2007, 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/leon_kernel.c b/arch/sparc/kernel/leon_kernel.c
index afcdd5e4f43f..84b233752f28 100644
--- a/arch/sparc/kernel/leon_kernel.c
+++ b/arch/sparc/kernel/leon_kernel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2009 Daniel Hellstrom (daniel@gaisler.com) Aeroflex Gaisler AB
* Copyright (C) 2009 Konrad Eisele (konrad@gaisler.com) Aeroflex Gaisler AB
diff --git a/arch/sparc/kernel/leon_pci.c b/arch/sparc/kernel/leon_pci.c
index 98c223edac84..15b59169c535 100644
--- a/arch/sparc/kernel/leon_pci.c
+++ b/arch/sparc/kernel/leon_pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* leon_pci.c: LEON Host PCI support
*
diff --git a/arch/sparc/kernel/leon_pci_grpci1.c b/arch/sparc/kernel/leon_pci_grpci1.c
index 83ba5005d44c..e6935d0ac1ec 100644
--- a/arch/sparc/kernel/leon_pci_grpci1.c
+++ b/arch/sparc/kernel/leon_pci_grpci1.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* leon_pci_grpci1.c: GRPCI1 Host PCI driver
*
diff --git a/arch/sparc/kernel/leon_pci_grpci2.c b/arch/sparc/kernel/leon_pci_grpci2.c
index ff0e5c90310f..ca22f93d9045 100644
--- a/arch/sparc/kernel/leon_pci_grpci2.c
+++ b/arch/sparc/kernel/leon_pci_grpci2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* leon_pci_grpci2.c: GRPCI2 Host PCI driver
*
diff --git a/arch/sparc/kernel/leon_pmc.c b/arch/sparc/kernel/leon_pmc.c
index ddcf950282ed..065e2d4b7290 100644
--- a/arch/sparc/kernel/leon_pmc.c
+++ b/arch/sparc/kernel/leon_pmc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* leon_pmc.c: LEON Power-down cpu_idle() handler
*
* Copyright (C) 2011 Daniel Hellstrom (daniel@gaisler.com) Aeroflex Gaisler AB
diff --git a/arch/sparc/kernel/leon_smp.c b/arch/sparc/kernel/leon_smp.c
index db7acf27bea2..da6f1486318e 100644
--- a/arch/sparc/kernel/leon_smp.c
+++ b/arch/sparc/kernel/leon_smp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* leon_smp.c: Sparc-Leon SMP support.
*
* based on sun4m_smp.c
diff --git a/arch/sparc/kernel/mdesc.c b/arch/sparc/kernel/mdesc.c
index fa466ce45bc9..1ef6156b1530 100644
--- a/arch/sparc/kernel/mdesc.c
+++ b/arch/sparc/kernel/mdesc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* mdesc.c: Sun4V machine description handling.
*
* Copyright (C) 2007, 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/misctrap.S b/arch/sparc/kernel/misctrap.S
index 9276d2f0dd86..b5c84177521e 100644
--- a/arch/sparc/kernel/misctrap.S
+++ b/arch/sparc/kernel/misctrap.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_KGDB
.globl arch_kgdb_breakpoint
.type arch_kgdb_breakpoint,#function
diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c
index 192a617a32f3..df39580f398d 100644
--- a/arch/sparc/kernel/module.c
+++ b/arch/sparc/kernel/module.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Kernel module help for sparc64.
*
* Copyright (C) 2001 Rusty Russell.
diff --git a/arch/sparc/kernel/of_device_32.c b/arch/sparc/kernel/of_device_32.c
index 185aa96fa5be..3641a294ed54 100644
--- a/arch/sparc/kernel/of_device_32.c
+++ b/arch/sparc/kernel/of_device_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/of.h>
diff --git a/arch/sparc/kernel/of_device_64.c b/arch/sparc/kernel/of_device_64.c
index 7bbdc26d9512..44e4d4435bed 100644
--- a/arch/sparc/kernel/of_device_64.c
+++ b/arch/sparc/kernel/of_device_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/of.h>
diff --git a/arch/sparc/kernel/of_device_common.h b/arch/sparc/kernel/of_device_common.h
index cdfd23992841..3d66230c61b6 100644
--- a/arch/sparc/kernel/of_device_common.h
+++ b/arch/sparc/kernel/of_device_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _OF_DEVICE_COMMON_H
#define _OF_DEVICE_COMMON_H
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c
index 3f8670c92951..220d0f36560a 100644
--- a/arch/sparc/kernel/pci.c
+++ b/arch/sparc/kernel/pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* pci.c: UltraSparc PCI controller support.
*
* Copyright (C) 1997, 1998, 1999 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/kernel/pci_common.c b/arch/sparc/kernel/pci_common.c
index 33524c1d5328..1e10fb26fa88 100644
--- a/arch/sparc/kernel/pci_common.c
+++ b/arch/sparc/kernel/pci_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* pci_common.c: PCI controller common support.
*
* Copyright (C) 1999, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/pci_fire.c b/arch/sparc/kernel/pci_fire.c
index 11a1f0d289d2..be71ae086622 100644
--- a/arch/sparc/kernel/pci_fire.c
+++ b/arch/sparc/kernel/pci_fire.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* pci_fire.c: Sun4u platform PCI-E controller support.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/pci_impl.h b/arch/sparc/kernel/pci_impl.h
index 37222ca849df..ac172961d276 100644
--- a/arch/sparc/kernel/pci_impl.h
+++ b/arch/sparc/kernel/pci_impl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* pci_impl.h: Helper definitions for PCI controller support.
*
* Copyright (C) 1999, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/pci_msi.c b/arch/sparc/kernel/pci_msi.c
index 84e16d81a6d8..1994d7638406 100644
--- a/arch/sparc/kernel/pci_msi.c
+++ b/arch/sparc/kernel/pci_msi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* pci_msi.c: Sparc64 MSI support common layer.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/pci_psycho.c b/arch/sparc/kernel/pci_psycho.c
index 7dce27b3c761..f413371da387 100644
--- a/arch/sparc/kernel/pci_psycho.c
+++ b/arch/sparc/kernel/pci_psycho.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* pci_psycho.c: PSYCHO/U2P specific PCI controller support.
*
* Copyright (C) 1997, 1998, 1999, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/pci_sabre.c b/arch/sparc/kernel/pci_sabre.c
index 00a616ffa35b..8107286be9ab 100644
--- a/arch/sparc/kernel/pci_sabre.c
+++ b/arch/sparc/kernel/pci_sabre.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* pci_sabre.c: Sabre specific PCI controller support.
*
* Copyright (C) 1997, 1998, 1999, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/pci_schizo.c b/arch/sparc/kernel/pci_schizo.c
index c664d3e3aa8d..934b97c72f7c 100644
--- a/arch/sparc/kernel/pci_schizo.c
+++ b/arch/sparc/kernel/pci_schizo.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* pci_schizo.c: SCHIZO/TOMATILLO specific PCI controller support.
*
* Copyright (C) 2001, 2002, 2003, 2007, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/pci_sun4v.c b/arch/sparc/kernel/pci_sun4v.c
index 9ebebf1fd93d..249367228c33 100644
--- a/arch/sparc/kernel/pci_sun4v.c
+++ b/arch/sparc/kernel/pci_sun4v.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* pci_sun4v.c: SUN4V specific PCI controller support.
*
* Copyright (C) 2006, 2007, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/pci_sun4v.h b/arch/sparc/kernel/pci_sun4v.h
index 22603a4e48bf..d47263a9901a 100644
--- a/arch/sparc/kernel/pci_sun4v.h
+++ b/arch/sparc/kernel/pci_sun4v.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* pci_sun4v.h: SUN4V specific PCI controller support.
*
* Copyright (C) 2006 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/pci_sun4v_asm.S b/arch/sparc/kernel/pci_sun4v_asm.S
index 578f09657916..2b8051871a15 100644
--- a/arch/sparc/kernel/pci_sun4v_asm.S
+++ b/arch/sparc/kernel/pci_sun4v_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* pci_sun4v_asm: Hypervisor calls for PCI support.
*
* Copyright (C) 2006, 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c
index 4a133c052af8..22f8774977d5 100644
--- a/arch/sparc/kernel/pcic.c
+++ b/arch/sparc/kernel/pcic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* pcic.c: MicroSPARC-IIep PCI controller support
*
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c
index 710f3278d448..5c1f54758312 100644
--- a/arch/sparc/kernel/perf_event.c
+++ b/arch/sparc/kernel/perf_event.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Performance event support for sparc64.
*
* Copyright (C) 2009, 2010 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/pmc.c b/arch/sparc/kernel/pmc.c
index 3b26cf62df6d..b5c1eb33b951 100644
--- a/arch/sparc/kernel/pmc.c
+++ b/arch/sparc/kernel/pmc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* pmc - Driver implementation for power management functions
* of Power Management Controller (PMC) on SPARCstation-Voyager.
*
diff --git a/arch/sparc/kernel/power.c b/arch/sparc/kernel/power.c
index 4b60f385c98f..92627abce311 100644
--- a/arch/sparc/kernel/power.c
+++ b/arch/sparc/kernel/power.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* power.c: Power management driver.
*
* Copyright (C) 1999, 2007, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
index 9245f93398c7..d9662cf7e648 100644
--- a/arch/sparc/kernel/process_32.c
+++ b/arch/sparc/kernel/process_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* linux/arch/sparc/kernel/process.c
*
* Copyright (C) 1995, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
index 44e5da405f96..318efd784a0b 100644
--- a/arch/sparc/kernel/process_64.c
+++ b/arch/sparc/kernel/process_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* arch/sparc64/kernel/process.c
*
* Copyright (C) 1995, 1996, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/prom.h b/arch/sparc/kernel/prom.h
index 890281b12b28..26a1cca7c761 100644
--- a/arch/sparc/kernel/prom.h
+++ b/arch/sparc/kernel/prom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PROM_H
#define __PROM_H
diff --git a/arch/sparc/kernel/prom_irqtrans.c b/arch/sparc/kernel/prom_irqtrans.c
index 40e4936bd479..f3fecac7facb 100644
--- a/arch/sparc/kernel/prom_irqtrans.c
+++ b/arch/sparc/kernel/prom_irqtrans.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/init.h>
diff --git a/arch/sparc/kernel/psycho_common.c b/arch/sparc/kernel/psycho_common.c
index 8db48e808ed4..81aa91e5c0e6 100644
--- a/arch/sparc/kernel/psycho_common.c
+++ b/arch/sparc/kernel/psycho_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* psycho_common.c: Code common to PSYCHO and derivative PCI controllers.
*
* Copyright (C) 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/psycho_common.h b/arch/sparc/kernel/psycho_common.h
index 05a6e30a928e..6925231c50e4 100644
--- a/arch/sparc/kernel/psycho_common.h
+++ b/arch/sparc/kernel/psycho_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PSYCHO_COMMON_H
#define _PSYCHO_COMMON_H
diff --git a/arch/sparc/kernel/ptrace_32.c b/arch/sparc/kernel/ptrace_32.c
index eca3dc76793c..16b50afe7b52 100644
--- a/arch/sparc/kernel/ptrace_32.c
+++ b/arch/sparc/kernel/ptrace_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* ptrace.c: Sparc process tracing support.
*
* Copyright (C) 1996, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/reboot.c b/arch/sparc/kernel/reboot.c
index eba7d918162a..7933ee365207 100644
--- a/arch/sparc/kernel/reboot.c
+++ b/arch/sparc/kernel/reboot.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* reboot.c: reboot/shutdown/halt/poweroff handling
*
* Copyright (C) 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/rtrap_32.S b/arch/sparc/kernel/rtrap_32.S
index 6c34de0c2abd..dca8ed810046 100644
--- a/arch/sparc/kernel/rtrap_32.S
+++ b/arch/sparc/kernel/rtrap_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* rtrap.S: Return from Sparc trap low-level code.
*
diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S
index dff86fad0a1f..0b21042ab181 100644
--- a/arch/sparc/kernel/rtrap_64.S
+++ b/arch/sparc/kernel/rtrap_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* rtrap.S: Preparing for return from trap on Sparc V9.
*
diff --git a/arch/sparc/kernel/sbus.c b/arch/sparc/kernel/sbus.c
index be5bdf93c767..c133dfc37c5c 100644
--- a/arch/sparc/kernel/sbus.c
+++ b/arch/sparc/kernel/sbus.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* sbus.c: UltraSparc SBUS controller support.
*
diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c
index 6722308d1a98..2e3a3e203061 100644
--- a/arch/sparc/kernel/setup_32.c
+++ b/arch/sparc/kernel/setup_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sparc/kernel/setup.c
*
diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c
index db4c4d7e28a0..34f7a533a74f 100644
--- a/arch/sparc/kernel/setup_64.c
+++ b/arch/sparc/kernel/setup_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sparc64/kernel/setup.c
*
diff --git a/arch/sparc/kernel/signal32.c b/arch/sparc/kernel/signal32.c
index 0e4c08c45a37..5c572de64c74 100644
--- a/arch/sparc/kernel/signal32.c
+++ b/arch/sparc/kernel/signal32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* arch/sparc64/kernel/signal32.c
*
* Copyright (C) 1991, 1992 Linus Torvalds
diff --git a/arch/sparc/kernel/signal_32.c b/arch/sparc/kernel/signal_32.c
index 62c3e255ae7c..5665261cee37 100644
--- a/arch/sparc/kernel/signal_32.c
+++ b/arch/sparc/kernel/signal_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* linux/arch/sparc/kernel/signal.c
*
* Copyright (C) 1991, 1992 Linus Torvalds
diff --git a/arch/sparc/kernel/signal_64.c b/arch/sparc/kernel/signal_64.c
index 965d50e833e7..20426a1c28f2 100644
--- a/arch/sparc/kernel/signal_64.c
+++ b/arch/sparc/kernel/signal_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sparc64/kernel/signal.c
*
diff --git a/arch/sparc/kernel/sigutil.h b/arch/sparc/kernel/sigutil.h
index d223aa432bb6..21d332d8bddd 100644
--- a/arch/sparc/kernel/sigutil.h
+++ b/arch/sparc/kernel/sigutil.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SIGUTIL_H
#define _SIGUTIL_H
diff --git a/arch/sparc/kernel/sigutil_32.c b/arch/sparc/kernel/sigutil_32.c
index e5fe8cef9a69..1e9fae56a853 100644
--- a/arch/sparc/kernel/sigutil_32.c
+++ b/arch/sparc/kernel/sigutil_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/thread_info.h>
diff --git a/arch/sparc/kernel/sigutil_64.c b/arch/sparc/kernel/sigutil_64.c
index 36aadcbeac69..512e4639e4a1 100644
--- a/arch/sparc/kernel/sigutil_64.c
+++ b/arch/sparc/kernel/sigutil_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/thread_info.h>
diff --git a/arch/sparc/kernel/smp_32.c b/arch/sparc/kernel/smp_32.c
index e80e6ba3d500..e078680a1768 100644
--- a/arch/sparc/kernel/smp_32.c
+++ b/arch/sparc/kernel/smp_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* smp.c: Sparc SMP support.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c
index 4898329970c5..c50182cd2f64 100644
--- a/arch/sparc/kernel/smp_64.c
+++ b/arch/sparc/kernel/smp_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* smp.c: Sparc64 SMP support.
*
* Copyright (C) 1997, 2007, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/spiterrs.S b/arch/sparc/kernel/spiterrs.S
index d7e540842809..5427af44099a 100644
--- a/arch/sparc/kernel/spiterrs.S
+++ b/arch/sparc/kernel/spiterrs.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* We need to carefully read the error status, ACK the errors,
* prevent recursive traps, and pass the information on to C
* code for logging.
diff --git a/arch/sparc/kernel/sstate.c b/arch/sparc/kernel/sstate.c
index 3caed4023589..ac8677c3841e 100644
--- a/arch/sparc/kernel/sstate.c
+++ b/arch/sparc/kernel/sstate.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* sstate.c: System soft state support.
*
* Copyright (C) 2007, 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/starfire.c b/arch/sparc/kernel/starfire.c
index 167fdfd9c837..b8cd57d9182b 100644
--- a/arch/sparc/kernel/starfire.c
+++ b/arch/sparc/kernel/starfire.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* starfire.c: Starfire/E10000 support.
*
diff --git a/arch/sparc/kernel/sun4d_irq.c b/arch/sparc/kernel/sun4d_irq.c
index a87d0e47c168..d869d409fce6 100644
--- a/arch/sparc/kernel/sun4d_irq.c
+++ b/arch/sparc/kernel/sun4d_irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SS1000/SC2000 interrupt handling.
*
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c
index af93b50e3ce4..ff30f03beb7c 100644
--- a/arch/sparc/kernel/sun4d_smp.c
+++ b/arch/sparc/kernel/sun4d_smp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Sparc SS1000/SC2000 SMP support.
*
* Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
diff --git a/arch/sparc/kernel/sun4m_irq.c b/arch/sparc/kernel/sun4m_irq.c
index aa84da0b2d30..c01767a0480e 100644
--- a/arch/sparc/kernel/sun4m_irq.c
+++ b/arch/sparc/kernel/sun4m_irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* sun4m irq support
*
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c
index 5547fcb1d72d..228a6527082d 100644
--- a/arch/sparc/kernel/sun4m_smp.c
+++ b/arch/sparc/kernel/sun4m_smp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* sun4m SMP support.
*
diff --git a/arch/sparc/kernel/sun4v_ivec.S b/arch/sparc/kernel/sun4v_ivec.S
index 34631995859a..6478ef4f6a15 100644
--- a/arch/sparc/kernel/sun4v_ivec.S
+++ b/arch/sparc/kernel/sun4v_ivec.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* sun4v_ivec.S: Sun4v interrupt vector handling.
*
* Copyright (C) 2006 <davem@davemloft.net>
diff --git a/arch/sparc/kernel/sun4v_tlb_miss.S b/arch/sparc/kernel/sun4v_tlb_miss.S
index c19f352f46c7..7ac9f3367674 100644
--- a/arch/sparc/kernel/sun4v_tlb_miss.S
+++ b/arch/sparc/kernel/sun4v_tlb_miss.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* sun4v_tlb_miss.S: Sun4v TLB miss handlers.
*
* Copyright (C) 2006 <davem@davemloft.net>
diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S
index f834224208ed..7e7011a1e712 100644
--- a/arch/sparc/kernel/sys32.S
+++ b/arch/sparc/kernel/sys32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* sys32.S: I-cache tricks for 32-bit compatibility layer simple
* conversions.
diff --git a/arch/sparc/kernel/sys_sparc32.c b/arch/sparc/kernel/sys_sparc32.c
index bca44f3e6b86..b4e1478413a1 100644
--- a/arch/sparc/kernel/sys_sparc32.c
+++ b/arch/sparc/kernel/sys_sparc32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* sys_sparc32.c: Conversion between 32bit and 64bit native syscalls.
*
* Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
diff --git a/arch/sparc/kernel/sys_sparc_32.c b/arch/sparc/kernel/sys_sparc_32.c
index 7aecb239626d..990703b7cf4d 100644
--- a/arch/sparc/kernel/sys_sparc_32.c
+++ b/arch/sparc/kernel/sys_sparc_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* linux/arch/sparc/kernel/sys_sparc.c
*
* This file contains various random system calls that
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
index 043544d0cda3..55416db482ad 100644
--- a/arch/sparc/kernel/sys_sparc_64.c
+++ b/arch/sparc/kernel/sys_sparc_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* linux/arch/sparc64/kernel/sys_sparc.c
*
* This file contains various random system calls that
diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S
index c4a1b5c40e4e..c5f9ec8c52eb 100644
--- a/arch/sparc/kernel/syscalls.S
+++ b/arch/sparc/kernel/syscalls.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* SunOS's execv() call only specifies the argv argument, the
* environment settings are the same as the calling processes.
*/
diff --git a/arch/sparc/kernel/sysfs.c b/arch/sparc/kernel/sysfs.c
index 5fd352b759af..6d60d416f0dd 100644
--- a/arch/sparc/kernel/sysfs.c
+++ b/arch/sparc/kernel/sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* sysfs.c: Topology sysfs support code for sparc64.
*
* Copyright (C) 2007 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/systbls.h b/arch/sparc/kernel/systbls.h
index 2dab8236d490..5a01cfe19a0e 100644
--- a/arch/sparc/kernel/systbls.h
+++ b/arch/sparc/kernel/systbls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SYSTBLS_H
#define _SYSTBLS_H
diff --git a/arch/sparc/kernel/systbls_32.S b/arch/sparc/kernel/systbls_32.S
index 5253e895b81b..731b25d572a1 100644
--- a/arch/sparc/kernel/systbls_32.S
+++ b/arch/sparc/kernel/systbls_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* systbls.S: System call entry point tables for OS compatibility.
* The native Linux system call table lives here also.
*
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S
index 82339f6be0b2..293c1cb31262 100644
--- a/arch/sparc/kernel/systbls_64.S
+++ b/arch/sparc/kernel/systbls_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* systbls.S: System call entry point tables for OS compatibility.
* The native Linux system call table lives here also.
*
diff --git a/arch/sparc/kernel/time_32.c b/arch/sparc/kernel/time_32.c
index 2ce2e7b2abbb..8a08830e4a65 100644
--- a/arch/sparc/kernel/time_32.c
+++ b/arch/sparc/kernel/time_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* linux/arch/sparc/kernel/time.c
*
* Copyright (C) 1995 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/time_64.c b/arch/sparc/kernel/time_64.c
index 564f0e46ffd4..3b397081047a 100644
--- a/arch/sparc/kernel/time_64.c
+++ b/arch/sparc/kernel/time_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* time.c: UltraSparc timer and TOD clock support.
*
* Copyright (C) 1997, 2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/trampoline_32.S b/arch/sparc/kernel/trampoline_32.S
index 3eed99fc6989..82fafeeb3a62 100644
--- a/arch/sparc/kernel/trampoline_32.S
+++ b/arch/sparc/kernel/trampoline_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* trampoline.S: SMP cpu boot-up trampoline code.
*
diff --git a/arch/sparc/kernel/trampoline_64.S b/arch/sparc/kernel/trampoline_64.S
index 88ede1d53b4c..fe59122d257d 100644
--- a/arch/sparc/kernel/trampoline_64.S
+++ b/arch/sparc/kernel/trampoline_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* trampoline.S: Jump start slave processors on sparc64.
*
diff --git a/arch/sparc/kernel/traps_32.c b/arch/sparc/kernel/traps_32.c
index 581cf35ee7e3..b1ed763e4787 100644
--- a/arch/sparc/kernel/traps_32.c
+++ b/arch/sparc/kernel/traps_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sparc/kernel/traps.c
*
diff --git a/arch/sparc/kernel/tsb.S b/arch/sparc/kernel/tsb.S
index f74115364b1e..eaed39ce8938 100644
--- a/arch/sparc/kernel/tsb.S
+++ b/arch/sparc/kernel/tsb.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* tsb.S: Sparc64 TSB table handling.
*
* Copyright (C) 2006 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/ttable_32.S b/arch/sparc/kernel/ttable_32.S
index 8a7a96ca676f..e79fd786fbbb 100644
--- a/arch/sparc/kernel/ttable_32.S
+++ b/arch/sparc/kernel/ttable_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* The Sparc trap table, bootloader gives us control at _start. */
__HEAD
diff --git a/arch/sparc/kernel/ttable_64.S b/arch/sparc/kernel/ttable_64.S
index efe93ab4a9c0..18685fe69b91 100644
--- a/arch/sparc/kernel/ttable_64.S
+++ b/arch/sparc/kernel/ttable_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ttable.S: Sparc V9 Trap Table(s) with SpitFire/Cheetah/SUN4V extensions.
*
* Copyright (C) 1996, 2001, 2006 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/una_asm_32.S b/arch/sparc/kernel/una_asm_32.S
index 8f096e84a937..f8bf839289fb 100644
--- a/arch/sparc/kernel/una_asm_32.S
+++ b/arch/sparc/kernel/una_asm_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* una_asm.S: Kernel unaligned trap assembler helpers.
*
* Copyright (C) 1996,2005,2008 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/una_asm_64.S b/arch/sparc/kernel/una_asm_64.S
index 1c8d33228b2a..e256f395e9f6 100644
--- a/arch/sparc/kernel/una_asm_64.S
+++ b/arch/sparc/kernel/una_asm_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* una_asm.S: Kernel unaligned trap assembler helpers.
*
* Copyright (C) 1996,2005 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/unaligned_32.c b/arch/sparc/kernel/unaligned_32.c
index 8367dce5f41b..7642d7e4f0d9 100644
--- a/arch/sparc/kernel/unaligned_32.c
+++ b/arch/sparc/kernel/unaligned_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* unaligned.c: Unaligned load/store trap handling with special
* cases for the kernel to do them more quickly.
diff --git a/arch/sparc/kernel/unaligned_64.c b/arch/sparc/kernel/unaligned_64.c
index cda7fd367c4f..23db2efda570 100644
--- a/arch/sparc/kernel/unaligned_64.c
+++ b/arch/sparc/kernel/unaligned_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* unaligned.c: Unaligned load/store trap handling with special
* cases for the kernel to do them more quickly.
diff --git a/arch/sparc/kernel/urtt_fill.S b/arch/sparc/kernel/urtt_fill.S
index 364af3250646..44183aa59168 100644
--- a/arch/sparc/kernel/urtt_fill.S
+++ b/arch/sparc/kernel/urtt_fill.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/thread_info.h>
#include <asm/trap_block.h>
#include <asm/spitfire.h>
diff --git a/arch/sparc/kernel/utrap.S b/arch/sparc/kernel/utrap.S
index c731e8023d3e..7a2d9a9bea59 100644
--- a/arch/sparc/kernel/utrap.S
+++ b/arch/sparc/kernel/utrap.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.globl utrap_trap
.type utrap_trap,#function
utrap_trap: /* %g3=handler,%g4=level */
diff --git a/arch/sparc/kernel/vio.c b/arch/sparc/kernel/vio.c
index da1ac3f22b24..1a0fa10cb6b7 100644
--- a/arch/sparc/kernel/vio.c
+++ b/arch/sparc/kernel/vio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* vio.c: Virtual I/O channel devices probing infrastructure.
*
* Copyright (c) 2003-2005 IBM Corp.
diff --git a/arch/sparc/kernel/viohs.c b/arch/sparc/kernel/viohs.c
index dcd278f29573..c858f5f3ce2c 100644
--- a/arch/sparc/kernel/viohs.c
+++ b/arch/sparc/kernel/viohs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* viohs.c: LDOM Virtual I/O handshake helper layer.
*
* Copyright (C) 2007 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/kernel/visemul.c b/arch/sparc/kernel/visemul.c
index 8f35eea2103a..64ed80ed6cc2 100644
--- a/arch/sparc/kernel/visemul.c
+++ b/arch/sparc/kernel/visemul.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* visemul.c: Emulation of VIS instructions.
*
* Copyright (C) 2006 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S
index d78847d56a4b..5a2344574f39 100644
--- a/arch/sparc/kernel/vmlinux.lds.S
+++ b/arch/sparc/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ld script for sparc32/sparc64 kernel */
#include <asm-generic/vmlinux.lds.h>
diff --git a/arch/sparc/kernel/windows.c b/arch/sparc/kernel/windows.c
index 435a467b0595..69a6ba6e9293 100644
--- a/arch/sparc/kernel/windows.c
+++ b/arch/sparc/kernel/windows.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* windows.c: Routines to deal with register window management
* at the C-code level.
*
diff --git a/arch/sparc/kernel/winfixup.S b/arch/sparc/kernel/winfixup.S
index 1ee173cc3c39..448accee090f 100644
--- a/arch/sparc/kernel/winfixup.S
+++ b/arch/sparc/kernel/winfixup.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* winfixup.S: Handle cases where user stack pointer is found to be bogus.
*
* Copyright (C) 1997, 2006 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/kernel/wof.S b/arch/sparc/kernel/wof.S
index 28a7bc69f82b..96a3a112423a 100644
--- a/arch/sparc/kernel/wof.S
+++ b/arch/sparc/kernel/wof.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* wof.S: Sparc window overflow handler.
*
diff --git a/arch/sparc/kernel/wuf.S b/arch/sparc/kernel/wuf.S
index 2c21cc59683e..1a4ca490e9c2 100644
--- a/arch/sparc/kernel/wuf.S
+++ b/arch/sparc/kernel/wuf.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* wuf.S: Window underflow trap handler for the Sparc.
*
diff --git a/arch/sparc/lib/GENbzero.S b/arch/sparc/lib/GENbzero.S
index 2fbf6297d57c..63d618857d49 100644
--- a/arch/sparc/lib/GENbzero.S
+++ b/arch/sparc/lib/GENbzero.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* GENbzero.S: Generic sparc64 memset/clear_user.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/GENcopy_from_user.S b/arch/sparc/lib/GENcopy_from_user.S
index 8aa16ef113f2..6891a5678ea3 100644
--- a/arch/sparc/lib/GENcopy_from_user.S
+++ b/arch/sparc/lib/GENcopy_from_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* GENcopy_from_user.S: Generic sparc64 copy from userspace.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/GENcopy_to_user.S b/arch/sparc/lib/GENcopy_to_user.S
index 311c8fa5e98e..df75b532a934 100644
--- a/arch/sparc/lib/GENcopy_to_user.S
+++ b/arch/sparc/lib/GENcopy_to_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* GENcopy_to_user.S: Generic sparc64 copy to userspace.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/GENmemcpy.S b/arch/sparc/lib/GENmemcpy.S
index 059ea24ad73d..114340a0d36e 100644
--- a/arch/sparc/lib/GENmemcpy.S
+++ b/arch/sparc/lib/GENmemcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* GENmemcpy.S: Generic sparc64 memcpy.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/GENpage.S b/arch/sparc/lib/GENpage.S
index 2ef9d05f21bc..c143c4d1de3f 100644
--- a/arch/sparc/lib/GENpage.S
+++ b/arch/sparc/lib/GENpage.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* GENpage.S: Generic clear and copy page.
*
* Copyright (C) 2007 (davem@davemloft.net)
diff --git a/arch/sparc/lib/GENpatch.S b/arch/sparc/lib/GENpatch.S
index 95e2f1f9e477..1ec1f02c8b7b 100644
--- a/arch/sparc/lib/GENpatch.S
+++ b/arch/sparc/lib/GENpatch.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* GENpatch.S: Patch Ultra-I routines with generic variant.
*
* Copyright (C) 2007 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile
index a1a2d39ec96e..44829a8dc458 100644
--- a/arch/sparc/lib/Makefile
+++ b/arch/sparc/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for Sparc library files..
#
diff --git a/arch/sparc/lib/NG2copy_from_user.S b/arch/sparc/lib/NG2copy_from_user.S
index 0d8a018118c2..e57bc514f538 100644
--- a/arch/sparc/lib/NG2copy_from_user.S
+++ b/arch/sparc/lib/NG2copy_from_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG2copy_from_user.S: Niagara-2 optimized copy from userspace.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NG2copy_to_user.S b/arch/sparc/lib/NG2copy_to_user.S
index a7a0ea0d8a0b..367c0bf01518 100644
--- a/arch/sparc/lib/NG2copy_to_user.S
+++ b/arch/sparc/lib/NG2copy_to_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG2copy_to_user.S: Niagara-2 optimized copy to userspace.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NG2memcpy.S b/arch/sparc/lib/NG2memcpy.S
index 64dcd6cdb606..bcb21b3a82f1 100644
--- a/arch/sparc/lib/NG2memcpy.S
+++ b/arch/sparc/lib/NG2memcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG2memcpy.S: Niagara-2 optimized memcpy.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NG2patch.S b/arch/sparc/lib/NG2patch.S
index 56ccc19adde8..72431b24491a 100644
--- a/arch/sparc/lib/NG2patch.S
+++ b/arch/sparc/lib/NG2patch.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG2patch.S: Patch Ultra-I routines with Niagara-2 variant.
*
* Copyright (C) 2007 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/lib/NG4clear_page.S b/arch/sparc/lib/NG4clear_page.S
index e16c88204a42..97e2678d042a 100644
--- a/arch/sparc/lib/NG4clear_page.S
+++ b/arch/sparc/lib/NG4clear_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG4copy_page.S: Niagara-4 optimized clear page.
*
* Copyright (C) 2012 (davem@davemloft.net)
diff --git a/arch/sparc/lib/NG4copy_from_user.S b/arch/sparc/lib/NG4copy_from_user.S
index 5bb506bd61fa..0cac15a6db3c 100644
--- a/arch/sparc/lib/NG4copy_from_user.S
+++ b/arch/sparc/lib/NG4copy_from_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG4copy_from_user.S: Niagara-4 optimized copy from userspace.
*
* Copyright (C) 2012 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NG4copy_page.S b/arch/sparc/lib/NG4copy_page.S
index 28504e88c535..581062f8ba5f 100644
--- a/arch/sparc/lib/NG4copy_page.S
+++ b/arch/sparc/lib/NG4copy_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG4copy_page.S: Niagara-4 optimized copy page.
*
* Copyright (C) 2012 (davem@davemloft.net)
diff --git a/arch/sparc/lib/NG4copy_to_user.S b/arch/sparc/lib/NG4copy_to_user.S
index a82d4d45fc1c..c5c9abb3cb77 100644
--- a/arch/sparc/lib/NG4copy_to_user.S
+++ b/arch/sparc/lib/NG4copy_to_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG4copy_to_user.S: Niagara-4 optimized copy to userspace.
*
* Copyright (C) 2012 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NG4memcpy.S b/arch/sparc/lib/NG4memcpy.S
index b5dacd1d2078..7ad58ebe0d00 100644
--- a/arch/sparc/lib/NG4memcpy.S
+++ b/arch/sparc/lib/NG4memcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG4memcpy.S: Niagara-4 optimized memcpy.
*
* Copyright (C) 2012 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NG4memset.S b/arch/sparc/lib/NG4memset.S
index 7c0c81f18837..f81ee5419e2c 100644
--- a/arch/sparc/lib/NG4memset.S
+++ b/arch/sparc/lib/NG4memset.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG4memset.S: Niagara-4 optimized memset/bzero.
*
* Copyright (C) 2012 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NG4patch.S b/arch/sparc/lib/NG4patch.S
index 3cc0f8cc95df..aa58ab39f9a6 100644
--- a/arch/sparc/lib/NG4patch.S
+++ b/arch/sparc/lib/NG4patch.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NG4patch.S: Patch Ultra-I routines with Niagara-4 variant.
*
* Copyright (C) 2012 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/lib/NGbzero.S b/arch/sparc/lib/NGbzero.S
index 33053bdf3766..19327614d57d 100644
--- a/arch/sparc/lib/NGbzero.S
+++ b/arch/sparc/lib/NGbzero.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NGbzero.S: Niagara optimized memset/clear_user.
*
* Copyright (C) 2006 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NGcopy_from_user.S b/arch/sparc/lib/NGcopy_from_user.S
index 2333b6f3e824..9abc49fcdbbe 100644
--- a/arch/sparc/lib/NGcopy_from_user.S
+++ b/arch/sparc/lib/NGcopy_from_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NGcopy_from_user.S: Niagara optimized copy from userspace.
*
* Copyright (C) 2006, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NGcopy_to_user.S b/arch/sparc/lib/NGcopy_to_user.S
index 07ba20bc4ea4..9cbe2f18e5cc 100644
--- a/arch/sparc/lib/NGcopy_to_user.S
+++ b/arch/sparc/lib/NGcopy_to_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NGcopy_to_user.S: Niagara optimized copy to userspace.
*
* Copyright (C) 2006, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NGmemcpy.S b/arch/sparc/lib/NGmemcpy.S
index cd654a719b27..8e4d22a6ba0b 100644
--- a/arch/sparc/lib/NGmemcpy.S
+++ b/arch/sparc/lib/NGmemcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NGmemcpy.S: Niagara optimized memcpy.
*
* Copyright (C) 2006, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/NGpage.S b/arch/sparc/lib/NGpage.S
index 423d46e2258b..88fec7818065 100644
--- a/arch/sparc/lib/NGpage.S
+++ b/arch/sparc/lib/NGpage.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NGpage.S: Niagara optimize clear and copy page.
*
* Copyright (C) 2006 (davem@davemloft.net)
diff --git a/arch/sparc/lib/NGpatch.S b/arch/sparc/lib/NGpatch.S
index 62ccda7e7b38..e9f843f1063e 100644
--- a/arch/sparc/lib/NGpatch.S
+++ b/arch/sparc/lib/NGpatch.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* NGpatch.S: Patch Ultra-I routines with Niagara variant.
*
* Copyright (C) 2006 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/lib/PeeCeeI.c b/arch/sparc/lib/PeeCeeI.c
index e6d183675990..cde4c9a51b2e 100644
--- a/arch/sparc/lib/PeeCeeI.c
+++ b/arch/sparc/lib/PeeCeeI.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PeeCeeI.c: The emerging standard...
*
diff --git a/arch/sparc/lib/U1copy_from_user.S b/arch/sparc/lib/U1copy_from_user.S
index 9a6e68a9bf4a..bf08d1c78836 100644
--- a/arch/sparc/lib/U1copy_from_user.S
+++ b/arch/sparc/lib/U1copy_from_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* U1copy_from_user.S: UltraSparc-I/II/IIi/IIe optimized copy from userspace.
*
* Copyright (C) 1999, 2000, 2004 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/lib/U1copy_to_user.S b/arch/sparc/lib/U1copy_to_user.S
index d7b28491eddf..15169851e7ab 100644
--- a/arch/sparc/lib/U1copy_to_user.S
+++ b/arch/sparc/lib/U1copy_to_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* U1copy_to_user.S: UltraSparc-I/II/IIi/IIe optimized copy to userspace.
*
* Copyright (C) 1999, 2000, 2004 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/lib/U1memcpy.S b/arch/sparc/lib/U1memcpy.S
index 4f0d50b33a72..a6f4ee391897 100644
--- a/arch/sparc/lib/U1memcpy.S
+++ b/arch/sparc/lib/U1memcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* U1memcpy.S: UltraSPARC-I/II/IIi/IIe optimized memcpy.
*
* Copyright (C) 1997, 2004 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/lib/U3copy_from_user.S b/arch/sparc/lib/U3copy_from_user.S
index db73010a1af8..9c891e9edc7b 100644
--- a/arch/sparc/lib/U3copy_from_user.S
+++ b/arch/sparc/lib/U3copy_from_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* U3copy_from_user.S: UltraSparc-III optimized copy from userspace.
*
* Copyright (C) 1999, 2000, 2004 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/lib/U3copy_to_user.S b/arch/sparc/lib/U3copy_to_user.S
index f48fb87fe9f2..da424608272c 100644
--- a/arch/sparc/lib/U3copy_to_user.S
+++ b/arch/sparc/lib/U3copy_to_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* U3copy_to_user.S: UltraSparc-III optimized copy to userspace.
*
* Copyright (C) 1999, 2000, 2004 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/lib/U3memcpy.S b/arch/sparc/lib/U3memcpy.S
index f9b42b3c63b0..9248d59c734c 100644
--- a/arch/sparc/lib/U3memcpy.S
+++ b/arch/sparc/lib/U3memcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* U3memcpy.S: UltraSparc-III optimized memcpy.
*
* Copyright (C) 1999, 2000, 2004 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/lib/U3patch.S b/arch/sparc/lib/U3patch.S
index 91cd6539b6e1..9a888088f3c9 100644
--- a/arch/sparc/lib/U3patch.S
+++ b/arch/sparc/lib/U3patch.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* U3patch.S: Patch Ultra-I routines with Ultra-III variant.
*
* Copyright (C) 2004 David S. Miller <davem@redhat.com>
diff --git a/arch/sparc/lib/VISsave.S b/arch/sparc/lib/VISsave.S
index 1c7b6a39b942..9c8eb2017d5b 100644
--- a/arch/sparc/lib/VISsave.S
+++ b/arch/sparc/lib/VISsave.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* VISsave.S: Code for saving FPU register state for
* VIS routines. One should not call this directly,
diff --git a/arch/sparc/lib/ashldi3.S b/arch/sparc/lib/ashldi3.S
index c8b1cf71bc73..2d72de88af90 100644
--- a/arch/sparc/lib/ashldi3.S
+++ b/arch/sparc/lib/ashldi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ashldi3.S: GCC emits these for certain drivers playing
* with long longs.
diff --git a/arch/sparc/lib/ashrdi3.S b/arch/sparc/lib/ashrdi3.S
index 4310256e7964..05dfda9f5005 100644
--- a/arch/sparc/lib/ashrdi3.S
+++ b/arch/sparc/lib/ashrdi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ashrdi3.S: The filesystem code creates all kinds of references to
* this little routine on the sparc with gcc.
diff --git a/arch/sparc/lib/atomic32.c b/arch/sparc/lib/atomic32.c
index 2c373329d5cb..5010df497387 100644
--- a/arch/sparc/lib/atomic32.c
+++ b/arch/sparc/lib/atomic32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* atomic32.c: 32-bit atomic_t implementation
*
diff --git a/arch/sparc/lib/atomic_64.S b/arch/sparc/lib/atomic_64.S
index ce17c3094ba6..456b65a30ecf 100644
--- a/arch/sparc/lib/atomic_64.S
+++ b/arch/sparc/lib/atomic_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* atomic.S: These things are too big to do inline.
*
* Copyright (C) 1999, 2007 2012 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/bitext.c b/arch/sparc/lib/bitext.c
index 8ec4e9c0251a..32a5c1d9459c 100644
--- a/arch/sparc/lib/bitext.c
+++ b/arch/sparc/lib/bitext.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* bitext.c: kernel little helper (of bit shuffling variety).
*
diff --git a/arch/sparc/lib/bitops.S b/arch/sparc/lib/bitops.S
index 7031bf1587cb..9d647f977618 100644
--- a/arch/sparc/lib/bitops.S
+++ b/arch/sparc/lib/bitops.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* bitops.S: Sparc64 atomic bit operations.
*
* Copyright (C) 2000, 2007 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/blockops.S b/arch/sparc/lib/blockops.S
index 1f2692d59d18..76ddd1ff6833 100644
--- a/arch/sparc/lib/blockops.S
+++ b/arch/sparc/lib/blockops.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* blockops.S: Common block zero optimized routines.
*
diff --git a/arch/sparc/lib/bzero.S b/arch/sparc/lib/bzero.S
index 3bb1914c4fa4..87fec4cbe10c 100644
--- a/arch/sparc/lib/bzero.S
+++ b/arch/sparc/lib/bzero.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* bzero.S: Simple prefetching memset, bzero, and clear_user
* implementations.
*
diff --git a/arch/sparc/lib/checksum_32.S b/arch/sparc/lib/checksum_32.S
index c9d8b6232111..6a5469c97246 100644
--- a/arch/sparc/lib/checksum_32.S
+++ b/arch/sparc/lib/checksum_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* checksum.S: Sparc optimized checksum code.
*
* Copyright(C) 1995 Linus Torvalds
diff --git a/arch/sparc/lib/checksum_64.S b/arch/sparc/lib/checksum_64.S
index 6cfa521f444d..9700ef1730df 100644
--- a/arch/sparc/lib/checksum_64.S
+++ b/arch/sparc/lib/checksum_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* checksum.S: Sparc V9 optimized checksum code.
*
* Copyright(C) 1995 Linus Torvalds
diff --git a/arch/sparc/lib/clear_page.S b/arch/sparc/lib/clear_page.S
index f30d6b78afbd..8a6c783a6301 100644
--- a/arch/sparc/lib/clear_page.S
+++ b/arch/sparc/lib/clear_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* clear_page.S: UltraSparc optimized clear page.
*
* Copyright (C) 1996, 1998, 1999, 2000, 2004 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/lib/cmpdi2.c b/arch/sparc/lib/cmpdi2.c
index 8c1306437ed1..333367fe7353 100644
--- a/arch/sparc/lib/cmpdi2.c
+++ b/arch/sparc/lib/cmpdi2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include "libgcc.h"
diff --git a/arch/sparc/lib/copy_in_user.S b/arch/sparc/lib/copy_in_user.S
index 1b73bb80aeb0..66e90bf528e2 100644
--- a/arch/sparc/lib/copy_in_user.S
+++ b/arch/sparc/lib/copy_in_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* copy_in_user.S: Copy from userspace to userspace.
*
* Copyright (C) 1999, 2000, 2004 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/lib/copy_page.S b/arch/sparc/lib/copy_page.S
index 7197b7250895..c088e871e8e3 100644
--- a/arch/sparc/lib/copy_page.S
+++ b/arch/sparc/lib/copy_page.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* clear_page.S: UltraSparc optimized copy page.
*
* Copyright (C) 1996, 1998, 1999, 2000, 2004 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/lib/copy_user.S b/arch/sparc/lib/copy_user.S
index bc243ee807cc..dc72f2b970b7 100644
--- a/arch/sparc/lib/copy_user.S
+++ b/arch/sparc/lib/copy_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* copy_user.S: Sparc optimized copy_from_user and copy_to_user code.
*
* Copyright(C) 1995 Linus Torvalds
diff --git a/arch/sparc/lib/csum_copy.S b/arch/sparc/lib/csum_copy.S
index b1051e77c49a..26c644ba3ecb 100644
--- a/arch/sparc/lib/csum_copy.S
+++ b/arch/sparc/lib/csum_copy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* csum_copy.S: Checksum+copy code for sparc64
*
* Copyright (C) 2005 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/lib/csum_copy_from_user.S b/arch/sparc/lib/csum_copy_from_user.S
index e0304e6a2242..d20b9594f0c7 100644
--- a/arch/sparc/lib/csum_copy_from_user.S
+++ b/arch/sparc/lib/csum_copy_from_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* csum_copy_from_user.S: Checksum+copy from userspace.
*
* Copyright (C) 2005 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/csum_copy_to_user.S b/arch/sparc/lib/csum_copy_to_user.S
index afd01acc587c..d71c0c81e8ab 100644
--- a/arch/sparc/lib/csum_copy_to_user.S
+++ b/arch/sparc/lib/csum_copy_to_user.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* csum_copy_to_user.S: Checksum+copy to userspace.
*
* Copyright (C) 2005 David S. Miller (davem@davemloft.net)
diff --git a/arch/sparc/lib/ffs.S b/arch/sparc/lib/ffs.S
index 23aab144d28e..5a11d864fa05 100644
--- a/arch/sparc/lib/ffs.S
+++ b/arch/sparc/lib/ffs.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/export.h>
diff --git a/arch/sparc/lib/hweight.S b/arch/sparc/lib/hweight.S
index d21cf20e5c1e..e5547b22cd18 100644
--- a/arch/sparc/lib/hweight.S
+++ b/arch/sparc/lib/hweight.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/export.h>
diff --git a/arch/sparc/lib/iomap.c b/arch/sparc/lib/iomap.c
index c4d42a50ebc0..c9da9f139694 100644
--- a/arch/sparc/lib/iomap.c
+++ b/arch/sparc/lib/iomap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Implement the sparc iomap interfaces
*/
diff --git a/arch/sparc/lib/ipcsum.S b/arch/sparc/lib/ipcsum.S
index 5d61648b53dd..531d89c9d5d9 100644
--- a/arch/sparc/lib/ipcsum.S
+++ b/arch/sparc/lib/ipcsum.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/export.h>
diff --git a/arch/sparc/lib/libgcc.h b/arch/sparc/lib/libgcc.h
index b84fd797f3ea..79845c941b87 100644
--- a/arch/sparc/lib/libgcc.h
+++ b/arch/sparc/lib/libgcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_LIBGCC_H
#define __ASM_LIBGCC_H
diff --git a/arch/sparc/lib/locks.S b/arch/sparc/lib/locks.S
index f38c4e59d078..9a1289a3fb28 100644
--- a/arch/sparc/lib/locks.S
+++ b/arch/sparc/lib/locks.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* locks.S: SMP low-level lock primitives on Sparc.
*
diff --git a/arch/sparc/lib/lshrdi3.S b/arch/sparc/lib/lshrdi3.S
index c9b9373f8d81..509ca6682da8 100644
--- a/arch/sparc/lib/lshrdi3.S
+++ b/arch/sparc/lib/lshrdi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/export.h>
diff --git a/arch/sparc/lib/mcount.S b/arch/sparc/lib/mcount.S
index 194f383611c0..deba6fa0bc78 100644
--- a/arch/sparc/lib/mcount.S
+++ b/arch/sparc/lib/mcount.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2000 Anton Blanchard (anton@linuxcare.com)
*
diff --git a/arch/sparc/lib/memcmp.S b/arch/sparc/lib/memcmp.S
index cee7f30dbb61..a18076ef5af1 100644
--- a/arch/sparc/lib/memcmp.S
+++ b/arch/sparc/lib/memcmp.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Sparc optimized memcmp code.
*
* Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
diff --git a/arch/sparc/lib/memcpy.S b/arch/sparc/lib/memcpy.S
index 8913feaa7ac7..ee823d8c9215 100644
--- a/arch/sparc/lib/memcpy.S
+++ b/arch/sparc/lib/memcpy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* memcpy.S: Sparc optimized memcpy and memmove code
* Hand optimized from GNU libc's memcpy and memmove
* Copyright (C) 1991,1996 Free Software Foundation
diff --git a/arch/sparc/lib/memmove.S b/arch/sparc/lib/memmove.S
index 012cdb6ca467..3132b6316144 100644
--- a/arch/sparc/lib/memmove.S
+++ b/arch/sparc/lib/memmove.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* memmove.S: Simple memmove implementation.
*
* Copyright (C) 1997, 2004 David S. Miller (davem@redhat.com)
diff --git a/arch/sparc/lib/memscan_32.S b/arch/sparc/lib/memscan_32.S
index 51ce690c42a8..c4c2d5b3a2e9 100644
--- a/arch/sparc/lib/memscan_32.S
+++ b/arch/sparc/lib/memscan_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* memscan.S: Optimized memscan for the Sparc.
*
diff --git a/arch/sparc/lib/memscan_64.S b/arch/sparc/lib/memscan_64.S
index 5efee1f4be36..36dd638905c3 100644
--- a/arch/sparc/lib/memscan_64.S
+++ b/arch/sparc/lib/memscan_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* memscan.S: Optimized memscan for Sparc64.
*
diff --git a/arch/sparc/lib/memset.S b/arch/sparc/lib/memset.S
index e23338dbfc43..b89d42b29e34 100644
--- a/arch/sparc/lib/memset.S
+++ b/arch/sparc/lib/memset.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/arch/sparc/lib/memset.S: Sparc optimized memset, bzero and clear_user code
* Copyright (C) 1991,1996 Free Software Foundation
* Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
diff --git a/arch/sparc/lib/multi3.S b/arch/sparc/lib/multi3.S
index 703127aaf4a5..2f187b299345 100644
--- a/arch/sparc/lib/multi3.S
+++ b/arch/sparc/lib/multi3.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/export.h>
diff --git a/arch/sparc/lib/strlen.S b/arch/sparc/lib/strlen.S
index ca0e7077e871..dd111bbad5df 100644
--- a/arch/sparc/lib/strlen.S
+++ b/arch/sparc/lib/strlen.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* strlen.S: Sparc optimized strlen code
* Hand optimized from GNU libc's strlen
* Copyright (C) 1991,1996 Free Software Foundation
diff --git a/arch/sparc/lib/strncmp_32.S b/arch/sparc/lib/strncmp_32.S
index e3fe014813af..794733f036b6 100644
--- a/arch/sparc/lib/strncmp_32.S
+++ b/arch/sparc/lib/strncmp_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
* generic strncmp routine.
diff --git a/arch/sparc/lib/strncmp_64.S b/arch/sparc/lib/strncmp_64.S
index efb5f884330d..3d37d65f674c 100644
--- a/arch/sparc/lib/strncmp_64.S
+++ b/arch/sparc/lib/strncmp_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Sparc64 optimized strncmp code.
*
diff --git a/arch/sparc/lib/ucmpdi2.c b/arch/sparc/lib/ucmpdi2.c
index 1e06ed500682..82c1cccb1264 100644
--- a/arch/sparc/lib/ucmpdi2.c
+++ b/arch/sparc/lib/ucmpdi2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include "libgcc.h"
diff --git a/arch/sparc/lib/xor.S b/arch/sparc/lib/xor.S
index 45a49cb618b5..f6af7c7ee6fc 100644
--- a/arch/sparc/lib/xor.S
+++ b/arch/sparc/lib/xor.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/sparc64/lib/xor.S
*
diff --git a/arch/sparc/math-emu/math_32.c b/arch/sparc/math-emu/math_32.c
index 4d7e0fff054f..72e560ef4a09 100644
--- a/arch/sparc/math-emu/math_32.c
+++ b/arch/sparc/math-emu/math_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sparc/math-emu/math.c
*
diff --git a/arch/sparc/math-emu/math_64.c b/arch/sparc/math-emu/math_64.c
index 9647051853d3..1379dee26a65 100644
--- a/arch/sparc/math-emu/math_64.c
+++ b/arch/sparc/math-emu/math_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sparc64/math-emu/math.c
*
diff --git a/arch/sparc/math-emu/sfp-util_32.h b/arch/sparc/math-emu/sfp-util_32.h
index bb587d5f3d9d..b57375ff28ee 100644
--- a/arch/sparc/math-emu/sfp-util_32.h
+++ b/arch/sparc/math-emu/sfp-util_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/types.h>
diff --git a/arch/sparc/math-emu/sfp-util_64.h b/arch/sparc/math-emu/sfp-util_64.h
index 51320a861cc2..8fdb55aae9c8 100644
--- a/arch/sparc/math-emu/sfp-util_64.h
+++ b/arch/sparc/math-emu/sfp-util_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/sparc64/math-emu/sfp-util.h
*
diff --git a/arch/sparc/mm/Makefile b/arch/sparc/mm/Makefile
index 30c3eccfdf5a..d39075b1e3b7 100644
--- a/arch/sparc/mm/Makefile
+++ b/arch/sparc/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the linux Sparc-specific parts of the memory manager.
#
diff --git a/arch/sparc/mm/extable.c b/arch/sparc/mm/extable.c
index 2422511dc8c5..241b40641873 100644
--- a/arch/sparc/mm/extable.c
+++ b/arch/sparc/mm/extable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sparc/mm/extable.c
*/
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
index 4714061d6cd3..be3136f142a9 100644
--- a/arch/sparc/mm/fault_32.c
+++ b/arch/sparc/mm/fault_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fault.c: Page fault handlers for the Sparc.
*
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
index b84c4dd14954..815c03d7a765 100644
--- a/arch/sparc/mm/fault_64.c
+++ b/arch/sparc/mm/fault_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sparc64/mm/fault.c: Page fault handlers for the 64-bit Sparc.
*
diff --git a/arch/sparc/mm/gup.c b/arch/sparc/mm/gup.c
index d809099ffd47..5335ba3c850e 100644
--- a/arch/sparc/mm/gup.c
+++ b/arch/sparc/mm/gup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Lockless get_user_pages_fast for sparc, cribbed from powerpc
*
diff --git a/arch/sparc/mm/highmem.c b/arch/sparc/mm/highmem.c
index a454ec5ff07a..86bc2a58d26c 100644
--- a/arch/sparc/mm/highmem.c
+++ b/arch/sparc/mm/highmem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* highmem.c: virtual kernel memory mappings for high memory
*
diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c
index bcd8cdbc377f..5078b7f68890 100644
--- a/arch/sparc/mm/hugetlbpage.c
+++ b/arch/sparc/mm/hugetlbpage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SPARC64 Huge TLB page support.
*
diff --git a/arch/sparc/mm/hypersparc.S b/arch/sparc/mm/hypersparc.S
index 969f96450f69..66885a8dc50a 100644
--- a/arch/sparc/mm/hypersparc.S
+++ b/arch/sparc/mm/hypersparc.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* hypersparc.S: High speed Hypersparc mmu/cache operations.
*
diff --git a/arch/sparc/mm/init_32.c b/arch/sparc/mm/init_32.c
index 3bd0d513bddb..95fe4f081ba3 100644
--- a/arch/sparc/mm/init_32.c
+++ b/arch/sparc/mm/init_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sparc/mm/init.c
*
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index b2ba410b26f4..61bdc1270d19 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/sparc64/mm/init.c
*
diff --git a/arch/sparc/mm/init_64.h b/arch/sparc/mm/init_64.h
index a4c09603b05c..d920a75b5f14 100644
--- a/arch/sparc/mm/init_64.h
+++ b/arch/sparc/mm/init_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC64_MM_INIT_H
#define _SPARC64_MM_INIT_H
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c
index 338fb71535de..c8cb27d3ea75 100644
--- a/arch/sparc/mm/io-unit.c
+++ b/arch/sparc/mm/io-unit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* io-unit.c: IO-UNIT specific routines for memory management.
*
diff --git a/arch/sparc/mm/iommu.c b/arch/sparc/mm/iommu.c
index 491511d37e37..2c5f8a648f8c 100644
--- a/arch/sparc/mm/iommu.c
+++ b/arch/sparc/mm/iommu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* iommu.c: IOMMU specific routines for memory management.
*
diff --git a/arch/sparc/mm/leon_mm.c b/arch/sparc/mm/leon_mm.c
index 3b17b6f7895a..ec61ff1f96b7 100644
--- a/arch/sparc/mm/leon_mm.c
+++ b/arch/sparc/mm/leon_mm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/sparc/mm/leon_m.c
*
diff --git a/arch/sparc/mm/mm_32.h b/arch/sparc/mm/mm_32.h
index a6c27ca9a721..0d0b06e952a5 100644
--- a/arch/sparc/mm/mm_32.h
+++ b/arch/sparc/mm/mm_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* fault_32.c - visible as they are called from assembler */
asmlinkage int lookup_fault(unsigned long pc, unsigned long ret_pc,
unsigned long address);
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c
index 8e76ebba2986..1d70c3f6d986 100644
--- a/arch/sparc/mm/srmmu.c
+++ b/arch/sparc/mm/srmmu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* srmmu.c: SRMMU specific routines for memory management.
*
diff --git a/arch/sparc/mm/srmmu_access.S b/arch/sparc/mm/srmmu_access.S
index d0a67b2c2383..d8d2e644a5ca 100644
--- a/arch/sparc/mm/srmmu_access.S
+++ b/arch/sparc/mm/srmmu_access.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Assembler variants of srmmu access functions.
* Implemented in assembler to allow run-time patching.
* LEON uses a different ASI for MMUREGS than SUN.
diff --git a/arch/sparc/mm/swift.S b/arch/sparc/mm/swift.S
index 5d2b88d39424..f414bfd8d899 100644
--- a/arch/sparc/mm/swift.S
+++ b/arch/sparc/mm/swift.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* swift.S: MicroSparc-II mmu/cache operations.
*
diff --git a/arch/sparc/mm/tlb.c b/arch/sparc/mm/tlb.c
index ee8066c3d96c..4ae86bc0d35c 100644
--- a/arch/sparc/mm/tlb.c
+++ b/arch/sparc/mm/tlb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* arch/sparc64/mm/tlb.c
*
* Copyright (C) 2004 David S. Miller <davem@redhat.com>
diff --git a/arch/sparc/mm/tsb.c b/arch/sparc/mm/tsb.c
index 0d4b998c7d7b..75a04c1a2383 100644
--- a/arch/sparc/mm/tsb.c
+++ b/arch/sparc/mm/tsb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* arch/sparc64/mm/tsb.c
*
* Copyright (C) 2006, 2008 David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc/mm/tsunami.S b/arch/sparc/mm/tsunami.S
index bf10a345fa8b..62b742df65dc 100644
--- a/arch/sparc/mm/tsunami.S
+++ b/arch/sparc/mm/tsunami.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* tsunami.S: High speed MicroSparc-I mmu/cache operations.
*
diff --git a/arch/sparc/mm/ultra.S b/arch/sparc/mm/ultra.S
index fcf4d27a38fb..d245f89d1395 100644
--- a/arch/sparc/mm/ultra.S
+++ b/arch/sparc/mm/ultra.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ultra.S: Don't expand these all over the place...
*
diff --git a/arch/sparc/mm/viking.S b/arch/sparc/mm/viking.S
index 852257fcc82b..adaef6e7b8cf 100644
--- a/arch/sparc/mm/viking.S
+++ b/arch/sparc/mm/viking.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* viking.S: High speed Viking cache/mmu operations
*
diff --git a/arch/sparc/net/bpf_jit_32.h b/arch/sparc/net/bpf_jit_32.h
index d5c069bff5f9..cfd6a8be0eb4 100644
--- a/arch/sparc/net/bpf_jit_32.h
+++ b/arch/sparc/net/bpf_jit_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BPF_JIT_H
#define _BPF_JIT_H
diff --git a/arch/sparc/net/bpf_jit_64.h b/arch/sparc/net/bpf_jit_64.h
index 74abd45796ea..428f7fd19175 100644
--- a/arch/sparc/net/bpf_jit_64.h
+++ b/arch/sparc/net/bpf_jit_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BPF_JIT_H
#define _BPF_JIT_H
diff --git a/arch/sparc/net/bpf_jit_asm_32.S b/arch/sparc/net/bpf_jit_asm_32.S
index dcc402f5738a..a2e28e0464a3 100644
--- a/arch/sparc/net/bpf_jit_asm_32.S
+++ b/arch/sparc/net/bpf_jit_asm_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/ptrace.h>
#include "bpf_jit_32.h"
diff --git a/arch/sparc/net/bpf_jit_asm_64.S b/arch/sparc/net/bpf_jit_asm_64.S
index 3b3f14655f81..7177867052a1 100644
--- a/arch/sparc/net/bpf_jit_asm_64.S
+++ b/arch/sparc/net/bpf_jit_asm_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/ptrace.h>
#include "bpf_jit_64.h"
diff --git a/arch/sparc/net/bpf_jit_comp_32.c b/arch/sparc/net/bpf_jit_comp_32.c
index d193748548e2..09e318eb34ee 100644
--- a/arch/sparc/net/bpf_jit_comp_32.c
+++ b/arch/sparc/net/bpf_jit_comp_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/moduleloader.h>
#include <linux/workqueue.h>
#include <linux/netdevice.h>
diff --git a/arch/sparc/net/bpf_jit_comp_64.c b/arch/sparc/net/bpf_jit_comp_64.c
index c340af7b1371..5765e7e711f7 100644
--- a/arch/sparc/net/bpf_jit_comp_64.c
+++ b/arch/sparc/net/bpf_jit_comp_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/moduleloader.h>
#include <linux/workqueue.h>
#include <linux/netdevice.h>
diff --git a/arch/sparc/power/hibernate.c b/arch/sparc/power/hibernate.c
index df707a8ad311..47b06f4af1f9 100644
--- a/arch/sparc/power/hibernate.c
+++ b/arch/sparc/power/hibernate.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* hibernate.c: Hibernaton support specific for sparc64.
*
diff --git a/arch/sparc/power/hibernate_asm.S b/arch/sparc/power/hibernate_asm.S
index d7d9017dcb15..8cfaf5b6a32e 100644
--- a/arch/sparc/power/hibernate_asm.S
+++ b/arch/sparc/power/hibernate_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* hibernate_asm.S: Hibernaton support specific for sparc64.
*
diff --git a/arch/sparc/prom/Makefile b/arch/sparc/prom/Makefile
index 020300b18c0b..397b79af77f7 100644
--- a/arch/sparc/prom/Makefile
+++ b/arch/sparc/prom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the Sun Boot PROM interface library under
# Linux.
#
diff --git a/arch/sparc/prom/bootstr_32.c b/arch/sparc/prom/bootstr_32.c
index d2b49d2365e7..e3b731ff00f0 100644
--- a/arch/sparc/prom/bootstr_32.c
+++ b/arch/sparc/prom/bootstr_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* bootstr.c: Boot string/argument acquisition from the PROM.
*
diff --git a/arch/sparc/prom/bootstr_64.c b/arch/sparc/prom/bootstr_64.c
index 7149e77714a4..f1cc34d99eec 100644
--- a/arch/sparc/prom/bootstr_64.c
+++ b/arch/sparc/prom/bootstr_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* bootstr.c: Boot string/argument acquisition from the PROM.
*
diff --git a/arch/sparc/prom/cif.S b/arch/sparc/prom/cif.S
index 8050f381f518..dd06bb1fb90c 100644
--- a/arch/sparc/prom/cif.S
+++ b/arch/sparc/prom/cif.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* cif.S: PROM entry/exit assembler trampolines.
*
* Copyright (C) 1996, 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
diff --git a/arch/sparc/prom/console_32.c b/arch/sparc/prom/console_32.c
index 1cfb50f4cb9c..6404e5bbb7e6 100644
--- a/arch/sparc/prom/console_32.c
+++ b/arch/sparc/prom/console_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* console.c: Routines that deal with sending and receiving IO
* to/from the current console device using the PROM.
diff --git a/arch/sparc/prom/console_64.c b/arch/sparc/prom/console_64.c
index f95edcc54fd5..86dace787ae6 100644
--- a/arch/sparc/prom/console_64.c
+++ b/arch/sparc/prom/console_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* console.c: Routines that deal with sending and receiving IO
* to/from the current console device using the PROM.
*
diff --git a/arch/sparc/prom/init_32.c b/arch/sparc/prom/init_32.c
index 9ac30c2b7dba..d20470166cb1 100644
--- a/arch/sparc/prom/init_32.c
+++ b/arch/sparc/prom/init_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* init.c: Initialize internal variables used by the PROM
* library functions.
diff --git a/arch/sparc/prom/init_64.c b/arch/sparc/prom/init_64.c
index 110b0d78b864..103aa9104318 100644
--- a/arch/sparc/prom/init_64.c
+++ b/arch/sparc/prom/init_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* init.c: Initialize internal variables used by the PROM
* library functions.
diff --git a/arch/sparc/prom/memory.c b/arch/sparc/prom/memory.c
index 3f263a64857d..269d6ab5ef5e 100644
--- a/arch/sparc/prom/memory.c
+++ b/arch/sparc/prom/memory.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* memory.c: Prom routine for acquiring various bits of information
* about RAM on the machine, both virtual and physical.
*
diff --git a/arch/sparc/prom/misc_32.c b/arch/sparc/prom/misc_32.c
index 8dc0b6b271e8..625750924860 100644
--- a/arch/sparc/prom/misc_32.c
+++ b/arch/sparc/prom/misc_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* misc.c: Miscellaneous prom functions that don't belong
* anywhere else.
diff --git a/arch/sparc/prom/misc_64.c b/arch/sparc/prom/misc_64.c
index 53a696d3eb3b..aed94cd4a1e7 100644
--- a/arch/sparc/prom/misc_64.c
+++ b/arch/sparc/prom/misc_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* misc.c: Miscellaneous prom functions that don't belong
* anywhere else.
diff --git a/arch/sparc/prom/mp.c b/arch/sparc/prom/mp.c
index 0da8256cf76f..67cf0e957e38 100644
--- a/arch/sparc/prom/mp.c
+++ b/arch/sparc/prom/mp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* mp.c: OpenBoot Prom Multiprocessor support routines. Don't call
* these on a UP or else you will halt and catch fire. ;)
diff --git a/arch/sparc/prom/p1275.c b/arch/sparc/prom/p1275.c
index 545d8bb79b65..889aa602f8d8 100644
--- a/arch/sparc/prom/p1275.c
+++ b/arch/sparc/prom/p1275.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* p1275.c: Sun IEEE 1275 PROM low level interface routines
*
diff --git a/arch/sparc/prom/printf.c b/arch/sparc/prom/printf.c
index d9682f06b3b0..dcee3dfa6de9 100644
--- a/arch/sparc/prom/printf.c
+++ b/arch/sparc/prom/printf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* printf.c: Internal prom library printf facility.
*
diff --git a/arch/sparc/prom/ranges.c b/arch/sparc/prom/ranges.c
index 6d8dc2aa94ce..20cb828bc5f4 100644
--- a/arch/sparc/prom/ranges.c
+++ b/arch/sparc/prom/ranges.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ranges.c: Handle ranges in newer proms for obio/sbus.
*
diff --git a/arch/sparc/prom/tree_32.c b/arch/sparc/prom/tree_32.c
index f30e8d038f01..0fed89375b74 100644
--- a/arch/sparc/prom/tree_32.c
+++ b/arch/sparc/prom/tree_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* tree.c: Basic device tree traversal/scanning for the Linux
* prom library.
diff --git a/arch/sparc/prom/tree_64.c b/arch/sparc/prom/tree_64.c
index bd1b2a3ac34e..989e7992d629 100644
--- a/arch/sparc/prom/tree_64.c
+++ b/arch/sparc/prom/tree_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* tree.c: Basic device tree traversal/scanning for the Linux
* prom library.
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
index 4583c0320059..02f269cfa538 100644
--- a/arch/tile/Kconfig
+++ b/arch/tile/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
diff --git a/arch/tile/Kconfig.debug b/arch/tile/Kconfig.debug
index 19734d3ab1e8..9f665d1a805f 100644
--- a/arch/tile/Kconfig.debug
+++ b/arch/tile/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/tile/configs/tilegx_defconfig b/arch/tile/configs/tilegx_defconfig
index 0d925fa0f0c1..9f94435cc44f 100644
--- a/arch/tile/configs/tilegx_defconfig
+++ b/arch/tile/configs/tilegx_defconfig
@@ -409,5 +409,4 @@ CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=m
diff --git a/arch/tile/configs/tilepro_defconfig b/arch/tile/configs/tilepro_defconfig
index 149d8e8eacb8..1c5bd4f8ffca 100644
--- a/arch/tile/configs/tilepro_defconfig
+++ b/arch/tile/configs/tilepro_defconfig
@@ -189,7 +189,6 @@ CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
-CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
@@ -521,7 +520,6 @@ CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=m
CONFIG_CRC_CCITT=m
CONFIG_CRC7=m
diff --git a/arch/tile/gxio/Kconfig b/arch/tile/gxio/Kconfig
index d4e10d58071b..903c8646bdd7 100644
--- a/arch/tile/gxio/Kconfig
+++ b/arch/tile/gxio/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Support direct access to TILE-Gx hardware from user space, via the
# gxio library, or from kernel space, via kernel IORPC support.
config TILE_GXIO
diff --git a/arch/tile/gxio/Makefile b/arch/tile/gxio/Makefile
index 26ae2c727467..fcc903c4cf87 100644
--- a/arch/tile/gxio/Makefile
+++ b/arch/tile/gxio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Tile-Gx device access support.
#
diff --git a/arch/tile/include/asm/div64.h b/arch/tile/include/asm/div64.h
index 9f765cdf09a5..a0a798344d5f 100644
--- a/arch/tile/include/asm/div64.h
+++ b/arch/tile/include/asm/div64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_TILE_DIV64_H
#define _ASM_TILE_DIV64_H
diff --git a/arch/tile/include/asm/irq_work.h b/arch/tile/include/asm/irq_work.h
index 48af33a61a2c..78d3b6a7b27a 100644
--- a/arch/tile/include/asm/irq_work.h
+++ b/arch/tile/include/asm/irq_work.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_IRQ_WORK_H
#define __ASM_IRQ_WORK_H
diff --git a/arch/tile/include/asm/word-at-a-time.h b/arch/tile/include/asm/word-at-a-time.h
index b66a693c2c34..2f2515867760 100644
--- a/arch/tile/include/asm/word-at-a-time.h
+++ b/arch/tile/include/asm/word-at-a-time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_WORD_AT_A_TIME_H
#define _ASM_WORD_AT_A_TIME_H
diff --git a/arch/tile/include/uapi/arch/abi.h b/arch/tile/include/uapi/arch/abi.h
index 328e62260272..df161a484730 100644
--- a/arch/tile/include/uapi/arch/abi.h
+++ b/arch/tile/include/uapi/arch/abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/chip.h b/arch/tile/include/uapi/arch/chip.h
index 4c91f90b9369..7f55c6856c89 100644
--- a/arch/tile/include/uapi/arch/chip.h
+++ b/arch/tile/include/uapi/arch/chip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/chip_tilegx.h b/arch/tile/include/uapi/arch/chip_tilegx.h
index ea8e4f2c9483..c2a71a43b21c 100644
--- a/arch/tile/include/uapi/arch/chip_tilegx.h
+++ b/arch/tile/include/uapi/arch/chip_tilegx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2011 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/chip_tilepro.h b/arch/tile/include/uapi/arch/chip_tilepro.h
index 70017699a74c..a8a3ed144dfe 100644
--- a/arch/tile/include/uapi/arch/chip_tilepro.h
+++ b/arch/tile/include/uapi/arch/chip_tilepro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/icache.h b/arch/tile/include/uapi/arch/icache.h
index 762eafa8a11e..ff85a5d77f16 100644
--- a/arch/tile/include/uapi/arch/icache.h
+++ b/arch/tile/include/uapi/arch/icache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/interrupts.h b/arch/tile/include/uapi/arch/interrupts.h
index 20f8f07d2de9..c288b5d82b4d 100644
--- a/arch/tile/include/uapi/arch/interrupts.h
+++ b/arch/tile/include/uapi/arch/interrupts.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/interrupts_32.h b/arch/tile/include/uapi/arch/interrupts_32.h
index 2efe3f68b2d6..a748752cec16 100644
--- a/arch/tile/include/uapi/arch/interrupts_32.h
+++ b/arch/tile/include/uapi/arch/interrupts_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/interrupts_64.h b/arch/tile/include/uapi/arch/interrupts_64.h
index 13c9f9182348..142eaff3c244 100644
--- a/arch/tile/include/uapi/arch/interrupts_64.h
+++ b/arch/tile/include/uapi/arch/interrupts_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2011 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/intreg.h b/arch/tile/include/uapi/arch/intreg.h
index 1cf2fbf74306..5387fb645bb8 100644
--- a/arch/tile/include/uapi/arch/intreg.h
+++ b/arch/tile/include/uapi/arch/intreg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2017 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/opcode.h b/arch/tile/include/uapi/arch/opcode.h
index 92d15229ecec..a9ce5961a028 100644
--- a/arch/tile/include/uapi/arch/opcode.h
+++ b/arch/tile/include/uapi/arch/opcode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2011 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/opcode_tilegx.h b/arch/tile/include/uapi/arch/opcode_tilegx.h
index 9e46eaa847d4..948ea544567f 100644
--- a/arch/tile/include/uapi/arch/opcode_tilegx.h
+++ b/arch/tile/include/uapi/arch/opcode_tilegx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* TILE-Gx opcode information.
*
* Copyright 2011 Tilera Corporation. All Rights Reserved.
diff --git a/arch/tile/include/uapi/arch/opcode_tilepro.h b/arch/tile/include/uapi/arch/opcode_tilepro.h
index 4451cff1a861..0d633688de63 100644
--- a/arch/tile/include/uapi/arch/opcode_tilepro.h
+++ b/arch/tile/include/uapi/arch/opcode_tilepro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* TILEPro opcode information.
*
* Copyright 2011 Tilera Corporation. All Rights Reserved.
diff --git a/arch/tile/include/uapi/arch/sim.h b/arch/tile/include/uapi/arch/sim.h
index e54b7b0527f3..c4183dcd2ea7 100644
--- a/arch/tile/include/uapi/arch/sim.h
+++ b/arch/tile/include/uapi/arch/sim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/sim_def.h b/arch/tile/include/uapi/arch/sim_def.h
index 1c069537ae41..f74f9943770d 100644
--- a/arch/tile/include/uapi/arch/sim_def.h
+++ b/arch/tile/include/uapi/arch/sim_def.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/spr_def.h b/arch/tile/include/uapi/arch/spr_def.h
index c250c5adb1a6..743428615cda 100644
--- a/arch/tile/include/uapi/arch/spr_def.h
+++ b/arch/tile/include/uapi/arch/spr_def.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/spr_def_32.h b/arch/tile/include/uapi/arch/spr_def_32.h
index 78daa3146d25..64122d6160e1 100644
--- a/arch/tile/include/uapi/arch/spr_def_32.h
+++ b/arch/tile/include/uapi/arch/spr_def_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/arch/spr_def_64.h b/arch/tile/include/uapi/arch/spr_def_64.h
index 67a6c1751e3b..d183cbb31aa7 100644
--- a/arch/tile/include/uapi/arch/spr_def_64.h
+++ b/arch/tile/include/uapi/arch/spr_def_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2011 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/auxvec.h b/arch/tile/include/uapi/asm/auxvec.h
index f497123ed980..922383ce8f4f 100644
--- a/arch/tile/include/uapi/asm/auxvec.h
+++ b/arch/tile/include/uapi/asm/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/bitsperlong.h b/arch/tile/include/uapi/asm/bitsperlong.h
index 58c771f2af2f..57cca78c0fbb 100644
--- a/arch/tile/include/uapi/asm/bitsperlong.h
+++ b/arch/tile/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/byteorder.h b/arch/tile/include/uapi/asm/byteorder.h
index 6b8fa2e1cf6e..d508e61c1e56 100644
--- a/arch/tile/include/uapi/asm/byteorder.h
+++ b/arch/tile/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2011 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/cachectl.h b/arch/tile/include/uapi/asm/cachectl.h
index 572ddcad2090..ed8bac28a1b9 100644
--- a/arch/tile/include/uapi/asm/cachectl.h
+++ b/arch/tile/include/uapi/asm/cachectl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2011 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/hardwall.h b/arch/tile/include/uapi/asm/hardwall.h
index c2169d4f4010..f02e9132ae71 100644
--- a/arch/tile/include/uapi/asm/hardwall.h
+++ b/arch/tile/include/uapi/asm/hardwall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/kvm_para.h b/arch/tile/include/uapi/asm/kvm_para.h
index 14fab8f0b957..baacc4996d18 100644
--- a/arch/tile/include/uapi/asm/kvm_para.h
+++ b/arch/tile/include/uapi/asm/kvm_para.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm-generic/kvm_para.h>
diff --git a/arch/tile/include/uapi/asm/mman.h b/arch/tile/include/uapi/asm/mman.h
index 63ee13faf17d..9b7add95926b 100644
--- a/arch/tile/include/uapi/asm/mman.h
+++ b/arch/tile/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/ptrace.h b/arch/tile/include/uapi/asm/ptrace.h
index d03b829857e8..667ed742f4dd 100644
--- a/arch/tile/include/uapi/asm/ptrace.h
+++ b/arch/tile/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/setup.h b/arch/tile/include/uapi/asm/setup.h
index e6f7da265ac3..6d1dfdddad6c 100644
--- a/arch/tile/include/uapi/asm/setup.h
+++ b/arch/tile/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/sigcontext.h b/arch/tile/include/uapi/asm/sigcontext.h
index 39ff5d1a232d..4003d5cc9202 100644
--- a/arch/tile/include/uapi/asm/sigcontext.h
+++ b/arch/tile/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/siginfo.h b/arch/tile/include/uapi/asm/siginfo.h
index e83f931aa1f0..f234d24fff55 100644
--- a/arch/tile/include/uapi/asm/siginfo.h
+++ b/arch/tile/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/signal.h b/arch/tile/include/uapi/asm/signal.h
index ef0d32d84a4c..7b3c814e00f0 100644
--- a/arch/tile/include/uapi/asm/signal.h
+++ b/arch/tile/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/stat.h b/arch/tile/include/uapi/asm/stat.h
index c0db34d56be3..ea03de7d67aa 100644
--- a/arch/tile/include/uapi/asm/stat.h
+++ b/arch/tile/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#if defined(__KERNEL__) && defined(CONFIG_COMPAT)
#define __ARCH_WANT_STAT64 /* Used for compat_sys_stat64() etc. */
#endif
diff --git a/arch/tile/include/uapi/asm/swab.h b/arch/tile/include/uapi/asm/swab.h
index 7c37b38f6c8d..36952353a31d 100644
--- a/arch/tile/include/uapi/asm/swab.h
+++ b/arch/tile/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/include/uapi/asm/unistd.h b/arch/tile/include/uapi/asm/unistd.h
index 24e9187e85a8..1a169ec92ef8 100644
--- a/arch/tile/include/uapi/asm/unistd.h
+++ b/arch/tile/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
diff --git a/arch/tile/kernel/Makefile b/arch/tile/kernel/Makefile
index 09936d0bcb42..3e43d78731a8 100644
--- a/arch/tile/kernel/Makefile
+++ b/arch/tile/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/TILE kernel.
#
diff --git a/arch/tile/kernel/hvglue.S b/arch/tile/kernel/hvglue.S
index d78ee2ad610c..70c661448638 100644
--- a/arch/tile/kernel/hvglue.S
+++ b/arch/tile/kernel/hvglue.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Hypervisor call vector addresses; see <hv/hypervisor.h> */
.macro gensym sym, val, size
.org \val
diff --git a/arch/tile/kernel/setup.c b/arch/tile/kernel/setup.c
index 6becb96c60a0..ad83c1e66dbd 100644
--- a/arch/tile/kernel/setup.c
+++ b/arch/tile/kernel/setup.c
@@ -140,7 +140,7 @@ static int __init setup_maxnodemem(char *str)
{
char *endp;
unsigned long long maxnodemem;
- long node;
+ unsigned long node;
node = str ? simple_strtoul(str, &endp, 0) : INT_MAX;
if (node >= MAX_NUMNODES || *endp != ':')
diff --git a/arch/tile/kernel/vdso/Makefile b/arch/tile/kernel/vdso/Makefile
index 71d5f5d71f79..b596a7396382 100644
--- a/arch/tile/kernel/vdso/Makefile
+++ b/arch/tile/kernel/vdso/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Symbols present in the vdso
vdso-syms = rt_sigreturn gettimeofday
diff --git a/arch/tile/kernel/vmlinux.lds.S b/arch/tile/kernel/vmlinux.lds.S
index e1baf094fba4..3558d981e336 100644
--- a/arch/tile/kernel/vmlinux.lds.S
+++ b/arch/tile/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/vmlinux.lds.h>
#include <asm/page.h>
#include <asm/cache.h>
diff --git a/arch/tile/kvm/Kconfig b/arch/tile/kvm/Kconfig
index 1e968f7550dc..efce89a8473b 100644
--- a/arch/tile/kvm/Kconfig
+++ b/arch/tile/kvm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# KVM configuration
#
diff --git a/arch/tile/lib/Makefile b/arch/tile/lib/Makefile
index c4211cbb2021..815a1fdeb2e4 100644
--- a/arch/tile/lib/Makefile
+++ b/arch/tile/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for TILE-specific library files..
#
diff --git a/arch/um/Kconfig.char b/arch/um/Kconfig.char
index f10738d68b2d..f184bde7030e 100644
--- a/arch/um/Kconfig.char
+++ b/arch/um/Kconfig.char
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "UML Character Devices"
config STDERR_CONSOLE
diff --git a/arch/um/Kconfig.common b/arch/um/Kconfig.common
index 85f6dd204ab6..d9280482a2f8 100644
--- a/arch/um/Kconfig.common
+++ b/arch/um/Kconfig.common
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config UML
bool
default y
diff --git a/arch/um/Kconfig.debug b/arch/um/Kconfig.debug
index 68205fd3b08c..967d3109689f 100644
--- a/arch/um/Kconfig.debug
+++ b/arch/um/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/um/Kconfig.net b/arch/um/Kconfig.net
index 820a56f00332..e871af24d9cd 100644
--- a/arch/um/Kconfig.net
+++ b/arch/um/Kconfig.net
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "UML Network Devices"
depends on NET
diff --git a/arch/um/Kconfig.rest b/arch/um/Kconfig.rest
index 567eb5fc21df..08327b9c0cbe 100644
--- a/arch/um/Kconfig.rest
+++ b/arch/um/Kconfig.rest
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
source "init/Kconfig"
source "kernel/Kconfig.freezer"
diff --git a/arch/um/Kconfig.um b/arch/um/Kconfig.um
index 4b2ed5858b2e..3e7f228b22e1 100644
--- a/arch/um/Kconfig.um
+++ b/arch/um/Kconfig.um
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config STATIC_LINK
bool "Force a static link"
default n
@@ -20,6 +21,7 @@ config LD_SCRIPT_DYN
bool
default y
depends on !LD_SCRIPT_STATIC
+ select MODULE_REL_CRCS if MODVERSIONS
source "fs/Kconfig.binfmt"
diff --git a/arch/um/Makefile b/arch/um/Makefile
index 6ca4f66085c1..b76fcce397a1 100644
--- a/arch/um/Makefile
+++ b/arch/um/Makefile
@@ -121,7 +121,7 @@ archheaders:
archprepare: include/generated/user_constants.h
LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static
-LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib
+LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib $(call cc-option, -no-pie)
CFLAGS_NO_HARDENING := $(call cc-option, -fno-PIC,) $(call cc-option, -fno-pic,) \
$(call cc-option, -fno-stack-protector,) \
diff --git a/arch/um/configs/i386_defconfig b/arch/um/configs/i386_defconfig
index 5636221b8785..8f114e3b0a7a 100644
--- a/arch/um/configs/i386_defconfig
+++ b/arch/um/configs/i386_defconfig
@@ -53,7 +53,6 @@ CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
-# CONFIG_INET_LRO is not set
# CONFIG_IPV6 is not set
CONFIG_UML_NET=y
CONFIG_UML_NET_ETHERTAP=y
diff --git a/arch/um/configs/x86_64_defconfig b/arch/um/configs/x86_64_defconfig
index 7a67b7ac1a7e..5d0875fc0db2 100644
--- a/arch/um/configs/x86_64_defconfig
+++ b/arch/um/configs/x86_64_defconfig
@@ -51,7 +51,6 @@ CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
-# CONFIG_INET_LRO is not set
# CONFIG_IPV6 is not set
CONFIG_UML_NET=y
CONFIG_UML_NET_ETHERTAP=y
diff --git a/arch/um/drivers/cow.h b/arch/um/drivers/cow.h
index 6673508f3426..760c507dd5b6 100644
--- a/arch/um/drivers/cow.h
+++ b/arch/um/drivers/cow.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __COW_H__
#define __COW_H__
diff --git a/arch/um/drivers/cow_sys.h b/arch/um/drivers/cow_sys.h
index 67cbee63e702..916811ef5317 100644
--- a/arch/um/drivers/cow_sys.h
+++ b/arch/um/drivers/cow_sys.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __COW_SYS_H__
#define __COW_SYS_H__
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c
index af326fb6510d..c4d162a94be9 100644
--- a/arch/um/drivers/mconsole_kern.c
+++ b/arch/um/drivers/mconsole_kern.c
@@ -148,12 +148,7 @@ void mconsole_proc(struct mc_request *req)
}
do {
- loff_t pos = file->f_pos;
- mm_segment_t old_fs = get_fs();
- set_fs(KERNEL_DS);
- len = vfs_read(file, buf, PAGE_SIZE - 1, &pos);
- set_fs(old_fs);
- file->f_pos = pos;
+ len = kernel_read(file, buf, PAGE_SIZE - 1, &file->f_pos);
if (len < 0) {
mconsole_reply(req, "Read of file failed", 1, 0);
goto out_free;
diff --git a/arch/um/drivers/slip.h b/arch/um/drivers/slip.h
index c64f8c61d274..0f3b7ca99465 100644
--- a/arch/um/drivers/slip.h
+++ b/arch/um/drivers/slip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_SLIP_H
#define __UM_SLIP_H
diff --git a/arch/um/drivers/slip_common.c b/arch/um/drivers/slip_common.c
index f597fa7c91d3..20fe4f42743d 100644
--- a/arch/um/drivers/slip_common.c
+++ b/arch/um/drivers/slip_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <string.h>
#include "slip_common.h"
#include <net_user.h>
diff --git a/arch/um/drivers/slip_common.h b/arch/um/drivers/slip_common.h
index d574e0a9dc13..d3798b5caf7f 100644
--- a/arch/um/drivers/slip_common.h
+++ b/arch/um/drivers/slip_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_SLIP_COMMON_H
#define __UM_SLIP_COMMON_H
diff --git a/arch/um/drivers/slirp.h b/arch/um/drivers/slirp.h
index 89ccf83b7577..4aef2b88249a 100644
--- a/arch/um/drivers/slirp.h
+++ b/arch/um/drivers/slirp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_SLIRP_H
#define __UM_SLIRP_H
diff --git a/arch/um/drivers/stderr_console.c b/arch/um/drivers/stderr_console.c
index d07a97f8b994..ecc3a5814932 100644
--- a/arch/um/drivers/stderr_console.c
+++ b/arch/um/drivers/stderr_console.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/console.h>
diff --git a/arch/um/include/asm/bugs.h b/arch/um/include/asm/bugs.h
index 6a72e240d5fc..4473942a0839 100644
--- a/arch/um/include/asm/bugs.h
+++ b/arch/um/include/asm/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_BUGS_H
#define __UM_BUGS_H
diff --git a/arch/um/include/asm/cache.h b/arch/um/include/asm/cache.h
index 19e1bdd67416..5c156273484b 100644
--- a/arch/um/include/asm/cache.h
+++ b/arch/um/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_CACHE_H
#define __UM_CACHE_H
diff --git a/arch/um/include/asm/common.lds.S b/arch/um/include/asm/common.lds.S
index 9e6d5997cfc4..b30d73ca29d0 100644
--- a/arch/um/include/asm/common.lds.S
+++ b/arch/um/include/asm/common.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/vmlinux.lds.h>
.fini : { *(.fini) } =0x9090
diff --git a/arch/um/include/asm/dma.h b/arch/um/include/asm/dma.h
index f88c5860520b..fdc53642c718 100644
--- a/arch/um/include/asm/dma.h
+++ b/arch/um/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_DMA_H
#define __UM_DMA_H
diff --git a/arch/um/include/asm/fixmap.h b/arch/um/include/asm/fixmap.h
index 1761fd75bf13..2c697a145ac1 100644
--- a/arch/um/include/asm/fixmap.h
+++ b/arch/um/include/asm/fixmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_FIXMAP_H
#define __UM_FIXMAP_H
diff --git a/arch/um/include/asm/hardirq.h b/arch/um/include/asm/hardirq.h
index 756f0778e327..b426796d26fd 100644
--- a/arch/um/include/asm/hardirq.h
+++ b/arch/um/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_UM_HARDIRQ_H
#define __ASM_UM_HARDIRQ_H
diff --git a/arch/um/include/asm/io.h b/arch/um/include/asm/io.h
index 8f35d574f35b..96f77b5232aa 100644
--- a/arch/um/include/asm/io.h
+++ b/arch/um/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_UM_IO_H
#define _ASM_UM_IO_H
diff --git a/arch/um/include/asm/irq.h b/arch/um/include/asm/irq.h
index 4a2037f8204b..b5cdd3f91157 100644
--- a/arch/um/include/asm/irq.h
+++ b/arch/um/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_IRQ_H
#define __UM_IRQ_H
diff --git a/arch/um/include/asm/irqflags.h b/arch/um/include/asm/irqflags.h
index 3bb221e1d5a4..cbc6c0013a64 100644
--- a/arch/um/include/asm/irqflags.h
+++ b/arch/um/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_IRQFLAGS_H
#define __UM_IRQFLAGS_H
diff --git a/arch/um/include/asm/processor-generic.h b/arch/um/include/asm/processor-generic.h
index f6d1a3f747a9..86942a492454 100644
--- a/arch/um/include/asm/processor-generic.h
+++ b/arch/um/include/asm/processor-generic.h
@@ -58,11 +58,6 @@ static inline void release_thread(struct task_struct *task)
{
}
-static inline void mm_copy_segments(struct mm_struct *from_mm,
- struct mm_struct *new_mm)
-{
-}
-
#define init_stack (init_thread_union.stack)
/*
diff --git a/arch/um/include/asm/sections.h b/arch/um/include/asm/sections.h
index cafcf684d947..a3c1fb6ed6ad 100644
--- a/arch/um/include/asm/sections.h
+++ b/arch/um/include/asm/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_SECTIONS_H
#define __UM_SECTIONS_H
diff --git a/arch/um/include/asm/setup.h b/arch/um/include/asm/setup.h
index 99f086301f4c..80ada899f254 100644
--- a/arch/um/include/asm/setup.h
+++ b/arch/um/include/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SETUP_H_INCLUDED
#define SETUP_H_INCLUDED
diff --git a/arch/um/include/asm/smp.h b/arch/um/include/asm/smp.h
index 9c3be355ed01..a8cc1d46ddcb 100644
--- a/arch/um/include/asm/smp.h
+++ b/arch/um/include/asm/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_SMP_H
#define __UM_SMP_H
diff --git a/arch/um/include/asm/stacktrace.h b/arch/um/include/asm/stacktrace.h
index 9a864328c67f..436b55952c3a 100644
--- a/arch/um/include/asm/stacktrace.h
+++ b/arch/um/include/asm/stacktrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_UML_STACKTRACE_H
#define _ASM_UML_STACKTRACE_H
diff --git a/arch/um/include/asm/sysrq.h b/arch/um/include/asm/sysrq.h
index c8d332b56b98..8fc8c65cd357 100644
--- a/arch/um/include/asm/sysrq.h
+++ b/arch/um/include/asm/sysrq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_SYSRQ_H
#define __UM_SYSRQ_H
diff --git a/arch/um/include/asm/thread_info.h b/arch/um/include/asm/thread_info.h
index 053baff03674..9300f7630d2a 100644
--- a/arch/um/include/asm/thread_info.h
+++ b/arch/um/include/asm/thread_info.h
@@ -11,6 +11,7 @@
#include <asm/types.h>
#include <asm/page.h>
#include <asm/segment.h>
+#include <sysdep/ptrace_user.h>
struct thread_info {
struct task_struct *task; /* main task structure */
@@ -22,6 +23,8 @@ struct thread_info {
0-0xBFFFFFFF for user
0-0xFFFFFFFF for kernel */
struct thread_info *real_thread; /* Points to non-IRQ stack */
+ unsigned long aux_fp_regs[FP_SIZE]; /* auxiliary fp_regs to save/restore
+ them out-of-band */
};
#define INIT_THREAD_INFO(tsk) \
diff --git a/arch/um/include/asm/timex.h b/arch/um/include/asm/timex.h
index 0f4ada08f748..e392a9a5bc9b 100644
--- a/arch/um/include/asm/timex.h
+++ b/arch/um/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_TIMEX_H
#define __UM_TIMEX_H
diff --git a/arch/um/include/asm/tlb.h b/arch/um/include/asm/tlb.h
index 344d95619d03..dce6db147f24 100644
--- a/arch/um/include/asm/tlb.h
+++ b/arch/um/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_TLB_H
#define __UM_TLB_H
diff --git a/arch/um/include/shared/common-offsets.h b/arch/um/include/shared/common-offsets.h
index c92306809029..4e99fe05576a 100644
--- a/arch/um/include/shared/common-offsets.h
+++ b/arch/um/include/shared/common-offsets.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* for use by sys-$SUBARCH/kernel-offsets.c */
DEFINE(KERNEL_MADV_REMOVE, MADV_REMOVE);
diff --git a/arch/um/include/shared/init.h b/arch/um/include/shared/init.h
index 233e2593eee0..390572daa40d 100644
--- a/arch/um/include/shared/init.h
+++ b/arch/um/include/shared/init.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UML_INIT_H
#define _LINUX_UML_INIT_H
diff --git a/arch/um/include/shared/longjmp.h b/arch/um/include/shared/longjmp.h
index 9bdddf4c405b..b3315c1f198b 100644
--- a/arch/um/include/shared/longjmp.h
+++ b/arch/um/include/shared/longjmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UML_LONGJMP_H
#define __UML_LONGJMP_H
diff --git a/arch/um/include/shared/os.h b/arch/um/include/shared/os.h
index 574e03fc7ba2..d8ddaf9790d2 100644
--- a/arch/um/include/shared/os.h
+++ b/arch/um/include/shared/os.h
@@ -278,7 +278,7 @@ extern int protect(struct mm_id * mm_idp, unsigned long addr,
extern int is_skas_winch(int pid, int fd, void *data);
extern int start_userspace(unsigned long stub_stack);
extern int copy_context_skas0(unsigned long stack, int pid);
-extern void userspace(struct uml_pt_regs *regs);
+extern void userspace(struct uml_pt_regs *regs, unsigned long *aux_fp_regs);
extern int map_stub_pages(int fd, unsigned long code, unsigned long data,
unsigned long stack);
extern void new_thread(void *stack, jmp_buf *buf, void (*handler)(void));
diff --git a/arch/um/kernel/dyn.lds.S b/arch/um/kernel/dyn.lds.S
index 4fdbcf958cd5..d417e3899700 100644
--- a/arch/um/kernel/dyn.lds.S
+++ b/arch/um/kernel/dyn.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/vmlinux.lds.h>
#include <asm/page.h>
diff --git a/arch/um/kernel/gmon_syms.c b/arch/um/kernel/gmon_syms.c
index 1bf61266da8e..f138a4a0db99 100644
--- a/arch/um/kernel/gmon_syms.c
+++ b/arch/um/kernel/gmon_syms.c
@@ -7,3 +7,10 @@
extern void __bb_init_func(void *) __attribute__((weak));
EXPORT_SYMBOL(__bb_init_func);
+
+extern void __gcov_init(void *) __attribute__((weak));
+EXPORT_SYMBOL(__gcov_init);
+extern void __gcov_merge_add(void *, unsigned int) __attribute__((weak));
+EXPORT_SYMBOL(__gcov_merge_add);
+extern void __gcov_exit(void) __attribute__((weak));
+EXPORT_SYMBOL(__gcov_exit);
diff --git a/arch/um/kernel/kmsg_dump.c b/arch/um/kernel/kmsg_dump.c
index 407d49251d6f..98bdf69e4c2e 100644
--- a/arch/um/kernel/kmsg_dump.c
+++ b/arch/um/kernel/kmsg_dump.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kmsg_dump.h>
#include <linux/console.h>
#include <shared/init.h>
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c
index 2c7f721eccbc..691b83b10649 100644
--- a/arch/um/kernel/process.c
+++ b/arch/um/kernel/process.c
@@ -131,7 +131,7 @@ void new_thread_handler(void)
* callback returns only if the kernel thread execs a process
*/
n = fn(arg);
- userspace(&current->thread.regs.regs);
+ userspace(&current->thread.regs.regs, current_thread_info()->aux_fp_regs);
}
/* Called magically, see new_thread_handler above */
@@ -150,7 +150,7 @@ void fork_handler(void)
current->thread.prev_sched = NULL;
- userspace(&current->thread.regs.regs);
+ userspace(&current->thread.regs.regs, current_thread_info()->aux_fp_regs);
}
int copy_thread(unsigned long clone_flags, unsigned long sp,
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index 0b034ebbda2a..7f69d17de354 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -98,7 +98,7 @@ static struct clocksource timer_clocksource = {
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
-static void __init timer_setup(void)
+static void __init um_timer_setup(void)
{
int err;
@@ -132,5 +132,5 @@ void read_persistent_clock(struct timespec *ts)
void __init time_init(void)
{
timer_set_signal_handler();
- late_time_init = timer_setup;
+ late_time_init = um_timer_setup;
}
diff --git a/arch/um/kernel/uml.lds.S b/arch/um/kernel/uml.lds.S
index 1840f55ed042..3d6ed6ba5b78 100644
--- a/arch/um/kernel/uml.lds.S
+++ b/arch/um/kernel/uml.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/vmlinux.lds.h>
#include <asm/page.h>
diff --git a/arch/um/os-Linux/drivers/tuntap_user.c b/arch/um/os-Linux/drivers/tuntap_user.c
index c2e6e1dad876..db24ce0d09a6 100644
--- a/arch/um/os-Linux/drivers/tuntap_user.c
+++ b/arch/um/os-Linux/drivers/tuntap_user.c
@@ -80,7 +80,7 @@ static int tuntap_open_tramp(char *gate, int *fd_out, int me, int remote,
pid = run_helper(tuntap_pre_exec, &data, argv);
if (pid < 0)
- return -pid;
+ return pid;
close(remote);
diff --git a/arch/um/os-Linux/elf_aux.c b/arch/um/os-Linux/elf_aux.c
index 1a365ddc4d02..77a9321379b7 100644
--- a/arch/um/os-Linux/elf_aux.c
+++ b/arch/um/os-Linux/elf_aux.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/um/kernel/elf_aux.c
*
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c
index 819d68656673..c94c3bd70ccd 100644
--- a/arch/um/os-Linux/skas/process.c
+++ b/arch/um/os-Linux/skas/process.c
@@ -88,12 +88,11 @@ bad_wait:
extern unsigned long current_stub_stack(void);
-static void get_skas_faultinfo(int pid, struct faultinfo *fi)
+static void get_skas_faultinfo(int pid, struct faultinfo *fi, unsigned long *aux_fp_regs)
{
int err;
- unsigned long fpregs[FP_SIZE];
- err = get_fp_registers(pid, fpregs);
+ err = get_fp_registers(pid, aux_fp_regs);
if (err < 0) {
printk(UM_KERN_ERR "save_fp_registers returned %d\n",
err);
@@ -113,7 +112,7 @@ static void get_skas_faultinfo(int pid, struct faultinfo *fi)
*/
memcpy(fi, (void *)current_stub_stack(), sizeof(*fi));
- err = put_fp_registers(pid, fpregs);
+ err = put_fp_registers(pid, aux_fp_regs);
if (err < 0) {
printk(UM_KERN_ERR "put_fp_registers returned %d\n",
err);
@@ -121,9 +120,9 @@ static void get_skas_faultinfo(int pid, struct faultinfo *fi)
}
}
-static void handle_segv(int pid, struct uml_pt_regs * regs)
+static void handle_segv(int pid, struct uml_pt_regs *regs, unsigned long *aux_fp_regs)
{
- get_skas_faultinfo(pid, &regs->faultinfo);
+ get_skas_faultinfo(pid, &regs->faultinfo, aux_fp_regs);
segv(regs->faultinfo, 0, 1, NULL);
}
@@ -332,7 +331,7 @@ int start_userspace(unsigned long stub_stack)
return err;
}
-void userspace(struct uml_pt_regs *regs)
+void userspace(struct uml_pt_regs *regs, unsigned long *aux_fp_regs)
{
int err, status, op, pid = userspace_pid[0];
/* To prevent races if using_sysemu changes under us.*/
@@ -407,11 +406,11 @@ void userspace(struct uml_pt_regs *regs)
case SIGSEGV:
if (PTRACE_FULL_FAULTINFO) {
get_skas_faultinfo(pid,
- &regs->faultinfo);
+ &regs->faultinfo, aux_fp_regs);
(*sig_info[SIGSEGV])(SIGSEGV, (struct siginfo *)&si,
regs);
}
- else handle_segv(pid, regs);
+ else handle_segv(pid, regs, aux_fp_regs);
break;
case SIGTRAP + 0x80:
handle_trap(pid, regs, local_using_sysemu);
diff --git a/arch/um/os-Linux/start_up.c b/arch/um/os-Linux/start_up.c
index b1b6b75c5b17..82bf5f8442ba 100644
--- a/arch/um/os-Linux/start_up.c
+++ b/arch/um/os-Linux/start_up.c
@@ -154,10 +154,10 @@ static int __init nosysemu_cmd_param(char *str, int* add)
__uml_setup("nosysemu", nosysemu_cmd_param,
"nosysemu\n"
-" Turns off syscall emulation patch for ptrace (SYSEMU) on.\n"
+" Turns off syscall emulation patch for ptrace (SYSEMU).\n"
" SYSEMU is a performance-patch introduced by Laurent Vivier. It changes\n"
-" behaviour of ptrace() and helps reducing host context switch rate.\n"
-" To make it working, you need a kernel patch for your host, too.\n"
+" behaviour of ptrace() and helps reduce host context switch rates.\n"
+" To make it work, you need a kernel patch for your host, too.\n"
" See http://perso.wanadoo.fr/laurent.vivier/UML/ for further \n"
" information.\n\n");
diff --git a/arch/um/os-Linux/user_syms.c b/arch/um/os-Linux/user_syms.c
index db4a034aeee1..715594fe5719 100644
--- a/arch/um/os-Linux/user_syms.c
+++ b/arch/um/os-Linux/user_syms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/module.h>
diff --git a/arch/um/scripts/Makefile.rules b/arch/um/scripts/Makefile.rules
index 15889df9b466..a4dfa7d7636e 100644
--- a/arch/um/scripts/Makefile.rules
+++ b/arch/um/scripts/Makefile.rules
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# ===========================================================================
# arch/um: Generic definitions
# ===========================================================================
diff --git a/arch/unicore32/Kconfig b/arch/unicore32/Kconfig
index 0769066929c6..d39f0bc6a046 100644
--- a/arch/unicore32/Kconfig
+++ b/arch/unicore32/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config UNICORE32
def_bool y
select ARCH_HAS_DEVMEM_IS_ALLOWED
diff --git a/arch/unicore32/Kconfig.debug b/arch/unicore32/Kconfig.debug
index f075bbe1d46f..de8dae3abc0a 100644
--- a/arch/unicore32/Kconfig.debug
+++ b/arch/unicore32/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/unicore32/include/mach/regs-ac97.h b/arch/unicore32/include/mach/regs-ac97.h
index b7563e9d6503..85c601898d02 100644
--- a/arch/unicore32/include/mach/regs-ac97.h
+++ b/arch/unicore32/include/mach/regs-ac97.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity AC97 Registers
*/
diff --git a/arch/unicore32/include/mach/regs-dmac.h b/arch/unicore32/include/mach/regs-dmac.h
index 66de9e7d1c8f..bbdc52d06a98 100644
--- a/arch/unicore32/include/mach/regs-dmac.h
+++ b/arch/unicore32/include/mach/regs-dmac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity Direct Memory Access Controller (DMAC)
*/
diff --git a/arch/unicore32/include/mach/regs-gpio.h b/arch/unicore32/include/mach/regs-gpio.h
index 0273b861ef96..806350e1ccb6 100644
--- a/arch/unicore32/include/mach/regs-gpio.h
+++ b/arch/unicore32/include/mach/regs-gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity General-Purpose Input/Output (GPIO) Registers
*/
diff --git a/arch/unicore32/include/mach/regs-i2c.h b/arch/unicore32/include/mach/regs-i2c.h
index 463d108f8bfb..b41aa7c92430 100644
--- a/arch/unicore32/include/mach/regs-i2c.h
+++ b/arch/unicore32/include/mach/regs-i2c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity Inter-integrated Circuit (I2C) Registers
*/
diff --git a/arch/unicore32/include/mach/regs-intc.h b/arch/unicore32/include/mach/regs-intc.h
index 25648f89cbd3..4eb1b5b571bb 100644
--- a/arch/unicore32/include/mach/regs-intc.h
+++ b/arch/unicore32/include/mach/regs-intc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUNITY Interrupt Controller (INTC) Registers
*/
diff --git a/arch/unicore32/include/mach/regs-nand.h b/arch/unicore32/include/mach/regs-nand.h
index a7c5563bb550..7f29939251ef 100644
--- a/arch/unicore32/include/mach/regs-nand.h
+++ b/arch/unicore32/include/mach/regs-nand.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity NAND Controller Registers
*/
diff --git a/arch/unicore32/include/mach/regs-ost.h b/arch/unicore32/include/mach/regs-ost.h
index 4a85fb463848..6c63e7b7569e 100644
--- a/arch/unicore32/include/mach/regs-ost.h
+++ b/arch/unicore32/include/mach/regs-ost.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity Operating System Timer (OST) Registers
*/
diff --git a/arch/unicore32/include/mach/regs-pci.h b/arch/unicore32/include/mach/regs-pci.h
index 6a9341686bf8..25bb307b87c3 100644
--- a/arch/unicore32/include/mach/regs-pci.h
+++ b/arch/unicore32/include/mach/regs-pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity AHB-PCI Bridge Registers
*/
diff --git a/arch/unicore32/include/mach/regs-pm.h b/arch/unicore32/include/mach/regs-pm.h
index 854844aa8f4b..777b1ace39b9 100644
--- a/arch/unicore32/include/mach/regs-pm.h
+++ b/arch/unicore32/include/mach/regs-pm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUNITY Power Manager (PM) Registers
*/
diff --git a/arch/unicore32/include/mach/regs-ps2.h b/arch/unicore32/include/mach/regs-ps2.h
index 17d4e6dc0069..d539d7482462 100644
--- a/arch/unicore32/include/mach/regs-ps2.h
+++ b/arch/unicore32/include/mach/regs-ps2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity PS2 Controller Registers
*/
diff --git a/arch/unicore32/include/mach/regs-resetc.h b/arch/unicore32/include/mach/regs-resetc.h
index 39900cf4c936..5f2b9d77a9ec 100644
--- a/arch/unicore32/include/mach/regs-resetc.h
+++ b/arch/unicore32/include/mach/regs-resetc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity Reset Controller (RC) Registers
*/
diff --git a/arch/unicore32/include/mach/regs-rtc.h b/arch/unicore32/include/mach/regs-rtc.h
index e94ca193271d..f2f7f47eb65e 100644
--- a/arch/unicore32/include/mach/regs-rtc.h
+++ b/arch/unicore32/include/mach/regs-rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity Real-Time Clock (RTC) control registers
*/
diff --git a/arch/unicore32/include/mach/regs-sdc.h b/arch/unicore32/include/mach/regs-sdc.h
index 1303ecf660ba..658bfaf4cb3c 100644
--- a/arch/unicore32/include/mach/regs-sdc.h
+++ b/arch/unicore32/include/mach/regs-sdc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity Multi-Media Card and Security Digital Card (MMC/SD) Registers
*/
diff --git a/arch/unicore32/include/mach/regs-spi.h b/arch/unicore32/include/mach/regs-spi.h
index de16895e2dc0..3460647a9c2a 100644
--- a/arch/unicore32/include/mach/regs-spi.h
+++ b/arch/unicore32/include/mach/regs-spi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity Serial Peripheral Interface (SPI) Registers
*/
diff --git a/arch/unicore32/include/mach/regs-umal.h b/arch/unicore32/include/mach/regs-umal.h
index aa22df74e11d..7023089c61c6 100644
--- a/arch/unicore32/include/mach/regs-umal.h
+++ b/arch/unicore32/include/mach/regs-umal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity Ultra Media Access Layer (UMAL) Ethernet MAC Registers
*/
diff --git a/arch/unicore32/include/mach/regs-unigfx.h b/arch/unicore32/include/mach/regs-unigfx.h
index faf8b287fccf..553d1157c6b2 100644
--- a/arch/unicore32/include/mach/regs-unigfx.h
+++ b/arch/unicore32/include/mach/regs-unigfx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PKUnity UNIGFX Registers
*/
diff --git a/arch/unicore32/include/uapi/asm/byteorder.h b/arch/unicore32/include/uapi/asm/byteorder.h
index ebe1b3fef3e3..864fe4814cf4 100644
--- a/arch/unicore32/include/uapi/asm/byteorder.h
+++ b/arch/unicore32/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/arch/unicore32/include/asm/byteorder.h
*
diff --git a/arch/unicore32/include/uapi/asm/ptrace.h b/arch/unicore32/include/uapi/asm/ptrace.h
index 187aa2e98a53..2820de83e37d 100644
--- a/arch/unicore32/include/uapi/asm/ptrace.h
+++ b/arch/unicore32/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/arch/unicore32/include/asm/ptrace.h
*
diff --git a/arch/unicore32/include/uapi/asm/sigcontext.h b/arch/unicore32/include/uapi/asm/sigcontext.h
index 6a2d7671c052..79e56f28e4b5 100644
--- a/arch/unicore32/include/uapi/asm/sigcontext.h
+++ b/arch/unicore32/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/arch/unicore32/include/asm/sigcontext.h
*
diff --git a/arch/unicore32/include/uapi/asm/unistd.h b/arch/unicore32/include/uapi/asm/unistd.h
index 1f63c476528e..65856eaab163 100644
--- a/arch/unicore32/include/uapi/asm/unistd.h
+++ b/arch/unicore32/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/arch/unicore32/include/asm/unistd.h
*
diff --git a/arch/unicore32/kernel/Makefile b/arch/unicore32/kernel/Makefile
index 607a72f2ae35..2f79aa56735b 100644
--- a/arch/unicore32/kernel/Makefile
+++ b/arch/unicore32/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/unicore32/kernel/ksyms.h b/arch/unicore32/kernel/ksyms.h
index 31472ad9467a..5d2d5ba324ac 100644
--- a/arch/unicore32/kernel/ksyms.h
+++ b/arch/unicore32/kernel/ksyms.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* libgcc functions - functions that are used internally by the
* compiler... (prototypes are not correct though, but that
diff --git a/arch/unicore32/lib/Makefile b/arch/unicore32/lib/Makefile
index 87229a558b36..098981a01841 100644
--- a/arch/unicore32/lib/Makefile
+++ b/arch/unicore32/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/unicore32/lib/Makefile
#
diff --git a/arch/unicore32/mm/Kconfig b/arch/unicore32/mm/Kconfig
index 5f77fb3c63be..c256460cd363 100644
--- a/arch/unicore32/mm/Kconfig
+++ b/arch/unicore32/mm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
comment "Processor Type"
# Select CPU types depending on the architecture selected. This selects
diff --git a/arch/unicore32/mm/Makefile b/arch/unicore32/mm/Makefile
index 46c166699319..681c0ef5ec9e 100644
--- a/arch/unicore32/mm/Makefile
+++ b/arch/unicore32/mm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux unicore-specific parts of the memory manager.
#
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 971feac13506..2fdb23313dd5 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Select 32 or 64 bit
config 64BIT
bool "64-bit kernel" if ARCH = "x86"
diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
index 3ba5ff2f2d08..65a9a4716e34 100644
--- a/arch/x86/Kconfig.cpu
+++ b/arch/x86/Kconfig.cpu
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Put here option for CPU selection and depending optimization
choice
prompt "Processor family"
diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
index 71a48a30fc84..90b123056f4b 100644
--- a/arch/x86/Kconfig.debug
+++ b/arch/x86/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
config TRACE_IRQFLAGS_SUPPORT
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 6276572259c8..a20eacd9c7e9 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Unified Makefile for i386 and x86_64
# select defconfig based on actual architecture
diff --git a/arch/x86/Makefile.um b/arch/x86/Makefile.um
index 5b7e898ffd9a..45af19921ebd 100644
--- a/arch/x86/Makefile.um
+++ b/arch/x86/Makefile.um
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
core-y += arch/x86/crypto/
ifeq ($(CONFIG_X86_32),y)
diff --git a/arch/x86/Makefile_32.cpu b/arch/x86/Makefile_32.cpu
index f3717d36718a..1f5faf8606b4 100644
--- a/arch/x86/Makefile_32.cpu
+++ b/arch/x86/Makefile_32.cpu
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# CPU tuning section - shared with UML.
# Must change only cflags-y (or [yn]), not CFLAGS! That makes a difference for UML.
diff --git a/arch/x86/boot/code16gcc.h b/arch/x86/boot/code16gcc.h
index 5ff426535397..e19fd7536307 100644
--- a/arch/x86/boot/code16gcc.h
+++ b/arch/x86/boot/code16gcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#
# code16gcc.h
#
diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
index 8a958274b54c..4b7575b00563 100644
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/arch/x86/boot/compressed/Makefile
#
diff --git a/arch/x86/boot/compressed/cmdline.c b/arch/x86/boot/compressed/cmdline.c
index 9dc1ce6ba3c0..0cb325734cfb 100644
--- a/arch/x86/boot/compressed/cmdline.c
+++ b/arch/x86/boot/compressed/cmdline.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "misc.h"
#if CONFIG_EARLY_PRINTK || CONFIG_RANDOMIZE_BASE
diff --git a/arch/x86/boot/compressed/cpuflags.c b/arch/x86/boot/compressed/cpuflags.c
index aa313466118b..6448a8196d32 100644
--- a/arch/x86/boot/compressed/cpuflags.c
+++ b/arch/x86/boot/compressed/cpuflags.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#ifdef CONFIG_RANDOMIZE_BASE
#include "../cpuflags.c"
diff --git a/arch/x86/boot/compressed/eboot.h b/arch/x86/boot/compressed/eboot.h
index c0223f1a89d7..e799dc5c6448 100644
--- a/arch/x86/boot/compressed/eboot.h
+++ b/arch/x86/boot/compressed/eboot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BOOT_COMPRESSED_EBOOT_H
#define BOOT_COMPRESSED_EBOOT_H
diff --git a/arch/x86/boot/compressed/efi_stub_32.S b/arch/x86/boot/compressed/efi_stub_32.S
index a53440e81d52..257e341fd2c8 100644
--- a/arch/x86/boot/compressed/efi_stub_32.S
+++ b/arch/x86/boot/compressed/efi_stub_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* EFI call stub for IA32.
*
diff --git a/arch/x86/boot/compressed/efi_thunk_64.S b/arch/x86/boot/compressed/efi_thunk_64.S
index 630384a4c14a..bff9ab7c6317 100644
--- a/arch/x86/boot/compressed/efi_thunk_64.S
+++ b/arch/x86/boot/compressed/efi_thunk_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2014, 2015 Intel Corporation; author Matt Fleming
*
diff --git a/arch/x86/boot/compressed/error.c b/arch/x86/boot/compressed/error.c
index 31922023de49..c881878e56d3 100644
--- a/arch/x86/boot/compressed/error.c
+++ b/arch/x86/boot/compressed/error.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Callers outside of misc.c need access to the error reporting routines,
* but the *_putstr() functions need to stay in misc.c because of how
diff --git a/arch/x86/boot/compressed/error.h b/arch/x86/boot/compressed/error.h
index d732e608e3af..1de5821184f1 100644
--- a/arch/x86/boot/compressed/error.h
+++ b/arch/x86/boot/compressed/error.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BOOT_COMPRESSED_ERROR_H
#define BOOT_COMPRESSED_ERROR_H
diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
index 11c68cf53d4e..37380c0d5999 100644
--- a/arch/x86/boot/compressed/head_32.S
+++ b/arch/x86/boot/compressed/head_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/boot/head.S
*
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index b4a5d284391c..beb255b66447 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/boot/head.S
*
diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c
index 17818ba6906f..a63fbc25ce84 100644
--- a/arch/x86/boot/compressed/kaslr.c
+++ b/arch/x86/boot/compressed/kaslr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* kaslr.c
*
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
index c14217cd0155..b50c42455e25 100644
--- a/arch/x86/boot/compressed/misc.c
+++ b/arch/x86/boot/compressed/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* misc.c
*
diff --git a/arch/x86/boot/compressed/misc.h b/arch/x86/boot/compressed/misc.h
index 766a5211f827..32d4ec2e0243 100644
--- a/arch/x86/boot/compressed/misc.h
+++ b/arch/x86/boot/compressed/misc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BOOT_COMPRESSED_MISC_H
#define BOOT_COMPRESSED_MISC_H
diff --git a/arch/x86/boot/compressed/pagetable.c b/arch/x86/boot/compressed/pagetable.c
index f1aa43854bed..972319ff5b01 100644
--- a/arch/x86/boot/compressed/pagetable.c
+++ b/arch/x86/boot/compressed/pagetable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This code is used on x86_64 to create page table identity mappings on
* demand by building up a new set of page tables (or appending to the
diff --git a/arch/x86/boot/compressed/string.c b/arch/x86/boot/compressed/string.c
index cea140ce6b42..19dbbcdd1a53 100644
--- a/arch/x86/boot/compressed/string.c
+++ b/arch/x86/boot/compressed/string.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This provides an optimized implementation of memcpy, and a simplified
* implementation of memset and memmove. These are used here because the
diff --git a/arch/x86/boot/compressed/vmlinux.lds.S b/arch/x86/boot/compressed/vmlinux.lds.S
index e24e0a0c90c9..f491bbde8493 100644
--- a/arch/x86/boot/compressed/vmlinux.lds.S
+++ b/arch/x86/boot/compressed/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/vmlinux.lds.h>
OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT)
diff --git a/arch/x86/boot/cpuflags.c b/arch/x86/boot/cpuflags.c
index 9e77c23c2422..a0b75f73dc63 100644
--- a/arch/x86/boot/cpuflags.c
+++ b/arch/x86/boot/cpuflags.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include "bitops.h"
diff --git a/arch/x86/boot/cpuflags.h b/arch/x86/boot/cpuflags.h
index 15ad56a3f905..2e20814d3ce3 100644
--- a/arch/x86/boot/cpuflags.h
+++ b/arch/x86/boot/cpuflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BOOT_CPUFLAGS_H
#define BOOT_CPUFLAGS_H
diff --git a/arch/x86/boot/ctype.h b/arch/x86/boot/ctype.h
index 020f137df7a2..8f5ef2994b5e 100644
--- a/arch/x86/boot/ctype.h
+++ b/arch/x86/boot/ctype.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BOOT_CTYPE_H
#define BOOT_CTYPE_H
diff --git a/arch/x86/boot/early_serial_console.c b/arch/x86/boot/early_serial_console.c
index f0b8d6d93164..b25c53527a94 100644
--- a/arch/x86/boot/early_serial_console.c
+++ b/arch/x86/boot/early_serial_console.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Serial port routines for use during early boot reporting. This code is
* included from both the compressed kernel and the regular kernel.
diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
index 1bb08ecffd24..9c7ea597eee6 100644
--- a/arch/x86/boot/header.S
+++ b/arch/x86/boot/header.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* header.S
*
diff --git a/arch/x86/boot/string.h b/arch/x86/boot/string.h
index f274a50db5fa..3d78e27077f4 100644
--- a/arch/x86/boot/string.h
+++ b/arch/x86/boot/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BOOT_STRING_H
#define BOOT_STRING_H
diff --git a/arch/x86/boot/tools/build.c b/arch/x86/boot/tools/build.c
index 0702d2531bc7..d4e6cd4577e5 100644
--- a/arch/x86/boot/tools/build.c
+++ b/arch/x86/boot/tools/build.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 1997 Martin Mares
diff --git a/arch/x86/crypto/Makefile b/arch/x86/crypto/Makefile
index 9e32d40d71bd..5f07333bb224 100644
--- a/arch/x86/crypto/Makefile
+++ b/arch/x86/crypto/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Arch-specific CryptoAPI modules.
#
diff --git a/arch/x86/crypto/blowfish-x86_64-asm_64.S b/arch/x86/crypto/blowfish-x86_64-asm_64.S
index 246c67006ed0..8c1fcb6bad21 100644
--- a/arch/x86/crypto/blowfish-x86_64-asm_64.S
+++ b/arch/x86/crypto/blowfish-x86_64-asm_64.S
@@ -33,7 +33,7 @@
#define s3 ((16 + 2 + (3 * 256)) * 4)
/* register macros */
-#define CTX %rdi
+#define CTX %r12
#define RIO %rsi
#define RX0 %rax
@@ -56,12 +56,12 @@
#define RX2bh %ch
#define RX3bh %dh
-#define RT0 %rbp
+#define RT0 %rdi
#define RT1 %rsi
#define RT2 %r8
#define RT3 %r9
-#define RT0d %ebp
+#define RT0d %edi
#define RT1d %esi
#define RT2d %r8d
#define RT3d %r9d
@@ -120,13 +120,14 @@
ENTRY(__blowfish_enc_blk)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
* %rcx: bool, if true: xor output
*/
- movq %rbp, %r11;
+ movq %r12, %r11;
+ movq %rdi, CTX;
movq %rsi, %r10;
movq %rdx, RIO;
@@ -142,7 +143,7 @@ ENTRY(__blowfish_enc_blk)
round_enc(14);
add_roundkey_enc(16);
- movq %r11, %rbp;
+ movq %r11, %r12;
movq %r10, RIO;
test %cl, %cl;
@@ -157,12 +158,13 @@ ENDPROC(__blowfish_enc_blk)
ENTRY(blowfish_dec_blk)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
*/
- movq %rbp, %r11;
+ movq %r12, %r11;
+ movq %rdi, CTX;
movq %rsi, %r10;
movq %rdx, RIO;
@@ -181,7 +183,7 @@ ENTRY(blowfish_dec_blk)
movq %r10, RIO;
write_block();
- movq %r11, %rbp;
+ movq %r11, %r12;
ret;
ENDPROC(blowfish_dec_blk)
@@ -298,20 +300,21 @@ ENDPROC(blowfish_dec_blk)
ENTRY(__blowfish_enc_blk_4way)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
* %rcx: bool, if true: xor output
*/
- pushq %rbp;
+ pushq %r12;
pushq %rbx;
pushq %rcx;
- preload_roundkey_enc(0);
-
+ movq %rdi, CTX
movq %rsi, %r11;
movq %rdx, RIO;
+ preload_roundkey_enc(0);
+
read_block4();
round_enc4(0);
@@ -324,39 +327,40 @@ ENTRY(__blowfish_enc_blk_4way)
round_enc4(14);
add_preloaded_roundkey4();
- popq %rbp;
+ popq %r12;
movq %r11, RIO;
- test %bpl, %bpl;
+ test %r12b, %r12b;
jnz .L__enc_xor4;
write_block4();
popq %rbx;
- popq %rbp;
+ popq %r12;
ret;
.L__enc_xor4:
xor_block4();
popq %rbx;
- popq %rbp;
+ popq %r12;
ret;
ENDPROC(__blowfish_enc_blk_4way)
ENTRY(blowfish_dec_blk_4way)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
*/
- pushq %rbp;
+ pushq %r12;
pushq %rbx;
- preload_roundkey_dec(17);
- movq %rsi, %r11;
+ movq %rdi, CTX;
+ movq %rsi, %r11
movq %rdx, RIO;
+ preload_roundkey_dec(17);
read_block4();
round_dec4(17);
@@ -373,7 +377,7 @@ ENTRY(blowfish_dec_blk_4way)
write_block4();
popq %rbx;
- popq %rbp;
+ popq %r12;
ret;
ENDPROC(blowfish_dec_blk_4way)
diff --git a/arch/x86/crypto/camellia-x86_64-asm_64.S b/arch/x86/crypto/camellia-x86_64-asm_64.S
index 310319c601ed..95ba6956a7f6 100644
--- a/arch/x86/crypto/camellia-x86_64-asm_64.S
+++ b/arch/x86/crypto/camellia-x86_64-asm_64.S
@@ -75,17 +75,17 @@
#define RCD1bh %dh
#define RT0 %rsi
-#define RT1 %rbp
+#define RT1 %r12
#define RT2 %r8
#define RT0d %esi
-#define RT1d %ebp
+#define RT1d %r12d
#define RT2d %r8d
#define RT2bl %r8b
#define RXOR %r9
-#define RRBP %r10
+#define RR12 %r10
#define RDST %r11
#define RXORd %r9d
@@ -197,7 +197,7 @@ ENTRY(__camellia_enc_blk)
* %rdx: src
* %rcx: bool xor
*/
- movq %rbp, RRBP;
+ movq %r12, RR12;
movq %rcx, RXOR;
movq %rsi, RDST;
@@ -227,13 +227,13 @@ ENTRY(__camellia_enc_blk)
enc_outunpack(mov, RT1);
- movq RRBP, %rbp;
+ movq RR12, %r12;
ret;
.L__enc_xor:
enc_outunpack(xor, RT1);
- movq RRBP, %rbp;
+ movq RR12, %r12;
ret;
ENDPROC(__camellia_enc_blk)
@@ -248,7 +248,7 @@ ENTRY(camellia_dec_blk)
movl $24, RXORd;
cmovel RXORd, RT2d; /* max */
- movq %rbp, RRBP;
+ movq %r12, RR12;
movq %rsi, RDST;
movq %rdx, RIO;
@@ -271,7 +271,7 @@ ENTRY(camellia_dec_blk)
dec_outunpack();
- movq RRBP, %rbp;
+ movq RR12, %r12;
ret;
ENDPROC(camellia_dec_blk)
@@ -433,7 +433,7 @@ ENTRY(__camellia_enc_blk_2way)
*/
pushq %rbx;
- movq %rbp, RRBP;
+ movq %r12, RR12;
movq %rcx, RXOR;
movq %rsi, RDST;
movq %rdx, RIO;
@@ -461,14 +461,14 @@ ENTRY(__camellia_enc_blk_2way)
enc_outunpack2(mov, RT2);
- movq RRBP, %rbp;
+ movq RR12, %r12;
popq %rbx;
ret;
.L__enc2_xor:
enc_outunpack2(xor, RT2);
- movq RRBP, %rbp;
+ movq RR12, %r12;
popq %rbx;
ret;
ENDPROC(__camellia_enc_blk_2way)
@@ -485,7 +485,7 @@ ENTRY(camellia_dec_blk_2way)
cmovel RXORd, RT2d; /* max */
movq %rbx, RXOR;
- movq %rbp, RRBP;
+ movq %r12, RR12;
movq %rsi, RDST;
movq %rdx, RIO;
@@ -508,7 +508,7 @@ ENTRY(camellia_dec_blk_2way)
dec_outunpack2();
- movq RRBP, %rbp;
+ movq RR12, %r12;
movq RXOR, %rbx;
ret;
ENDPROC(camellia_dec_blk_2way)
diff --git a/arch/x86/crypto/cast5-avx-x86_64-asm_64.S b/arch/x86/crypto/cast5-avx-x86_64-asm_64.S
index b4a8806234ea..86107c961bb4 100644
--- a/arch/x86/crypto/cast5-avx-x86_64-asm_64.S
+++ b/arch/x86/crypto/cast5-avx-x86_64-asm_64.S
@@ -47,7 +47,7 @@
/**********************************************************************
16-way AVX cast5
**********************************************************************/
-#define CTX %rdi
+#define CTX %r15
#define RL1 %xmm0
#define RR1 %xmm1
@@ -70,8 +70,8 @@
#define RTMP %xmm15
-#define RID1 %rbp
-#define RID1d %ebp
+#define RID1 %rdi
+#define RID1d %edi
#define RID2 %rsi
#define RID2d %esi
@@ -226,7 +226,7 @@
.align 16
__cast5_enc_blk16:
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* RL1: blocks 1 and 2
* RR1: blocks 3 and 4
* RL2: blocks 5 and 6
@@ -246,9 +246,11 @@ __cast5_enc_blk16:
* RR4: encrypted blocks 15 and 16
*/
- pushq %rbp;
+ pushq %r15;
pushq %rbx;
+ movq %rdi, CTX;
+
vmovdqa .Lbswap_mask, RKM;
vmovd .Lfirst_mask, R1ST;
vmovd .L32_mask, R32;
@@ -283,7 +285,7 @@ __cast5_enc_blk16:
.L__skip_enc:
popq %rbx;
- popq %rbp;
+ popq %r15;
vmovdqa .Lbswap_mask, RKM;
@@ -298,7 +300,7 @@ ENDPROC(__cast5_enc_blk16)
.align 16
__cast5_dec_blk16:
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* RL1: encrypted blocks 1 and 2
* RR1: encrypted blocks 3 and 4
* RL2: encrypted blocks 5 and 6
@@ -318,9 +320,11 @@ __cast5_dec_blk16:
* RR4: decrypted blocks 15 and 16
*/
- pushq %rbp;
+ pushq %r15;
pushq %rbx;
+ movq %rdi, CTX;
+
vmovdqa .Lbswap_mask, RKM;
vmovd .Lfirst_mask, R1ST;
vmovd .L32_mask, R32;
@@ -356,7 +360,7 @@ __cast5_dec_blk16:
vmovdqa .Lbswap_mask, RKM;
popq %rbx;
- popq %rbp;
+ popq %r15;
outunpack_blocks(RR1, RL1, RTMP, RX, RKM);
outunpack_blocks(RR2, RL2, RTMP, RX, RKM);
@@ -372,12 +376,14 @@ ENDPROC(__cast5_dec_blk16)
ENTRY(cast5_ecb_enc_16way)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
*/
FRAME_BEGIN
+ pushq %r15;
+ movq %rdi, CTX;
movq %rsi, %r11;
vmovdqu (0*4*4)(%rdx), RL1;
@@ -400,18 +406,22 @@ ENTRY(cast5_ecb_enc_16way)
vmovdqu RR4, (6*4*4)(%r11);
vmovdqu RL4, (7*4*4)(%r11);
+ popq %r15;
FRAME_END
ret;
ENDPROC(cast5_ecb_enc_16way)
ENTRY(cast5_ecb_dec_16way)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
*/
FRAME_BEGIN
+ pushq %r15;
+
+ movq %rdi, CTX;
movq %rsi, %r11;
vmovdqu (0*4*4)(%rdx), RL1;
@@ -434,20 +444,22 @@ ENTRY(cast5_ecb_dec_16way)
vmovdqu RR4, (6*4*4)(%r11);
vmovdqu RL4, (7*4*4)(%r11);
+ popq %r15;
FRAME_END
ret;
ENDPROC(cast5_ecb_dec_16way)
ENTRY(cast5_cbc_dec_16way)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
*/
FRAME_BEGIN
-
pushq %r12;
+ pushq %r15;
+ movq %rdi, CTX;
movq %rsi, %r11;
movq %rdx, %r12;
@@ -483,23 +495,24 @@ ENTRY(cast5_cbc_dec_16way)
vmovdqu RR4, (6*16)(%r11);
vmovdqu RL4, (7*16)(%r11);
+ popq %r15;
popq %r12;
-
FRAME_END
ret;
ENDPROC(cast5_cbc_dec_16way)
ENTRY(cast5_ctr_16way)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
* %rcx: iv (big endian, 64bit)
*/
FRAME_BEGIN
-
pushq %r12;
+ pushq %r15;
+ movq %rdi, CTX;
movq %rsi, %r11;
movq %rdx, %r12;
@@ -558,8 +571,8 @@ ENTRY(cast5_ctr_16way)
vmovdqu RR4, (6*16)(%r11);
vmovdqu RL4, (7*16)(%r11);
+ popq %r15;
popq %r12;
-
FRAME_END
ret;
ENDPROC(cast5_ctr_16way)
diff --git a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S
index 952d3156a933..7f30b6f0d72c 100644
--- a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S
+++ b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S
@@ -47,7 +47,7 @@
/**********************************************************************
8-way AVX cast6
**********************************************************************/
-#define CTX %rdi
+#define CTX %r15
#define RA1 %xmm0
#define RB1 %xmm1
@@ -70,8 +70,8 @@
#define RTMP %xmm15
-#define RID1 %rbp
-#define RID1d %ebp
+#define RID1 %rdi
+#define RID1d %edi
#define RID2 %rsi
#define RID2d %esi
@@ -264,15 +264,17 @@
.align 8
__cast6_enc_blk8:
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: blocks
* output:
* RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: encrypted blocks
*/
- pushq %rbp;
+ pushq %r15;
pushq %rbx;
+ movq %rdi, CTX;
+
vmovdqa .Lbswap_mask, RKM;
vmovd .Lfirst_mask, R1ST;
vmovd .L32_mask, R32;
@@ -297,7 +299,7 @@ __cast6_enc_blk8:
QBAR(11);
popq %rbx;
- popq %rbp;
+ popq %r15;
vmovdqa .Lbswap_mask, RKM;
@@ -310,15 +312,17 @@ ENDPROC(__cast6_enc_blk8)
.align 8
__cast6_dec_blk8:
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: encrypted blocks
* output:
* RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: decrypted blocks
*/
- pushq %rbp;
+ pushq %r15;
pushq %rbx;
+ movq %rdi, CTX;
+
vmovdqa .Lbswap_mask, RKM;
vmovd .Lfirst_mask, R1ST;
vmovd .L32_mask, R32;
@@ -343,7 +347,7 @@ __cast6_dec_blk8:
QBAR(0);
popq %rbx;
- popq %rbp;
+ popq %r15;
vmovdqa .Lbswap_mask, RKM;
outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM);
@@ -354,12 +358,14 @@ ENDPROC(__cast6_dec_blk8)
ENTRY(cast6_ecb_enc_8way)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
*/
FRAME_BEGIN
+ pushq %r15;
+ movq %rdi, CTX;
movq %rsi, %r11;
load_8way(%rdx, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
@@ -368,18 +374,21 @@ ENTRY(cast6_ecb_enc_8way)
store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
+ popq %r15;
FRAME_END
ret;
ENDPROC(cast6_ecb_enc_8way)
ENTRY(cast6_ecb_dec_8way)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
*/
FRAME_BEGIN
+ pushq %r15;
+ movq %rdi, CTX;
movq %rsi, %r11;
load_8way(%rdx, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
@@ -388,20 +397,22 @@ ENTRY(cast6_ecb_dec_8way)
store_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
+ popq %r15;
FRAME_END
ret;
ENDPROC(cast6_ecb_dec_8way)
ENTRY(cast6_cbc_dec_8way)
/* input:
- * %rdi: ctx, CTX
+ * %rdi: ctx
* %rsi: dst
* %rdx: src
*/
FRAME_BEGIN
-
pushq %r12;
+ pushq %r15;
+ movq %rdi, CTX;
movq %rsi, %r11;
movq %rdx, %r12;
@@ -411,8 +422,8 @@ ENTRY(cast6_cbc_dec_8way)
store_cbc_8way(%r12, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
+ popq %r15;
popq %r12;
-
FRAME_END
ret;
ENDPROC(cast6_cbc_dec_8way)
@@ -425,9 +436,10 @@ ENTRY(cast6_ctr_8way)
* %rcx: iv (little endian, 128bit)
*/
FRAME_BEGIN
-
pushq %r12;
+ pushq %r15
+ movq %rdi, CTX;
movq %rsi, %r11;
movq %rdx, %r12;
@@ -438,8 +450,8 @@ ENTRY(cast6_ctr_8way)
store_ctr_8way(%r12, %r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
+ popq %r15;
popq %r12;
-
FRAME_END
ret;
ENDPROC(cast6_ctr_8way)
@@ -452,7 +464,9 @@ ENTRY(cast6_xts_enc_8way)
* %rcx: iv (t ⊕ αⁿ ∈ GF(2¹²⁸))
*/
FRAME_BEGIN
+ pushq %r15;
+ movq %rdi, CTX
movq %rsi, %r11;
/* regs <= src, dst <= IVs, regs <= regs xor IVs */
@@ -464,6 +478,7 @@ ENTRY(cast6_xts_enc_8way)
/* dst <= regs xor IVs(in dst) */
store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
+ popq %r15;
FRAME_END
ret;
ENDPROC(cast6_xts_enc_8way)
@@ -476,7 +491,9 @@ ENTRY(cast6_xts_dec_8way)
* %rcx: iv (t ⊕ αⁿ ∈ GF(2¹²⁸))
*/
FRAME_BEGIN
+ pushq %r15;
+ movq %rdi, CTX
movq %rsi, %r11;
/* regs <= src, dst <= IVs, regs <= regs xor IVs */
@@ -488,6 +505,7 @@ ENTRY(cast6_xts_dec_8way)
/* dst <= regs xor IVs(in dst) */
store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2);
+ popq %r15;
FRAME_END
ret;
ENDPROC(cast6_xts_dec_8way)
diff --git a/arch/x86/crypto/chacha20-avx2-x86_64.S b/arch/x86/crypto/chacha20-avx2-x86_64.S
index 3a2dc3dc6cac..f3cd26f48332 100644
--- a/arch/x86/crypto/chacha20-avx2-x86_64.S
+++ b/arch/x86/crypto/chacha20-avx2-x86_64.S
@@ -45,7 +45,7 @@ ENTRY(chacha20_8block_xor_avx2)
vzeroupper
# 4 * 32 byte stack, 32-byte aligned
- mov %rsp, %r8
+ lea 8(%rsp),%r10
and $~31, %rsp
sub $0x80, %rsp
@@ -443,6 +443,6 @@ ENTRY(chacha20_8block_xor_avx2)
vmovdqu %ymm15,0x01e0(%rsi)
vzeroupper
- mov %r8,%rsp
+ lea -8(%r10),%rsp
ret
ENDPROC(chacha20_8block_xor_avx2)
diff --git a/arch/x86/crypto/chacha20-ssse3-x86_64.S b/arch/x86/crypto/chacha20-ssse3-x86_64.S
index 3f511a7d73b8..512a2b500fd1 100644
--- a/arch/x86/crypto/chacha20-ssse3-x86_64.S
+++ b/arch/x86/crypto/chacha20-ssse3-x86_64.S
@@ -160,7 +160,7 @@ ENTRY(chacha20_4block_xor_ssse3)
# done with the slightly better performing SSSE3 byte shuffling,
# 7/12-bit word rotation uses traditional shift+OR.
- mov %rsp,%r11
+ lea 8(%rsp),%r10
sub $0x80,%rsp
and $~63,%rsp
@@ -625,6 +625,6 @@ ENTRY(chacha20_4block_xor_ssse3)
pxor %xmm1,%xmm15
movdqu %xmm15,0xf0(%rsi)
- mov %r11,%rsp
+ lea -8(%r10),%rsp
ret
ENDPROC(chacha20_4block_xor_ssse3)
diff --git a/arch/x86/crypto/des3_ede-asm_64.S b/arch/x86/crypto/des3_ede-asm_64.S
index f3e91647ca27..8e49ce117494 100644
--- a/arch/x86/crypto/des3_ede-asm_64.S
+++ b/arch/x86/crypto/des3_ede-asm_64.S
@@ -64,12 +64,12 @@
#define RW2bh %ch
#define RT0 %r15
-#define RT1 %rbp
+#define RT1 %rsi
#define RT2 %r14
#define RT3 %rdx
#define RT0d %r15d
-#define RT1d %ebp
+#define RT1d %esi
#define RT2d %r14d
#define RT3d %edx
@@ -177,13 +177,14 @@ ENTRY(des3_ede_x86_64_crypt_blk)
* %rsi: dst
* %rdx: src
*/
- pushq %rbp;
pushq %rbx;
pushq %r12;
pushq %r13;
pushq %r14;
pushq %r15;
+ pushq %rsi; /* dst */
+
read_block(%rdx, RL0, RR0);
initial_permutation(RL0, RR0);
@@ -241,6 +242,8 @@ ENTRY(des3_ede_x86_64_crypt_blk)
round1(32+15, RL0, RR0, dummy2);
final_permutation(RR0, RL0);
+
+ popq %rsi /* dst */
write_block(%rsi, RR0, RL0);
popq %r15;
@@ -248,7 +251,6 @@ ENTRY(des3_ede_x86_64_crypt_blk)
popq %r13;
popq %r12;
popq %rbx;
- popq %rbp;
ret;
ENDPROC(des3_ede_x86_64_crypt_blk)
@@ -432,13 +434,14 @@ ENTRY(des3_ede_x86_64_crypt_blk_3way)
* %rdx: src (3 blocks)
*/
- pushq %rbp;
pushq %rbx;
pushq %r12;
pushq %r13;
pushq %r14;
pushq %r15;
+ pushq %rsi /* dst */
+
/* load input */
movl 0 * 4(%rdx), RL0d;
movl 1 * 4(%rdx), RR0d;
@@ -520,6 +523,7 @@ ENTRY(des3_ede_x86_64_crypt_blk_3way)
bswapl RR2d;
bswapl RL2d;
+ popq %rsi /* dst */
movl RR0d, 0 * 4(%rsi);
movl RL0d, 1 * 4(%rsi);
movl RR1d, 2 * 4(%rsi);
@@ -532,7 +536,6 @@ ENTRY(des3_ede_x86_64_crypt_blk_3way)
popq %r13;
popq %r12;
popq %rbx;
- popq %rbp;
ret;
ENDPROC(des3_ede_x86_64_crypt_blk_3way)
diff --git a/arch/x86/crypto/salsa20-x86_64-asm_64.S b/arch/x86/crypto/salsa20-x86_64-asm_64.S
index 9279e0b2d60e..10db30d58006 100644
--- a/arch/x86/crypto/salsa20-x86_64-asm_64.S
+++ b/arch/x86/crypto/salsa20-x86_64-asm_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
# enter salsa20_encrypt_bytes
diff --git a/arch/x86/crypto/sha1-mb/Makefile b/arch/x86/crypto/sha1-mb/Makefile
index 2e14acc3da25..815ded3ba90e 100644
--- a/arch/x86/crypto/sha1-mb/Makefile
+++ b/arch/x86/crypto/sha1-mb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Arch-specific CryptoAPI modules.
#
diff --git a/arch/x86/crypto/sha1_avx2_x86_64_asm.S b/arch/x86/crypto/sha1_avx2_x86_64_asm.S
index 1eab79c9ac48..9f712a7dfd79 100644
--- a/arch/x86/crypto/sha1_avx2_x86_64_asm.S
+++ b/arch/x86/crypto/sha1_avx2_x86_64_asm.S
@@ -89,7 +89,7 @@
#define REG_RE %rdx
#define REG_RTA %r12
#define REG_RTB %rbx
-#define REG_T1 %ebp
+#define REG_T1 %r11d
#define xmm_mov vmovups
#define avx2_zeroupper vzeroupper
#define RND_F1 1
@@ -637,7 +637,6 @@ _loop3:
ENTRY(\name)
push %rbx
- push %rbp
push %r12
push %r13
push %r14
@@ -673,7 +672,6 @@ _loop3:
pop %r14
pop %r13
pop %r12
- pop %rbp
pop %rbx
ret
diff --git a/arch/x86/crypto/sha1_ssse3_asm.S b/arch/x86/crypto/sha1_ssse3_asm.S
index a4109506a5e8..6204bd53528c 100644
--- a/arch/x86/crypto/sha1_ssse3_asm.S
+++ b/arch/x86/crypto/sha1_ssse3_asm.S
@@ -37,7 +37,7 @@
#define REG_A %ecx
#define REG_B %esi
#define REG_C %edi
-#define REG_D %ebp
+#define REG_D %r12d
#define REG_E %edx
#define REG_T1 %eax
@@ -74,10 +74,10 @@
ENTRY(\name)
push %rbx
- push %rbp
push %r12
+ push %rbp
+ mov %rsp, %rbp
- mov %rsp, %r12
sub $64, %rsp # allocate workspace
and $~15, %rsp # align stack
@@ -99,10 +99,9 @@
xor %rax, %rax
rep stosq
- mov %r12, %rsp # deallocate workspace
-
- pop %r12
+ mov %rbp, %rsp # deallocate workspace
pop %rbp
+ pop %r12
pop %rbx
ret
diff --git a/arch/x86/crypto/sha256-avx-asm.S b/arch/x86/crypto/sha256-avx-asm.S
index e08888a1a5f2..001bbcf93c79 100644
--- a/arch/x86/crypto/sha256-avx-asm.S
+++ b/arch/x86/crypto/sha256-avx-asm.S
@@ -103,7 +103,7 @@ SRND = %rsi # clobbers INP
c = %ecx
d = %r8d
e = %edx
-TBL = %rbp
+TBL = %r12
a = %eax
b = %ebx
@@ -350,13 +350,13 @@ a = TMP_
ENTRY(sha256_transform_avx)
.align 32
pushq %rbx
- pushq %rbp
+ pushq %r12
pushq %r13
pushq %r14
pushq %r15
- pushq %r12
+ pushq %rbp
+ movq %rsp, %rbp
- mov %rsp, %r12
subq $STACK_SIZE, %rsp # allocate stack space
and $~15, %rsp # align stack pointer
@@ -452,13 +452,12 @@ loop2:
done_hash:
- mov %r12, %rsp
-
- popq %r12
+ mov %rbp, %rsp
+ popq %rbp
popq %r15
popq %r14
popq %r13
- popq %rbp
+ popq %r12
popq %rbx
ret
ENDPROC(sha256_transform_avx)
diff --git a/arch/x86/crypto/sha256-avx2-asm.S b/arch/x86/crypto/sha256-avx2-asm.S
index 89c8f09787d2..1420db15dcdd 100644
--- a/arch/x86/crypto/sha256-avx2-asm.S
+++ b/arch/x86/crypto/sha256-avx2-asm.S
@@ -98,8 +98,6 @@ d = %r8d
e = %edx # clobbers NUM_BLKS
y3 = %esi # clobbers INP
-
-TBL = %rbp
SRND = CTX # SRND is same register as CTX
a = %eax
@@ -531,7 +529,6 @@ STACK_SIZE = _RSP + _RSP_SIZE
ENTRY(sha256_transform_rorx)
.align 32
pushq %rbx
- pushq %rbp
pushq %r12
pushq %r13
pushq %r14
@@ -568,8 +565,6 @@ ENTRY(sha256_transform_rorx)
mov CTX, _CTX(%rsp)
loop0:
- lea K256(%rip), TBL
-
## Load first 16 dwords from two blocks
VMOVDQ 0*32(INP),XTMP0
VMOVDQ 1*32(INP),XTMP1
@@ -597,19 +592,19 @@ last_block_enter:
.align 16
loop1:
- vpaddd 0*32(TBL, SRND), X0, XFER
+ vpaddd K256+0*32(SRND), X0, XFER
vmovdqa XFER, 0*32+_XFER(%rsp, SRND)
FOUR_ROUNDS_AND_SCHED _XFER + 0*32
- vpaddd 1*32(TBL, SRND), X0, XFER
+ vpaddd K256+1*32(SRND), X0, XFER
vmovdqa XFER, 1*32+_XFER(%rsp, SRND)
FOUR_ROUNDS_AND_SCHED _XFER + 1*32
- vpaddd 2*32(TBL, SRND), X0, XFER
+ vpaddd K256+2*32(SRND), X0, XFER
vmovdqa XFER, 2*32+_XFER(%rsp, SRND)
FOUR_ROUNDS_AND_SCHED _XFER + 2*32
- vpaddd 3*32(TBL, SRND), X0, XFER
+ vpaddd K256+3*32(SRND), X0, XFER
vmovdqa XFER, 3*32+_XFER(%rsp, SRND)
FOUR_ROUNDS_AND_SCHED _XFER + 3*32
@@ -619,10 +614,11 @@ loop1:
loop2:
## Do last 16 rounds with no scheduling
- vpaddd 0*32(TBL, SRND), X0, XFER
+ vpaddd K256+0*32(SRND), X0, XFER
vmovdqa XFER, 0*32+_XFER(%rsp, SRND)
DO_4ROUNDS _XFER + 0*32
- vpaddd 1*32(TBL, SRND), X1, XFER
+
+ vpaddd K256+1*32(SRND), X1, XFER
vmovdqa XFER, 1*32+_XFER(%rsp, SRND)
DO_4ROUNDS _XFER + 1*32
add $2*32, SRND
@@ -676,9 +672,6 @@ loop3:
ja done_hash
do_last_block:
- #### do last block
- lea K256(%rip), TBL
-
VMOVDQ 0*16(INP),XWORD0
VMOVDQ 1*16(INP),XWORD1
VMOVDQ 2*16(INP),XWORD2
@@ -718,7 +711,6 @@ done_hash:
popq %r14
popq %r13
popq %r12
- popq %rbp
popq %rbx
ret
ENDPROC(sha256_transform_rorx)
diff --git a/arch/x86/crypto/sha256-mb/Makefile b/arch/x86/crypto/sha256-mb/Makefile
index 45b4fca6c4a8..53ad6e7db747 100644
--- a/arch/x86/crypto/sha256-mb/Makefile
+++ b/arch/x86/crypto/sha256-mb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Arch-specific CryptoAPI modules.
#
diff --git a/arch/x86/crypto/sha256-ssse3-asm.S b/arch/x86/crypto/sha256-ssse3-asm.S
index 39b83c93e7fd..c6c05ed2c16a 100644
--- a/arch/x86/crypto/sha256-ssse3-asm.S
+++ b/arch/x86/crypto/sha256-ssse3-asm.S
@@ -95,7 +95,7 @@ SRND = %rsi # clobbers INP
c = %ecx
d = %r8d
e = %edx
-TBL = %rbp
+TBL = %r12
a = %eax
b = %ebx
@@ -356,13 +356,13 @@ a = TMP_
ENTRY(sha256_transform_ssse3)
.align 32
pushq %rbx
- pushq %rbp
+ pushq %r12
pushq %r13
pushq %r14
pushq %r15
- pushq %r12
+ pushq %rbp
+ mov %rsp, %rbp
- mov %rsp, %r12
subq $STACK_SIZE, %rsp
and $~15, %rsp
@@ -462,13 +462,12 @@ loop2:
done_hash:
- mov %r12, %rsp
-
- popq %r12
+ mov %rbp, %rsp
+ popq %rbp
popq %r15
popq %r14
popq %r13
- popq %rbp
+ popq %r12
popq %rbx
ret
diff --git a/arch/x86/crypto/sha512-avx2-asm.S b/arch/x86/crypto/sha512-avx2-asm.S
index 7f5f6c6ec72e..b16d56005162 100644
--- a/arch/x86/crypto/sha512-avx2-asm.S
+++ b/arch/x86/crypto/sha512-avx2-asm.S
@@ -69,8 +69,9 @@ XFER = YTMP0
BYTE_FLIP_MASK = %ymm9
-# 1st arg
-CTX = %rdi
+# 1st arg is %rdi, which is saved to the stack and accessed later via %r12
+CTX1 = %rdi
+CTX2 = %r12
# 2nd arg
INP = %rsi
# 3rd arg
@@ -81,7 +82,7 @@ d = %r8
e = %rdx
y3 = %rsi
-TBL = %rbp
+TBL = %rdi # clobbers CTX1
a = %rax
b = %rbx
@@ -91,26 +92,26 @@ g = %r10
h = %r11
old_h = %r11
-T1 = %r12
+T1 = %r12 # clobbers CTX2
y0 = %r13
y1 = %r14
y2 = %r15
-y4 = %r12
-
# Local variables (stack frame)
XFER_SIZE = 4*8
SRND_SIZE = 1*8
INP_SIZE = 1*8
INPEND_SIZE = 1*8
+CTX_SIZE = 1*8
RSPSAVE_SIZE = 1*8
-GPRSAVE_SIZE = 6*8
+GPRSAVE_SIZE = 5*8
frame_XFER = 0
frame_SRND = frame_XFER + XFER_SIZE
frame_INP = frame_SRND + SRND_SIZE
frame_INPEND = frame_INP + INP_SIZE
-frame_RSPSAVE = frame_INPEND + INPEND_SIZE
+frame_CTX = frame_INPEND + INPEND_SIZE
+frame_RSPSAVE = frame_CTX + CTX_SIZE
frame_GPRSAVE = frame_RSPSAVE + RSPSAVE_SIZE
frame_size = frame_GPRSAVE + GPRSAVE_SIZE
@@ -576,12 +577,11 @@ ENTRY(sha512_transform_rorx)
mov %rax, frame_RSPSAVE(%rsp)
# Save GPRs
- mov %rbp, frame_GPRSAVE(%rsp)
- mov %rbx, 8*1+frame_GPRSAVE(%rsp)
- mov %r12, 8*2+frame_GPRSAVE(%rsp)
- mov %r13, 8*3+frame_GPRSAVE(%rsp)
- mov %r14, 8*4+frame_GPRSAVE(%rsp)
- mov %r15, 8*5+frame_GPRSAVE(%rsp)
+ mov %rbx, 8*0+frame_GPRSAVE(%rsp)
+ mov %r12, 8*1+frame_GPRSAVE(%rsp)
+ mov %r13, 8*2+frame_GPRSAVE(%rsp)
+ mov %r14, 8*3+frame_GPRSAVE(%rsp)
+ mov %r15, 8*4+frame_GPRSAVE(%rsp)
shl $7, NUM_BLKS # convert to bytes
jz done_hash
@@ -589,14 +589,17 @@ ENTRY(sha512_transform_rorx)
mov NUM_BLKS, frame_INPEND(%rsp)
## load initial digest
- mov 8*0(CTX),a
- mov 8*1(CTX),b
- mov 8*2(CTX),c
- mov 8*3(CTX),d
- mov 8*4(CTX),e
- mov 8*5(CTX),f
- mov 8*6(CTX),g
- mov 8*7(CTX),h
+ mov 8*0(CTX1), a
+ mov 8*1(CTX1), b
+ mov 8*2(CTX1), c
+ mov 8*3(CTX1), d
+ mov 8*4(CTX1), e
+ mov 8*5(CTX1), f
+ mov 8*6(CTX1), g
+ mov 8*7(CTX1), h
+
+ # save %rdi (CTX) before it gets clobbered
+ mov %rdi, frame_CTX(%rsp)
vmovdqa PSHUFFLE_BYTE_FLIP_MASK(%rip), BYTE_FLIP_MASK
@@ -652,14 +655,15 @@ loop2:
subq $1, frame_SRND(%rsp)
jne loop2
- addm 8*0(CTX),a
- addm 8*1(CTX),b
- addm 8*2(CTX),c
- addm 8*3(CTX),d
- addm 8*4(CTX),e
- addm 8*5(CTX),f
- addm 8*6(CTX),g
- addm 8*7(CTX),h
+ mov frame_CTX(%rsp), CTX2
+ addm 8*0(CTX2), a
+ addm 8*1(CTX2), b
+ addm 8*2(CTX2), c
+ addm 8*3(CTX2), d
+ addm 8*4(CTX2), e
+ addm 8*5(CTX2), f
+ addm 8*6(CTX2), g
+ addm 8*7(CTX2), h
mov frame_INP(%rsp), INP
add $128, INP
@@ -669,12 +673,11 @@ loop2:
done_hash:
# Restore GPRs
- mov frame_GPRSAVE(%rsp) ,%rbp
- mov 8*1+frame_GPRSAVE(%rsp) ,%rbx
- mov 8*2+frame_GPRSAVE(%rsp) ,%r12
- mov 8*3+frame_GPRSAVE(%rsp) ,%r13
- mov 8*4+frame_GPRSAVE(%rsp) ,%r14
- mov 8*5+frame_GPRSAVE(%rsp) ,%r15
+ mov 8*0+frame_GPRSAVE(%rsp), %rbx
+ mov 8*1+frame_GPRSAVE(%rsp), %r12
+ mov 8*2+frame_GPRSAVE(%rsp), %r13
+ mov 8*3+frame_GPRSAVE(%rsp), %r14
+ mov 8*4+frame_GPRSAVE(%rsp), %r15
# Restore Stack Pointer
mov frame_RSPSAVE(%rsp), %rsp
diff --git a/arch/x86/crypto/sha512-mb/Makefile b/arch/x86/crypto/sha512-mb/Makefile
index 0a57e2103980..90f1ef69152e 100644
--- a/arch/x86/crypto/sha512-mb/Makefile
+++ b/arch/x86/crypto/sha512-mb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Arch-specific CryptoAPI modules.
#
diff --git a/arch/x86/crypto/twofish-avx-x86_64-asm_64.S b/arch/x86/crypto/twofish-avx-x86_64-asm_64.S
index b3f49d286348..73b471da3622 100644
--- a/arch/x86/crypto/twofish-avx-x86_64-asm_64.S
+++ b/arch/x86/crypto/twofish-avx-x86_64-asm_64.S
@@ -76,8 +76,8 @@
#define RT %xmm14
#define RR %xmm15
-#define RID1 %rbp
-#define RID1d %ebp
+#define RID1 %r13
+#define RID1d %r13d
#define RID2 %rsi
#define RID2d %esi
@@ -259,7 +259,7 @@ __twofish_enc_blk8:
vmovdqu w(CTX), RK1;
- pushq %rbp;
+ pushq %r13;
pushq %rbx;
pushq %rcx;
@@ -282,7 +282,7 @@ __twofish_enc_blk8:
popq %rcx;
popq %rbx;
- popq %rbp;
+ popq %r13;
outunpack_blocks(RC1, RD1, RA1, RB1, RK1, RX0, RY0, RK2);
outunpack_blocks(RC2, RD2, RA2, RB2, RK1, RX0, RY0, RK2);
@@ -301,7 +301,7 @@ __twofish_dec_blk8:
vmovdqu (w+4*4)(CTX), RK1;
- pushq %rbp;
+ pushq %r13;
pushq %rbx;
inpack_blocks(RC1, RD1, RA1, RB1, RK1, RX0, RY0, RK2);
@@ -322,7 +322,7 @@ __twofish_dec_blk8:
vmovdqu (w)(CTX), RK1;
popq %rbx;
- popq %rbp;
+ popq %r13;
outunpack_blocks(RA1, RB1, RC1, RD1, RK1, RX0, RY0, RK2);
outunpack_blocks(RA2, RB2, RC2, RD2, RK1, RX0, RY0, RK2);
diff --git a/arch/x86/entry/Makefile b/arch/x86/entry/Makefile
index af28a8a24366..06fc70cf5433 100644
--- a/arch/x86/entry/Makefile
+++ b/arch/x86/entry/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the x86 low level entry code
#
diff --git a/arch/x86/entry/calling.h b/arch/x86/entry/calling.h
index 640aafebdc00..6e160031cfea 100644
--- a/arch/x86/entry/calling.h
+++ b/arch/x86/entry/calling.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/jump_label.h>
#include <asm/unwind_hints.h>
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 8a13d468635a..4838037f97f6 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1991,1992 Linus Torvalds
*
@@ -176,7 +177,7 @@
/*
* This is a sneaky trick to help the unwinder find pt_regs on the stack. The
* frame pointer is replaced with an encoded pointer to pt_regs. The encoding
- * is just setting the LSB, which makes it an invalid stack address and is also
+ * is just clearing the MSB, which makes it an invalid stack address and is also
* a signal to the unwinder that it's a pt_regs pointer in disguise.
*
* NOTE: This macro must be used *after* SAVE_ALL because it corrupts the
@@ -185,7 +186,7 @@
.macro ENCODE_FRAME_POINTER
#ifdef CONFIG_FRAME_POINTER
mov %esp, %ebp
- orl $0x1, %ebp
+ andl $0x7fffffff, %ebp
#endif
.endm
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 49167258d587..bcfc5668dcb2 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/x86_64/entry.S
*
@@ -808,7 +809,7 @@ apicinterrupt IRQ_WORK_VECTOR irq_work_interrupt smp_irq_work_interrupt
.macro idtentry sym do_sym has_error_code:req paranoid=0 shift_ist=-1
ENTRY(\sym)
- UNWIND_HINT_IRET_REGS offset=8
+ UNWIND_HINT_IRET_REGS offset=\has_error_code*8
/* Sanity check */
.if \shift_ist != -1 && \paranoid == 0
diff --git a/arch/x86/entry/entry_64_compat.S b/arch/x86/entry/entry_64_compat.S
index e26c25ca7756..b5c7a56ed256 100644
--- a/arch/x86/entry/entry_64_compat.S
+++ b/arch/x86/entry/entry_64_compat.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Compatibility mode system call entry point for x86-64.
*
diff --git a/arch/x86/entry/syscall_32.c b/arch/x86/entry/syscall_32.c
index 8f895ee13a1c..95c294963612 100644
--- a/arch/x86/entry/syscall_32.c
+++ b/arch/x86/entry/syscall_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* System call table for i386. */
#include <linux/linkage.h>
diff --git a/arch/x86/entry/syscall_64.c b/arch/x86/entry/syscall_64.c
index 9dbc5abb6162..9c09775e589d 100644
--- a/arch/x86/entry/syscall_64.c
+++ b/arch/x86/entry/syscall_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* System call table for x86-64. */
#include <linux/linkage.h>
diff --git a/arch/x86/entry/syscalls/Makefile b/arch/x86/entry/syscalls/Makefile
index 57aa59fd140c..331f1dca5085 100644
--- a/arch/x86/entry/syscalls/Makefile
+++ b/arch/x86/entry/syscalls/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
out := $(obj)/../../include/generated/asm
uapi := $(obj)/../../include/generated/uapi/asm
diff --git a/arch/x86/entry/syscalls/syscallhdr.sh b/arch/x86/entry/syscalls/syscallhdr.sh
index 31fd5f1f38f7..12fbbcfe7ef3 100644
--- a/arch/x86/entry/syscalls/syscallhdr.sh
+++ b/arch/x86/entry/syscalls/syscallhdr.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
diff --git a/arch/x86/entry/syscalls/syscalltbl.sh b/arch/x86/entry/syscalls/syscalltbl.sh
index 751d1f992630..d71ef4bd3615 100644
--- a/arch/x86/entry/syscalls/syscalltbl.sh
+++ b/arch/x86/entry/syscalls/syscalltbl.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
diff --git a/arch/x86/entry/vdso/Makefile b/arch/x86/entry/vdso/Makefile
index d5409660f5de..c366c0adeb40 100644
--- a/arch/x86/entry/vdso/Makefile
+++ b/arch/x86/entry/vdso/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Building vDSO images for x86.
#
diff --git a/arch/x86/entry/vdso/vdso-layout.lds.S b/arch/x86/entry/vdso/vdso-layout.lds.S
index 8ebb4b6454fe..acfd5ba7d943 100644
--- a/arch/x86/entry/vdso/vdso-layout.lds.S
+++ b/arch/x86/entry/vdso/vdso-layout.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/vdso.h>
/*
diff --git a/arch/x86/entry/vdso/vdso.lds.S b/arch/x86/entry/vdso/vdso.lds.S
index 6807932643c2..d3a2dce4cfa9 100644
--- a/arch/x86/entry/vdso/vdso.lds.S
+++ b/arch/x86/entry/vdso/vdso.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linker script for 64-bit vDSO.
* We #include the file to define the layout details.
diff --git a/arch/x86/entry/vdso/vdso2c.h b/arch/x86/entry/vdso/vdso2c.h
index 3dab75f2a673..fa847a620f40 100644
--- a/arch/x86/entry/vdso/vdso2c.h
+++ b/arch/x86/entry/vdso/vdso2c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file is included twice from vdso2c.c. It generates code for 32-bit
* and 64-bit vDSOs. We need both for 64-bit builds, since 32-bit vDSOs
diff --git a/arch/x86/entry/vdso/vdso32-setup.c b/arch/x86/entry/vdso/vdso32-setup.c
index 3f9d1a83891a..42d4c89f990e 100644
--- a/arch/x86/entry/vdso/vdso32-setup.c
+++ b/arch/x86/entry/vdso/vdso32-setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) Copyright 2002 Linus Torvalds
* Portions based on the vdso-randomization code from exec-shield:
diff --git a/arch/x86/entry/vdso/vdso32/note.S b/arch/x86/entry/vdso/vdso32/note.S
index c83f25734696..9fd51f206314 100644
--- a/arch/x86/entry/vdso/vdso32/note.S
+++ b/arch/x86/entry/vdso/vdso32/note.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This supplies .note.* sections to go into the PT_NOTE inside the vDSO text.
* Here we can supply some information useful to userland.
diff --git a/arch/x86/entry/vdso/vdso32/sigreturn.S b/arch/x86/entry/vdso/vdso32/sigreturn.S
index 20633e026e82..c3233ee98a6b 100644
--- a/arch/x86/entry/vdso/vdso32/sigreturn.S
+++ b/arch/x86/entry/vdso/vdso32/sigreturn.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/unistd_32.h>
#include <asm/asm-offsets.h>
diff --git a/arch/x86/entry/vdso/vdso32/system_call.S b/arch/x86/entry/vdso/vdso32/system_call.S
index ed4bc9731cbb..263d7433dea8 100644
--- a/arch/x86/entry/vdso/vdso32/system_call.S
+++ b/arch/x86/entry/vdso/vdso32/system_call.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* AT_SYSINFO entry point
*/
diff --git a/arch/x86/entry/vdso/vdso32/vclock_gettime.c b/arch/x86/entry/vdso/vdso32/vclock_gettime.c
index 87a86e017f0e..7780bbfb06ef 100644
--- a/arch/x86/entry/vdso/vdso32/vclock_gettime.c
+++ b/arch/x86/entry/vdso/vdso32/vclock_gettime.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define BUILD_VDSO32
#ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
diff --git a/arch/x86/entry/vdso/vdso32/vdso32.lds.S b/arch/x86/entry/vdso/vdso32/vdso32.lds.S
index 31056cf294bf..422764a81d32 100644
--- a/arch/x86/entry/vdso/vdso32/vdso32.lds.S
+++ b/arch/x86/entry/vdso/vdso32/vdso32.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linker script for 32-bit vDSO.
* We #include the file to define the layout details.
diff --git a/arch/x86/entry/vdso/vdsox32.lds.S b/arch/x86/entry/vdso/vdsox32.lds.S
index 697c11ece90c..05cd1c5c4a15 100644
--- a/arch/x86/entry/vdso/vdsox32.lds.S
+++ b/arch/x86/entry/vdso/vdsox32.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linker script for x32 vDSO.
* We #include the file to define the layout details.
diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
index ce1d7534fa53..f279ba2643dc 100644
--- a/arch/x86/entry/vsyscall/vsyscall_64.c
+++ b/arch/x86/entry/vsyscall/vsyscall_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2012-2014 Andy Lutomirski <luto@amacapital.net>
*
diff --git a/arch/x86/entry/vsyscall/vsyscall_gtod.c b/arch/x86/entry/vsyscall/vsyscall_gtod.c
index 0fb3a104ac62..e1216dd95c04 100644
--- a/arch/x86/entry/vsyscall/vsyscall_gtod.c
+++ b/arch/x86/entry/vsyscall/vsyscall_gtod.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2001 Andrea Arcangeli <andrea@suse.de> SuSE
* Copyright 2003 Andi Kleen, SuSE Labs.
diff --git a/arch/x86/entry/vsyscall/vsyscall_trace.h b/arch/x86/entry/vsyscall/vsyscall_trace.h
index 9dd7359a38a8..3c3f9765a85c 100644
--- a/arch/x86/entry/vsyscall/vsyscall_trace.h
+++ b/arch/x86/entry/vsyscall/vsyscall_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM vsyscall
diff --git a/arch/x86/events/Kconfig b/arch/x86/events/Kconfig
index 98397db5ceae..9a7a1446cb3a 100644
--- a/arch/x86/events/Kconfig
+++ b/arch/x86/events/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Performance monitoring"
config PERF_EVENTS_INTEL_UNCORE
diff --git a/arch/x86/events/amd/Makefile b/arch/x86/events/amd/Makefile
index b1da46f396e0..fe8795a67385 100644
--- a/arch/x86/events/amd/Makefile
+++ b/arch/x86/events/amd/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CPU_SUP_AMD) += core.o uncore.o
obj-$(CONFIG_PERF_EVENTS_AMD_POWER) += power.o
obj-$(CONFIG_X86_LOCAL_APIC) += ibs.o
diff --git a/arch/x86/events/intel/Makefile b/arch/x86/events/intel/Makefile
index e9d8520a801a..3468b0c1dc7c 100644
--- a/arch/x86/events/intel/Makefile
+++ b/arch/x86/events/intel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CPU_SUP_INTEL) += core.o bts.o
obj-$(CONFIG_CPU_SUP_INTEL) += ds.o knc.o
obj-$(CONFIG_CPU_SUP_INTEL) += lbr.o p4.o p6.o pt.o
diff --git a/arch/x86/events/intel/bts.c b/arch/x86/events/intel/bts.c
index 16076eb34699..141e07b06216 100644
--- a/arch/x86/events/intel/bts.c
+++ b/arch/x86/events/intel/bts.c
@@ -546,9 +546,6 @@ static int bts_event_init(struct perf_event *event)
if (event->attr.type != bts_pmu.type)
return -ENOENT;
- if (x86_add_exclusive(x86_lbr_exclusive_bts))
- return -EBUSY;
-
/*
* BTS leaks kernel addresses even when CPL0 tracing is
* disabled, so disallow intel_bts driver for unprivileged
@@ -562,6 +559,9 @@ static int bts_event_init(struct perf_event *event)
!capable(CAP_SYS_ADMIN))
return -EACCES;
+ if (x86_add_exclusive(x86_lbr_exclusive_bts))
+ return -EBUSY;
+
ret = x86_reserve_hardware();
if (ret) {
x86_del_exclusive(x86_lbr_exclusive_bts);
diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index 829e89cfcee2..9fb9a1f1e47b 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -4409,10 +4409,9 @@ static __init int fixup_ht_bug(void)
return 0;
}
- if (lockup_detector_suspend() != 0) {
- pr_debug("failed to disable PMU erratum BJ122, BV98, HSD29 workaround\n");
- return 0;
- }
+ cpus_read_lock();
+
+ hardlockup_detector_perf_stop();
x86_pmu.flags &= ~(PMU_FL_EXCL_CNTRS | PMU_FL_EXCL_ENABLED);
@@ -4420,9 +4419,7 @@ static __init int fixup_ht_bug(void)
x86_pmu.commit_scheduling = NULL;
x86_pmu.stop_scheduling = NULL;
- lockup_detector_resume();
-
- cpus_read_lock();
+ hardlockup_detector_perf_restart();
for_each_online_cpu(c)
free_excl_cntrs(c);
diff --git a/arch/x86/events/intel/cstate.c b/arch/x86/events/intel/cstate.c
index 4cf100ff2a37..72db0664a53d 100644
--- a/arch/x86/events/intel/cstate.c
+++ b/arch/x86/events/intel/cstate.c
@@ -552,6 +552,7 @@ static const struct x86_cpu_id intel_cstates_match[] __initconst = {
X86_CSTATES_MODEL(INTEL_FAM6_SKYLAKE_MOBILE, snb_cstates),
X86_CSTATES_MODEL(INTEL_FAM6_SKYLAKE_DESKTOP, snb_cstates),
+ X86_CSTATES_MODEL(INTEL_FAM6_SKYLAKE_X, snb_cstates),
X86_CSTATES_MODEL(INTEL_FAM6_KABYLAKE_MOBILE, snb_cstates),
X86_CSTATES_MODEL(INTEL_FAM6_KABYLAKE_DESKTOP, snb_cstates),
@@ -560,6 +561,9 @@ static const struct x86_cpu_id intel_cstates_match[] __initconst = {
X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNM, knl_cstates),
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_GOLDMONT, glm_cstates),
+ X86_CSTATES_MODEL(INTEL_FAM6_ATOM_DENVERTON, glm_cstates),
+
+ X86_CSTATES_MODEL(INTEL_FAM6_ATOM_GEMINI_LAKE, glm_cstates),
{ },
};
MODULE_DEVICE_TABLE(x86cpu, intel_cstates_match);
diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c
index e1965e5ff570..3674a4b6f8bd 100644
--- a/arch/x86/events/intel/ds.c
+++ b/arch/x86/events/intel/ds.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bitops.h>
#include <linux/types.h>
#include <linux/slab.h>
diff --git a/arch/x86/events/intel/knc.c b/arch/x86/events/intel/knc.c
index 548d5f774b07..618001c208e8 100644
--- a/arch/x86/events/intel/knc.c
+++ b/arch/x86/events/intel/knc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Driver for Intel Xeon Phi "Knights Corner" PMU */
#include <linux/perf_event.h>
diff --git a/arch/x86/events/intel/lbr.c b/arch/x86/events/intel/lbr.c
index 8a6bbacd17dc..ae64d0b69729 100644
--- a/arch/x86/events/intel/lbr.c
+++ b/arch/x86/events/intel/lbr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/perf_event.h>
#include <linux/types.h>
diff --git a/arch/x86/events/intel/p6.c b/arch/x86/events/intel/p6.c
index 1f5c47ab4c65..a5604c352930 100644
--- a/arch/x86/events/intel/p6.c
+++ b/arch/x86/events/intel/p6.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/perf_event.h>
#include <linux/types.h>
diff --git a/arch/x86/events/intel/rapl.c b/arch/x86/events/intel/rapl.c
index 8e2457cb6b4a..005908ee9333 100644
--- a/arch/x86/events/intel/rapl.c
+++ b/arch/x86/events/intel/rapl.c
@@ -775,6 +775,9 @@ static const struct x86_cpu_id rapl_cpu_match[] __initconst = {
X86_RAPL_MODEL_MATCH(INTEL_FAM6_KABYLAKE_DESKTOP, skl_rapl_init),
X86_RAPL_MODEL_MATCH(INTEL_FAM6_ATOM_GOLDMONT, hsw_rapl_init),
+ X86_RAPL_MODEL_MATCH(INTEL_FAM6_ATOM_DENVERTON, hsw_rapl_init),
+
+ X86_RAPL_MODEL_MATCH(INTEL_FAM6_ATOM_GEMINI_LAKE, hsw_rapl_init),
{},
};
diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
index 1c5390f1cf09..d45e06346f14 100644
--- a/arch/x86/events/intel/uncore.c
+++ b/arch/x86/events/intel/uncore.c
@@ -822,7 +822,7 @@ static int __init uncore_type_init(struct intel_uncore_type *type, bool setid)
pmus[i].type = type;
pmus[i].boxes = kzalloc(size, GFP_KERNEL);
if (!pmus[i].boxes)
- return -ENOMEM;
+ goto err;
}
type->pmus = pmus;
@@ -836,7 +836,7 @@ static int __init uncore_type_init(struct intel_uncore_type *type, bool setid)
attr_group = kzalloc(sizeof(struct attribute *) * (i + 1) +
sizeof(*attr_group), GFP_KERNEL);
if (!attr_group)
- return -ENOMEM;
+ goto err;
attrs = (struct attribute **)(attr_group + 1);
attr_group->name = "events";
@@ -849,7 +849,15 @@ static int __init uncore_type_init(struct intel_uncore_type *type, bool setid)
}
type->pmu_group = &uncore_pmu_attr_group;
+
return 0;
+
+err:
+ for (i = 0; i < type->num_boxes; i++)
+ kfree(pmus[i].boxes);
+ kfree(pmus);
+
+ return -ENOMEM;
}
static int __init
diff --git a/arch/x86/events/intel/uncore.h b/arch/x86/events/intel/uncore.h
index df5989f27b1b..4364191e7c6b 100644
--- a/arch/x86/events/intel/uncore.h
+++ b/arch/x86/events/intel/uncore.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/slab.h>
#include <linux/pci.h>
#include <asm/apicdef.h>
diff --git a/arch/x86/events/intel/uncore_nhmex.c b/arch/x86/events/intel/uncore_nhmex.c
index 6a5cbe90f859..93e7a8397cde 100644
--- a/arch/x86/events/intel/uncore_nhmex.c
+++ b/arch/x86/events/intel/uncore_nhmex.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Nehalem-EX/Westmere-EX uncore support */
#include "uncore.h"
diff --git a/arch/x86/events/intel/uncore_snb.c b/arch/x86/events/intel/uncore_snb.c
index db1127ce685e..aee5e8496be4 100644
--- a/arch/x86/events/intel/uncore_snb.c
+++ b/arch/x86/events/intel/uncore_snb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Nehalem/SandBridge/Haswell/Broadwell/Skylake uncore support */
#include "uncore.h"
diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
index db1fe377e6dd..95cb19f4e06f 100644
--- a/arch/x86/events/intel/uncore_snbep.c
+++ b/arch/x86/events/intel/uncore_snbep.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* SandyBridge-EP/IvyTown uncore support */
#include "uncore.h"
@@ -3462,7 +3463,7 @@ static struct intel_uncore_ops skx_uncore_iio_ops = {
static struct intel_uncore_type skx_uncore_iio = {
.name = "iio",
.num_counters = 4,
- .num_boxes = 5,
+ .num_boxes = 6,
.perf_ctr_bits = 48,
.event_ctl = SKX_IIO0_MSR_PMON_CTL0,
.perf_ctr = SKX_IIO0_MSR_PMON_CTR0,
@@ -3492,7 +3493,7 @@ static const struct attribute_group skx_uncore_format_group = {
static struct intel_uncore_type skx_uncore_irp = {
.name = "irp",
.num_counters = 2,
- .num_boxes = 5,
+ .num_boxes = 6,
.perf_ctr_bits = 48,
.event_ctl = SKX_IRP0_MSR_PMON_CTL0,
.perf_ctr = SKX_IRP0_MSR_PMON_CTR0,
diff --git a/arch/x86/events/msr.c b/arch/x86/events/msr.c
index 4bb3ec69e8ea..14efaa0e8684 100644
--- a/arch/x86/events/msr.c
+++ b/arch/x86/events/msr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/perf_event.h>
#include <asm/intel-family.h>
@@ -63,6 +64,14 @@ static bool test_intel(int idx)
case INTEL_FAM6_ATOM_SILVERMONT1:
case INTEL_FAM6_ATOM_SILVERMONT2:
case INTEL_FAM6_ATOM_AIRMONT:
+
+ case INTEL_FAM6_ATOM_GOLDMONT:
+ case INTEL_FAM6_ATOM_DENVERTON:
+
+ case INTEL_FAM6_ATOM_GEMINI_LAKE:
+
+ case INTEL_FAM6_XEON_PHI_KNL:
+ case INTEL_FAM6_XEON_PHI_KNM:
if (idx == PERF_MSR_SMI)
return true;
break;
diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
index 1a8eb550c40f..a5db63f728a2 100644
--- a/arch/x86/hyperv/hv_init.c
+++ b/arch/x86/hyperv/hv_init.c
@@ -85,6 +85,8 @@ EXPORT_SYMBOL_GPL(hyperv_cs);
u32 *hv_vp_index;
EXPORT_SYMBOL_GPL(hv_vp_index);
+u32 hv_max_vp_index;
+
static int hv_cpu_init(unsigned int cpu)
{
u64 msr_vp_index;
@@ -93,6 +95,9 @@ static int hv_cpu_init(unsigned int cpu)
hv_vp_index[smp_processor_id()] = msr_vp_index;
+ if (msr_vp_index > hv_max_vp_index)
+ hv_max_vp_index = msr_vp_index;
+
return 0;
}
diff --git a/arch/x86/hyperv/mmu.c b/arch/x86/hyperv/mmu.c
index 39e7f6e50919..9cc9e1c1e2db 100644
--- a/arch/x86/hyperv/mmu.c
+++ b/arch/x86/hyperv/mmu.c
@@ -36,9 +36,9 @@ struct hv_flush_pcpu_ex {
/* Each gva in gva_list encodes up to 4096 pages to flush */
#define HV_TLB_FLUSH_UNIT (4096 * PAGE_SIZE)
-static struct hv_flush_pcpu __percpu *pcpu_flush;
+static struct hv_flush_pcpu __percpu **pcpu_flush;
-static struct hv_flush_pcpu_ex __percpu *pcpu_flush_ex;
+static struct hv_flush_pcpu_ex __percpu **pcpu_flush_ex;
/*
* Fills in gva_list starting from offset. Returns the number of items added.
@@ -76,6 +76,18 @@ static inline int cpumask_to_vp_set(struct hv_flush_pcpu_ex *flush,
{
int cpu, vcpu, vcpu_bank, vcpu_offset, nr_bank = 1;
+ /* valid_bank_mask can represent up to 64 banks */
+ if (hv_max_vp_index / 64 >= 64)
+ return 0;
+
+ /*
+ * Clear all banks up to the maximum possible bank as hv_flush_pcpu_ex
+ * structs are not cleared between calls, we risk flushing unneeded
+ * vCPUs otherwise.
+ */
+ for (vcpu_bank = 0; vcpu_bank <= hv_max_vp_index / 64; vcpu_bank++)
+ flush->hv_vp_set.bank_contents[vcpu_bank] = 0;
+
/*
* Some banks may end up being empty but this is acceptable.
*/
@@ -83,11 +95,6 @@ static inline int cpumask_to_vp_set(struct hv_flush_pcpu_ex *flush,
vcpu = hv_cpu_number_to_vp_number(cpu);
vcpu_bank = vcpu / 64;
vcpu_offset = vcpu % 64;
-
- /* valid_bank_mask can represent up to 64 banks */
- if (vcpu_bank >= 64)
- return 0;
-
__set_bit(vcpu_offset, (unsigned long *)
&flush->hv_vp_set.bank_contents[vcpu_bank]);
if (vcpu_bank >= nr_bank)
@@ -102,6 +109,7 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus,
const struct flush_tlb_info *info)
{
int cpu, vcpu, gva_n, max_gvas;
+ struct hv_flush_pcpu **flush_pcpu;
struct hv_flush_pcpu *flush;
u64 status = U64_MAX;
unsigned long flags;
@@ -116,7 +124,17 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus,
local_irq_save(flags);
- flush = this_cpu_ptr(pcpu_flush);
+ flush_pcpu = this_cpu_ptr(pcpu_flush);
+
+ if (unlikely(!*flush_pcpu))
+ *flush_pcpu = page_address(alloc_page(GFP_ATOMIC));
+
+ flush = *flush_pcpu;
+
+ if (unlikely(!flush)) {
+ local_irq_restore(flags);
+ goto do_native;
+ }
if (info->mm) {
flush->address_space = virt_to_phys(info->mm->pgd);
@@ -173,6 +191,7 @@ static void hyperv_flush_tlb_others_ex(const struct cpumask *cpus,
const struct flush_tlb_info *info)
{
int nr_bank = 0, max_gvas, gva_n;
+ struct hv_flush_pcpu_ex **flush_pcpu;
struct hv_flush_pcpu_ex *flush;
u64 status = U64_MAX;
unsigned long flags;
@@ -187,7 +206,17 @@ static void hyperv_flush_tlb_others_ex(const struct cpumask *cpus,
local_irq_save(flags);
- flush = this_cpu_ptr(pcpu_flush_ex);
+ flush_pcpu = this_cpu_ptr(pcpu_flush_ex);
+
+ if (unlikely(!*flush_pcpu))
+ *flush_pcpu = page_address(alloc_page(GFP_ATOMIC));
+
+ flush = *flush_pcpu;
+
+ if (unlikely(!flush)) {
+ local_irq_restore(flags);
+ goto do_native;
+ }
if (info->mm) {
flush->address_space = virt_to_phys(info->mm->pgd);
@@ -222,18 +251,18 @@ static void hyperv_flush_tlb_others_ex(const struct cpumask *cpus,
flush->flags |= HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY;
status = hv_do_rep_hypercall(
HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX,
- 0, nr_bank + 2, flush, NULL);
+ 0, nr_bank, flush, NULL);
} else if (info->end &&
((info->end - info->start)/HV_TLB_FLUSH_UNIT) > max_gvas) {
status = hv_do_rep_hypercall(
HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX,
- 0, nr_bank + 2, flush, NULL);
+ 0, nr_bank, flush, NULL);
} else {
gva_n = fill_gva_list(flush->gva_list, nr_bank,
info->start, info->end);
status = hv_do_rep_hypercall(
HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST_EX,
- gva_n, nr_bank + 2, flush, NULL);
+ gva_n, nr_bank, flush, NULL);
}
local_irq_restore(flags);
@@ -266,7 +295,7 @@ void hyper_alloc_mmu(void)
return;
if (!(ms_hyperv.hints & HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED))
- pcpu_flush = __alloc_percpu(PAGE_SIZE, PAGE_SIZE);
+ pcpu_flush = alloc_percpu(struct hv_flush_pcpu *);
else
- pcpu_flush_ex = __alloc_percpu(PAGE_SIZE, PAGE_SIZE);
+ pcpu_flush_ex = alloc_percpu(struct hv_flush_pcpu_ex *);
}
diff --git a/arch/x86/ia32/audit.c b/arch/x86/ia32/audit.c
index 2eccc8932ae6..3d21eab7aaed 100644
--- a/arch/x86/ia32/audit.c
+++ b/arch/x86/ia32/audit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/unistd_32.h>
unsigned ia32_dir_class[] = {
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
index 8d0879f1d42c..8e02b30cf08e 100644
--- a/arch/x86/ia32/ia32_aout.c
+++ b/arch/x86/ia32/ia32_aout.c
@@ -407,10 +407,10 @@ static int load_aout_library(struct file *file)
unsigned long bss, start_addr, len, error;
int retval;
struct exec ex;
-
+ loff_t pos = 0;
retval = -ENOEXEC;
- error = kernel_read(file, 0, (char *) &ex, sizeof(ex));
+ error = kernel_read(file, &ex, sizeof(ex), &pos);
if (error != sizeof(ex))
goto out;
diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
index e0bb46c02857..41c671854642 100644
--- a/arch/x86/ia32/ia32_signal.c
+++ b/arch/x86/ia32/ia32_signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/x86_64/ia32/ia32_signal.c
*
@@ -231,7 +232,7 @@ static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs,
ksig->ka.sa.sa_restorer)
sp = (unsigned long) ksig->ka.sa.sa_restorer;
- if (fpu->fpstate_active) {
+ if (fpu->initialized) {
unsigned long fx_aligned, math_size;
sp = fpu__alloc_mathframe(sp, 1, &fx_aligned, &math_size);
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c
index 47956c6a4fd8..96cd33bbfc85 100644
--- a/arch/x86/ia32/sys_ia32.c
+++ b/arch/x86/ia32/sys_ia32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* sys_ia32.c: Conversion between 32bit and 64bit native syscalls. Based on
* sys_sparc32
diff --git a/arch/x86/include/asm/agp.h b/arch/x86/include/asm/agp.h
index eec2a70d4376..8e25bf4f323a 100644
--- a/arch/x86/include/asm/agp.h
+++ b/arch/x86/include/asm/agp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_AGP_H
#define _ASM_X86_AGP_H
diff --git a/arch/x86/include/asm/alternative-asm.h b/arch/x86/include/asm/alternative-asm.h
index e7636bac7372..31b627b43a8e 100644
--- a/arch/x86/include/asm/alternative-asm.h
+++ b/arch/x86/include/asm/alternative-asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_ALTERNATIVE_ASM_H
#define _ASM_X86_ALTERNATIVE_ASM_H
@@ -62,8 +63,10 @@
#define new_len2 145f-144f
/*
- * max without conditionals. Idea adapted from:
+ * gas compatible max based on the idea from:
* http://graphics.stanford.edu/~seander/bithacks.html#IntegerMinOrMax
+ *
+ * The additional "-" is needed because gas uses a "true" value of -1.
*/
#define alt_max_short(a, b) ((a) ^ (((a) ^ (b)) & -(-((a) < (b)))))
diff --git a/arch/x86/include/asm/alternative.h b/arch/x86/include/asm/alternative.h
index 1b020381ab38..dbfd0854651f 100644
--- a/arch/x86/include/asm/alternative.h
+++ b/arch/x86/include/asm/alternative.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_ALTERNATIVE_H
#define _ASM_X86_ALTERNATIVE_H
@@ -103,12 +104,12 @@ static inline int alternatives_text_reserved(void *start, void *end)
alt_end_marker ":\n"
/*
- * max without conditionals. Idea adapted from:
+ * gas compatible max based on the idea from:
* http://graphics.stanford.edu/~seander/bithacks.html#IntegerMinOrMax
*
- * The additional "-" is needed because gas works with s32s.
+ * The additional "-" is needed because gas uses a "true" value of -1.
*/
-#define alt_max_short(a, b) "((" a ") ^ (((" a ") ^ (" b ")) & -(-((" a ") - (" b ")))))"
+#define alt_max_short(a, b) "((" a ") ^ (((" a ") ^ (" b ")) & -(-((" a ") < (" b ")))))"
/*
* Pad the second replacement alternative with additional NOPs if it is
@@ -218,10 +219,9 @@ static inline int alternatives_text_reserved(void *start, void *end)
#define alternative_call_2(oldfunc, newfunc1, feature1, newfunc2, feature2, \
output, input...) \
{ \
- register void *__sp asm(_ASM_SP); \
asm volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\
"call %P[new2]", feature2) \
- : output, "+r" (__sp) \
+ : output, ASM_CALL_CONSTRAINT \
: [old] "i" (oldfunc), [new1] "i" (newfunc1), \
[new2] "i" (newfunc2), ## input); \
}
diff --git a/arch/x86/include/asm/amd_nb.h b/arch/x86/include/asm/amd_nb.h
index da181ad1d5f8..fddb6d26239f 100644
--- a/arch/x86/include/asm/amd_nb.h
+++ b/arch/x86/include/asm/amd_nb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_AMD_NB_H
#define _ASM_X86_AMD_NB_H
diff --git a/arch/x86/include/asm/apic_flat_64.h b/arch/x86/include/asm/apic_flat_64.h
index a2d312796440..d3a2b3876ce6 100644
--- a/arch/x86/include/asm/apic_flat_64.h
+++ b/arch/x86/include/asm/apic_flat_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_APIC_FLAT_64_H
#define _ASM_X86_APIC_FLAT_64_H
diff --git a/arch/x86/include/asm/apicdef.h b/arch/x86/include/asm/apicdef.h
index c46bb99d5fb2..05e694ed8386 100644
--- a/arch/x86/include/asm/apicdef.h
+++ b/arch/x86/include/asm/apicdef.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_APICDEF_H
#define _ASM_X86_APICDEF_H
diff --git a/arch/x86/include/asm/apm.h b/arch/x86/include/asm/apm.h
index 93eebc636c76..4d4015ddcf26 100644
--- a/arch/x86/include/asm/apm.h
+++ b/arch/x86/include/asm/apm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine specific APM BIOS functions for generic.
* Split out from apm.c by Osamu Tomita <tomita@cinet.co.jp>
diff --git a/arch/x86/include/asm/arch_hweight.h b/arch/x86/include/asm/arch_hweight.h
index e7cd63175de4..34a10b2d5b73 100644
--- a/arch/x86/include/asm/arch_hweight.h
+++ b/arch/x86/include/asm/arch_hweight.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_HWEIGHT_H
#define _ASM_X86_HWEIGHT_H
diff --git a/arch/x86/include/asm/asm-prototypes.h b/arch/x86/include/asm/asm-prototypes.h
index 830b19dbfa31..ff700d81e91e 100644
--- a/arch/x86/include/asm/asm-prototypes.h
+++ b/arch/x86/include/asm/asm-prototypes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/ftrace.h>
#include <linux/uaccess.h>
#include <asm/string.h>
diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h
index 676ee5807d86..219faaec51df 100644
--- a/arch/x86/include/asm/asm.h
+++ b/arch/x86/include/asm/asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_ASM_H
#define _ASM_X86_ASM_H
@@ -11,10 +12,12 @@
# define __ASM_FORM_COMMA(x) " " #x ","
#endif
-#ifdef CONFIG_X86_32
+#ifndef __x86_64__
+/* 32 bit */
# define __ASM_SEL(a,b) __ASM_FORM(a)
# define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(a)
#else
+/* 64 bit */
# define __ASM_SEL(a,b) __ASM_FORM(b)
# define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(b)
#endif
@@ -132,4 +135,15 @@
/* For C file, we already have NOKPROBE_SYMBOL macro */
#endif
+#ifndef __ASSEMBLY__
+/*
+ * This output constraint should be used for any inline asm which has a "call"
+ * instruction. Otherwise the asm may be inserted before the frame pointer
+ * gets set up by the containing function. If you forget to do this, objtool
+ * may print a "call without frame pointer save/setup" warning.
+ */
+register unsigned long current_stack_pointer asm(_ASM_SP);
+#define ASM_CALL_CONSTRAINT "+r" (current_stack_pointer)
+#endif
+
#endif /* _ASM_X86_ASM_H */
diff --git a/arch/x86/include/asm/atomic.h b/arch/x86/include/asm/atomic.h
index 0874ebda3069..72759f131cc5 100644
--- a/arch/x86/include/asm/atomic.h
+++ b/arch/x86/include/asm/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_ATOMIC_H
#define _ASM_X86_ATOMIC_H
diff --git a/arch/x86/include/asm/atomic64_32.h b/arch/x86/include/asm/atomic64_32.h
index 9e206f31ce2a..97c46b8169b7 100644
--- a/arch/x86/include/asm/atomic64_32.h
+++ b/arch/x86/include/asm/atomic64_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_ATOMIC64_32_H
#define _ASM_X86_ATOMIC64_32_H
diff --git a/arch/x86/include/asm/atomic64_64.h b/arch/x86/include/asm/atomic64_64.h
index 5d9de36a2f04..738495caf05f 100644
--- a/arch/x86/include/asm/atomic64_64.h
+++ b/arch/x86/include/asm/atomic64_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_ATOMIC64_64_H
#define _ASM_X86_ATOMIC64_64_H
diff --git a/arch/x86/include/asm/barrier.h b/arch/x86/include/asm/barrier.h
index bfb28caf97b1..01727dbc294a 100644
--- a/arch/x86/include/asm/barrier.h
+++ b/arch/x86/include/asm/barrier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_BARRIER_H
#define _ASM_X86_BARRIER_H
diff --git a/arch/x86/include/asm/bios_ebda.h b/arch/x86/include/asm/bios_ebda.h
index 4b7b8e71607e..4d5a17e2febe 100644
--- a/arch/x86/include/asm/bios_ebda.h
+++ b/arch/x86/include/asm/bios_ebda.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_BIOS_EBDA_H
#define _ASM_X86_BIOS_EBDA_H
diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h
index 854022772c5b..2bcf47314959 100644
--- a/arch/x86/include/asm/bitops.h
+++ b/arch/x86/include/asm/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_BITOPS_H
#define _ASM_X86_BITOPS_H
diff --git a/arch/x86/include/asm/boot.h b/arch/x86/include/asm/boot.h
index abd06b19ddd2..680c320363db 100644
--- a/arch/x86/include/asm/boot.h
+++ b/arch/x86/include/asm/boot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_BOOT_H
#define _ASM_X86_BOOT_H
diff --git a/arch/x86/include/asm/bootparam_utils.h b/arch/x86/include/asm/bootparam_utils.h
index 4a8cb8d7cbd5..a07ffd23e4dd 100644
--- a/arch/x86/include/asm/bootparam_utils.h
+++ b/arch/x86/include/asm/bootparam_utils.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_BOOTPARAM_UTILS_H
#define _ASM_X86_BOOTPARAM_UTILS_H
diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h
index aa6b2023d8f8..34d99af43994 100644
--- a/arch/x86/include/asm/bug.h
+++ b/arch/x86/include/asm/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_BUG_H
#define _ASM_X86_BUG_H
diff --git a/arch/x86/include/asm/bugs.h b/arch/x86/include/asm/bugs.h
index 5490bbaf71d5..542509b53e0f 100644
--- a/arch/x86/include/asm/bugs.h
+++ b/arch/x86/include/asm/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_BUGS_H
#define _ASM_X86_BUGS_H
diff --git a/arch/x86/include/asm/cache.h b/arch/x86/include/asm/cache.h
index 48f99f15452e..abe08690a887 100644
--- a/arch/x86/include/asm/cache.h
+++ b/arch/x86/include/asm/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CACHE_H
#define _ASM_X86_CACHE_H
diff --git a/arch/x86/include/asm/cacheflush.h b/arch/x86/include/asm/cacheflush.h
index cb9a1af109b4..63feaf2a5f93 100644
--- a/arch/x86/include/asm/cacheflush.h
+++ b/arch/x86/include/asm/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CACHEFLUSH_H
#define _ASM_X86_CACHEFLUSH_H
diff --git a/arch/x86/include/asm/ce4100.h b/arch/x86/include/asm/ce4100.h
index e656ad8c0a2e..2930f560d7f3 100644
--- a/arch/x86/include/asm/ce4100.h
+++ b/arch/x86/include/asm/ce4100.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_CE4100_H_
#define _ASM_CE4100_H_
diff --git a/arch/x86/include/asm/checksum.h b/arch/x86/include/asm/checksum.h
index 5f5bb0f97361..d79d1e622dcf 100644
--- a/arch/x86/include/asm/checksum.h
+++ b/arch/x86/include/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_X86_32
# include <asm/checksum_32.h>
#else
diff --git a/arch/x86/include/asm/checksum_32.h b/arch/x86/include/asm/checksum_32.h
index 7b53743ed267..7a659c74cd03 100644
--- a/arch/x86/include/asm/checksum_32.h
+++ b/arch/x86/include/asm/checksum_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CHECKSUM_32_H
#define _ASM_X86_CHECKSUM_32_H
diff --git a/arch/x86/include/asm/checksum_64.h b/arch/x86/include/asm/checksum_64.h
index 08e7efb2c140..3ec6d3267cf9 100644
--- a/arch/x86/include/asm/checksum_64.h
+++ b/arch/x86/include/asm/checksum_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CHECKSUM_64_H
#define _ASM_X86_CHECKSUM_64_H
diff --git a/arch/x86/include/asm/clocksource.h b/arch/x86/include/asm/clocksource.h
index 47bea8cadbd0..dc4cfc888d6d 100644
--- a/arch/x86/include/asm/clocksource.h
+++ b/arch/x86/include/asm/clocksource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* x86-specific clocksource additions */
#ifndef _ASM_X86_CLOCKSOURCE_H
diff --git a/arch/x86/include/asm/cmdline.h b/arch/x86/include/asm/cmdline.h
index 84ae170bc3d0..6faaf27e8899 100644
--- a/arch/x86/include/asm/cmdline.h
+++ b/arch/x86/include/asm/cmdline.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CMDLINE_H
#define _ASM_X86_CMDLINE_H
diff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h
index b5069e802d5c..56bd436ed01b 100644
--- a/arch/x86/include/asm/cmpxchg.h
+++ b/arch/x86/include/asm/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_X86_CMPXCHG_H
#define ASM_X86_CMPXCHG_H
diff --git a/arch/x86/include/asm/cmpxchg_32.h b/arch/x86/include/asm/cmpxchg_32.h
index e4959d023af8..1732704f0445 100644
--- a/arch/x86/include/asm/cmpxchg_32.h
+++ b/arch/x86/include/asm/cmpxchg_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CMPXCHG_32_H
#define _ASM_X86_CMPXCHG_32_H
diff --git a/arch/x86/include/asm/cmpxchg_64.h b/arch/x86/include/asm/cmpxchg_64.h
index caa23a34c963..03cad196a301 100644
--- a/arch/x86/include/asm/cmpxchg_64.h
+++ b/arch/x86/include/asm/cmpxchg_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CMPXCHG_64_H
#define _ASM_X86_CMPXCHG_64_H
diff --git a/arch/x86/include/asm/compat.h b/arch/x86/include/asm/compat.h
index 5343c19814b3..9eef9cc64c68 100644
--- a/arch/x86/include/asm/compat.h
+++ b/arch/x86/include/asm/compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_COMPAT_H
#define _ASM_X86_COMPAT_H
diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h
index 9b7fa6313f1a..adc6cc86b062 100644
--- a/arch/x86/include/asm/cpu.h
+++ b/arch/x86/include/asm/cpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CPU_H
#define _ASM_X86_CPU_H
diff --git a/arch/x86/include/asm/cpu_device_id.h b/arch/x86/include/asm/cpu_device_id.h
index ff501e511d91..baeba0567126 100644
--- a/arch/x86/include/asm/cpu_device_id.h
+++ b/arch/x86/include/asm/cpu_device_id.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CPU_DEVICE_ID
#define _CPU_DEVICE_ID 1
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
index d59c15c3defd..0dfa68438e80 100644
--- a/arch/x86/include/asm/cpufeature.h
+++ b/arch/x86/include/asm/cpufeature.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CPUFEATURE_H
#define _ASM_X86_CPUFEATURE_H
diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
index 2519c6c801c9..793690fbda36 100644
--- a/arch/x86/include/asm/cpufeatures.h
+++ b/arch/x86/include/asm/cpufeatures.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CPUFEATURES_H
#define _ASM_X86_CPUFEATURES_H
diff --git a/arch/x86/include/asm/cpumask.h b/arch/x86/include/asm/cpumask.h
index 61c852fa346b..6722ffcef2e6 100644
--- a/arch/x86/include/asm/cpumask.h
+++ b/arch/x86/include/asm/cpumask.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CPUMASK_H
#define _ASM_X86_CPUMASK_H
#ifndef __ASSEMBLY__
diff --git a/arch/x86/include/asm/crash.h b/arch/x86/include/asm/crash.h
index f498411f2500..a7adb2bfbf0b 100644
--- a/arch/x86/include/asm/crash.h
+++ b/arch/x86/include/asm/crash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CRASH_H
#define _ASM_X86_CRASH_H
diff --git a/arch/x86/include/asm/crypto/aes.h b/arch/x86/include/asm/crypto/aes.h
index 80545a1cbe39..c508521dd190 100644
--- a/arch/x86/include/asm/crypto/aes.h
+++ b/arch/x86/include/asm/crypto/aes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_X86_AES_H
#define ASM_X86_AES_H
diff --git a/arch/x86/include/asm/crypto/camellia.h b/arch/x86/include/asm/crypto/camellia.h
index bb93333d9200..10f8d590bcfe 100644
--- a/arch/x86/include/asm/crypto/camellia.h
+++ b/arch/x86/include/asm/crypto/camellia.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_X86_CAMELLIA_H
#define ASM_X86_CAMELLIA_H
diff --git a/arch/x86/include/asm/crypto/glue_helper.h b/arch/x86/include/asm/crypto/glue_helper.h
index ed8b66de541f..553a03de55c3 100644
--- a/arch/x86/include/asm/crypto/glue_helper.h
+++ b/arch/x86/include/asm/crypto/glue_helper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Shared glue code for 128bit block ciphers
*/
diff --git a/arch/x86/include/asm/crypto/serpent-avx.h b/arch/x86/include/asm/crypto/serpent-avx.h
index 33c2b8a435da..c958b7bd0fcb 100644
--- a/arch/x86/include/asm/crypto/serpent-avx.h
+++ b/arch/x86/include/asm/crypto/serpent-avx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_X86_SERPENT_AVX_H
#define ASM_X86_SERPENT_AVX_H
diff --git a/arch/x86/include/asm/crypto/serpent-sse2.h b/arch/x86/include/asm/crypto/serpent-sse2.h
index e6e77dffbdab..1a345e8a7496 100644
--- a/arch/x86/include/asm/crypto/serpent-sse2.h
+++ b/arch/x86/include/asm/crypto/serpent-sse2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_X86_SERPENT_SSE2_H
#define ASM_X86_SERPENT_SSE2_H
diff --git a/arch/x86/include/asm/crypto/twofish.h b/arch/x86/include/asm/crypto/twofish.h
index 878c51ceebb5..65bb80adba3e 100644
--- a/arch/x86/include/asm/crypto/twofish.h
+++ b/arch/x86/include/asm/crypto/twofish.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_X86_TWOFISH_H
#define ASM_X86_TWOFISH_H
diff --git a/arch/x86/include/asm/current.h b/arch/x86/include/asm/current.h
index 9476c04ee635..3e204e6140b5 100644
--- a/arch/x86/include/asm/current.h
+++ b/arch/x86/include/asm/current.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_CURRENT_H
#define _ASM_X86_CURRENT_H
diff --git a/arch/x86/include/asm/debugreg.h b/arch/x86/include/asm/debugreg.h
index 12cb66f6d3a5..4505ac2735ad 100644
--- a/arch/x86/include/asm/debugreg.h
+++ b/arch/x86/include/asm/debugreg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_DEBUGREG_H
#define _ASM_X86_DEBUGREG_H
diff --git a/arch/x86/include/asm/delay.h b/arch/x86/include/asm/delay.h
index 36a760bda462..de9e7841f953 100644
--- a/arch/x86/include/asm/delay.h
+++ b/arch/x86/include/asm/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_DELAY_H
#define _ASM_X86_DELAY_H
diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
index 1a2ba368da39..0a3e808b9123 100644
--- a/arch/x86/include/asm/desc.h
+++ b/arch/x86/include/asm/desc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_DESC_H
#define _ASM_X86_DESC_H
@@ -121,7 +122,6 @@ static inline int desc_empty(const void *ptr)
#define load_ldt(ldt) asm volatile("lldt %0"::"m" (ldt))
#define store_gdt(dtr) native_store_gdt(dtr)
-#define store_idt(dtr) native_store_idt(dtr)
#define store_tr(tr) (tr = native_store_tr())
#define load_TLS(t, cpu) native_load_tls(t, cpu)
@@ -228,7 +228,7 @@ static inline void native_store_gdt(struct desc_ptr *dtr)
asm volatile("sgdt %0":"=m" (*dtr));
}
-static inline void native_store_idt(struct desc_ptr *dtr)
+static inline void store_idt(struct desc_ptr *dtr)
{
asm volatile("sidt %0":"=m" (*dtr));
}
diff --git a/arch/x86/include/asm/desc_defs.h b/arch/x86/include/asm/desc_defs.h
index 346d252029b7..a91f3b6e4f2a 100644
--- a/arch/x86/include/asm/desc_defs.h
+++ b/arch/x86/include/asm/desc_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Written 2000 by Andi Kleen */
#ifndef _ASM_X86_DESC_DEFS_H
#define _ASM_X86_DESC_DEFS_H
diff --git a/arch/x86/include/asm/device.h b/arch/x86/include/asm/device.h
index 1b3ef26e77df..5e12c63b47aa 100644
--- a/arch/x86/include/asm/device.h
+++ b/arch/x86/include/asm/device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_DEVICE_H
#define _ASM_X86_DEVICE_H
diff --git a/arch/x86/include/asm/div64.h b/arch/x86/include/asm/div64.h
index af95c47d5c9e..20a46150e0a8 100644
--- a/arch/x86/include/asm/div64.h
+++ b/arch/x86/include/asm/div64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_DIV64_H
#define _ASM_X86_DIV64_H
diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h
index 1387dafdba2d..836ca1178a6a 100644
--- a/arch/x86/include/asm/dma-mapping.h
+++ b/arch/x86/include/asm/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_DMA_MAPPING_H
#define _ASM_X86_DMA_MAPPING_H
diff --git a/arch/x86/include/asm/dma.h b/arch/x86/include/asm/dma.h
index fe884e18fa6e..00f7cf45e699 100644
--- a/arch/x86/include/asm/dma.h
+++ b/arch/x86/include/asm/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm/dma.h: Defines for using and allocating dma channels.
* Written by Hennus Bergman, 1992.
diff --git a/arch/x86/include/asm/dmi.h b/arch/x86/include/asm/dmi.h
index a8e15b04565b..0ab2ab27ad1f 100644
--- a/arch/x86/include/asm/dmi.h
+++ b/arch/x86/include/asm/dmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_DMI_H
#define _ASM_X86_DMI_H
diff --git a/arch/x86/include/asm/dwarf2.h b/arch/x86/include/asm/dwarf2.h
index b7a1ab865d68..ae391f609840 100644
--- a/arch/x86/include/asm/dwarf2.h
+++ b/arch/x86/include/asm/dwarf2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_DWARF2_H
#define _ASM_X86_DWARF2_H
diff --git a/arch/x86/include/asm/e820/api.h b/arch/x86/include/asm/e820/api.h
index cd266d830e49..62be73b23d5c 100644
--- a/arch/x86/include/asm/e820/api.h
+++ b/arch/x86/include/asm/e820/api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_E820_API_H
#define _ASM_E820_API_H
diff --git a/arch/x86/include/asm/e820/types.h b/arch/x86/include/asm/e820/types.h
index 4adeed03a9a1..c3aa4b5e49e2 100644
--- a/arch/x86/include/asm/e820/types.h
+++ b/arch/x86/include/asm/e820/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_E820_TYPES_H
#define _ASM_E820_TYPES_H
diff --git a/arch/x86/include/asm/edac.h b/arch/x86/include/asm/edac.h
index cf8fdf83b231..426fc53ff803 100644
--- a/arch/x86/include/asm/edac.h
+++ b/arch/x86/include/asm/edac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_EDAC_H
#define _ASM_X86_EDAC_H
diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h
index 796ff6c1aa53..85f6ccb80b91 100644
--- a/arch/x86/include/asm/efi.h
+++ b/arch/x86/include/asm/efi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_EFI_H
#define _ASM_X86_EFI_H
diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
index 04330c8d9af9..c1a125e47ff3 100644
--- a/arch/x86/include/asm/elf.h
+++ b/arch/x86/include/asm/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_ELF_H
#define _ASM_X86_ELF_H
diff --git a/arch/x86/include/asm/emergency-restart.h b/arch/x86/include/asm/emergency-restart.h
index 77a99ac06d00..2abde717db31 100644
--- a/arch/x86/include/asm/emergency-restart.h
+++ b/arch/x86/include/asm/emergency-restart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_EMERGENCY_RESTART_H
#define _ASM_X86_EMERGENCY_RESTART_H
diff --git a/arch/x86/include/asm/entry_arch.h b/arch/x86/include/asm/entry_arch.h
index aa15d1f7e530..416422762845 100644
--- a/arch/x86/include/asm/entry_arch.h
+++ b/arch/x86/include/asm/entry_arch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file is designed to contain the BUILD_INTERRUPT specifications for
* all of the extra named interrupt vectors used by the architecture.
diff --git a/arch/x86/include/asm/espfix.h b/arch/x86/include/asm/espfix.h
index ca3ce9ab9385..0211029076ea 100644
--- a/arch/x86/include/asm/espfix.h
+++ b/arch/x86/include/asm/espfix.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_ESPFIX_H
#define _ASM_X86_ESPFIX_H
diff --git a/arch/x86/include/asm/export.h b/arch/x86/include/asm/export.h
index 138de56b13eb..2a51d66689c5 100644
--- a/arch/x86/include/asm/export.h
+++ b/arch/x86/include/asm/export.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_64BIT
#define KSYM_ALIGN 16
#endif
diff --git a/arch/x86/include/asm/extable.h b/arch/x86/include/asm/extable.h
index c66d19e3c23e..f9c3a5d502f4 100644
--- a/arch/x86/include/asm/extable.h
+++ b/arch/x86/include/asm/extable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_EXTABLE_H
#define _ASM_X86_EXTABLE_H
/*
diff --git a/arch/x86/include/asm/fb.h b/arch/x86/include/asm/fb.h
index c3dd5e71f439..ab4c960146e3 100644
--- a/arch/x86/include/asm/fb.h
+++ b/arch/x86/include/asm/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_FB_H
#define _ASM_X86_FB_H
diff --git a/arch/x86/include/asm/fpu/api.h b/arch/x86/include/asm/fpu/api.h
index 0877ae018fc9..a9caac9d4a72 100644
--- a/arch/x86/include/asm/fpu/api.h
+++ b/arch/x86/include/asm/fpu/api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1994 Linus Torvalds
*
diff --git a/arch/x86/include/asm/fpu/internal.h b/arch/x86/include/asm/fpu/internal.h
index 554cdb205d17..a38bf5a1e37a 100644
--- a/arch/x86/include/asm/fpu/internal.h
+++ b/arch/x86/include/asm/fpu/internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1994 Linus Torvalds
*
@@ -23,11 +24,9 @@
/*
* High level FPU state handling functions:
*/
-extern void fpu__activate_curr(struct fpu *fpu);
-extern void fpu__activate_fpstate_read(struct fpu *fpu);
-extern void fpu__activate_fpstate_write(struct fpu *fpu);
-extern void fpu__current_fpstate_write_begin(void);
-extern void fpu__current_fpstate_write_end(void);
+extern void fpu__initialize(struct fpu *fpu);
+extern void fpu__prepare_read(struct fpu *fpu);
+extern void fpu__prepare_write(struct fpu *fpu);
extern void fpu__save(struct fpu *fpu);
extern void fpu__restore(struct fpu *fpu);
extern int fpu__restore_sig(void __user *buf, int ia32_frame);
@@ -120,20 +119,11 @@ extern void fpstate_sanitize_xstate(struct fpu *fpu);
err; \
})
-#define check_insn(insn, output, input...) \
-({ \
- int err; \
+#define kernel_insn(insn, output, input...) \
asm volatile("1:" #insn "\n\t" \
"2:\n" \
- ".section .fixup,\"ax\"\n" \
- "3: movl $-1,%[err]\n" \
- " jmp 2b\n" \
- ".previous\n" \
- _ASM_EXTABLE(1b, 3b) \
- : [err] "=r" (err), output \
- : "0"(0), input); \
- err; \
-})
+ _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_fprestore) \
+ : output : input)
static inline int copy_fregs_to_user(struct fregs_state __user *fx)
{
@@ -153,20 +143,16 @@ static inline int copy_fxregs_to_user(struct fxregs_state __user *fx)
static inline void copy_kernel_to_fxregs(struct fxregs_state *fx)
{
- int err;
-
if (IS_ENABLED(CONFIG_X86_32)) {
- err = check_insn(fxrstor %[fx], "=m" (*fx), [fx] "m" (*fx));
+ kernel_insn(fxrstor %[fx], "=m" (*fx), [fx] "m" (*fx));
} else {
if (IS_ENABLED(CONFIG_AS_FXSAVEQ)) {
- err = check_insn(fxrstorq %[fx], "=m" (*fx), [fx] "m" (*fx));
+ kernel_insn(fxrstorq %[fx], "=m" (*fx), [fx] "m" (*fx));
} else {
/* See comment in copy_fxregs_to_kernel() below. */
- err = check_insn(rex64/fxrstor (%[fx]), "=m" (*fx), [fx] "R" (fx), "m" (*fx));
+ kernel_insn(rex64/fxrstor (%[fx]), "=m" (*fx), [fx] "R" (fx), "m" (*fx));
}
}
- /* Copying from a kernel buffer to FPU registers should never fail: */
- WARN_ON_FPU(err);
}
static inline int copy_user_to_fxregs(struct fxregs_state __user *fx)
@@ -183,9 +169,7 @@ static inline int copy_user_to_fxregs(struct fxregs_state __user *fx)
static inline void copy_kernel_to_fregs(struct fregs_state *fx)
{
- int err = check_insn(frstor %[fx], "=m" (*fx), [fx] "m" (*fx));
-
- WARN_ON_FPU(err);
+ kernel_insn(frstor %[fx], "=m" (*fx), [fx] "m" (*fx));
}
static inline int copy_user_to_fregs(struct fregs_state __user *fx)
@@ -281,18 +265,13 @@ static inline void copy_fxregs_to_kernel(struct fpu *fpu)
* Use XRSTORS to restore context if it is enabled. XRSTORS supports compact
* XSAVE area format.
*/
-#define XSTATE_XRESTORE(st, lmask, hmask, err) \
+#define XSTATE_XRESTORE(st, lmask, hmask) \
asm volatile(ALTERNATIVE(XRSTOR, \
XRSTORS, X86_FEATURE_XSAVES) \
"\n" \
- "xor %[err], %[err]\n" \
"3:\n" \
- ".pushsection .fixup,\"ax\"\n" \
- "4: movl $-2, %[err]\n" \
- "jmp 3b\n" \
- ".popsection\n" \
- _ASM_EXTABLE(661b, 4b) \
- : [err] "=r" (err) \
+ _ASM_EXTABLE_HANDLE(661b, 3b, ex_handler_fprestore)\
+ : \
: "D" (st), "m" (*st), "a" (lmask), "d" (hmask) \
: "memory")
@@ -336,7 +315,10 @@ static inline void copy_kernel_to_xregs_booting(struct xregs_state *xstate)
else
XSTATE_OP(XRSTOR, xstate, lmask, hmask, err);
- /* We should never fault when copying from a kernel buffer: */
+ /*
+ * We should never fault when copying from a kernel buffer, and the FPU
+ * state we set at boot time should be valid.
+ */
WARN_ON_FPU(err);
}
@@ -350,7 +332,7 @@ static inline void copy_xregs_to_kernel(struct xregs_state *xstate)
u32 hmask = mask >> 32;
int err;
- WARN_ON(!alternatives_patched);
+ WARN_ON_FPU(!alternatives_patched);
XSTATE_XSAVE(xstate, lmask, hmask, err);
@@ -365,12 +347,8 @@ static inline void copy_kernel_to_xregs(struct xregs_state *xstate, u64 mask)
{
u32 lmask = mask;
u32 hmask = mask >> 32;
- int err;
-
- XSTATE_XRESTORE(xstate, lmask, hmask, err);
- /* We should never fault when copying from a kernel buffer: */
- WARN_ON_FPU(err);
+ XSTATE_XRESTORE(xstate, lmask, hmask);
}
/*
@@ -526,38 +504,17 @@ static inline int fpregs_state_valid(struct fpu *fpu, unsigned int cpu)
*/
static inline void fpregs_deactivate(struct fpu *fpu)
{
- WARN_ON_FPU(!fpu->fpregs_active);
-
- fpu->fpregs_active = 0;
this_cpu_write(fpu_fpregs_owner_ctx, NULL);
trace_x86_fpu_regs_deactivated(fpu);
}
static inline void fpregs_activate(struct fpu *fpu)
{
- WARN_ON_FPU(fpu->fpregs_active);
-
- fpu->fpregs_active = 1;
this_cpu_write(fpu_fpregs_owner_ctx, fpu);
trace_x86_fpu_regs_activated(fpu);
}
/*
- * The question "does this thread have fpu access?"
- * is slightly racy, since preemption could come in
- * and revoke it immediately after the test.
- *
- * However, even in that very unlikely scenario,
- * we can just assume we have FPU access - typically
- * to save the FP state - we'll just take a #NM
- * fault and get the FPU access back.
- */
-static inline int fpregs_active(void)
-{
- return current->thread.fpu.fpregs_active;
-}
-
-/*
* FPU state switching for scheduling.
*
* This is a two-stage process:
@@ -571,14 +528,13 @@ static inline int fpregs_active(void)
static inline void
switch_fpu_prepare(struct fpu *old_fpu, int cpu)
{
- if (old_fpu->fpregs_active) {
+ if (old_fpu->initialized) {
if (!copy_fpregs_to_fpstate(old_fpu))
old_fpu->last_cpu = -1;
else
old_fpu->last_cpu = cpu;
/* But leave fpu_fpregs_owner_ctx! */
- old_fpu->fpregs_active = 0;
trace_x86_fpu_regs_deactivated(old_fpu);
} else
old_fpu->last_cpu = -1;
@@ -595,7 +551,7 @@ switch_fpu_prepare(struct fpu *old_fpu, int cpu)
static inline void switch_fpu_finish(struct fpu *new_fpu, int cpu)
{
bool preload = static_cpu_has(X86_FEATURE_FPU) &&
- new_fpu->fpstate_active;
+ new_fpu->initialized;
if (preload) {
if (!fpregs_state_valid(new_fpu, cpu))
@@ -617,8 +573,7 @@ static inline void user_fpu_begin(void)
struct fpu *fpu = &current->thread.fpu;
preempt_disable();
- if (!fpregs_active())
- fpregs_activate(fpu);
+ fpregs_activate(fpu);
preempt_enable();
}
diff --git a/arch/x86/include/asm/fpu/regset.h b/arch/x86/include/asm/fpu/regset.h
index 39d3107ac6c7..d5bdffb9d27f 100644
--- a/arch/x86/include/asm/fpu/regset.h
+++ b/arch/x86/include/asm/fpu/regset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* FPU regset handling methods:
*/
diff --git a/arch/x86/include/asm/fpu/signal.h b/arch/x86/include/asm/fpu/signal.h
index 20a1fbf7fe4e..4df2754ef380 100644
--- a/arch/x86/include/asm/fpu/signal.h
+++ b/arch/x86/include/asm/fpu/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* x86 FPU signal frame handling methods:
*/
diff --git a/arch/x86/include/asm/fpu/types.h b/arch/x86/include/asm/fpu/types.h
index 3c80f5b9c09d..202c53918ecf 100644
--- a/arch/x86/include/asm/fpu/types.h
+++ b/arch/x86/include/asm/fpu/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* FPU data structures:
*/
@@ -68,6 +69,9 @@ struct fxregs_state {
/* Default value for fxregs_state.mxcsr: */
#define MXCSR_DEFAULT 0x1f80
+/* Copy both mxcsr & mxcsr_flags with a single u64 memcpy: */
+#define MXCSR_AND_FLAGS_SIZE sizeof(u64)
+
/*
* Software based FPU emulation state. This is arbitrary really,
* it matches the x87 format to make it easier to understand:
@@ -290,36 +294,13 @@ struct fpu {
unsigned int last_cpu;
/*
- * @fpstate_active:
+ * @initialized:
*
- * This flag indicates whether this context is active: if the task
+ * This flag indicates whether this context is initialized: if the task
* is not running then we can restore from this context, if the task
* is running then we should save into this context.
*/
- unsigned char fpstate_active;
-
- /*
- * @fpregs_active:
- *
- * This flag determines whether a given context is actively
- * loaded into the FPU's registers and that those registers
- * represent the task's current FPU state.
- *
- * Note the interaction with fpstate_active:
- *
- * # task does not use the FPU:
- * fpstate_active == 0
- *
- * # task uses the FPU and regs are active:
- * fpstate_active == 1 && fpregs_active == 1
- *
- * # the regs are inactive but still match fpstate:
- * fpstate_active == 1 && fpregs_active == 0 && fpregs_owner == fpu
- *
- * The third state is what we use for the lazy restore optimization
- * on lazy-switching CPUs.
- */
- unsigned char fpregs_active;
+ unsigned char initialized;
/*
* @state:
diff --git a/arch/x86/include/asm/fpu/xstate.h b/arch/x86/include/asm/fpu/xstate.h
index 1b2799e0699a..48581988d78c 100644
--- a/arch/x86/include/asm/fpu/xstate.h
+++ b/arch/x86/include/asm/fpu/xstate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_X86_XSAVE_H
#define __ASM_X86_XSAVE_H
@@ -48,8 +49,12 @@ void fpu__xstate_clear_all_cpu_caps(void);
void *get_xsave_addr(struct xregs_state *xsave, int xstate);
const void *get_xsave_field_ptr(int xstate_field);
int using_compacted_format(void);
-int copyout_from_xsaves(unsigned int pos, unsigned int count, void *kbuf,
- void __user *ubuf, struct xregs_state *xsave);
-int copyin_to_xsaves(const void *kbuf, const void __user *ubuf,
- struct xregs_state *xsave);
+int copy_xstate_to_kernel(void *kbuf, struct xregs_state *xsave, unsigned int offset, unsigned int size);
+int copy_xstate_to_user(void __user *ubuf, struct xregs_state *xsave, unsigned int offset, unsigned int size);
+int copy_kernel_to_xstate(struct xregs_state *xsave, const void *kbuf);
+int copy_user_to_xstate(struct xregs_state *xsave, const void __user *ubuf);
+
+/* Validate an xstate header supplied by userspace (ptrace or sigreturn) */
+extern int validate_xstate_header(const struct xstate_header *hdr);
+
#endif
diff --git a/arch/x86/include/asm/frame.h b/arch/x86/include/asm/frame.h
index 6e4d170726b7..5cbce6fbb534 100644
--- a/arch/x86/include/asm/frame.h
+++ b/arch/x86/include/asm/frame.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_FRAME_H
#define _ASM_X86_FRAME_H
diff --git a/arch/x86/include/asm/ftrace.h b/arch/x86/include/asm/ftrace.h
index eccd0ac6bc38..09ad88572746 100644
--- a/arch/x86/include/asm/ftrace.h
+++ b/arch/x86/include/asm/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_FTRACE_H
#define _ASM_X86_FTRACE_H
diff --git a/arch/x86/include/asm/futex.h b/arch/x86/include/asm/futex.h
index f4dc9b63bdda..de4d68852d3a 100644
--- a/arch/x86/include/asm/futex.h
+++ b/arch/x86/include/asm/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_FUTEX_H
#define _ASM_X86_FUTEX_H
diff --git a/arch/x86/include/asm/gart.h b/arch/x86/include/asm/gart.h
index 1d268098ac2e..318556574345 100644
--- a/arch/x86/include/asm/gart.h
+++ b/arch/x86/include/asm/gart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_GART_H
#define _ASM_X86_GART_H
diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h
index ad1ed531febc..51cc979dd364 100644
--- a/arch/x86/include/asm/hardirq.h
+++ b/arch/x86/include/asm/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_HARDIRQ_H
#define _ASM_X86_HARDIRQ_H
diff --git a/arch/x86/include/asm/highmem.h b/arch/x86/include/asm/highmem.h
index 1c0b43724ce3..a8059930056d 100644
--- a/arch/x86/include/asm/highmem.h
+++ b/arch/x86/include/asm/highmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* highmem.h: virtual kernel memory mappings for high memory
*
diff --git a/arch/x86/include/asm/hpet.h b/arch/x86/include/asm/hpet.h
index cc285ec4b2c1..67385d56d4f4 100644
--- a/arch/x86/include/asm/hpet.h
+++ b/arch/x86/include/asm/hpet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_HPET_H
#define _ASM_X86_HPET_H
diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h
index 535af0f2d8ac..5ed826da5e07 100644
--- a/arch/x86/include/asm/hugetlb.h
+++ b/arch/x86/include/asm/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_HUGETLB_H
#define _ASM_X86_HUGETLB_H
diff --git a/arch/x86/include/asm/hw_breakpoint.h b/arch/x86/include/asm/hw_breakpoint.h
index 6c98be864a75..f59c39835a5a 100644
--- a/arch/x86/include/asm/hw_breakpoint.h
+++ b/arch/x86/include/asm/hw_breakpoint.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _I386_HW_BREAKPOINT_H
#define _I386_HW_BREAKPOINT_H
diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
index 6dfe366a8804..8ec99a55e6b9 100644
--- a/arch/x86/include/asm/hw_irq.h
+++ b/arch/x86/include/asm/hw_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_HW_IRQ_H
#define _ASM_X86_HW_IRQ_H
diff --git a/arch/x86/include/asm/hypertransport.h b/arch/x86/include/asm/hypertransport.h
index 334b1a885d9c..5d55df352879 100644
--- a/arch/x86/include/asm/hypertransport.h
+++ b/arch/x86/include/asm/hypertransport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_HYPERTRANSPORT_H
#define _ASM_X86_HYPERTRANSPORT_H
diff --git a/arch/x86/include/asm/i8259.h b/arch/x86/include/asm/i8259.h
index 39bcefc20de7..c8376b40e882 100644
--- a/arch/x86/include/asm/i8259.h
+++ b/arch/x86/include/asm/i8259.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_I8259_H
#define _ASM_X86_I8259_H
diff --git a/arch/x86/include/asm/ia32.h b/arch/x86/include/asm/ia32.h
index a9bdf5569ab3..2c5f7861d373 100644
--- a/arch/x86/include/asm/ia32.h
+++ b/arch/x86/include/asm/ia32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_IA32_H
#define _ASM_X86_IA32_H
diff --git a/arch/x86/include/asm/ia32_unistd.h b/arch/x86/include/asm/ia32_unistd.h
index b0d5716ca1e4..aa065c94ccf5 100644
--- a/arch/x86/include/asm/ia32_unistd.h
+++ b/arch/x86/include/asm/ia32_unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_IA32_UNISTD_H
#define _ASM_X86_IA32_UNISTD_H
diff --git a/arch/x86/include/asm/init.h b/arch/x86/include/asm/init.h
index 05c4aa00cc86..5f1d3c421f68 100644
--- a/arch/x86/include/asm/init.h
+++ b/arch/x86/include/asm/init.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_INIT_H
#define _ASM_X86_INIT_H
diff --git a/arch/x86/include/asm/inst.h b/arch/x86/include/asm/inst.h
index 3e115273ed88..f5a796da07f8 100644
--- a/arch/x86/include/asm/inst.h
+++ b/arch/x86/include/asm/inst.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Generate .byte code for some instructions not supported by old
* binutils.
diff --git a/arch/x86/include/asm/intel-family.h b/arch/x86/include/asm/intel-family.h
index 75b748a1deb8..35a6bc4da8ad 100644
--- a/arch/x86/include/asm/intel-family.h
+++ b/arch/x86/include/asm/intel-family.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_INTEL_FAMILY_H
#define _ASM_X86_INTEL_FAMILY_H
diff --git a/arch/x86/include/asm/intel_mid_vrtc.h b/arch/x86/include/asm/intel_mid_vrtc.h
index 86ff4685c409..35555016b1be 100644
--- a/arch/x86/include/asm/intel_mid_vrtc.h
+++ b/arch/x86/include/asm/intel_mid_vrtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INTEL_MID_VRTC_H
#define _INTEL_MID_VRTC_H
diff --git a/arch/x86/include/asm/intel_pmc_ipc.h b/arch/x86/include/asm/intel_pmc_ipc.h
index fac89eb78a6b..528ed4be4393 100644
--- a/arch/x86/include/asm/intel_pmc_ipc.h
+++ b/arch/x86/include/asm/intel_pmc_ipc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_INTEL_PMC_IPC_H_
#define _ASM_X86_INTEL_PMC_IPC_H_
diff --git a/arch/x86/include/asm/intel_pt.h b/arch/x86/include/asm/intel_pt.h
index e1a411786bf5..b523f51c5400 100644
--- a/arch/x86/include/asm/intel_pt.h
+++ b/arch/x86/include/asm/intel_pt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_INTEL_PT_H
#define _ASM_X86_INTEL_PT_H
diff --git a/arch/x86/include/asm/intel_punit_ipc.h b/arch/x86/include/asm/intel_punit_ipc.h
index 201eb9dce595..ce16da719596 100644
--- a/arch/x86/include/asm/intel_punit_ipc.h
+++ b/arch/x86/include/asm/intel_punit_ipc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_INTEL_PUNIT_IPC_H_
#define _ASM_X86_INTEL_PUNIT_IPC_H_
diff --git a/arch/x86/include/asm/intel_rdt_sched.h b/arch/x86/include/asm/intel_rdt_sched.h
index b4bbf8b21512..9acb06b6f81e 100644
--- a/arch/x86/include/asm/intel_rdt_sched.h
+++ b/arch/x86/include/asm/intel_rdt_sched.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_INTEL_RDT_SCHED_H
#define _ASM_X86_INTEL_RDT_SCHED_H
diff --git a/arch/x86/include/asm/intel_scu_ipc.h b/arch/x86/include/asm/intel_scu_ipc.h
index 81d3d8776fd9..4a8c6e817398 100644
--- a/arch/x86/include/asm/intel_scu_ipc.h
+++ b/arch/x86/include/asm/intel_scu_ipc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_INTEL_SCU_IPC_H_
#define _ASM_X86_INTEL_SCU_IPC_H_
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index c40a95c33bb8..11398d55aefa 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_IO_H
#define _ASM_X86_IO_H
diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h
index 6cbf2cfb3f8a..5c27e146a166 100644
--- a/arch/x86/include/asm/io_apic.h
+++ b/arch/x86/include/asm/io_apic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_IO_APIC_H
#define _ASM_X86_IO_APIC_H
diff --git a/arch/x86/include/asm/iommu.h b/arch/x86/include/asm/iommu.h
index fca144a104e4..1e5d5d92eb40 100644
--- a/arch/x86/include/asm/iommu.h
+++ b/arch/x86/include/asm/iommu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_IOMMU_H
#define _ASM_X86_IOMMU_H
diff --git a/arch/x86/include/asm/iommu_table.h b/arch/x86/include/asm/iommu_table.h
index e37d6b3ad983..1fb3fd1a83c2 100644
--- a/arch/x86/include/asm/iommu_table.h
+++ b/arch/x86/include/asm/iommu_table.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_IOMMU_TABLE_H
#define _ASM_X86_IOMMU_TABLE_H
diff --git a/arch/x86/include/asm/iosf_mbi.h b/arch/x86/include/asm/iosf_mbi.h
index c313cac36f56..7d87437bd030 100644
--- a/arch/x86/include/asm/iosf_mbi.h
+++ b/arch/x86/include/asm/iosf_mbi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Intel OnChip System Fabric MailBox access support
*/
diff --git a/arch/x86/include/asm/irq.h b/arch/x86/include/asm/irq.h
index 9958ceea2fa3..d8632f8fa17d 100644
--- a/arch/x86/include/asm/irq.h
+++ b/arch/x86/include/asm/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_IRQ_H
#define _ASM_X86_IRQ_H
/*
diff --git a/arch/x86/include/asm/irq_regs.h b/arch/x86/include/asm/irq_regs.h
index d82250b1debb..8f3bee821e6c 100644
--- a/arch/x86/include/asm/irq_regs.h
+++ b/arch/x86/include/asm/irq_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Per-cpu current frame pointer - the location of the last exception frame on
* the stack, stored in the per-cpu area.
diff --git a/arch/x86/include/asm/irq_vectors.h b/arch/x86/include/asm/irq_vectors.h
index aaf8d28b5d00..c20ffca8fef1 100644
--- a/arch/x86/include/asm/irq_vectors.h
+++ b/arch/x86/include/asm/irq_vectors.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_IRQ_VECTORS_H
#define _ASM_X86_IRQ_VECTORS_H
diff --git a/arch/x86/include/asm/irq_work.h b/arch/x86/include/asm/irq_work.h
index ddbb8ea0f5a9..800ffce0db29 100644
--- a/arch/x86/include/asm/irq_work.h
+++ b/arch/x86/include/asm/irq_work.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IRQ_WORK_H
#define _ASM_IRQ_WORK_H
diff --git a/arch/x86/include/asm/irqdomain.h b/arch/x86/include/asm/irqdomain.h
index d26075b52885..423e112c1e8f 100644
--- a/arch/x86/include/asm/irqdomain.h
+++ b/arch/x86/include/asm/irqdomain.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_IRQDOMAIN_H
#define _ASM_IRQDOMAIN_H
diff --git a/arch/x86/include/asm/irqflags.h b/arch/x86/include/asm/irqflags.h
index ac7692dcfa2e..c8ef23f2c28f 100644
--- a/arch/x86/include/asm/irqflags.h
+++ b/arch/x86/include/asm/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _X86_IRQFLAGS_H_
#define _X86_IRQFLAGS_H_
diff --git a/arch/x86/include/asm/jump_label.h b/arch/x86/include/asm/jump_label.h
index adc54c12cbd1..8c0de4282659 100644
--- a/arch/x86/include/asm/jump_label.h
+++ b/arch/x86/include/asm/jump_label.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_JUMP_LABEL_H
#define _ASM_X86_JUMP_LABEL_H
diff --git a/arch/x86/include/asm/kasan.h b/arch/x86/include/asm/kasan.h
index f527b02a0ee3..b577dd0916aa 100644
--- a/arch/x86/include/asm/kasan.h
+++ b/arch/x86/include/asm/kasan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_KASAN_H
#define _ASM_X86_KASAN_H
diff --git a/arch/x86/include/asm/kaslr.h b/arch/x86/include/asm/kaslr.h
index 1052a797d71d..460991e3b529 100644
--- a/arch/x86/include/asm/kaslr.h
+++ b/arch/x86/include/asm/kaslr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_KASLR_H_
#define _ASM_KASLR_H_
diff --git a/arch/x86/include/asm/kbdleds.h b/arch/x86/include/asm/kbdleds.h
index f27ac5ff597d..197ea4fedd53 100644
--- a/arch/x86/include/asm/kbdleds.h
+++ b/arch/x86/include/asm/kbdleds.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_KBDLEDS_H
#define _ASM_X86_KBDLEDS_H
diff --git a/arch/x86/include/asm/kdebug.h b/arch/x86/include/asm/kdebug.h
index 29a594a3b82a..f86a8caa561e 100644
--- a/arch/x86/include/asm/kdebug.h
+++ b/arch/x86/include/asm/kdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_KDEBUG_H
#define _ASM_X86_KDEBUG_H
diff --git a/arch/x86/include/asm/kexec-bzimage64.h b/arch/x86/include/asm/kexec-bzimage64.h
index d1b5d194e31d..9f07cff43705 100644
--- a/arch/x86/include/asm/kexec-bzimage64.h
+++ b/arch/x86/include/asm/kexec-bzimage64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_KEXEC_BZIMAGE64_H
#define _ASM_KEXEC_BZIMAGE64_H
diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h
index 942c1f444da8..f327236f0fa7 100644
--- a/arch/x86/include/asm/kexec.h
+++ b/arch/x86/include/asm/kexec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_KEXEC_H
#define _ASM_X86_KEXEC_H
diff --git a/arch/x86/include/asm/kgdb.h b/arch/x86/include/asm/kgdb.h
index 22a8537eb780..aacaf2502bd2 100644
--- a/arch/x86/include/asm/kgdb.h
+++ b/arch/x86/include/asm/kgdb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_KGDB_H
#define _ASM_X86_KGDB_H
diff --git a/arch/x86/include/asm/kmap_types.h b/arch/x86/include/asm/kmap_types.h
index 9e00a731a7fb..04ab8266e347 100644
--- a/arch/x86/include/asm/kmap_types.h
+++ b/arch/x86/include/asm/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_KMAP_TYPES_H
#define _ASM_X86_KMAP_TYPES_H
diff --git a/arch/x86/include/asm/kmemcheck.h b/arch/x86/include/asm/kmemcheck.h
index ed01518f297e..945a0337fbcf 100644
--- a/arch/x86/include/asm/kmemcheck.h
+++ b/arch/x86/include/asm/kmemcheck.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_X86_KMEMCHECK_H
#define ASM_X86_KMEMCHECK_H
diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h
index fa2558e12024..ee23a43386a2 100644
--- a/arch/x86/include/asm/kvm_emulate.h
+++ b/arch/x86/include/asm/kvm_emulate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/******************************************************************************
* x86_emulate.h
*
diff --git a/arch/x86/include/asm/kvm_guest.h b/arch/x86/include/asm/kvm_guest.h
index a92b1763c419..46185263d9c2 100644
--- a/arch/x86/include/asm/kvm_guest.h
+++ b/arch/x86/include/asm/kvm_guest.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_KVM_GUEST_H
#define _ASM_X86_KVM_GUEST_H
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 8844eee290b2..c73e493adf07 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -951,7 +951,6 @@ struct kvm_x86_ops {
void (*cache_reg)(struct kvm_vcpu *vcpu, enum kvm_reg reg);
unsigned long (*get_rflags)(struct kvm_vcpu *vcpu);
void (*set_rflags)(struct kvm_vcpu *vcpu, unsigned long rflags);
- u32 (*get_pkru)(struct kvm_vcpu *vcpu);
void (*tlb_flush)(struct kvm_vcpu *vcpu);
@@ -973,7 +972,7 @@ struct kvm_x86_ops {
void (*enable_nmi_window)(struct kvm_vcpu *vcpu);
void (*enable_irq_window)(struct kvm_vcpu *vcpu);
void (*update_cr8_intercept)(struct kvm_vcpu *vcpu, int tpr, int irr);
- bool (*get_enable_apicv)(void);
+ bool (*get_enable_apicv)(struct kvm_vcpu *vcpu);
void (*refresh_apicv_exec_ctrl)(struct kvm_vcpu *vcpu);
void (*hwapic_irr_update)(struct kvm_vcpu *vcpu, int max_irr);
void (*hwapic_isr_update)(struct kvm_vcpu *vcpu, int isr);
diff --git a/arch/x86/include/asm/kvm_page_track.h b/arch/x86/include/asm/kvm_page_track.h
index c4eda791f877..172f9749dbb2 100644
--- a/arch/x86/include/asm/kvm_page_track.h
+++ b/arch/x86/include/asm/kvm_page_track.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_KVM_PAGE_TRACK_H
#define _ASM_X86_KVM_PAGE_TRACK_H
diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h
index bc62e7cbf1b1..c373e44049b1 100644
--- a/arch/x86/include/asm/kvm_para.h
+++ b/arch/x86/include/asm/kvm_para.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_KVM_PARA_H
#define _ASM_X86_KVM_PARA_H
@@ -88,7 +89,7 @@ static inline long kvm_hypercall4(unsigned int nr, unsigned long p1,
bool kvm_para_available(void);
unsigned int kvm_arch_para_features(void);
void __init kvm_guest_init(void);
-void kvm_async_pf_task_wait(u32 token);
+void kvm_async_pf_task_wait(u32 token, int interrupt_kernel);
void kvm_async_pf_task_wake(u32 token);
u32 kvm_read_and_reset_pf_reason(void);
extern void kvm_disable_steal_time(void);
@@ -103,7 +104,7 @@ static inline void kvm_spinlock_init(void)
#else /* CONFIG_KVM_GUEST */
#define kvm_guest_init() do {} while (0)
-#define kvm_async_pf_task_wait(T) do {} while(0)
+#define kvm_async_pf_task_wait(T, I) do {} while(0)
#define kvm_async_pf_task_wake(T) do {} while(0)
static inline bool kvm_para_available(void)
diff --git a/arch/x86/include/asm/kvmclock.h b/arch/x86/include/asm/kvmclock.h
index f260bef63591..eceea9299097 100644
--- a/arch/x86/include/asm/kvmclock.h
+++ b/arch/x86/include/asm/kvmclock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_KVM_CLOCK_H
#define _ASM_X86_KVM_CLOCK_H
diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h
index 0ccb26dda126..14caa9d9fb7f 100644
--- a/arch/x86/include/asm/linkage.h
+++ b/arch/x86/include/asm/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_LINKAGE_H
#define _ASM_X86_LINKAGE_H
diff --git a/arch/x86/include/asm/local.h b/arch/x86/include/asm/local.h
index 7511978093eb..c91083c59845 100644
--- a/arch/x86/include/asm/local.h
+++ b/arch/x86/include/asm/local.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_LOCAL_H
#define _ASM_X86_LOCAL_H
diff --git a/arch/x86/include/asm/mach_timer.h b/arch/x86/include/asm/mach_timer.h
index 88d0c3c74c13..044daf6fb8f6 100644
--- a/arch/x86/include/asm/mach_timer.h
+++ b/arch/x86/include/asm/mach_timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine specific calibrate_tsc() for generic.
* Split out from timer_tsc.c by Osamu Tomita <tomita@cinet.co.jp>
diff --git a/arch/x86/include/asm/mach_traps.h b/arch/x86/include/asm/mach_traps.h
index a01e7ec7d237..e39a517467cd 100644
--- a/arch/x86/include/asm/mach_traps.h
+++ b/arch/x86/include/asm/mach_traps.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine specific NMI handling for generic.
* Split out from traps.c by Osamu Tomita <tomita@cinet.co.jp>
diff --git a/arch/x86/include/asm/math_emu.h b/arch/x86/include/asm/math_emu.h
index 0d9b14f60d2c..3c42743083ed 100644
--- a/arch/x86/include/asm/math_emu.h
+++ b/arch/x86/include/asm/math_emu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MATH_EMU_H
#define _ASM_X86_MATH_EMU_H
diff --git a/arch/x86/include/asm/mc146818rtc.h b/arch/x86/include/asm/mc146818rtc.h
index 24acd9ba7837..1775a32f7ea6 100644
--- a/arch/x86/include/asm/mc146818rtc.h
+++ b/arch/x86/include/asm/mc146818rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Machine dependent access functions for RTC registers.
*/
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
index 181264989db5..b1e8d8db921f 100644
--- a/arch/x86/include/asm/mce.h
+++ b/arch/x86/include/asm/mce.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MCE_H
#define _ASM_X86_MCE_H
@@ -187,7 +188,6 @@ struct mca_msr_regs {
extern struct mce_vendor_flags mce_flags;
-extern struct mca_config mca_cfg;
extern struct mca_msr_regs msr_ops;
enum mce_notifier_prios {
diff --git a/arch/x86/include/asm/microcode.h b/arch/x86/include/asm/microcode.h
index daadeeea00b1..55520cec8b27 100644
--- a/arch/x86/include/asm/microcode.h
+++ b/arch/x86/include/asm/microcode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MICROCODE_H
#define _ASM_X86_MICROCODE_H
diff --git a/arch/x86/include/asm/microcode_amd.h b/arch/x86/include/asm/microcode_amd.h
index 3d57009e168b..209492849566 100644
--- a/arch/x86/include/asm/microcode_amd.h
+++ b/arch/x86/include/asm/microcode_amd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MICROCODE_AMD_H
#define _ASM_X86_MICROCODE_AMD_H
diff --git a/arch/x86/include/asm/microcode_intel.h b/arch/x86/include/asm/microcode_intel.h
index e793fc9a9b20..d85a07d7154f 100644
--- a/arch/x86/include/asm/microcode_intel.h
+++ b/arch/x86/include/asm/microcode_intel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MICROCODE_INTEL_H
#define _ASM_X86_MICROCODE_INTEL_H
diff --git a/arch/x86/include/asm/misc.h b/arch/x86/include/asm/misc.h
index 475f5bbc7f53..bb049cca3729 100644
--- a/arch/x86/include/asm/misc.h
+++ b/arch/x86/include/asm/misc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MISC_H
#define _ASM_X86_MISC_H
diff --git a/arch/x86/include/asm/mmconfig.h b/arch/x86/include/asm/mmconfig.h
index 04a3fed22cfe..976486447e10 100644
--- a/arch/x86/include/asm/mmconfig.h
+++ b/arch/x86/include/asm/mmconfig.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MMCONFIG_H
#define _ASM_X86_MMCONFIG_H
diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
index bb8c597c2248..9ea26f167497 100644
--- a/arch/x86/include/asm/mmu.h
+++ b/arch/x86/include/asm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MMU_H
#define _ASM_X86_MMU_H
diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
index 7ae318c340d9..6699fc441644 100644
--- a/arch/x86/include/asm/mmu_context.h
+++ b/arch/x86/include/asm/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MMU_CONTEXT_H
#define _ASM_X86_MMU_CONTEXT_H
@@ -126,13 +127,7 @@ static inline void switch_ldt(struct mm_struct *prev, struct mm_struct *next)
DEBUG_LOCKS_WARN_ON(preemptible());
}
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
- int cpu = smp_processor_id();
-
- if (cpumask_test_cpu(cpu, mm_cpumask(mm)))
- cpumask_clear_cpu(cpu, mm_cpumask(mm));
-}
+void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk);
static inline int init_new_context(struct task_struct *tsk,
struct mm_struct *mm)
@@ -286,6 +281,32 @@ static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
return __pkru_allows_pkey(vma_pkey(vma), write);
}
+/*
+ * If PCID is on, ASID-aware code paths put the ASID+1 into the PCID
+ * bits. This serves two purposes. It prevents a nasty situation in
+ * which PCID-unaware code saves CR3, loads some other value (with PCID
+ * == 0), and then restores CR3, thus corrupting the TLB for ASID 0 if
+ * the saved ASID was nonzero. It also means that any bugs involving
+ * loading a PCID-enabled CR3 with CR4.PCIDE off will trigger
+ * deterministically.
+ */
+
+static inline unsigned long build_cr3(struct mm_struct *mm, u16 asid)
+{
+ if (static_cpu_has(X86_FEATURE_PCID)) {
+ VM_WARN_ON_ONCE(asid > 4094);
+ return __sme_pa(mm->pgd) | (asid + 1);
+ } else {
+ VM_WARN_ON_ONCE(asid != 0);
+ return __sme_pa(mm->pgd);
+ }
+}
+
+static inline unsigned long build_cr3_noflush(struct mm_struct *mm, u16 asid)
+{
+ VM_WARN_ON_ONCE(asid > 4094);
+ return __sme_pa(mm->pgd) | (asid + 1) | CR3_NOFLUSH;
+}
/*
* This can be used from process context to figure out what the value of
@@ -296,10 +317,8 @@ static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
*/
static inline unsigned long __get_current_cr3_fast(void)
{
- unsigned long cr3 = __pa(this_cpu_read(cpu_tlbstate.loaded_mm)->pgd);
-
- if (static_cpu_has(X86_FEATURE_PCID))
- cr3 |= this_cpu_read(cpu_tlbstate.loaded_mm_asid);
+ unsigned long cr3 = build_cr3(this_cpu_read(cpu_tlbstate.loaded_mm),
+ this_cpu_read(cpu_tlbstate.loaded_mm_asid));
/* For now, be very restrictive about when this can be called. */
VM_WARN_ON(in_nmi() || preemptible());
diff --git a/arch/x86/include/asm/mmx.h b/arch/x86/include/asm/mmx.h
index 5cbf3135b971..f572d0f944bb 100644
--- a/arch/x86/include/asm/mmx.h
+++ b/arch/x86/include/asm/mmx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MMX_H
#define _ASM_X86_MMX_H
diff --git a/arch/x86/include/asm/mmzone.h b/arch/x86/include/asm/mmzone.h
index d497bc425cae..c41b41edd691 100644
--- a/arch/x86/include/asm/mmzone.h
+++ b/arch/x86/include/asm/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_X86_32
# include <asm/mmzone_32.h>
#else
diff --git a/arch/x86/include/asm/mmzone_32.h b/arch/x86/include/asm/mmzone_32.h
index 1ec990bd7dc0..73d8dd14dda2 100644
--- a/arch/x86/include/asm/mmzone_32.h
+++ b/arch/x86/include/asm/mmzone_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Written by Pat Gaughen (gone@us.ibm.com) Mar 2002
*
diff --git a/arch/x86/include/asm/mmzone_64.h b/arch/x86/include/asm/mmzone_64.h
index 129d9aa3ceb3..0c585046f744 100644
--- a/arch/x86/include/asm/mmzone_64.h
+++ b/arch/x86/include/asm/mmzone_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* K8 NUMA support */
/* Copyright 2002,2003 by Andi Kleen, SuSE Labs */
/* 2.5 Version loosely based on the NUMAQ Code by Pat Gaughen. */
diff --git a/arch/x86/include/asm/module.h b/arch/x86/include/asm/module.h
index 9eb7c718aaf8..8546fafa21a9 100644
--- a/arch/x86/include/asm/module.h
+++ b/arch/x86/include/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MODULE_H
#define _ASM_X86_MODULE_H
diff --git a/arch/x86/include/asm/mpspec.h b/arch/x86/include/asm/mpspec.h
index c471ca1f9412..606cbaebd336 100644
--- a/arch/x86/include/asm/mpspec.h
+++ b/arch/x86/include/asm/mpspec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MPSPEC_H
#define _ASM_X86_MPSPEC_H
diff --git a/arch/x86/include/asm/mpspec_def.h b/arch/x86/include/asm/mpspec_def.h
index b31f8c098271..9492893aec52 100644
--- a/arch/x86/include/asm/mpspec_def.h
+++ b/arch/x86/include/asm/mpspec_def.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MPSPEC_DEF_H
#define _ASM_X86_MPSPEC_DEF_H
diff --git a/arch/x86/include/asm/mpx.h b/arch/x86/include/asm/mpx.h
index 7d7404756bb4..61eb4b63c5ec 100644
--- a/arch/x86/include/asm/mpx.h
+++ b/arch/x86/include/asm/mpx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MPX_H
#define _ASM_X86_MPX_H
diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h
index 63cc96f064dc..581bb54dd464 100644
--- a/arch/x86/include/asm/mshyperv.h
+++ b/arch/x86/include/asm/mshyperv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MSHYPER_H
#define _ASM_X86_MSHYPER_H
@@ -179,7 +180,6 @@ static inline u64 hv_do_hypercall(u64 control, void *input, void *output)
u64 input_address = input ? virt_to_phys(input) : 0;
u64 output_address = output ? virt_to_phys(output) : 0;
u64 hv_status;
- register void *__sp asm(_ASM_SP);
#ifdef CONFIG_X86_64
if (!hv_hypercall_pg)
@@ -187,7 +187,7 @@ static inline u64 hv_do_hypercall(u64 control, void *input, void *output)
__asm__ __volatile__("mov %4, %%r8\n"
"call *%5"
- : "=a" (hv_status), "+r" (__sp),
+ : "=a" (hv_status), ASM_CALL_CONSTRAINT,
"+c" (control), "+d" (input_address)
: "r" (output_address), "m" (hv_hypercall_pg)
: "cc", "memory", "r8", "r9", "r10", "r11");
@@ -202,7 +202,7 @@ static inline u64 hv_do_hypercall(u64 control, void *input, void *output)
__asm__ __volatile__("call *%7"
: "=A" (hv_status),
- "+c" (input_address_lo), "+r" (__sp)
+ "+c" (input_address_lo), ASM_CALL_CONSTRAINT
: "A" (control),
"b" (input_address_hi),
"D"(output_address_hi), "S"(output_address_lo),
@@ -224,12 +224,11 @@ static inline u64 hv_do_hypercall(u64 control, void *input, void *output)
static inline u64 hv_do_fast_hypercall8(u16 code, u64 input1)
{
u64 hv_status, control = (u64)code | HV_HYPERCALL_FAST_BIT;
- register void *__sp asm(_ASM_SP);
#ifdef CONFIG_X86_64
{
__asm__ __volatile__("call *%4"
- : "=a" (hv_status), "+r" (__sp),
+ : "=a" (hv_status), ASM_CALL_CONSTRAINT,
"+c" (control), "+d" (input1)
: "m" (hv_hypercall_pg)
: "cc", "r8", "r9", "r10", "r11");
@@ -242,7 +241,7 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 input1)
__asm__ __volatile__ ("call *%5"
: "=A"(hv_status),
"+c"(input1_lo),
- "+r"(__sp)
+ ASM_CALL_CONSTRAINT
: "A" (control),
"b" (input1_hi),
"m" (hv_hypercall_pg)
@@ -291,6 +290,7 @@ static inline u64 hv_do_rep_hypercall(u16 code, u16 rep_count, u16 varhead_size,
* to this information.
*/
extern u32 *hv_vp_index;
+extern u32 hv_max_vp_index;
/**
* hv_cpu_number_to_vp_number() - Map CPU to VP.
diff --git a/arch/x86/include/asm/msi.h b/arch/x86/include/asm/msi.h
index eb4b09b41df5..25ddd0916bb2 100644
--- a/arch/x86/include/asm/msi.h
+++ b/arch/x86/include/asm/msi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MSI_H
#define _ASM_X86_MSI_H
#include <asm/hw_irq.h>
diff --git a/arch/x86/include/asm/msidef.h b/arch/x86/include/asm/msidef.h
index 4cc48af23fef..ee2f8ccc32d0 100644
--- a/arch/x86/include/asm/msidef.h
+++ b/arch/x86/include/asm/msidef.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MSIDEF_H
#define _ASM_X86_MSIDEF_H
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index 17f5c12e1afd..ab022618a50a 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MSR_INDEX_H
#define _ASM_X86_MSR_INDEX_H
diff --git a/arch/x86/include/asm/msr-trace.h b/arch/x86/include/asm/msr-trace.h
index 7567225747d8..f6adbe96856a 100644
--- a/arch/x86/include/asm/msr-trace.h
+++ b/arch/x86/include/asm/msr-trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM msr
diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h
index 898dba2e2e2c..07962f5f6fba 100644
--- a/arch/x86/include/asm/msr.h
+++ b/arch/x86/include/asm/msr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MSR_H
#define _ASM_X86_MSR_H
diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h
index bda3c27f0da0..39a2fb29378a 100644
--- a/arch/x86/include/asm/mwait.h
+++ b/arch/x86/include/asm/mwait.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_MWAIT_H
#define _ASM_X86_MWAIT_H
diff --git a/arch/x86/include/asm/nmi.h b/arch/x86/include/asm/nmi.h
index 5f2fc4441b11..75ded1d13d98 100644
--- a/arch/x86/include/asm/nmi.h
+++ b/arch/x86/include/asm/nmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_NMI_H
#define _ASM_X86_NMI_H
diff --git a/arch/x86/include/asm/nops.h b/arch/x86/include/asm/nops.h
index aff2b3356101..12f12b5cf2ca 100644
--- a/arch/x86/include/asm/nops.h
+++ b/arch/x86/include/asm/nops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_NOPS_H
#define _ASM_X86_NOPS_H
diff --git a/arch/x86/include/asm/numa.h b/arch/x86/include/asm/numa.h
index 01b493e5a99b..bbfde3d2662f 100644
--- a/arch/x86/include/asm/numa.h
+++ b/arch/x86/include/asm/numa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_NUMA_H
#define _ASM_X86_NUMA_H
diff --git a/arch/x86/include/asm/numa_32.h b/arch/x86/include/asm/numa_32.h
index e7d6b8254742..9c8e9e85be77 100644
--- a/arch/x86/include/asm/numa_32.h
+++ b/arch/x86/include/asm/numa_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_NUMA_32_H
#define _ASM_X86_NUMA_32_H
diff --git a/arch/x86/include/asm/olpc.h b/arch/x86/include/asm/olpc.h
index 72f9adf6eca4..c2bf1de5d901 100644
--- a/arch/x86/include/asm/olpc.h
+++ b/arch/x86/include/asm/olpc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* OLPC machine specific definitions */
#ifndef _ASM_X86_OLPC_H
diff --git a/arch/x86/include/asm/olpc_ofw.h b/arch/x86/include/asm/olpc_ofw.h
index 24487712e0b1..8c2a1daf7f72 100644
--- a/arch/x86/include/asm/olpc_ofw.h
+++ b/arch/x86/include/asm/olpc_ofw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_OLPC_OFW_H
#define _ASM_X86_OLPC_OFW_H
diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h
index cf8f619b305f..7555b48803a8 100644
--- a/arch/x86/include/asm/page.h
+++ b/arch/x86/include/asm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PAGE_H
#define _ASM_X86_PAGE_H
diff --git a/arch/x86/include/asm/page_32.h b/arch/x86/include/asm/page_32.h
index 904f528cc8e8..94dbd51df58f 100644
--- a/arch/x86/include/asm/page_32.h
+++ b/arch/x86/include/asm/page_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PAGE_32_H
#define _ASM_X86_PAGE_32_H
diff --git a/arch/x86/include/asm/page_32_types.h b/arch/x86/include/asm/page_32_types.h
index 3bae4969ac65..aa30c3241ea7 100644
--- a/arch/x86/include/asm/page_32_types.h
+++ b/arch/x86/include/asm/page_32_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PAGE_32_DEFS_H
#define _ASM_X86_PAGE_32_DEFS_H
diff --git a/arch/x86/include/asm/page_64.h b/arch/x86/include/asm/page_64.h
index b50df06ad251..4baa6bceb232 100644
--- a/arch/x86/include/asm/page_64.h
+++ b/arch/x86/include/asm/page_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PAGE_64_H
#define _ASM_X86_PAGE_64_H
diff --git a/arch/x86/include/asm/page_64_types.h b/arch/x86/include/asm/page_64_types.h
index 3f5f08b010d0..e1407312c412 100644
--- a/arch/x86/include/asm/page_64_types.h
+++ b/arch/x86/include/asm/page_64_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PAGE_64_DEFS_H
#define _ASM_X86_PAGE_64_DEFS_H
diff --git a/arch/x86/include/asm/page_types.h b/arch/x86/include/asm/page_types.h
index b98ed9d14630..1e53560a84bb 100644
--- a/arch/x86/include/asm/page_types.h
+++ b/arch/x86/include/asm/page_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PAGE_DEFS_H
#define _ASM_X86_PAGE_DEFS_H
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
index c25dd22f7c70..fd81228e8037 100644
--- a/arch/x86/include/asm/paravirt.h
+++ b/arch/x86/include/asm/paravirt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PARAVIRT_H
#define _ASM_X86_PARAVIRT_H
/* Various instructions on x86 need to be replaced for
@@ -71,11 +72,6 @@ static inline void write_cr3(unsigned long x)
PVOP_VCALL1(pv_mmu_ops.write_cr3, x);
}
-static inline unsigned long __read_cr4(void)
-{
- return PVOP_CALL0(unsigned long, pv_cpu_ops.read_cr4);
-}
-
static inline void __write_cr4(unsigned long x)
{
PVOP_VCALL1(pv_cpu_ops.write_cr4, x);
@@ -228,10 +224,6 @@ static inline void set_ldt(const void *addr, unsigned entries)
{
PVOP_VCALL2(pv_cpu_ops.set_ldt, addr, entries);
}
-static inline void store_idt(struct desc_ptr *dtr)
-{
- PVOP_VCALL1(pv_cpu_ops.store_idt, dtr);
-}
static inline unsigned long paravirt_store_tr(void)
{
return PVOP_CALL0(unsigned long, pv_cpu_ops.store_tr);
@@ -365,12 +357,6 @@ static inline void paravirt_release_p4d(unsigned long pfn)
PVOP_VCALL1(pv_mmu_ops.release_p4d, pfn);
}
-static inline void pte_update(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep)
-{
- PVOP_VCALL3(pv_mmu_ops.pte_update, mm, addr, ptep);
-}
-
static inline pte_t __pte(pteval_t val)
{
pteval_t ret;
@@ -472,28 +458,6 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
PVOP_VCALL4(pv_mmu_ops.set_pte_at, mm, addr, ptep, pte.pte);
}
-static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
- pmd_t *pmdp, pmd_t pmd)
-{
- if (sizeof(pmdval_t) > sizeof(long))
- /* 5 arg words */
- pv_mmu_ops.set_pmd_at(mm, addr, pmdp, pmd);
- else
- PVOP_VCALL4(pv_mmu_ops.set_pmd_at, mm, addr, pmdp,
- native_pmd_val(pmd));
-}
-
-static inline void set_pud_at(struct mm_struct *mm, unsigned long addr,
- pud_t *pudp, pud_t pud)
-{
- if (sizeof(pudval_t) > sizeof(long))
- /* 5 arg words */
- pv_mmu_ops.set_pud_at(mm, addr, pudp, pud);
- else
- PVOP_VCALL4(pv_mmu_ops.set_pud_at, mm, addr, pudp,
- native_pud_val(pud));
-}
-
static inline void set_pmd(pmd_t *pmdp, pmd_t pmd)
{
pmdval_t val = native_pmd_val(pmd);
diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
index 6b64fc6367f2..10cc3b9709fe 100644
--- a/arch/x86/include/asm/paravirt_types.h
+++ b/arch/x86/include/asm/paravirt_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PARAVIRT_TYPES_H
#define _ASM_X86_PARAVIRT_TYPES_H
@@ -107,7 +108,6 @@ struct pv_cpu_ops {
unsigned long (*read_cr0)(void);
void (*write_cr0)(unsigned long);
- unsigned long (*read_cr4)(void);
void (*write_cr4)(unsigned long);
#ifdef CONFIG_X86_64
@@ -119,8 +119,6 @@ struct pv_cpu_ops {
void (*load_tr_desc)(void);
void (*load_gdt)(const struct desc_ptr *);
void (*load_idt)(const struct desc_ptr *);
- /* store_gdt has been removed. */
- void (*store_idt)(struct desc_ptr *);
void (*set_ldt)(const void *desc, unsigned entries);
unsigned long (*store_tr)(void);
void (*load_tls)(struct thread_struct *t, unsigned int cpu);
@@ -245,12 +243,6 @@ struct pv_mmu_ops {
void (*set_pte_at)(struct mm_struct *mm, unsigned long addr,
pte_t *ptep, pte_t pteval);
void (*set_pmd)(pmd_t *pmdp, pmd_t pmdval);
- void (*set_pmd_at)(struct mm_struct *mm, unsigned long addr,
- pmd_t *pmdp, pmd_t pmdval);
- void (*set_pud_at)(struct mm_struct *mm, unsigned long addr,
- pud_t *pudp, pud_t pudval);
- void (*pte_update)(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep);
pte_t (*ptep_modify_prot_start)(struct mm_struct *mm, unsigned long addr,
pte_t *ptep);
@@ -468,8 +460,8 @@ int paravirt_disable_iospace(void);
*/
#ifdef CONFIG_X86_32
#define PVOP_VCALL_ARGS \
- unsigned long __eax = __eax, __edx = __edx, __ecx = __ecx; \
- register void *__sp asm("esp")
+ unsigned long __eax = __eax, __edx = __edx, __ecx = __ecx;
+
#define PVOP_CALL_ARGS PVOP_VCALL_ARGS
#define PVOP_CALL_ARG1(x) "a" ((unsigned long)(x))
@@ -489,8 +481,8 @@ int paravirt_disable_iospace(void);
/* [re]ax isn't an arg, but the return val */
#define PVOP_VCALL_ARGS \
unsigned long __edi = __edi, __esi = __esi, \
- __edx = __edx, __ecx = __ecx, __eax = __eax; \
- register void *__sp asm("rsp")
+ __edx = __edx, __ecx = __ecx, __eax = __eax;
+
#define PVOP_CALL_ARGS PVOP_VCALL_ARGS
#define PVOP_CALL_ARG1(x) "D" ((unsigned long)(x))
@@ -541,7 +533,7 @@ int paravirt_disable_iospace(void);
asm volatile(pre \
paravirt_alt(PARAVIRT_CALL) \
post \
- : call_clbr, "+r" (__sp) \
+ : call_clbr, ASM_CALL_CONSTRAINT \
: paravirt_type(op), \
paravirt_clobber(clbr), \
##__VA_ARGS__ \
@@ -551,7 +543,7 @@ int paravirt_disable_iospace(void);
asm volatile(pre \
paravirt_alt(PARAVIRT_CALL) \
post \
- : call_clbr, "+r" (__sp) \
+ : call_clbr, ASM_CALL_CONSTRAINT \
: paravirt_type(op), \
paravirt_clobber(clbr), \
##__VA_ARGS__ \
@@ -578,7 +570,7 @@ int paravirt_disable_iospace(void);
asm volatile(pre \
paravirt_alt(PARAVIRT_CALL) \
post \
- : call_clbr, "+r" (__sp) \
+ : call_clbr, ASM_CALL_CONSTRAINT \
: paravirt_type(op), \
paravirt_clobber(clbr), \
##__VA_ARGS__ \
diff --git a/arch/x86/include/asm/parport.h b/arch/x86/include/asm/parport.h
index 0d2d3b29118f..163f78259a7e 100644
--- a/arch/x86/include/asm/parport.h
+++ b/arch/x86/include/asm/parport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PARPORT_H
#define _ASM_X86_PARPORT_H
diff --git a/arch/x86/include/asm/pat.h b/arch/x86/include/asm/pat.h
index fffb2794dd89..8a3ee355b422 100644
--- a/arch/x86/include/asm/pat.h
+++ b/arch/x86/include/asm/pat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PAT_H
#define _ASM_X86_PAT_H
diff --git a/arch/x86/include/asm/pci-direct.h b/arch/x86/include/asm/pci-direct.h
index b1e7a45d868a..e1084f71a295 100644
--- a/arch/x86/include/asm/pci-direct.h
+++ b/arch/x86/include/asm/pci-direct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PCI_DIRECT_H
#define _ASM_X86_PCI_DIRECT_H
diff --git a/arch/x86/include/asm/pci-functions.h b/arch/x86/include/asm/pci-functions.h
index ed0bab427354..1bbc10812ae1 100644
--- a/arch/x86/include/asm/pci-functions.h
+++ b/arch/x86/include/asm/pci-functions.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PCI BIOS function numbering for conventional PCI BIOS
* systems
diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
index 473a7295ab10..09c06b0fb964 100644
--- a/arch/x86/include/asm/pci.h
+++ b/arch/x86/include/asm/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PCI_H
#define _ASM_X86_PCI_H
diff --git a/arch/x86/include/asm/pci_64.h b/arch/x86/include/asm/pci_64.h
index fe15cfb21b9b..f5411de0ae11 100644
--- a/arch/x86/include/asm/pci_64.h
+++ b/arch/x86/include/asm/pci_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PCI_64_H
#define _ASM_X86_PCI_64_H
diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h
index 9f1b21f372fe..7a5d6695abd3 100644
--- a/arch/x86/include/asm/pci_x86.h
+++ b/arch/x86/include/asm/pci_x86.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Low-Level PCI Access for i386 machines.
*
diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/percpu.h
index 9fa03604b2b3..377f1ffd18be 100644
--- a/arch/x86/include/asm/percpu.h
+++ b/arch/x86/include/asm/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PERCPU_H
#define _ASM_X86_PERCPU_H
diff --git a/arch/x86/include/asm/perf_event.h b/arch/x86/include/asm/perf_event.h
index f353061bba1d..12f54082f4c8 100644
--- a/arch/x86/include/asm/perf_event.h
+++ b/arch/x86/include/asm/perf_event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PERF_EVENT_H
#define _ASM_X86_PERF_EVENT_H
diff --git a/arch/x86/include/asm/perf_event_p4.h b/arch/x86/include/asm/perf_event_p4.h
index d725382c2ae0..94de1a05aeba 100644
--- a/arch/x86/include/asm/perf_event_p4.h
+++ b/arch/x86/include/asm/perf_event_p4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Netburst Performance Events (P4, old Xeon)
*/
diff --git a/arch/x86/include/asm/pgalloc.h b/arch/x86/include/asm/pgalloc.h
index b2d0cd8288aa..4b5e1eafada7 100644
--- a/arch/x86/include/asm/pgalloc.h
+++ b/arch/x86/include/asm/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGALLOC_H
#define _ASM_X86_PGALLOC_H
diff --git a/arch/x86/include/asm/pgtable-2level.h b/arch/x86/include/asm/pgtable-2level.h
index a8b96e708c2b..685ffe8a0eaf 100644
--- a/arch/x86/include/asm/pgtable-2level.h
+++ b/arch/x86/include/asm/pgtable-2level.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGTABLE_2LEVEL_H
#define _ASM_X86_PGTABLE_2LEVEL_H
diff --git a/arch/x86/include/asm/pgtable-2level_types.h b/arch/x86/include/asm/pgtable-2level_types.h
index 373ab1de909f..f982ef808e7e 100644
--- a/arch/x86/include/asm/pgtable-2level_types.h
+++ b/arch/x86/include/asm/pgtable-2level_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGTABLE_2LEVEL_DEFS_H
#define _ASM_X86_PGTABLE_2LEVEL_DEFS_H
diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h
index c8821bab938f..bc4af5453802 100644
--- a/arch/x86/include/asm/pgtable-3level.h
+++ b/arch/x86/include/asm/pgtable-3level.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGTABLE_3LEVEL_H
#define _ASM_X86_PGTABLE_3LEVEL_H
diff --git a/arch/x86/include/asm/pgtable-3level_types.h b/arch/x86/include/asm/pgtable-3level_types.h
index b8a4341faafa..876b4c77d983 100644
--- a/arch/x86/include/asm/pgtable-3level_types.h
+++ b/arch/x86/include/asm/pgtable-3level_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGTABLE_3LEVEL_DEFS_H
#define _ASM_X86_PGTABLE_3LEVEL_DEFS_H
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index 5b4c44d419c5..f735c3016325 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGTABLE_H
#define _ASM_X86_PGTABLE_H
@@ -55,8 +56,6 @@ extern pmdval_t early_pmd_flags;
#else /* !CONFIG_PARAVIRT */
#define set_pte(ptep, pte) native_set_pte(ptep, pte)
#define set_pte_at(mm, addr, ptep, pte) native_set_pte_at(mm, addr, ptep, pte)
-#define set_pmd_at(mm, addr, pmdp, pmd) native_set_pmd_at(mm, addr, pmdp, pmd)
-#define set_pud_at(mm, addr, pudp, pud) native_set_pud_at(mm, addr, pudp, pud)
#define set_pte_atomic(ptep, pte) \
native_set_pte_atomic(ptep, pte)
@@ -87,8 +86,6 @@ extern pmdval_t early_pmd_flags;
#define pte_clear(mm, addr, ptep) native_pte_clear(mm, addr, ptep)
#define pmd_clear(pmd) native_pmd_clear(pmd)
-#define pte_update(mm, addr, ptep) do { } while (0)
-
#define pgd_val(x) native_pgd_val(x)
#define __pgd(x) native_make_pgd(x)
@@ -979,31 +976,18 @@ static inline void native_set_pte_at(struct mm_struct *mm, unsigned long addr,
native_set_pte(ptep, pte);
}
-static inline void native_set_pmd_at(struct mm_struct *mm, unsigned long addr,
- pmd_t *pmdp , pmd_t pmd)
+static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
+ pmd_t *pmdp, pmd_t pmd)
{
native_set_pmd(pmdp, pmd);
}
-static inline void native_set_pud_at(struct mm_struct *mm, unsigned long addr,
- pud_t *pudp, pud_t pud)
+static inline void set_pud_at(struct mm_struct *mm, unsigned long addr,
+ pud_t *pudp, pud_t pud)
{
native_set_pud(pudp, pud);
}
-#ifndef CONFIG_PARAVIRT
-/*
- * Rules for using pte_update - it must be called after any PTE update which
- * has not been done using the set_pte / clear_pte interfaces. It is used by
- * shadow mode hypervisors to resynchronize the shadow page tables. Kernel PTE
- * updates should either be sets, clears, or set_pte_atomic for P->P
- * transitions, which means this hook should only be called for user PTEs.
- * This hook implies a P->P protection or access change has taken place, which
- * requires a subsequent TLB flush.
- */
-#define pte_update(mm, addr, ptep) do { } while (0)
-#endif
-
/*
* We only update the dirty/accessed state if we set
* the dirty bit by hand in the kernel, since the hardware
@@ -1031,7 +1015,6 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
pte_t *ptep)
{
pte_t pte = native_ptep_get_and_clear(ptep);
- pte_update(mm, addr, ptep);
return pte;
}
@@ -1058,7 +1041,6 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm,
unsigned long addr, pte_t *ptep)
{
clear_bit(_PAGE_BIT_RW, (unsigned long *)&ptep->pte);
- pte_update(mm, addr, ptep);
}
#define flush_tlb_fix_spurious_fault(vma, address) do { } while (0)
diff --git a/arch/x86/include/asm/pgtable_32.h b/arch/x86/include/asm/pgtable_32.h
index bfab55675c16..e67c0620aec2 100644
--- a/arch/x86/include/asm/pgtable_32.h
+++ b/arch/x86/include/asm/pgtable_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGTABLE_32_H
#define _ASM_X86_PGTABLE_32_H
diff --git a/arch/x86/include/asm/pgtable_32_types.h b/arch/x86/include/asm/pgtable_32_types.h
index 9fb2f2bc8245..f2ca9b28fd68 100644
--- a/arch/x86/include/asm/pgtable_32_types.h
+++ b/arch/x86/include/asm/pgtable_32_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGTABLE_32_DEFS_H
#define _ASM_X86_PGTABLE_32_DEFS_H
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
index 972a4698c530..e9f05331e732 100644
--- a/arch/x86/include/asm/pgtable_64.h
+++ b/arch/x86/include/asm/pgtable_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGTABLE_64_H
#define _ASM_X86_PGTABLE_64_H
diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h
index 06470da156ba..6d5f45dcd4a1 100644
--- a/arch/x86/include/asm/pgtable_64_types.h
+++ b/arch/x86/include/asm/pgtable_64_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGTABLE_64_DEFS_H
#define _ASM_X86_PGTABLE_64_DEFS_H
diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h
index f1492473f10e..59df7b47a434 100644
--- a/arch/x86/include/asm/pgtable_types.h
+++ b/arch/x86/include/asm/pgtable_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PGTABLE_DEFS_H
#define _ASM_X86_PGTABLE_DEFS_H
diff --git a/arch/x86/include/asm/pkeys.h b/arch/x86/include/asm/pkeys.h
index b3b09b98896d..a0ba1ffda0df 100644
--- a/arch/x86/include/asm/pkeys.h
+++ b/arch/x86/include/asm/pkeys.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PKEYS_H
#define _ASM_X86_PKEYS_H
diff --git a/arch/x86/include/asm/pm-trace.h b/arch/x86/include/asm/pm-trace.h
index 7b7ac42c3661..bfa32aa428e5 100644
--- a/arch/x86/include/asm/pm-trace.h
+++ b/arch/x86/include/asm/pm-trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PM_TRACE_H
#define _ASM_X86_PM_TRACE_H
diff --git a/arch/x86/include/asm/posix_types.h b/arch/x86/include/asm/posix_types.h
index f565f6dd59d4..374336e217ff 100644
--- a/arch/x86/include/asm/posix_types.h
+++ b/arch/x86/include/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
# ifdef CONFIG_X86_32
# include <asm/posix_types_32.h>
# else
diff --git a/arch/x86/include/asm/preempt.h b/arch/x86/include/asm/preempt.h
index ec1f3c651150..7f2dbd91fc74 100644
--- a/arch/x86/include/asm/preempt.h
+++ b/arch/x86/include/asm/preempt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_PREEMPT_H
#define __ASM_PREEMPT_H
@@ -100,19 +101,14 @@ static __always_inline bool should_resched(int preempt_offset)
#ifdef CONFIG_PREEMPT
extern asmlinkage void ___preempt_schedule(void);
-# define __preempt_schedule() \
-({ \
- register void *__sp asm(_ASM_SP); \
- asm volatile ("call ___preempt_schedule" : "+r"(__sp)); \
-})
+# define __preempt_schedule() \
+ asm volatile ("call ___preempt_schedule" : ASM_CALL_CONSTRAINT)
extern asmlinkage void preempt_schedule(void);
extern asmlinkage void ___preempt_schedule_notrace(void);
-# define __preempt_schedule_notrace() \
-({ \
- register void *__sp asm(_ASM_SP); \
- asm volatile ("call ___preempt_schedule_notrace" : "+r"(__sp)); \
-})
+# define __preempt_schedule_notrace() \
+ asm volatile ("call ___preempt_schedule_notrace" : ASM_CALL_CONSTRAINT)
+
extern asmlinkage void preempt_schedule_notrace(void);
#endif
diff --git a/arch/x86/include/asm/probe_roms.h b/arch/x86/include/asm/probe_roms.h
index 4950a0b1d09c..1c7f3815bbd6 100644
--- a/arch/x86/include/asm/probe_roms.h
+++ b/arch/x86/include/asm/probe_roms.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PROBE_ROMS_H_
#define _PROBE_ROMS_H_
struct pci_dev;
diff --git a/arch/x86/include/asm/processor-cyrix.h b/arch/x86/include/asm/processor-cyrix.h
index 1198f2a0e42c..aaedd73ea2c6 100644
--- a/arch/x86/include/asm/processor-cyrix.h
+++ b/arch/x86/include/asm/processor-cyrix.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NSC/Cyrix CPU indexed register access. Must be inlined instead of
* macros to ensure correct access ordering
diff --git a/arch/x86/include/asm/processor-flags.h b/arch/x86/include/asm/processor-flags.h
index dc723b64acf0..43212a43ee69 100644
--- a/arch/x86/include/asm/processor-flags.h
+++ b/arch/x86/include/asm/processor-flags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PROCESSOR_FLAGS_H
#define _ASM_X86_PROCESSOR_FLAGS_H
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 3fa26a61eabc..bdac19ab2488 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PROCESSOR_H
#define _ASM_X86_PROCESSOR_H
@@ -677,8 +678,6 @@ static inline void sync_core(void)
* Like all of Linux's memory ordering operations, this is a
* compiler barrier as well.
*/
- register void *__sp asm(_ASM_SP);
-
#ifdef CONFIG_X86_32
asm volatile (
"pushfl\n\t"
@@ -686,7 +685,7 @@ static inline void sync_core(void)
"pushl $1f\n\t"
"iret\n\t"
"1:"
- : "+r" (__sp) : : "memory");
+ : ASM_CALL_CONSTRAINT : : "memory");
#else
unsigned int tmp;
@@ -703,7 +702,7 @@ static inline void sync_core(void)
"iretq\n\t"
UNWIND_HINT_RESTORE
"1:"
- : "=&r" (tmp), "+r" (__sp) : : "cc", "memory");
+ : "=&r" (tmp), ASM_CALL_CONSTRAINT : : "cc", "memory");
#endif
}
diff --git a/arch/x86/include/asm/proto.h b/arch/x86/include/asm/proto.h
index b408b1886195..6e81788a30c1 100644
--- a/arch/x86/include/asm/proto.h
+++ b/arch/x86/include/asm/proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PROTO_H
#define _ASM_X86_PROTO_H
diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h
index 91c04c8e67fa..c0e3c45cf6ab 100644
--- a/arch/x86/include/asm/ptrace.h
+++ b/arch/x86/include/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PTRACE_H
#define _ASM_X86_PTRACE_H
diff --git a/arch/x86/include/asm/purgatory.h b/arch/x86/include/asm/purgatory.h
index d7da2729903d..92c34e517da1 100644
--- a/arch/x86/include/asm/purgatory.h
+++ b/arch/x86/include/asm/purgatory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PURGATORY_H
#define _ASM_X86_PURGATORY_H
diff --git a/arch/x86/include/asm/pvclock-abi.h b/arch/x86/include/asm/pvclock-abi.h
index 67f08230103a..1436226efe3e 100644
--- a/arch/x86/include/asm/pvclock-abi.h
+++ b/arch/x86/include/asm/pvclock-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PVCLOCK_ABI_H
#define _ASM_X86_PVCLOCK_ABI_H
#ifndef __ASSEMBLY__
diff --git a/arch/x86/include/asm/pvclock.h b/arch/x86/include/asm/pvclock.h
index 448cfe1b48cf..3e4ed8fb5f91 100644
--- a/arch/x86/include/asm/pvclock.h
+++ b/arch/x86/include/asm/pvclock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PVCLOCK_H
#define _ASM_X86_PVCLOCK_H
diff --git a/arch/x86/include/asm/qrwlock.h b/arch/x86/include/asm/qrwlock.h
index c537cbb038a7..8656b5a6e8e7 100644
--- a/arch/x86/include/asm/qrwlock.h
+++ b/arch/x86/include/asm/qrwlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_QRWLOCK_H
#define _ASM_X86_QRWLOCK_H
diff --git a/arch/x86/include/asm/qspinlock.h b/arch/x86/include/asm/qspinlock.h
index 48a706f641f2..9982dd96f093 100644
--- a/arch/x86/include/asm/qspinlock.h
+++ b/arch/x86/include/asm/qspinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_QSPINLOCK_H
#define _ASM_X86_QSPINLOCK_H
diff --git a/arch/x86/include/asm/qspinlock_paravirt.h b/arch/x86/include/asm/qspinlock_paravirt.h
index 9d55f9b6e167..923307ea11c7 100644
--- a/arch/x86/include/asm/qspinlock_paravirt.h
+++ b/arch/x86/include/asm/qspinlock_paravirt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_QSPINLOCK_PARAVIRT_H
#define __ASM_QSPINLOCK_PARAVIRT_H
diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h
index 90d91520c13a..63b3393bd98e 100644
--- a/arch/x86/include/asm/realmode.h
+++ b/arch/x86/include/asm/realmode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARCH_X86_REALMODE_H
#define _ARCH_X86_REALMODE_H
diff --git a/arch/x86/include/asm/reboot.h b/arch/x86/include/asm/reboot.h
index fc62ba8dce93..a671a1145906 100644
--- a/arch/x86/include/asm/reboot.h
+++ b/arch/x86/include/asm/reboot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_REBOOT_H
#define _ASM_X86_REBOOT_H
diff --git a/arch/x86/include/asm/reboot_fixups.h b/arch/x86/include/asm/reboot_fixups.h
index 765debe4c54c..96515658ce12 100644
--- a/arch/x86/include/asm/reboot_fixups.h
+++ b/arch/x86/include/asm/reboot_fixups.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_REBOOT_FIXUPS_H
#define _ASM_X86_REBOOT_FIXUPS_H
diff --git a/arch/x86/include/asm/rio.h b/arch/x86/include/asm/rio.h
index 97bab6388a92..0a21986d2238 100644
--- a/arch/x86/include/asm/rio.h
+++ b/arch/x86/include/asm/rio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Derived from include/asm-x86/mach-summit/mach_mpparse.h
* and include/asm-x86/mach-default/bios_ebda.h
diff --git a/arch/x86/include/asm/rmwcc.h b/arch/x86/include/asm/rmwcc.h
index 045f99211a99..d8f3a6ae9f6c 100644
--- a/arch/x86/include/asm/rmwcc.h
+++ b/arch/x86/include/asm/rmwcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_RMWcc
#define _ASM_X86_RMWcc
diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h
index a34e0d4b957d..4d38d85a16ad 100644
--- a/arch/x86/include/asm/rwsem.h
+++ b/arch/x86/include/asm/rwsem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* rwsem.h: R/W semaphores implemented using XADD/CMPXCHG for i486+
*
* Written by David Howells (dhowells@redhat.com).
@@ -103,7 +104,6 @@ static inline bool __down_read_trylock(struct rw_semaphore *sem)
({ \
long tmp; \
struct rw_semaphore* ret; \
- register void *__sp asm(_ASM_SP); \
\
asm volatile("# beginning down_write\n\t" \
LOCK_PREFIX " xadd %1,(%4)\n\t" \
@@ -114,7 +114,8 @@ static inline bool __down_read_trylock(struct rw_semaphore *sem)
" call " slow_path "\n" \
"1:\n" \
"# ending down_write" \
- : "+m" (sem->count), "=d" (tmp), "=a" (ret), "+r" (__sp) \
+ : "+m" (sem->count), "=d" (tmp), \
+ "=a" (ret), ASM_CALL_CONSTRAINT \
: "a" (sem), "1" (RWSEM_ACTIVE_WRITE_BIAS) \
: "memory", "cc"); \
ret; \
diff --git a/arch/x86/include/asm/seccomp.h b/arch/x86/include/asm/seccomp.h
index 0c8c7c8861b4..2bd1338de236 100644
--- a/arch/x86/include/asm/seccomp.h
+++ b/arch/x86/include/asm/seccomp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SECCOMP_H
#define _ASM_X86_SECCOMP_H
diff --git a/arch/x86/include/asm/sections.h b/arch/x86/include/asm/sections.h
index 2f75f30cb2f6..d6baf23782bc 100644
--- a/arch/x86/include/asm/sections.h
+++ b/arch/x86/include/asm/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SECTIONS_H
#define _ASM_X86_SECTIONS_H
diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h
index 066aaf813141..b20f9d623f9c 100644
--- a/arch/x86/include/asm/segment.h
+++ b/arch/x86/include/asm/segment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SEGMENT_H
#define _ASM_X86_SEGMENT_H
diff --git a/arch/x86/include/asm/serial.h b/arch/x86/include/asm/serial.h
index bb658211edad..ece8299d2695 100644
--- a/arch/x86/include/asm/serial.h
+++ b/arch/x86/include/asm/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SERIAL_H
#define _ASM_X86_SERIAL_H
diff --git a/arch/x86/include/asm/set_memory.h b/arch/x86/include/asm/set_memory.h
index cd71273ec49d..bd090367236c 100644
--- a/arch/x86/include/asm/set_memory.h
+++ b/arch/x86/include/asm/set_memory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SET_MEMORY_H
#define _ASM_X86_SET_MEMORY_H
diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h
index a65cf544686a..ae13bc974416 100644
--- a/arch/x86/include/asm/setup.h
+++ b/arch/x86/include/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SETUP_H
#define _ASM_X86_SETUP_H
diff --git a/arch/x86/include/asm/shmparam.h b/arch/x86/include/asm/shmparam.h
index 0880cf0917b9..c4041819c3e5 100644
--- a/arch/x86/include/asm/shmparam.h
+++ b/arch/x86/include/asm/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SHMPARAM_H
#define _ASM_X86_SHMPARAM_H
diff --git a/arch/x86/include/asm/sigcontext.h b/arch/x86/include/asm/sigcontext.h
index e6cd2c489dbb..140d890c2c98 100644
--- a/arch/x86/include/asm/sigcontext.h
+++ b/arch/x86/include/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SIGCONTEXT_H
#define _ASM_X86_SIGCONTEXT_H
diff --git a/arch/x86/include/asm/sigframe.h b/arch/x86/include/asm/sigframe.h
index 34edd1650bae..f176114c04d4 100644
--- a/arch/x86/include/asm/sigframe.h
+++ b/arch/x86/include/asm/sigframe.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SIGFRAME_H
#define _ASM_X86_SIGFRAME_H
diff --git a/arch/x86/include/asm/sighandling.h b/arch/x86/include/asm/sighandling.h
index 452c88b8ad06..bd26834724e5 100644
--- a/arch/x86/include/asm/sighandling.h
+++ b/arch/x86/include/asm/sighandling.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SIGHANDLING_H
#define _ASM_X86_SIGHANDLING_H
diff --git a/arch/x86/include/asm/signal.h b/arch/x86/include/asm/signal.h
index 8af22be0fe61..5f9012ff52ed 100644
--- a/arch/x86/include/asm/signal.h
+++ b/arch/x86/include/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SIGNAL_H
#define _ASM_X86_SIGNAL_H
diff --git a/arch/x86/include/asm/simd.h b/arch/x86/include/asm/simd.h
index 6c8a7ed13365..a341c878e977 100644
--- a/arch/x86/include/asm/simd.h
+++ b/arch/x86/include/asm/simd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/fpu/api.h>
diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h
index 47103eca3775..461f53d27708 100644
--- a/arch/x86/include/asm/smp.h
+++ b/arch/x86/include/asm/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SMP_H
#define _ASM_X86_SMP_H
#ifndef __ASSEMBLY__
diff --git a/arch/x86/include/asm/sparsemem.h b/arch/x86/include/asm/sparsemem.h
index 1f5bee2c202f..4fc1e9d3c43e 100644
--- a/arch/x86/include/asm/sparsemem.h
+++ b/arch/x86/include/asm/sparsemem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SPARSEMEM_H
#define _ASM_X86_SPARSEMEM_H
diff --git a/arch/x86/include/asm/special_insns.h b/arch/x86/include/asm/special_insns.h
index 9efaabf5b54b..317fc59b512c 100644
--- a/arch/x86/include/asm/special_insns.h
+++ b/arch/x86/include/asm/special_insns.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SPECIAL_INSNS_H
#define _ASM_X86_SPECIAL_INSNS_H
@@ -135,6 +136,11 @@ static inline void native_wbinvd(void)
extern asmlinkage void native_load_gs_index(unsigned);
+static inline unsigned long __read_cr4(void)
+{
+ return native_read_cr4();
+}
+
#ifdef CONFIG_PARAVIRT
#include <asm/paravirt.h>
#else
@@ -173,11 +179,6 @@ static inline void write_cr3(unsigned long x)
native_write_cr3(x);
}
-static inline unsigned long __read_cr4(void)
-{
- return native_read_cr4();
-}
-
static inline void __write_cr4(unsigned long x)
{
native_write_cr4(x);
diff --git a/arch/x86/include/asm/spinlock.h b/arch/x86/include/asm/spinlock.h
index 6d391909e864..b34625796eb2 100644
--- a/arch/x86/include/asm/spinlock.h
+++ b/arch/x86/include/asm/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SPINLOCK_H
#define _ASM_X86_SPINLOCK_H
diff --git a/arch/x86/include/asm/spinlock_types.h b/arch/x86/include/asm/spinlock_types.h
index 25311ebb446c..bf3e34b25afc 100644
--- a/arch/x86/include/asm/spinlock_types.h
+++ b/arch/x86/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SPINLOCK_TYPES_H
#define _ASM_X86_SPINLOCK_TYPES_H
diff --git a/arch/x86/include/asm/sta2x11.h b/arch/x86/include/asm/sta2x11.h
index e9d32df89ccc..e0975e9c4f47 100644
--- a/arch/x86/include/asm/sta2x11.h
+++ b/arch/x86/include/asm/sta2x11.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Header file for STMicroelectronics ConneXt (STA2X11) IOHub
*/
diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h
index 8abedf1d650e..371b3a4af000 100644
--- a/arch/x86/include/asm/stackprotector.h
+++ b/arch/x86/include/asm/stackprotector.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* GCC stack protector support.
*
diff --git a/arch/x86/include/asm/stacktrace.h b/arch/x86/include/asm/stacktrace.h
index 2e41c50ddf47..8da111b3c342 100644
--- a/arch/x86/include/asm/stacktrace.h
+++ b/arch/x86/include/asm/stacktrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
diff --git a/arch/x86/include/asm/string.h b/arch/x86/include/asm/string.h
index 09224d7a5862..c3c2c1914d65 100644
--- a/arch/x86/include/asm/string.h
+++ b/arch/x86/include/asm/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_X86_32
# include <asm/string_32.h>
#else
diff --git a/arch/x86/include/asm/string_32.h b/arch/x86/include/asm/string_32.h
index e371e7229042..076502241eae 100644
--- a/arch/x86/include/asm/string_32.h
+++ b/arch/x86/include/asm/string_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_STRING_32_H
#define _ASM_X86_STRING_32_H
diff --git a/arch/x86/include/asm/string_64.h b/arch/x86/include/asm/string_64.h
index f372a70a523f..0b1b4445f4c5 100644
--- a/arch/x86/include/asm/string_64.h
+++ b/arch/x86/include/asm/string_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_STRING_64_H
#define _ASM_X86_STRING_64_H
diff --git a/arch/x86/include/asm/suspend.h b/arch/x86/include/asm/suspend.h
index 2fab6c2c3575..ecffe81ff65c 100644
--- a/arch/x86/include/asm/suspend.h
+++ b/arch/x86/include/asm/suspend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_X86_32
# include <asm/suspend_32.h>
#else
diff --git a/arch/x86/include/asm/suspend_32.h b/arch/x86/include/asm/suspend_32.h
index 8e9dbe7b73a1..982c325dad33 100644
--- a/arch/x86/include/asm/suspend_32.h
+++ b/arch/x86/include/asm/suspend_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2001-2002 Pavel Machek <pavel@suse.cz>
* Based on code
diff --git a/arch/x86/include/asm/suspend_64.h b/arch/x86/include/asm/suspend_64.h
index 2bd96b4df140..7306e911faee 100644
--- a/arch/x86/include/asm/suspend_64.h
+++ b/arch/x86/include/asm/suspend_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2001-2003 Pavel Machek <pavel@suse.cz>
* Based on code
diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h
index 14835dd205a5..78dd9df88157 100644
--- a/arch/x86/include/asm/svm.h
+++ b/arch/x86/include/asm/svm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SVM_H
#define __SVM_H
diff --git a/arch/x86/include/asm/swiotlb.h b/arch/x86/include/asm/swiotlb.h
index d2f69b9ff732..bdf9aed40403 100644
--- a/arch/x86/include/asm/swiotlb.h
+++ b/arch/x86/include/asm/swiotlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SWIOTLB_H
#define _ASM_X86_SWIOTLB_H
diff --git a/arch/x86/include/asm/switch_to.h b/arch/x86/include/asm/switch_to.h
index fcc5cd387fd1..899084b70412 100644
--- a/arch/x86/include/asm/switch_to.h
+++ b/arch/x86/include/asm/switch_to.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SWITCH_TO_H
#define _ASM_X86_SWITCH_TO_H
diff --git a/arch/x86/include/asm/sync_bitops.h b/arch/x86/include/asm/sync_bitops.h
index cbf8847d02a0..2fe745356fb1 100644
--- a/arch/x86/include/asm/sync_bitops.h
+++ b/arch/x86/include/asm/sync_bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SYNC_BITOPS_H
#define _ASM_X86_SYNC_BITOPS_H
diff --git a/arch/x86/include/asm/text-patching.h b/arch/x86/include/asm/text-patching.h
index 90395063383c..2ecd34e2d46c 100644
--- a/arch/x86/include/asm/text-patching.h
+++ b/arch/x86/include/asm/text-patching.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_TEXT_PATCHING_H
#define _ASM_X86_TEXT_PATCHING_H
diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
index 5161da1a0fa0..70f425947dc5 100644
--- a/arch/x86/include/asm/thread_info.h
+++ b/arch/x86/include/asm/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* thread_info.h: low-level thread information
*
* Copyright (C) 2002 David Howells (dhowells@redhat.com)
@@ -158,17 +159,6 @@ struct thread_info {
*/
#ifndef __ASSEMBLY__
-static inline unsigned long current_stack_pointer(void)
-{
- unsigned long sp;
-#ifdef CONFIG_X86_64
- asm("mov %%rsp,%0" : "=g" (sp));
-#else
- asm("mov %%esp,%0" : "=g" (sp));
-#endif
- return sp;
-}
-
/*
* Walks up the stack frames to make sure that the specified object is
* entirely contained by a single stack frame.
diff --git a/arch/x86/include/asm/time.h b/arch/x86/include/asm/time.h
index 92b8aec06970..cef818b16045 100644
--- a/arch/x86/include/asm/time.h
+++ b/arch/x86/include/asm/time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_TIME_H
#define _ASM_X86_TIME_H
diff --git a/arch/x86/include/asm/timer.h b/arch/x86/include/asm/timer.h
index 2016962103df..47457ab975fd 100644
--- a/arch/x86/include/asm/timer.h
+++ b/arch/x86/include/asm/timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_TIMER_H
#define _ASM_X86_TIMER_H
#include <linux/pm.h>
diff --git a/arch/x86/include/asm/timex.h b/arch/x86/include/asm/timex.h
index 1375cfc93960..a4a8b1b16c0c 100644
--- a/arch/x86/include/asm/timex.h
+++ b/arch/x86/include/asm/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_TIMEX_H
#define _ASM_X86_TIMEX_H
diff --git a/arch/x86/include/asm/tlb.h b/arch/x86/include/asm/tlb.h
index 79a4ca6a9606..cb0a1f470980 100644
--- a/arch/x86/include/asm/tlb.h
+++ b/arch/x86/include/asm/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_TLB_H
#define _ASM_X86_TLB_H
diff --git a/arch/x86/include/asm/tlbbatch.h b/arch/x86/include/asm/tlbbatch.h
index f4a6ff352a0e..1ad56eb3e8a8 100644
--- a/arch/x86/include/asm/tlbbatch.h
+++ b/arch/x86/include/asm/tlbbatch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARCH_X86_TLBBATCH_H
#define _ARCH_X86_TLBBATCH_H
diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
index 4893abf7f74f..509046cfa5ce 100644
--- a/arch/x86/include/asm/tlbflush.h
+++ b/arch/x86/include/asm/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_TLBFLUSH_H
#define _ASM_X86_TLBFLUSH_H
@@ -82,6 +83,22 @@ static inline u64 inc_mm_tlb_gen(struct mm_struct *mm)
#define __flush_tlb_single(addr) __native_flush_tlb_single(addr)
#endif
+static inline bool tlb_defer_switch_to_init_mm(void)
+{
+ /*
+ * If we have PCID, then switching to init_mm is reasonably
+ * fast. If we don't have PCID, then switching to init_mm is
+ * quite slow, so we try to defer it in the hopes that we can
+ * avoid it entirely. The latter approach runs the risk of
+ * receiving otherwise unnecessary IPIs.
+ *
+ * This choice is just a heuristic. The tlb code can handle this
+ * function returning true or false regardless of whether we have
+ * PCID.
+ */
+ return !static_cpu_has(X86_FEATURE_PCID);
+}
+
/*
* 6 because 6 should be plenty and struct tlb_state will fit in
* two cache lines.
@@ -105,6 +122,23 @@ struct tlb_state {
u16 next_asid;
/*
+ * We can be in one of several states:
+ *
+ * - Actively using an mm. Our CPU's bit will be set in
+ * mm_cpumask(loaded_mm) and is_lazy == false;
+ *
+ * - Not using a real mm. loaded_mm == &init_mm. Our CPU's bit
+ * will not be set in mm_cpumask(&init_mm) and is_lazy == false.
+ *
+ * - Lazily using a real mm. loaded_mm != &init_mm, our bit
+ * is set in mm_cpumask(loaded_mm), but is_lazy == true.
+ * We're heuristically guessing that the CR3 load we
+ * skipped more than makes up for the overhead added by
+ * lazy mode.
+ */
+ bool is_lazy;
+
+ /*
* Access to this CR4 shadow and to H/W CR4 is protected by
* disabling interrupts when modifying either one.
*/
diff --git a/arch/x86/include/asm/trace/exceptions.h b/arch/x86/include/asm/trace/exceptions.h
index 5665bf205b8d..69615e387973 100644
--- a/arch/x86/include/asm/trace/exceptions.h
+++ b/arch/x86/include/asm/trace/exceptions.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM exceptions
diff --git a/arch/x86/include/asm/trace/fpu.h b/arch/x86/include/asm/trace/fpu.h
index 342e59789fcd..fa60398bbc3a 100644
--- a/arch/x86/include/asm/trace/fpu.h
+++ b/arch/x86/include/asm/trace/fpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM x86_fpu
@@ -12,25 +13,22 @@ DECLARE_EVENT_CLASS(x86_fpu,
TP_STRUCT__entry(
__field(struct fpu *, fpu)
- __field(bool, fpregs_active)
- __field(bool, fpstate_active)
+ __field(bool, initialized)
__field(u64, xfeatures)
__field(u64, xcomp_bv)
),
TP_fast_assign(
__entry->fpu = fpu;
- __entry->fpregs_active = fpu->fpregs_active;
- __entry->fpstate_active = fpu->fpstate_active;
+ __entry->initialized = fpu->initialized;
if (boot_cpu_has(X86_FEATURE_OSXSAVE)) {
__entry->xfeatures = fpu->state.xsave.header.xfeatures;
__entry->xcomp_bv = fpu->state.xsave.header.xcomp_bv;
}
),
- TP_printk("x86/fpu: %p fpregs_active: %d fpstate_active: %d xfeatures: %llx xcomp_bv: %llx",
+ TP_printk("x86/fpu: %p initialized: %d xfeatures: %llx xcomp_bv: %llx",
__entry->fpu,
- __entry->fpregs_active,
- __entry->fpstate_active,
+ __entry->initialized,
__entry->xfeatures,
__entry->xcomp_bv
)
diff --git a/arch/x86/include/asm/trace/irq_vectors.h b/arch/x86/include/asm/trace/irq_vectors.h
index 1599d394c8c1..8eb139ed1a03 100644
--- a/arch/x86/include/asm/trace/irq_vectors.h
+++ b/arch/x86/include/asm/trace/irq_vectors.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM irq_vectors
diff --git a/arch/x86/include/asm/trace/mpx.h b/arch/x86/include/asm/trace/mpx.h
index 0f492fc50bce..7bd92db09e8d 100644
--- a/arch/x86/include/asm/trace/mpx.h
+++ b/arch/x86/include/asm/trace/mpx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM mpx
diff --git a/arch/x86/include/asm/trace_clock.h b/arch/x86/include/asm/trace_clock.h
index beab86cc282d..7061a5650969 100644
--- a/arch/x86/include/asm/trace_clock.h
+++ b/arch/x86/include/asm/trace_clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_TRACE_CLOCK_H
#define _ASM_X86_TRACE_CLOCK_H
diff --git a/arch/x86/include/asm/traps.h b/arch/x86/include/asm/traps.h
index 5545f6459bf5..b0cced97a6ce 100644
--- a/arch/x86/include/asm/traps.h
+++ b/arch/x86/include/asm/traps.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_TRAPS_H
#define _ASM_X86_TRAPS_H
diff --git a/arch/x86/include/asm/tsc.h b/arch/x86/include/asm/tsc.h
index f5e6f1c417df..8da0efb13544 100644
--- a/arch/x86/include/asm/tsc.h
+++ b/arch/x86/include/asm/tsc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* x86 TSC related functions
*/
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
index 184eb9894dae..574dff4d2913 100644
--- a/arch/x86/include/asm/uaccess.h
+++ b/arch/x86/include/asm/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_UACCESS_H
#define _ASM_X86_UACCESS_H
/*
@@ -166,11 +167,11 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
({ \
int __ret_gu; \
register __inttype(*(ptr)) __val_gu asm("%"_ASM_DX); \
- register void *__sp asm(_ASM_SP); \
__chk_user_ptr(ptr); \
might_fault(); \
asm volatile("call __get_user_%P4" \
- : "=a" (__ret_gu), "=r" (__val_gu), "+r" (__sp) \
+ : "=a" (__ret_gu), "=r" (__val_gu), \
+ ASM_CALL_CONSTRAINT \
: "0" (ptr), "i" (sizeof(*(ptr)))); \
(x) = (__force __typeof__(*(ptr))) __val_gu; \
__builtin_expect(__ret_gu, 0); \
@@ -337,7 +338,7 @@ do { \
_ASM_EXTABLE(1b, 4b) \
_ASM_EXTABLE(2b, 4b) \
: "=r" (retval), "=&A"(x) \
- : "m" (__m(__ptr)), "m" __m(((u32 *)(__ptr)) + 1), \
+ : "m" (__m(__ptr)), "m" __m(((u32 __user *)(__ptr)) + 1), \
"i" (errret), "0" (retval)); \
})
diff --git a/arch/x86/include/asm/uaccess_32.h b/arch/x86/include/asm/uaccess_32.h
index aeda9bb8af50..72950401b223 100644
--- a/arch/x86/include/asm/uaccess_32.h
+++ b/arch/x86/include/asm/uaccess_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_UACCESS_32_H
#define _ASM_X86_UACCESS_32_H
diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h
index b16f6a1d8b26..f07ef3c575db 100644
--- a/arch/x86/include/asm/uaccess_64.h
+++ b/arch/x86/include/asm/uaccess_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_UACCESS_64_H
#define _ASM_X86_UACCESS_64_H
diff --git a/arch/x86/include/asm/unaligned.h b/arch/x86/include/asm/unaligned.h
index a7bd416b4763..9c754a7447aa 100644
--- a/arch/x86/include/asm/unaligned.h
+++ b/arch/x86/include/asm/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_UNALIGNED_H
#define _ASM_X86_UNALIGNED_H
diff --git a/arch/x86/include/asm/unistd.h b/arch/x86/include/asm/unistd.h
index 1ba1536f627e..51c4eee00732 100644
--- a/arch/x86/include/asm/unistd.h
+++ b/arch/x86/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_UNISTD_H
#define _ASM_X86_UNISTD_H 1
diff --git a/arch/x86/include/asm/unwind.h b/arch/x86/include/asm/unwind.h
index e9f793e2df7a..87adc0d38c4a 100644
--- a/arch/x86/include/asm/unwind.h
+++ b/arch/x86/include/asm/unwind.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_UNWIND_H
#define _ASM_X86_UNWIND_H
diff --git a/arch/x86/include/asm/user.h b/arch/x86/include/asm/user.h
index 59a54e869f15..413c91746b27 100644
--- a/arch/x86/include/asm/user.h
+++ b/arch/x86/include/asm/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_USER_H
#define _ASM_X86_USER_H
diff --git a/arch/x86/include/asm/user32.h b/arch/x86/include/asm/user32.h
index 14cbb73ebcba..fa577312f63a 100644
--- a/arch/x86/include/asm/user32.h
+++ b/arch/x86/include/asm/user32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_USER32_H
#define _ASM_X86_USER32_H
diff --git a/arch/x86/include/asm/user_32.h b/arch/x86/include/asm/user_32.h
index bebfd8644016..d72c3d66e94f 100644
--- a/arch/x86/include/asm/user_32.h
+++ b/arch/x86/include/asm/user_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_USER_32_H
#define _ASM_X86_USER_32_H
diff --git a/arch/x86/include/asm/user_64.h b/arch/x86/include/asm/user_64.h
index faf2cd3e0d76..db909923611c 100644
--- a/arch/x86/include/asm/user_64.h
+++ b/arch/x86/include/asm/user_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_USER_64_H
#define _ASM_X86_USER_64_H
diff --git a/arch/x86/include/asm/uv/uv.h b/arch/x86/include/asm/uv/uv.h
index b5a32231abd8..a80c0673798f 100644
--- a/arch/x86/include/asm/uv/uv.h
+++ b/arch/x86/include/asm/uv/uv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_UV_UV_H
#define _ASM_X86_UV_UV_H
diff --git a/arch/x86/include/asm/vdso.h b/arch/x86/include/asm/vdso.h
index bccdf4938ddf..27566e57e87d 100644
--- a/arch/x86/include/asm/vdso.h
+++ b/arch/x86/include/asm/vdso.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_VDSO_H
#define _ASM_X86_VDSO_H
diff --git a/arch/x86/include/asm/vga.h b/arch/x86/include/asm/vga.h
index 9f42beefc67a..46f9b2deab4d 100644
--- a/arch/x86/include/asm/vga.h
+++ b/arch/x86/include/asm/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Access to VGA videoram
*
diff --git a/arch/x86/include/asm/vgtod.h b/arch/x86/include/asm/vgtod.h
index 022e59714562..52250681f68c 100644
--- a/arch/x86/include/asm/vgtod.h
+++ b/arch/x86/include/asm/vgtod.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_VGTOD_H
#define _ASM_X86_VGTOD_H
diff --git a/arch/x86/include/asm/vm86.h b/arch/x86/include/asm/vm86.h
index 1e491f3af317..26efbec94448 100644
--- a/arch/x86/include/asm/vm86.h
+++ b/arch/x86/include/asm/vm86.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_VM86_H
#define _ASM_X86_VM86_H
diff --git a/arch/x86/include/asm/vsyscall.h b/arch/x86/include/asm/vsyscall.h
index 6ba66ee79710..d9a7c659009c 100644
--- a/arch/x86/include/asm/vsyscall.h
+++ b/arch/x86/include/asm/vsyscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_VSYSCALL_H
#define _ASM_X86_VSYSCALL_H
diff --git a/arch/x86/include/asm/word-at-a-time.h b/arch/x86/include/asm/word-at-a-time.h
index 5b238981542a..06006b0351f3 100644
--- a/arch/x86/include/asm/word-at-a-time.h
+++ b/arch/x86/include/asm/word-at-a-time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_WORD_AT_A_TIME_H
#define _ASM_WORD_AT_A_TIME_H
diff --git a/arch/x86/include/asm/x2apic.h b/arch/x86/include/asm/x2apic.h
index f90f0a587c66..78ccf28d17db 100644
--- a/arch/x86/include/asm/x2apic.h
+++ b/arch/x86/include/asm/x2apic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common bits for X2APIC cluster/physical modes.
*/
diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
index 7ba7e90a9ad6..8a1ebf9540dd 100644
--- a/arch/x86/include/asm/x86_init.h
+++ b/arch/x86/include/asm/x86_init.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_PLATFORM_H
#define _ASM_X86_PLATFORM_H
diff --git a/arch/x86/include/asm/xen/events.h b/arch/x86/include/asm/xen/events.h
index e6911caf5bbf..d383140e1dc8 100644
--- a/arch/x86/include/asm/xen/events.h
+++ b/arch/x86/include/asm/xen/events.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_XEN_EVENTS_H
#define _ASM_X86_XEN_EVENTS_H
diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h
index 9606688caa4b..7cb282e9e587 100644
--- a/arch/x86/include/asm/xen/hypercall.h
+++ b/arch/x86/include/asm/xen/hypercall.h
@@ -113,10 +113,9 @@ extern struct { char _entry[32]; } hypercall_page[];
register unsigned long __arg2 asm(__HYPERCALL_ARG2REG) = __arg2; \
register unsigned long __arg3 asm(__HYPERCALL_ARG3REG) = __arg3; \
register unsigned long __arg4 asm(__HYPERCALL_ARG4REG) = __arg4; \
- register unsigned long __arg5 asm(__HYPERCALL_ARG5REG) = __arg5; \
- register void *__sp asm(_ASM_SP);
+ register unsigned long __arg5 asm(__HYPERCALL_ARG5REG) = __arg5;
-#define __HYPERCALL_0PARAM "=r" (__res), "+r" (__sp)
+#define __HYPERCALL_0PARAM "=r" (__res), ASM_CALL_CONSTRAINT
#define __HYPERCALL_1PARAM __HYPERCALL_0PARAM, "+r" (__arg1)
#define __HYPERCALL_2PARAM __HYPERCALL_1PARAM, "+r" (__arg2)
#define __HYPERCALL_3PARAM __HYPERCALL_2PARAM, "+r" (__arg3)
@@ -552,13 +551,13 @@ static inline void
MULTI_update_descriptor(struct multicall_entry *mcl, u64 maddr,
struct desc_struct desc)
{
- u32 *p = (u32 *) &desc;
-
mcl->op = __HYPERVISOR_update_descriptor;
if (sizeof(maddr) == sizeof(long)) {
mcl->args[0] = maddr;
mcl->args[1] = *(unsigned long *)&desc;
} else {
+ u32 *p = (u32 *)&desc;
+
mcl->args[0] = maddr;
mcl->args[1] = maddr >> 32;
mcl->args[2] = *p++;
diff --git a/arch/x86/include/asm/xen/interface_32.h b/arch/x86/include/asm/xen/interface_32.h
index 8413688b2571..dc40578abded 100644
--- a/arch/x86/include/asm/xen/interface_32.h
+++ b/arch/x86/include/asm/xen/interface_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/******************************************************************************
* arch-x86_32.h
*
diff --git a/arch/x86/include/asm/xen/interface_64.h b/arch/x86/include/asm/xen/interface_64.h
index 839a4811cf98..c599ec269a25 100644
--- a/arch/x86/include/asm/xen/interface_64.h
+++ b/arch/x86/include/asm/xen/interface_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_XEN_INTERFACE_64_H
#define _ASM_X86_XEN_INTERFACE_64_H
diff --git a/arch/x86/include/asm/xen/page-coherent.h b/arch/x86/include/asm/xen/page-coherent.h
index f02f025ff988..116777e7f387 100644
--- a/arch/x86/include/asm/xen/page-coherent.h
+++ b/arch/x86/include/asm/xen/page-coherent.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_XEN_PAGE_COHERENT_H
#define _ASM_X86_XEN_PAGE_COHERENT_H
diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h
index 07b6531813c4..c6b84245e5ab 100644
--- a/arch/x86/include/asm/xen/page.h
+++ b/arch/x86/include/asm/xen/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_XEN_PAGE_H
#define _ASM_X86_XEN_PAGE_H
diff --git a/arch/x86/include/asm/xen/pci.h b/arch/x86/include/asm/xen/pci.h
index f320ee32d5a1..3506d8c598c1 100644
--- a/arch/x86/include/asm/xen/pci.h
+++ b/arch/x86/include/asm/xen/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_XEN_PCI_H
#define _ASM_X86_XEN_PCI_H
diff --git a/arch/x86/include/asm/xen/swiotlb-xen.h b/arch/x86/include/asm/xen/swiotlb-xen.h
index ee52fcac6f72..6b56d0d45d15 100644
--- a/arch/x86/include/asm/xen/swiotlb-xen.h
+++ b/arch/x86/include/asm/xen/swiotlb-xen.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SWIOTLB_XEN_H
#define _ASM_X86_SWIOTLB_XEN_H
diff --git a/arch/x86/include/asm/xen/trace_types.h b/arch/x86/include/asm/xen/trace_types.h
index 21e1874c0a0b..2aad0abd68e2 100644
--- a/arch/x86/include/asm/xen/trace_types.h
+++ b/arch/x86/include/asm/xen/trace_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_XEN_TRACE_TYPES_H
#define _ASM_XEN_TRACE_TYPES_H
diff --git a/arch/x86/include/asm/xor_64.h b/arch/x86/include/asm/xor_64.h
index 546f1e3b87cc..0307e4ec5044 100644
--- a/arch/x86/include/asm/xor_64.h
+++ b/arch/x86/include/asm/xor_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_XOR_64_H
#define _ASM_X86_XOR_64_H
diff --git a/arch/x86/include/uapi/asm/a.out.h b/arch/x86/include/uapi/asm/a.out.h
index 4684f97a5bbd..094c49d8ea8e 100644
--- a/arch/x86/include/uapi/asm/a.out.h
+++ b/arch/x86/include/uapi/asm/a.out.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_A_OUT_H
#define _ASM_X86_A_OUT_H
diff --git a/arch/x86/include/uapi/asm/auxvec.h b/arch/x86/include/uapi/asm/auxvec.h
index 77203ac352de..580e3c567046 100644
--- a/arch/x86/include/uapi/asm/auxvec.h
+++ b/arch/x86/include/uapi/asm/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_AUXVEC_H
#define _ASM_X86_AUXVEC_H
/*
diff --git a/arch/x86/include/uapi/asm/bitsperlong.h b/arch/x86/include/uapi/asm/bitsperlong.h
index 217909b4d6f5..5d72c8458838 100644
--- a/arch/x86/include/uapi/asm/bitsperlong.h
+++ b/arch/x86/include/uapi/asm/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_X86_BITSPERLONG_H
#define __ASM_X86_BITSPERLONG_H
diff --git a/arch/x86/include/uapi/asm/boot.h b/arch/x86/include/uapi/asm/boot.h
index 94292c4c8122..88ffc5aee087 100644
--- a/arch/x86/include/uapi/asm/boot.h
+++ b/arch/x86/include/uapi/asm/boot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_BOOT_H
#define _UAPI_ASM_X86_BOOT_H
diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h
index 66b8f93333d1..afdd5ae0fcc4 100644
--- a/arch/x86/include/uapi/asm/bootparam.h
+++ b/arch/x86/include/uapi/asm/bootparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_BOOTPARAM_H
#define _ASM_X86_BOOTPARAM_H
diff --git a/arch/x86/include/uapi/asm/byteorder.h b/arch/x86/include/uapi/asm/byteorder.h
index b13a7a88f3eb..484e3cfd7ef2 100644
--- a/arch/x86/include/uapi/asm/byteorder.h
+++ b/arch/x86/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_BYTEORDER_H
#define _ASM_X86_BYTEORDER_H
diff --git a/arch/x86/include/uapi/asm/debugreg.h b/arch/x86/include/uapi/asm/debugreg.h
index 3c0874dd9861..d95d080b30e3 100644
--- a/arch/x86/include/uapi/asm/debugreg.h
+++ b/arch/x86/include/uapi/asm/debugreg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_DEBUGREG_H
#define _UAPI_ASM_X86_DEBUGREG_H
diff --git a/arch/x86/include/uapi/asm/e820.h b/arch/x86/include/uapi/asm/e820.h
index 9dafe59cf6e2..2f491efe3a12 100644
--- a/arch/x86/include/uapi/asm/e820.h
+++ b/arch/x86/include/uapi/asm/e820.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_E820_H
#define _UAPI_ASM_X86_E820_H
#define E820MAP 0x2d0 /* our map */
diff --git a/arch/x86/include/uapi/asm/hw_breakpoint.h b/arch/x86/include/uapi/asm/hw_breakpoint.h
index 79a9626b5500..6789884c7701 100644
--- a/arch/x86/include/uapi/asm/hw_breakpoint.h
+++ b/arch/x86/include/uapi/asm/hw_breakpoint.h
@@ -1 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* */
diff --git a/arch/x86/include/uapi/asm/hwcap2.h b/arch/x86/include/uapi/asm/hwcap2.h
index 0bd2be5c7617..6ebaae90e207 100644
--- a/arch/x86/include/uapi/asm/hwcap2.h
+++ b/arch/x86/include/uapi/asm/hwcap2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_HWCAP2_H
#define _ASM_X86_HWCAP2_H
diff --git a/arch/x86/include/uapi/asm/hyperv.h b/arch/x86/include/uapi/asm/hyperv.h
index 7032f4d8dff3..1a5bfead93b4 100644
--- a/arch/x86/include/uapi/asm/hyperv.h
+++ b/arch/x86/include/uapi/asm/hyperv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_HYPERV_H
#define _ASM_X86_HYPERV_H
@@ -153,12 +154,6 @@
#define HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED (1 << 11)
/*
- * HV_VP_SET available
- */
-#define HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED (1 << 11)
-
-
-/*
* Crash notification flag.
*/
#define HV_CRASH_CTL_CRASH_NOTIFY (1ULL << 63)
diff --git a/arch/x86/include/uapi/asm/ist.h b/arch/x86/include/uapi/asm/ist.h
index bad9f5ea4070..eac5b207939d 100644
--- a/arch/x86/include/uapi/asm/ist.h
+++ b/arch/x86/include/uapi/asm/ist.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Include file for the interface to IST BIOS
* Copyright 2002 Andy Grover <andrew.grover@intel.com>
diff --git a/arch/x86/include/uapi/asm/kvm.h b/arch/x86/include/uapi/asm/kvm.h
index c2824d02ba37..f3a960488eae 100644
--- a/arch/x86/include/uapi/asm/kvm.h
+++ b/arch/x86/include/uapi/asm/kvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_KVM_H
#define _ASM_X86_KVM_H
diff --git a/arch/x86/include/uapi/asm/kvm_para.h b/arch/x86/include/uapi/asm/kvm_para.h
index a965e5b0d328..554aa8f24f91 100644
--- a/arch/x86/include/uapi/asm/kvm_para.h
+++ b/arch/x86/include/uapi/asm/kvm_para.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_KVM_PARA_H
#define _UAPI_ASM_X86_KVM_PARA_H
diff --git a/arch/x86/include/uapi/asm/kvm_perf.h b/arch/x86/include/uapi/asm/kvm_perf.h
index 3bb964f88aa1..125cf5cdf6c5 100644
--- a/arch/x86/include/uapi/asm/kvm_perf.h
+++ b/arch/x86/include/uapi/asm/kvm_perf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_KVM_PERF_H
#define _ASM_X86_KVM_PERF_H
diff --git a/arch/x86/include/uapi/asm/ldt.h b/arch/x86/include/uapi/asm/ldt.h
index 6e1aaf73852a..d62ac5db093b 100644
--- a/arch/x86/include/uapi/asm/ldt.h
+++ b/arch/x86/include/uapi/asm/ldt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ldt.h
*
diff --git a/arch/x86/include/uapi/asm/mce.h b/arch/x86/include/uapi/asm/mce.h
index eb6247a7009b..91723461dc1f 100644
--- a/arch/x86/include/uapi/asm/mce.h
+++ b/arch/x86/include/uapi/asm/mce.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_MCE_H
#define _UAPI_ASM_X86_MCE_H
diff --git a/arch/x86/include/uapi/asm/mman.h b/arch/x86/include/uapi/asm/mman.h
index 3be08f07695c..d4a8d0424bfb 100644
--- a/arch/x86/include/uapi/asm/mman.h
+++ b/arch/x86/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_MMAN_H
#define _ASM_X86_MMAN_H
diff --git a/arch/x86/include/uapi/asm/msr.h b/arch/x86/include/uapi/asm/msr.h
index c41f4fe25483..e7516b402a00 100644
--- a/arch/x86/include/uapi/asm/msr.h
+++ b/arch/x86/include/uapi/asm/msr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_MSR_H
#define _UAPI_ASM_X86_MSR_H
diff --git a/arch/x86/include/uapi/asm/mtrr.h b/arch/x86/include/uapi/asm/mtrr.h
index 7528dcf59691..376563f2bac1 100644
--- a/arch/x86/include/uapi/asm/mtrr.h
+++ b/arch/x86/include/uapi/asm/mtrr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.0+ WITH Linux-syscall-note */
/* Generic MTRR (Memory Type Range Register) ioctls.
Copyright (C) 1997-1999 Richard Gooch
diff --git a/arch/x86/include/uapi/asm/perf_regs.h b/arch/x86/include/uapi/asm/perf_regs.h
index 3f2207bfd17b..f3329cabce5c 100644
--- a/arch/x86/include/uapi/asm/perf_regs.h
+++ b/arch/x86/include/uapi/asm/perf_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_PERF_REGS_H
#define _ASM_X86_PERF_REGS_H
diff --git a/arch/x86/include/uapi/asm/posix_types.h b/arch/x86/include/uapi/asm/posix_types.h
index 85506b383627..c661e95f0134 100644
--- a/arch/x86/include/uapi/asm/posix_types.h
+++ b/arch/x86/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __KERNEL__
# ifdef __i386__
# include <asm/posix_types_32.h>
diff --git a/arch/x86/include/uapi/asm/posix_types_32.h b/arch/x86/include/uapi/asm/posix_types_32.h
index 8e525059e7d8..840659f4b96f 100644
--- a/arch/x86/include/uapi/asm/posix_types_32.h
+++ b/arch/x86/include/uapi/asm/posix_types_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_POSIX_TYPES_32_H
#define _ASM_X86_POSIX_TYPES_32_H
diff --git a/arch/x86/include/uapi/asm/posix_types_64.h b/arch/x86/include/uapi/asm/posix_types_64.h
index cba0c1ead162..515afb8059ce 100644
--- a/arch/x86/include/uapi/asm/posix_types_64.h
+++ b/arch/x86/include/uapi/asm/posix_types_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_POSIX_TYPES_64_H
#define _ASM_X86_POSIX_TYPES_64_H
diff --git a/arch/x86/include/uapi/asm/posix_types_x32.h b/arch/x86/include/uapi/asm/posix_types_x32.h
index 85f9bdafa93c..f60479b07fc8 100644
--- a/arch/x86/include/uapi/asm/posix_types_x32.h
+++ b/arch/x86/include/uapi/asm/posix_types_x32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_POSIX_TYPES_X32_H
#define _ASM_X86_POSIX_TYPES_X32_H
diff --git a/arch/x86/include/uapi/asm/prctl.h b/arch/x86/include/uapi/asm/prctl.h
index c45765517092..5a6aac9fa41f 100644
--- a/arch/x86/include/uapi/asm/prctl.h
+++ b/arch/x86/include/uapi/asm/prctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_PRCTL_H
#define _ASM_X86_PRCTL_H
diff --git a/arch/x86/include/uapi/asm/processor-flags.h b/arch/x86/include/uapi/asm/processor-flags.h
index 185f3d10c194..6f3355399665 100644
--- a/arch/x86/include/uapi/asm/processor-flags.h
+++ b/arch/x86/include/uapi/asm/processor-flags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_PROCESSOR_FLAGS_H
#define _UAPI_ASM_X86_PROCESSOR_FLAGS_H
/* Various flags defined: can be included from assembler. */
diff --git a/arch/x86/include/uapi/asm/ptrace-abi.h b/arch/x86/include/uapi/asm/ptrace-abi.h
index 580aee3072e0..16074b9c93bb 100644
--- a/arch/x86/include/uapi/asm/ptrace-abi.h
+++ b/arch/x86/include/uapi/asm/ptrace-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_PTRACE_ABI_H
#define _ASM_X86_PTRACE_ABI_H
diff --git a/arch/x86/include/uapi/asm/ptrace.h b/arch/x86/include/uapi/asm/ptrace.h
index bc16115af39b..85165c0edafc 100644
--- a/arch/x86/include/uapi/asm/ptrace.h
+++ b/arch/x86/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_PTRACE_H
#define _UAPI_ASM_X86_PTRACE_H
diff --git a/arch/x86/include/uapi/asm/sembuf.h b/arch/x86/include/uapi/asm/sembuf.h
index cc2d6a3aeae7..cabd7476bd6c 100644
--- a/arch/x86/include/uapi/asm/sembuf.h
+++ b/arch/x86/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_SEMBUF_H
#define _ASM_X86_SEMBUF_H
diff --git a/arch/x86/include/uapi/asm/sigcontext.h b/arch/x86/include/uapi/asm/sigcontext.h
index 62d4111c1c54..844d60eb1882 100644
--- a/arch/x86/include/uapi/asm/sigcontext.h
+++ b/arch/x86/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_SIGCONTEXT_H
#define _UAPI_ASM_X86_SIGCONTEXT_H
diff --git a/arch/x86/include/uapi/asm/sigcontext32.h b/arch/x86/include/uapi/asm/sigcontext32.h
index a92b0f0dc09e..6b18e88de8a6 100644
--- a/arch/x86/include/uapi/asm/sigcontext32.h
+++ b/arch/x86/include/uapi/asm/sigcontext32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SIGCONTEXT32_H
#define _ASM_X86_SIGCONTEXT32_H
diff --git a/arch/x86/include/uapi/asm/siginfo.h b/arch/x86/include/uapi/asm/siginfo.h
index 34c47b3341c0..b3d157957177 100644
--- a/arch/x86/include/uapi/asm/siginfo.h
+++ b/arch/x86/include/uapi/asm/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_SIGINFO_H
#define _ASM_X86_SIGINFO_H
diff --git a/arch/x86/include/uapi/asm/signal.h b/arch/x86/include/uapi/asm/signal.h
index 8264f47cf53e..e5745d593dc7 100644
--- a/arch/x86/include/uapi/asm/signal.h
+++ b/arch/x86/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_SIGNAL_H
#define _UAPI_ASM_X86_SIGNAL_H
diff --git a/arch/x86/include/uapi/asm/stat.h b/arch/x86/include/uapi/asm/stat.h
index bc03eb5d6360..9e3982d95d0f 100644
--- a/arch/x86/include/uapi/asm/stat.h
+++ b/arch/x86/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_STAT_H
#define _ASM_X86_STAT_H
diff --git a/arch/x86/include/uapi/asm/statfs.h b/arch/x86/include/uapi/asm/statfs.h
index 2d0adbf99a8e..13c2464cd2c4 100644
--- a/arch/x86/include/uapi/asm/statfs.h
+++ b/arch/x86/include/uapi/asm/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_STATFS_H
#define _ASM_X86_STATFS_H
diff --git a/arch/x86/include/uapi/asm/svm.h b/arch/x86/include/uapi/asm/svm.h
index 3725e145aa58..a9731f8a480f 100644
--- a/arch/x86/include/uapi/asm/svm.h
+++ b/arch/x86/include/uapi/asm/svm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__SVM_H
#define _UAPI__SVM_H
diff --git a/arch/x86/include/uapi/asm/swab.h b/arch/x86/include/uapi/asm/swab.h
index 7f235c7105c1..cd3fd8ddbe9a 100644
--- a/arch/x86/include/uapi/asm/swab.h
+++ b/arch/x86/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_SWAB_H
#define _ASM_X86_SWAB_H
diff --git a/arch/x86/include/uapi/asm/types.h b/arch/x86/include/uapi/asm/types.h
index 8e8c23fef08c..df55e1ddb0c9 100644
--- a/arch/x86/include/uapi/asm/types.h
+++ b/arch/x86/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_TYPES_H
#define _ASM_X86_TYPES_H
diff --git a/arch/x86/include/uapi/asm/ucontext.h b/arch/x86/include/uapi/asm/ucontext.h
index e3d1ec90616e..5657b7a49f03 100644
--- a/arch/x86/include/uapi/asm/ucontext.h
+++ b/arch/x86/include/uapi/asm/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_X86_UCONTEXT_H
#define _ASM_X86_UCONTEXT_H
diff --git a/arch/x86/include/uapi/asm/unistd.h b/arch/x86/include/uapi/asm/unistd.h
index a26df0d75cd0..30d7d04d72d6 100644
--- a/arch/x86/include/uapi/asm/unistd.h
+++ b/arch/x86/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_UNISTD_H
#define _UAPI_ASM_X86_UNISTD_H
diff --git a/arch/x86/include/uapi/asm/vm86.h b/arch/x86/include/uapi/asm/vm86.h
index e0b243e9d859..d2ee4e307ef8 100644
--- a/arch/x86/include/uapi/asm/vm86.h
+++ b/arch/x86/include/uapi/asm/vm86.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_VM86_H
#define _UAPI_ASM_X86_VM86_H
diff --git a/arch/x86/include/uapi/asm/vmx.h b/arch/x86/include/uapi/asm/vmx.h
index 690a2dcf4078..f0b0c90dd398 100644
--- a/arch/x86/include/uapi/asm/vmx.h
+++ b/arch/x86/include/uapi/asm/vmx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* vmx.h: VMX Architecture related definitions
* Copyright (c) 2004, Intel Corporation.
diff --git a/arch/x86/include/uapi/asm/vsyscall.h b/arch/x86/include/uapi/asm/vsyscall.h
index b97dd6e263d2..75275f547444 100644
--- a/arch/x86/include/uapi/asm/vsyscall.h
+++ b/arch/x86/include/uapi/asm/vsyscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_X86_VSYSCALL_H
#define _UAPI_ASM_X86_VSYSCALL_H
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index fd0a7895b63f..5f70044340ff 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/arch/x86/kernel/acpi/Makefile b/arch/x86/kernel/acpi/Makefile
index 85a9e17e0dbc..f1bb57b0e41e 100644
--- a/arch/x86/kernel/acpi/Makefile
+++ b/arch/x86/kernel/acpi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
OBJECT_FILES_NON_STANDARD_wakeup_$(BITS).o := y
obj-$(CONFIG_ACPI) += boot.o
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index f8ae286c1502..079535e53e2a 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1373,7 +1373,7 @@ static void __init acpi_reduced_hw_init(void)
* If your system is blacklisted here, but you find that acpi=force
* works for you, please contact linux-acpi@vger.kernel.org
*/
-static struct dmi_system_id __initdata acpi_dmi_table[] = {
+static const struct dmi_system_id acpi_dmi_table[] __initconst = {
/*
* Boxes that need ACPI disabled
*/
@@ -1448,7 +1448,7 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
};
/* second table for DMI checks that should run after early-quirks */
-static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
+static const struct dmi_system_id acpi_dmi_table_late[] __initconst = {
/*
* HP laptops which use a DSDT reporting as HP/SB400/10000,
* which includes some code which overrides all temperature
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c
index ed014814ea35..7188aea91549 100644
--- a/arch/x86/kernel/acpi/sleep.c
+++ b/arch/x86/kernel/acpi/sleep.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* sleep.c - x86-specific ACPI sleep support.
*
diff --git a/arch/x86/kernel/acpi/sleep.h b/arch/x86/kernel/acpi/sleep.h
index 65c7b606b606..fbb60ca4255c 100644
--- a/arch/x86/kernel/acpi/sleep.h
+++ b/arch/x86/kernel/acpi/sleep.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Variables and functions used by the code in sleep.c
*/
diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c
index 458da8509b75..6db28f17ff28 100644
--- a/arch/x86/kernel/amd_nb.c
+++ b/arch/x86/kernel/amd_nb.c
@@ -27,6 +27,8 @@ static const struct pci_device_id amd_root_ids[] = {
{}
};
+#define PCI_DEVICE_ID_AMD_CNB17H_F4 0x1704
+
const struct pci_device_id amd_nb_misc_ids[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MISC) },
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_MISC) },
@@ -37,6 +39,7 @@ const struct pci_device_id amd_nb_misc_ids[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) },
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F3) },
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_DF_F3) },
+ { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CNB17H_F3) },
{}
};
EXPORT_SYMBOL_GPL(amd_nb_misc_ids);
@@ -48,6 +51,7 @@ static const struct pci_device_id amd_nb_link_ids[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_NB_F4) },
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F4) },
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_DF_F4) },
+ { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CNB17H_F4) },
{}
};
@@ -402,11 +406,48 @@ void amd_flush_garts(void)
}
EXPORT_SYMBOL_GPL(amd_flush_garts);
+static void __fix_erratum_688(void *info)
+{
+#define MSR_AMD64_IC_CFG 0xC0011021
+
+ msr_set_bit(MSR_AMD64_IC_CFG, 3);
+ msr_set_bit(MSR_AMD64_IC_CFG, 14);
+}
+
+/* Apply erratum 688 fix so machines without a BIOS fix work. */
+static __init void fix_erratum_688(void)
+{
+ struct pci_dev *F4;
+ u32 val;
+
+ if (boot_cpu_data.x86 != 0x14)
+ return;
+
+ if (!amd_northbridges.num)
+ return;
+
+ F4 = node_to_amd_nb(0)->link;
+ if (!F4)
+ return;
+
+ if (pci_read_config_dword(F4, 0x164, &val))
+ return;
+
+ if (val & BIT(2))
+ return;
+
+ on_each_cpu(__fix_erratum_688, NULL, 0);
+
+ pr_info("x86/cpu/AMD: CPU erratum 688 worked around\n");
+}
+
static __init int init_amd_nbs(void)
{
amd_cache_northbridges();
amd_cache_gart();
+ fix_erratum_688();
+
return 0;
}
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c
index ef2859f9fcce..f5d92bc3b884 100644
--- a/arch/x86/kernel/aperture_64.c
+++ b/arch/x86/kernel/aperture_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Firmware replacement code.
*
diff --git a/arch/x86/kernel/apic/Makefile b/arch/x86/kernel/apic/Makefile
index 8e63ebdcbd0b..2fb7309c6900 100644
--- a/arch/x86/kernel/apic/Makefile
+++ b/arch/x86/kernel/apic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for local APIC drivers and for the IO-APIC code
#
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index d705c769f77d..ff891772c9f8 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -573,11 +573,21 @@ static u32 bdx_deadline_rev(void)
return ~0U;
}
+static u32 skx_deadline_rev(void)
+{
+ switch (boot_cpu_data.x86_mask) {
+ case 0x03: return 0x01000136;
+ case 0x04: return 0x02000014;
+ }
+
+ return ~0U;
+}
+
static const struct x86_cpu_id deadline_match[] = {
DEADLINE_MODEL_MATCH_FUNC( INTEL_FAM6_HASWELL_X, hsx_deadline_rev),
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_BROADWELL_X, 0x0b000020),
DEADLINE_MODEL_MATCH_FUNC( INTEL_FAM6_BROADWELL_XEON_D, bdx_deadline_rev),
- DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_SKYLAKE_X, 0x02000014),
+ DEADLINE_MODEL_MATCH_FUNC( INTEL_FAM6_SKYLAKE_X, skx_deadline_rev),
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_HASWELL_CORE, 0x22),
DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_HASWELL_ULT, 0x20),
@@ -600,7 +610,8 @@ static void apic_check_deadline_errata(void)
const struct x86_cpu_id *m;
u32 rev;
- if (!boot_cpu_has(X86_FEATURE_TSC_DEADLINE_TIMER))
+ if (!boot_cpu_has(X86_FEATURE_TSC_DEADLINE_TIMER) ||
+ boot_cpu_has(X86_FEATURE_HYPERVISOR))
return;
m = x86_match_cpu(deadline_match);
diff --git a/arch/x86/kernel/apic/apic_noop.c b/arch/x86/kernel/apic/apic_noop.c
index 6599f437b4ab..c8d211277315 100644
--- a/arch/x86/kernel/apic/apic_noop.c
+++ b/arch/x86/kernel/apic/apic_noop.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* NOOP APIC driver.
*
diff --git a/arch/x86/kernel/apic/bigsmp_32.c b/arch/x86/kernel/apic/bigsmp_32.c
index 456e45e8bf84..e12fbcfc9571 100644
--- a/arch/x86/kernel/apic/bigsmp_32.c
+++ b/arch/x86/kernel/apic/bigsmp_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* APIC driver for "bigsmp" xAPIC machines with more than 8 virtual CPUs.
*
diff --git a/arch/x86/kernel/apic/hw_nmi.c b/arch/x86/kernel/apic/hw_nmi.c
index d6f387780849..d1fc62a67320 100644
--- a/arch/x86/kernel/apic/hw_nmi.c
+++ b/arch/x86/kernel/apic/hw_nmi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* HW NMI watchdog support
*
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 70e48aa6af98..3b89b27945ff 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Intel IO-APIC support for multi-Pentium hosts.
*
diff --git a/arch/x86/kernel/apic/ipi.c b/arch/x86/kernel/apic/ipi.c
index 3a205d4a12d0..82f9244fe61f 100644
--- a/arch/x86/kernel/apic/ipi.c
+++ b/arch/x86/kernel/apic/ipi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/cpumask.h>
#include <linux/interrupt.h>
diff --git a/arch/x86/kernel/apic/x2apic_cluster.c b/arch/x86/kernel/apic/x2apic_cluster.c
index 481237cb1544..e216cf3d64d2 100644
--- a/arch/x86/kernel/apic/x2apic_cluster.c
+++ b/arch/x86/kernel/apic/x2apic_cluster.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/threads.h>
#include <linux/cpumask.h>
#include <linux/string.h>
diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c
index 3baf0c3dc875..b94d35320f85 100644
--- a/arch/x86/kernel/apic/x2apic_phys.c
+++ b/arch/x86/kernel/apic/x2apic_phys.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/threads.h>
#include <linux/cpumask.h>
#include <linux/string.h>
diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
index 446b0d3d4932..e4b0d92b3ae0 100644
--- a/arch/x86/kernel/apm_32.c
+++ b/arch/x86/kernel/apm_32.c
@@ -2043,7 +2043,7 @@ static int __init swab_apm_power_in_minutes(const struct dmi_system_id *d)
return 0;
}
-static struct dmi_system_id __initdata apm_dmi_table[] = {
+static const struct dmi_system_id apm_dmi_table[] __initconst = {
{
print_if_true,
KERN_WARNING "IBM T23 - BIOS 1.03b+ and controller firmware 1.02+ may be needed for Linux APM.",
diff --git a/arch/x86/kernel/asm-offsets.c b/arch/x86/kernel/asm-offsets.c
index de827d6ac8c2..8ea78275480d 100644
--- a/arch/x86/kernel/asm-offsets.c
+++ b/arch/x86/kernel/asm-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generate definitions needed by assembly language modules.
* This code generates raw asm output which is post-processed to extract
diff --git a/arch/x86/kernel/asm-offsets_32.c b/arch/x86/kernel/asm-offsets_32.c
index 710edab9e644..dedf428b20b6 100644
--- a/arch/x86/kernel/asm-offsets_32.c
+++ b/arch/x86/kernel/asm-offsets_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#ifndef __LINUX_KBUILD_H
# error "Please do not build this file directly, build asm-offsets.c instead"
#endif
diff --git a/arch/x86/kernel/asm-offsets_64.c b/arch/x86/kernel/asm-offsets_64.c
index cf42206926af..630212fa9b9d 100644
--- a/arch/x86/kernel/asm-offsets_64.c
+++ b/arch/x86/kernel/asm-offsets_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#ifndef __LINUX_KBUILD_H
# error "Please do not build this file directly, build asm-offsets.c instead"
#endif
diff --git a/arch/x86/kernel/audit_64.c b/arch/x86/kernel/audit_64.c
index f3672508b249..e1efe44ebefc 100644
--- a/arch/x86/kernel/audit_64.c
+++ b/arch/x86/kernel/audit_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/types.h>
#include <linux/audit.h>
diff --git a/arch/x86/kernel/bootflag.c b/arch/x86/kernel/bootflag.c
index 52c8e3c7789d..3fed7ae58b60 100644
--- a/arch/x86/kernel/bootflag.c
+++ b/arch/x86/kernel/bootflag.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Implement 'Simple Boot Flag Specification 2.0'
*/
diff --git a/arch/x86/kernel/check.c b/arch/x86/kernel/check.c
index 145863d4d343..33399426793e 100644
--- a/arch/x86/kernel/check.c
+++ b/arch/x86/kernel/check.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/kthread.h>
diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
index e17942c131c8..236999c54edc 100644
--- a/arch/x86/kernel/cpu/Makefile
+++ b/arch/x86/kernel/cpu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for x86-compatible CPU details, features and quirks
#
@@ -21,7 +22,7 @@ obj-y += common.o
obj-y += rdrand.o
obj-y += match.o
obj-y += bugs.o
-obj-$(CONFIG_CPU_FREQ) += aperfmperf.o
+obj-y += aperfmperf.o
obj-$(CONFIG_PROC_FS) += proc.o
obj-$(CONFIG_X86_FEATURE_NAMES) += capflags.o powerflags.o
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index 9862e2cd6d93..d58184b7cd44 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -763,6 +763,16 @@ static void init_amd_bd(struct cpuinfo_x86 *c)
}
}
+static void init_amd_zn(struct cpuinfo_x86 *c)
+{
+ /*
+ * Fix erratum 1076: CPB feature bit not being set in CPUID. It affects
+ * all up to and including B1.
+ */
+ if (c->x86_model <= 1 && c->x86_mask <= 1)
+ set_cpu_cap(c, X86_FEATURE_CPB);
+}
+
static void init_amd(struct cpuinfo_x86 *c)
{
early_init_amd(c);
@@ -791,6 +801,7 @@ static void init_amd(struct cpuinfo_x86 *c)
case 0x10: init_amd_gh(c); break;
case 0x12: init_amd_ln(c); break;
case 0x15: init_amd_bd(c); break;
+ case 0x17: init_amd_zn(c); break;
}
/* Enable workaround for FXSAVE leak */
diff --git a/arch/x86/kernel/cpu/aperfmperf.c b/arch/x86/kernel/cpu/aperfmperf.c
index 0ee83321a313..957813e0180d 100644
--- a/arch/x86/kernel/cpu/aperfmperf.c
+++ b/arch/x86/kernel/cpu/aperfmperf.c
@@ -42,10 +42,6 @@ static void aperfmperf_snapshot_khz(void *dummy)
s64 time_delta = ktime_ms_delta(now, s->time);
unsigned long flags;
- /* Don't bother re-computing within the cache threshold time. */
- if (time_delta < APERFMPERF_CACHE_THRESHOLD_MS)
- return;
-
local_irq_save(flags);
rdmsrl(MSR_IA32_APERF, aperf);
rdmsrl(MSR_IA32_MPERF, mperf);
@@ -74,6 +70,7 @@ static void aperfmperf_snapshot_khz(void *dummy)
unsigned int arch_freq_get_on_cpu(int cpu)
{
+ s64 time_delta;
unsigned int khz;
if (!cpu_khz)
@@ -82,6 +79,12 @@ unsigned int arch_freq_get_on_cpu(int cpu)
if (!static_cpu_has(X86_FEATURE_APERFMPERF))
return 0;
+ /* Don't bother re-computing within the cache threshold time. */
+ time_delta = ktime_ms_delta(ktime_get(), per_cpu(samples.time, cpu));
+ khz = per_cpu(samples.khz, cpu);
+ if (khz && time_delta < APERFMPERF_CACHE_THRESHOLD_MS)
+ return khz;
+
smp_call_function_single(cpu, aperfmperf_snapshot_khz, NULL, 1);
khz = per_cpu(samples.khz, cpu);
if (khz)
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index db684880d74a..ba0b2424c9b0 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1994 Linus Torvalds
*
@@ -21,14 +22,6 @@
void __init check_bugs(void)
{
-#ifdef CONFIG_X86_32
- /*
- * Regardless of whether PCID is enumerated, the SDM says
- * that it can't be enabled in 32-bit mode.
- */
- setup_clear_cpu_cap(X86_FEATURE_PCID);
-#endif
-
identify_boot_cpu();
if (!IS_ENABLED(CONFIG_SMP)) {
diff --git a/arch/x86/kernel/cpu/centaur.c b/arch/x86/kernel/cpu/centaur.c
index 44207b71fee1..68bc6d9b3132 100644
--- a/arch/x86/kernel/cpu/centaur.c
+++ b/arch/x86/kernel/cpu/centaur.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/sched.h>
#include <linux/sched/clock.h>
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index fb1d3358a4af..c9176bae7fd8 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -169,21 +169,21 @@ static int __init x86_mpx_setup(char *s)
__setup("nompx", x86_mpx_setup);
#ifdef CONFIG_X86_64
-static int __init x86_pcid_setup(char *s)
+static int __init x86_nopcid_setup(char *s)
{
- /* require an exact match without trailing characters */
- if (strlen(s))
- return 0;
+ /* nopcid doesn't accept parameters */
+ if (s)
+ return -EINVAL;
/* do not emit a message if the feature is not present */
if (!boot_cpu_has(X86_FEATURE_PCID))
- return 1;
+ return 0;
setup_clear_cpu_cap(X86_FEATURE_PCID);
pr_info("nopcid: PCID feature disabled\n");
- return 1;
+ return 0;
}
-__setup("nopcid", x86_pcid_setup);
+early_param("nopcid", x86_nopcid_setup);
#endif
static int __init x86_noinvpcid_setup(char *s)
@@ -329,38 +329,6 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c)
}
}
-static void setup_pcid(struct cpuinfo_x86 *c)
-{
- if (cpu_has(c, X86_FEATURE_PCID)) {
- if (cpu_has(c, X86_FEATURE_PGE)) {
- /*
- * We'd like to use cr4_set_bits_and_update_boot(),
- * but we can't. CR4.PCIDE is special and can only
- * be set in long mode, and the early CPU init code
- * doesn't know this and would try to restore CR4.PCIDE
- * prior to entering long mode.
- *
- * Instead, we rely on the fact that hotplug, resume,
- * etc all fully restore CR4 before they write anything
- * that could have nonzero PCID bits to CR3. CR4.PCIDE
- * has no effect on the page tables themselves, so we
- * don't need it to be restored early.
- */
- cr4_set_bits(X86_CR4_PCIDE);
- } else {
- /*
- * flush_tlb_all(), as currently implemented, won't
- * work if PCID is on but PGE is not. Since that
- * combination doesn't exist on real hardware, there's
- * no reason to try to fully support it, but it's
- * polite to avoid corrupting data if we're on
- * an improperly configured VM.
- */
- clear_cpu_cap(c, X86_FEATURE_PCID);
- }
- }
-}
-
/*
* Protection Keys are not available in 32-bit mode.
*/
@@ -936,6 +904,14 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c)
setup_force_cpu_cap(X86_FEATURE_ALWAYS);
fpu__init_system(c);
+
+#ifdef CONFIG_X86_32
+ /*
+ * Regardless of whether PCID is enumerated, the SDM says
+ * that it can't be enabled in 32-bit mode.
+ */
+ setup_clear_cpu_cap(X86_FEATURE_PCID);
+#endif
}
void __init early_cpu_init(void)
@@ -1175,9 +1151,6 @@ static void identify_cpu(struct cpuinfo_x86 *c)
setup_smep(c);
setup_smap(c);
- /* Set up PCID */
- setup_pcid(c);
-
/*
* The vendor-specific functions might have changed features.
* Now we do "generic changes."
diff --git a/arch/x86/kernel/cpu/cpu.h b/arch/x86/kernel/cpu/cpu.h
index 2584265d4745..f52a370b6c00 100644
--- a/arch/x86/kernel/cpu/cpu.h
+++ b/arch/x86/kernel/cpu/cpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARCH_X86_CPU_H
#define ARCH_X86_CPU_H
diff --git a/arch/x86/kernel/cpu/cyrix.c b/arch/x86/kernel/cpu/cyrix.c
index 6f077445647a..6b4bb335641f 100644
--- a/arch/x86/kernel/cpu/cyrix.c
+++ b/arch/x86/kernel/cpu/cyrix.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bitops.h>
#include <linux/delay.h>
#include <linux/pci.h>
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index dfa90a3a5145..b720dacac051 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/string.h>
diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c
index 24f749324c0f..54d04d574148 100644
--- a/arch/x86/kernel/cpu/intel_cacheinfo.c
+++ b/arch/x86/kernel/cpu/intel_cacheinfo.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Routines to identify caches on Intel CPU.
*
@@ -831,7 +832,6 @@ static int __cache_amd_cpumap_setup(unsigned int cpu, int index,
} else if (boot_cpu_has(X86_FEATURE_TOPOEXT)) {
unsigned int apicid, nshared, first, last;
- this_leaf = this_cpu_ci->info_list + index;
nshared = base->eax.split.num_threads_sharing + 1;
apicid = cpu_data(cpu).apicid;
first = apicid - (apicid % nshared);
diff --git a/arch/x86/kernel/cpu/intel_rdt.h b/arch/x86/kernel/cpu/intel_rdt.h
index ebaddaeef023..a43a72d8e88e 100644
--- a/arch/x86/kernel/cpu/intel_rdt.h
+++ b/arch/x86/kernel/cpu/intel_rdt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_INTEL_RDT_H
#define _ASM_X86_INTEL_RDT_H
diff --git a/arch/x86/kernel/cpu/match.c b/arch/x86/kernel/cpu/match.c
index e42117d5f4d7..3fed38812eea 100644
--- a/arch/x86/kernel/cpu/match.c
+++ b/arch/x86/kernel/cpu/match.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/cpu_device_id.h>
#include <asm/cpufeature.h>
#include <linux/cpu.h>
diff --git a/arch/x86/kernel/cpu/mcheck/Makefile b/arch/x86/kernel/cpu/mcheck/Makefile
index 43051f0777d4..bcc7c54c7041 100644
--- a/arch/x86/kernel/cpu/mcheck/Makefile
+++ b/arch/x86/kernel/cpu/mcheck/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y = mce.o mce-severity.o mce-genpool.o
obj-$(CONFIG_X86_ANCIENT_MCE) += winchip.o p5.o
diff --git a/arch/x86/kernel/cpu/mcheck/mce-internal.h b/arch/x86/kernel/cpu/mcheck/mce-internal.h
index 098530a93bb7..aa0d5df9dc60 100644
--- a/arch/x86/kernel/cpu/mcheck/mce-internal.h
+++ b/arch/x86/kernel/cpu/mcheck/mce-internal.h
@@ -1,3 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __X86_MCE_INTERNAL_H__
+#define __X86_MCE_INTERNAL_H__
+
#include <linux/device.h>
#include <asm/mce.h>
@@ -108,3 +112,7 @@ static inline void mce_work_trigger(void) { }
static inline void mce_register_injector_chain(struct notifier_block *nb) { }
static inline void mce_unregister_injector_chain(struct notifier_block *nb) { }
#endif
+
+extern struct mca_config mca_cfg;
+
+#endif /* __X86_MCE_INTERNAL_H__ */
diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c
index 40e28ed77fbf..486f640b02ef 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
@@ -28,6 +28,8 @@
#include <asm/msr.h>
#include <asm/trace/irq_vectors.h>
+#include "mce-internal.h"
+
#define NR_BLOCKS 5
#define THRESHOLD_MAX 0xFFF
#define INT_TYPE_APIC 0x00020000
diff --git a/arch/x86/kernel/cpu/mcheck/mce_intel.c b/arch/x86/kernel/cpu/mcheck/mce_intel.c
index e84db79ef272..d05be307d081 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_intel.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_intel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Intel specific MCE features.
* Copyright 2004 Zwane Mwaikambo <zwane@linuxpower.ca>
diff --git a/arch/x86/kernel/cpu/mcheck/p5.c b/arch/x86/kernel/cpu/mcheck/p5.c
index 2a0717bf8033..5cddf831720f 100644
--- a/arch/x86/kernel/cpu/mcheck/p5.c
+++ b/arch/x86/kernel/cpu/mcheck/p5.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* P5 specific Machine Check Exception Reporting
* (C) Copyright 2002 Alan Cox <alan@lxorguk.ukuu.org.uk>
diff --git a/arch/x86/kernel/cpu/mcheck/threshold.c b/arch/x86/kernel/cpu/mcheck/threshold.c
index 5e7249e42f8f..2b584b319eff 100644
--- a/arch/x86/kernel/cpu/mcheck/threshold.c
+++ b/arch/x86/kernel/cpu/mcheck/threshold.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common corrected MCE threshold handler code:
*/
diff --git a/arch/x86/kernel/cpu/mcheck/winchip.c b/arch/x86/kernel/cpu/mcheck/winchip.c
index c6a722e1d011..3b45b270a865 100644
--- a/arch/x86/kernel/cpu/mcheck/winchip.c
+++ b/arch/x86/kernel/cpu/mcheck/winchip.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IDT Winchip specific Machine Check Exception Reporting
* (C) Copyright 2002 Alan Cox <alan@lxorguk.ukuu.org.uk>
diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
index 86e8f0b2537b..c4fa4a85d4cb 100644
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -122,9 +122,6 @@ static bool __init check_loader_disabled_bsp(void)
bool *res = &dis_ucode_ldr;
#endif
- if (!have_cpuid_p())
- return *res;
-
/*
* CPUID(1).ECX[31]: reserved for hypervisor use. This is still not
* completely accurate as xen pv guests don't see that CPUID bit set but
@@ -166,24 +163,36 @@ bool get_builtin_firmware(struct cpio_data *cd, const char *name)
void __init load_ucode_bsp(void)
{
unsigned int cpuid_1_eax;
+ bool intel = true;
- if (check_loader_disabled_bsp())
+ if (!have_cpuid_p())
return;
cpuid_1_eax = native_cpuid_eax(1);
switch (x86_cpuid_vendor()) {
case X86_VENDOR_INTEL:
- if (x86_family(cpuid_1_eax) >= 6)
- load_ucode_intel_bsp();
+ if (x86_family(cpuid_1_eax) < 6)
+ return;
break;
+
case X86_VENDOR_AMD:
- if (x86_family(cpuid_1_eax) >= 0x10)
- load_ucode_amd_bsp(cpuid_1_eax);
+ if (x86_family(cpuid_1_eax) < 0x10)
+ return;
+ intel = false;
break;
+
default:
- break;
+ return;
}
+
+ if (check_loader_disabled_bsp())
+ return;
+
+ if (intel)
+ load_ucode_intel_bsp();
+ else
+ load_ucode_amd_bsp(cpuid_1_eax);
}
static bool check_loader_disabled_ap(void)
diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c
index 8f7a9bbad514..7dbcb7adf797 100644
--- a/arch/x86/kernel/cpu/microcode/intel.c
+++ b/arch/x86/kernel/cpu/microcode/intel.c
@@ -34,6 +34,7 @@
#include <linux/mm.h>
#include <asm/microcode_intel.h>
+#include <asm/intel-family.h>
#include <asm/processor.h>
#include <asm/tlbflush.h>
#include <asm/setup.h>
@@ -918,6 +919,18 @@ static int get_ucode_fw(void *to, const void *from, size_t n)
return 0;
}
+static bool is_blacklisted(unsigned int cpu)
+{
+ struct cpuinfo_x86 *c = &cpu_data(cpu);
+
+ if (c->x86 == 6 && c->x86_model == INTEL_FAM6_BROADWELL_X) {
+ pr_err_once("late loading on model 79 is disabled.\n");
+ return true;
+ }
+
+ return false;
+}
+
static enum ucode_state request_microcode_fw(int cpu, struct device *device,
bool refresh_fw)
{
@@ -926,6 +939,9 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device,
const struct firmware *firmware;
enum ucode_state ret;
+ if (is_blacklisted(cpu))
+ return UCODE_NFOUND;
+
sprintf(name, "intel-ucode/%02x-%02x-%02x",
c->x86, c->x86_model, c->x86_mask);
@@ -950,6 +966,9 @@ static int get_ucode_user(void *to, const void *from, size_t n)
static enum ucode_state
request_microcode_user(int cpu, const void __user *buf, size_t size)
{
+ if (is_blacklisted(cpu))
+ return UCODE_NFOUND;
+
return generic_load_microcode(cpu, (void *)buf, size, &get_ucode_user);
}
diff --git a/arch/x86/kernel/cpu/mkcapflags.sh b/arch/x86/kernel/cpu/mkcapflags.sh
index 6988c74409a8..d0dfb892c72f 100644
--- a/arch/x86/kernel/cpu/mkcapflags.sh
+++ b/arch/x86/kernel/cpu/mkcapflags.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
#
# Generate the x86_cap/bug_flags[] arrays from include/asm/cpufeatures.h
#
diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
index 3b3f713e15e5..236324e83a3a 100644
--- a/arch/x86/kernel/cpu/mshyperv.c
+++ b/arch/x86/kernel/cpu/mshyperv.c
@@ -59,8 +59,6 @@ void hyperv_vector_handler(struct pt_regs *regs)
void hv_setup_vmbus_irq(void (*handler)(void))
{
vmbus_handler = handler;
- /* Setup the IDT for hypervisor callback */
- alloc_intr_gate(HYPERVISOR_CALLBACK_VECTOR, hyperv_callback_vector);
}
void hv_remove_vmbus_irq(void)
@@ -251,6 +249,8 @@ static void __init ms_hyperv_init_platform(void)
*/
x86_platform.apic_post_init = hyperv_init;
hyperv_setup_mmu_ops();
+ /* Setup the IDT for hypervisor callback */
+ alloc_intr_gate(HYPERVISOR_CALLBACK_VECTOR, hyperv_callback_vector);
#endif
}
diff --git a/arch/x86/kernel/cpu/mtrr/amd.c b/arch/x86/kernel/cpu/mtrr/amd.c
index 92ba9cd31c9a..a65a0272096d 100644
--- a/arch/x86/kernel/cpu/mtrr/amd.c
+++ b/arch/x86/kernel/cpu/mtrr/amd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/mm.h>
#include <asm/mtrr.h>
diff --git a/arch/x86/kernel/cpu/mtrr/centaur.c b/arch/x86/kernel/cpu/mtrr/centaur.c
index 3d689937fc1b..f27177816569 100644
--- a/arch/x86/kernel/cpu/mtrr/centaur.c
+++ b/arch/x86/kernel/cpu/mtrr/centaur.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/mm.h>
diff --git a/arch/x86/kernel/cpu/mtrr/cyrix.c b/arch/x86/kernel/cpu/mtrr/cyrix.c
index b1086f79e57e..4296c702a3f7 100644
--- a/arch/x86/kernel/cpu/mtrr/cyrix.c
+++ b/arch/x86/kernel/cpu/mtrr/cyrix.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/io.h>
#include <linux/mm.h>
diff --git a/arch/x86/kernel/cpu/mtrr/if.c b/arch/x86/kernel/cpu/mtrr/if.c
index 6d9b45549109..558444b23923 100644
--- a/arch/x86/kernel/cpu/mtrr/if.c
+++ b/arch/x86/kernel/cpu/mtrr/if.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/capability.h>
#include <linux/seq_file.h>
#include <linux/uaccess.h>
diff --git a/arch/x86/kernel/cpu/mtrr/mtrr.h b/arch/x86/kernel/cpu/mtrr/mtrr.h
index ad8bd763efa5..2ac99e561181 100644
--- a/arch/x86/kernel/cpu/mtrr/mtrr.h
+++ b/arch/x86/kernel/cpu/mtrr/mtrr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* local MTRR defines.
*/
diff --git a/arch/x86/kernel/cpu/perfctr-watchdog.c b/arch/x86/kernel/cpu/perfctr-watchdog.c
index 181eabecae25..d389083330c5 100644
--- a/arch/x86/kernel/cpu/perfctr-watchdog.c
+++ b/arch/x86/kernel/cpu/perfctr-watchdog.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* local apic based NMI watchdog for various CPUs.
*
diff --git a/arch/x86/kernel/cpu/powerflags.c b/arch/x86/kernel/cpu/powerflags.c
index 1dd8294fd730..fd6ec2aa0303 100644
--- a/arch/x86/kernel/cpu/powerflags.c
+++ b/arch/x86/kernel/cpu/powerflags.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Strings for the various x86 power flags
*
diff --git a/arch/x86/kernel/cpu/proc.c b/arch/x86/kernel/cpu/proc.c
index 218f79825b3c..4378a729b933 100644
--- a/arch/x86/kernel/cpu/proc.c
+++ b/arch/x86/kernel/cpu/proc.c
@@ -1,7 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/smp.h>
#include <linux/timex.h>
#include <linux/string.h>
#include <linux/seq_file.h>
+#include <linux/cpufreq.h>
/*
* Get CPU information for use by the procfs.
@@ -75,9 +77,16 @@ static int show_cpuinfo(struct seq_file *m, void *v)
if (c->microcode)
seq_printf(m, "microcode\t: 0x%x\n", c->microcode);
- if (cpu_has(c, X86_FEATURE_TSC))
+ if (cpu_has(c, X86_FEATURE_TSC)) {
+ unsigned int freq = arch_freq_get_on_cpu(cpu);
+
+ if (!freq)
+ freq = cpufreq_quick_get(cpu);
+ if (!freq)
+ freq = cpu_khz;
seq_printf(m, "cpu MHz\t\t: %u.%03u\n",
- cpu_khz / 1000, (cpu_khz % 1000));
+ freq / 1000, (freq % 1000));
+ }
/* Cache size */
if (c->x86_cache_size >= 0)
diff --git a/arch/x86/kernel/cpu/topology.c b/arch/x86/kernel/cpu/topology.c
index cd531355e838..b099024d339c 100644
--- a/arch/x86/kernel/cpu/topology.c
+++ b/arch/x86/kernel/cpu/topology.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Check for extended topology enumeration cpuid leaf 0xb and if it
* exists, use it for populating initial_apicid and cpu topology
diff --git a/arch/x86/kernel/cpu/transmeta.c b/arch/x86/kernel/cpu/transmeta.c
index d77d07ab310b..42c939827621 100644
--- a/arch/x86/kernel/cpu/transmeta.c
+++ b/arch/x86/kernel/cpu/transmeta.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/sched/clock.h>
diff --git a/arch/x86/kernel/cpu/umc.c b/arch/x86/kernel/cpu/umc.c
index ef9c2a0078bd..65a58a390fc3 100644
--- a/arch/x86/kernel/cpu/umc.c
+++ b/arch/x86/kernel/cpu/umc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <asm/processor.h>
#include "cpu.h"
diff --git a/arch/x86/kernel/crash_dump_32.c b/arch/x86/kernel/crash_dump_32.c
index 538fedea9b3f..33ee47670b99 100644
--- a/arch/x86/kernel/crash_dump_32.c
+++ b/arch/x86/kernel/crash_dump_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Memory preserving reboot related code.
*
diff --git a/arch/x86/kernel/crash_dump_64.c b/arch/x86/kernel/crash_dump_64.c
index afa64adb75ee..4f2e0778feac 100644
--- a/arch/x86/kernel/crash_dump_64.c
+++ b/arch/x86/kernel/crash_dump_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Memory preserving reboot related code.
*
diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
index cbf1f6ba39a8..76e07698e6d1 100644
--- a/arch/x86/kernel/devicetree.c
+++ b/arch/x86/kernel/devicetree.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Architecture specific OF callbacks.
*/
diff --git a/arch/x86/kernel/doublefault.c b/arch/x86/kernel/doublefault.c
index f9c324e08d85..0e662c55ae90 100644
--- a/arch/x86/kernel/doublefault.c
+++ b/arch/x86/kernel/doublefault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/sched/debug.h>
diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
index 4f0481474903..daefae83a3aa 100644
--- a/arch/x86/kernel/dumpstack_32.c
+++ b/arch/x86/kernel/dumpstack_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
index 225af4184f06..88ce2ffdb110 100644
--- a/arch/x86/kernel/dumpstack_64.c
+++ b/arch/x86/kernel/dumpstack_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index 927abeaf63e2..1e82f787c160 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Various workarounds for chipset bugs.
This code runs very early and can't use the regular PCI subsystem
The entries are keyed to PCI bridges which usually identify chipsets
diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
index 0f0840304452..5e801c8c8ce7 100644
--- a/arch/x86/kernel/early_printk.c
+++ b/arch/x86/kernel/early_printk.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/console.h>
#include <linux/kernel.h>
#include <linux/init.h>
diff --git a/arch/x86/kernel/ebda.c b/arch/x86/kernel/ebda.c
index 4312f8ae71b7..38e7d597b660 100644
--- a/arch/x86/kernel/ebda.c
+++ b/arch/x86/kernel/ebda.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/memblock.h>
diff --git a/arch/x86/kernel/fpu/bugs.c b/arch/x86/kernel/fpu/bugs.c
index d913047f832c..2954fab15e51 100644
--- a/arch/x86/kernel/fpu/bugs.c
+++ b/arch/x86/kernel/fpu/bugs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* x86 FPU bug checks:
*/
diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
index e1114f070c2d..f92a6593de1e 100644
--- a/arch/x86/kernel/fpu/core.c
+++ b/arch/x86/kernel/fpu/core.c
@@ -100,7 +100,7 @@ void __kernel_fpu_begin(void)
kernel_fpu_disable();
- if (fpu->fpregs_active) {
+ if (fpu->initialized) {
/*
* Ignore return value -- we don't care if reg state
* is clobbered.
@@ -116,7 +116,7 @@ void __kernel_fpu_end(void)
{
struct fpu *fpu = &current->thread.fpu;
- if (fpu->fpregs_active)
+ if (fpu->initialized)
copy_kernel_to_fpregs(&fpu->state);
kernel_fpu_enable();
@@ -148,7 +148,7 @@ void fpu__save(struct fpu *fpu)
preempt_disable();
trace_x86_fpu_before_save(fpu);
- if (fpu->fpregs_active) {
+ if (fpu->initialized) {
if (!copy_fpregs_to_fpstate(fpu)) {
copy_kernel_to_fpregs(&fpu->state);
}
@@ -189,10 +189,9 @@ EXPORT_SYMBOL_GPL(fpstate_init);
int fpu__copy(struct fpu *dst_fpu, struct fpu *src_fpu)
{
- dst_fpu->fpregs_active = 0;
dst_fpu->last_cpu = -1;
- if (!src_fpu->fpstate_active || !static_cpu_has(X86_FEATURE_FPU))
+ if (!src_fpu->initialized || !static_cpu_has(X86_FEATURE_FPU))
return 0;
WARN_ON_FPU(src_fpu != &current->thread.fpu);
@@ -206,26 +205,14 @@ int fpu__copy(struct fpu *dst_fpu, struct fpu *src_fpu)
/*
* Save current FPU registers directly into the child
* FPU context, without any memory-to-memory copying.
- * In lazy mode, if the FPU context isn't loaded into
- * fpregs, CR0.TS will be set and do_device_not_available
- * will load the FPU context.
*
- * We have to do all this with preemption disabled,
- * mostly because of the FNSAVE case, because in that
- * case we must not allow preemption in the window
- * between the FNSAVE and us marking the context lazy.
- *
- * It shouldn't be an issue as even FNSAVE is plenty
- * fast in terms of critical section length.
+ * ( The function 'fails' in the FNSAVE case, which destroys
+ * register contents so we have to copy them back. )
*/
- preempt_disable();
if (!copy_fpregs_to_fpstate(dst_fpu)) {
- memcpy(&src_fpu->state, &dst_fpu->state,
- fpu_kernel_xstate_size);
-
+ memcpy(&src_fpu->state, &dst_fpu->state, fpu_kernel_xstate_size);
copy_kernel_to_fpregs(&src_fpu->state);
}
- preempt_enable();
trace_x86_fpu_copy_src(src_fpu);
trace_x86_fpu_copy_dst(dst_fpu);
@@ -237,45 +224,48 @@ int fpu__copy(struct fpu *dst_fpu, struct fpu *src_fpu)
* Activate the current task's in-memory FPU context,
* if it has not been used before:
*/
-void fpu__activate_curr(struct fpu *fpu)
+void fpu__initialize(struct fpu *fpu)
{
WARN_ON_FPU(fpu != &current->thread.fpu);
- if (!fpu->fpstate_active) {
+ if (!fpu->initialized) {
fpstate_init(&fpu->state);
trace_x86_fpu_init_state(fpu);
trace_x86_fpu_activate_state(fpu);
/* Safe to do for the current task: */
- fpu->fpstate_active = 1;
+ fpu->initialized = 1;
}
}
-EXPORT_SYMBOL_GPL(fpu__activate_curr);
+EXPORT_SYMBOL_GPL(fpu__initialize);
/*
* This function must be called before we read a task's fpstate.
*
- * If the task has not used the FPU before then initialize its
- * fpstate.
+ * There's two cases where this gets called:
+ *
+ * - for the current task (when coredumping), in which case we have
+ * to save the latest FPU registers into the fpstate,
+ *
+ * - or it's called for stopped tasks (ptrace), in which case the
+ * registers were already saved by the context-switch code when
+ * the task scheduled out - we only have to initialize the registers
+ * if they've never been initialized.
*
* If the task has used the FPU before then save it.
*/
-void fpu__activate_fpstate_read(struct fpu *fpu)
+void fpu__prepare_read(struct fpu *fpu)
{
- /*
- * If fpregs are active (in the current CPU), then
- * copy them to the fpstate:
- */
- if (fpu->fpregs_active) {
+ if (fpu == &current->thread.fpu) {
fpu__save(fpu);
} else {
- if (!fpu->fpstate_active) {
+ if (!fpu->initialized) {
fpstate_init(&fpu->state);
trace_x86_fpu_init_state(fpu);
trace_x86_fpu_activate_state(fpu);
/* Safe to do for current and for stopped child tasks: */
- fpu->fpstate_active = 1;
+ fpu->initialized = 1;
}
}
}
@@ -283,17 +273,17 @@ void fpu__activate_fpstate_read(struct fpu *fpu)
/*
* This function must be called before we write a task's fpstate.
*
- * If the task has used the FPU before then unlazy it.
+ * If the task has used the FPU before then invalidate any cached FPU registers.
* If the task has not used the FPU before then initialize its fpstate.
*
* After this function call, after registers in the fpstate are
* modified and the child task has woken up, the child task will
* restore the modified FPU state from the modified context. If we
- * didn't clear its lazy status here then the lazy in-registers
+ * didn't clear its cached status here then the cached in-registers
* state pending on its former CPU could be restored, corrupting
* the modifications.
*/
-void fpu__activate_fpstate_write(struct fpu *fpu)
+void fpu__prepare_write(struct fpu *fpu)
{
/*
* Only stopped child tasks can be used to modify the FPU
@@ -301,8 +291,8 @@ void fpu__activate_fpstate_write(struct fpu *fpu)
*/
WARN_ON_FPU(fpu == &current->thread.fpu);
- if (fpu->fpstate_active) {
- /* Invalidate any lazy state: */
+ if (fpu->initialized) {
+ /* Invalidate any cached state: */
__fpu_invalidate_fpregs_state(fpu);
} else {
fpstate_init(&fpu->state);
@@ -310,74 +300,11 @@ void fpu__activate_fpstate_write(struct fpu *fpu)
trace_x86_fpu_activate_state(fpu);
/* Safe to do for stopped child tasks: */
- fpu->fpstate_active = 1;
+ fpu->initialized = 1;
}
}
/*
- * This function must be called before we write the current
- * task's fpstate.
- *
- * This call gets the current FPU register state and moves
- * it in to the 'fpstate'. Preemption is disabled so that
- * no writes to the 'fpstate' can occur from context
- * swiches.
- *
- * Must be followed by a fpu__current_fpstate_write_end().
- */
-void fpu__current_fpstate_write_begin(void)
-{
- struct fpu *fpu = &current->thread.fpu;
-
- /*
- * Ensure that the context-switching code does not write
- * over the fpstate while we are doing our update.
- */
- preempt_disable();
-
- /*
- * Move the fpregs in to the fpu's 'fpstate'.
- */
- fpu__activate_fpstate_read(fpu);
-
- /*
- * The caller is about to write to 'fpu'. Ensure that no
- * CPU thinks that its fpregs match the fpstate. This
- * ensures we will not be lazy and skip a XRSTOR in the
- * future.
- */
- __fpu_invalidate_fpregs_state(fpu);
-}
-
-/*
- * This function must be paired with fpu__current_fpstate_write_begin()
- *
- * This will ensure that the modified fpstate gets placed back in
- * the fpregs if necessary.
- *
- * Note: This function may be called whether or not an _actual_
- * write to the fpstate occurred.
- */
-void fpu__current_fpstate_write_end(void)
-{
- struct fpu *fpu = &current->thread.fpu;
-
- /*
- * 'fpu' now has an updated copy of the state, but the
- * registers may still be out of date. Update them with
- * an XRSTOR if they are active.
- */
- if (fpregs_active())
- copy_kernel_to_fpregs(&fpu->state);
-
- /*
- * Our update is done and the fpregs/fpstate are in sync
- * if necessary. Context switches can happen again.
- */
- preempt_enable();
-}
-
-/*
* 'fpu__restore()' is called to copy FPU registers from
* the FPU fpstate to the live hw registers and to activate
* access to the hardware registers, so that FPU instructions
@@ -389,7 +316,7 @@ void fpu__current_fpstate_write_end(void)
*/
void fpu__restore(struct fpu *fpu)
{
- fpu__activate_curr(fpu);
+ fpu__initialize(fpu);
/* Avoid __kernel_fpu_begin() right after fpregs_activate() */
kernel_fpu_disable();
@@ -414,15 +341,17 @@ void fpu__drop(struct fpu *fpu)
{
preempt_disable();
- if (fpu->fpregs_active) {
- /* Ignore delayed exceptions from user space */
- asm volatile("1: fwait\n"
- "2:\n"
- _ASM_EXTABLE(1b, 2b));
- fpregs_deactivate(fpu);
+ if (fpu == &current->thread.fpu) {
+ if (fpu->initialized) {
+ /* Ignore delayed exceptions from user space */
+ asm volatile("1: fwait\n"
+ "2:\n"
+ _ASM_EXTABLE(1b, 2b));
+ fpregs_deactivate(fpu);
+ }
}
- fpu->fpstate_active = 0;
+ fpu->initialized = 0;
trace_x86_fpu_dropped(fpu);
@@ -462,9 +391,11 @@ void fpu__clear(struct fpu *fpu)
* Make sure fpstate is cleared and initialized.
*/
if (static_cpu_has(X86_FEATURE_FPU)) {
- fpu__activate_curr(fpu);
+ preempt_disable();
+ fpu__initialize(fpu);
user_fpu_begin();
copy_init_fpstate_to_fpregs();
+ preempt_enable();
}
}
diff --git a/arch/x86/kernel/fpu/init.c b/arch/x86/kernel/fpu/init.c
index d5d44c452624..7affb7e3d9a5 100644
--- a/arch/x86/kernel/fpu/init.c
+++ b/arch/x86/kernel/fpu/init.c
@@ -240,7 +240,7 @@ static void __init fpu__init_system_ctx_switch(void)
WARN_ON_FPU(!on_boot_cpu);
on_boot_cpu = 0;
- WARN_ON_FPU(current->thread.fpu.fpstate_active);
+ WARN_ON_FPU(current->thread.fpu.initialized);
}
/*
diff --git a/arch/x86/kernel/fpu/regset.c b/arch/x86/kernel/fpu/regset.c
index b188b16841e3..bc02f5144b95 100644
--- a/arch/x86/kernel/fpu/regset.c
+++ b/arch/x86/kernel/fpu/regset.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* FPU register's regset abstraction, for ptrace, core dumps, etc.
*/
@@ -16,14 +17,14 @@ int regset_fpregs_active(struct task_struct *target, const struct user_regset *r
{
struct fpu *target_fpu = &target->thread.fpu;
- return target_fpu->fpstate_active ? regset->n : 0;
+ return target_fpu->initialized ? regset->n : 0;
}
int regset_xregset_fpregs_active(struct task_struct *target, const struct user_regset *regset)
{
struct fpu *target_fpu = &target->thread.fpu;
- if (boot_cpu_has(X86_FEATURE_FXSR) && target_fpu->fpstate_active)
+ if (boot_cpu_has(X86_FEATURE_FXSR) && target_fpu->initialized)
return regset->n;
else
return 0;
@@ -38,7 +39,7 @@ int xfpregs_get(struct task_struct *target, const struct user_regset *regset,
if (!boot_cpu_has(X86_FEATURE_FXSR))
return -ENODEV;
- fpu__activate_fpstate_read(fpu);
+ fpu__prepare_read(fpu);
fpstate_sanitize_xstate(fpu);
return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
@@ -55,7 +56,7 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
if (!boot_cpu_has(X86_FEATURE_FXSR))
return -ENODEV;
- fpu__activate_fpstate_write(fpu);
+ fpu__prepare_write(fpu);
fpstate_sanitize_xstate(fpu);
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
@@ -89,10 +90,13 @@ int xstateregs_get(struct task_struct *target, const struct user_regset *regset,
xsave = &fpu->state.xsave;
- fpu__activate_fpstate_read(fpu);
+ fpu__prepare_read(fpu);
if (using_compacted_format()) {
- ret = copyout_from_xsaves(pos, count, kbuf, ubuf, xsave);
+ if (kbuf)
+ ret = copy_xstate_to_kernel(kbuf, xsave, pos, count);
+ else
+ ret = copy_xstate_to_user(ubuf, xsave, pos, count);
} else {
fpstate_sanitize_xstate(fpu);
/*
@@ -129,28 +133,29 @@ int xstateregs_set(struct task_struct *target, const struct user_regset *regset,
xsave = &fpu->state.xsave;
- fpu__activate_fpstate_write(fpu);
+ fpu__prepare_write(fpu);
- if (boot_cpu_has(X86_FEATURE_XSAVES))
- ret = copyin_to_xsaves(kbuf, ubuf, xsave);
- else
+ if (using_compacted_format()) {
+ if (kbuf)
+ ret = copy_kernel_to_xstate(xsave, kbuf);
+ else
+ ret = copy_user_to_xstate(xsave, ubuf);
+ } else {
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, xsave, 0, -1);
-
- /*
- * In case of failure, mark all states as init:
- */
- if (ret)
- fpstate_init(&fpu->state);
+ if (!ret)
+ ret = validate_xstate_header(&xsave->header);
+ }
/*
* mxcsr reserved bits must be masked to zero for security reasons.
*/
xsave->i387.mxcsr &= mxcsr_feature_mask;
- xsave->header.xfeatures &= xfeatures_mask;
+
/*
- * These bits must be zero.
+ * In case of failure, mark all states as init:
*/
- memset(&xsave->header.reserved, 0, 48);
+ if (ret)
+ fpstate_init(&fpu->state);
return ret;
}
@@ -299,7 +304,7 @@ int fpregs_get(struct task_struct *target, const struct user_regset *regset,
struct fpu *fpu = &target->thread.fpu;
struct user_i387_ia32_struct env;
- fpu__activate_fpstate_read(fpu);
+ fpu__prepare_read(fpu);
if (!boot_cpu_has(X86_FEATURE_FPU))
return fpregs_soft_get(target, regset, pos, count, kbuf, ubuf);
@@ -329,7 +334,7 @@ int fpregs_set(struct task_struct *target, const struct user_regset *regset,
struct user_i387_ia32_struct env;
int ret;
- fpu__activate_fpstate_write(fpu);
+ fpu__prepare_write(fpu);
fpstate_sanitize_xstate(fpu);
if (!boot_cpu_has(X86_FEATURE_FPU))
@@ -369,7 +374,7 @@ int dump_fpu(struct pt_regs *regs, struct user_i387_struct *ufpu)
struct fpu *fpu = &tsk->thread.fpu;
int fpvalid;
- fpvalid = fpu->fpstate_active;
+ fpvalid = fpu->initialized;
if (fpvalid)
fpvalid = !fpregs_get(tsk, NULL,
0, sizeof(struct user_i387_ia32_struct),
diff --git a/arch/x86/kernel/fpu/signal.c b/arch/x86/kernel/fpu/signal.c
index 83c23c230b4c..23f1691670b6 100644
--- a/arch/x86/kernel/fpu/signal.c
+++ b/arch/x86/kernel/fpu/signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* FPU signal frame handling routines.
*/
@@ -155,7 +156,8 @@ static inline int copy_fpregs_to_sigframe(struct xregs_state __user *buf)
*/
int copy_fpstate_to_sigframe(void __user *buf, void __user *buf_fx, int size)
{
- struct xregs_state *xsave = &current->thread.fpu.state.xsave;
+ struct fpu *fpu = &current->thread.fpu;
+ struct xregs_state *xsave = &fpu->state.xsave;
struct task_struct *tsk = current;
int ia32_fxstate = (buf != buf_fx);
@@ -170,13 +172,13 @@ int copy_fpstate_to_sigframe(void __user *buf, void __user *buf_fx, int size)
sizeof(struct user_i387_ia32_struct), NULL,
(struct _fpstate_32 __user *) buf) ? -1 : 1;
- if (fpregs_active() || using_compacted_format()) {
+ if (fpu->initialized || using_compacted_format()) {
/* Save the live register state to the user directly. */
if (copy_fpregs_to_sigframe(buf_fx))
return -1;
/* Update the thread's fxstate to save the fsave header. */
if (ia32_fxstate)
- copy_fxregs_to_kernel(&tsk->thread.fpu);
+ copy_fxregs_to_kernel(fpu);
} else {
/*
* It is a *bug* if kernel uses compacted-format for xsave
@@ -189,7 +191,7 @@ int copy_fpstate_to_sigframe(void __user *buf, void __user *buf_fx, int size)
return -1;
}
- fpstate_sanitize_xstate(&tsk->thread.fpu);
+ fpstate_sanitize_xstate(fpu);
if (__copy_to_user(buf_fx, xsave, fpu_user_xstate_size))
return -1;
}
@@ -213,8 +215,11 @@ sanitize_restored_xstate(struct task_struct *tsk,
struct xstate_header *header = &xsave->header;
if (use_xsave()) {
- /* These bits must be zero. */
- memset(header->reserved, 0, 48);
+ /*
+ * Note: we don't need to zero the reserved bits in the
+ * xstate_header here because we either didn't copy them at all,
+ * or we checked earlier that they aren't set.
+ */
/*
* Init the state that is not present in the memory
@@ -223,7 +228,7 @@ sanitize_restored_xstate(struct task_struct *tsk,
if (fx_only)
header->xfeatures = XFEATURE_MASK_FPSSE;
else
- header->xfeatures &= (xfeatures_mask & xfeatures);
+ header->xfeatures &= xfeatures;
}
if (use_fxsr()) {
@@ -279,7 +284,7 @@ static int __fpu__restore_sig(void __user *buf, void __user *buf_fx, int size)
if (!access_ok(VERIFY_READ, buf, size))
return -EACCES;
- fpu__activate_curr(fpu);
+ fpu__initialize(fpu);
if (!static_cpu_has(X86_FEATURE_FPU))
return fpregs_soft_set(current, NULL,
@@ -307,28 +312,29 @@ static int __fpu__restore_sig(void __user *buf, void __user *buf_fx, int size)
/*
* For 32-bit frames with fxstate, copy the user state to the
* thread's fpu state, reconstruct fxstate from the fsave
- * header. Sanitize the copied state etc.
+ * header. Validate and sanitize the copied state.
*/
struct fpu *fpu = &tsk->thread.fpu;
struct user_i387_ia32_struct env;
int err = 0;
/*
- * Drop the current fpu which clears fpu->fpstate_active. This ensures
+ * Drop the current fpu which clears fpu->initialized. This ensures
* that any context-switch during the copy of the new state,
* avoids the intermediate state from getting restored/saved.
* Thus avoiding the new restored state from getting corrupted.
* We will be ready to restore/save the state only after
- * fpu->fpstate_active is again set.
+ * fpu->initialized is again set.
*/
fpu__drop(fpu);
if (using_compacted_format()) {
- err = copyin_to_xsaves(NULL, buf_fx,
- &fpu->state.xsave);
+ err = copy_user_to_xstate(&fpu->state.xsave, buf_fx);
} else {
- err = __copy_from_user(&fpu->state.xsave,
- buf_fx, state_size);
+ err = __copy_from_user(&fpu->state.xsave, buf_fx, state_size);
+
+ if (!err && state_size > offsetof(struct xregs_state, header))
+ err = validate_xstate_header(&fpu->state.xsave.header);
}
if (err || __copy_from_user(&env, buf, sizeof(env))) {
@@ -339,7 +345,7 @@ static int __fpu__restore_sig(void __user *buf, void __user *buf_fx, int size)
sanitize_restored_xstate(tsk, &env, xfeatures, fx_only);
}
- fpu->fpstate_active = 1;
+ fpu->initialized = 1;
preempt_disable();
fpu__restore(fpu);
preempt_enable();
diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c
index c24ac1efb12d..f1d5476c9022 100644
--- a/arch/x86/kernel/fpu/xstate.c
+++ b/arch/x86/kernel/fpu/xstate.c
@@ -483,6 +483,30 @@ int using_compacted_format(void)
return boot_cpu_has(X86_FEATURE_XSAVES);
}
+/* Validate an xstate header supplied by userspace (ptrace or sigreturn) */
+int validate_xstate_header(const struct xstate_header *hdr)
+{
+ /* No unknown or supervisor features may be set */
+ if (hdr->xfeatures & (~xfeatures_mask | XFEATURE_MASK_SUPERVISOR))
+ return -EINVAL;
+
+ /* Userspace must use the uncompacted format */
+ if (hdr->xcomp_bv)
+ return -EINVAL;
+
+ /*
+ * If 'reserved' is shrunken to add a new field, make sure to validate
+ * that new field here!
+ */
+ BUILD_BUG_ON(sizeof(hdr->reserved) != 48);
+
+ /* No reserved bits may be set */
+ if (memchr_inv(hdr->reserved, 0, sizeof(hdr->reserved)))
+ return -EINVAL;
+
+ return 0;
+}
+
static void __xstate_dump_leaves(void)
{
int i;
@@ -867,7 +891,7 @@ const void *get_xsave_field_ptr(int xsave_state)
{
struct fpu *fpu = &current->thread.fpu;
- if (!fpu->fpstate_active)
+ if (!fpu->initialized)
return NULL;
/*
* fpu__save() takes the CPU's xstate registers
@@ -921,38 +945,129 @@ int arch_set_user_pkey_access(struct task_struct *tsk, int pkey,
#endif /* ! CONFIG_ARCH_HAS_PKEYS */
/*
+ * Weird legacy quirk: SSE and YMM states store information in the
+ * MXCSR and MXCSR_FLAGS fields of the FP area. That means if the FP
+ * area is marked as unused in the xfeatures header, we need to copy
+ * MXCSR and MXCSR_FLAGS if either SSE or YMM are in use.
+ */
+static inline bool xfeatures_mxcsr_quirk(u64 xfeatures)
+{
+ if (!(xfeatures & (XFEATURE_MASK_SSE|XFEATURE_MASK_YMM)))
+ return false;
+
+ if (xfeatures & XFEATURE_MASK_FP)
+ return false;
+
+ return true;
+}
+
+/*
* This is similar to user_regset_copyout(), but will not add offset to
* the source data pointer or increment pos, count, kbuf, and ubuf.
*/
-static inline int xstate_copyout(unsigned int pos, unsigned int count,
- void *kbuf, void __user *ubuf,
- const void *data, const int start_pos,
- const int end_pos)
+static inline void
+__copy_xstate_to_kernel(void *kbuf, const void *data,
+ unsigned int offset, unsigned int size, unsigned int size_total)
{
- if ((count == 0) || (pos < start_pos))
- return 0;
+ if (offset < size_total) {
+ unsigned int copy = min(size, size_total - offset);
- if (end_pos < 0 || pos < end_pos) {
- unsigned int copy = (end_pos < 0 ? count : min(count, end_pos - pos));
+ memcpy(kbuf + offset, data, copy);
+ }
+}
- if (kbuf) {
- memcpy(kbuf + pos, data, copy);
- } else {
- if (__copy_to_user(ubuf + pos, data, copy))
- return -EFAULT;
+/*
+ * Convert from kernel XSAVES compacted format to standard format and copy
+ * to a kernel-space ptrace buffer.
+ *
+ * It supports partial copy but pos always starts from zero. This is called
+ * from xstateregs_get() and there we check the CPU has XSAVES.
+ */
+int copy_xstate_to_kernel(void *kbuf, struct xregs_state *xsave, unsigned int offset_start, unsigned int size_total)
+{
+ unsigned int offset, size;
+ struct xstate_header header;
+ int i;
+
+ /*
+ * Currently copy_regset_to_user() starts from pos 0:
+ */
+ if (unlikely(offset_start != 0))
+ return -EFAULT;
+
+ /*
+ * The destination is a ptrace buffer; we put in only user xstates:
+ */
+ memset(&header, 0, sizeof(header));
+ header.xfeatures = xsave->header.xfeatures;
+ header.xfeatures &= ~XFEATURE_MASK_SUPERVISOR;
+
+ /*
+ * Copy xregs_state->header:
+ */
+ offset = offsetof(struct xregs_state, header);
+ size = sizeof(header);
+
+ __copy_xstate_to_kernel(kbuf, &header, offset, size, size_total);
+
+ for (i = 0; i < XFEATURE_MAX; i++) {
+ /*
+ * Copy only in-use xstates:
+ */
+ if ((header.xfeatures >> i) & 1) {
+ void *src = __raw_xsave_addr(xsave, 1 << i);
+
+ offset = xstate_offsets[i];
+ size = xstate_sizes[i];
+
+ /* The next component has to fit fully into the output buffer: */
+ if (offset + size > size_total)
+ break;
+
+ __copy_xstate_to_kernel(kbuf, src, offset, size, size_total);
}
+
+ }
+
+ if (xfeatures_mxcsr_quirk(header.xfeatures)) {
+ offset = offsetof(struct fxregs_state, mxcsr);
+ size = MXCSR_AND_FLAGS_SIZE;
+ __copy_xstate_to_kernel(kbuf, &xsave->i387.mxcsr, offset, size, size_total);
+ }
+
+ /*
+ * Fill xsave->i387.sw_reserved value for ptrace frame:
+ */
+ offset = offsetof(struct fxregs_state, sw_reserved);
+ size = sizeof(xstate_fx_sw_bytes);
+
+ __copy_xstate_to_kernel(kbuf, xstate_fx_sw_bytes, offset, size, size_total);
+
+ return 0;
+}
+
+static inline int
+__copy_xstate_to_user(void __user *ubuf, const void *data, unsigned int offset, unsigned int size, unsigned int size_total)
+{
+ if (!size)
+ return 0;
+
+ if (offset < size_total) {
+ unsigned int copy = min(size, size_total - offset);
+
+ if (__copy_to_user(ubuf + offset, data, copy))
+ return -EFAULT;
}
return 0;
}
/*
* Convert from kernel XSAVES compacted format to standard format and copy
- * to a ptrace buffer. It supports partial copy but pos always starts from
+ * to a user-space buffer. It supports partial copy but pos always starts from
* zero. This is called from xstateregs_get() and there we check the CPU
* has XSAVES.
*/
-int copyout_from_xsaves(unsigned int pos, unsigned int count, void *kbuf,
- void __user *ubuf, struct xregs_state *xsave)
+int copy_xstate_to_user(void __user *ubuf, struct xregs_state *xsave, unsigned int offset_start, unsigned int size_total)
{
unsigned int offset, size;
int ret, i;
@@ -961,7 +1076,7 @@ int copyout_from_xsaves(unsigned int pos, unsigned int count, void *kbuf,
/*
* Currently copy_regset_to_user() starts from pos 0:
*/
- if (unlikely(pos != 0))
+ if (unlikely(offset_start != 0))
return -EFAULT;
/*
@@ -977,8 +1092,7 @@ int copyout_from_xsaves(unsigned int pos, unsigned int count, void *kbuf,
offset = offsetof(struct xregs_state, header);
size = sizeof(header);
- ret = xstate_copyout(offset, size, kbuf, ubuf, &header, 0, count);
-
+ ret = __copy_xstate_to_user(ubuf, &header, offset, size, size_total);
if (ret)
return ret;
@@ -992,25 +1106,30 @@ int copyout_from_xsaves(unsigned int pos, unsigned int count, void *kbuf,
offset = xstate_offsets[i];
size = xstate_sizes[i];
- ret = xstate_copyout(offset, size, kbuf, ubuf, src, 0, count);
+ /* The next component has to fit fully into the output buffer: */
+ if (offset + size > size_total)
+ break;
+ ret = __copy_xstate_to_user(ubuf, src, offset, size, size_total);
if (ret)
return ret;
-
- if (offset + size >= count)
- break;
}
}
+ if (xfeatures_mxcsr_quirk(header.xfeatures)) {
+ offset = offsetof(struct fxregs_state, mxcsr);
+ size = MXCSR_AND_FLAGS_SIZE;
+ __copy_xstate_to_user(ubuf, &xsave->i387.mxcsr, offset, size, size_total);
+ }
+
/*
* Fill xsave->i387.sw_reserved value for ptrace frame:
*/
offset = offsetof(struct fxregs_state, sw_reserved);
size = sizeof(xstate_fx_sw_bytes);
- ret = xstate_copyout(offset, size, kbuf, ubuf, xstate_fx_sw_bytes, 0, count);
-
+ ret = __copy_xstate_to_user(ubuf, xstate_fx_sw_bytes, offset, size, size_total);
if (ret)
return ret;
@@ -1018,55 +1137,98 @@ int copyout_from_xsaves(unsigned int pos, unsigned int count, void *kbuf,
}
/*
- * Convert from a ptrace standard-format buffer to kernel XSAVES format
- * and copy to the target thread. This is called from xstateregs_set() and
- * there we check the CPU has XSAVES and a whole standard-sized buffer
- * exists.
+ * Convert from a ptrace standard-format kernel buffer to kernel XSAVES format
+ * and copy to the target thread. This is called from xstateregs_set().
*/
-int copyin_to_xsaves(const void *kbuf, const void __user *ubuf,
- struct xregs_state *xsave)
+int copy_kernel_to_xstate(struct xregs_state *xsave, const void *kbuf)
{
unsigned int offset, size;
int i;
- u64 xfeatures;
- u64 allowed_features;
+ struct xstate_header hdr;
offset = offsetof(struct xregs_state, header);
- size = sizeof(xfeatures);
+ size = sizeof(hdr);
- if (kbuf) {
- memcpy(&xfeatures, kbuf + offset, size);
- } else {
- if (__copy_from_user(&xfeatures, ubuf + offset, size))
- return -EFAULT;
+ memcpy(&hdr, kbuf + offset, size);
+
+ if (validate_xstate_header(&hdr))
+ return -EINVAL;
+
+ for (i = 0; i < XFEATURE_MAX; i++) {
+ u64 mask = ((u64)1 << i);
+
+ if (hdr.xfeatures & mask) {
+ void *dst = __raw_xsave_addr(xsave, 1 << i);
+
+ offset = xstate_offsets[i];
+ size = xstate_sizes[i];
+
+ memcpy(dst, kbuf + offset, size);
+ }
+ }
+
+ if (xfeatures_mxcsr_quirk(hdr.xfeatures)) {
+ offset = offsetof(struct fxregs_state, mxcsr);
+ size = MXCSR_AND_FLAGS_SIZE;
+ memcpy(&xsave->i387.mxcsr, kbuf + offset, size);
}
/*
- * Reject if the user sets any disabled or supervisor features:
+ * The state that came in from userspace was user-state only.
+ * Mask all the user states out of 'xfeatures':
+ */
+ xsave->header.xfeatures &= XFEATURE_MASK_SUPERVISOR;
+
+ /*
+ * Add back in the features that came in from userspace:
*/
- allowed_features = xfeatures_mask & ~XFEATURE_MASK_SUPERVISOR;
+ xsave->header.xfeatures |= hdr.xfeatures;
- if (xfeatures & ~allowed_features)
+ return 0;
+}
+
+/*
+ * Convert from a ptrace or sigreturn standard-format user-space buffer to
+ * kernel XSAVES format and copy to the target thread. This is called from
+ * xstateregs_set(), as well as potentially from the sigreturn() and
+ * rt_sigreturn() system calls.
+ */
+int copy_user_to_xstate(struct xregs_state *xsave, const void __user *ubuf)
+{
+ unsigned int offset, size;
+ int i;
+ struct xstate_header hdr;
+
+ offset = offsetof(struct xregs_state, header);
+ size = sizeof(hdr);
+
+ if (__copy_from_user(&hdr, ubuf + offset, size))
+ return -EFAULT;
+
+ if (validate_xstate_header(&hdr))
return -EINVAL;
for (i = 0; i < XFEATURE_MAX; i++) {
u64 mask = ((u64)1 << i);
- if (xfeatures & mask) {
+ if (hdr.xfeatures & mask) {
void *dst = __raw_xsave_addr(xsave, 1 << i);
offset = xstate_offsets[i];
size = xstate_sizes[i];
- if (kbuf) {
- memcpy(dst, kbuf + offset, size);
- } else {
- if (__copy_from_user(dst, ubuf + offset, size))
- return -EFAULT;
- }
+ if (__copy_from_user(dst, ubuf + offset, size))
+ return -EFAULT;
}
}
+ if (xfeatures_mxcsr_quirk(hdr.xfeatures)) {
+ offset = offsetof(struct fxregs_state, mxcsr);
+ size = MXCSR_AND_FLAGS_SIZE;
+ if (__copy_from_user(&xsave->i387.mxcsr, ubuf + offset, size))
+ return -EFAULT;
+ }
+
/*
* The state that came in from userspace was user-state only.
* Mask all the user states out of 'xfeatures':
@@ -1076,7 +1238,7 @@ int copyin_to_xsaves(const void *kbuf, const void __user *ubuf,
/*
* Add back in the features that came in from userspace:
*/
- xsave->header.xfeatures |= xfeatures;
+ xsave->header.xfeatures |= hdr.xfeatures;
return 0;
}
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
index 9bef1bbeba63..01ebcb6f263e 100644
--- a/arch/x86/kernel/ftrace.c
+++ b/arch/x86/kernel/ftrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Dynamic function tracing support.
*
diff --git a/arch/x86/kernel/ftrace_32.S b/arch/x86/kernel/ftrace_32.S
index 722a145b4139..b6c6468e10bc 100644
--- a/arch/x86/kernel/ftrace_32.S
+++ b/arch/x86/kernel/ftrace_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2017 Steven Rostedt, VMware Inc.
*/
diff --git a/arch/x86/kernel/ftrace_64.S b/arch/x86/kernel/ftrace_64.S
index 1dfac634bbf7..c832291d948a 100644
--- a/arch/x86/kernel/ftrace_64.S
+++ b/arch/x86/kernel/ftrace_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2014 Steven Rostedt, Red Hat Inc
*/
diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c
index cf2ce063f65a..ec6fefbfd3c0 100644
--- a/arch/x86/kernel/head32.c
+++ b/arch/x86/kernel/head32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/i386/kernel/head32.c -- prepare to run common code
*
@@ -30,10 +31,11 @@ static void __init i386_default_early_setup(void)
asmlinkage __visible void __init i386_start_kernel(void)
{
- cr4_init_shadow();
-
+ /* Make sure IDT is set up before any exception happens */
idt_setup_early_handler();
+ cr4_init_shadow();
+
sanitize_boot_params(&boot_params);
x86_early_init_platform_quirks();
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index bab4fa579450..6a5d757b9cfd 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* prepare to run common code
*
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
index 9ed3074d0d27..f1d528bb66a6 100644
--- a/arch/x86/kernel/head_32.S
+++ b/arch/x86/kernel/head_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Copyright (C) 1991, 1992 Linus Torvalds
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
index 513cbb012ecc..6dde3f3fc1f8 100644
--- a/arch/x86/kernel/head_64.S
+++ b/arch/x86/kernel/head_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/arch/x86/kernel/head_64.S -- start in 32bit and switch to 64bit
*
diff --git a/arch/x86/kernel/i8253.c b/arch/x86/kernel/i8253.c
index 6ebe00cb4a3b..0d307a657abb 100644
--- a/arch/x86/kernel/i8253.c
+++ b/arch/x86/kernel/i8253.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* 8253/PIT functions
*
diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c
index 4e3b8a587c88..8f5cb2c7060c 100644
--- a/arch/x86/kernel/i8259.c
+++ b/arch/x86/kernel/i8259.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/linkage.h>
#include <linux/errno.h>
#include <linux/signal.h>
diff --git a/arch/x86/kernel/io_delay.c b/arch/x86/kernel/io_delay.c
index 50c89e8a95f2..805b7a341aca 100644
--- a/arch/x86/kernel/io_delay.c
+++ b/arch/x86/kernel/io_delay.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* I/O delay strategies for inb_p/outb_p
*
@@ -58,7 +59,7 @@ static int __init dmi_io_delay_0xed_port(const struct dmi_system_id *id)
* Quirk table for systems that misbehave (lock up, etc.) if port
* 0x80 is used:
*/
-static struct dmi_system_id __initdata io_delay_0xed_port_dmi_table[] = {
+static const struct dmi_system_id io_delay_0xed_port_dmi_table[] __initconst = {
{
.callback = dmi_io_delay_0xed_port,
.ident = "Compaq Presario V6000",
diff --git a/arch/x86/kernel/ioport.c b/arch/x86/kernel/ioport.c
index 9c3cf0944bce..3feb648781c4 100644
--- a/arch/x86/kernel/ioport.c
+++ b/arch/x86/kernel/ioport.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This contains the io-permission bitmap code - written by obz, with changes
* by Linus. 32/64 bits code unification by Miguel Botón.
diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c
index 1f38d9a4d9de..a83b3346a0e1 100644
--- a/arch/x86/kernel/irq_32.c
+++ b/arch/x86/kernel/irq_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar
*
@@ -64,7 +65,7 @@ static void call_on_stack(void *func, void *stack)
static inline void *current_stack(void)
{
- return (void *)(current_stack_pointer() & ~(THREAD_SIZE - 1));
+ return (void *)(current_stack_pointer & ~(THREAD_SIZE - 1));
}
static inline int execute_on_irq_stack(int overflow, struct irq_desc *desc)
@@ -88,7 +89,7 @@ static inline int execute_on_irq_stack(int overflow, struct irq_desc *desc)
/* Save the next esp at the bottom of the stack */
prev_esp = (u32 *)irqstk;
- *prev_esp = current_stack_pointer();
+ *prev_esp = current_stack_pointer;
if (unlikely(overflow))
call_on_stack(print_stack_overflow, isp);
@@ -139,7 +140,7 @@ void do_softirq_own_stack(void)
/* Push the previous esp onto the stack */
prev_esp = (u32 *)irqstk;
- *prev_esp = current_stack_pointer();
+ *prev_esp = current_stack_pointer;
call_on_stack(__do_softirq, isp);
}
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
index 3be74fbdeff2..020efbf5786b 100644
--- a/arch/x86/kernel/irq_64.c
+++ b/arch/x86/kernel/irq_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar
*
diff --git a/arch/x86/kernel/irq_work.c b/arch/x86/kernel/irq_work.c
index 70dee056f92b..80bee7695a20 100644
--- a/arch/x86/kernel/irq_work.c
+++ b/arch/x86/kernel/irq_work.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* x86 specific code for irq_work
*
diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c
index 1add9e08e83e..1e4094eba15e 100644
--- a/arch/x86/kernel/irqinit.c
+++ b/arch/x86/kernel/irqinit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/linkage.h>
#include <linux/errno.h>
#include <linux/signal.h>
diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c
index ab4f491da2a9..e56c95be2808 100644
--- a/arch/x86/kernel/jump_label.c
+++ b/arch/x86/kernel/jump_label.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* jump label x86 support
*
diff --git a/arch/x86/kernel/kprobes/common.h b/arch/x86/kernel/kprobes/common.h
index db2182d63ed0..615105cf7d58 100644
--- a/arch/x86/kernel/kprobes/common.h
+++ b/arch/x86/kernel/kprobes/common.h
@@ -1,8 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __X86_KERNEL_KPROBES_COMMON_H
#define __X86_KERNEL_KPROBES_COMMON_H
/* Kprobes and Optprobes common header */
+#include <asm/asm.h>
+
+#ifdef CONFIG_FRAME_POINTER
+# define SAVE_RBP_STRING " push %" _ASM_BP "\n" \
+ " mov %" _ASM_SP ", %" _ASM_BP "\n"
+#else
+# define SAVE_RBP_STRING " push %" _ASM_BP "\n"
+#endif
+
#ifdef CONFIG_X86_64
#define SAVE_REGS_STRING \
/* Skip cs, ip, orig_ax. */ \
@@ -17,7 +27,7 @@
" pushq %r10\n" \
" pushq %r11\n" \
" pushq %rbx\n" \
- " pushq %rbp\n" \
+ SAVE_RBP_STRING \
" pushq %r12\n" \
" pushq %r13\n" \
" pushq %r14\n" \
@@ -48,7 +58,7 @@
" pushl %es\n" \
" pushl %ds\n" \
" pushl %eax\n" \
- " pushl %ebp\n" \
+ SAVE_RBP_STRING \
" pushl %edi\n" \
" pushl %esi\n" \
" pushl %edx\n" \
diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
index f0153714ddac..0742491cbb73 100644
--- a/arch/x86/kernel/kprobes/core.c
+++ b/arch/x86/kernel/kprobes/core.c
@@ -1080,8 +1080,6 @@ int setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs)
* raw stack chunk with redzones:
*/
__memcpy(kcb->jprobes_stack, (kprobe_opcode_t *)addr, MIN_STACK_SIZE(addr));
- regs->flags &= ~X86_EFLAGS_IF;
- trace_hardirqs_off();
regs->ip = (unsigned long)(jp->entry);
/*
diff --git a/arch/x86/kernel/ksysfs.c b/arch/x86/kernel/ksysfs.c
index 4b0592ca9e47..8c1cc08f514f 100644
--- a/arch/x86/kernel/ksysfs.c
+++ b/arch/x86/kernel/ksysfs.c
@@ -299,7 +299,7 @@ static int __init create_setup_data_nodes(struct kobject *parent)
return 0;
out_clean_nodes:
- for (j = i - 1; j > 0; j--)
+ for (j = i - 1; j >= 0; j--)
cleanup_setup_data_node(*(kobjp + j));
kfree(kobjp);
out_setup_data_kobj:
diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
index 874827b0d7ca..8bb9594d0761 100644
--- a/arch/x86/kernel/kvm.c
+++ b/arch/x86/kernel/kvm.c
@@ -117,7 +117,11 @@ static struct kvm_task_sleep_node *_find_apf_task(struct kvm_task_sleep_head *b,
return NULL;
}
-void kvm_async_pf_task_wait(u32 token)
+/*
+ * @interrupt_kernel: Is this called from a routine which interrupts the kernel
+ * (other than user space)?
+ */
+void kvm_async_pf_task_wait(u32 token, int interrupt_kernel)
{
u32 key = hash_32(token, KVM_TASK_SLEEP_HASHBITS);
struct kvm_task_sleep_head *b = &async_pf_sleepers[key];
@@ -140,7 +144,10 @@ void kvm_async_pf_task_wait(u32 token)
n.token = token;
n.cpu = smp_processor_id();
- n.halted = is_idle_task(current) || preempt_count() > 1;
+ n.halted = is_idle_task(current) ||
+ (IS_ENABLED(CONFIG_PREEMPT_COUNT)
+ ? preempt_count() > 1 || rcu_preempt_depth()
+ : interrupt_kernel);
init_swait_queue_head(&n.wq);
hlist_add_head(&n.link, &b->list);
raw_spin_unlock(&b->lock);
@@ -180,7 +187,7 @@ static void apf_task_wake_one(struct kvm_task_sleep_node *n)
hlist_del_init(&n->link);
if (n->halted)
smp_send_reschedule(n->cpu);
- else if (swait_active(&n->wq))
+ else if (swq_has_sleeper(&n->wq))
swake_up(&n->wq);
}
@@ -268,7 +275,7 @@ do_async_page_fault(struct pt_regs *regs, unsigned long error_code)
case KVM_PV_REASON_PAGE_NOT_PRESENT:
/* page is swapped out by the host. */
prev_state = exception_enter();
- kvm_async_pf_task_wait((u32)read_cr2());
+ kvm_async_pf_task_wait((u32)read_cr2(), !user_mode(regs));
exception_exit(prev_state);
break;
case KVM_PV_REASON_PAGE_READY:
diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
index f0e64db18ac8..4d17bacf4030 100644
--- a/arch/x86/kernel/ldt.c
+++ b/arch/x86/kernel/ldt.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1992 Krishna Balasubramanian and Linus Torvalds
* Copyright (C) 1999 Ingo Molnar <mingo@redhat.com>
diff --git a/arch/x86/kernel/mmconf-fam10h_64.c b/arch/x86/kernel/mmconf-fam10h_64.c
index f4c886d9165c..b5cb49e57df8 100644
--- a/arch/x86/kernel/mmconf-fam10h_64.c
+++ b/arch/x86/kernel/mmconf-fam10h_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* AMD Family 10h mmconfig enablement
*/
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c
index 5cbb3177ed17..410c5dadcee3 100644
--- a/arch/x86/kernel/mpparse.c
+++ b/arch/x86/kernel/mpparse.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Intel Multiprocessor Specification 1.1 and 1.4
* compliant MP-table parsing routines.
diff --git a/arch/x86/kernel/nmi_selftest.c b/arch/x86/kernel/nmi_selftest.c
index d27f8d84c4ff..a1a96df3dff1 100644
--- a/arch/x86/kernel/nmi_selftest.c
+++ b/arch/x86/kernel/nmi_selftest.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/x86/kernel/nmi-selftest.c
*
diff --git a/arch/x86/kernel/paravirt-spinlocks.c b/arch/x86/kernel/paravirt-spinlocks.c
index 8f2d1c9d43a8..71f2d1125ec0 100644
--- a/arch/x86/kernel/paravirt-spinlocks.c
+++ b/arch/x86/kernel/paravirt-spinlocks.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Split spinlock implementation out into its own file, so it can be
* compiled in a FTRACE-compatible way.
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index a14df9eecfed..19a3e8f961c7 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -327,7 +327,6 @@ __visible struct pv_cpu_ops pv_cpu_ops = {
.set_debugreg = native_set_debugreg,
.read_cr0 = native_read_cr0,
.write_cr0 = native_write_cr0,
- .read_cr4 = native_read_cr4,
.write_cr4 = native_write_cr4,
#ifdef CONFIG_X86_64
.read_cr8 = native_read_cr8,
@@ -343,7 +342,6 @@ __visible struct pv_cpu_ops pv_cpu_ops = {
.set_ldt = native_set_ldt,
.load_gdt = native_load_gdt,
.load_idt = native_load_idt,
- .store_idt = native_store_idt,
.store_tr = native_store_tr,
.load_tls = native_load_tls,
#ifdef CONFIG_X86_64
@@ -411,8 +409,6 @@ struct pv_mmu_ops pv_mmu_ops __ro_after_init = {
.set_pte = native_set_pte,
.set_pte_at = native_set_pte_at,
.set_pmd = native_set_pmd,
- .set_pmd_at = native_set_pmd_at,
- .pte_update = paravirt_nop,
.ptep_modify_prot_start = __ptep_modify_prot_start,
.ptep_modify_prot_commit = __ptep_modify_prot_commit,
@@ -424,7 +420,6 @@ struct pv_mmu_ops pv_mmu_ops __ro_after_init = {
.pmd_clear = native_pmd_clear,
#endif
.set_pud = native_set_pud,
- .set_pud_at = native_set_pud_at,
.pmd_val = PTE_IDENT,
.make_pmd = PTE_IDENT,
diff --git a/arch/x86/kernel/paravirt_patch_32.c b/arch/x86/kernel/paravirt_patch_32.c
index 553acbbb4d32..758e69d72ebf 100644
--- a/arch/x86/kernel/paravirt_patch_32.c
+++ b/arch/x86/kernel/paravirt_patch_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/paravirt.h>
DEF_NATIVE(pv_irq_ops, irq_disable, "cli");
diff --git a/arch/x86/kernel/paravirt_patch_64.c b/arch/x86/kernel/paravirt_patch_64.c
index 11aaf1eaa0e4..ac0be8283325 100644
--- a/arch/x86/kernel/paravirt_patch_64.c
+++ b/arch/x86/kernel/paravirt_patch_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/paravirt.h>
#include <asm/asm-offsets.h>
#include <linux/stringify.h>
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index 0accc2404b92..599d7462eccc 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/dma-mapping.h>
#include <linux/dma-debug.h>
#include <linux/dmar.h>
diff --git a/arch/x86/kernel/pci-iommu_table.c b/arch/x86/kernel/pci-iommu_table.c
index f712dfdf1357..4dfd90a75e63 100644
--- a/arch/x86/kernel/pci-iommu_table.c
+++ b/arch/x86/kernel/pci-iommu_table.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/dma-mapping.h>
#include <asm/iommu_table.h>
#include <linux/string.h>
diff --git a/arch/x86/kernel/pci-nommu.c b/arch/x86/kernel/pci-nommu.c
index 4fc3cb60ea11..b0caae27e1b7 100644
--- a/arch/x86/kernel/pci-nommu.c
+++ b/arch/x86/kernel/pci-nommu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Fallback functions when the main IOMMU code is not compiled in. This
code is roughly equivalent to i386. */
#include <linux/dma-mapping.h>
diff --git a/arch/x86/kernel/pci-swiotlb.c b/arch/x86/kernel/pci-swiotlb.c
index 677077510e30..53bd05ea90d8 100644
--- a/arch/x86/kernel/pci-swiotlb.c
+++ b/arch/x86/kernel/pci-swiotlb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Glue code to lib/swiotlb.c */
#include <linux/pci.h>
diff --git a/arch/x86/kernel/pcspeaker.c b/arch/x86/kernel/pcspeaker.c
index a311ffcaad16..da5190a1ea16 100644
--- a/arch/x86/kernel/pcspeaker.c
+++ b/arch/x86/kernel/pcspeaker.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/platform_device.h>
#include <linux/err.h>
#include <linux/init.h>
diff --git a/arch/x86/kernel/perf_regs.c b/arch/x86/kernel/perf_regs.c
index 587d887f7f17..e47b2dbbdef3 100644
--- a/arch/x86/kernel/perf_regs.c
+++ b/arch/x86/kernel/perf_regs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/sched.h>
diff --git a/arch/x86/kernel/platform-quirks.c b/arch/x86/kernel/platform-quirks.c
index 502a77d0adb0..39a59299bfa0 100644
--- a/arch/x86/kernel/platform-quirks.c
+++ b/arch/x86/kernel/platform-quirks.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/init.h>
diff --git a/arch/x86/kernel/pmem.c b/arch/x86/kernel/pmem.c
index 0c5315d322c8..3fe690067802 100644
--- a/arch/x86/kernel/pmem.c
+++ b/arch/x86/kernel/pmem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2015, Christoph Hellwig.
* Copyright (c) 2015, Intel Corporation.
diff --git a/arch/x86/kernel/probe_roms.c b/arch/x86/kernel/probe_roms.c
index 963e3fb56437..ee0286390a4c 100644
--- a/arch/x86/kernel/probe_roms.c
+++ b/arch/x86/kernel/probe_roms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/uaccess.h>
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index bd6b85fac666..c67685337c5a 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/errno.h>
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index eaa591cfd98b..697a4ce04308 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file contains work-arounds for x86 and x86_64 platform bugs.
*/
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 54984b142641..2126b9d27c34 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/export.h>
@@ -105,6 +106,10 @@ void __noreturn machine_real_restart(unsigned int type)
load_cr3(initial_page_table);
#else
write_cr3(real_mode_header->trampoline_pgd);
+
+ /* Exiting long mode will fail if CR4.PCIDE is set. */
+ if (static_cpu_has(X86_FEATURE_PCID))
+ cr4_clear_bits(X86_CR4_PCIDE);
#endif
/* Jump to the identity-mapped low memory code */
@@ -150,7 +155,7 @@ static int __init set_kbd_reboot(const struct dmi_system_id *d)
/*
* This is a single dmi_table handling all reboot quirks.
*/
-static struct dmi_system_id __initdata reboot_dmi_table[] = {
+static const struct dmi_system_id reboot_dmi_table[] __initconst = {
/* Acer */
{ /* Handle reboot issue on Acer Aspire one */
diff --git a/arch/x86/kernel/reboot_fixups_32.c b/arch/x86/kernel/reboot_fixups_32.c
index c8e41e90f59c..b7c0f142d026 100644
--- a/arch/x86/kernel/reboot_fixups_32.c
+++ b/arch/x86/kernel/reboot_fixups_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This is a good place to put board specific reboot fixups.
*
diff --git a/arch/x86/kernel/resource.c b/arch/x86/kernel/resource.c
index 5ab3895516ac..9b9fb7882c20 100644
--- a/arch/x86/kernel/resource.c
+++ b/arch/x86/kernel/resource.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ioport.h>
#include <asm/e820/api.h>
diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c
index 5b21cb7d84d6..69ac9cb9cac6 100644
--- a/arch/x86/kernel/rtc.c
+++ b/arch/x86/kernel/rtc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* RTC related functions
*/
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index d84afb0a322d..0957dd73d127 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1178,8 +1178,11 @@ void __init setup_arch(char **cmdline_p)
* with the current CR4 value. This may not be necessary, but
* auditing all the early-boot CR4 manipulation would be needed to
* rule it out.
+ *
+ * Mask off features that don't work outside long mode (just
+ * PCIDE for now).
*/
- mmu_cr4_features = __read_cr4();
+ mmu_cr4_features = __read_cr4() & ~X86_CR4_PCIDE;
memblock_set_current_limit(get_max_mapped());
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c
index 28dafed6c682..497aa766fab3 100644
--- a/arch/x86/kernel/setup_percpu.c
+++ b/arch/x86/kernel/setup_percpu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
index e04442345fc0..b9e00e8f1c9b 100644
--- a/arch/x86/kernel/signal.c
+++ b/arch/x86/kernel/signal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 2000, 2001, 2002 Andi Kleen SuSE Labs
@@ -263,7 +264,7 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size,
sp = (unsigned long) ka->sa.sa_restorer;
}
- if (fpu->fpstate_active) {
+ if (fpu->initialized) {
sp = fpu__alloc_mathframe(sp, IS_ENABLED(CONFIG_X86_32),
&buf_fx, &math_size);
*fpstate = (void __user *)sp;
@@ -279,7 +280,7 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size,
return (void __user *)-1L;
/* save i387 and extended state */
- if (fpu->fpstate_active &&
+ if (fpu->initialized &&
copy_fpstate_to_sigframe(*fpstate, (void __user *)buf_fx, math_size) < 0)
return (void __user *)-1L;
@@ -755,7 +756,7 @@ handle_signal(struct ksignal *ksig, struct pt_regs *regs)
/*
* Ensure the signal handler starts with the new fpu state.
*/
- if (fpu->fpstate_active)
+ if (fpu->initialized)
fpu__clear(fpu);
}
signal_setup_done(failed, ksig, stepping);
diff --git a/arch/x86/kernel/signal_compat.c b/arch/x86/kernel/signal_compat.c
index ab9feb5887b1..8c6da1a643da 100644
--- a/arch/x86/kernel/signal_compat.c
+++ b/arch/x86/kernel/signal_compat.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/compat.h>
#include <linux/uaccess.h>
#include <linux/ptrace.h>
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index cd6622c3204e..ad59edd84de7 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -226,16 +226,12 @@ static int enable_start_cpu0;
static void notrace start_secondary(void *unused)
{
/*
- * Don't put *anything* before cpu_init(), SMP booting is too
- * fragile that we want to limit the things done here to the
- * most necessary things.
+ * Don't put *anything* except direct CPU state initialization
+ * before cpu_init(), SMP booting is too fragile that we want to
+ * limit the things done here to the most necessary things.
*/
- cpu_init();
- x86_cpuinit.early_percpu_clock_init();
- preempt_disable();
- smp_callin();
-
- enable_start_cpu0 = 0;
+ if (boot_cpu_has(X86_FEATURE_PCID))
+ __write_cr4(__read_cr4() | X86_CR4_PCIDE);
#ifdef CONFIG_X86_32
/* switch away from the initial page table */
@@ -243,6 +239,13 @@ static void notrace start_secondary(void *unused)
__flush_tlb_all();
#endif
+ cpu_init();
+ x86_cpuinit.early_percpu_clock_init();
+ preempt_disable();
+ smp_callin();
+
+ enable_start_cpu0 = 0;
+
/* otherwise gcc will move up smp_processor_id before the cpu_init */
barrier();
/*
diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c
index 5ee663836c08..60d2c3798ba2 100644
--- a/arch/x86/kernel/step.c
+++ b/arch/x86/kernel/step.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* x86 single-step support code, common to 32-bit and 64-bit.
*/
diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c
index 73e4d28112f8..a63fe77b3217 100644
--- a/arch/x86/kernel/sys_x86_64.c
+++ b/arch/x86/kernel/sys_x86_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/sched/mm.h>
diff --git a/arch/x86/kernel/time.c b/arch/x86/kernel/time.c
index e0754cdbad37..879af864d99a 100644
--- a/arch/x86/kernel/time.c
+++ b/arch/x86/kernel/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 1991,1992,1995 Linus Torvalds
* Copyright (c) 1994 Alan Modra
diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c
index a106b9719c58..9a9c9b076955 100644
--- a/arch/x86/kernel/tls.c
+++ b/arch/x86/kernel/tls.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/sched.h>
diff --git a/arch/x86/kernel/trace_clock.c b/arch/x86/kernel/trace_clock.c
index 80bb24d9b880..b8e7abe00b06 100644
--- a/arch/x86/kernel/trace_clock.c
+++ b/arch/x86/kernel/trace_clock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* X86 trace clocks
*/
diff --git a/arch/x86/kernel/tracepoint.c b/arch/x86/kernel/tracepoint.c
index c6636d1f60b9..5bd30c442794 100644
--- a/arch/x86/kernel/tracepoint.c
+++ b/arch/x86/kernel/tracepoint.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Code for supporting irq vector tracepoints.
*
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 34ea3651362e..67db4f43309e 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -142,7 +142,7 @@ void ist_begin_non_atomic(struct pt_regs *regs)
* from double_fault.
*/
BUG_ON((unsigned long)(current_top_of_stack() -
- current_stack_pointer()) >= THREAD_SIZE);
+ current_stack_pointer) >= THREAD_SIZE);
preempt_enable_no_resched();
}
diff --git a/arch/x86/kernel/tsc_sync.c b/arch/x86/kernel/tsc_sync.c
index 7842371bc9e4..e76a9881306b 100644
--- a/arch/x86/kernel/tsc_sync.c
+++ b/arch/x86/kernel/tsc_sync.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* check TSC synchronization.
*
diff --git a/arch/x86/kernel/unwind_frame.c b/arch/x86/kernel/unwind_frame.c
index d145a0b1f529..3dc26f95d46e 100644
--- a/arch/x86/kernel/unwind_frame.c
+++ b/arch/x86/kernel/unwind_frame.c
@@ -44,7 +44,8 @@ static void unwind_dump(struct unwind_state *state)
state->stack_info.type, state->stack_info.next_sp,
state->stack_mask, state->graph_idx);
- for (sp = state->orig_sp; sp; sp = PTR_ALIGN(stack_info.next_sp, sizeof(long))) {
+ for (sp = PTR_ALIGN(state->orig_sp, sizeof(long)); sp;
+ sp = PTR_ALIGN(stack_info.next_sp, sizeof(long))) {
if (get_stack_info(sp, state->task, &stack_info, &visit_mask))
break;
@@ -174,6 +175,7 @@ static bool is_last_task_frame(struct unwind_state *state)
* This determines if the frame pointer actually contains an encoded pointer to
* pt_regs on the stack. See ENCODE_FRAME_POINTER.
*/
+#ifdef CONFIG_X86_64
static struct pt_regs *decode_frame_pointer(unsigned long *bp)
{
unsigned long regs = (unsigned long)bp;
@@ -183,6 +185,23 @@ static struct pt_regs *decode_frame_pointer(unsigned long *bp)
return (struct pt_regs *)(regs & ~0x1);
}
+#else
+static struct pt_regs *decode_frame_pointer(unsigned long *bp)
+{
+ unsigned long regs = (unsigned long)bp;
+
+ if (regs & 0x80000000)
+ return NULL;
+
+ return (struct pt_regs *)(regs | 0x80000000);
+}
+#endif
+
+#ifdef CONFIG_X86_32
+#define KERNEL_REGS_SIZE (sizeof(struct pt_regs) - 2*sizeof(long))
+#else
+#define KERNEL_REGS_SIZE (sizeof(struct pt_regs))
+#endif
static bool update_stack_state(struct unwind_state *state,
unsigned long *next_bp)
@@ -202,7 +221,7 @@ static bool update_stack_state(struct unwind_state *state,
regs = decode_frame_pointer(next_bp);
if (regs) {
frame = (unsigned long *)regs;
- len = regs_size(regs);
+ len = KERNEL_REGS_SIZE;
state->got_irq = true;
} else {
frame = next_bp;
@@ -226,6 +245,14 @@ static bool update_stack_state(struct unwind_state *state,
frame < prev_frame_end)
return false;
+ /*
+ * On 32-bit with user mode regs, make sure the last two regs are safe
+ * to access:
+ */
+ if (IS_ENABLED(CONFIG_X86_32) && regs && user_mode(regs) &&
+ !on_stack(info, frame, len + 2*sizeof(long)))
+ return false;
+
/* Move state to the next frame: */
if (regs) {
state->regs = regs;
@@ -328,6 +355,13 @@ bad_address:
state->regs->sp < (unsigned long)task_pt_regs(state->task))
goto the_end;
+ /*
+ * There are some known frame pointer issues on 32-bit. Disable
+ * unwinder warnings on 32-bit until it gets objtool support.
+ */
+ if (IS_ENABLED(CONFIG_X86_32))
+ goto the_end;
+
if (state->regs) {
printk_deferred_once(KERN_WARNING
"WARNING: kernel stack regs at %p in %s:%d has bad 'bp' value %p\n",
diff --git a/arch/x86/kernel/unwind_orc.c b/arch/x86/kernel/unwind_orc.c
index 570b70d3f604..b95007e7c1b3 100644
--- a/arch/x86/kernel/unwind_orc.c
+++ b/arch/x86/kernel/unwind_orc.c
@@ -86,8 +86,8 @@ static struct orc_entry *orc_find(unsigned long ip)
idx = (ip - LOOKUP_START_IP) / LOOKUP_BLOCK_SIZE;
if (unlikely((idx >= lookup_num_blocks-1))) {
- orc_warn("WARNING: bad lookup idx: idx=%u num=%u ip=%lx\n",
- idx, lookup_num_blocks, ip);
+ orc_warn("WARNING: bad lookup idx: idx=%u num=%u ip=%pB\n",
+ idx, lookup_num_blocks, (void *)ip);
return NULL;
}
@@ -96,8 +96,8 @@ static struct orc_entry *orc_find(unsigned long ip)
if (unlikely((__start_orc_unwind + start >= __stop_orc_unwind) ||
(__start_orc_unwind + stop > __stop_orc_unwind))) {
- orc_warn("WARNING: bad lookup value: idx=%u num=%u start=%u stop=%u ip=%lx\n",
- idx, lookup_num_blocks, start, stop, ip);
+ orc_warn("WARNING: bad lookup value: idx=%u num=%u start=%u stop=%u ip=%pB\n",
+ idx, lookup_num_blocks, start, stop, (void *)ip);
return NULL;
}
@@ -373,7 +373,7 @@ bool unwind_next_frame(struct unwind_state *state)
case ORC_REG_R10:
if (!state->regs || !state->full_regs) {
- orc_warn("missing regs for base reg R10 at ip %p\n",
+ orc_warn("missing regs for base reg R10 at ip %pB\n",
(void *)state->ip);
goto done;
}
@@ -382,7 +382,7 @@ bool unwind_next_frame(struct unwind_state *state)
case ORC_REG_R13:
if (!state->regs || !state->full_regs) {
- orc_warn("missing regs for base reg R13 at ip %p\n",
+ orc_warn("missing regs for base reg R13 at ip %pB\n",
(void *)state->ip);
goto done;
}
@@ -391,7 +391,7 @@ bool unwind_next_frame(struct unwind_state *state)
case ORC_REG_DI:
if (!state->regs || !state->full_regs) {
- orc_warn("missing regs for base reg DI at ip %p\n",
+ orc_warn("missing regs for base reg DI at ip %pB\n",
(void *)state->ip);
goto done;
}
@@ -400,7 +400,7 @@ bool unwind_next_frame(struct unwind_state *state)
case ORC_REG_DX:
if (!state->regs || !state->full_regs) {
- orc_warn("missing regs for base reg DX at ip %p\n",
+ orc_warn("missing regs for base reg DX at ip %pB\n",
(void *)state->ip);
goto done;
}
@@ -408,7 +408,7 @@ bool unwind_next_frame(struct unwind_state *state)
break;
default:
- orc_warn("unknown SP base reg %d for ip %p\n",
+ orc_warn("unknown SP base reg %d for ip %pB\n",
orc->sp_reg, (void *)state->ip);
goto done;
}
@@ -436,7 +436,7 @@ bool unwind_next_frame(struct unwind_state *state)
case ORC_TYPE_REGS:
if (!deref_stack_regs(state, sp, &state->ip, &state->sp, true)) {
- orc_warn("can't dereference registers at %p for ip %p\n",
+ orc_warn("can't dereference registers at %p for ip %pB\n",
(void *)sp, (void *)orig_ip);
goto done;
}
@@ -448,7 +448,7 @@ bool unwind_next_frame(struct unwind_state *state)
case ORC_TYPE_REGS_IRET:
if (!deref_stack_regs(state, sp, &state->ip, &state->sp, false)) {
- orc_warn("can't dereference iret registers at %p for ip %p\n",
+ orc_warn("can't dereference iret registers at %p for ip %pB\n",
(void *)sp, (void *)orig_ip);
goto done;
}
@@ -465,7 +465,8 @@ bool unwind_next_frame(struct unwind_state *state)
break;
default:
- orc_warn("unknown .orc_unwind entry type %d\n", orc->type);
+ orc_warn("unknown .orc_unwind entry type %d for ip %pB\n",
+ orc->type, (void *)orig_ip);
break;
}
@@ -487,7 +488,7 @@ bool unwind_next_frame(struct unwind_state *state)
break;
default:
- orc_warn("unknown BP base reg %d for ip %p\n",
+ orc_warn("unknown BP base reg %d for ip %pB\n",
orc->bp_reg, (void *)orig_ip);
goto done;
}
@@ -496,7 +497,7 @@ bool unwind_next_frame(struct unwind_state *state)
if (state->stack_info.type == prev_type &&
on_stack(&state->stack_info, (void *)state->sp, sizeof(long)) &&
state->sp <= prev_sp) {
- orc_warn("stack going in the wrong direction? ip=%p\n",
+ orc_warn("stack going in the wrong direction? ip=%pB\n",
(void *)orig_ip);
goto done;
}
diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c
index 7924a5356c8a..68244742ecb0 100644
--- a/arch/x86/kernel/vm86_32.c
+++ b/arch/x86/kernel/vm86_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1994 Linus Torvalds
*
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
index f05f00acac89..a4009fb9be87 100644
--- a/arch/x86/kernel/vmlinux.lds.S
+++ b/arch/x86/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ld script for the x86 kernel
*
diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig
index 3ea624452f93..3df51c287844 100644
--- a/arch/x86/kvm/Kconfig
+++ b/arch/x86/kvm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# KVM configuration
#
@@ -23,6 +24,7 @@ config KVM
depends on HIGH_RES_TIMERS
# for TASKSTATS/TASK_DELAY_ACCT:
depends on NET && MULTIUSER
+ depends on X86_LOCAL_APIC
select PREEMPT_NOTIFIERS
select MMU_NOTIFIER
select ANON_INODES
diff --git a/arch/x86/kvm/Makefile b/arch/x86/kvm/Makefile
index 09d4b17be022..dc4f2fdf5e57 100644
--- a/arch/x86/kvm/Makefile
+++ b/arch/x86/kvm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y += -Iarch/x86/kvm
diff --git a/arch/x86/kvm/cpuid.h b/arch/x86/kvm/cpuid.h
index 1ea3c0e1e3a9..cdc70a3a6583 100644
--- a/arch/x86/kvm/cpuid.h
+++ b/arch/x86/kvm/cpuid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARCH_X86_KVM_CPUID_H
#define ARCH_X86_KVM_CPUID_H
@@ -59,7 +60,6 @@ static __always_inline struct cpuid_reg x86_feature_cpuid(unsigned x86_feature)
{
unsigned x86_leaf = x86_feature / 32;
- BUILD_BUG_ON(!__builtin_constant_p(x86_leaf));
BUILD_BUG_ON(x86_leaf >= ARRAY_SIZE(reverse_cpuid));
BUILD_BUG_ON(reverse_cpuid[x86_leaf].function == 0);
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 16bf6655aa85..d90cdc77e077 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -425,8 +425,10 @@ static int fastop(struct x86_emulate_ctxt *ctxt, void (*fop)(struct fastop *));
#op " %al \n\t" \
FOP_RET
-asm(".global kvm_fastop_exception \n"
- "kvm_fastop_exception: xor %esi, %esi; ret");
+asm(".pushsection .fixup, \"ax\"\n"
+ ".global kvm_fastop_exception \n"
+ "kvm_fastop_exception: xor %esi, %esi; ret\n"
+ ".popsection");
FOP_START(setcc)
FOP_SETCC(seto)
@@ -4102,10 +4104,12 @@ static int check_cr_write(struct x86_emulate_ctxt *ctxt)
ctxt->ops->get_msr(ctxt, MSR_EFER, &efer);
if (efer & EFER_LMA) {
u64 maxphyaddr;
- u32 eax = 0x80000008;
+ u32 eax, ebx, ecx, edx;
- if (ctxt->ops->get_cpuid(ctxt, &eax, NULL, NULL,
- NULL, false))
+ eax = 0x80000008;
+ ecx = 0;
+ if (ctxt->ops->get_cpuid(ctxt, &eax, &ebx, &ecx,
+ &edx, false))
maxphyaddr = eax & 0xff;
else
maxphyaddr = 36;
@@ -5296,7 +5300,6 @@ static void fetch_possible_mmx_operand(struct x86_emulate_ctxt *ctxt,
static int fastop(struct x86_emulate_ctxt *ctxt, void (*fop)(struct fastop *))
{
- register void *__sp asm(_ASM_SP);
ulong flags = (ctxt->eflags & EFLAGS_MASK) | X86_EFLAGS_IF;
if (!(ctxt->d & ByteOp))
@@ -5304,7 +5307,7 @@ static int fastop(struct x86_emulate_ctxt *ctxt, void (*fop)(struct fastop *))
asm("push %[flags]; popf; call *%[fastop]; pushf; pop %[flags]\n"
: "+a"(ctxt->dst.val), "+d"(ctxt->src.val), [flags]"+D"(flags),
- [fastop]"+S"(fop), "+r"(__sp)
+ [fastop]"+S"(fop), ASM_CALL_CONSTRAINT
: "c"(ctxt->src2.val));
ctxt->eflags = (ctxt->eflags & ~EFLAGS_MASK) | (flags & EFLAGS_MASK);
diff --git a/arch/x86/kvm/i8254.h b/arch/x86/kvm/i8254.h
index 600bee9dcbbd..394d9527da7e 100644
--- a/arch/x86/kvm/i8254.h
+++ b/arch/x86/kvm/i8254.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __I8254_H
#define __I8254_H
diff --git a/arch/x86/kvm/ioapic.h b/arch/x86/kvm/ioapic.h
index 29ce19732ccf..ea1a4e0297da 100644
--- a/arch/x86/kvm/ioapic.h
+++ b/arch/x86/kvm/ioapic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __KVM_IO_APIC_H
#define __KVM_IO_APIC_H
diff --git a/arch/x86/kvm/kvm_cache_regs.h b/arch/x86/kvm/kvm_cache_regs.h
index 9add410f195f..f500293dad8d 100644
--- a/arch/x86/kvm/kvm_cache_regs.h
+++ b/arch/x86/kvm/kvm_cache_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASM_KVM_CACHE_REGS_H
#define ASM_KVM_CACHE_REGS_H
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index aaf10b6f5380..69c5612be786 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -1324,6 +1324,10 @@ static void apic_timer_expired(struct kvm_lapic *apic)
atomic_inc(&apic->lapic_timer.pending);
kvm_set_pending_timer(vcpu);
+ /*
+ * For x86, the atomic_inc() is serialized, thus
+ * using swait_active() is safe.
+ */
if (swait_active(q))
swake_up(q);
diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h
index 215721e1426a..4b9935a38347 100644
--- a/arch/x86/kvm/lapic.h
+++ b/arch/x86/kvm/lapic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __KVM_X86_LAPIC_H
#define __KVM_X86_LAPIC_H
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index eca30c1eb1d9..7a69cf053711 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -3837,7 +3837,7 @@ int kvm_handle_page_fault(struct kvm_vcpu *vcpu, u64 error_code,
case KVM_PV_REASON_PAGE_NOT_PRESENT:
vcpu->arch.apf.host_apf_reason = 0;
local_irq_disable();
- kvm_async_pf_task_wait(fault_address);
+ kvm_async_pf_task_wait(fault_address, 0);
local_irq_enable();
break;
case KVM_PV_REASON_PAGE_READY:
@@ -3974,19 +3974,19 @@ static inline bool is_last_gpte(struct kvm_mmu *mmu,
unsigned level, unsigned gpte)
{
/*
- * PT_PAGE_TABLE_LEVEL always terminates. The RHS has bit 7 set
- * iff level <= PT_PAGE_TABLE_LEVEL, which for our purpose means
- * level == PT_PAGE_TABLE_LEVEL; set PT_PAGE_SIZE_MASK in gpte then.
- */
- gpte |= level - PT_PAGE_TABLE_LEVEL - 1;
-
- /*
* The RHS has bit 7 set iff level < mmu->last_nonleaf_level.
* If it is clear, there are no large pages at this level, so clear
* PT_PAGE_SIZE_MASK in gpte if that is the case.
*/
gpte &= level - mmu->last_nonleaf_level;
+ /*
+ * PT_PAGE_TABLE_LEVEL always terminates. The RHS has bit 7 set
+ * iff level <= PT_PAGE_TABLE_LEVEL, which for our purpose means
+ * level == PT_PAGE_TABLE_LEVEL; set PT_PAGE_SIZE_MASK in gpte then.
+ */
+ gpte |= level - PT_PAGE_TABLE_LEVEL - 1;
+
return gpte & PT_PAGE_SIZE_MASK;
}
@@ -4555,6 +4555,7 @@ void kvm_init_shadow_ept_mmu(struct kvm_vcpu *vcpu, bool execonly,
update_permission_bitmask(vcpu, context, true);
update_pkru_bitmask(vcpu, context, true);
+ update_last_nonleaf_level(vcpu, context);
reset_rsvds_bits_mask_ept(vcpu, context, execonly);
reset_ept_shadow_zero_bits_mask(vcpu, context, execonly);
}
diff --git a/arch/x86/kvm/mmu.h b/arch/x86/kvm/mmu.h
index 64a2dbd2b1af..efc857615d8e 100644
--- a/arch/x86/kvm/mmu.h
+++ b/arch/x86/kvm/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __KVM_X86_MMU_H
#define __KVM_X86_MMU_H
diff --git a/arch/x86/kvm/mmutrace.h b/arch/x86/kvm/mmutrace.h
index 8b97a6cba8d1..c73bf4e4988c 100644
--- a/arch/x86/kvm/mmutrace.h
+++ b/arch/x86/kvm/mmutrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_KVMMMU_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_KVMMMU_H
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index 86b68dc5a649..f18d1f8d332b 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -334,10 +334,11 @@ retry_walk:
--walker->level;
index = PT_INDEX(addr, walker->level);
-
table_gfn = gpte_to_gfn(pte);
offset = index * sizeof(pt_element_t);
pte_gpa = gfn_to_gpa(table_gfn) + offset;
+
+ BUG_ON(walker->level < 1);
walker->table_gfn[walker->level - 1] = table_gfn;
walker->pte_gpa[walker->level - 1] = pte_gpa;
diff --git a/arch/x86/kvm/pmu.h b/arch/x86/kvm/pmu.h
index f96e1f962587..a9a62b9a73e2 100644
--- a/arch/x86/kvm/pmu.h
+++ b/arch/x86/kvm/pmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __KVM_X86_PMU_H
#define __KVM_X86_PMU_H
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 2c1cfe68a9af..0e68f0b3cbf7 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -1200,7 +1200,6 @@ static void avic_init_vmcb(struct vcpu_svm *svm)
vmcb->control.avic_physical_id = ppa & AVIC_HPA_MASK;
vmcb->control.avic_physical_id |= AVIC_MAX_PHYSICAL_ID_COUNT;
vmcb->control.int_ctl |= AVIC_ENABLE_MASK;
- svm->vcpu.arch.apicv_active = true;
}
static void init_vmcb(struct vcpu_svm *svm)
@@ -1316,7 +1315,7 @@ static void init_vmcb(struct vcpu_svm *svm)
set_intercept(svm, INTERCEPT_PAUSE);
}
- if (avic)
+ if (kvm_vcpu_apicv_active(&svm->vcpu))
avic_init_vmcb(svm);
/*
@@ -1600,6 +1599,23 @@ static void svm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
avic_update_vapic_bar(svm, APIC_DEFAULT_PHYS_BASE);
}
+static int avic_init_vcpu(struct vcpu_svm *svm)
+{
+ int ret;
+
+ if (!kvm_vcpu_apicv_active(&svm->vcpu))
+ return 0;
+
+ ret = avic_init_backing_page(&svm->vcpu);
+ if (ret)
+ return ret;
+
+ INIT_LIST_HEAD(&svm->ir_list);
+ spin_lock_init(&svm->ir_list_lock);
+
+ return ret;
+}
+
static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id)
{
struct vcpu_svm *svm;
@@ -1636,14 +1652,9 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id)
if (!hsave_page)
goto free_page3;
- if (avic) {
- err = avic_init_backing_page(&svm->vcpu);
- if (err)
- goto free_page4;
-
- INIT_LIST_HEAD(&svm->ir_list);
- spin_lock_init(&svm->ir_list_lock);
- }
+ err = avic_init_vcpu(svm);
+ if (err)
+ goto free_page4;
/* We initialize this flag to true to make sure that the is_running
* bit would be set the first time the vcpu is loaded.
@@ -4395,9 +4406,9 @@ static void svm_set_virtual_x2apic_mode(struct kvm_vcpu *vcpu, bool set)
return;
}
-static bool svm_get_enable_apicv(void)
+static bool svm_get_enable_apicv(struct kvm_vcpu *vcpu)
{
- return avic;
+ return avic && irqchip_split(vcpu->kvm);
}
static void svm_hwapic_irr_update(struct kvm_vcpu *vcpu, int max_irr)
@@ -4414,7 +4425,7 @@ static void svm_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu)
struct vcpu_svm *svm = to_svm(vcpu);
struct vmcb *vmcb = svm->vmcb;
- if (!avic)
+ if (!kvm_vcpu_apicv_active(&svm->vcpu))
return;
vmcb->control.int_ctl &= ~AVIC_ENABLE_MASK;
@@ -5302,6 +5313,7 @@ static int svm_check_intercept(struct kvm_vcpu *vcpu,
*/
if (info->rep_prefix != REPE_PREFIX)
goto out;
+ break;
case SVM_EXIT_IOIO: {
u64 exit_info;
u32 bytes;
diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h
index 8a202c49e2a0..9807c314c478 100644
--- a/arch/x86/kvm/trace.h
+++ b/arch/x86/kvm/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_KVM_H
diff --git a/arch/x86/kvm/tss.h b/arch/x86/kvm/tss.h
index 622aa10f692f..3f9150125e70 100644
--- a/arch/x86/kvm/tss.h
+++ b/arch/x86/kvm/tss.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __TSS_SEGMENT_H
#define __TSS_SEGMENT_H
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 4253adef9044..95a01609d7ee 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -200,6 +200,8 @@ struct loaded_vmcs {
int cpu;
bool launched;
bool nmi_known_unmasked;
+ unsigned long vmcs_host_cr3; /* May not match real cr3 */
+ unsigned long vmcs_host_cr4; /* May not match real cr4 */
struct list_head loaded_vmcss_on_cpu_link;
};
@@ -600,8 +602,6 @@ struct vcpu_vmx {
int gs_ldt_reload_needed;
int fs_reload_needed;
u64 msr_host_bndcfgs;
- unsigned long vmcs_host_cr3; /* May not match real cr3 */
- unsigned long vmcs_host_cr4; /* May not match real cr4 */
} host_state;
struct {
int vm86_active;
@@ -2202,46 +2202,44 @@ static void vmx_vcpu_pi_load(struct kvm_vcpu *vcpu, int cpu)
struct pi_desc old, new;
unsigned int dest;
- if (!kvm_arch_has_assigned_device(vcpu->kvm) ||
- !irq_remapping_cap(IRQ_POSTING_CAP) ||
- !kvm_vcpu_apicv_active(vcpu))
+ /*
+ * In case of hot-plug or hot-unplug, we may have to undo
+ * vmx_vcpu_pi_put even if there is no assigned device. And we
+ * always keep PI.NDST up to date for simplicity: it makes the
+ * code easier, and CPU migration is not a fast path.
+ */
+ if (!pi_test_sn(pi_desc) && vcpu->cpu == cpu)
return;
+ /*
+ * First handle the simple case where no cmpxchg is necessary; just
+ * allow posting non-urgent interrupts.
+ *
+ * If the 'nv' field is POSTED_INTR_WAKEUP_VECTOR, do not change
+ * PI.NDST: pi_post_block will do it for us and the wakeup_handler
+ * expects the VCPU to be on the blocked_vcpu_list that matches
+ * PI.NDST.
+ */
+ if (pi_desc->nv == POSTED_INTR_WAKEUP_VECTOR ||
+ vcpu->cpu == cpu) {
+ pi_clear_sn(pi_desc);
+ return;
+ }
+
+ /* The full case. */
do {
old.control = new.control = pi_desc->control;
- /*
- * If 'nv' field is POSTED_INTR_WAKEUP_VECTOR, there
- * are two possible cases:
- * 1. After running 'pre_block', context switch
- * happened. For this case, 'sn' was set in
- * vmx_vcpu_put(), so we need to clear it here.
- * 2. After running 'pre_block', we were blocked,
- * and woken up by some other guy. For this case,
- * we don't need to do anything, 'pi_post_block'
- * will do everything for us. However, we cannot
- * check whether it is case #1 or case #2 here
- * (maybe, not needed), so we also clear sn here,
- * I think it is not a big deal.
- */
- if (pi_desc->nv != POSTED_INTR_WAKEUP_VECTOR) {
- if (vcpu->cpu != cpu) {
- dest = cpu_physical_id(cpu);
-
- if (x2apic_enabled())
- new.ndst = dest;
- else
- new.ndst = (dest << 8) & 0xFF00;
- }
+ dest = cpu_physical_id(cpu);
- /* set 'NV' to 'notification vector' */
- new.nv = POSTED_INTR_VECTOR;
- }
+ if (x2apic_enabled())
+ new.ndst = dest;
+ else
+ new.ndst = (dest << 8) & 0xFF00;
- /* Allow posting non-urgent interrupts */
new.sn = 0;
- } while (cmpxchg(&pi_desc->control, old.control,
- new.control) != old.control);
+ } while (cmpxchg64(&pi_desc->control, old.control,
+ new.control) != old.control);
}
static void decache_tsc_multiplier(struct vcpu_vmx *vmx)
@@ -5012,7 +5010,7 @@ static void vmx_disable_intercept_msr_x2apic(u32 msr, int type, bool apicv_activ
}
}
-static bool vmx_get_enable_apicv(void)
+static bool vmx_get_enable_apicv(struct kvm_vcpu *vcpu)
{
return enable_apicv;
}
@@ -5077,21 +5075,30 @@ static inline bool kvm_vcpu_trigger_posted_interrupt(struct kvm_vcpu *vcpu,
int pi_vec = nested ? POSTED_INTR_NESTED_VECTOR : POSTED_INTR_VECTOR;
if (vcpu->mode == IN_GUEST_MODE) {
- struct vcpu_vmx *vmx = to_vmx(vcpu);
-
/*
- * Currently, we don't support urgent interrupt,
- * all interrupts are recognized as non-urgent
- * interrupt, so we cannot post interrupts when
- * 'SN' is set.
+ * The vector of interrupt to be delivered to vcpu had
+ * been set in PIR before this function.
*
- * If the vcpu is in guest mode, it means it is
- * running instead of being scheduled out and
- * waiting in the run queue, and that's the only
- * case when 'SN' is set currently, warning if
- * 'SN' is set.
+ * Following cases will be reached in this block, and
+ * we always send a notification event in all cases as
+ * explained below.
+ *
+ * Case 1: vcpu keeps in non-root mode. Sending a
+ * notification event posts the interrupt to vcpu.
+ *
+ * Case 2: vcpu exits to root mode and is still
+ * runnable. PIR will be synced to vIRR before the
+ * next vcpu entry. Sending a notification event in
+ * this case has no effect, as vcpu is not in root
+ * mode.
+ *
+ * Case 3: vcpu exits to root mode and is blocked.
+ * vcpu_block() has already synced PIR to vIRR and
+ * never blocks vcpu if vIRR is not cleared. Therefore,
+ * a blocked vcpu here does not wait for any requested
+ * interrupts in PIR, and sending a notification event
+ * which has no effect is safe here.
*/
- WARN_ON_ONCE(pi_test_sn(&vmx->pi_desc));
apic->send_IPI_mask(get_cpu_mask(vcpu->cpu), pi_vec);
return true;
@@ -5169,12 +5176,12 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
*/
cr3 = __read_cr3();
vmcs_writel(HOST_CR3, cr3); /* 22.2.3 FIXME: shadow tables */
- vmx->host_state.vmcs_host_cr3 = cr3;
+ vmx->loaded_vmcs->vmcs_host_cr3 = cr3;
/* Save the most likely value for this task's CR4 in the VMCS. */
cr4 = cr4_read_shadow();
vmcs_writel(HOST_CR4, cr4); /* 22.2.3, 22.2.5 */
- vmx->host_state.vmcs_host_cr4 = cr4;
+ vmx->loaded_vmcs->vmcs_host_cr4 = cr4;
vmcs_write16(HOST_CS_SELECTOR, __KERNEL_CS); /* 22.2.4 */
#ifdef CONFIG_X86_64
@@ -5192,7 +5199,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
vmcs_write16(HOST_SS_SELECTOR, __KERNEL_DS); /* 22.2.4 */
vmcs_write16(HOST_TR_SELECTOR, GDT_ENTRY_TSS*8); /* 22.2.4 */
- native_store_idt(&dt);
+ store_idt(&dt);
vmcs_writel(HOST_IDTR_BASE, dt.address); /* 22.2.4 */
vmx->host_idt_base = dt.address;
@@ -8344,12 +8351,14 @@ static bool nested_vmx_exit_reflected(struct kvm_vcpu *vcpu, u32 exit_reason)
struct vcpu_vmx *vmx = to_vmx(vcpu);
struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
- trace_kvm_nested_vmexit(kvm_rip_read(vcpu), exit_reason,
- vmcs_readl(EXIT_QUALIFICATION),
- vmx->idt_vectoring_info,
- intr_info,
- vmcs_read32(VM_EXIT_INTR_ERROR_CODE),
- KVM_ISA_VMX);
+ if (vmx->nested.nested_run_pending)
+ return false;
+
+ if (unlikely(vmx->fail)) {
+ pr_info_ratelimited("%s failed vm entry %x\n", __func__,
+ vmcs_read32(VM_INSTRUCTION_ERROR));
+ return true;
+ }
/*
* The host physical addresses of some pages of guest memory
@@ -8363,14 +8372,12 @@ static bool nested_vmx_exit_reflected(struct kvm_vcpu *vcpu, u32 exit_reason)
*/
nested_mark_vmcs12_pages_dirty(vcpu);
- if (vmx->nested.nested_run_pending)
- return false;
-
- if (unlikely(vmx->fail)) {
- pr_info_ratelimited("%s failed vm entry %x\n", __func__,
- vmcs_read32(VM_INSTRUCTION_ERROR));
- return true;
- }
+ trace_kvm_nested_vmexit(kvm_rip_read(vcpu), exit_reason,
+ vmcs_readl(EXIT_QUALIFICATION),
+ vmx->idt_vectoring_info,
+ intr_info,
+ vmcs_read32(VM_EXIT_INTR_ERROR_CODE),
+ KVM_ISA_VMX);
switch (exit_reason) {
case EXIT_REASON_EXCEPTION_NMI:
@@ -9036,7 +9043,6 @@ static void vmx_complete_atomic_exit(struct vcpu_vmx *vmx)
static void vmx_handle_external_intr(struct kvm_vcpu *vcpu)
{
u32 exit_intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
- register void *__sp asm(_ASM_SP);
if ((exit_intr_info & (INTR_INFO_VALID_MASK | INTR_INFO_INTR_TYPE_MASK))
== (INTR_INFO_VALID_MASK | INTR_TYPE_EXT_INTR)) {
@@ -9065,7 +9071,7 @@ static void vmx_handle_external_intr(struct kvm_vcpu *vcpu)
#ifdef CONFIG_X86_64
[sp]"=&r"(tmp),
#endif
- "+r"(__sp)
+ ASM_CALL_CONSTRAINT
:
[entry]"r"(entry),
[ss]"i"(__KERNEL_DS),
@@ -9265,15 +9271,15 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
vmcs_writel(GUEST_RIP, vcpu->arch.regs[VCPU_REGS_RIP]);
cr3 = __get_current_cr3_fast();
- if (unlikely(cr3 != vmx->host_state.vmcs_host_cr3)) {
+ if (unlikely(cr3 != vmx->loaded_vmcs->vmcs_host_cr3)) {
vmcs_writel(HOST_CR3, cr3);
- vmx->host_state.vmcs_host_cr3 = cr3;
+ vmx->loaded_vmcs->vmcs_host_cr3 = cr3;
}
cr4 = cr4_read_shadow();
- if (unlikely(cr4 != vmx->host_state.vmcs_host_cr4)) {
+ if (unlikely(cr4 != vmx->loaded_vmcs->vmcs_host_cr4)) {
vmcs_writel(HOST_CR4, cr4);
- vmx->host_state.vmcs_host_cr4 = cr4;
+ vmx->loaded_vmcs->vmcs_host_cr4 = cr4;
}
/* When single-stepping over STI and MOV SS, we must clear the
@@ -9424,12 +9430,6 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
| (1 << VCPU_EXREG_CR3));
vcpu->arch.regs_dirty = 0;
- vmx->idt_vectoring_info = vmcs_read32(IDT_VECTORING_INFO_FIELD);
-
- vmx->loaded_vmcs->launched = 1;
-
- vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
-
/*
* eager fpu is enabled if PKEY is supported and CR4 is switched
* back on host, so it is safe to read guest PKRU from current
@@ -9451,6 +9451,14 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
kvm_make_request(KVM_REQ_EVENT, vcpu);
vmx->nested.nested_run_pending = 0;
+ vmx->idt_vectoring_info = 0;
+
+ vmx->exit_reason = vmx->fail ? 0xdead : vmcs_read32(VM_EXIT_REASON);
+ if (vmx->fail || (vmx->exit_reason & VMX_EXIT_REASONS_FAILED_VMENTRY))
+ return;
+
+ vmx->loaded_vmcs->launched = 1;
+ vmx->idt_vectoring_info = vmcs_read32(IDT_VECTORING_INFO_FIELD);
vmx_complete_atomic_exit(vmx);
vmx_recover_nmi_blocking(vmx);
@@ -9581,6 +9589,13 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id)
vmx->msr_ia32_feature_control_valid_bits = FEATURE_CONTROL_LOCKED;
+ /*
+ * Enforce invariant: pi_desc.nv is always either POSTED_INTR_VECTOR
+ * or POSTED_INTR_WAKEUP_VECTOR.
+ */
+ vmx->pi_desc.nv = POSTED_INTR_VECTOR;
+ vmx->pi_desc.sn = 1;
+
return &vmx->vcpu;
free_vmcs:
@@ -9829,7 +9844,8 @@ static void vmx_inject_page_fault_nested(struct kvm_vcpu *vcpu,
WARN_ON(!is_guest_mode(vcpu));
- if (nested_vmx_is_page_fault_vmexit(vmcs12, fault->error_code)) {
+ if (nested_vmx_is_page_fault_vmexit(vmcs12, fault->error_code) &&
+ !to_vmx(vcpu)->nested.nested_run_pending) {
vmcs12->vm_exit_intr_error_code = fault->error_code;
nested_vmx_vmexit(vcpu, EXIT_REASON_EXCEPTION_NMI,
PF_VECTOR | INTR_TYPE_HARD_EXCEPTION |
@@ -10525,6 +10541,11 @@ static int prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,
if (exec_control & CPU_BASED_TPR_SHADOW) {
vmcs_write64(VIRTUAL_APIC_PAGE_ADDR, -1ull);
vmcs_write32(TPR_THRESHOLD, vmcs12->tpr_threshold);
+ } else {
+#ifdef CONFIG_X86_64
+ exec_control |= CPU_BASED_CR8_LOAD_EXITING |
+ CPU_BASED_CR8_STORE_EXITING;
+#endif
}
/*
@@ -11276,7 +11297,7 @@ static void load_vmcs12_host_state(struct kvm_vcpu *vcpu,
/* Same as above - no reason to call set_cr4_guest_host_mask(). */
vcpu->arch.cr4_guest_owned_bits = ~vmcs_readl(CR4_GUEST_HOST_MASK);
- kvm_set_cr4(vcpu, vmcs12->host_cr4);
+ vmx_set_cr4(vcpu, vmcs12->host_cr4);
nested_ept_uninit_mmu_context(vcpu);
@@ -11388,46 +11409,30 @@ static void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 exit_reason,
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
- u32 vm_inst_error = 0;
/* trying to cancel vmlaunch/vmresume is a bug */
WARN_ON_ONCE(vmx->nested.nested_run_pending);
+ /*
+ * The only expected VM-instruction error is "VM entry with
+ * invalid control field(s)." Anything else indicates a
+ * problem with L0.
+ */
+ WARN_ON_ONCE(vmx->fail && (vmcs_read32(VM_INSTRUCTION_ERROR) !=
+ VMXERR_ENTRY_INVALID_CONTROL_FIELD));
+
leave_guest_mode(vcpu);
- prepare_vmcs12(vcpu, vmcs12, exit_reason, exit_intr_info,
- exit_qualification);
- if (nested_vmx_store_msr(vcpu, vmcs12->vm_exit_msr_store_addr,
- vmcs12->vm_exit_msr_store_count))
- nested_vmx_abort(vcpu, VMX_ABORT_SAVE_GUEST_MSR_FAIL);
+ if (likely(!vmx->fail)) {
+ prepare_vmcs12(vcpu, vmcs12, exit_reason, exit_intr_info,
+ exit_qualification);
- if (unlikely(vmx->fail))
- vm_inst_error = vmcs_read32(VM_INSTRUCTION_ERROR);
+ if (nested_vmx_store_msr(vcpu, vmcs12->vm_exit_msr_store_addr,
+ vmcs12->vm_exit_msr_store_count))
+ nested_vmx_abort(vcpu, VMX_ABORT_SAVE_GUEST_MSR_FAIL);
+ }
vmx_switch_vmcs(vcpu, &vmx->vmcs01);
-
- /*
- * TODO: SDM says that with acknowledge interrupt on exit, bit 31 of
- * the VM-exit interrupt information (valid interrupt) is always set to
- * 1 on EXIT_REASON_EXTERNAL_INTERRUPT, so we shouldn't need
- * kvm_cpu_has_interrupt(). See the commit message for details.
- */
- if (nested_exit_intr_ack_set(vcpu) &&
- exit_reason == EXIT_REASON_EXTERNAL_INTERRUPT &&
- kvm_cpu_has_interrupt(vcpu)) {
- int irq = kvm_cpu_get_interrupt(vcpu);
- WARN_ON(irq < 0);
- vmcs12->vm_exit_intr_info = irq |
- INTR_INFO_VALID_MASK | INTR_TYPE_EXT_INTR;
- }
-
- trace_kvm_nested_vmexit_inject(vmcs12->vm_exit_reason,
- vmcs12->exit_qualification,
- vmcs12->idt_vectoring_info_field,
- vmcs12->vm_exit_intr_info,
- vmcs12->vm_exit_intr_error_code,
- KVM_ISA_VMX);
-
vm_entry_controls_reset_shadow(vmx);
vm_exit_controls_reset_shadow(vmx);
vmx_segment_cache_clear(vmx);
@@ -11436,8 +11441,6 @@ static void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 exit_reason,
if (VMCS02_POOL_SIZE == 0)
nested_free_vmcs02(vmx, vmx->nested.current_vmptr);
- load_vmcs12_host_state(vcpu, vmcs12);
-
/* Update any VMCS fields that might have changed while L2 ran */
vmcs_write32(VM_EXIT_MSR_LOAD_COUNT, vmx->msr_autoload.nr);
vmcs_write32(VM_ENTRY_MSR_LOAD_COUNT, vmx->msr_autoload.nr);
@@ -11486,21 +11489,57 @@ static void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 exit_reason,
*/
kvm_make_request(KVM_REQ_APIC_PAGE_RELOAD, vcpu);
- /*
- * Exiting from L2 to L1, we're now back to L1 which thinks it just
- * finished a VMLAUNCH or VMRESUME instruction, so we need to set the
- * success or failure flag accordingly.
- */
- if (unlikely(vmx->fail)) {
- vmx->fail = 0;
- nested_vmx_failValid(vcpu, vm_inst_error);
- } else
- nested_vmx_succeed(vcpu);
if (enable_shadow_vmcs)
vmx->nested.sync_shadow_vmcs = true;
/* in case we halted in L2 */
vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE;
+
+ if (likely(!vmx->fail)) {
+ /*
+ * TODO: SDM says that with acknowledge interrupt on
+ * exit, bit 31 of the VM-exit interrupt information
+ * (valid interrupt) is always set to 1 on
+ * EXIT_REASON_EXTERNAL_INTERRUPT, so we shouldn't
+ * need kvm_cpu_has_interrupt(). See the commit
+ * message for details.
+ */
+ if (nested_exit_intr_ack_set(vcpu) &&
+ exit_reason == EXIT_REASON_EXTERNAL_INTERRUPT &&
+ kvm_cpu_has_interrupt(vcpu)) {
+ int irq = kvm_cpu_get_interrupt(vcpu);
+ WARN_ON(irq < 0);
+ vmcs12->vm_exit_intr_info = irq |
+ INTR_INFO_VALID_MASK | INTR_TYPE_EXT_INTR;
+ }
+
+ trace_kvm_nested_vmexit_inject(vmcs12->vm_exit_reason,
+ vmcs12->exit_qualification,
+ vmcs12->idt_vectoring_info_field,
+ vmcs12->vm_exit_intr_info,
+ vmcs12->vm_exit_intr_error_code,
+ KVM_ISA_VMX);
+
+ load_vmcs12_host_state(vcpu, vmcs12);
+
+ return;
+ }
+
+ /*
+ * After an early L2 VM-entry failure, we're now back
+ * in L1 which thinks it just finished a VMLAUNCH or
+ * VMRESUME instruction, so we need to set the failure
+ * flag and the VM-instruction error field of the VMCS
+ * accordingly.
+ */
+ nested_vmx_failValid(vcpu, VMXERR_ENTRY_INVALID_CONTROL_FIELD);
+ /*
+ * The emulated instruction was already skipped in
+ * nested_vmx_run, but the updated RIP was never
+ * written back to the vmcs01.
+ */
+ skip_emulated_instruction(vcpu);
+ vmx->fail = 0;
}
/*
@@ -11671,6 +11710,37 @@ static void vmx_enable_log_dirty_pt_masked(struct kvm *kvm,
kvm_mmu_clear_dirty_pt_masked(kvm, memslot, offset, mask);
}
+static void __pi_post_block(struct kvm_vcpu *vcpu)
+{
+ struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu);
+ struct pi_desc old, new;
+ unsigned int dest;
+
+ do {
+ old.control = new.control = pi_desc->control;
+ WARN(old.nv != POSTED_INTR_WAKEUP_VECTOR,
+ "Wakeup handler not enabled while the VCPU is blocked\n");
+
+ dest = cpu_physical_id(vcpu->cpu);
+
+ if (x2apic_enabled())
+ new.ndst = dest;
+ else
+ new.ndst = (dest << 8) & 0xFF00;
+
+ /* set 'NV' to 'notification vector' */
+ new.nv = POSTED_INTR_VECTOR;
+ } while (cmpxchg64(&pi_desc->control, old.control,
+ new.control) != old.control);
+
+ if (!WARN_ON_ONCE(vcpu->pre_pcpu == -1)) {
+ spin_lock(&per_cpu(blocked_vcpu_on_cpu_lock, vcpu->pre_pcpu));
+ list_del(&vcpu->blocked_vcpu_list);
+ spin_unlock(&per_cpu(blocked_vcpu_on_cpu_lock, vcpu->pre_pcpu));
+ vcpu->pre_pcpu = -1;
+ }
+}
+
/*
* This routine does the following things for vCPU which is going
* to be blocked if VT-d PI is enabled.
@@ -11686,7 +11756,6 @@ static void vmx_enable_log_dirty_pt_masked(struct kvm *kvm,
*/
static int pi_pre_block(struct kvm_vcpu *vcpu)
{
- unsigned long flags;
unsigned int dest;
struct pi_desc old, new;
struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu);
@@ -11696,34 +11765,20 @@ static int pi_pre_block(struct kvm_vcpu *vcpu)
!kvm_vcpu_apicv_active(vcpu))
return 0;
- vcpu->pre_pcpu = vcpu->cpu;
- spin_lock_irqsave(&per_cpu(blocked_vcpu_on_cpu_lock,
- vcpu->pre_pcpu), flags);
- list_add_tail(&vcpu->blocked_vcpu_list,
- &per_cpu(blocked_vcpu_on_cpu,
- vcpu->pre_pcpu));
- spin_unlock_irqrestore(&per_cpu(blocked_vcpu_on_cpu_lock,
- vcpu->pre_pcpu), flags);
+ WARN_ON(irqs_disabled());
+ local_irq_disable();
+ if (!WARN_ON_ONCE(vcpu->pre_pcpu != -1)) {
+ vcpu->pre_pcpu = vcpu->cpu;
+ spin_lock(&per_cpu(blocked_vcpu_on_cpu_lock, vcpu->pre_pcpu));
+ list_add_tail(&vcpu->blocked_vcpu_list,
+ &per_cpu(blocked_vcpu_on_cpu,
+ vcpu->pre_pcpu));
+ spin_unlock(&per_cpu(blocked_vcpu_on_cpu_lock, vcpu->pre_pcpu));
+ }
do {
old.control = new.control = pi_desc->control;
- /*
- * We should not block the vCPU if
- * an interrupt is posted for it.
- */
- if (pi_test_on(pi_desc) == 1) {
- spin_lock_irqsave(&per_cpu(blocked_vcpu_on_cpu_lock,
- vcpu->pre_pcpu), flags);
- list_del(&vcpu->blocked_vcpu_list);
- spin_unlock_irqrestore(
- &per_cpu(blocked_vcpu_on_cpu_lock,
- vcpu->pre_pcpu), flags);
- vcpu->pre_pcpu = -1;
-
- return 1;
- }
-
WARN((pi_desc->sn == 1),
"Warning: SN field of posted-interrupts "
"is set before blocking\n");
@@ -11745,10 +11800,15 @@ static int pi_pre_block(struct kvm_vcpu *vcpu)
/* set 'NV' to 'wakeup vector' */
new.nv = POSTED_INTR_WAKEUP_VECTOR;
- } while (cmpxchg(&pi_desc->control, old.control,
- new.control) != old.control);
+ } while (cmpxchg64(&pi_desc->control, old.control,
+ new.control) != old.control);
- return 0;
+ /* We should not block the vCPU if an interrupt is posted for it. */
+ if (pi_test_on(pi_desc) == 1)
+ __pi_post_block(vcpu);
+
+ local_irq_enable();
+ return (vcpu->pre_pcpu == -1);
}
static int vmx_pre_block(struct kvm_vcpu *vcpu)
@@ -11764,44 +11824,13 @@ static int vmx_pre_block(struct kvm_vcpu *vcpu)
static void pi_post_block(struct kvm_vcpu *vcpu)
{
- struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu);
- struct pi_desc old, new;
- unsigned int dest;
- unsigned long flags;
-
- if (!kvm_arch_has_assigned_device(vcpu->kvm) ||
- !irq_remapping_cap(IRQ_POSTING_CAP) ||
- !kvm_vcpu_apicv_active(vcpu))
+ if (vcpu->pre_pcpu == -1)
return;
- do {
- old.control = new.control = pi_desc->control;
-
- dest = cpu_physical_id(vcpu->cpu);
-
- if (x2apic_enabled())
- new.ndst = dest;
- else
- new.ndst = (dest << 8) & 0xFF00;
-
- /* Allow posting non-urgent interrupts */
- new.sn = 0;
-
- /* set 'NV' to 'notification vector' */
- new.nv = POSTED_INTR_VECTOR;
- } while (cmpxchg(&pi_desc->control, old.control,
- new.control) != old.control);
-
- if(vcpu->pre_pcpu != -1) {
- spin_lock_irqsave(
- &per_cpu(blocked_vcpu_on_cpu_lock,
- vcpu->pre_pcpu), flags);
- list_del(&vcpu->blocked_vcpu_list);
- spin_unlock_irqrestore(
- &per_cpu(blocked_vcpu_on_cpu_lock,
- vcpu->pre_pcpu), flags);
- vcpu->pre_pcpu = -1;
- }
+ WARN_ON(irqs_disabled());
+ local_irq_disable();
+ __pi_post_block(vcpu);
+ local_irq_enable();
}
static void vmx_post_block(struct kvm_vcpu *vcpu)
@@ -11829,7 +11858,7 @@ static int vmx_update_pi_irte(struct kvm *kvm, unsigned int host_irq,
struct kvm_lapic_irq irq;
struct kvm_vcpu *vcpu;
struct vcpu_data vcpu_info;
- int idx, ret = -EINVAL;
+ int idx, ret = 0;
if (!kvm_arch_has_assigned_device(kvm) ||
!irq_remapping_cap(IRQ_POSTING_CAP) ||
@@ -11838,7 +11867,12 @@ static int vmx_update_pi_irte(struct kvm *kvm, unsigned int host_irq,
idx = srcu_read_lock(&kvm->irq_srcu);
irq_rt = srcu_dereference(kvm->irq_routing, &kvm->irq_srcu);
- BUG_ON(guest_irq >= irq_rt->nr_rt_entries);
+ if (guest_irq >= irq_rt->nr_rt_entries ||
+ hlist_empty(&irq_rt->map[guest_irq])) {
+ pr_warn_once("no route for guest_irq %u/%u (broken user space?)\n",
+ guest_irq, irq_rt->nr_rt_entries);
+ goto out;
+ }
hlist_for_each_entry(e, &irq_rt->map[guest_irq], link) {
if (e->type != KVM_IRQ_ROUTING_MSI)
@@ -11881,12 +11915,8 @@ static int vmx_update_pi_irte(struct kvm *kvm, unsigned int host_irq,
if (set)
ret = irq_set_vcpu_affinity(host_irq, &vcpu_info);
- else {
- /* suppress notification event before unposting */
- pi_set_sn(vcpu_to_pi_desc(vcpu));
+ else
ret = irq_set_vcpu_affinity(host_irq, NULL);
- pi_clear_sn(vcpu_to_pi_desc(vcpu));
- }
if (ret < 0) {
printk(KERN_INFO "%s: failed to update PI IRTE\n",
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 6069af86da3b..03869eb7fcd6 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -7225,16 +7225,25 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
int r;
sigset_t sigsaved;
- fpu__activate_curr(fpu);
+ fpu__initialize(fpu);
if (vcpu->sigset_active)
sigprocmask(SIG_SETMASK, &vcpu->sigset, &sigsaved);
if (unlikely(vcpu->arch.mp_state == KVM_MP_STATE_UNINITIALIZED)) {
+ if (kvm_run->immediate_exit) {
+ r = -EINTR;
+ goto out;
+ }
kvm_vcpu_block(vcpu);
kvm_apic_accept_events(vcpu);
kvm_clear_request(KVM_REQ_UNHALT, vcpu);
r = -EAGAIN;
+ if (signal_pending(current)) {
+ r = -EINTR;
+ vcpu->run->exit_reason = KVM_EXIT_INTR;
+ ++vcpu->stat.signal_exits;
+ }
goto out;
}
@@ -7971,7 +7980,7 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
BUG_ON(vcpu->kvm == NULL);
kvm = vcpu->kvm;
- vcpu->arch.apicv_active = kvm_x86_ops->get_enable_apicv();
+ vcpu->arch.apicv_active = kvm_x86_ops->get_enable_apicv(vcpu);
vcpu->arch.pv.pv_unhalted = false;
vcpu->arch.emulate_ctxt.ops = &emulate_ops;
if (!irqchip_in_kernel(kvm) || kvm_vcpu_is_reset_bsp(vcpu))
@@ -8452,6 +8461,9 @@ static inline bool kvm_vcpu_has_events(struct kvm_vcpu *vcpu)
if (vcpu->arch.pv.pv_unhalted)
return true;
+ if (vcpu->arch.exception.pending)
+ return true;
+
if (kvm_test_request(KVM_REQ_NMI, vcpu) ||
(vcpu->arch.nmi_pending &&
kvm_x86_ops->nmi_allowed(vcpu)))
@@ -8619,6 +8631,13 @@ static int apf_put_user(struct kvm_vcpu *vcpu, u32 val)
sizeof(val));
}
+static int apf_get_user(struct kvm_vcpu *vcpu, u32 *val)
+{
+
+ return kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.apf.data, val,
+ sizeof(u32));
+}
+
void kvm_arch_async_page_not_present(struct kvm_vcpu *vcpu,
struct kvm_async_pf *work)
{
@@ -8646,6 +8665,7 @@ void kvm_arch_async_page_present(struct kvm_vcpu *vcpu,
struct kvm_async_pf *work)
{
struct x86_exception fault;
+ u32 val;
if (work->wakeup_all)
work->arch.token = ~0; /* broadcast wakeup */
@@ -8653,15 +8673,26 @@ void kvm_arch_async_page_present(struct kvm_vcpu *vcpu,
kvm_del_async_pf_gfn(vcpu, work->arch.gfn);
trace_kvm_async_pf_ready(work->arch.token, work->gva);
- if ((vcpu->arch.apf.msr_val & KVM_ASYNC_PF_ENABLED) &&
- !apf_put_user(vcpu, KVM_PV_REASON_PAGE_READY)) {
- fault.vector = PF_VECTOR;
- fault.error_code_valid = true;
- fault.error_code = 0;
- fault.nested_page_fault = false;
- fault.address = work->arch.token;
- fault.async_page_fault = true;
- kvm_inject_page_fault(vcpu, &fault);
+ if (vcpu->arch.apf.msr_val & KVM_ASYNC_PF_ENABLED &&
+ !apf_get_user(vcpu, &val)) {
+ if (val == KVM_PV_REASON_PAGE_NOT_PRESENT &&
+ vcpu->arch.exception.pending &&
+ vcpu->arch.exception.nr == PF_VECTOR &&
+ !apf_put_user(vcpu, 0)) {
+ vcpu->arch.exception.injected = false;
+ vcpu->arch.exception.pending = false;
+ vcpu->arch.exception.nr = 0;
+ vcpu->arch.exception.has_error_code = false;
+ vcpu->arch.exception.error_code = 0;
+ } else if (!apf_put_user(vcpu, KVM_PV_REASON_PAGE_READY)) {
+ fault.vector = PF_VECTOR;
+ fault.error_code_valid = true;
+ fault.error_code = 0;
+ fault.nested_page_fault = false;
+ fault.address = work->arch.token;
+ fault.async_page_fault = true;
+ kvm_inject_page_fault(vcpu, &fault);
+ }
}
vcpu->arch.apf.halted = false;
vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE;
diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h
index 51e349cf5f45..d0b95b7a90b4 100644
--- a/arch/x86/kvm/x86.h
+++ b/arch/x86/kvm/x86.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARCH_X86_KVM_X86_H
#define ARCH_X86_KVM_X86_H
diff --git a/arch/x86/lib/Makefile b/arch/x86/lib/Makefile
index 34a74131a12c..457f681ef379 100644
--- a/arch/x86/lib/Makefile
+++ b/arch/x86/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for x86 specific library files.
#
diff --git a/arch/x86/lib/cache-smp.c b/arch/x86/lib/cache-smp.c
index 216a629a4a1a..1811fa4a1b1a 100644
--- a/arch/x86/lib/cache-smp.c
+++ b/arch/x86/lib/cache-smp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/smp.h>
#include <linux/export.h>
diff --git a/arch/x86/lib/copy_page_64.S b/arch/x86/lib/copy_page_64.S
index e8508156c99d..fd2d09afa097 100644
--- a/arch/x86/lib/copy_page_64.S
+++ b/arch/x86/lib/copy_page_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Written 2003 by Andi Kleen, based on a kernel by Evandro Menezes */
#include <linux/linkage.h>
diff --git a/arch/x86/lib/csum-partial_64.c b/arch/x86/lib/csum-partial_64.c
index 378e5d5bf9b1..9baca3e054be 100644
--- a/arch/x86/lib/csum-partial_64.c
+++ b/arch/x86/lib/csum-partial_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* arch/x86_64/lib/csum-partial.c
*
diff --git a/arch/x86/lib/delay.c b/arch/x86/lib/delay.c
index 29df077cb089..553f8fd23cc4 100644
--- a/arch/x86/lib/delay.c
+++ b/arch/x86/lib/delay.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Precise Delay Loops for i386
*
diff --git a/arch/x86/lib/getuser.S b/arch/x86/lib/getuser.S
index 37b62d412148..c97d935a29e8 100644
--- a/arch/x86/lib/getuser.S
+++ b/arch/x86/lib/getuser.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* __get_user functions.
*
diff --git a/arch/x86/lib/hweight.S b/arch/x86/lib/hweight.S
index 23d893cbc200..a14f9939c365 100644
--- a/arch/x86/lib/hweight.S
+++ b/arch/x86/lib/hweight.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/export.h>
diff --git a/arch/x86/lib/kaslr.c b/arch/x86/lib/kaslr.c
index ab2d1d73e9e7..79778ab200e4 100644
--- a/arch/x86/lib/kaslr.c
+++ b/arch/x86/lib/kaslr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Entropy functions used on early boot for KASLR base and memory
* randomization. The base randomization is done in the compressed
diff --git a/arch/x86/lib/memcpy_32.c b/arch/x86/lib/memcpy_32.c
index 2eab7d0bfedd..e565d1c9019e 100644
--- a/arch/x86/lib/memcpy_32.c
+++ b/arch/x86/lib/memcpy_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/string.h>
#include <linux/export.h>
diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S
index 15de86cd15b0..bbec69d8223b 100644
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Normally compiler builtins are used, but sometimes the compiler calls out
* of line code. Based on asm-i386/string.h.
diff --git a/arch/x86/lib/memset_64.S b/arch/x86/lib/memset_64.S
index 55b95db30a61..9bc861c71e75 100644
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright 2002 Andi Kleen, SuSE Labs */
#include <linux/linkage.h>
diff --git a/arch/x86/lib/misc.c b/arch/x86/lib/misc.c
index 76b373af03f0..a018ec4fba53 100644
--- a/arch/x86/lib/misc.c
+++ b/arch/x86/lib/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Count the digits of @val including a possible sign.
*
diff --git a/arch/x86/lib/mmx_32.c b/arch/x86/lib/mmx_32.c
index c2311a678332..4321fa02e18d 100644
--- a/arch/x86/lib/mmx_32.c
+++ b/arch/x86/lib/mmx_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* MMX 3DNow! library helper functions
*
diff --git a/arch/x86/lib/msr-reg-export.c b/arch/x86/lib/msr-reg-export.c
index ff29e8d39414..876b4168ab0a 100644
--- a/arch/x86/lib/msr-reg-export.c
+++ b/arch/x86/lib/msr-reg-export.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <asm/msr.h>
diff --git a/arch/x86/lib/msr-reg.S b/arch/x86/lib/msr-reg.S
index 10ffa7e8519f..ed33cbab3958 100644
--- a/arch/x86/lib/msr-reg.S
+++ b/arch/x86/lib/msr-reg.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <linux/errno.h>
#include <asm/asm.h>
diff --git a/arch/x86/lib/msr-smp.c b/arch/x86/lib/msr-smp.c
index ce68b6a9d7d1..693cce0be82d 100644
--- a/arch/x86/lib/msr-smp.c
+++ b/arch/x86/lib/msr-smp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/preempt.h>
#include <linux/smp.h>
diff --git a/arch/x86/lib/msr.c b/arch/x86/lib/msr.c
index 07764255b611..3bd905e10ee2 100644
--- a/arch/x86/lib/msr.c
+++ b/arch/x86/lib/msr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/percpu.h>
#include <linux/preempt.h>
diff --git a/arch/x86/lib/putuser.S b/arch/x86/lib/putuser.S
index cd5d716d2897..96dce5fe2a35 100644
--- a/arch/x86/lib/putuser.S
+++ b/arch/x86/lib/putuser.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* __put_user functions.
*
diff --git a/arch/x86/lib/string_32.c b/arch/x86/lib/string_32.c
index dc0ad12f80bb..d15fdae9656e 100644
--- a/arch/x86/lib/string_32.c
+++ b/arch/x86/lib/string_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Most of the string-functions are rather heavily hand-optimized,
* see especially strsep,strstr,str[c]spn. They should work, but are not
diff --git a/arch/x86/lib/strstr_32.c b/arch/x86/lib/strstr_32.c
index a03b1c750bfe..38f37df056f7 100644
--- a/arch/x86/lib/strstr_32.c
+++ b/arch/x86/lib/strstr_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/string.h>
#include <linux/export.h>
diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c
index bd057a4ffe6e..1b377f734e64 100644
--- a/arch/x86/lib/usercopy_32.c
+++ b/arch/x86/lib/usercopy_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* User address space access functions.
* The non inlined parts of asm-i386/uaccess.h are here.
diff --git a/arch/x86/math-emu/Makefile b/arch/x86/math-emu/Makefile
index 1b2dac174321..02211fc6f2ec 100644
--- a/arch/x86/math-emu/Makefile
+++ b/arch/x86/math-emu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for wm-FPU-emu
#
diff --git a/arch/x86/math-emu/control_w.h b/arch/x86/math-emu/control_w.h
index ae2274dbd305..60f4dcc5edc3 100644
--- a/arch/x86/math-emu/control_w.h
+++ b/arch/x86/math-emu/control_w.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| control_w.h |
| |
diff --git a/arch/x86/math-emu/div_Xsig.S b/arch/x86/math-emu/div_Xsig.S
index 066996dba6a2..ee08449d20fd 100644
--- a/arch/x86/math-emu/div_Xsig.S
+++ b/arch/x86/math-emu/div_Xsig.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.file "div_Xsig.S"
/*---------------------------------------------------------------------------+
| div_Xsig.S |
diff --git a/arch/x86/math-emu/div_small.S b/arch/x86/math-emu/div_small.S
index 2c71527bd917..8f5025c80ee0 100644
--- a/arch/x86/math-emu/div_small.S
+++ b/arch/x86/math-emu/div_small.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.file "div_small.S"
/*---------------------------------------------------------------------------+
| div_small.S |
diff --git a/arch/x86/math-emu/errors.c b/arch/x86/math-emu/errors.c
index 2ccc424a57d9..6b468517ab71 100644
--- a/arch/x86/math-emu/errors.c
+++ b/arch/x86/math-emu/errors.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| errors.c |
| |
diff --git a/arch/x86/math-emu/exception.h b/arch/x86/math-emu/exception.h
index 67f43a4683d5..75230b977577 100644
--- a/arch/x86/math-emu/exception.h
+++ b/arch/x86/math-emu/exception.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| exception.h |
| |
diff --git a/arch/x86/math-emu/fpu_arith.c b/arch/x86/math-emu/fpu_arith.c
index aeab24e083c4..09006dc474a0 100644
--- a/arch/x86/math-emu/fpu_arith.c
+++ b/arch/x86/math-emu/fpu_arith.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| fpu_arith.c |
| |
diff --git a/arch/x86/math-emu/fpu_asm.h b/arch/x86/math-emu/fpu_asm.h
index 955b932735a4..a83353d5271c 100644
--- a/arch/x86/math-emu/fpu_asm.h
+++ b/arch/x86/math-emu/fpu_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| fpu_asm.h |
| |
diff --git a/arch/x86/math-emu/fpu_aux.c b/arch/x86/math-emu/fpu_aux.c
index 024f6e971174..034748459482 100644
--- a/arch/x86/math-emu/fpu_aux.c
+++ b/arch/x86/math-emu/fpu_aux.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| fpu_aux.c |
| |
diff --git a/arch/x86/math-emu/fpu_emu.h b/arch/x86/math-emu/fpu_emu.h
index c9c320dccca1..a5a41ec58072 100644
--- a/arch/x86/math-emu/fpu_emu.h
+++ b/arch/x86/math-emu/fpu_emu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| fpu_emu.h |
| |
diff --git a/arch/x86/math-emu/fpu_entry.c b/arch/x86/math-emu/fpu_entry.c
index d4a7df2205b8..9e2ba7e667f6 100644
--- a/arch/x86/math-emu/fpu_entry.c
+++ b/arch/x86/math-emu/fpu_entry.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| fpu_entry.c |
| |
@@ -114,7 +115,7 @@ void math_emulate(struct math_emu_info *info)
struct desc_struct code_descriptor;
struct fpu *fpu = &current->thread.fpu;
- fpu__activate_curr(fpu);
+ fpu__initialize(fpu);
#ifdef RE_ENTRANT_CHECKING
if (emulating) {
diff --git a/arch/x86/math-emu/fpu_etc.c b/arch/x86/math-emu/fpu_etc.c
index 233e5af566f5..1b118fd93140 100644
--- a/arch/x86/math-emu/fpu_etc.c
+++ b/arch/x86/math-emu/fpu_etc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| fpu_etc.c |
| |
diff --git a/arch/x86/math-emu/fpu_proto.h b/arch/x86/math-emu/fpu_proto.h
index caff438b9c1d..70d35c200945 100644
--- a/arch/x86/math-emu/fpu_proto.h
+++ b/arch/x86/math-emu/fpu_proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FPU_PROTO_H
#define _FPU_PROTO_H
diff --git a/arch/x86/math-emu/fpu_system.h b/arch/x86/math-emu/fpu_system.h
index 699f329f1d40..c8b1b31ed7c4 100644
--- a/arch/x86/math-emu/fpu_system.h
+++ b/arch/x86/math-emu/fpu_system.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| fpu_system.h |
| |
diff --git a/arch/x86/math-emu/fpu_tags.c b/arch/x86/math-emu/fpu_tags.c
index d9c657cd7746..bff95d4e7dca 100644
--- a/arch/x86/math-emu/fpu_tags.c
+++ b/arch/x86/math-emu/fpu_tags.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| fpu_tags.c |
| |
diff --git a/arch/x86/math-emu/fpu_trig.c b/arch/x86/math-emu/fpu_trig.c
index ecd06680581c..783c509f957a 100644
--- a/arch/x86/math-emu/fpu_trig.c
+++ b/arch/x86/math-emu/fpu_trig.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| fpu_trig.c |
| |
diff --git a/arch/x86/math-emu/get_address.c b/arch/x86/math-emu/get_address.c
index c48967c6a0e2..b82ca14ba718 100644
--- a/arch/x86/math-emu/get_address.c
+++ b/arch/x86/math-emu/get_address.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| get_address.c |
| |
diff --git a/arch/x86/math-emu/load_store.c b/arch/x86/math-emu/load_store.c
index 1643054766eb..f821a9cd7753 100644
--- a/arch/x86/math-emu/load_store.c
+++ b/arch/x86/math-emu/load_store.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| load_store.c |
| |
diff --git a/arch/x86/math-emu/mul_Xsig.S b/arch/x86/math-emu/mul_Xsig.S
index 22e0631bb85a..3e489122a2b0 100644
--- a/arch/x86/math-emu/mul_Xsig.S
+++ b/arch/x86/math-emu/mul_Xsig.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| mul_Xsig.S |
| |
diff --git a/arch/x86/math-emu/poly.h b/arch/x86/math-emu/poly.h
index 168eb44c93c8..fc1c887ca073 100644
--- a/arch/x86/math-emu/poly.h
+++ b/arch/x86/math-emu/poly.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| poly.h |
| |
diff --git a/arch/x86/math-emu/poly_2xm1.c b/arch/x86/math-emu/poly_2xm1.c
index b00e9e10cdce..aa33006bafd5 100644
--- a/arch/x86/math-emu/poly_2xm1.c
+++ b/arch/x86/math-emu/poly_2xm1.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| poly_2xm1.c |
| |
diff --git a/arch/x86/math-emu/poly_atan.c b/arch/x86/math-emu/poly_atan.c
index 20c28e58e2d4..7e7412c5a1fe 100644
--- a/arch/x86/math-emu/poly_atan.c
+++ b/arch/x86/math-emu/poly_atan.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| poly_atan.c |
| |
diff --git a/arch/x86/math-emu/poly_l2.c b/arch/x86/math-emu/poly_l2.c
index 8e2ff4b28a0a..98b6949bb854 100644
--- a/arch/x86/math-emu/poly_l2.c
+++ b/arch/x86/math-emu/poly_l2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| poly_l2.c |
| |
diff --git a/arch/x86/math-emu/poly_sin.c b/arch/x86/math-emu/poly_sin.c
index b862039c728e..c192fba51526 100644
--- a/arch/x86/math-emu/poly_sin.c
+++ b/arch/x86/math-emu/poly_sin.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| poly_sin.c |
| |
diff --git a/arch/x86/math-emu/poly_tan.c b/arch/x86/math-emu/poly_tan.c
index 1875763e0c02..1f5b1d712323 100644
--- a/arch/x86/math-emu/poly_tan.c
+++ b/arch/x86/math-emu/poly_tan.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| poly_tan.c |
| |
diff --git a/arch/x86/math-emu/polynom_Xsig.S b/arch/x86/math-emu/polynom_Xsig.S
index a9aaf414135d..604f0b2d17e8 100644
--- a/arch/x86/math-emu/polynom_Xsig.S
+++ b/arch/x86/math-emu/polynom_Xsig.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| polynomial_Xsig.S |
| |
diff --git a/arch/x86/math-emu/reg_add_sub.c b/arch/x86/math-emu/reg_add_sub.c
index deea48b9f13a..29451dd07556 100644
--- a/arch/x86/math-emu/reg_add_sub.c
+++ b/arch/x86/math-emu/reg_add_sub.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| reg_add_sub.c |
| |
diff --git a/arch/x86/math-emu/reg_compare.c b/arch/x86/math-emu/reg_compare.c
index 19b33b50adfa..eacb5128fc09 100644
--- a/arch/x86/math-emu/reg_compare.c
+++ b/arch/x86/math-emu/reg_compare.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| reg_compare.c |
| |
diff --git a/arch/x86/math-emu/reg_constant.c b/arch/x86/math-emu/reg_constant.c
index 00548354912f..8dc9095bab22 100644
--- a/arch/x86/math-emu/reg_constant.c
+++ b/arch/x86/math-emu/reg_constant.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| reg_constant.c |
| |
diff --git a/arch/x86/math-emu/reg_constant.h b/arch/x86/math-emu/reg_constant.h
index 1bffaec3a134..f2fdd344dcaa 100644
--- a/arch/x86/math-emu/reg_constant.h
+++ b/arch/x86/math-emu/reg_constant.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| reg_constant.h |
| |
diff --git a/arch/x86/math-emu/reg_convert.c b/arch/x86/math-emu/reg_convert.c
index 108060779977..251180623ce0 100644
--- a/arch/x86/math-emu/reg_convert.c
+++ b/arch/x86/math-emu/reg_convert.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| reg_convert.c |
| |
diff --git a/arch/x86/math-emu/reg_divide.c b/arch/x86/math-emu/reg_divide.c
index 6827012db341..08c2f6de0288 100644
--- a/arch/x86/math-emu/reg_divide.c
+++ b/arch/x86/math-emu/reg_divide.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| reg_divide.c |
| |
diff --git a/arch/x86/math-emu/reg_ld_str.c b/arch/x86/math-emu/reg_ld_str.c
index 2c98965a60ba..d40ff45497b9 100644
--- a/arch/x86/math-emu/reg_ld_str.c
+++ b/arch/x86/math-emu/reg_ld_str.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| reg_ld_str.c |
| |
diff --git a/arch/x86/math-emu/reg_mul.c b/arch/x86/math-emu/reg_mul.c
index 36c37f71f713..d69618572f14 100644
--- a/arch/x86/math-emu/reg_mul.c
+++ b/arch/x86/math-emu/reg_mul.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*---------------------------------------------------------------------------+
| reg_mul.c |
| |
diff --git a/arch/x86/math-emu/reg_norm.S b/arch/x86/math-emu/reg_norm.S
index 53ac1a343c69..7f6b4392a15d 100644
--- a/arch/x86/math-emu/reg_norm.S
+++ b/arch/x86/math-emu/reg_norm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| reg_norm.S |
| |
diff --git a/arch/x86/math-emu/reg_round.S b/arch/x86/math-emu/reg_round.S
index 41af5b208d88..04563421ee7d 100644
--- a/arch/x86/math-emu/reg_round.S
+++ b/arch/x86/math-emu/reg_round.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.file "reg_round.S"
/*---------------------------------------------------------------------------+
| reg_round.S |
diff --git a/arch/x86/math-emu/reg_u_add.S b/arch/x86/math-emu/reg_u_add.S
index 3b1bc5e9b2f6..50fe9f8c893c 100644
--- a/arch/x86/math-emu/reg_u_add.S
+++ b/arch/x86/math-emu/reg_u_add.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.file "reg_u_add.S"
/*---------------------------------------------------------------------------+
| reg_u_add.S |
diff --git a/arch/x86/math-emu/reg_u_div.S b/arch/x86/math-emu/reg_u_div.S
index 796eb5ab921b..94d545e118e4 100644
--- a/arch/x86/math-emu/reg_u_div.S
+++ b/arch/x86/math-emu/reg_u_div.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.file "reg_u_div.S"
/*---------------------------------------------------------------------------+
| reg_u_div.S |
diff --git a/arch/x86/math-emu/reg_u_mul.S b/arch/x86/math-emu/reg_u_mul.S
index 6196f68cf3c1..21cde47fb3e5 100644
--- a/arch/x86/math-emu/reg_u_mul.S
+++ b/arch/x86/math-emu/reg_u_mul.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.file "reg_u_mul.S"
/*---------------------------------------------------------------------------+
| reg_u_mul.S |
diff --git a/arch/x86/math-emu/reg_u_sub.S b/arch/x86/math-emu/reg_u_sub.S
index d115b900919a..f05dea7dec38 100644
--- a/arch/x86/math-emu/reg_u_sub.S
+++ b/arch/x86/math-emu/reg_u_sub.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.file "reg_u_sub.S"
/*---------------------------------------------------------------------------+
| reg_u_sub.S |
diff --git a/arch/x86/math-emu/round_Xsig.S b/arch/x86/math-emu/round_Xsig.S
index 87c99749a495..226a51e991f1 100644
--- a/arch/x86/math-emu/round_Xsig.S
+++ b/arch/x86/math-emu/round_Xsig.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| round_Xsig.S |
| |
diff --git a/arch/x86/math-emu/shr_Xsig.S b/arch/x86/math-emu/shr_Xsig.S
index c8552edeec75..96f4779aa9c1 100644
--- a/arch/x86/math-emu/shr_Xsig.S
+++ b/arch/x86/math-emu/shr_Xsig.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.file "shr_Xsig.S"
/*---------------------------------------------------------------------------+
| shr_Xsig.S |
diff --git a/arch/x86/math-emu/status_w.h b/arch/x86/math-emu/status_w.h
index 54a3f226982d..b77bafec9526 100644
--- a/arch/x86/math-emu/status_w.h
+++ b/arch/x86/math-emu/status_w.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*---------------------------------------------------------------------------+
| status_w.h |
| |
diff --git a/arch/x86/math-emu/wm_shrx.S b/arch/x86/math-emu/wm_shrx.S
index 340dd6897f85..d588874eb6fb 100644
--- a/arch/x86/math-emu/wm_shrx.S
+++ b/arch/x86/math-emu/wm_shrx.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.file "wm_shrx.S"
/*---------------------------------------------------------------------------+
| wm_shrx.S |
diff --git a/arch/x86/math-emu/wm_sqrt.S b/arch/x86/math-emu/wm_sqrt.S
index 695afae38fdf..f031c0e19356 100644
--- a/arch/x86/math-emu/wm_sqrt.S
+++ b/arch/x86/math-emu/wm_sqrt.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.file "wm_sqrt.S"
/*---------------------------------------------------------------------------+
| wm_sqrt.S |
diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile
index 72bf8c01c6e3..7ba7f3d7f477 100644
--- a/arch/x86/mm/Makefile
+++ b/arch/x86/mm/Makefile
@@ -1,5 +1,13 @@
-# Kernel does not boot with instrumentation of tlb.c.
-KCOV_INSTRUMENT_tlb.o := n
+# SPDX-License-Identifier: GPL-2.0
+# Kernel does not boot with instrumentation of tlb.c and mem_encrypt.c
+KCOV_INSTRUMENT_tlb.o := n
+KCOV_INSTRUMENT_mem_encrypt.o := n
+
+KASAN_SANITIZE_mem_encrypt.o := n
+
+ifdef CONFIG_FUNCTION_TRACER
+CFLAGS_REMOVE_mem_encrypt.o = -pg
+endif
obj-y := init.o init_$(BITS).o fault.o ioremap.o extable.o pageattr.o mmap.o \
pat.o pgtable.o physaddr.o setup_nx.o tlb.o
diff --git a/arch/x86/mm/amdtopology.c b/arch/x86/mm/amdtopology.c
index 91f501b2da3b..048c761d97b0 100644
--- a/arch/x86/mm/amdtopology.c
+++ b/arch/x86/mm/amdtopology.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* AMD NUMA support.
* Discover the memory map and associated nodes.
diff --git a/arch/x86/mm/extable.c b/arch/x86/mm/extable.c
index c076f710de4c..c3521e2be396 100644
--- a/arch/x86/mm/extable.c
+++ b/arch/x86/mm/extable.c
@@ -2,6 +2,7 @@
#include <linux/uaccess.h>
#include <linux/sched/debug.h>
+#include <asm/fpu/internal.h>
#include <asm/traps.h>
#include <asm/kdebug.h>
@@ -78,6 +79,29 @@ bool ex_handler_refcount(const struct exception_table_entry *fixup,
}
EXPORT_SYMBOL_GPL(ex_handler_refcount);
+/*
+ * Handler for when we fail to restore a task's FPU state. We should never get
+ * here because the FPU state of a task using the FPU (task->thread.fpu.state)
+ * should always be valid. However, past bugs have allowed userspace to set
+ * reserved bits in the XSAVE area using PTRACE_SETREGSET or sys_rt_sigreturn().
+ * These caused XRSTOR to fail when switching to the task, leaking the FPU
+ * registers of the task previously executing on the CPU. Mitigate this class
+ * of vulnerability by restoring from the initial state (essentially, zeroing
+ * out all the FPU registers) if we can't restore from the task's FPU state.
+ */
+bool ex_handler_fprestore(const struct exception_table_entry *fixup,
+ struct pt_regs *regs, int trapnr)
+{
+ regs->ip = ex_fixup_addr(fixup);
+
+ WARN_ONCE(1, "Bad FPU state detected at %pB, reinitializing FPU registers.",
+ (void *)instruction_pointer(regs));
+
+ __copy_kernel_to_fpregs(&init_fpstate, -1);
+ return true;
+}
+EXPORT_SYMBOL_GPL(ex_handler_fprestore);
+
bool ex_handler_ext(const struct exception_table_entry *fixup,
struct pt_regs *regs, int trapnr)
{
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index b836a7274e12..b0ff378650a9 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1995 Linus Torvalds
* Copyright (C) 2001, 2002 Andi Kleen, SuSE Labs.
@@ -192,8 +193,7 @@ is_prefetch(struct pt_regs *regs, unsigned long error_code, unsigned long addr)
* 6. T1 : reaches here, sees vma_pkey(vma)=5, when we really
* faulted on a pte with its pkey=4.
*/
-static void fill_sig_info_pkey(int si_code, siginfo_t *info,
- struct vm_area_struct *vma)
+static void fill_sig_info_pkey(int si_code, siginfo_t *info, u32 *pkey)
{
/* This is effectively an #ifdef */
if (!boot_cpu_has(X86_FEATURE_OSPKE))
@@ -209,7 +209,7 @@ static void fill_sig_info_pkey(int si_code, siginfo_t *info,
* valid VMA, so we should never reach this without a
* valid VMA.
*/
- if (!vma) {
+ if (!pkey) {
WARN_ONCE(1, "PKU fault with no VMA passed in");
info->si_pkey = 0;
return;
@@ -219,13 +219,12 @@ static void fill_sig_info_pkey(int si_code, siginfo_t *info,
* absolutely guranteed to be 100% accurate because of
* the race explained above.
*/
- info->si_pkey = vma_pkey(vma);
+ info->si_pkey = *pkey;
}
static void
force_sig_info_fault(int si_signo, int si_code, unsigned long address,
- struct task_struct *tsk, struct vm_area_struct *vma,
- int fault)
+ struct task_struct *tsk, u32 *pkey, int fault)
{
unsigned lsb = 0;
siginfo_t info;
@@ -240,7 +239,7 @@ force_sig_info_fault(int si_signo, int si_code, unsigned long address,
lsb = PAGE_SHIFT;
info.si_addr_lsb = lsb;
- fill_sig_info_pkey(si_code, &info, vma);
+ fill_sig_info_pkey(si_code, &info, pkey);
force_sig_info(si_signo, &info, tsk);
}
@@ -762,8 +761,6 @@ no_context(struct pt_regs *regs, unsigned long error_code,
struct task_struct *tsk = current;
unsigned long flags;
int sig;
- /* No context means no VMA to pass down */
- struct vm_area_struct *vma = NULL;
/* Are we prepared to handle this kernel fault? */
if (fixup_exception(regs, X86_TRAP_PF)) {
@@ -788,7 +785,7 @@ no_context(struct pt_regs *regs, unsigned long error_code,
/* XXX: hwpoison faults will set the wrong code. */
force_sig_info_fault(signal, si_code, address,
- tsk, vma, 0);
+ tsk, NULL, 0);
}
/*
@@ -806,7 +803,6 @@ no_context(struct pt_regs *regs, unsigned long error_code,
if (is_vmalloc_addr((void *)address) &&
(((unsigned long)tsk->stack - 1 - address < PAGE_SIZE) ||
address - ((unsigned long)tsk->stack + THREAD_SIZE) < PAGE_SIZE)) {
- register void *__sp asm("rsp");
unsigned long stack = this_cpu_read(orig_ist.ist[DOUBLEFAULT_STACK]) - sizeof(void *);
/*
* We're likely to be running with very little stack space
@@ -821,7 +817,7 @@ no_context(struct pt_regs *regs, unsigned long error_code,
asm volatile ("movq %[stack], %%rsp\n\t"
"call handle_stack_overflow\n\t"
"1: jmp 1b"
- : "+r" (__sp)
+ : ASM_CALL_CONSTRAINT
: "D" ("kernel stack overflow (page fault)"),
"S" (regs), "d" (address),
[stack] "rm" (stack));
@@ -897,8 +893,7 @@ show_signal_msg(struct pt_regs *regs, unsigned long error_code,
static void
__bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
- unsigned long address, struct vm_area_struct *vma,
- int si_code)
+ unsigned long address, u32 *pkey, int si_code)
{
struct task_struct *tsk = current;
@@ -946,7 +941,7 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
tsk->thread.error_code = error_code;
tsk->thread.trap_nr = X86_TRAP_PF;
- force_sig_info_fault(SIGSEGV, si_code, address, tsk, vma, 0);
+ force_sig_info_fault(SIGSEGV, si_code, address, tsk, pkey, 0);
return;
}
@@ -959,9 +954,9 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
static noinline void
bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
- unsigned long address, struct vm_area_struct *vma)
+ unsigned long address, u32 *pkey)
{
- __bad_area_nosemaphore(regs, error_code, address, vma, SEGV_MAPERR);
+ __bad_area_nosemaphore(regs, error_code, address, pkey, SEGV_MAPERR);
}
static void
@@ -969,6 +964,10 @@ __bad_area(struct pt_regs *regs, unsigned long error_code,
unsigned long address, struct vm_area_struct *vma, int si_code)
{
struct mm_struct *mm = current->mm;
+ u32 pkey;
+
+ if (vma)
+ pkey = vma_pkey(vma);
/*
* Something tried to access memory that isn't in our memory map..
@@ -976,7 +975,8 @@ __bad_area(struct pt_regs *regs, unsigned long error_code,
*/
up_read(&mm->mmap_sem);
- __bad_area_nosemaphore(regs, error_code, address, vma, si_code);
+ __bad_area_nosemaphore(regs, error_code, address,
+ (vma) ? &pkey : NULL, si_code);
}
static noinline void
@@ -1019,7 +1019,7 @@ bad_area_access_error(struct pt_regs *regs, unsigned long error_code,
static void
do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
- struct vm_area_struct *vma, unsigned int fault)
+ u32 *pkey, unsigned int fault)
{
struct task_struct *tsk = current;
int code = BUS_ADRERR;
@@ -1046,13 +1046,12 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
code = BUS_MCEERR_AR;
}
#endif
- force_sig_info_fault(SIGBUS, code, address, tsk, vma, fault);
+ force_sig_info_fault(SIGBUS, code, address, tsk, pkey, fault);
}
static noinline void
mm_fault_error(struct pt_regs *regs, unsigned long error_code,
- unsigned long address, struct vm_area_struct *vma,
- unsigned int fault)
+ unsigned long address, u32 *pkey, unsigned int fault)
{
if (fatal_signal_pending(current) && !(error_code & PF_USER)) {
no_context(regs, error_code, address, 0, 0);
@@ -1076,9 +1075,9 @@ mm_fault_error(struct pt_regs *regs, unsigned long error_code,
} else {
if (fault & (VM_FAULT_SIGBUS|VM_FAULT_HWPOISON|
VM_FAULT_HWPOISON_LARGE))
- do_sigbus(regs, error_code, address, vma, fault);
+ do_sigbus(regs, error_code, address, pkey, fault);
else if (fault & VM_FAULT_SIGSEGV)
- bad_area_nosemaphore(regs, error_code, address, vma);
+ bad_area_nosemaphore(regs, error_code, address, pkey);
else
BUG();
}
@@ -1268,6 +1267,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
struct mm_struct *mm;
int fault, major = 0;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
+ u32 pkey;
tsk = current;
mm = tsk->mm;
@@ -1441,7 +1441,17 @@ good_area:
* make sure we exit gracefully rather than endlessly redo
* the fault. Since we never set FAULT_FLAG_RETRY_NOWAIT, if
* we get VM_FAULT_RETRY back, the mmap_sem has been unlocked.
+ *
+ * Note that handle_userfault() may also release and reacquire mmap_sem
+ * (and not return with VM_FAULT_RETRY), when returning to userland to
+ * repeat the page fault later with a VM_FAULT_NOPAGE retval
+ * (potentially after handling any pending signal during the return to
+ * userland). The return to userland is identified whenever
+ * FAULT_FLAG_USER|FAULT_FLAG_KILLABLE are both set in flags.
+ * Thus we have to be careful about not touching vma after handling the
+ * fault, so we read the pkey beforehand.
*/
+ pkey = vma_pkey(vma);
fault = handle_mm_fault(vma, address, flags);
major |= fault & VM_FAULT_MAJOR;
@@ -1470,7 +1480,7 @@ good_area:
up_read(&mm->mmap_sem);
if (unlikely(fault & VM_FAULT_ERROR)) {
- mm_fault_error(regs, error_code, address, vma, fault);
+ mm_fault_error(regs, error_code, address, &pkey, fault);
return;
}
diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c
index 6d06cf33e3de..8ae0000cbdb3 100644
--- a/arch/x86/mm/hugetlbpage.c
+++ b/arch/x86/mm/hugetlbpage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IA-32 Huge TLB Page Support for Kernel.
*
diff --git a/arch/x86/mm/ident_map.c b/arch/x86/mm/ident_map.c
index 31cea988fa36..ab33a32df2a8 100644
--- a/arch/x86/mm/ident_map.c
+++ b/arch/x86/mm/ident_map.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Helper routines for building identity mapping page tables. This is
* included by both the compressed kernel and the regular kernel.
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index 7777ccc0e9f9..af5c1ed21d43 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -19,6 +19,7 @@
#include <asm/microcode.h>
#include <asm/kaslr.h>
#include <asm/hypervisor.h>
+#include <asm/cpufeature.h>
/*
* We need to define the tracepoints somewhere, and tlb.c
@@ -193,6 +194,38 @@ static void __init probe_page_size_mask(void)
}
}
+static void setup_pcid(void)
+{
+#ifdef CONFIG_X86_64
+ if (boot_cpu_has(X86_FEATURE_PCID)) {
+ if (boot_cpu_has(X86_FEATURE_PGE)) {
+ /*
+ * This can't be cr4_set_bits_and_update_boot() --
+ * the trampoline code can't handle CR4.PCIDE and
+ * it wouldn't do any good anyway. Despite the name,
+ * cr4_set_bits_and_update_boot() doesn't actually
+ * cause the bits in question to remain set all the
+ * way through the secondary boot asm.
+ *
+ * Instead, we brute-force it and set CR4.PCIDE
+ * manually in start_secondary().
+ */
+ cr4_set_bits(X86_CR4_PCIDE);
+ } else {
+ /*
+ * flush_tlb_all(), as currently implemented, won't
+ * work if PCID is on but PGE is not. Since that
+ * combination doesn't exist on real hardware, there's
+ * no reason to try to fully support it, but it's
+ * polite to avoid corrupting data if we're on
+ * an improperly configured VM.
+ */
+ setup_clear_cpu_cap(X86_FEATURE_PCID);
+ }
+ }
+#endif
+}
+
#ifdef CONFIG_X86_32
#define NR_RANGE_MR 3
#else /* CONFIG_X86_64 */
@@ -592,6 +625,7 @@ void __init init_mem_mapping(void)
unsigned long end;
probe_page_size_mask();
+ setup_pcid();
#ifdef CONFIG_X86_64
end = max_pfn << PAGE_SHIFT;
diff --git a/arch/x86/mm/kasan_init_64.c b/arch/x86/mm/kasan_init_64.c
index bc84b73684b7..8f5be3eb40dd 100644
--- a/arch/x86/mm/kasan_init_64.c
+++ b/arch/x86/mm/kasan_init_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define DISABLE_BRANCH_PROFILING
#define pr_fmt(fmt) "kasan: " fmt
#include <linux/bootmem.h>
diff --git a/arch/x86/mm/kaslr.c b/arch/x86/mm/kaslr.c
index af599167fe3c..879ef930e2c2 100644
--- a/arch/x86/mm/kaslr.c
+++ b/arch/x86/mm/kaslr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file implements KASLR memory randomization for x86_64. It randomizes
* the virtual address space of kernel memory regions (physical memory
diff --git a/arch/x86/mm/kmemcheck/error.c b/arch/x86/mm/kmemcheck/error.c
index dab41876cdd5..872ec4159a68 100644
--- a/arch/x86/mm/kmemcheck/error.c
+++ b/arch/x86/mm/kmemcheck/error.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/interrupt.h>
#include <linux/kdebug.h>
#include <linux/kmemcheck.h>
diff --git a/arch/x86/mm/kmemcheck/error.h b/arch/x86/mm/kmemcheck/error.h
index 0efc2e8d0a20..39f80d7a874d 100644
--- a/arch/x86/mm/kmemcheck/error.h
+++ b/arch/x86/mm/kmemcheck/error.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARCH__X86__MM__KMEMCHECK__ERROR_H
#define ARCH__X86__MM__KMEMCHECK__ERROR_H
diff --git a/arch/x86/mm/kmemcheck/opcode.c b/arch/x86/mm/kmemcheck/opcode.c
index 324aa3f07237..df8109ddf7fe 100644
--- a/arch/x86/mm/kmemcheck/opcode.c
+++ b/arch/x86/mm/kmemcheck/opcode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include "opcode.h"
diff --git a/arch/x86/mm/kmemcheck/opcode.h b/arch/x86/mm/kmemcheck/opcode.h
index 6956aad66b5b..51a1ce94c24a 100644
--- a/arch/x86/mm/kmemcheck/opcode.h
+++ b/arch/x86/mm/kmemcheck/opcode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARCH__X86__MM__KMEMCHECK__OPCODE_H
#define ARCH__X86__MM__KMEMCHECK__OPCODE_H
diff --git a/arch/x86/mm/kmemcheck/pte.c b/arch/x86/mm/kmemcheck/pte.c
index 4ead26eeaf96..8a03be90272a 100644
--- a/arch/x86/mm/kmemcheck/pte.c
+++ b/arch/x86/mm/kmemcheck/pte.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <asm/pgtable.h>
diff --git a/arch/x86/mm/kmemcheck/pte.h b/arch/x86/mm/kmemcheck/pte.h
index 9f5966456492..b595612382c2 100644
--- a/arch/x86/mm/kmemcheck/pte.h
+++ b/arch/x86/mm/kmemcheck/pte.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARCH__X86__MM__KMEMCHECK__PTE_H
#define ARCH__X86__MM__KMEMCHECK__PTE_H
diff --git a/arch/x86/mm/kmemcheck/selftest.c b/arch/x86/mm/kmemcheck/selftest.c
index aef7140c0063..7ce0be1f99eb 100644
--- a/arch/x86/mm/kmemcheck/selftest.c
+++ b/arch/x86/mm/kmemcheck/selftest.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bug.h>
#include <linux/kernel.h>
diff --git a/arch/x86/mm/kmemcheck/selftest.h b/arch/x86/mm/kmemcheck/selftest.h
index 8fed4fe11f95..8d759aae453d 100644
--- a/arch/x86/mm/kmemcheck/selftest.h
+++ b/arch/x86/mm/kmemcheck/selftest.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARCH_X86_MM_KMEMCHECK_SELFTEST_H
#define ARCH_X86_MM_KMEMCHECK_SELFTEST_H
diff --git a/arch/x86/mm/kmemcheck/shadow.h b/arch/x86/mm/kmemcheck/shadow.h
index ff0b2f70fbcb..49768dc18664 100644
--- a/arch/x86/mm/kmemcheck/shadow.h
+++ b/arch/x86/mm/kmemcheck/shadow.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARCH__X86__MM__KMEMCHECK__SHADOW_H
#define ARCH__X86__MM__KMEMCHECK__SHADOW_H
diff --git a/arch/x86/mm/kmmio.c b/arch/x86/mm/kmmio.c
index afc47f5c9531..c21c2ed04612 100644
--- a/arch/x86/mm/kmmio.c
+++ b/arch/x86/mm/kmmio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Support for MMIO probes.
* Benfit many code from kprobes
* (C) 2002 Louis Zhuang <louis.zhuang@intel.com>.
diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c
index 3fcc8e01683b..16c5f37933a2 100644
--- a/arch/x86/mm/mem_encrypt.c
+++ b/arch/x86/mm/mem_encrypt.c
@@ -10,6 +10,8 @@
* published by the Free Software Foundation.
*/
+#define DISABLE_BRANCH_PROFILING
+
#include <linux/linkage.h>
#include <linux/init.h>
#include <linux/mm.h>
diff --git a/arch/x86/mm/mm_internal.h b/arch/x86/mm/mm_internal.h
index 62474ba66c8e..4e1f6e1b8159 100644
--- a/arch/x86/mm/mm_internal.h
+++ b/arch/x86/mm/mm_internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __X86_MM_INTERNAL_H
#define __X86_MM_INTERNAL_H
diff --git a/arch/x86/mm/mpx.c b/arch/x86/mm/mpx.c
index 9ceaa955d2ba..7eb06701a935 100644
--- a/arch/x86/mm/mpx.c
+++ b/arch/x86/mm/mpx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* mpx.c - Memory Protection eXtensions
*
diff --git a/arch/x86/mm/numa_64.c b/arch/x86/mm/numa_64.c
index 9405ffc91502..066f3511d5f1 100644
--- a/arch/x86/mm/numa_64.c
+++ b/arch/x86/mm/numa_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generic VM initialization for x86-64 NUMA setups.
* Copyright 2002,2003 Andi Kleen, SuSE Labs.
diff --git a/arch/x86/mm/numa_emulation.c b/arch/x86/mm/numa_emulation.c
index d805162e6045..34a2a3bfde9c 100644
--- a/arch/x86/mm/numa_emulation.c
+++ b/arch/x86/mm/numa_emulation.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* NUMA emulation
*/
diff --git a/arch/x86/mm/numa_internal.h b/arch/x86/mm/numa_internal.h
index ad86ec91e640..86860f279662 100644
--- a/arch/x86/mm/numa_internal.h
+++ b/arch/x86/mm/numa_internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __X86_MM_NUMA_INTERNAL_H
#define __X86_MM_NUMA_INTERNAL_H
diff --git a/arch/x86/mm/pageattr-test.c b/arch/x86/mm/pageattr-test.c
index 5f169d5d76a8..a25588ad75ef 100644
--- a/arch/x86/mm/pageattr-test.c
+++ b/arch/x86/mm/pageattr-test.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* self test for change_page_attr.
*
diff --git a/arch/x86/mm/pat_internal.h b/arch/x86/mm/pat_internal.h
index a739bfc40690..eeb5caeb089b 100644
--- a/arch/x86/mm/pat_internal.h
+++ b/arch/x86/mm/pat_internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PAT_INTERNAL_H_
#define __PAT_INTERNAL_H_
diff --git a/arch/x86/mm/pat_rbtree.c b/arch/x86/mm/pat_rbtree.c
index d76485b22824..fa16036fa592 100644
--- a/arch/x86/mm/pat_rbtree.c
+++ b/arch/x86/mm/pat_rbtree.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Handle caching attributes in page tables (PAT)
*
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
index 218834a3e9ad..17ebc5a978cc 100644
--- a/arch/x86/mm/pgtable.c
+++ b/arch/x86/mm/pgtable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <linux/gfp.h>
#include <asm/pgalloc.h>
@@ -426,10 +427,8 @@ int ptep_set_access_flags(struct vm_area_struct *vma,
{
int changed = !pte_same(*ptep, entry);
- if (changed && dirty) {
+ if (changed && dirty)
*ptep = entry;
- pte_update(vma->vm_mm, address, ptep);
- }
return changed;
}
@@ -486,9 +485,6 @@ int ptep_test_and_clear_young(struct vm_area_struct *vma,
ret = test_and_clear_bit(_PAGE_BIT_ACCESSED,
(unsigned long *) &ptep->pte);
- if (ret)
- pte_update(vma->vm_mm, addr, ptep);
-
return ret;
}
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
index b9bd5b8b14fa..6b9bf023a700 100644
--- a/arch/x86/mm/pgtable_32.c
+++ b/arch/x86/mm/pgtable_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/errno.h>
diff --git a/arch/x86/mm/physaddr.c b/arch/x86/mm/physaddr.c
index cfc3b9121ce4..7f9acb68324c 100644
--- a/arch/x86/mm/physaddr.c
+++ b/arch/x86/mm/physaddr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bootmem.h>
#include <linux/mmdebug.h>
#include <linux/export.h>
diff --git a/arch/x86/mm/physaddr.h b/arch/x86/mm/physaddr.h
index a3cd5a0c97b3..9f6419cafc32 100644
--- a/arch/x86/mm/physaddr.h
+++ b/arch/x86/mm/physaddr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/processor.h>
static inline int phys_addr_valid(resource_size_t addr)
diff --git a/arch/x86/mm/pkeys.c b/arch/x86/mm/pkeys.c
index 2dab69a706ec..d7bc0eea20a5 100644
--- a/arch/x86/mm/pkeys.c
+++ b/arch/x86/mm/pkeys.c
@@ -18,7 +18,6 @@
#include <asm/cpufeature.h> /* boot_cpu_has, ... */
#include <asm/mmu_context.h> /* vma_pkey() */
-#include <asm/fpu/internal.h> /* fpregs_active() */
int __execute_only_pkey(struct mm_struct *mm)
{
@@ -45,7 +44,7 @@ int __execute_only_pkey(struct mm_struct *mm)
*/
preempt_disable();
if (!need_to_set_mm_pkey &&
- fpregs_active() &&
+ current->thread.fpu.initialized &&
!__pkru_allows_read(read_pkru(), execute_only_pkey)) {
preempt_enable();
return execute_only_pkey;
diff --git a/arch/x86/mm/setup_nx.c b/arch/x86/mm/setup_nx.c
index f65a33f505b6..adb3c5784dac 100644
--- a/arch/x86/mm/setup_nx.c
+++ b/arch/x86/mm/setup_nx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/spinlock.h>
#include <linux/errno.h>
#include <linux/init.h>
diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c
index 3ea20d61b523..dac07e4f5834 100644
--- a/arch/x86/mm/srat.c
+++ b/arch/x86/mm/srat.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ACPI 3.0 based NUMA setup
* Copyright 2004 Andi Kleen, SuSE Labs.
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
index 37689a7cc03b..0f3d0cea4d00 100644
--- a/arch/x86/mm/tlb.c
+++ b/arch/x86/mm/tlb.c
@@ -30,6 +30,7 @@
atomic64_t last_mm_ctx_id = ATOMIC64_INIT(1);
+
static void choose_new_asid(struct mm_struct *next, u64 next_tlb_gen,
u16 *new_asid, bool *need_flush)
{
@@ -80,7 +81,7 @@ void leave_mm(int cpu)
return;
/* Warn if we're not lazy. */
- WARN_ON(cpumask_test_cpu(smp_processor_id(), mm_cpumask(loaded_mm)));
+ WARN_ON(!this_cpu_read(cpu_tlbstate.is_lazy));
switch_mm(NULL, &init_mm, NULL);
}
@@ -121,47 +122,45 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next,
* hypothetical buggy code that directly switches to swapper_pg_dir
* without going through leave_mm() / switch_mm_irqs_off() or that
* does something like write_cr3(read_cr3_pa()).
+ *
+ * Only do this check if CONFIG_DEBUG_VM=y because __read_cr3()
+ * isn't free.
*/
- VM_BUG_ON(__read_cr3() != (__sme_pa(real_prev->pgd) | prev_asid));
+#ifdef CONFIG_DEBUG_VM
+ if (WARN_ON_ONCE(__read_cr3() != build_cr3(real_prev, prev_asid))) {
+ /*
+ * If we were to BUG here, we'd be very likely to kill
+ * the system so hard that we don't see the call trace.
+ * Try to recover instead by ignoring the error and doing
+ * a global flush to minimize the chance of corruption.
+ *
+ * (This is far from being a fully correct recovery.
+ * Architecturally, the CPU could prefetch something
+ * back into an incorrect ASID slot and leave it there
+ * to cause trouble down the road. It's better than
+ * nothing, though.)
+ */
+ __flush_tlb_all();
+ }
+#endif
+ this_cpu_write(cpu_tlbstate.is_lazy, false);
if (real_prev == next) {
- VM_BUG_ON(this_cpu_read(cpu_tlbstate.ctxs[prev_asid].ctx_id) !=
- next->context.ctx_id);
-
- if (cpumask_test_cpu(cpu, mm_cpumask(next))) {
- /*
- * There's nothing to do: we weren't lazy, and we
- * aren't changing our mm. We don't need to flush
- * anything, nor do we need to update CR3, CR4, or
- * LDTR.
- */
- return;
- }
-
- /* Resume remote flushes and then read tlb_gen. */
- cpumask_set_cpu(cpu, mm_cpumask(next));
- next_tlb_gen = atomic64_read(&next->context.tlb_gen);
-
- if (this_cpu_read(cpu_tlbstate.ctxs[prev_asid].tlb_gen) <
- next_tlb_gen) {
- /*
- * Ideally, we'd have a flush_tlb() variant that
- * takes the known CR3 value as input. This would
- * be faster on Xen PV and on hypothetical CPUs
- * on which INVPCID is fast.
- */
- this_cpu_write(cpu_tlbstate.ctxs[prev_asid].tlb_gen,
- next_tlb_gen);
- write_cr3(__sme_pa(next->pgd) | prev_asid);
- trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH,
- TLB_FLUSH_ALL);
- }
+ VM_WARN_ON(this_cpu_read(cpu_tlbstate.ctxs[prev_asid].ctx_id) !=
+ next->context.ctx_id);
/*
- * We just exited lazy mode, which means that CR4 and/or LDTR
- * may be stale. (Changes to the required CR4 and LDTR states
- * are not reflected in tlb_gen.)
+ * We don't currently support having a real mm loaded without
+ * our cpu set in mm_cpumask(). We have all the bookkeeping
+ * in place to figure out whether we would need to flush
+ * if our cpu were cleared in mm_cpumask(), but we don't
+ * currently use it.
*/
+ if (WARN_ON_ONCE(real_prev != &init_mm &&
+ !cpumask_test_cpu(cpu, mm_cpumask(next))))
+ cpumask_set_cpu(cpu, mm_cpumask(next));
+
+ return;
} else {
u16 new_asid;
bool need_flush;
@@ -172,7 +171,7 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next,
* mapped in the new pgd, we'll double-fault. Forcibly
* map it.
*/
- unsigned int index = pgd_index(current_stack_pointer());
+ unsigned int index = pgd_index(current_stack_pointer);
pgd_t *pgd = next->pgd + index;
if (unlikely(pgd_none(*pgd)))
@@ -180,10 +179,9 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next,
}
/* Stop remote flushes for the previous mm */
- if (cpumask_test_cpu(cpu, mm_cpumask(real_prev)))
- cpumask_clear_cpu(cpu, mm_cpumask(real_prev));
-
- VM_WARN_ON_ONCE(cpumask_test_cpu(cpu, mm_cpumask(next)));
+ VM_WARN_ON_ONCE(!cpumask_test_cpu(cpu, mm_cpumask(real_prev)) &&
+ real_prev != &init_mm);
+ cpumask_clear_cpu(cpu, mm_cpumask(real_prev));
/*
* Start remote flushes and then read tlb_gen.
@@ -196,12 +194,12 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next,
if (need_flush) {
this_cpu_write(cpu_tlbstate.ctxs[new_asid].ctx_id, next->context.ctx_id);
this_cpu_write(cpu_tlbstate.ctxs[new_asid].tlb_gen, next_tlb_gen);
- write_cr3(__sme_pa(next->pgd) | new_asid);
+ write_cr3(build_cr3(next, new_asid));
trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH,
TLB_FLUSH_ALL);
} else {
/* The new ASID is already up to date. */
- write_cr3(__sme_pa(next->pgd) | new_asid | CR3_NOFLUSH);
+ write_cr3(build_cr3_noflush(next, new_asid));
trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, 0);
}
@@ -214,6 +212,40 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next,
}
/*
+ * Please ignore the name of this function. It should be called
+ * switch_to_kernel_thread().
+ *
+ * enter_lazy_tlb() is a hint from the scheduler that we are entering a
+ * kernel thread or other context without an mm. Acceptable implementations
+ * include doing nothing whatsoever, switching to init_mm, or various clever
+ * lazy tricks to try to minimize TLB flushes.
+ *
+ * The scheduler reserves the right to call enter_lazy_tlb() several times
+ * in a row. It will notify us that we're going back to a real mm by
+ * calling switch_mm_irqs_off().
+ */
+void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
+{
+ if (this_cpu_read(cpu_tlbstate.loaded_mm) == &init_mm)
+ return;
+
+ if (tlb_defer_switch_to_init_mm()) {
+ /*
+ * There's a significant optimization that may be possible
+ * here. We have accurate enough TLB flush tracking that we
+ * don't need to maintain coherence of TLB per se when we're
+ * lazy. We do, however, need to maintain coherence of
+ * paging-structure caches. We could, in principle, leave our
+ * old mm loaded and only switch to init_mm when
+ * tlb_remove_page() happens.
+ */
+ this_cpu_write(cpu_tlbstate.is_lazy, true);
+ } else {
+ switch_mm(NULL, &init_mm, NULL);
+ }
+}
+
+/*
* Call this when reinitializing a CPU. It fixes the following potential
* problems:
*
@@ -245,7 +277,7 @@ void initialize_tlbstate_and_flush(void)
!(cr4_read_shadow() & X86_CR4_PCIDE));
/* Force ASID 0 and force a TLB flush. */
- write_cr3(cr3 & ~CR3_PCID_MASK);
+ write_cr3(build_cr3(mm, 0));
/* Reinitialize tlbstate. */
this_cpu_write(cpu_tlbstate.loaded_mm_asid, 0);
@@ -284,16 +316,20 @@ static void flush_tlb_func_common(const struct flush_tlb_info *f,
/* This code cannot presently handle being reentered. */
VM_WARN_ON(!irqs_disabled());
+ if (unlikely(loaded_mm == &init_mm))
+ return;
+
VM_WARN_ON(this_cpu_read(cpu_tlbstate.ctxs[loaded_mm_asid].ctx_id) !=
loaded_mm->context.ctx_id);
- if (!cpumask_test_cpu(smp_processor_id(), mm_cpumask(loaded_mm))) {
+ if (this_cpu_read(cpu_tlbstate.is_lazy)) {
/*
- * We're in lazy mode -- don't flush. We can get here on
- * remote flushes due to races and on local flushes if a
- * kernel thread coincidentally flushes the mm it's lazily
- * still using.
+ * We're in lazy mode. We need to at least flush our
+ * paging-structure cache to avoid speculatively reading
+ * garbage into our TLB. Since switching to init_mm is barely
+ * slower than a minimal flush, just switch to init_mm.
*/
+ switch_mm_irqs_off(NULL, &init_mm, NULL);
return;
}
diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
index 8c9573660d51..0554e8aef4d5 100644
--- a/arch/x86/net/bpf_jit_comp.c
+++ b/arch/x86/net/bpf_jit_comp.c
@@ -284,9 +284,9 @@ static void emit_bpf_tail_call(u8 **pprog)
/* if (index >= array->map.max_entries)
* goto out;
*/
- EMIT4(0x48, 0x8B, 0x46, /* mov rax, qword ptr [rsi + 16] */
+ EMIT2(0x89, 0xD2); /* mov edx, edx */
+ EMIT3(0x39, 0x56, /* cmp dword ptr [rsi + 16], edx */
offsetof(struct bpf_array, map.max_entries));
- EMIT3(0x48, 0x39, 0xD0); /* cmp rax, rdx */
#define OFFSET1 43 /* number of bytes to jump */
EMIT2(X86_JBE, OFFSET1); /* jbe out */
label1 = cnt;
diff --git a/arch/x86/oprofile/Makefile b/arch/x86/oprofile/Makefile
index 1599f568f0e2..4d49b5a27025 100644
--- a/arch/x86/oprofile/Makefile
+++ b/arch/x86/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
diff --git a/arch/x86/pci/Makefile b/arch/x86/pci/Makefile
index 5c6fc3577a49..c806b57d3f22 100644
--- a/arch/x86/pci/Makefile
+++ b/arch/x86/pci/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y := i386.o init.o
obj-$(CONFIG_PCI_BIOS) += pcbios.o
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index 3961103e9176..7df49c40665e 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/pci.h>
#include <linux/acpi.h>
#include <linux/init.h>
diff --git a/arch/x86/pci/amd_bus.c b/arch/x86/pci/amd_bus.c
index ae387e5ee6f7..649bdde63e32 100644
--- a/arch/x86/pci/amd_bus.c
+++ b/arch/x86/pci/amd_bus.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/topology.h>
diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c
index 6eb3c8af96e2..2752c02e3f0e 100644
--- a/arch/x86/pci/bus_numa.c
+++ b/arch/x86/pci/bus_numa.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/range.h>
diff --git a/arch/x86/pci/bus_numa.h b/arch/x86/pci/bus_numa.h
index ff8f65b04574..697dd841b118 100644
--- a/arch/x86/pci/bus_numa.h
+++ b/arch/x86/pci/bus_numa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BUS_NUMA_H
#define __BUS_NUMA_H
/*
diff --git a/arch/x86/pci/direct.c b/arch/x86/pci/direct.c
index 15460590b8c5..2d9503323d10 100644
--- a/arch/x86/pci/direct.c
+++ b/arch/x86/pci/direct.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* direct.c - Low-level direct PCI config space access
*/
diff --git a/arch/x86/pci/early.c b/arch/x86/pci/early.c
index d1067d539bee..f0114007e915 100644
--- a/arch/x86/pci/early.c
+++ b/arch/x86/pci/early.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/pci.h>
#include <asm/pci-direct.h>
diff --git a/arch/x86/pci/fixup.c b/arch/x86/pci/fixup.c
index f2228b150faa..4210da7b44de 100644
--- a/arch/x86/pci/fixup.c
+++ b/arch/x86/pci/fixup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Exceptions for specific devices. Usually work-arounds for fatal design flaws.
*/
diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c
index 7b4307163eac..ed4ac215305d 100644
--- a/arch/x86/pci/i386.c
+++ b/arch/x86/pci/i386.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Low-Level PCI Access for i386 machines
*
diff --git a/arch/x86/pci/init.c b/arch/x86/pci/init.c
index adb62aaa7ecd..5fc617edf108 100644
--- a/arch/x86/pci/init.c
+++ b/arch/x86/pci/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/pci.h>
#include <linux/init.h>
#include <asm/pci_x86.h>
diff --git a/arch/x86/pci/intel_mid_pci.c b/arch/x86/pci/intel_mid_pci.c
index b901ece278dd..1012a5f0f98d 100644
--- a/arch/x86/pci/intel_mid_pci.c
+++ b/arch/x86/pci/intel_mid_pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Intel MID PCI support
* Copyright (c) 2008 Intel Corporation
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index 9bd115484745..0452629148be 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Low-Level PCI Support for PC -- Routing of Interrupts
*
@@ -1092,7 +1093,7 @@ static int __init fix_acer_tm360_irqrouting(const struct dmi_system_id *d)
return 0;
}
-static struct dmi_system_id __initdata pciirq_dmi_table[] = {
+static const struct dmi_system_id pciirq_dmi_table[] __initconst = {
{
.callback = fix_broken_hp_bios_irq9,
.ident = "HP Pavilion N5400 Series Laptop",
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c
index d1b47d5bc9c3..96684d0adcf9 100644
--- a/arch/x86/pci/mmconfig-shared.c
+++ b/arch/x86/pci/mmconfig-shared.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* mmconfig-shared.c - Low-level direct PCI config space access via
* MMCONFIG - common code between i386 and x86-64.
diff --git a/arch/x86/pci/mmconfig_64.c b/arch/x86/pci/mmconfig_64.c
index f1c1aa0430ae..887d181b769b 100644
--- a/arch/x86/pci/mmconfig_64.c
+++ b/arch/x86/pci/mmconfig_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* mmconfig.c - Low-level direct PCI config space access via MMCONFIG
*
diff --git a/arch/x86/pci/pcbios.c b/arch/x86/pci/pcbios.c
index 76595408ff53..9c97d814125e 100644
--- a/arch/x86/pci/pcbios.c
+++ b/arch/x86/pci/pcbios.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* BIOS32 and PCI BIOS handling.
*/
diff --git a/arch/x86/platform/Makefile b/arch/x86/platform/Makefile
index 184842ef332e..d0e835470d01 100644
--- a/arch/x86/platform/Makefile
+++ b/arch/x86/platform/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Platform specific code goes here
obj-y += atom/
obj-y += ce4100/
diff --git a/arch/x86/platform/efi/Makefile b/arch/x86/platform/efi/Makefile
index 2f56e1ed61c3..e4dc3862d423 100644
--- a/arch/x86/platform/efi/Makefile
+++ b/arch/x86/platform/efi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
OBJECT_FILES_NON_STANDARD_efi_thunk_$(BITS).o := y
OBJECT_FILES_NON_STANDARD_efi_stub_$(BITS).o := y
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 928b6dceeca0..9061babfbc83 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common EFI (Extensible Firmware Interface) support functions
* Based on Extensible Firmware Interface Specification version 1.0
diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c
index 52f7faa1538f..324b93328b37 100644
--- a/arch/x86/platform/efi/efi_32.c
+++ b/arch/x86/platform/efi/efi_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Extensible Firmware Interface
*
diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
index 12e83888e5b9..20fb31579b69 100644
--- a/arch/x86/platform/efi/efi_64.c
+++ b/arch/x86/platform/efi/efi_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* x86_64 specific EFI support functions
* Based on Extensible Firmware Interface Specification version 1.0
diff --git a/arch/x86/platform/efi/efi_stub_32.S b/arch/x86/platform/efi/efi_stub_32.S
index 040192b50d02..ab2e91e76894 100644
--- a/arch/x86/platform/efi/efi_stub_32.S
+++ b/arch/x86/platform/efi/efi_stub_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* EFI call stub for IA32.
*
diff --git a/arch/x86/platform/efi/efi_stub_64.S b/arch/x86/platform/efi/efi_stub_64.S
index cd95075944ab..74628ec78f29 100644
--- a/arch/x86/platform/efi/efi_stub_64.S
+++ b/arch/x86/platform/efi/efi_stub_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Function calling ABI conversion from Linux to EFI for x86_64
*
diff --git a/arch/x86/platform/efi/efi_thunk_64.S b/arch/x86/platform/efi/efi_thunk_64.S
index ff85d28c50f2..189b218da87c 100644
--- a/arch/x86/platform/efi/efi_thunk_64.S
+++ b/arch/x86/platform/efi/efi_thunk_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2014 Intel Corporation; author Matt Fleming
*
diff --git a/arch/x86/platform/intel-mid/device_libs/Makefile b/arch/x86/platform/intel-mid/device_libs/Makefile
index 53e0235e308f..480fed21cc7d 100644
--- a/arch/x86/platform/intel-mid/device_libs/Makefile
+++ b/arch/x86/platform/intel-mid/device_libs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Family-Level Interface Shim (FLIS)
obj-$(subst m,y,$(CONFIG_PINCTRL_MERRIFIELD)) += platform_mrfld_pinctrl.o
# SDHCI Devices
diff --git a/arch/x86/platform/intel-quark/imr_selftest.c b/arch/x86/platform/intel-quark/imr_selftest.c
index b8f562049cad..42f879b75f9b 100644
--- a/arch/x86/platform/intel-quark/imr_selftest.c
+++ b/arch/x86/platform/intel-quark/imr_selftest.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/**
* imr_selftest.c -- Intel Isolated Memory Region self-test driver
*
diff --git a/arch/x86/platform/olpc/Makefile b/arch/x86/platform/olpc/Makefile
index fd332c533947..049f92a9379d 100644
--- a/arch/x86/platform/olpc/Makefile
+++ b/arch/x86/platform/olpc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OLPC) += olpc.o olpc_ofw.o olpc_dt.o
obj-$(CONFIG_OLPC_XO1_PM) += olpc-xo1-pm.o xo1-wakeup.o
obj-$(CONFIG_OLPC_XO1_RTC) += olpc-xo1-rtc.o
diff --git a/arch/x86/platform/olpc/xo1-wakeup.S b/arch/x86/platform/olpc/xo1-wakeup.S
index 948deb289753..5fee3a2c2fd4 100644
--- a/arch/x86/platform/olpc/xo1-wakeup.S
+++ b/arch/x86/platform/olpc/xo1-wakeup.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.text
#include <linux/linkage.h>
#include <asm/segment.h>
diff --git a/arch/x86/power/Makefile b/arch/x86/power/Makefile
index 05041871ac90..a4701389562c 100644
--- a/arch/x86/power/Makefile
+++ b/arch/x86/power/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
OBJECT_FILES_NON_STANDARD_hibernate_asm_$(BITS).o := y
# __restore_processor_state() restores %gs after S3 resume and so should not
diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c
index 4d68d59f457d..84fcfde53f8f 100644
--- a/arch/x86/power/cpu.c
+++ b/arch/x86/power/cpu.c
@@ -428,7 +428,7 @@ static int msr_initialize_bdw(const struct dmi_system_id *d)
return msr_init_context(bdw_msr_id, ARRAY_SIZE(bdw_msr_id));
}
-static struct dmi_system_id msr_save_dmi_table[] = {
+static const struct dmi_system_id msr_save_dmi_table[] = {
{
.callback = msr_initialize_bdw,
.ident = "BROADWELL BDX_EP",
diff --git a/arch/x86/power/hibernate_64.c b/arch/x86/power/hibernate_64.c
index f2598d81cd55..f910c514438f 100644
--- a/arch/x86/power/hibernate_64.c
+++ b/arch/x86/power/hibernate_64.c
@@ -295,7 +295,26 @@ int arch_hibernation_header_save(void *addr, unsigned int max_size)
return -EOVERFLOW;
rdr->jump_address = (unsigned long)restore_registers;
rdr->jump_address_phys = __pa_symbol(restore_registers);
- rdr->cr3 = restore_cr3;
+
+ /*
+ * The restore code fixes up CR3 and CR4 in the following sequence:
+ *
+ * [in hibernation asm]
+ * 1. CR3 <= temporary page tables
+ * 2. CR4 <= mmu_cr4_features (from the kernel that restores us)
+ * 3. CR3 <= rdr->cr3
+ * 4. CR4 <= mmu_cr4_features (from us, i.e. the image kernel)
+ * [in restore_processor_state()]
+ * 5. CR4 <= saved CR4
+ * 6. CR3 <= saved CR3
+ *
+ * Our mmu_cr4_features has CR4.PCIDE=0, and toggling
+ * CR4.PCIDE while CR3's PCID bits are nonzero is illegal, so
+ * rdr->cr3 needs to point to valid page tables but must not
+ * have any of the PCID bits set.
+ */
+ rdr->cr3 = restore_cr3 & ~CR3_PCID_MASK;
+
rdr->magic = RESTORE_MAGIC;
hibernation_e820_save(rdr->e820_digest);
diff --git a/arch/x86/power/hibernate_asm_32.S b/arch/x86/power/hibernate_asm_32.S
index 1d0fa0e24070..6e56815e13a0 100644
--- a/arch/x86/power/hibernate_asm_32.S
+++ b/arch/x86/power/hibernate_asm_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This may not use any stack, nor any variable that is not "NoSave":
*
diff --git a/arch/x86/purgatory/Makefile b/arch/x86/purgatory/Makefile
index 7dbdb780264d..2f15a2ac4209 100644
--- a/arch/x86/purgatory/Makefile
+++ b/arch/x86/purgatory/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
OBJECT_FILES_NON_STANDARD := y
purgatory-y := purgatory.o stack.o setup-x86_$(BITS).o sha256.o entry64.o string.o
diff --git a/arch/x86/ras/Kconfig b/arch/x86/ras/Kconfig
index bb026699ad19..a9c3db125222 100644
--- a/arch/x86/ras/Kconfig
+++ b/arch/x86/ras/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config RAS_CEC
bool "Correctable Errors Collector"
depends on X86_MCE && MEMORY_FAILURE && DEBUG_FS
diff --git a/arch/x86/realmode/init.c b/arch/x86/realmode/init.c
index 1f71980fc5e0..ed84d3917a59 100644
--- a/arch/x86/realmode/init.c
+++ b/arch/x86/realmode/init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/io.h>
#include <linux/slab.h>
#include <linux/memblock.h>
diff --git a/arch/x86/realmode/rm/header.S b/arch/x86/realmode/rm/header.S
index a28221d94e69..30b0d30d861a 100644
--- a/arch/x86/realmode/rm/header.S
+++ b/arch/x86/realmode/rm/header.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Real-mode blob header; this should match realmode.h and be
* readonly; for mutable data instead add pointers into the .data
diff --git a/arch/x86/realmode/rm/realmode.h b/arch/x86/realmode/rm/realmode.h
index d74cff6350ed..c76041a35397 100644
--- a/arch/x86/realmode/rm/realmode.h
+++ b/arch/x86/realmode/rm/realmode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARCH_X86_REALMODE_RM_REALMODE_H
#define ARCH_X86_REALMODE_RM_REALMODE_H
diff --git a/arch/x86/realmode/rm/realmode.lds.S b/arch/x86/realmode/rm/realmode.lds.S
index 86b2e8d6b1f1..df8e11e26bc3 100644
--- a/arch/x86/realmode/rm/realmode.lds.S
+++ b/arch/x86/realmode/rm/realmode.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* realmode.lds.S
*
diff --git a/arch/x86/realmode/rm/reboot.S b/arch/x86/realmode/rm/reboot.S
index d66c607bdc58..cd2f97b9623b 100644
--- a/arch/x86/realmode/rm/reboot.S
+++ b/arch/x86/realmode/rm/reboot.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/linkage.h>
#include <asm/segment.h>
#include <asm/page_types.h>
diff --git a/arch/x86/realmode/rm/stack.S b/arch/x86/realmode/rm/stack.S
index 867ae87adfae..8d4cb64799ea 100644
--- a/arch/x86/realmode/rm/stack.S
+++ b/arch/x86/realmode/rm/stack.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common heap and stack allocations
*/
diff --git a/arch/x86/realmode/rm/trampoline_32.S b/arch/x86/realmode/rm/trampoline_32.S
index 48ddd76bc4c3..2dd866c9e21e 100644
--- a/arch/x86/realmode/rm/trampoline_32.S
+++ b/arch/x86/realmode/rm/trampoline_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Trampoline.S Derived from Setup.S by Linus Torvalds
diff --git a/arch/x86/realmode/rm/trampoline_64.S b/arch/x86/realmode/rm/trampoline_64.S
index 614fd7064d0a..de53bd15df5a 100644
--- a/arch/x86/realmode/rm/trampoline_64.S
+++ b/arch/x86/realmode/rm/trampoline_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Trampoline.S Derived from Setup.S by Linus Torvalds
diff --git a/arch/x86/realmode/rm/trampoline_common.S b/arch/x86/realmode/rm/trampoline_common.S
index b1ecdb9692ad..7c706772ab59 100644
--- a/arch/x86/realmode/rm/trampoline_common.S
+++ b/arch/x86/realmode/rm/trampoline_common.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
.section ".rodata","a"
.balign 16
tr_idt: .fill 1, 6, 0
diff --git a/arch/x86/realmode/rm/wakemain.c b/arch/x86/realmode/rm/wakemain.c
index 91405d515ec6..1d6437e6d2ba 100644
--- a/arch/x86/realmode/rm/wakemain.c
+++ b/arch/x86/realmode/rm/wakemain.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "wakeup.h"
#include "boot.h"
diff --git a/arch/x86/realmode/rm/wakeup.h b/arch/x86/realmode/rm/wakeup.h
index 7dd86a419f5d..0e4fd08ae447 100644
--- a/arch/x86/realmode/rm/wakeup.h
+++ b/arch/x86/realmode/rm/wakeup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for the wakeup data structure at the head of the
* wakeup code.
diff --git a/arch/x86/realmode/rm/wakeup_asm.S b/arch/x86/realmode/rm/wakeup_asm.S
index 9e7e14797a72..05ac9c17c811 100644
--- a/arch/x86/realmode/rm/wakeup_asm.S
+++ b/arch/x86/realmode/rm/wakeup_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ACPI wakeup real mode startup stub
*/
diff --git a/arch/x86/realmode/rmpiggy.S b/arch/x86/realmode/rmpiggy.S
index 204c6ece0e97..c078dba40cef 100644
--- a/arch/x86/realmode/rmpiggy.S
+++ b/arch/x86/realmode/rmpiggy.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Wrapper script for the realmode binary as a transport object
* before copying to low memory.
diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile
index 604a37efd4d5..972b8e8d939c 100644
--- a/arch/x86/tools/Makefile
+++ b/arch/x86/tools/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
PHONY += posttest
ifeq ($(KBUILD_VERBOSE),1)
diff --git a/arch/x86/tools/distill.awk b/arch/x86/tools/distill.awk
index c13c0ee48ab4..e0edeccc1429 100644
--- a/arch/x86/tools/distill.awk
+++ b/arch/x86/tools/distill.awk
@@ -1,4 +1,5 @@
#!/bin/awk -f
+# SPDX-License-Identifier: GPL-2.0
# Usage: objdump -d a.out | awk -f distill.awk | ./test_get_len
# Distills the disassembly as follows:
# - Removes all lines except the disassembled instructions.
diff --git a/arch/x86/tools/gen-insn-attr-x86.awk b/arch/x86/tools/gen-insn-attr-x86.awk
index a3d2c62fd805..b02a36b2c14f 100644
--- a/arch/x86/tools/gen-insn-attr-x86.awk
+++ b/arch/x86/tools/gen-insn-attr-x86.awk
@@ -1,4 +1,5 @@
#!/bin/awk -f
+# SPDX-License-Identifier: GPL-2.0
# gen-insn-attr-x86.awk: Instruction attribute table generator
# Written by Masami Hiramatsu <mhiramat@redhat.com>
#
diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
index 73eb7fd4aec4..5d73c443e778 100644
--- a/arch/x86/tools/relocs.c
+++ b/arch/x86/tools/relocs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* This is included from relocs_32/64.c */
#define ElfW(type) _ElfW(ELF_BITS, type)
diff --git a/arch/x86/tools/relocs.h b/arch/x86/tools/relocs.h
index 1d23bf953a4a..43c83c0fd22c 100644
--- a/arch/x86/tools/relocs.h
+++ b/arch/x86/tools/relocs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef RELOCS_H
#define RELOCS_H
diff --git a/arch/x86/tools/relocs_32.c b/arch/x86/tools/relocs_32.c
index b2ade2bb4162..9442ff78be83 100644
--- a/arch/x86/tools/relocs_32.c
+++ b/arch/x86/tools/relocs_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "relocs.h"
#define ELF_BITS 32
diff --git a/arch/x86/tools/relocs_64.c b/arch/x86/tools/relocs_64.c
index 56b61b743c4c..9029cb619cb1 100644
--- a/arch/x86/tools/relocs_64.c
+++ b/arch/x86/tools/relocs_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "relocs.h"
#define ELF_BITS 64
diff --git a/arch/x86/tools/relocs_common.c b/arch/x86/tools/relocs_common.c
index acab636bcb34..6634352a20bc 100644
--- a/arch/x86/tools/relocs_common.c
+++ b/arch/x86/tools/relocs_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "relocs.h"
void die(char *fmt, ...)
diff --git a/arch/x86/um/Kconfig b/arch/x86/um/Kconfig
index ed56a1c4ae73..13ed827c7c66 100644
--- a/arch/x86/um/Kconfig
+++ b/arch/x86/um/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
mainmenu "User Mode Linux/$SUBARCH $KERNELVERSION Kernel Configuration"
source "arch/um/Kconfig.common"
diff --git a/arch/x86/um/Makefile b/arch/x86/um/Makefile
index 46cbbfe03285..c2d3d7c51e9e 100644
--- a/arch/x86/um/Makefile
+++ b/arch/x86/um/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
#
diff --git a/arch/x86/um/asm/arch_hweight.h b/arch/x86/um/asm/arch_hweight.h
index c656cf443f4a..0d2d5fbb3a39 100644
--- a/arch/x86/um/asm/arch_hweight.h
+++ b/arch/x86/um/asm/arch_hweight.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_UM_HWEIGHT_H
#define _ASM_UM_HWEIGHT_H
diff --git a/arch/x86/um/asm/barrier.h b/arch/x86/um/asm/barrier.h
index 00c319048d52..b7d73400ea29 100644
--- a/arch/x86/um/asm/barrier.h
+++ b/arch/x86/um/asm/barrier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_UM_BARRIER_H_
#define _ASM_UM_BARRIER_H_
diff --git a/arch/x86/um/asm/checksum.h b/arch/x86/um/asm/checksum.h
index 54d96f1e3594..2a56cac64687 100644
--- a/arch/x86/um/asm/checksum.h
+++ b/arch/x86/um/asm/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_CHECKSUM_H
#define __UM_CHECKSUM_H
diff --git a/arch/x86/um/asm/desc.h b/arch/x86/um/asm/desc.h
index 4ec34a51b62c..34de4e93d945 100644
--- a/arch/x86/um/asm/desc.h
+++ b/arch/x86/um/asm/desc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_DESC_H
#define __UM_DESC_H
diff --git a/arch/x86/um/asm/module.h b/arch/x86/um/asm/module.h
index 61af80e932eb..a3b061d66082 100644
--- a/arch/x86/um/asm/module.h
+++ b/arch/x86/um/asm/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_MODULE_H
#define __UM_MODULE_H
diff --git a/arch/x86/um/asm/processor.h b/arch/x86/um/asm/processor.h
index c77db2288982..593d5f3902bd 100644
--- a/arch/x86/um/asm/processor.h
+++ b/arch/x86/um/asm/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_PROCESSOR_H
#define __UM_PROCESSOR_H
diff --git a/arch/x86/um/asm/ptrace.h b/arch/x86/um/asm/ptrace.h
index b291ca5cf66b..83822fd42204 100644
--- a/arch/x86/um/asm/ptrace.h
+++ b/arch/x86/um/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_X86_PTRACE_H
#define __UM_X86_PTRACE_H
diff --git a/arch/x86/um/asm/segment.h b/arch/x86/um/asm/segment.h
index 41dd5e1f3cd7..453db377150d 100644
--- a/arch/x86/um/asm/segment.h
+++ b/arch/x86/um/asm/segment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_SEGMENT_H
#define __UM_SEGMENT_H
diff --git a/arch/x86/um/asm/syscall.h b/arch/x86/um/asm/syscall.h
index 11ab90dc5f14..ef898af102d1 100644
--- a/arch/x86/um/asm/syscall.h
+++ b/arch/x86/um/asm/syscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_ASM_SYSCALL_H
#define __UM_ASM_SYSCALL_H
diff --git a/arch/x86/um/elfcore.c b/arch/x86/um/elfcore.c
index 7bb89a27a5e4..48a3eb09d951 100644
--- a/arch/x86/um/elfcore.c
+++ b/arch/x86/um/elfcore.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/elf.h>
#include <linux/coredump.h>
#include <linux/fs.h>
diff --git a/arch/x86/um/mem_64.c b/arch/x86/um/mem_64.c
index 7642e2e2aa61..c027e93d1002 100644
--- a/arch/x86/um/mem_64.c
+++ b/arch/x86/um/mem_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <asm/elf.h>
diff --git a/arch/x86/um/os-Linux/mcontext.c b/arch/x86/um/os-Linux/mcontext.c
index 1d33d72c6284..49c3744cac37 100644
--- a/arch/x86/um/os-Linux/mcontext.c
+++ b/arch/x86/um/os-Linux/mcontext.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <sys/ucontext.h>
#define __FRAME_OFFSETS
#include <asm/ptrace.h>
diff --git a/arch/x86/um/os-Linux/registers.c b/arch/x86/um/os-Linux/registers.c
index 28775f55bde2..3c423dfcd78b 100644
--- a/arch/x86/um/os-Linux/registers.c
+++ b/arch/x86/um/os-Linux/registers.c
@@ -5,6 +5,7 @@
*/
#include <errno.h>
+#include <stdlib.h>
#include <sys/ptrace.h>
#ifdef __i386__
#include <sys/user.h>
@@ -31,7 +32,7 @@ int save_fp_registers(int pid, unsigned long *fp_regs)
if (have_xstate_support) {
iov.iov_base = fp_regs;
- iov.iov_len = sizeof(struct _xstate);
+ iov.iov_len = FP_SIZE * sizeof(unsigned long);
if (ptrace(PTRACE_GETREGSET, pid, NT_X86_XSTATE, &iov) < 0)
return -errno;
return 0;
@@ -51,10 +52,9 @@ int restore_fp_registers(int pid, unsigned long *fp_regs)
{
#ifdef PTRACE_SETREGSET
struct iovec iov;
-
if (have_xstate_support) {
iov.iov_base = fp_regs;
- iov.iov_len = sizeof(struct _xstate);
+ iov.iov_len = FP_SIZE * sizeof(unsigned long);
if (ptrace(PTRACE_SETREGSET, pid, NT_X86_XSTATE, &iov) < 0)
return -errno;
return 0;
@@ -125,13 +125,19 @@ int put_fp_registers(int pid, unsigned long *regs)
void arch_init_registers(int pid)
{
#ifdef PTRACE_GETREGSET
- struct _xstate fp_regs;
+ void * fp_regs;
struct iovec iov;
- iov.iov_base = &fp_regs;
- iov.iov_len = sizeof(struct _xstate);
+ fp_regs = malloc(FP_SIZE * sizeof(unsigned long));
+ if(fp_regs == NULL)
+ return;
+
+ iov.iov_base = fp_regs;
+ iov.iov_len = FP_SIZE * sizeof(unsigned long);
if (ptrace(PTRACE_GETREGSET, pid, NT_X86_XSTATE, &iov) == 0)
have_xstate_support = 1;
+
+ free(fp_regs);
#endif
}
#endif
diff --git a/arch/x86/um/os-Linux/task_size.c b/arch/x86/um/os-Linux/task_size.c
index 5adb6a2fd117..e62174638f00 100644
--- a/arch/x86/um/os-Linux/task_size.c
+++ b/arch/x86/um/os-Linux/task_size.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
diff --git a/arch/x86/um/os-Linux/tls.c b/arch/x86/um/os-Linux/tls.c
index 9d94b3b76c74..3e1b1bf6acbc 100644
--- a/arch/x86/um/os-Linux/tls.c
+++ b/arch/x86/um/os-Linux/tls.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <errno.h>
#include <linux/unistd.h>
@@ -37,7 +38,7 @@ void check_host_supports_tls(int *supports_tls, int *tls_min)
continue;
else if (errno == ENOSYS)
*supports_tls = 0;
- return;
+ return;
}
}
diff --git a/arch/x86/um/setjmp_32.S b/arch/x86/um/setjmp_32.S
index 39053192918d..62eaf8c80e04 100644
--- a/arch/x86/um/setjmp_32.S
+++ b/arch/x86/um/setjmp_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#
# arch/i386/setjmp.S
#
diff --git a/arch/x86/um/setjmp_64.S b/arch/x86/um/setjmp_64.S
index c56942e1a38c..1b5d40d4ff46 100644
--- a/arch/x86/um/setjmp_64.S
+++ b/arch/x86/um/setjmp_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#
# arch/x86_64/setjmp.S
#
diff --git a/arch/x86/um/shared/sysdep/archsetjmp.h b/arch/x86/um/shared/sysdep/archsetjmp.h
index ff7766d28226..166cedbab926 100644
--- a/arch/x86/um/shared/sysdep/archsetjmp.h
+++ b/arch/x86/um/shared/sysdep/archsetjmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __i386__
#include "archsetjmp_32.h"
#else
diff --git a/arch/x86/um/shared/sysdep/archsetjmp_32.h b/arch/x86/um/shared/sysdep/archsetjmp_32.h
index 0f312085ce1d..fb08f2576438 100644
--- a/arch/x86/um/shared/sysdep/archsetjmp_32.h
+++ b/arch/x86/um/shared/sysdep/archsetjmp_32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/um/include/sysdep-i386/archsetjmp.h
*/
diff --git a/arch/x86/um/shared/sysdep/archsetjmp_64.h b/arch/x86/um/shared/sysdep/archsetjmp_64.h
index 2af8f12ca161..9b499e457ba0 100644
--- a/arch/x86/um/shared/sysdep/archsetjmp_64.h
+++ b/arch/x86/um/shared/sysdep/archsetjmp_64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* arch/um/include/sysdep-x86_64/archsetjmp.h
*/
diff --git a/arch/x86/um/shared/sysdep/faultinfo.h b/arch/x86/um/shared/sysdep/faultinfo.h
index 862ecb1c7781..4390803e07a1 100644
--- a/arch/x86/um/shared/sysdep/faultinfo.h
+++ b/arch/x86/um/shared/sysdep/faultinfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __i386__
#include "faultinfo_32.h"
#else
diff --git a/arch/x86/um/shared/sysdep/kernel-offsets.h b/arch/x86/um/shared/sysdep/kernel-offsets.h
index 7e1d35b6ad5c..a004bffb7b8d 100644
--- a/arch/x86/um/shared/sysdep/kernel-offsets.h
+++ b/arch/x86/um/shared/sysdep/kernel-offsets.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/stddef.h>
#include <linux/sched.h>
#include <linux/elf.h>
diff --git a/arch/x86/um/shared/sysdep/ptrace.h b/arch/x86/um/shared/sysdep/ptrace.h
index eb9356904ad3..6ca4ecabc55b 100644
--- a/arch/x86/um/shared/sysdep/ptrace.h
+++ b/arch/x86/um/shared/sysdep/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SYSDEP_X86_PTRACE_H
#define __SYSDEP_X86_PTRACE_H
diff --git a/arch/x86/um/shared/sysdep/ptrace_user.h b/arch/x86/um/shared/sysdep/ptrace_user.h
index 16cd6b5e71f7..44782bbad41e 100644
--- a/arch/x86/um/shared/sysdep/ptrace_user.h
+++ b/arch/x86/um/shared/sysdep/ptrace_user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <generated/user_constants.h>
#define PT_OFFSET(r) ((r) * sizeof(long))
diff --git a/arch/x86/um/shared/sysdep/stub.h b/arch/x86/um/shared/sysdep/stub.h
index 3f55e5bd3cec..ce0ca46ad383 100644
--- a/arch/x86/um/shared/sysdep/stub.h
+++ b/arch/x86/um/shared/sysdep/stub.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm/unistd.h>
#include <sys/mman.h>
#include <signal.h>
diff --git a/arch/x86/um/shared/sysdep/syscalls.h b/arch/x86/um/shared/sysdep/syscalls.h
index bd9a89b67e41..b2060ac707f0 100644
--- a/arch/x86/um/shared/sysdep/syscalls.h
+++ b/arch/x86/um/shared/sysdep/syscalls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __i386__
#include "syscalls_32.h"
#else
diff --git a/arch/x86/um/shared/sysdep/tls.h b/arch/x86/um/shared/sysdep/tls.h
index a682db13df23..b968016aa379 100644
--- a/arch/x86/um/shared/sysdep/tls.h
+++ b/arch/x86/um/shared/sysdep/tls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SYSDEP_TLS_H
#define _SYSDEP_TLS_H
diff --git a/arch/x86/um/stub_32.S b/arch/x86/um/stub_32.S
index 98816804e131..a193e88536a9 100644
--- a/arch/x86/um/stub_32.S
+++ b/arch/x86/um/stub_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <as-layout.h>
.section .__syscall_stub, "ax"
diff --git a/arch/x86/um/stub_64.S b/arch/x86/um/stub_64.S
index ba914b3b8cc4..8a95c5b2eaf9 100644
--- a/arch/x86/um/stub_64.S
+++ b/arch/x86/um/stub_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <as-layout.h>
.section .__syscall_stub, "ax"
diff --git a/arch/x86/um/sys_call_table_32.c b/arch/x86/um/sys_call_table_32.c
index bfce503dffae..9649b5ad2ca2 100644
--- a/arch/x86/um/sys_call_table_32.c
+++ b/arch/x86/um/sys_call_table_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* System call table for UML/i386, copied from arch/x86/kernel/syscall_*.c
* with some changes for UML.
diff --git a/arch/x86/um/sys_call_table_64.c b/arch/x86/um/sys_call_table_64.c
index f306413d3eb6..c8bc7fb8cbd6 100644
--- a/arch/x86/um/sys_call_table_64.c
+++ b/arch/x86/um/sys_call_table_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* System call table for UML/x86-64, copied from arch/x86/kernel/syscall_*.c
* with some changes for UML.
diff --git a/arch/x86/um/syscalls_32.c b/arch/x86/um/syscalls_32.c
index 627d68836b16..5c65254c8f35 100644
--- a/arch/x86/um/syscalls_32.c
+++ b/arch/x86/um/syscalls_32.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/syscalls.h>
#include <os.h>
diff --git a/arch/x86/um/tls_64.c b/arch/x86/um/tls_64.c
index 3ad714373d7f..3a621e0d3925 100644
--- a/arch/x86/um/tls_64.c
+++ b/arch/x86/um/tls_64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/sched.h>
#include <asm/ptrace-abi.h>
diff --git a/arch/x86/um/user-offsets.c b/arch/x86/um/user-offsets.c
index 02250b2633b8..5b37b7f952dd 100644
--- a/arch/x86/um/user-offsets.c
+++ b/arch/x86/um/user-offsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <stdio.h>
#include <stddef.h>
#include <signal.h>
@@ -51,7 +52,7 @@ void foo(void)
DEFINE(HOST_ORIG_AX, ORIG_EAX);
#else
#ifdef FP_XSTATE_MAGIC1
- DEFINE(HOST_FP_SIZE, sizeof(struct _xstate) / sizeof(unsigned long));
+ DEFINE_LONGS(HOST_FP_SIZE, 2696);
#else
DEFINE(HOST_FP_SIZE, sizeof(struct _fpstate) / sizeof(unsigned long));
#endif
diff --git a/arch/x86/um/vdso/Makefile b/arch/x86/um/vdso/Makefile
index 329406224330..10003359e633 100644
--- a/arch/x86/um/vdso/Makefile
+++ b/arch/x86/um/vdso/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Building vDSO images for x86.
#
diff --git a/arch/x86/um/vdso/checkundef.sh b/arch/x86/um/vdso/checkundef.sh
index 7ee90a9b549d..8e3ea6bb956f 100644
--- a/arch/x86/um/vdso/checkundef.sh
+++ b/arch/x86/um/vdso/checkundef.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
nm="$1"
file="$2"
$nm "$file" | grep '^ *U' > /dev/null 2>&1
diff --git a/arch/x86/um/vdso/vdso-layout.lds.S b/arch/x86/um/vdso/vdso-layout.lds.S
index 634a2cf62046..439b790df18f 100644
--- a/arch/x86/um/vdso/vdso-layout.lds.S
+++ b/arch/x86/um/vdso/vdso-layout.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linker script for vDSO. This is an ELF shared object prelinked to
* its virtual address, and with only one read-only segment.
diff --git a/arch/x86/um/vdso/vdso.S b/arch/x86/um/vdso/vdso.S
index 1cb468adacbb..a4a3870dc059 100644
--- a/arch/x86/um/vdso/vdso.S
+++ b/arch/x86/um/vdso/vdso.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/init.h>
__INITDATA
diff --git a/arch/x86/um/vdso/vdso.lds.S b/arch/x86/um/vdso/vdso.lds.S
index b96b2677cad8..73c508587a98 100644
--- a/arch/x86/um/vdso/vdso.lds.S
+++ b/arch/x86/um/vdso/vdso.lds.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linker script for 64-bit vDSO.
* We #include the file to define the layout details.
diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig
index 1ecd419811a2..f605825a04ab 100644
--- a/arch/x86/xen/Kconfig
+++ b/arch/x86/xen/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# This Kconfig describes xen options
#
diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile
index bced7a369a11..d83cb5478f54 100644
--- a/arch/x86/xen/Makefile
+++ b/arch/x86/xen/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
OBJECT_FILES_NON_STANDARD_xen-asm_$(BITS).o := y
OBJECT_FILES_NON_STANDARD_xen-pvh.o := y
diff --git a/arch/x86/xen/apic.c b/arch/x86/xen/apic.c
index b5e48da7fbff..30434b8708f2 100644
--- a/arch/x86/xen/apic.c
+++ b/arch/x86/xen/apic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <asm/x86_init.h>
diff --git a/arch/x86/xen/debugfs.c b/arch/x86/xen/debugfs.c
index 1daff5545c0a..13da87918b4f 100644
--- a/arch/x86/xen/debugfs.c
+++ b/arch/x86/xen/debugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/debugfs.h>
#include <linux/slab.h>
diff --git a/arch/x86/xen/debugfs.h b/arch/x86/xen/debugfs.h
index 12ebf3325c7b..6b813ad1091c 100644
--- a/arch/x86/xen/debugfs.h
+++ b/arch/x86/xen/debugfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XEN_DEBUGFS_H
#define _XEN_DEBUGFS_H
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 0e7ef69e8531..d669e9d89001 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -93,11 +93,11 @@ int xen_cpuhp_setup(int (*cpu_up_prepare_cb)(unsigned int),
int rc;
rc = cpuhp_setup_state_nocalls(CPUHP_XEN_PREPARE,
- "x86/xen/hvm_guest:prepare",
+ "x86/xen/guest:prepare",
cpu_up_prepare_cb, cpu_dead_cb);
if (rc >= 0) {
rc = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN,
- "x86/xen/hvm_guest:online",
+ "x86/xen/guest:online",
xen_cpu_up_online, NULL);
if (rc < 0)
cpuhp_remove_state_nocalls(CPUHP_XEN_PREPARE);
diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
index ae2a2e2d6362..d4396e27b1fb 100644
--- a/arch/x86/xen/enlighten_pv.c
+++ b/arch/x86/xen/enlighten_pv.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Core of Xen paravirt_ops implementation.
*
@@ -1038,7 +1039,6 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = {
.read_cr0 = xen_read_cr0,
.write_cr0 = xen_write_cr0,
- .read_cr4 = native_read_cr4,
.write_cr4 = xen_write_cr4,
#ifdef CONFIG_X86_64
@@ -1073,7 +1073,6 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = {
.alloc_ldt = xen_alloc_ldt,
.free_ldt = xen_free_ldt,
- .store_idt = native_store_idt,
.store_tr = xen_store_tr,
.write_ldt_entry = xen_write_ldt_entry,
diff --git a/arch/x86/xen/enlighten_pvh.c b/arch/x86/xen/enlighten_pvh.c
index 98ab17673454..7bd3ee08393e 100644
--- a/arch/x86/xen/enlighten_pvh.c
+++ b/arch/x86/xen/enlighten_pvh.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/acpi.h>
#include <xen/hvc-console.h>
diff --git a/arch/x86/xen/irq.c b/arch/x86/xen/irq.c
index d4eff5676cfa..74179852e46c 100644
--- a/arch/x86/xen/irq.c
+++ b/arch/x86/xen/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/hardirq.h>
#include <asm/x86_init.h>
diff --git a/arch/x86/xen/mmu.h b/arch/x86/xen/mmu.h
index 3fe2b3292915..a7e47cf7ec6c 100644
--- a/arch/x86/xen/mmu.h
+++ b/arch/x86/xen/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XEN_MMU_H
#include <linux/linkage.h>
diff --git a/arch/x86/xen/mmu_hvm.c b/arch/x86/xen/mmu_hvm.c
index 1c57f1cd545c..2cfcfe4f6b2a 100644
--- a/arch/x86/xen/mmu_hvm.c
+++ b/arch/x86/xen/mmu_hvm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/crash_dump.h>
diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c
index 6b983b300666..71495f1a86d7 100644
--- a/arch/x86/xen/mmu_pv.c
+++ b/arch/x86/xen/mmu_pv.c
@@ -1238,21 +1238,16 @@ static void __init xen_pagetable_cleanhighmap(void)
* from _brk_limit way up to the max_pfn_mapped (which is the end of
* the ramdisk). We continue on, erasing PMD entries that point to page
* tables - do note that they are accessible at this stage via __va.
- * For good measure we also round up to the PMD - which means that if
+ * As Xen is aligning the memory end to a 4MB boundary, for good
+ * measure we also round up to PMD_SIZE * 2 - which means that if
* anybody is using __ka address to the initial boot-stack - and try
* to use it - they are going to crash. The xen_start_info has been
* taken care of already in xen_setup_kernel_pagetable. */
addr = xen_start_info->pt_base;
- size = roundup(xen_start_info->nr_pt_frames * PAGE_SIZE, PMD_SIZE);
+ size = xen_start_info->nr_pt_frames * PAGE_SIZE;
- xen_cleanhighmap(addr, addr + size);
+ xen_cleanhighmap(addr, roundup(addr + size, PMD_SIZE * 2));
xen_start_info->pt_base = (unsigned long)__va(__pa(xen_start_info->pt_base));
-#ifdef DEBUG
- /* This is superfluous and is not necessary, but you know what
- * lets do it. The MODULES_VADDR -> MODULES_END should be clear of
- * anything at this stage. */
- xen_cleanhighmap(MODULES_VADDR, roundup(MODULES_VADDR, PUD_SIZE) - 1);
-#endif
}
#endif
@@ -2220,7 +2215,7 @@ static void __init xen_write_cr3_init(unsigned long cr3)
* not the first page table in the page table pool.
* Iterate through the initial page tables to find the real page table base.
*/
-static phys_addr_t xen_find_pt_base(pmd_t *pmd)
+static phys_addr_t __init xen_find_pt_base(pmd_t *pmd)
{
phys_addr_t pt_base, paddr;
unsigned pmdidx;
@@ -2409,8 +2404,6 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = {
.flush_tlb_single = xen_flush_tlb_single,
.flush_tlb_others = xen_flush_tlb_others,
- .pte_update = paravirt_nop,
-
.pgd_alloc = xen_pgd_alloc,
.pgd_free = xen_pgd_free,
diff --git a/arch/x86/xen/multicalls.c b/arch/x86/xen/multicalls.c
index ea54a08d8301..dc502ca8263e 100644
--- a/arch/x86/xen/multicalls.c
+++ b/arch/x86/xen/multicalls.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Xen hypercall batching.
*
diff --git a/arch/x86/xen/multicalls.h b/arch/x86/xen/multicalls.h
index 9c2e74f9096c..1c51b2c87f30 100644
--- a/arch/x86/xen/multicalls.h
+++ b/arch/x86/xen/multicalls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XEN_MULTICALLS_H
#define _XEN_MULTICALLS_H
diff --git a/arch/x86/xen/pmu.c b/arch/x86/xen/pmu.c
index b9fc52556bcc..7d00d4ad44d4 100644
--- a/arch/x86/xen/pmu.c
+++ b/arch/x86/xen/pmu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/interrupt.h>
diff --git a/arch/x86/xen/pmu.h b/arch/x86/xen/pmu.h
index 4be5355b56f7..0e83a160589b 100644
--- a/arch/x86/xen/pmu.h
+++ b/arch/x86/xen/pmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __XEN_PMU_H
#define __XEN_PMU_H
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index ac55c02f98e9..c114ca767b3b 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Machine specific setup for xen
*
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index e7f02eb73727..77c959cf81e7 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/smp.h>
#include <linux/cpu.h>
#include <linux/slab.h>
diff --git a/arch/x86/xen/smp.h b/arch/x86/xen/smp.h
index 87d3c76cba37..bd02f9d50107 100644
--- a/arch/x86/xen/smp.h
+++ b/arch/x86/xen/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XEN_SMP_H
#ifdef CONFIG_SMP
diff --git a/arch/x86/xen/smp_hvm.c b/arch/x86/xen/smp_hvm.c
index fd60abedf658..f8d39440b292 100644
--- a/arch/x86/xen/smp_hvm.c
+++ b/arch/x86/xen/smp_hvm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/smp.h>
#include <xen/events.h>
diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c
index 51471408fdd1..05f91ce9b55e 100644
--- a/arch/x86/xen/smp_pv.c
+++ b/arch/x86/xen/smp_pv.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Xen SMP support
*
diff --git a/arch/x86/xen/spinlock.c b/arch/x86/xen/spinlock.c
index 25a7c4302ce7..08324c64005d 100644
--- a/arch/x86/xen/spinlock.c
+++ b/arch/x86/xen/spinlock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Split spinlock implementation out into its own file, so it can be
* compiled in a FTRACE-compatible way.
diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c
index d6b1680693a9..92bf5ecb6baf 100644
--- a/arch/x86/xen/suspend.c
+++ b/arch/x86/xen/suspend.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/tick.h>
diff --git a/arch/x86/xen/suspend_hvm.c b/arch/x86/xen/suspend_hvm.c
index 484999416d8b..e666b614cf6d 100644
--- a/arch/x86/xen/suspend_hvm.c
+++ b/arch/x86/xen/suspend_hvm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <xen/xen.h>
diff --git a/arch/x86/xen/suspend_pv.c b/arch/x86/xen/suspend_pv.c
index 3abe4f07f34a..a2e0f110af56 100644
--- a/arch/x86/xen/suspend_pv.c
+++ b/arch/x86/xen/suspend_pv.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <asm/fixmap.h>
diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
index 1ecb05db3632..80c2a4bdf230 100644
--- a/arch/x86/xen/time.c
+++ b/arch/x86/xen/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Xen time implementation.
*
diff --git a/arch/x86/xen/trace.c b/arch/x86/xen/trace.c
index a702ec2f5931..329f60eb95de 100644
--- a/arch/x86/xen/trace.c
+++ b/arch/x86/xen/trace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ftrace.h>
#include <xen/interface/xen.h>
#include <xen/interface/xen-mca.h>
diff --git a/arch/x86/xen/vga.c b/arch/x86/xen/vga.c
index 6722e3733f02..e336f223f7f4 100644
--- a/arch/x86/xen/vga.c
+++ b/arch/x86/xen/vga.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/screen_info.h>
#include <linux/init.h>
diff --git a/arch/x86/xen/xen-asm.S b/arch/x86/xen/xen-asm.S
index dcd31fa39b5d..8019edd0125c 100644
--- a/arch/x86/xen/xen-asm.S
+++ b/arch/x86/xen/xen-asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Asm versions of Xen pv-ops, suitable for direct use.
*
diff --git a/arch/x86/xen/xen-asm_32.S b/arch/x86/xen/xen-asm_32.S
index 1200e262a116..c15db060a242 100644
--- a/arch/x86/xen/xen-asm_32.S
+++ b/arch/x86/xen/xen-asm_32.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Asm versions of Xen pv-ops, suitable for direct use.
*
diff --git a/arch/x86/xen/xen-asm_64.S b/arch/x86/xen/xen-asm_64.S
index dae2cc33afb5..c98a48c861fd 100644
--- a/arch/x86/xen/xen-asm_64.S
+++ b/arch/x86/xen/xen-asm_64.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Asm versions of Xen pv-ops, suitable for direct use.
*
diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
index a7525e95d53f..b5b8d7f43557 100644
--- a/arch/x86/xen/xen-head.S
+++ b/arch/x86/xen/xen-head.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Xen-specific pieces of head.S, intended to be included in the right
place in head.S */
diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
index c8a6d224f7ed..f377e1820c6c 100644
--- a/arch/x86/xen/xen-ops.h
+++ b/arch/x86/xen/xen-ops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef XEN_OPS_H
#define XEN_OPS_H
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
index 7ad6d77b2f22..eb1f196c3f6e 100644
--- a/arch/xtensa/Kconfig
+++ b/arch/xtensa/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ZONE_DMA
def_bool y
diff --git a/arch/xtensa/Kconfig.debug b/arch/xtensa/Kconfig.debug
index 8430af27de0a..f64c14adadb3 100644
--- a/arch/xtensa/Kconfig.debug
+++ b/arch/xtensa/Kconfig.debug
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"
source "lib/Kconfig.debug"
diff --git a/arch/xtensa/boot/boot-redboot/bootstrap.S b/arch/xtensa/boot/boot-redboot/bootstrap.S
index 86c34dbc9cd0..bf7fabe6310d 100644
--- a/arch/xtensa/boot/boot-redboot/bootstrap.S
+++ b/arch/xtensa/boot/boot-redboot/bootstrap.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <variant/core.h>
#include <asm/regs.h>
#include <asm/asmmacro.h>
diff --git a/arch/xtensa/boot/dts/csp.dts b/arch/xtensa/boot/dts/csp.dts
index 4082f26716b9..885495460f7e 100644
--- a/arch/xtensa/boot/dts/csp.dts
+++ b/arch/xtensa/boot/dts/csp.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/ {
diff --git a/arch/xtensa/boot/dts/kc705.dts b/arch/xtensa/boot/dts/kc705.dts
index 6106bdc097ad..6887ff090fce 100644
--- a/arch/xtensa/boot/dts/kc705.dts
+++ b/arch/xtensa/boot/dts/kc705.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "xtfpga.dtsi"
/include/ "xtfpga-flash-128m.dtsi"
diff --git a/arch/xtensa/boot/dts/kc705_nommu.dts b/arch/xtensa/boot/dts/kc705_nommu.dts
index 65f3d741b964..d8e194a0f64e 100644
--- a/arch/xtensa/boot/dts/kc705_nommu.dts
+++ b/arch/xtensa/boot/dts/kc705_nommu.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "xtfpga.dtsi"
/include/ "xtfpga-flash-128m.dtsi"
diff --git a/arch/xtensa/boot/dts/lx200mx.dts b/arch/xtensa/boot/dts/lx200mx.dts
index 249822b99bd6..974a8d9041b3 100644
--- a/arch/xtensa/boot/dts/lx200mx.dts
+++ b/arch/xtensa/boot/dts/lx200mx.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "xtfpga.dtsi"
/include/ "xtfpga-flash-16m.dtsi"
diff --git a/arch/xtensa/boot/dts/lx60.dts b/arch/xtensa/boot/dts/lx60.dts
index a0f8b8ad3920..7c203c1c746a 100644
--- a/arch/xtensa/boot/dts/lx60.dts
+++ b/arch/xtensa/boot/dts/lx60.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "xtfpga.dtsi"
/include/ "xtfpga-flash-4m.dtsi"
diff --git a/arch/xtensa/boot/dts/ml605.dts b/arch/xtensa/boot/dts/ml605.dts
index 905c3a5035e9..08e5c8d47197 100644
--- a/arch/xtensa/boot/dts/ml605.dts
+++ b/arch/xtensa/boot/dts/ml605.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/include/ "xtfpga.dtsi"
/include/ "xtfpga-flash-16m.dtsi"
diff --git a/arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi b/arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi
index d3a88e029873..9bf8bad1dd18 100644
--- a/arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi
+++ b/arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
soc {
flash: flash@00000000 {
diff --git a/arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi b/arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi
index 1d97203c18e7..40c2f81f7cb6 100644
--- a/arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi
+++ b/arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
soc {
flash: flash@08000000 {
diff --git a/arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi b/arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi
index d1c621ca8be1..fb8d3a9f33c2 100644
--- a/arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi
+++ b/arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
soc {
flash: flash@08000000 {
diff --git a/arch/xtensa/boot/dts/xtfpga.dtsi b/arch/xtensa/boot/dts/xtfpga.dtsi
index 91616a9d79df..1090528825ec 100644
--- a/arch/xtensa/boot/dts/xtfpga.dtsi
+++ b/arch/xtensa/boot/dts/xtfpga.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
compatible = "cdns,xtensa-xtfpga";
#address-cells = <1>;
diff --git a/arch/xtensa/boot/lib/Makefile b/arch/xtensa/boot/lib/Makefile
index 6868f2ca6af8..d2a7f48564a4 100644
--- a/arch/xtensa/boot/lib/Makefile
+++ b/arch/xtensa/boot/lib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for some libs needed by zImage.
#
diff --git a/arch/xtensa/boot/lib/zmem.c b/arch/xtensa/boot/lib/zmem.c
index d9862aa8ca25..e3ecd743c515 100644
--- a/arch/xtensa/boot/lib/zmem.c
+++ b/arch/xtensa/boot/lib/zmem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/zlib.h>
/* bits taken from ppc */
diff --git a/arch/xtensa/include/asm/flat.h b/arch/xtensa/include/asm/flat.h
index 60e0d6a45795..b8532d7877b3 100644
--- a/arch/xtensa/include/asm/flat.h
+++ b/arch/xtensa/include/asm/flat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_XTENSA_FLAT_H
#define __ASM_XTENSA_FLAT_H
diff --git a/arch/xtensa/include/asm/nommu_context.h b/arch/xtensa/include/asm/nommu_context.h
index 22984fd1d846..2cebdbbdb633 100644
--- a/arch/xtensa/include/asm/nommu_context.h
+++ b/arch/xtensa/include/asm/nommu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static inline void init_mmu(void)
{
}
diff --git a/arch/xtensa/include/asm/processor.h b/arch/xtensa/include/asm/processor.h
index 30ee8c608853..5b0027d4ecc0 100644
--- a/arch/xtensa/include/asm/processor.h
+++ b/arch/xtensa/include/asm/processor.h
@@ -208,11 +208,6 @@ struct mm_struct;
/* Free all resources held by a thread. */
#define release_thread(thread) do { } while(0)
-/* Copy and release all segment info associated with a VM */
-#define copy_segments(p, mm) do { } while(0)
-#define release_segments(mm) do { } while(0)
-#define forget_segments() do { } while (0)
-
extern unsigned long get_wchan(struct task_struct *p);
#define KSTK_EIP(tsk) (task_pt_regs(tsk)->pc)
diff --git a/arch/xtensa/include/asm/spinlock_types.h b/arch/xtensa/include/asm/spinlock_types.h
index 7ec5ce10c9e9..bb1fe6c1816e 100644
--- a/arch/xtensa/include/asm/spinlock_types.h
+++ b/arch/xtensa/include/asm/spinlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SPINLOCK_TYPES_H
#define __ASM_SPINLOCK_TYPES_H
diff --git a/arch/xtensa/include/asm/unistd.h b/arch/xtensa/include/asm/unistd.h
index cb4c2ce8d447..ed66db3bc9bb 100644
--- a/arch/xtensa/include/asm/unistd.h
+++ b/arch/xtensa/include/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XTENSA_UNISTD_H
#define _XTENSA_UNISTD_H
diff --git a/arch/xtensa/include/uapi/asm/byteorder.h b/arch/xtensa/include/uapi/asm/byteorder.h
index 54eb6315349c..5b9f832c2e77 100644
--- a/arch/xtensa/include/uapi/asm/byteorder.h
+++ b/arch/xtensa/include/uapi/asm/byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XTENSA_BYTEORDER_H
#define _XTENSA_BYTEORDER_H
diff --git a/arch/xtensa/include/uapi/asm/ioctls.h b/arch/xtensa/include/uapi/asm/ioctls.h
index 47d82c09be7b..ec43609cbfc5 100644
--- a/arch/xtensa/include/uapi/asm/ioctls.h
+++ b/arch/xtensa/include/uapi/asm/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/ioctls.h
*
diff --git a/arch/xtensa/include/uapi/asm/ipcbuf.h b/arch/xtensa/include/uapi/asm/ipcbuf.h
index c33aa6a42145..a57afa0b606f 100644
--- a/arch/xtensa/include/uapi/asm/ipcbuf.h
+++ b/arch/xtensa/include/uapi/asm/ipcbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/ipcbuf.h
*
diff --git a/arch/xtensa/include/uapi/asm/mman.h b/arch/xtensa/include/uapi/asm/mman.h
index b15b278aa314..2bfe590694fc 100644
--- a/arch/xtensa/include/uapi/asm/mman.h
+++ b/arch/xtensa/include/uapi/asm/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/mman.h
*
diff --git a/arch/xtensa/include/uapi/asm/msgbuf.h b/arch/xtensa/include/uapi/asm/msgbuf.h
index 693c96755280..36e2e103ca38 100644
--- a/arch/xtensa/include/uapi/asm/msgbuf.h
+++ b/arch/xtensa/include/uapi/asm/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/msgbuf.h
*
diff --git a/arch/xtensa/include/uapi/asm/param.h b/arch/xtensa/include/uapi/asm/param.h
index 87bc2eae630e..e6feb4ee0590 100644
--- a/arch/xtensa/include/uapi/asm/param.h
+++ b/arch/xtensa/include/uapi/asm/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/param.h
*
diff --git a/arch/xtensa/include/uapi/asm/poll.h b/arch/xtensa/include/uapi/asm/poll.h
index 9d2d5993f068..4d249040b33d 100644
--- a/arch/xtensa/include/uapi/asm/poll.h
+++ b/arch/xtensa/include/uapi/asm/poll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/poll.h
*
diff --git a/arch/xtensa/include/uapi/asm/posix_types.h b/arch/xtensa/include/uapi/asm/posix_types.h
index 6e96be0d02d3..1dc67592881f 100644
--- a/arch/xtensa/include/uapi/asm/posix_types.h
+++ b/arch/xtensa/include/uapi/asm/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/posix_types.h
*
diff --git a/arch/xtensa/include/uapi/asm/ptrace.h b/arch/xtensa/include/uapi/asm/ptrace.h
index 8853a0d544c8..a10b42963703 100644
--- a/arch/xtensa/include/uapi/asm/ptrace.h
+++ b/arch/xtensa/include/uapi/asm/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/ptrace.h
*
diff --git a/arch/xtensa/include/uapi/asm/sembuf.h b/arch/xtensa/include/uapi/asm/sembuf.h
index c15870493b33..f61b6331a10c 100644
--- a/arch/xtensa/include/uapi/asm/sembuf.h
+++ b/arch/xtensa/include/uapi/asm/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/sembuf.h
*
diff --git a/arch/xtensa/include/uapi/asm/setup.h b/arch/xtensa/include/uapi/asm/setup.h
index 9fa8ad979361..57e6c210e84f 100644
--- a/arch/xtensa/include/uapi/asm/setup.h
+++ b/arch/xtensa/include/uapi/asm/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/setup.h
*
diff --git a/arch/xtensa/include/uapi/asm/shmbuf.h b/arch/xtensa/include/uapi/asm/shmbuf.h
index ad4b0121782c..26550bdc8430 100644
--- a/arch/xtensa/include/uapi/asm/shmbuf.h
+++ b/arch/xtensa/include/uapi/asm/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/shmbuf.h
*
diff --git a/arch/xtensa/include/uapi/asm/sigcontext.h b/arch/xtensa/include/uapi/asm/sigcontext.h
index 03383af8c3b7..9cbf39e63f74 100644
--- a/arch/xtensa/include/uapi/asm/sigcontext.h
+++ b/arch/xtensa/include/uapi/asm/sigcontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/sigcontext.h
*
diff --git a/arch/xtensa/include/uapi/asm/signal.h b/arch/xtensa/include/uapi/asm/signal.h
index 586756ee267a..005dec5bfde4 100644
--- a/arch/xtensa/include/uapi/asm/signal.h
+++ b/arch/xtensa/include/uapi/asm/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/signal.h
*
diff --git a/arch/xtensa/include/uapi/asm/socket.h b/arch/xtensa/include/uapi/asm/socket.h
index 220059999e74..75a07b8119a9 100644
--- a/arch/xtensa/include/uapi/asm/socket.h
+++ b/arch/xtensa/include/uapi/asm/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/socket.h
*
diff --git a/arch/xtensa/include/uapi/asm/sockios.h b/arch/xtensa/include/uapi/asm/sockios.h
index efe0af379f01..fb8ac3607189 100644
--- a/arch/xtensa/include/uapi/asm/sockios.h
+++ b/arch/xtensa/include/uapi/asm/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/sockios.h
*
diff --git a/arch/xtensa/include/uapi/asm/stat.h b/arch/xtensa/include/uapi/asm/stat.h
index c4992038cee0..7b4d90d6d771 100644
--- a/arch/xtensa/include/uapi/asm/stat.h
+++ b/arch/xtensa/include/uapi/asm/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/stat.h
*
diff --git a/arch/xtensa/include/uapi/asm/swab.h b/arch/xtensa/include/uapi/asm/swab.h
index 226a39162310..e677cf4cc092 100644
--- a/arch/xtensa/include/uapi/asm/swab.h
+++ b/arch/xtensa/include/uapi/asm/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/swab.h
*
diff --git a/arch/xtensa/include/uapi/asm/termbits.h b/arch/xtensa/include/uapi/asm/termbits.h
index 0d6c8715b24f..d4206a7c5138 100644
--- a/arch/xtensa/include/uapi/asm/termbits.h
+++ b/arch/xtensa/include/uapi/asm/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/termbits.h
*
diff --git a/arch/xtensa/include/uapi/asm/types.h b/arch/xtensa/include/uapi/asm/types.h
index 2efc921506c4..12db8ac38750 100644
--- a/arch/xtensa/include/uapi/asm/types.h
+++ b/arch/xtensa/include/uapi/asm/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/asm-xtensa/types.h
*
diff --git a/arch/xtensa/include/uapi/asm/unistd.h b/arch/xtensa/include/uapi/asm/unistd.h
index 6be7eb27fd29..bc3f62db5c5f 100644
--- a/arch/xtensa/include/uapi/asm/unistd.h
+++ b/arch/xtensa/include/uapi/asm/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#if !defined(_UAPI_XTENSA_UNISTD_H) || defined(__SYSCALL)
#define _UAPI_XTENSA_UNISTD_H
diff --git a/arch/xtensa/kernel/Makefile b/arch/xtensa/kernel/Makefile
index 264fb89c444e..bb8d55775a97 100644
--- a/arch/xtensa/kernel/Makefile
+++ b/arch/xtensa/kernel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux/Xtensa kernel.
#
diff --git a/arch/xtensa/kernel/irq.c b/arch/xtensa/kernel/irq.c
index 99341028cc77..18e4ef34ac45 100644
--- a/arch/xtensa/kernel/irq.c
+++ b/arch/xtensa/kernel/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/xtensa/kernel/irq.c
*
diff --git a/arch/xtensa/mm/mmu.c b/arch/xtensa/mm/mmu.c
index abe4513eb0dd..358d748d9083 100644
--- a/arch/xtensa/mm/mmu.c
+++ b/arch/xtensa/mm/mmu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* xtensa mmu stuff
*
diff --git a/arch/xtensa/oprofile/Makefile b/arch/xtensa/oprofile/Makefile
index 69ffbe80f184..f559b9ffbb3f 100644
--- a/arch/xtensa/oprofile/Makefile
+++ b/arch/xtensa/oprofile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPROFILE) += oprofile.o
DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
diff --git a/block/Kconfig b/block/Kconfig
index 3ab42bbb06d5..28ec55752b68 100644
--- a/block/Kconfig
+++ b/block/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Block layer core configuration
#
diff --git a/block/Kconfig.iosched b/block/Kconfig.iosched
index fd2cefa47d35..a4a8914bf7a4 100644
--- a/block/Kconfig.iosched
+++ b/block/Kconfig.iosched
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
if BLOCK
menu "IO Schedulers"
diff --git a/block/Makefile b/block/Makefile
index 9396ebc85d24..6a56303b9925 100644
--- a/block/Makefile
+++ b/block/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel block layer
#
diff --git a/block/bio.c b/block/bio.c
index b38e962fa83e..101c2a9b5481 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -1239,8 +1239,8 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
*/
bmd->is_our_pages = map_data ? 0 : 1;
memcpy(bmd->iov, iter->iov, sizeof(struct iovec) * iter->nr_segs);
- iov_iter_init(&bmd->iter, iter->type, bmd->iov,
- iter->nr_segs, iter->count);
+ bmd->iter = *iter;
+ bmd->iter.iov = bmd->iov;
ret = -ENOMEM;
bio = bio_kmalloc(gfp_mask, nr_pages);
@@ -1331,6 +1331,7 @@ struct bio *bio_map_user_iov(struct request_queue *q,
int ret, offset;
struct iov_iter i;
struct iovec iov;
+ struct bio_vec *bvec;
iov_for_each(iov, i, *iter) {
unsigned long uaddr = (unsigned long) iov.iov_base;
@@ -1375,7 +1376,12 @@ struct bio *bio_map_user_iov(struct request_queue *q,
ret = get_user_pages_fast(uaddr, local_nr_pages,
(iter->type & WRITE) != WRITE,
&pages[cur_page]);
- if (ret < local_nr_pages) {
+ if (unlikely(ret < local_nr_pages)) {
+ for (j = cur_page; j < page_limit; j++) {
+ if (!pages[j])
+ break;
+ put_page(pages[j]);
+ }
ret = -EFAULT;
goto out_unmap;
}
@@ -1383,6 +1389,7 @@ struct bio *bio_map_user_iov(struct request_queue *q,
offset = offset_in_page(uaddr);
for (j = cur_page; j < page_limit; j++) {
unsigned int bytes = PAGE_SIZE - offset;
+ unsigned short prev_bi_vcnt = bio->bi_vcnt;
if (len <= 0)
break;
@@ -1397,6 +1404,13 @@ struct bio *bio_map_user_iov(struct request_queue *q,
bytes)
break;
+ /*
+ * check if vector was merged with previous
+ * drop page reference if needed
+ */
+ if (bio->bi_vcnt == prev_bi_vcnt)
+ put_page(pages[j]);
+
len -= bytes;
offset = 0;
}
@@ -1423,10 +1437,8 @@ struct bio *bio_map_user_iov(struct request_queue *q,
return bio;
out_unmap:
- for (j = 0; j < nr_pages; j++) {
- if (!pages[j])
- break;
- put_page(pages[j]);
+ bio_for_each_segment_all(bvec, bio, j) {
+ put_page(bvec->bv_page);
}
out:
kfree(pages);
diff --git a/block/blk-core.c b/block/blk-core.c
index aebe676225e6..048be4aa6024 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -854,6 +854,9 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
kobject_init(&q->kobj, &blk_queue_ktype);
+#ifdef CONFIG_BLK_DEV_IO_TRACE
+ mutex_init(&q->blk_trace_mutex);
+#endif
mutex_init(&q->sysfs_lock);
spin_lock_init(&q->__queue_lock);
diff --git a/block/blk-ioc.c b/block/blk-ioc.c
index 63898d229cb9..f23311e4b201 100644
--- a/block/blk-ioc.c
+++ b/block/blk-ioc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Functions related to io context handling
*/
diff --git a/block/blk-lib.c b/block/blk-lib.c
index 62240f8832ca..63fb971d6574 100644
--- a/block/blk-lib.c
+++ b/block/blk-lib.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Functions related to generic helpers functions
*/
diff --git a/block/blk-map.c b/block/blk-map.c
index 2547016aa7aa..d5251edcc0dd 100644
--- a/block/blk-map.c
+++ b/block/blk-map.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Functions related to mapping data to requests
*/
diff --git a/block/blk-merge.c b/block/blk-merge.c
index aa524cad5bea..f5dedd57dff6 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Functions related to segment and merge handling
*/
diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c
index 980e73095643..de294d775acf 100644
--- a/block/blk-mq-debugfs.c
+++ b/block/blk-mq-debugfs.c
@@ -815,10 +815,14 @@ int blk_mq_debugfs_register(struct request_queue *q)
goto err;
/*
- * blk_mq_init_hctx() attempted to do this already, but q->debugfs_dir
+ * blk_mq_init_sched() attempted to do this already, but q->debugfs_dir
* didn't exist yet (because we don't know what to name the directory
* until the queue is registered to a gendisk).
*/
+ if (q->elevator && !q->sched_debugfs_dir)
+ blk_mq_debugfs_register_sched(q);
+
+ /* Similarly, blk_mq_init_hctx() couldn't do this previously. */
queue_for_each_hw_ctx(q, hctx, i) {
if (!hctx->debugfs_dir && blk_mq_debugfs_register_hctx(q, hctx))
goto err;
diff --git a/block/blk-mq-debugfs.h b/block/blk-mq-debugfs.h
index a182e6f97565..b9d366e57097 100644
--- a/block/blk-mq-debugfs.h
+++ b/block/blk-mq-debugfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef INT_BLK_MQ_DEBUGFS_H
#define INT_BLK_MQ_DEBUGFS_H
diff --git a/block/blk-mq-sched.h b/block/blk-mq-sched.h
index 9267d0b7c197..ba1d1418a96d 100644
--- a/block/blk-mq-sched.h
+++ b/block/blk-mq-sched.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BLK_MQ_SCHED_H
#define BLK_MQ_SCHED_H
diff --git a/block/blk-mq-tag.h b/block/blk-mq-tag.h
index 5cb51e53cc03..c190165d92ea 100644
--- a/block/blk-mq-tag.h
+++ b/block/blk-mq-tag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef INT_BLK_MQ_TAG_H
#define INT_BLK_MQ_TAG_H
diff --git a/block/blk-mq.h b/block/blk-mq.h
index ef15b3414da5..4933af9d61f7 100644
--- a/block/blk-mq.h
+++ b/block/blk-mq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef INT_BLK_MQ_H
#define INT_BLK_MQ_H
diff --git a/block/blk-softirq.c b/block/blk-softirq.c
index 07125e7941f4..01e2b353a2b9 100644
--- a/block/blk-softirq.c
+++ b/block/blk-softirq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Functions related to softirq rq completions
*/
diff --git a/block/blk-stat.h b/block/blk-stat.h
index 2fb20d1a341a..2dd36347252a 100644
--- a/block/blk-stat.h
+++ b/block/blk-stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BLK_STAT_H
#define BLK_STAT_H
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index b8362c0df51d..e54be402899d 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Functions related to sysfs handling
*/
diff --git a/block/blk-tag.c b/block/blk-tag.c
index e1a9c15eb1b8..09f19c6c52ce 100644
--- a/block/blk-tag.c
+++ b/block/blk-tag.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Functions related to tagged command queuing
*/
diff --git a/block/blk-throttle.c b/block/blk-throttle.c
index 0fea76aa0f3f..8631763866c6 100644
--- a/block/blk-throttle.c
+++ b/block/blk-throttle.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Interface for controlling IO bandwidth on a request queue
*
@@ -1911,11 +1912,11 @@ static void throtl_upgrade_state(struct throtl_data *td)
tg->disptime = jiffies - 1;
throtl_select_dispatch(sq);
- throtl_schedule_next_dispatch(sq, false);
+ throtl_schedule_next_dispatch(sq, true);
}
rcu_read_unlock();
throtl_select_dispatch(&td->service_queue);
- throtl_schedule_next_dispatch(&td->service_queue, false);
+ throtl_schedule_next_dispatch(&td->service_queue, true);
queue_work(kthrotld_workqueue, &td->dispatch_work);
}
diff --git a/block/blk-wbt.h b/block/blk-wbt.h
index df6de50c5d59..a232c98fbf4d 100644
--- a/block/blk-wbt.h
+++ b/block/blk-wbt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef WB_THROTTLE_H
#define WB_THROTTLE_H
diff --git a/block/blk.h b/block/blk.h
index fcb9775b997d..85be8b232b37 100644
--- a/block/blk.h
+++ b/block/blk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BLK_INTERNAL_H
#define BLK_INTERNAL_H
diff --git a/block/bounce.c b/block/bounce.c
index 5793c2dc1a15..fceb1a96480b 100644
--- a/block/bounce.c
+++ b/block/bounce.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* bounce buffer handling for block devices
*
* - Split from highmem.c
diff --git a/block/bsg-lib.c b/block/bsg-lib.c
index c82408c7cc3c..15d25ccd51a5 100644
--- a/block/bsg-lib.c
+++ b/block/bsg-lib.c
@@ -154,7 +154,6 @@ static int bsg_prepare_job(struct device *dev, struct request *req)
failjob_rls_rqst_payload:
kfree(job->request_payload.sg_list);
failjob_rls_job:
- kfree(job);
return -ENOMEM;
}
@@ -208,20 +207,34 @@ static int bsg_init_rq(struct request_queue *q, struct request *req, gfp_t gfp)
struct bsg_job *job = blk_mq_rq_to_pdu(req);
struct scsi_request *sreq = &job->sreq;
+ /* called right after the request is allocated for the request_queue */
+
+ sreq->sense = kzalloc(SCSI_SENSE_BUFFERSIZE, gfp);
+ if (!sreq->sense)
+ return -ENOMEM;
+
+ return 0;
+}
+
+static void bsg_initialize_rq(struct request *req)
+{
+ struct bsg_job *job = blk_mq_rq_to_pdu(req);
+ struct scsi_request *sreq = &job->sreq;
+ void *sense = sreq->sense;
+
+ /* called right before the request is given to the request_queue user */
+
memset(job, 0, sizeof(*job));
scsi_req_init(sreq);
+
+ sreq->sense = sense;
sreq->sense_len = SCSI_SENSE_BUFFERSIZE;
- sreq->sense = kzalloc(sreq->sense_len, gfp);
- if (!sreq->sense)
- return -ENOMEM;
job->req = req;
- job->reply = sreq->sense;
+ job->reply = sense;
job->reply_len = sreq->sense_len;
job->dd_data = job + 1;
-
- return 0;
}
static void bsg_exit_rq(struct request_queue *q, struct request *req)
@@ -252,6 +265,7 @@ struct request_queue *bsg_setup_queue(struct device *dev, const char *name,
q->cmd_size = sizeof(struct bsg_job) + dd_job_size;
q->init_rq_fn = bsg_init_rq;
q->exit_rq_fn = bsg_exit_rq;
+ q->initialize_rq_fn = bsg_initialize_rq;
q->request_fn = bsg_request_fn;
ret = blk_init_allocated_queue(q);
diff --git a/block/cmdline-parser.c b/block/cmdline-parser.c
index 9dbc67e42a99..f2a14571882b 100644
--- a/block/cmdline-parser.c
+++ b/block/cmdline-parser.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Parse command line, get partition information
*
diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
index abaf9d78a206..6ca015f92766 100644
--- a/block/compat_ioctl.c
+++ b/block/compat_ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/blkdev.h>
#include <linux/blkpg.h>
#include <linux/blktrace_api.h>
diff --git a/block/partition-generic.c b/block/partition-generic.c
index 86e8fe1adcdb..91622db9aedf 100644
--- a/block/partition-generic.c
+++ b/block/partition-generic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Code extracted from drivers/block/genhd.c
* Copyright (C) 1991-1998 Linus Torvalds
@@ -112,7 +113,7 @@ ssize_t part_stat_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct hd_struct *p = dev_to_part(dev);
- struct request_queue *q = dev_to_disk(dev)->queue;
+ struct request_queue *q = part_to_disk(p)->queue;
unsigned int inflight[2];
int cpu;
diff --git a/block/partitions/Kconfig b/block/partitions/Kconfig
index 9b29a996c311..37b9710cc80a 100644
--- a/block/partitions/Kconfig
+++ b/block/partitions/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Partition configuration
#
diff --git a/block/partitions/Makefile b/block/partitions/Makefile
index 37a95270503c..2f276b677c81 100644
--- a/block/partitions/Makefile
+++ b/block/partitions/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/block/partitions/acorn.h b/block/partitions/acorn.h
index ede828529692..67b06601ca4c 100644
--- a/block/partitions/acorn.h
+++ b/block/partitions/acorn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/partitions/acorn.h
*
diff --git a/block/partitions/aix.c b/block/partitions/aix.c
index f3ed7b2d89bf..007f95eea0e1 100644
--- a/block/partitions/aix.c
+++ b/block/partitions/aix.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/aix.c
*
diff --git a/block/partitions/amiga.c b/block/partitions/amiga.c
index 2b13533d60a2..560936617d9c 100644
--- a/block/partitions/amiga.c
+++ b/block/partitions/amiga.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/amiga.c
*
diff --git a/block/partitions/atari.c b/block/partitions/atari.c
index ff1fb93712c1..2305840c8522 100644
--- a/block/partitions/atari.c
+++ b/block/partitions/atari.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/atari.c
*
diff --git a/block/partitions/atari.h b/block/partitions/atari.h
index f2ec43bfeec1..01c2b9457394 100644
--- a/block/partitions/atari.h
+++ b/block/partitions/atari.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fs/partitions/atari.h
* Moved by Russell King from:
diff --git a/block/partitions/check.c b/block/partitions/check.c
index 16118d11dbfc..720145c49066 100644
--- a/block/partitions/check.c
+++ b/block/partitions/check.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/check.c
*
diff --git a/block/partitions/check.h b/block/partitions/check.h
index eade17ea910b..6042f769471a 100644
--- a/block/partitions/check.h
+++ b/block/partitions/check.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/pagemap.h>
#include <linux/blkdev.h>
#include <linux/genhd.h>
diff --git a/block/partitions/cmdline.c b/block/partitions/cmdline.c
index 5141b563adf1..e333583ab38c 100644
--- a/block/partitions/cmdline.c
+++ b/block/partitions/cmdline.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2013 HUAWEI
* Author: Cai Zhiyong <caizhiyong@huawei.com>
diff --git a/block/partitions/cmdline.h b/block/partitions/cmdline.h
index 26e0f8da1414..e64a31636a1f 100644
--- a/block/partitions/cmdline.h
+++ b/block/partitions/cmdline.h
@@ -1,2 +1,3 @@
+/* SPDX-License-Identifier: GPL-2.0 */
int cmdline_partition(struct parsed_partitions *state);
diff --git a/block/partitions/ibm.c b/block/partitions/ibm.c
index 14b081af8d61..a5d480f807f3 100644
--- a/block/partitions/ibm.c
+++ b/block/partitions/ibm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Volker Sameske <sameske@de.ibm.com>
diff --git a/block/partitions/karma.c b/block/partitions/karma.c
index 9721fa589bb1..59812d705c3d 100644
--- a/block/partitions/karma.c
+++ b/block/partitions/karma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/karma.c
* Rio Karma partition info.
diff --git a/block/partitions/mac.c b/block/partitions/mac.c
index 621317ac4d59..b6095335636c 100644
--- a/block/partitions/mac.c
+++ b/block/partitions/mac.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/mac.c
*
diff --git a/block/partitions/mac.h b/block/partitions/mac.h
index 3c7d98436380..453ed2964804 100644
--- a/block/partitions/mac.h
+++ b/block/partitions/mac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fs/partitions/mac.h
*/
diff --git a/block/partitions/msdos.c b/block/partitions/msdos.c
index 5610cd537da7..0af3a3db6fb0 100644
--- a/block/partitions/msdos.c
+++ b/block/partitions/msdos.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/msdos.c
*
diff --git a/block/partitions/osf.c b/block/partitions/osf.c
index 764b86a01965..4b873973d6c0 100644
--- a/block/partitions/osf.c
+++ b/block/partitions/osf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/osf.c
*
diff --git a/block/partitions/sgi.c b/block/partitions/sgi.c
index ea8a86dceaf4..d7b421c6e530 100644
--- a/block/partitions/sgi.c
+++ b/block/partitions/sgi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/sgi.c
*
diff --git a/block/partitions/sun.c b/block/partitions/sun.c
index b5b6fcfb3d36..90f36724e796 100644
--- a/block/partitions/sun.c
+++ b/block/partitions/sun.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/sun.c
*
diff --git a/block/partitions/sysv68.c b/block/partitions/sysv68.c
index 9627ccffc1c4..92e810826b01 100644
--- a/block/partitions/sysv68.c
+++ b/block/partitions/sysv68.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/sysv68.c
*
diff --git a/block/partitions/ultrix.c b/block/partitions/ultrix.c
index 8dbaf9f77a99..ecd0d7346c3d 100644
--- a/block/partitions/ultrix.c
+++ b/block/partitions/ultrix.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/partitions/ultrix.c
*
diff --git a/certs/Kconfig b/certs/Kconfig
index 6ce51ede9e9b..5f7663df6e8e 100644
--- a/certs/Kconfig
+++ b/certs/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Certificates for signature checking"
config MODULE_SIG_KEY
diff --git a/certs/Makefile b/certs/Makefile
index 847361ce14d1..5d0999b9e21b 100644
--- a/certs/Makefile
+++ b/certs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel signature checking certificates.
#
diff --git a/certs/blacklist_hashes.c b/certs/blacklist_hashes.c
index 5bd449f7db17..344892337be0 100644
--- a/certs/blacklist_hashes.c
+++ b/certs/blacklist_hashes.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "blacklist.h"
const char __initdata *const blacklist_hashes[] = {
diff --git a/certs/blacklist_nohashes.c b/certs/blacklist_nohashes.c
index 851de10706a5..73fd99098ad7 100644
--- a/certs/blacklist_nohashes.c
+++ b/certs/blacklist_nohashes.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "blacklist.h"
const char __initdata *const blacklist_hashes[] = {
diff --git a/certs/system_certificates.S b/certs/system_certificates.S
index c9ceb71a43fe..3918ff7235ed 100644
--- a/certs/system_certificates.S
+++ b/certs/system_certificates.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/export.h>
#include <linux/init.h>
diff --git a/crypto/Kconfig b/crypto/Kconfig
index 0a121f9ddf8e..ac5fb37e6f4b 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Generic algorithms support
#
diff --git a/crypto/Makefile b/crypto/Makefile
index d41f0331b085..da190be60ce2 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Cryptographic API
#
diff --git a/crypto/af_alg.c b/crypto/af_alg.c
index ffa9f4ccd9b4..337cf382718e 100644
--- a/crypto/af_alg.c
+++ b/crypto/af_alg.c
@@ -619,14 +619,14 @@ void af_alg_pull_tsgl(struct sock *sk, size_t used, struct scatterlist *dst,
struct af_alg_ctx *ctx = ask->private;
struct af_alg_tsgl *sgl;
struct scatterlist *sg;
- unsigned int i, j;
+ unsigned int i, j = 0;
while (!list_empty(&ctx->tsgl_list)) {
sgl = list_first_entry(&ctx->tsgl_list, struct af_alg_tsgl,
list);
sg = sgl->sg;
- for (i = 0, j = 0; i < sgl->cur; i++) {
+ for (i = 0; i < sgl->cur; i++) {
size_t plen = min_t(size_t, used, sg[i].length);
struct page *page = sg_page(sg + i);
diff --git a/crypto/asymmetric_keys/Kconfig b/crypto/asymmetric_keys/Kconfig
index 331f6baf2df8..f3702e533ff4 100644
--- a/crypto/asymmetric_keys/Kconfig
+++ b/crypto/asymmetric_keys/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ASYMMETRIC_KEY_TYPE
bool "Asymmetric (public-key cryptographic) key type"
depends on KEYS
diff --git a/crypto/asymmetric_keys/Makefile b/crypto/asymmetric_keys/Makefile
index 6516855bec18..4719aad5dec0 100644
--- a/crypto/asymmetric_keys/Makefile
+++ b/crypto/asymmetric_keys/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for asymmetric cryptographic keys
#
diff --git a/crypto/asymmetric_keys/asymmetric_type.c b/crypto/asymmetric_keys/asymmetric_type.c
index e4b0ed386bc8..39aecad286fe 100644
--- a/crypto/asymmetric_keys/asymmetric_type.c
+++ b/crypto/asymmetric_keys/asymmetric_type.c
@@ -57,6 +57,8 @@ struct key *find_asymmetric_key(struct key *keyring,
char *req, *p;
int len;
+ BUG_ON(!id_0 && !id_1);
+
if (id_0) {
lookup = id_0->data;
len = id_0->len;
@@ -105,7 +107,7 @@ struct key *find_asymmetric_key(struct key *keyring,
if (id_0 && id_1) {
const struct asymmetric_key_ids *kids = asymmetric_key_ids(key);
- if (!kids->id[0]) {
+ if (!kids->id[1]) {
pr_debug("First ID matches, but second is missing\n");
goto reject;
}
diff --git a/crypto/asymmetric_keys/pkcs7_parser.c b/crypto/asymmetric_keys/pkcs7_parser.c
index af4cd8649117..d140d8bb2c96 100644
--- a/crypto/asymmetric_keys/pkcs7_parser.c
+++ b/crypto/asymmetric_keys/pkcs7_parser.c
@@ -88,6 +88,9 @@ static int pkcs7_check_authattrs(struct pkcs7_message *msg)
bool want = false;
sinfo = msg->signed_infos;
+ if (!sinfo)
+ goto inconsistent;
+
if (sinfo->authattrs) {
want = true;
msg->have_authattrs = true;
diff --git a/crypto/async_tx/Kconfig b/crypto/async_tx/Kconfig
index f38a58aef3ec..89bafa2efc30 100644
--- a/crypto/async_tx/Kconfig
+++ b/crypto/async_tx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ASYNC_CORE
tristate
diff --git a/crypto/async_tx/Makefile b/crypto/async_tx/Makefile
index 462e4abbfe69..056e48245373 100644
--- a/crypto/async_tx/Makefile
+++ b/crypto/async_tx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ASYNC_CORE) += async_tx.o
obj-$(CONFIG_ASYNC_MEMCPY) += async_memcpy.o
obj-$(CONFIG_ASYNC_XOR) += async_xor.o
diff --git a/crypto/drbg.c b/crypto/drbg.c
index 633a88e93ab0..70018397e59a 100644
--- a/crypto/drbg.c
+++ b/crypto/drbg.c
@@ -1133,10 +1133,10 @@ static inline void drbg_dealloc_state(struct drbg_state *drbg)
{
if (!drbg)
return;
- kzfree(drbg->V);
- drbg->Vbuf = NULL;
- kzfree(drbg->C);
- drbg->Cbuf = NULL;
+ kzfree(drbg->Vbuf);
+ drbg->V = NULL;
+ kzfree(drbg->Cbuf);
+ drbg->C = NULL;
kzfree(drbg->scratchpadbuf);
drbg->scratchpadbuf = NULL;
drbg->reseed_ctr = 0;
diff --git a/crypto/ecc_curve_defs.h b/crypto/ecc_curve_defs.h
index 03ae5f714028..b80f45da829c 100644
--- a/crypto/ecc_curve_defs.h
+++ b/crypto/ecc_curve_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYTO_ECC_CURVE_DEFS_H
#define _CRYTO_ECC_CURVE_DEFS_H
diff --git a/crypto/ripemd.h b/crypto/ripemd.h
index c57a2d4ce8d9..93edbf52197d 100644
--- a/crypto/ripemd.h
+++ b/crypto/ripemd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common values for RIPEMD algorithms
*/
diff --git a/crypto/shash.c b/crypto/shash.c
index 5e31c8d776df..325a14da5827 100644
--- a/crypto/shash.c
+++ b/crypto/shash.c
@@ -41,7 +41,7 @@ static int shash_setkey_unaligned(struct crypto_shash *tfm, const u8 *key,
int err;
absize = keylen + (alignmask & ~(crypto_tfm_ctx_alignment() - 1));
- buffer = kmalloc(absize, GFP_KERNEL);
+ buffer = kmalloc(absize, GFP_ATOMIC);
if (!buffer)
return -ENOMEM;
@@ -275,12 +275,14 @@ static int shash_async_finup(struct ahash_request *req)
int shash_ahash_digest(struct ahash_request *req, struct shash_desc *desc)
{
- struct scatterlist *sg = req->src;
- unsigned int offset = sg->offset;
unsigned int nbytes = req->nbytes;
+ struct scatterlist *sg;
+ unsigned int offset;
int err;
- if (nbytes < min(sg->length, ((unsigned int)(PAGE_SIZE)) - offset)) {
+ if (nbytes &&
+ (sg = req->src, offset = sg->offset,
+ nbytes < min(sg->length, ((unsigned int)(PAGE_SIZE)) - offset))) {
void *data;
data = kmap_atomic(sg_page(sg));
diff --git a/crypto/skcipher.c b/crypto/skcipher.c
index 4faa0fd53b0c..d5692e35fab1 100644
--- a/crypto/skcipher.c
+++ b/crypto/skcipher.c
@@ -426,14 +426,9 @@ static int skcipher_copy_iv(struct skcipher_walk *walk)
static int skcipher_walk_first(struct skcipher_walk *walk)
{
- walk->nbytes = 0;
-
if (WARN_ON_ONCE(in_irq()))
return -EDEADLK;
- if (unlikely(!walk->total))
- return 0;
-
walk->buffer = NULL;
if (unlikely(((unsigned long)walk->iv & walk->alignmask))) {
int err = skcipher_copy_iv(walk);
@@ -452,10 +447,15 @@ static int skcipher_walk_skcipher(struct skcipher_walk *walk,
{
struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
+ walk->total = req->cryptlen;
+ walk->nbytes = 0;
+
+ if (unlikely(!walk->total))
+ return 0;
+
scatterwalk_start(&walk->in, req->src);
scatterwalk_start(&walk->out, req->dst);
- walk->total = req->cryptlen;
walk->iv = req->iv;
walk->oiv = req->iv;
@@ -509,6 +509,11 @@ static int skcipher_walk_aead_common(struct skcipher_walk *walk,
struct crypto_aead *tfm = crypto_aead_reqtfm(req);
int err;
+ walk->nbytes = 0;
+
+ if (unlikely(!walk->total))
+ return 0;
+
walk->flags &= ~SKCIPHER_WALK_PHYS;
scatterwalk_start(&walk->in, req->src);
diff --git a/crypto/xts.c b/crypto/xts.c
index d86c11a8c882..e31828ed0046 100644
--- a/crypto/xts.c
+++ b/crypto/xts.c
@@ -554,8 +554,10 @@ static int create(struct crypto_template *tmpl, struct rtattr **tb)
ctx->name[len - 1] = 0;
if (snprintf(inst->alg.base.cra_name, CRYPTO_MAX_ALG_NAME,
- "xts(%s)", ctx->name) >= CRYPTO_MAX_ALG_NAME)
- return -ENAMETOOLONG;
+ "xts(%s)", ctx->name) >= CRYPTO_MAX_ALG_NAME) {
+ err = -ENAMETOOLONG;
+ goto err_drop_spawn;
+ }
} else
goto err_drop_spawn;
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 505c676fa9c7..1d7af3c2ff27 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Device Drivers"
source "drivers/amba/Kconfig"
diff --git a/drivers/Makefile b/drivers/Makefile
index d90fdc413648..d242d3514d30 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux kernel device drivers.
#
diff --git a/drivers/accessibility/Kconfig b/drivers/accessibility/Kconfig
index ef3b65bfdd0a..00f7512c9cf4 100644
--- a/drivers/accessibility/Kconfig
+++ b/drivers/accessibility/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig ACCESSIBILITY
bool "Accessibility support"
---help---
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index 1ce52f84dc23..5b1938f4b626 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# ACPI Configuration
#
diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
index 90265ab4437a..cd1abc9bc325 100644
--- a/drivers/acpi/Makefile
+++ b/drivers/acpi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux ACPI interpreter
#
diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c
index e88fe3632dd6..0972ec0e2eb8 100644
--- a/drivers/acpi/acpi_video.c
+++ b/drivers/acpi/acpi_video.c
@@ -418,7 +418,7 @@ static int video_set_report_key_events(const struct dmi_system_id *id)
return 0;
}
-static struct dmi_system_id video_dmi_table[] = {
+static const struct dmi_system_id video_dmi_table[] = {
/*
* Broken _BQC workaround http://bugzilla.kernel.org/show_bug.cgi?id=13121
*/
diff --git a/drivers/acpi/acpi_watchdog.c b/drivers/acpi/acpi_watchdog.c
index bf22c29d2517..11b113f8e367 100644
--- a/drivers/acpi/acpi_watchdog.c
+++ b/drivers/acpi/acpi_watchdog.c
@@ -66,7 +66,7 @@ void __init acpi_watchdog_init(void)
for (i = 0; i < wdat->entries; i++) {
const struct acpi_generic_address *gas;
struct resource_entry *rentry;
- struct resource res;
+ struct resource res = {};
bool found;
gas = &entries[i].register_region;
diff --git a/drivers/acpi/acpica/Makefile b/drivers/acpi/acpica/Makefile
index 1709551bc4aa..e05232da0588 100644
--- a/drivers/acpi/acpica/Makefile
+++ b/drivers/acpi/acpica/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for ACPICA Core interpreter
#
diff --git a/drivers/acpi/apei/Kconfig b/drivers/acpi/apei/Kconfig
index de14d49a5c90..52ae5438edeb 100644
--- a/drivers/acpi/apei/Kconfig
+++ b/drivers/acpi/apei/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config HAVE_ACPI_APEI
bool
diff --git a/drivers/acpi/apei/Makefile b/drivers/acpi/apei/Makefile
index e50573de25f1..4dfac2128737 100644
--- a/drivers/acpi/apei/Makefile
+++ b/drivers/acpi/apei/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ACPI_APEI) += apei.o
obj-$(CONFIG_ACPI_APEI_GHES) += ghes.o
obj-$(CONFIG_ACPI_APEI_EINJ) += einj.o
diff --git a/drivers/acpi/apei/apei-internal.h b/drivers/acpi/apei/apei-internal.h
index cb4126051f62..1d6ef9654725 100644
--- a/drivers/acpi/apei/apei-internal.h
+++ b/drivers/acpi/apei/apei-internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* apei-internal.h - ACPI Platform Error Interface internal
* definitions.
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index 077f9bad6f44..3c3a37b8503b 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -743,17 +743,19 @@ static int ghes_proc(struct ghes *ghes)
}
ghes_do_proc(ghes, ghes->estatus);
+out:
+ ghes_clear_estatus(ghes);
+
+ if (rc == -ENOENT)
+ return rc;
+
/*
* GHESv2 type HEST entries introduce support for error acknowledgment,
* so only acknowledge the error if this support is present.
*/
- if (is_hest_type_generic_v2(ghes)) {
- rc = ghes_ack_error(ghes->generic_v2);
- if (rc)
- return rc;
- }
-out:
- ghes_clear_estatus(ghes);
+ if (is_hest_type_generic_v2(ghes))
+ return ghes_ack_error(ghes->generic_v2);
+
return rc;
}
diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index 9565d572f8dd..de56394dd161 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -1178,12 +1178,44 @@ dev_put:
return ret;
}
+static bool __init iort_enable_acs(struct acpi_iort_node *iort_node)
+{
+ if (iort_node->type == ACPI_IORT_NODE_PCI_ROOT_COMPLEX) {
+ struct acpi_iort_node *parent;
+ struct acpi_iort_id_mapping *map;
+ int i;
+
+ map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, iort_node,
+ iort_node->mapping_offset);
+
+ for (i = 0; i < iort_node->mapping_count; i++, map++) {
+ if (!map->output_reference)
+ continue;
+
+ parent = ACPI_ADD_PTR(struct acpi_iort_node,
+ iort_table, map->output_reference);
+ /*
+ * If we detect a RC->SMMU mapping, make sure
+ * we enable ACS on the system.
+ */
+ if ((parent->type == ACPI_IORT_NODE_SMMU) ||
+ (parent->type == ACPI_IORT_NODE_SMMU_V3)) {
+ pci_request_acs();
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
static void __init iort_init_platform_devices(void)
{
struct acpi_iort_node *iort_node, *iort_end;
struct acpi_table_iort *iort;
struct fwnode_handle *fwnode;
int i, ret;
+ bool acs_enabled = false;
/*
* iort_table and iort both point to the start of IORT table, but
@@ -1203,6 +1235,9 @@ static void __init iort_init_platform_devices(void)
return;
}
+ if (!acs_enabled)
+ acs_enabled = iort_enable_acs(iort_node);
+
if ((iort_node->type == ACPI_IORT_NODE_SMMU) ||
(iort_node->type == ACPI_IORT_NODE_SMMU_V3)) {
diff --git a/drivers/acpi/battery.h b/drivers/acpi/battery.h
index 6c084976987d..225f493d4c27 100644
--- a/drivers/acpi/battery.h
+++ b/drivers/acpi/battery.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ACPI_BATTERY_H
#define __ACPI_BATTERY_H
diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
index 037fd537bbf6..995c4d8922b1 100644
--- a/drivers/acpi/blacklist.c
+++ b/drivers/acpi/blacklist.c
@@ -30,7 +30,7 @@
#include "internal.h"
-static struct dmi_system_id acpi_rev_dmi_table[] __initdata;
+static const struct dmi_system_id acpi_rev_dmi_table[] __initconst;
/*
* POLICY: If *anything* doesn't work, put it on the blacklist.
@@ -89,7 +89,7 @@ static int __init dmi_enable_rev_override(const struct dmi_system_id *d)
}
#endif
-static struct dmi_system_id acpi_rev_dmi_table[] __initdata = {
+static const struct dmi_system_id acpi_rev_dmi_table[] __initconst = {
#ifdef CONFIG_ACPI_REV_OVERRIDE_POSSIBLE
/*
* DELL XPS 13 (2015) switches sound between HDA and I2S
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 59f2f96fdb7e..4d0979e02a28 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -67,7 +67,7 @@ static int set_copy_dsdt(const struct dmi_system_id *id)
}
#endif
-static struct dmi_system_id dsdt_dmi_table[] __initdata = {
+static const struct dmi_system_id dsdt_dmi_table[] __initconst = {
/*
* Invoke DSDT corruption work-around on all Toshiba Satellite.
* https://bugzilla.kernel.org/show_bug.cgi?id=14679
@@ -83,7 +83,7 @@ static struct dmi_system_id dsdt_dmi_table[] __initdata = {
{}
};
#else
-static struct dmi_system_id dsdt_dmi_table[] __initdata = {
+static const struct dmi_system_id dsdt_dmi_table[] __initconst = {
{}
};
#endif
diff --git a/drivers/acpi/dptf/Kconfig b/drivers/acpi/dptf/Kconfig
index ac0a6ed0cf46..90a2fd979282 100644
--- a/drivers/acpi/dptf/Kconfig
+++ b/drivers/acpi/dptf/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config DPTF_POWER
tristate "DPTF Platform Power Participant"
depends on X86
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index fdfae6f3c0b1..236b14324780 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -1809,7 +1809,7 @@ static int ec_honor_ecdt_gpe(const struct dmi_system_id *id)
return 0;
}
-static struct dmi_system_id ec_dmi_table[] __initdata = {
+static const struct dmi_system_id ec_dmi_table[] __initconst = {
{
ec_correct_ecdt, "MSI MS-171F", {
DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star"),
diff --git a/drivers/acpi/event.c b/drivers/acpi/event.c
index 7fceb3b4691b..5a127f3f2d5c 100644
--- a/drivers/acpi/event.c
+++ b/drivers/acpi/event.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* event.c - exporting ACPI events via procfs
*
diff --git a/drivers/acpi/nfit/Kconfig b/drivers/acpi/nfit/Kconfig
index 929ba4da0b30..f7c57e33499e 100644
--- a/drivers/acpi/nfit/Kconfig
+++ b/drivers/acpi/nfit/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ACPI_NFIT
tristate "ACPI NVDIMM Firmware Interface Table (NFIT)"
depends on PHYS_ADDR_T_64BIT
diff --git a/drivers/acpi/osi.c b/drivers/acpi/osi.c
index 19cdd8a783a9..76998a51bf99 100644
--- a/drivers/acpi/osi.c
+++ b/drivers/acpi/osi.c
@@ -312,7 +312,7 @@ static int __init dmi_disable_osi_win8(const struct dmi_system_id *d)
* Note that _OSI("Linux")/_OSI("Darwin") determined here can be overridden
* by acpi_osi=!Linux/acpi_osi=!Darwin command line options.
*/
-static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
+static const struct dmi_system_id acpi_osi_dmi_table[] __initconst = {
{
.callback = dmi_disable_osi_vista,
.ident = "Fujitsu Siemens",
diff --git a/drivers/acpi/pci_slot.c b/drivers/acpi/pci_slot.c
index f62c68e24317..e90b61f7d2db 100644
--- a/drivers/acpi/pci_slot.c
+++ b/drivers/acpi/pci_slot.c
@@ -174,7 +174,7 @@ static int do_sta_before_sun(const struct dmi_system_id *d)
return 0;
}
-static struct dmi_system_id acpi_pci_slot_dmi_table[] __initdata = {
+static const struct dmi_system_id acpi_pci_slot_dmi_table[] __initconst = {
/*
* Fujitsu Primequest machines will return 1023 to indicate an
* error if the _SUN method is evaluated on SxFy objects that
diff --git a/drivers/acpi/pmic/intel_pmic.h b/drivers/acpi/pmic/intel_pmic.h
index e8bfa7b865a5..095afc96952e 100644
--- a/drivers/acpi/pmic/intel_pmic.h
+++ b/drivers/acpi/pmic/intel_pmic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __INTEL_PMIC_H
#define __INTEL_PMIC_H
diff --git a/drivers/acpi/proc.c b/drivers/acpi/proc.c
index 85ac848ac6ab..652f19e6c541 100644
--- a/drivers/acpi/proc.c
+++ b/drivers/acpi/proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/export.h>
diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c
index 7cfbda4d7c51..813f1b78c16a 100644
--- a/drivers/acpi/processor_pdc.c
+++ b/drivers/acpi/processor_pdc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2005 Intel Corporation
* Copyright (C) 2009 Hewlett-Packard Development Company, L.P.
@@ -173,7 +174,7 @@ static int __init set_no_mwait(const struct dmi_system_id *id)
return 0;
}
-static struct dmi_system_id processor_idle_dmi_table[] __initdata = {
+static const struct dmi_system_id processor_idle_dmi_table[] __initconst = {
{
set_no_mwait, "Extensa 5220", {
DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
index c1c216163de3..e26ea209b63e 100644
--- a/drivers/acpi/property.c
+++ b/drivers/acpi/property.c
@@ -571,10 +571,9 @@ static int acpi_data_get_property_array(const struct acpi_device_data *data,
* }
* }
*
- * Calling this function with index %2 return %-ENOENT and with index %3
- * returns the last entry. If the property does not contain any more values
- * %-ENODATA is returned. The NULL entry must be single integer and
- * preferably contain value %0.
+ * Calling this function with index %2 or index %3 return %-ENOENT. If the
+ * property does not contain any more values %-ENOENT is returned. The NULL
+ * entry must be single integer and preferably contain value %0.
*
* Return: %0 on success, negative error code on failure.
*/
@@ -590,11 +589,11 @@ int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
data = acpi_device_data_of_node(fwnode);
if (!data)
- return -EINVAL;
+ return -ENOENT;
ret = acpi_data_get_property(data, propname, ACPI_TYPE_ANY, &obj);
if (ret)
- return ret;
+ return ret == -EINVAL ? -ENOENT : -EINVAL;
/*
* The simplest case is when the value is a single reference. Just
@@ -606,7 +605,7 @@ int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
ret = acpi_bus_get_device(obj->reference.handle, &device);
if (ret)
- return ret;
+ return ret == -ENODEV ? -EINVAL : ret;
args->adev = device;
args->nargs = 0;
@@ -622,8 +621,10 @@ int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
* The index argument is then used to determine which reference
* the caller wants (along with the arguments).
*/
- if (obj->type != ACPI_TYPE_PACKAGE || index >= obj->package.count)
- return -EPROTO;
+ if (obj->type != ACPI_TYPE_PACKAGE)
+ return -EINVAL;
+ if (index >= obj->package.count)
+ return -ENOENT;
element = obj->package.elements;
end = element + obj->package.count;
@@ -635,7 +636,7 @@ int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
ret = acpi_bus_get_device(element->reference.handle,
&device);
if (ret)
- return -ENODEV;
+ return -EINVAL;
nargs = 0;
element++;
@@ -649,11 +650,11 @@ int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
else if (type == ACPI_TYPE_LOCAL_REFERENCE)
break;
else
- return -EPROTO;
+ return -EINVAL;
}
if (nargs > MAX_ACPI_REFERENCE_ARGS)
- return -EPROTO;
+ return -EINVAL;
if (idx == index) {
args->adev = device;
@@ -670,13 +671,13 @@ int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
return -ENOENT;
element++;
} else {
- return -EPROTO;
+ return -EINVAL;
}
idx++;
}
- return -ENODATA;
+ return -ENOENT;
}
EXPORT_SYMBOL_GPL(__acpi_node_get_property_reference);
@@ -908,11 +909,12 @@ struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
struct fwnode_handle *child)
{
const struct acpi_device *adev = to_acpi_device_node(fwnode);
- struct acpi_device *child_adev = NULL;
const struct list_head *head;
struct list_head *next;
if (!child || is_acpi_device_node(child)) {
+ struct acpi_device *child_adev;
+
if (adev)
head = &adev->children;
else
@@ -922,8 +924,8 @@ struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
goto nondev;
if (child) {
- child_adev = to_acpi_device_node(child);
- next = child_adev->node.next;
+ adev = to_acpi_device_node(child);
+ next = adev->node.next;
if (next == head) {
child = NULL;
goto nondev;
@@ -941,8 +943,8 @@ struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
const struct acpi_data_node *data = to_acpi_data_node(fwnode);
struct acpi_data_node *dn;
- if (child_adev)
- head = &child_adev->data.subnodes;
+ if (adev)
+ head = &adev->data.subnodes;
else if (data)
head = &data->data.subnodes;
else
@@ -1293,3 +1295,16 @@ static int acpi_fwnode_graph_parse_endpoint(const struct fwnode_handle *fwnode,
DECLARE_ACPI_FWNODE_OPS(acpi_device_fwnode_ops);
DECLARE_ACPI_FWNODE_OPS(acpi_data_fwnode_ops);
const struct fwnode_operations acpi_static_fwnode_ops;
+
+bool is_acpi_device_node(const struct fwnode_handle *fwnode)
+{
+ return !IS_ERR_OR_NULL(fwnode) &&
+ fwnode->ops == &acpi_device_fwnode_ops;
+}
+EXPORT_SYMBOL(is_acpi_device_node);
+
+bool is_acpi_data_node(const struct fwnode_handle *fwnode)
+{
+ return !IS_ERR_OR_NULL(fwnode) && fwnode->ops == &acpi_data_fwnode_ops;
+}
+EXPORT_SYMBOL(is_acpi_data_node);
diff --git a/drivers/acpi/reboot.c b/drivers/acpi/reboot.c
index a6c77e8b37bd..71769fd687b2 100644
--- a/drivers/acpi/reboot.c
+++ b/drivers/acpi/reboot.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/pci.h>
#include <linux/acpi.h>
diff --git a/drivers/acpi/sbshc.h b/drivers/acpi/sbshc.h
index a57b0762dd7f..06372a37df10 100644
--- a/drivers/acpi/sbshc.h
+++ b/drivers/acpi/sbshc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
struct acpi_smb_hc;
enum acpi_smb_protocol {
SMBUS_WRITE_QUICK = 2,
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 9fdd014759f8..6804ddab3052 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -160,7 +160,7 @@ static int __init init_nvs_nosave(const struct dmi_system_id *d)
return 0;
}
-static struct dmi_system_id acpisleep_dmi_table[] __initdata = {
+static const struct dmi_system_id acpisleep_dmi_table[] __initconst = {
{
.callback = init_old_suspend_ordering,
.ident = "Abit KN9 (nForce4 variant)",
diff --git a/drivers/acpi/sleep.h b/drivers/acpi/sleep.h
index a82ff74faf7a..41675d24a9bc 100644
--- a/drivers/acpi/sleep.h
+++ b/drivers/acpi/sleep.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
extern void acpi_enable_wakeup_devices(u8 sleep_state);
extern void acpi_disable_wakeup_devices(u8 sleep_state);
diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c
index 78a5a23010ab..0fd57bf33524 100644
--- a/drivers/acpi/sysfs.c
+++ b/drivers/acpi/sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* sysfs.c - ACPI sysfs interface to userspace.
*/
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 1d0417b87cb7..551b71a24b85 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -1209,7 +1209,7 @@ static int thermal_psv(const struct dmi_system_id *d) {
return 0;
}
-static struct dmi_system_id thermal_dmi_table[] __initdata = {
+static const struct dmi_system_id thermal_dmi_table[] __initconst = {
/*
* Award BIOS on this AOpen makes thermal control almost worthless.
* http://bugzilla.kernel.org/show_bug.cgi?id=8842
diff --git a/drivers/acpi/wakeup.c b/drivers/acpi/wakeup.c
index 1638401ab282..9614126bf56e 100644
--- a/drivers/acpi/wakeup.c
+++ b/drivers/acpi/wakeup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* wakeup.c - support wakeup devices
* Copyright (C) 2004 Li Shaohua <shaohua.li@intel.com>
diff --git a/drivers/amba/Kconfig b/drivers/amba/Kconfig
index 294ba6f36396..fb6c7e0b4cce 100644
--- a/drivers/amba/Kconfig
+++ b/drivers/amba/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ARM_AMBA
bool
diff --git a/drivers/android/Kconfig b/drivers/android/Kconfig
index 9801d852bd56..7dce3795b887 100644
--- a/drivers/android/Kconfig
+++ b/drivers/android/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Android"
config ANDROID
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index d055b3f2a207..fddf76ef5bd6 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -2217,7 +2217,7 @@ static void binder_transaction_buffer_release(struct binder_proc *proc,
debug_id, (u64)fda->num_fds);
continue;
}
- fd_array = (u32 *)(parent_buffer + fda->parent_offset);
+ fd_array = (u32 *)(parent_buffer + (uintptr_t)fda->parent_offset);
for (fd_index = 0; fd_index < fda->num_fds; fd_index++)
task_close_fd(proc, fd_array[fd_index]);
} break;
@@ -2326,7 +2326,6 @@ static int binder_translate_handle(struct flat_binder_object *fp,
(u64)node->ptr);
binder_node_unlock(node);
} else {
- int ret;
struct binder_ref_data dest_rdata;
binder_node_unlock(node);
@@ -2442,7 +2441,7 @@ static int binder_translate_fd_array(struct binder_fd_array_object *fda,
*/
parent_buffer = parent->buffer -
binder_alloc_get_user_buffer_offset(&target_proc->alloc);
- fd_array = (u32 *)(parent_buffer + fda->parent_offset);
+ fd_array = (u32 *)(parent_buffer + (uintptr_t)fda->parent_offset);
if (!IS_ALIGNED((unsigned long)fd_array, sizeof(u32))) {
binder_user_error("%d:%d parent offset not aligned correctly.\n",
proc->pid, thread->pid);
@@ -2508,7 +2507,7 @@ static int binder_fixup_parent(struct binder_transaction *t,
proc->pid, thread->pid);
return -EINVAL;
}
- parent_buffer = (u8 *)(parent->buffer -
+ parent_buffer = (u8 *)((uintptr_t)parent->buffer -
binder_alloc_get_user_buffer_offset(
&target_proc->alloc));
*(binder_uintptr_t *)(parent_buffer + bp->parent_offset) = bp->buffer;
@@ -2583,6 +2582,48 @@ static bool binder_proc_transaction(struct binder_transaction *t,
return true;
}
+/**
+ * binder_get_node_refs_for_txn() - Get required refs on node for txn
+ * @node: struct binder_node for which to get refs
+ * @proc: returns @node->proc if valid
+ * @error: if no @proc then returns BR_DEAD_REPLY
+ *
+ * User-space normally keeps the node alive when creating a transaction
+ * since it has a reference to the target. The local strong ref keeps it
+ * alive if the sending process dies before the target process processes
+ * the transaction. If the source process is malicious or has a reference
+ * counting bug, relying on the local strong ref can fail.
+ *
+ * Since user-space can cause the local strong ref to go away, we also take
+ * a tmpref on the node to ensure it survives while we are constructing
+ * the transaction. We also need a tmpref on the proc while we are
+ * constructing the transaction, so we take that here as well.
+ *
+ * Return: The target_node with refs taken or NULL if no @node->proc is NULL.
+ * Also sets @proc if valid. If the @node->proc is NULL indicating that the
+ * target proc has died, @error is set to BR_DEAD_REPLY
+ */
+static struct binder_node *binder_get_node_refs_for_txn(
+ struct binder_node *node,
+ struct binder_proc **procp,
+ uint32_t *error)
+{
+ struct binder_node *target_node = NULL;
+
+ binder_node_inner_lock(node);
+ if (node->proc) {
+ target_node = node;
+ binder_inc_node_nilocked(node, 1, 0, NULL);
+ binder_inc_node_tmpref_ilocked(node);
+ node->proc->tmp_ref++;
+ *procp = node->proc;
+ } else
+ *error = BR_DEAD_REPLY;
+ binder_node_inner_unlock(node);
+
+ return target_node;
+}
+
static void binder_transaction(struct binder_proc *proc,
struct binder_thread *thread,
struct binder_transaction_data *tr, int reply,
@@ -2686,43 +2727,35 @@ static void binder_transaction(struct binder_proc *proc,
ref = binder_get_ref_olocked(proc, tr->target.handle,
true);
if (ref) {
- binder_inc_node(ref->node, 1, 0, NULL);
- target_node = ref->node;
- }
- binder_proc_unlock(proc);
- if (target_node == NULL) {
+ target_node = binder_get_node_refs_for_txn(
+ ref->node, &target_proc,
+ &return_error);
+ } else {
binder_user_error("%d:%d got transaction to invalid handle\n",
- proc->pid, thread->pid);
+ proc->pid, thread->pid);
return_error = BR_FAILED_REPLY;
- return_error_param = -EINVAL;
- return_error_line = __LINE__;
- goto err_invalid_target_handle;
}
+ binder_proc_unlock(proc);
} else {
mutex_lock(&context->context_mgr_node_lock);
target_node = context->binder_context_mgr_node;
- if (target_node == NULL) {
+ if (target_node)
+ target_node = binder_get_node_refs_for_txn(
+ target_node, &target_proc,
+ &return_error);
+ else
return_error = BR_DEAD_REPLY;
- mutex_unlock(&context->context_mgr_node_lock);
- return_error_line = __LINE__;
- goto err_no_context_mgr_node;
- }
- binder_inc_node(target_node, 1, 0, NULL);
mutex_unlock(&context->context_mgr_node_lock);
}
- e->to_node = target_node->debug_id;
- binder_node_lock(target_node);
- target_proc = target_node->proc;
- if (target_proc == NULL) {
- binder_node_unlock(target_node);
- return_error = BR_DEAD_REPLY;
+ if (!target_node) {
+ /*
+ * return_error is set above
+ */
+ return_error_param = -EINVAL;
return_error_line = __LINE__;
goto err_dead_binder;
}
- binder_inner_proc_lock(target_proc);
- target_proc->tmp_ref++;
- binder_inner_proc_unlock(target_proc);
- binder_node_unlock(target_node);
+ e->to_node = target_node->debug_id;
if (security_binder_transaction(proc->tsk,
target_proc->tsk) < 0) {
return_error = BR_FAILED_REPLY;
@@ -3072,6 +3105,8 @@ static void binder_transaction(struct binder_proc *proc,
if (target_thread)
binder_thread_dec_tmpref(target_thread);
binder_proc_dec_tmpref(target_proc);
+ if (target_node)
+ binder_dec_node_tmpref(target_node);
/*
* write barrier to synchronize with initialization
* of log entry
@@ -3083,6 +3118,7 @@ static void binder_transaction(struct binder_proc *proc,
err_dead_proc_or_thread:
return_error = BR_DEAD_REPLY;
return_error_line = __LINE__;
+ binder_dequeue_work(proc, tcomplete);
err_translate_failed:
err_bad_object_type:
err_bad_offset:
@@ -3090,6 +3126,8 @@ err_bad_parent:
err_copy_data_failed:
trace_binder_transaction_failed_buffer_release(t->buffer);
binder_transaction_buffer_release(target_proc, t->buffer, offp);
+ if (target_node)
+ binder_dec_node_tmpref(target_node);
target_node = NULL;
t->buffer->transaction = NULL;
binder_alloc_free_buf(&target_proc->alloc, t->buffer);
@@ -3104,13 +3142,14 @@ err_bad_call_stack:
err_empty_call_stack:
err_dead_binder:
err_invalid_target_handle:
-err_no_context_mgr_node:
if (target_thread)
binder_thread_dec_tmpref(target_thread);
if (target_proc)
binder_proc_dec_tmpref(target_proc);
- if (target_node)
+ if (target_node) {
binder_dec_node(target_node, 1, 0);
+ binder_dec_node_tmpref(target_node);
+ }
binder_debug(BINDER_DEBUG_FAILED_TRANSACTION,
"%d:%d transaction failed %d/%d, size %lld-%lld line %d\n",
@@ -3623,12 +3662,6 @@ static void binder_stat_br(struct binder_proc *proc,
}
}
-static int binder_has_thread_work(struct binder_thread *thread)
-{
- return !binder_worklist_empty(thread->proc, &thread->todo) ||
- thread->looper_need_return;
-}
-
static int binder_put_node_cmd(struct binder_proc *proc,
struct binder_thread *thread,
void __user **ptrp,
@@ -4258,12 +4291,9 @@ static unsigned int binder_poll(struct file *filp,
binder_inner_proc_unlock(thread->proc);
- if (binder_has_work(thread, wait_for_proc_work))
- return POLLIN;
-
poll_wait(filp, &thread->wait, wait);
- if (binder_has_thread_work(thread))
+ if (binder_has_work(thread, wait_for_proc_work))
return POLLIN;
return 0;
diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c
index 8fe165844e47..c2819a3d58a6 100644
--- a/drivers/android/binder_alloc.c
+++ b/drivers/android/binder_alloc.c
@@ -215,17 +215,12 @@ static int binder_update_page_range(struct binder_alloc *alloc, int allocate,
}
}
- if (!vma && need_mm)
- mm = get_task_mm(alloc->tsk);
+ if (!vma && need_mm && mmget_not_zero(alloc->vma_vm_mm))
+ mm = alloc->vma_vm_mm;
if (mm) {
down_write(&mm->mmap_sem);
vma = alloc->vma;
- if (vma && mm != alloc->vma_vm_mm) {
- pr_err("%d: vma mm and task mm mismatch\n",
- alloc->pid);
- vma = NULL;
- }
}
if (!vma && need_mm) {
@@ -565,7 +560,7 @@ static void binder_delete_free_buffer(struct binder_alloc *alloc,
binder_alloc_debug(BINDER_DEBUG_BUFFER_ALLOC,
"%d: merge free, buffer %pK do not share page with %pK or %pK\n",
alloc->pid, buffer->data,
- prev->data, next->data);
+ prev->data, next ? next->data : NULL);
binder_update_page_range(alloc, 0, buffer_start_page(buffer),
buffer_start_page(buffer) + PAGE_SIZE,
NULL);
@@ -720,6 +715,7 @@ int binder_alloc_mmap_handler(struct binder_alloc *alloc,
barrier();
alloc->vma = vma;
alloc->vma_vm_mm = vma->vm_mm;
+ mmgrab(alloc->vma_vm_mm);
return 0;
@@ -795,6 +791,8 @@ void binder_alloc_deferred_release(struct binder_alloc *alloc)
vfree(alloc->buffer);
}
mutex_unlock(&alloc->mutex);
+ if (alloc->vma_vm_mm)
+ mmdrop(alloc->vma_vm_mm);
binder_alloc_debug(BINDER_DEBUG_OPEN_CLOSE,
"%s: %d buffers %d, pages %d\n",
@@ -889,7 +887,6 @@ int binder_alloc_get_allocated_count(struct binder_alloc *alloc)
void binder_alloc_vma_close(struct binder_alloc *alloc)
{
WRITE_ONCE(alloc->vma, NULL);
- WRITE_ONCE(alloc->vma_vm_mm, NULL);
}
/**
@@ -913,6 +910,7 @@ enum lru_status binder_alloc_free_page(struct list_head *item,
struct binder_alloc *alloc;
uintptr_t page_addr;
size_t index;
+ struct vm_area_struct *vma;
alloc = page->alloc;
if (!mutex_trylock(&alloc->mutex))
@@ -923,16 +921,22 @@ enum lru_status binder_alloc_free_page(struct list_head *item,
index = page - alloc->pages;
page_addr = (uintptr_t)alloc->buffer + index * PAGE_SIZE;
- if (alloc->vma) {
- mm = get_task_mm(alloc->tsk);
- if (!mm)
- goto err_get_task_mm_failed;
+ vma = alloc->vma;
+ if (vma) {
+ if (!mmget_not_zero(alloc->vma_vm_mm))
+ goto err_mmget;
+ mm = alloc->vma_vm_mm;
if (!down_write_trylock(&mm->mmap_sem))
goto err_down_write_mmap_sem_failed;
+ }
+
+ list_lru_isolate(lru, item);
+ spin_unlock(lock);
+ if (vma) {
trace_binder_unmap_user_start(alloc, index);
- zap_page_range(alloc->vma,
+ zap_page_range(vma,
page_addr + alloc->user_buffer_offset,
PAGE_SIZE);
@@ -950,14 +954,13 @@ enum lru_status binder_alloc_free_page(struct list_head *item,
trace_binder_unmap_kernel_end(alloc, index);
- list_lru_isolate(lru, item);
-
+ spin_lock(lock);
mutex_unlock(&alloc->mutex);
- return LRU_REMOVED;
+ return LRU_REMOVED_RETRY;
err_down_write_mmap_sem_failed:
- mmput(mm);
-err_get_task_mm_failed:
+ mmput_async(mm);
+err_mmget:
err_page_already_freed:
mutex_unlock(&alloc->mutex);
err_get_alloc_mutex_failed:
@@ -996,7 +999,6 @@ struct shrinker binder_shrinker = {
*/
void binder_alloc_init(struct binder_alloc *alloc)
{
- alloc->tsk = current->group_leader;
alloc->pid = current->group_leader->pid;
mutex_init(&alloc->mutex);
INIT_LIST_HEAD(&alloc->buffers);
diff --git a/drivers/android/binder_alloc.h b/drivers/android/binder_alloc.h
index a3a3602c689c..2dd33b6df104 100644
--- a/drivers/android/binder_alloc.h
+++ b/drivers/android/binder_alloc.h
@@ -100,7 +100,6 @@ struct binder_lru_page {
*/
struct binder_alloc {
struct mutex mutex;
- struct task_struct *tsk;
struct vm_area_struct *vma;
struct mm_struct *vma_vm_mm;
void *buffer;
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 488c93724220..cb5339166563 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# SATA/PATA driver configuration
#
diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
index ff9cd2e37458..8daec3e657f8 100644
--- a/drivers/ata/Makefile
+++ b/drivers/ata/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ATA) += libata.o
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index cb9b0e9090e3..9f78bb03bb76 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -621,8 +621,11 @@ static void ahci_pci_save_initial_config(struct pci_dev *pdev,
static int ahci_pci_reset_controller(struct ata_host *host)
{
struct pci_dev *pdev = to_pci_dev(host->dev);
+ int rc;
- ahci_reset_controller(host);
+ rc = ahci_reset_controller(host);
+ if (rc)
+ return rc;
if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
struct ahci_host_priv *hpriv = host->private_data;
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index 8401c3b5be92..b702c20fbc2b 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -492,6 +492,7 @@ static const struct ich_laptop ich_laptop[] = {
{ 0x27DF, 0x152D, 0x0778 }, /* ICH7 on unknown Intel */
{ 0x24CA, 0x1025, 0x0061 }, /* ICH4 on ACER Aspire 2023WLMi */
{ 0x24CA, 0x1025, 0x003d }, /* ICH4 on ACER TM290 */
+ { 0x24CA, 0x10CF, 0x11AB }, /* ICH4M on Fujitsu-Siemens Lifebook S6120 */
{ 0x266F, 0x1025, 0x0066 }, /* ICH6 on ACER Aspire 1694WLMi */
{ 0x2653, 0x1043, 0x82D8 }, /* ICH6M on Asus Eee 701 */
{ 0x27df, 0x104d, 0x900e }, /* ICH7 on Sony TZ-90 */
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 1945a8ea2099..ee4c1ec9dca0 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3234,19 +3234,19 @@ static const struct ata_timing ata_timing[] = {
};
#define ENOUGH(v, unit) (((v)-1)/(unit)+1)
-#define EZ(v, unit) ((v)?ENOUGH(v, unit):0)
+#define EZ(v, unit) ((v)?ENOUGH(((v) * 1000), unit):0)
static void ata_timing_quantize(const struct ata_timing *t, struct ata_timing *q, int T, int UT)
{
- q->setup = EZ(t->setup * 1000, T);
- q->act8b = EZ(t->act8b * 1000, T);
- q->rec8b = EZ(t->rec8b * 1000, T);
- q->cyc8b = EZ(t->cyc8b * 1000, T);
- q->active = EZ(t->active * 1000, T);
- q->recover = EZ(t->recover * 1000, T);
- q->dmack_hold = EZ(t->dmack_hold * 1000, T);
- q->cycle = EZ(t->cycle * 1000, T);
- q->udma = EZ(t->udma * 1000, UT);
+ q->setup = EZ(t->setup, T);
+ q->act8b = EZ(t->act8b, T);
+ q->rec8b = EZ(t->rec8b, T);
+ q->cyc8b = EZ(t->cyc8b, T);
+ q->active = EZ(t->active, T);
+ q->recover = EZ(t->recover, T);
+ q->dmack_hold = EZ(t->dmack_hold, T);
+ q->cycle = EZ(t->cycle, T);
+ q->udma = EZ(t->udma, UT);
}
void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b,
diff --git a/drivers/ata/libata-transport.h b/drivers/ata/libata-transport.h
index 2820cf864f11..08a57fb9dc61 100644
--- a/drivers/ata/libata-transport.h
+++ b/drivers/ata/libata-transport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LIBATA_TRANSPORT_H
#define _LIBATA_TRANSPORT_H
diff --git a/drivers/ata/libata-zpodd.c b/drivers/ata/libata-zpodd.c
index 23a62e4015d0..de4ddd0e8550 100644
--- a/drivers/ata/libata-zpodd.c
+++ b/drivers/ata/libata-zpodd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/libata.h>
#include <linux/cdrom.h>
#include <linux/pm_runtime.h>
diff --git a/drivers/ata/sata_gemini.h b/drivers/ata/sata_gemini.h
index ca1837a394c8..6f6e691d6007 100644
--- a/drivers/ata/sata_gemini.h
+++ b/drivers/ata/sata_gemini.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Header for the Gemini SATA bridge */
#ifndef SATA_GEMINI_H
#define SATA_GEMINI_H
diff --git a/drivers/ata/sis.h b/drivers/ata/sis.h
index f7f3eebe666c..0be49691fb24 100644
--- a/drivers/ata/sis.h
+++ b/drivers/ata/sis.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
struct ata_port_info;
diff --git a/drivers/atm/Kconfig b/drivers/atm/Kconfig
index 31c60101a69a..2e2efa577437 100644
--- a/drivers/atm/Kconfig
+++ b/drivers/atm/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# ATM device configuration
#
diff --git a/drivers/atm/Makefile b/drivers/atm/Makefile
index c6c9ee9f5da2..aa191616a72e 100644
--- a/drivers/atm/Makefile
+++ b/drivers/atm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux network (ATM) device drivers.
#
diff --git a/drivers/atm/eni.h b/drivers/atm/eni.h
index 565e53a5cb78..de1ed802cbf8 100644
--- a/drivers/atm/eni.h
+++ b/drivers/atm/eni.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* drivers/atm/eni.h - Efficient Networks ENI155P device driver declarations */
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/drivers/atm/fore200e.h b/drivers/atm/fore200e.h
index ba34a02b717d..c8a02c8fba15 100644
--- a/drivers/atm/fore200e.h
+++ b/drivers/atm/fore200e.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FORE200E_H
#define _FORE200E_H
diff --git a/drivers/atm/idt77105.h b/drivers/atm/idt77105.h
index 3fd2bc899761..8dfea9e361de 100644
--- a/drivers/atm/idt77105.h
+++ b/drivers/atm/idt77105.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* drivers/atm/idt77105.h - IDT77105 (PHY) declarations */
/* Written 1999 by Greg Banks, NEC Australia <gnb@linuxfan.com>. Based on suni.h */
diff --git a/drivers/atm/idt77252_tables.h b/drivers/atm/idt77252_tables.h
index b6c8ee512fb4..12b81e046a7b 100644
--- a/drivers/atm/idt77252_tables.h
+++ b/drivers/atm/idt77252_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Do not edit, automatically generated by `./genrtbl'.
*
* Cell Line Rate: 353207.55 (155520000 bps)
diff --git a/drivers/atm/midway.h b/drivers/atm/midway.h
index d8bec0f2a71c..d47307adc0c9 100644
--- a/drivers/atm/midway.h
+++ b/drivers/atm/midway.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* drivers/atm/midway.h - Efficient Networks Midway (SAR) description */
/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/drivers/atm/nicstar.h b/drivers/atm/nicstar.h
index 9bc27ea5088e..1b7f1dfc1735 100644
--- a/drivers/atm/nicstar.h
+++ b/drivers/atm/nicstar.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* nicstar.h
*
diff --git a/drivers/atm/nicstarmac.c b/drivers/atm/nicstarmac.c
index f594526f8c6d..e0dda9062e6b 100644
--- a/drivers/atm/nicstarmac.c
+++ b/drivers/atm/nicstarmac.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* this file included by nicstar.c
*/
diff --git a/drivers/atm/solos-attrlist.c b/drivers/atm/solos-attrlist.c
index 9a676ee30824..1830d1b8619f 100644
--- a/drivers/atm/solos-attrlist.c
+++ b/drivers/atm/solos-attrlist.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
SOLOS_ATTR_RO(DriverVersion)
SOLOS_ATTR_RO(APIVersion)
SOLOS_ATTR_RO(FirmwareVersion)
diff --git a/drivers/atm/suni.h b/drivers/atm/suni.h
index 7e3e656b3993..d28a50d47d8b 100644
--- a/drivers/atm/suni.h
+++ b/drivers/atm/suni.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* drivers/atm/suni.h - S/UNI PHY driver
*/
diff --git a/drivers/atm/tonga.h b/drivers/atm/tonga.h
index 672da96243ca..771b3f95246c 100644
--- a/drivers/atm/tonga.h
+++ b/drivers/atm/tonga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* drivers/atm/tonga.h - Efficient Networks Tonga (PCI bridge) declarations */
/* Written 1995 by Werner Almesberger, EPFL LRC */
diff --git a/drivers/atm/uPD98401.h b/drivers/atm/uPD98401.h
index 0ab36503a4b7..f766a5ef0c5d 100644
--- a/drivers/atm/uPD98401.h
+++ b/drivers/atm/uPD98401.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* drivers/atm/uPD98401.h - NEC uPD98401 (SAR) declarations */
/* Written 1995 by Werner Almesberger, EPFL LRC */
diff --git a/drivers/atm/uPD98402.h b/drivers/atm/uPD98402.h
index c947214db7e3..437cfaa20c96 100644
--- a/drivers/atm/uPD98402.h
+++ b/drivers/atm/uPD98402.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* drivers/atm/uPD98402.h - NEC uPD98402 (PHY) declarations */
/* Written 1995 by Werner Almesberger, EPFL LRC */
diff --git a/drivers/atm/zatm.h b/drivers/atm/zatm.h
index ae9165ce15a0..8204369fe825 100644
--- a/drivers/atm/zatm.h
+++ b/drivers/atm/zatm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* drivers/atm/zatm.h - ZeitNet ZN122x device driver declarations */
/* Written 1995-1998 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/drivers/atm/zeprom.h b/drivers/atm/zeprom.h
index 019bb82490e9..88e01f808a86 100644
--- a/drivers/atm/zeprom.h
+++ b/drivers/atm/zeprom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* drivers/atm/zeprom.h - ZeitNet ZN122x EEPROM (NM93C46) declarations */
/* Written 1995,1996 by Werner Almesberger, EPFL LRC */
diff --git a/drivers/auxdisplay/Kconfig b/drivers/auxdisplay/Kconfig
index 9ae6681c90ad..d7d21118d3e0 100644
--- a/drivers/auxdisplay/Kconfig
+++ b/drivers/auxdisplay/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
diff --git a/drivers/auxdisplay/Makefile b/drivers/auxdisplay/Makefile
index 2b8af3dc5e42..7ac6776ca3f6 100644
--- a/drivers/auxdisplay/Makefile
+++ b/drivers/auxdisplay/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel auxiliary displays device drivers.
#
diff --git a/drivers/auxdisplay/charlcd.c b/drivers/auxdisplay/charlcd.c
index cfeb049a01ef..642afd88870b 100644
--- a/drivers/auxdisplay/charlcd.c
+++ b/drivers/auxdisplay/charlcd.c
@@ -647,18 +647,25 @@ static ssize_t charlcd_write(struct file *file, const char __user *buf,
static int charlcd_open(struct inode *inode, struct file *file)
{
struct charlcd_priv *priv = to_priv(the_charlcd);
+ int ret;
+ ret = -EBUSY;
if (!atomic_dec_and_test(&charlcd_available))
- return -EBUSY; /* open only once at a time */
+ goto fail; /* open only once at a time */
+ ret = -EPERM;
if (file->f_mode & FMODE_READ) /* device is write-only */
- return -EPERM;
+ goto fail;
if (priv->must_clear) {
charlcd_clear_display(&priv->lcd);
priv->must_clear = false;
}
return nonseekable_open(inode, file);
+
+ fail:
+ atomic_inc(&charlcd_available);
+ return ret;
}
static int charlcd_release(struct inode *inode, struct file *file)
diff --git a/drivers/auxdisplay/img-ascii-lcd.c b/drivers/auxdisplay/img-ascii-lcd.c
index 25306fa27251..a9020f82eea7 100644
--- a/drivers/auxdisplay/img-ascii-lcd.c
+++ b/drivers/auxdisplay/img-ascii-lcd.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/drivers/auxdisplay/panel.c b/drivers/auxdisplay/panel.c
index df126dcdaf18..6911acd896d9 100644
--- a/drivers/auxdisplay/panel.c
+++ b/drivers/auxdisplay/panel.c
@@ -1105,14 +1105,21 @@ static ssize_t keypad_read(struct file *file,
static int keypad_open(struct inode *inode, struct file *file)
{
+ int ret;
+
+ ret = -EBUSY;
if (!atomic_dec_and_test(&keypad_available))
- return -EBUSY; /* open only once at a time */
+ goto fail; /* open only once at a time */
+ ret = -EPERM;
if (file->f_mode & FMODE_WRITE) /* device is read-only */
- return -EPERM;
+ goto fail;
keypad_buflen = 0; /* flush the buffer on opening */
return 0;
+ fail:
+ atomic_inc(&keypad_available);
+ return ret;
}
static int keypad_release(struct inode *inode, struct file *file)
diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
index f046d21de57d..2f6614c9a229 100644
--- a/drivers/base/Kconfig
+++ b/drivers/base/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Generic Driver Options"
config UEVENT_HELPER
@@ -140,13 +141,10 @@ config EXTRA_FIRMWARE
config EXTRA_FIRMWARE_DIR
string "Firmware blobs root directory"
depends on EXTRA_FIRMWARE != ""
- default "firmware"
+ default "/lib/firmware"
help
This option controls the directory in which the kernel build system
looks for the firmware files listed in the EXTRA_FIRMWARE option.
- The default is firmware/ in the kernel source tree, but by changing
- this option you can point it elsewhere, such as /lib/firmware/ or
- some other directory containing the firmware files.
config FW_LOADER_USER_HELPER
bool
diff --git a/drivers/base/Makefile b/drivers/base/Makefile
index 397e5c344e6a..e32a52490051 100644
--- a/drivers/base/Makefile
+++ b/drivers/base/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the Linux device tree
obj-y := component.o core.o bus.o dd.o syscore.o \
diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c
index 41be9ff7d70a..6df7d6676a48 100644
--- a/drivers/base/arch_topology.c
+++ b/drivers/base/arch_topology.c
@@ -166,11 +166,11 @@ bool __init topology_parse_cpu_capacity(struct device_node *cpu_node, int cpu)
}
#ifdef CONFIG_CPU_FREQ
-static cpumask_var_t cpus_to_visit;
-static void parsing_done_workfn(struct work_struct *work);
-static DECLARE_WORK(parsing_done_work, parsing_done_workfn);
+static cpumask_var_t cpus_to_visit __initdata;
+static void __init parsing_done_workfn(struct work_struct *work);
+static __initdata DECLARE_WORK(parsing_done_work, parsing_done_workfn);
-static int
+static int __init
init_cpu_capacity_callback(struct notifier_block *nb,
unsigned long val,
void *data)
@@ -206,7 +206,7 @@ init_cpu_capacity_callback(struct notifier_block *nb,
return 0;
}
-static struct notifier_block init_cpu_capacity_notifier = {
+static struct notifier_block init_cpu_capacity_notifier __initdata = {
.notifier_call = init_cpu_capacity_callback,
};
@@ -232,7 +232,7 @@ static int __init register_cpufreq_notifier(void)
}
core_initcall(register_cpufreq_notifier);
-static void parsing_done_workfn(struct work_struct *work)
+static void __init parsing_done_workfn(struct work_struct *work)
{
cpufreq_unregister_notifier(&init_cpu_capacity_notifier,
CPUFREQ_POLICY_NOTIFIER);
diff --git a/drivers/base/base.h b/drivers/base/base.h
index 539432a14b5c..d800de650fa5 100644
--- a/drivers/base/base.h
+++ b/drivers/base/base.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/notifier.h>
/**
diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
index d2fb9c8ed205..50025d7959cb 100644
--- a/drivers/base/devtmpfs.c
+++ b/drivers/base/devtmpfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* devtmpfs - kernel-maintained tmpfs-based /dev
*
diff --git a/drivers/base/dma-coherent.c b/drivers/base/dma-coherent.c
index a39b2166b145..1e6396bb807b 100644
--- a/drivers/base/dma-coherent.c
+++ b/drivers/base/dma-coherent.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Coherent per-device memory handling.
* Borrowed from i386
@@ -348,16 +349,15 @@ static int rmem_dma_device_init(struct reserved_mem *rmem, struct device *dev)
struct dma_coherent_mem *mem = rmem->priv;
int ret;
- if (!mem)
- return -ENODEV;
-
- ret = dma_init_coherent_memory(rmem->base, rmem->base, rmem->size,
- DMA_MEMORY_EXCLUSIVE, &mem);
-
- if (ret) {
- pr_err("Reserved memory: failed to init DMA memory pool at %pa, size %ld MiB\n",
- &rmem->base, (unsigned long)rmem->size / SZ_1M);
- return ret;
+ if (!mem) {
+ ret = dma_init_coherent_memory(rmem->base, rmem->base,
+ rmem->size,
+ DMA_MEMORY_EXCLUSIVE, &mem);
+ if (ret) {
+ pr_err("Reserved memory: failed to init DMA memory pool at %pa, size %ld MiB\n",
+ &rmem->base, (unsigned long)rmem->size / SZ_1M);
+ return ret;
+ }
}
mem->use_dev_dma_pfn_offset = true;
rmem->priv = mem;
diff --git a/drivers/base/memory.c b/drivers/base/memory.c
index 4e3b61cda520..1d60b58a8c19 100644
--- a/drivers/base/memory.c
+++ b/drivers/base/memory.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Memory subsystem support
*
diff --git a/drivers/base/node.c b/drivers/base/node.c
index 3855902f2c5b..ee090ab9171c 100644
--- a/drivers/base/node.c
+++ b/drivers/base/node.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Basic Node interface support
*/
@@ -27,13 +28,21 @@ static struct bus_type node_subsys = {
static ssize_t node_read_cpumap(struct device *dev, bool list, char *buf)
{
+ ssize_t n;
+ cpumask_var_t mask;
struct node *node_dev = to_node(dev);
- const struct cpumask *mask = cpumask_of_node(node_dev->dev.id);
/* 2008/04/07: buf currently PAGE_SIZE, need 9 chars per 32 bits. */
BUILD_BUG_ON((NR_CPUS/32 * 9) > (PAGE_SIZE-1));
- return cpumap_print_to_pagebuf(list, buf, mask);
+ if (!alloc_cpumask_var(&mask, GFP_KERNEL))
+ return 0;
+
+ cpumask_and(mask, cpumask_of_node(node_dev->dev.id), cpu_online_mask);
+ n = cpumap_print_to_pagebuf(list, buf, mask);
+ free_cpumask_var(mask);
+
+ return n;
}
static inline ssize_t node_read_cpumask(struct device *dev,
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index d1bd99271066..9045c5f3734e 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -868,7 +868,8 @@ static ssize_t driver_override_store(struct device *dev,
struct platform_device *pdev = to_platform_device(dev);
char *driver_override, *old, *cp;
- if (count > PATH_MAX)
+ /* We need to keep extra room for a newline */
+ if (count >= (PAGE_SIZE - 1))
return -EINVAL;
driver_override = kstrndup(buf, count, GFP_KERNEL);
diff --git a/drivers/base/power/Makefile b/drivers/base/power/Makefile
index 5998c53280f5..29cd71d8b360 100644
--- a/drivers/base/power/Makefile
+++ b/drivers/base/power/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PM) += sysfs.o generic_ops.o common.o qos.o runtime.o wakeirq.o
obj-$(CONFIG_PM_SLEEP) += main.o wakeup.o
obj-$(CONFIG_PM_TRACE_RTC) += trace.o
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index ea1732ed7a9d..770b1539a083 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -1860,10 +1860,13 @@ void device_pm_check_callbacks(struct device *dev)
{
spin_lock_irq(&dev->power.lock);
dev->power.no_pm_callbacks =
- (!dev->bus || pm_ops_is_empty(dev->bus->pm)) &&
- (!dev->class || pm_ops_is_empty(dev->class->pm)) &&
+ (!dev->bus || (pm_ops_is_empty(dev->bus->pm) &&
+ !dev->bus->suspend && !dev->bus->resume)) &&
+ (!dev->class || (pm_ops_is_empty(dev->class->pm) &&
+ !dev->class->suspend && !dev->class->resume)) &&
(!dev->type || pm_ops_is_empty(dev->type->pm)) &&
(!dev->pm_domain || pm_ops_is_empty(&dev->pm_domain->ops)) &&
- (!dev->driver || pm_ops_is_empty(dev->driver->pm));
+ (!dev->driver || (pm_ops_is_empty(dev->driver->pm) &&
+ !dev->driver->suspend && !dev->driver->resume));
spin_unlock_irq(&dev->power.lock);
}
diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c
index a8cc14fd8ae4..a6de32530693 100644
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
@@ -1581,6 +1581,9 @@ static int _opp_set_availability(struct device *dev, unsigned long freq,
opp->available = availability_req;
+ dev_pm_opp_get(opp);
+ mutex_unlock(&opp_table->lock);
+
/* Notify the change of the OPP availability */
if (availability_req)
blocking_notifier_call_chain(&opp_table->head, OPP_EVENT_ENABLE,
@@ -1589,8 +1592,12 @@ static int _opp_set_availability(struct device *dev, unsigned long freq,
blocking_notifier_call_chain(&opp_table->head,
OPP_EVENT_DISABLE, opp);
+ dev_pm_opp_put(opp);
+ goto put_table;
+
unlock:
mutex_unlock(&opp_table->lock);
+put_table:
dev_pm_opp_put_opp_table(opp_table);
return r;
}
diff --git a/drivers/base/power/power.h b/drivers/base/power/power.h
index a46e97e515c5..7beee75399d4 100644
--- a/drivers/base/power/power.h
+++ b/drivers/base/power/power.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/pm_qos.h>
static inline void device_pm_init_common(struct device *dev)
diff --git a/drivers/base/power/qos.c b/drivers/base/power/qos.c
index f850daeffba4..277d43a83f53 100644
--- a/drivers/base/power/qos.c
+++ b/drivers/base/power/qos.c
@@ -277,11 +277,11 @@ void dev_pm_qos_constraints_destroy(struct device *dev)
mutex_unlock(&dev_pm_qos_sysfs_mtx);
}
-static bool dev_pm_qos_invalid_request(struct device *dev,
- struct dev_pm_qos_request *req)
+static bool dev_pm_qos_invalid_req_type(struct device *dev,
+ enum dev_pm_qos_req_type type)
{
- return !req || (req->type == DEV_PM_QOS_LATENCY_TOLERANCE
- && !dev->power.set_latency_tolerance);
+ return type == DEV_PM_QOS_LATENCY_TOLERANCE &&
+ !dev->power.set_latency_tolerance;
}
static int __dev_pm_qos_add_request(struct device *dev,
@@ -290,7 +290,7 @@ static int __dev_pm_qos_add_request(struct device *dev,
{
int ret = 0;
- if (!dev || dev_pm_qos_invalid_request(dev, req))
+ if (!dev || !req || dev_pm_qos_invalid_req_type(dev, type))
return -EINVAL;
if (WARN(dev_pm_qos_request_active(req),
diff --git a/drivers/base/property.c b/drivers/base/property.c
index d0b65bbe7e15..7ed99c1b2a8b 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -21,6 +21,7 @@
#include <linux/phy.h>
struct property_set {
+ struct device *dev;
struct fwnode_handle fwnode;
const struct property_entry *properties;
};
@@ -682,6 +683,10 @@ EXPORT_SYMBOL_GPL(fwnode_property_match_string);
* Caller is responsible to call fwnode_handle_put() on the returned
* args->fwnode pointer.
*
+ * Returns: %0 on success
+ * %-ENOENT when the index is out of bounds, the index has an empty
+ * reference or the property was not found
+ * %-EINVAL on parse error
*/
int fwnode_property_get_reference_args(const struct fwnode_handle *fwnode,
const char *prop, const char *nargs_prop,
@@ -891,6 +896,7 @@ static struct property_set *pset_copy_set(const struct property_set *pset)
void device_remove_properties(struct device *dev)
{
struct fwnode_handle *fwnode;
+ struct property_set *pset;
fwnode = dev_fwnode(dev);
if (!fwnode)
@@ -900,16 +906,16 @@ void device_remove_properties(struct device *dev)
* the pset. If there is no real firmware node (ACPI/DT) primary
* will hold the pset.
*/
- if (is_pset_node(fwnode)) {
+ pset = to_pset_node(fwnode);
+ if (pset) {
set_primary_fwnode(dev, NULL);
- pset_free_set(to_pset_node(fwnode));
} else {
- fwnode = fwnode->secondary;
- if (!IS_ERR(fwnode) && is_pset_node(fwnode)) {
+ pset = to_pset_node(fwnode->secondary);
+ if (pset && dev == pset->dev)
set_secondary_fwnode(dev, NULL);
- pset_free_set(to_pset_node(fwnode));
- }
}
+ if (pset && dev == pset->dev)
+ pset_free_set(pset);
}
EXPORT_SYMBOL_GPL(device_remove_properties);
@@ -938,6 +944,7 @@ int device_add_properties(struct device *dev,
p->fwnode.ops = &pset_fwnode_ops;
set_secondary_fwnode(dev, &p->fwnode);
+ p->dev = dev;
return 0;
}
EXPORT_SYMBOL_GPL(device_add_properties);
diff --git a/drivers/base/regmap/Kconfig b/drivers/base/regmap/Kconfig
index 073c0b77e5b3..0368fd7b3a41 100644
--- a/drivers/base/regmap/Kconfig
+++ b/drivers/base/regmap/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Generic register map support. There are no user servicable options here,
# this is an API intended to be used by other kernel subsystems. These
# subsystems should select the appropriate symbols.
diff --git a/drivers/base/regmap/Makefile b/drivers/base/regmap/Makefile
index 0cf4abc8fbf1..0d298c446108 100644
--- a/drivers/base/regmap/Makefile
+++ b/drivers/base/regmap/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# For include/trace/define_trace.h to include trace.h
CFLAGS_regmap.o := -I$(src)
diff --git a/drivers/base/regmap/trace.h b/drivers/base/regmap/trace.h
index 64586a1c5a42..d4066fa079ab 100644
--- a/drivers/base/regmap/trace.h
+++ b/drivers/base/regmap/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM regmap
diff --git a/drivers/base/test/Kconfig b/drivers/base/test/Kconfig
index 9aa0d45a60db..86e85daa80bf 100644
--- a/drivers/base/test/Kconfig
+++ b/drivers/base/test/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config TEST_ASYNC_DRIVER_PROBE
tristate "Build kernel module to test asynchronous driver probing"
depends on m
diff --git a/drivers/bcma/Kconfig b/drivers/bcma/Kconfig
index 54f81c554815..a2df1ad03463 100644
--- a/drivers/bcma/Kconfig
+++ b/drivers/bcma/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config BCMA_POSSIBLE
bool
depends on HAS_IOMEM && HAS_DMA
diff --git a/drivers/bcma/Makefile b/drivers/bcma/Makefile
index 087948a1d20d..f8c37de35da2 100644
--- a/drivers/bcma/Makefile
+++ b/drivers/bcma/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
bcma-y += main.o scan.o core.o sprom.o
bcma-y += driver_chipcommon.o driver_chipcommon_pmu.o
bcma-y += driver_chipcommon_b.o
diff --git a/drivers/bcma/bcma_private.h b/drivers/bcma/bcma_private.h
index 168fa175d65a..a4aac370f21f 100644
--- a/drivers/bcma/bcma_private.h
+++ b/drivers/bcma/bcma_private.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCMA_PRIVATE_H_
#define LINUX_BCMA_PRIVATE_H_
diff --git a/drivers/bcma/scan.h b/drivers/bcma/scan.h
index 30eb475e4d19..e53079a3daf7 100644
--- a/drivers/bcma/scan.h
+++ b/drivers/bcma/scan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCMA_SCAN_H_
#define BCMA_SCAN_H_
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index 4a438b8abe27..7b2df7a54d87 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Block device driver configuration
#
@@ -17,7 +18,7 @@ if BLK_DEV
config BLK_DEV_NULL_BLK
tristate "Null test block driver"
- depends on CONFIGFS_FS
+ select CONFIGFS_FS
config BLK_DEV_FD
tristate "Normal floppy disk support"
diff --git a/drivers/block/Makefile b/drivers/block/Makefile
index 1f456d86a190..dc061158b403 100644
--- a/drivers/block/Makefile
+++ b/drivers/block/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel block device drivers.
#
diff --git a/drivers/block/brd.c b/drivers/block/brd.c
index bbd0d186cfc0..2d7178f7754e 100644
--- a/drivers/block/brd.c
+++ b/drivers/block/brd.c
@@ -342,7 +342,7 @@ static long __brd_direct_access(struct brd_device *brd, pgoff_t pgoff,
if (!brd)
return -ENODEV;
- page = brd_insert_page(brd, PFN_PHYS(pgoff) / 512);
+ page = brd_insert_page(brd, (sector_t)pgoff << PAGE_SECTORS_SHIFT);
if (!page)
return -ENOSPC;
*kaddr = page_address(page);
diff --git a/drivers/block/drbd/Kconfig b/drivers/block/drbd/Kconfig
index 7845bd6ee414..87aab6910d2d 100644
--- a/drivers/block/drbd/Kconfig
+++ b/drivers/block/drbd/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# DRBD device driver configuration
#
diff --git a/drivers/block/drbd/Makefile b/drivers/block/drbd/Makefile
index 4464e353c1e8..8bd534697d1b 100644
--- a/drivers/block/drbd/Makefile
+++ b/drivers/block/drbd/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
drbd-y := drbd_bitmap.o drbd_proc.o
drbd-y += drbd_worker.o drbd_receiver.o drbd_req.o drbd_actlog.o
drbd-y += drbd_main.o drbd_strings.o drbd_nl.o
diff --git a/drivers/block/drbd/drbd_debugfs.c b/drivers/block/drbd/drbd_debugfs.c
index 494837e59f23..ab21976a87b2 100644
--- a/drivers/block/drbd/drbd_debugfs.c
+++ b/drivers/block/drbd/drbd_debugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) "drbd debugfs: " fmt
#include <linux/kernel.h>
#include <linux/module.h>
diff --git a/drivers/block/drbd/drbd_debugfs.h b/drivers/block/drbd/drbd_debugfs.h
index 8bee21340dce..4ecfbb3358d7 100644
--- a/drivers/block/drbd/drbd_debugfs.h
+++ b/drivers/block/drbd/drbd_debugfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/debugfs.h>
diff --git a/drivers/block/drbd/drbd_interval.c b/drivers/block/drbd/drbd_interval.c
index 51b25ad85251..c58986556161 100644
--- a/drivers/block/drbd/drbd_interval.c
+++ b/drivers/block/drbd/drbd_interval.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <asm/bug.h>
#include <linux/rbtree_augmented.h>
#include "drbd_interval.h"
diff --git a/drivers/block/drbd/drbd_interval.h b/drivers/block/drbd/drbd_interval.h
index 23c5a94428d2..b8c2dee5edc8 100644
--- a/drivers/block/drbd/drbd_interval.h
+++ b/drivers/block/drbd/drbd_interval.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRBD_INTERVAL_H
#define __DRBD_INTERVAL_H
diff --git a/drivers/block/drbd/drbd_nla.c b/drivers/block/drbd/drbd_nla.c
index 6bf806df60dc..8e261cb5198b 100644
--- a/drivers/block/drbd/drbd_nla.c
+++ b/drivers/block/drbd/drbd_nla.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <net/netlink.h>
#include <linux/drbd_genl_api.h>
diff --git a/drivers/block/drbd/drbd_nla.h b/drivers/block/drbd/drbd_nla.h
index 679c2d5b4535..f5eaffb6474e 100644
--- a/drivers/block/drbd/drbd_nla.h
+++ b/drivers/block/drbd/drbd_nla.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRBD_NLA_H
#define __DRBD_NLA_H
diff --git a/drivers/block/drbd/drbd_protocol.h b/drivers/block/drbd/drbd_protocol.h
index 4d296800f706..c3081f93051c 100644
--- a/drivers/block/drbd/drbd_protocol.h
+++ b/drivers/block/drbd/drbd_protocol.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRBD_PROTOCOL_H
#define __DRBD_PROTOCOL_H
diff --git a/drivers/block/drbd/drbd_state.h b/drivers/block/drbd/drbd_state.h
index 0276c98fbbdd..ea58301d0895 100644
--- a/drivers/block/drbd/drbd_state.h
+++ b/drivers/block/drbd/drbd_state.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DRBD_STATE_H
#define DRBD_STATE_H
diff --git a/drivers/block/drbd/drbd_state_change.h b/drivers/block/drbd/drbd_state_change.h
index 9e503a1a0bfb..ba80f612d6ab 100644
--- a/drivers/block/drbd/drbd_state_change.h
+++ b/drivers/block/drbd/drbd_state_change.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DRBD_STATE_CHANGE_H
#define DRBD_STATE_CHANGE_H
diff --git a/drivers/block/drbd/drbd_strings.h b/drivers/block/drbd/drbd_strings.h
index f9923cc88afb..87b94a27358a 100644
--- a/drivers/block/drbd/drbd_strings.h
+++ b/drivers/block/drbd/drbd_strings.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRBD_STRINGS_H
#define __DRBD_STRINGS_H
diff --git a/drivers/block/loop.h b/drivers/block/loop.h
index f68c1d50802f..1f3956702993 100644
--- a/drivers/block/loop.h
+++ b/drivers/block/loop.h
@@ -67,10 +67,8 @@ struct loop_device {
struct loop_cmd {
struct kthread_work work;
struct request *rq;
- union {
- bool use_aio; /* use AIO interface to handle I/O */
- atomic_t ref; /* only for aio */
- };
+ bool use_aio; /* use AIO interface to handle I/O */
+ atomic_t ref; /* only for aio */
long ret;
struct kiocb iocb;
struct bio_vec *bvec;
diff --git a/drivers/block/mtip32xx/Kconfig b/drivers/block/mtip32xx/Kconfig
index 0ba837fc62a8..bf221358567e 100644
--- a/drivers/block/mtip32xx/Kconfig
+++ b/drivers/block/mtip32xx/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# mtip32xx device driver configuration
#
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 2aa87cbdede0..9adfb5445f8d 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -243,7 +243,6 @@ static void nbd_size_set(struct nbd_device *nbd, loff_t blocksize,
struct nbd_config *config = nbd->config;
config->blksize = blocksize;
config->bytesize = blocksize * nr_blocks;
- nbd_size_update(nbd);
}
static void nbd_complete_rq(struct request *req)
@@ -387,6 +386,15 @@ static int sock_xmit(struct nbd_device *nbd, int index, int send,
return result;
}
+/*
+ * Different settings for sk->sk_sndtimeo can result in different return values
+ * if there is a signal pending when we enter sendmsg, because reasons?
+ */
+static inline int was_interrupted(int result)
+{
+ return result == -ERESTARTSYS || result == -EINTR;
+}
+
/* always call with the tx_lock held */
static int nbd_send_cmd(struct nbd_device *nbd, struct nbd_cmd *cmd, int index)
{
@@ -459,7 +467,7 @@ static int nbd_send_cmd(struct nbd_device *nbd, struct nbd_cmd *cmd, int index)
result = sock_xmit(nbd, index, 1, &from,
(type == NBD_CMD_WRITE) ? MSG_MORE : 0, &sent);
if (result <= 0) {
- if (result == -ERESTARTSYS) {
+ if (was_interrupted(result)) {
/* If we havne't sent anything we can just return BUSY,
* however if we have sent something we need to make
* sure we only allow this req to be sent until we are
@@ -503,7 +511,7 @@ send_pages:
}
result = sock_xmit(nbd, index, 1, &from, flags, &sent);
if (result <= 0) {
- if (result == -ERESTARTSYS) {
+ if (was_interrupted(result)) {
/* We've already sent the header, we
* have no choice but to set pending and
* return BUSY.
@@ -820,9 +828,13 @@ static blk_status_t nbd_queue_rq(struct blk_mq_hw_ctx *hctx,
* appropriate.
*/
ret = nbd_handle_cmd(cmd, hctx->queue_num);
+ if (ret < 0)
+ ret = BLK_STS_IOERR;
+ else if (!ret)
+ ret = BLK_STS_OK;
complete(&cmd->send_complete);
- return ret < 0 ? BLK_STS_IOERR : BLK_STS_OK;
+ return ret;
}
static int nbd_add_socket(struct nbd_device *nbd, unsigned long arg,
@@ -1090,6 +1102,7 @@ static int nbd_start_device(struct nbd_device *nbd)
args->index = i;
queue_work(recv_workqueue, &args->work);
}
+ nbd_size_update(nbd);
return error;
}
@@ -1194,6 +1207,12 @@ static int nbd_ioctl(struct block_device *bdev, fmode_t mode,
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
+ /* The block layer will pass back some non-nbd ioctls in case we have
+ * special handling for them, but we don't so just return an error.
+ */
+ if (_IOC_TYPE(cmd) != 0xab)
+ return -EINVAL;
+
mutex_lock(&nbd->config_lock);
/* Don't allow ioctl operations on a nbd device that was created with
diff --git a/drivers/block/paride/Kconfig b/drivers/block/paride/Kconfig
index 3a15247942e4..b226835a909a 100644
--- a/drivers/block/paride/Kconfig
+++ b/drivers/block/paride/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# PARIDE configuration
#
diff --git a/drivers/block/paride/Makefile b/drivers/block/paride/Makefile
index a539e004bb7a..cf1742a8475e 100644
--- a/drivers/block/paride/Makefile
+++ b/drivers/block/paride/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Parallel port IDE device drivers.
#
diff --git a/drivers/block/paride/mkd b/drivers/block/paride/mkd
index 971f099b40aa..6d0d802479ea 100644
--- a/drivers/block/paride/mkd
+++ b/drivers/block/paride/mkd
@@ -1,4 +1,5 @@
#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
#
# mkd -- a script to create the device special files for the PARIDE subsystem
#
diff --git a/drivers/block/skd_main.c b/drivers/block/skd_main.c
index 7cedb4295e9d..64d0fc17c174 100644
--- a/drivers/block/skd_main.c
+++ b/drivers/block/skd_main.c
@@ -2604,7 +2604,7 @@ static void *skd_alloc_dma(struct skd_device *skdev, struct kmem_cache *s,
return NULL;
*dma_handle = dma_map_single(dev, buf, s->size, dir);
if (dma_mapping_error(dev, *dma_handle)) {
- kfree(buf);
+ kmem_cache_free(s, buf);
buf = NULL;
}
return buf;
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 34e17ee799be..68846897d213 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -593,10 +593,22 @@ static int virtblk_map_queues(struct blk_mq_tag_set *set)
return blk_mq_virtio_map_queues(set, vblk->vdev, 0);
}
+#ifdef CONFIG_VIRTIO_BLK_SCSI
+static void virtblk_initialize_rq(struct request *req)
+{
+ struct virtblk_req *vbr = blk_mq_rq_to_pdu(req);
+
+ scsi_req_init(&vbr->sreq);
+}
+#endif
+
static const struct blk_mq_ops virtio_mq_ops = {
.queue_rq = virtio_queue_rq,
.complete = virtblk_request_done,
.init_request = virtblk_init_request,
+#ifdef CONFIG_VIRTIO_BLK_SCSI
+ .initialize_rq_fn = virtblk_initialize_rq,
+#endif
.map_queues = virtblk_map_queues,
};
diff --git a/drivers/block/zram/Kconfig b/drivers/block/zram/Kconfig
index 7cd4a8ec3c8f..ac3a31d433b2 100644
--- a/drivers/block/zram/Kconfig
+++ b/drivers/block/zram/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config ZRAM
tristate "Compressed RAM block device support"
depends on BLOCK && SYSFS && ZSMALLOC && CRYPTO
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 2981c27d3aae..f149d3e61234 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -766,27 +766,6 @@ static void zram_slot_unlock(struct zram *zram, u32 index)
bit_spin_unlock(ZRAM_ACCESS, &zram->table[index].value);
}
-static bool zram_same_page_read(struct zram *zram, u32 index,
- struct page *page,
- unsigned int offset, unsigned int len)
-{
- zram_slot_lock(zram, index);
- if (unlikely(!zram_get_handle(zram, index) ||
- zram_test_flag(zram, index, ZRAM_SAME))) {
- void *mem;
-
- zram_slot_unlock(zram, index);
- mem = kmap_atomic(page);
- zram_fill_page(mem + offset, len,
- zram_get_element(zram, index));
- kunmap_atomic(mem);
- return true;
- }
- zram_slot_unlock(zram, index);
-
- return false;
-}
-
static void zram_meta_free(struct zram *zram, u64 disksize)
{
size_t num_pages = disksize >> PAGE_SHIFT;
@@ -884,11 +863,20 @@ static int __zram_bvec_read(struct zram *zram, struct page *page, u32 index,
zram_slot_unlock(zram, index);
}
- if (zram_same_page_read(zram, index, page, 0, PAGE_SIZE))
- return 0;
-
zram_slot_lock(zram, index);
handle = zram_get_handle(zram, index);
+ if (!handle || zram_test_flag(zram, index, ZRAM_SAME)) {
+ unsigned long value;
+ void *mem;
+
+ value = handle ? zram_get_element(zram, index) : 0;
+ mem = kmap_atomic(page);
+ zram_fill_page(mem, PAGE_SIZE, value);
+ kunmap_atomic(mem);
+ zram_slot_unlock(zram, index);
+ return 0;
+ }
+
size = zram_get_obj_size(zram, index);
src = zs_map_object(zram->mem_pool, handle, ZS_MM_RO);
diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig
index fae5a74dc737..98a60db8e5d1 100644
--- a/drivers/bluetooth/Kconfig
+++ b/drivers/bluetooth/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menu "Bluetooth device drivers"
depends on BT
diff --git a/drivers/bluetooth/Makefile b/drivers/bluetooth/Makefile
index e693ca6eeed9..4e4e44d09796 100644
--- a/drivers/bluetooth/Makefile
+++ b/drivers/bluetooth/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux Bluetooth HCI device drivers.
#
diff --git a/drivers/bus/Kconfig b/drivers/bus/Kconfig
index ae3d8f3444b9..3e66f4cc1a59 100644
--- a/drivers/bus/Kconfig
+++ b/drivers/bus/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Bus Devices
#
diff --git a/drivers/bus/Makefile b/drivers/bus/Makefile
index cc6364bec054..3ae96cffabd5 100644
--- a/drivers/bus/Makefile
+++ b/drivers/bus/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the bus drivers.
#
diff --git a/drivers/bus/mvebu-mbus.c b/drivers/bus/mvebu-mbus.c
index c7f396903184..70db4d5638a6 100644
--- a/drivers/bus/mvebu-mbus.c
+++ b/drivers/bus/mvebu-mbus.c
@@ -720,7 +720,7 @@ mvebu_mbus_default_setup_cpu_target(struct mvebu_mbus_state *mbus)
if (mbus->hw_io_coherency)
w->mbus_attr |= ATTR_HW_COHERENCY;
w->base = base & DDR_BASE_CS_LOW_MASK;
- w->size = (size | ~DDR_SIZE_MASK) + 1;
+ w->size = (u64)(size | ~DDR_SIZE_MASK) + 1;
}
}
mvebu_mbus_dram_info.num_cs = cs;
diff --git a/drivers/cdrom/Makefile b/drivers/cdrom/Makefile
index 8ffde4f8ab9a..a95566ff47d3 100644
--- a/drivers/cdrom/Makefile
+++ b/drivers/cdrom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the kernel cdrom device drivers.
#
# 30 Jan 1998, Michael Elizabeth Chastain, <mailto:mec@shout.net>
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
index 623714344600..c28dca0c613d 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Character device configuration
#
diff --git a/drivers/char/Makefile b/drivers/char/Makefile
index 53e33720818c..7dc3abe66464 100644
--- a/drivers/char/Makefile
+++ b/drivers/char/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel character device drivers.
#
diff --git a/drivers/char/agp/Kconfig b/drivers/char/agp/Kconfig
index c528f96ee204..6231714ef3c8 100644
--- a/drivers/char/agp/Kconfig
+++ b/drivers/char/agp/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
menuconfig AGP
tristate "/dev/agpgart (AGP Support)"
depends on ALPHA || IA64 || PARISC || PPC || X86
diff --git a/drivers/char/agp/Makefile b/drivers/char/agp/Makefile
index 604489bcdbf9..4a786ffd9dee 100644
--- a/drivers/char/agp/Makefile
+++ b/drivers/char/agp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
agpgart-y := backend.o frontend.o generic.o isoch.o
agpgart-$(CONFIG_COMPAT) += compat_ioctl.o
diff --git a/drivers/char/agp/intel-agp.h b/drivers/char/agp/intel-agp.h
index fda073dcd967..164bf651953f 100644
--- a/drivers/char/agp/intel-agp.h
+++ b/drivers/char/agp/intel-agp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common Intel AGPGART and GTT definitions.
*/
diff --git a/drivers/char/agp/isoch.c b/drivers/char/agp/isoch.c
index c73385cc4b8a..fc8e1bc3347d 100644
--- a/drivers/char/agp/isoch.c
+++ b/drivers/char/agp/isoch.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Setup routines for AGP 3.5 compliant bridges.
*/
diff --git a/drivers/char/applicom.h b/drivers/char/applicom.h
index 35530b3d9bd6..282e08f159d5 100644
--- a/drivers/char/applicom.h
+++ b/drivers/char/applicom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: applicom.h,v 1.2 1999/08/28 15:09:49 dwmw2 Exp $ */
diff --git a/drivers/char/ds1302.c b/drivers/char/ds1302.c
index c614a56e68cc..8e16ad5d6d89 100644
--- a/drivers/char/ds1302.c
+++ b/drivers/char/ds1302.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*!***************************************************************************
*!
*! FILE NAME : ds1302.c
diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
index 39a67defac67..f3728d008fff 100644
--- a/drivers/char/hw_random/Makefile
+++ b/drivers/char/hw_random/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for HW Random Number Generator (RNG) device drivers.
#
diff --git a/drivers/char/hw_random/n2-asm.S b/drivers/char/hw_random/n2-asm.S
index 9b6eb5cd59f6..c205df43d5ae 100644
--- a/drivers/char/hw_random/n2-asm.S
+++ b/drivers/char/hw_random/n2-asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* n2-asm.S: Niagara2 RNG hypervisor call assembler.
*
* Copyright (C) 2008 David S. Miller <davem@davemloft.net>
diff --git a/drivers/char/hw_random/n2rng.h b/drivers/char/hw_random/n2rng.h
index 6bad6cc634e8..9a870f5dc371 100644
--- a/drivers/char/hw_random/n2rng.h
+++ b/drivers/char/hw_random/n2rng.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* n2rng.h: Niagara2 RNG defines.
*
* Copyright (C) 2008 David S. Miller <davem@davemloft.net>
diff --git a/drivers/char/ipmi/Makefile b/drivers/char/ipmi/Makefile
index eefb0b301e83..43b7d86cc5f2 100644
--- a/drivers/char/ipmi/Makefile
+++ b/drivers/char/ipmi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the ipmi drivers.
#
diff --git a/drivers/char/ipmi/ipmi_dmi.c b/drivers/char/ipmi/ipmi_dmi.c
index 2a84401dea05..2059f79d669a 100644
--- a/drivers/char/ipmi/ipmi_dmi.c
+++ b/drivers/char/ipmi/ipmi_dmi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* A hack to create a platform device from a DMI entry. This will
* allow autoloading of the IPMI drive based on SMBIOS entries.
diff --git a/drivers/char/ipmi/ipmi_dmi.h b/drivers/char/ipmi/ipmi_dmi.h
index 0a1afe5ceb1e..ea990a8e3b09 100644
--- a/drivers/char/ipmi/ipmi_dmi.h
+++ b/drivers/char/ipmi/ipmi_dmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* DMI defines for use by IPMI
*/
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 593a8818aca9..970e1242a282 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/drivers/char/mem.c
*
diff --git a/drivers/char/misc.c b/drivers/char/misc.c
index c9cd1ea6844a..1bb9e7cc82e3 100644
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/drivers/char/misc.c
*
diff --git a/drivers/char/nwbutton.h b/drivers/char/nwbutton.h
index c3ebc16ce8a7..abee3ca74801 100644
--- a/drivers/char/nwbutton.h
+++ b/drivers/char/nwbutton.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NWBUTTON_H
#define __NWBUTTON_H
diff --git a/drivers/char/pcmcia/cm4040_cs.h b/drivers/char/pcmcia/cm4040_cs.h
index 9a8b805c5095..e2ffff995d51 100644
--- a/drivers/char/pcmcia/cm4040_cs.h
+++ b/drivers/char/pcmcia/cm4040_cs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CM4040_H_
#define _CM4040_H_
diff --git a/drivers/char/sonypi.c b/drivers/char/sonypi.c
index f4f866ee54bc..d3a979e25724 100644
--- a/drivers/char/sonypi.c
+++ b/drivers/char/sonypi.c
@@ -1491,7 +1491,7 @@ static struct platform_driver sonypi_driver = {
static struct platform_device *sonypi_platform_device;
-static struct dmi_system_id __initdata sonypi_dmi_table[] = {
+static const struct dmi_system_id sonypi_dmi_table[] __initconst = {
{
.ident = "Sony Vaio",
.matches = {
diff --git a/drivers/char/tpm/Makefile b/drivers/char/tpm/Makefile
index 23681f01f95a..34b4bcf46f43 100644
--- a/drivers/char/tpm/Makefile
+++ b/drivers/char/tpm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel tpm device drivers.
#
diff --git a/drivers/char/tpm/st33zp24/Makefile b/drivers/char/tpm/st33zp24/Makefile
index 74a722e5e068..649e41107de9 100644
--- a/drivers/char/tpm/st33zp24/Makefile
+++ b/drivers/char/tpm/st33zp24/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for ST33ZP24 TPM 1.2 driver
#
diff --git a/drivers/char/tpm/tpm-dev.h b/drivers/char/tpm/tpm-dev.h
index ff15cf719bad..ba3b6f9dacf7 100644
--- a/drivers/char/tpm/tpm-dev.h
+++ b/drivers/char/tpm/tpm-dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _TPM_DEV_H
#define _TPM_DEV_H
diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
index fe597e6c55c4..1d6729be4cd6 100644
--- a/drivers/char/tpm/tpm-interface.c
+++ b/drivers/char/tpm/tpm-interface.c
@@ -455,7 +455,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
goto out;
}
- msleep(TPM_TIMEOUT); /* CHECK */
+ tpm_msleep(TPM_TIMEOUT);
rmb();
} while (time_before(jiffies, stop));
@@ -970,7 +970,7 @@ int tpm_do_selftest(struct tpm_chip *chip)
dev_info(
&chip->dev, HW_ERR
"TPM command timed out during continue self test");
- msleep(delay_msec);
+ tpm_msleep(delay_msec);
continue;
}
@@ -985,7 +985,7 @@ int tpm_do_selftest(struct tpm_chip *chip)
}
if (rc != TPM_WARN_DOING_SELFTEST)
return rc;
- msleep(delay_msec);
+ tpm_msleep(delay_msec);
} while (--loops > 0);
return rc;
@@ -1085,7 +1085,7 @@ again:
}
} else {
do {
- msleep(TPM_TIMEOUT);
+ tpm_msleep(TPM_TIMEOUT);
status = chip->ops->status(chip);
if ((status & mask) == mask)
return 0;
@@ -1150,7 +1150,7 @@ int tpm_pm_suspend(struct device *dev)
*/
if (rc != TPM_WARN_RETRY)
break;
- msleep(TPM_TIMEOUT_RETRY);
+ tpm_msleep(TPM_TIMEOUT_RETRY);
}
if (rc)
diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
index 04fbff2edbf3..2d5466a72e40 100644
--- a/drivers/char/tpm/tpm.h
+++ b/drivers/char/tpm/tpm.h
@@ -50,7 +50,8 @@ enum tpm_const {
enum tpm_timeout {
TPM_TIMEOUT = 5, /* msecs */
- TPM_TIMEOUT_RETRY = 100 /* msecs */
+ TPM_TIMEOUT_RETRY = 100, /* msecs */
+ TPM_TIMEOUT_RANGE_US = 300 /* usecs */
};
/* TPM addresses */
@@ -527,6 +528,12 @@ int tpm_pm_resume(struct device *dev);
int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask, unsigned long timeout,
wait_queue_head_t *queue, bool check_cancel);
+static inline void tpm_msleep(unsigned int delay_msec)
+{
+ usleep_range(delay_msec * 1000,
+ (delay_msec * 1000) + TPM_TIMEOUT_RANGE_US);
+};
+
struct tpm_chip *tpm_chip_find_get(int chip_num);
__must_check int tpm_try_get_ops(struct tpm_chip *chip);
void tpm_put_ops(struct tpm_chip *chip);
diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
index f7f34b2aa981..e1a41b788f08 100644
--- a/drivers/char/tpm/tpm2-cmd.c
+++ b/drivers/char/tpm/tpm2-cmd.c
@@ -899,7 +899,7 @@ static int tpm2_do_selftest(struct tpm_chip *chip)
if (rc != TPM2_RC_TESTING)
break;
- msleep(delay_msec);
+ tpm_msleep(delay_msec);
}
return rc;
diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c
index a4ac63a21d8a..8f0a98dea327 100644
--- a/drivers/char/tpm/tpm_crb.c
+++ b/drivers/char/tpm/tpm_crb.c
@@ -665,7 +665,7 @@ static const struct dev_pm_ops crb_pm = {
SET_RUNTIME_PM_OPS(crb_pm_runtime_suspend, crb_pm_runtime_resume, NULL)
};
-static struct acpi_device_id crb_device_ids[] = {
+static const struct acpi_device_id crb_device_ids[] = {
{"MSFT0101", 0},
{"", 0},
};
diff --git a/drivers/char/tpm/tpm_eventlog.h b/drivers/char/tpm/tpm_eventlog.h
index b4b549559203..204466cc4d05 100644
--- a/drivers/char/tpm/tpm_eventlog.h
+++ b/drivers/char/tpm/tpm_eventlog.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __TPM_EVENTLOG_H__
#define __TPM_EVENTLOG_H__
diff --git a/drivers/char/tpm/tpm_ibmvtpm.c b/drivers/char/tpm/tpm_ibmvtpm.c
index f01d083eced2..25f6e2665385 100644
--- a/drivers/char/tpm/tpm_ibmvtpm.c
+++ b/drivers/char/tpm/tpm_ibmvtpm.c
@@ -32,26 +32,70 @@
static const char tpm_ibmvtpm_driver_name[] = "tpm_ibmvtpm";
-static struct vio_device_id tpm_ibmvtpm_device_table[] = {
+static const struct vio_device_id tpm_ibmvtpm_device_table[] = {
{ "IBM,vtpm", "IBM,vtpm"},
{ "", "" }
};
MODULE_DEVICE_TABLE(vio, tpm_ibmvtpm_device_table);
/**
+ *
+ * ibmvtpm_send_crq_word - Send a CRQ request
+ * @vdev: vio device struct
+ * @w1: pre-constructed first word of tpm crq (second word is reserved)
+ *
+ * Return:
+ * 0 - Success
+ * Non-zero - Failure
+ */
+static int ibmvtpm_send_crq_word(struct vio_dev *vdev, u64 w1)
+{
+ return plpar_hcall_norets(H_SEND_CRQ, vdev->unit_address, w1, 0);
+}
+
+/**
+ *
* ibmvtpm_send_crq - Send a CRQ request
*
* @vdev: vio device struct
- * @w1: first word
- * @w2: second word
+ * @valid: Valid field
+ * @msg: Type field
+ * @len: Length field
+ * @data: Data field
+ *
+ * The ibmvtpm crq is defined as follows:
+ *
+ * Byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
+ * -----------------------------------------------------------------------
+ * Word0 | Valid | Type | Length | Data
+ * -----------------------------------------------------------------------
+ * Word1 | Reserved
+ * -----------------------------------------------------------------------
+ *
+ * Which matches the following structure (on bigendian host):
+ *
+ * struct ibmvtpm_crq {
+ * u8 valid;
+ * u8 msg;
+ * __be16 len;
+ * __be32 data;
+ * __be64 reserved;
+ * } __attribute__((packed, aligned(8)));
+ *
+ * However, the value is passed in a register so just compute the numeric value
+ * to load into the register avoiding byteswap altogether. Endian only affects
+ * memory loads and stores - registers are internally represented the same.
*
* Return:
- * 0 -Sucess
+ * 0 (H_SUCCESS) - Success
* Non-zero - Failure
*/
-static int ibmvtpm_send_crq(struct vio_dev *vdev, u64 w1, u64 w2)
+static int ibmvtpm_send_crq(struct vio_dev *vdev,
+ u8 valid, u8 msg, u16 len, u32 data)
{
- return plpar_hcall_norets(H_SEND_CRQ, vdev->unit_address, w1, w2);
+ u64 w1 = ((u64)valid << 56) | ((u64)msg << 48) | ((u64)len << 32) |
+ (u64)data;
+ return ibmvtpm_send_crq_word(vdev, w1);
}
/**
@@ -109,8 +153,6 @@ static int tpm_ibmvtpm_recv(struct tpm_chip *chip, u8 *buf, size_t count)
static int tpm_ibmvtpm_send(struct tpm_chip *chip, u8 *buf, size_t count)
{
struct ibmvtpm_dev *ibmvtpm = dev_get_drvdata(&chip->dev);
- struct ibmvtpm_crq crq;
- __be64 *word = (__be64 *)&crq;
int rc, sig;
if (!ibmvtpm->rtce_buf) {
@@ -137,10 +179,6 @@ static int tpm_ibmvtpm_send(struct tpm_chip *chip, u8 *buf, size_t count)
spin_lock(&ibmvtpm->rtce_lock);
ibmvtpm->res_len = 0;
memcpy((void *)ibmvtpm->rtce_buf, (void *)buf, count);
- crq.valid = (u8)IBMVTPM_VALID_CMD;
- crq.msg = (u8)VTPM_TPM_COMMAND;
- crq.len = cpu_to_be16(count);
- crq.data = cpu_to_be32(ibmvtpm->rtce_dma_handle);
/*
* set the processing flag before the Hcall, since we may get the
@@ -148,8 +186,9 @@ static int tpm_ibmvtpm_send(struct tpm_chip *chip, u8 *buf, size_t count)
*/
ibmvtpm->tpm_processing_cmd = true;
- rc = ibmvtpm_send_crq(ibmvtpm->vdev, be64_to_cpu(word[0]),
- be64_to_cpu(word[1]));
+ rc = ibmvtpm_send_crq(ibmvtpm->vdev,
+ IBMVTPM_VALID_CMD, VTPM_TPM_COMMAND,
+ count, ibmvtpm->rtce_dma_handle);
if (rc != H_SUCCESS) {
dev_err(ibmvtpm->dev, "tpm_ibmvtpm_send failed rc=%d\n", rc);
rc = 0;
@@ -182,15 +221,10 @@ static u8 tpm_ibmvtpm_status(struct tpm_chip *chip)
*/
static int ibmvtpm_crq_get_rtce_size(struct ibmvtpm_dev *ibmvtpm)
{
- struct ibmvtpm_crq crq;
- u64 *buf = (u64 *) &crq;
int rc;
- crq.valid = (u8)IBMVTPM_VALID_CMD;
- crq.msg = (u8)VTPM_GET_RTCE_BUFFER_SIZE;
-
- rc = ibmvtpm_send_crq(ibmvtpm->vdev, cpu_to_be64(buf[0]),
- cpu_to_be64(buf[1]));
+ rc = ibmvtpm_send_crq(ibmvtpm->vdev,
+ IBMVTPM_VALID_CMD, VTPM_GET_RTCE_BUFFER_SIZE, 0, 0);
if (rc != H_SUCCESS)
dev_err(ibmvtpm->dev,
"ibmvtpm_crq_get_rtce_size failed rc=%d\n", rc);
@@ -210,15 +244,10 @@ static int ibmvtpm_crq_get_rtce_size(struct ibmvtpm_dev *ibmvtpm)
*/
static int ibmvtpm_crq_get_version(struct ibmvtpm_dev *ibmvtpm)
{
- struct ibmvtpm_crq crq;
- u64 *buf = (u64 *) &crq;
int rc;
- crq.valid = (u8)IBMVTPM_VALID_CMD;
- crq.msg = (u8)VTPM_GET_VERSION;
-
- rc = ibmvtpm_send_crq(ibmvtpm->vdev, cpu_to_be64(buf[0]),
- cpu_to_be64(buf[1]));
+ rc = ibmvtpm_send_crq(ibmvtpm->vdev,
+ IBMVTPM_VALID_CMD, VTPM_GET_VERSION, 0, 0);
if (rc != H_SUCCESS)
dev_err(ibmvtpm->dev,
"ibmvtpm_crq_get_version failed rc=%d\n", rc);
@@ -238,7 +267,7 @@ static int ibmvtpm_crq_send_init_complete(struct ibmvtpm_dev *ibmvtpm)
{
int rc;
- rc = ibmvtpm_send_crq(ibmvtpm->vdev, INIT_CRQ_COMP_CMD, 0);
+ rc = ibmvtpm_send_crq_word(ibmvtpm->vdev, INIT_CRQ_COMP_CMD);
if (rc != H_SUCCESS)
dev_err(ibmvtpm->dev,
"ibmvtpm_crq_send_init_complete failed rc=%d\n", rc);
@@ -258,7 +287,7 @@ static int ibmvtpm_crq_send_init(struct ibmvtpm_dev *ibmvtpm)
{
int rc;
- rc = ibmvtpm_send_crq(ibmvtpm->vdev, INIT_CRQ_CMD, 0);
+ rc = ibmvtpm_send_crq_word(ibmvtpm->vdev, INIT_CRQ_CMD);
if (rc != H_SUCCESS)
dev_err(ibmvtpm->dev,
"ibmvtpm_crq_send_init failed rc=%d\n", rc);
@@ -340,15 +369,10 @@ static int tpm_ibmvtpm_suspend(struct device *dev)
{
struct tpm_chip *chip = dev_get_drvdata(dev);
struct ibmvtpm_dev *ibmvtpm = dev_get_drvdata(&chip->dev);
- struct ibmvtpm_crq crq;
- u64 *buf = (u64 *) &crq;
int rc = 0;
- crq.valid = (u8)IBMVTPM_VALID_CMD;
- crq.msg = (u8)VTPM_PREPARE_TO_SUSPEND;
-
- rc = ibmvtpm_send_crq(ibmvtpm->vdev, cpu_to_be64(buf[0]),
- cpu_to_be64(buf[1]));
+ rc = ibmvtpm_send_crq(ibmvtpm->vdev,
+ IBMVTPM_VALID_CMD, VTPM_PREPARE_TO_SUSPEND, 0, 0);
if (rc != H_SUCCESS)
dev_err(ibmvtpm->dev,
"tpm_ibmvtpm_suspend failed rc=%d\n", rc);
diff --git a/drivers/char/tpm/tpm_infineon.c b/drivers/char/tpm/tpm_infineon.c
index 3b1b9f9322d5..d8f10047fbba 100644
--- a/drivers/char/tpm/tpm_infineon.c
+++ b/drivers/char/tpm/tpm_infineon.c
@@ -191,7 +191,7 @@ static int wait(struct tpm_chip *chip, int wait_for_bit)
/* check the status-register if wait_for_bit is set */
if (status & 1 << wait_for_bit)
break;
- msleep(TPM_MSLEEP_TIME);
+ tpm_msleep(TPM_MSLEEP_TIME);
}
if (i == TPM_MAX_TRIES) { /* timeout occurs */
if (wait_for_bit == STAT_XFE)
@@ -226,7 +226,7 @@ static void tpm_wtx(struct tpm_chip *chip)
wait_and_send(chip, TPM_CTRL_WTX);
wait_and_send(chip, 0x00);
wait_and_send(chip, 0x00);
- msleep(TPM_WTX_MSLEEP_TIME);
+ tpm_msleep(TPM_WTX_MSLEEP_TIME);
}
static void tpm_wtx_abort(struct tpm_chip *chip)
@@ -237,7 +237,7 @@ static void tpm_wtx_abort(struct tpm_chip *chip)
wait_and_send(chip, 0x00);
wait_and_send(chip, 0x00);
number_of_wtx = 0;
- msleep(TPM_WTX_MSLEEP_TIME);
+ tpm_msleep(TPM_WTX_MSLEEP_TIME);
}
static int tpm_inf_recv(struct tpm_chip *chip, u8 * buf, size_t count)
diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
index b617b2eeb080..63bc6c3b949e 100644
--- a/drivers/char/tpm/tpm_tis_core.c
+++ b/drivers/char/tpm/tpm_tis_core.c
@@ -51,7 +51,7 @@ static int wait_startup(struct tpm_chip *chip, int l)
if (access & TPM_ACCESS_VALID)
return 0;
- msleep(TPM_TIMEOUT);
+ tpm_msleep(TPM_TIMEOUT);
} while (time_before(jiffies, stop));
return -1;
}
@@ -117,7 +117,7 @@ again:
do {
if (check_locality(chip, l))
return l;
- msleep(TPM_TIMEOUT);
+ tpm_msleep(TPM_TIMEOUT);
} while (time_before(jiffies, stop));
}
return -1;
@@ -164,7 +164,7 @@ static int get_burstcount(struct tpm_chip *chip)
burstcnt = (value >> 8) & 0xFFFF;
if (burstcnt)
return burstcnt;
- msleep(TPM_TIMEOUT);
+ tpm_msleep(TPM_TIMEOUT);
} while (time_before(jiffies, stop));
return -EBUSY;
}
@@ -396,7 +396,7 @@ static int tpm_tis_send(struct tpm_chip *chip, u8 *buf, size_t len)
priv->irq = irq;
chip->flags |= TPM_CHIP_FLAG_IRQ;
if (!priv->irq_tested)
- msleep(1);
+ tpm_msleep(1);
if (!priv->irq_tested)
disable_interrupts(chip);
priv->irq_tested = true;
diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
index c99f363826f0..f7f761b02bed 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# common clock types
obj-$(CONFIG_HAVE_CLK) += clk-devres.o clk-bulk.o
obj-$(CONFIG_CLKDEV_LOOKUP) += clkdev.o
diff --git a/drivers/clk/at91/Makefile b/drivers/clk/at91/Makefile
index c68947b65a4c..082596f37c1d 100644
--- a/drivers/clk/at91/Makefile
+++ b/drivers/clk/at91/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for at91 specific clk
#
diff --git a/drivers/clk/bcm/Makefile b/drivers/clk/bcm/Makefile
index a0c14fa4aa1e..e3f0cb0d90f3 100644
--- a/drivers/clk/bcm/Makefile
+++ b/drivers/clk/bcm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CLK_BCM_63XX) += clk-bcm63xx.o
obj-$(CONFIG_CLK_BCM_KONA) += clk-kona.o
obj-$(CONFIG_CLK_BCM_KONA) += clk-kona-setup.o
diff --git a/drivers/clk/clk-bulk.c b/drivers/clk/clk-bulk.c
index c834f5abfc49..4c10456f8a32 100644
--- a/drivers/clk/clk-bulk.c
+++ b/drivers/clk/clk-bulk.c
@@ -105,6 +105,7 @@ err:
return ret;
}
+EXPORT_SYMBOL_GPL(clk_bulk_prepare);
#endif /* CONFIG_HAVE_CLK_PREPARE */
diff --git a/drivers/clk/clk-gemini.c b/drivers/clk/clk-gemini.c
index f940e5af845b..5e66e6c0205e 100644
--- a/drivers/clk/clk-gemini.c
+++ b/drivers/clk/clk-gemini.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Cortina Gemini SoC Clock Controller driver
* Copyright (c) 2017 Linus Walleij <linus.walleij@linaro.org>
diff --git a/drivers/clk/clk-tango4.c b/drivers/clk/clk-tango4.c
index eef75e305a59..34b22b7930fb 100644
--- a/drivers/clk/clk-tango4.c
+++ b/drivers/clk/clk-tango4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/clk-provider.h>
#include <linux/of_address.h>
diff --git a/drivers/clk/h8300/clk-div.c b/drivers/clk/h8300/clk-div.c
index 715b882205a8..4ae624425e9d 100644
--- a/drivers/clk/h8300/clk-div.c
+++ b/drivers/clk/h8300/clk-div.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* H8/300 divide clock driver
*
diff --git a/drivers/clk/h8300/clk-h8s2678.c b/drivers/clk/h8300/clk-h8s2678.c
index a26312460621..fc24b0b55a3d 100644
--- a/drivers/clk/h8300/clk-h8s2678.c
+++ b/drivers/clk/h8300/clk-h8s2678.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* H8S2678 clock driver
*
diff --git a/drivers/clk/hisilicon/Makefile b/drivers/clk/hisilicon/Makefile
index 1e4c3ddbad84..0e55612112af 100644
--- a/drivers/clk/hisilicon/Makefile
+++ b/drivers/clk/hisilicon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Hisilicon Clock specific Makefile
#
diff --git a/drivers/clk/imgtec/clk-boston.c b/drivers/clk/imgtec/clk-boston.c
index f18f10351785..15af423cc0c9 100644
--- a/drivers/clk/imgtec/clk-boston.c
+++ b/drivers/clk/imgtec/clk-boston.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016-2017 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
diff --git a/drivers/clk/imx/Makefile b/drivers/clk/imx/Makefile
index 1ada68abb158..f91f2b2e11cd 100644
--- a/drivers/clk/imx/Makefile
+++ b/drivers/clk/imx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += \
clk.o \
diff --git a/drivers/clk/imx/clk-imx27.c b/drivers/clk/imx/clk-imx27.c
index cf5cf75a4848..0a0ab95d16fe 100644
--- a/drivers/clk/imx/clk-imx27.c
+++ b/drivers/clk/imx/clk-imx27.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/clk.h>
#include <linux/clk-provider.h>
#include <linux/clkdev.h>
diff --git a/drivers/clk/imx/clk-pllv1.c b/drivers/clk/imx/clk-pllv1.c
index 82fe3662b5f6..e47a1c2fe8bd 100644
--- a/drivers/clk/imx/clk-pllv1.c
+++ b/drivers/clk/imx/clk-pllv1.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/clk-provider.h>
#include <linux/io.h>
#include <linux/slab.h>
diff --git a/drivers/clk/imx/clk-pllv2.c b/drivers/clk/imx/clk-pllv2.c
index 4aeda56ce372..9842d657e974 100644
--- a/drivers/clk/imx/clk-pllv2.c
+++ b/drivers/clk/imx/clk-pllv2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/clk.h>
#include <linux/io.h>
diff --git a/drivers/clk/imx/clk.c b/drivers/clk/imx/clk.c
index a634b1185be3..9074e6974b6d 100644
--- a/drivers/clk/imx/clk.c
+++ b/drivers/clk/imx/clk.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/clk.h>
#include <linux/err.h>
#include <linux/of.h>
diff --git a/drivers/clk/imx/clk.h b/drivers/clk/imx/clk.h
index d54f0720afba..d69c4bbf3597 100644
--- a/drivers/clk/imx/clk.h
+++ b/drivers/clk/imx/clk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_IMX_CLK_H
#define __MACH_IMX_CLK_H
diff --git a/drivers/clk/ingenic/cgu.c b/drivers/clk/ingenic/cgu.c
index e8248f9185f7..ab393637f7b0 100644
--- a/drivers/clk/ingenic/cgu.c
+++ b/drivers/clk/ingenic/cgu.c
@@ -2,7 +2,7 @@
* Ingenic SoC CGU driver
*
* Copyright (c) 2013-2015 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
diff --git a/drivers/clk/ingenic/cgu.h b/drivers/clk/ingenic/cgu.h
index 09700b2c555d..e78b586536ea 100644
--- a/drivers/clk/ingenic/cgu.h
+++ b/drivers/clk/ingenic/cgu.h
@@ -2,7 +2,7 @@
* Ingenic SoC CGU driver
*
* Copyright (c) 2013-2015 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
diff --git a/drivers/clk/ingenic/jz4740-cgu.c b/drivers/clk/ingenic/jz4740-cgu.c
index 510fe7e0c8f1..32fcc75f6f77 100644
--- a/drivers/clk/ingenic/jz4740-cgu.c
+++ b/drivers/clk/ingenic/jz4740-cgu.c
@@ -2,7 +2,7 @@
* Ingenic JZ4740 SoC CGU driver
*
* Copyright (c) 2015 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
diff --git a/drivers/clk/ingenic/jz4780-cgu.c b/drivers/clk/ingenic/jz4780-cgu.c
index b35d6d9dd5aa..ac3585ed8228 100644
--- a/drivers/clk/ingenic/jz4780-cgu.c
+++ b/drivers/clk/ingenic/jz4780-cgu.c
@@ -2,7 +2,7 @@
* Ingenic JZ4780 SoC CGU driver
*
* Copyright (c) 2013-2015 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
diff --git a/drivers/clk/mediatek/Makefile b/drivers/clk/mediatek/Makefile
index 2a755b5fb51b..ba2a070765f0 100644
--- a/drivers/clk/mediatek/Makefile
+++ b/drivers/clk/mediatek/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_COMMON_CLK_MEDIATEK) += clk-mtk.o clk-pll.o clk-gate.o clk-apmixed.o clk-cpumux.o
obj-$(CONFIG_RESET_CONTROLLER) += reset.o
obj-$(CONFIG_COMMON_CLK_MT6797) += clk-mt6797.o
diff --git a/drivers/clk/mmp/Makefile b/drivers/clk/mmp/Makefile
index 9d4bc41e4239..7bc7ac69391e 100644
--- a/drivers/clk/mmp/Makefile
+++ b/drivers/clk/mmp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for mmp specific clk
#
diff --git a/drivers/clk/mmp/clk.c b/drivers/clk/mmp/clk.c
index 089927e4cda2..ad8d483a35cd 100644
--- a/drivers/clk/mmp/clk.c
+++ b/drivers/clk/mmp/clk.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/io.h>
#include <linux/clk-provider.h>
#include <linux/slab.h>
diff --git a/drivers/clk/mmp/clk.h b/drivers/clk/mmp/clk.h
index adf9b711b037..70bb73257647 100644
--- a/drivers/clk/mmp/clk.h
+++ b/drivers/clk/mmp/clk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_MMP_CLK_H
#define __MACH_MMP_CLK_H
diff --git a/drivers/clk/mmp/reset.c b/drivers/clk/mmp/reset.c
index b4e4d6aa2631..ded7e391c737 100644
--- a/drivers/clk/mmp/reset.c
+++ b/drivers/clk/mmp/reset.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/slab.h>
#include <linux/io.h>
#include <linux/of.h>
diff --git a/drivers/clk/mmp/reset.h b/drivers/clk/mmp/reset.h
index be8b1a7000f7..3d0470ca3fd9 100644
--- a/drivers/clk/mmp/reset.h
+++ b/drivers/clk/mmp/reset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_MMP_CLK_RESET_H
#define __MACH_MMP_CLK_RESET_H
diff --git a/drivers/clk/mvebu/Makefile b/drivers/clk/mvebu/Makefile
index d71c7fd5da16..93ac3685271f 100644
--- a/drivers/clk/mvebu/Makefile
+++ b/drivers/clk/mvebu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MVEBU_CLK_COMMON) += common.o
obj-$(CONFIG_MVEBU_CLK_CPU) += clk-cpu.o
obj-$(CONFIG_MVEBU_CLK_COREDIV) += clk-corediv.o
diff --git a/drivers/clk/mvebu/dove-divider.c b/drivers/clk/mvebu/dove-divider.c
index 4091f3cfee19..7e35c891e168 100644
--- a/drivers/clk/mvebu/dove-divider.c
+++ b/drivers/clk/mvebu/dove-divider.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Marvell Dove PMU Core PLL divider driver
*
diff --git a/drivers/clk/mvebu/dove-divider.h b/drivers/clk/mvebu/dove-divider.h
index 4f2f718deb8e..38ea373088ca 100644
--- a/drivers/clk/mvebu/dove-divider.h
+++ b/drivers/clk/mvebu/dove-divider.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DOVE_DIVIDER_H
#define DOVE_DIVIDER_H
diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
index 3f3aff229fb7..26410d31446b 100644
--- a/drivers/clk/qcom/Makefile
+++ b/drivers/clk/qcom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_COMMON_CLK_QCOM) += clk-qcom.o
clk-qcom-y += common.o
diff --git a/drivers/clk/renesas/Makefile b/drivers/clk/renesas/Makefile
index 9bda3ec5b199..cbbb081e2145 100644
--- a/drivers/clk/renesas/Makefile
+++ b/drivers/clk/renesas/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# SoC
obj-$(CONFIG_CLK_EMEV2) += clk-emev2.o
obj-$(CONFIG_CLK_RZA1) += clk-rz.o
diff --git a/drivers/clk/renesas/clk-div6.h b/drivers/clk/renesas/clk-div6.h
index 567b31d2bfa5..065dfb49adf6 100644
--- a/drivers/clk/renesas/clk-div6.h
+++ b/drivers/clk/renesas/clk-div6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RENESAS_CLK_DIV6_H__
#define __RENESAS_CLK_DIV6_H__
diff --git a/drivers/clk/rockchip/Makefile b/drivers/clk/rockchip/Makefile
index 6f19826cc447..59b8d320960a 100644
--- a/drivers/clk/rockchip/Makefile
+++ b/drivers/clk/rockchip/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Rockchip Clock specific Makefile
#
diff --git a/drivers/clk/rockchip/clk-rk3128.c b/drivers/clk/rockchip/clk-rk3128.c
index 62d7854e4b87..5970a50671b9 100644
--- a/drivers/clk/rockchip/clk-rk3128.c
+++ b/drivers/clk/rockchip/clk-rk3128.c
@@ -315,13 +315,13 @@ static struct rockchip_clk_branch common_clk_branches[] __initdata = {
RK2928_CLKGATE_CON(10), 8, GFLAGS),
GATE(SCLK_PVTM_CORE, "clk_pvtm_core", "xin24m", 0,
- RK2928_CLKGATE_CON(10), 8, GFLAGS),
+ RK2928_CLKGATE_CON(10), 0, GFLAGS),
GATE(SCLK_PVTM_GPU, "clk_pvtm_gpu", "xin24m", 0,
- RK2928_CLKGATE_CON(10), 8, GFLAGS),
+ RK2928_CLKGATE_CON(10), 1, GFLAGS),
GATE(SCLK_PVTM_FUNC, "clk_pvtm_func", "xin24m", 0,
- RK2928_CLKGATE_CON(10), 8, GFLAGS),
+ RK2928_CLKGATE_CON(10), 2, GFLAGS),
GATE(SCLK_MIPI_24M, "clk_mipi_24m", "xin24m", CLK_IGNORE_UNUSED,
- RK2928_CLKGATE_CON(10), 8, GFLAGS),
+ RK2928_CLKGATE_CON(2), 15, GFLAGS),
COMPOSITE(SCLK_SDMMC, "sclk_sdmmc0", mux_mmc_src_p, 0,
RK2928_CLKSEL_CON(11), 6, 2, MFLAGS, 0, 6, DFLAGS,
@@ -541,7 +541,7 @@ static struct rockchip_clk_branch common_clk_branches[] __initdata = {
GATE(0, "pclk_grf", "pclk_cpu", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(5), 4, GFLAGS),
GATE(0, "pclk_mipiphy", "pclk_cpu", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(5), 0, GFLAGS),
- GATE(0, "pclk_pmu", "pclk_pmu_pre", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(9), 2, GFLAGS),
+ GATE(0, "pclk_pmu", "pclk_pmu_pre", 0, RK2928_CLKGATE_CON(9), 2, GFLAGS),
GATE(0, "pclk_pmu_niu", "pclk_pmu_pre", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(9), 3, GFLAGS),
/* PD_MMC */
@@ -577,6 +577,8 @@ static const char *const rk3128_critical_clocks[] __initconst = {
"aclk_peri",
"hclk_peri",
"pclk_peri",
+ "pclk_pmu",
+ "sclk_timer5",
};
static struct rockchip_clk_provider *__init rk3128_common_clk_init(struct device_node *np)
diff --git a/drivers/clk/samsung/Makefile b/drivers/clk/samsung/Makefile
index 7afc21dc374e..23835001e8bd 100644
--- a/drivers/clk/samsung/Makefile
+++ b/drivers/clk/samsung/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Samsung Clock specific Makefile
#
diff --git a/drivers/clk/samsung/clk-exynos4.c b/drivers/clk/samsung/clk-exynos4.c
index e40b77583c47..d8d3cb67b402 100644
--- a/drivers/clk/samsung/clk-exynos4.c
+++ b/drivers/clk/samsung/clk-exynos4.c
@@ -294,6 +294,18 @@ static const struct samsung_clk_reg_dump src_mask_suspend_e4210[] = {
#define PLL_ENABLED (1 << 31)
#define PLL_LOCKED (1 << 29)
+static void exynos4_clk_enable_pll(u32 reg)
+{
+ u32 pll_con = readl(reg_base + reg);
+ pll_con |= PLL_ENABLED;
+ writel(pll_con, reg_base + reg);
+
+ while (!(pll_con & PLL_LOCKED)) {
+ cpu_relax();
+ pll_con = readl(reg_base + reg);
+ }
+}
+
static void exynos4_clk_wait_for_pll(u32 reg)
{
u32 pll_con;
@@ -315,6 +327,9 @@ static int exynos4_clk_suspend(void)
samsung_clk_save(reg_base, exynos4_save_pll,
ARRAY_SIZE(exynos4_clk_pll_regs));
+ exynos4_clk_enable_pll(EPLL_CON0);
+ exynos4_clk_enable_pll(VPLL_CON0);
+
if (exynos4_soc == EXYNOS4210) {
samsung_clk_save(reg_base, exynos4_save_soc,
ARRAY_SIZE(exynos4210_clk_save));
diff --git a/drivers/clk/sirf/atlas6.h b/drivers/clk/sirf/atlas6.h
index 376217f3bf8f..cb871e30a175 100644
--- a/drivers/clk/sirf/atlas6.h
+++ b/drivers/clk/sirf/atlas6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define SIRFSOC_CLKC_CLK_EN0 0x0000
#define SIRFSOC_CLKC_CLK_EN1 0x0004
#define SIRFSOC_CLKC_REF_CFG 0x0020
diff --git a/drivers/clk/sirf/prima2.h b/drivers/clk/sirf/prima2.h
index 01bc3854a058..2fb56941795d 100644
--- a/drivers/clk/sirf/prima2.h
+++ b/drivers/clk/sirf/prima2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define SIRFSOC_CLKC_CLK_EN0 0x0000
#define SIRFSOC_CLKC_CLK_EN1 0x0004
#define SIRFSOC_CLKC_REF_CFG 0x0014
diff --git a/drivers/clk/socfpga/Makefile b/drivers/clk/socfpga/Makefile
index d8bb239753a4..9146c20fe21f 100644
--- a/drivers/clk/socfpga/Makefile
+++ b/drivers/clk/socfpga/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += clk.o
obj-y += clk-gate.o
obj-y += clk-pll.o
diff --git a/drivers/clk/spear/Makefile b/drivers/clk/spear/Makefile
index cdb425d3b8ee..d7e75d2d42df 100644
--- a/drivers/clk/spear/Makefile
+++ b/drivers/clk/spear/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# SPEAr Clock specific Makefile
#
diff --git a/drivers/clk/st/clkgen.h b/drivers/clk/st/clkgen.h
index f7ec2d9139d6..44302fc7ca96 100644
--- a/drivers/clk/st/clkgen.h
+++ b/drivers/clk/st/clkgen.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/************************************************************************
File : Clock H/w specific Information
diff --git a/drivers/clk/sunxi-ng/Makefile b/drivers/clk/sunxi-ng/Makefile
index 85a0633c1eac..d1c2fa93ddd9 100644
--- a/drivers/clk/sunxi-ng/Makefile
+++ b/drivers/clk/sunxi-ng/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Common objects
lib-$(CONFIG_SUNXI_CCU) += ccu_common.o
lib-$(CONFIG_SUNXI_CCU) += ccu_mmc_timing.o
diff --git a/drivers/clk/sunxi-ng/ccu_mult.h b/drivers/clk/sunxi-ng/ccu_mult.h
index f9c37b987d72..6b30b0c10807 100644
--- a/drivers/clk/sunxi-ng/ccu_mult.h
+++ b/drivers/clk/sunxi-ng/ccu_mult.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CCU_MULT_H_
#define _CCU_MULT_H_
diff --git a/drivers/clk/sunxi-ng/ccu_mux.h b/drivers/clk/sunxi-ng/ccu_mux.h
index f20c0bd62a47..f165395effb5 100644
--- a/drivers/clk/sunxi-ng/ccu_mux.h
+++ b/drivers/clk/sunxi-ng/ccu_mux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CCU_MUX_H_
#define _CCU_MUX_H_
diff --git a/drivers/clk/sunxi/Makefile b/drivers/clk/sunxi/Makefile
index 39d2044a1f49..be88368b48a1 100644
--- a/drivers/clk/sunxi/Makefile
+++ b/drivers/clk/sunxi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for sunxi specific clk
#
diff --git a/drivers/clk/sunxi/clk-factors.h b/drivers/clk/sunxi/clk-factors.h
index 1e63c5b2d5f4..824f746b2567 100644
--- a/drivers/clk/sunxi/clk-factors.h
+++ b/drivers/clk/sunxi/clk-factors.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_SUNXI_CLK_FACTORS_H
#define __MACH_SUNXI_CLK_FACTORS_H
diff --git a/drivers/clk/sunxi/clk-sun9i-cpus.c b/drivers/clk/sunxi/clk-sun9i-cpus.c
index 7626d2194b96..4d5e14142e15 100644
--- a/drivers/clk/sunxi/clk-sun9i-cpus.c
+++ b/drivers/clk/sunxi/clk-sun9i-cpus.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2015 Chen-Yu Tsai
*
diff --git a/drivers/clk/tegra/Makefile b/drivers/clk/tegra/Makefile
index 4be8af28ee61..b71692391bd6 100644
--- a/drivers/clk/tegra/Makefile
+++ b/drivers/clk/tegra/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += clk.o
obj-y += clk-audio-sync.o
obj-y += clk-dfll.o
diff --git a/drivers/clk/tegra/clk-id.h b/drivers/clk/tegra/clk-id.h
index 689f344377a7..11ee5f9ce99e 100644
--- a/drivers/clk/tegra/clk-id.h
+++ b/drivers/clk/tegra/clk-id.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides IDs for clocks common between several Tegra SoCs
*/
diff --git a/drivers/clk/ti/Makefile b/drivers/clk/ti/Makefile
index edb9f471e525..a2293ee09440 100644
--- a/drivers/clk/ti/Makefile
+++ b/drivers/clk/ti/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ifeq ($(CONFIG_ARCH_OMAP2PLUS), y)
obj-y += clk.o autoidle.o clockdomain.o
diff --git a/drivers/clk/uniphier/Makefile b/drivers/clk/uniphier/Makefile
index 665d1d65a90e..e5715abef180 100644
--- a/drivers/clk/uniphier/Makefile
+++ b/drivers/clk/uniphier/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += clk-uniphier-core.o
obj-y += clk-uniphier-cpugear.o
diff --git a/drivers/clk/ux500/Makefile b/drivers/clk/ux500/Makefile
index f3baef29859c..fedc083dc8be 100644
--- a/drivers/clk/ux500/Makefile
+++ b/drivers/clk/ux500/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for ux500 clocks
#
diff --git a/drivers/clk/versatile/clk-icst.h b/drivers/clk/versatile/clk-icst.h
index 5add02ebec5d..e36ca1a20e90 100644
--- a/drivers/clk/versatile/clk-icst.h
+++ b/drivers/clk/versatile/clk-icst.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/**
* struct clk_icst_desc - descriptor for the ICST VCO
* @params: ICST parameters
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index dbc1ad14515e..72711f1491e3 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_TIMER_OF) += timer-of.o
obj-$(CONFIG_TIMER_PROBE) += timer-probe.o
obj-$(CONFIG_ATMEL_PIT) += timer-atmel-pit.o
diff --git a/drivers/clocksource/cs5535-clockevt.c b/drivers/clocksource/cs5535-clockevt.c
index a1df588343f2..1de8cac99a0e 100644
--- a/drivers/clocksource/cs5535-clockevt.c
+++ b/drivers/clocksource/cs5535-clockevt.c
@@ -117,7 +117,8 @@ static irqreturn_t mfgpt_tick(int irq, void *dev_id)
/* Turn off the clock (and clear the event) */
disable_timer(cs5535_event_clock);
- if (clockevent_state_shutdown(&cs5535_clockevent))
+ if (clockevent_state_detached(&cs5535_clockevent) ||
+ clockevent_state_shutdown(&cs5535_clockevent))
return IRQ_HANDLED;
/* Clear the counter */
diff --git a/drivers/clocksource/h8300_timer16.c b/drivers/clocksource/h8300_timer16.c
index dfbd4f8051cb..86ca91451b2e 100644
--- a/drivers/clocksource/h8300_timer16.c
+++ b/drivers/clocksource/h8300_timer16.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* H8/300 16bit Timer driver
*
diff --git a/drivers/clocksource/h8300_timer8.c b/drivers/clocksource/h8300_timer8.c
index f6ffb0cef091..1d740a8c42ab 100644
--- a/drivers/clocksource/h8300_timer8.c
+++ b/drivers/clocksource/h8300_timer8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/h8300/kernel/cpu/timer/timer8.c
*
diff --git a/drivers/clocksource/h8300_tpu.c b/drivers/clocksource/h8300_tpu.c
index 45a8d17dac1e..17d4ab0f6ad1 100644
--- a/drivers/clocksource/h8300_tpu.c
+++ b/drivers/clocksource/h8300_tpu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* H8S TPU Driver
*
diff --git a/drivers/clocksource/i8253.c b/drivers/clocksource/i8253.c
index 64f6490740d7..9c38895542f4 100644
--- a/drivers/clocksource/i8253.c
+++ b/drivers/clocksource/i8253.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* i8253 PIT clocksource
*/
diff --git a/drivers/clocksource/mips-gic-timer.c b/drivers/clocksource/mips-gic-timer.c
index 17b861ea2626..ae3167c28b12 100644
--- a/drivers/clocksource/mips-gic-timer.c
+++ b/drivers/clocksource/mips-gic-timer.c
@@ -10,25 +10,45 @@
#include <linux/cpu.h>
#include <linux/init.h>
#include <linux/interrupt.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/notifier.h>
#include <linux/of_irq.h>
#include <linux/percpu.h>
#include <linux/smp.h>
#include <linux/time.h>
+#include <asm/mips-cps.h>
static DEFINE_PER_CPU(struct clock_event_device, gic_clockevent_device);
static int gic_timer_irq;
static unsigned int gic_frequency;
+static u64 notrace gic_read_count(void)
+{
+ unsigned int hi, hi2, lo;
+
+ if (mips_cm_is64)
+ return read_gic_counter();
+
+ do {
+ hi = read_gic_counter_32h();
+ lo = read_gic_counter_32l();
+ hi2 = read_gic_counter_32h();
+ } while (hi2 != hi);
+
+ return (((u64) hi) << 32) + lo;
+}
+
static int gic_next_event(unsigned long delta, struct clock_event_device *evt)
{
+ unsigned long flags;
u64 cnt;
int res;
cnt = gic_read_count();
cnt += (u64)delta;
- gic_write_cpu_compare(cnt, cpumask_first(evt->cpumask));
+ local_irq_save(flags);
+ write_gic_vl_other(mips_cm_vp_id(cpumask_first(evt->cpumask)));
+ write_gic_vo_compare(cnt);
+ local_irq_restore(flags);
res = ((int)(gic_read_count() - cnt) >= 0) ? -ETIME : 0;
return res;
}
@@ -37,7 +57,7 @@ static irqreturn_t gic_compare_interrupt(int irq, void *dev_id)
{
struct clock_event_device *cd = dev_id;
- gic_write_compare(gic_read_compare());
+ write_gic_vl_compare(read_gic_vl_compare());
cd->event_handler(cd);
return IRQ_HANDLED;
}
@@ -139,10 +159,15 @@ static struct clocksource gic_clocksource = {
static int __init __gic_clocksource_init(void)
{
+ unsigned int count_width;
int ret;
/* Set clocksource mask. */
- gic_clocksource.mask = CLOCKSOURCE_MASK(gic_get_count_width());
+ count_width = read_gic_config() & GIC_CONFIG_COUNTBITS;
+ count_width >>= __fls(GIC_CONFIG_COUNTBITS);
+ count_width *= 4;
+ count_width += 32;
+ gic_clocksource.mask = CLOCKSOURCE_MASK(count_width);
/* Calculate a somewhat reasonable rating value. */
gic_clocksource.rating = 200 + gic_frequency / 10000000;
@@ -159,7 +184,7 @@ static int __init gic_clocksource_of_init(struct device_node *node)
struct clk *clk;
int ret;
- if (!gic_present || !node->parent ||
+ if (!mips_gic_present() || !node->parent ||
!of_device_is_compatible(node->parent, "mti,gic")) {
pr_warn("No DT definition for the mips gic driver\n");
return -ENXIO;
@@ -197,7 +222,7 @@ static int __init gic_clocksource_of_init(struct device_node *node)
}
/* And finally start the counter */
- gic_start_count();
+ clear_gic_config(GIC_CONFIG_COUNTSTOP);
return 0;
}
diff --git a/drivers/clocksource/numachip.c b/drivers/clocksource/numachip.c
index 6a20dc8b253f..9a7d7f0f23fe 100644
--- a/drivers/clocksource/numachip.c
+++ b/drivers/clocksource/numachip.c
@@ -43,7 +43,7 @@ static int numachip2_set_next_event(unsigned long delta, struct clock_event_devi
return 0;
}
-static struct clock_event_device numachip2_clockevent = {
+static const struct clock_event_device numachip2_clockevent __initconst = {
.name = "numachip2",
.rating = 400,
.set_next_event = numachip2_set_next_event,
diff --git a/drivers/clocksource/tango_xtal.c b/drivers/clocksource/tango_xtal.c
index 6a8d9838ce33..3f94e454ef99 100644
--- a/drivers/clocksource/tango_xtal.c
+++ b/drivers/clocksource/tango_xtal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/clocksource.h>
#include <linux/sched_clock.h>
#include <linux/of_address.h>
diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c
index 59e8aee0ec16..9de47d4d2d9e 100644
--- a/drivers/clocksource/tcb_clksrc.c
+++ b/drivers/clocksource/tcb_clksrc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/clocksource.h>
#include <linux/clockchips.h>
diff --git a/drivers/clocksource/timer-fttmr010.c b/drivers/clocksource/timer-fttmr010.c
index 66dd909960c6..cdf23b628688 100644
--- a/drivers/clocksource/timer-fttmr010.c
+++ b/drivers/clocksource/timer-fttmr010.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Faraday Technology FTTMR010 timer driver
* Copyright (C) 2017 Linus Walleij <linus.walleij@linaro.org>
diff --git a/drivers/clocksource/timer-integrator-ap.c b/drivers/clocksource/timer-integrator-ap.c
index 2ff64d9d4fb3..62d24690ba02 100644
--- a/drivers/clocksource/timer-integrator-ap.c
+++ b/drivers/clocksource/timer-integrator-ap.c
@@ -36,8 +36,8 @@ static u64 notrace integrator_read_sched_clock(void)
return -readl(sched_clk_base + TIMER_VALUE);
}
-static int integrator_clocksource_init(unsigned long inrate,
- void __iomem *base)
+static int __init integrator_clocksource_init(unsigned long inrate,
+ void __iomem *base)
{
u32 ctrl = TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC;
unsigned long rate = inrate;
diff --git a/drivers/clocksource/timer-of.h b/drivers/clocksource/timer-of.h
index e0d727255f72..c6d995ab93d5 100644
--- a/drivers/clocksource/timer-of.h
+++ b/drivers/clocksource/timer-of.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __TIMER_OF_H__
#define __TIMER_OF_H__
diff --git a/drivers/clocksource/timer-sp.h b/drivers/clocksource/timer-sp.h
index 050d88561e9c..b2037eb94a41 100644
--- a/drivers/clocksource/timer-sp.h
+++ b/drivers/clocksource/timer-sp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ARM timer implementation, found in Integrator, Versatile and Realview
* platforms. Not all platforms support all registers and bits in these
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
index c7af9b2a255e..812f9e0d01a3 100644
--- a/drivers/cpufreq/Makefile
+++ b/drivers/cpufreq/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# CPUfreq core
obj-$(CONFIG_CPU_FREQ) += cpufreq.o freq_table.o
diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c
index a020da7940d6..a753c50e9e41 100644
--- a/drivers/cpufreq/cpufreq-dt-platdev.c
+++ b/drivers/cpufreq/cpufreq-dt-platdev.c
@@ -106,6 +106,22 @@ static const struct of_device_id whitelist[] __initconst = {
* platforms using "operating-points-v2" property.
*/
static const struct of_device_id blacklist[] __initconst = {
+ { .compatible = "calxeda,highbank", },
+ { .compatible = "calxeda,ecx-2000", },
+
+ { .compatible = "marvell,armadaxp", },
+
+ { .compatible = "nvidia,tegra124", },
+
+ { .compatible = "st,stih407", },
+ { .compatible = "st,stih410", },
+
+ { .compatible = "sigma,tango4", },
+
+ { .compatible = "ti,am33xx", },
+ { .compatible = "ti,am43", },
+ { .compatible = "ti,dra7", },
+
{ }
};
diff --git a/drivers/cpufreq/cris-artpec3-cpufreq.c b/drivers/cpufreq/cris-artpec3-cpufreq.c
index 601b88c490cf..455b4fb78cba 100644
--- a/drivers/cpufreq/cris-artpec3-cpufreq.c
+++ b/drivers/cpufreq/cris-artpec3-cpufreq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/module.h>
#include <linux/cpufreq.h>
diff --git a/drivers/cpufreq/cris-etraxfs-cpufreq.c b/drivers/cpufreq/cris-etraxfs-cpufreq.c
index 22b2cdde74d9..4c4b5dd685e3 100644
--- a/drivers/cpufreq/cris-etraxfs-cpufreq.c
+++ b/drivers/cpufreq/cris-etraxfs-cpufreq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/module.h>
#include <linux/cpufreq.h>
diff --git a/drivers/cpufreq/powernow-k7.c b/drivers/cpufreq/powernow-k7.c
index 9f013ed42977..80ac313e6c59 100644
--- a/drivers/cpufreq/powernow-k7.c
+++ b/drivers/cpufreq/powernow-k7.c
@@ -578,7 +578,7 @@ static int acer_cpufreq_pst(const struct dmi_system_id *d)
* A BIOS update is all that can save them.
* Mention this, and disable cpufreq.
*/
-static struct dmi_system_id powernow_dmi_table[] = {
+static const struct dmi_system_id powernow_dmi_table[] = {
{
.callback = acer_cpufreq_pst,
.ident = "Acer Aspire",
diff --git a/drivers/cpufreq/ppc_cbe_cpufreq.h b/drivers/cpufreq/ppc_cbe_cpufreq.h
index 3eace725ccd6..9d973519d669 100644
--- a/drivers/cpufreq/ppc_cbe_cpufreq.h
+++ b/drivers/cpufreq/ppc_cbe_cpufreq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ppc_cbe_cpufreq.h
*
diff --git a/drivers/cpufreq/ti-cpufreq.c b/drivers/cpufreq/ti-cpufreq.c
index b29cd3398463..4bf47de6101f 100644
--- a/drivers/cpufreq/ti-cpufreq.c
+++ b/drivers/cpufreq/ti-cpufreq.c
@@ -190,7 +190,7 @@ static int ti_cpufreq_setup_syscon_register(struct ti_cpufreq_data *opp_data)
static const struct of_device_id ti_cpufreq_of_match[] = {
{ .compatible = "ti,am33xx", .data = &am3x_soc_data, },
- { .compatible = "ti,am4372", .data = &am4x_soc_data, },
+ { .compatible = "ti,am43", .data = &am4x_soc_data, },
{ .compatible = "ti,dra7", .data = &dra7_soc_data },
{},
};
diff --git a/drivers/cpuidle/Makefile b/drivers/cpuidle/Makefile
index 0b67a05a7aae..9d7176cee3d3 100644
--- a/drivers/cpuidle/Makefile
+++ b/drivers/cpuidle/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for cpuidle.
#
diff --git a/drivers/cpuidle/cpuidle-arm.c b/drivers/cpuidle/cpuidle-arm.c
index 7080c384ad5d..52a75053ee03 100644
--- a/drivers/cpuidle/cpuidle-arm.c
+++ b/drivers/cpuidle/cpuidle-arm.c
@@ -104,13 +104,13 @@ static int __init arm_idle_init(void)
ret = dt_init_idle_driver(drv, arm_idle_state_match, 1);
if (ret <= 0) {
ret = ret ? : -ENODEV;
- goto out_fail;
+ goto init_fail;
}
ret = cpuidle_register_driver(drv);
if (ret) {
pr_err("Failed to register cpuidle driver\n");
- goto out_fail;
+ goto init_fail;
}
/*
@@ -149,6 +149,8 @@ static int __init arm_idle_init(void)
}
return 0;
+init_fail:
+ kfree(drv);
out_fail:
while (--cpu >= 0) {
dev = per_cpu(cpuidle_devices, cpu);
diff --git a/drivers/cpuidle/cpuidle-cps.c b/drivers/cpuidle/cpuidle-cps.c
index 12b9145913de..dac8ff6391fa 100644
--- a/drivers/cpuidle/cpuidle-cps.c
+++ b/drivers/cpuidle/cpuidle-cps.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2014 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -37,7 +37,7 @@ static int cps_nc_enter(struct cpuidle_device *dev,
* TODO: don't treat core 0 specially, just prevent the final core
* TODO: remap interrupt affinity temporarily
*/
- if (!cpu_data[dev->cpu].core && (index > STATE_NC_WAIT))
+ if (cpus_are_siblings(0, dev->cpu) && (index > STATE_NC_WAIT))
index = STATE_NC_WAIT;
/* Select the appropriate cps_pm_state */
diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c
index 42896a67aeae..ed6531f075c6 100644
--- a/drivers/cpuidle/cpuidle-powernv.c
+++ b/drivers/cpuidle/cpuidle-powernv.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* cpuidle-powernv - idle state cpuidle driver.
* Adapted from drivers/cpuidle/cpuidle-pseries
diff --git a/drivers/cpuidle/cpuidle-pseries.c b/drivers/cpuidle/cpuidle-pseries.c
index e9b3853d93ea..a187a39fb866 100644
--- a/drivers/cpuidle/cpuidle-pseries.c
+++ b/drivers/cpuidle/cpuidle-pseries.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* cpuidle-pseries - idle state cpuidle driver.
* Adapted from drivers/idle/intel_idle.c and
diff --git a/drivers/cpuidle/cpuidle.h b/drivers/cpuidle/cpuidle.h
index f87f399b0540..2965ab32a583 100644
--- a/drivers/cpuidle/cpuidle.h
+++ b/drivers/cpuidle/cpuidle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* cpuidle.h - The internal header file
*/
diff --git a/drivers/cpuidle/dt_idle_states.h b/drivers/cpuidle/dt_idle_states.h
index 4818134bc65b..14ae88cef1de 100644
--- a/drivers/cpuidle/dt_idle_states.h
+++ b/drivers/cpuidle/dt_idle_states.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_IDLE_STATES
#define __DT_IDLE_STATES
diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile
index 808432b44c6b..c00708d04be6 100644
--- a/drivers/crypto/Makefile
+++ b/drivers/crypto/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CRYPTO_DEV_ATMEL_AES) += atmel-aes.o
obj-$(CONFIG_CRYPTO_DEV_ATMEL_SHA) += atmel-sha.o
obj-$(CONFIG_CRYPTO_DEV_ATMEL_TDES) += atmel-tdes.o
diff --git a/drivers/crypto/atmel-aes-regs.h b/drivers/crypto/atmel-aes-regs.h
index 7694679802b3..62f9d3038757 100644
--- a/drivers/crypto/atmel-aes-regs.h
+++ b/drivers/crypto/atmel-aes-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ATMEL_AES_REGS_H__
#define __ATMEL_AES_REGS_H__
diff --git a/drivers/crypto/atmel-sha-regs.h b/drivers/crypto/atmel-sha-regs.h
index 1b0eba4a2706..b2b5e634e80f 100644
--- a/drivers/crypto/atmel-sha-regs.h
+++ b/drivers/crypto/atmel-sha-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ATMEL_SHA_REGS_H__
#define __ATMEL_SHA_REGS_H__
diff --git a/drivers/crypto/atmel-tdes-regs.h b/drivers/crypto/atmel-tdes-regs.h
index f86734d0fda4..fbd905720dfa 100644
--- a/drivers/crypto/atmel-tdes-regs.h
+++ b/drivers/crypto/atmel-tdes-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ATMEL_TDES_REGS_H__
#define __ATMEL_TDES_REGS_H__
diff --git a/drivers/crypto/axis/artpec6_crypto.c b/drivers/crypto/axis/artpec6_crypto.c
index d9fbbf01062b..0f9754e07719 100644
--- a/drivers/crypto/axis/artpec6_crypto.c
+++ b/drivers/crypto/axis/artpec6_crypto.c
@@ -349,8 +349,6 @@ struct artpec6_crypto_aead_req_ctx {
/* The crypto framework makes it hard to avoid this global. */
static struct device *artpec6_crypto_dev;
-static struct dentry *dbgfs_root;
-
#ifdef CONFIG_FAULT_INJECTION
static DECLARE_FAULT_ATTR(artpec6_crypto_fail_status_read);
static DECLARE_FAULT_ATTR(artpec6_crypto_fail_dma_array_full);
@@ -2984,6 +2982,8 @@ struct dbgfs_u32 {
char *desc;
};
+static struct dentry *dbgfs_root;
+
static void artpec6_crypto_init_debugfs(void)
{
dbgfs_root = debugfs_create_dir("artpec6_crypto", NULL);
diff --git a/drivers/crypto/caam/Kconfig b/drivers/crypto/caam/Kconfig
index e36aeacd7635..1eb852765469 100644
--- a/drivers/crypto/caam/Kconfig
+++ b/drivers/crypto/caam/Kconfig
@@ -1,6 +1,7 @@
config CRYPTO_DEV_FSL_CAAM
tristate "Freescale CAAM-Multicore driver backend"
depends on FSL_SOC || ARCH_MXC || ARCH_LAYERSCAPE
+ select SOC_BUS
help
Enables the driver module for Freescale's Cryptographic Accelerator
and Assurance Module (CAAM), also known as the SEC version 4 (SEC4).
@@ -141,10 +142,6 @@ config CRYPTO_DEV_FSL_CAAM_RNG_API
To compile this as a module, choose M here: the module
will be called caamrng.
-config CRYPTO_DEV_FSL_CAAM_IMX
- def_bool SOC_IMX6 || SOC_IMX7D
- depends on CRYPTO_DEV_FSL_CAAM
-
config CRYPTO_DEV_FSL_CAAM_DEBUG
bool "Enable debug output in CAAM driver"
depends on CRYPTO_DEV_FSL_CAAM
diff --git a/drivers/crypto/caam/Makefile b/drivers/crypto/caam/Makefile
index 9e2e98856b9b..cb652ee7dfc8 100644
--- a/drivers/crypto/caam/Makefile
+++ b/drivers/crypto/caam/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the CAAM backend and dependent components
#
diff --git a/drivers/crypto/caam/caamalg_desc.h b/drivers/crypto/caam/caamalg_desc.h
index 8731e4a7ff05..e412ec8f7005 100644
--- a/drivers/crypto/caam/caamalg_desc.h
+++ b/drivers/crypto/caam/caamalg_desc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Shared descriptors for aead, ablkcipher algorithms
*
diff --git a/drivers/crypto/caam/caampkc.h b/drivers/crypto/caam/caampkc.h
index 87ab75e9df43..fd145c46eae1 100644
--- a/drivers/crypto/caam/caampkc.h
+++ b/drivers/crypto/caam/caampkc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* caam - Freescale FSL CAAM support for Public Key Cryptography descriptors
*
diff --git a/drivers/crypto/caam/compat.h b/drivers/crypto/caam/compat.h
index 7149cd2492e0..5f2f1b288d37 100644
--- a/drivers/crypto/caam/compat.h
+++ b/drivers/crypto/caam/compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2008-2011 Freescale Semiconductor, Inc.
*/
diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
index dacb53fb690e..027e121c6f70 100644
--- a/drivers/crypto/caam/ctrl.c
+++ b/drivers/crypto/caam/ctrl.c
@@ -7,6 +7,7 @@
#include <linux/device.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
+#include <linux/sys_soc.h>
#include "compat.h"
#include "regs.h"
@@ -19,6 +20,8 @@ bool caam_little_end;
EXPORT_SYMBOL(caam_little_end);
bool caam_dpaa2;
EXPORT_SYMBOL(caam_dpaa2);
+bool caam_imx;
+EXPORT_SYMBOL(caam_imx);
#ifdef CONFIG_CAAM_QI
#include "qi.h"
@@ -28,19 +31,11 @@ EXPORT_SYMBOL(caam_dpaa2);
* i.MX targets tend to have clock control subsystems that can
* enable/disable clocking to our device.
*/
-#ifdef CONFIG_CRYPTO_DEV_FSL_CAAM_IMX
static inline struct clk *caam_drv_identify_clk(struct device *dev,
char *clk_name)
{
- return devm_clk_get(dev, clk_name);
+ return caam_imx ? devm_clk_get(dev, clk_name) : NULL;
}
-#else
-static inline struct clk *caam_drv_identify_clk(struct device *dev,
- char *clk_name)
-{
- return NULL;
-}
-#endif
/*
* Descriptor to instantiate RNG State Handle 0 in normal mode and
@@ -430,6 +425,10 @@ static int caam_probe(struct platform_device *pdev)
{
int ret, ring, gen_sk, ent_delay = RTSDCTL_ENT_DLY_MIN;
u64 caam_id;
+ static const struct soc_device_attribute imx_soc[] = {
+ {.family = "Freescale i.MX"},
+ {},
+ };
struct device *dev;
struct device_node *nprop, *np;
struct caam_ctrl __iomem *ctrl;
@@ -451,6 +450,8 @@ static int caam_probe(struct platform_device *pdev)
dev_set_drvdata(dev, ctrlpriv);
nprop = pdev->dev.of_node;
+ caam_imx = (bool)soc_device_match(imx_soc);
+
/* Enable clocking */
clk = caam_drv_identify_clk(&pdev->dev, "ipg");
if (IS_ERR(clk)) {
diff --git a/drivers/crypto/caam/ctrl.h b/drivers/crypto/caam/ctrl.h
index 7e7bf68c9ef5..be693a2cc25e 100644
--- a/drivers/crypto/caam/ctrl.h
+++ b/drivers/crypto/caam/ctrl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CAAM control-plane driver backend public-level include definitions
*
diff --git a/drivers/crypto/caam/desc.h b/drivers/crypto/caam/desc.h
index 2e6766a1573f..6633fbb80e74 100644
--- a/drivers/crypto/caam/desc.h
+++ b/drivers/crypto/caam/desc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CAAM descriptor composition header
* Definitions to support CAAM descriptor instruction generation
diff --git a/drivers/crypto/caam/desc_constr.h b/drivers/crypto/caam/desc_constr.h
index d8e83ca104e0..ba1ca0806f0a 100644
--- a/drivers/crypto/caam/desc_constr.h
+++ b/drivers/crypto/caam/desc_constr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* caam descriptor construction helper functions
*
diff --git a/drivers/crypto/caam/error.c b/drivers/crypto/caam/error.c
index 3d639f3b45aa..8da88beb1abb 100644
--- a/drivers/crypto/caam/error.c
+++ b/drivers/crypto/caam/error.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* CAAM Error Reporting
*
diff --git a/drivers/crypto/caam/error.h b/drivers/crypto/caam/error.h
index 250e1a21c473..5aa332bac4b0 100644
--- a/drivers/crypto/caam/error.h
+++ b/drivers/crypto/caam/error.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CAAM Error Reporting code header
*
diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h
index a52361258d3a..91f1107276e5 100644
--- a/drivers/crypto/caam/intern.h
+++ b/drivers/crypto/caam/intern.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CAAM/SEC 4.x driver backend
* Private/internal definitions between modules
diff --git a/drivers/crypto/caam/jr.h b/drivers/crypto/caam/jr.h
index 97113a6d6c58..eab611530f36 100644
--- a/drivers/crypto/caam/jr.h
+++ b/drivers/crypto/caam/jr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CAAM public-level include definitions for the JobR backend
*
diff --git a/drivers/crypto/caam/key_gen.c b/drivers/crypto/caam/key_gen.c
index c425d4adaf2a..8c79c3a153dc 100644
--- a/drivers/crypto/caam/key_gen.c
+++ b/drivers/crypto/caam/key_gen.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* CAAM/SEC 4.x functions for handling key-generation jobs
*
diff --git a/drivers/crypto/caam/key_gen.h b/drivers/crypto/caam/key_gen.h
index 4628f389eb64..5db055c25bd2 100644
--- a/drivers/crypto/caam/key_gen.h
+++ b/drivers/crypto/caam/key_gen.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CAAM/SEC 4.x definitions for handling key-generation jobs
*
diff --git a/drivers/crypto/caam/pdb.h b/drivers/crypto/caam/pdb.h
index 31e59963f4d2..810f0bef0652 100644
--- a/drivers/crypto/caam/pdb.h
+++ b/drivers/crypto/caam/pdb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CAAM Protocol Data Block (PDB) definition header file
*
diff --git a/drivers/crypto/caam/pkc_desc.c b/drivers/crypto/caam/pkc_desc.c
index 9e2ce6fe2e43..2a8d87ea94bf 100644
--- a/drivers/crypto/caam/pkc_desc.c
+++ b/drivers/crypto/caam/pkc_desc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* caam - Freescale FSL CAAM support for Public Key Cryptography descriptors
*
diff --git a/drivers/crypto/caam/qi.c b/drivers/crypto/caam/qi.c
index e4cf00014233..f9a44f485aac 100644
--- a/drivers/crypto/caam/qi.c
+++ b/drivers/crypto/caam/qi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* CAAM/SEC 4.x QI transport/backend driver
* Queue Interface backend functionality
diff --git a/drivers/crypto/caam/qi.h b/drivers/crypto/caam/qi.h
index ecb21f207637..357b69f57072 100644
--- a/drivers/crypto/caam/qi.h
+++ b/drivers/crypto/caam/qi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Public definitions for the CAAM/QI (Queue Interface) backend.
*
diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h
index 2b5efff9ec3c..fee363865d88 100644
--- a/drivers/crypto/caam/regs.h
+++ b/drivers/crypto/caam/regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CAAM hardware register-level view
*
@@ -67,6 +68,7 @@
*/
extern bool caam_little_end;
+extern bool caam_imx;
#define caam_to_cpu(len) \
static inline u##len caam##len ## _to_cpu(u##len val) \
@@ -154,13 +156,10 @@ static inline u64 rd_reg64(void __iomem *reg)
#else /* CONFIG_64BIT */
static inline void wr_reg64(void __iomem *reg, u64 data)
{
-#ifndef CONFIG_CRYPTO_DEV_FSL_CAAM_IMX
- if (caam_little_end) {
+ if (!caam_imx && caam_little_end) {
wr_reg32((u32 __iomem *)(reg) + 1, data >> 32);
wr_reg32((u32 __iomem *)(reg), data);
- } else
-#endif
- {
+ } else {
wr_reg32((u32 __iomem *)(reg), data >> 32);
wr_reg32((u32 __iomem *)(reg) + 1, data);
}
@@ -168,41 +167,40 @@ static inline void wr_reg64(void __iomem *reg, u64 data)
static inline u64 rd_reg64(void __iomem *reg)
{
-#ifndef CONFIG_CRYPTO_DEV_FSL_CAAM_IMX
- if (caam_little_end)
+ if (!caam_imx && caam_little_end)
return ((u64)rd_reg32((u32 __iomem *)(reg) + 1) << 32 |
(u64)rd_reg32((u32 __iomem *)(reg)));
- else
-#endif
- return ((u64)rd_reg32((u32 __iomem *)(reg)) << 32 |
- (u64)rd_reg32((u32 __iomem *)(reg) + 1));
+
+ return ((u64)rd_reg32((u32 __iomem *)(reg)) << 32 |
+ (u64)rd_reg32((u32 __iomem *)(reg) + 1));
}
#endif /* CONFIG_64BIT */
+static inline u64 cpu_to_caam_dma64(dma_addr_t value)
+{
+ if (caam_imx)
+ return (((u64)cpu_to_caam32(lower_32_bits(value)) << 32) |
+ (u64)cpu_to_caam32(upper_32_bits(value)));
+
+ return cpu_to_caam64(value);
+}
+
+static inline u64 caam_dma64_to_cpu(u64 value)
+{
+ if (caam_imx)
+ return (((u64)caam32_to_cpu(lower_32_bits(value)) << 32) |
+ (u64)caam32_to_cpu(upper_32_bits(value)));
+
+ return caam64_to_cpu(value);
+}
+
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
-#ifdef CONFIG_SOC_IMX7D
-#define cpu_to_caam_dma(value) \
- (((u64)cpu_to_caam32(lower_32_bits(value)) << 32) | \
- (u64)cpu_to_caam32(upper_32_bits(value)))
-#define caam_dma_to_cpu(value) \
- (((u64)caam32_to_cpu(lower_32_bits(value)) << 32) | \
- (u64)caam32_to_cpu(upper_32_bits(value)))
-#else
-#define cpu_to_caam_dma(value) cpu_to_caam64(value)
-#define caam_dma_to_cpu(value) caam64_to_cpu(value)
-#endif /* CONFIG_SOC_IMX7D */
+#define cpu_to_caam_dma(value) cpu_to_caam_dma64(value)
+#define caam_dma_to_cpu(value) caam_dma64_to_cpu(value)
#else
#define cpu_to_caam_dma(value) cpu_to_caam32(value)
#define caam_dma_to_cpu(value) caam32_to_cpu(value)
-#endif /* CONFIG_ARCH_DMA_ADDR_T_64BIT */
-
-#ifdef CONFIG_CRYPTO_DEV_FSL_CAAM_IMX
-#define cpu_to_caam_dma64(value) \
- (((u64)cpu_to_caam32(lower_32_bits(value)) << 32) | \
- (u64)cpu_to_caam32(upper_32_bits(value)))
-#else
-#define cpu_to_caam_dma64(value) cpu_to_caam64(value)
-#endif
+#endif /* CONFIG_ARCH_DMA_ADDR_T_64BIT */
/*
* jr_outentry
diff --git a/drivers/crypto/caam/sg_sw_sec4.h b/drivers/crypto/caam/sg_sw_sec4.h
index 936b1b630058..e586ffab8358 100644
--- a/drivers/crypto/caam/sg_sw_sec4.h
+++ b/drivers/crypto/caam/sg_sw_sec4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* CAAM/SEC 4.x functions for using scatterlists in caam driver
*
diff --git a/drivers/crypto/cavium/nitrox/Makefile b/drivers/crypto/cavium/nitrox/Makefile
index 5af2e4368267..45b7379e8e30 100644
--- a/drivers/crypto/cavium/nitrox/Makefile
+++ b/drivers/crypto/cavium/nitrox/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CRYPTO_DEV_NITROX_CNN55XX) += n5pf.o
n5pf-objs := nitrox_main.o \
diff --git a/drivers/crypto/cavium/nitrox/nitrox_algs.c b/drivers/crypto/cavium/nitrox/nitrox_algs.c
index ce330278ef8a..2ae6124e5da6 100644
--- a/drivers/crypto/cavium/nitrox/nitrox_algs.c
+++ b/drivers/crypto/cavium/nitrox/nitrox_algs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/crypto.h>
#include <linux/kernel.h>
#include <linux/module.h>
diff --git a/drivers/crypto/cavium/nitrox/nitrox_common.h b/drivers/crypto/cavium/nitrox/nitrox_common.h
index 4888c7823a5f..312f72801af6 100644
--- a/drivers/crypto/cavium/nitrox/nitrox_common.h
+++ b/drivers/crypto/cavium/nitrox/nitrox_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NITROX_COMMON_H
#define __NITROX_COMMON_H
diff --git a/drivers/crypto/cavium/nitrox/nitrox_csr.h b/drivers/crypto/cavium/nitrox/nitrox_csr.h
index 30b04c4c6076..9dcb7fdbe0a7 100644
--- a/drivers/crypto/cavium/nitrox/nitrox_csr.h
+++ b/drivers/crypto/cavium/nitrox/nitrox_csr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NITROX_CSR_H
#define __NITROX_CSR_H
diff --git a/drivers/crypto/cavium/nitrox/nitrox_dev.h b/drivers/crypto/cavium/nitrox/nitrox_dev.h
index 57858b04f165..9a476bb6d4c7 100644
--- a/drivers/crypto/cavium/nitrox/nitrox_dev.h
+++ b/drivers/crypto/cavium/nitrox/nitrox_dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NITROX_DEV_H
#define __NITROX_DEV_H
diff --git a/drivers/crypto/cavium/nitrox/nitrox_hal.c b/drivers/crypto/cavium/nitrox/nitrox_hal.c
index f0655f82fa7d..bf9900bc4804 100644
--- a/drivers/crypto/cavium/nitrox/nitrox_hal.c
+++ b/drivers/crypto/cavium/nitrox/nitrox_hal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/delay.h>
#include "nitrox_dev.h"
diff --git a/drivers/crypto/cavium/nitrox/nitrox_isr.c b/drivers/crypto/cavium/nitrox/nitrox_isr.c
index 71f934871a89..dbead5f45df3 100644
--- a/drivers/crypto/cavium/nitrox/nitrox_isr.c
+++ b/drivers/crypto/cavium/nitrox/nitrox_isr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/pci.h>
#include <linux/printk.h>
#include <linux/slab.h>
diff --git a/drivers/crypto/cavium/nitrox/nitrox_lib.c b/drivers/crypto/cavium/nitrox/nitrox_lib.c
index b4a391adb9b6..4fdc921ba611 100644
--- a/drivers/crypto/cavium/nitrox/nitrox_lib.c
+++ b/drivers/crypto/cavium/nitrox/nitrox_lib.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/cpumask.h>
#include <linux/dma-mapping.h>
#include <linux/dmapool.h>
diff --git a/drivers/crypto/cavium/nitrox/nitrox_req.h b/drivers/crypto/cavium/nitrox/nitrox_req.h
index 74f4c20dc87d..d091b6f5f5dd 100644
--- a/drivers/crypto/cavium/nitrox/nitrox_req.h
+++ b/drivers/crypto/cavium/nitrox/nitrox_req.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NITROX_REQ_H
#define __NITROX_REQ_H
diff --git a/drivers/crypto/cavium/nitrox/nitrox_reqmgr.c b/drivers/crypto/cavium/nitrox/nitrox_reqmgr.c
index 4bb4377c5ac0..4addc238a6ef 100644
--- a/drivers/crypto/cavium/nitrox/nitrox_reqmgr.c
+++ b/drivers/crypto/cavium/nitrox/nitrox_reqmgr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/gfp.h>
#include <linux/workqueue.h>
#include <crypto/internal/skcipher.h>
diff --git a/drivers/crypto/cavium/zip/Makefile b/drivers/crypto/cavium/zip/Makefile
index b2f3baaff757..020d189d793d 100644
--- a/drivers/crypto/cavium/zip/Makefile
+++ b/drivers/crypto/cavium/zip/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Cavium's ZIP Driver.
#
diff --git a/drivers/crypto/ccp/Makefile b/drivers/crypto/ccp/Makefile
index 57f8debfcfb3..c4ce726b931e 100644
--- a/drivers/crypto/ccp/Makefile
+++ b/drivers/crypto/ccp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CRYPTO_DEV_CCP_DD) += ccp.o
ccp-objs := sp-dev.o sp-platform.o
ccp-$(CONFIG_CRYPTO_DEV_SP_CCP) += ccp-dev.o \
diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-secure/safexcel_cipher.c
index d2207ac5ba19..5438552bc6d7 100644
--- a/drivers/crypto/inside-secure/safexcel_cipher.c
+++ b/drivers/crypto/inside-secure/safexcel_cipher.c
@@ -386,7 +386,7 @@ static int safexcel_cipher_exit_inv(struct crypto_tfm *tfm)
struct safexcel_cipher_ctx *ctx = crypto_tfm_ctx(tfm);
struct safexcel_crypto_priv *priv = ctx->priv;
struct skcipher_request req;
- struct safexcel_inv_result result = { 0 };
+ struct safexcel_inv_result result = {};
int ring = ctx->base.ring;
memset(&req, 0, sizeof(struct skcipher_request));
diff --git a/drivers/crypto/inside-secure/safexcel_hash.c b/drivers/crypto/inside-secure/safexcel_hash.c
index 3f819399cd95..3980f946874f 100644
--- a/drivers/crypto/inside-secure/safexcel_hash.c
+++ b/drivers/crypto/inside-secure/safexcel_hash.c
@@ -419,7 +419,7 @@ static int safexcel_ahash_exit_inv(struct crypto_tfm *tfm)
struct safexcel_ahash_ctx *ctx = crypto_tfm_ctx(tfm);
struct safexcel_crypto_priv *priv = ctx->priv;
struct ahash_request req;
- struct safexcel_inv_result result = { 0 };
+ struct safexcel_inv_result result = {};
int ring = ctx->base.ring;
memset(&req, 0, sizeof(struct ahash_request));
diff --git a/drivers/crypto/marvell/cesa.h b/drivers/crypto/marvell/cesa.h
index b7872f62f674..0032e3bf46ee 100644
--- a/drivers/crypto/marvell/cesa.h
+++ b/drivers/crypto/marvell/cesa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MARVELL_CESA_H__
#define __MARVELL_CESA_H__
diff --git a/drivers/crypto/mv_cesa.h b/drivers/crypto/mv_cesa.h
index 9249d3ed184b..0be3f0aa4afd 100644
--- a/drivers/crypto/mv_cesa.h
+++ b/drivers/crypto/mv_cesa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MV_CRYPTO_H__
#define __MV_CRYPTO_H__
diff --git a/drivers/crypto/n2_asm.S b/drivers/crypto/n2_asm.S
index f7c793745a1e..9a67dbf340f4 100644
--- a/drivers/crypto/n2_asm.S
+++ b/drivers/crypto/n2_asm.S
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* n2_asm.S: Hypervisor calls for NCS support.
*
* Copyright (C) 2009 David S. Miller <davem@davemloft.net>
diff --git a/drivers/crypto/n2_core.h b/drivers/crypto/n2_core.h
index 4bcbbeae98f5..2406763b0306 100644
--- a/drivers/crypto/n2_core.h
+++ b/drivers/crypto/n2_core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _N2_CORE_H
#define _N2_CORE_H
diff --git a/drivers/crypto/nx/Makefile b/drivers/crypto/nx/Makefile
index b727821c8ed4..015155da59c2 100644
--- a/drivers/crypto/nx/Makefile
+++ b/drivers/crypto/nx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CRYPTO_DEV_NX_ENCRYPT) += nx-crypto.o
nx-crypto-objs := nx.o \
nx_debugfs.o \
diff --git a/drivers/crypto/nx/nx-842.h b/drivers/crypto/nx/nx-842.h
index bb2f31792683..b66f19ac600f 100644
--- a/drivers/crypto/nx/nx-842.h
+++ b/drivers/crypto/nx/nx-842.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NX_842_H__
#define __NX_842_H__
diff --git a/drivers/crypto/nx/nx.h b/drivers/crypto/nx/nx.h
index 9347878d4f30..c3e54af18645 100644
--- a/drivers/crypto/nx/nx.h
+++ b/drivers/crypto/nx/nx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NX_H__
#define __NX_H__
diff --git a/drivers/crypto/nx/nx_csbcpb.h b/drivers/crypto/nx/nx_csbcpb.h
index a304f956d6f8..493f8490ff94 100644
--- a/drivers/crypto/nx/nx_csbcpb.h
+++ b/drivers/crypto/nx/nx_csbcpb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NX_CSBCPB_H__
#define __NX_CSBCPB_H__
diff --git a/drivers/crypto/qat/Makefile b/drivers/crypto/qat/Makefile
index 8265106f1c8e..7dd15e751d02 100644
--- a/drivers/crypto/qat/Makefile
+++ b/drivers/crypto/qat/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CRYPTO_DEV_QAT) += qat_common/
obj-$(CONFIG_CRYPTO_DEV_QAT_DH895xCC) += qat_dh895xcc/
obj-$(CONFIG_CRYPTO_DEV_QAT_C3XXX) += qat_c3xxx/
diff --git a/drivers/crypto/qat/qat_common/Makefile b/drivers/crypto/qat/qat_common/Makefile
index 92fb6ffdc062..47a8e3d8b81a 100644
--- a/drivers/crypto/qat/qat_common/Makefile
+++ b/drivers/crypto/qat/qat_common/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CRYPTO_DEV_QAT) += intel_qat.o
intel_qat-objs := adf_cfg.o \
adf_isr.o \
diff --git a/drivers/crypto/qce/Makefile b/drivers/crypto/qce/Makefile
index 348dc3173afa..19a7f899acff 100644
--- a/drivers/crypto/qce/Makefile
+++ b/drivers/crypto/qce/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CRYPTO_DEV_QCE) += qcrypto.o
qcrypto-objs := core.o \
common.o \
diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockchip/rk3288_crypto.h
index ab6a1b4c40f0..d5fb4013fb42 100644
--- a/drivers/crypto/rockchip/rk3288_crypto.h
+++ b/drivers/crypto/rockchip/rk3288_crypto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RK3288_CRYPTO_H__
#define __RK3288_CRYPTO_H__
diff --git a/drivers/crypto/stm32/stm32-hash.c b/drivers/crypto/stm32/stm32-hash.c
index b585ce54a802..4835dd4a9e50 100644
--- a/drivers/crypto/stm32/stm32-hash.c
+++ b/drivers/crypto/stm32/stm32-hash.c
@@ -553,9 +553,9 @@ static int stm32_hash_dma_send(struct stm32_hash_dev *hdev)
{
struct stm32_hash_request_ctx *rctx = ahash_request_ctx(hdev->req);
struct scatterlist sg[1], *tsg;
- int err = 0, len = 0, reg, ncp;
+ int err = 0, len = 0, reg, ncp = 0;
unsigned int i;
- const u32 *buffer = (const u32 *)rctx->buffer;
+ u32 *buffer = (void *)rctx->buffer;
rctx->sg = hdev->req->src;
rctx->total = hdev->req->nbytes;
@@ -620,10 +620,13 @@ static int stm32_hash_dma_send(struct stm32_hash_dev *hdev)
reg |= HASH_CR_DMAA;
stm32_hash_write(hdev, HASH_CR, reg);
- for (i = 0; i < DIV_ROUND_UP(ncp, sizeof(u32)); i++)
- stm32_hash_write(hdev, HASH_DIN, buffer[i]);
-
- stm32_hash_set_nblw(hdev, ncp);
+ if (ncp) {
+ memset(buffer + ncp, 0,
+ DIV_ROUND_UP(ncp, sizeof(u32)) - ncp);
+ writesl(hdev->io_base + HASH_DIN, buffer,
+ DIV_ROUND_UP(ncp, sizeof(u32)));
+ }
+ stm32_hash_set_nblw(hdev, DIV_ROUND_UP(ncp, sizeof(u32)));
reg = stm32_hash_read(hdev, HASH_STR);
reg |= HASH_STR_DCAL;
stm32_hash_write(hdev, HASH_STR, reg);
diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index 79791c690858..dff88838dce7 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -1756,9 +1756,9 @@ static int common_nonsnoop_hash(struct talitos_edesc *edesc,
req_ctx->swinit = 0;
} else {
desc->ptr[1] = zero_entry;
- /* Indicate next op is not the first. */
- req_ctx->first = 0;
}
+ /* Indicate next op is not the first. */
+ req_ctx->first = 0;
/* HMAC key */
if (ctx->keylen)
@@ -1769,7 +1769,7 @@ static int common_nonsnoop_hash(struct talitos_edesc *edesc,
sg_count = edesc->src_nents ?: 1;
if (is_sec1 && sg_count > 1)
- sg_copy_to_buffer(areq->src, sg_count, edesc->buf, length);
+ sg_copy_to_buffer(req_ctx->psrc, sg_count, edesc->buf, length);
else
sg_count = dma_map_sg(dev, req_ctx->psrc, sg_count,
DMA_TO_DEVICE);
@@ -3057,7 +3057,8 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev,
t_alg->algt.alg.hash.final = ahash_final;
t_alg->algt.alg.hash.finup = ahash_finup;
t_alg->algt.alg.hash.digest = ahash_digest;
- t_alg->algt.alg.hash.setkey = ahash_setkey;
+ if (!strncmp(alg->cra_name, "hmac", 4))
+ t_alg->algt.alg.hash.setkey = ahash_setkey;
t_alg->algt.alg.hash.import = ahash_import;
t_alg->algt.alg.hash.export = ahash_export;
diff --git a/drivers/crypto/virtio/Makefile b/drivers/crypto/virtio/Makefile
index dd342c947ff9..cbfccccfa135 100644
--- a/drivers/crypto/virtio/Makefile
+++ b/drivers/crypto/virtio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CRYPTO_DEV_VIRTIO) += virtio_crypto.o
virtio_crypto-objs := \
virtio_crypto_algs.o \
diff --git a/drivers/crypto/vmx/Makefile b/drivers/crypto/vmx/Makefile
index 55f7c392582f..cab32cfec9c4 100644
--- a/drivers/crypto/vmx/Makefile
+++ b/drivers/crypto/vmx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CRYPTO_DEV_VMX_ENCRYPT) += vmx-crypto.o
vmx-crypto-objs := vmx.o aesp8-ppc.o ghashp8-ppc.o aes.o aes_cbc.o aes_ctr.o aes_xts.o ghash.o
diff --git a/drivers/crypto/vmx/aesp8-ppc.h b/drivers/crypto/vmx/aesp8-ppc.h
index 01972e16a6c0..349646b73754 100644
--- a/drivers/crypto/vmx/aesp8-ppc.h
+++ b/drivers/crypto/vmx/aesp8-ppc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/types.h>
#include <crypto/aes.h>
diff --git a/drivers/crypto/vmx/ppc-xlate.pl b/drivers/crypto/vmx/ppc-xlate.pl
index b18e67d0e065..36db2ef09e5b 100644
--- a/drivers/crypto/vmx/ppc-xlate.pl
+++ b/drivers/crypto/vmx/ppc-xlate.pl
@@ -1,4 +1,5 @@
#!/usr/bin/env perl
+# SPDX-License-Identifier: GPL-2.0
# PowerPC assembler distiller by <appro>.
diff --git a/drivers/dax/Makefile b/drivers/dax/Makefile
index dc7422530462..574286fac87c 100644
--- a/drivers/dax/Makefile
+++ b/drivers/dax/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_DAX) += dax.o
obj-$(CONFIG_DEV_DAX) += device_dax.o
obj-$(CONFIG_DEV_DAX_PMEM) += dax_pmem.o
diff --git a/drivers/dax/super.c b/drivers/dax/super.c
index 3600ff786646..557b93703532 100644
--- a/drivers/dax/super.c
+++ b/drivers/dax/super.c
@@ -201,8 +201,10 @@ static umode_t dax_visible(struct kobject *kobj, struct attribute *a, int n)
if (!dax_dev)
return 0;
- if (a == &dev_attr_write_cache.attr && !dax_dev->ops->flush)
+#ifndef CONFIG_ARCH_HAS_PMEM_API
+ if (a == &dev_attr_write_cache.attr)
return 0;
+#endif
return a->mode;
}
@@ -267,18 +269,23 @@ size_t dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
}
EXPORT_SYMBOL_GPL(dax_copy_from_iter);
-void dax_flush(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
- size_t size)
+#ifdef CONFIG_ARCH_HAS_PMEM_API
+void arch_wb_cache_pmem(void *addr, size_t size);
+void dax_flush(struct dax_device *dax_dev, void *addr, size_t size)
{
- if (!dax_alive(dax_dev))
+ if (unlikely(!dax_alive(dax_dev)))
return;
- if (!test_bit(DAXDEV_WRITE_CACHE, &dax_dev->flags))
+ if (unlikely(!test_bit(DAXDEV_WRITE_CACHE, &dax_dev->flags)))
return;
- if (dax_dev->ops->flush)
- dax_dev->ops->flush(dax_dev, pgoff, addr, size);
+ arch_wb_cache_pmem(addr, size);
}
+#else
+void dax_flush(struct dax_device *dax_dev, void *addr, size_t size)
+{
+}
+#endif
EXPORT_SYMBOL_GPL(dax_flush);
void dax_write_cache(struct dax_device *dax_dev, bool wc)
diff --git a/drivers/devfreq/Makefile b/drivers/devfreq/Makefile
index fbff40a508a4..32b8d4d3f12c 100644
--- a/drivers/devfreq/Makefile
+++ b/drivers/devfreq/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PM_DEVFREQ) += devfreq.o
obj-$(CONFIG_PM_DEVFREQ_EVENT) += devfreq-event.o
obj-$(CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND) += governor_simpleondemand.o
diff --git a/drivers/dio/dio.c b/drivers/dio/dio.c
index 0d0677f23916..92e78d16b476 100644
--- a/drivers/dio/dio.c
+++ b/drivers/dio/dio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Code to support devices on the DIO and DIO-II bus
* Copyright (C) 05/1998 Peter Maydell <pmaydell@chiark.greenend.org.uk>
* Copyright (C) 2004 Jochen Friedrich <jochen@scram.de>
diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c
index 66fb40d0ebdb..03830634e141 100644
--- a/drivers/dma-buf/sync_file.c
+++ b/drivers/dma-buf/sync_file.c
@@ -383,7 +383,7 @@ err_put_fd:
return err;
}
-static void sync_fill_fence_info(struct dma_fence *fence,
+static int sync_fill_fence_info(struct dma_fence *fence,
struct sync_fence_info *info)
{
strlcpy(info->obj_name, fence->ops->get_timeline_name(fence),
@@ -399,6 +399,8 @@ static void sync_fill_fence_info(struct dma_fence *fence,
test_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, &fence->flags) ?
ktime_to_ns(fence->timestamp) :
ktime_set(0, 0);
+
+ return info->status;
}
static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
@@ -424,8 +426,12 @@ static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
* sync_fence_info and return the actual number of fences on
* info->num_fences.
*/
- if (!info.num_fences)
+ if (!info.num_fences) {
+ info.status = dma_fence_is_signaled(sync_file->fence);
goto no_fences;
+ } else {
+ info.status = 1;
+ }
if (info.num_fences < num_fences)
return -EINVAL;
@@ -435,8 +441,10 @@ static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
if (!fence_info)
return -ENOMEM;
- for (i = 0; i < num_fences; i++)
- sync_fill_fence_info(fences[i], &fence_info[i]);
+ for (i = 0; i < num_fences; i++) {
+ int status = sync_fill_fence_info(fences[i], &fence_info[i]);
+ info.status = info.status <= 0 ? info.status : status;
+ }
if (copy_to_user(u64_to_user_ptr(info.sync_fence_info), fence_info,
size)) {
@@ -446,7 +454,6 @@ static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
no_fences:
sync_file_get_name(sync_file, info.name, sizeof(info.name));
- info.status = dma_fence_is_signaled(sync_file->fence);
info.num_fences = num_fences;
if (copy_to_user((void __user *)arg, &info, sizeof(info)))
diff --git a/drivers/dma-buf/sync_trace.h b/drivers/dma-buf/sync_trace.h
index d13d59ff1b85..06e468a218ff 100644
--- a/drivers/dma-buf/sync_trace.h
+++ b/drivers/dma-buf/sync_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_INCLUDE_PATH ../../drivers/dma-buf
#define TRACE_SYSTEM sync_trace
diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
index f08f8de1b567..9d0156b50294 100644
--- a/drivers/dma/Makefile
+++ b/drivers/dma/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#dmaengine debug flags
subdir-ccflags-$(CONFIG_DMADEVICES_DEBUG) := -DDEBUG
subdir-ccflags-$(CONFIG_DMADEVICES_VDEBUG) += -DVERBOSE_DEBUG
diff --git a/drivers/dma/altera-msgdma.c b/drivers/dma/altera-msgdma.c
index 32905d5606ac..55f9c62ee54b 100644
--- a/drivers/dma/altera-msgdma.c
+++ b/drivers/dma/altera-msgdma.c
@@ -212,11 +212,12 @@ struct msgdma_device {
static struct msgdma_sw_desc *msgdma_get_descriptor(struct msgdma_device *mdev)
{
struct msgdma_sw_desc *desc;
+ unsigned long flags;
- spin_lock_bh(&mdev->lock);
+ spin_lock_irqsave(&mdev->lock, flags);
desc = list_first_entry(&mdev->free_list, struct msgdma_sw_desc, node);
list_del(&desc->node);
- spin_unlock_bh(&mdev->lock);
+ spin_unlock_irqrestore(&mdev->lock, flags);
INIT_LIST_HEAD(&desc->tx_list);
@@ -306,13 +307,14 @@ static dma_cookie_t msgdma_tx_submit(struct dma_async_tx_descriptor *tx)
struct msgdma_device *mdev = to_mdev(tx->chan);
struct msgdma_sw_desc *new;
dma_cookie_t cookie;
+ unsigned long flags;
new = tx_to_desc(tx);
- spin_lock_bh(&mdev->lock);
+ spin_lock_irqsave(&mdev->lock, flags);
cookie = dma_cookie_assign(tx);
list_add_tail(&new->node, &mdev->pending_list);
- spin_unlock_bh(&mdev->lock);
+ spin_unlock_irqrestore(&mdev->lock, flags);
return cookie;
}
@@ -336,17 +338,18 @@ msgdma_prep_memcpy(struct dma_chan *dchan, dma_addr_t dma_dst,
struct msgdma_extended_desc *desc;
size_t copy;
u32 desc_cnt;
+ unsigned long irqflags;
desc_cnt = DIV_ROUND_UP(len, MSGDMA_MAX_TRANS_LEN);
- spin_lock_bh(&mdev->lock);
+ spin_lock_irqsave(&mdev->lock, irqflags);
if (desc_cnt > mdev->desc_free_cnt) {
- spin_unlock_bh(&mdev->lock);
+ spin_unlock_irqrestore(&mdev->lock, irqflags);
dev_dbg(mdev->dev, "mdev %p descs are not available\n", mdev);
return NULL;
}
mdev->desc_free_cnt -= desc_cnt;
- spin_unlock_bh(&mdev->lock);
+ spin_unlock_irqrestore(&mdev->lock, irqflags);
do {
/* Allocate and populate the descriptor */
@@ -397,18 +400,19 @@ msgdma_prep_slave_sg(struct dma_chan *dchan, struct scatterlist *sgl,
u32 desc_cnt = 0, i;
struct scatterlist *sg;
u32 stride;
+ unsigned long irqflags;
for_each_sg(sgl, sg, sg_len, i)
desc_cnt += DIV_ROUND_UP(sg_dma_len(sg), MSGDMA_MAX_TRANS_LEN);
- spin_lock_bh(&mdev->lock);
+ spin_lock_irqsave(&mdev->lock, irqflags);
if (desc_cnt > mdev->desc_free_cnt) {
- spin_unlock_bh(&mdev->lock);
+ spin_unlock_irqrestore(&mdev->lock, irqflags);
dev_dbg(mdev->dev, "mdev %p descs are not available\n", mdev);
return NULL;
}
mdev->desc_free_cnt -= desc_cnt;
- spin_unlock_bh(&mdev->lock);
+ spin_unlock_irqrestore(&mdev->lock, irqflags);
avail = sg_dma_len(sgl);
@@ -566,10 +570,11 @@ static void msgdma_start_transfer(struct msgdma_device *mdev)
static void msgdma_issue_pending(struct dma_chan *chan)
{
struct msgdma_device *mdev = to_mdev(chan);
+ unsigned long flags;
- spin_lock_bh(&mdev->lock);
+ spin_lock_irqsave(&mdev->lock, flags);
msgdma_start_transfer(mdev);
- spin_unlock_bh(&mdev->lock);
+ spin_unlock_irqrestore(&mdev->lock, flags);
}
/**
@@ -634,10 +639,11 @@ static void msgdma_free_descriptors(struct msgdma_device *mdev)
static void msgdma_free_chan_resources(struct dma_chan *dchan)
{
struct msgdma_device *mdev = to_mdev(dchan);
+ unsigned long flags;
- spin_lock_bh(&mdev->lock);
+ spin_lock_irqsave(&mdev->lock, flags);
msgdma_free_descriptors(mdev);
- spin_unlock_bh(&mdev->lock);
+ spin_unlock_irqrestore(&mdev->lock, flags);
kfree(mdev->sw_desq);
}
@@ -682,8 +688,9 @@ static void msgdma_tasklet(unsigned long data)
u32 count;
u32 __maybe_unused size;
u32 __maybe_unused status;
+ unsigned long flags;
- spin_lock(&mdev->lock);
+ spin_lock_irqsave(&mdev->lock, flags);
/* Read number of responses that are available */
count = ioread32(mdev->csr + MSGDMA_CSR_RESP_FILL_LEVEL);
@@ -698,13 +705,13 @@ static void msgdma_tasklet(unsigned long data)
* bits. So we need to just drop these values.
*/
size = ioread32(mdev->resp + MSGDMA_RESP_BYTES_TRANSFERRED);
- status = ioread32(mdev->resp - MSGDMA_RESP_STATUS);
+ status = ioread32(mdev->resp + MSGDMA_RESP_STATUS);
msgdma_complete_descriptor(mdev);
msgdma_chan_desc_cleanup(mdev);
}
- spin_unlock(&mdev->lock);
+ spin_unlock_irqrestore(&mdev->lock, flags);
}
/**
diff --git a/drivers/dma/bestcomm/Makefile b/drivers/dma/bestcomm/Makefile
index aed2df2a6580..8d1b33a2f0a1 100644
--- a/drivers/dma/bestcomm/Makefile
+++ b/drivers/dma/bestcomm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for BestComm & co
#
diff --git a/drivers/dma/dmaengine.h b/drivers/dma/dmaengine.h
index 882ff9448c3b..501c0b063f85 100644
--- a/drivers/dma/dmaengine.h
+++ b/drivers/dma/dmaengine.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* The contents of this file are private to DMA engine drivers, and is not
* part of the API to be used by DMA engine users.
diff --git a/drivers/dma/dw/Makefile b/drivers/dma/dw/Makefile
index 3eebd1ce2c6b..2b949c2e4504 100644
--- a/drivers/dma/dw/Makefile
+++ b/drivers/dma/dw/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_DW_DMAC_CORE) += dw_dmac_core.o
dw_dmac_core-objs := core.o
diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c
index 3879f80a4815..a7ea20e7b8e9 100644
--- a/drivers/dma/edma.c
+++ b/drivers/dma/edma.c
@@ -1143,11 +1143,24 @@ static struct dma_async_tx_descriptor *edma_prep_dma_memcpy(
struct edma_desc *edesc;
struct device *dev = chan->device->dev;
struct edma_chan *echan = to_edma_chan(chan);
- unsigned int width, pset_len;
+ unsigned int width, pset_len, array_size;
if (unlikely(!echan || !len))
return NULL;
+ /* Align the array size (acnt block) with the transfer properties */
+ switch (__ffs((src | dest | len))) {
+ case 0:
+ array_size = SZ_32K - 1;
+ break;
+ case 1:
+ array_size = SZ_32K - 2;
+ break;
+ default:
+ array_size = SZ_32K - 4;
+ break;
+ }
+
if (len < SZ_64K) {
/*
* Transfer size less than 64K can be handled with one paRAM
@@ -1169,7 +1182,7 @@ static struct dma_async_tx_descriptor *edma_prep_dma_memcpy(
* When the full_length is multibple of 32767 one slot can be
* used to complete the transfer.
*/
- width = SZ_32K - 1;
+ width = array_size;
pset_len = rounddown(len, width);
/* One slot is enough for lengths multiple of (SZ_32K -1) */
if (unlikely(pset_len == len))
@@ -1217,7 +1230,7 @@ static struct dma_async_tx_descriptor *edma_prep_dma_memcpy(
}
dest += pset_len;
src += pset_len;
- pset_len = width = len % (SZ_32K - 1);
+ pset_len = width = len % array_size;
ret = edma_config_pset(chan, &edesc->pset[1], src, dest, 1,
width, pset_len, DMA_MEM_TO_MEM);
diff --git a/drivers/dma/qcom/Makefile b/drivers/dma/qcom/Makefile
index 4bfc38b45220..1ae92da88b0c 100644
--- a/drivers/dma/qcom/Makefile
+++ b/drivers/dma/qcom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_QCOM_BAM_DMA) += bam_dma.o
obj-$(CONFIG_QCOM_HIDMA_MGMT) += hdma_mgmt.o
hdma_mgmt-objs := hidma_mgmt.o hidma_mgmt_sys.o
diff --git a/drivers/dma/sh/Makefile b/drivers/dma/sh/Makefile
index f1e2fd64f279..7d7c9491ade1 100644
--- a/drivers/dma/sh/Makefile
+++ b/drivers/dma/sh/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# DMA Engine Helpers
#
diff --git a/drivers/dma/ti-dma-crossbar.c b/drivers/dma/ti-dma-crossbar.c
index 2f65a8fde21d..f1d04b70ee67 100644
--- a/drivers/dma/ti-dma-crossbar.c
+++ b/drivers/dma/ti-dma-crossbar.c
@@ -262,13 +262,14 @@ static void *ti_dra7_xbar_route_allocate(struct of_phandle_args *dma_spec,
mutex_lock(&xbar->mutex);
map->xbar_out = find_first_zero_bit(xbar->dma_inuse,
xbar->dma_requests);
- mutex_unlock(&xbar->mutex);
if (map->xbar_out == xbar->dma_requests) {
+ mutex_unlock(&xbar->mutex);
dev_err(&pdev->dev, "Run out of free DMA requests\n");
kfree(map);
return ERR_PTR(-ENOMEM);
}
set_bit(map->xbar_out, xbar->dma_inuse);
+ mutex_unlock(&xbar->mutex);
map->xbar_in = (u16)dma_spec->args[0];
diff --git a/drivers/edac/amd64_edac_dbg.c b/drivers/edac/amd64_edac_dbg.c
index 4709c6079848..393be3351493 100644
--- a/drivers/edac/amd64_edac_dbg.c
+++ b/drivers/edac/amd64_edac_dbg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "amd64_edac.h"
#define EDAC_DCT_ATTR_SHOW(reg) \
diff --git a/drivers/edac/amd64_edac_inj.c b/drivers/edac/amd64_edac_inj.c
index e14977ff95db..d96d6116f0fb 100644
--- a/drivers/edac/amd64_edac_inj.c
+++ b/drivers/edac/amd64_edac_inj.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "amd64_edac.h"
static ssize_t amd64_inject_section_show(struct device *dev,
diff --git a/drivers/edac/edac_module.h b/drivers/edac/edac_module.h
index 014871e169cc..dec88dcea036 100644
--- a/drivers/edac/edac_module.h
+++ b/drivers/edac/edac_module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* edac_module.h
diff --git a/drivers/edac/mce_amd.h b/drivers/edac/mce_amd.h
index 0b6a68673e0e..4e9c5e596c6c 100644
--- a/drivers/edac/mce_amd.h
+++ b/drivers/edac/mce_amd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _EDAC_MCE_AMD_H
#define _EDAC_MCE_AMD_H
diff --git a/drivers/eisa/Makefile b/drivers/eisa/Makefile
index 5369ce957c6d..a1dd0eaec2d4 100644
--- a/drivers/eisa/Makefile
+++ b/drivers/eisa/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the Linux device tree
obj-$(CONFIG_EISA) += eisa-bus.o
diff --git a/drivers/extcon/Makefile b/drivers/extcon/Makefile
index a73624e76193..0888fdeded72 100644
--- a/drivers/extcon/Makefile
+++ b/drivers/extcon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for external connector class (extcon) devices
#
diff --git a/drivers/extcon/extcon.h b/drivers/extcon/extcon.h
index dddddcfa0587..61358479bfcc 100644
--- a/drivers/extcon/extcon.h
+++ b/drivers/extcon/extcon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_EXTCON_INTERNAL_H__
#define __LINUX_EXTCON_INTERNAL_H__
diff --git a/drivers/firewire/Makefile b/drivers/firewire/Makefile
index e3870d5c43dd..e58c8c794778 100644
--- a/drivers/firewire/Makefile
+++ b/drivers/firewire/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux IEEE 1394 implementation
#
diff --git a/drivers/firewire/core.h b/drivers/firewire/core.h
index c07962ead5e4..0f0bed3a4bbb 100644
--- a/drivers/firewire/core.h
+++ b/drivers/firewire/core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FIREWIRE_CORE_H
#define _FIREWIRE_CORE_H
diff --git a/drivers/firewire/nosy-user.h b/drivers/firewire/nosy-user.h
index e48aa6200c72..3446c5b772e5 100644
--- a/drivers/firewire/nosy-user.h
+++ b/drivers/firewire/nosy-user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __nosy_user_h
#define __nosy_user_h
diff --git a/drivers/firewire/nosy.h b/drivers/firewire/nosy.h
index 078ff27f4756..4078d69e93f8 100644
--- a/drivers/firewire/nosy.h
+++ b/drivers/firewire/nosy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Chip register definitions for PCILynx chipset. Based on pcilynx.h
* from the Linux 1394 drivers, but modified a bit so the names here
diff --git a/drivers/firewire/ohci.h b/drivers/firewire/ohci.h
index ef5e7336da68..c4d005a9901a 100644
--- a/drivers/firewire/ohci.h
+++ b/drivers/firewire/ohci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FIREWIRE_OHCI_H
#define _FIREWIRE_OHCI_H
diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile
index a37f12e8d137..feaa890197f3 100644
--- a/drivers/firmware/Makefile
+++ b/drivers/firmware/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux kernel.
#
diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile
index 0329d319d89a..269501dfba53 100644
--- a/drivers/firmware/efi/Makefile
+++ b/drivers/firmware/efi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for linux kernel
#
diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
index dedf9bde44db..2371a92808be 100644
--- a/drivers/firmware/efi/libstub/Makefile
+++ b/drivers/firmware/efi/libstub/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# The stub may be linked into the kernel proper or into a separate boot binary,
# but in either case, it executes before the kernel does (with MMU disabled) so
diff --git a/drivers/firmware/efi/libstub/arm-stub.c b/drivers/firmware/efi/libstub/arm-stub.c
index 1cb2d1c070c3..a94601d5939e 100644
--- a/drivers/firmware/efi/libstub/arm-stub.c
+++ b/drivers/firmware/efi/libstub/arm-stub.c
@@ -238,7 +238,8 @@ unsigned long efi_entry(void *handle, efi_system_table_t *sys_table,
efi_random_get_seed(sys_table);
- if (!nokaslr()) {
+ /* hibernation expects the runtime regions to stay in the same place */
+ if (!IS_ENABLED(CONFIG_HIBERNATION) && !nokaslr()) {
/*
* Randomize the base of the UEFI runtime services region.
* Preserve the 2 MB alignment of the region by taking a
diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h
index 83f268c05007..f59564b72ddc 100644
--- a/drivers/firmware/efi/libstub/efistub.h
+++ b/drivers/firmware/efi/libstub/efistub.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DRIVERS_FIRMWARE_EFI_EFISTUB_H
#define _DRIVERS_FIRMWARE_EFI_EFISTUB_H
diff --git a/drivers/firmware/efi/libstub/string.c b/drivers/firmware/efi/libstub/string.c
index 09d5a0894343..ed10e3f602c5 100644
--- a/drivers/firmware/efi/libstub/string.c
+++ b/drivers/firmware/efi/libstub/string.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Taken from:
* linux/lib/string.c
diff --git a/drivers/firmware/efi/memmap.c b/drivers/firmware/efi/memmap.c
index 78686443cb37..5fc70520e04c 100644
--- a/drivers/firmware/efi/memmap.c
+++ b/drivers/firmware/efi/memmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Common EFI memory map functions.
*/
diff --git a/drivers/firmware/efi/reboot.c b/drivers/firmware/efi/reboot.c
index 22874544d301..7effff969eb9 100644
--- a/drivers/firmware/efi/reboot.c
+++ b/drivers/firmware/efi/reboot.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2014 Intel Corporation; author Matt Fleming
* Copyright (c) 2014 Red Hat, Inc., Mark Salter <msalter@redhat.com>
diff --git a/drivers/firmware/efi/test/efi_test.c b/drivers/firmware/efi/test/efi_test.c
index 08129b7b80ab..41c48a1e8baa 100644
--- a/drivers/firmware/efi/test/efi_test.c
+++ b/drivers/firmware/efi/test/efi_test.c
@@ -593,6 +593,9 @@ static long efi_runtime_query_capsulecaps(unsigned long arg)
if (copy_from_user(&qcaps, qcaps_user, sizeof(qcaps)))
return -EFAULT;
+ if (qcaps.capsule_count == ULONG_MAX)
+ return -EINVAL;
+
capsules = kcalloc(qcaps.capsule_count + 1,
sizeof(efi_capsule_header_t), GFP_KERNEL);
if (!capsules)
diff --git a/drivers/firmware/efi/test/efi_test.h b/drivers/firmware/efi/test/efi_test.h
index a33a6c633852..9812c6a02b40 100644
--- a/drivers/firmware/efi/test/efi_test.h
+++ b/drivers/firmware/efi/test/efi_test.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* EFI Test driver Header
*
diff --git a/drivers/firmware/google/Makefile b/drivers/firmware/google/Makefile
index bc4de02202ad..dcd3675efcfc 100644
--- a/drivers/firmware/google/Makefile
+++ b/drivers/firmware/google/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_GOOGLE_SMI) += gsmi.o
obj-$(CONFIG_GOOGLE_COREBOOT_TABLE) += coreboot_table.o
diff --git a/drivers/firmware/google/gsmi.c b/drivers/firmware/google/gsmi.c
index c46387160976..c8f169bf2e27 100644
--- a/drivers/firmware/google/gsmi.c
+++ b/drivers/firmware/google/gsmi.c
@@ -709,7 +709,7 @@ static u32 __init hash_oem_table_id(char s[8])
return local_hash_64(input, 32);
}
-static struct dmi_system_id gsmi_dmi_table[] __initdata = {
+static const struct dmi_system_id gsmi_dmi_table[] __initconst = {
{
.ident = "Google Board",
.matches = {
diff --git a/drivers/firmware/google/memconsole-x86-legacy.c b/drivers/firmware/google/memconsole-x86-legacy.c
index 8c1bf6dbdaa6..19bcbd10855b 100644
--- a/drivers/firmware/google/memconsole-x86-legacy.c
+++ b/drivers/firmware/google/memconsole-x86-legacy.c
@@ -126,7 +126,7 @@ static bool memconsole_ebda_init(void)
return false;
}
-static struct dmi_system_id memconsole_dmi_table[] __initdata = {
+static const struct dmi_system_id memconsole_dmi_table[] __initconst = {
{
.ident = "Google Board",
.matches = {
diff --git a/drivers/fmc/Makefile b/drivers/fmc/Makefile
index e809322e1bac..e3da6192cf39 100644
--- a/drivers/fmc/Makefile
+++ b/drivers/fmc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_FMC) += fmc.o
diff --git a/drivers/fpga/Makefile b/drivers/fpga/Makefile
index e09895f0525b..f98dcf1d89e1 100644
--- a/drivers/fpga/Makefile
+++ b/drivers/fpga/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the fpga framework and fpga manager drivers.
#
diff --git a/drivers/fpga/altera-cvp.c b/drivers/fpga/altera-cvp.c
index 08629ee69d11..00e73d28077c 100644
--- a/drivers/fpga/altera-cvp.c
+++ b/drivers/fpga/altera-cvp.c
@@ -361,12 +361,12 @@ static const struct fpga_manager_ops altera_cvp_ops = {
.write_complete = altera_cvp_write_complete,
};
-static ssize_t show_chkcfg(struct device_driver *dev, char *buf)
+static ssize_t chkcfg_show(struct device_driver *dev, char *buf)
{
return snprintf(buf, 3, "%d\n", altera_cvp_chkcfg);
}
-static ssize_t store_chkcfg(struct device_driver *drv, const char *buf,
+static ssize_t chkcfg_store(struct device_driver *drv, const char *buf,
size_t count)
{
int ret;
@@ -378,7 +378,7 @@ static ssize_t store_chkcfg(struct device_driver *drv, const char *buf,
return count;
}
-static DRIVER_ATTR(chkcfg, 0600, show_chkcfg, store_chkcfg);
+static DRIVER_ATTR_RW(chkcfg);
static int altera_cvp_probe(struct pci_dev *pdev,
const struct pci_device_id *dev_id);
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index 3388d54ba114..3f80f167ed56 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -453,7 +453,8 @@ config GPIO_TS4800
config GPIO_THUNDERX
tristate "Cavium ThunderX/OCTEON-TX GPIO"
depends on ARCH_THUNDER || (64BIT && COMPILE_TEST)
- depends on PCI_MSI && IRQ_DOMAIN_HIERARCHY
+ depends on PCI_MSI
+ select IRQ_DOMAIN_HIERARCHY
select IRQ_FASTEOI_HIERARCHY_HANDLERS
help
Say yes here to support the on-chip GPIO lines on the ThunderX
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index aeb70e9de6f2..8a2dfba3b231 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# generic gpio support: platform drivers, dedicated expander chips, etc
ccflags-$(CONFIG_DEBUG_GPIO) += -DDEBUG
diff --git a/drivers/gpio/gpio-etraxfs.c b/drivers/gpio/gpio-etraxfs.c
index 14c6aac26780..94db1bf4bfdb 100644
--- a/drivers/gpio/gpio-etraxfs.c
+++ b/drivers/gpio/gpio-etraxfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/gpio/driver.h>
diff --git a/drivers/gpio/gpio-ftgpio010.c b/drivers/gpio/gpio-ftgpio010.c
index e9386f8b67f5..139f73d3f4ba 100644
--- a/drivers/gpio/gpio-ftgpio010.c
+++ b/drivers/gpio/gpio-ftgpio010.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Faraday Technolog FTGPIO010 gpiochip and interrupt routines
* Copyright (C) 2017 Linus Walleij <linus.walleij@linaro.org>
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index dbf869fb63ce..3233b72b6828 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -518,7 +518,13 @@ static int omap_gpio_irq_type(struct irq_data *d, unsigned type)
if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH))
irq_set_handler_locked(d, handle_level_irq);
else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
- irq_set_handler_locked(d, handle_edge_irq);
+ /*
+ * Edge IRQs are already cleared/acked in irq_handler and
+ * not need to be masked, as result handle_edge_irq()
+ * logic is excessed here and may cause lose of interrupts.
+ * So just use handle_simple_irq.
+ */
+ irq_set_handler_locked(d, handle_simple_irq);
return 0;
@@ -678,7 +684,7 @@ static void omap_gpio_free(struct gpio_chip *chip, unsigned offset)
static irqreturn_t omap_gpio_irq_handler(int irq, void *gpiobank)
{
void __iomem *isr_reg = NULL;
- u32 isr;
+ u32 enabled, isr, level_mask;
unsigned int bit;
struct gpio_bank *bank = gpiobank;
unsigned long wa_lock_flags;
@@ -691,23 +697,21 @@ static irqreturn_t omap_gpio_irq_handler(int irq, void *gpiobank)
pm_runtime_get_sync(bank->chip.parent);
while (1) {
- u32 isr_saved, level_mask = 0;
- u32 enabled;
-
raw_spin_lock_irqsave(&bank->lock, lock_flags);
enabled = omap_get_gpio_irqbank_mask(bank);
- isr_saved = isr = readl_relaxed(isr_reg) & enabled;
+ isr = readl_relaxed(isr_reg) & enabled;
if (bank->level_mask)
level_mask = bank->level_mask & enabled;
+ else
+ level_mask = 0;
/* clear edge sensitive interrupts before handler(s) are
called so that we don't miss any interrupt occurred while
executing them */
- omap_disable_gpio_irqbank(bank, isr_saved & ~level_mask);
- omap_clear_gpio_irqbank(bank, isr_saved & ~level_mask);
- omap_enable_gpio_irqbank(bank, isr_saved & ~level_mask);
+ if (isr & ~level_mask)
+ omap_clear_gpio_irqbank(bank, isr & ~level_mask);
raw_spin_unlock_irqrestore(&bank->lock, lock_flags);
@@ -1010,7 +1014,7 @@ static void omap_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
/*---------------------------------------------------------------------*/
-static void __init omap_gpio_show_rev(struct gpio_bank *bank)
+static void omap_gpio_show_rev(struct gpio_bank *bank)
{
static bool called;
u32 rev;
diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c
index 4d2113530735..eb4528c87c0b 100644
--- a/drivers/gpio/gpiolib-acpi.c
+++ b/drivers/gpio/gpiolib-acpi.c
@@ -203,7 +203,7 @@ static acpi_status acpi_gpiochip_request_interrupt(struct acpi_resource *ares,
if (pin <= 255) {
char ev_name[5];
- sprintf(ev_name, "_%c%02X",
+ sprintf(ev_name, "_%c%02hhX",
agpio->triggering == ACPI_EDGE_SENSITIVE ? 'E' : 'L',
pin);
if (ACPI_SUCCESS(acpi_get_handle(handle, ev_name, &evt_handle)))
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index a8acc197dec3..8ce07039bb89 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the drm device driver. This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile b/drivers/gpu/drm/amd/amdgpu/Makefile
index 658bac0cdc5e..567b0377e1e2 100644
--- a/drivers/gpu/drm/amd/amdgpu/Makefile
+++ b/drivers/gpu/drm/amd/amdgpu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the drm device driver. This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 12e71bbfd222..103635ab784c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -76,7 +76,7 @@
extern int amdgpu_modeset;
extern int amdgpu_vram_limit;
extern int amdgpu_vis_vram_limit;
-extern unsigned amdgpu_gart_size;
+extern int amdgpu_gart_size;
extern int amdgpu_gtt_size;
extern int amdgpu_moverate;
extern int amdgpu_benchmarking;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
index fb6e5dbd5a03..309f2419c6d8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
@@ -155,7 +155,6 @@ static const struct kfd2kgd_calls kfd2kgd = {
struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions(void)
{
return (struct kfd2kgd_calls *)&kfd2kgd;
- return (struct kfd2kgd_calls *)&kfd2kgd;
}
static inline struct amdgpu_device *get_amdgpu_device(struct kgd_dev *kgd)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 269b835571eb..60d8bedb694d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -1079,6 +1079,9 @@ static int amdgpu_cs_process_syncobj_out_dep(struct amdgpu_cs_parser *p,
GFP_KERNEL);
p->num_post_dep_syncobjs = 0;
+ if (!p->post_dep_syncobjs)
+ return -ENOMEM;
+
for (i = 0; i < num_deps; ++i) {
p->post_dep_syncobjs[i] = drm_syncobj_find(p->filp, deps[i].handle);
if (!p->post_dep_syncobjs[i])
@@ -1150,7 +1153,6 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
cs->out.handle = amdgpu_ctx_add_fence(p->ctx, ring, p->fence);
job->uf_sequence = cs->out.handle;
amdgpu_job_free_resources(job);
- amdgpu_cs_parser_fini(p, 0, true);
trace_amdgpu_cs_ioctl(job);
amd_sched_entity_push_job(&job->base);
@@ -1208,10 +1210,7 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
goto out;
r = amdgpu_cs_submit(&parser, cs);
- if (r)
- goto out;
- return 0;
out:
amdgpu_cs_parser_fini(&parser, r, reserved_buffers);
return r;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 1a459ac63df4..e630d918fefc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1062,11 +1062,11 @@ static void amdgpu_check_arguments(struct amdgpu_device *adev)
amdgpu_sched_jobs = roundup_pow_of_two(amdgpu_sched_jobs);
}
- if (amdgpu_gart_size < 32) {
+ if (amdgpu_gart_size != -1 && amdgpu_gart_size < 32) {
/* gart size must be greater or equal to 32M */
dev_warn(adev->dev, "gart size (%d) too small\n",
amdgpu_gart_size);
- amdgpu_gart_size = 32;
+ amdgpu_gart_size = -1;
}
if (amdgpu_gtt_size != -1 && amdgpu_gtt_size < 32) {
@@ -2622,12 +2622,6 @@ static int amdgpu_recover_vram_from_shadow(struct amdgpu_device *adev,
goto err;
}
- r = amdgpu_ttm_bind(&bo->shadow->tbo, &bo->shadow->tbo.mem);
- if (r) {
- DRM_ERROR("%p bind failed\n", bo->shadow);
- goto err;
- }
-
r = amdgpu_bo_restore_from_shadow(adev, ring, bo,
NULL, fence, true);
if (r) {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index e39ec981b11c..0f16986ec5bc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -76,7 +76,7 @@
int amdgpu_vram_limit = 0;
int amdgpu_vis_vram_limit = 0;
-unsigned amdgpu_gart_size = 256;
+int amdgpu_gart_size = -1; /* auto */
int amdgpu_gtt_size = -1; /* auto */
int amdgpu_moverate = -1; /* auto */
int amdgpu_benchmarking = 0;
@@ -128,7 +128,7 @@ module_param_named(vramlimit, amdgpu_vram_limit, int, 0600);
MODULE_PARM_DESC(vis_vramlimit, "Restrict visible VRAM for testing, in megabytes");
module_param_named(vis_vramlimit, amdgpu_vis_vram_limit, int, 0444);
-MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc.)");
+MODULE_PARM_DESC(gartsize, "Size of GART to setup in megabytes (32, 64, etc., -1=auto)");
module_param_named(gartsize, amdgpu_gart_size, uint, 0600);
MODULE_PARM_DESC(gttsize, "Size of the GTT domain in megabytes (-1 = auto)");
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
index 94c1e2e8e34c..f4370081f6e6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
@@ -57,18 +57,6 @@
*/
/**
- * amdgpu_gart_set_defaults - set the default gart_size
- *
- * @adev: amdgpu_device pointer
- *
- * Set the default gart_size based on parameters and available VRAM.
- */
-void amdgpu_gart_set_defaults(struct amdgpu_device *adev)
-{
- adev->mc.gart_size = (uint64_t)amdgpu_gart_size << 20;
-}
-
-/**
* amdgpu_gart_table_ram_alloc - allocate system ram for gart page table
*
* @adev: amdgpu_device pointer
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.h
index d4cce6936200..afbe803b1a13 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.h
@@ -56,7 +56,6 @@ struct amdgpu_gart {
const struct amdgpu_gart_funcs *gart_funcs;
};
-void amdgpu_gart_set_defaults(struct amdgpu_device *adev);
int amdgpu_gart_table_ram_alloc(struct amdgpu_device *adev);
void amdgpu_gart_table_ram_free(struct amdgpu_device *adev);
int amdgpu_gart_table_vram_alloc(struct amdgpu_device *adev);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
index 9e05e257729f..0d15eb7d31d7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
@@ -108,10 +108,10 @@ bool amdgpu_gtt_mgr_is_allocated(struct ttm_mem_reg *mem)
*
* Allocate the address space for a node.
*/
-int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man,
- struct ttm_buffer_object *tbo,
- const struct ttm_place *place,
- struct ttm_mem_reg *mem)
+static int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man,
+ struct ttm_buffer_object *tbo,
+ const struct ttm_place *place,
+ struct ttm_mem_reg *mem)
{
struct amdgpu_device *adev = amdgpu_ttm_adev(man->bdev);
struct amdgpu_gtt_mgr *mgr = man->priv;
@@ -143,12 +143,8 @@ int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man,
fpfn, lpfn, mode);
spin_unlock(&mgr->lock);
- if (!r) {
+ if (!r)
mem->start = node->start;
- if (&tbo->mem == mem)
- tbo->offset = (tbo->mem.start << PAGE_SHIFT) +
- tbo->bdev->man[tbo->mem.mem_type].gpu_offset;
- }
return r;
}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
index 4bdd851f56d0..538e5f27d120 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
@@ -221,8 +221,9 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
spin_lock_init(&adev->irq.lock);
- /* Disable vblank irqs aggressively for power-saving */
- adev->ddev->vblank_disable_immediate = true;
+ if (!adev->enable_virtual_display)
+ /* Disable vblank irqs aggressively for power-saving */
+ adev->ddev->vblank_disable_immediate = true;
r = drm_vblank_init(adev->ddev, adev->mode_info.num_crtc);
if (r) {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index e7e899190bef..9e495da0bb03 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -91,7 +91,10 @@ static void amdgpu_ttm_placement_init(struct amdgpu_device *adev,
if (domain & AMDGPU_GEM_DOMAIN_GTT) {
places[c].fpfn = 0;
- places[c].lpfn = 0;
+ if (flags & AMDGPU_GEM_CREATE_SHADOW)
+ places[c].lpfn = adev->mc.gart_size >> PAGE_SHIFT;
+ else
+ places[c].lpfn = 0;
places[c].flags = TTM_PL_FLAG_TT;
if (flags & AMDGPU_GEM_CREATE_CPU_GTT_USWC)
places[c].flags |= TTM_PL_FLAG_WC |
@@ -446,17 +449,16 @@ static int amdgpu_bo_create_shadow(struct amdgpu_device *adev,
if (bo->shadow)
return 0;
- bo->flags |= AMDGPU_GEM_CREATE_SHADOW;
- memset(&placements, 0,
- (AMDGPU_GEM_DOMAIN_MAX + 1) * sizeof(struct ttm_place));
-
- amdgpu_ttm_placement_init(adev, &placement,
- placements, AMDGPU_GEM_DOMAIN_GTT,
- AMDGPU_GEM_CREATE_CPU_GTT_USWC);
+ memset(&placements, 0, sizeof(placements));
+ amdgpu_ttm_placement_init(adev, &placement, placements,
+ AMDGPU_GEM_DOMAIN_GTT,
+ AMDGPU_GEM_CREATE_CPU_GTT_USWC |
+ AMDGPU_GEM_CREATE_SHADOW);
r = amdgpu_bo_create_restricted(adev, size, byte_align, true,
AMDGPU_GEM_DOMAIN_GTT,
- AMDGPU_GEM_CREATE_CPU_GTT_USWC,
+ AMDGPU_GEM_CREATE_CPU_GTT_USWC |
+ AMDGPU_GEM_CREATE_SHADOW,
NULL, &placement,
bo->tbo.resv,
0,
@@ -484,30 +486,28 @@ int amdgpu_bo_create(struct amdgpu_device *adev,
{
struct ttm_placement placement = {0};
struct ttm_place placements[AMDGPU_GEM_DOMAIN_MAX + 1];
+ uint64_t parent_flags = flags & ~AMDGPU_GEM_CREATE_SHADOW;
int r;
- memset(&placements, 0,
- (AMDGPU_GEM_DOMAIN_MAX + 1) * sizeof(struct ttm_place));
+ memset(&placements, 0, sizeof(placements));
+ amdgpu_ttm_placement_init(adev, &placement, placements,
+ domain, parent_flags);
- amdgpu_ttm_placement_init(adev, &placement,
- placements, domain, flags);
-
- r = amdgpu_bo_create_restricted(adev, size, byte_align, kernel,
- domain, flags, sg, &placement,
- resv, init_value, bo_ptr);
+ r = amdgpu_bo_create_restricted(adev, size, byte_align, kernel, domain,
+ parent_flags, sg, &placement, resv,
+ init_value, bo_ptr);
if (r)
return r;
- if (amdgpu_need_backup(adev) && (flags & AMDGPU_GEM_CREATE_SHADOW)) {
- if (!resv) {
- r = ww_mutex_lock(&(*bo_ptr)->tbo.resv->lock, NULL);
- WARN_ON(r != 0);
- }
+ if ((flags & AMDGPU_GEM_CREATE_SHADOW) && amdgpu_need_backup(adev)) {
+ if (!resv)
+ WARN_ON(reservation_object_lock((*bo_ptr)->tbo.resv,
+ NULL));
r = amdgpu_bo_create_shadow(adev, size, byte_align, (*bo_ptr));
if (!resv)
- ww_mutex_unlock(&(*bo_ptr)->tbo.resv->lock);
+ reservation_object_unlock((*bo_ptr)->tbo.resv);
if (r)
amdgpu_bo_unref(bo_ptr);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
index 6c5646b48d1a..5ce65280b396 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
@@ -170,6 +170,16 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
unsigned irq_type)
{
int r;
+ int sched_hw_submission = amdgpu_sched_hw_submission;
+
+ /* Set the hw submission limit higher for KIQ because
+ * it's used for a number of gfx/compute tasks by both
+ * KFD and KGD which may have outstanding fences and
+ * it doesn't really use the gpu scheduler anyway;
+ * KIQ tasks get submitted directly to the ring.
+ */
+ if (ring->funcs->type == AMDGPU_RING_TYPE_KIQ)
+ sched_hw_submission = max(sched_hw_submission, 256);
if (ring->adev == NULL) {
if (adev->num_rings >= AMDGPU_MAX_RINGS)
@@ -178,8 +188,7 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
ring->adev = adev;
ring->idx = adev->num_rings++;
adev->rings[ring->idx] = ring;
- r = amdgpu_fence_driver_init_ring(ring,
- amdgpu_sched_hw_submission);
+ r = amdgpu_fence_driver_init_ring(ring, sched_hw_submission);
if (r)
return r;
}
@@ -218,8 +227,7 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
return r;
}
- ring->ring_size = roundup_pow_of_two(max_dw * 4 *
- amdgpu_sched_hw_submission);
+ ring->ring_size = roundup_pow_of_two(max_dw * 4 * sched_hw_submission);
ring->buf_mask = (ring->ring_size / 4) - 1;
ring->ptr_mask = ring->funcs->support_64bit_ptrs ?
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
index 1c88bd5e29ad..34c99a3c8d2d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_AMDGPU_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define _AMDGPU_TRACE_H_
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace_points.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace_points.c
index 385b7e1d72f9..89680d554ed8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace_points.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace_points.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Copyright Red Hat Inc 2010.
* Author : Dave Airlie <airlied@redhat.com>
*/
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 8b2c294f6f79..bc746131987f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -761,35 +761,11 @@ static void amdgpu_ttm_tt_unpin_userptr(struct ttm_tt *ttm)
sg_free_table(ttm->sg);
}
-static int amdgpu_ttm_do_bind(struct ttm_tt *ttm, struct ttm_mem_reg *mem)
-{
- struct amdgpu_ttm_tt *gtt = (void *)ttm;
- uint64_t flags;
- int r;
-
- spin_lock(&gtt->adev->gtt_list_lock);
- flags = amdgpu_ttm_tt_pte_flags(gtt->adev, ttm, mem);
- gtt->offset = (u64)mem->start << PAGE_SHIFT;
- r = amdgpu_gart_bind(gtt->adev, gtt->offset, ttm->num_pages,
- ttm->pages, gtt->ttm.dma_address, flags);
-
- if (r) {
- DRM_ERROR("failed to bind %lu pages at 0x%08llX\n",
- ttm->num_pages, gtt->offset);
- goto error_gart_bind;
- }
-
- list_add_tail(&gtt->list, &gtt->adev->gtt_list);
-error_gart_bind:
- spin_unlock(&gtt->adev->gtt_list_lock);
- return r;
-
-}
-
static int amdgpu_ttm_backend_bind(struct ttm_tt *ttm,
struct ttm_mem_reg *bo_mem)
{
struct amdgpu_ttm_tt *gtt = (void*)ttm;
+ uint64_t flags;
int r = 0;
if (gtt->userptr) {
@@ -809,9 +785,24 @@ static int amdgpu_ttm_backend_bind(struct ttm_tt *ttm,
bo_mem->mem_type == AMDGPU_PL_OA)
return -EINVAL;
- if (amdgpu_gtt_mgr_is_allocated(bo_mem))
- r = amdgpu_ttm_do_bind(ttm, bo_mem);
+ if (!amdgpu_gtt_mgr_is_allocated(bo_mem))
+ return 0;
+
+ spin_lock(&gtt->adev->gtt_list_lock);
+ flags = amdgpu_ttm_tt_pte_flags(gtt->adev, ttm, bo_mem);
+ gtt->offset = (u64)bo_mem->start << PAGE_SHIFT;
+ r = amdgpu_gart_bind(gtt->adev, gtt->offset, ttm->num_pages,
+ ttm->pages, gtt->ttm.dma_address, flags);
+
+ if (r) {
+ DRM_ERROR("failed to bind %lu pages at 0x%08llX\n",
+ ttm->num_pages, gtt->offset);
+ goto error_gart_bind;
+ }
+ list_add_tail(&gtt->list, &gtt->adev->gtt_list);
+error_gart_bind:
+ spin_unlock(&gtt->adev->gtt_list_lock);
return r;
}
@@ -824,20 +815,39 @@ bool amdgpu_ttm_is_bound(struct ttm_tt *ttm)
int amdgpu_ttm_bind(struct ttm_buffer_object *bo, struct ttm_mem_reg *bo_mem)
{
+ struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev);
struct ttm_tt *ttm = bo->ttm;
+ struct ttm_mem_reg tmp;
+
+ struct ttm_placement placement;
+ struct ttm_place placements;
int r;
if (!ttm || amdgpu_ttm_is_bound(ttm))
return 0;
- r = amdgpu_gtt_mgr_alloc(&bo->bdev->man[TTM_PL_TT], bo,
- NULL, bo_mem);
- if (r) {
- DRM_ERROR("Failed to allocate GTT address space (%d)\n", r);
+ tmp = bo->mem;
+ tmp.mm_node = NULL;
+ placement.num_placement = 1;
+ placement.placement = &placements;
+ placement.num_busy_placement = 1;
+ placement.busy_placement = &placements;
+ placements.fpfn = 0;
+ placements.lpfn = adev->mc.gart_size >> PAGE_SHIFT;
+ placements.flags = bo->mem.placement | TTM_PL_FLAG_TT;
+
+ r = ttm_bo_mem_space(bo, &placement, &tmp, true, false);
+ if (unlikely(r))
return r;
- }
- return amdgpu_ttm_do_bind(ttm, bo_mem);
+ r = ttm_bo_move_ttm(bo, true, false, &tmp);
+ if (unlikely(r))
+ ttm_bo_mem_put(bo, &tmp);
+ else
+ bo->offset = (bo->mem.start << PAGE_SHIFT) +
+ bo->bdev->man[bo->mem.mem_type].gpu_offset;
+
+ return r;
}
int amdgpu_ttm_recover_gart(struct amdgpu_device *adev)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
index f22a4758719d..43093bffa2cf 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
@@ -62,10 +62,6 @@ extern const struct ttm_mem_type_manager_func amdgpu_gtt_mgr_func;
extern const struct ttm_mem_type_manager_func amdgpu_vram_mgr_func;
bool amdgpu_gtt_mgr_is_allocated(struct ttm_mem_reg *mem);
-int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man,
- struct ttm_buffer_object *tbo,
- const struct ttm_place *place,
- struct ttm_mem_reg *mem);
uint64_t amdgpu_gtt_mgr_usage(struct ttm_mem_type_manager *man);
uint64_t amdgpu_vram_mgr_usage(struct ttm_mem_type_manager *man);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index b9a5a77eedaf..bd20ff018512 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -165,14 +165,6 @@ static int amdgpu_vm_validate_level(struct amdgpu_vm_pt *parent,
unsigned i;
int r;
- if (parent->bo->shadow) {
- struct amdgpu_bo *shadow = parent->bo->shadow;
-
- r = amdgpu_ttm_bind(&shadow->tbo, &shadow->tbo.mem);
- if (r)
- return r;
- }
-
if (use_cpu_for_update) {
r = amdgpu_bo_kmap(parent->bo, NULL);
if (r)
@@ -1277,7 +1269,7 @@ static void amdgpu_vm_handle_huge_pages(struct amdgpu_pte_update_params *p,
/* In the case of a mixed PT the PDE must point to it*/
if (p->adev->asic_type < CHIP_VEGA10 ||
nptes != AMDGPU_VM_PTE_COUNT(p->adev) ||
- p->func == amdgpu_vm_do_copy_ptes ||
+ p->src ||
!(flags & AMDGPU_PTE_VALID)) {
dst = amdgpu_bo_gpu_offset(entry->bo);
@@ -1294,9 +1286,23 @@ static void amdgpu_vm_handle_huge_pages(struct amdgpu_pte_update_params *p,
entry->addr = (dst | flags);
if (use_cpu_update) {
+ /* In case a huge page is replaced with a system
+ * memory mapping, p->pages_addr != NULL and
+ * amdgpu_vm_cpu_set_ptes would try to translate dst
+ * through amdgpu_vm_map_gart. But dst is already a
+ * GPU address (of the page table). Disable
+ * amdgpu_vm_map_gart temporarily.
+ */
+ dma_addr_t *tmp;
+
+ tmp = p->pages_addr;
+ p->pages_addr = NULL;
+
pd_addr = (unsigned long)amdgpu_bo_kptr(parent->bo);
pde = pd_addr + (entry - parent->entries) * 8;
amdgpu_vm_cpu_set_ptes(p, pde, dst, 1, 0, flags);
+
+ p->pages_addr = tmp;
} else {
if (parent->bo->shadow) {
pd_addr = amdgpu_bo_gpu_offset(parent->bo->shadow);
@@ -1610,7 +1616,6 @@ error_free:
*
* @adev: amdgpu_device pointer
* @exclusive: fence we need to sync to
- * @gtt_flags: flags as they are used for GTT
* @pages_addr: DMA addresses to use for mapping
* @vm: requested vm
* @mapping: mapped range and flags to use for the update
@@ -1624,7 +1629,6 @@ error_free:
*/
static int amdgpu_vm_bo_split_mapping(struct amdgpu_device *adev,
struct dma_fence *exclusive,
- uint64_t gtt_flags,
dma_addr_t *pages_addr,
struct amdgpu_vm *vm,
struct amdgpu_bo_va_mapping *mapping,
@@ -1679,11 +1683,7 @@ static int amdgpu_vm_bo_split_mapping(struct amdgpu_device *adev,
}
if (pages_addr) {
- if (flags == gtt_flags)
- src = adev->gart.table_addr +
- (addr >> AMDGPU_GPU_PAGE_SHIFT) * 8;
- else
- max_entries = min(max_entries, 16ull * 1024ull);
+ max_entries = min(max_entries, 16ull * 1024ull);
addr = 0;
} else if (flags & AMDGPU_PTE_VALID) {
addr += adev->vm_manager.vram_base_offset;
@@ -1728,10 +1728,10 @@ int amdgpu_vm_bo_update(struct amdgpu_device *adev,
struct amdgpu_vm *vm = bo_va->base.vm;
struct amdgpu_bo_va_mapping *mapping;
dma_addr_t *pages_addr = NULL;
- uint64_t gtt_flags, flags;
struct ttm_mem_reg *mem;
struct drm_mm_node *nodes;
struct dma_fence *exclusive;
+ uint64_t flags;
int r;
if (clear || !bo_va->base.bo) {
@@ -1751,15 +1751,10 @@ int amdgpu_vm_bo_update(struct amdgpu_device *adev,
exclusive = reservation_object_get_excl(bo->tbo.resv);
}
- if (bo) {
+ if (bo)
flags = amdgpu_ttm_tt_pte_flags(adev, bo->tbo.ttm, mem);
- gtt_flags = (amdgpu_ttm_is_bound(bo->tbo.ttm) &&
- adev == amdgpu_ttm_adev(bo->tbo.bdev)) ?
- flags : 0;
- } else {
+ else
flags = 0x0;
- gtt_flags = ~0x0;
- }
spin_lock(&vm->status_lock);
if (!list_empty(&bo_va->base.vm_status))
@@ -1767,8 +1762,7 @@ int amdgpu_vm_bo_update(struct amdgpu_device *adev,
spin_unlock(&vm->status_lock);
list_for_each_entry(mapping, &bo_va->invalids, list) {
- r = amdgpu_vm_bo_split_mapping(adev, exclusive,
- gtt_flags, pages_addr, vm,
+ r = amdgpu_vm_bo_split_mapping(adev, exclusive, pages_addr, vm,
mapping, flags, nodes,
&bo_va->last_pt_update);
if (r)
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
index d228f5a99044..dbbe986f90f2 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
@@ -636,7 +636,194 @@ static void gfx_v6_0_tiling_mode_table_init(struct amdgpu_device *adev)
NUM_BANKS(ADDR_SURF_2_BANK);
for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++)
WREG32(mmGB_TILE_MODE0 + reg_offset, tilemode[reg_offset]);
- } else if (adev->asic_type == CHIP_OLAND || adev->asic_type == CHIP_HAINAN) {
+ } else if (adev->asic_type == CHIP_OLAND) {
+ tilemode[0] = MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4);
+ tilemode[1] = MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4);
+ tilemode[2] = MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4);
+ tilemode[3] = MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4);
+ tilemode[4] = MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[5] = MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(split_equal_to_row_size) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[6] = MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(split_equal_to_row_size) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[7] = MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(split_equal_to_row_size) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4);
+ tilemode[8] = MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_LINEAR_ALIGNED) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[9] = MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[10] = MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4);
+ tilemode[11] = MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[12] = MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[13] = MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_1D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[14] = MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[15] = MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[16] = MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[17] = MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P4_8x16) |
+ TILE_SPLIT(split_equal_to_row_size) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[21] = MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[22] = MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4);
+ tilemode[23] = MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[24] = MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) |
+ NUM_BANKS(ADDR_SURF_16_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2);
+ tilemode[25] = MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) |
+ ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
+ PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) |
+ TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) |
+ NUM_BANKS(ADDR_SURF_8_BANK) |
+ BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) |
+ BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) |
+ MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1);
+ for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++)
+ WREG32(mmGB_TILE_MODE0 + reg_offset, tilemode[reg_offset]);
+ } else if (adev->asic_type == CHIP_HAINAN) {
tilemode[0] = MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) |
ARRAY_MODE(ARRAY_2D_TILED_THIN1) |
PIPE_CONFIG(ADDR_SURF_P2) |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 832e592fcd07..fc260c13b1da 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -4579,9 +4579,9 @@ static int gfx_v8_0_mqd_init(struct amdgpu_ring *ring)
mqd->compute_misc_reserved = 0x00000003;
if (!(adev->flags & AMD_IS_APU)) {
mqd->dynamic_cu_mask_addr_lo = lower_32_bits(ring->mqd_gpu_addr
- + offsetof(struct vi_mqd_allocation, dyamic_cu_mask));
+ + offsetof(struct vi_mqd_allocation, dynamic_cu_mask));
mqd->dynamic_cu_mask_addr_hi = upper_32_bits(ring->mqd_gpu_addr
- + offsetof(struct vi_mqd_allocation, dyamic_cu_mask));
+ + offsetof(struct vi_mqd_allocation, dynamic_cu_mask));
}
eop_base_addr = ring->eop_gpu_addr >> 8;
mqd->cp_hqd_eop_base_addr_lo = eop_base_addr;
@@ -4768,8 +4768,8 @@ static int gfx_v8_0_kiq_init_queue(struct amdgpu_ring *ring)
mutex_unlock(&adev->srbm_mutex);
} else {
memset((void *)mqd, 0, sizeof(struct vi_mqd_allocation));
- ((struct vi_mqd_allocation *)mqd)->dyamic_cu_mask = 0xFFFFFFFF;
- ((struct vi_mqd_allocation *)mqd)->dyamic_rb_mask = 0xFFFFFFFF;
+ ((struct vi_mqd_allocation *)mqd)->dynamic_cu_mask = 0xFFFFFFFF;
+ ((struct vi_mqd_allocation *)mqd)->dynamic_rb_mask = 0xFFFFFFFF;
mutex_lock(&adev->srbm_mutex);
vi_srbm_select(adev, ring->me, ring->pipe, ring->queue, 0);
gfx_v8_0_mqd_init(ring);
@@ -4792,8 +4792,8 @@ static int gfx_v8_0_kcq_init_queue(struct amdgpu_ring *ring)
if (!adev->gfx.in_reset && !adev->gfx.in_suspend) {
memset((void *)mqd, 0, sizeof(struct vi_mqd_allocation));
- ((struct vi_mqd_allocation *)mqd)->dyamic_cu_mask = 0xFFFFFFFF;
- ((struct vi_mqd_allocation *)mqd)->dyamic_rb_mask = 0xFFFFFFFF;
+ ((struct vi_mqd_allocation *)mqd)->dynamic_cu_mask = 0xFFFFFFFF;
+ ((struct vi_mqd_allocation *)mqd)->dynamic_rb_mask = 0xFFFFFFFF;
mutex_lock(&adev->srbm_mutex);
vi_srbm_select(adev, ring->me, ring->pipe, ring->queue, 0);
gfx_v8_0_mqd_init(ring);
diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
index 4f2788b61a08..6c8040e616c4 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
@@ -124,7 +124,7 @@ static void gfxhub_v1_0_init_tlb_regs(struct amdgpu_device *adev)
static void gfxhub_v1_0_init_cache_regs(struct amdgpu_device *adev)
{
- uint32_t tmp, field;
+ uint32_t tmp;
/* Setup L2 cache */
tmp = RREG32_SOC15(GC, 0, mmVM_L2_CNTL);
@@ -143,9 +143,8 @@ static void gfxhub_v1_0_init_cache_regs(struct amdgpu_device *adev)
tmp = REG_SET_FIELD(tmp, VM_L2_CNTL2, INVALIDATE_L2_CACHE, 1);
WREG32_SOC15(GC, 0, mmVM_L2_CNTL2, tmp);
- field = adev->vm_manager.fragment_size;
tmp = mmVM_L2_CNTL3_DEFAULT;
- tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, BANK_SELECT, field);
+ tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, BANK_SELECT, 9);
tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, L2_CACHE_BIGK_FRAGMENT_SIZE, 6);
WREG32_SOC15(GC, 0, mmVM_L2_CNTL3, tmp);
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
index 12b0c4cd7a5a..5be9c83dfcf7 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
@@ -332,7 +332,24 @@ static int gmc_v6_0_mc_init(struct amdgpu_device *adev)
adev->mc.real_vram_size = RREG32(mmCONFIG_MEMSIZE) * 1024ULL * 1024ULL;
adev->mc.visible_vram_size = adev->mc.aper_size;
- amdgpu_gart_set_defaults(adev);
+ /* set the gart size */
+ if (amdgpu_gart_size == -1) {
+ switch (adev->asic_type) {
+ case CHIP_HAINAN: /* no MM engines */
+ default:
+ adev->mc.gart_size = 256ULL << 20;
+ break;
+ case CHIP_VERDE: /* UVD, VCE do not support GPUVM */
+ case CHIP_TAHITI: /* UVD, VCE do not support GPUVM */
+ case CHIP_PITCAIRN: /* UVD, VCE do not support GPUVM */
+ case CHIP_OLAND: /* UVD, VCE do not support GPUVM */
+ adev->mc.gart_size = 1024ULL << 20;
+ break;
+ }
+ } else {
+ adev->mc.gart_size = (u64)amdgpu_gart_size << 20;
+ }
+
gmc_v6_0_vram_gtt_location(adev, &adev->mc);
return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
index e42c1ad3af5e..eace9e7182c8 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
@@ -386,7 +386,27 @@ static int gmc_v7_0_mc_init(struct amdgpu_device *adev)
if (adev->mc.visible_vram_size > adev->mc.real_vram_size)
adev->mc.visible_vram_size = adev->mc.real_vram_size;
- amdgpu_gart_set_defaults(adev);
+ /* set the gart size */
+ if (amdgpu_gart_size == -1) {
+ switch (adev->asic_type) {
+ case CHIP_TOPAZ: /* no MM engines */
+ default:
+ adev->mc.gart_size = 256ULL << 20;
+ break;
+#ifdef CONFIG_DRM_AMDGPU_CIK
+ case CHIP_BONAIRE: /* UVD, VCE do not support GPUVM */
+ case CHIP_HAWAII: /* UVD, VCE do not support GPUVM */
+ case CHIP_KAVERI: /* UVD, VCE do not support GPUVM */
+ case CHIP_KABINI: /* UVD, VCE do not support GPUVM */
+ case CHIP_MULLINS: /* UVD, VCE do not support GPUVM */
+ adev->mc.gart_size = 1024ULL << 20;
+ break;
+#endif
+ }
+ } else {
+ adev->mc.gart_size = (u64)amdgpu_gart_size << 20;
+ }
+
gmc_v7_0_vram_gtt_location(adev, &adev->mc);
return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
index 7ca2dae8237a..3b3326daf32b 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
@@ -562,7 +562,26 @@ static int gmc_v8_0_mc_init(struct amdgpu_device *adev)
if (adev->mc.visible_vram_size > adev->mc.real_vram_size)
adev->mc.visible_vram_size = adev->mc.real_vram_size;
- amdgpu_gart_set_defaults(adev);
+ /* set the gart size */
+ if (amdgpu_gart_size == -1) {
+ switch (adev->asic_type) {
+ case CHIP_POLARIS11: /* all engines support GPUVM */
+ case CHIP_POLARIS10: /* all engines support GPUVM */
+ case CHIP_POLARIS12: /* all engines support GPUVM */
+ default:
+ adev->mc.gart_size = 256ULL << 20;
+ break;
+ case CHIP_TONGA: /* UVD, VCE do not support GPUVM */
+ case CHIP_FIJI: /* UVD, VCE do not support GPUVM */
+ case CHIP_CARRIZO: /* UVD, VCE do not support GPUVM, DCE SG support */
+ case CHIP_STONEY: /* UVD does not support GPUVM, DCE SG support */
+ adev->mc.gart_size = 1024ULL << 20;
+ break;
+ }
+ } else {
+ adev->mc.gart_size = (u64)amdgpu_gart_size << 20;
+ }
+
gmc_v8_0_vram_gtt_location(adev, &adev->mc);
return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index 2769c2b3b56e..d04d0b123212 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -499,7 +499,21 @@ static int gmc_v9_0_mc_init(struct amdgpu_device *adev)
if (adev->mc.visible_vram_size > adev->mc.real_vram_size)
adev->mc.visible_vram_size = adev->mc.real_vram_size;
- amdgpu_gart_set_defaults(adev);
+ /* set the gart size */
+ if (amdgpu_gart_size == -1) {
+ switch (adev->asic_type) {
+ case CHIP_VEGA10: /* all engines support GPUVM */
+ default:
+ adev->mc.gart_size = 256ULL << 20;
+ break;
+ case CHIP_RAVEN: /* DCE SG support */
+ adev->mc.gart_size = 1024ULL << 20;
+ break;
+ }
+ } else {
+ adev->mc.gart_size = (u64)amdgpu_gart_size << 20;
+ }
+
gmc_v9_0_vram_gtt_location(adev, &adev->mc);
return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
index 4395a4f12149..74cb647da30e 100644
--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
@@ -138,7 +138,7 @@ static void mmhub_v1_0_init_tlb_regs(struct amdgpu_device *adev)
static void mmhub_v1_0_init_cache_regs(struct amdgpu_device *adev)
{
- uint32_t tmp, field;
+ uint32_t tmp;
/* Setup L2 cache */
tmp = RREG32_SOC15(MMHUB, 0, mmVM_L2_CNTL);
@@ -157,9 +157,8 @@ static void mmhub_v1_0_init_cache_regs(struct amdgpu_device *adev)
tmp = REG_SET_FIELD(tmp, VM_L2_CNTL2, INVALIDATE_L2_CACHE, 1);
WREG32_SOC15(MMHUB, 0, mmVM_L2_CNTL2, tmp);
- field = adev->vm_manager.fragment_size;
tmp = mmVM_L2_CNTL3_DEFAULT;
- tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, BANK_SELECT, field);
+ tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, BANK_SELECT, 9);
tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, L2_CACHE_BIGK_FRAGMENT_SIZE, 6);
WREG32_SOC15(MMHUB, 0, mmVM_L2_CNTL3, tmp);
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
index 31db356476f8..62cd16a23921 100644
--- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
@@ -93,6 +93,10 @@ static int uvd_v6_0_early_init(void *handle)
{
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+ if (!(adev->flags & AMD_IS_APU) &&
+ (RREG32_SMC(ixCC_HARVEST_FUSES) & CC_HARVEST_FUSES__UVD_DISABLE_MASK))
+ return -ENOENT;
+
uvd_v6_0_set_ring_funcs(adev);
uvd_v6_0_set_irq_funcs(adev);
@@ -225,11 +229,7 @@ static int uvd_v6_0_suspend(void *handle)
if (r)
return r;
- /* Skip this for APU for now */
- if (!(adev->flags & AMD_IS_APU))
- r = amdgpu_uvd_suspend(adev);
-
- return r;
+ return amdgpu_uvd_suspend(adev);
}
static int uvd_v6_0_resume(void *handle)
@@ -237,12 +237,10 @@ static int uvd_v6_0_resume(void *handle)
int r;
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
- /* Skip this for APU for now */
- if (!(adev->flags & AMD_IS_APU)) {
- r = amdgpu_uvd_resume(adev);
- if (r)
- return r;
- }
+ r = amdgpu_uvd_resume(adev);
+ if (r)
+ return r;
+
return uvd_v6_0_hw_init(adev);
}
diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
index 90332f55cfba..cf81065e3c5a 100644
--- a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
@@ -365,15 +365,10 @@ static unsigned vce_v3_0_get_harvest_config(struct amdgpu_device *adev)
{
u32 tmp;
- /* Fiji, Stoney, Polaris10, Polaris11, Polaris12 are single pipe */
if ((adev->asic_type == CHIP_FIJI) ||
- (adev->asic_type == CHIP_STONEY) ||
- (adev->asic_type == CHIP_POLARIS10) ||
- (adev->asic_type == CHIP_POLARIS11) ||
- (adev->asic_type == CHIP_POLARIS12))
+ (adev->asic_type == CHIP_STONEY))
return AMDGPU_VCE_HARVEST_VCE1;
- /* Tonga and CZ are dual or single pipe */
if (adev->flags & AMD_IS_APU)
tmp = (RREG32_SMC(ixVCE_HARVEST_FUSE_MACRO__ADDRESS) &
VCE_HARVEST_FUSE_MACRO__MASK) >>
@@ -391,6 +386,11 @@ static unsigned vce_v3_0_get_harvest_config(struct amdgpu_device *adev)
case 3:
return AMDGPU_VCE_HARVEST_VCE0 | AMDGPU_VCE_HARVEST_VCE1;
default:
+ if ((adev->asic_type == CHIP_POLARIS10) ||
+ (adev->asic_type == CHIP_POLARIS11) ||
+ (adev->asic_type == CHIP_POLARIS12))
+ return AMDGPU_VCE_HARVEST_VCE1;
+
return 0;
}
}
diff --git a/drivers/gpu/drm/amd/amdkfd/Makefile b/drivers/gpu/drm/amd/amdkfd/Makefile
index b400d5664252..7bb0bc0ca3d6 100644
--- a/drivers/gpu/drm/amd/amdkfd/Makefile
+++ b/drivers/gpu/drm/amd/amdkfd/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Heterogenous System Architecture support for AMD GPU devices
#
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
index e4a8c2e52cb2..660b3fbade41 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
@@ -892,6 +892,8 @@ static int kfd_ioctl_get_tile_config(struct file *filep,
int err = 0;
dev = kfd_device_by_id(args->gpu_id);
+ if (!dev)
+ return -EINVAL;
dev->kfd2kgd->get_tile_config(dev->kgd, &config);
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
index 5979158c3f7b..944abfad39c1 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
@@ -292,7 +292,10 @@ static int create_signal_event(struct file *devkfd,
struct kfd_event *ev)
{
if (p->signal_event_count == KFD_SIGNAL_EVENT_LIMIT) {
- pr_warn("Signal event wasn't created because limit was reached\n");
+ if (!p->signal_event_limit_reached) {
+ pr_warn("Signal event wasn't created because limit was reached\n");
+ p->signal_event_limit_reached = true;
+ }
return -ENOMEM;
}
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
index 681b639f5133..ed71ad40e8f7 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
@@ -183,8 +183,8 @@ static void uninitialize(struct kernel_queue *kq)
{
if (kq->queue->properties.type == KFD_QUEUE_TYPE_HIQ)
kq->mqd->destroy_mqd(kq->mqd,
- NULL,
- false,
+ kq->queue->mqd,
+ KFD_PREEMPT_TYPE_WAVEFRONT_RESET,
QUEUE_PREEMPT_DEFAULT_TIMEOUT_MS,
kq->queue->pipe,
kq->queue->queue);
@@ -210,6 +210,11 @@ static int acquire_packet_buffer(struct kernel_queue *kq,
uint32_t wptr, rptr;
unsigned int *queue_address;
+ /* When rptr == wptr, the buffer is empty.
+ * When rptr == wptr + 1, the buffer is full.
+ * It is always rptr that advances to the position of wptr, rather than
+ * the opposite. So we can only use up to queue_size_dwords - 1 dwords.
+ */
rptr = *kq->rptr_kernel;
wptr = *kq->wptr_kernel;
queue_address = (unsigned int *)kq->pq_kernel_addr;
@@ -219,11 +224,10 @@ static int acquire_packet_buffer(struct kernel_queue *kq,
pr_debug("wptr: %d\n", wptr);
pr_debug("queue_address 0x%p\n", queue_address);
- available_size = (rptr - 1 - wptr + queue_size_dwords) %
+ available_size = (rptr + queue_size_dwords - 1 - wptr) %
queue_size_dwords;
- if (packet_size_in_dwords >= queue_size_dwords ||
- packet_size_in_dwords >= available_size) {
+ if (packet_size_in_dwords > available_size) {
/*
* make sure calling functions know
* acquire_packet_buffer() failed
@@ -233,6 +237,14 @@ static int acquire_packet_buffer(struct kernel_queue *kq,
}
if (wptr + packet_size_in_dwords >= queue_size_dwords) {
+ /* make sure after rolling back to position 0, there is
+ * still enough space.
+ */
+ if (packet_size_in_dwords >= rptr) {
+ *buffer_ptr = NULL;
+ return -ENOMEM;
+ }
+ /* fill nops, roll back and start at position 0 */
while (wptr > 0) {
queue_address[wptr] = kq->nop_packet;
wptr = (wptr + 1) % queue_size_dwords;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
index b397ec726400..b87e96cee5fa 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
@@ -521,6 +521,7 @@ struct kfd_process {
struct list_head signal_event_pages;
u32 next_nonsignal_event_id;
size_t signal_event_count;
+ bool signal_event_limit_reached;
};
/**
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
index 1cae95e2b13a..03bec765b03d 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
@@ -143,7 +143,6 @@ int pqm_create_queue(struct process_queue_manager *pqm,
int num_queues = 0;
struct queue *cur;
- memset(&q_properties, 0, sizeof(struct queue_properties));
memcpy(&q_properties, properties, sizeof(struct queue_properties));
q = NULL;
kq = NULL;
diff --git a/drivers/gpu/drm/amd/include/vi_structs.h b/drivers/gpu/drm/amd/include/vi_structs.h
index ca93b5160ba6..3e606a761d0e 100644
--- a/drivers/gpu/drm/amd/include/vi_structs.h
+++ b/drivers/gpu/drm/amd/include/vi_structs.h
@@ -419,8 +419,8 @@ struct vi_mqd_allocation {
struct vi_mqd mqd;
uint32_t wptr_poll_mem;
uint32_t rptr_report_mem;
- uint32_t dyamic_cu_mask;
- uint32_t dyamic_rb_mask;
+ uint32_t dynamic_cu_mask;
+ uint32_t dynamic_rb_mask;
};
struct cz_mqd {
diff --git a/drivers/gpu/drm/amd/powerplay/Makefile b/drivers/gpu/drm/amd/powerplay/Makefile
index 4e132b936e3d..72d5f50508b6 100644
--- a/drivers/gpu/drm/amd/powerplay/Makefile
+++ b/drivers/gpu/drm/amd/powerplay/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-y += \
-I$(FULL_AMD_PATH)/powerplay/inc/ \
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/Makefile b/drivers/gpu/drm/amd/powerplay/hwmgr/Makefile
index f0277c16c2bf..d13fdadbbf9e 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/Makefile
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the 'hw manager' sub-component of powerplay.
# It provides the hardware management services for the driver.
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_overdriver.c b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_overdriver.c
index d09f25485844..e0766c5e3d74 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_overdriver.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_overdriver.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "pp_overdriver.h"
#include <linux/errno.h>
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
index c2743233ba10..b526f49be65d 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
@@ -830,7 +830,7 @@ uint32_t smu7_get_xclk(struct pp_hwmgr *hwmgr)
{
uint32_t reference_clock, tmp;
struct cgs_display_info info = {0};
- struct cgs_mode_info mode_info;
+ struct cgs_mode_info mode_info = {0};
info.mode_info = &mode_info;
@@ -3948,10 +3948,9 @@ static int smu7_program_display_gap(struct pp_hwmgr *hwmgr)
uint32_t ref_clock;
uint32_t refresh_rate = 0;
struct cgs_display_info info = {0};
- struct cgs_mode_info mode_info;
+ struct cgs_mode_info mode_info = {0};
info.mode_info = &mode_info;
-
cgs_get_active_displays_info(hwmgr->device, &info);
num_active_displays = info.display_count;
@@ -3967,6 +3966,7 @@ static int smu7_program_display_gap(struct pp_hwmgr *hwmgr)
frame_time_in_us = 1000000 / refresh_rate;
pre_vbi_time_in_us = frame_time_in_us - 200 - mode_info.vblank_time_us;
+
data->frame_time_x2 = frame_time_in_us * 2 / 100;
display_gap2 = pre_vbi_time_in_us * (ref_clock / 100);
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
index 9d71a259d97d..f8f02e70b8bc 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
@@ -1558,7 +1558,8 @@ static int vega10_populate_smc_link_levels(struct pp_hwmgr *hwmgr)
*/
static int vega10_populate_single_gfx_level(struct pp_hwmgr *hwmgr,
- uint32_t gfx_clock, PllSetting_t *current_gfxclk_level)
+ uint32_t gfx_clock, PllSetting_t *current_gfxclk_level,
+ uint32_t *acg_freq)
{
struct phm_ppt_v2_information *table_info =
(struct phm_ppt_v2_information *)(hwmgr->pptable);
@@ -1609,6 +1610,8 @@ static int vega10_populate_single_gfx_level(struct pp_hwmgr *hwmgr,
cpu_to_le16(dividers.usPll_ss_slew_frac);
current_gfxclk_level->Did = (uint8_t)(dividers.ulDid);
+ *acg_freq = gfx_clock / 100; /* 100 Khz to Mhz conversion */
+
return 0;
}
@@ -1689,7 +1692,8 @@ static int vega10_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
for (i = 0; i < dpm_table->count; i++) {
result = vega10_populate_single_gfx_level(hwmgr,
dpm_table->dpm_levels[i].value,
- &(pp_table->GfxclkLevel[i]));
+ &(pp_table->GfxclkLevel[i]),
+ &(pp_table->AcgFreqTable[i]));
if (result)
return result;
}
@@ -1698,7 +1702,8 @@ static int vega10_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
while (i < NUM_GFXCLK_DPM_LEVELS) {
result = vega10_populate_single_gfx_level(hwmgr,
dpm_table->dpm_levels[j].value,
- &(pp_table->GfxclkLevel[i]));
+ &(pp_table->GfxclkLevel[i]),
+ &(pp_table->AcgFreqTable[i]));
if (result)
return result;
i++;
diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu72.h b/drivers/gpu/drm/amd/powerplay/inc/smu72.h
index b73d6b59ac32..08cd70c75d8b 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/smu72.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/smu72.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SMU72_H
#define SMU72_H
diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu72_discrete.h b/drivers/gpu/drm/amd/powerplay/inc/smu72_discrete.h
index 98f76e925e65..b2edbc0c3c4d 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/smu72_discrete.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/smu72_discrete.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SMU72_DISCRETE_H
#define SMU72_DISCRETE_H
diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu9_driver_if.h b/drivers/gpu/drm/amd/powerplay/inc/smu9_driver_if.h
index f6d6c61f796a..2818c98ff5ca 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/smu9_driver_if.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/smu9_driver_if.h
@@ -315,10 +315,12 @@ typedef struct {
uint8_t AcgEnable[NUM_GFXCLK_DPM_LEVELS];
GbVdroopTable_t AcgBtcGbVdroopTable;
QuadraticInt_t AcgAvfsGb;
- uint32_t Reserved[4];
+
+ /* ACG Frequency Table, in Mhz */
+ uint32_t AcgFreqTable[NUM_GFXCLK_DPM_LEVELS];
/* Padding - ignore */
- uint32_t MmHubPadding[7]; /* SMU internal use */
+ uint32_t MmHubPadding[3]; /* SMU internal use */
} PPTable_t;
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/Makefile b/drivers/gpu/drm/amd/powerplay/smumgr/Makefile
index 1703bbefbfd5..e7ad45297b1d 100644
--- a/drivers/gpu/drm/amd/powerplay/smumgr/Makefile
+++ b/drivers/gpu/drm/amd/powerplay/smumgr/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the 'smu manager' sub-component of powerplay.
# It provides the smu management services for the driver.
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c
index 76347ff6d655..c49a6f22002f 100644
--- a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c
+++ b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c
@@ -380,7 +380,8 @@ static int smu7_populate_single_firmware_entry(struct pp_smumgr *smumgr,
entry->num_register_entries = 0;
}
- if (fw_type == UCODE_ID_RLC_G)
+ if ((fw_type == UCODE_ID_RLC_G)
+ || (fw_type == UCODE_ID_CP_MEC))
entry->flags = 1;
else
entry->flags = 0;
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_sched_trace.h b/drivers/gpu/drm/amd/scheduler/gpu_sched_trace.h
index 8bd38102b58e..283a0dc25e84 100644
--- a/drivers/gpu/drm/amd/scheduler/gpu_sched_trace.h
+++ b/drivers/gpu/drm/amd/scheduler/gpu_sched_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_GPU_SCHED_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define _GPU_SCHED_TRACE_H_
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.h b/drivers/gpu/drm/arm/hdlcd_drv.h
index e3950a071152..56f34dfff640 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.h
+++ b/drivers/gpu/drm/arm/hdlcd_drv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ARM HDLCD Controller register definition
*/
diff --git a/drivers/gpu/drm/armada/Makefile b/drivers/gpu/drm/armada/Makefile
index 64c0b4546fb2..1ab4cf863bf7 100644
--- a/drivers/gpu/drm/armada/Makefile
+++ b/drivers/gpu/drm/armada/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
armada-y := armada_crtc.o armada_drv.o armada_fb.o armada_fbdev.o \
armada_gem.o armada_overlay.o armada_trace.o
armada-y += armada_510.o
diff --git a/drivers/gpu/drm/armada/armada_trace.c b/drivers/gpu/drm/armada/armada_trace.c
index 068b336ba75f..c64cce325cdf 100644
--- a/drivers/gpu/drm/armada/armada_trace.c
+++ b/drivers/gpu/drm/armada/armada_trace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#ifndef __CHECKER__
#define CREATE_TRACE_POINTS
#include "armada_trace.h"
diff --git a/drivers/gpu/drm/armada/armada_trace.h b/drivers/gpu/drm/armada/armada_trace.h
index dc0cba70fd1a..1e9f55fc8735 100644
--- a/drivers/gpu/drm/armada/armada_trace.h
+++ b/drivers/gpu/drm/armada/armada_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(ARMADA_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define ARMADA_TRACE_H
diff --git a/drivers/gpu/drm/ast/ast_dp501.c b/drivers/gpu/drm/ast/ast_dp501.c
index 749646ae365f..4c7375b45281 100644
--- a/drivers/gpu/drm/ast/ast_dp501.c
+++ b/drivers/gpu/drm/ast/ast_dp501.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/firmware.h>
#include <drm/drmP.h>
diff --git a/drivers/gpu/drm/ast/ast_dram_tables.h b/drivers/gpu/drm/ast/ast_dram_tables.h
index 1d9c4e75d303..1e9ac9d6d26c 100644
--- a/drivers/gpu/drm/ast/ast_dram_tables.h
+++ b/drivers/gpu/drm/ast/ast_dram_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef AST_DRAM_TABLES_H
#define AST_DRAM_TABLES_H
diff --git a/drivers/gpu/drm/atmel-hlcdc/Makefile b/drivers/gpu/drm/atmel-hlcdc/Makefile
index bb5f8507a8ce..49dc89f36b73 100644
--- a/drivers/gpu/drm/atmel-hlcdc/Makefile
+++ b/drivers/gpu/drm/atmel-hlcdc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
atmel-hlcdc-dc-y := atmel_hlcdc_crtc.o \
atmel_hlcdc_dc.o \
atmel_hlcdc_output.o \
diff --git a/drivers/gpu/drm/bochs/bochs.h b/drivers/gpu/drm/bochs/bochs.h
index 76c490c3cdbc..375bf92cd04f 100644
--- a/drivers/gpu/drm/bochs/bochs.h
+++ b/drivers/gpu/drm/bochs/bochs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/io.h>
#include <linux/console.h>
diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile
index defcf1e7ca1c..60dab87e4783 100644
--- a/drivers/gpu/drm/bridge/Makefile
+++ b/drivers/gpu/drm/bridge/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
obj-$(CONFIG_DRM_DUMB_VGA_DAC) += dumb-vga-dac.o
obj-$(CONFIG_DRM_LVDS_ENCODER) += lvds-encoder.o
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h
index fd1f745c6073..63b5756f463b 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DW_HDMI_AUDIO_H
#define DW_HDMI_AUDIO_H
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 4e53aae9a1fb..0028591f3f95 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -2960,6 +2960,7 @@ out:
drm_modeset_backoff(&ctx);
}
+ drm_atomic_state_put(state);
drm_modeset_drop_locks(&ctx);
drm_modeset_acquire_fini(&ctx);
diff --git a/drivers/gpu/drm/drm_blend.c b/drivers/gpu/drm/drm_blend.c
index db6aeec50b82..2e5e089dd912 100644
--- a/drivers/gpu/drm/drm_blend.c
+++ b/drivers/gpu/drm/drm_blend.c
@@ -319,7 +319,7 @@ static int drm_atomic_helper_crtc_normalize_zpos(struct drm_crtc *crtc,
DRM_DEBUG_ATOMIC("[CRTC:%d:%s] calculating normalized zpos values\n",
crtc->base.id, crtc->name);
- states = kmalloc_array(total_planes, sizeof(*states), GFP_TEMPORARY);
+ states = kmalloc_array(total_planes, sizeof(*states), GFP_KERNEL);
if (!states)
return -ENOMEM;
diff --git a/drivers/gpu/drm/drm_dp_dual_mode_helper.c b/drivers/gpu/drm/drm_dp_dual_mode_helper.c
index 80e62f669321..0ef9011a1856 100644
--- a/drivers/gpu/drm/drm_dp_dual_mode_helper.c
+++ b/drivers/gpu/drm/drm_dp_dual_mode_helper.c
@@ -111,7 +111,7 @@ ssize_t drm_dp_dual_mode_write(struct i2c_adapter *adapter,
void *data;
int ret;
- data = kmalloc(msg.len, GFP_TEMPORARY);
+ data = kmalloc(msg.len, GFP_KERNEL);
if (!data)
return -ENOMEM;
diff --git a/drivers/gpu/drm/drm_scdc_helper.c b/drivers/gpu/drm/drm_scdc_helper.c
index 7d1b0f011d33..935653eb3616 100644
--- a/drivers/gpu/drm/drm_scdc_helper.c
+++ b/drivers/gpu/drm/drm_scdc_helper.c
@@ -102,7 +102,7 @@ ssize_t drm_scdc_write(struct i2c_adapter *adapter, u8 offset,
void *data;
int err;
- data = kmalloc(1 + size, GFP_TEMPORARY);
+ data = kmalloc(1 + size, GFP_KERNEL);
if (!data)
return -ENOMEM;
diff --git a/drivers/gpu/drm/drm_trace.h b/drivers/gpu/drm/drm_trace.h
index 14c5a777682e..a8370775ed50 100644
--- a/drivers/gpu/drm/drm_trace.h
+++ b/drivers/gpu/drm/drm_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_DRM_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
#define _DRM_TRACE_H_
diff --git a/drivers/gpu/drm/etnaviv/Makefile b/drivers/gpu/drm/etnaviv/Makefile
index 4f76c992043f..ab3f551831d7 100644
--- a/drivers/gpu/drm/etnaviv/Makefile
+++ b/drivers/gpu/drm/etnaviv/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
etnaviv-y := \
etnaviv_buffer.o \
etnaviv_cmd_parser.o \
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
index 5a634594a6ce..57881167ccd2 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
@@ -551,12 +551,15 @@ static const struct etnaviv_gem_ops etnaviv_gem_shmem_ops = {
void etnaviv_gem_free_object(struct drm_gem_object *obj)
{
struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
+ struct etnaviv_drm_private *priv = obj->dev->dev_private;
struct etnaviv_vram_mapping *mapping, *tmp;
/* object should not be active */
WARN_ON(is_active(etnaviv_obj));
+ mutex_lock(&priv->gem_lock);
list_del(&etnaviv_obj->gem_node);
+ mutex_unlock(&priv->gem_lock);
list_for_each_entry_safe(mapping, tmp, &etnaviv_obj->vram_list,
obj_node) {
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
index a7ff2e4c00d2..46dfe0737f43 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
@@ -37,7 +37,7 @@ static struct etnaviv_gem_submit *submit_create(struct drm_device *dev,
struct etnaviv_gem_submit *submit;
size_t sz = size_vstruct(nr, sizeof(submit->bos[0]), sizeof(*submit));
- submit = kmalloc(sz, GFP_TEMPORARY | __GFP_NOWARN | __GFP_NORETRY);
+ submit = kmalloc(sz, GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY);
if (submit) {
submit->dev = dev;
submit->gpu = gpu;
@@ -445,8 +445,10 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data,
cmdbuf->user_size = ALIGN(args->stream_size, 8);
ret = etnaviv_gpu_submit(gpu, submit, cmdbuf);
- if (ret == 0)
- cmdbuf = NULL;
+ if (ret)
+ goto out;
+
+ cmdbuf = NULL;
if (args->flags & ETNA_SUBMIT_FENCE_FD_OUT) {
/*
diff --git a/drivers/gpu/drm/etnaviv/state.xml.h b/drivers/gpu/drm/etnaviv/state.xml.h
index 368218304566..c27c1484cfa9 100644
--- a/drivers/gpu/drm/etnaviv/state.xml.h
+++ b/drivers/gpu/drm/etnaviv/state.xml.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef STATE_XML
#define STATE_XML
diff --git a/drivers/gpu/drm/etnaviv/state_3d.xml.h b/drivers/gpu/drm/etnaviv/state_3d.xml.h
index d7146fd13943..73a97d35c51b 100644
--- a/drivers/gpu/drm/etnaviv/state_3d.xml.h
+++ b/drivers/gpu/drm/etnaviv/state_3d.xml.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef STATE_3D_XML
#define STATE_3D_XML
diff --git a/drivers/gpu/drm/etnaviv/state_hi.xml.h b/drivers/gpu/drm/etnaviv/state_hi.xml.h
index 43c73e2ed34f..60808daf7e8d 100644
--- a/drivers/gpu/drm/etnaviv/state_hi.xml.h
+++ b/drivers/gpu/drm/etnaviv/state_hi.xml.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef STATE_HI_XML
#define STATE_HI_XML
diff --git a/drivers/gpu/drm/exynos/Makefile b/drivers/gpu/drm/exynos/Makefile
index f663490e949d..bdf4212dde7b 100644
--- a/drivers/gpu/drm/exynos/Makefile
+++ b/drivers/gpu/drm/exynos/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the drm device driver. This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
index 730b8d9db187..6be5b53c3b27 100644
--- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
+++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
@@ -14,6 +14,7 @@
#include <linux/clk.h>
#include <linux/component.h>
#include <linux/iopoll.h>
+#include <linux/irq.h>
#include <linux/mfd/syscon.h>
#include <linux/of_device.h>
#include <linux/of_gpio.h>
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index b1f7299600f0..82b72425a42f 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -168,23 +168,21 @@ static struct drm_driver exynos_drm_driver = {
static int exynos_drm_suspend(struct device *dev)
{
struct drm_device *drm_dev = dev_get_drvdata(dev);
- struct drm_connector *connector;
- struct drm_connector_list_iter conn_iter;
+ struct exynos_drm_private *private;
if (pm_runtime_suspended(dev) || !drm_dev)
return 0;
- drm_connector_list_iter_begin(drm_dev, &conn_iter);
- drm_for_each_connector_iter(connector, &conn_iter) {
- int old_dpms = connector->dpms;
-
- if (connector->funcs->dpms)
- connector->funcs->dpms(connector, DRM_MODE_DPMS_OFF);
+ private = drm_dev->dev_private;
- /* Set the old mode back to the connector for resume */
- connector->dpms = old_dpms;
+ drm_kms_helper_poll_disable(drm_dev);
+ exynos_drm_fbdev_suspend(drm_dev);
+ private->suspend_state = drm_atomic_helper_suspend(drm_dev);
+ if (IS_ERR(private->suspend_state)) {
+ exynos_drm_fbdev_resume(drm_dev);
+ drm_kms_helper_poll_enable(drm_dev);
+ return PTR_ERR(private->suspend_state);
}
- drm_connector_list_iter_end(&conn_iter);
return 0;
}
@@ -192,22 +190,15 @@ static int exynos_drm_suspend(struct device *dev)
static int exynos_drm_resume(struct device *dev)
{
struct drm_device *drm_dev = dev_get_drvdata(dev);
- struct drm_connector *connector;
- struct drm_connector_list_iter conn_iter;
+ struct exynos_drm_private *private;
if (pm_runtime_suspended(dev) || !drm_dev)
return 0;
- drm_connector_list_iter_begin(drm_dev, &conn_iter);
- drm_for_each_connector_iter(connector, &conn_iter) {
- if (connector->funcs->dpms) {
- int dpms = connector->dpms;
-
- connector->dpms = DRM_MODE_DPMS_OFF;
- connector->funcs->dpms(connector, dpms);
- }
- }
- drm_connector_list_iter_end(&conn_iter);
+ private = drm_dev->dev_private;
+ drm_atomic_helper_resume(drm_dev, private->suspend_state);
+ exynos_drm_fbdev_resume(drm_dev);
+ drm_kms_helper_poll_enable(drm_dev);
return 0;
}
@@ -439,6 +430,7 @@ static void exynos_drm_unbind(struct device *dev)
kfree(drm->dev_private);
drm->dev_private = NULL;
+ dev_set_drvdata(dev, NULL);
drm_dev_unref(drm);
}
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h
index cf131c2aa23e..f8bae4cb4823 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
@@ -202,6 +202,7 @@ struct drm_exynos_file_private {
*/
struct exynos_drm_private {
struct drm_fb_helper *fb_helper;
+ struct drm_atomic_state *suspend_state;
struct device *dma_dev;
void *mapping;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index c3a068409b48..dfb66ecf417b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -18,6 +18,8 @@
#include <drm/drm_crtc_helper.h>
#include <drm/exynos_drm.h>
+#include <linux/console.h>
+
#include "exynos_drm_drv.h"
#include "exynos_drm_fb.h"
#include "exynos_drm_fbdev.h"
@@ -285,3 +287,21 @@ void exynos_drm_output_poll_changed(struct drm_device *dev)
drm_fb_helper_hotplug_event(fb_helper);
}
+
+void exynos_drm_fbdev_suspend(struct drm_device *dev)
+{
+ struct exynos_drm_private *private = dev->dev_private;
+
+ console_lock();
+ drm_fb_helper_set_suspend(private->fb_helper, 1);
+ console_unlock();
+}
+
+void exynos_drm_fbdev_resume(struct drm_device *dev)
+{
+ struct exynos_drm_private *private = dev->dev_private;
+
+ console_lock();
+ drm_fb_helper_set_suspend(private->fb_helper, 0);
+ console_unlock();
+}
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.h b/drivers/gpu/drm/exynos/exynos_drm_fbdev.h
index 330eef87f718..645d1bb7f665 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.h
@@ -21,6 +21,8 @@ int exynos_drm_fbdev_init(struct drm_device *dev);
void exynos_drm_fbdev_fini(struct drm_device *dev);
void exynos_drm_fbdev_restore_mode(struct drm_device *dev);
void exynos_drm_output_poll_changed(struct drm_device *dev);
+void exynos_drm_fbdev_suspend(struct drm_device *drm);
+void exynos_drm_fbdev_resume(struct drm_device *drm);
#else
@@ -39,6 +41,14 @@ static inline void exynos_drm_fbdev_restore_mode(struct drm_device *dev)
#define exynos_drm_output_poll_changed (NULL)
+static inline void exynos_drm_fbdev_suspend(struct drm_device *drm)
+{
+}
+
+static inline void exynos_drm_fbdev_resume(struct drm_device *drm)
+{
+}
+
#endif
#endif
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index 214fa5e51963..0109ff40b1db 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -944,22 +944,27 @@ static bool hdmi_mode_fixup(struct drm_encoder *encoder,
struct drm_device *dev = encoder->dev;
struct drm_connector *connector;
struct drm_display_mode *m;
+ struct drm_connector_list_iter conn_iter;
int mode_ok;
drm_mode_set_crtcinfo(adjusted_mode, 0);
- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+ drm_connector_list_iter_begin(dev, &conn_iter);
+ drm_for_each_connector_iter(connector, &conn_iter) {
if (connector->encoder == encoder)
break;
}
+ if (connector)
+ drm_connector_get(connector);
+ drm_connector_list_iter_end(&conn_iter);
- if (connector->encoder != encoder)
+ if (!connector)
return true;
mode_ok = hdmi_mode_valid(connector, adjusted_mode);
if (mode_ok == MODE_OK)
- return true;
+ goto cleanup;
/*
* Find the most suitable mode and copy it to adjusted_mode.
@@ -979,6 +984,9 @@ static bool hdmi_mode_fixup(struct drm_encoder *encoder,
}
}
+cleanup:
+ drm_connector_put(connector);
+
return true;
}
diff --git a/drivers/gpu/drm/fsl-dcu/Makefile b/drivers/gpu/drm/fsl-dcu/Makefile
index aca34f656bea..b55c4482d0f9 100644
--- a/drivers/gpu/drm/fsl-dcu/Makefile
+++ b/drivers/gpu/drm/fsl-dcu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
fsl-dcu-drm-y := fsl_dcu_drm_drv.o \
fsl_dcu_drm_kms.o \
fsl_dcu_drm_rgb.o \
diff --git a/drivers/gpu/drm/gma500/Makefile b/drivers/gpu/drm/gma500/Makefile
index c1c8dc18aa53..c8f2c89be99d 100644
--- a/drivers/gpu/drm/gma500/Makefile
+++ b/drivers/gpu/drm/gma500/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# KMS driver for the GMA500
#
diff --git a/drivers/gpu/drm/i2c/Makefile b/drivers/gpu/drm/i2c/Makefile
index a77acfc1852e..b20100c18ffb 100644
--- a/drivers/gpu/drm/i2c/Makefile
+++ b/drivers/gpu/drm/i2c/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ch7006-y := ch7006_drv.o ch7006_mode.o
obj-$(CONFIG_DRM_I2C_CH7006) += ch7006.o
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 892f52b53060..2e034efc4d6d 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the drm device driver. This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
diff --git a/drivers/gpu/drm/i915/gvt/Makefile b/drivers/gpu/drm/i915/gvt/Makefile
index f5486cb94818..2641ba510a61 100644
--- a/drivers/gpu/drm/i915/gvt/Makefile
+++ b/drivers/gpu/drm/i915/gvt/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
GVT_DIR := gvt
GVT_SOURCE := gvt.o aperture_gm.o handlers.o vgpu.o trace_points.o firmware.o \
interrupt.o gtt.o cfg_space.o opregion.o mmio.o display.o edid.o \
diff --git a/drivers/gpu/drm/i915/gvt/cfg_space.c b/drivers/gpu/drm/i915/gvt/cfg_space.c
index 40af17ec6312..ff3154fe6588 100644
--- a/drivers/gpu/drm/i915/gvt/cfg_space.c
+++ b/drivers/gpu/drm/i915/gvt/cfg_space.c
@@ -197,78 +197,65 @@ static int emulate_pci_command_write(struct intel_vgpu *vgpu,
static int emulate_pci_bar_write(struct intel_vgpu *vgpu, unsigned int offset,
void *p_data, unsigned int bytes)
{
- unsigned int bar_index =
- (rounddown(offset, 8) % PCI_BASE_ADDRESS_0) / 8;
u32 new = *(u32 *)(p_data);
bool lo = IS_ALIGNED(offset, 8);
u64 size;
int ret = 0;
bool mmio_enabled =
vgpu_cfg_space(vgpu)[PCI_COMMAND] & PCI_COMMAND_MEMORY;
+ struct intel_vgpu_pci_bar *bars = vgpu->cfg_space.bar;
- if (WARN_ON(bar_index >= INTEL_GVT_PCI_BAR_MAX))
- return -EINVAL;
-
+ /*
+ * Power-up software can determine how much address
+ * space the device requires by writing a value of
+ * all 1's to the register and then reading the value
+ * back. The device will return 0's in all don't-care
+ * address bits.
+ */
if (new == 0xffffffff) {
- /*
- * Power-up software can determine how much address
- * space the device requires by writing a value of
- * all 1's to the register and then reading the value
- * back. The device will return 0's in all don't-care
- * address bits.
- */
- size = vgpu->cfg_space.bar[bar_index].size;
- if (lo) {
- new = rounddown(new, size);
- } else {
- u32 val = vgpu_cfg_space(vgpu)[rounddown(offset, 8)];
- /* for 32bit mode bar it returns all-0 in upper 32
- * bit, for 64bit mode bar it will calculate the
- * size with lower 32bit and return the corresponding
- * value
+ switch (offset) {
+ case PCI_BASE_ADDRESS_0:
+ case PCI_BASE_ADDRESS_1:
+ size = ~(bars[INTEL_GVT_PCI_BAR_GTTMMIO].size -1);
+ intel_vgpu_write_pci_bar(vgpu, offset,
+ size >> (lo ? 0 : 32), lo);
+ /*
+ * Untrap the BAR, since guest hasn't configured a
+ * valid GPA
*/
- if (val & PCI_BASE_ADDRESS_MEM_TYPE_64)
- new &= (~(size-1)) >> 32;
- else
- new = 0;
- }
- /*
- * Unmapp & untrap the BAR, since guest hasn't configured a
- * valid GPA
- */
- switch (bar_index) {
- case INTEL_GVT_PCI_BAR_GTTMMIO:
ret = trap_gttmmio(vgpu, false);
break;
- case INTEL_GVT_PCI_BAR_APERTURE:
+ case PCI_BASE_ADDRESS_2:
+ case PCI_BASE_ADDRESS_3:
+ size = ~(bars[INTEL_GVT_PCI_BAR_APERTURE].size -1);
+ intel_vgpu_write_pci_bar(vgpu, offset,
+ size >> (lo ? 0 : 32), lo);
ret = map_aperture(vgpu, false);
break;
+ default:
+ /* Unimplemented BARs */
+ intel_vgpu_write_pci_bar(vgpu, offset, 0x0, false);
}
- intel_vgpu_write_pci_bar(vgpu, offset, new, lo);
} else {
- /*
- * Unmapp & untrap the old BAR first, since guest has
- * re-configured the BAR
- */
- switch (bar_index) {
- case INTEL_GVT_PCI_BAR_GTTMMIO:
- ret = trap_gttmmio(vgpu, false);
+ switch (offset) {
+ case PCI_BASE_ADDRESS_0:
+ case PCI_BASE_ADDRESS_1:
+ /*
+ * Untrap the old BAR first, since guest has
+ * re-configured the BAR
+ */
+ trap_gttmmio(vgpu, false);
+ intel_vgpu_write_pci_bar(vgpu, offset, new, lo);
+ ret = trap_gttmmio(vgpu, mmio_enabled);
break;
- case INTEL_GVT_PCI_BAR_APERTURE:
- ret = map_aperture(vgpu, false);
+ case PCI_BASE_ADDRESS_2:
+ case PCI_BASE_ADDRESS_3:
+ map_aperture(vgpu, false);
+ intel_vgpu_write_pci_bar(vgpu, offset, new, lo);
+ ret = map_aperture(vgpu, mmio_enabled);
break;
- }
- intel_vgpu_write_pci_bar(vgpu, offset, new, lo);
- /* Track the new BAR */
- if (mmio_enabled) {
- switch (bar_index) {
- case INTEL_GVT_PCI_BAR_GTTMMIO:
- ret = trap_gttmmio(vgpu, true);
- break;
- case INTEL_GVT_PCI_BAR_APERTURE:
- ret = map_aperture(vgpu, true);
- break;
- }
+ default:
+ intel_vgpu_write_pci_bar(vgpu, offset, new, lo);
}
}
return ret;
@@ -299,10 +286,7 @@ int intel_vgpu_emulate_cfg_write(struct intel_vgpu *vgpu, unsigned int offset,
}
switch (rounddown(offset, 4)) {
- case PCI_BASE_ADDRESS_0:
- case PCI_BASE_ADDRESS_1:
- case PCI_BASE_ADDRESS_2:
- case PCI_BASE_ADDRESS_3:
+ case PCI_BASE_ADDRESS_0 ... PCI_BASE_ADDRESS_5:
if (WARN_ON(!IS_ALIGNED(offset, 4)))
return -EINVAL;
return emulate_pci_bar_write(vgpu, offset, p_data, bytes);
@@ -344,7 +328,6 @@ void intel_vgpu_init_cfg_space(struct intel_vgpu *vgpu,
struct intel_gvt *gvt = vgpu->gvt;
const struct intel_gvt_device_info *info = &gvt->device_info;
u16 *gmch_ctl;
- int i;
memcpy(vgpu_cfg_space(vgpu), gvt->firmware.cfg_space,
info->cfg_space_size);
@@ -371,13 +354,13 @@ void intel_vgpu_init_cfg_space(struct intel_vgpu *vgpu,
*/
memset(vgpu_cfg_space(vgpu) + PCI_BASE_ADDRESS_1, 0, 4);
memset(vgpu_cfg_space(vgpu) + PCI_BASE_ADDRESS_3, 0, 4);
+ memset(vgpu_cfg_space(vgpu) + PCI_BASE_ADDRESS_4, 0, 8);
memset(vgpu_cfg_space(vgpu) + INTEL_GVT_PCI_OPREGION, 0, 4);
- for (i = 0; i < INTEL_GVT_MAX_BAR_NUM; i++) {
- vgpu->cfg_space.bar[i].size = pci_resource_len(
- gvt->dev_priv->drm.pdev, i * 2);
- vgpu->cfg_space.bar[i].tracked = false;
- }
+ vgpu->cfg_space.bar[INTEL_GVT_PCI_BAR_GTTMMIO].size =
+ pci_resource_len(gvt->dev_priv->drm.pdev, 0);
+ vgpu->cfg_space.bar[INTEL_GVT_PCI_BAR_APERTURE].size =
+ pci_resource_len(gvt->dev_priv->drm.pdev, 2);
}
/**
diff --git a/drivers/gpu/drm/i915/gvt/cmd_parser.c b/drivers/gpu/drm/i915/gvt/cmd_parser.c
index 21c36e256884..d4726a3358a4 100644
--- a/drivers/gpu/drm/i915/gvt/cmd_parser.c
+++ b/drivers/gpu/drm/i915/gvt/cmd_parser.c
@@ -2723,6 +2723,9 @@ static int combine_wa_ctx(struct intel_shadow_wa_ctx *wa_ctx)
uint32_t per_ctx_start[CACHELINE_DWORDS] = {0};
unsigned char *bb_start_sva;
+ if (!wa_ctx->per_ctx.valid)
+ return 0;
+
per_ctx_start[0] = 0x18800001;
per_ctx_start[1] = wa_ctx->per_ctx.guest_gma;
diff --git a/drivers/gpu/drm/i915/gvt/execlist.c b/drivers/gpu/drm/i915/gvt/execlist.c
index 91b4300f3b39..e5320b4eb698 100644
--- a/drivers/gpu/drm/i915/gvt/execlist.c
+++ b/drivers/gpu/drm/i915/gvt/execlist.c
@@ -701,8 +701,7 @@ static int submit_context(struct intel_vgpu *vgpu, int ring_id,
CACHELINE_BYTES;
workload->wa_ctx.per_ctx.guest_gma =
per_ctx & PER_CTX_ADDR_MASK;
-
- WARN_ON(workload->wa_ctx.indirect_ctx.size && !(per_ctx & 0x1));
+ workload->wa_ctx.per_ctx.valid = per_ctx & 1;
}
if (emulate_schedule_in)
diff --git a/drivers/gpu/drm/i915/gvt/handlers.c b/drivers/gpu/drm/i915/gvt/handlers.c
index 2294466dd415..a5bed2e71b92 100644
--- a/drivers/gpu/drm/i915/gvt/handlers.c
+++ b/drivers/gpu/drm/i915/gvt/handlers.c
@@ -1429,18 +1429,7 @@ static int skl_lcpll_write(struct intel_vgpu *vgpu, unsigned int offset,
return 0;
}
-static int ring_timestamp_mmio_read(struct intel_vgpu *vgpu,
- unsigned int offset, void *p_data, unsigned int bytes)
-{
- struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
-
- mmio_hw_access_pre(dev_priv);
- vgpu_vreg(vgpu, offset) = I915_READ(_MMIO(offset));
- mmio_hw_access_post(dev_priv);
- return intel_vgpu_default_mmio_read(vgpu, offset, p_data, bytes);
-}
-
-static int instdone_mmio_read(struct intel_vgpu *vgpu,
+static int mmio_read_from_hw(struct intel_vgpu *vgpu,
unsigned int offset, void *p_data, unsigned int bytes)
{
struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
@@ -1589,6 +1578,8 @@ static int ring_reset_ctl_write(struct intel_vgpu *vgpu,
MMIO_F(prefix(BLT_RING_BASE), s, f, am, rm, d, r, w); \
MMIO_F(prefix(GEN6_BSD_RING_BASE), s, f, am, rm, d, r, w); \
MMIO_F(prefix(VEBOX_RING_BASE), s, f, am, rm, d, r, w); \
+ if (HAS_BSD2(dev_priv)) \
+ MMIO_F(prefix(GEN8_BSD2_RING_BASE), s, f, am, rm, d, r, w); \
} while (0)
#define MMIO_RING_D(prefix, d) \
@@ -1635,10 +1626,9 @@ static int init_generic_mmio_info(struct intel_gvt *gvt)
#undef RING_REG
#define RING_REG(base) (base + 0x6c)
- MMIO_RING_DFH(RING_REG, D_ALL, 0, instdone_mmio_read, NULL);
- MMIO_DH(RING_REG(GEN8_BSD2_RING_BASE), D_ALL, instdone_mmio_read, NULL);
+ MMIO_RING_DFH(RING_REG, D_ALL, 0, mmio_read_from_hw, NULL);
#undef RING_REG
- MMIO_DH(GEN7_SC_INSTDONE, D_BDW_PLUS, instdone_mmio_read, NULL);
+ MMIO_DH(GEN7_SC_INSTDONE, D_BDW_PLUS, mmio_read_from_hw, NULL);
MMIO_GM_RDR(0x2148, D_ALL, NULL, NULL);
MMIO_GM_RDR(CCID, D_ALL, NULL, NULL);
@@ -1648,7 +1638,7 @@ static int init_generic_mmio_info(struct intel_gvt *gvt)
MMIO_RING_DFH(RING_TAIL, D_ALL, F_CMD_ACCESS, NULL, NULL);
MMIO_RING_DFH(RING_HEAD, D_ALL, F_CMD_ACCESS, NULL, NULL);
MMIO_RING_DFH(RING_CTL, D_ALL, F_CMD_ACCESS, NULL, NULL);
- MMIO_RING_DFH(RING_ACTHD, D_ALL, F_CMD_ACCESS, NULL, NULL);
+ MMIO_RING_DFH(RING_ACTHD, D_ALL, F_CMD_ACCESS, mmio_read_from_hw, NULL);
MMIO_RING_GM_RDR(RING_START, D_ALL, NULL, NULL);
/* RING MODE */
@@ -1662,9 +1652,9 @@ static int init_generic_mmio_info(struct intel_gvt *gvt)
MMIO_RING_DFH(RING_INSTPM, D_ALL, F_MODE_MASK | F_CMD_ACCESS,
NULL, NULL);
MMIO_RING_DFH(RING_TIMESTAMP, D_ALL, F_CMD_ACCESS,
- ring_timestamp_mmio_read, NULL);
+ mmio_read_from_hw, NULL);
MMIO_RING_DFH(RING_TIMESTAMP_UDW, D_ALL, F_CMD_ACCESS,
- ring_timestamp_mmio_read, NULL);
+ mmio_read_from_hw, NULL);
MMIO_DFH(GEN7_GT_MODE, D_ALL, F_MODE_MASK | F_CMD_ACCESS, NULL, NULL);
MMIO_DFH(CACHE_MODE_0_GEN7, D_ALL, F_MODE_MASK | F_CMD_ACCESS,
@@ -2411,9 +2401,6 @@ static int init_broadwell_mmio_info(struct intel_gvt *gvt)
struct drm_i915_private *dev_priv = gvt->dev_priv;
int ret;
- MMIO_DFH(RING_IMR(GEN8_BSD2_RING_BASE), D_BDW_PLUS, F_CMD_ACCESS, NULL,
- intel_vgpu_reg_imr_handler);
-
MMIO_DH(GEN8_GT_IMR(0), D_BDW_PLUS, NULL, intel_vgpu_reg_imr_handler);
MMIO_DH(GEN8_GT_IER(0), D_BDW_PLUS, NULL, intel_vgpu_reg_ier_handler);
MMIO_DH(GEN8_GT_IIR(0), D_BDW_PLUS, NULL, intel_vgpu_reg_iir_handler);
@@ -2476,68 +2463,34 @@ static int init_broadwell_mmio_info(struct intel_gvt *gvt)
MMIO_DH(GEN8_MASTER_IRQ, D_BDW_PLUS, NULL,
intel_vgpu_reg_master_irq_handler);
- MMIO_DFH(RING_HWSTAM(GEN8_BSD2_RING_BASE), D_BDW_PLUS,
- F_CMD_ACCESS, NULL, NULL);
- MMIO_DFH(0x1c134, D_BDW_PLUS, F_CMD_ACCESS, NULL, NULL);
-
- MMIO_DFH(RING_TAIL(GEN8_BSD2_RING_BASE), D_BDW_PLUS, F_CMD_ACCESS,
- NULL, NULL);
- MMIO_DFH(RING_HEAD(GEN8_BSD2_RING_BASE), D_BDW_PLUS,
- F_CMD_ACCESS, NULL, NULL);
- MMIO_GM_RDR(RING_START(GEN8_BSD2_RING_BASE), D_BDW_PLUS, NULL, NULL);
- MMIO_DFH(RING_CTL(GEN8_BSD2_RING_BASE), D_BDW_PLUS, F_CMD_ACCESS,
- NULL, NULL);
- MMIO_DFH(RING_ACTHD(GEN8_BSD2_RING_BASE), D_BDW_PLUS,
- F_CMD_ACCESS, NULL, NULL);
- MMIO_DFH(RING_ACTHD_UDW(GEN8_BSD2_RING_BASE), D_BDW_PLUS,
- F_CMD_ACCESS, NULL, NULL);
- MMIO_DFH(0x1c29c, D_BDW_PLUS, F_MODE_MASK | F_CMD_ACCESS, NULL,
- ring_mode_mmio_write);
- MMIO_DFH(RING_MI_MODE(GEN8_BSD2_RING_BASE), D_BDW_PLUS,
- F_MODE_MASK | F_CMD_ACCESS, NULL, NULL);
- MMIO_DFH(RING_INSTPM(GEN8_BSD2_RING_BASE), D_BDW_PLUS,
- F_MODE_MASK | F_CMD_ACCESS, NULL, NULL);
- MMIO_DFH(RING_TIMESTAMP(GEN8_BSD2_RING_BASE), D_BDW_PLUS, F_CMD_ACCESS,
- ring_timestamp_mmio_read, NULL);
-
- MMIO_RING_DFH(RING_ACTHD_UDW, D_BDW_PLUS, F_CMD_ACCESS, NULL, NULL);
+ MMIO_RING_DFH(RING_ACTHD_UDW, D_BDW_PLUS, F_CMD_ACCESS,
+ mmio_read_from_hw, NULL);
#define RING_REG(base) (base + 0xd0)
MMIO_RING_F(RING_REG, 4, F_RO, 0,
~_MASKED_BIT_ENABLE(RESET_CTL_REQUEST_RESET), D_BDW_PLUS, NULL,
ring_reset_ctl_write);
- MMIO_F(RING_REG(GEN8_BSD2_RING_BASE), 4, F_RO, 0,
- ~_MASKED_BIT_ENABLE(RESET_CTL_REQUEST_RESET), D_BDW_PLUS, NULL,
- ring_reset_ctl_write);
#undef RING_REG
#define RING_REG(base) (base + 0x230)
MMIO_RING_DFH(RING_REG, D_BDW_PLUS, 0, NULL, elsp_mmio_write);
- MMIO_DH(RING_REG(GEN8_BSD2_RING_BASE), D_BDW_PLUS, NULL, elsp_mmio_write);
#undef RING_REG
#define RING_REG(base) (base + 0x234)
MMIO_RING_F(RING_REG, 8, F_RO | F_CMD_ACCESS, 0, ~0, D_BDW_PLUS,
NULL, NULL);
- MMIO_F(RING_REG(GEN8_BSD2_RING_BASE), 4, F_RO | F_CMD_ACCESS, 0,
- ~0LL, D_BDW_PLUS, NULL, NULL);
#undef RING_REG
#define RING_REG(base) (base + 0x244)
MMIO_RING_DFH(RING_REG, D_BDW_PLUS, F_CMD_ACCESS, NULL, NULL);
- MMIO_DFH(RING_REG(GEN8_BSD2_RING_BASE), D_BDW_PLUS, F_CMD_ACCESS,
- NULL, NULL);
#undef RING_REG
#define RING_REG(base) (base + 0x370)
MMIO_RING_F(RING_REG, 48, F_RO, 0, ~0, D_BDW_PLUS, NULL, NULL);
- MMIO_F(RING_REG(GEN8_BSD2_RING_BASE), 48, F_RO, 0, ~0, D_BDW_PLUS,
- NULL, NULL);
#undef RING_REG
#define RING_REG(base) (base + 0x3a0)
MMIO_RING_DFH(RING_REG, D_BDW_PLUS, F_MODE_MASK, NULL, NULL);
- MMIO_DFH(RING_REG(GEN8_BSD2_RING_BASE), D_BDW_PLUS, F_MODE_MASK, NULL, NULL);
#undef RING_REG
MMIO_D(PIPEMISC(PIPE_A), D_BDW_PLUS);
@@ -2557,11 +2510,9 @@ static int init_broadwell_mmio_info(struct intel_gvt *gvt)
#define RING_REG(base) (base + 0x270)
MMIO_RING_F(RING_REG, 32, 0, 0, 0, D_BDW_PLUS, NULL, NULL);
- MMIO_F(RING_REG(GEN8_BSD2_RING_BASE), 32, 0, 0, 0, D_BDW_PLUS, NULL, NULL);
#undef RING_REG
MMIO_RING_GM_RDR(RING_HWS_PGA, D_BDW_PLUS, NULL, NULL);
- MMIO_GM_RDR(RING_HWS_PGA(GEN8_BSD2_RING_BASE), D_BDW_PLUS, NULL, NULL);
MMIO_DFH(HDC_CHICKEN0, D_BDW_PLUS, F_MODE_MASK | F_CMD_ACCESS, NULL, NULL);
@@ -2849,7 +2800,6 @@ static int init_skl_mmio_info(struct intel_gvt *gvt)
MMIO_D(0x65f08, D_SKL | D_KBL);
MMIO_D(0x320f0, D_SKL | D_KBL);
- MMIO_DFH(_REG_VCS2_EXCC, D_SKL_PLUS, F_CMD_ACCESS, NULL, NULL);
MMIO_D(0x70034, D_SKL_PLUS);
MMIO_D(0x71034, D_SKL_PLUS);
MMIO_D(0x72034, D_SKL_PLUS);
diff --git a/drivers/gpu/drm/i915/gvt/reg.h b/drivers/gpu/drm/i915/gvt/reg.h
index fbd023a16f18..7d01c77a0f7a 100644
--- a/drivers/gpu/drm/i915/gvt/reg.h
+++ b/drivers/gpu/drm/i915/gvt/reg.h
@@ -54,9 +54,6 @@
#define VGT_SPRSTRIDE(pipe) _PIPE(pipe, _SPRA_STRIDE, _PLANE_STRIDE_2_B)
-#define _REG_VECS_EXCC 0x1A028
-#define _REG_VCS2_EXCC 0x1c028
-
#define _REG_701C0(pipe, plane) (0x701c0 + pipe * 0x1000 + (plane - 1) * 0x100)
#define _REG_701C4(pipe, plane) (0x701c4 + pipe * 0x1000 + (plane - 1) * 0x100)
diff --git a/drivers/gpu/drm/i915/gvt/sched_policy.c b/drivers/gpu/drm/i915/gvt/sched_policy.c
index 436377da41ba..03532dfc0cd5 100644
--- a/drivers/gpu/drm/i915/gvt/sched_policy.c
+++ b/drivers/gpu/drm/i915/gvt/sched_policy.c
@@ -308,20 +308,8 @@ static int tbs_sched_init_vgpu(struct intel_vgpu *vgpu)
static void tbs_sched_clean_vgpu(struct intel_vgpu *vgpu)
{
- struct intel_gvt_workload_scheduler *scheduler = &vgpu->gvt->scheduler;
- int ring_id;
-
kfree(vgpu->sched_data);
vgpu->sched_data = NULL;
-
- spin_lock_bh(&scheduler->mmio_context_lock);
- for (ring_id = 0; ring_id < I915_NUM_ENGINES; ring_id++) {
- if (scheduler->engine_owner[ring_id] == vgpu) {
- intel_gvt_switch_mmio(vgpu, NULL, ring_id);
- scheduler->engine_owner[ring_id] = NULL;
- }
- }
- spin_unlock_bh(&scheduler->mmio_context_lock);
}
static void tbs_sched_start_schedule(struct intel_vgpu *vgpu)
@@ -388,6 +376,7 @@ void intel_vgpu_stop_schedule(struct intel_vgpu *vgpu)
{
struct intel_gvt_workload_scheduler *scheduler =
&vgpu->gvt->scheduler;
+ int ring_id;
gvt_dbg_core("vgpu%d: stop schedule\n", vgpu->id);
@@ -401,4 +390,13 @@ void intel_vgpu_stop_schedule(struct intel_vgpu *vgpu)
scheduler->need_reschedule = true;
scheduler->current_vgpu = NULL;
}
+
+ spin_lock_bh(&scheduler->mmio_context_lock);
+ for (ring_id = 0; ring_id < I915_NUM_ENGINES; ring_id++) {
+ if (scheduler->engine_owner[ring_id] == vgpu) {
+ intel_gvt_switch_mmio(vgpu, NULL, ring_id);
+ scheduler->engine_owner[ring_id] = NULL;
+ }
+ }
+ spin_unlock_bh(&scheduler->mmio_context_lock);
}
diff --git a/drivers/gpu/drm/i915/gvt/scheduler.h b/drivers/gpu/drm/i915/gvt/scheduler.h
index 0d431a968a32..93a49eb0209e 100644
--- a/drivers/gpu/drm/i915/gvt/scheduler.h
+++ b/drivers/gpu/drm/i915/gvt/scheduler.h
@@ -68,6 +68,7 @@ struct shadow_indirect_ctx {
struct shadow_per_ctx {
unsigned long guest_gma;
unsigned long shadow_gma;
+ unsigned valid;
};
struct intel_shadow_wa_ctx {
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 57317715977f..dc1faa49687d 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2214,8 +2214,10 @@ static void __i915_gem_object_reset_page_iter(struct drm_i915_gem_object *obj)
struct radix_tree_iter iter;
void __rcu **slot;
+ rcu_read_lock();
radix_tree_for_each_slot(slot, &obj->mm.get_page.radix, &iter, 0)
radix_tree_delete(&obj->mm.get_page.radix, iter.index);
+ rcu_read_unlock();
}
void __i915_gem_object_put_pages(struct drm_i915_gem_object *obj,
@@ -2540,7 +2542,7 @@ static void *i915_gem_object_map(const struct drm_i915_gem_object *obj,
if (n_pages > ARRAY_SIZE(stack_pages)) {
/* Too big for stack -- allocate temporary array instead */
- pages = kvmalloc_array(n_pages, sizeof(*pages), GFP_TEMPORARY);
+ pages = kvmalloc_array(n_pages, sizeof(*pages), GFP_KERNEL);
if (!pages)
return NULL;
}
@@ -2657,6 +2659,9 @@ i915_gem_object_pwrite_gtt(struct drm_i915_gem_object *obj,
if (READ_ONCE(obj->mm.pages))
return -ENODEV;
+ if (obj->mm.madv != I915_MADV_WILLNEED)
+ return -EFAULT;
+
/* Before the pages are instantiated the object is treated as being
* in the CPU domain. The pages will be clflushed as required before
* use, and we can freely write into the pages directly. If userspace
@@ -3013,10 +3018,15 @@ void i915_gem_reset_finish(struct drm_i915_private *dev_priv)
static void nop_submit_request(struct drm_i915_gem_request *request)
{
+ unsigned long flags;
+
GEM_BUG_ON(!i915_terminally_wedged(&request->i915->gpu_error));
dma_fence_set_error(&request->fence, -EIO);
- i915_gem_request_submit(request);
+
+ spin_lock_irqsave(&request->engine->timeline->lock, flags);
+ __i915_gem_request_submit(request);
intel_engine_init_global_seqno(request->engine, request->global_seqno);
+ spin_unlock_irqrestore(&request->engine->timeline->lock, flags);
}
static void engine_set_wedged(struct intel_engine_cs *engine)
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index 58a2a44f88bd..8afd2ce59b8d 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -104,6 +104,7 @@ static void lut_close(struct i915_gem_context *ctx)
kmem_cache_free(ctx->i915->luts, lut);
}
+ rcu_read_lock();
radix_tree_for_each_slot(slot, &ctx->handles_vma, &iter, 0) {
struct i915_vma *vma = rcu_dereference_raw(*slot);
struct drm_i915_gem_object *obj = vma->obj;
@@ -115,6 +116,7 @@ static void lut_close(struct i915_gem_context *ctx)
__i915_gem_object_release_unless_active(obj);
}
+ rcu_read_unlock();
}
static void i915_gem_context_free(struct i915_gem_context *ctx)
diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c b/drivers/gpu/drm/i915/i915_gem_evict.c
index 4df039ef2ce3..e161d383b526 100644
--- a/drivers/gpu/drm/i915/i915_gem_evict.c
+++ b/drivers/gpu/drm/i915/i915_gem_evict.c
@@ -33,21 +33,20 @@
#include "intel_drv.h"
#include "i915_trace.h"
-static bool ggtt_is_idle(struct drm_i915_private *dev_priv)
+static bool ggtt_is_idle(struct drm_i915_private *i915)
{
- struct i915_ggtt *ggtt = &dev_priv->ggtt;
- struct intel_engine_cs *engine;
- enum intel_engine_id id;
+ struct intel_engine_cs *engine;
+ enum intel_engine_id id;
- for_each_engine(engine, dev_priv, id) {
- struct intel_timeline *tl;
+ if (i915->gt.active_requests)
+ return false;
- tl = &ggtt->base.timeline.engine[engine->id];
- if (i915_gem_active_isset(&tl->last_request))
- return false;
- }
+ for_each_engine(engine, i915, id) {
+ if (engine->last_retired_context != i915->kernel_context)
+ return false;
+ }
- return true;
+ return true;
}
static int ggtt_flush(struct drm_i915_private *i915)
@@ -157,7 +156,8 @@ i915_gem_evict_something(struct i915_address_space *vm,
min_size, alignment, cache_level,
start, end, mode);
- /* Retire before we search the active list. Although we have
+ /*
+ * Retire before we search the active list. Although we have
* reasonable accuracy in our retirement lists, we may have
* a stray pin (preventing eviction) that can only be resolved by
* retiring.
@@ -182,7 +182,8 @@ search_again:
BUG_ON(ret);
}
- /* Can we unpin some objects such as idle hw contents,
+ /*
+ * Can we unpin some objects such as idle hw contents,
* or pending flips? But since only the GGTT has global entries
* such as scanouts, rinbuffers and contexts, we can skip the
* purge when inspecting per-process local address spaces.
@@ -190,19 +191,33 @@ search_again:
if (!i915_is_ggtt(vm) || flags & PIN_NONBLOCK)
return -ENOSPC;
- if (ggtt_is_idle(dev_priv)) {
- /* If we still have pending pageflip completions, drop
- * back to userspace to give our workqueues time to
- * acquire our locks and unpin the old scanouts.
- */
- return intel_has_pending_fb_unpin(dev_priv) ? -EAGAIN : -ENOSPC;
- }
+ /*
+ * Not everything in the GGTT is tracked via VMA using
+ * i915_vma_move_to_active(), otherwise we could evict as required
+ * with minimal stalling. Instead we are forced to idle the GPU and
+ * explicitly retire outstanding requests which will then remove
+ * the pinning for active objects such as contexts and ring,
+ * enabling us to evict them on the next iteration.
+ *
+ * To ensure that all user contexts are evictable, we perform
+ * a switch to the perma-pinned kernel context. This all also gives
+ * us a termination condition, when the last retired context is
+ * the kernel's there is no more we can evict.
+ */
+ if (!ggtt_is_idle(dev_priv)) {
+ ret = ggtt_flush(dev_priv);
+ if (ret)
+ return ret;
- ret = ggtt_flush(dev_priv);
- if (ret)
- return ret;
+ goto search_again;
+ }
- goto search_again;
+ /*
+ * If we still have pending pageflip completions, drop
+ * back to userspace to give our workqueues time to
+ * acquire our locks and unpin the old scanouts.
+ */
+ return intel_has_pending_fb_unpin(dev_priv) ? -EAGAIN : -ENOSPC;
found:
/* drm_mm doesn't allow any other other operations while
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 50d5e24f91a9..4ac454ae54d7 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -293,7 +293,7 @@ static int eb_create(struct i915_execbuffer *eb)
* as possible to perform the allocation and warn
* if it fails.
*/
- flags = GFP_TEMPORARY;
+ flags = GFP_KERNEL;
if (size > 1)
flags |= __GFP_NORETRY | __GFP_NOWARN;
@@ -337,6 +337,10 @@ eb_vma_misplaced(const struct drm_i915_gem_exec_object2 *entry,
(vma->node.start + vma->node.size - 1) >> 32)
return true;
+ if (flags & __EXEC_OBJECT_NEEDS_MAP &&
+ !i915_vma_is_map_and_fenceable(vma))
+ return true;
+
return false;
}
@@ -1515,7 +1519,7 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb)
urelocs = u64_to_user_ptr(eb->exec[i].relocs_ptr);
size = nreloc * sizeof(*relocs);
- relocs = kvmalloc_array(size, 1, GFP_TEMPORARY);
+ relocs = kvmalloc_array(size, 1, GFP_KERNEL);
if (!relocs) {
kvfree(relocs);
err = -ENOMEM;
@@ -2077,7 +2081,7 @@ get_fence_array(struct drm_i915_gem_execbuffer2 *args,
return ERR_PTR(-EFAULT);
fences = kvmalloc_array(args->num_cliprects, sizeof(*fences),
- __GFP_NOWARN | GFP_TEMPORARY);
+ __GFP_NOWARN | GFP_KERNEL);
if (!fences)
return ERR_PTR(-ENOMEM);
@@ -2463,9 +2467,9 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
/* Copy in the exec list from userland */
exec_list = kvmalloc_array(args->buffer_count, sizeof(*exec_list),
- __GFP_NOWARN | GFP_TEMPORARY);
+ __GFP_NOWARN | GFP_KERNEL);
exec2_list = kvmalloc_array(args->buffer_count + 1, sz,
- __GFP_NOWARN | GFP_TEMPORARY);
+ __GFP_NOWARN | GFP_KERNEL);
if (exec_list == NULL || exec2_list == NULL) {
DRM_DEBUG("Failed to allocate exec list for %d buffers\n",
args->buffer_count);
@@ -2543,7 +2547,7 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data,
/* Allocate an extra slot for use by the command parser */
exec2_list = kvmalloc_array(args->buffer_count + 1, sz,
- __GFP_NOWARN | GFP_TEMPORARY);
+ __GFP_NOWARN | GFP_KERNEL);
if (exec2_list == NULL) {
DRM_DEBUG("Failed to allocate exec list for %d buffers\n",
args->buffer_count);
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 0d5a988b3867..e2410eb5d96e 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -3231,7 +3231,7 @@ intel_rotate_pages(struct intel_rotation_info *rot_info,
/* Allocate a temporary list of source pages for random access. */
page_addr_list = kvmalloc_array(n_pages,
sizeof(dma_addr_t),
- GFP_TEMPORARY);
+ GFP_KERNEL);
if (!page_addr_list)
return ERR_PTR(ret);
diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c
index 23fd18bd1b56..709efe2357ea 100644
--- a/drivers/gpu/drm/i915/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/i915_gem_userptr.c
@@ -507,7 +507,7 @@ __i915_gem_userptr_get_pages_worker(struct work_struct *_work)
ret = -ENOMEM;
pinned = 0;
- pvec = kvmalloc_array(npages, sizeof(struct page *), GFP_TEMPORARY);
+ pvec = kvmalloc_array(npages, sizeof(struct page *), GFP_KERNEL);
if (pvec != NULL) {
struct mm_struct *mm = obj->userptr.mm->mm;
unsigned int flags = 0;
@@ -643,7 +643,7 @@ i915_gem_userptr_get_pages(struct drm_i915_gem_object *obj)
if (mm == current->mm) {
pvec = kvmalloc_array(num_pages, sizeof(struct page *),
- GFP_TEMPORARY |
+ GFP_KERNEL |
__GFP_NORETRY |
__GFP_NOWARN);
if (pvec) /* defer to worker if malloc fails */
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index ed5a1eb839ad..0c779671fe2d 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -787,16 +787,16 @@ int i915_error_state_buf_init(struct drm_i915_error_state_buf *ebuf,
*/
ebuf->size = count + 1 > PAGE_SIZE ? count + 1 : PAGE_SIZE;
ebuf->buf = kmalloc(ebuf->size,
- GFP_TEMPORARY | __GFP_NORETRY | __GFP_NOWARN);
+ GFP_KERNEL | __GFP_NORETRY | __GFP_NOWARN);
if (ebuf->buf == NULL) {
ebuf->size = PAGE_SIZE;
- ebuf->buf = kmalloc(ebuf->size, GFP_TEMPORARY);
+ ebuf->buf = kmalloc(ebuf->size, GFP_KERNEL);
}
if (ebuf->buf == NULL) {
ebuf->size = 128;
- ebuf->buf = kmalloc(ebuf->size, GFP_TEMPORARY);
+ ebuf->buf = kmalloc(ebuf->size, GFP_KERNEL);
}
if (ebuf->buf == NULL)
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index e21ce9c18b6e..b63893eeca73 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -839,7 +839,6 @@ static bool i915_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe,
pipe);
int position;
int vbl_start, vbl_end, hsync_start, htotal, vtotal;
- bool in_vbl = true;
unsigned long irqflags;
if (WARN_ON(!mode->crtc_clock)) {
@@ -922,8 +921,6 @@ static bool i915_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe,
spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
- in_vbl = position >= vbl_start && position < vbl_end;
-
/*
* While in vblank, position will be negative
* counting up towards 0 at vbl_end. And outside
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 94185d610673..370b9d248fed 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -2537,6 +2537,10 @@ static const struct file_operations fops = {
.poll = i915_perf_poll,
.read = i915_perf_read,
.unlocked_ioctl = i915_perf_ioctl,
+ /* Our ioctl have no arguments, so it's safe to use the same function
+ * to handle 32bits compatibility.
+ */
+ .compat_ioctl = i915_perf_ioctl,
};
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index ed7cd9ee2c2a..c9bcc6c45012 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -6998,6 +6998,7 @@ enum {
*/
#define L3_GENERAL_PRIO_CREDITS(x) (((x) >> 1) << 19)
#define L3_HIGH_PRIO_CREDITS(x) (((x) >> 1) << 14)
+#define L3_PRIO_CREDITS_MASK ((0x1f << 19) | (0x1f << 14))
#define GEN7_L3CNTLREG1 _MMIO(0xB01C)
#define GEN7_WA_FOR_GEN7_L3_CONTROL 0x3C47FF8C
diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
index 6fd5c57e21f6..ef72da74b87f 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_I915_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
#define _I915_TRACE_H_
diff --git a/drivers/gpu/drm/i915/i915_trace_points.c b/drivers/gpu/drm/i915/i915_trace_points.c
index f1df2bd4ecf4..463a7177997c 100644
--- a/drivers/gpu/drm/i915/i915_trace_points.c
+++ b/drivers/gpu/drm/i915/i915_trace_points.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright © 2009 Intel Corporation
*
diff --git a/drivers/gpu/drm/i915/intel_acpi.c b/drivers/gpu/drm/i915/intel_acpi.c
index 42fb436f6cdc..d1abf4bb7c81 100644
--- a/drivers/gpu/drm/i915/intel_acpi.c
+++ b/drivers/gpu/drm/i915/intel_acpi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Intel ACPI functions
*
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index d805b6e6fe71..27743be5b768 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -606,11 +606,6 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder,
connector->encoder->base.id,
connector->encoder->name);
- /* ELD Conn_Type */
- connector->eld[5] &= ~(3 << 2);
- if (intel_crtc_has_dp_encoder(crtc_state))
- connector->eld[5] |= (1 << 2);
-
connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
if (dev_priv->display.audio_codec_enable)
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 183e87e8ea31..5d4cd3d00564 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -1163,6 +1163,13 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port,
is_hdmi = is_dvi && (child->common.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
is_edp = is_dp && (child->common.device_type & DEVICE_TYPE_INTERNAL_CONNECTOR);
+ if (port == PORT_A && is_dvi) {
+ DRM_DEBUG_KMS("VBT claims port A supports DVI%s, ignoring\n",
+ is_hdmi ? "/HDMI" : "");
+ is_dvi = false;
+ is_hdmi = false;
+ }
+
info->supports_dvi = is_dvi;
info->supports_hdmi = is_hdmi;
info->supports_dp = is_dp;
@@ -1233,7 +1240,7 @@ static void parse_ddi_ports(struct drm_i915_private *dev_priv,
{
enum port port;
- if (!HAS_DDI(dev_priv))
+ if (!HAS_DDI(dev_priv) && !IS_CHERRYVIEW(dev_priv))
return;
if (!dev_priv->vbt.child_dev_num)
diff --git a/drivers/gpu/drm/i915/intel_color.c b/drivers/gpu/drm/i915/intel_color.c
index ff9ecd211abb..b8315bca852b 100644
--- a/drivers/gpu/drm/i915/intel_color.c
+++ b/drivers/gpu/drm/i915/intel_color.c
@@ -74,7 +74,7 @@
#define I9XX_CSC_COEFF_1_0 \
((7 << 12) | I9XX_CSC_COEFF_FP(CTM_COEFF_1_0, 8))
-static bool crtc_state_is_legacy(struct drm_crtc_state *state)
+static bool crtc_state_is_legacy_gamma(struct drm_crtc_state *state)
{
return !state->degamma_lut &&
!state->ctm &&
@@ -288,7 +288,7 @@ static void cherryview_load_csc_matrix(struct drm_crtc_state *state)
}
mode = (state->ctm ? CGM_PIPE_MODE_CSC : 0);
- if (!crtc_state_is_legacy(state)) {
+ if (!crtc_state_is_legacy_gamma(state)) {
mode |= (state->degamma_lut ? CGM_PIPE_MODE_DEGAMMA : 0) |
(state->gamma_lut ? CGM_PIPE_MODE_GAMMA : 0);
}
@@ -469,7 +469,7 @@ static void broadwell_load_luts(struct drm_crtc_state *state)
struct intel_crtc_state *intel_state = to_intel_crtc_state(state);
enum pipe pipe = to_intel_crtc(state->crtc)->pipe;
- if (crtc_state_is_legacy(state)) {
+ if (crtc_state_is_legacy_gamma(state)) {
haswell_load_luts(state);
return;
}
@@ -529,7 +529,7 @@ static void glk_load_luts(struct drm_crtc_state *state)
glk_load_degamma_lut(state);
- if (crtc_state_is_legacy(state)) {
+ if (crtc_state_is_legacy_gamma(state)) {
haswell_load_luts(state);
return;
}
@@ -551,7 +551,7 @@ static void cherryview_load_luts(struct drm_crtc_state *state)
uint32_t i, lut_size;
uint32_t word0, word1;
- if (crtc_state_is_legacy(state)) {
+ if (crtc_state_is_legacy_gamma(state)) {
/* Turn off degamma/gamma on CGM block. */
I915_WRITE(CGM_PIPE_MODE(pipe),
(state->ctm ? CGM_PIPE_MODE_CSC : 0));
@@ -632,12 +632,10 @@ int intel_color_check(struct drm_crtc *crtc,
return 0;
/*
- * We also allow no degamma lut and a gamma lut at the legacy
+ * We also allow no degamma lut/ctm and a gamma lut at the legacy
* size (256 entries).
*/
- if (!crtc_state->degamma_lut &&
- crtc_state->gamma_lut &&
- crtc_state->gamma_lut->length == LEGACY_LUT_LENGTH)
+ if (crtc_state_is_legacy_gamma(crtc_state))
return 0;
return -EINVAL;
diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
index 965988f79a55..92c1f8e166dc 100644
--- a/drivers/gpu/drm/i915/intel_csr.c
+++ b/drivers/gpu/drm/i915/intel_csr.c
@@ -216,7 +216,7 @@ static void gen9_set_dc_state_debugmask(struct drm_i915_private *dev_priv)
mask = DC_STATE_DEBUG_MASK_MEMORY_UP;
- if (IS_BROXTON(dev_priv))
+ if (IS_GEN9_LP(dev_priv))
mask |= DC_STATE_DEBUG_MASK_CORES;
/* The below bit doesn't need to be cleared ever afterwards */
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 4b4fd1f8110b..5e5fe03b638c 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -664,8 +664,8 @@ intel_ddi_get_buf_trans_fdi(struct drm_i915_private *dev_priv,
int *n_entries)
{
if (IS_BROADWELL(dev_priv)) {
- *n_entries = ARRAY_SIZE(hsw_ddi_translations_fdi);
- return hsw_ddi_translations_fdi;
+ *n_entries = ARRAY_SIZE(bdw_ddi_translations_fdi);
+ return bdw_ddi_translations_fdi;
} else if (IS_HASWELL(dev_priv)) {
*n_entries = ARRAY_SIZE(hsw_ddi_translations_fdi);
return hsw_ddi_translations_fdi;
@@ -1655,7 +1655,8 @@ bool intel_ddi_get_hw_state(struct intel_encoder *encoder,
out:
if (ret && IS_GEN9_LP(dev_priv)) {
tmp = I915_READ(BXT_PHY_CTL(port));
- if ((tmp & (BXT_PHY_LANE_POWERDOWN_ACK |
+ if ((tmp & (BXT_PHY_CMNLANE_POWERDOWN_ACK |
+ BXT_PHY_LANE_POWERDOWN_ACK |
BXT_PHY_LANE_ENABLED)) != BXT_PHY_LANE_ENABLED)
DRM_ERROR("Port %c enabled but PHY powered down? "
"(PHY_CTL %08x)\n", port_name(port), tmp);
@@ -2101,8 +2102,7 @@ static void intel_ddi_clk_select(struct intel_encoder *encoder,
* register writes.
*/
val = I915_READ(DPCLKA_CFGCR0);
- val &= ~(DPCLKA_CFGCR0_DDI_CLK_OFF(port) |
- DPCLKA_CFGCR0_DDI_CLK_SEL_MASK(port));
+ val &= ~DPCLKA_CFGCR0_DDI_CLK_OFF(port);
I915_WRITE(DPCLKA_CFGCR0, val);
} else if (IS_GEN9_BC(dev_priv)) {
/* DDI -> PLL mapping */
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f17275519484..5ebdb63330dd 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -10245,13 +10245,10 @@ struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev,
{
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
- enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
+ enum transcoder cpu_transcoder;
struct drm_display_mode *mode;
struct intel_crtc_state *pipe_config;
- int htot = I915_READ(HTOTAL(cpu_transcoder));
- int hsync = I915_READ(HSYNC(cpu_transcoder));
- int vtot = I915_READ(VTOTAL(cpu_transcoder));
- int vsync = I915_READ(VSYNC(cpu_transcoder));
+ u32 htot, hsync, vtot, vsync;
enum pipe pipe = intel_crtc->pipe;
mode = kzalloc(sizeof(*mode), GFP_KERNEL);
@@ -10279,6 +10276,13 @@ struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev,
i9xx_crtc_clock_get(intel_crtc, pipe_config);
mode->clock = pipe_config->port_clock / pipe_config->pixel_multiplier;
+
+ cpu_transcoder = pipe_config->cpu_transcoder;
+ htot = I915_READ(HTOTAL(cpu_transcoder));
+ hsync = I915_READ(HSYNC(cpu_transcoder));
+ vtot = I915_READ(VTOTAL(cpu_transcoder));
+ vsync = I915_READ(VSYNC(cpu_transcoder));
+
mode->hdisplay = (htot & 0xffff) + 1;
mode->htotal = ((htot & 0xffff0000) >> 16) + 1;
mode->hsync_start = (hsync & 0xffff) + 1;
@@ -12359,7 +12363,6 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
struct drm_crtc_state *old_crtc_state, *new_crtc_state;
struct drm_crtc *crtc;
struct intel_crtc_state *intel_cstate;
- bool hw_check = intel_state->modeset;
u64 put_domains[I915_MAX_PIPES] = {};
unsigned crtc_vblank_mask = 0;
int i;
@@ -12376,7 +12379,6 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
if (needs_modeset(new_crtc_state) ||
to_intel_crtc_state(new_crtc_state)->update_pipe) {
- hw_check = true;
put_domains[to_intel_crtc(crtc)->pipe] =
modeset_get_crtc_power_domains(crtc,
@@ -14030,7 +14032,7 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
if (mode_cmd->handles[i] != mode_cmd->handles[0]) {
DRM_DEBUG_KMS("bad plane %d handle\n", i);
- return -EINVAL;
+ goto err;
}
stride_alignment = intel_fb_stride_alignment(fb, i);
@@ -15225,6 +15227,23 @@ void intel_connector_unregister(struct drm_connector *connector)
intel_panel_destroy_backlight(connector);
}
+static void intel_hpd_poll_fini(struct drm_device *dev)
+{
+ struct intel_connector *connector;
+ struct drm_connector_list_iter conn_iter;
+
+ /* First disable polling... */
+ drm_kms_helper_poll_fini(dev);
+
+ /* Then kill the work that may have been queued by hpd. */
+ drm_connector_list_iter_begin(dev, &conn_iter);
+ for_each_intel_connector_iter(connector, &conn_iter) {
+ if (connector->modeset_retry_work.func)
+ cancel_work_sync(&connector->modeset_retry_work);
+ }
+ drm_connector_list_iter_end(&conn_iter);
+}
+
void intel_modeset_cleanup(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = to_i915(dev);
@@ -15245,7 +15264,7 @@ void intel_modeset_cleanup(struct drm_device *dev)
* Due to the hpd irq storm handling the hotplug work can re-arm the
* poll handlers. Hence disable polling after hpd handling is shut down.
*/
- drm_kms_helper_poll_fini(dev);
+ intel_hpd_poll_fini(dev);
/* poll work can call into fbdev, hence clean that up afterwards */
intel_fbdev_fini(dev_priv);
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 64134947c0aa..09f274419eea 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -2307,8 +2307,8 @@ static void edp_panel_off(struct intel_dp *intel_dp)
I915_WRITE(pp_ctrl_reg, pp);
POSTING_READ(pp_ctrl_reg);
- intel_dp->panel_power_off_time = ktime_get_boottime();
wait_panel_off(intel_dp);
+ intel_dp->panel_power_off_time = ktime_get_boottime();
/* We got a reference when we enabled the VDD. */
intel_display_power_put(dev_priv, intel_dp->aux_power_domain);
@@ -3731,9 +3731,16 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp)
}
- /* Read the eDP Display control capabilities registers */
- if ((intel_dp->dpcd[DP_EDP_CONFIGURATION_CAP] & DP_DPCD_DISPLAY_CONTROL_CAPABLE) &&
- drm_dp_dpcd_read(&intel_dp->aux, DP_EDP_DPCD_REV,
+ /*
+ * Read the eDP display control registers.
+ *
+ * Do this independent of DP_DPCD_DISPLAY_CONTROL_CAPABLE bit in
+ * DP_EDP_CONFIGURATION_CAP, because some buggy displays do not have it
+ * set, but require eDP 1.4+ detection (e.g. for supported link rates
+ * method). The display control registers should read zero if they're
+ * not supported anyway.
+ */
+ if (drm_dp_dpcd_read(&intel_dp->aux, DP_EDP_DPCD_REV,
intel_dp->edp_dpcd, sizeof(intel_dp->edp_dpcd)) ==
sizeof(intel_dp->edp_dpcd))
DRM_DEBUG_KMS("EDP DPCD : %*ph\n", (int) sizeof(intel_dp->edp_dpcd),
@@ -5273,7 +5280,7 @@ intel_dp_init_panel_power_sequencer(struct drm_device *dev,
* seems sufficient to avoid this problem.
*/
if (dev_priv->quirks & QUIRK_INCREASE_T12_DELAY) {
- vbt.t11_t12 = max_t(u16, vbt.t11_t12, 900 * 10);
+ vbt.t11_t12 = max_t(u16, vbt.t11_t12, 1300 * 10);
DRM_DEBUG_KMS("Increasing T12 panel delay as per the quirk to %d\n",
vbt.t11_t12);
}
diff --git a/drivers/gpu/drm/i915/intel_dpio_phy.c b/drivers/gpu/drm/i915/intel_dpio_phy.c
index 09b670929786..de38d014ed39 100644
--- a/drivers/gpu/drm/i915/intel_dpio_phy.c
+++ b/drivers/gpu/drm/i915/intel_dpio_phy.c
@@ -208,12 +208,6 @@ static const struct bxt_ddi_phy_info glk_ddi_phy_info[] = {
},
};
-static u32 bxt_phy_port_mask(const struct bxt_ddi_phy_info *phy_info)
-{
- return (phy_info->dual_channel * BIT(phy_info->channel[DPIO_CH1].port)) |
- BIT(phy_info->channel[DPIO_CH0].port);
-}
-
static const struct bxt_ddi_phy_info *
bxt_get_phy_list(struct drm_i915_private *dev_priv, int *count)
{
@@ -313,7 +307,6 @@ bool bxt_ddi_phy_is_enabled(struct drm_i915_private *dev_priv,
enum dpio_phy phy)
{
const struct bxt_ddi_phy_info *phy_info;
- enum port port;
phy_info = bxt_get_phy_info(dev_priv, phy);
@@ -335,19 +328,6 @@ bool bxt_ddi_phy_is_enabled(struct drm_i915_private *dev_priv,
return false;
}
- for_each_port_masked(port, bxt_phy_port_mask(phy_info)) {
- u32 tmp = I915_READ(BXT_PHY_CTL(port));
-
- if (tmp & BXT_PHY_CMNLANE_POWERDOWN_ACK) {
- DRM_DEBUG_DRIVER("DDI PHY %d powered, but common lane "
- "for port %c powered down "
- "(PHY_CTL %08x)\n",
- phy, port_name(port), tmp);
-
- return false;
- }
- }
-
return true;
}
diff --git a/drivers/gpu/drm/i915/intel_dpll_mgr.c b/drivers/gpu/drm/i915/intel_dpll_mgr.c
index a2a3d93d67bd..df808a94c511 100644
--- a/drivers/gpu/drm/i915/intel_dpll_mgr.c
+++ b/drivers/gpu/drm/i915/intel_dpll_mgr.c
@@ -1996,7 +1996,7 @@ static void cnl_ddi_pll_enable(struct drm_i915_private *dev_priv,
/* 3. Configure DPLL_CFGCR0 */
/* Avoid touch CFGCR1 if HDMI mode is not enabled */
- if (pll->state.hw_state.cfgcr0 & DPLL_CTRL1_HDMI_MODE(pll->id)) {
+ if (pll->state.hw_state.cfgcr0 & DPLL_CFGCR0_HDMI_MODE) {
val = pll->state.hw_state.cfgcr1;
I915_WRITE(CNL_DPLL_CFGCR1(pll->id), val);
/* 4. Reab back to ensure writes completed */
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index fa47285918f4..79fbaf78f604 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -496,7 +496,6 @@ struct intel_crtc_scaler_state {
struct intel_pipe_wm {
struct intel_wm_level wm[5];
- struct intel_wm_level raw_wm[5];
uint32_t linetime;
bool fbc_wm_enabled;
bool pipe_enabled;
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index f0c11aec5ea5..7442891762be 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -892,8 +892,6 @@ static void intel_dsi_disable(struct intel_encoder *encoder,
struct intel_crtc_state *old_crtc_state,
struct drm_connector_state *old_conn_state)
{
- struct drm_device *dev = encoder->base.dev;
- struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
enum port port;
@@ -903,15 +901,6 @@ static void intel_dsi_disable(struct intel_encoder *encoder,
intel_panel_disable_backlight(old_conn_state);
/*
- * Disable Device ready before the port shutdown in order
- * to avoid split screen
- */
- if (IS_BROXTON(dev_priv)) {
- for_each_dsi_port(port, intel_dsi->ports)
- I915_WRITE(MIPI_DEVICE_READY(port), 0);
- }
-
- /*
* According to the spec we should send SHUTDOWN before
* MIPI_SEQ_DISPLAY_OFF only for v3+ VBTs, but field testing
* has shown that the v3 sequence works for v2 VBTs too
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index 9ab596941372..3c2d9cf22ed5 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -1048,9 +1048,12 @@ static int bxt_init_workarounds(struct intel_engine_cs *engine)
}
/* WaProgramL3SqcReg1DefaultForPerf:bxt */
- if (IS_BXT_REVID(dev_priv, BXT_REVID_B0, REVID_FOREVER))
- I915_WRITE(GEN8_L3SQCREG1, L3_GENERAL_PRIO_CREDITS(62) |
- L3_HIGH_PRIO_CREDITS(2));
+ if (IS_BXT_REVID(dev_priv, BXT_REVID_B0, REVID_FOREVER)) {
+ u32 val = I915_READ(GEN8_L3SQCREG1);
+ val &= ~L3_PRIO_CREDITS_MASK;
+ val |= L3_GENERAL_PRIO_CREDITS(62) | L3_HIGH_PRIO_CREDITS(2);
+ I915_WRITE(GEN8_L3SQCREG1, val);
+ }
/* WaToEnableHwFixForPushConstHWBug:bxt */
if (IS_BXT_REVID(dev_priv, BXT_REVID_C0, REVID_FOREVER))
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
index 951e834dd274..28a778b785ac 100644
--- a/drivers/gpu/drm/i915/intel_modes.c
+++ b/drivers/gpu/drm/i915/intel_modes.c
@@ -30,6 +30,21 @@
#include "intel_drv.h"
#include "i915_drv.h"
+static void intel_connector_update_eld_conn_type(struct drm_connector *connector)
+{
+ u8 conn_type;
+
+ if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
+ connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
+ conn_type = DRM_ELD_CONN_TYPE_DP;
+ } else {
+ conn_type = DRM_ELD_CONN_TYPE_HDMI;
+ }
+
+ connector->eld[DRM_ELD_SAD_COUNT_CONN_TYPE] &= ~DRM_ELD_CONN_TYPE_MASK;
+ connector->eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= conn_type;
+}
+
/**
* intel_connector_update_modes - update connector from edid
* @connector: DRM connector device to use
@@ -44,6 +59,8 @@ int intel_connector_update_modes(struct drm_connector *connector,
ret = drm_add_edid_modes(connector, edid);
drm_edid_to_eld(connector, edid);
+ intel_connector_update_eld_conn_type(connector);
+
return ret;
}
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index a17b1de7d7e0..3b1c5d783ee7 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -1699,6 +1699,8 @@ bxt_setup_backlight(struct intel_connector *connector, enum pipe unused)
if (!panel->backlight.max)
return -ENODEV;
+ panel->backlight.min = get_backlight_min_vbt(connector);
+
val = bxt_get_backlight(connector);
val = intel_panel_compute_brightness(connector, val);
panel->backlight.level = clamp(val, panel->backlight.min,
@@ -1735,6 +1737,8 @@ cnp_setup_backlight(struct intel_connector *connector, enum pipe unused)
if (!panel->backlight.max)
return -ENODEV;
+ panel->backlight.min = get_backlight_min_vbt(connector);
+
val = bxt_get_backlight(connector);
val = intel_panel_compute_brightness(connector, val);
panel->backlight.level = clamp(val, panel->backlight.min,
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index ed662937ec3c..cb950752c346 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -2716,9 +2716,9 @@ static void ilk_compute_wm_level(const struct drm_i915_private *dev_priv,
const struct intel_crtc *intel_crtc,
int level,
struct intel_crtc_state *cstate,
- struct intel_plane_state *pristate,
- struct intel_plane_state *sprstate,
- struct intel_plane_state *curstate,
+ const struct intel_plane_state *pristate,
+ const struct intel_plane_state *sprstate,
+ const struct intel_plane_state *curstate,
struct intel_wm_level *result)
{
uint16_t pri_latency = dev_priv->wm.pri_latency[level];
@@ -3038,28 +3038,24 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)
struct intel_pipe_wm *pipe_wm;
struct drm_device *dev = state->dev;
const struct drm_i915_private *dev_priv = to_i915(dev);
- struct intel_plane *intel_plane;
- struct intel_plane_state *pristate = NULL;
- struct intel_plane_state *sprstate = NULL;
- struct intel_plane_state *curstate = NULL;
+ struct drm_plane *plane;
+ const struct drm_plane_state *plane_state;
+ const struct intel_plane_state *pristate = NULL;
+ const struct intel_plane_state *sprstate = NULL;
+ const struct intel_plane_state *curstate = NULL;
int level, max_level = ilk_wm_max_level(dev_priv), usable_level;
struct ilk_wm_maximums max;
pipe_wm = &cstate->wm.ilk.optimal;
- for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
- struct intel_plane_state *ps;
-
- ps = intel_atomic_get_existing_plane_state(state,
- intel_plane);
- if (!ps)
- continue;
+ drm_atomic_crtc_state_for_each_plane_state(plane, plane_state, &cstate->base) {
+ const struct intel_plane_state *ps = to_intel_plane_state(plane_state);
- if (intel_plane->base.type == DRM_PLANE_TYPE_PRIMARY)
+ if (plane->type == DRM_PLANE_TYPE_PRIMARY)
pristate = ps;
- else if (intel_plane->base.type == DRM_PLANE_TYPE_OVERLAY)
+ else if (plane->type == DRM_PLANE_TYPE_OVERLAY)
sprstate = ps;
- else if (intel_plane->base.type == DRM_PLANE_TYPE_CURSOR)
+ else if (plane->type == DRM_PLANE_TYPE_CURSOR)
curstate = ps;
}
@@ -3081,11 +3077,9 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)
if (pipe_wm->sprites_scaled)
usable_level = 0;
- ilk_compute_wm_level(dev_priv, intel_crtc, 0, cstate,
- pristate, sprstate, curstate, &pipe_wm->raw_wm[0]);
-
memset(&pipe_wm->wm, 0, sizeof(pipe_wm->wm));
- pipe_wm->wm[0] = pipe_wm->raw_wm[0];
+ ilk_compute_wm_level(dev_priv, intel_crtc, 0, cstate,
+ pristate, sprstate, curstate, &pipe_wm->wm[0]);
if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
pipe_wm->linetime = hsw_compute_linetime_wm(cstate);
@@ -3095,8 +3089,8 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)
ilk_compute_wm_reg_maximums(dev_priv, 1, &max);
- for (level = 1; level <= max_level; level++) {
- struct intel_wm_level *wm = &pipe_wm->raw_wm[level];
+ for (level = 1; level <= usable_level; level++) {
+ struct intel_wm_level *wm = &pipe_wm->wm[level];
ilk_compute_wm_level(dev_priv, intel_crtc, level, cstate,
pristate, sprstate, curstate, wm);
@@ -3106,13 +3100,10 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)
* register maximums since such watermarks are
* always invalid.
*/
- if (level > usable_level)
- continue;
-
- if (ilk_validate_wm_level(level, &max, wm))
- pipe_wm->wm[level] = *wm;
- else
- usable_level = level;
+ if (!ilk_validate_wm_level(level, &max, wm)) {
+ memset(wm, 0, sizeof(*wm));
+ break;
+ }
}
return 0;
@@ -8245,14 +8236,17 @@ static void gen8_set_l3sqc_credits(struct drm_i915_private *dev_priv,
int high_prio_credits)
{
u32 misccpctl;
+ u32 val;
/* WaTempDisableDOPClkGating:bdw */
misccpctl = I915_READ(GEN7_MISCCPCTL);
I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE);
- I915_WRITE(GEN8_L3SQCREG1,
- L3_GENERAL_PRIO_CREDITS(general_prio_credits) |
- L3_HIGH_PRIO_CREDITS(high_prio_credits));
+ val = I915_READ(GEN8_L3SQCREG1);
+ val &= ~L3_PRIO_CREDITS_MASK;
+ val |= L3_GENERAL_PRIO_CREDITS(general_prio_credits);
+ val |= L3_HIGH_PRIO_CREDITS(high_prio_credits);
+ I915_WRITE(GEN8_L3SQCREG1, val);
/*
* Wait at least 100 clocks before re-enabling clock gating.
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index 02d8974bf9ab..6b2067f10824 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INTEL_RINGBUFFER_H_
#define _INTEL_RINGBUFFER_H_
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
index b66d8e136aa3..49577eba8e7e 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -368,7 +368,7 @@ static void hsw_power_well_enable(struct drm_i915_private *dev_priv,
{
enum i915_power_well_id id = power_well->id;
bool wait_fuses = power_well->hsw.has_fuses;
- enum skl_power_gate pg;
+ enum skl_power_gate uninitialized_var(pg);
u32 val;
if (wait_fuses) {
@@ -2782,6 +2782,9 @@ static void cnl_display_core_init(struct drm_i915_private *dev_priv, bool resume
/* 6. Enable DBUF */
gen9_dbuf_enable(dev_priv);
+
+ if (resume && dev_priv->csr.dmc_payload)
+ intel_csr_load_program(dev_priv);
}
#undef CNL_PROCMON_IDX
diff --git a/drivers/gpu/drm/i915/selftests/i915_live_selftests.h b/drivers/gpu/drm/i915/selftests/i915_live_selftests.h
index 18b174d855ca..1519f1b7841b 100644
--- a/drivers/gpu/drm/i915/selftests/i915_live_selftests.h
+++ b/drivers/gpu/drm/i915/selftests/i915_live_selftests.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* List each unit test as selftest(name, function)
*
* The name is used as both an enum and expanded as subtest__name to create
diff --git a/drivers/gpu/drm/i915/selftests/i915_mock_selftests.h b/drivers/gpu/drm/i915/selftests/i915_mock_selftests.h
index fc74687501ba..e5a9e5dcf2f3 100644
--- a/drivers/gpu/drm/i915/selftests/i915_mock_selftests.h
+++ b/drivers/gpu/drm/i915/selftests/i915_mock_selftests.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* List each unit test as selftest(name, function)
*
* The name is used as both an enum and expanded as subtest__name to create
diff --git a/drivers/gpu/drm/i915/selftests/i915_random.c b/drivers/gpu/drm/i915/selftests/i915_random.c
index d044bf9a6feb..222c511bea49 100644
--- a/drivers/gpu/drm/i915/selftests/i915_random.c
+++ b/drivers/gpu/drm/i915/selftests/i915_random.c
@@ -62,7 +62,7 @@ unsigned int *i915_random_order(unsigned int count, struct rnd_state *state)
{
unsigned int *order, i;
- order = kmalloc_array(count, sizeof(*order), GFP_TEMPORARY);
+ order = kmalloc_array(count, sizeof(*order), GFP_KERNEL);
if (!order)
return order;
diff --git a/drivers/gpu/drm/i915/selftests/intel_breadcrumbs.c b/drivers/gpu/drm/i915/selftests/intel_breadcrumbs.c
index 7276194c04f7..828904b7d468 100644
--- a/drivers/gpu/drm/i915/selftests/intel_breadcrumbs.c
+++ b/drivers/gpu/drm/i915/selftests/intel_breadcrumbs.c
@@ -117,12 +117,12 @@ static int igt_random_insert_remove(void *arg)
mock_engine_reset(engine);
- waiters = kvmalloc_array(count, sizeof(*waiters), GFP_TEMPORARY);
+ waiters = kvmalloc_array(count, sizeof(*waiters), GFP_KERNEL);
if (!waiters)
goto out_engines;
bitmap = kcalloc(DIV_ROUND_UP(count, BITS_PER_LONG), sizeof(*bitmap),
- GFP_TEMPORARY);
+ GFP_KERNEL);
if (!bitmap)
goto out_waiters;
@@ -187,12 +187,12 @@ static int igt_insert_complete(void *arg)
mock_engine_reset(engine);
- waiters = kvmalloc_array(count, sizeof(*waiters), GFP_TEMPORARY);
+ waiters = kvmalloc_array(count, sizeof(*waiters), GFP_KERNEL);
if (!waiters)
goto out_engines;
bitmap = kcalloc(DIV_ROUND_UP(count, BITS_PER_LONG), sizeof(*bitmap),
- GFP_TEMPORARY);
+ GFP_KERNEL);
if (!bitmap)
goto out_waiters;
@@ -368,7 +368,7 @@ static int igt_wakeup(void *arg)
mock_engine_reset(engine);
- waiters = kvmalloc_array(count, sizeof(*waiters), GFP_TEMPORARY);
+ waiters = kvmalloc_array(count, sizeof(*waiters), GFP_KERNEL);
if (!waiters)
goto out_engines;
diff --git a/drivers/gpu/drm/i915/selftests/intel_uncore.c b/drivers/gpu/drm/i915/selftests/intel_uncore.c
index 2d0fef2cfca6..3cac22eb47ce 100644
--- a/drivers/gpu/drm/i915/selftests/intel_uncore.c
+++ b/drivers/gpu/drm/i915/selftests/intel_uncore.c
@@ -127,7 +127,7 @@ static int intel_uncore_check_forcewake_domains(struct drm_i915_private *dev_pri
return 0;
valid = kzalloc(BITS_TO_LONGS(FW_RANGE) * sizeof(*valid),
- GFP_TEMPORARY);
+ GFP_KERNEL);
if (!valid)
return -ENOMEM;
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.h b/drivers/gpu/drm/i915/selftests/mock_gem_device.h
index 4cca4d57f52c..b5dc4e394555 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.h
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MOCK_GEM_DEVICE_H__
#define __MOCK_GEM_DEVICE_H__
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_object.h b/drivers/gpu/drm/i915/selftests/mock_gem_object.h
index 9fbf67321662..20acdbee7bd0 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_object.h
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_object.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MOCK_GEM_OBJECT_H__
#define __MOCK_GEM_OBJECT_H__
diff --git a/drivers/gpu/drm/imx/Makefile b/drivers/gpu/drm/imx/Makefile
index 16ecef33e008..ab6c83caceb7 100644
--- a/drivers/gpu/drm/imx/Makefile
+++ b/drivers/gpu/drm/imx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
imxdrm-objs := imx-drm-core.o ipuv3-crtc.o ipuv3-plane.o
diff --git a/drivers/gpu/drm/imx/imx-drm.h b/drivers/gpu/drm/imx/imx-drm.h
index f6dd64be9cd5..f0b7556c0857 100644
--- a/drivers/gpu/drm/imx/imx-drm.h
+++ b/drivers/gpu/drm/imx/imx-drm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IMX_DRM_H_
#define _IMX_DRM_H_
diff --git a/drivers/gpu/drm/imx/ipuv3-plane.h b/drivers/gpu/drm/imx/ipuv3-plane.h
index 596b24ddbf65..e563ea17a827 100644
--- a/drivers/gpu/drm/imx/ipuv3-plane.h
+++ b/drivers/gpu/drm/imx/ipuv3-plane.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IPUV3_PLANE_H__
#define __IPUV3_PLANE_H__
diff --git a/drivers/gpu/drm/lib/drm_random.c b/drivers/gpu/drm/lib/drm_random.c
index 7b12a68c3b54..eeb155826d27 100644
--- a/drivers/gpu/drm/lib/drm_random.c
+++ b/drivers/gpu/drm/lib/drm_random.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bitops.h>
#include <linux/kernel.h>
#include <linux/random.h>
@@ -28,7 +29,7 @@ unsigned int *drm_random_order(unsigned int count, struct rnd_state *state)
{
unsigned int *order, i;
- order = kmalloc_array(count, sizeof(*order), GFP_TEMPORARY);
+ order = kmalloc_array(count, sizeof(*order), GFP_KERNEL);
if (!order)
return order;
diff --git a/drivers/gpu/drm/lib/drm_random.h b/drivers/gpu/drm/lib/drm_random.h
index a78644bea7f9..4a3e94dfa0c0 100644
--- a/drivers/gpu/drm/lib/drm_random.h
+++ b/drivers/gpu/drm/lib/drm_random.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRM_RANDOM_H__
#define __DRM_RANDOM_H__
diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile
index e37b55a23a65..ce83c396a742 100644
--- a/drivers/gpu/drm/mediatek/Makefile
+++ b/drivers/gpu/drm/mediatek/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
mediatek-drm-y := mtk_disp_color.o \
mtk_disp_ovl.o \
mtk_disp_rdma.o \
diff --git a/drivers/gpu/drm/mgag200/mgag200_reg.h b/drivers/gpu/drm/mgag200/mgag200_reg.h
index 3ae442a64bd6..c096a9d6bcbc 100644
--- a/drivers/gpu/drm/mgag200/mgag200_reg.h
+++ b/drivers/gpu/drm/mgag200/mgag200_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* MGA Millennium (MGA2064W) functions
* MGA Mystique (MGA1064SG) functions
diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
index 33008fa1be9b..ced70783b44e 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -Idrivers/gpu/drm/msm
ccflags-$(CONFIG_DRM_MSM_DSI) += -Idrivers/gpu/drm/msm/dsi
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
index dbb31a014419..deaf869374ea 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -248,7 +248,7 @@ disable_clks:
clk_disable_unprepare(ahb_clk);
disable_gdsc:
regulator_disable(gdsc_reg);
- pm_runtime_put_autosuspend(dev);
+ pm_runtime_put_sync(dev);
put_clk:
clk_put(ahb_clk);
put_gdsc:
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c
index c2bdad88447e..824067d2d427 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c
@@ -83,6 +83,8 @@ const struct mdp5_cfg_hw msm8x74v1_config = {
.caps = MDP_LM_CAP_WB },
},
.nb_stages = 5,
+ .max_width = 2048,
+ .max_height = 0xFFFF,
},
.dspp = {
.count = 3,
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c
index 6fcb58ab718c..440977677001 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c
@@ -804,8 +804,6 @@ static int mdp5_crtc_cursor_set(struct drm_crtc *crtc,
spin_unlock_irqrestore(&mdp5_crtc->cursor.lock, flags);
- pm_runtime_put_autosuspend(&pdev->dev);
-
set_cursor:
ret = mdp5_ctl_set_cursor(ctl, pipeline, 0, cursor_enable);
if (ret) {
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index f15821a0d900..ea5bb0e1632c 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -610,17 +610,6 @@ int msm_gem_sync_object(struct drm_gem_object *obj,
struct dma_fence *fence;
int i, ret;
- if (!exclusive) {
- /* NOTE: _reserve_shared() must happen before _add_shared_fence(),
- * which makes this a slightly strange place to call it. OTOH this
- * is a convenient can-fail point to hook it in. (And similar to
- * how etnaviv and nouveau handle this.)
- */
- ret = reservation_object_reserve_shared(msm_obj->resv);
- if (ret)
- return ret;
- }
-
fobj = reservation_object_get_list(msm_obj->resv);
if (!fobj || (fobj->shared_count == 0)) {
fence = reservation_object_get_excl(msm_obj->resv);
@@ -1045,10 +1034,10 @@ static void *_msm_gem_kernel_new(struct drm_device *dev, uint32_t size,
}
vaddr = msm_gem_get_vaddr(obj);
- if (!vaddr) {
+ if (IS_ERR(vaddr)) {
msm_gem_put_iova(obj, aspace);
drm_gem_object_unreference(obj);
- return ERR_PTR(-ENOMEM);
+ return ERR_CAST(vaddr);
}
if (bo)
diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c
index 8a75c0bd8a78..93535cac0676 100644
--- a/drivers/gpu/drm/msm/msm_gem_submit.c
+++ b/drivers/gpu/drm/msm/msm_gem_submit.c
@@ -40,7 +40,7 @@ static struct msm_gem_submit *submit_create(struct drm_device *dev,
if (sz > SIZE_MAX)
return NULL;
- submit = kmalloc(sz, GFP_TEMPORARY | __GFP_NOWARN | __GFP_NORETRY);
+ submit = kmalloc(sz, GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY);
if (!submit)
return NULL;
@@ -221,7 +221,7 @@ fail:
return ret;
}
-static int submit_fence_sync(struct msm_gem_submit *submit)
+static int submit_fence_sync(struct msm_gem_submit *submit, bool no_implicit)
{
int i, ret = 0;
@@ -229,6 +229,20 @@ static int submit_fence_sync(struct msm_gem_submit *submit)
struct msm_gem_object *msm_obj = submit->bos[i].obj;
bool write = submit->bos[i].flags & MSM_SUBMIT_BO_WRITE;
+ if (!write) {
+ /* NOTE: _reserve_shared() must happen before
+ * _add_shared_fence(), which makes this a slightly
+ * strange place to call it. OTOH this is a
+ * convenient can-fail point to hook it in.
+ */
+ ret = reservation_object_reserve_shared(msm_obj->resv);
+ if (ret)
+ return ret;
+ }
+
+ if (no_implicit)
+ continue;
+
ret = msm_gem_sync_object(&msm_obj->base, submit->gpu->fctx, write);
if (ret)
break;
@@ -451,11 +465,9 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
if (ret)
goto out;
- if (!(args->flags & MSM_SUBMIT_NO_IMPLICIT)) {
- ret = submit_fence_sync(submit);
- if (ret)
- goto out;
- }
+ ret = submit_fence_sync(submit, !!(args->flags & MSM_SUBMIT_NO_IMPLICIT));
+ if (ret)
+ goto out;
ret = submit_pin_objects(submit);
if (ret)
diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c
index ffbff27600e0..6a887032c66a 100644
--- a/drivers/gpu/drm/msm/msm_gpu.c
+++ b/drivers/gpu/drm/msm/msm_gpu.c
@@ -718,7 +718,8 @@ void msm_gpu_cleanup(struct msm_gpu *gpu)
msm_gem_put_iova(gpu->rb->bo, gpu->aspace);
msm_ringbuffer_destroy(gpu->rb);
}
- if (gpu->aspace) {
+
+ if (!IS_ERR_OR_NULL(gpu->aspace)) {
gpu->aspace->mmu->funcs->detach(gpu->aspace->mmu,
NULL, 0);
msm_gem_address_space_put(gpu->aspace);
diff --git a/drivers/gpu/drm/msm/msm_rd.c b/drivers/gpu/drm/msm/msm_rd.c
index 0366b8092f97..ec56794ad039 100644
--- a/drivers/gpu/drm/msm/msm_rd.c
+++ b/drivers/gpu/drm/msm/msm_rd.c
@@ -111,10 +111,14 @@ static void rd_write(struct msm_rd_state *rd, const void *buf, int sz)
wait_event(rd->fifo_event, circ_space(&rd->fifo) > 0);
+ /* Note that smp_load_acquire() is not strictly required
+ * as CIRC_SPACE_TO_END() does not access the tail more
+ * than once.
+ */
n = min(sz, circ_space_to_end(&rd->fifo));
memcpy(fptr, ptr, n);
- fifo->head = (fifo->head + n) & (BUF_SZ - 1);
+ smp_store_release(&fifo->head, (fifo->head + n) & (BUF_SZ - 1));
sz -= n;
ptr += n;
@@ -145,13 +149,17 @@ static ssize_t rd_read(struct file *file, char __user *buf,
if (ret)
goto out;
+ /* Note that smp_load_acquire() is not strictly required
+ * as CIRC_CNT_TO_END() does not access the head more than
+ * once.
+ */
n = min_t(int, sz, circ_count_to_end(&rd->fifo));
if (copy_to_user(buf, fptr, n)) {
ret = -EFAULT;
goto out;
}
- fifo->tail = (fifo->tail + n) & (BUF_SZ - 1);
+ smp_store_release(&fifo->tail, (fifo->tail + n) & (BUF_SZ - 1));
*ppos += n;
wake_up_all(&rd->fifo_event);
diff --git a/drivers/gpu/drm/nouveau/dispnv04/cursor.c b/drivers/gpu/drm/nouveau/dispnv04/cursor.c
index f26e44ea7389..ebf860bd59af 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/cursor.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/cursor.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <drm/drmP.h>
#include <drm/drm_mode.h>
#include "nouveau_drv.h"
diff --git a/drivers/gpu/drm/nouveau/dispnv04/disp.h b/drivers/gpu/drm/nouveau/dispnv04/disp.h
index 74a8795c2c2b..f74f1f2b186e 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/disp.h
+++ b/drivers/gpu/drm/nouveau/dispnv04/disp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV04_DISPLAY_H__
#define __NV04_DISPLAY_H__
#include <subdev/bios.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl0002.h b/drivers/gpu/drm/nouveau/include/nvif/cl0002.h
index 6d72ed38da32..1a8b45b4631f 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl0002.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl0002.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL0002_H__
#define __NVIF_CL0002_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl0046.h b/drivers/gpu/drm/nouveau/include/nvif/cl0046.h
index a6a71f4ad91e..c0d5eba4f8fc 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl0046.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl0046.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL0046_H__
#define __NVIF_CL0046_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl006b.h b/drivers/gpu/drm/nouveau/include/nvif/cl006b.h
index 309ab8a3d9e8..d0e8f35d9e92 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl006b.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl006b.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL006B_H__
#define __NVIF_CL006B_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl0080.h b/drivers/gpu/drm/nouveau/include/nvif/cl0080.h
index 287a7d6fa480..2740278d226b 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl0080.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl0080.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL0080_H__
#define __NVIF_CL0080_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl506e.h b/drivers/gpu/drm/nouveau/include/nvif/cl506e.h
index aa94b8cf9679..b4cd58093300 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl506e.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl506e.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL506E_H__
#define __NVIF_CL506E_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl506f.h b/drivers/gpu/drm/nouveau/include/nvif/cl506f.h
index 3b7101966de4..14d20c813cdb 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl506f.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl506f.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL506F_H__
#define __NVIF_CL506F_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl5070.h b/drivers/gpu/drm/nouveau/include/nvif/cl5070.h
index 542d95145a67..7cdf53615d7b 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl5070.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl5070.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL5070_H__
#define __NVIF_CL5070_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl507a.h b/drivers/gpu/drm/nouveau/include/nvif/cl507a.h
index 12e0643b78bd..36e537218596 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl507a.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl507a.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL507A_H__
#define __NVIF_CL507A_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl507b.h b/drivers/gpu/drm/nouveau/include/nvif/cl507b.h
index 99e9d8c47f60..3e643b752bfc 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl507b.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl507b.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL507B_H__
#define __NVIF_CL507B_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl507c.h b/drivers/gpu/drm/nouveau/include/nvif/cl507c.h
index 6af70dbdfd9f..fd9e336d0a24 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl507c.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl507c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL507C_H__
#define __NVIF_CL507C_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl507d.h b/drivers/gpu/drm/nouveau/include/nvif/cl507d.h
index 5ab0c9e4c6a3..e994c6894e3e 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl507d.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl507d.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL507D_H__
#define __NVIF_CL507D_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl507e.h b/drivers/gpu/drm/nouveau/include/nvif/cl507e.h
index c06209f3cac4..8082d2fde248 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl507e.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl507e.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL507E_H__
#define __NVIF_CL507E_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl826e.h b/drivers/gpu/drm/nouveau/include/nvif/cl826e.h
index 91e33db21a2f..36944ff09e3c 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl826e.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl826e.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL826E_H__
#define __NVIF_CL826E_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl826f.h b/drivers/gpu/drm/nouveau/include/nvif/cl826f.h
index e34efd4ec537..df09a50817eb 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl826f.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl826f.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL826F_H__
#define __NVIF_CL826F_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl906f.h b/drivers/gpu/drm/nouveau/include/nvif/cl906f.h
index a2d5410a491b..6d16a3a2ec02 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl906f.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl906f.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL906F_H__
#define __NVIF_CL906F_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl9097.h b/drivers/gpu/drm/nouveau/include/nvif/cl9097.h
index 4057676d2981..e4c8de6d00b7 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl9097.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl9097.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CL9097_H__
#define __NVIF_CL9097_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/cla06f.h b/drivers/gpu/drm/nouveau/include/nvif/cla06f.h
index 2efa3d048bb9..597ebb52d5f9 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cla06f.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cla06f.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CLA06F_H__
#define __NVIF_CLA06F_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/class.h b/drivers/gpu/drm/nouveau/include/nvif/class.h
index d08da82ba7ed..e3a2ea8bde70 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/class.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/class.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CLASS_H__
#define __NVIF_CLASS_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/client.h b/drivers/gpu/drm/nouveau/include/nvif/client.h
index b52a8eadce01..f5df8b30c599 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/client.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/client.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_CLIENT_H__
#define __NVIF_CLIENT_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/device.h b/drivers/gpu/drm/nouveau/include/nvif/device.h
index bcb981711617..09439b037870 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/device.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_DEVICE_H__
#define __NVIF_DEVICE_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/driver.h b/drivers/gpu/drm/nouveau/include/nvif/driver.h
index 0c6f48d8140a..93bccd45a042 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/driver.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/driver.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_DRIVER_H__
#define __NVIF_DRIVER_H__
#include <nvif/os.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvif/event.h b/drivers/gpu/drm/nouveau/include/nvif/event.h
index 21764499b4be..ec5c924f576a 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/event.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_EVENT_H__
#define __NVIF_EVENT_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/if0000.h b/drivers/gpu/drm/nouveau/include/nvif/if0000.h
index c2c0fc41e017..30ecd31db5df 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/if0000.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/if0000.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_IF0000_H__
#define __NVIF_IF0000_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/if0001.h b/drivers/gpu/drm/nouveau/include/nvif/if0001.h
index bd5b64125eed..ca9215262215 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/if0001.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/if0001.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_IF0001_H__
#define __NVIF_IF0001_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/if0002.h b/drivers/gpu/drm/nouveau/include/nvif/if0002.h
index c04c91d0b818..d9235c011196 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/if0002.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/if0002.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_IF0002_H__
#define __NVIF_IF0002_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/if0003.h b/drivers/gpu/drm/nouveau/include/nvif/if0003.h
index 0cd03efb80a1..ae30b8261b88 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/if0003.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/if0003.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_IF0003_H__
#define __NVIF_IF0003_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/if0004.h b/drivers/gpu/drm/nouveau/include/nvif/if0004.h
index bd5cd428cfd7..b35547c8ea36 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/if0004.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/if0004.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_IF0004_H__
#define __NVIF_IF0004_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/if0005.h b/drivers/gpu/drm/nouveau/include/nvif/if0005.h
index abfd373bb68b..8ed0ae101715 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/if0005.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/if0005.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_IF0005_H__
#define __NVIF_IF0005_H__
#define NV10_NVSW_NTFY_UEVENT 0x00
diff --git a/drivers/gpu/drm/nouveau/include/nvif/ioctl.h b/drivers/gpu/drm/nouveau/include/nvif/ioctl.h
index c5f5eb83a594..688c4bcd9c64 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/ioctl.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_IOCTL_H__
#define __NVIF_IOCTL_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/notify.h b/drivers/gpu/drm/nouveau/include/nvif/notify.h
index 51e2eb580809..4ed169230657 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/notify.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/notify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_NOTIFY_H__
#define __NVIF_NOTIFY_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/object.h b/drivers/gpu/drm/nouveau/include/nvif/object.h
index 9e58b305b020..6912b8cffc98 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/object.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/object.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_OBJECT_H__
#define __NVIF_OBJECT_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/os.h b/drivers/gpu/drm/nouveau/include/nvif/os.h
index 9fcab67c8557..6b16ab6b26d5 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/os.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/os.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_OS_H__
#define __NOUVEAU_OS_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvif/unpack.h b/drivers/gpu/drm/nouveau/include/nvif/unpack.h
index 751bcf4930a7..7f0d9f6cc1e7 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/unpack.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/unpack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVIF_UNPACK_H__
#define __NVIF_UNPACK_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/client.h b/drivers/gpu/drm/nouveau/include/nvkm/core/client.h
index e876634da10a..ca23230d5743 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/client.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/client.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_CLIENT_H__
#define __NVKM_CLIENT_H__
#define nvkm_client(p) container_of((p), struct nvkm_client, object)
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/debug.h b/drivers/gpu/drm/nouveau/include/nvkm/core/debug.h
index c59fd4e2ad5e..966d1822dd80 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/debug.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DEBUG_H__
#define __NVKM_DEBUG_H__
#define NV_DBG_FATAL 0
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/device.h b/drivers/gpu/drm/nouveau/include/nvkm/core/device.h
index bb4c214f1046..d7ecb65ba19f 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/device.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DEVICE_H__
#define __NVKM_DEVICE_H__
#include <core/event.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/engine.h b/drivers/gpu/drm/nouveau/include/nvkm/core/engine.h
index d4cd2fbfde88..c6bcd8a64cae 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/engine.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/engine.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_ENGINE_H__
#define __NVKM_ENGINE_H__
#define nvkm_engine(p) container_of((p), struct nvkm_engine, subdev)
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/enum.h b/drivers/gpu/drm/nouveau/include/nvkm/core/enum.h
index 40429a82f792..38acbde2de4f 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/enum.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/enum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_ENUM_H__
#define __NVKM_ENUM_H__
#include <core/os.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/event.h b/drivers/gpu/drm/nouveau/include/nvkm/core/event.h
index b98fe2de546a..d3c45e90a1c1 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/event.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_EVENT_H__
#define __NVKM_EVENT_H__
#include <core/os.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/firmware.h b/drivers/gpu/drm/nouveau/include/nvkm/core/firmware.h
index a626ce378f04..ff0fa38aee72 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/firmware.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/firmware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FIRMWARE_H__
#define __NVKM_FIRMWARE_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/gpuobj.h b/drivers/gpu/drm/nouveau/include/nvkm/core/gpuobj.h
index c23da4f05929..473ba0b9a368 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/gpuobj.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/gpuobj.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_GPUOBJ_H__
#define __NVKM_GPUOBJ_H__
#include <core/object.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/ioctl.h b/drivers/gpu/drm/nouveau/include/nvkm/core/ioctl.h
index 88971eb37afa..e2d39192fa26 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/ioctl.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_IOCTL_H__
#define __NVKM_IOCTL_H__
#include <core/os.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/memory.h b/drivers/gpu/drm/nouveau/include/nvkm/core/memory.h
index 33ca6769266a..affba21fcbad 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/memory.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/memory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MEMORY_H__
#define __NVKM_MEMORY_H__
#include <core/os.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/mm.h b/drivers/gpu/drm/nouveau/include/nvkm/core/mm.h
index 7bd4897a8a2a..2002a4da9999 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/mm.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MM_H__
#define __NVKM_MM_H__
#include <core/os.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/notify.h b/drivers/gpu/drm/nouveau/include/nvkm/core/notify.h
index 753d08c1767b..4eb82bc563f3 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/notify.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/notify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_NOTIFY_H__
#define __NVKM_NOTIFY_H__
#include <core/os.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/object.h b/drivers/gpu/drm/nouveau/include/nvkm/core/object.h
index 96dda350ada3..3f13ff1d4ee4 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/object.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/object.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_OBJECT_H__
#define __NVKM_OBJECT_H__
#include <core/os.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/oproxy.h b/drivers/gpu/drm/nouveau/include/nvkm/core/oproxy.h
index bd52236cc2f4..d950d5ee188b 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/oproxy.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/oproxy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_OPROXY_H__
#define __NVKM_OPROXY_H__
#define nvkm_oproxy(p) container_of((p), struct nvkm_oproxy, base)
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/option.h b/drivers/gpu/drm/nouveau/include/nvkm/core/option.h
index 80fdc146e816..a34a79bacbd0 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/option.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/option.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_OPTION_H__
#define __NVKM_OPTION_H__
#include <core/os.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/os.h b/drivers/gpu/drm/nouveau/include/nvkm/core/os.h
index cd57e238ddd3..fc9e8cd36087 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/os.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/os.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_OS_H__
#define __NVKM_OS_H__
#include <nvif/os.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/pci.h b/drivers/gpu/drm/nouveau/include/nvkm/core/pci.h
index 78d41be20b8c..4c7f647d2dc9 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/pci.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DEVICE_PCI_H__
#define __NVKM_DEVICE_PCI_H__
#include <core/device.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/ramht.h b/drivers/gpu/drm/nouveau/include/nvkm/core/ramht.h
index 5ee6298991e2..674a38408240 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/ramht.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/ramht.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_RAMHT_H__
#define __NVKM_RAMHT_H__
#include <core/gpuobj.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h b/drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h
index ca9ed3d68f44..38f51ff7ab40 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_SUBDEV_H__
#define __NVKM_SUBDEV_H__
#include <core/device.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h b/drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h
index 7c7d91cad09a..5c102d0206a7 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DEVICE_TEGRA_H__
#define __NVKM_DEVICE_TEGRA_H__
#include <core/device.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/bsp.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/bsp.h
index 904820558fc0..40613983fccb 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/bsp.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/bsp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_BSP_H__
#define __NVKM_BSP_H__
#include <engine/xtensa.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h
index b93f4c1a95e5..553245994450 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_CE_H__
#define __NVKM_CE_H__
#include <engine/falcon.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/cipher.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/cipher.h
index 03fa57a7c30a..72b9da2de7c2 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/cipher.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/cipher.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_CIPHER_H__
#define __NVKM_CIPHER_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/disp.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/disp.h
index 05f9c13ab8c3..e83193d3ccab 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/disp.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/disp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DISP_H__
#define __NVKM_DISP_H__
#define nvkm_disp(p) container_of((p), struct nvkm_disp, engine)
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/dma.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/dma.h
index d2a6532ce3b9..5f5cae7c474e 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/dma.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DMA_H__
#define __NVKM_DMA_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h
index e1a854e2ade1..5a51842bc241 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FALCON_H__
#define __NVKM_FALCON_H__
#define nvkm_falcon(p) container_of((p), struct nvkm_falcon, engine)
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h
index f00527b36acc..025f400c9f5d 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FIFO_H__
#define __NVKM_FIFO_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/gr.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/gr.h
index c7944b19bed8..fb18f105fc43 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/gr.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/gr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_GR_H__
#define __NVKM_GR_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/mpeg.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/mpeg.h
index 257738eff9f6..4ef3d4c5e358 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/mpeg.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/mpeg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MPEG_H__
#define __NVKM_MPEG_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/msenc.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/msenc.h
index 748ea9b7e559..985fc9490643 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/msenc.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/msenc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MSENC_H__
#define __NVKM_MSENC_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/mspdec.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/mspdec.h
index 08516ca82e04..e03f33472486 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/mspdec.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/mspdec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MSPDEC_H__
#define __NVKM_MSPDEC_H__
#include <engine/falcon.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/msppp.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/msppp.h
index 85fd306021ac..760bf17ea63d 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/msppp.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/msppp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MSPPP_H__
#define __NVKM_MSPPP_H__
#include <engine/falcon.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/msvld.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/msvld.h
index 99757ed96f76..281866d2501d 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/msvld.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/msvld.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MSVLD_H__
#define __NVKM_MSVLD_H__
#include <engine/falcon.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/nvdec.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/nvdec.h
index 00b2b227ff41..fe716859d4a9 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/nvdec.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/nvdec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_NVDEC_H__
#define __NVKM_NVDEC_H__
#define nvkm_nvdec(p) container_of((p), struct nvkm_nvdec, engine)
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/nvenc.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/nvenc.h
index 8a819328059b..cdd68a8bab8b 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/nvenc.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/nvenc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_NVENC_H__
#define __NVKM_NVENC_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/pm.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/pm.h
index 240855ad8c8d..6cce8502f9df 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/pm.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/pm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_PM_H__
#define __NVKM_PM_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/sec.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/sec.h
index 7317ef4c0207..b206b918c43e 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/sec.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/sec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_SEC_H__
#define __NVKM_SEC_H__
#include <engine/falcon.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/sec2.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/sec2.h
index d3db1b1e75c4..f7d89822b905 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/sec2.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/sec2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_SEC2_H__
#define __NVKM_SEC2_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/sw.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/sw.h
index 096e7dbd1e65..83a17c4e11e7 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/sw.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/sw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_SW_H__
#define __NVKM_SW_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/vic.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/vic.h
index 2b0dc4c695c2..9b7d4877cf41 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/vic.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/vic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_VIC_H__
#define __NVKM_VIC_H__
#include <core/engine.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/vp.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/vp.h
index 616ea91e03f8..53bf8aed48fb 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/vp.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/vp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_VP_H__
#define __NVKM_VP_H__
#include <engine/xtensa.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/xtensa.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/xtensa.h
index b1fcc416732f..13c00ce6d556 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/xtensa.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/xtensa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_XTENSA_H__
#define __NVKM_XTENSA_H__
#define nvkm_xtensa(p) container_of((p), struct nvkm_xtensa, engine)
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bar.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bar.h
index d3071b5a4f98..91f1e0efe061 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bar.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bar.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_BAR_H__
#define __NVKM_BAR_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios.h
index a72f3290528a..979e9a144e7b 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_BIOS_H__
#define __NVKM_BIOS_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0203.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0203.h
index cf202c793a1d..703a5b524b96 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0203.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0203.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_M0203_H__
#define __NVBIOS_M0203_H__
struct nvbios_M0203T {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0205.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0205.h
index d34608ff241e..b4e14e45a0e8 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0205.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0205.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_M0205_H__
#define __NVBIOS_M0205_H__
struct nvbios_M0205T {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0209.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0209.h
index c7ff8d9526e7..c09376894d12 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0209.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/M0209.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_M0209_H__
#define __NVBIOS_M0209_H__
u32 nvbios_M0209Te(struct nvkm_bios *,
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/P0260.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/P0260.h
index 1c1c52eac97d..901d94ef11b8 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/P0260.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/P0260.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_P0260_H__
#define __NVBIOS_P0260_H__
u32 nvbios_P0260Te(struct nvkm_bios *,
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/bit.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/bit.h
index 6711732b7cb1..d068586f3263 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/bit.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/bit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_BIT_H__
#define __NVBIOS_BIT_H__
struct bit_entry {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/bmp.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/bmp.h
index 3f0c7c414026..9a3f9483ee75 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/bmp.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/bmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_BMP_H__
#define __NVBIOS_BMP_H__
static inline u16
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/boost.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/boost.h
index 2ff64a20c0ec..a1c48c6b223b 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/boost.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/boost.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_BOOST_H__
#define __NVBIOS_BOOST_H__
u32 nvbios_boostTe(struct nvkm_bios *, u8 *, u8 *, u8 *, u8 *, u8 *, u8 *);
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h
index deb477282dde..ed9e0a6a0011 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_CONN_H__
#define __NVBIOS_CONN_H__
enum dcb_connector_type {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/cstep.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/cstep.h
index 76fe7d50a1ce..49343d276e11 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/cstep.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/cstep.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_CSTEP_H__
#define __NVBIOS_CSTEP_H__
u32 nvbios_cstepTe(struct nvkm_bios *,
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/dcb.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/dcb.h
index 903d117603d8..63ddc6ed897a 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/dcb.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/dcb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_DCB_H__
#define __NVBIOS_DCB_H__
enum dcb_output_type {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/disp.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/disp.h
index c5a6ebd5a478..423d92de0aae 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/disp.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/disp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_DISP_H__
#define __NVBIOS_DISP_H__
u16 nvbios_disp_table(struct nvkm_bios *,
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/dp.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/dp.h
index b4d39df70d4e..df34b41838d6 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/dp.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/dp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_DP_H__
#define __NVBIOS_DP_H__
struct nvbios_dpout {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/extdev.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/extdev.h
index bb49bd5f879e..f93e4f951f2f 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/extdev.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/extdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_EXTDEV_H__
#define __NVBIOS_EXTDEV_H__
enum nvbios_extdev_type {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/fan.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/fan.h
index a7513e8406a3..09c1d3b9d009 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/fan.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/fan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_FAN_H__
#define __NVBIOS_FAN_H__
#include <subdev/bios/therm.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/gpio.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/gpio.h
index b7a54e605469..b71a3555c64e 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/gpio.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_GPIO_H__
#define __NVBIOS_GPIO_H__
enum dcb_gpio_func_name {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/i2c.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/i2c.h
index 85c529ecf9b1..ae1f7483dd28 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/i2c.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/i2c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_I2C_H__
#define __NVBIOS_I2C_H__
enum dcb_i2c_type {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/iccsense.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/iccsense.h
index e933d3eede70..e220a1ac1387 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/iccsense.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/iccsense.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_ICCSENSE_H__
#define __NVBIOS_ICCSENSE_H__
struct pwr_rail_resistor_t {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/image.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/image.h
index e15d63b9a5eb..893288b060de 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/image.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/image.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_IMAGE_H__
#define __NVBIOS_IMAGE_H__
struct nvbios_image {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/init.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/init.h
index 06ab48052128..744b1868e789 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/init.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/init.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_INIT_H__
#define __NVBIOS_INIT_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/mxm.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/mxm.h
index 4e31b64c5edf..327bf9c4b703 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/mxm.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/mxm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_MXM_H__
#define __NVBIOS_MXM_H__
u16 mxm_table(struct nvkm_bios *, u8 *ver, u8 *hdr);
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/npde.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/npde.h
index 64a59549b7ea..ee5419b7b45b 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/npde.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/npde.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_NPDE_H__
#define __NVBIOS_NPDE_H__
struct nvbios_npdeT {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pcir.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pcir.h
index e85931541f4f..1dffe8d6cc81 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pcir.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pcir.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_PCIR_H__
#define __NVBIOS_PCIR_H__
struct nvbios_pcirT {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/perf.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/perf.h
index 478b1c0d2089..0ee84ea6d737 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/perf.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/perf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_PERF_H__
#define __NVBIOS_PERF_H__
u32 nvbios_perf_table(struct nvkm_bios *, u8 *ver, u8 *hdr,
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pll.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pll.h
index 5a69978d1e3b..ab964e085f02 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pll.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_PLL_H__
#define __NVBIOS_PLL_H__
/*XXX: kill me */
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pmu.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pmu.h
index 3a643df6de04..fb41ecab8f8c 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pmu.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/pmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_PMU_H__
#define __NVBIOS_PMU_H__
struct nvbios_pmuT {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/power_budget.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/power_budget.h
index f5f4a14c4030..ff12d810dce3 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/power_budget.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/power_budget.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_POWER_BUDGET_H__
#define __NVBIOS_POWER_BUDGET_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/ramcfg.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/ramcfg.h
index dca6c060a24f..2b87a38adb7a 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/ramcfg.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/ramcfg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_RAMCFG_H__
#define __NVBIOS_RAMCFG_H__
struct nvbios_ramcfg {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/rammap.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/rammap.h
index 8d8ee13721ec..471eef434b51 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/rammap.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/rammap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_RAMMAP_H__
#define __NVBIOS_RAMMAP_H__
#include <subdev/bios/ramcfg.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/therm.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/therm.h
index dd3ba960e75d..46a3b15e10ec 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/therm.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/therm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_THERM_H__
#define __NVBIOS_THERM_H__
struct nvbios_therm_threshold {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/timing.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/timing.h
index 38188d4c9ab5..40ceabf37827 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/timing.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/timing.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_TIMING_H__
#define __NVBIOS_TIMING_H__
#include <subdev/bios/ramcfg.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/vmap.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/vmap.h
index bea31cdd1dd1..67419bad584c 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/vmap.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/vmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_VMAP_H__
#define __NVBIOS_VMAP_H__
struct nvbios_vmap {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/volt.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/volt.h
index f0baa2c7de09..6b36d5ecb8f9 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/volt.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/volt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_VOLT_H__
#define __NVBIOS_VOLT_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/vpstate.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/vpstate.h
index 87f804fc3a88..36f3028d58ef 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/vpstate.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/vpstate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_VPSTATE_H__
#define __NVBIOS_VPSTATE_H__
struct nvbios_vpstate_header {
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/xpio.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/xpio.h
index 0c0fe234ff12..d1bb5d044585 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/xpio.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/xpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVBIOS_XPIO_H__
#define __NVBIOS_XPIO_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bus.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bus.h
index 33a057c334f2..7695f7f77a06 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bus.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_BUS_H__
#define __NVKM_BUS_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/clk.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/clk.h
index e5275f742977..15db75ef0189 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/clk.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/clk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_CLK_H__
#define __NVKM_CLK_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/devinit.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/devinit.h
index 709d786f1808..40558064d589 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/devinit.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/devinit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DEVINIT_H__
#define __NVKM_DEVINIT_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/fb.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/fb.h
index 28d513fbf44c..4da68dd52619 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/fb.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FB_H__
#define __NVKM_FB_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/fuse.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/fuse.h
index ae201e388487..092193b7f98e 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/fuse.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/fuse.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FUSE_H__
#define __NVKM_FUSE_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/gpio.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/gpio.h
index 9b9c6d2f90b6..ee54899076e3 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/gpio.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_GPIO_H__
#define __NVKM_GPIO_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/i2c.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/i2c.h
index ce23cc6c672e..eef54e9b5d77 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/i2c.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/i2c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_I2C_H__
#define __NVKM_I2C_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/ibus.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/ibus.h
index 6e2b70bd2f41..919653c1d101 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/ibus.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/ibus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_IBUS_H__
#define __NVKM_IBUS_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/iccsense.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/iccsense.h
index b7a9b041e130..be9475cd94fd 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/iccsense.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/iccsense.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_ICCSENSE_H__
#define __NVKM_ICCSENSE_H__
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/instmem.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/instmem.h
index 40f845e31272..91126fd29222 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/instmem.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/instmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_INSTMEM_H__
#define __NVKM_INSTMEM_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/ltc.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/ltc.h
index cd755baf9cab..63b7ad1f9ce2 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/ltc.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/ltc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_LTC_H__
#define __NVKM_LTC_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h
index 58f10890c3b6..61c93c86e2e2 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MC_H__
#define __NVKM_MC_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/mmu.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/mmu.h
index dcd3deff27a4..0fdfc610ceb3 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/mmu.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MMU_H__
#define __NVKM_MMU_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/mxm.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/mxm.h
index ed0250139dae..0fd6d6f8eada 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/mxm.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/mxm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MXM_H__
#define __NVKM_MXM_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/pci.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/pci.h
index ac2a695963c1..23803cc859fd 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/pci.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_PCI_H__
#define __NVKM_PCI_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/pmu.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/pmu.h
index e7f04732a425..4bc9384046c6 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/pmu.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/pmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_PMU_H__
#define __NVKM_PMU_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/therm.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/therm.h
index 1bfd93b85575..98fe1d0fd592 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/therm.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/therm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_THERM_H__
#define __NVKM_THERM_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h
index ff0709652f80..e9b0746826ca 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_TIMER_H__
#define __NVKM_TIMER_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/top.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/top.h
index d23209b62c25..f7d3eb647e2e 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/top.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/top.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_TOP_H__
#define __NVKM_TOP_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/vga.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/vga.h
index ce5636fe2a66..312933ad7c2b 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/vga.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_VGA_H__
#define __NOUVEAU_VGA_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h
index 08ef9983c643..8a0f85f5fc1a 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_VOLT_H__
#define __NVKM_VOLT_H__
#include <core/subdev.h>
diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.h b/drivers/gpu/drm/nouveau/nouveau_abi16.h
index 841cc556fad8..441100aa2320 100644
--- a/drivers/gpu/drm/nouveau/nouveau_abi16.h
+++ b/drivers/gpu/drm/nouveau/nouveau_abi16.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_ABI16_H__
#define __NOUVEAU_ABI16_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
index 7459ef9943ec..5ffcb6683776 100644
--- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
+++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/pci.h>
#include <linux/acpi.h>
#include <linux/slab.h>
diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.h b/drivers/gpu/drm/nouveau/nouveau_acpi.h
index 2f03653aff86..b86294fc99e8 100644
--- a/drivers/gpu/drm/nouveau/nouveau_acpi.h
+++ b/drivers/gpu/drm/nouveau/nouveau_acpi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_ACPI_H__
#define __NOUVEAU_ACPI_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.h b/drivers/gpu/drm/nouveau/nouveau_bo.h
index b06a5385d6dd..4caade5dee50 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.h
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_BO_H__
#define __NOUVEAU_BO_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_chan.h b/drivers/gpu/drm/nouveau/nouveau_chan.h
index 46b947ba1cf4..9463a78613cb 100644
--- a/drivers/gpu/drm/nouveau/nouveau_chan.h
+++ b/drivers/gpu/drm/nouveau/nouveau_chan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_CHAN_H__
#define __NOUVEAU_CHAN_H__
#include <nvif/object.h>
diff --git a/drivers/gpu/drm/nouveau/nouveau_debugfs.h b/drivers/gpu/drm/nouveau/nouveau_debugfs.h
index b799f8dfb2b2..1d01a82d4b6f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_debugfs.h
+++ b/drivers/gpu/drm/nouveau/nouveau_debugfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_DEBUGFS_H__
#define __NOUVEAU_DEBUGFS_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.h b/drivers/gpu/drm/nouveau/nouveau_display.h
index 201aec2ea5b8..34cd144681b9 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.h
+++ b/drivers/gpu/drm/nouveau/nouveau_display.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_DISPLAY_H__
#define __NOUVEAU_DISPLAY_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
index 822fe1d4d35e..77dea95c1bf1 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_DRV_H__
#define __NOUVEAU_DRV_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
index f7707849bb53..2b12d82aac15 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
@@ -223,7 +223,7 @@ void
nouveau_fbcon_accel_save_disable(struct drm_device *dev)
{
struct nouveau_drm *drm = nouveau_drm(dev);
- if (drm->fbcon) {
+ if (drm->fbcon && drm->fbcon->helper.fbdev) {
drm->fbcon->saved_flags = drm->fbcon->helper.fbdev->flags;
drm->fbcon->helper.fbdev->flags |= FBINFO_HWACCEL_DISABLED;
}
@@ -233,7 +233,7 @@ void
nouveau_fbcon_accel_restore(struct drm_device *dev)
{
struct nouveau_drm *drm = nouveau_drm(dev);
- if (drm->fbcon) {
+ if (drm->fbcon && drm->fbcon->helper.fbdev) {
drm->fbcon->helper.fbdev->flags = drm->fbcon->saved_flags;
}
}
@@ -245,7 +245,8 @@ nouveau_fbcon_accel_fini(struct drm_device *dev)
struct nouveau_fbdev *fbcon = drm->fbcon;
if (fbcon && drm->channel) {
console_lock();
- fbcon->helper.fbdev->flags |= FBINFO_HWACCEL_DISABLED;
+ if (fbcon->helper.fbdev)
+ fbcon->helper.fbdev->flags |= FBINFO_HWACCEL_DISABLED;
console_unlock();
nouveau_channel_idle(drm->channel);
nvif_object_fini(&fbcon->twod);
diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.h b/drivers/gpu/drm/nouveau/nouveau_fence.h
index d5e58a38f160..c9b399ad89e6 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fence.h
+++ b/drivers/gpu/drm/nouveau/nouveau_fence.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_FENCE_H__
#define __NOUVEAU_FENCE_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.h b/drivers/gpu/drm/nouveau/nouveau_gem.h
index 8fa6ed9ddd3a..0456c94a5d4d 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.h
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_GEM_H__
#define __NOUVEAU_GEM_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_ioctl.h b/drivers/gpu/drm/nouveau/nouveau_ioctl.h
index 3b9f2e5463a7..380ede26806c 100644
--- a/drivers/gpu/drm/nouveau/nouveau_ioctl.h
+++ b/drivers/gpu/drm/nouveau/nouveau_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_IOCTL_H__
#define __NOUVEAU_IOCTL_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_reg.h b/drivers/gpu/drm/nouveau/nouveau_reg.h
index 7226f1f60901..b5b5fe40779d 100644
--- a/drivers/gpu/drm/nouveau/nouveau_reg.h
+++ b/drivers/gpu/drm/nouveau/nouveau_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define NV04_PFB_BOOT_0 0x00100000
# define NV04_PFB_BOOT_0_RAM_AMOUNT 0x00000003
diff --git a/drivers/gpu/drm/nouveau/nouveau_sgdma.c b/drivers/gpu/drm/nouveau/nouveau_sgdma.c
index b7ab268f7d6f..fde11ce466e4 100644
--- a/drivers/gpu/drm/nouveau/nouveau_sgdma.c
+++ b/drivers/gpu/drm/nouveau/nouveau_sgdma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/pagemap.h>
#include <linux/slab.h>
diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.h b/drivers/gpu/drm/nouveau/nouveau_ttm.h
index 25b0de413352..96082b696420 100644
--- a/drivers/gpu/drm/nouveau/nouveau_ttm.h
+++ b/drivers/gpu/drm/nouveau/nouveau_ttm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_TTM_H__
#define __NOUVEAU_TTM_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_usif.h b/drivers/gpu/drm/nouveau/nouveau_usif.h
index c037e3ae8c70..c68f1c65af3b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_usif.h
+++ b/drivers/gpu/drm/nouveau/nouveau_usif.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_USIF_H__
#define __NOUVEAU_USIF_H__
diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
index 48393a4f6331..52e52a360fb1 100644
--- a/drivers/gpu/drm/nouveau/nouveau_vga.c
+++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/vgaarb.h>
#include <linux/vga_switcheroo.h>
diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.h b/drivers/gpu/drm/nouveau/nouveau_vga.h
index ea3ad6974c65..6a3000c88142 100644
--- a/drivers/gpu/drm/nouveau/nouveau_vga.h
+++ b/drivers/gpu/drm/nouveau/nouveau_vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NOUVEAU_VGA_H__
#define __NOUVEAU_VGA_H__
diff --git a/drivers/gpu/drm/nouveau/nv10_fence.h b/drivers/gpu/drm/nouveau/nv10_fence.h
index b7a508585304..7616c66803f8 100644
--- a/drivers/gpu/drm/nouveau/nv10_fence.h
+++ b/drivers/gpu/drm/nouveau/nv10_fence.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV10_FENCE_H_
#define __NV10_FENCE_H_
diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
index 2dbf62a2ac41..fb47d46050ec 100644
--- a/drivers/gpu/drm/nouveau/nv50_display.c
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
@@ -3265,11 +3265,14 @@ nv50_mstm = {
void
nv50_mstm_service(struct nv50_mstm *mstm)
{
- struct drm_dp_aux *aux = mstm->mgr.aux;
+ struct drm_dp_aux *aux = mstm ? mstm->mgr.aux : NULL;
bool handled = true;
int ret;
u8 esi[8] = {};
+ if (!aux)
+ return;
+
while (handled) {
ret = drm_dp_dpcd_read(aux, DP_SINK_COUNT_ESI, esi, 8);
if (ret != 8) {
@@ -4096,7 +4099,7 @@ nv50_disp_atomic_commit(struct drm_device *dev,
{
struct nouveau_drm *drm = nouveau_drm(dev);
struct nv50_disp *disp = nv50_disp(dev);
- struct drm_plane_state *old_plane_state;
+ struct drm_plane_state *new_plane_state;
struct drm_plane *plane;
struct drm_crtc *crtc;
bool active = false;
@@ -4126,8 +4129,8 @@ nv50_disp_atomic_commit(struct drm_device *dev,
if (ret)
goto err_cleanup;
- for_each_old_plane_in_state(state, plane, old_plane_state, i) {
- struct nv50_wndw_atom *asyw = nv50_wndw_atom(old_plane_state);
+ for_each_new_plane_in_state(state, plane, new_plane_state, i) {
+ struct nv50_wndw_atom *asyw = nv50_wndw_atom(new_plane_state);
struct nv50_wndw *wndw = nv50_wndw(plane);
if (asyw->set.image) {
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/bsp/g84.c b/drivers/gpu/drm/nouveau/nvkm/engine/bsp/g84.c
index 8e2e24a74774..44e116f7880d 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/bsp/g84.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/bsp/g84.c
@@ -39,5 +39,5 @@ int
g84_bsp_new(struct nvkm_device *device, int index, struct nvkm_engine **pengine)
{
return nvkm_xtensa_new_(&g84_bsp, device, index,
- true, 0x103000, pengine);
+ device->chipset != 0x92, 0x103000, pengine);
}
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf100.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf100.fuc3.h
index d9ca9636a3e3..da130f5058e5 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf100.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf100.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gf100_ce_data[] = {
/* 0x0000: ctx_object */
0x00000000,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gt215.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gt215.fuc3.h
index f0a1cf31c7ca..0b92eb32598d 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gt215.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gt215.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gt215_ce_data[] = {
/* 0x0000: ctx_object */
0x00000000,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/ce/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/ce/priv.h
index 2dce405976ad..0e3d08f11b0b 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/ce/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/ce/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_CE_PRIV_H__
#define __NVKM_CE_PRIV_H__
#include <engine/ce.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/acpi.h b/drivers/gpu/drm/nouveau/nvkm/engine/device/acpi.h
index 1bbe76e0740a..6a62021e9861 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/acpi.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/acpi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DEVICE_ACPI_H__
#define __NVKM_DEVICE_ACPI_H__
#include <core/os.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.h b/drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.h
index 20249d8e444d..f279162f48c6 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DEVICE_CTRL_H__
#define __NVKM_DEVICE_CTRL_H__
#define nvkm_control(p) container_of((p), struct nvkm_control, object)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/device/priv.h
index 6c16f3835f44..08d0bf605722 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DEVICE_PRIV_H__
#define __NVKM_DEVICE_PRIV_H__
#include <core/device.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.h
index 737b38f6fbd2..5701b3221a54 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV50_DISP_CHAN_H__
#define __NV50_DISP_CHAN_H__
#define nv50_disp_chan(p) container_of((p), struct nv50_disp_chan, object)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/conn.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/conn.h
index de962b7b026d..090e869ae612 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/conn.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/conn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DISP_CONN_H__
#define __NVKM_DISP_CONN_H__
#include <engine/disp.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/dmacnv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/dmacnv50.h
index ea4a0d062e31..f9b98211da6a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/dmacnv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/dmacnv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV50_DISP_DMAC_H__
#define __NV50_DISP_DMAC_H__
#define nv50_disp_dmac(p) container_of((p), struct nv50_disp_dmac, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.h
index 59173c290525..495f665a0ee6 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DISP_DP_H__
#define __NVKM_DISP_DP_H__
#define nvkm_dp(p) container_of((p), struct nvkm_dp, outp)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.c
index e82c68f18444..d131cca999dd 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "hdmi.h"
void pack_hdmi_infoframe(struct packed_hdmi_infoframe *packed_frame,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.h
index 528f5621a496..45094c6e1425 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DISP_HDMI_H__
#define __NVKM_DISP_HDMI_H__
#include "ior.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/head.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/head.h
index b04c49d2eeeb..57030b3a4a75 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/head.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/head.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DISP_HEAD_H__
#define __NVKM_DISP_HEAD_H__
#include "priv.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
index a1e8bf48b778..cd6dd8742dc6 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DISP_IOR_H__
#define __NVKM_DISP_IOR_H__
#include "priv.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h
index 6ea19466f436..eb0b8acb1c5b 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV50_DISP_H__
#define __NV50_DISP_H__
#define nv50_disp(p) container_of((p), struct nv50_disp, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h
index 146d101d4891..ea84d7d5741a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DISP_OUTP_H__
#define __NVKM_DISP_OUTP_H__
#include <engine/disp.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/priv.h
index 5772f0094129..6c9bfff6d043 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DISP_PRIV_H__
#define __NVKM_DISP_PRIV_H__
#include <engine/disp.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h
index b147cf5b3518..4818fa69ae6c 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV50_DISP_ROOT_H__
#define __NV50_DISP_ROOT_H__
#define nv50_disp_root(p) container_of((p), struct nv50_disp_root, object)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/dma/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/dma/priv.h
index deb37ee55c0b..4307cbecd5c5 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/dma/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/dma/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DMA_PRIV_H__
#define __NVKM_DMA_PRIV_H__
#define nvkm_dma(p) container_of((p), struct nvkm_dma, engine)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/dma/user.h b/drivers/gpu/drm/nouveau/nvkm/engine/dma/user.h
index 69a7f1034024..4bbac8a21c71 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/dma/user.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/dma/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DMA_USER_H__
#define __NVKM_DMA_USER_H__
#define nvkm_dmaobj(p) container_of((p), struct nvkm_dmaobj, object)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.h
index d8019bdacd61..3ffef236189e 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FIFO_CHAN_H__
#define __NVKM_FIFO_CHAN_H__
#define nvkm_fifo_chan(p) container_of((p), struct nvkm_fifo_chan, object)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/changf100.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/changf100.h
index 7d697e2dce1a..27002caba420 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/changf100.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/changf100.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GF100_FIFO_CHAN_H__
#define __GF100_FIFO_CHAN_H__
#define gf100_fifo_chan(p) container_of((p), struct gf100_fifo_chan, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/changk104.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/changk104.h
index 230f64e5f731..ec10be2984a9 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/changk104.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/changk104.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GK104_FIFO_CHAN_H__
#define __GK104_FIFO_CHAN_H__
#define gk104_fifo_chan(p) container_of((p), struct gk104_fifo_chan, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv04.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv04.h
index 3361a1fd0343..15b06bdf5067 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv04.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv04.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV04_FIFO_CHAN_H__
#define __NV04_FIFO_CHAN_H__
#define nv04_fifo_chan(p) container_of((p), struct nv04_fifo_chan, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv50.h
index 4b9da469b704..ad9aa157e078 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV50_FIFO_CHAN_H__
#define __NV50_FIFO_CHAN_H__
#define nv50_fifo_chan(p) container_of((p), struct nv50_fifo_chan, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.h
index 70db58eab9c3..571a6edb3f97 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GF100_FIFO_H__
#define __GF100_FIFO_H__
#define gf100_fifo(p) container_of((p), struct gf100_fifo, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.h
index 44bff98d6725..0506c5290936 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GK104_FIFO_H__
#define __GK104_FIFO_H__
#define gk104_fifo(p) container_of((p), struct gk104_fifo, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.h
index 03f60004bf7c..1d70542553cc 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV04_FIFO_H__
#define __NV04_FIFO_H__
#define nv04_fifo(p) container_of((p), struct nv04_fifo, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.h
index 8ab53948cbb4..a3994e8db462 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV50_FIFO_H__
#define __NV50_FIFO_H__
#define nv50_fifo(p) container_of((p), struct nv50_fifo, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/priv.h
index f889b13b5e41..ae76b1aaccd4 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FIFO_PRIV_H__
#define __NVKM_FIFO_PRIV_H__
#define nvkm_fifo(p) container_of((p), struct nvkm_fifo, engine)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/regsnv04.h b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/regsnv04.h
index 92d56221197b..49892a5e7201 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/regsnv04.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/regsnv04.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV04_FIFO_REGS_H__
#define __NV04_FIFO_REGS_H__
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.h
index 017180d147cf..2812ca511c9c 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_GRCTX_NVC0_H__
#define __NVKM_GRCTX_NVC0_H__
#include "gf100.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.h
index 50e808e9f926..4d67d90261b8 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_GRCTX_H__
#define __NVKM_GRCTX_H__
#include <core/gpuobj.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf100.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf100.fuc3.h
index 12a703fe355d..0323acb739c8 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf100.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf100.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gf100_grgpc_data[] = {
/* 0x0000: gpc_mmio_list_head */
0x00000064,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf117.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf117.fuc3.h
index ffbfc51200f1..1bb265917915 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf117.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf117.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gf117_grgpc_data[] = {
/* 0x0000: gpc_mmio_list_head */
0x0000006c,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk104.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk104.fuc3.h
index 357f662de571..cf8343a693ba 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk104.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk104.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gk104_grgpc_data[] = {
/* 0x0000: gpc_mmio_list_head */
0x0000006c,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk110.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk110.fuc3.h
index 4ffc8212a85c..f4bfa109ed27 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk110.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk110.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gk110_grgpc_data[] = {
/* 0x0000: gpc_mmio_list_head */
0x0000006c,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk208.fuc5.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk208.fuc5.h
index 09196206c9bc..59a3e1b2927f 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk208.fuc5.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk208.fuc5.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gk208_grgpc_data[] = {
/* 0x0000: gpc_mmio_list_head */
0x0000006c,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgm107.fuc5.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgm107.fuc5.h
index 6d7d004363d9..8daa0516704a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgm107.fuc5.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgm107.fuc5.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gm107_grgpc_data[] = {
/* 0x0000: gpc_mmio_list_head */
0x0000006c,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf100.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf100.fuc3.h
index 7538404b8b13..cbf2351f8da8 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf100.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf100.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gf100_grhub_data[] = {
/* 0x0000: hub_mmio_list_head */
0x00000300,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf117.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf117.fuc3.h
index ce000a47ec6d..70830036ffee 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf117.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf117.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gf117_grhub_data[] = {
/* 0x0000: hub_mmio_list_head */
0x00000300,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk104.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk104.fuc3.h
index 1f26cb6a233c..7f2fd84d0c3a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk104.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk104.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gk104_grhub_data[] = {
/* 0x0000: hub_mmio_list_head */
0x00000300,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk110.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk110.fuc3.h
index 70436d93efe3..560063789de8 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk110.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk110.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gk110_grhub_data[] = {
/* 0x0000: hub_mmio_list_head */
0x00000300,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk208.fuc5.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk208.fuc5.h
index e0933a07426a..71e85784b615 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk208.fuc5.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk208.fuc5.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gk208_grhub_data[] = {
/* 0x0000: hub_mmio_list_head */
0x00000300,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgm107.fuc5.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgm107.fuc5.h
index 9b432823bcbe..d85eac6d1c61 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgm107.fuc5.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgm107.fuc5.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gm107_grhub_data[] = {
/* 0x0000: hub_mmio_list_head */
0x00000300,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/os.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/os.h
index 1718ae4e8224..f87693809c9f 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/os.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/os.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_GRAPH_OS_H__
#define __NVKM_GRAPH_OS_H__
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv10.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv10.h
index d7c3d86cc99d..d5a376c4dd0b 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv10.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv10.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV10_GR_H__
#define __NV10_GR_H__
#include "priv.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c
index d1dc92999dc0..df2cd864147c 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "nv20.h"
#include "regs.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.h
index cdf4501e3798..ad7e53bb7c23 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV20_GR_H__
#define __NV20_GR_H__
#define nv20_gr(p) container_of((p), struct nv20_gr, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv25.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv25.c
index 6c4a00819b4b..e59a28a26d65 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv25.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv25.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "nv20.h"
#include "regs.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv2a.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv2a.c
index 3cad26dbc2b1..e113b2d4c811 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv2a.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv2a.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "nv20.h"
#include "regs.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.c
index b4e3c50badc7..4aac2c224874 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "nv20.h"
#include "regs.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.c
index e7ed04b935cd..301556503e93 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "nv20.h"
#include "regs.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv35.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv35.c
index 5e8abacbacc6..5d6926611a5b 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv35.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv35.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "nv20.h"
#include "regs.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.h
index 2812ed11f877..89b773233ac5 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV40_GR_H__
#define __NV40_GR_H__
#define nv40_gr(p) container_of((p), struct nv40_gr, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.h
index 45eec83a5969..567fa4f3e518 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV50_GR_H__
#define __NV50_GR_H__
#define nv50_gr(p) container_of((p), struct nv50_gr, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/priv.h
index 2a52d9f026ec..66359c23cbce 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_GR_PRIV_H__
#define __NVKM_GR_PRIV_H__
#define nvkm_gr(p) container_of((p), struct nvkm_gr, engine)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/regs.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/regs.h
index 90a9873ce522..dc4f936675ac 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/regs.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_GR_REGS_H__
#define __NVKM_GR_REGS_H__
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv31.h b/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv31.h
index d3bb34fcdebf..1ac2b4558bec 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv31.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv31.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV31_MPEG_H__
#define __NV31_MPEG_H__
#define nv31_mpeg(p) container_of((p), struct nv31_mpeg, engine)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/priv.h
index d5753103ff63..26f9d14151e2 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MPEG_PRIV_H__
#define __NVKM_MPEG_PRIV_H__
#include <engine/mpeg.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/mspdec/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/mspdec/priv.h
index d518af4bc9de..db305072a82f 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/mspdec/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/mspdec/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MSPDEC_PRIV_H__
#define __NVKM_MSPDEC_PRIV_H__
#include <engine/mspdec.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/msppp/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/msppp/priv.h
index 37a91f9d9181..7708e52c9043 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/msppp/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/msppp/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MSPPP_PRIV_H__
#define __NVKM_MSPPP_PRIV_H__
#include <engine/msppp.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/msvld/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/msvld/priv.h
index 9dc1da67d929..66c36049abca 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/msvld/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/msvld/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MSVLD_PRIV_H__
#define __NVKM_MSVLD_PRIV_H__
#include <engine/msvld.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/nvdec/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/nvdec/priv.h
index 353b94f51205..6c300739f621 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/nvdec/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/nvdec/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_NVDEC_PRIV_H__
#define __NVKM_NVDEC_PRIV_H__
#include <engine/nvdec.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/pm/gf100.h b/drivers/gpu/drm/nouveau/nvkm/engine/pm/gf100.h
index 56d0344853ea..c74fd4557d41 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/pm/gf100.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/pm/gf100.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_PM_NVC0_H__
#define __NVKM_PM_NVC0_H__
#include "priv.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.h b/drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.h
index da481abe8f7a..3f37b713936c 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_PM_NV40_H__
#define __NVKM_PM_NV40_H__
#define nv40_pm(p) container_of((p), struct nv40_pm, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/pm/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/pm/priv.h
index d7b81cbf82b5..17240d54b1eb 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/pm/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/pm/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_PM_PRIV_H__
#define __NVKM_PM_PRIV_H__
#define nvkm_pm(p) container_of((p), struct nvkm_pm, engine)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/sec/fuc/g98.fuc0s.h b/drivers/gpu/drm/nouveau/nvkm/engine/sec/fuc/g98.fuc0s.h
index 4b57f8814560..6278a0c5fe83 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/sec/fuc/g98.fuc0s.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/sec/fuc/g98.fuc0s.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t g98_sec_data[] = {
/* 0x0000: ctx_dma */
/* 0x0000: ctx_dma_query */
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/sec2/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/sec2/priv.h
index 7ecc9d4724dc..2f97c806a79d 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/sec2/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/sec2/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_SEC2_PRIV_H__
#define __NVKM_SEC2_PRIV_H__
#include <engine/sec2.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h b/drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h
index 6608bf6c6842..b1fa69314e4a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_SW_CHAN_H__
#define __NVKM_SW_CHAN_H__
#define nvkm_sw_chan(p) container_of((p), struct nvkm_sw_chan, object)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.h
index 25cdfdef2d46..459afd30a484 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_SW_NV50_H__
#define __NVKM_SW_NV50_H__
#define nv50_sw_chan(p) container_of((p), struct nv50_sw_chan, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/sw/nvsw.h b/drivers/gpu/drm/nouveau/nvkm/engine/sw/nvsw.h
index 943ef4c10091..7050a9e49db1 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/sw/nvsw.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/sw/nvsw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_NVSW_H__
#define __NVKM_NVSW_H__
#define nvkm_nvsw(p) container_of((p), struct nvkm_nvsw, object)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/sw/priv.h b/drivers/gpu/drm/nouveau/nvkm/engine/sw/priv.h
index 0ef1318dc2fd..4aca1791abc3 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/sw/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/sw/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_SW_PRIV_H__
#define __NVKM_SW_PRIV_H__
#define nvkm_sw(p) container_of((p), struct nvkm_sw, engine)
diff --git a/drivers/gpu/drm/nouveau/nvkm/falcon/priv.h b/drivers/gpu/drm/nouveau/nvkm/falcon/priv.h
index 97b56f759d0b..d515ad994199 100644
--- a/drivers/gpu/drm/nouveau/nvkm/falcon/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/falcon/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FALCON_PRIV_H__
#define __NVKM_FALCON_PRIV_H__
#include <engine/falcon.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.h b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.h
index 20a5255362ba..9accd7923788 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GF100_BAR_H__
#define __GF100_BAR_H__
#define gf100_bar(p) container_of((p), struct gf100_bar, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.h b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.h
index 1eb764f22a49..ce9ab9110b08 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV50_BAR_H__
#define __NV50_BAR_H__
#define nv50_bar(p) container_of((p), struct nv50_bar, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/priv.h
index d834ef20db5b..63d111c8afd4 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_BAR_PRIV_H__
#define __NVKM_BAR_PRIV_H__
#define nvkm_bar(p) container_of((p), struct nvkm_bar, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h
index 7d1d3c6b4b72..33435ca16311 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_BIOS_PRIV_H__
#define __NVKM_BIOS_PRIV_H__
#define nvkm_bios(p) container_of((p), struct nvkm_bios, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bus/hwsq.h b/drivers/gpu/drm/nouveau/nvkm/subdev/bus/hwsq.h
index 54ec3b131dfd..17ac1812a928 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bus/hwsq.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bus/hwsq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_BUS_HWSQ_H__
#define __NVKM_BUS_HWSQ_H__
#include <subdev/bus.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bus/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/bus/priv.h
index a130f2c642d5..ef01e569352d 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bus/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bus/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_BUS_PRIV_H__
#define __NVKM_BUS_PRIV_H__
#define nvkm_bus(p) container_of((p), struct nvkm_bus, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.h b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.h
index 8865b59fe575..1ea886a4301f 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_CLK_NVA3_H__
#define __NVKM_CLK_NVA3_H__
#include "priv.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv50.h b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv50.h
index d3c7fb6efa16..f134d979d884 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV50_CLK_H__
#define __NV50_CLK_H__
#define nv50_clk(p) container_of((p), struct nv50_clk, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/pll.h b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/pll.h
index 44020a30dee8..9a39f1fd2976 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/pll.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/pll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_PLL_H__
#define __NVKM_PLL_H__
#include <core/os.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/priv.h
index 51eafc00c8b1..b656177923fb 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_CLK_PRIV_H__
#define __NVKM_CLK_PRIV_H__
#define nvkm_clk(p) container_of((p), struct nvkm_clk, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/seq.h b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/seq.h
index d717e8b8f679..d0715fe84328 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/seq.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/seq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_CLK_SEQ_H__
#define __NVKM_CLK_SEQ_H__
#include <subdev/bus/hwsq.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv04.h b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv04.h
index 4a87c8c2bce8..b18e49847eee 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv04.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv04.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV04_DEVINIT_H__
#define __NV04_DEVINIT_H__
#define nv04_devinit(p) container_of((p), struct nv04_devinit, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.h b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.h
index 25d2ae3af1c6..315ebaff1165 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV50_DEVINIT_H__
#define __NV50_DEVINIT_H__
#define nv50_devinit(p) container_of((p), struct nv50_devinit, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/priv.h
index e1f6ae58f1d3..5b3097a586dd 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_DEVINIT_PRIV_H__
#define __NVKM_DEVINIT_PRIV_H__
#define nvkm_devinit(p) container_of((p), struct nvkm_devinit, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf100.h b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf100.h
index 412eb89834e8..1756f7b02858 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf100.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf100.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_RAM_NVC0_H__
#define __NVKM_RAM_NVC0_H__
#define gf100_fb(p) container_of((p), struct gf100_fb, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.h b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.h
index faa88c8c66fe..a37758c76268 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FB_NV50_H__
#define __NVKM_FB_NV50_H__
#define nv50_fb(p) container_of((p), struct nv50_fb, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h
index e905d44fa1d5..8e87b887d4f5 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FB_PRIV_H__
#define __NVKM_FB_PRIV_H__
#define nvkm_fb(p) container_of((p), struct nvkm_fb, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h
index fac7e73c3ddf..b2122d261f8d 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FB_RAM_PRIV_H__
#define __NVKM_FB_RAM_PRIV_H__
#include "priv.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramfuc.h b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramfuc.h
index 9ef9d6aa3721..a65fa5586af8 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramfuc.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramfuc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FBRAM_FUC_H__
#define __NVKM_FBRAM_FUC_H__
#include <subdev/fb.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.h b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.h
index 8a0524566b48..8549fdf2437c 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV40_FB_RAM_H__
#define __NV40_FB_RAM_H__
#define nv40_ram(p) container_of((p), struct nv40_ram, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramseq.h b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramseq.h
index 8df7306d5729..d8f5053e8e2a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramseq.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramseq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FBRAM_SEQ_H__
#define __NVKM_FBRAM_SEQ_H__
#include <subdev/bus/hwsq.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/regsnv04.h b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/regsnv04.h
index 1f865f61504e..ad26fcbe9e06 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/regsnv04.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/regsnv04.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FB_REGS_04_H__
#define __NVKM_FB_REGS_04_H__
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/priv.h
index b0390b540ef5..3a5595a9e457 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FUSE_PRIV_H__
#define __NVKM_FUSE_PRIV_H__
#define nvkm_fuse(p) container_of((p), struct nvkm_fuse, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c
index 4a57defc99b3..1399d923d446 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c
@@ -171,7 +171,7 @@ nvkm_gpio_fini(struct nvkm_subdev *subdev, bool suspend)
return 0;
}
-static struct dmi_system_id gpio_reset_ids[] = {
+static const struct dmi_system_id gpio_reset_ids[] = {
{
.ident = "Apple Macbook 10,1",
.matches = {
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/priv.h
index 371bcdbbe0d6..9759f13447bf 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_GPIO_PRIV_H__
#define __NVKM_GPIO_PRIV_H__
#define nvkm_gpio(p) container_of((p), struct nvkm_gpio, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.h b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.h
index 9587ab456d9e..7d56c4ba693c 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_I2C_AUX_H__
#define __NVKM_I2C_AUX_H__
#include "pad.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.h b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.h
index e1be14c23e54..bea0dd33961e 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_I2C_BUS_H__
#define __NVKM_I2C_BUS_H__
#include "pad.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/pad.h b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/pad.h
index 316c4536f29a..33f0c809e583 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/pad.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/pad.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_I2C_PAD_H__
#define __NVKM_I2C_PAD_H__
#include <subdev/i2c.h>
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/priv.h
index bf655a66ef40..f476a69b6cb7 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_I2C_PRIV_H__
#define __NVKM_I2C_PRIV_H__
#define nvkm_i2c(p) container_of((p), struct nvkm_i2c, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/ibus/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/ibus/priv.h
index 01caf798cf31..504a6d37ec50 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/ibus/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/ibus/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_IBUS_PRIV_H__
#define __NVKM_IBUS_PRIV_H__
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/priv.h
index e90e0f6ed008..bd599b8252ca 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_ICCSENSE_PRIV_H__
#define __NVKM_ICCSENSE_PRIV_H__
#define nvkm_iccsense(p) container_of((p), struct nvkm_iccsense, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/priv.h
index ace4471864a3..021e7a1f39a1 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_INSTMEM_PRIV_H__
#define __NVKM_INSTMEM_PRIV_H__
#define nvkm_instmem(p) container_of((p), struct nvkm_instmem, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/priv.h
index 8b95f96e3ffa..e71cc25cc775 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_LTC_PRIV_H__
#define __NVKM_LTC_PRIV_H__
#define nvkm_ltc(p) container_of((p), struct nvkm_ltc, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mc/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/mc/priv.h
index 3be4126441e4..8869d79c2b59 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mc/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mc/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MC_PRIV_H__
#define __NVKM_MC_PRIV_H__
#define nvkm_mc(p) container_of((p), struct nvkm_mc, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c
index d06ad2c372bf..455da298227f 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c
@@ -241,6 +241,8 @@ nvkm_vm_unmap_pgt(struct nvkm_vm *vm, int big, u32 fpde, u32 lpde)
mmu->func->map_pgt(vpgd->obj, pde, vpgt->mem);
}
+ mmu->func->flush(vm);
+
nvkm_memory_del(&pgt);
}
}
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv04.h b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv04.h
index 363e33b296d5..9c35c43635c2 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv04.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv04.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV04_MMU_PRIV__
#define __NV04_MMU_PRIV__
#define nv04_mmu(p) container_of((p), struct nv04_mmu, base)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
index 27cedc60b507..bf37f313b5bb 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MMU_PRIV_H__
#define __NVKM_MMU_PRIV_H__
#define nvkm_mmu(p) container_of((p), struct nvkm_mmu, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/mxms.h b/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/mxms.h
index 333e0c01545a..011a67fe4a8b 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/mxms.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/mxms.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVMXM_MXMS_H__
#define __NVMXM_MXMS_H__
#include "priv.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/priv.h
index 7d970157aed1..6767c2279e7c 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_MXM_PRIV_H__
#define __NVKM_MXM_PRIV_H__
#define nvkm_mxm(p) container_of((p), struct nvkm_mxm, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.h b/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.h
index df2dd08363ad..edb7f00f0de5 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "priv.h"
#if defined(CONFIG_AGP) || (defined(CONFIG_AGP_MODULE) && defined(MODULE))
#ifndef __NVKM_PCI_AGP_H__
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pci/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/pci/priv.h
index 86921ec962d6..c17f6063c9ea 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pci/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pci/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_PCI_PRIV_H__
#define __NVKM_PCI_PRIV_H__
#define nvkm_pci(p) container_of((p), struct nvkm_pci, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
index 0bcf0b307a61..53d01fb00a8b 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gf100_pmu_data[] = {
/* 0x0000: proc_kern */
0x52544e49,
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h
index fe8905666c67..e1e981966c2d 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gf119_pmu_data[] = {
/* 0x0000: proc_kern */
0x52544e49,
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
index 9cf4e6fc724e..c4edbc79e41a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gk208_pmu_data[] = {
/* 0x0000: proc_kern */
0x52544e49,
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
index 5d692425b190..6a2572e8945a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
static uint32_t gt215_pmu_data[] = {
/* 0x0000: proc_kern */
0x52544e49,
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/os.h b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/os.h
index c8b06cb77e72..30d9480b9be5 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/os.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/os.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_PWR_OS_H__
#define __NVKM_PWR_OS_H__
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/memx.c b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/memx.c
index e6f74168238c..11b28b086a06 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/memx.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/memx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#ifndef __NVKM_PMU_MEMX_H__
#define __NVKM_PMU_MEMX_H__
#include "priv.h"
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h
index a4c48a10cd47..e9c6f9725afe 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_PMU_PRIV_H__
#define __NVKM_PMU_PRIV_H__
#define nvkm_pmu(p) container_of((p), struct nvkm_pmu, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/timer/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/timer/priv.h
index f820ca2aeda4..3b8878486faa 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/timer/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/timer/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_TIMER_PRIV_H__
#define __NVKM_TIMER_PRIV_H__
#define nvkm_timer(p) container_of((p), struct nvkm_timer, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/timer/regsnv04.h b/drivers/gpu/drm/nouveau/nvkm/subdev/timer/regsnv04.h
index 10bef85b485e..23d07f5f44d9 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/timer/regsnv04.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/timer/regsnv04.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define NV04_PTIMER_INTR_0 0x009100
#define NV04_PTIMER_INTR_EN_0 0x009140
#define NV04_PTIMER_NUMERATOR 0x009200
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/top/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/top/priv.h
index adb3ed03d937..4f49b0acaa0e 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/top/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/top/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_TOP_PRIV_H__
#define __NVKM_TOP_PRIV_H__
#define nvkm_top(p) container_of((p), struct nvkm_top, subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/volt/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/volt/priv.h
index 354bafe4b4e2..1a8ad560321b 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/volt/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/volt/priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_VOLT_PRIV_H__
#define __NVKM_VOLT_PRIV_H__
#define nvkm_volt(p) container_of((p), struct nvkm_volt, subdev)
diff --git a/drivers/gpu/drm/omapdrm/Makefile b/drivers/gpu/drm/omapdrm/Makefile
index b391be7ecb6c..f115253115c5 100644
--- a/drivers/gpu/drm/omapdrm/Makefile
+++ b/drivers/gpu/drm/omapdrm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the drm device driver. This driver provides support for the
# Direct Rendering Infrastructure (DRI)
diff --git a/drivers/gpu/drm/omapdrm/displays/Makefile b/drivers/gpu/drm/omapdrm/displays/Makefile
index 46baafb1a83e..d99659e1381b 100644
--- a/drivers/gpu/drm/omapdrm/displays/Makefile
+++ b/drivers/gpu/drm/omapdrm/displays/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_DRM_OMAP_ENCODER_OPA362) += encoder-opa362.o
obj-$(CONFIG_DRM_OMAP_ENCODER_TFP410) += encoder-tfp410.o
obj-$(CONFIG_DRM_OMAP_ENCODER_TPD12S015) += encoder-tpd12s015.o
diff --git a/drivers/gpu/drm/omapdrm/dss/Makefile b/drivers/gpu/drm/omapdrm/dss/Makefile
index 142ce5a02542..62d5b4f45420 100644
--- a/drivers/gpu/drm/omapdrm/dss/Makefile
+++ b/drivers/gpu/drm/omapdrm/dss/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OMAP2_DSS_INIT) += omapdss-boot-init.o
obj-$(CONFIG_OMAP_DSS_BASE) += omapdss-base.o
diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi_common.c b/drivers/gpu/drm/omapdrm/dss/hdmi_common.c
index 4dfb67fe5f6d..3ecde23ac604 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi_common.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define DSS_SUBSYS_NAME "HDMI"
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
index 9f6610d08b00..d73d3e661cec 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_DRM_PANEL_LVDS) += panel-lvds.o
obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o
obj-$(CONFIG_DRM_PANEL_INNOLUX_P079ZCA) += panel-innolux-p079zca.o
diff --git a/drivers/gpu/drm/pl111/Makefile b/drivers/gpu/drm/pl111/Makefile
index 59483d610ef5..f2874bbdaa14 100644
--- a/drivers/gpu/drm/pl111/Makefile
+++ b/drivers/gpu/drm/pl111/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
pl111_drm-y += pl111_connector.o \
pl111_display.o \
pl111_drv.o
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index 14c5613b4388..afbf50d0c08f 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -509,23 +509,25 @@ static void qxl_primary_atomic_update(struct drm_plane *plane,
.y2 = qfb->base.height
};
- if (!old_state->fb) {
- qxl_io_log(qdev,
- "create primary fb: %dx%d,%d,%d\n",
- bo->surf.width, bo->surf.height,
- bo->surf.stride, bo->surf.format);
+ if (old_state->fb) {
+ qfb_old = to_qxl_framebuffer(old_state->fb);
+ bo_old = gem_to_qxl_bo(qfb_old->obj);
+ } else {
+ bo_old = NULL;
+ }
- qxl_io_create_primary(qdev, 0, bo);
- bo->is_primary = true;
+ if (bo == bo_old)
return;
- } else {
- qfb_old = to_qxl_framebuffer(old_state->fb);
- bo_old = gem_to_qxl_bo(qfb_old->obj);
+ if (bo_old && bo_old->is_primary) {
+ qxl_io_destroy_primary(qdev);
bo_old->is_primary = false;
}
- bo->is_primary = true;
+ if (!bo->is_primary) {
+ qxl_io_create_primary(qdev, 0, bo);
+ bo->is_primary = true;
+ }
qxl_draw_dirty_fb(qdev, qfb, bo, 0, 0, &norect, 1, 1);
}
@@ -534,13 +536,15 @@ static void qxl_primary_atomic_disable(struct drm_plane *plane,
{
struct qxl_device *qdev = plane->dev->dev_private;
- if (old_state->fb)
- { struct qxl_framebuffer *qfb =
+ if (old_state->fb) {
+ struct qxl_framebuffer *qfb =
to_qxl_framebuffer(old_state->fb);
struct qxl_bo *bo = gem_to_qxl_bo(qfb->obj);
- qxl_io_destroy_primary(qdev);
- bo->is_primary = false;
+ if (bo->is_primary) {
+ qxl_io_destroy_primary(qdev);
+ bo->is_primary = false;
+ }
}
}
@@ -698,14 +702,15 @@ static void qxl_plane_cleanup_fb(struct drm_plane *plane,
struct drm_gem_object *obj;
struct qxl_bo *user_bo;
- if (!plane->state->fb) {
- /* we never executed prepare_fb, so there's nothing to
+ if (!old_state->fb) {
+ /*
+ * we never executed prepare_fb, so there's nothing to
* unpin.
*/
return;
}
- obj = to_qxl_framebuffer(plane->state->fb)->obj;
+ obj = to_qxl_framebuffer(old_state->fb)->obj;
user_bo = gem_to_qxl_bo(obj);
qxl_bo_unpin(user_bo);
}
diff --git a/drivers/gpu/drm/radeon/Makefile b/drivers/gpu/drm/radeon/Makefile
index 4acbb944bcd2..0ad8244b5ccf 100644
--- a/drivers/gpu/drm/radeon/Makefile
+++ b/drivers/gpu/drm/radeon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the drm device driver. This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
diff --git a/drivers/gpu/drm/radeon/mkregtable.c b/drivers/gpu/drm/radeon/mkregtable.c
index b928c17bdeed..c21d8fa591ef 100644
--- a/drivers/gpu/drm/radeon/mkregtable.c
+++ b/drivers/gpu/drm/radeon/mkregtable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* utility to create the register check tables
* this includes inlined list.h safe for userspace.
*
diff --git a/drivers/gpu/drm/radeon/r100_track.h b/drivers/gpu/drm/radeon/r100_track.h
index eb40888bdfcc..ad16a925f8d5 100644
--- a/drivers/gpu/drm/radeon/r100_track.h
+++ b/drivers/gpu/drm/radeon/r100_track.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define R100_TRACK_MAX_TEXTURE 3
#define R200_TRACK_MAX_TEXTURE 6
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 997131d58c7f..ffc10cadcf34 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -1663,7 +1663,7 @@ int radeon_suspend_kms(struct drm_device *dev, bool suspend,
radeon_agp_suspend(rdev);
pci_save_state(dev->pdev);
- if (freeze && rdev->family >= CHIP_CEDAR) {
+ if (freeze && rdev->family >= CHIP_CEDAR && !(rdev->flags & RADEON_IS_IGP)) {
rdev->asic->asic_reset(rdev, true);
pci_restore_state(dev->pdev);
} else if (suspend) {
diff --git a/drivers/gpu/drm/radeon/radeon_dp_mst.c b/drivers/gpu/drm/radeon/radeon_dp_mst.c
index ebdf1b859cb6..2917ea1b667e 100644
--- a/drivers/gpu/drm/radeon/radeon_dp_mst.c
+++ b/drivers/gpu/drm/radeon/radeon_dp_mst.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <drm/drmP.h>
#include <drm/drm_dp_mst_helper.h>
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_tv.c b/drivers/gpu/drm/radeon/radeon_legacy_tv.c
index 49750d07ab7d..611cf934b211 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_tv.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_tv.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <drm/drmP.h>
#include <drm/drm_crtc_helper.h>
#include "radeon.h"
diff --git a/drivers/gpu/drm/radeon/radeon_trace.h b/drivers/gpu/drm/radeon/radeon_trace.h
index fdce4062901f..db8f079e441e 100644
--- a/drivers/gpu/drm/radeon/radeon_trace.h
+++ b/drivers/gpu/drm/radeon/radeon_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_RADEON_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define _RADEON_TRACE_H_
diff --git a/drivers/gpu/drm/radeon/radeon_trace_points.c b/drivers/gpu/drm/radeon/radeon_trace_points.c
index e51d3575976b..66b3d5084662 100644
--- a/drivers/gpu/drm/radeon/radeon_trace_points.c
+++ b/drivers/gpu/drm/radeon/radeon_trace_points.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Copyright Red Hat Inc 2010.
* Author : Dave Airlie <airlied@redhat.com>
*/
diff --git a/drivers/gpu/drm/rcar-du/Makefile b/drivers/gpu/drm/rcar-du/Makefile
index 2131e722de3b..0cf5c11030e8 100644
--- a/drivers/gpu/drm/rcar-du/Makefile
+++ b/drivers/gpu/drm/rcar-du/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rcar-du-drm-y := rcar_du_crtc.o \
rcar_du_drv.o \
rcar_du_encoder.o \
diff --git a/drivers/gpu/drm/rockchip/Makefile b/drivers/gpu/drm/rockchip/Makefile
index fa8dc9d9aac2..305409818ffb 100644
--- a/drivers/gpu/drm/rockchip/Makefile
+++ b/drivers/gpu/drm/rockchip/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the drm device driver. This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h b/drivers/gpu/drm/selftests/drm_mm_selftests.h
index 37bbdac52896..54acc117550c 100644
--- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
+++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* List each unit test as selftest(name, function)
*
* The name is used as both an enum and expanded as igt__name to create
diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c
index dfdd858eda0a..86eb4c185a28 100644
--- a/drivers/gpu/drm/selftests/test-drm_mm.c
+++ b/drivers/gpu/drm/selftests/test-drm_mm.c
@@ -1627,7 +1627,7 @@ static int igt_topdown(void *ignored)
goto err;
bitmap = kzalloc(count / BITS_PER_LONG * sizeof(unsigned long),
- GFP_TEMPORARY);
+ GFP_KERNEL);
if (!bitmap)
goto err_nodes;
@@ -1741,7 +1741,7 @@ static int igt_bottomup(void *ignored)
goto err;
bitmap = kzalloc(count / BITS_PER_LONG * sizeof(unsigned long),
- GFP_TEMPORARY);
+ GFP_KERNEL);
if (!bitmap)
goto err_nodes;
diff --git a/drivers/gpu/drm/shmobile/Makefile b/drivers/gpu/drm/shmobile/Makefile
index 4c3eeb355630..861edafed856 100644
--- a/drivers/gpu/drm/shmobile/Makefile
+++ b/drivers/gpu/drm/shmobile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
shmob-drm-y := shmob_drm_backlight.o \
shmob_drm_crtc.o \
shmob_drm_drv.o \
diff --git a/drivers/gpu/drm/sti/Makefile b/drivers/gpu/drm/sti/Makefile
index c35db12435c3..f203ac5514ae 100644
--- a/drivers/gpu/drm/sti/Makefile
+++ b/drivers/gpu/drm/sti/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
sti-drm-y := \
sti_mixer.o \
sti_gdp.o \
diff --git a/drivers/gpu/drm/sun4i/Kconfig b/drivers/gpu/drm/sun4i/Kconfig
index 06f05302ee75..882d85db9053 100644
--- a/drivers/gpu/drm/sun4i/Kconfig
+++ b/drivers/gpu/drm/sun4i/Kconfig
@@ -26,7 +26,7 @@ config DRM_SUN4I_HDMI_CEC
bool "Allwinner A10 HDMI CEC Support"
depends on DRM_SUN4I_HDMI
select CEC_CORE
- depends on CEC_PIN
+ select CEC_PIN
help
Choose this option if you have an Allwinner SoC with an HDMI
controller and want to use CEC.
diff --git a/drivers/gpu/drm/sun4i/Makefile b/drivers/gpu/drm/sun4i/Makefile
index 43c753cafc88..55b32368f8fb 100644
--- a/drivers/gpu/drm/sun4i/Makefile
+++ b/drivers/gpu/drm/sun4i/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
sun4i-drm-y += sun4i_drv.o
sun4i-drm-y += sun4i_framebuffer.o
diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi.h b/drivers/gpu/drm/sun4i/sun4i_hdmi.h
index 1457750988da..a1f8cba251a2 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi.h
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi.h
@@ -15,7 +15,7 @@
#include <drm/drm_connector.h>
#include <drm/drm_encoder.h>
-#include <media/cec.h>
+#include <media/cec-pin.h>
#define SUN4I_HDMI_CTRL_REG 0x004
#define SUN4I_HDMI_CTRL_ENABLE BIT(31)
diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
index 9ea6cd5a1370..3cf1a6932fac 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
@@ -302,26 +302,29 @@ static int sun4i_hdmi_bind(struct device *dev, struct device *master,
hdmi->mod_clk = devm_clk_get(dev, "mod");
if (IS_ERR(hdmi->mod_clk)) {
dev_err(dev, "Couldn't get the HDMI mod clock\n");
- return PTR_ERR(hdmi->mod_clk);
+ ret = PTR_ERR(hdmi->mod_clk);
+ goto err_disable_bus_clk;
}
clk_prepare_enable(hdmi->mod_clk);
hdmi->pll0_clk = devm_clk_get(dev, "pll-0");
if (IS_ERR(hdmi->pll0_clk)) {
dev_err(dev, "Couldn't get the HDMI PLL 0 clock\n");
- return PTR_ERR(hdmi->pll0_clk);
+ ret = PTR_ERR(hdmi->pll0_clk);
+ goto err_disable_mod_clk;
}
hdmi->pll1_clk = devm_clk_get(dev, "pll-1");
if (IS_ERR(hdmi->pll1_clk)) {
dev_err(dev, "Couldn't get the HDMI PLL 1 clock\n");
- return PTR_ERR(hdmi->pll1_clk);
+ ret = PTR_ERR(hdmi->pll1_clk);
+ goto err_disable_mod_clk;
}
ret = sun4i_tmds_create(hdmi);
if (ret) {
dev_err(dev, "Couldn't create the TMDS clock\n");
- return ret;
+ goto err_disable_mod_clk;
}
writel(SUN4I_HDMI_CTRL_ENABLE, hdmi->base + SUN4I_HDMI_CTRL_REG);
@@ -362,7 +365,7 @@ static int sun4i_hdmi_bind(struct device *dev, struct device *master,
ret = sun4i_hdmi_i2c_create(dev, hdmi);
if (ret) {
dev_err(dev, "Couldn't create the HDMI I2C adapter\n");
- return ret;
+ goto err_disable_mod_clk;
}
drm_encoder_helper_add(&hdmi->encoder,
@@ -422,6 +425,10 @@ err_cleanup_connector:
drm_encoder_cleanup(&hdmi->encoder);
err_del_i2c_adapter:
i2c_del_adapter(hdmi->i2c);
+err_disable_mod_clk:
+ clk_disable_unprepare(hdmi->mod_clk);
+err_disable_bus_clk:
+ clk_disable_unprepare(hdmi->bus_clk);
return ret;
}
@@ -434,6 +441,8 @@ static void sun4i_hdmi_unbind(struct device *dev, struct device *master,
drm_connector_cleanup(&hdmi->connector);
drm_encoder_cleanup(&hdmi->encoder);
i2c_del_adapter(hdmi->i2c);
+ clk_disable_unprepare(hdmi->mod_clk);
+ clk_disable_unprepare(hdmi->bus_clk);
}
static const struct component_ops sun4i_hdmi_ops = {
diff --git a/drivers/gpu/drm/tegra/Makefile b/drivers/gpu/drm/tegra/Makefile
index 8927784396e8..46d65d39214d 100644
--- a/drivers/gpu/drm/tegra/Makefile
+++ b/drivers/gpu/drm/tegra/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_DRM_TEGRA_DEBUG) += -DDEBUG
tegra-drm-y := \
diff --git a/drivers/gpu/drm/tegra/trace.h b/drivers/gpu/drm/tegra/trace.h
index e9b7cdad5c4c..5a1ab4046e92 100644
--- a/drivers/gpu/drm/tegra/trace.h
+++ b/drivers/gpu/drm/tegra/trace.h
@@ -63,6 +63,6 @@ DEFINE_EVENT(register_access, sor_readl,
/* This part must be outside protection */
#undef TRACE_INCLUDE_PATH
-#define TRACE_INCLUDE_PATH .
+#define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/tegra
#define TRACE_INCLUDE_FILE trace
#include <trace/define_trace.h>
diff --git a/drivers/gpu/drm/tilcdc/Makefile b/drivers/gpu/drm/tilcdc/Makefile
index 55ebd516728f..b9e1108e5b4e 100644
--- a/drivers/gpu/drm/tilcdc/Makefile
+++ b/drivers/gpu/drm/tilcdc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ifeq (, $(findstring -W,$(EXTRA_CFLAGS)))
ccflags-y += -Werror
endif
diff --git a/drivers/gpu/drm/ttm/Makefile b/drivers/gpu/drm/ttm/Makefile
index 4d0c938ff4b2..a60e560804e0 100644
--- a/drivers/gpu/drm/ttm/Makefile
+++ b/drivers/gpu/drm/ttm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the drm device driver. This driver provides support for the
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index cba11f13d994..180ce6296416 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -109,8 +109,8 @@ static ssize_t ttm_bo_global_show(struct kobject *kobj,
struct ttm_bo_global *glob =
container_of(kobj, struct ttm_bo_global, kobj);
- return snprintf(buffer, PAGE_SIZE, "%lu\n",
- (unsigned long) atomic_read(&glob->bo_count));
+ return snprintf(buffer, PAGE_SIZE, "%d\n",
+ atomic_read(&glob->bo_count));
}
static struct attribute *ttm_bo_global_attrs[] = {
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
index d0459b392e5e..c934ad5b3903 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
@@ -469,6 +469,7 @@ static int ttm_buffer_object_transfer(struct ttm_buffer_object *bo,
* TODO: Explicit member copy would probably be better here.
*/
+ atomic_inc(&bo->glob->bo_count);
INIT_LIST_HEAD(&fbo->ddestroy);
INIT_LIST_HEAD(&fbo->lru);
INIT_LIST_HEAD(&fbo->swap);
diff --git a/drivers/gpu/drm/vc4/Makefile b/drivers/gpu/drm/vc4/Makefile
index 25bd5d30415d..837c82757339 100644
--- a/drivers/gpu/drm/vc4/Makefile
+++ b/drivers/gpu/drm/vc4/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Please keep these build lists sorted!
# core driver code
diff --git a/drivers/gpu/drm/virtio/Makefile b/drivers/gpu/drm/virtio/Makefile
index 7684f613bdc3..f29deec83d1f 100644
--- a/drivers/gpu/drm/virtio/Makefile
+++ b/drivers/gpu/drm/virtio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the drm device driver. This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
diff --git a/drivers/gpu/drm/vmwgfx/Makefile b/drivers/gpu/drm/vmwgfx/Makefile
index a365330bbb82..ad80211e1098 100644
--- a/drivers/gpu/drm/vmwgfx/Makefile
+++ b/drivers/gpu/drm/vmwgfx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
vmwgfx-y := vmwgfx_execbuf.o vmwgfx_gmr.o vmwgfx_kms.o vmwgfx_drv.o \
vmwgfx_fb.o vmwgfx_ioctl.o vmwgfx_resource.o vmwgfx_buffer.o \
vmwgfx_fifo.o vmwgfx_irq.o vmwgfx_ldu.o vmwgfx_ttm_glue.o \
diff --git a/drivers/gpu/drm/vmwgfx/device_include/vm_basic_types.h b/drivers/gpu/drm/vmwgfx/device_include/vm_basic_types.h
index 120eab830eaf..3a195e8106b3 100644
--- a/drivers/gpu/drm/vmwgfx/device_include/vm_basic_types.h
+++ b/drivers/gpu/drm/vmwgfx/device_include/vm_basic_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VM_BASIC_TYPES_H_
#define _VM_BASIC_TYPES_H_
#include <linux/kernel.h>
diff --git a/drivers/gpu/drm/zte/Makefile b/drivers/gpu/drm/zte/Makefile
index 9df7766a7f9d..b6d966d849dd 100644
--- a/drivers/gpu/drm/zte/Makefile
+++ b/drivers/gpu/drm/zte/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
zxdrm-y := \
zx_drm_drv.o \
zx_hdmi.o \
diff --git a/drivers/gpu/host1x/Makefile b/drivers/gpu/host1x/Makefile
index a1d9974cfcb5..c0b80244158d 100644
--- a/drivers/gpu/host1x/Makefile
+++ b/drivers/gpu/host1x/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
host1x-y = \
bus.o \
syncpt.o \
diff --git a/drivers/gpu/ipu-v3/Makefile b/drivers/gpu/ipu-v3/Makefile
index 8cdf9e4ae772..7cc8b47e488b 100644
--- a/drivers/gpu/ipu-v3/Makefile
+++ b/drivers/gpu/ipu-v3/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_IMX_IPUV3_CORE) += imx-ipu-v3.o
imx-ipu-v3-objs := ipu-common.o ipu-cpmem.o ipu-csi.o ipu-dc.o ipu-di.o \
diff --git a/drivers/gpu/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
index 6a573d21d3cc..658fa2d3e40c 100644
--- a/drivers/gpu/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -405,6 +405,14 @@ int ipu_idmac_lock_enable(struct ipuv3_channel *channel, int num_bursts)
return -EINVAL;
}
+ /*
+ * IPUv3EX / i.MX51 has a different register layout, and on IPUv3M /
+ * i.MX53 channel arbitration locking doesn't seem to work properly.
+ * Allow enabling the lock feature on IPUv3H / i.MX6 only.
+ */
+ if (bursts && ipu->ipu_type != IPUV3H)
+ return -EINVAL;
+
for (i = 0; i < ARRAY_SIZE(idmac_lock_en_info); i++) {
if (channel->num == idmac_lock_en_info[i].chnum)
break;
diff --git a/drivers/gpu/ipu-v3/ipu-pre.c b/drivers/gpu/ipu-v3/ipu-pre.c
index c35f74c83065..c860a7997cb5 100644
--- a/drivers/gpu/ipu-v3/ipu-pre.c
+++ b/drivers/gpu/ipu-v3/ipu-pre.c
@@ -73,6 +73,14 @@
#define IPU_PRE_STORE_ENG_CTRL_WR_NUM_BYTES(v) ((v & 0x7) << 1)
#define IPU_PRE_STORE_ENG_CTRL_OUTPUT_ACTIVE_BPP(v) ((v & 0x3) << 4)
+#define IPU_PRE_STORE_ENG_STATUS 0x120
+#define IPU_PRE_STORE_ENG_STATUS_STORE_BLOCK_X_MASK 0xffff
+#define IPU_PRE_STORE_ENG_STATUS_STORE_BLOCK_X_SHIFT 0
+#define IPU_PRE_STORE_ENG_STATUS_STORE_BLOCK_Y_MASK 0x3fff
+#define IPU_PRE_STORE_ENG_STATUS_STORE_BLOCK_Y_SHIFT 16
+#define IPU_PRE_STORE_ENG_STATUS_STORE_FIFO_FULL (1 << 30)
+#define IPU_PRE_STORE_ENG_STATUS_STORE_FIELD (1 << 31)
+
#define IPU_PRE_STORE_ENG_SIZE 0x130
#define IPU_PRE_STORE_ENG_SIZE_INPUT_WIDTH(v) ((v & 0xffff) << 0)
#define IPU_PRE_STORE_ENG_SIZE_INPUT_HEIGHT(v) ((v & 0xffff) << 16)
@@ -93,6 +101,7 @@ struct ipu_pre {
dma_addr_t buffer_paddr;
void *buffer_virt;
bool in_use;
+ unsigned int safe_window_end;
};
static DEFINE_MUTEX(ipu_pre_list_mutex);
@@ -160,6 +169,9 @@ void ipu_pre_configure(struct ipu_pre *pre, unsigned int width,
u32 active_bpp = info->cpp[0] >> 1;
u32 val;
+ /* calculate safe window for ctrl register updates */
+ pre->safe_window_end = height - 2;
+
writel(bufaddr, pre->regs + IPU_PRE_CUR_BUF);
writel(bufaddr, pre->regs + IPU_PRE_NEXT_BUF);
@@ -199,7 +211,24 @@ void ipu_pre_configure(struct ipu_pre *pre, unsigned int width,
void ipu_pre_update(struct ipu_pre *pre, unsigned int bufaddr)
{
+ unsigned long timeout = jiffies + msecs_to_jiffies(5);
+ unsigned short current_yblock;
+ u32 val;
+
writel(bufaddr, pre->regs + IPU_PRE_NEXT_BUF);
+
+ do {
+ if (time_after(jiffies, timeout)) {
+ dev_warn(pre->dev, "timeout waiting for PRE safe window\n");
+ return;
+ }
+
+ val = readl(pre->regs + IPU_PRE_STORE_ENG_STATUS);
+ current_yblock =
+ (val >> IPU_PRE_STORE_ENG_STATUS_STORE_BLOCK_Y_SHIFT) &
+ IPU_PRE_STORE_ENG_STATUS_STORE_BLOCK_Y_MASK;
+ } while (current_yblock == 0 || current_yblock >= pre->safe_window_end);
+
writel(IPU_PRE_CTRL_SDW_UPDATE, pre->regs + IPU_PRE_CTRL_SET);
}
diff --git a/drivers/gpu/ipu-v3/ipu-prg.c b/drivers/gpu/ipu-v3/ipu-prg.c
index ecc9ea44dc50..0013ca9f72c8 100644
--- a/drivers/gpu/ipu-v3/ipu-prg.c
+++ b/drivers/gpu/ipu-v3/ipu-prg.c
@@ -14,6 +14,7 @@
#include <drm/drm_fourcc.h>
#include <linux/clk.h>
#include <linux/err.h>
+#include <linux/iopoll.h>
#include <linux/mfd/syscon.h>
#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
#include <linux/module.h>
@@ -329,6 +330,12 @@ int ipu_prg_channel_configure(struct ipuv3_channel *ipu_chan,
val = IPU_PRG_REG_UPDATE_REG_UPDATE;
writel(val, prg->regs + IPU_PRG_REG_UPDATE);
+ /* wait for both double buffers to be filled */
+ readl_poll_timeout(prg->regs + IPU_PRG_STATUS, val,
+ (val & IPU_PRG_STATUS_BUFFER0_READY(prg_chan)) &&
+ (val & IPU_PRG_STATUS_BUFFER1_READY(prg_chan)),
+ 5, 1000);
+
clk_disable_unprepare(prg->clk_ipg);
chan->enabled = true;
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index 0a3117cc29e7..374301fcbc86 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -281,6 +281,7 @@ config HID_ELECOM
Support for ELECOM devices:
- BM084 Bluetooth Mouse
- DEFT Trackball (Wired and wireless)
+ - HUGE Trackball (Wired and wireless)
config HID_ELO
tristate "ELO USB 4000/4500 touchscreen"
diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
index 8659d7e633a5..235bd2a7b333 100644
--- a/drivers/hid/Makefile
+++ b/drivers/hid/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the HID driver
#
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 9bc91160819b..330ca983828b 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -2032,6 +2032,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) },
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_DEFT_WIRED) },
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_DEFT_WIRELESS) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_HUGE_WIRED) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_HUGE_WIRELESS) },
#endif
#if IS_ENABLED(CONFIG_HID_ELO)
{ HID_USB_DEVICE(USB_VENDOR_ID_ELO, 0x0009) },
diff --git a/drivers/hid/hid-elecom.c b/drivers/hid/hid-elecom.c
index e2c7465df69f..54aeea57d209 100644
--- a/drivers/hid/hid-elecom.c
+++ b/drivers/hid/hid-elecom.c
@@ -3,6 +3,7 @@
* Copyright (c) 2010 Richard Nauber <Richard.Nauber@gmail.com>
* Copyright (c) 2016 Yuxuan Shui <yshuiv7@gmail.com>
* Copyright (c) 2017 Diego Elio Pettenò <flameeyes@flameeyes.eu>
+ * Copyright (c) 2017 Alex Manoussakis <amanou@gnu.org>
*/
/*
@@ -32,9 +33,11 @@ static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
break;
case USB_DEVICE_ID_ELECOM_DEFT_WIRED:
case USB_DEVICE_ID_ELECOM_DEFT_WIRELESS:
- /* The DEFT trackball has eight buttons, but its descriptor only
- * reports five, disabling the three Fn buttons on the top of
- * the mouse.
+ case USB_DEVICE_ID_ELECOM_HUGE_WIRED:
+ case USB_DEVICE_ID_ELECOM_HUGE_WIRELESS:
+ /* The DEFT/HUGE trackball has eight buttons, but its descriptor
+ * only reports five, disabling the three Fn buttons on the top
+ * of the mouse.
*
* Apply the following diff to the descriptor:
*
@@ -62,7 +65,7 @@ static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
* End Collection, End Collection,
*/
if (*rsize == 213 && rdesc[13] == 5 && rdesc[21] == 5) {
- hid_info(hdev, "Fixing up Elecom DEFT Fn buttons\n");
+ hid_info(hdev, "Fixing up Elecom DEFT/HUGE Fn buttons\n");
rdesc[13] = 8; /* Button/Variable Report Count */
rdesc[21] = 8; /* Button/Variable Usage Maximum */
rdesc[29] = 0; /* Button/Constant Report Count */
@@ -76,6 +79,8 @@ static const struct hid_device_id elecom_devices[] = {
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) },
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_DEFT_WIRED) },
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_DEFT_WIRELESS) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_HUGE_WIRED) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_HUGE_WIRELESS) },
{ }
};
MODULE_DEVICE_TABLE(hid, elecom_devices);
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index b397a14ab970..be2e005c3c51 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -368,6 +368,8 @@
#define USB_DEVICE_ID_ELECOM_BM084 0x0061
#define USB_DEVICE_ID_ELECOM_DEFT_WIRED 0x00fe
#define USB_DEVICE_ID_ELECOM_DEFT_WIRELESS 0x00ff
+#define USB_DEVICE_ID_ELECOM_HUGE_WIRED 0x010c
+#define USB_DEVICE_ID_ELECOM_HUGE_WIRELESS 0x010d
#define USB_VENDOR_ID_DREAM_CHEEKY 0x1d34
#define USB_DEVICE_ID_DREAM_CHEEKY_WN 0x0004
@@ -533,6 +535,7 @@
#define USB_VENDOR_ID_IDEACOM 0x1cb6
#define USB_DEVICE_ID_IDEACOM_IDC6650 0x6650
#define USB_DEVICE_ID_IDEACOM_IDC6651 0x6651
+#define USB_DEVICE_ID_IDEACOM_IDC6680 0x6680
#define USB_VENDOR_ID_ILITEK 0x222a
#define USB_DEVICE_ID_ILITEK_MULTITOUCH 0x0001
@@ -660,6 +663,7 @@
#define USB_DEVICE_ID_LENOVO_CBTKBD 0x6048
#define USB_DEVICE_ID_LENOVO_TPPRODOCK 0x6067
#define USB_DEVICE_ID_LENOVO_X1_COVER 0x6085
+#define USB_DEVICE_ID_LENOVO_X1_TAB 0x60a3
#define USB_VENDOR_ID_LG 0x1fd2
#define USB_DEVICE_ID_LG_MULTITOUCH 0x0064
diff --git a/drivers/hid/hid-lg.h b/drivers/hid/hid-lg.h
index 10dd8f024135..3d8902ba1c6c 100644
--- a/drivers/hid/hid-lg.h
+++ b/drivers/hid/hid-lg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __HID_LG_H
#define __HID_LG_H
diff --git a/drivers/hid/hid-lg4ff.h b/drivers/hid/hid-lg4ff.h
index de1f350e0bd3..e5c55d515ac2 100644
--- a/drivers/hid/hid-lg4ff.h
+++ b/drivers/hid/hid-lg4ff.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __HID_LG4FF_H
#define __HID_LG4FF_H
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index 440b999304a5..9e8c4d2ba11d 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -930,6 +930,7 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi,
field->application != HID_DG_PEN &&
field->application != HID_DG_TOUCHPAD &&
field->application != HID_GD_KEYBOARD &&
+ field->application != HID_GD_SYSTEM_CONTROL &&
field->application != HID_CP_CONSUMER_CONTROL &&
field->application != HID_GD_WIRELESS_RADIO_CTLS &&
!(field->application == HID_VD_ASUS_CUSTOM_MEDIA_KEYS &&
@@ -1419,6 +1420,12 @@ static const struct hid_device_id mt_devices[] = {
USB_VENDOR_ID_ALPS_JP,
HID_DEVICE_ID_ALPS_U1_DUAL_3BTN_PTP) },
+ /* Lenovo X1 TAB Gen 2 */
+ { .driver_data = MT_CLS_WIN_8_DUAL,
+ HID_DEVICE(BUS_USB, HID_GROUP_MULTITOUCH_WIN_8,
+ USB_VENDOR_ID_LENOVO,
+ USB_DEVICE_ID_LENOVO_X1_TAB) },
+
/* Anton devices */
{ .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
MT_USB_DEVICE(USB_VENDOR_ID_ANTON,
diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
index 5b40c2614599..ef241d66562e 100644
--- a/drivers/hid/hid-rmi.c
+++ b/drivers/hid/hid-rmi.c
@@ -436,17 +436,24 @@ static int rmi_post_resume(struct hid_device *hdev)
if (!(data->device_flags & RMI_DEVICE))
return 0;
- ret = rmi_reset_attn_mode(hdev);
+ /* Make sure the HID device is ready to receive events */
+ ret = hid_hw_open(hdev);
if (ret)
return ret;
+ ret = rmi_reset_attn_mode(hdev);
+ if (ret)
+ goto out;
+
ret = rmi_driver_resume(rmi_dev, false);
if (ret) {
hid_warn(hdev, "Failed to resume device: %d\n", ret);
- return ret;
+ goto out;
}
- return 0;
+out:
+ hid_hw_close(hdev);
+ return ret;
}
#endif /* CONFIG_PM */
diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c
index ec530454e6f6..5fbe0f81ab2e 100644
--- a/drivers/hid/hidraw.c
+++ b/drivers/hid/hidraw.c
@@ -337,8 +337,8 @@ static void drop_ref(struct hidraw *hidraw, int exists_bit)
kfree(hidraw);
} else {
/* close device for last reader */
- hid_hw_power(hidraw->hid, PM_HINT_NORMAL);
hid_hw_close(hidraw->hid);
+ hid_hw_power(hidraw->hid, PM_HINT_NORMAL);
}
}
}
diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c
index 77396145d2d0..9145c2129a96 100644
--- a/drivers/hid/i2c-hid/i2c-hid.c
+++ b/drivers/hid/i2c-hid/i2c-hid.c
@@ -543,7 +543,8 @@ static int i2c_hid_alloc_buffers(struct i2c_hid *ihid, size_t report_size)
{
/* the worst case is computed from the set_report command with a
* reportID > 15 and the maximum report length */
- int args_len = sizeof(__u8) + /* optional ReportID byte */
+ int args_len = sizeof(__u8) + /* ReportID */
+ sizeof(__u8) + /* optional ReportID byte */
sizeof(__u16) + /* data register */
sizeof(__u16) + /* size of the report */
report_size; /* report */
diff --git a/drivers/hid/intel-ish-hid/Makefile b/drivers/hid/intel-ish-hid/Makefile
index 8c08b0b358b1..825b70af672f 100644
--- a/drivers/hid/intel-ish-hid/Makefile
+++ b/drivers/hid/intel-ish-hid/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile - Intel ISH HID drivers
# Copyright (c) 2014-2016, Intel Corporation.
diff --git a/drivers/hid/usbhid/Makefile b/drivers/hid/usbhid/Makefile
index 890f2914a8ff..0ff227d0c033 100644
--- a/drivers/hid/usbhid/Makefile
+++ b/drivers/hid/usbhid/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the USB input drivers
#
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 089bad8a9a21..045b5da9b992 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -975,6 +975,8 @@ static int usbhid_parse(struct hid_device *hid)
unsigned int rsize = 0;
char *rdesc;
int ret, n;
+ int num_descriptors;
+ size_t offset = offsetof(struct hid_descriptor, desc);
quirks = usbhid_lookup_quirk(le16_to_cpu(dev->descriptor.idVendor),
le16_to_cpu(dev->descriptor.idProduct));
@@ -997,10 +999,18 @@ static int usbhid_parse(struct hid_device *hid)
return -ENODEV;
}
+ if (hdesc->bLength < sizeof(struct hid_descriptor)) {
+ dbg_hid("hid descriptor is too short\n");
+ return -EINVAL;
+ }
+
hid->version = le16_to_cpu(hdesc->bcdHID);
hid->country = hdesc->bCountryCode;
- for (n = 0; n < hdesc->bNumDescriptors; n++)
+ num_descriptors = min_t(int, hdesc->bNumDescriptors,
+ (hdesc->bLength - offset) / sizeof(struct hid_class_descriptor));
+
+ for (n = 0; n < num_descriptors; n++)
if (hdesc->desc[n].bDescriptorType == HID_DT_REPORT)
rsize = le16_to_cpu(hdesc->desc[n].wDescriptorLength);
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
index a83fa76655b9..f489a5cfcb48 100644
--- a/drivers/hid/usbhid/hid-quirks.c
+++ b/drivers/hid/usbhid/hid-quirks.c
@@ -99,6 +99,7 @@ static const struct hid_blacklist {
{ USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0A4A, HID_QUIRK_ALWAYS_POLL },
{ USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0B4A, HID_QUIRK_ALWAYS_POLL },
{ USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE, HID_QUIRK_ALWAYS_POLL },
+ { USB_VENDOR_ID_IDEACOM, USB_DEVICE_ID_IDEACOM_IDC6680, HID_QUIRK_MULTI_INPUT },
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C007, HID_QUIRK_ALWAYS_POLL },
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C077, HID_QUIRK_ALWAYS_POLL },
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KEYBOARD_G710_PLUS, HID_QUIRK_NOGET },
diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
index e82a696a1d07..906e654fb0ba 100644
--- a/drivers/hid/wacom_sys.c
+++ b/drivers/hid/wacom_sys.c
@@ -668,8 +668,10 @@ static struct wacom_hdev_data *wacom_get_hdev_data(struct hid_device *hdev)
/* Try to find an already-probed interface from the same device */
list_for_each_entry(data, &wacom_udev_list, list) {
- if (compare_device_paths(hdev, data->dev, '/'))
+ if (compare_device_paths(hdev, data->dev, '/')) {
+ kref_get(&data->kref);
return data;
+ }
}
/* Fallback to finding devices that appear to be "siblings" */
@@ -766,6 +768,9 @@ static int wacom_led_control(struct wacom *wacom)
if (!wacom->led.groups)
return -ENOTSUPP;
+ if (wacom->wacom_wac.features.type == REMOTE)
+ return -ENOTSUPP;
+
if (wacom->wacom_wac.pid) { /* wireless connected */
report_id = WAC_CMD_WL_LED_CONTROL;
buf_size = 13;
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index bb17d7bbefd3..aa692e28b2cd 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -567,8 +567,8 @@ static int wacom_intuos_pad(struct wacom_wac *wacom)
keys = data[9] & 0x07;
}
} else {
- buttons = ((data[6] & 0x10) << 10) |
- ((data[5] & 0x10) << 9) |
+ buttons = ((data[6] & 0x10) << 5) |
+ ((data[5] & 0x10) << 4) |
((data[6] & 0x0F) << 4) |
(data[5] & 0x0F);
}
@@ -1227,11 +1227,17 @@ static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom)
continue;
if (range) {
+ /* Fix rotation alignment: userspace expects zero at left */
+ int16_t rotation = (int16_t)get_unaligned_le16(&frame[9]);
+ rotation += 1800/4;
+ if (rotation > 899)
+ rotation -= 1800;
+
input_report_abs(pen_input, ABS_X, get_unaligned_le16(&frame[1]));
input_report_abs(pen_input, ABS_Y, get_unaligned_le16(&frame[3]));
- input_report_abs(pen_input, ABS_TILT_X, frame[7]);
- input_report_abs(pen_input, ABS_TILT_Y, frame[8]);
- input_report_abs(pen_input, ABS_Z, get_unaligned_le16(&frame[9]));
+ input_report_abs(pen_input, ABS_TILT_X, (char)frame[7]);
+ input_report_abs(pen_input, ABS_TILT_Y, (char)frame[8]);
+ input_report_abs(pen_input, ABS_Z, rotation);
input_report_abs(pen_input, ABS_WHEEL, get_unaligned_le16(&frame[11]));
}
input_report_abs(pen_input, ABS_PRESSURE, get_unaligned_le16(&frame[5]));
@@ -1319,12 +1325,19 @@ static void wacom_intuos_pro2_bt_pad(struct wacom_wac *wacom)
unsigned char *data = wacom->data;
int buttons = (data[282] << 1) | ((data[281] >> 6) & 0x01);
- int ring = data[285];
- int prox = buttons | (ring & 0x80);
+ int ring = data[285] & 0x7F;
+ bool ringstatus = data[285] & 0x80;
+ bool prox = buttons || ringstatus;
+
+ /* Fix touchring data: userspace expects 0 at left and increasing clockwise */
+ ring = 71 - ring;
+ ring += 3*72/16;
+ if (ring > 71)
+ ring -= 72;
wacom_report_numbered_buttons(pad_input, 9, buttons);
- input_report_abs(pad_input, ABS_WHEEL, (ring & 0x80) ? (ring & 0x7f) : 0);
+ input_report_abs(pad_input, ABS_WHEEL, ringstatus ? ring : 0);
input_report_key(pad_input, wacom->tool[1], prox ? 1 : 0);
input_report_abs(pad_input, ABS_MISC, prox ? PAD_DEVICE_ID : 0);
@@ -1616,6 +1629,20 @@ static int wacom_tpc_irq(struct wacom_wac *wacom, size_t len)
return 0;
}
+static int wacom_offset_rotation(struct input_dev *input, struct hid_usage *usage,
+ int value, int num, int denom)
+{
+ struct input_absinfo *abs = &input->absinfo[usage->code];
+ int range = (abs->maximum - abs->minimum + 1);
+
+ value += num*range/denom;
+ if (value > abs->maximum)
+ value -= range;
+ else if (value < abs->minimum)
+ value += range;
+ return value;
+}
+
int wacom_equivalent_usage(int usage)
{
if ((usage & HID_USAGE_PAGE) == WACOM_HID_UP_WACOMDIGITIZER) {
@@ -1898,6 +1925,7 @@ static void wacom_wac_pad_event(struct hid_device *hdev, struct hid_field *field
unsigned equivalent_usage = wacom_equivalent_usage(usage->hid);
int i;
bool is_touch_on = value;
+ bool do_report = false;
/*
* Avoid reporting this event and setting inrange_state if this usage
@@ -1912,6 +1940,29 @@ static void wacom_wac_pad_event(struct hid_device *hdev, struct hid_field *field
}
switch (equivalent_usage) {
+ case WACOM_HID_WD_TOUCHRING:
+ /*
+ * Userspace expects touchrings to increase in value with
+ * clockwise gestures and have their zero point at the
+ * tablet's left. HID events "should" be clockwise-
+ * increasing and zero at top, though the MobileStudio
+ * Pro and 2nd-gen Intuos Pro don't do this...
+ */
+ if (hdev->vendor == 0x56a &&
+ (hdev->product == 0x34d || hdev->product == 0x34e || /* MobileStudio Pro */
+ hdev->product == 0x357 || hdev->product == 0x358)) { /* Intuos Pro 2 */
+ value = (field->logical_maximum - value);
+
+ if (hdev->product == 0x357 || hdev->product == 0x358)
+ value = wacom_offset_rotation(input, usage, value, 3, 16);
+ else if (hdev->product == 0x34d || hdev->product == 0x34e)
+ value = wacom_offset_rotation(input, usage, value, 1, 2);
+ }
+ else {
+ value = wacom_offset_rotation(input, usage, value, 1, 4);
+ }
+ do_report = true;
+ break;
case WACOM_HID_WD_TOUCHRINGSTATUS:
if (!value)
input_event(input, usage->type, usage->code, 0);
@@ -1945,10 +1996,14 @@ static void wacom_wac_pad_event(struct hid_device *hdev, struct hid_field *field
value, i);
/* fall through*/
default:
+ do_report = true;
+ break;
+ }
+
+ if (do_report) {
input_event(input, usage->type, usage->code, value);
if (value)
wacom_wac->hid_data.pad_input_event_flag = true;
- break;
}
}
@@ -2086,22 +2141,34 @@ static void wacom_wac_pen_event(struct hid_device *hdev, struct hid_field *field
wacom_wac->hid_data.tipswitch |= value;
return;
case HID_DG_TOOLSERIALNUMBER:
- wacom_wac->serial[0] = (wacom_wac->serial[0] & ~0xFFFFFFFFULL);
- wacom_wac->serial[0] |= (__u32)value;
+ if (value) {
+ wacom_wac->serial[0] = (wacom_wac->serial[0] & ~0xFFFFFFFFULL);
+ wacom_wac->serial[0] |= (__u32)value;
+ }
return;
+ case HID_DG_TWIST:
+ /*
+ * Userspace expects pen twist to have its zero point when
+ * the buttons/finger is on the tablet's left. HID values
+ * are zero when buttons are toward the top.
+ */
+ value = wacom_offset_rotation(input, usage, value, 1, 4);
+ break;
case WACOM_HID_WD_SENSE:
wacom_wac->hid_data.sense_state = value;
return;
case WACOM_HID_WD_SERIALHI:
- wacom_wac->serial[0] = (wacom_wac->serial[0] & 0xFFFFFFFF);
- wacom_wac->serial[0] |= ((__u64)value) << 32;
- /*
- * Non-USI EMR devices may contain additional tool type
- * information here. See WACOM_HID_WD_TOOLTYPE case for
- * more details.
- */
- if (value >> 20 == 1) {
- wacom_wac->id[0] |= value & 0xFFFFF;
+ if (value) {
+ wacom_wac->serial[0] = (wacom_wac->serial[0] & 0xFFFFFFFF);
+ wacom_wac->serial[0] |= ((__u64)value) << 32;
+ /*
+ * Non-USI EMR devices may contain additional tool type
+ * information here. See WACOM_HID_WD_TOOLTYPE case for
+ * more details.
+ */
+ if (value >> 20 == 1) {
+ wacom_wac->id[0] |= value & 0xFFFFF;
+ }
}
return;
case WACOM_HID_WD_TOOLTYPE:
@@ -2205,7 +2272,7 @@ static void wacom_wac_pen_report(struct hid_device *hdev,
input_report_key(input, wacom_wac->tool[0], prox);
if (wacom_wac->serial[0]) {
input_event(input, EV_MSC, MSC_SERIAL, wacom_wac->serial[0]);
- input_report_abs(input, ABS_MISC, id);
+ input_report_abs(input, ABS_MISC, prox ? id : 0);
}
wacom_wac->hid_data.tipswitch = false;
@@ -2216,6 +2283,7 @@ static void wacom_wac_pen_report(struct hid_device *hdev,
if (!prox) {
wacom_wac->tool[0] = 0;
wacom_wac->id[0] = 0;
+ wacom_wac->serial[0] = 0;
}
}
diff --git a/drivers/hsi/Makefile b/drivers/hsi/Makefile
index 96944783d584..53c3bcdbf1b0 100644
--- a/drivers/hsi/Makefile
+++ b/drivers/hsi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for HSI
#
diff --git a/drivers/hv/Makefile b/drivers/hv/Makefile
index 39c9b2c08d33..e7b1d796ba2e 100644
--- a/drivers/hv/Makefile
+++ b/drivers/hv/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_HYPERV) += hv_vmbus.o
obj-$(CONFIG_HYPERV_UTILS) += hv_utils.o
obj-$(CONFIG_HYPERV_BALLOON) += hv_balloon.o
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
index efd5db743319..894b67ac2cae 100644
--- a/drivers/hv/channel.c
+++ b/drivers/hv/channel.c
@@ -640,6 +640,7 @@ void vmbus_close(struct vmbus_channel *channel)
*/
return;
}
+ mutex_lock(&vmbus_connection.channel_mutex);
/*
* Close all the sub-channels first and then close the
* primary channel.
@@ -648,16 +649,15 @@ void vmbus_close(struct vmbus_channel *channel)
cur_channel = list_entry(cur, struct vmbus_channel, sc_list);
vmbus_close_internal(cur_channel);
if (cur_channel->rescind) {
- mutex_lock(&vmbus_connection.channel_mutex);
- hv_process_channel_removal(cur_channel,
+ hv_process_channel_removal(
cur_channel->offermsg.child_relid);
- mutex_unlock(&vmbus_connection.channel_mutex);
}
}
/*
* Now close the primary.
*/
vmbus_close_internal(channel);
+ mutex_unlock(&vmbus_connection.channel_mutex);
}
EXPORT_SYMBOL_GPL(vmbus_close);
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
index 060df71c2e8b..379b0df123be 100644
--- a/drivers/hv/channel_mgmt.c
+++ b/drivers/hv/channel_mgmt.c
@@ -159,7 +159,7 @@ static void vmbus_rescind_cleanup(struct vmbus_channel *channel)
spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags);
-
+ channel->rescind = true;
list_for_each_entry(msginfo, &vmbus_connection.chn_msg_list,
msglistentry) {
@@ -381,14 +381,21 @@ static void vmbus_release_relid(u32 relid)
true);
}
-void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid)
+void hv_process_channel_removal(u32 relid)
{
unsigned long flags;
- struct vmbus_channel *primary_channel;
+ struct vmbus_channel *primary_channel, *channel;
- BUG_ON(!channel->rescind);
BUG_ON(!mutex_is_locked(&vmbus_connection.channel_mutex));
+ /*
+ * Make sure channel is valid as we may have raced.
+ */
+ channel = relid2channel(relid);
+ if (!channel)
+ return;
+
+ BUG_ON(!channel->rescind);
if (channel->target_cpu != get_cpu()) {
put_cpu();
smp_call_function_single(channel->target_cpu,
@@ -515,6 +522,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
if (!fnew) {
if (channel->sc_creation_callback != NULL)
channel->sc_creation_callback(newchannel);
+ newchannel->probe_done = true;
return;
}
@@ -834,7 +842,6 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr)
{
struct vmbus_channel_rescind_offer *rescind;
struct vmbus_channel *channel;
- unsigned long flags;
struct device *dev;
rescind = (struct vmbus_channel_rescind_offer *)hdr;
@@ -873,16 +880,6 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr)
return;
}
- spin_lock_irqsave(&channel->lock, flags);
- channel->rescind = true;
- spin_unlock_irqrestore(&channel->lock, flags);
-
- /*
- * Now that we have posted the rescind state, perform
- * rescind related cleanup.
- */
- vmbus_rescind_cleanup(channel);
-
/*
* Now wait for offer handling to complete.
*/
@@ -901,6 +898,7 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr)
if (channel->device_obj) {
if (channel->chn_rescind_callback) {
channel->chn_rescind_callback(channel);
+ vmbus_rescind_cleanup(channel);
return;
}
/*
@@ -909,6 +907,7 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr)
*/
dev = get_device(&channel->device_obj->device);
if (dev) {
+ vmbus_rescind_cleanup(channel);
vmbus_device_unregister(channel->device_obj);
put_device(dev);
}
@@ -921,29 +920,28 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr)
* 1. Close all sub-channels first
* 2. Then close the primary channel.
*/
+ mutex_lock(&vmbus_connection.channel_mutex);
+ vmbus_rescind_cleanup(channel);
if (channel->state == CHANNEL_OPEN_STATE) {
/*
* The channel is currently not open;
* it is safe for us to cleanup the channel.
*/
- mutex_lock(&vmbus_connection.channel_mutex);
- hv_process_channel_removal(channel,
- channel->offermsg.child_relid);
- mutex_unlock(&vmbus_connection.channel_mutex);
+ hv_process_channel_removal(rescind->child_relid);
}
+ mutex_unlock(&vmbus_connection.channel_mutex);
}
}
void vmbus_hvsock_device_unregister(struct vmbus_channel *channel)
{
- mutex_lock(&vmbus_connection.channel_mutex);
-
BUG_ON(!is_hvsock_channel(channel));
- channel->rescind = true;
- vmbus_device_unregister(channel->device_obj);
+ /* We always get a rescind msg when a connection is closed. */
+ while (!READ_ONCE(channel->probe_done) || !READ_ONCE(channel->rescind))
+ msleep(1);
- mutex_unlock(&vmbus_connection.channel_mutex);
+ vmbus_device_unregister(channel->device_obj);
}
EXPORT_SYMBOL_GPL(vmbus_hvsock_device_unregister);
diff --git a/drivers/hv/hv_fcopy.c b/drivers/hv/hv_fcopy.c
index daa75bd41f86..2364281d8593 100644
--- a/drivers/hv/hv_fcopy.c
+++ b/drivers/hv/hv_fcopy.c
@@ -170,6 +170,10 @@ static void fcopy_send_data(struct work_struct *dummy)
out_src = smsg_out;
break;
+ case WRITE_TO_FILE:
+ out_src = fcopy_transaction.fcopy_msg;
+ out_len = sizeof(struct hv_do_fcopy);
+ break;
default:
out_src = fcopy_transaction.fcopy_msg;
out_len = fcopy_transaction.recv_len;
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
index a9d49f6f6501..937801ac2fe0 100644
--- a/drivers/hv/vmbus_drv.c
+++ b/drivers/hv/vmbus_drv.c
@@ -768,8 +768,7 @@ static void vmbus_device_release(struct device *device)
struct vmbus_channel *channel = hv_dev->channel;
mutex_lock(&vmbus_connection.channel_mutex);
- hv_process_channel_removal(channel,
- channel->offermsg.child_relid);
+ hv_process_channel_removal(channel->offermsg.child_relid);
mutex_unlock(&vmbus_connection.channel_mutex);
kfree(hv_dev);
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index c84d9784be98..23e195a5a2f3 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for sensor chip drivers.
#
diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c
index 579bdf93be43..14a94d90c028 100644
--- a/drivers/hwmon/acpi_power_meter.c
+++ b/drivers/hwmon/acpi_power_meter.c
@@ -973,7 +973,7 @@ static int __init enable_cap_knobs(const struct dmi_system_id *d)
return 0;
}
-static struct dmi_system_id __initdata pm_dmi_table[] = {
+static const struct dmi_system_id pm_dmi_table[] __initconst = {
{
enable_cap_knobs, "IBM Active Energy Manager",
{
diff --git a/drivers/hwmon/adt7x10.h b/drivers/hwmon/adt7x10.h
index d491c698529e..21ad15ce3163 100644
--- a/drivers/hwmon/adt7x10.h
+++ b/drivers/hwmon/adt7x10.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __HWMON_ADT7X10_H__
#define __HWMON_ADT7X10_H__
diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
index 76c34f4fde13..5c677ba44014 100644
--- a/drivers/hwmon/applesmc.c
+++ b/drivers/hwmon/applesmc.c
@@ -1247,7 +1247,7 @@ static int applesmc_dmi_match(const struct dmi_system_id *id)
* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
* So we need to put "Apple MacBook Pro" before "Apple MacBook".
*/
-static __initdata struct dmi_system_id applesmc_whitelist[] = {
+static const struct dmi_system_id applesmc_whitelist[] __initconst = {
{ applesmc_dmi_match, "Apple MacBook Air", {
DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir") },
diff --git a/drivers/hwmon/da9052-hwmon.c b/drivers/hwmon/da9052-hwmon.c
index 97a62f5b9ea4..a973eb6a2890 100644
--- a/drivers/hwmon/da9052-hwmon.c
+++ b/drivers/hwmon/da9052-hwmon.c
@@ -477,6 +477,11 @@ static int da9052_hwmon_probe(struct platform_device *pdev)
/* disable touchscreen features */
da9052_reg_write(hwmon->da9052, DA9052_TSI_CONT_A_REG, 0x00);
+ /* Sample every 1ms */
+ da9052_reg_update(hwmon->da9052, DA9052_ADC_CONT_REG,
+ DA9052_ADCCONT_ADCMODE,
+ DA9052_ADCCONT_ADCMODE);
+
err = da9052_request_irq(hwmon->da9052, DA9052_IRQ_TSIREADY,
"tsiready-irq", da9052_tsi_datardy_irq,
hwmon);
diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c
index 3189246302a6..c7c9e95e58a8 100644
--- a/drivers/hwmon/dell-smm-hwmon.c
+++ b/drivers/hwmon/dell-smm-hwmon.c
@@ -890,7 +890,7 @@ static const struct i8k_config_data i8k_config_data[] = {
},
};
-static struct dmi_system_id i8k_dmi_table[] __initdata = {
+static const struct dmi_system_id i8k_dmi_table[] __initconst = {
{
.ident = "Dell Inspiron",
.matches = {
@@ -1013,7 +1013,7 @@ MODULE_DEVICE_TABLE(dmi, i8k_dmi_table);
* of affected Dell machines for which we disallow I8K_SMM_GET_FAN_TYPE call.
* See bug: https://bugzilla.kernel.org/show_bug.cgi?id=100121
*/
-static struct dmi_system_id i8k_blacklist_fan_type_dmi_table[] __initdata = {
+static const struct dmi_system_id i8k_blacklist_fan_type_dmi_table[] __initconst = {
{
.ident = "Dell Studio XPS 8000",
.matches = {
diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
index 459a6be3390e..e9364420a512 100644
--- a/drivers/hwmon/pmbus/Makefile
+++ b/drivers/hwmon/pmbus/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for PMBus chip drivers.
#
diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c
index 5eafbaada795..dfc40c740d07 100644
--- a/drivers/hwmon/tmp102.c
+++ b/drivers/hwmon/tmp102.c
@@ -268,14 +268,11 @@ static int tmp102_probe(struct i2c_client *client,
return err;
}
- tmp102->ready_time = jiffies;
- if (tmp102->config_orig & TMP102_CONF_SD) {
- /*
- * Mark that we are not ready with data until the first
- * conversion is complete
- */
- tmp102->ready_time += msecs_to_jiffies(CONVERSION_TIME_MS);
- }
+ /*
+ * Mark that we are not ready with data until the first
+ * conversion is complete
+ */
+ tmp102->ready_time = jiffies + msecs_to_jiffies(CONVERSION_TIME_MS);
hwmon_dev = devm_hwmon_device_register_with_info(dev, client->name,
tmp102,
diff --git a/drivers/hwmon/xgene-hwmon.c b/drivers/hwmon/xgene-hwmon.c
index 9c0dbb8191ad..e1be61095532 100644
--- a/drivers/hwmon/xgene-hwmon.c
+++ b/drivers/hwmon/xgene-hwmon.c
@@ -630,7 +630,7 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
sizeof(struct slimpro_resp_msg) * ASYNC_MSG_FIFO_SIZE,
GFP_KERNEL);
if (rc)
- goto out_mbox_free;
+ return -ENOMEM;
INIT_WORK(&ctx->workq, xgene_hwmon_evt_work);
@@ -646,7 +646,8 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
if (IS_ERR(ctx->mbox_chan)) {
dev_err(&pdev->dev,
"SLIMpro mailbox channel request failed\n");
- return -ENODEV;
+ rc = -ENODEV;
+ goto out_mbox_free;
}
} else {
struct acpi_pcct_hw_reduced *cppc_ss;
@@ -654,7 +655,8 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
if (device_property_read_u32(&pdev->dev, "pcc-channel",
&ctx->mbox_idx)) {
dev_err(&pdev->dev, "no pcc-channel property\n");
- return -ENODEV;
+ rc = -ENODEV;
+ goto out_mbox_free;
}
cl->rx_callback = xgene_hwmon_pcc_rx_cb;
@@ -662,7 +664,8 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
if (IS_ERR(ctx->mbox_chan)) {
dev_err(&pdev->dev,
"PPC channel request failed\n");
- return -ENODEV;
+ rc = -ENODEV;
+ goto out_mbox_free;
}
/*
@@ -675,13 +678,13 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
if (!cppc_ss) {
dev_err(&pdev->dev, "PPC subspace not found\n");
rc = -ENODEV;
- goto out_mbox_free;
+ goto out;
}
if (!ctx->mbox_chan->mbox->txdone_irq) {
dev_err(&pdev->dev, "PCC IRQ not supported\n");
rc = -ENODEV;
- goto out_mbox_free;
+ goto out;
}
/*
@@ -696,14 +699,14 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
} else {
dev_err(&pdev->dev, "Failed to get PCC comm region\n");
rc = -ENODEV;
- goto out_mbox_free;
+ goto out;
}
if (!ctx->pcc_comm_addr) {
dev_err(&pdev->dev,
"Failed to ioremap PCC comm region\n");
rc = -ENOMEM;
- goto out_mbox_free;
+ goto out;
}
/*
diff --git a/drivers/hwspinlock/Makefile b/drivers/hwspinlock/Makefile
index 14928aa7cc5a..b87c01a506a4 100644
--- a/drivers/hwspinlock/Makefile
+++ b/drivers/hwspinlock/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Generic Hardware Spinlock framework
#
diff --git a/drivers/hwtracing/coresight/Makefile b/drivers/hwtracing/coresight/Makefile
index 5bae90ce794d..61db9dd0d571 100644
--- a/drivers/hwtracing/coresight/Makefile
+++ b/drivers/hwtracing/coresight/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for CoreSight drivers.
#
diff --git a/drivers/hwtracing/intel_th/Makefile b/drivers/hwtracing/intel_th/Makefile
index 81d42fe918f7..880c9b5e8566 100644
--- a/drivers/hwtracing/intel_th/Makefile
+++ b/drivers/hwtracing/intel_th/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_INTEL_TH) += intel_th.o
intel_th-y := core.o
intel_th-$(CONFIG_INTEL_TH_DEBUG) += debug.o
diff --git a/drivers/hwtracing/intel_th/pci.c b/drivers/hwtracing/intel_th/pci.c
index bc9cebc30526..c2a2ce8ee541 100644
--- a/drivers/hwtracing/intel_th/pci.c
+++ b/drivers/hwtracing/intel_th/pci.c
@@ -144,6 +144,11 @@ static const struct pci_device_id intel_th_pci_id_table[] = {
.driver_data = (kernel_ulong_t)0,
},
{
+ /* Lewisburg PCH */
+ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa1a6),
+ .driver_data = (kernel_ulong_t)0,
+ },
+ {
/* Gemini Lake */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x318e),
.driver_data = (kernel_ulong_t)&intel_th_2x,
@@ -158,6 +163,11 @@ static const struct pci_device_id intel_th_pci_id_table[] = {
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x9da6),
.driver_data = (kernel_ulong_t)&intel_th_2x,
},
+ {
+ /* Cedar Fork PCH */
+ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x18e1),
+ .driver_data = (kernel_ulong_t)&intel_th_2x,
+ },
{ 0 },
};
diff --git a/drivers/hwtracing/stm/Makefile b/drivers/hwtracing/stm/Makefile
index 3abd84ce13d4..effc19e5190f 100644
--- a/drivers/hwtracing/stm/Makefile
+++ b/drivers/hwtracing/stm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_STM) += stm_core.o
stm_core-y := core.o policy.o
diff --git a/drivers/hwtracing/stm/core.c b/drivers/hwtracing/stm/core.c
index 9414900575d8..f129869e05a9 100644
--- a/drivers/hwtracing/stm/core.c
+++ b/drivers/hwtracing/stm/core.c
@@ -1119,7 +1119,7 @@ void stm_source_unregister_device(struct stm_source_data *data)
stm_source_link_drop(src);
- device_destroy(&stm_source_class, src->dev.devt);
+ device_unregister(&src->dev);
}
EXPORT_SYMBOL_GPL(stm_source_unregister_device);
diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
index 7bb65a4369e1..72c94c60fdd1 100644
--- a/drivers/i2c/Makefile
+++ b/drivers/i2c/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the i2c core.
#
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index edc0cfb6fc1a..45a3f3ca29b3 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -131,6 +131,7 @@ config I2C_I801
Gemini Lake (SOC)
Cannon Lake-H (PCH)
Cannon Lake-LP (PCH)
+ Cedar Fork (PCH)
This driver can also be built as a module. If so, the module
will be called i2c-i801.
@@ -336,6 +337,16 @@ config I2C_POWERMAC
comment "I2C system bus drivers (mostly embedded / system-on-chip)"
+config I2C_ALTERA
+ tristate "Altera Soft IP I2C"
+ depends on (ARCH_SOCFPGA || NIOS2) && OF
+ help
+ If you say yes to this option, support will be included for the
+ Altera Soft IP I2C interfaces on SoCFPGA and Nios2 architectures.
+
+ This driver can also be built as a module. If so, the module
+ will be called i2c-altera.
+
config I2C_ASPEED
tristate "Aspeed I2C Controller"
depends on ARCH_ASPEED || COMPILE_TEST
@@ -935,6 +946,16 @@ config I2C_STM32F4
This driver can also be built as module. If so, the module
will be called i2c-stm32f4.
+config I2C_STM32F7
+ tristate "STMicroelectronics STM32F7 I2C support"
+ depends on ARCH_STM32 || COMPILE_TEST
+ help
+ Enable this option to add support for STM32 I2C controller embedded
+ in STM32F7 SoCs.
+
+ This driver can also be built as module. If so, the module
+ will be called i2c-stm32f7.
+
config I2C_STU300
tristate "ST Microelectronics DDC I2C interface"
depends on MACH_U300
diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
index 562daf738048..2ce8576540a2 100644
--- a/drivers/i2c/busses/Makefile
+++ b/drivers/i2c/busses/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the i2c bus drivers.
#
@@ -30,6 +31,7 @@ obj-$(CONFIG_I2C_HYDRA) += i2c-hydra.o
obj-$(CONFIG_I2C_POWERMAC) += i2c-powermac.o
# Embedded system I2C/SMBus host controller drivers
+obj-$(CONFIG_I2C_ALTERA) += i2c-altera.o
obj-$(CONFIG_I2C_ASPEED) += i2c-aspeed.o
obj-$(CONFIG_I2C_AT91) += i2c-at91.o
obj-$(CONFIG_I2C_AU1550) += i2c-au1550.o
@@ -93,6 +95,7 @@ obj-$(CONFIG_I2C_SIRF) += i2c-sirf.o
obj-$(CONFIG_I2C_SPRD) += i2c-sprd.o
obj-$(CONFIG_I2C_ST) += i2c-st.o
obj-$(CONFIG_I2C_STM32F4) += i2c-stm32f4.o
+obj-$(CONFIG_I2C_STM32F7) += i2c-stm32f7.o
obj-$(CONFIG_I2C_STU300) += i2c-stu300.o
obj-$(CONFIG_I2C_SUN6I_P2WI) += i2c-sun6i-p2wi.o
obj-$(CONFIG_I2C_TEGRA) += i2c-tegra.o
diff --git a/drivers/i2c/busses/i2c-altera.c b/drivers/i2c/busses/i2c-altera.c
new file mode 100644
index 000000000000..f5e1941e65b5
--- /dev/null
+++ b/drivers/i2c/busses/i2c-altera.c
@@ -0,0 +1,511 @@
+/*
+ * Copyright Intel Corporation (C) 2017.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Based on the i2c-axxia.c driver.
+ */
+#include <linux/clk.h>
+#include <linux/clkdev.h>
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/iopoll.h>
+#include <linux/interrupt.h>
+#include <linux/module.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+
+#define ALTR_I2C_TFR_CMD 0x00 /* Transfer Command register */
+#define ALTR_I2C_TFR_CMD_STA BIT(9) /* send START before byte */
+#define ALTR_I2C_TFR_CMD_STO BIT(8) /* send STOP after byte */
+#define ALTR_I2C_TFR_CMD_RW_D BIT(0) /* Direction of transfer */
+#define ALTR_I2C_RX_DATA 0x04 /* RX data FIFO register */
+#define ALTR_I2C_CTRL 0x08 /* Control register */
+#define ALTR_I2C_CTRL_RXT_SHFT 4 /* RX FIFO Threshold */
+#define ALTR_I2C_CTRL_TCT_SHFT 2 /* TFER CMD FIFO Threshold */
+#define ALTR_I2C_CTRL_BSPEED BIT(1) /* Bus Speed (1=Fast) */
+#define ALTR_I2C_CTRL_EN BIT(0) /* Enable Core (1=Enable) */
+#define ALTR_I2C_ISER 0x0C /* Interrupt Status Enable register */
+#define ALTR_I2C_ISER_RXOF_EN BIT(4) /* Enable RX OVERFLOW IRQ */
+#define ALTR_I2C_ISER_ARB_EN BIT(3) /* Enable ARB LOST IRQ */
+#define ALTR_I2C_ISER_NACK_EN BIT(2) /* Enable NACK DET IRQ */
+#define ALTR_I2C_ISER_RXRDY_EN BIT(1) /* Enable RX Ready IRQ */
+#define ALTR_I2C_ISER_TXRDY_EN BIT(0) /* Enable TX Ready IRQ */
+#define ALTR_I2C_ISR 0x10 /* Interrupt Status register */
+#define ALTR_I2C_ISR_RXOF BIT(4) /* RX OVERFLOW IRQ */
+#define ALTR_I2C_ISR_ARB BIT(3) /* ARB LOST IRQ */
+#define ALTR_I2C_ISR_NACK BIT(2) /* NACK DET IRQ */
+#define ALTR_I2C_ISR_RXRDY BIT(1) /* RX Ready IRQ */
+#define ALTR_I2C_ISR_TXRDY BIT(0) /* TX Ready IRQ */
+#define ALTR_I2C_STATUS 0x14 /* Status register */
+#define ALTR_I2C_STAT_CORE BIT(0) /* Core Status (0=idle) */
+#define ALTR_I2C_TC_FIFO_LVL 0x18 /* Transfer FIFO LVL register */
+#define ALTR_I2C_RX_FIFO_LVL 0x1C /* Receive FIFO LVL register */
+#define ALTR_I2C_SCL_LOW 0x20 /* SCL low count register */
+#define ALTR_I2C_SCL_HIGH 0x24 /* SCL high count register */
+#define ALTR_I2C_SDA_HOLD 0x28 /* SDA hold count register */
+
+#define ALTR_I2C_ALL_IRQ (ALTR_I2C_ISR_RXOF | ALTR_I2C_ISR_ARB | \
+ ALTR_I2C_ISR_NACK | ALTR_I2C_ISR_RXRDY | \
+ ALTR_I2C_ISR_TXRDY)
+
+#define ALTR_I2C_THRESHOLD 0 /* IRQ Threshold at 1 element */
+#define ALTR_I2C_DFLT_FIFO_SZ 4
+#define ALTR_I2C_TIMEOUT 100000 /* 100ms */
+#define ALTR_I2C_XFER_TIMEOUT (msecs_to_jiffies(250))
+
+/**
+ * altr_i2c_dev - I2C device context
+ * @base: pointer to register struct
+ * @msg: pointer to current message
+ * @msg_len: number of bytes transferred in msg
+ * @msg_err: error code for completed message
+ * @msg_complete: xfer completion object
+ * @dev: device reference
+ * @adapter: core i2c abstraction
+ * @i2c_clk: clock reference for i2c input clock
+ * @bus_clk_rate: current i2c bus clock rate
+ * @buf: ptr to msg buffer for easier use.
+ * @fifo_size: size of the FIFO passed in.
+ * @isr_mask: cached copy of local ISR enables.
+ * @isr_status: cached copy of local ISR status.
+ * @lock: spinlock for IRQ synchronization.
+ */
+struct altr_i2c_dev {
+ void __iomem *base;
+ struct i2c_msg *msg;
+ size_t msg_len;
+ int msg_err;
+ struct completion msg_complete;
+ struct device *dev;
+ struct i2c_adapter adapter;
+ struct clk *i2c_clk;
+ u32 bus_clk_rate;
+ u8 *buf;
+ u32 fifo_size;
+ u32 isr_mask;
+ u32 isr_status;
+ spinlock_t lock; /* IRQ synchronization */
+};
+
+static void
+altr_i2c_int_enable(struct altr_i2c_dev *idev, u32 mask, bool enable)
+{
+ unsigned long flags;
+ u32 int_en;
+
+ spin_lock_irqsave(&idev->lock, flags);
+
+ int_en = readl(idev->base + ALTR_I2C_ISER);
+ if (enable)
+ idev->isr_mask = int_en | mask;
+ else
+ idev->isr_mask = int_en & ~mask;
+
+ writel(idev->isr_mask, idev->base + ALTR_I2C_ISER);
+
+ spin_unlock_irqrestore(&idev->lock, flags);
+}
+
+static void altr_i2c_int_clear(struct altr_i2c_dev *idev, u32 mask)
+{
+ u32 int_en = readl(idev->base + ALTR_I2C_ISR);
+
+ writel(int_en | mask, idev->base + ALTR_I2C_ISR);
+}
+
+static void altr_i2c_core_disable(struct altr_i2c_dev *idev)
+{
+ u32 tmp = readl(idev->base + ALTR_I2C_CTRL);
+
+ writel(tmp & ~ALTR_I2C_CTRL_EN, idev->base + ALTR_I2C_CTRL);
+}
+
+static void altr_i2c_core_enable(struct altr_i2c_dev *idev)
+{
+ u32 tmp = readl(idev->base + ALTR_I2C_CTRL);
+
+ writel(tmp | ALTR_I2C_CTRL_EN, idev->base + ALTR_I2C_CTRL);
+}
+
+static void altr_i2c_reset(struct altr_i2c_dev *idev)
+{
+ altr_i2c_core_disable(idev);
+ altr_i2c_core_enable(idev);
+}
+
+static inline void altr_i2c_stop(struct altr_i2c_dev *idev)
+{
+ writel(ALTR_I2C_TFR_CMD_STO, idev->base + ALTR_I2C_TFR_CMD);
+}
+
+static void altr_i2c_init(struct altr_i2c_dev *idev)
+{
+ u32 divisor = clk_get_rate(idev->i2c_clk) / idev->bus_clk_rate;
+ u32 clk_mhz = clk_get_rate(idev->i2c_clk) / 1000000;
+ u32 tmp = (ALTR_I2C_THRESHOLD << ALTR_I2C_CTRL_RXT_SHFT) |
+ (ALTR_I2C_THRESHOLD << ALTR_I2C_CTRL_TCT_SHFT);
+ u32 t_high, t_low;
+
+ if (idev->bus_clk_rate <= 100000) {
+ tmp &= ~ALTR_I2C_CTRL_BSPEED;
+ /* Standard mode SCL 50/50 */
+ t_high = divisor * 1 / 2;
+ t_low = divisor * 1 / 2;
+ } else {
+ tmp |= ALTR_I2C_CTRL_BSPEED;
+ /* Fast mode SCL 33/66 */
+ t_high = divisor * 1 / 3;
+ t_low = divisor * 2 / 3;
+ }
+ writel(tmp, idev->base + ALTR_I2C_CTRL);
+
+ dev_dbg(idev->dev, "rate=%uHz per_clk=%uMHz -> ratio=1:%u\n",
+ idev->bus_clk_rate, clk_mhz, divisor);
+
+ /* Reset controller */
+ altr_i2c_reset(idev);
+
+ /* SCL High Time */
+ writel(t_high, idev->base + ALTR_I2C_SCL_HIGH);
+ /* SCL Low Time */
+ writel(t_low, idev->base + ALTR_I2C_SCL_LOW);
+ /* SDA Hold Time, 300ns */
+ writel(div_u64(300 * clk_mhz, 1000), idev->base + ALTR_I2C_SDA_HOLD);
+
+ /* Mask all master interrupt bits */
+ altr_i2c_int_enable(idev, ALTR_I2C_ALL_IRQ, false);
+}
+
+/**
+ * altr_i2c_transfer - On the last byte to be transmitted, send
+ * a Stop bit on the last byte.
+ */
+static void altr_i2c_transfer(struct altr_i2c_dev *idev, u32 data)
+{
+ /* On the last byte to be transmitted, send STOP */
+ if (idev->msg_len == 1)
+ data |= ALTR_I2C_TFR_CMD_STO;
+ if (idev->msg_len > 0)
+ writel(data, idev->base + ALTR_I2C_TFR_CMD);
+}
+
+/**
+ * altr_i2c_empty_rx_fifo - Fetch data from RX FIFO until end of
+ * transfer. Send a Stop bit on the last byte.
+ */
+static void altr_i2c_empty_rx_fifo(struct altr_i2c_dev *idev)
+{
+ size_t rx_fifo_avail = readl(idev->base + ALTR_I2C_RX_FIFO_LVL);
+ int bytes_to_transfer = min(rx_fifo_avail, idev->msg_len);
+
+ while (bytes_to_transfer-- > 0) {
+ *idev->buf++ = readl(idev->base + ALTR_I2C_RX_DATA);
+ idev->msg_len--;
+ altr_i2c_transfer(idev, 0);
+ }
+}
+
+/**
+ * altr_i2c_fill_tx_fifo - Fill TX FIFO from current message buffer.
+ * @return: Number of bytes left to transfer.
+ */
+static int altr_i2c_fill_tx_fifo(struct altr_i2c_dev *idev)
+{
+ size_t tx_fifo_avail = idev->fifo_size - readl(idev->base +
+ ALTR_I2C_TC_FIFO_LVL);
+ int bytes_to_transfer = min(tx_fifo_avail, idev->msg_len);
+ int ret = idev->msg_len - bytes_to_transfer;
+
+ while (bytes_to_transfer-- > 0) {
+ altr_i2c_transfer(idev, *idev->buf++);
+ idev->msg_len--;
+ }
+
+ return ret;
+}
+
+static irqreturn_t altr_i2c_isr_quick(int irq, void *_dev)
+{
+ struct altr_i2c_dev *idev = _dev;
+ irqreturn_t ret = IRQ_HANDLED;
+
+ /* Read IRQ status but only interested in Enabled IRQs. */
+ idev->isr_status = readl(idev->base + ALTR_I2C_ISR) & idev->isr_mask;
+ if (idev->isr_status)
+ ret = IRQ_WAKE_THREAD;
+
+ return ret;
+}
+
+static irqreturn_t altr_i2c_isr(int irq, void *_dev)
+{
+ int ret;
+ bool read, finish = false;
+ struct altr_i2c_dev *idev = _dev;
+ u32 status = idev->isr_status;
+
+ if (!idev->msg) {
+ dev_warn(idev->dev, "unexpected interrupt\n");
+ altr_i2c_int_clear(idev, ALTR_I2C_ALL_IRQ);
+ return IRQ_HANDLED;
+ }
+ read = (idev->msg->flags & I2C_M_RD) != 0;
+
+ /* handle Lost Arbitration */
+ if (unlikely(status & ALTR_I2C_ISR_ARB)) {
+ altr_i2c_int_clear(idev, ALTR_I2C_ISR_ARB);
+ idev->msg_err = -EAGAIN;
+ finish = true;
+ } else if (unlikely(status & ALTR_I2C_ISR_NACK)) {
+ dev_dbg(idev->dev, "Could not get ACK\n");
+ idev->msg_err = -ENXIO;
+ altr_i2c_int_clear(idev, ALTR_I2C_ISR_NACK);
+ altr_i2c_stop(idev);
+ finish = true;
+ } else if (read && unlikely(status & ALTR_I2C_ISR_RXOF)) {
+ /* handle RX FIFO Overflow */
+ altr_i2c_empty_rx_fifo(idev);
+ altr_i2c_int_clear(idev, ALTR_I2C_ISR_RXRDY);
+ altr_i2c_stop(idev);
+ dev_err(idev->dev, "RX FIFO Overflow\n");
+ finish = true;
+ } else if (read && (status & ALTR_I2C_ISR_RXRDY)) {
+ /* RX FIFO needs service? */
+ altr_i2c_empty_rx_fifo(idev);
+ altr_i2c_int_clear(idev, ALTR_I2C_ISR_RXRDY);
+ if (!idev->msg_len)
+ finish = true;
+ } else if (!read && (status & ALTR_I2C_ISR_TXRDY)) {
+ /* TX FIFO needs service? */
+ altr_i2c_int_clear(idev, ALTR_I2C_ISR_TXRDY);
+ if (idev->msg_len > 0)
+ altr_i2c_fill_tx_fifo(idev);
+ else
+ finish = true;
+ } else {
+ dev_warn(idev->dev, "Unexpected interrupt: 0x%x\n", status);
+ altr_i2c_int_clear(idev, ALTR_I2C_ALL_IRQ);
+ }
+
+ if (finish) {
+ /* Wait for the Core to finish */
+ ret = readl_poll_timeout_atomic(idev->base + ALTR_I2C_STATUS,
+ status,
+ !(status & ALTR_I2C_STAT_CORE),
+ 1, ALTR_I2C_TIMEOUT);
+ if (ret)
+ dev_err(idev->dev, "message timeout\n");
+ altr_i2c_int_enable(idev, ALTR_I2C_ALL_IRQ, false);
+ altr_i2c_int_clear(idev, ALTR_I2C_ALL_IRQ);
+ complete(&idev->msg_complete);
+ dev_dbg(idev->dev, "Message Complete\n");
+ }
+
+ return IRQ_HANDLED;
+}
+
+static int altr_i2c_xfer_msg(struct altr_i2c_dev *idev, struct i2c_msg *msg)
+{
+ u32 imask = ALTR_I2C_ISR_RXOF | ALTR_I2C_ISR_ARB | ALTR_I2C_ISR_NACK;
+ unsigned long time_left;
+ u32 value;
+ u8 addr = i2c_8bit_addr_from_msg(msg);
+
+ idev->msg = msg;
+ idev->msg_len = msg->len;
+ idev->buf = msg->buf;
+ idev->msg_err = 0;
+ reinit_completion(&idev->msg_complete);
+ altr_i2c_core_enable(idev);
+
+ /* Make sure RX FIFO is empty */
+ do {
+ readl(idev->base + ALTR_I2C_RX_DATA);
+ } while (readl(idev->base + ALTR_I2C_RX_FIFO_LVL));
+
+ writel(ALTR_I2C_TFR_CMD_STA | addr, idev->base + ALTR_I2C_TFR_CMD);
+
+ if ((msg->flags & I2C_M_RD) != 0) {
+ imask |= ALTR_I2C_ISER_RXOF_EN | ALTR_I2C_ISER_RXRDY_EN;
+ altr_i2c_int_enable(idev, imask, true);
+ /* write the first byte to start the RX */
+ altr_i2c_transfer(idev, 0);
+ } else {
+ imask |= ALTR_I2C_ISR_TXRDY;
+ altr_i2c_int_enable(idev, imask, true);
+ altr_i2c_fill_tx_fifo(idev);
+ }
+
+ time_left = wait_for_completion_timeout(&idev->msg_complete,
+ ALTR_I2C_XFER_TIMEOUT);
+ altr_i2c_int_enable(idev, imask, false);
+
+ value = readl(idev->base + ALTR_I2C_STATUS) & ALTR_I2C_STAT_CORE;
+ if (value)
+ dev_err(idev->dev, "Core Status not IDLE...\n");
+
+ if (time_left == 0) {
+ idev->msg_err = -ETIMEDOUT;
+ dev_dbg(idev->dev, "Transaction timed out.\n");
+ }
+
+ altr_i2c_core_disable(idev);
+
+ return idev->msg_err;
+}
+
+static int
+altr_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
+{
+ struct altr_i2c_dev *idev = i2c_get_adapdata(adap);
+ int i, ret;
+
+ for (i = 0; i < num; i++) {
+ ret = altr_i2c_xfer_msg(idev, msgs++);
+ if (ret)
+ return ret;
+ }
+ return num;
+}
+
+static u32 altr_i2c_func(struct i2c_adapter *adap)
+{
+ return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
+}
+
+static const struct i2c_algorithm altr_i2c_algo = {
+ .master_xfer = altr_i2c_xfer,
+ .functionality = altr_i2c_func,
+};
+
+static int altr_i2c_probe(struct platform_device *pdev)
+{
+ struct altr_i2c_dev *idev = NULL;
+ struct resource *res;
+ int irq, ret;
+ u32 val;
+
+ idev = devm_kzalloc(&pdev->dev, sizeof(*idev), GFP_KERNEL);
+ if (!idev)
+ return -ENOMEM;
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ idev->base = devm_ioremap_resource(&pdev->dev, res);
+ if (IS_ERR(idev->base))
+ return PTR_ERR(idev->base);
+
+ irq = platform_get_irq(pdev, 0);
+ if (irq < 0) {
+ dev_err(&pdev->dev, "missing interrupt resource\n");
+ return irq;
+ }
+
+ idev->i2c_clk = devm_clk_get(&pdev->dev, NULL);
+ if (IS_ERR(idev->i2c_clk)) {
+ dev_err(&pdev->dev, "missing clock\n");
+ return PTR_ERR(idev->i2c_clk);
+ }
+
+ idev->dev = &pdev->dev;
+ init_completion(&idev->msg_complete);
+ spin_lock_init(&idev->lock);
+
+ val = device_property_read_u32(idev->dev, "fifo-size",
+ &idev->fifo_size);
+ if (val) {
+ dev_err(&pdev->dev, "FIFO size set to default of %d\n",
+ ALTR_I2C_DFLT_FIFO_SZ);
+ idev->fifo_size = ALTR_I2C_DFLT_FIFO_SZ;
+ }
+
+ val = device_property_read_u32(idev->dev, "clock-frequency",
+ &idev->bus_clk_rate);
+ if (val) {
+ dev_err(&pdev->dev, "Default to 100kHz\n");
+ idev->bus_clk_rate = 100000; /* default clock rate */
+ }
+
+ if (idev->bus_clk_rate > 400000) {
+ dev_err(&pdev->dev, "invalid clock-frequency %d\n",
+ idev->bus_clk_rate);
+ return -EINVAL;
+ }
+
+ ret = devm_request_threaded_irq(&pdev->dev, irq, altr_i2c_isr_quick,
+ altr_i2c_isr, IRQF_ONESHOT,
+ pdev->name, idev);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to claim IRQ %d\n", irq);
+ return ret;
+ }
+
+ ret = clk_prepare_enable(idev->i2c_clk);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to enable clock\n");
+ return ret;
+ }
+
+ altr_i2c_init(idev);
+
+ i2c_set_adapdata(&idev->adapter, idev);
+ strlcpy(idev->adapter.name, pdev->name, sizeof(idev->adapter.name));
+ idev->adapter.owner = THIS_MODULE;
+ idev->adapter.algo = &altr_i2c_algo;
+ idev->adapter.dev.parent = &pdev->dev;
+ idev->adapter.dev.of_node = pdev->dev.of_node;
+
+ platform_set_drvdata(pdev, idev);
+
+ ret = i2c_add_adapter(&idev->adapter);
+ if (ret) {
+ clk_disable_unprepare(idev->i2c_clk);
+ return ret;
+ }
+ dev_info(&pdev->dev, "Altera SoftIP I2C Probe Complete\n");
+
+ return 0;
+}
+
+static int altr_i2c_remove(struct platform_device *pdev)
+{
+ struct altr_i2c_dev *idev = platform_get_drvdata(pdev);
+
+ clk_disable_unprepare(idev->i2c_clk);
+ i2c_del_adapter(&idev->adapter);
+
+ return 0;
+}
+
+/* Match table for of_platform binding */
+static const struct of_device_id altr_i2c_of_match[] = {
+ { .compatible = "altr,softip-i2c-v1.0" },
+ {},
+};
+MODULE_DEVICE_TABLE(of, altr_i2c_of_match);
+
+static struct platform_driver altr_i2c_driver = {
+ .probe = altr_i2c_probe,
+ .remove = altr_i2c_remove,
+ .driver = {
+ .name = "altera-i2c",
+ .of_match_table = altr_i2c_of_match,
+ },
+};
+
+module_platform_driver(altr_i2c_driver);
+
+MODULE_DESCRIPTION("Altera Soft IP I2C bus driver");
+MODULE_AUTHOR("Thor Thayer <thor.thayer@linux.intel.com>");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
index e114e4e00d29..9e12a53ef7b8 100644
--- a/drivers/i2c/busses/i2c-i801.c
+++ b/drivers/i2c/busses/i2c-i801.c
@@ -68,6 +68,7 @@
* Gemini Lake (SOC) 0x31d4 32 hard yes yes yes
* Cannon Lake-H (PCH) 0xa323 32 hard yes yes yes
* Cannon Lake-LP (PCH) 0x9da3 32 hard yes yes yes
+ * Cedar Fork (PCH) 0x18df 32 hard yes yes yes
*
* Features supported by this driver:
* Software PEC no
@@ -204,6 +205,7 @@
/* Older devices have their ID defined in <linux/pci_ids.h> */
#define PCI_DEVICE_ID_INTEL_BAYTRAIL_SMBUS 0x0f12
+#define PCI_DEVICE_ID_INTEL_CDF_SMBUS 0x18df
#define PCI_DEVICE_ID_INTEL_DNV_SMBUS 0x19df
#define PCI_DEVICE_ID_INTEL_COUGARPOINT_SMBUS 0x1c22
#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS 0x1d22
@@ -1025,6 +1027,7 @@ static const struct pci_device_id i801_ids[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BRASWELL_SMBUS) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SUNRISEPOINT_H_SMBUS) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_SMBUS) },
+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CDF_SMBUS) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_DNV_SMBUS) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BROXTON_SMBUS) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LEWISBURG_SMBUS) },
@@ -1513,6 +1516,7 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)
case PCI_DEVICE_ID_INTEL_CANNONLAKE_LP_SMBUS:
case PCI_DEVICE_ID_INTEL_LEWISBURG_SMBUS:
case PCI_DEVICE_ID_INTEL_LEWISBURG_SSKU_SMBUS:
+ case PCI_DEVICE_ID_INTEL_CDF_SMBUS:
case PCI_DEVICE_ID_INTEL_DNV_SMBUS:
case PCI_DEVICE_ID_INTEL_KABYLAKE_PCH_H_SMBUS:
priv->features |= FEATURE_I2C_BLOCK_READ;
diff --git a/drivers/i2c/busses/i2c-img-scb.c b/drivers/i2c/busses/i2c-img-scb.c
index 84fb35f6837f..eb1d91b986fd 100644
--- a/drivers/i2c/busses/i2c-img-scb.c
+++ b/drivers/i2c/busses/i2c-img-scb.c
@@ -1459,6 +1459,6 @@ static struct platform_driver img_scb_i2c_driver = {
};
module_platform_driver(img_scb_i2c_driver);
-MODULE_AUTHOR("James Hogan <james.hogan@imgtec.com>");
+MODULE_AUTHOR("James Hogan <jhogan@kernel.org>");
MODULE_DESCRIPTION("IMG host I2C driver");
MODULE_LICENSE("GPL v2");
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 54a47b40546f..f96830ffd9f1 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -1021,7 +1021,7 @@ static int i2c_imx_init_recovery_info(struct imx_i2c_struct *i2c_imx,
}
dev_dbg(&pdev->dev, "using scl-gpio %d and sda-gpio %d for recovery\n",
- rinfo->sda_gpio, rinfo->scl_gpio);
+ rinfo->scl_gpio, rinfo->sda_gpio);
rinfo->prepare_recovery = i2c_imx_prepare_recovery;
rinfo->unprepare_recovery = i2c_imx_unprepare_recovery;
@@ -1100,7 +1100,7 @@ static int i2c_imx_probe(struct platform_device *pdev)
}
/* Request IRQ */
- ret = devm_request_irq(&pdev->dev, irq, i2c_imx_isr, 0,
+ ret = devm_request_irq(&pdev->dev, irq, i2c_imx_isr, IRQF_SHARED,
pdev->name, i2c_imx);
if (ret) {
dev_err(&pdev->dev, "can't claim irq %d\n", irq);
diff --git a/drivers/i2c/busses/i2c-ismt.c b/drivers/i2c/busses/i2c-ismt.c
index 22ffcb73c185..b51adffa4841 100644
--- a/drivers/i2c/busses/i2c-ismt.c
+++ b/drivers/i2c/busses/i2c-ismt.c
@@ -340,12 +340,15 @@ static int ismt_process_desc(const struct ismt_desc *desc,
data->word = dma_buffer[0] | (dma_buffer[1] << 8);
break;
case I2C_SMBUS_BLOCK_DATA:
- case I2C_SMBUS_I2C_BLOCK_DATA:
if (desc->rxbytes != dma_buffer[0] + 1)
return -EMSGSIZE;
memcpy(data->block, dma_buffer, desc->rxbytes);
break;
+ case I2C_SMBUS_I2C_BLOCK_DATA:
+ memcpy(&data->block[1], dma_buffer, desc->rxbytes);
+ data->block[0] = desc->rxbytes;
+ break;
}
return 0;
}
diff --git a/drivers/i2c/busses/i2c-octeon-core.h b/drivers/i2c/busses/i2c-octeon-core.h
index aa3c8f4771c1..a7ef19855bb8 100644
--- a/drivers/i2c/busses/i2c-octeon-core.h
+++ b/drivers/i2c/busses/i2c-octeon-core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/atomic.h>
#include <linux/clk.h>
#include <linux/delay.h>
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index 1ebb5e947e0b..23c2ea2baedc 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -360,6 +360,7 @@ static int omap_i2c_init(struct omap_i2c_dev *omap)
unsigned long fclk_rate = 12000000;
unsigned long internal_clk = 0;
struct clk *fclk;
+ int error;
if (omap->rev >= OMAP_I2C_REV_ON_3430_3530) {
/*
@@ -378,6 +379,13 @@ static int omap_i2c_init(struct omap_i2c_dev *omap)
* do this bit unconditionally.
*/
fclk = clk_get(omap->dev, "fck");
+ if (IS_ERR(fclk)) {
+ error = PTR_ERR(fclk);
+ dev_err(omap->dev, "could not get fck: %i\n", error);
+
+ return error;
+ }
+
fclk_rate = clk_get_rate(fclk);
clk_put(fclk);
@@ -410,6 +418,12 @@ static int omap_i2c_init(struct omap_i2c_dev *omap)
else
internal_clk = 4000;
fclk = clk_get(omap->dev, "fck");
+ if (IS_ERR(fclk)) {
+ error = PTR_ERR(fclk);
+ dev_err(omap->dev, "could not get fck: %i\n", error);
+
+ return error;
+ }
fclk_rate = clk_get_rate(fclk) / 1000;
clk_put(fclk);
diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c
index 0ecdb47a23ab..174579d32e5f 100644
--- a/drivers/i2c/busses/i2c-piix4.c
+++ b/drivers/i2c/busses/i2c-piix4.c
@@ -85,6 +85,9 @@
/* SB800 constants */
#define SB800_PIIX4_SMB_IDX 0xcd6
+#define KERNCZ_IMC_IDX 0x3e
+#define KERNCZ_IMC_DATA 0x3f
+
/*
* SB800 port is selected by bits 2:1 of the smb_en register (0x2c)
* or the smb_sel register (0x2e), depending on bit 0 of register 0x2f.
@@ -94,6 +97,12 @@
#define SB800_PIIX4_PORT_IDX_ALT 0x2e
#define SB800_PIIX4_PORT_IDX_SEL 0x2f
#define SB800_PIIX4_PORT_IDX_MASK 0x06
+#define SB800_PIIX4_PORT_IDX_SHIFT 1
+
+/* On kerncz, SmBus0Sel is at bit 20:19 of PMx00 DecodeEn */
+#define SB800_PIIX4_PORT_IDX_KERNCZ 0x02
+#define SB800_PIIX4_PORT_IDX_MASK_KERNCZ 0x18
+#define SB800_PIIX4_PORT_IDX_SHIFT_KERNCZ 3
/* insmod parameters */
@@ -149,6 +158,8 @@ static const struct dmi_system_id piix4_dmi_ibm[] = {
*/
static DEFINE_MUTEX(piix4_mutex_sb800);
static u8 piix4_port_sel_sb800;
+static u8 piix4_port_mask_sb800;
+static u8 piix4_port_shift_sb800;
static const char *piix4_main_port_names_sb800[PIIX4_MAX_ADAPTERS] = {
" port 0", " port 2", " port 3", " port 4"
};
@@ -159,6 +170,7 @@ struct i2c_piix4_adapdata {
/* SB800 */
bool sb800_main;
+ bool notify_imc;
u8 port; /* Port number, shifted */
};
@@ -347,7 +359,19 @@ static int piix4_setup_sb800(struct pci_dev *PIIX4_dev,
/* Find which register is used for port selection */
if (PIIX4_dev->vendor == PCI_VENDOR_ID_AMD) {
- piix4_port_sel_sb800 = SB800_PIIX4_PORT_IDX_ALT;
+ switch (PIIX4_dev->device) {
+ case PCI_DEVICE_ID_AMD_KERNCZ_SMBUS:
+ piix4_port_sel_sb800 = SB800_PIIX4_PORT_IDX_KERNCZ;
+ piix4_port_mask_sb800 = SB800_PIIX4_PORT_IDX_MASK_KERNCZ;
+ piix4_port_shift_sb800 = SB800_PIIX4_PORT_IDX_SHIFT_KERNCZ;
+ break;
+ case PCI_DEVICE_ID_AMD_HUDSON2_SMBUS:
+ default:
+ piix4_port_sel_sb800 = SB800_PIIX4_PORT_IDX_ALT;
+ piix4_port_mask_sb800 = SB800_PIIX4_PORT_IDX_MASK;
+ piix4_port_shift_sb800 = SB800_PIIX4_PORT_IDX_SHIFT;
+ break;
+ }
} else {
mutex_lock(&piix4_mutex_sb800);
outb_p(SB800_PIIX4_PORT_IDX_SEL, SB800_PIIX4_SMB_IDX);
@@ -355,6 +379,8 @@ static int piix4_setup_sb800(struct pci_dev *PIIX4_dev,
piix4_port_sel_sb800 = (port_sel & 0x01) ?
SB800_PIIX4_PORT_IDX_ALT :
SB800_PIIX4_PORT_IDX;
+ piix4_port_mask_sb800 = SB800_PIIX4_PORT_IDX_MASK;
+ piix4_port_shift_sb800 = SB800_PIIX4_PORT_IDX_SHIFT;
mutex_unlock(&piix4_mutex_sb800);
}
@@ -572,6 +598,67 @@ static s32 piix4_access(struct i2c_adapter * adap, u16 addr,
return 0;
}
+static uint8_t piix4_imc_read(uint8_t idx)
+{
+ outb_p(idx, KERNCZ_IMC_IDX);
+ return inb_p(KERNCZ_IMC_DATA);
+}
+
+static void piix4_imc_write(uint8_t idx, uint8_t value)
+{
+ outb_p(idx, KERNCZ_IMC_IDX);
+ outb_p(value, KERNCZ_IMC_DATA);
+}
+
+static int piix4_imc_sleep(void)
+{
+ int timeout = MAX_TIMEOUT;
+
+ if (!request_muxed_region(KERNCZ_IMC_IDX, 2, "smbus_kerncz_imc"))
+ return -EBUSY;
+
+ /* clear response register */
+ piix4_imc_write(0x82, 0x00);
+ /* request ownership flag */
+ piix4_imc_write(0x83, 0xB4);
+ /* kick off IMC Mailbox command 96 */
+ piix4_imc_write(0x80, 0x96);
+
+ while (timeout--) {
+ if (piix4_imc_read(0x82) == 0xfa) {
+ release_region(KERNCZ_IMC_IDX, 2);
+ return 0;
+ }
+ usleep_range(1000, 2000);
+ }
+
+ release_region(KERNCZ_IMC_IDX, 2);
+ return -ETIMEDOUT;
+}
+
+static void piix4_imc_wakeup(void)
+{
+ int timeout = MAX_TIMEOUT;
+
+ if (!request_muxed_region(KERNCZ_IMC_IDX, 2, "smbus_kerncz_imc"))
+ return;
+
+ /* clear response register */
+ piix4_imc_write(0x82, 0x00);
+ /* release ownership flag */
+ piix4_imc_write(0x83, 0xB5);
+ /* kick off IMC Mailbox command 96 */
+ piix4_imc_write(0x80, 0x96);
+
+ while (timeout--) {
+ if (piix4_imc_read(0x82) == 0xfa)
+ break;
+ usleep_range(1000, 2000);
+ }
+
+ release_region(KERNCZ_IMC_IDX, 2);
+}
+
/*
* Handles access to multiple SMBus ports on the SB800.
* The port is selected by bits 2:1 of the smb_en register (0x2c).
@@ -612,12 +699,47 @@ static s32 piix4_access_sb800(struct i2c_adapter *adap, u16 addr,
return -EBUSY;
}
+ /*
+ * Notify the IMC (Integrated Micro Controller) if required.
+ * Among other responsibilities, the IMC is in charge of monitoring
+ * the System fans and temperature sensors, and act accordingly.
+ * All this is done through SMBus and can/will collide
+ * with our transactions if they are long (BLOCK_DATA).
+ * Therefore we need to request the ownership flag during those
+ * transactions.
+ */
+ if ((size == I2C_SMBUS_BLOCK_DATA) && adapdata->notify_imc) {
+ int ret;
+
+ ret = piix4_imc_sleep();
+ switch (ret) {
+ case -EBUSY:
+ dev_warn(&adap->dev,
+ "IMC base address index region 0x%x already in use.\n",
+ KERNCZ_IMC_IDX);
+ break;
+ case -ETIMEDOUT:
+ dev_warn(&adap->dev,
+ "Failed to communicate with the IMC.\n");
+ break;
+ default:
+ break;
+ }
+
+ /* If IMC communication fails do not retry */
+ if (ret) {
+ dev_warn(&adap->dev,
+ "Continuing without IMC notification.\n");
+ adapdata->notify_imc = false;
+ }
+ }
+
outb_p(piix4_port_sel_sb800, SB800_PIIX4_SMB_IDX);
smba_en_lo = inb_p(SB800_PIIX4_SMB_IDX + 1);
port = adapdata->port;
- if ((smba_en_lo & SB800_PIIX4_PORT_IDX_MASK) != port)
- outb_p((smba_en_lo & ~SB800_PIIX4_PORT_IDX_MASK) | port,
+ if ((smba_en_lo & piix4_port_mask_sb800) != port)
+ outb_p((smba_en_lo & ~piix4_port_mask_sb800) | port,
SB800_PIIX4_SMB_IDX + 1);
retval = piix4_access(adap, addr, flags, read_write,
@@ -628,6 +750,9 @@ static s32 piix4_access_sb800(struct i2c_adapter *adap, u16 addr,
/* Release the semaphore */
outb_p(smbslvcnt | 0x20, SMBSLVCNT);
+ if ((size == I2C_SMBUS_BLOCK_DATA) && adapdata->notify_imc)
+ piix4_imc_wakeup();
+
mutex_unlock(&piix4_mutex_sb800);
return retval;
@@ -679,7 +804,7 @@ static struct i2c_adapter *piix4_main_adapters[PIIX4_MAX_ADAPTERS];
static struct i2c_adapter *piix4_aux_adapter;
static int piix4_add_adapter(struct pci_dev *dev, unsigned short smba,
- bool sb800_main, u8 port,
+ bool sb800_main, u8 port, bool notify_imc,
const char *name, struct i2c_adapter **padap)
{
struct i2c_adapter *adap;
@@ -706,7 +831,8 @@ static int piix4_add_adapter(struct pci_dev *dev, unsigned short smba,
adapdata->smba = smba;
adapdata->sb800_main = sb800_main;
- adapdata->port = port << 1;
+ adapdata->port = port << piix4_port_shift_sb800;
+ adapdata->notify_imc = notify_imc;
/* set up the sysfs linkage to our parent device */
adap->dev.parent = &dev->dev;
@@ -728,14 +854,15 @@ static int piix4_add_adapter(struct pci_dev *dev, unsigned short smba,
return 0;
}
-static int piix4_add_adapters_sb800(struct pci_dev *dev, unsigned short smba)
+static int piix4_add_adapters_sb800(struct pci_dev *dev, unsigned short smba,
+ bool notify_imc)
{
struct i2c_piix4_adapdata *adapdata;
int port;
int retval;
for (port = 0; port < PIIX4_MAX_ADAPTERS; port++) {
- retval = piix4_add_adapter(dev, smba, true, port,
+ retval = piix4_add_adapter(dev, smba, true, port, notify_imc,
piix4_main_port_names_sb800[port],
&piix4_main_adapters[port]);
if (retval < 0)
@@ -769,6 +896,7 @@ static int piix4_probe(struct pci_dev *dev, const struct pci_device_id *id)
dev->device == PCI_DEVICE_ID_ATI_SBX00_SMBUS &&
dev->revision >= 0x40) ||
dev->vendor == PCI_VENDOR_ID_AMD) {
+ bool notify_imc = false;
is_sb800 = true;
if (!request_region(SB800_PIIX4_SMB_IDX, 2, "smba_idx")) {
@@ -778,6 +906,20 @@ static int piix4_probe(struct pci_dev *dev, const struct pci_device_id *id)
return -EBUSY;
}
+ if (dev->vendor == PCI_VENDOR_ID_AMD &&
+ dev->device == PCI_DEVICE_ID_AMD_KERNCZ_SMBUS) {
+ u8 imc;
+
+ /*
+ * Detect if IMC is active or not, this method is
+ * described on coreboot's AMD IMC notes
+ */
+ pci_bus_read_config_byte(dev->bus, PCI_DEVFN(0x14, 3),
+ 0x40, &imc);
+ if (imc & 0x80)
+ notify_imc = true;
+ }
+
/* base address location etc changed in SB800 */
retval = piix4_setup_sb800(dev, id, 0);
if (retval < 0) {
@@ -789,7 +931,7 @@ static int piix4_probe(struct pci_dev *dev, const struct pci_device_id *id)
* Try to register multiplexed main SMBus adapter,
* give up if we can't
*/
- retval = piix4_add_adapters_sb800(dev, retval);
+ retval = piix4_add_adapters_sb800(dev, retval, notify_imc);
if (retval < 0) {
release_region(SB800_PIIX4_SMB_IDX, 2);
return retval;
@@ -800,7 +942,7 @@ static int piix4_probe(struct pci_dev *dev, const struct pci_device_id *id)
return retval;
/* Try to register main SMBus adapter, give up if we can't */
- retval = piix4_add_adapter(dev, retval, false, 0, "",
+ retval = piix4_add_adapter(dev, retval, false, 0, false, "",
&piix4_main_adapters[0]);
if (retval < 0)
return retval;
@@ -827,7 +969,7 @@ static int piix4_probe(struct pci_dev *dev, const struct pci_device_id *id)
if (retval > 0) {
/* Try to add the aux adapter if it exists,
* piix4_add_adapter will clean up if this fails */
- piix4_add_adapter(dev, retval, false, 0,
+ piix4_add_adapter(dev, retval, false, 0, false,
is_sb800 ? piix4_aux_port_name_sb800 : "",
&piix4_aux_adapter);
}
diff --git a/drivers/i2c/busses/i2c-sprd.c b/drivers/i2c/busses/i2c-sprd.c
index 22e08ae1704f..25fcc3c1e32b 100644
--- a/drivers/i2c/busses/i2c-sprd.c
+++ b/drivers/i2c/busses/i2c-sprd.c
@@ -627,6 +627,7 @@ static const struct dev_pm_ops sprd_i2c_pm_ops = {
static const struct of_device_id sprd_i2c_of_match[] = {
{ .compatible = "sprd,sc9860-i2c", },
+ {},
};
static struct platform_driver sprd_i2c_driver = {
diff --git a/drivers/i2c/busses/i2c-stm32.h b/drivers/i2c/busses/i2c-stm32.h
new file mode 100644
index 000000000000..dab51761f8c5
--- /dev/null
+++ b/drivers/i2c/busses/i2c-stm32.h
@@ -0,0 +1,20 @@
+/*
+ * i2c-stm32.h
+ *
+ * Copyright (C) M'boumba Cedric Madianga 2017
+ * Author: M'boumba Cedric Madianga <cedric.madianga@gmail.com>
+ *
+ * License terms: GNU General Public License (GPL), version 2
+ */
+
+#ifndef _I2C_STM32_H
+#define _I2C_STM32_H
+
+enum stm32_i2c_speed {
+ STM32_I2C_SPEED_STANDARD, /* 100 kHz */
+ STM32_I2C_SPEED_FAST, /* 400 kHz */
+ STM32_I2C_SPEED_FAST_PLUS, /* 1 MHz */
+ STM32_I2C_SPEED_END,
+};
+
+#endif /* _I2C_STM32_H */
diff --git a/drivers/i2c/busses/i2c-stm32f4.c b/drivers/i2c/busses/i2c-stm32f4.c
index aceb6f788564..4ec108496f15 100644
--- a/drivers/i2c/busses/i2c-stm32f4.c
+++ b/drivers/i2c/busses/i2c-stm32f4.c
@@ -27,6 +27,8 @@
#include <linux/platform_device.h>
#include <linux/reset.h>
+#include "i2c-stm32.h"
+
/* STM32F4 I2C offset registers */
#define STM32F4_I2C_CR1 0x00
#define STM32F4_I2C_CR2 0x04
@@ -90,12 +92,6 @@
#define STM32F4_I2C_MAX_FREQ 46U
#define HZ_TO_MHZ 1000000
-enum stm32f4_i2c_speed {
- STM32F4_I2C_SPEED_STANDARD, /* 100 kHz */
- STM32F4_I2C_SPEED_FAST, /* 400 kHz */
- STM32F4_I2C_SPEED_END,
-};
-
/**
* struct stm32f4_i2c_msg - client specific data
* @addr: 8-bit slave addr, including r/w bit
@@ -159,7 +155,7 @@ static int stm32f4_i2c_set_periph_clk_freq(struct stm32f4_i2c_dev *i2c_dev)
i2c_dev->parent_rate = clk_get_rate(i2c_dev->clk);
freq = DIV_ROUND_UP(i2c_dev->parent_rate, HZ_TO_MHZ);
- if (i2c_dev->speed == STM32F4_I2C_SPEED_STANDARD) {
+ if (i2c_dev->speed == STM32_I2C_SPEED_STANDARD) {
/*
* To reach 100 kHz, the parent clk frequency should be between
* a minimum value of 2 MHz and a maximum value of 46 MHz due
@@ -216,7 +212,7 @@ static void stm32f4_i2c_set_rise_time(struct stm32f4_i2c_dev *i2c_dev)
* is not higher than 46 MHz . As a result trise is at most 4 bits wide
* and so fits into the TRISE bits [5:0].
*/
- if (i2c_dev->speed == STM32F4_I2C_SPEED_STANDARD)
+ if (i2c_dev->speed == STM32_I2C_SPEED_STANDARD)
trise = freq + 1;
else
trise = freq * 3 / 10 + 1;
@@ -230,7 +226,7 @@ static void stm32f4_i2c_set_speed_mode(struct stm32f4_i2c_dev *i2c_dev)
u32 val;
u32 ccr = 0;
- if (i2c_dev->speed == STM32F4_I2C_SPEED_STANDARD) {
+ if (i2c_dev->speed == STM32_I2C_SPEED_STANDARD) {
/*
* In standard mode:
* t_scl_high = t_scl_low = CCR * I2C parent clk period
@@ -808,10 +804,10 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
udelay(2);
reset_control_deassert(rst);
- i2c_dev->speed = STM32F4_I2C_SPEED_STANDARD;
+ i2c_dev->speed = STM32_I2C_SPEED_STANDARD;
ret = of_property_read_u32(np, "clock-frequency", &clk_rate);
if (!ret && clk_rate >= 400000)
- i2c_dev->speed = STM32F4_I2C_SPEED_FAST;
+ i2c_dev->speed = STM32_I2C_SPEED_FAST;
i2c_dev->dev = &pdev->dev;
diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c
new file mode 100644
index 000000000000..d4a6e9c2e9aa
--- /dev/null
+++ b/drivers/i2c/busses/i2c-stm32f7.c
@@ -0,0 +1,969 @@
+/*
+ * Driver for STMicroelectronics STM32F7 I2C controller
+ *
+ * This I2C controller is described in the STM32F75xxx and STM32F74xxx Soc
+ * reference manual.
+ * Please see below a link to the documentation:
+ * http://www.st.com/resource/en/reference_manual/dm00124865.pdf
+ *
+ * Copyright (C) M'boumba Cedric Madianga 2017
+ * Author: M'boumba Cedric Madianga <cedric.madianga@gmail.com>
+ *
+ * This driver is based on i2c-stm32f4.c
+ *
+ * License terms: GNU General Public License (GPL), version 2
+ */
+#include <linux/clk.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/interrupt.h>
+#include <linux/io.h>
+#include <linux/iopoll.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/of_irq.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/reset.h>
+#include <linux/slab.h>
+
+#include "i2c-stm32.h"
+
+/* STM32F7 I2C registers */
+#define STM32F7_I2C_CR1 0x00
+#define STM32F7_I2C_CR2 0x04
+#define STM32F7_I2C_TIMINGR 0x10
+#define STM32F7_I2C_ISR 0x18
+#define STM32F7_I2C_ICR 0x1C
+#define STM32F7_I2C_RXDR 0x24
+#define STM32F7_I2C_TXDR 0x28
+
+/* STM32F7 I2C control 1 */
+#define STM32F7_I2C_CR1_ANFOFF BIT(12)
+#define STM32F7_I2C_CR1_ERRIE BIT(7)
+#define STM32F7_I2C_CR1_TCIE BIT(6)
+#define STM32F7_I2C_CR1_STOPIE BIT(5)
+#define STM32F7_I2C_CR1_NACKIE BIT(4)
+#define STM32F7_I2C_CR1_ADDRIE BIT(3)
+#define STM32F7_I2C_CR1_RXIE BIT(2)
+#define STM32F7_I2C_CR1_TXIE BIT(1)
+#define STM32F7_I2C_CR1_PE BIT(0)
+#define STM32F7_I2C_ALL_IRQ_MASK (STM32F7_I2C_CR1_ERRIE \
+ | STM32F7_I2C_CR1_TCIE \
+ | STM32F7_I2C_CR1_STOPIE \
+ | STM32F7_I2C_CR1_NACKIE \
+ | STM32F7_I2C_CR1_RXIE \
+ | STM32F7_I2C_CR1_TXIE)
+
+/* STM32F7 I2C control 2 */
+#define STM32F7_I2C_CR2_RELOAD BIT(24)
+#define STM32F7_I2C_CR2_NBYTES_MASK GENMASK(23, 16)
+#define STM32F7_I2C_CR2_NBYTES(n) (((n) & 0xff) << 16)
+#define STM32F7_I2C_CR2_NACK BIT(15)
+#define STM32F7_I2C_CR2_STOP BIT(14)
+#define STM32F7_I2C_CR2_START BIT(13)
+#define STM32F7_I2C_CR2_RD_WRN BIT(10)
+#define STM32F7_I2C_CR2_SADD7_MASK GENMASK(7, 1)
+#define STM32F7_I2C_CR2_SADD7(n) (((n) & 0x7f) << 1)
+
+/* STM32F7 I2C Interrupt Status */
+#define STM32F7_I2C_ISR_BUSY BIT(15)
+#define STM32F7_I2C_ISR_ARLO BIT(9)
+#define STM32F7_I2C_ISR_BERR BIT(8)
+#define STM32F7_I2C_ISR_TCR BIT(7)
+#define STM32F7_I2C_ISR_TC BIT(6)
+#define STM32F7_I2C_ISR_STOPF BIT(5)
+#define STM32F7_I2C_ISR_NACKF BIT(4)
+#define STM32F7_I2C_ISR_RXNE BIT(2)
+#define STM32F7_I2C_ISR_TXIS BIT(1)
+
+/* STM32F7 I2C Interrupt Clear */
+#define STM32F7_I2C_ICR_ARLOCF BIT(9)
+#define STM32F7_I2C_ICR_BERRCF BIT(8)
+#define STM32F7_I2C_ICR_STOPCF BIT(5)
+#define STM32F7_I2C_ICR_NACKCF BIT(4)
+
+/* STM32F7 I2C Timing */
+#define STM32F7_I2C_TIMINGR_PRESC(n) (((n) & 0xf) << 28)
+#define STM32F7_I2C_TIMINGR_SCLDEL(n) (((n) & 0xf) << 20)
+#define STM32F7_I2C_TIMINGR_SDADEL(n) (((n) & 0xf) << 16)
+#define STM32F7_I2C_TIMINGR_SCLH(n) (((n) & 0xff) << 8)
+#define STM32F7_I2C_TIMINGR_SCLL(n) ((n) & 0xff)
+
+#define STM32F7_I2C_MAX_LEN 0xff
+
+#define STM32F7_I2C_DNF_DEFAULT 0
+#define STM32F7_I2C_DNF_MAX 16
+
+#define STM32F7_I2C_ANALOG_FILTER_ENABLE 1
+#define STM32F7_I2C_ANALOG_FILTER_DELAY_MIN 50 /* ns */
+#define STM32F7_I2C_ANALOG_FILTER_DELAY_MAX 260 /* ns */
+
+#define STM32F7_I2C_RISE_TIME_DEFAULT 25 /* ns */
+#define STM32F7_I2C_FALL_TIME_DEFAULT 10 /* ns */
+
+#define STM32F7_PRESC_MAX BIT(4)
+#define STM32F7_SCLDEL_MAX BIT(4)
+#define STM32F7_SDADEL_MAX BIT(4)
+#define STM32F7_SCLH_MAX BIT(8)
+#define STM32F7_SCLL_MAX BIT(8)
+
+/**
+ * struct stm32f7_i2c_spec - private i2c specification timing
+ * @rate: I2C bus speed (Hz)
+ * @rate_min: 80% of I2C bus speed (Hz)
+ * @rate_max: 100% of I2C bus speed (Hz)
+ * @fall_max: Max fall time of both SDA and SCL signals (ns)
+ * @rise_max: Max rise time of both SDA and SCL signals (ns)
+ * @hddat_min: Min data hold time (ns)
+ * @vddat_max: Max data valid time (ns)
+ * @sudat_min: Min data setup time (ns)
+ * @l_min: Min low period of the SCL clock (ns)
+ * @h_min: Min high period of the SCL clock (ns)
+ */
+struct stm32f7_i2c_spec {
+ u32 rate;
+ u32 rate_min;
+ u32 rate_max;
+ u32 fall_max;
+ u32 rise_max;
+ u32 hddat_min;
+ u32 vddat_max;
+ u32 sudat_min;
+ u32 l_min;
+ u32 h_min;
+};
+
+/**
+ * struct stm32f7_i2c_setup - private I2C timing setup parameters
+ * @speed: I2C speed mode (standard, Fast Plus)
+ * @speed_freq: I2C speed frequency (Hz)
+ * @clock_src: I2C clock source frequency (Hz)
+ * @rise_time: Rise time (ns)
+ * @fall_time: Fall time (ns)
+ * @dnf: Digital filter coefficient (0-16)
+ * @analog_filter: Analog filter delay (On/Off)
+ */
+struct stm32f7_i2c_setup {
+ enum stm32_i2c_speed speed;
+ u32 speed_freq;
+ u32 clock_src;
+ u32 rise_time;
+ u32 fall_time;
+ u8 dnf;
+ bool analog_filter;
+};
+
+/**
+ * struct stm32f7_i2c_timings - private I2C output parameters
+ * @prec: Prescaler value
+ * @scldel: Data setup time
+ * @sdadel: Data hold time
+ * @sclh: SCL high period (master mode)
+ * @sclh: SCL low period (master mode)
+ */
+struct stm32f7_i2c_timings {
+ struct list_head node;
+ u8 presc;
+ u8 scldel;
+ u8 sdadel;
+ u8 sclh;
+ u8 scll;
+};
+
+/**
+ * struct stm32f7_i2c_msg - client specific data
+ * @addr: 8-bit slave addr, including r/w bit
+ * @count: number of bytes to be transferred
+ * @buf: data buffer
+ * @result: result of the transfer
+ * @stop: last I2C msg to be sent, i.e. STOP to be generated
+ */
+struct stm32f7_i2c_msg {
+ u8 addr;
+ u32 count;
+ u8 *buf;
+ int result;
+ bool stop;
+};
+
+/**
+ * struct stm32f7_i2c_dev - private data of the controller
+ * @adap: I2C adapter for this controller
+ * @dev: device for this controller
+ * @base: virtual memory area
+ * @complete: completion of I2C message
+ * @clk: hw i2c clock
+ * @speed: I2C clock frequency of the controller. Standard, Fast or Fast+
+ * @msg: Pointer to data to be written
+ * @msg_num: number of I2C messages to be executed
+ * @msg_id: message identifiant
+ * @f7_msg: customized i2c msg for driver usage
+ * @setup: I2C timing input setup
+ * @timing: I2C computed timings
+ */
+struct stm32f7_i2c_dev {
+ struct i2c_adapter adap;
+ struct device *dev;
+ void __iomem *base;
+ struct completion complete;
+ struct clk *clk;
+ int speed;
+ struct i2c_msg *msg;
+ unsigned int msg_num;
+ unsigned int msg_id;
+ struct stm32f7_i2c_msg f7_msg;
+ struct stm32f7_i2c_setup setup;
+ struct stm32f7_i2c_timings timing;
+};
+
+/**
+ * All these values are coming from I2C Specification, Version 6.0, 4th of
+ * April 2014.
+ *
+ * Table10. Characteristics of the SDA and SCL bus lines for Standard, Fast,
+ * and Fast-mode Plus I2C-bus devices
+ */
+static struct stm32f7_i2c_spec i2c_specs[] = {
+ [STM32_I2C_SPEED_STANDARD] = {
+ .rate = 100000,
+ .rate_min = 80000,
+ .rate_max = 100000,
+ .fall_max = 300,
+ .rise_max = 1000,
+ .hddat_min = 0,
+ .vddat_max = 3450,
+ .sudat_min = 250,
+ .l_min = 4700,
+ .h_min = 4000,
+ },
+ [STM32_I2C_SPEED_FAST] = {
+ .rate = 400000,
+ .rate_min = 320000,
+ .rate_max = 400000,
+ .fall_max = 300,
+ .rise_max = 300,
+ .hddat_min = 0,
+ .vddat_max = 900,
+ .sudat_min = 100,
+ .l_min = 1300,
+ .h_min = 600,
+ },
+ [STM32_I2C_SPEED_FAST_PLUS] = {
+ .rate = 1000000,
+ .rate_min = 800000,
+ .rate_max = 1000000,
+ .fall_max = 100,
+ .rise_max = 120,
+ .hddat_min = 0,
+ .vddat_max = 450,
+ .sudat_min = 50,
+ .l_min = 500,
+ .h_min = 260,
+ },
+};
+
+static const struct stm32f7_i2c_setup stm32f7_setup = {
+ .rise_time = STM32F7_I2C_RISE_TIME_DEFAULT,
+ .fall_time = STM32F7_I2C_FALL_TIME_DEFAULT,
+ .dnf = STM32F7_I2C_DNF_DEFAULT,
+ .analog_filter = STM32F7_I2C_ANALOG_FILTER_ENABLE,
+};
+
+static inline void stm32f7_i2c_set_bits(void __iomem *reg, u32 mask)
+{
+ writel_relaxed(readl_relaxed(reg) | mask, reg);
+}
+
+static inline void stm32f7_i2c_clr_bits(void __iomem *reg, u32 mask)
+{
+ writel_relaxed(readl_relaxed(reg) & ~mask, reg);
+}
+
+static int stm32f7_i2c_compute_timing(struct stm32f7_i2c_dev *i2c_dev,
+ struct stm32f7_i2c_setup *setup,
+ struct stm32f7_i2c_timings *output)
+{
+ u32 p_prev = STM32F7_PRESC_MAX;
+ u32 i2cclk = DIV_ROUND_CLOSEST(NSEC_PER_SEC,
+ setup->clock_src);
+ u32 i2cbus = DIV_ROUND_CLOSEST(NSEC_PER_SEC,
+ setup->speed_freq);
+ u32 clk_error_prev = i2cbus;
+ u32 tsync;
+ u32 af_delay_min, af_delay_max;
+ u32 dnf_delay;
+ u32 clk_min, clk_max;
+ int sdadel_min, sdadel_max;
+ int scldel_min;
+ struct stm32f7_i2c_timings *v, *_v, *s;
+ struct list_head solutions;
+ u16 p, l, a, h;
+ int ret = 0;
+
+ if (setup->speed >= STM32_I2C_SPEED_END) {
+ dev_err(i2c_dev->dev, "speed out of bound {%d/%d}\n",
+ setup->speed, STM32_I2C_SPEED_END - 1);
+ return -EINVAL;
+ }
+
+ if ((setup->rise_time > i2c_specs[setup->speed].rise_max) ||
+ (setup->fall_time > i2c_specs[setup->speed].fall_max)) {
+ dev_err(i2c_dev->dev,
+ "timings out of bound Rise{%d>%d}/Fall{%d>%d}\n",
+ setup->rise_time, i2c_specs[setup->speed].rise_max,
+ setup->fall_time, i2c_specs[setup->speed].fall_max);
+ return -EINVAL;
+ }
+
+ if (setup->dnf > STM32F7_I2C_DNF_MAX) {
+ dev_err(i2c_dev->dev,
+ "DNF out of bound %d/%d\n",
+ setup->dnf, STM32F7_I2C_DNF_MAX);
+ return -EINVAL;
+ }
+
+ if (setup->speed_freq > i2c_specs[setup->speed].rate) {
+ dev_err(i2c_dev->dev, "ERROR: Freq {%d/%d}\n",
+ setup->speed_freq, i2c_specs[setup->speed].rate);
+ return -EINVAL;
+ }
+
+ /* Analog and Digital Filters */
+ af_delay_min =
+ (setup->analog_filter ?
+ STM32F7_I2C_ANALOG_FILTER_DELAY_MIN : 0);
+ af_delay_max =
+ (setup->analog_filter ?
+ STM32F7_I2C_ANALOG_FILTER_DELAY_MAX : 0);
+ dnf_delay = setup->dnf * i2cclk;
+
+ sdadel_min = setup->fall_time - i2c_specs[setup->speed].hddat_min -
+ af_delay_min - (setup->dnf + 3) * i2cclk;
+
+ sdadel_max = i2c_specs[setup->speed].vddat_max - setup->rise_time -
+ af_delay_max - (setup->dnf + 4) * i2cclk;
+
+ scldel_min = setup->rise_time + i2c_specs[setup->speed].sudat_min;
+
+ if (sdadel_min < 0)
+ sdadel_min = 0;
+ if (sdadel_max < 0)
+ sdadel_max = 0;
+
+ dev_dbg(i2c_dev->dev, "SDADEL(min/max): %i/%i, SCLDEL(Min): %i\n",
+ sdadel_min, sdadel_max, scldel_min);
+
+ INIT_LIST_HEAD(&solutions);
+ /* Compute possible values for PRESC, SCLDEL and SDADEL */
+ for (p = 0; p < STM32F7_PRESC_MAX; p++) {
+ for (l = 0; l < STM32F7_SCLDEL_MAX; l++) {
+ u32 scldel = (l + 1) * (p + 1) * i2cclk;
+
+ if (scldel < scldel_min)
+ continue;
+
+ for (a = 0; a < STM32F7_SDADEL_MAX; a++) {
+ u32 sdadel = (a * (p + 1) + 1) * i2cclk;
+
+ if (((sdadel >= sdadel_min) &&
+ (sdadel <= sdadel_max)) &&
+ (p != p_prev)) {
+ v = kmalloc(sizeof(*v), GFP_KERNEL);
+ if (!v) {
+ ret = -ENOMEM;
+ goto exit;
+ }
+
+ v->presc = p;
+ v->scldel = l;
+ v->sdadel = a;
+ p_prev = p;
+
+ list_add_tail(&v->node,
+ &solutions);
+ }
+ }
+ }
+ }
+
+ if (list_empty(&solutions)) {
+ dev_err(i2c_dev->dev, "no Prescaler solution\n");
+ ret = -EPERM;
+ goto exit;
+ }
+
+ tsync = af_delay_min + dnf_delay + (2 * i2cclk);
+ s = NULL;
+ clk_max = NSEC_PER_SEC / i2c_specs[setup->speed].rate_min;
+ clk_min = NSEC_PER_SEC / i2c_specs[setup->speed].rate_max;
+
+ /*
+ * Among Prescaler possibilities discovered above figures out SCL Low
+ * and High Period. Provided:
+ * - SCL Low Period has to be higher than SCL Clock Low Period
+ * defined by I2C Specification. I2C Clock has to be lower than
+ * (SCL Low Period - Analog/Digital filters) / 4.
+ * - SCL High Period has to be lower than SCL Clock High Period
+ * defined by I2C Specification
+ * - I2C Clock has to be lower than SCL High Period
+ */
+ list_for_each_entry(v, &solutions, node) {
+ u32 prescaler = (v->presc + 1) * i2cclk;
+
+ for (l = 0; l < STM32F7_SCLL_MAX; l++) {
+ u32 tscl_l = (l + 1) * prescaler + tsync;
+
+ if ((tscl_l < i2c_specs[setup->speed].l_min) ||
+ (i2cclk >=
+ ((tscl_l - af_delay_min - dnf_delay) / 4))) {
+ continue;
+ }
+
+ for (h = 0; h < STM32F7_SCLH_MAX; h++) {
+ u32 tscl_h = (h + 1) * prescaler + tsync;
+ u32 tscl = tscl_l + tscl_h +
+ setup->rise_time + setup->fall_time;
+
+ if ((tscl >= clk_min) && (tscl <= clk_max) &&
+ (tscl_h >= i2c_specs[setup->speed].h_min) &&
+ (i2cclk < tscl_h)) {
+ int clk_error = tscl - i2cbus;
+
+ if (clk_error < 0)
+ clk_error = -clk_error;
+
+ if (clk_error < clk_error_prev) {
+ clk_error_prev = clk_error;
+ v->scll = l;
+ v->sclh = h;
+ s = v;
+ }
+ }
+ }
+ }
+ }
+
+ if (!s) {
+ dev_err(i2c_dev->dev, "no solution at all\n");
+ ret = -EPERM;
+ goto exit;
+ }
+
+ output->presc = s->presc;
+ output->scldel = s->scldel;
+ output->sdadel = s->sdadel;
+ output->scll = s->scll;
+ output->sclh = s->sclh;
+
+ dev_dbg(i2c_dev->dev,
+ "Presc: %i, scldel: %i, sdadel: %i, scll: %i, sclh: %i\n",
+ output->presc,
+ output->scldel, output->sdadel,
+ output->scll, output->sclh);
+
+exit:
+ /* Release list and memory */
+ list_for_each_entry_safe(v, _v, &solutions, node) {
+ list_del(&v->node);
+ kfree(v);
+ }
+
+ return ret;
+}
+
+static int stm32f7_i2c_setup_timing(struct stm32f7_i2c_dev *i2c_dev,
+ struct stm32f7_i2c_setup *setup)
+{
+ int ret = 0;
+
+ setup->speed = i2c_dev->speed;
+ setup->speed_freq = i2c_specs[setup->speed].rate;
+ setup->clock_src = clk_get_rate(i2c_dev->clk);
+
+ if (!setup->clock_src) {
+ dev_err(i2c_dev->dev, "clock rate is 0\n");
+ return -EINVAL;
+ }
+
+ do {
+ ret = stm32f7_i2c_compute_timing(i2c_dev, setup,
+ &i2c_dev->timing);
+ if (ret) {
+ dev_err(i2c_dev->dev,
+ "failed to compute I2C timings.\n");
+ if (i2c_dev->speed > STM32_I2C_SPEED_STANDARD) {
+ i2c_dev->speed--;
+ setup->speed = i2c_dev->speed;
+ setup->speed_freq =
+ i2c_specs[setup->speed].rate;
+ dev_warn(i2c_dev->dev,
+ "downgrade I2C Speed Freq to (%i)\n",
+ i2c_specs[setup->speed].rate);
+ } else {
+ break;
+ }
+ }
+ } while (ret);
+
+ if (ret) {
+ dev_err(i2c_dev->dev, "Impossible to compute I2C timings.\n");
+ return ret;
+ }
+
+ dev_dbg(i2c_dev->dev, "I2C Speed(%i), Freq(%i), Clk Source(%i)\n",
+ setup->speed, setup->speed_freq, setup->clock_src);
+ dev_dbg(i2c_dev->dev, "I2C Rise(%i) and Fall(%i) Time\n",
+ setup->rise_time, setup->fall_time);
+ dev_dbg(i2c_dev->dev, "I2C Analog Filter(%s), DNF(%i)\n",
+ (setup->analog_filter ? "On" : "Off"), setup->dnf);
+
+ return 0;
+}
+
+static void stm32f7_i2c_hw_config(struct stm32f7_i2c_dev *i2c_dev)
+{
+ struct stm32f7_i2c_timings *t = &i2c_dev->timing;
+ u32 timing = 0;
+
+ /* Timing settings */
+ timing |= STM32F7_I2C_TIMINGR_PRESC(t->presc);
+ timing |= STM32F7_I2C_TIMINGR_SCLDEL(t->scldel);
+ timing |= STM32F7_I2C_TIMINGR_SDADEL(t->sdadel);
+ timing |= STM32F7_I2C_TIMINGR_SCLH(t->sclh);
+ timing |= STM32F7_I2C_TIMINGR_SCLL(t->scll);
+ writel_relaxed(timing, i2c_dev->base + STM32F7_I2C_TIMINGR);
+
+ /* Enable I2C */
+ if (i2c_dev->setup.analog_filter)
+ stm32f7_i2c_clr_bits(i2c_dev->base + STM32F7_I2C_CR1,
+ STM32F7_I2C_CR1_ANFOFF);
+ else
+ stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1,
+ STM32F7_I2C_CR1_ANFOFF);
+ stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1,
+ STM32F7_I2C_CR1_PE);
+}
+
+static void stm32f7_i2c_write_tx_data(struct stm32f7_i2c_dev *i2c_dev)
+{
+ struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg;
+ void __iomem *base = i2c_dev->base;
+
+ if (f7_msg->count) {
+ writeb_relaxed(*f7_msg->buf++, base + STM32F7_I2C_TXDR);
+ f7_msg->count--;
+ }
+}
+
+static void stm32f7_i2c_read_rx_data(struct stm32f7_i2c_dev *i2c_dev)
+{
+ struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg;
+ void __iomem *base = i2c_dev->base;
+
+ if (f7_msg->count) {
+ *f7_msg->buf++ = readb_relaxed(base + STM32F7_I2C_RXDR);
+ f7_msg->count--;
+ }
+}
+
+static void stm32f7_i2c_reload(struct stm32f7_i2c_dev *i2c_dev)
+{
+ struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg;
+ u32 cr2;
+
+ cr2 = readl_relaxed(i2c_dev->base + STM32F7_I2C_CR2);
+
+ cr2 &= ~STM32F7_I2C_CR2_NBYTES_MASK;
+ if (f7_msg->count > STM32F7_I2C_MAX_LEN) {
+ cr2 |= STM32F7_I2C_CR2_NBYTES(STM32F7_I2C_MAX_LEN);
+ } else {
+ cr2 &= ~STM32F7_I2C_CR2_RELOAD;
+ cr2 |= STM32F7_I2C_CR2_NBYTES(f7_msg->count);
+ }
+
+ writel_relaxed(cr2, i2c_dev->base + STM32F7_I2C_CR2);
+}
+
+static int stm32f7_i2c_wait_free_bus(struct stm32f7_i2c_dev *i2c_dev)
+{
+ u32 status;
+ int ret;
+
+ ret = readl_relaxed_poll_timeout(i2c_dev->base + STM32F7_I2C_ISR,
+ status,
+ !(status & STM32F7_I2C_ISR_BUSY),
+ 10, 1000);
+ if (ret) {
+ dev_dbg(i2c_dev->dev, "bus busy\n");
+ ret = -EBUSY;
+ }
+
+ return ret;
+}
+
+static void stm32f7_i2c_xfer_msg(struct stm32f7_i2c_dev *i2c_dev,
+ struct i2c_msg *msg)
+{
+ struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg;
+ void __iomem *base = i2c_dev->base;
+ u32 cr1, cr2;
+
+ f7_msg->addr = msg->addr;
+ f7_msg->buf = msg->buf;
+ f7_msg->count = msg->len;
+ f7_msg->result = 0;
+ f7_msg->stop = (i2c_dev->msg_id >= i2c_dev->msg_num - 1);
+
+ reinit_completion(&i2c_dev->complete);
+
+ cr1 = readl_relaxed(base + STM32F7_I2C_CR1);
+ cr2 = readl_relaxed(base + STM32F7_I2C_CR2);
+
+ /* Set transfer direction */
+ cr2 &= ~STM32F7_I2C_CR2_RD_WRN;
+ if (msg->flags & I2C_M_RD)
+ cr2 |= STM32F7_I2C_CR2_RD_WRN;
+
+ /* Set slave address */
+ cr2 &= ~STM32F7_I2C_CR2_SADD7_MASK;
+ cr2 |= STM32F7_I2C_CR2_SADD7(f7_msg->addr);
+
+ /* Set nb bytes to transfer and reload if needed */
+ cr2 &= ~(STM32F7_I2C_CR2_NBYTES_MASK | STM32F7_I2C_CR2_RELOAD);
+ if (f7_msg->count > STM32F7_I2C_MAX_LEN) {
+ cr2 |= STM32F7_I2C_CR2_NBYTES(STM32F7_I2C_MAX_LEN);
+ cr2 |= STM32F7_I2C_CR2_RELOAD;
+ } else {
+ cr2 |= STM32F7_I2C_CR2_NBYTES(f7_msg->count);
+ }
+
+ /* Enable NACK, STOP, error and transfer complete interrupts */
+ cr1 |= STM32F7_I2C_CR1_ERRIE | STM32F7_I2C_CR1_TCIE |
+ STM32F7_I2C_CR1_STOPIE | STM32F7_I2C_CR1_NACKIE;
+
+ /* Clear TX/RX interrupt */
+ cr1 &= ~(STM32F7_I2C_CR1_RXIE | STM32F7_I2C_CR1_TXIE);
+
+ /* Enable RX/TX interrupt according to msg direction */
+ if (msg->flags & I2C_M_RD)
+ cr1 |= STM32F7_I2C_CR1_RXIE;
+ else
+ cr1 |= STM32F7_I2C_CR1_TXIE;
+
+ /* Configure Start/Repeated Start */
+ cr2 |= STM32F7_I2C_CR2_START;
+
+ /* Write configurations registers */
+ writel_relaxed(cr1, base + STM32F7_I2C_CR1);
+ writel_relaxed(cr2, base + STM32F7_I2C_CR2);
+}
+
+static void stm32f7_i2c_disable_irq(struct stm32f7_i2c_dev *i2c_dev, u32 mask)
+{
+ stm32f7_i2c_clr_bits(i2c_dev->base + STM32F7_I2C_CR1, mask);
+}
+
+static irqreturn_t stm32f7_i2c_isr_event(int irq, void *data)
+{
+ struct stm32f7_i2c_dev *i2c_dev = data;
+ struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg;
+ void __iomem *base = i2c_dev->base;
+ u32 status, mask;
+
+ status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR);
+
+ /* Tx empty */
+ if (status & STM32F7_I2C_ISR_TXIS)
+ stm32f7_i2c_write_tx_data(i2c_dev);
+
+ /* RX not empty */
+ if (status & STM32F7_I2C_ISR_RXNE)
+ stm32f7_i2c_read_rx_data(i2c_dev);
+
+ /* NACK received */
+ if (status & STM32F7_I2C_ISR_NACKF) {
+ dev_dbg(i2c_dev->dev, "<%s>: Receive NACK\n", __func__);
+ writel_relaxed(STM32F7_I2C_ICR_NACKCF, base + STM32F7_I2C_ICR);
+ f7_msg->result = -ENXIO;
+ }
+
+ /* STOP detection flag */
+ if (status & STM32F7_I2C_ISR_STOPF) {
+ /* Disable interrupts */
+ stm32f7_i2c_disable_irq(i2c_dev, STM32F7_I2C_ALL_IRQ_MASK);
+
+ /* Clear STOP flag */
+ writel_relaxed(STM32F7_I2C_ICR_STOPCF, base + STM32F7_I2C_ICR);
+
+ complete(&i2c_dev->complete);
+ }
+
+ /* Transfer complete */
+ if (status & STM32F7_I2C_ISR_TC) {
+ if (f7_msg->stop) {
+ mask = STM32F7_I2C_CR2_STOP;
+ stm32f7_i2c_set_bits(base + STM32F7_I2C_CR2, mask);
+ } else {
+ i2c_dev->msg_id++;
+ i2c_dev->msg++;
+ stm32f7_i2c_xfer_msg(i2c_dev, i2c_dev->msg);
+ }
+ }
+
+ /*
+ * Transfer Complete Reload: 255 data bytes have been transferred
+ * We have to prepare the I2C controller to transfer the remaining
+ * data.
+ */
+ if (status & STM32F7_I2C_ISR_TCR)
+ stm32f7_i2c_reload(i2c_dev);
+
+ return IRQ_HANDLED;
+}
+
+static irqreturn_t stm32f7_i2c_isr_error(int irq, void *data)
+{
+ struct stm32f7_i2c_dev *i2c_dev = data;
+ struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg;
+ void __iomem *base = i2c_dev->base;
+ struct device *dev = i2c_dev->dev;
+ u32 status;
+
+ status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR);
+
+ /* Bus error */
+ if (status & STM32F7_I2C_ISR_BERR) {
+ dev_err(dev, "<%s>: Bus error\n", __func__);
+ writel_relaxed(STM32F7_I2C_ICR_BERRCF, base + STM32F7_I2C_ICR);
+ f7_msg->result = -EIO;
+ }
+
+ /* Arbitration loss */
+ if (status & STM32F7_I2C_ISR_ARLO) {
+ dev_dbg(dev, "<%s>: Arbitration loss\n", __func__);
+ writel_relaxed(STM32F7_I2C_ICR_ARLOCF, base + STM32F7_I2C_ICR);
+ f7_msg->result = -EAGAIN;
+ }
+
+ stm32f7_i2c_disable_irq(i2c_dev, STM32F7_I2C_ALL_IRQ_MASK);
+
+ complete(&i2c_dev->complete);
+
+ return IRQ_HANDLED;
+}
+
+static int stm32f7_i2c_xfer(struct i2c_adapter *i2c_adap,
+ struct i2c_msg msgs[], int num)
+{
+ struct stm32f7_i2c_dev *i2c_dev = i2c_get_adapdata(i2c_adap);
+ struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg;
+ unsigned long time_left;
+ int ret;
+
+ i2c_dev->msg = msgs;
+ i2c_dev->msg_num = num;
+ i2c_dev->msg_id = 0;
+
+ ret = clk_enable(i2c_dev->clk);
+ if (ret) {
+ dev_err(i2c_dev->dev, "Failed to enable clock\n");
+ return ret;
+ }
+
+ ret = stm32f7_i2c_wait_free_bus(i2c_dev);
+ if (ret)
+ goto clk_free;
+
+ stm32f7_i2c_xfer_msg(i2c_dev, msgs);
+
+ time_left = wait_for_completion_timeout(&i2c_dev->complete,
+ i2c_dev->adap.timeout);
+ ret = f7_msg->result;
+
+ if (!time_left) {
+ dev_dbg(i2c_dev->dev, "Access to slave 0x%x timed out\n",
+ i2c_dev->msg->addr);
+ ret = -ETIMEDOUT;
+ }
+
+clk_free:
+ clk_disable(i2c_dev->clk);
+
+ return (ret < 0) ? ret : num;
+}
+
+static u32 stm32f7_i2c_func(struct i2c_adapter *adap)
+{
+ return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
+}
+
+static struct i2c_algorithm stm32f7_i2c_algo = {
+ .master_xfer = stm32f7_i2c_xfer,
+ .functionality = stm32f7_i2c_func,
+};
+
+static int stm32f7_i2c_probe(struct platform_device *pdev)
+{
+ struct device_node *np = pdev->dev.of_node;
+ struct stm32f7_i2c_dev *i2c_dev;
+ const struct stm32f7_i2c_setup *setup;
+ struct resource *res;
+ u32 irq_error, irq_event, clk_rate, rise_time, fall_time;
+ struct i2c_adapter *adap;
+ struct reset_control *rst;
+ int ret;
+
+ i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL);
+ if (!i2c_dev)
+ return -ENOMEM;
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ i2c_dev->base = devm_ioremap_resource(&pdev->dev, res);
+ if (IS_ERR(i2c_dev->base))
+ return PTR_ERR(i2c_dev->base);
+
+ irq_event = irq_of_parse_and_map(np, 0);
+ if (!irq_event) {
+ dev_err(&pdev->dev, "IRQ event missing or invalid\n");
+ return -EINVAL;
+ }
+
+ irq_error = irq_of_parse_and_map(np, 1);
+ if (!irq_error) {
+ dev_err(&pdev->dev, "IRQ error missing or invalid\n");
+ return -EINVAL;
+ }
+
+ i2c_dev->clk = devm_clk_get(&pdev->dev, NULL);
+ if (IS_ERR(i2c_dev->clk)) {
+ dev_err(&pdev->dev, "Error: Missing controller clock\n");
+ return PTR_ERR(i2c_dev->clk);
+ }
+ ret = clk_prepare_enable(i2c_dev->clk);
+ if (ret) {
+ dev_err(&pdev->dev, "Failed to prepare_enable clock\n");
+ return ret;
+ }
+
+ i2c_dev->speed = STM32_I2C_SPEED_STANDARD;
+ ret = device_property_read_u32(&pdev->dev, "clock-frequency",
+ &clk_rate);
+ if (!ret && clk_rate >= 1000000)
+ i2c_dev->speed = STM32_I2C_SPEED_FAST_PLUS;
+ else if (!ret && clk_rate >= 400000)
+ i2c_dev->speed = STM32_I2C_SPEED_FAST;
+ else if (!ret && clk_rate >= 100000)
+ i2c_dev->speed = STM32_I2C_SPEED_STANDARD;
+
+ rst = devm_reset_control_get(&pdev->dev, NULL);
+ if (IS_ERR(rst)) {
+ dev_err(&pdev->dev, "Error: Missing controller reset\n");
+ ret = PTR_ERR(rst);
+ goto clk_free;
+ }
+ reset_control_assert(rst);
+ udelay(2);
+ reset_control_deassert(rst);
+
+ i2c_dev->dev = &pdev->dev;
+
+ ret = devm_request_irq(&pdev->dev, irq_event, stm32f7_i2c_isr_event, 0,
+ pdev->name, i2c_dev);
+ if (ret) {
+ dev_err(&pdev->dev, "Failed to request irq event %i\n",
+ irq_event);
+ goto clk_free;
+ }
+
+ ret = devm_request_irq(&pdev->dev, irq_error, stm32f7_i2c_isr_error, 0,
+ pdev->name, i2c_dev);
+ if (ret) {
+ dev_err(&pdev->dev, "Failed to request irq error %i\n",
+ irq_error);
+ goto clk_free;
+ }
+
+ setup = of_device_get_match_data(&pdev->dev);
+ i2c_dev->setup = *setup;
+
+ ret = device_property_read_u32(i2c_dev->dev, "i2c-scl-rising-time-ns",
+ &rise_time);
+ if (!ret)
+ i2c_dev->setup.rise_time = rise_time;
+
+ ret = device_property_read_u32(i2c_dev->dev, "i2c-scl-falling-time-ns",
+ &fall_time);
+ if (!ret)
+ i2c_dev->setup.fall_time = fall_time;
+
+ ret = stm32f7_i2c_setup_timing(i2c_dev, &i2c_dev->setup);
+ if (ret)
+ goto clk_free;
+
+ stm32f7_i2c_hw_config(i2c_dev);
+
+ adap = &i2c_dev->adap;
+ i2c_set_adapdata(adap, i2c_dev);
+ snprintf(adap->name, sizeof(adap->name), "STM32F7 I2C(%pa)",
+ &res->start);
+ adap->owner = THIS_MODULE;
+ adap->timeout = 2 * HZ;
+ adap->retries = 3;
+ adap->algo = &stm32f7_i2c_algo;
+ adap->dev.parent = &pdev->dev;
+ adap->dev.of_node = pdev->dev.of_node;
+
+ init_completion(&i2c_dev->complete);
+
+ ret = i2c_add_adapter(adap);
+ if (ret)
+ goto clk_free;
+
+ platform_set_drvdata(pdev, i2c_dev);
+
+ clk_disable(i2c_dev->clk);
+
+ dev_info(i2c_dev->dev, "STM32F7 I2C-%d bus adapter\n", adap->nr);
+
+ return 0;
+
+clk_free:
+ clk_disable_unprepare(i2c_dev->clk);
+
+ return ret;
+}
+
+static int stm32f7_i2c_remove(struct platform_device *pdev)
+{
+ struct stm32f7_i2c_dev *i2c_dev = platform_get_drvdata(pdev);
+
+ i2c_del_adapter(&i2c_dev->adap);
+
+ clk_unprepare(i2c_dev->clk);
+
+ return 0;
+}
+
+static const struct of_device_id stm32f7_i2c_match[] = {
+ { .compatible = "st,stm32f7-i2c", .data = &stm32f7_setup},
+ {},
+};
+MODULE_DEVICE_TABLE(of, stm32f7_i2c_match);
+
+static struct platform_driver stm32f7_i2c_driver = {
+ .driver = {
+ .name = "stm32f7-i2c",
+ .of_match_table = stm32f7_i2c_match,
+ },
+ .probe = stm32f7_i2c_probe,
+ .remove = stm32f7_i2c_remove,
+};
+
+module_platform_driver(stm32f7_i2c_driver);
+
+MODULE_AUTHOR("M'boumba Cedric Madianga <cedric.madianga@gmail.com>");
+MODULE_DESCRIPTION("STMicroelectronics STM32F7 I2C driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/i2c/muxes/Makefile b/drivers/i2c/muxes/Makefile
index 4a67d3199877..6d9d865e8518 100644
--- a/drivers/i2c/muxes/Makefile
+++ b/drivers/i2c/muxes/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for multiplexer I2C chip drivers.
diff --git a/drivers/ide/Makefile b/drivers/ide/Makefile
index 2a8c417d4081..9f617a77970f 100644
--- a/drivers/ide/Makefile
+++ b/drivers/ide/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# link order is important here
#
diff --git a/drivers/ide/ide-acpi.c b/drivers/ide/ide-acpi.c
index 968038482d2f..7d4e5c08f133 100644
--- a/drivers/ide/ide-acpi.c
+++ b/drivers/ide/ide-acpi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Provides ACPI support for IDE drives.
*
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 81e18f9628d0..a7355ab3bb22 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -1328,6 +1328,7 @@ static int ide_cdrom_prep_fs(struct request_queue *q, struct request *rq)
unsigned long blocks = blk_rq_sectors(rq) / (hard_sect >> 9);
struct scsi_request *req = scsi_req(rq);
+ scsi_req_init(req);
memset(req->cmd, 0, BLK_MAX_CDB);
if (rq_data_dir(rq) == READ)
diff --git a/drivers/ide/ide-cd.h b/drivers/ide/ide-cd.h
index eea60c986c4f..264e822eba58 100644
--- a/drivers/ide/ide-cd.h
+++ b/drivers/ide/ide-cd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1996-98 Erik Andersen
* Copyright (C) 1998-2000 Jens Axboe
diff --git a/drivers/ide/ide-cd_ioctl.c b/drivers/ide/ide-cd_ioctl.c
index 9d26c9737e21..2acca12b9c94 100644
--- a/drivers/ide/ide-cd_ioctl.c
+++ b/drivers/ide/ide-cd_ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* cdrom.c IOCTLs handling for ide-cd driver.
*
diff --git a/drivers/ide/ide-cd_verbose.c b/drivers/ide/ide-cd_verbose.c
index 58a6feb74c02..5ecd5b2f03a3 100644
--- a/drivers/ide/ide-cd_verbose.c
+++ b/drivers/ide/ide-cd_verbose.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Verbose error logging for ATAPI CD/DVD devices.
*
diff --git a/drivers/ide/ide-devsets.c b/drivers/ide/ide-devsets.c
index ef7c8c43a380..4e20747af32e 100644
--- a/drivers/ide/ide-devsets.c
+++ b/drivers/ide/ide-devsets.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/gfp.h>
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index 241983da5fc4..188d1b03715d 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1994-1998 Linus Torvalds & authors (see below)
* Copyright (C) 1998-2002 Linux ATA Development
diff --git a/drivers/ide/ide-disk.h b/drivers/ide/ide-disk.h
index d511dab7c4aa..0e8cc18bfda6 100644
--- a/drivers/ide/ide-disk.h
+++ b/drivers/ide/ide-disk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IDE_DISK_H
#define __IDE_DISK_H
diff --git a/drivers/ide/ide-disk_ioctl.c b/drivers/ide/ide-disk_ioctl.c
index da36f729ff32..2c45616cff4f 100644
--- a/drivers/ide/ide-disk_ioctl.c
+++ b/drivers/ide/ide-disk_ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/ide.h>
#include <linux/hdreg.h>
diff --git a/drivers/ide/ide-disk_proc.c b/drivers/ide/ide-disk_proc.c
index 0d1fae6cba6d..82a36ced4e96 100644
--- a/drivers/ide/ide-disk_proc.c
+++ b/drivers/ide/ide-disk_proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/ide.h>
#include <linux/slab.h>
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
index 3ddd88219906..5bd2aafc3753 100644
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IDE ATAPI floppy driver.
*
diff --git a/drivers/ide/ide-floppy.h b/drivers/ide/ide-floppy.h
index 6dd2beb48434..13c9b4b6d75e 100644
--- a/drivers/ide/ide-floppy.h
+++ b/drivers/ide/ide-floppy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IDE_FLOPPY_H
#define __IDE_FLOPPY_H
diff --git a/drivers/ide/ide-floppy_ioctl.c b/drivers/ide/ide-floppy_ioctl.c
index a22ca8467010..40a2ebe34e1d 100644
--- a/drivers/ide/ide-floppy_ioctl.c
+++ b/drivers/ide/ide-floppy_ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ide-floppy IOCTLs handling.
*/
diff --git a/drivers/ide/ide-floppy_proc.c b/drivers/ide/ide-floppy_proc.c
index e7a25ea757df..471457ebea67 100644
--- a/drivers/ide/ide-floppy_proc.c
+++ b/drivers/ide/ide-floppy_proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/export.h>
#include <linux/ide.h>
diff --git a/drivers/ide/ide-gd.h b/drivers/ide/ide-gd.h
index 55970772bd04..af3fe1880e9e 100644
--- a/drivers/ide/ide-gd.h
+++ b/drivers/ide/ide-gd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IDE_GD_H
#define __IDE_GD_H
diff --git a/drivers/ide/ide-park.c b/drivers/ide/ide-park.c
index 1f264d5d3f3f..6465bcc7cea6 100644
--- a/drivers/ide/ide-park.c
+++ b/drivers/ide/ide-park.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/gfp.h>
#include <linux/ide.h>
diff --git a/drivers/ide/ide-pio-blacklist.c b/drivers/ide/ide-pio-blacklist.c
index 40e683a84ff9..1fd24798e5c9 100644
--- a/drivers/ide/ide-pio-blacklist.c
+++ b/drivers/ide/ide-pio-blacklist.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PIO blacklist. Some drives incorrectly report their maximal PIO mode,
* at least in respect to CMD640. Here we keep info on some known drives.
diff --git a/drivers/ide/ide-pm.c b/drivers/ide/ide-pm.c
index 544f02d673ca..dccdca9eda38 100644
--- a/drivers/ide/ide-pm.c
+++ b/drivers/ide/ide-pm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/gfp.h>
#include <linux/ide.h>
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 01b2adfd8226..eaf39e5db08b 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -1451,6 +1451,7 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d,
if (hwif_init(hwif) == 0) {
printk(KERN_INFO "%s: failed to initialize IDE "
"interface\n", hwif->name);
+ device_unregister(hwif->portdev);
device_unregister(&hwif->gendev);
ide_disable_port(hwif);
continue;
diff --git a/drivers/ide/ide-scan-pci.c b/drivers/ide/ide-scan-pci.c
index 86aa88aeb3a6..acf874800ca4 100644
--- a/drivers/ide/ide-scan-pci.c
+++ b/drivers/ide/ide-scan-pci.c
@@ -56,6 +56,7 @@ static int __init ide_scan_pcidev(struct pci_dev *dev)
{
struct list_head *l;
struct pci_driver *d;
+ int ret;
list_for_each(l, &ide_pci_drivers) {
d = list_entry(l, struct pci_driver, node);
@@ -63,10 +64,14 @@ static int __init ide_scan_pcidev(struct pci_dev *dev)
const struct pci_device_id *id =
pci_match_id(d->id_table, dev);
- if (id != NULL && d->probe(dev, id) >= 0) {
- dev->driver = d;
- pci_dev_get(dev);
- return 1;
+ if (id != NULL) {
+ pci_assign_irq(dev);
+ ret = d->probe(dev, id);
+ if (ret >= 0) {
+ dev->driver = d;
+ pci_dev_get(dev);
+ return 1;
+ }
}
}
}
diff --git a/drivers/ide/ide-sysfs.c b/drivers/ide/ide-sysfs.c
index 84a6a9e08d64..b9dfeb2e8bd6 100644
--- a/drivers/ide/ide-sysfs.c
+++ b/drivers/ide/ide-sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/ide.h>
diff --git a/drivers/ide/qd65xx.h b/drivers/ide/qd65xx.h
index 1fba2a5f281c..01a43ab45e0e 100644
--- a/drivers/ide/qd65xx.h
+++ b/drivers/ide/qd65xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2000 Linus Torvalds & authors
*/
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c
index 112d2fe1bcdb..fdc8e813170c 100644
--- a/drivers/ide/setup-pci.c
+++ b/drivers/ide/setup-pci.c
@@ -179,6 +179,7 @@ EXPORT_SYMBOL_GPL(ide_setup_pci_noise);
/**
* ide_pci_enable - do PCI enables
* @dev: PCI device
+ * @bars: PCI BARs mask
* @d: IDE port info
*
* Enable the IDE PCI device. We attempt to enable the device in full
@@ -189,9 +190,10 @@ EXPORT_SYMBOL_GPL(ide_setup_pci_noise);
* Returns zero on success or an error code
*/
-static int ide_pci_enable(struct pci_dev *dev, const struct ide_port_info *d)
+static int ide_pci_enable(struct pci_dev *dev, int bars,
+ const struct ide_port_info *d)
{
- int ret, bars;
+ int ret;
if (pci_enable_device(dev)) {
ret = pci_enable_device_io(dev);
@@ -216,18 +218,6 @@ static int ide_pci_enable(struct pci_dev *dev, const struct ide_port_info *d)
goto out;
}
- if (d->host_flags & IDE_HFLAG_SINGLE)
- bars = (1 << 2) - 1;
- else
- bars = (1 << 4) - 1;
-
- if ((d->host_flags & IDE_HFLAG_NO_DMA) == 0) {
- if (d->host_flags & IDE_HFLAG_CS5520)
- bars |= (1 << 2);
- else
- bars |= (1 << 4);
- }
-
ret = pci_request_selected_regions(dev, bars, d->name);
if (ret < 0)
printk(KERN_ERR "%s %s: can't reserve resources\n",
@@ -403,6 +393,7 @@ int ide_hwif_setup_dma(ide_hwif_t *hwif, const struct ide_port_info *d)
/**
* ide_setup_pci_controller - set up IDE PCI
* @dev: PCI device
+ * @bars: PCI BARs mask
* @d: IDE port info
* @noisy: verbose flag
*
@@ -411,7 +402,7 @@ int ide_hwif_setup_dma(ide_hwif_t *hwif, const struct ide_port_info *d)
* and enables it if need be
*/
-static int ide_setup_pci_controller(struct pci_dev *dev,
+static int ide_setup_pci_controller(struct pci_dev *dev, int bars,
const struct ide_port_info *d, int noisy)
{
int ret;
@@ -420,7 +411,7 @@ static int ide_setup_pci_controller(struct pci_dev *dev,
if (noisy)
ide_setup_pci_noise(dev, d);
- ret = ide_pci_enable(dev, d);
+ ret = ide_pci_enable(dev, bars, d);
if (ret < 0)
goto out;
@@ -428,16 +419,20 @@ static int ide_setup_pci_controller(struct pci_dev *dev,
if (ret < 0) {
printk(KERN_ERR "%s %s: error accessing PCI regs\n",
d->name, pci_name(dev));
- goto out;
+ goto out_free_bars;
}
if (!(pcicmd & PCI_COMMAND_IO)) { /* is device disabled? */
ret = ide_pci_configure(dev, d);
if (ret < 0)
- goto out;
+ goto out_free_bars;
printk(KERN_INFO "%s %s: device enabled (Linux)\n",
d->name, pci_name(dev));
}
+ goto out;
+
+out_free_bars:
+ pci_release_selected_regions(dev, bars);
out:
return ret;
}
@@ -540,13 +535,28 @@ int ide_pci_init_two(struct pci_dev *dev1, struct pci_dev *dev2,
{
struct pci_dev *pdev[] = { dev1, dev2 };
struct ide_host *host;
- int ret, i, n_ports = dev2 ? 4 : 2;
+ int ret, i, n_ports = dev2 ? 4 : 2, bars;
struct ide_hw hw[4], *hws[] = { NULL, NULL, NULL, NULL };
+ if (d->host_flags & IDE_HFLAG_SINGLE)
+ bars = (1 << 2) - 1;
+ else
+ bars = (1 << 4) - 1;
+
+ if ((d->host_flags & IDE_HFLAG_NO_DMA) == 0) {
+ if (d->host_flags & IDE_HFLAG_CS5520)
+ bars |= (1 << 2);
+ else
+ bars |= (1 << 4);
+ }
+
for (i = 0; i < n_ports / 2; i++) {
- ret = ide_setup_pci_controller(pdev[i], d, !i);
- if (ret < 0)
+ ret = ide_setup_pci_controller(pdev[i], bars, d, !i);
+ if (ret < 0) {
+ if (i == 1)
+ pci_release_selected_regions(pdev[0], bars);
goto out;
+ }
ide_pci_setup_ports(pdev[i], d, &hw[i*2], &hws[i*2]);
}
@@ -554,7 +564,7 @@ int ide_pci_init_two(struct pci_dev *dev1, struct pci_dev *dev2,
host = ide_host_alloc(d, hws, n_ports);
if (host == NULL) {
ret = -ENOMEM;
- goto out;
+ goto out_free_bars;
}
host->dev[0] = &dev1->dev;
@@ -576,7 +586,7 @@ int ide_pci_init_two(struct pci_dev *dev1, struct pci_dev *dev2,
* do_ide_setup_pci_device() on the first device!
*/
if (ret < 0)
- goto out;
+ goto out_free_bars;
/* fixup IRQ */
if (ide_pci_is_in_compatibility_mode(pdev[i])) {
@@ -589,6 +599,13 @@ int ide_pci_init_two(struct pci_dev *dev1, struct pci_dev *dev2,
ret = ide_host_register(host, d, hws);
if (ret)
ide_host_free(host);
+ else
+ goto out;
+
+out_free_bars:
+ i = n_ports / 2;
+ while (i--)
+ pci_release_selected_regions(pdev[i], bars);
out:
return ret;
}
diff --git a/drivers/iio/Makefile b/drivers/iio/Makefile
index 93c769cd99bf..b16b2e9ddc40 100644
--- a/drivers/iio/Makefile
+++ b/drivers/iio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the industrial I/O core.
#
diff --git a/drivers/iio/accel/Makefile b/drivers/iio/accel/Makefile
index 31fba1974e95..703e7c21f547 100644
--- a/drivers/iio/accel/Makefile
+++ b/drivers/iio/accel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for industrial I/O accelerometer drivers
#
diff --git a/drivers/iio/accel/bmc150-accel.h b/drivers/iio/accel/bmc150-accel.h
index 38a8b11f8c19..ae6118ae11b1 100644
--- a/drivers/iio/accel/bmc150-accel.h
+++ b/drivers/iio/accel/bmc150-accel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BMC150_ACCEL_H_
#define _BMC150_ACCEL_H_
diff --git a/drivers/iio/accel/kxsd9-i2c.c b/drivers/iio/accel/kxsd9-i2c.c
index 95e20855d2ef..98fbb628d5bd 100644
--- a/drivers/iio/accel/kxsd9-i2c.c
+++ b/drivers/iio/accel/kxsd9-i2c.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/module.h>
diff --git a/drivers/iio/accel/kxsd9.h b/drivers/iio/accel/kxsd9.h
index 7e8a28168310..5e3ca212f5be 100644
--- a/drivers/iio/accel/kxsd9.h
+++ b/drivers/iio/accel/kxsd9.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/device.h>
#include <linux/kernel.h>
diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
index 57625653fcb6..1d13bf03c758 100644
--- a/drivers/iio/adc/Kconfig
+++ b/drivers/iio/adc/Kconfig
@@ -243,6 +243,8 @@ config DA9150_GPADC
config DLN2_ADC
tristate "Diolan DLN-2 ADC driver support"
depends on MFD_DLN2
+ select IIO_BUFFER
+ select IIO_TRIGGERED_BUFFER
help
Say yes here to build support for Diolan DLN-2 ADC.
diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefile
index 9874e05f52d7..9572c1090f35 100644
--- a/drivers/iio/adc/Makefile
+++ b/drivers/iio/adc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for IIO ADC drivers
#
diff --git a/drivers/iio/adc/ad7793.c b/drivers/iio/adc/ad7793.c
index e6706a09e100..47c3d7f32900 100644
--- a/drivers/iio/adc/ad7793.c
+++ b/drivers/iio/adc/ad7793.c
@@ -257,7 +257,7 @@ static int ad7793_setup(struct iio_dev *indio_dev,
unsigned int vref_mv)
{
struct ad7793_state *st = iio_priv(indio_dev);
- int i, ret = -1;
+ int i, ret;
unsigned long long scale_uv;
u32 id;
@@ -266,7 +266,7 @@ static int ad7793_setup(struct iio_dev *indio_dev,
return ret;
/* reset the serial interface */
- ret = spi_write(st->sd.spi, (u8 *)&ret, sizeof(ret));
+ ret = ad_sd_reset(&st->sd, 32);
if (ret < 0)
goto out;
usleep_range(500, 2000); /* Wait for at least 500us */
diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c
index d10bd0c97233..22c4c17cd996 100644
--- a/drivers/iio/adc/ad_sigma_delta.c
+++ b/drivers/iio/adc/ad_sigma_delta.c
@@ -177,6 +177,34 @@ out:
}
EXPORT_SYMBOL_GPL(ad_sd_read_reg);
+/**
+ * ad_sd_reset() - Reset the serial interface
+ *
+ * @sigma_delta: The sigma delta device
+ * @reset_length: Number of SCLKs with DIN = 1
+ *
+ * Returns 0 on success, an error code otherwise.
+ **/
+int ad_sd_reset(struct ad_sigma_delta *sigma_delta,
+ unsigned int reset_length)
+{
+ uint8_t *buf;
+ unsigned int size;
+ int ret;
+
+ size = DIV_ROUND_UP(reset_length, 8);
+ buf = kcalloc(size, sizeof(*buf), GFP_KERNEL);
+ if (!buf)
+ return -ENOMEM;
+
+ memset(buf, 0xff, size);
+ ret = spi_write(sigma_delta->spi, buf, size);
+ kfree(buf);
+
+ return ret;
+}
+EXPORT_SYMBOL_GPL(ad_sd_reset);
+
static int ad_sd_calibrate(struct ad_sigma_delta *sigma_delta,
unsigned int mode, unsigned int channel)
{
diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c
index bc5b38e3a147..a70ef7fec95f 100644
--- a/drivers/iio/adc/at91-sama5d2_adc.c
+++ b/drivers/iio/adc/at91-sama5d2_adc.c
@@ -225,6 +225,7 @@ struct at91_adc_trigger {
char *name;
unsigned int trgmod_value;
unsigned int edge_type;
+ bool hw_trig;
};
struct at91_adc_state {
@@ -254,16 +255,25 @@ static const struct at91_adc_trigger at91_adc_trigger_list[] = {
.name = "external_rising",
.trgmod_value = AT91_SAMA5D2_TRGR_TRGMOD_EXT_TRIG_RISE,
.edge_type = IRQ_TYPE_EDGE_RISING,
+ .hw_trig = true,
},
{
.name = "external_falling",
.trgmod_value = AT91_SAMA5D2_TRGR_TRGMOD_EXT_TRIG_FALL,
.edge_type = IRQ_TYPE_EDGE_FALLING,
+ .hw_trig = true,
},
{
.name = "external_any",
.trgmod_value = AT91_SAMA5D2_TRGR_TRGMOD_EXT_TRIG_ANY,
.edge_type = IRQ_TYPE_EDGE_BOTH,
+ .hw_trig = true,
+ },
+ {
+ .name = "software",
+ .trgmod_value = AT91_SAMA5D2_TRGR_TRGMOD_NO_TRIGGER,
+ .edge_type = IRQ_TYPE_NONE,
+ .hw_trig = false,
},
};
@@ -597,7 +607,7 @@ static int at91_adc_probe(struct platform_device *pdev)
struct at91_adc_state *st;
struct resource *res;
int ret, i;
- u32 edge_type;
+ u32 edge_type = IRQ_TYPE_NONE;
indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*st));
if (!indio_dev)
@@ -641,14 +651,14 @@ static int at91_adc_probe(struct platform_device *pdev)
ret = of_property_read_u32(pdev->dev.of_node,
"atmel,trigger-edge-type", &edge_type);
if (ret) {
- dev_err(&pdev->dev,
- "invalid or missing value for atmel,trigger-edge-type\n");
- return ret;
+ dev_dbg(&pdev->dev,
+ "atmel,trigger-edge-type not specified, only software trigger available\n");
}
st->selected_trig = NULL;
- for (i = 0; i < AT91_SAMA5D2_HW_TRIG_CNT; i++)
+ /* find the right trigger, or no trigger at all */
+ for (i = 0; i < AT91_SAMA5D2_HW_TRIG_CNT + 1; i++)
if (at91_adc_trigger_list[i].edge_type == edge_type) {
st->selected_trig = &at91_adc_trigger_list[i];
break;
@@ -717,24 +727,27 @@ static int at91_adc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, indio_dev);
- ret = at91_adc_buffer_init(indio_dev);
- if (ret < 0) {
- dev_err(&pdev->dev, "couldn't initialize the buffer.\n");
- goto per_clk_disable_unprepare;
- }
+ if (st->selected_trig->hw_trig) {
+ ret = at91_adc_buffer_init(indio_dev);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "couldn't initialize the buffer.\n");
+ goto per_clk_disable_unprepare;
+ }
- ret = at91_adc_trigger_init(indio_dev);
- if (ret < 0) {
- dev_err(&pdev->dev, "couldn't setup the triggers.\n");
- goto per_clk_disable_unprepare;
+ ret = at91_adc_trigger_init(indio_dev);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "couldn't setup the triggers.\n");
+ goto per_clk_disable_unprepare;
+ }
}
ret = iio_device_register(indio_dev);
if (ret < 0)
goto per_clk_disable_unprepare;
- dev_info(&pdev->dev, "setting up trigger as %s\n",
- st->selected_trig->name);
+ if (st->selected_trig->hw_trig)
+ dev_info(&pdev->dev, "setting up trigger as %s\n",
+ st->selected_trig->name);
dev_info(&pdev->dev, "version: %x\n",
readl_relaxed(st->base + AT91_SAMA5D2_VERSION));
diff --git a/drivers/iio/adc/mcp320x.c b/drivers/iio/adc/mcp320x.c
index 634717ae12f3..071dd23a33d9 100644
--- a/drivers/iio/adc/mcp320x.c
+++ b/drivers/iio/adc/mcp320x.c
@@ -17,6 +17,8 @@
* MCP3204
* MCP3208
* ------------
+ * 13 bit converter
+ * MCP3301
*
* Datasheet can be found here:
* http://ww1.microchip.com/downloads/en/DeviceDoc/21293C.pdf mcp3001
@@ -96,7 +98,7 @@ static int mcp320x_channel_to_tx_data(int device_index,
}
static int mcp320x_adc_conversion(struct mcp320x *adc, u8 channel,
- bool differential, int device_index)
+ bool differential, int device_index, int *val)
{
int ret;
@@ -117,19 +119,25 @@ static int mcp320x_adc_conversion(struct mcp320x *adc, u8 channel,
switch (device_index) {
case mcp3001:
- return (adc->rx_buf[0] << 5 | adc->rx_buf[1] >> 3);
+ *val = (adc->rx_buf[0] << 5 | adc->rx_buf[1] >> 3);
+ return 0;
case mcp3002:
case mcp3004:
case mcp3008:
- return (adc->rx_buf[0] << 2 | adc->rx_buf[1] >> 6);
+ *val = (adc->rx_buf[0] << 2 | adc->rx_buf[1] >> 6);
+ return 0;
case mcp3201:
- return (adc->rx_buf[0] << 7 | adc->rx_buf[1] >> 1);
+ *val = (adc->rx_buf[0] << 7 | adc->rx_buf[1] >> 1);
+ return 0;
case mcp3202:
case mcp3204:
case mcp3208:
- return (adc->rx_buf[0] << 4 | adc->rx_buf[1] >> 4);
+ *val = (adc->rx_buf[0] << 4 | adc->rx_buf[1] >> 4);
+ return 0;
case mcp3301:
- return sign_extend32((adc->rx_buf[0] & 0x1f) << 8 | adc->rx_buf[1], 12);
+ *val = sign_extend32((adc->rx_buf[0] & 0x1f) << 8
+ | adc->rx_buf[1], 12);
+ return 0;
default:
return -EINVAL;
}
@@ -150,12 +158,10 @@ static int mcp320x_read_raw(struct iio_dev *indio_dev,
switch (mask) {
case IIO_CHAN_INFO_RAW:
ret = mcp320x_adc_conversion(adc, channel->address,
- channel->differential, device_index);
-
+ channel->differential, device_index, val);
if (ret < 0)
goto out;
- *val = ret;
ret = IIO_VAL_INT;
break;
@@ -312,6 +318,7 @@ static int mcp320x_probe(struct spi_device *spi)
indio_dev->name = spi_get_device_id(spi)->name;
indio_dev->modes = INDIO_DIRECT_MODE;
indio_dev->info = &mcp320x_info;
+ spi_set_drvdata(spi, indio_dev);
chip_info = &mcp320x_chip_infos[spi_get_device_id(spi)->driver_data];
indio_dev->channels = chip_info->channels;
diff --git a/drivers/iio/adc/qcom-vadc-common.c b/drivers/iio/adc/qcom-vadc-common.c
index 102fc51b10aa..47d24ae5462f 100644
--- a/drivers/iio/adc/qcom-vadc-common.c
+++ b/drivers/iio/adc/qcom-vadc-common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bug.h>
#include <linux/kernel.h>
#include <linux/bitops.h>
diff --git a/drivers/iio/adc/qcom-vadc-common.h b/drivers/iio/adc/qcom-vadc-common.h
index 63c872a70adc..1d5354ff5c72 100644
--- a/drivers/iio/adc/qcom-vadc-common.h
+++ b/drivers/iio/adc/qcom-vadc-common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Code shared between the different Qualcomm PMIC voltage ADCs
*/
diff --git a/drivers/iio/adc/stm32-adc.c b/drivers/iio/adc/stm32-adc.c
index e3c15f88075f..4df32cf1650e 100644
--- a/drivers/iio/adc/stm32-adc.c
+++ b/drivers/iio/adc/stm32-adc.c
@@ -1666,7 +1666,7 @@ static int stm32_adc_chan_of_init(struct iio_dev *indio_dev)
num_channels = of_property_count_u32_elems(node, "st,adc-channels");
if (num_channels < 0 ||
- num_channels >= adc_info->max_channels) {
+ num_channels > adc_info->max_channels) {
dev_err(&indio_dev->dev, "Bad st,adc-channels?\n");
return num_channels < 0 ? num_channels : -EINVAL;
}
diff --git a/drivers/iio/adc/ti-ads1015.c b/drivers/iio/adc/ti-ads1015.c
index d1210024f6bc..e0dc20488335 100644
--- a/drivers/iio/adc/ti-ads1015.c
+++ b/drivers/iio/adc/ti-ads1015.c
@@ -52,7 +52,7 @@
#define ADS1015_CFG_COMP_QUE_MASK GENMASK(1, 0)
#define ADS1015_CFG_COMP_LAT_MASK BIT(2)
-#define ADS1015_CFG_COMP_POL_MASK BIT(2)
+#define ADS1015_CFG_COMP_POL_MASK BIT(3)
#define ADS1015_CFG_COMP_MODE_MASK BIT(4)
#define ADS1015_CFG_DR_MASK GENMASK(7, 5)
#define ADS1015_CFG_MOD_MASK BIT(8)
@@ -1017,10 +1017,12 @@ static int ads1015_probe(struct i2c_client *client,
switch (irq_trig) {
case IRQF_TRIGGER_LOW:
- cfg_comp |= ADS1015_CFG_COMP_POL_LOW;
+ cfg_comp |= ADS1015_CFG_COMP_POL_LOW <<
+ ADS1015_CFG_COMP_POL_SHIFT;
break;
case IRQF_TRIGGER_HIGH:
- cfg_comp |= ADS1015_CFG_COMP_POL_HIGH;
+ cfg_comp |= ADS1015_CFG_COMP_POL_HIGH <<
+ ADS1015_CFG_COMP_POL_SHIFT;
break;
default:
return -EINVAL;
diff --git a/drivers/iio/adc/twl4030-madc.c b/drivers/iio/adc/twl4030-madc.c
index 1edd99f0c5e5..e3cfb91bffc6 100644
--- a/drivers/iio/adc/twl4030-madc.c
+++ b/drivers/iio/adc/twl4030-madc.c
@@ -887,21 +887,27 @@ static int twl4030_madc_probe(struct platform_device *pdev)
/* Enable 3v1 bias regulator for MADC[3:6] */
madc->usb3v1 = devm_regulator_get(madc->dev, "vusb3v1");
- if (IS_ERR(madc->usb3v1))
- return -ENODEV;
+ if (IS_ERR(madc->usb3v1)) {
+ ret = -ENODEV;
+ goto err_i2c;
+ }
ret = regulator_enable(madc->usb3v1);
- if (ret)
+ if (ret) {
dev_err(madc->dev, "could not enable 3v1 bias regulator\n");
+ goto err_i2c;
+ }
ret = iio_device_register(iio_dev);
if (ret) {
dev_err(&pdev->dev, "could not register iio device\n");
- goto err_i2c;
+ goto err_usb3v1;
}
return 0;
+err_usb3v1:
+ regulator_disable(madc->usb3v1);
err_i2c:
twl4030_madc_set_current_generator(madc, 0, 0);
err_current_generator:
diff --git a/drivers/iio/buffer/Makefile b/drivers/iio/buffer/Makefile
index 85beaae831ae..95f9f41c58b7 100644
--- a/drivers/iio/buffer/Makefile
+++ b/drivers/iio/buffer/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the industrial I/O buffer implementations
#
diff --git a/drivers/iio/common/Makefile b/drivers/iio/common/Makefile
index 6fa760e1bdd5..4bc30bb548e2 100644
--- a/drivers/iio/common/Makefile
+++ b/drivers/iio/common/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the IIO common modules.
# Common modules contains modules, which can be shared among multiple
diff --git a/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h b/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h
index 541c6590d69c..4528ab55eb68 100644
--- a/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h
+++ b/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SSP_IIO_SENSOR_H__
#define __SSP_IIO_SENSOR_H__
diff --git a/drivers/iio/common/st_sensors/Makefile b/drivers/iio/common/st_sensors/Makefile
index 9f3e24f3024b..f7fb3b79b64c 100644
--- a/drivers/iio/common/st_sensors/Makefile
+++ b/drivers/iio/common/st_sensors/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the STMicroelectronics sensor common modules.
#
diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c
index d99bb1460fe2..02e833b14db0 100644
--- a/drivers/iio/common/st_sensors/st_sensors_core.c
+++ b/drivers/iio/common/st_sensors/st_sensors_core.c
@@ -463,8 +463,17 @@ int st_sensors_set_dataready_irq(struct iio_dev *indio_dev, bool enable)
u8 drdy_mask;
struct st_sensor_data *sdata = iio_priv(indio_dev);
- if (!sdata->sensor_settings->drdy_irq.addr)
+ if (!sdata->sensor_settings->drdy_irq.addr) {
+ /*
+ * there are some devices (e.g. LIS3MDL) where drdy line is
+ * routed to a given pin and it is not possible to select a
+ * different one. Take into account irq status register
+ * to understand if irq trigger can be properly supported
+ */
+ if (sdata->sensor_settings->drdy_irq.addr_stat_drdy)
+ sdata->hw_irq_trigger = enable;
return 0;
+ }
/* Enable/Disable the interrupt generator 1. */
if (sdata->sensor_settings->drdy_irq.ig1.en_addr > 0) {
diff --git a/drivers/iio/common/st_sensors/st_sensors_core.h b/drivers/iio/common/st_sensors/st_sensors_core.h
index cd88098ff6f1..e8894be55660 100644
--- a/drivers/iio/common/st_sensors/st_sensors_core.h
+++ b/drivers/iio/common/st_sensors/st_sensors_core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Local functions in the ST Sensors core
*/
diff --git a/drivers/iio/dac/Makefile b/drivers/iio/dac/Makefile
index 603587cc2f07..993511ba4b17 100644
--- a/drivers/iio/dac/Makefile
+++ b/drivers/iio/dac/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for industrial I/O DAC drivers
#
diff --git a/drivers/iio/dummy/Makefile b/drivers/iio/dummy/Makefile
index 0765e93d7804..f14fe20f365c 100644
--- a/drivers/iio/dummy/Makefile
+++ b/drivers/iio/dummy/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the IIO Dummy Driver
#
diff --git a/drivers/iio/dummy/iio_dummy_evgen.h b/drivers/iio/dummy/iio_dummy_evgen.h
index d044b946e74a..e0bf64fe9d67 100644
--- a/drivers/iio/dummy/iio_dummy_evgen.h
+++ b/drivers/iio/dummy/iio_dummy_evgen.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IIO_DUMMY_EVGEN_H_
#define _IIO_DUMMY_EVGEN_H_
diff --git a/drivers/iio/dummy/iio_simple_dummy_events.c b/drivers/iio/dummy/iio_simple_dummy_events.c
index ed63ffd849f8..7ec2a0bb0807 100644
--- a/drivers/iio/dummy/iio_simple_dummy_events.c
+++ b/drivers/iio/dummy/iio_simple_dummy_events.c
@@ -72,6 +72,7 @@ int iio_simple_dummy_write_event_config(struct iio_dev *indio_dev,
st->event_en = state;
else
return -EINVAL;
+ break;
default:
return -EINVAL;
}
diff --git a/drivers/iio/gyro/Makefile b/drivers/iio/gyro/Makefile
index f0e149a606b0..295ec780c4eb 100644
--- a/drivers/iio/gyro/Makefile
+++ b/drivers/iio/gyro/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for industrial I/O gyroscope sensor drivers
#
diff --git a/drivers/iio/gyro/bmg160.h b/drivers/iio/gyro/bmg160.h
index 72db723c8fb6..6bcff6562249 100644
--- a/drivers/iio/gyro/bmg160.h
+++ b/drivers/iio/gyro/bmg160.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BMG160_H_
#define BMG160_H_
diff --git a/drivers/iio/gyro/mpu3050.h b/drivers/iio/gyro/mpu3050.h
index bef87a714dc5..835b0249c376 100644
--- a/drivers/iio/gyro/mpu3050.h
+++ b/drivers/iio/gyro/mpu3050.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/iio/iio.h>
#include <linux/mutex.h>
#include <linux/regmap.h>
diff --git a/drivers/iio/humidity/Makefile b/drivers/iio/humidity/Makefile
index be0dedeb8f3c..ae4204995017 100644
--- a/drivers/iio/humidity/Makefile
+++ b/drivers/iio/humidity/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for IIO humidity sensor drivers
#
diff --git a/drivers/iio/imu/Makefile b/drivers/iio/imu/Makefile
index 8b563c3323b5..68629c68b19b 100644
--- a/drivers/iio/imu/Makefile
+++ b/drivers/iio/imu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Inertial Measurement Units
#
diff --git a/drivers/iio/imu/adis16400_buffer.c b/drivers/iio/imu/adis16400_buffer.c
index 90c24a23c679..e70a5339acb1 100644
--- a/drivers/iio/imu/adis16400_buffer.c
+++ b/drivers/iio/imu/adis16400_buffer.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/interrupt.h>
#include <linux/mutex.h>
#include <linux/kernel.h>
diff --git a/drivers/iio/imu/bmi160/bmi160.h b/drivers/iio/imu/bmi160/bmi160.h
index d2ae6ed70271..e7b11e74fd1d 100644
--- a/drivers/iio/imu/bmi160/bmi160.h
+++ b/drivers/iio/imu/bmi160/bmi160.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BMI160_H_
#define BMI160_H_
diff --git a/drivers/iio/imu/inv_mpu6050/Makefile b/drivers/iio/imu/inv_mpu6050/Makefile
index 734af5e6cef9..70ffe0d13d8c 100644
--- a/drivers/iio/imu/inv_mpu6050/Makefile
+++ b/drivers/iio/imu/inv_mpu6050/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Invensense MPU6050 device.
#
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 17ec4cee51dc..a47428b4d31b 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -310,8 +310,10 @@ static ssize_t iio_debugfs_read_reg(struct file *file, char __user *userbuf,
ret = indio_dev->info->debugfs_reg_access(indio_dev,
indio_dev->cached_reg_addr,
0, &val);
- if (ret)
+ if (ret) {
dev_err(indio_dev->dev.parent, "%s: read failed\n", __func__);
+ return ret;
+ }
len = snprintf(buf, sizeof(buf), "0x%X\n", val);
diff --git a/drivers/iio/light/Makefile b/drivers/iio/light/Makefile
index fa32fa459e2e..c263469b7ce9 100644
--- a/drivers/iio/light/Makefile
+++ b/drivers/iio/light/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for IIO Light sensors
#
diff --git a/drivers/iio/magnetometer/Makefile b/drivers/iio/magnetometer/Makefile
index b86d6cb7f285..664b2f866472 100644
--- a/drivers/iio/magnetometer/Makefile
+++ b/drivers/iio/magnetometer/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for industrial I/O Magnetometer sensor drivers
#
diff --git a/drivers/iio/magnetometer/bmc150_magn.h b/drivers/iio/magnetometer/bmc150_magn.h
index 9a8e26812ca8..3b69232afd2c 100644
--- a/drivers/iio/magnetometer/bmc150_magn.h
+++ b/drivers/iio/magnetometer/bmc150_magn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BMC150_MAGN_H_
#define _BMC150_MAGN_H_
diff --git a/drivers/iio/magnetometer/st_magn_core.c b/drivers/iio/magnetometer/st_magn_core.c
index e68368b5b2a3..08aafba4481c 100644
--- a/drivers/iio/magnetometer/st_magn_core.c
+++ b/drivers/iio/magnetometer/st_magn_core.c
@@ -315,6 +315,10 @@ static const struct st_sensor_settings st_magn_sensors_settings[] = {
},
},
},
+ .drdy_irq = {
+ /* drdy line is routed drdy pin */
+ .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+ },
.multi_read_bit = true,
.bootime = 2,
},
diff --git a/drivers/iio/potentiometer/Makefile b/drivers/iio/potentiometer/Makefile
index 2260d40e0936..1afd1e70f8cc 100644
--- a/drivers/iio/potentiometer/Makefile
+++ b/drivers/iio/potentiometer/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for industrial I/O potentiometer drivers
#
diff --git a/drivers/iio/pressure/Makefile b/drivers/iio/pressure/Makefile
index 838642789389..c2058d7b2f93 100644
--- a/drivers/iio/pressure/Makefile
+++ b/drivers/iio/pressure/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for industrial I/O pressure drivers
#
diff --git a/drivers/iio/pressure/bmp280-core.c b/drivers/iio/pressure/bmp280-core.c
index 0d2ea3ee371b..8f26428804a2 100644
--- a/drivers/iio/pressure/bmp280-core.c
+++ b/drivers/iio/pressure/bmp280-core.c
@@ -573,7 +573,7 @@ static int bmp280_chip_config(struct bmp280_data *data)
u8 osrs = BMP280_OSRS_TEMP_X(data->oversampling_temp + 1) |
BMP280_OSRS_PRESS_X(data->oversampling_press + 1);
- ret = regmap_update_bits(data->regmap, BMP280_REG_CTRL_MEAS,
+ ret = regmap_write_bits(data->regmap, BMP280_REG_CTRL_MEAS,
BMP280_OSRS_TEMP_MASK |
BMP280_OSRS_PRESS_MASK |
BMP280_MODE_MASK,
diff --git a/drivers/iio/pressure/bmp280-regmap.c b/drivers/iio/pressure/bmp280-regmap.c
index 6807113ec09f..08c00ac32bda 100644
--- a/drivers/iio/pressure/bmp280-regmap.c
+++ b/drivers/iio/pressure/bmp280-regmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/device.h>
#include <linux/module.h>
#include <linux/regmap.h>
diff --git a/drivers/iio/pressure/bmp280.h b/drivers/iio/pressure/bmp280.h
index 61347438b779..eda50ef65706 100644
--- a/drivers/iio/pressure/bmp280.h
+++ b/drivers/iio/pressure/bmp280.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/bitops.h>
#include <linux/device.h>
#include <linux/regmap.h>
diff --git a/drivers/iio/pressure/zpa2326.c b/drivers/iio/pressure/zpa2326.c
index ebfb1de7377f..91431454eb85 100644
--- a/drivers/iio/pressure/zpa2326.c
+++ b/drivers/iio/pressure/zpa2326.c
@@ -865,7 +865,6 @@ complete:
static int zpa2326_wait_oneshot_completion(const struct iio_dev *indio_dev,
struct zpa2326_private *private)
{
- int ret;
unsigned int val;
long timeout;
@@ -887,14 +886,11 @@ static int zpa2326_wait_oneshot_completion(const struct iio_dev *indio_dev,
/* Timed out. */
zpa2326_warn(indio_dev, "no one shot interrupt occurred (%ld)",
timeout);
- ret = -ETIME;
- } else if (timeout < 0) {
- zpa2326_warn(indio_dev,
- "wait for one shot interrupt cancelled");
- ret = -ERESTARTSYS;
+ return -ETIME;
}
- return ret;
+ zpa2326_warn(indio_dev, "wait for one shot interrupt cancelled");
+ return -ERESTARTSYS;
}
static int zpa2326_init_managed_irq(struct device *parent,
diff --git a/drivers/iio/proximity/Makefile b/drivers/iio/proximity/Makefile
index ed1b6f4cc209..ad6686391f08 100644
--- a/drivers/iio/proximity/Makefile
+++ b/drivers/iio/proximity/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for IIO proximity sensors
#
diff --git a/drivers/iio/proximity/as3935.c b/drivers/iio/proximity/as3935.c
index 0eeff29b61be..4a48b7ba3a1c 100644
--- a/drivers/iio/proximity/as3935.c
+++ b/drivers/iio/proximity/as3935.c
@@ -39,8 +39,12 @@
#define AS3935_AFE_GAIN_MAX 0x1F
#define AS3935_AFE_PWR_BIT BIT(0)
+#define AS3935_NFLWDTH 0x01
+#define AS3935_NFLWDTH_MASK 0x7f
+
#define AS3935_INT 0x03
#define AS3935_INT_MASK 0x0f
+#define AS3935_DISTURB_INT BIT(2)
#define AS3935_EVENT_INT BIT(3)
#define AS3935_NOISE_INT BIT(0)
@@ -48,6 +52,7 @@
#define AS3935_DATA_MASK 0x3F
#define AS3935_TUNE_CAP 0x08
+#define AS3935_DEFAULTS 0x3C
#define AS3935_CALIBRATE 0x3D
#define AS3935_READ_DATA BIT(14)
@@ -62,7 +67,9 @@ struct as3935_state {
struct mutex lock;
struct delayed_work work;
+ unsigned long noise_tripped;
u32 tune_cap;
+ u32 nflwdth_reg;
u8 buffer[16]; /* 8-bit data + 56-bit padding + 64-bit timestamp */
u8 buf[2] ____cacheline_aligned;
};
@@ -145,12 +152,29 @@ static ssize_t as3935_sensor_sensitivity_store(struct device *dev,
return len;
}
+static ssize_t as3935_noise_level_tripped_show(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ struct as3935_state *st = iio_priv(dev_to_iio_dev(dev));
+ int ret;
+
+ mutex_lock(&st->lock);
+ ret = sprintf(buf, "%d\n", !time_after(jiffies, st->noise_tripped + HZ));
+ mutex_unlock(&st->lock);
+
+ return ret;
+}
+
static IIO_DEVICE_ATTR(sensor_sensitivity, S_IRUGO | S_IWUSR,
as3935_sensor_sensitivity_show, as3935_sensor_sensitivity_store, 0);
+static IIO_DEVICE_ATTR(noise_level_tripped, S_IRUGO,
+ as3935_noise_level_tripped_show, NULL, 0);
static struct attribute *as3935_attributes[] = {
&iio_dev_attr_sensor_sensitivity.dev_attr.attr,
+ &iio_dev_attr_noise_level_tripped.dev_attr.attr,
NULL,
};
@@ -246,7 +270,11 @@ static void as3935_event_work(struct work_struct *work)
case AS3935_EVENT_INT:
iio_trigger_poll_chained(st->trig);
break;
+ case AS3935_DISTURB_INT:
case AS3935_NOISE_INT:
+ mutex_lock(&st->lock);
+ st->noise_tripped = jiffies;
+ mutex_unlock(&st->lock);
dev_warn(&st->spi->dev, "noise level is too high\n");
break;
}
@@ -269,15 +297,14 @@ static irqreturn_t as3935_interrupt_handler(int irq, void *private)
static void calibrate_as3935(struct as3935_state *st)
{
- /* mask disturber interrupt bit */
- as3935_write(st, AS3935_INT, BIT(5));
-
+ as3935_write(st, AS3935_DEFAULTS, 0x96);
as3935_write(st, AS3935_CALIBRATE, 0x96);
as3935_write(st, AS3935_TUNE_CAP,
BIT(5) | (st->tune_cap / TUNE_CAP_DIV));
mdelay(2);
as3935_write(st, AS3935_TUNE_CAP, (st->tune_cap / TUNE_CAP_DIV));
+ as3935_write(st, AS3935_NFLWDTH, st->nflwdth_reg);
}
#ifdef CONFIG_PM_SLEEP
@@ -370,6 +397,15 @@ static int as3935_probe(struct spi_device *spi)
return -EINVAL;
}
+ ret = of_property_read_u32(np,
+ "ams,nflwdth", &st->nflwdth_reg);
+ if (!ret && st->nflwdth_reg > AS3935_NFLWDTH_MASK) {
+ dev_err(&spi->dev,
+ "invalid nflwdth setting of %d\n",
+ st->nflwdth_reg);
+ return -EINVAL;
+ }
+
indio_dev->dev.parent = &spi->dev;
indio_dev->name = spi_get_device_id(spi)->name;
indio_dev->channels = as3935_channels;
@@ -384,6 +420,7 @@ static int as3935_probe(struct spi_device *spi)
return -ENOMEM;
st->trig = trig;
+ st->noise_tripped = jiffies - HZ;
trig->dev.parent = indio_dev->dev.parent;
iio_trigger_set_drvdata(trig, indio_dev);
trig->ops = &iio_interrupt_trigger_ops;
diff --git a/drivers/iio/temperature/Makefile b/drivers/iio/temperature/Makefile
index ad1d668de546..34bd9023727b 100644
--- a/drivers/iio/temperature/Makefile
+++ b/drivers/iio/temperature/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for industrial I/O temperature drivers
#
diff --git a/drivers/iio/trigger/Makefile b/drivers/iio/trigger/Makefile
index 0a72a2a76cb2..f3d11acb8a0b 100644
--- a/drivers/iio/trigger/Makefile
+++ b/drivers/iio/trigger/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for triggers not associated with iio-devices
#
diff --git a/drivers/iio/trigger/stm32-timer-trigger.c b/drivers/iio/trigger/stm32-timer-trigger.c
index 9b9053494daf..eb212f8c8879 100644
--- a/drivers/iio/trigger/stm32-timer-trigger.c
+++ b/drivers/iio/trigger/stm32-timer-trigger.c
@@ -174,6 +174,7 @@ static void stm32_timer_stop(struct stm32_timer_trigger *priv)
clk_disable(priv->clk);
/* Stop timer */
+ regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_ARPE, 0);
regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_CEN, 0);
regmap_write(priv->regmap, TIM_PSC, 0);
regmap_write(priv->regmap, TIM_ARR, 0);
@@ -715,8 +716,9 @@ static ssize_t stm32_count_set_preset(struct iio_dev *indio_dev,
if (ret)
return ret;
+ /* TIMx_ARR register shouldn't be buffered (ARPE=0) */
+ regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_ARPE, 0);
regmap_write(priv->regmap, TIM_ARR, preset);
- regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_ARPE, TIM_CR1_ARPE);
return len;
}
diff --git a/drivers/infiniband/core/Makefile b/drivers/infiniband/core/Makefile
index b4df164f71a6..9c0a2b5c834e 100644
--- a/drivers/infiniband/core/Makefile
+++ b/drivers/infiniband/core/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
infiniband-$(CONFIG_INFINIBAND_ADDR_TRANS) := rdma_cm.o
user_access-$(CONFIG_INFINIBAND_ADDR_TRANS) := rdma_ucm.o
diff --git a/drivers/infiniband/core/iwpm_msg.c b/drivers/infiniband/core/iwpm_msg.c
index 30825bb9b8e9..8861c052155a 100644
--- a/drivers/infiniband/core/iwpm_msg.c
+++ b/drivers/infiniband/core/iwpm_msg.c
@@ -100,6 +100,8 @@ int iwpm_register_pid(struct iwpm_dev_data *pm_msg, u8 nl_client)
if (ret)
goto pid_query_error;
+ nlmsg_end(skb, nlh);
+
pr_debug("%s: Multicasting a nlmsg (dev = %s ifname = %s iwpm = %s)\n",
__func__, pm_msg->dev_name, pm_msg->if_name, iwpm_ulib_name);
@@ -170,6 +172,8 @@ int iwpm_add_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client)
&pm_msg->loc_addr, IWPM_NLA_MANAGE_ADDR);
if (ret)
goto add_mapping_error;
+
+ nlmsg_end(skb, nlh);
nlmsg_request->req_buffer = pm_msg;
ret = rdma_nl_unicast_wait(skb, iwpm_user_pid);
@@ -246,6 +250,8 @@ int iwpm_add_and_query_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client)
&pm_msg->rem_addr, IWPM_NLA_QUERY_REMOTE_ADDR);
if (ret)
goto query_mapping_error;
+
+ nlmsg_end(skb, nlh);
nlmsg_request->req_buffer = pm_msg;
ret = rdma_nl_unicast_wait(skb, iwpm_user_pid);
@@ -308,6 +314,8 @@ int iwpm_remove_mapping(struct sockaddr_storage *local_addr, u8 nl_client)
if (ret)
goto remove_mapping_error;
+ nlmsg_end(skb, nlh);
+
ret = rdma_nl_unicast_wait(skb, iwpm_user_pid);
if (ret) {
skb = NULL; /* skb is freed in the netlink send-op handling */
diff --git a/drivers/infiniband/core/iwpm_util.c b/drivers/infiniband/core/iwpm_util.c
index c81c55942626..3c4faadb8cdd 100644
--- a/drivers/infiniband/core/iwpm_util.c
+++ b/drivers/infiniband/core/iwpm_util.c
@@ -597,6 +597,9 @@ static int send_mapinfo_num(u32 mapping_num, u8 nl_client, int iwpm_pid)
&mapping_num, IWPM_NLA_MAPINFO_SEND_NUM);
if (ret)
goto mapinfo_num_error;
+
+ nlmsg_end(skb, nlh);
+
ret = rdma_nl_unicast(skb, iwpm_pid);
if (ret) {
skb = NULL;
@@ -678,6 +681,8 @@ int iwpm_send_mapinfo(u8 nl_client, int iwpm_pid)
if (ret)
goto send_mapping_info_unlock;
+ nlmsg_end(skb, nlh);
+
iwpm_print_sockaddr(&map_info->local_sockaddr,
"send_mapping_info: Local sockaddr:");
iwpm_print_sockaddr(&map_info->mapped_sockaddr,
diff --git a/drivers/infiniband/core/netlink.c b/drivers/infiniband/core/netlink.c
index b12e58787c3d..1fb72c356e36 100644
--- a/drivers/infiniband/core/netlink.c
+++ b/drivers/infiniband/core/netlink.c
@@ -175,13 +175,24 @@ static int rdma_nl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh,
!netlink_capable(skb, CAP_NET_ADMIN))
return -EPERM;
+ /*
+ * LS responses overload the 0x100 (NLM_F_ROOT) flag. Don't
+ * mistakenly call the .dump() function.
+ */
+ if (index == RDMA_NL_LS) {
+ if (cb_table[op].doit)
+ return cb_table[op].doit(skb, nlh, extack);
+ return -EINVAL;
+ }
/* FIXME: Convert IWCM to properly handle doit callbacks */
if ((nlh->nlmsg_flags & NLM_F_DUMP) || index == RDMA_NL_RDMA_CM ||
index == RDMA_NL_IWCM) {
struct netlink_dump_control c = {
.dump = cb_table[op].dump,
};
- return netlink_dump_start(nls, skb, nlh, &c);
+ if (c.dump)
+ return netlink_dump_start(nls, skb, nlh, &c);
+ return -EINVAL;
}
if (cb_table[op].doit)
diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c
index 3ba24c428c3b..2fae850a3eff 100644
--- a/drivers/infiniband/core/nldev.c
+++ b/drivers/infiniband/core/nldev.c
@@ -214,7 +214,9 @@ static int nldev_port_get_doit(struct sk_buff *skb, struct nlmsghdr *nlh,
err = nlmsg_parse(nlh, 0, tb, RDMA_NLDEV_ATTR_MAX - 1,
nldev_policy, extack);
- if (err || !tb[RDMA_NLDEV_ATTR_PORT_INDEX])
+ if (err ||
+ !tb[RDMA_NLDEV_ATTR_DEV_INDEX] ||
+ !tb[RDMA_NLDEV_ATTR_PORT_INDEX])
return -EINVAL;
index = nla_get_u32(tb[RDMA_NLDEV_ATTR_DEV_INDEX]);
diff --git a/drivers/infiniband/core/security.c b/drivers/infiniband/core/security.c
index 70ad19c4c73e..88bdafb297f5 100644
--- a/drivers/infiniband/core/security.c
+++ b/drivers/infiniband/core/security.c
@@ -432,8 +432,10 @@ int ib_create_qp_security(struct ib_qp *qp, struct ib_device *dev)
atomic_set(&qp->qp_sec->error_list_count, 0);
init_completion(&qp->qp_sec->error_complete);
ret = security_ib_alloc_security(&qp->qp_sec->security);
- if (ret)
+ if (ret) {
kfree(qp->qp_sec);
+ qp->qp_sec = NULL;
+ }
return ret;
}
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 4ab30d832ac5..52a2cf2d83aa 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -3869,15 +3869,15 @@ int ib_uverbs_ex_query_device(struct ib_uverbs_file *file,
resp.raw_packet_caps = attr.raw_packet_caps;
resp.response_length += sizeof(resp.raw_packet_caps);
- if (ucore->outlen < resp.response_length + sizeof(resp.xrq_caps))
+ if (ucore->outlen < resp.response_length + sizeof(resp.tm_caps))
goto end;
- resp.xrq_caps.max_rndv_hdr_size = attr.xrq_caps.max_rndv_hdr_size;
- resp.xrq_caps.max_num_tags = attr.xrq_caps.max_num_tags;
- resp.xrq_caps.max_ops = attr.xrq_caps.max_ops;
- resp.xrq_caps.max_sge = attr.xrq_caps.max_sge;
- resp.xrq_caps.flags = attr.xrq_caps.flags;
- resp.response_length += sizeof(resp.xrq_caps);
+ resp.tm_caps.max_rndv_hdr_size = attr.tm_caps.max_rndv_hdr_size;
+ resp.tm_caps.max_num_tags = attr.tm_caps.max_num_tags;
+ resp.tm_caps.max_ops = attr.tm_caps.max_ops;
+ resp.tm_caps.max_sge = attr.tm_caps.max_sge;
+ resp.tm_caps.flags = attr.tm_caps.flags;
+ resp.response_length += sizeof(resp.tm_caps);
end:
err = ib_copy_to_udata(ucore, &resp, resp.response_length);
return err;
diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
index ee9e27dc799b..de57d6c11a25 100644
--- a/drivers/infiniband/core/verbs.c
+++ b/drivers/infiniband/core/verbs.c
@@ -1646,7 +1646,7 @@ static bool is_valid_mcast_lid(struct ib_qp *qp, u16 lid)
*/
if (!ib_query_qp(qp, &attr, IB_QP_STATE | IB_QP_PORT, &init_attr)) {
if (attr.qp_state >= IB_QPS_INIT) {
- if (qp->device->get_link_layer(qp->device, attr.port_num) !=
+ if (rdma_port_get_link_layer(qp->device, attr.port_num) !=
IB_LINK_LAYER_INFINIBAND)
return true;
goto lid_check;
@@ -1655,7 +1655,7 @@ static bool is_valid_mcast_lid(struct ib_qp *qp, u16 lid)
/* Can't get a quick answer, iterate over all ports */
for (port = 0; port < qp->device->phys_port_cnt; port++)
- if (qp->device->get_link_layer(qp->device, port) !=
+ if (rdma_port_get_link_layer(qp->device, port) !=
IB_LINK_LAYER_INFINIBAND)
num_eth_ports++;
diff --git a/drivers/infiniband/hw/Makefile b/drivers/infiniband/hw/Makefile
index 34c93abf0fe0..e4f31c1be8f7 100644
--- a/drivers/infiniband/hw/Makefile
+++ b/drivers/infiniband/hw/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_INFINIBAND_MTHCA) += mthca/
obj-$(CONFIG_INFINIBAND_QIB) += qib/
obj-$(CONFIG_INFINIBAND_CXGB3) += cxgb3/
diff --git a/drivers/infiniband/hw/bnxt_re/Makefile b/drivers/infiniband/hw/bnxt_re/Makefile
index afbaa0e20670..6e3bc25cc140 100644
--- a/drivers/infiniband/hw/bnxt_re/Makefile
+++ b/drivers/infiniband/hw/bnxt_re/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -Idrivers/net/ethernet/broadcom/bnxt
obj-$(CONFIG_INFINIBAND_BNXT_RE) += bnxt_re.o
diff --git a/drivers/infiniband/hw/bnxt_re/bnxt_re.h b/drivers/infiniband/hw/bnxt_re/bnxt_re.h
index b3ad37fec578..ecbac91b2e14 100644
--- a/drivers/infiniband/hw/bnxt_re/bnxt_re.h
+++ b/drivers/infiniband/hw/bnxt_re/bnxt_re.h
@@ -93,11 +93,13 @@ struct bnxt_re_dev {
struct ib_device ibdev;
struct list_head list;
unsigned long flags;
-#define BNXT_RE_FLAG_NETDEV_REGISTERED 0
-#define BNXT_RE_FLAG_IBDEV_REGISTERED 1
-#define BNXT_RE_FLAG_GOT_MSIX 2
-#define BNXT_RE_FLAG_RCFW_CHANNEL_EN 8
-#define BNXT_RE_FLAG_QOS_WORK_REG 16
+#define BNXT_RE_FLAG_NETDEV_REGISTERED 0
+#define BNXT_RE_FLAG_IBDEV_REGISTERED 1
+#define BNXT_RE_FLAG_GOT_MSIX 2
+#define BNXT_RE_FLAG_HAVE_L2_REF 3
+#define BNXT_RE_FLAG_RCFW_CHANNEL_EN 4
+#define BNXT_RE_FLAG_QOS_WORK_REG 5
+#define BNXT_RE_FLAG_TASK_IN_PROG 6
struct net_device *netdev;
unsigned int version, major, minor;
struct bnxt_en_dev *en_dev;
@@ -108,6 +110,8 @@ struct bnxt_re_dev {
struct delayed_work worker;
u8 cur_prio_map;
+ u8 active_speed;
+ u8 active_width;
/* FP Notification Queue (CQ & SRQ) */
struct tasklet_struct nq_task;
diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
index 01eee15bbd65..0d89621d9fe8 100644
--- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
+++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
@@ -259,14 +259,9 @@ int bnxt_re_query_port(struct ib_device *ibdev, u8 port_num,
port_attr->sm_sl = 0;
port_attr->subnet_timeout = 0;
port_attr->init_type_reply = 0;
- /* call the underlying netdev's ethtool hooks to query speed settings
- * for which we acquire rtnl_lock _only_ if it's registered with
- * IB stack to avoid race in the NETDEV_UNREG path
- */
- if (test_bit(BNXT_RE_FLAG_IBDEV_REGISTERED, &rdev->flags))
- if (ib_get_eth_speed(ibdev, port_num, &port_attr->active_speed,
- &port_attr->active_width))
- return -EINVAL;
+ port_attr->active_speed = rdev->active_speed;
+ port_attr->active_width = rdev->active_width;
+
return 0;
}
@@ -319,6 +314,7 @@ int bnxt_re_del_gid(struct ib_device *ibdev, u8 port_num,
struct bnxt_re_gid_ctx *ctx, **ctx_tbl;
struct bnxt_re_dev *rdev = to_bnxt_re_dev(ibdev, ibdev);
struct bnxt_qplib_sgid_tbl *sgid_tbl = &rdev->qplib_res.sgid_tbl;
+ struct bnxt_qplib_gid *gid_to_del;
/* Delete the entry from the hardware */
ctx = *context;
@@ -328,11 +324,25 @@ int bnxt_re_del_gid(struct ib_device *ibdev, u8 port_num,
if (sgid_tbl && sgid_tbl->active) {
if (ctx->idx >= sgid_tbl->max)
return -EINVAL;
+ gid_to_del = &sgid_tbl->tbl[ctx->idx];
+ /* DEL_GID is called in WQ context(netdevice_event_work_handler)
+ * or via the ib_unregister_device path. In the former case QP1
+ * may not be destroyed yet, in which case just return as FW
+ * needs that entry to be present and will fail it's deletion.
+ * We could get invoked again after QP1 is destroyed OR get an
+ * ADD_GID call with a different GID value for the same index
+ * where we issue MODIFY_GID cmd to update the GID entry -- TBD
+ */
+ if (ctx->idx == 0 &&
+ rdma_link_local_addr((struct in6_addr *)gid_to_del) &&
+ ctx->refcnt == 1 && rdev->qp1_sqp) {
+ dev_dbg(rdev_to_dev(rdev),
+ "Trying to delete GID0 while QP1 is alive\n");
+ return -EFAULT;
+ }
ctx->refcnt--;
if (!ctx->refcnt) {
- rc = bnxt_qplib_del_sgid(sgid_tbl,
- &sgid_tbl->tbl[ctx->idx],
- true);
+ rc = bnxt_qplib_del_sgid(sgid_tbl, gid_to_del, true);
if (rc) {
dev_err(rdev_to_dev(rdev),
"Failed to remove GID: %#x", rc);
@@ -816,6 +826,8 @@ int bnxt_re_destroy_qp(struct ib_qp *ib_qp)
kfree(rdev->sqp_ah);
kfree(rdev->qp1_sqp);
+ rdev->qp1_sqp = NULL;
+ rdev->sqp_ah = NULL;
}
if (!IS_ERR_OR_NULL(qp->rumem))
@@ -1436,11 +1448,14 @@ int bnxt_re_modify_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr,
qp->qplib_qp.modify_flags |=
CMDQ_MODIFY_QP_MODIFY_MASK_PATH_MTU;
qp->qplib_qp.path_mtu = __from_ib_mtu(qp_attr->path_mtu);
+ qp->qplib_qp.mtu = ib_mtu_enum_to_int(qp_attr->path_mtu);
} else if (qp_attr->qp_state == IB_QPS_RTR) {
qp->qplib_qp.modify_flags |=
CMDQ_MODIFY_QP_MODIFY_MASK_PATH_MTU;
qp->qplib_qp.path_mtu =
__from_ib_mtu(iboe_get_mtu(rdev->netdev->mtu));
+ qp->qplib_qp.mtu =
+ ib_mtu_enum_to_int(iboe_get_mtu(rdev->netdev->mtu));
}
if (qp_attr_mask & IB_QP_TIMEOUT) {
@@ -1551,43 +1566,46 @@ int bnxt_re_query_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr,
{
struct bnxt_re_qp *qp = container_of(ib_qp, struct bnxt_re_qp, ib_qp);
struct bnxt_re_dev *rdev = qp->rdev;
- struct bnxt_qplib_qp qplib_qp;
+ struct bnxt_qplib_qp *qplib_qp;
int rc;
- memset(&qplib_qp, 0, sizeof(struct bnxt_qplib_qp));
- qplib_qp.id = qp->qplib_qp.id;
- qplib_qp.ah.host_sgid_index = qp->qplib_qp.ah.host_sgid_index;
+ qplib_qp = kzalloc(sizeof(*qplib_qp), GFP_KERNEL);
+ if (!qplib_qp)
+ return -ENOMEM;
+
+ qplib_qp->id = qp->qplib_qp.id;
+ qplib_qp->ah.host_sgid_index = qp->qplib_qp.ah.host_sgid_index;
- rc = bnxt_qplib_query_qp(&rdev->qplib_res, &qplib_qp);
+ rc = bnxt_qplib_query_qp(&rdev->qplib_res, qplib_qp);
if (rc) {
dev_err(rdev_to_dev(rdev), "Failed to query HW QP");
- return rc;
+ goto out;
}
- qp_attr->qp_state = __to_ib_qp_state(qplib_qp.state);
- qp_attr->en_sqd_async_notify = qplib_qp.en_sqd_async_notify ? 1 : 0;
- qp_attr->qp_access_flags = __to_ib_access_flags(qplib_qp.access);
- qp_attr->pkey_index = qplib_qp.pkey_index;
- qp_attr->qkey = qplib_qp.qkey;
+ qp_attr->qp_state = __to_ib_qp_state(qplib_qp->state);
+ qp_attr->en_sqd_async_notify = qplib_qp->en_sqd_async_notify ? 1 : 0;
+ qp_attr->qp_access_flags = __to_ib_access_flags(qplib_qp->access);
+ qp_attr->pkey_index = qplib_qp->pkey_index;
+ qp_attr->qkey = qplib_qp->qkey;
qp_attr->ah_attr.type = RDMA_AH_ATTR_TYPE_ROCE;
- rdma_ah_set_grh(&qp_attr->ah_attr, NULL, qplib_qp.ah.flow_label,
- qplib_qp.ah.host_sgid_index,
- qplib_qp.ah.hop_limit,
- qplib_qp.ah.traffic_class);
- rdma_ah_set_dgid_raw(&qp_attr->ah_attr, qplib_qp.ah.dgid.data);
- rdma_ah_set_sl(&qp_attr->ah_attr, qplib_qp.ah.sl);
- ether_addr_copy(qp_attr->ah_attr.roce.dmac, qplib_qp.ah.dmac);
- qp_attr->path_mtu = __to_ib_mtu(qplib_qp.path_mtu);
- qp_attr->timeout = qplib_qp.timeout;
- qp_attr->retry_cnt = qplib_qp.retry_cnt;
- qp_attr->rnr_retry = qplib_qp.rnr_retry;
- qp_attr->min_rnr_timer = qplib_qp.min_rnr_timer;
- qp_attr->rq_psn = qplib_qp.rq.psn;
- qp_attr->max_rd_atomic = qplib_qp.max_rd_atomic;
- qp_attr->sq_psn = qplib_qp.sq.psn;
- qp_attr->max_dest_rd_atomic = qplib_qp.max_dest_rd_atomic;
- qp_init_attr->sq_sig_type = qplib_qp.sig_type ? IB_SIGNAL_ALL_WR :
- IB_SIGNAL_REQ_WR;
- qp_attr->dest_qp_num = qplib_qp.dest_qpn;
+ rdma_ah_set_grh(&qp_attr->ah_attr, NULL, qplib_qp->ah.flow_label,
+ qplib_qp->ah.host_sgid_index,
+ qplib_qp->ah.hop_limit,
+ qplib_qp->ah.traffic_class);
+ rdma_ah_set_dgid_raw(&qp_attr->ah_attr, qplib_qp->ah.dgid.data);
+ rdma_ah_set_sl(&qp_attr->ah_attr, qplib_qp->ah.sl);
+ ether_addr_copy(qp_attr->ah_attr.roce.dmac, qplib_qp->ah.dmac);
+ qp_attr->path_mtu = __to_ib_mtu(qplib_qp->path_mtu);
+ qp_attr->timeout = qplib_qp->timeout;
+ qp_attr->retry_cnt = qplib_qp->retry_cnt;
+ qp_attr->rnr_retry = qplib_qp->rnr_retry;
+ qp_attr->min_rnr_timer = qplib_qp->min_rnr_timer;
+ qp_attr->rq_psn = qplib_qp->rq.psn;
+ qp_attr->max_rd_atomic = qplib_qp->max_rd_atomic;
+ qp_attr->sq_psn = qplib_qp->sq.psn;
+ qp_attr->max_dest_rd_atomic = qplib_qp->max_dest_rd_atomic;
+ qp_init_attr->sq_sig_type = qplib_qp->sig_type ? IB_SIGNAL_ALL_WR :
+ IB_SIGNAL_REQ_WR;
+ qp_attr->dest_qp_num = qplib_qp->dest_qpn;
qp_attr->cap.max_send_wr = qp->qplib_qp.sq.max_wqe;
qp_attr->cap.max_send_sge = qp->qplib_qp.sq.max_sge;
@@ -1596,7 +1614,9 @@ int bnxt_re_query_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr,
qp_attr->cap.max_inline_data = qp->qplib_qp.max_inline_data;
qp_init_attr->cap = qp_attr->cap;
- return 0;
+out:
+ kfree(qplib_qp);
+ return rc;
}
/* Routine for sending QP1 packets for RoCE V1 an V2
@@ -1908,6 +1928,7 @@ static int bnxt_re_build_atomic_wqe(struct ib_send_wr *wr,
switch (wr->opcode) {
case IB_WR_ATOMIC_CMP_AND_SWP:
wqe->type = BNXT_QPLIB_SWQE_TYPE_ATOMIC_CMP_AND_SWP;
+ wqe->atomic.cmp_data = atomic_wr(wr)->compare_add;
wqe->atomic.swap_data = atomic_wr(wr)->swap;
break;
case IB_WR_ATOMIC_FETCH_AND_ADD:
@@ -3062,7 +3083,7 @@ int bnxt_re_dereg_mr(struct ib_mr *ib_mr)
return rc;
}
- if (mr->npages && mr->pages) {
+ if (mr->pages) {
rc = bnxt_qplib_free_fast_reg_page_list(&rdev->qplib_res,
&mr->qplib_frpl);
kfree(mr->pages);
diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c
index 82d1cbc27aee..e7450ea92aa9 100644
--- a/drivers/infiniband/hw/bnxt_re/main.c
+++ b/drivers/infiniband/hw/bnxt_re/main.c
@@ -1161,6 +1161,8 @@ static int bnxt_re_ib_reg(struct bnxt_re_dev *rdev)
}
}
set_bit(BNXT_RE_FLAG_IBDEV_REGISTERED, &rdev->flags);
+ ib_get_eth_speed(&rdev->ibdev, 1, &rdev->active_speed,
+ &rdev->active_width);
bnxt_re_dispatch_event(&rdev->ibdev, NULL, 1, IB_EVENT_PORT_ACTIVE);
bnxt_re_dispatch_event(&rdev->ibdev, NULL, 1, IB_EVENT_GID_CHANGE);
@@ -1255,10 +1257,14 @@ static void bnxt_re_task(struct work_struct *work)
else if (netif_carrier_ok(rdev->netdev))
bnxt_re_dispatch_event(&rdev->ibdev, NULL, 1,
IB_EVENT_PORT_ACTIVE);
+ ib_get_eth_speed(&rdev->ibdev, 1, &rdev->active_speed,
+ &rdev->active_width);
break;
default:
break;
}
+ smp_mb__before_atomic();
+ clear_bit(BNXT_RE_FLAG_TASK_IN_PROG, &rdev->flags);
kfree(re_work);
}
@@ -1317,6 +1323,11 @@ static int bnxt_re_netdev_event(struct notifier_block *notifier,
break;
case NETDEV_UNREGISTER:
+ /* netdev notifier will call NETDEV_UNREGISTER again later since
+ * we are still holding the reference to the netdev
+ */
+ if (test_bit(BNXT_RE_FLAG_TASK_IN_PROG, &rdev->flags))
+ goto exit;
bnxt_re_ib_unreg(rdev, false);
bnxt_re_remove_one(rdev);
bnxt_re_dev_unreg(rdev);
@@ -1335,6 +1346,7 @@ static int bnxt_re_netdev_event(struct notifier_block *notifier,
re_work->vlan_dev = (real_dev == netdev ?
NULL : netdev);
INIT_WORK(&re_work->work, bnxt_re_task);
+ set_bit(BNXT_RE_FLAG_TASK_IN_PROG, &rdev->flags);
queue_work(bnxt_re_wq, &re_work->work);
}
}
@@ -1375,6 +1387,22 @@ err_netdev:
static void __exit bnxt_re_mod_exit(void)
{
+ struct bnxt_re_dev *rdev;
+ LIST_HEAD(to_be_deleted);
+
+ mutex_lock(&bnxt_re_dev_lock);
+ /* Free all adapter allocated resources */
+ if (!list_empty(&bnxt_re_dev_list))
+ list_splice_init(&bnxt_re_dev_list, &to_be_deleted);
+ mutex_unlock(&bnxt_re_dev_lock);
+
+ list_for_each_entry(rdev, &to_be_deleted, list) {
+ dev_info(rdev_to_dev(rdev), "Unregistering Device");
+ bnxt_re_dev_stop(rdev);
+ bnxt_re_ib_unreg(rdev, true);
+ bnxt_re_remove_one(rdev);
+ bnxt_re_dev_unreg(rdev);
+ }
unregister_netdevice_notifier(&bnxt_re_netdev_notifier);
if (bnxt_re_wq)
destroy_workqueue(bnxt_re_wq);
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
index 391bb7006e8f..2bdb1562bd21 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
+++ b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
@@ -107,6 +107,9 @@ static int __send_message(struct bnxt_qplib_rcfw *rcfw, struct cmdq_base *req,
return -EINVAL;
}
+ if (test_bit(FIRMWARE_TIMED_OUT, &rcfw->flags))
+ return -ETIMEDOUT;
+
/* Cmdq are in 16-byte units, each request can consume 1 or more
* cmdqe
*/
@@ -226,6 +229,7 @@ int bnxt_qplib_rcfw_send_message(struct bnxt_qplib_rcfw *rcfw,
/* timed out */
dev_err(&rcfw->pdev->dev, "QPLIB: cmdq[%#x]=%#x timedout (%d)msec",
cookie, opcode, RCFW_CMD_WAIT_TIME_MS);
+ set_bit(FIRMWARE_TIMED_OUT, &rcfw->flags);
return rc;
}
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.h b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.h
index 0ed312f17c8d..85b16da287f9 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.h
+++ b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.h
@@ -162,8 +162,9 @@ struct bnxt_qplib_rcfw {
unsigned long *cmdq_bitmap;
u32 bmap_size;
unsigned long flags;
-#define FIRMWARE_INITIALIZED_FLAG 1
+#define FIRMWARE_INITIALIZED_FLAG BIT(0)
#define FIRMWARE_FIRST_FLAG BIT(31)
+#define FIRMWARE_TIMED_OUT BIT(3)
wait_queue_head_t waitq;
int (*aeq_handler)(struct bnxt_qplib_rcfw *,
struct creq_func_event *);
diff --git a/drivers/infiniband/hw/cxgb3/Makefile b/drivers/infiniband/hw/cxgb3/Makefile
index 2761364185af..2c66d35d19bd 100644
--- a/drivers/infiniband/hw/cxgb3/Makefile
+++ b/drivers/infiniband/hw/cxgb3/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -Idrivers/net/ethernet/chelsio/cxgb3
obj-$(CONFIG_INFINIBAND_CXGB3) += iw_cxgb3.o
diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
index ceaa2fa54d32..daf7a56e5d7e 100644
--- a/drivers/infiniband/hw/cxgb4/cm.c
+++ b/drivers/infiniband/hw/cxgb4/cm.c
@@ -2333,9 +2333,14 @@ static int close_listsrv_rpl(struct c4iw_dev *dev, struct sk_buff *skb)
unsigned int stid = GET_TID(rpl);
struct c4iw_listen_ep *ep = get_ep_from_stid(dev, stid);
+ if (!ep) {
+ pr_debug("%s stid %d lookup failure!\n", __func__, stid);
+ goto out;
+ }
pr_debug("%s ep %p\n", __func__, ep);
c4iw_wake_up(&ep->com.wr_wait, status2errno(rpl->status));
c4iw_put_ep(&ep->com);
+out:
return 0;
}
@@ -2594,9 +2599,9 @@ fail:
c4iw_put_ep(&child_ep->com);
reject:
reject_cr(dev, hwtid, skb);
+out:
if (parent_ep)
c4iw_put_ep(&parent_ep->com);
-out:
return 0;
}
@@ -3457,7 +3462,7 @@ int c4iw_create_listen(struct iw_cm_id *cm_id, int backlog)
cm_id->provider_data = ep;
goto out;
}
-
+ remove_handle(ep->com.dev, &ep->com.dev->stid_idr, ep->stid);
cxgb4_free_stid(ep->com.dev->rdev.lldi.tids, ep->stid,
ep->com.local_addr.ss_family);
fail2:
diff --git a/drivers/infiniband/hw/hfi1/Makefile b/drivers/infiniband/hw/hfi1/Makefile
index 66d538c033b0..ce4010bad982 100644
--- a/drivers/infiniband/hw/hfi1/Makefile
+++ b/drivers/infiniband/hw/hfi1/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# HFI driver
#
diff --git a/drivers/infiniband/hw/hfi1/chip.c b/drivers/infiniband/hw/hfi1/chip.c
index b2ed4b9cda6e..0be42787759f 100644
--- a/drivers/infiniband/hw/hfi1/chip.c
+++ b/drivers/infiniband/hw/hfi1/chip.c
@@ -1066,6 +1066,8 @@ static int read_idle_sma(struct hfi1_devdata *dd, u64 *data);
static int thermal_init(struct hfi1_devdata *dd);
static void update_statusp(struct hfi1_pportdata *ppd, u32 state);
+static int wait_phys_link_offline_substates(struct hfi1_pportdata *ppd,
+ int msecs);
static int wait_logical_linkstate(struct hfi1_pportdata *ppd, u32 state,
int msecs);
static void log_state_transition(struct hfi1_pportdata *ppd, u32 state);
@@ -8238,6 +8240,7 @@ static irqreturn_t general_interrupt(int irq, void *data)
u64 regs[CCE_NUM_INT_CSRS];
u32 bit;
int i;
+ irqreturn_t handled = IRQ_NONE;
this_cpu_inc(*dd->int_counter);
@@ -8258,9 +8261,10 @@ static irqreturn_t general_interrupt(int irq, void *data)
for_each_set_bit(bit, (unsigned long *)&regs[0],
CCE_NUM_INT_CSRS * 64) {
is_interrupt(dd, bit);
+ handled = IRQ_HANDLED;
}
- return IRQ_HANDLED;
+ return handled;
}
static irqreturn_t sdma_interrupt(int irq, void *data)
@@ -9413,7 +9417,7 @@ static void set_qsfp_int_n(struct hfi1_pportdata *ppd, u8 enable)
write_csr(dd, dd->hfi1_id ? ASIC_QSFP2_MASK : ASIC_QSFP1_MASK, mask);
}
-void reset_qsfp(struct hfi1_pportdata *ppd)
+int reset_qsfp(struct hfi1_pportdata *ppd)
{
struct hfi1_devdata *dd = ppd->dd;
u64 mask, qsfp_mask;
@@ -9443,6 +9447,13 @@ void reset_qsfp(struct hfi1_pportdata *ppd)
* for alarms and warnings
*/
set_qsfp_int_n(ppd, 1);
+
+ /*
+ * After the reset, AOC transmitters are enabled by default. They need
+ * to be turned off to complete the QSFP setup before they can be
+ * enabled again.
+ */
+ return set_qsfp_tx(ppd, 0);
}
static int handle_qsfp_error_conditions(struct hfi1_pportdata *ppd,
@@ -10305,6 +10316,7 @@ static int goto_offline(struct hfi1_pportdata *ppd, u8 rem_reason)
{
struct hfi1_devdata *dd = ppd->dd;
u32 previous_state;
+ int offline_state_ret;
int ret;
update_lcb_cache(dd);
@@ -10326,28 +10338,11 @@ static int goto_offline(struct hfi1_pportdata *ppd, u8 rem_reason)
ppd->offline_disabled_reason =
HFI1_ODR_MASK(OPA_LINKDOWN_REASON_TRANSIENT);
- /*
- * Wait for offline transition. It can take a while for
- * the link to go down.
- */
- ret = wait_physical_linkstate(ppd, PLS_OFFLINE, 10000);
- if (ret < 0)
- return ret;
-
- /*
- * Now in charge of LCB - must be after the physical state is
- * offline.quiet and before host_link_state is changed.
- */
- set_host_lcb_access(dd);
- write_csr(dd, DC_LCB_ERR_EN, ~0ull); /* watch LCB errors */
-
- /* make sure the logical state is also down */
- ret = wait_logical_linkstate(ppd, IB_PORT_DOWN, 1000);
- if (ret)
- force_logical_link_state_down(ppd);
-
- ppd->host_link_state = HLS_LINK_COOLDOWN; /* LCB access allowed */
+ offline_state_ret = wait_phys_link_offline_substates(ppd, 10000);
+ if (offline_state_ret < 0)
+ return offline_state_ret;
+ /* Disabling AOC transmitters */
if (ppd->port_type == PORT_TYPE_QSFP &&
ppd->qsfp_info.limiting_active &&
qsfp_mod_present(ppd)) {
@@ -10365,6 +10360,30 @@ static int goto_offline(struct hfi1_pportdata *ppd, u8 rem_reason)
}
/*
+ * Wait for the offline.Quiet transition if it hasn't happened yet. It
+ * can take a while for the link to go down.
+ */
+ if (offline_state_ret != PLS_OFFLINE_QUIET) {
+ ret = wait_physical_linkstate(ppd, PLS_OFFLINE, 30000);
+ if (ret < 0)
+ return ret;
+ }
+
+ /*
+ * Now in charge of LCB - must be after the physical state is
+ * offline.quiet and before host_link_state is changed.
+ */
+ set_host_lcb_access(dd);
+ write_csr(dd, DC_LCB_ERR_EN, ~0ull); /* watch LCB errors */
+
+ /* make sure the logical state is also down */
+ ret = wait_logical_linkstate(ppd, IB_PORT_DOWN, 1000);
+ if (ret)
+ force_logical_link_state_down(ppd);
+
+ ppd->host_link_state = HLS_LINK_COOLDOWN; /* LCB access allowed */
+
+ /*
* The LNI has a mandatory wait time after the physical state
* moves to Offline.Quiet. The wait time may be different
* depending on how the link went down. The 8051 firmware
@@ -10396,6 +10415,9 @@ static int goto_offline(struct hfi1_pportdata *ppd, u8 rem_reason)
& (HLS_DN_POLL | HLS_VERIFY_CAP | HLS_GOING_UP)) {
/* went down while attempting link up */
check_lni_states(ppd);
+
+ /* The QSFP doesn't need to be reset on LNI failure */
+ ppd->qsfp_info.reset_needed = 0;
}
/* the active link width (downgrade) is 0 on link down */
@@ -12804,6 +12826,39 @@ static int wait_physical_linkstate(struct hfi1_pportdata *ppd, u32 state,
return 0;
}
+/*
+ * wait_phys_link_offline_quiet_substates - wait for any offline substate
+ * @ppd: port device
+ * @msecs: the number of milliseconds to wait
+ *
+ * Wait up to msecs milliseconds for any offline physical link
+ * state change to occur.
+ * Returns 0 if at least one state is reached, otherwise -ETIMEDOUT.
+ */
+static int wait_phys_link_offline_substates(struct hfi1_pportdata *ppd,
+ int msecs)
+{
+ u32 read_state;
+ unsigned long timeout;
+
+ timeout = jiffies + msecs_to_jiffies(msecs);
+ while (1) {
+ read_state = read_physical_state(ppd->dd);
+ if ((read_state & 0xF0) == PLS_OFFLINE)
+ break;
+ if (time_after(jiffies, timeout)) {
+ dd_dev_err(ppd->dd,
+ "timeout waiting for phy link offline.quiet substates. Read state 0x%x, %dms\n",
+ read_state, msecs);
+ return -ETIMEDOUT;
+ }
+ usleep_range(1950, 2050); /* sleep 2ms-ish */
+ }
+
+ log_state_transition(ppd, read_state);
+ return read_state;
+}
+
#define CLEAR_STATIC_RATE_CONTROL_SMASK(r) \
(r &= ~SEND_CTXT_CHECK_ENABLE_DISALLOW_PBC_STATIC_RATE_CONTROL_SMASK)
diff --git a/drivers/infiniband/hw/hfi1/chip.h b/drivers/infiniband/hw/hfi1/chip.h
index b8345a60a0fb..50b8645d0b87 100644
--- a/drivers/infiniband/hw/hfi1/chip.h
+++ b/drivers/infiniband/hw/hfi1/chip.h
@@ -204,6 +204,7 @@
#define PLS_OFFLINE_READY_TO_QUIET_LT 0x92
#define PLS_OFFLINE_REPORT_FAILURE 0x93
#define PLS_OFFLINE_READY_TO_QUIET_BCC 0x94
+#define PLS_OFFLINE_QUIET_DURATION 0x95
#define PLS_POLLING 0x20
#define PLS_POLLING_QUIET 0x20
#define PLS_POLLING_ACTIVE 0x21
@@ -722,7 +723,7 @@ void handle_link_downgrade(struct work_struct *work);
void handle_link_bounce(struct work_struct *work);
void handle_start_link(struct work_struct *work);
void handle_sma_message(struct work_struct *work);
-void reset_qsfp(struct hfi1_pportdata *ppd);
+int reset_qsfp(struct hfi1_pportdata *ppd);
void qsfp_event(struct work_struct *work);
void start_freeze_handling(struct hfi1_pportdata *ppd, int flags);
int send_idle_sma(struct hfi1_devdata *dd, u64 message);
diff --git a/drivers/infiniband/hw/hfi1/eprom.c b/drivers/infiniband/hw/hfi1/eprom.c
index d46b17107901..1613af1c58d9 100644
--- a/drivers/infiniband/hw/hfi1/eprom.c
+++ b/drivers/infiniband/hw/hfi1/eprom.c
@@ -204,7 +204,10 @@ done_asic:
return ret;
}
-/* magic character sequence that trails an image */
+/* magic character sequence that begins an image */
+#define IMAGE_START_MAGIC "APO="
+
+/* magic character sequence that might trail an image */
#define IMAGE_TRAIL_MAGIC "egamiAPO"
/* EPROM file types */
@@ -250,6 +253,7 @@ static int read_partition_platform_config(struct hfi1_devdata *dd, void **data,
{
void *buffer;
void *p;
+ u32 length;
int ret;
buffer = kmalloc(P1_SIZE, GFP_KERNEL);
@@ -262,15 +266,21 @@ static int read_partition_platform_config(struct hfi1_devdata *dd, void **data,
return ret;
}
- /* scan for image magic that may trail the actual data */
- p = strnstr(buffer, IMAGE_TRAIL_MAGIC, P1_SIZE);
- if (!p) {
+ /* config partition is valid only if it starts with IMAGE_START_MAGIC */
+ if (memcmp(buffer, IMAGE_START_MAGIC, strlen(IMAGE_START_MAGIC))) {
kfree(buffer);
return -ENOENT;
}
+ /* scan for image magic that may trail the actual data */
+ p = strnstr(buffer, IMAGE_TRAIL_MAGIC, P1_SIZE);
+ if (p)
+ length = p - buffer;
+ else
+ length = P1_SIZE;
+
*data = buffer;
- *size = p - buffer;
+ *size = length;
return 0;
}
diff --git a/drivers/infiniband/hw/hfi1/file_ops.c b/drivers/infiniband/hw/hfi1/file_ops.c
index 2bc89260235a..d9a1e9893136 100644
--- a/drivers/infiniband/hw/hfi1/file_ops.c
+++ b/drivers/infiniband/hw/hfi1/file_ops.c
@@ -930,15 +930,8 @@ static int assign_ctxt(struct hfi1_filedata *fd, struct hfi1_user_info *uinfo)
switch (ret) {
case 0:
ret = setup_base_ctxt(fd, uctxt);
- if (uctxt->subctxt_cnt) {
- /*
- * Base context is done (successfully or not), notify
- * anybody using a sub-context that is waiting for
- * this completion.
- */
- clear_bit(HFI1_CTXT_BASE_UNINIT, &uctxt->event_flags);
- wake_up(&uctxt->wait);
- }
+ if (ret)
+ deallocate_ctxt(uctxt);
break;
case 1:
ret = complete_subctxt(fd);
@@ -1305,25 +1298,25 @@ static int setup_base_ctxt(struct hfi1_filedata *fd,
/* Now allocate the RcvHdr queue and eager buffers. */
ret = hfi1_create_rcvhdrq(dd, uctxt);
if (ret)
- return ret;
+ goto done;
ret = hfi1_setup_eagerbufs(uctxt);
if (ret)
- goto setup_failed;
+ goto done;
/* If sub-contexts are enabled, do the appropriate setup */
if (uctxt->subctxt_cnt)
ret = setup_subctxt(uctxt);
if (ret)
- goto setup_failed;
+ goto done;
ret = hfi1_alloc_ctxt_rcv_groups(uctxt);
if (ret)
- goto setup_failed;
+ goto done;
ret = init_user_ctxt(fd, uctxt);
if (ret)
- goto setup_failed;
+ goto done;
user_init(uctxt);
@@ -1331,12 +1324,22 @@ static int setup_base_ctxt(struct hfi1_filedata *fd,
fd->uctxt = uctxt;
hfi1_rcd_get(uctxt);
- return 0;
+done:
+ if (uctxt->subctxt_cnt) {
+ /*
+ * On error, set the failed bit so sub-contexts will clean up
+ * correctly.
+ */
+ if (ret)
+ set_bit(HFI1_CTXT_BASE_FAILED, &uctxt->event_flags);
-setup_failed:
- /* Set the failed bit so sub-context init can do the right thing */
- set_bit(HFI1_CTXT_BASE_FAILED, &uctxt->event_flags);
- deallocate_ctxt(uctxt);
+ /*
+ * Base context is done (successfully or not), notify anybody
+ * using a sub-context that is waiting for this completion.
+ */
+ clear_bit(HFI1_CTXT_BASE_UNINIT, &uctxt->event_flags);
+ wake_up(&uctxt->wait);
+ }
return ret;
}
diff --git a/drivers/infiniband/hw/hfi1/pcie.c b/drivers/infiniband/hw/hfi1/pcie.c
index 82447b7cdda1..09e50fd2a08f 100644
--- a/drivers/infiniband/hw/hfi1/pcie.c
+++ b/drivers/infiniband/hw/hfi1/pcie.c
@@ -68,7 +68,7 @@
/*
* Code to adjust PCIe capabilities.
*/
-static int tune_pcie_caps(struct hfi1_devdata *);
+static void tune_pcie_caps(struct hfi1_devdata *);
/*
* Do all the common PCIe setup and initialization.
@@ -351,7 +351,7 @@ int pcie_speeds(struct hfi1_devdata *dd)
*/
int request_msix(struct hfi1_devdata *dd, u32 msireq)
{
- int nvec, ret;
+ int nvec;
nvec = pci_alloc_irq_vectors(dd->pcidev, 1, msireq,
PCI_IRQ_MSIX | PCI_IRQ_LEGACY);
@@ -360,12 +360,7 @@ int request_msix(struct hfi1_devdata *dd, u32 msireq)
return nvec;
}
- ret = tune_pcie_caps(dd);
- if (ret) {
- dd_dev_err(dd, "tune_pcie_caps() failed: %d\n", ret);
- pci_free_irq_vectors(dd->pcidev);
- return ret;
- }
+ tune_pcie_caps(dd);
/* check for legacy IRQ */
if (nvec == 1 && !dd->pcidev->msix_enabled)
@@ -502,7 +497,7 @@ uint aspm_mode = ASPM_MODE_DISABLED;
module_param_named(aspm, aspm_mode, uint, S_IRUGO);
MODULE_PARM_DESC(aspm, "PCIe ASPM: 0: disable, 1: enable, 2: dynamic");
-static int tune_pcie_caps(struct hfi1_devdata *dd)
+static void tune_pcie_caps(struct hfi1_devdata *dd)
{
struct pci_dev *parent;
u16 rc_mpss, rc_mps, ep_mpss, ep_mps;
@@ -513,22 +508,14 @@ static int tune_pcie_caps(struct hfi1_devdata *dd)
* Turn on extended tags in DevCtl in case the BIOS has turned it off
* to improve WFR SDMA bandwidth
*/
- ret = pcie_capability_read_word(dd->pcidev,
- PCI_EXP_DEVCTL, &ectl);
- if (ret) {
- dd_dev_err(dd, "Unable to read from PCI config\n");
- return ret;
- }
-
- if (!(ectl & PCI_EXP_DEVCTL_EXT_TAG)) {
+ ret = pcie_capability_read_word(dd->pcidev, PCI_EXP_DEVCTL, &ectl);
+ if ((!ret) && !(ectl & PCI_EXP_DEVCTL_EXT_TAG)) {
dd_dev_info(dd, "Enabling PCIe extended tags\n");
ectl |= PCI_EXP_DEVCTL_EXT_TAG;
ret = pcie_capability_write_word(dd->pcidev,
PCI_EXP_DEVCTL, ectl);
- if (ret) {
- dd_dev_err(dd, "Unable to write to PCI config\n");
- return ret;
- }
+ if (ret)
+ dd_dev_info(dd, "Unable to write to PCI config\n");
}
/* Find out supported and configured values for parent (root) */
parent = dd->pcidev->bus->self;
@@ -536,15 +523,22 @@ static int tune_pcie_caps(struct hfi1_devdata *dd)
* The driver cannot perform the tuning if it does not have
* access to the upstream component.
*/
- if (!parent)
- return -EINVAL;
+ if (!parent) {
+ dd_dev_info(dd, "Parent not found\n");
+ return;
+ }
if (!pci_is_root_bus(parent->bus)) {
dd_dev_info(dd, "Parent not root\n");
- return -EINVAL;
+ return;
+ }
+ if (!pci_is_pcie(parent)) {
+ dd_dev_info(dd, "Parent is not PCI Express capable\n");
+ return;
+ }
+ if (!pci_is_pcie(dd->pcidev)) {
+ dd_dev_info(dd, "PCI device is not PCI Express capable\n");
+ return;
}
-
- if (!pci_is_pcie(parent) || !pci_is_pcie(dd->pcidev))
- return -EINVAL;
rc_mpss = parent->pcie_mpss;
rc_mps = ffs(pcie_get_mps(parent)) - 8;
/* Find out supported and configured values for endpoint (us) */
@@ -590,8 +584,6 @@ static int tune_pcie_caps(struct hfi1_devdata *dd)
ep_mrrs = max_mrrs;
pcie_set_readrq(dd->pcidev, ep_mrrs);
}
-
- return 0;
}
/* End of PCIe capability tuning */
diff --git a/drivers/infiniband/hw/hfi1/platform.c b/drivers/infiniband/hw/hfi1/platform.c
index a8af96d2b1b0..d486355880cb 100644
--- a/drivers/infiniband/hw/hfi1/platform.c
+++ b/drivers/infiniband/hw/hfi1/platform.c
@@ -790,7 +790,9 @@ static int tune_active_qsfp(struct hfi1_pportdata *ppd, u32 *ptr_tx_preset,
* reuse of stale settings established in our previous pass through.
*/
if (ppd->qsfp_info.reset_needed) {
- reset_qsfp(ppd);
+ ret = reset_qsfp(ppd);
+ if (ret)
+ return ret;
refresh_qsfp_cache(ppd, &ppd->qsfp_info);
} else {
ppd->qsfp_info.reset_needed = 1;
diff --git a/drivers/infiniband/hw/i40iw/Makefile b/drivers/infiniband/hw/i40iw/Makefile
index 90068c03d217..5a8a7a3f28ae 100644
--- a/drivers/infiniband/hw/i40iw/Makefile
+++ b/drivers/infiniband/hw/i40iw/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -Idrivers/net/ethernet/intel/i40e
obj-$(CONFIG_INFINIBAND_I40IW) += i40iw.o
diff --git a/drivers/infiniband/hw/i40iw/i40iw.h b/drivers/infiniband/hw/i40iw/i40iw.h
index 9b1566468744..a65e4cbdce2f 100644
--- a/drivers/infiniband/hw/i40iw/i40iw.h
+++ b/drivers/infiniband/hw/i40iw/i40iw.h
@@ -201,7 +201,6 @@ enum init_completion_state {
CEQ_CREATED,
ILQ_CREATED,
IEQ_CREATED,
- INET_NOTIFIER,
IP_ADDR_REGISTERED,
RDMA_DEV_REGISTERED
};
diff --git a/drivers/infiniband/hw/i40iw/i40iw_cm.c b/drivers/infiniband/hw/i40iw/i40iw_cm.c
index 14f36ba4e5be..5230dd3c938c 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_cm.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c
@@ -1504,23 +1504,40 @@ static void i40iw_add_hte_node(struct i40iw_cm_core *cm_core,
}
/**
- * listen_port_in_use - determine if port is in use
- * @port: Listen port number
+ * i40iw_port_in_use - determine if port is in use
+ * @port: port number
+ * @active_side: flag for listener side vs active side
*/
-static bool i40iw_listen_port_in_use(struct i40iw_cm_core *cm_core, u16 port)
+static bool i40iw_port_in_use(struct i40iw_cm_core *cm_core, u16 port, bool active_side)
{
struct i40iw_cm_listener *listen_node;
+ struct i40iw_cm_node *cm_node;
unsigned long flags;
bool ret = false;
- spin_lock_irqsave(&cm_core->listen_list_lock, flags);
- list_for_each_entry(listen_node, &cm_core->listen_nodes, list) {
- if (listen_node->loc_port == port) {
- ret = true;
- break;
+ if (active_side) {
+ /* search connected node list */
+ spin_lock_irqsave(&cm_core->ht_lock, flags);
+ list_for_each_entry(cm_node, &cm_core->connected_nodes, list) {
+ if (cm_node->loc_port == port) {
+ ret = true;
+ break;
+ }
+ }
+ if (!ret)
+ clear_bit(port, cm_core->active_side_ports);
+ spin_unlock_irqrestore(&cm_core->ht_lock, flags);
+ } else {
+ spin_lock_irqsave(&cm_core->listen_list_lock, flags);
+ list_for_each_entry(listen_node, &cm_core->listen_nodes, list) {
+ if (listen_node->loc_port == port) {
+ ret = true;
+ break;
+ }
}
+ spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
}
- spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
+
return ret;
}
@@ -1868,7 +1885,7 @@ static int i40iw_dec_refcnt_listen(struct i40iw_cm_core *cm_core,
spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
if (listener->iwdev) {
- if (apbvt_del && !i40iw_listen_port_in_use(cm_core, listener->loc_port))
+ if (apbvt_del && !i40iw_port_in_use(cm_core, listener->loc_port, false))
i40iw_manage_apbvt(listener->iwdev,
listener->loc_port,
I40IW_MANAGE_APBVT_DEL);
@@ -2247,21 +2264,21 @@ static void i40iw_rem_ref_cm_node(struct i40iw_cm_node *cm_node)
if (cm_node->listener) {
i40iw_dec_refcnt_listen(cm_core, cm_node->listener, 0, true);
} else {
- if (!i40iw_listen_port_in_use(cm_core, cm_node->loc_port) &&
- cm_node->apbvt_set) {
+ if (!i40iw_port_in_use(cm_core, cm_node->loc_port, true) && cm_node->apbvt_set) {
i40iw_manage_apbvt(cm_node->iwdev,
cm_node->loc_port,
I40IW_MANAGE_APBVT_DEL);
- i40iw_get_addr_info(cm_node, &nfo);
- if (cm_node->qhash_set) {
- i40iw_manage_qhash(cm_node->iwdev,
- &nfo,
- I40IW_QHASH_TYPE_TCP_ESTABLISHED,
- I40IW_QHASH_MANAGE_TYPE_DELETE,
- NULL,
- false);
- cm_node->qhash_set = 0;
- }
+ cm_node->apbvt_set = 0;
+ }
+ i40iw_get_addr_info(cm_node, &nfo);
+ if (cm_node->qhash_set) {
+ i40iw_manage_qhash(cm_node->iwdev,
+ &nfo,
+ I40IW_QHASH_TYPE_TCP_ESTABLISHED,
+ I40IW_QHASH_MANAGE_TYPE_DELETE,
+ NULL,
+ false);
+ cm_node->qhash_set = 0;
}
}
@@ -3255,7 +3272,8 @@ static void i40iw_init_tcp_ctx(struct i40iw_cm_node *cm_node,
tcp_info->snd_mss = cpu_to_le32(((u32)cm_node->tcp_cntxt.mss));
if (cm_node->vlan_id < VLAN_TAG_PRESENT) {
tcp_info->insert_vlan_tag = true;
- tcp_info->vlan_tag = cpu_to_le16(cm_node->vlan_id);
+ tcp_info->vlan_tag = cpu_to_le16(((u16)cm_node->user_pri << I40IW_VLAN_PRIO_SHIFT) |
+ cm_node->vlan_id);
}
if (cm_node->ipv4) {
tcp_info->src_port = cpu_to_le16(cm_node->loc_port);
@@ -3737,10 +3755,8 @@ int i40iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
struct sockaddr_in *raddr;
struct sockaddr_in6 *laddr6;
struct sockaddr_in6 *raddr6;
- bool qhash_set = false;
- int apbvt_set = 0;
- int err = 0;
- enum i40iw_status_code status;
+ int ret = 0;
+ unsigned long flags;
ibqp = i40iw_get_qp(cm_id->device, conn_param->qpn);
if (!ibqp)
@@ -3789,32 +3805,6 @@ int i40iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
cm_info.user_pri = rt_tos2priority(cm_id->tos);
i40iw_debug(&iwdev->sc_dev, I40IW_DEBUG_DCB, "%s TOS:[%d] UP:[%d]\n",
__func__, cm_id->tos, cm_info.user_pri);
- if ((cm_info.ipv4 && (laddr->sin_addr.s_addr != raddr->sin_addr.s_addr)) ||
- (!cm_info.ipv4 && memcmp(laddr6->sin6_addr.in6_u.u6_addr32,
- raddr6->sin6_addr.in6_u.u6_addr32,
- sizeof(laddr6->sin6_addr.in6_u.u6_addr32)))) {
- status = i40iw_manage_qhash(iwdev,
- &cm_info,
- I40IW_QHASH_TYPE_TCP_ESTABLISHED,
- I40IW_QHASH_MANAGE_TYPE_ADD,
- NULL,
- true);
- if (status)
- return -EINVAL;
- qhash_set = true;
- }
- status = i40iw_manage_apbvt(iwdev, cm_info.loc_port, I40IW_MANAGE_APBVT_ADD);
- if (status) {
- i40iw_manage_qhash(iwdev,
- &cm_info,
- I40IW_QHASH_TYPE_TCP_ESTABLISHED,
- I40IW_QHASH_MANAGE_TYPE_DELETE,
- NULL,
- false);
- return -EINVAL;
- }
-
- apbvt_set = 1;
cm_id->add_ref(cm_id);
cm_node = i40iw_create_cm_node(&iwdev->cm_core, iwdev,
conn_param->private_data_len,
@@ -3822,17 +3812,40 @@ int i40iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
&cm_info);
if (IS_ERR(cm_node)) {
- err = PTR_ERR(cm_node);
- goto err_out;
+ ret = PTR_ERR(cm_node);
+ cm_id->rem_ref(cm_id);
+ return ret;
+ }
+
+ if ((cm_info.ipv4 && (laddr->sin_addr.s_addr != raddr->sin_addr.s_addr)) ||
+ (!cm_info.ipv4 && memcmp(laddr6->sin6_addr.in6_u.u6_addr32,
+ raddr6->sin6_addr.in6_u.u6_addr32,
+ sizeof(laddr6->sin6_addr.in6_u.u6_addr32)))) {
+ if (i40iw_manage_qhash(iwdev, &cm_info, I40IW_QHASH_TYPE_TCP_ESTABLISHED,
+ I40IW_QHASH_MANAGE_TYPE_ADD, NULL, true)) {
+ ret = -EINVAL;
+ goto err;
+ }
+ cm_node->qhash_set = true;
}
+ spin_lock_irqsave(&iwdev->cm_core.ht_lock, flags);
+ if (!test_and_set_bit(cm_info.loc_port, iwdev->cm_core.active_side_ports)) {
+ spin_unlock_irqrestore(&iwdev->cm_core.ht_lock, flags);
+ if (i40iw_manage_apbvt(iwdev, cm_info.loc_port, I40IW_MANAGE_APBVT_ADD)) {
+ ret = -EINVAL;
+ goto err;
+ }
+ } else {
+ spin_unlock_irqrestore(&iwdev->cm_core.ht_lock, flags);
+ }
+
+ cm_node->apbvt_set = true;
i40iw_record_ird_ord(cm_node, (u16)conn_param->ird, (u16)conn_param->ord);
if (cm_node->send_rdma0_op == SEND_RDMA_READ_ZERO &&
!cm_node->ord_size)
cm_node->ord_size = 1;
- cm_node->apbvt_set = apbvt_set;
- cm_node->qhash_set = qhash_set;
iwqp->cm_node = cm_node;
cm_node->iwqp = iwqp;
iwqp->cm_id = cm_id;
@@ -3840,11 +3853,9 @@ int i40iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
if (cm_node->state != I40IW_CM_STATE_OFFLOADED) {
cm_node->state = I40IW_CM_STATE_SYN_SENT;
- err = i40iw_send_syn(cm_node, 0);
- if (err) {
- i40iw_rem_ref_cm_node(cm_node);
- goto err_out;
- }
+ ret = i40iw_send_syn(cm_node, 0);
+ if (ret)
+ goto err;
}
i40iw_debug(cm_node->dev,
@@ -3853,9 +3864,10 @@ int i40iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
cm_node->rem_port,
cm_node,
cm_node->cm_id);
+
return 0;
-err_out:
+err:
if (cm_info.ipv4)
i40iw_debug(&iwdev->sc_dev,
I40IW_DEBUG_CM,
@@ -3867,22 +3879,10 @@ err_out:
"Api - connect() FAILED: dest addr=%pI6",
cm_info.rem_addr);
- if (qhash_set)
- i40iw_manage_qhash(iwdev,
- &cm_info,
- I40IW_QHASH_TYPE_TCP_ESTABLISHED,
- I40IW_QHASH_MANAGE_TYPE_DELETE,
- NULL,
- false);
-
- if (apbvt_set && !i40iw_listen_port_in_use(&iwdev->cm_core,
- cm_info.loc_port))
- i40iw_manage_apbvt(iwdev,
- cm_info.loc_port,
- I40IW_MANAGE_APBVT_DEL);
+ i40iw_rem_ref_cm_node(cm_node);
cm_id->rem_ref(cm_id);
iwdev->cm_core.stats_connect_errs++;
- return err;
+ return ret;
}
/**
diff --git a/drivers/infiniband/hw/i40iw/i40iw_cm.h b/drivers/infiniband/hw/i40iw/i40iw_cm.h
index 2e52e38ffcf3..45abef76295b 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_cm.h
+++ b/drivers/infiniband/hw/i40iw/i40iw_cm.h
@@ -71,6 +71,9 @@
#define I40IW_HW_IRD_SETTING_32 32
#define I40IW_HW_IRD_SETTING_64 64
+#define MAX_PORTS 65536
+#define I40IW_VLAN_PRIO_SHIFT 13
+
enum ietf_mpa_flags {
IETF_MPA_FLAGS_MARKERS = 0x80, /* receive Markers */
IETF_MPA_FLAGS_CRC = 0x40, /* receive Markers */
@@ -411,6 +414,8 @@ struct i40iw_cm_core {
spinlock_t ht_lock; /* manage hash table */
spinlock_t listen_list_lock; /* listen list */
+ unsigned long active_side_ports[BITS_TO_LONGS(MAX_PORTS)];
+
u64 stats_nodes_created;
u64 stats_nodes_destroyed;
u64 stats_listen_created;
diff --git a/drivers/infiniband/hw/i40iw/i40iw_ctrl.c b/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
index d1f5345f04f0..42ca5346777d 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
@@ -48,7 +48,7 @@
* @wqe: cqp wqe for header
* @header: header for the cqp wqe
*/
-static inline void i40iw_insert_wqe_hdr(u64 *wqe, u64 header)
+void i40iw_insert_wqe_hdr(u64 *wqe, u64 header)
{
wmb(); /* make sure WQE is populated before polarity is set */
set_64bit_val(wqe, 24, header);
diff --git a/drivers/infiniband/hw/i40iw/i40iw_main.c b/drivers/infiniband/hw/i40iw/i40iw_main.c
index cc742c3132c6..27590ae21881 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_main.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_main.c
@@ -99,8 +99,6 @@ static struct notifier_block i40iw_net_notifier = {
.notifier_call = i40iw_net_event
};
-static atomic_t i40iw_notifiers_registered;
-
/**
* i40iw_find_i40e_handler - find a handler given a client info
* @ldev: pointer to a client info
@@ -1376,11 +1374,20 @@ error:
*/
static void i40iw_register_notifiers(void)
{
- if (atomic_inc_return(&i40iw_notifiers_registered) == 1) {
- register_inetaddr_notifier(&i40iw_inetaddr_notifier);
- register_inet6addr_notifier(&i40iw_inetaddr6_notifier);
- register_netevent_notifier(&i40iw_net_notifier);
- }
+ register_inetaddr_notifier(&i40iw_inetaddr_notifier);
+ register_inet6addr_notifier(&i40iw_inetaddr6_notifier);
+ register_netevent_notifier(&i40iw_net_notifier);
+}
+
+/**
+ * i40iw_unregister_notifiers - unregister tcp ip notifiers
+ */
+
+static void i40iw_unregister_notifiers(void)
+{
+ unregister_netevent_notifier(&i40iw_net_notifier);
+ unregister_inetaddr_notifier(&i40iw_inetaddr_notifier);
+ unregister_inet6addr_notifier(&i40iw_inetaddr6_notifier);
}
/**
@@ -1400,6 +1407,11 @@ static enum i40iw_status_code i40iw_save_msix_info(struct i40iw_device *iwdev,
u32 i;
u32 size;
+ if (!ldev->msix_count) {
+ i40iw_pr_err("No MSI-X vectors\n");
+ return I40IW_ERR_CONFIG;
+ }
+
iwdev->msix_count = ldev->msix_count;
size = sizeof(struct i40iw_msix_vector) * iwdev->msix_count;
@@ -1462,12 +1474,6 @@ static void i40iw_deinit_device(struct i40iw_device *iwdev)
if (!iwdev->reset)
i40iw_del_macip_entry(iwdev, (u8)iwdev->mac_ip_table_idx);
/* fallthrough */
- case INET_NOTIFIER:
- if (!atomic_dec_return(&i40iw_notifiers_registered)) {
- unregister_netevent_notifier(&i40iw_net_notifier);
- unregister_inetaddr_notifier(&i40iw_inetaddr_notifier);
- unregister_inet6addr_notifier(&i40iw_inetaddr6_notifier);
- }
/* fallthrough */
case PBLE_CHUNK_MEM:
i40iw_destroy_pble_pool(dev, iwdev->pble_rsrc);
@@ -1550,7 +1556,7 @@ static enum i40iw_status_code i40iw_setup_init_state(struct i40iw_handler *hdl,
status = i40iw_save_msix_info(iwdev, ldev);
if (status)
- goto exit;
+ return status;
iwdev->hw.dev_context = (void *)ldev->pcidev;
iwdev->hw.hw_addr = ldev->hw_addr;
status = i40iw_allocate_dma_mem(&iwdev->hw,
@@ -1667,8 +1673,6 @@ static int i40iw_open(struct i40e_info *ldev, struct i40e_client *client)
break;
iwdev->init_state = PBLE_CHUNK_MEM;
iwdev->virtchnl_wq = alloc_ordered_workqueue("iwvch", WQ_MEM_RECLAIM);
- i40iw_register_notifiers();
- iwdev->init_state = INET_NOTIFIER;
status = i40iw_add_mac_ip(iwdev);
if (status)
break;
@@ -2018,6 +2022,8 @@ static int __init i40iw_init_module(void)
i40iw_client.type = I40E_CLIENT_IWARP;
spin_lock_init(&i40iw_handler_lock);
ret = i40e_register_client(&i40iw_client);
+ i40iw_register_notifiers();
+
return ret;
}
@@ -2029,6 +2035,7 @@ static int __init i40iw_init_module(void)
*/
static void __exit i40iw_exit_module(void)
{
+ i40iw_unregister_notifiers();
i40e_unregister_client(&i40iw_client);
}
diff --git a/drivers/infiniband/hw/i40iw/i40iw_p.h b/drivers/infiniband/hw/i40iw/i40iw_p.h
index e217a1259f57..5498ad01c280 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_p.h
+++ b/drivers/infiniband/hw/i40iw/i40iw_p.h
@@ -59,6 +59,8 @@ enum i40iw_status_code i40iw_sc_mr_fast_register(struct i40iw_sc_qp *qp,
struct i40iw_fast_reg_stag_info *info,
bool post_sq);
+void i40iw_insert_wqe_hdr(u64 *wqe, u64 header);
+
/* HMC/FPM functions */
enum i40iw_status_code i40iw_sc_init_iw_hmc(struct i40iw_sc_dev *dev,
u8 hmc_fn_id);
diff --git a/drivers/infiniband/hw/i40iw/i40iw_puda.c b/drivers/infiniband/hw/i40iw/i40iw_puda.c
index c2cab20c4bc5..59f70676f0e0 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_puda.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_puda.c
@@ -123,12 +123,11 @@ static void i40iw_puda_post_recvbuf(struct i40iw_puda_rsrc *rsrc, u32 wqe_idx,
get_64bit_val(wqe, 24, &offset24);
offset24 = (offset24) ? 0 : LS_64(1, I40IWQPSQ_VALID);
- set_64bit_val(wqe, 24, offset24);
set_64bit_val(wqe, 0, buf->mem.pa);
set_64bit_val(wqe, 8,
LS_64(buf->mem.size, I40IWQPSQ_FRAG_LEN));
- set_64bit_val(wqe, 24, offset24);
+ i40iw_insert_wqe_hdr(wqe, offset24);
}
/**
@@ -409,9 +408,7 @@ enum i40iw_status_code i40iw_puda_send(struct i40iw_sc_qp *qp,
set_64bit_val(wqe, 8, LS_64(info->len, I40IWQPSQ_FRAG_LEN));
set_64bit_val(wqe, 16, header[0]);
- /* Ensure all data is written before writing valid bit */
- wmb();
- set_64bit_val(wqe, 24, header[1]);
+ i40iw_insert_wqe_hdr(wqe, header[1]);
i40iw_debug_buf(qp->dev, I40IW_DEBUG_PUDA, "PUDA SEND WQE", wqe, 32);
i40iw_qp_post_wr(&qp->qp_uk);
@@ -539,7 +536,7 @@ static enum i40iw_status_code i40iw_puda_qp_wqe(struct i40iw_sc_dev *dev, struct
LS_64(2, I40IW_CQPSQ_QP_NEXTIWSTATE) |
LS_64(cqp->polarity, I40IW_CQPSQ_WQEVALID);
- set_64bit_val(wqe, 24, header);
+ i40iw_insert_wqe_hdr(wqe, header);
i40iw_debug_buf(cqp->dev, I40IW_DEBUG_PUDA, "PUDA CQE", wqe, 32);
i40iw_sc_cqp_post_sq(cqp);
@@ -655,7 +652,7 @@ static enum i40iw_status_code i40iw_puda_cq_wqe(struct i40iw_sc_dev *dev, struct
LS_64(1, I40IW_CQPSQ_CQ_ENCEQEMASK) |
LS_64(1, I40IW_CQPSQ_CQ_CEQIDVALID) |
LS_64(cqp->polarity, I40IW_CQPSQ_WQEVALID);
- set_64bit_val(wqe, 24, header);
+ i40iw_insert_wqe_hdr(wqe, header);
i40iw_debug_buf(dev, I40IW_DEBUG_PUDA, "PUDA CQE",
wqe, I40IW_CQP_WQE_SIZE * 8);
diff --git a/drivers/infiniband/hw/i40iw/i40iw_utils.c b/drivers/infiniband/hw/i40iw/i40iw_utils.c
index 62f1f45b8737..e52dbbb4165e 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_utils.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_utils.c
@@ -160,7 +160,7 @@ int i40iw_inetaddr_event(struct notifier_block *notifier,
return NOTIFY_DONE;
iwdev = &hdl->device;
- if (iwdev->init_state < INET_NOTIFIER)
+ if (iwdev->init_state < IP_ADDR_REGISTERED || iwdev->closing)
return NOTIFY_DONE;
netdev = iwdev->ldev->netdev;
@@ -217,7 +217,7 @@ int i40iw_inet6addr_event(struct notifier_block *notifier,
return NOTIFY_DONE;
iwdev = &hdl->device;
- if (iwdev->init_state < INET_NOTIFIER)
+ if (iwdev->init_state < IP_ADDR_REGISTERED || iwdev->closing)
return NOTIFY_DONE;
netdev = iwdev->ldev->netdev;
@@ -266,7 +266,7 @@ int i40iw_net_event(struct notifier_block *notifier, unsigned long event, void *
if (!iwhdl)
return NOTIFY_DONE;
iwdev = &iwhdl->device;
- if (iwdev->init_state < INET_NOTIFIER)
+ if (iwdev->init_state < IP_ADDR_REGISTERED || iwdev->closing)
return NOTIFY_DONE;
p = (__be32 *)neigh->primary_key;
i40iw_copy_ip_ntohl(local_ipaddr, p);
diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.c b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
index 1aa411034a27..62be0a41ad0b 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
@@ -826,12 +826,14 @@ static int i40iw_query_qp(struct ib_qp *ibqp,
attr->cap.max_inline_data = I40IW_MAX_INLINE_DATA_SIZE;
attr->cap.max_send_sge = I40IW_MAX_WQ_FRAGMENT_COUNT;
attr->cap.max_recv_sge = I40IW_MAX_WQ_FRAGMENT_COUNT;
+ attr->port_num = 1;
init_attr->event_handler = iwqp->ibqp.event_handler;
init_attr->qp_context = iwqp->ibqp.qp_context;
init_attr->send_cq = iwqp->ibqp.send_cq;
init_attr->recv_cq = iwqp->ibqp.recv_cq;
init_attr->srq = iwqp->ibqp.srq;
init_attr->cap = attr->cap;
+ init_attr->port_num = 1;
return 0;
}
@@ -1027,7 +1029,19 @@ int i40iw_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
iwqp->hw_tcp_state = I40IW_TCP_STATE_CLOSED;
iwqp->last_aeq = I40IW_AE_RESET_SENT;
spin_unlock_irqrestore(&iwqp->lock, flags);
+ i40iw_cm_disconn(iwqp);
}
+ } else {
+ spin_lock_irqsave(&iwqp->lock, flags);
+ if (iwqp->cm_id) {
+ if (atomic_inc_return(&iwqp->close_timer_started) == 1) {
+ iwqp->cm_id->add_ref(iwqp->cm_id);
+ i40iw_schedule_cm_timer(iwqp->cm_node,
+ (struct i40iw_puda_buf *)iwqp,
+ I40IW_TIMER_TYPE_CLOSE, 1, 0);
+ }
+ }
+ spin_unlock_irqrestore(&iwqp->lock, flags);
}
}
return 0;
diff --git a/drivers/infiniband/hw/mlx4/sysfs.c b/drivers/infiniband/hw/mlx4/sysfs.c
index 0ba5ba7540c8..e219093d2764 100644
--- a/drivers/infiniband/hw/mlx4/sysfs.c
+++ b/drivers/infiniband/hw/mlx4/sysfs.c
@@ -221,7 +221,7 @@ void del_sysfs_port_mcg_attr(struct mlx4_ib_dev *device, int port_num,
static int add_port_entries(struct mlx4_ib_dev *device, int port_num)
{
int i;
- char buff[10];
+ char buff[11];
struct mlx4_ib_iov_port *port = NULL;
int ret = 0 ;
struct ib_port_attr attr;
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index ab3c562d5ba7..552f7bd4ecc3 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -778,13 +778,13 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,
}
if (MLX5_CAP_GEN(mdev, tag_matching)) {
- props->xrq_caps.max_rndv_hdr_size = MLX5_TM_MAX_RNDV_MSG_SIZE;
- props->xrq_caps.max_num_tags =
+ props->tm_caps.max_rndv_hdr_size = MLX5_TM_MAX_RNDV_MSG_SIZE;
+ props->tm_caps.max_num_tags =
(1 << MLX5_CAP_GEN(mdev, log_tag_matching_list_sz)) - 1;
- props->xrq_caps.flags = IB_TM_CAP_RC;
- props->xrq_caps.max_ops =
+ props->tm_caps.flags = IB_TM_CAP_RC;
+ props->tm_caps.max_ops =
1 << MLX5_CAP_GEN(mdev, log_max_qp_sz);
- props->xrq_caps.max_sge = MLX5_TM_MAX_SGE;
+ props->tm_caps.max_sge = MLX5_TM_MAX_SGE;
}
if (field_avail(typeof(resp), cqe_comp_caps, uhw->outlen)) {
@@ -3837,11 +3837,13 @@ static int delay_drop_debugfs_init(struct mlx5_ib_dev *dev)
if (!dbg)
return -ENOMEM;
+ dev->delay_drop.dbg = dbg;
+
dbg->dir_debugfs =
debugfs_create_dir("delay_drop",
dev->mdev->priv.dbg_root);
if (!dbg->dir_debugfs)
- return -ENOMEM;
+ goto out_debugfs;
dbg->events_cnt_debugfs =
debugfs_create_atomic_t("num_timeout_events", 0400,
@@ -3865,8 +3867,6 @@ static int delay_drop_debugfs_init(struct mlx5_ib_dev *dev)
if (!dbg->timeout_debugfs)
goto out_debugfs;
- dev->delay_drop.dbg = dbg;
-
return 0;
out_debugfs:
@@ -4174,9 +4174,9 @@ err_bfreg:
err_uar_page:
mlx5_put_uars_page(dev->mdev, dev->mdev->priv.uar);
-err_cnt:
- mlx5_ib_cleanup_cong_debugfs(dev);
err_cong:
+ mlx5_ib_cleanup_cong_debugfs(dev);
+err_cnt:
if (MLX5_CAP_GEN(dev->mdev, max_qp_cnt))
mlx5_ib_dealloc_counters(dev);
diff --git a/drivers/infiniband/hw/mlx5/mem.c b/drivers/infiniband/hw/mlx5/mem.c
index 914f212e7ef6..f3dbd75a0a96 100644
--- a/drivers/infiniband/hw/mlx5/mem.c
+++ b/drivers/infiniband/hw/mlx5/mem.c
@@ -50,13 +50,9 @@ void mlx5_ib_cont_pages(struct ib_umem *umem, u64 addr,
{
unsigned long tmp;
unsigned long m;
- int i, k;
- u64 base = 0;
- int p = 0;
- int skip;
- int mask;
- u64 len;
- u64 pfn;
+ u64 base = ~0, p = 0;
+ u64 len, pfn;
+ int i = 0;
struct scatterlist *sg;
int entry;
unsigned long page_shift = umem->page_shift;
@@ -76,33 +72,24 @@ void mlx5_ib_cont_pages(struct ib_umem *umem, u64 addr,
m = find_first_bit(&tmp, BITS_PER_LONG);
if (max_page_shift)
m = min_t(unsigned long, max_page_shift - page_shift, m);
- skip = 1 << m;
- mask = skip - 1;
- i = 0;
+
for_each_sg(umem->sg_head.sgl, sg, umem->nmap, entry) {
len = sg_dma_len(sg) >> page_shift;
pfn = sg_dma_address(sg) >> page_shift;
- for (k = 0; k < len; k++) {
- if (!(i & mask)) {
- tmp = (unsigned long)pfn;
- m = min_t(unsigned long, m, find_first_bit(&tmp, BITS_PER_LONG));
- skip = 1 << m;
- mask = skip - 1;
- base = pfn;
- p = 0;
- } else {
- if (base + p != pfn) {
- tmp = (unsigned long)p;
- m = find_first_bit(&tmp, BITS_PER_LONG);
- skip = 1 << m;
- mask = skip - 1;
- base = pfn;
- p = 0;
- }
- }
- p++;
- i++;
+ if (base + p != pfn) {
+ /* If either the offset or the new
+ * base are unaligned update m
+ */
+ tmp = (unsigned long)(pfn | p);
+ if (!IS_ALIGNED(tmp, 1 << m))
+ m = find_first_bit(&tmp, BITS_PER_LONG);
+
+ base = pfn;
+ p = 0;
}
+
+ p += len;
+ i += len;
}
if (i) {
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 0e2789d9bb4d..37bbc543847a 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -47,7 +47,8 @@ enum {
#define MLX5_UMR_ALIGN 2048
-static int clean_mr(struct mlx5_ib_mr *mr);
+static int clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr);
+static int dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr);
static int mr_cache_max_order(struct mlx5_ib_dev *dev);
static int unreg_umr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr);
@@ -1270,8 +1271,9 @@ struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
err = mlx5_ib_update_xlt(mr, 0, ncont, page_shift,
update_xlt_flags);
+
if (err) {
- mlx5_ib_dereg_mr(&mr->ibmr);
+ dereg_mr(dev, mr);
return ERR_PTR(err);
}
}
@@ -1356,7 +1358,7 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,
err = mr_umem_get(pd, addr, len, access_flags, &mr->umem,
&npages, &page_shift, &ncont, &order);
if (err < 0) {
- clean_mr(mr);
+ clean_mr(dev, mr);
return err;
}
}
@@ -1410,7 +1412,7 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,
if (err) {
mlx5_ib_warn(dev, "Failed to rereg UMR\n");
ib_umem_release(mr->umem);
- clean_mr(mr);
+ clean_mr(dev, mr);
return err;
}
}
@@ -1469,9 +1471,8 @@ mlx5_free_priv_descs(struct mlx5_ib_mr *mr)
}
}
-static int clean_mr(struct mlx5_ib_mr *mr)
+static int clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr)
{
- struct mlx5_ib_dev *dev = to_mdev(mr->ibmr.device);
int allocated_from_cache = mr->allocated_from_cache;
int err;
@@ -1507,10 +1508,8 @@ static int clean_mr(struct mlx5_ib_mr *mr)
return 0;
}
-int mlx5_ib_dereg_mr(struct ib_mr *ibmr)
+static int dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr)
{
- struct mlx5_ib_dev *dev = to_mdev(ibmr->device);
- struct mlx5_ib_mr *mr = to_mmr(ibmr);
int npages = mr->npages;
struct ib_umem *umem = mr->umem;
@@ -1539,7 +1538,7 @@ int mlx5_ib_dereg_mr(struct ib_mr *ibmr)
}
#endif
- clean_mr(mr);
+ clean_mr(dev, mr);
if (umem) {
ib_umem_release(umem);
@@ -1549,6 +1548,14 @@ int mlx5_ib_dereg_mr(struct ib_mr *ibmr)
return 0;
}
+int mlx5_ib_dereg_mr(struct ib_mr *ibmr)
+{
+ struct mlx5_ib_dev *dev = to_mdev(ibmr->device);
+ struct mlx5_ib_mr *mr = to_mmr(ibmr);
+
+ return dereg_mr(dev, mr);
+}
+
struct ib_mr *mlx5_ib_alloc_mr(struct ib_pd *pd,
enum ib_mr_type mr_type,
u32 max_num_sg)
diff --git a/drivers/infiniband/hw/mthca/Makefile b/drivers/infiniband/hw/mthca/Makefile
index e388d95d0cf1..3a09e9ffd634 100644
--- a/drivers/infiniband/hw/mthca/Makefile
+++ b/drivers/infiniband/hw/mthca/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_INFINIBAND_MTHCA) += ib_mthca.o
ib_mthca-y := mthca_main.o mthca_cmd.o mthca_profile.o mthca_reset.o \
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
index f0dc5f4aa177..442b9bdc0f03 100644
--- a/drivers/infiniband/hw/nes/nes_verbs.c
+++ b/drivers/infiniband/hw/nes/nes_verbs.c
@@ -3232,7 +3232,7 @@ static int nes_post_send(struct ib_qp *ibqp, struct ib_send_wr *ib_wr,
mr->ibmr.iova);
set_wqe_32bit_value(wqe->wqe_words,
NES_IWARP_SQ_FMR_WQE_LENGTH_LOW_IDX,
- mr->ibmr.length);
+ lower_32_bits(mr->ibmr.length));
set_wqe_32bit_value(wqe->wqe_words,
NES_IWARP_SQ_FMR_WQE_LENGTH_HIGH_IDX, 0);
set_wqe_32bit_value(wqe->wqe_words,
@@ -3274,7 +3274,7 @@ static int nes_post_send(struct ib_qp *ibqp, struct ib_send_wr *ib_wr,
mr->npages * 8);
nes_debug(NES_DBG_IW_TX, "SQ_REG_MR: iova_start: %llx, "
- "length: %d, rkey: %0x, pgl_paddr: %llx, "
+ "length: %lld, rkey: %0x, pgl_paddr: %llx, "
"page_list_len: %u, wqe_misc: %x\n",
(unsigned long long) mr->ibmr.iova,
mr->ibmr.length,
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
index dcb5942f9fb5..65b166cc7437 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
@@ -252,7 +252,10 @@ static int ocrdma_get_mbx_errno(u32 status)
case OCRDMA_MBX_ADDI_STATUS_INSUFFICIENT_RESOURCES:
err_num = -EAGAIN;
break;
+ default:
+ err_num = -EFAULT;
}
+ break;
default:
err_num = -EFAULT;
}
diff --git a/drivers/infiniband/hw/qedr/qedr.h b/drivers/infiniband/hw/qedr/qedr.h
index b2bb42e2805d..254083b524bd 100644
--- a/drivers/infiniband/hw/qedr/qedr.h
+++ b/drivers/infiniband/hw/qedr/qedr.h
@@ -387,7 +387,7 @@ struct qedr_qp {
u8 wqe_size;
u8 smac[ETH_ALEN];
- u16 vlan_id;
+ u16 vlan;
int rc;
} *rqe_wr_id;
diff --git a/drivers/infiniband/hw/qedr/qedr_cm.c b/drivers/infiniband/hw/qedr/qedr_cm.c
index 4689e802b332..ad8965397cf7 100644
--- a/drivers/infiniband/hw/qedr/qedr_cm.c
+++ b/drivers/infiniband/hw/qedr/qedr_cm.c
@@ -105,7 +105,7 @@ void qedr_ll2_complete_rx_packet(void *cxt,
qp->rqe_wr_id[qp->rq.gsi_cons].rc = data->u.data_length_error ?
-EINVAL : 0;
- qp->rqe_wr_id[qp->rq.gsi_cons].vlan_id = data->vlan;
+ qp->rqe_wr_id[qp->rq.gsi_cons].vlan = data->vlan;
/* note: length stands for data length i.e. GRH is excluded */
qp->rqe_wr_id[qp->rq.gsi_cons].sg_list[0].length =
data->length.data_length;
@@ -694,6 +694,7 @@ int qedr_gsi_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *wc)
struct qedr_cq *cq = get_qedr_cq(ibcq);
struct qedr_qp *qp = dev->gsi_qp;
unsigned long flags;
+ u16 vlan_id;
int i = 0;
spin_lock_irqsave(&cq->cq_lock, flags);
@@ -712,9 +713,14 @@ int qedr_gsi_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *wc)
wc[i].wc_flags |= IB_WC_GRH | IB_WC_IP_CSUM_OK;
ether_addr_copy(wc[i].smac, qp->rqe_wr_id[qp->rq.cons].smac);
wc[i].wc_flags |= IB_WC_WITH_SMAC;
- if (qp->rqe_wr_id[qp->rq.cons].vlan_id) {
+
+ vlan_id = qp->rqe_wr_id[qp->rq.cons].vlan &
+ VLAN_VID_MASK;
+ if (vlan_id) {
wc[i].wc_flags |= IB_WC_WITH_VLAN;
- wc[i].vlan_id = qp->rqe_wr_id[qp->rq.cons].vlan_id;
+ wc[i].vlan_id = vlan_id;
+ wc[i].sl = (qp->rqe_wr_id[qp->rq.cons].vlan &
+ VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT;
}
qedr_inc_sw_cons(&qp->rq);
diff --git a/drivers/infiniband/hw/qib/Makefile b/drivers/infiniband/hw/qib/Makefile
index 79ebd79e8405..80ffab88fbca 100644
--- a/drivers/infiniband/hw/qib/Makefile
+++ b/drivers/infiniband/hw/qib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_INFINIBAND_QIB) += ib_qib.o
ib_qib-y := qib_diag.o qib_driver.o qib_eeprom.o \
diff --git a/drivers/infiniband/hw/usnic/Makefile b/drivers/infiniband/hw/usnic/Makefile
index 99fb2db47cd5..94ae7a1a6950 100644
--- a/drivers/infiniband/hw/usnic/Makefile
+++ b/drivers/infiniband/hw/usnic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -Idrivers/net/ethernet/cisco/enic
obj-$(CONFIG_INFINIBAND_USNIC)+= usnic_verbs.o
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h b/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h
index 663a0c301c43..984aa3484928 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h
@@ -416,9 +416,34 @@ static inline enum ib_wc_status pvrdma_wc_status_to_ib(
return (enum ib_wc_status)status;
}
-static inline int pvrdma_wc_opcode_to_ib(int opcode)
-{
- return opcode;
+static inline int pvrdma_wc_opcode_to_ib(unsigned int opcode)
+{
+ switch (opcode) {
+ case PVRDMA_WC_SEND:
+ return IB_WC_SEND;
+ case PVRDMA_WC_RDMA_WRITE:
+ return IB_WC_RDMA_WRITE;
+ case PVRDMA_WC_RDMA_READ:
+ return IB_WC_RDMA_READ;
+ case PVRDMA_WC_COMP_SWAP:
+ return IB_WC_COMP_SWAP;
+ case PVRDMA_WC_FETCH_ADD:
+ return IB_WC_FETCH_ADD;
+ case PVRDMA_WC_LOCAL_INV:
+ return IB_WC_LOCAL_INV;
+ case PVRDMA_WC_FAST_REG_MR:
+ return IB_WC_REG_MR;
+ case PVRDMA_WC_MASKED_COMP_SWAP:
+ return IB_WC_MASKED_COMP_SWAP;
+ case PVRDMA_WC_MASKED_FETCH_ADD:
+ return IB_WC_MASKED_FETCH_ADD;
+ case PVRDMA_WC_RECV:
+ return IB_WC_RECV;
+ case PVRDMA_WC_RECV_RDMA_WITH_IMM:
+ return IB_WC_RECV_RDMA_WITH_IMM;
+ default:
+ return IB_WC_SEND;
+ }
}
static inline int pvrdma_wc_flags_to_ib(int flags)
diff --git a/drivers/infiniband/sw/rxe/Makefile b/drivers/infiniband/sw/rxe/Makefile
index 3f12beb7076f..66af72dca759 100644
--- a/drivers/infiniband/sw/rxe/Makefile
+++ b/drivers/infiniband/sw/rxe/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_RDMA_RXE) += rdma_rxe.o
rdma_rxe-y := \
diff --git a/drivers/infiniband/ulp/Makefile b/drivers/infiniband/ulp/Makefile
index c28af1823a2d..437813c7b481 100644
--- a/drivers/infiniband/ulp/Makefile
+++ b/drivers/infiniband/ulp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_INFINIBAND_IPOIB) += ipoib/
obj-$(CONFIG_INFINIBAND_SRP) += srp/
obj-$(CONFIG_INFINIBAND_SRPT) += srpt/
diff --git a/drivers/infiniband/ulp/ipoib/Makefile b/drivers/infiniband/ulp/ipoib/Makefile
index e5430dd50764..6ece857ed262 100644
--- a/drivers/infiniband/ulp/ipoib/Makefile
+++ b/drivers/infiniband/ulp/ipoib/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_INFINIBAND_IPOIB) += ib_ipoib.o
ib_ipoib-y := ipoib_main.o \
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 14b62f7472b4..7774654c2ccb 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -823,12 +823,18 @@ void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc)
wc->status != IB_WC_WR_FLUSH_ERR) {
struct ipoib_neigh *neigh;
- if (wc->status != IB_WC_RNR_RETRY_EXC_ERR)
- ipoib_warn(priv, "failed cm send event (status=%d, wrid=%d vend_err %x)\n",
- wc->status, wr_id, wc->vendor_err);
+ /* IB_WC[_RNR]_RETRY_EXC_ERR error is part of the life cycle,
+ * so don't make waves.
+ */
+ if (wc->status == IB_WC_RNR_RETRY_EXC_ERR ||
+ wc->status == IB_WC_RETRY_EXC_ERR)
+ ipoib_dbg(priv,
+ "%s: failed cm send event (status=%d, wrid=%d vend_err 0x%x)\n",
+ __func__, wc->status, wr_id, wc->vendor_err);
else
- ipoib_dbg(priv, "failed cm send event (status=%d, wrid=%d vend_err %x)\n",
- wc->status, wr_id, wc->vendor_err);
+ ipoib_warn(priv,
+ "%s: failed cm send event (status=%d, wrid=%d vend_err 0x%x)\n",
+ __func__, wc->status, wr_id, wc->vendor_err);
spin_lock_irqsave(&priv->lock, flags);
neigh = tx->neigh;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
index 2e075377242e..6cd61638b441 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -1000,19 +1000,6 @@ static inline int update_parent_pkey(struct ipoib_dev_priv *priv)
*/
priv->dev->broadcast[8] = priv->pkey >> 8;
priv->dev->broadcast[9] = priv->pkey & 0xff;
-
- /*
- * Update the broadcast address in the priv->broadcast object,
- * in case it already exists, otherwise no one will do that.
- */
- if (priv->broadcast) {
- spin_lock_irq(&priv->lock);
- memcpy(priv->broadcast->mcmember.mgid.raw,
- priv->dev->broadcast + 4,
- sizeof(union ib_gid));
- spin_unlock_irq(&priv->lock);
- }
-
return 0;
}
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index bac95b509a9b..dcc77014018d 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -2180,6 +2180,7 @@ static struct net_device *ipoib_add_port(const char *format,
{
struct ipoib_dev_priv *priv;
struct ib_port_attr attr;
+ struct rdma_netdev *rn;
int result = -ENOMEM;
priv = ipoib_intf_alloc(hca, port, format);
@@ -2279,7 +2280,8 @@ register_failed:
ipoib_dev_cleanup(priv->dev);
device_init_failed:
- free_netdev(priv->dev);
+ rn = netdev_priv(priv->dev);
+ rn->free_rdma_netdev(priv->dev);
kfree(priv);
alloc_mem_failed:
@@ -2328,7 +2330,7 @@ static void ipoib_remove_one(struct ib_device *device, void *client_data)
return;
list_for_each_entry_safe(priv, tmp, dev_list, list) {
- struct rdma_netdev *rn = netdev_priv(priv->dev);
+ struct rdma_netdev *parent_rn = netdev_priv(priv->dev);
ib_unregister_event_handler(&priv->event_handler);
flush_workqueue(ipoib_workqueue);
@@ -2350,10 +2352,15 @@ static void ipoib_remove_one(struct ib_device *device, void *client_data)
unregister_netdev(priv->dev);
mutex_unlock(&priv->sysfs_mutex);
- rn->free_rdma_netdev(priv->dev);
+ parent_rn->free_rdma_netdev(priv->dev);
+
+ list_for_each_entry_safe(cpriv, tcpriv, &priv->child_intfs, list) {
+ struct rdma_netdev *child_rn;
- list_for_each_entry_safe(cpriv, tcpriv, &priv->child_intfs, list)
+ child_rn = netdev_priv(cpriv->dev);
+ child_rn->free_rdma_netdev(cpriv->dev);
kfree(cpriv);
+ }
kfree(priv);
}
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
index 9927cd6b7082..55a9b71ed05a 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
@@ -141,14 +141,17 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
return restart_syscall();
}
- priv = ipoib_intf_alloc(ppriv->ca, ppriv->port, intf_name);
- if (!priv) {
+ if (!down_write_trylock(&ppriv->vlan_rwsem)) {
rtnl_unlock();
mutex_unlock(&ppriv->sysfs_mutex);
- return -ENOMEM;
+ return restart_syscall();
}
- down_write(&ppriv->vlan_rwsem);
+ priv = ipoib_intf_alloc(ppriv->ca, ppriv->port, intf_name);
+ if (!priv) {
+ result = -ENOMEM;
+ goto out;
+ }
/*
* First ensure this isn't a duplicate. We check the parent device and
@@ -175,8 +178,11 @@ out:
rtnl_unlock();
mutex_unlock(&ppriv->sysfs_mutex);
- if (result) {
- free_netdev(priv->dev);
+ if (result && priv) {
+ struct rdma_netdev *rn;
+
+ rn = netdev_priv(priv->dev);
+ rn->free_rdma_netdev(priv->dev);
kfree(priv);
}
@@ -204,7 +210,12 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
return restart_syscall();
}
- down_write(&ppriv->vlan_rwsem);
+ if (!down_write_trylock(&ppriv->vlan_rwsem)) {
+ rtnl_unlock();
+ mutex_unlock(&ppriv->sysfs_mutex);
+ return restart_syscall();
+ }
+
list_for_each_entry_safe(priv, tpriv, &ppriv->child_intfs, list) {
if (priv->pkey == pkey &&
priv->child_type == IPOIB_LEGACY_CHILD) {
@@ -224,7 +235,10 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
mutex_unlock(&ppriv->sysfs_mutex);
if (dev) {
- free_netdev(dev);
+ struct rdma_netdev *rn;
+
+ rn = netdev_priv(dev);
+ rn->free_rdma_netdev(priv->dev);
kfree(priv);
return 0;
}
diff --git a/drivers/infiniband/ulp/iser/iser_memory.c b/drivers/infiniband/ulp/iser/iser_memory.c
index 9c3e9ab53a41..322209d5ff58 100644
--- a/drivers/infiniband/ulp/iser/iser_memory.c
+++ b/drivers/infiniband/ulp/iser/iser_memory.c
@@ -154,7 +154,7 @@ static void iser_dump_page_vec(struct iser_page_vec *page_vec)
{
int i;
- iser_err("page vec npages %d data length %d\n",
+ iser_err("page vec npages %d data length %lld\n",
page_vec->npages, page_vec->fake_mr.length);
for (i = 0; i < page_vec->npages; i++)
iser_err("vec[%d]: %llx\n", i, page_vec->pages[i]);
diff --git a/drivers/infiniband/ulp/isert/ib_isert.h b/drivers/infiniband/ulp/isert/ib_isert.h
index 87d994de8c91..d6fd248320ae 100644
--- a/drivers/infiniband/ulp/isert/ib_isert.h
+++ b/drivers/infiniband/ulp/isert/ib_isert.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/socket.h>
#include <linux/in.h>
#include <linux/in6.h>
diff --git a/drivers/input/Makefile b/drivers/input/Makefile
index 595820bbabe9..40de6a7be641 100644
--- a/drivers/input/Makefile
+++ b/drivers/input/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the input core drivers.
#
diff --git a/drivers/input/ff-core.c b/drivers/input/ff-core.c
index 8f2042432c85..66a46c84e28f 100644
--- a/drivers/input/ff-core.c
+++ b/drivers/input/ff-core.c
@@ -237,9 +237,15 @@ int input_ff_erase(struct input_dev *dev, int effect_id, struct file *file)
EXPORT_SYMBOL_GPL(input_ff_erase);
/*
- * flush_effects - erase all effects owned by a file handle
+ * input_ff_flush - erase all effects owned by a file handle
+ * @dev: input device to erase effect from
+ * @file: purported owner of the effects
+ *
+ * This function erases all force-feedback effects associated with
+ * the given owner from specified device. Note that @file may be %NULL,
+ * in which case all effects will be erased.
*/
-static int flush_effects(struct input_dev *dev, struct file *file)
+int input_ff_flush(struct input_dev *dev, struct file *file)
{
struct ff_device *ff = dev->ff;
int i;
@@ -255,6 +261,7 @@ static int flush_effects(struct input_dev *dev, struct file *file)
return 0;
}
+EXPORT_SYMBOL_GPL(input_ff_flush);
/**
* input_ff_event() - generic handler for force-feedback events
@@ -343,7 +350,7 @@ int input_ff_create(struct input_dev *dev, unsigned int max_effects)
mutex_init(&ff->mutex);
dev->ff = ff;
- dev->flush = flush_effects;
+ dev->flush = input_ff_flush;
dev->event = input_ff_event;
__set_bit(EV_FF, dev->evbit);
diff --git a/drivers/input/gameport/Makefile b/drivers/input/gameport/Makefile
index b6f6097bd8c4..73ad8fe4db79 100644
--- a/drivers/input/gameport/Makefile
+++ b/drivers/input/gameport/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the gameport drivers.
#
diff --git a/drivers/input/input.c b/drivers/input/input.c
index d268fdc23c64..762bfb9487dc 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -933,58 +933,52 @@ int input_set_keycode(struct input_dev *dev,
}
EXPORT_SYMBOL(input_set_keycode);
+bool input_match_device_id(const struct input_dev *dev,
+ const struct input_device_id *id)
+{
+ if (id->flags & INPUT_DEVICE_ID_MATCH_BUS)
+ if (id->bustype != dev->id.bustype)
+ return false;
+
+ if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR)
+ if (id->vendor != dev->id.vendor)
+ return false;
+
+ if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT)
+ if (id->product != dev->id.product)
+ return false;
+
+ if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION)
+ if (id->version != dev->id.version)
+ return false;
+
+ if (!bitmap_subset(id->evbit, dev->evbit, EV_MAX) ||
+ !bitmap_subset(id->keybit, dev->keybit, KEY_MAX) ||
+ !bitmap_subset(id->relbit, dev->relbit, REL_MAX) ||
+ !bitmap_subset(id->absbit, dev->absbit, ABS_MAX) ||
+ !bitmap_subset(id->mscbit, dev->mscbit, MSC_MAX) ||
+ !bitmap_subset(id->ledbit, dev->ledbit, LED_MAX) ||
+ !bitmap_subset(id->sndbit, dev->sndbit, SND_MAX) ||
+ !bitmap_subset(id->ffbit, dev->ffbit, FF_MAX) ||
+ !bitmap_subset(id->swbit, dev->swbit, SW_MAX) ||
+ !bitmap_subset(id->propbit, dev->propbit, INPUT_PROP_MAX)) {
+ return false;
+ }
+
+ return true;
+}
+EXPORT_SYMBOL(input_match_device_id);
+
static const struct input_device_id *input_match_device(struct input_handler *handler,
struct input_dev *dev)
{
const struct input_device_id *id;
for (id = handler->id_table; id->flags || id->driver_info; id++) {
-
- if (id->flags & INPUT_DEVICE_ID_MATCH_BUS)
- if (id->bustype != dev->id.bustype)
- continue;
-
- if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR)
- if (id->vendor != dev->id.vendor)
- continue;
-
- if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT)
- if (id->product != dev->id.product)
- continue;
-
- if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION)
- if (id->version != dev->id.version)
- continue;
-
- if (!bitmap_subset(id->evbit, dev->evbit, EV_MAX))
- continue;
-
- if (!bitmap_subset(id->keybit, dev->keybit, KEY_MAX))
- continue;
-
- if (!bitmap_subset(id->relbit, dev->relbit, REL_MAX))
- continue;
-
- if (!bitmap_subset(id->absbit, dev->absbit, ABS_MAX))
- continue;
-
- if (!bitmap_subset(id->mscbit, dev->mscbit, MSC_MAX))
- continue;
-
- if (!bitmap_subset(id->ledbit, dev->ledbit, LED_MAX))
- continue;
-
- if (!bitmap_subset(id->sndbit, dev->sndbit, SND_MAX))
- continue;
-
- if (!bitmap_subset(id->ffbit, dev->ffbit, FF_MAX))
- continue;
-
- if (!bitmap_subset(id->swbit, dev->swbit, SW_MAX))
- continue;
-
- if (!handler->match || handler->match(handler, dev))
+ if (input_match_device_id(dev, id) &&
+ (!handler->match || handler->match(handler, dev))) {
return id;
+ }
}
return NULL;
diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c
index 29d677c714d2..7b29a8944039 100644
--- a/drivers/input/joydev.c
+++ b/drivers/input/joydev.c
@@ -747,6 +747,68 @@ static void joydev_cleanup(struct joydev *joydev)
input_close_device(handle);
}
+/*
+ * These codes are copied from from hid-ids.h, unfortunately there is no common
+ * usb_ids/bt_ids.h header.
+ */
+#define USB_VENDOR_ID_SONY 0x054c
+#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268
+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER 0x05c4
+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_2 0x09cc
+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE 0x0ba0
+
+#define USB_VENDOR_ID_THQ 0x20d6
+#define USB_DEVICE_ID_THQ_PS3_UDRAW 0xcb17
+
+#define ACCEL_DEV(vnd, prd) \
+ { \
+ .flags = INPUT_DEVICE_ID_MATCH_VENDOR | \
+ INPUT_DEVICE_ID_MATCH_PRODUCT | \
+ INPUT_DEVICE_ID_MATCH_PROPBIT, \
+ .vendor = (vnd), \
+ .product = (prd), \
+ .propbit = { BIT_MASK(INPUT_PROP_ACCELEROMETER) }, \
+ }
+
+static const struct input_device_id joydev_blacklist[] = {
+ /* Avoid touchpads and touchscreens */
+ {
+ .flags = INPUT_DEVICE_ID_MATCH_EVBIT |
+ INPUT_DEVICE_ID_MATCH_KEYBIT,
+ .evbit = { BIT_MASK(EV_KEY) },
+ .keybit = { [BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH) },
+ },
+ /* Avoid tablets, digitisers and similar devices */
+ {
+ .flags = INPUT_DEVICE_ID_MATCH_EVBIT |
+ INPUT_DEVICE_ID_MATCH_KEYBIT,
+ .evbit = { BIT_MASK(EV_KEY) },
+ .keybit = { [BIT_WORD(BTN_DIGI)] = BIT_MASK(BTN_DIGI) },
+ },
+ /* Disable accelerometers on composite devices */
+ ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER),
+ ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER),
+ ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER_2),
+ ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE),
+ ACCEL_DEV(USB_VENDOR_ID_THQ, USB_DEVICE_ID_THQ_PS3_UDRAW),
+ { /* sentinel */ }
+};
+
+static bool joydev_dev_is_blacklisted(struct input_dev *dev)
+{
+ const struct input_device_id *id;
+
+ for (id = joydev_blacklist; id->flags; id++) {
+ if (input_match_device_id(dev, id)) {
+ dev_dbg(&dev->dev,
+ "joydev: blacklisting '%s'\n", dev->name);
+ return true;
+ }
+ }
+
+ return false;
+}
+
static bool joydev_dev_is_absolute_mouse(struct input_dev *dev)
{
DECLARE_BITMAP(jd_scratch, KEY_CNT);
@@ -807,12 +869,8 @@ static bool joydev_dev_is_absolute_mouse(struct input_dev *dev)
static bool joydev_match(struct input_handler *handler, struct input_dev *dev)
{
- /* Avoid touchpads and touchscreens */
- if (test_bit(EV_KEY, dev->evbit) && test_bit(BTN_TOUCH, dev->keybit))
- return false;
-
- /* Avoid tablets, digitisers and similar devices */
- if (test_bit(EV_KEY, dev->evbit) && test_bit(BTN_DIGI, dev->keybit))
+ /* Disable blacklisted devices */
+ if (joydev_dev_is_blacklisted(dev))
return false;
/* Avoid absolute mice */
diff --git a/drivers/input/joystick/Makefile b/drivers/input/joystick/Makefile
index 496fd56b3f1b..67651efda2e1 100644
--- a/drivers/input/joystick/Makefile
+++ b/drivers/input/joystick/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the input core drivers.
#
diff --git a/drivers/input/joystick/adi.c b/drivers/input/joystick/adi.c
index d09cefa37931..15a71acb6997 100644
--- a/drivers/input/joystick/adi.c
+++ b/drivers/input/joystick/adi.c
@@ -313,7 +313,7 @@ static void adi_close(struct input_dev *dev)
static void adi_init_digital(struct gameport *gameport)
{
- int seq[] = { 4, -2, -3, 10, -6, -11, -7, -9, 11, 0 };
+ static const int seq[] = { 4, -2, -3, 10, -6, -11, -7, -9, 11, 0 };
int i;
for (i = 0; seq[i]; i++) {
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index f8e34ef643c7..d86e59515b9c 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -1764,10 +1764,12 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
struct usb_endpoint_descriptor *ep =
&intf->cur_altsetting->endpoint[i].desc;
- if (usb_endpoint_dir_in(ep))
- ep_irq_in = ep;
- else
- ep_irq_out = ep;
+ if (usb_endpoint_xfer_int(ep)) {
+ if (usb_endpoint_dir_in(ep))
+ ep_irq_in = ep;
+ else
+ ep_irq_out = ep;
+ }
}
if (!ep_irq_in || !ep_irq_out) {
diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile
index d2338bacdad1..526e68294e6e 100644
--- a/drivers/input/keyboard/Makefile
+++ b/drivers/input/keyboard/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the input core drivers.
#
diff --git a/drivers/input/keyboard/tca8418_keypad.c b/drivers/input/keyboard/tca8418_keypad.c
index e37e335e406f..6da607d3b811 100644
--- a/drivers/input/keyboard/tca8418_keypad.c
+++ b/drivers/input/keyboard/tca8418_keypad.c
@@ -234,14 +234,7 @@ static irqreturn_t tca8418_irq_handler(int irq, void *dev_id)
static int tca8418_configure(struct tca8418_keypad *keypad_data,
u32 rows, u32 cols)
{
- int reg, error;
-
- /* Write config register, if this fails assume device not present */
- error = tca8418_write_byte(keypad_data, REG_CFG,
- CFG_INT_CFG | CFG_OVR_FLOW_IEN | CFG_KE_IEN);
- if (error < 0)
- return -ENODEV;
-
+ int reg, error = 0;
/* Assemble a mask for row and column registers */
reg = ~(~0 << rows);
@@ -257,6 +250,12 @@ static int tca8418_configure(struct tca8418_keypad *keypad_data,
error |= tca8418_write_byte(keypad_data, REG_DEBOUNCE_DIS2, reg >> 8);
error |= tca8418_write_byte(keypad_data, REG_DEBOUNCE_DIS3, reg >> 16);
+ if (error)
+ return error;
+
+ error = tca8418_write_byte(keypad_data, REG_CFG,
+ CFG_INT_CFG | CFG_OVR_FLOW_IEN | CFG_KE_IEN);
+
return error;
}
@@ -268,6 +267,7 @@ static int tca8418_keypad_probe(struct i2c_client *client,
struct input_dev *input;
u32 rows = 0, cols = 0;
int error, row_shift, max_keys;
+ u8 reg;
/* Check i2c driver capabilities */
if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE)) {
@@ -301,10 +301,10 @@ static int tca8418_keypad_probe(struct i2c_client *client,
keypad_data->client = client;
keypad_data->row_shift = row_shift;
- /* Initialize the chip or fail if chip isn't present */
- error = tca8418_configure(keypad_data, rows, cols);
- if (error < 0)
- return error;
+ /* Read key lock register, if this fails assume device not present */
+ error = tca8418_read_byte(keypad_data, REG_KEY_LCK_EC, &reg);
+ if (error)
+ return -ENODEV;
/* Configure input device */
input = devm_input_allocate_device(dev);
@@ -340,6 +340,11 @@ static int tca8418_keypad_probe(struct i2c_client *client,
return error;
}
+ /* Initialize the chip */
+ error = tca8418_configure(keypad_data, rows, cols);
+ if (error < 0)
+ return error;
+
error = input_register_device(input);
if (error) {
dev_err(dev, "Unable to register input device, error: %d\n",
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index f47e836eaa0f..9f082a388388 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -581,6 +581,18 @@ config INPUT_PWM_BEEPER
To compile this driver as a module, choose M here: the module will be
called pwm-beeper.
+config INPUT_PWM_VIBRA
+ tristate "PWM vibrator support"
+ depends on PWM
+ select INPUT_FF_MEMLESS
+ help
+ Say Y here to get support for PWM based vibrator devices.
+
+ If unsure, say N.
+
+ To compile this driver as a module, choose M here: the module will be
+ called pwm-vibra.
+
config INPUT_RK805_PWRKEY
tristate "Rockchip RK805 PMIC power key support"
depends on MFD_RK808
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
index 1072e0760c19..4b6118d313fe 100644
--- a/drivers/input/misc/Makefile
+++ b/drivers/input/misc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the input misc drivers.
#
@@ -59,6 +60,7 @@ obj-$(CONFIG_INPUT_PM8XXX_VIBRATOR) += pm8xxx-vibrator.o
obj-$(CONFIG_INPUT_PMIC8XXX_PWRKEY) += pmic8xxx-pwrkey.o
obj-$(CONFIG_INPUT_POWERMATE) += powermate.o
obj-$(CONFIG_INPUT_PWM_BEEPER) += pwm-beeper.o
+obj-$(CONFIG_INPUT_PWM_VIBRA) += pwm-vibra.o
obj-$(CONFIG_INPUT_RB532_BUTTON) += rb532_button.o
obj-$(CONFIG_INPUT_REGULATOR_HAPTIC) += regulator-haptic.o
obj-$(CONFIG_INPUT_RETU_PWRBUTTON) += retu-pwrbutton.o
diff --git a/drivers/input/misc/axp20x-pek.c b/drivers/input/misc/axp20x-pek.c
index 6cee5adc3b5c..debeeaeb8812 100644
--- a/drivers/input/misc/axp20x-pek.c
+++ b/drivers/input/misc/axp20x-pek.c
@@ -403,6 +403,7 @@ static const struct platform_device_id axp_pek_id_match[] = {
},
{ /* sentinel */ }
};
+MODULE_DEVICE_TABLE(platform, axp_pek_id_match);
static struct platform_driver axp20x_pek_driver = {
.probe = axp20x_pek_probe,
@@ -417,4 +418,3 @@ module_platform_driver(axp20x_pek_driver);
MODULE_DESCRIPTION("axp20x Power Button");
MODULE_AUTHOR("Carlo Caione <carlo@caione.org>");
MODULE_LICENSE("GPL");
-MODULE_ALIAS("platform:axp20x-pek");
diff --git a/drivers/input/misc/ims-pcu.c b/drivers/input/misc/ims-pcu.c
index 6bf82ea8c918..ae473123583b 100644
--- a/drivers/input/misc/ims-pcu.c
+++ b/drivers/input/misc/ims-pcu.c
@@ -1635,13 +1635,25 @@ ims_pcu_get_cdc_union_desc(struct usb_interface *intf)
return NULL;
}
- while (buflen > 0) {
+ while (buflen >= sizeof(*union_desc)) {
union_desc = (struct usb_cdc_union_desc *)buf;
+ if (union_desc->bLength > buflen) {
+ dev_err(&intf->dev, "Too large descriptor\n");
+ return NULL;
+ }
+
if (union_desc->bDescriptorType == USB_DT_CS_INTERFACE &&
union_desc->bDescriptorSubType == USB_CDC_UNION_TYPE) {
dev_dbg(&intf->dev, "Found union header\n");
- return union_desc;
+
+ if (union_desc->bLength >= sizeof(*union_desc))
+ return union_desc;
+
+ dev_err(&intf->dev,
+ "Union descriptor to short (%d vs %zd\n)",
+ union_desc->bLength, sizeof(*union_desc));
+ return NULL;
}
buflen -= union_desc->bLength;
diff --git a/drivers/input/misc/pwm-vibra.c b/drivers/input/misc/pwm-vibra.c
new file mode 100644
index 000000000000..55da191ae550
--- /dev/null
+++ b/drivers/input/misc/pwm-vibra.c
@@ -0,0 +1,267 @@
+/*
+ * PWM vibrator driver
+ *
+ * Copyright (C) 2017 Collabora Ltd.
+ *
+ * Based on previous work from:
+ * Copyright (C) 2012 Dmitry Torokhov <dmitry.torokhov@gmail.com>
+ *
+ * Based on PWM beeper driver:
+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ */
+
+#include <linux/input.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/platform_device.h>
+#include <linux/property.h>
+#include <linux/pwm.h>
+#include <linux/regulator/consumer.h>
+#include <linux/slab.h>
+
+struct pwm_vibrator {
+ struct input_dev *input;
+ struct pwm_device *pwm;
+ struct pwm_device *pwm_dir;
+ struct regulator *vcc;
+
+ struct work_struct play_work;
+ u16 level;
+ u32 direction_duty_cycle;
+};
+
+static int pwm_vibrator_start(struct pwm_vibrator *vibrator)
+{
+ struct device *pdev = vibrator->input->dev.parent;
+ struct pwm_state state;
+ int err;
+
+ err = regulator_enable(vibrator->vcc);
+ if (err) {
+ dev_err(pdev, "failed to enable regulator: %d", err);
+ return err;
+ }
+
+ pwm_get_state(vibrator->pwm, &state);
+ pwm_set_relative_duty_cycle(&state, vibrator->level, 0xffff);
+ state.enabled = true;
+
+ err = pwm_apply_state(vibrator->pwm, &state);
+ if (err) {
+ dev_err(pdev, "failed to apply pwm state: %d", err);
+ return err;
+ }
+
+ if (vibrator->pwm_dir) {
+ pwm_get_state(vibrator->pwm_dir, &state);
+ state.duty_cycle = vibrator->direction_duty_cycle;
+ state.enabled = true;
+
+ err = pwm_apply_state(vibrator->pwm_dir, &state);
+ if (err) {
+ dev_err(pdev, "failed to apply dir-pwm state: %d", err);
+ pwm_disable(vibrator->pwm);
+ return err;
+ }
+ }
+
+ return 0;
+}
+
+static void pwm_vibrator_stop(struct pwm_vibrator *vibrator)
+{
+ regulator_disable(vibrator->vcc);
+
+ if (vibrator->pwm_dir)
+ pwm_disable(vibrator->pwm_dir);
+ pwm_disable(vibrator->pwm);
+}
+
+static void pwm_vibrator_play_work(struct work_struct *work)
+{
+ struct pwm_vibrator *vibrator = container_of(work,
+ struct pwm_vibrator, play_work);
+
+ if (vibrator->level)
+ pwm_vibrator_start(vibrator);
+ else
+ pwm_vibrator_stop(vibrator);
+}
+
+static int pwm_vibrator_play_effect(struct input_dev *dev, void *data,
+ struct ff_effect *effect)
+{
+ struct pwm_vibrator *vibrator = input_get_drvdata(dev);
+
+ vibrator->level = effect->u.rumble.strong_magnitude;
+ if (!vibrator->level)
+ vibrator->level = effect->u.rumble.weak_magnitude;
+
+ schedule_work(&vibrator->play_work);
+
+ return 0;
+}
+
+static void pwm_vibrator_close(struct input_dev *input)
+{
+ struct pwm_vibrator *vibrator = input_get_drvdata(input);
+
+ cancel_work_sync(&vibrator->play_work);
+ pwm_vibrator_stop(vibrator);
+}
+
+static int pwm_vibrator_probe(struct platform_device *pdev)
+{
+ struct pwm_vibrator *vibrator;
+ struct pwm_state state;
+ int err;
+
+ vibrator = devm_kzalloc(&pdev->dev, sizeof(*vibrator), GFP_KERNEL);
+ if (!vibrator)
+ return -ENOMEM;
+
+ vibrator->input = devm_input_allocate_device(&pdev->dev);
+ if (!vibrator->input)
+ return -ENOMEM;
+
+ vibrator->vcc = devm_regulator_get(&pdev->dev, "vcc");
+ err = PTR_ERR_OR_ZERO(vibrator->vcc);
+ if (err) {
+ if (err != -EPROBE_DEFER)
+ dev_err(&pdev->dev, "Failed to request regulator: %d",
+ err);
+ return err;
+ }
+
+ vibrator->pwm = devm_pwm_get(&pdev->dev, "enable");
+ err = PTR_ERR_OR_ZERO(vibrator->pwm);
+ if (err) {
+ if (err != -EPROBE_DEFER)
+ dev_err(&pdev->dev, "Failed to request main pwm: %d",
+ err);
+ return err;
+ }
+
+ INIT_WORK(&vibrator->play_work, pwm_vibrator_play_work);
+
+ /* Sync up PWM state and ensure it is off. */
+ pwm_init_state(vibrator->pwm, &state);
+ state.enabled = false;
+ err = pwm_apply_state(vibrator->pwm, &state);
+ if (err) {
+ dev_err(&pdev->dev, "failed to apply initial PWM state: %d",
+ err);
+ return err;
+ }
+
+ vibrator->pwm_dir = devm_pwm_get(&pdev->dev, "direction");
+ err = PTR_ERR_OR_ZERO(vibrator->pwm_dir);
+ switch (err) {
+ case 0:
+ /* Sync up PWM state and ensure it is off. */
+ pwm_init_state(vibrator->pwm_dir, &state);
+ state.enabled = false;
+ err = pwm_apply_state(vibrator->pwm_dir, &state);
+ if (err) {
+ dev_err(&pdev->dev, "failed to apply initial PWM state: %d",
+ err);
+ return err;
+ }
+
+ vibrator->direction_duty_cycle =
+ pwm_get_period(vibrator->pwm_dir) / 2;
+ device_property_read_u32(&pdev->dev, "direction-duty-cycle-ns",
+ &vibrator->direction_duty_cycle);
+ break;
+
+ case -ENODATA:
+ /* Direction PWM is optional */
+ vibrator->pwm_dir = NULL;
+ break;
+
+ default:
+ dev_err(&pdev->dev, "Failed to request direction pwm: %d", err);
+ /* Fall through */
+
+ case -EPROBE_DEFER:
+ return err;
+ }
+
+ vibrator->input->name = "pwm-vibrator";
+ vibrator->input->id.bustype = BUS_HOST;
+ vibrator->input->dev.parent = &pdev->dev;
+ vibrator->input->close = pwm_vibrator_close;
+
+ input_set_drvdata(vibrator->input, vibrator);
+ input_set_capability(vibrator->input, EV_FF, FF_RUMBLE);
+
+ err = input_ff_create_memless(vibrator->input, NULL,
+ pwm_vibrator_play_effect);
+ if (err) {
+ dev_err(&pdev->dev, "Couldn't create FF dev: %d", err);
+ return err;
+ }
+
+ err = input_register_device(vibrator->input);
+ if (err) {
+ dev_err(&pdev->dev, "Couldn't register input dev: %d", err);
+ return err;
+ }
+
+ platform_set_drvdata(pdev, vibrator);
+
+ return 0;
+}
+
+static int __maybe_unused pwm_vibrator_suspend(struct device *dev)
+{
+ struct pwm_vibrator *vibrator = dev_get_drvdata(dev);
+
+ cancel_work_sync(&vibrator->play_work);
+ if (vibrator->level)
+ pwm_vibrator_stop(vibrator);
+
+ return 0;
+}
+
+static int __maybe_unused pwm_vibrator_resume(struct device *dev)
+{
+ struct pwm_vibrator *vibrator = dev_get_drvdata(dev);
+
+ if (vibrator->level)
+ pwm_vibrator_start(vibrator);
+
+ return 0;
+}
+
+static SIMPLE_DEV_PM_OPS(pwm_vibrator_pm_ops,
+ pwm_vibrator_suspend, pwm_vibrator_resume);
+
+#ifdef CONFIG_OF
+static const struct of_device_id pwm_vibra_dt_match_table[] = {
+ { .compatible = "pwm-vibrator" },
+ {},
+};
+MODULE_DEVICE_TABLE(of, pwm_vibra_dt_match_table);
+#endif
+
+static struct platform_driver pwm_vibrator_driver = {
+ .probe = pwm_vibrator_probe,
+ .driver = {
+ .name = "pwm-vibrator",
+ .pm = &pwm_vibrator_pm_ops,
+ .of_match_table = of_match_ptr(pwm_vibra_dt_match_table),
+ },
+};
+module_platform_driver(pwm_vibrator_driver);
+
+MODULE_AUTHOR("Sebastian Reichel <sre@kernel.org>");
+MODULE_DESCRIPTION("PWM vibrator driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:pwm-vibrator");
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
index 022be0e22eba..443151de90c6 100644
--- a/drivers/input/misc/uinput.c
+++ b/drivers/input/misc/uinput.c
@@ -98,14 +98,15 @@ static int uinput_request_reserve_slot(struct uinput_device *udev,
uinput_request_alloc_id(udev, request));
}
-static void uinput_request_done(struct uinput_device *udev,
- struct uinput_request *request)
+static void uinput_request_release_slot(struct uinput_device *udev,
+ unsigned int id)
{
/* Mark slot as available */
- udev->requests[request->id] = NULL;
- wake_up(&udev->requests_waitq);
+ spin_lock(&udev->requests_lock);
+ udev->requests[id] = NULL;
+ spin_unlock(&udev->requests_lock);
- complete(&request->done);
+ wake_up(&udev->requests_waitq);
}
static int uinput_request_send(struct uinput_device *udev,
@@ -138,20 +139,22 @@ static int uinput_request_send(struct uinput_device *udev,
static int uinput_request_submit(struct uinput_device *udev,
struct uinput_request *request)
{
- int error;
+ int retval;
- error = uinput_request_reserve_slot(udev, request);
- if (error)
- return error;
+ retval = uinput_request_reserve_slot(udev, request);
+ if (retval)
+ return retval;
- error = uinput_request_send(udev, request);
- if (error) {
- uinput_request_done(udev, request);
- return error;
- }
+ retval = uinput_request_send(udev, request);
+ if (retval)
+ goto out;
wait_for_completion(&request->done);
- return request->retval;
+ retval = request->retval;
+
+ out:
+ uinput_request_release_slot(udev, request->id);
+ return retval;
}
/*
@@ -169,7 +172,7 @@ static void uinput_flush_requests(struct uinput_device *udev)
request = udev->requests[i];
if (request) {
request->retval = -ENODEV;
- uinput_request_done(udev, request);
+ complete(&request->done);
}
}
@@ -230,6 +233,18 @@ static int uinput_dev_erase_effect(struct input_dev *dev, int effect_id)
return uinput_request_submit(udev, &request);
}
+static int uinput_dev_flush(struct input_dev *dev, struct file *file)
+{
+ /*
+ * If we are called with file == NULL that means we are tearing
+ * down the device, and therefore we can not handle FF erase
+ * requests: either we are handling UI_DEV_DESTROY (and holding
+ * the udev->mutex), or the file descriptor is closed and there is
+ * nobody on the other side anymore.
+ */
+ return file ? input_ff_flush(dev, file) : 0;
+}
+
static void uinput_destroy_device(struct uinput_device *udev)
{
const char *name, *phys;
@@ -297,6 +312,12 @@ static int uinput_create_device(struct uinput_device *udev)
dev->ff->playback = uinput_dev_playback;
dev->ff->set_gain = uinput_dev_set_gain;
dev->ff->set_autocenter = uinput_dev_set_autocenter;
+ /*
+ * The standard input_ff_flush() implementation does
+ * not quite work for uinput as we can't reasonably
+ * handle FF requests during device teardown.
+ */
+ dev->flush = uinput_dev_flush;
}
error = input_register_device(udev->dev);
@@ -939,7 +960,7 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd,
}
req->retval = ff_up.retval;
- uinput_request_done(udev, req);
+ complete(&req->done);
goto out;
case UI_END_FF_ERASE:
@@ -955,7 +976,7 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd,
}
req->retval = ff_erase.retval;
- uinput_request_done(udev, req);
+ complete(&req->done);
goto out;
}
diff --git a/drivers/input/mouse/Makefile b/drivers/input/mouse/Makefile
index 56bf0ad877c6..e49f08565076 100644
--- a/drivers/input/mouse/Makefile
+++ b/drivers/input/mouse/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the mouse drivers.
#
diff --git a/drivers/input/mouse/byd.h b/drivers/input/mouse/byd.h
index d6c120cf36cd..8cb90d904186 100644
--- a/drivers/input/mouse/byd.h
+++ b/drivers/input/mouse/byd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BYD_H
#define _BYD_H
diff --git a/drivers/input/mouse/cypress_ps2.h b/drivers/input/mouse/cypress_ps2.h
index 81f68aaed7c8..1eaddd818004 100644
--- a/drivers/input/mouse/cypress_ps2.h
+++ b/drivers/input/mouse/cypress_ps2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CYPRESS_PS2_H
#define _CYPRESS_PS2_H
diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
index 0e761d079dc4..6d6b092e2da9 100644
--- a/drivers/input/mouse/elan_i2c_core.c
+++ b/drivers/input/mouse/elan_i2c_core.c
@@ -1258,6 +1258,7 @@ static const struct acpi_device_id elan_acpi_id[] = {
{ "ELAN0605", 0 },
{ "ELAN0609", 0 },
{ "ELAN060B", 0 },
+ { "ELAN0611", 0 },
{ "ELAN1000", 0 },
{ }
};
diff --git a/drivers/input/mouse/elan_i2c_i2c.c b/drivers/input/mouse/elan_i2c_i2c.c
index 15b1330606c1..e19eb60b3d2f 100644
--- a/drivers/input/mouse/elan_i2c_i2c.c
+++ b/drivers/input/mouse/elan_i2c_i2c.c
@@ -598,7 +598,7 @@ static int elan_i2c_write_fw_block(struct i2c_client *client,
}
/* Wait for F/W to update one page ROM data. */
- msleep(20);
+ msleep(35);
error = elan_i2c_read_cmd(client, ETP_I2C_IAP_CTRL_CMD, val);
if (error) {
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index 6428d6f4d568..b84cd978fce2 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -700,7 +700,9 @@ static int elantech_debounce_check_v2(struct psmouse *psmouse)
* When we encounter packet that matches this exactly, it means the
* hardware is in debounce status. Just ignore the whole packet.
*/
- const u8 debounce_packet[] = { 0x84, 0xff, 0xff, 0x02, 0xff, 0xff };
+ static const u8 debounce_packet[] = {
+ 0x84, 0xff, 0xff, 0x02, 0xff, 0xff
+ };
unsigned char *packet = psmouse->packet;
return !memcmp(packet, debounce_packet, sizeof(debounce_packet));
@@ -741,7 +743,9 @@ static int elantech_packet_check_v2(struct psmouse *psmouse)
static int elantech_packet_check_v3(struct psmouse *psmouse)
{
struct elantech_data *etd = psmouse->private;
- const u8 debounce_packet[] = { 0xc4, 0xff, 0xff, 0x02, 0xff, 0xff };
+ static const u8 debounce_packet[] = {
+ 0xc4, 0xff, 0xff, 0x02, 0xff, 0xff
+ };
unsigned char *packet = psmouse->packet;
/*
diff --git a/drivers/input/mouse/hgpk.h b/drivers/input/mouse/hgpk.h
index dd686771cfe0..98b7b384229b 100644
--- a/drivers/input/mouse/hgpk.h
+++ b/drivers/input/mouse/hgpk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* OLPC HGPK (XO-1) touchpad PS/2 mouse driver
*/
diff --git a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h
index 38855e425f01..8cd453808cc7 100644
--- a/drivers/input/mouse/psmouse.h
+++ b/drivers/input/mouse/psmouse.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PSMOUSE_H
#define _PSMOUSE_H
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index 5af0b7d200bc..ee5466a374bf 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -1709,8 +1709,7 @@ static int synaptics_create_intertouch(struct psmouse *psmouse,
.sensor_pdata = {
.sensor_type = rmi_sensor_touchpad,
.axis_align.flip_y = true,
- /* to prevent cursors jumps: */
- .kernel_tracking = true,
+ .kernel_tracking = false,
.topbuttonpad = topbuttonpad,
},
.f30_data = {
diff --git a/drivers/input/rmi4/Makefile b/drivers/input/rmi4/Makefile
index 9aaac3dd8613..f17631656987 100644
--- a/drivers/input/rmi4/Makefile
+++ b/drivers/input/rmi4/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_RMI4_CORE) += rmi_core.o
rmi_core-y := rmi_bus.o rmi_driver.o rmi_f01.o
diff --git a/drivers/input/rmi4/rmi_f30.c b/drivers/input/rmi4/rmi_f30.c
index 34dfee555b20..82e0f0d43d55 100644
--- a/drivers/input/rmi4/rmi_f30.c
+++ b/drivers/input/rmi4/rmi_f30.c
@@ -232,9 +232,10 @@ static int rmi_f30_map_gpios(struct rmi_function *fn,
unsigned int trackstick_button = BTN_LEFT;
bool button_mapped = false;
int i;
+ int button_count = min_t(u8, f30->gpioled_count, TRACKSTICK_RANGE_END);
f30->gpioled_key_map = devm_kcalloc(&fn->dev,
- f30->gpioled_count,
+ button_count,
sizeof(f30->gpioled_key_map[0]),
GFP_KERNEL);
if (!f30->gpioled_key_map) {
@@ -242,7 +243,7 @@ static int rmi_f30_map_gpios(struct rmi_function *fn,
return -ENOMEM;
}
- for (i = 0; i < f30->gpioled_count; i++) {
+ for (i = 0; i < button_count; i++) {
if (!rmi_f30_is_valid_button(i, f30->ctrl))
continue;
diff --git a/drivers/input/serio/Makefile b/drivers/input/serio/Makefile
index 767bd9b6e1ed..a3ca07621542 100644
--- a/drivers/input/serio/Makefile
+++ b/drivers/input/serio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the input core drivers.
#
diff --git a/drivers/input/serio/i8042-sparcio.h b/drivers/input/serio/i8042-sparcio.h
index 6231d63860ee..796289846204 100644
--- a/drivers/input/serio/i8042-sparcio.h
+++ b/drivers/input/serio/i8042-sparcio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _I8042_SPARCIO_H
#define _I8042_SPARCIO_H
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index ae81e57e13b9..6cbbdc6e9687 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -840,6 +840,13 @@ static const struct dmi_system_id __initconst i8042_dmi_kbdreset_table[] = {
},
},
{
+ /* Gigabyte P57 - Elantech touchpad */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "P57"),
+ },
+ },
+ {
/* Schenker XMG C504 - Elantech touchpad */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "XMG"),
diff --git a/drivers/input/tablet/Makefile b/drivers/input/tablet/Makefile
index 200fc4e11987..8279ccc18b0a 100644
--- a/drivers/input/tablet/Makefile
+++ b/drivers/input/tablet/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the tablet drivers
#
diff --git a/drivers/input/tablet/gtco.c b/drivers/input/tablet/gtco.c
index b796e891e2ee..4b8b9d7aa75e 100644
--- a/drivers/input/tablet/gtco.c
+++ b/drivers/input/tablet/gtco.c
@@ -230,13 +230,17 @@ static void parse_hid_report_descriptor(struct gtco *device, char * report,
/* Walk this report and pull out the info we need */
while (i < length) {
- prefix = report[i];
-
- /* Skip over prefix */
- i++;
+ prefix = report[i++];
/* Determine data size and save the data in the proper variable */
- size = PREF_SIZE(prefix);
+ size = (1U << PREF_SIZE(prefix)) >> 1;
+ if (i + size > length) {
+ dev_err(ddev,
+ "Not enough data (need %d, have %d)\n",
+ i + size, length);
+ break;
+ }
+
switch (size) {
case 1:
data = report[i];
@@ -244,8 +248,7 @@ static void parse_hid_report_descriptor(struct gtco *device, char * report,
case 2:
data16 = get_unaligned_le16(&report[i]);
break;
- case 3:
- size = 4;
+ case 4:
data32 = get_unaligned_le32(&report[i]);
break;
}
diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
index 6badce87037b..850c1562555a 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the touchscreen drivers.
#
diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index f872817e81e4..5bf63f76ddda 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -593,7 +593,7 @@ static int edt_ft5x06_work_mode(struct edt_ft5x06_ts_data *tsdata)
tsdata->gain);
edt_ft5x06_register_write(tsdata, reg_addr->reg_offset,
tsdata->offset);
- if (reg_addr->reg_report_rate)
+ if (reg_addr->reg_report_rate != NO_REGISTER)
edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate,
tsdata->report_rate);
@@ -874,6 +874,7 @@ edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata)
case M09:
reg_addr->reg_threshold = M09_REGISTER_THRESHOLD;
+ reg_addr->reg_report_rate = NO_REGISTER;
reg_addr->reg_gain = M09_REGISTER_GAIN;
reg_addr->reg_offset = M09_REGISTER_OFFSET;
reg_addr->reg_num_x = M09_REGISTER_NUM_X;
diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
index 240b16f3ee97..b3bbad7d2282 100644
--- a/drivers/input/touchscreen/goodix.c
+++ b/drivers/input/touchscreen/goodix.c
@@ -72,6 +72,9 @@ struct goodix_ts_data {
#define GOODIX_REG_CONFIG_DATA 0x8047
#define GOODIX_REG_ID 0x8140
+#define GOODIX_BUFFER_STATUS_READY BIT(7)
+#define GOODIX_BUFFER_STATUS_TIMEOUT 20
+
#define RESOLUTION_LOC 1
#define MAX_CONTACTS_LOC 5
#define TRIGGER_LOC 6
@@ -195,35 +198,53 @@ static int goodix_get_cfg_len(u16 id)
static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data)
{
+ unsigned long max_timeout;
int touch_num;
int error;
- error = goodix_i2c_read(ts->client, GOODIX_READ_COOR_ADDR, data,
- GOODIX_CONTACT_SIZE + 1);
- if (error) {
- dev_err(&ts->client->dev, "I2C transfer error: %d\n", error);
- return error;
- }
+ /*
+ * The 'buffer status' bit, which indicates that the data is valid, is
+ * not set as soon as the interrupt is raised, but slightly after.
+ * This takes around 10 ms to happen, so we poll for 20 ms.
+ */
+ max_timeout = jiffies + msecs_to_jiffies(GOODIX_BUFFER_STATUS_TIMEOUT);
+ do {
+ error = goodix_i2c_read(ts->client, GOODIX_READ_COOR_ADDR,
+ data, GOODIX_CONTACT_SIZE + 1);
+ if (error) {
+ dev_err(&ts->client->dev, "I2C transfer error: %d\n",
+ error);
+ return error;
+ }
- if (!(data[0] & 0x80))
- return -EAGAIN;
+ if (data[0] & GOODIX_BUFFER_STATUS_READY) {
+ touch_num = data[0] & 0x0f;
+ if (touch_num > ts->max_touch_num)
+ return -EPROTO;
+
+ if (touch_num > 1) {
+ data += 1 + GOODIX_CONTACT_SIZE;
+ error = goodix_i2c_read(ts->client,
+ GOODIX_READ_COOR_ADDR +
+ 1 + GOODIX_CONTACT_SIZE,
+ data,
+ GOODIX_CONTACT_SIZE *
+ (touch_num - 1));
+ if (error)
+ return error;
+ }
+
+ return touch_num;
+ }
- touch_num = data[0] & 0x0f;
- if (touch_num > ts->max_touch_num)
- return -EPROTO;
-
- if (touch_num > 1) {
- data += 1 + GOODIX_CONTACT_SIZE;
- error = goodix_i2c_read(ts->client,
- GOODIX_READ_COOR_ADDR +
- 1 + GOODIX_CONTACT_SIZE,
- data,
- GOODIX_CONTACT_SIZE * (touch_num - 1));
- if (error)
- return error;
- }
+ usleep_range(1000, 2000); /* Poll every 1 - 2 ms */
+ } while (time_before(jiffies, max_timeout));
- return touch_num;
+ /*
+ * The Goodix panel will send spurious interrupts after a
+ * 'finger up' event, which will always cause a timeout.
+ */
+ return 0;
}
static void goodix_ts_report_touch(struct goodix_ts_data *ts, u8 *coor_data)
@@ -267,6 +288,12 @@ static void goodix_process_events(struct goodix_ts_data *ts)
if (touch_num < 0)
return;
+ /*
+ * Bit 4 of the first byte reports the status of the capacitive
+ * Windows/Home button.
+ */
+ input_report_key(ts->input_dev, KEY_LEFTMETA, point_data[0] & BIT(4));
+
for (i = 0; i < touch_num; i++)
goodix_ts_report_touch(ts,
&point_data[1 + GOODIX_CONTACT_SIZE * i]);
@@ -612,6 +639,9 @@ static int goodix_request_input_dev(struct goodix_ts_data *ts)
ts->input_dev->id.product = ts->id;
ts->input_dev->id.version = ts->version;
+ /* Capacitive Windows/Home button on some devices */
+ input_set_capability(ts->input_dev, EV_KEY, KEY_LEFTMETA);
+
error = input_register_device(ts->input_dev);
if (error) {
dev_err(&ts->client->dev,
diff --git a/drivers/input/touchscreen/htcpen.c b/drivers/input/touchscreen/htcpen.c
index 92e2243fb77d..8fd909285877 100644
--- a/drivers/input/touchscreen/htcpen.c
+++ b/drivers/input/touchscreen/htcpen.c
@@ -219,7 +219,7 @@ static struct isa_driver htcpen_isa_driver = {
}
};
-static struct dmi_system_id htcshift_dmi_table[] __initdata = {
+static const struct dmi_system_id htcshift_dmi_table[] __initconst = {
{
.ident = "Shift",
.matches = {
diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen/stmfts.c
index 157fdb4bb2e8..8c6c6178ec12 100644
--- a/drivers/input/touchscreen/stmfts.c
+++ b/drivers/input/touchscreen/stmfts.c
@@ -663,12 +663,10 @@ static int stmfts_probe(struct i2c_client *client,
sdata->input->open = stmfts_input_open;
sdata->input->close = stmfts_input_close;
+ input_set_capability(sdata->input, EV_ABS, ABS_MT_POSITION_X);
+ input_set_capability(sdata->input, EV_ABS, ABS_MT_POSITION_Y);
touchscreen_parse_properties(sdata->input, true, &sdata->prop);
- input_set_abs_params(sdata->input, ABS_MT_POSITION_X, 0,
- sdata->prop.max_x, 0, 0);
- input_set_abs_params(sdata->input, ABS_MT_POSITION_Y, 0,
- sdata->prop.max_y, 0, 0);
input_set_abs_params(sdata->input, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
input_set_abs_params(sdata->input, ABS_MT_TOUCH_MINOR, 0, 255, 0, 0);
input_set_abs_params(sdata->input, ABS_MT_ORIENTATION, 0, 255, 0, 0);
diff --git a/drivers/input/touchscreen/surface3_spi.c b/drivers/input/touchscreen/surface3_spi.c
index e12fb9b63f31..5db0f1c4ef38 100644
--- a/drivers/input/touchscreen/surface3_spi.c
+++ b/drivers/input/touchscreen/surface3_spi.c
@@ -173,7 +173,7 @@ static void surface3_spi_process_pen(struct surface3_ts_data *ts_data, u8 *data)
static void surface3_spi_process(struct surface3_ts_data *ts_data)
{
- const char header[] = {
+ static const char header[] = {
0xff, 0xff, 0xff, 0xff, 0xa5, 0x5a, 0xe7, 0x7e, 0x01
};
u8 *data = ts_data->rd_buf;
diff --git a/drivers/input/touchscreen/ti_am335x_tsc.c b/drivers/input/touchscreen/ti_am335x_tsc.c
index 7953381d939a..f1043ae71dcc 100644
--- a/drivers/input/touchscreen/ti_am335x_tsc.c
+++ b/drivers/input/touchscreen/ti_am335x_tsc.c
@@ -161,7 +161,7 @@ static void titsc_step_config(struct titsc *ts_dev)
break;
case 5:
config |= ts_dev->bit_xp | STEPCONFIG_INP_AN4 |
- ts_dev->bit_xn | ts_dev->bit_yp;
+ STEPCONFIG_XNP | STEPCONFIG_YPN;
break;
case 8:
config |= ts_dev->bit_yp | STEPCONFIG_INP(ts_dev->inp_xp);
diff --git a/drivers/input/touchscreen/tsc200x-core.h b/drivers/input/touchscreen/tsc200x-core.h
index 49a63a3c6840..a43c08ccfd3d 100644
--- a/drivers/input/touchscreen/tsc200x-core.h
+++ b/drivers/input/touchscreen/tsc200x-core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _TSC200X_CORE_H
#define _TSC200X_CORE_H
diff --git a/drivers/input/touchscreen/ucb1400_ts.c b/drivers/input/touchscreen/ucb1400_ts.c
index c1e23cfc6155..1a86cbd9326f 100644
--- a/drivers/input/touchscreen/ucb1400_ts.c
+++ b/drivers/input/touchscreen/ucb1400_ts.c
@@ -414,7 +414,7 @@ static int __maybe_unused ucb1400_ts_suspend(struct device *dev)
mutex_lock(&idev->mutex);
if (idev->users)
- ucb1400_ts_start(ucb);
+ ucb1400_ts_stop(ucb);
mutex_unlock(&idev->mutex);
return 0;
@@ -428,7 +428,7 @@ static int __maybe_unused ucb1400_ts_resume(struct device *dev)
mutex_lock(&idev->mutex);
if (idev->users)
- ucb1400_ts_stop(ucb);
+ ucb1400_ts_start(ucb);
mutex_unlock(&idev->mutex);
return 0;
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
index 49bd2ab8c507..f3a21343e636 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -278,7 +278,7 @@ config EXYNOS_IOMMU_DEBUG
config IPMMU_VMSA
bool "Renesas VMSA-compatible IPMMU"
depends on ARM || IOMMU_DMA
- depends on ARCH_RENESAS || COMPILE_TEST
+ depends on ARCH_RENESAS || (COMPILE_TEST && !GENERIC_ATOMIC64)
select IOMMU_API
select IOMMU_IO_PGTABLE_LPAE
select ARM_DMA_USE_IOMMU
@@ -373,7 +373,8 @@ config MTK_IOMMU_V1
config QCOM_IOMMU
# Note: iommu drivers cannot (yet?) be built as modules
bool "Qualcomm IOMMU Support"
- depends on ARCH_QCOM || COMPILE_TEST
+ depends on ARCH_QCOM || (COMPILE_TEST && !GENERIC_ATOMIC64)
+ depends on HAS_DMA
select IOMMU_API
select IOMMU_IO_PGTABLE_LPAE
select ARM_DMA_USE_IOMMU
diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile
index b910aea813a1..1fb695854809 100644
--- a/drivers/iommu/Makefile
+++ b/drivers/iommu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_IOMMU_API) += iommu.o
obj-$(CONFIG_IOMMU_API) += iommu-traces.o
obj-$(CONFIG_IOMMU_API) += iommu-sysfs.o
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 51f8215877f5..8e8874d23717 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -2773,14 +2773,16 @@ int __init amd_iommu_init_api(void)
int __init amd_iommu_init_dma_ops(void)
{
- swiotlb = iommu_pass_through ? 1 : 0;
+ swiotlb = (iommu_pass_through || sme_me_mask) ? 1 : 0;
iommu_detected = 1;
/*
* In case we don't initialize SWIOTLB (actually the common case
- * when AMD IOMMU is enabled), make sure there are global
- * dma_ops set as a fall-back for devices not handled by this
- * driver (for example non-PCI devices).
+ * when AMD IOMMU is enabled and SME is not active), make sure there
+ * are global dma_ops set as a fall-back for devices not handled by
+ * this driver (for example non-PCI devices). When SME is active,
+ * make sure that swiotlb variable remains set so the global dma_ops
+ * continue to be SWIOTLB.
*/
if (!swiotlb)
dma_ops = &nommu_dma_ops;
@@ -3046,6 +3048,7 @@ static size_t amd_iommu_unmap(struct iommu_domain *dom, unsigned long iova,
mutex_unlock(&domain->api_lock);
domain_flush_tlb_pde(domain);
+ domain_flush_complete(domain);
return unmap_size;
}
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 382de42b8359..6fe2d0346073 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -874,7 +874,7 @@ static bool copy_device_table(void)
hi = readl(iommu->mmio_base + MMIO_DEV_TABLE_OFFSET + 4);
entry = (((u64) hi) << 32) + lo;
if (last_entry && last_entry != entry) {
- pr_err("IOMMU:%d should use the same dev table as others!/n",
+ pr_err("IOMMU:%d should use the same dev table as others!\n",
iommu->index);
return false;
}
@@ -882,7 +882,7 @@ static bool copy_device_table(void)
old_devtb_size = ((entry & ~PAGE_MASK) + 1) << 12;
if (old_devtb_size != dev_table_size) {
- pr_err("The device table size of IOMMU:%d is not expected!/n",
+ pr_err("The device table size of IOMMU:%d is not expected!\n",
iommu->index);
return false;
}
@@ -890,7 +890,7 @@ static bool copy_device_table(void)
old_devtb_phys = entry & PAGE_MASK;
if (old_devtb_phys >= 0x100000000ULL) {
- pr_err("The address of old device table is above 4G, not trustworthy!/n");
+ pr_err("The address of old device table is above 4G, not trustworthy!\n");
return false;
}
old_devtb = memremap(old_devtb_phys, dev_table_size, MEMREMAP_WB);
@@ -901,7 +901,7 @@ static bool copy_device_table(void)
old_dev_tbl_cpy = (void *)__get_free_pages(gfp_flag,
get_order(dev_table_size));
if (old_dev_tbl_cpy == NULL) {
- pr_err("Failed to allocate memory for copying old device table!/n");
+ pr_err("Failed to allocate memory for copying old device table!\n");
return false;
}
diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c
index ca5ebaeafd6a..57c920c1372d 100644
--- a/drivers/iommu/dmar.c
+++ b/drivers/iommu/dmar.c
@@ -497,7 +497,7 @@ static int dmar_parse_one_rhsa(struct acpi_dmar_header *header, void *arg)
#define dmar_parse_one_rhsa dmar_res_noop
#endif
-static void __init
+static void
dmar_table_print_dmar_entry(struct acpi_dmar_header *header)
{
struct acpi_dmar_hardware_unit *drhd;
diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c
index f596fcc32898..25c2c75f5332 100644
--- a/drivers/iommu/exynos-iommu.c
+++ b/drivers/iommu/exynos-iommu.c
@@ -709,7 +709,7 @@ static const struct dev_pm_ops sysmmu_pm_ops = {
pm_runtime_force_resume)
};
-static const struct of_device_id sysmmu_of_match[] __initconst = {
+static const struct of_device_id sysmmu_of_match[] = {
{ .compatible = "samsung,exynos-sysmmu", },
{ },
};
diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
index a5b89f6bcdbf..25842b566c39 100644
--- a/drivers/iommu/intel_irq_remapping.c
+++ b/drivers/iommu/intel_irq_remapping.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) "DMAR-IR: " fmt
diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-arm-v7s.c
index d665d0dc16e8..6961fc393f0b 100644
--- a/drivers/iommu/io-pgtable-arm-v7s.c
+++ b/drivers/iommu/io-pgtable-arm-v7s.c
@@ -245,7 +245,7 @@ static void __arm_v7s_free_table(void *table, int lvl,
static void __arm_v7s_pte_sync(arm_v7s_iopte *ptep, int num_entries,
struct io_pgtable_cfg *cfg)
{
- if (!(cfg->quirks & IO_PGTABLE_QUIRK_NO_DMA))
+ if (cfg->quirks & IO_PGTABLE_QUIRK_NO_DMA)
return;
dma_sync_single_for_device(cfg->iommu_dev, __arm_v7s_dma_addr(ptep),
diff --git a/drivers/iommu/io-pgtable.h b/drivers/iommu/io-pgtable.h
index a3e667077b14..cd2e1eafffe6 100644
--- a/drivers/iommu/io-pgtable.h
+++ b/drivers/iommu/io-pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IO_PGTABLE_H
#define __IO_PGTABLE_H
#include <linux/bitops.h>
diff --git a/drivers/iommu/iommu-traces.c b/drivers/iommu/iommu-traces.c
index bf3b317ff0c1..1e9ca7789de1 100644
--- a/drivers/iommu/iommu-traces.c
+++ b/drivers/iommu/iommu-traces.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* iommu trace points
*
diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index bd515be5b380..16d33ac19db0 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -371,7 +371,8 @@ static int mtk_iommu_map(struct iommu_domain *domain, unsigned long iova,
int ret;
spin_lock_irqsave(&dom->pgtlock, flags);
- ret = dom->iop->map(dom->iop, iova, paddr, size, prot);
+ ret = dom->iop->map(dom->iop, iova, paddr & DMA_BIT_MASK(32),
+ size, prot);
spin_unlock_irqrestore(&dom->pgtlock, flags);
return ret;
diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
index e60e3dba85a0..50947ebb6d17 100644
--- a/drivers/iommu/of_iommu.c
+++ b/drivers/iommu/of_iommu.c
@@ -157,10 +157,7 @@ static int of_pci_iommu_init(struct pci_dev *pdev, u16 alias, void *data)
err = of_iommu_xlate(info->dev, &iommu_spec);
of_node_put(iommu_spec.np);
- if (err)
- return err;
-
- return info->np == pdev->bus->dev.of_node;
+ return err;
}
const struct iommu_ops *of_iommu_configure(struct device *dev,
diff --git a/drivers/iommu/s390-iommu.c b/drivers/iommu/s390-iommu.c
index 0e2f31f9032b..22d4db302c1c 100644
--- a/drivers/iommu/s390-iommu.c
+++ b/drivers/iommu/s390-iommu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IOMMU API for s390 PCI devices
*
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index 845abc107ad5..b842dfdc903f 100644
--- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_IRQCHIP) += irqchip.o
obj-$(CONFIG_ALPINE_MSI) += irq-alpine-msi.o
diff --git a/drivers/irqchip/irq-ftintc010.c b/drivers/irqchip/irq-ftintc010.c
index cd2dc8bbbe9c..0bf98425dca5 100644
--- a/drivers/irqchip/irq-ftintc010.c
+++ b/drivers/irqchip/irq-ftintc010.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* irqchip for the Faraday Technology FTINTC010 Copyright (C) 2017 Linus
* Walleij <linus.walleij@linaro.org>
diff --git a/drivers/irqchip/irq-gic-realview.c b/drivers/irqchip/irq-gic-realview.c
index 18d58d2b4ffe..b4c1924f0255 100644
--- a/drivers/irqchip/irq-gic-realview.c
+++ b/drivers/irqchip/irq-gic-realview.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Special GIC quirks for the ARM RealView
* Copyright (C) 2015 Linus Walleij
diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
index e8d89343d613..e88395605e32 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -107,6 +107,10 @@ struct its_node {
#define ITS_ITT_ALIGN SZ_256
+/* The maximum number of VPEID bits supported by VLPI commands */
+#define ITS_MAX_VPEID_BITS (16)
+#define ITS_MAX_VPEID (1 << (ITS_MAX_VPEID_BITS))
+
/* Convert page order to size in bytes */
#define PAGE_ORDER_TO_SIZE(o) (PAGE_SIZE << (o))
@@ -308,7 +312,7 @@ static void its_encode_size(struct its_cmd_block *cmd, u8 size)
static void its_encode_itt(struct its_cmd_block *cmd, u64 itt_addr)
{
- its_mask_encode(&cmd->raw_cmd[2], itt_addr >> 8, 50, 8);
+ its_mask_encode(&cmd->raw_cmd[2], itt_addr >> 8, 51, 8);
}
static void its_encode_valid(struct its_cmd_block *cmd, int valid)
@@ -318,7 +322,7 @@ static void its_encode_valid(struct its_cmd_block *cmd, int valid)
static void its_encode_target(struct its_cmd_block *cmd, u64 target_addr)
{
- its_mask_encode(&cmd->raw_cmd[2], target_addr >> 16, 50, 16);
+ its_mask_encode(&cmd->raw_cmd[2], target_addr >> 16, 51, 16);
}
static void its_encode_collection(struct its_cmd_block *cmd, u16 col)
@@ -358,7 +362,7 @@ static void its_encode_its_list(struct its_cmd_block *cmd, u16 its_list)
static void its_encode_vpt_addr(struct its_cmd_block *cmd, u64 vpt_pa)
{
- its_mask_encode(&cmd->raw_cmd[3], vpt_pa >> 16, 50, 16);
+ its_mask_encode(&cmd->raw_cmd[3], vpt_pa >> 16, 51, 16);
}
static void its_encode_vpt_size(struct its_cmd_block *cmd, u8 vpt_size)
@@ -1478,9 +1482,9 @@ static int its_setup_baser(struct its_node *its, struct its_baser *baser,
u64 val = its_read_baser(its, baser);
u64 esz = GITS_BASER_ENTRY_SIZE(val);
u64 type = GITS_BASER_TYPE(val);
+ u64 baser_phys, tmp;
u32 alloc_pages;
void *base;
- u64 tmp;
retry_alloc_baser:
alloc_pages = (PAGE_ORDER_TO_SIZE(order) / psz);
@@ -1496,8 +1500,24 @@ retry_alloc_baser:
if (!base)
return -ENOMEM;
+ baser_phys = virt_to_phys(base);
+
+ /* Check if the physical address of the memory is above 48bits */
+ if (IS_ENABLED(CONFIG_ARM64_64K_PAGES) && (baser_phys >> 48)) {
+
+ /* 52bit PA is supported only when PageSize=64K */
+ if (psz != SZ_64K) {
+ pr_err("ITS: no 52bit PA support when psz=%d\n", psz);
+ free_pages((unsigned long)base, order);
+ return -ENXIO;
+ }
+
+ /* Convert 52bit PA to 48bit field */
+ baser_phys = GITS_BASER_PHYS_52_to_48(baser_phys);
+ }
+
retry_baser:
- val = (virt_to_phys(base) |
+ val = (baser_phys |
(type << GITS_BASER_TYPE_SHIFT) |
((esz - 1) << GITS_BASER_ENTRY_SIZE_SHIFT) |
((alloc_pages - 1) << GITS_BASER_PAGES_SHIFT) |
@@ -1582,13 +1602,12 @@ retry_baser:
static bool its_parse_indirect_baser(struct its_node *its,
struct its_baser *baser,
- u32 psz, u32 *order)
+ u32 psz, u32 *order, u32 ids)
{
u64 tmp = its_read_baser(its, baser);
u64 type = GITS_BASER_TYPE(tmp);
u64 esz = GITS_BASER_ENTRY_SIZE(tmp);
u64 val = GITS_BASER_InnerShareable | GITS_BASER_RaWaWb;
- u32 ids = its->device_ids;
u32 new_order = *order;
bool indirect = false;
@@ -1680,9 +1699,13 @@ static int its_alloc_tables(struct its_node *its)
continue;
case GITS_BASER_TYPE_DEVICE:
+ indirect = its_parse_indirect_baser(its, baser,
+ psz, &order,
+ its->device_ids);
case GITS_BASER_TYPE_VCPU:
indirect = its_parse_indirect_baser(its, baser,
- psz, &order);
+ psz, &order,
+ ITS_MAX_VPEID_BITS);
break;
}
@@ -2551,7 +2574,7 @@ static struct irq_chip its_vpe_irq_chip = {
static int its_vpe_id_alloc(void)
{
- return ida_simple_get(&its_vpeid_ida, 0, 1 << 16, GFP_KERNEL);
+ return ida_simple_get(&its_vpeid_ida, 0, ITS_MAX_VPEID, GFP_KERNEL);
}
static void its_vpe_id_free(u16 id)
@@ -2851,7 +2874,7 @@ static int its_init_vpe_domain(void)
return -ENOMEM;
}
- BUG_ON(entries != vpe_proxy.dev->nr_ites);
+ BUG_ON(entries > vpe_proxy.dev->nr_ites);
raw_spin_lock_init(&vpe_proxy.lock);
vpe_proxy.next_victim = 0;
diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
index 519149ec9053..b5df99c6f680 100644
--- a/drivers/irqchip/irq-gic-v3.c
+++ b/drivers/irqchip/irq-gic-v3.c
@@ -1042,7 +1042,7 @@ static int get_cpu_number(struct device_node *dn)
{
const __be32 *cell;
u64 hwid;
- int i;
+ int cpu;
cell = of_get_property(dn, "reg", NULL);
if (!cell)
@@ -1056,9 +1056,9 @@ static int get_cpu_number(struct device_node *dn)
if (hwid & ~MPIDR_HWID_BITMASK)
return -1;
- for (i = 0; i < num_possible_cpus(); i++)
- if (cpu_logical_map(i) == hwid)
- return i;
+ for_each_possible_cpu(cpu)
+ if (cpu_logical_map(cpu) == hwid)
+ return cpu;
return -1;
}
diff --git a/drivers/irqchip/irq-gic-v4.c b/drivers/irqchip/irq-gic-v4.c
index 2370e6d9e603..cd0bcc3b7e33 100644
--- a/drivers/irqchip/irq-gic-v4.c
+++ b/drivers/irqchip/irq-gic-v4.c
@@ -173,7 +173,9 @@ int its_map_vlpi(int irq, struct its_vlpi_map *map)
{
struct its_cmd_info info = {
.cmd_type = MAP_VLPI,
- .map = map,
+ {
+ .map = map,
+ },
};
/*
@@ -189,7 +191,9 @@ int its_get_vlpi(int irq, struct its_vlpi_map *map)
{
struct its_cmd_info info = {
.cmd_type = GET_VLPI,
- .map = map,
+ {
+ .map = map,
+ },
};
return irq_set_vcpu_affinity(irq, &info);
@@ -205,7 +209,9 @@ int its_prop_update_vlpi(int irq, u8 config, bool inv)
{
struct its_cmd_info info = {
.cmd_type = inv ? PROP_UPDATE_AND_INV_VLPI : PROP_UPDATE_VLPI,
- .config = config,
+ {
+ .config = config,
+ },
};
return irq_set_vcpu_affinity(irq, &info);
diff --git a/drivers/irqchip/irq-imgpdc.c b/drivers/irqchip/irq-imgpdc.c
index c02d29c9dc05..1f59998e03f8 100644
--- a/drivers/irqchip/irq-imgpdc.c
+++ b/drivers/irqchip/irq-imgpdc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IMG PowerDown Controller (PDC)
*
diff --git a/drivers/irqchip/irq-metag-ext.c b/drivers/irqchip/irq-metag-ext.c
index be7216bfb8dd..e67483161f0f 100644
--- a/drivers/irqchip/irq-metag-ext.c
+++ b/drivers/irqchip/irq-metag-ext.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Meta External interrupt code.
*
diff --git a/drivers/irqchip/irq-metag.c b/drivers/irqchip/irq-metag.c
index a5f053bd2f44..857b946747eb 100644
--- a/drivers/irqchip/irq-metag.c
+++ b/drivers/irqchip/irq-metag.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Meta internal (HWSTATMETA) interrupt code.
*
diff --git a/drivers/irqchip/irq-mips-cpu.c b/drivers/irqchip/irq-mips-cpu.c
index 14461cbfab2f..66f97fde13d8 100644
--- a/drivers/irqchip/irq-mips-cpu.c
+++ b/drivers/irqchip/irq-mips-cpu.c
@@ -101,7 +101,7 @@ static void mips_mt_send_ipi(struct irq_data *d, unsigned int cpu)
local_irq_save(flags);
/* We can only send IPIs to VPEs within the local core */
- WARN_ON(cpu_data[cpu].core != current_cpu_data.core);
+ WARN_ON(!cpus_are_siblings(smp_processor_id(), cpu));
vpflags = dvpe();
settc(cpu_vpe_id(&cpu_data[cpu]));
diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c
index b3a60da088db..c90976d7e53c 100644
--- a/drivers/irqchip/irq-mips-gic.c
+++ b/drivers/irqchip/irq-mips-gic.c
@@ -12,27 +12,38 @@
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/irqchip.h>
-#include <linux/irqchip/mips-gic.h>
#include <linux/of_address.h>
+#include <linux/percpu.h>
#include <linux/sched.h>
#include <linux/smp.h>
-#include <asm/mips-cm.h>
+#include <asm/mips-cps.h>
#include <asm/setup.h>
#include <asm/traps.h>
#include <dt-bindings/interrupt-controller/mips-gic.h>
-unsigned int gic_present;
+#define GIC_MAX_INTRS 256
+#define GIC_MAX_LONGS BITS_TO_LONGS(GIC_MAX_INTRS)
-struct gic_pcpu_mask {
- DECLARE_BITMAP(pcpu_mask, GIC_MAX_INTRS);
-};
+/* Add 2 to convert GIC CPU pin to core interrupt */
+#define GIC_CPU_PIN_OFFSET 2
+
+/* Mapped interrupt to pin X, then GIC will generate the vector (X+1). */
+#define GIC_PIN_TO_VEC_OFFSET 1
+
+/* Convert between local/shared IRQ number and GIC HW IRQ number. */
+#define GIC_LOCAL_HWIRQ_BASE 0
+#define GIC_LOCAL_TO_HWIRQ(x) (GIC_LOCAL_HWIRQ_BASE + (x))
+#define GIC_HWIRQ_TO_LOCAL(x) ((x) - GIC_LOCAL_HWIRQ_BASE)
+#define GIC_SHARED_HWIRQ_BASE GIC_NUM_LOCAL_INTRS
+#define GIC_SHARED_TO_HWIRQ(x) (GIC_SHARED_HWIRQ_BASE + (x))
+#define GIC_HWIRQ_TO_SHARED(x) ((x) - GIC_SHARED_HWIRQ_BASE)
+
+void __iomem *mips_gic_base;
-static unsigned long __gic_base_addr;
+DEFINE_PER_CPU_READ_MOSTLY(unsigned long[GIC_MAX_LONGS], pcpu_masks);
-static void __iomem *gic_base;
-static struct gic_pcpu_mask pcpu_masks[NR_CPUS];
static DEFINE_SPINLOCK(gic_lock);
static struct irq_domain *gic_irq_domain;
static struct irq_domain *gic_ipi_domain;
@@ -44,202 +55,13 @@ static struct irq_chip gic_level_irq_controller, gic_edge_irq_controller;
DECLARE_BITMAP(ipi_resrv, GIC_MAX_INTRS);
DECLARE_BITMAP(ipi_available, GIC_MAX_INTRS);
-static void __gic_irq_dispatch(void);
-
-static inline u32 gic_read32(unsigned int reg)
-{
- return __raw_readl(gic_base + reg);
-}
-
-static inline u64 gic_read64(unsigned int reg)
-{
- return __raw_readq(gic_base + reg);
-}
-
-static inline unsigned long gic_read(unsigned int reg)
-{
- if (!mips_cm_is64)
- return gic_read32(reg);
- else
- return gic_read64(reg);
-}
-
-static inline void gic_write32(unsigned int reg, u32 val)
-{
- return __raw_writel(val, gic_base + reg);
-}
-
-static inline void gic_write64(unsigned int reg, u64 val)
-{
- return __raw_writeq(val, gic_base + reg);
-}
-
-static inline void gic_write(unsigned int reg, unsigned long val)
-{
- if (!mips_cm_is64)
- return gic_write32(reg, (u32)val);
- else
- return gic_write64(reg, (u64)val);
-}
-
-static inline void gic_update_bits(unsigned int reg, unsigned long mask,
- unsigned long val)
-{
- unsigned long regval;
-
- regval = gic_read(reg);
- regval &= ~mask;
- regval |= val;
- gic_write(reg, regval);
-}
-
-static inline void gic_reset_mask(unsigned int intr)
-{
- gic_write(GIC_REG(SHARED, GIC_SH_RMASK) + GIC_INTR_OFS(intr),
- 1ul << GIC_INTR_BIT(intr));
-}
-
-static inline void gic_set_mask(unsigned int intr)
-{
- gic_write(GIC_REG(SHARED, GIC_SH_SMASK) + GIC_INTR_OFS(intr),
- 1ul << GIC_INTR_BIT(intr));
-}
-
-static inline void gic_set_polarity(unsigned int intr, unsigned int pol)
-{
- gic_update_bits(GIC_REG(SHARED, GIC_SH_SET_POLARITY) +
- GIC_INTR_OFS(intr), 1ul << GIC_INTR_BIT(intr),
- (unsigned long)pol << GIC_INTR_BIT(intr));
-}
-
-static inline void gic_set_trigger(unsigned int intr, unsigned int trig)
-{
- gic_update_bits(GIC_REG(SHARED, GIC_SH_SET_TRIGGER) +
- GIC_INTR_OFS(intr), 1ul << GIC_INTR_BIT(intr),
- (unsigned long)trig << GIC_INTR_BIT(intr));
-}
-
-static inline void gic_set_dual_edge(unsigned int intr, unsigned int dual)
-{
- gic_update_bits(GIC_REG(SHARED, GIC_SH_SET_DUAL) + GIC_INTR_OFS(intr),
- 1ul << GIC_INTR_BIT(intr),
- (unsigned long)dual << GIC_INTR_BIT(intr));
-}
-
-static inline void gic_map_to_pin(unsigned int intr, unsigned int pin)
-{
- gic_write32(GIC_REG(SHARED, GIC_SH_INTR_MAP_TO_PIN_BASE) +
- GIC_SH_MAP_TO_PIN(intr), GIC_MAP_TO_PIN_MSK | pin);
-}
-
-static inline void gic_map_to_vpe(unsigned int intr, unsigned int vpe)
-{
- gic_write(GIC_REG(SHARED, GIC_SH_INTR_MAP_TO_VPE_BASE) +
- GIC_SH_MAP_TO_VPE_REG_OFF(intr, vpe),
- GIC_SH_MAP_TO_VPE_REG_BIT(vpe));
-}
-
-#ifdef CONFIG_CLKSRC_MIPS_GIC
-u64 notrace gic_read_count(void)
-{
- unsigned int hi, hi2, lo;
-
- if (mips_cm_is64)
- return (u64)gic_read(GIC_REG(SHARED, GIC_SH_COUNTER));
-
- do {
- hi = gic_read32(GIC_REG(SHARED, GIC_SH_COUNTER_63_32));
- lo = gic_read32(GIC_REG(SHARED, GIC_SH_COUNTER_31_00));
- hi2 = gic_read32(GIC_REG(SHARED, GIC_SH_COUNTER_63_32));
- } while (hi2 != hi);
-
- return (((u64) hi) << 32) + lo;
-}
-
-unsigned int gic_get_count_width(void)
+static void gic_clear_pcpu_masks(unsigned int intr)
{
- unsigned int bits, config;
-
- config = gic_read(GIC_REG(SHARED, GIC_SH_CONFIG));
- bits = 32 + 4 * ((config & GIC_SH_CONFIG_COUNTBITS_MSK) >>
- GIC_SH_CONFIG_COUNTBITS_SHF);
-
- return bits;
-}
-
-void notrace gic_write_compare(u64 cnt)
-{
- if (mips_cm_is64) {
- gic_write(GIC_REG(VPE_LOCAL, GIC_VPE_COMPARE), cnt);
- } else {
- gic_write32(GIC_REG(VPE_LOCAL, GIC_VPE_COMPARE_HI),
- (int)(cnt >> 32));
- gic_write32(GIC_REG(VPE_LOCAL, GIC_VPE_COMPARE_LO),
- (int)(cnt & 0xffffffff));
- }
-}
-
-void notrace gic_write_cpu_compare(u64 cnt, int cpu)
-{
- unsigned long flags;
-
- local_irq_save(flags);
-
- gic_write(GIC_REG(VPE_LOCAL, GIC_VPE_OTHER_ADDR), mips_cm_vp_id(cpu));
-
- if (mips_cm_is64) {
- gic_write(GIC_REG(VPE_OTHER, GIC_VPE_COMPARE), cnt);
- } else {
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_COMPARE_HI),
- (int)(cnt >> 32));
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_COMPARE_LO),
- (int)(cnt & 0xffffffff));
- }
-
- local_irq_restore(flags);
-}
-
-u64 gic_read_compare(void)
-{
- unsigned int hi, lo;
-
- if (mips_cm_is64)
- return (u64)gic_read(GIC_REG(VPE_LOCAL, GIC_VPE_COMPARE));
-
- hi = gic_read32(GIC_REG(VPE_LOCAL, GIC_VPE_COMPARE_HI));
- lo = gic_read32(GIC_REG(VPE_LOCAL, GIC_VPE_COMPARE_LO));
-
- return (((u64) hi) << 32) + lo;
-}
-
-void gic_start_count(void)
-{
- u32 gicconfig;
-
- /* Start the counter */
- gicconfig = gic_read(GIC_REG(SHARED, GIC_SH_CONFIG));
- gicconfig &= ~(1 << GIC_SH_CONFIG_COUNTSTOP_SHF);
- gic_write(GIC_REG(SHARED, GIC_SH_CONFIG), gicconfig);
-}
-
-void gic_stop_count(void)
-{
- u32 gicconfig;
-
- /* Stop the counter */
- gicconfig = gic_read(GIC_REG(SHARED, GIC_SH_CONFIG));
- gicconfig |= 1 << GIC_SH_CONFIG_COUNTSTOP_SHF;
- gic_write(GIC_REG(SHARED, GIC_SH_CONFIG), gicconfig);
-}
-
-#endif
-
-unsigned gic_read_local_vp_id(void)
-{
- unsigned long ident;
+ unsigned int i;
- ident = gic_read(GIC_REG(VPE_LOCAL, GIC_VP_IDENT));
- return ident & GIC_VP_IDENT_VCNUM_MSK;
+ /* Clear the interrupt's bit in all pcpu_masks */
+ for_each_possible_cpu(i)
+ clear_bit(intr, per_cpu_ptr(pcpu_masks, i));
}
static bool gic_local_irq_is_routable(int intr)
@@ -250,17 +72,17 @@ static bool gic_local_irq_is_routable(int intr)
if (cpu_has_veic)
return true;
- vpe_ctl = gic_read32(GIC_REG(VPE_LOCAL, GIC_VPE_CTL));
+ vpe_ctl = read_gic_vl_ctl();
switch (intr) {
case GIC_LOCAL_INT_TIMER:
- return vpe_ctl & GIC_VPE_CTL_TIMER_RTBL_MSK;
+ return vpe_ctl & GIC_VX_CTL_TIMER_ROUTABLE;
case GIC_LOCAL_INT_PERFCTR:
- return vpe_ctl & GIC_VPE_CTL_PERFCNT_RTBL_MSK;
+ return vpe_ctl & GIC_VX_CTL_PERFCNT_ROUTABLE;
case GIC_LOCAL_INT_FDC:
- return vpe_ctl & GIC_VPE_CTL_FDC_RTBL_MSK;
+ return vpe_ctl & GIC_VX_CTL_FDC_ROUTABLE;
case GIC_LOCAL_INT_SWINT0:
case GIC_LOCAL_INT_SWINT1:
- return vpe_ctl & GIC_VPE_CTL_SWINT_RTBL_MSK;
+ return vpe_ctl & GIC_VX_CTL_SWINT_ROUTABLE;
default:
return true;
}
@@ -272,15 +94,14 @@ static void gic_bind_eic_interrupt(int irq, int set)
irq -= GIC_PIN_TO_VEC_OFFSET;
/* Set irq to use shadow set */
- gic_write(GIC_REG(VPE_LOCAL, GIC_VPE_EIC_SHADOW_SET_BASE) +
- GIC_VPE_EIC_SS(irq), set);
+ write_gic_vl_eic_shadow_set(irq, set);
}
static void gic_send_ipi(struct irq_data *d, unsigned int cpu)
{
irq_hw_number_t hwirq = GIC_HWIRQ_TO_SHARED(irqd_to_hwirq(d));
- gic_write(GIC_REG(SHARED, GIC_SH_WEDGE), GIC_SH_WEDGE_SET(hwirq));
+ write_gic_wedge(GIC_WEDGE_RW | hwirq);
}
int gic_get_c0_compare_int(void)
@@ -316,47 +137,22 @@ int gic_get_c0_fdc_int(void)
GIC_LOCAL_TO_HWIRQ(GIC_LOCAL_INT_FDC));
}
-int gic_get_usm_range(struct resource *gic_usm_res)
-{
- if (!gic_present)
- return -1;
-
- gic_usm_res->start = __gic_base_addr + USM_VISIBLE_SECTION_OFS;
- gic_usm_res->end = gic_usm_res->start + (USM_VISIBLE_SECTION_SIZE - 1);
-
- return 0;
-}
-
static void gic_handle_shared_int(bool chained)
{
- unsigned int i, intr, virq, gic_reg_step = mips_cm_is64 ? 8 : 4;
+ unsigned int intr, virq;
unsigned long *pcpu_mask;
- unsigned long pending_reg, intrmask_reg;
DECLARE_BITMAP(pending, GIC_MAX_INTRS);
- DECLARE_BITMAP(intrmask, GIC_MAX_INTRS);
/* Get per-cpu bitmaps */
- pcpu_mask = pcpu_masks[smp_processor_id()].pcpu_mask;
-
- pending_reg = GIC_REG(SHARED, GIC_SH_PEND);
- intrmask_reg = GIC_REG(SHARED, GIC_SH_MASK);
-
- for (i = 0; i < BITS_TO_LONGS(gic_shared_intrs); i++) {
- pending[i] = gic_read(pending_reg);
- intrmask[i] = gic_read(intrmask_reg);
- pending_reg += gic_reg_step;
- intrmask_reg += gic_reg_step;
+ pcpu_mask = this_cpu_ptr(pcpu_masks);
- if (!IS_ENABLED(CONFIG_64BIT) || mips_cm_is64)
- continue;
-
- pending[i] |= (u64)gic_read(pending_reg) << 32;
- intrmask[i] |= (u64)gic_read(intrmask_reg) << 32;
- pending_reg += gic_reg_step;
- intrmask_reg += gic_reg_step;
- }
+ if (mips_cm_is64)
+ __ioread64_copy(pending, addr_gic_pend(),
+ DIV_ROUND_UP(gic_shared_intrs, 64));
+ else
+ __ioread32_copy(pending, addr_gic_pend(),
+ DIV_ROUND_UP(gic_shared_intrs, 32));
- bitmap_and(pending, pending, intrmask, gic_shared_intrs);
bitmap_and(pending, pending, pcpu_mask, gic_shared_intrs);
for_each_set_bit(intr, pending, gic_shared_intrs) {
@@ -371,19 +167,29 @@ static void gic_handle_shared_int(bool chained)
static void gic_mask_irq(struct irq_data *d)
{
- gic_reset_mask(GIC_HWIRQ_TO_SHARED(d->hwirq));
+ unsigned int intr = GIC_HWIRQ_TO_SHARED(d->hwirq);
+
+ write_gic_rmask(intr);
+ gic_clear_pcpu_masks(intr);
}
static void gic_unmask_irq(struct irq_data *d)
{
- gic_set_mask(GIC_HWIRQ_TO_SHARED(d->hwirq));
+ unsigned int intr = GIC_HWIRQ_TO_SHARED(d->hwirq);
+ unsigned int cpu;
+
+ write_gic_smask(intr);
+
+ gic_clear_pcpu_masks(intr);
+ cpu = cpumask_first(irq_data_get_effective_affinity_mask(d));
+ set_bit(intr, per_cpu_ptr(pcpu_masks, cpu));
}
static void gic_ack_irq(struct irq_data *d)
{
unsigned int irq = GIC_HWIRQ_TO_SHARED(d->hwirq);
- gic_write(GIC_REG(SHARED, GIC_SH_WEDGE), GIC_SH_WEDGE_CLR(irq));
+ write_gic_wedge(irq);
}
static int gic_set_type(struct irq_data *d, unsigned int type)
@@ -395,34 +201,34 @@ static int gic_set_type(struct irq_data *d, unsigned int type)
spin_lock_irqsave(&gic_lock, flags);
switch (type & IRQ_TYPE_SENSE_MASK) {
case IRQ_TYPE_EDGE_FALLING:
- gic_set_polarity(irq, GIC_POL_NEG);
- gic_set_trigger(irq, GIC_TRIG_EDGE);
- gic_set_dual_edge(irq, GIC_TRIG_DUAL_DISABLE);
+ change_gic_pol(irq, GIC_POL_FALLING_EDGE);
+ change_gic_trig(irq, GIC_TRIG_EDGE);
+ change_gic_dual(irq, GIC_DUAL_SINGLE);
is_edge = true;
break;
case IRQ_TYPE_EDGE_RISING:
- gic_set_polarity(irq, GIC_POL_POS);
- gic_set_trigger(irq, GIC_TRIG_EDGE);
- gic_set_dual_edge(irq, GIC_TRIG_DUAL_DISABLE);
+ change_gic_pol(irq, GIC_POL_RISING_EDGE);
+ change_gic_trig(irq, GIC_TRIG_EDGE);
+ change_gic_dual(irq, GIC_DUAL_SINGLE);
is_edge = true;
break;
case IRQ_TYPE_EDGE_BOTH:
/* polarity is irrelevant in this case */
- gic_set_trigger(irq, GIC_TRIG_EDGE);
- gic_set_dual_edge(irq, GIC_TRIG_DUAL_ENABLE);
+ change_gic_trig(irq, GIC_TRIG_EDGE);
+ change_gic_dual(irq, GIC_DUAL_DUAL);
is_edge = true;
break;
case IRQ_TYPE_LEVEL_LOW:
- gic_set_polarity(irq, GIC_POL_NEG);
- gic_set_trigger(irq, GIC_TRIG_LEVEL);
- gic_set_dual_edge(irq, GIC_TRIG_DUAL_DISABLE);
+ change_gic_pol(irq, GIC_POL_ACTIVE_LOW);
+ change_gic_trig(irq, GIC_TRIG_LEVEL);
+ change_gic_dual(irq, GIC_DUAL_SINGLE);
is_edge = false;
break;
case IRQ_TYPE_LEVEL_HIGH:
default:
- gic_set_polarity(irq, GIC_POL_POS);
- gic_set_trigger(irq, GIC_TRIG_LEVEL);
- gic_set_dual_edge(irq, GIC_TRIG_DUAL_DISABLE);
+ change_gic_pol(irq, GIC_POL_ACTIVE_HIGH);
+ change_gic_trig(irq, GIC_TRIG_LEVEL);
+ change_gic_dual(irq, GIC_DUAL_SINGLE);
is_edge = false;
break;
}
@@ -443,32 +249,28 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *cpumask,
bool force)
{
unsigned int irq = GIC_HWIRQ_TO_SHARED(d->hwirq);
- cpumask_t tmp = CPU_MASK_NONE;
- unsigned long flags;
- int i, cpu;
+ unsigned long flags;
+ unsigned int cpu;
- cpumask_and(&tmp, cpumask, cpu_online_mask);
- if (cpumask_empty(&tmp))
+ cpu = cpumask_first_and(cpumask, cpu_online_mask);
+ if (cpu >= NR_CPUS)
return -EINVAL;
- cpu = cpumask_first(&tmp);
-
/* Assumption : cpumask refers to a single CPU */
spin_lock_irqsave(&gic_lock, flags);
/* Re-route this IRQ */
- gic_map_to_vpe(irq, mips_cm_vp_id(cpu));
+ write_gic_map_vp(irq, BIT(mips_cm_vp_id(cpu)));
/* Update the pcpu_masks */
- for (i = 0; i < min(gic_vpes, NR_CPUS); i++)
- clear_bit(irq, pcpu_masks[i].pcpu_mask);
- set_bit(irq, pcpu_masks[cpu].pcpu_mask);
+ gic_clear_pcpu_masks(irq);
+ if (read_gic_mask(irq))
+ set_bit(irq, per_cpu_ptr(pcpu_masks, cpu));
- cpumask_copy(irq_data_get_affinity_mask(d), cpumask);
irq_data_update_effective_affinity(d, cpumask_of(cpu));
spin_unlock_irqrestore(&gic_lock, flags);
- return IRQ_SET_MASK_OK_NOCOPY;
+ return IRQ_SET_MASK_OK;
}
#endif
@@ -499,8 +301,8 @@ static void gic_handle_local_int(bool chained)
unsigned long pending, masked;
unsigned int intr, virq;
- pending = gic_read32(GIC_REG(VPE_LOCAL, GIC_VPE_PEND));
- masked = gic_read32(GIC_REG(VPE_LOCAL, GIC_VPE_MASK));
+ pending = read_gic_vl_pend();
+ masked = read_gic_vl_mask();
bitmap_and(&pending, &pending, &masked, GIC_NUM_LOCAL_INTRS);
@@ -518,14 +320,14 @@ static void gic_mask_local_irq(struct irq_data *d)
{
int intr = GIC_HWIRQ_TO_LOCAL(d->hwirq);
- gic_write32(GIC_REG(VPE_LOCAL, GIC_VPE_RMASK), 1 << intr);
+ write_gic_vl_rmask(BIT(intr));
}
static void gic_unmask_local_irq(struct irq_data *d)
{
int intr = GIC_HWIRQ_TO_LOCAL(d->hwirq);
- gic_write32(GIC_REG(VPE_LOCAL, GIC_VPE_SMASK), 1 << intr);
+ write_gic_vl_smask(BIT(intr));
}
static struct irq_chip gic_local_irq_controller = {
@@ -542,9 +344,8 @@ static void gic_mask_local_irq_all_vpes(struct irq_data *d)
spin_lock_irqsave(&gic_lock, flags);
for (i = 0; i < gic_vpes; i++) {
- gic_write(GIC_REG(VPE_LOCAL, GIC_VPE_OTHER_ADDR),
- mips_cm_vp_id(i));
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_RMASK), 1 << intr);
+ write_gic_vl_other(mips_cm_vp_id(i));
+ write_gic_vo_rmask(BIT(intr));
}
spin_unlock_irqrestore(&gic_lock, flags);
}
@@ -557,9 +358,8 @@ static void gic_unmask_local_irq_all_vpes(struct irq_data *d)
spin_lock_irqsave(&gic_lock, flags);
for (i = 0; i < gic_vpes; i++) {
- gic_write(GIC_REG(VPE_LOCAL, GIC_VPE_OTHER_ADDR),
- mips_cm_vp_id(i));
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_SMASK), 1 << intr);
+ write_gic_vl_other(mips_cm_vp_id(i));
+ write_gic_vo_smask(BIT(intr));
}
spin_unlock_irqrestore(&gic_lock, flags);
}
@@ -582,103 +382,54 @@ static void gic_irq_dispatch(struct irq_desc *desc)
gic_handle_shared_int(true);
}
-static void __init gic_basic_init(void)
-{
- unsigned int i;
-
- board_bind_eic_interrupt = &gic_bind_eic_interrupt;
-
- /* Setup defaults */
- for (i = 0; i < gic_shared_intrs; i++) {
- gic_set_polarity(i, GIC_POL_POS);
- gic_set_trigger(i, GIC_TRIG_LEVEL);
- gic_reset_mask(i);
- }
-
- for (i = 0; i < gic_vpes; i++) {
- unsigned int j;
-
- gic_write(GIC_REG(VPE_LOCAL, GIC_VPE_OTHER_ADDR),
- mips_cm_vp_id(i));
- for (j = 0; j < GIC_NUM_LOCAL_INTRS; j++) {
- if (!gic_local_irq_is_routable(j))
- continue;
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_RMASK), 1 << j);
- }
- }
-}
-
static int gic_local_irq_domain_map(struct irq_domain *d, unsigned int virq,
irq_hw_number_t hw)
{
int intr = GIC_HWIRQ_TO_LOCAL(hw);
- int ret = 0;
int i;
unsigned long flags;
+ u32 val;
if (!gic_local_irq_is_routable(intr))
return -EPERM;
+ if (intr > GIC_LOCAL_INT_FDC) {
+ pr_err("Invalid local IRQ %d\n", intr);
+ return -EINVAL;
+ }
+
+ if (intr == GIC_LOCAL_INT_TIMER) {
+ /* CONFIG_MIPS_CMP workaround (see __gic_init) */
+ val = GIC_MAP_PIN_MAP_TO_PIN | timer_cpu_pin;
+ } else {
+ val = GIC_MAP_PIN_MAP_TO_PIN | gic_cpu_pin;
+ }
+
spin_lock_irqsave(&gic_lock, flags);
for (i = 0; i < gic_vpes; i++) {
- u32 val = GIC_MAP_TO_PIN_MSK | gic_cpu_pin;
-
- gic_write(GIC_REG(VPE_LOCAL, GIC_VPE_OTHER_ADDR),
- mips_cm_vp_id(i));
-
- switch (intr) {
- case GIC_LOCAL_INT_WD:
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_WD_MAP), val);
- break;
- case GIC_LOCAL_INT_COMPARE:
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_COMPARE_MAP),
- val);
- break;
- case GIC_LOCAL_INT_TIMER:
- /* CONFIG_MIPS_CMP workaround (see __gic_init) */
- val = GIC_MAP_TO_PIN_MSK | timer_cpu_pin;
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_TIMER_MAP),
- val);
- break;
- case GIC_LOCAL_INT_PERFCTR:
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_PERFCTR_MAP),
- val);
- break;
- case GIC_LOCAL_INT_SWINT0:
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_SWINT0_MAP),
- val);
- break;
- case GIC_LOCAL_INT_SWINT1:
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_SWINT1_MAP),
- val);
- break;
- case GIC_LOCAL_INT_FDC:
- gic_write32(GIC_REG(VPE_OTHER, GIC_VPE_FDC_MAP), val);
- break;
- default:
- pr_err("Invalid local IRQ %d\n", intr);
- ret = -EINVAL;
- break;
- }
+ write_gic_vl_other(mips_cm_vp_id(i));
+ write_gic_vo_map(intr, val);
}
spin_unlock_irqrestore(&gic_lock, flags);
- return ret;
+ return 0;
}
static int gic_shared_irq_domain_map(struct irq_domain *d, unsigned int virq,
- irq_hw_number_t hw, unsigned int vpe)
+ irq_hw_number_t hw, unsigned int cpu)
{
int intr = GIC_HWIRQ_TO_SHARED(hw);
+ struct irq_data *data;
unsigned long flags;
- int i;
+
+ data = irq_get_irq_data(virq);
spin_lock_irqsave(&gic_lock, flags);
- gic_map_to_pin(intr, gic_cpu_pin);
- gic_map_to_vpe(intr, mips_cm_vp_id(vpe));
- for (i = 0; i < min(gic_vpes, NR_CPUS); i++)
- clear_bit(intr, pcpu_masks[i].pcpu_mask);
- set_bit(intr, pcpu_masks[vpe].pcpu_mask);
+ write_gic_map_pin(intr, GIC_MAP_PIN_MAP_TO_PIN | gic_cpu_pin);
+ write_gic_map_vp(intr, BIT(mips_cm_vp_id(cpu)));
+ gic_clear_pcpu_masks(intr);
+ set_bit(intr, per_cpu_ptr(pcpu_masks, cpu));
+ irq_data_update_effective_affinity(data, cpumask_of(cpu));
spin_unlock_irqrestore(&gic_lock, flags);
return 0;
@@ -885,34 +636,69 @@ static const struct irq_domain_ops gic_ipi_domain_ops = {
.match = gic_ipi_domain_match,
};
-static void __init __gic_init(unsigned long gic_base_addr,
- unsigned long gic_addrspace_size,
- unsigned int cpu_vec, unsigned int irqbase,
- struct device_node *node)
+
+static int __init gic_of_init(struct device_node *node,
+ struct device_node *parent)
{
- unsigned int gicconfig, cpu;
- unsigned int v[2];
+ unsigned int cpu_vec, i, j, gicconfig, cpu, v[2];
+ unsigned long reserved;
+ phys_addr_t gic_base;
+ struct resource res;
+ size_t gic_len;
- __gic_base_addr = gic_base_addr;
+ /* Find the first available CPU vector. */
+ i = 0;
+ reserved = (C_SW0 | C_SW1) >> __ffs(C_SW0);
+ while (!of_property_read_u32_index(node, "mti,reserved-cpu-vectors",
+ i++, &cpu_vec))
+ reserved |= BIT(cpu_vec);
- gic_base = ioremap_nocache(gic_base_addr, gic_addrspace_size);
+ cpu_vec = find_first_zero_bit(&reserved, hweight_long(ST0_IM));
+ if (cpu_vec == hweight_long(ST0_IM)) {
+ pr_err("No CPU vectors available for GIC\n");
+ return -ENODEV;
+ }
- gicconfig = gic_read(GIC_REG(SHARED, GIC_SH_CONFIG));
- gic_shared_intrs = (gicconfig & GIC_SH_CONFIG_NUMINTRS_MSK) >>
- GIC_SH_CONFIG_NUMINTRS_SHF;
- gic_shared_intrs = ((gic_shared_intrs + 1) * 8);
+ if (of_address_to_resource(node, 0, &res)) {
+ /*
+ * Probe the CM for the GIC base address if not specified
+ * in the device-tree.
+ */
+ if (mips_cm_present()) {
+ gic_base = read_gcr_gic_base() &
+ ~CM_GCR_GIC_BASE_GICEN;
+ gic_len = 0x20000;
+ } else {
+ pr_err("Failed to get GIC memory range\n");
+ return -ENODEV;
+ }
+ } else {
+ gic_base = res.start;
+ gic_len = resource_size(&res);
+ }
+
+ if (mips_cm_present()) {
+ write_gcr_gic_base(gic_base | CM_GCR_GIC_BASE_GICEN);
+ /* Ensure GIC region is enabled before trying to access it */
+ __sync();
+ }
+
+ mips_gic_base = ioremap_nocache(gic_base, gic_len);
- gic_vpes = (gicconfig & GIC_SH_CONFIG_NUMVPES_MSK) >>
- GIC_SH_CONFIG_NUMVPES_SHF;
+ gicconfig = read_gic_config();
+ gic_shared_intrs = gicconfig & GIC_CONFIG_NUMINTERRUPTS;
+ gic_shared_intrs >>= __ffs(GIC_CONFIG_NUMINTERRUPTS);
+ gic_shared_intrs = (gic_shared_intrs + 1) * 8;
+
+ gic_vpes = gicconfig & GIC_CONFIG_PVPS;
+ gic_vpes >>= __ffs(GIC_CONFIG_PVPS);
gic_vpes = gic_vpes + 1;
if (cpu_has_veic) {
/* Set EIC mode for all VPEs */
for_each_present_cpu(cpu) {
- gic_write(GIC_REG(VPE_LOCAL, GIC_VPE_OTHER_ADDR),
- mips_cm_vp_id(cpu));
- gic_write(GIC_REG(VPE_OTHER, GIC_VPE_CTL),
- GIC_VPE_CTL_EIC_MODE_MSK);
+ write_gic_vl_other(mips_cm_vp_id(cpu));
+ write_gic_vo_ctl(GIC_VX_CTL_EIC);
}
/* Always use vector 1 in EIC mode */
@@ -937,9 +723,7 @@ static void __init __gic_init(unsigned long gic_base_addr,
*/
if (IS_ENABLED(CONFIG_MIPS_CMP) &&
gic_local_irq_is_routable(GIC_LOCAL_INT_TIMER)) {
- timer_cpu_pin = gic_read32(GIC_REG(VPE_LOCAL,
- GIC_VPE_TIMER_MAP)) &
- GIC_MAP_MSK;
+ timer_cpu_pin = read_gic_vl_timer_map() & GIC_MAP_PIN_MAP;
irq_set_chained_handler(MIPS_CPU_IRQ_BASE +
GIC_CPU_PIN_OFFSET +
timer_cpu_pin,
@@ -950,17 +734,21 @@ static void __init __gic_init(unsigned long gic_base_addr,
}
gic_irq_domain = irq_domain_add_simple(node, GIC_NUM_LOCAL_INTRS +
- gic_shared_intrs, irqbase,
+ gic_shared_intrs, 0,
&gic_irq_domain_ops, NULL);
- if (!gic_irq_domain)
- panic("Failed to add GIC IRQ domain");
+ if (!gic_irq_domain) {
+ pr_err("Failed to add GIC IRQ domain");
+ return -ENXIO;
+ }
gic_ipi_domain = irq_domain_add_hierarchy(gic_irq_domain,
IRQ_DOMAIN_FLAG_IPI_PER_CPU,
GIC_NUM_LOCAL_INTRS + gic_shared_intrs,
node, &gic_ipi_domain_ops, NULL);
- if (!gic_ipi_domain)
- panic("Failed to add GIC IPI domain");
+ if (!gic_ipi_domain) {
+ pr_err("Failed to add GIC IPI domain");
+ return -ENXIO;
+ }
irq_domain_update_bus_token(gic_ipi_domain, DOMAIN_BUS_IPI);
@@ -975,64 +763,25 @@ static void __init __gic_init(unsigned long gic_base_addr,
}
bitmap_copy(ipi_available, ipi_resrv, GIC_MAX_INTRS);
- gic_basic_init();
-}
-
-void __init gic_init(unsigned long gic_base_addr,
- unsigned long gic_addrspace_size,
- unsigned int cpu_vec, unsigned int irqbase)
-{
- __gic_init(gic_base_addr, gic_addrspace_size, cpu_vec, irqbase, NULL);
-}
-static int __init gic_of_init(struct device_node *node,
- struct device_node *parent)
-{
- struct resource res;
- unsigned int cpu_vec, i = 0, reserved = 0;
- phys_addr_t gic_base;
- size_t gic_len;
+ board_bind_eic_interrupt = &gic_bind_eic_interrupt;
- /* Find the first available CPU vector. */
- while (!of_property_read_u32_index(node, "mti,reserved-cpu-vectors",
- i++, &cpu_vec))
- reserved |= BIT(cpu_vec);
- for (cpu_vec = 2; cpu_vec < 8; cpu_vec++) {
- if (!(reserved & BIT(cpu_vec)))
- break;
- }
- if (cpu_vec == 8) {
- pr_err("No CPU vectors available for GIC\n");
- return -ENODEV;
+ /* Setup defaults */
+ for (i = 0; i < gic_shared_intrs; i++) {
+ change_gic_pol(i, GIC_POL_ACTIVE_HIGH);
+ change_gic_trig(i, GIC_TRIG_LEVEL);
+ write_gic_rmask(i);
}
- if (of_address_to_resource(node, 0, &res)) {
- /*
- * Probe the CM for the GIC base address if not specified
- * in the device-tree.
- */
- if (mips_cm_present()) {
- gic_base = read_gcr_gic_base() &
- ~CM_GCR_GIC_BASE_GICEN_MSK;
- gic_len = 0x20000;
- } else {
- pr_err("Failed to get GIC memory range\n");
- return -ENODEV;
+ for (i = 0; i < gic_vpes; i++) {
+ write_gic_vl_other(mips_cm_vp_id(i));
+ for (j = 0; j < GIC_NUM_LOCAL_INTRS; j++) {
+ if (!gic_local_irq_is_routable(j))
+ continue;
+ write_gic_vo_rmask(BIT(j));
}
- } else {
- gic_base = res.start;
- gic_len = resource_size(&res);
}
- if (mips_cm_present()) {
- write_gcr_gic_base(gic_base | CM_GCR_GIC_BASE_GICEN_MSK);
- /* Ensure GIC region is enabled before trying to access it */
- __sync();
- }
- gic_present = true;
-
- __gic_init(gic_base, gic_len, cpu_vec, 0, node);
-
return 0;
}
IRQCHIP_DECLARE(mips_gic, "mti,gic", gic_of_init);
diff --git a/drivers/irqchip/irq-mvebu-gicp.h b/drivers/irqchip/irq-mvebu-gicp.h
index 98535e886ea5..eaa12fb72102 100644
--- a/drivers/irqchip/irq-mvebu-gicp.h
+++ b/drivers/irqchip/irq-mvebu-gicp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MVEBU_GICP_H__
#define __MVEBU_GICP_H__
diff --git a/drivers/irqchip/irq-renesas-h8300h.c b/drivers/irqchip/irq-renesas-h8300h.c
index b8327590ae52..1054d74b7edd 100644
--- a/drivers/irqchip/irq-renesas-h8300h.c
+++ b/drivers/irqchip/irq-renesas-h8300h.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* H8/300H interrupt controller driver
*
diff --git a/drivers/irqchip/irq-renesas-h8s.c b/drivers/irqchip/irq-renesas-h8s.c
index 71d8139be26c..aed31afb0216 100644
--- a/drivers/irqchip/irq-renesas-h8s.c
+++ b/drivers/irqchip/irq-renesas-h8s.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* H8S interrupt contoller driver
*
diff --git a/drivers/irqchip/irq-tango.c b/drivers/irqchip/irq-tango.c
index bdbb5c0ff7fe..0c085303a583 100644
--- a/drivers/irqchip/irq-tango.c
+++ b/drivers/irqchip/irq-tango.c
@@ -141,7 +141,7 @@ static void __init tangox_irq_init_chip(struct irq_chip_generic *gc,
for (i = 0; i < 2; i++) {
ct[i].chip.irq_ack = irq_gc_ack_set_bit;
ct[i].chip.irq_mask = irq_gc_mask_disable_reg;
- ct[i].chip.irq_mask_ack = irq_gc_mask_disable_reg_and_ack;
+ ct[i].chip.irq_mask_ack = irq_gc_mask_disable_and_ack_set;
ct[i].chip.irq_unmask = irq_gc_unmask_enable_reg;
ct[i].chip.irq_set_type = tangox_irq_set_type;
ct[i].chip.name = gc->domain->name;
diff --git a/drivers/irqchip/irq-versatile-fpga.c b/drivers/irqchip/irq-versatile-fpga.c
index 37dd4645bf18..928858dada75 100644
--- a/drivers/irqchip/irq-versatile-fpga.c
+++ b/drivers/irqchip/irq-versatile-fpga.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for Versatile FPGA-based IRQ controllers
*/
diff --git a/drivers/isdn/Makefile b/drivers/isdn/Makefile
index c32e45826c2c..e7d3d8f2ad5a 100644
--- a/drivers/isdn/Makefile
+++ b/drivers/isdn/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the kernel ISDN subsystem and device drivers.
# Object files in subdirectories
diff --git a/drivers/isdn/capi/Makefile b/drivers/isdn/capi/Makefile
index 4d5b4b71db1e..06da3ed2c40a 100644
--- a/drivers/isdn/capi/Makefile
+++ b/drivers/isdn/capi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the CAPI subsystem.
# Ordering constraints: kernelcapi.o first
diff --git a/drivers/isdn/capi/capilib.c b/drivers/isdn/capi/capilib.c
index 33361f833c01..a39ad3796bba 100644
--- a/drivers/isdn/capi/capilib.c
+++ b/drivers/isdn/capi/capilib.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/slab.h>
#include <linux/kernel.h>
diff --git a/drivers/isdn/gigaset/Makefile b/drivers/isdn/gigaset/Makefile
index c453b72272a0..ac45a2739f56 100644
--- a/drivers/isdn/gigaset/Makefile
+++ b/drivers/isdn/gigaset/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
gigaset-y := common.o interface.o proc.o ev-layer.o asyncdata.o
gigaset-$(CONFIG_GIGASET_CAPI) += capi.o
gigaset-$(CONFIG_GIGASET_I4L) += i4l.o
diff --git a/drivers/isdn/hardware/avm/Makefile b/drivers/isdn/hardware/avm/Makefile
index b540e8f2efb6..3830a0573fcc 100644
--- a/drivers/isdn/hardware/avm/Makefile
+++ b/drivers/isdn/hardware/avm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the AVM ISDN device drivers
# Each configuration option enables a list of files.
diff --git a/drivers/isdn/hardware/eicon/Makefile b/drivers/isdn/hardware/eicon/Makefile
index 4fa7fdb7df0d..a0ab2e2d7df0 100644
--- a/drivers/isdn/hardware/eicon/Makefile
+++ b/drivers/isdn/hardware/eicon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the Eicon DIVA ISDN drivers.
# Each configuration option enables a list of files.
diff --git a/drivers/isdn/hardware/eicon/adapter.h b/drivers/isdn/hardware/eicon/adapter.h
index 71a7c2f084a7..f9b24eb8781d 100644
--- a/drivers/isdn/hardware/eicon/adapter.h
+++ b/drivers/isdn/hardware/eicon/adapter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: adapter.h,v 1.4 2004/03/21 17:26:01 armin Exp $ */
#ifndef __DIVA_USER_MODE_IDI_ADAPTER_H__
diff --git a/drivers/isdn/hardware/eicon/debug.c b/drivers/isdn/hardware/eicon/debug.c
index 8bc2791bc39c..301788115c4f 100644
--- a/drivers/isdn/hardware/eicon/debug.c
+++ b/drivers/isdn/hardware/eicon/debug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "platform.h"
#include "pc.h"
#include "di_defs.h"
diff --git a/drivers/isdn/hardware/eicon/diva.c b/drivers/isdn/hardware/eicon/diva.c
index d91dd580e978..944a7f338099 100644
--- a/drivers/isdn/hardware/eicon/diva.c
+++ b/drivers/isdn/hardware/eicon/diva.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* $Id: diva.c,v 1.21.4.1 2004/05/08 14:33:43 armin Exp $ */
#define CARDTYPE_H_WANT_DATA 1
diff --git a/drivers/isdn/hardware/eicon/diva.h b/drivers/isdn/hardware/eicon/diva.h
index e979085d1b89..b067032093a8 100644
--- a/drivers/isdn/hardware/eicon/diva.h
+++ b/drivers/isdn/hardware/eicon/diva.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: diva.h,v 1.1.2.2 2001/02/08 12:25:43 armin Exp $ */
#ifndef __DIVA_XDI_OS_PART_H__
diff --git a/drivers/isdn/hardware/eicon/diva_pci.h b/drivers/isdn/hardware/eicon/diva_pci.h
index bb4b562050f6..7ef5db98ad3c 100644
--- a/drivers/isdn/hardware/eicon/diva_pci.h
+++ b/drivers/isdn/hardware/eicon/diva_pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: diva_pci.h,v 1.6 2003/01/04 15:29:45 schindler Exp $ */
#ifndef __DIVA_PCI_INTERFACE_H__
diff --git a/drivers/isdn/hardware/eicon/dqueue.h b/drivers/isdn/hardware/eicon/dqueue.h
index 6992c45457a4..2da9799686ab 100644
--- a/drivers/isdn/hardware/eicon/dqueue.h
+++ b/drivers/isdn/hardware/eicon/dqueue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: dqueue.h,v 1.1.2.2 2001/02/08 12:25:43 armin Exp $ */
#ifndef _DIVA_USER_MODE_IDI_DATA_QUEUE_H__
diff --git a/drivers/isdn/hardware/eicon/dsp_tst.h b/drivers/isdn/hardware/eicon/dsp_tst.h
index fe36f138be8b..85edd3ea50f7 100644
--- a/drivers/isdn/hardware/eicon/dsp_tst.h
+++ b/drivers/isdn/hardware/eicon/dsp_tst.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: dsp_tst.h,v 1.1.2.2 2001/02/08 12:25:43 armin Exp $ */
#ifndef __DIVA_PRI_HOST_TEST_DSPS_H__
diff --git a/drivers/isdn/hardware/eicon/entity.h b/drivers/isdn/hardware/eicon/entity.h
index fdb83416af31..f9767d321db9 100644
--- a/drivers/isdn/hardware/eicon/entity.h
+++ b/drivers/isdn/hardware/eicon/entity.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: entity.h,v 1.4 2004/03/21 17:26:01 armin Exp $ */
#ifndef __DIVAS_USER_MODE_IDI_ENTITY__
diff --git a/drivers/isdn/hardware/eicon/os_4bri.c b/drivers/isdn/hardware/eicon/os_4bri.c
index 1891246807ed..87db5f4df27d 100644
--- a/drivers/isdn/hardware/eicon/os_4bri.c
+++ b/drivers/isdn/hardware/eicon/os_4bri.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* $Id: os_4bri.c,v 1.28.4.4 2005/02/11 19:40:25 armin Exp $ */
#include "platform.h"
diff --git a/drivers/isdn/hardware/eicon/os_4bri.h b/drivers/isdn/hardware/eicon/os_4bri.h
index 72253278d4f5..94b2709537d8 100644
--- a/drivers/isdn/hardware/eicon/os_4bri.h
+++ b/drivers/isdn/hardware/eicon/os_4bri.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: os_4bri.h,v 1.1.2.2 2001/02/08 12:25:44 armin Exp $ */
#ifndef __DIVA_OS_4_BRI_H__
diff --git a/drivers/isdn/hardware/eicon/os_bri.c b/drivers/isdn/hardware/eicon/os_bri.c
index 20f2653c58fa..de93090bcacb 100644
--- a/drivers/isdn/hardware/eicon/os_bri.c
+++ b/drivers/isdn/hardware/eicon/os_bri.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* $Id: os_bri.c,v 1.21 2004/03/21 17:26:01 armin Exp $ */
#include "platform.h"
diff --git a/drivers/isdn/hardware/eicon/os_bri.h b/drivers/isdn/hardware/eicon/os_bri.h
index 02e7456f8962..37c92cc53ded 100644
--- a/drivers/isdn/hardware/eicon/os_bri.h
+++ b/drivers/isdn/hardware/eicon/os_bri.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: os_bri.h,v 1.1.2.2 2001/02/08 12:25:44 armin Exp $ */
#ifndef __DIVA_OS_BRI_REV_1_H__
diff --git a/drivers/isdn/hardware/eicon/os_pri.c b/drivers/isdn/hardware/eicon/os_pri.c
index da4957abb422..b20f1fb89d14 100644
--- a/drivers/isdn/hardware/eicon/os_pri.c
+++ b/drivers/isdn/hardware/eicon/os_pri.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* $Id: os_pri.c,v 1.32 2004/03/21 17:26:01 armin Exp $ */
#include "platform.h"
diff --git a/drivers/isdn/hardware/eicon/os_pri.h b/drivers/isdn/hardware/eicon/os_pri.h
index 537c74d042e7..0e91855b171a 100644
--- a/drivers/isdn/hardware/eicon/os_pri.h
+++ b/drivers/isdn/hardware/eicon/os_pri.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: os_pri.h,v 1.1.2.2 2001/02/08 12:25:44 armin Exp $ */
#ifndef __DIVA_OS_PRI_REV_1_H__
diff --git a/drivers/isdn/hardware/eicon/um_idi.c b/drivers/isdn/hardware/eicon/um_idi.c
index e1519718ce67..db4dd4ff3642 100644
--- a/drivers/isdn/hardware/eicon/um_idi.c
+++ b/drivers/isdn/hardware/eicon/um_idi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* $Id: um_idi.c,v 1.14 2004/03/21 17:54:37 armin Exp $ */
#include "platform.h"
diff --git a/drivers/isdn/hardware/eicon/um_idi.h b/drivers/isdn/hardware/eicon/um_idi.h
index ffb88f7b42fc..9aedd9e351a3 100644
--- a/drivers/isdn/hardware/eicon/um_idi.h
+++ b/drivers/isdn/hardware/eicon/um_idi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: um_idi.h,v 1.6 2004/03/21 17:26:01 armin Exp $ */
#ifndef __DIVA_USER_MODE_IDI_CORE_H__
diff --git a/drivers/isdn/hardware/eicon/um_xdi.h b/drivers/isdn/hardware/eicon/um_xdi.h
index b48fc042a5bc..1f37aa4efd18 100644
--- a/drivers/isdn/hardware/eicon/um_xdi.h
+++ b/drivers/isdn/hardware/eicon/um_xdi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: um_xdi.h,v 1.1.2.2 2002/10/02 14:38:38 armin Exp $ */
#ifndef __DIVA_USER_MODE_XDI_H__
diff --git a/drivers/isdn/hardware/eicon/xdi_adapter.h b/drivers/isdn/hardware/eicon/xdi_adapter.h
index d303e65dbe6c..b036e217c659 100644
--- a/drivers/isdn/hardware/eicon/xdi_adapter.h
+++ b/drivers/isdn/hardware/eicon/xdi_adapter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: xdi_adapter.h,v 1.7 2004/03/21 17:26:01 armin Exp $ */
#ifndef __DIVA_OS_XDI_ADAPTER_H__
diff --git a/drivers/isdn/hardware/eicon/xdi_msg.h b/drivers/isdn/hardware/eicon/xdi_msg.h
index 2498c349a32e..0646079bf466 100644
--- a/drivers/isdn/hardware/eicon/xdi_msg.h
+++ b/drivers/isdn/hardware/eicon/xdi_msg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: xdi_msg.h,v 1.1.2.2 2001/02/16 08:40:36 armin Exp $ */
#ifndef __DIVA_XDI_UM_CFG_MESSAGE_H__
diff --git a/drivers/isdn/hardware/mISDN/Makefile b/drivers/isdn/hardware/mISDN/Makefile
index 2987d990993f..422f9fd8ab9a 100644
--- a/drivers/isdn/hardware/mISDN/Makefile
+++ b/drivers/isdn/hardware/mISDN/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the modular ISDN hardware drivers
#
diff --git a/drivers/isdn/hardware/mISDN/hfc_multi.h b/drivers/isdn/hardware/mISDN/hfc_multi.h
index c601f880141e..5acf826d913c 100644
--- a/drivers/isdn/hardware/mISDN/hfc_multi.h
+++ b/drivers/isdn/hardware/mISDN/hfc_multi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* see notice in hfc_multi.c
*/
diff --git a/drivers/isdn/hardware/mISDN/hfc_multi_8xx.h b/drivers/isdn/hardware/mISDN/hfc_multi_8xx.h
index 8a254747768e..b0d772340e16 100644
--- a/drivers/isdn/hardware/mISDN/hfc_multi_8xx.h
+++ b/drivers/isdn/hardware/mISDN/hfc_multi_8xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* For License see notice in hfc_multi.c
*
diff --git a/drivers/isdn/hardware/mISDN/hfcsusb.h b/drivers/isdn/hardware/mISDN/hfcsusb.h
index 5f8f1d9cac11..e4fa2a2824af 100644
--- a/drivers/isdn/hardware/mISDN/hfcsusb.h
+++ b/drivers/isdn/hardware/mISDN/hfcsusb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* hfcsusb.h, HFC-S USB mISDN driver
*/
diff --git a/drivers/isdn/hisax/Makefile b/drivers/isdn/hisax/Makefile
index 646368fe41c9..3eca9d23f1c2 100644
--- a/drivers/isdn/hisax/Makefile
+++ b/drivers/isdn/hisax/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the hisax ISDN device driver
# The target object and module list name.
diff --git a/drivers/isdn/hisax/hfc4s8s_l1.h b/drivers/isdn/hisax/hfc4s8s_l1.h
index 6a8f89113d2f..4665b9d5df16 100644
--- a/drivers/isdn/hisax/hfc4s8s_l1.h
+++ b/drivers/isdn/hisax/hfc4s8s_l1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/***************************************************************/
/* $Id: hfc4s8s_l1.h,v 1.1 2005/02/02 17:28:55 martinb1 Exp $ */
/* */
diff --git a/drivers/isdn/hisax/hfc_usb.h b/drivers/isdn/hisax/hfc_usb.h
index f987bf89da1a..9a212330e8a8 100644
--- a/drivers/isdn/hisax/hfc_usb.h
+++ b/drivers/isdn/hisax/hfc_usb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* hfc_usb.h
*
diff --git a/drivers/isdn/hisax/hisax_fcpcipnp.h b/drivers/isdn/hisax/hisax_fcpcipnp.h
index aedef97827fe..1f64e9937aa1 100644
--- a/drivers/isdn/hisax/hisax_fcpcipnp.h
+++ b/drivers/isdn/hisax/hisax_fcpcipnp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "hisax_if.h"
#include "hisax_isac.h"
#include <linux/pci.h>
diff --git a/drivers/isdn/hisax/hisax_isac.h b/drivers/isdn/hisax/hisax_isac.h
index 08890cf4d923..d7301da97991 100644
--- a/drivers/isdn/hisax/hisax_isac.h
+++ b/drivers/isdn/hisax/hisax_isac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __HISAX_ISAC_H__
#define __HISAX_ISAC_H__
diff --git a/drivers/isdn/i4l/Makefile b/drivers/isdn/i4l/Makefile
index cb9d3bb9fae0..be77500c9e86 100644
--- a/drivers/isdn/i4l/Makefile
+++ b/drivers/isdn/i4l/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the kernel ISDN subsystem and device drivers.
# Each configuration option enables a list of files.
diff --git a/drivers/isdn/i4l/isdn_ppp.c b/drivers/isdn/i4l/isdn_ppp.c
index 6c44609fd83a..cd2b3c69771a 100644
--- a/drivers/isdn/i4l/isdn_ppp.c
+++ b/drivers/isdn/i4l/isdn_ppp.c
@@ -825,7 +825,6 @@ isdn_ppp_write(int min, struct file *file, const char __user *buf, int count)
isdn_net_local *lp;
struct ippp_struct *is;
int proto;
- unsigned char protobuf[4];
is = file->private_data;
@@ -839,24 +838,28 @@ isdn_ppp_write(int min, struct file *file, const char __user *buf, int count)
if (!lp)
printk(KERN_DEBUG "isdn_ppp_write: lp == NULL\n");
else {
- /*
- * Don't reset huptimer for
- * LCP packets. (Echo requests).
- */
- if (copy_from_user(protobuf, buf, 4))
- return -EFAULT;
- proto = PPP_PROTOCOL(protobuf);
- if (proto != PPP_LCP)
- lp->huptimer = 0;
+ if (lp->isdn_device < 0 || lp->isdn_channel < 0) {
+ unsigned char protobuf[4];
+ /*
+ * Don't reset huptimer for
+ * LCP packets. (Echo requests).
+ */
+ if (copy_from_user(protobuf, buf, 4))
+ return -EFAULT;
+
+ proto = PPP_PROTOCOL(protobuf);
+ if (proto != PPP_LCP)
+ lp->huptimer = 0;
- if (lp->isdn_device < 0 || lp->isdn_channel < 0)
return 0;
+ }
if ((dev->drv[lp->isdn_device]->flags & DRV_FLAG_RUNNING) &&
lp->dialstate == 0 &&
(lp->flags & ISDN_NET_CONNECTED)) {
unsigned short hl;
struct sk_buff *skb;
+ unsigned char *cpy_buf;
/*
* we need to reserve enough space in front of
* sk_buff. old call to dev_alloc_skb only reserved
@@ -869,11 +872,21 @@ isdn_ppp_write(int min, struct file *file, const char __user *buf, int count)
return count;
}
skb_reserve(skb, hl);
- if (copy_from_user(skb_put(skb, count), buf, count))
+ cpy_buf = skb_put(skb, count);
+ if (copy_from_user(cpy_buf, buf, count))
{
kfree_skb(skb);
return -EFAULT;
}
+
+ /*
+ * Don't reset huptimer for
+ * LCP packets. (Echo requests).
+ */
+ proto = PPP_PROTOCOL(cpy_buf);
+ if (proto != PPP_LCP)
+ lp->huptimer = 0;
+
if (is->debug & 0x40) {
printk(KERN_DEBUG "ppp xmit: len %d\n", (int) skb->len);
isdn_ppp_frame_log("xmit", skb->data, skb->len, 32, is->unit, lp->ppp_slot);
diff --git a/drivers/isdn/mISDN/Makefile b/drivers/isdn/mISDN/Makefile
index 0a6bd2a9e730..f3b4b7fa85f8 100644
--- a/drivers/isdn/mISDN/Makefile
+++ b/drivers/isdn/mISDN/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the modular ISDN driver
#
diff --git a/drivers/isdn/mISDN/dsp_hwec.h b/drivers/isdn/mISDN/dsp_hwec.h
index bbca1eb5a888..c9cb0ea249da 100644
--- a/drivers/isdn/mISDN/dsp_hwec.h
+++ b/drivers/isdn/mISDN/dsp_hwec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* dsp_hwec.h
*/
diff --git a/drivers/isdn/mISDN/l1oip.h b/drivers/isdn/mISDN/l1oip.h
index 661c060ada49..7ea10db20e3a 100644
--- a/drivers/isdn/mISDN/l1oip.h
+++ b/drivers/isdn/mISDN/l1oip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* see notice in l1oip.c
*/
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
index 7d7b26552923..35980450db9b 100644
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# LED Core
obj-$(CONFIG_NEW_LEDS) += led-core.o
diff --git a/drivers/leds/leds-as3645a.c b/drivers/leds/leds-as3645a.c
index bbbbe0898233..9a257f969300 100644
--- a/drivers/leds/leds-as3645a.c
+++ b/drivers/leds/leds-as3645a.c
@@ -112,6 +112,10 @@
#define AS_PEAK_mA_TO_REG(a) \
((min_t(u32, AS_PEAK_mA_MAX, a) - 1250) / 250)
+/* LED numbers for Devicetree */
+#define AS_LED_FLASH 0
+#define AS_LED_INDICATOR 1
+
enum as_mode {
AS_MODE_EXT_TORCH = 0 << AS_CONTROL_MODE_SETTING_SHIFT,
AS_MODE_INDICATOR = 1 << AS_CONTROL_MODE_SETTING_SHIFT,
@@ -491,10 +495,29 @@ static int as3645a_parse_node(struct as3645a *flash,
struct device_node *node)
{
struct as3645a_config *cfg = &flash->cfg;
+ struct device_node *child;
const char *name;
int rval;
- flash->flash_node = of_get_child_by_name(node, "flash");
+ for_each_child_of_node(node, child) {
+ u32 id = 0;
+
+ of_property_read_u32(child, "reg", &id);
+
+ switch (id) {
+ case AS_LED_FLASH:
+ flash->flash_node = of_node_get(child);
+ break;
+ case AS_LED_INDICATOR:
+ flash->indicator_node = of_node_get(child);
+ break;
+ default:
+ dev_warn(&flash->client->dev,
+ "unknown LED %u encountered, ignoring\n", id);
+ break;
+ }
+ }
+
if (!flash->flash_node) {
dev_err(&flash->client->dev, "can't find flash node\n");
return -ENODEV;
@@ -534,11 +557,10 @@ static int as3645a_parse_node(struct as3645a *flash,
of_property_read_u32(flash->flash_node, "voltage-reference",
&cfg->voltage_reference);
- of_property_read_u32(flash->flash_node, "peak-current-limit",
+ of_property_read_u32(flash->flash_node, "ams,input-max-microamp",
&cfg->peak);
cfg->peak = AS_PEAK_mA_TO_REG(cfg->peak);
- flash->indicator_node = of_get_child_by_name(node, "indicator");
if (!flash->indicator_node) {
dev_warn(&flash->client->dev,
"can't find indicator node\n");
@@ -721,6 +743,7 @@ static int as3645a_remove(struct i2c_client *client)
as3645a_set_control(flash, AS_MODE_EXT_TORCH, false);
v4l2_flash_release(flash->vf);
+ v4l2_flash_release(flash->vfind);
led_classdev_flash_unregister(&flash->fled);
led_classdev_unregister(&flash->iled_cdev);
diff --git a/drivers/leds/leds-clevo-mail.c b/drivers/leds/leds-clevo-mail.c
index 0f9ed1ea0e89..492789f56896 100644
--- a/drivers/leds/leds-clevo-mail.c
+++ b/drivers/leds/leds-clevo-mail.c
@@ -40,7 +40,7 @@ static int __init clevo_mail_led_dmi_callback(const struct dmi_system_id *id)
* detected as working, but in reality it is not) as low as
* possible.
*/
-static struct dmi_system_id clevo_mail_led_dmi_table[] __initdata = {
+static const struct dmi_system_id clevo_mail_led_dmi_table[] __initconst = {
{
.callback = clevo_mail_led_dmi_callback,
.ident = "Clevo D410J",
diff --git a/drivers/leds/leds-ss4200.c b/drivers/leds/leds-ss4200.c
index 732eb86bc1a5..a9db8674cd02 100644
--- a/drivers/leds/leds-ss4200.c
+++ b/drivers/leds/leds-ss4200.c
@@ -91,7 +91,7 @@ MODULE_PARM_DESC(nodetect, "Skip DMI-based hardware detection");
* detected as working, but in reality it is not) as low as
* possible.
*/
-static struct dmi_system_id nas_led_whitelist[] __initdata = {
+static const struct dmi_system_id nas_led_whitelist[] __initconst = {
{
.callback = ss4200_led_dmi_callback,
.ident = "Intel SS4200-E",
diff --git a/drivers/leds/trigger/Makefile b/drivers/leds/trigger/Makefile
index a72c43cffebf..9f2e868811e2 100644
--- a/drivers/leds/trigger/Makefile
+++ b/drivers/leds/trigger/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
obj-$(CONFIG_LEDS_TRIGGER_ONESHOT) += ledtrig-oneshot.o
obj-$(CONFIG_LEDS_TRIGGER_DISK) += ledtrig-disk.o
diff --git a/drivers/lightnvm/Makefile b/drivers/lightnvm/Makefile
index 82d1a117fb27..2c3fd9d2c08c 100644
--- a/drivers/lightnvm/Makefile
+++ b/drivers/lightnvm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Open-Channel SSDs.
#
diff --git a/drivers/macintosh/Makefile b/drivers/macintosh/Makefile
index 516eb65bcacc..ee803638e595 100644
--- a/drivers/macintosh/Makefile
+++ b/drivers/macintosh/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Macintosh-specific device drivers.
#
diff --git a/drivers/macintosh/adb-iop.c b/drivers/macintosh/adb-iop.c
index f5f4da3d0b67..dbc4a3e63396 100644
--- a/drivers/macintosh/adb-iop.c
+++ b/drivers/macintosh/adb-iop.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* I/O Processor (IOP) ADB Driver
* Written and (C) 1999 by Joshua M. Thompson (funaho@jurai.org)
diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c
index 039dc8285fc5..289800b5235d 100644
--- a/drivers/macintosh/adb.c
+++ b/drivers/macintosh/adb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device driver for the Apple Desktop Bus
* and the /dev/adb device on macintoshes.
diff --git a/drivers/macintosh/adbhid.c b/drivers/macintosh/adbhid.c
index 09d72bb00d12..e091193104f7 100644
--- a/drivers/macintosh/adbhid.c
+++ b/drivers/macintosh/adbhid.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* drivers/macintosh/adbhid.c
*
diff --git a/drivers/macintosh/ams/ams.h b/drivers/macintosh/ams/ams.h
index 90f094d45450..fe8d596f9845 100644
--- a/drivers/macintosh/ams/ams.h
+++ b/drivers/macintosh/ams/ams.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/i2c.h>
#include <linux/input-polldev.h>
#include <linux/kthread.h>
diff --git a/drivers/macintosh/ans-lcd.c b/drivers/macintosh/ans-lcd.c
index 281fa9e6fc1f..1de81d922d8a 100644
--- a/drivers/macintosh/ans-lcd.c
+++ b/drivers/macintosh/ans-lcd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* /dev/lcd driver for Apple Network Servers.
*/
diff --git a/drivers/macintosh/ans-lcd.h b/drivers/macintosh/ans-lcd.h
index d795b9fd2db6..f0a6e4c68557 100644
--- a/drivers/macintosh/ans-lcd.h
+++ b/drivers/macintosh/ans-lcd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_ANS_LCD_H
#define _PPC_ANS_LCD_H
diff --git a/drivers/macintosh/macio-adb.c b/drivers/macintosh/macio-adb.c
index 87de8d9bcfad..9a6223add30e 100644
--- a/drivers/macintosh/macio-adb.c
+++ b/drivers/macintosh/macio-adb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Driver for the ADB controller in the Mac I/O (Hydra) chip.
*/
diff --git a/drivers/macintosh/macio_sysfs.c b/drivers/macintosh/macio_sysfs.c
index 281f5345661e..ca4fcffe454b 100644
--- a/drivers/macintosh/macio_sysfs.c
+++ b/drivers/macintosh/macio_sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/stat.h>
#include <asm/macio.h>
diff --git a/drivers/macintosh/via-cuda.c b/drivers/macintosh/via-cuda.c
index 147da4edd021..98dd702eb867 100644
--- a/drivers/macintosh/via-cuda.c
+++ b/drivers/macintosh/via-cuda.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device driver for the Cuda and Egret system controllers found on PowerMacs
* and 68k Macs.
diff --git a/drivers/macintosh/via-macii.c b/drivers/macintosh/via-macii.c
index 415c145c8299..4ba06a1695ea 100644
--- a/drivers/macintosh/via-macii.c
+++ b/drivers/macintosh/via-macii.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device driver for the via ADB on (many) Mac II-class machines
*
diff --git a/drivers/macintosh/via-pmu-backlight.c b/drivers/macintosh/via-pmu-backlight.c
index 6f68537c93ce..89ed51571b62 100644
--- a/drivers/macintosh/via-pmu-backlight.c
+++ b/drivers/macintosh/via-pmu-backlight.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Backlight code for via-pmu
*
diff --git a/drivers/macintosh/via-pmu-event.h b/drivers/macintosh/via-pmu-event.h
index 72c54de408e8..5e52109eb9a6 100644
--- a/drivers/macintosh/via-pmu-event.h
+++ b/drivers/macintosh/via-pmu-event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __VIA_PMU_EVENT_H
#define __VIA_PMU_EVENT_H
diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
index cce99f72e4ae..c4c2b3b85ebc 100644
--- a/drivers/macintosh/via-pmu.c
+++ b/drivers/macintosh/via-pmu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device driver for the via-pmu on Apple Powermacs.
*
diff --git a/drivers/macintosh/via-pmu68k.c b/drivers/macintosh/via-pmu68k.c
index a411c5cb77a1..25465fb91ec9 100644
--- a/drivers/macintosh/via-pmu68k.c
+++ b/drivers/macintosh/via-pmu68k.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device driver for the PMU on 68K-based Apple PowerBooks
*
diff --git a/drivers/mailbox/Makefile b/drivers/mailbox/Makefile
index d54e41206e17..4896f8dcae95 100644
--- a/drivers/mailbox/Makefile
+++ b/drivers/mailbox/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Generic MAILBOX API
obj-$(CONFIG_MAILBOX) += mailbox.o
diff --git a/drivers/mcb/Makefile b/drivers/mcb/Makefile
index bcc7745774ab..77073c5928f4 100644
--- a/drivers/mcb/Makefile
+++ b/drivers/mcb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MCB) += mcb.o
diff --git a/drivers/mcb/mcb-internal.h b/drivers/mcb/mcb-internal.h
index d6e6933b19f1..3602cb3b2021 100644
--- a/drivers/mcb/mcb-internal.h
+++ b/drivers/mcb/mcb-internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MCB_INTERNAL
#define __MCB_INTERNAL
diff --git a/drivers/md/Makefile b/drivers/md/Makefile
index 786ec9e86d65..e94b6f9be941 100644
--- a/drivers/md/Makefile
+++ b/drivers/md/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel software RAID and LVM drivers.
#
diff --git a/drivers/md/bcache/Makefile b/drivers/md/bcache/Makefile
index c488b846f831..d26b35195825 100644
--- a/drivers/md/bcache/Makefile
+++ b/drivers/md/bcache/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_BCACHE) += bcache.o
diff --git a/drivers/md/bcache/alloc.c b/drivers/md/bcache/alloc.c
index cacbe2dbd5c3..08035634795c 100644
--- a/drivers/md/bcache/alloc.c
+++ b/drivers/md/bcache/alloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Primary bucket allocation code
*
diff --git a/drivers/md/bcache/bcache.h b/drivers/md/bcache/bcache.h
index 2ed9bd231d84..abd31e847f96 100644
--- a/drivers/md/bcache/bcache.h
+++ b/drivers/md/bcache/bcache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_H
#define _BCACHE_H
diff --git a/drivers/md/bcache/bset.c b/drivers/md/bcache/bset.c
index 18526d44688d..e56d3ecdbfcb 100644
--- a/drivers/md/bcache/bset.c
+++ b/drivers/md/bcache/bset.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Code for working with individual keys, and sorted sets of keys with in a
* btree node
diff --git a/drivers/md/bcache/bset.h b/drivers/md/bcache/bset.h
index ae964624efb2..fa506c1aa524 100644
--- a/drivers/md/bcache/bset.h
+++ b/drivers/md/bcache/bset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_BSET_H
#define _BCACHE_BSET_H
diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
index 866dcf78ff8e..658c54b3b07a 100644
--- a/drivers/md/bcache/btree.c
+++ b/drivers/md/bcache/btree.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2010 Kent Overstreet <kent.overstreet@gmail.com>
*
diff --git a/drivers/md/bcache/btree.h b/drivers/md/bcache/btree.h
index 73da1f5626cb..42204d61bc95 100644
--- a/drivers/md/bcache/btree.h
+++ b/drivers/md/bcache/btree.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_BTREE_H
#define _BCACHE_BTREE_H
diff --git a/drivers/md/bcache/closure.c b/drivers/md/bcache/closure.c
index 7d5286b05036..1841d0359bac 100644
--- a/drivers/md/bcache/closure.c
+++ b/drivers/md/bcache/closure.c
@@ -64,7 +64,7 @@ EXPORT_SYMBOL(closure_put);
void __closure_wake_up(struct closure_waitlist *wait_list)
{
struct llist_node *list;
- struct closure *cl;
+ struct closure *cl, *t;
struct llist_node *reverse = NULL;
list = llist_del_all(&wait_list->list);
@@ -73,7 +73,7 @@ void __closure_wake_up(struct closure_waitlist *wait_list)
reverse = llist_reverse_order(list);
/* Then do the wakeups */
- llist_for_each_entry(cl, reverse, list) {
+ llist_for_each_entry_safe(cl, t, reverse, list) {
closure_set_waiting(cl, 0);
closure_sub(cl, CLOSURE_WAITING + 1);
}
diff --git a/drivers/md/bcache/closure.h b/drivers/md/bcache/closure.h
index 295b7e43f92c..965907ce1e20 100644
--- a/drivers/md/bcache/closure.h
+++ b/drivers/md/bcache/closure.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CLOSURE_H
#define _LINUX_CLOSURE_H
diff --git a/drivers/md/bcache/debug.c b/drivers/md/bcache/debug.c
index 61076eda2e6d..c7a02c4900da 100644
--- a/drivers/md/bcache/debug.c
+++ b/drivers/md/bcache/debug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Assorted bcache debug code
*
diff --git a/drivers/md/bcache/debug.h b/drivers/md/bcache/debug.h
index 1f63c195d247..acc48d3fa274 100644
--- a/drivers/md/bcache/debug.h
+++ b/drivers/md/bcache/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_DEBUG_H
#define _BCACHE_DEBUG_H
diff --git a/drivers/md/bcache/extents.c b/drivers/md/bcache/extents.c
index 243de0bf15cd..41c238fc3733 100644
--- a/drivers/md/bcache/extents.c
+++ b/drivers/md/bcache/extents.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2010 Kent Overstreet <kent.overstreet@gmail.com>
*
diff --git a/drivers/md/bcache/extents.h b/drivers/md/bcache/extents.h
index e2ed54054e7a..0cd3575afa1d 100644
--- a/drivers/md/bcache/extents.h
+++ b/drivers/md/bcache/extents.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_EXTENTS_H
#define _BCACHE_EXTENTS_H
diff --git a/drivers/md/bcache/io.c b/drivers/md/bcache/io.c
index 7e871bdc0097..fac97ec2d0e2 100644
--- a/drivers/md/bcache/io.c
+++ b/drivers/md/bcache/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Some low level IO code, and hacks for various block layer limitations
*
diff --git a/drivers/md/bcache/journal.c b/drivers/md/bcache/journal.c
index 7e1d1c3ba33a..02a98ddb592d 100644
--- a/drivers/md/bcache/journal.c
+++ b/drivers/md/bcache/journal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* bcache journalling code, for btree insertions
*
diff --git a/drivers/md/bcache/journal.h b/drivers/md/bcache/journal.h
index e3c39457afbb..b5788199188f 100644
--- a/drivers/md/bcache/journal.h
+++ b/drivers/md/bcache/journal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_JOURNAL_H
#define _BCACHE_JOURNAL_H
diff --git a/drivers/md/bcache/movinggc.c b/drivers/md/bcache/movinggc.c
index f633b30c962e..d50c1c97da68 100644
--- a/drivers/md/bcache/movinggc.c
+++ b/drivers/md/bcache/movinggc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Moving/copying garbage collector
*
diff --git a/drivers/md/bcache/request.c b/drivers/md/bcache/request.c
index 681b4f12b05a..3475d6628e21 100644
--- a/drivers/md/bcache/request.c
+++ b/drivers/md/bcache/request.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Main bcache entry point - handle a read or a write request and decide what to
* do with it; the make_request functions are called by the block layer.
diff --git a/drivers/md/bcache/request.h b/drivers/md/bcache/request.h
index 7689176951ce..dea0886b81c1 100644
--- a/drivers/md/bcache/request.h
+++ b/drivers/md/bcache/request.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_REQUEST_H_
#define _BCACHE_REQUEST_H_
diff --git a/drivers/md/bcache/stats.c b/drivers/md/bcache/stats.c
index 0ca072c20d0d..d0831d5bcc87 100644
--- a/drivers/md/bcache/stats.c
+++ b/drivers/md/bcache/stats.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* bcache stats code
*
diff --git a/drivers/md/bcache/stats.h b/drivers/md/bcache/stats.h
index adbff141c887..0b70f9de0c03 100644
--- a/drivers/md/bcache/stats.h
+++ b/drivers/md/bcache/stats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_STATS_H_
#define _BCACHE_STATS_H_
diff --git a/drivers/md/bcache/sysfs.c b/drivers/md/bcache/sysfs.c
index 104c57cd666c..234b2f5b286d 100644
--- a/drivers/md/bcache/sysfs.c
+++ b/drivers/md/bcache/sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* bcache sysfs interfaces
*
diff --git a/drivers/md/bcache/sysfs.h b/drivers/md/bcache/sysfs.h
index 0526fe92a683..b54fe9602529 100644
--- a/drivers/md/bcache/sysfs.h
+++ b/drivers/md/bcache/sysfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_SYSFS_H_
#define _BCACHE_SYSFS_H_
diff --git a/drivers/md/bcache/trace.c b/drivers/md/bcache/trace.c
index b7820b0d2621..a9a73f560c04 100644
--- a/drivers/md/bcache/trace.c
+++ b/drivers/md/bcache/trace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "bcache.h"
#include "btree.h"
diff --git a/drivers/md/bcache/util.h b/drivers/md/bcache/util.h
index cb8d2ccbb6c6..f54b58282f77 100644
--- a/drivers/md/bcache/util.h
+++ b/drivers/md/bcache/util.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_UTIL_H
#define _BCACHE_UTIL_H
diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c
index e663ca082183..70454f2ad2fa 100644
--- a/drivers/md/bcache/writeback.c
+++ b/drivers/md/bcache/writeback.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* background writeback - scan btree for dirty data and write it to the backing
* device
diff --git a/drivers/md/bcache/writeback.h b/drivers/md/bcache/writeback.h
index e35421d20d2e..151544740148 100644
--- a/drivers/md/bcache/writeback.h
+++ b/drivers/md/bcache/writeback.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHE_WRITEBACK_H
#define _BCACHE_WRITEBACK_H
diff --git a/drivers/md/bitmap.h b/drivers/md/bitmap.h
index d15721ac07a6..5df35ca90f58 100644
--- a/drivers/md/bitmap.h
+++ b/drivers/md/bitmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* bitmap.h: Copyright (C) Peter T. Breuer (ptb@ot.uc3m.es) 2003
*
diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
index 9601225e0ae9..d216a8f7bc22 100644
--- a/drivers/md/dm-bufio.c
+++ b/drivers/md/dm-bufio.c
@@ -64,6 +64,12 @@
#define DM_BUFIO_BLOCK_SIZE_GFP_LIMIT (PAGE_SIZE << (MAX_ORDER - 1))
/*
+ * Align buffer writes to this boundary.
+ * Tests show that SSDs have the highest IOPS when using 4k writes.
+ */
+#define DM_BUFIO_WRITE_ALIGN 4096
+
+/*
* dm_buffer->list_mode
*/
#define LIST_CLEAN 0
@@ -149,6 +155,10 @@ struct dm_buffer {
blk_status_t write_error;
unsigned long state;
unsigned long last_accessed;
+ unsigned dirty_start;
+ unsigned dirty_end;
+ unsigned write_start;
+ unsigned write_end;
struct dm_bufio_client *c;
struct list_head write_list;
struct bio bio;
@@ -560,7 +570,7 @@ static void dmio_complete(unsigned long error, void *context)
}
static void use_dmio(struct dm_buffer *b, int rw, sector_t sector,
- unsigned n_sectors, bio_end_io_t *end_io)
+ unsigned n_sectors, unsigned offset, bio_end_io_t *end_io)
{
int r;
struct dm_io_request io_req = {
@@ -578,10 +588,10 @@ static void use_dmio(struct dm_buffer *b, int rw, sector_t sector,
if (b->data_mode != DATA_MODE_VMALLOC) {
io_req.mem.type = DM_IO_KMEM;
- io_req.mem.ptr.addr = b->data;
+ io_req.mem.ptr.addr = (char *)b->data + offset;
} else {
io_req.mem.type = DM_IO_VMA;
- io_req.mem.ptr.vma = b->data;
+ io_req.mem.ptr.vma = (char *)b->data + offset;
}
b->bio.bi_end_io = end_io;
@@ -609,10 +619,10 @@ static void inline_endio(struct bio *bio)
}
static void use_inline_bio(struct dm_buffer *b, int rw, sector_t sector,
- unsigned n_sectors, bio_end_io_t *end_io)
+ unsigned n_sectors, unsigned offset, bio_end_io_t *end_io)
{
char *ptr;
- int len;
+ unsigned len;
bio_init(&b->bio, b->bio_vec, DM_BUFIO_INLINE_VECS);
b->bio.bi_iter.bi_sector = sector;
@@ -625,29 +635,20 @@ static void use_inline_bio(struct dm_buffer *b, int rw, sector_t sector,
b->bio.bi_private = end_io;
bio_set_op_attrs(&b->bio, rw, 0);
- /*
- * We assume that if len >= PAGE_SIZE ptr is page-aligned.
- * If len < PAGE_SIZE the buffer doesn't cross page boundary.
- */
- ptr = b->data;
+ ptr = (char *)b->data + offset;
len = n_sectors << SECTOR_SHIFT;
- if (len >= PAGE_SIZE)
- BUG_ON((unsigned long)ptr & (PAGE_SIZE - 1));
- else
- BUG_ON((unsigned long)ptr & (len - 1));
-
do {
- if (!bio_add_page(&b->bio, virt_to_page(ptr),
- len < PAGE_SIZE ? len : PAGE_SIZE,
+ unsigned this_step = min((unsigned)(PAGE_SIZE - offset_in_page(ptr)), len);
+ if (!bio_add_page(&b->bio, virt_to_page(ptr), this_step,
offset_in_page(ptr))) {
BUG_ON(b->c->block_size <= PAGE_SIZE);
- use_dmio(b, rw, sector, n_sectors, end_io);
+ use_dmio(b, rw, sector, n_sectors, offset, end_io);
return;
}
- len -= PAGE_SIZE;
- ptr += PAGE_SIZE;
+ len -= this_step;
+ ptr += this_step;
} while (len > 0);
submit_bio(&b->bio);
@@ -657,18 +658,33 @@ static void submit_io(struct dm_buffer *b, int rw, bio_end_io_t *end_io)
{
unsigned n_sectors;
sector_t sector;
-
- if (rw == WRITE && b->c->write_callback)
- b->c->write_callback(b);
+ unsigned offset, end;
sector = (b->block << b->c->sectors_per_block_bits) + b->c->start;
- n_sectors = 1 << b->c->sectors_per_block_bits;
+
+ if (rw != WRITE) {
+ n_sectors = 1 << b->c->sectors_per_block_bits;
+ offset = 0;
+ } else {
+ if (b->c->write_callback)
+ b->c->write_callback(b);
+ offset = b->write_start;
+ end = b->write_end;
+ offset &= -DM_BUFIO_WRITE_ALIGN;
+ end += DM_BUFIO_WRITE_ALIGN - 1;
+ end &= -DM_BUFIO_WRITE_ALIGN;
+ if (unlikely(end > b->c->block_size))
+ end = b->c->block_size;
+
+ sector += offset >> SECTOR_SHIFT;
+ n_sectors = (end - offset) >> SECTOR_SHIFT;
+ }
if (n_sectors <= ((DM_BUFIO_INLINE_VECS * PAGE_SIZE) >> SECTOR_SHIFT) &&
b->data_mode != DATA_MODE_VMALLOC)
- use_inline_bio(b, rw, sector, n_sectors, end_io);
+ use_inline_bio(b, rw, sector, n_sectors, offset, end_io);
else
- use_dmio(b, rw, sector, n_sectors, end_io);
+ use_dmio(b, rw, sector, n_sectors, offset, end_io);
}
/*----------------------------------------------------------------
@@ -720,6 +736,9 @@ static void __write_dirty_buffer(struct dm_buffer *b,
clear_bit(B_DIRTY, &b->state);
wait_on_bit_lock_io(&b->state, B_WRITING, TASK_UNINTERRUPTIBLE);
+ b->write_start = b->dirty_start;
+ b->write_end = b->dirty_end;
+
if (!write_list)
submit_io(b, WRITE, write_endio);
else
@@ -1221,19 +1240,37 @@ void dm_bufio_release(struct dm_buffer *b)
}
EXPORT_SYMBOL_GPL(dm_bufio_release);
-void dm_bufio_mark_buffer_dirty(struct dm_buffer *b)
+void dm_bufio_mark_partial_buffer_dirty(struct dm_buffer *b,
+ unsigned start, unsigned end)
{
struct dm_bufio_client *c = b->c;
+ BUG_ON(start >= end);
+ BUG_ON(end > b->c->block_size);
+
dm_bufio_lock(c);
BUG_ON(test_bit(B_READING, &b->state));
- if (!test_and_set_bit(B_DIRTY, &b->state))
+ if (!test_and_set_bit(B_DIRTY, &b->state)) {
+ b->dirty_start = start;
+ b->dirty_end = end;
__relink_lru(b, LIST_DIRTY);
+ } else {
+ if (start < b->dirty_start)
+ b->dirty_start = start;
+ if (end > b->dirty_end)
+ b->dirty_end = end;
+ }
dm_bufio_unlock(c);
}
+EXPORT_SYMBOL_GPL(dm_bufio_mark_partial_buffer_dirty);
+
+void dm_bufio_mark_buffer_dirty(struct dm_buffer *b)
+{
+ dm_bufio_mark_partial_buffer_dirty(b, 0, b->c->block_size);
+}
EXPORT_SYMBOL_GPL(dm_bufio_mark_buffer_dirty);
void dm_bufio_write_dirty_buffers_async(struct dm_bufio_client *c)
@@ -1398,6 +1435,8 @@ retry:
wait_on_bit_io(&b->state, B_WRITING,
TASK_UNINTERRUPTIBLE);
set_bit(B_DIRTY, &b->state);
+ b->dirty_start = 0;
+ b->dirty_end = c->block_size;
__unlink_buffer(b);
__link_buffer(b, new_block, LIST_DIRTY);
} else {
diff --git a/drivers/md/dm-bufio.h b/drivers/md/dm-bufio.h
index b6d8f53ec15b..be732d3f8611 100644
--- a/drivers/md/dm-bufio.h
+++ b/drivers/md/dm-bufio.h
@@ -94,6 +94,15 @@ void dm_bufio_release(struct dm_buffer *b);
void dm_bufio_mark_buffer_dirty(struct dm_buffer *b);
/*
+ * Mark a part of the buffer dirty.
+ *
+ * The specified part of the buffer is scheduled to be written. dm-bufio may
+ * write the specified part of the buffer or it may write a larger superset.
+ */
+void dm_bufio_mark_partial_buffer_dirty(struct dm_buffer *b,
+ unsigned start, unsigned end);
+
+/*
* Initiate writing of dirty buffers, without waiting for completion.
*/
void dm_bufio_write_dirty_buffers_async(struct dm_bufio_client *c);
diff --git a/drivers/md/dm-builtin.c b/drivers/md/dm-builtin.c
index f092771878c2..8eb52e425141 100644
--- a/drivers/md/dm-builtin.c
+++ b/drivers/md/dm-builtin.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "dm-core.h"
/*
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c
index dcac25c2be7a..8785134c9f1f 100644
--- a/drivers/md/dm-cache-target.c
+++ b/drivers/md/dm-cache-target.c
@@ -2306,7 +2306,7 @@ static void init_features(struct cache_features *cf)
static int parse_features(struct cache_args *ca, struct dm_arg_set *as,
char **error)
{
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, 2, "Invalid number of cache feature arguments"},
};
@@ -2348,7 +2348,7 @@ static int parse_features(struct cache_args *ca, struct dm_arg_set *as,
static int parse_policy(struct cache_args *ca, struct dm_arg_set *as,
char **error)
{
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, 1024, "Invalid number of policy arguments"},
};
diff --git a/drivers/md/dm-core.h b/drivers/md/dm-core.h
index 24eddbdf2ab4..203144762f36 100644
--- a/drivers/md/dm-core.h
+++ b/drivers/md/dm-core.h
@@ -149,5 +149,6 @@ static inline bool dm_message_test_buffer_overflow(char *result, unsigned maxlen
extern atomic_t dm_global_event_nr;
extern wait_queue_head_t dm_global_eventq;
+void dm_issue_global_event(void);
#endif
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index 54aef8ed97db..96ab46512e1f 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -2466,6 +2466,7 @@ static int crypt_ctr_cipher_old(struct dm_target *ti, char *cipher_in, char *key
kfree(cipher_api);
return ret;
}
+ kfree(cipher_api);
return 0;
bad_mem:
@@ -2529,7 +2530,7 @@ static int crypt_ctr_optional(struct dm_target *ti, unsigned int argc, char **ar
{
struct crypt_config *cc = ti->private;
struct dm_arg_set as;
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, 6, "Invalid number of feature args"},
};
unsigned int opt_params, val;
@@ -2584,6 +2585,10 @@ static int crypt_ctr_optional(struct dm_target *ti, unsigned int argc, char **ar
ti->error = "Invalid feature value for sector_size";
return -EINVAL;
}
+ if (ti->len & ((cc->sector_size >> SECTOR_SHIFT) - 1)) {
+ ti->error = "Device size is not multiple of sector_size feature";
+ return -EINVAL;
+ }
cc->sector_shift = __ffs(cc->sector_size) - SECTOR_SHIFT;
} else if (!strcasecmp(opt_string, "iv_large_sectors"))
set_bit(CRYPT_IV_LARGE_SECTORS, &cc->cipher_flags);
diff --git a/drivers/md/dm-flakey.c b/drivers/md/dm-flakey.c
index 7146c2d9762d..b82cb1ab1eaa 100644
--- a/drivers/md/dm-flakey.c
+++ b/drivers/md/dm-flakey.c
@@ -51,7 +51,7 @@ static int parse_features(struct dm_arg_set *as, struct flakey_c *fc,
unsigned argc;
const char *arg_name;
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, 6, "Invalid number of feature args"},
{1, UINT_MAX, "Invalid corrupt bio byte"},
{0, 255, "Invalid corrupt value to write into bio byte (0-255)"},
@@ -178,7 +178,7 @@ static int parse_features(struct dm_arg_set *as, struct flakey_c *fc,
*/
static int flakey_ctr(struct dm_target *ti, unsigned int argc, char **argv)
{
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, UINT_MAX, "Invalid up interval"},
{0, UINT_MAX, "Invalid down interval"},
};
diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c
index 27c0f223f8ea..096fe9b66c50 100644
--- a/drivers/md/dm-integrity.c
+++ b/drivers/md/dm-integrity.c
@@ -225,6 +225,8 @@ struct dm_integrity_c {
struct alg_spec internal_hash_alg;
struct alg_spec journal_crypt_alg;
struct alg_spec journal_mac_alg;
+
+ atomic64_t number_of_mismatches;
};
struct dm_integrity_range {
@@ -298,7 +300,7 @@ static void __DEBUG_bytes(__u8 *bytes, size_t len, const char *msg, ...)
/*
* DM Integrity profile, protection is performed layer above (dm-crypt)
*/
-static struct blk_integrity_profile dm_integrity_profile = {
+static const struct blk_integrity_profile dm_integrity_profile = {
.name = "DM-DIF-EXT-TAG",
.generate_fn = NULL,
.verify_fn = NULL,
@@ -310,6 +312,8 @@ static void dm_integrity_dtr(struct dm_target *ti);
static void dm_integrity_io_error(struct dm_integrity_c *ic, const char *msg, int err)
{
+ if (err == -EILSEQ)
+ atomic64_inc(&ic->number_of_mismatches);
if (!cmpxchg(&ic->failed, 0, err))
DMERR("Error on %s: %d", msg, err);
}
@@ -770,13 +774,13 @@ static void write_journal(struct dm_integrity_c *ic, unsigned commit_start, unsi
unsigned i;
io_comp.ic = ic;
- io_comp.comp = COMPLETION_INITIALIZER_ONSTACK(io_comp.comp);
+ init_completion(&io_comp.comp);
if (commit_start + commit_sections <= ic->journal_sections) {
io_comp.in_flight = (atomic_t)ATOMIC_INIT(1);
if (ic->journal_io) {
crypt_comp_1.ic = ic;
- crypt_comp_1.comp = COMPLETION_INITIALIZER_ONSTACK(crypt_comp_1.comp);
+ init_completion(&crypt_comp_1.comp);
crypt_comp_1.in_flight = (atomic_t)ATOMIC_INIT(0);
encrypt_journal(ic, true, commit_start, commit_sections, &crypt_comp_1);
wait_for_completion_io(&crypt_comp_1.comp);
@@ -792,18 +796,18 @@ static void write_journal(struct dm_integrity_c *ic, unsigned commit_start, unsi
to_end = ic->journal_sections - commit_start;
if (ic->journal_io) {
crypt_comp_1.ic = ic;
- crypt_comp_1.comp = COMPLETION_INITIALIZER_ONSTACK(crypt_comp_1.comp);
+ init_completion(&crypt_comp_1.comp);
crypt_comp_1.in_flight = (atomic_t)ATOMIC_INIT(0);
encrypt_journal(ic, true, commit_start, to_end, &crypt_comp_1);
if (try_wait_for_completion(&crypt_comp_1.comp)) {
rw_journal(ic, REQ_OP_WRITE, REQ_FUA, commit_start, to_end, &io_comp);
- crypt_comp_1.comp = COMPLETION_INITIALIZER_ONSTACK(crypt_comp_1.comp);
+ reinit_completion(&crypt_comp_1.comp);
crypt_comp_1.in_flight = (atomic_t)ATOMIC_INIT(0);
encrypt_journal(ic, true, 0, commit_sections - to_end, &crypt_comp_1);
wait_for_completion_io(&crypt_comp_1.comp);
} else {
crypt_comp_2.ic = ic;
- crypt_comp_2.comp = COMPLETION_INITIALIZER_ONSTACK(crypt_comp_2.comp);
+ init_completion(&crypt_comp_2.comp);
crypt_comp_2.in_flight = (atomic_t)ATOMIC_INIT(0);
encrypt_journal(ic, true, 0, commit_sections - to_end, &crypt_comp_2);
wait_for_completion_io(&crypt_comp_1.comp);
@@ -1041,7 +1045,7 @@ static int dm_integrity_rw_tag(struct dm_integrity_c *ic, unsigned char *tag, se
memcpy(tag, dp, to_copy);
} else if (op == TAG_WRITE) {
memcpy(dp, tag, to_copy);
- dm_bufio_mark_buffer_dirty(b);
+ dm_bufio_mark_partial_buffer_dirty(b, *metadata_offset, *metadata_offset + to_copy);
} else {
/* e.g.: op == TAG_CMP */
if (unlikely(memcmp(dp, tag, to_copy))) {
@@ -1275,6 +1279,7 @@ again:
DMERR("Checksum failed at sector 0x%llx",
(unsigned long long)(sector - ((r + ic->tag_size - 1) / ic->tag_size)));
r = -EILSEQ;
+ atomic64_inc(&ic->number_of_mismatches);
}
if (likely(checksums != checksums_onstack))
kfree(checksums);
@@ -1676,7 +1681,7 @@ sleep:
dio->in_flight = (atomic_t)ATOMIC_INIT(2);
if (need_sync_io) {
- read_comp = COMPLETION_INITIALIZER_ONSTACK(read_comp);
+ init_completion(&read_comp);
dio->completion = &read_comp;
} else
dio->completion = NULL;
@@ -1700,7 +1705,11 @@ sleep:
if (need_sync_io) {
wait_for_completion_io(&read_comp);
- integrity_metadata(&dio->work);
+ if (likely(!bio->bi_status))
+ integrity_metadata(&dio->work);
+ else
+ dec_in_flight(dio);
+
} else {
INIT_WORK(&dio->work, integrity_metadata);
queue_work(ic->metadata_wq, &dio->work);
@@ -1834,7 +1843,7 @@ static void do_journal_write(struct dm_integrity_c *ic, unsigned write_start,
comp.ic = ic;
comp.in_flight = (atomic_t)ATOMIC_INIT(1);
- comp.comp = COMPLETION_INITIALIZER_ONSTACK(comp.comp);
+ init_completion(&comp.comp);
i = write_start;
for (n = 0; n < write_sections; n++, i++, wraparound_section(ic, &i)) {
@@ -2061,7 +2070,7 @@ static void replay_journal(struct dm_integrity_c *ic)
if (ic->journal_io) {
struct journal_completion crypt_comp;
crypt_comp.ic = ic;
- crypt_comp.comp = COMPLETION_INITIALIZER_ONSTACK(crypt_comp.comp);
+ init_completion(&crypt_comp.comp);
crypt_comp.in_flight = (atomic_t)ATOMIC_INIT(0);
encrypt_journal(ic, false, 0, ic->journal_sections, &crypt_comp);
wait_for_completion(&crypt_comp.comp);
@@ -2233,7 +2242,7 @@ static void dm_integrity_status(struct dm_target *ti, status_type_t type,
switch (type) {
case STATUSTYPE_INFO:
- result[0] = '\0';
+ DMEMIT("%llu", (unsigned long long)atomic64_read(&ic->number_of_mismatches));
break;
case STATUSTYPE_TABLE: {
@@ -2634,7 +2643,7 @@ static int create_journal(struct dm_integrity_c *ic, char **error)
memset(iv, 0x00, ivsize);
skcipher_request_set_crypt(req, sg, sg, PAGE_SIZE * ic->journal_pages + sizeof ic->commit_ids, iv);
- comp.comp = COMPLETION_INITIALIZER_ONSTACK(comp.comp);
+ init_completion(&comp.comp);
comp.in_flight = (atomic_t)ATOMIC_INIT(1);
if (do_crypt(true, req, &comp))
wait_for_completion(&comp.comp);
@@ -2691,7 +2700,7 @@ static int create_journal(struct dm_integrity_c *ic, char **error)
sg_init_one(&sg, crypt_data, crypt_len);
skcipher_request_set_crypt(req, &sg, &sg, crypt_len, iv);
- comp.comp = COMPLETION_INITIALIZER_ONSTACK(comp.comp);
+ init_completion(&comp.comp);
comp.in_flight = (atomic_t)ATOMIC_INIT(1);
if (do_crypt(true, req, &comp))
wait_for_completion(&comp.comp);
@@ -2778,7 +2787,7 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
int r;
unsigned extra_args;
struct dm_arg_set as;
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, 9, "Invalid number of feature args"},
};
unsigned journal_sectors, interleave_sectors, buffer_sectors, journal_watermark, sync_msec;
@@ -2806,6 +2815,7 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
bio_list_init(&ic->flush_bio_list);
init_waitqueue_head(&ic->copy_to_journal_wait);
init_completion(&ic->crypto_backoff);
+ atomic64_set(&ic->number_of_mismatches, 0);
r = dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), &ic->dev);
if (r) {
@@ -3202,7 +3212,7 @@ static void dm_integrity_dtr(struct dm_target *ti)
static struct target_type integrity_target = {
.name = "integrity",
- .version = {1, 0, 0},
+ .version = {1, 1, 0},
.module = THIS_MODULE,
.features = DM_TARGET_SINGLETON | DM_TARGET_INTEGRITY,
.ctr = dm_integrity_ctr,
diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
index e06f0ef7d2ec..e52676fa9832 100644
--- a/drivers/md/dm-ioctl.c
+++ b/drivers/md/dm-ioctl.c
@@ -477,9 +477,13 @@ static int remove_all(struct file *filp, struct dm_ioctl *param, size_t param_si
* Round up the ptr to an 8-byte boundary.
*/
#define ALIGN_MASK 7
+static inline size_t align_val(size_t val)
+{
+ return (val + ALIGN_MASK) & ~ALIGN_MASK;
+}
static inline void *align_ptr(void *ptr)
{
- return (void *) (((size_t) (ptr + ALIGN_MASK)) & ~ALIGN_MASK);
+ return (void *)align_val((size_t)ptr);
}
/*
@@ -505,7 +509,7 @@ static int list_devices(struct file *filp, struct dm_ioctl *param, size_t param_
struct hash_cell *hc;
size_t len, needed = 0;
struct gendisk *disk;
- struct dm_name_list *nl, *old_nl = NULL;
+ struct dm_name_list *orig_nl, *nl, *old_nl = NULL;
uint32_t *event_nr;
down_write(&_hash_lock);
@@ -516,17 +520,15 @@ static int list_devices(struct file *filp, struct dm_ioctl *param, size_t param_
*/
for (i = 0; i < NUM_BUCKETS; i++) {
list_for_each_entry (hc, _name_buckets + i, name_list) {
- needed += sizeof(struct dm_name_list);
- needed += strlen(hc->name) + 1;
- needed += ALIGN_MASK;
- needed += (sizeof(uint32_t) + ALIGN_MASK) & ~ALIGN_MASK;
+ needed += align_val(offsetof(struct dm_name_list, name) + strlen(hc->name) + 1);
+ needed += align_val(sizeof(uint32_t));
}
}
/*
* Grab our output buffer.
*/
- nl = get_result_buffer(param, param_size, &len);
+ nl = orig_nl = get_result_buffer(param, param_size, &len);
if (len < needed) {
param->flags |= DM_BUFFER_FULL_FLAG;
goto out;
@@ -549,11 +551,16 @@ static int list_devices(struct file *filp, struct dm_ioctl *param, size_t param_
strcpy(nl->name, hc->name);
old_nl = nl;
- event_nr = align_ptr(((void *) (nl + 1)) + strlen(hc->name) + 1);
+ event_nr = align_ptr(nl->name + strlen(hc->name) + 1);
*event_nr = dm_get_event_nr(hc->md);
nl = align_ptr(event_nr + 1);
}
}
+ /*
+ * If mismatch happens, security may be compromised due to buffer
+ * overflow, so it's better to crash.
+ */
+ BUG_ON((char *)nl - (char *)orig_nl != needed);
out:
up_write(&_hash_lock);
@@ -1621,7 +1628,8 @@ static int target_message(struct file *filp, struct dm_ioctl *param, size_t para
* which has a variable size, is not used by the function processing
* the ioctl.
*/
-#define IOCTL_FLAGS_NO_PARAMS 1
+#define IOCTL_FLAGS_NO_PARAMS 1
+#define IOCTL_FLAGS_ISSUE_GLOBAL_EVENT 2
/*-----------------------------------------------------------------
* Implementation of open/close/ioctl on the special char
@@ -1629,18 +1637,18 @@ static int target_message(struct file *filp, struct dm_ioctl *param, size_t para
*---------------------------------------------------------------*/
static ioctl_fn lookup_ioctl(unsigned int cmd, int *ioctl_flags)
{
- static struct {
+ static const struct {
int cmd;
int flags;
ioctl_fn fn;
} _ioctls[] = {
{DM_VERSION_CMD, 0, NULL}, /* version is dealt with elsewhere */
- {DM_REMOVE_ALL_CMD, IOCTL_FLAGS_NO_PARAMS, remove_all},
+ {DM_REMOVE_ALL_CMD, IOCTL_FLAGS_NO_PARAMS | IOCTL_FLAGS_ISSUE_GLOBAL_EVENT, remove_all},
{DM_LIST_DEVICES_CMD, 0, list_devices},
- {DM_DEV_CREATE_CMD, IOCTL_FLAGS_NO_PARAMS, dev_create},
- {DM_DEV_REMOVE_CMD, IOCTL_FLAGS_NO_PARAMS, dev_remove},
- {DM_DEV_RENAME_CMD, 0, dev_rename},
+ {DM_DEV_CREATE_CMD, IOCTL_FLAGS_NO_PARAMS | IOCTL_FLAGS_ISSUE_GLOBAL_EVENT, dev_create},
+ {DM_DEV_REMOVE_CMD, IOCTL_FLAGS_NO_PARAMS | IOCTL_FLAGS_ISSUE_GLOBAL_EVENT, dev_remove},
+ {DM_DEV_RENAME_CMD, IOCTL_FLAGS_ISSUE_GLOBAL_EVENT, dev_rename},
{DM_DEV_SUSPEND_CMD, IOCTL_FLAGS_NO_PARAMS, dev_suspend},
{DM_DEV_STATUS_CMD, IOCTL_FLAGS_NO_PARAMS, dev_status},
{DM_DEV_WAIT_CMD, 0, dev_wait},
@@ -1869,6 +1877,9 @@ static int ctl_ioctl(struct file *file, uint command, struct dm_ioctl __user *us
unlikely(ioctl_flags & IOCTL_FLAGS_NO_PARAMS))
DMERR("ioctl %d tried to output some data but has IOCTL_FLAGS_NO_PARAMS set", cmd);
+ if (!r && ioctl_flags & IOCTL_FLAGS_ISSUE_GLOBAL_EVENT)
+ dm_issue_global_event();
+
/*
* Copy the results back to userland.
*/
diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c
index 405eca206d67..d5f8eff7c11d 100644
--- a/drivers/md/dm-linear.c
+++ b/drivers/md/dm-linear.c
@@ -184,20 +184,6 @@ static size_t linear_dax_copy_from_iter(struct dm_target *ti, pgoff_t pgoff,
return dax_copy_from_iter(dax_dev, pgoff, addr, bytes, i);
}
-static void linear_dax_flush(struct dm_target *ti, pgoff_t pgoff, void *addr,
- size_t size)
-{
- struct linear_c *lc = ti->private;
- struct block_device *bdev = lc->dev->bdev;
- struct dax_device *dax_dev = lc->dev->dax_dev;
- sector_t dev_sector, sector = pgoff * PAGE_SECTORS;
-
- dev_sector = linear_map_sector(ti, sector);
- if (bdev_dax_pgoff(bdev, dev_sector, ALIGN(size, PAGE_SIZE), &pgoff))
- return;
- dax_flush(dax_dev, pgoff, addr, size);
-}
-
static struct target_type linear_target = {
.name = "linear",
.version = {1, 4, 0},
@@ -212,7 +198,6 @@ static struct target_type linear_target = {
.iterate_devices = linear_iterate_devices,
.direct_access = linear_dax_direct_access,
.dax_copy_from_iter = linear_dax_copy_from_iter,
- .dax_flush = linear_dax_flush,
};
int __init dm_linear_init(void)
diff --git a/drivers/md/dm-log-writes.c b/drivers/md/dm-log-writes.c
index 534a254eb977..8b80a9ce9ea9 100644
--- a/drivers/md/dm-log-writes.c
+++ b/drivers/md/dm-log-writes.c
@@ -100,6 +100,7 @@ struct log_writes_c {
struct dm_dev *logdev;
u64 logged_entries;
u32 sectorsize;
+ u32 sectorshift;
atomic_t io_blocks;
atomic_t pending_blocks;
sector_t next_sector;
@@ -128,6 +129,18 @@ struct per_bio_data {
struct pending_block *block;
};
+static inline sector_t bio_to_dev_sectors(struct log_writes_c *lc,
+ sector_t sectors)
+{
+ return sectors >> (lc->sectorshift - SECTOR_SHIFT);
+}
+
+static inline sector_t dev_to_bio_sectors(struct log_writes_c *lc,
+ sector_t sectors)
+{
+ return sectors << (lc->sectorshift - SECTOR_SHIFT);
+}
+
static void put_pending_block(struct log_writes_c *lc)
{
if (atomic_dec_and_test(&lc->pending_blocks)) {
@@ -253,7 +266,7 @@ static int log_one_block(struct log_writes_c *lc,
if (!block->vec_cnt)
goto out;
- sector++;
+ sector += dev_to_bio_sectors(lc, 1);
atomic_inc(&lc->io_blocks);
bio = bio_alloc(GFP_KERNEL, min(block->vec_cnt, BIO_MAX_PAGES));
@@ -354,10 +367,9 @@ static int log_writes_kthread(void *arg)
goto next;
sector = lc->next_sector;
- if (block->flags & LOG_DISCARD_FLAG)
- lc->next_sector++;
- else
- lc->next_sector += block->nr_sectors + 1;
+ if (!(block->flags & LOG_DISCARD_FLAG))
+ lc->next_sector += dev_to_bio_sectors(lc, block->nr_sectors);
+ lc->next_sector += dev_to_bio_sectors(lc, 1);
/*
* Apparently the size of the device may not be known
@@ -399,7 +411,7 @@ next:
if (!try_to_freeze()) {
set_current_state(TASK_INTERRUPTIBLE);
if (!kthread_should_stop() &&
- !atomic_read(&lc->pending_blocks))
+ list_empty(&lc->logging_blocks))
schedule();
__set_current_state(TASK_RUNNING);
}
@@ -435,7 +447,6 @@ static int log_writes_ctr(struct dm_target *ti, unsigned int argc, char **argv)
INIT_LIST_HEAD(&lc->unflushed_blocks);
INIT_LIST_HEAD(&lc->logging_blocks);
init_waitqueue_head(&lc->wait);
- lc->sectorsize = 1 << SECTOR_SHIFT;
atomic_set(&lc->io_blocks, 0);
atomic_set(&lc->pending_blocks, 0);
@@ -455,6 +466,8 @@ static int log_writes_ctr(struct dm_target *ti, unsigned int argc, char **argv)
goto bad;
}
+ lc->sectorsize = bdev_logical_block_size(lc->dev->bdev);
+ lc->sectorshift = ilog2(lc->sectorsize);
lc->log_kthread = kthread_run(log_writes_kthread, lc, "log-write");
if (IS_ERR(lc->log_kthread)) {
ret = PTR_ERR(lc->log_kthread);
@@ -464,8 +477,12 @@ static int log_writes_ctr(struct dm_target *ti, unsigned int argc, char **argv)
goto bad;
}
- /* We put the super at sector 0, start logging at sector 1 */
- lc->next_sector = 1;
+ /*
+ * next_sector is in 512b sectors to correspond to what bi_sector expects.
+ * The super starts at sector 0, and the next_sector is the next logical
+ * one based on the sectorsize of the device.
+ */
+ lc->next_sector = lc->sectorsize >> SECTOR_SHIFT;
lc->logging_enabled = true;
lc->end_sector = logdev_last_sector(lc);
lc->device_supports_discard = true;
@@ -599,8 +616,8 @@ static int log_writes_map(struct dm_target *ti, struct bio *bio)
if (discard_bio)
block->flags |= LOG_DISCARD_FLAG;
- block->sector = bio->bi_iter.bi_sector;
- block->nr_sectors = bio_sectors(bio);
+ block->sector = bio_to_dev_sectors(lc, bio->bi_iter.bi_sector);
+ block->nr_sectors = bio_to_dev_sectors(lc, bio_sectors(bio));
/* We don't need the data, just submit */
if (discard_bio) {
@@ -767,9 +784,12 @@ static void log_writes_io_hints(struct dm_target *ti, struct queue_limits *limit
if (!q || !blk_queue_discard(q)) {
lc->device_supports_discard = false;
- limits->discard_granularity = 1 << SECTOR_SHIFT;
+ limits->discard_granularity = lc->sectorsize;
limits->max_discard_sectors = (UINT_MAX >> SECTOR_SHIFT);
}
+ limits->logical_block_size = bdev_logical_block_size(lc->dev->bdev);
+ limits->physical_block_size = bdev_physical_block_size(lc->dev->bdev);
+ limits->io_min = limits->physical_block_size;
}
static struct target_type log_writes_target = {
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
index 96aedaac2c64..11f273d2f018 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
@@ -632,6 +632,10 @@ static void process_queued_bios(struct work_struct *work)
case DM_MAPIO_REMAPPED:
generic_make_request(bio);
break;
+ case 0:
+ break;
+ default:
+ WARN_ONCE(true, "__multipath_map_bio() returned %d\n", r);
}
}
blk_finish_plug(&plug);
@@ -698,7 +702,7 @@ static int parse_path_selector(struct dm_arg_set *as, struct priority_group *pg,
struct path_selector_type *pst;
unsigned ps_argc;
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, 1024, "invalid number of path selector args"},
};
@@ -822,7 +826,7 @@ retain:
static struct priority_group *parse_priority_group(struct dm_arg_set *as,
struct multipath *m)
{
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{1, 1024, "invalid number of paths"},
{0, 1024, "invalid number of selector args"}
};
@@ -898,7 +902,7 @@ static int parse_hw_handler(struct dm_arg_set *as, struct multipath *m)
int ret;
struct dm_target *ti = m->ti;
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, 1024, "invalid number of hardware handler args"},
};
@@ -950,7 +954,7 @@ static int parse_features(struct dm_arg_set *as, struct multipath *m)
struct dm_target *ti = m->ti;
const char *arg_name;
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, 8, "invalid number of feature args"},
{1, 50, "pg_init_retries must be between 1 and 50"},
{0, 60000, "pg_init_delay_msecs must be between 0 and 60000"},
@@ -1019,7 +1023,7 @@ static int parse_features(struct dm_arg_set *as, struct multipath *m)
static int multipath_ctr(struct dm_target *ti, unsigned argc, char **argv)
{
/* target arguments */
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, 1024, "invalid number of priority groups"},
{0, 1024, "invalid initial priority group number"},
};
@@ -1379,6 +1383,7 @@ static void pg_init_done(void *data, int errors)
case SCSI_DH_RETRY:
/* Wait before retrying. */
delay_retry = 1;
+ /* fall through */
case SCSI_DH_IMM_RETRY:
case SCSI_DH_RES_TEMP_UNAVAIL:
if (pg_init_limit_reached(m, pgpath))
diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
index 5bfe285ea9d1..2245d06d2045 100644
--- a/drivers/md/dm-raid.c
+++ b/drivers/md/dm-raid.c
@@ -3238,7 +3238,7 @@ static int raid_map(struct dm_target *ti, struct bio *bio)
if (unlikely(bio_end_sector(bio) > mddev->array_sectors))
return DM_MAPIO_REQUEUE;
- mddev->pers->make_request(mddev, bio);
+ md_handle_request(mddev, bio);
return DM_MAPIO_SUBMITTED;
}
@@ -3297,11 +3297,10 @@ static const char *__raid_dev_status(struct raid_set *rs, struct md_rdev *rdev,
static sector_t rs_get_progress(struct raid_set *rs,
sector_t resync_max_sectors, bool *array_in_sync)
{
- sector_t r, recovery_cp, curr_resync_completed;
+ sector_t r, curr_resync_completed;
struct mddev *mddev = &rs->md;
curr_resync_completed = mddev->curr_resync_completed ?: mddev->recovery_cp;
- recovery_cp = mddev->recovery_cp;
*array_in_sync = false;
if (rs_is_raid0(rs)) {
@@ -3330,9 +3329,11 @@ static sector_t rs_get_progress(struct raid_set *rs,
} else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery))
r = curr_resync_completed;
else
- r = recovery_cp;
+ r = mddev->recovery_cp;
- if (r == MaxSector) {
+ if ((r == MaxSector) ||
+ (test_bit(MD_RECOVERY_DONE, &mddev->recovery) &&
+ (mddev->curr_resync_completed == resync_max_sectors))) {
/*
* Sync complete.
*/
@@ -3892,7 +3893,7 @@ static void raid_resume(struct dm_target *ti)
static struct target_type raid_target = {
.name = "raid",
- .version = {1, 12, 1},
+ .version = {1, 13, 0},
.module = THIS_MODULE,
.ctr = raid_ctr,
.dtr = raid_dtr,
diff --git a/drivers/md/dm-rq.c b/drivers/md/dm-rq.c
index c6ebc5b1e00e..eadfcfd106ff 100644
--- a/drivers/md/dm-rq.c
+++ b/drivers/md/dm-rq.c
@@ -117,9 +117,9 @@ static void end_clone_bio(struct bio *clone)
struct dm_rq_clone_bio_info *info =
container_of(clone, struct dm_rq_clone_bio_info, clone);
struct dm_rq_target_io *tio = info->tio;
- struct bio *bio = info->orig;
unsigned int nr_bytes = info->orig->bi_iter.bi_size;
blk_status_t error = clone->bi_status;
+ bool is_last = !clone->bi_next;
bio_put(clone);
@@ -137,28 +137,23 @@ static void end_clone_bio(struct bio *clone)
* when the request is completed.
*/
tio->error = error;
- return;
+ goto exit;
}
/*
* I/O for the bio successfully completed.
* Notice the data completion to the upper layer.
*/
-
- /*
- * bios are processed from the head of the list.
- * So the completing bio should always be rq->bio.
- * If it's not, something wrong is happening.
- */
- if (tio->orig->bio != bio)
- DMERR("bio completion is going in the middle of the request");
+ tio->completed += nr_bytes;
/*
* Update the original request.
* Do not use blk_end_request() here, because it may complete
* the original request before the clone, and break the ordering.
*/
- blk_update_request(tio->orig, BLK_STS_OK, nr_bytes);
+ if (is_last)
+ exit:
+ blk_update_request(tio->orig, BLK_STS_OK, tio->completed);
}
static struct dm_rq_target_io *tio_from_request(struct request *rq)
@@ -237,14 +232,14 @@ static void dm_end_request(struct request *clone, blk_status_t error)
/*
* Requeue the original request of a clone.
*/
-static void dm_old_requeue_request(struct request *rq)
+static void dm_old_requeue_request(struct request *rq, unsigned long delay_ms)
{
struct request_queue *q = rq->q;
unsigned long flags;
spin_lock_irqsave(q->queue_lock, flags);
blk_requeue_request(q, rq);
- blk_run_queue_async(q);
+ blk_delay_queue(q, delay_ms);
spin_unlock_irqrestore(q->queue_lock, flags);
}
@@ -270,6 +265,7 @@ static void dm_requeue_original_request(struct dm_rq_target_io *tio, bool delay_
struct mapped_device *md = tio->md;
struct request *rq = tio->orig;
int rw = rq_data_dir(rq);
+ unsigned long delay_ms = delay_requeue ? 100 : 0;
rq_end_stats(md, rq);
if (tio->clone) {
@@ -278,9 +274,9 @@ static void dm_requeue_original_request(struct dm_rq_target_io *tio, bool delay_
}
if (!rq->q->mq_ops)
- dm_old_requeue_request(rq);
+ dm_old_requeue_request(rq, delay_ms);
else
- dm_mq_delay_requeue_request(rq, delay_requeue ? 100/*ms*/ : 0);
+ dm_mq_delay_requeue_request(rq, delay_ms);
rq_completed(md, rw, false);
}
@@ -455,6 +451,7 @@ static void init_tio(struct dm_rq_target_io *tio, struct request *rq,
tio->clone = NULL;
tio->orig = rq;
tio->error = 0;
+ tio->completed = 0;
/*
* Avoid initializing info for blk-mq; it passes
* target-specific data through info.ptr
diff --git a/drivers/md/dm-rq.h b/drivers/md/dm-rq.h
index 9813922e4fe5..f43c45460aac 100644
--- a/drivers/md/dm-rq.h
+++ b/drivers/md/dm-rq.h
@@ -29,6 +29,7 @@ struct dm_rq_target_io {
struct dm_stats_aux stats_aux;
unsigned long duration_jiffies;
unsigned n_sectors;
+ unsigned completed;
};
/*
diff --git a/drivers/md/dm-stats.c b/drivers/md/dm-stats.c
index 6028d8247f58..a7868503d135 100644
--- a/drivers/md/dm-stats.c
+++ b/drivers/md/dm-stats.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/errno.h>
#include <linux/numa.h>
#include <linux/slab.h>
diff --git a/drivers/md/dm-stats.h b/drivers/md/dm-stats.h
index f1c0956e3843..2ddfae678f32 100644
--- a/drivers/md/dm-stats.h
+++ b/drivers/md/dm-stats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DM_STATS_H
#define DM_STATS_H
diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c
index ab50d7c4377f..b5e892149c54 100644
--- a/drivers/md/dm-stripe.c
+++ b/drivers/md/dm-stripe.c
@@ -351,25 +351,6 @@ static size_t stripe_dax_copy_from_iter(struct dm_target *ti, pgoff_t pgoff,
return dax_copy_from_iter(dax_dev, pgoff, addr, bytes, i);
}
-static void stripe_dax_flush(struct dm_target *ti, pgoff_t pgoff, void *addr,
- size_t size)
-{
- sector_t dev_sector, sector = pgoff * PAGE_SECTORS;
- struct stripe_c *sc = ti->private;
- struct dax_device *dax_dev;
- struct block_device *bdev;
- uint32_t stripe;
-
- stripe_map_sector(sc, sector, &stripe, &dev_sector);
- dev_sector += sc->stripe[stripe].physical_start;
- dax_dev = sc->stripe[stripe].dev->dax_dev;
- bdev = sc->stripe[stripe].dev->bdev;
-
- if (bdev_dax_pgoff(bdev, dev_sector, ALIGN(size, PAGE_SIZE), &pgoff))
- return;
- dax_flush(dax_dev, pgoff, addr, size);
-}
-
/*
* Stripe status:
*
@@ -489,7 +470,6 @@ static struct target_type stripe_target = {
.io_hints = stripe_io_hints,
.direct_access = stripe_dax_direct_access,
.dax_copy_from_iter = stripe_dax_copy_from_iter,
- .dax_flush = stripe_dax_flush,
};
int __init dm_stripe_init(void)
diff --git a/drivers/md/dm-switch.c b/drivers/md/dm-switch.c
index 2dcea4c56f37..4c8de1ff78ca 100644
--- a/drivers/md/dm-switch.c
+++ b/drivers/md/dm-switch.c
@@ -251,7 +251,7 @@ static void switch_dtr(struct dm_target *ti)
*/
static int switch_ctr(struct dm_target *ti, unsigned argc, char **argv)
{
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{1, (KMALLOC_MAX_SIZE - sizeof(struct switch_ctx)) / sizeof(struct switch_path), "Invalid number of paths"},
{1, UINT_MAX, "Invalid region size"},
{0, 0, "Invalid number of optional args"},
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index 28a4071cdf85..ef7b8f201f73 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -806,7 +806,8 @@ int dm_table_add_target(struct dm_table *t, const char *type,
/*
* Target argument parsing helpers.
*/
-static int validate_next_arg(struct dm_arg *arg, struct dm_arg_set *arg_set,
+static int validate_next_arg(const struct dm_arg *arg,
+ struct dm_arg_set *arg_set,
unsigned *value, char **error, unsigned grouped)
{
const char *arg_str = dm_shift_arg(arg_set);
@@ -824,14 +825,14 @@ static int validate_next_arg(struct dm_arg *arg, struct dm_arg_set *arg_set,
return 0;
}
-int dm_read_arg(struct dm_arg *arg, struct dm_arg_set *arg_set,
+int dm_read_arg(const struct dm_arg *arg, struct dm_arg_set *arg_set,
unsigned *value, char **error)
{
return validate_next_arg(arg, arg_set, value, error, 0);
}
EXPORT_SYMBOL(dm_read_arg);
-int dm_read_arg_group(struct dm_arg *arg, struct dm_arg_set *arg_set,
+int dm_read_arg_group(const struct dm_arg *arg, struct dm_arg_set *arg_set,
unsigned *value, char **error)
{
return validate_next_arg(arg, arg_set, value, error, 1);
diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
index 69d88aee3055..1e25705209c2 100644
--- a/drivers/md/dm-thin.c
+++ b/drivers/md/dm-thin.c
@@ -3041,7 +3041,7 @@ static int parse_pool_features(struct dm_arg_set *as, struct pool_features *pf,
unsigned argc;
const char *arg_name;
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, 4, "Invalid number of pool feature arguments"},
};
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
index 1c5b6185c79d..bda3caca23ca 100644
--- a/drivers/md/dm-verity-target.c
+++ b/drivers/md/dm-verity-target.c
@@ -839,7 +839,7 @@ static int verity_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v)
struct dm_target *ti = v->ti;
const char *arg_name;
- static struct dm_arg _args[] = {
+ static const struct dm_arg _args[] = {
{0, DM_VERITY_OPTS_MAX, "Invalid number of feature args"},
};
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 04ae795e8a5f..4be85324f44d 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -52,6 +52,12 @@ static struct workqueue_struct *deferred_remove_workqueue;
atomic_t dm_global_event_nr = ATOMIC_INIT(0);
DECLARE_WAIT_QUEUE_HEAD(dm_global_eventq);
+void dm_issue_global_event(void)
+{
+ atomic_inc(&dm_global_event_nr);
+ wake_up(&dm_global_eventq);
+}
+
/*
* One of these is allocated per bio.
*/
@@ -987,24 +993,6 @@ static size_t dm_dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff,
return ret;
}
-static void dm_dax_flush(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
- size_t size)
-{
- struct mapped_device *md = dax_get_private(dax_dev);
- sector_t sector = pgoff * PAGE_SECTORS;
- struct dm_target *ti;
- int srcu_idx;
-
- ti = dm_dax_get_live_target(md, sector, &srcu_idx);
-
- if (!ti)
- goto out;
- if (ti->type->dax_flush)
- ti->type->dax_flush(ti, pgoff, addr, size);
- out:
- dm_put_live_table(md, srcu_idx);
-}
-
/*
* A target may call dm_accept_partial_bio only from the map routine. It is
* allowed for all bio types except REQ_PREFLUSH.
@@ -1883,9 +1871,8 @@ static void event_callback(void *context)
dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
atomic_inc(&md->event_nr);
- atomic_inc(&dm_global_event_nr);
wake_up(&md->eventq);
- wake_up(&dm_global_eventq);
+ dm_issue_global_event();
}
/*
@@ -2301,6 +2288,7 @@ struct dm_table *dm_swap_table(struct mapped_device *md, struct dm_table *table)
}
map = __bind(md, table, &limits);
+ dm_issue_global_event();
out:
mutex_unlock(&md->suspend_lock);
@@ -2992,7 +2980,6 @@ static const struct block_device_operations dm_blk_dops = {
static const struct dax_operations dm_dax_ops = {
.direct_access = dm_dax_direct_access,
.copy_from_iter = dm_dax_copy_from_iter,
- .flush = dm_dax_flush,
};
/*
diff --git a/drivers/md/linear.h b/drivers/md/linear.h
index 8d392e6098b3..8381d651d4ed 100644
--- a/drivers/md/linear.h
+++ b/drivers/md/linear.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINEAR_H
#define _LINEAR_H
diff --git a/drivers/md/md-cluster.h b/drivers/md/md-cluster.h
index 274016177983..c0240708f443 100644
--- a/drivers/md/md-cluster.h
+++ b/drivers/md/md-cluster.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MD_CLUSTER_H
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 08fcaebc61bd..0ff1bbf6c90e 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -266,6 +266,37 @@ static DEFINE_SPINLOCK(all_mddevs_lock);
* call has finished, the bio has been linked into some internal structure
* and so is visible to ->quiesce(), so we don't need the refcount any more.
*/
+void md_handle_request(struct mddev *mddev, struct bio *bio)
+{
+check_suspended:
+ rcu_read_lock();
+ if (mddev->suspended) {
+ DEFINE_WAIT(__wait);
+ for (;;) {
+ prepare_to_wait(&mddev->sb_wait, &__wait,
+ TASK_UNINTERRUPTIBLE);
+ if (!mddev->suspended)
+ break;
+ rcu_read_unlock();
+ schedule();
+ rcu_read_lock();
+ }
+ finish_wait(&mddev->sb_wait, &__wait);
+ }
+ atomic_inc(&mddev->active_io);
+ rcu_read_unlock();
+
+ if (!mddev->pers->make_request(mddev, bio)) {
+ atomic_dec(&mddev->active_io);
+ wake_up(&mddev->sb_wait);
+ goto check_suspended;
+ }
+
+ if (atomic_dec_and_test(&mddev->active_io) && mddev->suspended)
+ wake_up(&mddev->sb_wait);
+}
+EXPORT_SYMBOL(md_handle_request);
+
static blk_qc_t md_make_request(struct request_queue *q, struct bio *bio)
{
const int rw = bio_data_dir(bio);
@@ -285,23 +316,6 @@ static blk_qc_t md_make_request(struct request_queue *q, struct bio *bio)
bio_endio(bio);
return BLK_QC_T_NONE;
}
-check_suspended:
- rcu_read_lock();
- if (mddev->suspended) {
- DEFINE_WAIT(__wait);
- for (;;) {
- prepare_to_wait(&mddev->sb_wait, &__wait,
- TASK_UNINTERRUPTIBLE);
- if (!mddev->suspended)
- break;
- rcu_read_unlock();
- schedule();
- rcu_read_lock();
- }
- finish_wait(&mddev->sb_wait, &__wait);
- }
- atomic_inc(&mddev->active_io);
- rcu_read_unlock();
/*
* save the sectors now since our bio can
@@ -310,20 +324,14 @@ check_suspended:
sectors = bio_sectors(bio);
/* bio could be mergeable after passing to underlayer */
bio->bi_opf &= ~REQ_NOMERGE;
- if (!mddev->pers->make_request(mddev, bio)) {
- atomic_dec(&mddev->active_io);
- wake_up(&mddev->sb_wait);
- goto check_suspended;
- }
+
+ md_handle_request(mddev, bio);
cpu = part_stat_lock();
part_stat_inc(cpu, &mddev->gendisk->part0, ios[rw]);
part_stat_add(cpu, &mddev->gendisk->part0, sectors[rw], sectors);
part_stat_unlock();
- if (atomic_dec_and_test(&mddev->active_io) && mddev->suspended)
- wake_up(&mddev->sb_wait);
-
return BLK_QC_T_NONE;
}
@@ -439,16 +447,22 @@ static void md_submit_flush_data(struct work_struct *ws)
struct mddev *mddev = container_of(ws, struct mddev, flush_work);
struct bio *bio = mddev->flush_bio;
+ /*
+ * must reset flush_bio before calling into md_handle_request to avoid a
+ * deadlock, because other bios passed md_handle_request suspend check
+ * could wait for this and below md_handle_request could wait for those
+ * bios because of suspend check
+ */
+ mddev->flush_bio = NULL;
+ wake_up(&mddev->sb_wait);
+
if (bio->bi_iter.bi_size == 0)
/* an empty barrier - all done */
bio_endio(bio);
else {
bio->bi_opf &= ~REQ_PREFLUSH;
- mddev->pers->make_request(mddev, bio);
+ md_handle_request(mddev, bio);
}
-
- mddev->flush_bio = NULL;
- wake_up(&mddev->sb_wait);
}
void md_flush_request(struct mddev *mddev, struct bio *bio)
diff --git a/drivers/md/md.h b/drivers/md/md.h
index 561d22b9a9a8..d8287d3cd1bf 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -692,6 +692,7 @@ extern void md_stop_writes(struct mddev *mddev);
extern int md_rdev_init(struct md_rdev *rdev);
extern void md_rdev_clear(struct md_rdev *rdev);
+extern void md_handle_request(struct mddev *mddev, struct bio *bio);
extern void mddev_suspend(struct mddev *mddev);
extern void mddev_resume(struct mddev *mddev);
extern struct bio *bio_alloc_mddev(gfp_t gfp_mask, int nr_iovecs,
diff --git a/drivers/md/multipath.h b/drivers/md/multipath.h
index 717c60f62898..0adb941f485a 100644
--- a/drivers/md/multipath.h
+++ b/drivers/md/multipath.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MULTIPATH_H
#define _MULTIPATH_H
diff --git a/drivers/md/persistent-data/Makefile b/drivers/md/persistent-data/Makefile
index ff528792c358..66be7c66479a 100644
--- a/drivers/md/persistent-data/Makefile
+++ b/drivers/md/persistent-data/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_DM_PERSISTENT_DATA) += dm-persistent-data.o
dm-persistent-data-objs := \
dm-array.o \
diff --git a/drivers/md/raid0.h b/drivers/md/raid0.h
index 7127a623f5da..540e65d92642 100644
--- a/drivers/md/raid0.h
+++ b/drivers/md/raid0.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RAID0_H
#define _RAID0_H
diff --git a/drivers/md/raid1-10.c b/drivers/md/raid1-10.c
index 9f2670b45f31..400001b815db 100644
--- a/drivers/md/raid1-10.c
+++ b/drivers/md/raid1-10.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Maximum size of each resync request */
#define RESYNC_BLOCK_SIZE (64*1024)
#define RESYNC_PAGES ((RESYNC_BLOCK_SIZE + PAGE_SIZE-1) / PAGE_SIZE)
diff --git a/drivers/md/raid1.h b/drivers/md/raid1.h
index c8894ef1e9d2..c7294e7557e0 100644
--- a/drivers/md/raid1.h
+++ b/drivers/md/raid1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RAID1_H
#define _RAID1_H
diff --git a/drivers/md/raid10.h b/drivers/md/raid10.h
index 735ce1a3d260..abceccab6671 100644
--- a/drivers/md/raid10.h
+++ b/drivers/md/raid10.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RAID10_H
#define _RAID10_H
diff --git a/drivers/md/raid5-log.h b/drivers/md/raid5-log.h
index 328d67aedda4..7f9ad5f7cda0 100644
--- a/drivers/md/raid5-log.h
+++ b/drivers/md/raid5-log.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RAID5_LOG_H
#define _RAID5_LOG_H
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 4188a4881148..928e24a07133 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -811,6 +811,14 @@ static void stripe_add_to_batch_list(struct r5conf *conf, struct stripe_head *sh
spin_unlock(&head->batch_head->batch_lock);
goto unlock_out;
}
+ /*
+ * We must assign batch_head of this stripe within the
+ * batch_lock, otherwise clear_batch_ready of batch head
+ * stripe could clear BATCH_READY bit of this stripe and
+ * this stripe->batch_head doesn't get assigned, which
+ * could confuse clear_batch_ready for this stripe
+ */
+ sh->batch_head = head->batch_head;
/*
* at this point, head's BATCH_READY could be cleared, but we
@@ -818,8 +826,6 @@ static void stripe_add_to_batch_list(struct r5conf *conf, struct stripe_head *sh
*/
list_add(&sh->batch_list, &head->batch_list);
spin_unlock(&head->batch_head->batch_lock);
-
- sh->batch_head = head->batch_head;
} else {
head->batch_head = head;
sh->batch_head = head->batch_head;
@@ -4599,7 +4605,8 @@ static void break_stripe_batch_list(struct stripe_head *head_sh,
set_mask_bits(&sh->state, ~(STRIPE_EXPAND_SYNC_FLAGS |
(1 << STRIPE_PREREAD_ACTIVE) |
- (1 << STRIPE_DEGRADED)),
+ (1 << STRIPE_DEGRADED) |
+ (1 << STRIPE_ON_UNPLUG_LIST)),
head_sh->state & (1 << STRIPE_INSYNC));
sh->check_state = head_sh->check_state;
@@ -6568,14 +6575,17 @@ static ssize_t
raid5_store_group_thread_cnt(struct mddev *mddev, const char *page, size_t len)
{
struct r5conf *conf;
- unsigned long new;
+ unsigned int new;
int err;
struct r5worker_group *new_groups, *old_groups;
int group_cnt, worker_cnt_per_group;
if (len >= PAGE_SIZE)
return -EINVAL;
- if (kstrtoul(page, 10, &new))
+ if (kstrtouint(page, 10, &new))
+ return -EINVAL;
+ /* 8192 should be big enough */
+ if (new > 8192)
return -EINVAL;
err = mddev_lock(mddev);
diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h
index f6536399677a..2e6123825095 100644
--- a/drivers/md/raid5.h
+++ b/drivers/md/raid5.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RAID5_H
#define _RAID5_H
diff --git a/drivers/media/Makefile b/drivers/media/Makefile
index 044503aa8801..594b462ddf0e 100644
--- a/drivers/media/Makefile
+++ b/drivers/media/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel multimedia device drivers.
#
diff --git a/drivers/media/cec/Makefile b/drivers/media/cec/Makefile
index 3353c1741961..41ee3325e1ea 100644
--- a/drivers/media/cec/Makefile
+++ b/drivers/media/cec/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
cec-objs := cec-core.o cec-adap.o cec-api.o cec-edid.o
ifeq ($(CONFIG_CEC_NOTIFIER),y)
diff --git a/drivers/media/cec/cec-adap.c b/drivers/media/cec/cec-adap.c
index dd769e40416f..f8a808d45034 100644
--- a/drivers/media/cec/cec-adap.c
+++ b/drivers/media/cec/cec-adap.c
@@ -181,7 +181,10 @@ static void cec_queue_msg_fh(struct cec_fh *fh, const struct cec_msg *msg)
{
static const struct cec_event ev_lost_msgs = {
.event = CEC_EVENT_LOST_MSGS,
- .lost_msgs.lost_msgs = 1,
+ .flags = 0,
+ {
+ .lost_msgs = { 1 },
+ },
};
struct cec_msg_entry *entry;
@@ -1794,12 +1797,19 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg,
*/
switch (msg->msg[1]) {
case CEC_MSG_GET_CEC_VERSION:
- case CEC_MSG_GIVE_DEVICE_VENDOR_ID:
case CEC_MSG_ABORT:
case CEC_MSG_GIVE_DEVICE_POWER_STATUS:
- case CEC_MSG_GIVE_PHYSICAL_ADDR:
case CEC_MSG_GIVE_OSD_NAME:
+ /*
+ * These messages reply with a directed message, so ignore if
+ * the initiator is Unregistered.
+ */
+ if (!adap->passthrough && from_unregistered)
+ return 0;
+ /* Fall through */
+ case CEC_MSG_GIVE_DEVICE_VENDOR_ID:
case CEC_MSG_GIVE_FEATURES:
+ case CEC_MSG_GIVE_PHYSICAL_ADDR:
/*
* Skip processing these messages if the passthrough mode
* is on.
@@ -1807,7 +1817,7 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg,
if (adap->passthrough)
goto skip_processing;
/* Ignore if addressing is wrong */
- if (is_broadcast || from_unregistered)
+ if (is_broadcast)
return 0;
break;
diff --git a/drivers/media/common/b2c2/Makefile b/drivers/media/common/b2c2/Makefile
index 24993a5b38ba..73df4a334eda 100644
--- a/drivers/media/common/b2c2/Makefile
+++ b/drivers/media/common/b2c2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
b2c2-flexcop-objs += flexcop.o flexcop-fe-tuner.o flexcop-i2c.o
b2c2-flexcop-objs += flexcop-sram.o flexcop-eeprom.o flexcop-misc.o
b2c2-flexcop-objs += flexcop-hw-filter.o
diff --git a/drivers/media/common/b2c2/flexcop-common.h b/drivers/media/common/b2c2/flexcop-common.h
index 2533574c0cf4..b7e5e4c17acb 100644
--- a/drivers/media/common/b2c2/flexcop-common.h
+++ b/drivers/media/common/b2c2/flexcop-common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop-common.h - common header file for device-specific source files
diff --git a/drivers/media/common/b2c2/flexcop-eeprom.c b/drivers/media/common/b2c2/flexcop-eeprom.c
index 844c7836c2a6..0f2151cd36f2 100644
--- a/drivers/media/common/b2c2/flexcop-eeprom.c
+++ b/drivers/media/common/b2c2/flexcop-eeprom.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop-eeprom.c - eeprom access methods (currently only MAC address reading)
diff --git a/drivers/media/common/b2c2/flexcop-fe-tuner.c b/drivers/media/common/b2c2/flexcop-fe-tuner.c
index 7636606f0be5..a1ce3e8eb1d3 100644
--- a/drivers/media/common/b2c2/flexcop-fe-tuner.c
+++ b/drivers/media/common/b2c2/flexcop-fe-tuner.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop-fe-tuner.c - methods for frontend attachment and DiSEqC controlling
diff --git a/drivers/media/common/b2c2/flexcop-hw-filter.c b/drivers/media/common/b2c2/flexcop-hw-filter.c
index 8220257903ef..335f30a54ba8 100644
--- a/drivers/media/common/b2c2/flexcop-hw-filter.c
+++ b/drivers/media/common/b2c2/flexcop-hw-filter.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop-hw-filter.c - pid and mac address filtering and control functions
diff --git a/drivers/media/common/b2c2/flexcop-i2c.c b/drivers/media/common/b2c2/flexcop-i2c.c
index 58d39a59fc09..564da6fa900d 100644
--- a/drivers/media/common/b2c2/flexcop-i2c.c
+++ b/drivers/media/common/b2c2/flexcop-i2c.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop-i2c.c - flexcop internal 2Wire bus (I2C) and dvb i2c initialization
diff --git a/drivers/media/common/b2c2/flexcop-misc.c b/drivers/media/common/b2c2/flexcop-misc.c
index bb0d95fe64f9..83d01d3a81cc 100644
--- a/drivers/media/common/b2c2/flexcop-misc.c
+++ b/drivers/media/common/b2c2/flexcop-misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop-misc.c - miscellaneous functions
diff --git a/drivers/media/common/b2c2/flexcop-reg.h b/drivers/media/common/b2c2/flexcop-reg.h
index 835c54d60e74..dd7c962db565 100644
--- a/drivers/media/common/b2c2/flexcop-reg.h
+++ b/drivers/media/common/b2c2/flexcop-reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop-reg.h - register abstraction for FlexCopII, FlexCopIIb and FlexCopIII
diff --git a/drivers/media/common/b2c2/flexcop-sram.c b/drivers/media/common/b2c2/flexcop-sram.c
index 185c285f70fc..d97962eb0112 100644
--- a/drivers/media/common/b2c2/flexcop-sram.c
+++ b/drivers/media/common/b2c2/flexcop-sram.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop-sram.c - functions for controlling the SRAM
diff --git a/drivers/media/common/b2c2/flexcop.h b/drivers/media/common/b2c2/flexcop.h
index 8942bdacbf61..911ece59ea02 100644
--- a/drivers/media/common/b2c2/flexcop.h
+++ b/drivers/media/common/b2c2/flexcop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop.h - private header file for all flexcop-chip-source files
diff --git a/drivers/media/common/b2c2/flexcop_ibi_value_be.h b/drivers/media/common/b2c2/flexcop_ibi_value_be.h
index 8f64bdbd72bb..c97a0d6d7b3a 100644
--- a/drivers/media/common/b2c2/flexcop_ibi_value_be.h
+++ b/drivers/media/common/b2c2/flexcop_ibi_value_be.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* register descriptions
* see flexcop.c for copyright information
diff --git a/drivers/media/common/b2c2/flexcop_ibi_value_le.h b/drivers/media/common/b2c2/flexcop_ibi_value_le.h
index c75830d7d942..5db3b46f21ee 100644
--- a/drivers/media/common/b2c2/flexcop_ibi_value_le.h
+++ b/drivers/media/common/b2c2/flexcop_ibi_value_le.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* register descriptions
* see flexcop.c for copyright information
diff --git a/drivers/media/common/btcx-risc.h b/drivers/media/common/btcx-risc.h
index 03583ef90506..76dc16f402b9 100644
--- a/drivers/media/common/btcx-risc.h
+++ b/drivers/media/common/btcx-risc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*/
struct btcx_riscmem {
diff --git a/drivers/media/common/cypress_firmware.h b/drivers/media/common/cypress_firmware.h
index 1e4f27356205..0aa46e602b07 100644
--- a/drivers/media/common/cypress_firmware.h
+++ b/drivers/media/common/cypress_firmware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de)
* see dvb-usb-init.c for copyright information.
diff --git a/drivers/media/common/saa7146/saa7146_i2c.c b/drivers/media/common/saa7146/saa7146_i2c.c
index 75897f95e4b4..f9e099d812c8 100644
--- a/drivers/media/common/saa7146/saa7146_i2c.c
+++ b/drivers/media/common/saa7146/saa7146_i2c.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <media/drv-intf/saa7146_vv.h>
diff --git a/drivers/media/common/saa7146/saa7146_vbi.c b/drivers/media/common/saa7146/saa7146_vbi.c
index d79e4d7ecd9f..371c6f8606de 100644
--- a/drivers/media/common/saa7146/saa7146_vbi.c
+++ b/drivers/media/common/saa7146/saa7146_vbi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <media/drv-intf/saa7146_vv.h>
static int vbi_pixel_to_capture = 720 * 2;
diff --git a/drivers/media/common/siano/Makefile b/drivers/media/common/siano/Makefile
index 4c0567f106b2..88e2b7ffc537 100644
--- a/drivers/media/common/siano/Makefile
+++ b/drivers/media/common/siano/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
smsmdtv-objs := smscoreapi.o sms-cards.o smsendian.o
smsdvb-objs := smsdvb-main.o
diff --git a/drivers/media/dvb-core/Makefile b/drivers/media/dvb-core/Makefile
index 281bc89576e6..47e2e391bfb8 100644
--- a/drivers/media/dvb-core/Makefile
+++ b/drivers/media/dvb-core/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel DVB device drivers.
#
diff --git a/drivers/media/dvb-core/dvb-usb-ids.h b/drivers/media/dvb-core/dvb-usb-ids.h
index 5b6041d462bc..54d7d8a48b18 100644
--- a/drivers/media/dvb-core/dvb-usb-ids.h
+++ b/drivers/media/dvb-core/dvb-usb-ids.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* dvb-usb-ids.h is part of the DVB USB library.
*
* Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@posteo.de) see
diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
index 2fcba1616168..9139d01ba7ed 100644
--- a/drivers/media/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb-core/dvb_frontend.c
@@ -141,22 +141,39 @@ struct dvb_frontend_private {
static void dvb_frontend_invoke_release(struct dvb_frontend *fe,
void (*release)(struct dvb_frontend *fe));
-static void dvb_frontend_free(struct kref *ref)
+static void __dvb_frontend_free(struct dvb_frontend *fe)
{
- struct dvb_frontend *fe =
- container_of(ref, struct dvb_frontend, refcount);
struct dvb_frontend_private *fepriv = fe->frontend_priv;
+ if (!fepriv)
+ return;
+
dvb_free_device(fepriv->dvbdev);
dvb_frontend_invoke_release(fe, fe->ops.release);
kfree(fepriv);
+ fe->frontend_priv = NULL;
+}
+
+static void dvb_frontend_free(struct kref *ref)
+{
+ struct dvb_frontend *fe =
+ container_of(ref, struct dvb_frontend, refcount);
+
+ __dvb_frontend_free(fe);
}
static void dvb_frontend_put(struct dvb_frontend *fe)
{
- kref_put(&fe->refcount, dvb_frontend_free);
+ /*
+ * Check if the frontend was registered, as otherwise
+ * kref was not initialized yet.
+ */
+ if (fe->frontend_priv)
+ kref_put(&fe->refcount, dvb_frontend_free);
+ else
+ __dvb_frontend_free(fe);
}
static void dvb_frontend_get(struct dvb_frontend *fe)
diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile
index f45f6a4a4371..d025eb373842 100644
--- a/drivers/media/dvb-frontends/Makefile
+++ b/drivers/media/dvb-frontends/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel DVB frontend device drivers.
#
diff --git a/drivers/media/dvb-frontends/dib3000mc.c b/drivers/media/dvb-frontends/dib3000mc.c
index 224283fe100a..4d086a7248e9 100644
--- a/drivers/media/dvb-frontends/dib3000mc.c
+++ b/drivers/media/dvb-frontends/dib3000mc.c
@@ -55,29 +55,57 @@ struct dib3000mc_state {
static u16 dib3000mc_read_word(struct dib3000mc_state *state, u16 reg)
{
- u8 wb[2] = { (reg >> 8) | 0x80, reg & 0xff };
- u8 rb[2];
struct i2c_msg msg[2] = {
- { .addr = state->i2c_addr >> 1, .flags = 0, .buf = wb, .len = 2 },
- { .addr = state->i2c_addr >> 1, .flags = I2C_M_RD, .buf = rb, .len = 2 },
+ { .addr = state->i2c_addr >> 1, .flags = 0, .len = 2 },
+ { .addr = state->i2c_addr >> 1, .flags = I2C_M_RD, .len = 2 },
};
+ u16 word;
+ u8 *b;
+
+ b = kmalloc(4, GFP_KERNEL);
+ if (!b)
+ return 0;
+
+ b[0] = (reg >> 8) | 0x80;
+ b[1] = reg;
+ b[2] = 0;
+ b[3] = 0;
+
+ msg[0].buf = b;
+ msg[1].buf = b + 2;
if (i2c_transfer(state->i2c_adap, msg, 2) != 2)
dprintk("i2c read error on %d\n",reg);
- return (rb[0] << 8) | rb[1];
+ word = (b[2] << 8) | b[3];
+ kfree(b);
+
+ return word;
}
static int dib3000mc_write_word(struct dib3000mc_state *state, u16 reg, u16 val)
{
- u8 b[4] = {
- (reg >> 8) & 0xff, reg & 0xff,
- (val >> 8) & 0xff, val & 0xff,
- };
struct i2c_msg msg = {
- .addr = state->i2c_addr >> 1, .flags = 0, .buf = b, .len = 4
+ .addr = state->i2c_addr >> 1, .flags = 0, .len = 4
};
- return i2c_transfer(state->i2c_adap, &msg, 1) != 1 ? -EREMOTEIO : 0;
+ int rc;
+ u8 *b;
+
+ b = kmalloc(4, GFP_KERNEL);
+ if (!b)
+ return -ENOMEM;
+
+ b[0] = reg >> 8;
+ b[1] = reg;
+ b[2] = val >> 8;
+ b[3] = val;
+
+ msg.buf = b;
+
+ rc = i2c_transfer(state->i2c_adap, &msg, 1) != 1 ? -EREMOTEIO : 0;
+ kfree(b);
+
+ return rc;
}
static int dib3000mc_identify(struct dib3000mc_state *state)
diff --git a/drivers/media/dvb-frontends/dib7000m.h b/drivers/media/dvb-frontends/dib7000m.h
index 8f84dfa9bb58..df7ecb4314cd 100644
--- a/drivers/media/dvb-frontends/dib7000m.h
+++ b/drivers/media/dvb-frontends/dib7000m.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DIB7000M_H
#define DIB7000M_H
diff --git a/drivers/media/dvb-frontends/dib7000p.h b/drivers/media/dvb-frontends/dib7000p.h
index 205fbbff632b..2e10b5ccce67 100644
--- a/drivers/media/dvb-frontends/dib7000p.h
+++ b/drivers/media/dvb-frontends/dib7000p.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DIB7000P_H
#define DIB7000P_H
diff --git a/drivers/media/dvb-frontends/dib8000.h b/drivers/media/dvb-frontends/dib8000.h
index 75cc8e47ec8f..b920fe769021 100644
--- a/drivers/media/dvb-frontends/dib8000.h
+++ b/drivers/media/dvb-frontends/dib8000.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DIB8000_H
#define DIB8000_H
diff --git a/drivers/media/dvb-frontends/dib9000.h b/drivers/media/dvb-frontends/dib9000.h
index 40883b41e66b..bb03362ac7a3 100644
--- a/drivers/media/dvb-frontends/dib9000.h
+++ b/drivers/media/dvb-frontends/dib9000.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DIB9000_H
#define DIB9000_H
diff --git a/drivers/media/dvb-frontends/dibx000_common.h b/drivers/media/dvb-frontends/dibx000_common.h
index 61f4152f24ee..8784af962eba 100644
--- a/drivers/media/dvb-frontends/dibx000_common.h
+++ b/drivers/media/dvb-frontends/dibx000_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DIBX000_COMMON_H
#define DIBX000_COMMON_H
diff --git a/drivers/media/dvb-frontends/drxk.h b/drivers/media/dvb-frontends/drxk.h
index a629897eb905..eb9bdc9f59c4 100644
--- a/drivers/media/dvb-frontends/drxk.h
+++ b/drivers/media/dvb-frontends/drxk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DRXK_H_
#define _DRXK_H_
diff --git a/drivers/media/dvb-frontends/drxk_hard.h b/drivers/media/dvb-frontends/drxk_hard.h
index 9ed88e014942..a850a876deee 100644
--- a/drivers/media/dvb-frontends/drxk_hard.h
+++ b/drivers/media/dvb-frontends/drxk_hard.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "drxk_map.h"
#define DRXK_VERSION_MAJOR 0
diff --git a/drivers/media/dvb-frontends/drxk_map.h b/drivers/media/dvb-frontends/drxk_map.h
index 761613f9fd5a..9234ef4fb68d 100644
--- a/drivers/media/dvb-frontends/drxk_map.h
+++ b/drivers/media/dvb-frontends/drxk_map.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define AUD_COMM_EXEC__A 0x1000000
#define AUD_COMM_EXEC_STOP 0x0
#define FEC_COMM_EXEC__A 0x1C00000
diff --git a/drivers/media/dvb-frontends/dvb-pll.c b/drivers/media/dvb-frontends/dvb-pll.c
index 7bec3e028bee..5553b89b804e 100644
--- a/drivers/media/dvb-frontends/dvb-pll.c
+++ b/drivers/media/dvb-frontends/dvb-pll.c
@@ -753,13 +753,19 @@ struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr,
struct i2c_adapter *i2c,
unsigned int pll_desc_id)
{
- u8 b1 [] = { 0 };
- struct i2c_msg msg = { .addr = pll_addr, .flags = I2C_M_RD,
- .buf = b1, .len = 1 };
+ u8 *b1;
+ struct i2c_msg msg = { .addr = pll_addr, .flags = I2C_M_RD, .len = 1 };
struct dvb_pll_priv *priv = NULL;
int ret;
const struct dvb_pll_desc *desc;
+ b1 = kmalloc(1, GFP_KERNEL);
+ if (!b1)
+ return NULL;
+
+ b1[0] = 0;
+ msg.buf = b1;
+
if ((id[dvb_pll_devcount] > DVB_PLL_UNDEFINED) &&
(id[dvb_pll_devcount] < ARRAY_SIZE(pll_list)))
pll_desc_id = id[dvb_pll_devcount];
@@ -773,15 +779,19 @@ struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr,
fe->ops.i2c_gate_ctrl(fe, 1);
ret = i2c_transfer (i2c, &msg, 1);
- if (ret != 1)
+ if (ret != 1) {
+ kfree(b1);
return NULL;
+ }
if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 0);
}
priv = kzalloc(sizeof(struct dvb_pll_priv), GFP_KERNEL);
- if (priv == NULL)
+ if (!priv) {
+ kfree(b1);
return NULL;
+ }
priv->pll_i2c_address = pll_addr;
priv->i2c = i2c;
@@ -811,6 +821,8 @@ struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr,
"insmod option" : "autodetected");
}
+ kfree(b1);
+
return fe;
}
EXPORT_SYMBOL(dvb_pll_attach);
diff --git a/drivers/media/dvb-frontends/dvb-pll.h b/drivers/media/dvb-frontends/dvb-pll.h
index bf9602a88b6c..6aaa9c6bff9c 100644
--- a/drivers/media/dvb-frontends/dvb-pll.h
+++ b/drivers/media/dvb-frontends/dvb-pll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* descriptions + helper functions for simple dvb plls.
*/
diff --git a/drivers/media/dvb-frontends/nxt6000_priv.h b/drivers/media/dvb-frontends/nxt6000_priv.h
index 0422e580038a..d317df02c8d7 100644
--- a/drivers/media/dvb-frontends/nxt6000_priv.h
+++ b/drivers/media/dvb-frontends/nxt6000_priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Public Include File for DRV6000 users
* (ie. NxtWave Communications - NXT6000 demodulator driver)
diff --git a/drivers/media/dvb-frontends/si21xx.h b/drivers/media/dvb-frontends/si21xx.h
index b1be62f1983a..43d480bb6ea2 100644
--- a/drivers/media/dvb-frontends/si21xx.h
+++ b/drivers/media/dvb-frontends/si21xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SI21XX_H
#define SI21XX_H
diff --git a/drivers/media/dvb-frontends/sp887x.h b/drivers/media/dvb-frontends/sp887x.h
index 412f011e6dfd..a680cc22379c 100644
--- a/drivers/media/dvb-frontends/sp887x.h
+++ b/drivers/media/dvb-frontends/sp887x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
Driver for the Spase sp887x demodulator
*/
diff --git a/drivers/media/dvb-frontends/tda18271c2dd.h b/drivers/media/dvb-frontends/tda18271c2dd.h
index e6ccf240f54c..289653db68e4 100644
--- a/drivers/media/dvb-frontends/tda18271c2dd.h
+++ b/drivers/media/dvb-frontends/tda18271c2dd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _TDA18271C2DD_H_
#define _TDA18271C2DD_H_
diff --git a/drivers/media/dvb-frontends/tda18271c2dd_maps.h b/drivers/media/dvb-frontends/tda18271c2dd_maps.h
index f3bca5c237d7..5f75516bc0cb 100644
--- a/drivers/media/dvb-frontends/tda18271c2dd_maps.h
+++ b/drivers/media/dvb-frontends/tda18271c2dd_maps.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
enum HF_S {
HF_None = 0, HF_B, HF_DK, HF_G, HF_I, HF_L, HF_L1, HF_MN, HF_FM_Radio,
HF_AnalogMax, HF_DVBT_6MHZ, HF_DVBT_7MHZ, HF_DVBT_8MHZ,
diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
index c843c181dfb9..f104650d6000 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
msp3400-objs := msp3400-driver.o msp3400-kthreads.o
obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o
diff --git a/drivers/media/i2c/msp3400-driver.h b/drivers/media/i2c/msp3400-driver.h
index a8702aca187a..b6c7698bce5a 100644
--- a/drivers/media/i2c/msp3400-driver.h
+++ b/drivers/media/i2c/msp3400-driver.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*/
diff --git a/drivers/media/i2c/soc_camera/Makefile b/drivers/media/i2c/soc_camera/Makefile
index 78532a7fb8e2..faa2df8901d2 100644
--- a/drivers/media/i2c/soc_camera/Makefile
+++ b/drivers/media/i2c/soc_camera/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_SOC_CAMERA_IMX074) += imx074.o
obj-$(CONFIG_SOC_CAMERA_MT9M001) += mt9m001.o
obj-$(CONFIG_SOC_CAMERA_MT9T031) += mt9t031.o
diff --git a/drivers/media/i2c/tea6415c.h b/drivers/media/i2c/tea6415c.h
index 3a47d697536e..f43228207445 100644
--- a/drivers/media/i2c/tea6415c.h
+++ b/drivers/media/i2c/tea6415c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __INCLUDED_TEA6415C__
#define __INCLUDED_TEA6415C__
diff --git a/drivers/media/i2c/tea6420.h b/drivers/media/i2c/tea6420.h
index 4aa3edb3e193..07f9d72a86bb 100644
--- a/drivers/media/i2c/tea6420.h
+++ b/drivers/media/i2c/tea6420.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __INCLUDED_TEA6420__
#define __INCLUDED_TEA6420__
diff --git a/drivers/media/mmc/Makefile b/drivers/media/mmc/Makefile
index 31e297a202fb..e847aa82ae41 100644
--- a/drivers/media/mmc/Makefile
+++ b/drivers/media/mmc/Makefile
@@ -1 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += siano/
diff --git a/drivers/media/pci/Makefile b/drivers/media/pci/Makefile
index a7e8af0f64a7..1ab759e9b1bb 100644
--- a/drivers/media/pci/Makefile
+++ b/drivers/media/pci/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel multimedia device drivers.
#
diff --git a/drivers/media/pci/b2c2/Makefile b/drivers/media/pci/b2c2/Makefile
index b894320a5f21..35d6835ae43e 100644
--- a/drivers/media/pci/b2c2/Makefile
+++ b/drivers/media/pci/b2c2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ifneq ($(CONFIG_DVB_B2C2_FLEXCOP_PCI),)
b2c2-flexcop-pci-objs += flexcop-dma.o
endif
diff --git a/drivers/media/pci/b2c2/flexcop-dma.c b/drivers/media/pci/b2c2/flexcop-dma.c
index 913dc97f8b49..f07610a1646d 100644
--- a/drivers/media/pci/b2c2/flexcop-dma.c
+++ b/drivers/media/pci/b2c2/flexcop-dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop-dma.c - configuring and controlling the DMA of the FlexCop
diff --git a/drivers/media/pci/bt8xx/Makefile b/drivers/media/pci/bt8xx/Makefile
index 2d4c3dd88be1..009f1dc1521f 100644
--- a/drivers/media/pci/bt8xx/Makefile
+++ b/drivers/media/pci/bt8xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
bttv-objs := bttv-driver.o bttv-cards.o bttv-if.o \
bttv-risc.o bttv-vbi.o bttv-i2c.o bttv-gpio.o \
bttv-input.o bttv-audio-hook.o btcx-risc.o
diff --git a/drivers/media/pci/bt8xx/btcx-risc.h b/drivers/media/pci/bt8xx/btcx-risc.h
index 1ed7a000160a..dc774a64cd1f 100644
--- a/drivers/media/pci/bt8xx/btcx-risc.h
+++ b/drivers/media/pci/bt8xx/btcx-risc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
struct btcx_riscmem {
unsigned int size;
__le32 *cpu;
diff --git a/drivers/media/pci/bt8xx/bttv.h b/drivers/media/pci/bt8xx/bttv.h
index 91301c3cad1e..eb67e362acf7 100644
--- a/drivers/media/pci/bt8xx/bttv.h
+++ b/drivers/media/pci/bt8xx/bttv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* bttv - Bt848 frame grabber driver
diff --git a/drivers/media/pci/bt8xx/dst_priv.h b/drivers/media/pci/bt8xx/dst_priv.h
index 3974a4c6ebe7..a4319d41d141 100644
--- a/drivers/media/pci/bt8xx/dst_priv.h
+++ b/drivers/media/pci/bt8xx/dst_priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* dst-bt878.h: part of the DST driver for the TwinHan DST Frontend
*
diff --git a/drivers/media/pci/cx18/Makefile b/drivers/media/pci/cx18/Makefile
index d3ff1545c2c5..98914a40f6ac 100644
--- a/drivers/media/pci/cx18/Makefile
+++ b/drivers/media/pci/cx18/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
cx18-objs := cx18-driver.o cx18-cards.o cx18-i2c.o cx18-firmware.o cx18-gpio.o \
cx18-queue.o cx18-streams.o cx18-fileops.o cx18-ioctl.o cx18-controls.o \
cx18-mailbox.o cx18-vbi.o cx18-audio.o cx18-video.o cx18-irq.o \
diff --git a/drivers/media/pci/cx23885/Makefile b/drivers/media/pci/cx23885/Makefile
index a2cbdcf15a8c..b8bf7806124b 100644
--- a/drivers/media/pci/cx23885/Makefile
+++ b/drivers/media/pci/cx23885/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
cx23885-objs := cx23885-cards.o cx23885-video.o cx23885-vbi.o \
cx23885-core.o cx23885-i2c.o cx23885-dvb.o cx23885-417.o \
cx23885-ioctl.o cx23885-ir.o cx23885-av.o cx23885-input.o \
diff --git a/drivers/media/pci/cx23885/cx23885-f300.h b/drivers/media/pci/cx23885/cx23885-f300.h
index be14d7de7cd8..34aef3610aa9 100644
--- a/drivers/media/pci/cx23885/cx23885-f300.h
+++ b/drivers/media/pci/cx23885/cx23885-f300.h
@@ -1,2 +1,3 @@
+/* SPDX-License-Identifier: GPL-2.0 */
extern int f300_set_voltage(struct dvb_frontend *fe,
enum fe_sec_voltage voltage);
diff --git a/drivers/media/pci/cx25821/Makefile b/drivers/media/pci/cx25821/Makefile
index c8f8598a2b86..d14d65b1b042 100644
--- a/drivers/media/pci/cx25821/Makefile
+++ b/drivers/media/pci/cx25821/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
cx25821-y := cx25821-core.o cx25821-cards.o cx25821-i2c.o \
cx25821-gpio.o cx25821-medusa-video.o \
cx25821-video.o
diff --git a/drivers/media/pci/cx25821/cx25821-audio-upstream.c b/drivers/media/pci/cx25821/cx25821-audio-upstream.c
index b94eb1c0023d..ada26d4acfb4 100644
--- a/drivers/media/pci/cx25821/cx25821-audio-upstream.c
+++ b/drivers/media/pci/cx25821/cx25821-audio-upstream.c
@@ -277,7 +277,7 @@ static int cx25821_get_audio_data(struct cx25821_dev *dev,
p = (char *)dev->_audiodata_buf_virt_addr + frame_offset;
for (i = 0; i < dev->_audio_lines_count; i++) {
- int n = kernel_read(file, file_offset, mybuf, AUDIO_LINE_SIZE);
+ int n = kernel_read(file, mybuf, AUDIO_LINE_SIZE, &file_offset);
if (n < AUDIO_LINE_SIZE) {
pr_info("Done: exit %s() since no more bytes to read from Audio file\n",
__func__);
@@ -290,7 +290,6 @@ static int cx25821_get_audio_data(struct cx25821_dev *dev,
memcpy(p, mybuf, n);
p += n;
}
- file_offset += n;
}
dev->_audioframe_count++;
fput(file);
@@ -318,7 +317,7 @@ static int cx25821_openfile_audio(struct cx25821_dev *dev,
{
char *p = (void *)dev->_audiodata_buf_virt_addr;
struct file *file;
- loff_t offset;
+ loff_t file_offset = 0;
int i, j;
file = filp_open(dev->_audiofilename, O_RDONLY | O_LARGEFILE, 0);
@@ -328,11 +327,11 @@ static int cx25821_openfile_audio(struct cx25821_dev *dev,
return PTR_ERR(file);
}
- for (j = 0, offset = 0; j < NUM_AUDIO_FRAMES; j++) {
+ for (j = 0; j < NUM_AUDIO_FRAMES; j++) {
for (i = 0; i < dev->_audio_lines_count; i++) {
char buf[AUDIO_LINE_SIZE];
- int n = kernel_read(file, offset, buf,
- AUDIO_LINE_SIZE);
+ loff_t offset = file_offset;
+ int n = kernel_read(file, buf, AUDIO_LINE_SIZE, &file_offset);
if (n < AUDIO_LINE_SIZE) {
pr_info("Done: exit %s() since no more bytes to read from Audio file\n",
@@ -344,8 +343,6 @@ static int cx25821_openfile_audio(struct cx25821_dev *dev,
if (p)
memcpy(p + offset, buf, n);
-
- offset += n;
}
dev->_audioframe_count++;
}
diff --git a/drivers/media/pci/cx88/Makefile b/drivers/media/pci/cx88/Makefile
index d3679c3ee248..86646eee4e6b 100644
--- a/drivers/media/pci/cx88/Makefile
+++ b/drivers/media/pci/cx88/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
cx88xx-objs := cx88-cards.o cx88-core.o cx88-i2c.o cx88-tvaudio.o \
cx88-dsp.o cx88-input.o
cx8800-objs := cx88-video.o cx88-vbi.o
diff --git a/drivers/media/pci/cx88/cx88-vbi.c b/drivers/media/pci/cx88/cx88-vbi.c
index 2d0ef19e6d65..c637679b01b2 100644
--- a/drivers/media/pci/cx88/cx88-vbi.c
+++ b/drivers/media/pci/cx88/cx88-vbi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
*/
diff --git a/drivers/media/pci/ddbridge/Makefile b/drivers/media/pci/ddbridge/Makefile
index 09703312a3f1..7453b65104ff 100644
--- a/drivers/media/pci/ddbridge/Makefile
+++ b/drivers/media/pci/ddbridge/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the ddbridge device driver
#
diff --git a/drivers/media/pci/ivtv/Makefile b/drivers/media/pci/ivtv/Makefile
index 0eaa88298b7e..48f8a23f9a0f 100644
--- a/drivers/media/pci/ivtv/Makefile
+++ b/drivers/media/pci/ivtv/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ivtv-objs := ivtv-routing.o ivtv-cards.o ivtv-controls.o \
ivtv-driver.o ivtv-fileops.o ivtv-firmware.o \
ivtv-gpio.o ivtv-i2c.o ivtv-ioctl.o ivtv-irq.o \
diff --git a/drivers/media/pci/mantis/Makefile b/drivers/media/pci/mantis/Makefile
index f715051e4453..a684dc2ec79e 100644
--- a/drivers/media/pci/mantis/Makefile
+++ b/drivers/media/pci/mantis/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
mantis_core-objs := mantis_ioc.o \
mantis_uart.o \
mantis_dma.o \
diff --git a/drivers/media/pci/netup_unidvb/Makefile b/drivers/media/pci/netup_unidvb/Makefile
index ee6ae0501eae..07d3f1eb728b 100644
--- a/drivers/media/pci/netup_unidvb/Makefile
+++ b/drivers/media/pci/netup_unidvb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
netup-unidvb-objs += netup_unidvb_core.o
netup-unidvb-objs += netup_unidvb_i2c.o
netup-unidvb-objs += netup_unidvb_ci.o
diff --git a/drivers/media/pci/ngene/Makefile b/drivers/media/pci/ngene/Makefile
index 5c0b5d6b9d69..dbdf284970f8 100644
--- a/drivers/media/pci/ngene/Makefile
+++ b/drivers/media/pci/ngene/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the nGene device driver
#
diff --git a/drivers/media/pci/pt3/Makefile b/drivers/media/pci/pt3/Makefile
index 396f146b1c18..aded8752ac2b 100644
--- a/drivers/media/pci/pt3/Makefile
+++ b/drivers/media/pci/pt3/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
earth-pt3-objs += pt3.o pt3_i2c.o pt3_dma.o
diff --git a/drivers/media/pci/saa7134/Makefile b/drivers/media/pci/saa7134/Makefile
index 09c43da67588..dbaadddf4320 100644
--- a/drivers/media/pci/saa7134/Makefile
+++ b/drivers/media/pci/saa7134/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
saa7134-y += saa7134-cards.o saa7134-core.o saa7134-i2c.o
saa7134-y += saa7134-ts.o saa7134-tvaudio.o saa7134-vbi.o
diff --git a/drivers/media/pci/saa7134/saa7134-reg.h b/drivers/media/pci/saa7134/saa7134-reg.h
index b6ea6f4f9b6c..56b12641d733 100644
--- a/drivers/media/pci/saa7134/saa7134-reg.h
+++ b/drivers/media/pci/saa7134/saa7134-reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* philips saa7134 registers
diff --git a/drivers/media/pci/saa7164/Makefile b/drivers/media/pci/saa7164/Makefile
index ba0e33a1ee24..3896bcdb99d2 100644
--- a/drivers/media/pci/saa7164/Makefile
+++ b/drivers/media/pci/saa7164/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
saa7164-objs := saa7164-cards.o saa7164-core.o saa7164-i2c.o saa7164-dvb.o \
saa7164-fw.o saa7164-bus.o saa7164-cmd.o saa7164-api.o \
saa7164-buffer.o saa7164-encoder.o saa7164-vbi.o
diff --git a/drivers/media/pci/smipcie/Makefile b/drivers/media/pci/smipcie/Makefile
index 013bc3fe4294..6006aac3c41f 100644
--- a/drivers/media/pci/smipcie/Makefile
+++ b/drivers/media/pci/smipcie/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
smipcie-objs := smipcie-main.o smipcie-ir.o
diff --git a/drivers/media/pci/ttpci/Makefile b/drivers/media/pci/ttpci/Makefile
index 3cf617737f7c..0b805339c123 100644
--- a/drivers/media/pci/ttpci/Makefile
+++ b/drivers/media/pci/ttpci/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel SAA7146 FULL TS DVB device driver
# and the AV7110 DVB device driver
diff --git a/drivers/media/pci/ttpci/av7110.h b/drivers/media/pci/ttpci/av7110.h
index 347827925c14..cd09fd6e6548 100644
--- a/drivers/media/pci/ttpci/av7110.h
+++ b/drivers/media/pci/ttpci/av7110.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AV7110_H_
#define _AV7110_H_
diff --git a/drivers/media/pci/ttpci/av7110_av.h b/drivers/media/pci/ttpci/av7110_av.h
index f52276f47709..71bbd4391f57 100644
--- a/drivers/media/pci/ttpci/av7110_av.h
+++ b/drivers/media/pci/ttpci/av7110_av.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AV7110_AV_H_
#define _AV7110_AV_H_
diff --git a/drivers/media/pci/ttpci/av7110_ca.h b/drivers/media/pci/ttpci/av7110_ca.h
index 70ee855ece1b..a6e3f2955730 100644
--- a/drivers/media/pci/ttpci/av7110_ca.h
+++ b/drivers/media/pci/ttpci/av7110_ca.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AV7110_CA_H_
#define _AV7110_CA_H_
diff --git a/drivers/media/pci/ttpci/av7110_hw.h b/drivers/media/pci/ttpci/av7110_hw.h
index ccb148059406..6380d8950c69 100644
--- a/drivers/media/pci/ttpci/av7110_hw.h
+++ b/drivers/media/pci/ttpci/av7110_hw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AV7110_HW_H_
#define _AV7110_HW_H_
diff --git a/drivers/media/pci/ttpci/av7110_ipack.c b/drivers/media/pci/ttpci/av7110_ipack.c
index 699ef8b5b99a..5aff26574fe1 100644
--- a/drivers/media/pci/ttpci/av7110_ipack.c
+++ b/drivers/media/pci/ttpci/av7110_ipack.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "dvb_filter.h"
#include "av7110_ipack.h"
#include <linux/string.h> /* for memcpy() */
diff --git a/drivers/media/pci/ttpci/av7110_ipack.h b/drivers/media/pci/ttpci/av7110_ipack.h
index becf94d3fdfa..943ec899bb93 100644
--- a/drivers/media/pci/ttpci/av7110_ipack.h
+++ b/drivers/media/pci/ttpci/av7110_ipack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AV7110_IPACK_H_
#define _AV7110_IPACK_H_
diff --git a/drivers/media/pci/ttpci/budget.h b/drivers/media/pci/ttpci/budget.h
index d5ae4438153e..fae83866b199 100644
--- a/drivers/media/pci/ttpci/budget.h
+++ b/drivers/media/pci/ttpci/budget.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BUDGET_DVB__
#define __BUDGET_DVB__
diff --git a/drivers/media/pci/ttpci/dvb_filter.c b/drivers/media/pci/ttpci/dvb_filter.c
index b67127b67d4e..8c2eca5dcdc9 100644
--- a/drivers/media/pci/ttpci/dvb_filter.c
+++ b/drivers/media/pci/ttpci/dvb_filter.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/string.h>
diff --git a/drivers/media/pci/tw5864/tw5864-util.c b/drivers/media/pci/tw5864/tw5864-util.c
index 771eef235755..b9cebe9d1740 100644
--- a/drivers/media/pci/tw5864/tw5864-util.c
+++ b/drivers/media/pci/tw5864/tw5864-util.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "tw5864.h"
void tw5864_indir_writeb(struct tw5864_dev *dev, u16 addr, u8 data)
diff --git a/drivers/media/pci/tw686x/tw686x-regs.h b/drivers/media/pci/tw686x/tw686x-regs.h
index 15a956642ef4..8adacc928be1 100644
--- a/drivers/media/pci/tw686x/tw686x-regs.h
+++ b/drivers/media/pci/tw686x/tw686x-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* DMA controller registers */
#define REG8_1(a0) ((const u16[8]) { a0, a0 + 1, a0 + 2, a0 + 3, \
a0 + 4, a0 + 5, a0 + 6, a0 + 7})
diff --git a/drivers/media/pci/zoran/Makefile b/drivers/media/pci/zoran/Makefile
index 44cc13352c88..21ac29a71458 100644
--- a/drivers/media/pci/zoran/Makefile
+++ b/drivers/media/pci/zoran/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
zr36067-objs := zoran_procfs.o zoran_device.o \
zoran_driver.o zoran_card.o
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 7e7cc49b8674..3c4f7fa7b9d8 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -112,7 +112,7 @@ config VIDEO_PXA27x
config VIDEO_QCOM_CAMSS
tristate "Qualcomm 8x16 V4L2 Camera Subsystem driver"
- depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
+ depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API && HAS_DMA
depends on (ARCH_QCOM && IOMMU_DMA) || COMPILE_TEST
select VIDEOBUF2_DMA_SG
select V4L2_FWNODE
diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile
index c1ef946bf032..327f80a6f82c 100644
--- a/drivers/media/platform/Makefile
+++ b/drivers/media/platform/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the video capture/playback device drivers.
#
diff --git a/drivers/media/platform/atmel/atmel-isc-regs.h b/drivers/media/platform/atmel/atmel-isc-regs.h
index 6936ac467609..e6cef966dcbf 100644
--- a/drivers/media/platform/atmel/atmel-isc-regs.h
+++ b/drivers/media/platform/atmel/atmel-isc-regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ATMEL_ISC_REGS_H
#define __ATMEL_ISC_REGS_H
diff --git a/drivers/media/platform/coda/trace.h b/drivers/media/platform/coda/trace.h
index f20666a4aa89..ca671e315ad0 100644
--- a/drivers/media/platform/coda/trace.h
+++ b/drivers/media/platform/coda/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM coda
diff --git a/drivers/media/platform/davinci/Makefile b/drivers/media/platform/davinci/Makefile
index d74d9eeb0e9e..05c45bf371aa 100644
--- a/drivers/media/platform/davinci/Makefile
+++ b/drivers/media/platform/davinci/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the davinci video device drivers.
#
diff --git a/drivers/media/platform/exynos4-is/Makefile b/drivers/media/platform/exynos4-is/Makefile
index eed1b185d813..a5ab01c73b95 100644
--- a/drivers/media/platform/exynos4-is/Makefile
+++ b/drivers/media/platform/exynos4-is/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
s5p-fimc-objs := fimc-core.o fimc-reg.o fimc-m2m.o fimc-capture.o media-dev.o
exynos-fimc-lite-objs += fimc-lite-reg.o fimc-lite.o
s5p-csis-objs := mipi-csis.o
diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c
index b07a251e8857..7b7250b1cff8 100644
--- a/drivers/media/platform/marvell-ccic/mcam-core.c
+++ b/drivers/media/platform/marvell-ccic/mcam-core.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* The Marvell camera core. This device appears in a number of settings,
* so it needs platform-specific support outside of the core.
diff --git a/drivers/media/platform/marvell-ccic/mcam-core.h b/drivers/media/platform/marvell-ccic/mcam-core.h
index beb339f5561f..ad8955f9f0a1 100644
--- a/drivers/media/platform/marvell-ccic/mcam-core.h
+++ b/drivers/media/platform/marvell-ccic/mcam-core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Marvell camera core structures.
*
diff --git a/drivers/media/platform/mtk-mdp/Makefile b/drivers/media/platform/mtk-mdp/Makefile
index f8025699af99..5982d65c9971 100644
--- a/drivers/media/platform/mtk-mdp/Makefile
+++ b/drivers/media/platform/mtk-mdp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
mtk-mdp-y += mtk_mdp_core.o
mtk-mdp-y += mtk_mdp_comp.o
mtk-mdp-y += mtk_mdp_m2m.o
diff --git a/drivers/media/platform/mtk-vcodec/Makefile b/drivers/media/platform/mtk-vcodec/Makefile
index 852d9697ccfa..37b94b555fa1 100644
--- a/drivers/media/platform/mtk-vcodec/Makefile
+++ b/drivers/media/platform/mtk-vcodec/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC) += mtk-vcodec-dec.o \
mtk-vcodec-enc.o \
diff --git a/drivers/media/platform/omap3isp/Makefile b/drivers/media/platform/omap3isp/Makefile
index 254975a9174e..56e99b4f7d23 100644
--- a/drivers/media/platform/omap3isp/Makefile
+++ b/drivers/media/platform/omap3isp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for OMAP3 ISP driver
ccflags-$(CONFIG_VIDEO_OMAP3_DEBUG) += -DDEBUG
diff --git a/drivers/media/platform/qcom/camss-8x16/camss-vfe.c b/drivers/media/platform/qcom/camss-8x16/camss-vfe.c
index b21b3c2dc77f..b22d2dfcd3c2 100644
--- a/drivers/media/platform/qcom/camss-8x16/camss-vfe.c
+++ b/drivers/media/platform/qcom/camss-8x16/camss-vfe.c
@@ -2660,7 +2660,7 @@ static int vfe_get_selection(struct v4l2_subdev *sd,
*
* Return -EINVAL or zero on success
*/
-int vfe_set_selection(struct v4l2_subdev *sd,
+static int vfe_set_selection(struct v4l2_subdev *sd,
struct v4l2_subdev_pad_config *cfg,
struct v4l2_subdev_selection *sel)
{
diff --git a/drivers/media/platform/qcom/venus/Makefile b/drivers/media/platform/qcom/venus/Makefile
index 0fe9afb83697..bfd4edf7c83f 100644
--- a/drivers/media/platform/qcom/venus/Makefile
+++ b/drivers/media/platform/qcom/venus/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for Qualcomm Venus driver
venus-core-objs += core.o helpers.o firmware.o \
diff --git a/drivers/media/platform/qcom/venus/helpers.c b/drivers/media/platform/qcom/venus/helpers.c
index 68933d208063..9b2a401a4891 100644
--- a/drivers/media/platform/qcom/venus/helpers.c
+++ b/drivers/media/platform/qcom/venus/helpers.c
@@ -682,6 +682,7 @@ void venus_helper_vb2_stop_streaming(struct vb2_queue *q)
hfi_session_abort(inst);
load_scale_clocks(core);
+ INIT_LIST_HEAD(&inst->registeredbufs);
}
venus_helper_buffers_done(inst, VB2_BUF_STATE_ERROR);
diff --git a/drivers/media/platform/s5p-cec/exynos_hdmi_cecctrl.c b/drivers/media/platform/s5p-cec/exynos_hdmi_cecctrl.c
index 1edf667d562a..146ae6f25cdb 100644
--- a/drivers/media/platform/s5p-cec/exynos_hdmi_cecctrl.c
+++ b/drivers/media/platform/s5p-cec/exynos_hdmi_cecctrl.c
@@ -172,7 +172,8 @@ u32 s5p_cec_get_status(struct s5p_cec_dev *cec)
{
u32 status = 0;
- status = readb(cec->reg + S5P_CEC_STATUS_0);
+ status = readb(cec->reg + S5P_CEC_STATUS_0) & 0xf;
+ status |= (readb(cec->reg + S5P_CEC_TX_STAT1) & 0xf) << 4;
status |= readb(cec->reg + S5P_CEC_STATUS_1) << 8;
status |= readb(cec->reg + S5P_CEC_STATUS_2) << 16;
status |= readb(cec->reg + S5P_CEC_STATUS_3) << 24;
diff --git a/drivers/media/platform/s5p-cec/s5p_cec.c b/drivers/media/platform/s5p-cec/s5p_cec.c
index 58d200e7c838..8837e2678bde 100644
--- a/drivers/media/platform/s5p-cec/s5p_cec.c
+++ b/drivers/media/platform/s5p-cec/s5p_cec.c
@@ -92,7 +92,10 @@ static irqreturn_t s5p_cec_irq_handler(int irq, void *priv)
dev_dbg(cec->dev, "irq received\n");
if (status & CEC_STATUS_TX_DONE) {
- if (status & CEC_STATUS_TX_ERROR) {
+ if (status & CEC_STATUS_TX_NACK) {
+ dev_dbg(cec->dev, "CEC_STATUS_TX_NACK set\n");
+ cec->tx = STATE_NACK;
+ } else if (status & CEC_STATUS_TX_ERROR) {
dev_dbg(cec->dev, "CEC_STATUS_TX_ERROR set\n");
cec->tx = STATE_ERROR;
} else {
@@ -135,6 +138,12 @@ static irqreturn_t s5p_cec_irq_handler_thread(int irq, void *priv)
cec_transmit_done(cec->adap, CEC_TX_STATUS_OK, 0, 0, 0, 0);
cec->tx = STATE_IDLE;
break;
+ case STATE_NACK:
+ cec_transmit_done(cec->adap,
+ CEC_TX_STATUS_MAX_RETRIES | CEC_TX_STATUS_NACK,
+ 0, 1, 0, 0);
+ cec->tx = STATE_IDLE;
+ break;
case STATE_ERROR:
cec_transmit_done(cec->adap,
CEC_TX_STATUS_MAX_RETRIES | CEC_TX_STATUS_ERROR,
diff --git a/drivers/media/platform/s5p-cec/s5p_cec.h b/drivers/media/platform/s5p-cec/s5p_cec.h
index 8bcd8dc1aeb9..86ded522ef27 100644
--- a/drivers/media/platform/s5p-cec/s5p_cec.h
+++ b/drivers/media/platform/s5p-cec/s5p_cec.h
@@ -35,6 +35,7 @@
#define CEC_STATUS_TX_TRANSFERRING (1 << 1)
#define CEC_STATUS_TX_DONE (1 << 2)
#define CEC_STATUS_TX_ERROR (1 << 3)
+#define CEC_STATUS_TX_NACK (1 << 4)
#define CEC_STATUS_TX_BYTES (0xFF << 8)
#define CEC_STATUS_RX_RUNNING (1 << 16)
#define CEC_STATUS_RX_RECEIVING (1 << 17)
@@ -55,6 +56,7 @@ enum cec_state {
STATE_IDLE,
STATE_BUSY,
STATE_DONE,
+ STATE_NACK,
STATE_ERROR
};
diff --git a/drivers/media/platform/s5p-mfc/Makefile b/drivers/media/platform/s5p-mfc/Makefile
index 15f59b324fef..0b324af2ab00 100644
--- a/drivers/media/platform/s5p-mfc/Makefile
+++ b/drivers/media/platform/s5p-mfc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VIDEO_SAMSUNG_S5P_MFC) += s5p-mfc.o
s5p-mfc-y += s5p_mfc.o s5p_mfc_intr.o
s5p-mfc-y += s5p_mfc_dec.o s5p_mfc_enc.o
diff --git a/drivers/media/platform/sti/c8sectpfe/Makefile b/drivers/media/platform/sti/c8sectpfe/Makefile
index b578c7cb4c34..b642b4fd5045 100644
--- a/drivers/media/platform/sti/c8sectpfe/Makefile
+++ b/drivers/media/platform/sti/c8sectpfe/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
c8sectpfe-y += c8sectpfe-core.o c8sectpfe-common.o c8sectpfe-dvb.o \
c8sectpfe-debugfs.o
diff --git a/drivers/media/platform/ti-vpe/Makefile b/drivers/media/platform/ti-vpe/Makefile
index 32504b724b5d..886ac5ec073f 100644
--- a/drivers/media/platform/ti-vpe/Makefile
+++ b/drivers/media/platform/ti-vpe/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VIDEO_TI_VPE) += ti-vpe.o
obj-$(CONFIG_VIDEO_TI_VPDMA) += ti-vpdma.o
obj-$(CONFIG_VIDEO_TI_SC) += ti-sc.o
diff --git a/drivers/media/platform/via-camera.h b/drivers/media/platform/via-camera.h
index b12a4b3d616f..2d67f8ce258d 100644
--- a/drivers/media/platform/via-camera.h
+++ b/drivers/media/platform/via-camera.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* VIA Camera register definitions.
*/
diff --git a/drivers/media/platform/vimc/Makefile b/drivers/media/platform/vimc/Makefile
index 68c5d9804c11..4b2e3de7856e 100644
--- a/drivers/media/platform/vimc/Makefile
+++ b/drivers/media/platform/vimc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
vimc-objs := vimc-core.o
vimc_capture-objs := vimc-capture.o
vimc_common-objs := vimc-common.o
diff --git a/drivers/media/platform/vivid/Makefile b/drivers/media/platform/vivid/Makefile
index 29738810e3ee..2f5762e3309a 100644
--- a/drivers/media/platform/vivid/Makefile
+++ b/drivers/media/platform/vivid/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
vivid-objs := vivid-core.o vivid-ctrls.o vivid-vid-common.o vivid-vbi-gen.o \
vivid-vid-cap.o vivid-vid-out.o vivid-kthread-cap.o vivid-kthread-out.o \
vivid-radio-rx.o vivid-radio-tx.o vivid-radio-common.o \
diff --git a/drivers/media/platform/vsp1/Makefile b/drivers/media/platform/vsp1/Makefile
index a33afc385a48..f5cd6f0491cb 100644
--- a/drivers/media/platform/vsp1/Makefile
+++ b/drivers/media/platform/vsp1/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
vsp1-y := vsp1_drv.o vsp1_entity.o vsp1_pipe.o
vsp1-y += vsp1_dl.o vsp1_drm.o vsp1_video.o
vsp1-y += vsp1_rpf.o vsp1_rwpf.o vsp1_wpf.o
diff --git a/drivers/media/radio/Makefile b/drivers/media/radio/Makefile
index 120e791199b2..37e6e8255b57 100644
--- a/drivers/media/radio/Makefile
+++ b/drivers/media/radio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel character device drivers.
#
diff --git a/drivers/media/radio/lm7000.h b/drivers/media/radio/lm7000.h
index 139cd6b68824..adb217965620 100644
--- a/drivers/media/radio/lm7000.h
+++ b/drivers/media/radio/lm7000.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LM7000_H
#define __LM7000_H
diff --git a/drivers/media/rc/Makefile b/drivers/media/rc/Makefile
index 9bc6a3980ed0..ab3d5a135453 100644
--- a/drivers/media/rc/Makefile
+++ b/drivers/media/rc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rc-core-objs := rc-main.o rc-ir-raw.o
obj-y += keymaps/
diff --git a/drivers/media/rc/img-ir/Makefile b/drivers/media/rc/img-ir/Makefile
index 8e6d458e66ad..741fedc5dceb 100644
--- a/drivers/media/rc/img-ir/Makefile
+++ b/drivers/media/rc/img-ir/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
img-ir-y := img-ir-core.o
img-ir-$(CONFIG_IR_IMG_RAW) += img-ir-raw.o
img-ir-$(CONFIG_IR_IMG_HW) += img-ir-hw.o
diff --git a/drivers/media/rc/ir-sharp-decoder.c b/drivers/media/rc/ir-sharp-decoder.c
index ed43a4212479..129b558acc92 100644
--- a/drivers/media/rc/ir-sharp-decoder.c
+++ b/drivers/media/rc/ir-sharp-decoder.c
@@ -245,5 +245,5 @@ module_init(ir_sharp_decode_init);
module_exit(ir_sharp_decode_exit);
MODULE_LICENSE("GPL");
-MODULE_AUTHOR("James Hogan <james.hogan@imgtec.com>");
+MODULE_AUTHOR("James Hogan <jhogan@kernel.org>");
MODULE_DESCRIPTION("Sharp IR protocol decoder");
diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
index af6496d709fb..2d0b26bf2051 100644
--- a/drivers/media/rc/keymaps/Makefile
+++ b/drivers/media/rc/keymaps/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
rc-alink-dtu-m.o \
rc-anysee.o \
diff --git a/drivers/media/tuners/Makefile b/drivers/media/tuners/Makefile
index 06a9ab65e5fa..7be96511532d 100644
--- a/drivers/media/tuners/Makefile
+++ b/drivers/media/tuners/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for common V4L/DVB tuners
#
diff --git a/drivers/media/tuners/fc0011.h b/drivers/media/tuners/fc0011.h
index 438cf897acd1..a36871c44c8c 100644
--- a/drivers/media/tuners/fc0011.h
+++ b/drivers/media/tuners/fc0011.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_FC0011_H_
#define LINUX_FC0011_H_
diff --git a/drivers/media/tuners/mt2060.c b/drivers/media/tuners/mt2060.c
index 2e487f9a2cc3..4983eeb39f36 100644
--- a/drivers/media/tuners/mt2060.c
+++ b/drivers/media/tuners/mt2060.c
@@ -38,41 +38,74 @@ MODULE_PARM_DESC(debug, "Turn on/off debugging (default:off).");
static int mt2060_readreg(struct mt2060_priv *priv, u8 reg, u8 *val)
{
struct i2c_msg msg[2] = {
- { .addr = priv->cfg->i2c_address, .flags = 0, .buf = &reg, .len = 1 },
- { .addr = priv->cfg->i2c_address, .flags = I2C_M_RD, .buf = val, .len = 1 },
+ { .addr = priv->cfg->i2c_address, .flags = 0, .len = 1 },
+ { .addr = priv->cfg->i2c_address, .flags = I2C_M_RD, .len = 1 },
};
+ int rc = 0;
+ u8 *b;
+
+ b = kmalloc(2, GFP_KERNEL);
+ if (!b)
+ return -ENOMEM;
+
+ b[0] = reg;
+ b[1] = 0;
+
+ msg[0].buf = b;
+ msg[1].buf = b + 1;
if (i2c_transfer(priv->i2c, msg, 2) != 2) {
printk(KERN_WARNING "mt2060 I2C read failed\n");
- return -EREMOTEIO;
+ rc = -EREMOTEIO;
}
- return 0;
+ *val = b[1];
+ kfree(b);
+
+ return rc;
}
// Writes a single register
static int mt2060_writereg(struct mt2060_priv *priv, u8 reg, u8 val)
{
- u8 buf[2] = { reg, val };
struct i2c_msg msg = {
- .addr = priv->cfg->i2c_address, .flags = 0, .buf = buf, .len = 2
+ .addr = priv->cfg->i2c_address, .flags = 0, .len = 2
};
+ u8 *buf;
+ int rc = 0;
+
+ buf = kmalloc(2, GFP_KERNEL);
+ if (!buf)
+ return -ENOMEM;
+
+ buf[0] = reg;
+ buf[1] = val;
+
+ msg.buf = buf;
if (i2c_transfer(priv->i2c, &msg, 1) != 1) {
printk(KERN_WARNING "mt2060 I2C write failed\n");
- return -EREMOTEIO;
+ rc = -EREMOTEIO;
}
- return 0;
+ kfree(buf);
+ return rc;
}
// Writes a set of consecutive registers
static int mt2060_writeregs(struct mt2060_priv *priv,u8 *buf, u8 len)
{
int rem, val_len;
- u8 xfer_buf[16];
+ u8 *xfer_buf;
+ int rc = 0;
struct i2c_msg msg = {
- .addr = priv->cfg->i2c_address, .flags = 0, .buf = xfer_buf
+ .addr = priv->cfg->i2c_address, .flags = 0
};
+ xfer_buf = kmalloc(16, GFP_KERNEL);
+ if (!xfer_buf)
+ return -ENOMEM;
+
+ msg.buf = xfer_buf;
+
for (rem = len - 1; rem > 0; rem -= priv->i2c_max_regs) {
val_len = min_t(int, rem, priv->i2c_max_regs);
msg.len = 1 + val_len;
@@ -81,11 +114,13 @@ static int mt2060_writeregs(struct mt2060_priv *priv,u8 *buf, u8 len)
if (i2c_transfer(priv->i2c, &msg, 1) != 1) {
printk(KERN_WARNING "mt2060 I2C write failed (len=%i)\n", val_len);
- return -EREMOTEIO;
+ rc = -EREMOTEIO;
+ break;
}
}
- return 0;
+ kfree(xfer_buf);
+ return rc;
}
// Initialisation sequences
diff --git a/drivers/media/tuners/mt2063.h b/drivers/media/tuners/mt2063.h
index e55e0a6dd1be..0e3e3b0525bb 100644
--- a/drivers/media/tuners/mt2063.h
+++ b/drivers/media/tuners/mt2063.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MT2063_H__
#define __MT2063_H__
diff --git a/drivers/media/usb/Makefile b/drivers/media/usb/Makefile
index 738b993ec8b0..21e46b10caa5 100644
--- a/drivers/media/usb/Makefile
+++ b/drivers/media/usb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the USB media device drivers
#
diff --git a/drivers/media/usb/as102/Makefile b/drivers/media/usb/as102/Makefile
index 22f43eee4a3b..56bd2d00b920 100644
--- a/drivers/media/usb/as102/Makefile
+++ b/drivers/media/usb/as102/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dvb-as102-objs := as102_drv.o as102_fw.o as10x_cmd.o as10x_cmd_stream.o \
as102_usb_drv.o as10x_cmd_cfg.o
diff --git a/drivers/media/usb/au0828/Makefile b/drivers/media/usb/au0828/Makefile
index 3dc7539a5c4e..c06ef6601f2d 100644
--- a/drivers/media/usb/au0828/Makefile
+++ b/drivers/media/usb/au0828/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
au0828-objs := au0828-core.o au0828-i2c.o au0828-cards.o au0828-dvb.o
ifeq ($(CONFIG_VIDEO_AU0828_V4L2),y)
diff --git a/drivers/media/usb/b2c2/flexcop-usb.h b/drivers/media/usb/b2c2/flexcop-usb.h
index 25ad43166e78..e86faa0e06ca 100644
--- a/drivers/media/usb/b2c2/flexcop-usb.h
+++ b/drivers/media/usb/b2c2/flexcop-usb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
* flexcop-usb.h - header file for the USB part
diff --git a/drivers/media/usb/cx231xx/Makefile b/drivers/media/usb/cx231xx/Makefile
index 52cf76935e69..19e8c35d6a77 100644
--- a/drivers/media/usb/cx231xx/Makefile
+++ b/drivers/media/usb/cx231xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
cx231xx-y += cx231xx-video.o cx231xx-i2c.o cx231xx-cards.o cx231xx-core.o
cx231xx-y += cx231xx-avcore.o cx231xx-417.o cx231xx-pcb-cfg.o cx231xx-vbi.o
cx231xx-$(CONFIG_VIDEO_CX231XX_RC) += cx231xx-input.o
diff --git a/drivers/media/usb/dvb-usb-v2/Makefile b/drivers/media/usb/dvb-usb-v2/Makefile
index 969f68e55265..bed44601f324 100644
--- a/drivers/media/usb/dvb-usb-v2/Makefile
+++ b/drivers/media/usb/dvb-usb-v2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dvb_usb_v2-objs := dvb_usb_core.o dvb_usb_urb.o usb_urb.o
obj-$(CONFIG_DVB_USB_V2) += dvb_usb_v2.o
diff --git a/drivers/media/usb/dvb-usb-v2/gl861.h b/drivers/media/usb/dvb-usb-v2/gl861.h
index b0b80d87bb7e..b651b857e034 100644
--- a/drivers/media/usb/dvb-usb-v2/gl861.h
+++ b/drivers/media/usb/dvb-usb-v2/gl861.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DVB_USB_GL861_H_
#define _DVB_USB_GL861_H_
diff --git a/drivers/media/usb/dvb-usb-v2/usb_urb.c b/drivers/media/usb/dvb-usb-v2/usb_urb.c
index 55136cde38f5..dce2b97efce4 100644
--- a/drivers/media/usb/dvb-usb-v2/usb_urb.c
+++ b/drivers/media/usb/dvb-usb-v2/usb_urb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* usb-urb.c is part of the DVB USB library.
*
* Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de)
diff --git a/drivers/media/usb/dvb-usb/Makefile b/drivers/media/usb/dvb-usb/Makefile
index 3b3f32b426d1..16de1e4f36a4 100644
--- a/drivers/media/usb/dvb-usb/Makefile
+++ b/drivers/media/usb/dvb-usb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
dvb-usb-objs += dvb-usb-firmware.o dvb-usb-init.o dvb-usb-urb.o dvb-usb-i2c.o
dvb-usb-objs += dvb-usb-dvb.o dvb-usb-remote.o usb-urb.o
obj-$(CONFIG_DVB_USB) += dvb-usb.o
diff --git a/drivers/media/usb/dvb-usb/af9005-script.h b/drivers/media/usb/dvb-usb/af9005-script.h
index 4d69045426dd..870cb59cd904 100644
--- a/drivers/media/usb/dvb-usb/af9005-script.h
+++ b/drivers/media/usb/dvb-usb/af9005-script.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
File automatically generated by createinit.py using data
extracted from AF05BDA.sys (windows driver):
diff --git a/drivers/media/usb/dvb-usb/az6027.h b/drivers/media/usb/dvb-usb/az6027.h
index f3afe17f3f3d..95b056b36030 100644
--- a/drivers/media/usb/dvb-usb/az6027.h
+++ b/drivers/media/usb/dvb-usb/az6027.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DVB_USB_VP6027_H_
#define _DVB_USB_VP6027_H_
diff --git a/drivers/media/usb/dvb-usb/cxusb.h b/drivers/media/usb/dvb-usb/cxusb.h
index 66429d7f69b5..88f9b9804b25 100644
--- a/drivers/media/usb/dvb-usb/cxusb.h
+++ b/drivers/media/usb/dvb-usb/cxusb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DVB_USB_CXUSB_H_
#define _DVB_USB_CXUSB_H_
diff --git a/drivers/media/usb/dvb-usb/dib07x0.h b/drivers/media/usb/dvb-usb/dib07x0.h
index 7e62c1018520..2e67f794fe37 100644
--- a/drivers/media/usb/dvb-usb/dib07x0.h
+++ b/drivers/media/usb/dvb-usb/dib07x0.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DIB07X0_H_
#define _DIB07X0_H_
diff --git a/drivers/media/usb/dvb-usb/digitv.h b/drivers/media/usb/dvb-usb/digitv.h
index 581e09c25491..2af9fedfad70 100644
--- a/drivers/media/usb/dvb-usb/digitv.h
+++ b/drivers/media/usb/dvb-usb/digitv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DVB_USB_DIGITV_H_
#define _DVB_USB_DIGITV_H_
diff --git a/drivers/media/usb/dvb-usb/dvb-usb-common.h b/drivers/media/usb/dvb-usb/dvb-usb-common.h
index 7e619d638809..8c51ac4493dd 100644
--- a/drivers/media/usb/dvb-usb/dvb-usb-common.h
+++ b/drivers/media/usb/dvb-usb/dvb-usb-common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* dvb-usb-common.h is part of the DVB USB library.
*
* Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@posteo.de)
diff --git a/drivers/media/usb/dvb-usb/dvb-usb-dvb.c b/drivers/media/usb/dvb-usb/dvb-usb-dvb.c
index e5675da286cb..3a66e732e0d8 100644
--- a/drivers/media/usb/dvb-usb/dvb-usb-dvb.c
+++ b/drivers/media/usb/dvb-usb/dvb-usb-dvb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* dvb-usb-dvb.c is part of the DVB USB library.
*
* Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de)
diff --git a/drivers/media/usb/dvb-usb/dvb-usb-firmware.c b/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
index 04033efe7ad5..15c153e49382 100644
--- a/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
+++ b/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* dvb-usb-firmware.c is part of the DVB USB library.
*
* Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de)
diff --git a/drivers/media/usb/dvb-usb/dvb-usb-i2c.c b/drivers/media/usb/dvb-usb/dvb-usb-i2c.c
index 4f0b0adce7f5..ca0b734e009b 100644
--- a/drivers/media/usb/dvb-usb/dvb-usb-i2c.c
+++ b/drivers/media/usb/dvb-usb/dvb-usb-i2c.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* dvb-usb-i2c.c is part of the DVB USB library.
*
* Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de)
diff --git a/drivers/media/usb/dvb-usb/dvb-usb-remote.c b/drivers/media/usb/dvb-usb/dvb-usb-remote.c
index 0b03f9bd9c26..701c10835482 100644
--- a/drivers/media/usb/dvb-usb/dvb-usb-remote.c
+++ b/drivers/media/usb/dvb-usb/dvb-usb-remote.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* dvb-usb-remote.c is part of the DVB USB library.
*
* Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de)
diff --git a/drivers/media/usb/dvb-usb/dvb-usb-urb.c b/drivers/media/usb/dvb-usb/dvb-usb-urb.c
index 95f9097498cb..c1b4e94a37f8 100644
--- a/drivers/media/usb/dvb-usb/dvb-usb-urb.c
+++ b/drivers/media/usb/dvb-usb/dvb-usb-urb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* dvb-usb-urb.c is part of the DVB USB library.
*
* Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de)
diff --git a/drivers/media/usb/dvb-usb/dvb-usb.h b/drivers/media/usb/dvb-usb/dvb-usb.h
index 72468fdffa18..6c7c4637530f 100644
--- a/drivers/media/usb/dvb-usb/dvb-usb.h
+++ b/drivers/media/usb/dvb-usb/dvb-usb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* dvb-usb.h is part of the DVB USB library.
*
* Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de)
diff --git a/drivers/media/usb/dvb-usb/dw2102.h b/drivers/media/usb/dvb-usb/dw2102.h
index 5cd0b0eb6ce1..f64cf79b7934 100644
--- a/drivers/media/usb/dvb-usb/dw2102.h
+++ b/drivers/media/usb/dvb-usb/dw2102.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DW2102_H_
#define _DW2102_H_
diff --git a/drivers/media/usb/dvb-usb/m920x.h b/drivers/media/usb/dvb-usb/m920x.h
index 3c061518ffc1..bab3c6ac7084 100644
--- a/drivers/media/usb/dvb-usb/m920x.h
+++ b/drivers/media/usb/dvb-usb/m920x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DVB_USB_M920X_H_
#define _DVB_USB_M920X_H_
diff --git a/drivers/media/usb/dvb-usb/usb-urb.c b/drivers/media/usb/dvb-usb/usb-urb.c
index 89173603be67..2804d2d0e83a 100644
--- a/drivers/media/usb/dvb-usb/usb-urb.c
+++ b/drivers/media/usb/dvb-usb/usb-urb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* usb-urb.c is part of the DVB USB library.
*
* Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de)
diff --git a/drivers/media/usb/dvb-usb/vp702x.h b/drivers/media/usb/dvb-usb/vp702x.h
index 20b90055e7ac..18ad7ced2045 100644
--- a/drivers/media/usb/dvb-usb/vp702x.h
+++ b/drivers/media/usb/dvb-usb/vp702x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DVB_USB_VP7021_H_
#define _DVB_USB_VP7021_H_
diff --git a/drivers/media/usb/em28xx/Makefile b/drivers/media/usb/em28xx/Makefile
index 3f850d5063d0..86bfc35e2ed4 100644
--- a/drivers/media/usb/em28xx/Makefile
+++ b/drivers/media/usb/em28xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
em28xx-y += em28xx-core.o em28xx-i2c.o em28xx-cards.o em28xx-camera.o
em28xx-v4l-objs := em28xx-video.o em28xx-vbi.o
diff --git a/drivers/media/usb/em28xx/em28xx-reg.h b/drivers/media/usb/em28xx/em28xx-reg.h
index 747525ca7ed5..9e5cdfb25a73 100644
--- a/drivers/media/usb/em28xx/em28xx-reg.h
+++ b/drivers/media/usb/em28xx/em28xx-reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define EM_GPIO_0 (1 << 0)
#define EM_GPIO_1 (1 << 1)
#define EM_GPIO_2 (1 << 2)
diff --git a/drivers/media/usb/go7007/Makefile b/drivers/media/usb/go7007/Makefile
index e99287c3b828..3d95bbc4192c 100644
--- a/drivers/media/usb/go7007/Makefile
+++ b/drivers/media/usb/go7007/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VIDEO_GO7007) += go7007.o
obj-$(CONFIG_VIDEO_GO7007_USB) += go7007-usb.o
obj-$(CONFIG_VIDEO_GO7007_LOADER) += go7007-loader.o
diff --git a/drivers/media/usb/gspca/Makefile b/drivers/media/usb/gspca/Makefile
index 9f5ccecb9c8a..3e3ecbffdf9f 100644
--- a/drivers/media/usb/gspca/Makefile
+++ b/drivers/media/usb/gspca/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_USB_GSPCA) += gspca_main.o
obj-$(CONFIG_USB_GSPCA_BENQ) += gspca_benq.o
obj-$(CONFIG_USB_GSPCA_CONEX) += gspca_conex.o
diff --git a/drivers/media/usb/gspca/gl860/Makefile b/drivers/media/usb/gspca/gl860/Makefile
index cf6397415aad..7bcfa36f12ac 100644
--- a/drivers/media/usb/gspca/gl860/Makefile
+++ b/drivers/media/usb/gspca/gl860/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_USB_GL860) += gspca_gl860.o
gspca_gl860-objs := gl860.o \
diff --git a/drivers/media/usb/gspca/gspca.h b/drivers/media/usb/gspca/gspca.h
index d39adf90303b..9e0cf711642b 100644
--- a/drivers/media/usb/gspca/gspca.h
+++ b/drivers/media/usb/gspca/gspca.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef GSPCAV2_H
#define GSPCAV2_H
diff --git a/drivers/media/usb/gspca/m5602/Makefile b/drivers/media/usb/gspca/m5602/Makefile
index 8e1fb5a1d2a1..95c9db6dc59c 100644
--- a/drivers/media/usb/gspca/m5602/Makefile
+++ b/drivers/media/usb/gspca/m5602/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_USB_M5602) += gspca_m5602.o
gspca_m5602-objs := m5602_core.o \
diff --git a/drivers/media/usb/gspca/stv06xx/Makefile b/drivers/media/usb/gspca/stv06xx/Makefile
index 3a4b2f899049..c4d7206e0c92 100644
--- a/drivers/media/usb/gspca/stv06xx/Makefile
+++ b/drivers/media/usb/gspca/stv06xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_USB_STV06XX) += gspca_stv06xx.o
gspca_stv06xx-objs := stv06xx.o \
diff --git a/drivers/media/usb/pvrusb2/Makefile b/drivers/media/usb/pvrusb2/Makefile
index ad705547bdce..0d84064036b2 100644
--- a/drivers/media/usb/pvrusb2/Makefile
+++ b/drivers/media/usb/pvrusb2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-pvrusb2-sysfs-$(CONFIG_VIDEO_PVRUSB2_SYSFS) := pvrusb2-sysfs.o
obj-pvrusb2-debugifc-$(CONFIG_VIDEO_PVRUSB2_DEBUGIFC) := pvrusb2-debugifc.o
obj-pvrusb2-dvb-$(CONFIG_VIDEO_PVRUSB2_DVB) := pvrusb2-dvb.o
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-dvb.h b/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
index 884ff916a352..b500c86d4178 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
+++ b/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PVRUSB2_DVB_H__
#define __PVRUSB2_DVB_H__
diff --git a/drivers/media/usb/pwc/pwc-nala.h b/drivers/media/usb/pwc/pwc-nala.h
index 168c73ef75d8..0fe9d473f4e9 100644
--- a/drivers/media/usb/pwc/pwc-nala.h
+++ b/drivers/media/usb/pwc/pwc-nala.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* SQCIF */
{
{0, 0, {0x04, 0x01, 0x03}},
diff --git a/drivers/media/usb/stk1160/Makefile b/drivers/media/usb/stk1160/Makefile
index 42d05463b353..613471528749 100644
--- a/drivers/media/usb/stk1160/Makefile
+++ b/drivers/media/usb/stk1160/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
stk1160-y := stk1160-core.o \
stk1160-v4l.o \
stk1160-video.o \
diff --git a/drivers/media/usb/tm6000/Makefile b/drivers/media/usb/tm6000/Makefile
index f2644933b8d1..05322a72e862 100644
--- a/drivers/media/usb/tm6000/Makefile
+++ b/drivers/media/usb/tm6000/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
tm6000-y := tm6000-cards.o \
tm6000-core.o \
tm6000-i2c.o \
diff --git a/drivers/media/usb/usbvision/usbvision-cards.h b/drivers/media/usb/usbvision/usbvision-cards.h
index a51cc1185cce..07ec83512743 100644
--- a/drivers/media/usb/usbvision/usbvision-cards.h
+++ b/drivers/media/usb/usbvision/usbvision-cards.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define XANBOO 0
#define BELKIN_VIDEOBUS_II 1
#define BELKIN_VIDEOBUS 2
diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile
index c26d12fdb8f4..a4fe5b5d533f 100644
--- a/drivers/media/usb/uvc/Makefile
+++ b/drivers/media/usb/uvc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o \
uvc_status.o uvc_isight.o uvc_debugfs.o
ifeq ($(CONFIG_MEDIA_CONTROLLER),y)
diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
index 34c7ee6cc9e5..05398784d1c8 100644
--- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _USB_VIDEO_H_
#define _USB_VIDEO_H_
diff --git a/drivers/media/v4l2-core/Makefile b/drivers/media/v4l2-core/Makefile
index 098ad5fd5231..77303286aef7 100644
--- a/drivers/media/v4l2-core/Makefile
+++ b/drivers/media/v4l2-core/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the V4L2 core
#
diff --git a/drivers/media/v4l2-core/v4l2-trace.c b/drivers/media/v4l2-core/v4l2-trace.c
index 7416010542c1..95f3b02e1f84 100644
--- a/drivers/media/v4l2-core/v4l2-trace.c
+++ b/drivers/media/v4l2-core/v4l2-trace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <media/v4l2-common.h>
#include <media/v4l2-fh.h>
#include <media/videobuf2-v4l2.h>
diff --git a/drivers/media/v4l2-core/vb2-trace.c b/drivers/media/v4l2-core/vb2-trace.c
index 61e74f5936b3..4c0f39d271f0 100644
--- a/drivers/media/v4l2-core/vb2-trace.c
+++ b/drivers/media/v4l2-core/vb2-trace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <media/videobuf2-core.h>
#define CREATE_TRACE_POINTS
diff --git a/drivers/memory/Makefile b/drivers/memory/Makefile
index e88097fbc085..470b93e3858d 100644
--- a/drivers/memory/Makefile
+++ b/drivers/memory/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for memory devices
#
diff --git a/drivers/memory/tegra/Makefile b/drivers/memory/tegra/Makefile
index c2cb671ffc4a..b44e8627a5e0 100644
--- a/drivers/memory/tegra/Makefile
+++ b/drivers/memory/tegra/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
tegra-mc-y := mc.o
tegra-mc-$(CONFIG_ARCH_TEGRA_3x_SOC) += tegra30.o
diff --git a/drivers/memstick/host/Makefile b/drivers/memstick/host/Makefile
index 491c9557441d..1abaa03ee68c 100644
--- a/drivers/memstick/host/Makefile
+++ b/drivers/memstick/host/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for MemoryStick host controller drivers
#
diff --git a/drivers/message/fusion/Makefile b/drivers/message/fusion/Makefile
index d182a24b3195..e2d98b5c6f98 100644
--- a/drivers/message/fusion/Makefile
+++ b/drivers/message/fusion/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Fusion MPT drivers; recognized debug defines...
# enable verbose logging
diff --git a/drivers/message/fusion/lsi/mpi.h b/drivers/message/fusion/lsi/mpi.h
index 11c0f461320e..a575545d681f 100644
--- a/drivers/message/fusion/lsi/mpi.h
+++ b/drivers/message/fusion/lsi/mpi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2000-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/lsi/mpi_cnfg.h b/drivers/message/fusion/lsi/mpi_cnfg.h
index d9bcfba6b049..4e9c0ce94f27 100644
--- a/drivers/message/fusion/lsi/mpi_cnfg.h
+++ b/drivers/message/fusion/lsi/mpi_cnfg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2000-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/lsi/mpi_fc.h b/drivers/message/fusion/lsi/mpi_fc.h
index 7d663ce76f8c..bdea95e0cde2 100644
--- a/drivers/message/fusion/lsi/mpi_fc.h
+++ b/drivers/message/fusion/lsi/mpi_fc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2000-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/lsi/mpi_init.h b/drivers/message/fusion/lsi/mpi_init.h
index 4295d062caa7..bc6326ff2f22 100644
--- a/drivers/message/fusion/lsi/mpi_init.h
+++ b/drivers/message/fusion/lsi/mpi_init.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2000-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/lsi/mpi_ioc.h b/drivers/message/fusion/lsi/mpi_ioc.h
index 19fb21b8f0ce..c249f2994fc1 100644
--- a/drivers/message/fusion/lsi/mpi_ioc.h
+++ b/drivers/message/fusion/lsi/mpi_ioc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2000-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/lsi/mpi_lan.h b/drivers/message/fusion/lsi/mpi_lan.h
index f41fcb69b359..d06f9928684a 100644
--- a/drivers/message/fusion/lsi/mpi_lan.h
+++ b/drivers/message/fusion/lsi/mpi_lan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2000-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/lsi/mpi_log_fc.h b/drivers/message/fusion/lsi/mpi_log_fc.h
index 03be8b217709..f1e75dd5dd58 100644
--- a/drivers/message/fusion/lsi/mpi_log_fc.h
+++ b/drivers/message/fusion/lsi/mpi_log_fc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2000-2008 LSI Corporation. All rights reserved.
*
diff --git a/drivers/message/fusion/lsi/mpi_log_sas.h b/drivers/message/fusion/lsi/mpi_log_sas.h
index f62960b5d527..27fe17a75eaa 100644
--- a/drivers/message/fusion/lsi/mpi_log_sas.h
+++ b/drivers/message/fusion/lsi/mpi_log_sas.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/***************************************************************************
* *
* Copyright (c) 2000-2008 LSI Corporation. All rights reserved. *
diff --git a/drivers/message/fusion/lsi/mpi_raid.h b/drivers/message/fusion/lsi/mpi_raid.h
index add60cc85be1..36688a921ef2 100644
--- a/drivers/message/fusion/lsi/mpi_raid.h
+++ b/drivers/message/fusion/lsi/mpi_raid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2001-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/lsi/mpi_sas.h b/drivers/message/fusion/lsi/mpi_sas.h
index ab410036bbfc..56013f288aaa 100644
--- a/drivers/message/fusion/lsi/mpi_sas.h
+++ b/drivers/message/fusion/lsi/mpi_sas.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2004-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/lsi/mpi_targ.h b/drivers/message/fusion/lsi/mpi_targ.h
index c3dea7f6909d..97e6eead6cb4 100644
--- a/drivers/message/fusion/lsi/mpi_targ.h
+++ b/drivers/message/fusion/lsi/mpi_targ.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2000-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/lsi/mpi_tool.h b/drivers/message/fusion/lsi/mpi_tool.h
index 53cd715aa7e4..b11456fb8277 100644
--- a/drivers/message/fusion/lsi/mpi_tool.h
+++ b/drivers/message/fusion/lsi/mpi_tool.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2001-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/lsi/mpi_type.h b/drivers/message/fusion/lsi/mpi_type.h
index 888b26dbc413..073e637cfdb4 100644
--- a/drivers/message/fusion/lsi/mpi_type.h
+++ b/drivers/message/fusion/lsi/mpi_type.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2000-2008 LSI Corporation.
*
diff --git a/drivers/message/fusion/mptdebug.h b/drivers/message/fusion/mptdebug.h
index 28e478879284..2205dcab0adb 100644
--- a/drivers/message/fusion/mptdebug.h
+++ b/drivers/message/fusion/mptdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/drivers/message/fusion/mptdebug.h
* For use with LSI PCI chip/adapter(s)
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index c3d0a1b39bb6..8703ff17998e 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for multifunction miscellaneous devices
#
diff --git a/drivers/mfd/kempld-core.c b/drivers/mfd/kempld-core.c
index 895f655780a7..55d824b3a808 100644
--- a/drivers/mfd/kempld-core.c
+++ b/drivers/mfd/kempld-core.c
@@ -494,7 +494,7 @@ static struct platform_driver kempld_driver = {
.remove = kempld_remove,
};
-static struct dmi_system_id kempld_dmi_table[] __initdata = {
+static const struct dmi_system_id kempld_dmi_table[] __initconst = {
{
.ident = "BBD6",
.matches = {
diff --git a/drivers/mfd/twl-core.h b/drivers/mfd/twl-core.h
index 6ff99dce714f..6f96c2009a9f 100644
--- a/drivers/mfd/twl-core.h
+++ b/drivers/mfd/twl-core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __TWL_CORE_H__
#define __TWL_CORE_H__
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index d84819dc2468..ad0e64fdba34 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for misc devices that really don't fit anywhere else.
#
diff --git a/drivers/misc/cxl/Makefile b/drivers/misc/cxl/Makefile
index 0b5fd749d96d..502d41fc9ea5 100644
--- a/drivers/misc/cxl/Makefile
+++ b/drivers/misc/cxl/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := $(call cc-disable-warning, unused-const-variable)
ccflags-$(CONFIG_PPC_WERROR) += -Werror
diff --git a/drivers/misc/cxl/cxllib.c b/drivers/misc/cxl/cxllib.c
index 5dba23ca2e5f..dc9bc1807fdf 100644
--- a/drivers/misc/cxl/cxllib.c
+++ b/drivers/misc/cxl/cxllib.c
@@ -219,8 +219,17 @@ int cxllib_handle_fault(struct mm_struct *mm, u64 addr, u64 size, u64 flags)
down_read(&mm->mmap_sem);
- for (dar = addr; dar < addr + size; dar += page_size) {
- if (!vma || dar < vma->vm_start || dar > vma->vm_end) {
+ vma = find_vma(mm, addr);
+ if (!vma) {
+ pr_err("Can't find vma for addr %016llx\n", addr);
+ rc = -EFAULT;
+ goto out;
+ }
+ /* get the size of the pages allocated */
+ page_size = vma_kernel_pagesize(vma);
+
+ for (dar = (addr & ~(page_size - 1)); dar < (addr + size); dar += page_size) {
+ if (dar < vma->vm_start || dar >= vma->vm_end) {
vma = find_vma(mm, addr);
if (!vma) {
pr_err("Can't find vma for addr %016llx\n", addr);
diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
index 3aa216bf0939..43917898fb9a 100644
--- a/drivers/misc/cxl/flash.c
+++ b/drivers/misc/cxl/flash.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/semaphore.h>
diff --git a/drivers/misc/cxl/pci.c b/drivers/misc/cxl/pci.c
index d18b3d9292fd..3ba04f371380 100644
--- a/drivers/misc/cxl/pci.c
+++ b/drivers/misc/cxl/pci.c
@@ -1279,7 +1279,7 @@ ssize_t cxl_pci_afu_read_err_buffer(struct cxl_afu *afu, char *buf,
}
/* use bounce buffer for copy */
- tbuf = (void *)__get_free_page(GFP_TEMPORARY);
+ tbuf = (void *)__get_free_page(GFP_KERNEL);
if (!tbuf)
return -ENOMEM;
diff --git a/drivers/misc/eeprom/Makefile b/drivers/misc/eeprom/Makefile
index 90a52624ddeb..2aab60ef3e3e 100644
--- a/drivers/misc/eeprom/Makefile
+++ b/drivers/misc/eeprom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_EEPROM_AT24) += at24.o
obj-$(CONFIG_EEPROM_AT25) += at25.o
obj-$(CONFIG_EEPROM_LEGACY) += eeprom.o
diff --git a/drivers/misc/ibmasm/Makefile b/drivers/misc/ibmasm/Makefile
index 9e63ade5ffd6..1b9dd0f44411 100644
--- a/drivers/misc/ibmasm/Makefile
+++ b/drivers/misc/ibmasm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_IBM_ASM) := ibmasm.o
diff --git a/drivers/misc/lkdtm.h b/drivers/misc/lkdtm.h
index bfb6c45b6130..687a0dbbe199 100644
--- a/drivers/misc/lkdtm.h
+++ b/drivers/misc/lkdtm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LKDTM_H
#define __LKDTM_H
diff --git a/drivers/misc/lkdtm_bugs.c b/drivers/misc/lkdtm_bugs.c
index 9e0b4f959987..b0f7af872bb5 100644
--- a/drivers/misc/lkdtm_bugs.c
+++ b/drivers/misc/lkdtm_bugs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This is for all the tests related to logic bugs (e.g. bad dereferences,
* bad alignment, bad loops, bad locking, bad scheduling, deep stacks, and
diff --git a/drivers/misc/lkdtm_heap.c b/drivers/misc/lkdtm_heap.c
index ffb6aeac07b3..f5494a6d4be5 100644
--- a/drivers/misc/lkdtm_heap.c
+++ b/drivers/misc/lkdtm_heap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This is for all the tests relating directly to heap memory, including
* page allocation and slab allocations.
diff --git a/drivers/misc/lkdtm_perms.c b/drivers/misc/lkdtm_perms.c
index c7635a79341f..53b85c9d16b8 100644
--- a/drivers/misc/lkdtm_perms.c
+++ b/drivers/misc/lkdtm_perms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This is for all the tests related to validating kernel memory
* permissions: non-executable regions, non-writable regions, and
diff --git a/drivers/misc/lkdtm_rodata.c b/drivers/misc/lkdtm_rodata.c
index 3564477b8c2d..58d180af72cf 100644
--- a/drivers/misc/lkdtm_rodata.c
+++ b/drivers/misc/lkdtm_rodata.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This includes functions that are meant to live entirely in .rodata
* (via objcopy tricks), to validate the non-executability of .rodata.
diff --git a/drivers/misc/lkdtm_usercopy.c b/drivers/misc/lkdtm_usercopy.c
index df6ac985fbb5..a64372cc148d 100644
--- a/drivers/misc/lkdtm_usercopy.c
+++ b/drivers/misc/lkdtm_usercopy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This is for all the tests related to copy_to_user() and copy_from_user()
* hardening.
diff --git a/drivers/misc/mei/Makefile b/drivers/misc/mei/Makefile
index 12cceb011a23..cd6825afa8e1 100644
--- a/drivers/misc/mei/Makefile
+++ b/drivers/misc/mei/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile - Intel Management Engine Interface (Intel MEI) Linux driver
# Copyright (c) 2010-2014, Intel Corporation.
diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h
index c8307e8b4c16..0ccccbaf530d 100644
--- a/drivers/misc/mei/hw-me-regs.h
+++ b/drivers/misc/mei/hw-me-regs.h
@@ -127,6 +127,8 @@
#define MEI_DEV_ID_BXT_M 0x1A9A /* Broxton M */
#define MEI_DEV_ID_APL_I 0x5A9A /* Apollo Lake I */
+#define MEI_DEV_ID_GLK 0x319A /* Gemini Lake */
+
#define MEI_DEV_ID_KBP 0xA2BA /* Kaby Point */
#define MEI_DEV_ID_KBP_2 0xA2BB /* Kaby Point 2 */
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
index 4ff40d319676..78b3172c8e6e 100644
--- a/drivers/misc/mei/pci-me.c
+++ b/drivers/misc/mei/pci-me.c
@@ -93,6 +93,8 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
{MEI_PCI_DEVICE(MEI_DEV_ID_BXT_M, MEI_ME_PCH8_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_APL_I, MEI_ME_PCH8_CFG)},
+ {MEI_PCI_DEVICE(MEI_DEV_ID_GLK, MEI_ME_PCH8_CFG)},
+
{MEI_PCI_DEVICE(MEI_DEV_ID_KBP, MEI_ME_PCH8_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_KBP_2, MEI_ME_PCH8_CFG)},
@@ -226,12 +228,15 @@ static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
pdev->dev_flags |= PCI_DEV_FLAGS_NEEDS_RESUME;
/*
- * For not wake-able HW runtime pm framework
- * can't be used on pci device level.
- * Use domain runtime pm callbacks instead.
- */
- if (!pci_dev_run_wake(pdev))
- mei_me_set_pm_domain(dev);
+ * ME maps runtime suspend/resume to D0i states,
+ * hence we need to go around native PCI runtime service which
+ * eventually brings the device into D3cold/hot state,
+ * but the mei device cannot wake up from D3 unlike from D0i3.
+ * To get around the PCI device native runtime pm,
+ * ME uses runtime pm domain handlers which take precedence
+ * over the driver's pm handlers.
+ */
+ mei_me_set_pm_domain(dev);
if (mei_pg_is_enabled(dev))
pm_runtime_put_noidle(&pdev->dev);
@@ -271,8 +276,7 @@ static void mei_me_shutdown(struct pci_dev *pdev)
dev_dbg(&pdev->dev, "shutdown\n");
mei_stop(dev);
- if (!pci_dev_run_wake(pdev))
- mei_me_unset_pm_domain(dev);
+ mei_me_unset_pm_domain(dev);
mei_disable_interrupts(dev);
free_irq(pdev->irq, dev);
@@ -300,8 +304,7 @@ static void mei_me_remove(struct pci_dev *pdev)
dev_dbg(&pdev->dev, "stop\n");
mei_stop(dev);
- if (!pci_dev_run_wake(pdev))
- mei_me_unset_pm_domain(dev);
+ mei_me_unset_pm_domain(dev);
mei_disable_interrupts(dev);
diff --git a/drivers/misc/mei/pci-txe.c b/drivers/misc/mei/pci-txe.c
index e38a5f144373..0566f9bfa7de 100644
--- a/drivers/misc/mei/pci-txe.c
+++ b/drivers/misc/mei/pci-txe.c
@@ -144,12 +144,14 @@ static int mei_txe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
pdev->dev_flags |= PCI_DEV_FLAGS_NEEDS_RESUME;
/*
- * For not wake-able HW runtime pm framework
- * can't be used on pci device level.
- * Use domain runtime pm callbacks instead.
- */
- if (!pci_dev_run_wake(pdev))
- mei_txe_set_pm_domain(dev);
+ * TXE maps runtime suspend/resume to own power gating states,
+ * hence we need to go around native PCI runtime service which
+ * eventually brings the device into D3cold/hot state.
+ * But the TXE device cannot wake up from D3 unlike from own
+ * power gating. To get around PCI device native runtime pm,
+ * TXE uses runtime pm domain handlers which take precedence.
+ */
+ mei_txe_set_pm_domain(dev);
pm_runtime_put_noidle(&pdev->dev);
@@ -186,8 +188,7 @@ static void mei_txe_shutdown(struct pci_dev *pdev)
dev_dbg(&pdev->dev, "shutdown\n");
mei_stop(dev);
- if (!pci_dev_run_wake(pdev))
- mei_txe_unset_pm_domain(dev);
+ mei_txe_unset_pm_domain(dev);
mei_disable_interrupts(dev);
free_irq(pdev->irq, dev);
@@ -215,8 +216,7 @@ static void mei_txe_remove(struct pci_dev *pdev)
mei_stop(dev);
- if (!pci_dev_run_wake(pdev))
- mei_txe_unset_pm_domain(dev);
+ mei_txe_unset_pm_domain(dev);
mei_disable_interrupts(dev);
free_irq(pdev->irq, dev);
@@ -318,15 +318,7 @@ static int mei_txe_pm_runtime_suspend(struct device *device)
else
ret = -EAGAIN;
- /*
- * If everything is okay we're about to enter PCI low
- * power state (D3) therefor we need to disable the
- * interrupts towards host.
- * However if device is not wakeable we do not enter
- * D-low state and we need to keep the interrupt kicking
- */
- if (!ret && pci_dev_run_wake(pdev))
- mei_disable_interrupts(dev);
+ /* keep irq on we are staying in D0 */
dev_dbg(&pdev->dev, "rpm: txe: runtime suspend ret=%d\n", ret);
diff --git a/drivers/misc/mic/Makefile b/drivers/misc/mic/Makefile
index f2b1323ff96c..1a43622b183f 100644
--- a/drivers/misc/mic/Makefile
+++ b/drivers/misc/mic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile - Intel MIC Linux driver.
# Copyright(c) 2013, Intel Corporation.
diff --git a/drivers/misc/mic/card/Makefile b/drivers/misc/mic/card/Makefile
index 6e9675e12a09..921a7e7e0fbd 100644
--- a/drivers/misc/mic/card/Makefile
+++ b/drivers/misc/mic/card/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile - Intel MIC Linux driver.
# Copyright(c) 2013, Intel Corporation.
diff --git a/drivers/misc/mic/cosm/Makefile b/drivers/misc/mic/cosm/Makefile
index b85d4d49df46..97d74cb12030 100644
--- a/drivers/misc/mic/cosm/Makefile
+++ b/drivers/misc/mic/cosm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile - Intel MIC Coprocessor State Management (COSM) Driver
# Copyright(c) 2015, Intel Corporation.
diff --git a/drivers/misc/mic/host/Makefile b/drivers/misc/mic/host/Makefile
index f3b502333ded..25f153367980 100644
--- a/drivers/misc/mic/host/Makefile
+++ b/drivers/misc/mic/host/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile - Intel MIC Linux driver.
# Copyright(c) 2013, Intel Corporation.
diff --git a/drivers/misc/mic/scif/Makefile b/drivers/misc/mic/scif/Makefile
index 29cfc3e51ac9..ff372555d118 100644
--- a/drivers/misc/mic/scif/Makefile
+++ b/drivers/misc/mic/scif/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile - SCIF driver.
# Copyright(c) 2014, Intel Corporation.
diff --git a/drivers/misc/sgi-xp/Makefile b/drivers/misc/sgi-xp/Makefile
index 4fc40d8e1bcc..bbb622c19c06 100644
--- a/drivers/misc/sgi-xp/Makefile
+++ b/drivers/misc/sgi-xp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for SGI's XP devices.
#
diff --git a/drivers/mmc/core/Makefile b/drivers/mmc/core/Makefile
index 7e3ed1aeada2..abba078f7f49 100644
--- a/drivers/mmc/core/Makefile
+++ b/drivers/mmc/core/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel mmc core.
#
diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
index 29fc1e662891..2ad7b5c69156 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -1634,8 +1634,6 @@ static void mmc_blk_data_prep(struct mmc_queue *mq, struct mmc_queue_req *mqrq,
}
mqrq->areq.mrq = &brq->mrq;
-
- mmc_queue_bounce_pre(mqrq);
}
static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
@@ -1829,7 +1827,6 @@ static void mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *new_req)
brq = &mq_rq->brq;
old_req = mmc_queue_req_to_req(mq_rq);
type = rq_data_dir(old_req) == READ ? MMC_BLK_READ : MMC_BLK_WRITE;
- mmc_queue_bounce_post(mq_rq);
switch (status) {
case MMC_BLK_SUCCESS:
diff --git a/drivers/mmc/core/block.h b/drivers/mmc/core/block.h
index 860ca7c8df86..5946636101ef 100644
--- a/drivers/mmc/core/block.h
+++ b/drivers/mmc/core/block.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MMC_CORE_BLOCK_H
#define _MMC_CORE_BLOCK_H
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index a7eb623f8daa..36217ad5e9b1 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1286,6 +1286,23 @@ out_err:
return err;
}
+static void mmc_select_driver_type(struct mmc_card *card)
+{
+ int card_drv_type, drive_strength, drv_type;
+
+ card_drv_type = card->ext_csd.raw_driver_strength |
+ mmc_driver_type_mask(0);
+
+ drive_strength = mmc_select_drive_strength(card,
+ card->ext_csd.hs200_max_dtr,
+ card_drv_type, &drv_type);
+
+ card->drive_strength = drive_strength;
+
+ if (drv_type)
+ mmc_set_driver_type(card->host, drv_type);
+}
+
static int mmc_select_hs400es(struct mmc_card *card)
{
struct mmc_host *host = card->host;
@@ -1341,6 +1358,8 @@ static int mmc_select_hs400es(struct mmc_card *card)
goto out_err;
}
+ mmc_select_driver_type(card);
+
/* Switch card to HS400 */
val = EXT_CSD_TIMING_HS400 |
card->drive_strength << EXT_CSD_DRV_STR_SHIFT;
@@ -1374,23 +1393,6 @@ out_err:
return err;
}
-static void mmc_select_driver_type(struct mmc_card *card)
-{
- int card_drv_type, drive_strength, drv_type;
-
- card_drv_type = card->ext_csd.raw_driver_strength |
- mmc_driver_type_mask(0);
-
- drive_strength = mmc_select_drive_strength(card,
- card->ext_csd.hs200_max_dtr,
- card_drv_type, &drv_type);
-
- card->drive_strength = drive_strength;
-
- if (drv_type)
- mmc_set_driver_type(card->host, drv_type);
-}
-
/*
* For device supporting HS200 mode, the following sequence
* should be done before executing the tuning process.
diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c
index affa7370ba82..0a4e77a5ba33 100644
--- a/drivers/mmc/core/queue.c
+++ b/drivers/mmc/core/queue.c
@@ -23,8 +23,6 @@
#include "core.h"
#include "card.h"
-#define MMC_QUEUE_BOUNCESZ 65536
-
/*
* Prepare a MMC request. This just filters out odd stuff.
*/
@@ -150,26 +148,6 @@ static void mmc_queue_setup_discard(struct request_queue *q,
queue_flag_set_unlocked(QUEUE_FLAG_SECERASE, q);
}
-static unsigned int mmc_queue_calc_bouncesz(struct mmc_host *host)
-{
- unsigned int bouncesz = MMC_QUEUE_BOUNCESZ;
-
- if (host->max_segs != 1 || (host->caps & MMC_CAP_NO_BOUNCE_BUFF))
- return 0;
-
- if (bouncesz > host->max_req_size)
- bouncesz = host->max_req_size;
- if (bouncesz > host->max_seg_size)
- bouncesz = host->max_seg_size;
- if (bouncesz > host->max_blk_count * 512)
- bouncesz = host->max_blk_count * 512;
-
- if (bouncesz <= 512)
- return 0;
-
- return bouncesz;
-}
-
/**
* mmc_init_request() - initialize the MMC-specific per-request data
* @q: the request queue
@@ -184,26 +162,9 @@ static int mmc_init_request(struct request_queue *q, struct request *req,
struct mmc_card *card = mq->card;
struct mmc_host *host = card->host;
- if (card->bouncesz) {
- mq_rq->bounce_buf = kmalloc(card->bouncesz, gfp);
- if (!mq_rq->bounce_buf)
- return -ENOMEM;
- if (card->bouncesz > 512) {
- mq_rq->sg = mmc_alloc_sg(1, gfp);
- if (!mq_rq->sg)
- return -ENOMEM;
- mq_rq->bounce_sg = mmc_alloc_sg(card->bouncesz / 512,
- gfp);
- if (!mq_rq->bounce_sg)
- return -ENOMEM;
- }
- } else {
- mq_rq->bounce_buf = NULL;
- mq_rq->bounce_sg = NULL;
- mq_rq->sg = mmc_alloc_sg(host->max_segs, gfp);
- if (!mq_rq->sg)
- return -ENOMEM;
- }
+ mq_rq->sg = mmc_alloc_sg(host->max_segs, gfp);
+ if (!mq_rq->sg)
+ return -ENOMEM;
return 0;
}
@@ -212,13 +173,6 @@ static void mmc_exit_request(struct request_queue *q, struct request *req)
{
struct mmc_queue_req *mq_rq = req_to_mmc_queue_req(req);
- /* It is OK to kfree(NULL) so this will be smooth */
- kfree(mq_rq->bounce_sg);
- mq_rq->bounce_sg = NULL;
-
- kfree(mq_rq->bounce_buf);
- mq_rq->bounce_buf = NULL;
-
kfree(mq_rq->sg);
mq_rq->sg = NULL;
}
@@ -265,18 +219,11 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card,
if (mmc_can_erase(card))
mmc_queue_setup_discard(mq->queue, card);
- card->bouncesz = mmc_queue_calc_bouncesz(host);
- if (card->bouncesz) {
- blk_queue_max_hw_sectors(mq->queue, card->bouncesz / 512);
- blk_queue_max_segments(mq->queue, card->bouncesz / 512);
- blk_queue_max_segment_size(mq->queue, card->bouncesz);
- } else {
- blk_queue_bounce_limit(mq->queue, limit);
- blk_queue_max_hw_sectors(mq->queue,
- min(host->max_blk_count, host->max_req_size / 512));
- blk_queue_max_segments(mq->queue, host->max_segs);
- blk_queue_max_segment_size(mq->queue, host->max_seg_size);
- }
+ blk_queue_bounce_limit(mq->queue, limit);
+ blk_queue_max_hw_sectors(mq->queue,
+ min(host->max_blk_count, host->max_req_size / 512));
+ blk_queue_max_segments(mq->queue, host->max_segs);
+ blk_queue_max_segment_size(mq->queue, host->max_seg_size);
sema_init(&mq->thread_sem, 1);
@@ -365,56 +312,7 @@ void mmc_queue_resume(struct mmc_queue *mq)
*/
unsigned int mmc_queue_map_sg(struct mmc_queue *mq, struct mmc_queue_req *mqrq)
{
- unsigned int sg_len;
- size_t buflen;
- struct scatterlist *sg;
struct request *req = mmc_queue_req_to_req(mqrq);
- int i;
-
- if (!mqrq->bounce_buf)
- return blk_rq_map_sg(mq->queue, req, mqrq->sg);
-
- sg_len = blk_rq_map_sg(mq->queue, req, mqrq->bounce_sg);
-
- mqrq->bounce_sg_len = sg_len;
-
- buflen = 0;
- for_each_sg(mqrq->bounce_sg, sg, sg_len, i)
- buflen += sg->length;
-
- sg_init_one(mqrq->sg, mqrq->bounce_buf, buflen);
-
- return 1;
-}
-
-/*
- * If writing, bounce the data to the buffer before the request
- * is sent to the host driver
- */
-void mmc_queue_bounce_pre(struct mmc_queue_req *mqrq)
-{
- if (!mqrq->bounce_buf)
- return;
-
- if (rq_data_dir(mmc_queue_req_to_req(mqrq)) != WRITE)
- return;
-
- sg_copy_to_buffer(mqrq->bounce_sg, mqrq->bounce_sg_len,
- mqrq->bounce_buf, mqrq->sg[0].length);
-}
-
-/*
- * If reading, bounce the data from the buffer after the request
- * has been handled by the host driver
- */
-void mmc_queue_bounce_post(struct mmc_queue_req *mqrq)
-{
- if (!mqrq->bounce_buf)
- return;
-
- if (rq_data_dir(mmc_queue_req_to_req(mqrq)) != READ)
- return;
- sg_copy_from_buffer(mqrq->bounce_sg, mqrq->bounce_sg_len,
- mqrq->bounce_buf, mqrq->sg[0].length);
+ return blk_rq_map_sg(mq->queue, req, mqrq->sg);
}
diff --git a/drivers/mmc/core/queue.h b/drivers/mmc/core/queue.h
index 04fc89360a7a..6bfba32ffa66 100644
--- a/drivers/mmc/core/queue.h
+++ b/drivers/mmc/core/queue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef MMC_QUEUE_H
#define MMC_QUEUE_H
@@ -49,9 +50,6 @@ enum mmc_drv_op {
struct mmc_queue_req {
struct mmc_blk_request brq;
struct scatterlist *sg;
- char *bounce_buf;
- struct scatterlist *bounce_sg;
- unsigned int bounce_sg_len;
struct mmc_async_req areq;
enum mmc_drv_op drv_op;
int drv_op_result;
@@ -81,11 +79,8 @@ extern int mmc_init_queue(struct mmc_queue *, struct mmc_card *, spinlock_t *,
extern void mmc_cleanup_queue(struct mmc_queue *);
extern void mmc_queue_suspend(struct mmc_queue *);
extern void mmc_queue_resume(struct mmc_queue *);
-
extern unsigned int mmc_queue_map_sg(struct mmc_queue *,
struct mmc_queue_req *);
-extern void mmc_queue_bounce_pre(struct mmc_queue_req *);
-extern void mmc_queue_bounce_post(struct mmc_queue_req *);
extern int mmc_access_rpmb(struct mmc_queue *);
diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h
index fb725934fa21..f664e9cbc9f8 100644
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains work-arounds for many known SD/MMC
* and SDIO hardware bugs.
diff --git a/drivers/mmc/core/sd.h b/drivers/mmc/core/sd.h
index 1ada9808c329..497c026a5c5a 100644
--- a/drivers/mmc/core/sd.h
+++ b/drivers/mmc/core/sd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MMC_CORE_SD_H
#define _MMC_CORE_SD_H
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 02179ed2a40d..8c15637178ff 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -5,7 +5,7 @@
comment "MMC/SD/SDIO Host Controller Drivers"
config MMC_DEBUG
- bool "MMC host drivers debugginG"
+ bool "MMC host drivers debugging"
depends on MMC != n
help
This is an option for use by developers; most people should
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index 303f5cd46cd9..7c7b29ff591a 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for MMC/SD host controller drivers
#
diff --git a/drivers/mmc/host/cavium-thunderx.c b/drivers/mmc/host/cavium-thunderx.c
index b9cc95998799..eee08d81b242 100644
--- a/drivers/mmc/host/cavium-thunderx.c
+++ b/drivers/mmc/host/cavium-thunderx.c
@@ -7,6 +7,7 @@
*
* Copyright (C) 2016 Cavium Inc.
*/
+#include <linux/device.h>
#include <linux/dma-mapping.h>
#include <linux/interrupt.h>
#include <linux/mmc/mmc.h>
@@ -149,8 +150,11 @@ error:
for (i = 0; i < CAVIUM_MAX_MMC; i++) {
if (host->slot[i])
cvm_mmc_of_slot_remove(host->slot[i]);
- if (host->slot_pdev[i])
+ if (host->slot_pdev[i]) {
+ get_device(&host->slot_pdev[i]->dev);
of_platform_device_destroy(&host->slot_pdev[i]->dev, NULL);
+ put_device(&host->slot_pdev[i]->dev);
+ }
}
clk_disable_unprepare(host->clk);
return ret;
diff --git a/drivers/mmc/host/cavium.c b/drivers/mmc/host/cavium.c
index 27fb625cbcf3..fbd29f00fca0 100644
--- a/drivers/mmc/host/cavium.c
+++ b/drivers/mmc/host/cavium.c
@@ -1038,7 +1038,7 @@ int cvm_mmc_of_slot_probe(struct device *dev, struct cvm_mmc_host *host)
*/
mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED |
MMC_CAP_ERASE | MMC_CAP_CMD23 | MMC_CAP_POWER_OFF_CARD |
- MMC_CAP_3_3V_DDR | MMC_CAP_NO_BOUNCE_BUFF;
+ MMC_CAP_3_3V_DDR;
if (host->use_sg)
mmc->max_segs = 16;
diff --git a/drivers/mmc/host/dw_mmc-zx.h b/drivers/mmc/host/dw_mmc-zx.h
index f369997a39ec..09ac52766f14 100644
--- a/drivers/mmc/host/dw_mmc-zx.h
+++ b/drivers/mmc/host/dw_mmc-zx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DW_MMC_ZX_H_
#define _DW_MMC_ZX_H_
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 860313bd952a..4f2806720c5c 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -401,16 +401,37 @@ static u32 dw_mci_prep_stop_abort(struct dw_mci *host, struct mmc_command *cmd)
static inline void dw_mci_set_cto(struct dw_mci *host)
{
unsigned int cto_clks;
+ unsigned int cto_div;
unsigned int cto_ms;
+ unsigned long irqflags;
cto_clks = mci_readl(host, TMOUT) & 0xff;
- cto_ms = DIV_ROUND_UP(cto_clks, host->bus_hz / 1000);
+ cto_div = (mci_readl(host, CLKDIV) & 0xff) * 2;
+ if (cto_div == 0)
+ cto_div = 1;
+ cto_ms = DIV_ROUND_UP(MSEC_PER_SEC * cto_clks * cto_div, host->bus_hz);
/* add a bit spare time */
cto_ms += 10;
- mod_timer(&host->cto_timer,
- jiffies + msecs_to_jiffies(cto_ms) + 1);
+ /*
+ * The durations we're working with are fairly short so we have to be
+ * extra careful about synchronization here. Specifically in hardware a
+ * command timeout is _at most_ 5.1 ms, so that means we expect an
+ * interrupt (either command done or timeout) to come rather quickly
+ * after the mci_writel. ...but just in case we have a long interrupt
+ * latency let's add a bit of paranoia.
+ *
+ * In general we'll assume that at least an interrupt will be asserted
+ * in hardware by the time the cto_timer runs. ...and if it hasn't
+ * been asserted in hardware by that time then we'll assume it'll never
+ * come.
+ */
+ spin_lock_irqsave(&host->irq_lock, irqflags);
+ if (!test_bit(EVENT_CMD_COMPLETE, &host->pending_events))
+ mod_timer(&host->cto_timer,
+ jiffies + msecs_to_jiffies(cto_ms) + 1);
+ spin_unlock_irqrestore(&host->irq_lock, irqflags);
}
static void dw_mci_start_command(struct dw_mci *host,
@@ -425,11 +446,11 @@ static void dw_mci_start_command(struct dw_mci *host,
wmb(); /* drain writebuffer */
dw_mci_wait_while_busy(host, cmd_flags);
+ mci_writel(host, CMD, cmd_flags | SDMMC_CMD_START);
+
/* response expected command only */
if (cmd_flags & SDMMC_CMD_RESP_EXP)
dw_mci_set_cto(host);
-
- mci_writel(host, CMD, cmd_flags | SDMMC_CMD_START);
}
static inline void send_stop_abort(struct dw_mci *host, struct mmc_data *data)
@@ -1915,10 +1936,15 @@ static int dw_mci_data_complete(struct dw_mci *host, struct mmc_data *data)
static void dw_mci_set_drto(struct dw_mci *host)
{
unsigned int drto_clks;
+ unsigned int drto_div;
unsigned int drto_ms;
drto_clks = mci_readl(host, TMOUT) >> 8;
- drto_ms = DIV_ROUND_UP(drto_clks, host->bus_hz / 1000);
+ drto_div = (mci_readl(host, CLKDIV) & 0xff) * 2;
+ if (drto_div == 0)
+ drto_div = 1;
+ drto_ms = DIV_ROUND_UP(MSEC_PER_SEC * drto_clks * drto_div,
+ host->bus_hz);
/* add a bit spare time */
drto_ms += 10;
@@ -1926,6 +1952,24 @@ static void dw_mci_set_drto(struct dw_mci *host)
mod_timer(&host->dto_timer, jiffies + msecs_to_jiffies(drto_ms));
}
+static bool dw_mci_clear_pending_cmd_complete(struct dw_mci *host)
+{
+ if (!test_bit(EVENT_CMD_COMPLETE, &host->pending_events))
+ return false;
+
+ /*
+ * Really be certain that the timer has stopped. This is a bit of
+ * paranoia and could only really happen if we had really bad
+ * interrupt latency and the interrupt routine and timeout were
+ * running concurrently so that the del_timer() in the interrupt
+ * handler couldn't run.
+ */
+ WARN_ON(del_timer_sync(&host->cto_timer));
+ clear_bit(EVENT_CMD_COMPLETE, &host->pending_events);
+
+ return true;
+}
+
static void dw_mci_tasklet_func(unsigned long priv)
{
struct dw_mci *host = (struct dw_mci *)priv;
@@ -1952,8 +1996,7 @@ static void dw_mci_tasklet_func(unsigned long priv)
case STATE_SENDING_CMD11:
case STATE_SENDING_CMD:
- if (!test_and_clear_bit(EVENT_CMD_COMPLETE,
- &host->pending_events))
+ if (!dw_mci_clear_pending_cmd_complete(host))
break;
cmd = host->cmd;
@@ -2122,8 +2165,7 @@ static void dw_mci_tasklet_func(unsigned long priv)
/* fall through */
case STATE_SENDING_STOP:
- if (!test_and_clear_bit(EVENT_CMD_COMPLETE,
- &host->pending_events))
+ if (!dw_mci_clear_pending_cmd_complete(host))
break;
/* CMD error in data command */
@@ -2570,6 +2612,8 @@ done:
static void dw_mci_cmd_interrupt(struct dw_mci *host, u32 status)
{
+ del_timer(&host->cto_timer);
+
if (!host->cmd_status)
host->cmd_status = status;
@@ -2594,6 +2638,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
struct dw_mci *host = dev_id;
u32 pending;
struct dw_mci_slot *slot = host->slot;
+ unsigned long irqflags;
pending = mci_readl(host, MINTSTS); /* read-only mask reg */
@@ -2601,8 +2646,6 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
/* Check volt switch first, since it can look like an error */
if ((host->state == STATE_SENDING_CMD11) &&
(pending & SDMMC_INT_VOLT_SWITCH)) {
- unsigned long irqflags;
-
mci_writel(host, RINTSTS, SDMMC_INT_VOLT_SWITCH);
pending &= ~SDMMC_INT_VOLT_SWITCH;
@@ -2618,11 +2661,15 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
}
if (pending & DW_MCI_CMD_ERROR_FLAGS) {
+ spin_lock_irqsave(&host->irq_lock, irqflags);
+
del_timer(&host->cto_timer);
mci_writel(host, RINTSTS, DW_MCI_CMD_ERROR_FLAGS);
host->cmd_status = pending;
smp_wmb(); /* drain writebuffer */
set_bit(EVENT_CMD_COMPLETE, &host->pending_events);
+
+ spin_unlock_irqrestore(&host->irq_lock, irqflags);
}
if (pending & DW_MCI_DATA_ERROR_FLAGS) {
@@ -2662,9 +2709,12 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
}
if (pending & SDMMC_INT_CMD_DONE) {
- del_timer(&host->cto_timer);
+ spin_lock_irqsave(&host->irq_lock, irqflags);
+
mci_writel(host, RINTSTS, SDMMC_INT_CMD_DONE);
dw_mci_cmd_interrupt(host, pending);
+
+ spin_unlock_irqrestore(&host->irq_lock, irqflags);
}
if (pending & SDMMC_INT_CD) {
@@ -2938,7 +2988,35 @@ static void dw_mci_cmd11_timer(unsigned long arg)
static void dw_mci_cto_timer(unsigned long arg)
{
struct dw_mci *host = (struct dw_mci *)arg;
+ unsigned long irqflags;
+ u32 pending;
+ spin_lock_irqsave(&host->irq_lock, irqflags);
+
+ /*
+ * If somehow we have very bad interrupt latency it's remotely possible
+ * that the timer could fire while the interrupt is still pending or
+ * while the interrupt is midway through running. Let's be paranoid
+ * and detect those two cases. Note that this is paranoia is somewhat
+ * justified because in this function we don't actually cancel the
+ * pending command in the controller--we just assume it will never come.
+ */
+ pending = mci_readl(host, MINTSTS); /* read-only mask reg */
+ if (pending & (DW_MCI_CMD_ERROR_FLAGS | SDMMC_INT_CMD_DONE)) {
+ /* The interrupt should fire; no need to act but we can warn */
+ dev_warn(host->dev, "Unexpected interrupt latency\n");
+ goto exit;
+ }
+ if (test_bit(EVENT_CMD_COMPLETE, &host->pending_events)) {
+ /* Presumably interrupt handler couldn't delete the timer */
+ dev_warn(host->dev, "CTO timeout when already completed\n");
+ goto exit;
+ }
+
+ /*
+ * Continued paranoia to make sure we're in the state we expect.
+ * This paranoia isn't really justified but it seems good to be safe.
+ */
switch (host->state) {
case STATE_SENDING_CMD11:
case STATE_SENDING_CMD:
@@ -2957,6 +3035,9 @@ static void dw_mci_cto_timer(unsigned long arg)
host->state);
break;
}
+
+exit:
+ spin_unlock_irqrestore(&host->irq_lock, irqflags);
}
static void dw_mci_dto_timer(unsigned long arg)
diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c
index c885c2d4b904..85745ef179e2 100644
--- a/drivers/mmc/host/meson-gx-mmc.c
+++ b/drivers/mmc/host/meson-gx-mmc.c
@@ -531,8 +531,7 @@ static int meson_mmc_clk_init(struct meson_host *host)
div->shift = __ffs(CLK_DIV_MASK);
div->width = __builtin_popcountl(CLK_DIV_MASK);
div->hw.init = &init;
- div->flags = (CLK_DIVIDER_ONE_BASED |
- CLK_DIVIDER_ROUND_CLOSEST);
+ div->flags = CLK_DIVIDER_ONE_BASED;
clk = devm_clk_register(host->dev, &div->hw);
if (WARN_ON(IS_ERR(clk)))
@@ -717,6 +716,22 @@ static int meson_mmc_clk_phase_tuning(struct mmc_host *mmc, u32 opcode,
static int meson_mmc_execute_tuning(struct mmc_host *mmc, u32 opcode)
{
struct meson_host *host = mmc_priv(mmc);
+ int ret;
+
+ /*
+ * If this is the initial tuning, try to get a sane Rx starting
+ * phase before doing the actual tuning.
+ */
+ if (!mmc->doing_retune) {
+ ret = meson_mmc_clk_phase_tuning(mmc, opcode, host->rx_clk);
+
+ if (ret)
+ return ret;
+ }
+
+ ret = meson_mmc_clk_phase_tuning(mmc, opcode, host->tx_clk);
+ if (ret)
+ return ret;
return meson_mmc_clk_phase_tuning(mmc, opcode, host->rx_clk);
}
@@ -746,6 +761,11 @@ static void meson_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
case MMC_POWER_UP:
if (!IS_ERR(mmc->supply.vmmc))
mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd);
+
+ /* Reset phases */
+ clk_set_phase(host->rx_clk, 0);
+ clk_set_phase(host->tx_clk, 270);
+
break;
case MMC_POWER_ON:
@@ -759,8 +779,6 @@ static void meson_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
host->vqmmc_enabled = true;
}
- /* Reset rx phase */
- clk_set_phase(host->rx_clk, 0);
break;
}
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
index 59ab194cb009..c763b404510f 100644
--- a/drivers/mmc/host/pxamci.c
+++ b/drivers/mmc/host/pxamci.c
@@ -702,11 +702,7 @@ static int pxamci_probe(struct platform_device *pdev)
pxamci_init_ocr(host);
- /*
- * This architecture used to disable bounce buffers through its
- * defconfig, now it is done at runtime as a host property.
- */
- mmc->caps = MMC_CAP_NO_BOUNCE_BUFF;
+ mmc->caps = 0;
host->cmdat = 0;
if (!cpu_is_pxa25x()) {
mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ;
diff --git a/drivers/mmc/host/pxamci.h b/drivers/mmc/host/pxamci.h
index f6c2e2fcce37..d301ca18c5d4 100644
--- a/drivers/mmc/host/pxamci.h
+++ b/drivers/mmc/host/pxamci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define MMC_STRPCL 0x0000
#define STOP_CLOCK (1 << 0)
#define START_CLOCK (2 << 0)
diff --git a/drivers/mmc/host/renesas_sdhi_internal_dmac.c b/drivers/mmc/host/renesas_sdhi_internal_dmac.c
index f905f2361d12..8bae88a150fd 100644
--- a/drivers/mmc/host/renesas_sdhi_internal_dmac.c
+++ b/drivers/mmc/host/renesas_sdhi_internal_dmac.c
@@ -146,11 +146,8 @@ renesas_sdhi_internal_dmac_start_dma(struct tmio_mmc_host *host,
WARN_ON(host->sg_len > 1);
/* This DMAC cannot handle if buffer is not 8-bytes alignment */
- if (!IS_ALIGNED(sg->offset, 8)) {
- host->force_pio = true;
- renesas_sdhi_internal_dmac_enable_dma(host, false);
- return;
- }
+ if (!IS_ALIGNED(sg->offset, 8))
+ goto force_pio;
if (data->flags & MMC_DATA_READ) {
dtran_mode |= DTRAN_MODE_CH_NUM_CH1;
@@ -163,8 +160,8 @@ renesas_sdhi_internal_dmac_start_dma(struct tmio_mmc_host *host,
}
ret = dma_map_sg(&host->pdev->dev, sg, host->sg_len, dir);
- if (ret < 0)
- return;
+ if (ret == 0)
+ goto force_pio;
renesas_sdhi_internal_dmac_enable_dma(host, true);
@@ -176,6 +173,12 @@ renesas_sdhi_internal_dmac_start_dma(struct tmio_mmc_host *host,
dtran_mode);
renesas_sdhi_internal_dmac_dm_write(host, DM_DTRAN_ADDR,
sg->dma_address);
+
+ return;
+
+force_pio:
+ host->force_pio = true;
+ renesas_sdhi_internal_dmac_enable_dma(host, false);
}
static void renesas_sdhi_internal_dmac_issue_tasklet_fn(unsigned long arg)
diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
index bbaddf18a1b3..67d787fa3306 100644
--- a/drivers/mmc/host/sdhci-pci-core.c
+++ b/drivers/mmc/host/sdhci-pci-core.c
@@ -392,6 +392,7 @@ static const struct sdhci_pci_fixes sdhci_intel_pch_sdio = {
enum {
INTEL_DSM_FNS = 0,
+ INTEL_DSM_V18_SWITCH = 3,
INTEL_DSM_DRV_STRENGTH = 9,
INTEL_DSM_D3_RETUNE = 10,
};
@@ -447,6 +448,8 @@ static void intel_dsm_init(struct intel_host *intel_host, struct device *dev,
int err;
u32 val;
+ intel_host->d3_retune = true;
+
err = __intel_dsm(intel_host, dev, INTEL_DSM_FNS, &intel_host->dsm_fns);
if (err) {
pr_debug("%s: DSM not supported, error %d\n",
@@ -557,6 +560,19 @@ static void intel_hs400_enhanced_strobe(struct mmc_host *mmc,
sdhci_writel(host, val, INTEL_HS400_ES_REG);
}
+static void sdhci_intel_voltage_switch(struct sdhci_host *host)
+{
+ struct sdhci_pci_slot *slot = sdhci_priv(host);
+ struct intel_host *intel_host = sdhci_pci_priv(slot);
+ struct device *dev = &slot->chip->pdev->dev;
+ u32 result = 0;
+ int err;
+
+ err = intel_dsm(intel_host, dev, INTEL_DSM_V18_SWITCH, &result);
+ pr_debug("%s: %s DSM error %d result %u\n",
+ mmc_hostname(host->mmc), __func__, err, result);
+}
+
static const struct sdhci_ops sdhci_intel_byt_ops = {
.set_clock = sdhci_set_clock,
.set_power = sdhci_intel_set_power,
@@ -565,6 +581,7 @@ static const struct sdhci_ops sdhci_intel_byt_ops = {
.reset = sdhci_reset,
.set_uhs_signaling = sdhci_set_uhs_signaling,
.hw_reset = sdhci_pci_hw_reset,
+ .voltage_switch = sdhci_intel_voltage_switch,
};
static void byt_read_dsm(struct sdhci_pci_slot *slot)
diff --git a/drivers/mmc/host/sdhci-pci.h b/drivers/mmc/host/sdhci-pci.h
index 75196a2b5289..3e8ea3e566f6 100644
--- a/drivers/mmc/host/sdhci-pci.h
+++ b/drivers/mmc/host/sdhci-pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SDHCI_PCI_H
#define __SDHCI_PCI_H
diff --git a/drivers/mmc/host/sdhci-xenon.c b/drivers/mmc/host/sdhci-xenon.c
index 2eec2e652c53..0842bbc2d7ad 100644
--- a/drivers/mmc/host/sdhci-xenon.c
+++ b/drivers/mmc/host/sdhci-xenon.c
@@ -466,6 +466,7 @@ static int xenon_probe(struct platform_device *pdev)
{
struct sdhci_pltfm_host *pltfm_host;
struct sdhci_host *host;
+ struct xenon_priv *priv;
int err;
host = sdhci_pltfm_init(pdev, &sdhci_xenon_pdata,
@@ -474,6 +475,7 @@ static int xenon_probe(struct platform_device *pdev)
return PTR_ERR(host);
pltfm_host = sdhci_priv(host);
+ priv = sdhci_pltfm_priv(pltfm_host);
/*
* Link Xenon specific mmc_host_ops function,
@@ -491,9 +493,20 @@ static int xenon_probe(struct platform_device *pdev)
if (err)
goto free_pltfm;
+ priv->axi_clk = devm_clk_get(&pdev->dev, "axi");
+ if (IS_ERR(priv->axi_clk)) {
+ err = PTR_ERR(priv->axi_clk);
+ if (err == -EPROBE_DEFER)
+ goto err_clk;
+ } else {
+ err = clk_prepare_enable(priv->axi_clk);
+ if (err)
+ goto err_clk;
+ }
+
err = mmc_of_parse(host->mmc);
if (err)
- goto err_clk;
+ goto err_clk_axi;
sdhci_get_of_property(pdev);
@@ -502,11 +515,11 @@ static int xenon_probe(struct platform_device *pdev)
/* Xenon specific dt parse */
err = xenon_probe_dt(pdev);
if (err)
- goto err_clk;
+ goto err_clk_axi;
err = xenon_sdhc_prepare(host);
if (err)
- goto err_clk;
+ goto err_clk_axi;
pm_runtime_get_noresume(&pdev->dev);
pm_runtime_set_active(&pdev->dev);
@@ -527,6 +540,8 @@ remove_sdhc:
pm_runtime_disable(&pdev->dev);
pm_runtime_put_noidle(&pdev->dev);
xenon_sdhc_unprepare(host);
+err_clk_axi:
+ clk_disable_unprepare(priv->axi_clk);
err_clk:
clk_disable_unprepare(pltfm_host->clk);
free_pltfm:
@@ -538,6 +553,7 @@ static int xenon_remove(struct platform_device *pdev)
{
struct sdhci_host *host = platform_get_drvdata(pdev);
struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
+ struct xenon_priv *priv = sdhci_pltfm_priv(pltfm_host);
pm_runtime_get_sync(&pdev->dev);
pm_runtime_disable(&pdev->dev);
@@ -546,7 +562,7 @@ static int xenon_remove(struct platform_device *pdev)
sdhci_remove_host(host, 0);
xenon_sdhc_unprepare(host);
-
+ clk_disable_unprepare(priv->axi_clk);
clk_disable_unprepare(pltfm_host->clk);
sdhci_pltfm_free(pdev);
diff --git a/drivers/mmc/host/sdhci-xenon.h b/drivers/mmc/host/sdhci-xenon.h
index 2bc0510c0769..9994995c7c56 100644
--- a/drivers/mmc/host/sdhci-xenon.h
+++ b/drivers/mmc/host/sdhci-xenon.h
@@ -83,6 +83,7 @@ struct xenon_priv {
unsigned char bus_width;
unsigned char timing;
unsigned int clock;
+ struct clk *axi_clk;
int phy_type;
/*
diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c
index 12cf8288d663..9c4e6199b854 100644
--- a/drivers/mmc/host/tmio_mmc_core.c
+++ b/drivers/mmc/host/tmio_mmc_core.c
@@ -47,6 +47,7 @@
#include <linux/mmc/sdio.h>
#include <linux/scatterlist.h>
#include <linux/spinlock.h>
+#include <linux/swiotlb.h>
#include <linux/workqueue.h>
#include "tmio_mmc.h"
@@ -129,50 +130,6 @@ static int tmio_mmc_next_sg(struct tmio_mmc_host *host)
#define CMDREQ_TIMEOUT 5000
-#ifdef CONFIG_MMC_DEBUG
-
-#define STATUS_TO_TEXT(a, status, i) \
- do { \
- if ((status) & TMIO_STAT_##a) { \
- if ((i)++) \
- printk(KERN_DEBUG " | "); \
- printk(KERN_DEBUG #a); \
- } \
- } while (0)
-
-static void pr_debug_status(u32 status)
-{
- int i = 0;
-
- pr_debug("status: %08x = ", status);
- STATUS_TO_TEXT(CARD_REMOVE, status, i);
- STATUS_TO_TEXT(CARD_INSERT, status, i);
- STATUS_TO_TEXT(SIGSTATE, status, i);
- STATUS_TO_TEXT(WRPROTECT, status, i);
- STATUS_TO_TEXT(CARD_REMOVE_A, status, i);
- STATUS_TO_TEXT(CARD_INSERT_A, status, i);
- STATUS_TO_TEXT(SIGSTATE_A, status, i);
- STATUS_TO_TEXT(CMD_IDX_ERR, status, i);
- STATUS_TO_TEXT(STOPBIT_ERR, status, i);
- STATUS_TO_TEXT(ILL_FUNC, status, i);
- STATUS_TO_TEXT(CMD_BUSY, status, i);
- STATUS_TO_TEXT(CMDRESPEND, status, i);
- STATUS_TO_TEXT(DATAEND, status, i);
- STATUS_TO_TEXT(CRCFAIL, status, i);
- STATUS_TO_TEXT(DATATIMEOUT, status, i);
- STATUS_TO_TEXT(CMDTIMEOUT, status, i);
- STATUS_TO_TEXT(RXOVERFLOW, status, i);
- STATUS_TO_TEXT(TXUNDERRUN, status, i);
- STATUS_TO_TEXT(RXRDY, status, i);
- STATUS_TO_TEXT(TXRQ, status, i);
- STATUS_TO_TEXT(ILL_ACCESS, status, i);
- printk("\n");
-}
-
-#else
-#define pr_debug_status(s) do { } while (0)
-#endif
-
static void tmio_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
{
struct tmio_mmc_host *host = mmc_priv(mmc);
@@ -762,9 +719,6 @@ irqreturn_t tmio_mmc_irq(int irq, void *devid)
status = sd_ctrl_read16_and_16_as_32(host, CTL_STATUS);
ireg = status & TMIO_MASK_IRQ & ~host->sdcard_irq_mask;
- pr_debug_status(status);
- pr_debug_status(ireg);
-
/* Clear the status except the interrupt status */
sd_ctrl_write32_as_16_and_16(host, CTL_STATUS, TMIO_MASK_IRQ);
@@ -1262,6 +1216,18 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host,
mmc->max_blk_count = pdata->max_blk_count ? :
(PAGE_SIZE / mmc->max_blk_size) * mmc->max_segs;
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
+ /*
+ * Since swiotlb has memory size limitation, this will calculate
+ * the maximum size locally (because we don't have any APIs for it now)
+ * and check the current max_req_size. And then, this will update
+ * the max_req_size if needed as a workaround.
+ */
+ if (swiotlb_max_segment()) {
+ unsigned int max_size = (1 << IO_TLB_SHIFT) * IO_TLB_SEGSIZE;
+
+ if (mmc->max_req_size > max_size)
+ mmc->max_req_size = max_size;
+ }
mmc->max_seg_size = mmc->max_req_size;
_host->native_hotplug = !(pdata->flags & TMIO_MMC_USE_GPIO_CD ||
diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
index 151d60df303a..d6f8f625e1ff 100644
--- a/drivers/mtd/Makefile
+++ b/drivers/mtd/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the memory technology device drivers.
#
diff --git a/drivers/mtd/chips/Makefile b/drivers/mtd/chips/Makefile
index 36582412ccda..1f4e84f1cd88 100644
--- a/drivers/mtd/chips/Makefile
+++ b/drivers/mtd/chips/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/drivers/chips/Makefile
#
diff --git a/drivers/mtd/chips/fwh_lock.h b/drivers/mtd/chips/fwh_lock.h
index 800b0e853e86..53e6b2d5932b 100644
--- a/drivers/mtd/chips/fwh_lock.h
+++ b/drivers/mtd/chips/fwh_lock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef FWH_LOCK_H
#define FWH_LOCK_H
diff --git a/drivers/mtd/devices/Makefile b/drivers/mtd/devices/Makefile
index f0f767624cc6..94895eab3066 100644
--- a/drivers/mtd/devices/Makefile
+++ b/drivers/mtd/devices/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/drivers/mtd/devices/Makefile
#
diff --git a/drivers/mtd/devices/bcm47xxsflash.h b/drivers/mtd/devices/bcm47xxsflash.h
index b2d7b38f75fd..fef0d5e42e2a 100644
--- a/drivers/mtd/devices/bcm47xxsflash.h
+++ b/drivers/mtd/devices/bcm47xxsflash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BCM47XXSFLASH_H
#define __BCM47XXSFLASH_H
diff --git a/drivers/mtd/maps/Makefile b/drivers/mtd/maps/Makefile
index 5a09a72ab112..b849aaf85c34 100644
--- a/drivers/mtd/maps/Makefile
+++ b/drivers/mtd/maps/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/drivers/maps/Makefile
#
diff --git a/drivers/mtd/maps/lantiq-flash.c b/drivers/mtd/maps/lantiq-flash.c
index 3e33ab66eb24..77b1d8013295 100644
--- a/drivers/mtd/maps/lantiq-flash.c
+++ b/drivers/mtd/maps/lantiq-flash.c
@@ -114,12 +114,6 @@ ltq_mtd_probe(struct platform_device *pdev)
struct cfi_private *cfi;
int err;
- if (of_machine_is_compatible("lantiq,falcon") &&
- (ltq_boot_select() != BS_FLASH)) {
- dev_err(&pdev->dev, "invalid bootstrap options\n");
- return -ENODEV;
- }
-
ltq_mtd = devm_kzalloc(&pdev->dev, sizeof(struct ltq_mtd), GFP_KERNEL);
if (!ltq_mtd)
return -ENOMEM;
diff --git a/drivers/mtd/maps/physmap_of_gemini.c b/drivers/mtd/maps/physmap_of_gemini.c
index 4ed1a6bb4d3c..830b1b7e702b 100644
--- a/drivers/mtd/maps/physmap_of_gemini.c
+++ b/drivers/mtd/maps/physmap_of_gemini.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Cortina Systems Gemini OF physmap add-on
* Copyright (C) 2017 Linus Walleij <linus.walleij@linaro.org>
diff --git a/drivers/mtd/maps/physmap_of_gemini.h b/drivers/mtd/maps/physmap_of_gemini.h
index c675025288dd..60e13a689d6a 100644
--- a/drivers/mtd/maps/physmap_of_gemini.h
+++ b/drivers/mtd/maps/physmap_of_gemini.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/of.h>
#include <linux/mtd/map.h>
diff --git a/drivers/mtd/maps/physmap_of_versatile.h b/drivers/mtd/maps/physmap_of_versatile.h
index 5b86f6dc6b3d..0302502c9462 100644
--- a/drivers/mtd/maps/physmap_of_versatile.h
+++ b/drivers/mtd/maps/physmap_of_versatile.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/of.h>
#include <linux/mtd/map.h>
diff --git a/drivers/mtd/maps/tsunami_flash.c b/drivers/mtd/maps/tsunami_flash.c
index da2cdb5fd6db..9fc1f727aa76 100644
--- a/drivers/mtd/maps/tsunami_flash.c
+++ b/drivers/mtd/maps/tsunami_flash.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* tsunami_flash.c
*
diff --git a/drivers/mtd/mtdcore.h b/drivers/mtd/mtdcore.h
index 55fdb8e1fd2a..37accfd0400e 100644
--- a/drivers/mtd/mtdcore.h
+++ b/drivers/mtd/mtdcore.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* These are exported solely for the purpose of mtd_blkdevs.c and mtdchar.c.
* You should not use them for _anything_ else.
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 5736b0c90b33..a308e707392d 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -581,6 +581,14 @@ static struct mtd_part *allocate_partition(struct mtd_info *parent,
slave->mtd.erasesize = parent->erasesize;
}
+ /*
+ * Slave erasesize might differ from the master one if the master
+ * exposes several regions with different erasesize. Adjust
+ * wr_alignment accordingly.
+ */
+ if (!(slave->mtd.flags & MTD_NO_ERASE))
+ wr_alignment = slave->mtd.erasesize;
+
tmp = slave->offset;
remainder = do_div(tmp, wr_alignment);
if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) {
diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
index ade5fc4c3819..6e2db700d923 100644
--- a/drivers/mtd/nand/Makefile
+++ b/drivers/mtd/nand/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# linux/drivers/nand/Makefile
#
diff --git a/drivers/mtd/nand/atmel/pmecc.c b/drivers/mtd/nand/atmel/pmecc.c
index 146af8218314..8268636675ef 100644
--- a/drivers/mtd/nand/atmel/pmecc.c
+++ b/drivers/mtd/nand/atmel/pmecc.c
@@ -363,7 +363,7 @@ atmel_pmecc_create_user(struct atmel_pmecc *pmecc,
size += (req->ecc.strength + 1) * sizeof(u16);
/* Reserve space for mu, dmu and delta. */
size = ALIGN(size, sizeof(s32));
- size += (req->ecc.strength + 1) * sizeof(s32);
+ size += (req->ecc.strength + 1) * sizeof(s32) * 3;
user = kzalloc(size, GFP_KERNEL);
if (!user)
diff --git a/drivers/mtd/nand/bcm47xxnflash/bcm47xxnflash.h b/drivers/mtd/nand/bcm47xxnflash/bcm47xxnflash.h
index c8834767ab6d..201b9baa52a0 100644
--- a/drivers/mtd/nand/bcm47xxnflash/bcm47xxnflash.h
+++ b/drivers/mtd/nand/bcm47xxnflash/bcm47xxnflash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BCM47XXNFLASH_H
#define __BCM47XXNFLASH_H
diff --git a/drivers/mtd/nand/brcmnand/Makefile b/drivers/mtd/nand/brcmnand/Makefile
index b28ffb59eb43..195b845e48b8 100644
--- a/drivers/mtd/nand/brcmnand/Makefile
+++ b/drivers/mtd/nand/brcmnand/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# link order matters; don't link the more generic brcmstb_nand.o before the
# more specific iproc_nand.o, for instance
obj-$(CONFIG_MTD_NAND_BRCMNAND) += iproc_nand.o
diff --git a/drivers/mtd/nand/lpc32xx_mlc.c b/drivers/mtd/nand/lpc32xx_mlc.c
index c3bb358ef01e..5796468db653 100644
--- a/drivers/mtd/nand/lpc32xx_mlc.c
+++ b/drivers/mtd/nand/lpc32xx_mlc.c
@@ -707,7 +707,7 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)
}
res = clk_prepare_enable(host->clk);
if (res)
- goto err_exit1;
+ goto err_put_clk;
nand_chip->cmd_ctrl = lpc32xx_nand_cmd_ctrl;
nand_chip->dev_ready = lpc32xx_nand_device_ready;
@@ -814,6 +814,7 @@ err_exit3:
dma_release_channel(host->dma_chan);
err_exit2:
clk_disable_unprepare(host->clk);
+err_put_clk:
clk_put(host->clk);
err_exit1:
lpc32xx_wp_enable(host);
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index bcc8cef1c615..12edaae17d81 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -2668,7 +2668,7 @@ static uint8_t *nand_fill_oob(struct mtd_info *mtd, uint8_t *oob, size_t len,
static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
struct mtd_oob_ops *ops)
{
- int chipnr, realpage, page, blockmask, column;
+ int chipnr, realpage, page, column;
struct nand_chip *chip = mtd_to_nand(mtd);
uint32_t writelen = ops->len;
@@ -2704,7 +2704,6 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
realpage = (int)(to >> chip->page_shift);
page = realpage & chip->pagemask;
- blockmask = (1 << (chip->phys_erase_shift - chip->page_shift)) - 1;
/* Invalidate the page cache, when we write to the cached page */
if (to <= ((loff_t)chip->pagebuf << chip->page_shift) &&
diff --git a/drivers/mtd/nand/nandsim.c b/drivers/mtd/nand/nandsim.c
index fec613221958..246b4393118e 100644
--- a/drivers/mtd/nand/nandsim.c
+++ b/drivers/mtd/nand/nandsim.c
@@ -1356,7 +1356,7 @@ static ssize_t read_file(struct nandsim *ns, struct file *file, void *buf, size_
if (err)
return err;
noreclaim_flag = memalloc_noreclaim_save();
- tx = kernel_read(file, pos, buf, count);
+ tx = kernel_read(file, buf, count, &pos);
memalloc_noreclaim_restore(noreclaim_flag);
put_pages(ns);
return tx;
@@ -1372,7 +1372,7 @@ static ssize_t write_file(struct nandsim *ns, struct file *file, void *buf, size
if (err)
return err;
noreclaim_flag = memalloc_noreclaim_save();
- tx = kernel_write(file, buf, count, pos);
+ tx = kernel_write(file, buf, count, &pos);
memalloc_noreclaim_restore(noreclaim_flag);
put_pages(ns);
return tx;
diff --git a/drivers/mtd/onenand/Makefile b/drivers/mtd/onenand/Makefile
index 9d6540e8b3d2..f8b624aca9cc 100644
--- a/drivers/mtd/onenand/Makefile
+++ b/drivers/mtd/onenand/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the OneNAND MTD
#
diff --git a/drivers/mtd/onenand/onenand_bbt.c b/drivers/mtd/onenand/onenand_bbt.c
index 680188a88130..420260c25ca0 100644
--- a/drivers/mtd/onenand/onenand_bbt.c
+++ b/drivers/mtd/onenand/onenand_bbt.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/drivers/mtd/onenand/onenand_bbt.c
*
diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile
index 7d84c5108e17..f4c61d282abd 100644
--- a/drivers/mtd/spi-nor/Makefile
+++ b/drivers/mtd/spi-nor/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MTD_SPI_NOR) += spi-nor.o
obj-$(CONFIG_SPI_ASPEED_SMC) += aspeed-smc.o
obj-$(CONFIG_SPI_ATMEL_QUADSPI) += atmel-quadspi.o
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index cf1d4a15e10a..19c000722cbc 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -1784,7 +1784,7 @@ spi_nor_set_pp_settings(struct spi_nor_pp_command *pp,
* @nor: pointer to a 'struct spi_nor'
* @addr: offset in the SFDP area to start reading data from
* @len: number of bytes to read
- * @buf: buffer where the SFDP data are copied into
+ * @buf: buffer where the SFDP data are copied into (dma-safe memory)
*
* Whatever the actual numbers of bytes for address and dummy cycles are
* for (Fast) Read commands, the Read SFDP (5Ah) instruction is always
@@ -1829,6 +1829,36 @@ read_err:
return ret;
}
+/**
+ * spi_nor_read_sfdp_dma_unsafe() - read Serial Flash Discoverable Parameters.
+ * @nor: pointer to a 'struct spi_nor'
+ * @addr: offset in the SFDP area to start reading data from
+ * @len: number of bytes to read
+ * @buf: buffer where the SFDP data are copied into
+ *
+ * Wrap spi_nor_read_sfdp() using a kmalloc'ed bounce buffer as @buf is now not
+ * guaranteed to be dma-safe.
+ *
+ * Return: -ENOMEM if kmalloc() fails, the return code of spi_nor_read_sfdp()
+ * otherwise.
+ */
+static int spi_nor_read_sfdp_dma_unsafe(struct spi_nor *nor, u32 addr,
+ size_t len, void *buf)
+{
+ void *dma_safe_buf;
+ int ret;
+
+ dma_safe_buf = kmalloc(len, GFP_KERNEL);
+ if (!dma_safe_buf)
+ return -ENOMEM;
+
+ ret = spi_nor_read_sfdp(nor, addr, len, dma_safe_buf);
+ memcpy(buf, dma_safe_buf, len);
+ kfree(dma_safe_buf);
+
+ return ret;
+}
+
struct sfdp_parameter_header {
u8 id_lsb;
u8 minor;
@@ -2101,7 +2131,7 @@ static int spi_nor_parse_bfpt(struct spi_nor *nor,
bfpt_header->length * sizeof(u32));
addr = SFDP_PARAM_HEADER_PTP(bfpt_header);
memset(&bfpt, 0, sizeof(bfpt));
- err = spi_nor_read_sfdp(nor, addr, len, &bfpt);
+ err = spi_nor_read_sfdp_dma_unsafe(nor, addr, len, &bfpt);
if (err < 0)
return err;
@@ -2127,6 +2157,15 @@ static int spi_nor_parse_bfpt(struct spi_nor *nor,
params->size = bfpt.dwords[BFPT_DWORD(2)];
if (params->size & BIT(31)) {
params->size &= ~BIT(31);
+
+ /*
+ * Prevent overflows on params->size. Anyway, a NOR of 2^64
+ * bits is unlikely to exist so this error probably means
+ * the BFPT we are reading is corrupted/wrong.
+ */
+ if (params->size > 63)
+ return -EINVAL;
+
params->size = 1ULL << params->size;
} else {
params->size++;
@@ -2243,7 +2282,7 @@ static int spi_nor_parse_sfdp(struct spi_nor *nor,
int i, err;
/* Get the SFDP header. */
- err = spi_nor_read_sfdp(nor, 0, sizeof(header), &header);
+ err = spi_nor_read_sfdp_dma_unsafe(nor, 0, sizeof(header), &header);
if (err < 0)
return err;
diff --git a/drivers/mtd/tests/Makefile b/drivers/mtd/tests/Makefile
index 937a829bb701..5de0378f90db 100644
--- a/drivers/mtd/tests/Makefile
+++ b/drivers/mtd/tests/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MTD_TESTS) += mtd_oobtest.o
obj-$(CONFIG_MTD_TESTS) += mtd_pagetest.o
obj-$(CONFIG_MTD_TESTS) += mtd_readtest.o
diff --git a/drivers/mtd/tests/mtd_test.c b/drivers/mtd/tests/mtd_test.c
index 34736bbcc07b..3d0b8b5c1a53 100644
--- a/drivers/mtd/tests/mtd_test.c
+++ b/drivers/mtd/tests/mtd_test.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) "mtd_test: " fmt
#include <linux/module.h>
diff --git a/drivers/mtd/tests/mtd_test.h b/drivers/mtd/tests/mtd_test.h
index 04afd0e7074f..5a6e3bbe0474 100644
--- a/drivers/mtd/tests/mtd_test.h
+++ b/drivers/mtd/tests/mtd_test.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/mtd/mtd.h>
#include <linux/sched/signal.h>
diff --git a/drivers/mtd/ubi/Makefile b/drivers/mtd/ubi/Makefile
index 4e3c3d70d8c3..543673605ca7 100644
--- a/drivers/mtd/ubi/Makefile
+++ b/drivers/mtd/ubi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MTD_UBI) += ubi.o
ubi-y += vtbl.o vmt.o upd.o build.o cdev.o kapi.o eba.o io.o wl.o attach.o
diff --git a/drivers/mtd/ubi/block.c b/drivers/mtd/ubi/block.c
index c3963f880448..b210fdb31c98 100644
--- a/drivers/mtd/ubi/block.c
+++ b/drivers/mtd/ubi/block.c
@@ -383,7 +383,7 @@ int ubiblock_create(struct ubi_volume_info *vi)
/* Initialize the gendisk of this ubiblock device */
gd = alloc_disk(1);
if (!gd) {
- pr_err("UBI: block: alloc_disk failed");
+ pr_err("UBI: block: alloc_disk failed\n");
ret = -ENODEV;
goto out_free_dev;
}
@@ -607,7 +607,7 @@ static void __init ubiblock_create_from_param(void)
desc = open_volume_desc(p->name, p->ubi_num, p->vol_id);
if (IS_ERR(desc)) {
pr_err(
- "UBI: block: can't open volume on ubi%d_%d, err=%ld",
+ "UBI: block: can't open volume on ubi%d_%d, err=%ld\n",
p->ubi_num, p->vol_id, PTR_ERR(desc));
continue;
}
@@ -618,7 +618,7 @@ static void __init ubiblock_create_from_param(void)
ret = ubiblock_create(&vi);
if (ret) {
pr_err(
- "UBI: block: can't add '%s' volume on ubi%d_%d, err=%d",
+ "UBI: block: can't add '%s' volume on ubi%d_%d, err=%d\n",
vi.name, p->ubi_num, p->vol_id, ret);
continue;
}
diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index d854521962ef..842550b5712a 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -825,7 +825,7 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
for (i = 0; i < UBI_MAX_DEVICES; i++) {
ubi = ubi_devices[i];
if (ubi && mtd->index == ubi->mtd->index) {
- pr_err("ubi: mtd%d is already attached to ubi%d",
+ pr_err("ubi: mtd%d is already attached to ubi%d\n",
mtd->index, i);
return -EEXIST;
}
@@ -840,7 +840,7 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
* no sense to attach emulated MTD devices, so we prohibit this.
*/
if (mtd->type == MTD_UBIVOLUME) {
- pr_err("ubi: refuse attaching mtd%d - it is already emulated on top of UBI",
+ pr_err("ubi: refuse attaching mtd%d - it is already emulated on top of UBI\n",
mtd->index);
return -EINVAL;
}
@@ -851,7 +851,7 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
if (!ubi_devices[ubi_num])
break;
if (ubi_num == UBI_MAX_DEVICES) {
- pr_err("ubi: only %d UBI devices may be created",
+ pr_err("ubi: only %d UBI devices may be created\n",
UBI_MAX_DEVICES);
return -ENFILE;
}
@@ -861,7 +861,7 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
/* Make sure ubi_num is not busy */
if (ubi_devices[ubi_num]) {
- pr_err("ubi: ubi%i already exists", ubi_num);
+ pr_err("ubi: ubi%i already exists\n", ubi_num);
return -EEXIST;
}
}
@@ -1166,7 +1166,7 @@ static int __init ubi_init(void)
BUILD_BUG_ON(sizeof(struct ubi_vid_hdr) != 64);
if (mtd_devs > UBI_MAX_DEVICES) {
- pr_err("UBI error: too many MTD devices, maximum is %d",
+ pr_err("UBI error: too many MTD devices, maximum is %d\n",
UBI_MAX_DEVICES);
return -EINVAL;
}
@@ -1178,7 +1178,7 @@ static int __init ubi_init(void)
err = misc_register(&ubi_ctrl_cdev);
if (err) {
- pr_err("UBI error: cannot register device");
+ pr_err("UBI error: cannot register device\n");
goto out;
}
@@ -1205,7 +1205,7 @@ static int __init ubi_init(void)
mtd = open_mtd_device(p->name);
if (IS_ERR(mtd)) {
err = PTR_ERR(mtd);
- pr_err("UBI error: cannot open mtd %s, error %d",
+ pr_err("UBI error: cannot open mtd %s, error %d\n",
p->name, err);
/* See comment below re-ubi_is_module(). */
if (ubi_is_module())
@@ -1218,7 +1218,7 @@ static int __init ubi_init(void)
p->vid_hdr_offs, p->max_beb_per1024);
mutex_unlock(&ubi_devices_mutex);
if (err < 0) {
- pr_err("UBI error: cannot attach mtd%d",
+ pr_err("UBI error: cannot attach mtd%d\n",
mtd->index);
put_mtd_device(mtd);
@@ -1242,7 +1242,7 @@ static int __init ubi_init(void)
err = ubiblock_init();
if (err) {
- pr_err("UBI error: block: cannot initialize, error %d", err);
+ pr_err("UBI error: block: cannot initialize, error %d\n", err);
/* See comment above re-ubi_is_module(). */
if (ubi_is_module())
@@ -1265,7 +1265,7 @@ out_dev_unreg:
misc_deregister(&ubi_ctrl_cdev);
out:
class_unregister(&ubi_class);
- pr_err("UBI error: cannot initialize UBI, error %d", err);
+ pr_err("UBI error: cannot initialize UBI, error %d\n", err);
return err;
}
late_initcall(ubi_init);
diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c
index b44c8d348e78..5a832bc79b1b 100644
--- a/drivers/mtd/ubi/fastmap.c
+++ b/drivers/mtd/ubi/fastmap.c
@@ -1667,7 +1667,7 @@ err:
ret = invalidate_fastmap(ubi);
if (ret < 0) {
- ubi_err(ubi, "Unable to invalidiate current fastmap!");
+ ubi_err(ubi, "Unable to invalidate current fastmap!");
ubi_ro_mode(ubi);
} else {
return_fm_pebs(ubi, old_fm);
diff --git a/drivers/mtd/ubi/ubi-media.h b/drivers/mtd/ubi/ubi-media.h
index 22ed3f627506..bfceae5a890e 100644
--- a/drivers/mtd/ubi/ubi-media.h
+++ b/drivers/mtd/ubi/ubi-media.h
@@ -229,7 +229,7 @@ struct ubi_ec_hdr {
* copy. UBI also calculates data CRC when the data is moved and stores it at
* the @data_crc field of the copy (P1). So when UBI needs to pick one physical
* eraseblock of two (P or P1), the @copy_flag of the newer one (P1) is
- * examined. If it is cleared, the situation* is simple and the newer one is
+ * examined. If it is cleared, the situation is simple and the newer one is
* picked. If it is set, the data CRC of the copy (P1) is examined. If the CRC
* checksum is correct, this physical eraseblock is selected (P1). Otherwise
* the older one (P) is selected.
@@ -389,7 +389,7 @@ struct ubi_vtbl_record {
#define UBI_FM_POOL_MAGIC 0x67AF4D08
#define UBI_FM_EBA_MAGIC 0xf0c040a8
-/* A fastmap supber block can be located between PEB 0 and
+/* A fastmap super block can be located between PEB 0 and
* UBI_FM_MAX_START */
#define UBI_FM_MAX_START 64
diff --git a/drivers/mtd/ubi/wl.h b/drivers/mtd/ubi/wl.h
index bd1f07e5ce9a..2aaa3f7f2ba9 100644
--- a/drivers/mtd/ubi/wl.h
+++ b/drivers/mtd/ubi/wl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef UBI_WL_H
#define UBI_WL_H
#ifdef CONFIG_MTD_UBI_FASTMAP
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index 8dff900085d6..676a75f4182a 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux network device drivers.
#
diff --git a/drivers/net/appletalk/cops.h b/drivers/net/appletalk/cops.h
index fd2750b269c8..7a0bfb351929 100644
--- a/drivers/net/appletalk/cops.h
+++ b/drivers/net/appletalk/cops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* cops.h: LocalTalk driver for Linux.
*
* Authors:
diff --git a/drivers/net/appletalk/ipddp.h b/drivers/net/appletalk/ipddp.h
index 531519da99a3..9a8e45a46925 100644
--- a/drivers/net/appletalk/ipddp.h
+++ b/drivers/net/appletalk/ipddp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ipddp.h: Header for IP-over-DDP driver for Linux.
*/
diff --git a/drivers/net/appletalk/ltpc.h b/drivers/net/appletalk/ltpc.h
index cd30544a3729..58cf945732a4 100644
--- a/drivers/net/appletalk/ltpc.h
+++ b/drivers/net/appletalk/ltpc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*** ltpc.h
*
*
diff --git a/drivers/net/arcnet/Makefile b/drivers/net/arcnet/Makefile
index 5ce8ee63e435..53525e8ea130 100644
--- a/drivers/net/arcnet/Makefile
+++ b/drivers/net/arcnet/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for linux/drivers/net/arcnet
#
diff --git a/drivers/net/arcnet/com9026.h b/drivers/net/arcnet/com9026.h
index efcaf6707214..6adbc18711e0 100644
--- a/drivers/net/arcnet/com9026.h
+++ b/drivers/net/arcnet/com9026.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __COM9026_H
#define __COM9026_H
diff --git a/drivers/net/bonding/bond_debugfs.c b/drivers/net/bonding/bond_debugfs.c
index e52e25a977fa..3868e1a5126d 100644
--- a/drivers/net/bonding/bond_debugfs.c
+++ b/drivers/net/bonding/bond_debugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/device.h>
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index fc63992ab0e0..c99dc59d729b 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -4289,7 +4289,7 @@ static int bond_check_params(struct bond_params *params)
int bond_mode = BOND_MODE_ROUNDROBIN;
int xmit_hashtype = BOND_XMIT_POLICY_LAYER2;
int lacp_fast = 0;
- int tlb_dynamic_lb = 0;
+ int tlb_dynamic_lb;
/* Convert string parameters. */
if (mode) {
@@ -4601,16 +4601,13 @@ static int bond_check_params(struct bond_params *params)
}
ad_user_port_key = valptr->value;
- if ((bond_mode == BOND_MODE_TLB) || (bond_mode == BOND_MODE_ALB)) {
- bond_opt_initstr(&newval, "default");
- valptr = bond_opt_parse(bond_opt_get(BOND_OPT_TLB_DYNAMIC_LB),
- &newval);
- if (!valptr) {
- pr_err("Error: No tlb_dynamic_lb default value");
- return -EINVAL;
- }
- tlb_dynamic_lb = valptr->value;
+ bond_opt_initstr(&newval, "default");
+ valptr = bond_opt_parse(bond_opt_get(BOND_OPT_TLB_DYNAMIC_LB), &newval);
+ if (!valptr) {
+ pr_err("Error: No tlb_dynamic_lb default value");
+ return -EINVAL;
}
+ tlb_dynamic_lb = valptr->value;
if (lp_interval == 0) {
pr_warn("Warning: ip_interval must be between 1 and %d, so it was reset to %d\n",
diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
index a12d603d41c6..5931aa2fe997 100644
--- a/drivers/net/bonding/bond_options.c
+++ b/drivers/net/bonding/bond_options.c
@@ -754,6 +754,9 @@ static int bond_option_mode_set(struct bonding *bond,
bond->params.miimon);
}
+ if (newval->value == BOND_MODE_ALB)
+ bond->params.tlb_dynamic_lb = 1;
+
/* don't cache arp_validate between modes */
bond->params.arp_validate = BOND_ARP_VALIDATE_NONE;
bond->params.mode = newval->value;
diff --git a/drivers/net/bonding/bond_procfs.c b/drivers/net/bonding/bond_procfs.c
index d8d4ada034b7..f7799321dffb 100644
--- a/drivers/net/bonding/bond_procfs.c
+++ b/drivers/net/bonding/bond_procfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/proc_fs.h>
#include <linux/export.h>
#include <net/net_namespace.h>
diff --git a/drivers/net/caif/Makefile b/drivers/net/caif/Makefile
index 9bbd45391f6c..54ae1165d60a 100644
--- a/drivers/net/caif/Makefile
+++ b/drivers/net/caif/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_CAIF_DEBUG) := -DDEBUG
# Serial interface
diff --git a/drivers/net/can/Makefile b/drivers/net/can/Makefile
index 4aabbee133b8..02b8ed794564 100644
--- a/drivers/net/can/Makefile
+++ b/drivers/net/can/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux Controller Area Network drivers.
#
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 13f0f219d8aa..a13a4896a8bd 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -182,22 +182,23 @@
/* FLEXCAN hardware feature flags
*
* Below is some version info we got:
- * SOC Version IP-Version Glitch- [TR]WRN_INT Memory err RTR re-
- * Filter? connected? detection ception in MB
- * MX25 FlexCAN2 03.00.00.00 no no no no
- * MX28 FlexCAN2 03.00.04.00 yes yes no no
- * MX35 FlexCAN2 03.00.00.00 no no no no
- * MX53 FlexCAN2 03.00.00.00 yes no no no
- * MX6s FlexCAN3 10.00.12.00 yes yes no yes
- * VF610 FlexCAN3 ? no yes yes yes?
+ * SOC Version IP-Version Glitch- [TR]WRN_INT IRQ Err Memory err RTR re-
+ * Filter? connected? Passive detection ception in MB
+ * MX25 FlexCAN2 03.00.00.00 no no ? no no
+ * MX28 FlexCAN2 03.00.04.00 yes yes no no no
+ * MX35 FlexCAN2 03.00.00.00 no no ? no no
+ * MX53 FlexCAN2 03.00.00.00 yes no no no no
+ * MX6s FlexCAN3 10.00.12.00 yes yes no no yes
+ * VF610 FlexCAN3 ? no yes ? yes yes?
*
* Some SOCs do not have the RX_WARN & TX_WARN interrupt line connected.
*/
-#define FLEXCAN_QUIRK_BROKEN_ERR_STATE BIT(1) /* [TR]WRN_INT not connected */
+#define FLEXCAN_QUIRK_BROKEN_WERR_STATE BIT(1) /* [TR]WRN_INT not connected */
#define FLEXCAN_QUIRK_DISABLE_RXFG BIT(2) /* Disable RX FIFO Global mask */
#define FLEXCAN_QUIRK_ENABLE_EACEN_RRS BIT(3) /* Enable EACEN and RRS bit in ctrl2 */
#define FLEXCAN_QUIRK_DISABLE_MECR BIT(4) /* Disable Memory error detection */
#define FLEXCAN_QUIRK_USE_OFF_TIMESTAMP BIT(5) /* Use timestamp based offloading */
+#define FLEXCAN_QUIRK_BROKEN_PERR_STATE BIT(6) /* No interrupt for error passive */
/* Structure of the message buffer */
struct flexcan_mb {
@@ -281,14 +282,17 @@ struct flexcan_priv {
};
static const struct flexcan_devtype_data fsl_p1010_devtype_data = {
- .quirks = FLEXCAN_QUIRK_BROKEN_ERR_STATE,
+ .quirks = FLEXCAN_QUIRK_BROKEN_WERR_STATE |
+ FLEXCAN_QUIRK_BROKEN_PERR_STATE,
};
-static const struct flexcan_devtype_data fsl_imx28_devtype_data;
+static const struct flexcan_devtype_data fsl_imx28_devtype_data = {
+ .quirks = FLEXCAN_QUIRK_BROKEN_PERR_STATE,
+};
static const struct flexcan_devtype_data fsl_imx6q_devtype_data = {
.quirks = FLEXCAN_QUIRK_DISABLE_RXFG | FLEXCAN_QUIRK_ENABLE_EACEN_RRS |
- FLEXCAN_QUIRK_USE_OFF_TIMESTAMP,
+ FLEXCAN_QUIRK_USE_OFF_TIMESTAMP | FLEXCAN_QUIRK_BROKEN_PERR_STATE,
};
static const struct flexcan_devtype_data fsl_vf610_devtype_data = {
@@ -335,6 +339,22 @@ static inline void flexcan_write(u32 val, void __iomem *addr)
}
#endif
+static inline void flexcan_error_irq_enable(const struct flexcan_priv *priv)
+{
+ struct flexcan_regs __iomem *regs = priv->regs;
+ u32 reg_ctrl = (priv->reg_ctrl_default | FLEXCAN_CTRL_ERR_MSK);
+
+ flexcan_write(reg_ctrl, &regs->ctrl);
+}
+
+static inline void flexcan_error_irq_disable(const struct flexcan_priv *priv)
+{
+ struct flexcan_regs __iomem *regs = priv->regs;
+ u32 reg_ctrl = (priv->reg_ctrl_default & ~FLEXCAN_CTRL_ERR_MSK);
+
+ flexcan_write(reg_ctrl, &regs->ctrl);
+}
+
static inline int flexcan_transceiver_enable(const struct flexcan_priv *priv)
{
if (!priv->reg_xceiver)
@@ -713,6 +733,7 @@ static irqreturn_t flexcan_irq(int irq, void *dev_id)
struct flexcan_regs __iomem *regs = priv->regs;
irqreturn_t handled = IRQ_NONE;
u32 reg_iflag1, reg_esr;
+ enum can_state last_state = priv->can.state;
reg_iflag1 = flexcan_read(&regs->iflag1);
@@ -765,8 +786,10 @@ static irqreturn_t flexcan_irq(int irq, void *dev_id)
flexcan_write(reg_esr & FLEXCAN_ESR_ALL_INT, &regs->esr);
}
- /* state change interrupt */
- if (reg_esr & FLEXCAN_ESR_ERR_STATE)
+ /* state change interrupt or broken error state quirk fix is enabled */
+ if ((reg_esr & FLEXCAN_ESR_ERR_STATE) ||
+ (priv->devtype_data->quirks & (FLEXCAN_QUIRK_BROKEN_WERR_STATE |
+ FLEXCAN_QUIRK_BROKEN_PERR_STATE)))
flexcan_irq_state(dev, reg_esr);
/* bus error IRQ - handle if bus error reporting is activated */
@@ -774,6 +797,44 @@ static irqreturn_t flexcan_irq(int irq, void *dev_id)
(priv->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING))
flexcan_irq_bus_err(dev, reg_esr);
+ /* availability of error interrupt among state transitions in case
+ * bus error reporting is de-activated and
+ * FLEXCAN_QUIRK_BROKEN_PERR_STATE is enabled:
+ * +--------------------------------------------------------------+
+ * | +----------------------------------------------+ [stopped / |
+ * | | | sleeping] -+
+ * +-+-> active <-> warning <-> passive -> bus off -+
+ * ___________^^^^^^^^^^^^_______________________________
+ * disabled(1) enabled disabled
+ *
+ * (1): enabled if FLEXCAN_QUIRK_BROKEN_WERR_STATE is enabled
+ */
+ if ((last_state != priv->can.state) &&
+ (priv->devtype_data->quirks & FLEXCAN_QUIRK_BROKEN_PERR_STATE) &&
+ !(priv->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING)) {
+ switch (priv->can.state) {
+ case CAN_STATE_ERROR_ACTIVE:
+ if (priv->devtype_data->quirks &
+ FLEXCAN_QUIRK_BROKEN_WERR_STATE)
+ flexcan_error_irq_enable(priv);
+ else
+ flexcan_error_irq_disable(priv);
+ break;
+
+ case CAN_STATE_ERROR_WARNING:
+ flexcan_error_irq_enable(priv);
+ break;
+
+ case CAN_STATE_ERROR_PASSIVE:
+ case CAN_STATE_BUS_OFF:
+ flexcan_error_irq_disable(priv);
+ break;
+
+ default:
+ break;
+ }
+ }
+
return handled;
}
@@ -887,7 +948,7 @@ static int flexcan_chip_start(struct net_device *dev)
* on most Flexcan cores, too. Otherwise we don't get
* any error warning or passive interrupts.
*/
- if (priv->devtype_data->quirks & FLEXCAN_QUIRK_BROKEN_ERR_STATE ||
+ if (priv->devtype_data->quirks & FLEXCAN_QUIRK_BROKEN_WERR_STATE ||
priv->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING)
reg_ctrl |= FLEXCAN_CTRL_ERR_MSK;
else
diff --git a/drivers/net/can/sja1000/Makefile b/drivers/net/can/sja1000/Makefile
index be11ddd11b87..9253aaf9e739 100644
--- a/drivers/net/can/sja1000/Makefile
+++ b/drivers/net/can/sja1000/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the SJA1000 CAN controller drivers.
#
diff --git a/drivers/net/can/softing/softing.h b/drivers/net/can/softing/softing.h
index 35f062282dbd..2893007ea05e 100644
--- a/drivers/net/can/softing/softing.h
+++ b/drivers/net/can/softing/softing.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* softing common interfaces
*
diff --git a/drivers/net/can/softing/softing_platform.h b/drivers/net/can/softing/softing_platform.h
index ebbf69815623..68a161547644 100644
--- a/drivers/net/can/softing/softing_platform.h
+++ b/drivers/net/can/softing/softing_platform.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/platform_device.h>
diff --git a/drivers/net/can/sun4i_can.c b/drivers/net/can/sun4i_can.c
index 68ef0a4cd821..b0c80859f746 100644
--- a/drivers/net/can/sun4i_can.c
+++ b/drivers/net/can/sun4i_can.c
@@ -342,7 +342,7 @@ static int sun4i_can_start(struct net_device *dev)
/* enter the selected mode */
mod_reg_val = readl(priv->base + SUN4I_REG_MSEL_ADDR);
- if (priv->can.ctrlmode & CAN_CTRLMODE_PRESUME_ACK)
+ if (priv->can.ctrlmode & CAN_CTRLMODE_LOOPBACK)
mod_reg_val |= SUN4I_MSEL_LOOPBACK_MODE;
else if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY)
mod_reg_val |= SUN4I_MSEL_LISTEN_ONLY_MODE;
@@ -811,7 +811,6 @@ static int sun4ican_probe(struct platform_device *pdev)
priv->can.ctrlmode_supported = CAN_CTRLMODE_BERR_REPORTING |
CAN_CTRLMODE_LISTENONLY |
CAN_CTRLMODE_LOOPBACK |
- CAN_CTRLMODE_PRESUME_ACK |
CAN_CTRLMODE_3_SAMPLES;
priv->base = addr;
priv->clk = clk;
diff --git a/drivers/net/can/usb/Makefile b/drivers/net/can/usb/Makefile
index 164453fd55d0..49ac7b99ba32 100644
--- a/drivers/net/can/usb/Makefile
+++ b/drivers/net/can/usb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux Controller Area Network USB drivers.
#
diff --git a/drivers/net/can/usb/esd_usb2.c b/drivers/net/can/usb/esd_usb2.c
index be928ce62d32..9fdb0f0bfa06 100644
--- a/drivers/net/can/usb/esd_usb2.c
+++ b/drivers/net/can/usb/esd_usb2.c
@@ -333,7 +333,7 @@ static void esd_usb2_rx_can_msg(struct esd_usb2_net_priv *priv,
}
cf->can_id = id & ESD_IDMASK;
- cf->can_dlc = get_can_dlc(msg->msg.rx.dlc);
+ cf->can_dlc = get_can_dlc(msg->msg.rx.dlc & ~ESD_RTR);
if (id & ESD_EXTID)
cf->can_id |= CAN_EFF_FLAG;
diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c
index afcc1312dbaf..68ac3e88a8ce 100644
--- a/drivers/net/can/usb/gs_usb.c
+++ b/drivers/net/can/usb/gs_usb.c
@@ -375,6 +375,8 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)
gs_free_tx_context(txc);
+ atomic_dec(&dev->active_tx_urbs);
+
netif_wake_queue(netdev);
}
@@ -463,14 +465,6 @@ static void gs_usb_xmit_callback(struct urb *urb)
urb->transfer_buffer_length,
urb->transfer_buffer,
urb->transfer_dma);
-
- atomic_dec(&dev->active_tx_urbs);
-
- if (!netif_device_present(netdev))
- return;
-
- if (netif_queue_stopped(netdev))
- netif_wake_queue(netdev);
}
static netdev_tx_t gs_can_start_xmit(struct sk_buff *skb,
diff --git a/drivers/net/can/usb/kvaser_usb.c b/drivers/net/can/usb/kvaser_usb.c
index 18cc529fb807..9b18d96ef526 100644
--- a/drivers/net/can/usb/kvaser_usb.c
+++ b/drivers/net/can/usb/kvaser_usb.c
@@ -137,6 +137,7 @@ static inline bool kvaser_is_usbcan(const struct usb_device_id *id)
#define CMD_RESET_ERROR_COUNTER 49
#define CMD_TX_ACKNOWLEDGE 50
#define CMD_CAN_ERROR_EVENT 51
+#define CMD_FLUSH_QUEUE_REPLY 68
#define CMD_LEAF_USB_THROTTLE 77
#define CMD_LEAF_LOG_MESSAGE 106
@@ -1301,6 +1302,11 @@ static void kvaser_usb_handle_message(const struct kvaser_usb *dev,
goto warn;
break;
+ case CMD_FLUSH_QUEUE_REPLY:
+ if (dev->family != KVASER_LEAF)
+ goto warn;
+ break;
+
default:
warn: dev_warn(dev->udev->dev.parent,
"Unhandled message (%d)\n", msg->id);
@@ -1609,7 +1615,8 @@ static int kvaser_usb_close(struct net_device *netdev)
if (err)
netdev_warn(netdev, "Cannot flush queue, error %d\n", err);
- if (kvaser_usb_send_simple_msg(dev, CMD_RESET_CHIP, priv->channel))
+ err = kvaser_usb_send_simple_msg(dev, CMD_RESET_CHIP, priv->channel);
+ if (err)
netdev_warn(netdev, "Cannot reset card, error %d\n", err);
err = kvaser_usb_stop_chip(priv);
diff --git a/drivers/net/cris/eth_v10.c b/drivers/net/cris/eth_v10.c
index 017f48cdcab9..1cbca8e5741e 100644
--- a/drivers/net/cris/eth_v10.c
+++ b/drivers/net/cris/eth_v10.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* e100net.c: A network driver for the ETRAX 100LX network controller.
*
diff --git a/drivers/net/dsa/Makefile b/drivers/net/dsa/Makefile
index 4a5b5bd297ee..d040aeb45172 100644
--- a/drivers/net/dsa/Makefile
+++ b/drivers/net/dsa/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_NET_DSA_BCM_SF2) += bcm-sf2.o
bcm-sf2-objs := bcm_sf2.o bcm_sf2_cfp.o
obj-$(CONFIG_NET_DSA_LOOP) += dsa_loop.o dsa_loop_bdinfo.o
diff --git a/drivers/net/dsa/b53/Makefile b/drivers/net/dsa/b53/Makefile
index 7e6f9a8bfd75..4256fb42a4dd 100644
--- a/drivers/net/dsa/b53/Makefile
+++ b/drivers/net/dsa/b53/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_B53) += b53_common.o
obj-$(CONFIG_B53_SPI_DRIVER) += b53_spi.o
diff --git a/drivers/net/dsa/dsa_loop.h b/drivers/net/dsa/dsa_loop.h
index dc396877fc95..93e5c15d0efd 100644
--- a/drivers/net/dsa/dsa_loop.h
+++ b/drivers/net/dsa/dsa_loop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DSA_LOOP_H
#define __DSA_LOOP_H
diff --git a/drivers/net/dsa/lan9303.h b/drivers/net/dsa/lan9303.h
index 4d8be555ff4d..7df2ac77fc8f 100644
--- a/drivers/net/dsa/lan9303.h
+++ b/drivers/net/dsa/lan9303.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/regmap.h>
#include <linux/device.h>
#include <net/dsa.h>
diff --git a/drivers/net/dsa/mv88e6060.c b/drivers/net/dsa/mv88e6060.c
index dce7fa57eb55..f123ed57630d 100644
--- a/drivers/net/dsa/mv88e6060.c
+++ b/drivers/net/dsa/mv88e6060.c
@@ -214,8 +214,14 @@ static int mv88e6060_setup(struct dsa_switch *ds)
static int mv88e6060_set_addr(struct dsa_switch *ds, u8 *addr)
{
- /* Use the same MAC Address as FD Pause frames for all ports */
- REG_WRITE(REG_GLOBAL, GLOBAL_MAC_01, (addr[0] << 9) | addr[1]);
+ u16 val = addr[0] << 8 | addr[1];
+
+ /* The multicast bit is always transmitted as a zero, so the switch uses
+ * bit 8 for "DiffAddr", where 0 means all ports transmit the same SA.
+ */
+ val &= 0xfeff;
+
+ REG_WRITE(REG_GLOBAL, GLOBAL_MAC_01, val);
REG_WRITE(REG_GLOBAL, GLOBAL_MAC_23, (addr[2] << 8) | addr[3]);
REG_WRITE(REG_GLOBAL, GLOBAL_MAC_45, (addr[4] << 8) | addr[5]);
diff --git a/drivers/net/dsa/mv88e6xxx/Makefile b/drivers/net/dsa/mv88e6xxx/Makefile
index 5cd5551461e3..58a4a0014e59 100644
--- a/drivers/net/dsa/mv88e6xxx/Makefile
+++ b/drivers/net/dsa/mv88e6xxx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_NET_DSA_MV88E6XXX) += mv88e6xxx.o
mv88e6xxx-objs := chip.o
mv88e6xxx-objs += global1.o
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index c6678aa9b4ef..d74c7335c512 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -1100,6 +1100,10 @@ static int mv88e6xxx_port_check_hw_vlan(struct dsa_switch *ds, int port,
};
int i, err;
+ /* DSA and CPU ports have to be members of multiple vlans */
+ if (dsa_is_dsa_port(ds, port) || dsa_is_cpu_port(ds, port))
+ return 0;
+
if (!vid_begin)
return -EOPNOTSUPP;
@@ -3947,7 +3951,9 @@ static void mv88e6xxx_remove(struct mdio_device *mdiodev)
if (chip->irq > 0) {
if (chip->info->g2_irqs > 0)
mv88e6xxx_g2_irq_free(chip);
+ mutex_lock(&chip->reg_lock);
mv88e6xxx_g1_irq_free(chip);
+ mutex_unlock(&chip->reg_lock);
}
}
diff --git a/drivers/net/ethernet/3com/Makefile b/drivers/net/ethernet/3com/Makefile
index 74046afab993..f8b73babc510 100644
--- a/drivers/net/ethernet/3com/Makefile
+++ b/drivers/net/ethernet/3com/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the 3Com Ethernet device drivers
#
diff --git a/drivers/net/ethernet/8390/Makefile b/drivers/net/ethernet/8390/Makefile
index ff3b31894188..f975c2fc88a3 100644
--- a/drivers/net/ethernet/8390/Makefile
+++ b/drivers/net/ethernet/8390/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the 8390 network device drivers.
#
diff --git a/drivers/net/ethernet/Makefile b/drivers/net/ethernet/Makefile
index a0a03d4d939a..39f6273358ed 100644
--- a/drivers/net/ethernet/Makefile
+++ b/drivers/net/ethernet/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux network Ethernet device drivers.
#
diff --git a/drivers/net/ethernet/aeroflex/greth.h b/drivers/net/ethernet/aeroflex/greth.h
index 9c07140a5d8d..a1e04c9e932e 100644
--- a/drivers/net/ethernet/aeroflex/greth.h
+++ b/drivers/net/ethernet/aeroflex/greth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef GRETH_H
#define GRETH_H
diff --git a/drivers/net/ethernet/alacritech/slic.h b/drivers/net/ethernet/alacritech/slic.h
index 08931b4afc96..d0c388cfd52f 100644
--- a/drivers/net/ethernet/alacritech/slic.h
+++ b/drivers/net/ethernet/alacritech/slic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SLIC_H
#define _SLIC_H
diff --git a/drivers/net/ethernet/alteon/acenic.h b/drivers/net/ethernet/alteon/acenic.h
index 51c486cfbb8c..c670067b1541 100644
--- a/drivers/net/ethernet/alteon/acenic.h
+++ b/drivers/net/ethernet/alteon/acenic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ACENIC_H_
#define _ACENIC_H_
#include <linux/interrupt.h>
diff --git a/drivers/net/ethernet/amazon/ena/ena_ethtool.c b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
index b1212debc2e1..967020fb26ee 100644
--- a/drivers/net/ethernet/amazon/ena/ena_ethtool.c
+++ b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
@@ -742,8 +742,8 @@ static void ena_get_channels(struct net_device *netdev,
{
struct ena_adapter *adapter = netdev_priv(netdev);
- channels->max_rx = ENA_MAX_NUM_IO_QUEUES;
- channels->max_tx = ENA_MAX_NUM_IO_QUEUES;
+ channels->max_rx = adapter->num_queues;
+ channels->max_tx = adapter->num_queues;
channels->max_other = 0;
channels->max_combined = 0;
channels->rx_count = adapter->num_queues;
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index f7dc22f65d9f..c6bd5e24005d 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -966,7 +966,7 @@ static inline void ena_rx_checksum(struct ena_ring *rx_ring,
u64_stats_update_begin(&rx_ring->syncp);
rx_ring->rx_stats.bad_csum++;
u64_stats_update_end(&rx_ring->syncp);
- netif_err(rx_ring->adapter, rx_err, rx_ring->netdev,
+ netif_dbg(rx_ring->adapter, rx_err, rx_ring->netdev,
"RX IPv4 header checksum error\n");
return;
}
@@ -979,7 +979,7 @@ static inline void ena_rx_checksum(struct ena_ring *rx_ring,
u64_stats_update_begin(&rx_ring->syncp);
rx_ring->rx_stats.bad_csum++;
u64_stats_update_end(&rx_ring->syncp);
- netif_err(rx_ring->adapter, rx_err, rx_ring->netdev,
+ netif_dbg(rx_ring->adapter, rx_err, rx_ring->netdev,
"RX L4 checksum error\n");
skb->ip_summed = CHECKSUM_NONE;
return;
@@ -3064,7 +3064,8 @@ static void ena_release_bars(struct ena_com_dev *ena_dev, struct pci_dev *pdev)
if (ena_dev->mem_bar)
devm_iounmap(&pdev->dev, ena_dev->mem_bar);
- devm_iounmap(&pdev->dev, ena_dev->reg_bar);
+ if (ena_dev->reg_bar)
+ devm_iounmap(&pdev->dev, ena_dev->reg_bar);
release_bars = pci_select_bars(pdev, IORESOURCE_MEM) & ENA_BAR_MASK;
pci_release_selected_regions(pdev, release_bars);
diff --git a/drivers/net/ethernet/amd/7990.h b/drivers/net/ethernet/amd/7990.h
index e9e0be313804..741cdc392c6b 100644
--- a/drivers/net/ethernet/amd/7990.h
+++ b/drivers/net/ethernet/amd/7990.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* 7990.h -- LANCE ethernet IC generic routines.
* This is an attempt to separate out the bits of various ethernet
diff --git a/drivers/net/ethernet/amd/Makefile b/drivers/net/ethernet/amd/Makefile
index a38a2dce3eb3..45f86822a5f7 100644
--- a/drivers/net/ethernet/amd/Makefile
+++ b/drivers/net/ethernet/amd/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the AMD network device drivers.
#
diff --git a/drivers/net/ethernet/amd/hplance.h b/drivers/net/ethernet/amd/hplance.h
index 04aee9e0376a..bc845a2c60c1 100644
--- a/drivers/net/ethernet/amd/hplance.h
+++ b/drivers/net/ethernet/amd/hplance.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Random defines and structures for the HP Lance driver.
* Copyright (C) 05/1998 Peter Maydell <pmaydell@chiark.greenend.org.uk>
* Based on the Sun Lance driver and the NetBSD HP Lance driver
diff --git a/drivers/net/ethernet/amd/xgbe/Makefile b/drivers/net/ethernet/amd/xgbe/Makefile
index 0dea8f5da899..620785ffbd51 100644
--- a/drivers/net/ethernet/amd/xgbe/Makefile
+++ b/drivers/net/ethernet/amd/xgbe/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_AMD_XGBE) += amd-xgbe.o
amd-xgbe-objs := xgbe-main.o xgbe-drv.o xgbe-dev.o \
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h b/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h
index 214986436ece..57e796870595 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h
@@ -22,8 +22,12 @@
#define AQ_CFG_FORCE_LEGACY_INT 0U
-#define AQ_CFG_IS_INTERRUPT_MODERATION_DEF 1U
-#define AQ_CFG_INTERRUPT_MODERATION_RATE_DEF 0xFFFFU
+#define AQ_CFG_INTERRUPT_MODERATION_OFF 0
+#define AQ_CFG_INTERRUPT_MODERATION_ON 1
+#define AQ_CFG_INTERRUPT_MODERATION_AUTO 0xFFFFU
+
+#define AQ_CFG_INTERRUPT_MODERATION_USEC_MAX (0x1FF * 2)
+
#define AQ_CFG_IRQ_MASK 0x1FFU
#define AQ_CFG_VECS_MAX 8U
@@ -51,6 +55,10 @@
#define AQ_CFG_SKB_FRAGS_MAX 32U
+/* Number of descriptors available in one ring to resume this ring queue
+ */
+#define AQ_CFG_RESTART_DESC_THRES (AQ_CFG_SKB_FRAGS_MAX * 2)
+
#define AQ_CFG_NAPI_WEIGHT 64U
#define AQ_CFG_MULTICAST_ADDRESS_MAX 32U
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c b/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c
index a761e91471df..d5e99b468870 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c
@@ -56,10 +56,6 @@ aq_ethtool_set_link_ksettings(struct net_device *ndev,
return aq_nic_set_link_ksettings(aq_nic, cmd);
}
-/* there "5U" is number of queue[#] stats lines (InPackets+...+InErrors) */
-static const unsigned int aq_ethtool_stat_queue_lines = 5U;
-static const unsigned int aq_ethtool_stat_queue_chars =
- 5U * ETH_GSTRING_LEN;
static const char aq_ethtool_stat_names[][ETH_GSTRING_LEN] = {
"InPackets",
"InUCast",
@@ -83,56 +79,26 @@ static const char aq_ethtool_stat_names[][ETH_GSTRING_LEN] = {
"InOctetsDma",
"OutOctetsDma",
"InDroppedDma",
- "Queue[0] InPackets",
- "Queue[0] OutPackets",
- "Queue[0] InJumboPackets",
- "Queue[0] InLroPackets",
- "Queue[0] InErrors",
- "Queue[1] InPackets",
- "Queue[1] OutPackets",
- "Queue[1] InJumboPackets",
- "Queue[1] InLroPackets",
- "Queue[1] InErrors",
- "Queue[2] InPackets",
- "Queue[2] OutPackets",
- "Queue[2] InJumboPackets",
- "Queue[2] InLroPackets",
- "Queue[2] InErrors",
- "Queue[3] InPackets",
- "Queue[3] OutPackets",
- "Queue[3] InJumboPackets",
- "Queue[3] InLroPackets",
- "Queue[3] InErrors",
- "Queue[4] InPackets",
- "Queue[4] OutPackets",
- "Queue[4] InJumboPackets",
- "Queue[4] InLroPackets",
- "Queue[4] InErrors",
- "Queue[5] InPackets",
- "Queue[5] OutPackets",
- "Queue[5] InJumboPackets",
- "Queue[5] InLroPackets",
- "Queue[5] InErrors",
- "Queue[6] InPackets",
- "Queue[6] OutPackets",
- "Queue[6] InJumboPackets",
- "Queue[6] InLroPackets",
- "Queue[6] InErrors",
- "Queue[7] InPackets",
- "Queue[7] OutPackets",
- "Queue[7] InJumboPackets",
- "Queue[7] InLroPackets",
- "Queue[7] InErrors",
+};
+
+static const char aq_ethtool_queue_stat_names[][ETH_GSTRING_LEN] = {
+ "Queue[%d] InPackets",
+ "Queue[%d] OutPackets",
+ "Queue[%d] Restarts",
+ "Queue[%d] InJumboPackets",
+ "Queue[%d] InLroPackets",
+ "Queue[%d] InErrors",
};
static void aq_ethtool_stats(struct net_device *ndev,
struct ethtool_stats *stats, u64 *data)
{
struct aq_nic_s *aq_nic = netdev_priv(ndev);
+ struct aq_nic_cfg_s *cfg = aq_nic_get_cfg(aq_nic);
-/* ASSERT: Need add lines to aq_ethtool_stat_names if AQ_CFG_VECS_MAX > 8 */
- BUILD_BUG_ON(AQ_CFG_VECS_MAX > 8);
- memset(data, 0, ARRAY_SIZE(aq_ethtool_stat_names) * sizeof(u64));
+ memset(data, 0, (ARRAY_SIZE(aq_ethtool_stat_names) +
+ ARRAY_SIZE(aq_ethtool_queue_stat_names) *
+ cfg->vecs) * sizeof(u64));
aq_nic_get_stats(aq_nic, data);
}
@@ -154,8 +120,8 @@ static void aq_ethtool_get_drvinfo(struct net_device *ndev,
strlcpy(drvinfo->bus_info, pdev ? pci_name(pdev) : "",
sizeof(drvinfo->bus_info));
- drvinfo->n_stats = ARRAY_SIZE(aq_ethtool_stat_names) -
- (AQ_CFG_VECS_MAX - cfg->vecs) * aq_ethtool_stat_queue_lines;
+ drvinfo->n_stats = ARRAY_SIZE(aq_ethtool_stat_names) +
+ cfg->vecs * ARRAY_SIZE(aq_ethtool_queue_stat_names);
drvinfo->testinfo_len = 0;
drvinfo->regdump_len = regs_count;
drvinfo->eedump_len = 0;
@@ -164,14 +130,25 @@ static void aq_ethtool_get_drvinfo(struct net_device *ndev,
static void aq_ethtool_get_strings(struct net_device *ndev,
u32 stringset, u8 *data)
{
+ int i, si;
struct aq_nic_s *aq_nic = netdev_priv(ndev);
struct aq_nic_cfg_s *cfg = aq_nic_get_cfg(aq_nic);
-
- if (stringset == ETH_SS_STATS)
- memcpy(data, *aq_ethtool_stat_names,
- sizeof(aq_ethtool_stat_names) -
- (AQ_CFG_VECS_MAX - cfg->vecs) *
- aq_ethtool_stat_queue_chars);
+ u8 *p = data;
+
+ if (stringset == ETH_SS_STATS) {
+ memcpy(p, *aq_ethtool_stat_names,
+ sizeof(aq_ethtool_stat_names));
+ p = p + sizeof(aq_ethtool_stat_names);
+ for (i = 0; i < cfg->vecs; i++) {
+ for (si = 0;
+ si < ARRAY_SIZE(aq_ethtool_queue_stat_names);
+ si++) {
+ snprintf(p, ETH_GSTRING_LEN,
+ aq_ethtool_queue_stat_names[si], i);
+ p += ETH_GSTRING_LEN;
+ }
+ }
+ }
}
static int aq_ethtool_get_sset_count(struct net_device *ndev, int stringset)
@@ -182,9 +159,8 @@ static int aq_ethtool_get_sset_count(struct net_device *ndev, int stringset)
switch (stringset) {
case ETH_SS_STATS:
- ret = ARRAY_SIZE(aq_ethtool_stat_names) -
- (AQ_CFG_VECS_MAX - cfg->vecs) *
- aq_ethtool_stat_queue_lines;
+ ret = ARRAY_SIZE(aq_ethtool_stat_names) +
+ cfg->vecs * ARRAY_SIZE(aq_ethtool_queue_stat_names);
break;
default:
ret = -EOPNOTSUPP;
@@ -245,6 +221,69 @@ static int aq_ethtool_get_rxnfc(struct net_device *ndev,
return err;
}
+int aq_ethtool_get_coalesce(struct net_device *ndev,
+ struct ethtool_coalesce *coal)
+{
+ struct aq_nic_s *aq_nic = netdev_priv(ndev);
+ struct aq_nic_cfg_s *cfg = aq_nic_get_cfg(aq_nic);
+
+ if (cfg->itr == AQ_CFG_INTERRUPT_MODERATION_ON ||
+ cfg->itr == AQ_CFG_INTERRUPT_MODERATION_AUTO) {
+ coal->rx_coalesce_usecs = cfg->rx_itr;
+ coal->tx_coalesce_usecs = cfg->tx_itr;
+ coal->rx_max_coalesced_frames = 0;
+ coal->tx_max_coalesced_frames = 0;
+ } else {
+ coal->rx_coalesce_usecs = 0;
+ coal->tx_coalesce_usecs = 0;
+ coal->rx_max_coalesced_frames = 1;
+ coal->tx_max_coalesced_frames = 1;
+ }
+ return 0;
+}
+
+int aq_ethtool_set_coalesce(struct net_device *ndev,
+ struct ethtool_coalesce *coal)
+{
+ struct aq_nic_s *aq_nic = netdev_priv(ndev);
+ struct aq_nic_cfg_s *cfg = aq_nic_get_cfg(aq_nic);
+
+ /* This is not yet supported
+ */
+ if (coal->use_adaptive_rx_coalesce || coal->use_adaptive_tx_coalesce)
+ return -EOPNOTSUPP;
+
+ /* Atlantic only supports timing based coalescing
+ */
+ if (coal->rx_max_coalesced_frames > 1 ||
+ coal->rx_coalesce_usecs_irq ||
+ coal->rx_max_coalesced_frames_irq)
+ return -EOPNOTSUPP;
+
+ if (coal->tx_max_coalesced_frames > 1 ||
+ coal->tx_coalesce_usecs_irq ||
+ coal->tx_max_coalesced_frames_irq)
+ return -EOPNOTSUPP;
+
+ /* We do not support frame counting. Check this
+ */
+ if (!(coal->rx_max_coalesced_frames == !coal->rx_coalesce_usecs))
+ return -EOPNOTSUPP;
+ if (!(coal->tx_max_coalesced_frames == !coal->tx_coalesce_usecs))
+ return -EOPNOTSUPP;
+
+ if (coal->rx_coalesce_usecs > AQ_CFG_INTERRUPT_MODERATION_USEC_MAX ||
+ coal->tx_coalesce_usecs > AQ_CFG_INTERRUPT_MODERATION_USEC_MAX)
+ return -EINVAL;
+
+ cfg->itr = AQ_CFG_INTERRUPT_MODERATION_ON;
+
+ cfg->rx_itr = coal->rx_coalesce_usecs;
+ cfg->tx_itr = coal->tx_coalesce_usecs;
+
+ return aq_nic_update_interrupt_moderation_settings(aq_nic);
+}
+
const struct ethtool_ops aq_ethtool_ops = {
.get_link = aq_ethtool_get_link,
.get_regs_len = aq_ethtool_get_regs_len,
@@ -259,4 +298,6 @@ const struct ethtool_ops aq_ethtool_ops = {
.get_ethtool_stats = aq_ethtool_stats,
.get_link_ksettings = aq_ethtool_get_link_ksettings,
.set_link_ksettings = aq_ethtool_set_link_ksettings,
+ .get_coalesce = aq_ethtool_get_coalesce,
+ .set_coalesce = aq_ethtool_set_coalesce,
};
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_hw.h b/drivers/net/ethernet/aquantia/atlantic/aq_hw.h
index bf9b3f020e10..0207927dc8a6 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_hw.h
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_hw.h
@@ -151,8 +151,7 @@ struct aq_hw_ops {
[ETH_ALEN],
u32 count);
- int (*hw_interrupt_moderation_set)(struct aq_hw_s *self,
- bool itr_enabled);
+ int (*hw_interrupt_moderation_set)(struct aq_hw_s *self);
int (*hw_rss_set)(struct aq_hw_s *self,
struct aq_rss_parameters *rss_params);
@@ -163,6 +162,8 @@ struct aq_hw_ops {
int (*hw_get_regs)(struct aq_hw_s *self,
struct aq_hw_caps_s *aq_hw_caps, u32 *regs_buff);
+ int (*hw_update_stats)(struct aq_hw_s *self);
+
int (*hw_get_hw_stats)(struct aq_hw_s *self, u64 *data,
unsigned int *p_count);
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
index 6ac9e2602d6d..483e97691eea 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
@@ -16,6 +16,7 @@
#include "aq_pci_func.h"
#include "aq_nic_internal.h"
+#include <linux/moduleparam.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/timer.h>
@@ -24,6 +25,18 @@
#include <linux/tcp.h>
#include <net/ip.h>
+static unsigned int aq_itr = AQ_CFG_INTERRUPT_MODERATION_AUTO;
+module_param_named(aq_itr, aq_itr, uint, 0644);
+MODULE_PARM_DESC(aq_itr, "Interrupt throttling mode");
+
+static unsigned int aq_itr_tx;
+module_param_named(aq_itr_tx, aq_itr_tx, uint, 0644);
+MODULE_PARM_DESC(aq_itr_tx, "TX interrupt throttle rate");
+
+static unsigned int aq_itr_rx;
+module_param_named(aq_itr_rx, aq_itr_rx, uint, 0644);
+MODULE_PARM_DESC(aq_itr_rx, "RX interrupt throttle rate");
+
static void aq_nic_rss_init(struct aq_nic_s *self, unsigned int num_rss_queues)
{
struct aq_nic_cfg_s *cfg = &self->aq_nic_cfg;
@@ -61,9 +74,9 @@ static void aq_nic_cfg_init_defaults(struct aq_nic_s *self)
cfg->is_polling = AQ_CFG_IS_POLLING_DEF;
- cfg->is_interrupt_moderation = AQ_CFG_IS_INTERRUPT_MODERATION_DEF;
- cfg->itr = cfg->is_interrupt_moderation ?
- AQ_CFG_INTERRUPT_MODERATION_RATE_DEF : 0U;
+ cfg->itr = aq_itr;
+ cfg->tx_itr = aq_itr_tx;
+ cfg->rx_itr = aq_itr_rx;
cfg->is_rss = AQ_CFG_IS_RSS_DEF;
cfg->num_rss_queues = AQ_CFG_NUM_RSS_QUEUES_DEF;
@@ -119,6 +132,37 @@ int aq_nic_cfg_start(struct aq_nic_s *self)
return 0;
}
+static int aq_nic_update_link_status(struct aq_nic_s *self)
+{
+ int err = self->aq_hw_ops.hw_get_link_status(self->aq_hw);
+
+ if (err)
+ return err;
+
+ if (self->link_status.mbps != self->aq_hw->aq_link_status.mbps) {
+ pr_info("%s: link change old %d new %d\n",
+ AQ_CFG_DRV_NAME, self->link_status.mbps,
+ self->aq_hw->aq_link_status.mbps);
+ aq_nic_update_interrupt_moderation_settings(self);
+ }
+
+ self->link_status = self->aq_hw->aq_link_status;
+ if (!netif_carrier_ok(self->ndev) && self->link_status.mbps) {
+ aq_utils_obj_set(&self->header.flags,
+ AQ_NIC_FLAG_STARTED);
+ aq_utils_obj_clear(&self->header.flags,
+ AQ_NIC_LINK_DOWN);
+ netif_carrier_on(self->ndev);
+ netif_tx_wake_all_queues(self->ndev);
+ }
+ if (netif_carrier_ok(self->ndev) && !self->link_status.mbps) {
+ netif_carrier_off(self->ndev);
+ netif_tx_disable(self->ndev);
+ aq_utils_obj_set(&self->header.flags, AQ_NIC_LINK_DOWN);
+ }
+ return 0;
+}
+
static void aq_nic_service_timer_cb(unsigned long param)
{
struct aq_nic_s *self = (struct aq_nic_s *)param;
@@ -131,25 +175,12 @@ static void aq_nic_service_timer_cb(unsigned long param)
if (aq_utils_obj_test(&self->header.flags, AQ_NIC_FLAGS_IS_NOT_READY))
goto err_exit;
- err = self->aq_hw_ops.hw_get_link_status(self->aq_hw);
- if (err < 0)
+ err = aq_nic_update_link_status(self);
+ if (err)
goto err_exit;
- self->link_status = self->aq_hw->aq_link_status;
-
- self->aq_hw_ops.hw_interrupt_moderation_set(self->aq_hw,
- self->aq_nic_cfg.is_interrupt_moderation);
-
- if (self->link_status.mbps) {
- aq_utils_obj_set(&self->header.flags,
- AQ_NIC_FLAG_STARTED);
- aq_utils_obj_clear(&self->header.flags,
- AQ_NIC_LINK_DOWN);
- netif_carrier_on(self->ndev);
- } else {
- netif_carrier_off(self->ndev);
- aq_utils_obj_set(&self->header.flags, AQ_NIC_LINK_DOWN);
- }
+ if (self->aq_hw_ops.hw_update_stats)
+ self->aq_hw_ops.hw_update_stats(self->aq_hw);
memset(&stats_rx, 0U, sizeof(struct aq_ring_stats_rx_s));
memset(&stats_tx, 0U, sizeof(struct aq_ring_stats_tx_s));
@@ -214,7 +245,6 @@ struct aq_nic_s *aq_nic_alloc_cold(const struct net_device_ops *ndev_ops,
SET_NETDEV_DEV(ndev, dev);
ndev->if_port = port;
- ndev->min_mtu = ETH_MIN_MTU;
self->ndev = ndev;
self->aq_pci_func = aq_pci_func;
@@ -241,7 +271,6 @@ err_exit:
int aq_nic_ndev_register(struct aq_nic_s *self)
{
int err = 0;
- unsigned int i = 0U;
if (!self->ndev) {
err = -EINVAL;
@@ -263,8 +292,7 @@ int aq_nic_ndev_register(struct aq_nic_s *self)
netif_carrier_off(self->ndev);
- for (i = AQ_CFG_VECS_MAX; i--;)
- aq_nic_ndev_queue_stop(self, i);
+ netif_tx_disable(self->ndev);
err = register_netdev(self->ndev);
if (err < 0)
@@ -283,6 +311,7 @@ int aq_nic_ndev_init(struct aq_nic_s *self)
self->ndev->features = aq_hw_caps->hw_features;
self->ndev->priv_flags = aq_hw_caps->hw_priv_flags;
self->ndev->mtu = aq_nic_cfg->mtu - ETH_HLEN;
+ self->ndev->max_mtu = self->aq_hw_caps.mtu - ETH_FCS_LEN - ETH_HLEN;
return 0;
}
@@ -318,12 +347,9 @@ struct aq_nic_s *aq_nic_alloc_hot(struct net_device *ndev)
err = -EINVAL;
goto err_exit;
}
- if (netif_running(ndev)) {
- unsigned int i;
-
- for (i = AQ_CFG_VECS_MAX; i--;)
- netif_stop_subqueue(ndev, i);
- }
+ if (netif_running(ndev))
+ netif_tx_disable(ndev);
+ netif_carrier_off(self->ndev);
for (self->aq_vecs = 0; self->aq_vecs < self->aq_nic_cfg.vecs;
self->aq_vecs++) {
@@ -383,16 +409,6 @@ err_exit:
return err;
}
-void aq_nic_ndev_queue_start(struct aq_nic_s *self, unsigned int idx)
-{
- netif_start_subqueue(self->ndev, idx);
-}
-
-void aq_nic_ndev_queue_stop(struct aq_nic_s *self, unsigned int idx)
-{
- netif_stop_subqueue(self->ndev, idx);
-}
-
int aq_nic_start(struct aq_nic_s *self)
{
struct aq_vec_s *aq_vec = NULL;
@@ -421,9 +437,8 @@ int aq_nic_start(struct aq_nic_s *self)
if (err < 0)
goto err_exit;
- err = self->aq_hw_ops.hw_interrupt_moderation_set(self->aq_hw,
- self->aq_nic_cfg.is_interrupt_moderation);
- if (err < 0)
+ err = aq_nic_update_interrupt_moderation_settings(self);
+ if (err)
goto err_exit;
setup_timer(&self->service_timer, &aq_nic_service_timer_cb,
(unsigned long)self);
@@ -451,10 +466,6 @@ int aq_nic_start(struct aq_nic_s *self)
goto err_exit;
}
- for (i = 0U, aq_vec = self->aq_vec[0];
- self->aq_vecs > i; ++i, aq_vec = self->aq_vec[i])
- aq_nic_ndev_queue_start(self, i);
-
err = netif_set_real_num_tx_queues(self->ndev, self->aq_vecs);
if (err < 0)
goto err_exit;
@@ -463,6 +474,8 @@ int aq_nic_start(struct aq_nic_s *self)
if (err < 0)
goto err_exit;
+ netif_tx_start_all_queues(self->ndev);
+
err_exit:
return err;
}
@@ -475,6 +488,7 @@ static unsigned int aq_nic_map_skb(struct aq_nic_s *self,
unsigned int nr_frags = skb_shinfo(skb)->nr_frags;
unsigned int frag_count = 0U;
unsigned int dx = ring->sw_tail;
+ struct aq_ring_buff_s *first = NULL;
struct aq_ring_buff_s *dx_buff = &ring->buff_ring[dx];
if (unlikely(skb_is_gso(skb))) {
@@ -485,6 +499,7 @@ static unsigned int aq_nic_map_skb(struct aq_nic_s *self,
dx_buff->len_l4 = tcp_hdrlen(skb);
dx_buff->mss = skb_shinfo(skb)->gso_size;
dx_buff->is_txc = 1U;
+ dx_buff->eop_index = 0xffffU;
dx_buff->is_ipv6 =
(ip_hdr(skb)->version == 6) ? 1U : 0U;
@@ -504,6 +519,7 @@ static unsigned int aq_nic_map_skb(struct aq_nic_s *self,
if (unlikely(dma_mapping_error(aq_nic_get_dev(self), dx_buff->pa)))
goto exit;
+ first = dx_buff;
dx_buff->len_pkt = skb->len;
dx_buff->is_sop = 1U;
dx_buff->is_mapped = 1U;
@@ -532,40 +548,46 @@ static unsigned int aq_nic_map_skb(struct aq_nic_s *self,
for (; nr_frags--; ++frag_count) {
unsigned int frag_len = 0U;
+ unsigned int buff_offset = 0U;
+ unsigned int buff_size = 0U;
dma_addr_t frag_pa;
skb_frag_t *frag = &skb_shinfo(skb)->frags[frag_count];
frag_len = skb_frag_size(frag);
- frag_pa = skb_frag_dma_map(aq_nic_get_dev(self), frag, 0,
- frag_len, DMA_TO_DEVICE);
- if (unlikely(dma_mapping_error(aq_nic_get_dev(self), frag_pa)))
- goto mapping_error;
+ while (frag_len) {
+ if (frag_len > AQ_CFG_TX_FRAME_MAX)
+ buff_size = AQ_CFG_TX_FRAME_MAX;
+ else
+ buff_size = frag_len;
+
+ frag_pa = skb_frag_dma_map(aq_nic_get_dev(self),
+ frag,
+ buff_offset,
+ buff_size,
+ DMA_TO_DEVICE);
+
+ if (unlikely(dma_mapping_error(aq_nic_get_dev(self),
+ frag_pa)))
+ goto mapping_error;
- while (frag_len > AQ_CFG_TX_FRAME_MAX) {
dx = aq_ring_next_dx(ring, dx);
dx_buff = &ring->buff_ring[dx];
dx_buff->flags = 0U;
- dx_buff->len = AQ_CFG_TX_FRAME_MAX;
+ dx_buff->len = buff_size;
dx_buff->pa = frag_pa;
dx_buff->is_mapped = 1U;
+ dx_buff->eop_index = 0xffffU;
+
+ frag_len -= buff_size;
+ buff_offset += buff_size;
- frag_len -= AQ_CFG_TX_FRAME_MAX;
- frag_pa += AQ_CFG_TX_FRAME_MAX;
++ret;
}
-
- dx = aq_ring_next_dx(ring, dx);
- dx_buff = &ring->buff_ring[dx];
-
- dx_buff->flags = 0U;
- dx_buff->len = frag_len;
- dx_buff->pa = frag_pa;
- dx_buff->is_mapped = 1U;
- ++ret;
}
+ first->eop_index = dx;
dx_buff->is_eop = 1U;
dx_buff->skb = skb;
goto exit;
@@ -602,7 +624,6 @@ int aq_nic_xmit(struct aq_nic_s *self, struct sk_buff *skb)
unsigned int vec = skb->queue_mapping % self->aq_nic_cfg.vecs;
unsigned int tc = 0U;
int err = NETDEV_TX_OK;
- bool is_nic_in_bad_state;
frags = skb_shinfo(skb)->nr_frags + 1;
@@ -613,13 +634,10 @@ int aq_nic_xmit(struct aq_nic_s *self, struct sk_buff *skb)
goto err_exit;
}
- is_nic_in_bad_state = aq_utils_obj_test(&self->header.flags,
- AQ_NIC_FLAGS_IS_NOT_TX_READY) ||
- (aq_ring_avail_dx(ring) <
- AQ_CFG_SKB_FRAGS_MAX);
+ aq_ring_update_queue_state(ring);
- if (is_nic_in_bad_state) {
- aq_nic_ndev_queue_stop(self, ring->idx);
+ /* Above status update may stop the queue. Check this. */
+ if (__netif_subqueue_stopped(self->ndev, ring->idx)) {
err = NETDEV_TX_BUSY;
goto err_exit;
}
@@ -631,9 +649,6 @@ int aq_nic_xmit(struct aq_nic_s *self, struct sk_buff *skb)
ring,
frags);
if (err >= 0) {
- if (aq_ring_avail_dx(ring) < AQ_CFG_SKB_FRAGS_MAX + 1)
- aq_nic_ndev_queue_stop(self, ring->idx);
-
++ring->stats.tx.packets;
ring->stats.tx.bytes += skb->len;
}
@@ -645,6 +660,11 @@ err_exit:
return err;
}
+int aq_nic_update_interrupt_moderation_settings(struct aq_nic_s *self)
+{
+ return self->aq_hw_ops.hw_interrupt_moderation_set(self->aq_hw);
+}
+
int aq_nic_set_packet_filter(struct aq_nic_s *self, unsigned int flags)
{
int err = 0;
@@ -693,16 +713,9 @@ int aq_nic_set_multicast_list(struct aq_nic_s *self, struct net_device *ndev)
int aq_nic_set_mtu(struct aq_nic_s *self, int new_mtu)
{
- int err = 0;
-
- if (new_mtu > self->aq_hw_caps.mtu) {
- err = -EINVAL;
- goto err_exit;
- }
self->aq_nic_cfg.mtu = new_mtu;
-err_exit:
- return err;
+ return 0;
}
int aq_nic_set_mac(struct aq_nic_s *self, struct net_device *ndev)
@@ -905,9 +918,8 @@ int aq_nic_stop(struct aq_nic_s *self)
struct aq_vec_s *aq_vec = NULL;
unsigned int i = 0U;
- for (i = 0U, aq_vec = self->aq_vec[0];
- self->aq_vecs > i; ++i, aq_vec = self->aq_vec[i])
- aq_nic_ndev_queue_stop(self, i);
+ netif_tx_disable(self->ndev);
+ netif_carrier_off(self->ndev);
del_timer_sync(&self->service_timer);
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.h b/drivers/net/ethernet/aquantia/atlantic/aq_nic.h
index 7fc2a5ecb2b7..4309983acdd6 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.h
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.h
@@ -40,6 +40,8 @@ struct aq_nic_cfg_s {
u32 vecs; /* vecs==allocated irqs */
u32 irq_type;
u32 itr;
+ u16 rx_itr;
+ u16 tx_itr;
u32 num_rss_queues;
u32 mtu;
u32 ucp_0x364;
@@ -49,7 +51,6 @@ struct aq_nic_cfg_s {
u16 is_mc_list_enabled;
u16 mc_list_count;
bool is_autoneg;
- bool is_interrupt_moderation;
bool is_polling;
bool is_rss;
bool is_lro;
@@ -83,8 +84,6 @@ struct net_device *aq_nic_get_ndev(struct aq_nic_s *self);
int aq_nic_init(struct aq_nic_s *self);
int aq_nic_cfg_start(struct aq_nic_s *self);
int aq_nic_ndev_register(struct aq_nic_s *self);
-void aq_nic_ndev_queue_start(struct aq_nic_s *self, unsigned int idx);
-void aq_nic_ndev_queue_stop(struct aq_nic_s *self, unsigned int idx);
void aq_nic_ndev_free(struct aq_nic_s *self);
int aq_nic_start(struct aq_nic_s *self);
int aq_nic_xmit(struct aq_nic_s *self, struct sk_buff *skb);
@@ -106,5 +105,6 @@ int aq_nic_set_link_ksettings(struct aq_nic_s *self,
struct aq_nic_cfg_s *aq_nic_get_cfg(struct aq_nic_s *self);
u32 aq_nic_get_fw_version(struct aq_nic_s *self);
int aq_nic_change_pm_state(struct aq_nic_s *self, pm_message_t *pm_msg);
+int aq_nic_update_interrupt_moderation_settings(struct aq_nic_s *self);
#endif /* AQ_NIC_H */
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
index 4c6c882c6a1c..cadaa646c89f 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
@@ -85,6 +85,7 @@ int aq_pci_func_init(struct aq_pci_func_s *self)
int err = 0;
unsigned int bar = 0U;
unsigned int port = 0U;
+ unsigned int numvecs = 0U;
err = pci_enable_device(self->pdev);
if (err < 0)
@@ -142,10 +143,12 @@ int aq_pci_func_init(struct aq_pci_func_s *self)
}
}
- /*enable interrupts */
+ numvecs = min((u8)AQ_CFG_VECS_DEF, self->aq_hw_caps.msix_irqs);
+ numvecs = min(numvecs, num_online_cpus());
+
+ /* enable interrupts */
#if !AQ_CFG_FORCE_LEGACY_INT
- err = pci_alloc_irq_vectors(self->pdev, self->aq_hw_caps.msix_irqs,
- self->aq_hw_caps.msix_irqs, PCI_IRQ_MSIX);
+ err = pci_alloc_irq_vectors(self->pdev, numvecs, numvecs, PCI_IRQ_MSIX);
if (err < 0) {
err = pci_alloc_irq_vectors(self->pdev, 1, 1,
@@ -153,7 +156,7 @@ int aq_pci_func_init(struct aq_pci_func_s *self)
if (err < 0)
goto err_exit;
}
-#endif
+#endif /* AQ_CFG_FORCE_LEGACY_INT */
/* net device init */
for (port = 0; port < self->ports; ++port) {
@@ -265,6 +268,9 @@ void aq_pci_func_free(struct aq_pci_func_s *self)
aq_nic_ndev_free(self->port[port]);
}
+ if (self->mmio)
+ iounmap(self->mmio);
+
kfree(self);
err_exit:;
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_ring.c b/drivers/net/ethernet/aquantia/atlantic/aq_ring.c
index 4eee1996a825..0654e0c76bc2 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_ring.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_ring.c
@@ -104,6 +104,38 @@ int aq_ring_init(struct aq_ring_s *self)
return 0;
}
+static inline bool aq_ring_dx_in_range(unsigned int h, unsigned int i,
+ unsigned int t)
+{
+ return (h < t) ? ((h < i) && (i < t)) : ((h < i) || (i < t));
+}
+
+void aq_ring_update_queue_state(struct aq_ring_s *ring)
+{
+ if (aq_ring_avail_dx(ring) <= AQ_CFG_SKB_FRAGS_MAX)
+ aq_ring_queue_stop(ring);
+ else if (aq_ring_avail_dx(ring) > AQ_CFG_RESTART_DESC_THRES)
+ aq_ring_queue_wake(ring);
+}
+
+void aq_ring_queue_wake(struct aq_ring_s *ring)
+{
+ struct net_device *ndev = aq_nic_get_ndev(ring->aq_nic);
+
+ if (__netif_subqueue_stopped(ndev, ring->idx)) {
+ netif_wake_subqueue(ndev, ring->idx);
+ ring->stats.tx.queue_restarts++;
+ }
+}
+
+void aq_ring_queue_stop(struct aq_ring_s *ring)
+{
+ struct net_device *ndev = aq_nic_get_ndev(ring->aq_nic);
+
+ if (!__netif_subqueue_stopped(ndev, ring->idx))
+ netif_stop_subqueue(ndev, ring->idx);
+}
+
void aq_ring_tx_clean(struct aq_ring_s *self)
{
struct device *dev = aq_nic_get_dev(self->aq_nic);
@@ -113,23 +145,28 @@ void aq_ring_tx_clean(struct aq_ring_s *self)
struct aq_ring_buff_s *buff = &self->buff_ring[self->sw_head];
if (likely(buff->is_mapped)) {
- if (unlikely(buff->is_sop))
+ if (unlikely(buff->is_sop)) {
+ if (!buff->is_eop &&
+ buff->eop_index != 0xffffU &&
+ (!aq_ring_dx_in_range(self->sw_head,
+ buff->eop_index,
+ self->hw_head)))
+ break;
+
dma_unmap_single(dev, buff->pa, buff->len,
DMA_TO_DEVICE);
- else
+ } else {
dma_unmap_page(dev, buff->pa, buff->len,
DMA_TO_DEVICE);
+ }
}
if (unlikely(buff->is_eop))
dev_kfree_skb_any(buff->skb);
- }
-}
-static inline unsigned int aq_ring_dx_in_range(unsigned int h, unsigned int i,
- unsigned int t)
-{
- return (h < t) ? ((h < i) && (i < t)) : ((h < i) || (i < t));
+ buff->pa = 0U;
+ buff->eop_index = 0xffffU;
+ }
}
#define AQ_SKB_ALIGN SKB_DATA_ALIGN(sizeof(struct skb_shared_info))
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_ring.h b/drivers/net/ethernet/aquantia/atlantic/aq_ring.h
index 782176c5f4f8..5844078764bd 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_ring.h
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_ring.h
@@ -65,7 +65,7 @@ struct __packed aq_ring_buff_s {
};
union {
struct {
- u32 len:16;
+ u16 len;
u32 is_ip_cso:1;
u32 is_udp_cso:1;
u32 is_tcp_cso:1;
@@ -77,8 +77,10 @@ struct __packed aq_ring_buff_s {
u32 is_cleaned:1;
u32 is_error:1;
u32 rsvd3:6;
+ u16 eop_index;
+ u16 rsvd4;
};
- u32 flags;
+ u64 flags;
};
};
@@ -94,6 +96,7 @@ struct aq_ring_stats_tx_s {
u64 errors;
u64 packets;
u64 bytes;
+ u64 queue_restarts;
};
union aq_ring_stats_s {
@@ -147,6 +150,9 @@ struct aq_ring_s *aq_ring_rx_alloc(struct aq_ring_s *self,
int aq_ring_init(struct aq_ring_s *self);
void aq_ring_rx_deinit(struct aq_ring_s *self);
void aq_ring_free(struct aq_ring_s *self);
+void aq_ring_update_queue_state(struct aq_ring_s *ring);
+void aq_ring_queue_wake(struct aq_ring_s *ring);
+void aq_ring_queue_stop(struct aq_ring_s *ring);
void aq_ring_tx_clean(struct aq_ring_s *self);
int aq_ring_rx_clean(struct aq_ring_s *self,
struct napi_struct *napi,
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_vec.c b/drivers/net/ethernet/aquantia/atlantic/aq_vec.c
index ebf588004c46..5fecc9a099ef 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_vec.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_vec.c
@@ -59,12 +59,7 @@ static int aq_vec_poll(struct napi_struct *napi, int budget)
if (ring[AQ_VEC_TX_ID].sw_head !=
ring[AQ_VEC_TX_ID].hw_head) {
aq_ring_tx_clean(&ring[AQ_VEC_TX_ID]);
-
- if (aq_ring_avail_dx(&ring[AQ_VEC_TX_ID]) >
- AQ_CFG_SKB_FRAGS_MAX) {
- aq_nic_ndev_queue_start(self->aq_nic,
- ring[AQ_VEC_TX_ID].idx);
- }
+ aq_ring_update_queue_state(&ring[AQ_VEC_TX_ID]);
was_tx_cleaned = true;
}
@@ -364,6 +359,7 @@ void aq_vec_add_stats(struct aq_vec_s *self,
stats_tx->packets += tx->packets;
stats_tx->bytes += tx->bytes;
stats_tx->errors += tx->errors;
+ stats_tx->queue_restarts += tx->queue_restarts;
}
}
@@ -377,8 +373,11 @@ int aq_vec_get_sw_stats(struct aq_vec_s *self, u64 *data, unsigned int *p_count)
memset(&stats_tx, 0U, sizeof(struct aq_ring_stats_tx_s));
aq_vec_add_stats(self, &stats_rx, &stats_tx);
+ /* This data should mimic aq_ethtool_queue_stat_names structure
+ */
data[count] += stats_rx.packets;
data[++count] += stats_tx.packets;
+ data[++count] += stats_tx.queue_restarts;
data[++count] += stats_rx.jumbo_packets;
data[++count] += stats_rx.lro_packets;
data[++count] += stats_rx.errors;
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
index c5a02df7a48b..07b3c49a16a4 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
@@ -765,24 +765,23 @@ err_exit:
return err;
}
-static int hw_atl_a0_hw_interrupt_moderation_set(struct aq_hw_s *self,
- bool itr_enabled)
+static int hw_atl_a0_hw_interrupt_moderation_set(struct aq_hw_s *self)
{
unsigned int i = 0U;
+ u32 itr_rx;
- if (itr_enabled && self->aq_nic_cfg->itr) {
- if (self->aq_nic_cfg->itr != 0xFFFFU) {
+ if (self->aq_nic_cfg->itr) {
+ if (self->aq_nic_cfg->itr != AQ_CFG_INTERRUPT_MODERATION_AUTO) {
u32 itr_ = (self->aq_nic_cfg->itr >> 1);
itr_ = min(AQ_CFG_IRQ_MASK, itr_);
- PHAL_ATLANTIC_A0->itr_rx = 0x80000000U |
- (itr_ << 0x10);
+ itr_rx = 0x80000000U | (itr_ << 0x10);
} else {
u32 n = 0xFFFFU & aq_hw_read_reg(self, 0x00002A00U);
if (n < self->aq_link_status.mbps) {
- PHAL_ATLANTIC_A0->itr_rx = 0U;
+ itr_rx = 0U;
} else {
static unsigned int hw_timers_tbl_[] = {
0x01CU, /* 10Gbit */
@@ -797,8 +796,7 @@ static int hw_atl_a0_hw_interrupt_moderation_set(struct aq_hw_s *self,
hw_atl_utils_mbps_2_speed_index(
self->aq_link_status.mbps);
- PHAL_ATLANTIC_A0->itr_rx =
- 0x80000000U |
+ itr_rx = 0x80000000U |
(hw_timers_tbl_[speed_index] << 0x10U);
}
@@ -806,11 +804,11 @@ static int hw_atl_a0_hw_interrupt_moderation_set(struct aq_hw_s *self,
aq_hw_write_reg(self, 0x00002A00U, 0x8D000000U);
}
} else {
- PHAL_ATLANTIC_A0->itr_rx = 0U;
+ itr_rx = 0U;
}
for (i = HW_ATL_A0_RINGS_MAX; i--;)
- reg_irq_thr_set(self, PHAL_ATLANTIC_A0->itr_rx, i);
+ reg_irq_thr_set(self, itr_rx, i);
return aq_hw_err_from_flags(self);
}
@@ -885,6 +883,7 @@ static struct aq_hw_ops hw_atl_ops_ = {
.hw_rss_set = hw_atl_a0_hw_rss_set,
.hw_rss_hash_set = hw_atl_a0_hw_rss_hash_set,
.hw_get_regs = hw_atl_utils_hw_get_regs,
+ .hw_update_stats = hw_atl_utils_update_stats,
.hw_get_hw_stats = hw_atl_utils_get_hw_stats,
.hw_get_fw_version = hw_atl_utils_get_fw_version,
};
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
index 21784cc39dab..ec68c20efcbd 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
@@ -788,39 +788,45 @@ err_exit:
return err;
}
-static int hw_atl_b0_hw_interrupt_moderation_set(struct aq_hw_s *self,
- bool itr_enabled)
+static int hw_atl_b0_hw_interrupt_moderation_set(struct aq_hw_s *self)
{
unsigned int i = 0U;
+ u32 itr_tx = 2U;
+ u32 itr_rx = 2U;
- if (itr_enabled && self->aq_nic_cfg->itr) {
+ switch (self->aq_nic_cfg->itr) {
+ case AQ_CFG_INTERRUPT_MODERATION_ON:
+ case AQ_CFG_INTERRUPT_MODERATION_AUTO:
tdm_tx_desc_wr_wb_irq_en_set(self, 0U);
tdm_tdm_intr_moder_en_set(self, 1U);
rdm_rx_desc_wr_wb_irq_en_set(self, 0U);
rdm_rdm_intr_moder_en_set(self, 1U);
- PHAL_ATLANTIC_B0->itr_tx = 2U;
- PHAL_ATLANTIC_B0->itr_rx = 2U;
+ if (self->aq_nic_cfg->itr == AQ_CFG_INTERRUPT_MODERATION_ON) {
+ /* HW timers are in 2us units */
+ int tx_max_timer = self->aq_nic_cfg->tx_itr / 2;
+ int tx_min_timer = tx_max_timer / 2;
- if (self->aq_nic_cfg->itr != 0xFFFFU) {
- unsigned int max_timer = self->aq_nic_cfg->itr / 2U;
- unsigned int min_timer = self->aq_nic_cfg->itr / 32U;
+ int rx_max_timer = self->aq_nic_cfg->rx_itr / 2;
+ int rx_min_timer = rx_max_timer / 2;
- max_timer = min(0x1FFU, max_timer);
- min_timer = min(0xFFU, min_timer);
+ tx_max_timer = min(HW_ATL_INTR_MODER_MAX, tx_max_timer);
+ tx_min_timer = min(HW_ATL_INTR_MODER_MIN, tx_min_timer);
+ rx_max_timer = min(HW_ATL_INTR_MODER_MAX, rx_max_timer);
+ rx_min_timer = min(HW_ATL_INTR_MODER_MIN, rx_min_timer);
- PHAL_ATLANTIC_B0->itr_tx |= min_timer << 0x8U;
- PHAL_ATLANTIC_B0->itr_tx |= max_timer << 0x10U;
- PHAL_ATLANTIC_B0->itr_rx |= min_timer << 0x8U;
- PHAL_ATLANTIC_B0->itr_rx |= max_timer << 0x10U;
+ itr_tx |= tx_min_timer << 0x8U;
+ itr_tx |= tx_max_timer << 0x10U;
+ itr_rx |= rx_min_timer << 0x8U;
+ itr_rx |= rx_max_timer << 0x10U;
} else {
static unsigned int hw_atl_b0_timers_table_tx_[][2] = {
- {0xffU, 0xffU}, /* 10Gbit */
- {0xffU, 0x1ffU}, /* 5Gbit */
- {0xffU, 0x1ffU}, /* 5Gbit 5GS */
- {0xffU, 0x1ffU}, /* 2.5Gbit */
- {0xffU, 0x1ffU}, /* 1Gbit */
- {0xffU, 0x1ffU}, /* 100Mbit */
+ {0xfU, 0xffU}, /* 10Gbit */
+ {0xfU, 0x1ffU}, /* 5Gbit */
+ {0xfU, 0x1ffU}, /* 5Gbit 5GS */
+ {0xfU, 0x1ffU}, /* 2.5Gbit */
+ {0xfU, 0x1ffU}, /* 1Gbit */
+ {0xfU, 0x1ffU}, /* 100Mbit */
};
static unsigned int hw_atl_b0_timers_table_rx_[][2] = {
@@ -836,34 +842,36 @@ static int hw_atl_b0_hw_interrupt_moderation_set(struct aq_hw_s *self,
hw_atl_utils_mbps_2_speed_index(
self->aq_link_status.mbps);
- PHAL_ATLANTIC_B0->itr_tx |=
- hw_atl_b0_timers_table_tx_[speed_index]
- [0] << 0x8U; /* set min timer value */
- PHAL_ATLANTIC_B0->itr_tx |=
- hw_atl_b0_timers_table_tx_[speed_index]
- [1] << 0x10U; /* set max timer value */
-
- PHAL_ATLANTIC_B0->itr_rx |=
- hw_atl_b0_timers_table_rx_[speed_index]
- [0] << 0x8U; /* set min timer value */
- PHAL_ATLANTIC_B0->itr_rx |=
- hw_atl_b0_timers_table_rx_[speed_index]
- [1] << 0x10U; /* set max timer value */
+ /* Update user visible ITR settings */
+ self->aq_nic_cfg->tx_itr = hw_atl_b0_timers_table_tx_
+ [speed_index][1] * 2;
+ self->aq_nic_cfg->rx_itr = hw_atl_b0_timers_table_rx_
+ [speed_index][1] * 2;
+
+ itr_tx |= hw_atl_b0_timers_table_tx_
+ [speed_index][0] << 0x8U;
+ itr_tx |= hw_atl_b0_timers_table_tx_
+ [speed_index][1] << 0x10U;
+
+ itr_rx |= hw_atl_b0_timers_table_rx_
+ [speed_index][0] << 0x8U;
+ itr_rx |= hw_atl_b0_timers_table_rx_
+ [speed_index][1] << 0x10U;
}
- } else {
+ break;
+ case AQ_CFG_INTERRUPT_MODERATION_OFF:
tdm_tx_desc_wr_wb_irq_en_set(self, 1U);
tdm_tdm_intr_moder_en_set(self, 0U);
rdm_rx_desc_wr_wb_irq_en_set(self, 1U);
rdm_rdm_intr_moder_en_set(self, 0U);
- PHAL_ATLANTIC_B0->itr_tx = 0U;
- PHAL_ATLANTIC_B0->itr_rx = 0U;
+ itr_tx = 0U;
+ itr_rx = 0U;
+ break;
}
for (i = HW_ATL_B0_RINGS_MAX; i--;) {
- reg_tx_intr_moder_ctrl_set(self,
- PHAL_ATLANTIC_B0->itr_tx, i);
- reg_rx_intr_moder_ctrl_set(self,
- PHAL_ATLANTIC_B0->itr_rx, i);
+ reg_tx_intr_moder_ctrl_set(self, itr_tx, i);
+ reg_rx_intr_moder_ctrl_set(self, itr_rx, i);
}
return aq_hw_err_from_flags(self);
@@ -939,6 +947,7 @@ static struct aq_hw_ops hw_atl_ops_ = {
.hw_rss_set = hw_atl_b0_hw_rss_set,
.hw_rss_hash_set = hw_atl_b0_hw_rss_hash_set,
.hw_get_regs = hw_atl_utils_hw_get_regs,
+ .hw_update_stats = hw_atl_utils_update_stats,
.hw_get_hw_stats = hw_atl_utils_get_hw_stats,
.hw_get_fw_version = hw_atl_utils_get_fw_version,
};
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0_internal.h b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0_internal.h
index f3957e930340..9aa2c6edfca2 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0_internal.h
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0_internal.h
@@ -16,7 +16,7 @@
#include "../aq_common.h"
-#define HW_ATL_B0_MTU_JUMBO (16000U)
+#define HW_ATL_B0_MTU_JUMBO 16352U
#define HW_ATL_B0_MTU 1514U
#define HW_ATL_B0_TX_RINGS 4U
@@ -139,6 +139,9 @@
#define HW_ATL_B0_FW_VER_EXPECTED 0x01050006U
+#define HW_ATL_INTR_MODER_MAX 0x1FF
+#define HW_ATL_INTR_MODER_MIN 0xFF
+
/* Hardware tx descriptor */
struct __packed hw_atl_txd_s {
u64 buf_addr;
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
index 4f5ec9a0fbfb..1fe016fc4bc7 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
@@ -255,6 +255,15 @@ err_exit:
return err;
}
+int hw_atl_utils_mpi_read_mbox(struct aq_hw_s *self,
+ struct hw_aq_atl_utils_mbox_header *pmbox)
+{
+ return hw_atl_utils_fw_downld_dwords(self,
+ PHAL_ATLANTIC->mbox_addr,
+ (u32 *)(void *)pmbox,
+ sizeof(*pmbox) / sizeof(u32));
+}
+
void hw_atl_utils_mpi_read_stats(struct aq_hw_s *self,
struct hw_aq_atl_utils_mbox *pmbox)
{
@@ -267,9 +276,6 @@ void hw_atl_utils_mpi_read_stats(struct aq_hw_s *self,
if (err < 0)
goto err_exit;
- if (pmbox != &PHAL_ATLANTIC->mbox)
- memcpy(pmbox, &PHAL_ATLANTIC->mbox, sizeof(*pmbox));
-
if (IS_CHIP_FEATURE(REVISION_A0)) {
unsigned int mtu = self->aq_nic_cfg ?
self->aq_nic_cfg->mtu : 1514U;
@@ -299,17 +305,17 @@ void hw_atl_utils_mpi_set(struct aq_hw_s *self,
{
int err = 0;
u32 transaction_id = 0;
+ struct hw_aq_atl_utils_mbox_header mbox;
if (state == MPI_RESET) {
- hw_atl_utils_mpi_read_stats(self, &PHAL_ATLANTIC->mbox);
+ hw_atl_utils_mpi_read_mbox(self, &mbox);
- transaction_id = PHAL_ATLANTIC->mbox.transaction_id;
+ transaction_id = mbox.transaction_id;
AQ_HW_WAIT_FOR(transaction_id !=
- (hw_atl_utils_mpi_read_stats
- (self, &PHAL_ATLANTIC->mbox),
- PHAL_ATLANTIC->mbox.transaction_id),
- 1000U, 100U);
+ (hw_atl_utils_mpi_read_mbox(self, &mbox),
+ mbox.transaction_id),
+ 1000U, 100U);
if (err < 0)
goto err_exit;
}
@@ -351,8 +357,7 @@ int hw_atl_utils_mpi_get_link_status(struct aq_hw_s *self)
break;
default:
- link_status->mbps = 0U;
- break;
+ return -EBUSY;
}
}
@@ -493,16 +498,51 @@ int hw_atl_utils_hw_set_power(struct aq_hw_s *self,
return 0;
}
+int hw_atl_utils_update_stats(struct aq_hw_s *self)
+{
+ struct hw_atl_s *hw_self = PHAL_ATLANTIC;
+ struct hw_aq_atl_utils_mbox mbox;
+
+ if (!self->aq_link_status.mbps)
+ return 0;
+
+ hw_atl_utils_mpi_read_stats(self, &mbox);
+
+#define AQ_SDELTA(_N_) (hw_self->curr_stats._N_ += \
+ mbox.stats._N_ - hw_self->last_stats._N_)
+
+ AQ_SDELTA(uprc);
+ AQ_SDELTA(mprc);
+ AQ_SDELTA(bprc);
+ AQ_SDELTA(erpt);
+
+ AQ_SDELTA(uptc);
+ AQ_SDELTA(mptc);
+ AQ_SDELTA(bptc);
+ AQ_SDELTA(erpr);
+
+ AQ_SDELTA(ubrc);
+ AQ_SDELTA(ubtc);
+ AQ_SDELTA(mbrc);
+ AQ_SDELTA(mbtc);
+ AQ_SDELTA(bbrc);
+ AQ_SDELTA(bbtc);
+ AQ_SDELTA(dpc);
+
+#undef AQ_SDELTA
+
+ memcpy(&hw_self->last_stats, &mbox.stats, sizeof(mbox.stats));
+
+ return 0;
+}
+
int hw_atl_utils_get_hw_stats(struct aq_hw_s *self,
u64 *data, unsigned int *p_count)
{
- struct hw_atl_stats_s *stats = NULL;
+ struct hw_atl_s *hw_self = PHAL_ATLANTIC;
+ struct hw_atl_stats_s *stats = &hw_self->curr_stats;
int i = 0;
- hw_atl_utils_mpi_read_stats(self, &PHAL_ATLANTIC->mbox);
-
- stats = &PHAL_ATLANTIC->mbox.stats;
-
data[i] = stats->uprc + stats->mprc + stats->bprc;
data[++i] = stats->uprc;
data[++i] = stats->mprc;
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h
index e0360a6b2202..c99cc690e425 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h
@@ -115,19 +115,22 @@ struct __packed hw_aq_atl_utils_fw_rpc {
};
};
-struct __packed hw_aq_atl_utils_mbox {
+struct __packed hw_aq_atl_utils_mbox_header {
u32 version;
u32 transaction_id;
- int error;
+ u32 error;
+};
+
+struct __packed hw_aq_atl_utils_mbox {
+ struct hw_aq_atl_utils_mbox_header header;
struct hw_atl_stats_s stats;
};
struct __packed hw_atl_s {
struct aq_hw_s base;
- struct hw_aq_atl_utils_mbox mbox;
+ struct hw_atl_stats_s last_stats;
+ struct hw_atl_stats_s curr_stats;
u64 speed;
- u32 itr_tx;
- u32 itr_rx;
unsigned int chip_features;
u32 fw_ver_actual;
atomic_t dpc;
@@ -170,6 +173,9 @@ enum hal_atl_utils_fw_state_e {
void hw_atl_utils_hw_chip_features_init(struct aq_hw_s *self, u32 *p);
+int hw_atl_utils_mpi_read_mbox(struct aq_hw_s *self,
+ struct hw_aq_atl_utils_mbox_header *pmbox);
+
void hw_atl_utils_mpi_read_stats(struct aq_hw_s *self,
struct hw_aq_atl_utils_mbox *pmbox);
@@ -199,6 +205,8 @@ int hw_atl_utils_hw_deinit(struct aq_hw_s *self);
int hw_atl_utils_get_fw_version(struct aq_hw_s *self, u32 *fw_version);
+int hw_atl_utils_update_stats(struct aq_hw_s *self);
+
int hw_atl_utils_get_hw_stats(struct aq_hw_s *self,
u64 *data,
unsigned int *p_count);
diff --git a/drivers/net/ethernet/arc/emac.h b/drivers/net/ethernet/arc/emac.h
index e4feb712d4f2..3c63b16d485f 100644
--- a/drivers/net/ethernet/arc/emac.h
+++ b/drivers/net/ethernet/arc/emac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2004-2013 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/drivers/net/ethernet/arc/emac_mdio.c b/drivers/net/ethernet/arc/emac_mdio.c
index a22403c688c9..0187dbf3b87d 100644
--- a/drivers/net/ethernet/arc/emac_mdio.c
+++ b/drivers/net/ethernet/arc/emac_mdio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2004-2013 Synopsys, Inc. (www.synopsys.com)
*
diff --git a/drivers/net/ethernet/atheros/Makefile b/drivers/net/ethernet/atheros/Makefile
index 5cf1c65bbce9..aa3d394b87e6 100644
--- a/drivers/net/ethernet/atheros/Makefile
+++ b/drivers/net/ethernet/atheros/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Atheros network device drivers.
#
diff --git a/drivers/net/ethernet/aurora/nb8800.h b/drivers/net/ethernet/aurora/nb8800.h
index 6ec4a956e1e5..aacc3cce2cc0 100644
--- a/drivers/net/ethernet/aurora/nb8800.h
+++ b/drivers/net/ethernet/aurora/nb8800.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NB8800_H_
#define _NB8800_H_
diff --git a/drivers/net/ethernet/broadcom/Makefile b/drivers/net/ethernet/broadcom/Makefile
index 79f2372c66ec..7046ad6d3d0e 100644
--- a/drivers/net/ethernet/broadcom/Makefile
+++ b/drivers/net/ethernet/broadcom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Broadcom network device drivers.
#
diff --git a/drivers/net/ethernet/broadcom/b44.h b/drivers/net/ethernet/broadcom/b44.h
index 89d2cf341163..b3e36ca0fd19 100644
--- a/drivers/net/ethernet/broadcom/b44.h
+++ b/drivers/net/ethernet/broadcom/b44.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _B44_H
#define _B44_H
diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.h b/drivers/net/ethernet/broadcom/bcm63xx_enet.h
index 0a1b7b2e55bd..c6f6f14e87ca 100644
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.h
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_ENET_H_
#define BCM63XX_ENET_H_
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
index a6572b51435a..eb441e5e2cd8 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.c
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
@@ -432,6 +432,27 @@ static void bcm_sysport_update_mib_counters(struct bcm_sysport_priv *priv)
netif_dbg(priv, hw, priv->netdev, "updated MIB counters\n");
}
+static void bcm_sysport_update_tx_stats(struct bcm_sysport_priv *priv,
+ u64 *tx_bytes, u64 *tx_packets)
+{
+ struct bcm_sysport_tx_ring *ring;
+ u64 bytes = 0, packets = 0;
+ unsigned int start;
+ unsigned int q;
+
+ for (q = 0; q < priv->netdev->num_tx_queues; q++) {
+ ring = &priv->tx_rings[q];
+ do {
+ start = u64_stats_fetch_begin_irq(&priv->syncp);
+ bytes = ring->bytes;
+ packets = ring->packets;
+ } while (u64_stats_fetch_retry_irq(&priv->syncp, start));
+
+ *tx_bytes += bytes;
+ *tx_packets += packets;
+ }
+}
+
static void bcm_sysport_get_stats(struct net_device *dev,
struct ethtool_stats *stats, u64 *data)
{
@@ -439,11 +460,16 @@ static void bcm_sysport_get_stats(struct net_device *dev,
struct bcm_sysport_stats64 *stats64 = &priv->stats64;
struct u64_stats_sync *syncp = &priv->syncp;
struct bcm_sysport_tx_ring *ring;
+ u64 tx_bytes = 0, tx_packets = 0;
unsigned int start;
int i, j;
- if (netif_running(dev))
+ if (netif_running(dev)) {
bcm_sysport_update_mib_counters(priv);
+ bcm_sysport_update_tx_stats(priv, &tx_bytes, &tx_packets);
+ stats64->tx_bytes = tx_bytes;
+ stats64->tx_packets = tx_packets;
+ }
for (i = 0, j = 0; i < BCM_SYSPORT_STATS_LEN; i++) {
const struct bcm_sysport_stats *s;
@@ -461,12 +487,13 @@ static void bcm_sysport_get_stats(struct net_device *dev,
continue;
p += s->stat_offset;
- if (s->stat_sizeof == sizeof(u64))
+ if (s->stat_sizeof == sizeof(u64) &&
+ s->type == BCM_SYSPORT_STAT_NETDEV64) {
do {
start = u64_stats_fetch_begin_irq(syncp);
data[i] = *(u64 *)p;
} while (u64_stats_fetch_retry_irq(syncp, start));
- else
+ } else
data[i] = *(u32 *)p;
j++;
}
@@ -1716,30 +1743,12 @@ static void bcm_sysport_get_stats64(struct net_device *dev,
{
struct bcm_sysport_priv *priv = netdev_priv(dev);
struct bcm_sysport_stats64 *stats64 = &priv->stats64;
- struct bcm_sysport_tx_ring *ring;
- u64 tx_packets = 0, tx_bytes = 0;
unsigned int start;
- unsigned int q;
netdev_stats_to_stats64(stats, &dev->stats);
- for (q = 0; q < dev->num_tx_queues; q++) {
- ring = &priv->tx_rings[q];
- do {
- start = u64_stats_fetch_begin_irq(&priv->syncp);
- tx_bytes = ring->bytes;
- tx_packets = ring->packets;
- } while (u64_stats_fetch_retry_irq(&priv->syncp, start));
-
- stats->tx_bytes += tx_bytes;
- stats->tx_packets += tx_packets;
- }
-
- /* lockless update tx_bytes and tx_packets */
- u64_stats_update_begin(&priv->syncp);
- stats64->tx_bytes = stats->tx_bytes;
- stats64->tx_packets = stats->tx_packets;
- u64_stats_update_end(&priv->syncp);
+ bcm_sysport_update_tx_stats(priv, &stats->tx_bytes,
+ &stats->tx_packets);
do {
start = u64_stats_fetch_begin_irq(&priv->syncp);
@@ -1800,15 +1809,17 @@ static inline void bcm_sysport_mask_all_intrs(struct bcm_sysport_priv *priv)
static inline void gib_set_pad_extension(struct bcm_sysport_priv *priv)
{
- u32 __maybe_unused reg;
+ u32 reg;
- /* Include Broadcom tag in pad extension */
+ reg = gib_readl(priv, GIB_CONTROL);
+ /* Include Broadcom tag in pad extension and fix up IPG_LENGTH */
if (netdev_uses_dsa(priv->netdev)) {
- reg = gib_readl(priv, GIB_CONTROL);
reg &= ~(GIB_PAD_EXTENSION_MASK << GIB_PAD_EXTENSION_SHIFT);
reg |= ENET_BRCM_TAG_LEN << GIB_PAD_EXTENSION_SHIFT;
- gib_writel(priv, reg, GIB_CONTROL);
}
+ reg &= ~(GIB_IPG_LEN_MASK << GIB_IPG_LEN_SHIFT);
+ reg |= 12 << GIB_IPG_LEN_SHIFT;
+ gib_writel(priv, reg, GIB_CONTROL);
}
static int bcm_sysport_open(struct net_device *dev)
diff --git a/drivers/net/ethernet/broadcom/bgmac.h b/drivers/net/ethernet/broadcom/bgmac.h
index 443d57b10264..4040d846da8e 100644
--- a/drivers/net/ethernet/broadcom/bgmac.h
+++ b/drivers/net/ethernet/broadcom/bgmac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BGMAC_H
#define _BGMAC_H
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index aacec8bc19d5..dc5de275352a 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -214,6 +214,8 @@ static const u16 bnxt_async_events_arr[] = {
ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE,
};
+static struct workqueue_struct *bnxt_pf_wq;
+
static bool bnxt_vf_pciid(enum board_idx idx)
{
return (idx == NETXTREME_C_VF || idx == NETXTREME_E_VF);
@@ -1024,12 +1026,28 @@ static int bnxt_discard_rx(struct bnxt *bp, struct bnxt_napi *bnapi,
return 0;
}
+static void bnxt_queue_sp_work(struct bnxt *bp)
+{
+ if (BNXT_PF(bp))
+ queue_work(bnxt_pf_wq, &bp->sp_task);
+ else
+ schedule_work(&bp->sp_task);
+}
+
+static void bnxt_cancel_sp_work(struct bnxt *bp)
+{
+ if (BNXT_PF(bp))
+ flush_workqueue(bnxt_pf_wq);
+ else
+ cancel_work_sync(&bp->sp_task);
+}
+
static void bnxt_sched_reset(struct bnxt *bp, struct bnxt_rx_ring_info *rxr)
{
if (!rxr->bnapi->in_reset) {
rxr->bnapi->in_reset = true;
set_bit(BNXT_RESET_TASK_SP_EVENT, &bp->sp_event);
- schedule_work(&bp->sp_task);
+ bnxt_queue_sp_work(bp);
}
rxr->rx_next_cons = 0xffff;
}
@@ -1717,7 +1735,7 @@ static int bnxt_async_event_process(struct bnxt *bp,
default:
goto async_event_process_exit;
}
- schedule_work(&bp->sp_task);
+ bnxt_queue_sp_work(bp);
async_event_process_exit:
bnxt_ulp_async_events(bp, cmpl);
return 0;
@@ -1751,7 +1769,7 @@ static int bnxt_hwrm_handler(struct bnxt *bp, struct tx_cmp *txcmp)
set_bit(vf_id - bp->pf.first_vf_id, bp->pf.vf_event_bmap);
set_bit(BNXT_HWRM_EXEC_FWD_REQ_SP_EVENT, &bp->sp_event);
- schedule_work(&bp->sp_task);
+ bnxt_queue_sp_work(bp);
break;
case CMPL_BASE_TYPE_HWRM_ASYNC_EVENT:
@@ -3448,6 +3466,12 @@ int _hwrm_send_message(struct bnxt *bp, void *msg, u32 msg_len, int timeout)
return bnxt_hwrm_do_send_msg(bp, msg, msg_len, timeout, false);
}
+int _hwrm_send_message_silent(struct bnxt *bp, void *msg, u32 msg_len,
+ int timeout)
+{
+ return bnxt_hwrm_do_send_msg(bp, msg, msg_len, timeout, true);
+}
+
int hwrm_send_message(struct bnxt *bp, void *msg, u32 msg_len, int timeout)
{
int rc;
@@ -6327,7 +6351,9 @@ static int __bnxt_open_nic(struct bnxt *bp, bool irq_re_init, bool link_re_init)
}
if (link_re_init) {
+ mutex_lock(&bp->link_lock);
rc = bnxt_update_phy_setting(bp);
+ mutex_unlock(&bp->link_lock);
if (rc)
netdev_warn(bp->dev, "failed to update phy settings\n");
}
@@ -6647,7 +6673,7 @@ static void bnxt_set_rx_mode(struct net_device *dev)
vnic->rx_mask = mask;
set_bit(BNXT_RX_MASK_SP_EVENT, &bp->sp_event);
- schedule_work(&bp->sp_task);
+ bnxt_queue_sp_work(bp);
}
}
@@ -6920,7 +6946,7 @@ static void bnxt_tx_timeout(struct net_device *dev)
netdev_err(bp->dev, "TX timeout detected, starting reset task!\n");
set_bit(BNXT_RESET_TASK_SP_EVENT, &bp->sp_event);
- schedule_work(&bp->sp_task);
+ bnxt_queue_sp_work(bp);
}
#ifdef CONFIG_NET_POLL_CONTROLLER
@@ -6952,7 +6978,7 @@ static void bnxt_timer(unsigned long data)
if (bp->link_info.link_up && (bp->flags & BNXT_FLAG_PORT_STATS) &&
bp->stats_coal_ticks) {
set_bit(BNXT_PERIODIC_STATS_SP_EVENT, &bp->sp_event);
- schedule_work(&bp->sp_task);
+ bnxt_queue_sp_work(bp);
}
bnxt_restart_timer:
mod_timer(&bp->timer, jiffies + bp->current_interval);
@@ -7025,30 +7051,28 @@ static void bnxt_sp_task(struct work_struct *work)
if (test_and_clear_bit(BNXT_PERIODIC_STATS_SP_EVENT, &bp->sp_event))
bnxt_hwrm_port_qstats(bp);
- /* These functions below will clear BNXT_STATE_IN_SP_TASK. They
- * must be the last functions to be called before exiting.
- */
if (test_and_clear_bit(BNXT_LINK_CHNG_SP_EVENT, &bp->sp_event)) {
- int rc = 0;
+ int rc;
+ mutex_lock(&bp->link_lock);
if (test_and_clear_bit(BNXT_LINK_SPEED_CHNG_SP_EVENT,
&bp->sp_event))
bnxt_hwrm_phy_qcaps(bp);
- bnxt_rtnl_lock_sp(bp);
- if (test_bit(BNXT_STATE_OPEN, &bp->state))
- rc = bnxt_update_link(bp, true);
- bnxt_rtnl_unlock_sp(bp);
+ rc = bnxt_update_link(bp, true);
+ mutex_unlock(&bp->link_lock);
if (rc)
netdev_err(bp->dev, "SP task can't update link (rc: %x)\n",
rc);
}
if (test_and_clear_bit(BNXT_HWRM_PORT_MODULE_SP_EVENT, &bp->sp_event)) {
- bnxt_rtnl_lock_sp(bp);
- if (test_bit(BNXT_STATE_OPEN, &bp->state))
- bnxt_get_port_module_status(bp);
- bnxt_rtnl_unlock_sp(bp);
+ mutex_lock(&bp->link_lock);
+ bnxt_get_port_module_status(bp);
+ mutex_unlock(&bp->link_lock);
}
+ /* These functions below will clear BNXT_STATE_IN_SP_TASK. They
+ * must be the last functions to be called before exiting.
+ */
if (test_and_clear_bit(BNXT_RESET_TASK_SP_EVENT, &bp->sp_event))
bnxt_reset(bp, false);
@@ -7433,7 +7457,7 @@ static int bnxt_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,
spin_unlock_bh(&bp->ntp_fltr_lock);
set_bit(BNXT_RX_NTP_FLTR_SP_EVENT, &bp->sp_event);
- schedule_work(&bp->sp_task);
+ bnxt_queue_sp_work(bp);
return new_fltr->sw_id;
@@ -7516,7 +7540,7 @@ static void bnxt_udp_tunnel_add(struct net_device *dev,
if (bp->vxlan_port_cnt == 1) {
bp->vxlan_port = ti->port;
set_bit(BNXT_VXLAN_ADD_PORT_SP_EVENT, &bp->sp_event);
- schedule_work(&bp->sp_task);
+ bnxt_queue_sp_work(bp);
}
break;
case UDP_TUNNEL_TYPE_GENEVE:
@@ -7533,7 +7557,7 @@ static void bnxt_udp_tunnel_add(struct net_device *dev,
return;
}
- schedule_work(&bp->sp_task);
+ bnxt_queue_sp_work(bp);
}
static void bnxt_udp_tunnel_del(struct net_device *dev,
@@ -7572,7 +7596,7 @@ static void bnxt_udp_tunnel_del(struct net_device *dev,
return;
}
- schedule_work(&bp->sp_task);
+ bnxt_queue_sp_work(bp);
}
static int bnxt_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
@@ -7720,7 +7744,7 @@ static void bnxt_remove_one(struct pci_dev *pdev)
pci_disable_pcie_error_reporting(pdev);
unregister_netdev(dev);
bnxt_shutdown_tc(bp);
- cancel_work_sync(&bp->sp_task);
+ bnxt_cancel_sp_work(bp);
bp->sp_event = 0;
bnxt_clear_int_mode(bp);
@@ -7748,6 +7772,7 @@ static int bnxt_probe_phy(struct bnxt *bp)
rc);
return rc;
}
+ mutex_init(&bp->link_lock);
rc = bnxt_update_link(bp, false);
if (rc) {
@@ -7946,7 +7971,7 @@ static void bnxt_parse_log_pcie_link(struct bnxt *bp)
enum pcie_link_width width = PCIE_LNK_WIDTH_UNKNOWN;
enum pci_bus_speed speed = PCI_SPEED_UNKNOWN;
- if (pcie_get_minimum_link(bp->pdev, &speed, &width) ||
+ if (pcie_get_minimum_link(pci_physfn(bp->pdev), &speed, &width) ||
speed == PCI_SPEED_UNKNOWN || width == PCIE_LNK_WIDTH_UNKNOWN)
netdev_info(bp->dev, "Failed to determine PCIe Link Info\n");
else
@@ -8138,8 +8163,17 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
else
device_set_wakeup_capable(&pdev->dev, false);
- if (BNXT_PF(bp))
+ if (BNXT_PF(bp)) {
+ if (!bnxt_pf_wq) {
+ bnxt_pf_wq =
+ create_singlethread_workqueue("bnxt_pf_wq");
+ if (!bnxt_pf_wq) {
+ dev_err(&pdev->dev, "Unable to create workqueue.\n");
+ goto init_err_pci_clean;
+ }
+ }
bnxt_init_tc(bp);
+ }
rc = register_netdev(dev);
if (rc)
@@ -8375,4 +8409,17 @@ static struct pci_driver bnxt_pci_driver = {
#endif
};
-module_pci_driver(bnxt_pci_driver);
+static int __init bnxt_init(void)
+{
+ return pci_register_driver(&bnxt_pci_driver);
+}
+
+static void __exit bnxt_exit(void)
+{
+ pci_unregister_driver(&bnxt_pci_driver);
+ if (bnxt_pf_wq)
+ destroy_workqueue(bnxt_pf_wq);
+}
+
+module_init(bnxt_init);
+module_exit(bnxt_exit);
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index 7b888d4b2b55..c911e69ff25f 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -1290,6 +1290,10 @@ struct bnxt {
unsigned long *ntp_fltr_bmap;
int ntp_fltr_count;
+ /* To protect link related settings during link changes and
+ * ethtool settings changes.
+ */
+ struct mutex link_lock;
struct bnxt_link_info link_info;
struct ethtool_eee eee;
u32 lpi_tmr_lo;
@@ -1358,6 +1362,7 @@ void bnxt_set_ring_params(struct bnxt *);
int bnxt_set_rx_skb_mode(struct bnxt *bp, bool page_mode);
void bnxt_hwrm_cmd_hdr_init(struct bnxt *, void *, u16, u16, u16);
int _hwrm_send_message(struct bnxt *, void *, u32, int);
+int _hwrm_send_message_silent(struct bnxt *bp, void *msg, u32 len, int timeout);
int hwrm_send_message(struct bnxt *, void *, u32, int);
int hwrm_send_message_silent(struct bnxt *, void *, u32, int);
int bnxt_hwrm_func_rgtr_async_events(struct bnxt *bp, unsigned long *bmap,
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c
index aa1f3a2c7a78..fed37cd9ae1d 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c
@@ -50,7 +50,9 @@ static int bnxt_hwrm_queue_pri2cos_qcfg(struct bnxt *bp, struct ieee_ets *ets)
bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_QUEUE_PRI2COS_QCFG, -1, -1);
req.flags = cpu_to_le32(QUEUE_PRI2COS_QCFG_REQ_FLAGS_IVLAN);
- rc = hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
+
+ mutex_lock(&bp->hwrm_cmd_lock);
+ rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
if (!rc) {
u8 *pri2cos = &resp->pri0_cos_queue_id;
int i, j;
@@ -66,6 +68,7 @@ static int bnxt_hwrm_queue_pri2cos_qcfg(struct bnxt *bp, struct ieee_ets *ets)
}
}
}
+ mutex_unlock(&bp->hwrm_cmd_lock);
return rc;
}
@@ -119,9 +122,13 @@ static int bnxt_hwrm_queue_cos2bw_qcfg(struct bnxt *bp, struct ieee_ets *ets)
int rc, i;
bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_QUEUE_COS2BW_QCFG, -1, -1);
- rc = hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
- if (rc)
+
+ mutex_lock(&bp->hwrm_cmd_lock);
+ rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
+ if (rc) {
+ mutex_unlock(&bp->hwrm_cmd_lock);
return rc;
+ }
data = &resp->queue_id0 + offsetof(struct bnxt_cos2bw_cfg, queue_id);
for (i = 0; i < bp->max_tc; i++, data += sizeof(cos2bw) - 4) {
@@ -143,6 +150,7 @@ static int bnxt_hwrm_queue_cos2bw_qcfg(struct bnxt *bp, struct ieee_ets *ets)
}
}
}
+ mutex_unlock(&bp->hwrm_cmd_lock);
return 0;
}
@@ -240,12 +248,17 @@ static int bnxt_hwrm_queue_pfc_qcfg(struct bnxt *bp, struct ieee_pfc *pfc)
int rc;
bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_QUEUE_PFCENABLE_QCFG, -1, -1);
- rc = hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
- if (rc)
+
+ mutex_lock(&bp->hwrm_cmd_lock);
+ rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
+ if (rc) {
+ mutex_unlock(&bp->hwrm_cmd_lock);
return rc;
+ }
pri_mask = le32_to_cpu(resp->flags);
pfc->pfc_en = pri_mask;
+ mutex_unlock(&bp->hwrm_cmd_lock);
return 0;
}
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
index 8eff05a3e0e4..3cbe771b3352 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
@@ -1052,6 +1052,7 @@ static int bnxt_get_link_ksettings(struct net_device *dev,
u32 ethtool_speed;
ethtool_link_ksettings_zero_link_mode(lk_ksettings, supported);
+ mutex_lock(&bp->link_lock);
bnxt_fw_to_ethtool_support_spds(link_info, lk_ksettings);
ethtool_link_ksettings_zero_link_mode(lk_ksettings, advertising);
@@ -1099,6 +1100,7 @@ static int bnxt_get_link_ksettings(struct net_device *dev,
base->port = PORT_FIBRE;
}
base->phy_address = link_info->phy_addr;
+ mutex_unlock(&bp->link_lock);
return 0;
}
@@ -1190,6 +1192,7 @@ static int bnxt_set_link_ksettings(struct net_device *dev,
if (!BNXT_SINGLE_PF(bp))
return -EOPNOTSUPP;
+ mutex_lock(&bp->link_lock);
if (base->autoneg == AUTONEG_ENABLE) {
BNXT_ETHTOOL_TO_FW_SPDS(fw_advertising, lk_ksettings,
advertising);
@@ -1234,6 +1237,7 @@ static int bnxt_set_link_ksettings(struct net_device *dev,
rc = bnxt_hwrm_set_link_setting(bp, set_pause, false);
set_setting_exit:
+ mutex_unlock(&bp->link_lock);
return rc;
}
@@ -1805,7 +1809,8 @@ static int bnxt_find_nvram_item(struct net_device *dev, u16 type, u16 ordinal,
req.dir_ordinal = cpu_to_le16(ordinal);
req.dir_ext = cpu_to_le16(ext);
req.opt_ordinal = NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_EQ;
- rc = hwrm_send_message_silent(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
+ mutex_lock(&bp->hwrm_cmd_lock);
+ rc = _hwrm_send_message_silent(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
if (rc == 0) {
if (index)
*index = le16_to_cpu(output->dir_idx);
@@ -1814,6 +1819,7 @@ static int bnxt_find_nvram_item(struct net_device *dev, u16 type, u16 ordinal,
if (data_length)
*data_length = le32_to_cpu(output->dir_data_length);
}
+ mutex_unlock(&bp->hwrm_cmd_lock);
return rc;
}
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
index d37925a8a65b..5ee18660bc33 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
@@ -502,6 +502,7 @@ static int bnxt_sriov_enable(struct bnxt *bp, int *num_vfs)
int rc = 0, vfs_supported;
int min_rx_rings, min_tx_rings, min_rss_ctxs;
int tx_ok = 0, rx_ok = 0, rss_ok = 0;
+ int avail_cp, avail_stat;
/* Check if we can enable requested num of vf's. At a mininum
* we require 1 RX 1 TX rings for each VF. In this minimum conf
@@ -509,6 +510,10 @@ static int bnxt_sriov_enable(struct bnxt *bp, int *num_vfs)
*/
vfs_supported = *num_vfs;
+ avail_cp = bp->pf.max_cp_rings - bp->cp_nr_rings;
+ avail_stat = bp->pf.max_stat_ctxs - bp->num_stat_ctxs;
+ avail_cp = min_t(int, avail_cp, avail_stat);
+
while (vfs_supported) {
min_rx_rings = vfs_supported;
min_tx_rings = vfs_supported;
@@ -523,10 +528,12 @@ static int bnxt_sriov_enable(struct bnxt *bp, int *num_vfs)
min_rx_rings)
rx_ok = 1;
}
- if (bp->pf.max_vnics - bp->nr_vnics < min_rx_rings)
+ if (bp->pf.max_vnics - bp->nr_vnics < min_rx_rings ||
+ avail_cp < min_rx_rings)
rx_ok = 0;
- if (bp->pf.max_tx_rings - bp->tx_nr_rings >= min_tx_rings)
+ if (bp->pf.max_tx_rings - bp->tx_nr_rings >= min_tx_rings &&
+ avail_cp >= min_tx_rings)
tx_ok = 1;
if (bp->pf.max_rsscos_ctxs - bp->rsscos_nr_ctxs >= min_rss_ctxs)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
index ccd699fb2d70..7dd3d131043a 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
@@ -750,6 +750,10 @@ int bnxt_tc_setup_flower(struct bnxt *bp, u16 src_fid,
{
int rc = 0;
+ if (!is_classid_clsact_ingress(cls_flower->common.classid) ||
+ cls_flower->common.chain_index)
+ return -EOPNOTSUPP;
+
switch (cls_flower->command) {
case TC_CLSFLOWER_REPLACE:
rc = bnxt_tc_add_flow(bp, src_fid, cls_flower);
diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c
index cec94bbb2ea5..8bc126a156e8 100644
--- a/drivers/net/ethernet/broadcom/cnic.c
+++ b/drivers/net/ethernet/broadcom/cnic.c
@@ -1278,7 +1278,7 @@ static int cnic_alloc_bnx2x_resc(struct cnic_dev *dev)
ret = cnic_alloc_dma(dev, kwq_16_dma, pages, 0);
if (ret)
- return -ENOMEM;
+ goto error;
n = CNIC_PAGE_SIZE / CNIC_KWQ16_DATA_SIZE;
for (i = 0, j = 0; i < cp->max_cid_space; i++) {
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index af33dc15c55f..656e6af70f0a 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -11536,11 +11536,11 @@ static int tg3_start(struct tg3 *tp, bool reset_phy, bool test_irq,
tg3_napi_enable(tp);
for (i = 0; i < tp->irq_cnt; i++) {
- struct tg3_napi *tnapi = &tp->napi[i];
err = tg3_request_irq(tp, i);
if (err) {
for (i--; i >= 0; i--) {
- tnapi = &tp->napi[i];
+ struct tg3_napi *tnapi = &tp->napi[i];
+
free_irq(tnapi->irq_vec, tnapi);
}
goto out_napi_fini;
diff --git a/drivers/net/ethernet/broadcom/tg3.h b/drivers/net/ethernet/broadcom/tg3.h
index 3b5e98ecba00..c2d02d02d1e6 100644
--- a/drivers/net/ethernet/broadcom/tg3.h
+++ b/drivers/net/ethernet/broadcom/tg3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: tg3.h,v 1.37.2.32 2002/03/11 12:18:18 davem Exp $
* tg3.h: Definitions for Broadcom Tigon3 ethernet driver.
*
diff --git a/drivers/net/ethernet/cadence/Makefile b/drivers/net/ethernet/cadence/Makefile
index 1d66ddb68969..1f33cdca9a3c 100644
--- a/drivers/net/ethernet/cadence/Makefile
+++ b/drivers/net/ethernet/cadence/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Atmel network device drivers.
#
diff --git a/drivers/net/ethernet/cavium/liquidio/Makefile b/drivers/net/ethernet/cavium/liquidio/Makefile
index c4d411d1aa28..b802896bb2e0 100644
--- a/drivers/net/ethernet/cavium/liquidio/Makefile
+++ b/drivers/net/ethernet/cavium/liquidio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Cavium Liquidio ethernet device driver
#
diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c
index e7f54948173f..5b19826a7e16 100644
--- a/drivers/net/ethernet/cavium/liquidio/lio_main.c
+++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c
@@ -1847,7 +1847,7 @@ static int liquidio_ptp_settime(struct ptp_clock_info *ptp,
struct lio *lio = container_of(ptp, struct lio, ptp_info);
struct octeon_device *oct = (struct octeon_device *)lio->oct_dev;
- ns = timespec_to_ns(ts);
+ ns = timespec64_to_ns(ts);
spin_lock_irqsave(&lio->ptp_lock, flags);
lio_pci_writeq(oct, ns, CN6XXX_MIO_PTP_CLOCK_HI);
diff --git a/drivers/net/ethernet/cavium/thunder/Makefile b/drivers/net/ethernet/cavium/thunder/Makefile
index 6b4d4add7353..2fc6142d1634 100644
--- a/drivers/net/ethernet/cavium/thunder/Makefile
+++ b/drivers/net/ethernet/cavium/thunder/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Cavium's Thunder ethernet device
#
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
index 49b80da51ba7..805ab45e9b5a 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
@@ -565,8 +565,10 @@ static inline bool nicvf_xdp_rx(struct nicvf *nic, struct bpf_prog *prog,
return true;
default:
bpf_warn_invalid_xdp_action(action);
+ /* fall through */
case XDP_ABORTED:
trace_xdp_exception(nic->netdev, prog, action);
+ /* fall through */
case XDP_DROP:
/* Check if it's a recycled page, if not
* unmap the DMA mapping.
diff --git a/drivers/net/ethernet/chelsio/Makefile b/drivers/net/ethernet/chelsio/Makefile
index b6a5eec6ed8e..c0f978d2e8a7 100644
--- a/drivers/net/ethernet/chelsio/Makefile
+++ b/drivers/net/ethernet/chelsio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Chelsio network device drivers.
#
diff --git a/drivers/net/ethernet/chelsio/cxgb/fpga_defs.h b/drivers/net/ethernet/chelsio/cxgb/fpga_defs.h
index ccdb2bc9ae98..e9c65d812c4e 100644
--- a/drivers/net/ethernet/chelsio/cxgb/fpga_defs.h
+++ b/drivers/net/ethernet/chelsio/cxgb/fpga_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Date: 2005/03/07 23:59:05 $ $RCSfile: fpga_defs.h,v $ $Revision: 1.4 $ */
/*
diff --git a/drivers/net/ethernet/chelsio/cxgb/mv88e1xxx.c b/drivers/net/ethernet/chelsio/cxgb/mv88e1xxx.c
index 76ce6e538326..30b003484fc1 100644
--- a/drivers/net/ethernet/chelsio/cxgb/mv88e1xxx.c
+++ b/drivers/net/ethernet/chelsio/cxgb/mv88e1xxx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* $Date: 2005/10/24 23:18:13 $ $RCSfile: mv88e1xxx.c,v $ $Revision: 1.49 $ */
#include "common.h"
#include "mv88e1xxx.h"
diff --git a/drivers/net/ethernet/chelsio/cxgb/mv88e1xxx.h b/drivers/net/ethernet/chelsio/cxgb/mv88e1xxx.h
index 967cc4286359..11bf0f7c2f90 100644
--- a/drivers/net/ethernet/chelsio/cxgb/mv88e1xxx.h
+++ b/drivers/net/ethernet/chelsio/cxgb/mv88e1xxx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Date: 2005/03/07 23:59:05 $ $RCSfile: mv88e1xxx.h,v $ $Revision: 1.13 $ */
#ifndef CHELSIO_MV8E1XXX_H
#define CHELSIO_MV8E1XXX_H
diff --git a/drivers/net/ethernet/chelsio/cxgb/my3126.c b/drivers/net/ethernet/chelsio/cxgb/my3126.c
index d546f46c8ef7..20c09cc4b323 100644
--- a/drivers/net/ethernet/chelsio/cxgb/my3126.c
+++ b/drivers/net/ethernet/chelsio/cxgb/my3126.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* $Date: 2005/11/12 02:13:49 $ $RCSfile: my3126.c,v $ $Revision: 1.15 $ */
#include "cphy.h"
#include "elmer0.h"
diff --git a/drivers/net/ethernet/chelsio/cxgb/tp.c b/drivers/net/ethernet/chelsio/cxgb/tp.c
index b146acabf982..4337cee0763e 100644
--- a/drivers/net/ethernet/chelsio/cxgb/tp.c
+++ b/drivers/net/ethernet/chelsio/cxgb/tp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* $Date: 2006/02/07 04:21:54 $ $RCSfile: tp.c,v $ $Revision: 1.73 $ */
#include "common.h"
#include "regs.h"
diff --git a/drivers/net/ethernet/chelsio/cxgb/tp.h b/drivers/net/ethernet/chelsio/cxgb/tp.h
index dfd8ce25106a..ba15675d56df 100644
--- a/drivers/net/ethernet/chelsio/cxgb/tp.h
+++ b/drivers/net/ethernet/chelsio/cxgb/tp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Date: 2005/03/07 23:59:05 $ $RCSfile: tp.h,v $ $Revision: 1.20 $ */
#ifndef CHELSIO_TP_H
#define CHELSIO_TP_H
diff --git a/drivers/net/ethernet/chelsio/cxgb/vsc7326.c b/drivers/net/ethernet/chelsio/cxgb/vsc7326.c
index bdc895bd2a46..873c1c7b4ca0 100644
--- a/drivers/net/ethernet/chelsio/cxgb/vsc7326.c
+++ b/drivers/net/ethernet/chelsio/cxgb/vsc7326.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* $Date: 2006/04/28 19:20:06 $ $RCSfile: vsc7326.c,v $ $Revision: 1.19 $ */
/* Driver for Vitesse VSC7326 (Schaumburg) MAC */
diff --git a/drivers/net/ethernet/chelsio/cxgb/vsc7326_reg.h b/drivers/net/ethernet/chelsio/cxgb/vsc7326_reg.h
index 479edbcabe68..04503857c6a9 100644
--- a/drivers/net/ethernet/chelsio/cxgb/vsc7326_reg.h
+++ b/drivers/net/ethernet/chelsio/cxgb/vsc7326_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Date: 2006/04/28 19:20:17 $ $RCSfile: vsc7326_reg.h,v $ $Revision: 1.5 $ */
#ifndef _VSC7321_REG_H_
#define _VSC7321_REG_H_
diff --git a/drivers/net/ethernet/chelsio/cxgb3/regs.h b/drivers/net/ethernet/chelsio/cxgb3/regs.h
index 81029b872bdd..174eb45100a4 100644
--- a/drivers/net/ethernet/chelsio/cxgb3/regs.h
+++ b/drivers/net/ethernet/chelsio/cxgb3/regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define A_SG_CONTROL 0x0
#define S_CONGMODE 29
diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge_defs.h b/drivers/net/ethernet/chelsio/cxgb3/sge_defs.h
index 29b6c800b238..c31ce8dc95fb 100644
--- a/drivers/net/ethernet/chelsio/cxgb3/sge_defs.h
+++ b/drivers/net/ethernet/chelsio/cxgb3/sge_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file is automatically generated --- any changes will be lost.
*/
diff --git a/drivers/net/ethernet/chelsio/cxgb4/Makefile b/drivers/net/ethernet/chelsio/cxgb4/Makefile
index 817212702f0a..24143c8abfdb 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/Makefile
+++ b/drivers/net/ethernet/chelsio/cxgb4/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Chelsio T4 driver
#
diff --git a/drivers/net/ethernet/cisco/enic/enic_clsf.c b/drivers/net/ethernet/cisco/enic/enic_clsf.c
index 3c677ed3c29e..8dc21c9f9716 100644
--- a/drivers/net/ethernet/cisco/enic/enic_clsf.c
+++ b/drivers/net/ethernet/cisco/enic/enic_clsf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/if.h>
#include <linux/if_ether.h>
#include <linux/if_link.h>
diff --git a/drivers/net/ethernet/cisco/enic/enic_clsf.h b/drivers/net/ethernet/cisco/enic/enic_clsf.h
index 6aa9f89d073b..d3c4a1cb0610 100644
--- a/drivers/net/ethernet/cisco/enic/enic_clsf.h
+++ b/drivers/net/ethernet/cisco/enic/enic_clsf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ENIC_CLSF_H_
#define _ENIC_CLSF_H_
diff --git a/drivers/net/ethernet/davicom/dm9000.h b/drivers/net/ethernet/davicom/dm9000.h
index 9ce058adabab..581b35ad44ef 100644
--- a/drivers/net/ethernet/davicom/dm9000.h
+++ b/drivers/net/ethernet/davicom/dm9000.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* dm9000 Ethernet
*/
diff --git a/drivers/net/ethernet/dec/tulip/Makefile b/drivers/net/ethernet/dec/tulip/Makefile
index 5e8be38b45bb..8aab37564d5d 100644
--- a/drivers/net/ethernet/dec/tulip/Makefile
+++ b/drivers/net/ethernet/dec/tulip/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux "Tulip" family network device drivers.
#
diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index 674cf9d13b98..8984c4938881 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -930,6 +930,14 @@ static inline bool is_ipv4_pkt(struct sk_buff *skb)
return skb->protocol == htons(ETH_P_IP) && ip_hdr(skb)->version == 4;
}
+static inline bool is_ipv6_ext_hdr(struct sk_buff *skb)
+{
+ if (ip_hdr(skb)->version == 6)
+ return ipv6_ext_hdr(ipv6_hdr(skb)->nexthdr);
+ else
+ return false;
+}
+
#define be_error_recovering(adapter) \
(adapter->flags & BE_FLAGS_TRY_RECOVERY)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 319eee36649b..0e3d9f39a807 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -5089,6 +5089,20 @@ static netdev_features_t be_features_check(struct sk_buff *skb,
struct be_adapter *adapter = netdev_priv(dev);
u8 l4_hdr = 0;
+ if (skb_is_gso(skb)) {
+ /* IPv6 TSO requests with extension hdrs are a problem
+ * to Lancer and BE3 HW. Disable TSO6 feature.
+ */
+ if (!skyhawk_chip(adapter) && is_ipv6_ext_hdr(skb))
+ features &= ~NETIF_F_TSO6;
+
+ /* Lancer cannot handle the packet with MSS less than 256.
+ * Disable the GSO support in such cases
+ */
+ if (lancer_chip(adapter) && skb_shinfo(skb)->gso_size < 256)
+ features &= ~NETIF_F_GSO_MASK;
+ }
+
/* The code below restricts offload features for some tunneled and
* Q-in-Q packets.
* Offload features for normal (non tunnel) packets are unchanged.
diff --git a/drivers/net/ethernet/freescale/Makefile b/drivers/net/ethernet/freescale/Makefile
index c46df5c82af5..ed8ad0fefbda 100644
--- a/drivers/net/ethernet/freescale/Makefile
+++ b/drivers/net/ethernet/freescale/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Freescale network device drivers.
#
diff --git a/drivers/net/ethernet/freescale/dpaa/Makefile b/drivers/net/ethernet/freescale/dpaa/Makefile
index 7db50bccb137..4f23e79232fa 100644
--- a/drivers/net/ethernet/freescale/dpaa/Makefile
+++ b/drivers/net/ethernet/freescale/dpaa/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Freescale DPAA Ethernet controllers
#
diff --git a/drivers/net/ethernet/freescale/fec.h b/drivers/net/ethernet/freescale/fec.h
index 38c7b21e5d63..44720f83af27 100644
--- a/drivers/net/ethernet/freescale/fec.h
+++ b/drivers/net/ethernet/freescale/fec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/****************************************************************************/
/*
@@ -374,8 +375,8 @@ struct bufdesc_ex {
#define FEC_ENET_TS_AVAIL ((uint)0x00010000)
#define FEC_ENET_TS_TIMER ((uint)0x00008000)
-#define FEC_DEFAULT_IMASK (FEC_ENET_TXF | FEC_ENET_RXF | FEC_ENET_MII | FEC_ENET_TS_TIMER)
-#define FEC_NAPI_IMASK (FEC_ENET_MII | FEC_ENET_TS_TIMER)
+#define FEC_DEFAULT_IMASK (FEC_ENET_TXF | FEC_ENET_RXF | FEC_ENET_MII)
+#define FEC_NAPI_IMASK FEC_ENET_MII
#define FEC_RX_DISABLED_IMASK (FEC_DEFAULT_IMASK & (~FEC_ENET_RXF))
/* ENET interrupt coalescing macro define */
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index 56f56d6ada9c..3dc2d771a222 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1559,14 +1559,14 @@ fec_enet_collect_events(struct fec_enet_private *fep, uint int_events)
if (int_events == 0)
return false;
- if (int_events & FEC_ENET_RXF)
+ if (int_events & FEC_ENET_RXF_0)
fep->work_rx |= (1 << 2);
if (int_events & FEC_ENET_RXF_1)
fep->work_rx |= (1 << 0);
if (int_events & FEC_ENET_RXF_2)
fep->work_rx |= (1 << 1);
- if (int_events & FEC_ENET_TXF)
+ if (int_events & FEC_ENET_TXF_0)
fep->work_tx |= (1 << 2);
if (int_events & FEC_ENET_TXF_1)
fep->work_tx |= (1 << 0);
@@ -1604,8 +1604,8 @@ fec_enet_interrupt(int irq, void *dev_id)
}
if (fep->ptp_clock)
- fec_ptp_check_pps_event(fep);
-
+ if (fec_ptp_check_pps_event(fep))
+ ret = IRQ_HANDLED;
return ret;
}
diff --git a/drivers/net/ethernet/freescale/fman/Makefile b/drivers/net/ethernet/freescale/fman/Makefile
index 2c38119b172c..f83a3653b63b 100644
--- a/drivers/net/ethernet/freescale/fman/Makefile
+++ b/drivers/net/ethernet/freescale/fman/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-y += -I$(srctree)/drivers/net/ethernet/freescale/fman
obj-$(CONFIG_FSL_FMAN) += fsl_fman.o
diff --git a/drivers/net/ethernet/freescale/fs_enet/Makefile b/drivers/net/ethernet/freescale/fs_enet/Makefile
index d4a305ee3455..1821f94ef619 100644
--- a/drivers/net/ethernet/freescale/fs_enet/Makefile
+++ b/drivers/net/ethernet/freescale/fs_enet/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Freescale Ethernet controllers
#
diff --git a/drivers/net/ethernet/freescale/fs_enet/fec.h b/drivers/net/ethernet/freescale/fs_enet/fec.h
index b9fe5bde432a..7832db71dcb9 100644
--- a/drivers/net/ethernet/freescale/fs_enet/fec.h
+++ b/drivers/net/ethernet/freescale/fs_enet/fec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef FS_ENET_FEC_H
#define FS_ENET_FEC_H
diff --git a/drivers/net/ethernet/freescale/fs_enet/fs_enet.h b/drivers/net/ethernet/freescale/fs_enet/fs_enet.h
index 5ce516c8a62a..168e10ea487f 100644
--- a/drivers/net/ethernet/freescale/fs_enet/fs_enet.h
+++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef FS_ENET_H
#define FS_ENET_H
diff --git a/drivers/net/ethernet/hisilicon/Makefile b/drivers/net/ethernet/hisilicon/Makefile
index 3828c435c18f..7f76d412047a 100644
--- a/drivers/net/ethernet/hisilicon/Makefile
+++ b/drivers/net/ethernet/hisilicon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the HISILICON network device drivers.
#
diff --git a/drivers/net/ethernet/hisilicon/hns/Makefile b/drivers/net/ethernet/hisilicon/hns/Makefile
index 6010c83e38d8..7aa623b9c82a 100644
--- a/drivers/net/ethernet/hisilicon/hns/Makefile
+++ b/drivers/net/ethernet/hisilicon/hns/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the HISILICON network device drivers.
#
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
index 36520634c96a..e77192683dba 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
@@ -2369,8 +2369,8 @@ static int hns_nic_dev_probe(struct platform_device *pdev)
priv->enet_ver = AE_VERSION_2;
ae_node = of_parse_phandle(dev->of_node, "ae-handle", 0);
- if (IS_ERR_OR_NULL(ae_node)) {
- ret = PTR_ERR(ae_node);
+ if (!ae_node) {
+ ret = -ENODEV;
dev_err(dev, "not find ae-handle\n");
goto out_read_prop_fail;
}
diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.c b/drivers/net/ethernet/hisilicon/hns3/hnae3.c
index 59efbd605416..5bcb2238acb2 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.c
@@ -37,20 +37,15 @@ static bool hnae3_client_match(enum hnae3_client_type client_type,
}
static int hnae3_match_n_instantiate(struct hnae3_client *client,
- struct hnae3_ae_dev *ae_dev,
- bool is_reg, bool *matched)
+ struct hnae3_ae_dev *ae_dev, bool is_reg)
{
int ret;
- *matched = false;
-
/* check if this client matches the type of ae_dev */
if (!(hnae3_client_match(client->type, ae_dev->dev_type) &&
hnae_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B))) {
return 0;
}
- /* there is a match of client and dev */
- *matched = true;
/* now, (un-)instantiate client by calling lower layer */
if (is_reg) {
@@ -69,7 +64,6 @@ int hnae3_register_client(struct hnae3_client *client)
{
struct hnae3_client *client_tmp;
struct hnae3_ae_dev *ae_dev;
- bool matched;
int ret = 0;
mutex_lock(&hnae3_common_lock);
@@ -86,7 +80,7 @@ int hnae3_register_client(struct hnae3_client *client)
/* if the client could not be initialized on current port, for
* any error reasons, move on to next available port
*/
- ret = hnae3_match_n_instantiate(client, ae_dev, true, &matched);
+ ret = hnae3_match_n_instantiate(client, ae_dev, true);
if (ret)
dev_err(&ae_dev->pdev->dev,
"match and instantiation failed for port\n");
@@ -102,12 +96,11 @@ EXPORT_SYMBOL(hnae3_register_client);
void hnae3_unregister_client(struct hnae3_client *client)
{
struct hnae3_ae_dev *ae_dev;
- bool matched;
mutex_lock(&hnae3_common_lock);
/* un-initialize the client on every matched port */
list_for_each_entry(ae_dev, &hnae3_ae_dev_list, node) {
- hnae3_match_n_instantiate(client, ae_dev, false, &matched);
+ hnae3_match_n_instantiate(client, ae_dev, false);
}
list_del(&client->node);
@@ -124,7 +117,6 @@ int hnae3_register_ae_algo(struct hnae3_ae_algo *ae_algo)
const struct pci_device_id *id;
struct hnae3_ae_dev *ae_dev;
struct hnae3_client *client;
- bool matched;
int ret = 0;
mutex_lock(&hnae3_common_lock);
@@ -151,13 +143,10 @@ int hnae3_register_ae_algo(struct hnae3_ae_algo *ae_algo)
* initialize the figure out client instance
*/
list_for_each_entry(client, &hnae3_client_list, node) {
- ret = hnae3_match_n_instantiate(client, ae_dev, true,
- &matched);
+ ret = hnae3_match_n_instantiate(client, ae_dev, true);
if (ret)
dev_err(&ae_dev->pdev->dev,
"match and instantiation failed\n");
- if (matched)
- break;
}
}
@@ -175,7 +164,6 @@ void hnae3_unregister_ae_algo(struct hnae3_ae_algo *ae_algo)
const struct pci_device_id *id;
struct hnae3_ae_dev *ae_dev;
struct hnae3_client *client;
- bool matched;
mutex_lock(&hnae3_common_lock);
/* Check if there are matched ae_dev */
@@ -187,12 +175,8 @@ void hnae3_unregister_ae_algo(struct hnae3_ae_algo *ae_algo)
/* check the client list for the match with this ae_dev type and
* un-initialize the figure out client instance
*/
- list_for_each_entry(client, &hnae3_client_list, node) {
- hnae3_match_n_instantiate(client, ae_dev, false,
- &matched);
- if (matched)
- break;
- }
+ list_for_each_entry(client, &hnae3_client_list, node)
+ hnae3_match_n_instantiate(client, ae_dev, false);
ae_algo->ops->uninit_ae_dev(ae_dev);
hnae_set_bit(ae_dev->flag, HNAE3_DEV_INITED_B, 0);
@@ -212,7 +196,6 @@ int hnae3_register_ae_dev(struct hnae3_ae_dev *ae_dev)
const struct pci_device_id *id;
struct hnae3_ae_algo *ae_algo;
struct hnae3_client *client;
- bool matched;
int ret = 0;
mutex_lock(&hnae3_common_lock);
@@ -246,13 +229,10 @@ int hnae3_register_ae_dev(struct hnae3_ae_dev *ae_dev)
* initialize the figure out client instance
*/
list_for_each_entry(client, &hnae3_client_list, node) {
- ret = hnae3_match_n_instantiate(client, ae_dev, true,
- &matched);
+ ret = hnae3_match_n_instantiate(client, ae_dev, true);
if (ret)
dev_err(&ae_dev->pdev->dev,
"match and instantiation failed\n");
- if (matched)
- break;
}
out_err:
@@ -270,7 +250,6 @@ void hnae3_unregister_ae_dev(struct hnae3_ae_dev *ae_dev)
const struct pci_device_id *id;
struct hnae3_ae_algo *ae_algo;
struct hnae3_client *client;
- bool matched;
mutex_lock(&hnae3_common_lock);
/* Check if there are matched ae_algo */
@@ -279,12 +258,8 @@ void hnae3_unregister_ae_dev(struct hnae3_ae_dev *ae_dev)
if (!id)
continue;
- list_for_each_entry(client, &hnae3_client_list, node) {
- hnae3_match_n_instantiate(client, ae_dev, false,
- &matched);
- if (matched)
- break;
- }
+ list_for_each_entry(client, &hnae3_client_list, node)
+ hnae3_match_n_instantiate(client, ae_dev, false);
ae_algo->ops->uninit_ae_dev(ae_dev);
hnae_set_bit(ae_dev->flag, HNAE3_DEV_INITED_B, 0);
diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
index b2f28ae81273..1a01cadfe5f3 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
@@ -49,7 +49,17 @@
#define HNAE3_CLASS_NAME_SIZE 16
#define HNAE3_DEV_INITED_B 0x0
-#define HNAE_DEV_SUPPORT_ROCE_B 0x1
+#define HNAE3_DEV_SUPPORT_ROCE_B 0x1
+#define HNAE3_DEV_SUPPORT_DCB_B 0x2
+
+#define HNAE3_DEV_SUPPORT_ROCE_DCB_BITS (BIT(HNAE3_DEV_SUPPORT_DCB_B) |\
+ BIT(HNAE3_DEV_SUPPORT_ROCE_B))
+
+#define hnae3_dev_roce_supported(hdev) \
+ hnae_get_bit(hdev->ae_dev->flag, HNAE3_DEV_SUPPORT_ROCE_B)
+
+#define hnae3_dev_dcb_supported(hdev) \
+ hnae_get_bit(hdev->ae_dev->flag, HNAE3_DEV_SUPPORT_DCB_B)
#define ring_ptr_move_fw(ring, p) \
((ring)->p = ((ring)->p + 1) % (ring)->desc_num)
@@ -366,12 +376,12 @@ struct hnae3_ae_algo {
struct hnae3_tc_info {
u16 tqp_offset; /* TQP offset from base TQP */
u16 tqp_count; /* Total TQPs */
- u8 up; /* user priority */
u8 tc; /* TC index */
bool enable; /* If this TC is enable or not */
};
#define HNAE3_MAX_TC 8
+#define HNAE3_MAX_USER_PRIO 8
struct hnae3_knic_private_info {
struct net_device *netdev; /* Set by KNIC client when init instance */
u16 rss_size; /* Allocated RSS queues */
@@ -379,6 +389,7 @@ struct hnae3_knic_private_info {
u16 num_desc;
u8 num_tc; /* Total number of enabled TCs */
+ u8 prio_tc[HNAE3_MAX_USER_PRIO]; /* TC indexed by prio */
struct hnae3_tc_info tc_info[HNAE3_MAX_TC]; /* Idx of array is HW TC */
u16 num_tqps; /* total number of TQPs in this handle */
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
index 91ae0135ee50..758cf3948131 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
@@ -238,7 +238,7 @@ struct hclge_tqp_map {
u8 rsv[18];
};
-#define HCLGE_VECTOR_ELEMENTS_PER_CMD 11
+#define HCLGE_VECTOR_ELEMENTS_PER_CMD 10
enum hclge_int_type {
HCLGE_INT_TX,
@@ -252,8 +252,12 @@ struct hclge_ctrl_vector_chain {
#define HCLGE_INT_TYPE_S 0
#define HCLGE_INT_TYPE_M 0x3
#define HCLGE_TQP_ID_S 2
-#define HCLGE_TQP_ID_M (0x3fff << HCLGE_TQP_ID_S)
+#define HCLGE_TQP_ID_M (0x7ff << HCLGE_TQP_ID_S)
+#define HCLGE_INT_GL_IDX_S 13
+#define HCLGE_INT_GL_IDX_M (0x3 << HCLGE_INT_GL_IDX_S)
__le16 tqp_type_and_id[HCLGE_VECTOR_ELEMENTS_PER_CMD];
+ u8 vfid;
+ u8 rsv;
};
#define HCLGE_TC_NUM 8
@@ -266,7 +270,8 @@ struct hclge_tx_buff_alloc {
struct hclge_rx_priv_buff {
__le16 buf_num[HCLGE_TC_NUM];
- u8 rsv[8];
+ __le16 shared_buf;
+ u8 rsv[6];
};
struct hclge_query_version {
@@ -684,6 +689,7 @@ struct hclge_reset_tqp_queue {
#define HCLGE_DEFAULT_TX_BUF 0x4000 /* 16k bytes */
#define HCLGE_TOTAL_PKT_BUF 0x108000 /* 1.03125M bytes */
#define HCLGE_DEFAULT_DV 0xA000 /* 40k byte */
+#define HCLGE_DEFAULT_NON_DCB_DV 0x7800 /* 30K byte */
#define HCLGE_TYPE_CRQ 0
#define HCLGE_TYPE_CSQ 1
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index bb45365fb817..c1cdbfd83bdb 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -46,17 +46,7 @@ static const struct pci_device_id ae_algo_pci_tbl[] = {
{PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA), 0},
{PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA_MACSEC), 0},
{PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_100G_RDMA_MACSEC), 0},
- /* Required last entry */
- {0, }
-};
-
-static const struct pci_device_id roce_pci_tbl[] = {
- {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA), 0},
- {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA_MACSEC), 0},
- {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA), 0},
- {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA_MACSEC), 0},
- {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_100G_RDMA_MACSEC), 0},
- /* Required last entry */
+ /* required last entry */
{0, }
};
@@ -894,7 +884,7 @@ static int hclge_query_pf_resource(struct hclge_dev *hdev)
hdev->num_tqps = __le16_to_cpu(req->tqp_num);
hdev->pkt_buf_size = __le16_to_cpu(req->buf_size) << HCLGE_BUF_UNIT_S;
- if (hnae_get_bit(hdev->ae_dev->flag, HNAE_DEV_SUPPORT_ROCE_B)) {
+ if (hnae3_dev_roce_supported(hdev)) {
hdev->num_roce_msix =
hnae_get_field(__le16_to_cpu(req->pf_intr_vector_number),
HCLGE_PF_VEC_NUM_M, HCLGE_PF_VEC_NUM_S);
@@ -1063,9 +1053,9 @@ static int hclge_configure(struct hclge_dev *hdev)
hdev->base_tqp_pid = 0;
hdev->rss_size_max = 1;
hdev->rx_buf_len = cfg.rx_buf_len;
- for (i = 0; i < ETH_ALEN; i++)
- hdev->hw.mac.mac_addr[i] = cfg.mac_addr[i];
+ ether_addr_copy(hdev->hw.mac.mac_addr, cfg.mac_addr);
hdev->hw.mac.media_type = cfg.media_type;
+ hdev->hw.mac.phy_addr = cfg.phy_addr;
hdev->num_desc = cfg.tqp_desc_num;
hdev->tm_info.num_pg = 1;
hdev->tm_info.num_tc = cfg.tc_num;
@@ -1454,7 +1444,11 @@ static bool hclge_is_rx_buf_ok(struct hclge_dev *hdev, u32 rx_all)
tc_num = hclge_get_tc_num(hdev);
pfc_enable_num = hclge_get_pfc_enalbe_num(hdev);
- shared_buf_min = 2 * hdev->mps + HCLGE_DEFAULT_DV;
+ if (hnae3_dev_dcb_supported(hdev))
+ shared_buf_min = 2 * hdev->mps + HCLGE_DEFAULT_DV;
+ else
+ shared_buf_min = 2 * hdev->mps + HCLGE_DEFAULT_NON_DCB_DV;
+
shared_buf_tc = pfc_enable_num * hdev->mps +
(tc_num - pfc_enable_num) * hdev->mps / 2 +
hdev->mps;
@@ -1495,6 +1489,16 @@ int hclge_rx_buffer_calc(struct hclge_dev *hdev, u32 tx_size)
struct hclge_priv_buf *priv;
int i;
+ /* When DCB is not supported, rx private
+ * buffer is not allocated.
+ */
+ if (!hnae3_dev_dcb_supported(hdev)) {
+ if (!hclge_is_rx_buf_ok(hdev, rx_all))
+ return -ENOMEM;
+
+ return 0;
+ }
+
/* step 1, try to alloc private buffer for all enabled tc */
for (i = 0; i < HCLGE_MAX_TC_NUM; i++) {
priv = &hdev->priv_buf[i];
@@ -1510,6 +1514,11 @@ int hclge_rx_buffer_calc(struct hclge_dev *hdev, u32 tx_size)
priv->wl.high = 2 * hdev->mps;
priv->buf_size = priv->wl.high;
}
+ } else {
+ priv->enable = 0;
+ priv->wl.low = 0;
+ priv->wl.high = 0;
+ priv->buf_size = 0;
}
}
@@ -1522,8 +1531,15 @@ int hclge_rx_buffer_calc(struct hclge_dev *hdev, u32 tx_size)
for (i = 0; i < HCLGE_MAX_TC_NUM; i++) {
priv = &hdev->priv_buf[i];
- if (hdev->hw_tc_map & BIT(i))
- priv->enable = 1;
+ priv->enable = 0;
+ priv->wl.low = 0;
+ priv->wl.high = 0;
+ priv->buf_size = 0;
+
+ if (!(hdev->hw_tc_map & BIT(i)))
+ continue;
+
+ priv->enable = 1;
if (hdev->tm_info.hw_pfc_map & BIT(i)) {
priv->wl.low = 128;
@@ -1616,6 +1632,10 @@ static int hclge_rx_priv_buf_alloc(struct hclge_dev *hdev)
cpu_to_le16(true << HCLGE_TC0_PRI_BUF_EN_B);
}
+ req->shared_buf =
+ cpu_to_le16((hdev->s_buf.buf_size >> HCLGE_BUF_UNIT_S) |
+ (1 << HCLGE_TC0_PRI_BUF_EN_B));
+
ret = hclge_cmd_send(&hdev->hw, &desc, 1);
if (ret) {
dev_err(&hdev->pdev->dev,
@@ -1782,18 +1802,22 @@ int hclge_buffer_alloc(struct hclge_dev *hdev)
return ret;
}
- ret = hclge_rx_priv_wl_config(hdev);
- if (ret) {
- dev_err(&hdev->pdev->dev,
- "could not configure rx private waterline %d\n", ret);
- return ret;
- }
+ if (hnae3_dev_dcb_supported(hdev)) {
+ ret = hclge_rx_priv_wl_config(hdev);
+ if (ret) {
+ dev_err(&hdev->pdev->dev,
+ "could not configure rx private waterline %d\n",
+ ret);
+ return ret;
+ }
- ret = hclge_common_thrd_config(hdev);
- if (ret) {
- dev_err(&hdev->pdev->dev,
- "could not configure common threshold %d\n", ret);
- return ret;
+ ret = hclge_common_thrd_config(hdev);
+ if (ret) {
+ dev_err(&hdev->pdev->dev,
+ "could not configure common threshold %d\n",
+ ret);
+ return ret;
+ }
}
ret = hclge_common_wl_config(hdev);
@@ -2582,6 +2606,7 @@ static int hclge_rss_init_hw(struct hclge_dev *hdev)
u16 tc_valid[HCLGE_MAX_TC_NUM];
u16 tc_size[HCLGE_MAX_TC_NUM];
u32 *rss_indir = NULL;
+ u16 rss_size = 0, roundup_size;
const u8 *key;
int i, ret, j;
@@ -2596,7 +2621,13 @@ static int hclge_rss_init_hw(struct hclge_dev *hdev)
for (j = 0; j < hdev->num_vmdq_vport + 1; j++) {
for (i = 0; i < HCLGE_RSS_IND_TBL_SIZE; i++) {
vport[j].rss_indirection_tbl[i] =
- i % hdev->rss_size_max;
+ i % vport[j].alloc_rss_size;
+
+ /* vport 0 is for PF */
+ if (j != 0)
+ continue;
+
+ rss_size = vport[j].alloc_rss_size;
rss_indir[i] = vport[j].rss_indirection_tbl[i];
}
}
@@ -2613,42 +2644,32 @@ static int hclge_rss_init_hw(struct hclge_dev *hdev)
if (ret)
goto err;
+ /* Each TC have the same queue size, and tc_size set to hardware is
+ * the log2 of roundup power of two of rss_size, the acutal queue
+ * size is limited by indirection table.
+ */
+ if (rss_size > HCLGE_RSS_TC_SIZE_7 || rss_size == 0) {
+ dev_err(&hdev->pdev->dev,
+ "Configure rss tc size failed, invalid TC_SIZE = %d\n",
+ rss_size);
+ ret = -EINVAL;
+ goto err;
+ }
+
+ roundup_size = roundup_pow_of_two(rss_size);
+ roundup_size = ilog2(roundup_size);
+
for (i = 0; i < HCLGE_MAX_TC_NUM; i++) {
- if (hdev->hw_tc_map & BIT(i))
- tc_valid[i] = 1;
- else
- tc_valid[i] = 0;
+ tc_valid[i] = 0;
- switch (hdev->rss_size_max) {
- case HCLGE_RSS_TC_SIZE_0:
- tc_size[i] = 0;
- break;
- case HCLGE_RSS_TC_SIZE_1:
- tc_size[i] = 1;
- break;
- case HCLGE_RSS_TC_SIZE_2:
- tc_size[i] = 2;
- break;
- case HCLGE_RSS_TC_SIZE_3:
- tc_size[i] = 3;
- break;
- case HCLGE_RSS_TC_SIZE_4:
- tc_size[i] = 4;
- break;
- case HCLGE_RSS_TC_SIZE_5:
- tc_size[i] = 5;
- break;
- case HCLGE_RSS_TC_SIZE_6:
- tc_size[i] = 6;
- break;
- case HCLGE_RSS_TC_SIZE_7:
- tc_size[i] = 7;
- break;
- default:
- break;
- }
- tc_offset[i] = hdev->rss_size_max * i;
+ if (!(hdev->hw_tc_map & BIT(i)))
+ continue;
+
+ tc_valid[i] = 1;
+ tc_size[i] = roundup_size;
+ tc_offset[i] = rss_size * i;
}
+
ret = hclge_set_rss_tc_mode(hdev, tc_valid, tc_size, tc_offset);
err:
@@ -2679,7 +2700,11 @@ int hclge_map_vport_ring_to_vector(struct hclge_vport *vport, int vector_id,
hnae_get_bit(node->flag, HNAE3_RING_TYPE_B));
hnae_set_field(req->tqp_type_and_id[i], HCLGE_TQP_ID_M,
HCLGE_TQP_ID_S, node->tqp_index);
+ hnae_set_field(req->tqp_type_and_id[i], HCLGE_INT_GL_IDX_M,
+ HCLGE_INT_GL_IDX_S,
+ hnae_get_bit(node->flag, HNAE3_RING_TYPE_B));
req->tqp_type_and_id[i] = cpu_to_le16(req->tqp_type_and_id[i]);
+ req->vfid = vport->vport_id;
if (++i >= HCLGE_VECTOR_ELEMENTS_PER_CMD) {
req->int_cause_num = HCLGE_VECTOR_ELEMENTS_PER_CMD;
@@ -2763,8 +2788,12 @@ static int hclge_unmap_ring_from_vector(
hnae_get_bit(node->flag, HNAE3_RING_TYPE_B));
hnae_set_field(req->tqp_type_and_id[i], HCLGE_TQP_ID_M,
HCLGE_TQP_ID_S, node->tqp_index);
+ hnae_set_field(req->tqp_type_and_id[i], HCLGE_INT_GL_IDX_M,
+ HCLGE_INT_GL_IDX_S,
+ hnae_get_bit(node->flag, HNAE3_RING_TYPE_B));
req->tqp_type_and_id[i] = cpu_to_le16(req->tqp_type_and_id[i]);
+ req->vfid = vport->vport_id;
if (++i >= HCLGE_VECTOR_ELEMENTS_PER_CMD) {
req->int_cause_num = HCLGE_VECTOR_ELEMENTS_PER_CMD;
@@ -2778,7 +2807,7 @@ static int hclge_unmap_ring_from_vector(
}
i = 0;
hclge_cmd_setup_basic_desc(&desc,
- HCLGE_OPC_ADD_RING_TO_VECTOR,
+ HCLGE_OPC_DEL_RING_TO_VECTOR,
false);
req->int_vector_id = vector_id;
}
@@ -3665,6 +3694,7 @@ static int hclge_init_vlan_config(struct hclge_dev *hdev)
{
#define HCLGE_VLAN_TYPE_VF_TABLE 0
#define HCLGE_VLAN_TYPE_PORT_TABLE 1
+ struct hnae3_handle *handle;
int ret;
ret = hclge_set_vlan_filter_ctrl(hdev, HCLGE_VLAN_TYPE_VF_TABLE,
@@ -3674,8 +3704,11 @@ static int hclge_init_vlan_config(struct hclge_dev *hdev)
ret = hclge_set_vlan_filter_ctrl(hdev, HCLGE_VLAN_TYPE_PORT_TABLE,
true);
+ if (ret)
+ return ret;
- return ret;
+ handle = &hdev->vport[0].nic;
+ return hclge_set_port_vlan_filter(handle, htons(ETH_P_8021Q), 0, false);
}
static int hclge_set_mtu(struct hnae3_handle *handle, int new_mtu)
@@ -3920,8 +3953,7 @@ static int hclge_init_client_instance(struct hnae3_client *client,
goto err;
if (hdev->roce_client &&
- hnae_get_bit(hdev->ae_dev->flag,
- HNAE_DEV_SUPPORT_ROCE_B)) {
+ hnae3_dev_roce_supported(hdev)) {
struct hnae3_client *rc = hdev->roce_client;
ret = hclge_init_roce_base_info(vport);
@@ -3944,8 +3976,7 @@ static int hclge_init_client_instance(struct hnae3_client *client,
break;
case HNAE3_CLIENT_ROCE:
- if (hnae_get_bit(hdev->ae_dev->flag,
- HNAE_DEV_SUPPORT_ROCE_B)) {
+ if (hnae3_dev_roce_supported(hdev)) {
hdev->roce_client = client;
vport->roce.client = client;
}
@@ -4057,7 +4088,6 @@ static void hclge_pci_uninit(struct hclge_dev *hdev)
static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
{
struct pci_dev *pdev = ae_dev->pdev;
- const struct pci_device_id *id;
struct hclge_dev *hdev;
int ret;
@@ -4072,10 +4102,6 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
hdev->ae_dev = ae_dev;
ae_dev->priv = hdev;
- id = pci_match_id(roce_pci_tbl, ae_dev->pdev);
- if (id)
- hnae_set_bit(ae_dev->flag, HNAE_DEV_SUPPORT_ROCE_B, 1);
-
ret = hclge_pci_init(hdev);
if (ret) {
dev_err(&pdev->dev, "PCI init failed\n");
@@ -4138,12 +4164,6 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
return ret;
}
- ret = hclge_rss_init_hw(hdev);
- if (ret) {
- dev_err(&pdev->dev, "Rss init fail, ret =%d\n", ret);
- return ret;
- }
-
ret = hclge_init_vlan_config(hdev);
if (ret) {
dev_err(&pdev->dev, "VLAN init fail, ret =%d\n", ret);
@@ -4156,6 +4176,12 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
return ret;
}
+ ret = hclge_rss_init_hw(hdev);
+ if (ret) {
+ dev_err(&pdev->dev, "Rss init fail, ret =%d\n", ret);
+ return ret;
+ }
+
setup_timer(&hdev->service_timer, hclge_service_timer,
(unsigned long)hdev);
INIT_WORK(&hdev->service_task, hclge_service_task);
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
index edb10ad075eb..9fcfd9395424 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
@@ -176,7 +176,6 @@ struct hclge_pg_info {
struct hclge_tc_info {
u8 tc_id;
u8 tc_sch_mode; /* 0: sp; 1: dwrr */
- u8 up;
u8 pgid;
u32 bw_limit;
};
@@ -197,6 +196,7 @@ struct hclge_tm_info {
u8 num_tc;
u8 num_pg; /* It must be 1 if vNET-Base schd */
u8 pg_dwrr[HCLGE_PG_NUM];
+ u8 prio_tc[HNAE3_MAX_USER_PRIO];
struct hclge_pg_info pg_info[HCLGE_PG_NUM];
struct hclge_tc_info tc_info[HNAE3_MAX_TC];
enum hclge_fc_mode fc_mode;
@@ -477,6 +477,7 @@ struct hclge_vport {
u8 rss_hash_key[HCLGE_RSS_KEY_SIZE]; /* User configured hash keys */
/* User configured lookup table entries */
u8 rss_indirection_tbl[HCLGE_RSS_IND_TBL_SIZE];
+ u16 alloc_rss_size;
u16 qs_offset;
u16 bw_limit; /* VSI BW Limit (0 = disabled) */
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c
index 1c577d268f00..73a75d7cc551 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c
@@ -128,9 +128,7 @@ static int hclge_fill_pri_array(struct hclge_dev *hdev, u8 *pri, u8 pri_id)
{
u8 tc;
- for (tc = 0; tc < hdev->tm_info.num_tc; tc++)
- if (hdev->tm_info.tc_info[tc].up == pri_id)
- break;
+ tc = hdev->tm_info.prio_tc[pri_id];
if (tc >= hdev->tm_info.num_tc)
return -EINVAL;
@@ -158,7 +156,7 @@ static int hclge_up_to_tc_map(struct hclge_dev *hdev)
hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_PRI_TO_TC_MAPPING, false);
- for (pri_id = 0; pri_id < hdev->tm_info.num_tc; pri_id++) {
+ for (pri_id = 0; pri_id < HNAE3_MAX_USER_PRIO; pri_id++) {
ret = hclge_fill_pri_array(hdev, pri, pri_id);
if (ret)
return ret;
@@ -280,11 +278,11 @@ static int hclge_tm_pg_shapping_cfg(struct hclge_dev *hdev,
shap_cfg_cmd->pg_id = pg_id;
- hclge_tm_set_feild(shap_cfg_cmd->pg_shapping_para, IR_B, ir_b);
- hclge_tm_set_feild(shap_cfg_cmd->pg_shapping_para, IR_U, ir_u);
- hclge_tm_set_feild(shap_cfg_cmd->pg_shapping_para, IR_S, ir_s);
- hclge_tm_set_feild(shap_cfg_cmd->pg_shapping_para, BS_B, bs_b);
- hclge_tm_set_feild(shap_cfg_cmd->pg_shapping_para, BS_S, bs_s);
+ hclge_tm_set_field(shap_cfg_cmd->pg_shapping_para, IR_B, ir_b);
+ hclge_tm_set_field(shap_cfg_cmd->pg_shapping_para, IR_U, ir_u);
+ hclge_tm_set_field(shap_cfg_cmd->pg_shapping_para, IR_S, ir_s);
+ hclge_tm_set_field(shap_cfg_cmd->pg_shapping_para, BS_B, bs_b);
+ hclge_tm_set_field(shap_cfg_cmd->pg_shapping_para, BS_S, bs_s);
return hclge_cmd_send(&hdev->hw, &desc, 1);
}
@@ -307,11 +305,11 @@ static int hclge_tm_pri_shapping_cfg(struct hclge_dev *hdev,
shap_cfg_cmd->pri_id = pri_id;
- hclge_tm_set_feild(shap_cfg_cmd->pri_shapping_para, IR_B, ir_b);
- hclge_tm_set_feild(shap_cfg_cmd->pri_shapping_para, IR_U, ir_u);
- hclge_tm_set_feild(shap_cfg_cmd->pri_shapping_para, IR_S, ir_s);
- hclge_tm_set_feild(shap_cfg_cmd->pri_shapping_para, BS_B, bs_b);
- hclge_tm_set_feild(shap_cfg_cmd->pri_shapping_para, BS_S, bs_s);
+ hclge_tm_set_field(shap_cfg_cmd->pri_shapping_para, IR_B, ir_b);
+ hclge_tm_set_field(shap_cfg_cmd->pri_shapping_para, IR_U, ir_u);
+ hclge_tm_set_field(shap_cfg_cmd->pri_shapping_para, IR_S, ir_s);
+ hclge_tm_set_field(shap_cfg_cmd->pri_shapping_para, BS_B, bs_b);
+ hclge_tm_set_field(shap_cfg_cmd->pri_shapping_para, BS_S, bs_s);
return hclge_cmd_send(&hdev->hw, &desc, 1);
}
@@ -397,6 +395,7 @@ static void hclge_tm_vport_tc_info_update(struct hclge_vport *vport)
kinfo->num_tqps / kinfo->num_tc);
vport->qs_offset = hdev->tm_info.num_tc * vport->vport_id;
vport->dwrr = 100; /* 100 percent as init */
+ vport->alloc_rss_size = kinfo->rss_size;
for (i = 0; i < kinfo->num_tc; i++) {
if (hdev->hw_tc_map & BIT(i)) {
@@ -404,16 +403,17 @@ static void hclge_tm_vport_tc_info_update(struct hclge_vport *vport)
kinfo->tc_info[i].tqp_offset = i * kinfo->rss_size;
kinfo->tc_info[i].tqp_count = kinfo->rss_size;
kinfo->tc_info[i].tc = i;
- kinfo->tc_info[i].up = hdev->tm_info.tc_info[i].up;
} else {
/* Set to default queue if TC is disable */
kinfo->tc_info[i].enable = false;
kinfo->tc_info[i].tqp_offset = 0;
kinfo->tc_info[i].tqp_count = 1;
kinfo->tc_info[i].tc = 0;
- kinfo->tc_info[i].up = 0;
}
}
+
+ memcpy(kinfo->prio_tc, hdev->tm_info.prio_tc,
+ FIELD_SIZEOF(struct hnae3_knic_private_info, prio_tc));
}
static void hclge_tm_vport_info_update(struct hclge_dev *hdev)
@@ -435,12 +435,15 @@ static void hclge_tm_tc_info_init(struct hclge_dev *hdev)
for (i = 0; i < hdev->tm_info.num_tc; i++) {
hdev->tm_info.tc_info[i].tc_id = i;
hdev->tm_info.tc_info[i].tc_sch_mode = HCLGE_SCH_MODE_DWRR;
- hdev->tm_info.tc_info[i].up = i;
hdev->tm_info.tc_info[i].pgid = 0;
hdev->tm_info.tc_info[i].bw_limit =
hdev->tm_info.pg_info[0].bw_limit;
}
+ for (i = 0; i < HNAE3_MAX_USER_PRIO; i++)
+ hdev->tm_info.prio_tc[i] =
+ (i >= hdev->tm_info.num_tc) ? 0 : i;
+
hdev->flag &= ~HCLGE_FLAG_DCB_ENABLE;
}
@@ -976,6 +979,10 @@ int hclge_pause_setup_hw(struct hclge_dev *hdev)
if (ret)
return ret;
+ /* Only DCB-supported dev supports qset back pressure setting */
+ if (!hnae3_dev_dcb_supported(hdev))
+ return 0;
+
for (i = 0; i < hdev->tm_info.num_tc; i++) {
ret = hclge_tm_qs_bp_cfg(hdev, i);
if (ret)
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h
index 7e67337dfaf2..85158b0d73fe 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h
@@ -94,10 +94,10 @@ struct hclge_bp_to_qs_map_cmd {
u32 rsvd1;
};
-#define hclge_tm_set_feild(dest, string, val) \
+#define hclge_tm_set_field(dest, string, val) \
hnae_set_field((dest), (HCLGE_TM_SHAP_##string##_MSK), \
(HCLGE_TM_SHAP_##string##_LSH), val)
-#define hclge_tm_get_feild(src, string) \
+#define hclge_tm_get_field(src, string) \
hnae_get_field((src), (HCLGE_TM_SHAP_##string##_MSK), \
(HCLGE_TM_SHAP_##string##_LSH))
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c
index 1c3e29447891..35369e1c8036 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c
@@ -41,11 +41,16 @@ static struct hnae3_client client;
static const struct pci_device_id hns3_pci_tbl[] = {
{PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_GE), 0},
{PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE), 0},
- {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA), 0},
- {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA_MACSEC), 0},
- {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA), 0},
- {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA_MACSEC), 0},
- {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_100G_RDMA_MACSEC), 0},
+ {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA),
+ HNAE3_DEV_SUPPORT_ROCE_DCB_BITS},
+ {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA_MACSEC),
+ HNAE3_DEV_SUPPORT_ROCE_DCB_BITS},
+ {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA),
+ HNAE3_DEV_SUPPORT_ROCE_DCB_BITS},
+ {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA_MACSEC),
+ HNAE3_DEV_SUPPORT_ROCE_DCB_BITS},
+ {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_100G_RDMA_MACSEC),
+ HNAE3_DEV_SUPPORT_ROCE_DCB_BITS},
/* required last entry */
{0, }
};
@@ -1348,6 +1353,7 @@ static int hns3_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
}
ae_dev->pdev = pdev;
+ ae_dev->flag = ent->driver_data;
ae_dev->dev_type = HNAE3_DEV_KNIC;
pci_set_drvdata(pdev, ae_dev);
@@ -2705,10 +2711,11 @@ static void hns3_init_mac_addr(struct net_device *netdev)
eth_hw_addr_random(netdev);
dev_warn(priv->dev, "using random MAC address %pM\n",
netdev->dev_addr);
- /* Also copy this new MAC address into hdev */
- if (h->ae_algo->ops->set_mac_addr)
- h->ae_algo->ops->set_mac_addr(h, netdev->dev_addr);
}
+
+ if (h->ae_algo->ops->set_mac_addr)
+ h->ae_algo->ops->set_mac_addr(h, netdev->dev_addr);
+
}
static void hns3_nic_set_priv_ops(struct net_device *netdev)
diff --git a/drivers/net/ethernet/i825xx/Makefile b/drivers/net/ethernet/i825xx/Makefile
index 8c8dcd29c40d..422a19a5d94f 100644
--- a/drivers/net/ethernet/i825xx/Makefile
+++ b/drivers/net/ethernet/i825xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Intel 82586/82593/82596 chipset device drivers.
#
diff --git a/drivers/net/ethernet/ibm/emac/Makefile b/drivers/net/ethernet/ibm/emac/Makefile
index 98768ba0955a..ddf1ce3c8cca 100644
--- a/drivers/net/ethernet/ibm/emac/Makefile
+++ b/drivers/net/ethernet/ibm/emac/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the PowerPC 4xx on-chip ethernet driver
#
diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c
index 2c74baa2398a..fff09dcf9e34 100644
--- a/drivers/net/ethernet/ibm/emac/mal.c
+++ b/drivers/net/ethernet/ibm/emac/mal.c
@@ -402,7 +402,7 @@ static int mal_poll(struct napi_struct *napi, int budget)
unsigned long flags;
MAL_DBG2(mal, "poll(%d)" NL, budget);
- again:
+
/* Process TX skbs */
list_for_each(l, &mal->poll_list) {
struct mal_commac *mc =
@@ -451,7 +451,6 @@ static int mal_poll(struct napi_struct *napi, int budget)
spin_lock_irqsave(&mal->lock, flags);
mal_disable_eob_irq(mal);
spin_unlock_irqrestore(&mal->lock, flags);
- goto again;
}
mc->ops->poll_tx(mc->dev);
}
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
index cb8182f4fdfa..c66abd476023 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -1093,11 +1093,12 @@ static int build_hdr_data(u8 hdr_field, struct sk_buff *skb,
* places them in a descriptor array, scrq_arr
*/
-static void create_hdr_descs(u8 hdr_field, u8 *hdr_data, int len, int *hdr_len,
- union sub_crq *scrq_arr)
+static int create_hdr_descs(u8 hdr_field, u8 *hdr_data, int len, int *hdr_len,
+ union sub_crq *scrq_arr)
{
union sub_crq hdr_desc;
int tmp_len = len;
+ int num_descs = 0;
u8 *data, *cur;
int tmp;
@@ -1126,7 +1127,10 @@ static void create_hdr_descs(u8 hdr_field, u8 *hdr_data, int len, int *hdr_len,
tmp_len -= tmp;
*scrq_arr = hdr_desc;
scrq_arr++;
+ num_descs++;
}
+
+ return num_descs;
}
/**
@@ -1144,16 +1148,12 @@ static void build_hdr_descs_arr(struct ibmvnic_tx_buff *txbuff,
int *num_entries, u8 hdr_field)
{
int hdr_len[3] = {0, 0, 0};
- int tot_len, len;
+ int tot_len;
u8 *hdr_data = txbuff->hdr_data;
tot_len = build_hdr_data(hdr_field, txbuff->skb, hdr_len,
txbuff->hdr_data);
- len = tot_len;
- len -= 24;
- if (len > 0)
- num_entries += len % 29 ? len / 29 + 1 : len / 29;
- create_hdr_descs(hdr_field, hdr_data, tot_len, hdr_len,
+ *num_entries += create_hdr_descs(hdr_field, hdr_data, tot_len, hdr_len,
txbuff->indir_arr + 1);
}
diff --git a/drivers/net/ethernet/intel/Makefile b/drivers/net/ethernet/intel/Makefile
index 5ea764d85ec3..90af7757a885 100644
--- a/drivers/net/ethernet/intel/Makefile
+++ b/drivers/net/ethernet/intel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Intel network device drivers.
#
diff --git a/drivers/net/ethernet/intel/e1000/e1000_ethtool.c b/drivers/net/ethernet/intel/e1000/e1000_ethtool.c
index ec8aa4562cc9..3b3983a1ffbb 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_ethtool.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_ethtool.c
@@ -1824,11 +1824,12 @@ static void e1000_get_ethtool_stats(struct net_device *netdev,
{
struct e1000_adapter *adapter = netdev_priv(netdev);
int i;
- char *p = NULL;
const struct e1000_stats *stat = e1000_gstrings_stats;
e1000_update_stats(adapter);
- for (i = 0; i < E1000_GLOBAL_STATS_LEN; i++) {
+ for (i = 0; i < E1000_GLOBAL_STATS_LEN; i++, stat++) {
+ char *p;
+
switch (stat->type) {
case NETDEV_STATS:
p = (char *)netdev + stat->stat_offset;
@@ -1839,15 +1840,13 @@ static void e1000_get_ethtool_stats(struct net_device *netdev,
default:
WARN_ONCE(1, "Invalid E1000 stat type: %u index %d\n",
stat->type, i);
- break;
+ continue;
}
if (stat->sizeof_stat == sizeof(u64))
data[i] = *(u64 *)p;
else
data[i] = *(u32 *)p;
-
- stat++;
}
/* BUG_ON(i != E1000_STATS_LEN); */
}
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index 98375e1e1185..1982f7917a8d 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -520,8 +520,6 @@ void e1000_down(struct e1000_adapter *adapter)
struct net_device *netdev = adapter->netdev;
u32 rctl, tctl;
- netif_carrier_off(netdev);
-
/* disable receives in the hardware */
rctl = er32(RCTL);
ew32(RCTL, rctl & ~E1000_RCTL_EN);
@@ -537,6 +535,15 @@ void e1000_down(struct e1000_adapter *adapter)
E1000_WRITE_FLUSH();
msleep(10);
+ /* Set the carrier off after transmits have been disabled in the
+ * hardware, to avoid race conditions with e1000_watchdog() (which
+ * may be running concurrently to us, checking for the carrier
+ * bit to decide whether it should enable transmits again). Such
+ * a race condition would result into transmission being disabled
+ * in the hardware until the next IFF_DOWN+IFF_UP cycle.
+ */
+ netif_carrier_off(netdev);
+
napi_disable(&adapter->napi);
e1000_irq_disable(adapter);
diff --git a/drivers/net/ethernet/intel/i40e/i40e_nvm.c b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
index 57505b1df98d..d591b3e6bd7c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_nvm.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
@@ -298,7 +298,7 @@ static i40e_status i40e_read_nvm_word_aq(struct i40e_hw *hw, u16 offset,
}
/**
- * __i40e_read_nvm_word - Reads nvm word, assumes called does the locking
+ * __i40e_read_nvm_word - Reads nvm word, assumes caller does the locking
* @hw: pointer to the HW structure
* @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF)
* @data: word read from the Shadow RAM
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 1519dfb851d0..120c68f78951 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -1038,6 +1038,32 @@ reset_latency:
}
/**
+ * i40e_reuse_rx_page - page flip buffer and store it back on the ring
+ * @rx_ring: rx descriptor ring to store buffers on
+ * @old_buff: donor buffer to have page reused
+ *
+ * Synchronizes page for reuse by the adapter
+ **/
+static void i40e_reuse_rx_page(struct i40e_ring *rx_ring,
+ struct i40e_rx_buffer *old_buff)
+{
+ struct i40e_rx_buffer *new_buff;
+ u16 nta = rx_ring->next_to_alloc;
+
+ new_buff = &rx_ring->rx_bi[nta];
+
+ /* update, and store next to alloc */
+ nta++;
+ rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0;
+
+ /* transfer page from old buffer to new buffer */
+ new_buff->dma = old_buff->dma;
+ new_buff->page = old_buff->page;
+ new_buff->page_offset = old_buff->page_offset;
+ new_buff->pagecnt_bias = old_buff->pagecnt_bias;
+}
+
+/**
* i40e_rx_is_programming_status - check for programming status descriptor
* @qw: qword representing status_error_len in CPU ordering
*
@@ -1071,15 +1097,24 @@ static void i40e_clean_programming_status(struct i40e_ring *rx_ring,
union i40e_rx_desc *rx_desc,
u64 qw)
{
- u32 ntc = rx_ring->next_to_clean + 1;
+ struct i40e_rx_buffer *rx_buffer;
+ u32 ntc = rx_ring->next_to_clean;
u8 id;
/* fetch, update, and store next to clean */
+ rx_buffer = &rx_ring->rx_bi[ntc++];
ntc = (ntc < rx_ring->count) ? ntc : 0;
rx_ring->next_to_clean = ntc;
prefetch(I40E_RX_DESC(rx_ring, ntc));
+ /* place unused page back on the ring */
+ i40e_reuse_rx_page(rx_ring, rx_buffer);
+ rx_ring->rx_stats.page_reuse_count++;
+
+ /* clear contents of buffer_info */
+ rx_buffer->page = NULL;
+
id = (qw & I40E_RX_PROG_STATUS_DESC_QW1_PROGID_MASK) >>
I40E_RX_PROG_STATUS_DESC_QW1_PROGID_SHIFT;
@@ -1639,32 +1674,6 @@ static bool i40e_cleanup_headers(struct i40e_ring *rx_ring, struct sk_buff *skb,
}
/**
- * i40e_reuse_rx_page - page flip buffer and store it back on the ring
- * @rx_ring: rx descriptor ring to store buffers on
- * @old_buff: donor buffer to have page reused
- *
- * Synchronizes page for reuse by the adapter
- **/
-static void i40e_reuse_rx_page(struct i40e_ring *rx_ring,
- struct i40e_rx_buffer *old_buff)
-{
- struct i40e_rx_buffer *new_buff;
- u16 nta = rx_ring->next_to_alloc;
-
- new_buff = &rx_ring->rx_bi[nta];
-
- /* update, and store next to alloc */
- nta++;
- rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0;
-
- /* transfer page from old buffer to new buffer */
- new_buff->dma = old_buff->dma;
- new_buff->page = old_buff->page;
- new_buff->page_offset = old_buff->page_offset;
- new_buff->pagecnt_bias = old_buff->pagecnt_bias;
-}
-
-/**
* i40e_page_is_reusable - check if any reuse is possible
* @page: page struct to check
*
@@ -2093,6 +2102,7 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
if (unlikely(i40e_rx_is_programming_status(qword))) {
i40e_clean_programming_status(rx_ring, rx_desc, qword);
+ cleaned_count++;
continue;
}
size = (qword & I40E_RXD_QW1_LENGTH_PBUF_MASK) >>
@@ -2260,7 +2270,7 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,
goto enable_int;
}
- if (ITR_IS_DYNAMIC(tx_itr_setting)) {
+ if (ITR_IS_DYNAMIC(rx_itr_setting)) {
rx = i40e_set_new_dynamic_itr(&q_vector->rx);
rxval = i40e_buildreg_itr(I40E_RX_ITR, q_vector->rx.itr);
}
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_client.c b/drivers/net/ethernet/intel/i40evf/i40evf_client.c
index 93cf5fd17d91..d8131139565e 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_client.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_client.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/list.h>
#include <linux/errno.h>
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_client.h b/drivers/net/ethernet/intel/i40evf/i40evf_client.h
index 7d283c7506a5..15a10da5bd4a 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_client.h
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_client.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _I40E_CLIENT_H_
#define _I40E_CLIENT_H_
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index fd4a46b03cc8..ea69af267d63 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -5326,7 +5326,7 @@ dma_error:
DMA_TO_DEVICE);
dma_unmap_len_set(tx_buffer, len, 0);
- if (i--)
+ if (i-- == 0)
i += tx_ring->count;
tx_buffer = &tx_ring->tx_buffer_info[i];
}
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c
index 523f9d05a810..8a32eb7d47b9 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c
@@ -175,31 +175,9 @@ static s32 ixgbe_init_phy_ops_82598(struct ixgbe_hw *hw)
**/
static s32 ixgbe_start_hw_82598(struct ixgbe_hw *hw)
{
-#ifndef CONFIG_SPARC
- u32 regval;
- u32 i;
-#endif
s32 ret_val;
ret_val = ixgbe_start_hw_generic(hw);
-
-#ifndef CONFIG_SPARC
- /* Disable relaxed ordering */
- for (i = 0; ((i < hw->mac.max_tx_queues) &&
- (i < IXGBE_DCA_MAX_QUEUES_82598)); i++) {
- regval = IXGBE_READ_REG(hw, IXGBE_DCA_TXCTRL(i));
- regval &= ~IXGBE_DCA_TXCTRL_DESC_WRO_EN;
- IXGBE_WRITE_REG(hw, IXGBE_DCA_TXCTRL(i), regval);
- }
-
- for (i = 0; ((i < hw->mac.max_rx_queues) &&
- (i < IXGBE_DCA_MAX_QUEUES_82598)); i++) {
- regval = IXGBE_READ_REG(hw, IXGBE_DCA_RXCTRL(i));
- regval &= ~(IXGBE_DCA_RXCTRL_DATA_WRO_EN |
- IXGBE_DCA_RXCTRL_HEAD_WRO_EN);
- IXGBE_WRITE_REG(hw, IXGBE_DCA_RXCTRL(i), regval);
- }
-#endif
if (ret_val)
return ret_val;
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
index 2c19070d2a0b..6e6ab6f6875e 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
@@ -366,25 +366,6 @@ s32 ixgbe_start_hw_gen2(struct ixgbe_hw *hw)
}
IXGBE_WRITE_FLUSH(hw);
-#ifndef CONFIG_ARCH_WANT_RELAX_ORDER
- /* Disable relaxed ordering */
- for (i = 0; i < hw->mac.max_tx_queues; i++) {
- u32 regval;
-
- regval = IXGBE_READ_REG(hw, IXGBE_DCA_TXCTRL_82599(i));
- regval &= ~IXGBE_DCA_TXCTRL_DESC_WRO_EN;
- IXGBE_WRITE_REG(hw, IXGBE_DCA_TXCTRL_82599(i), regval);
- }
-
- for (i = 0; i < hw->mac.max_rx_queues; i++) {
- u32 regval;
-
- regval = IXGBE_READ_REG(hw, IXGBE_DCA_RXCTRL(i));
- regval &= ~(IXGBE_DCA_RXCTRL_DATA_WRO_EN |
- IXGBE_DCA_RXCTRL_HEAD_WRO_EN);
- IXGBE_WRITE_REG(hw, IXGBE_DCA_RXCTRL(i), regval);
- }
-#endif
return 0;
}
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
index 72c565712a5f..c3e7a8191128 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -1048,7 +1048,7 @@ static int ixgbe_set_ringparam(struct net_device *netdev,
{
struct ixgbe_adapter *adapter = netdev_priv(netdev);
struct ixgbe_ring *temp_ring;
- int i, err = 0;
+ int i, j, err = 0;
u32 new_rx_count, new_tx_count;
if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
@@ -1085,8 +1085,8 @@ static int ixgbe_set_ringparam(struct net_device *netdev,
}
/* allocate temporary buffer to store rings in */
- i = max_t(int, adapter->num_tx_queues, adapter->num_rx_queues);
- i = max_t(int, i, adapter->num_xdp_queues);
+ i = max_t(int, adapter->num_tx_queues + adapter->num_xdp_queues,
+ adapter->num_rx_queues);
temp_ring = vmalloc(i * sizeof(struct ixgbe_ring));
if (!temp_ring) {
@@ -1118,8 +1118,8 @@ static int ixgbe_set_ringparam(struct net_device *netdev,
}
}
- for (i = 0; i < adapter->num_xdp_queues; i++) {
- memcpy(&temp_ring[i], adapter->xdp_ring[i],
+ for (j = 0; j < adapter->num_xdp_queues; j++, i++) {
+ memcpy(&temp_ring[i], adapter->xdp_ring[j],
sizeof(struct ixgbe_ring));
temp_ring[i].count = new_tx_count;
@@ -1139,10 +1139,10 @@ static int ixgbe_set_ringparam(struct net_device *netdev,
memcpy(adapter->tx_ring[i], &temp_ring[i],
sizeof(struct ixgbe_ring));
}
- for (i = 0; i < adapter->num_xdp_queues; i++) {
- ixgbe_free_tx_resources(adapter->xdp_ring[i]);
+ for (j = 0; j < adapter->num_xdp_queues; j++, i++) {
+ ixgbe_free_tx_resources(adapter->xdp_ring[j]);
- memcpy(adapter->xdp_ring[i], &temp_ring[i],
+ memcpy(adapter->xdp_ring[j], &temp_ring[i],
sizeof(struct ixgbe_ring));
}
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index d962368d08d0..6d5f31e94358 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -4881,7 +4881,7 @@ static void ixgbe_clear_udp_tunnel_port(struct ixgbe_adapter *adapter, u32 mask)
IXGBE_FLAG_GENEVE_OFFLOAD_CAPABLE)))
return;
- vxlanctrl = IXGBE_READ_REG(hw, IXGBE_VXLANCTRL) && ~mask;
+ vxlanctrl = IXGBE_READ_REG(hw, IXGBE_VXLANCTRL) & ~mask;
IXGBE_WRITE_REG(hw, IXGBE_VXLANCTRL, vxlanctrl);
if (mask & IXGBE_VXLANCTRL_VXLAN_UDPPORT_MASK)
@@ -8020,29 +8020,23 @@ static int ixgbe_tx_map(struct ixgbe_ring *tx_ring,
return 0;
dma_error:
dev_err(tx_ring->dev, "TX DMA map failed\n");
- tx_buffer = &tx_ring->tx_buffer_info[i];
/* clear dma mappings for failed tx_buffer_info map */
- while (tx_buffer != first) {
+ for (;;) {
+ tx_buffer = &tx_ring->tx_buffer_info[i];
if (dma_unmap_len(tx_buffer, len))
dma_unmap_page(tx_ring->dev,
dma_unmap_addr(tx_buffer, dma),
dma_unmap_len(tx_buffer, len),
DMA_TO_DEVICE);
dma_unmap_len_set(tx_buffer, len, 0);
-
- if (i--)
+ if (tx_buffer == first)
+ break;
+ if (i == 0)
i += tx_ring->count;
- tx_buffer = &tx_ring->tx_buffer_info[i];
+ i--;
}
- if (dma_unmap_len(tx_buffer, len))
- dma_unmap_single(tx_ring->dev,
- dma_unmap_addr(tx_buffer, dma),
- dma_unmap_len(tx_buffer, len),
- DMA_TO_DEVICE);
- dma_unmap_len_set(tx_buffer, len, 0);
-
dev_kfree_skb_any(first->skb);
first->skb = NULL;
@@ -8529,6 +8523,10 @@ static int ixgbe_ioctl(struct net_device *netdev, struct ifreq *req, int cmd)
return ixgbe_ptp_set_ts_config(adapter, req);
case SIOCGHWTSTAMP:
return ixgbe_ptp_get_ts_config(adapter, req);
+ case SIOCGMIIPHY:
+ if (!adapter->hw.phy.ops.read_reg)
+ return -EOPNOTSUPP;
+ /* fall through */
default:
return mdio_mii_ioctl(&adapter->hw.phy.mdio, if_mii(req), cmd);
}
diff --git a/drivers/net/ethernet/marvell/Makefile b/drivers/net/ethernet/marvell/Makefile
index ff1bffa74803..9498ed26dbe5 100644
--- a/drivers/net/ethernet/marvell/Makefile
+++ b/drivers/net/ethernet/marvell/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Marvell device drivers.
#
diff --git a/drivers/net/ethernet/marvell/mvpp2.c b/drivers/net/ethernet/marvell/mvpp2.c
index dd0ee2691c86..a37af5813f33 100644
--- a/drivers/net/ethernet/marvell/mvpp2.c
+++ b/drivers/net/ethernet/marvell/mvpp2.c
@@ -333,7 +333,7 @@
#define MVPP2_GMAC_INBAND_AN_MASK BIT(0)
#define MVPP2_GMAC_FLOW_CTRL_MASK GENMASK(2, 1)
#define MVPP2_GMAC_PCS_ENABLE_MASK BIT(3)
-#define MVPP2_GMAC_PORT_RGMII_MASK BIT(4)
+#define MVPP2_GMAC_INTERNAL_CLK_MASK BIT(4)
#define MVPP2_GMAC_DISABLE_PADDING BIT(5)
#define MVPP2_GMAC_PORT_RESET_MASK BIT(6)
#define MVPP2_GMAC_AUTONEG_CONFIG 0xc
@@ -676,6 +676,7 @@ enum mvpp2_tag_type {
#define MVPP2_PRS_RI_L3_MCAST BIT(15)
#define MVPP2_PRS_RI_L3_BCAST (BIT(15) | BIT(16))
#define MVPP2_PRS_RI_IP_FRAG_MASK 0x20000
+#define MVPP2_PRS_RI_IP_FRAG_TRUE BIT(17)
#define MVPP2_PRS_RI_UDF3_MASK 0x300000
#define MVPP2_PRS_RI_UDF3_RX_SPECIAL BIT(21)
#define MVPP2_PRS_RI_L4_PROTO_MASK 0x1c00000
@@ -792,6 +793,7 @@ struct mvpp2 {
struct clk *pp_clk;
struct clk *gop_clk;
struct clk *mg_clk;
+ struct clk *axi_clk;
/* List of pointers to port structures */
struct mvpp2_port **port_list;
@@ -1165,6 +1167,11 @@ struct mvpp2_bm_pool {
u32 port_map;
};
+#define IS_TSO_HEADER(txq_pcpu, addr) \
+ ((addr) >= (txq_pcpu)->tso_headers_dma && \
+ (addr) < (txq_pcpu)->tso_headers_dma + \
+ (txq_pcpu)->size * TSO_HEADER_SIZE)
+
/* Queue modes */
#define MVPP2_QDIST_SINGLE_MODE 0
#define MVPP2_QDIST_MULTI_MODE 1
@@ -1532,7 +1539,7 @@ static bool mvpp2_prs_tcam_data_cmp(struct mvpp2_prs_entry *pe, int offs,
int off = MVPP2_PRS_TCAM_DATA_BYTE(offs);
u16 tcam_data;
- tcam_data = (8 << pe->tcam.byte[off + 1]) | pe->tcam.byte[off];
+ tcam_data = (pe->tcam.byte[off + 1] << 8) | pe->tcam.byte[off];
if (tcam_data != data)
return false;
return true;
@@ -2315,7 +2322,7 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
(proto != IPPROTO_IGMP))
return -EINVAL;
- /* Fragmented packet */
+ /* Not fragmented packet */
tid = mvpp2_prs_tcam_first_free(priv, MVPP2_PE_FIRST_FREE_TID,
MVPP2_PE_LAST_FREE_TID);
if (tid < 0)
@@ -2334,8 +2341,12 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
MVPP2_PRS_SRAM_OP_SEL_UDF_ADD);
mvpp2_prs_sram_ai_update(&pe, MVPP2_PRS_IPV4_DIP_AI_BIT,
MVPP2_PRS_IPV4_DIP_AI_BIT);
- mvpp2_prs_sram_ri_update(&pe, ri | MVPP2_PRS_RI_IP_FRAG_MASK,
- ri_mask | MVPP2_PRS_RI_IP_FRAG_MASK);
+ mvpp2_prs_sram_ri_update(&pe, ri, ri_mask | MVPP2_PRS_RI_IP_FRAG_MASK);
+
+ mvpp2_prs_tcam_data_byte_set(&pe, 2, 0x00,
+ MVPP2_PRS_TCAM_PROTO_MASK_L);
+ mvpp2_prs_tcam_data_byte_set(&pe, 3, 0x00,
+ MVPP2_PRS_TCAM_PROTO_MASK);
mvpp2_prs_tcam_data_byte_set(&pe, 5, proto, MVPP2_PRS_TCAM_PROTO_MASK);
mvpp2_prs_tcam_ai_update(&pe, 0, MVPP2_PRS_IPV4_DIP_AI_BIT);
@@ -2346,7 +2357,7 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
mvpp2_prs_shadow_set(priv, pe.index, MVPP2_PRS_LU_IP4);
mvpp2_prs_hw_write(priv, &pe);
- /* Not fragmented packet */
+ /* Fragmented packet */
tid = mvpp2_prs_tcam_first_free(priv, MVPP2_PE_FIRST_FREE_TID,
MVPP2_PE_LAST_FREE_TID);
if (tid < 0)
@@ -2358,8 +2369,11 @@ static int mvpp2_prs_ip4_proto(struct mvpp2 *priv, unsigned short proto,
pe.sram.word[MVPP2_PRS_SRAM_RI_CTRL_WORD] = 0x0;
mvpp2_prs_sram_ri_update(&pe, ri, ri_mask);
- mvpp2_prs_tcam_data_byte_set(&pe, 2, 0x00, MVPP2_PRS_TCAM_PROTO_MASK_L);
- mvpp2_prs_tcam_data_byte_set(&pe, 3, 0x00, MVPP2_PRS_TCAM_PROTO_MASK);
+ mvpp2_prs_sram_ri_update(&pe, ri | MVPP2_PRS_RI_IP_FRAG_TRUE,
+ ri_mask | MVPP2_PRS_RI_IP_FRAG_MASK);
+
+ mvpp2_prs_tcam_data_byte_set(&pe, 2, 0x00, 0x0);
+ mvpp2_prs_tcam_data_byte_set(&pe, 3, 0x00, 0x0);
/* Update shadow table and hw entry */
mvpp2_prs_shadow_set(priv, pe.index, MVPP2_PRS_LU_IP4);
@@ -2600,8 +2614,8 @@ static void mvpp2_prs_mac_init(struct mvpp2 *priv)
/* place holders only - no ports */
mvpp2_prs_mac_drop_all_set(priv, 0, false);
mvpp2_prs_mac_promisc_set(priv, 0, false);
- mvpp2_prs_mac_multi_set(priv, MVPP2_PE_MAC_MC_ALL, 0, false);
- mvpp2_prs_mac_multi_set(priv, MVPP2_PE_MAC_MC_IP6, 0, false);
+ mvpp2_prs_mac_multi_set(priv, 0, MVPP2_PE_MAC_MC_ALL, false);
+ mvpp2_prs_mac_multi_set(priv, 0, MVPP2_PE_MAC_MC_IP6, false);
}
/* Set default entries for various types of dsa packets */
@@ -3382,7 +3396,7 @@ mvpp2_prs_mac_da_range_find(struct mvpp2 *priv, int pmap, const u8 *da,
struct mvpp2_prs_entry *pe;
int tid;
- pe = kzalloc(sizeof(*pe), GFP_KERNEL);
+ pe = kzalloc(sizeof(*pe), GFP_ATOMIC);
if (!pe)
return NULL;
mvpp2_prs_tcam_lu_set(pe, MVPP2_PRS_LU_MAC);
@@ -3444,7 +3458,7 @@ static int mvpp2_prs_mac_da_accept(struct mvpp2 *priv, int port,
if (tid < 0)
return tid;
- pe = kzalloc(sizeof(*pe), GFP_KERNEL);
+ pe = kzalloc(sizeof(*pe), GFP_ATOMIC);
if (!pe)
return -ENOMEM;
mvpp2_prs_tcam_lu_set(pe, MVPP2_PRS_LU_MAC);
@@ -4591,7 +4605,6 @@ static void mvpp2_port_mii_gmac_configure(struct mvpp2_port *port)
val |= MVPP2_GMAC_INBAND_AN_MASK | MVPP2_GMAC_PCS_ENABLE_MASK;
} else if (phy_interface_mode_is_rgmii(port->phy_interface)) {
val &= ~MVPP2_GMAC_PCS_ENABLE_MASK;
- val |= MVPP2_GMAC_PORT_RGMII_MASK;
}
writel(val, port->base + MVPP2_GMAC_CTRL_2_REG);
@@ -5313,8 +5326,9 @@ static void mvpp2_txq_bufs_free(struct mvpp2_port *port,
struct mvpp2_txq_pcpu_buf *tx_buf =
txq_pcpu->buffs + txq_pcpu->txq_get_index;
- dma_unmap_single(port->dev->dev.parent, tx_buf->dma,
- tx_buf->size, DMA_TO_DEVICE);
+ if (!IS_TSO_HEADER(txq_pcpu, tx_buf->dma))
+ dma_unmap_single(port->dev->dev.parent, tx_buf->dma,
+ tx_buf->size, DMA_TO_DEVICE);
if (tx_buf->skb)
dev_kfree_skb_any(tx_buf->skb);
@@ -5601,7 +5615,7 @@ static int mvpp2_txq_init(struct mvpp2_port *port,
txq_pcpu->tso_headers =
dma_alloc_coherent(port->dev->dev.parent,
- MVPP2_AGGR_TXQ_SIZE * TSO_HEADER_SIZE,
+ txq_pcpu->size * TSO_HEADER_SIZE,
&txq_pcpu->tso_headers_dma,
GFP_KERNEL);
if (!txq_pcpu->tso_headers)
@@ -5615,7 +5629,7 @@ cleanup:
kfree(txq_pcpu->buffs);
dma_free_coherent(port->dev->dev.parent,
- MVPP2_AGGR_TXQ_SIZE * MVPP2_DESC_ALIGNED_SIZE,
+ txq_pcpu->size * TSO_HEADER_SIZE,
txq_pcpu->tso_headers,
txq_pcpu->tso_headers_dma);
}
@@ -5639,7 +5653,7 @@ static void mvpp2_txq_deinit(struct mvpp2_port *port,
kfree(txq_pcpu->buffs);
dma_free_coherent(port->dev->dev.parent,
- MVPP2_AGGR_TXQ_SIZE * MVPP2_DESC_ALIGNED_SIZE,
+ txq_pcpu->size * TSO_HEADER_SIZE,
txq_pcpu->tso_headers,
txq_pcpu->tso_headers_dma);
}
@@ -6204,12 +6218,15 @@ static inline void
tx_desc_unmap_put(struct mvpp2_port *port, struct mvpp2_tx_queue *txq,
struct mvpp2_tx_desc *desc)
{
+ struct mvpp2_txq_pcpu *txq_pcpu = this_cpu_ptr(txq->pcpu);
+
dma_addr_t buf_dma_addr =
mvpp2_txdesc_dma_addr_get(port, desc);
size_t buf_sz =
mvpp2_txdesc_size_get(port, desc);
- dma_unmap_single(port->dev->dev.parent, buf_dma_addr,
- buf_sz, DMA_TO_DEVICE);
+ if (!IS_TSO_HEADER(txq_pcpu, buf_dma_addr))
+ dma_unmap_single(port->dev->dev.parent, buf_dma_addr,
+ buf_sz, DMA_TO_DEVICE);
mvpp2_txq_desc_put(txq);
}
@@ -6482,7 +6499,7 @@ out:
}
/* Finalize TX processing */
- if (txq_pcpu->count >= txq->done_pkts_coal)
+ if (!port->has_tx_irqs && txq_pcpu->count >= txq->done_pkts_coal)
mvpp2_txq_done(port, txq, txq_pcpu);
/* Set the timer in case not all frags were processed */
@@ -7496,7 +7513,7 @@ static void mvpp2_port_copy_mac_addr(struct net_device *dev, struct mvpp2 *priv,
/* Ports initialization */
static int mvpp2_port_probe(struct platform_device *pdev,
struct device_node *port_node,
- struct mvpp2 *priv)
+ struct mvpp2 *priv, int index)
{
struct device_node *phy_node;
struct phy *comphy;
@@ -7670,7 +7687,7 @@ static int mvpp2_port_probe(struct platform_device *pdev,
}
netdev_info(dev, "Using %s mac address %pM\n", mac_from, dev->dev_addr);
- priv->port_list[id] = port;
+ priv->port_list[index] = port;
return 0;
err_free_port_pcpu:
@@ -7963,6 +7980,18 @@ static int mvpp2_probe(struct platform_device *pdev)
err = clk_prepare_enable(priv->mg_clk);
if (err < 0)
goto err_gop_clk;
+
+ priv->axi_clk = devm_clk_get(&pdev->dev, "axi_clk");
+ if (IS_ERR(priv->axi_clk)) {
+ err = PTR_ERR(priv->axi_clk);
+ if (err == -EPROBE_DEFER)
+ goto err_gop_clk;
+ priv->axi_clk = NULL;
+ } else {
+ err = clk_prepare_enable(priv->axi_clk);
+ if (err < 0)
+ goto err_gop_clk;
+ }
}
/* Get system's tclk rate */
@@ -8005,16 +8034,19 @@ static int mvpp2_probe(struct platform_device *pdev)
}
/* Initialize ports */
+ i = 0;
for_each_available_child_of_node(dn, port_node) {
- err = mvpp2_port_probe(pdev, port_node, priv);
+ err = mvpp2_port_probe(pdev, port_node, priv, i);
if (err < 0)
goto err_mg_clk;
+ i++;
}
platform_set_drvdata(pdev, priv);
return 0;
err_mg_clk:
+ clk_disable_unprepare(priv->axi_clk);
if (priv->hw_version == MVPP22)
clk_disable_unprepare(priv->mg_clk);
err_gop_clk:
@@ -8052,6 +8084,7 @@ static int mvpp2_remove(struct platform_device *pdev)
aggr_txq->descs_dma);
}
+ clk_disable_unprepare(priv->axi_clk);
clk_disable_unprepare(priv->mg_clk);
clk_disable_unprepare(priv->pp_clk);
clk_disable_unprepare(priv->gop_clk);
diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
index 8a835e82256a..eef35bf3e849 100644
--- a/drivers/net/ethernet/marvell/skge.c
+++ b/drivers/net/ethernet/marvell/skge.c
@@ -4193,7 +4193,7 @@ static struct pci_driver skge_driver = {
.driver.pm = SKGE_PM_OPS,
};
-static struct dmi_system_id skge_32bit_dma_boards[] = {
+static const struct dmi_system_id skge_32bit_dma_boards[] = {
{
.ident = "Gigabyte nForce boards",
.matches = {
diff --git a/drivers/net/ethernet/marvell/skge.h b/drivers/net/ethernet/marvell/skge.h
index 3ea151ff9c43..6fa7b6a34c08 100644
--- a/drivers/net/ethernet/marvell/skge.h
+++ b/drivers/net/ethernet/marvell/skge.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for the new Marvell Yukon / SysKonnect driver.
*/
diff --git a/drivers/net/ethernet/marvell/sky2.h b/drivers/net/ethernet/marvell/sky2.h
index 0fe160796842..b02b6523083c 100644
--- a/drivers/net/ethernet/marvell/sky2.h
+++ b/drivers/net/ethernet/marvell/sky2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for the new Marvell Yukon 2 driver.
*/
diff --git a/drivers/net/ethernet/mellanox/mlx4/Makefile b/drivers/net/ethernet/mellanox/mlx4/Makefile
index c82217e0d22d..16b10d01fcf4 100644
--- a/drivers/net/ethernet/mellanox/mlx4/Makefile
+++ b/drivers/net/ethernet/mellanox/mlx4/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MLX4_CORE) += mlx4_core.o
mlx4_core-y := alloc.o catas.o cmd.o cq.o eq.o fw.o fw_qos.o icm.o intf.o \
diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_stats.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_stats.h
index 926f3c3f3665..aab28eb27a30 100644
--- a/drivers/net/ethernet/mellanox/mlx4/mlx4_stats.h
+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_stats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MLX4_STATS_
#define _MLX4_STATS_
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
index 87a3099808f3..714dd0dc5eef 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
+++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MLX5_CORE) += mlx5_core.o
subdir-ccflags-y += -I$(src)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/dev.c b/drivers/net/ethernet/mellanox/mlx5/core/dev.c
index ff60cf7342ca..fc281712869b 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/dev.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/dev.c
@@ -77,35 +77,41 @@ static void add_delayed_event(struct mlx5_priv *priv,
list_add_tail(&delayed_event->list, &priv->waiting_events_list);
}
-static void fire_delayed_event_locked(struct mlx5_device_context *dev_ctx,
- struct mlx5_core_dev *dev,
- struct mlx5_priv *priv)
+static void delayed_event_release(struct mlx5_device_context *dev_ctx,
+ struct mlx5_priv *priv)
{
+ struct mlx5_core_dev *dev = container_of(priv, struct mlx5_core_dev, priv);
struct mlx5_delayed_event *de;
struct mlx5_delayed_event *n;
+ struct list_head temp;
- /* stop delaying events */
- priv->is_accum_events = false;
+ INIT_LIST_HEAD(&temp);
+
+ spin_lock_irq(&priv->ctx_lock);
- /* fire all accumulated events before new event comes */
- list_for_each_entry_safe(de, n, &priv->waiting_events_list, list) {
+ priv->is_accum_events = false;
+ list_splice_init(&priv->waiting_events_list, &temp);
+ if (!dev_ctx->context)
+ goto out;
+ list_for_each_entry_safe(de, n, &priv->waiting_events_list, list)
dev_ctx->intf->event(dev, dev_ctx->context, de->event, de->param);
+
+out:
+ spin_unlock_irq(&priv->ctx_lock);
+
+ list_for_each_entry_safe(de, n, &temp, list) {
list_del(&de->list);
kfree(de);
}
}
-static void cleanup_delayed_evets(struct mlx5_priv *priv)
+/* accumulating events that can come after mlx5_ib calls to
+ * ib_register_device, till adding that interface to the events list.
+ */
+static void delayed_event_start(struct mlx5_priv *priv)
{
- struct mlx5_delayed_event *de;
- struct mlx5_delayed_event *n;
-
spin_lock_irq(&priv->ctx_lock);
- priv->is_accum_events = false;
- list_for_each_entry_safe(de, n, &priv->waiting_events_list, list) {
- list_del(&de->list);
- kfree(de);
- }
+ priv->is_accum_events = true;
spin_unlock_irq(&priv->ctx_lock);
}
@@ -122,11 +128,8 @@ void mlx5_add_device(struct mlx5_interface *intf, struct mlx5_priv *priv)
return;
dev_ctx->intf = intf;
- /* accumulating events that can come after mlx5_ib calls to
- * ib_register_device, till adding that interface to the events list.
- */
- priv->is_accum_events = true;
+ delayed_event_start(priv);
dev_ctx->context = intf->add(dev);
set_bit(MLX5_INTERFACE_ADDED, &dev_ctx->state);
@@ -137,8 +140,6 @@ void mlx5_add_device(struct mlx5_interface *intf, struct mlx5_priv *priv)
spin_lock_irq(&priv->ctx_lock);
list_add_tail(&dev_ctx->list, &priv->ctx_list);
- fire_delayed_event_locked(dev_ctx, dev, priv);
-
#ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING
if (dev_ctx->intf->pfault) {
if (priv->pfault) {
@@ -150,11 +151,12 @@ void mlx5_add_device(struct mlx5_interface *intf, struct mlx5_priv *priv)
}
#endif
spin_unlock_irq(&priv->ctx_lock);
- } else {
- kfree(dev_ctx);
- /* delete all accumulated events */
- cleanup_delayed_evets(priv);
}
+
+ delayed_event_release(dev_ctx, priv);
+
+ if (!dev_ctx->context)
+ kfree(dev_ctx);
}
static struct mlx5_device_context *mlx5_get_device(struct mlx5_interface *intf,
@@ -205,17 +207,21 @@ static void mlx5_attach_interface(struct mlx5_interface *intf, struct mlx5_priv
if (!dev_ctx)
return;
+ delayed_event_start(priv);
if (intf->attach) {
if (test_bit(MLX5_INTERFACE_ATTACHED, &dev_ctx->state))
- return;
+ goto out;
intf->attach(dev, dev_ctx->context);
set_bit(MLX5_INTERFACE_ATTACHED, &dev_ctx->state);
} else {
if (test_bit(MLX5_INTERFACE_ADDED, &dev_ctx->state))
- return;
+ goto out;
dev_ctx->context = intf->add(dev);
set_bit(MLX5_INTERFACE_ADDED, &dev_ctx->state);
}
+
+out:
+ delayed_event_release(dev_ctx, priv);
}
void mlx5_attach_device(struct mlx5_core_dev *dev)
@@ -414,8 +420,14 @@ void mlx5_core_event(struct mlx5_core_dev *dev, enum mlx5_dev_event event,
if (priv->is_accum_events)
add_delayed_event(priv, dev, event, param);
+ /* After mlx5_detach_device, the dev_ctx->intf is still set and dev_ctx is
+ * still in priv->ctx_list. In this case, only notify the dev_ctx if its
+ * ADDED or ATTACHED bit are set.
+ */
list_for_each_entry(dev_ctx, &priv->ctx_list, list)
- if (dev_ctx->intf->event)
+ if (dev_ctx->intf->event &&
+ (test_bit(MLX5_INTERFACE_ADDED, &dev_ctx->state) ||
+ test_bit(MLX5_INTERFACE_ATTACHED, &dev_ctx->state)))
dev_ctx->intf->event(dev, dev_ctx->context, event, param);
spin_unlock_irqrestore(&priv->ctx_lock, flags);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h b/drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
index 1e3a6c3e4132..80eef4163f52 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
@@ -139,7 +139,7 @@ TRACE_EVENT(mlx5_fs_del_fg,
{MLX5_FLOW_CONTEXT_ACTION_FWD_NEXT_PRIO, "NEXT_PRIO"}
TRACE_EVENT(mlx5_fs_set_fte,
- TP_PROTO(const struct fs_fte *fte, bool new_fte),
+ TP_PROTO(const struct fs_fte *fte, int new_fte),
TP_ARGS(fte, new_fte),
TP_STRUCT__entry(
__field(const struct fs_fte *, fte)
@@ -149,7 +149,7 @@ TRACE_EVENT(mlx5_fs_set_fte,
__field(u32, action)
__field(u32, flow_tag)
__field(u8, mask_enable)
- __field(bool, new_fte)
+ __field(int, new_fte)
__array(u32, mask_outer, MLX5_ST_SZ_DW(fte_match_set_lyr_2_4))
__array(u32, mask_inner, MLX5_ST_SZ_DW(fte_match_set_lyr_2_4))
__array(u32, mask_misc, MLX5_ST_SZ_DW(fte_match_set_misc))
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c b/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
index c1d384fca4dc..51c4cc00a186 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
@@ -41,6 +41,11 @@
#define MLX5E_CEE_STATE_UP 1
#define MLX5E_CEE_STATE_DOWN 0
+enum {
+ MLX5E_VENDOR_TC_GROUP_NUM = 7,
+ MLX5E_LOWEST_PRIO_GROUP = 0,
+};
+
/* If dcbx mode is non-host set the dcbx mode to host.
*/
static int mlx5e_dcbnl_set_dcbx_mode(struct mlx5e_priv *priv,
@@ -85,6 +90,9 @@ static int mlx5e_dcbnl_ieee_getets(struct net_device *netdev,
{
struct mlx5e_priv *priv = netdev_priv(netdev);
struct mlx5_core_dev *mdev = priv->mdev;
+ u8 tc_group[IEEE_8021QAZ_MAX_TCS];
+ bool is_tc_group_6_exist = false;
+ bool is_zero_bw_ets_tc = false;
int err = 0;
int i;
@@ -96,37 +104,64 @@ static int mlx5e_dcbnl_ieee_getets(struct net_device *netdev,
err = mlx5_query_port_prio_tc(mdev, i, &ets->prio_tc[i]);
if (err)
return err;
- }
- for (i = 0; i < ets->ets_cap; i++) {
+ err = mlx5_query_port_tc_group(mdev, i, &tc_group[i]);
+ if (err)
+ return err;
+
err = mlx5_query_port_tc_bw_alloc(mdev, i, &ets->tc_tx_bw[i]);
if (err)
return err;
+
+ if (ets->tc_tx_bw[i] < MLX5E_MAX_BW_ALLOC &&
+ tc_group[i] == (MLX5E_LOWEST_PRIO_GROUP + 1))
+ is_zero_bw_ets_tc = true;
+
+ if (tc_group[i] == (MLX5E_VENDOR_TC_GROUP_NUM - 1))
+ is_tc_group_6_exist = true;
+ }
+
+ /* Report 0% ets tc if exits*/
+ if (is_zero_bw_ets_tc) {
+ for (i = 0; i < ets->ets_cap; i++)
+ if (tc_group[i] == MLX5E_LOWEST_PRIO_GROUP)
+ ets->tc_tx_bw[i] = 0;
+ }
+
+ /* Update tc_tsa based on fw setting*/
+ for (i = 0; i < ets->ets_cap; i++) {
if (ets->tc_tx_bw[i] < MLX5E_MAX_BW_ALLOC)
priv->dcbx.tc_tsa[i] = IEEE_8021QAZ_TSA_ETS;
+ else if (tc_group[i] == MLX5E_VENDOR_TC_GROUP_NUM &&
+ !is_tc_group_6_exist)
+ priv->dcbx.tc_tsa[i] = IEEE_8021QAZ_TSA_VENDOR;
}
-
memcpy(ets->tc_tsa, priv->dcbx.tc_tsa, sizeof(ets->tc_tsa));
return err;
}
-enum {
- MLX5E_VENDOR_TC_GROUP_NUM = 7,
- MLX5E_ETS_TC_GROUP_NUM = 0,
-};
-
static void mlx5e_build_tc_group(struct ieee_ets *ets, u8 *tc_group, int max_tc)
{
bool any_tc_mapped_to_ets = false;
+ bool ets_zero_bw = false;
int strict_group;
int i;
- for (i = 0; i <= max_tc; i++)
- if (ets->tc_tsa[i] == IEEE_8021QAZ_TSA_ETS)
+ for (i = 0; i <= max_tc; i++) {
+ if (ets->tc_tsa[i] == IEEE_8021QAZ_TSA_ETS) {
any_tc_mapped_to_ets = true;
+ if (!ets->tc_tx_bw[i])
+ ets_zero_bw = true;
+ }
+ }
- strict_group = any_tc_mapped_to_ets ? 1 : 0;
+ /* strict group has higher priority than ets group */
+ strict_group = MLX5E_LOWEST_PRIO_GROUP;
+ if (any_tc_mapped_to_ets)
+ strict_group++;
+ if (ets_zero_bw)
+ strict_group++;
for (i = 0; i <= max_tc; i++) {
switch (ets->tc_tsa[i]) {
@@ -137,7 +172,9 @@ static void mlx5e_build_tc_group(struct ieee_ets *ets, u8 *tc_group, int max_tc)
tc_group[i] = strict_group++;
break;
case IEEE_8021QAZ_TSA_ETS:
- tc_group[i] = MLX5E_ETS_TC_GROUP_NUM;
+ tc_group[i] = MLX5E_LOWEST_PRIO_GROUP;
+ if (ets->tc_tx_bw[i] && ets_zero_bw)
+ tc_group[i] = MLX5E_LOWEST_PRIO_GROUP + 1;
break;
}
}
@@ -146,9 +183,23 @@ static void mlx5e_build_tc_group(struct ieee_ets *ets, u8 *tc_group, int max_tc)
static void mlx5e_build_tc_tx_bw(struct ieee_ets *ets, u8 *tc_tx_bw,
u8 *tc_group, int max_tc)
{
+ int bw_for_ets_zero_bw_tc = 0;
+ int last_ets_zero_bw_tc = -1;
+ int num_ets_zero_bw = 0;
int i;
for (i = 0; i <= max_tc; i++) {
+ if (ets->tc_tsa[i] == IEEE_8021QAZ_TSA_ETS &&
+ !ets->tc_tx_bw[i]) {
+ num_ets_zero_bw++;
+ last_ets_zero_bw_tc = i;
+ }
+ }
+
+ if (num_ets_zero_bw)
+ bw_for_ets_zero_bw_tc = MLX5E_MAX_BW_ALLOC / num_ets_zero_bw;
+
+ for (i = 0; i <= max_tc; i++) {
switch (ets->tc_tsa[i]) {
case IEEE_8021QAZ_TSA_VENDOR:
tc_tx_bw[i] = MLX5E_MAX_BW_ALLOC;
@@ -157,12 +208,26 @@ static void mlx5e_build_tc_tx_bw(struct ieee_ets *ets, u8 *tc_tx_bw,
tc_tx_bw[i] = MLX5E_MAX_BW_ALLOC;
break;
case IEEE_8021QAZ_TSA_ETS:
- tc_tx_bw[i] = ets->tc_tx_bw[i];
+ tc_tx_bw[i] = ets->tc_tx_bw[i] ?
+ ets->tc_tx_bw[i] :
+ bw_for_ets_zero_bw_tc;
break;
}
}
+
+ /* Make sure the total bw for ets zero bw group is 100% */
+ if (last_ets_zero_bw_tc != -1)
+ tc_tx_bw[last_ets_zero_bw_tc] +=
+ MLX5E_MAX_BW_ALLOC % num_ets_zero_bw;
}
+/* If there are ETS BW 0,
+ * Set ETS group # to 1 for all ETS non zero BW tcs. Their sum must be 100%.
+ * Set group #0 to all the ETS BW 0 tcs and
+ * equally splits the 100% BW between them
+ * Report both group #0 and #1 as ETS type.
+ * All the tcs in group #0 will be reported with 0% BW.
+ */
int mlx5e_dcbnl_ieee_setets_core(struct mlx5e_priv *priv, struct ieee_ets *ets)
{
struct mlx5_core_dev *mdev = priv->mdev;
@@ -188,7 +253,6 @@ int mlx5e_dcbnl_ieee_setets_core(struct mlx5e_priv *priv, struct ieee_ets *ets)
return err;
memcpy(priv->dcbx.tc_tsa, ets->tc_tsa, sizeof(ets->tc_tsa));
-
return err;
}
@@ -209,17 +273,9 @@ static int mlx5e_dbcnl_validate_ets(struct net_device *netdev,
}
/* Validate Bandwidth Sum */
- for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++) {
- if (ets->tc_tsa[i] == IEEE_8021QAZ_TSA_ETS) {
- if (!ets->tc_tx_bw[i]) {
- netdev_err(netdev,
- "Failed to validate ETS: BW 0 is illegal\n");
- return -EINVAL;
- }
-
+ for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++)
+ if (ets->tc_tsa[i] == IEEE_8021QAZ_TSA_ETS)
bw_sum += ets->tc_tx_bw[i];
- }
- }
if (bw_sum != 0 && bw_sum != 100) {
netdev_err(netdev,
@@ -533,8 +589,7 @@ static void mlx5e_dcbnl_getpgtccfgtx(struct net_device *netdev,
static void mlx5e_dcbnl_getpgbwgcfgtx(struct net_device *netdev,
int pgid, u8 *bw_pct)
{
- struct mlx5e_priv *priv = netdev_priv(netdev);
- struct mlx5_core_dev *mdev = priv->mdev;
+ struct ieee_ets ets;
if (pgid >= CEE_DCBX_MAX_PGS) {
netdev_err(netdev,
@@ -542,8 +597,8 @@ static void mlx5e_dcbnl_getpgbwgcfgtx(struct net_device *netdev,
return;
}
- if (mlx5_query_port_tc_bw_alloc(mdev, pgid, bw_pct))
- *bw_pct = 0;
+ mlx5e_dcbnl_ieee_getets(netdev, &ets);
+ *bw_pct = ets.tc_tx_bw[pgid];
}
static void mlx5e_dcbnl_setpfccfg(struct net_device *netdev,
@@ -739,8 +794,6 @@ static void mlx5e_ets_init(struct mlx5e_priv *priv)
ets.prio_tc[i] = i;
}
- memcpy(priv->dcbx.tc_tsa, ets.tc_tsa, sizeof(ets.tc_tsa));
-
/* tclass[prio=0]=1, tclass[prio=1]=0, tclass[prio=i]=i (for i>1) */
ets.prio_tc[0] = 1;
ets.prio_tc[1] = 0;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c b/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
index f11fd07ac4dd..850cdc980ab5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
@@ -291,7 +291,7 @@ void mlx5e_enable_vlan_filter(struct mlx5e_priv *priv)
priv->fs.vlan.filter_disabled = false;
if (priv->netdev->flags & IFF_PROMISC)
return;
- mlx5e_del_any_vid_rules(priv);
+ mlx5e_del_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_CTAG_VID, 0);
}
void mlx5e_disable_vlan_filter(struct mlx5e_priv *priv)
@@ -302,7 +302,7 @@ void mlx5e_disable_vlan_filter(struct mlx5e_priv *priv)
priv->fs.vlan.filter_disabled = true;
if (priv->netdev->flags & IFF_PROMISC)
return;
- mlx5e_add_any_vid_rules(priv);
+ mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_CTAG_VID, 0);
}
int mlx5e_vlan_rx_add_vid(struct net_device *dev, __always_unused __be16 proto,
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index dfc29720ab77..cc11bbbd0309 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -184,7 +184,6 @@ static void mlx5e_update_sw_counters(struct mlx5e_priv *priv)
struct mlx5e_sw_stats temp, *s = &temp;
struct mlx5e_rq_stats *rq_stats;
struct mlx5e_sq_stats *sq_stats;
- u64 tx_offload_none = 0;
int i, j;
memset(s, 0, sizeof(*s));
@@ -199,6 +198,7 @@ static void mlx5e_update_sw_counters(struct mlx5e_priv *priv)
s->rx_lro_bytes += rq_stats->lro_bytes;
s->rx_csum_none += rq_stats->csum_none;
s->rx_csum_complete += rq_stats->csum_complete;
+ s->rx_csum_unnecessary += rq_stats->csum_unnecessary;
s->rx_csum_unnecessary_inner += rq_stats->csum_unnecessary_inner;
s->rx_xdp_drop += rq_stats->xdp_drop;
s->rx_xdp_tx += rq_stats->xdp_tx;
@@ -229,14 +229,11 @@ static void mlx5e_update_sw_counters(struct mlx5e_priv *priv)
s->tx_queue_dropped += sq_stats->dropped;
s->tx_xmit_more += sq_stats->xmit_more;
s->tx_csum_partial_inner += sq_stats->csum_partial_inner;
- tx_offload_none += sq_stats->csum_none;
+ s->tx_csum_none += sq_stats->csum_none;
+ s->tx_csum_partial += sq_stats->csum_partial;
}
}
- /* Update calculated offload counters */
- s->tx_csum_partial = s->tx_packets - tx_offload_none - s->tx_csum_partial_inner;
- s->rx_csum_unnecessary = s->rx_packets - s->rx_csum_none - s->rx_csum_complete;
-
s->link_down_events_phy = MLX5_GET(ppcnt_reg,
priv->stats.pport.phy_counters,
counter_set.phys_layer_cntrs.link_down_events);
@@ -3333,8 +3330,8 @@ static int mlx5e_handle_feature(struct net_device *netdev,
err = feature_handler(netdev, enable);
if (err) {
- netdev_err(netdev, "%s feature 0x%llx failed err %d\n",
- enable ? "Enable" : "Disable", feature, err);
+ netdev_err(netdev, "%s feature %pNF failed, err %d\n",
+ enable ? "Enable" : "Disable", &feature, err);
return err;
}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
index f1dd638384d3..15a1687483cc 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
@@ -627,6 +627,7 @@ static inline void mlx5e_handle_csum(struct net_device *netdev,
if (lro) {
skb->ip_summed = CHECKSUM_UNNECESSARY;
+ rq->stats.csum_unnecessary++;
return;
}
@@ -644,7 +645,9 @@ static inline void mlx5e_handle_csum(struct net_device *netdev,
skb->csum_level = 1;
skb->encapsulation = 1;
rq->stats.csum_unnecessary_inner++;
+ return;
}
+ rq->stats.csum_unnecessary++;
return;
}
csum_none:
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_stats.h b/drivers/net/ethernet/mellanox/mlx5/core/en_stats.h
index 6d199ffb1c0b..f8637213afc0 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_stats.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_stats.h
@@ -68,6 +68,7 @@ struct mlx5e_sw_stats {
u64 rx_xdp_drop;
u64 rx_xdp_tx;
u64 rx_xdp_tx_full;
+ u64 tx_csum_none;
u64 tx_csum_partial;
u64 tx_csum_partial_inner;
u64 tx_queue_stopped;
@@ -108,6 +109,7 @@ static const struct counter_desc sw_stats_desc[] = {
{ MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_xdp_drop) },
{ MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_xdp_tx) },
{ MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_xdp_tx_full) },
+ { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, tx_csum_none) },
{ MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, tx_csum_partial) },
{ MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, tx_csum_partial_inner) },
{ MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, tx_queue_stopped) },
@@ -339,6 +341,7 @@ struct mlx5e_rq_stats {
u64 packets;
u64 bytes;
u64 csum_complete;
+ u64 csum_unnecessary;
u64 csum_unnecessary_inner;
u64 csum_none;
u64 lro_packets;
@@ -363,6 +366,7 @@ static const struct counter_desc rq_stats_desc[] = {
{ MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, packets) },
{ MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, bytes) },
{ MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, csum_complete) },
+ { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, csum_unnecessary) },
{ MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, csum_unnecessary_inner) },
{ MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, csum_none) },
{ MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, xdp_drop) },
@@ -392,6 +396,7 @@ struct mlx5e_sq_stats {
u64 tso_bytes;
u64 tso_inner_packets;
u64 tso_inner_bytes;
+ u64 csum_partial;
u64 csum_partial_inner;
u64 nop;
/* less likely accessed in data path */
@@ -408,6 +413,7 @@ static const struct counter_desc sq_stats_desc[] = {
{ MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tso_bytes) },
{ MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tso_inner_packets) },
{ MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tso_inner_bytes) },
+ { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, csum_partial) },
{ MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, csum_partial_inner) },
{ MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, nop) },
{ MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, csum_none) },
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
index da503e6411da..9ba1f72060aa 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -78,9 +78,11 @@ struct mlx5e_tc_flow {
};
struct mlx5e_tc_flow_parse_attr {
+ struct ip_tunnel_info tun_info;
struct mlx5_flow_spec spec;
int num_mod_hdr_actions;
void *mod_hdr_actions;
+ int mirred_ifindex;
};
enum {
@@ -322,6 +324,12 @@ static void mlx5e_tc_del_nic_flow(struct mlx5e_priv *priv,
static void mlx5e_detach_encap(struct mlx5e_priv *priv,
struct mlx5e_tc_flow *flow);
+static int mlx5e_attach_encap(struct mlx5e_priv *priv,
+ struct ip_tunnel_info *tun_info,
+ struct net_device *mirred_dev,
+ struct net_device **encap_dev,
+ struct mlx5e_tc_flow *flow);
+
static struct mlx5_flow_handle *
mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
struct mlx5e_tc_flow_parse_attr *parse_attr,
@@ -329,9 +337,27 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
{
struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
struct mlx5_esw_flow_attr *attr = flow->esw_attr;
- struct mlx5_flow_handle *rule;
+ struct net_device *out_dev, *encap_dev = NULL;
+ struct mlx5_flow_handle *rule = NULL;
+ struct mlx5e_rep_priv *rpriv;
+ struct mlx5e_priv *out_priv;
int err;
+ if (attr->action & MLX5_FLOW_CONTEXT_ACTION_ENCAP) {
+ out_dev = __dev_get_by_index(dev_net(priv->netdev),
+ attr->parse_attr->mirred_ifindex);
+ err = mlx5e_attach_encap(priv, &parse_attr->tun_info,
+ out_dev, &encap_dev, flow);
+ if (err) {
+ rule = ERR_PTR(err);
+ if (err != -EAGAIN)
+ goto err_attach_encap;
+ }
+ out_priv = netdev_priv(encap_dev);
+ rpriv = out_priv->ppriv;
+ attr->out_rep = rpriv->rep;
+ }
+
err = mlx5_eswitch_add_vlan_action(esw, attr);
if (err) {
rule = ERR_PTR(err);
@@ -347,10 +373,14 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
}
}
- rule = mlx5_eswitch_add_offloaded_rule(esw, &parse_attr->spec, attr);
- if (IS_ERR(rule))
- goto err_add_rule;
-
+ /* we get here if (1) there's no error (rule being null) or when
+ * (2) there's an encap action and we're on -EAGAIN (no valid neigh)
+ */
+ if (rule != ERR_PTR(-EAGAIN)) {
+ rule = mlx5_eswitch_add_offloaded_rule(esw, &parse_attr->spec, attr);
+ if (IS_ERR(rule))
+ goto err_add_rule;
+ }
return rule;
err_add_rule:
@@ -361,6 +391,7 @@ err_mod_hdr:
err_add_vlan:
if (attr->action & MLX5_FLOW_CONTEXT_ACTION_ENCAP)
mlx5e_detach_encap(priv, flow);
+err_attach_encap:
return rule;
}
@@ -389,6 +420,8 @@ static void mlx5e_tc_del_fdb_flow(struct mlx5e_priv *priv,
void mlx5e_tc_encap_flows_add(struct mlx5e_priv *priv,
struct mlx5e_encap_entry *e)
{
+ struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
+ struct mlx5_esw_flow_attr *esw_attr;
struct mlx5e_tc_flow *flow;
int err;
@@ -404,10 +437,9 @@ void mlx5e_tc_encap_flows_add(struct mlx5e_priv *priv,
mlx5e_rep_queue_neigh_stats_work(priv);
list_for_each_entry(flow, &e->flows, encap) {
- flow->esw_attr->encap_id = e->encap_id;
- flow->rule = mlx5e_tc_add_fdb_flow(priv,
- flow->esw_attr->parse_attr,
- flow);
+ esw_attr = flow->esw_attr;
+ esw_attr->encap_id = e->encap_id;
+ flow->rule = mlx5_eswitch_add_offloaded_rule(esw, &esw_attr->parse_attr->spec, esw_attr);
if (IS_ERR(flow->rule)) {
err = PTR_ERR(flow->rule);
mlx5_core_warn(priv->mdev, "Failed to update cached encapsulation flow, %d\n",
@@ -421,15 +453,13 @@ void mlx5e_tc_encap_flows_add(struct mlx5e_priv *priv,
void mlx5e_tc_encap_flows_del(struct mlx5e_priv *priv,
struct mlx5e_encap_entry *e)
{
+ struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
struct mlx5e_tc_flow *flow;
- struct mlx5_fc *counter;
list_for_each_entry(flow, &e->flows, encap) {
if (flow->flags & MLX5E_TC_FLOW_OFFLOADED) {
flow->flags &= ~MLX5E_TC_FLOW_OFFLOADED;
- counter = mlx5_flow_rule_counter(flow->rule);
- mlx5_del_flow_rules(flow->rule);
- mlx5_fc_destroy(priv->mdev, counter);
+ mlx5_eswitch_del_offloaded_rule(esw, flow->rule, flow->esw_attr);
}
}
@@ -1317,6 +1347,69 @@ static bool csum_offload_supported(struct mlx5e_priv *priv, u32 action, u32 upda
return true;
}
+static bool modify_header_match_supported(struct mlx5_flow_spec *spec,
+ struct tcf_exts *exts)
+{
+ const struct tc_action *a;
+ bool modify_ip_header;
+ LIST_HEAD(actions);
+ u8 htype, ip_proto;
+ void *headers_v;
+ u16 ethertype;
+ int nkeys, i;
+
+ headers_v = MLX5_ADDR_OF(fte_match_param, spec->match_value, outer_headers);
+ ethertype = MLX5_GET(fte_match_set_lyr_2_4, headers_v, ethertype);
+
+ /* for non-IP we only re-write MACs, so we're okay */
+ if (ethertype != ETH_P_IP && ethertype != ETH_P_IPV6)
+ goto out_ok;
+
+ modify_ip_header = false;
+ tcf_exts_to_list(exts, &actions);
+ list_for_each_entry(a, &actions, list) {
+ if (!is_tcf_pedit(a))
+ continue;
+
+ nkeys = tcf_pedit_nkeys(a);
+ for (i = 0; i < nkeys; i++) {
+ htype = tcf_pedit_htype(a, i);
+ if (htype == TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 ||
+ htype == TCA_PEDIT_KEY_EX_HDR_TYPE_IP6) {
+ modify_ip_header = true;
+ break;
+ }
+ }
+ }
+
+ ip_proto = MLX5_GET(fte_match_set_lyr_2_4, headers_v, ip_protocol);
+ if (modify_ip_header && ip_proto != IPPROTO_TCP && ip_proto != IPPROTO_UDP) {
+ pr_info("can't offload re-write of ip proto %d\n", ip_proto);
+ return false;
+ }
+
+out_ok:
+ return true;
+}
+
+static bool actions_match_supported(struct mlx5e_priv *priv,
+ struct tcf_exts *exts,
+ struct mlx5e_tc_flow_parse_attr *parse_attr,
+ struct mlx5e_tc_flow *flow)
+{
+ u32 actions;
+
+ if (flow->flags & MLX5E_TC_FLOW_ESWITCH)
+ actions = flow->esw_attr->action;
+ else
+ actions = flow->nic_attr->action;
+
+ if (actions & MLX5_FLOW_CONTEXT_ACTION_MOD_HDR)
+ return modify_header_match_supported(&parse_attr->spec, exts);
+
+ return true;
+}
+
static int parse_tc_nic_actions(struct mlx5e_priv *priv, struct tcf_exts *exts,
struct mlx5e_tc_flow_parse_attr *parse_attr,
struct mlx5e_tc_flow *flow)
@@ -1378,6 +1471,9 @@ static int parse_tc_nic_actions(struct mlx5e_priv *priv, struct tcf_exts *exts,
return -EINVAL;
}
+ if (!actions_match_supported(priv, exts, parse_attr, flow))
+ return -EOPNOTSUPP;
+
return 0;
}
@@ -1564,7 +1660,7 @@ static int mlx5e_create_encap_header_ipv4(struct mlx5e_priv *priv,
break;
default:
err = -EOPNOTSUPP;
- goto out;
+ goto free_encap;
}
fl4.flowi4_tos = tun_key->tos;
fl4.daddr = tun_key->u.ipv4.dst;
@@ -1573,7 +1669,7 @@ static int mlx5e_create_encap_header_ipv4(struct mlx5e_priv *priv,
err = mlx5e_route_lookup_ipv4(priv, mirred_dev, &out_dev,
&fl4, &n, &ttl);
if (err)
- goto out;
+ goto free_encap;
/* used by mlx5e_detach_encap to lookup a neigh hash table
* entry in the neigh hash table when a user deletes a rule
@@ -1590,7 +1686,7 @@ static int mlx5e_create_encap_header_ipv4(struct mlx5e_priv *priv,
*/
err = mlx5e_rep_encap_entry_attach(netdev_priv(out_dev), e);
if (err)
- goto out;
+ goto free_encap;
read_lock_bh(&n->lock);
nud_state = n->nud_state;
@@ -1630,8 +1726,9 @@ static int mlx5e_create_encap_header_ipv4(struct mlx5e_priv *priv,
destroy_neigh_entry:
mlx5e_rep_encap_entry_detach(netdev_priv(e->out_dev), e);
-out:
+free_encap:
kfree(encap_header);
+out:
if (n)
neigh_release(n);
return err;
@@ -1668,7 +1765,7 @@ static int mlx5e_create_encap_header_ipv6(struct mlx5e_priv *priv,
break;
default:
err = -EOPNOTSUPP;
- goto out;
+ goto free_encap;
}
fl6.flowlabel = ip6_make_flowinfo(RT_TOS(tun_key->tos), tun_key->label);
@@ -1678,7 +1775,7 @@ static int mlx5e_create_encap_header_ipv6(struct mlx5e_priv *priv,
err = mlx5e_route_lookup_ipv6(priv, mirred_dev, &out_dev,
&fl6, &n, &ttl);
if (err)
- goto out;
+ goto free_encap;
/* used by mlx5e_detach_encap to lookup a neigh hash table
* entry in the neigh hash table when a user deletes a rule
@@ -1695,7 +1792,7 @@ static int mlx5e_create_encap_header_ipv6(struct mlx5e_priv *priv,
*/
err = mlx5e_rep_encap_entry_attach(netdev_priv(out_dev), e);
if (err)
- goto out;
+ goto free_encap;
read_lock_bh(&n->lock);
nud_state = n->nud_state;
@@ -1736,8 +1833,9 @@ static int mlx5e_create_encap_header_ipv6(struct mlx5e_priv *priv,
destroy_neigh_entry:
mlx5e_rep_encap_entry_detach(netdev_priv(e->out_dev), e);
-out:
+free_encap:
kfree(encap_header);
+out:
if (n)
neigh_release(n);
return err;
@@ -1791,6 +1889,7 @@ vxlan_encap_offload_err:
}
}
+ /* must verify if encap is valid or not */
if (found)
goto attach_flow;
@@ -1817,6 +1916,8 @@ attach_flow:
*encap_dev = e->out_dev;
if (e->flags & MLX5_ENCAP_ENTRY_VALID)
attr->encap_id = e->encap_id;
+ else
+ err = -EAGAIN;
return err;
@@ -1871,7 +1972,7 @@ static int parse_tc_fdb_actions(struct mlx5e_priv *priv, struct tcf_exts *exts,
if (is_tcf_mirred_egress_redirect(a)) {
int ifindex = tcf_mirred_ifindex(a);
- struct net_device *out_dev, *encap_dev = NULL;
+ struct net_device *out_dev;
struct mlx5e_priv *out_priv;
out_dev = __dev_get_by_index(dev_net(priv->netdev), ifindex);
@@ -1884,17 +1985,13 @@ static int parse_tc_fdb_actions(struct mlx5e_priv *priv, struct tcf_exts *exts,
rpriv = out_priv->ppriv;
attr->out_rep = rpriv->rep;
} else if (encap) {
- err = mlx5e_attach_encap(priv, info,
- out_dev, &encap_dev, flow);
- if (err && err != -EAGAIN)
- return err;
+ parse_attr->mirred_ifindex = ifindex;
+ parse_attr->tun_info = *info;
+ attr->parse_attr = parse_attr;
attr->action |= MLX5_FLOW_CONTEXT_ACTION_ENCAP |
MLX5_FLOW_CONTEXT_ACTION_FWD_DEST |
MLX5_FLOW_CONTEXT_ACTION_COUNT;
- out_priv = netdev_priv(encap_dev);
- rpriv = out_priv->ppriv;
- attr->out_rep = rpriv->rep;
- attr->parse_attr = parse_attr;
+ /* attr->out_rep is resolved when we handle encap */
} else {
pr_err("devices %s %s not on same switch HW, can't offload forwarding\n",
priv->netdev->name, out_dev->name);
@@ -1934,6 +2031,10 @@ static int parse_tc_fdb_actions(struct mlx5e_priv *priv, struct tcf_exts *exts,
return -EINVAL;
}
+
+ if (!actions_match_supported(priv, exts, parse_attr, flow))
+ return -EOPNOTSUPP;
+
return err;
}
@@ -1972,7 +2073,7 @@ int mlx5e_configure_flower(struct mlx5e_priv *priv,
if (flow->flags & MLX5E_TC_FLOW_ESWITCH) {
err = parse_tc_fdb_actions(priv, f->exts, parse_attr, flow);
if (err < 0)
- goto err_handle_encap_flow;
+ goto err_free;
flow->rule = mlx5e_tc_add_fdb_flow(priv, parse_attr, flow);
} else {
err = parse_tc_nic_actions(priv, f->exts, parse_attr, flow);
@@ -1983,10 +2084,13 @@ int mlx5e_configure_flower(struct mlx5e_priv *priv,
if (IS_ERR(flow->rule)) {
err = PTR_ERR(flow->rule);
- goto err_free;
+ if (err != -EAGAIN)
+ goto err_free;
}
- flow->flags |= MLX5E_TC_FLOW_OFFLOADED;
+ if (err != -EAGAIN)
+ flow->flags |= MLX5E_TC_FLOW_OFFLOADED;
+
err = rhashtable_insert_fast(&tc->ht, &flow->node,
tc->ht_params);
if (err)
@@ -2000,16 +2104,6 @@ int mlx5e_configure_flower(struct mlx5e_priv *priv,
err_del_rule:
mlx5e_tc_del_flow(priv, flow);
-err_handle_encap_flow:
- if (err == -EAGAIN) {
- err = rhashtable_insert_fast(&tc->ht, &flow->node,
- tc->ht_params);
- if (err)
- mlx5e_tc_del_flow(priv, flow);
- else
- return 0;
- }
-
err_free:
kvfree(parse_attr);
kfree(flow);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
index fee43e40fa16..1d6925d4369a 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
@@ -193,6 +193,7 @@ mlx5e_txwqe_build_eseg_csum(struct mlx5e_txqsq *sq, struct sk_buff *skb, struct
sq->stats.csum_partial_inner++;
} else {
eseg->cs_flags |= MLX5_ETH_WQE_L4_CSUM;
+ sq->stats.csum_partial++;
}
} else
sq->stats.csum_none++;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.c
index e37453d838db..c0fd2212e890 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.c
@@ -71,11 +71,11 @@ int mlx5_fpga_access_reg(struct mlx5_core_dev *dev, u8 size, u64 addr,
return 0;
}
-int mlx5_fpga_caps(struct mlx5_core_dev *dev, u32 *caps)
+int mlx5_fpga_caps(struct mlx5_core_dev *dev)
{
u32 in[MLX5_ST_SZ_DW(fpga_cap)] = {0};
- return mlx5_core_access_reg(dev, in, sizeof(in), caps,
+ return mlx5_core_access_reg(dev, in, sizeof(in), dev->caps.fpga,
MLX5_ST_SZ_BYTES(fpga_cap),
MLX5_REG_FPGA_CAP, 0, 0);
}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.h b/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.h
index 94bdfd47c3f0..d05233c9b4f6 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.h
@@ -65,7 +65,7 @@ struct mlx5_fpga_qp_counters {
u64 rx_total_drop;
};
-int mlx5_fpga_caps(struct mlx5_core_dev *dev, u32 *caps);
+int mlx5_fpga_caps(struct mlx5_core_dev *dev);
int mlx5_fpga_query(struct mlx5_core_dev *dev, struct mlx5_fpga_query *query);
int mlx5_fpga_ctrl_op(struct mlx5_core_dev *dev, u8 op);
int mlx5_fpga_access_reg(struct mlx5_core_dev *dev, u8 size, u64 addr,
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fpga/core.c b/drivers/net/ethernet/mellanox/mlx5/core/fpga/core.c
index 9034e9960a76..dc8970346521 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fpga/core.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fpga/core.c
@@ -139,8 +139,7 @@ int mlx5_fpga_device_start(struct mlx5_core_dev *mdev)
if (err)
goto out;
- err = mlx5_fpga_caps(fdev->mdev,
- fdev->mdev->caps.hca_cur[MLX5_CAP_FPGA]);
+ err = mlx5_fpga_caps(fdev->mdev);
if (err)
goto out;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
index e0d0efd903bc..36ecc2b2e187 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
@@ -293,6 +293,9 @@ static int mlx5_cmd_set_fte(struct mlx5_core_dev *dev,
}
if (fte->action & MLX5_FLOW_CONTEXT_ACTION_COUNT) {
+ int max_list_size = BIT(MLX5_CAP_FLOWTABLE_TYPE(dev,
+ log_max_flow_counter,
+ ft->type));
int list_size = 0;
list_for_each_entry(dst, &fte->node.children, node.list) {
@@ -305,12 +308,17 @@ static int mlx5_cmd_set_fte(struct mlx5_core_dev *dev,
in_dests += MLX5_ST_SZ_BYTES(dest_format_struct);
list_size++;
}
+ if (list_size > max_list_size) {
+ err = -EINVAL;
+ goto err_out;
+ }
MLX5_SET(flow_context, in_flow_context, flow_counter_list_size,
list_size);
}
err = mlx5_cmd_exec(dev, in, inlen, out, sizeof(out));
+err_out:
kvfree(in);
return err;
}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.h b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.h
index 5509a752f98e..48dd78975062 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.h
@@ -52,6 +52,7 @@ enum fs_flow_table_type {
FS_FT_FDB = 0X4,
FS_FT_SNIFFER_RX = 0X5,
FS_FT_SNIFFER_TX = 0X6,
+ FS_FT_MAX_TYPE = FS_FT_SNIFFER_TX,
};
enum fs_flow_table_op_mod {
@@ -260,4 +261,14 @@ void mlx5_cleanup_fs(struct mlx5_core_dev *dev);
#define fs_for_each_dst(pos, fte) \
fs_list_for_each_entry(pos, &(fte)->node.children)
+#define MLX5_CAP_FLOWTABLE_TYPE(mdev, cap, type) ( \
+ (type == FS_FT_NIC_RX) ? MLX5_CAP_FLOWTABLE_NIC_RX(mdev, cap) : \
+ (type == FS_FT_ESW_EGRESS_ACL) ? MLX5_CAP_ESW_EGRESS_ACL(mdev, cap) : \
+ (type == FS_FT_ESW_INGRESS_ACL) ? MLX5_CAP_ESW_INGRESS_ACL(mdev, cap) : \
+ (type == FS_FT_FDB) ? MLX5_CAP_ESW_FLOWTABLE_FDB(mdev, cap) : \
+ (type == FS_FT_SNIFFER_RX) ? MLX5_CAP_FLOWTABLE_SNIFFER_RX(mdev, cap) : \
+ (type == FS_FT_SNIFFER_TX) ? MLX5_CAP_FLOWTABLE_SNIFFER_TX(mdev, cap) : \
+ (BUILD_BUG_ON_ZERO(FS_FT_SNIFFER_TX != FS_FT_MAX_TYPE))\
+ )
+
#endif
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/health.c b/drivers/net/ethernet/mellanox/mlx5/core/health.c
index 8aea0a065e56..db86e1506c8b 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/health.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/health.c
@@ -356,10 +356,11 @@ void mlx5_drain_health_wq(struct mlx5_core_dev *dev)
void mlx5_drain_health_recovery(struct mlx5_core_dev *dev)
{
struct mlx5_core_health *health = &dev->priv.health;
+ unsigned long flags;
- spin_lock(&health->wq_lock);
+ spin_lock_irqsave(&health->wq_lock, flags);
set_bit(MLX5_DROP_NEW_RECOVERY_WORK, &health->flags);
- spin_unlock(&health->wq_lock);
+ spin_unlock_irqrestore(&health->wq_lock, flags);
cancel_delayed_work_sync(&dev->priv.health.recover_work);
}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
index 85298051a3e4..145e392ab849 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
@@ -572,12 +572,13 @@ void mlx5_rdma_netdev_free(struct net_device *netdev)
{
struct mlx5e_priv *priv = mlx5i_epriv(netdev);
const struct mlx5e_profile *profile = priv->profile;
+ struct mlx5_core_dev *mdev = priv->mdev;
mlx5e_detach_netdev(priv);
profile->cleanup(priv);
destroy_workqueue(priv->wq);
free_netdev(netdev);
- mlx5e_destroy_mdev_resources(priv->mdev);
+ mlx5e_destroy_mdev_resources(mdev);
}
EXPORT_SYMBOL(mlx5_rdma_netdev_free);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/port.c b/drivers/net/ethernet/mellanox/mlx5/core/port.c
index 1975d4388d4f..e07061f565d6 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/port.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/port.c
@@ -677,6 +677,27 @@ int mlx5_set_port_tc_group(struct mlx5_core_dev *mdev, u8 *tc_group)
}
EXPORT_SYMBOL_GPL(mlx5_set_port_tc_group);
+int mlx5_query_port_tc_group(struct mlx5_core_dev *mdev,
+ u8 tc, u8 *tc_group)
+{
+ u32 out[MLX5_ST_SZ_DW(qetc_reg)];
+ void *ets_tcn_conf;
+ int err;
+
+ err = mlx5_query_port_qetcr_reg(mdev, out, sizeof(out));
+ if (err)
+ return err;
+
+ ets_tcn_conf = MLX5_ADDR_OF(qetc_reg, out,
+ tc_configuration[tc]);
+
+ *tc_group = MLX5_GET(ets_tcn_config_reg, ets_tcn_conf,
+ group);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(mlx5_query_port_tc_group);
+
int mlx5_set_port_tc_bw_alloc(struct mlx5_core_dev *mdev, u8 *tc_bw)
{
u32 in[MLX5_ST_SZ_DW(qetc_reg)] = {0};
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/sriov.c b/drivers/net/ethernet/mellanox/mlx5/core/sriov.c
index 6c48e9959b65..2a8b529ce6dd 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/sriov.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/sriov.c
@@ -109,7 +109,7 @@ static int mlx5_device_enable_sriov(struct mlx5_core_dev *dev, int num_vfs)
mlx5_core_warn(dev,
"failed to restore VF %d settings, err %d\n",
vf, err);
- continue;
+ continue;
}
}
mlx5_core_dbg(dev, "successfully enabled VF* %d\n", vf);
diff --git a/drivers/net/ethernet/mellanox/mlxsw/Makefile b/drivers/net/ethernet/mellanox/mlxsw/Makefile
index 891ff418bb5e..9a5a1cc877b6 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/Makefile
+++ b/drivers/net/ethernet/mellanox/mlxsw/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MLXSW_CORE) += mlxsw_core.o
mlxsw_core-objs := core.o core_acl_flex_keys.o \
core_acl_flex_actions.o
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
index 9d5e7cf288be..f3315bc874ad 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/core.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
@@ -96,6 +96,7 @@ struct mlxsw_core {
const struct mlxsw_bus *bus;
void *bus_priv;
const struct mlxsw_bus_info *bus_info;
+ struct workqueue_struct *emad_wq;
struct list_head rx_listener_list;
struct list_head event_listener_list;
struct {
@@ -465,7 +466,7 @@ static void mlxsw_emad_trans_timeout_schedule(struct mlxsw_reg_trans *trans)
{
unsigned long timeout = msecs_to_jiffies(MLXSW_EMAD_TIMEOUT_MS);
- mlxsw_core_schedule_dw(&trans->timeout_dw, timeout);
+ queue_delayed_work(trans->core->emad_wq, &trans->timeout_dw, timeout);
}
static int mlxsw_emad_transmit(struct mlxsw_core *mlxsw_core,
@@ -587,12 +588,18 @@ static const struct mlxsw_listener mlxsw_emad_rx_listener =
static int mlxsw_emad_init(struct mlxsw_core *mlxsw_core)
{
+ struct workqueue_struct *emad_wq;
u64 tid;
int err;
if (!(mlxsw_core->bus->features & MLXSW_BUS_F_TXRX))
return 0;
+ emad_wq = alloc_workqueue("mlxsw_core_emad", WQ_MEM_RECLAIM, 0);
+ if (!emad_wq)
+ return -ENOMEM;
+ mlxsw_core->emad_wq = emad_wq;
+
/* Set the upper 32 bits of the transaction ID field to a random
* number. This allows us to discard EMADs addressed to other
* devices.
@@ -619,6 +626,7 @@ static int mlxsw_emad_init(struct mlxsw_core *mlxsw_core)
err_emad_trap_set:
mlxsw_core_trap_unregister(mlxsw_core, &mlxsw_emad_rx_listener,
mlxsw_core);
+ destroy_workqueue(mlxsw_core->emad_wq);
return err;
}
@@ -631,6 +639,7 @@ static void mlxsw_emad_fini(struct mlxsw_core *mlxsw_core)
mlxsw_core->emad.use_emad = false;
mlxsw_core_trap_unregister(mlxsw_core, &mlxsw_emad_rx_listener,
mlxsw_core);
+ destroy_workqueue(mlxsw_core->emad_wq);
}
static struct sk_buff *mlxsw_emad_alloc(const struct mlxsw_core *mlxsw_core,
diff --git a/drivers/net/ethernet/mellanox/mlxsw/i2c.c b/drivers/net/ethernet/mellanox/mlxsw/i2c.c
index 12c3a4449120..c0dcfa05b077 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/i2c.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/i2c.c
@@ -294,7 +294,7 @@ mlxsw_i2c_write(struct device *dev, size_t in_mbox_size, u8 *in_mbox, int num,
write_tran.len = MLXSW_I2C_ADDR_WIDTH + chunk_size;
mlxsw_i2c_set_slave_addr(tran_buf, off);
memcpy(&tran_buf[MLXSW_I2C_ADDR_BUF_SIZE], in_mbox +
- chunk_size * i, chunk_size);
+ MLXSW_I2C_BLK_MAX * i, chunk_size);
j = 0;
end = jiffies + timeout;
diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h
index cc27c5de5a1d..5acfbe5b8b9d 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/reg.h
+++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h
@@ -5827,6 +5827,29 @@ MLXSW_ITEM32(reg, mtmp, mtr, 0x08, 30, 1);
*/
MLXSW_ITEM32(reg, mtmp, max_temperature, 0x08, 0, 16);
+/* reg_mtmp_tee
+ * Temperature Event Enable.
+ * 0 - Do not generate event
+ * 1 - Generate event
+ * 2 - Generate single event
+ * Access: RW
+ */
+MLXSW_ITEM32(reg, mtmp, tee, 0x0C, 30, 2);
+
+#define MLXSW_REG_MTMP_THRESH_HI 0x348 /* 105 Celsius */
+
+/* reg_mtmp_temperature_threshold_hi
+ * High threshold for Temperature Warning Event. In 0.125 Celsius.
+ * Access: RW
+ */
+MLXSW_ITEM32(reg, mtmp, temperature_threshold_hi, 0x0C, 0, 16);
+
+/* reg_mtmp_temperature_threshold_lo
+ * Low threshold for Temperature Warning Event. In 0.125 Celsius.
+ * Access: RW
+ */
+MLXSW_ITEM32(reg, mtmp, temperature_threshold_lo, 0x10, 0, 16);
+
#define MLXSW_REG_MTMP_SENSOR_NAME_SIZE 8
/* reg_mtmp_sensor_name
@@ -5843,6 +5866,8 @@ static inline void mlxsw_reg_mtmp_pack(char *payload, u8 sensor_index,
mlxsw_reg_mtmp_sensor_index_set(payload, sensor_index);
mlxsw_reg_mtmp_mte_set(payload, max_temp_enable);
mlxsw_reg_mtmp_mtr_set(payload, max_temp_reset);
+ mlxsw_reg_mtmp_temperature_threshold_hi_set(payload,
+ MLXSW_REG_MTMP_THRESH_HI);
}
static inline void mlxsw_reg_mtmp_unpack(char *payload, unsigned int *p_temp,
@@ -6401,6 +6426,36 @@ static inline void mlxsw_reg_mgpc_pack(char *payload, u32 counter_index,
mlxsw_reg_mgpc_opcode_set(payload, opcode);
}
+/* TIGCR - Tunneling IPinIP General Configuration Register
+ * -------------------------------------------------------
+ * The TIGCR register is used for setting up the IPinIP Tunnel configuration.
+ */
+#define MLXSW_REG_TIGCR_ID 0xA801
+#define MLXSW_REG_TIGCR_LEN 0x10
+
+MLXSW_REG_DEFINE(tigcr, MLXSW_REG_TIGCR_ID, MLXSW_REG_TIGCR_LEN);
+
+/* reg_tigcr_ipip_ttlc
+ * For IPinIP Tunnel encapsulation: whether to copy the ttl from the packet
+ * header.
+ * Access: RW
+ */
+MLXSW_ITEM32(reg, tigcr, ttlc, 0x04, 8, 1);
+
+/* reg_tigcr_ipip_ttl_uc
+ * The TTL for IPinIP Tunnel encapsulation of unicast packets if
+ * reg_tigcr_ipip_ttlc is unset.
+ * Access: RW
+ */
+MLXSW_ITEM32(reg, tigcr, ttl_uc, 0x04, 0, 8);
+
+static inline void mlxsw_reg_tigcr_pack(char *payload, bool ttlc, u8 ttl_uc)
+{
+ MLXSW_REG_ZERO(tigcr, payload);
+ mlxsw_reg_tigcr_ttlc_set(payload, ttlc);
+ mlxsw_reg_tigcr_ttl_uc_set(payload, ttl_uc);
+}
+
/* SBPR - Shared Buffer Pools Register
* -----------------------------------
* The SBPR configures and retrieves the shared buffer pools and configuration.
@@ -6881,6 +6936,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[] = {
MLXSW_REG(mcc),
MLXSW_REG(mcda),
MLXSW_REG(mgpc),
+ MLXSW_REG(tigcr),
MLXSW_REG(sbpr),
MLXSW_REG(sbcm),
MLXSW_REG(sbpm),
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index ed7cd6c48019..696b99e65a5a 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -575,15 +575,14 @@ static void mlxsw_sp_span_entry_destroy(struct mlxsw_sp *mlxsw_sp,
}
static struct mlxsw_sp_span_entry *
-mlxsw_sp_span_entry_find(struct mlxsw_sp_port *port)
+mlxsw_sp_span_entry_find(struct mlxsw_sp *mlxsw_sp, u8 local_port)
{
- struct mlxsw_sp *mlxsw_sp = port->mlxsw_sp;
int i;
for (i = 0; i < mlxsw_sp->span.entries_count; i++) {
struct mlxsw_sp_span_entry *curr = &mlxsw_sp->span.entries[i];
- if (curr->used && curr->local_port == port->local_port)
+ if (curr->used && curr->local_port == local_port)
return curr;
}
return NULL;
@@ -594,7 +593,8 @@ static struct mlxsw_sp_span_entry
{
struct mlxsw_sp_span_entry *span_entry;
- span_entry = mlxsw_sp_span_entry_find(port);
+ span_entry = mlxsw_sp_span_entry_find(port->mlxsw_sp,
+ port->local_port);
if (span_entry) {
/* Already exists, just take a reference */
span_entry->ref_count++;
@@ -783,12 +783,13 @@ err_port_bind:
}
static void mlxsw_sp_span_mirror_remove(struct mlxsw_sp_port *from,
- struct mlxsw_sp_port *to,
+ u8 destination_port,
enum mlxsw_sp_span_type type)
{
struct mlxsw_sp_span_entry *span_entry;
- span_entry = mlxsw_sp_span_entry_find(to);
+ span_entry = mlxsw_sp_span_entry_find(from->mlxsw_sp,
+ destination_port);
if (!span_entry) {
netdev_err(from->dev, "no span entry found\n");
return;
@@ -1563,14 +1564,12 @@ static void
mlxsw_sp_port_del_cls_matchall_mirror(struct mlxsw_sp_port *mlxsw_sp_port,
struct mlxsw_sp_port_mall_mirror_tc_entry *mirror)
{
- struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
enum mlxsw_sp_span_type span_type;
- struct mlxsw_sp_port *to_port;
- to_port = mlxsw_sp->ports[mirror->to_local_port];
span_type = mirror->ingress ?
MLXSW_SP_SPAN_INGRESS : MLXSW_SP_SPAN_EGRESS;
- mlxsw_sp_span_mirror_remove(mlxsw_sp_port, to_port, span_type);
+ mlxsw_sp_span_mirror_remove(mlxsw_sp_port, mirror->to_local_port,
+ span_type);
}
static int
@@ -2545,7 +2544,9 @@ out:
return err;
}
-#define MLXSW_SP_QSFP_I2C_ADDR 0x50
+#define MLXSW_SP_I2C_ADDR_LOW 0x50
+#define MLXSW_SP_I2C_ADDR_HIGH 0x51
+#define MLXSW_SP_EEPROM_PAGE_LENGTH 256
static int mlxsw_sp_query_module_eeprom(struct mlxsw_sp_port *mlxsw_sp_port,
u16 offset, u16 size, void *data,
@@ -2554,12 +2555,25 @@ static int mlxsw_sp_query_module_eeprom(struct mlxsw_sp_port *mlxsw_sp_port,
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
char eeprom_tmp[MLXSW_SP_REG_MCIA_EEPROM_SIZE];
char mcia_pl[MLXSW_REG_MCIA_LEN];
+ u16 i2c_addr;
int status;
int err;
size = min_t(u16, size, MLXSW_SP_REG_MCIA_EEPROM_SIZE);
+
+ if (offset < MLXSW_SP_EEPROM_PAGE_LENGTH &&
+ offset + size > MLXSW_SP_EEPROM_PAGE_LENGTH)
+ /* Cross pages read, read until offset 256 in low page */
+ size = MLXSW_SP_EEPROM_PAGE_LENGTH - offset;
+
+ i2c_addr = MLXSW_SP_I2C_ADDR_LOW;
+ if (offset >= MLXSW_SP_EEPROM_PAGE_LENGTH) {
+ i2c_addr = MLXSW_SP_I2C_ADDR_HIGH;
+ offset -= MLXSW_SP_EEPROM_PAGE_LENGTH;
+ }
+
mlxsw_reg_mcia_pack(mcia_pl, mlxsw_sp_port->mapping.module,
- 0, 0, offset, size, MLXSW_SP_QSFP_I2C_ADDR);
+ 0, 0, offset, size, i2c_addr);
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(mcia), mcia_pl);
if (err)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
index f0fb898533fb..5189022a1c8c 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
@@ -2723,6 +2723,7 @@ static void mlxsw_sp_nexthop_type_fini(struct mlxsw_sp *mlxsw_sp,
mlxsw_sp_nexthop_rif_fini(nh);
break;
case MLXSW_SP_NEXTHOP_TYPE_IPIP:
+ mlxsw_sp_nexthop_rif_fini(nh);
mlxsw_sp_nexthop_ipip_fini(mlxsw_sp, nh);
break;
}
@@ -2742,7 +2743,11 @@ static int mlxsw_sp_nexthop4_type_init(struct mlxsw_sp *mlxsw_sp,
router->ipip_ops_arr[ipipt]->can_offload(mlxsw_sp, dev,
MLXSW_SP_L3_PROTO_IPV4)) {
nh->type = MLXSW_SP_NEXTHOP_TYPE_IPIP;
- return mlxsw_sp_nexthop_ipip_init(mlxsw_sp, ipipt, nh, dev);
+ err = mlxsw_sp_nexthop_ipip_init(mlxsw_sp, ipipt, nh, dev);
+ if (err)
+ return err;
+ mlxsw_sp_nexthop_rif_init(nh, &nh->ipip_entry->ol_lb->common);
+ return 0;
}
nh->type = MLXSW_SP_NEXTHOP_TYPE_ETH;
@@ -3500,20 +3505,6 @@ static int mlxsw_sp_fib_lpm_tree_link(struct mlxsw_sp *mlxsw_sp,
static void mlxsw_sp_fib_lpm_tree_unlink(struct mlxsw_sp *mlxsw_sp,
struct mlxsw_sp_fib *fib)
{
- struct mlxsw_sp_prefix_usage req_prefix_usage = {{ 0 } };
- struct mlxsw_sp_lpm_tree *lpm_tree;
-
- /* Aggregate prefix lengths across all virtual routers to make
- * sure we only have used prefix lengths in the LPM tree.
- */
- mlxsw_sp_vrs_prefixes(mlxsw_sp, fib->proto, &req_prefix_usage);
- lpm_tree = mlxsw_sp_lpm_tree_get(mlxsw_sp, &req_prefix_usage,
- fib->proto);
- if (IS_ERR(lpm_tree))
- goto err_tree_get;
- mlxsw_sp_vrs_lpm_tree_replace(mlxsw_sp, fib, lpm_tree);
-
-err_tree_get:
if (!mlxsw_sp_prefix_usage_none(&fib->prefix_usage))
return;
mlxsw_sp_vr_lpm_tree_unbind(mlxsw_sp, fib);
@@ -4009,7 +4000,11 @@ static int mlxsw_sp_nexthop6_type_init(struct mlxsw_sp *mlxsw_sp,
router->ipip_ops_arr[ipipt]->can_offload(mlxsw_sp, dev,
MLXSW_SP_L3_PROTO_IPV6)) {
nh->type = MLXSW_SP_NEXTHOP_TYPE_IPIP;
- return mlxsw_sp_nexthop_ipip_init(mlxsw_sp, ipipt, nh, dev);
+ err = mlxsw_sp_nexthop_ipip_init(mlxsw_sp, ipipt, nh, dev);
+ if (err)
+ return err;
+ mlxsw_sp_nexthop_rif_init(nh, &nh->ipip_entry->ol_lb->common);
+ return 0;
}
nh->type = MLXSW_SP_NEXTHOP_TYPE_ETH;
@@ -4868,7 +4863,8 @@ static int mlxsw_sp_router_fib_event(struct notifier_block *nb,
struct fib_notifier_info *info = ptr;
struct mlxsw_sp_router *router;
- if (!net_eq(info->net, &init_net))
+ if (!net_eq(info->net, &init_net) ||
+ (info->family != AF_INET && info->family != AF_INET6))
return NOTIFY_DONE;
fib_work = kzalloc(sizeof(*fib_work), GFP_ATOMIC);
@@ -5067,6 +5063,7 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
vr = mlxsw_sp_vr_get(mlxsw_sp, tb_id ? : RT_TABLE_MAIN);
if (IS_ERR(vr))
return ERR_CAST(vr);
+ vr->rif_count++;
err = mlxsw_sp_rif_index_alloc(mlxsw_sp, &rif_index);
if (err)
@@ -5098,7 +5095,6 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
mlxsw_sp_rif_counters_alloc(rif);
mlxsw_sp->router->rifs[rif_index] = rif;
- vr->rif_count++;
return rif;
@@ -5109,6 +5105,7 @@ err_fid_get:
kfree(rif);
err_rif_alloc:
err_rif_index_alloc:
+ vr->rif_count--;
mlxsw_sp_vr_put(vr);
return ERR_PTR(err);
}
@@ -5123,7 +5120,6 @@ void mlxsw_sp_rif_destroy(struct mlxsw_sp_rif *rif)
mlxsw_sp_router_rif_gone_sync(mlxsw_sp, rif);
vr = &mlxsw_sp->router->vrs[rif->vr_id];
- vr->rif_count--;
mlxsw_sp->router->rifs[rif->rif_index] = NULL;
mlxsw_sp_rif_counters_free(rif);
ops->deconfigure(rif);
@@ -5131,6 +5127,7 @@ void mlxsw_sp_rif_destroy(struct mlxsw_sp_rif *rif)
/* Loopback RIFs are not associated with a FID. */
mlxsw_sp_fid_put(fid);
kfree(rif);
+ vr->rif_count--;
mlxsw_sp_vr_put(vr);
}
@@ -5899,11 +5896,20 @@ static void mlxsw_sp_rifs_fini(struct mlxsw_sp *mlxsw_sp)
kfree(mlxsw_sp->router->rifs);
}
+static int
+mlxsw_sp_ipip_config_tigcr(struct mlxsw_sp *mlxsw_sp)
+{
+ char tigcr_pl[MLXSW_REG_TIGCR_LEN];
+
+ mlxsw_reg_tigcr_pack(tigcr_pl, true, 0);
+ return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tigcr), tigcr_pl);
+}
+
static int mlxsw_sp_ipips_init(struct mlxsw_sp *mlxsw_sp)
{
mlxsw_sp->router->ipip_ops_arr = mlxsw_sp_ipip_ops_arr;
INIT_LIST_HEAD(&mlxsw_sp->router->ipip_list);
- return 0;
+ return mlxsw_sp_ipip_config_tigcr(mlxsw_sp);
}
static void mlxsw_sp_ipips_fini(struct mlxsw_sp *mlxsw_sp)
diff --git a/drivers/net/ethernet/micrel/Makefile b/drivers/net/ethernet/micrel/Makefile
index c83e4bc50c73..848fc1c5a5dc 100644
--- a/drivers/net/ethernet/micrel/Makefile
+++ b/drivers/net/ethernet/micrel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Micrel network device drivers.
#
diff --git a/drivers/net/ethernet/micrel/ks8695net.h b/drivers/net/ethernet/micrel/ks8695net.h
index 80eff6ea5163..b18fad4ad5fd 100644
--- a/drivers/net/ethernet/micrel/ks8695net.h
+++ b/drivers/net/ethernet/micrel/ks8695net.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Micrel KS8695 (Centaur) Ethernet.
*
diff --git a/drivers/net/ethernet/microchip/enc28j60_hw.h b/drivers/net/ethernet/microchip/enc28j60_hw.h
index 25b41de49f0e..da4ab172527d 100644
--- a/drivers/net/ethernet/microchip/enc28j60_hw.h
+++ b/drivers/net/ethernet/microchip/enc28j60_hw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* enc28j60_hw.h: EDTP FrameThrower style enc28j60 registers
*
diff --git a/drivers/net/ethernet/microchip/encx24j600_hw.h b/drivers/net/ethernet/microchip/encx24j600_hw.h
index 4be73d5553f8..f604a260ede7 100644
--- a/drivers/net/ethernet/microchip/encx24j600_hw.h
+++ b/drivers/net/ethernet/microchip/encx24j600_hw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/**
* encx24j600_hw.h: Register definitions
*
diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp.h b/drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp.h
index b7fc26c4f738..cf73810608a2 100644
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp.h
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MYRI10GE_MCP_H__
#define __MYRI10GE_MCP_H__
diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp_gen_header.h b/drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp_gen_header.h
index 75ec5e7cf50d..95a0095a4a75 100644
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp_gen_header.h
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp_gen_header.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MYRI10GE_MCP_GEN_HEADER_H__
#define __MYRI10GE_MCP_GEN_HEADER_H__
diff --git a/drivers/net/ethernet/natsemi/Makefile b/drivers/net/ethernet/natsemi/Makefile
index 764c532a96d1..cc664977596e 100644
--- a/drivers/net/ethernet/natsemi/Makefile
+++ b/drivers/net/ethernet/natsemi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the National Semi-conductor Sonic devices.
#
diff --git a/drivers/net/ethernet/natsemi/jazzsonic.c b/drivers/net/ethernet/natsemi/jazzsonic.c
index a6caeb567c0d..d5b28884e21e 100644
--- a/drivers/net/ethernet/natsemi/jazzsonic.c
+++ b/drivers/net/ethernet/natsemi/jazzsonic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* jazzsonic.c
*
diff --git a/drivers/net/ethernet/natsemi/macsonic.c b/drivers/net/ethernet/natsemi/macsonic.c
index 3ca6ae7caf55..a42433fb6949 100644
--- a/drivers/net/ethernet/natsemi/macsonic.c
+++ b/drivers/net/ethernet/natsemi/macsonic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* macsonic.c
*
diff --git a/drivers/net/ethernet/natsemi/sonic.h b/drivers/net/ethernet/natsemi/sonic.h
index 7b0a8db57af9..421b1a283fed 100644
--- a/drivers/net/ethernet/natsemi/sonic.h
+++ b/drivers/net/ethernet/natsemi/sonic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Header file for sonic.c
*
diff --git a/drivers/net/ethernet/natsemi/xtsonic.c b/drivers/net/ethernet/natsemi/xtsonic.c
index 9ee0f69a83c0..1817deea98a4 100644
--- a/drivers/net/ethernet/natsemi/xtsonic.c
+++ b/drivers/net/ethernet/natsemi/xtsonic.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* xtsonic.c
*
diff --git a/drivers/net/ethernet/netronome/nfp/Makefile b/drivers/net/ethernet/netronome/nfp/Makefile
index 96e579a15cbe..3cafa3d15082 100644
--- a/drivers/net/ethernet/netronome/nfp/Makefile
+++ b/drivers/net/ethernet/netronome/nfp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_NFP) += nfp.o
nfp-objs := \
diff --git a/drivers/net/ethernet/netronome/nfp/flower/action.c b/drivers/net/ethernet/netronome/nfp/flower/action.c
index db9750695dc7..8ea9320014ee 100644
--- a/drivers/net/ethernet/netronome/nfp/flower/action.c
+++ b/drivers/net/ethernet/netronome/nfp/flower/action.c
@@ -110,6 +110,8 @@ nfp_fl_output(struct nfp_fl_output *output, const struct tc_action *action,
*/
if (!switchdev_port_same_parent_id(in_dev, out_dev))
return -EOPNOTSUPP;
+ if (!nfp_netdev_is_nfp_repr(out_dev))
+ return -EOPNOTSUPP;
output->port = cpu_to_be32(nfp_repr_get_port_id(out_dev));
if (!output->port)
diff --git a/drivers/net/ethernet/netronome/nfp/flower/offload.c b/drivers/net/ethernet/netronome/nfp/flower/offload.c
index d396183108f7..a18b4d2b1d3e 100644
--- a/drivers/net/ethernet/netronome/nfp/flower/offload.c
+++ b/drivers/net/ethernet/netronome/nfp/flower/offload.c
@@ -44,6 +44,16 @@
#include "../nfp_net.h"
#include "../nfp_port.h"
+#define NFP_FLOWER_WHITELIST_DISSECTOR \
+ (BIT(FLOW_DISSECTOR_KEY_CONTROL) | \
+ BIT(FLOW_DISSECTOR_KEY_BASIC) | \
+ BIT(FLOW_DISSECTOR_KEY_IPV4_ADDRS) | \
+ BIT(FLOW_DISSECTOR_KEY_IPV6_ADDRS) | \
+ BIT(FLOW_DISSECTOR_KEY_PORTS) | \
+ BIT(FLOW_DISSECTOR_KEY_ETH_ADDRS) | \
+ BIT(FLOW_DISSECTOR_KEY_VLAN) | \
+ BIT(FLOW_DISSECTOR_KEY_IP))
+
static int
nfp_flower_xmit_flow(struct net_device *netdev,
struct nfp_fl_payload *nfp_flow, u8 mtype)
@@ -112,6 +122,9 @@ nfp_flower_calculate_key_layers(struct nfp_fl_key_ls *ret_key_ls,
u8 key_layer;
int key_size;
+ if (flow->dissector->used_keys & ~NFP_FLOWER_WHITELIST_DISSECTOR)
+ return -EOPNOTSUPP;
+
if (dissector_uses_key(flow->dissector,
FLOW_DISSECTOR_KEY_ENC_CONTROL)) {
struct flow_dissector_key_control *mask_enc_ctl =
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_main.c b/drivers/net/ethernet/netronome/nfp/nfp_main.c
index f055b1774d65..f8fa63b66739 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_main.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_main.c
@@ -74,6 +74,45 @@ static const struct pci_device_id nfp_pci_device_ids[] = {
};
MODULE_DEVICE_TABLE(pci, nfp_pci_device_ids);
+static bool nfp_board_ready(struct nfp_pf *pf)
+{
+ const char *cp;
+ long state;
+ int err;
+
+ cp = nfp_hwinfo_lookup(pf->hwinfo, "board.state");
+ if (!cp)
+ return false;
+
+ err = kstrtol(cp, 0, &state);
+ if (err < 0)
+ return false;
+
+ return state == 15;
+}
+
+static int nfp_pf_board_state_wait(struct nfp_pf *pf)
+{
+ const unsigned long wait_until = jiffies + 10 * HZ;
+
+ while (!nfp_board_ready(pf)) {
+ if (time_is_before_eq_jiffies(wait_until)) {
+ nfp_err(pf->cpp, "NFP board initialization timeout\n");
+ return -EINVAL;
+ }
+
+ nfp_info(pf->cpp, "waiting for board initialization\n");
+ if (msleep_interruptible(500))
+ return -ERESTARTSYS;
+
+ /* Refresh cached information */
+ kfree(pf->hwinfo);
+ pf->hwinfo = nfp_hwinfo_read(pf->cpp);
+ }
+
+ return 0;
+}
+
static int nfp_pcie_sriov_read_nfd_limit(struct nfp_pf *pf)
{
int err;
@@ -312,6 +351,10 @@ static int nfp_nsp_init(struct pci_dev *pdev, struct nfp_pf *pf)
struct nfp_nsp *nsp;
int err;
+ err = nfp_resource_wait(pf->cpp, NFP_RESOURCE_NSP, 30);
+ if (err)
+ return err;
+
nsp = nfp_nsp_open(pf->cpp);
if (IS_ERR(nsp)) {
err = PTR_ERR(nsp);
@@ -425,6 +468,10 @@ static int nfp_pci_probe(struct pci_dev *pdev,
nfp_hwinfo_lookup(pf->hwinfo, "assembly.revision"),
nfp_hwinfo_lookup(pf->hwinfo, "cpld.version"));
+ err = nfp_pf_board_state_wait(pf);
+ if (err)
+ goto err_hwinfo_free;
+
err = devlink_register(devlink, &pdev->dev);
if (err)
goto err_hwinfo_free;
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index 1c0187f0af51..e118b5f23996 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -1180,10 +1180,14 @@ static void *nfp_net_rx_alloc_one(struct nfp_net_dp *dp, dma_addr_t *dma_addr)
{
void *frag;
- if (!dp->xdp_prog)
+ if (!dp->xdp_prog) {
frag = netdev_alloc_frag(dp->fl_bufsz);
- else
- frag = page_address(alloc_page(GFP_KERNEL | __GFP_COLD));
+ } else {
+ struct page *page;
+
+ page = alloc_page(GFP_KERNEL | __GFP_COLD);
+ frag = page ? page_address(page) : NULL;
+ }
if (!frag) {
nn_dp_warn(dp, "Failed to alloc receive page frag\n");
return NULL;
@@ -1203,10 +1207,14 @@ static void *nfp_net_napi_alloc_one(struct nfp_net_dp *dp, dma_addr_t *dma_addr)
{
void *frag;
- if (!dp->xdp_prog)
+ if (!dp->xdp_prog) {
frag = napi_alloc_frag(dp->fl_bufsz);
- else
- frag = page_address(alloc_page(GFP_ATOMIC | __GFP_COLD));
+ } else {
+ struct page *page;
+
+ page = alloc_page(GFP_ATOMIC | __GFP_COLD);
+ frag = page ? page_address(page) : NULL;
+ }
if (!frag) {
nn_dp_warn(dp, "Failed to alloc receive page frag\n");
return NULL;
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c
index 07969f06df10..dc016dfec64d 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c
@@ -464,7 +464,7 @@ static u64 *nfp_vnic_get_sw_stats(struct net_device *netdev, u64 *data)
do {
start = u64_stats_fetch_begin(&nn->r_vecs[i].rx_sync);
- *data++ = nn->r_vecs[i].rx_pkts;
+ data[0] = nn->r_vecs[i].rx_pkts;
tmp[0] = nn->r_vecs[i].hw_csum_rx_ok;
tmp[1] = nn->r_vecs[i].hw_csum_rx_inner_ok;
tmp[2] = nn->r_vecs[i].hw_csum_rx_error;
@@ -472,14 +472,16 @@ static u64 *nfp_vnic_get_sw_stats(struct net_device *netdev, u64 *data)
do {
start = u64_stats_fetch_begin(&nn->r_vecs[i].tx_sync);
- *data++ = nn->r_vecs[i].tx_pkts;
- *data++ = nn->r_vecs[i].tx_busy;
+ data[1] = nn->r_vecs[i].tx_pkts;
+ data[2] = nn->r_vecs[i].tx_busy;
tmp[3] = nn->r_vecs[i].hw_csum_tx;
tmp[4] = nn->r_vecs[i].hw_csum_tx_inner;
tmp[5] = nn->r_vecs[i].tx_gather;
tmp[6] = nn->r_vecs[i].tx_lso;
} while (u64_stats_fetch_retry(&nn->r_vecs[i].tx_sync, start));
+ data += 3;
+
for (j = 0; j < NN_ET_RVEC_GATHER_STATS; j++)
gathered_stats[j] += tmp[j];
}
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_main.c b/drivers/net/ethernet/netronome/nfp/nfp_net_main.c
index 5abb9ba31e7d..ff373acd28f3 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_main.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_main.c
@@ -64,23 +64,6 @@
#define NFP_PF_CSR_SLICE_SIZE (32 * 1024)
-static int nfp_is_ready(struct nfp_pf *pf)
-{
- const char *cp;
- long state;
- int err;
-
- cp = nfp_hwinfo_lookup(pf->hwinfo, "board.state");
- if (!cp)
- return 0;
-
- err = kstrtol(cp, 0, &state);
- if (err < 0)
- return 0;
-
- return state == 15;
-}
-
/**
* nfp_net_get_mac_addr() - Get the MAC address.
* @pf: NFP PF handle
@@ -725,12 +708,6 @@ int nfp_net_pci_probe(struct nfp_pf *pf)
INIT_WORK(&pf->port_refresh_work, nfp_net_refresh_vnics);
- /* Verify that the board has completed initialization */
- if (!nfp_is_ready(pf)) {
- nfp_err(pf->cpp, "NFP is not ready for NIC operation.\n");
- return -EINVAL;
- }
-
if (!pf->rtbl) {
nfp_err(pf->cpp, "No %s, giving up.\n",
pf->fw_loaded ? "symbol table" : "firmware found");
diff --git a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp.h b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp.h
index 1a8d04a1e113..3ce51f03126f 100644
--- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp.h
+++ b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp.h
@@ -97,6 +97,8 @@ nfp_resource_acquire(struct nfp_cpp *cpp, const char *name);
void nfp_resource_release(struct nfp_resource *res);
+int nfp_resource_wait(struct nfp_cpp *cpp, const char *name, unsigned int secs);
+
u32 nfp_resource_cpp_id(struct nfp_resource *res);
const char *nfp_resource_name(struct nfp_resource *res);
diff --git a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_resource.c b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_resource.c
index 072612263dab..b1dd13ff282b 100644
--- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_resource.c
+++ b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_resource.c
@@ -250,6 +250,51 @@ void nfp_resource_release(struct nfp_resource *res)
}
/**
+ * nfp_resource_wait() - Wait for resource to appear
+ * @cpp: NFP CPP handle
+ * @name: Name of the resource
+ * @secs: Number of seconds to wait
+ *
+ * Wait for resource to appear in the resource table, grab and release
+ * its lock. The wait is jiffies-based, don't expect fine granularity.
+ *
+ * Return: 0 on success, errno otherwise.
+ */
+int nfp_resource_wait(struct nfp_cpp *cpp, const char *name, unsigned int secs)
+{
+ unsigned long warn_at = jiffies + NFP_MUTEX_WAIT_FIRST_WARN * HZ;
+ unsigned long err_at = jiffies + secs * HZ;
+ struct nfp_resource *res;
+
+ while (true) {
+ res = nfp_resource_acquire(cpp, name);
+ if (!IS_ERR(res)) {
+ nfp_resource_release(res);
+ return 0;
+ }
+
+ if (PTR_ERR(res) != -ENOENT) {
+ nfp_err(cpp, "error waiting for resource %s: %ld\n",
+ name, PTR_ERR(res));
+ return PTR_ERR(res);
+ }
+ if (time_is_before_eq_jiffies(err_at)) {
+ nfp_err(cpp, "timeout waiting for resource %s\n", name);
+ return -ETIMEDOUT;
+ }
+ if (time_is_before_eq_jiffies(warn_at)) {
+ warn_at = jiffies + NFP_MUTEX_WAIT_NEXT_WARN * HZ;
+ nfp_info(cpp, "waiting for NFP resource %s\n", name);
+ }
+ if (msleep_interruptible(10)) {
+ nfp_err(cpp, "wait for resource %s interrupted\n",
+ name);
+ return -ERESTARTSYS;
+ }
+ }
+}
+
+/**
* nfp_resource_cpp_id() - Return the cpp_id of a resource handle
* @res: NFP Resource handle
*
diff --git a/drivers/net/ethernet/nuvoton/w90p910_ether.c b/drivers/net/ethernet/nuvoton/w90p910_ether.c
index 89ab786da25f..4a67c55aa9f1 100644
--- a/drivers/net/ethernet/nuvoton/w90p910_ether.c
+++ b/drivers/net/ethernet/nuvoton/w90p910_ether.c
@@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/init.h>
+#include <linux/interrupt.h>
#include <linux/mii.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
diff --git a/drivers/net/ethernet/qlogic/Makefile b/drivers/net/ethernet/qlogic/Makefile
index cee90e05beb8..6cd2e333a5fc 100644
--- a/drivers/net/ethernet/qlogic/Makefile
+++ b/drivers/net/ethernet/qlogic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the QLogic network device drivers.
#
diff --git a/drivers/net/ethernet/qlogic/qed/Makefile b/drivers/net/ethernet/qlogic/qed/Makefile
index 82dd47068e18..82a0b90185df 100644
--- a/drivers/net/ethernet/qlogic/qed/Makefile
+++ b/drivers/net/ethernet/qlogic/qed/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_QED) := qed.o
qed-y := qed_cxt.o qed_dev.o qed_hw.o qed_init_fw_funcs.o qed_init_ops.o \
diff --git a/drivers/net/ethernet/qlogic/qed/qed_dcbx.c b/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
index eaca4578435d..8f6ccc0c39e5 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
@@ -1244,7 +1244,6 @@ int qed_dcbx_get_config_params(struct qed_hwfn *p_hwfn,
if (!dcbx_info)
return -ENOMEM;
- memset(dcbx_info, 0, sizeof(*dcbx_info));
rc = qed_dcbx_query_params(p_hwfn, dcbx_info, QED_DCBX_OPERATIONAL_MIB);
if (rc) {
kfree(dcbx_info);
diff --git a/drivers/net/ethernet/qlogic/qed/qed_selftest.h b/drivers/net/ethernet/qlogic/qed/qed_selftest.h
index 739ddb730967..ad00d082fec8 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_selftest.h
+++ b/drivers/net/ethernet/qlogic/qed/qed_selftest.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _QED_SELFTEST_API_H
#define _QED_SELFTEST_API_H
#include <linux/types.h>
diff --git a/drivers/net/ethernet/qlogic/qlcnic/Makefile b/drivers/net/ethernet/qlogic/qlcnic/Makefile
index 3c2c2c7c1559..dbaeab344667 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/Makefile
+++ b/drivers/net/ethernet/qlogic/qlcnic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Qlogic 1G/10G Ethernet Driver for CNA devices
#
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_dbg.c b/drivers/net/ethernet/qlogic/qlge/qlge_dbg.c
index fe2599b83d09..31389ab8bdf7 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_dbg.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_dbg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/slab.h>
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
index 31f40148fa5c..5edbd532127d 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/module.h>
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_mpi.c b/drivers/net/ethernet/qlogic/qlge/qlge_mpi.c
index 7ad146080c36..384c8bc874f3 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_mpi.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_mpi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "qlge.h"
int ql_unpause_mpi_risc(struct ql_adapter *qdev)
diff --git a/drivers/net/ethernet/qualcomm/Makefile b/drivers/net/ethernet/qualcomm/Makefile
index 1847350f48a7..9250976dd884 100644
--- a/drivers/net/ethernet/qualcomm/Makefile
+++ b/drivers/net/ethernet/qualcomm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Qualcomm network device drivers.
#
diff --git a/drivers/net/ethernet/qualcomm/emac/emac-ethtool.c b/drivers/net/ethernet/qualcomm/emac/emac-ethtool.c
index bbe24639aa5a..c8c6231b87f3 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac-ethtool.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac-ethtool.c
@@ -88,6 +88,8 @@ static void emac_set_msglevel(struct net_device *netdev, u32 data)
static int emac_get_sset_count(struct net_device *netdev, int sset)
{
switch (sset) {
+ case ETH_SS_PRIV_FLAGS:
+ return 1;
case ETH_SS_STATS:
return EMAC_STATS_LEN;
default:
@@ -100,6 +102,10 @@ static void emac_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
unsigned int i;
switch (stringset) {
+ case ETH_SS_PRIV_FLAGS:
+ strcpy(data, "single-pause-mode");
+ break;
+
case ETH_SS_STATS:
for (i = 0; i < EMAC_STATS_LEN; i++) {
strlcpy(data, emac_ethtool_stat_strings[i],
@@ -230,6 +236,27 @@ static int emac_get_regs_len(struct net_device *netdev)
return EMAC_MAX_REG_SIZE * sizeof(u32);
}
+#define EMAC_PRIV_ENABLE_SINGLE_PAUSE BIT(0)
+
+static int emac_set_priv_flags(struct net_device *netdev, u32 flags)
+{
+ struct emac_adapter *adpt = netdev_priv(netdev);
+
+ adpt->single_pause_mode = !!(flags & EMAC_PRIV_ENABLE_SINGLE_PAUSE);
+
+ if (netif_running(netdev))
+ return emac_reinit_locked(adpt);
+
+ return 0;
+}
+
+static u32 emac_get_priv_flags(struct net_device *netdev)
+{
+ struct emac_adapter *adpt = netdev_priv(netdev);
+
+ return adpt->single_pause_mode ? EMAC_PRIV_ENABLE_SINGLE_PAUSE : 0;
+}
+
static const struct ethtool_ops emac_ethtool_ops = {
.get_link_ksettings = phy_ethtool_get_link_ksettings,
.set_link_ksettings = phy_ethtool_set_link_ksettings,
@@ -253,6 +280,9 @@ static const struct ethtool_ops emac_ethtool_ops = {
.get_regs_len = emac_get_regs_len,
.get_regs = emac_get_regs,
+
+ .set_priv_flags = emac_set_priv_flags,
+ .get_priv_flags = emac_get_priv_flags,
};
void emac_set_ethtool_ops(struct net_device *netdev)
diff --git a/drivers/net/ethernet/qualcomm/emac/emac-mac.c b/drivers/net/ethernet/qualcomm/emac/emac-mac.c
index bcd4708b3745..3ed9033e56db 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac-mac.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac-mac.c
@@ -551,6 +551,28 @@ static void emac_mac_start(struct emac_adapter *adpt)
mac &= ~(HUGEN | VLAN_STRIP | TPAUSE | SIMR | HUGE | MULTI_ALL |
DEBUG_MODE | SINGLE_PAUSE_MODE);
+ /* Enable single-pause-frame mode if requested.
+ *
+ * If enabled, the EMAC will send a single pause frame when the RX
+ * queue is full. This normally leads to packet loss because
+ * the pause frame disables the remote MAC only for 33ms (the quanta),
+ * and then the remote MAC continues sending packets even though
+ * the RX queue is still full.
+ *
+ * If disabled, the EMAC sends a pause frame every 31ms until the RX
+ * queue is no longer full. Normally, this is the preferred
+ * method of operation. However, when the system is hung (e.g.
+ * cores are halted), the EMAC interrupt handler is never called
+ * and so the RX queue fills up quickly and stays full. The resuling
+ * non-stop "flood" of pause frames sometimes has the effect of
+ * disabling nearby switches. In some cases, other nearby switches
+ * are also affected, shutting down the entire network.
+ *
+ * The user can enable or disable single-pause-frame mode
+ * via ethtool.
+ */
+ mac |= adpt->single_pause_mode ? SINGLE_PAUSE_MODE : 0;
+
writel_relaxed(csr1, adpt->csr + EMAC_EMAC_WRAPPER_CSR1);
writel_relaxed(mac, adpt->base + EMAC_MAC_CTRL);
@@ -876,7 +898,8 @@ static void emac_mac_rx_descs_refill(struct emac_adapter *adpt,
curr_rxbuf->dma_addr =
dma_map_single(adpt->netdev->dev.parent, skb->data,
- curr_rxbuf->length, DMA_FROM_DEVICE);
+ adpt->rxbuf_size, DMA_FROM_DEVICE);
+
ret = dma_mapping_error(adpt->netdev->dev.parent,
curr_rxbuf->dma_addr);
if (ret) {
diff --git a/drivers/net/ethernet/qualcomm/emac/emac.c b/drivers/net/ethernet/qualcomm/emac/emac.c
index 60850bfa3d32..759543512117 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac.c
@@ -443,6 +443,9 @@ static void emac_init_adapter(struct emac_adapter *adpt)
/* default to automatic flow control */
adpt->automatic = true;
+
+ /* Disable single-pause-frame mode by default */
+ adpt->single_pause_mode = false;
}
/* Get the clock */
diff --git a/drivers/net/ethernet/qualcomm/emac/emac.h b/drivers/net/ethernet/qualcomm/emac/emac.h
index 8ee4ec6aef2e..d7c9f44209d4 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac.h
+++ b/drivers/net/ethernet/qualcomm/emac/emac.h
@@ -363,6 +363,9 @@ struct emac_adapter {
bool tx_flow_control;
bool rx_flow_control;
+ /* True == use single-pause-frame mode. */
+ bool single_pause_mode;
+
/* Ring parameter */
u8 tpd_burst;
u8 rfd_burst;
diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
index 98f22551eb45..1e33aea59f50 100644
--- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
+++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
@@ -51,10 +51,7 @@ struct rmnet_walk_data {
static int rmnet_is_real_dev_registered(const struct net_device *real_dev)
{
- rx_handler_func_t *rx_handler;
-
- rx_handler = rcu_dereference(real_dev->rx_handler);
- return (rx_handler == rmnet_rx_handler);
+ return rcu_access_pointer(real_dev->rx_handler) == rmnet_rx_handler;
}
/* Needs rtnl lock */
diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c
index 557c9bf1a469..86b8c758f94e 100644
--- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c
+++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c
@@ -84,6 +84,10 @@ struct sk_buff *rmnet_map_deaggregate(struct sk_buff *skb)
if (((int)skb->len - (int)packet_len) < 0)
return NULL;
+ /* Some hardware can send us empty frames. Catch them */
+ if (ntohs(maph->pkt_len) == 0)
+ return NULL;
+
skbn = alloc_skb(packet_len + RMNET_MAP_DEAGGR_SPACING, GFP_ATOMIC);
if (!skbn)
return NULL;
@@ -94,11 +98,5 @@ struct sk_buff *rmnet_map_deaggregate(struct sk_buff *skb)
memcpy(skbn->data, skb->data, packet_len);
skb_pull(skb, packet_len);
- /* Some hardware can send us empty frames. Catch them */
- if (ntohs(maph->pkt_len) == 0) {
- kfree_skb(skb);
- return NULL;
- }
-
return skbn;
}
diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
index ca22f2898664..d24b47b8e0b2 100644
--- a/drivers/net/ethernet/realtek/8139too.c
+++ b/drivers/net/ethernet/realtek/8139too.c
@@ -2135,11 +2135,12 @@ static int rtl8139_poll(struct napi_struct *napi, int budget)
if (likely(RTL_R16(IntrStatus) & RxAckBits))
work_done += rtl8139_rx(dev, tp, budget);
- if (work_done < budget && napi_complete_done(napi, work_done)) {
+ if (work_done < budget) {
unsigned long flags;
spin_lock_irqsave(&tp->lock, flags);
- RTL_W16_F(IntrMask, rtl8139_intr_mask);
+ if (napi_complete_done(napi, work_done))
+ RTL_W16_F(IntrMask, rtl8139_intr_mask);
spin_unlock_irqrestore(&tp->lock, flags);
}
spin_unlock(&tp->rx_lock);
diff --git a/drivers/net/ethernet/realtek/atp.h b/drivers/net/ethernet/realtek/atp.h
index 32497f0e537c..63f0d2d0e87b 100644
--- a/drivers/net/ethernet/realtek/atp.h
+++ b/drivers/net/ethernet/realtek/atp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Linux header file for the ATP pocket ethernet adapter. */
/* v1.09 8/9/2000 becker@scyld.com. */
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index e03fcf914690..a3c949ea7d1a 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -8491,8 +8491,6 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
rtl8168_driver_start(tp);
}
- device_set_wakeup_enable(&pdev->dev, tp->features & RTL_FEATURE_WOL);
-
if (pci_dev_run_wake(pdev))
pm_runtime_put_noidle(&pdev->dev);
diff --git a/drivers/net/ethernet/rocker/rocker_tlv.h b/drivers/net/ethernet/rocker/rocker_tlv.h
index a63ef82e7c72..dfae3c9d57c6 100644
--- a/drivers/net/ethernet/rocker/rocker_tlv.h
+++ b/drivers/net/ethernet/rocker/rocker_tlv.h
@@ -139,40 +139,52 @@ rocker_tlv_start(struct rocker_desc_info *desc_info)
int rocker_tlv_put(struct rocker_desc_info *desc_info,
int attrtype, int attrlen, const void *data);
-static inline int rocker_tlv_put_u8(struct rocker_desc_info *desc_info,
- int attrtype, u8 value)
+static inline int
+rocker_tlv_put_u8(struct rocker_desc_info *desc_info, int attrtype, u8 value)
{
- return rocker_tlv_put(desc_info, attrtype, sizeof(u8), &value);
+ u8 tmp = value; /* work around GCC PR81715 */
+
+ return rocker_tlv_put(desc_info, attrtype, sizeof(u8), &tmp);
}
-static inline int rocker_tlv_put_u16(struct rocker_desc_info *desc_info,
- int attrtype, u16 value)
+static inline int
+rocker_tlv_put_u16(struct rocker_desc_info *desc_info, int attrtype, u16 value)
{
- return rocker_tlv_put(desc_info, attrtype, sizeof(u16), &value);
+ u16 tmp = value;
+
+ return rocker_tlv_put(desc_info, attrtype, sizeof(u16), &tmp);
}
-static inline int rocker_tlv_put_be16(struct rocker_desc_info *desc_info,
- int attrtype, __be16 value)
+static inline int
+rocker_tlv_put_be16(struct rocker_desc_info *desc_info, int attrtype, __be16 value)
{
- return rocker_tlv_put(desc_info, attrtype, sizeof(__be16), &value);
+ __be16 tmp = value;
+
+ return rocker_tlv_put(desc_info, attrtype, sizeof(__be16), &tmp);
}
-static inline int rocker_tlv_put_u32(struct rocker_desc_info *desc_info,
- int attrtype, u32 value)
+static inline int
+rocker_tlv_put_u32(struct rocker_desc_info *desc_info, int attrtype, u32 value)
{
- return rocker_tlv_put(desc_info, attrtype, sizeof(u32), &value);
+ u32 tmp = value;
+
+ return rocker_tlv_put(desc_info, attrtype, sizeof(u32), &tmp);
}
-static inline int rocker_tlv_put_be32(struct rocker_desc_info *desc_info,
- int attrtype, __be32 value)
+static inline int
+rocker_tlv_put_be32(struct rocker_desc_info *desc_info, int attrtype, __be32 value)
{
- return rocker_tlv_put(desc_info, attrtype, sizeof(__be32), &value);
+ __be32 tmp = value;
+
+ return rocker_tlv_put(desc_info, attrtype, sizeof(__be32), &tmp);
}
-static inline int rocker_tlv_put_u64(struct rocker_desc_info *desc_info,
- int attrtype, u64 value)
+static inline int
+rocker_tlv_put_u64(struct rocker_desc_info *desc_info, int attrtype, u64 value)
{
- return rocker_tlv_put(desc_info, attrtype, sizeof(u64), &value);
+ u64 tmp = value;
+
+ return rocker_tlv_put(desc_info, attrtype, sizeof(u64), &tmp);
}
static inline struct rocker_tlv *
diff --git a/drivers/net/ethernet/seeq/sgiseeq.h b/drivers/net/ethernet/seeq/sgiseeq.h
index 2211e2987a8d..2f65c55608df 100644
--- a/drivers/net/ethernet/seeq/sgiseeq.h
+++ b/drivers/net/ethernet/seeq/sgiseeq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* sgiseeq.h: Defines for the Seeq8003 ethernet controller.
*
diff --git a/drivers/net/ethernet/sfc/Makefile b/drivers/net/ethernet/sfc/Makefile
index 520cfcc17785..3bac58d0f88b 100644
--- a/drivers/net/ethernet/sfc/Makefile
+++ b/drivers/net/ethernet/sfc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
sfc-y += efx.o nic.o farch.o siena.o ef10.o tx.o rx.o \
selftest.o ethtool.o ptp.o tx_tso.o \
mcdi.o mcdi_port.o mcdi_mon.o
diff --git a/drivers/net/ethernet/sfc/falcon/Makefile b/drivers/net/ethernet/sfc/falcon/Makefile
index aa1b45979ca4..39448e5b7f1e 100644
--- a/drivers/net/ethernet/sfc/falcon/Makefile
+++ b/drivers/net/ethernet/sfc/falcon/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
sfc-falcon-y += efx.o nic.o farch.o falcon.o tx.o rx.o selftest.o \
ethtool.o qt202x_phy.o mdio_10g.o tenxpress.o \
txc43128_phy.o falcon_boards.o
diff --git a/drivers/net/ethernet/sis/sis900.h b/drivers/net/ethernet/sis/sis900.h
index f0da3dc52c01..66e4bf38770f 100644
--- a/drivers/net/ethernet/sis/sis900.h
+++ b/drivers/net/ethernet/sis/sis900.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* sis900.h Definitions for SiS ethernet controllers including 7014/7016 and 900
* Copyright 1999 Silicon Integrated System Corporation
* References:
diff --git a/drivers/net/ethernet/smsc/Makefile b/drivers/net/ethernet/smsc/Makefile
index f3438dec9d90..4105912b1629 100644
--- a/drivers/net/ethernet/smsc/Makefile
+++ b/drivers/net/ethernet/smsc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the SMSC network device drivers.
#
diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
index 0b6a39b003a4..012fb66eed8d 100644
--- a/drivers/net/ethernet/smsc/smsc911x.c
+++ b/drivers/net/ethernet/smsc/smsc911x.c
@@ -2595,6 +2595,11 @@ static int smsc911x_suspend(struct device *dev)
struct net_device *ndev = dev_get_drvdata(dev);
struct smsc911x_data *pdata = netdev_priv(ndev);
+ if (netif_running(ndev)) {
+ netif_stop_queue(ndev);
+ netif_device_detach(ndev);
+ }
+
/* enable wake on LAN, energy detection and the external PME
* signal. */
smsc911x_reg_write(pdata, PMT_CTRL,
@@ -2628,7 +2633,15 @@ static int smsc911x_resume(struct device *dev)
while (!(smsc911x_reg_read(pdata, PMT_CTRL) & PMT_CTRL_READY_) && --to)
udelay(1000);
- return (to == 0) ? -EIO : 0;
+ if (to == 0)
+ return -EIO;
+
+ if (netif_running(ndev)) {
+ netif_device_attach(ndev);
+ netif_start_queue(ndev);
+ }
+
+ return 0;
}
static const struct dev_pm_ops smsc911x_pm_ops = {
diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile
index 238307fadcdb..ff3f83b86d10 100644
--- a/drivers/net/ethernet/stmicro/stmmac/Makefile
+++ b/drivers/net/ethernet/stmicro/stmmac/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_STMMAC_ETH) += stmmac.o
stmmac-objs:= stmmac_main.o stmmac_ethtool.o stmmac_mdio.o ring_mode.o \
chain_mode.o dwmac_lib.o dwmac1000_core.o dwmac1000_dma.o \
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c
index dd6a2f9791cc..3256e5cbad27 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c
@@ -74,7 +74,7 @@ static int dwc_eth_dwmac_config_dt(struct platform_device *pdev,
plat_dat->axi->axi_wr_osr_lmt--;
}
- if (of_property_read_u32(np, "read,read-requests",
+ if (of_property_read_u32(np, "snps,read-requests",
&plat_dat->axi->axi_rd_osr_lmt)) {
/**
* Since the register has a reset value of 1, if property
@@ -511,6 +511,7 @@ static struct platform_driver dwc_eth_dwmac_driver = {
.remove = dwc_eth_dwmac_remove,
.driver = {
.name = "dwc-eth-dwmac",
+ .pm = &stmmac_pltfr_pm_ops,
.of_match_table = dwc_eth_dwmac_match,
},
};
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
index 99823f54696a..13133b30b575 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
@@ -83,6 +83,117 @@ struct rk_priv_data {
(((tx) ? soc##_GMAC_TXCLK_DLY_ENABLE : soc##_GMAC_TXCLK_DLY_DISABLE) | \
((rx) ? soc##_GMAC_RXCLK_DLY_ENABLE : soc##_GMAC_RXCLK_DLY_DISABLE))
+#define RK3128_GRF_MAC_CON0 0x0168
+#define RK3128_GRF_MAC_CON1 0x016c
+
+/* RK3128_GRF_MAC_CON0 */
+#define RK3128_GMAC_TXCLK_DLY_ENABLE GRF_BIT(14)
+#define RK3128_GMAC_TXCLK_DLY_DISABLE GRF_CLR_BIT(14)
+#define RK3128_GMAC_RXCLK_DLY_ENABLE GRF_BIT(15)
+#define RK3128_GMAC_RXCLK_DLY_DISABLE GRF_CLR_BIT(15)
+#define RK3128_GMAC_CLK_RX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 7)
+#define RK3128_GMAC_CLK_TX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 0)
+
+/* RK3128_GRF_MAC_CON1 */
+#define RK3128_GMAC_PHY_INTF_SEL_RGMII \
+ (GRF_BIT(6) | GRF_CLR_BIT(7) | GRF_CLR_BIT(8))
+#define RK3128_GMAC_PHY_INTF_SEL_RMII \
+ (GRF_CLR_BIT(6) | GRF_CLR_BIT(7) | GRF_BIT(8))
+#define RK3128_GMAC_FLOW_CTRL GRF_BIT(9)
+#define RK3128_GMAC_FLOW_CTRL_CLR GRF_CLR_BIT(9)
+#define RK3128_GMAC_SPEED_10M GRF_CLR_BIT(10)
+#define RK3128_GMAC_SPEED_100M GRF_BIT(10)
+#define RK3128_GMAC_RMII_CLK_25M GRF_BIT(11)
+#define RK3128_GMAC_RMII_CLK_2_5M GRF_CLR_BIT(11)
+#define RK3128_GMAC_CLK_125M (GRF_CLR_BIT(12) | GRF_CLR_BIT(13))
+#define RK3128_GMAC_CLK_25M (GRF_BIT(12) | GRF_BIT(13))
+#define RK3128_GMAC_CLK_2_5M (GRF_CLR_BIT(12) | GRF_BIT(13))
+#define RK3128_GMAC_RMII_MODE GRF_BIT(14)
+#define RK3128_GMAC_RMII_MODE_CLR GRF_CLR_BIT(14)
+
+static void rk3128_set_to_rgmii(struct rk_priv_data *bsp_priv,
+ int tx_delay, int rx_delay)
+{
+ struct device *dev = &bsp_priv->pdev->dev;
+
+ if (IS_ERR(bsp_priv->grf)) {
+ dev_err(dev, "Missing rockchip,grf property\n");
+ return;
+ }
+
+ regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1,
+ RK3128_GMAC_PHY_INTF_SEL_RGMII |
+ RK3128_GMAC_RMII_MODE_CLR);
+ regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON0,
+ DELAY_ENABLE(RK3128, tx_delay, rx_delay) |
+ RK3128_GMAC_CLK_RX_DL_CFG(rx_delay) |
+ RK3128_GMAC_CLK_TX_DL_CFG(tx_delay));
+}
+
+static void rk3128_set_to_rmii(struct rk_priv_data *bsp_priv)
+{
+ struct device *dev = &bsp_priv->pdev->dev;
+
+ if (IS_ERR(bsp_priv->grf)) {
+ dev_err(dev, "Missing rockchip,grf property\n");
+ return;
+ }
+
+ regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1,
+ RK3128_GMAC_PHY_INTF_SEL_RMII | RK3128_GMAC_RMII_MODE);
+}
+
+static void rk3128_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed)
+{
+ struct device *dev = &bsp_priv->pdev->dev;
+
+ if (IS_ERR(bsp_priv->grf)) {
+ dev_err(dev, "Missing rockchip,grf property\n");
+ return;
+ }
+
+ if (speed == 10)
+ regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1,
+ RK3128_GMAC_CLK_2_5M);
+ else if (speed == 100)
+ regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1,
+ RK3128_GMAC_CLK_25M);
+ else if (speed == 1000)
+ regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1,
+ RK3128_GMAC_CLK_125M);
+ else
+ dev_err(dev, "unknown speed value for RGMII! speed=%d", speed);
+}
+
+static void rk3128_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed)
+{
+ struct device *dev = &bsp_priv->pdev->dev;
+
+ if (IS_ERR(bsp_priv->grf)) {
+ dev_err(dev, "Missing rockchip,grf property\n");
+ return;
+ }
+
+ if (speed == 10) {
+ regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1,
+ RK3128_GMAC_RMII_CLK_2_5M |
+ RK3128_GMAC_SPEED_10M);
+ } else if (speed == 100) {
+ regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1,
+ RK3128_GMAC_RMII_CLK_25M |
+ RK3128_GMAC_SPEED_100M);
+ } else {
+ dev_err(dev, "unknown speed value for RMII! speed=%d", speed);
+ }
+}
+
+static const struct rk_gmac_ops rk3128_ops = {
+ .set_to_rgmii = rk3128_set_to_rgmii,
+ .set_to_rmii = rk3128_set_to_rmii,
+ .set_rgmii_speed = rk3128_set_rgmii_speed,
+ .set_rmii_speed = rk3128_set_rmii_speed,
+};
+
#define RK3228_GRF_MAC_CON0 0x0900
#define RK3228_GRF_MAC_CON1 0x0904
@@ -1313,6 +1424,7 @@ static int rk_gmac_resume(struct device *dev)
static SIMPLE_DEV_PM_OPS(rk_gmac_pm_ops, rk_gmac_suspend, rk_gmac_resume);
static const struct of_device_id rk_gmac_dwmac_match[] = {
+ { .compatible = "rockchip,rk3128-gmac", .data = &rk3128_ops },
{ .compatible = "rockchip,rk3228-gmac", .data = &rk3228_ops },
{ .compatible = "rockchip,rk3288-gmac", .data = &rk3288_ops },
{ .compatible = "rockchip,rk3328-gmac", .data = &rk3328_ops },
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
index c4407e8e39a3..2f7d7ec59962 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
@@ -296,6 +296,7 @@ static void dwmac4_pmt(struct mac_device_info *hw, unsigned long mode)
{
void __iomem *ioaddr = hw->pcsr;
unsigned int pmt = 0;
+ u32 config;
if (mode & WAKE_MAGIC) {
pr_debug("GMAC: WOL Magic frame\n");
@@ -306,6 +307,12 @@ static void dwmac4_pmt(struct mac_device_info *hw, unsigned long mode)
pmt |= power_down | global_unicast | wake_up_frame_en;
}
+ if (pmt) {
+ /* The receiver must be enabled for WOL before powering down */
+ config = readl(ioaddr + GMAC_CONFIG);
+ config |= GMAC_CONFIG_RE;
+ writel(config, ioaddr + GMAC_CONFIG);
+ }
writel(pmt, ioaddr + GMAC_PMT);
}
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c
index e0ef02f9503b..4b286e27c4ca 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c
@@ -275,7 +275,7 @@ static int dwmac4_wrback_get_rx_timestamp_status(void *desc, u32 ats)
goto exit;
i++;
- } while ((ret == 1) || (i < 10));
+ } while ((ret == 1) && (i < 10));
if (i == 10)
ret = -EBUSY;
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c b/drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c
index 67af0bdd7f10..7516ca210855 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c
@@ -34,7 +34,7 @@ int dwmac_dma_reset(void __iomem *ioaddr)
err = readl_poll_timeout(ioaddr + DMA_BUS_MODE, value,
!(value & DMA_BUS_MODE_SFT_RESET),
- 100000, 10000);
+ 10000, 100000);
if (err)
return -EBUSY;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 1763e48c84e2..16bd50929084 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -473,19 +473,18 @@ static void stmmac_get_rx_hwtstamp(struct stmmac_priv *priv, struct dma_desc *p,
struct dma_desc *np, struct sk_buff *skb)
{
struct skb_shared_hwtstamps *shhwtstamp = NULL;
+ struct dma_desc *desc = p;
u64 ns;
if (!priv->hwts_rx_en)
return;
+ /* For GMAC4, the valid timestamp is from CTX next desc. */
+ if (priv->plat->has_gmac4)
+ desc = np;
/* Check if timestamp is available */
- if (priv->hw->desc->get_rx_timestamp_status(p, priv->adv_ts)) {
- /* For GMAC4, the valid timestamp is from CTX next desc. */
- if (priv->plat->has_gmac4)
- ns = priv->hw->desc->get_timestamp(np, priv->adv_ts);
- else
- ns = priv->hw->desc->get_timestamp(p, priv->adv_ts);
-
+ if (priv->hw->desc->get_rx_timestamp_status(desc, priv->adv_ts)) {
+ ns = priv->hw->desc->get_timestamp(desc, priv->adv_ts);
netdev_dbg(priv->dev, "get valid RX hw timestamp %llu\n", ns);
shhwtstamp = skb_hwtstamps(skb);
memset(shhwtstamp, 0, sizeof(struct skb_shared_hwtstamps));
@@ -1800,12 +1799,13 @@ static void stmmac_tx_clean(struct stmmac_priv *priv, u32 queue)
{
struct stmmac_tx_queue *tx_q = &priv->tx_queue[queue];
unsigned int bytes_compl = 0, pkts_compl = 0;
- unsigned int entry = tx_q->dirty_tx;
+ unsigned int entry;
netif_tx_lock(priv->dev);
priv->xstats.tx_clean++;
+ entry = tx_q->dirty_tx;
while (entry != tx_q->cur_tx) {
struct sk_buff *skb = tx_q->tx_skbuff[entry];
struct dma_desc *p;
@@ -3333,6 +3333,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue)
* them in stmmac_rx_refill() function so that
* device can reuse it.
*/
+ dev_kfree_skb_any(rx_q->rx_skbuff[entry]);
rx_q->rx_skbuff[entry] = NULL;
dma_unmap_single(priv->device,
rx_q->rx_skbuff_dma[entry],
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
index a366b3747eeb..195eb7e71473 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
@@ -150,6 +150,13 @@ static void stmmac_mtl_setup(struct platform_device *pdev,
plat->rx_queues_to_use = 1;
plat->tx_queues_to_use = 1;
+ /* First Queue must always be in DCB mode. As MTL_QUEUE_DCB = 1 we need
+ * to always set this, otherwise Queue will be classified as AVB
+ * (because MTL_QUEUE_AVB = 0).
+ */
+ plat->rx_queues_cfg[0].mode_to_use = MTL_QUEUE_DCB;
+ plat->tx_queues_cfg[0].mode_to_use = MTL_QUEUE_DCB;
+
rx_node = of_parse_phandle(pdev->dev.of_node, "snps,mtl-rx-config", 0);
if (!rx_node)
return;
@@ -161,8 +168,8 @@ static void stmmac_mtl_setup(struct platform_device *pdev,
}
/* Processing RX queues common config */
- if (of_property_read_u8(rx_node, "snps,rx-queues-to-use",
- &plat->rx_queues_to_use))
+ if (of_property_read_u32(rx_node, "snps,rx-queues-to-use",
+ &plat->rx_queues_to_use))
plat->rx_queues_to_use = 1;
if (of_property_read_bool(rx_node, "snps,rx-sched-sp"))
@@ -184,8 +191,8 @@ static void stmmac_mtl_setup(struct platform_device *pdev,
else
plat->rx_queues_cfg[queue].mode_to_use = MTL_QUEUE_DCB;
- if (of_property_read_u8(q_node, "snps,map-to-dma-channel",
- &plat->rx_queues_cfg[queue].chan))
+ if (of_property_read_u32(q_node, "snps,map-to-dma-channel",
+ &plat->rx_queues_cfg[queue].chan))
plat->rx_queues_cfg[queue].chan = queue;
/* TODO: Dynamic mapping to be included in the future */
@@ -215,8 +222,8 @@ static void stmmac_mtl_setup(struct platform_device *pdev,
}
/* Processing TX queues common config */
- if (of_property_read_u8(tx_node, "snps,tx-queues-to-use",
- &plat->tx_queues_to_use))
+ if (of_property_read_u32(tx_node, "snps,tx-queues-to-use",
+ &plat->tx_queues_to_use))
plat->tx_queues_to_use = 1;
if (of_property_read_bool(tx_node, "snps,tx-sched-wrr"))
@@ -237,8 +244,8 @@ static void stmmac_mtl_setup(struct platform_device *pdev,
if (queue >= plat->tx_queues_to_use)
break;
- if (of_property_read_u8(q_node, "snps,weight",
- &plat->tx_queues_cfg[queue].weight))
+ if (of_property_read_u32(q_node, "snps,weight",
+ &plat->tx_queues_cfg[queue].weight))
plat->tx_queues_cfg[queue].weight = 0x10 + queue;
if (of_property_read_bool(q_node, "snps,dcb-algorithm")) {
@@ -315,6 +322,7 @@ static int stmmac_dt_phy(struct plat_stmmacenet_data *plat,
{ .compatible = "allwinner,sun8i-h3-emac" },
{ .compatible = "allwinner,sun8i-v3s-emac" },
{ .compatible = "allwinner,sun50i-a64-emac" },
+ {},
};
/* If phy-handle property is passed from DT, use it as the PHY */
diff --git a/drivers/net/ethernet/sun/Makefile b/drivers/net/ethernet/sun/Makefile
index 37855438b3cb..9a5249dee56e 100644
--- a/drivers/net/ethernet/sun/Makefile
+++ b/drivers/net/ethernet/sun/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Sun network device drivers.
#
diff --git a/drivers/net/ethernet/sun/niu.h b/drivers/net/ethernet/sun/niu.h
index 51e177e1860d..04c215f91fc0 100644
--- a/drivers/net/ethernet/sun/niu.h
+++ b/drivers/net/ethernet/sun/niu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* niu.h: Definitions for Neptune ethernet driver.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/drivers/net/ethernet/sun/sunbmac.h b/drivers/net/ethernet/sun/sunbmac.h
index ee56930475a8..d379bd407eca 100644
--- a/drivers/net/ethernet/sun/sunbmac.h
+++ b/drivers/net/ethernet/sun/sunbmac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: sunbmac.h,v 1.7 2000/07/11 22:35:22 davem Exp $
* sunbmac.h: Defines for the Sun "Big MAC" 100baseT ethernet cards.
*
diff --git a/drivers/net/ethernet/sun/sungem.h b/drivers/net/ethernet/sun/sungem.h
index 835ce1b3cb9f..626302a9bc89 100644
--- a/drivers/net/ethernet/sun/sungem.h
+++ b/drivers/net/ethernet/sun/sungem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: sungem.h,v 1.10.2.4 2002/03/11 08:54:48 davem Exp $
* sungem.h: Definitions for Sun GEM ethernet driver.
*
diff --git a/drivers/net/ethernet/sun/sunhme.h b/drivers/net/ethernet/sun/sunhme.h
index fca1bca7f69d..9118c60c9426 100644
--- a/drivers/net/ethernet/sun/sunhme.h
+++ b/drivers/net/ethernet/sun/sunhme.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: sunhme.h,v 1.33 2001/08/03 06:23:04 davem Exp $
* sunhme.h: Definitions for Sparc HME/BigMac 10/100baseT ethernet driver.
* Also known as the "Happy Meal".
diff --git a/drivers/net/ethernet/sun/sunqe.h b/drivers/net/ethernet/sun/sunqe.h
index ae190b77431b..0daed05b7c83 100644
--- a/drivers/net/ethernet/sun/sunqe.h
+++ b/drivers/net/ethernet/sun/sunqe.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: sunqe.h,v 1.13 2000/02/09 11:15:42 davem Exp $
* sunqe.h: Definitions for the Sun QuadEthernet driver.
*
diff --git a/drivers/net/ethernet/sun/sunvnet_common.h b/drivers/net/ethernet/sun/sunvnet_common.h
index b20d6fa7ef25..6a4dd1fb19bf 100644
--- a/drivers/net/ethernet/sun/sunvnet_common.h
+++ b/drivers/net/ethernet/sun/sunvnet_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SUNVNETCOMMON_H
#define _SUNVNETCOMMON_H
diff --git a/drivers/net/ethernet/synopsys/Makefile b/drivers/net/ethernet/synopsys/Makefile
index 0ad01916f11e..7a46393abf26 100644
--- a/drivers/net/ethernet/synopsys/Makefile
+++ b/drivers/net/ethernet/synopsys/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Synopsys network device drivers.
#
diff --git a/drivers/net/ethernet/ti/Makefile b/drivers/net/ethernet/ti/Makefile
index 10e6b0ce51ba..0be551de821c 100644
--- a/drivers/net/ethernet/ti/Makefile
+++ b/drivers/net/ethernet/ti/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the TI network device drivers.
#
diff --git a/drivers/net/ethernet/tile/Makefile b/drivers/net/ethernet/tile/Makefile
index 0ef9eefd3211..3d0ae1f07fc9 100644
--- a/drivers/net/ethernet/tile/Makefile
+++ b/drivers/net/ethernet/tile/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the TILE on-chip networking support.
#
diff --git a/drivers/net/ethernet/toshiba/Makefile b/drivers/net/ethernet/toshiba/Makefile
index a5069008435b..f434fd0f429e 100644
--- a/drivers/net/ethernet/toshiba/Makefile
+++ b/drivers/net/ethernet/toshiba/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Toshiba network device drivers.
#
diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c
index acd29d60174a..83e6f76eb965 100644
--- a/drivers/net/ethernet/via/via-rhine.c
+++ b/drivers/net/ethernet/via/via-rhine.c
@@ -2598,7 +2598,7 @@ static struct platform_driver rhine_driver_platform = {
}
};
-static struct dmi_system_id rhine_dmi_table[] __initdata = {
+static const struct dmi_system_id rhine_dmi_table[] __initconst = {
{
.ident = "EPIA-M",
.matches = {
diff --git a/drivers/net/ethernet/xilinx/Makefile b/drivers/net/ethernet/xilinx/Makefile
index 214205e975e3..7d7dc1771423 100644
--- a/drivers/net/ethernet/xilinx/Makefile
+++ b/drivers/net/ethernet/xilinx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Xilink network device drivers.
#
diff --git a/drivers/net/ethernet/xilinx/ll_temac.h b/drivers/net/ethernet/xilinx/ll_temac.h
index 7d06e3e1abac..107575225383 100644
--- a/drivers/net/ethernet/xilinx/ll_temac.h
+++ b/drivers/net/ethernet/xilinx/ll_temac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef XILINX_LL_TEMAC_H
#define XILINX_LL_TEMAC_H
diff --git a/drivers/net/ethernet/xilinx/ll_temac_mdio.c b/drivers/net/ethernet/xilinx/ll_temac_mdio.c
index 7714aff78b7d..f5e83ac6f7e2 100644
--- a/drivers/net/ethernet/xilinx/ll_temac_mdio.c
+++ b/drivers/net/ethernet/xilinx/ll_temac_mdio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* MDIO bus driver for the Xilinx TEMAC device
*
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet.h b/drivers/net/ethernet/xilinx/xilinx_axienet.h
index 5ef626331f85..c337400485da 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet.h
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for Xilinx Axi Ethernet device driver.
*
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c b/drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c
index 63307ea97846..16c3bfbe1992 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* MDIO bus driver for the Xilinx Axi Ethernet device
*
diff --git a/drivers/net/fddi/skfp/Makefile b/drivers/net/fddi/skfp/Makefile
index a957a1c7e5ba..875eac8a76f3 100644
--- a/drivers/net/fddi/skfp/Makefile
+++ b/drivers/net/fddi/skfp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the SysKonnect FDDI PCI adapter driver
#
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
index f6404074b7b0..ed51018a813e 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
@@ -113,13 +113,7 @@ static void tunnel_id_to_vni(__be64 tun_id, __u8 *vni)
static bool eq_tun_id_and_vni(u8 *tun_id, u8 *vni)
{
-#ifdef __BIG_ENDIAN
- return (vni[0] == tun_id[2]) &&
- (vni[1] == tun_id[1]) &&
- (vni[2] == tun_id[0]);
-#else
return !memcmp(vni, &tun_id[5], 3);
-#endif
}
static sa_family_t geneve_get_sk_family(struct geneve_sock *gs)
diff --git a/drivers/net/hamradio/Makefile b/drivers/net/hamradio/Makefile
index 104096070026..7a1518d763e3 100644
--- a/drivers/net/hamradio/Makefile
+++ b/drivers/net/hamradio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux AX.25 and HFMODEM device drivers.
#
diff --git a/drivers/net/hamradio/z8530.h b/drivers/net/hamradio/z8530.h
index 8bef548572aa..1655901d713b 100644
--- a/drivers/net/hamradio/z8530.h
+++ b/drivers/net/hamradio/z8530.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* 8530 Serial Communications Controller Register definitions */
#define FLAG 0x7e
diff --git a/drivers/net/hippi/rrunner.h b/drivers/net/hippi/rrunner.h
index 28169043ae49..87533784604f 100644
--- a/drivers/net/hippi/rrunner.h
+++ b/drivers/net/hippi/rrunner.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RRUNNER_H_
#define _RRUNNER_H_
diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
index ec546da86683..5176be76ca7d 100644
--- a/drivers/net/hyperv/hyperv_net.h
+++ b/drivers/net/hyperv/hyperv_net.h
@@ -150,6 +150,8 @@ struct netvsc_device_info {
u32 num_chn;
u32 send_sections;
u32 recv_sections;
+ u32 send_section_size;
+ u32 recv_section_size;
};
enum rndis_device_state {
@@ -204,6 +206,8 @@ int netvsc_recv_callback(struct net_device *net,
const struct ndis_pkt_8021q_info *vlan);
void netvsc_channel_cb(void *context);
int netvsc_poll(struct napi_struct *napi, int budget);
+
+void rndis_set_subchannel(struct work_struct *w);
bool rndis_filter_opened(const struct netvsc_device *nvdev);
int rndis_filter_open(struct netvsc_device *nvdev);
int rndis_filter_close(struct netvsc_device *nvdev);
@@ -782,6 +786,7 @@ struct netvsc_device {
u32 num_chn;
atomic_t open_chn;
+ struct work_struct subchan_work;
wait_queue_head_t subchan_open;
struct rndis_device *extension;
diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
index 0062b802676f..8d5077fb0492 100644
--- a/drivers/net/hyperv/netvsc.c
+++ b/drivers/net/hyperv/netvsc.c
@@ -76,11 +76,9 @@ static struct netvsc_device *alloc_net_device(void)
net_device->max_pkt = RNDIS_MAX_PKT_DEFAULT;
net_device->pkt_align = RNDIS_PKT_ALIGN_DEFAULT;
- net_device->recv_section_size = NETVSC_RECV_SECTION_SIZE;
- net_device->send_section_size = NETVSC_SEND_SECTION_SIZE;
-
init_completion(&net_device->channel_init_wait);
init_waitqueue_head(&net_device->subchan_open);
+ INIT_WORK(&net_device->subchan_work, rndis_set_subchannel);
return net_device;
}
@@ -261,7 +259,7 @@ static int netvsc_init_buf(struct hv_device *device,
int ret = 0;
/* Get receive buffer area. */
- buf_size = device_info->recv_sections * net_device->recv_section_size;
+ buf_size = device_info->recv_sections * device_info->recv_section_size;
buf_size = roundup(buf_size, PAGE_SIZE);
net_device->recv_buf = vzalloc(buf_size);
@@ -343,7 +341,7 @@ static int netvsc_init_buf(struct hv_device *device,
goto cleanup;
/* Now setup the send buffer. */
- buf_size = device_info->send_sections * net_device->send_section_size;
+ buf_size = device_info->send_sections * device_info->send_section_size;
buf_size = round_up(buf_size, PAGE_SIZE);
net_device->send_buf = vzalloc(buf_size);
@@ -557,6 +555,8 @@ void netvsc_device_remove(struct hv_device *device)
= rtnl_dereference(net_device_ctx->nvdev);
int i;
+ cancel_work_sync(&net_device->subchan_work);
+
netvsc_disconnect_vsp(device);
RCU_INIT_POINTER(net_device_ctx->nvdev, NULL);
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index 165ba4b3b423..a32ae02e1b6c 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -49,7 +49,7 @@
#define NETVSC_MIN_TX_SECTIONS 10
#define NETVSC_DEFAULT_TX 192 /* ~1M */
#define NETVSC_MIN_RX_SECTIONS 10 /* ~64K */
-#define NETVSC_DEFAULT_RX 2048 /* ~4M */
+#define NETVSC_DEFAULT_RX 10485 /* Max ~16M */
#define LINKCHANGE_INT (2 * HZ)
#define VF_TAKEOVER_INT (HZ / 10)
@@ -848,15 +848,14 @@ static int netvsc_set_channels(struct net_device *net,
device_info.num_chn = count;
device_info.ring_size = ring_size;
device_info.send_sections = nvdev->send_section_cnt;
+ device_info.send_section_size = nvdev->send_section_size;
device_info.recv_sections = nvdev->recv_section_cnt;
+ device_info.recv_section_size = nvdev->recv_section_size;
rndis_filter_device_remove(dev, nvdev);
nvdev = rndis_filter_device_add(dev, &device_info);
- if (!IS_ERR(nvdev)) {
- netif_set_real_num_tx_queues(net, nvdev->num_chn);
- netif_set_real_num_rx_queues(net, nvdev->num_chn);
- } else {
+ if (IS_ERR(nvdev)) {
ret = PTR_ERR(nvdev);
device_info.num_chn = orig;
nvdev = rndis_filter_device_add(dev, &device_info);
@@ -966,7 +965,9 @@ static int netvsc_change_mtu(struct net_device *ndev, int mtu)
device_info.ring_size = ring_size;
device_info.num_chn = nvdev->num_chn;
device_info.send_sections = nvdev->send_section_cnt;
+ device_info.send_section_size = nvdev->send_section_size;
device_info.recv_sections = nvdev->recv_section_cnt;
+ device_info.recv_section_size = nvdev->recv_section_size;
rndis_filter_device_remove(hdev, nvdev);
@@ -1488,7 +1489,9 @@ static int netvsc_set_ringparam(struct net_device *ndev,
device_info.num_chn = nvdev->num_chn;
device_info.ring_size = ring_size;
device_info.send_sections = new_tx;
+ device_info.send_section_size = nvdev->send_section_size;
device_info.recv_sections = new_rx;
+ device_info.recv_section_size = nvdev->recv_section_size;
netif_device_detach(ndev);
was_opened = rndis_filter_opened(nvdev);
@@ -1937,7 +1940,9 @@ static int netvsc_probe(struct hv_device *dev,
device_info.ring_size = ring_size;
device_info.num_chn = VRSS_CHANNEL_DEFAULT;
device_info.send_sections = NETVSC_DEFAULT_TX;
+ device_info.send_section_size = NETVSC_SEND_SECTION_SIZE;
device_info.recv_sections = NETVSC_DEFAULT_RX;
+ device_info.recv_section_size = NETVSC_RECV_SECTION_SIZE;
nvdev = rndis_filter_device_add(dev, &device_info);
if (IS_ERR(nvdev)) {
@@ -1954,9 +1959,6 @@ static int netvsc_probe(struct hv_device *dev,
NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX;
net->vlan_features = net->features;
- netif_set_real_num_tx_queues(net, nvdev->num_chn);
- netif_set_real_num_rx_queues(net, nvdev->num_chn);
-
netdev_lockdep_set_classes(net);
/* MTU range: 68 - 1500 or 65521 */
@@ -2012,9 +2014,10 @@ static int netvsc_remove(struct hv_device *dev)
if (vf_netdev)
netvsc_unregister_vf(vf_netdev);
+ unregister_netdevice(net);
+
rndis_filter_device_remove(dev,
rtnl_dereference(ndev_ctx->nvdev));
- unregister_netdevice(net);
rtnl_unlock();
hv_set_drvdata(dev, NULL);
diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
index 69c40b8fccc3..065b204d8e17 100644
--- a/drivers/net/hyperv/rndis_filter.c
+++ b/drivers/net/hyperv/rndis_filter.c
@@ -1039,8 +1039,6 @@ static void netvsc_sc_open(struct vmbus_channel *new_sc)
/* Set the channel before opening.*/
nvchan->channel = new_sc;
- netif_napi_add(ndev, &nvchan->napi,
- netvsc_poll, NAPI_POLL_WEIGHT);
ret = vmbus_open(new_sc, nvscdev->ring_size * PAGE_SIZE,
nvscdev->ring_size * PAGE_SIZE, NULL, 0,
@@ -1048,10 +1046,86 @@ static void netvsc_sc_open(struct vmbus_channel *new_sc)
if (ret == 0)
napi_enable(&nvchan->napi);
else
- netif_napi_del(&nvchan->napi);
+ netdev_notice(ndev, "sub channel open failed: %d\n", ret);
- atomic_inc(&nvscdev->open_chn);
- wake_up(&nvscdev->subchan_open);
+ if (atomic_inc_return(&nvscdev->open_chn) == nvscdev->num_chn)
+ wake_up(&nvscdev->subchan_open);
+}
+
+/* Open sub-channels after completing the handling of the device probe.
+ * This breaks overlap of processing the host message for the
+ * new primary channel with the initialization of sub-channels.
+ */
+void rndis_set_subchannel(struct work_struct *w)
+{
+ struct netvsc_device *nvdev
+ = container_of(w, struct netvsc_device, subchan_work);
+ struct nvsp_message *init_packet = &nvdev->channel_init_pkt;
+ struct net_device_context *ndev_ctx;
+ struct rndis_device *rdev;
+ struct net_device *ndev;
+ struct hv_device *hv_dev;
+ int i, ret;
+
+ if (!rtnl_trylock()) {
+ schedule_work(w);
+ return;
+ }
+
+ rdev = nvdev->extension;
+ if (!rdev)
+ goto unlock; /* device was removed */
+
+ ndev = rdev->ndev;
+ ndev_ctx = netdev_priv(ndev);
+ hv_dev = ndev_ctx->device_ctx;
+
+ memset(init_packet, 0, sizeof(struct nvsp_message));
+ init_packet->hdr.msg_type = NVSP_MSG5_TYPE_SUBCHANNEL;
+ init_packet->msg.v5_msg.subchn_req.op = NVSP_SUBCHANNEL_ALLOCATE;
+ init_packet->msg.v5_msg.subchn_req.num_subchannels =
+ nvdev->num_chn - 1;
+ ret = vmbus_sendpacket(hv_dev->channel, init_packet,
+ sizeof(struct nvsp_message),
+ (unsigned long)init_packet,
+ VM_PKT_DATA_INBAND,
+ VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
+ if (ret) {
+ netdev_err(ndev, "sub channel allocate send failed: %d\n", ret);
+ goto failed;
+ }
+
+ wait_for_completion(&nvdev->channel_init_wait);
+ if (init_packet->msg.v5_msg.subchn_comp.status != NVSP_STAT_SUCCESS) {
+ netdev_err(ndev, "sub channel request failed\n");
+ goto failed;
+ }
+
+ nvdev->num_chn = 1 +
+ init_packet->msg.v5_msg.subchn_comp.num_subchannels;
+
+ /* wait for all sub channels to open */
+ wait_event(nvdev->subchan_open,
+ atomic_read(&nvdev->open_chn) == nvdev->num_chn);
+
+ /* ignore failues from setting rss parameters, still have channels */
+ rndis_filter_set_rss_param(rdev, netvsc_hash_key);
+
+ netif_set_real_num_tx_queues(ndev, nvdev->num_chn);
+ netif_set_real_num_rx_queues(ndev, nvdev->num_chn);
+
+ rtnl_unlock();
+ return;
+
+failed:
+ /* fallback to only primary channel */
+ for (i = 1; i < nvdev->num_chn; i++)
+ netif_napi_del(&nvdev->chan_table[i].napi);
+
+ nvdev->max_chn = 1;
+ nvdev->num_chn = 1;
+unlock:
+ rtnl_unlock();
}
struct netvsc_device *rndis_filter_device_add(struct hv_device *dev,
@@ -1063,7 +1137,6 @@ struct netvsc_device *rndis_filter_device_add(struct hv_device *dev,
struct rndis_device *rndis_device;
struct ndis_offload hwcaps;
struct ndis_offload_params offloads;
- struct nvsp_message *init_packet;
struct ndis_recv_scale_cap rsscap;
u32 rsscap_size = sizeof(struct ndis_recv_scale_cap);
unsigned int gso_max_size = GSO_MAX_SIZE;
@@ -1215,9 +1288,7 @@ struct netvsc_device *rndis_filter_device_add(struct hv_device *dev,
net_device->num_chn);
atomic_set(&net_device->open_chn, 1);
-
- if (net_device->num_chn == 1)
- return net_device;
+ vmbus_set_sc_create_callback(dev->channel, netvsc_sc_open);
for (i = 1; i < net_device->num_chn; i++) {
ret = netvsc_alloc_recv_comp_ring(net_device, i);
@@ -1228,38 +1299,15 @@ struct netvsc_device *rndis_filter_device_add(struct hv_device *dev,
}
}
- vmbus_set_sc_create_callback(dev->channel, netvsc_sc_open);
+ for (i = 1; i < net_device->num_chn; i++)
+ netif_napi_add(net, &net_device->chan_table[i].napi,
+ netvsc_poll, NAPI_POLL_WEIGHT);
- init_packet = &net_device->channel_init_pkt;
- memset(init_packet, 0, sizeof(struct nvsp_message));
- init_packet->hdr.msg_type = NVSP_MSG5_TYPE_SUBCHANNEL;
- init_packet->msg.v5_msg.subchn_req.op = NVSP_SUBCHANNEL_ALLOCATE;
- init_packet->msg.v5_msg.subchn_req.num_subchannels =
- net_device->num_chn - 1;
- ret = vmbus_sendpacket(dev->channel, init_packet,
- sizeof(struct nvsp_message),
- (unsigned long)init_packet,
- VM_PKT_DATA_INBAND,
- VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
- if (ret)
- goto out;
-
- wait_for_completion(&net_device->channel_init_wait);
- if (init_packet->msg.v5_msg.subchn_comp.status != NVSP_STAT_SUCCESS) {
- ret = -ENODEV;
- goto out;
- }
+ if (net_device->num_chn > 1)
+ schedule_work(&net_device->subchan_work);
- net_device->num_chn = 1 +
- init_packet->msg.v5_msg.subchn_comp.num_subchannels;
-
- /* wait for all sub channels to open */
- wait_event(net_device->subchan_open,
- atomic_read(&net_device->open_chn) == net_device->num_chn);
-
- /* ignore failues from setting rss parameters, still have channels */
- rndis_filter_set_rss_param(rndis_device, netvsc_hash_key);
out:
+ /* if unavailable, just proceed with one queue */
if (ret) {
net_device->max_chn = 1;
net_device->num_chn = 1;
@@ -1280,10 +1328,10 @@ void rndis_filter_device_remove(struct hv_device *dev,
/* Halt and release the rndis device */
rndis_filter_halt_device(rndis_dev);
- kfree(rndis_dev);
net_dev->extension = NULL;
netvsc_device_remove(dev);
+ kfree(rndis_dev);
}
int rndis_filter_open(struct netvsc_device *nvdev)
diff --git a/drivers/net/ieee802154/Makefile b/drivers/net/ieee802154/Makefile
index 8374bb44a145..bea1de5e726c 100644
--- a/drivers/net/ieee802154/Makefile
+++ b/drivers/net/ieee802154/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_IEEE802154_FAKELB) += fakelb.o
obj-$(CONFIG_IEEE802154_AT86RF230) += at86rf230.o
obj-$(CONFIG_IEEE802154_MRF24J40) += mrf24j40.o
diff --git a/drivers/net/ipvlan/ipvtap.c b/drivers/net/ipvlan/ipvtap.c
index 5dea2063dbc8..0bcc07f346c3 100644
--- a/drivers/net/ipvlan/ipvtap.c
+++ b/drivers/net/ipvlan/ipvtap.c
@@ -197,8 +197,8 @@ static int ipvtap_init(void)
{
int err;
- err = tap_create_cdev(&ipvtap_cdev, &ipvtap_major, "ipvtap");
-
+ err = tap_create_cdev(&ipvtap_cdev, &ipvtap_major, "ipvtap",
+ THIS_MODULE);
if (err)
goto out1;
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index 98e4deaa3a6a..5ab1b8849c30 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -742,6 +742,7 @@ static struct sk_buff *macsec_encrypt(struct sk_buff *skb,
sg_init_table(sg, ret);
ret = skb_to_sgvec(skb, sg, 0, skb->len);
if (unlikely(ret < 0)) {
+ aead_request_free(req);
macsec_txsa_put(tx_sa);
kfree_skb(skb);
return ERR_PTR(ret);
@@ -954,6 +955,7 @@ static struct sk_buff *macsec_decrypt(struct sk_buff *skb,
sg_init_table(sg, ret);
ret = skb_to_sgvec(skb, sg, 0, skb->len);
if (unlikely(ret < 0)) {
+ aead_request_free(req);
kfree_skb(skb);
return ERR_PTR(ret);
}
diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
index c2d0ea2fb019..cba5cb3b849a 100644
--- a/drivers/net/macvtap.c
+++ b/drivers/net/macvtap.c
@@ -204,8 +204,8 @@ static int macvtap_init(void)
{
int err;
- err = tap_create_cdev(&macvtap_cdev, &macvtap_major, "macvtap");
-
+ err = tap_create_cdev(&macvtap_cdev, &macvtap_major, "macvtap",
+ THIS_MODULE);
if (err)
goto out1;
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index a9d16a3af514..cd931cf9dcc2 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -160,15 +160,6 @@ config MDIO_XGENE
endif
-menuconfig PHYLIB
- tristate "PHY Device support and infrastructure"
- depends on NETDEVICES
- select MDIO_DEVICE
- help
- Ethernet controllers are usually attached to PHY
- devices. This option provides infrastructure for
- managing PHY devices.
-
config PHYLINK
tristate
depends on NETDEVICES
@@ -179,6 +170,15 @@ config PHYLINK
configuration links, PHYs, and Serdes links with MAC level
autonegotiation modes.
+menuconfig PHYLIB
+ tristate "PHY Device support and infrastructure"
+ depends on NETDEVICES
+ select MDIO_DEVICE
+ help
+ Ethernet controllers are usually attached to PHY
+ devices. This option provides infrastructure for
+ managing PHY devices.
+
if PHYLIB
config SWPHY
diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
index 416df92fbf4f..00f097e18c68 100644
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for Linux PHY drivers and MDIO bus drivers
libphy-y := phy.o phy-c45.o phy-core.o phy_device.o
diff --git a/drivers/net/phy/dp83640_reg.h b/drivers/net/phy/dp83640_reg.h
index e7fe41117003..21aa24c741b9 100644
--- a/drivers/net/phy/dp83640_reg.h
+++ b/drivers/net/phy/dp83640_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* dp83640_reg.h
* Generated by regen.tcl on Thu Feb 17 10:02:48 AM CET 2011
*/
diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
index 15cbcdba618a..4d02b27df044 100644
--- a/drivers/net/phy/marvell.c
+++ b/drivers/net/phy/marvell.c
@@ -681,9 +681,11 @@ static int m88e1116r_config_init(struct phy_device *phydev)
if (err < 0)
return err;
- err = m88e1121_config_aneg_rgmii_delays(phydev);
- if (err < 0)
- return err;
+ if (phy_interface_is_rgmii(phydev)) {
+ err = m88e1121_config_aneg_rgmii_delays(phydev);
+ if (err < 0)
+ return err;
+ }
err = genphy_soft_reset(phydev);
if (err < 0)
diff --git a/drivers/net/phy/mdio-boardinfo.h b/drivers/net/phy/mdio-boardinfo.h
index 3a7f143904e8..773bb51399be 100644
--- a/drivers/net/phy/mdio-boardinfo.h
+++ b/drivers/net/phy/mdio-boardinfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* mdio-boardinfo.h - board info interface internal to the mdio_bus
* component
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index e842d2cd1ee7..2b1e67bc1e73 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -373,7 +373,8 @@ void phy_ethtool_ksettings_get(struct phy_device *phydev,
cmd->base.port = PORT_BNC;
else
cmd->base.port = PORT_MII;
-
+ cmd->base.transceiver = phy_is_internal(phydev) ?
+ XCVR_INTERNAL : XCVR_EXTERNAL;
cmd->base.phy_address = phydev->mdio.addr;
cmd->base.autoneg = phydev->autoneg;
cmd->base.eth_tp_mdix_ctrl = phydev->mdix_ctrl;
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 8cf0c5901f95..67f25ac29025 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -879,7 +879,7 @@ void phy_attached_print(struct phy_device *phydev, const char *fmt, ...)
{
const char *drv_name = phydev->drv ? phydev->drv->name : "unbound";
char *irq_str;
- char irq_num[4];
+ char irq_num[8];
switch(phydev->irq) {
case PHY_POLL:
diff --git a/drivers/net/phy/swphy.h b/drivers/net/phy/swphy.h
index 2f09ac324e18..3668ab8c901a 100644
--- a/drivers/net/phy/swphy.h
+++ b/drivers/net/phy/swphy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SWPHY_H
#define SWPHY_H
diff --git a/drivers/net/phy/xilinx_gmii2rgmii.c b/drivers/net/phy/xilinx_gmii2rgmii.c
index d15dd3938ba8..2e5150b0b8d5 100644
--- a/drivers/net/phy/xilinx_gmii2rgmii.c
+++ b/drivers/net/phy/xilinx_gmii2rgmii.c
@@ -44,7 +44,7 @@ static int xgmiitorgmii_read_status(struct phy_device *phydev)
priv->phy_drv->read_status(phydev);
val = mdiobus_read(phydev->mdio.bus, priv->addr, XILINX_GMII2RGMII_REG);
- val &= XILINX_GMII2RGMII_SPEED_MASK;
+ val &= ~XILINX_GMII2RGMII_SPEED_MASK;
if (phydev->speed == SPEED_1000)
val |= BMCR_SPEED1000;
diff --git a/drivers/net/ppp/Makefile b/drivers/net/ppp/Makefile
index a6b6297b0066..16c457d6b324 100644
--- a/drivers/net/ppp/Makefile
+++ b/drivers/net/ppp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux PPP network device drivers.
#
diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
index a404552555d4..e365866600ba 100644
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
@@ -120,7 +120,7 @@ struct ppp {
int n_channels; /* how many channels are attached 54 */
spinlock_t rlock; /* lock for receive side 58 */
spinlock_t wlock; /* lock for transmit side 5c */
- int *xmit_recursion __percpu; /* xmit recursion detect */
+ int __percpu *xmit_recursion; /* xmit recursion detect */
int mru; /* max receive unit 60 */
unsigned int flags; /* control bits 64 */
unsigned int xstate; /* transmit state bits 68 */
@@ -1339,7 +1339,17 @@ ppp_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats64)
static int ppp_dev_init(struct net_device *dev)
{
+ struct ppp *ppp;
+
netdev_lockdep_set_classes(dev);
+
+ ppp = netdev_priv(dev);
+ /* Let the netdevice take a reference on the ppp file. This ensures
+ * that ppp_destroy_interface() won't run before the device gets
+ * unregistered.
+ */
+ atomic_inc(&ppp->file.refcnt);
+
return 0;
}
@@ -1362,6 +1372,15 @@ static void ppp_dev_uninit(struct net_device *dev)
wake_up_interruptible(&ppp->file.rwait);
}
+static void ppp_dev_priv_destructor(struct net_device *dev)
+{
+ struct ppp *ppp;
+
+ ppp = netdev_priv(dev);
+ if (atomic_dec_and_test(&ppp->file.refcnt))
+ ppp_destroy_interface(ppp);
+}
+
static const struct net_device_ops ppp_netdev_ops = {
.ndo_init = ppp_dev_init,
.ndo_uninit = ppp_dev_uninit,
@@ -1387,6 +1406,7 @@ static void ppp_setup(struct net_device *dev)
dev->tx_queue_len = 3;
dev->type = ARPHRD_PPP;
dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
+ dev->priv_destructor = ppp_dev_priv_destructor;
netif_keep_dst(dev);
}
diff --git a/drivers/net/ppp/ppp_mppe.h b/drivers/net/ppp/ppp_mppe.h
index 7a14e058c668..677b3b3f7425 100644
--- a/drivers/net/ppp/ppp_mppe.h
+++ b/drivers/net/ppp/ppp_mppe.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define MPPE_PAD 4 /* MPPE growth per frame */
#define MPPE_MAX_KEY_LEN 16 /* largest key length (128-bit) */
diff --git a/drivers/net/slip/slip.h b/drivers/net/slip/slip.h
index cf32aadf508f..c420e5948522 100644
--- a/drivers/net/slip/slip.h
+++ b/drivers/net/slip/slip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* slip.h Define the SLIP device driver interface and constants.
*
diff --git a/drivers/net/tap.c b/drivers/net/tap.c
index 21b71ae947fd..6c0c84c33e1f 100644
--- a/drivers/net/tap.c
+++ b/drivers/net/tap.c
@@ -517,6 +517,10 @@ static int tap_open(struct inode *inode, struct file *file)
&tap_proto, 0);
if (!q)
goto err;
+ if (skb_array_init(&q->skb_array, tap->dev->tx_queue_len, GFP_KERNEL)) {
+ sk_free(&q->sk);
+ goto err;
+ }
RCU_INIT_POINTER(q->sock.wq, &q->wq);
init_waitqueue_head(&q->wq.wait);
@@ -540,22 +544,18 @@ static int tap_open(struct inode *inode, struct file *file)
if ((tap->dev->features & NETIF_F_HIGHDMA) && (tap->dev->features & NETIF_F_SG))
sock_set_flag(&q->sk, SOCK_ZEROCOPY);
- err = -ENOMEM;
- if (skb_array_init(&q->skb_array, tap->dev->tx_queue_len, GFP_KERNEL))
- goto err_array;
-
err = tap_set_queue(tap, file, q);
- if (err)
- goto err_queue;
+ if (err) {
+ /* tap_sock_destruct() will take care of freeing skb_array */
+ goto err_put;
+ }
dev_put(tap->dev);
rtnl_unlock();
return err;
-err_queue:
- skb_array_cleanup(&q->skb_array);
-err_array:
+err_put:
sock_put(&q->sk);
err:
if (tap)
@@ -1032,6 +1032,8 @@ static long tap_ioctl(struct file *file, unsigned int cmd,
case TUNSETSNDBUF:
if (get_user(s, sp))
return -EFAULT;
+ if (s <= 0)
+ return -EINVAL;
q->sk.sk_sndbuf = s;
return 0;
@@ -1249,8 +1251,8 @@ static int tap_list_add(dev_t major, const char *device_name)
return 0;
}
-int tap_create_cdev(struct cdev *tap_cdev,
- dev_t *tap_major, const char *device_name)
+int tap_create_cdev(struct cdev *tap_cdev, dev_t *tap_major,
+ const char *device_name, struct module *module)
{
int err;
@@ -1259,6 +1261,7 @@ int tap_create_cdev(struct cdev *tap_cdev,
goto out1;
cdev_init(tap_cdev, &tap_fops);
+ tap_cdev->owner = module;
err = cdev_add(tap_cdev, *tap_major, TAP_NUM_DEVS);
if (err)
goto out2;
diff --git a/drivers/net/team/Makefile b/drivers/net/team/Makefile
index c57e85889751..f582d81a5091 100644
--- a/drivers/net/team/Makefile
+++ b/drivers/net/team/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the network team driver
#
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 3c9985f29950..42bb820a56c9 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -1286,6 +1286,7 @@ static struct sk_buff *tun_build_skb(struct tun_struct *tun,
buflen += SKB_DATA_ALIGN(len + pad);
rcu_read_unlock();
+ alloc_frag->offset = ALIGN((u64)alloc_frag->offset, SMP_CACHE_BYTES);
if (unlikely(!skb_page_frag_refill(buflen, alloc_frag, GFP_KERNEL)))
return ERR_PTR(-ENOMEM);
@@ -1496,11 +1497,13 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile,
switch (tun->flags & TUN_TYPE_MASK) {
case IFF_TUN:
if (tun->flags & IFF_NO_PI) {
- switch (skb->data[0] & 0xf0) {
- case 0x40:
+ u8 ip_version = skb->len ? (skb->data[0] >> 4) : 0;
+
+ switch (ip_version) {
+ case 4:
pi.proto = htons(ETH_P_IP);
break;
- case 0x60:
+ case 6:
pi.proto = htons(ETH_P_IPV6);
break;
default:
@@ -2025,6 +2028,9 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
if (!dev)
return -ENOMEM;
+ err = dev_get_valid_name(net, dev, name);
+ if (err < 0)
+ goto err_free_dev;
dev_net_set(dev, net);
dev->rtnl_link_ops = &tun_link_ops;
@@ -2423,6 +2429,10 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
ret = -EFAULT;
break;
}
+ if (sndbuf <= 0) {
+ ret = -EINVAL;
+ break;
+ }
tun->sndbuf = sndbuf;
tun_set_sndbuf(tun);
diff --git a/drivers/net/usb/Makefile b/drivers/net/usb/Makefile
index 37fb46aee341..27307a4ab003 100644
--- a/drivers/net/usb/Makefile
+++ b/drivers/net/usb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for USB Network drivers
#
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 8ab281b478f2..3e7a3ac3a362 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -54,11 +54,19 @@ static int is_wireless_rndis(struct usb_interface_descriptor *desc)
desc->bInterfaceProtocol == 3);
}
+static int is_novatel_rndis(struct usb_interface_descriptor *desc)
+{
+ return (desc->bInterfaceClass == USB_CLASS_MISC &&
+ desc->bInterfaceSubClass == 4 &&
+ desc->bInterfaceProtocol == 1);
+}
+
#else
#define is_rndis(desc) 0
#define is_activesync(desc) 0
#define is_wireless_rndis(desc) 0
+#define is_novatel_rndis(desc) 0
#endif
@@ -150,7 +158,8 @@ int usbnet_generic_cdc_bind(struct usbnet *dev, struct usb_interface *intf)
*/
rndis = (is_rndis(&intf->cur_altsetting->desc) ||
is_activesync(&intf->cur_altsetting->desc) ||
- is_wireless_rndis(&intf->cur_altsetting->desc));
+ is_wireless_rndis(&intf->cur_altsetting->desc) ||
+ is_novatel_rndis(&intf->cur_altsetting->desc));
memset(info, 0, sizeof(*info));
info->control = intf;
@@ -547,9 +556,12 @@ static const struct driver_info wwan_info = {
#define REALTEK_VENDOR_ID 0x0bda
#define SAMSUNG_VENDOR_ID 0x04e8
#define LENOVO_VENDOR_ID 0x17ef
+#define LINKSYS_VENDOR_ID 0x13b1
#define NVIDIA_VENDOR_ID 0x0955
#define HP_VENDOR_ID 0x03f0
#define MICROSOFT_VENDOR_ID 0x045e
+#define UBLOX_VENDOR_ID 0x1546
+#define TPLINK_VENDOR_ID 0x2357
static const struct usb_device_id products[] = {
/* BLACKLIST !!
@@ -737,6 +749,15 @@ static const struct usb_device_id products[] = {
.driver_info = 0,
},
+#if IS_ENABLED(CONFIG_USB_RTL8152)
+/* Linksys USB3GIGV1 Ethernet Adapter */
+{
+ USB_DEVICE_AND_INTERFACE_INFO(LINKSYS_VENDOR_ID, 0x0041, USB_CLASS_COMM,
+ USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
+ .driver_info = 0,
+},
+#endif
+
/* ThinkPad USB-C Dock (based on Realtek RTL8153) */
{
USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x3062, USB_CLASS_COMM,
@@ -793,6 +814,13 @@ static const struct usb_device_id products[] = {
.driver_info = 0,
},
+ /* TP-LINK UE300 USB 3.0 Ethernet Adapters (based on Realtek RTL8153) */
+{
+ USB_DEVICE_AND_INTERFACE_INFO(TPLINK_VENDOR_ID, 0x0601, USB_CLASS_COMM,
+ USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
+ .driver_info = 0,
+},
+
/* WHITELIST!!!
*
* CDC Ether uses two interfaces, not necessarily consecutive.
@@ -844,12 +872,30 @@ static const struct usb_device_id products[] = {
USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
.driver_info = (kernel_ulong_t)&wwan_info,
}, {
+ /* Huawei ME906 and ME909 */
+ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, USB_CLASS_COMM,
+ USB_CDC_SUBCLASS_ETHERNET,
+ USB_CDC_PROTO_NONE),
+ .driver_info = (unsigned long)&wwan_info,
+}, {
/* ZTE modules */
USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, USB_CLASS_COMM,
USB_CDC_SUBCLASS_ETHERNET,
USB_CDC_PROTO_NONE),
.driver_info = (unsigned long)&zte_cdc_info,
}, {
+ /* U-blox TOBY-L2 */
+ USB_DEVICE_AND_INTERFACE_INFO(UBLOX_VENDOR_ID, 0x1143, USB_CLASS_COMM,
+ USB_CDC_SUBCLASS_ETHERNET,
+ USB_CDC_PROTO_NONE),
+ .driver_info = (unsigned long)&wwan_info,
+}, {
+ /* U-blox SARA-U2 */
+ USB_DEVICE_AND_INTERFACE_INFO(UBLOX_VENDOR_ID, 0x1104, USB_CLASS_COMM,
+ USB_CDC_SUBCLASS_ETHERNET,
+ USB_CDC_PROTO_NONE),
+ .driver_info = (unsigned long)&wwan_info,
+}, {
USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET,
USB_CDC_PROTO_NONE),
.driver_info = (unsigned long) &cdc_info,
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index b99a7fb09f8e..0161f77641fa 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -1265,30 +1265,45 @@ static int lan78xx_ethtool_get_eeprom(struct net_device *netdev,
struct ethtool_eeprom *ee, u8 *data)
{
struct lan78xx_net *dev = netdev_priv(netdev);
+ int ret;
+
+ ret = usb_autopm_get_interface(dev->intf);
+ if (ret)
+ return ret;
ee->magic = LAN78XX_EEPROM_MAGIC;
- return lan78xx_read_raw_eeprom(dev, ee->offset, ee->len, data);
+ ret = lan78xx_read_raw_eeprom(dev, ee->offset, ee->len, data);
+
+ usb_autopm_put_interface(dev->intf);
+
+ return ret;
}
static int lan78xx_ethtool_set_eeprom(struct net_device *netdev,
struct ethtool_eeprom *ee, u8 *data)
{
struct lan78xx_net *dev = netdev_priv(netdev);
+ int ret;
+
+ ret = usb_autopm_get_interface(dev->intf);
+ if (ret)
+ return ret;
- /* Allow entire eeprom update only */
- if ((ee->magic == LAN78XX_EEPROM_MAGIC) &&
- (ee->offset == 0) &&
- (ee->len == 512) &&
- (data[0] == EEPROM_INDICATOR))
- return lan78xx_write_raw_eeprom(dev, ee->offset, ee->len, data);
+ /* Invalid EEPROM_INDICATOR at offset zero will result in a failure
+ * to load data from EEPROM
+ */
+ if (ee->magic == LAN78XX_EEPROM_MAGIC)
+ ret = lan78xx_write_raw_eeprom(dev, ee->offset, ee->len, data);
else if ((ee->magic == LAN78XX_OTP_MAGIC) &&
(ee->offset == 0) &&
(ee->len == 512) &&
(data[0] == OTP_INDICATOR_1))
- return lan78xx_write_raw_otp(dev, ee->offset, ee->len, data);
+ ret = lan78xx_write_raw_otp(dev, ee->offset, ee->len, data);
+
+ usb_autopm_put_interface(dev->intf);
- return -EINVAL;
+ return ret;
}
static void lan78xx_get_strings(struct net_device *netdev, u32 stringset,
@@ -2434,7 +2449,6 @@ static int lan78xx_reset(struct lan78xx_net *dev)
/* LAN7801 only has RGMII mode */
if (dev->chipid == ID_REV_CHIP_ID_7801_)
buf &= ~MAC_CR_GMII_EN_;
- buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
ret = lan78xx_write_reg(dev, MAC_CR, buf);
ret = lan78xx_read_reg(dev, MAC_TX, &buf);
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index ceb78e2ea4f0..d51d9abf7986 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -613,7 +613,9 @@ enum rtl8152_flags {
#define VENDOR_ID_MICROSOFT 0x045e
#define VENDOR_ID_SAMSUNG 0x04e8
#define VENDOR_ID_LENOVO 0x17ef
+#define VENDOR_ID_LINKSYS 0x13b1
#define VENDOR_ID_NVIDIA 0x0955
+#define VENDOR_ID_TPLINK 0x2357
#define MCU_TYPE_PLA 0x0100
#define MCU_TYPE_USB 0x0000
@@ -5316,7 +5318,9 @@ static const struct usb_device_id rtl8152_table[] = {
{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7205)},
{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x720c)},
{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7214)},
+ {REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041)},
{REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA, 0x09ff)},
+ {REALTEK_USB_DEVICE(VENDOR_ID_TPLINK, 0x0601)},
{}
};
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index a151f267aebb..b807c91abe1d 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -632,6 +632,10 @@ static const struct usb_device_id products [] = {
/* RNDIS for tethering */
USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
.driver_info = (unsigned long) &rndis_info,
+}, {
+ /* Novatel Verizon USB730L */
+ USB_INTERFACE_INFO(USB_CLASS_MISC, 4, 1),
+ .driver_info = (unsigned long) &rndis_info,
},
{ }, // END
};
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index 340c13484e5c..309b88acd3d0 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -526,7 +526,7 @@ static void smsc95xx_set_multicast(struct net_device *netdev)
static int smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex,
u16 lcladv, u16 rmtadv)
{
- u32 flow, afc_cfg = 0;
+ u32 flow = 0, afc_cfg;
int ret = smsc95xx_read_reg(dev, AFC_CFG, &afc_cfg);
if (ret < 0)
@@ -537,20 +537,19 @@ static int smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex,
if (cap & FLOW_CTRL_RX)
flow = 0xFFFF0002;
- else
- flow = 0;
- if (cap & FLOW_CTRL_TX)
+ if (cap & FLOW_CTRL_TX) {
afc_cfg |= 0xF;
- else
+ flow |= 0xFFFF0000;
+ } else {
afc_cfg &= ~0xF;
+ }
netif_dbg(dev, link, dev->net, "rx pause %s, tx pause %s\n",
cap & FLOW_CTRL_RX ? "enabled" : "disabled",
cap & FLOW_CTRL_TX ? "enabled" : "disabled");
} else {
netif_dbg(dev, link, dev->net, "half duplex\n");
- flow = 0;
afc_cfg |= 0xF;
}
diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
index 7e19051f3230..7dc3bcac3506 100644
--- a/drivers/net/vrf.c
+++ b/drivers/net/vrf.c
@@ -957,12 +957,12 @@ static void vrf_ip6_input_dst(struct sk_buff *skb, struct net_device *vrf_dev,
{
const struct ipv6hdr *iph = ipv6_hdr(skb);
struct flowi6 fl6 = {
+ .flowi6_iif = ifindex,
+ .flowi6_mark = skb->mark,
+ .flowi6_proto = iph->nexthdr,
.daddr = iph->daddr,
.saddr = iph->saddr,
.flowlabel = ip6_flowinfo(iph),
- .flowi6_mark = skb->mark,
- .flowi6_proto = iph->nexthdr,
- .flowi6_iif = ifindex,
};
struct net *net = dev_net(vrf_dev);
struct rt6_info *rt6;
@@ -1165,7 +1165,7 @@ static int vrf_fib_rule(const struct net_device *dev, __u8 family, bool add_it)
frh->family = family;
frh->action = FR_ACT_TO_TBL;
- if (nla_put_u32(skb, FRA_L3MDEV, 1))
+ if (nla_put_u8(skb, FRA_L3MDEV, 1))
goto nla_put_failure;
if (nla_put_u32(skb, FRA_PRIORITY, FIB_RULE_PREF))
diff --git a/drivers/net/wan/Makefile b/drivers/net/wan/Makefile
index 73c2326603fc..9532e69fda87 100644
--- a/drivers/net/wan/Makefile
+++ b/drivers/net/wan/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux network (wan) device drivers.
#
diff --git a/drivers/net/wan/hd64570.h b/drivers/net/wan/hd64570.h
index 10963e8f4b39..24529996c872 100644
--- a/drivers/net/wan/hd64570.h
+++ b/drivers/net/wan/hd64570.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __HD64570_H
#define __HD64570_H
diff --git a/drivers/net/wan/lapbether.c b/drivers/net/wan/lapbether.c
index 63f749078a1f..0e3f8ed84660 100644
--- a/drivers/net/wan/lapbether.c
+++ b/drivers/net/wan/lapbether.c
@@ -346,7 +346,6 @@ out:
fail:
dev_put(dev);
free_netdev(ndev);
- kfree(lapbeth);
goto out;
}
diff --git a/drivers/net/wan/lmc/lmc.h b/drivers/net/wan/lmc/lmc.h
index 4ced7ac16c2c..38961793adad 100644
--- a/drivers/net/wan/lmc/lmc.h
+++ b/drivers/net/wan/lmc/lmc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LMC_H_
#define _LMC_H_
diff --git a/drivers/net/wan/lmc/lmc_debug.c b/drivers/net/wan/lmc/lmc_debug.c
index 15049d711f47..f999db788506 100644
--- a/drivers/net/wan/lmc/lmc_debug.c
+++ b/drivers/net/wan/lmc/lmc_debug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/netdevice.h>
#include <linux/interrupt.h>
diff --git a/drivers/net/wan/lmc/lmc_debug.h b/drivers/net/wan/lmc/lmc_debug.h
index 2d46f121549f..820adcae5d67 100644
--- a/drivers/net/wan/lmc/lmc_debug.h
+++ b/drivers/net/wan/lmc/lmc_debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LMC_DEBUG_H_
#define _LMC_DEBUG_H_
diff --git a/drivers/net/wan/lmc/lmc_proto.h b/drivers/net/wan/lmc/lmc_proto.h
index 662148c54644..bb098e443776 100644
--- a/drivers/net/wan/lmc/lmc_proto.h
+++ b/drivers/net/wan/lmc/lmc_proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LMC_PROTO_H_
#define _LMC_PROTO_H_
diff --git a/drivers/net/wan/x25_asy.h b/drivers/net/wan/x25_asy.h
index f57ee67836ae..eb4a4216ee94 100644
--- a/drivers/net/wan/x25_asy.h
+++ b/drivers/net/wan/x25_asy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_X25_ASY_H
#define _LINUX_X25_ASY_H
diff --git a/drivers/net/wan/z85230.h b/drivers/net/wan/z85230.h
index 2416a9d60bd6..32ae710d4f40 100644
--- a/drivers/net/wan/z85230.h
+++ b/drivers/net/wan/z85230.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Description of Z8530 Z85C30 and Z85230 communications chips
*
diff --git a/drivers/net/wimax/i2400m/Makefile b/drivers/net/wimax/i2400m/Makefile
index f6d19c348082..b1db1eff0648 100644
--- a/drivers/net/wimax/i2400m/Makefile
+++ b/drivers/net/wimax/i2400m/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_WIMAX_I2400M) += i2400m.o
obj-$(CONFIG_WIMAX_I2400M_USB) += i2400m-usb.o
diff --git a/drivers/net/wimax/i2400m/fw.c b/drivers/net/wimax/i2400m/fw.c
index c9c711dcd0e6..a89b5685e68b 100644
--- a/drivers/net/wimax/i2400m/fw.c
+++ b/drivers/net/wimax/i2400m/fw.c
@@ -652,7 +652,7 @@ static int i2400m_download_chunk(struct i2400m *i2400m, const void *chunk,
struct device *dev = i2400m_dev(i2400m);
struct {
struct i2400m_bootrom_header cmd;
- u8 cmd_payload[chunk_len];
+ u8 cmd_payload[];
} __packed *buf;
struct i2400m_bootrom_header ack;
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
index 54b41ac5f9c8..7fc96306712a 100644
--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux Wireless network device drivers.
#
diff --git a/drivers/net/wireless/admtek/adm8211.h b/drivers/net/wireless/admtek/adm8211.h
index bbc10b1cde87..2c55c629de28 100644
--- a/drivers/net/wireless/admtek/adm8211.h
+++ b/drivers/net/wireless/admtek/adm8211.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ADM8211_H
#define ADM8211_H
diff --git a/drivers/net/wireless/ath/Makefile b/drivers/net/wireless/ath/Makefile
index 4cdebc7659dd..e4e460b5498e 100644
--- a/drivers/net/wireless/ath/Makefile
+++ b/drivers/net/wireless/ath/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ATH5K) += ath5k/
obj-$(CONFIG_ATH9K_HW) += ath9k/
obj-$(CONFIG_CARL9170) += carl9170/
diff --git a/drivers/net/wireless/ath/ath10k/Makefile b/drivers/net/wireless/ath/ath10k/Makefile
index 899b9b79f4ce..9492177e9063 100644
--- a/drivers/net/wireless/ath/ath10k/Makefile
+++ b/drivers/net/wireless/ath/ath10k/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ATH10K) += ath10k_core.o
ath10k_core-y += mac.o \
debug.o \
diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c
index a3f5dc78353f..0aeeb233af78 100644
--- a/drivers/net/wireless/ath/ath10k/htt_rx.c
+++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
@@ -550,6 +550,11 @@ static int ath10k_htt_rx_crypto_param_len(struct ath10k *ar,
return IEEE80211_TKIP_IV_LEN;
case HTT_RX_MPDU_ENCRYPT_AES_CCM_WPA2:
return IEEE80211_CCMP_HDR_LEN;
+ case HTT_RX_MPDU_ENCRYPT_AES_CCM256_WPA2:
+ return IEEE80211_CCMP_256_HDR_LEN;
+ case HTT_RX_MPDU_ENCRYPT_AES_GCMP_WPA2:
+ case HTT_RX_MPDU_ENCRYPT_AES_GCMP256_WPA2:
+ return IEEE80211_GCMP_HDR_LEN;
case HTT_RX_MPDU_ENCRYPT_WEP128:
case HTT_RX_MPDU_ENCRYPT_WAPI:
break;
@@ -575,6 +580,11 @@ static int ath10k_htt_rx_crypto_tail_len(struct ath10k *ar,
return IEEE80211_TKIP_ICV_LEN;
case HTT_RX_MPDU_ENCRYPT_AES_CCM_WPA2:
return IEEE80211_CCMP_MIC_LEN;
+ case HTT_RX_MPDU_ENCRYPT_AES_CCM256_WPA2:
+ return IEEE80211_CCMP_256_MIC_LEN;
+ case HTT_RX_MPDU_ENCRYPT_AES_GCMP_WPA2:
+ case HTT_RX_MPDU_ENCRYPT_AES_GCMP256_WPA2:
+ return IEEE80211_GCMP_MIC_LEN;
case HTT_RX_MPDU_ENCRYPT_WEP128:
case HTT_RX_MPDU_ENCRYPT_WAPI:
break;
@@ -1051,9 +1061,21 @@ static void ath10k_htt_rx_h_undecap_raw(struct ath10k *ar,
hdr = (void *)msdu->data;
/* Tail */
- if (status->flag & RX_FLAG_IV_STRIPPED)
+ if (status->flag & RX_FLAG_IV_STRIPPED) {
skb_trim(msdu, msdu->len -
ath10k_htt_rx_crypto_tail_len(ar, enctype));
+ } else {
+ /* MIC */
+ if ((status->flag & RX_FLAG_MIC_STRIPPED) &&
+ enctype == HTT_RX_MPDU_ENCRYPT_AES_CCM_WPA2)
+ skb_trim(msdu, msdu->len - 8);
+
+ /* ICV */
+ if (status->flag & RX_FLAG_ICV_STRIPPED &&
+ enctype != HTT_RX_MPDU_ENCRYPT_AES_CCM_WPA2)
+ skb_trim(msdu, msdu->len -
+ ath10k_htt_rx_crypto_tail_len(ar, enctype));
+ }
/* MMIC */
if ((status->flag & RX_FLAG_MMIC_STRIPPED) &&
@@ -1075,7 +1097,8 @@ static void ath10k_htt_rx_h_undecap_raw(struct ath10k *ar,
static void ath10k_htt_rx_h_undecap_nwifi(struct ath10k *ar,
struct sk_buff *msdu,
struct ieee80211_rx_status *status,
- const u8 first_hdr[64])
+ const u8 first_hdr[64],
+ enum htt_rx_mpdu_encrypt_type enctype)
{
struct ieee80211_hdr *hdr;
struct htt_rx_desc *rxd;
@@ -1083,6 +1106,7 @@ static void ath10k_htt_rx_h_undecap_nwifi(struct ath10k *ar,
u8 da[ETH_ALEN];
u8 sa[ETH_ALEN];
int l3_pad_bytes;
+ int bytes_aligned = ar->hw_params.decap_align_bytes;
/* Delivered decapped frame:
* [nwifi 802.11 header] <-- replaced with 802.11 hdr
@@ -1111,6 +1135,14 @@ static void ath10k_htt_rx_h_undecap_nwifi(struct ath10k *ar,
/* push original 802.11 header */
hdr = (struct ieee80211_hdr *)first_hdr;
hdr_len = ieee80211_hdrlen(hdr->frame_control);
+
+ if (!(status->flag & RX_FLAG_IV_STRIPPED)) {
+ memcpy(skb_push(msdu,
+ ath10k_htt_rx_crypto_param_len(ar, enctype)),
+ (void *)hdr + round_up(hdr_len, bytes_aligned),
+ ath10k_htt_rx_crypto_param_len(ar, enctype));
+ }
+
memcpy(skb_push(msdu, hdr_len), hdr, hdr_len);
/* original 802.11 header has a different DA and in
@@ -1171,6 +1203,7 @@ static void ath10k_htt_rx_h_undecap_eth(struct ath10k *ar,
u8 sa[ETH_ALEN];
int l3_pad_bytes;
struct htt_rx_desc *rxd;
+ int bytes_aligned = ar->hw_params.decap_align_bytes;
/* Delivered decapped frame:
* [eth header] <-- replaced with 802.11 hdr & rfc1042/llc
@@ -1199,6 +1232,14 @@ static void ath10k_htt_rx_h_undecap_eth(struct ath10k *ar,
/* push original 802.11 header */
hdr = (struct ieee80211_hdr *)first_hdr;
hdr_len = ieee80211_hdrlen(hdr->frame_control);
+
+ if (!(status->flag & RX_FLAG_IV_STRIPPED)) {
+ memcpy(skb_push(msdu,
+ ath10k_htt_rx_crypto_param_len(ar, enctype)),
+ (void *)hdr + round_up(hdr_len, bytes_aligned),
+ ath10k_htt_rx_crypto_param_len(ar, enctype));
+ }
+
memcpy(skb_push(msdu, hdr_len), hdr, hdr_len);
/* original 802.11 header has a different DA and in
@@ -1212,12 +1253,14 @@ static void ath10k_htt_rx_h_undecap_eth(struct ath10k *ar,
static void ath10k_htt_rx_h_undecap_snap(struct ath10k *ar,
struct sk_buff *msdu,
struct ieee80211_rx_status *status,
- const u8 first_hdr[64])
+ const u8 first_hdr[64],
+ enum htt_rx_mpdu_encrypt_type enctype)
{
struct ieee80211_hdr *hdr;
size_t hdr_len;
int l3_pad_bytes;
struct htt_rx_desc *rxd;
+ int bytes_aligned = ar->hw_params.decap_align_bytes;
/* Delivered decapped frame:
* [amsdu header] <-- replaced with 802.11 hdr
@@ -1233,6 +1276,14 @@ static void ath10k_htt_rx_h_undecap_snap(struct ath10k *ar,
hdr = (struct ieee80211_hdr *)first_hdr;
hdr_len = ieee80211_hdrlen(hdr->frame_control);
+
+ if (!(status->flag & RX_FLAG_IV_STRIPPED)) {
+ memcpy(skb_push(msdu,
+ ath10k_htt_rx_crypto_param_len(ar, enctype)),
+ (void *)hdr + round_up(hdr_len, bytes_aligned),
+ ath10k_htt_rx_crypto_param_len(ar, enctype));
+ }
+
memcpy(skb_push(msdu, hdr_len), hdr, hdr_len);
}
@@ -1267,13 +1318,15 @@ static void ath10k_htt_rx_h_undecap(struct ath10k *ar,
is_decrypted);
break;
case RX_MSDU_DECAP_NATIVE_WIFI:
- ath10k_htt_rx_h_undecap_nwifi(ar, msdu, status, first_hdr);
+ ath10k_htt_rx_h_undecap_nwifi(ar, msdu, status, first_hdr,
+ enctype);
break;
case RX_MSDU_DECAP_ETHERNET2_DIX:
ath10k_htt_rx_h_undecap_eth(ar, msdu, status, first_hdr, enctype);
break;
case RX_MSDU_DECAP_8023_SNAP_LLC:
- ath10k_htt_rx_h_undecap_snap(ar, msdu, status, first_hdr);
+ ath10k_htt_rx_h_undecap_snap(ar, msdu, status, first_hdr,
+ enctype);
break;
}
}
@@ -1316,7 +1369,8 @@ static void ath10k_htt_rx_h_csum_offload(struct sk_buff *msdu)
static void ath10k_htt_rx_h_mpdu(struct ath10k *ar,
struct sk_buff_head *amsdu,
- struct ieee80211_rx_status *status)
+ struct ieee80211_rx_status *status,
+ bool fill_crypt_header)
{
struct sk_buff *first;
struct sk_buff *last;
@@ -1326,7 +1380,6 @@ static void ath10k_htt_rx_h_mpdu(struct ath10k *ar,
enum htt_rx_mpdu_encrypt_type enctype;
u8 first_hdr[64];
u8 *qos;
- size_t hdr_len;
bool has_fcs_err;
bool has_crypto_err;
bool has_tkip_err;
@@ -1351,15 +1404,17 @@ static void ath10k_htt_rx_h_mpdu(struct ath10k *ar,
* decapped header. It'll be used for undecapping of each MSDU.
*/
hdr = (void *)rxd->rx_hdr_status;
- hdr_len = ieee80211_hdrlen(hdr->frame_control);
- memcpy(first_hdr, hdr, hdr_len);
+ memcpy(first_hdr, hdr, RX_HTT_HDR_STATUS_LEN);
/* Each A-MSDU subframe will use the original header as the base and be
* reported as a separate MSDU so strip the A-MSDU bit from QoS Ctl.
*/
hdr = (void *)first_hdr;
- qos = ieee80211_get_qos_ctl(hdr);
- qos[0] &= ~IEEE80211_QOS_CTL_A_MSDU_PRESENT;
+
+ if (ieee80211_is_data_qos(hdr->frame_control)) {
+ qos = ieee80211_get_qos_ctl(hdr);
+ qos[0] &= ~IEEE80211_QOS_CTL_A_MSDU_PRESENT;
+ }
/* Some attention flags are valid only in the last MSDU. */
last = skb_peek_tail(amsdu);
@@ -1406,9 +1461,14 @@ static void ath10k_htt_rx_h_mpdu(struct ath10k *ar,
status->flag |= RX_FLAG_DECRYPTED;
if (likely(!is_mgmt))
- status->flag |= RX_FLAG_IV_STRIPPED |
- RX_FLAG_MMIC_STRIPPED;
-}
+ status->flag |= RX_FLAG_MMIC_STRIPPED;
+
+ if (fill_crypt_header)
+ status->flag |= RX_FLAG_MIC_STRIPPED |
+ RX_FLAG_ICV_STRIPPED;
+ else
+ status->flag |= RX_FLAG_IV_STRIPPED;
+ }
skb_queue_walk(amsdu, msdu) {
ath10k_htt_rx_h_csum_offload(msdu);
@@ -1424,6 +1484,9 @@ static void ath10k_htt_rx_h_mpdu(struct ath10k *ar,
if (is_mgmt)
continue;
+ if (fill_crypt_header)
+ continue;
+
hdr = (void *)msdu->data;
hdr->frame_control &= ~__cpu_to_le16(IEEE80211_FCTL_PROTECTED);
}
@@ -1434,6 +1497,9 @@ static void ath10k_htt_rx_h_deliver(struct ath10k *ar,
struct ieee80211_rx_status *status)
{
struct sk_buff *msdu;
+ struct sk_buff *first_subframe;
+
+ first_subframe = skb_peek(amsdu);
while ((msdu = __skb_dequeue(amsdu))) {
/* Setup per-MSDU flags */
@@ -1442,6 +1508,13 @@ static void ath10k_htt_rx_h_deliver(struct ath10k *ar,
else
status->flag |= RX_FLAG_AMSDU_MORE;
+ if (msdu == first_subframe) {
+ first_subframe = NULL;
+ status->flag &= ~RX_FLAG_ALLOW_SAME_PN;
+ } else {
+ status->flag |= RX_FLAG_ALLOW_SAME_PN;
+ }
+
ath10k_process_rx(ar, status, msdu);
}
}
@@ -1584,7 +1657,7 @@ static int ath10k_htt_rx_handle_amsdu(struct ath10k_htt *htt)
ath10k_htt_rx_h_unchain(ar, &amsdu);
ath10k_htt_rx_h_filter(ar, &amsdu, rx_status);
- ath10k_htt_rx_h_mpdu(ar, &amsdu, rx_status);
+ ath10k_htt_rx_h_mpdu(ar, &amsdu, rx_status, true);
ath10k_htt_rx_h_deliver(ar, &amsdu, rx_status);
return num_msdus;
@@ -1745,8 +1818,7 @@ static void ath10k_htt_rx_delba(struct ath10k *ar, struct htt_resp *resp)
}
static int ath10k_htt_rx_extract_amsdu(struct sk_buff_head *list,
- struct sk_buff_head *amsdu,
- int budget_left)
+ struct sk_buff_head *amsdu)
{
struct sk_buff *msdu;
struct htt_rx_desc *rxd;
@@ -1757,9 +1829,8 @@ static int ath10k_htt_rx_extract_amsdu(struct sk_buff_head *list,
if (WARN_ON(!skb_queue_empty(amsdu)))
return -EINVAL;
- while ((msdu = __skb_dequeue(list)) && budget_left) {
+ while ((msdu = __skb_dequeue(list))) {
__skb_queue_tail(amsdu, msdu);
- budget_left--;
rxd = (void *)msdu->data - sizeof(*rxd);
if (rxd->msdu_end.common.info0 &
@@ -1850,8 +1921,7 @@ static int ath10k_htt_rx_h_rx_offload(struct ath10k *ar,
return num_msdu;
}
-static int ath10k_htt_rx_in_ord_ind(struct ath10k *ar, struct sk_buff *skb,
- int budget_left)
+static int ath10k_htt_rx_in_ord_ind(struct ath10k *ar, struct sk_buff *skb)
{
struct ath10k_htt *htt = &ar->htt;
struct htt_resp *resp = (void *)skb->data;
@@ -1908,9 +1978,9 @@ static int ath10k_htt_rx_in_ord_ind(struct ath10k *ar, struct sk_buff *skb,
if (offload)
num_msdus = ath10k_htt_rx_h_rx_offload(ar, &list);
- while (!skb_queue_empty(&list) && budget_left) {
+ while (!skb_queue_empty(&list)) {
__skb_queue_head_init(&amsdu);
- ret = ath10k_htt_rx_extract_amsdu(&list, &amsdu, budget_left);
+ ret = ath10k_htt_rx_extract_amsdu(&list, &amsdu);
switch (ret) {
case 0:
/* Note: The in-order indication may report interleaved
@@ -1920,10 +1990,9 @@ static int ath10k_htt_rx_in_ord_ind(struct ath10k *ar, struct sk_buff *skb,
* should still give an idea about rx rate to the user.
*/
num_msdus += skb_queue_len(&amsdu);
- budget_left -= skb_queue_len(&amsdu);
ath10k_htt_rx_h_ppdu(ar, &amsdu, status, vdev_id);
ath10k_htt_rx_h_filter(ar, &amsdu, status);
- ath10k_htt_rx_h_mpdu(ar, &amsdu, status);
+ ath10k_htt_rx_h_mpdu(ar, &amsdu, status, false);
ath10k_htt_rx_h_deliver(ar, &amsdu, status);
break;
case -EAGAIN:
@@ -2563,8 +2632,7 @@ int ath10k_htt_txrx_compl_task(struct ath10k *ar, int budget)
}
spin_lock_bh(&htt->rx_ring.lock);
- num_rx_msdus = ath10k_htt_rx_in_ord_ind(ar, skb,
- (budget - quota));
+ num_rx_msdus = ath10k_htt_rx_in_ord_ind(ar, skb);
spin_unlock_bh(&htt->rx_ring.lock);
if (num_rx_msdus < 0) {
resched_napi = true;
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
index bc1633945a56..195dafb98131 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -3396,9 +3396,7 @@ static void ath10k_pci_remove(struct pci_dev *pdev)
MODULE_DEVICE_TABLE(pci, ath10k_pci_id_table);
-#ifdef CONFIG_PM
-
-static int ath10k_pci_pm_suspend(struct device *dev)
+static __maybe_unused int ath10k_pci_pm_suspend(struct device *dev)
{
struct ath10k *ar = dev_get_drvdata(dev);
int ret;
@@ -3414,7 +3412,7 @@ static int ath10k_pci_pm_suspend(struct device *dev)
return ret;
}
-static int ath10k_pci_pm_resume(struct device *dev)
+static __maybe_unused int ath10k_pci_pm_resume(struct device *dev)
{
struct ath10k *ar = dev_get_drvdata(dev);
int ret;
@@ -3433,7 +3431,6 @@ static int ath10k_pci_pm_resume(struct device *dev)
static SIMPLE_DEV_PM_OPS(ath10k_pci_pm_ops,
ath10k_pci_pm_suspend,
ath10k_pci_pm_resume);
-#endif
static struct pci_driver ath10k_pci_driver = {
.name = "ath10k_pci",
diff --git a/drivers/net/wireless/ath/ath10k/rx_desc.h b/drivers/net/wireless/ath/ath10k/rx_desc.h
index c1022a1cf855..28da14398951 100644
--- a/drivers/net/wireless/ath/ath10k/rx_desc.h
+++ b/drivers/net/wireless/ath/ath10k/rx_desc.h
@@ -239,6 +239,9 @@ enum htt_rx_mpdu_encrypt_type {
HTT_RX_MPDU_ENCRYPT_WAPI = 5,
HTT_RX_MPDU_ENCRYPT_AES_CCM_WPA2 = 6,
HTT_RX_MPDU_ENCRYPT_NONE = 7,
+ HTT_RX_MPDU_ENCRYPT_AES_CCM256_WPA2 = 8,
+ HTT_RX_MPDU_ENCRYPT_AES_GCMP_WPA2 = 9,
+ HTT_RX_MPDU_ENCRYPT_AES_GCMP256_WPA2 = 10,
};
#define RX_MPDU_START_INFO0_PEER_IDX_MASK 0x000007ff
diff --git a/drivers/net/wireless/ath/ath5k/Makefile b/drivers/net/wireless/ath/ath5k/Makefile
index 1b3a34f7f224..a8724eee21f8 100644
--- a/drivers/net/wireless/ath/ath5k/Makefile
+++ b/drivers/net/wireless/ath/ath5k/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ath5k-y += caps.o
ath5k-y += initvals.o
ath5k-y += eeprom.o
diff --git a/drivers/net/wireless/ath/ath5k/sysfs.c b/drivers/net/wireless/ath/ath5k/sysfs.c
index 04cf0ca72610..25978c732fe1 100644
--- a/drivers/net/wireless/ath/ath5k/sysfs.c
+++ b/drivers/net/wireless/ath/ath5k/sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/device.h>
diff --git a/drivers/net/wireless/ath/ath5k/trace.h b/drivers/net/wireless/ath/ath5k/trace.h
index c6eef519bb61..a41e3bf42dfc 100644
--- a/drivers/net/wireless/ath/ath5k/trace.h
+++ b/drivers/net/wireless/ath/ath5k/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(__TRACE_ATH5K_H) || defined(TRACE_HEADER_MULTI_READ)
#define __TRACE_ATH5K_H
diff --git a/drivers/net/wireless/ath/ath6kl/trace.h b/drivers/net/wireless/ath/ath6kl/trace.h
index 1a1ea7881b4d..91e735cfdef7 100644
--- a/drivers/net/wireless/ath/ath6kl/trace.h
+++ b/drivers/net/wireless/ath/ath6kl/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_ATH6KL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#include <net/cfg80211.h>
diff --git a/drivers/net/wireless/ath/ath9k/Makefile b/drivers/net/wireless/ath/ath9k/Makefile
index 36a40ffdce15..d804ce7391a0 100644
--- a/drivers/net/wireless/ath/ath9k/Makefile
+++ b/drivers/net/wireless/ath/ath9k/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ath9k-y += beacon.o \
gpio.o \
init.o \
diff --git a/drivers/net/wireless/ath/carl9170/version.h b/drivers/net/wireless/ath/carl9170/version.h
index a0410fe8c03a..9a44d004c206 100644
--- a/drivers/net/wireless/ath/carl9170/version.h
+++ b/drivers/net/wireless/ath/carl9170/version.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CARL9170_SHARED_VERSION_H
#define __CARL9170_SHARED_VERSION_H
#define CARL9170FW_VERSION_YEAR 16
diff --git a/drivers/net/wireless/ath/wcn36xx/Makefile b/drivers/net/wireless/ath/wcn36xx/Makefile
index 50c43b4382ba..3b09435104eb 100644
--- a/drivers/net/wireless/ath/wcn36xx/Makefile
+++ b/drivers/net/wireless/ath/wcn36xx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_WCN36XX) := wcn36xx.o
wcn36xx-y += main.o \
dxe.o \
diff --git a/drivers/net/wireless/ath/wcn36xx/main.c b/drivers/net/wireless/ath/wcn36xx/main.c
index 35bd50bcbbd5..b83f01d6e3dd 100644
--- a/drivers/net/wireless/ath/wcn36xx/main.c
+++ b/drivers/net/wireless/ath/wcn36xx/main.c
@@ -812,7 +812,6 @@ static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
if (!sta) {
wcn36xx_err("sta %pM is not found\n",
bss_conf->bssid);
- rcu_read_unlock();
goto out;
}
sta_priv = wcn36xx_sta_to_priv(sta);
diff --git a/drivers/net/wireless/ath/wil6210/Makefile b/drivers/net/wireless/ath/wil6210/Makefile
index d27efe83748b..398edd2a7f2b 100644
--- a/drivers/net/wireless/ath/wil6210/Makefile
+++ b/drivers/net/wireless/ath/wil6210/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_WIL6210) += wil6210.o
wil6210-y := main.o
diff --git a/drivers/net/wireless/broadcom/b43/Makefile b/drivers/net/wireless/broadcom/b43/Makefile
index 27fab958e3d5..54f92ce49bb8 100644
--- a/drivers/net/wireless/broadcom/b43/Makefile
+++ b/drivers/net/wireless/broadcom/b43/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
b43-y += main.o
b43-y += bus.o
b43-$(CONFIG_B43_PHY_G) += phy_g.o tables.o lo.o wa.o
diff --git a/drivers/net/wireless/broadcom/b43/b43.h b/drivers/net/wireless/broadcom/b43/b43.h
index d7d42f0b80c3..b77d1a904f7e 100644
--- a/drivers/net/wireless/broadcom/b43/b43.h
+++ b/drivers/net/wireless/broadcom/b43/b43.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_H_
#define B43_H_
diff --git a/drivers/net/wireless/broadcom/b43/bus.h b/drivers/net/wireless/broadcom/b43/bus.h
index 256c2c17939a..2a695f9e528b 100644
--- a/drivers/net/wireless/broadcom/b43/bus.h
+++ b/drivers/net/wireless/broadcom/b43/bus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_BUS_H_
#define B43_BUS_H_
diff --git a/drivers/net/wireless/broadcom/b43/debugfs.h b/drivers/net/wireless/broadcom/b43/debugfs.h
index d05377745011..0bf437c86c67 100644
--- a/drivers/net/wireless/broadcom/b43/debugfs.h
+++ b/drivers/net/wireless/broadcom/b43/debugfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_DEBUGFS_H_
#define B43_DEBUGFS_H_
diff --git a/drivers/net/wireless/broadcom/b43/dma.h b/drivers/net/wireless/broadcom/b43/dma.h
index df8c8cdcbdb5..c2a357219d4b 100644
--- a/drivers/net/wireless/broadcom/b43/dma.h
+++ b/drivers/net/wireless/broadcom/b43/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_DMA_H_
#define B43_DMA_H_
diff --git a/drivers/net/wireless/broadcom/b43/leds.h b/drivers/net/wireless/broadcom/b43/leds.h
index 32b66d53cdac..5ebd1b2b1749 100644
--- a/drivers/net/wireless/broadcom/b43/leds.h
+++ b/drivers/net/wireless/broadcom/b43/leds.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_LEDS_H_
#define B43_LEDS_H_
diff --git a/drivers/net/wireless/broadcom/b43/lo.h b/drivers/net/wireless/broadcom/b43/lo.h
index 7b4df3883bc2..66e07ab79c51 100644
--- a/drivers/net/wireless/broadcom/b43/lo.h
+++ b/drivers/net/wireless/broadcom/b43/lo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_LO_H_
#define B43_LO_H_
diff --git a/drivers/net/wireless/broadcom/b43/phy_a.h b/drivers/net/wireless/broadcom/b43/phy_a.h
index 0a92d01c21f9..b1cbfc02beb6 100644
--- a/drivers/net/wireless/broadcom/b43/phy_a.h
+++ b/drivers/net/wireless/broadcom/b43/phy_a.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_B43_PHY_A_H_
#define LINUX_B43_PHY_A_H_
diff --git a/drivers/net/wireless/broadcom/b43/phy_ac.h b/drivers/net/wireless/broadcom/b43/phy_ac.h
index d1ca79e0eb24..02eb6c08670d 100644
--- a/drivers/net/wireless/broadcom/b43/phy_ac.h
+++ b/drivers/net/wireless/broadcom/b43/phy_ac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_PHY_AC_H_
#define B43_PHY_AC_H_
diff --git a/drivers/net/wireless/broadcom/b43/phy_common.h b/drivers/net/wireless/broadcom/b43/phy_common.h
index ced054a9850c..57a1ad8afa08 100644
--- a/drivers/net/wireless/broadcom/b43/phy_common.h
+++ b/drivers/net/wireless/broadcom/b43/phy_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_B43_PHY_COMMON_H_
#define LINUX_B43_PHY_COMMON_H_
diff --git a/drivers/net/wireless/broadcom/b43/phy_g.h b/drivers/net/wireless/broadcom/b43/phy_g.h
index 5413c906a3e7..a27b8603c75f 100644
--- a/drivers/net/wireless/broadcom/b43/phy_g.h
+++ b/drivers/net/wireless/broadcom/b43/phy_g.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_B43_PHY_G_H_
#define LINUX_B43_PHY_G_H_
diff --git a/drivers/net/wireless/broadcom/b43/phy_ht.h b/drivers/net/wireless/broadcom/b43/phy_ht.h
index c086f56ce478..046753857493 100644
--- a/drivers/net/wireless/broadcom/b43/phy_ht.h
+++ b/drivers/net/wireless/broadcom/b43/phy_ht.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_PHY_HT_H_
#define B43_PHY_HT_H_
diff --git a/drivers/net/wireless/broadcom/b43/phy_lcn.h b/drivers/net/wireless/broadcom/b43/phy_lcn.h
index 6a7092e13fff..0b1cfaf6394c 100644
--- a/drivers/net/wireless/broadcom/b43/phy_lcn.h
+++ b/drivers/net/wireless/broadcom/b43/phy_lcn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_PHY_LCN_H_
#define B43_PHY_LCN_H_
diff --git a/drivers/net/wireless/broadcom/b43/phy_lp.h b/drivers/net/wireless/broadcom/b43/phy_lp.h
index 62737f700cbc..50bef2ea6e52 100644
--- a/drivers/net/wireless/broadcom/b43/phy_lp.h
+++ b/drivers/net/wireless/broadcom/b43/phy_lp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_B43_PHY_LP_H_
#define LINUX_B43_PHY_LP_H_
diff --git a/drivers/net/wireless/broadcom/b43/phy_n.h b/drivers/net/wireless/broadcom/b43/phy_n.h
index a6da2c31a99c..b96ded0ef539 100644
--- a/drivers/net/wireless/broadcom/b43/phy_n.h
+++ b/drivers/net/wireless/broadcom/b43/phy_n.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_NPHY_H_
#define B43_NPHY_H_
diff --git a/drivers/net/wireless/broadcom/b43/pio.h b/drivers/net/wireless/broadcom/b43/pio.h
index 1e516147424f..ffbfec622f82 100644
--- a/drivers/net/wireless/broadcom/b43/pio.h
+++ b/drivers/net/wireless/broadcom/b43/pio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_PIO_H_
#define B43_PIO_H_
diff --git a/drivers/net/wireless/broadcom/b43/ppr.h b/drivers/net/wireless/broadcom/b43/ppr.h
index 24d7447e9f01..094389f9f477 100644
--- a/drivers/net/wireless/broadcom/b43/ppr.h
+++ b/drivers/net/wireless/broadcom/b43/ppr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_B43_PPR_H_
#define LINUX_B43_PPR_H_
diff --git a/drivers/net/wireless/broadcom/b43/radio_2055.h b/drivers/net/wireless/broadcom/b43/radio_2055.h
index 67f96122f8d8..ad7271cde001 100644
--- a/drivers/net/wireless/broadcom/b43/radio_2055.h
+++ b/drivers/net/wireless/broadcom/b43/radio_2055.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_RADIO_2055_H_
#define B43_RADIO_2055_H_
diff --git a/drivers/net/wireless/broadcom/b43/radio_2056.h b/drivers/net/wireless/broadcom/b43/radio_2056.h
index 5b86673459fa..59297fdce5e3 100644
--- a/drivers/net/wireless/broadcom/b43/radio_2056.h
+++ b/drivers/net/wireless/broadcom/b43/radio_2056.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_RADIO_2056_H_
#define B43_RADIO_2056_H_
diff --git a/drivers/net/wireless/broadcom/b43/radio_2057.h b/drivers/net/wireless/broadcom/b43/radio_2057.h
index 220d080238ff..d7959da77b51 100644
--- a/drivers/net/wireless/broadcom/b43/radio_2057.h
+++ b/drivers/net/wireless/broadcom/b43/radio_2057.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_RADIO_2057_H_
#define B43_RADIO_2057_H_
diff --git a/drivers/net/wireless/broadcom/b43/radio_2059.h b/drivers/net/wireless/broadcom/b43/radio_2059.h
index 9e22fb60588b..32c0025bce9d 100644
--- a/drivers/net/wireless/broadcom/b43/radio_2059.h
+++ b/drivers/net/wireless/broadcom/b43/radio_2059.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_RADIO_2059_H_
#define B43_RADIO_2059_H_
diff --git a/drivers/net/wireless/broadcom/b43/rfkill.h b/drivers/net/wireless/broadcom/b43/rfkill.h
index f046c3ca0519..8682ac5b828a 100644
--- a/drivers/net/wireless/broadcom/b43/rfkill.h
+++ b/drivers/net/wireless/broadcom/b43/rfkill.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_RFKILL_H_
#define B43_RFKILL_H_
diff --git a/drivers/net/wireless/broadcom/b43/sdio.h b/drivers/net/wireless/broadcom/b43/sdio.h
index 1e93926f388f..aa5693b123ad 100644
--- a/drivers/net/wireless/broadcom/b43/sdio.h
+++ b/drivers/net/wireless/broadcom/b43/sdio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_SDIO_H_
#define B43_SDIO_H_
diff --git a/drivers/net/wireless/broadcom/b43/sysfs.h b/drivers/net/wireless/broadcom/b43/sysfs.h
index 12bda9ef1a85..e70e6cff3c53 100644
--- a/drivers/net/wireless/broadcom/b43/sysfs.h
+++ b/drivers/net/wireless/broadcom/b43/sysfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_SYSFS_H_
#define B43_SYSFS_H_
diff --git a/drivers/net/wireless/broadcom/b43/tables.h b/drivers/net/wireless/broadcom/b43/tables.h
index 80e73c7cbac5..3b0777f15f3e 100644
--- a/drivers/net/wireless/broadcom/b43/tables.h
+++ b/drivers/net/wireless/broadcom/b43/tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_TABLES_H_
#define B43_TABLES_H_
diff --git a/drivers/net/wireless/broadcom/b43/tables_lpphy.h b/drivers/net/wireless/broadcom/b43/tables_lpphy.h
index 84f1d265f657..62002098bbda 100644
--- a/drivers/net/wireless/broadcom/b43/tables_lpphy.h
+++ b/drivers/net/wireless/broadcom/b43/tables_lpphy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_TABLES_LPPHY_H_
#define B43_TABLES_LPPHY_H_
diff --git a/drivers/net/wireless/broadcom/b43/tables_nphy.h b/drivers/net/wireless/broadcom/b43/tables_nphy.h
index b51f386db02f..3876786d2692 100644
--- a/drivers/net/wireless/broadcom/b43/tables_nphy.h
+++ b/drivers/net/wireless/broadcom/b43/tables_nphy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_TABLES_NPHY_H_
#define B43_TABLES_NPHY_H_
diff --git a/drivers/net/wireless/broadcom/b43/tables_phy_ht.h b/drivers/net/wireless/broadcom/b43/tables_phy_ht.h
index 1b5ef2bc770c..7ed057118ae3 100644
--- a/drivers/net/wireless/broadcom/b43/tables_phy_ht.h
+++ b/drivers/net/wireless/broadcom/b43/tables_phy_ht.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_TABLES_PHY_HT_H_
#define B43_TABLES_PHY_HT_H_
diff --git a/drivers/net/wireless/broadcom/b43/tables_phy_lcn.h b/drivers/net/wireless/broadcom/b43/tables_phy_lcn.h
index caff9db6831f..5ea6c15e851e 100644
--- a/drivers/net/wireless/broadcom/b43/tables_phy_lcn.h
+++ b/drivers/net/wireless/broadcom/b43/tables_phy_lcn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_TABLES_PHY_LCN_H_
#define B43_TABLES_PHY_LCN_H_
diff --git a/drivers/net/wireless/broadcom/b43/wa.h b/drivers/net/wireless/broadcom/b43/wa.h
index e163c5e56e81..f3459b99d83b 100644
--- a/drivers/net/wireless/broadcom/b43/wa.h
+++ b/drivers/net/wireless/broadcom/b43/wa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_WA_H_
#define B43_WA_H_
diff --git a/drivers/net/wireless/broadcom/b43/xmit.h b/drivers/net/wireless/broadcom/b43/xmit.h
index ba6115308068..6524a75bb73b 100644
--- a/drivers/net/wireless/broadcom/b43/xmit.h
+++ b/drivers/net/wireless/broadcom/b43/xmit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_XMIT_H_
#define B43_XMIT_H_
diff --git a/drivers/net/wireless/broadcom/b43legacy/Makefile b/drivers/net/wireless/broadcom/b43legacy/Makefile
index 227a77e84362..f8b392f09009 100644
--- a/drivers/net/wireless/broadcom/b43legacy/Makefile
+++ b/drivers/net/wireless/broadcom/b43legacy/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# b43legacy core
b43legacy-y += main.o
b43legacy-y += ilt.o
diff --git a/drivers/net/wireless/broadcom/b43legacy/b43legacy.h b/drivers/net/wireless/broadcom/b43legacy/b43legacy.h
index 482476fdb1f3..6b0cec467938 100644
--- a/drivers/net/wireless/broadcom/b43legacy/b43legacy.h
+++ b/drivers/net/wireless/broadcom/b43legacy/b43legacy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43legacy_H_
#define B43legacy_H_
diff --git a/drivers/net/wireless/broadcom/b43legacy/debugfs.h b/drivers/net/wireless/broadcom/b43legacy/debugfs.h
index 9ee32158b947..7a37764406b1 100644
--- a/drivers/net/wireless/broadcom/b43legacy/debugfs.h
+++ b/drivers/net/wireless/broadcom/b43legacy/debugfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43legacy_DEBUGFS_H_
#define B43legacy_DEBUGFS_H_
diff --git a/drivers/net/wireless/broadcom/b43legacy/dma.h b/drivers/net/wireless/broadcom/b43legacy/dma.h
index c3282f906bc7..b5c1a51db2a4 100644
--- a/drivers/net/wireless/broadcom/b43legacy/dma.h
+++ b/drivers/net/wireless/broadcom/b43legacy/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43legacy_DMA_H_
#define B43legacy_DMA_H_
diff --git a/drivers/net/wireless/broadcom/b43legacy/ilt.h b/drivers/net/wireless/broadcom/b43legacy/ilt.h
index 48bcf37eccb8..ce7a61e2efb1 100644
--- a/drivers/net/wireless/broadcom/b43legacy/ilt.h
+++ b/drivers/net/wireless/broadcom/b43legacy/ilt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43legacy_ILT_H_
#define B43legacy_ILT_H_
diff --git a/drivers/net/wireless/broadcom/b43legacy/leds.h b/drivers/net/wireless/broadcom/b43legacy/leds.h
index 9ff6750dc57f..389ae06a2d10 100644
--- a/drivers/net/wireless/broadcom/b43legacy/leds.h
+++ b/drivers/net/wireless/broadcom/b43legacy/leds.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43legacy_LEDS_H_
#define B43legacy_LEDS_H_
diff --git a/drivers/net/wireless/broadcom/b43legacy/pio.h b/drivers/net/wireless/broadcom/b43legacy/pio.h
index 8e6773ea6e75..1cd1b9ca5e9c 100644
--- a/drivers/net/wireless/broadcom/b43legacy/pio.h
+++ b/drivers/net/wireless/broadcom/b43legacy/pio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43legacy_PIO_H_
#define B43legacy_PIO_H_
diff --git a/drivers/net/wireless/broadcom/b43legacy/rfkill.h b/drivers/net/wireless/broadcom/b43legacy/rfkill.h
index 75585571c544..7f314eb815d4 100644
--- a/drivers/net/wireless/broadcom/b43legacy/rfkill.h
+++ b/drivers/net/wireless/broadcom/b43legacy/rfkill.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43legacy_RFKILL_H_
#define B43legacy_RFKILL_H_
diff --git a/drivers/net/wireless/broadcom/b43legacy/sysfs.h b/drivers/net/wireless/broadcom/b43legacy/sysfs.h
index 417d509803c7..ea9d783e6796 100644
--- a/drivers/net/wireless/broadcom/b43legacy/sysfs.h
+++ b/drivers/net/wireless/broadcom/b43legacy/sysfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43legacy_SYSFS_H_
#define B43legacy_SYSFS_H_
diff --git a/drivers/net/wireless/broadcom/b43legacy/xmit.h b/drivers/net/wireless/broadcom/b43legacy/xmit.h
index 289db00a4a7b..e4ef869f0b8c 100644
--- a/drivers/net/wireless/broadcom/b43legacy/xmit.h
+++ b/drivers/net/wireless/broadcom/b43legacy/xmit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43legacy_XMIT_H_
#define B43legacy_XMIT_H_
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index aaed4ab503ad..4157c90ad973 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -980,7 +980,7 @@ static void brcmf_escan_prep(struct brcmf_cfg80211_info *cfg,
eth_broadcast_addr(params_le->bssid);
params_le->bss_type = DOT11_BSSTYPE_ANY;
- params_le->scan_type = 0;
+ params_le->scan_type = BRCMF_SCANTYPE_ACTIVE;
params_le->channel_num = 0;
params_le->nprobes = cpu_to_le32(-1);
params_le->active_time = cpu_to_le32(-1);
@@ -988,12 +988,9 @@ static void brcmf_escan_prep(struct brcmf_cfg80211_info *cfg,
params_le->home_time = cpu_to_le32(-1);
memset(&params_le->ssid_le, 0, sizeof(params_le->ssid_le));
- /* if request is null exit so it will be all channel broadcast scan */
- if (!request)
- return;
-
n_ssids = request->n_ssids;
n_channels = request->n_channels;
+
/* Copy channel array if applicable */
brcmf_dbg(SCAN, "### List of channelspecs to scan ### %d\n",
n_channels);
@@ -1030,16 +1027,8 @@ static void brcmf_escan_prep(struct brcmf_cfg80211_info *cfg,
ptr += sizeof(ssid_le);
}
} else {
- brcmf_dbg(SCAN, "Broadcast scan %p\n", request->ssids);
- if ((request->ssids) && request->ssids->ssid_len) {
- brcmf_dbg(SCAN, "SSID %s len=%d\n",
- params_le->ssid_le.SSID,
- request->ssids->ssid_len);
- params_le->ssid_le.SSID_len =
- cpu_to_le32(request->ssids->ssid_len);
- memcpy(&params_le->ssid_le.SSID, request->ssids->ssid,
- request->ssids->ssid_len);
- }
+ brcmf_dbg(SCAN, "Performing passive scan\n");
+ params_le->scan_type = BRCMF_SCANTYPE_PASSIVE;
}
/* Adding mask to channel numbers */
params_le->channel_num =
@@ -3162,6 +3151,7 @@ brcmf_cfg80211_escan_handler(struct brcmf_if *ifp,
struct brcmf_cfg80211_info *cfg = ifp->drvr->config;
s32 status;
struct brcmf_escan_result_le *escan_result_le;
+ u32 escan_buflen;
struct brcmf_bss_info_le *bss_info_le;
struct brcmf_bss_info_le *bss = NULL;
u32 bi_length;
@@ -3181,11 +3171,23 @@ brcmf_cfg80211_escan_handler(struct brcmf_if *ifp,
if (status == BRCMF_E_STATUS_PARTIAL) {
brcmf_dbg(SCAN, "ESCAN Partial result\n");
+ if (e->datalen < sizeof(*escan_result_le)) {
+ brcmf_err("invalid event data length\n");
+ goto exit;
+ }
escan_result_le = (struct brcmf_escan_result_le *) data;
if (!escan_result_le) {
brcmf_err("Invalid escan result (NULL pointer)\n");
goto exit;
}
+ escan_buflen = le32_to_cpu(escan_result_le->buflen);
+ if (escan_buflen > BRCMF_ESCAN_BUF_SIZE ||
+ escan_buflen > e->datalen ||
+ escan_buflen < sizeof(*escan_result_le)) {
+ brcmf_err("Invalid escan buffer length: %d\n",
+ escan_buflen);
+ goto exit;
+ }
if (le16_to_cpu(escan_result_le->bss_count) != 1) {
brcmf_err("Invalid bss_count %d: ignoring\n",
escan_result_le->bss_count);
@@ -3202,9 +3204,8 @@ brcmf_cfg80211_escan_handler(struct brcmf_if *ifp,
}
bi_length = le32_to_cpu(bss_info_le->length);
- if (bi_length != (le32_to_cpu(escan_result_le->buflen) -
- WL_ESCAN_RESULTS_FIXED_SIZE)) {
- brcmf_err("Invalid bss_info length %d: ignoring\n",
+ if (bi_length != escan_buflen - WL_ESCAN_RESULTS_FIXED_SIZE) {
+ brcmf_err("Ignoring invalid bss_info length: %d\n",
bi_length);
goto exit;
}
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
index 4eb1e1ce9ace..ef72baf6dd96 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
@@ -429,7 +429,8 @@ void brcmf_fweh_process_event(struct brcmf_pub *drvr,
if (code != BRCMF_E_IF && !fweh->evt_handler[code])
return;
- if (datalen > BRCMF_DCMD_MAXLEN)
+ if (datalen > BRCMF_DCMD_MAXLEN ||
+ datalen + sizeof(*event_packet) > packet_len)
return;
if (in_interrupt())
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
index 8391989b1882..e0d22fedb2b4 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
@@ -45,6 +45,11 @@
#define BRCMF_SCAN_PARAMS_COUNT_MASK 0x0000ffff
#define BRCMF_SCAN_PARAMS_NSSID_SHIFT 16
+/* scan type definitions */
+#define BRCMF_SCANTYPE_DEFAULT 0xFF
+#define BRCMF_SCANTYPE_ACTIVE 0
+#define BRCMF_SCANTYPE_PASSIVE 1
+
#define BRCMF_WSEC_MAX_PSK_LEN 32
#define BRCMF_WSEC_PASSPHRASE BIT(0)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.c
index 74b17cecb189..c0a5449ed72c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <net/mac80211.h>
#include <linux/bcma/bcma_driver_chipcommon.h>
#include <linux/gpio.h>
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c
index b3aab2fe96eb..ef685465f80a 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c
@@ -14764,8 +14764,8 @@ static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
}
static void
-wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
- u8 len)
+wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, const u8 *events,
+ const u8 *dlys, u8 len)
{
u32 t1_offset, t2_offset;
u8 ctr;
@@ -15240,16 +15240,16 @@ static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
{
u16 currband;
- s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
- s8 *lna1_gain_db = NULL;
- s8 *lna1_gain_db_2 = NULL;
- s8 *lna2_gain_db = NULL;
- s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
- s8 *tia_gain_db;
- s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
- s8 *tia_gainbits;
- u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
- u16 *rfseq_init_gain;
+ static const s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
+ const s8 *lna1_gain_db = NULL;
+ const s8 *lna1_gain_db_2 = NULL;
+ const s8 *lna2_gain_db = NULL;
+ static const s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
+ const s8 *tia_gain_db;
+ static const s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
+ const s8 *tia_gainbits;
+ static const u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
+ const u16 *rfseq_init_gain;
u16 init_gaincode;
u16 clip1hi_gaincode;
u16 clip1md_gaincode = 0;
@@ -15310,10 +15310,9 @@ static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
if ((freq <= 5080) || (freq == 5825)) {
- s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
- s8 lna1A_gain_db_2_rev7[] = {
- 11, 17, 22, 25};
- s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
+ static const s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
+ static const s8 lna1A_gain_db_2_rev7[] = { 11, 17, 22, 25};
+ static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
crsminu_th = 0x3e;
lna1_gain_db = lna1A_gain_db_rev7;
@@ -15321,10 +15320,9 @@ static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
lna2_gain_db = lna2A_gain_db_rev7;
} else if ((freq >= 5500) && (freq <= 5700)) {
- s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
- s8 lna1A_gain_db_2_rev7[] = {
- 12, 18, 22, 26};
- s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
+ static const s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
+ static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
+ static const s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
crsminu_th = 0x45;
clip1md_gaincode_B = 0x14;
@@ -15335,10 +15333,9 @@ static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
lna2_gain_db = lna2A_gain_db_rev7;
} else {
- s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
- s8 lna1A_gain_db_2_rev7[] = {
- 12, 18, 22, 26};
- s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
+ static const s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
+ static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
+ static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
crsminu_th = 0x41;
lna1_gain_db = lna1A_gain_db_rev7;
@@ -15450,65 +15447,65 @@ static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
NPHY_RFSEQ_CMD_SET_HPF_BW
};
- u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
- s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
- s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
- s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
- s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
- s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
- s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
- s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
- s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
- s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
- s8 *lna1_gain_db = NULL;
- s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
- s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
- s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
- s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
- s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
- s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
- s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
- s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
- s8 *lna2_gain_db = NULL;
- s8 tiaG_gain_db[] = {
+ static const u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
+ static const s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
+ static const s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
+ static const s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
+ static const s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
+ static const s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
+ static const s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
+ static const s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
+ static const s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
+ static const s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
+ const s8 *lna1_gain_db = NULL;
+ static const s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
+ static const s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
+ static const s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
+ static const s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
+ static const s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
+ static const s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
+ static const s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
+ static const s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
+ const s8 *lna2_gain_db = NULL;
+ static const s8 tiaG_gain_db[] = {
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
- s8 tiaA_gain_db[] = {
+ static const s8 tiaA_gain_db[] = {
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
- s8 tiaA_gain_db_rev4[] = {
+ static const s8 tiaA_gain_db_rev4[] = {
0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
- s8 tiaA_gain_db_rev5[] = {
+ static const s8 tiaA_gain_db_rev5[] = {
0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
- s8 tiaA_gain_db_rev6[] = {
+ static const s8 tiaA_gain_db_rev6[] = {
0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
- s8 *tia_gain_db;
- s8 tiaG_gainbits[] = {
+ const s8 *tia_gain_db;
+ static const s8 tiaG_gainbits[] = {
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
- s8 tiaA_gainbits[] = {
+ static const s8 tiaA_gainbits[] = {
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
- s8 tiaA_gainbits_rev4[] = {
+ static const s8 tiaA_gainbits_rev4[] = {
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
- s8 tiaA_gainbits_rev5[] = {
+ static const s8 tiaA_gainbits_rev5[] = {
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
- s8 tiaA_gainbits_rev6[] = {
+ static const s8 tiaA_gainbits_rev6[] = {
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
- s8 *tia_gainbits;
- s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
- s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
- u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
- u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
- u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
- u16 rfseqG_init_gain_rev5_elna[] = {
+ const s8 *tia_gainbits;
+ static const s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
+ static const s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
+ static const u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
+ static const u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
+ static const u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
+ static const u16 rfseqG_init_gain_rev5_elna[] = {
0x013f, 0x013f, 0x013f, 0x013f };
- u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
- u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
- u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
- u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
- u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
- u16 rfseqA_init_gain_rev4_elna[] = {
+ static const u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
+ static const u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
+ static const u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
+ static const u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
+ static const u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
+ static const u16 rfseqA_init_gain_rev4_elna[] = {
0x314f, 0x314f, 0x314f, 0x314f };
- u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
- u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
- u16 *rfseq_init_gain;
+ static const u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
+ static const u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
+ const u16 *rfseq_init_gain;
u16 initG_gaincode = 0x627e;
u16 initG_gaincode_rev4 = 0x527e;
u16 initG_gaincode_rev5 = 0x427e;
@@ -15538,10 +15535,10 @@ static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
u16 clip1mdA_gaincode_rev6 = 0x2084;
u16 clip1md_gaincode = 0;
u16 clip1loG_gaincode = 0x0074;
- u16 clip1loG_gaincode_rev5[] = {
+ static const u16 clip1loG_gaincode_rev5[] = {
0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
};
- u16 clip1loG_gaincode_rev6[] = {
+ static const u16 clip1loG_gaincode_rev6[] = {
0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
};
u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
@@ -16066,7 +16063,7 @@ static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
{
- u8 rfseq_rx2tx_events[] = {
+ static const u8 rfseq_rx2tx_events[] = {
NPHY_RFSEQ_CMD_NOP,
NPHY_RFSEQ_CMD_RXG_FBW,
NPHY_RFSEQ_CMD_TR_SWITCH,
@@ -16076,7 +16073,7 @@ static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
NPHY_RFSEQ_CMD_EXT_PA
};
u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
- u8 rfseq_tx2rx_events[] = {
+ static const u8 rfseq_tx2rx_events[] = {
NPHY_RFSEQ_CMD_NOP,
NPHY_RFSEQ_CMD_EXT_PA,
NPHY_RFSEQ_CMD_TX_GAIN,
@@ -16085,8 +16082,8 @@ static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
NPHY_RFSEQ_CMD_RXG_FBW,
NPHY_RFSEQ_CMD_CLR_HIQ_DIS
};
- u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
- u8 rfseq_tx2rx_events_rev3[] = {
+ static const u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
+ static const u8 rfseq_tx2rx_events_rev3[] = {
NPHY_REV3_RFSEQ_CMD_EXT_PA,
NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
NPHY_REV3_RFSEQ_CMD_TX_GAIN,
@@ -16096,7 +16093,7 @@ static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
NPHY_REV3_RFSEQ_CMD_END
};
- u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
+ static const u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
u8 rfseq_rx2tx_events_rev3[] = {
NPHY_REV3_RFSEQ_CMD_NOP,
NPHY_REV3_RFSEQ_CMD_RXG_FBW,
@@ -16110,7 +16107,7 @@ static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
};
u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
- u8 rfseq_rx2tx_events_rev3_ipa[] = {
+ static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
NPHY_REV3_RFSEQ_CMD_NOP,
NPHY_REV3_RFSEQ_CMD_RXG_FBW,
NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
@@ -16121,15 +16118,15 @@ static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
NPHY_REV3_RFSEQ_CMD_END
};
- u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
- u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
+ static const u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
+ static const u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
s16 alpha0, alpha1, alpha2;
s16 beta0, beta1, beta2;
u32 leg_data_weights, ht_data_weights, nss1_data_weights,
stbc_data_weights;
u8 chan_freq_range = 0;
- u16 dac_control = 0x0002;
+ static const u16 dac_control = 0x0002;
u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
@@ -16139,8 +16136,8 @@ static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
u16 *aux_adc_gain;
- u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
- u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
+ static const u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
+ static const u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
s32 min_nvar_val = 0x18d;
s32 min_nvar_offset_6mbps = 20;
u8 pdetrange;
@@ -16151,9 +16148,9 @@ static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
- u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
- u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
- u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
+ static const u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
+ static const u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
+ static const u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
u16 ipalvlshift_3p3_war_en = 0;
u16 rccal_bcap_val, rccal_scap_val;
u16 rccal_tx20_11b_bcap = 0;
@@ -24291,13 +24288,13 @@ static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
u16 bbmult;
u16 tblentry;
- struct nphy_txiqcal_ladder ladder_lo[] = {
+ static const struct nphy_txiqcal_ladder ladder_lo[] = {
{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
{25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
{25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
};
- struct nphy_txiqcal_ladder ladder_iq[] = {
+ static const struct nphy_txiqcal_ladder ladder_iq[] = {
{3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
{25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
{100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
@@ -25773,67 +25770,67 @@ wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
u16 cal_gain[2];
struct nphy_iqcal_params cal_params[2];
u32 tbl_len;
- void *tbl_ptr;
+ const void *tbl_ptr;
bool ladder_updated[2];
u8 mphase_cal_lastphase = 0;
int bcmerror = 0;
bool phyhang_avoid_state = false;
- u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
+ static const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
0x1902,
0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
0x6407
};
- u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
+ static const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
0x3200,
0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
0x6407
};
- u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
+ static const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
0x1202,
0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
0x4707
};
- u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
+ static const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
0x2300,
0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
0x4707
};
- u16 tbl_tx_iqlo_cal_startcoefs[] = {
+ static const u16 tbl_tx_iqlo_cal_startcoefs[] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000
};
- u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
+ static const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
0x9123, 0x9264, 0x9086, 0x9245, 0x9056
};
- u16 tbl_tx_iqlo_cal_cmds_recal[] = {
+ static const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
0x9101, 0x9253, 0x9053, 0x9234, 0x9034
};
- u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
+ static const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000
};
- u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
+ static const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
};
- u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
+ static const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
};
diff --git a/drivers/net/wireless/cisco/airo.h b/drivers/net/wireless/cisco/airo.h
index e480adf86be6..8a02977a2e2b 100644
--- a/drivers/net/wireless/cisco/airo.h
+++ b/drivers/net/wireless/cisco/airo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AIRO_H_
#define _AIRO_H_
diff --git a/drivers/net/wireless/intel/ipw2x00/Makefile b/drivers/net/wireless/intel/ipw2x00/Makefile
index aecd2cff462b..e1ec50359dff 100644
--- a/drivers/net/wireless/intel/ipw2x00/Makefile
+++ b/drivers/net/wireless/intel/ipw2x00/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Intel Centrino wireless drivers
#
diff --git a/drivers/net/wireless/intel/iwlegacy/Makefile b/drivers/net/wireless/intel/iwlegacy/Makefile
index c826a6b985bb..c5ad0453b334 100644
--- a/drivers/net/wireless/intel/iwlegacy/Makefile
+++ b/drivers/net/wireless/intel/iwlegacy/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_IWLEGACY) += iwlegacy.o
iwlegacy-objs := common.o
iwlegacy-$(CONFIG_IWLEGACY_DEBUGFS) += debug.o
diff --git a/drivers/net/wireless/intel/iwlwifi/Makefile b/drivers/net/wireless/intel/iwlwifi/Makefile
index 35a32a3ec882..595b26b66bfc 100644
--- a/drivers/net/wireless/intel/iwlwifi/Makefile
+++ b/drivers/net/wireless/intel/iwlwifi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# common
obj-$(CONFIG_IWLWIFI) += iwlwifi.o
iwlwifi-objs += iwl-io.o
diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/7000.c b/drivers/net/wireless/intel/iwlwifi/cfg/7000.c
index 45e2efc70d19..ce741beec1fc 100644
--- a/drivers/net/wireless/intel/iwlwifi/cfg/7000.c
+++ b/drivers/net/wireless/intel/iwlwifi/cfg/7000.c
@@ -309,6 +309,7 @@ const struct iwl_cfg iwl3168_2ac_cfg = {
.nvm_calib_ver = IWL3168_TX_POWER_VERSION,
.pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
.dccm_len = IWL7265_DCCM_LEN,
+ .nvm_type = IWL_NVM_SDP,
};
const struct iwl_cfg iwl7265_2ac_cfg = {
diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/8000.c b/drivers/net/wireless/intel/iwlwifi/cfg/8000.c
index 2e6c52664cee..c2a5936ccede 100644
--- a/drivers/net/wireless/intel/iwlwifi/cfg/8000.c
+++ b/drivers/net/wireless/intel/iwlwifi/cfg/8000.c
@@ -164,7 +164,7 @@ static const struct iwl_tt_params iwl8000_tt_params = {
.default_nvm_file_C_step = DEFAULT_NVM_FILE_FAMILY_8000C, \
.thermal_params = &iwl8000_tt_params, \
.apmg_not_supported = true, \
- .ext_nvm = true, \
+ .nvm_type = IWL_NVM_EXT, \
.dbgc_supported = true
#define IWL_DEVICE_8000 \
diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c
index 2babe0a1f18b..e8b5ff42f5a8 100644
--- a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c
+++ b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c
@@ -148,7 +148,7 @@ static const struct iwl_tt_params iwl9000_tt_params = {
.vht_mu_mimo_supported = true, \
.mac_addr_from_csr = true, \
.rf_id = true, \
- .ext_nvm = true, \
+ .nvm_type = IWL_NVM_EXT, \
.dbgc_supported = true
const struct iwl_cfg iwl9160_2ac_cfg = {
diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/a000.c b/drivers/net/wireless/intel/iwlwifi/cfg/a000.c
index 76ba1f8bc72f..a440140ed8dd 100644
--- a/drivers/net/wireless/intel/iwlwifi/cfg/a000.c
+++ b/drivers/net/wireless/intel/iwlwifi/cfg/a000.c
@@ -133,7 +133,7 @@ static const struct iwl_ht_params iwl_a000_ht_params = {
.use_tfh = true, \
.rf_id = true, \
.gen2 = true, \
- .ext_nvm = true, \
+ .nvm_type = IWL_NVM_EXT, \
.dbgc_supported = true
const struct iwl_cfg iwla000_2ac_cfg_hr = {
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/Makefile b/drivers/net/wireless/intel/iwlwifi/dvm/Makefile
index b256a354953a..702d42b2d452 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/Makefile
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# DVM
obj-$(CONFIG_IWLDVM) += iwldvm.o
iwldvm-objs += main.o rs.o mac80211.o ucode.o tx.o
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h b/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h
index 00bc7a25dece..3fd07bc80f54 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h
+++ b/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h
@@ -108,6 +108,7 @@ enum iwl_nvm_access_target {
* @NVM_SECTION_TYPE_REGULATORY: regulatory section
* @NVM_SECTION_TYPE_CALIBRATION: calibration section
* @NVM_SECTION_TYPE_PRODUCTION: production section
+ * @NVM_SECTION_TYPE_REGULATORY_SDP: regulatory section used by 3168 series
* @NVM_SECTION_TYPE_MAC_OVERRIDE: MAC override section
* @NVM_SECTION_TYPE_PHY_SKU: PHY SKU section
* @NVM_MAX_NUM_SECTIONS: number of sections
@@ -117,6 +118,7 @@ enum iwl_nvm_section_type {
NVM_SECTION_TYPE_REGULATORY = 3,
NVM_SECTION_TYPE_CALIBRATION = 4,
NVM_SECTION_TYPE_PRODUCTION = 5,
+ NVM_SECTION_TYPE_REGULATORY_SDP = 8,
NVM_SECTION_TYPE_MAC_OVERRIDE = 11,
NVM_SECTION_TYPE_PHY_SKU = 12,
NVM_MAX_NUM_SECTIONS = 13,
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
index 6afc7a799892..f5dd7d83cd0a 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
+++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
@@ -1086,7 +1086,7 @@ void iwl_fw_error_dump_wk(struct work_struct *work)
if (fwrt->trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) {
/* stop recording */
- iwl_set_bits_prph(fwrt->trans, MON_BUFF_SAMPLE_CTL, 0x100);
+ iwl_fw_dbg_stop_recording(fwrt);
iwl_fw_error_dump(fwrt);
@@ -1104,10 +1104,7 @@ void iwl_fw_error_dump_wk(struct work_struct *work)
u32 in_sample = iwl_read_prph(fwrt->trans, DBGC_IN_SAMPLE);
u32 out_ctrl = iwl_read_prph(fwrt->trans, DBGC_OUT_CTRL);
- /* stop recording */
- iwl_write_prph(fwrt->trans, DBGC_IN_SAMPLE, 0);
- udelay(100);
- iwl_write_prph(fwrt->trans, DBGC_OUT_CTRL, 0);
+ iwl_fw_dbg_stop_recording(fwrt);
/* wait before we collect the data till the DBGC stop */
udelay(500);
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.h b/drivers/net/wireless/intel/iwlwifi/fw/dbg.h
index 0f810ea89d31..9c889a32fe24 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.h
+++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.h
@@ -68,6 +68,8 @@
#include <linux/workqueue.h>
#include <net/cfg80211.h>
#include "runtime.h"
+#include "iwl-prph.h"
+#include "iwl-io.h"
#include "file.h"
#include "error-dump.h"
@@ -194,8 +196,21 @@ _iwl_fw_dbg_trigger_simple_stop(struct iwl_fw_runtime *fwrt,
iwl_fw_dbg_get_trigger((fwrt)->fw,\
(trig)))
+static inline void iwl_fw_dbg_stop_recording(struct iwl_fw_runtime *fwrt)
+{
+ if (fwrt->trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) {
+ iwl_set_bits_prph(fwrt->trans, MON_BUFF_SAMPLE_CTL, 0x100);
+ } else {
+ iwl_write_prph(fwrt->trans, DBGC_IN_SAMPLE, 0);
+ udelay(100);
+ iwl_write_prph(fwrt->trans, DBGC_OUT_CTRL, 0);
+ }
+}
+
static inline void iwl_fw_dump_conf_clear(struct iwl_fw_runtime *fwrt)
{
+ iwl_fw_dbg_stop_recording(fwrt);
+
fwrt->dump.conf = FW_DBG_INVALID;
}
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h
index 3e057b539d5b..71cb1ecde0f7 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h
@@ -108,6 +108,18 @@ enum iwl_led_mode {
IWL_LED_DISABLE,
};
+/**
+ * enum iwl_nvm_type - nvm formats
+ * @IWL_NVM: the regular format
+ * @IWL_NVM_EXT: extended NVM format
+ * @IWL_NVM_SDP: NVM format used by 3168 series
+ */
+enum iwl_nvm_type {
+ IWL_NVM,
+ IWL_NVM_EXT,
+ IWL_NVM_SDP,
+};
+
/*
* This is the threshold value of plcp error rate per 100mSecs. It is
* used to set and check for the validity of plcp_delta.
@@ -320,7 +332,7 @@ struct iwl_pwr_tx_backoff {
* @integrated: discrete or integrated
* @gen2: a000 and on transport operation
* @cdb: CDB support
- * @ext_nvm: extended NVM format
+ * @nvm_type: see &enum iwl_nvm_type
*
* We enable the driver to be backward compatible wrt. hardware features.
* API differences in uCode shouldn't be handled here but through TLVs
@@ -342,6 +354,7 @@ struct iwl_cfg {
const struct iwl_tt_params *thermal_params;
enum iwl_device_family device_family;
enum iwl_led_mode led_mode;
+ enum iwl_nvm_type nvm_type;
u32 max_data_size;
u32 max_inst_size;
netdev_features_t features;
@@ -369,7 +382,6 @@ struct iwl_cfg {
use_tfh:1,
gen2:1,
cdb:1,
- ext_nvm:1,
dbgc_supported:1;
u8 valid_tx_ant;
u8 valid_rx_ant;
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
index 3014beef4873..c3a5d8ccc95e 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
@@ -77,7 +77,7 @@
#include "iwl-csr.h"
/* NVM offsets (in words) definitions */
-enum wkp_nvm_offsets {
+enum nvm_offsets {
/* NVM HW-Section offset (in words) definitions */
SUBSYSTEM_ID = 0x0A,
HW_ADDR = 0x15,
@@ -92,7 +92,10 @@ enum wkp_nvm_offsets {
/* NVM calibration section offset (in words) definitions */
NVM_CALIB_SECTION = 0x2B8,
- XTAL_CALIB = 0x316 - NVM_CALIB_SECTION
+ XTAL_CALIB = 0x316 - NVM_CALIB_SECTION,
+
+ /* NVM REGULATORY -Section offset (in words) definitions */
+ NVM_CHANNELS_SDP = 0,
};
enum ext_nvm_offsets {
@@ -206,8 +209,36 @@ enum iwl_nvm_channel_flags {
NVM_CHANNEL_DC_HIGH = BIT(12),
};
+static inline void iwl_nvm_print_channel_flags(struct device *dev, u32 level,
+ int chan, u16 flags)
+{
#define CHECK_AND_PRINT_I(x) \
- ((ch_flags & NVM_CHANNEL_##x) ? # x " " : "")
+ ((flags & NVM_CHANNEL_##x) ? " " #x : "")
+
+ if (!(flags & NVM_CHANNEL_VALID)) {
+ IWL_DEBUG_DEV(dev, level, "Ch. %d: 0x%x: No traffic\n",
+ chan, flags);
+ return;
+ }
+
+ /* Note: already can print up to 101 characters, 110 is the limit! */
+ IWL_DEBUG_DEV(dev, level,
+ "Ch. %d: 0x%x:%s%s%s%s%s%s%s%s%s%s%s%s\n",
+ chan, flags,
+ CHECK_AND_PRINT_I(VALID),
+ CHECK_AND_PRINT_I(IBSS),
+ CHECK_AND_PRINT_I(ACTIVE),
+ CHECK_AND_PRINT_I(RADAR),
+ CHECK_AND_PRINT_I(INDOOR_ONLY),
+ CHECK_AND_PRINT_I(GO_CONCURRENT),
+ CHECK_AND_PRINT_I(UNIFORM),
+ CHECK_AND_PRINT_I(20MHZ),
+ CHECK_AND_PRINT_I(40MHZ),
+ CHECK_AND_PRINT_I(80MHZ),
+ CHECK_AND_PRINT_I(160MHZ),
+ CHECK_AND_PRINT_I(DC_HIGH));
+#undef CHECK_AND_PRINT_I
+}
static u32 iwl_get_channel_flags(u8 ch_num, int ch_idx, bool is_5ghz,
u16 nvm_flags, const struct iwl_cfg *cfg)
@@ -215,7 +246,7 @@ static u32 iwl_get_channel_flags(u8 ch_num, int ch_idx, bool is_5ghz,
u32 flags = IEEE80211_CHAN_NO_HT40;
u32 last_5ghz_ht = LAST_5GHZ_HT;
- if (cfg->ext_nvm)
+ if (cfg->nvm_type == IWL_NVM_EXT)
last_5ghz_ht = LAST_5GHZ_HT_FAMILY_8000;
if (!is_5ghz && (nvm_flags & NVM_CHANNEL_40MHZ)) {
@@ -268,7 +299,7 @@ static int iwl_init_channel_map(struct device *dev, const struct iwl_cfg *cfg,
int num_of_ch, num_2ghz_channels;
const u8 *nvm_chan;
- if (!cfg->ext_nvm) {
+ if (cfg->nvm_type != IWL_NVM_EXT) {
num_of_ch = IWL_NUM_CHANNELS;
nvm_chan = &iwl_nvm_channels[0];
num_2ghz_channels = NUM_2GHZ_CHANNELS;
@@ -302,12 +333,8 @@ static int iwl_init_channel_map(struct device *dev, const struct iwl_cfg *cfg,
* supported, hence we still want to add them to
* the list of supported channels to cfg80211.
*/
- IWL_DEBUG_EEPROM(dev,
- "Ch. %d Flags %x [%sGHz] - No traffic\n",
- nvm_chan[ch_idx],
- ch_flags,
- (ch_idx >= num_2ghz_channels) ?
- "5.2" : "2.4");
+ iwl_nvm_print_channel_flags(dev, IWL_DL_EEPROM,
+ nvm_chan[ch_idx], ch_flags);
continue;
}
@@ -337,27 +364,10 @@ static int iwl_init_channel_map(struct device *dev, const struct iwl_cfg *cfg,
else
channel->flags = 0;
- IWL_DEBUG_EEPROM(dev,
- "Ch. %d [%sGHz] flags 0x%x %s%s%s%s%s%s%s%s%s%s%s%s(%ddBm): Ad-Hoc %ssupported\n",
- channel->hw_value,
- is_5ghz ? "5.2" : "2.4",
- ch_flags,
- CHECK_AND_PRINT_I(VALID),
- CHECK_AND_PRINT_I(IBSS),
- CHECK_AND_PRINT_I(ACTIVE),
- CHECK_AND_PRINT_I(RADAR),
- CHECK_AND_PRINT_I(INDOOR_ONLY),
- CHECK_AND_PRINT_I(GO_CONCURRENT),
- CHECK_AND_PRINT_I(UNIFORM),
- CHECK_AND_PRINT_I(20MHZ),
- CHECK_AND_PRINT_I(40MHZ),
- CHECK_AND_PRINT_I(80MHZ),
- CHECK_AND_PRINT_I(160MHZ),
- CHECK_AND_PRINT_I(DC_HIGH),
- channel->max_power,
- ((ch_flags & NVM_CHANNEL_IBSS) &&
- !(ch_flags & NVM_CHANNEL_RADAR))
- ? "" : "not ");
+ iwl_nvm_print_channel_flags(dev, IWL_DL_EEPROM,
+ channel->hw_value, ch_flags);
+ IWL_DEBUG_EEPROM(dev, "Ch. %d: %ddBm\n",
+ channel->hw_value, channel->max_power);
}
return n_channels;
@@ -484,7 +494,7 @@ IWL_EXPORT_SYMBOL(iwl_init_sbands);
static int iwl_get_sku(const struct iwl_cfg *cfg, const __le16 *nvm_sw,
const __le16 *phy_sku)
{
- if (!cfg->ext_nvm)
+ if (cfg->nvm_type != IWL_NVM_EXT)
return le16_to_cpup(nvm_sw + SKU);
return le32_to_cpup((__le32 *)(phy_sku + SKU_FAMILY_8000));
@@ -492,7 +502,7 @@ static int iwl_get_sku(const struct iwl_cfg *cfg, const __le16 *nvm_sw,
static int iwl_get_nvm_version(const struct iwl_cfg *cfg, const __le16 *nvm_sw)
{
- if (!cfg->ext_nvm)
+ if (cfg->nvm_type != IWL_NVM_EXT)
return le16_to_cpup(nvm_sw + NVM_VERSION);
else
return le32_to_cpup((__le32 *)(nvm_sw +
@@ -502,7 +512,7 @@ static int iwl_get_nvm_version(const struct iwl_cfg *cfg, const __le16 *nvm_sw)
static int iwl_get_radio_cfg(const struct iwl_cfg *cfg, const __le16 *nvm_sw,
const __le16 *phy_sku)
{
- if (!cfg->ext_nvm)
+ if (cfg->nvm_type != IWL_NVM_EXT)
return le16_to_cpup(nvm_sw + RADIO_CFG);
return le32_to_cpup((__le32 *)(phy_sku + RADIO_CFG_FAMILY_EXT_NVM));
@@ -513,7 +523,7 @@ static int iwl_get_n_hw_addrs(const struct iwl_cfg *cfg, const __le16 *nvm_sw)
{
int n_hw_addr;
- if (!cfg->ext_nvm)
+ if (cfg->nvm_type != IWL_NVM_EXT)
return le16_to_cpup(nvm_sw + N_HW_ADDRS);
n_hw_addr = le32_to_cpup((__le32 *)(nvm_sw + N_HW_ADDRS_FAMILY_8000));
@@ -525,7 +535,7 @@ static void iwl_set_radio_cfg(const struct iwl_cfg *cfg,
struct iwl_nvm_data *data,
u32 radio_cfg)
{
- if (!cfg->ext_nvm) {
+ if (cfg->nvm_type != IWL_NVM_EXT) {
data->radio_cfg_type = NVM_RF_CFG_TYPE_MSK(radio_cfg);
data->radio_cfg_step = NVM_RF_CFG_STEP_MSK(radio_cfg);
data->radio_cfg_dash = NVM_RF_CFG_DASH_MSK(radio_cfg);
@@ -634,7 +644,7 @@ static int iwl_set_hw_address(struct iwl_trans *trans,
{
if (cfg->mac_addr_from_csr) {
iwl_set_hw_address_from_csr(trans, data);
- } else if (!cfg->ext_nvm) {
+ } else if (cfg->nvm_type != IWL_NVM_EXT) {
const u8 *hw_addr = (const u8 *)(nvm_hw + HW_ADDR);
/* The byte order is little endian 16 bit, meaning 214365 */
@@ -706,7 +716,7 @@ iwl_parse_nvm_data(struct iwl_trans *trans, const struct iwl_cfg *cfg,
u16 lar_config;
const __le16 *ch_section;
- if (!cfg->ext_nvm)
+ if (cfg->nvm_type != IWL_NVM_EXT)
data = kzalloc(sizeof(*data) +
sizeof(struct ieee80211_channel) *
IWL_NUM_CHANNELS,
@@ -740,7 +750,7 @@ iwl_parse_nvm_data(struct iwl_trans *trans, const struct iwl_cfg *cfg,
data->n_hw_addrs = iwl_get_n_hw_addrs(cfg, nvm_sw);
- if (!cfg->ext_nvm) {
+ if (cfg->nvm_type != IWL_NVM_EXT) {
/* Checking for required sections */
if (!nvm_calib) {
IWL_ERR(trans,
@@ -748,11 +758,15 @@ iwl_parse_nvm_data(struct iwl_trans *trans, const struct iwl_cfg *cfg,
kfree(data);
return NULL;
}
+
+ ch_section = cfg->nvm_type == IWL_NVM_SDP ?
+ &regulatory[NVM_CHANNELS_SDP] :
+ &nvm_sw[NVM_CHANNELS];
+
/* in family 8000 Xtal calibration values moved to OTP */
data->xtal_calib[0] = *(nvm_calib + XTAL_CALIB);
data->xtal_calib[1] = *(nvm_calib + XTAL_CALIB + 1);
lar_enabled = true;
- ch_section = &nvm_sw[NVM_CHANNELS];
} else {
u16 lar_offset = data->nvm_version < 0xE39 ?
NVM_LAR_OFFSET_OLD :
@@ -786,7 +800,7 @@ static u32 iwl_nvm_get_regdom_bw_flags(const u8 *nvm_chan,
u32 flags = NL80211_RRF_NO_HT40;
u32 last_5ghz_ht = LAST_5GHZ_HT;
- if (cfg->ext_nvm)
+ if (cfg->nvm_type == IWL_NVM_EXT)
last_5ghz_ht = LAST_5GHZ_HT_FAMILY_8000;
if (ch_idx < NUM_2GHZ_CHANNELS &&
@@ -834,7 +848,7 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg,
int ch_idx;
u16 ch_flags;
u32 reg_rule_flags, prev_reg_rule_flags = 0;
- const u8 *nvm_chan = cfg->ext_nvm ?
+ const u8 *nvm_chan = cfg->nvm_type == IWL_NVM_EXT ?
iwl_ext_nvm_channels : iwl_nvm_channels;
struct ieee80211_regdomain *regd;
int size_of_regd;
@@ -843,7 +857,7 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg,
int center_freq, prev_center_freq = 0;
int valid_rules = 0;
bool new_rule;
- int max_num_ch = cfg->ext_nvm ?
+ int max_num_ch = cfg->nvm_type == IWL_NVM_EXT ?
IWL_NUM_CHANNELS_EXT : IWL_NUM_CHANNELS;
if (WARN_ON_ONCE(num_of_ch > NL80211_MAX_SUPP_REG_RULES))
@@ -873,12 +887,8 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg,
new_rule = false;
if (!(ch_flags & NVM_CHANNEL_VALID)) {
- IWL_DEBUG_DEV(dev, IWL_DL_LAR,
- "Ch. %d Flags %x [%sGHz] - No traffic\n",
- nvm_chan[ch_idx],
- ch_flags,
- (ch_idx >= NUM_2GHZ_CHANNELS) ?
- "5.2" : "2.4");
+ iwl_nvm_print_channel_flags(dev, IWL_DL_LAR,
+ nvm_chan[ch_idx], ch_flags);
continue;
}
@@ -914,31 +924,8 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg,
prev_center_freq = center_freq;
prev_reg_rule_flags = reg_rule_flags;
- IWL_DEBUG_DEV(dev, IWL_DL_LAR,
- "Ch. %d [%sGHz] %s%s%s%s%s%s%s%s%s%s%s%s(0x%02x)\n",
- center_freq,
- band == NL80211_BAND_5GHZ ? "5.2" : "2.4",
- CHECK_AND_PRINT_I(VALID),
- CHECK_AND_PRINT_I(IBSS),
- CHECK_AND_PRINT_I(ACTIVE),
- CHECK_AND_PRINT_I(RADAR),
- CHECK_AND_PRINT_I(INDOOR_ONLY),
- CHECK_AND_PRINT_I(GO_CONCURRENT),
- CHECK_AND_PRINT_I(UNIFORM),
- CHECK_AND_PRINT_I(20MHZ),
- CHECK_AND_PRINT_I(40MHZ),
- CHECK_AND_PRINT_I(80MHZ),
- CHECK_AND_PRINT_I(160MHZ),
- CHECK_AND_PRINT_I(DC_HIGH),
- ch_flags);
- IWL_DEBUG_DEV(dev, IWL_DL_LAR,
- "Ch. %d [%sGHz] reg_flags 0x%x: %s\n",
- center_freq,
- band == NL80211_BAND_5GHZ ? "5.2" : "2.4",
- reg_rule_flags,
- ((ch_flags & NVM_CHANNEL_ACTIVE) &&
- !(ch_flags & NVM_CHANNEL_RADAR))
- ? "Ad-Hoc" : "");
+ iwl_nvm_print_channel_flags(dev, IWL_DL_LAR,
+ nvm_chan[ch_idx], ch_flags);
}
regd->n_reg_rules = valid_rules;
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/Makefile b/drivers/net/wireless/intel/iwlwifi/mvm/Makefile
index 00e6737dda72..a47635c32c11 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/Makefile
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_IWLMVM) += iwlmvm.o
iwlmvm-y += fw.o mac80211.o nvm.o ops.o phy-ctxt.o mac-ctxt.o
iwlmvm-y += utils.o rx.o rxmq.o tx.o binding.o quota.o sta.o sf.o
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
index 5de19ea10575..b205a7bfb828 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
@@ -2167,7 +2167,7 @@ out:
* 1. We are not using a unified image
* 2. We are using a unified image but had an error while exiting D3
*/
- set_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status);
+ set_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status);
set_bit(IWL_MVM_STATUS_D3_RECONFIG, &mvm->status);
/*
* When switching images we return 1, which causes mac80211
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
index 15f2d826bb4b..a9ac872226fd 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
@@ -1077,6 +1077,7 @@ static void iwl_mvm_restart_cleanup(struct iwl_mvm *mvm)
mvm->vif_count = 0;
mvm->rx_ba_sessions = 0;
mvm->fwrt.dump.conf = FW_DBG_INVALID;
+ mvm->monitor_on = false;
/* keep statistics ticking */
iwl_mvm_accu_radio_stats(mvm);
@@ -1437,6 +1438,9 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,
mvm->p2p_device_vif = vif;
}
+ if (vif->type == NL80211_IFTYPE_MONITOR)
+ mvm->monitor_on = true;
+
iwl_mvm_vif_dbgfs_register(mvm, vif);
goto out_unlock;
@@ -1526,6 +1530,9 @@ static void iwl_mvm_mac_remove_interface(struct ieee80211_hw *hw,
iwl_mvm_power_update_mac(mvm);
iwl_mvm_mac_ctxt_remove(mvm, vif);
+ if (vif->type == NL80211_IFTYPE_MONITOR)
+ mvm->monitor_on = false;
+
out_release:
mutex_unlock(&mvm->mutex);
}
@@ -1546,6 +1553,11 @@ static void iwl_mvm_mc_iface_iterator(void *_data, u8 *mac,
struct iwl_mvm_mc_iter_data *data = _data;
struct iwl_mvm *mvm = data->mvm;
struct iwl_mcast_filter_cmd *cmd = mvm->mcast_filter_cmd;
+ struct iwl_host_cmd hcmd = {
+ .id = MCAST_FILTER_CMD,
+ .flags = CMD_ASYNC,
+ .dataflags[0] = IWL_HCMD_DFL_NOCOPY,
+ };
int ret, len;
/* if we don't have free ports, mcast frames will be dropped */
@@ -1560,7 +1572,10 @@ static void iwl_mvm_mc_iface_iterator(void *_data, u8 *mac,
memcpy(cmd->bssid, vif->bss_conf.bssid, ETH_ALEN);
len = roundup(sizeof(*cmd) + cmd->count * ETH_ALEN, 4);
- ret = iwl_mvm_send_cmd_pdu(mvm, MCAST_FILTER_CMD, CMD_ASYNC, len, cmd);
+ hcmd.len[0] = len;
+ hcmd.data[0] = cmd;
+
+ ret = iwl_mvm_send_cmd(mvm, &hcmd);
if (ret)
IWL_ERR(mvm, "mcast filter cmd error. ret=%d\n", ret);
}
@@ -1635,6 +1650,12 @@ static void iwl_mvm_configure_filter(struct ieee80211_hw *hw,
if (!cmd)
goto out;
+ if (changed_flags & FIF_ALLMULTI)
+ cmd->pass_all = !!(*total_flags & FIF_ALLMULTI);
+
+ if (cmd->pass_all)
+ cmd->count = 0;
+
iwl_mvm_recalc_multicast(mvm);
out:
mutex_unlock(&mvm->mutex);
@@ -2563,7 +2584,7 @@ static void iwl_mvm_purge_deferred_tx_frames(struct iwl_mvm *mvm,
* queues, so we should never get a second deferred
* frame for the RA/TID.
*/
- iwl_mvm_start_mac_queues(mvm, info->hw_queue);
+ iwl_mvm_start_mac_queues(mvm, BIT(info->hw_queue));
ieee80211_free_txskb(mvm->hw, skb);
}
}
@@ -3975,6 +3996,43 @@ out_unlock:
return ret;
}
+static void iwl_mvm_flush_no_vif(struct iwl_mvm *mvm, u32 queues, bool drop)
+{
+ if (drop) {
+ if (iwl_mvm_has_new_tx_api(mvm))
+ /* TODO new tx api */
+ WARN_ONCE(1,
+ "Need to implement flush TX queue\n");
+ else
+ iwl_mvm_flush_tx_path(mvm,
+ iwl_mvm_flushable_queues(mvm) & queues,
+ 0);
+ } else {
+ if (iwl_mvm_has_new_tx_api(mvm)) {
+ struct ieee80211_sta *sta;
+ int i;
+
+ mutex_lock(&mvm->mutex);
+
+ for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) {
+ sta = rcu_dereference_protected(
+ mvm->fw_id_to_mac_id[i],
+ lockdep_is_held(&mvm->mutex));
+ if (IS_ERR_OR_NULL(sta))
+ continue;
+
+ iwl_mvm_wait_sta_queues_empty(mvm,
+ iwl_mvm_sta_from_mac80211(sta));
+ }
+
+ mutex_unlock(&mvm->mutex);
+ } else {
+ iwl_trans_wait_tx_queues_empty(mvm->trans,
+ queues);
+ }
+ }
+}
+
static void iwl_mvm_mac_flush(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, u32 queues, bool drop)
{
@@ -3985,7 +4043,12 @@ static void iwl_mvm_mac_flush(struct ieee80211_hw *hw,
int i;
u32 msk = 0;
- if (!vif || vif->type != NL80211_IFTYPE_STATION)
+ if (!vif) {
+ iwl_mvm_flush_no_vif(mvm, queues, drop);
+ return;
+ }
+
+ if (vif->type != NL80211_IFTYPE_STATION)
return;
/* Make sure we're done with the deferred traffic before flushing */
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
index 83303bac0e4b..949e63418299 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
@@ -1015,6 +1015,9 @@ struct iwl_mvm {
bool drop_bcn_ap_mode;
struct delayed_work cs_tx_unblock_dwork;
+
+ /* does a monitor vif exist (only one can exist hence bool) */
+ bool monitor_on;
#ifdef CONFIG_ACPI
struct iwl_mvm_sar_profile sar_profiles[IWL_MVM_SAR_PROFILE_NUM];
struct iwl_mvm_geo_profile geo_profiles[IWL_NUM_GEO_PROFILES];
@@ -1159,7 +1162,7 @@ static inline bool iwl_mvm_is_lar_supported(struct iwl_mvm *mvm)
* Enable LAR only if it is supported by the FW (TLV) &&
* enabled in the NVM
*/
- if (mvm->cfg->ext_nvm)
+ if (mvm->cfg->nvm_type == IWL_NVM_EXT)
return nvm_lar && tlv_lar;
else
return tlv_lar;
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c b/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
index 422aa6be9932..fb25b6f29323 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
@@ -295,18 +295,24 @@ iwl_parse_nvm_sections(struct iwl_mvm *mvm)
const __be16 *hw;
const __le16 *sw, *calib, *regulatory, *mac_override, *phy_sku;
bool lar_enabled;
+ int regulatory_type;
/* Checking for required sections */
- if (!mvm->trans->cfg->ext_nvm) {
+ if (mvm->trans->cfg->nvm_type != IWL_NVM_EXT) {
if (!mvm->nvm_sections[NVM_SECTION_TYPE_SW].data ||
!mvm->nvm_sections[mvm->cfg->nvm_hw_section_num].data) {
IWL_ERR(mvm, "Can't parse empty OTP/NVM sections\n");
return NULL;
}
} else {
+ if (mvm->trans->cfg->nvm_type == IWL_NVM_SDP)
+ regulatory_type = NVM_SECTION_TYPE_REGULATORY_SDP;
+ else
+ regulatory_type = NVM_SECTION_TYPE_REGULATORY;
+
/* SW and REGULATORY sections are mandatory */
if (!mvm->nvm_sections[NVM_SECTION_TYPE_SW].data ||
- !mvm->nvm_sections[NVM_SECTION_TYPE_REGULATORY].data) {
+ !mvm->nvm_sections[regulatory_type].data) {
IWL_ERR(mvm,
"Can't parse empty family 8000 OTP/NVM sections\n");
return NULL;
@@ -330,11 +336,14 @@ iwl_parse_nvm_sections(struct iwl_mvm *mvm)
hw = (const __be16 *)sections[mvm->cfg->nvm_hw_section_num].data;
sw = (const __le16 *)sections[NVM_SECTION_TYPE_SW].data;
calib = (const __le16 *)sections[NVM_SECTION_TYPE_CALIBRATION].data;
- regulatory = (const __le16 *)sections[NVM_SECTION_TYPE_REGULATORY].data;
mac_override =
(const __le16 *)sections[NVM_SECTION_TYPE_MAC_OVERRIDE].data;
phy_sku = (const __le16 *)sections[NVM_SECTION_TYPE_PHY_SKU].data;
+ regulatory = mvm->trans->cfg->nvm_type == IWL_NVM_SDP ?
+ (const __le16 *)sections[NVM_SECTION_TYPE_REGULATORY_SDP].data :
+ (const __le16 *)sections[NVM_SECTION_TYPE_REGULATORY].data;
+
lar_enabled = !iwlwifi_mod_params.lar_disable &&
fw_has_capa(&mvm->fw->ucode_capa,
IWL_UCODE_TLV_CAPA_LAR_SUPPORT);
@@ -394,7 +403,7 @@ int iwl_mvm_read_external_nvm(struct iwl_mvm *mvm)
IWL_DEBUG_EEPROM(mvm->trans->dev, "Read from external NVM\n");
/* Maximal size depends on NVM version */
- if (!mvm->trans->cfg->ext_nvm)
+ if (mvm->trans->cfg->nvm_type != IWL_NVM_EXT)
max_section_size = IWL_MAX_NVM_SECTION_SIZE;
else
max_section_size = IWL_MAX_EXT_NVM_SECTION_SIZE;
@@ -465,7 +474,7 @@ int iwl_mvm_read_external_nvm(struct iwl_mvm *mvm)
break;
}
- if (!mvm->trans->cfg->ext_nvm) {
+ if (mvm->trans->cfg->nvm_type != IWL_NVM_EXT) {
section_size =
2 * NVM_WORD1_LEN(le16_to_cpu(file_sec->word1));
section_id = NVM_WORD2_ID(le16_to_cpu(file_sec->word2));
@@ -740,7 +749,7 @@ int iwl_mvm_init_mcc(struct iwl_mvm *mvm)
struct ieee80211_regdomain *regd;
char mcc[3];
- if (mvm->cfg->ext_nvm) {
+ if (mvm->cfg->nvm_type == IWL_NVM_EXT) {
tlv_lar = fw_has_capa(&mvm->fw->ucode_capa,
IWL_UCODE_TLV_CAPA_LAR_SUPPORT);
nvm_lar = mvm->nvm_data->lar_enabled;
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
index ba7bd049d3d4..0fe723ca844e 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
@@ -661,7 +661,8 @@ static void rs_tl_turn_on_agg(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta,
(lq_sta->tx_agg_tid_en & BIT(tid)) &&
(tid_data->tx_count_last >= IWL_MVM_RS_AGG_START_THRESHOLD)) {
IWL_DEBUG_RATE(mvm, "try to aggregate tid %d\n", tid);
- rs_tl_turn_on_agg_for_tid(mvm, lq_sta, tid, sta);
+ if (rs_tl_turn_on_agg_for_tid(mvm, lq_sta, tid, sta) == 0)
+ tid_data->state = IWL_AGG_QUEUED;
}
}
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rx.c b/drivers/net/wireless/intel/iwlwifi/mvm/rx.c
index 184c749766f2..2d14a58cbdd7 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rx.c
@@ -244,7 +244,9 @@ static u32 iwl_mvm_set_mac80211_rx_flag(struct iwl_mvm *mvm,
return 0;
default:
- IWL_ERR(mvm, "Unhandled alg: 0x%x\n", rx_pkt_status);
+ /* Expected in monitor (not having the keys) */
+ if (!mvm->monitor_on)
+ IWL_ERR(mvm, "Unhandled alg: 0x%x\n", rx_pkt_status);
}
return 0;
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index 67ffd9774712..248699c2c4bf 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -277,7 +277,9 @@ static int iwl_mvm_rx_crypto(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr,
stats->flag |= RX_FLAG_DECRYPTED;
return 0;
default:
- IWL_ERR(mvm, "Unhandled alg: 0x%x\n", status);
+ /* Expected in monitor (not having the keys) */
+ if (!mvm->monitor_on)
+ IWL_ERR(mvm, "Unhandled alg: 0x%x\n", status);
}
return 0;
@@ -672,11 +674,12 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
* If there was a significant jump in the nssn - adjust.
* If the SN is smaller than the NSSN it might need to first go into
* the reorder buffer, in which case we just release up to it and the
- * rest of the function will take of storing it and releasing up to the
- * nssn
+ * rest of the function will take care of storing it and releasing up to
+ * the nssn
*/
if (!iwl_mvm_is_sn_less(nssn, buffer->head_sn + buffer->buf_size,
- buffer->buf_size)) {
+ buffer->buf_size) ||
+ !ieee80211_sn_less(sn, buffer->head_sn + buffer->buf_size)) {
u16 min_sn = ieee80211_sn_less(sn, nssn) ? sn : nssn;
iwl_mvm_release_frames(mvm, sta, napi, buffer, min_sn);
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
index 50983615dce6..774122fed454 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
@@ -555,7 +555,7 @@ static int iwl_mvm_lmac_scan_abort(struct iwl_mvm *mvm)
struct iwl_host_cmd cmd = {
.id = SCAN_OFFLOAD_ABORT_CMD,
};
- u32 status;
+ u32 status = CAN_ABORT_STATUS;
ret = iwl_mvm_send_cmd_status(mvm, &cmd, &status);
if (ret)
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
index 411a2055dc45..c4a343534c5e 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
@@ -1285,7 +1285,7 @@ static int iwl_mvm_add_int_sta_common(struct iwl_mvm *mvm,
{
struct iwl_mvm_add_sta_cmd cmd;
int ret;
- u32 status;
+ u32 status = ADD_STA_SUCCESS;
lockdep_assert_held(&mvm->mutex);
@@ -2385,8 +2385,10 @@ int iwl_mvm_sta_tx_agg_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
if (WARN_ON_ONCE(tid >= IWL_MAX_TID_COUNT))
return -EINVAL;
- if (mvmsta->tid_data[tid].state != IWL_AGG_OFF) {
- IWL_ERR(mvm, "Start AGG when state is not IWL_AGG_OFF %d!\n",
+ if (mvmsta->tid_data[tid].state != IWL_AGG_QUEUED &&
+ mvmsta->tid_data[tid].state != IWL_AGG_OFF) {
+ IWL_ERR(mvm,
+ "Start AGG when state is not IWL_AGG_QUEUED or IWL_AGG_OFF %d!\n",
mvmsta->tid_data[tid].state);
return -ENXIO;
}
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/sta.h b/drivers/net/wireless/intel/iwlwifi/mvm/sta.h
index d13893806513..aedabe101cf0 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/sta.h
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/sta.h
@@ -281,6 +281,7 @@ struct iwl_mvm_vif;
* These states relate to a specific RA / TID.
*
* @IWL_AGG_OFF: aggregation is not used
+ * @IWL_AGG_QUEUED: aggregation start work has been queued
* @IWL_AGG_STARTING: aggregation are starting (between start and oper)
* @IWL_AGG_ON: aggregation session is up
* @IWL_EMPTYING_HW_QUEUE_ADDBA: establishing a BA session - waiting for the
@@ -290,6 +291,7 @@ struct iwl_mvm_vif;
*/
enum iwl_mvm_agg_state {
IWL_AGG_OFF = 0,
+ IWL_AGG_QUEUED,
IWL_AGG_STARTING,
IWL_AGG_ON,
IWL_EMPTYING_HW_QUEUE_ADDBA,
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c
index 8876c2abc440..1232f63278eb 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c
@@ -529,6 +529,7 @@ int iwl_mvm_ctdp_command(struct iwl_mvm *mvm, u32 op, u32 state)
lockdep_assert_held(&mvm->mutex);
+ status = 0;
ret = iwl_mvm_send_cmd_pdu_status(mvm, WIDE_ID(PHY_OPS_GROUP,
CTDP_CONFIG_CMD),
sizeof(cmd), &cmd, &status);
@@ -630,7 +631,7 @@ static int iwl_mvm_tzone_get_temp(struct thermal_zone_device *device,
if (!iwl_mvm_firmware_running(mvm) ||
mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) {
- ret = -EIO;
+ ret = -ENODATA;
goto out;
}
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index 172b5e63d3fb..6f2e2af23219 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -564,8 +564,8 @@ static int iwl_mvm_get_ctrl_vif_queue(struct iwl_mvm *mvm,
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_ADHOC:
/*
- * Handle legacy hostapd as well, where station will be added
- * only just before sending the association response.
+ * Non-bufferable frames use the broadcast station, thus they
+ * use the probe queue.
* Also take care of the case where we send a deauth to a
* station that we don't have, or similarly an association
* response (with non-success status) for a station we can't
@@ -573,9 +573,9 @@ static int iwl_mvm_get_ctrl_vif_queue(struct iwl_mvm *mvm,
* Also, disassociate frames might happen, particular with
* reason 7 ("Class 3 frame received from nonassociated STA").
*/
- if (ieee80211_is_probe_resp(fc) || ieee80211_is_auth(fc) ||
- ieee80211_is_deauth(fc) || ieee80211_is_assoc_resp(fc) ||
- ieee80211_is_disassoc(fc))
+ if (ieee80211_is_mgmt(fc) &&
+ (!ieee80211_is_bufferable_mmpdu(fc) ||
+ ieee80211_is_deauth(fc) || ieee80211_is_disassoc(fc)))
return mvm->probe_queue;
if (info->hw_queue == info->control.vif->cab_queue)
return mvmvif->cab_queue;
diff --git a/drivers/net/wireless/intersil/hostap/Makefile b/drivers/net/wireless/intersil/hostap/Makefile
index b8e41a702c00..ae3bb73b2d99 100644
--- a/drivers/net/wireless/intersil/hostap/Makefile
+++ b/drivers/net/wireless/intersil/hostap/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
hostap-y := hostap_80211_rx.o hostap_80211_tx.o hostap_ap.o hostap_info.o \
hostap_ioctl.o hostap_main.o hostap_proc.o
obj-$(CONFIG_HOSTAP) += hostap.o
diff --git a/drivers/net/wireless/intersil/hostap/hostap.h b/drivers/net/wireless/intersil/hostap/hostap.h
index ce8721fbc10e..8130d29c7989 100644
--- a/drivers/net/wireless/intersil/hostap/hostap.h
+++ b/drivers/net/wireless/intersil/hostap/hostap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef HOSTAP_H
#define HOSTAP_H
diff --git a/drivers/net/wireless/intersil/hostap/hostap_80211.h b/drivers/net/wireless/intersil/hostap/hostap_80211.h
index ed98ce7c8f65..1452cf6ecb07 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_80211.h
+++ b/drivers/net/wireless/intersil/hostap/hostap_80211.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef HOSTAP_80211_H
#define HOSTAP_80211_H
diff --git a/drivers/net/wireless/intersil/hostap/hostap_80211_rx.c b/drivers/net/wireless/intersil/hostap/hostap_80211_rx.c
index 6d8b64ca1a63..61be822f90b5 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_80211_rx.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_80211_rx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/etherdevice.h>
#include <linux/slab.h>
#include <linux/export.h>
diff --git a/drivers/net/wireless/intersil/hostap/hostap_80211_tx.c b/drivers/net/wireless/intersil/hostap/hostap_80211_tx.c
index c1b10d5117ad..c47da06945c2 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_80211_tx.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_80211_tx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/slab.h>
#include <linux/export.h>
#include <linux/etherdevice.h>
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ap.c b/drivers/net/wireless/intersil/hostap/hostap_ap.c
index eb9cd6fa9c4d..1a8d8db80b05 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_ap.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_ap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Intersil Prism2 driver with Host AP (software access point) support
* Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ap.h b/drivers/net/wireless/intersil/hostap/hostap_ap.h
index 334e2d0b8e11..b7ac9e2f1a39 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_ap.h
+++ b/drivers/net/wireless/intersil/hostap/hostap_ap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef HOSTAP_AP_H
#define HOSTAP_AP_H
diff --git a/drivers/net/wireless/intersil/hostap/hostap_common.h b/drivers/net/wireless/intersil/hostap/hostap_common.h
index 4230102ac9e4..22543538239b 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_common.h
+++ b/drivers/net/wireless/intersil/hostap/hostap_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef HOSTAP_COMMON_H
#define HOSTAP_COMMON_H
diff --git a/drivers/net/wireless/intersil/hostap/hostap_config.h b/drivers/net/wireless/intersil/hostap/hostap_config.h
index 2c8f71f0ed45..3ebd55847fad 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_config.h
+++ b/drivers/net/wireless/intersil/hostap/hostap_config.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef HOSTAP_CONFIG_H
#define HOSTAP_CONFIG_H
diff --git a/drivers/net/wireless/intersil/hostap/hostap_download.c b/drivers/net/wireless/intersil/hostap/hostap_download.c
index 705fe668b969..4507614a7c5a 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_download.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_download.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
static int prism2_enable_aux_port(struct net_device *dev, int enable)
{
u16 val, reg;
diff --git a/drivers/net/wireless/intersil/hostap/hostap_info.c b/drivers/net/wireless/intersil/hostap/hostap_info.c
index 7635ac4f6679..de8a099a9386 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_info.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_info.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Host AP driver Info Frame processing (part of hostap.o module) */
#include <linux/if_arp.h>
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c
index ff153ce29539..c1bc0a6ef300 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* ioctl() (mostly Linux Wireless Extensions) routines for Host AP driver */
#include <linux/slab.h>
diff --git a/drivers/net/wireless/intersil/hostap/hostap_proc.c b/drivers/net/wireless/intersil/hostap/hostap_proc.c
index dd84557cf957..d234231bf532 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_proc.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* /proc routines for Host AP driver */
#include <linux/types.h>
diff --git a/drivers/net/wireless/intersil/hostap/hostap_wlan.h b/drivers/net/wireless/intersil/hostap/hostap_wlan.h
index 5352adb94d50..a8c4c1a8b29d 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_wlan.h
+++ b/drivers/net/wireless/intersil/hostap/hostap_wlan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef HOSTAP_WLAN_H
#define HOSTAP_WLAN_H
diff --git a/drivers/net/wireless/intersil/orinoco/Makefile b/drivers/net/wireless/intersil/orinoco/Makefile
index b7ecef820f76..0c29c56c88d6 100644
--- a/drivers/net/wireless/intersil/orinoco/Makefile
+++ b/drivers/net/wireless/intersil/orinoco/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the orinoco wireless device drivers.
#
diff --git a/drivers/net/wireless/intersil/p54/Makefile b/drivers/net/wireless/intersil/p54/Makefile
index b542e68f1781..d71651ff904e 100644
--- a/drivers/net/wireless/intersil/p54/Makefile
+++ b/drivers/net/wireless/intersil/p54/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
p54common-objs := eeprom.o fwio.o txrx.o main.o
p54common-$(CONFIG_P54_LEDS) += led.o
diff --git a/drivers/net/wireless/marvell/libertas/Makefile b/drivers/net/wireless/marvell/libertas/Makefile
index eac72f7bd341..41b9b440a542 100644
--- a/drivers/net/wireless/marvell/libertas/Makefile
+++ b/drivers/net/wireless/marvell/libertas/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
libertas-y += cfg.o
libertas-y += cmd.o
libertas-y += cmdresp.o
diff --git a/drivers/net/wireless/marvell/libertas/cfg.c b/drivers/net/wireless/marvell/libertas/cfg.c
index 71ba2c8d09b5..9f3a7b512673 100644
--- a/drivers/net/wireless/marvell/libertas/cfg.c
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Implement cfg80211 ("iw") support.
*
diff --git a/drivers/net/wireless/marvell/libertas/cfg.h b/drivers/net/wireless/marvell/libertas/cfg.h
index acccc2922401..0e48dc6d81d1 100644
--- a/drivers/net/wireless/marvell/libertas/cfg.h
+++ b/drivers/net/wireless/marvell/libertas/cfg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LBS_CFG80211_H__
#define __LBS_CFG80211_H__
diff --git a/drivers/net/wireless/marvell/libertas/cmd.h b/drivers/net/wireless/marvell/libertas/cmd.h
index 0c5444b02c64..80878561cb90 100644
--- a/drivers/net/wireless/marvell/libertas/cmd.h
+++ b/drivers/net/wireless/marvell/libertas/cmd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2007, Red Hat, Inc. */
#ifndef _LBS_CMD_H_
diff --git a/drivers/net/wireless/marvell/libertas/cmdresp.c b/drivers/net/wireless/marvell/libertas/cmdresp.c
index aaf01619de59..b73d08381398 100644
--- a/drivers/net/wireless/marvell/libertas/cmdresp.c
+++ b/drivers/net/wireless/marvell/libertas/cmdresp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file contains the handling of command
* responses as well as events generated by firmware.
diff --git a/drivers/net/wireless/marvell/libertas/debugfs.c b/drivers/net/wireless/marvell/libertas/debugfs.c
index faed1823c58e..c83f44f9ddf1 100644
--- a/drivers/net/wireless/marvell/libertas/debugfs.c
+++ b/drivers/net/wireless/marvell/libertas/debugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/dcache.h>
#include <linux/debugfs.h>
#include <linux/delay.h>
diff --git a/drivers/net/wireless/marvell/libertas/debugfs.h b/drivers/net/wireless/marvell/libertas/debugfs.h
index f2b9c7ffe0fd..6efd1a66dad7 100644
--- a/drivers/net/wireless/marvell/libertas/debugfs.h
+++ b/drivers/net/wireless/marvell/libertas/debugfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LBS_DEBUGFS_H_
#define _LBS_DEBUGFS_H_
diff --git a/drivers/net/wireless/marvell/libertas/decl.h b/drivers/net/wireless/marvell/libertas/decl.h
index 84a3aa7ac570..5d1e30e0c5db 100644
--- a/drivers/net/wireless/marvell/libertas/decl.h
+++ b/drivers/net/wireless/marvell/libertas/decl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains declaration referring to
diff --git a/drivers/net/wireless/marvell/libertas/defs.h b/drivers/net/wireless/marvell/libertas/defs.h
index d3221444e51c..58e2ead7b0cc 100644
--- a/drivers/net/wireless/marvell/libertas/defs.h
+++ b/drivers/net/wireless/marvell/libertas/defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header file contains global constant/enum definitions,
* global variable declaration.
diff --git a/drivers/net/wireless/marvell/libertas/dev.h b/drivers/net/wireless/marvell/libertas/dev.h
index edf710bc5e77..dd1ee1f0af48 100644
--- a/drivers/net/wireless/marvell/libertas/dev.h
+++ b/drivers/net/wireless/marvell/libertas/dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains definitions and data structures specific
* to Marvell 802.11 NIC. It contains the Device Information
diff --git a/drivers/net/wireless/marvell/libertas/ethtool.c b/drivers/net/wireless/marvell/libertas/ethtool.c
index 693868f16921..1bb8746a0b23 100644
--- a/drivers/net/wireless/marvell/libertas/ethtool.c
+++ b/drivers/net/wireless/marvell/libertas/ethtool.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/hardirq.h>
#include <linux/netdevice.h>
#include <linux/ethtool.h>
diff --git a/drivers/net/wireless/marvell/libertas/host.h b/drivers/net/wireless/marvell/libertas/host.h
index 96726f79a1dd..a4fc3f79bb17 100644
--- a/drivers/net/wireless/marvell/libertas/host.h
+++ b/drivers/net/wireless/marvell/libertas/host.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file function prototypes, data structure
* and definitions for all the host/station commands
diff --git a/drivers/net/wireless/marvell/libertas/if_usb.h b/drivers/net/wireless/marvell/libertas/if_usb.h
index 6e42eac331de..8dc14bec3e16 100644
--- a/drivers/net/wireless/marvell/libertas/if_usb.h
+++ b/drivers/net/wireless/marvell/libertas/if_usb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LBS_IF_USB_H
#define _LBS_IF_USB_H
diff --git a/drivers/net/wireless/marvell/libertas/mesh.c b/drivers/net/wireless/marvell/libertas/mesh.c
index 37ace5cb309d..b0cb16ef8d1d 100644
--- a/drivers/net/wireless/marvell/libertas/mesh.c
+++ b/drivers/net/wireless/marvell/libertas/mesh.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/delay.h>
diff --git a/drivers/net/wireless/marvell/libertas/mesh.h b/drivers/net/wireless/marvell/libertas/mesh.h
index 6603f341c874..dfe22c91aade 100644
--- a/drivers/net/wireless/marvell/libertas/mesh.h
+++ b/drivers/net/wireless/marvell/libertas/mesh.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Contains all definitions needed for the Libertas' MESH implementation.
*/
diff --git a/drivers/net/wireless/marvell/libertas/radiotap.h b/drivers/net/wireless/marvell/libertas/radiotap.h
index b3c8ea6d610e..1ed5608d353f 100644
--- a/drivers/net/wireless/marvell/libertas/radiotap.h
+++ b/drivers/net/wireless/marvell/libertas/radiotap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <net/ieee80211_radiotap.h>
struct tx_radiotap_hdr {
diff --git a/drivers/net/wireless/marvell/libertas/types.h b/drivers/net/wireless/marvell/libertas/types.h
index cf1d9b047ee6..cd4ceb6f885d 100644
--- a/drivers/net/wireless/marvell/libertas/types.h
+++ b/drivers/net/wireless/marvell/libertas/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header file contains definition for global types
*/
diff --git a/drivers/net/wireless/marvell/libertas_tf/deb_defs.h b/drivers/net/wireless/marvell/libertas_tf/deb_defs.h
index 4bd3dc5adf7c..37a98e228b46 100644
--- a/drivers/net/wireless/marvell/libertas_tf/deb_defs.h
+++ b/drivers/net/wireless/marvell/libertas_tf/deb_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/**
* This header file contains global constant/enum definitions,
* global variable declaration.
diff --git a/drivers/net/wireless/quantenna/qtnfmac/Makefile b/drivers/net/wireless/quantenna/qtnfmac/Makefile
index f236b7dc2be3..97f760a3d599 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/Makefile
+++ b/drivers/net/wireless/quantenna/qtnfmac/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2015-2016 Quantenna Communications, Inc.
# All rights reserved.
diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
index 856fa6e8327e..a450bc6bc774 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
@@ -115,6 +115,8 @@ int qtnf_del_virtual_intf(struct wiphy *wiphy, struct wireless_dev *wdev)
vif = qtnf_netdev_get_priv(wdev->netdev);
+ qtnf_scan_done(vif->mac, true);
+
if (qtnf_cmd_send_del_intf(vif))
pr_err("VIF%u.%u: failed to delete VIF\n", vif->mac->macid,
vif->vifid);
@@ -335,6 +337,8 @@ static int qtnf_stop_ap(struct wiphy *wiphy, struct net_device *dev)
struct qtnf_vif *vif = qtnf_netdev_get_priv(dev);
int ret;
+ qtnf_scan_done(vif->mac, true);
+
ret = qtnf_cmd_send_stop_ap(vif);
if (ret) {
pr_err("VIF%u.%u: failed to stop AP operation in FW\n",
@@ -570,8 +574,6 @@ qtnf_del_station(struct wiphy *wiphy, struct net_device *dev,
!qtnf_sta_list_lookup(&vif->sta_list, params->mac))
return 0;
- qtnf_scan_done(vif->mac, true);
-
ret = qtnf_cmd_send_del_sta(vif, params);
if (ret)
pr_err("VIF%u.%u: failed to delete STA %pM\n",
@@ -1134,8 +1136,9 @@ void qtnf_virtual_intf_cleanup(struct net_device *ndev)
}
vif->sta_state = QTNF_STA_DISCONNECTED;
- qtnf_scan_done(mac, true);
}
+
+ qtnf_scan_done(mac, true);
}
void qtnf_cfg80211_vif_reset(struct qtnf_vif *vif)
diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.h b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.h
index 6a4af52522b8..66db26613b1f 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.h
@@ -34,6 +34,9 @@ static inline void qtnf_scan_done(struct qtnf_wmac *mac, bool aborted)
.aborted = aborted,
};
+ if (timer_pending(&mac->scan_timeout))
+ del_timer_sync(&mac->scan_timeout);
+
mutex_lock(&mac->mac_lock);
if (mac->scan_req) {
diff --git a/drivers/net/wireless/quantenna/qtnfmac/event.c b/drivers/net/wireless/quantenna/qtnfmac/event.c
index 0fc2814eafad..43d2e7fd6e02 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/event.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/event.c
@@ -345,8 +345,6 @@ qtnf_event_handle_scan_complete(struct qtnf_wmac *mac,
return -EINVAL;
}
- if (timer_pending(&mac->scan_timeout))
- del_timer_sync(&mac->scan_timeout);
qtnf_scan_done(mac, le32_to_cpu(status->flags) & QLINK_SCAN_ABORTED);
return 0;
diff --git a/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c
index 502e72b7cdcc..69131965a298 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c
@@ -661,14 +661,18 @@ static int qtnf_pcie_data_tx(struct qtnf_bus *bus, struct sk_buff *skb)
struct qtnf_pcie_bus_priv *priv = (void *)get_bus_priv(bus);
dma_addr_t txbd_paddr, skb_paddr;
struct qtnf_tx_bd *txbd;
+ unsigned long flags;
int len, i;
u32 info;
int ret = 0;
+ spin_lock_irqsave(&priv->tx0_lock, flags);
+
if (!qtnf_tx_queue_ready(priv)) {
if (skb->dev)
netif_stop_queue(skb->dev);
+ spin_unlock_irqrestore(&priv->tx0_lock, flags);
return NETDEV_TX_BUSY;
}
@@ -717,8 +721,10 @@ tx_done:
dev_kfree_skb_any(skb);
}
- qtnf_pcie_data_tx_reclaim(priv);
priv->tx_done_count++;
+ spin_unlock_irqrestore(&priv->tx0_lock, flags);
+
+ qtnf_pcie_data_tx_reclaim(priv);
return NETDEV_TX_OK;
}
@@ -1247,6 +1253,7 @@ static int qtnf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
strcpy(bus->fwname, QTN_PCI_PEARL_FW_NAME);
init_completion(&bus->request_firmware_complete);
mutex_init(&bus->bus_lock);
+ spin_lock_init(&pcie_priv->tx0_lock);
spin_lock_init(&pcie_priv->irq_lock);
spin_lock_init(&pcie_priv->tx_reclaim_lock);
diff --git a/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie_bus_priv.h b/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie_bus_priv.h
index e76a23716ee0..86ac1ccedb52 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie_bus_priv.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie_bus_priv.h
@@ -34,6 +34,8 @@ struct qtnf_pcie_bus_priv {
/* lock for tx reclaim operations */
spinlock_t tx_reclaim_lock;
+ /* lock for tx0 operations */
+ spinlock_t tx0_lock;
u8 msi_enabled;
int mps;
diff --git a/drivers/net/wireless/ralink/rt2x00/Makefile b/drivers/net/wireless/ralink/rt2x00/Makefile
index 24a66015a495..de030ebcdf6e 100644
--- a/drivers/net/wireless/ralink/rt2x00/Makefile
+++ b/drivers/net/wireless/ralink/rt2x00/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rt2x00lib-y += rt2x00dev.o
rt2x00lib-y += rt2x00mac.o
rt2x00lib-y += rt2x00config.o
diff --git a/drivers/net/wireless/ray_cs.h b/drivers/net/wireless/ray_cs.h
index 524c2f02dd82..0609d8625019 100644
--- a/drivers/net/wireless/ray_cs.h
+++ b/drivers/net/wireless/ray_cs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Raytheon wireless LAN PCMCIA card driver for Linux
A PCMCIA client driver for the Raylink wireless network card
Written by Corey Thomas
diff --git a/drivers/net/wireless/rayctl.h b/drivers/net/wireless/rayctl.h
index b21ed64e15df..668444f6bf07 100644
--- a/drivers/net/wireless/rayctl.h
+++ b/drivers/net/wireless/rayctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RAYCTL_H_
#define _RAYCTL_H_
diff --git a/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8180.h b/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8180.h
index e8243a44d6b6..7948a2da195a 100644
--- a/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8180.h
+++ b/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8180.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef RTL8180_H
#define RTL8180_H
diff --git a/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8225.h b/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8225.h
index 310013a2d726..de7727b74631 100644
--- a/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8225.h
+++ b/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8225.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef RTL8180_RTL8225_H
#define RTL8180_RTL8225_H
diff --git a/drivers/net/wireless/realtek/rtl818x/rtl8187/rfkill.h b/drivers/net/wireless/realtek/rtl818x/rtl8187/rfkill.h
index e12575e96d11..c493e59eede9 100644
--- a/drivers/net/wireless/realtek/rtl818x/rtl8187/rfkill.h
+++ b/drivers/net/wireless/realtek/rtl818x/rtl8187/rfkill.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef RTL8187_RFKILL_H
#define RTL8187_RFKILL_H
diff --git a/drivers/net/wireless/realtek/rtlwifi/Makefile b/drivers/net/wireless/realtek/rtlwifi/Makefile
index 84c2e826fa1d..09c30e428375 100644
--- a/drivers/net/wireless/realtek/rtlwifi/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_RTLWIFI) += rtlwifi.o
rtlwifi-objs := \
base.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/Makefile b/drivers/net/wireless/realtek/rtlwifi/btcoexist/Makefile
index 20582df0465c..d15c58737388 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
btcoexist-objs := halbtc8192e2ant.o \
halbtc8723b1ant.o \
halbtc8723b2ant.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/Makefile
index dae4f0f19cd3..5ea368e8e64b 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8188ee-objs := \
dm.o \
fw.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192c/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8192c/Makefile
index 0546b7556259..40f075527fc8 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192c/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192c/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8192c-common-objs := \
main.o \
dm_common.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/Makefile
index 577c7adbc322..bc307ccc5e83 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8192ce-objs := \
dm.o \
hw.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/Makefile
index 97437dadc287..8b3921fd2cb6 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8192cu-objs := \
dm.o \
hw.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/Makefile
index d0703f20d30c..6482d823a57a 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8192de-objs := \
dm.o \
fw.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/Makefile
index f254b9f64326..12dfbeb1f3ca 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8192ee-objs := \
dm.o \
fw.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192se/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8192se/Makefile
index dfa9dbbe2cdf..e577235f5286 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192se/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192se/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8192se-objs := \
dm.o \
fw.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/Makefile
index e7607d2cb2ef..d1238707291f 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8723ae-objs := \
dm.o \
fw.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/Makefile
index a841cbd55d8e..d3ed44d80011 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8723be-objs := \
dm.o \
fw.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723com/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8723com/Makefile
index 73da75526e2a..3451198b670c 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723com/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723com/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8723-common-objs := \
main.o \
dm_common.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/Makefile b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/Makefile
index 8ca406b95f02..81dbf4ca6bc6 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/Makefile
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtl8821ae-objs := \
dm.o \
fw.o \
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c
index 4f73012978e9..1d431d4bf6d2 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c
@@ -1122,7 +1122,7 @@ static u8 _rtl8821ae_dbi_read(struct rtl_priv *rtlpriv, u16 addr)
}
if (0 == tmp) {
read_addr = REG_DBI_RDATA + addr % 4;
- ret = rtl_read_byte(rtlpriv, read_addr);
+ ret = rtl_read_word(rtlpriv, read_addr);
}
return ret;
}
diff --git a/drivers/net/wireless/rsi/Makefile b/drivers/net/wireless/rsi/Makefile
index ebb89965997a..47c45908d894 100644
--- a/drivers/net/wireless/rsi/Makefile
+++ b/drivers/net/wireless/rsi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rsi_91x-y += rsi_91x_main.o
rsi_91x-y += rsi_91x_core.o
rsi_91x-y += rsi_91x_mac80211.o
diff --git a/drivers/net/wireless/st/cw1200/Makefile b/drivers/net/wireless/st/cw1200/Makefile
index b086aac6547a..386a484e0707 100644
--- a/drivers/net/wireless/st/cw1200/Makefile
+++ b/drivers/net/wireless/st/cw1200/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
cw1200_core-y := \
fwio.o \
txrx.o \
diff --git a/drivers/net/wireless/ti/Makefile b/drivers/net/wireless/ti/Makefile
index af14231aeede..0530dd744275 100644
--- a/drivers/net/wireless/ti/Makefile
+++ b/drivers/net/wireless/ti/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_WLCORE) += wlcore/
obj-$(CONFIG_WL12XX) += wl12xx/
obj-$(CONFIG_WL1251) += wl1251/
diff --git a/drivers/net/wireless/ti/wl1251/Makefile b/drivers/net/wireless/ti/wl1251/Makefile
index 58b4f935a3f6..38da9f8e5f82 100644
--- a/drivers/net/wireless/ti/wl1251/Makefile
+++ b/drivers/net/wireless/ti/wl1251/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
wl1251-objs = main.o event.o tx.o rx.o ps.o cmd.o \
acx.o boot.o init.o debugfs.o io.o
wl1251_spi-objs += spi.o
diff --git a/drivers/net/wireless/ti/wl1251/acx.c b/drivers/net/wireless/ti/wl1251/acx.c
index d6fbdda2cba3..f78fc3880423 100644
--- a/drivers/net/wireless/ti/wl1251/acx.c
+++ b/drivers/net/wireless/ti/wl1251/acx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "acx.h"
#include <linux/module.h>
diff --git a/drivers/net/wireless/ti/wl1251/cmd.c b/drivers/net/wireless/ti/wl1251/cmd.c
index ede31f048ef9..9547aea01b0f 100644
--- a/drivers/net/wireless/ti/wl1251/cmd.c
+++ b/drivers/net/wireless/ti/wl1251/cmd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "cmd.h"
#include <linux/module.h>
diff --git a/drivers/net/wireless/ti/wl1251/wl12xx_80211.h b/drivers/net/wireless/ti/wl1251/wl12xx_80211.h
index 04ed51495772..7fabe702c4cc 100644
--- a/drivers/net/wireless/ti/wl1251/wl12xx_80211.h
+++ b/drivers/net/wireless/ti/wl1251/wl12xx_80211.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __WL12XX_80211_H__
#define __WL12XX_80211_H__
diff --git a/drivers/net/wireless/ti/wlcore/Makefile b/drivers/net/wireless/ti/wlcore/Makefile
index e286713b3c18..7d418c57bcb5 100644
--- a/drivers/net/wireless/ti/wlcore/Makefile
+++ b/drivers/net/wireless/ti/wlcore/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
wlcore-objs = main.o cmd.o io.o event.o tx.o rx.o ps.o acx.o \
boot.o init.o debugfs.o scan.o sysfs.o vendor_cmd.o
diff --git a/drivers/net/wireless/ti/wlcore/wl12xx_80211.h b/drivers/net/wireless/ti/wlcore/wl12xx_80211.h
index 22b0bc98d7b5..181be725eff8 100644
--- a/drivers/net/wireless/ti/wlcore/wl12xx_80211.h
+++ b/drivers/net/wireless/ti/wlcore/wl12xx_80211.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __WL12XX_80211_H__
#define __WL12XX_80211_H__
diff --git a/drivers/net/wireless/wl3501.h b/drivers/net/wireless/wl3501.h
index 3fbfd19818f1..efdce9ae36ea 100644
--- a/drivers/net/wireless/wl3501.h
+++ b/drivers/net/wireless/wl3501.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __WL3501_H__
#define __WL3501_H__
diff --git a/drivers/net/wireless/zydas/zd1211rw/Makefile b/drivers/net/wireless/zydas/zd1211rw/Makefile
index 5728a918e508..1647a449ce1a 100644
--- a/drivers/net/wireless/zydas/zd1211rw/Makefile
+++ b/drivers/net/wireless/zydas/zd1211rw/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ZD1211RW) += zd1211rw.o
zd1211rw-objs := zd_chip.o zd_mac.o \
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
index ee8ed9da00ad..4491ca5aee90 100644
--- a/drivers/net/xen-netback/interface.c
+++ b/drivers/net/xen-netback/interface.c
@@ -486,7 +486,7 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t domid,
dev->tx_queue_len = XENVIF_QUEUE_LENGTH;
- dev->min_mtu = 0;
+ dev->min_mtu = ETH_MIN_MTU;
dev->max_mtu = ETH_MAX_MTU - VLAN_ETH_HLEN;
/*
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 523387e71a80..8b8689c6d887 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1316,7 +1316,7 @@ static struct net_device *xennet_create_dev(struct xenbus_device *dev)
netdev->features |= netdev->hw_features;
netdev->ethtool_ops = &xennet_ethtool_ops;
- netdev->min_mtu = 0;
+ netdev->min_mtu = ETH_MIN_MTU;
netdev->max_mtu = XEN_NETIF_MAX_TX_SIZE;
SET_NETDEV_DEV(netdev, &dev->dev);
diff --git a/drivers/nfc/Makefile b/drivers/nfc/Makefile
index 640b7274371c..5393ba59b17d 100644
--- a/drivers/nfc/Makefile
+++ b/drivers/nfc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for nfc devices
#
diff --git a/drivers/nfc/mei_phy.h b/drivers/nfc/mei_phy.h
index acd3a1fc69e6..51bd44f5f3b8 100644
--- a/drivers/nfc/mei_phy.h
+++ b/drivers/nfc/mei_phy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LOCAL_MEI_PHY_H_
#define __LOCAL_MEI_PHY_H_
diff --git a/drivers/nfc/microread/Makefile b/drivers/nfc/microread/Makefile
index 755c24cba253..2f7dda265f8f 100644
--- a/drivers/nfc/microread/Makefile
+++ b/drivers/nfc/microread/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Microread HCI based NFC driver
#
diff --git a/drivers/nfc/nfcmrvl/Makefile b/drivers/nfc/nfcmrvl/Makefile
index fa07c7806492..e74de0cb3bb0 100644
--- a/drivers/nfc/nfcmrvl/Makefile
+++ b/drivers/nfc/nfcmrvl/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for NFCMRVL NCI based NFC driver
#
diff --git a/drivers/nfc/st-nci/Makefile b/drivers/nfc/st-nci/Makefile
index 439b2fa8654a..e0310743fed1 100644
--- a/drivers/nfc/st-nci/Makefile
+++ b/drivers/nfc/st-nci/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for ST_NCI NCI based NFC driver
#
diff --git a/drivers/nubus/nubus.c b/drivers/nubus/nubus.c
index df431e8a0631..8ce69c833362 100644
--- a/drivers/nubus/nubus.c
+++ b/drivers/nubus/nubus.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Macintosh Nubus Interface Code
*
diff --git a/drivers/nubus/proc.c b/drivers/nubus/proc.c
index e8f68f5732f1..004a122ac0ff 100644
--- a/drivers/nubus/proc.c
+++ b/drivers/nubus/proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* drivers/nubus/proc.c: Proc FS interface for NuBus.
By David Huggins-Daines <dhd@debian.org>
diff --git a/drivers/nvdimm/Makefile b/drivers/nvdimm/Makefile
index 909554c3f955..447e0e14f3b6 100644
--- a/drivers/nvdimm/Makefile
+++ b/drivers/nvdimm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_LIBNVDIMM) += libnvdimm.o
obj-$(CONFIG_BLK_DEV_PMEM) += nd_pmem.o
obj-$(CONFIG_ND_BTT) += nd_btt.o
diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
index 1427a386a033..3e4d1e7998da 100644
--- a/drivers/nvdimm/namespace_devs.c
+++ b/drivers/nvdimm/namespace_devs.c
@@ -1417,6 +1417,15 @@ static int btt_claim_class(struct device *dev)
struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
struct nd_namespace_index *nsindex;
+ /*
+ * If any of the DIMMs do not support labels the only
+ * possible BTT format is v1.
+ */
+ if (!ndd) {
+ loop_bitmask = 0;
+ break;
+ }
+
nsindex = to_namespace_index(ndd, ndd->ns_current);
if (nsindex == NULL)
loop_bitmask |= 1;
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c
index e9aa453da50c..39dfd7affa31 100644
--- a/drivers/nvdimm/pmem.c
+++ b/drivers/nvdimm/pmem.c
@@ -262,16 +262,9 @@ static size_t pmem_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff,
return copy_from_iter_flushcache(addr, bytes, i);
}
-static void pmem_dax_flush(struct dax_device *dax_dev, pgoff_t pgoff,
- void *addr, size_t size)
-{
- arch_wb_cache_pmem(addr, size);
-}
-
static const struct dax_operations pmem_dax_ops = {
.direct_access = pmem_dax_direct_access,
.copy_from_iter = pmem_copy_from_iter,
- .flush = pmem_dax_flush,
};
static const struct attribute_group *pmem_attribute_groups[] = {
diff --git a/drivers/nvdimm/pmem.h b/drivers/nvdimm/pmem.h
index c5917f040fa7..6a3cd2a10db6 100644
--- a/drivers/nvdimm/pmem.h
+++ b/drivers/nvdimm/pmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVDIMM_PMEM_H__
#define __NVDIMM_PMEM_H__
#include <linux/badblocks.h>
diff --git a/drivers/nvme/host/Makefile b/drivers/nvme/host/Makefile
index cc0aacb4c8b4..7b96e4588a12 100644
--- a/drivers/nvme/host/Makefile
+++ b/drivers/nvme/host/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_NVME_CORE) += nvme-core.o
obj-$(CONFIG_BLK_DEV_NVME) += nvme.o
obj-$(CONFIG_NVME_FABRICS) += nvme-fabrics.o
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index acc816b67582..37f9039bb9ca 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -134,8 +134,6 @@ static inline bool nvme_req_needs_retry(struct request *req)
return false;
if (nvme_req(req)->status & NVME_SC_DNR)
return false;
- if (jiffies - req->start_time >= req->timeout)
- return false;
if (nvme_req(req)->retries >= nvme_max_retries)
return false;
return true;
@@ -1251,6 +1249,7 @@ static int nvme_revalidate_disk(struct gendisk *disk)
goto out;
}
+ __nvme_revalidate_disk(disk, id);
nvme_report_ns_ids(ctrl, ns->ns_id, id, eui64, nguid, &uuid);
if (!uuid_equal(&ns->uuid, &uuid) ||
memcmp(&ns->nguid, &nguid, sizeof(ns->nguid)) ||
@@ -2138,7 +2137,7 @@ static umode_t nvme_ns_attrs_are_visible(struct kobject *kobj,
struct nvme_ns *ns = nvme_get_ns_from_dev(dev);
if (a == &dev_attr_uuid.attr) {
- if (uuid_is_null(&ns->uuid) ||
+ if (uuid_is_null(&ns->uuid) &&
!memchr_inv(ns->nguid, 0, sizeof(ns->nguid)))
return 0;
}
@@ -2590,7 +2589,7 @@ static void nvme_async_event_work(struct work_struct *work)
container_of(work, struct nvme_ctrl, async_event_work);
spin_lock_irq(&ctrl->lock);
- while (ctrl->event_limit > 0) {
+ while (ctrl->state == NVME_CTRL_LIVE && ctrl->event_limit > 0) {
int aer_idx = --ctrl->event_limit;
spin_unlock_irq(&ctrl->lock);
@@ -2677,7 +2676,8 @@ void nvme_complete_async_event(struct nvme_ctrl *ctrl, __le16 status,
/*FALLTHRU*/
case NVME_SC_ABORT_REQ:
++ctrl->event_limit;
- queue_work(nvme_wq, &ctrl->async_event_work);
+ if (ctrl->state == NVME_CTRL_LIVE)
+ queue_work(nvme_wq, &ctrl->async_event_work);
break;
default:
break;
@@ -2692,7 +2692,7 @@ void nvme_complete_async_event(struct nvme_ctrl *ctrl, __le16 status,
nvme_queue_scan(ctrl);
break;
case NVME_AER_NOTICE_FW_ACT_STARTING:
- schedule_work(&ctrl->fw_act_work);
+ queue_work(nvme_wq, &ctrl->fw_act_work);
break;
default:
dev_warn(ctrl->device, "async event result %08x\n", result);
diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c
index 47307752dc65..555c976cc2ee 100644
--- a/drivers/nvme/host/fabrics.c
+++ b/drivers/nvme/host/fabrics.c
@@ -565,6 +565,7 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
opts->queue_size = NVMF_DEF_QUEUE_SIZE;
opts->nr_io_queues = num_online_cpus();
opts->reconnect_delay = NVMF_DEF_RECONNECT_DELAY;
+ opts->kato = NVME_DEFAULT_KATO;
options = o = kstrdup(buf, GFP_KERNEL);
if (!options)
@@ -655,21 +656,22 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
goto out;
}
- if (opts->discovery_nqn) {
- pr_err("Discovery controllers cannot accept keep_alive_tmo != 0\n");
- ret = -EINVAL;
- goto out;
- }
-
if (token < 0) {
pr_err("Invalid keep_alive_tmo %d\n", token);
ret = -EINVAL;
goto out;
- } else if (token == 0) {
+ } else if (token == 0 && !opts->discovery_nqn) {
/* Allowed for debug */
pr_warn("keep_alive_tmo 0 won't execute keep alives!!!\n");
}
opts->kato = token;
+
+ if (opts->discovery_nqn && opts->kato) {
+ pr_err("Discovery controllers cannot accept KATO != 0\n");
+ ret = -EINVAL;
+ goto out;
+ }
+
break;
case NVMF_OPT_CTRL_LOSS_TMO:
if (match_int(args, &token)) {
@@ -762,8 +764,6 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
uuid_copy(&opts->host->id, &hostid);
out:
- if (!opts->discovery_nqn && !opts->kato)
- opts->kato = NVME_DEFAULT_KATO;
kfree(options);
return ret;
}
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index d2e882c0f496..be49d0f79381 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -1376,7 +1376,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req)
if (atomic_read(&op->state) == FCPOP_STATE_ABORTED)
status = cpu_to_le16((NVME_SC_ABORT_REQ | NVME_SC_DNR) << 1);
else if (freq->status)
- status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1);
+ status = cpu_to_le16(NVME_SC_INTERNAL << 1);
/*
* For the linux implementation, if we have an unsuccesful
@@ -1404,7 +1404,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req)
*/
if (freq->transferred_length !=
be32_to_cpu(op->cmd_iu.data_len)) {
- status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1);
+ status = cpu_to_le16(NVME_SC_INTERNAL << 1);
goto done;
}
result.u64 = 0;
@@ -1421,7 +1421,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req)
freq->transferred_length ||
op->rsp_iu.status_code ||
sqe->common.command_id != cqe->command_id)) {
- status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1);
+ status = cpu_to_le16(NVME_SC_INTERNAL << 1);
goto done;
}
result = cqe->result;
@@ -1429,7 +1429,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req)
break;
default:
- status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1);
+ status = cpu_to_le16(NVME_SC_INTERNAL << 1);
goto done;
}
@@ -1989,16 +1989,17 @@ nvme_fc_start_fcp_op(struct nvme_fc_ctrl *ctrl, struct nvme_fc_queue *queue,
* as well as those by FC-NVME spec.
*/
WARN_ON_ONCE(sqe->common.metadata);
- WARN_ON_ONCE(sqe->common.dptr.prp1);
- WARN_ON_ONCE(sqe->common.dptr.prp2);
sqe->common.flags |= NVME_CMD_SGL_METABUF;
/*
- * format SQE DPTR field per FC-NVME rules
- * type=data block descr; subtype=offset;
- * offset is currently 0.
+ * format SQE DPTR field per FC-NVME rules:
+ * type=0x5 Transport SGL Data Block Descriptor
+ * subtype=0xA Transport-specific value
+ * address=0
+ * length=length of the data series
*/
- sqe->rw.dptr.sgl.type = NVME_SGL_FMT_OFFSET;
+ sqe->rw.dptr.sgl.type = (NVME_TRANSPORT_SGL_DATA_DESC << 4) |
+ NVME_SGL_FMT_TRANSPORT_A;
sqe->rw.dptr.sgl.length = cpu_to_le32(data_len);
sqe->rw.dptr.sgl.addr = 0;
@@ -2544,10 +2545,10 @@ nvme_fc_delete_association(struct nvme_fc_ctrl *ctrl)
nvme_fc_abort_aen_ops(ctrl);
/* wait for all io that had to be aborted */
- spin_lock_irqsave(&ctrl->lock, flags);
+ spin_lock_irq(&ctrl->lock);
wait_event_lock_irq(ctrl->ioabort_wait, ctrl->iocnt == 0, ctrl->lock);
ctrl->flags &= ~FCCTRL_TERMIO;
- spin_unlock_irqrestore(&ctrl->lock, flags);
+ spin_unlock_irq(&ctrl->lock);
nvme_fc_term_aen_ops(ctrl);
@@ -2733,7 +2734,7 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
{
struct nvme_fc_ctrl *ctrl;
unsigned long flags;
- int ret, idx;
+ int ret, idx, retry;
if (!(rport->remoteport.port_role &
(FC_PORT_ROLE_NVME_DISCOVERY | FC_PORT_ROLE_NVME_TARGET))) {
@@ -2759,6 +2760,7 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
ctrl->rport = rport;
ctrl->dev = lport->dev;
ctrl->cnum = idx;
+ init_waitqueue_head(&ctrl->ioabort_wait);
get_device(ctrl->dev);
kref_init(&ctrl->ref);
@@ -2824,9 +2826,37 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
list_add_tail(&ctrl->ctrl_list, &rport->ctrl_list);
spin_unlock_irqrestore(&rport->lock, flags);
- ret = nvme_fc_create_association(ctrl);
+ /*
+ * It's possible that transactions used to create the association
+ * may fail. Examples: CreateAssociation LS or CreateIOConnection
+ * LS gets dropped/corrupted/fails; or a frame gets dropped or a
+ * command times out for one of the actions to init the controller
+ * (Connect, Get/Set_Property, Set_Features, etc). Many of these
+ * transport errors (frame drop, LS failure) inherently must kill
+ * the association. The transport is coded so that any command used
+ * to create the association (prior to a LIVE state transition
+ * while NEW or RECONNECTING) will fail if it completes in error or
+ * times out.
+ *
+ * As such: as the connect request was mostly likely due to a
+ * udev event that discovered the remote port, meaning there is
+ * not an admin or script there to restart if the connect
+ * request fails, retry the initial connection creation up to
+ * three times before giving up and declaring failure.
+ */
+ for (retry = 0; retry < 3; retry++) {
+ ret = nvme_fc_create_association(ctrl);
+ if (!ret)
+ break;
+ }
+
if (ret) {
+ /* couldn't schedule retry - fail out */
+ dev_err(ctrl->ctrl.device,
+ "NVME-FC{%d}: Connect retry failed\n", ctrl->cnum);
+
ctrl->ctrl.opts = NULL;
+
/* initiate nvme ctrl ref counting teardown */
nvme_uninit_ctrl(&ctrl->ctrl);
nvme_put_ctrl(&ctrl->ctrl);
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 4a2121335f48..3f5a04c586ce 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -24,6 +24,7 @@
#include <linux/mm.h>
#include <linux/module.h>
#include <linux/mutex.h>
+#include <linux/once.h>
#include <linux/pci.h>
#include <linux/poison.h>
#include <linux/t10-pi.h>
@@ -93,7 +94,7 @@ struct nvme_dev {
struct mutex shutdown_lock;
bool subsystem;
void __iomem *cmb;
- dma_addr_t cmb_dma_addr;
+ pci_bus_addr_t cmb_bus_addr;
u64 cmb_size;
u32 cmbsz;
u32 cmbloc;
@@ -540,6 +541,20 @@ static void nvme_dif_complete(u32 p, u32 v, struct t10_pi_tuple *pi)
}
#endif
+static void nvme_print_sgl(struct scatterlist *sgl, int nents)
+{
+ int i;
+ struct scatterlist *sg;
+
+ for_each_sg(sgl, sg, nents, i) {
+ dma_addr_t phys = sg_phys(sg);
+ pr_warn("sg[%d] phys_addr:%pad offset:%d length:%d "
+ "dma_address:%pad dma_length:%d\n",
+ i, &phys, sg->offset, sg->length, &sg_dma_address(sg),
+ sg_dma_len(sg));
+ }
+}
+
static blk_status_t nvme_setup_prps(struct nvme_dev *dev, struct request *req)
{
struct nvme_iod *iod = blk_mq_rq_to_pdu(req);
@@ -622,19 +637,10 @@ static blk_status_t nvme_setup_prps(struct nvme_dev *dev, struct request *req)
return BLK_STS_OK;
bad_sgl:
- if (WARN_ONCE(1, "Invalid SGL for payload:%d nents:%d\n",
- blk_rq_payload_bytes(req), iod->nents)) {
- for_each_sg(iod->sg, sg, iod->nents, i) {
- dma_addr_t phys = sg_phys(sg);
- pr_warn("sg[%d] phys_addr:%pad offset:%d length:%d "
- "dma_address:%pad dma_length:%d\n", i, &phys,
- sg->offset, sg->length,
- &sg_dma_address(sg),
- sg_dma_len(sg));
- }
- }
+ WARN(DO_ONCE(nvme_print_sgl, iod->sg, iod->nents),
+ "Invalid SGL for payload:%d nents:%d\n",
+ blk_rq_payload_bytes(req), iod->nents);
return BLK_STS_IOERR;
-
}
static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req,
@@ -1220,7 +1226,7 @@ static int nvme_alloc_sq_cmds(struct nvme_dev *dev, struct nvme_queue *nvmeq,
if (qid && dev->cmb && use_cmb_sqes && NVME_CMB_SQS(dev->cmbsz)) {
unsigned offset = (qid - 1) * roundup(SQ_SIZE(depth),
dev->ctrl.page_size);
- nvmeq->sq_dma_addr = dev->cmb_dma_addr + offset;
+ nvmeq->sq_dma_addr = dev->cmb_bus_addr + offset;
nvmeq->sq_cmds_io = dev->cmb + offset;
} else {
nvmeq->sq_cmds = dma_alloc_coherent(dev->dev, SQ_SIZE(depth),
@@ -1313,11 +1319,11 @@ static int nvme_create_queue(struct nvme_queue *nvmeq, int qid)
if (result < 0)
goto release_cq;
+ nvme_init_queue(nvmeq, qid);
result = queue_request_irq(nvmeq);
if (result < 0)
goto release_sq;
- nvme_init_queue(nvmeq, qid);
return result;
release_sq:
@@ -1464,6 +1470,7 @@ static int nvme_pci_configure_admin_queue(struct nvme_dev *dev)
return result;
nvmeq->cq_vector = 0;
+ nvme_init_queue(nvmeq, 0);
result = queue_request_irq(nvmeq);
if (result) {
nvmeq->cq_vector = -1;
@@ -1520,7 +1527,7 @@ static void __iomem *nvme_map_cmb(struct nvme_dev *dev)
resource_size_t bar_size;
struct pci_dev *pdev = to_pci_dev(dev->dev);
void __iomem *cmb;
- dma_addr_t dma_addr;
+ int bar;
dev->cmbsz = readl(dev->bar + NVME_REG_CMBSZ);
if (!(NVME_CMB_SZ(dev->cmbsz)))
@@ -1533,7 +1540,8 @@ static void __iomem *nvme_map_cmb(struct nvme_dev *dev)
szu = (u64)1 << (12 + 4 * NVME_CMB_SZU(dev->cmbsz));
size = szu * NVME_CMB_SZ(dev->cmbsz);
offset = szu * NVME_CMB_OFST(dev->cmbloc);
- bar_size = pci_resource_len(pdev, NVME_CMB_BIR(dev->cmbloc));
+ bar = NVME_CMB_BIR(dev->cmbloc);
+ bar_size = pci_resource_len(pdev, bar);
if (offset > bar_size)
return NULL;
@@ -1546,12 +1554,11 @@ static void __iomem *nvme_map_cmb(struct nvme_dev *dev)
if (size > bar_size - offset)
size = bar_size - offset;
- dma_addr = pci_resource_start(pdev, NVME_CMB_BIR(dev->cmbloc)) + offset;
- cmb = ioremap_wc(dma_addr, size);
+ cmb = ioremap_wc(pci_resource_start(pdev, bar) + offset, size);
if (!cmb)
return NULL;
- dev->cmb_dma_addr = dma_addr;
+ dev->cmb_bus_addr = pci_bus_address(pdev, bar) + offset;
dev->cmb_size = size;
return cmb;
}
@@ -2156,7 +2163,6 @@ static void nvme_reset_work(struct work_struct *work)
if (result)
goto out;
- nvme_init_queue(dev->queues[0], 0);
result = nvme_alloc_admin_tags(dev);
if (result)
goto out;
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index 58983000964b..0ebb539f3bd3 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -571,6 +571,12 @@ static void nvme_rdma_free_queue(struct nvme_rdma_queue *queue)
if (test_and_set_bit(NVME_RDMA_Q_DELETING, &queue->flags))
return;
+ if (nvme_rdma_queue_idx(queue) == 0) {
+ nvme_rdma_free_qe(queue->device->dev,
+ &queue->ctrl->async_event_sqe,
+ sizeof(struct nvme_command), DMA_TO_DEVICE);
+ }
+
nvme_rdma_destroy_queue_ib(queue);
rdma_destroy_id(queue->cm_id);
}
@@ -739,8 +745,6 @@ out:
static void nvme_rdma_destroy_admin_queue(struct nvme_rdma_ctrl *ctrl,
bool remove)
{
- nvme_rdma_free_qe(ctrl->queues[0].device->dev, &ctrl->async_event_sqe,
- sizeof(struct nvme_command), DMA_TO_DEVICE);
nvme_rdma_stop_queue(&ctrl->queues[0]);
if (remove) {
blk_cleanup_queue(ctrl->ctrl.admin_q);
@@ -765,8 +769,10 @@ static int nvme_rdma_configure_admin_queue(struct nvme_rdma_ctrl *ctrl,
if (new) {
ctrl->ctrl.admin_tagset = nvme_rdma_alloc_tagset(&ctrl->ctrl, true);
- if (IS_ERR(ctrl->ctrl.admin_tagset))
+ if (IS_ERR(ctrl->ctrl.admin_tagset)) {
+ error = PTR_ERR(ctrl->ctrl.admin_tagset);
goto out_free_queue;
+ }
ctrl->ctrl.admin_q = blk_mq_init_queue(&ctrl->admin_tag_set);
if (IS_ERR(ctrl->ctrl.admin_q)) {
@@ -846,8 +852,10 @@ static int nvme_rdma_configure_io_queues(struct nvme_rdma_ctrl *ctrl, bool new)
if (new) {
ctrl->ctrl.tagset = nvme_rdma_alloc_tagset(&ctrl->ctrl, false);
- if (IS_ERR(ctrl->ctrl.tagset))
+ if (IS_ERR(ctrl->ctrl.tagset)) {
+ ret = PTR_ERR(ctrl->ctrl.tagset);
goto out_free_io_queues;
+ }
ctrl->ctrl.connect_q = blk_mq_init_queue(&ctrl->tag_set);
if (IS_ERR(ctrl->ctrl.connect_q)) {
@@ -942,7 +950,12 @@ static void nvme_rdma_reconnect_ctrl_work(struct work_struct *work)
}
changed = nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_LIVE);
- WARN_ON_ONCE(!changed);
+ if (!changed) {
+ /* state change failure is ok if we're in DELETING state */
+ WARN_ON_ONCE(ctrl->ctrl.state != NVME_CTRL_DELETING);
+ return;
+ }
+
ctrl->ctrl.nr_reconnects = 0;
nvme_start_ctrl(&ctrl->ctrl);
@@ -962,7 +975,7 @@ static void nvme_rdma_error_recovery_work(struct work_struct *work)
struct nvme_rdma_ctrl *ctrl = container_of(work,
struct nvme_rdma_ctrl, err_work);
- nvme_stop_ctrl(&ctrl->ctrl);
+ nvme_stop_keep_alive(&ctrl->ctrl);
if (ctrl->ctrl.queue_count > 1) {
nvme_stop_queues(&ctrl->ctrl);
@@ -1601,12 +1614,15 @@ nvme_rdma_queue_is_ready(struct nvme_rdma_queue *queue, struct request *rq)
/*
* reconnecting state means transport disruption, which
* can take a long time and even might fail permanently,
- * so we can't let incoming I/O be requeued forever.
- * fail it fast to allow upper layers a chance to
- * failover.
+ * fail fast to give upper layers a chance to failover.
+ * deleting state means that the ctrl will never accept
+ * commands again, fail it permanently.
*/
- if (queue->ctrl->ctrl.state == NVME_CTRL_RECONNECTING)
+ if (queue->ctrl->ctrl.state == NVME_CTRL_RECONNECTING ||
+ queue->ctrl->ctrl.state == NVME_CTRL_DELETING) {
+ nvme_req(rq)->status = NVME_SC_ABORT_REQ;
return BLK_STS_IOERR;
+ }
return BLK_STS_RESOURCE; /* try again later */
}
}
diff --git a/drivers/nvme/target/Makefile b/drivers/nvme/target/Makefile
index fecc14f535b2..488250189c99 100644
--- a/drivers/nvme/target/Makefile
+++ b/drivers/nvme/target/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_NVME_TARGET) += nvmet.o
obj-$(CONFIG_NVME_TARGET_LOOP) += nvme-loop.o
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
index 7c23eaf8e563..645ba7eee35d 100644
--- a/drivers/nvme/target/core.c
+++ b/drivers/nvme/target/core.c
@@ -387,13 +387,22 @@ struct nvmet_ns *nvmet_ns_alloc(struct nvmet_subsys *subsys, u32 nsid)
static void __nvmet_req_complete(struct nvmet_req *req, u16 status)
{
+ u32 old_sqhd, new_sqhd;
+ u16 sqhd;
+
if (status)
nvmet_set_status(req, status);
- /* XXX: need to fill in something useful for sq_head */
- req->rsp->sq_head = 0;
- if (likely(req->sq)) /* may happen during early failure */
- req->rsp->sq_id = cpu_to_le16(req->sq->qid);
+ if (req->sq->size) {
+ do {
+ old_sqhd = req->sq->sqhd;
+ new_sqhd = (old_sqhd + 1) % req->sq->size;
+ } while (cmpxchg(&req->sq->sqhd, old_sqhd, new_sqhd) !=
+ old_sqhd);
+ }
+ sqhd = req->sq->sqhd & 0x0000FFFF;
+ req->rsp->sq_head = cpu_to_le16(sqhd);
+ req->rsp->sq_id = cpu_to_le16(req->sq->qid);
req->rsp->command_id = req->cmd->common.command_id;
if (req->ns)
@@ -420,6 +429,7 @@ void nvmet_cq_setup(struct nvmet_ctrl *ctrl, struct nvmet_cq *cq,
void nvmet_sq_setup(struct nvmet_ctrl *ctrl, struct nvmet_sq *sq,
u16 qid, u16 size)
{
+ sq->sqhd = 0;
sq->qid = qid;
sq->size = size;
diff --git a/drivers/nvme/target/fabrics-cmd.c b/drivers/nvme/target/fabrics-cmd.c
index 859a66725291..db3bf6b8bf9e 100644
--- a/drivers/nvme/target/fabrics-cmd.c
+++ b/drivers/nvme/target/fabrics-cmd.c
@@ -109,9 +109,14 @@ static u16 nvmet_install_queue(struct nvmet_ctrl *ctrl, struct nvmet_req *req)
pr_warn("queue already connected!\n");
return NVME_SC_CONNECT_CTRL_BUSY | NVME_SC_DNR;
}
+ if (!sqsize) {
+ pr_warn("queue size zero!\n");
+ return NVME_SC_CONNECT_INVALID_PARAM | NVME_SC_DNR;
+ }
- nvmet_cq_setup(ctrl, req->cq, qid, sqsize);
- nvmet_sq_setup(ctrl, req->sq, qid, sqsize);
+ /* note: convert queue size from 0's-based value to 1's-based value */
+ nvmet_cq_setup(ctrl, req->cq, qid, sqsize + 1);
+ nvmet_sq_setup(ctrl, req->sq, qid, sqsize + 1);
return 0;
}
diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c
index 421e43bf1dd7..58e010bdda3e 100644
--- a/drivers/nvme/target/fc.c
+++ b/drivers/nvme/target/fc.c
@@ -148,7 +148,7 @@ struct nvmet_fc_tgt_assoc {
u32 a_id;
struct nvmet_fc_tgtport *tgtport;
struct list_head a_list;
- struct nvmet_fc_tgt_queue *queues[NVMET_NR_QUEUES];
+ struct nvmet_fc_tgt_queue *queues[NVMET_NR_QUEUES + 1];
struct kref ref;
};
@@ -608,7 +608,7 @@ nvmet_fc_alloc_target_queue(struct nvmet_fc_tgt_assoc *assoc,
unsigned long flags;
int ret;
- if (qid >= NVMET_NR_QUEUES)
+ if (qid > NVMET_NR_QUEUES)
return NULL;
queue = kzalloc((sizeof(*queue) +
@@ -783,6 +783,9 @@ nvmet_fc_find_target_queue(struct nvmet_fc_tgtport *tgtport,
u16 qid = nvmet_fc_getqueueid(connection_id);
unsigned long flags;
+ if (qid > NVMET_NR_QUEUES)
+ return NULL;
+
spin_lock_irqsave(&tgtport->lock, flags);
list_for_each_entry(assoc, &tgtport->assoc_list, a_list) {
if (association_id == assoc->association_id) {
@@ -888,7 +891,7 @@ nvmet_fc_delete_target_assoc(struct nvmet_fc_tgt_assoc *assoc)
int i;
spin_lock_irqsave(&tgtport->lock, flags);
- for (i = NVMET_NR_QUEUES - 1; i >= 0; i--) {
+ for (i = NVMET_NR_QUEUES; i >= 0; i--) {
queue = assoc->queues[i];
if (queue) {
if (!nvmet_fc_tgt_q_get(queue))
@@ -1910,8 +1913,7 @@ nvmet_fc_transfer_fcp_data(struct nvmet_fc_tgtport *tgtport,
spin_lock_irqsave(&fod->flock, flags);
fod->writedataactive = false;
spin_unlock_irqrestore(&fod->flock, flags);
- nvmet_req_complete(&fod->req,
- NVME_SC_FC_TRANSPORT_ERROR);
+ nvmet_req_complete(&fod->req, NVME_SC_INTERNAL);
} else /* NVMET_FCOP_READDATA or NVMET_FCOP_READDATA_RSP */ {
fcpreq->fcp_error = ret;
fcpreq->transferred_length = 0;
@@ -1929,8 +1931,7 @@ __nvmet_fc_fod_op_abort(struct nvmet_fc_fcp_iod *fod, bool abort)
/* if in the middle of an io and we need to tear down */
if (abort) {
if (fcpreq->op == NVMET_FCOP_WRITEDATA) {
- nvmet_req_complete(&fod->req,
- NVME_SC_FC_TRANSPORT_ERROR);
+ nvmet_req_complete(&fod->req, NVME_SC_INTERNAL);
return true;
}
@@ -1968,8 +1969,7 @@ nvmet_fc_fod_op_done(struct nvmet_fc_fcp_iod *fod)
fod->abort = true;
spin_unlock(&fod->flock);
- nvmet_req_complete(&fod->req,
- NVME_SC_FC_TRANSPORT_ERROR);
+ nvmet_req_complete(&fod->req, NVME_SC_INTERNAL);
return;
}
@@ -2533,13 +2533,17 @@ nvmet_fc_remove_port(struct nvmet_port *port)
{
struct nvmet_fc_tgtport *tgtport = port->priv;
unsigned long flags;
+ bool matched = false;
spin_lock_irqsave(&nvmet_fc_tgtlock, flags);
if (tgtport->port == port) {
- nvmet_fc_tgtport_put(tgtport);
+ matched = true;
tgtport->port = NULL;
}
spin_unlock_irqrestore(&nvmet_fc_tgtlock, flags);
+
+ if (matched)
+ nvmet_fc_tgtport_put(tgtport);
}
static struct nvmet_fabrics_ops nvmet_fc_tgt_fcp_ops = {
diff --git a/drivers/nvme/target/fcloop.c b/drivers/nvme/target/fcloop.c
index 1cb9847ec261..7b75d9de55ab 100644
--- a/drivers/nvme/target/fcloop.c
+++ b/drivers/nvme/target/fcloop.c
@@ -224,8 +224,6 @@ struct fcloop_nport {
struct fcloop_lport *lport;
struct list_head nport_list;
struct kref ref;
- struct completion rport_unreg_done;
- struct completion tport_unreg_done;
u64 node_name;
u64 port_name;
u32 port_role;
@@ -576,7 +574,7 @@ fcloop_tgt_fcp_abort(struct nvmet_fc_target_port *tgtport,
tfcp_req->aborted = true;
spin_unlock(&tfcp_req->reqlock);
- tfcp_req->status = NVME_SC_FC_TRANSPORT_ABORTED;
+ tfcp_req->status = NVME_SC_INTERNAL;
/*
* nothing more to do. If io wasn't active, the transport should
@@ -631,6 +629,32 @@ fcloop_fcp_abort(struct nvme_fc_local_port *localport,
}
static void
+fcloop_nport_free(struct kref *ref)
+{
+ struct fcloop_nport *nport =
+ container_of(ref, struct fcloop_nport, ref);
+ unsigned long flags;
+
+ spin_lock_irqsave(&fcloop_lock, flags);
+ list_del(&nport->nport_list);
+ spin_unlock_irqrestore(&fcloop_lock, flags);
+
+ kfree(nport);
+}
+
+static void
+fcloop_nport_put(struct fcloop_nport *nport)
+{
+ kref_put(&nport->ref, fcloop_nport_free);
+}
+
+static int
+fcloop_nport_get(struct fcloop_nport *nport)
+{
+ return kref_get_unless_zero(&nport->ref);
+}
+
+static void
fcloop_localport_delete(struct nvme_fc_local_port *localport)
{
struct fcloop_lport *lport = localport->private;
@@ -644,8 +668,7 @@ fcloop_remoteport_delete(struct nvme_fc_remote_port *remoteport)
{
struct fcloop_rport *rport = remoteport->private;
- /* release any threads waiting for the unreg to complete */
- complete(&rport->nport->rport_unreg_done);
+ fcloop_nport_put(rport->nport);
}
static void
@@ -653,8 +676,7 @@ fcloop_targetport_delete(struct nvmet_fc_target_port *targetport)
{
struct fcloop_tport *tport = targetport->private;
- /* release any threads waiting for the unreg to complete */
- complete(&tport->nport->tport_unreg_done);
+ fcloop_nport_put(tport->nport);
}
#define FCLOOP_HW_QUEUES 4
@@ -722,6 +744,7 @@ fcloop_create_local_port(struct device *dev, struct device_attribute *attr,
goto out_free_opts;
}
+ memset(&pinfo, 0, sizeof(pinfo));
pinfo.node_name = opts->wwnn;
pinfo.port_name = opts->wwpn;
pinfo.port_role = opts->roles;
@@ -804,32 +827,6 @@ fcloop_delete_local_port(struct device *dev, struct device_attribute *attr,
return ret ? ret : count;
}
-static void
-fcloop_nport_free(struct kref *ref)
-{
- struct fcloop_nport *nport =
- container_of(ref, struct fcloop_nport, ref);
- unsigned long flags;
-
- spin_lock_irqsave(&fcloop_lock, flags);
- list_del(&nport->nport_list);
- spin_unlock_irqrestore(&fcloop_lock, flags);
-
- kfree(nport);
-}
-
-static void
-fcloop_nport_put(struct fcloop_nport *nport)
-{
- kref_put(&nport->ref, fcloop_nport_free);
-}
-
-static int
-fcloop_nport_get(struct fcloop_nport *nport)
-{
- return kref_get_unless_zero(&nport->ref);
-}
-
static struct fcloop_nport *
fcloop_alloc_nport(const char *buf, size_t count, bool remoteport)
{
@@ -938,6 +935,7 @@ fcloop_create_remote_port(struct device *dev, struct device_attribute *attr,
if (!nport)
return -EIO;
+ memset(&pinfo, 0, sizeof(pinfo));
pinfo.node_name = nport->node_name;
pinfo.port_name = nport->port_name;
pinfo.port_role = nport->port_role;
@@ -979,24 +977,12 @@ __unlink_remote_port(struct fcloop_nport *nport)
}
static int
-__wait_remoteport_unreg(struct fcloop_nport *nport, struct fcloop_rport *rport)
+__remoteport_unreg(struct fcloop_nport *nport, struct fcloop_rport *rport)
{
- int ret;
-
if (!rport)
return -EALREADY;
- init_completion(&nport->rport_unreg_done);
-
- ret = nvme_fc_unregister_remoteport(rport->remoteport);
- if (ret)
- return ret;
-
- wait_for_completion(&nport->rport_unreg_done);
-
- fcloop_nport_put(nport);
-
- return ret;
+ return nvme_fc_unregister_remoteport(rport->remoteport);
}
static ssize_t
@@ -1029,7 +1015,7 @@ fcloop_delete_remote_port(struct device *dev, struct device_attribute *attr,
if (!nport)
return -ENOENT;
- ret = __wait_remoteport_unreg(nport, rport);
+ ret = __remoteport_unreg(nport, rport);
return ret ? ret : count;
}
@@ -1086,24 +1072,12 @@ __unlink_target_port(struct fcloop_nport *nport)
}
static int
-__wait_targetport_unreg(struct fcloop_nport *nport, struct fcloop_tport *tport)
+__targetport_unreg(struct fcloop_nport *nport, struct fcloop_tport *tport)
{
- int ret;
-
if (!tport)
return -EALREADY;
- init_completion(&nport->tport_unreg_done);
-
- ret = nvmet_fc_unregister_targetport(tport->targetport);
- if (ret)
- return ret;
-
- wait_for_completion(&nport->tport_unreg_done);
-
- fcloop_nport_put(nport);
-
- return ret;
+ return nvmet_fc_unregister_targetport(tport->targetport);
}
static ssize_t
@@ -1136,7 +1110,7 @@ fcloop_delete_target_port(struct device *dev, struct device_attribute *attr,
if (!nport)
return -ENOENT;
- ret = __wait_targetport_unreg(nport, tport);
+ ret = __targetport_unreg(nport, tport);
return ret ? ret : count;
}
@@ -1223,11 +1197,11 @@ static void __exit fcloop_exit(void)
spin_unlock_irqrestore(&fcloop_lock, flags);
- ret = __wait_targetport_unreg(nport, tport);
+ ret = __targetport_unreg(nport, tport);
if (ret)
pr_warn("%s: Failed deleting target port\n", __func__);
- ret = __wait_remoteport_unreg(nport, rport);
+ ret = __remoteport_unreg(nport, rport);
if (ret)
pr_warn("%s: Failed deleting remote port\n", __func__);
diff --git a/drivers/nvme/target/nvmet.h b/drivers/nvme/target/nvmet.h
index 7d261ab894f4..87e429bfcd8a 100644
--- a/drivers/nvme/target/nvmet.h
+++ b/drivers/nvme/target/nvmet.h
@@ -74,6 +74,7 @@ struct nvmet_sq {
struct percpu_ref ref;
u16 qid;
u16 size;
+ u32 sqhd;
struct completion free_done;
struct completion confirm_done;
};
diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile
index 173140658693..6f7a77fb3ee7 100644
--- a/drivers/nvmem/Makefile
+++ b/drivers/nvmem/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for nvmem drivers.
#
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index de54c7f5048a..d12e5de78e70 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -135,7 +135,7 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, struct kobject *kobj,
/* Stop the user from writing */
if (pos >= nvmem->size)
- return 0;
+ return -EFBIG;
if (count < nvmem->word_size)
return -EINVAL;
@@ -789,6 +789,7 @@ struct nvmem_cell *of_nvmem_cell_get(struct device_node *np,
return ERR_PTR(-EINVAL);
nvmem = __nvmem_device_get(nvmem_np, NULL, NULL);
+ of_node_put(nvmem_np);
if (IS_ERR(nvmem))
return ERR_CAST(nvmem);
diff --git a/drivers/of/Makefile b/drivers/of/Makefile
index 97dc01c81438..8f19d342eed8 100644
--- a/drivers/of/Makefile
+++ b/drivers/of/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y = base.o device.o platform.o property.o
obj-$(CONFIG_OF_DYNAMIC) += dynamic.o
obj-$(CONFIG_OF_FLATTREE) += fdt.o
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 260d33c0f26c..63897531cd75 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -1781,8 +1781,12 @@ bool of_console_check(struct device_node *dn, char *name, int index)
{
if (!dn || dn != of_stdout || console_set_on_cmdline)
return false;
- return !add_preferred_console(name, index,
- kstrdup(of_stdout_options, GFP_KERNEL));
+
+ /*
+ * XXX: cast `options' to char pointer to suppress complication
+ * warnings: printk, UART and console drivers expect char pointer.
+ */
+ return !add_preferred_console(name, index, (char *)of_stdout_options);
}
EXPORT_SYMBOL_GPL(of_console_check);
diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c
index d94dd8b77abd..98258583abb0 100644
--- a/drivers/of/of_mdio.c
+++ b/drivers/of/of_mdio.c
@@ -44,7 +44,7 @@ static int of_get_phy_id(struct device_node *device, u32 *phy_id)
return -EINVAL;
}
-static void of_mdiobus_register_phy(struct mii_bus *mdio,
+static int of_mdiobus_register_phy(struct mii_bus *mdio,
struct device_node *child, u32 addr)
{
struct phy_device *phy;
@@ -60,9 +60,13 @@ static void of_mdiobus_register_phy(struct mii_bus *mdio,
else
phy = get_phy_device(mdio, addr, is_c45);
if (IS_ERR(phy))
- return;
+ return PTR_ERR(phy);
- rc = irq_of_parse_and_map(child, 0);
+ rc = of_irq_get(child, 0);
+ if (rc == -EPROBE_DEFER) {
+ phy_device_free(phy);
+ return rc;
+ }
if (rc > 0) {
phy->irq = rc;
mdio->irq[addr] = rc;
@@ -84,22 +88,23 @@ static void of_mdiobus_register_phy(struct mii_bus *mdio,
if (rc) {
phy_device_free(phy);
of_node_put(child);
- return;
+ return rc;
}
dev_dbg(&mdio->dev, "registered phy %s at address %i\n",
child->name, addr);
+ return 0;
}
-static void of_mdiobus_register_device(struct mii_bus *mdio,
- struct device_node *child, u32 addr)
+static int of_mdiobus_register_device(struct mii_bus *mdio,
+ struct device_node *child, u32 addr)
{
struct mdio_device *mdiodev;
int rc;
mdiodev = mdio_device_create(mdio, addr);
if (IS_ERR(mdiodev))
- return;
+ return PTR_ERR(mdiodev);
/* Associate the OF node with the device structure so it
* can be looked up later.
@@ -112,11 +117,12 @@ static void of_mdiobus_register_device(struct mii_bus *mdio,
if (rc) {
mdio_device_free(mdiodev);
of_node_put(child);
- return;
+ return rc;
}
dev_dbg(&mdio->dev, "registered mdio device %s at address %i\n",
child->name, addr);
+ return 0;
}
/* The following is a list of PHY compatible strings which appear in
@@ -219,9 +225,11 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
}
if (of_mdiobus_child_is_phy(child))
- of_mdiobus_register_phy(mdio, child, addr);
+ rc = of_mdiobus_register_phy(mdio, child, addr);
else
- of_mdiobus_register_device(mdio, child, addr);
+ rc = of_mdiobus_register_device(mdio, child, addr);
+ if (rc)
+ goto unregister;
}
if (!scanphys)
@@ -242,12 +250,19 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
dev_info(&mdio->dev, "scan phy %s at address %i\n",
child->name, addr);
- if (of_mdiobus_child_is_phy(child))
- of_mdiobus_register_phy(mdio, child, addr);
+ if (of_mdiobus_child_is_phy(child)) {
+ rc = of_mdiobus_register_phy(mdio, child, addr);
+ if (rc)
+ goto unregister;
+ }
}
}
return 0;
+
+unregister:
+ mdiobus_unregister(mdio);
+ return rc;
}
EXPORT_SYMBOL(of_mdiobus_register);
diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
index d507c3569a88..32771c2ced7b 100644
--- a/drivers/of/of_reserved_mem.c
+++ b/drivers/of/of_reserved_mem.c
@@ -25,7 +25,7 @@
#include <linux/sort.h>
#include <linux/slab.h>
-#define MAX_RESERVED_REGIONS 16
+#define MAX_RESERVED_REGIONS 32
static struct reserved_mem reserved_mem[MAX_RESERVED_REGIONS];
static int reserved_mem_count;
diff --git a/drivers/of/property.c b/drivers/of/property.c
index fbb72116e9d4..264c355ba1ff 100644
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -954,7 +954,7 @@ of_fwnode_graph_get_port_parent(struct fwnode_handle *fwnode)
struct device_node *np;
/* Get the parent of the port */
- np = of_get_next_parent(to_of_node(fwnode));
+ np = of_get_parent(to_of_node(fwnode));
if (!np)
return NULL;
diff --git a/drivers/of/unittest-data/Makefile b/drivers/of/unittest-data/Makefile
index 2d135fba94c1..3031fc2f18f6 100644
--- a/drivers/of/unittest-data/Makefile
+++ b/drivers/of/unittest-data/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += testcases.dtb.o
targets += testcases.dtb testcases.dtb.S
diff --git a/drivers/of/unittest-data/overlay.dts b/drivers/of/unittest-data/overlay.dts
index 9e791fcf05dd..ab5e89b5e27e 100644
--- a/drivers/of/unittest-data/overlay.dts
+++ b/drivers/of/unittest-data/overlay.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/plugin/;
diff --git a/drivers/of/unittest-data/overlay_bad_phandle.dts b/drivers/of/unittest-data/overlay_bad_phandle.dts
index 270ee885a623..4d5b99723bad 100644
--- a/drivers/of/unittest-data/overlay_bad_phandle.dts
+++ b/drivers/of/unittest-data/overlay_bad_phandle.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/plugin/;
diff --git a/drivers/of/unittest-data/overlay_base.dts b/drivers/of/unittest-data/overlay_base.dts
index 453d0bd83320..820b79ca378a 100644
--- a/drivers/of/unittest-data/overlay_base.dts
+++ b/drivers/of/unittest-data/overlay_base.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/plugin/;
diff --git a/drivers/of/unittest-data/testcases.dts b/drivers/of/unittest-data/testcases.dts
index 12f7c3d649c8..ce49463d9d32 100644
--- a/drivers/of/unittest-data/testcases.dts
+++ b/drivers/of/unittest-data/testcases.dts
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/ {
testcase-data {
diff --git a/drivers/of/unittest-data/tests-interrupts.dtsi b/drivers/of/unittest-data/tests-interrupts.dtsi
index da4695f60351..ec175e800725 100644
--- a/drivers/of/unittest-data/tests-interrupts.dtsi
+++ b/drivers/of/unittest-data/tests-interrupts.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
testcase-data {
diff --git a/drivers/of/unittest-data/tests-match.dtsi b/drivers/of/unittest-data/tests-match.dtsi
index c9e541129534..1fd3b21313f5 100644
--- a/drivers/of/unittest-data/tests-match.dtsi
+++ b/drivers/of/unittest-data/tests-match.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
testcase-data {
diff --git a/drivers/of/unittest-data/tests-overlay.dtsi b/drivers/of/unittest-data/tests-overlay.dtsi
index 02ba56c20fe1..7b8001ab9f3a 100644
--- a/drivers/of/unittest-data/tests-overlay.dtsi
+++ b/drivers/of/unittest-data/tests-overlay.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
testcase-data {
diff --git a/drivers/of/unittest-data/tests-phandle.dtsi b/drivers/of/unittest-data/tests-phandle.dtsi
index 5b1527e8a7fb..3c2f09e56b61 100644
--- a/drivers/of/unittest-data/tests-phandle.dtsi
+++ b/drivers/of/unittest-data/tests-phandle.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
aliases {
diff --git a/drivers/of/unittest-data/tests-platform.dtsi b/drivers/of/unittest-data/tests-platform.dtsi
index a0c93822aee3..fa39611071b3 100644
--- a/drivers/of/unittest-data/tests-platform.dtsi
+++ b/drivers/of/unittest-data/tests-platform.dtsi
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/ {
testcase-data {
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index 29a35cb1da64..168ef0bbabde 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Self tests for device tree subsystem
*/
diff --git a/drivers/oprofile/nmi_timer_int.c b/drivers/oprofile/nmi_timer_int.c
index e65a576e4032..f343bd96609a 100644
--- a/drivers/oprofile/nmi_timer_int.c
+++ b/drivers/oprofile/nmi_timer_int.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/**
* @file nmi_timer_int.c
*
diff --git a/drivers/oprofile/oprofile_perf.c b/drivers/oprofile/oprofile_perf.c
index d5b2732b1b81..4b150a754890 100644
--- a/drivers/oprofile/oprofile_perf.c
+++ b/drivers/oprofile/oprofile_perf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright 2010 ARM Ltd.
* Copyright 2012 Advanced Micro Devices, Inc., Robert Richter
diff --git a/drivers/parisc/Makefile b/drivers/parisc/Makefile
index f95cab57133a..3cd5e6cb8478 100644
--- a/drivers/parisc/Makefile
+++ b/drivers/parisc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for most of the non-PCI devices in PA-RISC machines
#
diff --git a/drivers/parisc/iommu-helpers.h b/drivers/parisc/iommu-helpers.h
index e56f1569f6c3..0905be256de0 100644
--- a/drivers/parisc/iommu-helpers.h
+++ b/drivers/parisc/iommu-helpers.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/prefetch.h>
/**
diff --git a/drivers/parport/Makefile b/drivers/parport/Makefile
index 696b8d4ca887..6fa41f8173b6 100644
--- a/drivers/parport/Makefile
+++ b/drivers/parport/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel Parallel port device drivers.
#
diff --git a/drivers/parport/ieee1284_ops.c b/drivers/parport/ieee1284_ops.c
index a959224d011b..5d41dda6da4e 100644
--- a/drivers/parport/ieee1284_ops.c
+++ b/drivers/parport/ieee1284_ops.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* IEEE-1284 operations for parport.
*
* This file is for generic IEEE 1284 operations. The idea is that
diff --git a/drivers/parport/multiface.h b/drivers/parport/multiface.h
index 56769dd5d315..6513a44b9ca7 100644
--- a/drivers/parport/multiface.h
+++ b/drivers/parport/multiface.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MULTIFACE_H_
#define _MULTIFACE_H_
diff --git a/drivers/parport/probe.c b/drivers/parport/probe.c
index 4d1d6eaf333d..e035174ba205 100644
--- a/drivers/parport/probe.c
+++ b/drivers/parport/probe.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Parallel port device probing code
*
diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c
index 8ee44a104ac4..48804049d697 100644
--- a/drivers/parport/procfs.c
+++ b/drivers/parport/procfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Sysctl interface for parport devices.
*
* Authors: David Campbell
diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
index 66a21acad952..80adbdbcecce 100644
--- a/drivers/pci/Makefile
+++ b/drivers/pci/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the PCI bus specific drivers.
#
diff --git a/drivers/pci/dwc/Makefile b/drivers/pci/dwc/Makefile
index c61be9738cce..e73661182da0 100644
--- a/drivers/pci/dwc/Makefile
+++ b/drivers/pci/dwc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PCIE_DW) += pcie-designware.o
obj-$(CONFIG_PCIE_DW_HOST) += pcie-designware-host.o
obj-$(CONFIG_PCIE_DW_EP) += pcie-designware-ep.o
diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c
index 4ddc6e8f9fe7..f9308c2f22e6 100644
--- a/drivers/pci/endpoint/functions/pci-epf-test.c
+++ b/drivers/pci/endpoint/functions/pci-epf-test.c
@@ -251,9 +251,8 @@ err:
return ret;
}
-static void pci_epf_test_raise_irq(struct pci_epf_test *epf_test)
+static void pci_epf_test_raise_irq(struct pci_epf_test *epf_test, u8 irq)
{
- u8 irq;
u8 msi_count;
struct pci_epf *epf = epf_test->epf;
struct pci_epc *epc = epf->epc;
@@ -262,7 +261,6 @@ static void pci_epf_test_raise_irq(struct pci_epf_test *epf_test)
reg->status |= STATUS_IRQ_RAISED;
msi_count = pci_epc_get_msi(epc);
- irq = (reg->command & MSI_NUMBER_MASK) >> MSI_NUMBER_SHIFT;
if (irq > msi_count || msi_count <= 0)
pci_epc_raise_irq(epc, PCI_EPC_IRQ_LEGACY, 0);
else
@@ -289,6 +287,8 @@ static void pci_epf_test_cmd_handler(struct work_struct *work)
reg->command = 0;
reg->status = 0;
+ irq = (command & MSI_NUMBER_MASK) >> MSI_NUMBER_SHIFT;
+
if (command & COMMAND_RAISE_LEGACY_IRQ) {
reg->status = STATUS_IRQ_RAISED;
pci_epc_raise_irq(epc, PCI_EPC_IRQ_LEGACY, 0);
@@ -301,7 +301,7 @@ static void pci_epf_test_cmd_handler(struct work_struct *work)
reg->status |= STATUS_WRITE_FAIL;
else
reg->status |= STATUS_WRITE_SUCCESS;
- pci_epf_test_raise_irq(epf_test);
+ pci_epf_test_raise_irq(epf_test, irq);
goto reset_handler;
}
@@ -311,7 +311,7 @@ static void pci_epf_test_cmd_handler(struct work_struct *work)
reg->status |= STATUS_READ_SUCCESS;
else
reg->status |= STATUS_READ_FAIL;
- pci_epf_test_raise_irq(epf_test);
+ pci_epf_test_raise_irq(epf_test, irq);
goto reset_handler;
}
@@ -321,13 +321,12 @@ static void pci_epf_test_cmd_handler(struct work_struct *work)
reg->status |= STATUS_COPY_SUCCESS;
else
reg->status |= STATUS_COPY_FAIL;
- pci_epf_test_raise_irq(epf_test);
+ pci_epf_test_raise_irq(epf_test, irq);
goto reset_handler;
}
if (command & COMMAND_RAISE_MSI_IRQ) {
msi_count = pci_epc_get_msi(epc);
- irq = (command & MSI_NUMBER_MASK) >> MSI_NUMBER_SHIFT;
if (irq > msi_count || msi_count <= 0)
goto reset_handler;
reg->status = STATUS_IRQ_RAISED;
diff --git a/drivers/pci/host/Makefile b/drivers/pci/host/Makefile
index 12382785e02a..95f5b80ca52a 100644
--- a/drivers/pci/host/Makefile
+++ b/drivers/pci/host/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PCI_FTPCI100) += pci-ftpci100.o
obj-$(CONFIG_PCI_HYPERV) += pci-hyperv.o
obj-$(CONFIG_PCI_MVEBU) += pci-mvebu.o
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
index 89f4e3d072d7..26ed0c08f209 100644
--- a/drivers/pci/host/pci-aardvark.c
+++ b/drivers/pci/host/pci-aardvark.c
@@ -935,6 +935,8 @@ static int advk_pcie_probe(struct platform_device *pdev)
bridge->sysdata = pcie;
bridge->busnr = 0;
bridge->ops = &advk_pcie_ops;
+ bridge->map_irq = of_irq_parse_and_map_pci;
+ bridge->swizzle_irq = pci_common_swizzle;
ret = pci_scan_root_bus_bridge(bridge);
if (ret < 0) {
diff --git a/drivers/pci/host/pci-ftpci100.c b/drivers/pci/host/pci-ftpci100.c
index 96028f01bc90..4ea7d2ebcc5c 100644
--- a/drivers/pci/host/pci-ftpci100.c
+++ b/drivers/pci/host/pci-ftpci100.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for Faraday Technology FTPC100 PCI Controller
*
diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
index 9c40da54f88a..1987fec1f126 100644
--- a/drivers/pci/host/pci-tegra.c
+++ b/drivers/pci/host/pci-tegra.c
@@ -233,6 +233,7 @@ struct tegra_msi {
struct msi_controller chip;
DECLARE_BITMAP(used, INT_PCI_MSI_NR);
struct irq_domain *domain;
+ unsigned long pages;
struct mutex lock;
u64 phys;
int irq;
@@ -1529,22 +1530,9 @@ static int tegra_pcie_enable_msi(struct tegra_pcie *pcie)
goto err;
}
- /*
- * The PCI host bridge on Tegra contains some logic that intercepts
- * MSI writes, which means that the MSI target address doesn't have
- * to point to actual physical memory. Rather than allocating one 4
- * KiB page of system memory that's never used, we can simply pick
- * an arbitrary address within an area reserved for system memory
- * in the FPCI address map.
- *
- * However, in order to avoid confusion, we pick an address that
- * doesn't map to physical memory. The FPCI address map reserves a
- * 1012 GiB region for system memory and memory-mapped I/O. Since
- * none of the Tegra SoCs that contain this PCI host bridge can
- * address more than 16 GiB of system memory, the last 4 KiB of
- * these 1012 GiB is a good candidate.
- */
- msi->phys = 0xfcfffff000;
+ /* setup AFI/FPCI range */
+ msi->pages = __get_free_pages(GFP_KERNEL, 0);
+ msi->phys = virt_to_phys((void *)msi->pages);
afi_writel(pcie, msi->phys >> soc->msi_base_shift, AFI_MSI_FPCI_BAR_ST);
afi_writel(pcie, msi->phys, AFI_MSI_AXI_BAR_ST);
@@ -1596,6 +1584,8 @@ static int tegra_pcie_disable_msi(struct tegra_pcie *pcie)
afi_writel(pcie, 0, AFI_MSI_EN_VEC6);
afi_writel(pcie, 0, AFI_MSI_EN_VEC7);
+ free_pages(msi->pages, 0);
+
if (msi->irq > 0)
free_irq(msi->irq, pcie);
diff --git a/drivers/pci/host/pcie-tango.c b/drivers/pci/host/pcie-tango.c
index 6bbb81f06a53..95049de4131c 100644
--- a/drivers/pci/host/pcie-tango.c
+++ b/drivers/pci/host/pcie-tango.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/pci-ecam.h>
#include <linux/delay.h>
#include <linux/of.h>
diff --git a/drivers/pci/hotplug/Makefile b/drivers/pci/hotplug/Makefile
index e33cdda45a4d..7e3331603714 100644
--- a/drivers/pci/hotplug/Makefile
+++ b/drivers/pci/hotplug/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux kernel pci hotplug controller drivers.
#
diff --git a/drivers/pci/htirq.c b/drivers/pci/htirq.c
index 7eb4109a3df4..bb88c26f5144 100644
--- a/drivers/pci/htirq.c
+++ b/drivers/pci/htirq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* File: htirq.c
* Purpose: Hypertransport Interrupt Capability
diff --git a/drivers/pci/irq.c b/drivers/pci/irq.c
index 83d30953ce19..10929cd43d5d 100644
--- a/drivers/pci/irq.c
+++ b/drivers/pci/irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PCI IRQ handling code
*
diff --git a/drivers/pci/pci-label.c b/drivers/pci/pci-label.c
index 7e9e79575d93..a961a71d950f 100644
--- a/drivers/pci/pci-label.c
+++ b/drivers/pci/pci-label.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Purpose: Export the firmware instance and label associated with
* a pci device to sysfs
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index 1eecfa301f7f..00fa4278c1f4 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* drivers/pci/pci-sysfs.c
*
@@ -686,7 +687,7 @@ static ssize_t driver_override_store(struct device *dev,
const char *buf, size_t count)
{
struct pci_dev *pdev = to_pci_dev(dev);
- char *driver_override, *old = pdev->driver_override, *cp;
+ char *driver_override, *old, *cp;
/* We need to keep extra room for a newline */
if (count >= (PAGE_SIZE - 1))
@@ -700,12 +701,15 @@ static ssize_t driver_override_store(struct device *dev,
if (cp)
*cp = '\0';
+ device_lock(dev);
+ old = pdev->driver_override;
if (strlen(driver_override)) {
pdev->driver_override = driver_override;
} else {
kfree(driver_override);
pdev->driver_override = NULL;
}
+ device_unlock(dev);
kfree(old);
@@ -716,8 +720,12 @@ static ssize_t driver_override_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct pci_dev *pdev = to_pci_dev(dev);
+ ssize_t len;
- return snprintf(buf, PAGE_SIZE, "%s\n", pdev->driver_override);
+ device_lock(dev);
+ len = snprintf(buf, PAGE_SIZE, "%s\n", pdev->driver_override);
+ device_unlock(dev);
+ return len;
}
static DEVICE_ATTR_RW(driver_override);
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index b0002daa50f3..6078dfc11b11 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -52,7 +52,6 @@ static void pci_pme_list_scan(struct work_struct *work);
static LIST_HEAD(pci_pme_list);
static DEFINE_MUTEX(pci_pme_list_mutex);
static DECLARE_DELAYED_WORK(pci_pme_work, pci_pme_list_scan);
-static DEFINE_MUTEX(pci_bridge_mutex);
struct pci_pme_device {
struct list_head list;
@@ -1351,16 +1350,10 @@ static void pci_enable_bridge(struct pci_dev *dev)
if (bridge)
pci_enable_bridge(bridge);
- /*
- * Hold pci_bridge_mutex to prevent a race when enabling two
- * devices below the bridge simultaneously. The race may cause a
- * PCI_COMMAND_MEMORY update to be lost (see changelog).
- */
- mutex_lock(&pci_bridge_mutex);
if (pci_is_enabled(dev)) {
if (!dev->is_busmaster)
pci_set_master(dev);
- goto end;
+ return;
}
retval = pci_enable_device(dev);
@@ -1368,8 +1361,6 @@ static void pci_enable_bridge(struct pci_dev *dev)
dev_err(&dev->dev, "Error enabling bridge (%d), continuing\n",
retval);
pci_set_master(dev);
-end:
- mutex_unlock(&pci_bridge_mutex);
}
static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags)
@@ -1394,7 +1385,7 @@ static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags)
return 0; /* already enabled */
bridge = pci_upstream_bridge(dev);
- if (bridge && !pci_is_enabled(bridge))
+ if (bridge)
pci_enable_bridge(bridge);
/* only skip sriov related */
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index a6560c9baa52..fdb02c1f94bb 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DRIVERS_PCI_H
#define DRIVERS_PCI_H
diff --git a/drivers/pci/pcie/Makefile b/drivers/pci/pcie/Makefile
index 36e35ea8fde7..223e4c34c29a 100644
--- a/drivers/pci/pcie/Makefile
+++ b/drivers/pci/pcie/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for PCI-Express PORT Driver
#
diff --git a/drivers/pci/pcie/aer/Makefile b/drivers/pci/pcie/aer/Makefile
index 2cba67510dc8..09bd890875a3 100644
--- a/drivers/pci/pcie/aer/Makefile
+++ b/drivers/pci/pcie/aer/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for PCI-Express Root Port Advanced Error Reporting Driver
#
diff --git a/drivers/pci/pcie/aer/aerdrv.h b/drivers/pci/pcie/aer/aerdrv.h
index d51e4a57b190..5449e5ce139d 100644
--- a/drivers/pci/pcie/aer/aerdrv.h
+++ b/drivers/pci/pcie/aer/aerdrv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2006 Intel Corp.
* Tom Long Nguyen (tom.l.nguyen@intel.com)
diff --git a/drivers/pci/pcie/aer/aerdrv_acpi.c b/drivers/pci/pcie/aer/aerdrv_acpi.c
index 01906576ab91..b2019440e882 100644
--- a/drivers/pci/pcie/aer/aerdrv_acpi.c
+++ b/drivers/pci/pcie/aer/aerdrv_acpi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Access ACPI _OSC method
*
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 1dfa10cc566b..83e4a892b14b 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* File: drivers/pci/pcie/aspm.c
* Enabling PCIe link L0s/L1 state and Clock Power Management
diff --git a/drivers/pci/pcie/portdrv.h b/drivers/pci/pcie/portdrv.h
index 4334fd5d7de9..a854bc569117 100644
--- a/drivers/pci/pcie/portdrv.h
+++ b/drivers/pci/pcie/portdrv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File: portdrv.h
* Purpose: PCI Express Port Bus Driver's Internal Data Structures
diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
index 313a21df1692..ebc9d45bd731 100644
--- a/drivers/pci/pcie/portdrv_core.c
+++ b/drivers/pci/pcie/portdrv_core.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* File: portdrv_core.c
* Purpose: PCI Express Port Bus Driver's Core Functions
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c
index be635f017756..68c389c7b975 100644
--- a/drivers/pci/pcie/portdrv_pci.c
+++ b/drivers/pci/pcie/portdrv_pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* File: portdrv_pci.c
* Purpose: PCI Express Port Bus Driver
@@ -260,7 +261,7 @@ static int __init dmi_pcie_pme_disable_msi(const struct dmi_system_id *d)
return 0;
}
-static struct dmi_system_id __initdata pcie_portdrv_dmi_table[] = {
+static const struct dmi_system_id pcie_portdrv_dmi_table[] __initconst = {
/*
* Boxes that should not use MSI for PCIe PME signaling.
*/
diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
index 098360d7ff81..58a662e3c4a6 100644
--- a/drivers/pci/proc.c
+++ b/drivers/pci/proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Procfs interface for the PCI bus.
*
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index a2afb44fad10..911b3b65c8b2 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file contains work-arounds for many known PCI hardware
* bugs. Devices present only on certain architectures (host
@@ -1707,7 +1708,7 @@ static int dmi_disable_ioapicreroute(const struct dmi_system_id *d)
return 0;
}
-static struct dmi_system_id boot_interrupt_dmi_table[] = {
+static const struct dmi_system_id boot_interrupt_dmi_table[] = {
/*
* Systems to exclude from boot interrupt reroute quirks
*/
diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c
index e576e1a8d978..c039149cacb0 100644
--- a/drivers/pci/setup-res.c
+++ b/drivers/pci/setup-res.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* drivers/pci/setup-res.c
*
diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c
index 9bf993e1f71e..83efa001c2e7 100644
--- a/drivers/pci/syscall.c
+++ b/drivers/pci/syscall.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* pci_syscall.c
*
diff --git a/drivers/pcmcia/Makefile b/drivers/pcmcia/Makefile
index 27e94b30cf96..e7dae16b9a43 100644
--- a/drivers/pcmcia/Makefile
+++ b/drivers/pcmcia/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel pcmcia subsystem (c/o David Hinds)
#
diff --git a/drivers/pcmcia/bcm63xx_pcmcia.h b/drivers/pcmcia/bcm63xx_pcmcia.h
index ed957399d863..2122c59a1c4a 100644
--- a/drivers/pcmcia/bcm63xx_pcmcia.h
+++ b/drivers/pcmcia/bcm63xx_pcmcia.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BCM63XX_PCMCIA_H_
#define BCM63XX_PCMCIA_H_
diff --git a/drivers/pcmcia/db1xxx_ss.c b/drivers/pcmcia/db1xxx_ss.c
index 944674ee3464..19e17829f515 100644
--- a/drivers/pcmcia/db1xxx_ss.c
+++ b/drivers/pcmcia/db1xxx_ss.c
@@ -131,22 +131,27 @@ static irqreturn_t db1000_pcmcia_stschgirq(int irq, void *data)
return IRQ_HANDLED;
}
+/* Db/Pb1200 have separate per-socket insertion and ejection
+ * interrupts which stay asserted as long as the card is
+ * inserted/missing. The one which caused us to be called
+ * needs to be disabled and the other one enabled.
+ */
static irqreturn_t db1200_pcmcia_cdirq(int irq, void *data)
{
+ disable_irq_nosync(irq);
+ return IRQ_WAKE_THREAD;
+}
+
+static irqreturn_t db1200_pcmcia_cdirq_fn(int irq, void *data)
+{
struct db1x_pcmcia_sock *sock = data;
- /* Db/Pb1200 have separate per-socket insertion and ejection
- * interrupts which stay asserted as long as the card is
- * inserted/missing. The one which caused us to be called
- * needs to be disabled and the other one enabled.
- */
- if (irq == sock->insert_irq) {
- disable_irq_nosync(sock->insert_irq);
+ /* Wait a bit for the signals to stop bouncing. */
+ msleep(100);
+ if (irq == sock->insert_irq)
enable_irq(sock->eject_irq);
- } else {
- disable_irq_nosync(sock->eject_irq);
+ else
enable_irq(sock->insert_irq);
- }
pcmcia_parse_events(&sock->socket, SS_DETECT);
@@ -172,13 +177,13 @@ static int db1x_pcmcia_setup_irqs(struct db1x_pcmcia_sock *sock)
*/
if ((sock->board_type == BOARD_TYPE_DB1200) ||
(sock->board_type == BOARD_TYPE_DB1300)) {
- ret = request_irq(sock->insert_irq, db1200_pcmcia_cdirq,
- 0, "pcmcia_insert", sock);
+ ret = request_threaded_irq(sock->insert_irq, db1200_pcmcia_cdirq,
+ db1200_pcmcia_cdirq_fn, 0, "pcmcia_insert", sock);
if (ret)
goto out1;
- ret = request_irq(sock->eject_irq, db1200_pcmcia_cdirq,
- 0, "pcmcia_eject", sock);
+ ret = request_threaded_irq(sock->eject_irq, db1200_pcmcia_cdirq,
+ db1200_pcmcia_cdirq_fn, 0, "pcmcia_eject", sock);
if (ret) {
free_irq(sock->insert_irq, sock);
goto out1;
diff --git a/drivers/pcmcia/i82092aa.h b/drivers/pcmcia/i82092aa.h
index 8836d393ad02..fabe08c3e33d 100644
--- a/drivers/pcmcia/i82092aa.h
+++ b/drivers/pcmcia/i82092aa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INCLUDE_GUARD_i82092aa_H_
#define _INCLUDE_GUARD_i82092aa_H_
diff --git a/drivers/pcmcia/m32r_cfc.h b/drivers/pcmcia/m32r_cfc.h
index f558e1adf954..05fec98617d0 100644
--- a/drivers/pcmcia/m32r_cfc.h
+++ b/drivers/pcmcia/m32r_cfc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2001 by Hiroyuki Kondo
*/
diff --git a/drivers/pcmcia/m32r_pcc.h b/drivers/pcmcia/m32r_pcc.h
index f95c58563bc8..d99ad3864ff3 100644
--- a/drivers/pcmcia/m32r_pcc.h
+++ b/drivers/pcmcia/m32r_pcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2001 by Hiroyuki Kondo
*/
diff --git a/drivers/pcmcia/pd6729.h b/drivers/pcmcia/pd6729.h
index c8e84bdece38..605cc2ccf9c5 100644
--- a/drivers/pcmcia/pd6729.h
+++ b/drivers/pcmcia/pd6729.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INCLUDE_GUARD_PD6729_H_
#define _INCLUDE_GUARD_PD6729_H_
diff --git a/drivers/pcmcia/sa1100_assabet.c b/drivers/pcmcia/sa1100_assabet.c
index 71ace6910d7e..78ad2bba76db 100644
--- a/drivers/pcmcia/sa1100_assabet.c
+++ b/drivers/pcmcia/sa1100_assabet.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* drivers/pcmcia/sa1100_assabet.c
*
diff --git a/drivers/pcmcia/sa1100_cerf.c b/drivers/pcmcia/sa1100_cerf.c
index c3f67363f6a1..2a54081d161d 100644
--- a/drivers/pcmcia/sa1100_cerf.c
+++ b/drivers/pcmcia/sa1100_cerf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* drivers/pcmcia/sa1100_cerf.c
*
diff --git a/drivers/pcmcia/sa1100_generic.h b/drivers/pcmcia/sa1100_generic.h
index adb08dbc723f..a5f1f1dd63cb 100644
--- a/drivers/pcmcia/sa1100_generic.h
+++ b/drivers/pcmcia/sa1100_generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "soc_common.h"
#include "sa11xx_base.h"
diff --git a/drivers/pcmcia/sa1100_h3600.c b/drivers/pcmcia/sa1100_h3600.c
index 431d8b07cbaf..aebf9a66fdde 100644
--- a/drivers/pcmcia/sa1100_h3600.c
+++ b/drivers/pcmcia/sa1100_h3600.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* drivers/pcmcia/sa1100_h3600.c
*
diff --git a/drivers/pcmcia/sa1100_shannon.c b/drivers/pcmcia/sa1100_shannon.c
index b07a2dc3296e..0e52a575986e 100644
--- a/drivers/pcmcia/sa1100_shannon.c
+++ b/drivers/pcmcia/sa1100_shannon.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* drivers/pcmcia/sa1100_shannon.c
*
diff --git a/drivers/pcmcia/sa1100_simpad.c b/drivers/pcmcia/sa1100_simpad.c
index 73fd37968b6a..7ce65bb23a8e 100644
--- a/drivers/pcmcia/sa1100_simpad.c
+++ b/drivers/pcmcia/sa1100_simpad.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* drivers/pcmcia/sa1100_simpad.c
*
diff --git a/drivers/pcmcia/sa1111_generic.h b/drivers/pcmcia/sa1111_generic.h
index e74ecfdc1b26..c01571d46982 100644
--- a/drivers/pcmcia/sa1111_generic.h
+++ b/drivers/pcmcia/sa1111_generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "soc_common.h"
#include "sa11xx_base.h"
diff --git a/drivers/pcmcia/sa1111_jornada720.c b/drivers/pcmcia/sa1111_jornada720.c
index 480a3ede27c8..3d4ca87ca76c 100644
--- a/drivers/pcmcia/sa1111_jornada720.c
+++ b/drivers/pcmcia/sa1111_jornada720.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* drivers/pcmcia/sa1100_jornada720.c
*
diff --git a/drivers/pcmcia/sa1111_neponset.c b/drivers/pcmcia/sa1111_neponset.c
index 019c395eb4bf..0ccf05a28a4b 100644
--- a/drivers/pcmcia/sa1111_neponset.c
+++ b/drivers/pcmcia/sa1111_neponset.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/drivers/pcmcia/sa1100_neponset.c
*
diff --git a/drivers/pcmcia/soc_common.h b/drivers/pcmcia/soc_common.h
index 3f3625805353..b7f993f1bbd0 100644
--- a/drivers/pcmcia/soc_common.h
+++ b/drivers/pcmcia/soc_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/drivers/pcmcia/soc_common.h
*
diff --git a/drivers/pcmcia/yenta_socket.h b/drivers/pcmcia/yenta_socket.h
index 4e75e9e258cd..efeed19e28c7 100644
--- a/drivers/pcmcia/yenta_socket.h
+++ b/drivers/pcmcia/yenta_socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __YENTA_H
#define __YENTA_H
diff --git a/drivers/perf/Makefile b/drivers/perf/Makefile
index 6420bd4394d5..9402dc8ff22c 100644
--- a/drivers/perf/Makefile
+++ b/drivers/perf/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ARM_PMU) += arm_pmu.o arm_pmu_platform.o
obj-$(CONFIG_ARM_PMU_ACPI) += arm_pmu_acpi.o
obj-$(CONFIG_QCOM_L2_PMU) += qcom_l2_pmu.o
diff --git a/drivers/perf/arm_pmu_acpi.c b/drivers/perf/arm_pmu_acpi.c
index 0a9b78705ee8..3303dd8d8eb5 100644
--- a/drivers/perf/arm_pmu_acpi.c
+++ b/drivers/perf/arm_pmu_acpi.c
@@ -235,6 +235,7 @@ int arm_pmu_acpi_probe(armpmu_init_fn init_fn)
ret = armpmu_register(pmu);
if (ret) {
pr_warn("Failed to register PMU for CPU%d\n", cpu);
+ kfree(pmu->name);
return ret;
}
}
diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c
index 4eafa7a42e52..4428852e1da1 100644
--- a/drivers/perf/arm_pmu_platform.c
+++ b/drivers/perf/arm_pmu_platform.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* platform_device probing code for ARM performance counters.
*
diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index 441912c10b82..5c8d452e35e2 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -44,6 +44,7 @@ source "drivers/phy/allwinner/Kconfig"
source "drivers/phy/amlogic/Kconfig"
source "drivers/phy/broadcom/Kconfig"
source "drivers/phy/hisilicon/Kconfig"
+source "drivers/phy/lantiq/Kconfig"
source "drivers/phy/marvell/Kconfig"
source "drivers/phy/mediatek/Kconfig"
source "drivers/phy/motorola/Kconfig"
diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile
index 06f3c500030d..84e3bd9c5665 100644
--- a/drivers/phy/Makefile
+++ b/drivers/phy/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the phy drivers.
#
@@ -6,9 +7,9 @@ obj-$(CONFIG_GENERIC_PHY) += phy-core.o
obj-$(CONFIG_PHY_LPC18XX_USB_OTG) += phy-lpc18xx-usb-otg.o
obj-$(CONFIG_PHY_XGENE) += phy-xgene.o
obj-$(CONFIG_PHY_PISTACHIO_USB) += phy-pistachio-usb.o
-
obj-$(CONFIG_ARCH_SUNXI) += allwinner/
obj-$(CONFIG_ARCH_MESON) += amlogic/
+obj-$(CONFIG_LANTIQ) += lantiq/
obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/
obj-$(CONFIG_ARCH_RENESAS) += renesas/
obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip/
diff --git a/drivers/phy/broadcom/Makefile b/drivers/phy/broadcom/Makefile
index 4eb82ec8d491..fdd9ec8fd70b 100644
--- a/drivers/phy/broadcom/Makefile
+++ b/drivers/phy/broadcom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PHY_CYGNUS_PCIE) += phy-bcm-cygnus-pcie.o
obj-$(CONFIG_BCM_KONA_USB2_PHY) += phy-bcm-kona-usb2.o
obj-$(CONFIG_PHY_BCM_NS_USB2) += phy-bcm-ns-usb2.o
diff --git a/drivers/phy/lantiq/Kconfig b/drivers/phy/lantiq/Kconfig
new file mode 100644
index 000000000000..326d88a6417d
--- /dev/null
+++ b/drivers/phy/lantiq/Kconfig
@@ -0,0 +1,9 @@
+#
+# Phy drivers for Lantiq / Intel platforms
+#
+config PHY_LANTIQ_RCU_USB2
+ tristate "Lantiq XWAY SoC RCU based USB PHY"
+ depends on OF && (SOC_TYPE_XWAY || COMPILE_TEST)
+ select GENERIC_PHY
+ help
+ Support for the USB PHY(s) on the Lantiq / Intel XWAY family SoCs.
diff --git a/drivers/phy/lantiq/Makefile b/drivers/phy/lantiq/Makefile
new file mode 100644
index 000000000000..f73eb56a5416
--- /dev/null
+++ b/drivers/phy/lantiq/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_PHY_LANTIQ_RCU_USB2) += phy-lantiq-rcu-usb2.o
diff --git a/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c b/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c
new file mode 100644
index 000000000000..986224fca9e9
--- /dev/null
+++ b/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c
@@ -0,0 +1,254 @@
+/*
+ * Lantiq XWAY SoC RCU module based USB 1.1/2.0 PHY driver
+ *
+ * Copyright (C) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+ * Copyright (C) 2017 Hauke Mehrtens <hauke@hauke-m.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/clk.h>
+#include <linux/delay.h>
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/of_device.h>
+#include <linux/phy/phy.h>
+#include <linux/platform_device.h>
+#include <linux/property.h>
+#include <linux/regmap.h>
+#include <linux/reset.h>
+
+/* Transmitter HS Pre-Emphasis Enable */
+#define RCU_CFG1_TX_PEE BIT(0)
+/* Disconnect Threshold */
+#define RCU_CFG1_DIS_THR_MASK 0x00038000
+#define RCU_CFG1_DIS_THR_SHIFT 15
+
+struct ltq_rcu_usb2_bits {
+ u8 hostmode;
+ u8 slave_endianness;
+ u8 host_endianness;
+ bool have_ana_cfg;
+};
+
+struct ltq_rcu_usb2_priv {
+ struct regmap *regmap;
+ unsigned int phy_reg_offset;
+ unsigned int ana_cfg1_reg_offset;
+ const struct ltq_rcu_usb2_bits *reg_bits;
+ struct device *dev;
+ struct phy *phy;
+ struct clk *phy_gate_clk;
+ struct reset_control *ctrl_reset;
+ struct reset_control *phy_reset;
+};
+
+static const struct ltq_rcu_usb2_bits xway_rcu_usb2_reg_bits = {
+ .hostmode = 11,
+ .slave_endianness = 9,
+ .host_endianness = 10,
+ .have_ana_cfg = false,
+};
+
+static const struct ltq_rcu_usb2_bits xrx100_rcu_usb2_reg_bits = {
+ .hostmode = 11,
+ .slave_endianness = 17,
+ .host_endianness = 10,
+ .have_ana_cfg = false,
+};
+
+static const struct ltq_rcu_usb2_bits xrx200_rcu_usb2_reg_bits = {
+ .hostmode = 11,
+ .slave_endianness = 9,
+ .host_endianness = 10,
+ .have_ana_cfg = true,
+};
+
+static const struct of_device_id ltq_rcu_usb2_phy_of_match[] = {
+ {
+ .compatible = "lantiq,ase-usb2-phy",
+ .data = &xway_rcu_usb2_reg_bits,
+ },
+ {
+ .compatible = "lantiq,danube-usb2-phy",
+ .data = &xway_rcu_usb2_reg_bits,
+ },
+ {
+ .compatible = "lantiq,xrx100-usb2-phy",
+ .data = &xrx100_rcu_usb2_reg_bits,
+ },
+ {
+ .compatible = "lantiq,xrx200-usb2-phy",
+ .data = &xrx200_rcu_usb2_reg_bits,
+ },
+ {
+ .compatible = "lantiq,xrx300-usb2-phy",
+ .data = &xrx200_rcu_usb2_reg_bits,
+ },
+ { },
+};
+MODULE_DEVICE_TABLE(of, ltq_rcu_usb2_phy_of_match);
+
+static int ltq_rcu_usb2_phy_init(struct phy *phy)
+{
+ struct ltq_rcu_usb2_priv *priv = phy_get_drvdata(phy);
+
+ if (priv->reg_bits->have_ana_cfg) {
+ regmap_update_bits(priv->regmap, priv->ana_cfg1_reg_offset,
+ RCU_CFG1_TX_PEE, RCU_CFG1_TX_PEE);
+ regmap_update_bits(priv->regmap, priv->ana_cfg1_reg_offset,
+ RCU_CFG1_DIS_THR_MASK, 7 << RCU_CFG1_DIS_THR_SHIFT);
+ }
+
+ /* Configure core to host mode */
+ regmap_update_bits(priv->regmap, priv->phy_reg_offset,
+ BIT(priv->reg_bits->hostmode), 0);
+
+ /* Select DMA endianness (Host-endian: big-endian) */
+ regmap_update_bits(priv->regmap, priv->phy_reg_offset,
+ BIT(priv->reg_bits->slave_endianness), 0);
+ regmap_update_bits(priv->regmap, priv->phy_reg_offset,
+ BIT(priv->reg_bits->host_endianness),
+ BIT(priv->reg_bits->host_endianness));
+
+ return 0;
+}
+
+static int ltq_rcu_usb2_phy_power_on(struct phy *phy)
+{
+ struct ltq_rcu_usb2_priv *priv = phy_get_drvdata(phy);
+ struct device *dev = priv->dev;
+ int ret;
+
+ reset_control_deassert(priv->phy_reset);
+
+ ret = clk_prepare_enable(priv->phy_gate_clk);
+ if (ret)
+ dev_err(dev, "failed to enable PHY gate\n");
+
+ return ret;
+}
+
+static int ltq_rcu_usb2_phy_power_off(struct phy *phy)
+{
+ struct ltq_rcu_usb2_priv *priv = phy_get_drvdata(phy);
+
+ reset_control_assert(priv->phy_reset);
+
+ clk_disable_unprepare(priv->phy_gate_clk);
+
+ return 0;
+}
+
+static struct phy_ops ltq_rcu_usb2_phy_ops = {
+ .init = ltq_rcu_usb2_phy_init,
+ .power_on = ltq_rcu_usb2_phy_power_on,
+ .power_off = ltq_rcu_usb2_phy_power_off,
+ .owner = THIS_MODULE,
+};
+
+static int ltq_rcu_usb2_of_parse(struct ltq_rcu_usb2_priv *priv,
+ struct platform_device *pdev)
+{
+ struct device *dev = priv->dev;
+ const __be32 *offset;
+ int ret;
+
+ priv->reg_bits = of_device_get_match_data(dev);
+
+ priv->regmap = syscon_node_to_regmap(dev->of_node->parent);
+ if (IS_ERR(priv->regmap)) {
+ dev_err(dev, "Failed to lookup RCU regmap\n");
+ return PTR_ERR(priv->regmap);
+ }
+
+ offset = of_get_address(dev->of_node, 0, NULL, NULL);
+ if (!offset) {
+ dev_err(dev, "Failed to get RCU PHY reg offset\n");
+ return -ENOENT;
+ }
+ priv->phy_reg_offset = __be32_to_cpu(*offset);
+
+ if (priv->reg_bits->have_ana_cfg) {
+ offset = of_get_address(dev->of_node, 1, NULL, NULL);
+ if (!offset) {
+ dev_err(dev, "Failed to get RCU ANA CFG1 reg offset\n");
+ return -ENOENT;
+ }
+ priv->ana_cfg1_reg_offset = __be32_to_cpu(*offset);
+ }
+
+ priv->phy_gate_clk = devm_clk_get(dev, "phy");
+ if (IS_ERR(priv->phy_gate_clk)) {
+ dev_err(dev, "Unable to get USB phy gate clk\n");
+ return PTR_ERR(priv->phy_gate_clk);
+ }
+
+ priv->ctrl_reset = devm_reset_control_get_shared(dev, "ctrl");
+ if (IS_ERR(priv->ctrl_reset)) {
+ if (PTR_ERR(priv->ctrl_reset) != -EPROBE_DEFER)
+ dev_err(dev, "failed to get 'ctrl' reset\n");
+ return PTR_ERR(priv->ctrl_reset);
+ }
+
+ priv->phy_reset = devm_reset_control_get_optional(dev, "phy");
+ if (IS_ERR(priv->phy_reset))
+ return PTR_ERR(priv->phy_reset);
+
+ return 0;
+}
+
+static int ltq_rcu_usb2_phy_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct ltq_rcu_usb2_priv *priv;
+ struct phy_provider *provider;
+ int ret;
+
+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+ if (!priv)
+ return -ENOMEM;
+
+ priv->dev = dev;
+
+ ret = ltq_rcu_usb2_of_parse(priv, pdev);
+ if (ret)
+ return ret;
+
+ /* Reset USB core through reset controller */
+ reset_control_deassert(priv->ctrl_reset);
+
+ reset_control_assert(priv->phy_reset);
+
+ priv->phy = devm_phy_create(dev, dev->of_node, &ltq_rcu_usb2_phy_ops);
+ if (IS_ERR(priv->phy)) {
+ dev_err(dev, "failed to create PHY\n");
+ return PTR_ERR(priv->phy);
+ }
+
+ phy_set_drvdata(priv->phy, priv);
+
+ provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
+ if (IS_ERR(provider))
+ return PTR_ERR(provider);
+
+ dev_set_drvdata(priv->dev, priv);
+ return 0;
+}
+
+static struct platform_driver ltq_rcu_usb2_phy_driver = {
+ .probe = ltq_rcu_usb2_phy_probe,
+ .driver = {
+ .name = "lantiq-rcu-usb2-phy",
+ .of_match_table = ltq_rcu_usb2_phy_of_match,
+ }
+};
+module_platform_driver(ltq_rcu_usb2_phy_driver);
+
+MODULE_AUTHOR("Martin Blumenstingl <martin.blumenstingl@googlemail.com>");
+MODULE_DESCRIPTION("Lantiq XWAY USB2 PHY driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/phy/marvell/Makefile b/drivers/phy/marvell/Makefile
index 0cf6a7cbaf9f..5c3ec5d10e0d 100644
--- a/drivers/phy/marvell/Makefile
+++ b/drivers/phy/marvell/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ARMADA375_USBCLUSTER_PHY) += phy-armada375-usb2.o
obj-$(CONFIG_PHY_BERLIN_SATA) += phy-berlin-sata.o
obj-$(CONFIG_PHY_BERLIN_USB) += phy-berlin-usb.o
diff --git a/drivers/phy/marvell/phy-mvebu-cp110-comphy.c b/drivers/phy/marvell/phy-mvebu-cp110-comphy.c
index 73ebad6634a7..89c887ea5557 100644
--- a/drivers/phy/marvell/phy-mvebu-cp110-comphy.c
+++ b/drivers/phy/marvell/phy-mvebu-cp110-comphy.c
@@ -111,6 +111,8 @@
#define MVEBU_COMPHY_CONF6_40B BIT(18)
#define MVEBU_COMPHY_SELECTOR 0x1140
#define MVEBU_COMPHY_SELECTOR_PHY(n) ((n) * 0x4)
+#define MVEBU_COMPHY_PIPE_SELECTOR 0x1144
+#define MVEBU_COMPHY_PIPE_SELECTOR_PIPE(n) ((n) * 0x4)
#define MVEBU_COMPHY_LANES 6
#define MVEBU_COMPHY_PORTS 3
@@ -468,13 +470,17 @@ static int mvebu_comphy_power_on(struct phy *phy)
{
struct mvebu_comphy_lane *lane = phy_get_drvdata(phy);
struct mvebu_comphy_priv *priv = lane->priv;
- int ret;
- u32 mux, val;
+ int ret, mux;
+ u32 val;
mux = mvebu_comphy_get_mux(lane->id, lane->port, lane->mode);
if (mux < 0)
return -ENOTSUPP;
+ regmap_read(priv->regmap, MVEBU_COMPHY_PIPE_SELECTOR, &val);
+ val &= ~(0xf << MVEBU_COMPHY_PIPE_SELECTOR_PIPE(lane->id));
+ regmap_write(priv->regmap, MVEBU_COMPHY_PIPE_SELECTOR, val);
+
regmap_read(priv->regmap, MVEBU_COMPHY_SELECTOR, &val);
val &= ~(0xf << MVEBU_COMPHY_SELECTOR_PHY(lane->id));
val |= mux << MVEBU_COMPHY_SELECTOR_PHY(lane->id);
@@ -526,6 +532,10 @@ static int mvebu_comphy_power_off(struct phy *phy)
val &= ~(0xf << MVEBU_COMPHY_SELECTOR_PHY(lane->id));
regmap_write(priv->regmap, MVEBU_COMPHY_SELECTOR, val);
+ regmap_read(priv->regmap, MVEBU_COMPHY_PIPE_SELECTOR, &val);
+ val &= ~(0xf << MVEBU_COMPHY_PIPE_SELECTOR_PIPE(lane->id));
+ regmap_write(priv->regmap, MVEBU_COMPHY_PIPE_SELECTOR, val);
+
return 0;
}
@@ -576,8 +586,8 @@ static int mvebu_comphy_probe(struct platform_device *pdev)
return PTR_ERR(priv->regmap);
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
priv->base = devm_ioremap_resource(&pdev->dev, res);
- if (!priv->base)
- return -ENOMEM;
+ if (IS_ERR(priv->base))
+ return PTR_ERR(priv->base);
for_each_available_child_of_node(pdev->dev.of_node, child) {
struct mvebu_comphy_lane *lane;
diff --git a/drivers/phy/mediatek/phy-mtk-tphy.c b/drivers/phy/mediatek/phy-mtk-tphy.c
index e3baad78521f..721a2a1c97ef 100644
--- a/drivers/phy/mediatek/phy-mtk-tphy.c
+++ b/drivers/phy/mediatek/phy-mtk-tphy.c
@@ -27,6 +27,7 @@
/* banks shared by multiple phys */
#define SSUSB_SIFSLV_V1_SPLLC 0x000 /* shared by u3 phys */
#define SSUSB_SIFSLV_V1_U2FREQ 0x100 /* shared by u2 phys */
+#define SSUSB_SIFSLV_V1_CHIP 0x300 /* shared by u3 phys */
/* u2 phy bank */
#define SSUSB_SIFSLV_V1_U2PHY_COM 0x000
/* u3/pcie/sata phy banks */
@@ -762,7 +763,7 @@ static void phy_v1_banks_init(struct mtk_tphy *tphy,
case PHY_TYPE_USB3:
case PHY_TYPE_PCIE:
u3_banks->spllc = tphy->sif_base + SSUSB_SIFSLV_V1_SPLLC;
- u3_banks->chip = NULL;
+ u3_banks->chip = tphy->sif_base + SSUSB_SIFSLV_V1_CHIP;
u3_banks->phyd = instance->port_base + SSUSB_SIFSLV_V1_U3PHYD;
u3_banks->phya = instance->port_base + SSUSB_SIFSLV_V1_U3PHYA;
break;
diff --git a/drivers/phy/qualcomm/Makefile b/drivers/phy/qualcomm/Makefile
index 2e183d7695fd..9abb7899762a 100644
--- a/drivers/phy/qualcomm/Makefile
+++ b/drivers/phy/qualcomm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PHY_QCOM_APQ8064_SATA) += phy-qcom-apq8064-sata.o
obj-$(CONFIG_PHY_QCOM_IPQ806X_SATA) += phy-qcom-ipq806x-sata.o
obj-$(CONFIG_PHY_QCOM_QMP) += phy-qcom-qmp.o
diff --git a/drivers/phy/rockchip/Makefile b/drivers/phy/rockchip/Makefile
index bd0acdf38e0f..7f149d989046 100644
--- a/drivers/phy/rockchip/Makefile
+++ b/drivers/phy/rockchip/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PHY_ROCKCHIP_DP) += phy-rockchip-dp.o
obj-$(CONFIG_PHY_ROCKCHIP_EMMC) += phy-rockchip-emmc.o
obj-$(CONFIG_PHY_ROCKCHIP_INNO_USB2) += phy-rockchip-inno-usb2.o
diff --git a/drivers/phy/rockchip/phy-rockchip-typec.c b/drivers/phy/rockchip/phy-rockchip-typec.c
index 4d2c57f21d76..a958c9bced01 100644
--- a/drivers/phy/rockchip/phy-rockchip-typec.c
+++ b/drivers/phy/rockchip/phy-rockchip-typec.c
@@ -443,14 +443,34 @@ static inline int property_enable(struct rockchip_typec_phy *tcphy,
return regmap_write(tcphy->grf_regs, reg->offset, val | mask);
}
+static void tcphy_dp_aux_set_flip(struct rockchip_typec_phy *tcphy)
+{
+ u16 tx_ana_ctrl_reg_1;
+
+ /*
+ * Select the polarity of the xcvr:
+ * 1, Reverses the polarity (If TYPEC, Pulls ups aux_p and pull
+ * down aux_m)
+ * 0, Normal polarity (if TYPEC, pulls up aux_m and pulls down
+ * aux_p)
+ */
+ tx_ana_ctrl_reg_1 = readl(tcphy->base + TX_ANA_CTRL_REG_1);
+ if (!tcphy->flip)
+ tx_ana_ctrl_reg_1 |= BIT(12);
+ else
+ tx_ana_ctrl_reg_1 &= ~BIT(12);
+ writel(tx_ana_ctrl_reg_1, tcphy->base + TX_ANA_CTRL_REG_1);
+}
+
static void tcphy_dp_aux_calibration(struct rockchip_typec_phy *tcphy)
{
+ u16 tx_ana_ctrl_reg_1;
u16 rdata, rdata2, val;
/* disable txda_cal_latch_en for rewrite the calibration values */
- rdata = readl(tcphy->base + TX_ANA_CTRL_REG_1);
- val = rdata & 0xdfff;
- writel(val, tcphy->base + TX_ANA_CTRL_REG_1);
+ tx_ana_ctrl_reg_1 = readl(tcphy->base + TX_ANA_CTRL_REG_1);
+ tx_ana_ctrl_reg_1 &= ~BIT(13);
+ writel(tx_ana_ctrl_reg_1, tcphy->base + TX_ANA_CTRL_REG_1);
/*
* read a resistor calibration code from CMN_TXPUCAL_CTRL[6:0] and
@@ -472,9 +492,8 @@ static void tcphy_dp_aux_calibration(struct rockchip_typec_phy *tcphy)
* Activate this signal for 1 clock cycle to sample new calibration
* values.
*/
- rdata = readl(tcphy->base + TX_ANA_CTRL_REG_1);
- val = rdata | 0x2000;
- writel(val, tcphy->base + TX_ANA_CTRL_REG_1);
+ tx_ana_ctrl_reg_1 |= BIT(13);
+ writel(tx_ana_ctrl_reg_1, tcphy->base + TX_ANA_CTRL_REG_1);
usleep_range(150, 200);
/* set TX Voltage Level and TX Deemphasis to 0 */
@@ -482,8 +501,10 @@ static void tcphy_dp_aux_calibration(struct rockchip_typec_phy *tcphy)
/* re-enable decap */
writel(0x100, tcphy->base + TX_ANA_CTRL_REG_2);
writel(0x300, tcphy->base + TX_ANA_CTRL_REG_2);
- writel(0x2008, tcphy->base + TX_ANA_CTRL_REG_1);
- writel(0x2018, tcphy->base + TX_ANA_CTRL_REG_1);
+ tx_ana_ctrl_reg_1 |= BIT(3);
+ writel(tx_ana_ctrl_reg_1, tcphy->base + TX_ANA_CTRL_REG_1);
+ tx_ana_ctrl_reg_1 |= BIT(4);
+ writel(tx_ana_ctrl_reg_1, tcphy->base + TX_ANA_CTRL_REG_1);
writel(0, tcphy->base + TX_ANA_CTRL_REG_5);
@@ -494,8 +515,10 @@ static void tcphy_dp_aux_calibration(struct rockchip_typec_phy *tcphy)
writel(0x1001, tcphy->base + TX_ANA_CTRL_REG_4);
/* re-enables Bandgap reference for LDO */
- writel(0x2098, tcphy->base + TX_ANA_CTRL_REG_1);
- writel(0x2198, tcphy->base + TX_ANA_CTRL_REG_1);
+ tx_ana_ctrl_reg_1 |= BIT(7);
+ writel(tx_ana_ctrl_reg_1, tcphy->base + TX_ANA_CTRL_REG_1);
+ tx_ana_ctrl_reg_1 |= BIT(8);
+ writel(tx_ana_ctrl_reg_1, tcphy->base + TX_ANA_CTRL_REG_1);
/*
* re-enables the transmitter pre-driver, driver data selection MUX,
@@ -505,27 +528,26 @@ static void tcphy_dp_aux_calibration(struct rockchip_typec_phy *tcphy)
writel(0x303, tcphy->base + TX_ANA_CTRL_REG_2);
/*
- * BIT 12: Controls auxda_polarity, which selects the polarity of the
- * xcvr:
- * 1, Reverses the polarity (If TYPEC, Pulls ups aux_p and pull
- * down aux_m)
- * 0, Normal polarity (if TYPE_C, pulls up aux_m and pulls down
- * aux_p)
+ * Do some magic undocumented stuff, some of which appears to
+ * undo the "re-enables Bandgap reference for LDO" above.
*/
- val = 0xa078;
- if (!tcphy->flip)
- val |= BIT(12);
- writel(val, tcphy->base + TX_ANA_CTRL_REG_1);
+ tx_ana_ctrl_reg_1 |= BIT(15);
+ tx_ana_ctrl_reg_1 &= ~BIT(8);
+ tx_ana_ctrl_reg_1 &= ~BIT(7);
+ tx_ana_ctrl_reg_1 |= BIT(6);
+ tx_ana_ctrl_reg_1 |= BIT(5);
+ writel(tx_ana_ctrl_reg_1, tcphy->base + TX_ANA_CTRL_REG_1);
writel(0, tcphy->base + TX_ANA_CTRL_REG_3);
writel(0, tcphy->base + TX_ANA_CTRL_REG_4);
writel(0, tcphy->base + TX_ANA_CTRL_REG_5);
/*
- * Controls low_power_swing_en, set the voltage swing of the driver
- * to 400mv. The values below are peak to peak (differential) values.
+ * Controls low_power_swing_en, don't set the voltage swing of the
+ * driver to 400mv. The values below are peak to peak (differential)
+ * values.
*/
- writel(4, tcphy->base + TXDA_COEFF_CALC_CTRL);
+ writel(0, tcphy->base + TXDA_COEFF_CALC_CTRL);
writel(0, tcphy->base + TXDA_CYA_AUXDA_CYA);
/* Controls tx_high_z_tm_en */
@@ -555,6 +577,7 @@ static int tcphy_phy_init(struct rockchip_typec_phy *tcphy, u8 mode)
reset_control_deassert(tcphy->tcphy_rst);
property_enable(tcphy, &cfg->typec_conn_dir, tcphy->flip);
+ tcphy_dp_aux_set_flip(tcphy);
tcphy_cfg_24m(tcphy);
@@ -685,8 +708,11 @@ static int rockchip_usb3_phy_power_on(struct phy *phy)
if (tcphy->mode == new_mode)
goto unlock_ret;
- if (tcphy->mode == MODE_DISCONNECT)
- tcphy_phy_init(tcphy, new_mode);
+ if (tcphy->mode == MODE_DISCONNECT) {
+ ret = tcphy_phy_init(tcphy, new_mode);
+ if (ret)
+ goto unlock_ret;
+ }
/* wait TCPHY for pipe ready */
for (timeout = 0; timeout < 100; timeout++) {
@@ -760,10 +786,12 @@ static int rockchip_dp_phy_power_on(struct phy *phy)
*/
if (new_mode == MODE_DFP_DP && tcphy->mode != MODE_DISCONNECT) {
tcphy_phy_deinit(tcphy);
- tcphy_phy_init(tcphy, new_mode);
+ ret = tcphy_phy_init(tcphy, new_mode);
} else if (tcphy->mode == MODE_DISCONNECT) {
- tcphy_phy_init(tcphy, new_mode);
+ ret = tcphy_phy_init(tcphy, new_mode);
}
+ if (ret)
+ goto unlock_ret;
ret = readx_poll_timeout(readl, tcphy->base + DP_MODE_CTL,
val, val & DP_MODE_A2, 1000,
diff --git a/drivers/phy/samsung/Makefile b/drivers/phy/samsung/Makefile
index 20d7f2424772..db9b1aa0de6e 100644
--- a/drivers/phy/samsung/Makefile
+++ b/drivers/phy/samsung/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PHY_EXYNOS_DP_VIDEO) += phy-exynos-dp-video.o
obj-$(CONFIG_PHY_EXYNOS_MIPI_VIDEO) += phy-exynos-mipi-video.o
obj-$(CONFIG_PHY_EXYNOS_PCIE) += phy-exynos-pcie.o
diff --git a/drivers/phy/tegra/xusb.c b/drivers/phy/tegra/xusb.c
index 3cbcb2537657..4307bf0013e1 100644
--- a/drivers/phy/tegra/xusb.c
+++ b/drivers/phy/tegra/xusb.c
@@ -454,6 +454,8 @@ tegra_xusb_find_port_node(struct tegra_xusb_padctl *padctl, const char *type,
char *name;
name = kasprintf(GFP_KERNEL, "%s-%u", type, index);
+ if (!name)
+ return ERR_PTR(-ENOMEM);
np = of_find_node_by_name(np, name);
kfree(name);
}
diff --git a/drivers/phy/ti/Makefile b/drivers/phy/ti/Makefile
index 0cc3a1a557a3..9f361756eaf2 100644
--- a/drivers/phy/ti/Makefile
+++ b/drivers/phy/ti/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PHY_DA8XX_USB) += phy-da8xx-usb.o
obj-$(CONFIG_PHY_DM816X_USB) += phy-dm816x-usb.o
obj-$(CONFIG_OMAP_CONTROL_PHY) += phy-omap-control.o
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 1778cf4f81c7..82cd8b08d71f 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -100,6 +100,7 @@ config PINCTRL_AMD
tristate "AMD GPIO pin control"
depends on GPIOLIB
select GPIOLIB_IRQCHIP
+ select PINMUX
select PINCONF
select GENERIC_PINCONF
help
diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile
index c16e27900dbb..d0d4844f8022 100644
--- a/drivers/pinctrl/Makefile
+++ b/drivers/pinctrl/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# generic pinmux support
subdir-ccflags-$(CONFIG_DEBUG_PINCTRL) += -DDEBUG
diff --git a/drivers/pinctrl/bcm/Makefile b/drivers/pinctrl/bcm/Makefile
index 2a65111f3c70..80ceb9dae944 100644
--- a/drivers/pinctrl/bcm/Makefile
+++ b/drivers/pinctrl/bcm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Broadcom pinctrl support
obj-$(CONFIG_PINCTRL_BCM281XX) += pinctrl-bcm281xx.o
diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
index 0944310225db..ff782445dfb7 100644
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
@@ -373,16 +373,12 @@ static void bcm2835_gpio_irq_handle_bank(struct bcm2835_pinctrl *pc,
unsigned long events;
unsigned offset;
unsigned gpio;
- unsigned int type;
events = bcm2835_gpio_rd(pc, GPEDS0 + bank * 4);
events &= mask;
events &= pc->enabled_irq_map[bank];
for_each_set_bit(offset, &events, 32) {
gpio = (32 * bank) + offset;
- /* FIXME: no clue why the code looks up the type here */
- type = pc->irq_type[gpio];
-
generic_handle_irq(irq_linear_revmap(pc->gpio_chip.irqdomain,
gpio));
}
diff --git a/drivers/pinctrl/freescale/Makefile b/drivers/pinctrl/freescale/Makefile
index 525a5ff5dcb4..19bb9a55a567 100644
--- a/drivers/pinctrl/freescale/Makefile
+++ b/drivers/pinctrl/freescale/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Freescale pin control drivers
obj-$(CONFIG_PINCTRL_IMX) += pinctrl-imx.o
obj-$(CONFIG_PINCTRL_IMX1_CORE) += pinctrl-imx1-core.o
diff --git a/drivers/pinctrl/intel/Makefile b/drivers/pinctrl/intel/Makefile
index c12874da5992..624d367caa09 100644
--- a/drivers/pinctrl/intel/Makefile
+++ b/drivers/pinctrl/intel/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Intel pin control drivers
obj-$(CONFIG_PINCTRL_BAYTRAIL) += pinctrl-baytrail.o
diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c
index 04e929fd0ffe..fadbca907c7c 100644
--- a/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ b/drivers/pinctrl/intel/pinctrl-cherryview.c
@@ -1577,6 +1577,7 @@ static int chv_gpio_probe(struct chv_pinctrl *pctrl, int irq)
struct gpio_chip *chip = &pctrl->chip;
bool need_valid_mask = !dmi_check_system(chv_no_valid_mask);
int ret, i, offset;
+ int irq_base;
*chip = chv_gpio_chip;
@@ -1622,7 +1623,18 @@ static int chv_gpio_probe(struct chv_pinctrl *pctrl, int irq)
/* Clear all interrupts */
chv_writel(0xffff, pctrl->regs + CHV_INTSTAT);
- ret = gpiochip_irqchip_add(chip, &chv_gpio_irqchip, 0,
+ if (!need_valid_mask) {
+ irq_base = devm_irq_alloc_descs(pctrl->dev, -1, 0,
+ chip->ngpio, NUMA_NO_NODE);
+ if (irq_base < 0) {
+ dev_err(pctrl->dev, "Failed to allocate IRQ numbers\n");
+ return irq_base;
+ }
+ } else {
+ irq_base = 0;
+ }
+
+ ret = gpiochip_irqchip_add(chip, &chv_gpio_irqchip, irq_base,
handle_bad_irq, IRQ_TYPE_NONE);
if (ret) {
dev_err(pctrl->dev, "failed to add IRQ chip\n");
diff --git a/drivers/pinctrl/mediatek/Makefile b/drivers/pinctrl/mediatek/Makefile
index e59c613d4ddd..10d90140a38a 100644
--- a/drivers/pinctrl/mediatek/Makefile
+++ b/drivers/pinctrl/mediatek/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Core
obj-y += pinctrl-mtk-common.o
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt6397.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6397.h
index 4eb98ddb40a4..17df4cfbde4e 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-mt6397.h
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6397.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PINCTRL_MTK_MT6397_H
#define __PINCTRL_MTK_MT6397_H
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt8127.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8127.h
index 212559c147f8..850483d7d9be 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-mt8127.h
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8127.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PINCTRL_MTK_MT8127_H
#define __PINCTRL_MTK_MT8127_H
diff --git a/drivers/pinctrl/mvebu/Makefile b/drivers/pinctrl/mvebu/Makefile
index 5b03fd55e28d..cd082dca4482 100644
--- a/drivers/pinctrl/mvebu/Makefile
+++ b/drivers/pinctrl/mvebu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PINCTRL_MVEBU) += pinctrl-mvebu.o
obj-$(CONFIG_PINCTRL_DOVE) += pinctrl-dove.o
obj-$(CONFIG_PINCTRL_KIRKWOOD) += pinctrl-kirkwood.o
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
index b8b6ab072cd0..71b944748304 100644
--- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
@@ -550,9 +550,9 @@ static int armada_37xx_irq_set_wake(struct irq_data *d, unsigned int on)
spin_lock_irqsave(&info->irq_lock, flags);
val = readl(info->base + reg);
if (on)
- val |= d->mask;
+ val |= (BIT(d->hwirq % GPIO_PER_REG));
else
- val &= ~d->mask;
+ val &= ~(BIT(d->hwirq % GPIO_PER_REG));
writel(val, info->base + reg);
spin_unlock_irqrestore(&info->irq_lock, flags);
@@ -571,10 +571,10 @@ static int armada_37xx_irq_set_type(struct irq_data *d, unsigned int type)
val = readl(info->base + reg);
switch (type) {
case IRQ_TYPE_EDGE_RISING:
- val &= ~d->mask;
+ val &= ~(BIT(d->hwirq % GPIO_PER_REG));
break;
case IRQ_TYPE_EDGE_FALLING:
- val |= d->mask;
+ val |= (BIT(d->hwirq % GPIO_PER_REG));
break;
default:
spin_unlock_irqrestore(&info->irq_lock, flags);
@@ -624,11 +624,27 @@ static void armada_37xx_irq_handler(struct irq_desc *desc)
chained_irq_exit(chip, desc);
}
+static unsigned int armada_37xx_irq_startup(struct irq_data *d)
+{
+ struct gpio_chip *chip = irq_data_get_irq_chip_data(d);
+ int irq = d->hwirq - chip->irq_base;
+ /*
+ * The mask field is a "precomputed bitmask for accessing the
+ * chip registers" which was introduced for the generic
+ * irqchip framework. As we don't use this framework, we can
+ * reuse this field for our own usage.
+ */
+ d->mask = BIT(irq % GPIO_PER_REG);
+
+ armada_37xx_irq_unmask(d);
+
+ return 0;
+}
+
static int armada_37xx_irqchip_register(struct platform_device *pdev,
struct armada_37xx_pinctrl *info)
{
struct device_node *np = info->dev->of_node;
- int nrirqs = info->data->nr_pins;
struct gpio_chip *gc = &info->gpio_chip;
struct irq_chip *irqchip = &info->irq_chip;
struct resource res;
@@ -666,8 +682,8 @@ static int armada_37xx_irqchip_register(struct platform_device *pdev,
irqchip->irq_unmask = armada_37xx_irq_unmask;
irqchip->irq_set_wake = armada_37xx_irq_set_wake;
irqchip->irq_set_type = armada_37xx_irq_set_type;
+ irqchip->irq_startup = armada_37xx_irq_startup;
irqchip->name = info->data->name;
-
ret = gpiochip_irqchip_add(gc, irqchip, 0,
handle_edge_irq, IRQ_TYPE_NONE);
if (ret) {
@@ -680,19 +696,6 @@ static int armada_37xx_irqchip_register(struct platform_device *pdev,
* controller. But we do not take advantage of this and use
* the chained irq with all of them.
*/
- for (i = 0; i < nrirqs; i++) {
- struct irq_data *d = irq_get_irq_data(gc->irq_base + i);
-
- /*
- * The mask field is a "precomputed bitmask for
- * accessing the chip registers" which was introduced
- * for the generic irqchip framework. As we don't use
- * this framework, we can reuse this field for our own
- * usage.
- */
- d->mask = BIT(i % GPIO_PER_REG);
- }
-
for (i = 0; i < nr_irq_parent; i++) {
int irq = irq_of_parse_and_map(np, i);
diff --git a/drivers/pinctrl/nomadik/Makefile b/drivers/pinctrl/nomadik/Makefile
index 30b27f18cd52..bf8b7517ee4a 100644
--- a/drivers/pinctrl/nomadik/Makefile
+++ b/drivers/pinctrl/nomadik/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Nomadik family pin control drivers
obj-$(CONFIG_PINCTRL_ABX500) += pinctrl-abx500.o
obj-$(CONFIG_PINCTRL_AB8500) += pinctrl-ab8500.o
diff --git a/drivers/pinctrl/nomadik/pinctrl-abx500.h b/drivers/pinctrl/nomadik/pinctrl-abx500.h
index 2beef3bfe9ca..43f9b718a8ef 100644
--- a/drivers/pinctrl/nomadik/pinctrl-abx500.h
+++ b/drivers/pinctrl/nomadik/pinctrl-abx500.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef PINCTRL_PINCTRL_ABx500_H
#define PINCTRL_PINCTRL_ABx500_H
diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik-db8500.c b/drivers/pinctrl/nomadik/pinctrl-nomadik-db8500.c
index af4814479eb0..726c0b5501fa 100644
--- a/drivers/pinctrl/nomadik/pinctrl-nomadik-db8500.c
+++ b/drivers/pinctrl/nomadik/pinctrl-nomadik-db8500.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/pinctrl/pinctrl.h>
#include "pinctrl-nomadik.h"
diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik-db8540.c b/drivers/pinctrl/nomadik/pinctrl-nomadik-db8540.c
index 2860eafd1b42..ae3ac7b799a6 100644
--- a/drivers/pinctrl/nomadik/pinctrl-nomadik-db8540.c
+++ b/drivers/pinctrl/nomadik/pinctrl-nomadik-db8540.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/pinctrl/pinctrl.h>
#include "pinctrl-nomadik.h"
diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik-stn8815.c b/drivers/pinctrl/nomadik/pinctrl-nomadik-stn8815.c
index e852048c4c04..7e814764da7d 100644
--- a/drivers/pinctrl/nomadik/pinctrl-nomadik-stn8815.c
+++ b/drivers/pinctrl/nomadik/pinctrl-nomadik-stn8815.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/pinctrl/pinctrl.h>
#include "pinctrl-nomadik.h"
diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik.h b/drivers/pinctrl/nomadik/pinctrl-nomadik.h
index 30bba2a75a58..ae0bac06639f 100644
--- a/drivers/pinctrl/nomadik/pinctrl-nomadik.h
+++ b/drivers/pinctrl/nomadik/pinctrl-nomadik.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef PINCTRL_PINCTRL_NOMADIK_H
#define PINCTRL_PINCTRL_NOMADIK_H
diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c
index 38af1ec2df0c..433af328d981 100644
--- a/drivers/pinctrl/pinctrl-amd.c
+++ b/drivers/pinctrl/pinctrl-amd.c
@@ -36,6 +36,7 @@
#include <linux/pinctrl/pinconf.h>
#include <linux/pinctrl/pinconf-generic.h>
+#include "core.h"
#include "pinctrl-utils.h"
#include "pinctrl-amd.h"
@@ -533,8 +534,16 @@ static irqreturn_t amd_gpio_irq_handler(int irq, void *dev_id)
continue;
irq = irq_find_mapping(gc->irqdomain, irqnr + i);
generic_handle_irq(irq);
- /* Clear interrupt */
+
+ /* Clear interrupt.
+ * We must read the pin register again, in case the
+ * value was changed while executing
+ * generic_handle_irq() above.
+ */
+ raw_spin_lock_irqsave(&gpio_dev->lock, flags);
+ regval = readl(regs + i);
writel(regval, regs + i);
+ raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
ret = IRQ_HANDLED;
}
}
@@ -725,6 +734,69 @@ static const struct pinconf_ops amd_pinconf_ops = {
.pin_config_group_set = amd_pinconf_group_set,
};
+#ifdef CONFIG_PM_SLEEP
+static bool amd_gpio_should_save(struct amd_gpio *gpio_dev, unsigned int pin)
+{
+ const struct pin_desc *pd = pin_desc_get(gpio_dev->pctrl, pin);
+
+ if (!pd)
+ return false;
+
+ /*
+ * Only restore the pin if it is actually in use by the kernel (or
+ * by userspace).
+ */
+ if (pd->mux_owner || pd->gpio_owner ||
+ gpiochip_line_is_irq(&gpio_dev->gc, pin))
+ return true;
+
+ return false;
+}
+
+int amd_gpio_suspend(struct device *dev)
+{
+ struct platform_device *pdev = to_platform_device(dev);
+ struct amd_gpio *gpio_dev = platform_get_drvdata(pdev);
+ struct pinctrl_desc *desc = gpio_dev->pctrl->desc;
+ int i;
+
+ for (i = 0; i < desc->npins; i++) {
+ int pin = desc->pins[i].number;
+
+ if (!amd_gpio_should_save(gpio_dev, pin))
+ continue;
+
+ gpio_dev->saved_regs[i] = readl(gpio_dev->base + pin*4);
+ }
+
+ return 0;
+}
+
+int amd_gpio_resume(struct device *dev)
+{
+ struct platform_device *pdev = to_platform_device(dev);
+ struct amd_gpio *gpio_dev = platform_get_drvdata(pdev);
+ struct pinctrl_desc *desc = gpio_dev->pctrl->desc;
+ int i;
+
+ for (i = 0; i < desc->npins; i++) {
+ int pin = desc->pins[i].number;
+
+ if (!amd_gpio_should_save(gpio_dev, pin))
+ continue;
+
+ writel(gpio_dev->saved_regs[i], gpio_dev->base + pin*4);
+ }
+
+ return 0;
+}
+
+static const struct dev_pm_ops amd_gpio_pm_ops = {
+ SET_LATE_SYSTEM_SLEEP_PM_OPS(amd_gpio_suspend,
+ amd_gpio_resume)
+};
+#endif
+
static struct pinctrl_desc amd_pinctrl_desc = {
.pins = kerncz_pins,
.npins = ARRAY_SIZE(kerncz_pins),
@@ -764,6 +836,14 @@ static int amd_gpio_probe(struct platform_device *pdev)
return irq_base;
}
+#ifdef CONFIG_PM_SLEEP
+ gpio_dev->saved_regs = devm_kcalloc(&pdev->dev, amd_pinctrl_desc.npins,
+ sizeof(*gpio_dev->saved_regs),
+ GFP_KERNEL);
+ if (!gpio_dev->saved_regs)
+ return -ENOMEM;
+#endif
+
gpio_dev->pdev = pdev;
gpio_dev->gc.direction_input = amd_gpio_direction_input;
gpio_dev->gc.direction_output = amd_gpio_direction_output;
@@ -853,6 +933,9 @@ static struct platform_driver amd_gpio_driver = {
.driver = {
.name = "amd_gpio",
.acpi_match_table = ACPI_PTR(amd_gpio_acpi_match),
+#ifdef CONFIG_PM_SLEEP
+ .pm = &amd_gpio_pm_ops,
+#endif
},
.probe = amd_gpio_probe,
.remove = amd_gpio_remove,
diff --git a/drivers/pinctrl/pinctrl-amd.h b/drivers/pinctrl/pinctrl-amd.h
index 5b1cb965c767..8fa453a59da5 100644
--- a/drivers/pinctrl/pinctrl-amd.h
+++ b/drivers/pinctrl/pinctrl-amd.h
@@ -97,6 +97,7 @@ struct amd_gpio {
unsigned int hwbank_num;
struct resource *res;
struct platform_device *pdev;
+ u32 *saved_regs;
};
/* KERNCZ configuration*/
diff --git a/drivers/pinctrl/pinctrl-coh901.h b/drivers/pinctrl/pinctrl-coh901.h
index 87294222583e..ba2678665168 100644
--- a/drivers/pinctrl/pinctrl-coh901.h
+++ b/drivers/pinctrl/pinctrl-coh901.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
int u300_gpio_config_get(struct gpio_chip *chip,
unsigned offset,
unsigned long *config);
diff --git a/drivers/pinctrl/pinctrl-mcp23s08.c b/drivers/pinctrl/pinctrl-mcp23s08.c
index 3e40d4245512..9c950bbf07ba 100644
--- a/drivers/pinctrl/pinctrl-mcp23s08.c
+++ b/drivers/pinctrl/pinctrl-mcp23s08.c
@@ -407,10 +407,10 @@ static int mcp23s08_get(struct gpio_chip *chip, unsigned offset)
ret = mcp_read(mcp, MCP_GPIO, &status);
if (ret < 0)
status = 0;
- else
+ else {
+ mcp->cached_gpio = status;
status = !!(status & (1 << offset));
-
- mcp->cached_gpio = status;
+ }
mutex_unlock(&mcp->lock);
return status;
diff --git a/drivers/pinctrl/qcom/Makefile b/drivers/pinctrl/qcom/Makefile
index 06c8b2ace05f..a1db345ded1c 100644
--- a/drivers/pinctrl/qcom/Makefile
+++ b/drivers/pinctrl/qcom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Qualcomm pin control drivers
obj-$(CONFIG_PINCTRL_MSM) += pinctrl-msm.o
obj-$(CONFIG_PINCTRL_APQ8064) += pinctrl-apq8064.o
diff --git a/drivers/pinctrl/samsung/Makefile b/drivers/pinctrl/samsung/Makefile
index 595995851ea5..df426561d067 100644
--- a/drivers/pinctrl/samsung/Makefile
+++ b/drivers/pinctrl/samsung/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Samsung pin control drivers
obj-$(CONFIG_PINCTRL_SAMSUNG) += pinctrl-samsung.o
diff --git a/drivers/pinctrl/sh-pfc/Makefile b/drivers/pinctrl/sh-pfc/Makefile
index 1d4f05a96bd4..a7903904b64e 100644
--- a/drivers/pinctrl/sh-pfc/Makefile
+++ b/drivers/pinctrl/sh-pfc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PINCTRL_SH_PFC) += core.o pinctrl.o
obj-$(CONFIG_PINCTRL_SH_PFC_GPIO) += gpio.o
obj-$(CONFIG_PINCTRL_PFC_EMEV2) += pfc-emev2.o
diff --git a/drivers/pinctrl/sh-pfc/pfc-sh7722.c b/drivers/pinctrl/sh-pfc/pfc-sh7722.c
index 29c69133b0ef..0e733bffdb38 100644
--- a/drivers/pinctrl/sh-pfc/pfc-sh7722.c
+++ b/drivers/pinctrl/sh-pfc/pfc-sh7722.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/gpio.h>
diff --git a/drivers/pinctrl/spear/Makefile b/drivers/pinctrl/spear/Makefile
index 37b8412ac8a3..da52d17550a3 100644
--- a/drivers/pinctrl/spear/Makefile
+++ b/drivers/pinctrl/spear/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# SPEAr pinmux support
obj-$(CONFIG_PINCTRL_SPEAR_PLGPIO) += pinctrl-plgpio.o
diff --git a/drivers/pinctrl/sprd/Kconfig b/drivers/pinctrl/sprd/Kconfig
index 6f4a7f9ac6fd..bc7f3fab22f1 100644
--- a/drivers/pinctrl/sprd/Kconfig
+++ b/drivers/pinctrl/sprd/Kconfig
@@ -4,6 +4,8 @@
config PINCTRL_SPRD
bool "Spreadtrum pinctrl driver"
+ depends on OF
+ depends on ARCH_SPRD || COMPILE_TEST
select PINMUX
select PINCONF
select GENERIC_PINCONF
@@ -13,5 +15,6 @@ config PINCTRL_SPRD
config PINCTRL_SPRD_SC9860
bool "Spreadtrum SC9860 pinctrl driver"
+ depends on PINCTRL_SPRD
help
Say Y here to enable Spreadtrum SC9860 pinctrl driver
diff --git a/drivers/pinctrl/sprd/pinctrl-sprd.c b/drivers/pinctrl/sprd/pinctrl-sprd.c
index 7e7b9ac7e836..63529911445c 100644
--- a/drivers/pinctrl/sprd/pinctrl-sprd.c
+++ b/drivers/pinctrl/sprd/pinctrl-sprd.c
@@ -353,13 +353,13 @@ static const struct pinctrl_ops sprd_pctrl_ops = {
.dt_free_map = pinctrl_utils_free_map,
};
-int sprd_pmx_get_function_count(struct pinctrl_dev *pctldev)
+static int sprd_pmx_get_function_count(struct pinctrl_dev *pctldev)
{
return PIN_FUNC_MAX;
}
-const char *sprd_pmx_get_function_name(struct pinctrl_dev *pctldev,
- unsigned int selector)
+static const char *sprd_pmx_get_function_name(struct pinctrl_dev *pctldev,
+ unsigned int selector)
{
switch (selector) {
case PIN_FUNC_1:
@@ -375,10 +375,10 @@ const char *sprd_pmx_get_function_name(struct pinctrl_dev *pctldev,
}
}
-int sprd_pmx_get_function_groups(struct pinctrl_dev *pctldev,
- unsigned int selector,
- const char * const **groups,
- unsigned int * const num_groups)
+static int sprd_pmx_get_function_groups(struct pinctrl_dev *pctldev,
+ unsigned int selector,
+ const char * const **groups,
+ unsigned int * const num_groups)
{
struct sprd_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
struct sprd_pinctrl_soc_info *info = pctl->info;
@@ -400,7 +400,7 @@ static int sprd_pmx_set_mux(struct pinctrl_dev *pctldev,
unsigned long reg;
unsigned int val = 0;
- if (group_selector > info->ngroups)
+ if (group_selector >= info->ngroups)
return -EINVAL;
switch (func_selector) {
@@ -734,7 +734,7 @@ static int sprd_pinconf_group_get(struct pinctrl_dev *pctldev,
struct sprd_pin_group *grp;
unsigned int pin_id;
- if (selector > info->ngroups)
+ if (selector >= info->ngroups)
return -EINVAL;
grp = &info->groups[selector];
@@ -753,7 +753,7 @@ static int sprd_pinconf_group_set(struct pinctrl_dev *pctldev,
struct sprd_pin_group *grp;
int ret, i;
- if (selector > info->ngroups)
+ if (selector >= info->ngroups)
return -EINVAL;
grp = &info->groups[selector];
@@ -813,7 +813,7 @@ static void sprd_pinconf_group_dbg_show(struct pinctrl_dev *pctldev,
const char *name;
int i, ret;
- if (selector > info->ngroups)
+ if (selector >= info->ngroups)
return;
grp = &info->groups[selector];
@@ -1100,12 +1100,16 @@ int sprd_pinctrl_remove(struct platform_device *pdev)
void sprd_pinctrl_shutdown(struct platform_device *pdev)
{
- struct pinctrl *pinctl = devm_pinctrl_get(&pdev->dev);
+ struct pinctrl *pinctl;
struct pinctrl_state *state;
+ pinctl = devm_pinctrl_get(&pdev->dev);
+ if (IS_ERR(pinctl))
+ return;
state = pinctrl_lookup_state(pinctl, "shutdown");
- if (!IS_ERR(state))
- pinctrl_select_state(pinctl, state);
+ if (IS_ERR(state))
+ return;
+ pinctrl_select_state(pinctl, state);
}
MODULE_DESCRIPTION("SPREADTRUM Pin Controller Driver");
diff --git a/drivers/pinctrl/stm32/Makefile b/drivers/pinctrl/stm32/Makefile
index 5f379f5153f1..d13ca3573486 100644
--- a/drivers/pinctrl/stm32/Makefile
+++ b/drivers/pinctrl/stm32/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Core
obj-$(CONFIG_PINCTRL_STM32) += pinctrl-stm32.o
diff --git a/drivers/pinctrl/sunxi/Makefile b/drivers/pinctrl/sunxi/Makefile
index dc6c9619e41c..12a752e836ef 100644
--- a/drivers/pinctrl/sunxi/Makefile
+++ b/drivers/pinctrl/sunxi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Core
obj-y += pinctrl-sunxi.o
diff --git a/drivers/pinctrl/tegra/Makefile b/drivers/pinctrl/tegra/Makefile
index d9ea2be69cc4..bbcb043c34a2 100644
--- a/drivers/pinctrl/tegra/Makefile
+++ b/drivers/pinctrl/tegra/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PINCTRL_TEGRA) += pinctrl-tegra.o
obj-$(CONFIG_PINCTRL_TEGRA20) += pinctrl-tegra20.o
obj-$(CONFIG_PINCTRL_TEGRA30) += pinctrl-tegra30.o
diff --git a/drivers/pinctrl/uniphier/Makefile b/drivers/pinctrl/uniphier/Makefile
index d592ff77d60f..ec66c86e276e 100644
--- a/drivers/pinctrl/uniphier/Makefile
+++ b/drivers/pinctrl/uniphier/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += pinctrl-uniphier-core.o
obj-$(CONFIG_PINCTRL_UNIPHIER_LD4) += pinctrl-uniphier-ld4.o
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier.h b/drivers/pinctrl/uniphier/pinctrl-uniphier.h
index c075ecb8e5db..0a3d2ac27503 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier.h
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier.h
@@ -17,7 +17,7 @@
#define __PINCTRL_UNIPHIER_H__
#include <linux/bitops.h>
-#include <linux/bug.h>
+#include <linux/build_bug.h>
#include <linux/kernel.h>
#include <linux/types.h>
diff --git a/drivers/pinctrl/vt8500/Makefile b/drivers/pinctrl/vt8500/Makefile
index 24ec45dd0d80..c6a5c3b14e9e 100644
--- a/drivers/pinctrl/vt8500/Makefile
+++ b/drivers/pinctrl/vt8500/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# VIA/Wondermedia pinctrl support
obj-$(CONFIG_PINCTRL_WMT) += pinctrl-wmt.o
diff --git a/drivers/platform/Makefile b/drivers/platform/Makefile
index ca2692510733..d3a6630266a0 100644
--- a/drivers/platform/Makefile
+++ b/drivers/platform/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for linux/drivers/platform
#
diff --git a/drivers/platform/chrome/Makefile b/drivers/platform/chrome/Makefile
index 66c345ca35fc..a077b1f0211d 100644
--- a/drivers/platform/chrome/Makefile
+++ b/drivers/platform/chrome/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o
obj-$(CONFIG_CHROMEOS_PSTORE) += chromeos_pstore.o
diff --git a/drivers/platform/chrome/chromeos_laptop.c b/drivers/platform/chrome/chromeos_laptop.c
index e8a44a9bc916..d8599736a41a 100644
--- a/drivers/platform/chrome/chromeos_laptop.c
+++ b/drivers/platform/chrome/chromeos_laptop.c
@@ -518,7 +518,7 @@ static struct chromeos_laptop cr48 = {
.callback = chromeos_laptop_dmi_matched, \
.driver_data = (void *)&board_
-static struct dmi_system_id chromeos_laptop_dmi_table[] __initdata = {
+static const struct dmi_system_id chromeos_laptop_dmi_table[] __initconst = {
{
.ident = "Samsung Series 5 550",
.matches = {
diff --git a/drivers/platform/chrome/chromeos_pstore.c b/drivers/platform/chrome/chromeos_pstore.c
index 308a853ac4f1..b0693fdec8c6 100644
--- a/drivers/platform/chrome/chromeos_pstore.c
+++ b/drivers/platform/chrome/chromeos_pstore.c
@@ -14,7 +14,7 @@
#include <linux/platform_device.h>
#include <linux/pstore_ram.h>
-static struct dmi_system_id chromeos_pstore_dmi_table[] __initdata = {
+static const struct dmi_system_id chromeos_pstore_dmi_table[] __initconst = {
{
/*
* Today all Chromebooks/boxes ship with Google_* as version and
diff --git a/drivers/platform/chrome/cros_ec_lpc.c b/drivers/platform/chrome/cros_ec_lpc.c
index 2b6436d1b6a4..1baf720faf69 100644
--- a/drivers/platform/chrome/cros_ec_lpc.c
+++ b/drivers/platform/chrome/cros_ec_lpc.c
@@ -329,7 +329,7 @@ static const struct acpi_device_id cros_ec_lpc_acpi_device_ids[] = {
};
MODULE_DEVICE_TABLE(acpi, cros_ec_lpc_acpi_device_ids);
-static struct dmi_system_id cros_ec_lpc_dmi_table[] __initdata = {
+static const struct dmi_system_id cros_ec_lpc_dmi_table[] __initconst = {
{
/*
* Today all Chromebooks/boxes ship with Google_* as version and
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
index 91cec1751461..f9e3ae683bbe 100644
--- a/drivers/platform/x86/Makefile
+++ b/drivers/platform/x86/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for linux/drivers/platform/x86
# x86 Platform-Specific Drivers
diff --git a/drivers/platform/x86/compal-laptop.c b/drivers/platform/x86/compal-laptop.c
index a8e4a539e704..6bcb750e1865 100644
--- a/drivers/platform/x86/compal-laptop.c
+++ b/drivers/platform/x86/compal-laptop.c
@@ -805,7 +805,7 @@ static int dmi_check_cb_extra(const struct dmi_system_id *id)
return 1;
}
-static struct dmi_system_id __initdata compal_dmi_table[] = {
+static const struct dmi_system_id compal_dmi_table[] __initconst = {
{
.ident = "FL90/IFL90",
.matches = {
diff --git a/drivers/platform/x86/fujitsu-laptop.c b/drivers/platform/x86/fujitsu-laptop.c
index 85de30f93a9c..56a8195096a2 100644
--- a/drivers/platform/x86/fujitsu-laptop.c
+++ b/drivers/platform/x86/fujitsu-laptop.c
@@ -254,10 +254,12 @@ static int bl_update_status(struct backlight_device *b)
{
struct acpi_device *device = bl_get_data(b);
- if (b->props.power == FB_BLANK_POWERDOWN)
- call_fext_func(fext, FUNC_BACKLIGHT, 0x1, 0x4, 0x3);
- else
- call_fext_func(fext, FUNC_BACKLIGHT, 0x1, 0x4, 0x0);
+ if (fext) {
+ if (b->props.power == FB_BLANK_POWERDOWN)
+ call_fext_func(fext, FUNC_BACKLIGHT, 0x1, 0x4, 0x3);
+ else
+ call_fext_func(fext, FUNC_BACKLIGHT, 0x1, 0x4, 0x0);
+ }
return set_lcd_level(device, b->props.brightness);
}
diff --git a/drivers/platform/x86/hdaps.c b/drivers/platform/x86/hdaps.c
index 458e6c948c11..c26baf77938e 100644
--- a/drivers/platform/x86/hdaps.c
+++ b/drivers/platform/x86/hdaps.c
@@ -514,7 +514,7 @@ static int __init hdaps_dmi_match_invert(const struct dmi_system_id *id)
"ThinkPad T42p", so the order of the entries matters.
If your ThinkPad is not recognized, please update to latest
BIOS. This is especially the case for some R52 ThinkPads. */
-static struct dmi_system_id __initdata hdaps_whitelist[] = {
+static const struct dmi_system_id hdaps_whitelist[] __initconst = {
HDAPS_DMI_MATCH_INVERT("IBM", "ThinkPad R50p", HDAPS_BOTH_AXES),
HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R50"),
HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R51"),
diff --git a/drivers/platform/x86/ibm_rtl.c b/drivers/platform/x86/ibm_rtl.c
index 610ac8391caa..18d55cee5bcd 100644
--- a/drivers/platform/x86/ibm_rtl.c
+++ b/drivers/platform/x86/ibm_rtl.c
@@ -227,7 +227,7 @@ static void rtl_teardown_sysfs(void) {
}
-static struct dmi_system_id __initdata ibm_rtl_dmi_table[] = {
+static const struct dmi_system_id ibm_rtl_dmi_table[] __initconst = {
{ \
.matches = { \
DMI_MATCH(DMI_SYS_VENDOR, "IBM"), \
diff --git a/drivers/platform/x86/intel_oaktrail.c b/drivers/platform/x86/intel_oaktrail.c
index 6aa33c4a809f..5747f63c8d9f 100644
--- a/drivers/platform/x86/intel_oaktrail.c
+++ b/drivers/platform/x86/intel_oaktrail.c
@@ -299,7 +299,7 @@ static int dmi_check_cb(const struct dmi_system_id *id)
return 0;
}
-static struct dmi_system_id __initdata oaktrail_dmi_table[] = {
+static const struct dmi_system_id oaktrail_dmi_table[] __initconst = {
{
.ident = "OakTrail platform",
.matches = {
diff --git a/drivers/platform/x86/intel_pmc_ipc.c b/drivers/platform/x86/intel_pmc_ipc.c
index bb792a52248b..e03fa31446ca 100644
--- a/drivers/platform/x86/intel_pmc_ipc.c
+++ b/drivers/platform/x86/intel_pmc_ipc.c
@@ -33,6 +33,7 @@
#include <linux/suspend.h>
#include <linux/acpi.h>
#include <linux/io-64-nonatomic-lo-hi.h>
+#include <linux/spinlock.h>
#include <asm/intel_pmc_ipc.h>
@@ -131,6 +132,7 @@ static struct intel_pmc_ipc_dev {
/* gcr */
void __iomem *gcr_mem_base;
bool has_gcr_regs;
+ spinlock_t gcr_lock;
/* punit */
struct platform_device *punit_dev;
@@ -225,17 +227,17 @@ int intel_pmc_gcr_read(u32 offset, u32 *data)
{
int ret;
- mutex_lock(&ipclock);
+ spin_lock(&ipcdev.gcr_lock);
ret = is_gcr_valid(offset);
if (ret < 0) {
- mutex_unlock(&ipclock);
+ spin_unlock(&ipcdev.gcr_lock);
return ret;
}
*data = readl(ipcdev.gcr_mem_base + offset);
- mutex_unlock(&ipclock);
+ spin_unlock(&ipcdev.gcr_lock);
return 0;
}
@@ -255,17 +257,17 @@ int intel_pmc_gcr_write(u32 offset, u32 data)
{
int ret;
- mutex_lock(&ipclock);
+ spin_lock(&ipcdev.gcr_lock);
ret = is_gcr_valid(offset);
if (ret < 0) {
- mutex_unlock(&ipclock);
+ spin_unlock(&ipcdev.gcr_lock);
return ret;
}
writel(data, ipcdev.gcr_mem_base + offset);
- mutex_unlock(&ipclock);
+ spin_unlock(&ipcdev.gcr_lock);
return 0;
}
@@ -287,7 +289,7 @@ int intel_pmc_gcr_update(u32 offset, u32 mask, u32 val)
u32 new_val;
int ret = 0;
- mutex_lock(&ipclock);
+ spin_lock(&ipcdev.gcr_lock);
ret = is_gcr_valid(offset);
if (ret < 0)
@@ -309,7 +311,7 @@ int intel_pmc_gcr_update(u32 offset, u32 mask, u32 val)
}
gcr_ipc_unlock:
- mutex_unlock(&ipclock);
+ spin_unlock(&ipcdev.gcr_lock);
return ret;
}
EXPORT_SYMBOL_GPL(intel_pmc_gcr_update);
@@ -480,52 +482,41 @@ static irqreturn_t ioc(int irq, void *dev_id)
static int ipc_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
- resource_size_t pci_resource;
+ struct intel_pmc_ipc_dev *pmc = &ipcdev;
int ret;
- int len;
- ipcdev.dev = &pci_dev_get(pdev)->dev;
- ipcdev.irq_mode = IPC_TRIGGER_MODE_IRQ;
+ /* Only one PMC is supported */
+ if (pmc->dev)
+ return -EBUSY;
- ret = pci_enable_device(pdev);
+ pmc->irq_mode = IPC_TRIGGER_MODE_IRQ;
+
+ spin_lock_init(&ipcdev.gcr_lock);
+
+ ret = pcim_enable_device(pdev);
if (ret)
return ret;
- ret = pci_request_regions(pdev, "intel_pmc_ipc");
+ ret = pcim_iomap_regions(pdev, 1 << 0, pci_name(pdev));
if (ret)
return ret;
- pci_resource = pci_resource_start(pdev, 0);
- len = pci_resource_len(pdev, 0);
- if (!pci_resource || !len) {
- dev_err(&pdev->dev, "Failed to get resource\n");
- return -ENOMEM;
- }
+ init_completion(&pmc->cmd_complete);
- init_completion(&ipcdev.cmd_complete);
+ pmc->ipc_base = pcim_iomap_table(pdev)[0];
- if (request_irq(pdev->irq, ioc, 0, "intel_pmc_ipc", &ipcdev)) {
+ ret = devm_request_irq(&pdev->dev, pdev->irq, ioc, 0, "intel_pmc_ipc",
+ pmc);
+ if (ret) {
dev_err(&pdev->dev, "Failed to request irq\n");
- return -EBUSY;
+ return ret;
}
- ipcdev.ipc_base = ioremap_nocache(pci_resource, len);
- if (!ipcdev.ipc_base) {
- dev_err(&pdev->dev, "Failed to ioremap ipc base\n");
- free_irq(pdev->irq, &ipcdev);
- ret = -ENOMEM;
- }
+ pmc->dev = &pdev->dev;
- return ret;
-}
+ pci_set_drvdata(pdev, pmc);
-static void ipc_pci_remove(struct pci_dev *pdev)
-{
- free_irq(pdev->irq, &ipcdev);
- pci_release_regions(pdev);
- pci_dev_put(pdev);
- iounmap(ipcdev.ipc_base);
- ipcdev.dev = NULL;
+ return 0;
}
static const struct pci_device_id ipc_pci_ids[] = {
@@ -540,7 +531,6 @@ static struct pci_driver ipc_pci_driver = {
.name = "intel_pmc_ipc",
.id_table = ipc_pci_ids,
.probe = ipc_pci_probe,
- .remove = ipc_pci_remove,
};
static ssize_t intel_pmc_ipc_simple_cmd_store(struct device *dev,
@@ -850,17 +840,12 @@ static int ipc_plat_get_res(struct platform_device *pdev)
return -ENXIO;
}
size = PLAT_RESOURCE_IPC_SIZE + PLAT_RESOURCE_GCR_SIZE;
+ res->end = res->start + size - 1;
+
+ addr = devm_ioremap_resource(&pdev->dev, res);
+ if (IS_ERR(addr))
+ return PTR_ERR(addr);
- if (!request_mem_region(res->start, size, pdev->name)) {
- dev_err(&pdev->dev, "Failed to request ipc resource\n");
- return -EBUSY;
- }
- addr = ioremap_nocache(res->start, size);
- if (!addr) {
- dev_err(&pdev->dev, "I/O memory remapping failed\n");
- release_mem_region(res->start, size);
- return -ENOMEM;
- }
ipcdev.ipc_base = addr;
ipcdev.gcr_mem_base = addr + PLAT_RESOURCE_GCR_OFFSET;
@@ -917,12 +902,12 @@ MODULE_DEVICE_TABLE(acpi, ipc_acpi_ids);
static int ipc_plat_probe(struct platform_device *pdev)
{
- struct resource *res;
int ret;
ipcdev.dev = &pdev->dev;
ipcdev.irq_mode = IPC_TRIGGER_MODE_IRQ;
init_completion(&ipcdev.cmd_complete);
+ spin_lock_init(&ipcdev.gcr_lock);
ipcdev.irq = platform_get_irq(pdev, 0);
if (ipcdev.irq < 0) {
@@ -939,11 +924,11 @@ static int ipc_plat_probe(struct platform_device *pdev)
ret = ipc_create_pmc_devices();
if (ret) {
dev_err(&pdev->dev, "Failed to create pmc devices\n");
- goto err_device;
+ return ret;
}
- if (request_irq(ipcdev.irq, ioc, IRQF_NO_SUSPEND,
- "intel_pmc_ipc", &ipcdev)) {
+ if (devm_request_irq(&pdev->dev, ipcdev.irq, ioc, IRQF_NO_SUSPEND,
+ "intel_pmc_ipc", &ipcdev)) {
dev_err(&pdev->dev, "Failed to request irq\n");
ret = -EBUSY;
goto err_irq;
@@ -960,40 +945,22 @@ static int ipc_plat_probe(struct platform_device *pdev)
return 0;
err_sys:
- free_irq(ipcdev.irq, &ipcdev);
+ devm_free_irq(&pdev->dev, ipcdev.irq, &ipcdev);
err_irq:
platform_device_unregister(ipcdev.tco_dev);
platform_device_unregister(ipcdev.punit_dev);
platform_device_unregister(ipcdev.telemetry_dev);
-err_device:
- iounmap(ipcdev.ipc_base);
- res = platform_get_resource(pdev, IORESOURCE_MEM,
- PLAT_RESOURCE_IPC_INDEX);
- if (res) {
- release_mem_region(res->start,
- PLAT_RESOURCE_IPC_SIZE +
- PLAT_RESOURCE_GCR_SIZE);
- }
+
return ret;
}
static int ipc_plat_remove(struct platform_device *pdev)
{
- struct resource *res;
-
sysfs_remove_group(&pdev->dev.kobj, &intel_ipc_group);
- free_irq(ipcdev.irq, &ipcdev);
+ devm_free_irq(&pdev->dev, ipcdev.irq, &ipcdev);
platform_device_unregister(ipcdev.tco_dev);
platform_device_unregister(ipcdev.punit_dev);
platform_device_unregister(ipcdev.telemetry_dev);
- iounmap(ipcdev.ipc_base);
- res = platform_get_resource(pdev, IORESOURCE_MEM,
- PLAT_RESOURCE_IPC_INDEX);
- if (res) {
- release_mem_region(res->start,
- PLAT_RESOURCE_IPC_SIZE +
- PLAT_RESOURCE_GCR_SIZE);
- }
ipcdev.dev = NULL;
return 0;
}
diff --git a/drivers/platform/x86/mlx-platform.c b/drivers/platform/x86/mlx-platform.c
index 8f98c211b440..4f3de2a8c4df 100644
--- a/drivers/platform/x86/mlx-platform.c
+++ b/drivers/platform/x86/mlx-platform.c
@@ -247,7 +247,7 @@ static int __init mlxplat_dmi_msn21xx_matched(const struct dmi_system_id *dmi)
return 1;
};
-static struct dmi_system_id mlxplat_dmi_table[] __initdata = {
+static const struct dmi_system_id mlxplat_dmi_table[] __initconst = {
{
.callback = mlxplat_dmi_default_matched,
.matches = {
diff --git a/drivers/platform/x86/msi-laptop.c b/drivers/platform/x86/msi-laptop.c
index 61b9014d2610..d5bfcc602090 100644
--- a/drivers/platform/x86/msi-laptop.c
+++ b/drivers/platform/x86/msi-laptop.c
@@ -605,7 +605,7 @@ static int dmi_check_cb(const struct dmi_system_id *dmi)
return 1;
}
-static struct dmi_system_id __initdata msi_dmi_table[] = {
+static const struct dmi_system_id msi_dmi_table[] __initconst = {
{
.ident = "MSI S270",
.matches = {
diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
index 0c703feaeb88..d3cb26f6df73 100644
--- a/drivers/platform/x86/samsung-laptop.c
+++ b/drivers/platform/x86/samsung-laptop.c
@@ -1567,7 +1567,7 @@ static int __init samsung_dmi_matched(const struct dmi_system_id *d)
return 0;
}
-static struct dmi_system_id __initdata samsung_dmi_table[] = {
+static const struct dmi_system_id samsung_dmi_table[] __initconst = {
{
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
diff --git a/drivers/platform/x86/samsung-q10.c b/drivers/platform/x86/samsung-q10.c
index e6aac725a0af..a2fb7fbc3273 100644
--- a/drivers/platform/x86/samsung-q10.c
+++ b/drivers/platform/x86/samsung-q10.c
@@ -95,7 +95,7 @@ static int __init dmi_check_callback(const struct dmi_system_id *id)
return 1;
}
-static struct dmi_system_id __initdata samsungq10_dmi_table[] = {
+static const struct dmi_system_id samsungq10_dmi_table[] __initconst = {
{
.ident = "Samsung Q10",
.matches = {
diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
index bfae79534f44..a16cea2be9c3 100644
--- a/drivers/platform/x86/sony-laptop.c
+++ b/drivers/platform/x86/sony-laptop.c
@@ -4880,7 +4880,7 @@ static struct acpi_driver sony_pic_driver = {
.drv.pm = &sony_pic_pm,
};
-static struct dmi_system_id __initdata sonypi_dmi_table[] = {
+static const struct dmi_system_id sonypi_dmi_table[] __initconst = {
{
.ident = "Sony Vaio",
.matches = {
diff --git a/drivers/platform/x86/toshiba-wmi.c b/drivers/platform/x86/toshiba-wmi.c
index 440528676170..03d7620cd6d7 100644
--- a/drivers/platform/x86/toshiba-wmi.c
+++ b/drivers/platform/x86/toshiba-wmi.c
@@ -64,7 +64,7 @@ static void toshiba_wmi_notify(u32 value, void *context)
kfree(response.pointer);
}
-static struct dmi_system_id toshiba_wmi_dmi_table[] __initdata = {
+static const struct dmi_system_id toshiba_wmi_dmi_table[] __initconst = {
{
.ident = "Toshiba laptop",
.matches = {
diff --git a/drivers/pnp/Makefile b/drivers/pnp/Makefile
index bfba893cb321..71d532f18219 100644
--- a/drivers/pnp/Makefile
+++ b/drivers/pnp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux Plug-and-Play Support.
#
diff --git a/drivers/pnp/base.h b/drivers/pnp/base.h
index 3151fd164614..cdcfa39cf167 100644
--- a/drivers/pnp/base.h
+++ b/drivers/pnp/base.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2008 Hewlett-Packard Development Company, L.P.
* Bjorn Helgaas <bjorn.helgaas@hp.com>
diff --git a/drivers/pnp/card.c b/drivers/pnp/card.c
index 31ad9fc3f701..c2464ee08e4a 100644
--- a/drivers/pnp/card.c
+++ b/drivers/pnp/card.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* card.c - contains functions for managing groups of PnP devices
*
diff --git a/drivers/pnp/core.c b/drivers/pnp/core.c
index b54620e53830..3bf18d718975 100644
--- a/drivers/pnp/core.c
+++ b/drivers/pnp/core.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* core.c - contains all core device and protocol registration functions
*
diff --git a/drivers/pnp/driver.c b/drivers/pnp/driver.c
index 63452f20e3e9..93a30a8f88d1 100644
--- a/drivers/pnp/driver.c
+++ b/drivers/pnp/driver.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* driver.c - device id matching, driver model, etc.
*
diff --git a/drivers/pnp/interface.c b/drivers/pnp/interface.c
index 5c5b3d47b5f6..187e4a1175b0 100644
--- a/drivers/pnp/interface.c
+++ b/drivers/pnp/interface.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* interface.c - contains everything related to the user interface
*
diff --git a/drivers/pnp/isapnp/compat.c b/drivers/pnp/isapnp/compat.c
index 10bdcc4d4f7b..6c845b628316 100644
--- a/drivers/pnp/isapnp/compat.c
+++ b/drivers/pnp/isapnp/compat.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* compat.c - A series of functions to make it easier to convert drivers that use
* the old isapnp APIs. If possible use the new APIs instead.
diff --git a/drivers/pnp/manager.c b/drivers/pnp/manager.c
index 7ad3295752ef..144055593ec8 100644
--- a/drivers/pnp/manager.c
+++ b/drivers/pnp/manager.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* manager.c - Resource Management, Conflict Resolution, Activation and Disabling of Devices
*
diff --git a/drivers/pnp/pnpacpi/pnpacpi.h b/drivers/pnp/pnpacpi/pnpacpi.h
index 051ef9699777..4489cd6dbc84 100644
--- a/drivers/pnp/pnpacpi/pnpacpi.h
+++ b/drivers/pnp/pnpacpi/pnpacpi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ACPI_PNP_H
#define ACPI_PNP_H
diff --git a/drivers/pnp/pnpbios/bioscalls.c b/drivers/pnp/pnpbios/bioscalls.c
index ff563db025b3..ba5cfc3dbe11 100644
--- a/drivers/pnp/pnpbios/bioscalls.c
+++ b/drivers/pnp/pnpbios/bioscalls.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* bioscalls.c - the lowlevel layer of the PnPBIOS driver
*/
diff --git a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c
index 0ced908e7aa8..e681140b85d8 100644
--- a/drivers/pnp/pnpbios/core.c
+++ b/drivers/pnp/pnpbios/core.c
@@ -495,7 +495,7 @@ static int __init exploding_pnp_bios(const struct dmi_system_id *d)
return 0;
}
-static struct dmi_system_id pnpbios_dmi_table[] __initdata = {
+static const struct dmi_system_id pnpbios_dmi_table[] __initconst = {
{ /* PnPBIOS GPF on boot */
.callback = exploding_pnp_bios,
.ident = "Higraded P14H",
diff --git a/drivers/pnp/pnpbios/proc.c b/drivers/pnp/pnpbios/proc.c
index 5ee6b2a5f8d5..7d4aca7948dd 100644
--- a/drivers/pnp/pnpbios/proc.c
+++ b/drivers/pnp/pnpbios/proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* /proc/bus/pnp interface for Plug and Play devices
*
diff --git a/drivers/pnp/pnpbios/rsparser.c b/drivers/pnp/pnpbios/rsparser.c
index cca2f9f9f3e3..2f31b212b1a5 100644
--- a/drivers/pnp/pnpbios/rsparser.c
+++ b/drivers/pnp/pnpbios/rsparser.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* rsparser.c - parses and encodes pnpbios resource data streams
*/
diff --git a/drivers/pnp/quirks.c b/drivers/pnp/quirks.c
index d28e3ab9479c..f054cdddfef8 100644
--- a/drivers/pnp/quirks.c
+++ b/drivers/pnp/quirks.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file contains quirk handling code for PnP devices
* Some devices do not report all their resources, and need to have extra
diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c
index f980ff7166e9..70d4ba95735a 100644
--- a/drivers/pnp/resource.c
+++ b/drivers/pnp/resource.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* resource.c - Contains functions for registering and analyzing resource information
*
diff --git a/drivers/pnp/support.c b/drivers/pnp/support.c
index f5beb24d036a..e4f53d31191d 100644
--- a/drivers/pnp/support.c
+++ b/drivers/pnp/support.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* support.c - standard functions for the use of pnp protocol drivers
*
diff --git a/drivers/pnp/system.c b/drivers/pnp/system.c
index 49c1720df59a..6950503741eb 100644
--- a/drivers/pnp/system.c
+++ b/drivers/pnp/system.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* system.c - a driver for reserving pnp system resources
*
diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile
index 58cf5b30559f..aeb65edb17b7 100644
--- a/drivers/power/reset/Makefile
+++ b/drivers/power/reset/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_POWER_RESET_AS3722) += as3722-poweroff.o
obj-$(CONFIG_POWER_RESET_AT91_POWEROFF) += at91-poweroff.o
obj-$(CONFIG_POWER_RESET_AT91_RESET) += at91-reset.o
diff --git a/drivers/power/reset/gemini-poweroff.c b/drivers/power/reset/gemini-poweroff.c
index de878fd26f27..ff75af5abbc5 100644
--- a/drivers/power/reset/gemini-poweroff.c
+++ b/drivers/power/reset/gemini-poweroff.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Gemini power management controller
* Copyright (C) 2017 Linus Walleij <linus.walleij@linaro.org>
diff --git a/drivers/power/reset/piix4-poweroff.c b/drivers/power/reset/piix4-poweroff.c
index bacfc95783f0..20ce3ff5e039 100644
--- a/drivers/power/reset/piix4-poweroff.c
+++ b/drivers/power/reset/piix4-poweroff.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
+ * Author: Paul Burton <paul.burton@mips.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -109,5 +109,5 @@ static struct pci_driver piix4_poweroff_driver = {
};
module_pci_driver(piix4_poweroff_driver);
-MODULE_AUTHOR("Paul Burton <paul.burton@imgtec.com>");
+MODULE_AUTHOR("Paul Burton <paul.burton@mips.com>");
MODULE_LICENSE("GPL");
diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile
index 621a19058fec..aae4e4a8bbb3 100644
--- a/drivers/power/supply/Makefile
+++ b/drivers/power/supply/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-$(CONFIG_POWER_SUPPLY_DEBUG) := -DDEBUG
power_supply-y := power_supply_core.o
diff --git a/drivers/power/supply/ab8500_bmdata.c b/drivers/power/supply/ab8500_bmdata.c
index 8c49586015d0..4a7ed50d1dc5 100644
--- a/drivers/power/supply/ab8500_bmdata.c
+++ b/drivers/power/supply/ab8500_bmdata.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/power_supply.h>
#include <linux/of.h>
diff --git a/drivers/ptp/Makefile b/drivers/ptp/Makefile
index d1f2fb19c980..fd28207f5379 100644
--- a/drivers/ptp/Makefile
+++ b/drivers/ptp/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for PTP 1588 clock support.
#
diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile
index ebefba5f528b..0258a745f30c 100644
--- a/drivers/pwm/Makefile
+++ b/drivers/pwm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PWM) += core.o
obj-$(CONFIG_PWM_SYSFS) += sysfs.o
obj-$(CONFIG_PWM_AB8500) += pwm-ab8500.o
diff --git a/drivers/rapidio/Makefile b/drivers/rapidio/Makefile
index 74dcea45ad49..a34b0254ba38 100644
--- a/drivers/rapidio/Makefile
+++ b/drivers/rapidio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for RapidIO interconnect services
#
diff --git a/drivers/rapidio/devices/tsi721.c b/drivers/rapidio/devices/tsi721.c
index 315a4be8dc1e..9a68914100ad 100644
--- a/drivers/rapidio/devices/tsi721.c
+++ b/drivers/rapidio/devices/tsi721.c
@@ -51,6 +51,8 @@ module_param(mbox_sel, byte, S_IRUGO);
MODULE_PARM_DESC(mbox_sel,
"RIO Messaging MBOX Selection Mask (default: 0x0f = all)");
+static DEFINE_SPINLOCK(tsi721_maint_lock);
+
static void tsi721_omsg_handler(struct tsi721_device *priv, int ch);
static void tsi721_imsg_handler(struct tsi721_device *priv, int ch);
@@ -124,12 +126,15 @@ static int tsi721_maint_dma(struct tsi721_device *priv, u32 sys_size,
void __iomem *regs = priv->regs + TSI721_DMAC_BASE(priv->mdma.ch_id);
struct tsi721_dma_desc *bd_ptr;
u32 rd_count, swr_ptr, ch_stat;
+ unsigned long flags;
int i, err = 0;
u32 op = do_wr ? MAINT_WR : MAINT_RD;
if (offset > (RIO_MAINT_SPACE_SZ - len) || (len != sizeof(u32)))
return -EINVAL;
+ spin_lock_irqsave(&tsi721_maint_lock, flags);
+
bd_ptr = priv->mdma.bd_base;
rd_count = ioread32(regs + TSI721_DMAC_DRDCNT);
@@ -197,7 +202,9 @@ static int tsi721_maint_dma(struct tsi721_device *priv, u32 sys_size,
*/
swr_ptr = ioread32(regs + TSI721_DMAC_DSWP);
iowrite32(swr_ptr, regs + TSI721_DMAC_DSRP);
+
err_out:
+ spin_unlock_irqrestore(&tsi721_maint_lock, flags);
return err;
}
diff --git a/drivers/rapidio/rio-access.c b/drivers/rapidio/rio-access.c
index a3824baca2e5..3ee9af83b638 100644
--- a/drivers/rapidio/rio-access.c
+++ b/drivers/rapidio/rio-access.c
@@ -14,16 +14,8 @@
#include <linux/module.h>
/*
- * These interrupt-safe spinlocks protect all accesses to RIO
- * configuration space and doorbell access.
- */
-static DEFINE_SPINLOCK(rio_config_lock);
-static DEFINE_SPINLOCK(rio_doorbell_lock);
-
-/*
* Wrappers for all RIO configuration access functions. They just check
- * alignment, do locking and call the low-level functions pointed to
- * by rio_mport->ops.
+ * alignment and call the low-level functions pointed to by rio_mport->ops.
*/
#define RIO_8_BAD 0
@@ -44,13 +36,10 @@ int __rio_local_read_config_##size \
(struct rio_mport *mport, u32 offset, type *value) \
{ \
int res; \
- unsigned long flags; \
u32 data = 0; \
if (RIO_##size##_BAD) return RIO_BAD_SIZE; \
- spin_lock_irqsave(&rio_config_lock, flags); \
res = mport->ops->lcread(mport, mport->id, offset, len, &data); \
*value = (type)data; \
- spin_unlock_irqrestore(&rio_config_lock, flags); \
return res; \
}
@@ -67,13 +56,8 @@ int __rio_local_read_config_##size \
int __rio_local_write_config_##size \
(struct rio_mport *mport, u32 offset, type value) \
{ \
- int res; \
- unsigned long flags; \
if (RIO_##size##_BAD) return RIO_BAD_SIZE; \
- spin_lock_irqsave(&rio_config_lock, flags); \
- res = mport->ops->lcwrite(mport, mport->id, offset, len, value);\
- spin_unlock_irqrestore(&rio_config_lock, flags); \
- return res; \
+ return mport->ops->lcwrite(mport, mport->id, offset, len, value);\
}
RIO_LOP_READ(8, u8, 1)
@@ -104,13 +88,10 @@ int rio_mport_read_config_##size \
(struct rio_mport *mport, u16 destid, u8 hopcount, u32 offset, type *value) \
{ \
int res; \
- unsigned long flags; \
u32 data = 0; \
if (RIO_##size##_BAD) return RIO_BAD_SIZE; \
- spin_lock_irqsave(&rio_config_lock, flags); \
res = mport->ops->cread(mport, mport->id, destid, hopcount, offset, len, &data); \
*value = (type)data; \
- spin_unlock_irqrestore(&rio_config_lock, flags); \
return res; \
}
@@ -127,13 +108,9 @@ int rio_mport_read_config_##size \
int rio_mport_write_config_##size \
(struct rio_mport *mport, u16 destid, u8 hopcount, u32 offset, type value) \
{ \
- int res; \
- unsigned long flags; \
if (RIO_##size##_BAD) return RIO_BAD_SIZE; \
- spin_lock_irqsave(&rio_config_lock, flags); \
- res = mport->ops->cwrite(mport, mport->id, destid, hopcount, offset, len, value); \
- spin_unlock_irqrestore(&rio_config_lock, flags); \
- return res; \
+ return mport->ops->cwrite(mport, mport->id, destid, hopcount, \
+ offset, len, value); \
}
RIO_OP_READ(8, u8, 1)
@@ -162,14 +139,7 @@ EXPORT_SYMBOL_GPL(rio_mport_write_config_32);
*/
int rio_mport_send_doorbell(struct rio_mport *mport, u16 destid, u16 data)
{
- int res;
- unsigned long flags;
-
- spin_lock_irqsave(&rio_doorbell_lock, flags);
- res = mport->ops->dsend(mport, mport->id, destid, data);
- spin_unlock_irqrestore(&rio_doorbell_lock, flags);
-
- return res;
+ return mport->ops->dsend(mport, mport->id, destid, data);
}
EXPORT_SYMBOL_GPL(rio_mport_send_doorbell);
diff --git a/drivers/rapidio/switches/Makefile b/drivers/rapidio/switches/Makefile
index 6bdd54c4e733..69e7de31e41c 100644
--- a/drivers/rapidio/switches/Makefile
+++ b/drivers/rapidio/switches/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for RIO switches
#
diff --git a/drivers/ras/cec.c b/drivers/ras/cec.c
index d0e5d6ee882c..adbf1a9e089e 100644
--- a/drivers/ras/cec.c
+++ b/drivers/ras/cec.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <linux/gfp.h>
#include <linux/kernel.h>
@@ -523,7 +524,7 @@ int __init parse_cec_param(char *str)
if (*str == '=')
str++;
- if (!strncmp(str, "cec_disable", 7))
+ if (!strcmp(str, "cec_disable"))
ce_arr.disabled = 1;
else
return 0;
diff --git a/drivers/ras/debugfs.h b/drivers/ras/debugfs.h
index db72e4513191..c07443b462ad 100644
--- a/drivers/ras/debugfs.h
+++ b/drivers/ras/debugfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RAS_DEBUGFS_H__
#define __RAS_DEBUGFS_H__
diff --git a/drivers/ras/ras.c b/drivers/ras/ras.c
index 5429d3795732..3f38907320dc 100644
--- a/drivers/ras/ras.c
+++ b/drivers/ras/ras.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2014 Intel Corporation
*
diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
index cbb6e45c77b2..80ffc57a9ca3 100644
--- a/drivers/regulator/Makefile
+++ b/drivers/regulator/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for regulator drivers.
#
diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c
index f18b36dd57dd..376a99b7cf5d 100644
--- a/drivers/regulator/axp20x-regulator.c
+++ b/drivers/regulator/axp20x-regulator.c
@@ -590,7 +590,7 @@ static bool axp20x_is_polyphase_slave(struct axp20x_dev *axp20x, int id)
case AXP803_DCDC3:
return !!(reg & BIT(6));
case AXP803_DCDC6:
- return !!(reg & BIT(7));
+ return !!(reg & BIT(5));
}
break;
diff --git a/drivers/regulator/fixed-helper.c b/drivers/regulator/fixed-helper.c
index f9d027992aae..777fac6fb4cb 100644
--- a/drivers/regulator/fixed-helper.c
+++ b/drivers/regulator/fixed-helper.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/platform_device.h>
diff --git a/drivers/regulator/rn5t618-regulator.c b/drivers/regulator/rn5t618-regulator.c
index ef2be56460fe..790a4a73ea2c 100644
--- a/drivers/regulator/rn5t618-regulator.c
+++ b/drivers/regulator/rn5t618-regulator.c
@@ -29,7 +29,7 @@ static const struct regulator_ops rn5t618_reg_ops = {
};
#define REG(rid, ereg, emask, vreg, vmask, min, max, step) \
- [RN5T618_##rid] = { \
+ { \
.name = #rid, \
.of_match = of_match_ptr(#rid), \
.regulators_node = of_match_ptr("regulators"), \
diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
index df63e44526ac..bf04479456a0 100644
--- a/drivers/remoteproc/Kconfig
+++ b/drivers/remoteproc/Kconfig
@@ -109,6 +109,7 @@ config QCOM_Q6V5_PIL
depends on OF && ARCH_QCOM
depends on QCOM_SMEM
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
+ depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
select MFD_SYSCON
select QCOM_RPROC_COMMON
select QCOM_SCM
@@ -120,6 +121,7 @@ config QCOM_WCNSS_PIL
tristate "Qualcomm WCNSS Peripheral Image Loader"
depends on OF && ARCH_QCOM
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
+ depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
depends on QCOM_SMEM
select QCOM_MDT_LOADER
select QCOM_RPROC_COMMON
diff --git a/drivers/remoteproc/Makefile b/drivers/remoteproc/Makefile
index 1a0b3dd44b8c..6e16450ce11f 100644
--- a/drivers/remoteproc/Makefile
+++ b/drivers/remoteproc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Generic framework for controlling remote processors
#
diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 612d91403341..633268e9d550 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -264,15 +264,14 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
if (!(att->flags & ATT_OWN))
continue;
- if (b > IMX7D_RPROC_MEM_MAX)
+ if (b >= IMX7D_RPROC_MEM_MAX)
break;
priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev,
att->sa, att->size);
- if (IS_ERR(priv->mem[b].cpu_addr)) {
+ if (!priv->mem[b].cpu_addr) {
dev_err(dev, "devm_ioremap_resource failed\n");
- err = PTR_ERR(priv->mem[b].cpu_addr);
- return err;
+ return -ENOMEM;
}
priv->mem[b].sys_addr = att->sa;
priv->mem[b].size = att->size;
@@ -296,7 +295,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
return err;
}
- if (b > IMX7D_RPROC_MEM_MAX)
+ if (b >= IMX7D_RPROC_MEM_MAX)
break;
priv->mem[b].cpu_addr = devm_ioremap_resource(&pdev->dev, &res);
diff --git a/drivers/remoteproc/qcom_common.h b/drivers/remoteproc/qcom_common.h
index 4f8bc168473c..832e20271664 100644
--- a/drivers/remoteproc/qcom_common.h
+++ b/drivers/remoteproc/qcom_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RPROC_QCOM_COMMON_H__
#define __RPROC_QCOM_COMMON_H__
diff --git a/drivers/remoteproc/qcom_wcnss.h b/drivers/remoteproc/qcom_wcnss.h
index 25fb7f62a457..62c8682d0a92 100644
--- a/drivers/remoteproc/qcom_wcnss.h
+++ b/drivers/remoteproc/qcom_wcnss.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __QCOM_WNCSS_H__
#define __QCOM_WNCSS_H__
diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
index 52d5251660b9..e2baecbb9dd3 100644
--- a/drivers/reset/Kconfig
+++ b/drivers/reset/Kconfig
@@ -34,11 +34,12 @@ config RESET_BERLIN
help
This enables the reset controller driver for Marvell Berlin SoCs.
-config RESET_HSDK_V1
- bool "HSDK v1 Reset Driver"
- default n
+config RESET_HSDK
+ bool "Synopsys HSDK Reset Driver"
+ depends on HAS_IOMEM
+ depends on ARC_SOC_HSDK || COMPILE_TEST
help
- This enables the reset controller driver for HSDK v1.
+ This enables the reset controller driver for HSDK board.
config RESET_IMX7
bool "i.MX7 Reset Driver" if COMPILE_TEST
@@ -47,6 +48,12 @@ config RESET_IMX7
help
This enables the reset controller driver for i.MX7 SoCs.
+config RESET_LANTIQ
+ bool "Lantiq XWAY Reset Driver" if COMPILE_TEST
+ default SOC_TYPE_XWAY
+ help
+ This enables the reset controller driver for Lantiq / Intel XWAY SoCs.
+
config RESET_LPC18XX
bool "LPC18xx/43xx Reset Driver" if COMPILE_TEST
default ARCH_LPC18XX
diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
index b62783f50fe5..c1fd702ac57c 100644
--- a/drivers/reset/Makefile
+++ b/drivers/reset/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += core.o
obj-y += hisilicon/
obj-$(CONFIG_ARCH_STI) += sti/
@@ -5,8 +6,9 @@ obj-$(CONFIG_ARCH_TEGRA) += tegra/
obj-$(CONFIG_RESET_A10SR) += reset-a10sr.o
obj-$(CONFIG_RESET_ATH79) += reset-ath79.o
obj-$(CONFIG_RESET_BERLIN) += reset-berlin.o
-obj-$(CONFIG_RESET_HSDK_V1) += reset-hsdk-v1.o
+obj-$(CONFIG_RESET_HSDK) += reset-hsdk.o
obj-$(CONFIG_RESET_IMX7) += reset-imx7.o
+obj-$(CONFIG_RESET_LANTIQ) += reset-lantiq.o
obj-$(CONFIG_RESET_LPC18XX) += reset-lpc18xx.o
obj-$(CONFIG_RESET_MESON) += reset-meson.o
obj-$(CONFIG_RESET_OXNAS) += reset-oxnas.o
diff --git a/drivers/reset/reset-hsdk-v1.c b/drivers/reset/reset-hsdk.c
index bca13e4bf622..8bce391c6943 100644
--- a/drivers/reset/reset-hsdk-v1.c
+++ b/drivers/reset/reset-hsdk.c
@@ -1,7 +1,7 @@
/*
* Copyright (C) 2017 Synopsys.
*
- * Synopsys HSDKv1 SDP reset driver.
+ * Synopsys HSDK Development platform reset driver.
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
@@ -18,9 +18,9 @@
#include <linux/slab.h>
#include <linux/types.h>
-#define to_hsdkv1_rst(p) container_of((p), struct hsdkv1_rst, rcdev)
+#define to_hsdk_rst(p) container_of((p), struct hsdk_rst, rcdev)
-struct hsdkv1_rst {
+struct hsdk_rst {
void __iomem *regs_ctl;
void __iomem *regs_rst;
spinlock_t lock;
@@ -49,12 +49,12 @@ static const u32 rst_map[] = {
#define CGU_IP_SW_RESET_RESET BIT(0)
#define SW_RESET_TIMEOUT 10000
-static void hsdkv1_reset_config(struct hsdkv1_rst *rst, unsigned long id)
+static void hsdk_reset_config(struct hsdk_rst *rst, unsigned long id)
{
writel(rst_map[id], rst->regs_ctl + CGU_SYS_RST_CTRL);
}
-static int hsdkv1_reset_do(struct hsdkv1_rst *rst)
+static int hsdk_reset_do(struct hsdk_rst *rst)
{
u32 reg;
@@ -69,28 +69,28 @@ static int hsdkv1_reset_do(struct hsdkv1_rst *rst)
!(reg & CGU_IP_SW_RESET_RESET), 5, SW_RESET_TIMEOUT);
}
-static int hsdkv1_reset_reset(struct reset_controller_dev *rcdev,
+static int hsdk_reset_reset(struct reset_controller_dev *rcdev,
unsigned long id)
{
- struct hsdkv1_rst *rst = to_hsdkv1_rst(rcdev);
+ struct hsdk_rst *rst = to_hsdk_rst(rcdev);
unsigned long flags;
int ret;
spin_lock_irqsave(&rst->lock, flags);
- hsdkv1_reset_config(rst, id);
- ret = hsdkv1_reset_do(rst);
+ hsdk_reset_config(rst, id);
+ ret = hsdk_reset_do(rst);
spin_unlock_irqrestore(&rst->lock, flags);
return ret;
}
-static const struct reset_control_ops hsdkv1_reset_ops = {
- .reset = hsdkv1_reset_reset,
+static const struct reset_control_ops hsdk_reset_ops = {
+ .reset = hsdk_reset_reset,
};
-static int hsdkv1_reset_probe(struct platform_device *pdev)
+static int hsdk_reset_probe(struct platform_device *pdev)
{
- struct hsdkv1_rst *rst;
+ struct hsdk_rst *rst;
struct resource *mem;
rst = devm_kzalloc(&pdev->dev, sizeof(*rst), GFP_KERNEL);
@@ -110,7 +110,7 @@ static int hsdkv1_reset_probe(struct platform_device *pdev)
spin_lock_init(&rst->lock);
rst->rcdev.owner = THIS_MODULE;
- rst->rcdev.ops = &hsdkv1_reset_ops;
+ rst->rcdev.ops = &hsdk_reset_ops;
rst->rcdev.of_node = pdev->dev.of_node;
rst->rcdev.nr_resets = HSDK_MAX_RESETS;
rst->rcdev.of_reset_n_cells = 1;
@@ -118,20 +118,20 @@ static int hsdkv1_reset_probe(struct platform_device *pdev)
return reset_controller_register(&rst->rcdev);
}
-static const struct of_device_id hsdkv1_reset_dt_match[] = {
- { .compatible = "snps,hsdk-v1.0-reset" },
+static const struct of_device_id hsdk_reset_dt_match[] = {
+ { .compatible = "snps,hsdk-reset" },
{ },
};
-static struct platform_driver hsdkv1_reset_driver = {
- .probe = hsdkv1_reset_probe,
+static struct platform_driver hsdk_reset_driver = {
+ .probe = hsdk_reset_probe,
.driver = {
- .name = "hsdk-v1.0-reset",
- .of_match_table = hsdkv1_reset_dt_match,
+ .name = "hsdk-reset",
+ .of_match_table = hsdk_reset_dt_match,
},
};
-builtin_platform_driver(hsdkv1_reset_driver);
+builtin_platform_driver(hsdk_reset_driver);
MODULE_AUTHOR("Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>");
-MODULE_DESCRIPTION("Synopsys HSDKv1 SDP reset driver");
+MODULE_DESCRIPTION("Synopsys HSDK SDP reset driver");
MODULE_LICENSE("GPL v2");
diff --git a/drivers/reset/reset-lantiq.c b/drivers/reset/reset-lantiq.c
new file mode 100644
index 000000000000..11a582e50d30
--- /dev/null
+++ b/drivers/reset/reset-lantiq.c
@@ -0,0 +1,212 @@
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ *
+ * Copyright (C) 2010 John Crispin <blogic@phrozen.org>
+ * Copyright (C) 2013-2015 Lantiq Beteiligungs-GmbH & Co.KG
+ * Copyright (C) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+ * Copyright (C) 2017 Hauke Mehrtens <hauke@hauke-m.de>
+ */
+
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/regmap.h>
+#include <linux/reset-controller.h>
+#include <linux/of_address.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/property.h>
+
+#define LANTIQ_RCU_RESET_TIMEOUT 10000
+
+struct lantiq_rcu_reset_priv {
+ struct reset_controller_dev rcdev;
+ struct device *dev;
+ struct regmap *regmap;
+ u32 reset_offset;
+ u32 status_offset;
+};
+
+static struct lantiq_rcu_reset_priv *to_lantiq_rcu_reset_priv(
+ struct reset_controller_dev *rcdev)
+{
+ return container_of(rcdev, struct lantiq_rcu_reset_priv, rcdev);
+}
+
+static int lantiq_rcu_reset_status(struct reset_controller_dev *rcdev,
+ unsigned long id)
+{
+ struct lantiq_rcu_reset_priv *priv = to_lantiq_rcu_reset_priv(rcdev);
+ unsigned int status = (id >> 8) & 0x1f;
+ u32 val;
+ int ret;
+
+ ret = regmap_read(priv->regmap, priv->status_offset, &val);
+ if (ret)
+ return ret;
+
+ return !!(val & BIT(status));
+}
+
+static int lantiq_rcu_reset_status_timeout(struct reset_controller_dev *rcdev,
+ unsigned long id, bool assert)
+{
+ int ret;
+ int retry = LANTIQ_RCU_RESET_TIMEOUT;
+
+ do {
+ ret = lantiq_rcu_reset_status(rcdev, id);
+ if (ret < 0)
+ return ret;
+ if (ret == assert)
+ return 0;
+ usleep_range(20, 40);
+ } while (--retry);
+
+ return -ETIMEDOUT;
+}
+
+static int lantiq_rcu_reset_update(struct reset_controller_dev *rcdev,
+ unsigned long id, bool assert)
+{
+ struct lantiq_rcu_reset_priv *priv = to_lantiq_rcu_reset_priv(rcdev);
+ unsigned int set = id & 0x1f;
+ u32 val = assert ? BIT(set) : 0;
+ int ret;
+
+ ret = regmap_update_bits(priv->regmap, priv->reset_offset, BIT(set),
+ val);
+ if (ret) {
+ dev_err(priv->dev, "Failed to set reset bit %u\n", set);
+ return ret;
+ }
+
+
+ ret = lantiq_rcu_reset_status_timeout(rcdev, id, assert);
+ if (ret)
+ dev_err(priv->dev, "Failed to %s bit %u\n",
+ assert ? "assert" : "deassert", set);
+
+ return ret;
+}
+
+static int lantiq_rcu_reset_assert(struct reset_controller_dev *rcdev,
+ unsigned long id)
+{
+ return lantiq_rcu_reset_update(rcdev, id, true);
+}
+
+static int lantiq_rcu_reset_deassert(struct reset_controller_dev *rcdev,
+ unsigned long id)
+{
+ return lantiq_rcu_reset_update(rcdev, id, false);
+}
+
+static int lantiq_rcu_reset_reset(struct reset_controller_dev *rcdev,
+ unsigned long id)
+{
+ int ret;
+
+ ret = lantiq_rcu_reset_assert(rcdev, id);
+ if (ret)
+ return ret;
+
+ return lantiq_rcu_reset_deassert(rcdev, id);
+}
+
+static const struct reset_control_ops lantiq_rcu_reset_ops = {
+ .assert = lantiq_rcu_reset_assert,
+ .deassert = lantiq_rcu_reset_deassert,
+ .status = lantiq_rcu_reset_status,
+ .reset = lantiq_rcu_reset_reset,
+};
+
+static int lantiq_rcu_reset_of_parse(struct platform_device *pdev,
+ struct lantiq_rcu_reset_priv *priv)
+{
+ struct device *dev = &pdev->dev;
+ const __be32 *offset;
+
+ priv->regmap = syscon_node_to_regmap(dev->of_node->parent);
+ if (IS_ERR(priv->regmap)) {
+ dev_err(&pdev->dev, "Failed to lookup RCU regmap\n");
+ return PTR_ERR(priv->regmap);
+ }
+
+ offset = of_get_address(dev->of_node, 0, NULL, NULL);
+ if (!offset) {
+ dev_err(&pdev->dev, "Failed to get RCU reset offset\n");
+ return -ENOENT;
+ }
+ priv->reset_offset = __be32_to_cpu(*offset);
+
+ offset = of_get_address(dev->of_node, 1, NULL, NULL);
+ if (!offset) {
+ dev_err(&pdev->dev, "Failed to get RCU status offset\n");
+ return -ENOENT;
+ }
+ priv->status_offset = __be32_to_cpu(*offset);
+
+ return 0;
+}
+
+static int lantiq_rcu_reset_xlate(struct reset_controller_dev *rcdev,
+ const struct of_phandle_args *reset_spec)
+{
+ unsigned int status, set;
+
+ set = reset_spec->args[0];
+ status = reset_spec->args[1];
+
+ if (set >= rcdev->nr_resets || status >= rcdev->nr_resets)
+ return -EINVAL;
+
+ return (status << 8) | set;
+}
+
+static int lantiq_rcu_reset_probe(struct platform_device *pdev)
+{
+ struct lantiq_rcu_reset_priv *priv;
+ int err;
+
+ priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
+ if (!priv)
+ return -ENOMEM;
+
+ priv->dev = &pdev->dev;
+ platform_set_drvdata(pdev, priv);
+
+ err = lantiq_rcu_reset_of_parse(pdev, priv);
+ if (err)
+ return err;
+
+ priv->rcdev.ops = &lantiq_rcu_reset_ops;
+ priv->rcdev.owner = THIS_MODULE;
+ priv->rcdev.of_node = pdev->dev.of_node;
+ priv->rcdev.nr_resets = 32;
+ priv->rcdev.of_xlate = lantiq_rcu_reset_xlate;
+ priv->rcdev.of_reset_n_cells = 2;
+
+ return reset_controller_register(&priv->rcdev);
+}
+
+static const struct of_device_id lantiq_rcu_reset_dt_ids[] = {
+ { .compatible = "lantiq,danube-reset", },
+ { .compatible = "lantiq,xrx200-reset", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, lantiq_rcu_reset_dt_ids);
+
+static struct platform_driver lantiq_rcu_reset_driver = {
+ .probe = lantiq_rcu_reset_probe,
+ .driver = {
+ .name = "lantiq-reset",
+ .of_match_table = lantiq_rcu_reset_dt_ids,
+ },
+};
+module_platform_driver(lantiq_rcu_reset_driver);
+
+MODULE_AUTHOR("Martin Blumenstingl <martin.blumenstingl@googlemail.com>");
+MODULE_DESCRIPTION("Lantiq XWAY RCU Reset Controller Driver");
+MODULE_LICENSE("GPL");
diff --git a/drivers/reset/reset-socfpga.c b/drivers/reset/reset-socfpga.c
index c60904ff40b8..3907bbc9c6cf 100644
--- a/drivers/reset/reset-socfpga.c
+++ b/drivers/reset/reset-socfpga.c
@@ -40,8 +40,9 @@ static int socfpga_reset_assert(struct reset_controller_dev *rcdev,
struct socfpga_reset_data *data = container_of(rcdev,
struct socfpga_reset_data,
rcdev);
- int bank = id / BITS_PER_LONG;
- int offset = id % BITS_PER_LONG;
+ int reg_width = sizeof(u32);
+ int bank = id / (reg_width * BITS_PER_BYTE);
+ int offset = id % (reg_width * BITS_PER_BYTE);
unsigned long flags;
u32 reg;
@@ -61,8 +62,9 @@ static int socfpga_reset_deassert(struct reset_controller_dev *rcdev,
struct socfpga_reset_data,
rcdev);
- int bank = id / BITS_PER_LONG;
- int offset = id % BITS_PER_LONG;
+ int reg_width = sizeof(u32);
+ int bank = id / (reg_width * BITS_PER_BYTE);
+ int offset = id % (reg_width * BITS_PER_BYTE);
unsigned long flags;
u32 reg;
@@ -81,8 +83,9 @@ static int socfpga_reset_status(struct reset_controller_dev *rcdev,
{
struct socfpga_reset_data *data = container_of(rcdev,
struct socfpga_reset_data, rcdev);
- int bank = id / BITS_PER_LONG;
- int offset = id % BITS_PER_LONG;
+ int reg_width = sizeof(u32);
+ int bank = id / (reg_width * BITS_PER_BYTE);
+ int offset = id % (reg_width * BITS_PER_BYTE);
u32 reg;
reg = readl(data->membase + (bank * BANK_INCREMENT));
@@ -132,7 +135,7 @@ static int socfpga_reset_probe(struct platform_device *pdev)
spin_lock_init(&data->lock);
data->rcdev.owner = THIS_MODULE;
- data->rcdev.nr_resets = NR_BANKS * BITS_PER_LONG;
+ data->rcdev.nr_resets = NR_BANKS * (sizeof(u32) * BITS_PER_BYTE);
data->rcdev.ops = &socfpga_reset_ops;
data->rcdev.of_node = pdev->dev.of_node;
diff --git a/drivers/rpmsg/Makefile b/drivers/rpmsg/Makefile
index c71f4ab1ae17..9aa859502d27 100644
--- a/drivers/rpmsg/Makefile
+++ b/drivers/rpmsg/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_RPMSG) += rpmsg_core.o
obj-$(CONFIG_RPMSG_CHAR) += rpmsg_char.o
obj-$(CONFIG_RPMSG_QCOM_GLINK_RPM) += qcom_glink_rpm.o
diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c
index 5a5e927ea50f..5dcc9bf1c5bc 100644
--- a/drivers/rpmsg/qcom_glink_native.c
+++ b/drivers/rpmsg/qcom_glink_native.c
@@ -635,19 +635,18 @@ qcom_glink_alloc_intent(struct qcom_glink *glink,
unsigned long flags;
intent = kzalloc(sizeof(*intent), GFP_KERNEL);
-
if (!intent)
return NULL;
intent->data = kzalloc(size, GFP_KERNEL);
if (!intent->data)
- return NULL;
+ goto free_intent;
spin_lock_irqsave(&channel->intent_lock, flags);
ret = idr_alloc_cyclic(&channel->liids, intent, 1, -1, GFP_ATOMIC);
if (ret < 0) {
spin_unlock_irqrestore(&channel->intent_lock, flags);
- return NULL;
+ goto free_data;
}
spin_unlock_irqrestore(&channel->intent_lock, flags);
@@ -656,6 +655,12 @@ qcom_glink_alloc_intent(struct qcom_glink *glink,
intent->reuse = reuseable;
return intent;
+
+free_data:
+ kfree(intent->data);
+free_intent:
+ kfree(intent);
+ return NULL;
}
static void qcom_glink_handle_rx_done(struct qcom_glink *glink,
@@ -1197,7 +1202,7 @@ static int qcom_glink_request_intent(struct qcom_glink *glink,
ret = qcom_glink_tx(glink, &cmd, sizeof(cmd), NULL, 0, true);
if (ret)
- return ret;
+ goto unlock;
ret = wait_for_completion_timeout(&channel->intent_req_comp, 10 * HZ);
if (!ret) {
@@ -1207,6 +1212,7 @@ static int qcom_glink_request_intent(struct qcom_glink *glink,
ret = channel->intent_req_result ? 0 : -ECANCELED;
}
+unlock:
mutex_unlock(&channel->intent_req_lock);
return ret;
}
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
index 7230014c92af..0bf1fc02b82c 100644
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for RTC class/drivers.
#
diff --git a/drivers/rtc/rtc-core.h b/drivers/rtc/rtc-core.h
index ecab76a3207c..513b9bedd2c8 100644
--- a/drivers/rtc/rtc-core.h
+++ b/drivers/rtc/rtc-core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_RTC_INTF_DEV
extern void __init rtc_dev_init(void);
diff --git a/drivers/rtc/rtc-efi-platform.c b/drivers/rtc/rtc-efi-platform.c
index 1a7f1d1bc174..6c037dc4e3dc 100644
--- a/drivers/rtc/rtc-efi-platform.c
+++ b/drivers/rtc/rtc-efi-platform.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Moved from arch/ia64/kernel/time.c
*
diff --git a/drivers/rtc/rtc-sa1100.h b/drivers/rtc/rtc-sa1100.h
index 2c79c0c57822..cc724f5b07bc 100644
--- a/drivers/rtc/rtc-sa1100.h
+++ b/drivers/rtc/rtc-sa1100.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RTC_SA1100_H__
#define __RTC_SA1100_H__
diff --git a/drivers/s390/block/Makefile b/drivers/s390/block/Makefile
index b64e2b32c753..60c85cff556f 100644
--- a/drivers/s390/block/Makefile
+++ b/drivers/s390/block/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# S/390 block devices
#
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index ea19b4ff87a2..29f35e29d480 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -1644,7 +1644,9 @@ void dasd_generic_handle_state_change(struct dasd_device *device)
dasd_schedule_device_bh(device);
if (device->block) {
dasd_schedule_block_bh(device->block);
- blk_mq_run_hw_queues(device->block->request_queue, true);
+ if (device->block->request_queue)
+ blk_mq_run_hw_queues(device->block->request_queue,
+ true);
}
}
EXPORT_SYMBOL_GPL(dasd_generic_handle_state_change);
@@ -3759,7 +3761,9 @@ int dasd_generic_path_operational(struct dasd_device *device)
dasd_schedule_device_bh(device);
if (device->block) {
dasd_schedule_block_bh(device->block);
- blk_mq_run_hw_queues(device->block->request_queue, true);
+ if (device->block->request_queue)
+ blk_mq_run_hw_queues(device->block->request_queue,
+ true);
}
if (!device->stopped)
@@ -4025,7 +4029,9 @@ int dasd_generic_restore_device(struct ccw_device *cdev)
if (device->block) {
dasd_schedule_block_bh(device->block);
- blk_mq_run_hw_queues(device->block->request_queue, true);
+ if (device->block->request_queue)
+ blk_mq_run_hw_queues(device->block->request_queue,
+ true);
}
clear_bit(DASD_FLAG_SUSPENDED, &device->flags);
diff --git a/drivers/s390/block/dasd_3990_erp.c b/drivers/s390/block/dasd_3990_erp.c
index e448a0fc0c09..c94b606e0df8 100644
--- a/drivers/s390/block/dasd_3990_erp.c
+++ b/drivers/s390/block/dasd_3990_erp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Author(s)......: Horst Hummel <Horst.Hummel@de.ibm.com>
* Holger Smolinski <Holger.Smolinski@de.ibm.com>
diff --git a/drivers/s390/block/dasd_alias.c b/drivers/s390/block/dasd_alias.c
index 0e0e622eadc3..62f5f04d8f61 100644
--- a/drivers/s390/block/dasd_alias.c
+++ b/drivers/s390/block/dasd_alias.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PAV alias management for the DASD ECKD discipline
*
diff --git a/drivers/s390/block/dasd_diag.h b/drivers/s390/block/dasd_diag.h
index e84a5468d810..405b6feed465 100644
--- a/drivers/s390/block/dasd_diag.h
+++ b/drivers/s390/block/dasd_diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Based on.......: linux/drivers/s390/block/mdisk.h
diff --git a/drivers/s390/block/dasd_eckd.h b/drivers/s390/block/dasd_eckd.h
index 34e153a6b19c..5869d2fede35 100644
--- a/drivers/s390/block/dasd_eckd.h
+++ b/drivers/s390/block/dasd_eckd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Horst Hummel <Horst.Hummel@de.ibm.com>
diff --git a/drivers/s390/block/dasd_eer.c b/drivers/s390/block/dasd_eer.c
index 8713fefd794b..4630782b5456 100644
--- a/drivers/s390/block/dasd_eer.c
+++ b/drivers/s390/block/dasd_eer.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Character device driver for extended error reporting.
*
diff --git a/drivers/s390/block/dasd_erp.c b/drivers/s390/block/dasd_erp.c
index 6389feb2fb7a..ba4fa372d02d 100644
--- a/drivers/s390/block/dasd_erp.c
+++ b/drivers/s390/block/dasd_erp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Horst Hummel <Horst.Hummel@de.ibm.com>
diff --git a/drivers/s390/block/dasd_fba.h b/drivers/s390/block/dasd_fba.h
index b5d3db0e5efb..b14bf1b2c691 100644
--- a/drivers/s390/block/dasd_fba.h
+++ b/drivers/s390/block/dasd_fba.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Bugreports.to..: <Linux390@de.ibm.com>
diff --git a/drivers/s390/block/dasd_genhd.c b/drivers/s390/block/dasd_genhd.c
index 8b1341fb2e0d..7036a6c6f86f 100644
--- a/drivers/s390/block/dasd_genhd.c
+++ b/drivers/s390/block/dasd_genhd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Horst Hummel <Horst.Hummel@de.ibm.com>
diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h
index db470bd10175..e94080a5196f 100644
--- a/drivers/s390/block/dasd_int.h
+++ b/drivers/s390/block/dasd_int.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Horst Hummel <Horst.Hummel@de.ibm.com>
diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c
index ec65c1e51c2a..7bdc6aaa0ba3 100644
--- a/drivers/s390/block/dasd_ioctl.c
+++ b/drivers/s390/block/dasd_ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Horst Hummel <Horst.Hummel@de.ibm.com>
diff --git a/drivers/s390/block/dasd_proc.c b/drivers/s390/block/dasd_proc.c
index 7104d6765773..c33788a829c3 100644
--- a/drivers/s390/block/dasd_proc.c
+++ b/drivers/s390/block/dasd_proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
* Horst Hummel <Horst.Hummel@de.ibm.com>
diff --git a/drivers/s390/block/scm_blk.c b/drivers/s390/block/scm_blk.c
index 2e7fd966c515..eb51893c74a4 100644
--- a/drivers/s390/block/scm_blk.c
+++ b/drivers/s390/block/scm_blk.c
@@ -249,7 +249,7 @@ static void scm_request_requeue(struct scm_request *scmrq)
static void scm_request_finish(struct scm_request *scmrq)
{
struct scm_blk_dev *bdev = scmrq->bdev;
- int *error;
+ blk_status_t *error;
int i;
for (i = 0; i < nr_requests_per_io && scmrq->request[i]; i++) {
@@ -415,7 +415,7 @@ void scm_blk_irq(struct scm_device *scmdev, void *data, blk_status_t error)
static void scm_blk_request_done(struct request *req)
{
- int *error = blk_mq_rq_to_pdu(req);
+ blk_status_t *error = blk_mq_rq_to_pdu(req);
blk_mq_end_request(req, *error);
}
@@ -450,7 +450,7 @@ int scm_blk_dev_setup(struct scm_blk_dev *bdev, struct scm_device *scmdev)
atomic_set(&bdev->queued_reqs, 0);
bdev->tag_set.ops = &scm_mq_ops;
- bdev->tag_set.cmd_size = sizeof(int);
+ bdev->tag_set.cmd_size = sizeof(blk_status_t);
bdev->tag_set.nr_hw_queues = nr_requests;
bdev->tag_set.queue_depth = nr_requests_per_io * nr_requests;
bdev->tag_set.flags = BLK_MQ_F_SHOULD_MERGE;
diff --git a/drivers/s390/block/scm_blk.h b/drivers/s390/block/scm_blk.h
index 71288dd9dd7f..aa42c3a2c90a 100644
--- a/drivers/s390/block/scm_blk.h
+++ b/drivers/s390/block/scm_blk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SCM_BLK_H
#define SCM_BLK_H
diff --git a/drivers/s390/block/scm_drv.c b/drivers/s390/block/scm_drv.c
index c98cf52d78d1..3134fd6e058e 100644
--- a/drivers/s390/block/scm_drv.c
+++ b/drivers/s390/block/scm_drv.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device driver for s390 storage class memory.
*
diff --git a/drivers/s390/char/Makefile b/drivers/s390/char/Makefile
index 0c443e26835d..05ac6ba15a53 100644
--- a/drivers/s390/char/Makefile
+++ b/drivers/s390/char/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# S/390 character devices
#
diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c
index 9ec4ae056158..353f0bebcf8c 100644
--- a/drivers/s390/char/con3215.c
+++ b/drivers/s390/char/con3215.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* 3215 line mode terminal driver.
*
diff --git a/drivers/s390/char/con3270.c b/drivers/s390/char/con3270.c
index 8522cfce5b4e..be3e3c1206c2 100644
--- a/drivers/s390/char/con3270.c
+++ b/drivers/s390/char/con3270.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IBM/3270 Driver - console view.
*
diff --git a/drivers/s390/char/ctrlchar.c b/drivers/s390/char/ctrlchar.c
index f7d92584b993..e1686a69a68e 100644
--- a/drivers/s390/char/ctrlchar.c
+++ b/drivers/s390/char/ctrlchar.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Unified handling of special chars.
*
diff --git a/drivers/s390/char/ctrlchar.h b/drivers/s390/char/ctrlchar.h
index 59c2d6e55e55..e52afa3b8180 100644
--- a/drivers/s390/char/ctrlchar.h
+++ b/drivers/s390/char/ctrlchar.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Unified handling of special chars.
*
diff --git a/drivers/s390/char/defkeymap.c b/drivers/s390/char/defkeymap.c
index 07c7f31081bc..98a5c459a1bf 100644
--- a/drivers/s390/char/defkeymap.c
+++ b/drivers/s390/char/defkeymap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Do not edit this file! It was automatically generated by */
/* loadkeys --mktable defkeymap.map > defkeymap.c */
diff --git a/drivers/s390/char/diag_ftp.c b/drivers/s390/char/diag_ftp.c
index a5ccbf6f0d36..6bf1058de873 100644
--- a/drivers/s390/char/diag_ftp.c
+++ b/drivers/s390/char/diag_ftp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* DIAGNOSE X'2C4' instruction based HMC FTP services, useable on z/VM
*
diff --git a/drivers/s390/char/diag_ftp.h b/drivers/s390/char/diag_ftp.h
index 3abd2614053a..5d036ba7114f 100644
--- a/drivers/s390/char/diag_ftp.h
+++ b/drivers/s390/char/diag_ftp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* DIAGNOSE X'2C4' instruction based SE/HMC FTP Services, useable on z/VM
*
diff --git a/drivers/s390/char/hmcdrv_cache.c b/drivers/s390/char/hmcdrv_cache.c
index 4cda5ada143a..1f5bdb237862 100644
--- a/drivers/s390/char/hmcdrv_cache.c
+++ b/drivers/s390/char/hmcdrv_cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SE/HMC Drive (Read) Cache Functions
*
diff --git a/drivers/s390/char/hmcdrv_cache.h b/drivers/s390/char/hmcdrv_cache.h
index a14b57526781..d69f9fe87faa 100644
--- a/drivers/s390/char/hmcdrv_cache.h
+++ b/drivers/s390/char/hmcdrv_cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SE/HMC Drive (Read) Cache Functions
*
diff --git a/drivers/s390/char/hmcdrv_dev.c b/drivers/s390/char/hmcdrv_dev.c
index 43cee7fcd01c..20e9cd542e03 100644
--- a/drivers/s390/char/hmcdrv_dev.c
+++ b/drivers/s390/char/hmcdrv_dev.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* HMC Drive CD/DVD Device
*
diff --git a/drivers/s390/char/hmcdrv_dev.h b/drivers/s390/char/hmcdrv_dev.h
index cb17f07e02de..558eba929130 100644
--- a/drivers/s390/char/hmcdrv_dev.h
+++ b/drivers/s390/char/hmcdrv_dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SE/HMC Drive FTP Device
*
diff --git a/drivers/s390/char/hmcdrv_ftp.c b/drivers/s390/char/hmcdrv_ftp.c
index 8cb7d8fbadd6..0e70397d6e04 100644
--- a/drivers/s390/char/hmcdrv_ftp.c
+++ b/drivers/s390/char/hmcdrv_ftp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* HMC Drive FTP Services
*
diff --git a/drivers/s390/char/hmcdrv_ftp.h b/drivers/s390/char/hmcdrv_ftp.h
index f3643a7b3676..d12ca12b5ccd 100644
--- a/drivers/s390/char/hmcdrv_ftp.h
+++ b/drivers/s390/char/hmcdrv_ftp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SE/HMC Drive FTP Services
*
diff --git a/drivers/s390/char/keyboard.c b/drivers/s390/char/keyboard.c
index 186d05e4c767..5b505fdaedec 100644
--- a/drivers/s390/char/keyboard.c
+++ b/drivers/s390/char/keyboard.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ebcdic keycode functions for s390 console drivers
*
diff --git a/drivers/s390/char/keyboard.h b/drivers/s390/char/keyboard.h
index a31f339211d5..a074d9711628 100644
--- a/drivers/s390/char/keyboard.h
+++ b/drivers/s390/char/keyboard.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ebcdic keycode functions for s390 console drivers
*
diff --git a/drivers/s390/char/raw3270.h b/drivers/s390/char/raw3270.h
index 56519cbb165c..114ca7cbf889 100644
--- a/drivers/s390/char/raw3270.h
+++ b/drivers/s390/char/raw3270.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IBM/3270 Driver
*
diff --git a/drivers/s390/char/sclp.c b/drivers/s390/char/sclp.c
index 6111c1fa2d1e..41d8aa96801f 100644
--- a/drivers/s390/char/sclp.c
+++ b/drivers/s390/char/sclp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* core function to access sclp interface
*
diff --git a/drivers/s390/char/sclp.h b/drivers/s390/char/sclp.h
index 53b5d1b9761a..f41f6e2ca063 100644
--- a/drivers/s390/char/sclp.h
+++ b/drivers/s390/char/sclp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 1999,2012
*
diff --git a/drivers/s390/char/sclp_cmd.c b/drivers/s390/char/sclp_cmd.c
index dff8b94871f0..d7686a68c093 100644
--- a/drivers/s390/char/sclp_cmd.c
+++ b/drivers/s390/char/sclp_cmd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2007,2012
*
diff --git a/drivers/s390/char/sclp_con.c b/drivers/s390/char/sclp_con.c
index 6037bc87e767..d247f238faf8 100644
--- a/drivers/s390/char/sclp_con.c
+++ b/drivers/s390/char/sclp_con.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SCLP line mode console driver
*
diff --git a/drivers/s390/char/sclp_config.c b/drivers/s390/char/sclp_config.c
index 7003d52c2191..194ffd5c8580 100644
--- a/drivers/s390/char/sclp_config.c
+++ b/drivers/s390/char/sclp_config.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2007
* Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
diff --git a/drivers/s390/char/sclp_cpi_sys.c b/drivers/s390/char/sclp_cpi_sys.c
index 90d92fbe7b9b..f60d7ea8268d 100644
--- a/drivers/s390/char/sclp_cpi_sys.c
+++ b/drivers/s390/char/sclp_cpi_sys.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SCLP control program identification sysfs interface
*
diff --git a/drivers/s390/char/sclp_cpi_sys.h b/drivers/s390/char/sclp_cpi_sys.h
index 65bb6a99c97f..edf60d1ca633 100644
--- a/drivers/s390/char/sclp_cpi_sys.h
+++ b/drivers/s390/char/sclp_cpi_sys.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SCLP control program identification sysfs interface
*
diff --git a/drivers/s390/char/sclp_ctl.c b/drivers/s390/char/sclp_ctl.c
index 78a7e4f94721..a78cea0c3a09 100644
--- a/drivers/s390/char/sclp_ctl.c
+++ b/drivers/s390/char/sclp_ctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IOCTL interface for SCLP
*
diff --git a/drivers/s390/char/sclp_diag.h b/drivers/s390/char/sclp_diag.h
index 59c4afa5e670..796c5311b865 100644
--- a/drivers/s390/char/sclp_diag.h
+++ b/drivers/s390/char/sclp_diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2013
* Author(s): Ralf Hoppe (rhoppe@de.ibm.com)
diff --git a/drivers/s390/char/sclp_early.c b/drivers/s390/char/sclp_early.c
index bc1fc00910b0..d06bc5674e5f 100644
--- a/drivers/s390/char/sclp_early.c
+++ b/drivers/s390/char/sclp_early.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SCLP early driver
*
diff --git a/drivers/s390/char/sclp_early_core.c b/drivers/s390/char/sclp_early_core.c
index 5029cc87e80f..edeb2597b0b8 100644
--- a/drivers/s390/char/sclp_early_core.c
+++ b/drivers/s390/char/sclp_early_core.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2015
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/drivers/s390/char/sclp_ftp.c b/drivers/s390/char/sclp_ftp.c
index 6561cc5b2d5d..dfdd6c8fd17e 100644
--- a/drivers/s390/char/sclp_ftp.c
+++ b/drivers/s390/char/sclp_ftp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SCLP Event Type (ET) 7 - Diagnostic Test FTP Services, useable on LPAR
*
diff --git a/drivers/s390/char/sclp_ftp.h b/drivers/s390/char/sclp_ftp.h
index 98ba3183e7d9..d64da18c194d 100644
--- a/drivers/s390/char/sclp_ftp.h
+++ b/drivers/s390/char/sclp_ftp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SCLP Event Type (ET) 7 - Diagnostic Test FTP Services, useable on LPAR
*
diff --git a/drivers/s390/char/sclp_ocf.c b/drivers/s390/char/sclp_ocf.c
index f9cbb1ab047b..d35f10ea5b52 100644
--- a/drivers/s390/char/sclp_ocf.c
+++ b/drivers/s390/char/sclp_ocf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SCLP OCF communication parameters sysfs interface
*
diff --git a/drivers/s390/char/sclp_pci.c b/drivers/s390/char/sclp_pci.c
index 4dbb3dfd4bc7..e7c84a4e5eb5 100644
--- a/drivers/s390/char/sclp_pci.c
+++ b/drivers/s390/char/sclp_pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PCI I/O adapter configuration related functions.
*
diff --git a/drivers/s390/char/sclp_quiesce.c b/drivers/s390/char/sclp_quiesce.c
index e4958511168a..76956c2131cd 100644
--- a/drivers/s390/char/sclp_quiesce.c
+++ b/drivers/s390/char/sclp_quiesce.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* signal quiesce handler
*
diff --git a/drivers/s390/char/sclp_rw.c b/drivers/s390/char/sclp_rw.c
index 91b26df5227d..44594a492553 100644
--- a/drivers/s390/char/sclp_rw.c
+++ b/drivers/s390/char/sclp_rw.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* driver: reading from and writing to system console on S/390 via SCLP
*
diff --git a/drivers/s390/char/sclp_rw.h b/drivers/s390/char/sclp_rw.h
index e3b0290995ba..a2eb22f67393 100644
--- a/drivers/s390/char/sclp_rw.h
+++ b/drivers/s390/char/sclp_rw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* interface to the SCLP-read/write driver
*
diff --git a/drivers/s390/char/sclp_sdias.c b/drivers/s390/char/sclp_sdias.c
index 7cdd13dd7be1..8e0b69a2f11a 100644
--- a/drivers/s390/char/sclp_sdias.c
+++ b/drivers/s390/char/sclp_sdias.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SCLP "store data in absolute storage"
*
diff --git a/drivers/s390/char/sclp_sdias.h b/drivers/s390/char/sclp_sdias.h
index f2431c414150..bc36cf881010 100644
--- a/drivers/s390/char/sclp_sdias.h
+++ b/drivers/s390/char/sclp_sdias.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SCLP "store data in absolute storage"
*
diff --git a/drivers/s390/char/sclp_tty.c b/drivers/s390/char/sclp_tty.c
index 236b736ae136..875628dab419 100644
--- a/drivers/s390/char/sclp_tty.c
+++ b/drivers/s390/char/sclp_tty.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SCLP line mode terminal driver.
*
diff --git a/drivers/s390/char/sclp_tty.h b/drivers/s390/char/sclp_tty.h
index c8773421c31f..0fa2d5971d0f 100644
--- a/drivers/s390/char/sclp_tty.h
+++ b/drivers/s390/char/sclp_tty.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* interface to the SCLP-read/write driver
*
diff --git a/drivers/s390/char/sclp_vt220.c b/drivers/s390/char/sclp_vt220.c
index 095481d32236..e84395d71389 100644
--- a/drivers/s390/char/sclp_vt220.c
+++ b/drivers/s390/char/sclp_vt220.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SCLP VT220 terminal driver.
*
diff --git a/drivers/s390/char/tape.h b/drivers/s390/char/tape.h
index ea664dd4f56d..997b25f6e4cc 100644
--- a/drivers/s390/char/tape.h
+++ b/drivers/s390/char/tape.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* tape device driver for 3480/3490E/3590 tapes.
*
diff --git a/drivers/s390/char/tape_3590.h b/drivers/s390/char/tape_3590.h
index 36b759e89d22..b398d8a3ed3c 100644
--- a/drivers/s390/char/tape_3590.h
+++ b/drivers/s390/char/tape_3590.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* tape device discipline for 3590 tapes.
*
diff --git a/drivers/s390/char/tape_char.c b/drivers/s390/char/tape_char.c
index 46ac1164f242..fc206c9d1c56 100644
--- a/drivers/s390/char/tape_char.c
+++ b/drivers/s390/char/tape_char.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* character device frontend for tape device driver
*
diff --git a/drivers/s390/char/tape_class.h b/drivers/s390/char/tape_class.h
index a332c10d50ad..d25ac075b1ad 100644
--- a/drivers/s390/char/tape_class.h
+++ b/drivers/s390/char/tape_class.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2004 All Rights Reserved.
*
diff --git a/drivers/s390/char/tape_proc.c b/drivers/s390/char/tape_proc.c
index 8733b232a116..faae30476f4b 100644
--- a/drivers/s390/char/tape_proc.c
+++ b/drivers/s390/char/tape_proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* tape device driver for S/390 and zSeries tapes.
*
diff --git a/drivers/s390/char/tape_std.c b/drivers/s390/char/tape_std.c
index 3478e19ae194..7caba0cc8b2a 100644
--- a/drivers/s390/char/tape_std.c
+++ b/drivers/s390/char/tape_std.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* standard tape device functions for ibm tapes.
*
diff --git a/drivers/s390/char/tape_std.h b/drivers/s390/char/tape_std.h
index 8c760c036832..53ec8e2870d4 100644
--- a/drivers/s390/char/tape_std.h
+++ b/drivers/s390/char/tape_std.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* standard tape device functions for ibm tapes.
*
diff --git a/drivers/s390/char/tty3270.h b/drivers/s390/char/tty3270.h
index 11141a8f8974..52ceed6f8408 100644
--- a/drivers/s390/char/tty3270.h
+++ b/drivers/s390/char/tty3270.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2007
*
diff --git a/drivers/s390/char/vmcp.c b/drivers/s390/char/vmcp.c
index 7898bbcc28fc..17e411c57576 100644
--- a/drivers/s390/char/vmcp.c
+++ b/drivers/s390/char/vmcp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2004, 2010
* Interface implementation for communication with the z/VM control program
diff --git a/drivers/s390/char/vmur.h b/drivers/s390/char/vmur.h
index fa320ad4593d..67164ba22f11 100644
--- a/drivers/s390/char/vmur.h
+++ b/drivers/s390/char/vmur.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linux driver for System z and s390 unit record devices
* (z/VM virtual punch, reader, printer)
diff --git a/drivers/s390/cio/Makefile b/drivers/s390/cio/Makefile
index bdf47526038a..a070ef0efe65 100644
--- a/drivers/s390/cio/Makefile
+++ b/drivers/s390/cio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the S/390 common i/o drivers
#
diff --git a/drivers/s390/cio/airq.c b/drivers/s390/cio/airq.c
index 99b5db469097..a45011e4529e 100644
--- a/drivers/s390/cio/airq.c
+++ b/drivers/s390/cio/airq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Support for adapter interruptions
*
diff --git a/drivers/s390/cio/blacklist.c b/drivers/s390/cio/blacklist.c
index bf7f5d4c50e1..2a3f874a21d5 100644
--- a/drivers/s390/cio/blacklist.c
+++ b/drivers/s390/cio/blacklist.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* S/390 common I/O routines -- blacklisting of specific devices
*
diff --git a/drivers/s390/cio/ccwreq.c b/drivers/s390/cio/ccwreq.c
index 2782100b2c07..603268a33ea1 100644
--- a/drivers/s390/cio/ccwreq.c
+++ b/drivers/s390/cio/ccwreq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Handling of internal CCW device requests.
*
diff --git a/drivers/s390/cio/chp.h b/drivers/s390/cio/chp.h
index 0d8437b7ea72..7e80323cd261 100644
--- a/drivers/s390/cio/chp.h
+++ b/drivers/s390/cio/chp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2007, 2010
* Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
diff --git a/drivers/s390/cio/chsc.h b/drivers/s390/cio/chsc.h
index 321a3f765810..dda5953534b7 100644
--- a/drivers/s390/cio/chsc.h
+++ b/drivers/s390/cio/chsc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef S390_CHSC_H
#define S390_CHSC_H
diff --git a/drivers/s390/cio/chsc_sch.h b/drivers/s390/cio/chsc_sch.h
index 589ebfad6aad..ff5328b0bc8a 100644
--- a/drivers/s390/cio/chsc_sch.h
+++ b/drivers/s390/cio/chsc_sch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CHSC_SCH_H
#define _CHSC_SCH_H
diff --git a/drivers/s390/cio/cio.h b/drivers/s390/cio/cio.h
index 939596d81b73..94cd813bdcfe 100644
--- a/drivers/s390/cio/cio.h
+++ b/drivers/s390/cio/cio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef S390_CIO_H
#define S390_CIO_H
diff --git a/drivers/s390/cio/cio_debug.h b/drivers/s390/cio/cio_debug.h
index e64e8278c42e..fa817efcec8f 100644
--- a/drivers/s390/cio/cio_debug.h
+++ b/drivers/s390/cio/cio_debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef CIO_DEBUG_H
#define CIO_DEBUG_H
diff --git a/drivers/s390/cio/crw.c b/drivers/s390/cio/crw.c
index 3d3cd402b376..fc285ca41141 100644
--- a/drivers/s390/cio/crw.c
+++ b/drivers/s390/cio/crw.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Channel report handling code
*
diff --git a/drivers/s390/cio/css.h b/drivers/s390/cio/css.h
index c9f3fb39ebeb..30357cbf350a 100644
--- a/drivers/s390/cio/css.h
+++ b/drivers/s390/cio/css.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CSS_H
#define _CSS_H
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index 489b583f263d..e5c32f4b5287 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -1225,10 +1225,16 @@ static int device_is_disconnected(struct ccw_device *cdev)
static int recovery_check(struct device *dev, void *data)
{
struct ccw_device *cdev = to_ccwdev(dev);
+ struct subchannel *sch;
int *redo = data;
spin_lock_irq(cdev->ccwlock);
switch (cdev->private->state) {
+ case DEV_STATE_ONLINE:
+ sch = to_subchannel(cdev->dev.parent);
+ if ((sch->schib.pmcw.pam & sch->opm) == sch->vpm)
+ break;
+ /* fall through */
case DEV_STATE_DISCONNECTED:
CIO_MSG_EVENT(3, "recovery: trigger 0.%x.%04x\n",
cdev->private->dev_id.ssid,
@@ -1260,7 +1266,7 @@ static void recovery_work_func(struct work_struct *unused)
}
spin_unlock_irq(&recovery_lock);
} else
- CIO_MSG_EVENT(4, "recovery: end\n");
+ CIO_MSG_EVENT(3, "recovery: end\n");
}
static DECLARE_WORK(recovery_work, recovery_work_func);
@@ -1274,11 +1280,11 @@ static void recovery_func(unsigned long data)
schedule_work(&recovery_work);
}
-static void ccw_device_schedule_recovery(void)
+void ccw_device_schedule_recovery(void)
{
unsigned long flags;
- CIO_MSG_EVENT(4, "recovery: schedule\n");
+ CIO_MSG_EVENT(3, "recovery: schedule\n");
spin_lock_irqsave(&recovery_lock, flags);
if (!timer_pending(&recovery_timer) || (recovery_phase != 0)) {
recovery_phase = 0;
diff --git a/drivers/s390/cio/device.h b/drivers/s390/cio/device.h
index ec497af99dd8..b37c22adcc7a 100644
--- a/drivers/s390/cio/device.h
+++ b/drivers/s390/cio/device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef S390_DEVICE_H
#define S390_DEVICE_H
@@ -134,6 +135,7 @@ void ccw_device_set_disconnected(struct ccw_device *cdev);
void ccw_device_set_notoper(struct ccw_device *cdev);
void ccw_device_set_timeout(struct ccw_device *, int);
+void ccw_device_schedule_recovery(void);
/* Channel measurement facility related */
void retry_set_schib(struct ccw_device *cdev);
diff --git a/drivers/s390/cio/device_fsm.c b/drivers/s390/cio/device_fsm.c
index 12016e32e519..f98ea674c3d8 100644
--- a/drivers/s390/cio/device_fsm.c
+++ b/drivers/s390/cio/device_fsm.c
@@ -476,6 +476,17 @@ static void create_fake_irb(struct irb *irb, int type)
}
}
+static void ccw_device_handle_broken_paths(struct ccw_device *cdev)
+{
+ struct subchannel *sch = to_subchannel(cdev->dev.parent);
+ u8 broken_paths = (sch->schib.pmcw.pam & sch->opm) ^ sch->vpm;
+
+ if (broken_paths && (cdev->private->path_broken_mask != broken_paths))
+ ccw_device_schedule_recovery();
+
+ cdev->private->path_broken_mask = broken_paths;
+}
+
void ccw_device_verify_done(struct ccw_device *cdev, int err)
{
struct subchannel *sch;
@@ -508,6 +519,7 @@ callback:
memset(&cdev->private->irb, 0, sizeof(struct irb));
}
ccw_device_report_path_events(cdev);
+ ccw_device_handle_broken_paths(cdev);
break;
case -ETIME:
case -EUSERS:
diff --git a/drivers/s390/cio/device_id.c b/drivers/s390/cio/device_id.c
index d4fa30541a33..f6df83a9dfbb 100644
--- a/drivers/s390/cio/device_id.c
+++ b/drivers/s390/cio/device_id.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* CCW device SENSE ID I/O handling.
*
diff --git a/drivers/s390/cio/device_pgid.c b/drivers/s390/cio/device_pgid.c
index da246b67edfe..d30a3babf176 100644
--- a/drivers/s390/cio/device_pgid.c
+++ b/drivers/s390/cio/device_pgid.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* CCW device PGID and path verification I/O handling.
*
diff --git a/drivers/s390/cio/device_status.c b/drivers/s390/cio/device_status.c
index 9bc3512374c9..7d5c7892b2c4 100644
--- a/drivers/s390/cio/device_status.c
+++ b/drivers/s390/cio/device_status.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2002
* Author(s): Cornelia Huck (cornelia.huck@de.ibm.com)
diff --git a/drivers/s390/cio/eadm_sch.h b/drivers/s390/cio/eadm_sch.h
index 9664e4653f98..390ab5a6b72f 100644
--- a/drivers/s390/cio/eadm_sch.h
+++ b/drivers/s390/cio/eadm_sch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef EADM_SCH_H
#define EADM_SCH_H
diff --git a/drivers/s390/cio/fcx.c b/drivers/s390/cio/fcx.c
index ca5e9bb9d458..99c900cc3e5b 100644
--- a/drivers/s390/cio/fcx.c
+++ b/drivers/s390/cio/fcx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Functions for assembling fcx enabled I/O control blocks.
*
diff --git a/drivers/s390/cio/idset.c b/drivers/s390/cio/idset.c
index b3e06a7b9480..835de44dbbcc 100644
--- a/drivers/s390/cio/idset.c
+++ b/drivers/s390/cio/idset.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2007, 2012
* Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
diff --git a/drivers/s390/cio/idset.h b/drivers/s390/cio/idset.h
index 89a787790888..a3ece8d8091a 100644
--- a/drivers/s390/cio/idset.h
+++ b/drivers/s390/cio/idset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2007, 2012
* Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
diff --git a/drivers/s390/cio/io_sch.h b/drivers/s390/cio/io_sch.h
index 220f49145b2f..af571d8d6925 100644
--- a/drivers/s390/cio/io_sch.h
+++ b/drivers/s390/cio/io_sch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef S390_IO_SCH_H
#define S390_IO_SCH_H
@@ -131,6 +132,8 @@ struct ccw_device_private {
not operable */
u8 path_gone_mask; /* mask of paths, that became unavailable */
u8 path_new_mask; /* mask of paths, that became available */
+ u8 path_broken_mask; /* mask of paths, which were found to be
+ unusable */
struct {
unsigned int fast:1; /* post with "channel end" */
unsigned int repall:1; /* report every interrupt status */
diff --git a/drivers/s390/cio/ioasm.c b/drivers/s390/cio/ioasm.c
index 4182f60124da..4fa9ee1d09fa 100644
--- a/drivers/s390/cio/ioasm.c
+++ b/drivers/s390/cio/ioasm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Channel subsystem I/O instructions.
*/
diff --git a/drivers/s390/cio/ioasm.h b/drivers/s390/cio/ioasm.h
index b31ee6bff1e4..35ad4ddd61e0 100644
--- a/drivers/s390/cio/ioasm.h
+++ b/drivers/s390/cio/ioasm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef S390_CIO_IOASM_H
#define S390_CIO_IOASM_H
diff --git a/drivers/s390/cio/itcw.c b/drivers/s390/cio/itcw.c
index 358ee16d10a2..deaf59f93326 100644
--- a/drivers/s390/cio/itcw.c
+++ b/drivers/s390/cio/itcw.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Functions for incremental construction of fcx enabled I/O control blocks.
*
diff --git a/drivers/s390/cio/orb.h b/drivers/s390/cio/orb.h
index 7a640530e7f5..a2d3778b2c95 100644
--- a/drivers/s390/cio/orb.h
+++ b/drivers/s390/cio/orb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Orb related data structures.
*
diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h
index 7e70f9298cc1..29d6b5222f1c 100644
--- a/drivers/s390/cio/qdio.h
+++ b/drivers/s390/cio/qdio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2000, 2009
* Author(s): Utz Bacher <utz.bacher@de.ibm.com>
diff --git a/drivers/s390/cio/qdio_debug.c b/drivers/s390/cio/qdio_debug.c
index b6fc147f83d8..68a82f3e2e92 100644
--- a/drivers/s390/cio/qdio_debug.c
+++ b/drivers/s390/cio/qdio_debug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2008, 2009
*
diff --git a/drivers/s390/cio/qdio_debug.h b/drivers/s390/cio/qdio_debug.h
index 1d595d17bf11..e06496ab0036 100644
--- a/drivers/s390/cio/qdio_debug.h
+++ b/drivers/s390/cio/qdio_debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2008
*
diff --git a/drivers/s390/cio/qdio_thinint.c b/drivers/s390/cio/qdio_thinint.c
index c61164f4528e..a739bdf9630e 100644
--- a/drivers/s390/cio/qdio_thinint.c
+++ b/drivers/s390/cio/qdio_thinint.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2000, 2009
* Author(s): Utz Bacher <utz.bacher@de.ibm.com>
diff --git a/drivers/s390/cio/trace.c b/drivers/s390/cio/trace.c
index 8e706669ac8b..e331cd97e83b 100644
--- a/drivers/s390/cio/trace.c
+++ b/drivers/s390/cio/trace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Tracepoint definitions for s390_cio
*
diff --git a/drivers/s390/cio/trace.h b/drivers/s390/cio/trace.h
index 5b807a09f21b..1f8d1c1e566d 100644
--- a/drivers/s390/cio/trace.h
+++ b/drivers/s390/cio/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Tracepoint header for the s390 Common I/O layer (CIO)
*
diff --git a/drivers/s390/cio/vfio_ccw_cp.c b/drivers/s390/cio/vfio_ccw_cp.c
index 5ccfdc80d0ec..f20b4d66c75f 100644
--- a/drivers/s390/cio/vfio_ccw_cp.c
+++ b/drivers/s390/cio/vfio_ccw_cp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* channel program interfaces
*
diff --git a/drivers/s390/cio/vfio_ccw_cp.h b/drivers/s390/cio/vfio_ccw_cp.h
index 7a1996b3b36d..a4b74fb1aa57 100644
--- a/drivers/s390/cio/vfio_ccw_cp.h
+++ b/drivers/s390/cio/vfio_ccw_cp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* channel program interfaces
*
diff --git a/drivers/s390/cio/vfio_ccw_fsm.c b/drivers/s390/cio/vfio_ccw_fsm.c
index 80a0559cd7ce..c30420c517b1 100644
--- a/drivers/s390/cio/vfio_ccw_fsm.c
+++ b/drivers/s390/cio/vfio_ccw_fsm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Finite state machine for vfio-ccw device handling
*
diff --git a/drivers/s390/cio/vfio_ccw_ops.c b/drivers/s390/cio/vfio_ccw_ops.c
index a66a317f3e4f..41eeb57d68a3 100644
--- a/drivers/s390/cio/vfio_ccw_ops.c
+++ b/drivers/s390/cio/vfio_ccw_ops.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Physical device callbacks for vfio_ccw
*
diff --git a/drivers/s390/cio/vfio_ccw_private.h b/drivers/s390/cio/vfio_ccw_private.h
index fc0f01c16ef9..78a66d96756b 100644
--- a/drivers/s390/cio/vfio_ccw_private.h
+++ b/drivers/s390/cio/vfio_ccw_private.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Private stuff for vfio_ccw driver
*
diff --git a/drivers/s390/crypto/Makefile b/drivers/s390/crypto/Makefile
index be36f1010d75..b59af548ed1c 100644
--- a/drivers/s390/crypto/Makefile
+++ b/drivers/s390/crypto/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# S/390 crypto devices
#
diff --git a/drivers/s390/crypto/ap_asm.h b/drivers/s390/crypto/ap_asm.h
index cd350345b3d2..6c0474c834d4 100644
--- a/drivers/s390/crypto/ap_asm.h
+++ b/drivers/s390/crypto/ap_asm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2016
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/drivers/s390/crypto/ap_card.c b/drivers/s390/crypto/ap_card.c
index 836efac96813..8a31c9e95430 100644
--- a/drivers/s390/crypto/ap_card.c
+++ b/drivers/s390/crypto/ap_card.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2016
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/drivers/s390/crypto/ap_debug.h b/drivers/s390/crypto/ap_debug.h
index 78dbff842dae..6a9d77c75ec3 100644
--- a/drivers/s390/crypto/ap_debug.h
+++ b/drivers/s390/crypto/ap_debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2016
* Author(s): Harald Freudenberger <freude@de.ibm.com>
diff --git a/drivers/s390/crypto/ap_queue.c b/drivers/s390/crypto/ap_queue.c
index 56b96edffd5b..6c8bd8ad6185 100644
--- a/drivers/s390/crypto/ap_queue.c
+++ b/drivers/s390/crypto/ap_queue.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2016
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/drivers/s390/crypto/zcrypt_cex4.h b/drivers/s390/crypto/zcrypt_cex4.h
index 719571375ccc..748390a3799b 100644
--- a/drivers/s390/crypto/zcrypt_cex4.h
+++ b/drivers/s390/crypto/zcrypt_cex4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2012
* Author(s): Holger Dengler <hd@linux.vnet.ibm.com>
diff --git a/drivers/s390/crypto/zcrypt_debug.h b/drivers/s390/crypto/zcrypt_debug.h
index 13e38defb6b8..241dbb5f75bf 100644
--- a/drivers/s390/crypto/zcrypt_debug.h
+++ b/drivers/s390/crypto/zcrypt_debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2016
* Author(s): Holger Dengler (hd@linux.vnet.ibm.com)
diff --git a/drivers/s390/net/Makefile b/drivers/s390/net/Makefile
index c351b07603e0..513b7ae64980 100644
--- a/drivers/s390/net/Makefile
+++ b/drivers/s390/net/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# S/390 network devices
#
diff --git a/drivers/s390/net/ctcm_dbug.c b/drivers/s390/net/ctcm_dbug.c
index 8363f1c966ef..f7ec51db3cd6 100644
--- a/drivers/s390/net/ctcm_dbug.c
+++ b/drivers/s390/net/ctcm_dbug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2001, 2007
* Authors: Peter Tiedemann (ptiedem@de.ibm.com)
diff --git a/drivers/s390/net/ctcm_dbug.h b/drivers/s390/net/ctcm_dbug.h
index 47bf0501995e..675575ef162e 100644
--- a/drivers/s390/net/ctcm_dbug.h
+++ b/drivers/s390/net/ctcm_dbug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2001, 2007
* Authors: Peter Tiedemann (ptiedem@de.ibm.com)
diff --git a/drivers/s390/net/ctcm_fsms.c b/drivers/s390/net/ctcm_fsms.c
index 570ae3b7adf6..1b4ee570b712 100644
--- a/drivers/s390/net/ctcm_fsms.c
+++ b/drivers/s390/net/ctcm_fsms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2001, 2007
* Authors: Fritz Elfert (felfert@millenux.com)
diff --git a/drivers/s390/net/ctcm_fsms.h b/drivers/s390/net/ctcm_fsms.h
index c963d04799c0..225737295cb4 100644
--- a/drivers/s390/net/ctcm_fsms.h
+++ b/drivers/s390/net/ctcm_fsms.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2001, 2007
* Authors: Fritz Elfert (felfert@millenux.com)
diff --git a/drivers/s390/net/ctcm_main.h b/drivers/s390/net/ctcm_main.h
index 6f4417c80247..16bdf23ee02b 100644
--- a/drivers/s390/net/ctcm_main.h
+++ b/drivers/s390/net/ctcm_main.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2001, 2007
* Authors: Fritz Elfert (felfert@millenux.com)
diff --git a/drivers/s390/net/ctcm_mpc.c b/drivers/s390/net/ctcm_mpc.c
index f8be39634f03..e02f295d38a9 100644
--- a/drivers/s390/net/ctcm_mpc.c
+++ b/drivers/s390/net/ctcm_mpc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2004, 2007
* Authors: Belinda Thompson (belindat@us.ibm.com)
diff --git a/drivers/s390/net/ctcm_mpc.h b/drivers/s390/net/ctcm_mpc.h
index bd1b1cc54ffa..441d7b211f0f 100644
--- a/drivers/s390/net/ctcm_mpc.h
+++ b/drivers/s390/net/ctcm_mpc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2007
* Authors: Peter Tiedemann (ptiedem@de.ibm.com)
diff --git a/drivers/s390/net/ctcm_sysfs.c b/drivers/s390/net/ctcm_sysfs.c
index ddb0aa321339..ded1930a00b2 100644
--- a/drivers/s390/net/ctcm_sysfs.c
+++ b/drivers/s390/net/ctcm_sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2007, 2007
* Authors: Peter Tiedemann (ptiedem@de.ibm.com)
diff --git a/drivers/s390/net/fsm.h b/drivers/s390/net/fsm.h
index a4510cf59034..16dc071a2973 100644
--- a/drivers/s390/net/fsm.h
+++ b/drivers/s390/net/fsm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FSM_H_
#define _FSM_H_
diff --git a/drivers/s390/net/lcs.h b/drivers/s390/net/lcs.h
index 150fcb4cebc3..f94d8f6dd7a8 100644
--- a/drivers/s390/net/lcs.h
+++ b/drivers/s390/net/lcs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*lcs.h*/
#include <linux/interrupt.h>
diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h
index 59e09854c4f7..47a13c5723c6 100644
--- a/drivers/s390/net/qeth_core.h
+++ b/drivers/s390/net/qeth_core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2007
* Author(s): Utz Bacher <utz.bacher@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_core_mpc.c b/drivers/s390/net/qeth_core_mpc.c
index 6dd7d05e5693..dafb8c643426 100644
--- a/drivers/s390/net/qeth_core_mpc.c
+++ b/drivers/s390/net/qeth_core_mpc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2007
* Author(s): Frank Pavlic <fpavlic@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_core_mpc.h b/drivers/s390/net/qeth_core_mpc.h
index 912e0107de8f..55f3d234ea1d 100644
--- a/drivers/s390/net/qeth_core_mpc.h
+++ b/drivers/s390/net/qeth_core_mpc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2007
* Author(s): Frank Pavlic <fpavlic@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_l2.h b/drivers/s390/net/qeth_l2.h
index 0d59f9a45ea9..d4a8293d318d 100644
--- a/drivers/s390/net/qeth_l2.h
+++ b/drivers/s390/net/qeth_l2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2013
* Author(s): Eugene Crosser <eugene.crosser@ru.ibm.com>
diff --git a/drivers/s390/net/qeth_l2_sys.c b/drivers/s390/net/qeth_l2_sys.c
index 9696baa49e2d..d33d413f7150 100644
--- a/drivers/s390/net/qeth_l2_sys.c
+++ b/drivers/s390/net/qeth_l2_sys.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2013
* Author(s): Eugene Crosser <eugene.crosser@ru.ibm.com>
diff --git a/drivers/s390/net/qeth_l3.h b/drivers/s390/net/qeth_l3.h
index 9b5e439f18cf..194ae9b577cc 100644
--- a/drivers/s390/net/qeth_l3.h
+++ b/drivers/s390/net/qeth_l3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright IBM Corp. 2007
* Author(s): Utz Bacher <utz.bacher@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_l3_sys.c b/drivers/s390/net/qeth_l3_sys.c
index e8bcc314cc5f..7a829ad77783 100644
--- a/drivers/s390/net/qeth_l3_sys.c
+++ b/drivers/s390/net/qeth_l3_sys.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2007
* Author(s): Utz Bacher <utz.bacher@de.ibm.com>,
diff --git a/drivers/s390/net/smsgiucv.h b/drivers/s390/net/smsgiucv.h
index 45bc925928ca..a0d6c6130c4b 100644
--- a/drivers/s390/net/smsgiucv.h
+++ b/drivers/s390/net/smsgiucv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IUCV special message driver
*
diff --git a/drivers/s390/scsi/zfcp_ccw.c b/drivers/s390/scsi/zfcp_ccw.c
index 54c7b48fdb46..49eda141ea43 100644
--- a/drivers/s390/scsi/zfcp_ccw.c
+++ b/drivers/s390/scsi/zfcp_ccw.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c
index 8227076c9cbb..a8b831000b2d 100644
--- a/drivers/s390/scsi/zfcp_dbf.c
+++ b/drivers/s390/scsi/zfcp_dbf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_dbf.h b/drivers/s390/scsi/zfcp_dbf.h
index 3508c00458f4..e2a973cd2573 100644
--- a/drivers/s390/scsi/zfcp_dbf.h
+++ b/drivers/s390/scsi/zfcp_dbf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* zfcp device driver
* debug feature declarations
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h
index b8e853e53546..3396a47721a7 100644
--- a/drivers/s390/scsi/zfcp_def.h
+++ b/drivers/s390/scsi/zfcp_def.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
index ec2532ee1822..cbb8156bf5e0 100644
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h
index a9e968717dd9..8ca2ab7deaa9 100644
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c
index 8210645c2111..ca218c82321f 100644
--- a/drivers/s390/scsi/zfcp_fc.c
+++ b/drivers/s390/scsi/zfcp_fc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_fc.h b/drivers/s390/scsi/zfcp_fc.h
index 41f22d3dc6d1..6a397ddaadf0 100644
--- a/drivers/s390/scsi/zfcp_fc.h
+++ b/drivers/s390/scsi/zfcp_fc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index 69d1dc3ec79d..00fb98f7b2cd 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_fsf.h b/drivers/s390/scsi/zfcp_fsf.h
index 88feba5bfda4..4baca67aba6d 100644
--- a/drivers/s390/scsi/zfcp_fsf.h
+++ b/drivers/s390/scsi/zfcp_fsf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c
index 9e358fc04b78..4ab02e8d36f3 100644
--- a/drivers/s390/scsi/zfcp_qdio.c
+++ b/drivers/s390/scsi/zfcp_qdio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_qdio.h b/drivers/s390/scsi/zfcp_qdio.h
index 7f647a90c750..886c662cc154 100644
--- a/drivers/s390/scsi/zfcp_qdio.h
+++ b/drivers/s390/scsi/zfcp_qdio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_reqlist.h b/drivers/s390/scsi/zfcp_reqlist.h
index 703fce59befe..59a943c0d51d 100644
--- a/drivers/s390/scsi/zfcp_reqlist.h
+++ b/drivers/s390/scsi/zfcp_reqlist.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c
index 6cf8732627e0..4d2ba5682493 100644
--- a/drivers/s390/scsi/zfcp_scsi.c
+++ b/drivers/s390/scsi/zfcp_scsi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_sysfs.c b/drivers/s390/scsi/zfcp_sysfs.c
index 96a0be13e841..3ac823f2540f 100644
--- a/drivers/s390/scsi/zfcp_sysfs.c
+++ b/drivers/s390/scsi/zfcp_sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* zfcp device driver
*
diff --git a/drivers/s390/scsi/zfcp_unit.c b/drivers/s390/scsi/zfcp_unit.c
index 9310a547b89f..1bf0a0984a09 100644
--- a/drivers/s390/scsi/zfcp_unit.c
+++ b/drivers/s390/scsi/zfcp_unit.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* zfcp device driver
*
diff --git a/drivers/sbus/char/Makefile b/drivers/sbus/char/Makefile
index 78b6183c9866..ae478144c551 100644
--- a/drivers/sbus/char/Makefile
+++ b/drivers/sbus/char/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel miscellaneous SPARC device drivers.
#
diff --git a/drivers/sbus/char/bbc_envctrl.c b/drivers/sbus/char/bbc_envctrl.c
index 228c782d6433..fb5bcf6dddc1 100644
--- a/drivers/sbus/char/bbc_envctrl.c
+++ b/drivers/sbus/char/bbc_envctrl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* bbc_envctrl.c: UltraSPARC-III environment control driver.
*
* Copyright (C) 2001, 2008 David S. Miller (davem@davemloft.net)
diff --git a/drivers/sbus/char/bbc_i2c.h b/drivers/sbus/char/bbc_i2c.h
index 4b4531066e75..c2d066d3fa41 100644
--- a/drivers/sbus/char/bbc_i2c.h
+++ b/drivers/sbus/char/bbc_i2c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BBC_I2C_H
#define _BBC_I2C_H
diff --git a/drivers/sbus/char/max1617.h b/drivers/sbus/char/max1617.h
index cd30819a0a30..45c8318787d8 100644
--- a/drivers/sbus/char/max1617.h
+++ b/drivers/sbus/char/max1617.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: max1617.h,v 1.1 2001/04/02 09:59:08 davem Exp $ */
#ifndef _MAX1617_H
#define _MAX1617_H
diff --git a/drivers/scsi/53c700.h b/drivers/scsi/53c700.h
index f34c916b95bc..0c9a100af667 100644
--- a/drivers/scsi/53c700.h
+++ b/drivers/scsi/53c700.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* -*- mode: c; c-basic-offset: 8 -*- */
/* Driver for 53c700 and 53c700-66 chips from NCR and Symbios
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index 93dbe58c47c8..1639bf8b1ab6 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for linux/drivers/scsi
#
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 8a0812221d72..777b0222d021 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* NCR 5380 generic driver routines. These should make it *trivial*
* to implement 5380 SCSI drivers under Linux with a non-trantor
diff --git a/drivers/scsi/NCR5380.h b/drivers/scsi/NCR5380.h
index d78f0957d865..31096a0b0fdd 100644
--- a/drivers/scsi/NCR5380.h
+++ b/drivers/scsi/NCR5380.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NCR 5380 defines
*
diff --git a/drivers/scsi/NCR_D700.h b/drivers/scsi/NCR_D700.h
index f167af6bd2af..eb675d782ef6 100644
--- a/drivers/scsi/NCR_D700.h
+++ b/drivers/scsi/NCR_D700.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* -*- mode: c; c-basic-offset: 8 -*- */
/* NCR Dual 700 MCA SCSI Driver
diff --git a/drivers/scsi/NCR_Q720.h b/drivers/scsi/NCR_Q720.h
index 7b9209008187..d5f46cdb736e 100644
--- a/drivers/scsi/NCR_Q720.h
+++ b/drivers/scsi/NCR_Q720.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* -*- mode: c; c-basic-offset: 8 -*- */
/* NCR Quad 720 MCA SCSI Driver
diff --git a/drivers/scsi/a2091.h b/drivers/scsi/a2091.h
index 794b8e65c711..8d8a4074a570 100644
--- a/drivers/scsi/a2091.h
+++ b/drivers/scsi/a2091.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef A2091_H
#define A2091_H
diff --git a/drivers/scsi/a3000.h b/drivers/scsi/a3000.h
index 49db4a335aab..5cb3e7535281 100644
--- a/drivers/scsi/a3000.h
+++ b/drivers/scsi/a3000.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef A3000_H
#define A3000_H
diff --git a/drivers/scsi/aha152x.h b/drivers/scsi/aha152x.h
index ac4bfa438bf2..efd01877d02b 100644
--- a/drivers/scsi/aha152x.h
+++ b/drivers/scsi/aha152x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AHA152X_H
#define _AHA152X_H
diff --git a/drivers/scsi/aha1542.h b/drivers/scsi/aha1542.h
index 0fe9bae1b3d1..f5b0d210fb3c 100644
--- a/drivers/scsi/aha1542.h
+++ b/drivers/scsi/aha1542.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AHA1542_H_
#define _AHA1542_H_
diff --git a/drivers/scsi/aha1740.h b/drivers/scsi/aha1740.h
index b0c5603461ca..dfdaa4d3ea4e 100644
--- a/drivers/scsi/aha1740.h
+++ b/drivers/scsi/aha1740.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AHA1740_H
/* $Id$
diff --git a/drivers/scsi/aic7xxx/Makefile b/drivers/scsi/aic7xxx/Makefile
index b03ba0df7a83..c15be2590d1c 100644
--- a/drivers/scsi/aic7xxx/Makefile
+++ b/drivers/scsi/aic7xxx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux aic7xxx SCSI driver.
#
diff --git a/drivers/scsi/aic7xxx/aicasm/Makefile b/drivers/scsi/aic7xxx/aicasm/Makefile
index 45e2d49c1fff..243adb0a38d1 100644
--- a/drivers/scsi/aic7xxx/aicasm/Makefile
+++ b/drivers/scsi/aic7xxx/aicasm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
PROG= aicasm
OUTDIR ?= ./
diff --git a/drivers/scsi/arm/Makefile b/drivers/scsi/arm/Makefile
index 16c3e86a6b1b..b576d9276f71 100644
--- a/drivers/scsi/arm/Makefile
+++ b/drivers/scsi/arm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for drivers/scsi/arm
#
diff --git a/drivers/scsi/atp870u.h b/drivers/scsi/atp870u.h
index 9b839b1e895a..75c44399fc88 100644
--- a/drivers/scsi/atp870u.h
+++ b/drivers/scsi/atp870u.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ATP870U_H
#define _ATP870U_H
diff --git a/drivers/scsi/bfa/Makefile b/drivers/scsi/bfa/Makefile
index 475cf925d5e8..442fc3db8f1f 100644
--- a/drivers/scsi/bfa/Makefile
+++ b/drivers/scsi/bfa/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_SCSI_BFA_FC) := bfa.o
bfa-y := bfad.o bfad_im.o bfad_attr.o bfad_debugfs.o bfad_bsg.o
diff --git a/drivers/scsi/constants.c b/drivers/scsi/constants.c
index 6dc96c8dfe75..d4c2a2e4c5d4 100644
--- a/drivers/scsi/constants.c
+++ b/drivers/scsi/constants.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ASCII values for a number of symbolic constants, printing functions,
* etc.
diff --git a/drivers/scsi/csiostor/Makefile b/drivers/scsi/csiostor/Makefile
index 3681a3fbd499..d047e22eac0d 100644
--- a/drivers/scsi/csiostor/Makefile
+++ b/drivers/scsi/csiostor/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
## Chelsio FCoE driver
#
diff --git a/drivers/scsi/dc395x.h b/drivers/scsi/dc395x.h
index fbf35e37701e..5379a936141a 100644
--- a/drivers/scsi/dc395x.h
+++ b/drivers/scsi/dc395x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/************************************************************************/
/* */
/* dc395x.h */
diff --git a/drivers/scsi/eata_generic.h b/drivers/scsi/eata_generic.h
index 5016af5cf860..1a396c5e7f73 100644
--- a/drivers/scsi/eata_generic.h
+++ b/drivers/scsi/eata_generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/********************************************************
* Header file for eata_dma.c and eata_pio.c *
* Linux EATA SCSI drivers *
diff --git a/drivers/scsi/eata_pio.h b/drivers/scsi/eata_pio.h
index 7deeb935748b..5b5e3d13670b 100644
--- a/drivers/scsi/eata_pio.h
+++ b/drivers/scsi/eata_pio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/********************************************************
* Header file for eata_pio.c Linux EATA-PIO SCSI driver *
* (c) 1993-96 Michael Neuffer *
diff --git a/drivers/scsi/esp_scsi.h b/drivers/scsi/esp_scsi.h
index 7e8932ae91f8..8163dca2071b 100644
--- a/drivers/scsi/esp_scsi.h
+++ b/drivers/scsi/esp_scsi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* esp_scsi.h: Defines and structures for the ESP driver.
*
* Copyright (C) 2007 David S. Miller (davem@davemloft.net)
diff --git a/drivers/scsi/fcoe/libfcoe.h b/drivers/scsi/fcoe/libfcoe.h
index d3bb16d11401..b8bdfab51a58 100644
--- a/drivers/scsi/fcoe/libfcoe.h
+++ b/drivers/scsi/fcoe/libfcoe.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FCOE_LIBFCOE_H_
#define _FCOE_LIBFCOE_H_
diff --git a/drivers/scsi/fnic/Makefile b/drivers/scsi/fnic/Makefile
index 383598fadf04..6214a6b2e96d 100644
--- a/drivers/scsi/fnic/Makefile
+++ b/drivers/scsi/fnic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_FCOE_FNIC) += fnic.o
fnic-y := \
diff --git a/drivers/scsi/gdth.h b/drivers/scsi/gdth.h
index 3fd8b83ffbf9..95fc720c1b30 100644
--- a/drivers/scsi/gdth.h
+++ b/drivers/scsi/gdth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _GDTH_H
#define _GDTH_H
diff --git a/drivers/scsi/gdth_ioctl.h b/drivers/scsi/gdth_ioctl.h
index b004c6165887..4c91894ac244 100644
--- a/drivers/scsi/gdth_ioctl.h
+++ b/drivers/scsi/gdth_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _GDTH_IOCTL_H
#define _GDTH_IOCTL_H
diff --git a/drivers/scsi/gdth_proc.c b/drivers/scsi/gdth_proc.c
index d08b2716752c..20add49cdd32 100644
--- a/drivers/scsi/gdth_proc.c
+++ b/drivers/scsi/gdth_proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* gdth_proc.c
* $Id: gdth_proc.c,v 1.43 2006/01/11 16:15:00 achim Exp $
*/
diff --git a/drivers/scsi/gdth_proc.h b/drivers/scsi/gdth_proc.h
index aaa618198972..d7d0aa283695 100644
--- a/drivers/scsi/gdth_proc.h
+++ b/drivers/scsi/gdth_proc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _GDTH_PROC_H
#define _GDTH_PROC_H
diff --git a/drivers/scsi/gvp11.h b/drivers/scsi/gvp11.h
index 852913cde5dd..61c1a3584461 100644
--- a/drivers/scsi/gvp11.h
+++ b/drivers/scsi/gvp11.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef GVP11_H
/* $Id: gvp11.h,v 1.4 1997/01/19 23:07:12 davem Exp $
diff --git a/drivers/scsi/ibmvscsi_tgt/libsrp.h b/drivers/scsi/ibmvscsi_tgt/libsrp.h
index 9fec55b36322..832606ae2908 100644
--- a/drivers/scsi/ibmvscsi_tgt/libsrp.h
+++ b/drivers/scsi/ibmvscsi_tgt/libsrp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LIBSRP_H__
#define __LIBSRP_H__
diff --git a/drivers/scsi/imm.h b/drivers/scsi/imm.h
index 8f6f32fc61ff..7f2bb35b1b87 100644
--- a/drivers/scsi/imm.h
+++ b/drivers/scsi/imm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Driver for the Iomega MatchMaker parallel port SCSI HBA embedded in
* the Iomega ZIP Plus drive
diff --git a/drivers/scsi/isci/Makefile b/drivers/scsi/isci/Makefile
index 3359e10e0d8f..da6f04cae272 100644
--- a/drivers/scsi/isci/Makefile
+++ b/drivers/scsi/isci/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_SCSI_ISCI) += isci.o
isci-objs := init.o phy.o request.o \
remote_device.o port.o \
diff --git a/drivers/scsi/libfc/Makefile b/drivers/scsi/libfc/Makefile
index 4bb23ac86a5c..65396f86c307 100644
--- a/drivers/scsi/libfc/Makefile
+++ b/drivers/scsi/libfc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# $Id: Makefile
obj-$(CONFIG_LIBFC) += libfc.o
diff --git a/drivers/scsi/lpfc/lpfc_nvme.c b/drivers/scsi/lpfc/lpfc_nvme.c
index 79ba3ce063a4..23bdb1ca106e 100644
--- a/drivers/scsi/lpfc/lpfc_nvme.c
+++ b/drivers/scsi/lpfc/lpfc_nvme.c
@@ -884,7 +884,7 @@ out_err:
wcqe->total_data_placed);
nCmd->transferred_length = 0;
nCmd->rcv_rsplen = 0;
- nCmd->status = NVME_SC_FC_TRANSPORT_ERROR;
+ nCmd->status = NVME_SC_INTERNAL;
}
}
diff --git a/drivers/scsi/mac53c94.h b/drivers/scsi/mac53c94.h
index 1ad24e4f0a85..5df6e81f78a8 100644
--- a/drivers/scsi/mac53c94.h
+++ b/drivers/scsi/mac53c94.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* mac53c94.h: definitions for the driver for the 53c94 SCSI bus adaptor
* found on Power Macintosh computers, controlling the external SCSI chain.
diff --git a/drivers/scsi/megaraid.h b/drivers/scsi/megaraid.h
index 508d65e5a518..21eba2fd465a 100644
--- a/drivers/scsi/megaraid.h
+++ b/drivers/scsi/megaraid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MEGARAID_H__
#define __MEGARAID_H__
diff --git a/drivers/scsi/megaraid/Makefile b/drivers/scsi/megaraid/Makefile
index 5826ed509e3e..6e74d21227a5 100644
--- a/drivers/scsi/megaraid/Makefile
+++ b/drivers/scsi/megaraid/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MEGARAID_MM) += megaraid_mm.o
obj-$(CONFIG_MEGARAID_MAILBOX) += megaraid_mbox.o
obj-$(CONFIG_MEGARAID_SAS) += megaraid_sas.o
diff --git a/drivers/scsi/mesh.h b/drivers/scsi/mesh.h
index 4fdb81fa55e2..ee53c05ace95 100644
--- a/drivers/scsi/mesh.h
+++ b/drivers/scsi/mesh.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* mesh.h: definitions for the driver for the MESH SCSI bus adaptor
* (Macintosh Enhanced SCSI Hardware) found on Power Macintosh computers.
diff --git a/drivers/scsi/mpt3sas/Makefile b/drivers/scsi/mpt3sas/Makefile
index b7643f596c1e..84fb3fbdb0ca 100644
--- a/drivers/scsi/mpt3sas/Makefile
+++ b/drivers/scsi/mpt3sas/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# mpt3sas makefile
obj-$(CONFIG_SCSI_MPT3SAS) += mpt3sas.o
mpt3sas-y += mpt3sas_base.o \
diff --git a/drivers/scsi/mpt3sas/mpi/mpi2.h b/drivers/scsi/mpt3sas/mpi/mpi2.h
index a9a659fc2812..2608011cc7f1 100644
--- a/drivers/scsi/mpt3sas/mpi/mpi2.h
+++ b/drivers/scsi/mpt3sas/mpi/mpi2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2000-2015 Avago Technologies. All rights reserved.
*
diff --git a/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h b/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
index fa61baf7c74d..036c9cf61032 100644
--- a/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
+++ b/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2000-2015 Avago Technologies. All rights reserved.
*
diff --git a/drivers/scsi/mpt3sas/mpi/mpi2_init.h b/drivers/scsi/mpt3sas/mpi/mpi2_init.h
index bba56b61d36c..38b2c879bf0f 100644
--- a/drivers/scsi/mpt3sas/mpi/mpi2_init.h
+++ b/drivers/scsi/mpt3sas/mpi/mpi2_init.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2000-2015 Avago Technologies. All rights reserved.
*
diff --git a/drivers/scsi/mpt3sas/mpi/mpi2_ioc.h b/drivers/scsi/mpt3sas/mpi/mpi2_ioc.h
index af4be403582e..673cf05f94dc 100644
--- a/drivers/scsi/mpt3sas/mpi/mpi2_ioc.h
+++ b/drivers/scsi/mpt3sas/mpi/mpi2_ioc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2000-2015 Avago Technologies. All rights reserved.
*
diff --git a/drivers/scsi/mpt3sas/mpi/mpi2_raid.h b/drivers/scsi/mpt3sas/mpi/mpi2_raid.h
index 1c0eeeeb5eaf..b9bb1c178f12 100644
--- a/drivers/scsi/mpt3sas/mpi/mpi2_raid.h
+++ b/drivers/scsi/mpt3sas/mpi/mpi2_raid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2000-2014 Avago Technologies. All rights reserved.
*
diff --git a/drivers/scsi/mpt3sas/mpi/mpi2_sas.h b/drivers/scsi/mpt3sas/mpi/mpi2_sas.h
index c10c2c02a945..afa17ff246b4 100644
--- a/drivers/scsi/mpt3sas/mpi/mpi2_sas.h
+++ b/drivers/scsi/mpt3sas/mpi/mpi2_sas.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2000-2015 Avago Technologies. All rights reserved.
*
diff --git a/drivers/scsi/mpt3sas/mpi/mpi2_tool.h b/drivers/scsi/mpt3sas/mpi/mpi2_tool.h
index 5f9289a1166f..593765a4ddb8 100644
--- a/drivers/scsi/mpt3sas/mpi/mpi2_tool.h
+++ b/drivers/scsi/mpt3sas/mpi/mpi2_tool.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2000-2014 Avago Technologies. All rights reserved.
*
diff --git a/drivers/scsi/mpt3sas/mpi/mpi2_type.h b/drivers/scsi/mpt3sas/mpi/mpi2_type.h
index 92a81abc2c31..36494439a419 100644
--- a/drivers/scsi/mpt3sas/mpi/mpi2_type.h
+++ b/drivers/scsi/mpt3sas/mpi/mpi2_type.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2000-2014 Avago Technologies. All rights reserved.
*
diff --git a/drivers/scsi/mvme147.c b/drivers/scsi/mvme147.c
index 4f515700bdc3..e6b2b681fda3 100644
--- a/drivers/scsi/mvme147.c
+++ b/drivers/scsi/mvme147.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/mm.h>
#include <linux/blkdev.h>
diff --git a/drivers/scsi/mvme147.h b/drivers/scsi/mvme147.h
index bfd4566ef050..f75ff58ddcd0 100644
--- a/drivers/scsi/mvme147.h
+++ b/drivers/scsi/mvme147.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef MVME147_H
/* $Id: mvme147.h,v 1.4 1997/01/19 23:07:10 davem Exp $
diff --git a/drivers/scsi/osst.h b/drivers/scsi/osst.h
index b4fea98ba276..b90ae280853d 100644
--- a/drivers/scsi/osst.h
+++ b/drivers/scsi/osst.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* $Header: /cvsroot/osst/Driver/osst.h,v 1.16 2005/01/01 21:13:35 wriede Exp $
*/
diff --git a/drivers/scsi/osst_detect.h b/drivers/scsi/osst_detect.h
index 21717d0e6974..83c1d4fb11db 100644
--- a/drivers/scsi/osst_detect.h
+++ b/drivers/scsi/osst_detect.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define SIGS_FROM_OSST \
{"OnStream", "SC-", "", "osst"}, \
{"OnStream", "DI-", "", "osst"}, \
diff --git a/drivers/scsi/osst_options.h b/drivers/scsi/osst_options.h
index ff1e610946ed..a6a389b88876 100644
--- a/drivers/scsi/osst_options.h
+++ b/drivers/scsi/osst_options.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
The compile-time configurable defaults for the Linux SCSI tape driver.
diff --git a/drivers/scsi/pcmcia/Makefile b/drivers/scsi/pcmcia/Makefile
index 683bf148b5b7..44eea2d43143 100644
--- a/drivers/scsi/pcmcia/Makefile
+++ b/drivers/scsi/pcmcia/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -Idrivers/scsi
diff --git a/drivers/scsi/pm8001/Makefile b/drivers/scsi/pm8001/Makefile
index ce4cd87c7c66..02b7338999cc 100644
--- a/drivers/scsi/pm8001/Makefile
+++ b/drivers/scsi/pm8001/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Kernel configuration file for the PM8001 SAS/SATA 8x6G based HBA driver
#
diff --git a/drivers/scsi/ppa.h b/drivers/scsi/ppa.h
index ba8021427b88..6a1f8a2d70eb 100644
--- a/drivers/scsi/ppa.h
+++ b/drivers/scsi/ppa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Driver for the PPA3 parallel port SCSI HBA embedded in
* the Iomega ZIP drive
*
diff --git a/drivers/scsi/qla2xxx/Makefile b/drivers/scsi/qla2xxx/Makefile
index 0b767a0bb308..17d5bc1cc56b 100644
--- a/drivers/scsi/qla2xxx/Makefile
+++ b/drivers/scsi/qla2xxx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
qla2xxx-y := qla_os.o qla_init.o qla_mbx.o qla_iocb.o qla_isr.o qla_gs.o \
qla_dbg.o qla_sup.o qla_attr.o qla_mid.o qla_dfs.o qla_bsg.o \
qla_nx.o qla_mr.o qla_nx2.o qla_target.o qla_tmpl.o qla_nvme.o
diff --git a/drivers/scsi/qla2xxx/qla_devtbl.h b/drivers/scsi/qla2xxx/qla_devtbl.h
index d6ea69df7c5c..ffb9694be748 100644
--- a/drivers/scsi/qla2xxx/qla_devtbl.h
+++ b/drivers/scsi/qla2xxx/qla_devtbl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define QLA_MODEL_NAMES 0x5C
/*
diff --git a/drivers/scsi/qla2xxx/qla_nvme.c b/drivers/scsi/qla2xxx/qla_nvme.c
index 1f59e7a74c7b..6b33a1f24f56 100644
--- a/drivers/scsi/qla2xxx/qla_nvme.c
+++ b/drivers/scsi/qla2xxx/qla_nvme.c
@@ -180,7 +180,7 @@ static void qla_nvme_sp_done(void *ptr, int res)
goto rel;
if (unlikely(res == QLA_FUNCTION_FAILED))
- fd->status = NVME_SC_FC_TRANSPORT_ERROR;
+ fd->status = NVME_SC_INTERNAL;
else
fd->status = 0;
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.h b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
index 071035dfa99a..7550ba2831c3 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <target/target_core_base.h>
#include <linux/btree.h>
diff --git a/drivers/scsi/qlogicfas408.h b/drivers/scsi/qlogicfas408.h
index f6b1216af79f..a971db11d293 100644
--- a/drivers/scsi/qlogicfas408.h
+++ b/drivers/scsi/qlogicfas408.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* to be used by qlogicfas and qlogic_cs */
#ifndef __QLOGICFAS408_H
#define __QLOGICFAS408_H
diff --git a/drivers/scsi/qlogicpti.h b/drivers/scsi/qlogicpti.h
index 892a0b058b99..884ad72ade57 100644
--- a/drivers/scsi/qlogicpti.h
+++ b/drivers/scsi/qlogicpti.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* qlogicpti.h: Performance Technologies QlogicISP sbus card defines.
*
* Copyright (C) 1996 David S. Miller (davem@caipfs.rutgers.edu)
diff --git a/drivers/scsi/scsi.h b/drivers/scsi/scsi.h
index d5a55fae60e0..6dcc4c685d1d 100644
--- a/drivers/scsi/scsi.h
+++ b/drivers/scsi/scsi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* scsi.h Copyright (C) 1992 Drew Eckhardt
* Copyright (C) 1993, 1994, 1995, 1998, 1999 Eric Youngdale
diff --git a/drivers/scsi/scsi_common.c b/drivers/scsi/scsi_common.c
index a75673bb82b3..40bc616cf8ab 100644
--- a/drivers/scsi/scsi_common.c
+++ b/drivers/scsi/scsi_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SCSI functions used by both the initiator and the target code.
*/
diff --git a/drivers/scsi/scsi_debugfs.c b/drivers/scsi/scsi_debugfs.c
index 5e9755008aed..01f08c03f2c1 100644
--- a/drivers/scsi/scsi_debugfs.c
+++ b/drivers/scsi/scsi_debugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/seq_file.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_dbg.h>
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
index 28fea83ae2fe..6bf43d94cdc0 100644
--- a/drivers/scsi/scsi_devinfo.c
+++ b/drivers/scsi/scsi_devinfo.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/blkdev.h>
#include <linux/init.h>
diff --git a/drivers/scsi/scsi_lib_dma.c b/drivers/scsi/scsi_lib_dma.c
index 2ac3f3975f78..5723915275ad 100644
--- a/drivers/scsi/scsi_lib_dma.c
+++ b/drivers/scsi/scsi_lib_dma.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* SCSI library functions depending on DMA
*/
diff --git a/drivers/scsi/scsi_logging.h b/drivers/scsi/scsi_logging.h
index 7fe64a847143..6907c924df72 100644
--- a/drivers/scsi/scsi_logging.h
+++ b/drivers/scsi/scsi_logging.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_LOGGING_H
#define _SCSI_LOGGING_H
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index 5c6d016a5ae9..d7669caa9893 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_PRIV_H
#define _SCSI_PRIV_H
diff --git a/drivers/scsi/scsi_proc.c b/drivers/scsi/scsi_proc.c
index 480a597b3877..7f0ceb65c3f3 100644
--- a/drivers/scsi/scsi_proc.c
+++ b/drivers/scsi/scsi_proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/drivers/scsi/scsi_proc.c
*
diff --git a/drivers/scsi/scsi_sas_internal.h b/drivers/scsi/scsi_sas_internal.h
index e659912498bd..82fd548c5eee 100644
--- a/drivers/scsi/scsi_sas_internal.h
+++ b/drivers/scsi/scsi_sas_internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_SAS_INTERNAL_H
#define _SCSI_SAS_INTERNAL_H
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 15590a063ad9..40124648a07b 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* scsi_scan.c
*
diff --git a/drivers/scsi/scsi_transport_api.h b/drivers/scsi/scsi_transport_api.h
index 934f0e62bb5c..f917766537c0 100644
--- a/drivers/scsi/scsi_transport_api.h
+++ b/drivers/scsi/scsi_transport_api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_TRANSPORT_API_H
#define _SCSI_TRANSPORT_API_H
diff --git a/drivers/scsi/scsicam.c b/drivers/scsi/scsicam.c
index 31273468589c..e969138051c7 100644
--- a/drivers/scsi/scsicam.c
+++ b/drivers/scsi/scsicam.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* scsicam.c - SCSI CAM support functions, use for HDIO_GETGEO, etc.
*
diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h
index 99c4dde9b6bf..320de758323e 100644
--- a/drivers/scsi/sd.h
+++ b/drivers/scsi/sd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_DISK_H
#define _SCSI_DISK_H
diff --git a/drivers/scsi/sense_codes.h b/drivers/scsi/sense_codes.h
index e4e1dccd1f2f..201a536688de 100644
--- a/drivers/scsi/sense_codes.h
+++ b/drivers/scsi/sense_codes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* The canonical list of T10 Additional Sense Codes is available at:
* http://www.t10.org/lists/asc-num.txt [most recent: 20141221]
diff --git a/drivers/scsi/snic/Makefile b/drivers/scsi/snic/Makefile
index ef7c0dd47f40..41546e3cb701 100644
--- a/drivers/scsi/snic/Makefile
+++ b/drivers/scsi/snic/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_SCSI_SNIC) += snic.o
snic-y := \
diff --git a/drivers/scsi/sr.h b/drivers/scsi/sr.h
index 1de33719ad8e..a2bb7b8bace5 100644
--- a/drivers/scsi/sr.h
+++ b/drivers/scsi/sr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* sr.h by David Giller
* CD-ROM disk driver header file
diff --git a/drivers/scsi/sr_ioctl.c b/drivers/scsi/sr_ioctl.c
index 4610c8c5693f..2a21f2d48592 100644
--- a/drivers/scsi/sr_ioctl.c
+++ b/drivers/scsi/sr_ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/fs.h>
diff --git a/drivers/scsi/sr_vendor.c b/drivers/scsi/sr_vendor.c
index 11a238cb2222..e3b0ce25162b 100644
--- a/drivers/scsi/sr_vendor.c
+++ b/drivers/scsi/sr_vendor.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* -*-linux-c-*-
* vendor-specific code for SCSI CD-ROM's goes here.
diff --git a/drivers/scsi/st.h b/drivers/scsi/st.h
index 8c732c8de015..95d2e7a7988d 100644
--- a/drivers/scsi/st.h
+++ b/drivers/scsi/st.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ST_H
#define _ST_H
diff --git a/drivers/scsi/st_options.h b/drivers/scsi/st_options.h
index d2f947935554..2b6cabd7b6aa 100644
--- a/drivers/scsi/st_options.h
+++ b/drivers/scsi/st_options.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
The compile-time configurable defaults for the Linux SCSI tape driver.
diff --git a/drivers/scsi/ufs/Makefile b/drivers/scsi/ufs/Makefile
index 6e77cb0bfee9..9310c6c83041 100644
--- a/drivers/scsi/ufs/Makefile
+++ b/drivers/scsi/ufs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# UFSHCD makefile
obj-$(CONFIG_SCSI_UFS_DWC_TC_PCI) += tc-dwc-g210-pci.o ufshcd-dwc.o tc-dwc-g210.o
obj-$(CONFIG_SCSI_UFS_DWC_TC_PLATFORM) += tc-dwc-g210-pltfrm.o ufshcd-dwc.o tc-dwc-g210.o
diff --git a/drivers/scsi/wd719x.h b/drivers/scsi/wd719x.h
index 9c6dd45f95f5..0455b1633ca7 100644
--- a/drivers/scsi/wd719x.h
+++ b/drivers/scsi/wd719x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _WD719X_H_
#define _WD719X_H_
diff --git a/drivers/sh/Makefile b/drivers/sh/Makefile
index 114203f32843..c53262835e85 100644
--- a/drivers/sh/Makefile
+++ b/drivers/sh/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the SuperH specific drivers.
#
diff --git a/drivers/sh/intc/internals.h b/drivers/sh/intc/internals.h
index 6ce7f0d26dcf..fa73c173b56a 100644
--- a/drivers/sh/intc/internals.h
+++ b/drivers/sh/intc/internals.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/sh_intc.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
index 280a6a91a9e2..36dec140ea0d 100644
--- a/drivers/soc/Makefile
+++ b/drivers/soc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux Kernel SOC specific device drivers.
#
@@ -9,6 +10,7 @@ obj-$(CONFIG_ARCH_DOVE) += dove/
obj-$(CONFIG_MACH_DOVE) += dove/
obj-y += fsl/
obj-$(CONFIG_ARCH_MXC) += imx/
+obj-$(CONFIG_SOC_XWAY) += lantiq/
obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/
obj-$(CONFIG_ARCH_MESON) += amlogic/
obj-$(CONFIG_ARCH_QCOM) += qcom/
diff --git a/drivers/soc/dove/pmu.c b/drivers/soc/dove/pmu.c
index 95d77ec5c5d7..5abb08ffb74d 100644
--- a/drivers/soc/dove/pmu.c
+++ b/drivers/soc/dove/pmu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Marvell Dove PMU support
*/
diff --git a/drivers/soc/fsl/qbman/Makefile b/drivers/soc/fsl/qbman/Makefile
index 7ae199f1664e..363982b83ab5 100644
--- a/drivers/soc/fsl/qbman/Makefile
+++ b/drivers/soc/fsl/qbman/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_FSL_DPAA) += bman_ccsr.o qman_ccsr.o \
bman_portal.o qman_portal.o \
bman.o qman.o
diff --git a/drivers/soc/fsl/qe/Makefile b/drivers/soc/fsl/qe/Makefile
index 2031d385bc7e..55a555304f3a 100644
--- a/drivers/soc/fsl/qe/Makefile
+++ b/drivers/soc/fsl/qe/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux ppc-specific parts of QE
#
diff --git a/drivers/soc/lantiq/Makefile b/drivers/soc/lantiq/Makefile
new file mode 100644
index 000000000000..be9e866d53e5
--- /dev/null
+++ b/drivers/soc/lantiq/Makefile
@@ -0,0 +1,2 @@
+obj-y += fpi-bus.o
+obj-$(CONFIG_XRX200_PHY_FW) += gphy.o
diff --git a/drivers/soc/lantiq/fpi-bus.c b/drivers/soc/lantiq/fpi-bus.c
new file mode 100644
index 000000000000..a671c9984c4c
--- /dev/null
+++ b/drivers/soc/lantiq/fpi-bus.c
@@ -0,0 +1,87 @@
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ *
+ * Copyright (C) 2011-2015 John Crispin <blogic@phrozen.org>
+ * Copyright (C) 2015 Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+ * Copyright (C) 2017 Hauke Mehrtens <hauke@hauke-m.de>
+ */
+
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/property.h>
+#include <linux/regmap.h>
+
+#include <lantiq_soc.h>
+
+#define XBAR_ALWAYS_LAST 0x430
+#define XBAR_FPI_BURST_EN BIT(1)
+#define XBAR_AHB_BURST_EN BIT(2)
+
+#define RCU_VR9_BE_AHB1S 0x00000008
+
+static int ltq_fpi_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct device_node *np = dev->of_node;
+ struct resource *res_xbar;
+ struct regmap *rcu_regmap;
+ void __iomem *xbar_membase;
+ u32 rcu_ahb_endianness_reg_offset;
+ int ret;
+
+ res_xbar = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ xbar_membase = devm_ioremap_resource(dev, res_xbar);
+ if (IS_ERR(xbar_membase))
+ return PTR_ERR(xbar_membase);
+
+ /* RCU configuration is optional */
+ rcu_regmap = syscon_regmap_lookup_by_phandle(np, "lantiq,rcu");
+ if (IS_ERR(rcu_regmap))
+ return PTR_ERR(rcu_regmap);
+
+ ret = device_property_read_u32(dev, "lantiq,offset-endianness",
+ &rcu_ahb_endianness_reg_offset);
+ if (ret) {
+ dev_err(&pdev->dev, "Failed to get RCU reg offset\n");
+ return ret;
+ }
+
+ ret = regmap_update_bits(rcu_regmap, rcu_ahb_endianness_reg_offset,
+ RCU_VR9_BE_AHB1S, RCU_VR9_BE_AHB1S);
+ if (ret) {
+ dev_warn(&pdev->dev,
+ "Failed to configure RCU AHB endianness\n");
+ return ret;
+ }
+
+ /* disable fpi burst */
+ ltq_w32_mask(XBAR_FPI_BURST_EN, 0, xbar_membase + XBAR_ALWAYS_LAST);
+
+ return of_platform_populate(dev->of_node, NULL, NULL, dev);
+}
+
+static const struct of_device_id ltq_fpi_match[] = {
+ { .compatible = "lantiq,xrx200-fpi" },
+ {},
+};
+MODULE_DEVICE_TABLE(of, ltq_fpi_match);
+
+static struct platform_driver ltq_fpi_driver = {
+ .probe = ltq_fpi_probe,
+ .driver = {
+ .name = "fpi-xway",
+ .of_match_table = ltq_fpi_match,
+ },
+};
+
+module_platform_driver(ltq_fpi_driver);
+
+MODULE_DESCRIPTION("Lantiq FPI bus driver");
+MODULE_LICENSE("GPL");
diff --git a/drivers/soc/lantiq/gphy.c b/drivers/soc/lantiq/gphy.c
new file mode 100644
index 000000000000..8d8659463b3e
--- /dev/null
+++ b/drivers/soc/lantiq/gphy.c
@@ -0,0 +1,260 @@
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ *
+ * Copyright (C) 2012 John Crispin <blogic@phrozen.org>
+ * Copyright (C) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+ * Copyright (C) 2017 Hauke Mehrtens <hauke@hauke-m.de>
+ */
+
+#include <linux/clk.h>
+#include <linux/delay.h>
+#include <linux/dma-mapping.h>
+#include <linux/firmware.h>
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/reboot.h>
+#include <linux/regmap.h>
+#include <linux/reset.h>
+#include <linux/of_device.h>
+#include <linux/of_platform.h>
+#include <linux/property.h>
+#include <dt-bindings/mips/lantiq_rcu_gphy.h>
+
+#include <lantiq_soc.h>
+
+#define XRX200_GPHY_FW_ALIGN (16 * 1024)
+
+struct xway_gphy_priv {
+ struct clk *gphy_clk_gate;
+ struct reset_control *gphy_reset;
+ struct reset_control *gphy_reset2;
+ struct notifier_block gphy_reboot_nb;
+ void __iomem *membase;
+ char *fw_name;
+};
+
+struct xway_gphy_match_data {
+ char *fe_firmware_name;
+ char *ge_firmware_name;
+};
+
+static const struct xway_gphy_match_data xrx200a1x_gphy_data = {
+ .fe_firmware_name = "lantiq/xrx200_phy22f_a14.bin",
+ .ge_firmware_name = "lantiq/xrx200_phy11g_a14.bin",
+};
+
+static const struct xway_gphy_match_data xrx200a2x_gphy_data = {
+ .fe_firmware_name = "lantiq/xrx200_phy22f_a22.bin",
+ .ge_firmware_name = "lantiq/xrx200_phy11g_a22.bin",
+};
+
+static const struct xway_gphy_match_data xrx300_gphy_data = {
+ .fe_firmware_name = "lantiq/xrx300_phy22f_a21.bin",
+ .ge_firmware_name = "lantiq/xrx300_phy11g_a21.bin",
+};
+
+static const struct of_device_id xway_gphy_match[] = {
+ { .compatible = "lantiq,xrx200a1x-gphy", .data = &xrx200a1x_gphy_data },
+ { .compatible = "lantiq,xrx200a2x-gphy", .data = &xrx200a2x_gphy_data },
+ { .compatible = "lantiq,xrx300-gphy", .data = &xrx300_gphy_data },
+ { .compatible = "lantiq,xrx330-gphy", .data = &xrx300_gphy_data },
+ {},
+};
+MODULE_DEVICE_TABLE(of, xway_gphy_match);
+
+static struct xway_gphy_priv *to_xway_gphy_priv(struct notifier_block *nb)
+{
+ return container_of(nb, struct xway_gphy_priv, gphy_reboot_nb);
+}
+
+static int xway_gphy_reboot_notify(struct notifier_block *reboot_nb,
+ unsigned long code, void *unused)
+{
+ struct xway_gphy_priv *priv = to_xway_gphy_priv(reboot_nb);
+
+ if (priv) {
+ reset_control_assert(priv->gphy_reset);
+ reset_control_assert(priv->gphy_reset2);
+ }
+
+ return NOTIFY_DONE;
+}
+
+static int xway_gphy_load(struct device *dev, struct xway_gphy_priv *priv,
+ dma_addr_t *dev_addr)
+{
+ const struct firmware *fw;
+ void *fw_addr;
+ dma_addr_t dma_addr;
+ size_t size;
+ int ret;
+
+ ret = request_firmware(&fw, priv->fw_name, dev);
+ if (ret) {
+ dev_err(dev, "failed to load firmware: %s, error: %i\n",
+ priv->fw_name, ret);
+ return ret;
+ }
+
+ /*
+ * GPHY cores need the firmware code in a persistent and contiguous
+ * memory area with a 16 kB boundary aligned start address.
+ */
+ size = fw->size + XRX200_GPHY_FW_ALIGN;
+
+ fw_addr = dmam_alloc_coherent(dev, size, &dma_addr, GFP_KERNEL);
+ if (fw_addr) {
+ fw_addr = PTR_ALIGN(fw_addr, XRX200_GPHY_FW_ALIGN);
+ *dev_addr = ALIGN(dma_addr, XRX200_GPHY_FW_ALIGN);
+ memcpy(fw_addr, fw->data, fw->size);
+ } else {
+ dev_err(dev, "failed to alloc firmware memory\n");
+ ret = -ENOMEM;
+ }
+
+ release_firmware(fw);
+
+ return ret;
+}
+
+static int xway_gphy_of_probe(struct platform_device *pdev,
+ struct xway_gphy_priv *priv)
+{
+ struct device *dev = &pdev->dev;
+ const struct xway_gphy_match_data *gphy_fw_name_cfg;
+ u32 gphy_mode;
+ int ret;
+ struct resource *res_gphy;
+
+ gphy_fw_name_cfg = of_device_get_match_data(dev);
+
+ priv->gphy_clk_gate = devm_clk_get(dev, NULL);
+ if (IS_ERR(priv->gphy_clk_gate)) {
+ dev_err(dev, "Failed to lookup gate clock\n");
+ return PTR_ERR(priv->gphy_clk_gate);
+ }
+
+ res_gphy = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ priv->membase = devm_ioremap_resource(dev, res_gphy);
+ if (IS_ERR(priv->membase))
+ return PTR_ERR(priv->membase);
+
+ priv->gphy_reset = devm_reset_control_get(dev, "gphy");
+ if (IS_ERR(priv->gphy_reset)) {
+ if (PTR_ERR(priv->gphy_reset) != -EPROBE_DEFER)
+ dev_err(dev, "Failed to lookup gphy reset\n");
+ return PTR_ERR(priv->gphy_reset);
+ }
+
+ priv->gphy_reset2 = devm_reset_control_get_optional(dev, "gphy2");
+ if (IS_ERR(priv->gphy_reset2))
+ return PTR_ERR(priv->gphy_reset2);
+
+ ret = device_property_read_u32(dev, "lantiq,gphy-mode", &gphy_mode);
+ /* Default to GE mode */
+ if (ret)
+ gphy_mode = GPHY_MODE_GE;
+
+ switch (gphy_mode) {
+ case GPHY_MODE_FE:
+ priv->fw_name = gphy_fw_name_cfg->fe_firmware_name;
+ break;
+ case GPHY_MODE_GE:
+ priv->fw_name = gphy_fw_name_cfg->ge_firmware_name;
+ break;
+ default:
+ dev_err(dev, "Unknown GPHY mode %d\n", gphy_mode);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static int xway_gphy_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct xway_gphy_priv *priv;
+ dma_addr_t fw_addr = 0;
+ int ret;
+
+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+ if (!priv)
+ return -ENOMEM;
+
+ ret = xway_gphy_of_probe(pdev, priv);
+ if (ret)
+ return ret;
+
+ ret = clk_prepare_enable(priv->gphy_clk_gate);
+ if (ret)
+ return ret;
+
+ ret = xway_gphy_load(dev, priv, &fw_addr);
+ if (ret) {
+ clk_disable_unprepare(priv->gphy_clk_gate);
+ return ret;
+ }
+
+ reset_control_assert(priv->gphy_reset);
+ reset_control_assert(priv->gphy_reset2);
+
+ iowrite32be(fw_addr, priv->membase);
+
+ reset_control_deassert(priv->gphy_reset);
+ reset_control_deassert(priv->gphy_reset2);
+
+ /* assert the gphy reset because it can hang after a reboot: */
+ priv->gphy_reboot_nb.notifier_call = xway_gphy_reboot_notify;
+ priv->gphy_reboot_nb.priority = -1;
+
+ ret = register_reboot_notifier(&priv->gphy_reboot_nb);
+ if (ret)
+ dev_warn(dev, "Failed to register reboot notifier\n");
+
+ platform_set_drvdata(pdev, priv);
+
+ return ret;
+}
+
+static int xway_gphy_remove(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct xway_gphy_priv *priv = platform_get_drvdata(pdev);
+ int ret;
+
+ reset_control_assert(priv->gphy_reset);
+ reset_control_assert(priv->gphy_reset2);
+
+ iowrite32be(0, priv->membase);
+
+ clk_disable_unprepare(priv->gphy_clk_gate);
+
+ ret = unregister_reboot_notifier(&priv->gphy_reboot_nb);
+ if (ret)
+ dev_warn(dev, "Failed to unregister reboot notifier\n");
+
+ return 0;
+}
+
+static struct platform_driver xway_gphy_driver = {
+ .probe = xway_gphy_probe,
+ .remove = xway_gphy_remove,
+ .driver = {
+ .name = "xway-rcu-gphy",
+ .of_match_table = xway_gphy_match,
+ },
+};
+
+module_platform_driver(xway_gphy_driver);
+
+MODULE_FIRMWARE("lantiq/xrx300_phy11g_a21.bin");
+MODULE_FIRMWARE("lantiq/xrx300_phy22f_a21.bin");
+MODULE_FIRMWARE("lantiq/xrx200_phy11g_a14.bin");
+MODULE_FIRMWARE("lantiq/xrx200_phy11g_a22.bin");
+MODULE_FIRMWARE("lantiq/xrx200_phy22f_a14.bin");
+MODULE_FIRMWARE("lantiq/xrx200_phy22f_a22.bin");
+MODULE_AUTHOR("Martin Blumenstingl <martin.blumenstingl@googlemail.com>");
+MODULE_DESCRIPTION("Lantiq XWAY GPHY Firmware Loader");
+MODULE_LICENSE("GPL");
diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile
index f151de41eb93..fab44666b214 100644
--- a/drivers/soc/qcom/Makefile
+++ b/drivers/soc/qcom/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_QCOM_GLINK_SSR) += glink_ssr.o
obj-$(CONFIG_QCOM_GSBI) += qcom_gsbi.o
obj-$(CONFIG_QCOM_MDT_LOADER) += mdt_loader.o
diff --git a/drivers/soc/renesas/Makefile b/drivers/soc/renesas/Makefile
index 6b6e7f16104c..763c03d80436 100644
--- a/drivers/soc/renesas/Makefile
+++ b/drivers/soc/renesas/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Generic, must be first because of soc_device_register()
obj-$(CONFIG_SOC_RENESAS) += renesas-soc.o
diff --git a/drivers/soc/tegra/Makefile b/drivers/soc/tegra/Makefile
index 0e52b45721ac..482e108d28aa 100644
--- a/drivers/soc/tegra/Makefile
+++ b/drivers/soc/tegra/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += fuse/
obj-y += common.o
diff --git a/drivers/soc/tegra/fuse/Makefile b/drivers/soc/tegra/fuse/Makefile
index 21bc27580178..ea8332cc3980 100644
--- a/drivers/soc/tegra/fuse/Makefile
+++ b/drivers/soc/tegra/fuse/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += fuse-tegra.o
obj-y += fuse-tegra30.o
obj-y += tegra-apbmisc.o
diff --git a/drivers/soc/ti/Makefile b/drivers/soc/ti/Makefile
index 7d572736c86e..8e205287f120 100644
--- a/drivers/soc/ti/Makefile
+++ b/drivers/soc/ti/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# TI Keystone SOC drivers
#
diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
index a3ae2b70cdc3..8e0cda73b324 100644
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for kernel SPI drivers.
#
diff --git a/drivers/spi/spi-armada-3700.c b/drivers/spi/spi-armada-3700.c
index 6c7d7a460689..568e1c65aa82 100644
--- a/drivers/spi/spi-armada-3700.c
+++ b/drivers/spi/spi-armada-3700.c
@@ -99,11 +99,6 @@
/* A3700_SPI_IF_TIME_REG */
#define A3700_SPI_CLK_CAPT_EDGE BIT(7)
-/* Flags and macros for struct a3700_spi */
-#define A3700_INSTR_CNT 1
-#define A3700_ADDR_CNT 3
-#define A3700_DUMMY_CNT 1
-
struct a3700_spi {
struct spi_master *master;
void __iomem *base;
@@ -117,9 +112,6 @@ struct a3700_spi {
u8 byte_len;
u32 wait_mask;
struct completion done;
- u32 addr_cnt;
- u32 instr_cnt;
- size_t hdr_cnt;
};
static u32 spireg_read(struct a3700_spi *a3700_spi, u32 offset)
@@ -161,7 +153,7 @@ static void a3700_spi_deactivate_cs(struct a3700_spi *a3700_spi,
}
static int a3700_spi_pin_mode_set(struct a3700_spi *a3700_spi,
- unsigned int pin_mode)
+ unsigned int pin_mode, bool receiving)
{
u32 val;
@@ -177,6 +169,9 @@ static int a3700_spi_pin_mode_set(struct a3700_spi *a3700_spi,
break;
case SPI_NBITS_QUAD:
val |= A3700_SPI_DATA_PIN1;
+ /* RX during address reception uses 4-pin */
+ if (receiving)
+ val |= A3700_SPI_ADDR_PIN;
break;
default:
dev_err(&a3700_spi->master->dev, "wrong pin mode %u", pin_mode);
@@ -392,7 +387,8 @@ static bool a3700_spi_wait_completion(struct spi_device *spi)
spireg_write(a3700_spi, A3700_SPI_INT_MASK_REG, 0);
- return true;
+ /* Timeout was reached */
+ return false;
}
static bool a3700_spi_transfer_wait(struct spi_device *spi,
@@ -446,59 +442,43 @@ static void a3700_spi_set_cs(struct spi_device *spi, bool enable)
static void a3700_spi_header_set(struct a3700_spi *a3700_spi)
{
- u32 instr_cnt = 0, addr_cnt = 0, dummy_cnt = 0;
+ unsigned int addr_cnt;
u32 val = 0;
/* Clear the header registers */
spireg_write(a3700_spi, A3700_SPI_IF_INST_REG, 0);
spireg_write(a3700_spi, A3700_SPI_IF_ADDR_REG, 0);
spireg_write(a3700_spi, A3700_SPI_IF_RMODE_REG, 0);
+ spireg_write(a3700_spi, A3700_SPI_IF_HDR_CNT_REG, 0);
/* Set header counters */
if (a3700_spi->tx_buf) {
- if (a3700_spi->buf_len <= a3700_spi->instr_cnt) {
- instr_cnt = a3700_spi->buf_len;
- } else if (a3700_spi->buf_len <= (a3700_spi->instr_cnt +
- a3700_spi->addr_cnt)) {
- instr_cnt = a3700_spi->instr_cnt;
- addr_cnt = a3700_spi->buf_len - instr_cnt;
- } else if (a3700_spi->buf_len <= a3700_spi->hdr_cnt) {
- instr_cnt = a3700_spi->instr_cnt;
- addr_cnt = a3700_spi->addr_cnt;
- /* Need to handle the normal write case with 1 byte
- * data
- */
- if (!a3700_spi->tx_buf[instr_cnt + addr_cnt])
- dummy_cnt = a3700_spi->buf_len - instr_cnt -
- addr_cnt;
+ /*
+ * when tx data is not 4 bytes aligned, there will be unexpected
+ * bytes out of SPI output register, since it always shifts out
+ * as whole 4 bytes. This might cause incorrect transaction with
+ * some devices. To avoid that, use SPI header count feature to
+ * transfer up to 3 bytes of data first, and then make the rest
+ * of data 4-byte aligned.
+ */
+ addr_cnt = a3700_spi->buf_len % 4;
+ if (addr_cnt) {
+ val = (addr_cnt & A3700_SPI_ADDR_CNT_MASK)
+ << A3700_SPI_ADDR_CNT_BIT;
+ spireg_write(a3700_spi, A3700_SPI_IF_HDR_CNT_REG, val);
+
+ /* Update the buffer length to be transferred */
+ a3700_spi->buf_len -= addr_cnt;
+
+ /* transfer 1~3 bytes through address count */
+ val = 0;
+ while (addr_cnt--) {
+ val = (val << 8) | a3700_spi->tx_buf[0];
+ a3700_spi->tx_buf++;
+ }
+ spireg_write(a3700_spi, A3700_SPI_IF_ADDR_REG, val);
}
- val |= ((instr_cnt & A3700_SPI_INSTR_CNT_MASK)
- << A3700_SPI_INSTR_CNT_BIT);
- val |= ((addr_cnt & A3700_SPI_ADDR_CNT_MASK)
- << A3700_SPI_ADDR_CNT_BIT);
- val |= ((dummy_cnt & A3700_SPI_DUMMY_CNT_MASK)
- << A3700_SPI_DUMMY_CNT_BIT);
}
- spireg_write(a3700_spi, A3700_SPI_IF_HDR_CNT_REG, val);
-
- /* Update the buffer length to be transferred */
- a3700_spi->buf_len -= (instr_cnt + addr_cnt + dummy_cnt);
-
- /* Set Instruction */
- val = 0;
- while (instr_cnt--) {
- val = (val << 8) | a3700_spi->tx_buf[0];
- a3700_spi->tx_buf++;
- }
- spireg_write(a3700_spi, A3700_SPI_IF_INST_REG, val);
-
- /* Set Address */
- val = 0;
- while (addr_cnt--) {
- val = (val << 8) | a3700_spi->tx_buf[0];
- a3700_spi->tx_buf++;
- }
- spireg_write(a3700_spi, A3700_SPI_IF_ADDR_REG, val);
}
static int a3700_is_wfifo_full(struct a3700_spi *a3700_spi)
@@ -512,35 +492,12 @@ static int a3700_is_wfifo_full(struct a3700_spi *a3700_spi)
static int a3700_spi_fifo_write(struct a3700_spi *a3700_spi)
{
u32 val;
- int i = 0;
while (!a3700_is_wfifo_full(a3700_spi) && a3700_spi->buf_len) {
- val = 0;
- if (a3700_spi->buf_len >= 4) {
- val = cpu_to_le32(*(u32 *)a3700_spi->tx_buf);
- spireg_write(a3700_spi, A3700_SPI_DATA_OUT_REG, val);
-
- a3700_spi->buf_len -= 4;
- a3700_spi->tx_buf += 4;
- } else {
- /*
- * If the remained buffer length is less than 4-bytes,
- * we should pad the write buffer with all ones. So that
- * it avoids overwrite the unexpected bytes following
- * the last one.
- */
- val = GENMASK(31, 0);
- while (a3700_spi->buf_len) {
- val &= ~(0xff << (8 * i));
- val |= *a3700_spi->tx_buf++ << (8 * i);
- i++;
- a3700_spi->buf_len--;
-
- spireg_write(a3700_spi, A3700_SPI_DATA_OUT_REG,
- val);
- }
- break;
- }
+ val = cpu_to_le32(*(u32 *)a3700_spi->tx_buf);
+ spireg_write(a3700_spi, A3700_SPI_DATA_OUT_REG, val);
+ a3700_spi->buf_len -= 4;
+ a3700_spi->tx_buf += 4;
}
return 0;
@@ -645,15 +602,18 @@ static int a3700_spi_transfer_one(struct spi_master *master,
a3700_spi->rx_buf = xfer->rx_buf;
a3700_spi->buf_len = xfer->len;
- /* SPI transfer headers */
- a3700_spi_header_set(a3700_spi);
-
if (xfer->tx_buf)
nbits = xfer->tx_nbits;
else if (xfer->rx_buf)
nbits = xfer->rx_nbits;
- a3700_spi_pin_mode_set(a3700_spi, nbits);
+ a3700_spi_pin_mode_set(a3700_spi, nbits, xfer->rx_buf ? true : false);
+
+ /* Flush the FIFOs */
+ a3700_spi_fifo_flush(a3700_spi);
+
+ /* Transfer first bytes of data when buffer is not 4-byte aligned */
+ a3700_spi_header_set(a3700_spi);
if (xfer->rx_buf) {
/* Set read data length */
@@ -733,16 +693,11 @@ static int a3700_spi_transfer_one(struct spi_master *master,
dev_err(&spi->dev, "wait wfifo empty timed out\n");
return -ETIMEDOUT;
}
- } else {
- /*
- * If the instruction in SPI_INSTR does not require data
- * to be written to the SPI device, wait until SPI_RDY
- * is 1 for the SPI interface to be in idle.
- */
- if (!a3700_spi_transfer_wait(spi, A3700_SPI_XFER_RDY)) {
- dev_err(&spi->dev, "wait xfer ready timed out\n");
- return -ETIMEDOUT;
- }
+ }
+
+ if (!a3700_spi_transfer_wait(spi, A3700_SPI_XFER_RDY)) {
+ dev_err(&spi->dev, "wait xfer ready timed out\n");
+ return -ETIMEDOUT;
}
val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
@@ -834,10 +789,6 @@ static int a3700_spi_probe(struct platform_device *pdev)
memset(spi, 0, sizeof(struct a3700_spi));
spi->master = master;
- spi->instr_cnt = A3700_INSTR_CNT;
- spi->addr_cnt = A3700_ADDR_CNT;
- spi->hdr_cnt = A3700_INSTR_CNT + A3700_ADDR_CNT +
- A3700_DUMMY_CNT;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
spi->base = devm_ioremap_resource(dev, res);
diff --git a/drivers/spi/spi-bcm-qspi.c b/drivers/spi/spi-bcm-qspi.c
index 6ef6c44f39f5..a172ab299e80 100644
--- a/drivers/spi/spi-bcm-qspi.c
+++ b/drivers/spi/spi-bcm-qspi.c
@@ -1250,7 +1250,7 @@ int bcm_qspi_probe(struct platform_device *pdev,
goto qspi_probe_err;
}
} else {
- goto qspi_probe_err;
+ goto qspi_resource_err;
}
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "bspi");
@@ -1272,7 +1272,7 @@ int bcm_qspi_probe(struct platform_device *pdev,
qspi->base[CHIP_SELECT] = devm_ioremap_resource(dev, res);
if (IS_ERR(qspi->base[CHIP_SELECT])) {
ret = PTR_ERR(qspi->base[CHIP_SELECT]);
- goto qspi_probe_err;
+ goto qspi_resource_err;
}
}
@@ -1280,7 +1280,7 @@ int bcm_qspi_probe(struct platform_device *pdev,
GFP_KERNEL);
if (!qspi->dev_ids) {
ret = -ENOMEM;
- goto qspi_probe_err;
+ goto qspi_resource_err;
}
for (val = 0; val < num_irqs; val++) {
@@ -1369,8 +1369,9 @@ qspi_reg_err:
bcm_qspi_hw_uninit(qspi);
clk_disable_unprepare(qspi->clk);
qspi_probe_err:
- spi_master_put(master);
kfree(qspi->dev_ids);
+qspi_resource_err:
+ spi_master_put(master);
return ret;
}
/* probe function to be called by SoC specific platform driver probe */
diff --git a/drivers/spi/spi-bcm53xx.h b/drivers/spi/spi-bcm53xx.h
index 73575dfe6916..03e3442086ec 100644
--- a/drivers/spi/spi-bcm53xx.h
+++ b/drivers/spi/spi-bcm53xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SPI_BCM53XX_H
#define SPI_BCM53XX_H
diff --git a/drivers/spi/spi-bitbang-txrx.h b/drivers/spi/spi-bitbang-txrx.h
index 47bb9b898dfd..ae61d72c7d28 100644
--- a/drivers/spi/spi-bitbang-txrx.h
+++ b/drivers/spi/spi-bitbang-txrx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Mix this utility code with some glue code to get one of several types of
* simple SPI master driver. Two do polled word-at-a-time I/O:
diff --git a/drivers/spi/spi-cavium.h b/drivers/spi/spi-cavium.h
index 1f91d61b745b..1f3ac463a20b 100644
--- a/drivers/spi/spi-cavium.h
+++ b/drivers/spi/spi-cavium.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPI_CAVIUM_H
#define __SPI_CAVIUM_H
diff --git a/drivers/spi/spi-dw.h b/drivers/spi/spi-dw.h
index da5eab62df34..5c07cf8f19e0 100644
--- a/drivers/spi/spi-dw.h
+++ b/drivers/spi/spi-dw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DW_SPI_HEADER_H
#define DW_SPI_HEADER_H
diff --git a/drivers/spi/spi-stm32.c b/drivers/spi/spi-stm32.c
index 680cdf549506..ba9743fa2326 100644
--- a/drivers/spi/spi-stm32.c
+++ b/drivers/spi/spi-stm32.c
@@ -263,8 +263,8 @@ static int stm32_spi_prepare_mbr(struct stm32_spi *spi, u32 speed_hz)
* no need to check it there.
* However, we need to ensure the following calculations.
*/
- if ((div < SPI_MBR_DIV_MIN) &&
- (div > SPI_MBR_DIV_MAX))
+ if (div < SPI_MBR_DIV_MIN ||
+ div > SPI_MBR_DIV_MAX)
return -EINVAL;
/* Determine the first power of 2 greater than or equal to div */
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 6e65524cbfd9..e8b5a5e21b2e 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -45,7 +45,6 @@
#define CREATE_TRACE_POINTS
#include <trace/events/spi.h>
-#define SPI_DYN_FIRST_BUS_NUM 0
static DEFINE_IDR(spi_master_idr);
@@ -2086,7 +2085,7 @@ int spi_register_controller(struct spi_controller *ctlr)
struct device *dev = ctlr->dev.parent;
struct boardinfo *bi;
int status = -ENODEV;
- int id;
+ int id, first_dynamic;
if (!dev)
return -ENODEV;
@@ -2116,9 +2115,15 @@ int spi_register_controller(struct spi_controller *ctlr)
}
}
if (ctlr->bus_num < 0) {
+ first_dynamic = of_alias_get_highest_id("spi");
+ if (first_dynamic < 0)
+ first_dynamic = 0;
+ else
+ first_dynamic++;
+
mutex_lock(&board_lock);
- id = idr_alloc(&spi_master_idr, ctlr, SPI_DYN_FIRST_BUS_NUM, 0,
- GFP_KERNEL);
+ id = idr_alloc(&spi_master_idr, ctlr, first_dynamic,
+ 0, GFP_KERNEL);
mutex_unlock(&board_lock);
if (WARN(id < 0, "couldn't get idr"))
return id;
diff --git a/drivers/ssb/Makefile b/drivers/ssb/Makefile
index 64a09681cee0..142d33df040f 100644
--- a/drivers/ssb/Makefile
+++ b/drivers/ssb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# core
ssb-y += main.o scan.o
ssb-$(CONFIG_SSB_EMBEDDED) += embedded.o
diff --git a/drivers/ssb/ssb_private.h b/drivers/ssb/ssb_private.h
index c2f5d3969c8b..ef9ac8efcab4 100644
--- a/drivers/ssb/ssb_private.h
+++ b/drivers/ssb/ssb_private.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SSB_PRIVATE_H_
#define LINUX_SSB_PRIVATE_H_
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 8951c37d8d80..6e536020029a 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for staging directory
obj-y += media/
diff --git a/drivers/staging/android/ashmem.c b/drivers/staging/android/ashmem.c
index 6ba270e0494d..0f695df14c9d 100644
--- a/drivers/staging/android/ashmem.c
+++ b/drivers/staging/android/ashmem.c
@@ -294,19 +294,9 @@ static int ashmem_release(struct inode *ignored, struct file *file)
return 0;
}
-/**
- * ashmem_read() - Reads a set of bytes from an Ashmem-enabled file
- * @file: The associated backing file.
- * @buf: The buffer of data being written to
- * @len: The number of bytes being read
- * @pos: The position of the first byte to read.
- *
- * Return: 0 if successful, or another return code if not.
- */
-static ssize_t ashmem_read(struct file *file, char __user *buf,
- size_t len, loff_t *pos)
+static ssize_t ashmem_read_iter(struct kiocb *iocb, struct iov_iter *iter)
{
- struct ashmem_area *asma = file->private_data;
+ struct ashmem_area *asma = iocb->ki_filp->private_data;
int ret = 0;
mutex_lock(&ashmem_mutex);
@@ -320,20 +310,17 @@ static ssize_t ashmem_read(struct file *file, char __user *buf,
goto out_unlock;
}
- mutex_unlock(&ashmem_mutex);
-
/*
* asma and asma->file are used outside the lock here. We assume
* once asma->file is set it will never be changed, and will not
* be destroyed until all references to the file are dropped and
* ashmem_release is called.
*/
- ret = __vfs_read(asma->file, buf, len, pos);
- if (ret >= 0)
- /** Update backing file pos, since f_ops->read() doesn't */
- asma->file->f_pos = *pos;
- return ret;
-
+ mutex_unlock(&ashmem_mutex);
+ ret = vfs_iter_read(asma->file, iter, &iocb->ki_pos, 0);
+ mutex_lock(&ashmem_mutex);
+ if (ret > 0)
+ asma->file->f_pos = iocb->ki_pos;
out_unlock:
mutex_unlock(&ashmem_mutex);
return ret;
@@ -834,7 +821,7 @@ static const struct file_operations ashmem_fops = {
.owner = THIS_MODULE,
.open = ashmem_open,
.release = ashmem_release,
- .read = ashmem_read,
+ .read_iter = ashmem_read_iter,
.llseek = ashmem_llseek,
.mmap = ashmem_mmap,
.unlocked_ioctl = ashmem_ioctl,
diff --git a/drivers/staging/android/ion/Makefile b/drivers/staging/android/ion/Makefile
index eb7eeed6ae40..bb30bf8774a0 100644
--- a/drivers/staging/android/ion/Makefile
+++ b/drivers/staging/android/ion/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_ION) += ion.o ion-ioctl.o ion_heap.o
obj-$(CONFIG_ION_SYSTEM_HEAP) += ion_system_heap.o ion_page_pool.o
obj-$(CONFIG_ION_CARVEOUT_HEAP) += ion_carveout_heap.o
diff --git a/drivers/staging/board/board.h b/drivers/staging/board/board.h
index 42ed12513220..5609daf4d869 100644
--- a/drivers/staging/board/board.h
+++ b/drivers/staging/board/board.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BOARD_H__
#define __BOARD_H__
diff --git a/drivers/staging/board/kzm9d.c b/drivers/staging/board/kzm9d.c
index 05a6d434d307..d449a837414e 100644
--- a/drivers/staging/board/kzm9d.c
+++ b/drivers/staging/board/kzm9d.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Staging board support for KZM9D. Enable not-yet-DT-capable devices here. */
#include <linux/kernel.h>
diff --git a/drivers/staging/comedi/Makefile b/drivers/staging/comedi/Makefile
index 7f9dfb3923ab..6af5da3b4315 100644
--- a/drivers/staging/comedi/Makefile
+++ b/drivers/staging/comedi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_COMEDI_DEBUG) := -DDEBUG
comedi-y := comedi_fops.o range.o drivers.o \
diff --git a/drivers/staging/comedi/comedi_internal.h b/drivers/staging/comedi/comedi_internal.h
index 6246f4a78ca6..515f293a5d26 100644
--- a/drivers/staging/comedi/comedi_internal.h
+++ b/drivers/staging/comedi/comedi_internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _COMEDI_INTERNAL_H
#define _COMEDI_INTERNAL_H
diff --git a/drivers/staging/comedi/drivers/Makefile b/drivers/staging/comedi/drivers/Makefile
index 0c8cfa738727..736e7e55219d 100644
--- a/drivers/staging/comedi/drivers/Makefile
+++ b/drivers/staging/comedi/drivers/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for individual comedi drivers
#
ccflags-$(CONFIG_COMEDI_DEBUG) := -DDEBUG
diff --git a/drivers/staging/comedi/drivers/addi_tcw.h b/drivers/staging/comedi/drivers/addi_tcw.h
index db6d5a4e8889..2b44d3a04484 100644
--- a/drivers/staging/comedi/drivers/addi_tcw.h
+++ b/drivers/staging/comedi/drivers/addi_tcw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ADDI_TCW_H
#define _ADDI_TCW_H
diff --git a/drivers/staging/comedi/drivers/addi_watchdog.h b/drivers/staging/comedi/drivers/addi_watchdog.h
index b049cfba9813..7523084a0742 100644
--- a/drivers/staging/comedi/drivers/addi_watchdog.h
+++ b/drivers/staging/comedi/drivers/addi_watchdog.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ADDI_WATCHDOG_H
#define _ADDI_WATCHDOG_H
diff --git a/drivers/staging/comedi/drivers/amcc_s5933.h b/drivers/staging/comedi/drivers/amcc_s5933.h
index f03e4c8c2021..f738b91b2052 100644
--- a/drivers/staging/comedi/drivers/amcc_s5933.h
+++ b/drivers/staging/comedi/drivers/amcc_s5933.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Stuff for AMCC S5933 PCI Controller
*
diff --git a/drivers/staging/comedi/drivers/jr3_pci.h b/drivers/staging/comedi/drivers/jr3_pci.h
index 28ff0c2aa3b8..acd4e5456ceb 100644
--- a/drivers/staging/comedi/drivers/jr3_pci.h
+++ b/drivers/staging/comedi/drivers/jr3_pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Helper types to take care of the fact that the DSP card memory
* is 16 bits, but aligned on a 32 bit PCI boundary
diff --git a/drivers/staging/comedi/drivers/ni_labpc_isadma.h b/drivers/staging/comedi/drivers/ni_labpc_isadma.h
index e93f79050e60..f06f9353cb6c 100644
--- a/drivers/staging/comedi/drivers/ni_labpc_isadma.h
+++ b/drivers/staging/comedi/drivers/ni_labpc_isadma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ni_labpc ISA DMA support.
*/
diff --git a/drivers/staging/comedi/drivers/ni_labpc_regs.h b/drivers/staging/comedi/drivers/ni_labpc_regs.h
index 6003e9d5fe37..ace40065a25b 100644
--- a/drivers/staging/comedi/drivers/ni_labpc_regs.h
+++ b/drivers/staging/comedi/drivers/ni_labpc_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ni_labpc register definitions.
*/
diff --git a/drivers/staging/comedi/drivers/serial2002.c b/drivers/staging/comedi/drivers/serial2002.c
index 0d33e520f635..cc18e25103ca 100644
--- a/drivers/staging/comedi/drivers/serial2002.c
+++ b/drivers/staging/comedi/drivers/serial2002.c
@@ -106,16 +106,8 @@ static long serial2002_tty_ioctl(struct file *f, unsigned int op,
static int serial2002_tty_write(struct file *f, unsigned char *buf, int count)
{
- const char __user *p = (__force const char __user *)buf;
- int result;
- loff_t offset = 0;
- mm_segment_t oldfs;
-
- oldfs = get_fs();
- set_fs(KERNEL_DS);
- result = __vfs_write(f, p, count, &offset);
- set_fs(oldfs);
- return result;
+ loff_t pos = 0;
+ return kernel_write(f, buf, count, &pos);
}
static void serial2002_tty_read_poll_wait(struct file *f, int timeout)
@@ -148,19 +140,14 @@ static int serial2002_tty_read(struct file *f, int timeout)
{
unsigned char ch;
int result;
+ loff_t pos = 0;
result = -1;
if (!IS_ERR(f)) {
- mm_segment_t oldfs;
- char __user *p = (__force char __user *)&ch;
- loff_t offset = 0;
-
- oldfs = get_fs();
- set_fs(KERNEL_DS);
if (f->f_op->poll) {
serial2002_tty_read_poll_wait(f, timeout);
- if (__vfs_read(f, p, 1, &offset) == 1)
+ if (kernel_read(f, &ch, 1, &pos) == 1)
result = ch;
} else {
/* Device does not support poll, busy wait */
@@ -171,14 +158,13 @@ static int serial2002_tty_read(struct file *f, int timeout)
if (retries >= timeout)
break;
- if (__vfs_read(f, p, 1, &offset) == 1) {
+ if (kernel_read(f, &ch, 1, &pos) == 1) {
result = ch;
break;
}
usleep_range(100, 1000);
}
}
- set_fs(oldfs);
}
return result;
}
diff --git a/drivers/staging/comedi/drivers/z8536.h b/drivers/staging/comedi/drivers/z8536.h
index 47eadbf4dcc0..3ef5f9e79b89 100644
--- a/drivers/staging/comedi/drivers/z8536.h
+++ b/drivers/staging/comedi/drivers/z8536.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Z8536 CIO Internal registers
*/
diff --git a/drivers/staging/dgnc/dgnc_utils.c b/drivers/staging/dgnc/dgnc_utils.c
index e07ff8d2f972..620f5741a1ed 100644
--- a/drivers/staging/dgnc/dgnc_utils.c
+++ b/drivers/staging/dgnc/dgnc_utils.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/tty.h>
#include <linux/sched/signal.h>
#include "dgnc_utils.h"
diff --git a/drivers/staging/dgnc/dgnc_utils.h b/drivers/staging/dgnc/dgnc_utils.h
index d1f07a5735c6..b30527f0889d 100644
--- a/drivers/staging/dgnc/dgnc_utils.h
+++ b/drivers/staging/dgnc/dgnc_utils.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DGNC_UTILS_H
#define _DGNC_UTILS_H
diff --git a/drivers/staging/fbtft/Makefile b/drivers/staging/fbtft/Makefile
index 05ae9fbf906e..6bc03311c9c7 100644
--- a/drivers/staging/fbtft/Makefile
+++ b/drivers/staging/fbtft/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Core module
obj-$(CONFIG_FB_TFT) += fbtft.o
fbtft-y += fbtft-core.o fbtft-sysfs.o fbtft-bus.o fbtft-io.o
diff --git a/drivers/staging/fbtft/fbtft-bus.c b/drivers/staging/fbtft/fbtft-bus.c
index a80b5d115ff8..2a8eef15c439 100644
--- a/drivers/staging/fbtft/fbtft-bus.c
+++ b/drivers/staging/fbtft/fbtft-bus.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/errno.h>
#include <linux/gpio.h>
diff --git a/drivers/staging/fbtft/fbtft-io.c b/drivers/staging/fbtft/fbtft-io.c
index ffb9a3b4d454..f4a591919f62 100644
--- a/drivers/staging/fbtft/fbtft-io.c
+++ b/drivers/staging/fbtft/fbtft-io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/errno.h>
#include <linux/gpio.h>
diff --git a/drivers/staging/fbtft/fbtft-sysfs.c b/drivers/staging/fbtft/fbtft-sysfs.c
index 5bfd67b526b5..712096659aa0 100644
--- a/drivers/staging/fbtft/fbtft-sysfs.c
+++ b/drivers/staging/fbtft/fbtft-sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "fbtft.h"
#include "internal.h"
diff --git a/drivers/staging/fwserial/fwserial.h b/drivers/staging/fwserial/fwserial.h
index 30b2481fe32b..1d15f183e0fa 100644
--- a/drivers/staging/fwserial/fwserial.h
+++ b/drivers/staging/fwserial/fwserial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FIREWIRE_FWSERIAL_H
#define _FIREWIRE_FWSERIAL_H
diff --git a/drivers/staging/gdm724x/Makefile b/drivers/staging/gdm724x/Makefile
index ba7f11a6a097..e61b95788c9f 100644
--- a/drivers/staging/gdm724x/Makefile
+++ b/drivers/staging/gdm724x/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_LTE_GDM724X) := gdmulte.o
gdmulte-y += gdm_lte.o netlink_k.o
gdmulte-y += gdm_usb.o gdm_endian.o
diff --git a/drivers/staging/greybus/Makefile b/drivers/staging/greybus/Makefile
index 23e1cb7bff8e..2551ed16b742 100644
--- a/drivers/staging/greybus/Makefile
+++ b/drivers/staging/greybus/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Greybus core
greybus-y := core.o \
debugfs.o \
diff --git a/drivers/staging/greybus/greybus_id.h b/drivers/staging/greybus/greybus_id.h
index 4bb1fc1b811d..f4c8440093e4 100644
--- a/drivers/staging/greybus/greybus_id.h
+++ b/drivers/staging/greybus/greybus_id.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* FIXME
* move this to include/linux/mod_devicetable.h when merging
*/
diff --git a/drivers/staging/greybus/tools/Makefile b/drivers/staging/greybus/tools/Makefile
index 852b12b71149..ad0ae8053b79 100644
--- a/drivers/staging/greybus/tools/Makefile
+++ b/drivers/staging/greybus/tools/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ifeq ($(strip $(V)), 1)
Q =
else
diff --git a/drivers/staging/iio/Makefile b/drivers/staging/iio/Makefile
index 0cfd05d5bf49..455bffc29649 100644
--- a/drivers/staging/iio/Makefile
+++ b/drivers/staging/iio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the industrial I/O core.
#
diff --git a/drivers/staging/iio/adc/Makefile b/drivers/staging/iio/adc/Makefile
index bf18bdd7c99d..ebe83c1ad362 100644
--- a/drivers/staging/iio/adc/Makefile
+++ b/drivers/staging/iio/adc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for industrial I/O ADC drivers
#
diff --git a/drivers/staging/iio/adc/ad7192.c b/drivers/staging/iio/adc/ad7192.c
index d11c6de9c777..6150d2780e22 100644
--- a/drivers/staging/iio/adc/ad7192.c
+++ b/drivers/staging/iio/adc/ad7192.c
@@ -223,11 +223,9 @@ static int ad7192_setup(struct ad7192_state *st,
struct iio_dev *indio_dev = spi_get_drvdata(st->sd.spi);
unsigned long long scale_uv;
int i, ret, id;
- u8 ones[6];
/* reset the serial interface */
- memset(&ones, 0xFF, 6);
- ret = spi_write(st->sd.spi, &ones, 6);
+ ret = ad_sd_reset(&st->sd, 48);
if (ret < 0)
goto out;
usleep_range(500, 1000); /* Wait for at least 500us */
diff --git a/drivers/staging/iio/meter/Makefile b/drivers/staging/iio/meter/Makefile
index de3863d6b078..19e7982f5563 100644
--- a/drivers/staging/iio/meter/Makefile
+++ b/drivers/staging/iio/meter/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for metering ic drivers
#
diff --git a/drivers/staging/iio/meter/ade7759.c b/drivers/staging/iio/meter/ade7759.c
index 1691760339da..02573c517d9d 100644
--- a/drivers/staging/iio/meter/ade7759.c
+++ b/drivers/staging/iio/meter/ade7759.c
@@ -172,7 +172,7 @@ static int ade7759_spi_read_reg_40(struct device *dev,
reg_address);
goto error_ret;
}
- *val = ((u64)st->rx[1] << 32) | (st->rx[2] << 24) |
+ *val = ((u64)st->rx[1] << 32) | ((u64)st->rx[2] << 24) |
(st->rx[3] << 16) | (st->rx[4] << 8) | st->rx[5];
error_ret:
diff --git a/drivers/staging/iio/meter/ade7854.h b/drivers/staging/iio/meter/ade7854.h
index dbd97def9cd8..c27247a7891a 100644
--- a/drivers/staging/iio/meter/ade7854.h
+++ b/drivers/staging/iio/meter/ade7854.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ADE7854_H
#define _ADE7854_H
diff --git a/drivers/staging/iio/meter/meter.h b/drivers/staging/iio/meter/meter.h
index 0e37f23853f1..edf26302fa57 100644
--- a/drivers/staging/iio/meter/meter.h
+++ b/drivers/staging/iio/meter/meter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _METER_H
#define _METER_H
diff --git a/drivers/staging/iio/trigger/iio-trig-bfin-timer.h b/drivers/staging/iio/trigger/iio-trig-bfin-timer.h
index c07321f8d94c..fb05a2a8397c 100644
--- a/drivers/staging/iio/trigger/iio-trig-bfin-timer.h
+++ b/drivers/staging/iio/trigger/iio-trig-bfin-timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IIO_BFIN_TIMER_TRIGGER_H__
#define __IIO_BFIN_TIMER_TRIGGER_H__
diff --git a/drivers/staging/ks7010/eap_packet.h b/drivers/staging/ks7010/eap_packet.h
index ae03f7477324..dca2a142e834 100644
--- a/drivers/staging/ks7010/eap_packet.h
+++ b/drivers/staging/ks7010/eap_packet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef EAP_PACKET_H
#define EAP_PACKET_H
diff --git a/drivers/staging/lustre/lnet/libcfs/Makefile b/drivers/staging/lustre/lnet/libcfs/Makefile
index 215fa23827d1..1607570ef8de 100644
--- a/drivers/staging/lustre/lnet/libcfs/Makefile
+++ b/drivers/staging/lustre/lnet/libcfs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/include
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/lustre/include
diff --git a/drivers/staging/lustre/lnet/libcfs/tracefile.c b/drivers/staging/lustre/lnet/libcfs/tracefile.c
index 68f283a2744c..f916b475e767 100644
--- a/drivers/staging/lustre/lnet/libcfs/tracefile.c
+++ b/drivers/staging/lustre/lnet/libcfs/tracefile.c
@@ -731,8 +731,7 @@ int cfs_tracefile_dump_all_pages(char *filename)
__LASSERT_TAGE_INVARIANT(tage);
buf = kmap(tage->page);
- rc = vfs_write(filp, (__force const char __user *)buf,
- tage->used, &filp->f_pos);
+ rc = kernel_write(filp, buf, tage->used, &filp->f_pos);
kunmap(tage->page);
if (rc != (int)tage->used) {
@@ -976,7 +975,6 @@ static int tracefiled(void *arg)
struct tracefiled_ctl *tctl = arg;
struct cfs_trace_page *tage;
struct cfs_trace_page *tmp;
- mm_segment_t __oldfs;
struct file *filp;
char *buf;
int last_loop = 0;
@@ -1014,8 +1012,6 @@ static int tracefiled(void *arg)
__LASSERT(list_empty(&pc.pc_pages));
goto end_loop;
}
- __oldfs = get_fs();
- set_fs(get_ds());
list_for_each_entry_safe(tage, tmp, &pc.pc_pages, linkage) {
static loff_t f_pos;
@@ -1028,8 +1024,7 @@ static int tracefiled(void *arg)
f_pos = i_size_read(file_inode(filp));
buf = kmap(tage->page);
- rc = vfs_write(filp, (__force const char __user *)buf,
- tage->used, &f_pos);
+ rc = kernel_write(filp, buf, tage->used, &f_pos);
kunmap(tage->page);
if (rc != (int)tage->used) {
@@ -1040,7 +1035,6 @@ static int tracefiled(void *arg)
break;
}
}
- set_fs(__oldfs);
filp_close(filp, NULL);
put_pages_on_daemon_list(&pc);
diff --git a/drivers/staging/lustre/lnet/lnet/Makefile b/drivers/staging/lustre/lnet/lnet/Makefile
index fd8585cd0ce2..0a9d70924fe0 100644
--- a/drivers/staging/lustre/lnet/lnet/Makefile
+++ b/drivers/staging/lustre/lnet/lnet/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/include
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/lustre/include
diff --git a/drivers/staging/lustre/lustre/llite/Makefile b/drivers/staging/lustre/lustre/llite/Makefile
index ef7adef4ccc5..519fd747e3ad 100644
--- a/drivers/staging/lustre/lustre/llite/Makefile
+++ b/drivers/staging/lustre/lustre/llite/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/include
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/lustre/include
diff --git a/drivers/staging/lustre/lustre/llite/llite_lib.c b/drivers/staging/lustre/lustre/llite/llite_lib.c
index d855129768f8..25393e3a0fe8 100644
--- a/drivers/staging/lustre/lustre/llite/llite_lib.c
+++ b/drivers/staging/lustre/lustre/llite/llite_lib.c
@@ -210,7 +210,7 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
data->ocd_ibits_known = MDS_INODELOCK_FULL;
data->ocd_version = LUSTRE_VERSION_CODE;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
data->ocd_connect_flags |= OBD_CONNECT_RDONLY;
if (sbi->ll_flags & LL_SBI_USER_XATTR)
data->ocd_connect_flags |= OBD_CONNECT_XATTR;
@@ -2031,7 +2031,7 @@ int ll_remount_fs(struct super_block *sb, int *flags, char *data)
int err;
__u32 read_only;
- if ((*flags & MS_RDONLY) != (sb->s_flags & MS_RDONLY)) {
+ if ((bool)(*flags & MS_RDONLY) != sb_rdonly(sb)) {
read_only = *flags & MS_RDONLY;
err = obd_set_info_async(NULL, sbi->ll_md_exp,
sizeof(KEY_READ_ONLY),
diff --git a/drivers/staging/lustre/lustre/llite/namei.c b/drivers/staging/lustre/lustre/llite/namei.c
index 4897dbd3286d..5cc2b3255207 100644
--- a/drivers/staging/lustre/lustre/llite/namei.c
+++ b/drivers/staging/lustre/lustre/llite/namei.c
@@ -561,8 +561,7 @@ static struct dentry *ll_lookup_it(struct inode *parent, struct dentry *dentry,
}
}
- if (it->it_op & IT_OPEN && it->it_flags & FMODE_WRITE &&
- dentry->d_sb->s_flags & MS_RDONLY)
+ if (it->it_op & IT_OPEN && it->it_flags & FMODE_WRITE && sb_rdonly(dentry->d_sb))
return ERR_PTR(-EROFS);
if (it->it_op & IT_CREAT)
diff --git a/drivers/staging/lustre/lustre/llite/xattr_cache.c b/drivers/staging/lustre/lustre/llite/xattr_cache.c
index 80ee3920481a..f9cf79761d51 100644
--- a/drivers/staging/lustre/lustre/llite/xattr_cache.c
+++ b/drivers/staging/lustre/lustre/llite/xattr_cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright 2012 Xyratex Technology Limited
*
diff --git a/drivers/staging/lustre/lustre/lov/Makefile b/drivers/staging/lustre/lustre/lov/Makefile
index 3abfb4eab3d3..1ebf0193f61a 100644
--- a/drivers/staging/lustre/lustre/lov/Makefile
+++ b/drivers/staging/lustre/lustre/lov/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/include
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/lustre/include
diff --git a/drivers/staging/lustre/lustre/obdclass/Makefile b/drivers/staging/lustre/lustre/obdclass/Makefile
index fa0ad6548ecd..e3fa9acff4c4 100644
--- a/drivers/staging/lustre/lustre/obdclass/Makefile
+++ b/drivers/staging/lustre/lustre/obdclass/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/include
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/lustre/include
diff --git a/drivers/staging/lustre/lustre/obdclass/kernelcomm.c b/drivers/staging/lustre/lustre/obdclass/kernelcomm.c
index 8f0707a27a83..4f0a42633d5a 100644
--- a/drivers/staging/lustre/lustre/obdclass/kernelcomm.c
+++ b/drivers/staging/lustre/lustre/obdclass/kernelcomm.c
@@ -52,7 +52,6 @@ int libcfs_kkuc_msg_put(struct file *filp, void *payload)
struct kuc_hdr *kuch = (struct kuc_hdr *)payload;
ssize_t count = kuch->kuc_msglen;
loff_t offset = 0;
- mm_segment_t fs;
int rc = -ENXIO;
if (IS_ERR_OR_NULL(filp))
@@ -63,18 +62,14 @@ int libcfs_kkuc_msg_put(struct file *filp, void *payload)
return rc;
}
- fs = get_fs();
- set_fs(KERNEL_DS);
while (count > 0) {
- rc = vfs_write(filp, (void __force __user *)payload,
- count, &offset);
+ rc = kernel_write(filp, payload, count, &offset);
if (rc < 0)
break;
count -= rc;
payload += rc;
rc = 0;
}
- set_fs(fs);
if (rc < 0)
CWARN("message send failed (%d)\n", rc);
diff --git a/drivers/staging/lustre/lustre/ptlrpc/Makefile b/drivers/staging/lustre/lustre/ptlrpc/Makefile
index a518001cdfe8..1deb1971b39e 100644
--- a/drivers/staging/lustre/lustre/ptlrpc/Makefile
+++ b/drivers/staging/lustre/lustre/ptlrpc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/include
subdir-ccflags-y += -I$(srctree)/drivers/staging/lustre/lustre/include
diff --git a/drivers/staging/media/Makefile b/drivers/staging/media/Makefile
index ac090c5fce30..be732cf932fd 100644
--- a/drivers/staging/media/Makefile
+++ b/drivers/staging/media/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_I2C_BCM2048) += bcm2048/
obj-$(CONFIG_DVB_CXD2099) += cxd2099/
obj-$(CONFIG_VIDEO_IMX_MEDIA) += imx/
diff --git a/drivers/staging/media/atomisp/i2c/Makefile b/drivers/staging/media/atomisp/i2c/Makefile
index be13fab92175..041a041718d2 100644
--- a/drivers/staging/media/atomisp/i2c/Makefile
+++ b/drivers/staging/media/atomisp/i2c/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for sensor drivers
#
diff --git a/drivers/staging/media/atomisp/i2c/imx/Makefile b/drivers/staging/media/atomisp/i2c/imx/Makefile
index b6578f09546e..c1a85e6e27a9 100644
--- a/drivers/staging/media/atomisp/i2c/imx/Makefile
+++ b/drivers/staging/media/atomisp/i2c/imx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VIDEO_IMX) += imx1x5.o
imx1x5-objs := imx.o drv201.o ad5816g.o dw9714.o dw9719.o dw9718.o vcm.o otp.o otp_imx.o otp_brcc064_e2prom.o otp_e2prom.o
diff --git a/drivers/staging/media/atomisp/i2c/imx/ad5816g.c b/drivers/staging/media/atomisp/i2c/imx/ad5816g.c
index 558dcdf135d9..fb74f14cbe5a 100644
--- a/drivers/staging/media/atomisp/i2c/imx/ad5816g.c
+++ b/drivers/staging/media/atomisp/i2c/imx/ad5816g.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bitops.h>
#include <linux/device.h>
#include <linux/delay.h>
diff --git a/drivers/staging/media/atomisp/i2c/imx/ad5816g.h b/drivers/staging/media/atomisp/i2c/imx/ad5816g.h
index f995c2eeada4..e1396b00a0e1 100644
--- a/drivers/staging/media/atomisp/i2c/imx/ad5816g.h
+++ b/drivers/staging/media/atomisp/i2c/imx/ad5816g.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __AD5816G_H__
#define __AD5816G_H__
diff --git a/drivers/staging/media/atomisp/i2c/imx/common.h b/drivers/staging/media/atomisp/i2c/imx/common.h
index 7e525cef56ef..af2e3160df95 100644
--- a/drivers/staging/media/atomisp/i2c/imx/common.h
+++ b/drivers/staging/media/atomisp/i2c/imx/common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __COMMON_H__
#define __COMMON_H__
diff --git a/drivers/staging/media/atomisp/i2c/imx/drv201.c b/drivers/staging/media/atomisp/i2c/imx/drv201.c
index 6d9d4c968722..221e4875ac49 100644
--- a/drivers/staging/media/atomisp/i2c/imx/drv201.c
+++ b/drivers/staging/media/atomisp/i2c/imx/drv201.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bitops.h>
#include <linux/device.h>
#include <linux/delay.h>
diff --git a/drivers/staging/media/atomisp/i2c/imx/drv201.h b/drivers/staging/media/atomisp/i2c/imx/drv201.h
index 8fc0ad116630..2ef8aafdf675 100644
--- a/drivers/staging/media/atomisp/i2c/imx/drv201.h
+++ b/drivers/staging/media/atomisp/i2c/imx/drv201.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRV201_H__
#define __DRV201_H__
diff --git a/drivers/staging/media/atomisp/i2c/imx/dw9714.c b/drivers/staging/media/atomisp/i2c/imx/dw9714.c
index 6397a7ee0af6..f96855454313 100644
--- a/drivers/staging/media/atomisp/i2c/imx/dw9714.c
+++ b/drivers/staging/media/atomisp/i2c/imx/dw9714.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bitops.h>
#include <linux/device.h>
#include <linux/delay.h>
diff --git a/drivers/staging/media/atomisp/i2c/imx/dw9714.h b/drivers/staging/media/atomisp/i2c/imx/dw9714.h
index 5a98a9c97182..aee560026b56 100644
--- a/drivers/staging/media/atomisp/i2c/imx/dw9714.h
+++ b/drivers/staging/media/atomisp/i2c/imx/dw9714.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DW9714_H__
#define __DW9714_H__
diff --git a/drivers/staging/media/atomisp/i2c/imx/imx134.h b/drivers/staging/media/atomisp/i2c/imx/imx134.h
index cf35197ed77f..9026e8ba5679 100644
--- a/drivers/staging/media/atomisp/i2c/imx/imx134.h
+++ b/drivers/staging/media/atomisp/i2c/imx/imx134.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IMX134_H__
#define __IMX134_H__
diff --git a/drivers/staging/media/atomisp/i2c/imx/imx175.h b/drivers/staging/media/atomisp/i2c/imx/imx175.h
index 5f409ccedc85..5e082088cb37 100644
--- a/drivers/staging/media/atomisp/i2c/imx/imx175.h
+++ b/drivers/staging/media/atomisp/i2c/imx/imx175.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IMX175_H__
#define __IMX175_H__
#include "common.h"
diff --git a/drivers/staging/media/atomisp/i2c/imx/imx219.h b/drivers/staging/media/atomisp/i2c/imx/imx219.h
index 52df582c56d8..bbd515bf7279 100644
--- a/drivers/staging/media/atomisp/i2c/imx/imx219.h
+++ b/drivers/staging/media/atomisp/i2c/imx/imx219.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IMX219_H__
#define __IMX219_H__
#include "common.h"
diff --git a/drivers/staging/media/atomisp/i2c/imx/imx227.h b/drivers/staging/media/atomisp/i2c/imx/imx227.h
index 10e5b86f6687..795fe017d01b 100644
--- a/drivers/staging/media/atomisp/i2c/imx/imx227.h
+++ b/drivers/staging/media/atomisp/i2c/imx/imx227.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IMX227_H__
#define __IMX227_H__
diff --git a/drivers/staging/media/atomisp/i2c/ov5693/Makefile b/drivers/staging/media/atomisp/i2c/ov5693/Makefile
index 4e3833aaec05..facb70e6a93e 100644
--- a/drivers/staging/media/atomisp/i2c/ov5693/Makefile
+++ b/drivers/staging/media/atomisp/i2c/ov5693/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VIDEO_OV5693) += ov5693.o
# HACK! While this driver is in bad shape, don't enable several warnings
diff --git a/drivers/staging/media/atomisp/include/asm/intel_mid_pcihelpers.h b/drivers/staging/media/atomisp/include/asm/intel_mid_pcihelpers.h
index c5e22bba455a..dc7104470f5c 100644
--- a/drivers/staging/media/atomisp/include/asm/intel_mid_pcihelpers.h
+++ b/drivers/staging/media/atomisp/include/asm/intel_mid_pcihelpers.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Access to message bus through three registers
* in CUNIT(0:0:0) PCI configuration space.
diff --git a/drivers/staging/media/atomisp/pci/atomisp2/Makefile b/drivers/staging/media/atomisp/pci/atomisp2/Makefile
index 2bd98f0667ec..ac3805345f20 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/Makefile
+++ b/drivers/staging/media/atomisp/pci/atomisp2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
atomisp-objs += \
atomisp_drvfs.o \
atomisp_file.o \
diff --git a/drivers/staging/media/atomisp/platform/intel-mid/intel_mid_pcihelpers.c b/drivers/staging/media/atomisp/platform/intel-mid/intel_mid_pcihelpers.c
index cd452cc20fea..4631b1d39bb4 100644
--- a/drivers/staging/media/atomisp/platform/intel-mid/intel_mid_pcihelpers.c
+++ b/drivers/staging/media/atomisp/platform/intel-mid/intel_mid_pcihelpers.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>
#include <linux/pci.h>
#include <linux/pm_qos.h>
diff --git a/drivers/staging/media/imx/Makefile b/drivers/staging/media/imx/Makefile
index 3569625b6305..698a4210316e 100644
--- a/drivers/staging/media/imx/Makefile
+++ b/drivers/staging/media/imx/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
imx-media-objs := imx-media-dev.o imx-media-internal-sd.o imx-media-of.o
imx-media-common-objs := imx-media-utils.o imx-media-fim.o
imx-media-ic-objs := imx-ic-common.o imx-ic-prp.o imx-ic-prpencvf.o
diff --git a/drivers/staging/media/imx/imx-media-dev.c b/drivers/staging/media/imx/imx-media-dev.c
index d96f4512224f..b55e5ebba8b4 100644
--- a/drivers/staging/media/imx/imx-media-dev.c
+++ b/drivers/staging/media/imx/imx-media-dev.c
@@ -400,10 +400,10 @@ static int imx_media_create_pad_vdev_lists(struct imx_media_dev *imxmd)
struct media_link, list);
ret = imx_media_add_vdev_to_pad(imxmd, vdev, link->source);
if (ret)
- break;
+ return ret;
}
- return ret;
+ return 0;
}
/* async subdev complete notifier */
diff --git a/drivers/staging/most/Makefile b/drivers/staging/most/Makefile
index 9ee981c7786b..f5bbb9deaab5 100644
--- a/drivers/staging/most/Makefile
+++ b/drivers/staging/most/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MOSTCORE) += mostcore/
obj-$(CONFIG_AIM_CDEV) += aim-cdev/
obj-$(CONFIG_AIM_NETWORK) += aim-network/
diff --git a/drivers/staging/mt29f_spinand/mt29f_spinand.c b/drivers/staging/mt29f_spinand/mt29f_spinand.c
index 13eaf16ecd16..87595c594b12 100644
--- a/drivers/staging/mt29f_spinand/mt29f_spinand.c
+++ b/drivers/staging/mt29f_spinand/mt29f_spinand.c
@@ -496,8 +496,12 @@ static int spinand_program_page(struct spi_device *spi_nand,
if (!wbuf)
return -ENOMEM;
- enable_read_hw_ecc = 0;
- spinand_read_page(spi_nand, page_id, 0, CACHE_BUF, wbuf);
+ enable_read_hw_ecc = 1;
+ retval = spinand_read_page(spi_nand, page_id, 0, CACHE_BUF, wbuf);
+ if (retval < 0) {
+ dev_err(&spi_nand->dev, "ecc error on read page!!!\n");
+ return retval;
+ }
for (i = offset, j = 0; i < len; i++, j++)
wbuf[i] &= buf[j];
diff --git a/drivers/staging/nvec/Makefile b/drivers/staging/nvec/Makefile
index 0db0e1f43337..f0cff8f9fdf6 100644
--- a/drivers/staging/nvec/Makefile
+++ b/drivers/staging/nvec/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_SERIO_NVEC_PS2) += nvec_ps2.o
obj-$(CONFIG_MFD_NVEC) += nvec.o
obj-$(CONFIG_NVEC_POWER) += nvec_power.o
diff --git a/drivers/staging/olpc_dcon/olpc_dcon.h b/drivers/staging/olpc_dcon/olpc_dcon.h
index 215e7ec4dea2..8fbde5d3b4a6 100644
--- a/drivers/staging/olpc_dcon/olpc_dcon.h
+++ b/drivers/staging/olpc_dcon/olpc_dcon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef OLPC_DCON_H_
#define OLPC_DCON_H_
diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index c4b1b218ea38..290b419aa9dd 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -570,12 +570,6 @@ int rf69_set_dio_mapping(struct spi_device *spi, u8 DIONumber, u8 value)
dev_dbg(&spi->dev, "set: DIO mapping");
#endif
- // check DIO number
- if (DIONumber > 5) {
- dev_dbg(&spi->dev, "set: illegal input param");
- return -EINVAL;
- }
-
switch (DIONumber) {
case 0: mask=MASK_DIO0; shift=SHIFT_DIO0; regaddr=REG_DIOMAPPING1; break;
case 1: mask=MASK_DIO1; shift=SHIFT_DIO1; regaddr=REG_DIOMAPPING1; break;
@@ -583,6 +577,9 @@ int rf69_set_dio_mapping(struct spi_device *spi, u8 DIONumber, u8 value)
case 3: mask=MASK_DIO3; shift=SHIFT_DIO3; regaddr=REG_DIOMAPPING1; break;
case 4: mask=MASK_DIO4; shift=SHIFT_DIO4; regaddr=REG_DIOMAPPING2; break;
case 5: mask=MASK_DIO5; shift=SHIFT_DIO5; regaddr=REG_DIOMAPPING2; break;
+ default:
+ dev_dbg(&spi->dev, "set: illegal input param");
+ return -EINVAL;
}
// read reg
diff --git a/drivers/staging/rtl8188eu/Makefile b/drivers/staging/rtl8188eu/Makefile
index 27af86e05098..033fb2e6950d 100644
--- a/drivers/staging/rtl8188eu/Makefile
+++ b/drivers/staging/rtl8188eu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
r8188eu-y := \
core/rtw_ap.o \
core/rtw_cmd.o \
diff --git a/drivers/staging/rtl8188eu/hal/Hal8188ERateAdaptive.c b/drivers/staging/rtl8188eu/hal/Hal8188ERateAdaptive.c
index 81bf4944ef44..bbb981c6bcec 100644
--- a/drivers/staging/rtl8188eu/hal/Hal8188ERateAdaptive.c
+++ b/drivers/staging/rtl8188eu/hal/Hal8188ERateAdaptive.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*++
Copyright (c) Realtek Semiconductor Corp. All rights reserved.
diff --git a/drivers/staging/rtl8188eu/include/Hal8188ERateAdaptive.h b/drivers/staging/rtl8188eu/include/Hal8188ERateAdaptive.h
index 21996a1173ef..6722010ba1ec 100644
--- a/drivers/staging/rtl8188eu/include/Hal8188ERateAdaptive.h
+++ b/drivers/staging/rtl8188eu/include/Hal8188ERateAdaptive.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __INC_RA_H
#define __INC_RA_H
/*++
diff --git a/drivers/staging/rtl8188eu/include/phy.h b/drivers/staging/rtl8188eu/include/phy.h
index cd387e998574..e99ac3910787 100644
--- a/drivers/staging/rtl8188eu/include/phy.h
+++ b/drivers/staging/rtl8188eu/include/phy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <odm.h>
#define IQK_DELAY_TIME_88E 10
diff --git a/drivers/staging/rtl8188eu/include/rf.h b/drivers/staging/rtl8188eu/include/rf.h
index 98a5551f5ae7..ed3241c020ad 100644
--- a/drivers/staging/rtl8188eu/include/rf.h
+++ b/drivers/staging/rtl8188eu/include/rf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define RF6052_MAX_TX_PWR 0x3F
#define RF6052_MAX_REG 0x3F
diff --git a/drivers/staging/rtl8192e/Makefile b/drivers/staging/rtl8192e/Makefile
index 7101fcc8871b..6af519938868 100644
--- a/drivers/staging/rtl8192e/Makefile
+++ b/drivers/staging/rtl8192e/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
rtllib-objs := \
dot11d.o \
rtllib_module.o \
diff --git a/drivers/staging/rtl8192e/rtl8192e/Makefile b/drivers/staging/rtl8192e/rtl8192e/Makefile
index 176a4a2b8b20..75e6ec510555 100644
--- a/drivers/staging/rtl8192e/rtl8192e/Makefile
+++ b/drivers/staging/rtl8192e/rtl8192e/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
r8192e_pci-objs := \
r8192E_dev.o \
r8192E_phy.o \
diff --git a/drivers/staging/rtl8192u/Makefile b/drivers/staging/rtl8192u/Makefile
index 703c1505ea5f..3022728a364c 100644
--- a/drivers/staging/rtl8192u/Makefile
+++ b/drivers/staging/rtl8192u/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
NIC_SELECT = RTL8192U
ccflags-y := -std=gnu89
diff --git a/drivers/staging/rtl8192u/ieee80211/Makefile b/drivers/staging/rtl8192u/ieee80211/Makefile
index 9e3f432e5355..0d4d6489f767 100644
--- a/drivers/staging/rtl8192u/ieee80211/Makefile
+++ b/drivers/staging/rtl8192u/ieee80211/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
NIC_SELECT = RTL8192U
ccflags-y := -O2
diff --git a/drivers/staging/rtl8192u/ieee80211/dot11d.c b/drivers/staging/rtl8192u/ieee80211/dot11d.c
index 00b6052fbbac..64b13a5da3cb 100644
--- a/drivers/staging/rtl8192u/ieee80211/dot11d.c
+++ b/drivers/staging/rtl8192u/ieee80211/dot11d.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Implement 802.11d. */
#include "dot11d.h"
diff --git a/drivers/staging/rtl8192u/ieee80211/dot11d.h b/drivers/staging/rtl8192u/ieee80211/dot11d.h
index 8ae673b217d8..88bc298305bd 100644
--- a/drivers/staging/rtl8192u/ieee80211/dot11d.h
+++ b/drivers/staging/rtl8192u/ieee80211/dot11d.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __INC_DOT11D_H
#define __INC_DOT11D_H
diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_BA.h b/drivers/staging/rtl8192u/ieee80211/rtl819x_BA.h
index 7abedc27d7c1..b6a76aae4832 100644
--- a/drivers/staging/rtl8192u/ieee80211/rtl819x_BA.h
+++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_BA.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BATYPE_H_
#define _BATYPE_H_
diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_BAProc.c b/drivers/staging/rtl8192u/ieee80211/rtl819x_BAProc.c
index 8aa38dcf0dfd..4b92bb51c3e6 100644
--- a/drivers/staging/rtl8192u/ieee80211/rtl819x_BAProc.c
+++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_BAProc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/********************************************************************************************************************************
* This file is created to process BA Action Frame. According to 802.11 spec, there are 3 BA action types at all. And as BA is
* related to TS, this part need some structure defined in QOS side code. Also TX RX is going to be resturctured, so how to send
diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_HT.h b/drivers/staging/rtl8192u/ieee80211/rtl819x_HT.h
index 5f54d93dfb66..a85036022aa8 100644
--- a/drivers/staging/rtl8192u/ieee80211/rtl819x_HT.h
+++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_HT.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RTL819XU_HTTYPE_H_
#define _RTL819XU_HTTYPE_H_
diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_HTProc.c b/drivers/staging/rtl8192u/ieee80211/rtl819x_HTProc.c
index 9248dbcf3370..bf7b7122d042 100644
--- a/drivers/staging/rtl8192u/ieee80211/rtl819x_HTProc.c
+++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_HTProc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
//As this function is mainly ported from Windows driver, so leave the name little changed. If any confusion caused, tell me. Created by WB. 2008.05.08
#include "ieee80211.h"
diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_Qos.h b/drivers/staging/rtl8192u/ieee80211/rtl819x_Qos.h
index 49c23c720f78..71df9d9e2e99 100644
--- a/drivers/staging/rtl8192u/ieee80211/rtl819x_Qos.h
+++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_Qos.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __INC_QOS_TYPE_H
#define __INC_QOS_TYPE_H
diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_TS.h b/drivers/staging/rtl8192u/ieee80211/rtl819x_TS.h
index e25b69777ee7..3a0ff08c687a 100644
--- a/drivers/staging/rtl8192u/ieee80211/rtl819x_TS.h
+++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_TS.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _TSTYPE_H_
#define _TSTYPE_H_
#include "rtl819x_Qos.h"
diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_TSProc.c b/drivers/staging/rtl8192u/ieee80211/rtl819x_TSProc.c
index f98bb03aa293..f4921abf7300 100644
--- a/drivers/staging/rtl8192u/ieee80211/rtl819x_TSProc.c
+++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_TSProc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "ieee80211.h"
#include <linux/etherdevice.h>
#include <linux/slab.h>
diff --git a/drivers/staging/rtl8192u/r8192U_dm.c b/drivers/staging/rtl8192u/r8192U_dm.c
index e6f8d1da65d9..4c241a07ae75 100644
--- a/drivers/staging/rtl8192u/r8192U_dm.c
+++ b/drivers/staging/rtl8192u/r8192U_dm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*++
Copyright-c Realtek Semiconductor Corp. All rights reserved.
diff --git a/drivers/staging/rtl8192u/r8192U_dm.h b/drivers/staging/rtl8192u/r8192U_dm.h
index 2d0232fb3f9b..98137f65d1b2 100644
--- a/drivers/staging/rtl8192u/r8192U_dm.h
+++ b/drivers/staging/rtl8192u/r8192U_dm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*****************************************************************************
* Copyright(c) 2007, RealTEK Technology Inc. All Right Reserved.
*
diff --git a/drivers/staging/rtl8192u/r819xU_cmdpkt.c b/drivers/staging/rtl8192u/r819xU_cmdpkt.c
index ae9a4f1ac8fd..80672100ea26 100644
--- a/drivers/staging/rtl8192u/r819xU_cmdpkt.c
+++ b/drivers/staging/rtl8192u/r819xU_cmdpkt.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/******************************************************************************
*
* (c) Copyright 2008, RealTEK Technologies Inc. All Rights Reserved.
diff --git a/drivers/staging/rtl8192u/r819xU_cmdpkt.h b/drivers/staging/rtl8192u/r819xU_cmdpkt.h
index ad0f6003570d..85fb49ca7bc8 100644
--- a/drivers/staging/rtl8192u/r819xU_cmdpkt.h
+++ b/drivers/staging/rtl8192u/r819xU_cmdpkt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef R819XUSB_CMDPKT_H
#define R819XUSB_CMDPKT_H
/* Different command packet have dedicated message length and definition. */
diff --git a/drivers/staging/rtl8192u/r819xU_firmware.c b/drivers/staging/rtl8192u/r819xU_firmware.c
index 35d1786703a7..9c7e19aedff1 100644
--- a/drivers/staging/rtl8192u/r819xU_firmware.c
+++ b/drivers/staging/rtl8192u/r819xU_firmware.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/**************************************************************************************************
* Procedure: Init boot code/firmware code/data session
*
diff --git a/drivers/staging/rtl8192u/r819xU_firmware.h b/drivers/staging/rtl8192u/r819xU_firmware.h
index 24b63f2ec509..cccd1c82ffe0 100644
--- a/drivers/staging/rtl8192u/r819xU_firmware.h
+++ b/drivers/staging/rtl8192u/r819xU_firmware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __INC_FIRMWARE_H
#define __INC_FIRMWARE_H
diff --git a/drivers/staging/rtl8192u/r819xU_firmware_img.c b/drivers/staging/rtl8192u/r819xU_firmware_img.c
index 4eb43cfe5690..0af062036688 100644
--- a/drivers/staging/rtl8192u/r819xU_firmware_img.c
+++ b/drivers/staging/rtl8192u/r819xU_firmware_img.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*Created on 2008/ 7/16, 5:31*/
#include <linux/types.h>
#include "r819xU_firmware_img.h"
diff --git a/drivers/staging/rtl8192u/r819xU_firmware_img.h b/drivers/staging/rtl8192u/r819xU_firmware_img.h
index 18d0a6b5cbae..355da9157be1 100644
--- a/drivers/staging/rtl8192u/r819xU_firmware_img.h
+++ b/drivers/staging/rtl8192u/r819xU_firmware_img.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef IMG_H
#define IMG_H
diff --git a/drivers/staging/rtl8192u/r819xU_phy.c b/drivers/staging/rtl8192u/r819xU_phy.c
index 3874f8307117..12750671c860 100644
--- a/drivers/staging/rtl8192u/r819xU_phy.c
+++ b/drivers/staging/rtl8192u/r819xU_phy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "r8192U.h"
#include "r8192U_hw.h"
#include "r819xU_phy.h"
diff --git a/drivers/staging/rtl8192u/r819xU_phy.h b/drivers/staging/rtl8192u/r819xU_phy.h
index e672126330f3..0a42a6092ea9 100644
--- a/drivers/staging/rtl8192u/r819xU_phy.h
+++ b/drivers/staging/rtl8192u/r819xU_phy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _R819XU_PHY_H
#define _R819XU_PHY_H
diff --git a/drivers/staging/rtl8192u/r819xU_phyreg.h b/drivers/staging/rtl8192u/r819xU_phyreg.h
index b855627e9816..c058a9537526 100644
--- a/drivers/staging/rtl8192u/r819xU_phyreg.h
+++ b/drivers/staging/rtl8192u/r819xU_phyreg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _R819XU_PHYREG_H
#define _R819XU_PHYREG_H
diff --git a/drivers/staging/rtl8712/Makefile b/drivers/staging/rtl8712/Makefile
index 6f8500c2d922..3ae216b6621b 100644
--- a/drivers/staging/rtl8712/Makefile
+++ b/drivers/staging/rtl8712/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
r8712u-y := \
rtl871x_cmd.o \
rtl8712_cmd.o \
diff --git a/drivers/staging/rtl8712/rtl8712_efuse.h b/drivers/staging/rtl8712/rtl8712_efuse.h
index 6a64f91ad75f..dbba51cd40fb 100644
--- a/drivers/staging/rtl8712/rtl8712_efuse.h
+++ b/drivers/staging/rtl8712/rtl8712_efuse.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RTL8712_EFUSE_H__
#define __RTL8712_EFUSE_H__
diff --git a/drivers/staging/rtl8712/rtl871x_ioctl.h b/drivers/staging/rtl8712/rtl871x_ioctl.h
index 08bcb3b41bbd..634e67461712 100644
--- a/drivers/staging/rtl8712/rtl871x_ioctl.h
+++ b/drivers/staging/rtl8712/rtl871x_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IOCTL_H
#define __IOCTL_H
diff --git a/drivers/staging/rtl8712/rtl871x_mp_phy_regdef.h b/drivers/staging/rtl8712/rtl871x_mp_phy_regdef.h
index 11bcfb7bf77c..d479f739ff08 100644
--- a/drivers/staging/rtl8712/rtl871x_mp_phy_regdef.h
+++ b/drivers/staging/rtl8712/rtl871x_mp_phy_regdef.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*****************************************************************************
* Copyright(c) 2008, RealTEK Technology Inc. All Right Reserved.
*
diff --git a/drivers/staging/rtl8712/rtl871x_recv.h b/drivers/staging/rtl8712/rtl871x_recv.h
index 9de06c5fe620..f87b2ff5de1c 100644
--- a/drivers/staging/rtl8712/rtl871x_recv.h
+++ b/drivers/staging/rtl8712/rtl871x_recv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RTL871X_RECV_H_
#define _RTL871X_RECV_H_
diff --git a/drivers/staging/rtl8723bs/Makefile b/drivers/staging/rtl8723bs/Makefile
index 4e7b460a9c73..f236acfd3afa 100644
--- a/drivers/staging/rtl8723bs/Makefile
+++ b/drivers/staging/rtl8723bs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
r8723bs-y = \
core/rtw_ap.o \
core/rtw_btcoex.o \
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme.c b/drivers/staging/rtl8723bs/core/rtw_mlme.c
index 6b778206a1a3..cb8a95aabd6c 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme.c
@@ -119,9 +119,8 @@ void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
void _rtw_free_mlme_priv(struct mlme_priv *pmlmepriv)
{
- rtw_free_mlme_priv_ie_data(pmlmepriv);
-
if (pmlmepriv) {
+ rtw_free_mlme_priv_ie_data(pmlmepriv);
if (pmlmepriv->free_bss_buf) {
vfree(pmlmepriv->free_bss_buf);
}
diff --git a/drivers/staging/rtl8723bs/hal/Hal8723BReg.h b/drivers/staging/rtl8723bs/hal/Hal8723BReg.h
index 152a198c8f17..ce02457922b7 100644
--- a/drivers/staging/rtl8723bs/hal/Hal8723BReg.h
+++ b/drivers/staging/rtl8723bs/hal/Hal8723BReg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*****************************************************************************
*Copyright(c) 2009, RealTEK Technology Inc. All Right Reserved.
*
diff --git a/drivers/staging/rtl8723bs/include/Hal8723BPwrSeq.h b/drivers/staging/rtl8723bs/include/Hal8723BPwrSeq.h
index 796449c3f430..130a94879805 100644
--- a/drivers/staging/rtl8723bs/include/Hal8723BPwrSeq.h
+++ b/drivers/staging/rtl8723bs/include/Hal8723BPwrSeq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef REALTEK_POWER_SEQUENCE_8723B
#define REALTEK_POWER_SEQUENCE_8723B
diff --git a/drivers/staging/rtl8723bs/include/rtw_wifi_regd.h b/drivers/staging/rtl8723bs/include/rtw_wifi_regd.h
index d97ca1630bd4..ab5a8627d371 100644
--- a/drivers/staging/rtl8723bs/include/rtw_wifi_regd.h
+++ b/drivers/staging/rtl8723bs/include/rtw_wifi_regd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/******************************************************************************
*
* Copyright(c) 2009-2010 Realtek Corporation.
diff --git a/drivers/staging/rtl8723bs/os_dep/rtw_proc.c b/drivers/staging/rtl8723bs/os_dep/rtw_proc.c
index 92277457aba4..ce1dd6f9036f 100644
--- a/drivers/staging/rtl8723bs/os_dep/rtw_proc.c
+++ b/drivers/staging/rtl8723bs/os_dep/rtw_proc.c
@@ -311,6 +311,8 @@ static ssize_t proc_set_cam(struct file *file, const char __user *buffer, size_t
if (num < 2)
return count;
+ if (id >= TOTAL_CAM_ENTRY)
+ return -EINVAL;
if (strcmp("c", cmd) == 0) {
_clear_cam_entry(adapter, id);
diff --git a/drivers/staging/rtl8723bs/os_dep/wifi_regd.c b/drivers/staging/rtl8723bs/os_dep/wifi_regd.c
index 305e88a6b2ca..aa2f62acc994 100644
--- a/drivers/staging/rtl8723bs/os_dep/wifi_regd.c
+++ b/drivers/staging/rtl8723bs/os_dep/wifi_regd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/******************************************************************************
*
* Copyright(c) 2009-2010 Realtek Corporation.
diff --git a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_api_88xx.c b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_api_88xx.c
index 5f84526cb5b5..edbf6af1c8b7 100644
--- a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_api_88xx.c
+++ b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_api_88xx.c
@@ -2901,11 +2901,11 @@ halmac_update_datapack_88xx(struct halmac_adapter *halmac_adapter,
if (halmac_adapter->fw_version.h2c_version < 4)
return HALMAC_RET_FW_NO_SUPPORT;
+ driver_adapter = halmac_adapter->driver_adapter;
+
HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_H2C, DBG_DMESG,
"[TRACE]%s ==========>\n", __func__);
- driver_adapter = halmac_adapter->driver_adapter;
-
HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_H2C, DBG_DMESG,
"[TRACE]%s <==========\n", __func__);
diff --git a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
index f33024e4d853..544f638ed3ef 100644
--- a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
+++ b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
@@ -1618,10 +1618,11 @@ halmac_send_h2c_set_pwr_mode_88xx(struct halmac_adapter *halmac_adapter,
void *driver_adapter = NULL;
enum halmac_ret_status status = HALMAC_RET_SUCCESS;
+ driver_adapter = halmac_adapter->driver_adapter;
+
HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_H2C, DBG_DMESG,
"%s!!\n", __func__);
- driver_adapter = halmac_adapter->driver_adapter;
h2c_header = h2c_buff;
h2c_cmd = h2c_header + HALMAC_H2C_CMD_HDR_SIZE_88XX;
@@ -1713,10 +1714,11 @@ halmac_media_status_rpt_88xx(struct halmac_adapter *halmac_adapter, u8 op_mode,
void *driver_adapter = NULL;
enum halmac_ret_status status = HALMAC_RET_SUCCESS;
+ driver_adapter = halmac_adapter->driver_adapter;
+
HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_H2C, DBG_DMESG,
"halmac_send_h2c_set_pwr_mode_88xx!!\n");
- driver_adapter = halmac_adapter->driver_adapter;
h2c_header = H2c_buff;
h2c_cmd = h2c_header + HALMAC_H2C_CMD_HDR_SIZE_88XX;
@@ -2143,10 +2145,11 @@ halmac_func_ctrl_ch_switch_88xx(struct halmac_adapter *halmac_adapter,
enum halmac_cmd_process_status *process_status =
&halmac_adapter->halmac_state.scan_state_set.process_status;
+ driver_adapter = halmac_adapter->driver_adapter;
+
HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_H2C, DBG_DMESG,
"halmac_ctrl_ch_switch!!\n");
- driver_adapter = halmac_adapter->driver_adapter;
halmac_api = (struct halmac_api *)halmac_adapter->halmac_api;
if (halmac_transition_scan_state_88xx(
@@ -2276,15 +2279,13 @@ enum halmac_ret_status halmac_send_h2c_update_bcn_parse_info_88xx(
{
u8 h2c_buff[HALMAC_H2C_CMD_SIZE_88XX] = {0};
u16 h2c_seq_mum = 0;
- void *driver_adapter = NULL;
+ void *driver_adapter = halmac_adapter->driver_adapter;
struct halmac_h2c_header_info h2c_header_info;
enum halmac_ret_status status = HALMAC_RET_SUCCESS;
HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_H2C, DBG_DMESG,
"%s!!\n", __func__);
- driver_adapter = halmac_adapter->driver_adapter;
-
UPDATE_BEACON_PARSING_INFO_SET_FUNC_EN(h2c_buff, bcn_ie_info->func_en);
UPDATE_BEACON_PARSING_INFO_SET_SIZE_TH(h2c_buff, bcn_ie_info->size_th);
UPDATE_BEACON_PARSING_INFO_SET_TIMEOUT(h2c_buff, bcn_ie_info->timeout);
diff --git a/drivers/staging/rts5208/trace.c b/drivers/staging/rts5208/trace.c
index 1bddbdf3454b..c878e75293f7 100644
--- a/drivers/staging/rts5208/trace.c
+++ b/drivers/staging/rts5208/trace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/string.h>
diff --git a/drivers/staging/skein/Makefile b/drivers/staging/skein/Makefile
index b7f947fb98f0..86b7966d694e 100644
--- a/drivers/staging/skein/Makefile
+++ b/drivers/staging/skein/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the skein secure hash algorithm
#
diff --git a/drivers/staging/skein/skein_iv.h b/drivers/staging/skein/skein_iv.h
index 509d464c65a3..916f029da726 100644
--- a/drivers/staging/skein/skein_iv.h
+++ b/drivers/staging/skein/skein_iv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SKEIN_IV_H_
#define _SKEIN_IV_H_
diff --git a/drivers/staging/skein/threefish_api.c b/drivers/staging/skein/threefish_api.c
index 2b649abb78c7..e69cefa6b16a 100644
--- a/drivers/staging/skein/threefish_api.c
+++ b/drivers/staging/skein/threefish_api.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/string.h>
#include "threefish_api.h"
diff --git a/drivers/staging/skein/threefish_api.h b/drivers/staging/skein/threefish_api.h
index 615e467579ee..21539c3cc7a0 100644
--- a/drivers/staging/skein/threefish_api.h
+++ b/drivers/staging/skein/threefish_api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef THREEFISHAPI_H
#define THREEFISHAPI_H
diff --git a/drivers/staging/skein/threefish_block.c b/drivers/staging/skein/threefish_block.c
index 50640656c10d..87f055890544 100644
--- a/drivers/staging/skein/threefish_block.c
+++ b/drivers/staging/skein/threefish_block.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bitops.h>
#include "threefish_api.h"
diff --git a/drivers/staging/sm750fb/ddk750_chip.c b/drivers/staging/sm750fb/ddk750_chip.c
index 4754f7a20684..313b99104398 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/sizes.h>
diff --git a/drivers/staging/sm750fb/ddk750_chip.h b/drivers/staging/sm750fb/ddk750_chip.h
index 2c7a9b9a7c8a..09c223f815de 100644
--- a/drivers/staging/sm750fb/ddk750_chip.h
+++ b/drivers/staging/sm750fb/ddk750_chip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DDK750_CHIP_H__
#define DDK750_CHIP_H__
#define DEFAULT_INPUT_CLOCK 14318181 /* Default reference clock */
diff --git a/drivers/staging/sm750fb/ddk750_display.c b/drivers/staging/sm750fb/ddk750_display.c
index 9b116ed6ecc7..c6fd90191530 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "ddk750_reg.h"
#include "ddk750_chip.h"
#include "ddk750_display.h"
diff --git a/drivers/staging/sm750fb/ddk750_display.h b/drivers/staging/sm750fb/ddk750_display.h
index 609bf742efff..523bbf33521c 100644
--- a/drivers/staging/sm750fb/ddk750_display.h
+++ b/drivers/staging/sm750fb/ddk750_display.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DDK750_DISPLAY_H__
#define DDK750_DISPLAY_H__
diff --git a/drivers/staging/sm750fb/ddk750_dvi.c b/drivers/staging/sm750fb/ddk750_dvi.c
index 87a199d6cdaf..f41bd9181757 100644
--- a/drivers/staging/sm750fb/ddk750_dvi.c
+++ b/drivers/staging/sm750fb/ddk750_dvi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define USE_DVICHIP
#ifdef USE_DVICHIP
#include "ddk750_chip.h"
diff --git a/drivers/staging/sm750fb/ddk750_dvi.h b/drivers/staging/sm750fb/ddk750_dvi.h
index 4a8394561f76..9529cb9cfd69 100644
--- a/drivers/staging/sm750fb/ddk750_dvi.h
+++ b/drivers/staging/sm750fb/ddk750_dvi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DDK750_DVI_H__
#define DDK750_DVI_H__
diff --git a/drivers/staging/sm750fb/ddk750_hwi2c.c b/drivers/staging/sm750fb/ddk750_hwi2c.c
index ec556a978a98..8482689b665b 100644
--- a/drivers/staging/sm750fb/ddk750_hwi2c.c
+++ b/drivers/staging/sm750fb/ddk750_hwi2c.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define USE_HW_I2C
#ifdef USE_HW_I2C
#include "ddk750_chip.h"
diff --git a/drivers/staging/sm750fb/ddk750_hwi2c.h b/drivers/staging/sm750fb/ddk750_hwi2c.h
index 46e22dce2570..337c6493ca61 100644
--- a/drivers/staging/sm750fb/ddk750_hwi2c.h
+++ b/drivers/staging/sm750fb/ddk750_hwi2c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DDK750_HWI2C_H__
#define DDK750_HWI2C_H__
diff --git a/drivers/staging/sm750fb/ddk750_mode.c b/drivers/staging/sm750fb/ddk750_mode.c
index bb673e18999b..2cdd87b78e58 100644
--- a/drivers/staging/sm750fb/ddk750_mode.c
+++ b/drivers/staging/sm750fb/ddk750_mode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "ddk750_reg.h"
#include "ddk750_mode.h"
diff --git a/drivers/staging/sm750fb/ddk750_mode.h b/drivers/staging/sm750fb/ddk750_mode.h
index d5eae36d85cb..259a9d6a4eb2 100644
--- a/drivers/staging/sm750fb/ddk750_mode.h
+++ b/drivers/staging/sm750fb/ddk750_mode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DDK750_MODE_H__
#define DDK750_MODE_H__
diff --git a/drivers/staging/sm750fb/ddk750_power.c b/drivers/staging/sm750fb/ddk750_power.c
index 222ae1a06feb..73aeaeb89a64 100644
--- a/drivers/staging/sm750fb/ddk750_power.c
+++ b/drivers/staging/sm750fb/ddk750_power.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "ddk750_chip.h"
#include "ddk750_reg.h"
#include "ddk750_power.h"
diff --git a/drivers/staging/sm750fb/ddk750_power.h b/drivers/staging/sm750fb/ddk750_power.h
index 44c4fc587e96..651d05247edf 100644
--- a/drivers/staging/sm750fb/ddk750_power.h
+++ b/drivers/staging/sm750fb/ddk750_power.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DDK750_POWER_H__
#define DDK750_POWER_H__
diff --git a/drivers/staging/sm750fb/ddk750_reg.h b/drivers/staging/sm750fb/ddk750_reg.h
index f9b989b7a152..fe412ead72e5 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DDK750_REG_H__
#define DDK750_REG_H__
diff --git a/drivers/staging/sm750fb/ddk750_sii164.c b/drivers/staging/sm750fb/ddk750_sii164.c
index 0431833de781..1eeaf087e891 100644
--- a/drivers/staging/sm750fb/ddk750_sii164.c
+++ b/drivers/staging/sm750fb/ddk750_sii164.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define USE_DVICHIP
#ifdef USE_DVICHIP
diff --git a/drivers/staging/sm750fb/ddk750_sii164.h b/drivers/staging/sm750fb/ddk750_sii164.h
index 6968cf532f16..af52a3121067 100644
--- a/drivers/staging/sm750fb/ddk750_sii164.h
+++ b/drivers/staging/sm750fb/ddk750_sii164.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DDK750_SII164_H__
#define DDK750_SII164_H__
diff --git a/drivers/staging/sm750fb/sm750.h b/drivers/staging/sm750fb/sm750.h
index 4386122799b2..ce90adcb449d 100644
--- a/drivers/staging/sm750fb/sm750.h
+++ b/drivers/staging/sm750fb/sm750.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LYNXDRV_H_
#define LYNXDRV_H_
diff --git a/drivers/staging/sm750fb/sm750_accel.c b/drivers/staging/sm750fb/sm750_accel.c
index 4b720cfa05de..1035e91e7cd3 100644
--- a/drivers/staging/sm750fb/sm750_accel.c
+++ b/drivers/staging/sm750fb/sm750_accel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
diff --git a/drivers/staging/sm750fb/sm750_accel.h b/drivers/staging/sm750fb/sm750_accel.h
index 4b0ff8feb9a0..c4f42002a50f 100644
--- a/drivers/staging/sm750fb/sm750_accel.h
+++ b/drivers/staging/sm750fb/sm750_accel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ACCEL_H__
#define ACCEL_H__
diff --git a/drivers/staging/sm750fb/sm750_cursor.c b/drivers/staging/sm750fb/sm750_cursor.c
index aa47a16ac75c..9d24159226d1 100644
--- a/drivers/staging/sm750fb/sm750_cursor.c
+++ b/drivers/staging/sm750fb/sm750_cursor.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
diff --git a/drivers/staging/sm750fb/sm750_cursor.h b/drivers/staging/sm750fb/sm750_cursor.h
index c7b86ae235b4..16ac07eb58d6 100644
--- a/drivers/staging/sm750fb/sm750_cursor.h
+++ b/drivers/staging/sm750fb/sm750_cursor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LYNX_CURSOR_H__
#define LYNX_CURSOR_H__
diff --git a/drivers/staging/sm750fb/sm750_hw.c b/drivers/staging/sm750fb/sm750_hw.c
index baf1bbdc92ff..ffd114a6d09b 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
diff --git a/drivers/staging/speakup/Makefile b/drivers/staging/speakup/Makefile
index c864ea69c40d..5befb4933b85 100644
--- a/drivers/staging/speakup/Makefile
+++ b/drivers/staging/speakup/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_SPEAKUP_SYNTH_ACNTSA) += speakup_acntsa.o
obj-$(CONFIG_SPEAKUP_SYNTH_ACNTPC) += speakup_acntpc.o
obj-$(CONFIG_SPEAKUP_SYNTH_APOLLO) += speakup_apollo.o
diff --git a/drivers/staging/speakup/devsynth.c b/drivers/staging/speakup/devsynth.c
index 58abd1d85105..d920256328c3 100644
--- a/drivers/staging/speakup/devsynth.c
+++ b/drivers/staging/speakup/devsynth.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/errno.h>
#include <linux/miscdevice.h> /* for misc_register, and SYNTH_MINOR */
#include <linux/types.h>
diff --git a/drivers/staging/speakup/i18n.c b/drivers/staging/speakup/i18n.c
index 7809867f5d28..cea8707653f5 100644
--- a/drivers/staging/speakup/i18n.c
+++ b/drivers/staging/speakup/i18n.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Internationalization implementation. Includes definitions of English
* string arrays, and the i18n pointer.
*/
diff --git a/drivers/staging/speakup/i18n.h b/drivers/staging/speakup/i18n.h
index 8fcce566653f..2ec6e659d02b 100644
--- a/drivers/staging/speakup/i18n.h
+++ b/drivers/staging/speakup/i18n.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef I18N_H
#define I18N_H
/* Internationalization declarations */
diff --git a/drivers/staging/speakup/main.c b/drivers/staging/speakup/main.c
index 67956e24779c..56f7be6af1f6 100644
--- a/drivers/staging/speakup/main.c
+++ b/drivers/staging/speakup/main.c
@@ -1376,6 +1376,8 @@ static void reset_highlight_buffers(struct vc_data *);
static int read_all_key;
+static int in_keyboard_notifier;
+
static void start_read_all_timer(struct vc_data *vc, int command);
enum {
@@ -1408,7 +1410,10 @@ static void read_all_doc(struct vc_data *vc)
cursor_track = read_all_mode;
spk_reset_index_count(0);
if (get_sentence_buf(vc, 0) == -1) {
- kbd_fakekey2(vc, RA_DOWN_ARROW);
+ del_timer(&cursor_timer);
+ if (!in_keyboard_notifier)
+ speakup_fake_down_arrow();
+ start_read_all_timer(vc, RA_DOWN_ARROW);
} else {
say_sentence_num(0, 0);
synth_insert_next_index(0);
@@ -2212,8 +2217,10 @@ static int keyboard_notifier_call(struct notifier_block *nb,
int ret = NOTIFY_OK;
static int keycode; /* to hold the current keycode */
+ in_keyboard_notifier = 1;
+
if (vc->vc_mode == KD_GRAPHICS)
- return ret;
+ goto out;
/*
* First, determine whether we are handling a fake keypress on
@@ -2225,7 +2232,7 @@ static int keyboard_notifier_call(struct notifier_block *nb,
*/
if (speakup_fake_key_pressed())
- return ret;
+ goto out;
switch (code) {
case KBD_KEYCODE:
@@ -2266,6 +2273,8 @@ static int keyboard_notifier_call(struct notifier_block *nb,
break;
}
}
+out:
+ in_keyboard_notifier = 0;
return ret;
}
diff --git a/drivers/staging/speakup/selection.c b/drivers/staging/speakup/selection.c
index 08f68fc2864e..66061b5c3427 100644
--- a/drivers/staging/speakup/selection.c
+++ b/drivers/staging/speakup/selection.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/slab.h> /* for kmalloc */
#include <linux/consolemap.h>
#include <linux/interrupt.h>
diff --git a/drivers/staging/speakup/serialio.h b/drivers/staging/speakup/serialio.h
index 89de6fff9cb2..aa691e4a6916 100644
--- a/drivers/staging/speakup/serialio.h
+++ b/drivers/staging/speakup/serialio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPEAKUP_SERIAL_H
#define _SPEAKUP_SERIAL_H
diff --git a/drivers/staging/speakup/speakup.h b/drivers/staging/speakup/speakup.h
index a654334c98b9..3d8bda8b9620 100644
--- a/drivers/staging/speakup/speakup.h
+++ b/drivers/staging/speakup/speakup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPEAKUP_H
#define _SPEAKUP_H
diff --git a/drivers/staging/speakup/speakup_acnt.h b/drivers/staging/speakup/speakup_acnt.h
index 107ec1155f51..cffa938ae580 100644
--- a/drivers/staging/speakup/speakup_acnt.h
+++ b/drivers/staging/speakup/speakup_acnt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* speakup_acntpc.h - header file for speakups Accent-PC driver. */
#define SYNTH_IO_EXTENT 0x02
diff --git a/drivers/staging/speakup/speakup_dtlk.h b/drivers/staging/speakup/speakup_dtlk.h
index 51ac0f2fcded..9c378b58066e 100644
--- a/drivers/staging/speakup/speakup_dtlk.h
+++ b/drivers/staging/speakup/speakup_dtlk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* speakup_dtlk.h - header file for speakups DoubleTalk driver. */
#define SYNTH_IO_EXTENT 0x02
diff --git a/drivers/staging/speakup/speakupmap.h b/drivers/staging/speakup/speakupmap.h
index f1c0dd3b2c3a..c60d7339b89a 100644
--- a/drivers/staging/speakup/speakupmap.h
+++ b/drivers/staging/speakup/speakupmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
119, 62, 6,
0, 16, 20, 17, 32, 48, 0,
2, 0, 78, 0, 0, 0, 0,
diff --git a/drivers/staging/speakup/spk_types.h b/drivers/staging/speakup/spk_types.h
index 22f657d45e46..c50de6035a9a 100644
--- a/drivers/staging/speakup/spk_types.h
+++ b/drivers/staging/speakup/spk_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SPEAKUP_TYPES_H
#define SPEAKUP_TYPES_H
diff --git a/drivers/staging/unisys/visorbus/Makefile b/drivers/staging/unisys/visorbus/Makefile
index f3730d8c953e..784cdc1f9d6a 100644
--- a/drivers/staging/unisys/visorbus/Makefile
+++ b/drivers/staging/unisys/visorbus/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Unisys visorbus
#
diff --git a/drivers/staging/unisys/visorbus/visorchipset.c b/drivers/staging/unisys/visorbus/visorchipset.c
index 74cce4f1a7bd..27ecf6fb49fd 100644
--- a/drivers/staging/unisys/visorbus/visorchipset.c
+++ b/drivers/staging/unisys/visorbus/visorchipset.c
@@ -1826,7 +1826,7 @@ static __init int visorutil_spar_detect(void)
return 0;
}
-static int init_unisys(void)
+static int __init init_unisys(void)
{
int result;
@@ -1841,7 +1841,7 @@ static int init_unisys(void)
return 0;
};
-static void exit_unisys(void)
+static void __exit exit_unisys(void)
{
acpi_bus_unregister_driver(&unisys_acpi_driver);
}
diff --git a/drivers/staging/vboxvideo/Makefile b/drivers/staging/vboxvideo/Makefile
index 2d0b3bc7ad73..3f6094aa9cdf 100644
--- a/drivers/staging/vboxvideo/Makefile
+++ b/drivers/staging/vboxvideo/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -Iinclude/drm
vboxvideo-y := hgsmi_base.o modesetting.o vbva_base.o \
diff --git a/drivers/staging/vc04_services/Makefile b/drivers/staging/vc04_services/Makefile
index e9a8e1343cbb..1ecb261e04ae 100644
--- a/drivers/staging/vc04_services/Makefile
+++ b/drivers/staging/vc04_services/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_BCM2835_VCHIQ) += vchiq.o
vchiq-objs := \
diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
index 5f3d8f2339e3..4be864dbd41c 100644
--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
@@ -390,8 +390,7 @@ static int bcm2835_audio_open_connection(struct bcm2835_alsa_stream *alsa_stream
__func__, instance);
instance->alsa_stream = alsa_stream;
alsa_stream->instance = instance;
- ret = 0; // xxx todo -1;
- goto err_free_mem;
+ return 0;
}
/* Initialize and create a VCHI connection */
@@ -401,16 +400,15 @@ static int bcm2835_audio_open_connection(struct bcm2835_alsa_stream *alsa_stream
LOG_ERR("%s: failed to initialise VCHI instance (ret=%d)\n",
__func__, ret);
- ret = -EIO;
- goto err_free_mem;
+ return -EIO;
}
ret = vchi_connect(NULL, 0, vchi_instance);
if (ret) {
LOG_ERR("%s: failed to connect VCHI instance (ret=%d)\n",
__func__, ret);
- ret = -EIO;
- goto err_free_mem;
+ kfree(vchi_instance);
+ return -EIO;
}
initted = 1;
}
@@ -421,19 +419,16 @@ static int bcm2835_audio_open_connection(struct bcm2835_alsa_stream *alsa_stream
if (IS_ERR(instance)) {
LOG_ERR("%s: failed to initialize audio service\n", __func__);
- ret = PTR_ERR(instance);
- goto err_free_mem;
+ /* vchi_instance is retained for use the next time. */
+ return PTR_ERR(instance);
}
instance->alsa_stream = alsa_stream;
alsa_stream->instance = instance;
LOG_DBG(" success !\n");
- ret = 0;
-err_free_mem:
- kfree(vchi_instance);
- return ret;
+ return 0;
}
int bcm2835_audio_open(struct bcm2835_alsa_stream *alsa_stream)
diff --git a/drivers/staging/vc04_services/bcm2835-camera/Makefile b/drivers/staging/vc04_services/bcm2835-camera/Makefile
index 8307f30517d5..2a4565e682d8 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/Makefile
+++ b/drivers/staging/vc04_services/bcm2835-camera/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
bcm2835-v4l2-$(CONFIG_VIDEO_BCM2835) := \
bcm2835-camera.o \
controls.o \
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
index 0159ca4407d8..be08849175ea 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
@@ -612,18 +612,20 @@ free_pagelist(struct vchiq_pagelist_info *pagelistinfo,
if (head_bytes > actual)
head_bytes = actual;
- memcpy((char *)page_address(pages[0]) +
+ memcpy((char *)kmap(pages[0]) +
pagelist->offset,
fragments,
head_bytes);
+ kunmap(pages[0]);
}
if ((actual >= 0) && (head_bytes < actual) &&
(tail_bytes != 0)) {
- memcpy((char *)page_address(pages[num_pages - 1]) +
+ memcpy((char *)kmap(pages[num_pages - 1]) +
((pagelist->offset + actual) &
(PAGE_SIZE - 1) & ~(g_cache_line_size - 1)),
fragments + g_cache_line_size,
tail_bytes);
+ kunmap(pages[num_pages - 1]);
}
down(&g_free_fragments_mutex);
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_genversion b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_genversion
index 9f5b6344b9b7..dd1f324a8654 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_genversion
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_genversion
@@ -1,4 +1,5 @@
#!/usr/bin/perl -w
+# SPDX-License-Identifier: GPL-2.0
use strict;
diff --git a/drivers/staging/vme/devices/vme_pio2.h b/drivers/staging/vme/devices/vme_pio2.h
index ac4a4bad4091..65f834cdeab2 100644
--- a/drivers/staging/vme/devices/vme_pio2.h
+++ b/drivers/staging/vme/devices/vme_pio2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VME_PIO2_H_
#define _VME_PIO2_H_
diff --git a/drivers/staging/vme/devices/vme_user.h b/drivers/staging/vme/devices/vme_user.h
index a6cb75686fa4..19ecb05781cc 100644
--- a/drivers/staging/vme/devices/vme_user.h
+++ b/drivers/staging/vme/devices/vme_user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VME_USER_H_
#define _VME_USER_H_
diff --git a/drivers/staging/vt6655/Makefile b/drivers/staging/vt6655/Makefile
index d55c3baade53..a151f30fc46f 100644
--- a/drivers/staging/vt6655/Makefile
+++ b/drivers/staging/vt6655/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# TODO: all of these should be removed
ccflags-y := -DLINUX -D__KERNEL__ -D__NO_VERSION__
ccflags-y += -DHOSTAP
diff --git a/drivers/staging/vt6656/Makefile b/drivers/staging/vt6656/Makefile
index 3dbe1f89dd25..b64c0d87f612 100644
--- a/drivers/staging/vt6656/Makefile
+++ b/drivers/staging/vt6656/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# TODO: all of these should be removed
ccflags-y := -DLINUX -D__KERNEL__ -DEXPORT_SYMTAB -D__NO_VERSION__
ccflags-y += -DHOSTAP
diff --git a/drivers/staging/wilc1000/Makefile b/drivers/staging/wilc1000/Makefile
index d22628314305..ee7e26b886a5 100644
--- a/drivers/staging/wilc1000/Makefile
+++ b/drivers/staging/wilc1000/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_WILC1000) += wilc1000.o
ccflags-y += -DFIRMWARE_1002=\"atmel/wilc1002_firmware.bin\" \
diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c
index 622994795222..8cf886d32afb 100644
--- a/drivers/staging/wilc1000/coreconfigurator.c
+++ b/drivers/staging/wilc1000/coreconfigurator.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "coreconfigurator.h"
#include "wilc_wlan_if.h"
#include "wilc_wlan.h"
diff --git a/drivers/staging/wilc1000/coreconfigurator.h b/drivers/staging/wilc1000/coreconfigurator.h
index 5256f40524bf..3f5da8c58815 100644
--- a/drivers/staging/wilc1000/coreconfigurator.h
+++ b/drivers/staging/wilc1000/coreconfigurator.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*!
* @file coreconfigurator.h
diff --git a/drivers/staging/wilc1000/host_interface.c b/drivers/staging/wilc1000/host_interface.c
index 7b620658ec38..421168b9a9ca 100644
--- a/drivers/staging/wilc1000/host_interface.c
+++ b/drivers/staging/wilc1000/host_interface.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/slab.h>
#include <linux/time.h>
#include <linux/kthread.h>
diff --git a/drivers/staging/wilc1000/host_interface.h b/drivers/staging/wilc1000/host_interface.h
index 1ce5ead318c7..44a2f4b595c5 100644
--- a/drivers/staging/wilc1000/host_interface.h
+++ b/drivers/staging/wilc1000/host_interface.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef HOST_INT_H
#define HOST_INT_H
#include <linux/ieee80211.h>
diff --git a/drivers/staging/wilc1000/linux_mon.c b/drivers/staging/wilc1000/linux_mon.c
index 01efa80b4f88..91d49c4738dc 100644
--- a/drivers/staging/wilc1000/linux_mon.c
+++ b/drivers/staging/wilc1000/linux_mon.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*!
* @file linux_mon.c
* @brief File Operations OS wrapper functionality
diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
index ac5aaafa461c..af12925a9d2b 100644
--- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
+++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "wilc_wfi_cfgoperations.h"
#include "host_interface.h"
#include <linux/errno.h>
diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.h b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.h
index 85a3810d7bb5..dfb7ec272935 100644
--- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.h
+++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*!
* @file wilc_wfi_cfgoperations.h
* @brief Definitions for the network module
diff --git a/drivers/staging/wilc1000/wilc_wfi_netdevice.h b/drivers/staging/wilc1000/wilc_wfi_netdevice.h
index 7a36561a599e..e6f4d84971c3 100644
--- a/drivers/staging/wilc1000/wilc_wfi_netdevice.h
+++ b/drivers/staging/wilc1000/wilc_wfi_netdevice.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*!
* @file wilc_wfi_netdevice.h
* @brief Definitions for the network module
diff --git a/drivers/staging/wilc1000/wilc_wlan.h b/drivers/staging/wilc1000/wilc_wlan.h
index 7a5eba9b5f47..da7173105497 100644
--- a/drivers/staging/wilc1000/wilc_wlan.h
+++ b/drivers/staging/wilc1000/wilc_wlan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef WILC_WLAN_H
#define WILC_WLAN_H
diff --git a/drivers/staging/wilc1000/wilc_wlan_cfg.c b/drivers/staging/wilc1000/wilc_wlan_cfg.c
index d3e5b1b302f4..19e4f85fdd27 100644
--- a/drivers/staging/wilc1000/wilc_wlan_cfg.c
+++ b/drivers/staging/wilc1000/wilc_wlan_cfg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* ////////////////////////////////////////////////////////////////////////// */
/* */
/* Copyright (c) Atmel Corporation. All rights reserved. */
diff --git a/drivers/staging/wilc1000/wilc_wlan_cfg.h b/drivers/staging/wilc1000/wilc_wlan_cfg.h
index b8641a273547..08092a551840 100644
--- a/drivers/staging/wilc1000/wilc_wlan_cfg.h
+++ b/drivers/staging/wilc1000/wilc_wlan_cfg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ////////////////////////////////////////////////////////////////////////// */
/* */
/* Copyright (c) Atmel Corporation. All rights reserved. */
diff --git a/drivers/staging/wilc1000/wilc_wlan_if.h b/drivers/staging/wilc1000/wilc_wlan_if.h
index f4d60057a06e..c1693cfc076d 100644
--- a/drivers/staging/wilc1000/wilc_wlan_if.h
+++ b/drivers/staging/wilc1000/wilc_wlan_if.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* ///////////////////////////////////////////////////////////////////////// */
/* */
/* Copyright (c) Atmel Corporation. All rights reserved. */
diff --git a/drivers/staging/wlan-ng/Makefile b/drivers/staging/wlan-ng/Makefile
index 32b69f238c69..1d24b0f86eee 100644
--- a/drivers/staging/wlan-ng/Makefile
+++ b/drivers/staging/wlan-ng/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PRISM2_USB) += prism2_usb.o
prism2_usb-y := prism2usb.o \
diff --git a/drivers/staging/wlan-ng/cfg80211.c b/drivers/staging/wlan-ng/cfg80211.c
index 178f6f5d4613..42912257e2b9 100644
--- a/drivers/staging/wlan-ng/cfg80211.c
+++ b/drivers/staging/wlan-ng/cfg80211.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* cfg80211 Interface for prism2_usb module */
#include "hfa384x.h"
#include "prism2mgmt.h"
diff --git a/drivers/staging/wlan-ng/prism2usb.c b/drivers/staging/wlan-ng/prism2usb.c
index bfb6b0a6528d..b5ba176004c1 100644
--- a/drivers/staging/wlan-ng/prism2usb.c
+++ b/drivers/staging/wlan-ng/prism2usb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "hfa384x_usb.c"
#include "prism2mgmt.c"
#include "prism2mib.c"
diff --git a/drivers/staging/xgifb/XGI_main.h b/drivers/staging/xgifb/XGI_main.h
index 7a80a90f229f..a3af1cbbf8ee 100644
--- a/drivers/staging/xgifb/XGI_main.h
+++ b/drivers/staging/xgifb/XGI_main.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XGIFB_MAIN
#define _XGIFB_MAIN
/* ------------------- Constant Definitions ------------------------- */
diff --git a/drivers/staging/xgifb/XGIfb.h b/drivers/staging/xgifb/XGIfb.h
index af50362395d5..982c676c16c6 100644
--- a/drivers/staging/xgifb/XGIfb.h
+++ b/drivers/staging/xgifb/XGIfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_XGIFB
#define _LINUX_XGIFB
#include "vgatypes.h"
diff --git a/drivers/staging/xgifb/vb_def.h b/drivers/staging/xgifb/vb_def.h
index 94e2e3c7c264..0311e2682d27 100644
--- a/drivers/staging/xgifb/vb_def.h
+++ b/drivers/staging/xgifb/vb_def.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VB_DEF_
#define _VB_DEF_
#include "../../video/fbdev/sis/initdef.h"
diff --git a/drivers/staging/xgifb/vb_init.c b/drivers/staging/xgifb/vb_init.c
index 591a3c9babf5..ac1c815a3c5e 100644
--- a/drivers/staging/xgifb/vb_init.c
+++ b/drivers/staging/xgifb/vb_init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/delay.h>
#include <linux/vmalloc.h>
diff --git a/drivers/staging/xgifb/vb_init.h b/drivers/staging/xgifb/vb_init.h
index e835054b87bf..2f8a70133ebd 100644
--- a/drivers/staging/xgifb/vb_init.h
+++ b/drivers/staging/xgifb/vb_init.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VBINIT_
#define _VBINIT_
unsigned char XGIInitNew(struct pci_dev *pdev);
diff --git a/drivers/staging/xgifb/vb_setmode.c b/drivers/staging/xgifb/vb_setmode.c
index cea128bede52..da07ca57bb40 100644
--- a/drivers/staging/xgifb/vb_setmode.c
+++ b/drivers/staging/xgifb/vb_setmode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/delay.h>
#include "XGIfb.h"
diff --git a/drivers/staging/xgifb/vb_setmode.h b/drivers/staging/xgifb/vb_setmode.h
index c6317ab00474..5904ed1f2686 100644
--- a/drivers/staging/xgifb/vb_setmode.h
+++ b/drivers/staging/xgifb/vb_setmode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VBSETMODE_
#define _VBSETMODE_
diff --git a/drivers/staging/xgifb/vb_struct.h b/drivers/staging/xgifb/vb_struct.h
index 2fd1a5935e1d..e256f72f6d8a 100644
--- a/drivers/staging/xgifb/vb_struct.h
+++ b/drivers/staging/xgifb/vb_struct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VB_STRUCT_
#define _VB_STRUCT_
#include "../../video/fbdev/sis/vstruct.h"
diff --git a/drivers/staging/xgifb/vb_table.h b/drivers/staging/xgifb/vb_table.h
index 31dd52c513df..0da63e1da32f 100644
--- a/drivers/staging/xgifb/vb_table.h
+++ b/drivers/staging/xgifb/vb_table.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VB_TABLE_
#define _VB_TABLE_
static const struct SiS_MCLKData XGI340New_MCLKData[] = {
diff --git a/drivers/staging/xgifb/vb_util.h b/drivers/staging/xgifb/vb_util.h
index 052694e75053..0f6d5aac04f6 100644
--- a/drivers/staging/xgifb/vb_util.h
+++ b/drivers/staging/xgifb/vb_util.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VBUTIL_
#define _VBUTIL_
static inline void xgifb_reg_set(unsigned long port, u8 index, u8 data)
diff --git a/drivers/staging/xgifb/vgatypes.h b/drivers/staging/xgifb/vgatypes.h
index de80e5c108dc..22919f2368d5 100644
--- a/drivers/staging/xgifb/vgatypes.h
+++ b/drivers/staging/xgifb/vgatypes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VGATYPES_
#define _VGATYPES_
diff --git a/drivers/target/Makefile b/drivers/target/Makefile
index e619c0266a79..45634747377e 100644
--- a/drivers/target/Makefile
+++ b/drivers/target/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
target_core_mod-y := target_core_configfs.o \
target_core_device.o \
diff --git a/drivers/target/iscsi/Makefile b/drivers/target/iscsi/Makefile
index 0f18295e05bc..8c9ae96b760d 100644
--- a/drivers/target/iscsi/Makefile
+++ b/drivers/target/iscsi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
iscsi_target_mod-y += iscsi_target_parameters.o \
iscsi_target_seq_pdu_list.o \
iscsi_target_auth.o \
diff --git a/drivers/target/iscsi/cxgbit/Makefile b/drivers/target/iscsi/cxgbit/Makefile
index 4893ec29b6b3..d16aaae7ba2a 100644
--- a/drivers/target/iscsi/cxgbit/Makefile
+++ b/drivers/target/iscsi/cxgbit/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -Idrivers/net/ethernet/chelsio/cxgb4
ccflags-y += -Idrivers/net/ethernet/chelsio/libcxgb
ccflags-y += -Idrivers/target/iscsi
diff --git a/drivers/target/iscsi/iscsi_target.h b/drivers/target/iscsi/iscsi_target.h
index e0db2ceb0f87..42de1843aa40 100644
--- a/drivers/target/iscsi/iscsi_target.h
+++ b/drivers/target/iscsi/iscsi_target.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_H
#define ISCSI_TARGET_H
diff --git a/drivers/target/iscsi/iscsi_target_auth.h b/drivers/target/iscsi/iscsi_target_auth.h
index 1b91c13cc965..d5600ac30b53 100644
--- a/drivers/target/iscsi/iscsi_target_auth.h
+++ b/drivers/target/iscsi/iscsi_target_auth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ISCSI_CHAP_H_
#define _ISCSI_CHAP_H_
diff --git a/drivers/target/iscsi/iscsi_target_datain_values.h b/drivers/target/iscsi/iscsi_target_datain_values.h
index 16edeeeb7777..a420fbd37969 100644
--- a/drivers/target/iscsi/iscsi_target_datain_values.h
+++ b/drivers/target/iscsi/iscsi_target_datain_values.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_DATAIN_VALUES_H
#define ISCSI_TARGET_DATAIN_VALUES_H
diff --git a/drivers/target/iscsi/iscsi_target_device.h b/drivers/target/iscsi/iscsi_target_device.h
index 06dbff5cd520..ab2166f17785 100644
--- a/drivers/target/iscsi/iscsi_target_device.h
+++ b/drivers/target/iscsi/iscsi_target_device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_DEVICE_H
#define ISCSI_TARGET_DEVICE_H
diff --git a/drivers/target/iscsi/iscsi_target_erl0.h b/drivers/target/iscsi/iscsi_target_erl0.h
index 3822d9cd1230..3393407bc4e4 100644
--- a/drivers/target/iscsi/iscsi_target_erl0.h
+++ b/drivers/target/iscsi/iscsi_target_erl0.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_ERL0_H
#define ISCSI_TARGET_ERL0_H
diff --git a/drivers/target/iscsi/iscsi_target_erl1.h b/drivers/target/iscsi/iscsi_target_erl1.h
index 54d36bd25bea..5f66b265b25b 100644
--- a/drivers/target/iscsi/iscsi_target_erl1.h
+++ b/drivers/target/iscsi/iscsi_target_erl1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_ERL1_H
#define ISCSI_TARGET_ERL1_H
diff --git a/drivers/target/iscsi/iscsi_target_erl2.h b/drivers/target/iscsi/iscsi_target_erl2.h
index 634d01e13652..93e180d68d07 100644
--- a/drivers/target/iscsi/iscsi_target_erl2.h
+++ b/drivers/target/iscsi/iscsi_target_erl2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_ERL2_H
#define ISCSI_TARGET_ERL2_H
diff --git a/drivers/target/iscsi/iscsi_target_login.h b/drivers/target/iscsi/iscsi_target_login.h
index 0e1fd6cedd54..c2495e03625c 100644
--- a/drivers/target/iscsi/iscsi_target_login.h
+++ b/drivers/target/iscsi/iscsi_target_login.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_LOGIN_H
#define ISCSI_TARGET_LOGIN_H
diff --git a/drivers/target/iscsi/iscsi_target_nego.h b/drivers/target/iscsi/iscsi_target_nego.h
index 53438bfca4c6..835e1b769b3f 100644
--- a/drivers/target/iscsi/iscsi_target_nego.h
+++ b/drivers/target/iscsi/iscsi_target_nego.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_NEGO_H
#define ISCSI_TARGET_NEGO_H
diff --git a/drivers/target/iscsi/iscsi_target_nodeattrib.h b/drivers/target/iscsi/iscsi_target_nodeattrib.h
index 79cdf06ade48..ce074cb54579 100644
--- a/drivers/target/iscsi/iscsi_target_nodeattrib.h
+++ b/drivers/target/iscsi/iscsi_target_nodeattrib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_NODEATTRIB_H
#define ISCSI_TARGET_NODEATTRIB_H
diff --git a/drivers/target/iscsi/iscsi_target_parameters.h b/drivers/target/iscsi/iscsi_target_parameters.h
index c47b73f57528..daf47f38e081 100644
--- a/drivers/target/iscsi/iscsi_target_parameters.h
+++ b/drivers/target/iscsi/iscsi_target_parameters.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_PARAMETERS_H
#define ISCSI_PARAMETERS_H
diff --git a/drivers/target/iscsi/iscsi_target_seq_pdu_list.h b/drivers/target/iscsi/iscsi_target_seq_pdu_list.h
index be1234362271..5a0907027973 100644
--- a/drivers/target/iscsi/iscsi_target_seq_pdu_list.h
+++ b/drivers/target/iscsi/iscsi_target_seq_pdu_list.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_SEQ_AND_PDU_LIST_H
#define ISCSI_SEQ_AND_PDU_LIST_H
diff --git a/drivers/target/iscsi/iscsi_target_tmr.h b/drivers/target/iscsi/iscsi_target_tmr.h
index 64cc5c07e47c..301f0936bd8e 100644
--- a/drivers/target/iscsi/iscsi_target_tmr.h
+++ b/drivers/target/iscsi/iscsi_target_tmr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_TMR_H
#define ISCSI_TARGET_TMR_H
diff --git a/drivers/target/iscsi/iscsi_target_tpg.h b/drivers/target/iscsi/iscsi_target_tpg.h
index 59fd3cabe89d..88576f5d0ca4 100644
--- a/drivers/target/iscsi/iscsi_target_tpg.h
+++ b/drivers/target/iscsi/iscsi_target_tpg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_TPG_H
#define ISCSI_TARGET_TPG_H
diff --git a/drivers/target/iscsi/iscsi_target_transport.c b/drivers/target/iscsi/iscsi_target_transport.c
index c4eb141c6435..036940518bfe 100644
--- a/drivers/target/iscsi/iscsi_target_transport.c
+++ b/drivers/target/iscsi/iscsi_target_transport.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/spinlock.h>
#include <linux/list.h>
#include <linux/module.h>
diff --git a/drivers/target/iscsi/iscsi_target_util.h b/drivers/target/iscsi/iscsi_target_util.h
index 425160565d0c..5e053d61c0c5 100644
--- a/drivers/target/iscsi/iscsi_target_util.h
+++ b/drivers/target/iscsi/iscsi_target_util.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_UTIL_H
#define ISCSI_TARGET_UTIL_H
diff --git a/drivers/target/loopback/tcm_loop.h b/drivers/target/loopback/tcm_loop.h
index 3acc43c05117..d3110909a213 100644
--- a/drivers/target/loopback/tcm_loop.h
+++ b/drivers/target/loopback/tcm_loop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/types.h>
#include <linux/device.h>
#include <target/target_core_base.h> /* struct se_cmd */
diff --git a/drivers/target/sbp/sbp_target.h b/drivers/target/sbp/sbp_target.h
index 73bcb1208832..1d101ac86527 100644
--- a/drivers/target/sbp/sbp_target.h
+++ b/drivers/target/sbp/sbp_target.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SBP_BASE_H
#define _SBP_BASE_H
diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
index a91b7c25ffd4..928127642574 100644
--- a/drivers/target/target_core_alua.c
+++ b/drivers/target/target_core_alua.c
@@ -896,13 +896,14 @@ static int core_alua_write_tpg_metadata(
u32 md_buf_len)
{
struct file *file = filp_open(path, O_RDWR | O_CREAT | O_TRUNC, 0600);
+ loff_t pos = 0;
int ret;
if (IS_ERR(file)) {
pr_err("filp_open(%s) for ALUA metadata failed\n", path);
return -ENODEV;
}
- ret = kernel_write(file, md_buf, md_buf_len, 0);
+ ret = kernel_write(file, md_buf, md_buf_len, &pos);
if (ret < 0)
pr_err("Error writing ALUA metadata file: %s\n", path);
fput(file);
diff --git a/drivers/target/target_core_alua.h b/drivers/target/target_core_alua.h
index c69c11baf07f..1902cb5c3b52 100644
--- a/drivers/target/target_core_alua.h
+++ b/drivers/target/target_core_alua.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_ALUA_H
#define TARGET_CORE_ALUA_H
diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c
index 24cf11d9e50a..c629817a8854 100644
--- a/drivers/target/target_core_file.c
+++ b/drivers/target/target_core_file.c
@@ -443,7 +443,7 @@ fd_do_prot_fill(struct se_device *se_dev, sector_t lba, sector_t nolb,
for (prot = 0; prot < prot_length;) {
sector_t len = min_t(sector_t, bufsize, prot_length - prot);
- ssize_t ret = kernel_write(prot_fd, buf, len, pos + prot);
+ ssize_t ret = kernel_write(prot_fd, buf, len, &pos);
if (ret != len) {
pr_err("vfs_write to prot file failed: %zd\n", ret);
diff --git a/drivers/target/target_core_file.h b/drivers/target/target_core_file.h
index 526595a072de..53be5ffd3261 100644
--- a/drivers/target/target_core_file.h
+++ b/drivers/target/target_core_file.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_FILE_H
#define TARGET_CORE_FILE_H
diff --git a/drivers/target/target_core_iblock.h b/drivers/target/target_core_iblock.h
index f2a5797217d4..b4aeb2584ad4 100644
--- a/drivers/target/target_core_iblock.h
+++ b/drivers/target/target_core_iblock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_IBLOCK_H
#define TARGET_CORE_IBLOCK_H
diff --git a/drivers/target/target_core_internal.h b/drivers/target/target_core_internal.h
index f30e8ac13386..18e3eb16e756 100644
--- a/drivers/target/target_core_internal.h
+++ b/drivers/target/target_core_internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_INTERNAL_H
#define TARGET_CORE_INTERNAL_H
diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
index 6d5def64db61..dd2cd8048582 100644
--- a/drivers/target/target_core_pr.c
+++ b/drivers/target/target_core_pr.c
@@ -1974,6 +1974,7 @@ static int __core_scsi3_write_aptpl_to_file(
char path[512];
u32 pr_aptpl_buf_len;
int ret;
+ loff_t pos = 0;
memset(path, 0, 512);
@@ -1993,7 +1994,7 @@ static int __core_scsi3_write_aptpl_to_file(
pr_aptpl_buf_len = (strlen(buf) + 1); /* Add extra for NULL */
- ret = kernel_write(file, buf, pr_aptpl_buf_len, 0);
+ ret = kernel_write(file, buf, pr_aptpl_buf_len, &pos);
if (ret < 0)
pr_debug("Error writing APTPL metadata file: %s\n", path);
diff --git a/drivers/target/target_core_pr.h b/drivers/target/target_core_pr.h
index 772f9148e75c..198fad5c89dc 100644
--- a/drivers/target/target_core_pr.h
+++ b/drivers/target/target_core_pr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_PR_H
#define TARGET_CORE_PR_H
diff --git a/drivers/target/target_core_pscsi.h b/drivers/target/target_core_pscsi.h
index b86fb0e1b783..e8458b5e85c9 100644
--- a/drivers/target/target_core_pscsi.h
+++ b/drivers/target/target_core_pscsi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_PSCSI_H
#define TARGET_CORE_PSCSI_H
diff --git a/drivers/target/target_core_rd.h b/drivers/target/target_core_rd.h
index 91fc1a34791d..8b88f9b14c3f 100644
--- a/drivers/target/target_core_rd.h
+++ b/drivers/target/target_core_rd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_RD_H
#define TARGET_CORE_RD_H
diff --git a/drivers/target/target_core_ua.h b/drivers/target/target_core_ua.h
index 97402856a8f0..b0f4205a96cd 100644
--- a/drivers/target/target_core_ua.h
+++ b/drivers/target/target_core_ua.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_UA_H
#define TARGET_CORE_UA_H
diff --git a/drivers/target/target_core_xcopy.h b/drivers/target/target_core_xcopy.h
index 7c0b105cbe1b..26ba4c3c9cff 100644
--- a/drivers/target/target_core_xcopy.h
+++ b/drivers/target/target_core_xcopy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <target/target_core_base.h>
#define XCOPY_HDR_LEN 16
diff --git a/drivers/target/tcm_fc/Makefile b/drivers/target/tcm_fc/Makefile
index 20b14bb087c9..a7d1593ab5af 100644
--- a/drivers/target/tcm_fc/Makefile
+++ b/drivers/target/tcm_fc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
tcm_fc-y += tfc_cmd.o \
tfc_conf.o \
tfc_io.o \
diff --git a/drivers/tee/Makefile b/drivers/tee/Makefile
index 7a4e4a1ac39c..21f51fd88b07 100644
--- a/drivers/tee/Makefile
+++ b/drivers/tee/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_TEE) += tee.o
tee-objs += tee_core.o
tee-objs += tee_shm.o
diff --git a/drivers/tee/optee/Makefile b/drivers/tee/optee/Makefile
index 92fe5789bcce..d526fb88d9c5 100644
--- a/drivers/tee/optee/Makefile
+++ b/drivers/tee/optee/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OPTEE) += optee.o
optee-objs += core.o
optee-objs += call.o
diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
index 8b79bca23536..195cd08fbc30 100644
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for sensor chip drivers.
#
diff --git a/drivers/thermal/int340x_thermal/Makefile b/drivers/thermal/int340x_thermal/Makefile
index df0df055e7ff..287eb0a1476d 100644
--- a/drivers/thermal/int340x_thermal/Makefile
+++ b/drivers/thermal/int340x_thermal/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_INT340X_THERMAL) += int3400_thermal.o
obj-$(CONFIG_INT340X_THERMAL) += int340x_thermal_zone.o
obj-$(CONFIG_INT340X_THERMAL) += int3402_thermal.o
diff --git a/drivers/thermal/int340x_thermal/acpi_thermal_rel.h b/drivers/thermal/int340x_thermal/acpi_thermal_rel.h
index 65075b174329..58822575fd54 100644
--- a/drivers/thermal/int340x_thermal/acpi_thermal_rel.h
+++ b/drivers/thermal/int340x_thermal/acpi_thermal_rel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ACPI_ACPI_THERMAL_H
#define __ACPI_ACPI_THERMAL_H
diff --git a/drivers/thermal/tegra/Makefile b/drivers/thermal/tegra/Makefile
index 1ce1af2cf0f5..8a3f221f17c1 100644
--- a/drivers/thermal/tegra/Makefile
+++ b/drivers/thermal/tegra/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_TEGRA_SOCTHERM) += tegra-soctherm.o
tegra-soctherm-y := soctherm.o soctherm-fuse.o
diff --git a/drivers/thermal/ti-soc-thermal/Makefile b/drivers/thermal/ti-soc-thermal/Makefile
index 0f89bdf03790..f180ebead858 100644
--- a/drivers/thermal/ti-soc-thermal/Makefile
+++ b/drivers/thermal/ti-soc-thermal/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_TI_SOC_THERMAL) += ti-soc-thermal.o
ti-soc-thermal-y := ti-bandgap.o
ti-soc-thermal-$(CONFIG_TI_THERMAL) += ti-thermal-common.o
diff --git a/drivers/thunderbolt/cap.c b/drivers/thunderbolt/cap.c
index 38bc27a5ce4f..c2277b8ee88d 100644
--- a/drivers/thunderbolt/cap.c
+++ b/drivers/thunderbolt/cap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Thunderbolt Cactus Ridge driver - capabilities lookup
*
diff --git a/drivers/thunderbolt/ctl.c b/drivers/thunderbolt/ctl.c
index fb40dd0588b9..423ae231fc6c 100644
--- a/drivers/thunderbolt/ctl.c
+++ b/drivers/thunderbolt/ctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Thunderbolt Cactus Ridge driver - control channel and configuration commands
*
diff --git a/drivers/thunderbolt/ctl.h b/drivers/thunderbolt/ctl.h
index 36fd28b1c1c5..dd34f627ce49 100644
--- a/drivers/thunderbolt/ctl.h
+++ b/drivers/thunderbolt/ctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Thunderbolt Cactus Ridge driver - control channel and configuration commands
*
diff --git a/drivers/thunderbolt/eeprom.c b/drivers/thunderbolt/eeprom.c
index fe2f00ceafc5..3e8caf22c294 100644
--- a/drivers/thunderbolt/eeprom.c
+++ b/drivers/thunderbolt/eeprom.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Thunderbolt Cactus Ridge driver - eeprom access
*
diff --git a/drivers/thunderbolt/nhi.h b/drivers/thunderbolt/nhi.h
index 5b5bb2c436be..1c7e6b92e235 100644
--- a/drivers/thunderbolt/nhi.h
+++ b/drivers/thunderbolt/nhi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Thunderbolt Cactus Ridge driver - NHI driver
*
diff --git a/drivers/thunderbolt/nhi_regs.h b/drivers/thunderbolt/nhi_regs.h
index 09ed574e92ff..752ec04305f3 100644
--- a/drivers/thunderbolt/nhi_regs.h
+++ b/drivers/thunderbolt/nhi_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Thunderbolt driver - NHI registers
*
diff --git a/drivers/thunderbolt/path.c b/drivers/thunderbolt/path.c
index 9562cd026dc0..ff49ad880bfd 100644
--- a/drivers/thunderbolt/path.c
+++ b/drivers/thunderbolt/path.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Thunderbolt Cactus Ridge driver - path/tunnel functionality
*
diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c
index 53f40c57df59..3953d17202a8 100644
--- a/drivers/thunderbolt/switch.c
+++ b/drivers/thunderbolt/switch.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Thunderbolt Cactus Ridge driver - switch/port utility functions
*
diff --git a/drivers/thunderbolt/tb.c b/drivers/thunderbolt/tb.c
index 0b22ad9d68b4..d674e06767a5 100644
--- a/drivers/thunderbolt/tb.c
+++ b/drivers/thunderbolt/tb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Thunderbolt Cactus Ridge driver - bus logic (NHI independent)
*
diff --git a/drivers/thunderbolt/tb.h b/drivers/thunderbolt/tb.h
index e0deee4f1eb0..d7ffc159bcf7 100644
--- a/drivers/thunderbolt/tb.h
+++ b/drivers/thunderbolt/tb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Thunderbolt Cactus Ridge driver - bus logic (NHI independent)
*
diff --git a/drivers/thunderbolt/tb_regs.h b/drivers/thunderbolt/tb_regs.h
index 582bd1f156dc..5d94142afda6 100644
--- a/drivers/thunderbolt/tb_regs.h
+++ b/drivers/thunderbolt/tb_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Thunderbolt Cactus Ridge driver - Port/Switch config area registers
*
diff --git a/drivers/thunderbolt/tunnel_pci.c b/drivers/thunderbolt/tunnel_pci.c
index ca4475907d7a..0637537ea53f 100644
--- a/drivers/thunderbolt/tunnel_pci.c
+++ b/drivers/thunderbolt/tunnel_pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Thunderbolt Cactus Ridge driver - PCIe tunnel
*
diff --git a/drivers/thunderbolt/tunnel_pci.h b/drivers/thunderbolt/tunnel_pci.h
index a67f93c140fa..f9b65fa1fd4d 100644
--- a/drivers/thunderbolt/tunnel_pci.h
+++ b/drivers/thunderbolt/tunnel_pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Thunderbolt Cactus Ridge driver - PCIe tunnel
*
diff --git a/drivers/tty/Makefile b/drivers/tty/Makefile
index 16330a819685..8ce3a8661b31 100644
--- a/drivers/tty/Makefile
+++ b/drivers/tty/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_TTY) += tty_io.o n_tty.o tty_ioctl.o tty_ldisc.o \
tty_buffer.o tty_port.o tty_mutex.o \
tty_ldsem.o tty_baudrate.o tty_jobctrl.o \
diff --git a/drivers/tty/hvc/Makefile b/drivers/tty/hvc/Makefile
index 6a2702be76d1..0b02ec7f1dfd 100644
--- a/drivers/tty/hvc/Makefile
+++ b/drivers/tty/hvc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_HVC_CONSOLE) += hvc_vio.o hvsi_lib.o
obj-$(CONFIG_HVC_OPAL) += hvc_opal.o hvsi_lib.o
obj-$(CONFIG_HVC_OLD_HVSI) += hvsi.o
diff --git a/drivers/tty/hvc/hvc_irq.c b/drivers/tty/hvc/hvc_irq.c
index bc7a96874637..4b255dfef2cc 100644
--- a/drivers/tty/hvc/hvc_irq.c
+++ b/drivers/tty/hvc/hvc_irq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright IBM Corp. 2001,2008
*
diff --git a/drivers/tty/hvc/hvc_iucv.c b/drivers/tty/hvc/hvc_iucv.c
index 8b70a1627356..a74680729825 100644
--- a/drivers/tty/hvc/hvc_iucv.c
+++ b/drivers/tty/hvc/hvc_iucv.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* z/VM IUCV hypervisor console (HVC) device driver
*
diff --git a/drivers/tty/hvc/hvsi_lib.c b/drivers/tty/hvc/hvsi_lib.c
index a270f04588d7..09289c8154ae 100644
--- a/drivers/tty/hvc/hvsi_lib.c
+++ b/drivers/tty/hvc/hvsi_lib.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/types.h>
#include <linux/delay.h>
#include <linux/slab.h>
diff --git a/drivers/tty/ipwireless/hardware.c b/drivers/tty/ipwireless/hardware.c
index df0204b6148f..a6b8240af6cd 100644
--- a/drivers/tty/ipwireless/hardware.c
+++ b/drivers/tty/ipwireless/hardware.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IPWireless 3G PCMCIA Network Driver
*
diff --git a/drivers/tty/ipwireless/hardware.h b/drivers/tty/ipwireless/hardware.h
index 90a8590e43b0..e524a8fcc2ad 100644
--- a/drivers/tty/ipwireless/hardware.h
+++ b/drivers/tty/ipwireless/hardware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IPWireless 3G PCMCIA Network Driver
*
diff --git a/drivers/tty/ipwireless/main.h b/drivers/tty/ipwireless/main.h
index f2cbb116bccb..73818bb64416 100644
--- a/drivers/tty/ipwireless/main.h
+++ b/drivers/tty/ipwireless/main.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IPWireless 3G PCMCIA Network Driver
*
diff --git a/drivers/tty/ipwireless/network.c b/drivers/tty/ipwireless/network.c
index c2f9a3263b37..695439c03147 100644
--- a/drivers/tty/ipwireless/network.c
+++ b/drivers/tty/ipwireless/network.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IPWireless 3G PCMCIA Network Driver
*
diff --git a/drivers/tty/ipwireless/network.h b/drivers/tty/ipwireless/network.h
index 561f765b3334..784932a59a73 100644
--- a/drivers/tty/ipwireless/network.h
+++ b/drivers/tty/ipwireless/network.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IPWireless 3G PCMCIA Network Driver
*
diff --git a/drivers/tty/ipwireless/setup_protocol.h b/drivers/tty/ipwireless/setup_protocol.h
index 002c34e72521..d4a7ae257ca5 100644
--- a/drivers/tty/ipwireless/setup_protocol.h
+++ b/drivers/tty/ipwireless/setup_protocol.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IPWireless 3G PCMCIA Network Driver
*
diff --git a/drivers/tty/ipwireless/tty.c b/drivers/tty/ipwireless/tty.c
index 2685d59d2724..1ef751c27ac6 100644
--- a/drivers/tty/ipwireless/tty.c
+++ b/drivers/tty/ipwireless/tty.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* IPWireless 3G PCMCIA Network Driver
*
diff --git a/drivers/tty/ipwireless/tty.h b/drivers/tty/ipwireless/tty.h
index 747b2d637860..ec698d9f338b 100644
--- a/drivers/tty/ipwireless/tty.h
+++ b/drivers/tty/ipwireless/tty.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IPWireless 3G PCMCIA Network Driver
*
diff --git a/drivers/tty/moxa.h b/drivers/tty/moxa.h
index 87d16ce57be7..8ce89fd36c7b 100644
--- a/drivers/tty/moxa.h
+++ b/drivers/tty/moxa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef MOXA_H_FILE
#define MOXA_H_FILE
diff --git a/drivers/tty/mxser.c b/drivers/tty/mxser.c
index 1c0c9553bc05..7dd38047ba23 100644
--- a/drivers/tty/mxser.c
+++ b/drivers/tty/mxser.c
@@ -246,11 +246,11 @@ struct mxser_port {
unsigned char err_shadow;
struct async_icount icount; /* kernel counters for 4 input interrupts */
- int timeout;
+ unsigned int timeout;
int read_status_mask;
int ignore_status_mask;
- int xmit_fifo_size;
+ unsigned int xmit_fifo_size;
int xmit_head;
int xmit_tail;
int xmit_cnt;
@@ -572,8 +572,9 @@ static void mxser_dtr_rts(struct tty_port *port, int on)
static int mxser_set_baud(struct tty_struct *tty, long newspd)
{
struct mxser_port *info = tty->driver_data;
- int quot = 0, baud;
+ unsigned int quot = 0, baud;
unsigned char cval;
+ u64 timeout;
if (!info->ioaddr)
return -1;
@@ -594,8 +595,13 @@ static int mxser_set_baud(struct tty_struct *tty, long newspd)
quot = 0;
}
- info->timeout = ((info->xmit_fifo_size * HZ * 10 * quot) / info->baud_base);
- info->timeout += HZ / 50; /* Add .02 seconds of slop */
+ /*
+ * worst case (128 * 1000 * 10 * 18432) needs 35 bits, so divide in the
+ * u64 domain
+ */
+ timeout = (u64)info->xmit_fifo_size * HZ * 10 * quot;
+ do_div(timeout, info->baud_base);
+ info->timeout = timeout + HZ / 50; /* Add .02 seconds of slop */
if (quot) {
info->MCR |= UART_MCR_DTR;
diff --git a/drivers/tty/mxser.h b/drivers/tty/mxser.h
index 0bf794313ffd..e6cb15626567 100644
--- a/drivers/tty/mxser.h
+++ b/drivers/tty/mxser.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MXSER_H
#define _MXSER_H
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
index 26dcb3b60fb9..64338442050e 100644
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1991, 1992 Linus Torvalds
*
diff --git a/drivers/tty/rocket.h b/drivers/tty/rocket.h
index c11a9392f219..d0560203f215 100644
--- a/drivers/tty/rocket.h
+++ b/drivers/tty/rocket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* rocket.h --- the exported interface of the rocket driver to its configuration program.
*
diff --git a/drivers/tty/rocket_int.h b/drivers/tty/rocket_int.h
index ef1e1be6b26d..727e50dbb92f 100644
--- a/drivers/tty/rocket_int.h
+++ b/drivers/tty/rocket_int.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* rocket_int.h --- internal header file for rocket.c
*
diff --git a/drivers/tty/serial/8250/Makefile b/drivers/tty/serial/8250/Makefile
index 6a18d2d768fe..18751bc63a84 100644
--- a/drivers/tty/serial/8250/Makefile
+++ b/drivers/tty/serial/8250/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the 8250 serial device drivers.
#
diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile
index fe88a75d9a59..842d185d697e 100644
--- a/drivers/tty/serial/Makefile
+++ b/drivers/tty/serial/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel serial device drivers.
#
diff --git a/drivers/tty/serial/amba-pl011.h b/drivers/tty/serial/amba-pl011.h
index 411c60e1f9a4..077eb12a3472 100644
--- a/drivers/tty/serial/amba-pl011.h
+++ b/drivers/tty/serial/amba-pl011.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef AMBA_PL011_H
#define AMBA_PL011_H
diff --git a/drivers/tty/serial/apbuart.h b/drivers/tty/serial/apbuart.h
index 5faf87c8d2bc..81baf007694f 100644
--- a/drivers/tty/serial/apbuart.h
+++ b/drivers/tty/serial/apbuart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GRLIB_APBUART_H__
#define __GRLIB_APBUART_H__
diff --git a/drivers/tty/serial/bcm63xx_uart.c b/drivers/tty/serial/bcm63xx_uart.c
index 583c9a0c7ecc..8c48c3784831 100644
--- a/drivers/tty/serial/bcm63xx_uart.c
+++ b/drivers/tty/serial/bcm63xx_uart.c
@@ -507,9 +507,14 @@ static void bcm_uart_set_termios(struct uart_port *port,
{
unsigned int ctl, baud, quot, ier;
unsigned long flags;
+ int tries;
spin_lock_irqsave(&port->lock, flags);
+ /* Drain the hot tub fully before we power it off for the winter. */
+ for (tries = 3; !bcm_uart_tx_empty(port) && tries; tries--)
+ mdelay(10);
+
/* disable uart while changing speed */
bcm_uart_disable(port);
bcm_uart_flush(port);
diff --git a/drivers/tty/serial/cpm_uart/cpm_uart_cpm1.h b/drivers/tty/serial/cpm_uart/cpm_uart_cpm1.h
index 60c7e94cde1e..18ec0849918a 100644
--- a/drivers/tty/serial/cpm_uart/cpm_uart_cpm1.h
+++ b/drivers/tty/serial/cpm_uart/cpm_uart_cpm1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Driver for CPM (SCC/SMC) serial ports
*
diff --git a/drivers/tty/serial/cpm_uart/cpm_uart_cpm2.h b/drivers/tty/serial/cpm_uart/cpm_uart_cpm2.h
index 51e651a69938..051a8509c3e5 100644
--- a/drivers/tty/serial/cpm_uart/cpm_uart_cpm2.h
+++ b/drivers/tty/serial/cpm_uart/cpm_uart_cpm2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Driver for CPM (SCC/SMC) serial ports
*
diff --git a/drivers/tty/serial/crisv10.c b/drivers/tty/serial/crisv10.c
index 59a2a7e18b5a..1421804975e0 100644
--- a/drivers/tty/serial/crisv10.c
+++ b/drivers/tty/serial/crisv10.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Serial port driver for the ETRAX 100LX chip
*
diff --git a/drivers/tty/serial/crisv10.h b/drivers/tty/serial/crisv10.h
index 15a52ee58251..79ba2bc95d3d 100644
--- a/drivers/tty/serial/crisv10.h
+++ b/drivers/tty/serial/crisv10.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* serial.h: Arch-dep definitions for the Etrax100 serial driver.
*
diff --git a/drivers/tty/serial/dz.h b/drivers/tty/serial/dz.h
index faf169ed27b3..3b3e31954f24 100644
--- a/drivers/tty/serial/dz.h
+++ b/drivers/tty/serial/dz.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* dz.h: Serial port driver for DECstations equipped
* with the DZ chipset.
diff --git a/drivers/tty/serial/etraxfs-uart.c b/drivers/tty/serial/etraxfs-uart.c
index 2f80bc7e44fb..24bf6bfb29b4 100644
--- a/drivers/tty/serial/etraxfs-uart.c
+++ b/drivers/tty/serial/etraxfs-uart.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h>
#include <linux/init.h>
#include <linux/console.h>
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
index 849c1f9991ce..f0252184291e 100644
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
@@ -1276,7 +1276,6 @@ static void rx_dma_timer_init(struct lpuart_port *sport)
static int lpuart_startup(struct uart_port *port)
{
struct lpuart_port *sport = container_of(port, struct lpuart_port, port);
- int ret;
unsigned long flags;
unsigned char temp;
@@ -1291,11 +1290,6 @@ static int lpuart_startup(struct uart_port *port)
sport->rxfifo_size = 0x1 << (((temp >> UARTPFIFO_RXSIZE_OFF) &
UARTPFIFO_FIFOSIZE_MASK) + 1);
- ret = devm_request_irq(port->dev, port->irq, lpuart_int, 0,
- DRIVER_NAME, sport);
- if (ret)
- return ret;
-
spin_lock_irqsave(&sport->port.lock, flags);
lpuart_setup_watermark(sport);
@@ -1333,7 +1327,6 @@ static int lpuart_startup(struct uart_port *port)
static int lpuart32_startup(struct uart_port *port)
{
struct lpuart_port *sport = container_of(port, struct lpuart_port, port);
- int ret;
unsigned long flags;
unsigned long temp;
@@ -1346,11 +1339,6 @@ static int lpuart32_startup(struct uart_port *port)
sport->rxfifo_size = 0x1 << (((temp >> UARTFIFO_RXSIZE_OFF) &
UARTFIFO_FIFOSIZE_MASK) - 1);
- ret = devm_request_irq(port->dev, port->irq, lpuart32_int, 0,
- DRIVER_NAME, sport);
- if (ret)
- return ret;
-
spin_lock_irqsave(&sport->port.lock, flags);
lpuart32_setup_watermark(sport);
@@ -1380,8 +1368,6 @@ static void lpuart_shutdown(struct uart_port *port)
spin_unlock_irqrestore(&port->lock, flags);
- devm_free_irq(port->dev, port->irq, sport);
-
if (sport->lpuart_dma_rx_use) {
del_timer_sync(&sport->lpuart_timer);
lpuart_dma_rx_free(&sport->port);
@@ -1400,7 +1386,6 @@ static void lpuart_shutdown(struct uart_port *port)
static void lpuart32_shutdown(struct uart_port *port)
{
- struct lpuart_port *sport = container_of(port, struct lpuart_port, port);
unsigned long temp;
unsigned long flags;
@@ -1413,8 +1398,6 @@ static void lpuart32_shutdown(struct uart_port *port)
lpuart32_write(port, temp, UARTCTRL);
spin_unlock_irqrestore(&port->lock, flags);
-
- devm_free_irq(port->dev, port->irq, sport);
}
static void
@@ -2212,16 +2195,22 @@ static int lpuart_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, &sport->port);
- if (lpuart_is_32(sport))
+ if (lpuart_is_32(sport)) {
lpuart_reg.cons = LPUART32_CONSOLE;
- else
+ ret = devm_request_irq(&pdev->dev, sport->port.irq, lpuart32_int, 0,
+ DRIVER_NAME, sport);
+ } else {
lpuart_reg.cons = LPUART_CONSOLE;
+ ret = devm_request_irq(&pdev->dev, sport->port.irq, lpuart_int, 0,
+ DRIVER_NAME, sport);
+ }
+
+ if (ret)
+ goto failed_irq_request;
ret = uart_add_one_port(&lpuart_reg, &sport->port);
- if (ret) {
- clk_disable_unprepare(sport->clk);
- return ret;
- }
+ if (ret)
+ goto failed_attach_port;
sport->dma_tx_chan = dma_request_slave_channel(sport->port.dev, "tx");
if (!sport->dma_tx_chan)
@@ -2240,6 +2229,11 @@ static int lpuart_probe(struct platform_device *pdev)
}
return 0;
+
+failed_attach_port:
+failed_irq_request:
+ clk_disable_unprepare(sport->clk);
+ return ret;
}
static int lpuart_remove(struct platform_device *pdev)
diff --git a/drivers/tty/serial/ip22zilog.h b/drivers/tty/serial/ip22zilog.h
index a59a9a8341d2..b52801fe2d0d 100644
--- a/drivers/tty/serial/ip22zilog.h
+++ b/drivers/tty/serial/ip22zilog.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IP22_ZILOG_H
#define _IP22_ZILOG_H
diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
index ae8cfc81ffc5..d9123f995705 100644
--- a/drivers/tty/serial/pch_uart.c
+++ b/drivers/tty/serial/pch_uart.c
@@ -371,7 +371,7 @@ static const struct file_operations port_regs_ops = {
};
#endif /* CONFIG_DEBUG_FS */
-static struct dmi_system_id pch_uart_dmi_table[] = {
+static const struct dmi_system_id pch_uart_dmi_table[] = {
{
.ident = "CM-iTC",
{
diff --git a/drivers/tty/serial/pmac_zilog.h b/drivers/tty/serial/pmac_zilog.h
index 3483242ee3e0..bb874e76810e 100644
--- a/drivers/tty/serial/pmac_zilog.h
+++ b/drivers/tty/serial/pmac_zilog.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PMAC_ZILOG_H__
#define __PMAC_ZILOG_H__
diff --git a/drivers/tty/serial/sccnxp.c b/drivers/tty/serial/sccnxp.c
index cdd2f942317c..b9c7a904c1ea 100644
--- a/drivers/tty/serial/sccnxp.c
+++ b/drivers/tty/serial/sccnxp.c
@@ -889,7 +889,16 @@ static int sccnxp_probe(struct platform_device *pdev)
goto err_out;
uartclk = 0;
} else {
- clk_prepare_enable(clk);
+ ret = clk_prepare_enable(clk);
+ if (ret)
+ goto err_out;
+
+ ret = devm_add_action_or_reset(&pdev->dev,
+ (void(*)(void *))clk_disable_unprepare,
+ clk);
+ if (ret)
+ goto err_out;
+
uartclk = clk_get_rate(clk);
}
@@ -988,7 +997,7 @@ static int sccnxp_probe(struct platform_device *pdev)
uart_unregister_driver(&s->uart);
err_out:
if (!IS_ERR(s->regulator))
- return regulator_disable(s->regulator);
+ regulator_disable(s->regulator);
return ret;
}
diff --git a/drivers/tty/serial/sh-sci.h b/drivers/tty/serial/sh-sci.h
index 971b2ab088d8..938e23a2d166 100644
--- a/drivers/tty/serial/sh-sci.h
+++ b/drivers/tty/serial/sh-sci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/bitops.h>
#include <linux/serial_core.h>
#include <linux/io.h>
diff --git a/drivers/tty/serial/sunsab.h b/drivers/tty/serial/sunsab.h
index b78e1f7b8050..1644031aacda 100644
--- a/drivers/tty/serial/sunsab.h
+++ b/drivers/tty/serial/sunsab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* sunsab.h: Register Definitions for the Siemens SAB82532 DUSCC
*
* Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be)
diff --git a/drivers/tty/serial/sunzilog.h b/drivers/tty/serial/sunzilog.h
index 5dec7b47cc38..6d6764f0ac98 100644
--- a/drivers/tty/serial/sunzilog.h
+++ b/drivers/tty/serial/sunzilog.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SUNZILOG_H
#define _SUNZILOG_H
diff --git a/drivers/tty/serial/zs.h b/drivers/tty/serial/zs.h
index aa921b57d827..26ef8eafa1c1 100644
--- a/drivers/tty/serial/zs.h
+++ b/drivers/tty/serial/zs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* zs.h: Definitions for the DECstation Z85C30 serial driver.
*
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
index 3ffc1ce29023..d008f5a75197 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Linux Magic System Request Key Hacks
*
diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
index 2fe216b276e2..84a8ac2a779f 100644
--- a/drivers/tty/tty_ldisc.c
+++ b/drivers/tty/tty_ldisc.c
@@ -694,10 +694,8 @@ int tty_ldisc_reinit(struct tty_struct *tty, int disc)
tty_set_termios_ldisc(tty, disc);
retval = tty_ldisc_open(tty, tty->ldisc);
if (retval) {
- if (!WARN_ON(disc == N_TTY)) {
- tty_ldisc_put(tty->ldisc);
- tty->ldisc = NULL;
- }
+ tty_ldisc_put(tty->ldisc);
+ tty->ldisc = NULL;
}
return retval;
}
@@ -752,8 +750,9 @@ void tty_ldisc_hangup(struct tty_struct *tty, bool reinit)
if (tty->ldisc) {
if (reinit) {
- if (tty_ldisc_reinit(tty, tty->termios.c_line) < 0)
- tty_ldisc_reinit(tty, N_TTY);
+ if (tty_ldisc_reinit(tty, tty->termios.c_line) < 0 &&
+ tty_ldisc_reinit(tty, N_TTY) < 0)
+ WARN_ON(tty_ldisc_reinit(tty, N_NULL) < 0);
} else
tty_ldisc_kill(tty);
}
diff --git a/drivers/tty/tty_mutex.c b/drivers/tty/tty_mutex.c
index d8bae67a6174..2640635ee177 100644
--- a/drivers/tty/tty_mutex.c
+++ b/drivers/tty/tty_mutex.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/tty.h>
#include <linux/module.h>
#include <linux/kallsyms.h>
diff --git a/drivers/tty/vt/Makefile b/drivers/tty/vt/Makefile
index 17ae94cb29f8..edbbe0ccdb83 100644
--- a/drivers/tty/vt/Makefile
+++ b/drivers/tty/vt/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# This file contains the font map for the default (hardware) font
#
diff --git a/drivers/tty/vt/selection.c b/drivers/tty/vt/selection.c
index accbd1257bc4..7a4c8022c023 100644
--- a/drivers/tty/vt/selection.c
+++ b/drivers/tty/vt/selection.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This module exports the functions:
*
diff --git a/drivers/tty/vt/vc_screen.c b/drivers/tty/vt/vc_screen.c
index 56dcff6059d3..85b6634f518a 100644
--- a/drivers/tty/vt/vc_screen.c
+++ b/drivers/tty/vt/vc_screen.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Provide access to virtual console memory.
* /dev/vcs0: the screen as it is being viewed right now (possibly scrolled)
diff --git a/drivers/tty/vt/vt_ioctl.c b/drivers/tty/vt/vt_ioctl.c
index 96d389cb506c..2d2b420598b2 100644
--- a/drivers/tty/vt/vt_ioctl.c
+++ b/drivers/tty/vt/vt_ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1992 obz under the linux copyright
*
diff --git a/drivers/uio/Makefile b/drivers/uio/Makefile
index e9663bb8a4c7..c285dd2a4539 100644
--- a/drivers/uio/Makefile
+++ b/drivers/uio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_UIO) += uio.o
obj-$(CONFIG_UIO_CIF) += uio_cif.o
obj-$(CONFIG_UIO_PDRV_GENIRQ) += uio_pdrv_genirq.o
diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
index 9650b351c26c..060643a1b5c8 100644
--- a/drivers/usb/Makefile
+++ b/drivers/usb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the kernel USB device drivers.
#
diff --git a/drivers/usb/atm/Makefile b/drivers/usb/atm/Makefile
index ac278946b06c..7ac65ce1aa8a 100644
--- a/drivers/usb/atm/Makefile
+++ b/drivers/usb/atm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for USB ATM/xDSL drivers
#
diff --git a/drivers/usb/chipidea/Makefile b/drivers/usb/chipidea/Makefile
index ddcbddf8361a..e3d5e728fa53 100644
--- a/drivers/usb/chipidea/Makefile
+++ b/drivers/usb/chipidea/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_USB_CHIPIDEA) += ci_hdrc.o
ci_hdrc-y := core.o otg.o debug.o
diff --git a/drivers/usb/chipidea/debug.c b/drivers/usb/chipidea/debug.c
index 1c31e8a08810..c9e1a165ed82 100644
--- a/drivers/usb/chipidea/debug.c
+++ b/drivers/usb/chipidea/debug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/types.h>
diff --git a/drivers/usb/chipidea/host.h b/drivers/usb/chipidea/host.h
index 0f12f131bdd3..70112cf0f195 100644
--- a/drivers/usb/chipidea/host.h
+++ b/drivers/usb/chipidea/host.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRIVERS_USB_CHIPIDEA_HOST_H
#define __DRIVERS_USB_CHIPIDEA_HOST_H
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index 5e056064259c..18c923a4c16e 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -1832,6 +1832,9 @@ static const struct usb_device_id acm_ids[] = {
{ USB_DEVICE(0xfff0, 0x0100), /* DATECS FP-2000 */
.driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */
},
+ { USB_DEVICE(0x09d8, 0x0320), /* Elatec GmbH TWN3 */
+ .driver_info = NO_UNION_NORMAL, /* has misplaced union descriptor */
+ },
{ USB_DEVICE(0x2912, 0x0001), /* ATOL FPrint */
.driver_info = CLEAR_HALT_CONDITIONS,
diff --git a/drivers/usb/class/cdc-acm.h b/drivers/usb/class/cdc-acm.h
index 7a2b3deafc90..eacc116e83da 100644
--- a/drivers/usb/class/cdc-acm.h
+++ b/drivers/usb/class/cdc-acm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Includes for cdc-acm.c
diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
index 5aacea1978a5..3e865dbf878c 100644
--- a/drivers/usb/class/cdc-wdm.c
+++ b/drivers/usb/class/cdc-wdm.c
@@ -190,8 +190,10 @@ static void wdm_in_callback(struct urb *urb)
/*
* only set a new error if there is no previous error.
* Errors are only cleared during read/open
+ * Avoid propagating -EPIPE (stall) to userspace since it is
+ * better handled as an empty read
*/
- if (desc->rerr == 0)
+ if (desc->rerr == 0 && status != -EPIPE)
desc->rerr = status;
if (length + desc->length > desc->wMaxCommand) {
diff --git a/drivers/usb/common/Makefile b/drivers/usb/common/Makefile
index 6bbb3ec17018..0a7c45e85481 100644
--- a/drivers/usb/common/Makefile
+++ b/drivers/usb/common/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the usb common parts.
#
diff --git a/drivers/usb/core/Makefile b/drivers/usb/core/Makefile
index 250ec1d662d9..92c9cefb4317 100644
--- a/drivers/usb/core/Makefile
+++ b/drivers/usb/core/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for USB Core files and filesystem
#
diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c
index 4be52c602e9b..883549ee946c 100644
--- a/drivers/usb/core/config.c
+++ b/drivers/usb/core/config.c
@@ -643,15 +643,23 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
} else if (header->bDescriptorType ==
USB_DT_INTERFACE_ASSOCIATION) {
+ struct usb_interface_assoc_descriptor *d;
+
+ d = (struct usb_interface_assoc_descriptor *)header;
+ if (d->bLength < USB_DT_INTERFACE_ASSOCIATION_SIZE) {
+ dev_warn(ddev,
+ "config %d has an invalid interface association descriptor of length %d, skipping\n",
+ cfgno, d->bLength);
+ continue;
+ }
+
if (iad_num == USB_MAXIADS) {
dev_warn(ddev, "found more Interface "
"Association Descriptors "
"than allocated for in "
"configuration %d\n", cfgno);
} else {
- config->intf_assoc[iad_num] =
- (struct usb_interface_assoc_descriptor
- *)header;
+ config->intf_assoc[iad_num] = d;
iad_num++;
}
@@ -852,7 +860,7 @@ int usb_get_configuration(struct usb_device *dev)
}
if (dev->quirks & USB_QUIRK_DELAY_INIT)
- msleep(100);
+ msleep(200);
result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno,
bigbuffer, length);
@@ -952,10 +960,12 @@ int usb_get_bos_descriptor(struct usb_device *dev)
for (i = 0; i < num; i++) {
buffer += length;
cap = (struct usb_dev_cap_header *)buffer;
- length = cap->bLength;
- if (total_len < length)
+ if (total_len < sizeof(*cap) || total_len < cap->bLength) {
+ dev->bos->desc->bNumDeviceCaps = i;
break;
+ }
+ length = cap->bLength;
total_len -= length;
if (cap->bDescriptorType != USB_DT_DEVICE_CAPABILITY) {
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index 318bb3b96687..e9326f31db8d 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -140,6 +140,9 @@ module_param(usbfs_memory_mb, uint, 0644);
MODULE_PARM_DESC(usbfs_memory_mb,
"maximum MB allowed for usbfs buffers (0 = no limit)");
+/* Hard limit, necessary to avoid arithmetic overflow */
+#define USBFS_XFER_MAX (UINT_MAX / 2 - 1000000)
+
static atomic64_t usbfs_memory_usage; /* Total memory currently allocated */
/* Check whether it's okay to allocate more memory for a transfer */
@@ -1460,6 +1463,8 @@ static int proc_do_submiturb(struct usb_dev_state *ps, struct usbdevfs_urb *uurb
USBDEVFS_URB_ZERO_PACKET |
USBDEVFS_URB_NO_INTERRUPT))
return -EINVAL;
+ if ((unsigned int)uurb->buffer_length >= USBFS_XFER_MAX)
+ return -EINVAL;
if (uurb->buffer_length > 0 && !uurb->buffer)
return -EINVAL;
if (!(uurb->type == USBDEVFS_URB_TYPE_CONTROL &&
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 41eaf0b52518..e9ce6bb0b22d 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -2710,13 +2710,16 @@ static int hub_port_wait_reset(struct usb_hub *hub, int port1,
if (!(portstatus & USB_PORT_STAT_CONNECTION))
return -ENOTCONN;
- /* bomb out completely if the connection bounced. A USB 3.0
- * connection may bounce if multiple warm resets were issued,
+ /* Retry if connect change is set but status is still connected.
+ * A USB 3.0 connection may bounce if multiple warm resets were issued,
* but the device may have successfully re-connected. Ignore it.
*/
if (!hub_is_superspeed(hub->hdev) &&
- (portchange & USB_PORT_STAT_C_CONNECTION))
- return -ENOTCONN;
+ (portchange & USB_PORT_STAT_C_CONNECTION)) {
+ usb_clear_port_feature(hub->hdev, port1,
+ USB_PORT_FEAT_C_CONNECTION);
+ return -EAGAIN;
+ }
if (!(portstatus & USB_PORT_STAT_ENABLE))
return -EBUSY;
@@ -4838,7 +4841,7 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,
goto loop;
if (udev->quirks & USB_QUIRK_DELAY_INIT)
- msleep(1000);
+ msleep(2000);
/* consecutive bus-powered hubs aren't reliable; they can
* violate the voltage drop budget. if the new child has
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index 4c38ea41ae96..371a07d874a3 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -2069,6 +2069,10 @@ int cdc_parse_cdc_header(struct usb_cdc_parsed_header *hdr,
elength = 1;
goto next_desc;
}
+ if ((buflen < elength) || (elength < 3)) {
+ dev_err(&intf->dev, "invalid descriptor buffer length\n");
+ break;
+ }
if (buffer[1] != USB_DT_CS_INTERFACE) {
dev_err(&intf->dev, "skipping garbage\n");
goto next_desc;
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
index 82806e311202..a6aaf2f193a4 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -221,6 +221,10 @@ static const struct usb_device_id usb_quirk_list[] = {
/* Corsair Strafe RGB */
{ USB_DEVICE(0x1b1c, 0x1b20), .driver_info = USB_QUIRK_DELAY_INIT },
+ /* MIDI keyboard WORLDE MINI */
+ { USB_DEVICE(0x1c75, 0x0204), .driver_info =
+ USB_QUIRK_CONFIG_INTF_STRINGS },
+
/* Acer C120 LED Projector */
{ USB_DEVICE(0x1de1, 0xc102), .driver_info = USB_QUIRK_NO_LPM },
diff --git a/drivers/usb/dwc2/Makefile b/drivers/usb/dwc2/Makefile
index b9237e1e45d0..440320cc20a4 100644
--- a/drivers/usb/dwc2/Makefile
+++ b/drivers/usb/dwc2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_USB_DWC2_DEBUG) += -DDEBUG
ccflags-$(CONFIG_USB_DWC2_VERBOSE) += -DVERBOSE_DEBUG
diff --git a/drivers/usb/dwc3/Makefile b/drivers/usb/dwc3/Makefile
index f15fabbd1e59..7ac725038f8d 100644
--- a/drivers/usb/dwc3/Makefile
+++ b/drivers/usb/dwc3/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# define_trace.h needs to know how to find our header
CFLAGS_trace.o := -I$(src)
diff --git a/drivers/usb/dwc3/dwc3-of-simple.c b/drivers/usb/dwc3/dwc3-of-simple.c
index 4cef7d4f9cd0..a26d1fde0f5e 100644
--- a/drivers/usb/dwc3/dwc3-of-simple.c
+++ b/drivers/usb/dwc3/dwc3-of-simple.c
@@ -177,6 +177,7 @@ static const struct of_device_id of_dwc3_simple_match[] = {
{ .compatible = "rockchip,rk3399-dwc3" },
{ .compatible = "xlnx,zynqmp-dwc3" },
{ .compatible = "cavium,octeon-7130-usb-uctl" },
+ { .compatible = "sprd,sc9860-dwc3" },
{ /* Sentinel */ }
};
MODULE_DEVICE_TABLE(of, of_dwc3_simple_match);
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index 827e376bfa97..75e6cb044eb2 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -990,6 +990,8 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
DWC3_TRBCTL_CONTROL_DATA,
true);
+ req->trb = &dwc->ep0_trb[dep->trb_enqueue - 1];
+
/* Now prepare one extra TRB to align transfer size */
dwc3_ep0_prepare_one_trb(dep, dwc->bounce_addr,
maxpacket - rem,
@@ -1015,6 +1017,8 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
DWC3_TRBCTL_CONTROL_DATA,
true);
+ req->trb = &dwc->ep0_trb[dep->trb_enqueue - 1];
+
/* Now prepare one extra TRB to align transfer size */
dwc3_ep0_prepare_one_trb(dep, dwc->bounce_addr,
0, DWC3_TRBCTL_CONTROL_DATA,
@@ -1029,6 +1033,9 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
dwc3_ep0_prepare_one_trb(dep, req->request.dma,
req->request.length, DWC3_TRBCTL_CONTROL_DATA,
false);
+
+ req->trb = &dwc->ep0_trb[dep->trb_enqueue];
+
ret = dwc3_ep0_start_trans(dep);
}
diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile
index 598a67d6ba05..130dad7130b6 100644
--- a/drivers/usb/gadget/Makefile
+++ b/drivers/usb/gadget/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# USB peripheral controller drivers
#
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index dd74c99d6ce1..5d061b3d8224 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -2026,6 +2026,8 @@ static DEVICE_ATTR_RO(suspended);
static void __composite_unbind(struct usb_gadget *gadget, bool unbind_driver)
{
struct usb_composite_dev *cdev = get_gadget_data(gadget);
+ struct usb_gadget_strings *gstr = cdev->driver->strings[0];
+ struct usb_string *dev_str = gstr->strings;
/* composite_disconnect() must already have been called
* by the underlying peripheral controller driver!
@@ -2045,6 +2047,9 @@ static void __composite_unbind(struct usb_gadget *gadget, bool unbind_driver)
composite_dev_cleanup(cdev);
+ if (dev_str[USB_GADGET_MANUFACTURER_IDX].s == cdev->def_manufacturer)
+ dev_str[USB_GADGET_MANUFACTURER_IDX].s = "";
+
kfree(cdev->def_manufacturer);
kfree(cdev);
set_gadget_data(gadget, NULL);
diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c
index a22a892de7b7..aeb9f3c40521 100644
--- a/drivers/usb/gadget/configfs.c
+++ b/drivers/usb/gadget/configfs.c
@@ -1143,11 +1143,12 @@ static struct configfs_attribute *interf_grp_attrs[] = {
NULL
};
-int usb_os_desc_prepare_interf_dir(struct config_group *parent,
- int n_interf,
- struct usb_os_desc **desc,
- char **names,
- struct module *owner)
+struct config_group *usb_os_desc_prepare_interf_dir(
+ struct config_group *parent,
+ int n_interf,
+ struct usb_os_desc **desc,
+ char **names,
+ struct module *owner)
{
struct config_group *os_desc_group;
struct config_item_type *os_desc_type, *interface_type;
@@ -1159,7 +1160,7 @@ int usb_os_desc_prepare_interf_dir(struct config_group *parent,
char *vlabuf = kzalloc(vla_group_size(data_chunk), GFP_KERNEL);
if (!vlabuf)
- return -ENOMEM;
+ return ERR_PTR(-ENOMEM);
os_desc_group = vla_ptr(vlabuf, data_chunk, os_desc_group);
os_desc_type = vla_ptr(vlabuf, data_chunk, os_desc_type);
@@ -1184,7 +1185,7 @@ int usb_os_desc_prepare_interf_dir(struct config_group *parent,
configfs_add_default_group(&d->group, os_desc_group);
}
- return 0;
+ return os_desc_group;
}
EXPORT_SYMBOL(usb_os_desc_prepare_interf_dir);
diff --git a/drivers/usb/gadget/configfs.h b/drivers/usb/gadget/configfs.h
index 36c468c4f5e9..3b6f5298b2e8 100644
--- a/drivers/usb/gadget/configfs.h
+++ b/drivers/usb/gadget/configfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef USB__GADGET__CONFIGFS__H
#define USB__GADGET__CONFIGFS__H
@@ -5,11 +6,12 @@
void unregister_gadget_item(struct config_item *item);
-int usb_os_desc_prepare_interf_dir(struct config_group *parent,
- int n_interf,
- struct usb_os_desc **desc,
- char **names,
- struct module *owner);
+struct config_group *usb_os_desc_prepare_interf_dir(
+ struct config_group *parent,
+ int n_interf,
+ struct usb_os_desc **desc,
+ char **names,
+ struct module *owner);
static inline struct usb_os_desc *to_usb_os_desc(struct config_item *item)
{
diff --git a/drivers/usb/gadget/function/Makefile b/drivers/usb/gadget/function/Makefile
index 86e825269947..5d3a6cf02218 100644
--- a/drivers/usb/gadget/function/Makefile
+++ b/drivers/usb/gadget/function/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# USB peripheral controller drivers
#
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index 9990944a7245..8b342587f8ad 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -46,7 +46,8 @@
static void ffs_data_get(struct ffs_data *ffs);
static void ffs_data_put(struct ffs_data *ffs);
/* Creates new ffs_data object. */
-static struct ffs_data *__must_check ffs_data_new(void) __attribute__((malloc));
+static struct ffs_data *__must_check ffs_data_new(const char *dev_name)
+ __attribute__((malloc));
/* Opened counter handling. */
static void ffs_data_opened(struct ffs_data *ffs);
@@ -780,11 +781,12 @@ static void ffs_epfile_async_io_complete(struct usb_ep *_ep,
struct usb_request *req)
{
struct ffs_io_data *io_data = req->context;
+ struct ffs_data *ffs = io_data->ffs;
ENTER();
INIT_WORK(&io_data->work, ffs_user_copy_worker);
- schedule_work(&io_data->work);
+ queue_work(ffs->io_completion_wq, &io_data->work);
}
static void __ffs_epfile_read_buffer_free(struct ffs_epfile *epfile)
@@ -1500,7 +1502,7 @@ ffs_fs_mount(struct file_system_type *t, int flags,
if (unlikely(ret < 0))
return ERR_PTR(ret);
- ffs = ffs_data_new();
+ ffs = ffs_data_new(dev_name);
if (unlikely(!ffs))
return ERR_PTR(-ENOMEM);
ffs->file_perms = data.perms;
@@ -1610,6 +1612,7 @@ static void ffs_data_put(struct ffs_data *ffs)
BUG_ON(waitqueue_active(&ffs->ev.waitq) ||
waitqueue_active(&ffs->ep0req_completion.wait) ||
waitqueue_active(&ffs->wait));
+ destroy_workqueue(ffs->io_completion_wq);
kfree(ffs->dev_name);
kfree(ffs);
}
@@ -1642,7 +1645,7 @@ static void ffs_data_closed(struct ffs_data *ffs)
ffs_data_put(ffs);
}
-static struct ffs_data *ffs_data_new(void)
+static struct ffs_data *ffs_data_new(const char *dev_name)
{
struct ffs_data *ffs = kzalloc(sizeof *ffs, GFP_KERNEL);
if (unlikely(!ffs))
@@ -1650,6 +1653,12 @@ static struct ffs_data *ffs_data_new(void)
ENTER();
+ ffs->io_completion_wq = alloc_ordered_workqueue("%s", 0, dev_name);
+ if (!ffs->io_completion_wq) {
+ kfree(ffs);
+ return NULL;
+ }
+
refcount_set(&ffs->ref, 1);
atomic_set(&ffs->opened, 0);
ffs->state = FFS_READ_DESCRIPTORS;
diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
index f95bddd6513f..5153e29870c3 100644
--- a/drivers/usb/gadget/function/f_mass_storage.c
+++ b/drivers/usb/gadget/function/f_mass_storage.c
@@ -307,8 +307,6 @@ struct fsg_common {
struct completion thread_notifier;
struct task_struct *thread_task;
- /* Callback functions. */
- const struct fsg_operations *ops;
/* Gadget's private data. */
void *private_data;
@@ -686,9 +684,8 @@ static int do_read(struct fsg_common *common)
/* Perform the read */
file_offset_tmp = file_offset;
- nread = vfs_read(curlun->filp,
- (char __user *)bh->buf,
- amount, &file_offset_tmp);
+ nread = kernel_read(curlun->filp, bh->buf, amount,
+ &file_offset_tmp);
VLDBG(curlun, "file read %u @ %llu -> %d\n", amount,
(unsigned long long)file_offset, (int)nread);
if (signal_pending(current))
@@ -883,8 +880,8 @@ static int do_write(struct fsg_common *common)
/* Perform the write */
file_offset_tmp = file_offset;
- nwritten = vfs_write(curlun->filp, (char __user *)bh->buf,
- amount, &file_offset_tmp);
+ nwritten = kernel_write(curlun->filp, bh->buf, amount,
+ &file_offset_tmp);
VLDBG(curlun, "file write %u @ %llu -> %d\n", amount,
(unsigned long long)file_offset, (int)nwritten);
if (signal_pending(current))
@@ -1021,9 +1018,8 @@ static int do_verify(struct fsg_common *common)
/* Perform the read */
file_offset_tmp = file_offset;
- nread = vfs_read(curlun->filp,
- (char __user *) bh->buf,
- amount, &file_offset_tmp);
+ nread = kernel_read(curlun->filp, bh->buf, amount,
+ &file_offset_tmp);
VLDBG(curlun, "file read %u @ %llu -> %d\n", amount,
(unsigned long long) file_offset,
(int) nread);
@@ -2440,6 +2436,7 @@ static void handle_exception(struct fsg_common *common)
static int fsg_main_thread(void *common_)
{
struct fsg_common *common = common_;
+ int i;
/*
* Allow the thread to be killed by a signal, but set the signal mask
@@ -2453,13 +2450,6 @@ static int fsg_main_thread(void *common_)
/* Allow the thread to be frozen */
set_freezable();
- /*
- * Arrange for userspace references to be interpreted as kernel
- * pointers. That way we can pass a kernel pointer to a routine
- * that expects a __user pointer and it will work okay.
- */
- set_fs(get_ds());
-
/* The main loop */
while (common->state != FSG_STATE_TERMINATED) {
if (exception_in_progress(common) || signal_pending(current)) {
@@ -2485,21 +2475,16 @@ static int fsg_main_thread(void *common_)
common->thread_task = NULL;
spin_unlock_irq(&common->lock);
- if (!common->ops || !common->ops->thread_exits
- || common->ops->thread_exits(common) < 0) {
- int i;
+ /* Eject media from all LUNs */
- down_write(&common->filesem);
- for (i = 0; i < ARRAY_SIZE(common->luns); i++) {
- struct fsg_lun *curlun = common->luns[i];
- if (!curlun || !fsg_lun_is_open(curlun))
- continue;
+ down_write(&common->filesem);
+ for (i = 0; i < ARRAY_SIZE(common->luns); i++) {
+ struct fsg_lun *curlun = common->luns[i];
+ if (curlun && fsg_lun_is_open(curlun))
fsg_lun_close(curlun);
- curlun->unit_attention_data = SS_MEDIUM_NOT_PRESENT;
- }
- up_write(&common->filesem);
}
+ up_write(&common->filesem);
/* Let fsg_unbind() know the thread has exited */
complete_and_exit(&common->thread_notifier, 0);
@@ -2690,13 +2675,6 @@ void fsg_common_remove_luns(struct fsg_common *common)
}
EXPORT_SYMBOL_GPL(fsg_common_remove_luns);
-void fsg_common_set_ops(struct fsg_common *common,
- const struct fsg_operations *ops)
-{
- common->ops = ops;
-}
-EXPORT_SYMBOL_GPL(fsg_common_set_ops);
-
void fsg_common_free_buffers(struct fsg_common *common)
{
_fsg_common_free_buffers(common->buffhds, common->fsg_num_buffers);
diff --git a/drivers/usb/gadget/function/f_mass_storage.h b/drivers/usb/gadget/function/f_mass_storage.h
index d3902313b8ac..58857fcf199f 100644
--- a/drivers/usb/gadget/function/f_mass_storage.h
+++ b/drivers/usb/gadget/function/f_mass_storage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef USB_F_MASS_STORAGE_H
#define USB_F_MASS_STORAGE_H
@@ -60,17 +61,6 @@ struct fsg_module_parameters {
struct fsg_common;
/* FSF callback functions */
-struct fsg_operations {
- /*
- * Callback function to call when thread exits. If no
- * callback is set or it returns value lower then zero MSF
- * will force eject all LUNs it operates on (including those
- * marked as non-removable or with prevent_medium_removal flag
- * set).
- */
- int (*thread_exits)(struct fsg_common *common);
-};
-
struct fsg_lun_opts {
struct config_group group;
struct fsg_lun *lun;
@@ -142,9 +132,6 @@ void fsg_common_remove_lun(struct fsg_lun *lun);
void fsg_common_remove_luns(struct fsg_common *common);
-void fsg_common_set_ops(struct fsg_common *common,
- const struct fsg_operations *ops);
-
int fsg_common_create_lun(struct fsg_common *common, struct fsg_lun_config *cfg,
unsigned int id, const char *name,
const char **name_pfx);
diff --git a/drivers/usb/gadget/function/f_printer.c b/drivers/usb/gadget/function/f_printer.c
index 8df244fc9d80..ea0da35a44e2 100644
--- a/drivers/usb/gadget/function/f_printer.c
+++ b/drivers/usb/gadget/function/f_printer.c
@@ -555,6 +555,7 @@ printer_write(struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
size_t size; /* Amount of data in a TX request. */
size_t bytes_copied = 0;
struct usb_request *req;
+ int value;
DBG(dev, "printer_write trying to send %d bytes\n", (int)len);
@@ -634,7 +635,11 @@ printer_write(struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
return -EAGAIN;
}
- if (usb_ep_queue(dev->in_ep, req, GFP_ATOMIC)) {
+ /* here, we unlock, and only unlock, to avoid deadlock. */
+ spin_unlock(&dev->lock);
+ value = usb_ep_queue(dev->in_ep, req, GFP_ATOMIC);
+ spin_lock(&dev->lock);
+ if (value) {
list_add(&req->list, &dev->tx_reqs);
spin_unlock_irqrestore(&dev->lock, flags);
mutex_unlock(&dev->lock_printer_io);
diff --git a/drivers/usb/gadget/function/f_rndis.c b/drivers/usb/gadget/function/f_rndis.c
index e1d5853ef1e4..c7c5b3ce1d98 100644
--- a/drivers/usb/gadget/function/f_rndis.c
+++ b/drivers/usb/gadget/function/f_rndis.c
@@ -908,6 +908,7 @@ static void rndis_free_inst(struct usb_function_instance *f)
free_netdev(opts->net);
}
+ kfree(opts->rndis_interf_group); /* single VLA chunk */
kfree(opts);
}
@@ -916,6 +917,7 @@ static struct usb_function_instance *rndis_alloc_inst(void)
struct f_rndis_opts *opts;
struct usb_os_desc *descs[1];
char *names[1];
+ struct config_group *rndis_interf_group;
opts = kzalloc(sizeof(*opts), GFP_KERNEL);
if (!opts)
@@ -940,8 +942,14 @@ static struct usb_function_instance *rndis_alloc_inst(void)
names[0] = "rndis";
config_group_init_type_name(&opts->func_inst.group, "",
&rndis_func_type);
- usb_os_desc_prepare_interf_dir(&opts->func_inst.group, 1, descs,
- names, THIS_MODULE);
+ rndis_interf_group =
+ usb_os_desc_prepare_interf_dir(&opts->func_inst.group, 1, descs,
+ names, THIS_MODULE);
+ if (IS_ERR(rndis_interf_group)) {
+ rndis_free_inst(&opts->func_inst);
+ return ERR_CAST(rndis_interf_group);
+ }
+ opts->rndis_interf_group = rndis_interf_group;
return &opts->func_inst;
}
diff --git a/drivers/usb/gadget/function/g_zero.h b/drivers/usb/gadget/function/g_zero.h
index 492924d0d599..98b8462ad538 100644
--- a/drivers/usb/gadget/function/g_zero.h
+++ b/drivers/usb/gadget/function/g_zero.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header declares the utility functions used by "Gadget Zero", plus
* interfaces to its two single-configuration function drivers.
diff --git a/drivers/usb/gadget/function/storage_common.h b/drivers/usb/gadget/function/storage_common.h
index e0814a960132..e5e3a2553aaa 100644
--- a/drivers/usb/gadget/function/storage_common.h
+++ b/drivers/usb/gadget/function/storage_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef USB_STORAGE_COMMON_H
#define USB_STORAGE_COMMON_H
diff --git a/drivers/usb/gadget/function/tcm.h b/drivers/usb/gadget/function/tcm.h
index a27e6e34db0b..3cd565794ad7 100644
--- a/drivers/usb/gadget/function/tcm.h
+++ b/drivers/usb/gadget/function/tcm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __TARGET_USB_GADGET_H__
#define __TARGET_USB_GADGET_H__
diff --git a/drivers/usb/gadget/function/u_fs.h b/drivers/usb/gadget/function/u_fs.h
index 540f1c48c1a8..79f70ebf85dc 100644
--- a/drivers/usb/gadget/function/u_fs.h
+++ b/drivers/usb/gadget/function/u_fs.h
@@ -279,6 +279,7 @@ struct ffs_data {
} file_perms;
struct eventfd_ctx *ffs_eventfd;
+ struct workqueue_struct *io_completion_wq;
bool no_disconnect;
struct work_struct reset_work;
diff --git a/drivers/usb/gadget/function/u_rndis.h b/drivers/usb/gadget/function/u_rndis.h
index a35ee3c2545d..efdb7ac381d9 100644
--- a/drivers/usb/gadget/function/u_rndis.h
+++ b/drivers/usb/gadget/function/u_rndis.h
@@ -26,6 +26,7 @@ struct f_rndis_opts {
bool bound;
bool borrowed_net;
+ struct config_group *rndis_interf_group;
struct usb_os_desc rndis_os_desc;
char rndis_ext_compat_id[16];
diff --git a/drivers/usb/gadget/function/uvc_queue.h b/drivers/usb/gadget/function/uvc_queue.h
index ac461a9a1a70..51ee94e5cf2b 100644
--- a/drivers/usb/gadget/function/uvc_queue.h
+++ b/drivers/usb/gadget/function/uvc_queue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _UVC_QUEUE_H_
#define _UVC_QUEUE_H_
diff --git a/drivers/usb/gadget/legacy/Makefile b/drivers/usb/gadget/legacy/Makefile
index 7f485f25705e..abd0c3e66a05 100644
--- a/drivers/usb/gadget/legacy/Makefile
+++ b/drivers/usb/gadget/legacy/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# USB gadget drivers
#
diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c
index 684900fcfe24..5c28bee327e1 100644
--- a/drivers/usb/gadget/legacy/inode.c
+++ b/drivers/usb/gadget/legacy/inode.c
@@ -28,7 +28,7 @@
#include <linux/aio.h>
#include <linux/uio.h>
#include <linux/refcount.h>
-
+#include <linux/delay.h>
#include <linux/device.h>
#include <linux/moduleparam.h>
@@ -116,6 +116,7 @@ enum ep0_state {
struct dev_data {
spinlock_t lock;
refcount_t count;
+ int udc_usage;
enum ep0_state state; /* P: lock */
struct usb_gadgetfs_event event [N_EVENT];
unsigned ev_next;
@@ -513,9 +514,9 @@ static void ep_aio_complete(struct usb_ep *ep, struct usb_request *req)
INIT_WORK(&priv->work, ep_user_copy_worker);
schedule_work(&priv->work);
}
- spin_unlock(&epdata->dev->lock);
usb_ep_free_request(ep, req);
+ spin_unlock(&epdata->dev->lock);
put_ep(epdata);
}
@@ -939,9 +940,11 @@ ep0_read (struct file *fd, char __user *buf, size_t len, loff_t *ptr)
struct usb_request *req = dev->req;
if ((retval = setup_req (ep, req, 0)) == 0) {
+ ++dev->udc_usage;
spin_unlock_irq (&dev->lock);
retval = usb_ep_queue (ep, req, GFP_KERNEL);
spin_lock_irq (&dev->lock);
+ --dev->udc_usage;
}
dev->state = STATE_DEV_CONNECTED;
@@ -983,11 +986,14 @@ ep0_read (struct file *fd, char __user *buf, size_t len, loff_t *ptr)
retval = -EIO;
else {
len = min (len, (size_t)dev->req->actual);
-// FIXME don't call this with the spinlock held ...
+ ++dev->udc_usage;
+ spin_unlock_irq(&dev->lock);
if (copy_to_user (buf, dev->req->buf, len))
retval = -EFAULT;
else
retval = len;
+ spin_lock_irq(&dev->lock);
+ --dev->udc_usage;
clean_req (dev->gadget->ep0, dev->req);
/* NOTE userspace can't yet choose to stall */
}
@@ -1131,6 +1137,7 @@ ep0_write (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
retval = setup_req (dev->gadget->ep0, dev->req, len);
if (retval == 0) {
dev->state = STATE_DEV_CONNECTED;
+ ++dev->udc_usage;
spin_unlock_irq (&dev->lock);
if (copy_from_user (dev->req->buf, buf, len))
retval = -EFAULT;
@@ -1142,6 +1149,7 @@ ep0_write (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
GFP_KERNEL);
}
spin_lock_irq(&dev->lock);
+ --dev->udc_usage;
if (retval < 0) {
clean_req (dev->gadget->ep0, dev->req);
} else
@@ -1243,9 +1251,21 @@ static long dev_ioctl (struct file *fd, unsigned code, unsigned long value)
struct usb_gadget *gadget = dev->gadget;
long ret = -ENOTTY;
- if (gadget->ops->ioctl)
+ spin_lock_irq(&dev->lock);
+ if (dev->state == STATE_DEV_OPENED ||
+ dev->state == STATE_DEV_UNBOUND) {
+ /* Not bound to a UDC */
+ } else if (gadget->ops->ioctl) {
+ ++dev->udc_usage;
+ spin_unlock_irq(&dev->lock);
+
ret = gadget->ops->ioctl (gadget, code, value);
+ spin_lock_irq(&dev->lock);
+ --dev->udc_usage;
+ }
+ spin_unlock_irq(&dev->lock);
+
return ret;
}
@@ -1463,10 +1483,12 @@ delegate:
if (value < 0)
break;
+ ++dev->udc_usage;
spin_unlock (&dev->lock);
value = usb_ep_queue (gadget->ep0, dev->req,
GFP_KERNEL);
spin_lock (&dev->lock);
+ --dev->udc_usage;
if (value < 0) {
clean_req (gadget->ep0, dev->req);
break;
@@ -1490,8 +1512,12 @@ delegate:
req->length = value;
req->zero = value < w_length;
+ ++dev->udc_usage;
spin_unlock (&dev->lock);
value = usb_ep_queue (gadget->ep0, req, GFP_KERNEL);
+ spin_lock(&dev->lock);
+ --dev->udc_usage;
+ spin_unlock(&dev->lock);
if (value < 0) {
DBG (dev, "ep_queue --> %d\n", value);
req->status = 0;
@@ -1518,21 +1544,24 @@ static void destroy_ep_files (struct dev_data *dev)
/* break link to FS */
ep = list_first_entry (&dev->epfiles, struct ep_data, epfiles);
list_del_init (&ep->epfiles);
+ spin_unlock_irq (&dev->lock);
+
dentry = ep->dentry;
ep->dentry = NULL;
parent = d_inode(dentry->d_parent);
/* break link to controller */
+ mutex_lock(&ep->lock);
if (ep->state == STATE_EP_ENABLED)
(void) usb_ep_disable (ep->ep);
ep->state = STATE_EP_UNBOUND;
usb_ep_free_request (ep->ep, ep->req);
ep->ep = NULL;
+ mutex_unlock(&ep->lock);
+
wake_up (&ep->wait);
put_ep (ep);
- spin_unlock_irq (&dev->lock);
-
/* break link to dcache */
inode_lock(parent);
d_delete (dentry);
@@ -1603,6 +1632,11 @@ gadgetfs_unbind (struct usb_gadget *gadget)
spin_lock_irq (&dev->lock);
dev->state = STATE_DEV_UNBOUND;
+ while (dev->udc_usage > 0) {
+ spin_unlock_irq(&dev->lock);
+ usleep_range(1000, 2000);
+ spin_lock_irq(&dev->lock);
+ }
spin_unlock_irq (&dev->lock);
destroy_ep_files (dev);
diff --git a/drivers/usb/gadget/legacy/mass_storage.c b/drivers/usb/gadget/legacy/mass_storage.c
index e99ab57ee3e5..fcba59782f26 100644
--- a/drivers/usb/gadget/legacy/mass_storage.c
+++ b/drivers/usb/gadget/legacy/mass_storage.c
@@ -107,15 +107,6 @@ static unsigned int fsg_num_buffers = CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS;
FSG_MODULE_PARAMETERS(/* no prefix */, mod_data);
-static unsigned long msg_registered;
-static void msg_cleanup(void);
-
-static int msg_thread_exits(struct fsg_common *common)
-{
- msg_cleanup();
- return 0;
-}
-
static int msg_do_config(struct usb_configuration *c)
{
struct fsg_opts *opts;
@@ -154,9 +145,6 @@ static struct usb_configuration msg_config_driver = {
static int msg_bind(struct usb_composite_dev *cdev)
{
- static const struct fsg_operations ops = {
- .thread_exits = msg_thread_exits,
- };
struct fsg_opts *opts;
struct fsg_config config;
int status;
@@ -173,8 +161,6 @@ static int msg_bind(struct usb_composite_dev *cdev)
if (status)
goto fail;
- fsg_common_set_ops(opts->common, &ops);
-
status = fsg_common_set_cdev(opts->common, cdev, config.can_stall);
if (status)
goto fail_set_cdev;
@@ -256,18 +242,12 @@ MODULE_LICENSE("GPL");
static int __init msg_init(void)
{
- int ret;
-
- ret = usb_composite_probe(&msg_driver);
- set_bit(0, &msg_registered);
-
- return ret;
+ return usb_composite_probe(&msg_driver);
}
module_init(msg_init);
-static void msg_cleanup(void)
+static void __exit msg_cleanup(void)
{
- if (test_and_clear_bit(0, &msg_registered))
- usb_composite_unregister(&msg_driver);
+ usb_composite_unregister(&msg_driver);
}
module_exit(msg_cleanup);
diff --git a/drivers/usb/gadget/udc/Kconfig b/drivers/usb/gadget/udc/Kconfig
index 7cd5c969fcbe..1e9567091d86 100644
--- a/drivers/usb/gadget/udc/Kconfig
+++ b/drivers/usb/gadget/udc/Kconfig
@@ -273,6 +273,7 @@ config USB_SNP_CORE
config USB_SNP_UDC_PLAT
tristate "Synopsys USB 2.0 Device controller"
depends on USB_GADGET && OF && HAS_DMA
+ depends on EXTCON || EXTCON=n
select USB_GADGET_DUALSPEED
select USB_SNP_CORE
default ARCH_BCM_IPROC
diff --git a/drivers/usb/gadget/udc/Makefile b/drivers/usb/gadget/udc/Makefile
index ea9e1c7f1923..ce865b129fd6 100644
--- a/drivers/usb/gadget/udc/Makefile
+++ b/drivers/usb/gadget/udc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# define_trace.h needs to know how to find our header
CFLAGS_trace.o := -I$(src)
diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.c b/drivers/usb/gadget/udc/atmel_usba_udc.c
index 98d71400f8a1..a884c022df7a 100644
--- a/drivers/usb/gadget/udc/atmel_usba_udc.c
+++ b/drivers/usb/gadget/udc/atmel_usba_udc.c
@@ -29,6 +29,8 @@
#include <linux/of_gpio.h>
#include "atmel_usba_udc.h"
+#define USBA_VBUS_IRQFLAGS (IRQF_ONESHOT \
+ | IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING)
#ifdef CONFIG_USB_GADGET_DEBUG_FS
#include <linux/debugfs.h>
@@ -2361,7 +2363,7 @@ static int usba_udc_probe(struct platform_device *pdev)
IRQ_NOAUTOEN);
ret = devm_request_threaded_irq(&pdev->dev,
gpio_to_irq(udc->vbus_pin), NULL,
- usba_vbus_irq_thread, IRQF_ONESHOT,
+ usba_vbus_irq_thread, USBA_VBUS_IRQFLAGS,
"atmel_usba_udc", udc);
if (ret) {
udc->vbus_pin = -ENODEV;
diff --git a/drivers/usb/gadget/udc/bdc/Makefile b/drivers/usb/gadget/udc/bdc/Makefile
index 5cf6a3bcdf0f..52cb5ea48bbe 100644
--- a/drivers/usb/gadget/udc/bdc/Makefile
+++ b/drivers/usb/gadget/udc/bdc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_USB_BDC_UDC) += bdc.o
bdc-y := bdc_core.o bdc_cmd.o bdc_ep.o bdc_udc.o
diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c
index 75c51ca4ee0f..d41d07aae0ce 100644
--- a/drivers/usb/gadget/udc/core.c
+++ b/drivers/usb/gadget/udc/core.c
@@ -1320,8 +1320,7 @@ static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *dri
udc->dev.driver = &driver->driver;
udc->gadget->dev.driver = &driver->driver;
- if (driver->max_speed < udc->gadget->max_speed)
- usb_gadget_udc_set_speed(udc, driver->max_speed);
+ usb_gadget_udc_set_speed(udc, driver->max_speed);
ret = driver->bind(udc->gadget, driver);
if (ret)
diff --git a/drivers/usb/gadget/udc/dummy_hcd.c b/drivers/usb/gadget/udc/dummy_hcd.c
index a030d7923d7d..f04e91ef9e7c 100644
--- a/drivers/usb/gadget/udc/dummy_hcd.c
+++ b/drivers/usb/gadget/udc/dummy_hcd.c
@@ -237,6 +237,8 @@ struct dummy_hcd {
struct usb_device *udev;
struct list_head urbp_list;
+ struct urbp *next_frame_urbp;
+
u32 stream_en_ep;
u8 num_stream[30 / 2];
@@ -253,11 +255,13 @@ struct dummy {
*/
struct dummy_ep ep[DUMMY_ENDPOINTS];
int address;
+ int callback_usage;
struct usb_gadget gadget;
struct usb_gadget_driver *driver;
struct dummy_request fifo_req;
u8 fifo_buf[FIFO_SIZE];
u16 devstatus;
+ unsigned ints_enabled:1;
unsigned udc_suspended:1;
unsigned pullup:1;
@@ -375,11 +379,10 @@ static void set_link_state_by_speed(struct dummy_hcd *dum_hcd)
USB_PORT_STAT_CONNECTION) == 0)
dum_hcd->port_status |=
(USB_PORT_STAT_C_CONNECTION << 16);
- if ((dum_hcd->port_status &
- USB_PORT_STAT_ENABLE) == 1 &&
- (dum_hcd->port_status &
- USB_SS_PORT_LS_U0) == 1 &&
- dum_hcd->rh_state != DUMMY_RH_SUSPENDED)
+ if ((dum_hcd->port_status & USB_PORT_STAT_ENABLE) &&
+ (dum_hcd->port_status &
+ USB_PORT_STAT_LINK_STATE) == USB_SS_PORT_LS_U0 &&
+ dum_hcd->rh_state != DUMMY_RH_SUSPENDED)
dum_hcd->active = 1;
}
} else {
@@ -416,6 +419,7 @@ static void set_link_state_by_speed(struct dummy_hcd *dum_hcd)
static void set_link_state(struct dummy_hcd *dum_hcd)
{
struct dummy *dum = dum_hcd->dum;
+ unsigned int power_bit;
dum_hcd->active = 0;
if (dum->pullup)
@@ -426,32 +430,43 @@ static void set_link_state(struct dummy_hcd *dum_hcd)
return;
set_link_state_by_speed(dum_hcd);
+ power_bit = (dummy_hcd_to_hcd(dum_hcd)->speed == HCD_USB3 ?
+ USB_SS_PORT_STAT_POWER : USB_PORT_STAT_POWER);
if ((dum_hcd->port_status & USB_PORT_STAT_ENABLE) == 0 ||
dum_hcd->active)
dum_hcd->resuming = 0;
/* Currently !connected or in reset */
- if ((dum_hcd->port_status & USB_PORT_STAT_CONNECTION) == 0 ||
+ if ((dum_hcd->port_status & power_bit) == 0 ||
(dum_hcd->port_status & USB_PORT_STAT_RESET) != 0) {
- unsigned disconnect = USB_PORT_STAT_CONNECTION &
+ unsigned int disconnect = power_bit &
dum_hcd->old_status & (~dum_hcd->port_status);
- unsigned reset = USB_PORT_STAT_RESET &
+ unsigned int reset = USB_PORT_STAT_RESET &
(~dum_hcd->old_status) & dum_hcd->port_status;
/* Report reset and disconnect events to the driver */
- if (dum->driver && (disconnect || reset)) {
+ if (dum->ints_enabled && (disconnect || reset)) {
stop_activity(dum);
+ ++dum->callback_usage;
+ spin_unlock(&dum->lock);
if (reset)
usb_gadget_udc_reset(&dum->gadget, dum->driver);
else
dum->driver->disconnect(&dum->gadget);
+ spin_lock(&dum->lock);
+ --dum->callback_usage;
}
- } else if (dum_hcd->active != dum_hcd->old_active) {
+ } else if (dum_hcd->active != dum_hcd->old_active &&
+ dum->ints_enabled) {
+ ++dum->callback_usage;
+ spin_unlock(&dum->lock);
if (dum_hcd->old_active && dum->driver->suspend)
dum->driver->suspend(&dum->gadget);
else if (!dum_hcd->old_active && dum->driver->resume)
dum->driver->resume(&dum->gadget);
+ spin_lock(&dum->lock);
+ --dum->callback_usage;
}
dum_hcd->old_status = dum_hcd->port_status;
@@ -972,8 +987,11 @@ static int dummy_udc_start(struct usb_gadget *g,
* can't enumerate without help from the driver we're binding.
*/
+ spin_lock_irq(&dum->lock);
dum->devstatus = 0;
dum->driver = driver;
+ dum->ints_enabled = 1;
+ spin_unlock_irq(&dum->lock);
return 0;
}
@@ -984,6 +1002,16 @@ static int dummy_udc_stop(struct usb_gadget *g)
struct dummy *dum = dum_hcd->dum;
spin_lock_irq(&dum->lock);
+ dum->ints_enabled = 0;
+ stop_activity(dum);
+
+ /* emulate synchronize_irq(): wait for callbacks to finish */
+ while (dum->callback_usage > 0) {
+ spin_unlock_irq(&dum->lock);
+ usleep_range(1000, 2000);
+ spin_lock_irq(&dum->lock);
+ }
+
dum->driver = NULL;
spin_unlock_irq(&dum->lock);
@@ -1037,7 +1065,12 @@ static int dummy_udc_probe(struct platform_device *pdev)
memzero_explicit(&dum->gadget, sizeof(struct usb_gadget));
dum->gadget.name = gadget_name;
dum->gadget.ops = &dummy_ops;
- dum->gadget.max_speed = USB_SPEED_SUPER;
+ if (mod_data.is_super_speed)
+ dum->gadget.max_speed = USB_SPEED_SUPER;
+ else if (mod_data.is_high_speed)
+ dum->gadget.max_speed = USB_SPEED_HIGH;
+ else
+ dum->gadget.max_speed = USB_SPEED_FULL;
dum->gadget.dev.parent = &pdev->dev;
init_dummy_udc_hw(dum);
@@ -1246,6 +1279,8 @@ static int dummy_urb_enqueue(
list_add_tail(&urbp->urbp_list, &dum_hcd->urbp_list);
urb->hcpriv = urbp;
+ if (!dum_hcd->next_frame_urbp)
+ dum_hcd->next_frame_urbp = urbp;
if (usb_pipetype(urb->pipe) == PIPE_CONTROL)
urb->error_count = 1; /* mark as a new urb */
@@ -1521,6 +1556,8 @@ static struct dummy_ep *find_endpoint(struct dummy *dum, u8 address)
if (!is_active((dum->gadget.speed == USB_SPEED_SUPER ?
dum->ss_hcd : dum->hs_hcd)))
return NULL;
+ if (!dum->ints_enabled)
+ return NULL;
if ((address & ~USB_DIR_IN) == 0)
return &dum->ep[0];
for (i = 1; i < DUMMY_ENDPOINTS; i++) {
@@ -1762,6 +1799,7 @@ static void dummy_timer(unsigned long _dum_hcd)
spin_unlock_irqrestore(&dum->lock, flags);
return;
}
+ dum_hcd->next_frame_urbp = NULL;
for (i = 0; i < DUMMY_ENDPOINTS; i++) {
if (!ep_info[i].name)
@@ -1778,6 +1816,10 @@ restart:
int type;
int status = -EINPROGRESS;
+ /* stop when we reach URBs queued after the timer interrupt */
+ if (urbp == dum_hcd->next_frame_urbp)
+ break;
+
urb = urbp->urb;
if (urb->unlinked)
goto return_urb;
@@ -1857,10 +1899,12 @@ restart:
* until setup() returns; no reentrancy issues etc.
*/
if (value > 0) {
+ ++dum->callback_usage;
spin_unlock(&dum->lock);
value = dum->driver->setup(&dum->gadget,
&setup);
spin_lock(&dum->lock);
+ --dum->callback_usage;
if (value >= 0) {
/* no delays (max 64KB data stage) */
@@ -2561,8 +2605,6 @@ static struct hc_driver dummy_hcd = {
.product_desc = "Dummy host controller",
.hcd_priv_size = sizeof(struct dummy_hcd),
- .flags = HCD_USB3 | HCD_SHARED,
-
.reset = dummy_setup,
.start = dummy_start,
.stop = dummy_stop,
@@ -2591,8 +2633,12 @@ static int dummy_hcd_probe(struct platform_device *pdev)
dev_info(&pdev->dev, "%s, driver " DRIVER_VERSION "\n", driver_desc);
dum = *((void **)dev_get_platdata(&pdev->dev));
- if (!mod_data.is_super_speed)
+ if (mod_data.is_super_speed)
+ dummy_hcd.flags = HCD_USB3 | HCD_SHARED;
+ else if (mod_data.is_high_speed)
dummy_hcd.flags = HCD_USB2;
+ else
+ dummy_hcd.flags = HCD_USB11;
hs_hcd = usb_create_hcd(&dummy_hcd, &pdev->dev, dev_name(&pdev->dev));
if (!hs_hcd)
return -ENOMEM;
diff --git a/drivers/usb/gadget/udc/omap_udc.h b/drivers/usb/gadget/udc/omap_udc.h
index 26974196cf44..00f9e608e755 100644
--- a/drivers/usb/gadget/udc/omap_udc.h
+++ b/drivers/usb/gadget/udc/omap_udc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* omap_udc.h -- for omap 3.2 udc, with OTG support
*
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c
index df37c1e6e9d5..63a206122058 100644
--- a/drivers/usb/gadget/udc/renesas_usb3.c
+++ b/drivers/usb/gadget/udc/renesas_usb3.c
@@ -1038,7 +1038,7 @@ static int usb3_write_pipe(struct renesas_usb3_ep *usb3_ep,
usb3_ep->ep.maxpacket);
u8 *buf = usb3_req->req.buf + usb3_req->req.actual;
u32 tmp = 0;
- bool is_last;
+ bool is_last = !len ? true : false;
if (usb3_wait_pipe_status(usb3_ep, PX_STA_BUFSTS) < 0)
return -EBUSY;
@@ -1059,7 +1059,8 @@ static int usb3_write_pipe(struct renesas_usb3_ep *usb3_ep,
usb3_write(usb3, tmp, fifo_reg);
}
- is_last = usb3_is_transfer_complete(usb3_ep, usb3_req);
+ if (!is_last)
+ is_last = usb3_is_transfer_complete(usb3_ep, usb3_req);
/* Send the data */
usb3_set_px_con_send(usb3_ep, len, is_last);
@@ -1150,7 +1151,8 @@ static void usb3_start_pipe0(struct renesas_usb3_ep *usb3_ep,
usb3_set_p0_con_for_ctrl_read_data(usb3);
} else {
usb3_clear_bit(usb3, P0_MOD_DIR, USB3_P0_MOD);
- usb3_set_p0_con_for_ctrl_write_data(usb3);
+ if (usb3_req->req.length)
+ usb3_set_p0_con_for_ctrl_write_data(usb3);
}
usb3_p0_xfer(usb3_ep, usb3_req);
@@ -2053,7 +2055,16 @@ static u32 usb3_calc_ramarea(int ram_size)
static u32 usb3_calc_rammap_val(struct renesas_usb3_ep *usb3_ep,
const struct usb_endpoint_descriptor *desc)
{
- return usb3_ep->rammap_val | PN_RAMMAP_MPKT(usb_endpoint_maxp(desc));
+ int i;
+ const u32 max_packet_array[] = {8, 16, 32, 64, 512};
+ u32 mpkt = PN_RAMMAP_MPKT(1024);
+
+ for (i = 0; i < ARRAY_SIZE(max_packet_array); i++) {
+ if (usb_endpoint_maxp(desc) <= max_packet_array[i])
+ mpkt = PN_RAMMAP_MPKT(max_packet_array[i]);
+ }
+
+ return usb3_ep->rammap_val | mpkt;
}
static int usb3_enable_pipe_n(struct renesas_usb3_ep *usb3_ep,
diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
index cf2691fffcc0..4ab2689c8952 100644
--- a/drivers/usb/host/Makefile
+++ b/drivers/usb/host/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for USB Host Controller Drivers
#
diff --git a/drivers/usb/host/fotg210.h b/drivers/usb/host/fotg210.h
index b5cfa7aeb277..7fcd785c7bc8 100644
--- a/drivers/usb/host/fotg210.h
+++ b/drivers/usb/host/fotg210.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_FOTG210_H
#define __LINUX_FOTG210_H
diff --git a/drivers/usb/host/isp116x.h b/drivers/usb/host/isp116x.h
index dd34b7a33965..a5e929c10d53 100644
--- a/drivers/usb/host/isp116x.h
+++ b/drivers/usb/host/isp116x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ISP116x register declarations and HCD data structures
*
diff --git a/drivers/usb/host/isp1362.h b/drivers/usb/host/isp1362.h
index 3b0b4847c3a9..da79e36ced89 100644
--- a/drivers/usb/host/isp1362.h
+++ b/drivers/usb/host/isp1362.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ISP1362 HCD (Host Controller Driver) for USB.
*
diff --git a/drivers/usb/host/oxu210hp.h b/drivers/usb/host/oxu210hp.h
index 1c216ad9aad2..437044147862 100644
--- a/drivers/usb/host/oxu210hp.h
+++ b/drivers/usb/host/oxu210hp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Host interface registers
*/
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index 658d9d1f9ea3..6dda3623a276 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -447,7 +447,7 @@ static int usb_asmedia_wait_write(struct pci_dev *pdev)
if ((value & ASMT_CONTROL_WRITE_BIT) == 0)
return 0;
- usleep_range(40, 60);
+ udelay(50);
}
dev_warn(&pdev->dev, "%s: check_write_ready timeout", __func__);
@@ -1022,7 +1022,7 @@ EXPORT_SYMBOL_GPL(usb_disable_xhci_ports);
*
* Takes care of the handoff between the Pre-OS (i.e. BIOS) and the OS.
* It signals to the BIOS that the OS wants control of the host controller,
- * and then waits 5 seconds for the BIOS to hand over control.
+ * and then waits 1 second for the BIOS to hand over control.
* If we timeout, assume the BIOS is broken and take control anyway.
*/
static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
@@ -1069,9 +1069,9 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
if (val & XHCI_HC_BIOS_OWNED) {
writel(val | XHCI_HC_OS_OWNED, base + ext_cap_offset);
- /* Wait for 5 seconds with 10 microsecond polling interval */
+ /* Wait for 1 second with 10 microsecond polling interval */
timeout = handshake(base + ext_cap_offset, XHCI_HC_BIOS_OWNED,
- 0, 5000, 10);
+ 0, 1000000, 10);
/* Assume a buggy BIOS and take HC ownership anyway */
if (timeout) {
@@ -1100,7 +1100,7 @@ hc_init:
* operational or runtime registers. Wait 5 seconds and no more.
*/
timeout = handshake(op_reg_base + XHCI_STS_OFFSET, XHCI_STS_CNR, 0,
- 5000, 10);
+ 5000000, 10);
/* Assume a buggy HC and start HC initialization anyway */
if (timeout) {
val = readl(op_reg_base + XHCI_STS_OFFSET);
diff --git a/drivers/usb/host/pci-quirks.h b/drivers/usb/host/pci-quirks.h
index 5582cbafecd4..b68dcb5dd0fd 100644
--- a/drivers/usb/host/pci-quirks.h
+++ b/drivers/usb/host/pci-quirks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_USB_PCI_QUIRKS_H
#define __LINUX_USB_PCI_QUIRKS_H
diff --git a/drivers/usb/host/sl811.h b/drivers/usb/host/sl811.h
index 1e23ef49bec1..2abe51a5db44 100644
--- a/drivers/usb/host/sl811.h
+++ b/drivers/usb/host/sl811.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SL811HS register declarations and HCD data structures
*
diff --git a/drivers/usb/host/uhci-debug.c b/drivers/usb/host/uhci-debug.c
index 9c6635d43db0..c4e67c4b51f6 100644
--- a/drivers/usb/host/uhci-debug.c
+++ b/drivers/usb/host/uhci-debug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* UHCI-specific debugging code. Invaluable when something
* goes wrong, but don't get in my face.
diff --git a/drivers/usb/host/uhci-grlib.c b/drivers/usb/host/uhci-grlib.c
index 0342991c9507..2103b1ed0f8f 100644
--- a/drivers/usb/host/uhci-grlib.c
+++ b/drivers/usb/host/uhci-grlib.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* UHCI HCD (Host Controller Driver) for GRLIB GRUSBHC
*
diff --git a/drivers/usb/host/uhci-hcd.h b/drivers/usb/host/uhci-hcd.h
index 91b22b2ea3aa..d97f0d9b3ce6 100644
--- a/drivers/usb/host/uhci-hcd.h
+++ b/drivers/usb/host/uhci-hcd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_UHCI_HCD_H
#define __LINUX_UHCI_HCD_H
diff --git a/drivers/usb/host/uhci-hub.c b/drivers/usb/host/uhci-hub.c
index ece9e37e89fe..47106dd8ca7c 100644
--- a/drivers/usb/host/uhci-hub.c
+++ b/drivers/usb/host/uhci-hub.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Universal Host Controller Interface driver for USB.
*
diff --git a/drivers/usb/host/uhci-pci.c b/drivers/usb/host/uhci-pci.c
index 49effdc0d857..0dd944277c99 100644
--- a/drivers/usb/host/uhci-pci.c
+++ b/drivers/usb/host/uhci-pci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* UHCI HCD (Host Controller Driver) PCI Bus Glue.
*
diff --git a/drivers/usb/host/uhci-platform.c b/drivers/usb/host/uhci-platform.c
index 1b4e086c33a0..6cb16d4b2257 100644
--- a/drivers/usb/host/uhci-platform.c
+++ b/drivers/usb/host/uhci-platform.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generic UHCI HCD (Host Controller Driver) for Platform Devices
*
diff --git a/drivers/usb/host/uhci-q.c b/drivers/usb/host/uhci-q.c
index c17ea1589b83..49d4edc03cc2 100644
--- a/drivers/usb/host/uhci-q.c
+++ b/drivers/usb/host/uhci-q.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Universal Host Controller Interface driver for USB.
*
diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
index ad89a6d4111b..a2336deb5e36 100644
--- a/drivers/usb/host/xhci-hub.c
+++ b/drivers/usb/host/xhci-hub.c
@@ -112,7 +112,7 @@ static int xhci_create_usb3_bos_desc(struct xhci_hcd *xhci, char *buf,
/* If PSI table exists, add the custom speed attributes from it */
if (usb3_1 && xhci->usb3_rhub.psi_count) {
- u32 ssp_cap_base, bm_attrib, psi;
+ u32 ssp_cap_base, bm_attrib, psi, psi_mant, psi_exp;
int offset;
ssp_cap_base = USB_DT_BOS_SIZE + USB_DT_USB_SS_CAP_SIZE;
@@ -139,6 +139,15 @@ static int xhci_create_usb3_bos_desc(struct xhci_hcd *xhci, char *buf,
for (i = 0; i < xhci->usb3_rhub.psi_count; i++) {
psi = xhci->usb3_rhub.psi[i];
psi &= ~USB_SSP_SUBLINK_SPEED_RSVD;
+ psi_exp = XHCI_EXT_PORT_PSIE(psi);
+ psi_mant = XHCI_EXT_PORT_PSIM(psi);
+
+ /* Shift to Gbps and set SSP Link BIT(14) if 10Gpbs */
+ for (; psi_exp < 3; psi_exp++)
+ psi_mant /= 1000;
+ if (psi_mant >= 10)
+ psi |= BIT(14);
+
if ((psi & PLT_MASK) == PLT_SYM) {
/* Symmetric, create SSA RX and TX from one PSI entry */
put_unaligned_le32(psi, &buf[offset]);
@@ -411,14 +420,25 @@ static int xhci_stop_device(struct xhci_hcd *xhci, int slot_id, int suspend)
GFP_NOWAIT);
if (!command) {
spin_unlock_irqrestore(&xhci->lock, flags);
- xhci_free_command(xhci, cmd);
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto cmd_cleanup;
+ }
+
+ ret = xhci_queue_stop_endpoint(xhci, command, slot_id,
+ i, suspend);
+ if (ret) {
+ spin_unlock_irqrestore(&xhci->lock, flags);
+ xhci_free_command(xhci, command);
+ goto cmd_cleanup;
}
- xhci_queue_stop_endpoint(xhci, command, slot_id, i,
- suspend);
}
}
- xhci_queue_stop_endpoint(xhci, cmd, slot_id, 0, suspend);
+ ret = xhci_queue_stop_endpoint(xhci, cmd, slot_id, 0, suspend);
+ if (ret) {
+ spin_unlock_irqrestore(&xhci->lock, flags);
+ goto cmd_cleanup;
+ }
+
xhci_ring_cmd_db(xhci);
spin_unlock_irqrestore(&xhci->lock, flags);
@@ -430,6 +450,8 @@ static int xhci_stop_device(struct xhci_hcd *xhci, int slot_id, int suspend)
xhci_warn(xhci, "Timeout while waiting for stop endpoint command\n");
ret = -ETIME;
}
+
+cmd_cleanup:
xhci_free_command(xhci, cmd);
return ret;
}
@@ -1506,9 +1528,6 @@ int xhci_bus_suspend(struct usb_hcd *hcd)
t2 |= PORT_WKOC_E | PORT_WKCONN_E;
t2 &= ~PORT_WKDISC_E;
}
- if ((xhci->quirks & XHCI_U2_DISABLE_WAKE) &&
- (hcd->speed < HCD_USB3))
- t2 &= ~PORT_WAKE_BITS;
} else
t2 &= ~PORT_WAKE_BITS;
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 8071c8fdd15e..76f392954733 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -54,11 +54,6 @@
#define PCI_DEVICE_ID_INTEL_APL_XHCI 0x5aa8
#define PCI_DEVICE_ID_INTEL_DNV_XHCI 0x19d0
-#define PCI_DEVICE_ID_AMD_PROMONTORYA_4 0x43b9
-#define PCI_DEVICE_ID_AMD_PROMONTORYA_3 0x43ba
-#define PCI_DEVICE_ID_AMD_PROMONTORYA_2 0x43bb
-#define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc
-
#define PCI_DEVICE_ID_ASMEDIA_1042A_XHCI 0x1142
static const char hcd_name[] = "xhci_hcd";
@@ -142,13 +137,6 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
if (pdev->vendor == PCI_VENDOR_ID_AMD)
xhci->quirks |= XHCI_TRUST_TX_LENGTH;
- if ((pdev->vendor == PCI_VENDOR_ID_AMD) &&
- ((pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_4) ||
- (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_3) ||
- (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_2) ||
- (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_1)))
- xhci->quirks |= XHCI_U2_DISABLE_WAKE;
-
if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
xhci->quirks |= XHCI_LPM_SUPPORT;
xhci->quirks |= XHCI_INTEL_HOST;
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index 163bafde709f..1cb6eaef4ae1 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -178,14 +178,18 @@ static int xhci_plat_probe(struct platform_device *pdev)
* 2. xhci_plat is child of a device from firmware (dwc3-plat)
* 3. xhci_plat is grandchild of a pci device (dwc3-pci)
*/
- sysdev = &pdev->dev;
- if (sysdev->parent && !sysdev->of_node && sysdev->parent->of_node)
- sysdev = sysdev->parent;
+ for (sysdev = &pdev->dev; sysdev; sysdev = sysdev->parent) {
+ if (is_of_node(sysdev->fwnode) ||
+ is_acpi_device_node(sysdev->fwnode))
+ break;
#ifdef CONFIG_PCI
- else if (sysdev->parent && sysdev->parent->parent &&
- sysdev->parent->parent->bus == &pci_bus_type)
- sysdev = sysdev->parent->parent;
+ else if (sysdev->bus == &pci_bus_type)
+ break;
#endif
+ }
+
+ if (!sysdev)
+ sysdev = &pdev->dev;
/* Try to set 64-bit DMA first */
if (WARN_ON(!sysdev->dma_mask))
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index a9443651ce0f..82c746e2d85c 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1309,6 +1309,7 @@ static void xhci_complete_del_and_free_cmd(struct xhci_command *cmd, u32 status)
void xhci_cleanup_command_queue(struct xhci_hcd *xhci)
{
struct xhci_command *cur_cmd, *tmp_cmd;
+ xhci->current_cmd = NULL;
list_for_each_entry_safe(cur_cmd, tmp_cmd, &xhci->cmd_list, cmd_list)
xhci_complete_del_and_free_cmd(cur_cmd, COMP_COMMAND_ABORTED);
}
@@ -2579,15 +2580,21 @@ static int handle_tx_event(struct xhci_hcd *xhci,
(struct xhci_generic_trb *) ep_trb);
/*
- * No-op TRB should not trigger interrupts.
- * If ep_trb is a no-op TRB, it means the
- * corresponding TD has been cancelled. Just ignore
- * the TD.
+ * No-op TRB could trigger interrupts in a case where
+ * a URB was killed and a STALL_ERROR happens right
+ * after the endpoint ring stopped. Reset the halted
+ * endpoint. Otherwise, the endpoint remains stalled
+ * indefinitely.
*/
if (trb_is_noop(ep_trb)) {
- xhci_dbg(xhci,
- "ep_trb is a no-op TRB. Skip it for slot %u ep %u\n",
- slot_id, ep_index);
+ if (trb_comp_code == COMP_STALL_ERROR ||
+ xhci_requires_manual_halt_cleanup(xhci, ep_ctx,
+ trb_comp_code))
+ xhci_cleanup_halted_endpoint(xhci, slot_id,
+ ep_index,
+ ep_ring->stream_id,
+ td, ep_trb,
+ EP_HARD_RESET);
goto cleanup;
}
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index b2ff1ff1a02f..51535ba2bcd4 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -1703,7 +1703,8 @@ static int xhci_add_endpoint(struct usb_hcd *hcd, struct usb_device *udev,
if (xhci->quirks & XHCI_MTK_HOST) {
ret = xhci_mtk_add_ep_quirk(hcd, udev, ep);
if (ret < 0) {
- xhci_free_endpoint_ring(xhci, virt_dev, ep_index);
+ xhci_ring_free(xhci, virt_dev->eps[ep_index].new_ring);
+ virt_dev->eps[ep_index].new_ring = NULL;
return ret;
}
}
@@ -4804,7 +4805,8 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
*/
hcd->has_tt = 1;
} else {
- if (xhci->sbrn == 0x31) {
+ /* Some 3.1 hosts return sbrn 0x30, can't rely on sbrn alone */
+ if (xhci->sbrn == 0x31 || xhci->usb3_rhub.min_rev >= 1) {
xhci_info(xhci, "Host supports USB 3.1 Enhanced SuperSpeed\n");
hcd->speed = HCD_USB31;
hcd->self.root_hub->speed = USB_SPEED_SUPER_PLUS;
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
index 2abaa4d6d39d..2b48aa4f6b76 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -735,6 +735,8 @@ struct xhci_ep_ctx {
#define EP_MAXPSTREAMS(p) (((p) << 10) & EP_MAXPSTREAMS_MASK)
/* Endpoint is set up with a Linear Stream Array (vs. Secondary Stream Array) */
#define EP_HAS_LSA (1 << 15)
+/* hosts with LEC=1 use bits 31:24 as ESIT high bits. */
+#define CTX_TO_MAX_ESIT_PAYLOAD_HI(p) (((p) >> 24) & 0xff)
/* ep_info2 bitmasks */
/*
@@ -1681,7 +1683,7 @@ struct xhci_bus_state {
static inline unsigned int hcd_index(struct usb_hcd *hcd)
{
- if (hcd->speed == HCD_USB3)
+ if (hcd->speed >= HCD_USB3)
return 0;
else
return 1;
@@ -1826,7 +1828,7 @@ struct xhci_hcd {
/* For controller with a broken Port Disable implementation */
#define XHCI_BROKEN_PORT_PED (1 << 25)
#define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26)
-#define XHCI_U2_DISABLE_WAKE (1 << 27)
+/* Reserved. It was XHCI_U2_DISABLE_WAKE */
#define XHCI_ASMEDIA_MODIFY_FLOWCONTROL (1 << 28)
unsigned int num_active_eps;
@@ -2540,8 +2542,8 @@ static inline const char *xhci_decode_ep_context(u32 info, u32 info2, u64 deq,
u8 lsa;
u8 hid;
- esit = EP_MAX_ESIT_PAYLOAD_HI(info) << 16 |
- EP_MAX_ESIT_PAYLOAD_LO(tx_info);
+ esit = CTX_TO_MAX_ESIT_PAYLOAD_HI(info) << 16 |
+ CTX_TO_MAX_ESIT_PAYLOAD(tx_info);
ep_state = info & EP_STATE_MASK;
max_pstr = info & EP_MAXPSTREAMS_MASK;
diff --git a/drivers/usb/image/microtek.h b/drivers/usb/image/microtek.h
index 7e32ae787136..66685e59241a 100644
--- a/drivers/usb/image/microtek.h
+++ b/drivers/usb/image/microtek.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Driver for Microtek Scanmaker X6 USB scanner and possibly others.
*
diff --git a/drivers/usb/isp1760/isp1760-hcd.c b/drivers/usb/isp1760/isp1760-hcd.c
index 8e59e0c02b8a..bb4d6d959871 100644
--- a/drivers/usb/isp1760/isp1760-hcd.c
+++ b/drivers/usb/isp1760/isp1760-hcd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Driver for the NXP ISP1760 chip
*
diff --git a/drivers/usb/isp1760/isp1760-hcd.h b/drivers/usb/isp1760/isp1760-hcd.h
index 0c1c98d6ea08..f1bb2deb1ccf 100644
--- a/drivers/usb/isp1760/isp1760-hcd.h
+++ b/drivers/usb/isp1760/isp1760-hcd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ISP1760_HCD_H_
#define _ISP1760_HCD_H_
diff --git a/drivers/usb/isp1760/isp1760-if.c b/drivers/usb/isp1760/isp1760-if.c
index bc68bbab7fa1..241a00d75027 100644
--- a/drivers/usb/isp1760/isp1760-if.c
+++ b/drivers/usb/isp1760/isp1760-if.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Glue code for the ISP1760 driver and bus
* Currently there is support for
diff --git a/drivers/usb/misc/Makefile b/drivers/usb/misc/Makefile
index 7fdb45fc976f..109f54f5b9aa 100644
--- a/drivers/usb/misc/Makefile
+++ b/drivers/usb/misc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the rest of the USB drivers
# (the ones that don't fit into any other categories)
diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
index eee82ca55b7b..b3fc602b2e24 100644
--- a/drivers/usb/misc/usbtest.c
+++ b/drivers/usb/misc/usbtest.c
@@ -202,12 +202,13 @@ found:
return tmp;
}
- if (in) {
+ if (in)
dev->in_pipe = usb_rcvbulkpipe(udev,
in->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK);
+ if (out)
dev->out_pipe = usb_sndbulkpipe(udev,
out->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK);
- }
+
if (iso_in) {
dev->iso_in = &iso_in->desc;
dev->in_iso_pipe = usb_rcvisocpipe(udev,
@@ -1964,6 +1965,9 @@ test_queue(struct usbtest_dev *dev, struct usbtest_param_32 *param,
int status = 0;
struct urb *urbs[param->sglen];
+ if (!param->sglen || param->iterations > UINT_MAX / param->sglen)
+ return -EINVAL;
+
memset(&context, 0, sizeof(context));
context.count = param->iterations * param->sglen;
context.dev = dev;
@@ -2087,6 +2091,8 @@ usbtest_do_ioctl(struct usb_interface *intf, struct usbtest_param_32 *param)
if (param->iterations <= 0)
return -EINVAL;
+ if (param->sglen > MAX_SGLEN)
+ return -EINVAL;
/*
* Just a bunch of test cases that every HCD is expected to handle.
*
diff --git a/drivers/usb/mon/mon_bin.c b/drivers/usb/mon/mon_bin.c
index b6d8bf475c92..f6ae753ab99b 100644
--- a/drivers/usb/mon/mon_bin.c
+++ b/drivers/usb/mon/mon_bin.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* The USB Monitor, inspired by Dave Harding's USBMon.
*
diff --git a/drivers/usb/mon/mon_stat.c b/drivers/usb/mon/mon_stat.c
index 5bdf73a57498..98ab0cc473d6 100644
--- a/drivers/usb/mon/mon_stat.c
+++ b/drivers/usb/mon/mon_stat.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* The USB Monitor, inspired by Dave Harding's USBMon.
*
diff --git a/drivers/usb/mon/mon_text.c b/drivers/usb/mon/mon_text.c
index 19c416d69eb9..f5e1bb5e5217 100644
--- a/drivers/usb/mon/mon_text.c
+++ b/drivers/usb/mon/mon_text.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* The USB Monitor, inspired by Dave Harding's USBMon.
*
diff --git a/drivers/usb/mon/usb_mon.h b/drivers/usb/mon/usb_mon.h
index df9a4df342c7..aa64efaba366 100644
--- a/drivers/usb/mon/usb_mon.h
+++ b/drivers/usb/mon/usb_mon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* The USB Monitor, inspired by Dave Harding's USBMon.
*
diff --git a/drivers/usb/mtu3/Makefile b/drivers/usb/mtu3/Makefile
index 60e0fff7a847..4a9715812bf9 100644
--- a/drivers/usb/mtu3/Makefile
+++ b/drivers/usb/mtu3/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_USB_MTU3_DEBUG) += -DDEBUG
diff --git a/drivers/usb/musb/Makefile b/drivers/usb/musb/Makefile
index 689d42aba8a9..79d4d5439164 100644
--- a/drivers/usb/musb/Makefile
+++ b/drivers/usb/musb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# for USB OTG silicon based on Mentor Graphics INVENTRA designs
#
diff --git a/drivers/usb/musb/cppi_dma.h b/drivers/usb/musb/cppi_dma.h
index 9bb7c5e45c85..16dd1ed44bb5 100644
--- a/drivers/usb/musb/cppi_dma.h
+++ b/drivers/usb/musb/cppi_dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2005-2006 by Texas Instruments */
#ifndef _CPPI_DMA_H_
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index 029692053dd3..ff5a1a8989d5 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -906,7 +906,7 @@ b_host:
*/
if (int_usb & MUSB_INTR_RESET) {
handled = IRQ_HANDLED;
- if (devctl & MUSB_DEVCTL_HM) {
+ if (is_host_active(musb)) {
/*
* When BABBLE happens what we can depends on which
* platform MUSB is running, because some platforms
@@ -916,9 +916,7 @@ b_host:
* drop the session.
*/
dev_err(musb->controller, "Babble\n");
-
- if (is_host_active(musb))
- musb_recover_from_babble(musb);
+ musb_recover_from_babble(musb);
} else {
musb_dbg(musb, "BUS RESET as %s",
usb_otg_state_string(musb->xceiv->otg->state));
@@ -1861,22 +1859,22 @@ static void musb_pm_runtime_check_session(struct musb *musb)
MUSB_DEVCTL_HR;
switch (devctl & ~s) {
case MUSB_QUIRK_B_INVALID_VBUS_91:
- if (musb->quirk_retries--) {
+ if (musb->quirk_retries && !musb->flush_irq_work) {
musb_dbg(musb,
"Poll devctl on invalid vbus, assume no session");
schedule_delayed_work(&musb->irq_work,
msecs_to_jiffies(1000));
-
+ musb->quirk_retries--;
return;
}
/* fall through */
case MUSB_QUIRK_A_DISCONNECT_19:
- if (musb->quirk_retries--) {
+ if (musb->quirk_retries && !musb->flush_irq_work) {
musb_dbg(musb,
"Poll devctl on possible host mode disconnect");
schedule_delayed_work(&musb->irq_work,
msecs_to_jiffies(1000));
-
+ musb->quirk_retries--;
return;
}
if (!musb->session)
@@ -2681,8 +2679,15 @@ static int musb_suspend(struct device *dev)
musb_platform_disable(musb);
musb_disable_interrupts(musb);
+
+ musb->flush_irq_work = true;
+ while (flush_delayed_work(&musb->irq_work))
+ ;
+ musb->flush_irq_work = false;
+
if (!(musb->io.quirks & MUSB_PRESERVE_SESSION))
musb_writeb(musb->mregs, MUSB_DEVCTL, 0);
+
WARN_ON(!list_empty(&musb->pending_list));
spin_lock_irqsave(&musb->lock, flags);
diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
index c748f4ac1154..20f4614178d9 100644
--- a/drivers/usb/musb/musb_core.h
+++ b/drivers/usb/musb/musb_core.h
@@ -428,6 +428,8 @@ struct musb {
unsigned test_mode:1;
unsigned softconnect:1;
+ unsigned flush_irq_work:1;
+
u8 address;
u8 test_mode_nr;
u16 ackpend; /* ep0 */
diff --git a/drivers/usb/musb/musb_cppi41.c b/drivers/usb/musb/musb_cppi41.c
index ba255280a624..1ec0a4947b6b 100644
--- a/drivers/usb/musb/musb_cppi41.c
+++ b/drivers/usb/musb/musb_cppi41.c
@@ -26,15 +26,28 @@
#define MUSB_DMA_NUM_CHANNELS 15
+#define DA8XX_USB_MODE 0x10
+#define DA8XX_USB_AUTOREQ 0x14
+#define DA8XX_USB_TEARDOWN 0x1c
+
+#define DA8XX_DMA_NUM_CHANNELS 4
+
struct cppi41_dma_controller {
struct dma_controller controller;
- struct cppi41_dma_channel rx_channel[MUSB_DMA_NUM_CHANNELS];
- struct cppi41_dma_channel tx_channel[MUSB_DMA_NUM_CHANNELS];
+ struct cppi41_dma_channel *rx_channel;
+ struct cppi41_dma_channel *tx_channel;
struct hrtimer early_tx;
struct list_head early_tx_list;
u32 rx_mode;
u32 tx_mode;
u32 auto_req;
+
+ u32 tdown_reg;
+ u32 autoreq_reg;
+
+ void (*set_dma_mode)(struct cppi41_dma_channel *cppi41_channel,
+ unsigned int mode);
+ u8 num_channels;
};
static void save_rx_toggle(struct cppi41_dma_channel *cppi41_channel)
@@ -349,6 +362,32 @@ static void cppi41_set_dma_mode(struct cppi41_dma_channel *cppi41_channel,
}
}
+static void da8xx_set_dma_mode(struct cppi41_dma_channel *cppi41_channel,
+ unsigned int mode)
+{
+ struct cppi41_dma_controller *controller = cppi41_channel->controller;
+ struct musb *musb = controller->controller.musb;
+ unsigned int shift;
+ u32 port;
+ u32 new_mode;
+ u32 old_mode;
+
+ old_mode = controller->tx_mode;
+ port = cppi41_channel->port_num;
+
+ shift = (port - 1) * 4;
+ if (!cppi41_channel->is_tx)
+ shift += 16;
+ new_mode = old_mode & ~(3 << shift);
+ new_mode |= mode << shift;
+
+ if (new_mode == old_mode)
+ return;
+ controller->tx_mode = new_mode;
+ musb_writel(musb->ctrl_base, DA8XX_USB_MODE, new_mode);
+}
+
+
static void cppi41_set_autoreq_mode(struct cppi41_dma_channel *cppi41_channel,
unsigned mode)
{
@@ -364,8 +403,8 @@ static void cppi41_set_autoreq_mode(struct cppi41_dma_channel *cppi41_channel,
if (new_mode == old_mode)
return;
controller->auto_req = new_mode;
- musb_writel(controller->controller.musb->ctrl_base, USB_CTRL_AUTOREQ,
- new_mode);
+ musb_writel(controller->controller.musb->ctrl_base,
+ controller->autoreq_reg, new_mode);
}
static bool cppi41_configure_channel(struct dma_channel *channel,
@@ -373,6 +412,7 @@ static bool cppi41_configure_channel(struct dma_channel *channel,
dma_addr_t dma_addr, u32 len)
{
struct cppi41_dma_channel *cppi41_channel = channel->private_data;
+ struct cppi41_dma_controller *controller = cppi41_channel->controller;
struct dma_chan *dc = cppi41_channel->dc;
struct dma_async_tx_descriptor *dma_desc;
enum dma_transfer_direction direction;
@@ -398,7 +438,7 @@ static bool cppi41_configure_channel(struct dma_channel *channel,
musb_writel(musb->ctrl_base,
RNDIS_REG(cppi41_channel->port_num), len);
/* gen rndis */
- cppi41_set_dma_mode(cppi41_channel,
+ controller->set_dma_mode(cppi41_channel,
EP_MODE_DMA_GEN_RNDIS);
/* auto req */
@@ -407,14 +447,15 @@ static bool cppi41_configure_channel(struct dma_channel *channel,
} else {
musb_writel(musb->ctrl_base,
RNDIS_REG(cppi41_channel->port_num), 0);
- cppi41_set_dma_mode(cppi41_channel,
+ controller->set_dma_mode(cppi41_channel,
EP_MODE_DMA_TRANSPARENT);
cppi41_set_autoreq_mode(cppi41_channel,
EP_MODE_AUTOREQ_NONE);
}
} else {
/* fallback mode */
- cppi41_set_dma_mode(cppi41_channel, EP_MODE_DMA_TRANSPARENT);
+ controller->set_dma_mode(cppi41_channel,
+ EP_MODE_DMA_TRANSPARENT);
cppi41_set_autoreq_mode(cppi41_channel, EP_MODE_AUTOREQ_NONE);
len = min_t(u32, packet_sz, len);
}
@@ -445,7 +486,7 @@ static struct dma_channel *cppi41_dma_channel_allocate(struct dma_controller *c,
struct cppi41_dma_channel *cppi41_channel = NULL;
u8 ch_num = hw_ep->epnum - 1;
- if (ch_num >= MUSB_DMA_NUM_CHANNELS)
+ if (ch_num >= controller->num_channels)
return NULL;
if (is_tx)
@@ -581,12 +622,13 @@ static int cppi41_dma_channel_abort(struct dma_channel *channel)
do {
if (is_tx)
- musb_writel(musb->ctrl_base, USB_TDOWN, tdbit);
+ musb_writel(musb->ctrl_base, controller->tdown_reg,
+ tdbit);
ret = dmaengine_terminate_all(cppi41_channel->dc);
} while (ret == -EAGAIN);
if (is_tx) {
- musb_writel(musb->ctrl_base, USB_TDOWN, tdbit);
+ musb_writel(musb->ctrl_base, controller->tdown_reg, tdbit);
csr = musb_readw(epio, MUSB_TXCSR);
if (csr & MUSB_TXCSR_TXPKTRDY) {
@@ -604,7 +646,7 @@ static void cppi41_release_all_dma_chans(struct cppi41_dma_controller *ctrl)
struct dma_chan *dc;
int i;
- for (i = 0; i < MUSB_DMA_NUM_CHANNELS; i++) {
+ for (i = 0; i < ctrl->num_channels; i++) {
dc = ctrl->tx_channel[i].dc;
if (dc)
dma_release_channel(dc);
@@ -656,7 +698,7 @@ static int cppi41_dma_controller_start(struct cppi41_dma_controller *controller)
goto err;
ret = -EINVAL;
- if (port > MUSB_DMA_NUM_CHANNELS || !port)
+ if (port > controller->num_channels || !port)
goto err;
if (is_tx)
cppi41_channel = &controller->tx_channel[port - 1];
@@ -697,6 +739,8 @@ void cppi41_dma_controller_destroy(struct dma_controller *c)
hrtimer_cancel(&controller->early_tx);
cppi41_dma_controller_stop(controller);
+ kfree(controller->rx_channel);
+ kfree(controller->tx_channel);
kfree(controller);
}
EXPORT_SYMBOL_GPL(cppi41_dma_controller_destroy);
@@ -705,6 +749,7 @@ struct dma_controller *
cppi41_dma_controller_create(struct musb *musb, void __iomem *base)
{
struct cppi41_dma_controller *controller;
+ int channel_size;
int ret = 0;
if (!musb->controller->parent->of_node) {
@@ -727,12 +772,37 @@ cppi41_dma_controller_create(struct musb *musb, void __iomem *base)
controller->controller.is_compatible = cppi41_is_compatible;
controller->controller.musb = musb;
+ if (musb->io.quirks & MUSB_DA8XX) {
+ controller->tdown_reg = DA8XX_USB_TEARDOWN;
+ controller->autoreq_reg = DA8XX_USB_AUTOREQ;
+ controller->set_dma_mode = da8xx_set_dma_mode;
+ controller->num_channels = DA8XX_DMA_NUM_CHANNELS;
+ } else {
+ controller->tdown_reg = USB_TDOWN;
+ controller->autoreq_reg = USB_CTRL_AUTOREQ;
+ controller->set_dma_mode = cppi41_set_dma_mode;
+ controller->num_channels = MUSB_DMA_NUM_CHANNELS;
+ }
+
+ channel_size = controller->num_channels *
+ sizeof(struct cppi41_dma_channel);
+ controller->rx_channel = kzalloc(channel_size, GFP_KERNEL);
+ if (!controller->rx_channel)
+ goto rx_channel_alloc_fail;
+ controller->tx_channel = kzalloc(channel_size, GFP_KERNEL);
+ if (!controller->tx_channel)
+ goto tx_channel_alloc_fail;
+
ret = cppi41_dma_controller_start(controller);
if (ret)
goto plat_get_fail;
return &controller->controller;
plat_get_fail:
+ kfree(controller->tx_channel);
+tx_channel_alloc_fail:
+ kfree(controller->rx_channel);
+rx_channel_alloc_fail:
kfree(controller);
kzalloc_fail:
if (ret == -EPROBE_DEFER)
diff --git a/drivers/usb/musb/sunxi.c b/drivers/usb/musb/sunxi.c
index c9a09b5bb6e5..dc353e24d53c 100644
--- a/drivers/usb/musb/sunxi.c
+++ b/drivers/usb/musb/sunxi.c
@@ -297,6 +297,8 @@ static int sunxi_musb_exit(struct musb *musb)
if (test_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags))
sunxi_sram_release(musb->controller->parent);
+ devm_usb_put_phy(glue->dev, glue->xceiv);
+
return 0;
}
diff --git a/drivers/usb/phy/Makefile b/drivers/usb/phy/Makefile
index e7c9ca8cafb0..0c40ccc90631 100644
--- a/drivers/usb/phy/Makefile
+++ b/drivers/usb/phy/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for physical layer USB drivers
#
diff --git a/drivers/usb/phy/phy-am335x-control.h b/drivers/usb/phy/phy-am335x-control.h
index e86b3165d69d..cd4acfc6e360 100644
--- a/drivers/usb/phy/phy-am335x-control.h
+++ b/drivers/usb/phy/phy-am335x-control.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AM335x_PHY_CONTROL_H_
#define _AM335x_PHY_CONTROL_H_
diff --git a/drivers/usb/phy/phy-generic.h b/drivers/usb/phy/phy-generic.h
index 0d0eadd54ed9..97289627561d 100644
--- a/drivers/usb/phy/phy-generic.h
+++ b/drivers/usb/phy/phy-generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PHY_GENERIC_H_
#define _PHY_GENERIC_H_
diff --git a/drivers/usb/phy/phy-tegra-usb.c b/drivers/usb/phy/phy-tegra-usb.c
index 5fe4a5704bde..ccc2bf5274b4 100644
--- a/drivers/usb/phy/phy-tegra-usb.c
+++ b/drivers/usb/phy/phy-tegra-usb.c
@@ -329,6 +329,14 @@ static void utmi_phy_clk_disable(struct tegra_usb_phy *phy)
unsigned long val;
void __iomem *base = phy->regs;
+ /*
+ * The USB driver may have already initiated the phy clock
+ * disable so wait to see if the clock turns off and if not
+ * then proceed with gating the clock.
+ */
+ if (utmi_wait_register(base + USB_SUSP_CTRL, USB_PHY_CLK_VALID, 0) == 0)
+ return;
+
if (phy->is_legacy_phy) {
val = readl(base + USB_SUSP_CTRL);
val |= USB_SUSP_SET;
@@ -351,6 +359,15 @@ static void utmi_phy_clk_enable(struct tegra_usb_phy *phy)
unsigned long val;
void __iomem *base = phy->regs;
+ /*
+ * The USB driver may have already initiated the phy clock
+ * enable so wait to see if the clock turns on and if not
+ * then proceed with ungating the clock.
+ */
+ if (utmi_wait_register(base + USB_SUSP_CTRL, USB_PHY_CLK_VALID,
+ USB_PHY_CLK_VALID) == 0)
+ return;
+
if (phy->is_legacy_phy) {
val = readl(base + USB_SUSP_CTRL);
val |= USB_SUSP_CLR;
diff --git a/drivers/usb/renesas_usbhs/Makefile b/drivers/usb/renesas_usbhs/Makefile
index d787d05f6546..fac147a3ad23 100644
--- a/drivers/usb/renesas_usbhs/Makefile
+++ b/drivers/usb/renesas_usbhs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# for Renesas USB
#
diff --git a/drivers/usb/renesas_usbhs/fifo.c b/drivers/usb/renesas_usbhs/fifo.c
index d1af831f43eb..50285b01da92 100644
--- a/drivers/usb/renesas_usbhs/fifo.c
+++ b/drivers/usb/renesas_usbhs/fifo.c
@@ -282,11 +282,26 @@ static void usbhsf_fifo_clear(struct usbhs_pipe *pipe,
struct usbhs_fifo *fifo)
{
struct usbhs_priv *priv = usbhs_pipe_to_priv(pipe);
+ int ret = 0;
- if (!usbhs_pipe_is_dcp(pipe))
- usbhsf_fifo_barrier(priv, fifo);
+ if (!usbhs_pipe_is_dcp(pipe)) {
+ /*
+ * This driver checks the pipe condition first to avoid -EBUSY
+ * from usbhsf_fifo_barrier() with about 10 msec delay in
+ * the interrupt handler if the pipe is RX direction and empty.
+ */
+ if (usbhs_pipe_is_dir_in(pipe))
+ ret = usbhs_pipe_is_accessible(pipe);
+ if (!ret)
+ ret = usbhsf_fifo_barrier(priv, fifo);
+ }
- usbhs_write(priv, fifo->ctr, BCLR);
+ /*
+ * if non-DCP pipe, this driver should set BCLR when
+ * usbhsf_fifo_barrier() returns 0.
+ */
+ if (!ret)
+ usbhs_write(priv, fifo->ctr, BCLR);
}
static int usbhsf_fifo_rcv_len(struct usbhs_priv *priv,
@@ -842,9 +857,9 @@ static void xfer_work(struct work_struct *work)
fifo->name, usbhs_pipe_number(pipe), pkt->length, pkt->zero);
usbhs_pipe_running(pipe, 1);
- usbhsf_dma_start(pipe, fifo);
usbhs_pipe_set_trans_count_if_bulk(pipe, pkt->trans);
dma_async_issue_pending(chan);
+ usbhsf_dma_start(pipe, fifo);
usbhs_pipe_enable(pipe);
xfer_work_end:
diff --git a/drivers/usb/serial/Makefile b/drivers/usb/serial/Makefile
index 5a21a82390e1..2d491e434f11 100644
--- a/drivers/usb/serial/Makefile
+++ b/drivers/usb/serial/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the USB serial device drivers.
#
diff --git a/drivers/usb/serial/console.c b/drivers/usb/serial/console.c
index fdf89800ebc3..43a862a90a77 100644
--- a/drivers/usb/serial/console.c
+++ b/drivers/usb/serial/console.c
@@ -186,6 +186,7 @@ static int usb_console_setup(struct console *co, char *options)
tty_kref_put(tty);
reset_open_count:
port->port.count = 0;
+ info->port = NULL;
usb_autopm_put_interface(serial->interface);
error_get_interface:
usb_serial_put(serial);
@@ -265,7 +266,7 @@ static struct console usbcons = {
void usb_serial_console_disconnect(struct usb_serial *serial)
{
- if (serial->port[0] == usbcons_info.port) {
+ if (serial->port[0] && serial->port[0] == usbcons_info.port) {
usb_serial_console_exit();
usb_serial_put(serial);
}
diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index 2d945c9f975c..412f812522ee 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -177,6 +177,7 @@ static const struct usb_device_id id_table[] = {
{ USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
{ USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
{ USB_DEVICE(0x18EF, 0xE025) }, /* ELV Marble Sound Board 1 */
+ { USB_DEVICE(0x18EF, 0xE032) }, /* ELV TFD500 Data Logger */
{ USB_DEVICE(0x1901, 0x0190) }, /* GE B850 CP2105 Recorder interface */
{ USB_DEVICE(0x1901, 0x0193) }, /* GE B650 CP2104 PMC interface */
{ USB_DEVICE(0x1901, 0x0194) }, /* GE Healthcare Remote Alarm Box */
@@ -352,6 +353,7 @@ static struct usb_serial_driver * const serial_drivers[] = {
#define CP210X_PARTNUM_CP2104 0x04
#define CP210X_PARTNUM_CP2105 0x05
#define CP210X_PARTNUM_CP2108 0x08
+#define CP210X_PARTNUM_UNKNOWN 0xFF
/* CP210X_GET_COMM_STATUS returns these 0x13 bytes */
struct cp210x_comm_status {
@@ -1491,8 +1493,11 @@ static int cp210x_attach(struct usb_serial *serial)
result = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST,
CP210X_GET_PARTNUM, &priv->partnum,
sizeof(priv->partnum));
- if (result < 0)
- goto err_free_priv;
+ if (result < 0) {
+ dev_warn(&serial->interface->dev,
+ "querying part number failed\n");
+ priv->partnum = CP210X_PARTNUM_UNKNOWN;
+ }
usb_set_serial_data(serial, priv);
@@ -1505,10 +1510,6 @@ static int cp210x_attach(struct usb_serial *serial)
}
return 0;
-err_free_priv:
- kfree(priv);
-
- return result;
}
static void cp210x_disconnect(struct usb_serial *serial)
diff --git a/drivers/usb/serial/cypress_m8.h b/drivers/usb/serial/cypress_m8.h
index 119d2e17077b..35e223751c0e 100644
--- a/drivers/usb/serial/cypress_m8.h
+++ b/drivers/usb/serial/cypress_m8.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef CYPRESS_M8_H
#define CYPRESS_M8_H
diff --git a/drivers/usb/serial/ezusb_convert.pl b/drivers/usb/serial/ezusb_convert.pl
index 13f11469116e..40d23f21ec74 100644
--- a/drivers/usb/serial/ezusb_convert.pl
+++ b/drivers/usb/serial/ezusb_convert.pl
@@ -1,4 +1,5 @@
#! /usr/bin/perl -w
+# SPDX-License-Identifier: GPL-2.0
# convert an Intel HEX file into a set of C records usable by the firmware
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 1cec03799cdf..49d1b2d4606d 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -1015,6 +1015,8 @@ static const struct usb_device_id id_table_combined[] = {
{ USB_DEVICE(WICED_VID, WICED_USB20706V2_PID) },
{ USB_DEVICE(TI_VID, TI_CC3200_LAUNCHPAD_PID),
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+ { USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_BT_USB_PID) },
+ { USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_WL_USB_PID) },
{ } /* Terminating entry */
};
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
index bbcc13df11ac..dcd0b6e05baf 100644
--- a/drivers/usb/serial/ftdi_sio.h
+++ b/drivers/usb/serial/ftdi_sio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Driver definitions for the FTDI USB Single Port Serial Converter -
* known as FTDI_SIO (Serial Input/Output application of the chipset)
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
index 4fcf1cecb6d7..4faa09fe308c 100644
--- a/drivers/usb/serial/ftdi_sio_ids.h
+++ b/drivers/usb/serial/ftdi_sio_ids.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* vendor/product IDs (VID/PID) of devices using FTDI USB serial converters.
* Please keep numerically sorted within individual areas, thanks!
@@ -610,6 +611,13 @@
#define ADI_GNICEPLUS_PID 0xF001
/*
+ * Cypress WICED USB UART
+ */
+#define CYPRESS_VID 0x04B4
+#define CYPRESS_WICED_BT_USB_PID 0x009B
+#define CYPRESS_WICED_WL_USB_PID 0xF900
+
+/*
* Microchip Technology, Inc.
*
* MICROCHIP_VID (0x04D8) and MICROCHIP_USB_BOARD_PID (0x000A) are
diff --git a/drivers/usb/serial/kl5kusb105.h b/drivers/usb/serial/kl5kusb105.h
index 22a90badc86b..41c9bf60fbf0 100644
--- a/drivers/usb/serial/kl5kusb105.h
+++ b/drivers/usb/serial/kl5kusb105.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for the KLSI KL5KUSB105 serial port adapter
*/
diff --git a/drivers/usb/serial/kobil_sct.h b/drivers/usb/serial/kobil_sct.h
index be207f7156fe..030c1b426611 100644
--- a/drivers/usb/serial/kobil_sct.h
+++ b/drivers/usb/serial/kobil_sct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define SUSBCRequest_SetBaudRateParityAndStopBits 1
#define SUSBCR_SBR_MASK 0xFF00
#define SUSBCR_SBR_1200 0x0100
diff --git a/drivers/usb/serial/metro-usb.c b/drivers/usb/serial/metro-usb.c
index cc84da8dbb84..14511d6a7d44 100644
--- a/drivers/usb/serial/metro-usb.c
+++ b/drivers/usb/serial/metro-usb.c
@@ -45,6 +45,7 @@ struct metrousb_private {
static const struct usb_device_id id_table[] = {
{ USB_DEVICE(FOCUS_VENDOR_ID, FOCUS_PRODUCT_ID_BI) },
{ USB_DEVICE(FOCUS_VENDOR_ID, FOCUS_PRODUCT_ID_UNI) },
+ { USB_DEVICE_INTERFACE_CLASS(0x0c2e, 0x0730, 0xff) }, /* MS7820 */
{ }, /* Terminating entry. */
};
MODULE_DEVICE_TABLE(usb, id_table);
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 54bfef13966a..ba672cf4e888 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -522,6 +522,7 @@ static void option_instat_callback(struct urb *urb);
/* TP-LINK Incorporated products */
#define TPLINK_VENDOR_ID 0x2357
+#define TPLINK_PRODUCT_LTE 0x000D
#define TPLINK_PRODUCT_MA180 0x0201
/* Changhong products */
@@ -2011,6 +2012,7 @@ static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
{ USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600A) },
{ USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600E) },
+ { USB_DEVICE_AND_INTERFACE_INFO(TPLINK_VENDOR_ID, TPLINK_PRODUCT_LTE, 0xff, 0x00, 0x00) }, /* TP-Link LTE Module */
{ USB_DEVICE(TPLINK_VENDOR_ID, TPLINK_PRODUCT_MA180),
.driver_info = (kernel_ulong_t)&net_intf4_blacklist },
{ USB_DEVICE(TPLINK_VENDOR_ID, 0x9000), /* TP-Link MA260 */
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
index ebc0beea69d6..eb9928963a53 100644
--- a/drivers/usb/serial/qcserial.c
+++ b/drivers/usb/serial/qcserial.c
@@ -174,6 +174,10 @@ static const struct usb_device_id id_table[] = {
{DEVICE_SWI(0x413c, 0x81b3)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */
{DEVICE_SWI(0x413c, 0x81b5)}, /* Dell Wireless 5811e QDL */
{DEVICE_SWI(0x413c, 0x81b6)}, /* Dell Wireless 5811e QDL */
+ {DEVICE_SWI(0x413c, 0x81cf)}, /* Dell Wireless 5819 */
+ {DEVICE_SWI(0x413c, 0x81d0)}, /* Dell Wireless 5819 */
+ {DEVICE_SWI(0x413c, 0x81d1)}, /* Dell Wireless 5818 */
+ {DEVICE_SWI(0x413c, 0x81d2)}, /* Dell Wireless 5818 */
/* Huawei devices */
{DEVICE_HWI(0x03f0, 0x581d)}, /* HP lt4112 LTE/HSPA+ Gobi 4G Modem (Huawei me906e) */
diff --git a/drivers/usb/serial/usb-wwan.h b/drivers/usb/serial/usb-wwan.h
index 44b25c08c68a..d28dab4b9eff 100644
--- a/drivers/usb/serial/usb-wwan.h
+++ b/drivers/usb/serial/usb-wwan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for USB serial mobile broadband cards
*/
diff --git a/drivers/usb/storage/Makefile b/drivers/usb/storage/Makefile
index 4cd55481b309..c5126a4cd954 100644
--- a/drivers/usb/storage/Makefile
+++ b/drivers/usb/storage/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the USB Mass Storage device drivers.
#
diff --git a/drivers/usb/storage/option_ms.h b/drivers/usb/storage/option_ms.h
index b6e448cab039..6439992184fa 100644
--- a/drivers/usb/storage/option_ms.h
+++ b/drivers/usb/storage/option_ms.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _OPTION_MS_H_
#define _OPTION_MS_H_
extern int option_ms_init(struct us_data *us);
diff --git a/drivers/usb/storage/sierra_ms.c b/drivers/usb/storage/sierra_ms.c
index 9a51019ac7b2..daf62448483f 100644
--- a/drivers/usb/storage/sierra_ms.c
+++ b/drivers/usb/storage/sierra_ms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <scsi/scsi.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_cmnd.h>
diff --git a/drivers/usb/storage/sierra_ms.h b/drivers/usb/storage/sierra_ms.h
index bb48634ac1fc..3e9da537d54a 100644
--- a/drivers/usb/storage/sierra_ms.h
+++ b/drivers/usb/storage/sierra_ms.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SIERRA_MS_H_
#define _SIERRA_MS_H_
extern int sierra_ms_init(struct us_data *us);
diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
index 1a59f335b063..a3ccb899df60 100644
--- a/drivers/usb/storage/transport.c
+++ b/drivers/usb/storage/transport.c
@@ -834,13 +834,25 @@ Retry_Sense:
if (result == USB_STOR_TRANSPORT_GOOD) {
srb->result = SAM_STAT_GOOD;
srb->sense_buffer[0] = 0x0;
+ }
+
+ /*
+ * ATA-passthru commands use sense data to report
+ * the command completion status, and often devices
+ * return Check Condition status when nothing is
+ * wrong.
+ */
+ else if (srb->cmnd[0] == ATA_16 ||
+ srb->cmnd[0] == ATA_12) {
+ /* leave the data alone */
+ }
/*
* If there was a problem, report an unspecified
* hardware error to prevent the higher layers from
* entering an infinite retry loop.
*/
- } else {
+ else {
srb->result = DID_ERROR << 16;
if ((sshdr.response_code & 0x72) == 0x72)
srb->sense_buffer[1] = HARDWARE_ERROR;
diff --git a/drivers/usb/storage/uas-detect.h b/drivers/usb/storage/uas-detect.h
index f58caa9e6a27..1fcd758a961f 100644
--- a/drivers/usb/storage/uas-detect.h
+++ b/drivers/usb/storage/uas-detect.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/usb.h>
#include <linux/usb/hcd.h>
#include "usb.h"
@@ -9,7 +10,8 @@ static int uas_is_interface(struct usb_host_interface *intf)
intf->desc.bInterfaceProtocol == USB_PR_UAS);
}
-static int uas_find_uas_alt_setting(struct usb_interface *intf)
+static struct usb_host_interface *uas_find_uas_alt_setting(
+ struct usb_interface *intf)
{
int i;
@@ -17,10 +19,10 @@ static int uas_find_uas_alt_setting(struct usb_interface *intf)
struct usb_host_interface *alt = &intf->altsetting[i];
if (uas_is_interface(alt))
- return alt->desc.bAlternateSetting;
+ return alt;
}
- return -ENODEV;
+ return NULL;
}
static int uas_find_endpoints(struct usb_host_interface *alt,
@@ -58,14 +60,14 @@ static int uas_use_uas_driver(struct usb_interface *intf,
struct usb_device *udev = interface_to_usbdev(intf);
struct usb_hcd *hcd = bus_to_hcd(udev->bus);
unsigned long flags = id->driver_info;
- int r, alt;
-
+ struct usb_host_interface *alt;
+ int r;
alt = uas_find_uas_alt_setting(intf);
- if (alt < 0)
+ if (!alt)
return 0;
- r = uas_find_endpoints(&intf->altsetting[alt], eps);
+ r = uas_find_endpoints(alt, eps);
if (r < 0)
return 0;
diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
index cfb1e3bbd434..63cf981ed81c 100644
--- a/drivers/usb/storage/uas.c
+++ b/drivers/usb/storage/uas.c
@@ -873,14 +873,14 @@ MODULE_DEVICE_TABLE(usb, uas_usb_ids);
static int uas_switch_interface(struct usb_device *udev,
struct usb_interface *intf)
{
- int alt;
+ struct usb_host_interface *alt;
alt = uas_find_uas_alt_setting(intf);
- if (alt < 0)
- return alt;
+ if (!alt)
+ return -ENODEV;
- return usb_set_interface(udev,
- intf->altsetting[0].desc.bInterfaceNumber, alt);
+ return usb_set_interface(udev, alt->desc.bInterfaceNumber,
+ alt->desc.bAlternateSetting);
}
static int uas_configure_endpoints(struct uas_dev_info *devinfo)
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index 5a70c33ef0e0..eb06d88b41d6 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -1459,6 +1459,13 @@ UNUSUAL_DEV( 0x0bc2, 0x3010, 0x0000, 0x0000,
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
US_FL_SANE_SENSE ),
+/* Reported by Kris Lindgren <kris.lindgren@gmail.com> */
+UNUSUAL_DEV( 0x0bc2, 0x3332, 0x0000, 0x9999,
+ "Seagate",
+ "External",
+ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+ US_FL_NO_WP_DETECT ),
+
UNUSUAL_DEV( 0x0d49, 0x7310, 0x0000, 0x9999,
"Maxtor",
"USB to SATA",
diff --git a/drivers/usb/typec/ucsi/Makefile b/drivers/usb/typec/ucsi/Makefile
index 8372fc22f9b3..b57891c1fd31 100644
--- a/drivers/usb/typec/ucsi/Makefile
+++ b/drivers/usb/typec/ucsi/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
CFLAGS_trace.o := -I$(src)
obj-$(CONFIG_TYPEC_UCSI) += typec_ucsi.o
diff --git a/drivers/usb/typec/ucsi/debug.h b/drivers/usb/typec/ucsi/debug.h
index e4d8fc763e6c..fdeff39df120 100644
--- a/drivers/usb/typec/ucsi/debug.h
+++ b/drivers/usb/typec/ucsi/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UCSI_DEBUG_H
#define __UCSI_DEBUG_H
diff --git a/drivers/usb/typec/ucsi/trace.h b/drivers/usb/typec/ucsi/trace.h
index 98b404404834..d5092446ecc6 100644
--- a/drivers/usb/typec/ucsi/trace.h
+++ b/drivers/usb/typec/ucsi/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM ucsi
diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h
index 8a88f45822e3..53b80f40a908 100644
--- a/drivers/usb/typec/ucsi/ucsi.h
+++ b/drivers/usb/typec/ucsi/ucsi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRIVER_USB_TYPEC_UCSI_H
#define __DRIVER_USB_TYPEC_UCSI_H
diff --git a/drivers/usb/usbip/Makefile b/drivers/usb/usbip/Makefile
index d843a9e68852..f4c8f3840262 100644
--- a/drivers/usb/usbip/Makefile
+++ b/drivers/usb/usbip/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_USBIP_DEBUG) := -DDEBUG
obj-$(CONFIG_USBIP_CORE) += usbip-core.o
diff --git a/drivers/usb/wusbcore/Makefile b/drivers/usb/wusbcore/Makefile
index b3bd313032b1..d604ccdd916f 100644
--- a/drivers/usb/wusbcore/Makefile
+++ b/drivers/usb/wusbcore/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-$(CONFIG_USB_WUSB_CBAF_DEBUG) := -DDEBUG
obj-$(CONFIG_USB_WUSB) += wusbcore.o
diff --git a/drivers/uwb/Makefile b/drivers/uwb/Makefile
index d47dd6e2942c..32f4de7afbd6 100644
--- a/drivers/uwb/Makefile
+++ b/drivers/uwb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_UWB) += uwb.o
obj-$(CONFIG_UWB_WHCI) += umc.o whci.o whc-rc.o
obj-$(CONFIG_UWB_HWA) += hwa-rc.o
diff --git a/drivers/uwb/hwa-rc.c b/drivers/uwb/hwa-rc.c
index 35a1e777b449..9a53912bdfe9 100644
--- a/drivers/uwb/hwa-rc.c
+++ b/drivers/uwb/hwa-rc.c
@@ -825,6 +825,8 @@ static int hwarc_probe(struct usb_interface *iface,
if (iface->cur_altsetting->desc.bNumEndpoints < 1)
return -ENODEV;
+ if (!usb_endpoint_xfer_int(&iface->cur_altsetting->endpoint[0].desc))
+ return -ENODEV;
result = -ENOMEM;
uwb_rc = uwb_rc_alloc();
diff --git a/drivers/uwb/i1480/dfu/Makefile b/drivers/uwb/i1480/dfu/Makefile
index bd1b9f25424c..4739fdac5922 100644
--- a/drivers/uwb/i1480/dfu/Makefile
+++ b/drivers/uwb/i1480/dfu/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_UWB_I1480U) += i1480-dfu-usb.o
i1480-dfu-usb-objs := \
diff --git a/drivers/uwb/uwbd.c b/drivers/uwb/uwbd.c
index 01c20a260a8b..39dd4ef53c77 100644
--- a/drivers/uwb/uwbd.c
+++ b/drivers/uwb/uwbd.c
@@ -302,18 +302,22 @@ static int uwbd(void *param)
/** Start the UWB daemon */
void uwbd_start(struct uwb_rc *rc)
{
- rc->uwbd.task = kthread_run(uwbd, rc, "uwbd");
- if (rc->uwbd.task == NULL)
+ struct task_struct *task = kthread_run(uwbd, rc, "uwbd");
+ if (IS_ERR(task)) {
+ rc->uwbd.task = NULL;
printk(KERN_ERR "UWB: Cannot start management daemon; "
"UWB won't work\n");
- else
+ } else {
+ rc->uwbd.task = task;
rc->uwbd.pid = rc->uwbd.task->pid;
+ }
}
/* Stop the UWB daemon and free any unprocessed events */
void uwbd_stop(struct uwb_rc *rc)
{
- kthread_stop(rc->uwbd.task);
+ if (rc->uwbd.task)
+ kthread_stop(rc->uwbd.task);
uwbd_flush(rc);
}
diff --git a/drivers/vfio/Makefile b/drivers/vfio/Makefile
index 4a23c13b6be4..de67c4725cce 100644
--- a/drivers/vfio/Makefile
+++ b/drivers/vfio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
vfio_virqfd-y := virqfd.o
obj-$(CONFIG_VFIO) += vfio.o
diff --git a/drivers/vfio/platform/Makefile b/drivers/vfio/platform/Makefile
index 41a6224f5e6b..3f3a24e7c4ef 100644
--- a/drivers/vfio/platform/Makefile
+++ b/drivers/vfio/platform/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
vfio-platform-base-y := vfio_platform_common.o vfio_platform_irq.o
vfio-platform-y := vfio_platform.o
diff --git a/drivers/vfio/platform/reset/Makefile b/drivers/vfio/platform/reset/Makefile
index 93f4e232697b..90ba20b646da 100644
--- a/drivers/vfio/platform/reset/Makefile
+++ b/drivers/vfio/platform/reset/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
vfio-platform-calxedaxgmac-y := vfio_platform_calxedaxgmac.o
vfio-platform-amdxgbe-y := vfio_platform_amdxgbe.o
diff --git a/drivers/vhost/Makefile b/drivers/vhost/Makefile
index 6b012b986b57..6c6df24f770c 100644
--- a/drivers/vhost/Makefile
+++ b/drivers/vhost/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VHOST_NET) += vhost_net.o
vhost_net-y := net.o
diff --git a/drivers/vhost/test.h b/drivers/vhost/test.h
index 1fef5df82153..7dd265bfdf81 100644
--- a/drivers/vhost/test.h
+++ b/drivers/vhost/test.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_VHOST_TEST_H
#define LINUX_VHOST_TEST_H
diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
index d59a9cc65f9d..79c6e7a60a5e 100644
--- a/drivers/vhost/vhost.h
+++ b/drivers/vhost/vhost.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VHOST_H
#define _VHOST_H
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 445b2c230b56..df7650adede9 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VGASTATE) += vgastate.o
obj-$(CONFIG_HDMI) += hdmi.o
diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
index 8905129691e8..5e28f01c8391 100644
--- a/drivers/video/backlight/Makefile
+++ b/drivers/video/backlight/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Backlight & LCD drivers
obj-$(CONFIG_LCD_AMS369FG06) += ams369fg06.o
diff --git a/drivers/video/backlight/kb3886_bl.c b/drivers/video/backlight/kb3886_bl.c
index 84a110a719cb..96312c3afc07 100644
--- a/drivers/video/backlight/kb3886_bl.c
+++ b/drivers/video/backlight/kb3886_bl.c
@@ -78,7 +78,7 @@ static struct kb3886bl_machinfo *bl_machinfo;
static unsigned long kb3886bl_flags;
#define KB3886BL_SUSPENDED 0x01
-static struct dmi_system_id kb3886bl_device_table[] __initdata = {
+static const struct dmi_system_id kb3886bl_device_table[] __initconst = {
{
.ident = "Sahara Touch-iT",
.matches = {
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig
index 2111d06f8c81..7f1f1fbcef9e 100644
--- a/drivers/video/console/Kconfig
+++ b/drivers/video/console/Kconfig
@@ -117,7 +117,7 @@ config DUMMY_CONSOLE_ROWS
Select 25 if you use a 640x480 resolution by default.
config FRAMEBUFFER_CONSOLE
- tristate "Framebuffer Console support"
+ bool "Framebuffer Console support"
depends on FB && !UML
select VT_HW_CONSOLE_BINDING
select CRC32
diff --git a/drivers/video/console/Makefile b/drivers/video/console/Makefile
index 43bfa485db96..db07b784bd2c 100644
--- a/drivers/video/console/Makefile
+++ b/drivers/video/console/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the Linux graphics to console drivers.
# 5 Aug 1999, James Simmons, <mailto:jsimmons@users.sf.net>
# Rewritten to use lists instead of if-statements.
@@ -7,13 +8,5 @@ obj-$(CONFIG_SGI_NEWPORT_CONSOLE) += newport_con.o
obj-$(CONFIG_STI_CONSOLE) += sticon.o sticore.o
obj-$(CONFIG_VGA_CONSOLE) += vgacon.o
obj-$(CONFIG_MDA_CONSOLE) += mdacon.o
-obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o softcursor.o
-ifeq ($(CONFIG_FB_TILEBLITTING),y)
-obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += tileblit.o
-endif
-ifeq ($(CONFIG_FRAMEBUFFER_CONSOLE_ROTATION),y)
-obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon_rotate.o fbcon_cw.o fbcon_ud.o \
- fbcon_ccw.o
-endif
obj-$(CONFIG_FB_STI) += sticore.o
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c
index dc06cb6a15dc..445b1dc5d441 100644
--- a/drivers/video/console/vgacon.c
+++ b/drivers/video/console/vgacon.c
@@ -398,9 +398,8 @@ static const char *vgacon_startup(void)
#endif
}
- /* boot_params.screen_info initialized? */
- if ((screen_info.orig_video_mode == 0) &&
- (screen_info.orig_video_lines == 0) &&
+ /* boot_params.screen_info reasonably initialized? */
+ if ((screen_info.orig_video_lines == 0) ||
(screen_info.orig_video_cols == 0))
goto no_vga;
diff --git a/drivers/video/fbdev/68328fb.c b/drivers/video/fbdev/68328fb.c
index c0c6b88d3839..d48e96088f76 100644
--- a/drivers/video/fbdev/68328fb.c
+++ b/drivers/video/fbdev/68328fb.c
@@ -72,7 +72,7 @@ static struct fb_var_screeninfo mc68x328fb_default __initdata = {
.vmode = FB_VMODE_NONINTERLACED,
};
-static struct fb_fix_screeninfo mc68x328fb_fix __initdata = {
+static const struct fb_fix_screeninfo mc68x328fb_fix __initconst = {
.id = "68328fb",
.type = FB_TYPE_PACKED_PIXELS,
.xpanstep = 1,
diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
index 5c6696bb56da..5e58f5ec0a28 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -2173,7 +2173,7 @@ config FB_PS3_DEFAULT_SIZE_M
config FB_XILINX
tristate "Xilinx frame buffer support"
- depends on FB && (XILINX_VIRTEX || MICROBLAZE || ARCH_ZYNQ)
+ depends on FB && (XILINX_VIRTEX || MICROBLAZE || ARCH_ZYNQ || ARCH_ZYNQMP)
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
diff --git a/drivers/video/fbdev/Makefile b/drivers/video/fbdev/Makefile
index ee8c81405a7f..8895536a20d6 100644
--- a/drivers/video/fbdev/Makefile
+++ b/drivers/video/fbdev/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the Linux video drivers.
# 5 Aug 1999, James Simmons, <mailto:jsimmons@users.sf.net>
# Rewritten to use lists instead of if-statements.
diff --git a/drivers/video/fbdev/amba-clcd-nomadik.h b/drivers/video/fbdev/amba-clcd-nomadik.h
index a24032c8156e..462c31381fa1 100644
--- a/drivers/video/fbdev/amba-clcd-nomadik.h
+++ b/drivers/video/fbdev/amba-clcd-nomadik.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AMBA_CLCD_NOMADIK_H
#define _AMBA_CLCD_NOMADIK_H
diff --git a/drivers/video/fbdev/amba-clcd-versatile.h b/drivers/video/fbdev/amba-clcd-versatile.h
index 4692c3092823..b20baa47e6ad 100644
--- a/drivers/video/fbdev/amba-clcd-versatile.h
+++ b/drivers/video/fbdev/amba-clcd-versatile.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Special local versatile callbacks
*/
diff --git a/drivers/video/fbdev/amba-clcd.c b/drivers/video/fbdev/amba-clcd.c
index ffc2c33c6cef..36d25190b48c 100644
--- a/drivers/video/fbdev/amba-clcd.c
+++ b/drivers/video/fbdev/amba-clcd.c
@@ -1035,7 +1035,7 @@ static struct clcd_vendor_data vendor_nomadik = {
.init_panel = nomadik_clcd_init_panel,
};
-static struct amba_id clcdfb_id_table[] = {
+static const struct amba_id clcdfb_id_table[] = {
{
.id = 0x00041110,
.mask = 0x000ffffe,
diff --git a/drivers/video/fbdev/arkfb.c b/drivers/video/fbdev/arkfb.c
index 6a317de7082c..13ba371e70aa 100644
--- a/drivers/video/fbdev/arkfb.c
+++ b/drivers/video/fbdev/arkfb.c
@@ -1157,7 +1157,7 @@ fail:
/* List of boards that we are trying to support */
-static struct pci_device_id ark_devices[] = {
+static const struct pci_device_id ark_devices[] = {
{PCI_DEVICE(0xEDD8, 0xA099)},
{0, 0, 0, 0, 0, 0, 0}
};
diff --git a/drivers/video/fbdev/asiliantfb.c b/drivers/video/fbdev/asiliantfb.c
index 91eea4583382..ea31054a28ca 100644
--- a/drivers/video/fbdev/asiliantfb.c
+++ b/drivers/video/fbdev/asiliantfb.c
@@ -592,7 +592,7 @@ static void asiliantfb_remove(struct pci_dev *dp)
framebuffer_release(p);
}
-static struct pci_device_id asiliantfb_pci_tbl[] = {
+static const struct pci_device_id asiliantfb_pci_tbl[] = {
{ PCI_VENDOR_ID_CT, PCI_DEVICE_ID_CT_69000, PCI_ANY_ID, PCI_ANY_ID },
{ 0 }
};
diff --git a/drivers/video/fbdev/atafb.h b/drivers/video/fbdev/atafb.h
index 014e05906cb1..2b2675980087 100644
--- a/drivers/video/fbdev/atafb.h
+++ b/drivers/video/fbdev/atafb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VIDEO_ATAFB_H
#define _VIDEO_ATAFB_H
diff --git a/drivers/video/fbdev/atafb_utils.h b/drivers/video/fbdev/atafb_utils.h
index ac9e19dc5057..8f3396ea8ae5 100644
--- a/drivers/video/fbdev/atafb_utils.h
+++ b/drivers/video/fbdev/atafb_utils.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VIDEO_ATAFB_UTILS_H
#define _VIDEO_ATAFB_UTILS_H
diff --git a/drivers/video/fbdev/atmel_lcdfb.c b/drivers/video/fbdev/atmel_lcdfb.c
index 669ecc755fa9..e06358da4b99 100644
--- a/drivers/video/fbdev/atmel_lcdfb.c
+++ b/drivers/video/fbdev/atmel_lcdfb.c
@@ -320,7 +320,7 @@ static inline void atmel_lcdfb_power_control(struct atmel_lcdfb_info *sinfo, int
}
}
-static struct fb_fix_screeninfo atmel_lcdfb_fix __initdata = {
+static const struct fb_fix_screeninfo atmel_lcdfb_fix __initconst = {
.type = FB_TYPE_PACKED_PIXELS,
.visual = FB_VISUAL_TRUECOLOR,
.xpanstep = 0,
diff --git a/drivers/video/fbdev/aty/Makefile b/drivers/video/fbdev/aty/Makefile
index a6cc0e9ec790..069465c82d6d 100644
--- a/drivers/video/fbdev/aty/Makefile
+++ b/drivers/video/fbdev/aty/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_FB_ATY) += atyfb.o
obj-$(CONFIG_FB_ATY128) += aty128fb.o
obj-$(CONFIG_FB_RADEON) += radeonfb.o
diff --git a/drivers/video/fbdev/aty/ati_ids.h b/drivers/video/fbdev/aty/ati_ids.h
index 3e9d28bcd9f8..2b589d687b4c 100644
--- a/drivers/video/fbdev/aty/ati_ids.h
+++ b/drivers/video/fbdev/aty/ati_ids.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ATI PCI IDs from XFree86, kept here to make sync'ing with
* XFree much simpler. Currently, this list is only used by
diff --git a/drivers/video/fbdev/aty/aty128fb.c b/drivers/video/fbdev/aty/aty128fb.c
index fa07242a78d2..db18474607c9 100644
--- a/drivers/video/fbdev/aty/aty128fb.c
+++ b/drivers/video/fbdev/aty/aty128fb.c
@@ -116,7 +116,7 @@ static const struct fb_var_screeninfo default_var = {
/* default modedb mode */
/* 640x480, 60 Hz, Non-Interlaced (25.172 MHz dotclock) */
-static struct fb_videomode defaultmode = {
+static const struct fb_videomode defaultmode = {
.refresh = 60,
.xres = 640,
.yres = 480,
@@ -166,7 +166,7 @@ static int aty128_pci_resume(struct pci_dev *pdev);
static int aty128_do_resume(struct pci_dev *pdev);
/* supported Rage128 chipsets */
-static struct pci_device_id aty128_pci_tbl[] = {
+static const struct pci_device_id aty128_pci_tbl[] = {
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RAGE128_LE,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, rage_M3_pci },
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RAGE128_LF,
diff --git a/drivers/video/fbdev/aty/atyfb.h b/drivers/video/fbdev/aty/atyfb.h
index 63c4842eb224..8235b285dbb2 100644
--- a/drivers/video/fbdev/aty/atyfb.h
+++ b/drivers/video/fbdev/aty/atyfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ATI Frame Buffer Device Driver Core Definitions
*/
diff --git a/drivers/video/fbdev/aty/atyfb_base.c b/drivers/video/fbdev/aty/atyfb_base.c
index b55fdac9c9f5..3ec72f19114b 100644
--- a/drivers/video/fbdev/aty/atyfb_base.c
+++ b/drivers/video/fbdev/aty/atyfb_base.c
@@ -274,7 +274,7 @@ static struct fb_var_screeninfo default_var = {
0, FB_VMODE_NONINTERLACED
};
-static struct fb_videomode defmode = {
+static const struct fb_videomode defmode = {
/* 640x480 @ 60 Hz, 31.5 kHz hsync */
NULL, 60, 640, 480, 39721, 40, 24, 32, 11, 96, 2,
0, FB_VMODE_NONINTERLACED
@@ -1855,7 +1855,7 @@ static int atyfb_ioctl(struct fb_info *info, u_int cmd, u_long arg)
#if defined(DEBUG) && defined(CONFIG_FB_ATY_CT)
case ATYIO_CLKR:
if (M64_HAS(INTEGRATED)) {
- struct atyclk clk;
+ struct atyclk clk = { 0 };
union aty_pll *pll = &par->pll;
u32 dsp_config = pll->ct.dsp_config;
u32 dsp_on_off = pll->ct.dsp_on_off;
@@ -3756,7 +3756,7 @@ static void atyfb_pci_remove(struct pci_dev *pdev)
atyfb_remove(info);
}
-static struct pci_device_id atyfb_pci_tbl[] = {
+static const struct pci_device_id atyfb_pci_tbl[] = {
#ifdef CONFIG_FB_ATY_GX
{ PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GX) },
{ PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64CX) },
diff --git a/drivers/video/fbdev/aty/mach64_accel.c b/drivers/video/fbdev/aty/mach64_accel.c
index 182bd680141f..2541a0e0de76 100644
--- a/drivers/video/fbdev/aty/mach64_accel.c
+++ b/drivers/video/fbdev/aty/mach64_accel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ATI Mach64 Hardware Acceleration
diff --git a/drivers/video/fbdev/aty/mach64_ct.c b/drivers/video/fbdev/aty/mach64_ct.c
index 51f29d627ceb..7d3bd723d3d5 100644
--- a/drivers/video/fbdev/aty/mach64_ct.c
+++ b/drivers/video/fbdev/aty/mach64_ct.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ATI Mach64 CT/VT/GT/LT Support
diff --git a/drivers/video/fbdev/aty/mach64_cursor.c b/drivers/video/fbdev/aty/mach64_cursor.c
index 2fa0317ab3c7..4cde25eab8e8 100644
--- a/drivers/video/fbdev/aty/mach64_cursor.c
+++ b/drivers/video/fbdev/aty/mach64_cursor.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ATI Mach64 CT/VT/GT/LT Cursor Support
*/
diff --git a/drivers/video/fbdev/aty/mach64_gx.c b/drivers/video/fbdev/aty/mach64_gx.c
index 10c988aef58e..27cb65fa2ba2 100644
--- a/drivers/video/fbdev/aty/mach64_gx.c
+++ b/drivers/video/fbdev/aty/mach64_gx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ATI Mach64 GX Support
diff --git a/drivers/video/fbdev/aty/radeon_accel.c b/drivers/video/fbdev/aty/radeon_accel.c
index a469a3d6edcb..bb147d8bf82d 100644
--- a/drivers/video/fbdev/aty/radeon_accel.c
+++ b/drivers/video/fbdev/aty/radeon_accel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "radeonfb.h"
/* the accelerated functions here are patterned after the
diff --git a/drivers/video/fbdev/aty/radeon_base.c b/drivers/video/fbdev/aty/radeon_base.c
index 6b4c7872b375..1e2ec360f8c1 100644
--- a/drivers/video/fbdev/aty/radeon_base.c
+++ b/drivers/video/fbdev/aty/radeon_base.c
@@ -96,7 +96,7 @@
#define CHIP_DEF(id, family, flags) \
{ PCI_VENDOR_ID_ATI, id, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (flags) | (CHIP_FAMILY_##family) }
-static struct pci_device_id radeonfb_pci_table[] = {
+static const struct pci_device_id radeonfb_pci_table[] = {
/* Radeon Xpress 200m */
CHIP_DEF(PCI_CHIP_RS480_5955, RS480, CHIP_HAS_CRTC2 | CHIP_IS_IGP | CHIP_IS_MOBILITY),
CHIP_DEF(PCI_CHIP_RS482_5975, RS480, CHIP_HAS_CRTC2 | CHIP_IS_IGP | CHIP_IS_MOBILITY),
@@ -2241,7 +2241,7 @@ static ssize_t radeon_show_edid2(struct file *filp, struct kobject *kobj,
return radeon_show_one_edid(buf, off, count, rinfo->mon2_EDID);
}
-static struct bin_attribute edid1_attr = {
+static const struct bin_attribute edid1_attr = {
.attr = {
.name = "edid1",
.mode = 0444,
@@ -2250,7 +2250,7 @@ static struct bin_attribute edid1_attr = {
.read = radeon_show_edid1,
};
-static struct bin_attribute edid2_attr = {
+static const struct bin_attribute edid2_attr = {
.attr = {
.name = "edid2",
.mode = 0444,
diff --git a/drivers/video/fbdev/aty/radeon_i2c.c b/drivers/video/fbdev/aty/radeon_i2c.c
index ab1d0fd76316..269b12ebb673 100644
--- a/drivers/video/fbdev/aty/radeon_i2c.c
+++ b/drivers/video/fbdev/aty/radeon_i2c.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "radeonfb.h"
#include <linux/module.h>
diff --git a/drivers/video/fbdev/aty/radeon_monitor.c b/drivers/video/fbdev/aty/radeon_monitor.c
index dd823f5fe4c9..9966c58aa26c 100644
--- a/drivers/video/fbdev/aty/radeon_monitor.c
+++ b/drivers/video/fbdev/aty/radeon_monitor.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "radeonfb.h"
#include <linux/slab.h>
diff --git a/drivers/video/fbdev/aty/radeon_pm.c b/drivers/video/fbdev/aty/radeon_pm.c
index 1417542738fc..f7c253dd5899 100644
--- a/drivers/video/fbdev/aty/radeon_pm.c
+++ b/drivers/video/fbdev/aty/radeon_pm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* drivers/video/aty/radeon_pm.c
*
diff --git a/drivers/video/fbdev/aty/radeonfb.h b/drivers/video/fbdev/aty/radeonfb.h
index 962e31263225..131b34dd65af 100644
--- a/drivers/video/fbdev/aty/radeonfb.h
+++ b/drivers/video/fbdev/aty/radeonfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RADEONFB_H__
#define __RADEONFB_H__
diff --git a/drivers/video/fbdev/bfin-lq035q1-fb.c b/drivers/video/fbdev/bfin-lq035q1-fb.c
index b594a58ff21d..b459354ad940 100644
--- a/drivers/video/fbdev/bfin-lq035q1-fb.c
+++ b/drivers/video/fbdev/bfin-lq035q1-fb.c
@@ -841,7 +841,7 @@ static int bfin_lq035q1_resume(struct device *dev)
return 0;
}
-static struct dev_pm_ops bfin_lq035q1_dev_pm_ops = {
+static const struct dev_pm_ops bfin_lq035q1_dev_pm_ops = {
.suspend = bfin_lq035q1_suspend,
.resume = bfin_lq035q1_resume,
};
diff --git a/drivers/video/fbdev/bw2.c b/drivers/video/fbdev/bw2.c
index 8c5b281f0b29..7aa972072357 100644
--- a/drivers/video/fbdev/bw2.c
+++ b/drivers/video/fbdev/bw2.c
@@ -333,8 +333,8 @@ static int bw2_probe(struct platform_device *op)
dev_set_drvdata(&op->dev, info);
- printk(KERN_INFO "%s: bwtwo at %lx:%lx\n",
- dp->full_name, par->which_io, info->fix.smem_start);
+ printk(KERN_INFO "%pOF: bwtwo at %lx:%lx\n",
+ dp, par->which_io, info->fix.smem_start);
return 0;
diff --git a/drivers/video/fbdev/carminefb.h b/drivers/video/fbdev/carminefb.h
index 05306de0c6b6..297688eba469 100644
--- a/drivers/video/fbdev/carminefb.h
+++ b/drivers/video/fbdev/carminefb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef CARMINE_CARMINE_H
#define CARMINE_CARMINE_H
diff --git a/drivers/video/fbdev/carminefb_regs.h b/drivers/video/fbdev/carminefb_regs.h
index 045215600b73..ae18318d2fc2 100644
--- a/drivers/video/fbdev/carminefb_regs.h
+++ b/drivers/video/fbdev/carminefb_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CARMINEFB_REGS_H
#define _CARMINEFB_REGS_H
diff --git a/drivers/video/fbdev/cg14.c b/drivers/video/fbdev/cg14.c
index 43e915eaf606..8de88b129b62 100644
--- a/drivers/video/fbdev/cg14.c
+++ b/drivers/video/fbdev/cg14.c
@@ -553,8 +553,8 @@ static int cg14_probe(struct platform_device *op)
dev_set_drvdata(&op->dev, info);
- printk(KERN_INFO "%s: cgfourteen at %lx:%lx, %dMB\n",
- dp->full_name,
+ printk(KERN_INFO "%pOF: cgfourteen at %lx:%lx, %dMB\n",
+ dp,
par->iospace, info->fix.smem_start,
par->ramsize >> 20);
diff --git a/drivers/video/fbdev/cg3.c b/drivers/video/fbdev/cg3.c
index 716391f22e75..6c334260cf53 100644
--- a/drivers/video/fbdev/cg3.c
+++ b/drivers/video/fbdev/cg3.c
@@ -412,8 +412,8 @@ static int cg3_probe(struct platform_device *op)
dev_set_drvdata(&op->dev, info);
- printk(KERN_INFO "%s: cg3 at %lx:%lx\n",
- dp->full_name, par->which_io, info->fix.smem_start);
+ printk(KERN_INFO "%pOF: cg3 at %lx:%lx\n",
+ dp, par->which_io, info->fix.smem_start);
return 0;
diff --git a/drivers/video/fbdev/cg6.c b/drivers/video/fbdev/cg6.c
index bdf901ed5291..0296c21acc78 100644
--- a/drivers/video/fbdev/cg6.c
+++ b/drivers/video/fbdev/cg6.c
@@ -810,8 +810,8 @@ static int cg6_probe(struct platform_device *op)
dev_set_drvdata(&op->dev, info);
- printk(KERN_INFO "%s: CGsix [%s] at %lx:%lx\n",
- dp->full_name, info->fix.id,
+ printk(KERN_INFO "%pOF: CGsix [%s] at %lx:%lx\n",
+ dp, info->fix.id,
par->which_io, info->fix.smem_start);
return 0;
diff --git a/drivers/video/fbdev/chipsfb.c b/drivers/video/fbdev/chipsfb.c
index 59abdc6a97f6..f103665cad43 100644
--- a/drivers/video/fbdev/chipsfb.c
+++ b/drivers/video/fbdev/chipsfb.c
@@ -292,7 +292,7 @@ static void chips_hw_init(void)
write_fr(chips_init_fr[i].addr, chips_init_fr[i].data);
}
-static struct fb_fix_screeninfo chipsfb_fix = {
+static const struct fb_fix_screeninfo chipsfb_fix = {
.id = "C&T 65550",
.type = FB_TYPE_PACKED_PIXELS,
.visual = FB_VISUAL_PSEUDOCOLOR,
@@ -309,7 +309,7 @@ static struct fb_fix_screeninfo chipsfb_fix = {
.smem_len = 0x100000, /* 1MB */
};
-static struct fb_var_screeninfo chipsfb_var = {
+static const struct fb_var_screeninfo chipsfb_var = {
.xres = 800,
.yres = 600,
.xres_virtual = 800,
diff --git a/drivers/video/fbdev/cobalt_lcdfb.c b/drivers/video/fbdev/cobalt_lcdfb.c
index 9da90bd242f4..0ef633e278a1 100644
--- a/drivers/video/fbdev/cobalt_lcdfb.c
+++ b/drivers/video/fbdev/cobalt_lcdfb.c
@@ -126,7 +126,7 @@ static void lcd_clear(struct fb_info *info)
lcd_write_control(info, LCD_RESET);
}
-static struct fb_fix_screeninfo cobalt_lcdfb_fix = {
+static const struct fb_fix_screeninfo cobalt_lcdfb_fix = {
.id = "cobalt-lcd",
.type = FB_TYPE_TEXT,
.type_aux = FB_AUX_TEXT_MDA,
diff --git a/drivers/video/fbdev/core/Makefile b/drivers/video/fbdev/core/Makefile
index 9e3ddf225393..d34fd182ca68 100644
--- a/drivers/video/fbdev/core/Makefile
+++ b/drivers/video/fbdev/core/Makefile
@@ -1,9 +1,24 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_FB_CMDLINE) += fb_cmdline.o
obj-$(CONFIG_FB_NOTIFY) += fb_notify.o
obj-$(CONFIG_FB) += fb.o
fb-y := fbmem.o fbmon.o fbcmap.o fbsysfs.o \
modedb.o fbcvt.o
fb-$(CONFIG_FB_DEFERRED_IO) += fb_defio.o
+
+ifeq ($(CONFIG_FRAMEBUFFER_CONSOLE),y)
+fb-y += fbcon.o bitblit.o softcursor.o
+ifeq ($(CONFIG_FB_TILEBLITTING),y)
+fb-y += tileblit.o
+endif
+ifeq ($(CONFIG_FRAMEBUFFER_CONSOLE_ROTATION),y)
+fb-y += fbcon_rotate.o fbcon_cw.o fbcon_ud.o \
+ fbcon_ccw.o
+endif
+ifeq ($(CONFIG_DMI),y)
+fb-y += fbcon_dmi_quirks.o
+endif
+endif
fb-objs := $(fb-y)
obj-$(CONFIG_FB_CFB_FILLRECT) += cfbfillrect.o
diff --git a/drivers/video/console/bitblit.c b/drivers/video/fbdev/core/bitblit.c
index dbfe4eecf12e..790900d646c0 100644
--- a/drivers/video/console/bitblit.c
+++ b/drivers/video/fbdev/core/bitblit.c
@@ -203,7 +203,7 @@ static void bit_putcs(struct vc_data *vc, struct fb_info *info,
}
static void bit_clear_margins(struct vc_data *vc, struct fb_info *info,
- int bottom_only)
+ int color, int bottom_only)
{
unsigned int cw = vc->vc_font.width;
unsigned int ch = vc->vc_font.height;
@@ -213,7 +213,7 @@ static void bit_clear_margins(struct vc_data *vc, struct fb_info *info,
unsigned int bs = info->var.yres - bh;
struct fb_fillrect region;
- region.color = 0;
+ region.color = color;
region.rop = ROP_COPY;
if (rw && !bottom_only) {
@@ -416,7 +416,3 @@ void fbcon_set_bitops(struct fbcon_ops *ops)
EXPORT_SYMBOL(fbcon_set_bitops);
-MODULE_AUTHOR("Antonino Daplas <adaplas@pol.net>");
-MODULE_DESCRIPTION("Bit Blitting Operation");
-MODULE_LICENSE("GPL");
-
diff --git a/drivers/video/fbdev/core/fb_draw.h b/drivers/video/fbdev/core/fb_draw.h
index 624ee115f129..e0d829873930 100644
--- a/drivers/video/fbdev/core/fb_draw.h
+++ b/drivers/video/fbdev/core/fb_draw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FB_DRAW_H
#define _FB_DRAW_H
diff --git a/drivers/video/console/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index 12ded23f1aaf..04612f938bab 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -68,6 +68,7 @@
#include <linux/kd.h>
#include <linux/slab.h>
#include <linux/fb.h>
+#include <linux/fbcon.h>
#include <linux/vt_kern.h>
#include <linux/selection.h>
#include <linux/font.h>
@@ -135,8 +136,9 @@ static char fontname[40];
static int info_idx = -1;
/* console rotation */
-static int initial_rotation;
+static int initial_rotation = -1;
static int fbcon_has_sysfs;
+static int margin_color;
static const struct consw fb_con;
@@ -491,6 +493,13 @@ static int __init fb_console_setup(char *this_opt)
initial_rotation = 0;
continue;
}
+
+ if (!strncmp(options, "margin:", 7)) {
+ options += 7;
+ if (*options)
+ margin_color = simple_strtoul(options, &options, 0);
+ continue;
+ }
}
return 1;
}
@@ -563,7 +572,7 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
unsigned short *save = NULL, *r, *q;
int logo_height;
- if (info->flags & FBINFO_MODULE) {
+ if (info->fbops->owner) {
logo_shown = FBCON_LOGO_DONTSHOW;
return;
}
@@ -954,7 +963,10 @@ static const char *fbcon_startup(void)
ops->cur_rotate = -1;
ops->cur_blink_jiffies = HZ / 5;
info->fbcon_par = ops;
- p->con_rotate = initial_rotation;
+ if (initial_rotation != -1)
+ p->con_rotate = initial_rotation;
+ else
+ p->con_rotate = fbcon_platform_get_rotate(info);
set_blitting_type(vc, info);
if (info->fix.type != FB_TYPE_TEXT) {
@@ -1091,7 +1103,10 @@ static void fbcon_init(struct vc_data *vc, int init)
ops = info->fbcon_par;
ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
- p->con_rotate = initial_rotation;
+ if (initial_rotation != -1)
+ p->con_rotate = initial_rotation;
+ else
+ p->con_rotate = fbcon_platform_get_rotate(info);
set_blitting_type(vc, info);
cols = vc->vc_cols;
@@ -1299,7 +1314,7 @@ static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
struct fbcon_ops *ops = info->fbcon_par;
if (!fbcon_is_inactive(vc, info))
- ops->clear_margins(vc, info, bottom_only);
+ ops->clear_margins(vc, info, margin_color, bottom_only);
}
static void fbcon_cursor(struct vc_data *vc, int mode)
@@ -3606,7 +3621,7 @@ static void fbcon_exit(void)
fbcon_has_exited = 1;
}
-static int __init fb_console_init(void)
+void __init fb_console_init(void)
{
int i;
@@ -3628,11 +3643,8 @@ static int __init fb_console_init(void)
console_unlock();
fbcon_start();
- return 0;
}
-fs_initcall(fb_console_init);
-
#ifdef MODULE
static void __exit fbcon_deinit_device(void)
@@ -3647,7 +3659,7 @@ static void __exit fbcon_deinit_device(void)
}
}
-static void __exit fb_console_exit(void)
+void __exit fb_console_exit(void)
{
console_lock();
fb_unregister_client(&fbcon_event_notifier);
@@ -3657,9 +3669,4 @@ static void __exit fb_console_exit(void)
do_unregister_con_driver(&fb_con);
console_unlock();
}
-
-module_exit(fb_console_exit);
-
#endif
-
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/console/fbcon.h b/drivers/video/fbdev/core/fbcon.h
index 7aaa4eabbba0..18f3ac144237 100644
--- a/drivers/video/console/fbcon.h
+++ b/drivers/video/fbdev/core/fbcon.h
@@ -60,7 +60,7 @@ struct fbcon_ops {
const unsigned short *s, int count, int yy, int xx,
int fg, int bg);
void (*clear_margins)(struct vc_data *vc, struct fb_info *info,
- int bottom_only);
+ int color, int bottom_only);
void (*cursor)(struct vc_data *vc, struct fb_info *info, int mode,
int softback_lines, int fg, int bg);
int (*update_start)(struct fb_info *info);
@@ -261,5 +261,10 @@ extern void fbcon_set_rotate(struct fbcon_ops *ops);
#define fbcon_set_rotate(x) do {} while(0)
#endif /* CONFIG_FRAMEBUFFER_CONSOLE_ROTATION */
-#endif /* _VIDEO_FBCON_H */
+#ifdef CONFIG_DMI
+int fbcon_platform_get_rotate(struct fb_info *info);
+#else
+#define fbcon_platform_get_rotate(i) FB_ROTATE_UR
+#endif /* CONFIG_DMI */
+#endif /* _VIDEO_FBCON_H */
diff --git a/drivers/video/console/fbcon_ccw.c b/drivers/video/fbdev/core/fbcon_ccw.c
index 5a3cbf6dff4d..37a8b0b22566 100644
--- a/drivers/video/console/fbcon_ccw.c
+++ b/drivers/video/fbdev/core/fbcon_ccw.c
@@ -189,7 +189,7 @@ static void ccw_putcs(struct vc_data *vc, struct fb_info *info,
}
static void ccw_clear_margins(struct vc_data *vc, struct fb_info *info,
- int bottom_only)
+ int color, int bottom_only)
{
unsigned int cw = vc->vc_font.width;
unsigned int ch = vc->vc_font.height;
@@ -198,7 +198,7 @@ static void ccw_clear_margins(struct vc_data *vc, struct fb_info *info,
unsigned int bs = vc->vc_rows*ch;
struct fb_fillrect region;
- region.color = 0;
+ region.color = color;
region.rop = ROP_COPY;
if (rw && !bottom_only) {
@@ -418,7 +418,3 @@ void fbcon_rotate_ccw(struct fbcon_ops *ops)
ops->update_start = ccw_update_start;
}
EXPORT_SYMBOL(fbcon_rotate_ccw);
-
-MODULE_AUTHOR("Antonino Daplas <adaplas@pol.net>");
-MODULE_DESCRIPTION("Console Rotation (270 degrees) Support");
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/console/fbcon_cw.c b/drivers/video/fbdev/core/fbcon_cw.c
index e7ee44db4e98..1888f8c866e8 100644
--- a/drivers/video/console/fbcon_cw.c
+++ b/drivers/video/fbdev/core/fbcon_cw.c
@@ -172,7 +172,7 @@ static void cw_putcs(struct vc_data *vc, struct fb_info *info,
}
static void cw_clear_margins(struct vc_data *vc, struct fb_info *info,
- int bottom_only)
+ int color, int bottom_only)
{
unsigned int cw = vc->vc_font.width;
unsigned int ch = vc->vc_font.height;
@@ -181,7 +181,7 @@ static void cw_clear_margins(struct vc_data *vc, struct fb_info *info,
unsigned int rs = info->var.yres - rw;
struct fb_fillrect region;
- region.color = 0;
+ region.color = color;
region.rop = ROP_COPY;
if (rw && !bottom_only) {
@@ -401,7 +401,3 @@ void fbcon_rotate_cw(struct fbcon_ops *ops)
ops->update_start = cw_update_start;
}
EXPORT_SYMBOL(fbcon_rotate_cw);
-
-MODULE_AUTHOR("Antonino Daplas <adaplas@pol.net>");
-MODULE_DESCRIPTION("Console Rotation (90 degrees) Support");
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/fbdev/core/fbcon_dmi_quirks.c b/drivers/video/fbdev/core/fbcon_dmi_quirks.c
new file mode 100644
index 000000000000..6904e47d1e51
--- /dev/null
+++ b/drivers/video/fbdev/core/fbcon_dmi_quirks.c
@@ -0,0 +1,145 @@
+/*
+ * fbcon_dmi_quirks.c -- DMI based quirk detection for fbcon
+ *
+ * Copyright (C) 2017 Hans de Goede <hdegoede@redhat.com>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive for
+ * more details.
+ */
+
+#include <linux/dmi.h>
+#include <linux/fb.h>
+#include <linux/kernel.h>
+#include "fbcon.h"
+
+/*
+ * Some x86 clamshell design devices use portrait tablet screens and a display
+ * engine which cannot rotate in hardware, so we need to rotate the fbcon to
+ * compensate. Unfortunately these (cheap) devices also typically have quite
+ * generic DMI data, so we match on a combination of DMI data, screen resolution
+ * and a list of known BIOS dates to avoid false positives.
+ */
+
+struct fbcon_dmi_rotate_data {
+ int width;
+ int height;
+ const char * const *bios_dates;
+ int rotate;
+};
+
+static const struct fbcon_dmi_rotate_data rotate_data_asus_t100ha = {
+ .width = 800,
+ .height = 1280,
+ .rotate = FB_ROTATE_CCW,
+};
+
+static const struct fbcon_dmi_rotate_data rotate_data_gpd_pocket = {
+ .width = 1200,
+ .height = 1920,
+ .bios_dates = (const char * const []){ "05/26/2017", "06/28/2017",
+ "07/05/2017", "08/07/2017", NULL },
+ .rotate = FB_ROTATE_CW,
+};
+
+static const struct fbcon_dmi_rotate_data rotate_data_gpd_win = {
+ .width = 720,
+ .height = 1280,
+ .bios_dates = (const char * const []){
+ "10/25/2016", "11/18/2016", "12/23/2016", "12/26/2016",
+ "02/21/2017", "03/20/2017", "05/25/2017", NULL },
+ .rotate = FB_ROTATE_CW,
+};
+
+static const struct fbcon_dmi_rotate_data rotate_data_itworks_tw891 = {
+ .width = 800,
+ .height = 1280,
+ .bios_dates = (const char * const []){ "10/16/2015", NULL },
+ .rotate = FB_ROTATE_CW,
+};
+
+static const struct fbcon_dmi_rotate_data rotate_data_vios_lth17 = {
+ .width = 800,
+ .height = 1280,
+ .rotate = FB_ROTATE_CW,
+};
+
+static const struct dmi_system_id rotate_data[] = {
+ { /* Asus T100HA */
+ .matches = {
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T100HAN"),
+ },
+ .driver_data = (void *)&rotate_data_asus_t100ha,
+ }, { /*
+ * GPD Pocket, note that the the DMI data is less generic then
+ * it seems, devices with a board-vendor of "AMI Corporation"
+ * are quite rare, as are devices which have both board- *and*
+ * product-id set to "Default String"
+ */
+ .matches = {
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
+ DMI_EXACT_MATCH(DMI_BOARD_SERIAL, "Default string"),
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
+ },
+ .driver_data = (void *)&rotate_data_gpd_pocket,
+ }, { /* GPD Win (same note on DMI match as GPD Pocket) */
+ .matches = {
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
+ DMI_EXACT_MATCH(DMI_BOARD_SERIAL, "Default string"),
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
+ },
+ .driver_data = (void *)&rotate_data_gpd_win,
+ }, { /* I.T.Works TW891 */
+ .matches = {
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "To be filled by O.E.M."),
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "TW891"),
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "To be filled by O.E.M."),
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "TW891"),
+ },
+ .driver_data = (void *)&rotate_data_itworks_tw891,
+ }, { /* VIOS LTH17 */
+ .matches = {
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "VIOS"),
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "LTH17"),
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "VIOS"),
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "LTH17"),
+ },
+ .driver_data = (void *)&rotate_data_vios_lth17,
+ },
+ {}
+};
+
+int fbcon_platform_get_rotate(struct fb_info *info)
+{
+ const struct dmi_system_id *match;
+ const struct fbcon_dmi_rotate_data *data;
+ const char *bios_date;
+ int i;
+
+ for (match = dmi_first_match(rotate_data);
+ match;
+ match = dmi_first_match(match + 1)) {
+ data = match->driver_data;
+
+ if (data->width != info->var.xres ||
+ data->height != info->var.yres)
+ continue;
+
+ if (!data->bios_dates)
+ return data->rotate;
+
+ bios_date = dmi_get_system_info(DMI_BIOS_DATE);
+ if (!bios_date)
+ continue;
+
+ for (i = 0; data->bios_dates[i]; i++) {
+ if (!strcmp(data->bios_dates[i], bios_date))
+ return data->rotate;
+ }
+ }
+
+ return FB_ROTATE_UR;
+}
diff --git a/drivers/video/console/fbcon_rotate.c b/drivers/video/fbdev/core/fbcon_rotate.c
index db6528f2d3f2..8a51e4d95cc5 100644
--- a/drivers/video/console/fbcon_rotate.c
+++ b/drivers/video/fbdev/core/fbcon_rotate.c
@@ -110,7 +110,3 @@ void fbcon_set_rotate(struct fbcon_ops *ops)
}
}
EXPORT_SYMBOL(fbcon_set_rotate);
-
-MODULE_AUTHOR("Antonino Daplas <adaplas@pol.net>");
-MODULE_DESCRIPTION("Console Rotation Support");
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/console/fbcon_rotate.h b/drivers/video/fbdev/core/fbcon_rotate.h
index e233444cda66..e233444cda66 100644
--- a/drivers/video/console/fbcon_rotate.h
+++ b/drivers/video/fbdev/core/fbcon_rotate.h
diff --git a/drivers/video/console/fbcon_ud.c b/drivers/video/fbdev/core/fbcon_ud.c
index 19e3714abfe8..f98eee263597 100644
--- a/drivers/video/console/fbcon_ud.c
+++ b/drivers/video/fbdev/core/fbcon_ud.c
@@ -220,7 +220,7 @@ static void ud_putcs(struct vc_data *vc, struct fb_info *info,
}
static void ud_clear_margins(struct vc_data *vc, struct fb_info *info,
- int bottom_only)
+ int color, int bottom_only)
{
unsigned int cw = vc->vc_font.width;
unsigned int ch = vc->vc_font.height;
@@ -228,7 +228,7 @@ static void ud_clear_margins(struct vc_data *vc, struct fb_info *info,
unsigned int bh = info->var.yres - (vc->vc_rows*ch);
struct fb_fillrect region;
- region.color = 0;
+ region.color = color;
region.rop = ROP_COPY;
if (rw && !bottom_only) {
@@ -446,7 +446,3 @@ void fbcon_rotate_ud(struct fbcon_ops *ops)
ops->update_start = ud_update_start;
}
EXPORT_SYMBOL(fbcon_rotate_ud);
-
-MODULE_AUTHOR("Antonino Daplas <adaplas@pol.net>");
-MODULE_DESCRIPTION("Console Rotation (180 degrees) Support");
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
index 25e862c487f6..f741ba8df01b 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -32,6 +32,7 @@
#include <linux/device.h>
#include <linux/efi.h>
#include <linux/fb.h>
+#include <linux/fbcon.h>
#include <linux/mem_encrypt.h>
#include <asm/fb.h>
@@ -316,7 +317,7 @@ static void fb_set_logo(struct fb_info *info,
for (i = 0; i < logo->height; i++) {
for (j = 0; j < logo->width; src++) {
d = *src ^ xor;
- for (k = 7; k >= 0; k--) {
+ for (k = 7; k >= 0 && j < logo->width; k--) {
*dst++ = ((d >> k) & 1) ? fg : 0;
j++;
}
@@ -463,7 +464,7 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,
/* Return if the frame buffer is not mapped or suspended */
if (logo == NULL || info->state != FBINFO_STATE_RUNNING ||
- info->flags & FBINFO_MODULE)
+ info->fbops->owner)
return 0;
image.depth = 8;
@@ -601,7 +602,7 @@ int fb_prepare_logo(struct fb_info *info, int rotate)
memset(&fb_logo, 0, sizeof(struct logo_data));
if (info->flags & FBINFO_MISC_TILEBLITTING ||
- info->flags & FBINFO_MODULE)
+ info->fbops->owner)
return 0;
if (info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
@@ -1892,6 +1893,9 @@ fbmem_init(void)
fb_class = NULL;
goto err_class;
}
+
+ fb_console_init();
+
return 0;
err_class:
@@ -1906,6 +1910,8 @@ module_init(fbmem_init);
static void __exit
fbmem_exit(void)
{
+ fb_console_exit();
+
remove_proc_entry("fb", NULL);
class_destroy(fb_class);
unregister_chrdev(FB_MAJOR, "fb");
diff --git a/drivers/video/fbdev/core/fbmon.c b/drivers/video/fbdev/core/fbmon.c
index 41d7979d81c5..2b2d67328514 100644
--- a/drivers/video/fbdev/core/fbmon.c
+++ b/drivers/video/fbdev/core/fbmon.c
@@ -1479,8 +1479,8 @@ int of_get_fb_videomode(struct device_node *np, struct fb_videomode *fb,
if (ret)
return ret;
- pr_debug("%s: got %dx%d display mode from %s\n",
- of_node_full_name(np), vm.hactive, vm.vactive, np->name);
+ pr_debug("%pOF: got %dx%d display mode from %s\n",
+ np, vm.hactive, vm.vactive, np->name);
dump_fb_videomode(fb);
return 0;
diff --git a/drivers/video/console/softcursor.c b/drivers/video/fbdev/core/softcursor.c
index 46dd8f5d2e9e..fc93f254498e 100644
--- a/drivers/video/console/softcursor.c
+++ b/drivers/video/fbdev/core/softcursor.c
@@ -76,7 +76,3 @@ int soft_cursor(struct fb_info *info, struct fb_cursor *cursor)
}
EXPORT_SYMBOL(soft_cursor);
-
-MODULE_AUTHOR("James Simmons <jsimmons@users.sf.net>");
-MODULE_DESCRIPTION("Generic software cursor");
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/console/tileblit.c b/drivers/video/fbdev/core/tileblit.c
index 15e8e1a89c45..93390312957f 100644
--- a/drivers/video/console/tileblit.c
+++ b/drivers/video/fbdev/core/tileblit.c
@@ -74,7 +74,7 @@ static void tile_putcs(struct vc_data *vc, struct fb_info *info,
}
static void tile_clear_margins(struct vc_data *vc, struct fb_info *info,
- int bottom_only)
+ int color, int bottom_only)
{
return;
}
@@ -152,8 +152,3 @@ void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info)
}
EXPORT_SYMBOL(fbcon_set_tileops);
-
-MODULE_AUTHOR("Antonino Daplas <adaplas@pol.net>");
-MODULE_DESCRIPTION("Tile Blitting Operation");
-MODULE_LICENSE("GPL");
-
diff --git a/drivers/video/fbdev/cyber2000fb.c b/drivers/video/fbdev/cyber2000fb.c
index 99acf538a8b8..9a5751cb4e16 100644
--- a/drivers/video/fbdev/cyber2000fb.c
+++ b/drivers/video/fbdev/cyber2000fb.c
@@ -1336,7 +1336,7 @@ static void cyber2000fb_i2c_unregister(struct cfb_info *cfb)
* These parameters give
* 640x480, hsync 31.5kHz, vsync 60Hz
*/
-static struct fb_videomode cyber2000fb_default_mode = {
+static const struct fb_videomode cyber2000fb_default_mode = {
.refresh = 60,
.xres = 640,
.yres = 480,
diff --git a/drivers/video/fbdev/da8xx-fb.c b/drivers/video/fbdev/da8xx-fb.c
index c229b1a0d13b..a74096c53cb5 100644
--- a/drivers/video/fbdev/da8xx-fb.c
+++ b/drivers/video/fbdev/da8xx-fb.c
@@ -1341,7 +1341,7 @@ static int fb_probe(struct platform_device *device)
{
struct da8xx_lcdc_platform_data *fb_pdata =
dev_get_platdata(&device->dev);
- static struct resource *lcdc_regs;
+ struct resource *lcdc_regs;
struct lcd_ctrl_config *lcd_cfg;
struct fb_videomode *lcdc_info;
struct fb_info *da8xx_fb_info;
diff --git a/drivers/video/fbdev/dnfb.c b/drivers/video/fbdev/dnfb.c
index 3526899da61b..7b1492d34e98 100644
--- a/drivers/video/fbdev/dnfb.c
+++ b/drivers/video/fbdev/dnfb.c
@@ -126,7 +126,7 @@ struct fb_var_screeninfo dnfb_var = {
.vmode = FB_VMODE_NONINTERLACED,
};
-static struct fb_fix_screeninfo dnfb_fix = {
+static const struct fb_fix_screeninfo dnfb_fix = {
.id = "Apollo Mono",
.smem_start = (FRAME_BUFFER_START + IO_BASE),
.smem_len = FRAME_BUFFER_LEN,
diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
index 3a010641f630..d1bf9c2a78a7 100644
--- a/drivers/video/fbdev/efifb.c
+++ b/drivers/video/fbdev/efifb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Framebuffer driver for EFI/UEFI based system
*
diff --git a/drivers/video/fbdev/fb-puv3.c b/drivers/video/fbdev/fb-puv3.c
index 88fa2e70a0bb..d9e816d53531 100644
--- a/drivers/video/fbdev/fb-puv3.c
+++ b/drivers/video/fbdev/fb-puv3.c
@@ -69,7 +69,7 @@ static const struct fb_videomode unifb_modes[] = {
0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
};
-static struct fb_var_screeninfo unifb_default = {
+static const struct fb_var_screeninfo unifb_default = {
.xres = 640,
.yres = 480,
.xres_virtual = 640,
diff --git a/drivers/video/fbdev/ffb.c b/drivers/video/fbdev/ffb.c
index dda31e0a45af..6b1915872af1 100644
--- a/drivers/video/fbdev/ffb.c
+++ b/drivers/video/fbdev/ffb.c
@@ -997,9 +997,9 @@ static int ffb_probe(struct platform_device *op)
dev_set_drvdata(&op->dev, info);
- printk(KERN_INFO "%s: %s at %016lx, type %d, "
+ printk(KERN_INFO "%pOF: %s at %016lx, type %d, "
"DAC pnum[%x] rev[%d] manuf_rev[%d]\n",
- dp->full_name,
+ dp,
((par->flags & FFB_FLAG_AFB) ? "AFB" : "FFB"),
par->physbase, par->board_type,
dac_pnum, dac_rev, dac_mrev);
diff --git a/drivers/video/fbdev/fm2fb.c b/drivers/video/fbdev/fm2fb.c
index e69d47af9932..ac7a4ebfd390 100644
--- a/drivers/video/fbdev/fm2fb.c
+++ b/drivers/video/fbdev/fm2fb.c
@@ -213,7 +213,7 @@ static int fm2fb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
static int fm2fb_probe(struct zorro_dev *z, const struct zorro_device_id *id);
-static struct zorro_device_id fm2fb_devices[] = {
+static const struct zorro_device_id fm2fb_devices[] = {
{ ZORRO_PROD_BSC_FRAMEMASTER_II },
{ ZORRO_PROD_HELFRICH_RAINBOW_II },
{ 0 }
diff --git a/drivers/video/fbdev/geode/Makefile b/drivers/video/fbdev/geode/Makefile
index 5c98da126883..16ba8a71dc52 100644
--- a/drivers/video/fbdev/geode/Makefile
+++ b/drivers/video/fbdev/geode/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the Geode family framebuffer drivers
obj-$(CONFIG_FB_GEODE_GX1) += gx1fb.o
diff --git a/drivers/video/fbdev/geode/gxfb_core.c b/drivers/video/fbdev/geode/gxfb_core.c
index ec9fc9ac23de..f4f76373b2a8 100644
--- a/drivers/video/fbdev/geode/gxfb_core.c
+++ b/drivers/video/fbdev/geode/gxfb_core.c
@@ -474,7 +474,7 @@ static void gxfb_remove(struct pci_dev *pdev)
framebuffer_release(info);
}
-static struct pci_device_id gxfb_id_table[] = {
+static const struct pci_device_id gxfb_id_table[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_GX_VIDEO) },
{ 0, }
};
diff --git a/drivers/video/fbdev/grvga.c b/drivers/video/fbdev/grvga.c
index b471f92969b1..8fc8f46dadeb 100644
--- a/drivers/video/fbdev/grvga.c
+++ b/drivers/video/fbdev/grvga.c
@@ -70,7 +70,7 @@ static const struct fb_videomode grvga_modedb[] = {
}
};
-static struct fb_fix_screeninfo grvga_fix = {
+static const struct fb_fix_screeninfo grvga_fix = {
.id = "AG SVGACTRL",
.type = FB_TYPE_PACKED_PIXELS,
.visual = FB_VISUAL_PSEUDOCOLOR,
diff --git a/drivers/video/fbdev/i810/Makefile b/drivers/video/fbdev/i810/Makefile
index 96e08c8ded97..3e466510fe05 100644
--- a/drivers/video/fbdev/i810/Makefile
+++ b/drivers/video/fbdev/i810/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Intel 810/815 framebuffer driver
#
diff --git a/drivers/video/fbdev/i810/i810_main.c b/drivers/video/fbdev/i810/i810_main.c
index 2488baab7c89..d18f7b31932c 100644
--- a/drivers/video/fbdev/i810/i810_main.c
+++ b/drivers/video/fbdev/i810/i810_main.c
@@ -107,7 +107,7 @@ static const char * const i810_pci_list[] = {
"Intel(R) 815 (Internal Graphics with AGP) Framebuffer Device"
};
-static struct pci_device_id i810fb_pci_tbl[] = {
+static const struct pci_device_id i810fb_pci_tbl[] = {
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82810_IG1,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82810_IG3,
@@ -1542,7 +1542,7 @@ static int i810fb_cursor(struct fb_info *info, struct fb_cursor *cursor)
return 0;
}
-static struct fb_ops i810fb_ops = {
+static const struct fb_ops i810fb_ops = {
.owner = THIS_MODULE,
.fb_open = i810fb_open,
.fb_release = i810fb_release,
diff --git a/drivers/video/fbdev/imsttfb.c b/drivers/video/fbdev/imsttfb.c
index 4363c64d74e8..ecdcf358ad5e 100644
--- a/drivers/video/fbdev/imsttfb.c
+++ b/drivers/video/fbdev/imsttfb.c
@@ -1318,7 +1318,7 @@ imsttfb_ioctl(struct fb_info *info, u_int cmd, u_long arg)
}
}
-static struct pci_device_id imsttfb_pci_tbl[] = {
+static const struct pci_device_id imsttfb_pci_tbl[] = {
{ PCI_VENDOR_ID_IMS, PCI_DEVICE_ID_IMS_TT128,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, IBM },
{ PCI_VENDOR_ID_IMS, PCI_DEVICE_ID_IMS_TT3D,
diff --git a/drivers/video/fbdev/intelfb/Makefile b/drivers/video/fbdev/intelfb/Makefile
index f7d631ebee8e..7ff2debb31af 100644
--- a/drivers/video/fbdev/intelfb/Makefile
+++ b/drivers/video/fbdev/intelfb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_FB_INTEL) += intelfb.o
intelfb-y := intelfbdrv.o intelfbhw.o
diff --git a/drivers/video/fbdev/intelfb/intelfb.h b/drivers/video/fbdev/intelfb/intelfb.h
index 37f8339ea88c..b54db05f028d 100644
--- a/drivers/video/fbdev/intelfb/intelfb.h
+++ b/drivers/video/fbdev/intelfb/intelfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INTELFB_H
#define _INTELFB_H
diff --git a/drivers/video/fbdev/intelfb/intelfbdrv.c b/drivers/video/fbdev/intelfb/intelfbdrv.c
index ffc391208b27..d7463a2a5d83 100644
--- a/drivers/video/fbdev/intelfb/intelfbdrv.c
+++ b/drivers/video/fbdev/intelfb/intelfbdrv.c
@@ -173,7 +173,7 @@ static int intelfb_set_fbinfo(struct intelfb_info *dinfo);
#define INTELFB_CLASS_MASK 0
#endif
-static struct pci_device_id intelfb_pci_table[] = {
+static const struct pci_device_id intelfb_pci_table[] = {
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_830M, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_830M },
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_845G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_845G },
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_85XGM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_85XGM },
diff --git a/drivers/video/fbdev/kyro/fbdev.c b/drivers/video/fbdev/kyro/fbdev.c
index f77478fb3d14..a7bd9f25911b 100644
--- a/drivers/video/fbdev/kyro/fbdev.c
+++ b/drivers/video/fbdev/kyro/fbdev.c
@@ -633,7 +633,7 @@ static int kyrofb_ioctl(struct fb_info *info,
return 0;
}
-static struct pci_device_id kyrofb_pci_tbl[] = {
+static const struct pci_device_id kyrofb_pci_tbl[] = {
{ PCI_VENDOR_ID_ST, PCI_DEVICE_ID_STG4000,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
{ 0, }
diff --git a/drivers/video/fbdev/leo.c b/drivers/video/fbdev/leo.c
index 62e59dc90ee6..71862188f528 100644
--- a/drivers/video/fbdev/leo.c
+++ b/drivers/video/fbdev/leo.c
@@ -619,8 +619,8 @@ static int leo_probe(struct platform_device *op)
dev_set_drvdata(&op->dev, info);
- printk(KERN_INFO "%s: leo at %lx:%lx\n",
- dp->full_name,
+ printk(KERN_INFO "%pOF: leo at %lx:%lx\n",
+ dp,
par->which_io, info->fix.smem_start);
return 0;
diff --git a/drivers/video/fbdev/matrox/g450_pll.h b/drivers/video/fbdev/matrox/g450_pll.h
index aac615d18440..5303336c6547 100644
--- a/drivers/video/fbdev/matrox/g450_pll.h
+++ b/drivers/video/fbdev/matrox/g450_pll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __G450_PLL_H__
#define __G450_PLL_H__
diff --git a/drivers/video/fbdev/matrox/matroxfb_DAC1064.h b/drivers/video/fbdev/matrox/matroxfb_DAC1064.h
index 1e6e45b57b78..3b2a6fd35fff 100644
--- a/drivers/video/fbdev/matrox/matroxfb_DAC1064.h
+++ b/drivers/video/fbdev/matrox/matroxfb_DAC1064.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MATROXFB_DAC1064_H__
#define __MATROXFB_DAC1064_H__
diff --git a/drivers/video/fbdev/matrox/matroxfb_Ti3026.h b/drivers/video/fbdev/matrox/matroxfb_Ti3026.h
index 27872aaa0a17..faee149d0ba0 100644
--- a/drivers/video/fbdev/matrox/matroxfb_Ti3026.h
+++ b/drivers/video/fbdev/matrox/matroxfb_Ti3026.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MATROXFB_TI3026_H__
#define __MATROXFB_TI3026_H__
diff --git a/drivers/video/fbdev/matrox/matroxfb_accel.h b/drivers/video/fbdev/matrox/matroxfb_accel.h
index 1e418e62c22d..a7aa9a1d26c0 100644
--- a/drivers/video/fbdev/matrox/matroxfb_accel.h
+++ b/drivers/video/fbdev/matrox/matroxfb_accel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MATROXFB_ACCEL_H__
#define __MATROXFB_ACCEL_H__
diff --git a/drivers/video/fbdev/matrox/matroxfb_base.c b/drivers/video/fbdev/matrox/matroxfb_base.c
index f6a0b9af97a9..b9b284d79631 100644
--- a/drivers/video/fbdev/matrox/matroxfb_base.c
+++ b/drivers/video/fbdev/matrox/matroxfb_base.c
@@ -1198,7 +1198,7 @@ static int matroxfb_blank(int blank, struct fb_info *info)
return 0;
}
-static struct fb_ops matroxfb_ops = {
+static const struct fb_ops matroxfb_ops = {
.owner = THIS_MODULE,
.fb_open = matroxfb_open,
.fb_release = matroxfb_release,
@@ -1573,14 +1573,14 @@ static struct board {
NULL}};
#ifndef MODULE
-static struct fb_videomode defaultmode = {
+static const struct fb_videomode defaultmode = {
/* 640x480 @ 60Hz, 31.5 kHz */
NULL, 60, 640, 480, 39721, 40, 24, 32, 11, 96, 2,
0, FB_VMODE_NONINTERLACED
};
-#endif /* !MODULE */
static int hotplug = 0;
+#endif /* !MODULE */
static void setDefaultOutputs(struct matrox_fb_info *minfo)
{
@@ -1623,7 +1623,7 @@ static int initMatrox2(struct matrox_fb_info *minfo, struct board *b)
unsigned int memsize;
int err;
- static struct pci_device_id intel_82437[] = {
+ static const struct pci_device_id intel_82437[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82437) },
{ },
};
@@ -1794,9 +1794,7 @@ static int initMatrox2(struct matrox_fb_info *minfo, struct board *b)
minfo->fbops = matroxfb_ops;
minfo->fbcon.fbops = &minfo->fbops;
minfo->fbcon.pseudo_palette = minfo->cmap;
- /* after __init time we are like module... no logo */
- minfo->fbcon.flags = hotplug ? FBINFO_FLAG_MODULE : FBINFO_FLAG_DEFAULT;
- minfo->fbcon.flags |= FBINFO_PARTIAL_PAN_OK | /* Prefer panning for scroll under MC viewer/edit */
+ minfo->fbcon.flags = FBINFO_PARTIAL_PAN_OK | /* Prefer panning for scroll under MC viewer/edit */
FBINFO_HWACCEL_COPYAREA | /* We have hw-assisted bmove */
FBINFO_HWACCEL_FILLRECT | /* And fillrect */
FBINFO_HWACCEL_IMAGEBLIT | /* And imageblit */
@@ -2116,7 +2114,7 @@ static void pci_remove_matrox(struct pci_dev* pdev) {
matroxfb_remove(minfo, 1);
}
-static struct pci_device_id matroxfb_devices[] = {
+static const struct pci_device_id matroxfb_devices[] = {
#ifdef CONFIG_FB_MATROX_MILLENIUM
{PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_MIL,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
diff --git a/drivers/video/fbdev/matrox/matroxfb_base.h b/drivers/video/fbdev/matrox/matroxfb_base.h
index 7a90ea2c4613..f85ad25659e5 100644
--- a/drivers/video/fbdev/matrox/matroxfb_base.h
+++ b/drivers/video/fbdev/matrox/matroxfb_base.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Hardware accelerated Matrox Millennium I, II, Mystique, G100, G200, G400 and G450
diff --git a/drivers/video/fbdev/matrox/matroxfb_crtc2.h b/drivers/video/fbdev/matrox/matroxfb_crtc2.h
index 1005582e843e..23e90e210905 100644
--- a/drivers/video/fbdev/matrox/matroxfb_crtc2.h
+++ b/drivers/video/fbdev/matrox/matroxfb_crtc2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MATROXFB_CRTC2_H__
#define __MATROXFB_CRTC2_H__
diff --git a/drivers/video/fbdev/matrox/matroxfb_g450.h b/drivers/video/fbdev/matrox/matroxfb_g450.h
index 3a3e654444b8..b5f17b86eae5 100644
--- a/drivers/video/fbdev/matrox/matroxfb_g450.h
+++ b/drivers/video/fbdev/matrox/matroxfb_g450.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MATROXFB_G450_H__
#define __MATROXFB_G450_H__
diff --git a/drivers/video/fbdev/matrox/matroxfb_maven.h b/drivers/video/fbdev/matrox/matroxfb_maven.h
index 99eddec9f30c..f896b78836b1 100644
--- a/drivers/video/fbdev/matrox/matroxfb_maven.h
+++ b/drivers/video/fbdev/matrox/matroxfb_maven.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MATROXFB_MAVEN_H__
#define __MATROXFB_MAVEN_H__
diff --git a/drivers/video/fbdev/matrox/matroxfb_misc.h b/drivers/video/fbdev/matrox/matroxfb_misc.h
index 351c823f1f74..9cb6686d309e 100644
--- a/drivers/video/fbdev/matrox/matroxfb_misc.h
+++ b/drivers/video/fbdev/matrox/matroxfb_misc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MATROXFB_MISC_H__
#define __MATROXFB_MISC_H__
diff --git a/drivers/video/fbdev/maxinefb.c b/drivers/video/fbdev/maxinefb.c
index cab7333208ea..5bb1b5c308a7 100644
--- a/drivers/video/fbdev/maxinefb.c
+++ b/drivers/video/fbdev/maxinefb.c
@@ -39,7 +39,7 @@
static struct fb_info fb_info;
-static struct fb_var_screeninfo maxinefb_defined = {
+static const struct fb_var_screeninfo maxinefb_defined = {
.xres = 1024,
.yres = 768,
.xres_virtual = 1024,
diff --git a/drivers/video/fbdev/mb862xx/mb862xx_reg.h b/drivers/video/fbdev/mb862xx/mb862xx_reg.h
index 9df48b8edc94..e6d0513958c2 100644
--- a/drivers/video/fbdev/mb862xx/mb862xx_reg.h
+++ b/drivers/video/fbdev/mb862xx/mb862xx_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Fujitsu MB862xx Graphics Controller Registers/Bits
*/
diff --git a/drivers/video/fbdev/mb862xx/mb862xxfb.h b/drivers/video/fbdev/mb862xx/mb862xxfb.h
index 8550630c1e01..50bc9b584ca1 100644
--- a/drivers/video/fbdev/mb862xx/mb862xxfb.h
+++ b/drivers/video/fbdev/mb862xx/mb862xxfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MB862XX_H__
#define __MB862XX_H__
diff --git a/drivers/video/fbdev/mb862xx/mb862xxfb_accel.h b/drivers/video/fbdev/mb862xx/mb862xxfb_accel.h
index 96a2dfef0f60..3a2549f9a48f 100644
--- a/drivers/video/fbdev/mb862xx/mb862xxfb_accel.h
+++ b/drivers/video/fbdev/mb862xx/mb862xxfb_accel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MB826XXFB_ACCEL_H__
#define __MB826XXFB_ACCEL_H__
diff --git a/drivers/video/fbdev/mb862xx/mb862xxfbdrv.c b/drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
index f9ec5c0484fa..cd372527c9e4 100644
--- a/drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
+++ b/drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
@@ -982,7 +982,7 @@ static inline int mb862xx_pci_gdc_init(struct mb862xxfb_par *par)
#define CHIP_ID(id) \
{ PCI_DEVICE(PCI_VENDOR_ID_FUJITSU_LIMITED, id) }
-static struct pci_device_id mb862xx_pci_tbl[] = {
+static const struct pci_device_id mb862xx_pci_tbl[] = {
/* MB86295/MB86296 */
CHIP_ID(PCI_DEVICE_ID_FUJITSU_CORALP),
CHIP_ID(PCI_DEVICE_ID_FUJITSU_CORALPA),
diff --git a/drivers/video/fbdev/mbx/mbxdebugfs.c b/drivers/video/fbdev/mbx/mbxdebugfs.c
index 2528d3e609a4..2bd328883178 100644
--- a/drivers/video/fbdev/mbx/mbxdebugfs.c
+++ b/drivers/video/fbdev/mbx/mbxdebugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/debugfs.h>
#include <linux/slab.h>
diff --git a/drivers/video/fbdev/mbx/mbxfb.c b/drivers/video/fbdev/mbx/mbxfb.c
index 698df9543e30..539b85da0897 100644
--- a/drivers/video/fbdev/mbx/mbxfb.c
+++ b/drivers/video/fbdev/mbx/mbxfb.c
@@ -79,7 +79,7 @@ struct mbxfb_info {
};
-static struct fb_var_screeninfo mbxfb_default = {
+static const struct fb_var_screeninfo mbxfb_default = {
.xres = 640,
.yres = 480,
.xres_virtual = 640,
@@ -102,7 +102,7 @@ static struct fb_var_screeninfo mbxfb_default = {
.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
};
-static struct fb_fix_screeninfo mbxfb_fix = {
+static const struct fb_fix_screeninfo mbxfb_fix = {
.id = "MBX",
.type = FB_TYPE_PACKED_PIXELS,
.visual = FB_VISUAL_TRUECOLOR,
diff --git a/drivers/video/fbdev/mbx/reg_bits.h b/drivers/video/fbdev/mbx/reg_bits.h
index 5f14b4befd71..6607f353639b 100644
--- a/drivers/video/fbdev/mbx/reg_bits.h
+++ b/drivers/video/fbdev/mbx/reg_bits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __REG_BITS_2700G_
#define __REG_BITS_2700G_
diff --git a/drivers/video/fbdev/mbx/regs.h b/drivers/video/fbdev/mbx/regs.h
index 063099d48839..591fc9d26084 100644
--- a/drivers/video/fbdev/mbx/regs.h
+++ b/drivers/video/fbdev/mbx/regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __REGS_2700G_
#define __REGS_2700G_
diff --git a/drivers/video/fbdev/mmp/panel/Kconfig b/drivers/video/fbdev/mmp/panel/Kconfig
index 4b2c4f457b11..808890f7064b 100644
--- a/drivers/video/fbdev/mmp/panel/Kconfig
+++ b/drivers/video/fbdev/mmp/panel/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config MMP_PANEL_TPOHVGA
bool "tpohvga panel TJ032MD01BW support"
depends on SPI_MASTER
diff --git a/drivers/video/fbdev/neofb.c b/drivers/video/fbdev/neofb.c
index db023a97d1ea..5d3a444083f7 100644
--- a/drivers/video/fbdev/neofb.c
+++ b/drivers/video/fbdev/neofb.c
@@ -2138,7 +2138,7 @@ static void neofb_remove(struct pci_dev *dev)
}
}
-static struct pci_device_id neofb_devices[] = {
+static const struct pci_device_id neofb_devices[] = {
{PCI_VENDOR_ID_NEOMAGIC, PCI_CHIP_NM2070,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, FB_ACCEL_NEOMAGIC_NM2070},
diff --git a/drivers/video/fbdev/nvidia/Makefile b/drivers/video/fbdev/nvidia/Makefile
index 917d3eb05feb..cdd6e8ac454a 100644
--- a/drivers/video/fbdev/nvidia/Makefile
+++ b/drivers/video/fbdev/nvidia/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the nVidia framebuffer driver
#
diff --git a/drivers/video/fbdev/nvidia/nv_proto.h b/drivers/video/fbdev/nvidia/nv_proto.h
index 878a5ce02299..fb9c5ebf2958 100644
--- a/drivers/video/fbdev/nvidia/nv_proto.h
+++ b/drivers/video/fbdev/nvidia/nv_proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h,v 1.10 2003/07/31 20:24:29 mvojkovi Exp $ */
#ifndef __NV_PROTO_H__
diff --git a/drivers/video/fbdev/nvidia/nv_type.h b/drivers/video/fbdev/nvidia/nv_type.h
index 6ff321a36813..d7a1d4363d5f 100644
--- a/drivers/video/fbdev/nvidia/nv_type.h
+++ b/drivers/video/fbdev/nvidia/nv_type.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NV_TYPE_H__
#define __NV_TYPE_H__
diff --git a/drivers/video/fbdev/nvidia/nvidia.c b/drivers/video/fbdev/nvidia/nvidia.c
index ce7dab7299fe..418a2d0d06a9 100644
--- a/drivers/video/fbdev/nvidia/nvidia.c
+++ b/drivers/video/fbdev/nvidia/nvidia.c
@@ -55,7 +55,7 @@
/* HW cursor parameters */
#define MAX_CURS 32
-static struct pci_device_id nvidiafb_pci_tbl[] = {
+static const struct pci_device_id nvidiafb_pci_tbl[] = {
{PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
PCI_BASE_CLASS_DISPLAY << 16, 0xff0000, 0},
{ 0, }
diff --git a/drivers/video/fbdev/offb.c b/drivers/video/fbdev/offb.c
index 9be884b0c778..90d38de34479 100644
--- a/drivers/video/fbdev/offb.c
+++ b/drivers/video/fbdev/offb.c
@@ -383,7 +383,7 @@ static void offb_init_palette_hacks(struct fb_info *info, struct device_node *dp
FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_STATIC_PSEUDOCOLOR;
}
-static void __init offb_init_fb(const char *name, const char *full_name,
+static void __init offb_init_fb(const char *name,
int width, int height, int depth,
int pitch, unsigned long address,
int foreign_endian, struct device_node *dp)
@@ -402,14 +402,13 @@ static void __init offb_init_fb(const char *name, const char *full_name,
"Using unsupported %dx%d %s at %lx, depth=%d, pitch=%d\n",
width, height, name, address, depth, pitch);
if (depth != 8 && depth != 15 && depth != 16 && depth != 32) {
- printk(KERN_ERR "%s: can't use depth = %d\n", full_name,
- depth);
+ printk(KERN_ERR "%pOF: can't use depth = %d\n", dp, depth);
release_mem_region(res_start, res_size);
return;
}
info = framebuffer_alloc(sizeof(u32) * 16, NULL);
-
+
if (info == 0) {
release_mem_region(res_start, res_size);
return;
@@ -515,7 +514,7 @@ static void __init offb_init_fb(const char *name, const char *full_name,
if (register_framebuffer(info) < 0)
goto out_err;
- fb_info(info, "Open Firmware frame buffer device on %s\n", full_name);
+ fb_info(info, "Open Firmware frame buffer device on %pOF\n", dp);
return;
out_err:
@@ -644,7 +643,6 @@ static void __init offb_init_nodriver(struct device_node *dp, int no_real_node)
if (strcmp(dp->name, "valkyrie") == 0)
address += 0x1000;
offb_init_fb(no_real_node ? "bootx" : dp->name,
- no_real_node ? "display" : dp->full_name,
width, height, depth, pitch, address,
foreign_endian, no_real_node ? NULL : dp);
}
diff --git a/drivers/video/fbdev/omap/Makefile b/drivers/video/fbdev/omap/Makefile
index 732e0718be53..daaa73a94e7f 100644
--- a/drivers/video/fbdev/omap/Makefile
+++ b/drivers/video/fbdev/omap/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the OMAP1 framebuffer device driver
#
diff --git a/drivers/video/fbdev/omap/lcd_mipid.c b/drivers/video/fbdev/omap/lcd_mipid.c
index df9e6ebcfad5..e3a85432f926 100644
--- a/drivers/video/fbdev/omap/lcd_mipid.c
+++ b/drivers/video/fbdev/omap/lcd_mipid.c
@@ -496,7 +496,7 @@ static void mipid_cleanup(struct lcd_panel *panel)
mipid_esd_stop_check(md);
}
-static struct lcd_panel mipid_panel = {
+static const struct lcd_panel mipid_panel = {
.config = OMAP_LCDC_PANEL_TFT,
.bpp = 16,
diff --git a/drivers/video/fbdev/omap/lcdc.h b/drivers/video/fbdev/omap/lcdc.h
index 845222270db3..8a7607d861c1 100644
--- a/drivers/video/fbdev/omap/lcdc.h
+++ b/drivers/video/fbdev/omap/lcdc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LCDC_H
#define LCDC_H
diff --git a/drivers/video/fbdev/omap2/omapfb/Makefile b/drivers/video/fbdev/omap2/omapfb/Makefile
index ad68ecf141af..602edfed09df 100644
--- a/drivers/video/fbdev/omap2/omapfb/Makefile
+++ b/drivers/video/fbdev/omap2/omapfb/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_OMAP2_VRFB) += vrfb.o
obj-y += dss/
obj-y += displays/
diff --git a/drivers/video/fbdev/omap2/omapfb/displays/Makefile b/drivers/video/fbdev/omap2/omapfb/displays/Makefile
index 4f7459272256..f801762ce455 100644
--- a/drivers/video/fbdev/omap2/omapfb/displays/Makefile
+++ b/drivers/video/fbdev/omap2/omapfb/displays/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_FB_OMAP2_ENCODER_OPA362) += encoder-opa362.o
obj-$(CONFIG_FB_OMAP2_ENCODER_TFP410) += encoder-tfp410.o
obj-$(CONFIG_FB_OMAP2_ENCODER_TPD12S015) += encoder-tpd12s015.o
diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c
index f14691ce8d02..6cd759c01037 100644
--- a/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c
+++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c
@@ -18,7 +18,7 @@
#include <video/omapfb_dss.h>
-static struct omap_video_timings lb035q02_timings = {
+static const struct omap_video_timings lb035q02_timings = {
.x_res = 320,
.y_res = 240,
diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c
index 468560a6daae..f2c2fef3db74 100644
--- a/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c
+++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c
@@ -509,7 +509,7 @@ static struct attribute *bldev_attrs[] = {
NULL,
};
-static struct attribute_group bldev_attr_group = {
+static const struct attribute_group bldev_attr_group = {
.attrs = bldev_attrs,
};
diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c
index b529a8c2b652..57e9e146ff74 100644
--- a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c
+++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c
@@ -41,7 +41,7 @@ struct panel_drv_data {
struct spi_device *spi_dev;
};
-static struct omap_video_timings td028ttec1_panel_timings = {
+static const struct omap_video_timings td028ttec1_panel_timings = {
.x_res = 480,
.y_res = 640,
.pixelclock = 22153000,
diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c
index 51e628b85f4a..ea8c79a42b41 100644
--- a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c
+++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c
@@ -282,7 +282,7 @@ static struct attribute *tpo_td043_attrs[] = {
NULL,
};
-static struct attribute_group tpo_td043_attr_group = {
+static const struct attribute_group tpo_td043_attr_group = {
.attrs = tpo_td043_attrs,
};
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/Kconfig b/drivers/video/fbdev/omap2/omapfb/dss/Kconfig
index 27d220212870..6d0bb27e4f85 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/Kconfig
+++ b/drivers/video/fbdev/omap2/omapfb/dss/Kconfig
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
config FB_OMAP2_DSS_INIT
bool
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/Makefile b/drivers/video/fbdev/omap2/omapfb/dss/Makefile
index 02308e24f3ef..7318d5260e8d 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/Makefile
+++ b/drivers/video/fbdev/omap2/omapfb/dss/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_FB_OMAP2_DSS_INIT) += omapdss-boot-init.o
obj-$(CONFIG_FB_OMAP2_DSS) += omapdss.o
# Core DSS files
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/dss-of.c b/drivers/video/fbdev/omap2/omapfb/dss/dss-of.c
index d356a252ab4a..f1eb8b0f8a2a 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/dss-of.c
+++ b/drivers/video/fbdev/omap2/omapfb/dss/dss-of.c
@@ -16,6 +16,7 @@
#include <linux/err.h>
#include <linux/module.h>
#include <linux/of.h>
+#include <linux/of_graph.h>
#include <linux/seq_file.h>
#include <video/omapfb_dss.h>
@@ -128,7 +129,7 @@ static struct device_node *omapdss_of_get_remote_port(const struct device_node *
{
struct device_node *np;
- np = of_parse_phandle(node, "remote-endpoint", 0);
+ np = of_graph_get_remote_endpoint(node);
if (!np)
return NULL;
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/hdmi_common.c b/drivers/video/fbdev/omap2/omapfb/dss/hdmi_common.c
index 189a5ad125a3..f13d7639826d 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/hdmi_common.c
+++ b/drivers/video/fbdev/omap2/omapfb/dss/hdmi_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define DSS_SUBSYS_NAME "HDMI"
diff --git a/drivers/video/fbdev/p9100.c b/drivers/video/fbdev/p9100.c
index 1f6ee76af878..64de5cda541d 100644
--- a/drivers/video/fbdev/p9100.c
+++ b/drivers/video/fbdev/p9100.c
@@ -304,8 +304,8 @@ static int p9100_probe(struct platform_device *op)
dev_set_drvdata(&op->dev, info);
- printk(KERN_INFO "%s: p9100 at %lx:%lx\n",
- dp->full_name,
+ printk(KERN_INFO "%pOF: p9100 at %lx:%lx\n",
+ dp,
par->which_io, info->fix.smem_start);
return 0;
diff --git a/drivers/video/fbdev/pm2fb.c b/drivers/video/fbdev/pm2fb.c
index 1a4070f719c2..bd6c2f5f6095 100644
--- a/drivers/video/fbdev/pm2fb.c
+++ b/drivers/video/fbdev/pm2fb.c
@@ -1732,7 +1732,7 @@ static void pm2fb_remove(struct pci_dev *pdev)
framebuffer_release(info);
}
-static struct pci_device_id pm2fb_id_table[] = {
+static const struct pci_device_id pm2fb_id_table[] = {
{ PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_TVP4020,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
{ PCI_VENDOR_ID_3DLABS, PCI_DEVICE_ID_3DLABS_PERMEDIA2,
diff --git a/drivers/video/fbdev/pm3fb.c b/drivers/video/fbdev/pm3fb.c
index 6ff5077a2e15..6130aa56a1e9 100644
--- a/drivers/video/fbdev/pm3fb.c
+++ b/drivers/video/fbdev/pm3fb.c
@@ -1479,7 +1479,7 @@ static void pm3fb_remove(struct pci_dev *dev)
}
}
-static struct pci_device_id pm3fb_id_table[] = {
+static const struct pci_device_id pm3fb_id_table[] = {
{ PCI_VENDOR_ID_3DLABS, 0x0a,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
{ 0, }
diff --git a/drivers/video/fbdev/pmag-aa-fb.c b/drivers/video/fbdev/pmag-aa-fb.c
index 39922f072db4..ca7e9390d1e7 100644
--- a/drivers/video/fbdev/pmag-aa-fb.c
+++ b/drivers/video/fbdev/pmag-aa-fb.c
@@ -67,7 +67,7 @@ struct aafb_par {
struct bt431_regs __iomem *bt431;
};
-static struct fb_var_screeninfo aafb_defined = {
+static const struct fb_var_screeninfo aafb_defined = {
.xres = 1280,
.yres = 1024,
.xres_virtual = 2048,
@@ -90,7 +90,7 @@ static struct fb_var_screeninfo aafb_defined = {
.vmode = FB_VMODE_NONINTERLACED,
};
-static struct fb_fix_screeninfo aafb_fix = {
+static const struct fb_fix_screeninfo aafb_fix = {
.id = "PMAG-AA",
.smem_len = (2048 * 1024),
.type = FB_TYPE_PACKED_PIXELS,
diff --git a/drivers/video/fbdev/pmag-ba-fb.c b/drivers/video/fbdev/pmag-ba-fb.c
index 1fd02f40708e..3b9249449ea6 100644
--- a/drivers/video/fbdev/pmag-ba-fb.c
+++ b/drivers/video/fbdev/pmag-ba-fb.c
@@ -43,7 +43,7 @@ struct pmagbafb_par {
};
-static struct fb_var_screeninfo pmagbafb_defined = {
+static const struct fb_var_screeninfo pmagbafb_defined = {
.xres = 1024,
.yres = 864,
.xres_virtual = 1024,
@@ -67,7 +67,7 @@ static struct fb_var_screeninfo pmagbafb_defined = {
.vmode = FB_VMODE_NONINTERLACED,
};
-static struct fb_fix_screeninfo pmagbafb_fix = {
+static const struct fb_fix_screeninfo pmagbafb_fix = {
.id = "PMAG-BA",
.smem_len = (1024 * 1024),
.type = FB_TYPE_PACKED_PIXELS,
diff --git a/drivers/video/fbdev/pmagb-b-fb.c b/drivers/video/fbdev/pmagb-b-fb.c
index 46e96c451506..e58df36233c4 100644
--- a/drivers/video/fbdev/pmagb-b-fb.c
+++ b/drivers/video/fbdev/pmagb-b-fb.c
@@ -44,7 +44,7 @@ struct pmagbbfb_par {
};
-static struct fb_var_screeninfo pmagbbfb_defined = {
+static const struct fb_var_screeninfo pmagbbfb_defined = {
.bits_per_pixel = 8,
.red.length = 8,
.green.length = 8,
@@ -57,7 +57,7 @@ static struct fb_var_screeninfo pmagbbfb_defined = {
.vmode = FB_VMODE_NONINTERLACED,
};
-static struct fb_fix_screeninfo pmagbbfb_fix = {
+static const struct fb_fix_screeninfo pmagbbfb_fix = {
.id = "PMAGB-BA",
.smem_len = (2048 * 1024),
.type = FB_TYPE_PACKED_PIXELS,
diff --git a/drivers/video/fbdev/ps3fb.c b/drivers/video/fbdev/ps3fb.c
index b269abd932aa..5ed2db39d823 100644
--- a/drivers/video/fbdev/ps3fb.c
+++ b/drivers/video/fbdev/ps3fb.c
@@ -952,7 +952,7 @@ static struct fb_ops ps3fb_ops = {
.fb_compat_ioctl = ps3fb_ioctl
};
-static struct fb_fix_screeninfo ps3fb_fix = {
+static const struct fb_fix_screeninfo ps3fb_fix = {
.id = DEVICE_NAME,
.type = FB_TYPE_PACKED_PIXELS,
.visual = FB_VISUAL_TRUECOLOR,
diff --git a/drivers/video/fbdev/pvr2fb.c b/drivers/video/fbdev/pvr2fb.c
index a2564ab91e62..867c5218968f 100644
--- a/drivers/video/fbdev/pvr2fb.c
+++ b/drivers/video/fbdev/pvr2fb.c
@@ -154,7 +154,7 @@ static struct fb_fix_screeninfo pvr2_fix = {
.accel = FB_ACCEL_NONE,
};
-static struct fb_var_screeninfo pvr2_var = {
+static const struct fb_var_screeninfo pvr2_var = {
.xres = 640,
.yres = 480,
.xres_virtual = 640,
@@ -966,7 +966,7 @@ static void pvr2fb_pci_remove(struct pci_dev *pdev)
pci_release_regions(pdev);
}
-static struct pci_device_id pvr2fb_pci_tbl[] = {
+static const struct pci_device_id pvr2fb_pci_tbl[] = {
{ PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_NEON250,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
{ 0, },
diff --git a/drivers/video/fbdev/pxa168fb.h b/drivers/video/fbdev/pxa168fb.h
index eee09279c524..2aba90de1360 100644
--- a/drivers/video/fbdev/pxa168fb.h
+++ b/drivers/video/fbdev/pxa168fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PXA168FB_H__
#define __PXA168FB_H__
diff --git a/drivers/video/fbdev/pxa3xx-gcu.c b/drivers/video/fbdev/pxa3xx-gcu.c
index 50bce45e7f3d..933619da1a94 100644
--- a/drivers/video/fbdev/pxa3xx-gcu.c
+++ b/drivers/video/fbdev/pxa3xx-gcu.c
@@ -626,8 +626,8 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
/* request the IRQ */
irq = platform_get_irq(pdev, 0);
if (irq < 0) {
- dev_err(dev, "no IRQ defined\n");
- return -ENODEV;
+ dev_err(dev, "no IRQ defined: %d\n", irq);
+ return irq;
}
ret = devm_request_irq(dev, irq, pxa3xx_gcu_handle_irq,
diff --git a/drivers/video/fbdev/pxa3xx-gcu.h b/drivers/video/fbdev/pxa3xx-gcu.h
index 0428ed03dc49..ea9489d16de5 100644
--- a/drivers/video/fbdev/pxa3xx-gcu.h
+++ b/drivers/video/fbdev/pxa3xx-gcu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PXA3XX_GCU_H__
#define __PXA3XX_GCU_H__
diff --git a/drivers/video/fbdev/q40fb.c b/drivers/video/fbdev/q40fb.c
index 04ea330ccf5d..0b93aa964d43 100644
--- a/drivers/video/fbdev/q40fb.c
+++ b/drivers/video/fbdev/q40fb.c
@@ -36,7 +36,7 @@ static struct fb_fix_screeninfo q40fb_fix = {
.accel = FB_ACCEL_NONE,
};
-static struct fb_var_screeninfo q40fb_var = {
+static const struct fb_var_screeninfo q40fb_var = {
.xres = 1024,
.yres = 512,
.xres_virtual = 1024,
diff --git a/drivers/video/fbdev/riva/Makefile b/drivers/video/fbdev/riva/Makefile
index 8898c9915b02..bdbdd6eb80ec 100644
--- a/drivers/video/fbdev/riva/Makefile
+++ b/drivers/video/fbdev/riva/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Riva framebuffer driver
#
diff --git a/drivers/video/fbdev/riva/fbdev.c b/drivers/video/fbdev/riva/fbdev.c
index 2ef26ad99341..1ea78bb911fb 100644
--- a/drivers/video/fbdev/riva/fbdev.c
+++ b/drivers/video/fbdev/riva/fbdev.c
@@ -101,7 +101,7 @@ static int rivafb_blank(int blank, struct fb_info *info);
*
* ------------------------------------------------------------------------- */
-static struct pci_device_id rivafb_pci_tbl[] = {
+static const struct pci_device_id rivafb_pci_tbl[] = {
{ PCI_VENDOR_ID_NVIDIA_SGS, PCI_DEVICE_ID_NVIDIA_SGS_RIVA128,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_TNT,
diff --git a/drivers/video/fbdev/riva/nv_type.h b/drivers/video/fbdev/riva/nv_type.h
index a69480c9a67c..51937a0ae0a4 100644
--- a/drivers/video/fbdev/riva/nv_type.h
+++ b/drivers/video/fbdev/riva/nv_type.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h,v 1.35 2002/08/05 20:47:06 mvojkovi Exp $ */
#ifndef __NV_STRUCT_H__
diff --git a/drivers/video/fbdev/riva/rivafb.h b/drivers/video/fbdev/riva/rivafb.h
index 61fd37ca490a..593297ca2b20 100644
--- a/drivers/video/fbdev/riva/rivafb.h
+++ b/drivers/video/fbdev/riva/rivafb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RIVAFB_H
#define __RIVAFB_H
diff --git a/drivers/video/fbdev/s3fb.c b/drivers/video/fbdev/s3fb.c
index 13b109073c63..d63f23e26f7d 100644
--- a/drivers/video/fbdev/s3fb.c
+++ b/drivers/video/fbdev/s3fb.c
@@ -1483,7 +1483,7 @@ static int s3_pci_resume(struct pci_dev* dev)
/* List of boards that we are trying to support */
-static struct pci_device_id s3_devices[] = {
+static const struct pci_device_id s3_devices[] = {
{PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8810), .driver_data = CHIP_XXX_TRIO},
{PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8811), .driver_data = CHIP_XXX_TRIO},
{PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8812), .driver_data = CHIP_M65_AURORA64VP},
diff --git a/drivers/video/fbdev/savage/savagefb_driver.c b/drivers/video/fbdev/savage/savagefb_driver.c
index c30a91c1137c..c20468362f11 100644
--- a/drivers/video/fbdev/savage/savagefb_driver.c
+++ b/drivers/video/fbdev/savage/savagefb_driver.c
@@ -2429,7 +2429,7 @@ static int savagefb_resume(struct pci_dev* dev)
}
-static struct pci_device_id savagefb_devices[] = {
+static const struct pci_device_id savagefb_devices[] = {
{PCI_VENDOR_ID_S3, PCI_CHIP_SUPSAV_MX128,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, FB_ACCEL_SUPERSAVAGE},
diff --git a/drivers/video/fbdev/sbuslib.c b/drivers/video/fbdev/sbuslib.c
index a350209ffbd3..af6fc97f4ba4 100644
--- a/drivers/video/fbdev/sbuslib.c
+++ b/drivers/video/fbdev/sbuslib.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* sbuslib.c: Helper library for SBUS framebuffer drivers.
*
* Copyright (C) 2003 David S. Miller (davem@redhat.com)
diff --git a/drivers/video/fbdev/sbuslib.h b/drivers/video/fbdev/sbuslib.h
index 7ba3250236bd..a6b9a2467646 100644
--- a/drivers/video/fbdev/sbuslib.h
+++ b/drivers/video/fbdev/sbuslib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* sbuslib.h: SBUS fb helper library interfaces */
#ifndef _SBUSLIB_H
#define _SBUSLIB_H
diff --git a/drivers/video/fbdev/sh_mobile_lcdcfb.h b/drivers/video/fbdev/sh_mobile_lcdcfb.h
index f839adef1d90..cc52c74721fe 100644
--- a/drivers/video/fbdev/sh_mobile_lcdcfb.h
+++ b/drivers/video/fbdev/sh_mobile_lcdcfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SH_MOBILE_LCDCFB_H
#define SH_MOBILE_LCDCFB_H
diff --git a/drivers/video/fbdev/sis/init301.c b/drivers/video/fbdev/sis/init301.c
index 20f7234e809e..1ec9c3e0e1d8 100644
--- a/drivers/video/fbdev/sis/init301.c
+++ b/drivers/video/fbdev/sis/init301.c
@@ -6848,8 +6848,6 @@ SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short
if(SiS_Pr->SiS_VGAHDE >= 1280) {
tempch = 20;
tempbx &= ~0x20;
- } else if(SiS_Pr->SiS_VGAHDE >= 1024) {
- tempch = 25;
} else {
tempch = 25; /* OK */
}
@@ -7964,14 +7962,9 @@ SiS_SetCHTVReg(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short
}
}
} else { /* ---- PAL ---- */
- /* We don't play around with FSCI in PAL mode */
- if(resindex == 0x04) {
- SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off */
- SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x01,0xFE); /* ACIV on */
- } else {
- SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off */
- SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x01,0xFE); /* ACIV on */
- }
+ /* We don't play around with FSCI in PAL mode */
+ SiS_SetCH70xxANDOR(SiS_Pr, 0x20, 0x00, 0xEF); /* loop filter off */
+ SiS_SetCH70xxANDOR(SiS_Pr, 0x21, 0x01, 0xFE); /* ACIV on */
}
#endif /* 300 */
@@ -9657,8 +9650,6 @@ SetDelayComp(struct SiS_Private *SiS_Pr, unsigned short ModeNo)
delay = 0x0a;
} else if(IS_SIS740) {
delay = 0x00;
- } else if(SiS_Pr->ChipType < SIS_330) {
- delay = 0x0c;
} else {
delay = 0x0c;
}
diff --git a/drivers/video/fbdev/skeletonfb.c b/drivers/video/fbdev/skeletonfb.c
index e219a0a22077..7f4e908330bf 100644
--- a/drivers/video/fbdev/skeletonfb.c
+++ b/drivers/video/fbdev/skeletonfb.c
@@ -84,7 +84,7 @@ struct xxx_par;
* if we don't use modedb. If we do use modedb see xxxfb_init how to use it
* to get a fb_var_screeninfo. Otherwise define a default var as well.
*/
-static struct fb_fix_screeninfo xxxfb_fix = {
+static const struct fb_fix_screeninfo xxxfb_fix = {
.id = "FB's name",
.type = FB_TYPE_PACKED_PIXELS,
.visual = FB_VISUAL_PSEUDOCOLOR,
@@ -866,7 +866,7 @@ static int xxxfb_resume(struct pci_dev *dev)
#define xxxfb_resume NULL
#endif /* CONFIG_PM */
-static struct pci_device_id xxxfb_id_table[] = {
+static const struct pci_device_id xxxfb_id_table[] = {
{ PCI_VENDOR_ID_XXX, PCI_DEVICE_ID_XXX,
PCI_ANY_ID, PCI_ANY_ID, PCI_BASE_CLASS_DISPLAY << 16,
PCI_CLASS_MASK, 0 },
diff --git a/drivers/video/fbdev/sm501fb.c b/drivers/video/fbdev/sm501fb.c
index 67e314fdd947..076dd2711630 100644
--- a/drivers/video/fbdev/sm501fb.c
+++ b/drivers/video/fbdev/sm501fb.c
@@ -46,7 +46,7 @@
static char *fb_mode = "640x480-16@60";
static unsigned long default_bpp = 16;
-static struct fb_videomode sm501_default_mode = {
+static const struct fb_videomode sm501_default_mode = {
.refresh = 60,
.xres = 640,
.yres = 480,
diff --git a/drivers/video/fbdev/sm712fb.c b/drivers/video/fbdev/sm712fb.c
index 73cb4ffff3c5..502d0de2feec 100644
--- a/drivers/video/fbdev/sm712fb.c
+++ b/drivers/video/fbdev/sm712fb.c
@@ -33,8 +33,8 @@
#include "sm712.h"
/*
-* Private structure
-*/
+ * Private structure
+ */
struct smtcfb_info {
struct pci_dev *pdev;
struct fb_info *fb;
@@ -785,7 +785,7 @@ static void __init sm7xx_vga_setup(char *options)
smtc_scr_info.lfb_height = 0;
smtc_scr_info.lfb_depth = 0;
- pr_debug("sm7xx_vga_setup = %s\n", options);
+ pr_debug("%s = %s\n", __func__, options);
for (i = 0; i < ARRAY_SIZE(vesa_mode_table); i++) {
if (strstr(options, vesa_mode_table[i].index)) {
@@ -798,8 +798,8 @@ static void __init sm7xx_vga_setup(char *options)
}
}
-static void sm712_setpalette(int regno, unsigned red, unsigned green,
- unsigned blue, struct fb_info *info)
+static void sm712_setpalette(int regno, unsigned int red, unsigned int green,
+ unsigned int blue, struct fb_info *info)
{
/* set bit 5:4 = 01 (write LCD RAM only) */
smtc_seqw(0x66, (smtc_seqr(0x66) & 0xC3) | 0x10);
@@ -896,8 +896,9 @@ static int smtc_blank(int blank_mode, struct fb_info *info)
return 0;
}
-static int smtc_setcolreg(unsigned regno, unsigned red, unsigned green,
- unsigned blue, unsigned trans, struct fb_info *info)
+static int smtc_setcolreg(unsigned int regno, unsigned int red,
+ unsigned int green, unsigned int blue,
+ unsigned int trans, struct fb_info *info)
{
struct smtcfb_info *sfb;
u32 val;
@@ -1477,7 +1478,7 @@ static int smtcfb_pci_probe(struct pci_dev *pdev,
}
/* can support 32 bpp */
- if (15 == sfb->fb->var.bits_per_pixel)
+ if (sfb->fb->var.bits_per_pixel == 15)
sfb->fb->var.bits_per_pixel = 16;
sfb->fb->var.xres_virtual = sfb->fb->var.xres;
diff --git a/drivers/video/fbdev/smscufx.c b/drivers/video/fbdev/smscufx.c
index 449fceaf79d5..2275e80b5776 100644
--- a/drivers/video/fbdev/smscufx.c
+++ b/drivers/video/fbdev/smscufx.c
@@ -122,7 +122,7 @@ static const u32 smscufx_info_flags = FBINFO_DEFAULT | FBINFO_READS_FAST |
FBINFO_VIRTFB | FBINFO_HWACCEL_IMAGEBLIT | FBINFO_HWACCEL_FILLRECT |
FBINFO_HWACCEL_COPYAREA | FBINFO_MISC_ALWAYS_SETPAR;
-static struct usb_device_id id_table[] = {
+static const struct usb_device_id id_table[] = {
{USB_DEVICE(0x0424, 0x9d00),},
{USB_DEVICE(0x0424, 0x9d01),},
{},
diff --git a/drivers/video/fbdev/sticore.h b/drivers/video/fbdev/sticore.h
index af1619536ac8..fb8f58f9867a 100644
--- a/drivers/video/fbdev/sticore.h
+++ b/drivers/video/fbdev/sticore.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef STICORE_H
#define STICORE_H
diff --git a/drivers/video/fbdev/sunxvr1000.c b/drivers/video/fbdev/sunxvr1000.c
index fb37f6e05391..8fe37c0ef2f5 100644
--- a/drivers/video/fbdev/sunxvr1000.c
+++ b/drivers/video/fbdev/sunxvr1000.c
@@ -33,8 +33,8 @@ static int gfb_get_props(struct gfb_info *gp)
gp->depth = of_getintprop_default(gp->of_node, "depth", 32);
if (!gp->width || !gp->height) {
- printk(KERN_ERR "gfb: Critical properties missing for %s\n",
- gp->of_node->full_name);
+ printk(KERN_ERR "gfb: Critical properties missing for %pOF\n",
+ gp->of_node);
return -EINVAL;
}
@@ -151,12 +151,12 @@ static int gfb_probe(struct platform_device *op)
if (err)
goto err_unmap_fb;
- printk("gfb: Found device at %s\n", dp->full_name);
+ printk("gfb: Found device at %pOF\n", dp);
err = register_framebuffer(info);
if (err < 0) {
- printk(KERN_ERR "gfb: Could not register framebuffer %s\n",
- dp->full_name);
+ printk(KERN_ERR "gfb: Could not register framebuffer %pOF\n",
+ dp);
goto err_unmap_fb;
}
diff --git a/drivers/video/fbdev/sunxvr2500.c b/drivers/video/fbdev/sunxvr2500.c
index 1a053292f2eb..544465ba1dc0 100644
--- a/drivers/video/fbdev/sunxvr2500.c
+++ b/drivers/video/fbdev/sunxvr2500.c
@@ -220,7 +220,7 @@ err_out:
return err;
}
-static struct pci_device_id s3d_pci_table[] = {
+static const struct pci_device_id s3d_pci_table[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_3DLABS, 0x002c), },
{ PCI_DEVICE(PCI_VENDOR_ID_3DLABS, 0x002d), },
{ PCI_DEVICE(PCI_VENDOR_ID_3DLABS, 0x002e), },
diff --git a/drivers/video/fbdev/sunxvr500.c b/drivers/video/fbdev/sunxvr500.c
index dc0d886e4e7e..bc595937df08 100644
--- a/drivers/video/fbdev/sunxvr500.c
+++ b/drivers/video/fbdev/sunxvr500.c
@@ -393,7 +393,7 @@ err_out:
return err;
}
-static struct pci_device_id e3d_pci_table[] = {
+static const struct pci_device_id e3d_pci_table[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_3DLABS, 0x7a0), },
{ PCI_DEVICE(0x1091, 0x7a0), },
{ PCI_DEVICE(PCI_VENDOR_ID_3DLABS, 0x7a2), },
diff --git a/drivers/video/fbdev/tcx.c b/drivers/video/fbdev/tcx.c
index 54ad08854c94..c98d8a569ccd 100644
--- a/drivers/video/fbdev/tcx.c
+++ b/drivers/video/fbdev/tcx.c
@@ -467,8 +467,8 @@ static int tcx_probe(struct platform_device *op)
dev_set_drvdata(&op->dev, info);
- printk(KERN_INFO "%s: TCX at %lx:%lx, %s\n",
- dp->full_name,
+ printk(KERN_INFO "%pOF: TCX at %lx:%lx, %s\n",
+ dp,
par->which_io,
info->fix.smem_start,
par->lowdepth ? "8-bit only" : "24-bit depth");
diff --git a/drivers/video/fbdev/tdfxfb.c b/drivers/video/fbdev/tdfxfb.c
index d5fa313806fe..dec1fed9880e 100644
--- a/drivers/video/fbdev/tdfxfb.c
+++ b/drivers/video/fbdev/tdfxfb.c
@@ -120,7 +120,7 @@ static const struct fb_var_screeninfo tdfx_var = {
static int tdfxfb_probe(struct pci_dev *pdev, const struct pci_device_id *id);
static void tdfxfb_remove(struct pci_dev *pdev);
-static struct pci_device_id tdfxfb_id_table[] = {
+static const struct pci_device_id tdfxfb_id_table[] = {
{ PCI_VENDOR_ID_3DFX, PCI_DEVICE_ID_3DFX_BANSHEE,
PCI_ANY_ID, PCI_ANY_ID, PCI_BASE_CLASS_DISPLAY << 16,
0xff0000, 0 },
diff --git a/drivers/video/fbdev/tridentfb.c b/drivers/video/fbdev/tridentfb.c
index 8a5bbc13082e..284706184b1b 100644
--- a/drivers/video/fbdev/tridentfb.c
+++ b/drivers/video/fbdev/tridentfb.c
@@ -1737,7 +1737,7 @@ static void trident_pci_remove(struct pci_dev *dev)
}
/* List of boards that we are trying to support */
-static struct pci_device_id trident_devices[] = {
+static const struct pci_device_id trident_devices[] = {
{PCI_VENDOR_ID_TRIDENT, BLADE3D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{PCI_VENDOR_ID_TRIDENT, CYBERBLADEi7, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{PCI_VENDOR_ID_TRIDENT, CYBERBLADEi7D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
diff --git a/drivers/video/fbdev/udlfb.c b/drivers/video/fbdev/udlfb.c
index 05ef657235df..ef08a104fb42 100644
--- a/drivers/video/fbdev/udlfb.c
+++ b/drivers/video/fbdev/udlfb.c
@@ -54,7 +54,7 @@ static const u32 udlfb_info_flags = FBINFO_DEFAULT | FBINFO_READS_FAST |
* which is compatible with all known USB 2.0 era graphics chips and firmware,
* but allows DisplayLink to increment those for any future incompatible chips
*/
-static struct usb_device_id id_table[] = {
+static const struct usb_device_id id_table[] = {
{.idVendor = 0x17e9,
.bInterfaceClass = 0xff,
.bInterfaceSubClass = 0x00,
@@ -1465,7 +1465,7 @@ static ssize_t metrics_reset_store(struct device *fbdev,
return count;
}
-static struct bin_attribute edid_attr = {
+static const struct bin_attribute edid_attr = {
.attr.name = "edid",
.attr.mode = 0666,
.size = EDID_LENGTH,
@@ -1655,7 +1655,6 @@ static int dlfb_usb_probe(struct usb_interface *interface,
error:
if (dev) {
- kref_put(&dev->kref, dlfb_free); /* ref for framebuffer */
kref_put(&dev->kref, dlfb_free); /* last ref from kref_init */
/* dev has been deallocated. Do not dereference */
diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c
index 6f8c0b9fc558..73676eb0244a 100644
--- a/drivers/video/fbdev/uvesafb.c
+++ b/drivers/video/fbdev/uvesafb.c
@@ -1666,7 +1666,7 @@ static struct attribute *uvesafb_dev_attrs[] = {
NULL,
};
-static struct attribute_group uvesafb_dev_attgrp = {
+static const struct attribute_group uvesafb_dev_attgrp = {
.name = NULL,
.attrs = uvesafb_dev_attrs,
};
diff --git a/drivers/video/fbdev/vermilion/vermilion.c b/drivers/video/fbdev/vermilion/vermilion.c
index ce4c4729a5e8..6f8d444eb0e3 100644
--- a/drivers/video/fbdev/vermilion/vermilion.c
+++ b/drivers/video/fbdev/vermilion/vermilion.c
@@ -55,7 +55,7 @@ static struct list_head global_has_mode;
static struct fb_ops vmlfb_ops;
static struct vml_sys *subsys = NULL;
static char *vml_default_mode = "1024x768@60";
-static struct fb_videomode defaultmode = {
+static const struct fb_videomode defaultmode = {
NULL, 60, 1024, 768, 12896, 144, 24, 29, 3, 136, 6,
0, FB_VMODE_NONINTERLACED
};
@@ -1044,7 +1044,7 @@ static struct fb_ops vmlfb_ops = {
.fb_setcolreg = vmlfb_setcolreg
};
-static struct pci_device_id vml_ids[] = {
+static const struct pci_device_id vml_ids[] = {
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, VML_DEVICE_VDC)},
{0}
};
diff --git a/drivers/video/fbdev/via/Makefile b/drivers/video/fbdev/via/Makefile
index 159f26e6adb5..771a0eee7fb4 100644
--- a/drivers/video/fbdev/via/Makefile
+++ b/drivers/video/fbdev/via/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the VIA framebuffer driver (for Linux Kernel 2.6)
#
diff --git a/drivers/video/fbdev/via/via-core.c b/drivers/video/fbdev/via/via-core.c
index 1d28e16888e9..77774d8abf94 100644
--- a/drivers/video/fbdev/via/via-core.c
+++ b/drivers/video/fbdev/via/via-core.c
@@ -724,7 +724,7 @@ static void via_pci_remove(struct pci_dev *pdev)
}
-static struct pci_device_id via_pci_table[] = {
+static const struct pci_device_id via_pci_table[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_CLE266_DID),
.driver_data = UNICHROME_CLE266 },
{ PCI_DEVICE(PCI_VENDOR_ID_VIA, UNICHROME_K400_DID),
diff --git a/drivers/video/fbdev/vt8623fb.c b/drivers/video/fbdev/vt8623fb.c
index dd0f18e42d3e..5cac871db3ee 100644
--- a/drivers/video/fbdev/vt8623fb.c
+++ b/drivers/video/fbdev/vt8623fb.c
@@ -81,7 +81,7 @@ static struct vga_regset vt8623_line_compare_regs[] = {{0x18, 0, 7}, {0x07, 4,
static struct vga_regset vt8623_fetch_count_regs[] = {{0x1C, 0, 7}, {0x1D, 0, 1}, VGA_REGSET_END};
static struct vga_regset vt8623_start_address_regs[] = {{0x0d, 0, 7}, {0x0c, 0, 7}, {0x34, 0, 7}, {0x48, 0, 1}, VGA_REGSET_END};
-static struct svga_timing_regs vt8623_timing_regs = {
+static const struct svga_timing_regs vt8623_timing_regs = {
vt8623_h_total_regs, vt8623_h_display_regs, vt8623_h_blank_start_regs,
vt8623_h_blank_end_regs, vt8623_h_sync_start_regs, vt8623_h_sync_end_regs,
vt8623_v_total_regs, vt8623_v_display_regs, vt8623_v_blank_start_regs,
@@ -888,7 +888,7 @@ fail:
/* List of boards that we are trying to support */
-static struct pci_device_id vt8623_devices[] = {
+static const struct pci_device_id vt8623_devices[] = {
{PCI_DEVICE(PCI_VENDOR_ID_VIA, 0x3122)},
{0, 0, 0, 0, 0, 0, 0}
};
diff --git a/drivers/video/fbdev/wmt_ge_rops.h b/drivers/video/fbdev/wmt_ge_rops.h
index f73ec6377a46..8d9ed8a51a79 100644
--- a/drivers/video/fbdev/wmt_ge_rops.h
+++ b/drivers/video/fbdev/wmt_ge_rops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_FB_WMT_GE_ROPS
extern void wmt_ge_fillrect(struct fb_info *info,
diff --git a/drivers/video/fbdev/xilinxfb.c b/drivers/video/fbdev/xilinxfb.c
index 17dc119c7a98..8628829b470d 100644
--- a/drivers/video/fbdev/xilinxfb.c
+++ b/drivers/video/fbdev/xilinxfb.c
@@ -41,7 +41,6 @@
#define DRIVER_NAME "xilinxfb"
-
/*
* Xilinx calls it "TFT LCD Controller" though it can also be used for
* the VGA port on the Xilinx ML40x board. This is a hardware display
@@ -92,15 +91,16 @@ struct xilinxfb_platform_data {
u32 xvirt, yvirt; /* resolution of memory buffer */
/* Physical address of framebuffer memory; If non-zero, driver
- * will use provided memory address instead of allocating one from
- * the consistent pool. */
+ * will use provided memory address instead of allocating one from
+ * the consistent pool.
+ */
u32 fb_phys;
};
/*
* Default xilinxfb configuration
*/
-static struct xilinxfb_platform_data xilinx_fb_default_pdata = {
+static const struct xilinxfb_platform_data xilinx_fb_default_pdata = {
.xres = 640,
.yres = 480,
.xvirt = 1024,
@@ -110,14 +110,14 @@ static struct xilinxfb_platform_data xilinx_fb_default_pdata = {
/*
* Here are the default fb_fix_screeninfo and fb_var_screeninfo structures
*/
-static struct fb_fix_screeninfo xilinx_fb_fix = {
+static const struct fb_fix_screeninfo xilinx_fb_fix = {
.id = "Xilinx",
.type = FB_TYPE_PACKED_PIXELS,
.visual = FB_VISUAL_TRUECOLOR,
.accel = FB_ACCEL_NONE
};
-static struct fb_var_screeninfo xilinx_fb_var = {
+static const struct fb_var_screeninfo xilinx_fb_var = {
.bits_per_pixel = BITS_PER_PIXEL,
.red = { RED_SHIFT, 8, 0 },
@@ -128,18 +128,18 @@ static struct fb_var_screeninfo xilinx_fb_var = {
.activate = FB_ACTIVATE_NOW
};
-
#define BUS_ACCESS_FLAG 0x1 /* 1 = BUS, 0 = DCR */
#define LITTLE_ENDIAN_ACCESS 0x2 /* LITTLE ENDIAN IO functions */
struct xilinxfb_drvdata {
-
struct fb_info info; /* FB driver info record */
phys_addr_t regs_phys; /* phys. address of the control
- registers */
+ * registers
+ */
void __iomem *regs; /* virt. address of the control
- registers */
+ * registers
+ */
#ifdef CONFIG_PPC_DCR
dcr_host_t dcr_host;
unsigned int dcr_len;
@@ -148,7 +148,7 @@ struct xilinxfb_drvdata {
dma_addr_t fb_phys; /* phys. address of the frame buffer */
int fb_alloced; /* Flag, was the fb memory alloced? */
- u8 flags; /* features of the driver */
+ u8 flags; /* features of the driver */
u32 reg_ctrl_default;
@@ -165,7 +165,7 @@ struct xilinxfb_drvdata {
* which bus its connected and call the appropriate write API.
*/
static void xilinx_fb_out32(struct xilinxfb_drvdata *drvdata, u32 offset,
- u32 val)
+ u32 val)
{
if (drvdata->flags & BUS_ACCESS_FLAG) {
if (drvdata->flags & LITTLE_ENDIAN_ACCESS)
@@ -195,8 +195,8 @@ static u32 xilinx_fb_in32(struct xilinxfb_drvdata *drvdata, u32 offset)
}
static int
-xilinx_fb_setcolreg(unsigned regno, unsigned red, unsigned green, unsigned blue,
- unsigned transp, struct fb_info *fbi)
+xilinx_fb_setcolreg(unsigned int regno, unsigned int red, unsigned int green,
+ unsigned int blue, unsigned int transp, struct fb_info *fbi)
{
u32 *palette = fbi->pseudo_palette;
@@ -205,9 +205,11 @@ xilinx_fb_setcolreg(unsigned regno, unsigned red, unsigned green, unsigned blue,
if (fbi->var.grayscale) {
/* Convert color to grayscale.
- * grayscale = 0.30*R + 0.59*G + 0.11*B */
- red = green = blue =
- (red * 77 + green * 151 + blue * 28 + 127) >> 8;
+ * grayscale = 0.30*R + 0.59*G + 0.11*B
+ */
+ blue = (red * 77 + green * 151 + blue * 28 + 127) >> 8;
+ green = blue;
+ red = green;
}
/* fbi->fix.visual is always FB_VISUAL_TRUECOLOR */
@@ -241,13 +243,11 @@ xilinx_fb_blank(int blank_mode, struct fb_info *fbi)
xilinx_fb_out32(drvdata, REG_CTRL, 0);
default:
break;
-
}
return 0; /* success */
}
-static struct fb_ops xilinxfb_ops =
-{
+static struct fb_ops xilinxfb_ops = {
.owner = THIS_MODULE,
.fb_setcolreg = xilinx_fb_setcolreg,
.fb_blank = xilinx_fb_blank,
@@ -286,7 +286,8 @@ static int xilinxfb_assign(struct platform_device *pdev,
} else {
drvdata->fb_alloced = 1;
drvdata->fb_virt = dma_alloc_coherent(dev, PAGE_ALIGN(fbsize),
- &drvdata->fb_phys, GFP_KERNEL);
+ &drvdata->fb_phys,
+ GFP_KERNEL);
}
if (!drvdata->fb_virt) {
@@ -300,7 +301,7 @@ static int xilinxfb_assign(struct platform_device *pdev,
/* Tell the hardware where the frame buffer is */
xilinx_fb_out32(drvdata, REG_FB_ADDR, drvdata->fb_phys);
rc = xilinx_fb_in32(drvdata, REG_FB_ADDR);
- /* Endianess detection */
+ /* Endianness detection */
if (rc != drvdata->fb_phys) {
drvdata->flags |= LITTLE_ENDIAN_ACCESS;
xilinx_fb_out32(drvdata, REG_FB_ADDR, drvdata->fb_phys);
@@ -310,8 +311,7 @@ static int xilinxfb_assign(struct platform_device *pdev,
drvdata->reg_ctrl_default = REG_CTRL_ENABLE;
if (pdata->rotate_screen)
drvdata->reg_ctrl_default |= REG_CTRL_ROTATE;
- xilinx_fb_out32(drvdata, REG_CTRL,
- drvdata->reg_ctrl_default);
+ xilinx_fb_out32(drvdata, REG_CTRL, drvdata->reg_ctrl_default);
/* Fill struct fb_info */
drvdata->info.device = dev;
@@ -364,7 +364,7 @@ err_regfb:
err_cmap:
if (drvdata->fb_alloced)
dma_free_coherent(dev, PAGE_ALIGN(fbsize), drvdata->fb_virt,
- drvdata->fb_phys);
+ drvdata->fb_phys);
else
iounmap(drvdata->fb_virt);
@@ -435,12 +435,12 @@ static int xilinxfb_of_probe(struct platform_device *pdev)
* Fill the resource structure if its direct BUS interface
* otherwise fill the dcr_host structure.
*/
- if (tft_access) {
+ if (tft_access)
drvdata->flags |= BUS_ACCESS_FLAG;
- }
#ifdef CONFIG_PPC_DCR
else {
int start;
+
start = dcr_resource_start(pdev->dev.of_node, 0);
drvdata->dcr_len = dcr_resource_len(pdev->dev.of_node, 0);
drvdata->dcr_host = dcr_map(pdev->dev.of_node, start, drvdata->dcr_len);
@@ -452,19 +452,19 @@ static int xilinxfb_of_probe(struct platform_device *pdev)
#endif
prop = of_get_property(pdev->dev.of_node, "phys-size", &size);
- if ((prop) && (size >= sizeof(u32)*2)) {
+ if ((prop) && (size >= sizeof(u32) * 2)) {
pdata.screen_width_mm = prop[0];
pdata.screen_height_mm = prop[1];
}
prop = of_get_property(pdev->dev.of_node, "resolution", &size);
- if ((prop) && (size >= sizeof(u32)*2)) {
+ if ((prop) && (size >= sizeof(u32) * 2)) {
pdata.xres = prop[0];
pdata.yres = prop[1];
}
prop = of_get_property(pdev->dev.of_node, "virtual-resolution", &size);
- if ((prop) && (size >= sizeof(u32)*2)) {
+ if ((prop) && (size >= sizeof(u32) * 2)) {
pdata.xvirt = prop[0];
pdata.yvirt = prop[1];
}
@@ -482,7 +482,7 @@ static int xilinxfb_of_remove(struct platform_device *op)
}
/* Match table for of_platform binding */
-static struct of_device_id xilinxfb_of_match[] = {
+static const struct of_device_id xilinxfb_of_match[] = {
{ .compatible = "xlnx,xps-tft-1.00.a", },
{ .compatible = "xlnx,xps-tft-2.00.a", },
{ .compatible = "xlnx,xps-tft-2.01.a", },
diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index 3b437813584c..6194373ee424 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Makefile for the Linux logos
obj-$(CONFIG_LOGO) += logo.o
diff --git a/drivers/video/of_display_timing.c b/drivers/video/of_display_timing.c
index 32b0a7543433..8ce0a99bf17c 100644
--- a/drivers/video/of_display_timing.c
+++ b/drivers/video/of_display_timing.c
@@ -31,8 +31,7 @@ static int parse_timing_property(const struct device_node *np, const char *name,
prop = of_find_property(np, name, &length);
if (!prop) {
- pr_err("%s: could not find property %s\n",
- of_node_full_name(np), name);
+ pr_err("%pOF: could not find property %s\n", np, name);
return -EINVAL;
}
@@ -44,8 +43,7 @@ static int parse_timing_property(const struct device_node *np, const char *name,
} else if (cells == 3) {
ret = of_property_read_u32_array(np, name, &result->min, cells);
} else {
- pr_err("%s: illegal timing specification in %s\n",
- of_node_full_name(np), name);
+ pr_err("%pOF: illegal timing specification in %s\n", np, name);
return -EINVAL;
}
@@ -105,8 +103,7 @@ static int of_parse_display_timing(const struct device_node *np,
dt->flags |= DISPLAY_FLAGS_DOUBLECLK;
if (ret) {
- pr_err("%s: error reading timing properties\n",
- of_node_full_name(np));
+ pr_err("%pOF: error reading timing properties\n", np);
return -EINVAL;
}
@@ -129,8 +126,7 @@ int of_get_display_timing(const struct device_node *np, const char *name,
timing_np = of_get_child_by_name(np, name);
if (!timing_np) {
- pr_err("%s: could not find node '%s'\n",
- of_node_full_name(np), name);
+ pr_err("%pOF: could not find node '%s'\n", np, name);
return -ENOENT;
}
@@ -154,15 +150,13 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
timings_np = of_get_child_by_name(np, "display-timings");
if (!timings_np) {
- pr_err("%s: could not find display-timings node\n",
- of_node_full_name(np));
+ pr_err("%pOF: could not find display-timings node\n", np);
return NULL;
}
disp = kzalloc(sizeof(*disp), GFP_KERNEL);
if (!disp) {
- pr_err("%s: could not allocate struct disp'\n",
- of_node_full_name(np));
+ pr_err("%pOF: could not allocate struct disp'\n", np);
goto dispfail;
}
@@ -172,28 +166,25 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
entry = of_get_next_child(timings_np, NULL);
/* if there is no child, it is useless to go on */
if (!entry) {
- pr_err("%s: no timing specifications given\n",
- of_node_full_name(np));
+ pr_err("%pOF: no timing specifications given\n", np);
goto entryfail;
}
- pr_debug("%s: using %s as default timing\n",
- of_node_full_name(np), entry->name);
+ pr_debug("%pOF: using %s as default timing\n", np, entry->name);
native_mode = entry;
disp->num_timings = of_get_child_count(timings_np);
if (disp->num_timings == 0) {
/* should never happen, as entry was already found above */
- pr_err("%s: no timings specified\n", of_node_full_name(np));
+ pr_err("%pOF: no timings specified\n", np);
goto entryfail;
}
disp->timings = kzalloc(sizeof(struct display_timing *) *
disp->num_timings, GFP_KERNEL);
if (!disp->timings) {
- pr_err("%s: could not allocate timings array\n",
- of_node_full_name(np));
+ pr_err("%pOF: could not allocate timings array\n", np);
goto entryfail;
}
@@ -206,8 +197,8 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
dt = kzalloc(sizeof(*dt), GFP_KERNEL);
if (!dt) {
- pr_err("%s: could not allocate display_timing struct\n",
- of_node_full_name(np));
+ pr_err("%pOF: could not allocate display_timing struct\n",
+ np);
goto timingfail;
}
@@ -217,8 +208,8 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
* to not encourage wrong devicetrees, fail in case of
* an error
*/
- pr_err("%s: error in timing %d\n",
- of_node_full_name(np), disp->num_timings + 1);
+ pr_err("%pOF: error in timing %d\n",
+ np, disp->num_timings + 1);
kfree(dt);
goto timingfail;
}
@@ -236,8 +227,8 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
*/
of_node_put(native_mode);
- pr_debug("%s: got %d timings. Using timing #%d as default\n",
- of_node_full_name(np), disp->num_timings,
+ pr_debug("%pOF: got %d timings. Using timing #%d as default\n",
+ np, disp->num_timings,
disp->native_mode + 1);
return disp;
diff --git a/drivers/video/of_videomode.c b/drivers/video/of_videomode.c
index b5102aa6090d..9b5f9de88fec 100644
--- a/drivers/video/of_videomode.c
+++ b/drivers/video/of_videomode.c
@@ -36,7 +36,7 @@ int of_get_videomode(struct device_node *np, struct videomode *vm,
disp = of_get_display_timings(np);
if (!disp) {
- pr_err("%s: no timings specified\n", of_node_full_name(np));
+ pr_err("%pOF: no timings specified\n", np);
return -EINVAL;
}
diff --git a/drivers/virtio/Makefile b/drivers/virtio/Makefile
index 41e30e3dc842..3a2b5c5dcf46 100644
--- a/drivers/virtio/Makefile
+++ b/drivers/virtio/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VIRTIO) += virtio.o virtio_ring.o
obj-$(CONFIG_VIRTIO_MMIO) += virtio_mmio.o
obj-$(CONFIG_VIRTIO_PCI) += virtio_pci.o
diff --git a/drivers/vme/vme_bridge.h b/drivers/vme/vme_bridge.h
index 2662e916b96a..42ecf961004e 100644
--- a/drivers/vme/vme_bridge.h
+++ b/drivers/vme/vme_bridge.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VME_BRIDGE_H_
#define _VME_BRIDGE_H_
diff --git a/drivers/w1/masters/Makefile b/drivers/w1/masters/Makefile
index c5a3e96fcbab..18954cae4256 100644
--- a/drivers/w1/masters/Makefile
+++ b/drivers/w1/masters/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for 1-wire bus master drivers.
#
diff --git a/drivers/w1/slaves/Makefile b/drivers/w1/slaves/Makefile
index 36b22fb2d3a1..79c611ce5f18 100644
--- a/drivers/w1/slaves/Makefile
+++ b/drivers/w1/slaves/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Dallas's 1-wire slaves.
#
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 56adf9fa67d0..715a21078e0c 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the WatchDog device drivers.
#
diff --git a/drivers/watchdog/asm9260_wdt.c b/drivers/watchdog/asm9260_wdt.c
index 53da001f0838..7dd0da644a7f 100644
--- a/drivers/watchdog/asm9260_wdt.c
+++ b/drivers/watchdog/asm9260_wdt.c
@@ -82,7 +82,7 @@ static unsigned int asm9260_wdt_gettimeleft(struct watchdog_device *wdd)
counter = ioread32(priv->iobase + HW_WDTV);
- return DIV_ROUND_CLOSEST(counter, priv->wdt_freq);
+ return counter / priv->wdt_freq;
}
static int asm9260_wdt_updatetimeout(struct watchdog_device *wdd)
@@ -296,7 +296,7 @@ static int asm9260_wdt_probe(struct platform_device *pdev)
if (ret)
return ret;
- priv->rst = devm_reset_control_get(&pdev->dev, "wdt_rst");
+ priv->rst = devm_reset_control_get_exclusive(&pdev->dev, "wdt_rst");
if (IS_ERR(priv->rst))
return PTR_ERR(priv->rst);
diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c
index 1c652582de40..79cc766cd30f 100644
--- a/drivers/watchdog/aspeed_wdt.c
+++ b/drivers/watchdog/aspeed_wdt.c
@@ -23,9 +23,21 @@ struct aspeed_wdt {
u32 ctrl;
};
+struct aspeed_wdt_config {
+ u32 ext_pulse_width_mask;
+};
+
+static const struct aspeed_wdt_config ast2400_config = {
+ .ext_pulse_width_mask = 0xff,
+};
+
+static const struct aspeed_wdt_config ast2500_config = {
+ .ext_pulse_width_mask = 0xfffff,
+};
+
static const struct of_device_id aspeed_wdt_of_table[] = {
- { .compatible = "aspeed,ast2400-wdt" },
- { .compatible = "aspeed,ast2500-wdt" },
+ { .compatible = "aspeed,ast2400-wdt", .data = &ast2400_config },
+ { .compatible = "aspeed,ast2500-wdt", .data = &ast2500_config },
{ },
};
MODULE_DEVICE_TABLE(of, aspeed_wdt_of_table);
@@ -36,12 +48,45 @@ MODULE_DEVICE_TABLE(of, aspeed_wdt_of_table);
#define WDT_CTRL 0x0C
#define WDT_CTRL_RESET_MODE_SOC (0x00 << 5)
#define WDT_CTRL_RESET_MODE_FULL_CHIP (0x01 << 5)
+#define WDT_CTRL_RESET_MODE_ARM_CPU (0x10 << 5)
#define WDT_CTRL_1MHZ_CLK BIT(4)
#define WDT_CTRL_WDT_EXT BIT(3)
#define WDT_CTRL_WDT_INTR BIT(2)
#define WDT_CTRL_RESET_SYSTEM BIT(1)
#define WDT_CTRL_ENABLE BIT(0)
+/*
+ * WDT_RESET_WIDTH controls the characteristics of the external pulse (if
+ * enabled), specifically:
+ *
+ * * Pulse duration
+ * * Drive mode: push-pull vs open-drain
+ * * Polarity: Active high or active low
+ *
+ * Pulse duration configuration is available on both the AST2400 and AST2500,
+ * though the field changes between SoCs:
+ *
+ * AST2400: Bits 7:0
+ * AST2500: Bits 19:0
+ *
+ * This difference is captured in struct aspeed_wdt_config.
+ *
+ * The AST2500 exposes the drive mode and polarity options, but not in a
+ * regular fashion. For read purposes, bit 31 represents active high or low,
+ * and bit 30 represents push-pull or open-drain. With respect to write, magic
+ * values need to be written to the top byte to change the state of the drive
+ * mode and polarity bits. Any other value written to the top byte has no
+ * effect on the state of the drive mode or polarity bits. However, the pulse
+ * width value must be preserved (as desired) if written.
+ */
+#define WDT_RESET_WIDTH 0x18
+#define WDT_RESET_WIDTH_ACTIVE_HIGH BIT(31)
+#define WDT_ACTIVE_HIGH_MAGIC (0xA5 << 24)
+#define WDT_ACTIVE_LOW_MAGIC (0x5A << 24)
+#define WDT_RESET_WIDTH_PUSH_PULL BIT(30)
+#define WDT_PUSH_PULL_MAGIC (0xA8 << 24)
+#define WDT_OPEN_DRAIN_MAGIC (0x8A << 24)
+
#define WDT_RESTART_MAGIC 0x4755
/* 32 bits at 1MHz, in milliseconds */
@@ -138,8 +183,13 @@ static const struct watchdog_info aspeed_wdt_info = {
static int aspeed_wdt_probe(struct platform_device *pdev)
{
+ const struct aspeed_wdt_config *config;
+ const struct of_device_id *ofdid;
struct aspeed_wdt *wdt;
struct resource *res;
+ struct device_node *np;
+ const char *reset_type;
+ u32 duration;
int ret;
wdt = devm_kzalloc(&pdev->dev, sizeof(*wdt), GFP_KERNEL);
@@ -164,20 +214,88 @@ static int aspeed_wdt_probe(struct platform_device *pdev)
wdt->wdd.timeout = WDT_DEFAULT_TIMEOUT;
watchdog_init_timeout(&wdt->wdd, 0, &pdev->dev);
+ np = pdev->dev.of_node;
+
+ ofdid = of_match_node(aspeed_wdt_of_table, np);
+ if (!ofdid)
+ return -EINVAL;
+ config = ofdid->data;
+
+ wdt->ctrl = WDT_CTRL_1MHZ_CLK;
+
/*
* Control reset on a per-device basis to ensure the
- * host is not affected by a BMC reboot, so only reset
- * the SOC and not the full chip
+ * host is not affected by a BMC reboot
*/
- wdt->ctrl = WDT_CTRL_RESET_MODE_SOC |
- WDT_CTRL_1MHZ_CLK |
- WDT_CTRL_RESET_SYSTEM;
+ ret = of_property_read_string(np, "aspeed,reset-type", &reset_type);
+ if (ret) {
+ wdt->ctrl |= WDT_CTRL_RESET_MODE_SOC | WDT_CTRL_RESET_SYSTEM;
+ } else {
+ if (!strcmp(reset_type, "cpu"))
+ wdt->ctrl |= WDT_CTRL_RESET_MODE_ARM_CPU;
+ else if (!strcmp(reset_type, "soc"))
+ wdt->ctrl |= WDT_CTRL_RESET_MODE_SOC;
+ else if (!strcmp(reset_type, "system"))
+ wdt->ctrl |= WDT_CTRL_RESET_SYSTEM;
+ else if (strcmp(reset_type, "none"))
+ return -EINVAL;
+ }
+ if (of_property_read_bool(np, "aspeed,external-signal"))
+ wdt->ctrl |= WDT_CTRL_WDT_EXT;
+
+ writel(wdt->ctrl, wdt->base + WDT_CTRL);
if (readl(wdt->base + WDT_CTRL) & WDT_CTRL_ENABLE) {
aspeed_wdt_start(&wdt->wdd);
set_bit(WDOG_HW_RUNNING, &wdt->wdd.status);
}
+ if (of_device_is_compatible(np, "aspeed,ast2500-wdt")) {
+ u32 reg = readl(wdt->base + WDT_RESET_WIDTH);
+
+ reg &= config->ext_pulse_width_mask;
+ if (of_property_read_bool(np, "aspeed,ext-push-pull"))
+ reg |= WDT_PUSH_PULL_MAGIC;
+ else
+ reg |= WDT_OPEN_DRAIN_MAGIC;
+
+ writel(reg, wdt->base + WDT_RESET_WIDTH);
+
+ reg &= config->ext_pulse_width_mask;
+ if (of_property_read_bool(np, "aspeed,ext-active-high"))
+ reg |= WDT_ACTIVE_HIGH_MAGIC;
+ else
+ reg |= WDT_ACTIVE_LOW_MAGIC;
+
+ writel(reg, wdt->base + WDT_RESET_WIDTH);
+ }
+
+ if (!of_property_read_u32(np, "aspeed,ext-pulse-duration", &duration)) {
+ u32 max_duration = config->ext_pulse_width_mask + 1;
+
+ if (duration == 0 || duration > max_duration) {
+ dev_err(&pdev->dev, "Invalid pulse duration: %uus\n",
+ duration);
+ duration = max(1U, min(max_duration, duration));
+ dev_info(&pdev->dev, "Pulse duration set to %uus\n",
+ duration);
+ }
+
+ /*
+ * The watchdog is always configured with a 1MHz source, so
+ * there is no need to scale the microsecond value. However we
+ * need to offset it - from the datasheet:
+ *
+ * "This register decides the asserting duration of wdt_ext and
+ * wdt_rstarm signal. The default value is 0xFF. It means the
+ * default asserting duration of wdt_ext and wdt_rstarm is
+ * 256us."
+ *
+ * This implies a value of 0 gives a 1us pulse.
+ */
+ writel(duration - 1, wdt->base + WDT_RESET_WIDTH);
+ }
+
ret = devm_watchdog_register_device(&pdev->dev, &wdt->wdd);
if (ret) {
dev_err(&pdev->dev, "failed to register\n");
diff --git a/drivers/watchdog/bcm7038_wdt.c b/drivers/watchdog/bcm7038_wdt.c
index c1b8e534fb55..f88f546e8050 100644
--- a/drivers/watchdog/bcm7038_wdt.c
+++ b/drivers/watchdog/bcm7038_wdt.c
@@ -136,7 +136,9 @@ static int bcm7038_wdt_probe(struct platform_device *pdev)
wdt->clk = devm_clk_get(dev, NULL);
/* If unable to get clock, use default frequency */
if (!IS_ERR(wdt->clk)) {
- clk_prepare_enable(wdt->clk);
+ err = clk_prepare_enable(wdt->clk);
+ if (err)
+ return err;
wdt->rate = clk_get_rate(wdt->clk);
/* Prevent divide-by-zero exception */
if (!wdt->rate)
diff --git a/drivers/watchdog/cadence_wdt.c b/drivers/watchdog/cadence_wdt.c
index 05c000081e9d..064cf7b6c1c5 100644
--- a/drivers/watchdog/cadence_wdt.c
+++ b/drivers/watchdog/cadence_wdt.c
@@ -52,12 +52,12 @@
static int wdt_timeout;
static int nowayout = WATCHDOG_NOWAYOUT;
-module_param(wdt_timeout, int, 0);
+module_param(wdt_timeout, int, 0644);
MODULE_PARM_DESC(wdt_timeout,
"Watchdog time in seconds. (default="
__MODULE_STRING(CDNS_WDT_DEFAULT_TIMEOUT) ")");
-module_param(nowayout, int, 0);
+module_param(nowayout, int, 0644);
MODULE_PARM_DESC(nowayout,
"Watchdog cannot be stopped once started (default="
__MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
@@ -368,7 +368,7 @@ static int cdns_wdt_probe(struct platform_device *pdev)
}
platform_set_drvdata(pdev, wdt);
- dev_dbg(&pdev->dev, "Xilinx Watchdog Timer at %p with timeout %ds%s\n",
+ dev_info(&pdev->dev, "Xilinx Watchdog Timer at %p with timeout %ds%s\n",
wdt->regs, cdns_wdt_device->timeout,
nowayout ? ", nowayout" : "");
diff --git a/drivers/watchdog/coh901327_wdt.c b/drivers/watchdog/coh901327_wdt.c
index 38dd60f0cfcc..4410337f4f7f 100644
--- a/drivers/watchdog/coh901327_wdt.c
+++ b/drivers/watchdog/coh901327_wdt.c
@@ -218,7 +218,7 @@ static const struct watchdog_info coh901327_ident = {
.identity = DRV_NAME,
};
-static struct watchdog_ops coh901327_ops = {
+static const struct watchdog_ops coh901327_ops = {
.owner = THIS_MODULE,
.start = coh901327_start,
.stop = coh901327_stop,
diff --git a/drivers/watchdog/da9063_wdt.c b/drivers/watchdog/da9063_wdt.c
index 4691c5509129..2a20fc163ed0 100644
--- a/drivers/watchdog/da9063_wdt.c
+++ b/drivers/watchdog/da9063_wdt.c
@@ -36,11 +36,6 @@ static const unsigned int wdt_timeout[] = { 0, 2, 4, 8, 16, 32, 65, 131 };
#define DA9063_WDG_TIMEOUT wdt_timeout[3]
#define DA9063_RESET_PROTECTION_MS 256
-struct da9063_watchdog {
- struct da9063 *da9063;
- struct watchdog_device wdtdev;
-};
-
static unsigned int da9063_wdt_timeout_to_sel(unsigned int secs)
{
unsigned int i;
@@ -61,14 +56,14 @@ static int _da9063_wdt_set_timeout(struct da9063 *da9063, unsigned int regval)
static int da9063_wdt_start(struct watchdog_device *wdd)
{
- struct da9063_watchdog *wdt = watchdog_get_drvdata(wdd);
+ struct da9063 *da9063 = watchdog_get_drvdata(wdd);
unsigned int selector;
int ret;
- selector = da9063_wdt_timeout_to_sel(wdt->wdtdev.timeout);
- ret = _da9063_wdt_set_timeout(wdt->da9063, selector);
+ selector = da9063_wdt_timeout_to_sel(wdd->timeout);
+ ret = _da9063_wdt_set_timeout(da9063, selector);
if (ret)
- dev_err(wdt->da9063->dev, "Watchdog failed to start (err = %d)\n",
+ dev_err(da9063->dev, "Watchdog failed to start (err = %d)\n",
ret);
return ret;
@@ -76,13 +71,13 @@ static int da9063_wdt_start(struct watchdog_device *wdd)
static int da9063_wdt_stop(struct watchdog_device *wdd)
{
- struct da9063_watchdog *wdt = watchdog_get_drvdata(wdd);
+ struct da9063 *da9063 = watchdog_get_drvdata(wdd);
int ret;
- ret = regmap_update_bits(wdt->da9063->regmap, DA9063_REG_CONTROL_D,
+ ret = regmap_update_bits(da9063->regmap, DA9063_REG_CONTROL_D,
DA9063_TWDSCALE_MASK, DA9063_TWDSCALE_DISABLE);
if (ret)
- dev_alert(wdt->da9063->dev, "Watchdog failed to stop (err = %d)\n",
+ dev_alert(da9063->dev, "Watchdog failed to stop (err = %d)\n",
ret);
return ret;
@@ -90,13 +85,13 @@ static int da9063_wdt_stop(struct watchdog_device *wdd)
static int da9063_wdt_ping(struct watchdog_device *wdd)
{
- struct da9063_watchdog *wdt = watchdog_get_drvdata(wdd);
+ struct da9063 *da9063 = watchdog_get_drvdata(wdd);
int ret;
- ret = regmap_write(wdt->da9063->regmap, DA9063_REG_CONTROL_F,
+ ret = regmap_write(da9063->regmap, DA9063_REG_CONTROL_F,
DA9063_WATCHDOG);
if (ret)
- dev_alert(wdt->da9063->dev, "Failed to ping the watchdog (err = %d)\n",
+ dev_alert(da9063->dev, "Failed to ping the watchdog (err = %d)\n",
ret);
return ret;
@@ -105,14 +100,14 @@ static int da9063_wdt_ping(struct watchdog_device *wdd)
static int da9063_wdt_set_timeout(struct watchdog_device *wdd,
unsigned int timeout)
{
- struct da9063_watchdog *wdt = watchdog_get_drvdata(wdd);
+ struct da9063 *da9063 = watchdog_get_drvdata(wdd);
unsigned int selector;
int ret;
selector = da9063_wdt_timeout_to_sel(timeout);
- ret = _da9063_wdt_set_timeout(wdt->da9063, selector);
+ ret = _da9063_wdt_set_timeout(da9063, selector);
if (ret)
- dev_err(wdt->da9063->dev, "Failed to set watchdog timeout (err = %d)\n",
+ dev_err(da9063->dev, "Failed to set watchdog timeout (err = %d)\n",
ret);
else
wdd->timeout = wdt_timeout[selector];
@@ -123,13 +118,13 @@ static int da9063_wdt_set_timeout(struct watchdog_device *wdd,
static int da9063_wdt_restart(struct watchdog_device *wdd, unsigned long action,
void *data)
{
- struct da9063_watchdog *wdt = watchdog_get_drvdata(wdd);
+ struct da9063 *da9063 = watchdog_get_drvdata(wdd);
int ret;
- ret = regmap_write(wdt->da9063->regmap, DA9063_REG_CONTROL_F,
+ ret = regmap_write(da9063->regmap, DA9063_REG_CONTROL_F,
DA9063_SHUTDOWN);
if (ret)
- dev_alert(wdt->da9063->dev, "Failed to shutdown (err = %d)\n",
+ dev_alert(da9063->dev, "Failed to shutdown (err = %d)\n",
ret);
return ret;
@@ -152,7 +147,7 @@ static const struct watchdog_ops da9063_watchdog_ops = {
static int da9063_wdt_probe(struct platform_device *pdev)
{
struct da9063 *da9063;
- struct da9063_watchdog *wdt;
+ struct watchdog_device *wdd;
if (!pdev->dev.parent)
return -EINVAL;
@@ -161,27 +156,25 @@ static int da9063_wdt_probe(struct platform_device *pdev)
if (!da9063)
return -EINVAL;
- wdt = devm_kzalloc(&pdev->dev, sizeof(*wdt), GFP_KERNEL);
- if (!wdt)
+ wdd = devm_kzalloc(&pdev->dev, sizeof(*wdd), GFP_KERNEL);
+ if (!wdd)
return -ENOMEM;
- wdt->da9063 = da9063;
-
- wdt->wdtdev.info = &da9063_watchdog_info;
- wdt->wdtdev.ops = &da9063_watchdog_ops;
- wdt->wdtdev.min_timeout = DA9063_WDT_MIN_TIMEOUT;
- wdt->wdtdev.max_timeout = DA9063_WDT_MAX_TIMEOUT;
- wdt->wdtdev.min_hw_heartbeat_ms = DA9063_RESET_PROTECTION_MS;
- wdt->wdtdev.timeout = DA9063_WDG_TIMEOUT;
- wdt->wdtdev.parent = &pdev->dev;
+ wdd->info = &da9063_watchdog_info;
+ wdd->ops = &da9063_watchdog_ops;
+ wdd->min_timeout = DA9063_WDT_MIN_TIMEOUT;
+ wdd->max_timeout = DA9063_WDT_MAX_TIMEOUT;
+ wdd->min_hw_heartbeat_ms = DA9063_RESET_PROTECTION_MS;
+ wdd->timeout = DA9063_WDG_TIMEOUT;
+ wdd->parent = &pdev->dev;
- wdt->wdtdev.status = WATCHDOG_NOWAYOUT_INIT_STATUS;
+ wdd->status = WATCHDOG_NOWAYOUT_INIT_STATUS;
- watchdog_set_restart_priority(&wdt->wdtdev, 128);
+ watchdog_set_restart_priority(wdd, 128);
- watchdog_set_drvdata(&wdt->wdtdev, wdt);
+ watchdog_set_drvdata(wdd, da9063);
- return devm_watchdog_register_device(&pdev->dev, &wdt->wdtdev);
+ return devm_watchdog_register_device(&pdev->dev, wdd);
}
static struct platform_driver da9063_wdt_driver = {
diff --git a/drivers/watchdog/diag288_wdt.c b/drivers/watchdog/diag288_wdt.c
index 6f591084bb7a..806a04a676b7 100644
--- a/drivers/watchdog/diag288_wdt.c
+++ b/drivers/watchdog/diag288_wdt.c
@@ -213,7 +213,7 @@ static const struct watchdog_ops wdt_ops = {
.set_timeout = wdt_set_timeout,
};
-static struct watchdog_info wdt_info = {
+static const struct watchdog_info wdt_info = {
.options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE,
.firmware_version = 0,
.identity = "z Watchdog",
diff --git a/drivers/watchdog/iTCO_vendor.h b/drivers/watchdog/iTCO_vendor.h
index 3c57b45537a2..7b82a7c6e7c3 100644
--- a/drivers/watchdog/iTCO_vendor.h
+++ b/drivers/watchdog/iTCO_vendor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* iTCO Vendor Specific Support hooks */
#ifdef CONFIG_ITCO_VENDOR_SUPPORT
extern void iTCO_vendor_pre_start(struct resource *, unsigned int);
diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c
index c4f65873bfa4..347f0389b089 100644
--- a/drivers/watchdog/iTCO_wdt.c
+++ b/drivers/watchdog/iTCO_wdt.c
@@ -306,15 +306,16 @@ static int iTCO_wdt_ping(struct watchdog_device *wd_dev)
iTCO_vendor_pre_keepalive(p->smi_res, wd_dev->timeout);
- /* Reset the timeout status bit so that the timer
- * needs to count down twice again before rebooting */
- outw(0x0008, TCO1_STS(p)); /* write 1 to clear bit */
-
/* Reload the timer by writing to the TCO Timer Counter register */
- if (p->iTCO_version >= 2)
+ if (p->iTCO_version >= 2) {
outw(0x01, TCO_RLD(p));
- else if (p->iTCO_version == 1)
+ } else if (p->iTCO_version == 1) {
+ /* Reset the timeout status bit so that the timer
+ * needs to count down twice again before rebooting */
+ outw(0x0008, TCO1_STS(p)); /* write 1 to clear bit */
+
outb(0x01, TCO_RLD(p));
+ }
spin_unlock(&p->io_lock);
return 0;
@@ -327,8 +328,11 @@ static int iTCO_wdt_set_timeout(struct watchdog_device *wd_dev, unsigned int t)
unsigned char val8;
unsigned int tmrval;
- /* The timer counts down twice before rebooting */
- tmrval = seconds_to_ticks(p, t) / 2;
+ tmrval = seconds_to_ticks(p, t);
+
+ /* For TCO v1 the timer counts down twice before rebooting */
+ if (p->iTCO_version == 1)
+ tmrval /= 2;
/* from the specs: */
/* "Values of 0h-3h are ignored and should not be attempted" */
@@ -381,8 +385,6 @@ static unsigned int iTCO_wdt_get_timeleft(struct watchdog_device *wd_dev)
spin_lock(&p->io_lock);
val16 = inw(TCO_RLD(p));
val16 &= 0x3ff;
- if (!(inw(TCO1_STS(p)) & 0x0008))
- val16 += (inw(TCOv2_TMR(p)) & 0x3ff);
spin_unlock(&p->io_lock);
time_left = ticks_to_seconds(p, val16);
diff --git a/drivers/watchdog/it87_wdt.c b/drivers/watchdog/it87_wdt.c
index dd1e7eaef50f..e96faea24925 100644
--- a/drivers/watchdog/it87_wdt.c
+++ b/drivers/watchdog/it87_wdt.c
@@ -253,7 +253,7 @@ static const struct watchdog_info ident = {
.identity = WATCHDOG_NAME,
};
-static struct watchdog_ops wdt_ops = {
+static const struct watchdog_ops wdt_ops = {
.owner = THIS_MODULE,
.start = wdt_start,
.stop = wdt_stop,
diff --git a/drivers/watchdog/lantiq_wdt.c b/drivers/watchdog/lantiq_wdt.c
index e0823677d8c1..7f43cefa0eae 100644
--- a/drivers/watchdog/lantiq_wdt.c
+++ b/drivers/watchdog/lantiq_wdt.c
@@ -4,6 +4,7 @@
* by the Free Software Foundation.
*
* Copyright (C) 2010 John Crispin <john@phrozen.org>
+ * Copyright (C) 2017 Hauke Mehrtens <hauke@hauke-m.de>
* Based on EP93xx wdt driver
*/
@@ -17,9 +18,20 @@
#include <linux/uaccess.h>
#include <linux/clk.h>
#include <linux/io.h>
+#include <linux/regmap.h>
+#include <linux/mfd/syscon.h>
#include <lantiq_soc.h>
+#define LTQ_XRX_RCU_RST_STAT 0x0014
+#define LTQ_XRX_RCU_RST_STAT_WDT BIT(31)
+
+/* CPU0 Reset Source Register */
+#define LTQ_FALCON_SYS1_CPU0RS 0x0060
+/* reset cause mask */
+#define LTQ_FALCON_SYS1_CPU0RS_MASK 0x0007
+#define LTQ_FALCON_SYS1_CPU0RS_WDT 0x02
+
/*
* Section 3.4 of the datasheet
* The password sequence protects the WDT control register from unintended
@@ -186,16 +198,70 @@ static struct miscdevice ltq_wdt_miscdev = {
.fops = &ltq_wdt_fops,
};
+typedef int (*ltq_wdt_bootstatus_set)(struct platform_device *pdev);
+
+static int ltq_wdt_bootstatus_xrx(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct regmap *rcu_regmap;
+ u32 val;
+ int err;
+
+ rcu_regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "regmap");
+ if (IS_ERR(rcu_regmap))
+ return PTR_ERR(rcu_regmap);
+
+ err = regmap_read(rcu_regmap, LTQ_XRX_RCU_RST_STAT, &val);
+ if (err)
+ return err;
+
+ if (val & LTQ_XRX_RCU_RST_STAT_WDT)
+ ltq_wdt_bootstatus = WDIOF_CARDRESET;
+
+ return 0;
+}
+
+static int ltq_wdt_bootstatus_falcon(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct regmap *rcu_regmap;
+ u32 val;
+ int err;
+
+ rcu_regmap = syscon_regmap_lookup_by_phandle(dev->of_node,
+ "lantiq,rcu");
+ if (IS_ERR(rcu_regmap))
+ return PTR_ERR(rcu_regmap);
+
+ err = regmap_read(rcu_regmap, LTQ_FALCON_SYS1_CPU0RS, &val);
+ if (err)
+ return err;
+
+ if ((val & LTQ_FALCON_SYS1_CPU0RS_MASK) == LTQ_FALCON_SYS1_CPU0RS_WDT)
+ ltq_wdt_bootstatus = WDIOF_CARDRESET;
+
+ return 0;
+}
+
static int
ltq_wdt_probe(struct platform_device *pdev)
{
struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
struct clk *clk;
+ ltq_wdt_bootstatus_set ltq_wdt_bootstatus_set;
+ int ret;
ltq_wdt_membase = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(ltq_wdt_membase))
return PTR_ERR(ltq_wdt_membase);
+ ltq_wdt_bootstatus_set = of_device_get_match_data(&pdev->dev);
+ if (ltq_wdt_bootstatus_set) {
+ ret = ltq_wdt_bootstatus_set(pdev);
+ if (ret)
+ return ret;
+ }
+
/* we do not need to enable the clock as it is always running */
clk = clk_get_io();
if (IS_ERR(clk)) {
@@ -205,10 +271,6 @@ ltq_wdt_probe(struct platform_device *pdev)
ltq_io_region_clk_rate = clk_get_rate(clk);
clk_put(clk);
- /* find out if the watchdog caused the last reboot */
- if (ltq_reset_cause() == LTQ_RST_CAUSE_WDTRST)
- ltq_wdt_bootstatus = WDIOF_CARDRESET;
-
dev_info(&pdev->dev, "Init done\n");
return misc_register(&ltq_wdt_miscdev);
}
@@ -222,7 +284,9 @@ ltq_wdt_remove(struct platform_device *pdev)
}
static const struct of_device_id ltq_wdt_match[] = {
- { .compatible = "lantiq,wdt" },
+ { .compatible = "lantiq,wdt", .data = NULL},
+ { .compatible = "lantiq,xrx100-wdt", .data = ltq_wdt_bootstatus_xrx },
+ { .compatible = "lantiq,falcon-wdt", .data = ltq_wdt_bootstatus_falcon },
{},
};
MODULE_DEVICE_TABLE(of, ltq_wdt_match);
diff --git a/drivers/watchdog/max77620_wdt.c b/drivers/watchdog/max77620_wdt.c
index 68c41fa2be27..2c9f53eaff4f 100644
--- a/drivers/watchdog/max77620_wdt.c
+++ b/drivers/watchdog/max77620_wdt.c
@@ -201,7 +201,7 @@ static int max77620_wdt_remove(struct platform_device *pdev)
return 0;
}
-static struct platform_device_id max77620_wdt_devtype[] = {
+static const struct platform_device_id max77620_wdt_devtype[] = {
{ .name = "max77620-watchdog", },
{ },
};
diff --git a/drivers/watchdog/mei_wdt.c b/drivers/watchdog/mei_wdt.c
index b29c6fde7473..ea60b29494fb 100644
--- a/drivers/watchdog/mei_wdt.c
+++ b/drivers/watchdog/mei_wdt.c
@@ -670,7 +670,7 @@ static int mei_wdt_remove(struct mei_cl_device *cldev)
#define MEI_UUID_WD UUID_LE(0x05B79A6F, 0x4628, 0x4D7F, \
0x89, 0x9D, 0xA9, 0x15, 0x14, 0xCB, 0x32, 0xAB)
-static struct mei_cl_device_id mei_wdt_tbl[] = {
+static const struct mei_cl_device_id mei_wdt_tbl[] = {
{ .uuid = MEI_UUID_WD, .version = MEI_CL_VERSION_ANY },
/* required last entry */
{ }
diff --git a/drivers/watchdog/meson_wdt.c b/drivers/watchdog/meson_wdt.c
index 491b9bf13d84..304274c67735 100644
--- a/drivers/watchdog/meson_wdt.c
+++ b/drivers/watchdog/meson_wdt.c
@@ -155,7 +155,9 @@ static const struct watchdog_ops meson_wdt_ops = {
static const struct of_device_id meson_wdt_dt_ids[] = {
{ .compatible = "amlogic,meson6-wdt", .data = &meson6_wdt_data },
+ { .compatible = "amlogic,meson8-wdt", .data = &meson6_wdt_data },
{ .compatible = "amlogic,meson8b-wdt", .data = &meson8b_wdt_data },
+ { .compatible = "amlogic,meson8m2-wdt", .data = &meson8b_wdt_data },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, meson_wdt_dt_ids);
diff --git a/drivers/watchdog/mt7621_wdt.c b/drivers/watchdog/mt7621_wdt.c
index 48a06067075d..db38f8017218 100644
--- a/drivers/watchdog/mt7621_wdt.c
+++ b/drivers/watchdog/mt7621_wdt.c
@@ -105,7 +105,7 @@ static int mt7621_wdt_bootcause(void)
return 0;
}
-static struct watchdog_info mt7621_wdt_info = {
+static const struct watchdog_info mt7621_wdt_info = {
.identity = "Mediatek Watchdog",
.options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE,
};
@@ -135,7 +135,7 @@ static int mt7621_wdt_probe(struct platform_device *pdev)
if (IS_ERR(mt7621_wdt_base))
return PTR_ERR(mt7621_wdt_base);
- mt7621_wdt_reset = devm_reset_control_get(&pdev->dev, NULL);
+ mt7621_wdt_reset = devm_reset_control_get_exclusive(&pdev->dev, NULL);
if (!IS_ERR(mt7621_wdt_reset))
reset_control_deassert(mt7621_wdt_reset);
diff --git a/drivers/watchdog/octeon-wdt-main.c b/drivers/watchdog/octeon-wdt-main.c
index b5cdceb36cff..0ec419a3f7ed 100644
--- a/drivers/watchdog/octeon-wdt-main.c
+++ b/drivers/watchdog/octeon-wdt-main.c
@@ -1,7 +1,7 @@
/*
* Octeon Watchdog driver
*
- * Copyright (C) 2007, 2008, 2009, 2010 Cavium Networks
+ * Copyright (C) 2007-2017 Cavium, Inc.
*
* Converted to use WATCHDOG_CORE by Aaro Koskinen <aaro.koskinen@iki.fi>.
*
@@ -59,20 +59,23 @@
#include <linux/interrupt.h>
#include <linux/watchdog.h>
#include <linux/cpumask.h>
-#include <linux/bitops.h>
-#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/string.h>
#include <linux/delay.h>
#include <linux/cpu.h>
-#include <linux/smp.h>
-#include <linux/fs.h>
#include <linux/irq.h>
#include <asm/mipsregs.h>
#include <asm/uasm.h>
#include <asm/octeon/octeon.h>
+#include <asm/octeon/cvmx-boot-vector.h>
+#include <asm/octeon/cvmx-ciu2-defs.h>
+#include <asm/octeon/cvmx-rst-defs.h>
+
+/* Watchdog interrupt major block number (8 MSBs of intsn) */
+#define WD_BLOCK_NUMBER 0x01
+
+static int divisor;
/* The count needed to achieve timeout_sec. */
static unsigned int timeout_cnt;
@@ -84,7 +87,7 @@ static unsigned int max_timeout_sec;
static unsigned int timeout_sec;
/* Set to non-zero when userspace countdown mode active */
-static int do_coundown;
+static bool do_countdown;
static unsigned int countdown_reset;
static unsigned int per_cpu_countdown[NR_CPUS];
@@ -92,152 +95,38 @@ static cpumask_t irq_enabled_cpus;
#define WD_TIMO 60 /* Default heartbeat = 60 seconds */
+#define CVMX_GSERX_SCRATCH(offset) (CVMX_ADD_IO_SEG(0x0001180090000020ull) + ((offset) & 15) * 0x1000000ull)
+
static int heartbeat = WD_TIMO;
-module_param(heartbeat, int, S_IRUGO);
+module_param(heartbeat, int, 0444);
MODULE_PARM_DESC(heartbeat,
"Watchdog heartbeat in seconds. (0 < heartbeat, default="
__MODULE_STRING(WD_TIMO) ")");
static bool nowayout = WATCHDOG_NOWAYOUT;
-module_param(nowayout, bool, S_IRUGO);
+module_param(nowayout, bool, 0444);
MODULE_PARM_DESC(nowayout,
"Watchdog cannot be stopped once started (default="
__MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
-static u32 nmi_stage1_insns[64] __initdata;
-/* We need one branch and therefore one relocation per target label. */
-static struct uasm_label labels[5] __initdata;
-static struct uasm_reloc relocs[5] __initdata;
-
-enum lable_id {
- label_enter_bootloader = 1
-};
+static int disable;
+module_param(disable, int, 0444);
+MODULE_PARM_DESC(disable,
+ "Disable the watchdog entirely (default=0)");
-/* Some CP0 registers */
-#define K0 26
-#define C0_CVMMEMCTL 11, 7
-#define C0_STATUS 12, 0
-#define C0_EBASE 15, 1
-#define C0_DESAVE 31, 0
+static struct cvmx_boot_vector_element *octeon_wdt_bootvector;
void octeon_wdt_nmi_stage2(void);
-static void __init octeon_wdt_build_stage1(void)
-{
- int i;
- int len;
- u32 *p = nmi_stage1_insns;
-#ifdef CONFIG_HOTPLUG_CPU
- struct uasm_label *l = labels;
- struct uasm_reloc *r = relocs;
-#endif
-
- /*
- * For the next few instructions running the debugger may
- * cause corruption of k0 in the saved registers. Since we're
- * about to crash, nobody probably cares.
- *
- * Save K0 into the debug scratch register
- */
- uasm_i_dmtc0(&p, K0, C0_DESAVE);
-
- uasm_i_mfc0(&p, K0, C0_STATUS);
-#ifdef CONFIG_HOTPLUG_CPU
- if (octeon_bootloader_entry_addr)
- uasm_il_bbit0(&p, &r, K0, ilog2(ST0_NMI),
- label_enter_bootloader);
-#endif
- /* Force 64-bit addressing enabled */
- uasm_i_ori(&p, K0, K0, ST0_UX | ST0_SX | ST0_KX);
- uasm_i_mtc0(&p, K0, C0_STATUS);
-
-#ifdef CONFIG_HOTPLUG_CPU
- if (octeon_bootloader_entry_addr) {
- uasm_i_mfc0(&p, K0, C0_EBASE);
- /* Coreid number in K0 */
- uasm_i_andi(&p, K0, K0, 0xf);
- /* 8 * coreid in bits 16-31 */
- uasm_i_dsll_safe(&p, K0, K0, 3 + 16);
- uasm_i_ori(&p, K0, K0, 0x8001);
- uasm_i_dsll_safe(&p, K0, K0, 16);
- uasm_i_ori(&p, K0, K0, 0x0700);
- uasm_i_drotr_safe(&p, K0, K0, 32);
- /*
- * Should result in: 0x8001,0700,0000,8*coreid which is
- * CVMX_CIU_WDOGX(coreid) - 0x0500
- *
- * Now ld K0, CVMX_CIU_WDOGX(coreid)
- */
- uasm_i_ld(&p, K0, 0x500, K0);
- /*
- * If bit one set handle the NMI as a watchdog event.
- * otherwise transfer control to bootloader.
- */
- uasm_il_bbit0(&p, &r, K0, 1, label_enter_bootloader);
- uasm_i_nop(&p);
- }
-#endif
-
- /* Clear Dcache so cvmseg works right. */
- uasm_i_cache(&p, 1, 0, 0);
-
- /* Use K0 to do a read/modify/write of CVMMEMCTL */
- uasm_i_dmfc0(&p, K0, C0_CVMMEMCTL);
- /* Clear out the size of CVMSEG */
- uasm_i_dins(&p, K0, 0, 0, 6);
- /* Set CVMSEG to its largest value */
- uasm_i_ori(&p, K0, K0, 0x1c0 | 54);
- /* Store the CVMMEMCTL value */
- uasm_i_dmtc0(&p, K0, C0_CVMMEMCTL);
-
- /* Load the address of the second stage handler */
- UASM_i_LA(&p, K0, (long)octeon_wdt_nmi_stage2);
- uasm_i_jr(&p, K0);
- uasm_i_dmfc0(&p, K0, C0_DESAVE);
-
-#ifdef CONFIG_HOTPLUG_CPU
- if (octeon_bootloader_entry_addr) {
- uasm_build_label(&l, p, label_enter_bootloader);
- /* Jump to the bootloader and restore K0 */
- UASM_i_LA(&p, K0, (long)octeon_bootloader_entry_addr);
- uasm_i_jr(&p, K0);
- uasm_i_dmfc0(&p, K0, C0_DESAVE);
- }
-#endif
- uasm_resolve_relocs(relocs, labels);
-
- len = (int)(p - nmi_stage1_insns);
- pr_debug("Synthesized NMI stage 1 handler (%d instructions)\n", len);
-
- pr_debug("\t.set push\n");
- pr_debug("\t.set noreorder\n");
- for (i = 0; i < len; i++)
- pr_debug("\t.word 0x%08x\n", nmi_stage1_insns[i]);
- pr_debug("\t.set pop\n");
-
- if (len > 32)
- panic("NMI stage 1 handler exceeds 32 instructions, was %d\n",
- len);
-}
-
static int cpu2core(int cpu)
{
#ifdef CONFIG_SMP
- return cpu_logical_map(cpu);
+ return cpu_logical_map(cpu) & 0x3f;
#else
return cvmx_get_core_num();
#endif
}
-static int core2cpu(int coreid)
-{
-#ifdef CONFIG_SMP
- return cpu_number_map(coreid);
-#else
- return 0;
-#endif
-}
-
/**
* Poke the watchdog when an interrupt is received
*
@@ -248,13 +137,14 @@ static int core2cpu(int coreid)
*/
static irqreturn_t octeon_wdt_poke_irq(int cpl, void *dev_id)
{
- unsigned int core = cvmx_get_core_num();
- int cpu = core2cpu(core);
+ int cpu = raw_smp_processor_id();
+ unsigned int core = cpu2core(cpu);
+ int node = cpu_to_node(cpu);
- if (do_coundown) {
+ if (do_countdown) {
if (per_cpu_countdown[cpu] > 0) {
/* We're alive, poke the watchdog */
- cvmx_write_csr(CVMX_CIU_PP_POKEX(core), 1);
+ cvmx_write_csr_node(node, CVMX_CIU_PP_POKEX(core), 1);
per_cpu_countdown[cpu]--;
} else {
/* Bad news, you are about to reboot. */
@@ -263,7 +153,7 @@ static irqreturn_t octeon_wdt_poke_irq(int cpl, void *dev_id)
}
} else {
/* Not open, just ping away... */
- cvmx_write_csr(CVMX_CIU_PP_POKEX(core), 1);
+ cvmx_write_csr_node(node, CVMX_CIU_PP_POKEX(core), 1);
}
return IRQ_HANDLED;
}
@@ -338,10 +228,10 @@ void octeon_wdt_nmi_stage3(u64 reg[32])
u64 cp0_epc = read_c0_epc();
/* Delay so output from all cores output is not jumbled together. */
- __delay(100000000ull * coreid);
+ udelay(85000 * coreid);
octeon_wdt_write_string("\r\n*** NMI Watchdog interrupt on Core 0x");
- octeon_wdt_write_hex(coreid, 1);
+ octeon_wdt_write_hex(coreid, 2);
octeon_wdt_write_string(" ***\r\n");
for (i = 0; i < 32; i++) {
octeon_wdt_write_string("\t");
@@ -364,33 +254,98 @@ void octeon_wdt_nmi_stage3(u64 reg[32])
octeon_wdt_write_hex(cp0_cause, 16);
octeon_wdt_write_string("\r\n");
- octeon_wdt_write_string("\tsum0\t0x");
- octeon_wdt_write_hex(cvmx_read_csr(CVMX_CIU_INTX_SUM0(coreid * 2)), 16);
- octeon_wdt_write_string("\ten0\t0x");
- octeon_wdt_write_hex(cvmx_read_csr(CVMX_CIU_INTX_EN0(coreid * 2)), 16);
- octeon_wdt_write_string("\r\n");
+ /* The CIU register is different for each Octeon model. */
+ if (OCTEON_IS_MODEL(OCTEON_CN68XX)) {
+ octeon_wdt_write_string("\tsrc_wd\t0x");
+ octeon_wdt_write_hex(cvmx_read_csr(CVMX_CIU2_SRC_PPX_IP2_WDOG(coreid)), 16);
+ octeon_wdt_write_string("\ten_wd\t0x");
+ octeon_wdt_write_hex(cvmx_read_csr(CVMX_CIU2_EN_PPX_IP2_WDOG(coreid)), 16);
+ octeon_wdt_write_string("\r\n");
+ octeon_wdt_write_string("\tsrc_rml\t0x");
+ octeon_wdt_write_hex(cvmx_read_csr(CVMX_CIU2_SRC_PPX_IP2_RML(coreid)), 16);
+ octeon_wdt_write_string("\ten_rml\t0x");
+ octeon_wdt_write_hex(cvmx_read_csr(CVMX_CIU2_EN_PPX_IP2_RML(coreid)), 16);
+ octeon_wdt_write_string("\r\n");
+ octeon_wdt_write_string("\tsum\t0x");
+ octeon_wdt_write_hex(cvmx_read_csr(CVMX_CIU2_SUM_PPX_IP2(coreid)), 16);
+ octeon_wdt_write_string("\r\n");
+ } else if (!octeon_has_feature(OCTEON_FEATURE_CIU3)) {
+ octeon_wdt_write_string("\tsum0\t0x");
+ octeon_wdt_write_hex(cvmx_read_csr(CVMX_CIU_INTX_SUM0(coreid * 2)), 16);
+ octeon_wdt_write_string("\ten0\t0x");
+ octeon_wdt_write_hex(cvmx_read_csr(CVMX_CIU_INTX_EN0(coreid * 2)), 16);
+ octeon_wdt_write_string("\r\n");
+ }
octeon_wdt_write_string("*** Chip soft reset soon ***\r\n");
+
+ /*
+ * G-30204: We must trigger a soft reset before watchdog
+ * does an incomplete job of doing it.
+ */
+ if (OCTEON_IS_OCTEON3() && !OCTEON_IS_MODEL(OCTEON_CN70XX)) {
+ u64 scr;
+ unsigned int node = cvmx_get_node_num();
+ unsigned int lcore = cvmx_get_local_core_num();
+ union cvmx_ciu_wdogx ciu_wdog;
+
+ /*
+ * Wait for other cores to print out information, but
+ * not too long. Do the soft reset before watchdog
+ * can trigger it.
+ */
+ do {
+ ciu_wdog.u64 = cvmx_read_csr_node(node, CVMX_CIU_WDOGX(lcore));
+ } while (ciu_wdog.s.cnt > 0x10000);
+
+ scr = cvmx_read_csr_node(0, CVMX_GSERX_SCRATCH(0));
+ scr |= 1 << 11; /* Indicate watchdog in bit 11 */
+ cvmx_write_csr_node(0, CVMX_GSERX_SCRATCH(0), scr);
+ cvmx_write_csr_node(0, CVMX_RST_SOFT_RST, 1);
+ }
+}
+
+static int octeon_wdt_cpu_to_irq(int cpu)
+{
+ unsigned int coreid;
+ int node;
+ int irq;
+
+ coreid = cpu2core(cpu);
+ node = cpu_to_node(cpu);
+
+ if (octeon_has_feature(OCTEON_FEATURE_CIU3)) {
+ struct irq_domain *domain;
+ int hwirq;
+
+ domain = octeon_irq_get_block_domain(node,
+ WD_BLOCK_NUMBER);
+ hwirq = WD_BLOCK_NUMBER << 12 | 0x200 | coreid;
+ irq = irq_find_mapping(domain, hwirq);
+ } else {
+ irq = OCTEON_IRQ_WDOG0 + coreid;
+ }
+ return irq;
}
static int octeon_wdt_cpu_pre_down(unsigned int cpu)
{
unsigned int core;
- unsigned int irq;
+ int node;
union cvmx_ciu_wdogx ciu_wdog;
core = cpu2core(cpu);
- irq = OCTEON_IRQ_WDOG0 + core;
+ node = cpu_to_node(cpu);
/* Poke the watchdog to clear out its state */
- cvmx_write_csr(CVMX_CIU_PP_POKEX(core), 1);
+ cvmx_write_csr_node(node, CVMX_CIU_PP_POKEX(core), 1);
/* Disable the hardware. */
ciu_wdog.u64 = 0;
- cvmx_write_csr(CVMX_CIU_WDOGX(core), ciu_wdog.u64);
+ cvmx_write_csr_node(node, CVMX_CIU_WDOGX(core), ciu_wdog.u64);
- free_irq(irq, octeon_wdt_poke_irq);
+ free_irq(octeon_wdt_cpu_to_irq(cpu), octeon_wdt_poke_irq);
return 0;
}
@@ -399,31 +354,56 @@ static int octeon_wdt_cpu_online(unsigned int cpu)
unsigned int core;
unsigned int irq;
union cvmx_ciu_wdogx ciu_wdog;
+ int node;
+ struct irq_domain *domain;
+ int hwirq;
core = cpu2core(cpu);
+ node = cpu_to_node(cpu);
+
+ octeon_wdt_bootvector[core].target_ptr = (u64)octeon_wdt_nmi_stage2;
/* Disable it before doing anything with the interrupts. */
ciu_wdog.u64 = 0;
- cvmx_write_csr(CVMX_CIU_WDOGX(core), ciu_wdog.u64);
+ cvmx_write_csr_node(node, CVMX_CIU_WDOGX(core), ciu_wdog.u64);
per_cpu_countdown[cpu] = countdown_reset;
- irq = OCTEON_IRQ_WDOG0 + core;
+ if (octeon_has_feature(OCTEON_FEATURE_CIU3)) {
+ /* Must get the domain for the watchdog block */
+ domain = octeon_irq_get_block_domain(node, WD_BLOCK_NUMBER);
+
+ /* Get a irq for the wd intsn (hardware interrupt) */
+ hwirq = WD_BLOCK_NUMBER << 12 | 0x200 | core;
+ irq = irq_create_mapping(domain, hwirq);
+ irqd_set_trigger_type(irq_get_irq_data(irq),
+ IRQ_TYPE_EDGE_RISING);
+ } else
+ irq = OCTEON_IRQ_WDOG0 + core;
if (request_irq(irq, octeon_wdt_poke_irq,
IRQF_NO_THREAD, "octeon_wdt", octeon_wdt_poke_irq))
panic("octeon_wdt: Couldn't obtain irq %d", irq);
+ /* Must set the irq affinity here */
+ if (octeon_has_feature(OCTEON_FEATURE_CIU3)) {
+ cpumask_t mask;
+
+ cpumask_clear(&mask);
+ cpumask_set_cpu(cpu, &mask);
+ irq_set_affinity(irq, &mask);
+ }
+
cpumask_set_cpu(cpu, &irq_enabled_cpus);
/* Poke the watchdog to clear out its state */
- cvmx_write_csr(CVMX_CIU_PP_POKEX(core), 1);
+ cvmx_write_csr_node(node, CVMX_CIU_PP_POKEX(core), 1);
/* Finally enable the watchdog now that all handlers are installed */
ciu_wdog.u64 = 0;
ciu_wdog.s.len = timeout_cnt;
ciu_wdog.s.mode = 3; /* 3 = Interrupt + NMI + Soft-Reset */
- cvmx_write_csr(CVMX_CIU_WDOGX(core), ciu_wdog.u64);
+ cvmx_write_csr_node(node, CVMX_CIU_WDOGX(core), ciu_wdog.u64);
return 0;
}
@@ -432,17 +412,20 @@ static int octeon_wdt_ping(struct watchdog_device __always_unused *wdog)
{
int cpu;
int coreid;
+ int node;
+
+ if (disable)
+ return 0;
for_each_online_cpu(cpu) {
coreid = cpu2core(cpu);
- cvmx_write_csr(CVMX_CIU_PP_POKEX(coreid), 1);
+ node = cpu_to_node(cpu);
+ cvmx_write_csr_node(node, CVMX_CIU_PP_POKEX(coreid), 1);
per_cpu_countdown[cpu] = countdown_reset;
- if ((countdown_reset || !do_coundown) &&
+ if ((countdown_reset || !do_countdown) &&
!cpumask_test_cpu(cpu, &irq_enabled_cpus)) {
/* We have to enable the irq */
- int irq = OCTEON_IRQ_WDOG0 + coreid;
-
- enable_irq(irq);
+ enable_irq(octeon_wdt_cpu_to_irq(cpu));
cpumask_set_cpu(cpu, &irq_enabled_cpus);
}
}
@@ -472,7 +455,7 @@ static void octeon_wdt_calc_parameters(int t)
countdown_reset = periods > 2 ? periods - 2 : 0;
heartbeat = t;
- timeout_cnt = ((octeon_get_io_clock_rate() >> 8) * timeout_sec) >> 8;
+ timeout_cnt = ((octeon_get_io_clock_rate() / divisor) * timeout_sec) >> 8;
}
static int octeon_wdt_set_timeout(struct watchdog_device *wdog,
@@ -481,20 +464,25 @@ static int octeon_wdt_set_timeout(struct watchdog_device *wdog,
int cpu;
int coreid;
union cvmx_ciu_wdogx ciu_wdog;
+ int node;
if (t <= 0)
return -1;
octeon_wdt_calc_parameters(t);
+ if (disable)
+ return 0;
+
for_each_online_cpu(cpu) {
coreid = cpu2core(cpu);
- cvmx_write_csr(CVMX_CIU_PP_POKEX(coreid), 1);
+ node = cpu_to_node(cpu);
+ cvmx_write_csr_node(node, CVMX_CIU_PP_POKEX(coreid), 1);
ciu_wdog.u64 = 0;
ciu_wdog.s.len = timeout_cnt;
ciu_wdog.s.mode = 3; /* 3 = Interrupt + NMI + Soft-Reset */
- cvmx_write_csr(CVMX_CIU_WDOGX(coreid), ciu_wdog.u64);
- cvmx_write_csr(CVMX_CIU_PP_POKEX(coreid), 1);
+ cvmx_write_csr_node(node, CVMX_CIU_WDOGX(coreid), ciu_wdog.u64);
+ cvmx_write_csr_node(node, CVMX_CIU_PP_POKEX(coreid), 1);
}
octeon_wdt_ping(wdog); /* Get the irqs back on. */
return 0;
@@ -503,13 +491,13 @@ static int octeon_wdt_set_timeout(struct watchdog_device *wdog,
static int octeon_wdt_start(struct watchdog_device *wdog)
{
octeon_wdt_ping(wdog);
- do_coundown = 1;
+ do_countdown = 1;
return 0;
}
static int octeon_wdt_stop(struct watchdog_device *wdog)
{
- do_coundown = 0;
+ do_countdown = 0;
octeon_wdt_ping(wdog);
return 0;
}
@@ -540,14 +528,25 @@ static enum cpuhp_state octeon_wdt_online;
*/
static int __init octeon_wdt_init(void)
{
- int i;
int ret;
- u64 *ptr;
+
+ octeon_wdt_bootvector = cvmx_boot_vector_get();
+ if (!octeon_wdt_bootvector) {
+ pr_err("Error: Cannot allocate boot vector.\n");
+ return -ENOMEM;
+ }
+
+ if (OCTEON_IS_MODEL(OCTEON_CN68XX))
+ divisor = 0x200;
+ else if (OCTEON_IS_MODEL(OCTEON_CN78XX))
+ divisor = 0x400;
+ else
+ divisor = 0x100;
/*
* Watchdog time expiration length = The 16 bits of LEN
* represent the most significant bits of a 24 bit decrementer
- * that decrements every 256 cycles.
+ * that decrements every divisor cycle.
*
* Try for a timeout of 5 sec, if that fails a smaller number
* of even seconds,
@@ -555,8 +554,7 @@ static int __init octeon_wdt_init(void)
max_timeout_sec = 6;
do {
max_timeout_sec--;
- timeout_cnt = ((octeon_get_io_clock_rate() >> 8) *
- max_timeout_sec) >> 8;
+ timeout_cnt = ((octeon_get_io_clock_rate() / divisor) * max_timeout_sec) >> 8;
} while (timeout_cnt > 65535);
BUG_ON(timeout_cnt == 0);
@@ -576,16 +574,10 @@ static int __init octeon_wdt_init(void)
return ret;
}
- /* Build the NMI handler ... */
- octeon_wdt_build_stage1();
-
- /* ... and install it. */
- ptr = (u64 *) nmi_stage1_insns;
- for (i = 0; i < 16; i++) {
- cvmx_write_csr(CVMX_MIO_BOOT_LOC_ADR, i * 8);
- cvmx_write_csr(CVMX_MIO_BOOT_LOC_DAT, ptr[i]);
+ if (disable) {
+ pr_notice("disabled\n");
+ return 0;
}
- cvmx_write_csr(CVMX_MIO_BOOT_LOC_CFGX(0), 0x81fc0000);
cpumask_clear(&irq_enabled_cpus);
@@ -607,6 +599,10 @@ err:
static void __exit octeon_wdt_cleanup(void)
{
watchdog_unregister_device(&octeon_wdt);
+
+ if (disable)
+ return;
+
cpuhp_remove_state(octeon_wdt_online);
/*
@@ -617,7 +613,7 @@ static void __exit octeon_wdt_cleanup(void)
}
MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Cavium Networks <support@caviumnetworks.com>");
-MODULE_DESCRIPTION("Cavium Networks Octeon Watchdog driver.");
+MODULE_AUTHOR("Cavium Inc. <support@cavium.com>");
+MODULE_DESCRIPTION("Cavium Inc. OCTEON Watchdog driver.");
module_init(octeon_wdt_init);
module_exit(octeon_wdt_cleanup);
diff --git a/drivers/watchdog/octeon-wdt-nmi.S b/drivers/watchdog/octeon-wdt-nmi.S
index 8a900a5e3233..97f6eb7b5a8e 100644
--- a/drivers/watchdog/octeon-wdt-nmi.S
+++ b/drivers/watchdog/octeon-wdt-nmi.S
@@ -3,20 +3,40 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
- * Copyright (C) 2007 Cavium Networks
+ * Copyright (C) 2007-2017 Cavium, Inc.
*/
#include <asm/asm.h>
#include <asm/regdef.h>
-#define SAVE_REG(r) sd $r, -32768+6912-(32-r)*8($0)
+#define CVMSEG_BASE -32768
+#define CVMSEG_SIZE 6912
+#define SAVE_REG(r) sd $r, CVMSEG_BASE + CVMSEG_SIZE - ((32 - r) * 8)($0)
NESTED(octeon_wdt_nmi_stage2, 0, sp)
.set push
.set noreorder
.set noat
- /* Save all registers to the top CVMSEG. This shouldn't
+ /* Clear Dcache so cvmseg works right. */
+ cache 1,0($0)
+ /* Use K0 to do a read/modify/write of CVMMEMCTL */
+ dmfc0 k0, $11, 7
+ /* Clear out the size of CVMSEG */
+ dins k0, $0, 0, 6
+ /* Set CVMSEG to its largest value */
+ ori k0, k0, 0x1c0 | 54
+ /* Store the CVMMEMCTL value */
+ dmtc0 k0, $11, 7
+ /*
+ * Restore K0 from the debug scratch register, it was saved in
+ * the boot-vector code.
+ */
+ dmfc0 k0, $31
+
+ /*
+ * Save all registers to the top CVMSEG. This shouldn't
* corrupt any state used by the kernel. Also all registers
- * should have the value right before the NMI. */
+ * should have the value right before the NMI.
+ */
SAVE_REG(0)
SAVE_REG(1)
SAVE_REG(2)
@@ -49,16 +69,22 @@
SAVE_REG(29)
SAVE_REG(30)
SAVE_REG(31)
+ /* Write zero to all CVMSEG locations per Core-15169 */
+ dli a0, CVMSEG_SIZE - (33 * 8)
+1: sd zero, CVMSEG_BASE(a0)
+ daddiu a0, a0, -8
+ bgez a0, 1b
+ nop
/* Set the stack to begin right below the registers */
- li sp, -32768+6912-32*8
+ dli sp, CVMSEG_BASE + CVMSEG_SIZE - (32 * 8)
/* Load the address of the third stage handler */
- dla a0, octeon_wdt_nmi_stage3
+ dla $25, octeon_wdt_nmi_stage3
/* Call the third stage handler */
- jal a0
+ jal $25
/* a0 is the address of the saved registers */
move a0, sp
/* Loop forvever if we get here. */
-1: b 1b
+2: b 2b
nop
.set pop
END(octeon_wdt_nmi_stage2)
diff --git a/drivers/watchdog/of_xilinx_wdt.c b/drivers/watchdog/of_xilinx_wdt.c
index fae7fe929ea3..1cf286945b7a 100644
--- a/drivers/watchdog/of_xilinx_wdt.c
+++ b/drivers/watchdog/of_xilinx_wdt.c
@@ -51,9 +51,16 @@ struct xwdt_device {
static int xilinx_wdt_start(struct watchdog_device *wdd)
{
+ int ret;
u32 control_status_reg;
struct xwdt_device *xdev = watchdog_get_drvdata(wdd);
+ ret = clk_enable(xdev->clk);
+ if (ret) {
+ dev_err(wdd->parent, "Failed to enable clock\n");
+ return ret;
+ }
+
spin_lock(&xdev->spinlock);
/* Clean previous status and enable the watchdog timer */
@@ -85,6 +92,9 @@ static int xilinx_wdt_stop(struct watchdog_device *wdd)
iowrite32(0, xdev->base + XWT_TWCSR1_OFFSET);
spin_unlock(&xdev->spinlock);
+
+ clk_disable(xdev->clk);
+
pr_info("Stopped!\n");
return 0;
@@ -167,11 +177,6 @@ static int xwdt_probe(struct platform_device *pdev)
if (IS_ERR(xdev->base))
return PTR_ERR(xdev->base);
- rc = of_property_read_u32(pdev->dev.of_node, "clock-frequency", &pfreq);
- if (rc)
- dev_warn(&pdev->dev,
- "The watchdog clock frequency cannot be obtained\n");
-
rc = of_property_read_u32(pdev->dev.of_node, "xlnx,wdt-interval",
&xdev->wdt_interval);
if (rc)
@@ -186,6 +191,26 @@ static int xwdt_probe(struct platform_device *pdev)
watchdog_set_nowayout(xilinx_wdt_wdd, enable_once);
+ xdev->clk = devm_clk_get(&pdev->dev, NULL);
+ if (IS_ERR(xdev->clk)) {
+ if (PTR_ERR(xdev->clk) != -ENOENT)
+ return PTR_ERR(xdev->clk);
+
+ /*
+ * Clock framework support is optional, continue on
+ * anyways if we don't find a matching clock.
+ */
+ xdev->clk = NULL;
+
+ rc = of_property_read_u32(pdev->dev.of_node, "clock-frequency",
+ &pfreq);
+ if (rc)
+ dev_warn(&pdev->dev,
+ "The watchdog clock freq cannot be obtained\n");
+ } else {
+ pfreq = clk_get_rate(xdev->clk);
+ }
+
/*
* Twice of the 2^wdt_interval / freq because the first wdt overflow is
* ignored (interrupt), reset is only generated at second wdt overflow
@@ -197,14 +222,6 @@ static int xwdt_probe(struct platform_device *pdev)
spin_lock_init(&xdev->spinlock);
watchdog_set_drvdata(xilinx_wdt_wdd, xdev);
- xdev->clk = devm_clk_get(&pdev->dev, NULL);
- if (IS_ERR(xdev->clk)) {
- if (PTR_ERR(xdev->clk) == -ENOENT)
- xdev->clk = NULL;
- else
- return PTR_ERR(xdev->clk);
- }
-
rc = clk_prepare_enable(xdev->clk);
if (rc) {
dev_err(&pdev->dev, "unable to enable clock\n");
@@ -223,6 +240,8 @@ static int xwdt_probe(struct platform_device *pdev)
goto err_clk_disable;
}
+ clk_disable(xdev->clk);
+
dev_info(&pdev->dev, "Xilinx Watchdog Timer at %p with timeout %ds\n",
xdev->base, xilinx_wdt_wdd->timeout);
@@ -245,6 +264,43 @@ static int xwdt_remove(struct platform_device *pdev)
return 0;
}
+/**
+ * xwdt_suspend - Suspend the device.
+ *
+ * @dev: handle to the device structure.
+ * Return: 0 always.
+ */
+static int __maybe_unused xwdt_suspend(struct device *dev)
+{
+ struct platform_device *pdev = to_platform_device(dev);
+ struct xwdt_device *xdev = platform_get_drvdata(pdev);
+
+ if (watchdog_active(&xdev->xilinx_wdt_wdd))
+ xilinx_wdt_stop(&xdev->xilinx_wdt_wdd);
+
+ return 0;
+}
+
+/**
+ * xwdt_resume - Resume the device.
+ *
+ * @dev: handle to the device structure.
+ * Return: 0 on success, errno otherwise.
+ */
+static int __maybe_unused xwdt_resume(struct device *dev)
+{
+ struct platform_device *pdev = to_platform_device(dev);
+ struct xwdt_device *xdev = platform_get_drvdata(pdev);
+ int ret = 0;
+
+ if (watchdog_active(&xdev->xilinx_wdt_wdd))
+ ret = xilinx_wdt_start(&xdev->xilinx_wdt_wdd);
+
+ return ret;
+}
+
+static SIMPLE_DEV_PM_OPS(xwdt_pm_ops, xwdt_suspend, xwdt_resume);
+
/* Match table for of_platform binding */
static const struct of_device_id xwdt_of_match[] = {
{ .compatible = "xlnx,xps-timebase-wdt-1.00.a", },
@@ -259,6 +315,7 @@ static struct platform_driver xwdt_driver = {
.driver = {
.name = WATCHDOG_NAME,
.of_match_table = xwdt_of_match,
+ .pm = &xwdt_pm_ops,
},
};
diff --git a/drivers/watchdog/pcwd_usb.c b/drivers/watchdog/pcwd_usb.c
index 5615f4013924..b9e376c8e2e3 100644
--- a/drivers/watchdog/pcwd_usb.c
+++ b/drivers/watchdog/pcwd_usb.c
@@ -74,7 +74,7 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
#define USB_PCWD_PRODUCT_ID 0x1140
/* table of devices that work with this driver */
-static struct usb_device_id usb_pcwd_table[] = {
+static const struct usb_device_id usb_pcwd_table[] = {
{ USB_DEVICE(USB_PCWD_VENDOR_ID, USB_PCWD_PRODUCT_ID) },
{ } /* Terminating entry */
};
diff --git a/drivers/watchdog/qcom-wdt.c b/drivers/watchdog/qcom-wdt.c
index 4f47b5e90956..780971318810 100644
--- a/drivers/watchdog/qcom-wdt.c
+++ b/drivers/watchdog/qcom-wdt.c
@@ -162,6 +162,8 @@ static int qcom_wdt_probe(struct platform_device *pdev)
return -ENOMEM;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res)
+ return -ENOMEM;
/* We use CPU0's DGT for the watchdog */
if (of_property_read_u32(np, "cpu-offset", &percpu_offset))
diff --git a/drivers/watchdog/renesas_wdt.c b/drivers/watchdog/renesas_wdt.c
index cf61c92f7ecd..831ef83f6de1 100644
--- a/drivers/watchdog/renesas_wdt.c
+++ b/drivers/watchdog/renesas_wdt.c
@@ -1,8 +1,8 @@
/*
* Watchdog driver for Renesas WDT watchdog
*
- * Copyright (C) 2015-16 Wolfram Sang, Sang Engineering <wsa@sang-engineering.com>
- * Copyright (C) 2015-16 Renesas Electronics Corporation
+ * Copyright (C) 2015-17 Wolfram Sang, Sang Engineering <wsa@sang-engineering.com>
+ * Copyright (C) 2015-17 Renesas Electronics Corporation
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published by
@@ -23,10 +23,22 @@
#define RWTCSRA_WOVF BIT(4)
#define RWTCSRA_WRFLG BIT(5)
#define RWTCSRA_TME BIT(7)
+#define RWTCSRB 8
#define RWDT_DEFAULT_TIMEOUT 60U
-static const unsigned int clk_divs[] = { 1, 4, 16, 32, 64, 128, 1024 };
+/*
+ * In probe, clk_rate is checked to be not more than 16 bit * biggest clock
+ * divider (12 bits). d is only a factor to fully utilize the WDT counter and
+ * will not exceed its 16 bits. Thus, no overflow, we stay below 32 bits.
+ */
+#define MUL_BY_CLKS_PER_SEC(p, d) \
+ DIV_ROUND_UP((d) * (p)->clk_rate, clk_divs[(p)->cks])
+
+/* d is 16 bit, clk_divs 12 bit -> no 32 bit overflow */
+#define DIV_BY_CLKS_PER_SEC(p, d) ((d) * clk_divs[(p)->cks] / (p)->clk_rate)
+
+static const unsigned int clk_divs[] = { 1, 4, 16, 32, 64, 128, 1024, 4096 };
static bool nowayout = WATCHDOG_NOWAYOUT;
module_param(nowayout, bool, 0);
@@ -36,8 +48,7 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
struct rwdt_priv {
void __iomem *base;
struct watchdog_device wdev;
- struct clk *clk;
- unsigned int clks_per_sec;
+ unsigned long clk_rate;
u8 cks;
};
@@ -55,7 +66,7 @@ static int rwdt_init_timeout(struct watchdog_device *wdev)
{
struct rwdt_priv *priv = watchdog_get_drvdata(wdev);
- rwdt_write(priv, 65536 - wdev->timeout * priv->clks_per_sec, RWTCNT);
+ rwdt_write(priv, 65536 - MUL_BY_CLKS_PER_SEC(priv, wdev->timeout), RWTCNT);
return 0;
}
@@ -64,8 +75,9 @@ static int rwdt_start(struct watchdog_device *wdev)
{
struct rwdt_priv *priv = watchdog_get_drvdata(wdev);
- clk_prepare_enable(priv->clk);
+ pm_runtime_get_sync(wdev->parent);
+ rwdt_write(priv, 0, RWTCSRB);
rwdt_write(priv, priv->cks, RWTCSRA);
rwdt_init_timeout(wdev);
@@ -82,7 +94,7 @@ static int rwdt_stop(struct watchdog_device *wdev)
struct rwdt_priv *priv = watchdog_get_drvdata(wdev);
rwdt_write(priv, priv->cks, RWTCSRA);
- clk_disable_unprepare(priv->clk);
+ pm_runtime_put(wdev->parent);
return 0;
}
@@ -92,7 +104,7 @@ static unsigned int rwdt_get_timeleft(struct watchdog_device *wdev)
struct rwdt_priv *priv = watchdog_get_drvdata(wdev);
u16 val = readw_relaxed(priv->base + RWTCNT);
- return DIV_ROUND_CLOSEST(65536 - val, priv->clks_per_sec);
+ return DIV_BY_CLKS_PER_SEC(priv, 65536 - val);
}
static const struct watchdog_info rwdt_ident = {
@@ -112,8 +124,8 @@ static int rwdt_probe(struct platform_device *pdev)
{
struct rwdt_priv *priv;
struct resource *res;
- unsigned long rate;
- unsigned int clks_per_sec;
+ struct clk *clk;
+ unsigned long clks_per_sec;
int ret, i;
priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
@@ -125,36 +137,40 @@ static int rwdt_probe(struct platform_device *pdev)
if (IS_ERR(priv->base))
return PTR_ERR(priv->base);
- priv->clk = devm_clk_get(&pdev->dev, NULL);
- if (IS_ERR(priv->clk))
- return PTR_ERR(priv->clk);
+ clk = devm_clk_get(&pdev->dev, NULL);
+ if (IS_ERR(clk))
+ return PTR_ERR(clk);
+
+ pm_runtime_enable(&pdev->dev);
- rate = clk_get_rate(priv->clk);
- if (!rate)
- return -ENOENT;
+ pm_runtime_get_sync(&pdev->dev);
+ priv->clk_rate = clk_get_rate(clk);
+ pm_runtime_put(&pdev->dev);
+
+ if (!priv->clk_rate) {
+ ret = -ENOENT;
+ goto out_pm_disable;
+ }
for (i = ARRAY_SIZE(clk_divs) - 1; i >= 0; i--) {
- clks_per_sec = DIV_ROUND_UP(rate, clk_divs[i]);
- if (clks_per_sec) {
- priv->clks_per_sec = clks_per_sec;
+ clks_per_sec = priv->clk_rate / clk_divs[i];
+ if (clks_per_sec && clks_per_sec < 65536) {
priv->cks = i;
break;
}
}
- if (!clks_per_sec) {
+ if (i < 0) {
dev_err(&pdev->dev, "Can't find suitable clock divider\n");
- return -ERANGE;
+ ret = -ERANGE;
+ goto out_pm_disable;
}
- pm_runtime_enable(&pdev->dev);
- pm_runtime_get_sync(&pdev->dev);
-
priv->wdev.info = &rwdt_ident,
priv->wdev.ops = &rwdt_ops,
priv->wdev.parent = &pdev->dev;
priv->wdev.min_timeout = 1;
- priv->wdev.max_timeout = 65536 / clks_per_sec;
+ priv->wdev.max_timeout = DIV_BY_CLKS_PER_SEC(priv, 65536);
priv->wdev.timeout = min(priv->wdev.max_timeout, RWDT_DEFAULT_TIMEOUT);
platform_set_drvdata(pdev, priv);
@@ -167,13 +183,14 @@ static int rwdt_probe(struct platform_device *pdev)
dev_warn(&pdev->dev, "Specified timeout value invalid, using default\n");
ret = watchdog_register_device(&priv->wdev);
- if (ret < 0) {
- pm_runtime_put(&pdev->dev);
- pm_runtime_disable(&pdev->dev);
- return ret;
- }
+ if (ret < 0)
+ goto out_pm_disable;
return 0;
+
+ out_pm_disable:
+ pm_runtime_disable(&pdev->dev);
+ return ret;
}
static int rwdt_remove(struct platform_device *pdev)
@@ -181,7 +198,6 @@ static int rwdt_remove(struct platform_device *pdev)
struct rwdt_priv *priv = platform_get_drvdata(pdev);
watchdog_unregister_device(&priv->wdev);
- pm_runtime_put(&pdev->dev);
pm_runtime_disable(&pdev->dev);
return 0;
diff --git a/drivers/watchdog/rt2880_wdt.c b/drivers/watchdog/rt2880_wdt.c
index 05524baf7dcc..98967f0a7d10 100644
--- a/drivers/watchdog/rt2880_wdt.c
+++ b/drivers/watchdog/rt2880_wdt.c
@@ -119,7 +119,7 @@ static int rt288x_wdt_bootcause(void)
return 0;
}
-static struct watchdog_info rt288x_wdt_info = {
+static const struct watchdog_info rt288x_wdt_info = {
.identity = "Ralink Watchdog",
.options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE,
};
@@ -152,7 +152,7 @@ static int rt288x_wdt_probe(struct platform_device *pdev)
if (IS_ERR(rt288x_wdt_clk))
return PTR_ERR(rt288x_wdt_clk);
- rt288x_wdt_reset = devm_reset_control_get(&pdev->dev, NULL);
+ rt288x_wdt_reset = devm_reset_control_get_exclusive(&pdev->dev, NULL);
if (!IS_ERR(rt288x_wdt_reset))
reset_control_deassert(rt288x_wdt_reset);
diff --git a/drivers/watchdog/sc1200wdt.c b/drivers/watchdog/sc1200wdt.c
index b34d3d5ba632..8e4e2fc13f87 100644
--- a/drivers/watchdog/sc1200wdt.c
+++ b/drivers/watchdog/sc1200wdt.c
@@ -342,7 +342,7 @@ static int __init sc1200wdt_probe(void)
#if defined CONFIG_PNP
-static struct pnp_device_id scl200wdt_pnp_devices[] = {
+static const struct pnp_device_id scl200wdt_pnp_devices[] = {
/* National Semiconductor PC87307/PC97307 watchdog component */
{.id = "NSC0800", .driver_data = 0},
{.id = ""},
diff --git a/drivers/watchdog/sp5100_tco.h b/drivers/watchdog/sp5100_tco.h
index 2b28c00da0df..1af4dee71337 100644
--- a/drivers/watchdog/sp5100_tco.h
+++ b/drivers/watchdog/sp5100_tco.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* sp5100_tco: TCO timer driver for sp5100 chipsets.
*
diff --git a/drivers/watchdog/sp805_wdt.c b/drivers/watchdog/sp805_wdt.c
index e7a715e82021..03805bc5d67a 100644
--- a/drivers/watchdog/sp805_wdt.c
+++ b/drivers/watchdog/sp805_wdt.c
@@ -281,7 +281,7 @@ static int __maybe_unused sp805_wdt_resume(struct device *dev)
static SIMPLE_DEV_PM_OPS(sp805_wdt_dev_pm_ops, sp805_wdt_suspend,
sp805_wdt_resume);
-static struct amba_id sp805_wdt_ids[] = {
+static const struct amba_id sp805_wdt_ids[] = {
{
.id = 0x00141805,
.mask = 0x00ffffff,
diff --git a/drivers/watchdog/stm32_iwdg.c b/drivers/watchdog/stm32_iwdg.c
index 6c501b7dba29..be64a8699de3 100644
--- a/drivers/watchdog/stm32_iwdg.c
+++ b/drivers/watchdog/stm32_iwdg.c
@@ -140,7 +140,7 @@ static const struct watchdog_info stm32_iwdg_info = {
.identity = "STM32 Independent Watchdog",
};
-static struct watchdog_ops stm32_iwdg_ops = {
+static const struct watchdog_ops stm32_iwdg_ops = {
.owner = THIS_MODULE,
.start = stm32_iwdg_start,
.ping = stm32_iwdg_ping,
diff --git a/drivers/watchdog/ts72xx_wdt.c b/drivers/watchdog/ts72xx_wdt.c
index 17c25daebcce..811e43c39ec4 100644
--- a/drivers/watchdog/ts72xx_wdt.c
+++ b/drivers/watchdog/ts72xx_wdt.c
@@ -112,7 +112,7 @@ static const struct watchdog_info ts72xx_wdt_ident = {
.identity = "TS-72XX WDT",
};
-static struct watchdog_ops ts72xx_wdt_ops = {
+static const struct watchdog_ops ts72xx_wdt_ops = {
.owner = THIS_MODULE,
.start = ts72xx_wdt_start,
.stop = ts72xx_wdt_stop,
diff --git a/drivers/watchdog/w83627hf_wdt.c b/drivers/watchdog/w83627hf_wdt.c
index d9ba0496713c..7817836bff55 100644
--- a/drivers/watchdog/w83627hf_wdt.c
+++ b/drivers/watchdog/w83627hf_wdt.c
@@ -429,7 +429,7 @@ static int __init wdt_init(void)
{
int ret;
int chip;
- const char * const chip_name[] = {
+ static const char * const chip_name[] = {
"W83627HF",
"W83627S",
"W83697HF",
diff --git a/drivers/watchdog/watchdog_pretimeout.h b/drivers/watchdog/watchdog_pretimeout.h
index a5a32b39c56d..a3f1abc68839 100644
--- a/drivers/watchdog/watchdog_pretimeout.h
+++ b/drivers/watchdog/watchdog_pretimeout.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __WATCHDOG_PRETIMEOUT_H
#define __WATCHDOG_PRETIMEOUT_H
diff --git a/drivers/watchdog/ziirave_wdt.c b/drivers/watchdog/ziirave_wdt.c
index b4e0cea5a64e..d3594aa3a374 100644
--- a/drivers/watchdog/ziirave_wdt.c
+++ b/drivers/watchdog/ziirave_wdt.c
@@ -737,7 +737,7 @@ static int ziirave_wdt_remove(struct i2c_client *client)
return 0;
}
-static struct i2c_device_id ziirave_wdt_id[] = {
+static const struct i2c_device_id ziirave_wdt_id[] = {
{ "rave-wdt", 0 },
{ }
};
diff --git a/drivers/watchdog/zx2967_wdt.c b/drivers/watchdog/zx2967_wdt.c
index 69ec5855584b..9261f7c77f6d 100644
--- a/drivers/watchdog/zx2967_wdt.c
+++ b/drivers/watchdog/zx2967_wdt.c
@@ -229,7 +229,7 @@ static int zx2967_wdt_probe(struct platform_device *pdev)
}
clk_set_rate(wdt->clock, ZX2967_WDT_CLK_FREQ);
- rstc = devm_reset_control_get(dev, NULL);
+ rstc = devm_reset_control_get_exclusive(dev, NULL);
if (IS_ERR(rstc)) {
dev_err(dev, "failed to get rstc");
ret = PTR_ERR(rstc);
diff --git a/drivers/xen/Makefile b/drivers/xen/Makefile
index caaa15dc37bc..d3930ecaf11d 100644
--- a/drivers/xen/Makefile
+++ b/drivers/xen/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_HOTPLUG_CPU) += cpu_hotplug.o
obj-$(CONFIG_X86) += fallback.o
obj-y += grant-table.o features.o balloon.o manage.o preempt.o time.o
diff --git a/drivers/xen/biomerge.c b/drivers/xen/biomerge.c
index 1bdd02a6d6ac..30d7f52eb7ca 100644
--- a/drivers/xen/biomerge.c
+++ b/drivers/xen/biomerge.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bio.h>
#include <linux/io.h>
#include <linux/export.h>
diff --git a/drivers/xen/cpu_hotplug.c b/drivers/xen/cpu_hotplug.c
index 0003912a8111..d4265c8ebb22 100644
--- a/drivers/xen/cpu_hotplug.c
+++ b/drivers/xen/cpu_hotplug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) "xen:" KBUILD_MODNAME ": " fmt
#include <linux/notifier.h>
diff --git a/drivers/xen/events/events_2l.c b/drivers/xen/events/events_2l.c
index bdff01095f54..8edef51c92e5 100644
--- a/drivers/xen/events/events_2l.c
+++ b/drivers/xen/events/events_2l.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Xen event channels (2-level ABI)
*
diff --git a/drivers/xen/gntalloc.c b/drivers/xen/gntalloc.c
index 1bf55a32a4b3..3fa40c723e8e 100644
--- a/drivers/xen/gntalloc.c
+++ b/drivers/xen/gntalloc.c
@@ -294,7 +294,7 @@ static long gntalloc_ioctl_alloc(struct gntalloc_file_private_data *priv,
goto out;
}
- gref_ids = kcalloc(op.count, sizeof(gref_ids[0]), GFP_TEMPORARY);
+ gref_ids = kcalloc(op.count, sizeof(gref_ids[0]), GFP_KERNEL);
if (!gref_ids) {
rc = -ENOMEM;
goto out;
diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c
index 82360594fa8e..57efbd3b053b 100644
--- a/drivers/xen/gntdev.c
+++ b/drivers/xen/gntdev.c
@@ -1024,6 +1024,7 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)
mutex_unlock(&priv->lock);
if (use_ptemod) {
+ map->pages_vm_start = vma->vm_start;
err = apply_to_page_range(vma->vm_mm, vma->vm_start,
vma->vm_end - vma->vm_start,
find_grant_ptes, map);
@@ -1061,7 +1062,6 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)
set_grant_ptes_as_special, NULL);
}
#endif
- map->pages_vm_start = vma->vm_start;
}
return 0;
diff --git a/drivers/xen/time.c b/drivers/xen/time.c
index ac5f23fcafc2..a63fedbdcbe9 100644
--- a/drivers/xen/time.c
+++ b/drivers/xen/time.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Xen stolen ticks accounting.
*/
diff --git a/drivers/xen/xen-balloon.c b/drivers/xen/xen-balloon.c
index e89136ab851e..b437fccd4e62 100644
--- a/drivers/xen/xen-balloon.c
+++ b/drivers/xen/xen-balloon.c
@@ -57,7 +57,7 @@ static int register_balloon(struct device *dev);
static void watch_target(struct xenbus_watch *watch,
const char *path, const char *token)
{
- unsigned long long new_target;
+ unsigned long long new_target, static_max;
int err;
static bool watch_fired;
static long target_diff;
@@ -72,13 +72,20 @@ static void watch_target(struct xenbus_watch *watch,
* pages. PAGE_SHIFT converts bytes to pages, hence PAGE_SHIFT - 10.
*/
new_target >>= PAGE_SHIFT - 10;
- if (watch_fired) {
- balloon_set_new_target(new_target - target_diff);
- return;
+
+ if (!watch_fired) {
+ watch_fired = true;
+ err = xenbus_scanf(XBT_NIL, "memory", "static-max", "%llu",
+ &static_max);
+ if (err != 1)
+ static_max = new_target;
+ else
+ static_max >>= PAGE_SHIFT - 10;
+ target_diff = xen_pv_domain() ? 0
+ : static_max - balloon_stats.target_pages;
}
- watch_fired = true;
- target_diff = new_target - balloon_stats.target_pages;
+ balloon_set_new_target(new_target - target_diff);
}
static struct xenbus_watch target_watch = {
.node = "memory/target",
diff --git a/drivers/xen/xen-pciback/Makefile b/drivers/xen/xen-pciback/Makefile
index ffe0ad3438bd..e8d981d43235 100644
--- a/drivers/xen/xen-pciback/Makefile
+++ b/drivers/xen/xen-pciback/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_XEN_PCIDEV_BACKEND) += xen-pciback.o
xen-pciback-y := pci_stub.o pciback_ops.o xenbus.o
diff --git a/drivers/xen/xen-pciback/conf_space.c b/drivers/xen/xen-pciback/conf_space.c
index 9e9286d0872e..60111719b01f 100644
--- a/drivers/xen/xen-pciback/conf_space.c
+++ b/drivers/xen/xen-pciback/conf_space.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PCI Backend - Functions for creating a virtual configuration space for
* exported PCI Devices.
diff --git a/drivers/xen/xen-pciback/conf_space.h b/drivers/xen/xen-pciback/conf_space.h
index 62461a8ba1d6..22db630717ea 100644
--- a/drivers/xen/xen-pciback/conf_space.h
+++ b/drivers/xen/xen-pciback/conf_space.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PCI Backend - Common data structures for overriding the configuration space
*
diff --git a/drivers/xen/xen-pciback/conf_space_capability.c b/drivers/xen/xen-pciback/conf_space_capability.c
index 7f83e9083e9d..73427d8e0116 100644
--- a/drivers/xen/xen-pciback/conf_space_capability.c
+++ b/drivers/xen/xen-pciback/conf_space_capability.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PCI Backend - Handles the virtual fields found on the capability lists
* in the configuration space.
diff --git a/drivers/xen/xen-pciback/conf_space_header.c b/drivers/xen/xen-pciback/conf_space_header.c
index 5fbfd9cfb6d6..10ae24b5a76e 100644
--- a/drivers/xen/xen-pciback/conf_space_header.c
+++ b/drivers/xen/xen-pciback/conf_space_header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PCI Backend - Handles the virtual fields in the configuration space headers.
*
@@ -169,6 +170,9 @@ static int rom_write(struct pci_dev *dev, int offset, u32 value, void *data)
static int bar_write(struct pci_dev *dev, int offset, u32 value, void *data)
{
struct pci_bar_info *bar = data;
+ unsigned int pos = (offset - PCI_BASE_ADDRESS_0) / 4;
+ const struct resource *res = dev->resource;
+ u32 mask;
if (unlikely(!bar)) {
pr_warn(DRV_NAME ": driver data not found for %s\n",
@@ -179,7 +183,13 @@ static int bar_write(struct pci_dev *dev, int offset, u32 value, void *data)
/* A write to obtain the length must happen as a 32-bit write.
* This does not (yet) support writing individual bytes
*/
- if (value == ~0)
+ if (res[pos].flags & IORESOURCE_IO)
+ mask = ~PCI_BASE_ADDRESS_IO_MASK;
+ else if (pos && (res[pos - 1].flags & IORESOURCE_MEM_64))
+ mask = 0;
+ else
+ mask = ~PCI_BASE_ADDRESS_MEM_MASK;
+ if ((value | mask) == ~0U)
bar->which = 1;
else {
u32 tmpval;
diff --git a/drivers/xen/xen-pciback/conf_space_quirks.c b/drivers/xen/xen-pciback/conf_space_quirks.c
index 7476791cab40..89d9744ece61 100644
--- a/drivers/xen/xen-pciback/conf_space_quirks.c
+++ b/drivers/xen/xen-pciback/conf_space_quirks.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PCI Backend - Handle special overlays for broken devices.
*
diff --git a/drivers/xen/xen-pciback/conf_space_quirks.h b/drivers/xen/xen-pciback/conf_space_quirks.h
index cfcc517e4570..d873abe35bf6 100644
--- a/drivers/xen/xen-pciback/conf_space_quirks.h
+++ b/drivers/xen/xen-pciback/conf_space_quirks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PCI Backend - Data structures for special overlays for broken devices.
*
diff --git a/drivers/xen/xen-pciback/passthrough.c b/drivers/xen/xen-pciback/passthrough.c
index f16a30e2a110..66e9b814cc86 100644
--- a/drivers/xen/xen-pciback/passthrough.c
+++ b/drivers/xen/xen-pciback/passthrough.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PCI Backend - Provides restricted access to the real PCI bus topology
* to the frontend
diff --git a/drivers/xen/xen-pciback/pciback.h b/drivers/xen/xen-pciback/pciback.h
index 7af369b6aaa2..263c059bff90 100644
--- a/drivers/xen/xen-pciback/pciback.h
+++ b/drivers/xen/xen-pciback/pciback.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PCI Backend Common Data Structures & Function Declarations
*
diff --git a/drivers/xen/xen-pciback/pciback_ops.c b/drivers/xen/xen-pciback/pciback_ops.c
index f8c77751f330..ee2c891b55c6 100644
--- a/drivers/xen/xen-pciback/pciback_ops.c
+++ b/drivers/xen/xen-pciback/pciback_ops.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PCI Backend Operations - respond to PCI requests from Frontend
*
diff --git a/drivers/xen/xen-pciback/vpci.c b/drivers/xen/xen-pciback/vpci.c
index c99f8bb1c56c..f6ba18191c0f 100644
--- a/drivers/xen/xen-pciback/vpci.c
+++ b/drivers/xen/xen-pciback/vpci.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PCI Backend - Provides a Virtual PCI bus (with real devices)
* to the frontend
diff --git a/drivers/xen/xen-pciback/xenbus.c b/drivers/xen/xen-pciback/xenbus.c
index 3814b44bf1f7..581c4e1a8b82 100644
--- a/drivers/xen/xen-pciback/xenbus.c
+++ b/drivers/xen/xen-pciback/xenbus.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* PCI Backend Xenbus Setup - handles setup with frontend and xend
*
diff --git a/drivers/xen/xen-selfballoon.c b/drivers/xen/xen-selfballoon.c
index a67e955cacd1..55988b8418ee 100644
--- a/drivers/xen/xen-selfballoon.c
+++ b/drivers/xen/xen-selfballoon.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/******************************************************************************
* Xen selfballoon driver (and optional frontswap self-shrinking driver)
*
diff --git a/drivers/xen/xenbus/Makefile b/drivers/xen/xenbus/Makefile
index 31e2e9050c7a..0c7532110815 100644
--- a/drivers/xen/xenbus/Makefile
+++ b/drivers/xen/xenbus/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-y += xenbus.o
obj-y += xenbus_dev_frontend.o
diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c
index 82a8866758ee..a1c17000129b 100644
--- a/drivers/xen/xenbus/xenbus_client.c
+++ b/drivers/xen/xenbus/xenbus_client.c
@@ -519,64 +519,6 @@ static int __xenbus_map_ring(struct xenbus_device *dev,
return err;
}
-static int xenbus_map_ring_valloc_pv(struct xenbus_device *dev,
- grant_ref_t *gnt_refs,
- unsigned int nr_grefs,
- void **vaddr)
-{
- struct xenbus_map_node *node;
- struct vm_struct *area;
- pte_t *ptes[XENBUS_MAX_RING_GRANTS];
- phys_addr_t phys_addrs[XENBUS_MAX_RING_GRANTS];
- int err = GNTST_okay;
- int i;
- bool leaked;
-
- *vaddr = NULL;
-
- if (nr_grefs > XENBUS_MAX_RING_GRANTS)
- return -EINVAL;
-
- node = kzalloc(sizeof(*node), GFP_KERNEL);
- if (!node)
- return -ENOMEM;
-
- area = alloc_vm_area(XEN_PAGE_SIZE * nr_grefs, ptes);
- if (!area) {
- kfree(node);
- return -ENOMEM;
- }
-
- for (i = 0; i < nr_grefs; i++)
- phys_addrs[i] = arbitrary_virt_to_machine(ptes[i]).maddr;
-
- err = __xenbus_map_ring(dev, gnt_refs, nr_grefs, node->handles,
- phys_addrs,
- GNTMAP_host_map | GNTMAP_contains_pte,
- &leaked);
- if (err)
- goto failed;
-
- node->nr_handles = nr_grefs;
- node->pv.area = area;
-
- spin_lock(&xenbus_valloc_lock);
- list_add(&node->next, &xenbus_valloc_pages);
- spin_unlock(&xenbus_valloc_lock);
-
- *vaddr = area->addr;
- return 0;
-
-failed:
- if (!leaked)
- free_vm_area(area);
- else
- pr_alert("leaking VM area %p size %u page(s)", area, nr_grefs);
-
- kfree(node);
- return err;
-}
-
struct map_ring_valloc_hvm
{
unsigned int idx;
@@ -725,6 +667,65 @@ int xenbus_unmap_ring_vfree(struct xenbus_device *dev, void *vaddr)
}
EXPORT_SYMBOL_GPL(xenbus_unmap_ring_vfree);
+#ifdef CONFIG_XEN_PV
+static int xenbus_map_ring_valloc_pv(struct xenbus_device *dev,
+ grant_ref_t *gnt_refs,
+ unsigned int nr_grefs,
+ void **vaddr)
+{
+ struct xenbus_map_node *node;
+ struct vm_struct *area;
+ pte_t *ptes[XENBUS_MAX_RING_GRANTS];
+ phys_addr_t phys_addrs[XENBUS_MAX_RING_GRANTS];
+ int err = GNTST_okay;
+ int i;
+ bool leaked;
+
+ *vaddr = NULL;
+
+ if (nr_grefs > XENBUS_MAX_RING_GRANTS)
+ return -EINVAL;
+
+ node = kzalloc(sizeof(*node), GFP_KERNEL);
+ if (!node)
+ return -ENOMEM;
+
+ area = alloc_vm_area(XEN_PAGE_SIZE * nr_grefs, ptes);
+ if (!area) {
+ kfree(node);
+ return -ENOMEM;
+ }
+
+ for (i = 0; i < nr_grefs; i++)
+ phys_addrs[i] = arbitrary_virt_to_machine(ptes[i]).maddr;
+
+ err = __xenbus_map_ring(dev, gnt_refs, nr_grefs, node->handles,
+ phys_addrs,
+ GNTMAP_host_map | GNTMAP_contains_pte,
+ &leaked);
+ if (err)
+ goto failed;
+
+ node->nr_handles = nr_grefs;
+ node->pv.area = area;
+
+ spin_lock(&xenbus_valloc_lock);
+ list_add(&node->next, &xenbus_valloc_pages);
+ spin_unlock(&xenbus_valloc_lock);
+
+ *vaddr = area->addr;
+ return 0;
+
+failed:
+ if (!leaked)
+ free_vm_area(area);
+ else
+ pr_alert("leaking VM area %p size %u page(s)", area, nr_grefs);
+
+ kfree(node);
+ return err;
+}
+
static int xenbus_unmap_ring_vfree_pv(struct xenbus_device *dev, void *vaddr)
{
struct xenbus_map_node *node;
@@ -788,6 +789,12 @@ static int xenbus_unmap_ring_vfree_pv(struct xenbus_device *dev, void *vaddr)
return err;
}
+static const struct xenbus_ring_ops ring_ops_pv = {
+ .map = xenbus_map_ring_valloc_pv,
+ .unmap = xenbus_unmap_ring_vfree_pv,
+};
+#endif
+
struct unmap_ring_vfree_hvm
{
unsigned int idx;
@@ -916,11 +923,6 @@ enum xenbus_state xenbus_read_driver_state(const char *path)
}
EXPORT_SYMBOL_GPL(xenbus_read_driver_state);
-static const struct xenbus_ring_ops ring_ops_pv = {
- .map = xenbus_map_ring_valloc_pv,
- .unmap = xenbus_unmap_ring_vfree_pv,
-};
-
static const struct xenbus_ring_ops ring_ops_hvm = {
.map = xenbus_map_ring_valloc_hvm,
.unmap = xenbus_unmap_ring_vfree_hvm,
@@ -928,8 +930,10 @@ static const struct xenbus_ring_ops ring_ops_hvm = {
void __init xenbus_ring_ops_init(void)
{
+#ifdef CONFIG_XEN_PV
if (!xen_feature(XENFEAT_auto_translated_physmap))
ring_ops = &ring_ops_pv;
else
+#endif
ring_ops = &ring_ops_hvm;
}
diff --git a/drivers/xen/xenbus/xenbus_dev_backend.c b/drivers/xen/xenbus/xenbus_dev_backend.c
index 1126701e212e..edba5fecde4d 100644
--- a/drivers/xen/xenbus/xenbus_dev_backend.c
+++ b/drivers/xen/xenbus/xenbus_dev_backend.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/slab.h>
diff --git a/drivers/xen/xenfs/xenfs.h b/drivers/xen/xenfs/xenfs.h
index 2c5934ea9b1e..cfe4874b83a7 100644
--- a/drivers/xen/xenfs/xenfs.h
+++ b/drivers/xen/xenfs/xenfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XENFS_XENBUS_H
#define _XENFS_XENBUS_H
diff --git a/drivers/xen/xenfs/xenstored.c b/drivers/xen/xenfs/xenstored.c
index 82fd2a396d96..f59235f9f8a2 100644
--- a/drivers/xen/xenfs/xenstored.c
+++ b/drivers/xen/xenfs/xenstored.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/mm.h>
diff --git a/drivers/xen/xenfs/xensyms.c b/drivers/xen/xenfs/xensyms.c
index c6e2b4a542ea..c6c73a33c44d 100644
--- a/drivers/xen/xenfs/xensyms.c
+++ b/drivers/xen/xenfs/xensyms.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/seq_file.h>
#include <linux/fs.h>
diff --git a/drivers/zorro/Makefile b/drivers/zorro/Makefile
index 7dc5332ff984..b360ac4ea846 100644
--- a/drivers/zorro/Makefile
+++ b/drivers/zorro/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Zorro bus specific drivers.
#
diff --git a/drivers/zorro/gen-devlist.c b/drivers/zorro/gen-devlist.c
index 16fe206f9998..e325c5ce995b 100644
--- a/drivers/zorro/gen-devlist.c
+++ b/drivers/zorro/gen-devlist.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Generate devlist.h from the Zorro ID file.
*
diff --git a/drivers/zorro/names.c b/drivers/zorro/names.c
index 83eedddbb794..fa3c83dbe843 100644
--- a/drivers/zorro/names.c
+++ b/drivers/zorro/names.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Zorro Device Name Tables
*
diff --git a/drivers/zorro/proc.c b/drivers/zorro/proc.c
index 05397305fccd..df05a26ab8d8 100644
--- a/drivers/zorro/proc.c
+++ b/drivers/zorro/proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Procfs interface for the Zorro bus.
*
diff --git a/drivers/zorro/zorro.h b/drivers/zorro/zorro.h
index 4f805c01cfbc..ac0bab3412d9 100644
--- a/drivers/zorro/zorro.h
+++ b/drivers/zorro/zorro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_ZORRO_NAMES
extern void zorro_name_device(struct zorro_dev *z);
diff --git a/firmware/3com/typhoon.bin.ihex b/firmware/3com/typhoon.bin.ihex
deleted file mode 100644
index d7a83bea0c3b..000000000000
--- a/firmware/3com/typhoon.bin.ihex
+++ /dev/null
@@ -1,2819 +0,0 @@
-:10000000545950484F4F4E000200000009000000B4
-:100010000000FFFFCB99B1D44CB8D04B3202D4EEE4
-:10002000737E0B139BC0AEF440010000E8FC00009F
-:100030000000FFFF390000EA050000EA040000EAC2
-:10004000030000EA020000EA010000EA320200EACE
-:10005000C51400EA07002DE90E00A0E100100FE131
-:10006000D0209FE512FF2FE1FEFFFFEA010080E0B4
-:10007000042081E4010050E1FCFFFF1A0EF0A0E132
-:1000800000A0A0E10EB0A0E10000A0E3A8109FE551
-:10009000000081E5A4109FE5000081E50116A0E3C2
-:1000A000000091E5010080E3000081E5D700A0E3B6
-:1000B00000F021E188D09FE5DB00A0E300F021E122
-:1000C0007CD09FE5D200A0E300F021E174D09FE551
-:1000D000D100A0E300F021E16CD09FE59B1400EB80
-:1000E000D300A0E300F021E160D09FE560009FE530
-:1000F00060109FE560209FE5DBFFFFEB5C009FE564
-:100100005C109FE50020A0E3D7FFFFEB54009FE5C4
-:1001100054109FE5D4FFFFEB0A00A0E10BF0A0E133
-:10012000D310A0E301F021E1D4FFFFEB3CA09FE559
-:100130001AFF2FE1C6FFFFEA1521FFFF0C00100098
-:100140001C0010003C380080FC370080FC3F008021
-:100150007C340080800F000080300080ADDEADDE9A
-:10016000B0BB000024AB20404829000028050080D7
-:10017000BDBA214000000000FFFF000000000000A9
-:1001800000000000FFFF00000000000058570000C2
-:10019000864B00006001FFFFB0B5071C124D002424
-:1001A000286800281ED0381C104904F07BFD2968FF
-:1001B000C0460860002815D038010D4940181923A1
-:1001C000DB01C018416B80290CD2013141632868E2
-:1001D000C169C0462960390741600462C762B0BC8A
-:1001E00008BC1847201CFAE7E8170080EE0500005D
-:1001F000A01C008002490A68C046C26108607047BE
-:10020000E81700807047000070470000704700004A
-:1002100000000FE10010A0E1C01081E301F021E136
-:100220001EFF2FE100F021E11EFF2FE100000FE192
-:10023000C00080E300F021E11EFF2FE100000FE18C
-:10024000C000C0E300F021E11EFF2FE100000FE13C
-:10025000400080E300F021E11EFF2FE100000FE1EC
-:10026000800010E3800080E300F021E10000001234
-:100270001EFF2FE1000050E300000FE18000C013DB
-:1002800000F021E11EFF2FE100000FE18000C0E33C
-:1002900000F021E11EFF2FE1910000E01EFF2FE1A1
-:1002A000012080E0010080E01EFF2FE180B5084FB3
-:1002B000642804D3642038630020C04303E038631B
-:1002C000044905F001FB7863B86380BC08BC18479B
-:1002D000680E00808813000080B4104B00221F6B52
-:1002E000642F03D209680968490802D2101C80BC37
-:1002F0007047191CDB6B4F6BBB4205D24068000492
-:10030000000C1818C863F1E74168054B19434160B8
-:100310000448C16B0131C1630220E8E7680E008028
-:10032000000000800C2B008090B5071C154C0020AD
-:10033000216B64290BD2B96E490808D3216CA26BDA
-:10034000914207D2FA1D3932528B8918216490BC30
-:1003500008BC1847786A396BC0464862386B02F0AF
-:100360002DFE381C02F0E8FA0120BB231B01E11826
-:10037000C87305490A6C12180A6404498A6D121878
-:100380008A65E4E7680E00800C2B0080A42A0080B8
-:1003900080B40A48C06D02231840094A0021002891
-:1003A00003D0D163116480BC7047064807687B1C8A
-:1003B00003600A2FF7D30160F3E70000A42A00804E
-:1003C000680E0080E001008070470204120C000CEF
-:1003D00010180A04120C090C51180818010C05D049
-:1003E0000104090C000C0818010CF9D10004000CE0
-:1003F000704780B40022002918D04F087B1E002FC0
-:1004000006D00788BA1802301F1C013B002FF8D114
-:10041000490803D300880006000E8218100C05D08E
-:100420001004000C110C4218100CF9D11004000C2F
-:1004300080BC704780B58389C789FB18078AFB1881
-:10044000478AFB18407A0002C718380C05D03804D8
-:10045000000C3B0CC718380CF9D1081C111CFFF715
-:10046000C8FF011C381CFFF7B0FF80BC08BC184750
-:1004700090B5022382681A400027002A0FD00A4A4A
-:100480009369013393610A688B689A1800681C1895
-:1004900057810969101CFFF7ACFFC0436081381C0D
-:1004A00090BC08BC184700000C2B008090B50423BA
-:1004B00082681A400027002A11D04A6852090ED3D8
-:1004C000094A136A01331362CB6802689C1801233E
-:1004D0009B07083A1A43126800F02EF82082381C55
-:1004E00090BC08BC184700000C2B008090B58023FE
-:1004F00082681A400024002A15D04A68920912D353
-:100500000B4AD3690133D361CB6802689F1801237A
-:100510009B07083A1A43126800F00EF8002800D131
-:100520000448C046F880201C90BC08BC1847000056
-:100530000C2B0080FFFF0000B0B5141C051C0F1C25
-:100540003869B96841183868FFF753FFC0430104A0
-:10055000090C201CFFF739FF041CB86879694018A2
-:10056000696888420CD22A681218091A101C00F017
-:1005700005F9C0430104090C201CFFF726FF041CE9
-:10058000E0430004000CB0BC08BC184780B5071C51
-:10059000B86BC0081AD3B86AF96B4018796C00F0D0
-:1005A000EDF8C0430104090C0A4807D02023B969BB
-:1005B0001943B961016B0131016307E0FF23013386
-:1005C000B9691943B961416A01314162002080BCB7
-:1005D00008BC18470C2B008080B5071CB86B41097C
-:1005E0001CD3C0081AD3F81D3930007B062815D15A
-:1005F000381C00F053F8011C0A4807D04023B969A1
-:100600001943B961816B0131816307E001239B02CA
-:10061000B9691943B961C16A0131C162002080BC66
-:1006200008BC18470C2B0080B0B5071CB86B8109BB
-:100630002CD3C0082AD3F81D3930007B112825D1CE
-:10064000B86A396C401801239B07063018430068CC
-:1006500005042D0C0F4C11D0381C00F01FF8002899
-:100660000CD0A84202D10C4B984207D08023B86925
-:100670001843B861606B0130606307E001235B02DF
-:10068000B8691843B861A06A0130A0620020B0BC0C
-:1006900008BC18470C2B0080FFFF0000F0B5FFB02E
-:1006A00099B0041CE06B616C091803AA8518A36A51
-:1006B00000208A080132979207D082009F5803AE2B
-:1006C000B750979A01308242F7D8606A01239B079E
-:1006D000043018430068C046029002AF3F8803A868
-:1006E000FFF787FEC0430104090C381CFFF76DFEBD
-:1006F000071CE06BA16C4018616A01239B0708315D
-:1007000019430968C046019101A90988013188424D
-:100710000CD2A26A1218091A101C00F02FF8C0435C
-:100720000104090C381CFFF750FE071CA889E98951
-:100730000818298A0818698A0818697A09020818A5
-:10074000A16C626C891A0A04120C1102120A11437C
-:100750000904090C0918080C05D00804000C090C40
-:100760004118080CF9D1381CFFF72FFEC0430004D4
-:10077000000C7FB019B0F0BC08BC1847B0B4002220
-:1007800000292ED083079B0FDC0047180425EF1BA0
-:10079000BF07BF0FFF008008800059180331890888
-:1007A0004D1E02C8E140A1406B1E002D09D00C0473
-:1007B000240CA218090C8A1802C81C1C013B002C2E
-:1007C000F5D1B940081CF8400104090C8918000C47
-:1007D0004218100C05D01004000C110C4218100C1B
-:1007E000F9D11004000CB0BC7047000090B4002098
-:1007F0000127114942001218D20053189C680123A6
-:100800009B0723431B681B031B0B8A581203120B05
-:1008100093420CD101300428ECD30848C06A01038C
-:10082000090B0748006F0003000B814202D0381CFF
-:1008300090BC70470020FBE7A803008000401440F4
-:10084000680E008098B4144AC04600928300134892
-:10085000C05807033F0B1248C0580203120B11483F
-:10086000C0580003000B104CE45801239B0723439E
-:100870001B689B00CC000121984201D1081C09E0B3
-:10088000984203D9101ADA1B801800E0181A844223
-:10089000F4D3002098BC704755555555200400806E
-:1008A00028040080080400801804008080B4130429
-:1008B00000D0013A80000B1C13490F58C0463B6022
-:1008C0000B58C0465A600A580832104B1B589A42BF
-:1008D00001D30F4A12580F4B1F5801239B073B436C
-:1008E0001B689B0017033F0B9F4206D10A48C16853
-:1008F0000131C160012080BC7047084B1B58C046C5
-:100900001A600A500020F6E70804008028040080DE
-:100910002004008018040080A08220401004008081
-:10092000FF5F2DE948FEFFEB01B6A0E301B18BE2CA
-:10093000028AA0E3017AA0E301A9A0E30156A0E3A3
-:10094000C8609FE5C8909FE514409BE5000054E314
-:100950002C00000A030A14E31100000A0C0096E5BB
-:10096000000050E32100000A010A14E30500000A18
-:100970001C0096E5010AC0E31C0086E51C0085E525
-:10098000147085E5060000EA020A14E30400000A78
-:100990001C0096E5020AC0E31C0086E51C0085E504
-:1009A000148085E5010914E30400000A1C0096E5A3
-:1009B0000109C0E31C0086E51C0085E514A085E55F
-:1009C000020014E34000001B010014E35400001B6C
-:1009D000020B14E36700001B010B14E32000001B53
-:1009E000180099E5010080E2180089E5D5FFFFEACB
-:1009F0001C0096E5010AC0E31C0086E51C0085E5A5
-:100A0000147085E5E1FFFFEAFF5FBDE804F05EE2F8
-:100A1000680E00800883204010101FE5143091E517
-:100A20000020C3E1142081E50116A0E30C2081E53C
-:100A30000B12A0E3000081E518109FE5B024D1E17E
-:100A4000012082E2B024C1E13C2091E5000082E176
-:100A50003C0081E51EFF2FE1A0822040FFFFFFEA5E
-:100A6000FEFFFFEA010BA0E30116A0E3140081E5FD
-:100A7000001A81E1242091E570001FE500000000CC
-:100A8000242080E5281091E500000000281080E572
-:100A90002C2090E5012082E22C2080E53F0001E23D
-:100AA0003F0050E31EFF2F1118009FE5001090E556
-:100AB000011081E2001080E50218A0E30B02A0E320
-:100AC000001080E51EFF2FE1300400800106A0E346
-:100AD000010180E2001090E5010811E30B10A0E392
-:100AE000021981E20500001A002090E54228B0E1D9
-:100AF0000500001A000090E5020C10E30200000A55
-:100B00000607A0E34C1180E5030000EA0C009FE516
-:100B100000000000401080E5FFFFFFEAFEFFFFEA53
-:100B2000000000800106A0E3010180E2001090E5D2
-:100B3000010811E30C10A0E3021981E20500001A7C
-:100B4000002090E54228B0E10500001A000090E581
-:100B5000020C10E30200000A0607A0E34C1180E536
-:100B6000030000EA4C001FE500000000401080E593
-:100B7000FFFFFFEAFEFFFFEA021BA0E30106A0E37E
-:100B8000141080E51EFF2FE180211FE5143092E54F
-:100B900000000000003080E51C0092E5000000002D
-:100BA000000081E50010A0E3141082E50106A0E337
-:100BB0001C1082E50C1080E51C1092E5000000007E
-:100BC0001C1080E51EFF2FE1C0211FE50000000082
-:100BD0001C1082E50116A0E3140082E50C0081E5FB
-:100BE0001C0092E5000000001C0081E51EFF2FE1C3
-:100BF00080B50F1C381C00F017F8002802D0381CF4
-:100C000000F092F8002080BC08BC184780B50F1C8B
-:100C1000381C00F009F8002802D0381C00F084F8D5
-:100C2000002080BC08BC1847F0B407683A78D207A7
-:100C3000D20F0024002A03D0FF220132426000E0DC
-:100C400044603A7B7B7B1B021A43812A08D1012333
-:100C50005B0242681A4342600422BF18826000E0CF
-:100C600084603A7B7B7B1B021A43082A06D1062349
-:100C700041681943416081680E313CE0C123DB00CB
-:100C80009A4203D14168244B19433EE0234B9A42D8
-:100C900004D101231B034168194336E01302120AF1
-:100CA0001206120E1A431204120C2E3A1C4B9A42D0
-:100CB0002DD80125426815434560BA7BFB7B1B029A
-:100CC0001A43184B9A4222D1FB1D093344CB9B0790
-:100CD000DB0EDA405B4220339E401643032E18D1D0
-:100CE000397D7B7D1B021943082907D10421294343
-:100CF000416081681631816001210AE0C123DB0077
-:100D0000994204D1012189032943416000E08460B4
-:100D10000021081CF0BC70470240000081800000E8
-:100D2000AE050000AAAA000080B44268D1083FD3F3
-:100D300001688368591802398F783F073F0F052FE4
-:100D400003D1DA1D0D32C26005E0BF00DB19C360BC
-:100D500008231A4342608A781207120F9200026138
-:100D60000A794B791B021A431302120A1206120E59
-:100D70001A431204120C4261CA7A062A03D11023C4
-:100D800042681A4310E0112A03D1202342681A4313
-:100D90000AE0332A03D1402342681A4304E0322A8E
-:100DA00003D1802342681A434260C97AC046017663
-:100DB00080BC70470A78C04602604B781B021A4319
-:100DC00002608B781B041A430260C978090611433C
-:100DD0000160704780B5071C4868800926D3B86A4F
-:100DE000C968401801239B070230184300680004BB
-:100DF000000C11239B02984218D1786A396BC046C7
-:100E00004862386B02F0DAF8381C01F095FD0120D9
-:100E10000749C046C87307494A6C12184A64064914
-:100E20008A6D12188A6580BC08BC18470020FAE752
-:100E3000181A00800C2B0080A42A0080810719D08A
-:100E40008008800001239B07011D18430068194397
-:100E500009680202120E1206000AFF231B04184042
-:100E600010430A0A1206120E104309021B0A194007
-:100E70000843704701239B071843006801060202DC
-:100E8000FF231B041A401143020A1B0A1A40114394
-:100E9000000E0843EDE70000F0B50423816B194014
-:100EA0000022002946D0C71D3937397B332901D0AC
-:100EB00032293FD1016BC0464A65C41D2D34CD1D7A
-:100EC0002D3500229300E658C046EE500132072A25
-:100ED000F8D3826AC0464A63826AC0468A627A8BC5
-:100EE000CB1D39335A83406AC046486212480127F5
-:100EF0004268002A10D1C268002A13D14269002A30
-:100F00000DD10161C160016A022902D3203007714D
-:100F10000CE000F013F809E0C268002A02D1016178
-:100F2000C16003E00269C04651650161381CF0BC34
-:100F300008BC1847101CFAE76C06008080B51E49F3
-:100F40000022CB68002B34D0C81DF9308362CB68F7
-:100F50009B6AC046C362CF697B00DF197F02174BD3
-:100F6000FF18FF37653783630763CB1DFF335A33A1
-:100F70001A72CB69002B01D0CA6101E00123CB6159
-:100F80000F1CC968496A098901314163F81DFF30A6
-:100F90003A30426002828260C260381C00F0CEFAB1
-:100FA000386A01303862381C00F00AF880BC08BC8E
-:100FB0001847101CFAE700006C060080ACAB20401C
-:100FC000F0B5071CF91DF931886AC21D2D320123C5
-:100FD0009B0708321A43C86A12681204120C801860
-:100FE0008279C3791B021A431302120A1206120EE7
-:100FF0001A431204120C02389204920C0026254D5A
-:10100000EC1DFF343A34002A04D0208A01239B02CD
-:1010100018432BE001239B07C21D0D321A431268AF
-:1010200012041230184300680004000C1043031C23
-:10103000F81DFF304A308278C86B191C02F002F8A4
-:10104000002804DA208AFF23013318430EE0F91D3B
-:10105000FF313A3108600104090C381C00F01CF81B
-:10106000002814D1208A01235B0218432082218AA0
-:10107000381C00F0A2FBE86801239B07543018439A
-:101080000068C046E860301CF0BC08BC184701206E
-:10109000FAE700006C060080F8B5071CFC1DF93467
-:1010A000A06BA66AC51D0D353848C06A4B0059189B
-:1010B0004901421801208007104300680004000C19
-:1010C000009001239B07D01D053018430068381C91
-:1010D000291C00F0C2FAA888410701D0002051E085
-:1010E00029890918606B8142F8D86989EA888918CA
-:1010F0008142F3D80098012825D1E06AF16B4018AD
-:10110000716CFA1DCD3201F033F9FA1DFF323A321B
-:10111000E06A51694018C31D0333002081005E5806
-:10112000C919FF3101314E6101300428F6D3E06A5C
-:1011300051694018C11D0531002000224300CA52E8
-:1011400001300628FAD3291C114A0020FFF7AEFB14
-:1011500001225204606B02430120216BFFF7A6FBC2
-:1011600001225204606B02430020E16AFFF79EFBFC
-:10117000A16B084A0120FFF799FB03200649C046EE
-:1011800048620120F8BC08BC184700004C2A0080C7
-:101190005400030014000F006C070080F0B58DB000
-:1011A0000020B54AD51DF935686201200005B34914
-:1011B000C0460860A86AC41D2D34B148C06AD71D56
-:1011C000FF373A3739684B00591849014018012355
-:1011D0009B07C11D05311943096808301843006891
-:1011E000C0460990FF231B021840000A0A900A9883
-:1011F000A44E012859D1286BA2688018A24A2169FF
-:101200000904090C01F026F9286B79694018C11D01
-:10121000053100208200984BD318FF3301335B69FE
-:10122000C0468B5001300428F4D30020311C8200CA
-:10123000561801239B0733431B6804AEB35001309B
-:101240000328F4D300200890904942008B5AB25AE8
-:10125000934213D08E48C1890131C181B8680028FA
-:1012600003D1388A1023184371E0388A4023184389
-:101270006DE000F011F901F067FFF5E0013006289C
-:10128000E3D3089800280CD1B868411CB960002845
-:1012900003D1388A0123184302E0388A0423184313
-:1012A000388278680130786062E00A9802285FD15D
-:1012B0000998400C73D301239B07E01D01301843AC
-:1012C0000068E11D0D311943096840180C3800040D
-:1012D000000C00218A006B4BD61801239B07334377
-:1012E0001B6804AEB35001310329F3D30021831EE0
-:1012F0000C93684A166BC0460B968A000C9B9B1891
-:101300000B9E9E1901239B0733431B686E46B35007
-:1013100001310429F1D369468B1C07930021089100
-:1013200004AE4A00079B9B5AB25A934211D05848C8
-:10133000C1890131C181F868411CF960002803D1DD
-:10134000388A2023184302E0388A802318433882E1
-:101350008FE701310629E4D3089900290DD1F968F6
-:101360004A1CFA60002904D1398A0223194303E098
-:101370000CE0398A082319433982296B08180123A4
-:101380009B07013818430068C046207601239B075D
-:10139000E01D1130184300680106090E00E019E055
-:1013A00035482A6BC046EA6204294FD10121C61D87
-:1013B000FF365A3631720A9902291ED10999090E4F
-:1013C00049061AD1E11D0531194309680906090EBC
-:1013D00008391AE001239B07E01D0130184300681B
-:1013E000E11D0D311943096840180004000CF9682B
-:1013F0004A1CFA600029BCD1B6E701239B07E11D16
-:101400000531194309680906090EA160E86AC0465A
-:101410002060201CFFF788FC207E332801D0322872
-:1014200011D10121144CC046F960B960201C00F0B4
-:1014300085F8286BA96AC0468862201CFFF7C0FDAA
-:10144000002811D10EE00020307211E0332901D0C4
-:1014500032290DD1071C00F071F8381CFFF7B0FDE0
-:10146000002801D101F070FE0DB0F0BC08BC184797
-:1014700000F012F8F6E700006C060080000000B0F3
-:101480004C2A0080ACAB20404007008082070080DF
-:101490000C2B00806C070080F0B5254841680131B5
-:1014A0004160244FF91DF9310024886AFA68C0466A
-:1014B00094610422FB68C046DA601022FB68C046D3
-:1014C0009A61FA1DFF325A32137A1B4A002B0BD055
-:1014D000158A2E0A360233232B409B001E43CC2351
-:1014E0002B409B0833431382128AFB68C046DA8381
-:1014F0004A6BFB68C046DA810A6BC0468262C462EE
-:10150000C31D39334A6BC0465A83042302681A4309
-:101510000260886A01F032FAF86801239B075430B0
-:1015200018430068C046F860F0BC08BC18470000CB
-:101530000C2B00806C060080AC07008080B5C11DBC
-:10154000F9318A6A01239B07D11D45311943096886
-:101550000B061B0E0127C11DFF314A31332B05D16C
-:101560008B70011C101C00F00FF806E0322B08D124
-:101570008B70011C101C00F03CF8381C80BC08BCAF
-:10158000184700208870F9E790B4CA1DF932332754
-:10159000CC1DFF344A34D36AC046A770FF314131B5
-:1015A000076CC0464F61FB18391C9F1E01239B0727
-:1015B000FC1C23431B681B061B0E9B001B041B0CFF
-:1015C000C9180831016401239B07B91C1943096834
-:1015D00034300176F81D0130184300680004B91D4D
-:1015E0001943D06309680904090C0843D06390BC0F
-:1015F0007047B0B5CA1DF932C51D2D353220CF1D3B
-:10160000FF374A37D36AC046B870CC1DFF343A342E
-:10161000E868C04660611030E8606069C018871EE5
-:1016200001239B07381D184300680004B91C1943A7
-:10163000D06309680904090C0843D063F81D03301E
-:10164000FFF7FCFB2062F81D0730FFF7F7FB606235
-:1016500000202876B0BC08BC1847F7B581B00198C7
-:10166000C71DF937B86A01239B07D41D05342343EE
-:101670001C68FF23FE3323407F6B3F043B430B601A
-:1016800034301C1C80232340019FFF374137002B3F
-:101690003CD00C23009300239D00AE1836696D18D2
-:1016A0006E610133052BF7D300239D00AE18766AD7
-:1016B0006D18AE620133052BF7D3019BFF33513315
-:1016C0009B78332B0ED101239B07C51D01352B437E
-:1016D0001B68C0464B8101239B07C51D0D352B435D
-:1016E0001B6816E07B69C0464B8101239B07C51D23
-:1016F0000D352B431B687D695D1B01239B07C61DB0
-:10170000013633431B68EB180C3B02E000230093C7
-:101710004B81CB80630949D301239B07C41D05344A
-:1017200023431B68C0460B8101239B07C41D0D3456
-:1017300023431B680C891B1B009C1C1B01239B075C
-:1017400008301843006820188880386A040EFF2388
-:101750001B0403401B0A1C43FF231B0203401B0204
-:10176000234300061843C860786A070EFF231B0452
-:1017700003401B0A1F43FF231B0203401B023B4382
-:10178000000618430861D06BC046C863906BC04622
-:101790000864506CC0464864106CC0468864D06CC5
-:1017A000C046C864906CC046086502E000230B8107
-:1017B0008B8004B0F0BC08BC184700B50F4A938971
-:1017C00001339381C21DF9320423906AC046C3607D
-:1017D00010238361CB0A01D318238361C183516B2A
-:1017E000C046C181516BC21D393251830423016847
-:1017F0001943016001F0C2F808BC18470C2B0080A7
-:10180000B0B51B4C206A02281BD20020E71D1937F7
-:101810003871E168E01DF930002915D0426A002ACC
-:1018200012D101250AE0FFF789FB002809D1206ABF
-:10183000022800D33D71E068002802D038790028E2
-:10184000F1D0B0BC08BC1847406A0028F9D1002983
-:10185000F7D16069002804D00648006803F0A8FCAE
-:10186000EFE760680028ECD000F05AF8E9E70000E4
-:101870006C06008034040080B0B5071C2023B868D3
-:1018800018400124002500280BD1386A002803D114
-:10189000281CB0BC08BC18471F48016E0131016606
-:1018A00003E04868C423184003D1386A00F00CFCF8
-:1018B0002FE0381C00F01CFC381C00F07BFAB868E4
-:1018C000C00802D3386A00F0D1FBB868396AC04654
-:1018D0008860386AC046C56010484168002911D147
-:1018E000C168002909D14169002906D1396AC04679
-:1018F0008160416000F014F80BE0396AC0468160F5
-:10190000416006E0396A8268C046D160396AC046E3
-:101910008160201CBDE70000A42A00806C060080C6
-:1019200090B50B4C6768002F0FD0381C00F012F8F0
-:1019300000280AD16068C068C0466060381C00F0AA
-:10194000C3FB002090BC08BC18470120FAE7000048
-:101950006C060080F0B5071CFE1D4936307840004B
-:10196000C019858B334C344B9D423CD0381C211C14
-:101970002A1C00F01DF93148806A5821694340183B
-:1019800001239B07184300680004000C2C4D01281C
-:101990001AD13078C019C11D1931087A3A688018F7
-:1019A000097BEA1D213200F0E3FC3078C0192030B9
-:1019B000007939684018C11D05310020002342001C
-:1019C0008B5201300628FAD3A08841070BD1218918
-:1019D000091878680004000C814204D86189E28803
-:1019E0008918814203D90020F0BC08BC1847211C8B
-:1019F000144A0020FEF75AFF01225204786802437D
-:101A000001203968FEF752FF012252047868024330
-:101A100000203968FEF74AFF0B490C4A0120FEF707
-:101A200045FF0120E91D193148710221EA1DF932F3
-:101A30005162D9E728AC2040FFFF00004C2A00800B
-:101A40006C0600805400030014AC20401400070012
-:101A5000F0B583B000214F48C21DF9325162012117
-:101A6000C9044D4AC0461160C11D19314979002988
-:101A700004D14A48006803F09BFB87E0454847686B
-:101A8000FC1D493421784800C019808B444A926A71
-:101A900058235843151801239B07EA1D05321A43A2
-:101AA000126808352B431D68FF231B022B401B0ABD
-:101AB0003C4D012B24D1C819C11D1931087A3A684F
-:101AC0008018394A097B00F0C5FC2078C019203005
-:101AD0000079396841180020820053199B6E6E46C8
-:101AE000B35001300328F7D3CA1D053269460020E0
-:101AF0004300CD5AC046D55201300628F8D32DE018
-:101B0000022B2BD1110A29D300218A0053199B6E75
-:101B10006E46B35001310329F7D321784900C91922
-:101B2000098F3A688B186A4600214D00565BC04603
-:101B30005E5301310629F8D319498A6A13181A6DC0
-:101B4000009D5540194AD66875401D65896A081878
-:101B5000416D029B59409269514041652078411E78
-:101B6000217000280DD0381CFFF7F4FE00280DD19D
-:101B7000084A5068C068C0465060381C00F0A4FA9B
-:101B800002E0381C00F073FA01F0DEFA03B0F0BC9A
-:101B900008BC18476C060080000000B038040080C4
-:101BA0004C2A0080ACAB2040940600800883204083
-:101BB000F0B582B0694B9F6A58235A43BA18C31DC7
-:101BC00049331F7801239B07D41D013423431D682B
-:101BD00043681C0401239B07D61D053633431B684D
-:101BE0001C4342231C430C60FF2636022E40012377
-:101BF0005B029E4274D16B0C2BD3C31920331B792B
-:101C0000C0464B817B001B181B8F4C891B1BCB8054
-:101C10000024A6000196B318DE1D093601239B0798
-:101C200033431B68019E761873610134052CF0D391
-:101C30000024A6000096B318DE1D1D3601239B0765
-:101C400033431B68009E7618B3620134052CF0D331
-:101C500006E000234B81CB8040239C430C60231C77
-:101C60006B0E4AD3C31920331B7910330B817B00D1
-:101C70001B181B8F0F89DB1B8B8001239B07D41D37
-:101C8000353423431B68C046CB6301239B07D41D17
-:101C9000313423431B68C0460B64AB0E21D20123B1
-:101CA0009B07D41D3D3423431B68C0464B6401236E
-:101CB0009B07D41D393423431B68C0468B64012322
-:101CC0009B07D41D453423431B68C046CB640123C6
-:101CD0009B07D41D413423431B68C0460B6500E0BD
-:101CE0000FE0FB1F013B1B041B0C0768FF18036977
-:101CF000081C391C00F034F82CE000230B818B8089
-:101D000028E000238B800B81C31920331B7AC04647
-:101D10004B817B001818008EC046C88000208700C9
-:101D2000BB18DC1D093401239B0723431B687F1864
-:101D30007B6101300528F2D300208700BB18DC1D31
-:101D40001D3401239B0723431B687F18BB620130AE
-:101D50000528F2D302B0F0BC08BC18474C2A00801A
-:101D600080B41F1C3B0C18D2176D114BC046DF60AE
-:101D7000526DC0461A61C7601A69C0460261D868D0
-:101D8000C0460880D868000C48801869C046888022
-:101D90001869000CC88080BC70474A8812040B8800
-:101DA0001A43C2608A88C988090411430161F2E7B5
-:101DB0002C070080F1B588B000220898006A089BC3
-:101DC0009968490A02D30127FF0300E00027038B2B
-:101DD000002B19D0A349896A1C1C58236343C918D6
-:101DE00001239B075839194309680904090C022982
-:101DF00002D108231F4307E0418B002902D00C23A6
-:101E00001F4301E004231F43838A002B18D0954908
-:101E1000896A1C1C58236343C91801239B0758393E
-:101E2000194309680904090C022901D10F4307E08D
-:101E3000C18A002902D003231F4301E001231F436D
-:101E4000C11D393107914B890C891C192404240CBC
-:101E5000089D2D68C0460195C9887D081AD31A1CB3
-:101E6000C31D19331A72079A9289C0461A73079ACA
-:101E70001289C04602860487828A013A828301223F
-:101E80001971089B1B685B185B789B001B041B0C7B
-:101E900008335918BB0847D3079B5B8985180695FB
-:101EA00020352B72079B9B89C0462B73079B1B8990
-:101EB0002E1C55002D1805952B86002A01D0C38AAB
-:101EC00000E0838A013B059DC046AB833171654BC1
-:101ED0009D6A059B9E8B58237343EB18DD1D0135CE
-:101EE00001239B072B431D682B0E5B0601D1083194
-:101EF00000E0103181235B021D409D4203D1E31FAE
-:101F0000053B1C04240C059BC0461C87089B1B68D2
-:101F10001B19103B9B7B069D40352B702B780233A1
-:101F2000E31A1C04240C0132BB089B076DD08318F4
-:101F3000203304931972019B5D1801239B072B43E7
-:101F40001B681B071B0F9B00049EC0463373009544
-:101F50002B781B071B0F9B00049DC0462B73009D15
-:101F6000EB78AD781B021D432B022D0A2D062D0E9A
-:101F70002B4355002D182B86049BC0465972049B99
-:101F80001B7B2E1C049DC0466B73338EC04673862C
-:101F9000009D2B781B071B0F9B001B041B0C591863
-:101FA00004253D400ED03487038B013BB383131CC3
-:101FB0001B1820331971019B5B185B789B00591823
-:101FC000083101323B0937D3002D01D0438B00E0AB
-:101FD000038B55002D18013BAB83831803932033EB
-:101FE0001971204B9D6A53001B1802939E8B582336
-:101FF0007343EB18DD1D013501239B072B431D683F
-:102000002B0E5B0602D1083101E015E0103181236F
-:102010005B021D409D4203D1E31F053B1C04240CC1
-:10202000029BC0461C87089B1B681B19103B9B7BAF
-:10203000039C403423700132079BC046D980511E57
-:10204000C31D493319700761042A06D2064953009B
-:102050001B1899830132042AF9D309B0F0BC08BCDB
-:10206000184700004C2A0080FFFF0000704780B531
-:102070008CB0071C12480168013101603868C04605
-:1020800000907868C0460190B868C04602900D483C
-:102090004168C968C0464160381C00F04FF8B86814
-:1020A000400906D31023029818430290684602F0B4
-:1020B000E1FF684602F09AFE0CB080BC08BC1847ED
-:1020C0000C2B00806C06008000B58CB00168C04607
-:1020D00000914168054B1943019100F02FF86846C3
-:1020E00002F084FE0CB008BC18470000000000A0FD
-:1020F000026A0368C04613604068C04650604032C0
-:102100004868C0469080C868C046D0804869C046CC
-:1021100010818868C0465081087EC0469073086967
-:10212000C0469081704704490868002800D1704774
-:10213000C268C0460A60FAE76C06008002490A6875
-:10214000C046C260086070476C060080B0B40022D0
-:10215000124F7C7F01347C770323FC1D19343862D5
-:10216000796223720E4C25686B0C05D223681B0C18
-:1021700010D12468A30A0DD301230A4FC046FB6285
-:10218000094F0A4BC046DF6099605860101C186008
-:102190000132FBE7101C38640132FBE700000080CD
-:1021A00000001040C000180002810000400118002B
-:1021B000F0B5474F3868474E474D07235B02EC1890
-:1021C00000281DD1206B013020634449C0460860BF
-:1021D00043484169002913D0C11D6931097B002999
-:1021E0000ED001239B07016D19430968C046816128
-:1021F000C269914204D0F16C0131F16401F050FEEA
-:102200003868012817D137484169002913D0C11D0A
-:102210006931097B00290ED001239B07016D194309
-:102220000968C0468161C269914204D0F16C0131F4
-:10223000F16401F035FE386802282FD1BB231B0161
-:10224000EE18707B002803D00020707300F04AFD68
-:10225000307B002802D0786802F0AAFF1B23DB0144
-:10226000E818C08B04260640E06AB04214D0F86833
-:102270000130F860192811D31B48017B00290DD1CA
-:10228000FF3041304078002808D1B86802F090FF54
-:102290000020F860E66201E00020F860386803285A
-:1022A0000BD1EC1D7934E06B800802D3022002F0E0
-:1022B00007FC0223E06B9843E06338680130386024
-:1022C000032801D900203860F0BC08BC1847000082
-:1022D0003C040080A0822040680E0080400118006D
-:1022E000642D0080E42C008028050080B0B41D48D7
-:1022F000848A1D4A138AC11D093101279C4203D1DA
-:10230000438A548AA34210D00B78002B0DD04B780F
-:10231000002B0AD0448B938A9C4204DC134BC046AA
-:102320005F60978201E001339382C38B5C1CC4839E
-:10233000848BA3420EDB848A058B0023AC4205DA32
-:10234000448AC58AAC4201DA4B7000E04F70438288
-:102350008382C383418AC0465182808AC0461082EC
-:10236000B0BC7047E80E00803C04008040011800BB
-:10237000F7B591B06B46841E129914291AD9002022
-:1023800081006758C046575001300006000E1028E3
-:10239000F6D3002105208700D6594F1C3D062D0E8F
-:1023A0000F1CBF00DE51291C01300006000E102852
-:1023B000F1D309E0002081006358C046535001303A
-:1023C0000006000E0628F6D30020E070207260722E
-:1023D000A072207360731299142937D969468E1C34
-:1023E00091780907090F890014390D062D16002769
-:1023F000002D1BDDF01910A900F03DF800280ED0CB
-:10240000002010A90978002909DD0022391872542A
-:1024100001300006000E10A909788842F6DB10A8EA
-:102420000078381807063F0EAF42E3DB6846E21D2E
-:102430000D320021AB085F1C08D08B00C458C04689
-:10244000D45001310906090E8F42F6D814B0F0BC01
-:1024500008BC184790B4871E002089084B1C08D080
-:1024600081005458C0467C5001300006000E834263
-:10247000F6D890BC704780B40278D206D20E002302
-:102480000127012A01DC0F7011E04078C046087076
-:10249000142A04D10848017A0131017207E0022AA6
-:1024A00005D0052A03D0062A01D0152A02D1181C0E
-:1024B00080BC7047381CFBE7E082204000B50F4825
-:1024C00001231B06416999431A094161D16000212A
-:1024D000A12252039161191C094AC04611601B23B5
-:1024E000DB01C0188069002803D002F061FE08BC3F
-:1024F00018470448418801314180F8E7680E0080A0
-:10250000000000B0E082204070470000F0B586B0C7
-:10251000954AD068D71D7937012809D13889002814
-:1025200006D1D06F022301689943016014203881DD
-:102530008E4C616A8E48C36B5918C163A06A192317
-:10254000DB01D418A062216A0903090B814205D17D
-:10255000012040048749C0460860F3E0BB8A581C4C
-:10256000B8823D8B01200021AB4204DBD31D8933AF
-:102570005870B982F98333239B01D31805935B69A3
-:102580000F2B73D200217C4FC0463961216A8A68C3
-:102590001204120C4B681E0C3604FD1F093D002E60
-:1025A00005D13B2A03D30123DB029A4201D9A87348
-:1025B000C8E001239B07083119430968C04603910D
-:1025C00003A9098801310904090C798249090531F7
-:1025D0000906090E694EC04602966948436AC0461C
-:1025E0000193836AC0460093C21D113280690003C3
-:1025F000000B9268B3071A431268904201D1012080
-:102600000DE0904205D9009B181A019BD21A82183E
-:1026100000E0121A01200901914200D30020012894
-:1026200065D151492069002862D005994869013077
-:1026300048610220216AC046086000F0A7FC786368
-:10264000BE604949226AA36BD318666BB34200D9B6
-:10265000226BC046BA62BA6A0C32FA620022FA6190
-:1026600003AA5288D20903D3012200E07BE000E0F4
-:1026700000227A607A68C0460260788A414E6028FB
-:1026800004DCB083788AC046F08308E06020B08321
-:10269000798AF86A4218636B9A4203D8F183002260
-:1026A0003A6305E0216BC0463963616B081AF08319
-:1026B0002D49786B4268C046BA608268C046FA60AD
-:1026C0000269C0467A614069C046B8612E4BC8189D
-:1026D000049000F037F9049800F088F800F0F6FA5A
-:1026E000788AF18B884204D1F96A081804E038E04E
-:1026F00032E03A6B1018401A810702D0800880003F
-:102700000430616B091AA26B914200D2206BC04663
-:102710002062E87B002808D00022EA730599486906
-:1027200001384861786B00F073FA1848806A8006B7
-:10273000800E01280AD1206A0003000B0B4CA16A0D
-:10274000884203D006B0F0BC08BC18470120400402
-:102750000849C046086006E0E068002801D000F0A3
-:10276000B5FA0120A873EDE7680E00800040144020
-:10277000A42A0080000000B0281A00805555555545
-:10278000A8030080681A0080C40B000000001040FD
-:1027900080B5071C786A4089FF210131014010484B
-:1027A00002D1816C01318164796A4989490B02D275
-:1027B000416C013141640B48416A01314162786AE0
-:1027C000396BC0464862386B00F0F8FB381C00F0EB
-:1027D000B3F801200449C046C87380BC08BC184740
-:1027E000A42A0080A0822040181A0080F8B5071C97
-:1027F0000022F91D61310D1C786AC04600904089A5
-:10280000030C01D2400A03D2381CFFF7C1FF67E076
-:102810003548C06B00091FD3087840081CD200203F
-:102820004300CC5A314E9E1933239B01F3181B8869
-:102830009C420ED0B869396BC0468861F868396B24
-:10284000C046C860381C00F027F9381C00F074F846
-:1028500046E001300328E3DB022043005C18E488F3
-:10286000224E9E1933239B01F3181B889C4203D1EF
-:1028700001230138D842F0DC0123D842C4D01B4EDA
-:102880000B231B02F0184069002824D07D630098B8
-:102890004089000C1FD200242D239B01F018C06B2F
-:1028A000351C002817D0FE1D2D36A20052192D23ED
-:1028B0009B01D218D26B381C311C02F07BFC012822
-:1028C0000ED00134A00040192D239B01C018C06B0D
-:1028D0000028EAD101E0012A02D0381C00F008F8F3
-:1028E000F8BC08BC18470000E81A0080680E008099
-:1028F00080B5071CB869396BC0468861F868396BC8
-:10290000C046C860786A4089010C0ED2400A0CD3D8
-:102910003868400802D3381C02F00CFC381C00F068
-:10292000BBF8381C00F008F802E0381CFFF730FF55
-:10293000012080BC08BC18470121006B406AC046DA
-:1029400001607047B0B4C11D3931098B8908090491
-:10295000090C846AC21D6132002000290CDD870049
-:102960003D1901239B072B431B68C046D3510130FF
-:102970000004000C8842F2DBB0BC7047F0B5A0B098
-:1029800001239B07C11D213119430968C0460B91E2
-:10299000C11D533119431F91096801AFFA1D393226
-:1029A0001E9217AB59803A4901239B070A6A1343C9
-:1029B000CC1D113489690903090B2269E568C046F9
-:1029C0001D95FC1D3934648B640905342406240EDE
-:1029D0001C94561A1B961C9C2E4AC0460092012637
-:1029E0001D9D1A68914201D1321C0BE0914203D91E
-:1029F000521B1B9EB51800E0551A01222401AC425F
-:102A000000D30022012AE6D1910701430968C0469C
-:102A100039609307011D19430968C0467960C11DDB
-:102A2000013119430968C046B9601F9909681E9AA7
-:102A3000C0465183C11D1D3119430968C046386322
-:102A40007962C11D113119430968C046B961C11DC0
-:102A5000053119430968C046F960C11D1731194392
-:102A60000968C046F9830E3018430068C046F881F3
-:102A70003868400802D3381C02F05CFB381C00F0B8
-:102A80000BF8381CFFF758FF20B0F0BC08BC184703
-:102A9000A803008055555555F8B5071CF81D393069
-:102AA000418B394A914200DD4283428BC0460092FD
-:102AB00001203A1D06CABB6A02F00EFF334AC04627
-:102AC0000092334E306A334CE16D4118386BC31DB0
-:102AD00005330120726A02F0FBFEE06D183000251C
-:102AE000B16A814201D8E56500E0E0652F239B01D2
-:102AF000201CE16DE41822689200274BC0469950D3
-:102B00002648C16B4A0805D349084900C163012022
-:102B100001F0D6FF224A1F48C11D89310B78002BD6
-:102B200002D04978002900D11E4AC0460092206890
-:102B30008000194BC31805CEC11D1131012002F0D0
-:102B4000C7FE1448216801312160172900D3256090
-:102B5000396BC0460D65796A3A6BC04651623323C2
-:102B60009B01C0188168002903D1396BC046816080
-:102B700004E0396BC268C0461165396BC046C1605C
-:102B8000F8BC08BC18470000EA0500001800140251
-:102B90007C290080680E008044822040E80E00807E
-:102BA0000400000204000003F0B5114EFF250135BA
-:102BB000104FC0463560786901387861BC68002CD8
-:102BC00010D0206DC046B860201C00F021F8201CF9
-:102BD00000F004FA0848806A000C0007E9D1F0BC54
-:102BE00008BC18470548C1790131C171F7E70000F9
-:102BF000000000B0281B008000001040A082204090
-:102C0000012080030149C04608607047000000B001
-:102C100090B5071C3868C00809D31D48016A0139FE
-:102C2000016220300079002801D0FEF7E9FD012380
-:102C30009B07F81D1D3018430068164C616A8142DD
-:102C400021D1011C194309680904090C01291AD171
-:102C500000F022F86062606A216A884205D0012192
-:102C60008907014309680904F2D051218903626A86
-:102C7000236B9A4202D1606BA26B801A0438C86041
-:102C800090BC08BC18470020796AC0460860F7E786
-:102C90006C060080E81A008001239B07C11D0131EA
-:102CA000194309680904090C08180D30810702D07E
-:102CB00080088000043004498A6B12184B6B9A42DA
-:102CC00000D9086B70470000E81A008000B504487E
-:102CD000C068102801D300F005F808BC18470000B0
-:102CE000E81A008088B50C4F3879002811D10B49BB
-:102CF000102002F0F5FD00280BD001203871084AA1
-:102D0000C046009207484268074B0168002002F065
-:102D1000DFFD88BC08BC1847F81A0080F52CFFFFBF
-:102D2000100035027C2900804480204090B50120AD
-:102D300040021049C04608600F4F1021F81D3D3079
-:102D400002F04CFC1923DB01FC18E068002801D0DC
-:102D500000F014F80020C9231B01F9180871E0687D
-:102D6000102804D30120BB231B01F918487390BC21
-:102D700008BC1847000000B0680E0080F8B537485E
-:102D80001923DB01C118C968354D102900D910215C
-:102D900069623248C16C006E814207D9081A07097E
-:102DA0000024686AB84212D2071C10E081422AD27D
-:102DB0002C4A526B101A0709686AB84205D90C09E7
-:102DC0003919884203D2C41B01E00024071C3E19B4
-:102DD0003001254902F084FD00283DD02348002C15
-:102DE0001AD11E493A016F62096E8C181D4D6B6B2A
-:102DF000A34200D8E41A1E4B1A430092EA6A511803
-:102E00002A6B031C20E01B48016B01310163002089
-:102E10006862F8BC08BC1847104924013F01112220
-:102E200052053A436E6200920E4DEA6A096E5118DD
-:102E3000031C061C00202A6B02F04AFD0C4A2243A8
-:102E40000092BB19E96A2A6B002002F041FD034899
-:102E5000C046046600F010F80120DAE7680E008032
-:102E6000281B00807C2900805D2EFFFF44802040CD
-:102E700000003602A08220400448016E044A8030DF
-:102E8000D1600223C16B1943C1637047680E008093
-:102E900090EE2040F0B584B0012080021C49C0466D
-:102EA000086000271B4E33239B01F518686A002831
-:102EB0001DD9194C6846102102F090FB684600F0BD
-:102EC00033F8002804D015494869013048610AE008
-:102ED0001349607B01306073887901308871114833
-:102EE000006802F065F9686A0137B842E2D8BB238E
-:102EF0001B01F018817B002903D000218173FFF7AB
-:102F000005FBFFF7E3FE04B0F0BC08BC1847000067
-:102F1000000000B0680E0080B0822040088320408E
-:102F2000A08220405804008090B4174F1923DB0181
-:102F3000F9180022CB68002B23D0013BCB60332350
-:102F40009B01FF18BB691C6DC046BC610468C0468C
-:102F50005C604468C0469C608468C0461C61C06870
-:102F6000C04658611A650869421C0A61002803D0EE
-:102F7000386AC046036500E0FB613B62181C90BCE8
-:102F80007047101CFBE70000680E00800A4A3323DC
-:102F90009B01D118C8691923DB01D2181369002BD2
-:102FA00006D0013B1361CA69126DC046CA61704701
-:102FB00000211161FBE70000680E0080064A1169DC
-:102FC0004B1C13614032002901D0D16900E000217F
-:102FD0000165D06170470000E81A0080064AD16898
-:102FE0004B1CD3604032002901D0916900E00021E0
-:102FF0000165906170470000E81A008090B40021DC
-:103000000F4A9789926A4B001B189B8A002B12D09B
-:10301000BB4210DC1C1C58236343D318DC1F493C03
-:1030200001239B0723431B681B061B0E032B02D0A7
-:10303000002090BC704701310429E4D30120F8E757
-:103040004C2A0080F7B586B03D4A071CD1698F40F5
-:10305000031C146AE3405F40079E8E407740CF40D8
-:103060009469C0460594031CA34000251469C0461A
-:103070000494002C5DD91C1C324E26439469E64012
-:10308000331C0396536AC0460293D26AC04601922B
-:10309000BB00029AD258131C059CE340039CA34238
-:1030A0003ED18A40CA40141C63001B195B01019A7F
-:1030B000D21801239B07D61D013633431B681B061C
-:1030C0001B0E032B2CD101239B07D61D51363343F6
-:1030D0001B68079E1E40009601239B07D61D49369C
-:1030E00033431B6883421BD101239B07D61D4D36FA
-:1030F00033431B68009EB34212D101239B071A433E
-:1031000012681204120C089B322B04D1022A07D138
-:10311000200400140FE0089B332B01D1012AF7D0C3
-:10312000049A0137974200D30027049A0135AA4236
-:10313000AED80020C04309B0F0BC08BC184700005E
-:103140004C2A008000000080F0B5274D68690028F7
-:1031500006D02648006802F02BF8F0BC08BC1847DF
-:10316000234C0026A068234F002816D00FE0286AC1
-:10317000022802D3012038710FE0A660FDF7DEFEC1
-:103180000028EAD1286A022801D301203871E868B2
-:10319000002802D038790028E9D0686800281BD0C0
-:1031A0000120A060FEF7BCFB0028D6D1686800288B
-:1031B000F6D111E00028D0D1286A022802D30120DC
-:1031C0003871CAE7A660FDF7B9FE0028C5D1286AA4
-:1031D000022801D301203871E8680028BDD0387971
-:1031E0000028E7D0B9E700006C0600805C0400808E
-:1031F0004C2A00808C060080704700007047000059
-:103200007047000090B540201D49C046086001F09D
-:103210009DFC03231B07416819400C0F6101091B2A
-:103220008900184A8F1801213980816AC046796562
-:10323000416AC0467967B96CFA6C8918B964002193
-:10324000F964BA6B3B6DD218BA633965426A2032B1
-:103250005171796D7A6FD26DC0461160FCF7CAFF6B
-:103260002001094940181923DB01C018416B0139BD
-:103270004163786F01F0C6FB90BC08BC18470000A2
-:10328000000000B05C2B0080A01C0080F0B5402046
-:103290001249C046086001F059FC071C406803232E
-:1032A0001B071840060F7001801B80000C49441852
-:1032B000B86AC0466065786AC0466067806F051D61
-:1032C000E563B969281C02F089F9381C211C321CFD
-:1032D0002B1C00F020F8F0BC08BC1847000000B020
-:1032E0005C2B0080F0B54B6F9B6F1F1DCF63056893
-:1032F00000238469A40808D09C002E59C0463E5182
-:103300008469A40801339C42F6D83B1C00F003F802
-:10331000F0BC08BC1847FFB581B0041C1D1C0F1C75
-:103320004648016901310161F91D5131BD650091C6
-:10333000201CFDF75DFCF86D400936D2B86D067BA8
-:10334000437B1B021E431721490201730B0A43737F
-:103350000099201CFDF74CFCB86DC0460673330A7B
-:103360004373F86D400920D260680104090C03988A
-:1033700001F0CCFC6068324B18436060201C01F007
-:1033800035FD00257D60BD603D647D64201CFCF73B
-:1033900031FF38884023184338807D622948C04671
-:1033A000B862381C00F0A0FB44E0206801239B07B2
-:1033B000083818430068C046786460680204120C3C
-:1033C000786E0126C11D0D318A4202D23A64081C72
-:1033D0000EE041198989F023194009098900401834
-:1033E000F860F96161680904090C814216D23964F8
-:1033F00063681904090C401A033080088200A06138
-:10340000206809189B186360C31F053B381C00F037
-:10341000B6FA7E80201C00F0BFFB0BE0B968081AEA
-:1034200000257862BD62381C00F03CFC201C391C71
-:1034300000F064F805B0F0BC08BC18470C2B008005
-:1034400000000080010000C0F0B5041C0F1C386CA7
-:10345000F96B0D18216841180020A269002A0BD9C8
-:103460008200561801239B0733431B68C046AB50AC
-:10347000A26901308242F3D8786EF96B0918898904
-:10348000F0231940090989004018F860F9612068A3
-:1034900001239B07083818430168786CFCF795FFF7
-:1034A000786460680104090CF868814219D23964B3
-:1034B00063681904090C401A033080088200A06177
-:1034C000206809189B186360C31F053B381C00F077
-:1034D00056FA01207880201C00F05EFBF0BC08BC8E
-:1034E0001847B968081A78620020B862381C00F0E2
-:1034F000D9FB201C391C00F001F8EFE7F0B584B0CF
-:10350000041C0F1C8E4841690131416103200007F2
-:1035100061680840060F0A04120C20681118FB6845
-:10352000D21A7B689D1AC31F053B381C2A1C00F069
-:1035300026FA00207880201C00F02EFB60684019DD
-:103540000104090C6060301C01F0E0FB7D4E0B2390
-:103550001B02F0180069002819D000252D239B01BB
-:10356000F018C068002812D0AA0092192D239B01E0
-:10357000D218D268201C391C01F01CFE0135A800AD
-:1035800080192D239B01C018C0680028ECD1F86B6E
-:10359000011F8A1CFA63FA687D6C00F0BBF9C04316
-:1035A0000104090C281CFCF710FF0390F96B3A6E1C
-:1035B0008E182068121801927A6E8D1811180291D7
-:1035C000C81D0930E060B1880802090A0906090E21
-:1035D00008430004000C78616868010EFF221204A1
-:1035E0000240120A1143FF2212020240120211434A
-:1035F000000608433861A88909231B021840B861F6
-:10360000A8899843A881A8890299C046888100208A
-:103610007080B080708168602882B96E301CFCF7C1
-:10362000E8FE3886FA69301C291CFCF703FF78860F
-:103630003D8E788E0399FCF7C8FE00906068000408
-:10364000000C396E411A0904090C7A6E821A1304AF
-:103650001B0C1A021B0A1A431604360CBA68824263
-:1036600001D2002000E0101AB86008020912090611
-:10367000090E08430104090C0198C0464180281C2A
-:10368000FCF7A3FE051C0098311CFCF79EFE061CEF
-:1036900078690004000C0102000A08430104090CC7
-:1036A0000198C0468180281CFCF78FFE79690131A2
-:1036B000C0437961019AC04650813869010EFF22EA
-:1036C00012040240120A1143FF22120202401202A7
-:1036D000114300060143301CFCF777FE39697A6814
-:1036E00089183961B968002909D102998989BA69AB
-:1036F0001143029AC0469181B969FCF766FE2082A7
-:1037000000206082F86D410816D3800A0AD36068F1
-:1037100010380104090C0802090A08432168C04650
-:10372000088209E060680C380104090C0802090AE3
-:1037300008432168C046888104B0F0BC08BC184723
-:103740000C2B0080680E0080F1B584B06E4D2869A6
-:10375000012204998A409043286104984301181A71
-:103760008000161C69494418E06BC0460090A068B0
-:10377000002801D1002626E06548416901314161F8
-:103780000498FCF709FD071C03D128693043286120
-:10379000B5E0A0686568A84200D2051CA16CA942EA
-:1037A00016D2401A626A101A00266062A660A662EB
-:1037B00020884823184320800D1C09D1381CFCF7B1
-:1037C00019FD032060806660201C00F08DF996E0F2
-:1037D000E16838680918C31F053B201C02392A1C00
-:1037E00000F0CDF8381C00F0D7F9E0684619786889
-:1037F000304378600498311C01F088FA216E0098FB
-:1038000008180190701A0004000C616E711A0A0405
-:10381000120C1102120A11430904090C029101024F
-:10382000000A08430104090C0198C0464180208E1B
-:10383000FCF7CBFD061C608E0299FCF7C6FD0390D9
-:1038400060690104090C0802090A08430104090C13
-:103850000198C0468180301CFCF7B7FD61690131D9
-:10386000C04361610199C0464881606E0099461865
-:103870002069010EFF2212040240120A1143FF22A6
-:1038800012020240120211430006014371600398C4
-:10389000FCF79BFD216949192161A168491BA160C1
-:1038A00006D1B189A2691143B181A169FCF78DFDEF
-:1038B0003882616E386809180E31F960E268009943
-:1038C000043800F04CF802207882E06D410816D3ED
-:1038D000800A0AD3786810380104090C0802090A22
-:1038E00008433968C046C88109E078680C3801048B
-:1038F000090C0802090A08433968C046488105B026
-:10390000F0BC08BC18470000D02C00805C2B008065
-:103910000C2B0080F7B5031C0F1C00201C6826042C
-:10392000311C1D1DFCF751FD40C7029AD11C8908AE
-:1039300001394A1E029200290DD0210C10CD22041B
-:103940000A43111C161CFCF740FD40C702994A1E91
-:1039500002920029F1D103B0F0BC08BC18478008DE
-:10396000800089088900033293085A1E002B05D075
-:1039700008C908C0131C013A002BF9D17047FFB5E4
-:1039800086B0171C00260698806CC01B0699C0469E
-:1039900088640120C0050699896BC046019106998B
-:1039A0004C6B67E02168C04602916168C046039194
-:1039B000A168C046049102A94988B94208D202AD63
-:1039C0006D8802A949887F1A002102AB598019E04D
-:1039D00002A94988C91B02AB59803D1C002701215F
-:1039E0004906079B9A07920F0DD0EB06DB0E08D015
-:1039F0001E2B08D31E2B02D1032A04D101E0022A78
-:103A000001D301260021294301430A1C0091002013
-:103A10000399049A079B01F05BFF079949190791E5
-:103A2000002E0AD01D4AC04600921D48016D426D0D
-:103A30000020079B01F04CFF002602A840880028C8
-:103A40000CD00398401903900298C0462060039858
-:103A5000C04660600498C046A06003E00198013849
-:103A6000019010340698C046446301980699C046F8
-:103A700088630020002F02D00199002992D1094AC1
-:103A8000C04600920648016D426D0020099B01F07E
-:103A90001FFF0AB0F0BC08BC18470000010000027C
-:103AA0007C2900800400530290B50C1C071C386868
-:103AB00001239B07083818430168388AFCF785FC06
-:103AC000C043F968C0460880788A3968081A3860A7
-:103AD000381C01F08BF9381CFCF78CFB201CFFF71D
-:103AE00033FE90BC08BC184780B501888A0921D3F1
-:103AF000CA091FD28A081DD3002101804180476F67
-:103B0000406DFA1D19325171FA6DC04610603A6E5F
-:103B1000C04610600C48C0468163C16B490849002B
-:103B2000C163012000F0CCFF381C00F06BFF80BCAB
-:103B300008BC184780231943018001884909F6D23F
-:103B400000F0B0F8F3E70000E80E0080F0B5071CC5
-:103B5000101C0D1C00245E1E002B19D00168C046ED
-:103B6000396041880C194168C04679608168C04657
-:103B7000B960C168C046F96010301037E96A814207
-:103B800002D8281C00F0ECFF311C013E0029E5D1D1
-:103B9000201CF0BC08BC18470021C16105490A6817
-:103BA000002A01D1086002E04A68C046D06148603E
-:103BB00070470000D02C008003490868002802D01C
-:103BC000C269C0460A607047D02C0080002181671E
-:103BD00005498A68002A01D1886002E0CA68C046A7
-:103BE0009067C86070470000D02C00800349886847
-:103BF000002802D0826FC0468A607047D02C0080B7
-:103C000000B580201349C0460860FFF7D5FF0028A3
-:103C10001BD003231B07416819400A0F5101891A61
-:103C200089000D4BC9184B88002B04D1111CFFF7DC
-:103C30003BFF08BC1847012B02D1FFF705FCF8E752
-:103C4000022BF6D1FFF74EFBF3E70448016D01317B
-:103C50000165EEE7000000B05C2B0080A0822040F0
-:103C600000B520200D49C0460860FFF7BFFF0028BF
-:103C70000ED0018820231943018001881023994325
-:103C800001800188090A01D3FFF72EFF08BC1847FD
-:103C90000348016D01310165F8E70000000000B044
-:103CA000A082204098B5071C2248C04600902248B8
-:103CB000C31D4133416D826D806C0003000B9C6815
-:103CC00001239B0723431B68984200D10CE09842D4
-:103CD00003D9101A591A411800E0191A01201029A5
-:103CE00000D8002000281FD0786AF96AC046086012
-:103CF000B86AF96AC0464860104AC0460092FB6A3A
-:103D00000F48426D0320396A01F0E2FD3888102324
-:103D1000184338803888402398433880381CFFF790
-:103D200055FF98BC08BC1847388840231843388092
-:103D3000F7E7000055555555A8030080080011020B
-:103D40007C290080B0B540202C49C046086000F0B6
-:103D5000FDFE071C406803231B071840050F680180
-:103D6000401B8000264944182088022318432080E5
-:103D70002088410834D3400840002080A06CE16CCA
-:103D80004018A0640020E064A16B226D8918A16333
-:103D90002065B86AC046606503231B077868184031
-:103DA000786061683631942904D8382318437860E4
-:103DB000382003E09423184378609420B861396870
-:103DC00078680204120C201CCB1F053BFFF7D7FDBF
-:103DD00002206080381CFFF7DFFEB0BC08BC18472B
-:103DE000381CFCF707FA2801064940181923DB01A3
-:103DF000C018416B01394163EFE70000000000B0DB
-:103E00005C2B0080A01C008090B500270F4C0DE0BB
-:103E1000426B013A4263002A05DC026BC0464263F2
-:103E2000C06A01F0C6F901370B2F07D2380100191B
-:103E300033239B01C018816A0029E9D10120400683
-:103E40000349C046086090BC08BC1847680E008053
-:103E5000000000B01048C1680131C1600F49C86856
-:103E6000012817D1C81D79300289002A12D0013AE1
-:103E700002810289002A0DD14289002A08D1C96F26
-:103E800002230A681A430A6004210181012100E02B
-:103E9000002141817047000008832040680E0080A7
-:103EA000B0B5071C0123F81D693003731E48C21DFD
-:103EB0007932548A611C5182D58A0021AC4204DBDC
-:103EC000C41D893463705182D18301239B073A6DED
-:103ED0001A431268C046BA61FB699A4206D1F86C6F
-:103EE0001249C0460860B0BC08BC184779614169F6
-:103EF000FA6C9143416101200005C16038690228D4
-:103F0000F1D0B869F969411A01D5786D4118381CAA
-:103F100000F00EF8F9690918F961786D8142E2D371
-:103F2000081AF861DFE70000680E0080000000B0AA
-:103F3000F8B5041C0F1CFF2321339F4201D9FF2732
-:103F40002137E16E381C01F0CBFC2D4D002813D138
-:103F5000E01D4930017A012319430172294AC04604
-:103F600000922948016D426D00202B1C01F0B0FC2D
-:103F70000020F8BC08BC18472069013020612349A3
-:103F8000C81DB930026B92005118C0310F61016B2E
-:103F900001318907890F0163206BC219616D8A4263
-:103FA00003D8232212053A4305E0091A7E1A07D1E5
-:103FB000232212050A430092616E0918A26E10E0D6
-:103FC000112252050A430092616E09180020A26E68
-:103FD0002B1C01F07DFC2322120532430092616EFE
-:103FE000A26E00202B1C01F073FC206BC01900098D
-:103FF0000001616D814200D8401A2063381CB8E787
-:104000004480204004001B027C290080680E008050
-:1040100080B50120C0030D49C04608600C49C81D89
-:104020004930027A0027002A03D00772081CFFF7E4
-:1040300037FF0849C81D4930027A002A03D00772A9
-:10404000081CFFF72DFF80BC08BC1847000000B01B
-:10405000642D0080E42C008090B5071C10201849C6
-:10406000C0460860F8680130F8601648C41DB934CD
-:10407000616B89000918C03109697A689200D21908
-:104080005164616B89000818C0300169786880004C
-:10409000C019C06B01F0A2FA01237868584078601B
-:1040A000606B01308007800F6063F81D1930407924
-:1040B000002802D1381C00F007F890BC08BC184753
-:1040C000000000B0680E008090B5071C3948C06839
-:1040D000002805D0B86AC068800901D3022000E03A
-:1040E000786FFCF759F8041C06D10120F91D19312D
-:1040F000087190BC08BC1847F86C2F49C04608608E
-:10410000BA6A381C211C00F059F86762002803D1F4
-:10411000201C00F00BFDECE7F96D0968091809098E
-:1041200009017A6D8A4200D8891AA162B9688900AA
-:10413000C9194A6C002A07D04A6C121A4A648008CE
-:104140008000B96A0818B8623868B96A8000C01976
-:10415000426B91420ED300214164B86A39688900EC
-:10416000C919496B401AB862B9688900C919C96B85
-:104170004018B862B8688100C919496C0029B8D1E3
-:10418000B96AFA6B9142B4D03A6C9142B1D0012332
-:104190005840B8608000C019C06BC046B862F8686B
-:1041A000002801D00138F86038690028A1D0013812
-:1041B00038619EE768190080000000B0F7B590B044
-:1041C000041C0D1C00200590029000220192F94869
-:1041D000C06AC046A861A06881000919496BC04641
-:1041E0002060E162129AD068C046A860129A5178A5
-:1041F000C0460C91F048C0460390D71D0937E06ACD
-:10420000C11B0909E31D19330C9AC0460F93EB4BF0
-:10421000C0460E93914201D3B84221D8E1680229E9
-:104220001ED201200F99C04648710020039901F069
-:1042300057FB002803D10E9BD86B0130D8630120B7
-:10424000800600276860AF61DD4AC0460092DD4805
-:10425000016D426DDC4B002001F03AFB381C5CE341
-:10426000B84203D8201C00F07BFC071CD748C0686C
-:10427000002864D038784007400F032860D10598A3
-:1042800001300006000E05903878F023184058D110
-:10429000E06AC01B00090C99884202D2E06802283B
-:1042A00005D3CB49886800F083FF061C06D1039B29
-:1042B000281C391C221C00F08BFC16E12E62F868C9
-:1042C00000280DD0B889002803D0C149C96800F082
-:1042D00070FFF889002803D0BD49C96800F069FF64
-:1042E0007A68C0467261B968C046B161301CB8498D
-:1042F000096800F05EFF002817D1301CB4494968F6
-:1043000000F057FF1037E06AB84203D8201C00F0D5
-:1043100027FC071C6868AF4B184368600020A86141
-:10432000AC23A8689843A860B0E0A869A82801D287
-:10433000A820A8611037E06AB8426CD89CE0A5E0DC
-:10434000A4E0102868D103231B0768681840010FF8
-:104350004801401A8000A04A821801927888420BD6
-:1043600031D3820B2FD39D48C04603900220019A7F
-:10437000C046108078880005000D019AC046506044
-:10438000B868019AC04690607868019AC046106289
-:104390000020019AC0469064019AC046906388024A
-:1043A0008F494018019AC0465063019A50683630D0
-:1043B000942801D8382000E09420A8611037E06AE2
-:1043C000B84228D858E07A88920B03D38548C04673
-:1043D000039023E0012212030240834B1DD003937C
-:1043E0000005000D019AC0465060B868019AC046A9
-:1043F00090607868019AC04610620020019AC04619
-:104400009064019AC0469063880275494018019AE9
-:10441000C046506302E033E02AE0039301200F9985
-:10442000C0464871129A50780599431A0B93103779
-:10443000E06AB84203D8201C00F092FB071C019AE6
-:10444000506B916B090140180B9B211C3A1CFFF724
-:104450007DFB019AC046D064019A0B9BC046136550
-:1044600001235B066868184368600020A8610DE0BE
-:104470001037E06AB84203D8201C00F071FB071C1B
-:1044800038784007400F032800D1F8E6A86903995F
-:1044900001F026FA00282AD1381C211C00F079FBF3
-:1044A000A868800904D3301C4949496800F081FE9E
-:1044B0004149002001F014FA002804D10E9BD86B6A
-:1044C0000130D86311E001200F99C0464871800681
-:1044D00000276860AF613A4AC04600923948016DD2
-:1044E000426D394B002001F0F3F9002015E20598E8
-:1044F0000C99081A0004000C0C900B900C980028E2
-:1045000003D001200F99C04648712868C046049026
-:1045100000260020089000220A920C9801380D9085
-:10452000A3E078888A1B1204120C904205DD0792E2
-:10453000801A0004000C089000E0079008980028FA
-:1045400007D10D980A9A904207DD079830188842E3
-:1045500003D80120400506901CE01120400506907C
-:10456000A8688C23184002D12048C0460690B107A5
-:10457000890F0FD00798C006C00E08D01E2809DB8F
-:104580001E2802D1032905D101E0022902D301200E
-:104590000290DEE70A9A002A04D10123DB0506987F
-:1045A00018430690079806990843021C0090049847
-:1045B00083191DE0E80E00800149FFFF280F0080ED
-:1045C000040012027C290080448020406819008089
-:1045D00060040080000000805C2B00805532FFFFEB
-:1045E000AC5E21400D3DFFFFCD31FFFF00003202E8
-:1045F00000203A1D06CA01F06BF907983618029898
-:10460000002816D0A8688C23184004D109235B0425
-:104610000698184306900698C24A024300920498EE
-:104620008319C148016D426D002001F051F900204D
-:104630000290089800280BD10B9B013B0B9310377D
-:10464000E06AB8420CD8201C00F08AFA071C07E088
-:104650007868079A801878607888079A801A788036
-:104660000A9A501C0204120C0A920C980A9A82426E
-:1046700003DAA969B14200D953E7A869B0426BD106
-:10468000A868010969D2089A002A56D00C990A9A9A
-:104690008A423EDBB107890F0CD0089AD206D20EAF
-:1046A0000BD01E2A06DB1E2A02D1032905D001E009
-:1046B000022902D20299002921D0089AC04600920C
-:1046C0000498831900203A1D06CA01F001F90898E0
-:1046D0003618A8688C23184002D00120400600E05C
-:1046E0009248012202430092049883198E48016D7A
-:1046F000426D002001F0ECF80020029015E08C23C0
-:10470000184002D00120400600E08848089A024381
-:1047100000E0089AC04600920498831900203A1DD0
-:1047200006CA01F0D5F8089836181037E06AB84282
-:1047300003D8201C00F014FA071C6868800E6BD2A6
-:104740000A98C04609900C9988425CDA0D9809993C
-:10475000884203D07A881EE05FE05EE0788801221C
-:1047600052060243A9688C23194002D109235B0435
-:104770001A43B107890F0ED0C306DB0E08D01E2BDB
-:1047800009DB1E2B02D1032905D101E0022902D346
-:1047900001210291021C0998002802D10123DB05A6
-:1047A0001A4300920498831900203A1D06CA01F0AA
-:1047B0008FF87888861910370298002814D0A868D6
-:1047C0008C23184002D00120400600E05748012207
-:1047D00002430092049883195348016D426D0020F2
-:1047E00001F076F800200290E06AB84203D8201C5D
-:1047F00000F0B6F9071C099801300004000C09907C
-:104800000C998842A2DB686830430104090C686097
-:10481000E86A00F07BFA28E027E0A868000914D3D2
-:104820006868800E15D2019A002A12D0019A506B46
-:104830000B9B211C3A1CFFF789F9019AC046906432
-:10484000019A0B9BC046936303E0E86A311C00F0B9
-:104850005DFA686830436860A869B04205D9000411
-:10486000000C801B00F0EEF9AE61A8688C231840A4
-:104870000BD02F4AC04600920498C31F053B2A481C
-:10488000016D426D002001F023F801239B07206D8C
-:1048900018430068C046A061E169814212D02269D4
-:1048A000022A0FD2411A01D5606D4118201CFFF772
-:1048B0003FFBE1694018E061616D884224D3401AF2
-:1048C000E06121E081421FD1206902281CD2012031
-:1048D000606118484169E26C0A4342618169E36C96
-:1048E0009943816101210905CA608069C046086158
-:1048F0008B02206D18430068C046A061E1698142C7
-:1049000002D0201CFFF7CCFA281C00F00FF90C98FD
-:104910000599401800011030686113B0F0BC08BC64
-:1049200018470000010000027C29008000001202EC
-:1049300004005202680E0080F0B540202D49C046A8
-:10494000086000F003F9071C8169446AA06F00F059
-:1049500045FE0020E11D193148717968C90E09D35F
-:10496000F86A000124494018244BC0180168013935
-:10497000016036E0E16D0968226EC0461160204E8C
-:10498000F51D79350123E96B1943E963B96AE26DD5
-:10499000C0461160B96A226EC04611606169002983
-:1049A00004D1A96B0131A963082907D3A8630120A9
-:1049B00000F086F8E86B40084000E8637868810EF4
-:1049C0000FD20B231B02F118C968002906D000087A
-:1049D00004D2201C391C00F043F802E0381C00F01F
-:1049E00005FA381CFBF706FC201C00F00BF8F0BCA5
-:1049F00008BC1847000000B0A01C0080B40C0000E8
-:104A0000680E008080B5071CF81D19300179002957
-:104A100004D000210171381CFFF756FBF86802280A
-:104A20000DD0B8688000C219506C002811D0B86A47
-:104A3000417809011031526B101A884205D3381C95
-:104A4000FFF742FB80BC08BC1847381CFFF728FA68
-:104A5000F8E778688000C019C06BC046B862F1E71B
-:104A6000B0B587B00F1C806FC04600900024134D76
-:104A70000B231B02E8188069002817D06946A200A2
-:104A800052190B231B02D2189269381C00F092FBBA
-:104A9000002809D10134A00040190B231B02C018C3
-:104AA00080690028EAD101E0012802D0381C00F01A
-:104AB0009DF907B0B0BC08BC18470000680E008024
-:104AC000B8B5C207D20F164C164901D0082208E02B
-:104AD000820805D30C22A4180B68DF1D153703E0EC
-:104AE0001C220B68DF1D09370F4B1D78002D13D0DA
-:104AF0005B78002B10D001235B061A43002801D1FC
-:104B00005B081A4300924A680120391C231C00F0FC
-:104B1000DFFEB8BC08BC184703231B061A43F1E7A5
-:104B200090EE20407C290080F80E00800021C161B9
-:104B300005498A68002A01D1886002E0CA68C04637
-:104B4000D061C86070470000280F00800349886862
-:104B5000002802D0C269C0468A607047280F0080D2
-:104B6000011C0123886858408860CA68013ACA60FD
-:104B70000A69013A80000A614218D06B536BC04643
-:104B8000CB620B689B005918496C536CC91851646F
-:104B900070478A6892005218D36B834217D1D01D98
-:104BA0003D300A6892005218526C03689A1A0260EB
-:104BB0000123886858408860CA680132CA600A695F
-:104BC0000132800040180A61406BC046C8627047DD
-:104BD000B8B5041C1D1C171C081C391CFFF7D9FF95
-:104BE0000020291C00F07CFE0120F91D19314871BC
-:104BF000800660600020A061064AC0460092064818
-:104C0000016D426D054B002000F062FEB8BC08BC8F
-:104C100018470000040012027C29008044802040D4
-:104C200006490A681018086001235B02984203D9FC
-:104C300003490A7901320A7170470000E42D0080AF
-:104C4000A08220408008800006490A681018086089
-:104C500001235B02984203D903490A7901320A71A0
-:104C600070470000E42D0080A082204003308008BF
-:104C7000800006490A681018086001235B02984208
-:104C800003D903490A7901320A717047E42D008083
-:104C9000A0822040024841790131417170470000F3
-:104CA000A082204090B48200174B9A588B0702D004
-:104CB00089080B1D01E08908CB1C1169D768124CCB
-:104CC000800020584068B94203D1814219D9116847
-:104CD00017E00024B94209D9814212D91168781A23
-:104CE00000D50330801098420BD807E0814205D8E8
-:104CF000781A00D503308010984202D8201C90BC4E
-:104D00007047C81D0530FAE77004008080B5800048
-:104D10000F4A1758880702D08808043001E0880835
-:104D2000033039697A68914209D93968C0463961D6
-:104D3000F9687A68914202D93968C046F960810001
-:104D4000386900F0D1FD386180BC08BC184700000C
-:104D50007004008090B50321090701400C0F010485
-:104D6000090C012292070240A3001C4FFF5889073B
-:104D7000890F0004000C8008002900D00130002AAF
-:104D800001D0023000E00330F9687A68914202D91C
-:104D90003968C046F9608100F86800F0A5FDF86048
-:104DA0000F480069002805D00120A04002D0201C37
-:104DB000FEF7CAFC0B49C81D193003790022002BED
-:104DC00005D10949C81D19300379002B03D00271A0
-:104DD000081CFFF779F990BC08BC184770040080E4
-:104DE000D02C0080642D0080E42C0080B0B52B49CD
-:104DF0000979002903D14168294B19434160816831
-:104E0000490802D30921090401E00D2109040CC855
-:104E1000083819438768BB0A03D343685B0800D38B
-:104E20000131406803231B071840070FF8001D4C91
-:104E300000192368C01850300079012810D160682B
-:104E400001280DD0101C00F071F838010019192349
-:104E5000DB01C018416B01394163B0BC08BC184785
-:104E6000380100191923DB01C018036B5D1C0563B1
-:104E7000BD022D19DB00EB1880331963DA62816BF8
-:104E8000013181630121B940226811432160016B26
-:104E90008029E2D300210163DFE70000280F0080B2
-:104EA00000000080A01C0080F0B51F4E7068002834
-:104EB00036D10024B168481CC9008919B060326835
-:104EC000891860310D7B082800D3B460280180194F
-:104ED0001923DB01C018876B002F21D0C16A4B1C3E
-:104EE000AA029219C90051188031C362CA6A096BBB
-:104EF000013F8763802B00D3C462002F06D10127B6
-:104F0000AF403B1CDB4337683B403360436B013BA6
-:104F10004363101C371C00F009F878680028C9D0DA
-:104F2000F0BC08BC18470000A01C0080F0B5CD0FF5
-:104F3000ED07012400272E4B2E4A002D1DD0D86AE4
-:104F40000130D862101C5269002A12D00269531C29
-:104F50009200121803619161416901314161026956
-:104F60000F2A00D307610F2900D34460F0BC08BCAE
-:104F70001847081CFFF7EEFEF8E715696E1CAD0038
-:104F8000AD181661A96155690135556116690F2E75
-:104F900000D317610F2D00D354608C02A40A164F62
-:104FA0003A6FFD68F91D7931012D0CD1DB6D5B087D
-:104FB00009D30B89002B06D1FD6F033B2E683340CC
-:104FC0002B6014230B8110608007800A20430304A8
-:104FD00000D001385060096A0832914200D8074A6F
-:104FE000000D02D35120800382613A67BEE70000C2
-:104FF000A42A0080A01C0080680E008024A7204006
-:10500000B0B5002804D10120C0051649C04608608B
-:10501000154C00256769002F16D0E068411C800000
-:105020000019E1608069013FFFF794FEE0680F28F6
-:1050300000D3E560E068800000198069000801D3B2
-:10504000002FEAD1676103E00848016D0131016575
-:1050500065602068002801D0FFF726FFB0BC08BCBF
-:1050600018470000000000B0A01C0080A082204073
-:1050700000207047B0B41023826813400021002B39
-:1050800015D00C4B1A401201812414430268156894
-:10509000131D80CB1B68043A026020C280C208C284
-:1050A0001460426801239B0704321A434260081CC3
-:1050B000B0BC704700F0FF0FF0B48268530934D3DE
-:1050C0001B4B1A4012018126164303681D681F1DE1
-:1050D00010CF3F68043B036020C310C380C31E6031
-:1050E00043681F1D01239B073B434360CB6B181F85
-:1050F000C86380CB80C01C681F1D031D0460381C62
-:105100003F68C0461F601F1D43681C04240C812398
-:1051100023433B604068000C000410437860086E35
-:1051200004300866486E043048660020F0BC7047C2
-:1051300000F0FF0F80B4816A01239B07CA1D05326E
-:105140001A431268CF1D01373B431B68C046CB6032
-:1051500001239B070F1D3B431B68C0468B60012347
-:105160009B070B431B680CC10262016BC0460A62BD
-:105170000423816919438161026BC0469161816A90
-:1051800004318162026BC0469162C11D39314A8B84
-:10519000043A4A83498B026B40325183C1890439F6
-:1051A000C181C168006BC046C160002080BC7047EF
-:1051B00000470847104718472047284730473847D7
-:1051C00030402DE90CC09DE50C48A0E12448B0E139
-:1051D0001E00000A01C04CE21840A0E364519FE5A4
-:1051E000945020E0005090E5144090E5003085E5B3
-:1051F00004C085E5081085E50C2085E5101090E5D4
-:10520000105085E2010055E10C509055040055E125
-:105210000500000A041090E5005080E5005081E58B
-:105220000000A0E33040BDE81EFF2FE1003093E511
-:10523000082090E5013183E3023683E3030055E162
-:10524000143080E5F2FFFF1A0100A0E3F4FFFFEA4B
-:1052500001061CE3F1FFFF0AEC109FE502C6CCE358
-:10526000542091E5E4309FE5501091E5D9FFFFEA25
-:10527000F0472DE920C09DE50C68A0E12668B0E16B
-:105280002500000A1840A0E3B8509FE5940000E014
-:10529000050080E0084090E5048090E50070A0E300
-:1052A0001FC0A0E302C48CE3005090E5109090E58D
-:1052B00014A090E5003085E504C085E5081085E57B
-:1052C0000C2085E5105085E2090055E10C50905501
-:1052D0000A0055E11500000A037017E2201081E270
-:1052E000203083E20A00000A006096E2017087E243
-:1052F0000900000A206046E2200056E3ECFFFFCAE6
-:105300000070A0E301C046E202C48CE30060A0E3A9
-:10531000E7FFFFEA005088E5F2FFFFEA0010A0E394
-:10532000005080E50100A0E1F047BDE81EFF2FE13D
-:1053300000A094E50A0055E114A080E5E5FFFF1AFE
-:105340000110A0E3F5FFFFEAA80300807C2900809C
-:105350000080204068829FE50B92A0E364A29FE555
-:1053600058B09AE50EF0A0E154B09AE51EFF2FE187
-:105370003F402DE900004FE11F0000E2120050E322
-:105380005400000A00000FE18000C0E300F021E1BA
-:105390000450A0E3004099E5090000EA020014E38C
-:1053A0005300001B800014E35900001B200014E38D
-:1053B0005900001B020714E35900001B010614E307
-:1053C0005900001B080014E34500001B020514E30C
-:1053D0004A00001B020814E34B00001BE50E14E317
-:1053E0000700000A042098E50C1098E5043052E20A
-:1053F0003C30A0B3043088E5020091E70FE0A0E163
-:1054000010FF2FE1015055E20300000A004099E52A
-:105410000C009AE5000014E11BFF2F1108009AE52B
-:10542000000014E10B00000A010C14E398019F1521
-:105430000FE0A01110FF2F11020414E38C019F153F
-:105440000FE0A01110FF2F11010914E380019F1537
-:105450000FE0A01110FF2F1104009AE5000014E1E5
-:105460001600000A54E08FE2040014E340009A158D
-:1054700010FF2F11020A14E344009A1510FF2F1198
-:10548000020914E348009A1510FF2F11010214E3DA
-:105490004C009A1510FF2F11010414E350009A15C7
-:1054A00010FF2F11010A14E32100001B020014E376
-:1054B0000E00001B10009AE5000014E11C00001B08
-:1054C000004099E50450A0E3004094E21BFF2F1137
-:1054D0003F40BDE804F05EE2C00080E300F061E11F
-:1054E000FAFFFFEA18009AE51C109AE511FF2FE178
-:1054F00054B09AE51C109AE514009AE511FF2FE1CB
-:1055000020109AE50000A0E311FF2FE124109AE596
-:1055100011FF2FE128109AE511FF2FE12C109AE5D9
-:1055200011FF2FE130109AE511FF2FE134109AE5B9
-:1055300011FF2FE1FEFFFFEA38E09AE53C109AE503
-:1055400018009AE511FF2FE138E09AE53C109AE542
-:1055500014009AE511FF2FE164209FE5003092E5E9
-:10556000003053E00A0000BA003082E50C0092E5FA
-:10557000083092E5001091E20300000A031080E772
-:10558000043053E23C30A0B3083082E50100A0E3D0
-:105590001EFF2FE13C109FE5000091E5010080E235
-:1055A000000081E50000A0E3F8FFFFEA10009FE59E
-:1055B000081090E5041051E23C10A0B3081080E5FB
-:1055C0001EFF2FE1E42D0080CC040080712BFFFF33
-:1055D000D13DFFFFC92BFFFFA0822040C91C8908D5
-:1055E00089000123854A5B07184313685B18136021
-:1055F000001F81A35B1A18470420A0E50420A0E542
-:105600000420A0E50420A0E50420A0E50420A0E5F6
-:105610000420A0E50420A0E50420A0E50420A0E5E6
-:105620000420A0E50420A0E50420A0E50420A0E5D6
-:105630000420A0E50420A0E50420A0E50420A0E5C6
-:105640000420A0E50420A0E50420A0E50420A0E5B6
-:105650000420A0E50420A0E50420A0E50420A0E5A6
-:105660000420A0E50420A0E50420A0E50420A0E596
-:105670000420A0E50420A0E50420A0E50420A0E586
-:105680000420A0E50420A0E50420A0E50420A0E576
-:105690000420A0E50420A0E50420A0E50420A0E566
-:1056A0000420A0E50420A0E50420A0E50420A0E556
-:1056B0000420A0E50420A0E50420A0E50420A0E546
-:1056C0000420A0E50420A0E50420A0E50420A0E536
-:1056D0000420A0E50420A0E50420A0E50420A0E526
-:1056E0000420A0E50420A0E50420A0E50420A0E516
-:1056F0000420A0E50420A0E50420A0E50420A0E506
-:105700000420A0E50420A0E50420A0E50420A0E5F5
-:105710000420A0E50420A0E50420A0E50420A0E5E5
-:105720000420A0E50420A0E50420A0E50420A0E5D5
-:105730000420A0E50420A0E50420A0E50420A0E5C5
-:105740000420A0E50420A0E50420A0E50420A0E5B5
-:105750000420A0E50420A0E50420A0E50420A0E5A5
-:105760000420A0E50420A0E50420A0E50420A0E595
-:105770000420A0E50420A0E50420A0E50420A0E585
-:105780000420A0E50420A0E50420A0E50420A0E575
-:105790000420A0E50420A0E50420A0E50420A0E565
-:1057A0000420A0E50420A0E50420A0E50420A0E555
-:1057B0000420A0E50420A0E50420A0E50420A0E545
-:1057C0000420A0E50420A0E50420A0E50420A0E535
-:1057D0000420A0E50420A0E50420A0E50420A0E525
-:1057E0000420A0E50420A0E50420A0E50420A0E515
-:1057F0000420A0E50420A0E51EFF2FE1E42D008099
-:1058000098009FE598109FE5012040E094309FE5C7
-:10581000000091E5030050E10300001A041081E24A
-:10582000042052E20000000AF8FFFFEA78009FE53A
-:10583000002080E574009FE574109FE5012040E0A2
-:1058400060309FE5000091E5030050E10300001A7D
-:10585000041081E2042052E20000000AF8FFFFEA8F
-:1058600050009FE5002080E54C009FE54C109FE52F
-:10587000012040E02C309FE5000091E5030050E15D
-:105880000300001A041081E2042052E20000000A22
-:10589000F8FFFFEA28009FE5002080E51EFF2FE1CA
-:1058A0007C34008080300080ADDEADDEC00400803E
-:1058B000FC37008080340080C4040080FC3F0080FE
-:1058C00040380080C80400807847000071EAFFEA91
-:1058D0007847000039FEFFEA7847000063FEFFEAE0
-:1058E000784700001BFFFFEA784700006BEAFFEAF9
-:1058F00000000000FFFF00000000008028040000FE
-:10590000F83D00000001008000FF000000000000E2
-:10591000B90BFFFF00000000D50BFFFF03FF06548B
-:10592000030000007504FFFF00000000A105FFFF59
-:1059300004FF075403000000B504FFFF000000004F
-:10594000F105FFFF05FF0554030000003904FFFFC8
-:10595000000000005505FFFF01FF040003000000E8
-:105960004118FFFF00000000610EFFFF02FF020868
-:1059700000000000A102FFFF00000000F102FFFF95
-:10598000FFFF0144030000000000000000000000D1
-:105990009D0DFFFF0600FF00000000003D50FFFFCF
-:1059A0008150FFFF00000000FFFFFF00000000002B
-:1059B000000000000000000000000000FFFFFF00EA
-:1059C00000000000000000000000000000000000D7
-:1059D000FFFFFF00000000000000000000000000CA
-:1059E00000000000000000000000000048050080EA
-:1059F000117521401B7521403175214049752140A9
-:105A000055752140637521407D752140A975214060
-:105A10006D762140C5762140D3762140DD76214048
-:105A2000E776214099772140A7772140B57721403B
-:105A3000617821405F7C2140E97C2140897D2140C3
-:105A4000BD7E2140C97E2140297F21408D7F21409C
-:105A5000B97F2140DD7F21401D80214045802140CC
-:105A60008D8021409D802140C5802140D5802140EE
-:105A70001D8121405B812140B18121401182214063
-:105A80001B8221401F8221408D822140D9822140EA
-:105A9000318321406D832140D183214009842140FD
-:105AA0001984214051842140618421407584214022
-:105AB0009D842140A7842140B18421401585214047
-:105AC0004585214051852140C5852140CF85214014
-:105AD000D9852140E3852140ED852140F78521408E
-:105AE000018621400B8621401586214001892140F5
-:105AF0001F86214029862140338621403D86214052
-:105B0000658621406F862140D1862140DB86214079
-:105B1000E5862140EF862140F98621409D74214091
-:105B20000387214069872140B5872140F9872140BB
-:105B3000098821409D742140558821405988214081
-:105B40005D882140B5882140DD882140E9882140D9
-:105B5000ED882140F1882140F5882140F9882140D5
-:105B6000FD8821402D852140898521409D7421405B
-:105B70009D7421400D8921409D742140E174214094
-:105B80009D7421409D7421409D7421409D7421404D
-:105B90009D7421409D7421406B782140F57B21400C
-:105BA000317C2140000000000000000000000000E7
-:105BB000000000005C0118405801184024A3204058
-:105BC00024A7204000000000000000006C011840E5
-:105BD000680118402483204024A3204000000000D6
-:105BE000000000007C01184078011840000000000F
-:105BF0000000000000000000000000008C011840C0
-:105C00008801184024A9204024AB20400000000057
-:105C10000000000000000000080012001800120040
-:105C20000C0012001C00120024A82040A4A8204050
-:105C3000A4A8204024A9204000000000D1A82140B1
-:105C40002DAA21400000000089702140C9A12140F7
-:105C50000000000000000000010000000000000043
-:105C600057892140D1A82140C52FFFFF0521FFFF03
-:105C7000EF20FFFF59A72140342E0080482E0080DE
-:105C80005C2E008030333A31313A31310030372FD9
-:105C900032332F3031003030303031353639004337
-:105CA0006F707972696768742028632920323030F8
-:105CB000312033436F6D20436F72706F726174696E
-:105CC0006F6E0A00081000030000000000000000D2
-:105CD000000000008C53FFFF27F07DFD0001000253
-:105CE000DA0E820001406404642D0080E42C008000
-:105CF000693EFFFFC94FFFFFD524FFFFC93BFFFFF0
-:105D0000293CFFFF191AFFFF6511FFFFCC53FFFF6E
-:105D10002140FFFF8970214049722140D93FFFFF98
-:105D2000219A21408524FFFF6453FFFF8C53FFFF1E
-:105D300000000000FFFF0000803000800000000035
-:105D4000FFFF000000002040B05000007B0E00006C
-:105D5000006E21400000000000000000ED8921409D
-:105D60008B892140A58C2140058D2140CD8D21407E
-:105D70008B8B2140A98E2140158F2140698B2140BA
-:105D80000000000000000000000000000000000013
-:105D90000000000000000000000000000000000003
-:105DA0000000000059BD2140C1BD21402DBE214051
-:105DB00000200A4A0B231B02D1182D239B01D31864
-:105DC0008861D860D8638032C86008614861D06259
-:105DD0000348C0464860886070470000680E008035
-:105DE000FE030000F0B584B00C1C051C00230093DA
-:105DF000FFF7DEFF68490B231B02CF1878682840A5
-:105E00000022F8603A61BA6822407A610C1C4109AC
-:105E100003D2510901D2800A02D3604800F0C2F8CF
-:105E20000120F968490903D27969490900D20020A3
-:105E30000006000E03F0D4FAF868002870D00023A2
-:105E400002930193544A01231843F8600020D51DA2
-:105E500079350395012400214F4DFA68224039D04D
-:105E60008A00521892004E4B9B5C1E1C834204D049
-:105E70004B4BD3185B7883422CD1494BD218D37843
-:105E8000039DED6AAB4202D9039DC046EB625368A5
-:105E90005B0801D30123009386420AD19568029BD7
-:105EA0005E1C02969B003C4E9E190B231B02F318AE
-:105EB0009D61537883420DD1D268019B5D1C019591
-:105EC0009B00354D5D192D239B01EB18DA603A6973
-:105ED00001323A61640001310B29BDD30130092838
-:105EE000B8D30020029B99002B4A89180B231B0270
-:105EF000C9188861019B990089182D239B01C91835
-:105F0000C860009B002B0CD1810089180B231B0259
-:105F1000C918CB69C0468B6101300B28F4D308E067
-:105F200007E0039DE86A302803D23020039DC04675
-:105F3000E862194A786900282AD000210123184311
-:105F40007861002001240022134E7B69234010D089
-:105F500093009B189B00124D5B199D78854208D1D8
-:105F60001D690B1C9B009E192D239B01F318DD63FB
-:105F70000131640001320B2AE6D301300928E1D354
-:105F800000208900044A89182D239B01C918C86381
-:105F900004B0F0BC08BC1847680E00803053FFFF07
-:105FA0000001008000470847104718477847C0465F
-:105FB00018C09FE51CFF2FE17847C04610C09FE541
-:105FC0001CFF2FE17847C04608C09FE51CFF2FE16A
-:105FD0003852FFFF8851FFFFD5B02140F0B50420B3
-:105FE0001A49012508601A4FBB231B01F8180573D5
-:105FF0001848416B2C0500207A6E174B8A421DD041
-:10600000197B002917D1D91DFF313A3149781E1C5F
-:10601000002910D1B06010207060104A1049FFF7BD
-:10602000C3FF002807D035730423B8691843B8614B
-:10603000206100F017F8F0BC08BC1847187304235F
-:10604000B8699843B8612061F5E70000000000B02E
-:10605000680E008000011840280500802055FFFFD1
-:106060007D712140F8B5154F396C1548406E0C1AFA
-:10607000144E7168144DA14206D8144A0A43009286
-:10608000B96B0918FA6B11E01122520522430092F4
-:10609000B96B09180020FA6B2B1CFFF78DFF706895
-:1060A000001B0A4A02430092B96BFA6B00202B1CBA
-:1060B000FFF782FFF8BC08BC184700007C2900806D
-:1060C000680E0080280500804480204000003702D0
-:1060D000F0B52B4FB8687968C0192030294AFFF70E
-:1060E00063FF0120C0022849C0460860B968381C17
-:1060F000264D0024264EEF1D7937002931D1316815
-:106100000A78120A03D20473F0BC08BC1847497815
-:1061100000290CD1051C406800F03EF9306800F001
-:1061200067F8002826D12C73FFF758FF22E00901F9
-:10613000071C4160081C174A1749FFF735FF002864
-:1061400007D13C730423A86998439904A8610861A6
-:10615000DAE7102000F020F91020B860FFF782FF86
-:10616000D2E7051C406800F017F9306800F040F8ED
-:106170000028D8D00223F86B1843F863C4E7000066
-:1061800028050080A555FFFF000000B0680E0080C4
-:10619000E40100802055FFFF7D71214090B5012072
-:1061A00040031049002708600F4CE01DFF303A30D3
-:1061B0004770E06980000019006900F0D7F8E069D5
-:1061C000002801D0E76101E00120E06107480223D7
-:1061D000C16B1943C1632773FFF700FF90BC08BC74
-:1061E00018470000000000B028050080E80E00807D
-:1061F00080B584B0071C78886D2803DB381C00F05C
-:10620000F7F817E080000D490958381CFFF7CBFE5E
-:1062100000280FD13978C9090CD36946381C00F021
-:10622000CFF86846002100F00BF8002801D10120CA
-:1062300000E0002004B080BC08BC1847E8010080E2
-:10624000F0B582B0021C414BDD1DFF353A352F7889
-:10625000002F01D0002700E001272F702F78FB00CE
-:10626000DB195B013A4FDC1940780001C71D093783
-:1062700000208300D658C046E65001300428F8D3E9
-:1062800000290FD00022BB08019383420BD9131CB5
-:106290009B00CB588600A351019B01300132834201
-:1062A000F5D800E010272B48026D806E2A49824203
-:1062B00003D8821ACB6C9A1A00E0121ABA4205D897
-:1062C0002648816B01318163012037E0C319CA6C14
-:1062D000934208D8224A3A4300920A1C496C091892
-:1062E000926C231C12E0161A00961B49496C09187F
-:1062F0001948826C0320231CFFF75EFEB81B184A66
-:1063000002430092A3191448826C416C0320FFF7EA
-:1063100053FE01200D49C04668708A6992005218E8
-:1063200017618A69002A02D000278F6100E0886126
-:106330000C480223C16B1943C163002001270A499D
-:10634000C0464F7302B0F0BC08BC18472805008057
-:1063500050BA2040680E00807C290080A082204036
-:1063600000001902E80E0080181A008007498A6EA2
-:106370001018074AD26C13041B0C834200D8801AF1
-:106380008866886E0349C04648617047680E008081
-:106390007C29008090EE204006494A6E1018064A7B
-:1063A000126C824200D8801A4866486E0349C04683
-:1063B00008617047680E00807C29008090EE2040C4
-:1063C00005220A608288C0468A8000224A7040887E
-:1063D000C0464880CA808A60CA6070470522026051
-:1063E0000022828042704180C2808260C260704719
-:1063F00080B584B0071C0E48416B0131416369468A
-:10640000381CFFF7DDFF3868C0460090452000AB20
-:1064100018700127DF8068460021FFF711FF002870
-:1064200001D1381C00E0002004B080BC08BC184733
-:10643000A082204000B584B0C188094AC04691813D
-:106440006946FFF7BDFF0120400201AB5880684656
-:106450000021FFF7F5FE012004B008BC184700003A
-:10646000E80E008000B5FFF7C3FF08BC1847012005
-:106470000349C0460871A121490388600020704784
-:10648000280F008000200449C0460871FF21A12286
-:106490005203013191607047280F00800220A12132
-:1064A000490388600020704701204002A121490370
-:1064B000886000207047C088C006C00EA121490333
-:1064C00048610249C046C86300207047E81A00804E
-:1064D00080B584B008490F6B6946FFF771FFF80675
-:1064E000C00E01AB588068460021FFF7A9FE0120CD
-:1064F00004B080BC08BC18478000144080B585B04B
-:10650000071C6946381CFFF75BFFF88804A903F0F5
-:10651000C9FF01AB588001A8408800280FD001A80E
-:1065200040888008033880080130043B5870049884
-:106530000168C04602914068C046039005E000A88B
-:1065400000784023184300AB18700498C11D013136
-:106550006846FFF775FE012005B080BC08BC1847EF
-:1065600090B584B0144F397B002920D1F91DFF313B
-:106570003A31497800291AD110490522009208229F
-:1065800000AB5A809880062000AB58700024DC8055
-:106590000868C04602904868C046039001203873DE
-:1065A00068460831FFF74CFE002800D03C7304B069
-:1065B00090BC08BC1847000028050080A42A008071
-:1065C00090B584B0071C6946381CFFF7F9FEBA681D
-:1065D0000D4C0E48002A05D10D49FFF7E4FC0028B8
-:1065E0000CDA05E0B9880B4BFFF7DFFC002805DA71
-:1065F00001AB5C8068460021FFF722FE002004B05A
-:1066000090BC08BC18470000FFFF00000D76214039
-:10661000C1BD214059BD214000B5C08803F02EFF07
-:10662000002008BC184700B5FFF7E2FE08BC184779
-:1066300000B5FFF7DDFE08BC184700B5011C0220BD
-:1066400000F002F808BC1847B0B5C6B0071C081C1B
-:106650006946FFF7B5FE2148FFF7A4FC041C204A59
-:106660000021381CFFF7A0FC002827D004A91D4AF0
-:10667000381CFFF799FC04A80023012F06D10CAAAF
-:1066800002320021136001311029FBD30168042973
-:1066900004D9890803398908013100E0191C00ABCD
-:1066A000597006A90978C046D9800068C046029092
-:1066B0000798C0460390043308AD02E0452000ABC4
-:1066C00018700949201CFFF76EFC6846291CFFF76B
-:1066D000B7FD012046B0B0BC08BC18472402FFFF3C
-:1066E00059B121409DAF21403C02FFFF00B5011C84
-:1066F000022000F010F808BC184700B5011C01206A
-:10670000FFF7A2FF08BC184700B5011C012000F0EC
-:1067100002F808BC1847F0B5C7B0041C0F1C381CA1
-:1067200001A9FFF74DFE2148FFF73CFC0090787867
-:106730000001BA680430FC2A25D8FF2309339842A7
-:1067400021D8192C1FD8FD88F868C0460590F91D7E
-:10675000093106AB00207E78002E0DDD40C940C314
-:1067600040C940C340C940C340C940C301300004D0
-:10677000000C7E788642F1DC201C05A92B1CFFF75B
-:1067800021FC002805D001A800784023184301AB64
-:10679000187007490098FFF706FC002101A8FFF7D1
-:1067A0004FFD012047B0F0BC08BC18472402FFFF92
-:1067B0003C02FFFF00B5FFF71BFE08BC1847F0B511
-:1067C000C6B0071CFC88254D6868013069466860C2
-:1067D000381CFFF7F5FD102C08D300A800784023E3
-:1067E000184300AB18700220D88017E07878820038
-:1067F000FB1D09330020B968002A15D940CB0F1CB6
-:106800000131BE420DD000AA127840231A4300ABDA
-:106810001A700422DA800290039104336846002142
-:1068200015E001309042E9D300AB5C7002946968D6
-:10683000C0460391A20000201033002A05D90F1C86
-:1068400080C3013001319042F9D3684604A9FFF7B3
-:10685000F7FC012046B0F0BC08BC18479C03008040
-:1068600090B4234800680121420900D30021002789
-:106870003A1C430B00D2022211431E4A2024D36843
-:10688000012B2ED1800A00D200240C43201C1B2394
-:10689000DB01D118898B090B00D204273843D16F53
-:1068A0000968090A07D2D11D793109680968090AFE
-:1068B00001D308231843E3231B01D1188979032945
-:1068C00002D1FF23013318430B49096A10224B0AF6
-:1068D00000D2002210438907890F8901084390BC28
-:1068E0007047400C00D200240C43201CECE7000051
-:1068F00000001040680E0080C0001840F0B53A4C0F
-:10690000201C04F007FA3948E3231B01C718B979A2
-:10691000374EC51D7935062962D202A35B5C5B0048
-:106920009F44001C030E1E374E550120B8710020F5
-:10693000B060FFF795FF0523984300F06FF80CE077
-:10694000FFF78EFFC00806D3B068411CB1600A286B
-:1069500003D9042000E00220B8716422201C2BE03F
-:10696000061CC06F80230168194301600320B871C1
-:10697000201C204A002104F099F9F06F04230168DB
-:10698000994301602868016819430160F0BC08BCA4
-:1069900018470521B971296804230A689A430A60D7
-:1069A000C06F016819430160FFF75AFF08231843BD
-:1069B00000F034F8201C104A002104F077F9E5E7D4
-:1069C000FFF74EFF0423184300F028F8DEE700200D
-:1069D000296860230A689A430A60FFF7E3FAD5E75B
-:1069E0000620B871D2E70000A9792140680E008026
-:1069F0009C030080307500001027000000B50020C7
-:106A00000449C046887104480122002104F04EF96F
-:106A100008BC1847981C0080A979214090B5071C34
-:106A200031480068790803D31023011C994301E021
-:106A3000102101432D4CE268012A05D12279002A58
-:106A400002D001239B021943814202D0012000059C
-:106A50000160E068012820D11B23DB01E018808B56
-:106A6000F90804D30123DB02011C994301E0012151
-:106A7000C902814202D0002002F01AFB380907D374
-:106A8000E06F8023016899430160E018006800E02E
-:106A9000E06F80230168194301601548016A780995
-:106AA00003D3FF200130084303E0FF23081C013318
-:106AB000984380088000BA099207920F10438842D9
-:106AC00002D00C49C0460862E168012908D1790A60
-:106AD00006D3FF2304331840032801D1FFF78EFFAC
-:106AE00090BC08BC1847000000001040680E0080F1
-:106AF000C0001840C000180080B5FFF7B1FE800943
-:106B00001BD20F48E3231B01C1184A79002A14D174
-:106B100001224A7100278030006860230168994390
-:106B20000160084806E0022002F08CFC072002F019
-:106B30005BFC381CFFF736FAF5E780BC08BC184749
-:106B4000680E0080F401FFFF00B584B06946FFF7CE
-:106B500037FCFFF785FE01AB588008480068C04647
-:106B600002900748006AC046039068460021FFF77C
-:106B700067FB012004B008BC18470000000010406B
-:106B8000C000184080B584B0071C6946381CFFF768
-:106B900017FCF888FFF742FFFFF762FE01AB588051
-:106BA00068460021FFF74CFB012004B080BC08BC04
-:106BB0001847B0B5C6B0C7886946FFF701FC012485
-:106BC0001A4B9F420AD900A800784023184300AB13
-:106BD00018700220D8806846002120E01448FFF792
-:106BE000E1F9051C134A381C04A9FFF7DDF9124925
-:106BF000281CFFF7D8F9012F06D10CA9002000228C
-:106C00000A6001301028FBD3102000AB58700498A4
-:106C1000C04602900598C0460390684606A9FFF753
-:106C20000FFB201C46B0B0BC08BC1847FF01000099
-:106C30002402FFFF9DAF21403C02FFFFF0B5C6B02C
-:106C4000071C6946381CFFF7BBFBFC8878780125D8
-:106C5000102801D1192C09D900A800784023184325
-:106C600000AB18700220D880043327E0B868C04613
-:106C70000490F868C046059006AAFB1D0933002160
-:106C8000787800280DDD002040CB40C201300004A0
-:106C9000000C0428F8DB481C0104090C78788842B1
-:106CA000F1DC0B48FFF77EF9071C0A4A201C04A9F7
-:106CB000FFF77AF90849381CFFF775F96846002193
-:106CC000FFF7BEFA281C46B0F0BC08BC184700000D
-:106CD0002402FFFFC5AF21403C02FFFFF0B584B0A6
-:106CE000041C0027E688A26847490879002808D0D4
-:106CF000002E01D0012E01D1012701E0042E00D188
-:106D0000032601254148052E66D202A39B5D5B0048
-:106D10009F44001C0306080C10000580002303E0BC
-:106D2000058005E000230380438006E00023038004
-:106D3000458002E0FF2301330380CB1D79339E8918
-:106D400001235B029E4202DBD207D20F00E0012248
-:106D50006D235B01C9188988FF23E133994301231F
-:106D600019430688FF339E420DD1FF20E1300843CE
-:106D7000002A04D101239B029843011C20E0012139
-:106D8000890201431CE0012E0AD14088012804D168
-:106D900060231943002A13D00CE0202319430FE08D
-:106DA000002E0DD14088012808D1FF2381331943DB
-:106DB000002A05D001239B02194301E080231943D7
-:106DC000042002F075F909214902002002F070F94F
-:106DD000002F02D1002012E0FFE76946201CFFF7D8
-:106DE000EFFA00A800784023184300AB1870022087
-:106DF000D880684600210433FFF722FA281C04B02B
-:106E0000F0BC08BC18470000680E0080881C008099
-:106E1000C0885121890308620020704780B5164F51
-:106E2000F868012807D137239B01F818408A802190
-:106E300001431B2007E06D235B01F818808B0121C3
-:106E400049030143102002F033F9012071235B0153
-:106E5000F918088048801B23DB01F818808B012378
-:106E60001B039843412109020143002002F020F94D
-:106E7000002080BC08BC1847680E008080B5174F02
-:106E8000F868012808D137239B01F818408A80232D
-:106E90009843011C1B2008E06D235B01F818808BD0
-:106EA00001235B039843011C102002F001F9FF202D
-:106EB00071235B01F918013008801B23DB01F818EE
-:106EC000808B41231B029843092149020143002082
-:106ED00002F0EEF8002080BC08BC1847680E008065
-:106EE00080B584B00849CF6A6946FFF769FAB805EA
-:106EF000800D01AB588068460021FFF7A1F9012001
-:106F000004B080BC08BC184740001440C0889F23D0
-:106F100018400549C96A1B235B011940084303490E
-:106F2000C046C86200207047400014404000140072
-:106F300080B584B00D490F6A012F01D1FF0307E02E
-:106F4000022F01D13F0303E0002F01D10127FF02EF
-:106F50006946FFF735FA01AB5F8068460021FFF70D
-:106F60006FF9012004B080BC08BC18470020144011
-:106F7000C288A1204003002101235B039A4201D172
-:106F8000022204E00123DB039A4202D101220262C1
-:106F900000E00162081C704790B584B0071C02F045
-:106FA0009FF86946041C381CFFF70AFA01AB5C80A5
-:106FB000094FF86DC046029068460021FFF740F97E
-:106FC000F86DC007C00F0549C046C862012004B073
-:106FD00090BC08BC18470000A42A0080681C0080F0
-:106FE000C0880249C04648610020704780001400F4
-:106FF00000B584B06946FFF7E3F90648C06801AB05
-:10700000588068460021FFF71BF9012004B008BC36
-:107010001847000080001440C0880249C046C8607C
-:10702000002070478000140080B584B069468768EE
-:10703000FFF7C6F9202F07D278000C4940181B2310
-:10704000DB01C018808B06E000A8007840231843BD
-:1070500000AB1870022001AB588068460021FFF792
-:10706000EFF8012004B080BC08BC1847680E00800F
-:1070700000B584B0C1888268202A04D2101C02F0B6
-:1070800017F8002010E06946FFF79AF900A8007889
-:107090004023184300AB18700220D88068460021B6
-:1070A0000433FFF7CDF8012004B008BC184790B5B1
-:1070B00084B0C7886946FFF783F91048FEF772FF6E
-:1070C0000220391C02F0F2FF002806D00220391CF1
-:1070D00002F036FF01AB588002E0452000AB18708B
-:1070E0000749201CFEF75FFF68460021FFF7A8F85C
-:1070F000012004B090BC08BC184700002402FFFF28
-:107100003C02FFFFB0B584B0C78869468468FFF7CA
-:1071100057F91048FEF746FF0F4A0220391CFEF7C8
-:1071200043FF002806D00D4B0220391C221CFEF71D
-:107130003CFF02E0452000AB18700949281CFEF70F
-:1071400032FF68460021FFF77BF8012004B0B0BC95
-:1071500008BC18472402FFFF59B1214059B0214013
-:107160003C02FFFF00B5FFF743F908BC18470020B9
-:10717000704780B4C288194BA1214903002A03D16A
-:10718000186B1023984304E0012A04D1186B1023D4
-:10719000184348611FE0022A1DD1C2688768002099
-:1071A0003B1CC340DB07DB0F9B0203430B61013039
-:1071B0000004000C2028F3DB0020131CC340DB0775
-:1071C000DB0F9B02C71D19373B430B6101300004E5
-:1071D000000C2028F1DB002080BC704780001440A8
-:1071E00080B4C28881681002120A10430204120C93
-:1071F0000C48C04602600C4BC0461A800A0C1702AD
-:1072000012123A431204120C42605A800904090C0B
-:107210000A02090A11430904090C816099800020BF
-:1072200080BC704740001400281B0080B0B584B0BB
-:1072300013490A681204120C1302121213434A680B
-:107240001204120C1F1C1302121213438968090442
-:10725000090C0A02091211430C04240C69461D1C76
-:10726000FFF7AEF801AB5F80280420430290684628
-:107270000021FEF7E5FF012004B0B0BC08BC1847B0
-:1072800040001440C18882680802090A08430004CB
-:10729000000C0A49C046C860100C030200121843D3
-:1072A0000004000C08611004000C0202000A1043E4
-:1072B0000004000C486100207047000040001400EA
-:1072C00090B584B0164BD9680904090C0A0209125A
-:1072D00011431A691204120C170212123A435B6925
-:1072E0001B041B0C1F021B123B431F043F0C0523F6
-:1072F0000093848801AB1C800024043B5C704088B0
-:1073000000AB5880D980100438430290039468463B
-:107310000021FEF795FF012004B090BC08BC18477F
-:107320004000144000B584B00B498A6A05210091E1
-:10733000818801AB19800021043B5970408800AB63
-:107340005880DA80029103916846FEF779FF0120A8
-:1073500004B008BC18470000C0001440C0880249AF
-:10736000C046886200207047C000140000B584B099
-:107370000B490A6A05210091818801AB198000211F
-:10738000043B5970408800AB5880DA800291039129
-:107390006846FEF755FF012004B008BC18470000FE
-:1073A000C0001440C0880249C046086200207047EF
-:1073B000C000140000B5C0880249FEF7F4FD0020AB
-:1073C00008BC18477502FFFF00B584B06946FEF798
-:1073D000F7FF0648006B01AB588068460021FEF7B6
-:1073E0002FFF012004B008BC18470000680E008081
-:1073F00000B5FEF7FDFF08BC184700B5FEF7F8FF23
-:1074000008BC184700B5FEF7F3FF08BC184780B565
-:10741000071C1048FEF7C6FD01204002A1214903C8
-:10742000886000210C48C04601710C480268520C6B
-:1074300005D20268120C06D10068800A03D30848FE
-:10744000C046C76002E00748C0460764081C80BC0D
-:1074500008BC1847D5942140280F00800000104038
-:10746000400118000000008000B501200349C0461B
-:1074700008721220FFF7CBFF08BC1847881C008059
-:1074800000B501200349C04648721520FFF7BFFF31
-:1074900008BC1847881C008000B501F0F9FF0120E6
-:1074A00008BC184780B584B0071CF88802F0FEF8C5
-:1074B00000280CD16946381CFEF782FF064801AB54
-:1074C000588068460021FEF7BBFE012000E0002046
-:1074D00004B080BC08BC1847FFFF000080B584B032
-:1074E0006946FEF76DFF012701AB5F80094881897E
-:1074F0000904C2891143029181880904C0880843A4
-:10750000039068460021FEF79BFE381C04B080BC47
-:1075100008BC18474C2A008000B5FEF769FF08BC7C
-:10752000184700B5FEF764FF08BC184700B5FEF722
-:107530005FFF08BC184700B5FEF75AFF08BC1847A4
-:1075400000B5FEF755FF08BC184700B5FEF750FF21
-:1075500008BC184700B5FEF74BFF08BC184700B53C
-:10756000FEF746FF08BC184700B5FEF741FF08BC10
-:10757000184700B5FEF73CFF08BC184700B5FEF7FA
-:1075800037FF08BC184700B5FEF732FF08BC1847A4
-:1075900000B58CB008A9FEF713FF694608A802F0F1
-:1075A000A9FF022008AB5870694608A8FEF748FEFC
-:1075B00001200CB008BC184700B5FEF719FF08BC45
-:1075C000184790B584B0071C6946381CFEF7F8FED2
-:1075D000FA8812490124C81D8930002A0FD004708E
-:1075E0004470B868000C8031C882B868C04608830F
-:1075F000F868000C4883F868C046888302E00021E0
-:1076000001704170064801AB588068460021FEF7C2
-:1076100017FE201C04B090BC08BC1847680E008000
-:10762000FFFF000000B5FEF7E3FE08BC184700B5F9
-:10763000FEF7DEFE08BC184700B5FEF7D9FE08BC11
-:10764000184700B5FEF7D4FE08BC184700B5FEF792
-:10765000CFFE08BC184790B584B0071C6946381C9B
-:10766000FEF7AEFEF8880324E40404430323DB049E
-:107670009C4202D30F4B9C4206D90F4801AB588065
-:1076800068460021FEF7DCFD0120800720430068EA
-:10769000002100AB5970FA88C046DA80029003914D
-:1076A00068460433FEF7CCFD012004B090BC08BC52
-:1076B00018470000E0001800FFFF000080B584B00C
-:1076C000071C6946381CFEF77BFEF8880323DB04A1
-:1076D0001843984202D30A4B984208D9094801AB93
-:1076E000588068460021FEF7ABFD012003E0B96831
-:1076F000C0460160002004B080BC08BC18470000F0
-:10770000E0001800FFFF000080B586B002A9FEF778
-:1077100057FE012702AB5F700020D8800A484168FD
-:10772000C04604918168C0460591C168C046009179
-:107730004069C0460190694602A8FEF781FD381CE9
-:1077400006B080BC08BC18476819008000B5C16845
-:107750008068FEF747FB002008BC184700207047F0
-:1077600090B584B0041C0F1C68465021FEF736FE0D
-:1077700001AB5C80029768460021FEF761FD04B012
-:1077800090BC08BC184780B584B0071C68465121DE
-:10779000FEF724FE01AB5F8068460021FEF750FD36
-:1077A00004B080BC08BC1847002070470020704718
-:1077B00090B584B0002712490968124A126B102351
-:1077C0001A400124002A00D001278A0C03D33A046E
-:1077D000120C02271743C90C03D33904090C0427E0
-:1077E0000F436946FEF7ECFD01AB5F806846002160
-:1077F000FEF726FD201C04B090BC08BC1847000012
-:1078000000001040C000184000B584B06946FEF783
-:10781000D7FD0648C06D01AB588068460021FEF7D1
-:107820000FFD012004B008BC18470000A42A008006
-:1078300000B5FEF7DDFD08BC184770470020704713
-:1078400000207047002070470020704700207047DC
-:107850000020704700B5FEF7CBFD08BC18470000BC
-:1078600080B585B001A9FEF7ABFD002001AB5870D3
-:107870000C49C9680127012902D10397049701E047
-:1078800003970490684601F033FD02AB0098C046B0
-:107890005880002101A8FEF7D3FC381C05B080BC3D
-:1078A00008BC1847680E0080704704490020002279
-:1078B0000A70013001316828FAD37047A082204055
-:1078C0000022884203D3401A01328842FBD2101CA6
-:1078D0007047884202D3401A8842FCD2704790B465
-:1078E000011CFF27042927DA0020144A43001B1833
-:1078F000DB00D458630C1AD24B005918C9005758F2
-:1079000043001B18DB00D75089189A184F68C046EF
-:1079100057608B68C04693600B69C04613614B6922
-:10792000C0465361C968C046D16090BC7047013001
-:107930000006000E0428D9DB381CF6E740AB2040D7
-:10794000F7B5C4B0041C0020469A112111406ED036
-:1079500000277900C919C900574A5158490C03D268
-:1079600001300006000E04E0791C0F063F0E042FC4
-:10797000EFDB00285BD0002600220092402300218C
-:10798000002002AA00F088FA04A9002082008A5888
-:107990001206120EA24203D1721C1606360E04E025
-:1079A00001300006000E1028F0DB002E3DD0042C24
-:1079B0003ED1800008584001800D00220092102323
-:1079C000002102AA00F068FA0021019102A805999D
-:1079D000490C890529D0C1680A06120E459B9A42B6
-:1079E00011D1C0684001860D002200920C230021B5
-:1079F000301C02AA00F050FA0199029D481C0106B1
-:107A0000090E01910EE04801860D0022009210231C
-:107A10000021301C02AA00F03FFA02A80599490C87
-:107A20008905D8D1019900290FD1FF203DE040E020
-:107A3000800008584001860D002200920C2300218E
-:107A4000301C02AA00F028FA029D01200004469A88
-:107A500010437900C919C900174AC0465050301C5C
-:107A60008E1870601020042C00D00C20041CB06014
-:107A700000202021469A1140202900D0281C306186
-:107A80002819FF21FF3008300931FFF719FF4301A2
-:107A90001818C000001B706100205021469A114048
-:107AA000502900D1281CF060381C47B0F0BC08BC3D
-:107AB0001847FF20F9E7000040AB204080B40023C6
-:107AC0000022002906D9875C7B401B061B0E013271
-:107AD0008A42F8D3D8430006000E80BC7047F0B548
-:107AE000C6B0042807DA41000918C9004591414A87
-:107AF00051584B0C02D20020C04376E001235B04B6
-:107B0000194043001818C0003A4A1418002961D0DF
-:107B1000002102912069A168451830D0FF21681E1C
-:107B20000931FFF7CDFE616840180190019881424C
-:107B300002D1A668AF1B09E00026FF21281C0931ED
-:107B4000FFF7C7FE071C01D1FF270937002200926B
-:107B50000198311C03AA3B1C00F09EF903A8391CB4
-:107B6000FFF7ACFFC043029948400106090E02919D
-:107B7000ED1BA068A84200D10025002DCED80299A7
-:107B8000CF43002200920C230021606803AA00F07A
-:107B900083F92069C04603900598000A000239065F
-:107BA000090E08430590FF231B02984305900C2102
-:107BB00003A8FFF783FFFF231B02059999430006E3
-:107BC000000E0002084305900C230021606803AA00
-:107BD00000F0CAF900204599064AC0465050C143FA
-:107BE0006160A160E1602161616146B0F0BC08BCE8
-:107BF0001847000040AB2040B0B44C42002900DBE5
-:107C00000C1C0027FF43042821DA124D43001818EA
-:107C1000C0004019012A05D0022A09D0032A16D132
-:107C200001690BE0002912DB02698A420FD305E0EB
-:107C3000002907DAC168A14209D3091BC160C068E5
-:107C4000B0BC7047C168091902699142F6D9381C65
-:107C5000F6E7000040AB2040F0B584B0171C0D1CC7
-:107C60000021029142001218D2002C498B581B06A9
-:107C70001B0E01930023DB43042802DA019840081D
-:107C800001D2181C46E05418E068C21921698A42E2
-:107C900000D90F1A002F3CD9A068E1684018FF21D5
-:107CA0000931FFF70DFE61684618A068E1684018C9
-:107CB000FF210931FFF70DFEC219FF2109318A4268
-:107CC00014D9019AC04600920B1A0393011C301C70
-:107CD0002A1C00F0E1F8E068039BC018E060039BF9
-:107CE0005D19FF1A02981818029010E0019AC04618
-:107CF0000092011C301C2A1C3B1C00F0CDF8E068EF
-:107D0000C019ED19E0600298C01902900027002FF9
-:107D1000C2D8029804B0F0BC08BC184740AB204061
-:107D2000F0B583B0171C0D1C002101914200121800
-:107D3000D200029230498A581206120E0024E443FF
-:107D4000042801DA500901D2201C51E0029A54188B
-:107D5000E068C2196069824201D92269871A002F3E
-:107D600045D9254EA068E1684018FF210931FFF789
-:107D7000A7FD616840180090A068E1684018FF21E5
-:107D80000931FFF7A6FD029AB15801235B0419439C
-:107D9000B150C119FF220932914213D9131A011CA3
-:107DA00000982A1C1E1C00F0DFF8E0688019751985
-:107DB000E0602169884200D92061BF1B019830181A
-:107DC000019012E0011C009E301C2A1C3B1C00F09C
-:107DD000CBF8E068C019ED19E0602169884200D94C
-:107DE00020610198C01901900027002FB9D801988F
-:107DF00003B0F0BC08BC184740AB2040B0B5C3B0DE
-:107E00000C1C0027FA43042806DA41000918C900AF
-:107E1000144845586B0C04D2101C43B0B0BC08BCCD
-:107E2000184762091BD300220092081840680C23EF
-:107E3000002101AA00F030F8112C0DD0122C0DD029
-:107E4000132C05D0142C0AD103980004070E06E069
-:107E5000039807063F0E02E0019F00E0029F381CD6
-:107E6000DBE7000040AB20400349002000220A5419
-:107E700001306028FBD3704740AB204000B502F0D2
-:107E80006FFA572002F0CCF902F040F9000AFBD358
-:107E900002F04EFA08BC1847F0B582B0079D141CDA
-:107EA0001F1C304AD26F202316689E431660331C75
-:107EB000FF2201322A4040020843050A061C000C3A
-:107EC0000190002A20D002F04BFA532002F0A8F9CA
-:107ED0000198C046009002F0A3F9281C02F0A0F916
-:107EE000301C02F09DF902F023FAFFF7C7FF02F001
-:107EF00037FA542002F094F9009802F091F9281C06
-:107F000002F08EF9301C14E002F02AFA522002F03E
-:107F100087F9019802F084F9281C02F081F9301CDD
-:107F200002F07EF9002002F07BF9002002F078F9DF
-:107F3000002002F075F9002002F072F9002F05D937
-:107F400002F0E4F820700134013FF9D102F0F0F9B9
-:107F5000044AD06F202301681943016002B0F0BCCD
-:107F600008BC1847680E0080F0B582B0141C1F1CB6
-:107F700042020A43151C012854D02C49C86F202303
-:107F800002689A430260C86F402301681943016088
-:107F900002F0E6F9532002F043F9280C061C02F027
-:107FA0003FF9280A0190009002F03AF9281C02F0EB
-:107FB00037F902F0BDF9FFF761FF02F0D1F9842033
-:107FC00002F02EF9301C02F02BF9009802F028F98B
-:107FD000281C02F025F9002F05D92078013402F081
-:107FE0001FF9013FF9D102F0A3F902F0B9F983209A
-:107FF00002F016F9301C02F013F9019802F010F9A2
-:10800000281C02F00DF902F093F9FFF737FF07493A
-:10801000C86F402302689A430260C86F202301683A
-:108020001943016002B0F0BC08BC1847680E00801C
-:108030007047000080B501F08FF8064FC046F86029
-:1080400001F0F2F8788001F0B1F8387180BC08BC1A
-:1080500018470000680E008000B501F005F90249DC
-:10806000C046088008BC1847680E00800B48C168ED
-:10807000012911D1C16F02230A681A430A60C16F36
-:1080800080230A681A430A60C118086882230268BC
-:108090001A4302600020088170470000680E0080CB
-:1080A000F0B44A49CA1D9D32002000278300D750F2
-:1080B00001301728FAD3464C00208200A750013027
-:1080C0002028FAD3434A00208300D75001302028CB
-:1080D000FAD3A76197614F658F653F4DC0462F600A
-:1080E0006F60AF60AF61EF602F616F610020C10012
-:1080F00009184901354BC9188600CB1DF933344C9A
-:108100003419E36311235B01CB1863630D239B01D7
-:10811000CB18B418E36323235B01C91861630130F2
-:108120000228E4DB2948C11DF931294CC046A1626F
-:10813000616B0D239B01E162C1189162516BC046D6
-:10814000D1620821E1642549C046216524490B69B3
-:10815000C0466365C31D4D33E36525668B68C04625
-:108160006366CB68C046A3661E4BC046E3662767BE
-:108170000B23DB01C318A36767670126E31D69337F
-:108180006661E7611F730223D364174BC046136512
-:10819000CB69C0465365C31D5133D3652B1D136690
-:1081A0004B69C04653668969C04691660F49C0460F
-:1081B000D16616670F23DB01C01890675667D76139
-:1081C000D01D693056610773F0BC7047680E00809F
-:1081D000E42C0080642D008090EE204030011800D7
-:1081E0007C2900800055FFFF380118001055FFFF63
-:1081F00090B400211E4ABB231B01D718F973192321
-:10820000DB01D0180124CD231B01D318C1611C70E0
-:1082100033239B01D3189960B97359612F239B01B4
-:10822000D3181960134B5127BF0303633B60846964
-:10823000E4184463043C7C600124E40284630E4C33
-:10824000C046BC60046BC04644628469E4180B4BB2
-:10825000E318FB60036BC0468362436AC046036257
-:10826000C16351649164D165D16690BC70470000D0
-:10827000680E008000002040FC070000FCF7FFFFB4
-:1082800090B400221B49C9231B01C81802710120A8
-:10829000BB231B01CB1858731748031C0027DC1D98
-:1082A000C1341C65231C01373F2FF8D31A651923ED
-:1082B000DB01CF1833239B01CB183A619861402032
-:1082C000F860DA611A62CA640A660C48C046C26085
-:1082D0000B48006BC006C00EF8630A480168C04630
-:1082E00019804168C04659808068C046988090BC1B
-:1082F00070470000680E008090BC204090EE204047
-:10830000800014404000144000200A49C046087311
-:10831000CB1DFF333A338861C8611870064AC046E6
-:1083200010655066906608705870BB231B01D11809
-:108330000873704728050080680E0080F0B42F494C
-:108340002F4AC046116101239B02C81850612D4875
-:10835000C0461062DB00C3185362002313635363EB
-:10836000294A2A4FD41DFF34FA3414C7083F3B6111
-:108370001C1F7C61264FC0463960B8617961F86284
-:108380003B637B64BA64FA65224FFE1DF936224DC9
-:10839000EC1D793426625126B6033761246AC04643
-:1083A00074612F671D4D09277F04EC1D75347C60B7
-:1083B0003D601B4CC0463C61E61D75367E61194F21
-:1083C000C0467C603D600F1C0021FF2401341D1C51
-:1083D0008B00FD500131A142FAD3011C002001277E
-:1083E000FF028300CD500130B842FAD30020810053
-:1083F000555001308028FAD3F0BC704724A32040A8
-:10840000400118002483204024A920408001180046
-:10841000A803008024A72040680E008024A82040E4
-:10842000A4A8204008040080B8B52C48FDF7BAFD88
-:1084300001202B490A68520C06D20A68120C02D19C
-:108440000A68920A00D200200406240E254AD71D8D
-:108450000D37002300209D0078510133042BFAD3FF
-:1084600001273F055061F860D061F8610023DB43CC
-:1084700093613B6113623B6200271B4B8D68C046D2
-:1084800000958D69C0460095002C0BD0DD6BC04671
-:1084900000959D6BC04600955D6BC04600951D6BB9
-:1084A000C04600950137402FE8D300276C460123D2
-:1084B0005B071C4301E0206001370D682B0902D2E5
-:1084C000802FF8D301E0802F03D308494B6E01338E
-:1084D0004B66D062B8BC08BC18470000F401FFFF2F
-:1084E00000001040680E008000011840A08220406B
-:1084F00090B400210E4F0F4A00204C01641AA400D2
-:10850000A318586098601864586410535880CC00C1
-:10851000E4199867DC6201310329EED30649C046AD
-:10852000086048608860C860086190BC70470000BF
-:10853000AC6621405C2B0080D02C00806421054873
-:10854000C04601630021C943416381630021C163C7
-:1085500001647047680E008080B4012040020A491F
-:10856000C04608603C20486088600848C046C86033
-:108570000020074A8700CB68C046DA510130102836
-:10858000F8D380BC70470000E42D0080F42D0080FB
-:108590005D4CFFFF1249134867239B01CA1806C0B0
-:1085A0000838114BCA18C160826001610F49104838
-:1085B000A7239B01CA1806C008380E4BCA18C16011
-:1085C000826001610C480D4967239B01C21805C1F7
-:1085D0000839054BC218C8608A60086170470000FE
-:1085E000AC1E2140482E0080FC1F0000ACEE204055
-:1085F000342E0080FC2F0000AC3E21405C2E008019
-:1086000090B40021404C00200A0112191923DB010B
-:10861000D218D06210635063906301310329F3D301
-:108620003A49C04608634863886320600121E31D1E
-:108630005933606019711872987198725971587233
-:10864000D871D872E21D4932117319709073987005
-:1086500051735970D073D8701171117290719072FA
-:1086600050715072D071D07218730222E71D6937B1
-:108670003A709973BA7058737870D873F87039710A
-:108680003A72B971B97278717A72F971F972397393
-:10869000E31D79331A70B973997078735A70F9734E
-:1086A000D9701A711A7299719A7258715A72D97175
-:1086B000DA721973E71D89373A709973B970587374
-:1086C0007A70D973F97039713A72B971B972787177
-:1086D0007A72F971F9723A73E31D99331A70B973AA
-:1086E0009A7078735A70F973DA7019711A729971F5
-:1086F000997258715A72D971D9722061E0606061C3
-:10870000A06090BC70470000A01C0080E8190080A9
-:10871000812000020149C04688627047C0001400F1
-:1087200009490A4BC818043BC91808600021C21D3A
-:108730002932C261101C01310829F8D3C11F29391F
-:108740000020C86170470000680E008084090000A6
-:1087500006480749C0460880488000208880C880B5
-:1087600088600449C046486188617047FFFF000087
-:108770004C2A00806C06008000210648C21D193278
-:10878000C1600161C16101621171FF30013041625C
-:10879000704700006C06008009480A4BC04618600C
-:1087A0000021C21D4D32C260101C01311429F8D3C2
-:1087B000C11F4D390020C8605860986070470000A4
-:1087C000D80700806C06008000B50B490B48FDF708
-:1087D000EAFB0B48006A0123DB0398430949C046C2
-:1087E00008620948C168012904D1C06F802301686B
-:1087F0001943016008BC1847C1BD2140759821404C
-:10880000C0001840C0001800680E008000B50F4876
-:10881000C168012904D1C06F8023016899430160B8
-:108820000B4B0C480C4A0021FDF7BFFB0B48418D58
-:10883000013141850021C1850948006A0123DB031C
-:1088400018430849C046086208BC1847680E0080F3
-:1088500059BD214075982140B80B000000000080F0
-:10886000C0001840C0001800F0B51B4C1026E0688E
-:10887000012808D16088002805D12079002802D17C
-:108880001920A06700E0A667002007235B02E51817
-:10889000C143E86169625908A1277F0379600F210C
-:1088A0007960E11DB93108710120B8604002B860FB
-:1088B00000F04CFA00F0F0FA0420B860072078616C
-:1088C0007E601B23DB01E018C08B04231840E862A4
-:1088D000F0BC08BC18470000680E008090B4021C71
-:1088E0000020FF2301339A4208D0012900D1012042
-:1088F000002A01D10223184390BC70471B4AD76855
-:108900001A4B19791C1C37239B01E318012F0DD139
-:108910005788002F0AD100290AD1598B0A0900D3A0
-:1089200002204909E8D301231843E5E7002903D0D1
-:10893000988A8007800FDFE76D235B01D1188A8852
-:10894000FF27013717400A49C98803D04B0A01D3D2
-:108950000320D1E7130A03D30B0A01D30220CBE78C
-:10896000D209C9D3C909C7D30120C5E7680E008061
-:10897000081C0080F0B5C1B0012000075249C04674
-:10898000086052484269400DA1214903486050489F
-:10899000C06A504B1843002103031B0B4E4C276F3A
-:1089A0003D032D0BE71D7937AB421CD0E31D793316
-:1089B0001B6AC046409301239B0703431B68CC00FE
-:1089C0006E46335101239B07061D33431B686C44DD
-:1089D000636008300131409B834200D83F48030365
-:1089E0001B0BAB42E7D1002001231B0313403C4C7F
-:1089F00003D0636A0133636209E0130B03D3236A74
-:108A00000133236203E0374B5C6D01345C65002960
-:108A100009D0031CDC00231C6B445C680130230D6F
-:108A200001D28842F5D1304C25686B0C05D2236801
-:108A30001B0C08D12468A30A05D320242B4BC04665
-:108A40005C6200245C62254B234C5126B6032367ED
-:108A500033613D6AC04675610225A12676037560C3
-:108A60000125B560E61DB9363571884221D0251C37
-:108A7000C3006C46E4582E6F6B4434605B682C6F07
-:108A8000C04663602B6F08332B673C6AA34202D356
-:108A9000124BC0462B67031CDB006B445C68013043
-:108AA000230D04D35124A4032B6FC046A361884235
-:108AB000DED1100B03D30E490120FDF774FA41B04B
-:108AC000F0BC08BC18470000000000B000011440D2
-:108AD0000040144000002040680E008024A7204081
-:108AE000A42A0080A082204000001040C00018008E
-:108AF000C94FFFFFF0B40021002307220624474F8F
-:108B0000C0463C613A610133202BF9D304253D6115
-:108B100005233B613C613A613C613A613D613B61E7
-:108B20003F4DAB6FDE0802231E40042333433B61FD
-:108B3000052333433B61AB6F9E0802231E40042391
-:108B400033433B61052333433B61AB6F5E08022334
-:108B50001E40042333433B61052333433B6102231F
-:108B6000AE6F1E40042333433B61052333433B6117
-:108B7000AB6F5D0002231D4004232B433B610523A3
-:108B80002B433B61C50802231D4004232B433B615B
-:108B900005232B433B61850802231D4004232B43FF
-:108BA0003B6105232B433B61450802231D40042301
-:108BB0002B433B6105232B433B61022505400423E6
-:108BC0002B433B6105232B433B61400002231840AC
-:108BD000042303433B6105231843386100253D61AD
-:108BE00001233B613D613B6100203D610D4B1B69F1
-:108BF00049001E1C02233340194301233B6101300D
-:108C00001028F2D302203861032038613C613A61B8
-:108C10003C613A6138614808F0BC7047800014003C
-:108C2000680E008080001440F0B40024072306275B
-:108C3000444AC046176113610134202CF9D304263D
-:108C4000166105241461176107231361166114610D
-:108C5000176113613C4B9B6FDD0802231D402B1CE9
-:108C60003343136125431561374B9B6F9D080223E6
-:108C70001D402B1C3343136125431561324B9B6F01
-:108C80005D0802231D402B1C3343136125431561EE
-:108C90002D4B9D6F02231D402B1C33431361254335
-:108CA0001561294B9B6F5D0002231D402B1C334334
-:108CB000136125431561C50802231D402B1C334356
-:108CC000136125431561850802231D402B1C334386
-:108CD000136125431561450802231D402B1C3343B6
-:108CE000136125431561022505402B1C3343136195
-:108CF00025431561400002231840031C33431361D0
-:108D000020431061176107231361166114614C0041
-:108D100000200F21251CCD4002231D4004232B439E
-:108D2000136105232B431361013001391028F1D35E
-:108D30001761072313611761136103201061F0BCF1
-:108D40007047000080001400680E0080F0B54F4DA1
-:108D5000082102202A1CFDF727F94D4C71235B01E5
-:108D6000E71838801A2102202A1CFDF71DF97880A7
-:108D7000207900280BD000203880E068012810D12D
-:108D80004448006801239B02184399020860E06888
-:108D9000012806D16088002803D1F9211220FFF7AD
-:108DA00043FF0121C9030020FFF73EFF00257D2678
-:108DB000F60000E001350020FFF79CFE000C01D317
-:108DC000B542F7D3002505E0032109030020FFF792
-:108DD0002BFF01350020FFF78DFE400B01D2B5427D
-:108DE000F2D30420FFF786FEFF23E13398430121ED
-:108DF00001433888FF230133984203D12F235B01BD
-:108E0000194316E0012809D17888012803D12323CA
-:108E10005B0119430DE0202319430AE0002808D123
-:108E20007888012803D10B23DB01194301E080235B
-:108E300019430420FFF7F8FE092149020020FFF73B
-:108E4000F3FEE06800280CD100211B20FFF7ECFEA8
-:108E50001A20FFF74FFE0121C90301431A20FFF733
-:108E6000E3FE002703E0082F01D30F2F08D9381C99
-:108E7000FFF740FE790009191B23DB01C91888831D
-:108E80000137202FEFD3F0BC08BC1847EDAF2140CD
-:108E9000680E00800000104081B013480168C04691
-:108EA00000914168C04600918168C0460091C16848
-:108EB000C04600910169C04600914169C0460091D9
-:108EC0008169C0460091C169C0460091016AC046EF
-:108ED0000091416AC0460091816AC0460091C06A13
-:108EE000C046009001B0704700081440F0B583B050
-:108EF000684D1B23DB01EF18F88B0422024002921D
-:108F000071235B01E8180188C04601914088C04682
-:108F10000090002403E0082C01D30F2C08D9201C5A
-:108F2000FFF7E8FD610049191B23DB01C91888839D
-:108F30000134202CEFD3584CE069002815D0574E4F
-:108F40002025013D5349E06930400BD068004018AE
-:108F500037239B01C018818B281CFFF765FEE06951
-:108F6000B043E0617608002DEBD10120FFF7C2FD90
-:108F70004849C046F883F88BC20825D3CA68012A3D
-:108F800013D10A79002A1FD1498800291CD10199DF
-:108F9000434A002905D0012916D1518BC90813D2A3
-:108FA0000FE0518B09090FD20BE00A79002A0BD18F
-:108FB0006D235B01C9188A88C988114049090907CE
-:108FC00002D104239843F883F88B04210140029ACC
-:108FD0001FD0B98B4A0B27D3800925D3FF230198D3
-:108FE0000133984220D000250098012800D10502C5
-:108FF0000198002802D101235B031D43A94213D02D
-:109000000020291CFFF710FEBD830020C0436062D2
-:109010000AE0B88B400B07D2092149020020FFF774
-:1090200003FE09204002B883F88BC0082DD31D48E9
-:10903000C76A01980099FFF751FCC207D20F1A497D
-:1090400003D00423CD6D2B4303E00423CD6D9D435A
-:109050002B1CCB65830803D30223CD6D2B4303E088
-:109060000223CD6D9D432B1CCB65616A81420CD0E0
-:1090700060620E48002A03D0FF212131394303E00A
-:10908000FF2321339F43391CC16203B0F0BC08BCED
-:1090900018470000680E0080681C008000000080F7
-:1090A000281C008040001440A42A008040001400C6
-:1090B00090B4012220280FD243000F1C07495C18EE
-:1090C00037239B01E3189F83824007235B02C91863
-:1090D000101CCA691043C86190BC7047680E0080BC
-:1090E0000B4840690B49C98B04220A400A4906D043
-:1090F0000123DB0298430123CA6D1A4305E00123D3
-:10910000DB021843CA6D52085200CA65704700005E
-:1091100080001440E81B0080A42A008000B584B0C1
-:10912000FFF7DEFF011C05200090002001AB188036
-:10913000043B58701B2200AB5A80D9800549C96D89
-:10914000C0460291039068460021FDF779F804B00B
-:1091500008BC1847A42A00800F480168490C05D2B2
-:109160000168090C06D10068800A03D30B48006827
-:10917000000C01E00A48806C0004000C094B984286
-:1091800005D00233984202D0074B984201D101200A
-:1091900070470020FCE7000000001040000018406D
-:1091A00000000080049900000799000090B4012499
-:1091B000211C18480268520C06D20268120C02D117
-:1091C0000068800A00D200210906090E124F134AD6
-:1091D00002D03868000C00E0906C0004000C104BCA
-:1091E000984208D00233984205D00E4B984202D0E4
-:1091F000023B98420CD1002902D0F86A000C00E032
-:10920000D06C400A00D200242006000E90BC7047AB
-:109210000020FBE700001040000018400000008024
-:1092200004990000079900000C480168490C05D218
-:109230000168090C05D10068800A02D308488068DB
-:1092400001E00848406C0004000C0021032803D012
-:10925000400801D301207047081CFCE700001040C3
-:109260000000184000000080F0B501271A4C256866
-:10927000FFF772FF031C194A022101261848012B2F
-:109280001BD1CB041E605523036000234360066896
-:10929000552E1BD1AA26066043600368AA2B15D160
-:1092A0000923036005230F4FC0463B6003230E4F85
-:1092B000C0463B601160076808E008232360042370
-:1092C0000A4FC0463B60116006602768C0462560B3
-:1092D000381CF0BC08BC18470000204000002440A7
-:1092E0000000224000002A400000264000002840E4
-:1092F00080B5071CFFF730FF012805D11948006829
-:109300001949496B084022E018480168490C05D208
-:109310000168090C06D10068800A03D3144800686C
-:10932000000C01E01348806C0004000C124BC018C4
-:1093300008280BD201A31B5C5B009F4405030703B5
-:1093400007070503032002E0012000E000200121BF
-:109350003860800700D100210806000E80BC08BCE0
-:1093600018470000346E21400000114000001040FA
-:109370000000184000000080FE66FFFFF0B582B0DC
-:10938000071C01200190FFF7E7FE012813D1382FB9
-:1093900001D0A82F07D10026F643341CA82F02D1F4
-:1093A000301C0096351C1120000406624462856260
-:1093B0000099C046C16200210848C0460160382FAC
-:1093C00001D0A82F05D101210160A82F01D10321CF
-:1093D0000160019802B0F0BC08BC1847346E21400F
-:1093E000704700007047000090B5071C124C2168C0
-:1093F000124881420BD00023211CE21DC13200E043
-:1094000008C19142FCD32060C820A0806772380157
-:1094100000F018F827720A48C046E060092F00DB08
-:109420000027E019017D01310175E0880130E080FD
-:10943000012090BC08BC184700000080EEFFC0D09F
-:109440000810000380B4084AD11D89310B7A202B03
-:1094500001D300230B72071C087A431C0B7280187F
-:109460009030477280BC704700000080074901229D
-:109470001204086802400120002A06D10A68120C72
-:1094800002D10968890A00D200207047000010400C
-:1094900090B5071C094C381C211CFCF791FF381CA7
-:1094A00000F00EF80123D84201D1000CE080002129
-:1094B000201CFCF7C5FE90BC08BC1847C4662140C0
-:1094C000F8B5071C797A76480023764C01295DD1DE
-:1094D000A288C0460092A1898A4274DAFA7A002AE8
-:1094E00015D07A6C002A12D08A4210D8009A511CEA
-:1094F000A180A188C0464181786C6B4EC046F08047
-:10950000A06A5823796C59434018C11A28E0228870
-:1095100001321204120C22808A4200DB23800022D6
-:10952000002969DD5F4CA46A5E4B1D8858236B439C
-:10953000E318DE1D013601239B0733431B681B061E
-:1095400015D15849009A01328A808A88C0464281E2
-:1095500008880130544EC046F080582068432118D6
-:10956000381C00F039FBF0880004001495E04D4BE6
-:1095700001352D042D0C1D808D4201DB00251D8041
-:109580000132120412149142CEDC81E0E188E289BA
-:10959000914218DAF97A00292FD0796C4904490CE4
-:1095A00079642AD0E289914227D8E1880131E180AB
-:1095B000E188C04681810123DB03786C18433A4E71
-:1095C000C046F08000E063E0E06A796C4B00591817
-:1095D00049014018C11F5939381C00F00FFBE06ADF
-:1095E000796C4A0052185201801801390904090C9B
-:1095F000603800F089FBB6E74AE061880131090470
-:10960000090C6180E289914200DB63800021002A1D
-:109610003EDD244CE46A234B5D886B005B195B01E3
-:10962000E318DE1D013601239B0733431B681B062D
-:1096300020D11C4EF1880131F180F188C046818132
-:1096400070880123DB03013018431749C046C880E6
-:109650006800401940012118381C00F0CFFA7188C9
-:109660004A0052185201F06A801800F04DFB0E4972
-:10967000C88879E70B4B01352D042D0C5D80954290
-:1096800001DB00255D800131090409148A42C2DC36
-:109690000189013101810020C043F8BC08BC184792
-:1096A0004C2B00804C2A0080C4662140F0B4061C7C
-:1096B0000123DB0333400124444F0020444A454D3D
-:1096C000D11D3931002B41D0E303F31A73D0EE8959
-:1096D0009E4271D3EE88002E6DD0ED6A5E1E73003F
-:1096E0009B195B01ED18AE683606360E032E02D0CC
-:1096F000CE890136CE814035AD8BAD00354E766AD0
-:10970000C0467051558901355581324EF26AD218E2
-:109710009060F26AD2189063F26AD218D063F26A4B
-:10972000D2181064F26AD2185064F26AD2189064A7
-:10973000F26AD218D064F0880138F080F088C04610
-:1097400088812449002839D14F8037E0002E38D94C
-:10975000AB89B34230D3AB88002B2CD05389013373
-:1097600053812A1CAD6A5823013E7343ED18AE683D
-:109770003606360E032E02D0CE890136CE81A86081
-:10978000956AED18A863956AED18E863956AED1877
-:109790002864956AED186864956AED18A864956A5E
-:1097A000EB18D8649088013890809088C046488132
-:1097B000002803D101E004E003E01780201CF0BC86
-:1097C0007047CA890132CA81F9E70000FFFF000033
-:1097D0000C2B00804C2A008000B50021416010490C
-:1097E0004A68002A10D1CA68002A04D0CA1D19325A
-:1097F0001279002A08D04A69002A0BD18861486191
-:1098000000F010F808BC18474A69002A02D18861A4
-:109810004861F7E78A69C04650608861F2E7000056
-:109820006C060080B0B52A48406900284CD0082258
-:10983000C1680A400027274BD91DB931002A11D031
-:109840000422254CC0460C61244CC0464C62244C7A
-:10985000C0468C62234CC046CC62234CC0460C638D
-:109860004F6312E00522214CC0460C61204CC046DB
-:109870004C62204CC0468C621F4CC046CC621F4CD0
-:10988000C0460C631E4CC0464C634024CC824F83C0
-:109890001C4F0021002A0CD98C0005196D6A7D40EF
-:1098A000E418FF340134656201319142F4D3102988
-:1098B00007D28A00D218FF320132576201311029D3
-:1098C000F7D3114900F022F8B0BC08BC18470000DB
-:1098D0006C060080ACAB20402801400001234567A6
-:1098E00089ABCDEFFEDCBA987654321020014000EF
-:1098F00067452301EFCDAB8998BADCFE1032547670
-:10990000C3D2E1F03636363630802040B0B50F1C79
-:10991000154DE91DC931154C231C154A0020FCF7D3
-:1099200044FBE91DFF311E31231C0D1C114A01208F
-:10993000FCF73BFB291C231C0E4A0020FCF735FBDF
-:10994000391C231C0C4A0120FCF72FFB00210B487B
-:10995000C21D193251710121FF3001304162081CD2
-:10996000B0BC08BC18470000ACAB20407508FFFF36
-:109970002800030040000200140007006C0600806D
-:10998000F0B5374A506901239B0708301843006837
-:109990000106090E334B012949D11F68191C324BAE
-:1099A0009F4204D1FFF73EFFF0BC08BC18470023DC
-:1099B0009F00CC595569EF193C610133052BF7D352
-:1099C000000A0002022318435369C0469860506998
-:1099D0000823C2681340254FFA1DB932002B02D06C
-:1099E0000423234C01E00523224CC046146140248B
-:1099F000D48200245483204C0022002B0CD99500E3
-:109A00004619766A6640ED19FF3501356E620132FE
-:109A10009A42F4D3102A07D29300DB19FF330133A3
-:109A20005C620132102AF7D3FFF770FFBCE7002118
-:109A30008F00DC595569EF197C6201310529F7D394
-:109A4000000A0002032318435169C0468860506928
-:109A50004068C04650610948FCF7A4FAA4E700003A
-:109A60006C0600803080204067452301ACAB20406D
-:109A700028014000200140005C5C5C5C1131FFFF6C
-:109A8000F0B5071C3B483C4C08212060A180002019
-:109A90002081E18060813948C046E0603848C04696
-:109AA00020613848C04660613748C046A0613748E9
-:109AB000C046E0613648C04620623648C046606213
-:109AC0003548C046A0623548C046E0623448C046CA
-:109AD00020633448C04660633348C046A0633348BF
-:109AE000C046E0633248C04620643248C0466064E5
-:109AF0003148C046A0643148C046E0643048C046A2
-:109B000020653049C868020489694A40E31D7933F9
-:109B10000904C943C0434840E11DB931DA63086014
-:109B2000294D211C2B1C294A0020FCF73EFA284A0B
-:109B3000E11DB53101202B1C0E1CFCF736FA244A1E
-:109B40000020311C2B1CFCF730FAE11D4D312B1C81
-:109B5000204A0120FCF729FAE01D5D300168002948
-:109B6000FCD0606DC0463865206EC0467865F0BC9C
-:109B700008BC1847800008008CB92040818148BD8E
-:109B80007956238C930C82951D0E12CF9B3BC0E916
-:109B9000E6557C8299F67802D1D72573728C331002
-:109BA000F703F1426C9B4AA7828E23A990B1828E63
-:109BB000DC3FFB2900622245882BF1851261D173BD
-:109BC0006EB11116088320407508FFFF5400030092
-:109BD000080002001400030080B50F1C391C00F0BF
-:109BE00033F8381CFFF74CFF03480189013101812C
-:109BF00080BC08BC184700000C2B008090B5041CEA
-:109C00000F1C201C391C00F01FF8E068010EFF2219
-:109C100012040240120A1143FF22120202401202F1
-:109C200011430006084338652069C04678656069BD
-:109C3000C046B865034801890131018190BC08BC68
-:109C4000184700000C2B008090B5002293001F18CD
-:109C5000BF695B185F620132052AF7D3077AFB08F8
-:109C600003D30023920052181362076BC0468F6320
-:109C7000C76AC046CF63876BC0460F64476BC04658
-:109C80004F64076CC0468F64C26BC046CA64C2880A
-:109C9000C0460A80827A1206037A1B041A43C388DC
-:109CA0001B021A43437ADB071A438A60171C837A24
-:109CB0005A0805D314221C1CA30802D2152200E066
-:109CC0000022007A430810D3C00802D38820104332
-:109CD00001E0802010433A0A120201231A43C860AF
-:109CE0008A60081CFFF778FD05E0380A00020323AC
-:109CF00018438860CA60034801890131018190BC22
-:109D000008BC18470C2B0080F0B4026D144C151CD5
-:109D1000E769BD40131C266AF3405D402E1C456D6B
-:109D2000BD406E402B1C351CFD402F1CBB00656ADE
-:109D3000EB58002B08D0236901379F4200D300273E
-:109D4000BE00AE59002EF7D1A469A2401143054BC5
-:109D50001943BA00A95040308783F0BC7047000017
-:109D60004C2A00800000008080B4002200230029DB
-:109D700005D907787A40013001338B42F9D3D043BB
-:109D80000006000E80BC7047F0B5071C0024FF26BB
-:109D90000936201C00F09AF800F0B8F9051C00F014
-:109DA000C7FA3D70281C01370134B442F1D3F0BC2E
-:109DB00008BC184780B500F093F800F0A7F9071C1D
-:109DC00000F0B6FA380AF6D380BC08BC1847F3B5E1
-:109DD00082B002984102532000F064F800F0A8FA23
-:109DE000FFF7E8FF0024002001902E2000900025BE
-:109DF00000270298012804D10098844201D300264C
-:109E000009E00198411C019100F060F800F07EF932
-:109E1000061C00F08DFAF800864035430134013706
-:109E2000042FE6D3039920C10391FF2309339C42F9
-:109E3000DDD304B0F0BC08BC1847F0B5041C0F1CFF
-:109E4000012C2AD01648C06F4023016819430160D5
-:109E5000002620CFB100842000F024F8281C00F058
-:109E6000DFF9280A00F0DCF9280C00F0D9F9280EF7
-:109E700000F0D6F900F05CFA0136422EE9D3610217
-:109E8000832000F00FF800F053FAFFF793FF044827
-:109E9000C06F4023016899430160F0BC08BC1847BB
-:109EA000680E008090B5041C0F1C00F059FA201CAD
-:109EB00000F0B6F9380C00F0B3F9380A00F0B0F948
-:109EC000381C00F0ADF990BC08BC184700B5011C67
-:109ED0005420FFF7E7FF002000F0A2F908BC184764
-:109EE00000B500F03DFA572000F09AF908BC184779
-:109EF00090B5084FFA6F202314689C431460231C0C
-:109F0000FFF765FFF86F202301681943016090BCDB
-:109F100008BC1847680E008090B5084FFA6F2023E0
-:109F200014689C431460231CFFF787FFF86F2023FD
-:109F300001681943016090BC08BC1847680E008096
-:109F4000F0B5041C0F1C184EF06F202301689943D4
-:109F5000016061025320FFF7A5FF00F0E9F9FFF768
-:109F600029FFF81D0530012C03D1222F01D3002732
-:109F70000FE0441CFFF7AAFF00F0C8F8071C00F030
-:109F8000D7F9201CFFF7A2FF00F0C0F8051C00F075
-:109F9000CFF9F06F2023016819430160280238438C
-:109FA000F0BC08BC18470000680E0080F0B5C2B0D5
-:109FB000141C0D1C071C012F2FD07902194EF06FB5
-:109FC000202302689A4302605320FFF76BFF00F0E2
-:109FD000AFF9FFF7EFFE6846FFF7D6FE6A46E81DC9
-:109FE00005301454210A68444170684600990C30C9
-:109FF000FFF7BAFE02AB18700020587068460C21BB
-:10A00000FFF7B2FE02AB58706946381CFFF715FF28
-:10A01000F06F202301681943016042B0F0BC08BC16
-:10A0200018470000680E0080FFB5C2B0071C012F62
-:10A0300001D1012036E06B460020C44310C301303B
-:10A040004228FBD368460C30031C0024002A0AD99E
-:10A050000E88C04606700E883612467002300231F5
-:10A0600002349442F4D30092181C111CFFF77CFEBA
-:10A07000041C0020019002AB1C7058709D70684653
-:10A080000C21FFF771FE02AB5870459B1D062D0E8B
-:10A09000AC4203D16946381CFFF73EFF0120AC42B9
-:10A0A00000D1002046B0F0BC08BC1847B0B5C2B023
-:10A0B0000F1C4102144CE06F202302689A43026097
-:10A0C0005320FFF7EFFE00F033F9FFF773FE684609
-:10A0D000FFF75AFEE06F20230168194302AD0160CB
-:10A0E0006D78002402AB5C7068460C21FFF73CFEE3
-:10A0F000A84202D10098874201D3201C00E0012031
-:10A1000042B0B0BC08BC1847680E0080FC466047EF
-:10A110000000A0E3B4229FE5B4329FE50110A0E364
-:10A12000001082E5001082E50010A0E3001082E537
-:10A13000001082E5001093E5810380E10110A0E3A7
-:10A14000001082E5001082E50010A0E3001082E517
-:10A15000001082E5001093E5010380E10110A0E307
-:10A16000001082E5001082E50010A0E3001082E5F7
-:10A17000001082E5001093E5810280E10110A0E368
-:10A18000001082E5001082E50010A0E3001082E5D7
-:10A19000001082E5001093E5010280E10110A0E3C8
-:10A1A000001082E5001082E50010A0E3001082E5B7
-:10A1B000001082E5001093E5810180E10110A0E329
-:10A1C000001082E5001082E50010A0E3001082E597
-:10A1D000001082E5001093E5010180E10110A0E389
-:10A1E000001082E5001082E50010A0E3001082E577
-:10A1F000001082E5001093E5810080E10110A0E3EA
-:10A20000001082E5001082E50010A0E3001082E556
-:10A21000001082E5001093E5010080E11EFF2FE1B0
-:10A22000FC466047A4219FE5A8319FE5A013A0E16B
-:10A23000001083E50110A0E3001082E5001082E524
-:10A240000010A0E3001082E5001082E52013A0E1D9
-:10A25000001083E50110A0E3001082E5001082E504
-:10A260000010A0E3001082E5001082E5A012A0E13A
-:10A27000001083E50110A0E3001082E5001082E5E4
-:10A280000010A0E3001082E5001082E52012A0E19A
-:10A29000001083E50110A0E3001082E5001082E5C4
-:10A2A0000010A0E3001082E5001082E5A011A0E1FB
-:10A2B000001083E50110A0E3001082E5001082E5A4
-:10A2C0000010A0E3001082E5001082E52011A0E15B
-:10A2D000001083E50110A0E3001082E5001082E584
-:10A2E0000010A0E3001082E5001082E5A010A0E1BC
-:10A2F000001083E50110A0E3001082E5001082E564
-:10A300000010A0E3001082E5001082E50010A0E13B
-:10A31000001083E50110A0E3001082E5001082E543
-:10A320000010A0E3001082E5001082E51EFF2FE17F
-:10A33000FC466047A0309FE50110A0E3001083E5D4
-:10A34000001083E5001083E5001083E5001083E52D
-:10A35000001083E5001083E5001083E51EFF2FE168
-:10A36000FC46604770309FE50010A0E3001083E5D5
-:10A37000001083E5001083E5001083E5001083E5FD
-:10A38000001083E5001083E5001083E51EFF2FE138
-:10A39000FC46604734209FE53C309FE50010A0E379
-:10A3A000001082E5001082E50110A0E3001083E5B3
-:10A3B000001083E5001083E5001083E5001083E5BD
-:10A3C000001083E5001083E5001083E51EFF2FE1F8
-:10A3D000F80018400401184000011840FC00184023
-:10A3E00080B500F00CF80027381C00F047F8781C06
-:10A3F00007043F0C0C2FF7DD80BC08BC18471D4834
-:10A4000002681D498B69D218026002668A6A436835
-:10A410009B184360934202D2826801328260C26814
-:10A420000B6AD218C2604269CB68D2184261C26915
-:10A430008B68D218C26102690B69D2180261826905
-:10A440000B68D2188261026BCB69D21802634A6A28
-:10A45000436B9B184363934202D2826B0132826347
-:10A46000C26B4B69D218C263026CC96A511801648D
-:10A4700070470000A42A00800008144088B569468F
-:10A4800000F017F881080AD00020002907D900221F
-:10A490008300009FC046FA5001308842F8D388BC40
-:10A4A00008BC184700B500F004F80004000C08BC14
-:10A4B0001847002200280AD001280AD002280CD010
-:10A4C000032802D107481C220860101C7047064868
-:10A4D00004E0064850220860F7E705486822086053
-:10A4E000F3E7000008832040A42A00800C2B0080A2
-:10A4F000A082204080B40322C280154AC0468260F8
-:10A50000144A12880132C2600020134A135CC0460C
-:10A510000B70013001310828F8D320220A70013174
-:10A5200000200E4B1F5CC0460F700130013108281F
-:10A53000F8D30A7001310020094A135CC0460B7041
-:10A54000013001310828F8D30020087080BC704722
-:10A5500008100003680E00807C04008085040080E1
-:10A560008E04008000B501230A48C11D89314B705B
-:10A5700000220A7064218030C182018343837D21DF
-:10A58000C9008183C28304480122002100F08EFBB0
-:10A5900008BC1847680E0080B522FFFF00B5FFF722
-:10A5A000E1FF13480222002100F080FB0123D84282
-:10A5B0000AD11048C11D3931CA880132CA80817957
-:10A5C00001318171FDF770F90B48C068012805D190
-:10A5D0000A487D22D200002100F068FB0848FBF702
-:10A5E000E1FC08482822002100F060FB08BC184765
-:10A5F0007921FFFFA0822040680E0080A57B2140CA
-:10A60000952CFFFF5903FFFF00B510200F49C046EE
-:10A6100008600F4A0F486421FBF7C6FC0E48012270
-:10A62000120401680A400821002A05D10268120CB0
-:10A6300007D10068800A04D30848C046C16008BC3E
-:10A6400018470748C0460164F9E70000000000B061
-:10A65000A555FFFF7C290080000010404001180034
-:10A6600000000080F8B527480122120401680A4062
-:10A670000721002A05D10268120C06D10068800A61
-:10A6800003D32148C046C16002E02048C0460164AF
-:10A690001F48FBF787FC1F48C16BFF29FCD1816B6A
-:10A6A000426B161C0F1C1C4C102360691843606120
-:10A6B000A16999431D04A161E860A069C0462861B1
-:10A6C000164A17496420FBF76FFC164AC0460092F1
-:10A6D000154B0020391C321CFBF76EFC1348C16877
-:10A6E0000829FCD11248FBF75DFC102360699843F0
-:10A6F0006061E8600120E3231B01E118C871F8BC28
-:10A7000008BC1847000010404001180000000080FD
-:10A710000402FFFF00011840680E00802055FFFF73
-:10A72000B5B621406400300244802040400118400A
-:10A73000F401FFFF00B5FDF701FF0648FBF732FC0F
-:10A74000FDF7D6FEFEF704F8FEF716F8FEF724F83C
-:10A7500008BC18479103FFFF90B5FDF76BFC344F21
-:10A760000024F968F81D793001290FD13149C0461C
-:10A77000F9673149C04601603049C0460C604C6001
-:10A780008C60CC600C614C618C6104E0F91D7D3102
-:10A79000F96712C008380068602301681943016036
-:10A7A000F86F2023016819430160F86F40230168A6
-:10A7B0009943016000F054F8FDF74EFC00F05EF99B
-:10A7C000FDF773F8FFF70CFEFDF72EFEFDF7B6FD63
-:10A7D000FDF7C2FEFDF754FDFDF70AFDFDF794FD00
-:10A7E00000F01AFAFDF79CFFFDF70AFFFDF7D2FE15
-:10A7F000FDF73CFCFBF7DCFAFFF79CFF71235B01E4
-:10A80000F8180472447207235B02F8180463F868AE
-:10A81000012802D1A820FEF7B1FD0948C0464462D4
-:10A8200000F018FA0748FBF7BDFB90BC08BC1847BE
-:10A83000680E008000011140040111400001110068
-:10A84000C0001800158F214000B50448FBF7AAFB93
-:10A85000FDF75EFFFDF724FC08BC18471599214061
-:10A86000FA210348C046416240214162704700001E
-:10A87000C000180007484169074B194341618269CC
-:10A880009A43826101221205D1608069C04610613D
-:10A8900070470000680E0080FEAF9A1000B50248B5
-:10A8A000FBF780FB08BC1847C857FFFFF0B5244CE6
-:10A8B00001210904206801400920224E224D00296F
-:10A8C00005D12168090C04D12168890A01D3F060FF
-:10A8D00000E028641D48FBF765FB1D4F1D49886992
-:10A8E00001308861387A002802D1787A00281FD098
-:10A8F0001948FBF757FB1948FBF754FB0028FAD11E
-:10A90000387A002802D01648FBF74CFB01210904D5
-:10A91000206801401420002905D12168090C04D1C8
-:10A920002168890A01D3F06001E02864FFE7FEE7AF
-:10A93000FFF765FD0B48FBF735FBFFF7AFFFCDE7F2
-:10A940000000104040011800000000800402FFFFDA
-:10A95000881C008008832040F401FFFFB507FFFF3B
-:10A960000000FFFF999F21400020074A01210905AF
-:10A970005061C860D061C8610323DB04034A012130
-:10A98000D1635860FCE70000680E0080C00018002A
-:10A9900080B5C0B0012200210A20FCF7D1FF071CBE
-:10A9A000FF2F28D06946FF22381C0132FDF754F9E9
-:10A9B000FF23013398421BD10D98000918D3381C8E
-:10A9C000FDF78DF80E4901221204086802400D4877
-:10A9D00005D10A68120C06D10968890A03D30A490D
-:10A9E000C046C86002E00949C0460864FFF7BCFFE2
-:10A9F000381CFDF774F840B080BC08BC1847000054
-:10AA00000000104007800000400118000000008096
-:10AA100000B5174901221204086802400620002AE6
-:10AA200005D10A68120C06D10968890A03D31149B5
-:10AA3000C046C86002E01049C04608640320FEF723
-:10AA4000D3FCFBF70DFF01231843FBF7E7FFFFF7EC
-:10AA500083FEFFF79DFFFFF705FEFFF7F5FEFFF70B
-:10AA600009FFFFF79BFDFFF721FF08BC1847000017
-:10AA7000000010404001180000000080F0B4464A79
-:10AA80000121C903454D1923DB01EC18A161288878
-:10AA90004004434BC018871A0420AF60414EC046A3
-:10AAA000B0610820C8234343BB4221D941003D4E39
-:10AAB000C0463161B66920239B1B3A4EC046F36104
-:10AAC000103B33628B00FF1A4008814217D3B82332
-:10AAD0004343BB4208D9411E324BC0469981D981BC
-:10AAE0004000023858610AE001308142EFD206E0AE
-:10AAF0002C4EB3690133B36140008842D2D92A4950
-:10AB00000020A3699B0807D0284B8700CB51A76979
-:10AB1000BF0801308742F8D82249C0468A628C8932
-:10AB200058206043871800200022002C0ADD58239B
-:10AB300043438C6AE31801300004000C9A608B894F
-:10AB40008342F4DCCF62CC89600000194001C71950
-:10AB50000020002C0BDD43001B185B01CC6AE318BE
-:10AB600001300004000C9A60CB898342F3DC4F6211
-:10AB700000200B69002B07D987004B6AC046DA51C9
-:10AB80000B6901308342F7D8496A800008180438FD
-:10AB90002861F0BC70470000B0BE2140680E008004
-:10ABA000000020404C2A00800000204000ADDE0064
-:10ABB0000A4801231B06416999431A094161D16082
-:10ABC0000021A122520391611B23DB01C018816186
-:10ABD000012000065905086070470000680E0080DB
-:10ABE00080B4021C0B481B23DB01C3189A610123AC
-:10ABF0001B0642691A43426187699F4301231B0573
-:10AC00008761DA608069C0461861A12040038161D4
-:10AC100080BC7047680E008080B5FFF7C9FF002038
-:10AC200000F020F800200949002203015F183323B7
-:10AC30009B01FB189A6201300B28F6D304480122CD
-:10AC4000002100F033F880BC08BC1847680E008073
-:10AC50001D3EFFFF00B5024800F004F808BC18478D
-:10AC6000A861000080B4012212050F4BA121490305
-:10AC700000280ED0C861181C59695301194341615D
-:10AC800087699F438761D1608069C046106180BC3D
-:10AC90007047181C5F6901235B069F434761D760BB
-:10ACA0000020C861F3E70000680E0080B0B4071C04
-:10ACB0000020174C03011D1933239B01EB189D6ADB
-:10ACC000BD4205D11D6B954202D1DB6A8B421CD07F
-:10ACD00001300B28EED3002003011D1933239B0103
-:10ACE000EB189B6A002B09D103011C1933239B012C
-:10ACF000E3181A63D9625A639F6202E001300B289D
-:10AD0000EAD30B2801D10020C043B0BC704700003B
-:10AD1000680E008090B4011C00220120164F01E053
-:10AD2000002A07D10301DC1933239B01E3189B6937
-:10AD30008B4211D10201D21933239B01D218936A9D
-:10AD4000C0469361D36AC046D361136BC046136299
-:10AD5000536BC0465362012201300B28E0D3074BEE
-:10AD6000002A02D19A688A4203D10021996090BCDE
-:10AD700070470020C043FAE7680E0080E81B00809F
-:10AD80000B2817DA0C4901235B068A691343012259
-:10AD900012058B6113610001401833239B01C01819
-:10ADA000036BC0464363530188699843886110610F
-:10ADB000012070470020FCE7680E008090B4084A2C
-:10ADC000D0690021074FD369834202D9FC1A2018A9
-:10ADD00000E0C01A0918181CB942F4D990BC704799
-:10ADE00000201440A861000090B5071C0024002F2B
-:10ADF00004D3FFF7E3FF0134BC42FAD990BC08BC8E
-:04AE000018470000EF
-:00000001FF
-/* ver 03.001.008 */
-/*
- * Copyright 1999-2004 3Com Corporation. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms of the 3c990img.h
- * microcode software are permitted provided that the following conditions
- * are met:
- * 1. Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of 3Com may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY 3COM ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * USER ACKNOWLEDGES AND AGREES THAT PURCHASE OR USE OF THE 3c990img.h
- * MICROCODE SOFTWARE WILL NOT CREATE OR GIVE GROUNDS FOR A LICENSE BY
- * IMPLICATION, ESTOPPEL, OR OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS
- * (PATENT, COPYRIGHT, TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT)
- * EMBODIED IN ANY OTHER 3COM HARDWARE OR SOFTWARE EITHER SOLELY OR IN
- * COMBINATION WITH THE 3c990img.h MICROCODE SOFTWARE
- */
diff --git a/firmware/Makefile b/firmware/Makefile
index fa3e81c2a97b..168094a3fae7 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# kbuild file for firmware/
#
@@ -9,144 +10,6 @@ fwabs := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir))
fw-external-y := $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE))
-# There are three cases to care about:
-# 1. Building kernel with CONFIG_FIRMWARE_IN_KERNEL=y -- $(fw-shipped-y) should
-# include the firmware files to include, according to .config
-# 2. 'make modules_install', which will install firmware for modules, and
-# _also_ for the in-kernel drivers when CONFIG_FIRMWARE_IN_KERNEL=n
-# 3. 'make firmware_install', which installs all firmware, unconditionally.
-
-# For the former two cases we want $(fw-shipped-y) and $(fw-shipped-m) to be
-# accurate. In the latter case it doesn't matter -- it'll use $(fw-shipped-all).
-# But be aware that the config file might not be included at all.
-
-ifdef CONFIG_ACENIC_OMIT_TIGON_I
-acenic-objs := acenic/tg2.bin
-fw-shipped- += acenic/tg1.bin
-else
-acenic-objs := acenic/tg1.bin acenic/tg2.bin
-endif
-fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs)
-fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \
- adaptec/starfire_tx.bin
-fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
-fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw
-fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \
- bnx2x/bnx2x-e1h-6.2.9.0.fw \
- bnx2x/bnx2x-e2-6.2.9.0.fw
-fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \
- bnx2/bnx2-rv2p-09-6.0.17.fw \
- bnx2/bnx2-rv2p-09ax-6.0.17.fw \
- bnx2/bnx2-mips-06-6.2.1.fw \
- bnx2/bnx2-rv2p-06-6.0.15.fw
-fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin
-fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
- cxgb3/t3c_psram-1.1.0.bin \
- cxgb3/ael2005_opt_edc.bin \
- cxgb3/ael2005_twx_edc.bin \
- cxgb3/ael2020_twx_edc.bin
-fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw
-fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin
-fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \
- radeon/R300_cp.bin radeon/R420_cp.bin \
- radeon/RS690_cp.bin radeon/RS600_cp.bin \
- radeon/R520_cp.bin \
- radeon/R600_pfp.bin radeon/R600_me.bin \
- radeon/RV610_pfp.bin radeon/RV610_me.bin \
- radeon/RV630_pfp.bin radeon/RV630_me.bin \
- radeon/RV620_pfp.bin radeon/RV620_me.bin \
- radeon/RV635_pfp.bin radeon/RV635_me.bin \
- radeon/RV670_pfp.bin radeon/RV670_me.bin \
- radeon/RS780_pfp.bin radeon/RS780_me.bin \
- radeon/RV770_pfp.bin radeon/RV770_me.bin \
- radeon/RV730_pfp.bin radeon/RV730_me.bin \
- radeon/RV710_pfp.bin radeon/RV710_me.bin
-fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
-fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
-fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
- e100/d102e_ucode.bin
-fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin
-fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \
- cis/DP83903.cis cis/NE2K.cis \
- cis/tamarack.cis cis/PE-200.cis \
- cis/PE520.cis
-fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis
-fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis
-fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \
- cis/COMpad2.cis cis/COMpad4.cis \
- cis/SW_555_SER.cis cis/SW_7xx_SER.cis \
- cis/SW_8xx_SER.cis
-fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin
-fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \
- advansys/3550.bin advansys/38C0800.bin
-fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += qlogic/1040.bin qlogic/1280.bin \
- qlogic/12160.bin
-fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += qlogic/isp1000.bin
-fw-shipped-$(CONFIG_INFINIBAND_QIB) += qlogic/sd7220.fw
-fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp
-fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \
- ess/maestro3_assp_minisrc.fw
-fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \
- sb16/ima_adpcm_init.csp \
- sb16/ima_adpcm_playback.csp \
- sb16/ima_adpcm_capture.csp
-fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \
- yamaha/ds1e_ctrl.fw
-fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin
-fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin
-fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \
- tigon/tg3_tso5.bin
-fw-shipped-$(CONFIG_TYPHOON) += 3com/typhoon.bin
-fw-shipped-$(CONFIG_USB_EMI26) += emi26/loader.fw emi26/firmware.fw \
- emi26/bitstream.fw
-fw-shipped-$(CONFIG_USB_EMI62) += emi62/loader.fw emi62/bitstream.fw \
- emi62/spdif.fw emi62/midi.fw
-fw-shipped-$(CONFIG_USB_KAWETH) += kaweth/new_code.bin kaweth/trigger_code.bin \
- kaweth/new_code_fix.bin \
- kaweth/trigger_code_fix.bin
-ifdef CONFIG_FIRMWARE_IN_KERNEL
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += keyspan/mpr.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += keyspan/usa18x.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19) += keyspan/usa19.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QI) += keyspan/usa19qi.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QW) += keyspan/usa19qw.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19W) += keyspan/usa19w.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28) += keyspan/usa28.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XA) += keyspan/usa28xa.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XB) += keyspan/usa28xb.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28X) += keyspan/usa28x.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49W) += keyspan/usa49w.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49WLC) += keyspan/usa49wlc.fw
-else
-fw-shipped- += keyspan/mpr.fw keyspan/usa18x.fw keyspan/usa19.fw \
- keyspan/usa19qi.fw keyspan/usa19qw.fw keyspan/usa19w.fw \
- keyspan/usa28.fw keyspan/usa28xa.fw keyspan/usa28xb.fw \
- keyspan/usa28x.fw keyspan/usa49w.fw keyspan/usa49wlc.fw
-endif
-fw-shipped-$(CONFIG_USB_SERIAL_TI) += ti_3410.fw ti_5052.fw \
- mts_cdma.fw mts_gsm.fw mts_edge.fw
-fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw \
- edgeport/down.fw edgeport/down2.fw
-fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin
-fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \
- # whiteheat_loader_debug.fw
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw
-fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw
-fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw
-fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin
-fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin
-
-fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
-
-quiet_cmd_ihex = IHEX $@
- cmd_ihex = $(OBJCOPY) -Iihex -Obinary $< $@
-
-quiet_cmd_ihex2fw = IHEX2FW $@
- cmd_ihex2fw = $(objtree)/$(obj)/ihex2fw $< $@
-
-quiet_cmd_h16tofw = H16TOFW $@
- cmd_h16tofw = $(objtree)/$(obj)/ihex2fw -w $< $@
-
quiet_cmd_fwbin = MK_FW $@
cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)"; \
FWSTR="$(subst /,_,$(subst .,_,$(subst -,_,$(patsubst \
@@ -179,46 +42,14 @@ wordsize_deps := $(wildcard include/config/64bit.h include/config/32bit.h \
include/config/x86_32.h include/config/x86_64.h \
firmware/Makefile)
-$(patsubst %,$(obj)/%.gen.S, $(fw-shipped-y)): %: $(wordsize_deps)
- $(call cmd,fwbin,$(patsubst %.gen.S,%,$@))
$(patsubst %,$(obj)/%.gen.S, $(fw-external-y)): %: $(wordsize_deps) \
include/config/extra/firmware/dir.h
$(call cmd,fwbin,$(fwabs)/$(patsubst $(obj)/%.gen.S,%,$@))
# The .o files depend on the binaries directly; the .S files don't.
-$(patsubst %,$(obj)/%.gen.o, $(fw-shipped-y)): %.gen.o: %
$(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
-# .ihex is used just as a simple way to hold binary files in a source tree
-# where binaries are frowned upon. They are directly converted with objcopy.
-$(obj)/%: $(obj)/%.ihex
- $(call cmd,ihex)
-
-# Don't depend on ihex2fw if we're installing and it already exists.
-# Putting it after | in the dependencies doesn't seem sufficient when
-# we're installing after a cross-compile, because ihex2fw has dependencies
-# on stuff like /usr/lib/gcc/ppc64-redhat-linux/4.3.0/include/stddef.h and
-# thus wants to be rebuilt. Which it can't be, if the prebuilt kernel tree
-# is exported read-only for someone to run 'make install'.
-ifeq ($(INSTALL):$(wildcard $(obj)/ihex2fw),install:$(obj)/ihex2fw)
-ihex2fw_dep :=
-else
-ihex2fw_dep := $(obj)/ihex2fw
-endif
-
-# .HEX is also Intel HEX, but where the offset and length in each record
-# is actually meaningful, because the firmware has to be loaded in a certain
-# order rather than as a single binary blob. Thus, we convert them into our
-# more compact binary representation of ihex records (<linux/ihex.h>)
-$(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep)
- $(call cmd,ihex2fw)
-
-# .H16 is our own modified form of Intel HEX, with 16-bit length for records.
-$(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep)
- $(call cmd,h16tofw)
-
obj-y += $(patsubst %,%.gen.o, $(fw-external-y))
-obj-$(CONFIG_FIRMWARE_IN_KERNEL) += $(patsubst %,%.gen.o, $(fw-shipped-y))
ifeq ($(KBUILD_SRC),)
# Makefile.build only creates subdirectories for O= builds, but external
@@ -226,13 +57,8 @@ ifeq ($(KBUILD_SRC),)
_dummy := $(foreach d,$(addprefix $(obj)/,$(dir $(fw-external-y))), $(shell [ -d $(d) ] || mkdir -p $(d)))
endif
-# Remove .S files and binaries created from ihex
-# (during 'make clean' .config isn't included so they're all in $(fw-shipped-))
-targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \
- $(shell find $(obj) -name \*.gen.S 2>/dev/null))
-
+targets := $(patsubst $(obj)/%,%, \
+ $(shell find $(obj) -name \*.gen.S 2>/dev/null))
# Without this, built-in.o won't be created when it's empty, and the
# final vmlinux link will fail.
obj- := dummy
-
-hostprogs-y := ihex2fw
diff --git a/firmware/README.AddingFirmware b/firmware/README.AddingFirmware
deleted file mode 100644
index bcb5f46aff83..000000000000
--- a/firmware/README.AddingFirmware
+++ /dev/null
@@ -1,45 +0,0 @@
-
- DO NOT ADD FIRMWARE TO THIS DIRECTORY.
- ======================================
-
-This directory is only here to contain firmware images extracted from old
-device drivers which predate the common use of request_firmware().
-
-As we update those drivers to use request_firmware() and keep a clean
-separation between code and firmware, we put the extracted firmware
-here.
-
-This directory is _NOT_ for adding arbitrary new firmware images. The
-place to add those is the separate linux-firmware repository:
-
- git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
-
-That repository contains all these firmware images which have been
-extracted from older drivers, as well various new firmware images which
-we were never permitted to include in a GPL'd work, but which we _have_
-been permitted to redistribute under separate cover.
-
-To submit firmware to that repository, please send either a git binary
-diff or preferably a git pull request to:
- linux-firmware@kernel.org
-and also cc: to related mailing lists.
-
-Your commit should include an update to the WHENCE file clearly
-identifying the licence under which the firmware is available, and
-that it is redistributable. If the licence is long and involved, it's
-permitted to include it in a separate file and refer to it from the
-WHENCE file.
-And if it were possible, a changelog of the firmware itself.
-
-Ideally, your commit should contain a Signed-Off-By: from someone
-authoritative on the licensing of the firmware in question (i.e. from
-within the company that owns the code).
-
-
-WARNING:
-=======
-
-Don't send any "CONFIDENTIALITY STATEMENT" in your e-mail, patch or
-request. Otherwise your firmware _will never be accepted_.
-
-Maintainers are really busy, so don't expect a prompt reply.
diff --git a/firmware/WHENCE b/firmware/WHENCE
deleted file mode 100644
index de6f22e008f1..000000000000
--- a/firmware/WHENCE
+++ /dev/null
@@ -1,854 +0,0 @@
- **********
- * WHENCE *
- **********
-
-This file attempts to document the origin and licensing information,
-if known, for each piece of firmware distributed for use with the Linux
-kernel.
-
---------------------------------------------------------------------------
-
-Driver: ambassador -- Madge Ambassador (Collage PCI 155 Server) ATM NIC.
-
-File: firmware/atmsar11.fw
-
-Licence: Allegedly GPLv2+, but no source visible. Marked:
-
- Madge Ambassador ATM Adapter microcode.
- Copyright (C) 1995-1999 Madge Networks Ltd.
-
- This microcode data is placed under the terms of the GNU General
- Public License. The GPL is contained in /usr/doc/copyright/GPL on a
- Debian system and in the file COPYING in the Linux kernel source.
-
- We would prefer you not to distribute modified versions without
- consultation and not to ask for assembly/other microcode source.
-
---------------------------------------------------------------------------
-
-Driver: korg1212 -- Korg 1212 IO audio device
-
-File: korg/k1212.dsp
-
-Licence: Unknown
-
-Found in alsa-firmware package in hex form; no licensing information.
-
---------------------------------------------------------------------------
-
-Driver: maestro3 -- ESS Allegro Maestro3 audio device
-
-File: ess/maestro3_assp_kernel.fw
-File: ess/maestro3_assp_minisrc.fw
-
-Licence: Unknown
-
-Found in alsa-firmware package in hex form with a comment claiming to
-be GPLv2+, but without source -- and with another comment saying "ESS
-drops binary dsp code images on our heads, but we don't get to see
-specs on the dsp."
-
---------------------------------------------------------------------------
-
-Driver: ymfpci -- Yamaha YMF724/740/744/754 audio devices
-
-File: yamaha/ds1_ctrl.fw
-File: yamaha/ds1_dsp.fw
-File: yamaha/ds1e_ctrl.fw
-
-Licence: Unknown
-
-Found alsa-firmware package in hex form, with the following comment:
- Copyright (c) 1997-1999 Yamaha Corporation. All Rights Reserved.
-
---------------------------------------------------------------------------
-
-Driver: SCSI_ADVANSYS - AdvanSys SCSI
-
-File: advansys/mcode.bin
-File: advansys/3550.bin
-File: advansys/38C0800.bin
-File: advansys/38C1600.bin
-
-Licence: BSD, no source available.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: SCSI_QLOGIC_1280 - Qlogic QLA 1240/1x80/1x160 SCSI support
-
-File: qlogic/1040.bin
-File: qlogic/1280.bin
-File: qlogic/12160.bin
-
-Licence: Allegedly GPLv2+, but no source visible. Marked:
-
- QLOGIC LINUX SOFTWARE
- QLogic ISP1280/ device driver for Linux 2.2.x and 2.4.x
- Copyright (C) 2001 Qlogic Corporation (www.qlogic.com)
-
---------------------------------------------------------------------------
-
-Driver: kaweth -- USB KLSI KL5USB101-based Ethernet device
-
-File: kaweth/new_code.bin
-File: kaweth/new_code_fix.bin
-File: kaweth/trigger_code.bin
-File: kaweth/trigger_code_fix.bin
-
-Licence: Unknown
-
-Found in hex form in the kernel source.
-
---------------------------------------------------------------------------
-
-Driver: ttusb-budget -- Technotrend/Hauppauge Nova-USB devices
-
-File: ttusb-budget/dspbootcode.bin
-
-Licence: Unknown
-
-Found in hex form in the kernel source.
-
---------------------------------------------------------------------------
-
-Driver: keyspan -- USB Keyspan USA-xxx serial device
-
-File: keyspan/mpr.fw
-File: keyspan/usa18x.fw
-File: keyspan/usa19.fw
-File: keyspan/usa19qi.fw
-File: keyspan/usa19qw.fw
-File: keyspan/usa19w.fw
-File: keyspan/usa28.fw
-File: keyspan/usa28xa.fw
-File: keyspan/usa28xb.fw
-File: keyspan/usa28x.fw
-File: keyspan/usa49w.fw
-File: keyspan/usa49wlc.fw
-
-Converted from Intel HEX files, used in our binary representation of ihex.
-
-Original licence information:
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
-
---------------------------------------------------------------------------
-
-Driver: keyspan_pda -- USB Keyspan PDA single-port serial device
-
-File: keyspan_pda/keyspan_pda.fw
-Source: keyspan_pda/keyspan_pda.S
-
-File: keyspan_pda/xircom_pgs.fw
-Source: keyspan_pda/xircom_pgs.S
-
-Licence: GPLv2+
-
-Compiled from original 8051 source into Intel HEX, used in our binary ihex form.
-
---------------------------------------------------------------------------
-
-Driver: emi26 -- EMI 2|6 USB Audio interface
-
-File: emi26/bitstream.fw
-Info: VERSION=1.1.1.131 DATE=2001dec06
-
-File: emi26/firmware.fw
-Info: VERSION=1.0.2.916 DATE=12.02.2002
-
-File: emi26/loader.fw
-
-Converted from Intel HEX files, used in our binary representation of ihex.
-
-Original licence information:
-/*
- * This firmware is for the Emagic EMI 2|6 Audio Interface
- *
- * The firmware contained herein is Copyright (c) 1999-2002 Emagic
- * as an unpublished work. This notice does not imply unrestricted
- * or public access to this firmware which is a trade secret of Emagic,
- * and which may not be reproduced, used, sold or transferred to
- * any third party without Emagic's written consent. All Rights Reserved.
- *
- * Permission is hereby granted for the distribution of this firmware
- * image as part of a Linux or other Open Source operating system kernel
- * in text or binary form as required.
- *
- * This firmware may not be modified and may only be used with the
- * Emagic EMI 2|6 Audio Interface. Distribution and/or Modification of
- * any driver which includes this firmware, in whole or in part,
- * requires the inclusion of this statement.
- */
-
---------------------------------------------------------------------------
-
-Driver: emi62 -- EMI 6|2m USB Audio interface
-
-File: emi62/bitstream.fw
-Info: VERSION=1.0.0.191 DATE= 2002oct28
-
-File: emi62/loader.fw
-Source: EMILOAD.HEX
-Info: VERSION=1.0.2.002 DATE=10.01.2002
-
-File: emi62/midi.fw
-Source: EMI62MFW.HEX
-Info: VERSION=1.04.062 DATE=16.10.2002
-
-File: emi62/spdif.fw
-Source: EMI62SFW.HEX
-Info: VERSION=1.04.062 DATE=16.10.2002
-
-Converted from Intel HEX files, used in our binary representation of ihex.
-
-Original licence information: None
-
---------------------------------------------------------------------------
-
-Driver: ti_usb_3410_5052 -- USB TI 3410/5052 serial device
-
-File: ti_3410.fw
-Info: firmware 9/10/04 FW3410_Special_StartWdogOnStartPort
-
-File: ti_5052.fw
-Info: firmware 9/18/04
-
-Licence: Allegedly GPLv2+, but no source visible. Marked:
- Copyright (C) 2004 Texas Instruments
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: ti_usb_3410_5052 -- Multi-Tech USB cell modems
-
-File: mts_cdma.fw
-File: mts_gsm.fw
-File: mts_edge.fw
-
-Licence: "all firmware components are redistributable in binary form"
- per support@multitech.com
- Copyright (C) 2005 Multi-Tech Systems, Inc.
-
-Found in hex form in ftp://ftp.multitech.com/wireless/wireless_linux.zip
-
---------------------------------------------------------------------------
-
-Driver: whiteheat -- USB ConnectTech WhiteHEAT serial device
-
-File: whiteheat.fw
-Version: 4.06
-
-File: whiteheat_loader.fw
-File: whiteheat_loader_debug.fw
-
-Licence: Allegedly GPLv2, but no source visible. Marked:
- Copyright (C) 2000-2002 ConnectTech Inc
-
-Debug loader claims the following behaviour:
- Port 1 LED flashes when the vend_ax program is running
- Port 2 LED flashes when any SETUP command arrives
- Port 3 LED flashes when any valid VENDOR request occurs
- Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
-
-Converted from Intel HEX files, used in our binary representation of ihex.
-
---------------------------------------------------------------------------
-
-Driver: CPiA2 -- cameras based on Vision's CPiA2
-
-File: cpia2/stv0672_vp4.bin
-
-Licence: Allegedly GPLv2+, but no source visible. Marked:
- Copyright (C) 2001 STMicroelectronics, Inc.
- Contact: steve.miller@st.com
- Description: This file contains patch data for the CPiA2 (stv0672) VP4.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: DABUSB -- Digital Audio Broadcasting (DAB) Receiver for USB and Linux
-
-File: dabusb/firmware.fw
-File: dabusb/bitstream.bin
-
-Licence: Distributable
-
- * Copyright (C) 1999 BayCom GmbH
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that redistributions of source
- * code retain the above copyright notice and this comment without
- * modification.
-
---------------------------------------------------------------------------
-
-Driver: USB_VICAM -- USB 3com HomeConnect (aka vicam)
-
-File: vicam/firmware.fw
-
-Licence: Unknown
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: USB_SERIAL_EDGEPORT - USB Inside Out Edgeport Serial Driver
-
-File: edgeport/boot.fw
-File: edgeport/boot2.fw
-File: edgeport/down.fw
-File: edgeport/down2.fw
-
-Licence: Allegedly GPLv2+, but no source visible. Marked:
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//**************************************************************
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: USB_SERIAL_EDGEPORT_TI - USB Inside Out Edgeport Serial Driver
-(TI Devices)
-
-File: edgeport/down3.bin
-
-Licence:
-//**************************************************************
-//* Edgeport Binary Image (for TI based products)
-//* Generated by TIBin2C v2.00 (watchport)
-//* Copyright (C) 2001 Inside Out Networks, All rights reserved.
-//**************************************************************
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: ATARI_DSP56K - Atari DSP56k support
-
-File: dsp56k/bootstrap.bin
-Source: dsp56k/bootstrap.asm
-
-Licence: GPLv2 or later
-
-DSP56001 assembler, possibly buildable with a56 from
-http://www.zdomain.com/a56.html
-
---------------------------------------------------------------------------
-
-Driver: SND_SB16_CSP - Sound Blaster 16/AWE CSP support
-
-File: sb16/mulaw_main.csp
-File: sb16/alaw_main.csp
-File: sb16/ima_adpcm_init.csp
-File: sb16/ima_adpcm_playback.csp
-File: sb16/ima_adpcm_capture.csp
-
-Licence: Allegedly GPLv2+, but no source visible. Marked:
-/*
- * Copyright (c) 1994 Creative Technology Ltd.
- * Microcode files for SB16 Advanced Signal Processor
- */
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: CASSINI - Sun Cassini
-
-File: sun/cassini.bin
-
-Licence: Unknown
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: cxgb3 - Chelsio Terminator 3 1G/10G Ethernet adapter
-
-File: cxgb3/t3b_psram-1.1.0.bin.ihex
-File: cxgb3/t3c_psram-1.1.0.bin.ihex
-file: cxgb3/t3fw-7.4.0.bin.ihex
-
-License: GPLv2 or OpenIB.org BSD license, no source visible
-
---------------------------------------------------------------------------
-
-Driver: cxgb3 - Chelsio Terminator 3 1G/10G Ethernet adapter
-
-File: cxgb3/ael2005_opt_edc.bin.ihex
-File: cxgb3/ael2005_twx_edc.bin.ihex
-File: cxgb3/ael2020_twx_edc.bin.ihex
-
-Licence:
- * Copyright (c) 2007-2009 NetLogic Microsystems, Inc.
- *
- * Permission is hereby granted for the distribution of this firmware
- * data in hexadecimal or equivalent format, provided this copyright
- * notice is accompanying it.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: e100 -- Intel PRO/100 Ethernet NIC
-
-File: e100/d101m_ucode.bin
-File: e100/d101s_ucode.bin
-File: e100/d102e_ucode.bin
-
-Licence: Unknown
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: acenic -- Alteon AceNIC Gigabit Ethernet card
-
-File: acenic/tg1.bin
-File: acenic/tg2.bin
-
-Licence: Unknown
-
-Found in hex form in kernel source, but source allegedly available at
-http://alteon.shareable.org/
-
---------------------------------------------------------------------------
-
-Driver: tigon3 -- Broadcom Tigon3 based gigabit Ethernet cards
-
-File: tigon/tg3.bin
-File: tigon/tg3_tso.bin
-File: tigon/tg3_tso5.bin
-
-Licence:
- * Firmware is:
- * Derived from proprietary unpublished source code,
- * Copyright (C) 2000-2003 Broadcom Corporation.
- *
- * Permission is hereby granted for the distribution of this firmware
- * data in hexadecimal or equivalent format, provided this copyright
- * notice is accompanying it.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: ADAPTEC_STARFIRE - Adaptec Starfire/DuraLAN support
-
-File: adaptec/starfire_rx.bin
-File: adaptec/starfire_tx.bin
-
-Licence: Allegedly GPLv2, but no source visible.
-
-Found in hex form in kernel source, with the following notice:
-
- BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE IT IS LICENSED "AS IS" AND
- THERE IS NO WARRANTY FOR THE PROGRAM, INCLUDING BUT NOT LIMITED TO THE
- IMPLIED WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR A PARTICULAR PURPOSE
- (TO THE EXTENT PERMITTED BY APPLICABLE LAW). USE OF THE PROGRAM IS AT YOUR
- OWN RISK. IN NO EVENT WILL ADAPTEC OR ITS LICENSORS BE LIABLE TO YOU FOR
- DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
- ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM.
-
---------------------------------------------------------------------------
-
-Driver: TEHUTI - Tehuti Networks 10G Ethernet
-
-File: tehuti/bdx.bin
-
-Licence:
-
- Copyright (C) 2007 Tehuti Networks Ltd.
-
- Permission is hereby granted for the distribution of this firmware data
- in hexadecimal or equivalent format, provided this copyright notice is
- accompanying it.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: TYPHOON - 3cr990 series Typhoon
-
-File: 3com/typhoon.bin
-
-Licence:
-/*
- * Copyright 1999-2004 3Com Corporation. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms of the 3c990img.h
- * microcode software are permitted provided that the following conditions
- * are met:
- * 1. Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of 3Com may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY 3COM ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * USER ACKNOWLEDGES AND AGREES THAT PURCHASE OR USE OF THE 3c990img.h
- * MICROCODE SOFTWARE WILL NOT CREATE OR GIVE GROUNDS FOR A LICENSE BY
- * IMPLICATION, ESTOPPEL, OR OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS
- * (PATENT, COPYRIGHT, TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT)
- * EMBODIED IN ANY OTHER 3COM HARDWARE OR SOFTWARE EITHER SOLELY OR IN
- * COMBINATION WITH THE 3c990img.h MICROCODE SOFTWARE
- */
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: YAM - YAM driver for AX.25
-
-File: yam/1200.bin
-File: yam/9600.bin
-
-Licence:
- * (C) F6FBB 1998
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: PCMCIA_PCNET - NE2000 compatible PCMCIA adapter
-
-File: cis/LA-PCM.cis
- cis/PCMLM28.cis
- cis/DP83903.cis
- cis/NE2K.cis
- cis/tamarack.cis
- cis/PE-200.cis
- cis/PE520.cis
-
-Licence: GPL
-
-Originally developed by the pcmcia-cs project
-
---------------------------------------------------------------------------
-
-Driver: PCMCIA_3C589 - 3Com PCMCIA adapter
-
-File: cis/3CXEM556.cis
-
-Licence: GPL
-
-Originally developed by the pcmcia-cs project
-
---------------------------------------------------------------------------
-
-Driver: PCMCIA_3C574 - 3Com PCMCIA adapter
-
-File: cis/3CCFEM556.cis
-
-Licence: GPL
-
-Originally developed by the pcmcia-cs project
-
---------------------------------------------------------------------------
-
-Driver: SERIAL_8250_CS - Serial PCMCIA adapter
-
-File: cis/MT5634ZLX.cis
- cis/RS-COM-2P.cis
- cis/COMpad2.cis
- cis/COMpad4.cis
- cis/SW_555_SER.cis
- cis/SW_7xx_SER.cis
- cis/SW_8xx_SER.cis
-
-Licence: GPL
-
-Originally developed by the pcmcia-cs project
-
---------------------------------------------------------------------------
-
-Driver: PCMCIA_SMC91C92 - SMC 91Cxx PCMCIA
-
-File: ositech/Xilinx7OD.bin
-
-Licence: Allegedly GPL, but no source visible. Marked:
- This file contains the firmware of Seven of Diamonds from OSITECH.
- (Special thanks to Kevin MacPherson of OSITECH)
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: SCSI_QLOGICPTI - PTI Qlogic, ISP Driver
-
-File: qlogic/isp1000.bin
-
-Licence: Unknown
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: MYRI_SBUS - MyriCOM Gigabit Ethernet
-
-File: myricom/lanai.bin
-
-Licence: Unknown
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: bnx2x: Broadcom Everest
-
-File: bnx2x/bnx2x-e1-6.2.9.0.fw
-File: bnx2x/bnx2x-e1h-6.2.9.0.fw
-File: bnx2x/bnx2x-e2-6.2.9.0.fw
-
-License:
- Copyright (c) 2007-2011 Broadcom Corporation
-
- This file contains firmware data derived from proprietary unpublished
- source code, Copyright (c) 2007-2011 Broadcom Corporation.
-
- Permission is hereby granted for the distribution of this firmware data
- in hexadecimal or equivalent format, provided this copyright notice is
- accompanying it.
-
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: BNX2 - Broadcom NetXtremeII
-
-File: bnx2/bnx2-mips-06-6.2.1.fw
-File: bnx2/bnx2-rv2p-06-6.0.15.fw
-File: bnx2/bnx2-mips-09-6.2.1a.fw
-File: bnx2/bnx2-rv2p-09-6.0.17.fw
-File: bnx2/bnx2-rv2p-09ax-6.0.17.fw
-
-Licence:
-
- This file contains firmware data derived from proprietary unpublished
- source code, Copyright (c) 2004 - 2010 Broadcom Corporation.
-
- Permission is hereby granted for the distribution of this firmware data
- in hexadecimal or equivalent format, provided this copyright notice is
- accompanying it.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: DVB AV7110 -- AV7110 cards
-
-File: av7110/bootcode.bin
-
-Licence: GPLv2 or later
-
-ARM assembly source code available at https://linuxtv.org/downloads/firmware/Boot.S
-
---------------------------------------------------------------------------
-
-Driver: wavefront - ISA WaveFront sound card
-
-File: yamaha/yss225_registers.bin
-
-Licence: Allegedly GPLv2+, but no source visible.
-
-Found in hex form in kernel source, with the following comment:
- Copyright (c) 1998-2002 by Paul Davis <pbd@op.net>
-
---------------------------------------------------------------------------
-
-Driver: mga - Matrox G200/G400/G550
-
-File: matrox/g200_warp.fw
-File: matrox/g400_warp.fw
-
-Licence:
-
-Copyright 1999 Matrox Graphics Inc.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-MATROX GRAPHICS INC., OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
-OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: r128 - ATI Rage 128
-
-File: r128/r128_cce.bin
-
-Licence:
-
-Copyright 2000 Advanced Micro Devices, Inc.
-
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
-
-Found in decimal form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: radeon - ATI Radeon
-
-File: radeon/R100_cp.bin
-File: radeon/R200_cp.bin
-File: radeon/R300_cp.bin
-File: radeon/R420_cp.bin
-File: radeon/RS600_cp.bin
-File: radeon/RS690_cp.bin
-File: radeon/R520_cp.bin
-File: radeon/R600_pfp.bin
-File: radeon/R600_me.bin
-File: radeon/RV610_pfp.bin
-File: radeon/RV610_me.bin
-File: radeon/RV630_pfp.bin
-File: radeon/RV630_me.bin
-File: radeon/RV620_pfp.bin
-File: radeon/RV620_me.bin
-File: radeon/RV635_pfp.bin
-File: radeon/RV635_me.bin
-File: radeon/RV670_pfp.bin
-File: radeon/RV670_me.bin
-File: radeon/RS780_pfp.bin
-File: radeon/RS780_me.bin
-File: radeon/RV770_pfp.bin
-File: radeon/RV770_me.bin
-File: radeon/RV730_pfp.bin
-File: radeon/RV730_me.bin
-File: radeon/RV710_pfp.bin
-File: radeon/RV710_me.bin
-
-Licence:
-
- * Copyright 2007-2009 Advanced Micro Devices, Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: ib_qib - QLogic Infiniband
-
-File: qlogic/sd7220.fw
-
-Licence:
-
- * Copyright (c) 2007, 2008 QLogic Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses. You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
diff --git a/firmware/acenic/tg1.bin.ihex b/firmware/acenic/tg1.bin.ihex
deleted file mode 100644
index bef2659d3645..000000000000
--- a/firmware/acenic/tg1.bin.ihex
+++ /dev/null
@@ -1,4573 +0,0 @@
-:100000000C040B0000004000000040001000000342
-:10001000000000000000000D0000000D3C1D00016C
-:100020008FBD5C5403A0F0213C100000261040005E
-:100030000C00100C000000000000000D27BDFFD8D0
-:100040003C1CC0003C1B0013377BD8000000D021B3
-:100050003C17001336F7541802E02021340583E8DA
-:10006000AFBF00240C002488AFB000200C0023E8B0
-:10007000000000003C040001248451A42405000178
-:1000800002E03021000038213C10000126107E5093
-:10009000AFB000100C002403AFBB00143C02000FF3
-:1000A0003442FFFF020210240362102B10400009AB
-:1000B000240500033C040001248451B002003021D7
-:1000C000036038213C020010AFA200100C00240392
-:1000D000AFA00014000020213405C0003C01000145
-:1000E00000370821A02083B03C010001003708211F
-:1000F000A02083B23C01000100370821A02083B377
-:100100003C01000100370821AC2083B4A2E004D8F0
-:10011000000418C02484000100771021AC40727CD8
-:1001200000771021AC40728002E31021A445727C5C
-:100130002C8200201440FFF7000418C0000020218A
-:100140003405C000000418C0248400010077102189
-:10015000AC40737C00771021AC40738002E3102127
-:10016000A445737C2C8200805440FFF7000418C023
-:10017000AF800054AF80011C8F82004434420040A5
-:10018000AF8200448F82004434420020AF8200449A
-:100190008F420218304200021040000900000000A7
-:1001A0008F4202203C030002346300040043102508
-:1001B000AEE204C48F42021C0800107434420004F2
-:1001C0008F4202203C0300023463000600431025E6
-:1001D000AEE204C48F42021C34420006AEE204CCFC
-:1001E0008F420218304200101040000A0000000048
-:1001F0008F42021C34420004AEE204C88F42022047
-:100200003C03000A34630004004310250800108AF0
-:10021000AEE204C08F4202203C03000A34630006B1
-:1002200000431025AEE204C08F42021C3442000697
-:10023000AEE204C88F4202183042020010400003B0
-:100240002402000108001091A2E27248A2E0724864
-:1002500024020001AF8200A0AF8200B08F8300545F
-:100260008F82005408001099246300648F82005428
-:10027000006210232C4200651440FFFC00000000C7
-:10028000AF8000448F4202088F43020CAEE20010A0
-:10029000AEE300148EE400108EE5001426E2003078
-:1002A000AEE2002824020490AEE20018AF84009071
-:1002B000AF8500948EE20028AF8200B496E2001A67
-:1002C000AF82009C8F8200B08EE304CC00431025E7
-:1002D000AF8200B08F8200B0304200041440FFFDB6
-:1002E000000000008EE204508EE30454AEE304FCF0
-:1002F0008EE204FC2442E0002C4220011440000D58
-:1003000026E400308EE204508EE304543C040001E5
-:10031000248451BC3C050001AFA00010AFA0001424
-:100320008EE704FC34A5F0000C00240300603021AB
-:1003300026E400300C0024882405040027440080B3
-:100340000C0024882405008026E4777C0C00248897
-:10035000240504008F42025C26E40094AEE20060B3
-:100360008F4202602745020024060008AEE20068C2
-:10037000240200060C00249AAEE200643C023B9A80
-:100380003442CA000000202124030002AEE30074BE
-:10039000AEE30070AEE2006C240203E8AEE20104BA
-:1003A00024020001AEE30100AEE2010C3C030001B7
-:1003B0000064182190635C2002E410212484000171
-:1003C000A043009C2C82000F1440FFF800000000A6
-:1003D0008F82004002E418212484000100021702E9
-:1003E00024420030A062009C02E41021A040009C46
-:1003F00096E2046A30420003144000090000000045
-:1004000096E2047A30420003504001313C03080078
-:1004100096E2046A304200031040002A3C020700C2
-:1004200096E2047A30420003104000263C020700A6
-:1004300096E3047A96E2046A146200223C02070002
-:100440008EE204C024030001A2E34E2034420E00D9
-:10045000AEE204C08F420218304201001040000595
-:10046000000000003C0200012442E1680800111D68
-:10047000000211003C0200012442D35C0002110082
-:10048000000211823C030800004310253C010001DA
-:10049000AC2212383C0200012442F6800002110016
-:1004A000000211823C030800004310253C010001BA
-:1004B000AC2212788EE2000034424000080012386C
-:1004C000AEE2000034423000AFA200188EE206080F
-:1004D0008F43022824420001304900FF512300E2EB
-:1004E000AFA000108EE20608000210C000571021D5
-:1004F0008FA300188FA4001CAC43060CAC4406105C
-:100500008F8701202762380024E800200102102B89
-:1005100050400001276830008F820128110200043A
-:10052000000000008F820124150200070000102146
-:100530008EE201A40000302124420001AEE201A4B9
-:10054000080011A08EE201A48EE40608000420C079
-:10055000008018218EE404308EE5043400A32821A5
-:1005600000A3302B0082202100862021ACE4000073
-:10057000ACE500048EE3060824020008A4E2000EA5
-:100580002402000DACE20018ACE9001C000318C006
-:100590002463060C02E31021ACE200088EE204C4DE
-:1005A000ACE20010AF88012092E24E2014400037E8
-:1005B000240600018EE24E30000210C02442503862
-:1005C00002E220218C830000240200071462001F35
-:1005D000000000008EE34E308EE24E341062001BAD
-:1005E000240300408C82000424420001AC820004F9
-:1005F0008EE24E348EE54E30244200011043000757
-:10060000000000008EE24E342442000110A20005DA
-:10061000000000000800118A0000000014A000057E
-:10062000000000008F82012824420020AF820128B0
-:100630008F8201288C8200042C420011504000134C
-:10064000AC800000080011A0000000008EE24E30D7
-:100650002403004024420001504300030000102105
-:100660008EE24E3024420001AEE24E308EE24E3039
-:10067000000210C02442503802E220212402000768
-:10068000AC82000024020001AC82000454C0000CC3
-:10069000AEE906083C040001248451C8AFA0001054
-:1006A000AFA000148EE606088F4702283C0500091B
-:1006B0000C00240334A5F000080012230000000001
-:1006C0008F830120276238002466002000C2102B8F
-:1006D00050400001276630008F82012810C20004BC
-:1006E000000000008F82012414C2000700000000F7
-:1006F0008EE201A40000302124420001AEE201A4F8
-:10070000080012078EE201A48EE20608AC62001C0B
-:100710008EE404A08EE504A42462001CAC620008F0
-:1007200024020008A462000E24020011AC6200182A
-:10073000AC640000AC6500048EE204C4AC6200103E
-:10074000AF86012092E24E201440003724060001BB
-:100750008EE24E30000210C02442503802E22021C6
-:100760008C830000240200121462001F00000000AD
-:100770008EE34E308EE24E341062001B24030040A4
-:100780008C82000424420001AC8200048EE24E34CC
-:100790008EE54E30244200011043000700000000A7
-:1007A0008EE24E342442000110A200050000000039
-:1007B000080011F10000000014A000050000000076
-:1007C0008F82012824420020AF8201288F820128D5
-:1007D0008C8200042C42001150400013AC800000B9
-:1007E00008001207000000008EE24E302403004093
-:1007F0002442000150430003000010218EE24E30DD
-:1008000024420001AEE24E308EE24E30000210C0B3
-:100810002442503802E2202124020012AC8200005F
-:1008200024020001AC82000414C0001B0000000080
-:100830003C040001248451D0AFA00010AFA00014EC
-:100840008EE606088F4702283C0500090C002403A9
-:1008500034A5F0018EE201B024420001AEE201B005
-:10086000080012238EE201B03C040001248451DC14
-:10087000AFA000148EE606088F4702283C05000949
-:100880000C00240334A5F0058EE201AC24420001E3
-:10089000AEE201AC8EE201AC8EE201603C040001EC
-:1008A000248451E83405F00124420001AEE20160E5
-:1008B0008EE201600000302100003821AFA000105E
-:1008C0000C002403AFA00014080012380000000040
-:1008D0003C0200012442F5A800021100000211822E
-:1008E000004310253C010001AC22127896E2045A24
-:1008F00030420003104000253C050FFF8EE204C883
-:1009000034A5FFFF34420A00AEE204C88EE304C8F7
-:100910003C040001248451F424020001A2E204EC0E
-:10092000A2E204ED3C020002006218253C02000134
-:100930002442A3900045102400021082AEE304C8B4
-:100940003C030800004310253C010001AC221220AA
-:100950003C0200012442ADD4004510240002108264
-:10096000004310253C010001AC22128096E6045A97
-:100970000000382124050011AFA000100C00240352
-:10098000AFA0001408001268000000003C02000143
-:100990002442A9D400021100000211823C03080085
-:1009A000004310253C010001AC22128096E2046A4B
-:1009B00030420010144000090000000096E2047A62
-:1009C00030420010104001120000000096E2046A5C
-:1009D00030420010104000053C02070096E2047A05
-:1009E00030420010144001023C0207003442300043
-:1009F000AFA200188EE206088F43022824420001AD
-:100A0000304900FF512300E2AFA000108EE206083B
-:100A1000000210C0005710218FA300188FA4001CE3
-:100A2000AC43060CAC4406108F87012027623800C7
-:100A300024E800200102102B5040000127683000FC
-:100A40008F82012811020004000000008F8201241F
-:100A500015020007000010218EE201A400003021E1
-:100A600024420001AEE201A4080012EA8EE201A4D1
-:100A70008EE40608000420C0008018218EE40430B3
-:100A80008EE5043400A3282100A3302B008220210E
-:100A900000862021ACE40000ACE500048EE30608EB
-:100AA00024020008A4E2000E2402000DACE20018AB
-:100AB000ACE9001C000318C02463060C02E31021FB
-:100AC000ACE200088EE204C4ACE20010AF88012062
-:100AD00092E24E2014400037240600018EE24E3090
-:100AE000000210C02442503802E220218C83000012
-:100AF000240200071462001F000000008EE34E3045
-:100B00008EE24E341062001B240300408C820004ED
-:100B100024420001AC8200048EE24E348EE54E3059
-:100B20002442000110430007000000008EE24E3412
-:100B30002442000110A2000500000000080012D4A9
-:100B40000000000014A00005000000008F820128B2
-:100B500024420020AF8201288F8201288C82000469
-:100B60002C42001150400013AC800000080012EA33
-:100B7000000000008EE24E302403004024420001B9
-:100B800050430003000010218EE24E302442000149
-:100B9000AEE24E308EE24E30000210C02442503899
-:100BA00002E2202124020007AC820000240200019E
-:100BB000AC82000454C0000CAEE906083C040001FD
-:100BC000248451C8AFA00010AFA000148EE6060820
-:100BD0008F4702283C0500090C00240334A5F000CF
-:100BE0000800136D000000008F8301202762380089
-:100BF0002466002000C2102B504000012766300000
-:100C00008F82012810C20004000000008F8201249E
-:100C100014C20007000000008EE201A40000302191
-:100C200024420001AEE201A4080013518EE201A4A7
-:100C30008EE20608AC62001C8EE404A08EE504A4DB
-:100C40002462001CAC62000824020008A462000EAA
-:100C500024020011AC620018AC640000AC65000412
-:100C60008EE204C4AC620010AF86012092E24E20F6
-:100C700014400037240600018EE24E30000210C0FE
-:100C80002442503802E220218C830000240200120A
-:100C90001462001F000000008EE34E308EE24E34DE
-:100CA0001062001B240300408C82000424420001D7
-:100CB000AC8200048EE24E348EE54E3024420001B8
-:100CC00010430007000000008EE24E342442000171
-:100CD00010A20005000000000800133B0000000007
-:100CE00014A00005000000008F820128244200208B
-:100CF000AF8201288F8201288C8200042C420011CF
-:100D000050400013AC8000000800135100000000A8
-:100D10008EE24E3024030040244200015043000381
-:100D2000000010218EE24E3024420001AEE24E302F
-:100D30008EE24E30000210C02442503802E22021E0
-:100D400024020012AC82000024020001AC820004E4
-:100D500014C0001B000000003C040001248451D09A
-:100D6000AFA00010AFA000148EE606088F4702283F
-:100D70003C0500090C00240334A5F0018EE201B00B
-:100D800024420001AEE201B00800136D8EE201B012
-:100D90003C040001248451DCAFA000148EE6060858
-:100DA0008F4702283C0500090C00240334A5F005F8
-:100DB0008EE201AC24420001AEE201AC8EE201AC55
-:100DC0008EE201603C040001248451E83405F00205
-:100DD00024420001AEE201608EE201600000302199
-:100DE00000003821AFA000100C002403AFA00014B5
-:100DF00096E6047A96E7046A3C04000124845200D3
-:100E000024050012AFA000100C002403AFA00014B2
-:100E10000C004500000000000C002318000000003A
-:100E20003C06000134C63800AEE00608AF40022898
-:100E3000AF40022C96E304588EE400003C0512D823
-:100E400034A5C35827623800AEE2725827623800D2
-:100E5000AEE2726027623800AEE27264036610216F
-:100E6000AEE272702402FFFFAEE004D4AEE004E014
-:100E7000AEE004E4AEE004F0A2E004F4AEE00E0C58
-:100E8000AEE00E18AEE00E10AEE00E14AEE00E1C9A
-:100E9000AEE0724CAEE05244AEE05240AEE0523CA6
-:100EA000AEE07250AEE07254AEE0725CAEE07268DA
-:100EB000AEE004D02463FFFF00852025AEE304F8F4
-:100EC000AEE40000AF800060AF8200643C0201002D
-:100ED000AFA200188EE206088F43022824420001C8
-:100EE000304900FF512300E2AFA000108EE2060857
-:100EF000000210C0005710218FA300188FA4001CFF
-:100F0000AC43060CAC4406108F87012027623800E2
-:100F100024E800200102102B504000012768300017
-:100F20008F82012811020004000000008F8201243A
-:100F300015020007000010218EE201A400003021FC
-:100F400024420001AEE201A4080014228EE201A4B2
-:100F50008EE40608000420C0008018218EE40430CE
-:100F60008EE5043400A3282100A3302B0082202129
-:100F700000862021ACE40000ACE500048EE3060806
-:100F800024020008A4E2000E2402000DACE20018C6
-:100F9000ACE9001C000318C02463060C02E3102116
-:100FA000ACE200088EE204C4ACE20010AF8801207D
-:100FB00092E24E2014400037240600018EE24E30AB
-:100FC000000210C02442503802E220218C8300002D
-:100FD000240200071462001F000000008EE34E3060
-:100FE0008EE24E341062001B240300408C82000409
-:100FF00024420001AC8200048EE24E348EE54E3075
-:101000002442000110430007000000008EE24E342D
-:101010002442000110A20005000000000800140C8A
-:101020000000000014A00005000000008F820128CD
-:1010300024420020AF8201288F8201288C82000484
-:101040002C42001150400013AC8000000800142214
-:10105000000000008EE24E302403004024420001D4
-:1010600050430003000010218EE24E302442000164
-:10107000AEE24E308EE24E30000210C024425038B4
-:1010800002E2202124020007AC82000024020001B9
-:10109000AC82000454C0000CAEE906083C04000118
-:1010A000248451C8AFA00010AFA000148EE606083B
-:1010B0008F4702283C0500090C00240334A5F000EA
-:1010C000080014A5000000008F830120276238006B
-:1010D0002466002000C2102B50400001276630001B
-:1010E0008F82012810C20004000000008F820124BA
-:1010F00014C20007000000008EE201A400003021AD
-:1011000024420001AEE201A4080014898EE201A489
-:101110008EE20608AC62001C8EE404A08EE504A4F6
-:101120002462001CAC62000824020008A462000EC5
-:1011300024020011AC620018AC640000AC6500042D
-:101140008EE204C4AC620010AF86012092E24E2011
-:1011500014400037240600018EE24E30000210C019
-:101160002442503802E220218C8300002402001225
-:101170001462001F000000008EE34E308EE24E34F9
-:101180001062001B240300408C82000424420001F2
-:10119000AC8200048EE24E348EE54E3024420001D3
-:1011A00010430007000000008EE24E34244200018C
-:1011B00010A20005000000000800147300000000E9
-:1011C00014A00005000000008F82012824420020A6
-:1011D000AF8201288F8201288C8200042C420011EA
-:1011E00050400013AC80000008001489000000008B
-:1011F0008EE24E302403004024420001504300039D
-:10120000000010218EE24E3024420001AEE24E304A
-:101210008EE24E30000210C02442503802E22021FB
-:1012200024020012AC82000024020001AC820004FF
-:1012300014C0001B000000003C040001248451D0B5
-:10124000AFA00010AFA000148EE606088F4702285A
-:101250003C0500090C00240334A5F0018EE201B026
-:1012600024420001AEE201B0080014A58EE201B0F4
-:101270003C040001248451DCAFA000148EE6060873
-:101280008F4702283C0500090C00240334A5F00513
-:101290008EE201AC24420001AEE201AC8EE201AC70
-:1012A0008EE2015424420001AEE201540C0014DC31
-:1012B0008EE201548F8200A0304200041440FFFDF2
-:1012C000000000008F8200403042000114400008FE
-:1012D000000000008F43010424020001106200049A
-:1012E000000000008F420264104000060000000071
-:1012F0008EE2017C24420001AEE2017C080014C5AC
-:101300008EE2017C8F82004434420004AF820044AC
-:101310008EE2017824420001AEE201788EE201788B
-:101320008F8200D88F8300D400431023AEE2726C0A
-:101330008EE2726C1C4000033C030001004310214C
-:10134000AEE2726C0C004064000000000C004440EF
-:10135000AF8002288FBF00248FB0002003E0000878
-:1013600027BD002803E000080000000003E000089B
-:101370000000000000000000000000002402002C1B
-:10138000AF820050AEE072748F420238AEE27278E3
-:101390008F82005424420067AF820058AEE07B8801
-:1013A000AEE07B8CAEE07B843C010001003708217D
-:1013B000AC2083BC3C0100010037082103E0000899
-:1013C000A02083B927BDFFD8AFBF0024AFB0002055
-:1013D0008F8200543C0300018C635CD82442006778
-:1013E0001060000DAF8200583C0200010057102130
-:1013F000904283B8104000053C0302003C0100010C
-:101400000037082108001503A02083B88EE20000F1
-:1014100000431025AEE200008F4202183042010066
-:10142000104000C6000000008F8200B0304200046F
-:10143000104000C2000000003C03000100771821AA
-:101440008C6383D08F820104146200B4000000001A
-:101450003C030001007718218C6383D48F8200B491
-:10146000146200AE000000008F8200B03C030080D8
-:10147000004310241040000D000000008F82011C6A
-:1014800034420002AF82011C8F8200B02403FFFBB4
-:1014900000431024AF8200B08F82011C2403FFFDA3
-:1014A00000431024080015CCAF82011C3C0300014E
-:1014B000007718218C6383D08F820104146200822C
-:1014C000000000003C030001007718218C6383D4E6
-:1014D0008F8200B41462007C000000003C07000111
-:1014E00000F738218CE783D08F8200B03C040001E4
-:1014F00024845270AFA00014AFA200108F8600B0F9
-:101500003C0500050C00240334A509008F82011C52
-:1015100034420002AF82011C8F8301048F8200B02D
-:1015200034420001AF8200B0AF8301048F830120F9
-:10153000276238002466002000C2102B50400001B2
-:10154000276630008F82012810C2000400000000CE
-:101550008F82012414C20006000000008EE201A464
-:1015600024420001AEE201A4080015A08EE201A40D
-:101570008F4402088F45020C26E20030AC6200085E
-:1015800024020400A462000E2402000FAC620018C2
-:10159000AC60001CAC640000AC6500048EE204C4C6
-:1015A000AC620010AF86012092E24E20144000375A
-:1015B000000000008EE24E30000210C0244250387D
-:1015C00002E220218C830000240200071462001F25
-:1015D000000000008EE34E308EE24E341062001B9D
-:1015E000240300408C82000424420001AC820004E9
-:1015F0008EE24E348EE54E30244200011043000747
-:10160000000000008EE24E342442000110A20005CA
-:10161000000000000800158A0000000014A000056A
-:10162000000000008F82012824420020AF820128A0
-:101630008F8201288C8200042C420011504000133C
-:10164000AC800000080015A0000000008EE24E30C3
-:1016500024030040244200015043000300001021F5
-:101660008EE24E3024420001AEE24E308EE24E3029
-:10167000000210C02442503802E220212402000758
-:10168000AC82000024020001AC8200048F82011CA5
-:101690002403FFFD00431024AF82011C8EE201E40D
-:1016A0003C07000100F738218CE783D02442000179
-:1016B000AEE201E48EE201E43C0400012484527CA9
-:1016C000080015BDAFA000108F8201043C0100018D
-:1016D00000370821AC2283D08F8200B43C07000180
-:1016E00000F738218CE783D03C0400012484528425
-:1016F0003C01000100370821AC2283D4AFA00010C8
-:10170000AFA000148F8600B03C0500050C00240338
-:1017100034A50900080015CC000000008F820104E8
-:101720003C01000100370821AC2283D08F8200B435
-:101730003C01000100370821AC2283D48EE2727490
-:1017400092E304F42442006714600006AEE272746F
-:101750008EE272748F4302340043102B1440007BDE
-:10176000000000008EE304E48EE204F8146200043A
-:101770000000000092E204F450400074A2E004F47F
-:101780008F830120276238002466002000C2102BBE
-:1017900050400001276630008F82012810C20004EB
-:1017A000000000008F82012414C200070000000026
-:1017B0008EE201A40000802124420001AEE201A4D7
-:1017C000080016378EE201A48EE204E4AC62001C2D
-:1017D0008EE404B08EE504B42462001CAC62000800
-:1017E00024020008A462000E24020011AC6200185A
-:1017F000AC640000AC6500048EE204C4AC6200106E
-:10180000AF86012092E24E201440003724100001E0
-:101810008EE24E30000210C02442503802E22021F5
-:101820008C830000240200121462001F00000000DC
-:101830008EE34E308EE24E341062001B24030040D3
-:101840008C82000424420001AC8200048EE24E34FB
-:101850008EE54E30244200011043000700000000D6
-:101860008EE24E342442000110A200050000000068
-:10187000080016210000000014A000050000000070
-:101880008F82012824420020AF8201288F82012804
-:101890008C8200042C42001150400013AC800000E8
-:1018A00008001637000000008EE24E30240300408E
-:1018B0002442000150430003000010218EE24E300C
-:1018C00024420001AEE24E308EE24E30000210C0E3
-:1018D0002442503802E2202124020012AC8200008F
-:1018E00024020001AC8200045600000B2410000109
-:1018F0008EE204E43C0400012484528CAFA0001466
-:10190000AFA200108EE606088F4702283C050009AA
-:101910000C00240334A5F006160000032402000185
-:1019200008001650A2E204F48EE201702442000185
-:10193000AEE201708EE201708EE204E4A2E004F4F3
-:10194000AEE004F0AEE07274AEE204F88EE20E1C7B
-:101950001040006D000000008F83012027623800D6
-:101960002466002000C2102B504000012766300082
-:101970008F82012810C20004000000008F82012421
-:1019800014C20007000000008EE201A400008021C4
-:1019900024420001AEE201A4080016AD8EE201A4CB
-:1019A0008EE2724CAC62001C8EE404A88EE504AC9E
-:1019B0002462001CAC62000824020008A462000E2D
-:1019C00024020011AC620018AC640000AC65000495
-:1019D0008EE204C4AC620010AF86012092E24E2079
-:1019E00014400037241000018EE24E30000210C077
-:1019F0002442503802E220218C830000240200128D
-:101A00001462001F000000008EE34E308EE24E3460
-:101A10001062001B240300408C8200042442000159
-:101A2000AC8200048EE24E348EE54E30244200013A
-:101A300010430007000000008EE24E3424420001F3
-:101A400010A200050000000008001697000000002A
-:101A500014A00005000000008F820128244200200D
-:101A6000AF8201288F8201288C8200042C42001151
-:101A700050400013AC800000080016AD00000000CC
-:101A80008EE24E3024030040244200015043000304
-:101A9000000010218EE24E3024420001AEE24E30B2
-:101AA0008EE24E30000210C02442503802E2202163
-:101AB00024020012AC82000024020001AC82000467
-:101AC0005600000B241000018EE2724C3C04000111
-:101AD00024845298AFA00014AFA200108EE6724C7E
-:101AE0008F4702803C0500090C00240334A5F00850
-:101AF00056000001AEE00E1C8EE20174244200018B
-:101B0000AEE201748EE201748EE24E2410400019A0
-:101B100000000000AEE04E248F8200403042000101
-:101B200014400008000000008F430104240200015B
-:101B300010620004000000008F42026410400006A2
-:101B4000000000008EE2017C24420001AEE2017C34
-:101B5000080016DA8EE2017C8F82004434420004D1
-:101B6000AF8200448EE2017824420001AEE20178A7
-:101B70008EE201788EE272782442FF99AEE27278AA
-:101B80008EE272781C4002AD000000008F420238E5
-:101B9000104002AA000000003C0200010057102182
-:101BA000904283E0144002A5000000008F420080B4
-:101BB000AEE2004C8F4200C0AEE200488F4200848B
-:101BC000AEE200388F420084AEE202448F420088C9
-:101BD000AEE202488F42008CAEE2024C8F4200908F
-:101BE000AEE202508F420094AEE202548F4200985F
-:101BF000AEE202588F42009CAEE2025C8F4200A02F
-:101C0000AEE202608F4200A4AEE202648F4200A8FE
-:101C1000AEE202688F4200ACAEE2026C8F4200B0CE
-:101C2000AEE202708F4200B4AEE202748F4200B89E
-:101C3000AEE202788F4200BC24040001AEE2027CD6
-:101C4000AEE0003C00041080005710218EE3003C01
-:101C50008C42024424840001006218212C82000F6F
-:101C6000AEE3003C1440FFF8000410808F4200CC2B
-:101C7000AEE200508F4200D0AEE200548F830120CC
-:101C8000276238002466002000C2102B504000015B
-:101C9000276630008F82012810C200040000000077
-:101CA0008F82012414C20007000000008EE201A40C
-:101CB0000000802124420001AEE201A40800177553
-:101CC0008EE201A48F4402088F45020C26E2003008
-:101CD000AC62000824020400A462000E2402000F7B
-:101CE000AC620018AC60001CAC640000AC65000481
-:101CF0008EE204C4AC620010AF86012092E24E2056
-:101D000014400037241000018EE24E30000210C053
-:101D10002442503802E220218C8300002402000774
-:101D20001462001F000000008EE34E308EE24E343D
-:101D30001062001B240300408C8200042442000136
-:101D4000AC8200048EE24E348EE54E302442000117
-:101D500010430007000000008EE24E3424420001D0
-:101D600010A20005000000000800175F000000003E
-:101D700014A00005000000008F82012824420020EA
-:101D8000AF8201288F8201288C8200042C4200112E
-:101D900050400013AC8000000800177500000000E0
-:101DA0008EE24E30240300402442000150430003E1
-:101DB000000010218EE24E3024420001AEE24E308F
-:101DC0008EE24E30000210C02442503802E2202140
-:101DD00024020007AC82000024020001AC8200044F
-:101DE000120002123C020400AFA200183C020001E3
-:101DF00000571021904283B01040010B00000000FA
-:101E00008EE206088F43022824420001304A00FF78
-:101E1000514300FDAFA000108EE20608000210C082
-:101E2000005710218FA300188FA4001CAC43060C90
-:101E3000AC4406108F8300548F8200542469003212
-:101E4000012210232C4200331040006A0000582168
-:101E500024180008240F000D240D0007240C004056
-:101E6000240E00018F8701202762380024E800201B
-:101E70000102102B50400001276830008F8201289A
-:101E800011020004000000008F82012415020007E7
-:101E9000000010218EE201A40000802124420001F4
-:101EA000AEE201A4080017F38EE201A48EE4060856
-:101EB000000420C0008018218EE404308EE5043434
-:101EC00000A3282100A3302B00822021008620219E
-:101ED000ACE40000ACE500048EE20608A4F8000EB5
-:101EE000ACEF0018ACEA001C000210C02442060C43
-:101EF00002E21021ACE200088EE204C4ACE2001061
-:101F0000AF88012092E24E201440003324100001DB
-:101F10008EE24E30000210C02442503802E22021EE
-:101F20008C820000144D001F000000008EE34E3034
-:101F30008EE24E341062001B000000008C82000410
-:101F400024420001AC8200048EE24E348EE34E3017
-:101F500024420001104C0007000000008EE24E34C5
-:101F6000244200011062000500000000080017E094
-:101F70000000000014600005000000008F820128AE
-:101F800024420020AF8201288F8201288C82000425
-:101F90002C42001150400010AC800000080017F3E4
-:101FA000000000008EE24E3024420001504C00033D
-:101FB000000010218EE24E3024420001AEE24E308D
-:101FC0008EE24E30000210C02442503802E220213E
-:101FD000AC8D0000AC8E000456000006240B0001FE
-:101FE0008F820054012210232C4200331440FF9DA5
-:101FF00000000000316300FF24020001146200773A
-:102000003C050009AEEA06088F8300548F82005415
-:1020100024690032012210232C4200331040006159
-:1020200000005821240D0008240C0011240800127F
-:1020300024070040240A00018F8301202762380012
-:102040002466002000C2102B50400001276630009B
-:102050008F82012810C20004000000008F8201243A
-:1020600014C20007000000008EE201A400008021DD
-:1020700024420001AEE201A40800185F8EE201A430
-:102080008EE20608AC62001C8EE404A08EE504A477
-:102090002462001CAC620008A46D000EAC6C001839
-:1020A000AC640000AC6500048EE204C4AC620010B5
-:1020B000AF86012092E24E2014400033241000012C
-:1020C0008EE24E30000210C02442503802E220213D
-:1020D0008C8200001448001F000000008EE34E3088
-:1020E0008EE24E341062001B000000008C8200045F
-:1020F00024420001AC8200048EE24E348EE34E3066
-:102100002442000110470007000000008EE24E3418
-:102110002442000110620005000000000800184C75
-:102120000000000014600005000000008F820128FC
-:1021300024420020AF8201288F8201288C82000473
-:102140002C42001150400010AC8000000800185FC5
-:10215000000000008EE24E30244200015047000390
-:10216000000010218EE24E3024420001AEE24E30DB
-:102170008EE24E30000210C02442503802E220218C
-:10218000AC880000AC8A000456000006240B000155
-:102190008F820054012210232C4200331440FFA6EA
-:1021A00000000000316300FF2402000114620003FC
-:1021B0003C0500090800197C241000013C040001C2
-:1021C000248452A4AFA00010AFA000148F86012079
-:1021D0008F8701240800187B34A5F0113C0400010E
-:1021E000248452B0AFA00010AFA000148F8601204D
-:1021F0008F87012434A5F0100C00240300008021F7
-:102200000800197C000000003C040001248452BC3A
-:10221000AFA000148EE606088F4702283C0500098F
-:102220000800197534A5F00F8EE206088F430228C6
-:1022300024420001304900FF512300E2AFA000100A
-:102240008EE20608000210C0005710218FA300186C
-:102250008FA4001CAC43060CAC4406108F870120F1
-:102260002762380024E800200102102B50400001B2
-:10227000276830008F82012811020004000000004E
-:102280008F82012415020007000010218EE201A4B4
-:102290000000802124420001AEE201A4080018F7EA
-:1022A0008EE201A48EE40608000420C000801821FC
-:1022B0008EE404308EE5043400A3282100A3302BE3
-:1022C0000082202100862021ACE40000ACE500045F
-:1022D0008EE3060824020008A4E2000E2402000D8A
-:1022E000ACE20018ACE9001C000318C02463060C23
-:1022F00002E31021ACE200088EE204C4ACE200105C
-:10230000AF88012092E24E201440003724100001D3
-:102310008EE24E30000210C02442503802E22021EA
-:102320008C830000240200071462001F00000000DC
-:102330008EE34E308EE24E341062001B24030040C8
-:102340008C82000424420001AC8200048EE24E34F0
-:102350008EE54E30244200011043000700000000CB
-:102360008EE24E342442000110A20005000000005D
-:10237000080018E10000000014A0000500000000A3
-:102380008F82012824420020AF8201288F820128F9
-:102390008C8200042C42001150400013AC800000DD
-:1023A000080018F7000000008EE24E3024030040C1
-:1023B0002442000150430003000010218EE24E3001
-:1023C00024420001AEE24E308EE24E30000210C0D8
-:1023D0002442503802E2202124020007AC8200008F
-:1023E00024020001AC8200045600000CAEE906088D
-:1023F0003C040001248452C8AFA00010AFA0001418
-:102400008EE606088F4702283C0500090C002403CD
-:1024100034A5F0000800197C000000008F83012023
-:10242000276238002466002000C2102B50400001B3
-:10243000276630008F82012810C2000400000000CF
-:102440008F82012414C20007000000008EE201A464
-:102450000000802124420001AEE201A40800195EC0
-:102460008EE201A48EE20608AC62001C8EE404A099
-:102470008EE504A42462001CAC620008240200085B
-:10248000A462000E24020011AC620018AC640000CB
-:10249000AC6500048EE204C4AC620010AF8601207B
-:1024A00092E24E2014400037241000018EE24E309C
-:1024B000000210C02442503802E220218C83000028
-:1024C000240200121462001F000000008EE34E3050
-:1024D0008EE24E341062001B240300408C82000404
-:1024E00024420001AC8200048EE24E348EE54E3070
-:1024F0002442000110430007000000008EE24E3429
-:102500002442000110A20005000000000800194844
-:102510000000000014A00005000000008F820128C8
-:1025200024420020AF8201288F8201288C8200047F
-:102530002C42001150400013AC8000000800195ECE
-:10254000000000008EE24E302403004024420001CF
-:1025500050430003000010218EE24E30244200015F
-:10256000AEE24E308EE24E30000210C024425038AF
-:1025700002E2202124020012AC82000024020001A9
-:10258000AC8200045600001D241000013C04000130
-:10259000248452D0AFA00010AFA000148EE606082D
-:1025A0008F4702283C0500090C00240334A5F001E4
-:1025B0008EE201B024420001AEE201B00800197CB5
-:1025C0008EE201B03C040001248452DCAFA0001470
-:1025D0008EE606088F4702283C05000934A5F00561
-:1025E0000C002403000000008EE201AC00008021FA
-:1025F00024420001AEE201AC8EE201AC1200000CFC
-:10260000240200013C01000100370821A02083B012
-:102610008F4202388EE3015824630001AEE3015873
-:102620008EE301580800198CAEE272782402000192
-:102630003C01000100370821A02283B03C020001C8
-:102640008C425CD810400187000000008EE27B8441
-:1026500024430001284200C9144001A4AEE37B8456
-:102660008EE204D43042000214400119AEE07B84B3
-:102670008EE204D43C0306003463100034420002AE
-:10268000AEE204D4AFA300188EE206088F430228FE
-:1026900024420001304A00FF514300FDAFA000106A
-:1026A0008EE20608000210C0005710218FA3001808
-:1026B0008FA4001CAC43060CAC4406108F8300545E
-:1026C0008F82005424690032012210232C420033EF
-:1026D0001040006A0000582124180008240F000D43
-:1026E000240D0007240C0040240E00018F870120D8
-:1026F0002762380024E800200102102B504000011E
-:10270000276830008F8201281102000400000000B9
-:102710008F82012415020007000010218EE201A41F
-:102720000000802124420001AEE201A408001A1535
-:102730008EE201A48EE40608000420C00080182167
-:102740008EE404308EE5043400A3282100A3302B4E
-:102750000082202100862021ACE40000ACE50004CA
-:102760008EE20608A4F8000EACEF0018ACEA001CDC
-:10277000000210C02442060C02E21021ACE2000864
-:102780008EE204C4ACE20010AF88012092E24E2039
-:1027900014400033241000018EE24E30000210C0BD
-:1027A0002442503802E220218C820000144D001F88
-:1027B000000000008EE34E308EE24E341062001BAB
-:1027C000000000008C82000424420001AC8200045E
-:1027D0008EE24E348EE34E3024420001104C00074E
-:1027E000000000008EE24E34244200011062000519
-:1027F0000000000008001A0200000000146000053C
-:10280000000000008F82012824420020AF820128AE
-:102810008F8201288C8200042C420011504000104D
-:10282000AC80000008001A15000000008EE24E3057
-:1028300024420001504C0003000010218EE24E3073
-:1028400024420001AEE24E308EE24E30000210C053
-:102850002442503802E22021AC8D0000AC8E0004EE
-:1028600056000006240B00018F8200540122102321
-:102870002C4200331440FF9D00000000316300FF34
-:102880002402000154620078AFA00010AEEA0608EE
-:102890008F8300548F820054246900320122102358
-:1028A0002C4200331040006100005821240D000824
-:1028B000240C00112408001224070040240A0001FF
-:1028C0008F830120276238002466002000C2102B6D
-:1028D00050400001276630008F82012810C200049A
-:1028E000000000008F82012414C2000700000000D5
-:1028F0008EE201A40000802124420001AEE201A486
-:1029000008001A818EE201A48EE20608AC62001C67
-:102910008EE404A08EE504A42462001CAC620008CE
-:10292000A46D000EAC6C0018AC640000AC65000433
-:102930008EE204C4AC620010AF86012092E24E2009
-:1029400014400033241000018EE24E30000210C00B
-:102950002442503802E220218C8200001448001FDB
-:10296000000000008EE34E308EE24E341062001BF9
-:10297000000000008C82000424420001AC820004AC
-:102980008EE24E348EE34E302442000110470007A1
-:10299000000000008EE24E34244200011062000567
-:1029A0000000000008001A6E00000000146000051E
-:1029B000000000008F82012824420020AF820128FD
-:1029C0008F8201288C8200042C420011504000109C
-:1029D000AC80000008001A81000000008EE24E303A
-:1029E0002442000150470003000010218EE24E30C7
-:1029F00024420001AEE24E308EE24E30000210C0A2
-:102A00002442503802E22021AC880000AC8A000445
-:102A100056000006240B00018F820054012210236F
-:102A20002C4200331440FFA600000000316300FF79
-:102A30002402000110620022000000003C0400019A
-:102A4000248452A4AFA00010AFA000148F860120F0
-:102A50008F8701243C0500090C00240334A5F011E4
-:102A600008001AAD000000003C040001248452B0AC
-:102A7000AFA000148F8601208F8701243C05000938
-:102A80000C00240334A5F01008001AAD000000006B
-:102A90003C040001248452BCAFA000148EE606085A
-:102AA0008F4702283C0500090C00240334A5F00FD1
-:102AB0008EE201AC24420001AEE201AC8EE201AC38
-:102AC0008EE2015C24420001AEE2015C8EE2015C18
-:102AD0008EE204D430420001104000550000000096
-:102AE0008F42021830420080104000290000000090
-:102AF0008F82004434420040AF8200448EE27B7CEF
-:102B0000004028218EE200C08EE300C424060000AD
-:102B10002407FFFF00002021004610241444000D6C
-:102B2000006718241465000B000000008EE27B8013
-:102B3000004028218EE200E08EE300E40000202126
-:102B40000046102414440003006718241065000B8D
-:102B5000000000008EE200C08EE300C48EE400E0BE
-:102B60008EE500E4AEE37B7CAEE57B808F820044A3
-:102B70003842002008001B38AF8200448F82004496
-:102B80002403FFDF0043102408001B38AF820044F9
-:102B90008F8200442403FFDF00431024AF820044EF
-:102BA0008EE27B7C004028218EE200C08EE300C4D0
-:102BB000240600002407FFFF000020210046102407
-:102BC0001444000D006718241465000B0000000079
-:102BD0008EE27B80004028218EE200E08EE300E45C
-:102BE000000020210046102414440003006718242C
-:102BF0001065000B000000008EE200C08EE300C4F0
-:102C00008EE400E08EE500E4AEE37B7CAEE57B8005
-:102C10008F8200443842004008001B38AF820044D5
-:102C20008F8200443442004008001B38AF820044C9
-:102C30008F82004434420040AF8200448EE27B8C9D
-:102C4000244300012842001514400028AEE37B8C89
-:102C50008F82004438420020AF82004408001B38B5
-:102C6000AEE07B8C8EE204D43042000110400011B3
-:102C7000000000008F42021830420080104000091E
-:102C8000000000008F82004434420020AF820044E4
-:102C90008F8200442403FFBF0043102408001B362A
-:102CA000AF8200448F8200443442006008001B362B
-:102CB000AF8200448F82004434420040AF8200441F
-:102CC0008EE27B88244300012842138914400005CA
-:102CD000AEE37B888F82004438420020AF820044FC
-:102CE000AEE07B880C004603000000008FBF00248C
-:102CF0008FB0002003E0000827BD002827BDFFB8E3
-:102D0000AFBF0044AFB60040AFB5003CAFB4003831
-:102D1000AFB30034AFB20030AFB1002CAFB0002879
-:102D20008F96006432C200041040000C240200049C
-:102D3000AF8200648F420114AEE204E08F82006033
-:102D400034420008AF8200608EE2016C2442000130
-:102D5000AEE2016C080022F48EE2016C32C2000186
-:102D60001040000424020001AF820064080022F435
-:102D70000000000032C200021440000C3C050003B9
-:102D80003C0400012484535434A5000102C03021C6
-:102D900000003821AFA000100C002403AFA00014E5
-:102DA0002402FFF8080022F4AF8200648F43022C53
-:102DB0008F42010C5062000CAFA000108F42022C19
-:102DC00000021080005A10218C420300AFA20020A4
-:102DD0008F42022C24070001244200013042003FB0
-:102DE00008001B80AF42022C3C0400012484536085
-:102DF000AFA000148F46022C8F47010C3C05000346
-:102E00000C00240334A5F01F0000382114E0000357
-:102E100000000000080022EDAF96006493A200209D
-:102E20002443FFFF2C62001110400658000310805D
-:102E30003C010001002208218C22541800400008A7
-:102E4000000000008FA2002030420FFFAEE20E0C07
-:102E50008F82006034420200AF8200608EE201186F
-:102E600024420001AEE20118080022E88EE20118B7
-:102E70008FA20020240300013C010001003708213B
-:102E8000A02383B130420FFFAEE252388F82006040
-:102E900034420100AF8200608EE20144244200010E
-:102EA000AEE20144080022E88EE201448FA2002035
-:102EB0000002120000022502240200011082000517
-:102EC00024020002108200092402FFFE08001BC930
-:102ED000AFA000108EE204D4AEE40070AEE4007443
-:102EE0003442000108001BBDAEE204D48EE304D4DA
-:102EF000AEE40070AEE4007400621824AEE304D4C3
-:102F00008F8400540004144200041C8200431021EA
-:102F100000041CC20043102300041D0200431021C2
-:102F200000041D420043102308001BD0AEE20078CD
-:102F30003C0400012484536CAFA000148FA6002031
-:102F40003C0500030C00240334A500048EE20110AC
-:102F500024420001AEE20110080022E88EE20110D6
-:102F6000274402120C0022FE240500063049001FEF
-:102F7000000920C002E410219442727C30424000DB
-:102F80001040000A0097102197430212A443727E5A
-:102F90008F43021400971021AC43728002E4182181
-:102FA0003402800008001C79A462727C9443727E13
-:102FB000974202121462000602E4102100971021C9
-:102FC0008C4372808F4202141062009F02E4102131
-:102FD0009442727C304280001040002A2406FFFF99
-:102FE00000002021000410C002E210219442737CF2
-:102FF000304240005440000500803021248400010C
-:103000002C8200801440FFF8000410C004C100109E
-:10301000000618C0000610C0005718218C63737C8E
-:1030200000571021AFA300108C4273803C040001B4
-:1030300024845378AFA200148F4702143C05000388
-:103040000C00240334A5001308001C903C02080067
-:103050009744021200771021A444737E8F44021417
-:103060000077102102E31821AC4473803402800001
-:10307000A462737C000910C002E2102108001C79D0
-:10308000A446727C02E410219445727C08001C2E38
-:10309000000510C09443737E97420212146200062A
-:1030A000000510C0009710218C4373808F420214DA
-:1030B00010620065000510C002E210219445737C87
-:1030C000000510C002E210219442737C304280005F
-:1030D0001040FFF000971021000520C0009710213C
-:1030E0009443737E97420212146200062406FFFF87
-:1030F000009710218C4373808F420214106200539A
-:103100003C02080000002021000410C002E210214F
-:103110009442737C304240005440000500803021CE
-:10312000248400012C8200801440FFF8000410C0A9
-:1031300004C10023000618C0000910C00057182160
-:103140008C63727C00571021AFA300108C427280F8
-:103150003C04000124845384AFA200148F4702145E
-:103160003C0500030C00240334A5F01708001C9054
-:103170003C0208008F43021000B71021AC43777C5B
-:103180008F43021400B71021AC4377803C0200014A
-:10319000005710218C4283B4244200013C010001FD
-:1031A00000370821AC2283B43C03000100771821CA
-:1031B0008C6383B402E5102108001C82A443777C51
-:1031C0009744021200771021A444737E8F440214A6
-:1031D0000077102102E31821AC4473803402800090
-:1031E000A462737C000510C002E21021A446737C27
-:1031F00000002021000428C002E510219442777CC1
-:103200001040FFDC248400012C8200805440FFFA2F
-:10321000000428C092E204D81040000624020001F5
-:103220008EE304DC012210040062182508001C8FC4
-:10323000AEE304DC8F830228240200010122100483
-:1032400000621825AF8302283C02080034421000B7
-:10325000AFA200188EE206088F4302282442000124
-:10326000304A00FF514300FDAFA000108EE2060877
-:10327000000210C0005710218FA300188FA4001C5B
-:10328000AC43060CAC4406108F8300548F8200546C
-:1032900024690032012210232C4200331040006ABE
-:1032A0000000582124100008240F000D240D0007F1
-:1032B000240C0040240E00018F8701202762380073
-:1032C00024E800200102102B504000012768300044
-:1032D0008F82012811020004000000008F82012467
-:1032E00015020007000010218EE201A40000382121
-:1032F00024420001AEE201A408001D088EE201A4F0
-:103300008EE40608000420C0008018218EE40430FA
-:103310008EE5043400A3282100A3302B0082202155
-:1033200000862021ACE40000ACE500048EE2060833
-:10333000A4F0000EACEF0018ACEA001C000210C0B4
-:103340002442060C02E21021ACE200088EE204C422
-:10335000ACE20010AF88012092E24E20144000330E
-:10336000240700018EE24E30000210C02442503883
-:1033700002E220218C820000144D001F000000009A
-:103380008EE34E308EE24E341062001B00000000CF
-:103390008C82000424420001AC8200048EE24E3490
-:1033A0008EE34E3024420001104C00070000000064
-:1033B0008EE24E342442000110620005000000003D
-:1033C00008001CF50000000014600005000000006B
-:1033D0008F82012824420020AF8201288F82012899
-:1033E0008C8200042C42001150400010AC80000080
-:1033F00008001D08000000008EE24E30244200014B
-:10340000504C0003000010218EE24E302442000197
-:10341000AEE24E308EE24E30000210C024425038F0
-:1034200002E22021AC8D0000AC8E000454E00006C6
-:10343000240B00018F820054012210232C42003300
-:103440001440FF9D00000000316300FF24020001D2
-:1034500054620078AFA00010AEEA06088F830054D3
-:103460008F82005424690032012210232C42003341
-:103470001040006100005821240E0008240D0011A6
-:10348000240A001224080040240C00018F8301202C
-:10349000276238002466002000C2102B5040000133
-:1034A000276630008F82012810C20004000000004F
-:1034B0008F82012414C20007000000008EE201A4E4
-:1034C0000000382124420001AEE201A408001D746E
-:1034D0008EE201A48EE20608AC62001C8EE404A019
-:1034E0008EE504A42462001CAC620008A46E000EE9
-:1034F000AC6D0018AC640000AC6500048EE204C43E
-:10350000AC620010AF86012092E24E2014400033DE
-:10351000240700018EE24E30000210C024425038D1
-:1035200002E220218C820000144A001F00000000EB
-:103530008EE34E308EE24E341062001B000000001D
-:103540008C82000424420001AC8200048EE24E34DE
-:103550008EE34E30244200011048000700000000B6
-:103560008EE24E342442000110620005000000008B
-:1035700008001D610000000014600005000000004C
-:103580008F82012824420020AF8201288F820128E7
-:103590008C8200042C42001150400010AC800000CE
-:1035A00008001D74000000008EE24E30244200012D
-:1035B00050480003000010218EE24E3024420001EA
-:1035C000AEE24E308EE24E30000210C0244250383F
-:1035D00002E22021AC8A0000AC8C000454E000061A
-:1035E000240B00018F820054012210232C4200334F
-:1035F0001440FFA600000000316300FF2402000118
-:1036000010620022000000003C040001248453905A
-:10361000AFA00010AFA000148F8601208F87012477
-:103620003C0500090C00240334A5F01108001DA07E
-:10363000000000003C0400012484539CAFA000144F
-:103640008F8601208F8701243C0500090C0024038C
-:1036500034A5F01008001DA0000000003C0400018B
-:10366000248453A8AFA000148EE606088F470228D2
-:103670003C0500090C00240334A5F00F8EE201ACD8
-:1036800024420001AEE201AC8EE201AC8EE20124E4
-:1036900024420001AEE2012408001F978EE20124BB
-:1036A000274402120C0022FE240500063049001FA8
-:1036B000000928C002E510219442727C304280004B
-:1036C0001040002F02E510219442727C30424000ED
-:1036D0001440001C00B710219443727E97420212DE
-:1036E0001462001800B710218C4372808F420214BC
-:1036F00054620016AFA2001092E204D810400007F6
-:10370000240200018EE304DC0122100400021027D1
-:103710000062182408001DC9AEE304DC8F83022870
-:10372000012210040002102700621824AF8302282F
-:10373000000910C002E218213402C00008001E4E29
-:10374000A462727C8F420214AFA20010000910C064
-:10375000005710218C42727C3C040001248453B435
-:103760003C050003AFA200148F47021034A5F01CE3
-:103770000C0024030120302108001E833C020800B5
-:1037800000B710219443727E97420212146200190E
-:10379000000918C000B710218C4372808F420214B8
-:1037A00014620014000918C002E510219447727CCD
-:1037B000000720C0009710219443737E00B71021AA
-:1037C000A443727E009710218C43738000B71021B0
-:1037D000AC43728002E410219443737C02E5102113
-:1037E000A443727C02E418213402C00008001E4E7B
-:1037F000A462737C02E310219447727C00003021A4
-:10380000000720C002E410219442737C0000402194
-:10381000304280001440002500E028210060502143
-:10382000340BC000009710219443737E974202121C
-:103830005462001500E02821009710218C4373800A
-:103840008F4202145462001000E02821110000068B
-:1038500002E410219443737C000510C002E21021A1
-:1038600008001E1AA443737C9443737C02EA10215F
-:10387000A443727C000710C002E21021A44B737CA9
-:1038800008001E2824060001000510C002E21021D5
-:103890009447737C000720C002E410219442737C9B
-:1038A000304280001040FFDF2508000130C200FFD9
-:1038B0001440002500002021000720C0009710219F
-:1038C0009443737E974202121462000F000910C0E5
-:1038D000009710218C4373808F4202141462000AF7
-:1038E000000910C002E418213402C00015000015C0
-:1038F000A462737C000910C002E218213402800027
-:1039000008001E4EA462727C005710218C42727C0B
-:103910003C040001248453C03C050003AFA2001006
-:10392000000710C0005710218C42737C34A5001E84
-:10393000012030210C002403AFA2001408001E83D4
-:103940003C02080000002021000428C000B710211C
-:103950009443777E974202125462002B2484000124
-:1039600000B710218C4377808F42021454620026E6
-:10397000248400013C020001005710218C4283B4D2
-:103980002442FFFF3C01000100370821AC2283B430
-:103990003C020001005710218C4283B4008090212A
-:1039A0000242102B1040000E24B1777C24B07784A3
-:1039B00002F0202102F128210C00249024060008A6
-:1039C000263100083C020001005710218C4283B4CC
-:1039D000265200010242102B1440FFF52610000869
-:1039E0003C040001009720218C8483B42405000846
-:1039F000000420C02484777C0C00248802E4202169
-:103A000008001E833C0208002C8200801440FFCF77
-:103A1000000428C03C02080034422000AFA2001875
-:103A20008EE206088F43022824420001304A00FF3C
-:103A3000514300FDAFA000108EE20608000210C046
-:103A4000005710218FA300188FA4001CAC43060C54
-:103A5000AC4406108F8300548F82005424690032D6
-:103A6000012210232C4200331040006A000058212C
-:103A700024100008240F000D240D0007240C004022
-:103A8000240E00018F8701202762380024E80020DF
-:103A90000102102B50400001276830008F8201285E
-:103AA00011020004000000008F82012415020007AB
-:103AB000000010218EE201A4000038212442000100
-:103AC000AEE201A408001EFB8EE201A48EE406080B
-:103AD000000420C0008018218EE404308EE50434F8
-:103AE00000A3282100A3302B008220210086202162
-:103AF000ACE40000ACE500048EE20608A4F0000E81
-:103B0000ACEF0018ACEA001C000210C02442060C06
-:103B100002E21021ACE200088EE204C4ACE2001024
-:103B2000AF88012092E24E201440003324070001A8
-:103B30008EE24E30000210C02442503802E22021B2
-:103B40008C820000144D001F000000008EE34E30F8
-:103B50008EE24E341062001B000000008C820004D4
-:103B600024420001AC8200048EE24E348EE34E30DB
-:103B700024420001104C0007000000008EE24E3489
-:103B800024420001106200050000000008001EE849
-:103B90000000000014600005000000008F82012872
-:103BA00024420020AF8201288F8201288C820004E9
-:103BB0002C42001150400010AC80000008001EFB99
-:103BC000000000008EE24E3024420001504C000301
-:103BD000000010218EE24E3024420001AEE24E3051
-:103BE0008EE24E30000210C02442503802E2202102
-:103BF000AC8D0000AC8E000454E00006240B0001E4
-:103C00008F820054012210232C4200331440FF9D68
-:103C100000000000316300FF2402000154620078BC
-:103C2000AFA00010AEEA06088F8300548F820054C4
-:103C300024690032012210232C420033104000611D
-:103C400000005821240E0008240D0011240A00123F
-:103C500024080040240C00018F83012027623800D3
-:103C60002466002000C2102B50400001276630005F
-:103C70008F82012810C20004000000008F820124FE
-:103C800014C20007000000008EE201A400003821E9
-:103C900024420001AEE201A408001F678EE201A4E5
-:103CA0008EE20608AC62001C8EE404A08EE504A43B
-:103CB0002462001CAC620008A46E000EAC6D0018FB
-:103CC000AC640000AC6500048EE204C4AC62001079
-:103CD000AF86012092E24E201440003324070001F9
-:103CE0008EE24E30000210C02442503802E2202101
-:103CF0008C820000144A001F000000008EE34E304A
-:103D00008EE24E341062001B000000008C82000422
-:103D100024420001AC8200048EE24E348EE34E3029
-:103D20002442000110480007000000008EE24E34DB
-:103D300024420001106200050000000008001F542A
-:103D40000000000014600005000000008F820128C0
-:103D500024420020AF8201288F8201288C82000437
-:103D60002C42001150400010AC80000008001F677A
-:103D7000000000008EE24E30244200015048000353
-:103D8000000010218EE24E3024420001AEE24E309F
-:103D90008EE24E30000210C02442503802E2202150
-:103DA000AC8A0000AC8C000454E00006240B000137
-:103DB0008F820054012210232C4200331440FFA6AE
-:103DC00000000000316300FF2402000110620022A5
-:103DD000000000003C04000124845390AFA00010B8
-:103DE000AFA000148F8601208F8701243C050009B5
-:103DF0000C00240334A5F01108001F9300000000FC
-:103E00003C0400012484539CAFA000148F86012041
-:103E10008F8701243C0500090C00240334A5F01011
-:103E200008001F93000000003C040001248453A8F4
-:103E3000AFA000148EE606088F4702283C05000953
-:103E40000C00240334A5F00F8EE201AC24420001E3
-:103E5000AEE201AC8EE201AC8EE201282442000108
-:103E6000AEE201288EE201288EE2016424420001C4
-:103E7000AEE20164080022E88EE201648FA2002015
-:103E80000002120000021D0224020001106200055F
-:103E9000240200021062000D0000000008001FB79D
-:103EA000AFA0001092E204D81440000624020001E2
-:103EB0008F820228AEE204DC2402FFFFAF820228D8
-:103EC0002402000108001FBEA2E204D892E204D836
-:103ED0005040000CA2E004D88EE204DCAF8202283D
-:103EE00008001FBEA2E004D83C040001248453C88B
-:103EF000AFA000148FA600203C0500030C00240393
-:103F000034A5F0098EE2013C24420001AEE2013CFE
-:103F1000080022E88EE2013C8FA20020000212007D
-:103F20000002250224020001108200052402000282
-:103F30001082000F0000000008001FE3AFA0001077
-:103F40008F8202203C0308FF3463FFFF00431024EC
-:103F500034420008AF820220240200013C0100012B
-:103F600000370821A02283B208001FEAAEE401084E
-:103F70008F8202203C0308FF3463FFF700431024C4
-:103F8000AF8202203C01000100370821A02083B24B
-:103F900008001FEAAEE401083C040001248453D465
-:103FA000AFA000148FA600203C0500030C002403E2
-:103FB00034A5F00A8EE2012C24420001AEE2012C6D
-:103FC000080022E88EE2012C8FA2002000021200DD
-:103FD00000021D02240200011062000524020002FA
-:103FE0001062000E0000000008002011AFA00010B9
-:103FF0008F8202203C0308FF3463FFFF004310243C
-:1040000034420008AF820220240200013C0100017A
-:104010000037082108002018A02283B33C020001C9
-:1040200000571021904283B23C0100010037082163
-:104030001440000EA02083B38F8202203C0308FFAF
-:104040003463FFF70043102408002018AF820220D9
-:104050003C040001248453E0AFA000148FA600208C
-:104060003C0500030C00240334A5F00B8EE2011480
-:1040700024420001AEE20114080022E88EE201149D
-:1040800027840208274502000C00249A2406000811
-:1040900026E40094274502000C00249A2406000818
-:1040A0008EE2013424420001AEE20134080022E82D
-:1040B0008EE201348F460248000020210C00510896
-:1040C000240500048EE2013024420001AEE20130FA
-:1040D000080022E88EE201308EF301CC8EF401D08C
-:1040E0008EF501D88EE2014026E400302442000122
-:1040F000AEE201408EF001408EF100748EF200704D
-:104100000C00248824050400AEF301CCAEF401D0E9
-:10411000AEF501D8AEF00140AEF10074AEF2007021
-:104120008F42025C26E40094AEE200608F4202609F
-:104130002745020024060008AEE2006824020006BB
-:104140000C00249AAEE200643C023B9A3442CA005E
-:10415000AEE2006C240203E8240400022403000100
-:10416000AEE20104AEE40100AEE3010C8F82022056
-:10417000304200081040000400000000AEE30108D7
-:104180000800206100002021AEE401080000202189
-:104190003C0300010064182190635C3002E41021AC
-:1041A00024840001A043009C2C82000F1440FFF8DF
-:1041B000000000008F82004002E4182124840001E6
-:1041C0000002170224420030A062009C02E4102189
-:1041D000080022E8A040009C240200013C010001EC
-:1041E00000370821A02283E0240B040024080014D7
-:1041F000240A0040240900018F8301002762300057
-:104200002466002000C2102B5040000127662800C1
-:104210008F82010810C20004000000008F82010498
-:1042200014C2000726E200308EE201A80000382107
-:1042300024420001AEE201A8080020A88EE201A8F5
-:104240008EE404B88EE504BCAC620008A46B000EDA
-:10425000AC680018AC60001CAC640000AC650004E5
-:104260008EE204CCAC620010AF86010092E204EC56
-:104270001440000E240700018EE24E282442000163
-:10428000504A0003000010218EE24E282442000113
-:10429000AEE24E288EE24E28000210C024424E3874
-:1042A00002E21021AC480000AC49000410E0FFD24B
-:1042B00000000000080022E8000000003C020900A5
-:1042C000AEE05238AEE0523CAEE05240AEE0524476
-:1042D000AEE001D03C01000100370821A02083B1ED
-:1042E000AFA200188EE206088F4302282442000184
-:1042F000304A00FF514300FDAFA000108EE20608D7
-:10430000000210C0005710218FA300188FA4001CBA
-:10431000AC43060CAC4406108F8300548F820054CB
-:1043200024690032012210232C4200331040006A1D
-:104330000000582124100008240F000D240D000750
-:10434000240C0040240E00018F87012027623800D2
-:1043500024E800200102102B5040000127683000A3
-:104360008F82012811020004000000008F820124C6
-:1043700015020007000010218EE201A40000382180
-:1043800024420001AEE201A40800212C8EE201A427
-:104390008EE40608000420C0008018218EE404305A
-:1043A0008EE5043400A3282100A3302B00822021B5
-:1043B00000862021ACE40000ACE500048EE2060893
-:1043C000A4F0000EACEF0018ACEA001C000210C014
-:1043D0002442060C02E21021ACE200088EE204C482
-:1043E000ACE20010AF88012092E24E20144000336E
-:1043F000240700018EE24E30000210C024425038E3
-:1044000002E220218C820000144D001F00000000F9
-:104410008EE34E308EE24E341062001B000000002E
-:104420008C82000424420001AC8200048EE24E34EF
-:104430008EE34E3024420001104C000700000000C3
-:104440008EE24E342442000110620005000000009C
-:1044500008002119000000001460000500000000A1
-:104460008F82012824420020AF8201288F820128F8
-:104470008C8200042C42001150400010AC800000DF
-:104480000800212C000000008EE24E302442000182
-:10449000504C0003000010218EE24E3024420001F7
-:1044A000AEE24E308EE24E30000210C02442503850
-:1044B00002E22021AC8D0000AC8E000454E0000626
-:1044C000240B00018F820054012210232C42003360
-:1044D0001440FF9D00000000316300FF2402000132
-:1044E00054620078AFA00010AEEA06088F83005433
-:1044F0008F82005424690032012210232C420033A1
-:104500001040006100005821240E0008240D001105
-:10451000240A001224080040240C00018F8301208B
-:10452000276238002466002000C2102B5040000192
-:10453000276630008F82012810C2000400000000AE
-:104540008F82012414C20007000000008EE201A443
-:104550000000382124420001AEE201A408002198A5
-:104560008EE201A48EE20608AC62001C8EE404A078
-:104570008EE504A42462001CAC620008A46E000E48
-:10458000AC6D0018AC640000AC6500048EE204C49D
-:10459000AC620010AF86012092E24E20144000333E
-:1045A000240700018EE24E30000210C02442503831
-:1045B00002E220218C820000144A001F000000004B
-:1045C0008EE34E308EE24E341062001B000000007D
-:1045D0008C82000424420001AC8200048EE24E343E
-:1045E0008EE34E3024420001104800070000000016
-:1045F0008EE24E34244200011062000500000000EB
-:104600000800218500000000146000050000000083
-:104610008F82012824420020AF8201288F82012846
-:104620008C8200042C42001150400010AC8000002D
-:1046300008002198000000008EE24E302442000164
-:1046400050480003000010218EE24E302442000149
-:10465000AEE24E308EE24E30000210C0244250389E
-:1046600002E22021AC8A0000AC8C000454E0000679
-:10467000240B00018F820054012210232C420033AE
-:104680001440FFA600000000316300FF2402000177
-:1046900010620022000000003C04000124845390BA
-:1046A000AFA00010AFA000148F8601208F870124D7
-:1046B0003C0500090C00240334A5F011080021C4B6
-:1046C000000000003C0400012484539CAFA00014AF
-:1046D0008F8601208F8701243C0500090C002403EC
-:1046E00034A5F010080021C4000000003C040001C3
-:1046F000248453A8AFA000148EE606088F47022832
-:104700003C0500090C00240334A5F00F8EE201AC37
-:1047100024420001AEE201AC8EE201AC8EE2012047
-:1047200024420001AEE201208EE201208EE2016807
-:1047300024420001AEE20168080022E88EE201682E
-:104740008F42025C26E40094AEE200608F42026079
-:1047500027450200240600080C00249AAEE20068F7
-:104760008F8202203042000814400002240200011F
-:1047700024020002AEE201088EE2011C2442000184
-:10478000AEE2011C080022E88EE2011C3C0400019C
-:10479000248453ECAFA00010AFA000148FA600201B
-:1047A0003C0500030C00240334A5F00F93A2002065
-:1047B0003C0307003463100000431025AFA200182B
-:1047C0008EE206088F43022824420001304900FF90
-:1047D000512300E2AFA000108EE20608000210C0D4
-:1047E000005710218FA300188FA4001CAC43060CA7
-:1047F000AC4406108F8701202762380024E800208F
-:104800000102102B50400001276830008F820128E0
-:1048100011020004000000008F820124150200072D
-:10482000000010218EE201A4000038212442000182
-:10483000AEE201A40800225D8EE201A48EE4060827
-:10484000000420C0008018218EE404308EE504347A
-:1048500000A3282100A3302B0082202100862021E4
-:10486000ACE40000ACE500048EE306082402000876
-:10487000A4E2000E2402000DACE20018ACE9001C1A
-:10488000000318C02463060C02E31021ACE2000808
-:104890008EE204C4ACE20010AF88012092E24E2008
-:1048A00014400037240700018EE24E30000210C091
-:1048B0002442503802E220218C83000024020007A9
-:1048C0001462001F000000008EE34E308EE24E3472
-:1048D0001062001B240300408C820004244200016B
-:1048E000AC8200048EE24E348EE54E30244200014C
-:1048F00010430007000000008EE24E342442000105
-:1049000010A200050000000008002247000000007F
-:1049100014A00005000000008F820128244200201E
-:10492000AF8201288F8201288C8200042C42001162
-:1049300050400013AC8000000800225D0000000021
-:104940008EE24E3024030040244200015043000315
-:10495000000010218EE24E3024420001AEE24E30C3
-:104960008EE24E30000210C02442503802E2202174
-:1049700024020007AC82000024020001AC82000483
-:1049800054E0000CAEE906083C040001248453F412
-:10499000AFA00010AFA000148EE606088F470228D3
-:1049A0003C0500090C00240334A5F000080022E0B7
-:1049B000000000008F830120276238002466002059
-:1049C00000C2102B50400001276630008F82012862
-:1049D00010C20004000000008F82012414C20007EE
-:1049E000000000008EE201A40000382124420001F2
-:1049F000AEE201A4080022C48EE201A48EE2060801
-:104A0000AC62001C8EE404A08EE504A42462001CA9
-:104A1000AC62000824020008A462000E2402001107
-:104A2000AC620018AC640000AC6500048EE204C403
-:104A3000AC620010AF86012092E24E201440003795
-:104A4000240700018EE24E30000210C0244250388C
-:104A500002E220218C830000240200121462001F55
-:104A6000000000008EE34E308EE24E341062001BD8
-:104A7000240300408C82000424420001AC82000424
-:104A80008EE24E348EE54E30244200011043000782
-:104A9000000000008EE24E342442000110A2000506
-:104AA00000000000080022AE0000000014A0000575
-:104AB000000000008F82012824420020AF820128DC
-:104AC0008F8201288C8200042C4200115040001378
-:104AD000AC800000080022C4000000008EE24E30CE
-:104AE0002403004024420001504300030000102131
-:104AF0008EE24E3024420001AEE24E308EE24E3065
-:104B0000000210C02442503802E220212402001288
-:104B1000AC82000024020001AC82000414E0001BFF
-:104B2000000000003C040001248453FCAFA00010EE
-:104B3000AFA000148EE606088F4702283C05000946
-:104B40000C00240334A5F0018EE201B024420001E0
-:104B5000AEE201B0080022E08EE201B03C040001A8
-:104B600024845408AFA000148EE606088F4702285C
-:104B70003C0500090C00240334A5F0058EE201ACCD
-:104B800024420001AEE201AC8EE201AC8EE20150A3
-:104B900024420001AEE201508EE201508EE201603B
-:104BA00024420001AEE201608EE201608F43022CDC
-:104BB0008F42010C1462000924020002AF820064DB
-:104BC0008F82006414400005000000008F43022C17
-:104BD0008F42010C1462F875000000008FBF004482
-:104BE0008FB600408FB5003C8FB400388FB30034CF
-:104BF0008FB200308FB1002C8FB0002803E0000886
-:104C000027BD004827BDFFF82408FFFF10A00014AF
-:104C1000000048213C0AEDB8354A83209087000007
-:104C200024840001000030210107102630420001D9
-:104C30001040000200081842006A18260060402157
-:104C400024C600012CC200081440FFF700073842B8
-:104C5000252900010125102B1440FFF00000000061
-:104C60000100102103E0000827BD000827BDFFE870
-:104C700027642800AFBF00100C0024882405100012
-:104C800024020021AF800100AF800104AF80010841
-:104C9000AF800110AF800114AF800118AF800120F8
-:104CA000AF800124AF800128AF800130AF80013494
-:104CB000AF800138AEE04E28AEE04E2CAEE04E3074
-:104CC000AEE04E34AF82011C8F42021830420040E9
-:104CD00010400004000000008F82011C34420004D8
-:104CE000AF82011C8FBF001003E0000827BD001831
-:104CF00027BDFFE0AFBF00188F820104AFA20010F4
-:104D00008F8201003C050002AFA200148F8600B024
-:104D10008F87011C3C040001248454C00C00240330
-:104D200034A5F0008F8300B03C027F00006218249D
-:104D30003C020400106200290043102B14400008BC
-:104D40003C0220003C020100106200243C020200F0
-:104D50001062001100000000080023740000000031
-:104D6000106200083C0240001462001C00000000B9
-:104D70008EE2019024420001AEE20190080023740B
-:104D80008EE201908EE2018C24420001AEE2018CA1
-:104D9000080023748EE2018C8F82011C34420002D1
-:104DA000AF82011C8F8301048F8200B03442000166
-:104DB000AF8200B0AF8301048F82011C2403FFFD8A
-:104DC00000431024AF82011C8EE201A024420001A6
-:104DD000AEE201A0080023778EE201A08F8200B02E
-:104DE00034420001AF8200B08FBF001803E000081A
-:104DF00027BD002027BDFFE0AFBF001CAFB00018EB
-:104E00008F820120AFA200108F8201243C05000197
-:104E1000AFA200148F8600A08F87011C3C04000104
-:104E2000248454CC0C00240334A5F0008F8300A00C
-:104E30003C027F00006218243C0204001062005310
-:104E4000000080210043102B144000083C04200087
-:104E50003C0201001062004D3C0202001062003A68
-:104E600000000000080023E00000000010640003C0
-:104E70003C02400014620045000000008F8200A048
-:104E80000044102410400006000000008EE201944F
-:104E900024420001AEE20194080023A98EE20194AD
-:104EA0008EE2019824420001AEE201988EE2019860
-:104EB0008F82011C34420002AF82011C8F82011CD0
-:104EC000304202001040001B000000008F8300A051
-:104ED0008F8401248F8200AC14400007240200015B
-:104EE0003C0200013442F0000062102450400001F6
-:104EF00024100001240200011200000DAF8200A066
-:104F00008F8201242442FFE0AF8201248F8201249A
-:104F10008F820124276330000043102B10400005CE
-:104F2000276237E0AF820124080023CA0000000096
-:104F3000AF8401248F82011C2403FFFD0043102451
-:104F4000080023E3AF82011C8F82011C344200025F
-:104F5000AF82011C8F8301248F8200A034420001A4
-:104F6000AF8200A0AF8301248F82011C2403FFFDC8
-:104F700000431024AF82011C8EE2019C24420001F8
-:104F8000AEE2019C080023E38EE2019C8F8200A028
-:104F900034420001AF8200A08FBF001C8FB0001808
-:104FA00003E0000827BD0020000000003C020001D3
-:104FB0008C425C5827BDFFE8AFBF001414400012BC
-:104FC000AFB000103C10000126105DD0020020217F
-:104FD0000C0024882405200026021FE03C0100016B
-:104FE000AC225D943C010001AC225D90AF420250C6
-:104FF00024022000AF500254AF42025824020001A4
-:105000003C010001AC225C588FBF00148FB000102F
-:1050100003E0000827BD00183C0300018C635D9489
-:105020008C8200008FA800108FA90014AC620000D1
-:105030003C0200018C425D948C830004AC4300046C
-:10504000AC4500088F8400542443FFE0AC460010B8
-:10505000AC470014AC480018AC49001C3C010001EE
-:10506000AC235D94AC44000C3C02000124425DD0B2
-:105070000062182B10600005000000003C020001D7
-:105080008C425D903C010001AC225D943C03000128
-:105090008C635D943C0200018C425C40AC62000079
-:1050A0003C0300018C635D943C0200018C425C4037
-:1050B000AC62000403E00008AF4302503C0300016F
-:1050C0008C635D943C0200018C425C4027BDFFD0A4
-:1050D000AFB400208FB40040AFB00010008080213A
-:1050E000AFB500248FB500448FA40048AFB10014C1
-:1050F00000A08821AFBF0028AFB3001CAFB20018DA
-:10510000AC6200003C0500018CA55D943C020001EE
-:105110008C425C4000C0902100E098211080000685
-:10512000ACA2000424A500080C002490240600185A
-:105130000800244E0000000024A400080C0024886D
-:10514000240500183C0200018C425D943C050001DE
-:1051500024A55DD02442FFE03C010001AC225D9417
-:105160000045102B10400005000000003C0200012B
-:105170008C425D903C010001AC225D943C03000137
-:105180008C635D948E020000AC6200003C03000161
-:105190008C635D948E020004AC620004AC71000864
-:1051A0008F8400542462FFE03C010001AC225D9436
-:1051B0000045102BAC720010AC730014AC740018D6
-:1051C000AC75001C10400005AC64000C3C020001F2
-:1051D0008C425D903C010001AC225D943C030001D7
-:1051E0008C635D943C0200018C425C40AC62000028
-:1051F0003C0300018C635D943C0200018C425C40E6
-:10520000AC620004AF4302508FBF00288FB500246A
-:105210008FB400208FB3001C8FB200188FB1001420
-:105220008FB0001003E0000827BD003010A000057B
-:1052300000000000AC80000024A5FFFC14A0FFFDCE
-:105240002484000403E000080000000010C00007F0
-:10525000000000008C8200002484000424C6FFFCAF
-:10526000ACA2000014C0FFFB24A5000403E000086A
-:105270000000000010C00007000000008CA2000029
-:1052800024A5000424C6FFFCAC82000014C0FFFB70
-:105290002484000403E000080000000003E000088C
-:1052A0000000000027BDFFD8AFBF00208EE304E45C
-:1052B0008EE204E010620436000000008EE204E496
-:1052C0008EE304FC00021100006260219587000853
-:1052D0008D8A00008D8B0004958D000A8EE2725C31
-:1052E0008EE3726C30E4FFFF004410210062182B43
-:1052F0001060001531A200048F8200D88EE372582E
-:1053000000431023AEE2726C8EE2726C1C4000030C
-:105310003C03000100431021AEE2726C8EE2725C2D
-:105320008EE3726C004410210062182B106000069E
-:1053300031A200048EE201B824420001AEE201B8BD
-:10534000080028E18EE201B81040024031A20200BC
-:105350001040014D0000482196E2045A30420010EE
-:1053600010400149000000008F84010027623000D6
-:105370002485002000A2102B504000012765280042
-:105380008F82010810A20004000000008F82010437
-:1053900014A200062402000C8EE201A8244200019F
-:1053A000AEE201A80800252C8EE201A8AC8A00001C
-:1053B000AC8B00048EE3726424060005A482000E08
-:1053C000AC860018AC8300088EE204E4AC82001CBA
-:1053D0008EE204C8AC820010AF85010092E204ECBA
-:1053E00014400036240900018EE24E28000210C04D
-:1053F00024424E3802E220218C8200001446001F15
-:10540000000000008EE34E288EE24E2C1062001B3E
-:10541000240300408C82000424420001AC8200047A
-:105420008EE24E2C8EE54E282442000110430007E8
-:10543000000000008EE24E2C2442000110A2000564
-:1054400000000000080025160000000014A0000560
-:10545000000000008F82010824420020AF82010872
-:105460008F8201088C8200042C42001150400013EE
-:10547000AC8000000800252C000000008EE24E28C1
-:105480002403004024420001504300030000102187
-:105490008EE24E2824420001AEE24E288EE24E28D3
-:1054A000000210C024424E3802E2202124020005EE
-:1054B000AC82000024020001AC8200041520000A26
-:1054C0003C040001AFAB00108EE272643C040001AA
-:1054D000248457303C050004AFA200148EE604E497
-:1054E000080028BE34A5F1148EE2726434843800BA
-:1054F00003641821244200100043102B1440007351
-:10550000000000008EE27264244800100364102141
-:105510000102102B144000023C02FFFF0102402157
-:105520008F8501002762300024A6002000C2102BC6
-:1055300050400001276628008F82010810C2000435
-:10554000000000008F82010414C200072563000CD4
-:105550008EE201A80000482124420001AEE201A829
-:10556000080025A08EE201A82C64000C0144102143
-:10557000ACA20000ACA3000424E2FFF4A4A2000E3D
-:1055800024020006ACA80008ACA200188EE204E4D5
-:10559000ACA2001C8EE204C83C03000200431025AC
-:1055A000ACA20010AF86010092E204EC1440003778
-:1055B000240900018EE24E28000210C024424E3819
-:1055C00002E220218C830000240200051462001FE7
-:1055D000000000008EE34E288EE24E2C1062001B6D
-:1055E000240300408C82000424420001AC820004A9
-:1055F0008EE24E2C8EE54E28244200011043000717
-:10560000000000008EE24E2C2442000110A2000592
-:10561000000000000800258A0000000014A000051A
-:10562000000000008F82010824420020AF820108A0
-:105630008F8201088C8200042C420011504000131C
-:10564000AC800000080025A0000000008EE24E287B
-:1056500024030040244200015043000300001021B5
-:105660008EE24E2824420001AEE24E288EE24E2801
-:10567000000210C024424E3802E22021240200051C
-:10568000AC82000024020001AC8200041520000A54
-:105690002508FFFCAFAB00108EE272643C040001F1
-:1056A000248457303C050004AFA200148EE604E4C5
-:1056B000080028BE34A5F12534028100A5020000AF
-:1056C0009582000E0800261DA50200028F850100AC
-:1056D0002762300024A6002000C2102B5040000199
-:1056E000276628008F82010810C200040000000015
-:1056F0008F82010414C200072563000C8EE201A80A
-:105700000000482124420001AEE201A80800260D55
-:105710008EE201A82C64000C01441021ACA2000010
-:10572000ACA300048EE3726424E2FFF4A4A2000E92
-:1057300024020006ACA2001824630010ACA30008E9
-:105740008EE204E4ACA2001C8EE204C83C0300021A
-:1057500000431025ACA20010AF86010092E204ECD9
-:1057600014400037240900018EE24E28000210C0C8
-:1057700024424E3802E220218C83000024020005DE
-:105780001462001F000000008EE34E288EE24E2CB3
-:105790001062001B240300408C820004244200019C
-:1057A000AC8200048EE24E2C8EE54E28244200018D
-:1057B00010430007000000008EE24E2C244200013E
-:1057C00010A2000500000000080025F700000000FE
-:1057D00014A00005000000008F8201082442002070
-:1057E000AF8201088F8201088C8200042C420011D4
-:1057F00050400013AC8000000800260D000000009F
-:105800008EE24E282403004024420001504300034E
-:10581000000010218EE24E2824420001AEE24E2804
-:105820008EE24E28000210C024424E3802E22021AF
-:1058300024020005AC82000024020001AC820004B6
-:105840001520000A34028100AFAB00108EE27264B2
-:105850003C040001248457303C050004AFA200142E
-:105860008EE604E4080028BE34A5F0158EE37264C9
-:10587000A462000C8EE372649582000EA462000E96
-:105880000800268124E700048F840100276230008D
-:105890002485002000A2102B50400001276528001D
-:1058A0008F82010810A20004000000008F82010412
-:1058B00014A20007240200068EE201A8000048217D
-:1058C00024420001AEE201A8080026778EE201A87A
-:1058D000AC8A0000AC8B00048EE37264A487000ED7
-:1058E000AC820018AC8300088EE204E4AC82001C99
-:1058F0008EE204C83C03000200431025AC82001075
-:10590000AF85010092E204EC144000372409000145
-:105910008EE24E28000210C024424E3802E22021BE
-:105920008C830000240200051462001F00000000A8
-:105930008EE34E288EE24E2C1062001B24030040A2
-:105940008C82000424420001AC8200048EE24E2CC2
-:105950008EE54E282442000110430007000000009D
-:105960008EE24E2C2442000110A20005000000002F
-:10597000080026610000000014A0000500000000DF
-:105980008F82010824420020AF8201088F82010823
-:105990008C8200042C42001150400013AC800000A7
-:1059A00008002677000000008EE24E282403004005
-:1059B0002442000150430003000010218EE24E28D3
-:1059C00024420001AEE24E288EE24E28000210C0B2
-:1059D00024424E3802E2202124020005AC8200005D
-:1059E00024020001AC820004152000093C050004DB
-:1059F000AFAB00108EE272643C0400012484573087
-:105A0000AFA200148EE604E4080028BE34A5F0041A
-:105A10008EE2725C30E7FFFF00471021AEE2725C5D
-:105A20008EE204E48EE304FC8EE47258000211005E
-:105A300000431021AC44000C8EE27258AFA2001853
-:105A40008EE3725CAFA3001C8EE2725C2C42003CC1
-:105A500010400004246200012403FFFE00431024D0
-:105A6000AFA2001C8EE272643C06000134C638000E
-:105A70008EE3725C2405FFF80047102124420007E2
-:105A80000045102424630007AEE272588EE2726C67
-:105A90008EE472580065182400431023AEE2726C45
-:105AA000036610210082202B148000043C03FFFFBA
-:105AB0008EE2725800431021AEE272588EE27258A4
-:105AC000AEE272648F8200F024470008276218005B
-:105AD00000E2102B50400001276710008F8200F475
-:105AE00014E20007000000008EE201B4000048212B
-:105AF00024420001AEE201B4080026C48EE201B4E3
-:105B00008F8200F0240900018FA300188FA4001CCD
-:105B1000AC430000AC440004AF8700F01520001235
-:105B2000000D11428F8200F0AFA200108F8200F4AE
-:105B30003C0400012484573CAFA200148FA6001837
-:105B40008FA7001C3C0500040C00240334A5F005BD
-:105B50008EE2008824420001AEE200888EE20088D6
-:105B6000080028D3AEE0725C304300032402000238
-:105B70001062001628620003104000052402000194
-:105B80001062000800000000080027030000000069
-:105B90002402000310620017000000000800270321
-:105BA000000000008EE200E88EE300EC24630001B8
-:105BB0002C64000100441021AEE200E8AEE300ECEA
-:105BC0008EE200E8080027038EE300EC8EE200F08E
-:105BD0008EE300F4246300012C64000100441021D2
-:105BE000AEE200F0AEE300F48EE200F0080027031E
-:105BF0008EE300F48EE200F88EE300FC24630001E3
-:105C00002C64000100441021AEE200F8AEE300FC79
-:105C10008EE200F88EE300FC8EE2725C8EE400E01F
-:105C20008EE500E4004018210000102100A3282187
-:105C300000A3302B0082202100862021AEE400E06A
-:105C4000AEE500E4080028D3AEE0725C30E2FFFF6E
-:105C5000104001C131A202001040014D0000482156
-:105C600096E2045A30420010104001490000000042
-:105C70008F840100276230002485002000A2102BB1
-:105C800050400001276528008F82010810A20004FF
-:105C9000000000008F82010414A200062402000C00
-:105CA0008EE201A824420001AEE201A80800276E9E
-:105CB0008EE201A8AC8A0000AC8B00048EE3726413
-:105CC00024060005A482000EAC860018AC830008F0
-:105CD0008EE204E4AC82001C8EE204C8AC820010A8
-:105CE000AF85010092E204EC144000362409000163
-:105CF0008EE24E28000210C024424E3802E22021DB
-:105D00008C8200001446001F000000008EE34E2825
-:105D10008EE24E2C1062001B240300408C82000493
-:105D200024420001AC8200048EE24E2C8EE54E2807
-:105D30002442000110430007000000008EE24E2CB8
-:105D40002442000110A200050000000008002758AE
-:105D50000000000014A00005000000008F82010870
-:105D600024420020AF8201088F8201088C82000447
-:105D70002C42001150400013AC8000000800276E38
-:105D8000000000008EE24E2824030040244200015F
-:105D900050430003000010218EE24E2824420001EF
-:105DA000AEE24E288EE24E28000210C024424E3849
-:105DB00002E2202124020005AC820000240200013E
-:105DC000AC8200041520000A3C040001AFAB0010B7
-:105DD0008EE272643C040001248457303C050004C8
-:105DE000AFA200148EE604E4080028BE34A5F01427
-:105DF0008EE2726434843800036418212442001057
-:105E00000043102B14400073000000008EE2726407
-:105E100024480010036410210102102B14400002DA
-:105E20003C02FFFF010240218F8501002762300004
-:105E300024A6002000C2102B504000012766280035
-:105E40008F82010810C20004000000008F8201044C
-:105E500014C200072563000C8EE201A8000048214F
-:105E600024420001AEE201A8080027E28EE201A868
-:105E70002C64000C01441021ACA20000ACA300046F
-:105E800024E2FFF4A4A2000E24020006ACA800083D
-:105E9000ACA200188EE204E4ACA2001C8EE204C89E
-:105EA0003C03000200431025ACA20010AF860100A5
-:105EB00092E204EC14400037240900018EE24E28DF
-:105EC000000210C024424E3802E220218C830000E0
-:105ED000240200051462001F000000008EE34E281B
-:105EE0008EE24E2C1062001B240300408C820004C2
-:105EF00024420001AC8200048EE24E2C8EE54E2836
-:105F00002442000110430007000000008EE24E2CE6
-:105F10002442000110A2000500000000080027CC68
-:105F20000000000014A00005000000008F8201089E
-:105F300024420020AF8201088F8201088C82000475
-:105F40002C42001150400013AC800000080027E2F2
-:105F5000000000008EE24E2824030040244200018D
-:105F600050430003000010218EE24E28244200011D
-:105F7000AEE24E288EE24E28000210C024424E3877
-:105F800002E2202124020005AC820000240200016C
-:105F9000AC8200041520000A2508FFFCAFAB0010FE
-:105FA0008EE272643C040001248457303C050004F6
-:105FB000AFA200148EE604E4080028BE34A5F01554
-:105FC00034028100A50200009582000E0800285FBF
-:105FD000A50200028F8501002762300024A6002060
-:105FE00000C2102B50400001276628008F82010854
-:105FF00010C20004000000008F82010414C20007D8
-:106000002563000C8EE201A8000048212442000113
-:10601000AEE201A80800284F8EE201A82C64000C13
-:1060200001441021ACA20000ACA300048EE3726412
-:1060300024E2FFF4A4A2000E24020006ACA2001881
-:1060400024630010ACA300088EE204E4ACA2001CA0
-:106050008EE204C83C03000200431025ACA20010ED
-:10606000AF86010092E204EC1440003724090001DD
-:106070008EE24E28000210C024424E3802E2202157
-:106080008C830000240200051462001F0000000041
-:106090008EE34E288EE24E2C1062001B240300403B
-:1060A0008C82000424420001AC8200048EE24E2C5B
-:1060B0008EE54E2824420001104300070000000036
-:1060C0008EE24E2C2442000110A2000500000000C8
-:1060D000080028390000000014A00005000000009E
-:1060E0008F82010824420020AF8201088F820108BC
-:1060F0008C8200042C42001150400013AC80000040
-:106100000800284F000000008EE24E2824030040C3
-:106110002442000150430003000010218EE24E286B
-:1061200024420001AEE24E288EE24E28000210C04A
-:1061300024424E3802E2202124020005AC820000F5
-:1061400024020001AC8200041520000A3402810000
-:10615000AFAB00108EE272643C040001248457301F
-:106160003C050004AFA200148EE604E4080028BE3B
-:1061700034A5F0168EE37264A462000C8EE37264A0
-:106180009582000EA462000E080028C224E70004D5
-:106190008F83010027623000246400200082102BCE
-:1061A00050400001276428008F82010810820004FB
-:1061B000000000008F8201041482000724050005FE
-:1061C0008EE201A80000482124420001AEE201A8AD
-:1061D000080028B68EE201A8AC6A0000AC6B00048F
-:1061E0008EE27264A467000EAC650018AC62000811
-:1061F0008EE204E4AC62001C8EE204C8AC620010C3
-:10620000AF84010092E204EC14400036240900013E
-:106210008EE24E28000210C024424E3802E22021B5
-:106220008C8200001445001F000000008EE34E2801
-:106230008EE24E2C1062001B240300408C8200046E
-:1062400024420001AC8200048EE24E2C8EE54E28E2
-:106250002442000110430007000000008EE24E2C93
-:106260002442000110A2000500000000080028A040
-:106270000000000014A00005000000008F8201084B
-:1062800024420020AF8201088F8201088C82000422
-:106290002C42001150400013AC800000080028B6CA
-:1062A000000000008EE24E2824030040244200013A
-:1062B00050430003000010218EE24E2824420001CA
-:1062C000AEE24E288EE24E28000210C024424E3824
-:1062D00002E2202124020005AC8200002402000119
-:1062E000AC8200041520000B3C0500043C040001B6
-:1062F00024845748AFAB0010AFA000148EE604E42E
-:1063000034A5F0170C00240330E7FFFF080028E154
-:10631000000000008EE272643C05000130E4FFFFE3
-:1063200000441021AEE272648EE2725C8EE372640D
-:1063300034A5380000441021AEE2725C03651021E0
-:106340000062182B146000043C03FFFF8EE27264AD
-:1063500000431021AEE272648EE304E496E2045836
-:10636000246300012442FFFF00621824AEE304E42A
-:106370008EE304E48EE204E01462000500000000F5
-:106380008F8200602403FFF700431024AF82006077
-:106390008FBF002003E0000827BD002827BDFFE0D5
-:1063A000AFBF00188EE304E88EE204E010620189BA
-:1063B000000000008EE204E88EE304FC00021100FD
-:1063C000006218219467000892E204ED8C680000D6
-:1063D0008C69000410400023946A000A8EE204C80D
-:1063E00034460400314202001040001F000000004B
-:1063F00096E2045A304200101040001B3C0280001C
-:106400003C01000100370821AC2283D88EE272647F
-:106410009464000E3C05000134A5380024420004B9
-:10642000AEE272648EE372640004240003651021FE
-:106430003C01000100370821AC2483DC0062182BEA
-:106440001460000524E700048EE272643C03FFFF41
-:1064500000431021AEE272648EE2726408002917D4
-:10646000AEE272588EE604C88EE2726C30E4FFFF32
-:106470000044102A10400015000000008F8200D850
-:106480008EE3725800431023AEE2726C8EE2726C9F
-:106490001C4000070044102A8EE2726C3C0300018D
-:1064A00000431021AEE2726C8EE2726C0044102A3E
-:1064B00010400006000000008EE201B824420001F6
-:1064C000AEE201B808002A728EE201B83C02000177
-:1064D000005710218C4283D85440000124E7FFFC70
-:1064E00031420004104000B930E2FFFF3C020001DD
-:1064F000005710218C4283D81040002F00005021FB
-:106500008F840100276230002485002000A2102B18
-:1065100050400001276528008F82010810A2003238
-:10652000000000008F82010410A2002F2402001539
-:10653000AC880000AC8900048EE37264A487000E6E
-:10654000AC820018AC8300088EE204E83C03000132
-:10655000007718218C6383DCAC8600100043102583
-:10656000AC82001CAF85010092E204EC144000668E
-:10657000240A00018EE24E28240300402442000138
-:1065800050430003000010218EE24E2824420001F7
-:10659000AEE24E288EE24E28000210C024424E3851
-:1065A00002E2182124020015AC620000240200015E
-:1065B000080029BFAC6200048F840100276230000C
-:1065C0002485002000A2102B5040000127652800E0
-:1065D0008F82010810A20004000000008F820104D5
-:1065E00014A20006240200068EE201A82442000143
-:1065F000AEE201A8080029BF8EE201A8AC88000025
-:10660000AC8900048EE37264A487000EAC8200188B
-:10661000AC8300088EE204E8AC860010AC82001C5B
-:10662000AF85010092E204EC14400037240A000117
-:106630008EE24E28000210C024424E3802E2202191
-:106640008C830000240200051462001F000000007B
-:106650008EE34E288EE24E2C1062001B2403004075
-:106660008C82000424420001AC8200048EE24E2C95
-:106670008EE54E2824420001104300070000000070
-:106680008EE24E2C2442000110A200050000000002
-:10669000080029A90000000014A000050000000067
-:1066A0008F82010824420020AF8201088F820108F6
-:1066B0008C8200042C42001150400013AC8000007A
-:1066C000080029BF000000008EE24E28240300408D
-:1066D0002442000150430003000010218EE24E28A6
-:1066E00024420001AEE24E288EE24E28000210C085
-:1066F00024424E3802E2202124020005AC82000030
-:1067000024020001AC8200041540000A24020001AA
-:10671000AFA900108EE272643C040001248457305B
-:106720003C050004AFA200148EE604E408002A4FE2
-:1067300034A5F204A2E204ED8EE204E88EE304FC48
-:106740008EE472583C06000134C638003C0100015A
-:1067500000370821AC2083D83C0100010037082114
-:10676000AC2083DC0002110000431021AC44000C7B
-:106770008EE272642405FFF830E3FFFF004310212E
-:10678000244200070045102424630007AEE272583B
-:106790008EE2726C8EE47258006518240043102358
-:1067A000AEE2726C036610210082202B148000047C
-:1067B0003C03FFFF8EE2725800431021AEE2725894
-:1067C0008EE2725808002A64AEE2726410400073D0
-:1067D000000000008F830100276230002464002045
-:1067E0000082102B14400002000050212764280072
-:1067F0008F82010810820004000000008F820104D3
-:1068000014820006240500058EE201A8244200013E
-:10681000AEE201A808002A468EE201A8AC6800009A
-:10682000AC6900048EE27264A467000EAC650018C7
-:10683000AC6200088EE204E8AC660010AC62001C9A
-:10684000AF84010092E204EC14400036240A0001F7
-:106850008EE24E28000210C024424E3802E220216F
-:106860008C8200001445001F000000008EE34E28BB
-:106870008EE24E2C1062001B240300408C82000428
-:1068800024420001AC8200048EE24E2C8EE54E289C
-:106890002442000110430007000000008EE24E2C4D
-:1068A0002442000110A200050000000008002A3068
-:1068B0000000000014A00005000000008F82010805
-:1068C00024420020AF8201088F8201088C820004DC
-:1068D0002C42001150400013AC80000008002A46F2
-:1068E000000000008EE24E282403004024420001F4
-:1068F00050430003000010218EE24E282442000184
-:10690000AEE24E288EE24E28000210C024424E38DD
-:1069100002E2202124020005AC82000024020001D2
-:10692000AC8200041540000C30E5FFFF3C04000180
-:10693000248457483C050004AFA90010AFA0001400
-:106940008EE604E434A5F2370C00240330E7FFFFA1
-:1069500008002A72000000008EE2726400451021D7
-:10696000AEE272648EE2726C8EE372643C040001EB
-:1069700034843800A2E004ED00451023AEE2726CCE
-:10698000036410210062182B146000043C03FFFF15
-:106990008EE2726400431021AEE272648EE304E87A
-:1069A00096E20458246300012442FFFF0062182489
-:1069B000AEE304E88EE304E88EE204E0146200052E
-:1069C000000000008F8200602403FFF700431024C2
-:1069D000AF8200608FBF001803E0000827BD0020D1
-:1069E00027BDFFE0AFBF001CAFB000188F820100D1
-:1069F0008EE34E2C8F8201048F8501082402004013
-:106A00002463000150620003000010218EE24E2C2E
-:106A100024420001AEE24E2C8EE24E2C8EE34E2C30
-:106A2000000210C024424E3802E220218EE24E289D
-:106A30008C8700041462000700A030218F820108B7
-:106A400024420020AF8201088F82010808002AA298
-:106A5000AC8000008EE24E2C240300402442000152
-:106A600050430003000010218EE24E2C244200010E
-:106A7000000210C024424E3802E220218C82000421
-:106A80008F8301080002114000621821AF830108C2
-:106A9000AC8000008CC200182443FFFE2C6200135F
-:106AA000104000C1000310803C01000100220821B9
-:106AB0008C22577000400008000000008EE204F0B5
-:106AC00000471021AEE204F08EE204F08F43023C56
-:106AD0000043102B144000BE000000008EE304E4CD
-:106AE0008EE204F8506200BAA2E004F48F83012021
-:106AF000276238002466002000C2102B504000019D
-:106B0000276630008F82012810C2000400000000B8
-:106B10008F82012414C20007000000008EE201A44D
-:106B20000000802124420001AEE201A408002B12E3
-:106B30008EE201A48EE204E4AC62001C8EE404B098
-:106B40008EE504B42462001CAC6200082402000834
-:106B5000A462000E24020011AC620018AC640000B4
-:106B6000AC6500048EE204C4AC620010AF86012064
-:106B700092E24E2014400037241000018EE24E3085
-:106B8000000210C02442503802E220218C83000011
-:106B9000240200121462001F000000008EE34E3039
-:106BA0008EE24E341062001B240300408C820004ED
-:106BB00024420001AC8200048EE24E348EE54E3059
-:106BC0002442000110430007000000008EE24E3412
-:106BD0002442000110A200050000000008002AFC69
-:106BE0000000000014A00005000000008F820128B2
-:106BF00024420020AF8201288F8201288C82000469
-:106C00002C42001150400013AC80000008002B12F1
-:106C1000000000008EE24E302403004024420001B8
-:106C200050430003000010218EE24E302442000148
-:106C3000AEE24E308EE24E30000210C02442503898
-:106C400002E2202124020012AC8200002402000192
-:106C5000AC8200045600000B241000018EE204E414
-:106C60003C04000124845754AFA00014AFA20010CC
-:106C70008EE606088F4702283C0500090C00240315
-:106C800034A5F006160000032402000108002B7151
-:106C9000A2E204F48EE2017024420001AEE201702F
-:106CA0008EE201708EE204E4A2E004F4AEE004F0AF
-:106CB000AEE204F88F42023C50400045AEE07274F0
-:106CC0008EE2018424420001AEE201848EE201845E
-:106CD00008002B71AEE072748EE2050424030040BC
-:106CE0002442000150430003000010218EE20504FD
-:106CF00024420001AEE205048EE205048CC30018B4
-:106D000000021080005710218C4405082402000363
-:106D10001462000F000000003C0200010057102127
-:106D2000904283B110400014000000008EE201D0B8
-:106D30008EE3524000441021AEE201D08EE201D831
-:106D400000641821306300FF08002B59AEE3524065
-:106D50008EE201CC8EE30E1000441021AEE201CC95
-:106D60008EE201D800641821306301FFAEE30E10FB
-:106D700000441021AEE201D88EE20000344200400F
-:106D800008002B71AEE200008EE2014C3C010001D4
-:106D900000370821A02083E024420001AEE2014C2C
-:106DA00008002B718EE2014C94C7000E8CC2001CAF
-:106DB0003C04000124845760AFA60014AFA2001069
-:106DC0008CC600183C0500080C00240334A50910EB
-:106DD0008FBF001C8FB0001803E0000827BD002003
-:106DE00027BDFF98AFBF0060AFBE005CAFB60058D4
-:106DF000AFB50054AFB40050AFB3004CAFB20048D1
-:106E0000AFB10044AFB000408F8301088F8201040E
-:106E1000AFA00024106203E7AFA0002C3C1E0001CD
-:106E200037DE38003C0BFFFF8F9301088E6200189D
-:106E30008F8301042443FFFE2C620014104003CF13
-:106E4000000310803C010001002208218C2257C061
-:106E500000400008000000009663000E8EE2725CA5
-:106E60008EE404F000431021AEE2725C8E63001CDD
-:106E700096E2045824840001AEE404F02463000187
-:106E80002442FFFF00621824AEE304E48F42023C78
-:106E90000082202B148003B9000000008F830120A2
-:106EA000276238002466002000C2102B50400001E9
-:106EB000276630008F82012810C200040000000005
-:106EC0008F82012414C20007000000008EE201A49A
-:106ED0000000802124420001AEE201A408002BFE44
-:106EE0008EE201A48EE204E4AC62001C8EE404B0E5
-:106EF0008EE504B42462001CAC6200082402000881
-:106F0000A462000E24020011AC620018AC64000000
-:106F1000AC6500048EE204C4AC620010AF860120B0
-:106F200092E24E2014400037241000018EE24E30D1
-:106F3000000210C02442503802E220218C8300005D
-:106F4000240200121462001F000000008EE34E3085
-:106F50008EE24E341062001B240C00408C82000430
-:106F600024420001AC8200048EE24E348EE34E30A7
-:106F700024420001104C0007000000008EE24E3455
-:106F800024420001106200050000000008002BE808
-:106F90000000000014600005000000008F8201283E
-:106FA00024420020AF8201288F8201288C820004B5
-:106FB0002C42001150400013AC80000008002BFE52
-:106FC000000000008EE24E30240C004024420001FC
-:106FD000504C0003000010218EE24E30244200018C
-:106FE000AEE24E308EE24E30000210C024425038E5
-:106FF00002E2202124020012240C0001AC820000D5
-:10700000AC8C00045600000D241000018EE204E454
-:107010003C04000124845754AFA00014AFA2001018
-:107020008EE606088F4702283C05000934A5F006C5
-:107030000C002403AFAB00388FAB00381200030AFA
-:10704000240C000108002F1900000000966C001CA1
-:10705000AFAC002C9662001E3C0C8000AFAC00244C
-:10706000AE62001C8E75001C8EE204FC8EE404FCF3
-:1070700000151900006210218C52000C92E27B98DE
-:10708000006418219476000A1440000332C2000202
-:10709000AEF27BA4AEF57B9C1040004B000080213B
-:1070A00096E2045A304200021040004700000000FF
-:1070B0008E63001C8EE204FC00032100008210217C
-:1070C0008C42000C037E1821244200220043102B26
-:1070D0001440000A240500148EE204FC00821021F2
-:1070E0008C44000CAFAB00380C002F752484000ECC
-:1070F0008FAB003808002C523050FFFF8EE204FCAA
-:10710000008210218C42000C9450000E9443001019
-:10711000944400129445001402038021020480214B
-:107120000205802194430016944400189445001AE7
-:107130000203802102048021020580219443001C67
-:107140009444001E94420020020380210204802106
-:107150000202802100101C023202FFFF0062802127
-:107160008E63001C8EE204FC001024020003290040
-:1071700000A210218C43000C3202FFFF008280210C
-:10718000037E1021246300180062182B146000098C
-:10719000000000008EE204FC00A210218C43000CD1
-:1071A000001010273C01FFFF0023082108002C6F6E
-:1071B000A42200188EE204FC00A210218C43000CD3
-:1071C00000101027A462001896E2045A00008821DB
-:1071D00030420008144000630000A0218E63001CB0
-:1071E0008EE204FC0003310000C210218C42000C2E
-:1071F000037E1821244200220043102B1440003546
-:10720000000000008EE204FC00C210218C42000C41
-:1072100024470010037E102100E2102B5040000193
-:1072200000EB38218EE204FC94F1000000C2102132
-:107230008C42000C24470016037E102100E2102B24
-:10724000144000022634FFEC00EB38218EE204FCEF
-:1072500090E3000100C210218C42000C2447001A68
-:10726000037E102100E2102B1440000202838821CB
-:1072700000EB382194E2000024E70002022288217A
-:10728000037E102100E2102B5040000100EB38215A
-:1072900094E2000024E7000202228821037E1021EC
-:1072A00000E2102B5040000100EB382194E2000076
-:1072B00024E7000202228821037E102100E2102B25
-:1072C0005040000100EB382194E2000008002CD06F
-:1072D000022288218EE204FC00C210218C43000CA3
-:1072E0008EE204FC947100108EE304FC00C21021B5
-:1072F0008C44000C00C318218C62000C2634FFEC77
-:10730000908400178EE304FC9442001A02848821C2
-:1073100000C318218C65000C8EE304FC0222882136
-:107320008EE204FC00C3182100C210218C44000C22
-:107330008C62000C94A3001C9484001E94420020D4
-:1073400002238821022488210222882100111C02A4
-:107350003222FFFF0062882100111C023222FFFF4F
-:107360000062882132C20001104000B2000000001B
-:1073700096E2045A30420001104000AE32C2008052
-:10738000104000080000000092E27B9814400005C5
-:1073900000000000240C0001A2EC7B98AEF57B9C61
-:1073A000AEF27BA48EE304FC001511000043102113
-:1073B0008C47000C037E182124E2000E0043102BA2
-:1073C0001440000800E020212405000E0C002F7559
-:1073D000AFAB00383042FFFF8FAB003808002D09FB
-:1073E0000202802194E6000024E7000294E50000F8
-:1073F00024E7000294E3000024E7000294E2000086
-:1074000024E7000294E4000024E700020206802141
-:1074100002058021020380210202802194E2000003
-:1074200094E30002020480210202802102038021F1
-:1074300000101C023202FFFF0062802100101C02BB
-:107440003202FFFF8EE47B9C0062802114950004D1
-:107450003205FFFF9662001608002D17005120210B
-:107460009662001600542021000414023083FFFFAE
-:1074700000432021008520230004140200822021E3
-:107480003084FFFF508000013404FFFF8EE27BA4B4
-:1074900024430017037E10210062102B504000018E
-:1074A000006B182190630000240200111462003167
-:1074B000240200068EE27BA4037E182124420028C9
-:1074C0000043102B14400018000000008EE27B9C4B
-:1074D00012A2000A32C201008EE27BA43C01FFFF2F
-:1074E00000220821942200280082202100041C028E
-:1074F0003082FFFF0062202132C2010014400004EC
-:107500000004102792E27B98144000020004102728
-:107510003044FFFF8EE27BA43C01FFFF00220821E4
-:1075200008002D8AA42400288EE27B9C12A2000869
-:1075300032C201008EE27BA4944200280082202106
-:1075400000041C023082FFFF0062202132C20100D1
-:10755000144000040004102792E27B9814400002BB
-:10756000000410273044FFFF8EE27BA408002D8A20
-:10757000A44400281462002F037E18218EE27BA40D
-:10758000244200320043102B144000180000000079
-:107590008EE27B9C12A2000A32C201008EE27BA422
-:1075A0003C01FFFF002208219422003200822021AA
-:1075B00000041C023082FFFF0062202132C2010061
-:1075C000144000040004102792E27B98144000024B
-:1075D000000410273044FFFF8EE27BA43C01FFFF34
-:1075E0000022082108002D8AA42400328EE27B9C10
-:1075F00012A2000832C201008EE27BA49442003243
-:107600000082202100041C023082FFFF0062202142
-:1076100032C20100144000040004102792E27B985B
-:1076200014400002000410273044FFFF8EE27BA4C8
-:10763000A44400328FAC00241180002C037E18215A
-:107640008E420000AE42FFFC2642000A0043102B8F
-:107650001440001B3403810026430004037E1021E4
-:107660000062102B1440000300602021006B1821E1
-:10767000006020218C62000024630004AE42000000
-:10768000037E10210062102B50400001006B182176
-:107690008C620000AC82000034028100A462000011
-:1076A00024630002037E10210062102B5040000171
-:1076B000006B182197AC002E08002DB4A46C0000BC
-:1076C0008E4200048E440008A643000897AC002EAA
-:1076D000A64C000AAE420000AE4400049662000EC2
-:1076E0002652FFFC24420004A662000E9662000EA1
-:1076F0008EE3725C00621821AEE3725CAFB20018D8
-:107700008EE3725CAFA3001C8EE2725C2C42003CE4
-:1077100010400004246200012403FFFE00431024F3
-:10772000AFA2001C32C200801040000C32C2010027
-:107730008EE27BA824430001000210C000571021F4
-:10774000AEE37BA88FA300188FA4001CAC437BACD6
-:10775000AC447BB008002EA0AEE0725C104000721A
-:10776000000000008EE27BA824430001000210C04C
-:1077700000571021AEE37BA88FA300188FA4001C34
-:10778000AC437BACAC447BB08EE27BA81040006382
-:1077900000004821000050218F8200F0244800089A
-:1077A000276218000102102B5040000127681000CA
-:1077B0008F8200F415020007000000008EE201B481
-:1077C0000000802124420001AEE201B408002DFA3D
-:1077D0008EE201B48F8300F02410000101571021C4
-:1077E0008C447BAC8C457BB0AC640000AC65000481
-:1077F000AF8800F01600000602EA10218EE2008831
-:1078000024420001AEE2008808002E3F8EE200888C
-:107810008C427BB08EE400E08EE500E48EE67B9C3B
-:10782000004018210000102100A3282100A3382BBC
-:1078300000822021008720218EE204FC00C9302133
-:1078400000063100AEE400E0AEE500E400C2302105
-:1078500094C2000A240C00020002114230430003CB
-:10786000106C00162862000310400005240C000173
-:10787000106C00080000000008002E3F000000000F
-:10788000240C0003106C00170000000008002E3FBD
-:10789000000000008EE200E88EE300EC24630001AB
-:1078A0002C64000100441021AEE200E8AEE300ECDD
-:1078B0008EE200E808002E3F8EE300EC8EE200F03E
-:1078C0008EE300F4246300012C64000100441021C5
-:1078D000AEE200F0AEE300F48EE200F008002E3FCE
-:1078E0008EE300F48EE200F88EE300FC24630001D6
-:1078F0002C64000100441021AEE200F8AEE300FC6D
-:107900008EE200F88EE300FC8EE27BA825290001C0
-:107910000122102B1440FFA0254A0008A2E07B980A
-:1079200008002E9FAEE07BA88F8200F0244700085D
-:107930002762180000E2102B50400001276710005A
-:107940008F8200F414E20007000000008EE201B410
-:107950000000802124420001AEE201B408002E5D47
-:107960008EE201B48F8200F0241000018FA3001872
-:107970008FA4001CAC430000AC440004AF8700F0AF
-:1079800016000007000000008EE20088244200017B
-:10799000AEE200888EE2008808002EA0AEE0725CA5
-:1079A0008EE2725C8EE400E08EE500E4240C0002BE
-:1079B000004018210000102100A3282100A3302B33
-:1079C000008220210086202100161142304300034E
-:1079D000AEE400E0AEE500E4106C00172C6200039A
-:1079E00010400005240C0001106C0008000000008D
-:1079F00008002EA0AEE0725C240C0003106C00198D
-:107A00000000000008002EA0AEE0725C8EE200E8EC
-:107A10008EE300EC246300012C640001004410217B
-:107A2000AEE200E8AEE300EC8EE200E88EE300ECAC
-:107A300008002EA0AEE0725C8EE200F08EE300F44F
-:107A4000246300012C64000100441021AEE200F028
-:107A5000AEE300F48EE200F08EE300F408002EA006
-:107A6000AEE0725C8EE200F88EE300FC246300015D
-:107A70002C64000100441021AEE200F8AEE300FCEB
-:107A80008EE200F88EE300FCAEE0725C8E62001CB9
-:107A900096E304588EE404F0244200012463FFFFBF
-:107AA0000043102424840001AEE204E4AEE404F0B8
-:107AB0008F42023C0082202B148000B000000000A6
-:107AC0008F830120276238002466002000C2102B1B
-:107AD00050400001276630008F82012810C2000448
-:107AE000000000008F82012414C200070000000083
-:107AF0008EE201A40000802124420001AEE201A434
-:107B000008002F078EE201A48EE204E4AC62001CA0
-:107B10008EE404B08EE504B42462001CAC6200085C
-:107B200024020008A462000E24020011AC620018B6
-:107B3000AC640000AC6500048EE204C4AC620010CA
-:107B4000AF86012092E24E2014400037241000013D
-:107B50008EE24E30000210C02442503802E2202152
-:107B60008C830000240200121462001F0000000039
-:107B70008EE34E308EE24E341062001B240C004027
-:107B80008C82000424420001AC8200048EE24E3458
-:107B90008EE34E3024420001104C0007000000002C
-:107BA0008EE24E3424420001106200050000000005
-:107BB00008002EF100000000146000050000000025
-:107BC0008F82012824420020AF8201288F82012861
-:107BD0008C8200042C42001150400013AC80000045
-:107BE00008002F07000000008EE24E30240C0040F9
-:107BF00024420001504C0003000010218EE24E3060
-:107C000024420001AEE24E308EE24E30000210C03F
-:107C10002442503802E2202124020012240C0001E8
-:107C2000AC820000AC8C00045600000D2410000152
-:107C30008EE204E43C04000124845754AFA00014F5
-:107C4000AFA200108EE606088F4702283C05000907
-:107C500034A5F0060C002403AFAB00388FAB00381E
-:107C600016000003240C000108002F5CA2EC04F4B1
-:107C70008EE2017024420001AEE201708EE20170DA
-:107C80008EE204E4A2E004F4AEE004F0AEE072742C
-:107C9000AEE204F88F42023C1040003800000000C1
-:107CA0008EE2018424420001AEE2018408002F5CD0
-:107CB0008EE201848EE20504240C0040244200017F
-:107CC000504C0003000010218EE205042442000104
-:107CD000AEE205048EE205048E630018240C000356
-:107CE0000002108000571021146C000F8C4405080E
-:107CF0003C02000100571021904283B11040001453
-:107D0000000000008EE201D08EE3524000441021BA
-:107D1000AEE201D08EE201D800641821306300FF8A
-:107D200008002F4FAEE352408EE201CC8EE30E10DE
-:107D300000441021AEE201CC8EE201D8006418218B
-:107D4000306301FFAEE30E1000441021AEE201D813
-:107D50008EE200003442004008002F5CAEE20000DA
-:107D60008EE2014C3C01000100370821A02083E095
-:107D700024420001AEE2014C8EE2014C8F820108E8
-:107D800024420020AF8201088F8201088F820108FF
-:107D9000276330000043102B1440000227622800A4
-:107DA000AF8201088F8301088F8201041462FC1ED8
-:107DB000000000008FBF00608FBE005C8FB60058CF
-:107DC0008FB500548FB400508FB3004C8FB2004871
-:107DD0008FB100448FB0004003E0000827BD006869
-:107DE0000005284310A0000D000030213C030001D5
-:107DF000346338003C07FFFF036310210082102B1F
-:107E00005040000100872021948200002484000259
-:107E100024A5FFFF14A0FFF800C2302100061C02B9
-:107E200030C2FFFF0062302100061C0230C2FFFF9B
-:107E30000062302103E0000830C2FFFF27BDFF8849
-:107E4000240F0001AFBF0070AFBE006CAFB600687A
-:107E5000AFB50064AFB40060AFB3005CAFB2005820
-:107E6000AFB10054AFB00050A3A00027AFAF002CBB
-:107E70008EE204D400008021304200011440002A28
-:107E8000A3A000378F8700E08F8800C48F8200E8AE
-:107E900000E220232C8210005040000124841000B6
-:107EA000000420C2008018218EE400C88EE500CCBA
-:107EB0000000102100A3282100A3302B00822021E4
-:107EC00000862021AEE400C8AEE500CC8F8300C858
-:107ED0003C02000A3442EFFF010320230044102B30
-:107EE000104000033C02000A3442F00000822021CE
-:107EF000008018218EE400C08EE500C4000010212F
-:107F000000A3282100A3302B0082202100862021FD
-:107F1000AEE400C0AEE500C4AF8800C8AF8700E49F
-:107F2000080034CCAF8700E83C0200010057102164
-:107F3000904283C01040000B000000003C14000180
-:107F40000297A0218E9483C43C13000102779821EC
-:107F50008E7383C83C1200010257902108003193B0
-:107F60008E5283CC8F8300E08F8200E410430007A1
-:107F7000000088218F8200E4241100018C4300005E
-:107F80008C440004AFA30018AFA4001C1620000E00
-:107F90003C02FFFF8F8200C4AFA200108F8200C896
-:107FA0003C04000124845870AFA200148F8600E0C6
-:107FB0008F8700E43C0500060C00240334A5F00084
-:107FC000080034CC000000008FA3001C8FB2001802
-:107FD0003074FFFF2694FFFC00621024104000580C
-:107FE000024098213C020080006210241040000AE8
-:107FF0003C0400408EE2007C24420001AEE2007CA2
-:108000008EE2007C8EE201FC24420001AEE201FC23
-:10801000080034C68EE201FC3C0600043C0B000163
-:108020003C0A00023C0500103C0900088EE200807A
-:108030003C0800203407800024420001AEE20080AA
-:108040008EE200808FA2001C0044182410660021DC
-:1080500000C3102B1440000700000000106B00113B
-:1080600000000000106A0015000000000800304900
-:10807000000420421065002300A3102B14400005CB
-:1080800000000000106900190000000008003049DD
-:108090000004204210680021000000000800304960
-:1080A000000420428EE2003424420001AEE200349B
-:1080B0008EE2003408003049000420428EE201ECD8
-:1080C00024420001AEE201EC8EE201EC08003049EE
-:1080D000000420428EE201F024420001AEE201F0F1
-:1080E0008EE201F008003049000420428EE201F4E3
-:1080F00024420001AEE201F48EE201F408003049AE
-:10810000000420428EE2003024420001AEE2003042
-:108110008EE2003008003049000420428EE201F86F
-:1081200024420001AEE201F88EE201F80004204290
-:108130001087047C000000000800300E00000000E2
-:108140003C02000100571021904283B21440008489
-:10815000240200013C03000100771821906383B3DF
-:108160001462007F3C0201008E4300000062102474
-:108170001040006F2402FFFF14620005241000016C
-:10818000964300043402FFFF1062007500000000F7
-:1081900092E204D814400072000000003C0200018A
-:1081A000005710218C4283B4284200051040002063
-:1081B000000038213C020001005710218C4283B49A
-:1081C000184000160000282196660000000520C017
-:1081D000009710219442777E1446000900971021E1
-:1081E0009443778096620002146200050097102184
-:1081F00094437782966200045062000824070001CD
-:108200003C020001005710218C4283B424A50001D8
-:1082100000A2102A5440FFEE000520C030E200FF0B
-:108220001040044000000000080030D500000000AD
-:10823000024020210C0022FE240500063044001FCD
-:10824000000428C002E510219442727C30424000B4
-:108250001440043400B710219443727E96620000EB
-:108260001462000B000418C000B710219443728000
-:108270009662000214620006000418C000B71021C4
-:10828000944372829662000410620035000418C0A4
-:1082900002E310219442727C304280001440042199
-:1082A00002E31021944B727C96670000000B28C0FB
-:1082B00000B710219442737E080030B700003021CF
-:1082C000000420C002E410219443737C02E41021D6
-:1082D000944B737C3063800014600010000B28C046
-:1082E00000B710219442737E1447FFF501602021EE
-:1082F00000B7102194437380966200025462FFF12C
-:10830000000420C000B710219443738296620004D9
-:108310005462FFEC000420C02406000130C200FFBC
-:108320001040040000000000080030D500000000EC
-:108330009743020296420000146203FA0000000014
-:108340009743020496420002146203F60000000004
-:108350009743020696420004146203F200000000F4
-:10836000924200003A030001304200010043102411
-:10837000104000742402FFFF8E63000014620004AA
-:108380003402FFFF966300041062006F240F0002A6
-:108390003C02000100571021904283B21440006A51
-:1083A000240F000392E204D854400068AFAF002CC1
-:1083B0003C020001005710218C4283B42842000582
-:1083C00010400020000038213C020001005710211D
-:1083D0008C4283B4184000160000282196660000E5
-:1083E000000520C0009710219442777E14460009B2
-:1083F0000097102194437780966200021462000572
-:10840000009710219443778296620004506200081E
-:10841000240700013C020001005710218C4283B464
-:1084200024A5000100A2102A5440FFEE000520C040
-:1084300030E200FF14400044240F0003080034C65B
-:1084400000000000024020210C0022FE240500064E
-:108450003044001F000428C002E510219442727CC1
-:1084600030424000144003AF00B710219443727EA5
-:10847000966200001462000B000418C000B71021BF
-:10848000944372809662000214620006000418C0D1
-:1084900000B7102194437282966200041062002794
-:1084A000000418C002E310219442727C3042800024
-:1084B0001440039C02E31021944B727C96670000E9
-:1084C000000B28C000B710219442737E0800313C95
-:1084D00000003021000420C002E410219443737C8A
-:1084E00002E41021944B737C306380001460001010
-:1084F000000B28C000B710219442737E1447FFF58B
-:108500000160202100B7102194437380966200021D
-:108510005462FFF1000420C000B71021944373821D
-:10852000966200045462FFEC000420C0240600019F
-:1085300030C200FF1040037B000000000800314FF4
-:10854000240F0003240F0001AFAF002C8F42026004
-:108550000054102B1040003A000000008F8300E40C
-:108560008F8200E01062000324630008AF8300E400
-:10857000AF8300E88EE400C08EE500C402801821BD
-:108580000000102100A3282100A3302B008220210D
-:1085900000862021AEE400C0AEE500C48EE20058A3
-:1085A00024420001AEE200588EE200588EE2007CC8
-:1085B00024420001AEE2007C8EE2007C8F8200E06B
-:1085C000AFA200108F8200E43C040001248458789C
-:1085D000AFA200148FA600188FA7001C3C05000650
-:1085E0000C00240334A5F003080034CC0000000084
-:1085F0008EE25240AFA200108EE252443C040001D1
-:1086000024845884AFA200148EE60E108EE70E1854
-:108610003C0500060C00240334A5F0028EE201C0E4
-:1086200024420001AEE201C08EE200008EE301C0F0
-:108630002403FFBF0043102408003470AEE20000A2
-:1086400096E204680054102B104000030000000064
-:10865000240F0001A3AF0027128003012416000796
-:1086600024150040241E0001240E00128EE2724CDC
-:108670008F43028024420001304207FF106202D380
-:108680000000000093A2002710400014000000002A
-:108690008EE352408EE252441062000926ED5244AD
-:1086A0008EE652448EE35244000211402442524866
-:1086B00002E2802124630001080031BF306B00FF1B
-:1086C00092E272481440FFCA000000008EE201E00E
-:1086D00024420001AEE201E08EE201E08EE30E10E2
-:1086E0008EE20E181062FFC226ED0E188EE60E18EE
-:1086F0008EE30E180002114024420E2002E2802177
-:1087000024630001306B01FF96E2046A30420010DE
-:1087100010400019000000009642000C340F810048
-:10872000144F0015000000003C020001005710210A
-:10873000904283C014400010000000009642000EDA
-:10874000A60200168E4200088E4300048E440000EC
-:108750002694FFFCAE42000CAE430008AE44000479
-:108760009602000E26730004240F0001A3AF003709
-:1087700034420200A602000E8E0200008E030004A6
-:108780003C04000134843800306A0007026A9823F0
-:10879000036410210262102B10400005028AA02100
-:1087A00002641023036218233C0200200043982334
-:1087B000268200072404FFF89603000A0044602480
-:1087C000006A1821006C102B104000020180382133
-:1087D00000603821AE1300188F88012024E20007C2
-:1087E0000044382427623800250900200122102B7C
-:1087F00050400001276930008F82012811220004B7
-:10880000000000008F82012415220007014018217A
-:108810008EE201A40000882124420001AEE201A4FE
-:108820000800324C8EE201A48E0400008E05000484
-:1088300000001021AD130008A507000EAD160018AA
-:10884000AD06001C00A3302B00A3282300822023A8
-:1088500000862023AD040000AD0500048EE204C0B4
-:10886000AD020010AF89012092E24E201440003387
-:10887000241100018EE24E30000210C02442503814
-:1088800002E220218C8200001456001F000000002C
-:108890008EE34E308EE24E341062001B000000006A
-:1088A0008C82000424420001AC8200048EE24E342B
-:1088B0008EE34E30244200011055000700000000F6
-:1088C0008EE24E34244200011062000500000000D8
-:1088D00008003239000000001460000500000000AC
-:1088E0008F82012824420020AF8201288F82012834
-:1088F0008C8200042C42001150400010AC8000001B
-:108900000800324C000000008EE24E30244200018C
-:1089100050550003000010218EE24E302442000129
-:10892000AEE24E308EE24E30000210C0244250388B
-:1089300002E22021AC960000AC9E00041620001834
-:108940003C0500068E0200183C0400012484589067
-:10895000AFA200108E0200008E03000434A5F009BF
-:10896000020030210C002403AFA3001493A20037AF
-:1089700010400216340F81008E4200048E4300081E
-:108980008E44000CA64F000CAE420000AE43000423
-:10899000AE4400089602001608003470A642000E8D
-:1089A00014EC0168028A1823960C000A9603000E44
-:1089B000028A1023A602000A34620004A602000EF6
-:1089C0008F88012027623800250900200122102B02
-:1089D00014400002306AFFFF276930008F820128AF
-:1089E00011220004000000008F82012415220007DC
-:1089F000240400208EE201A400008821244200010A
-:108A0000AEE201A4080032CA8EE201A48EE5724CE7
-:108A10008EE604908EE70494A504000E240400045E
-:108A2000AD100008AD0400180005294000A0182171
-:108A30000000102100E3382100E3202B00C2302188
-:108A400000C43021AD060000AD0700048EE2724C78
-:108A5000AD02001C8EE204C4AD020010AF890120FB
-:108A600092E24E2014400033241100018EE24E3079
-:108A7000000210C02442503802E220218C82000003
-:108A80001456001F000000008EE34E308EE24E347C
-:108A90001062001B000000008C82000424420001D0
-:108AA000AC8200048EE24E348EE34E30244200014C
-:108AB00010550007000000008EE24E3424420001F1
-:108AC0001062000500000000080032B7000000003E
-:108AD00014600005000000008F820128244200205D
-:108AE000AF8201288F8201288C8200042C42001161
-:108AF00050400010AC800000080032CA00000000A6
-:108B00008EE24E3024420001505500030000102137
-:108B10008EE24E3024420001AEE24E308EE24E3004
-:108B2000000210C02442503802E22021AC9600001E
-:108B3000AC9E00041620000D00000000A60C000AE8
-:108B4000A60A000E8F820100AFA200108F820104DE
-:108B50003C0400012484589C3C050006AFA200148C
-:108B60008EE6724C0800343B34A5F00B3C0100014A
-:108B700000370821A02083C0ADAB00008EE201D8F1
-:108B80008EE3724C2442FFFFAEE201D88EE201D8A0
-:108B900024630001306307FF26E2524415A2000659
-:108BA000AEE3724C8EE201D02442FFFFAEE201D070
-:108BB000080032EF8EE201D08EE201CC2442FFFFAA
-:108BC000AEE201CC8EE201CC8F4202401040007335
-:108BD000000000008EE20E1C24420001AEE20E1CDA
-:108BE0008F4302400043102B144001760000A02167
-:108BF0008F830120276238002466002000C2102BDA
-:108C000050400001276630008F82012810C2000406
-:108C1000000000008F82012414C200070000000041
-:108C20008EE201A40000882124420001AEE201A4EA
-:108C30000800334F8EE201A48EE2724CAC62001C3D
-:108C40008EE404A88EE504AC2462001CAC6200082B
-:108C500024020008A462000E24020011AC62001875
-:108C6000AC640000AC6500048EE204C4AC62001089
-:108C7000AF86012092E24E201440003324110001FF
-:108C80008EE24E30000210C02442503802E2202111
-:108C90008C820000144E001F000000008EE34E3056
-:108CA0008EE24E341062001B000000008C82000433
-:108CB00024420001AC8200048EE24E348EE34E303A
-:108CC0002442000110550007000000008EE24E34DF
-:108CD0002442000110620005000000000800333C3F
-:108CE0000000000014600005000000008F820128D1
-:108CF00024420020AF8201288F8201288C82000448
-:108D00002C42001150400010AC8000000800334F8E
-:108D1000000000008EE24E30244200015055000356
-:108D2000000010218EE24E3024420001AEE24E30AF
-:108D30008EE24E30000210C02442503802E2202160
-:108D4000AC8E0000AC9E00045620000D24110001E2
-:108D50008EE2724C3C040001248458A8AFA0001499
-:108D6000AFA200108EE6724C8F4702803C050009CE
-:108D700034A5F0080C002403AFAE00488FAE0048C5
-:108D800056200001AEE00E1C8EE201882442000154
-:108D9000AEE20188080033C88EE201888F8301208B
-:108DA000276238002466002000C2102B50400001CA
-:108DB000276630008F82012810C2000400000000E6
-:108DC0008F82012414C20007000000008EE201A47B
-:108DD0000000882124420001AEE201A4080033BA59
-:108DE0008EE201A48EE2724CAC62001C8EE404A8F8
-:108DF0008EE504AC2462001CAC620008240200086A
-:108E0000A462000E24020011AC620018AC640000E1
-:108E1000AC6500048EE204C4AC620010AF86012091
-:108E200092E24E2014400033241100018EE24E30B5
-:108E3000000210C02442503802E220218C8200003F
-:108E4000144E001F000000008EE34E308EE24E34C0
-:108E50001062001B000000008C820004244200010C
-:108E6000AC8200048EE24E348EE34E302442000188
-:108E700010550007000000008EE24E34244200012D
-:108E80001062000500000000080033A70000000089
-:108E900014600005000000008F8201282442002099
-:108EA000AF8201288F8201288C8200042C4200119D
-:108EB00050400010AC800000080033BA00000000F1
-:108EC0008EE24E3024420001505500030000102174
-:108ED0008EE24E3024420001AEE24E308EE24E3041
-:108EE000000210C02442503802E22021AC8E000063
-:108EF000AC9E00041620000D000000008EE2724CB3
-:108F00003C040001248458A8AFA00014AFA20010B4
-:108F10008EE6724C8F4702803C05000934A5F008AC
-:108F20000C002403AFAE00488FAE00488EE20174FF
-:108F300024420001AEE201748EE201740800346E36
-:108F40000000A021960C000A0183102B5440000160
-:108F500001801821A603000A8F88012027623800AB
-:108F6000250900200122102B504000012769300004
-:108F70008F82012811220004000000008F8201244A
-:108F800015220007240400208EE201A4000088219D
-:108F900024420001AEE201A40800342F8EE201A4B5
-:108FA0008EE5724C8EE604908EE70494A504000EC4
-:108FB00024040004AD100008AD0400180005294089
-:108FC00000A018210000102100E3382100E3202B2D
-:108FD00000C2302100C43021AD060000AD070004FE
-:108FE0008EE2724CAD02001C8EE204C4AD02001091
-:108FF000AF89012092E24E20144000332411000179
-:109000008EE24E30000210C02442503802E220218D
-:109010008C8200001456001F000000008EE34E30CA
-:109020008EE24E341062001B000000008C820004AF
-:1090300024420001AC8200048EE24E348EE34E30B6
-:109040002442000110550007000000008EE24E345B
-:109050002442000110620005000000000800341CDA
-:109060000000000014600005000000008F8201284D
-:1090700024420020AF8201288F8201288C820004C4
-:109080002C42001150400010AC8000000800342F2A
-:10909000000000008EE24E302442000150550003D3
-:1090A000000010218EE24E3024420001AEE24E302C
-:1090B0008EE24E30000210C02442503802E22021DD
-:1090C000AC960000AC9E00041620001D00000000BD
-:1090D000A60C000A8F820100AFA200108F8201044B
-:1090E0003C0400012484589C3C050006AFA20014F7
-:1090F0008EE6724C34A5F00D0C00240302003821DA
-:1091000093A2003710400031340F81008E420004DA
-:109110008E4300088E44000CA64F000CAE420000A7
-:10912000AE430004AE44000896020016A642000EAC
-:109130009602000E3042FDFF08003470A602000EB9
-:109140008EE201D82442FFFFAEE201D88EE201D8C0
-:109150008EE201CC3C04001F3C01000100370821D5
-:10916000A03E83C02442FFFFAEE201CC9603000A7A
-:109170003484FFFF8EE201CC006A1821026398213B
-:109180000093202B108000033C02FFF534421000B6
-:1091900002629821ADAB00008EE2724C24420001C5
-:1091A000304207FFAEE2724C8F4202401040000492
-:1091B0000283A0238EE20E1C24420001AEE20E1CAC
-:1091C000A3A000271680FD290000000012800024C3
-:1091D000000000003C01000100370821AC3483C4CA
-:1091E0003C01000100370821AC3383C83C01000179
-:1091F00000370821AC3283CC93A20037104000081E
-:10920000000000003C020001005710218C4283CC7A
-:10921000244200043C01000100370821AC2283CC29
-:109220008EE2724C8F43028024420001304207FFDD
-:1092300014620006000000008EE201C42442000116
-:10924000AEE201C4080034CC8EE201C48EE201BC5F
-:1092500024420001AEE201BC080034CC8EE201BC25
-:1092600097A4001E2484FFFC008018218EE400C017
-:109270008EE500C40000102100A3282100A3302B9C
-:109280000082202100862021AEE400C0AEE500C4AB
-:109290008FAF002C2402000211E2000F29E200032C
-:1092A000144000172402000315E20015000000001E
-:1092B0008EE200D08EE300D4246300012C64000110
-:1092C00000441021AEE200D0AEE300D48EE200D024
-:1092D000080034C68EE300D48EE200D88EE300DCB2
-:1092E000246300012C64000100441021AEE200D888
-:1092F000AEE300DC8EE200D8080034C68EE300DC6A
-:109300008EE200C88EE300CC246300012C640001CF
-:1093100000441021AEE200C8AEE300CC8EE200C8EB
-:109320008EE300CC8F8300E48F8200E010620003A4
-:1093300024630008AF8300E4AF8300E88FBF0070B0
-:109340008FBE006C8FB600688FB500648FB400606C
-:109350008FB3005C8FB200588FB100548FB00050B3
-:1093600003E0000827BD007827BDFFB0AFB500447B
-:109370000000A821AFB0003000008021AFBF004C3A
-:10938000AFB60048AFB40040AFB3003CAFB2003856
-:10939000AFB100348EE204D4241400013042000145
-:1093A0001440002A0000B0218F8700E08F8800C49D
-:1093B0008F8200E800E220232C8210005040000140
-:1093C00024841000000420C2008018218EE400C80C
-:1093D0008EE500CC0000102100A3282100A3302B33
-:1093E0000082202100862021AEE400C8AEE500CC3A
-:1093F0008F8300C83C02000A3442EFFF01032023A0
-:109400000044102B104000033C02000A3442F000DC
-:1094100000822021008018218EE400C08EE500C467
-:109420000000102100A3282100A3302B008220215E
-:1094300000862021AEE400C0AEE500C4AF8800C8BD
-:10944000AF8700E408003850AF8700E83C02000115
-:1094500000571021904283C01040000B0000000014
-:109460003C130001027798218E7383C43C110001E4
-:10947000023788218E3183C83C12000102579021A7
-:10948000080036E88E5283CC8F8300E08F8200E4A0
-:1094900010430007000048218F8200E424090001E6
-:1094A0008C4300008C440004AFA30018AFA4001C40
-:1094B0001520000E3C02FFFF8F8200C4AFA20010F7
-:1094C0008F8200C83C04000124845870AFA20014AD
-:1094D0008F8600E08F8700E43C0500060C00240323
-:1094E00034A5F00008003850000000008FA3001CD5
-:1094F0008FB200183073FFFF2673FFFC0062102448
-:1095000010400058024088213C0200800062102474
-:109510001040000A3C0400408EE2007C244200011E
-:10952000AEE2007C8EE2007C8EE201FC244200016F
-:10953000AEE201FC0800384A8EE201FC3C06000461
-:109540003C0B00013C0A00023C0500103C090008ED
-:109550008EE200803C080020340780002442000195
-:10956000AEE200808EE200808FA2001C004418242E
-:109570001066002100C3102B1440000700000000FB
-:10958000106B001100000000106A001500000000C0
-:1095900008003592000420421065002300A3102B20
-:1095A00014400005000000001069001900000000D0
-:1095B00008003592000420421068002100000000DD
-:1095C00008003592000420428EE20034244200015B
-:1095D000AEE200348EE200340800359200042042EE
-:1095E0008EE201EC24420001AEE201EC8EE201ECDD
-:1095F00008003592000420428EE201F0244200016E
-:10960000AEE201F08EE201F0080035920004204243
-:109610008EE201F424420001AEE201F48EE201F494
-:1096200008003592000420428EE2003024420001FE
-:10963000AEE200308EE20030080035920004204295
-:109640008EE201F824420001AEE201F88EE201F858
-:1096500000042042108702B70000000008003557C0
-:10966000000000003C02000100571021904283B22C
-:1096700014400084240200013C03000100771821FB
-:10968000906383B31462007F3C0201008E430000AC
-:10969000006210241040006F2402FFFF14620005D6
-:1096A00024100001964300043402FFFF106200758D
-:1096B0000000000092E204D8144000720000000094
-:1096C0003C020001005710218C4283B4284200055F
-:1096D00010400020000038213C02000100571021FA
-:1096E0008C4283B418400016000028219626000002
-:1096F000000520C0009710219442777E144600098F
-:10970000009710219443778096220002146200058E
-:10971000009710219443778296220004506200083B
-:10972000240700013C020001005710218C4283B441
-:1097300024A5000100A2102A5440FFEE000520C01D
-:1097400030E200FF1040027B000000000800361EDF
-:1097500000000000024020210C0022FE240500062B
-:109760003044001F000428C002E510219442727C9E
-:10977000304240001440026F00B710219443727EC3
-:10978000962200001462000B000418C000B71021DC
-:10979000944372809622000214620006000418C0EE
-:1097A00000B71021944372829622000410620035A3
-:1097B000000418C002E310219442727C3042800001
-:1097C0001440025C02E310219448727C962700004A
-:1097D000000828C000B710219442737E08003600AC
-:1097E00000003021000420C002E410219443737C67
-:1097F00002E410219448737C3063800014600010F0
-:10980000000828C000B710219442737E1447FFF56A
-:109810000100202100B7102194437380962200029A
-:109820005462FFF1000420C000B7102194437382FA
-:10983000962200045462FFEC000420C024060001BC
-:1098400030C200FF1040023B000000000800361E3E
-:1098500000000000974302029642000014620235A5
-:109860000000000097430204964200021462023195
-:109870000000000097430206964200041462022D85
-:1098800000000000924200003A0300013042000153
-:1098900000431024104000742402FFFF8E230000B8
-:1098A000146200043402FFFF962300041062006F6C
-:1098B000241400023C02000100571021904283B2A0
-:1098C0001440006A2414000392E204D81440006794
-:1098D000000000003C020001005710218C4283B4BC
-:1098E0002842000510400020000038213C02000101
-:1098F000005710218C4283B4184000160000282124
-:1099000096260000000520C0009710219442777E23
-:109910001446000900971021944377809622000294
-:109920001462000500971021944377829622000468
-:1099300050620008240700013C020001005710217A
-:109940008C4283B424A5000100A2102A5440FFEEEB
-:10995000000520C030E200FF14400044241400033E
-:109960000800384A00000000024020210C0022FEBE
-:10997000240500063044001F000428C002E5102121
-:109980009442727C30424000144001EA00B710213A
-:109990009443727E962200001462000B000418C0EB
-:1099A00000B71021944372809622000214620006D0
-:1099B000000418C000B7102194437282962200045C
-:1099C00010620027000418C002E310219442727C48
-:1099D00030428000144001D702E310219448727C89
-:1099E00096270000000828C000B710219442737E1B
-:1099F0000800368500003021000420C002E4102158
-:109A00009443737C02E410219448737C306380009B
-:109A100014600010000828C000B710219442737E23
-:109A20001447FFF50100202100B7102194437380F3
-:109A3000962200025462FFF1000420C000B71021FA
-:109A400094437382962200045462FFEC000420C009
-:109A50002406000130C200FF104001B600000000E3
-:109A60000800369824140003241400018F42026079
-:109A70000053102B10400049000000008F8300E4C9
-:109A80008F8200E01062000324630008AF8300E4CB
-:109A9000AF8300E88EE400C08EE500C402601821A8
-:109AA0000000102100A3282100A3302B00822021D8
-:109AB00000862021AEE400C0AEE500C48EE200586E
-:109AC00024420001AEE200588EE200588EE2007C93
-:109AD00024420001AEE2007C8EE2007C8F8200E036
-:109AE000AFA200108F8200E43C0400012484587867
-:109AF000AFA200148FA600188FA7001C3C0500061B
-:109B00000C00240334A5F0030800385000000000C6
-:109B10008EE25240AFA200108EE252443C0400019B
-:109B200024845884AFA200148EE60E108EE70E181F
-:109B30000C00240334A5F0028EE201C0244200018F
-:109B4000AEE201C08EE200008EE301C02403FFBF3D
-:109B500000431024080037F8AEE200008EE25240C5
-:109B6000AFA200108EE252443C04000124845884C9
-:109B7000AFA200148EE60E108EE70E183C0500060C
-:109B80000C00240334A5F0028EE201C0244200013F
-:109B9000AEE201C0080037F88EE201C096E2046828
-:109BA0000053102B544000013C158000126001311D
-:109BB0003C0C001F358CFFFF8EE2724C8F430280FD
-:109BC00024420001304207FF10620108000000003B
-:109BD00012A00014000000008EE352408EE25244B6
-:109BE0001062000926EE52448EEB52448EE352443A
-:109BF000000211402442524802E280212463000105
-:109C000008003712306800FF92E272481440FFC02B
-:109C10003C0500068EE201E024420001AEE201E0D4
-:109C20008EE201E08EE30E108EE20E181062FFCB82
-:109C300026EE0E188EEB0E180000A8218EE30E18EB
-:109C40000002114024420E2002E280212463000120
-:109C5000306801FF96E2046A30420010104000179D
-:109C6000340281009643000C1462001400000000CE
-:109C70003C02000100571021904283C01440000FA5
-:109C8000000000009642000EA60200168E42000858
-:109C90008E4300048E4400002673FFFCAE42000C8D
-:109CA000AE430008AE4400049602000E26310004C4
-:109CB0002416000134420200A602000E9603000A98
-:109CC000026050210073102B1040000202606821D6
-:109CD000006050212D42003D1040002A0000382134
-:109CE0009623000C2402080054620027AE110018CD
-:109CF0003C02000100571021904283C054400022D2
-:109D0000AE110018262200170182102B10400013FC
-:109D1000000000003C02FFF5005110219042101796
-:109D2000384300062C630001384200112C42000128
-:109D30000062182510600013262200100182102BEB
-:109D40001040000E000000003C07FFF500F1382134
-:109D500094E710100800375E24E7000E92220017E7
-:109D6000384300062C630001384200112C420001E8
-:109D70000062182550600004AE11001896270010EC
-:109D800024E7000EAE1100183C020001005710211C
-:109D9000904283C00002102B14E0000200024EC06B
-:109DA000014038218F83012027623800246600207B
-:109DB00000C2102B50400001276630008F8201281E
-:109DC00010C20004000000008F82012414C20007AA
-:109DD0002402000B8EE201A400004821244200016D
-:109DE000AEE201A4080037BF8EE201A48E04000099
-:109DF0008E050004AC62001801751025004910257D
-:109E0000AC710008A467000EAC62001CAC640000DA
-:109E1000AC6500048EE204C0AC620010AF86012085
-:109E200092E24E2014400038240900018EE24E30A8
-:109E3000000210C02442503802E220218C8300002E
-:109E40002402000714620020000000008EE34E3060
-:109E50008EE24E341062001C000000008C82000470
-:109E600024420001AC8200048EE34E348EE54E3075
-:109E7000240200402463000110620007000000007B
-:109E80008EE24E342442000110A2000500000000C2
-:109E9000080037A90000000014A000050000000021
-:109EA0008F82012824420020AF8201288F8201285E
-:109EB0008C8200042C42001150400013AC80000042
-:109EC000080037BF000000008EE24E30240300403F
-:109ED0002442000150430003000010218EE24E3066
-:109EE00024420001AEE24E308EE24E30000210C03D
-:109EF0002442503802E2202124020007AC820000F4
-:109F000024020001AC820004152000183C05000664
-:109F10008E0200183C04000124845890AFA2001067
-:109F20008E0200008E03000434A5F00902003021E7
-:109F30000C002403AFA3001432C200FF1040002B1A
-:109F4000340281008E4300048E4400088E45000CCC
-:109F5000A642000CAE430000AE440004AE4500082B
-:109F600096020016080037F8A642000E154D000AAA
-:109F7000000000009602000EA613000A34420004FE
-:109F8000A602000E3C01000100370821A02083C07A
-:109F9000080037F6000098219604000A0093102B61
-:109FA00010400002026018210080182124020001E4
-:109FB000A603000A3C01000100370821A02283C04B
-:109FC0009604000A022488210191102B10400003FE
-:109FD0003C02FFF5344210000222882102649823DB
-:109FE0000000A8211660FEF4ADC800001260002138
-:109FF00032C200FF3C01000100370821AC3383C4AA
-:10A000003C01000100370821AC3183C83C0100014C
-:10A010000037082110400008AC3283CC3C0200011C
-:10A02000005710218C4283CC244200043C010001E3
-:10A0300000370821AC2283CC8EE2724C8F43028021
-:10A040002442000114620006000000008EE201C4F8
-:10A0500024420001AEE201C4080038508EE201C47F
-:10A060008EE201BC24420001AEE201BC080038507F
-:10A070008EE201BC97A4001E2484FFFC00801821FE
-:10A080008EE400C08EE500C40000102100A328214A
-:10A0900000A3302B00822021008620212402000210
-:10A0A000AEE400C0AEE500C41282000F2A820003B5
-:10A0B000144000172402000316820015000000005F
-:10A0C0008EE200D08EE300D4246300012C640001F2
-:10A0D00000441021AEE200D0AEE300D48EE200D006
-:10A0E0000800384A8EE300D48EE200D88EE300DC0C
-:10A0F000246300012C64000100441021AEE200D86A
-:10A10000AEE300DC8EE200D80800384A8EE300DCC3
-:10A110008EE200C88EE300CC246300012C640001B1
-:10A1200000441021AEE200C8AEE300CC8EE200C8CD
-:10A130008EE300CC8F8300E48F8200E01062000386
-:10A1400024630008AF8300E4AF8300E88FBF004CB6
-:10A150008FB600488FB500448FB400408FB3003CE9
-:10A160008FB200388FB100348FB0003003E00008A8
-:10A1700027BD005027BDFF90AFB600600000B021A2
-:10A18000AFBF0068AFBE0064AFB5005CAFB40058AD
-:10A19000AFB30054AFB20050AFB1004CAFB0004805
-:10A1A0008EE204D400008821241500013042000111
-:10A1B0001440002AA3A0002F8F8700E08F8800C4DE
-:10A1C0008F8200E800E220232C8210005040000122
-:10A1D00024841000000420C2008018218EE400C8EE
-:10A1E0008EE500CC0000102100A3282100A3302B15
-:10A1F0000082202100862021AEE400C8AEE500CC1C
-:10A200008F8300C83C02000A3442EFFF0103202381
-:10A210000044102B104000033C02000A3442F000BE
-:10A2200000822021008018218EE400C08EE500C449
-:10A230000000102100A3282100A3302B0082202140
-:10A2400000862021AEE400C0AEE500C4AF8800C89F
-:10A25000AF8700E408003C5BAF8700E83C020001E8
-:10A2600000571021904283C01040000B00000000F6
-:10A270003C130001027798218E7383C43C100001C7
-:10A28000021780218E1083C83C12000102579021D2
-:10A2900008003A598E5283CC8F8300E08F8200E40D
-:10A2A00010430007000038218F8200E424070001DA
-:10A2B0008C4300008C440004AFA30018AFA4001C22
-:10A2C00014E0000E3C02FFFF8F8200C4AFA200101A
-:10A2D0008F8200C83C040001248458B4AFA200144B
-:10A2E0008F8600E08F8700E43C0500060C00240305
-:10A2F00034A5F20008003C5B000000008FA3001CA6
-:10A300008FB200183073FFFF2673FFFC0062102429
-:10A3100010400058024080213C020080006210245E
-:10A320001040000A3C0400408EE2007C2442000100
-:10A33000AEE2007C8EE2007C8EE201FC2442000151
-:10A34000AEE201FC08003C558EE201FC3C06000434
-:10A350003C0B00013C0A00023C0500103C090008CF
-:10A360008EE200803C080020340780002442000177
-:10A37000AEE200808EE200808FA2001C0044182410
-:10A380001066002100C3102B1440000700000000DD
-:10A39000106B001100000000106A001500000000A2
-:10A3A00008003916000420421065002300A3102B7A
-:10A3B00014400005000000001069001900000000B2
-:10A3C0000800391600042042106800210000000037
-:10A3D00008003916000420428EE2003424420001B5
-:10A3E000AEE200348EE20034080039160004204248
-:10A3F0008EE201EC24420001AEE201EC8EE201ECBF
-:10A4000008003916000420428EE201F024420001C7
-:10A41000AEE201F08EE201F008003916000420429D
-:10A420008EE201F424420001AEE201F48EE201F476
-:10A4300008003916000420428EE200302442000158
-:10A44000AEE200308EE200300800391600042042EF
-:10A450008EE201F824420001AEE201F88EE201F83A
-:10A46000000420421087033E00000000080038DB93
-:10A47000000000003C02000100571021904283B20E
-:10A4800014400084240200013C03000100771821DD
-:10A49000906383B31462007F3C0201008E4300008E
-:10A4A000006210241040006F2402FFFF14620005B8
-:10A4B00024110001964300043402FFFF106200756E
-:10A4C0000000000092E204D8144000720000000076
-:10A4D0003C020001005710218C4283B42842000541
-:10A4E00010400020000038213C02000100571021DC
-:10A4F0008C4283B418400016000028219606000004
-:10A50000000520C0009710219442777E1446000970
-:10A510000097102194437780960200021462000590
-:10A52000009710219443778296020004506200083D
-:10A53000240700013C020001005710218C4283B423
-:10A5400024A5000100A2102A5440FFEE000520C0FF
-:10A5500030E200FF1040030200000000080039A2B2
-:10A5600000000000024020210C0022FE240500060D
-:10A570003044001F000428C002E510219442727C80
-:10A5800030424000144002F600B710219443727E1E
-:10A59000960200001462000B000418C000B71021DE
-:10A5A000944372809602000214620006000418C0F0
-:10A5B00000B71021944372829602000410620035A5
-:10A5C000000418C002E310219442727C30428000E3
-:10A5D000144002E302E31021944D727C96070000C0
-:10A5E000000D28C000B710219442737E0800398402
-:10A5F00000003021000420C002E410219443737C49
-:10A6000002E41021944D737C3063800014600010CC
-:10A61000000D28C000B710219442737E1447FFF547
-:10A6200001A0202100B710219443738096020002FC
-:10A630005462FFF1000420C000B7102194437382DC
-:10A64000960200045462FFEC000420C024060001BE
-:10A6500030C200FF104002C200000000080039A212
-:10A66000000000009743020296420000146202BC00
-:10A67000000000009743020496420002146202B8F0
-:10A68000000000009743020696420004146202B4E0
-:10A6900000000000924200003A2300013042000115
-:10A6A00000431024104000742402FFFF8E030000BA
-:10A6B000146200043402FFFF960300041062006F6E
-:10A6C000241500023C02000100571021904283B281
-:10A6D0001440006A2415000392E204D81440006775
-:10A6E000000000003C020001005710218C4283B49E
-:10A6F0002842000510400020000038213C020001E3
-:10A70000005710218C4283B4184000160000282105
-:10A7100096060000000520C0009710219442777E25
-:10A720001446000900971021944377809602000296
-:10A73000146200050097102194437782960200046A
-:10A7400050620008240700013C020001005710215C
-:10A750008C4283B424A5000100A2102A5440FFEECD
-:10A76000000520C030E200FF14400044241500031F
-:10A7700008003C5500000000024020210C0022FE91
-:10A78000240500063044001F000428C002E5102103
-:10A790009442727C304240001440027100B7102194
-:10A7A0009443727E960200001462000B000418C0ED
-:10A7B00000B71021944372809602000214620006D2
-:10A7C000000418C000B7102194437282960200045E
-:10A7D00010620027000418C002E310219442727C2A
-:10A7E000304280001440025E02E31021944D727CDE
-:10A7F00096070000000D28C000B710219442737E18
-:10A8000008003A0900003021000420C002E41021B1
-:10A810009443737C02E41021944D737C3063800078
-:10A8200014600010000D28C000B710219442737E00
-:10A830001447FFF501A0202100B710219443738035
-:10A84000960200025462FFF1000420C000B71021FC
-:10A8500094437382960200045462FFEC000420C00B
-:10A860002406000130C200FF1040023D000000003D
-:10A8700008003A1C24150003241500018F420260D1
-:10A880000053102B10400036000000008F8300E4BE
-:10A890008F8200E01062000324630008AF8300E4AD
-:10A8A000AF8300E88EE400C08EE500C4026018218A
-:10A8B0000000102100A3282100A3302B00822021BA
-:10A8C00000862021AEE400C0AEE500C48EE2005850
-:10A8D00024420001AEE200588EE200588EE2007C75
-:10A8E00024420001AEE2007C8EE2007C8F8200E018
-:10A8F000AFA200108F8200E43C040001248458C001
-:10A90000AFA200148FA600188FA7001C3C050006FC
-:10A910000C00240334A5F20308003C5B0000000097
-:10A920008EE25240AFA200108EE252443C0400017D
-:10A93000248458CCAFA200148EE60E108EE70E18B9
-:10A940003C0500060C00240334A5F2028EE201C08F
-:10A9500024420001AEE201C008003C028EE201C0C8
-:10A9600096E204680053102B544000013C1680000E
-:10A97000126001CB3C0E001F35CEFFFF3C0FFFF5F0
-:10A9800035EF1000241E00408EE2724C8F4302808F
-:10A9900024420001304207FF1062019E00000000C7
-:10A9A00012C00012000000008EE352408EE25244BA
-:10A9B0001062000A26F852448EF45244AFB80024C4
-:10A9C0008EE35244000211402442524802E28821A0
-:10A9D0002463000108003A85306D00FF8EE201E03B
-:10A9E00024420001AEE201E08EE201E08EE30E10AF
-:10A9F0008EE20E181062FFCA26F80E188EF40E189A
-:10AA00000000B021AFB800248EE30E180002114000
-:10AA100024420E2002E2882124630001306D01FFF0
-:10AA200096E2046A3042001010400018340281009F
-:10AA30009643000C14620015000000003C02000167
-:10AA400000571021904283C0144000100000000005
-:10AA50009642000EA62200168E4200088E43000485
-:10AA60008E4400002673FFFCAE42000CAE4300088B
-:10AA7000AE4400049622000E2610000424180001A3
-:10AA8000A3B8002F34420200A622000E8E2200003E
-:10AA90008E2300043C04000134843800020030217D
-:10AAA000306A0007020A8023036410210202102B7F
-:10AAB00010400005026A9821020410230362182343
-:10AAC0003C02002000438023266200079623000AF0
-:10AAD0002418FFF80058C824006A18210079102BA8
-:10AAE00010400002032060210060602101801821D5
-:10AAF000246200072418FFF800586024026C102B11
-:10AB000014400004019328230183282308003AC33A
-:10AB100000C3102100D31021004A202301C4102BB0
-:10AB200054400001008F202125420040004C102B92
-:10AB3000144000350000582194C3000C2402080082
-:10AB400054620032AE2600183C020001005710216A
-:10AB5000904283C05440002DAE26001824C2001736
-:10AB600001C2102B10400013000000003C02FFF552
-:10AB70000046102190421017384300062C63000154
-:10AB8000384200112C4200010062182510600014A8
-:10AB900024C2001001C2102B1040000E0000000063
-:10ABA0003C0BFFF501665821956B101008003AF434
-:10ABB0002562000E90C20017384300062C63000186
-:10ABC000384200112C420001006218251060000577
-:10ABD0000160182194CB00102562000E004A582114
-:10ABE00001601821246200072418FFF80058582437
-:10ABF00000C31021004A202301C4102B1040000282
-:10AC000001632823008F2021AE2600183C0200019A
-:10AC100000571021904283C00002102B000216C082
-:10AC200015600002AFA2004401805821308200016B
-:10AC3000104000070000402190880000248400019B
-:10AC400001C4102B1040000224A5FFFF008F20211B
-:10AC500050A0001200081C022CA20002544000095F
-:10AC600024A5FFFF948200002484000201024021F9
-:10AC700001C4102B1040000624A5FFFE08003B2154
-:10AC8000008F20219082000000021200010240216A
-:10AC900014A0FFF22CA2000200081C023102FFFFE8
-:10ACA000006240213108FFFF0140282111400011BE
-:10ACB000020020212CA200025440000924A5FFFF1D
-:10ACC00094820000248400020102402101C4102B60
-:10ACD0001040000624A5FFFE08003B38008F20210D
-:10ACE00090820000000212000102402114A0FFF235
-:10ACF0002CA2000200081C023102FFFF006240216A
-:10AD000000081C023102FFFF8F89012000624021F0
-:10AD100027623800252300200062102B1440000217
-:10AD20003108FFFF276330008F8201281062000482
-:10AD3000000000008F8201241462000701402821D6
-:10AD40008EE201A40000382124420001AEE201A4F9
-:10AD500008003BC98EE201A48E2600008E27000465
-:10AD6000000814003448000BAD300008A52B000E7D
-:10AD7000AD2800188FB8004400002021029610254D
-:10AD800000581025AD22001C00E5102B00E53823EB
-:10AD900000C4302300C23023AD260000AD270004DC
-:10ADA0008EE204C0AD220010AF83012092E24E205B
-:10ADB0001440005F240700012502FFEE2C42000230
-:10ADC00014400003240200111502002400000000BA
-:10ADD0008EE24E30000210C02442503802E22021A0
-:10ADE0008C830000240200121462000F0000000097
-:10ADF0008EE34E308EE24E341062000B00000000F5
-:10AE00008C82000424420001AC8200048EE24E34A5
-:10AE10008EE34E3024420001105E002A0000000044
-:10AE200008003BA8000000008EE24E3024420001E2
-:10AE3000505E0003000010218EE24E3024420001DB
-:10AE4000AEE24E308EE24E30000210C02442503846
-:10AE500002E2202108003BC6240200128EE24E309E
-:10AE6000000210C02442503802E220218C830000EE
-:10AE7000240200071462001F000000008EE34E3021
-:10AE80008EE24E341062001B000000008C82000431
-:10AE900024420001AC8200048EE24E348EE34E3038
-:10AEA00024420001105E0007000000008EE24E34D4
-:10AEB00024420001106200050000000008003BB4BD
-:10AEC0000000000014600005000000008F820128CF
-:10AED00024420020AF8201288F8201288C82000446
-:10AEE0002C42001150400012AC80000008003BC909
-:10AEF000000000008EE24E3024420001505E00034C
-:10AF0000000010218EE24E3024420001AEE24E30AD
-:10AF10008EE24E30000210C02442503802E220215E
-:10AF200024020007AC82000024020001AC8200046D
-:10AF300014E000193C0500063C04000124845890EC
-:10AF40008E22001834A5F209AFA200108E22000054
-:10AF50008E23000402203021016038210C002403DC
-:10AF6000AFA3001493A2002F1040002A34028100E6
-:10AF70008E4300048E4400088E45000CA642000C4F
-:10AF8000AE430000AE440004AE4500089622001611
-:10AF900008003C02A642000E1599000A026A182316
-:10AFA0009622000EA623000A34420004A622000EB8
-:10AFB0003C01000100370821A02083C008003BFFAE
-:10AFC000000098219624000A0083102B54400001B1
-:10AFD0000080182124020001A623000A3C01000180
-:10AFE00000370821A02283C09622000A004A1821B7
-:10AFF0000203802101D0102B54400001020F802158
-:10B00000026398230000B0218FB800241660FE5E12
-:10B01000AF0D000012600022000000003C010001A2
-:10B0200000370821AC3383C43C01000100370821FC
-:10B03000AC3083C83C01000100370821AC3283CC1E
-:10B0400093A2002F10400008000000003C02000105
-:10B05000005710218C4283CC244200043C010001A3
-:10B0600000370821AC2283CC8F4302808EE2724CE1
-:10B0700014620006000000008EE201C424420001B8
-:10B08000AEE201C408003C5B8EE201C48EE201BC6A
-:10B0900024420001AEE201BC08003C5B8EE201BC30
-:10B0A00097A4001E2484FFFC008018218EE400C0B9
-:10B0B0008EE500C40000102100A3282100A3302B3E
-:10B0C000008220210086202124020002AEE400C07C
-:10B0D000AEE500C412A2000F2AA20003144000171C
-:10B0E0002402000316A20015000000008EE200D02A
-:10B0F0008EE300D4246300012C640001004410217D
-:10B10000AEE200D0AEE300D48EE200D008003C55A1
-:10B110008EE300D48EE200D88EE300DC24630001CD
-:10B120002C64000100441021AEE200D8AEE300DC44
-:10B130008EE200D808003C558EE300DC8EE200C8A9
-:10B140008EE300CC246300012C6400010044102134
-:10B15000AEE200C8AEE300CC8EE200C88EE300CCC5
-:10B160008F8300E48F8200E01062000324630008F4
-:10B17000AF8300E4AF8300E88FBF00688FBE006438
-:10B180008FB600608FB5005C8FB400588FB3005449
-:10B190008FB200508FB1004C8FB0004803E0000820
-:10B1A00027BD007027BDFFE0AFBF00188EE30E146F
-:10B1B0008EE20E0C10620074000000008EE30E0C94
-:10B1C0008EE20E1400622023048200012484020017
-:10B1D0008EE30E188EE20E140043102B1440000470
-:10B1E000240202008EE30E1408003C7D0043182365
-:10B1F0008EE20E188EE30E14004310232443FFFF4B
-:10B20000008048210069102A544000010060482154
-:10B210008F8701002762300024E800200102102BF4
-:10B2200050400001276828008F82010811020004A5
-:10B23000000000008F8201041502000700001021A9
-:10B240008EE201A80000202124420001AEE201A804
-:10B2500008003CBF8EE201A88EE40E1400042140D9
-:10B26000008018218EE404608EE5046400A3282188
-:10B2700000A3302B0082202100862021ACE40000B6
-:10B28000ACE500048EE30E1400091140A4E2000EA8
-:10B2900024020002ACE200180003194024630E20CF
-:10B2A00002E31021ACE200088EE20E14ACE2001CB6
-:10B2B0008EE204CCACE20010AF88010092E204EC14
-:10B2C00014400011240400018EE24E2824030040A3
-:10B2D0002442000150430003000010218EE24E285A
-:10B2E00024420001AEE24E288EE24E28000210C039
-:10B2F00024424E3802E2182124020002AC6200000F
-:10B3000024020001AC6200041480000E24030040FB
-:10B310008EE20E14AFA200108EE20E183C0500075C
-:10B32000AFA200148EE60E0C8EE70E103C04000156
-:10B33000248458D40C00240334A5F00108003CDD1B
-:10B34000000000008EE2050024420001504300038B
-:10B35000000010218EE2050024420001AEE205004B
-:10B360008EE205000002108000571021AC4905084C
-:10B370008EE20E1400491021304201FFAEE20E149D
-:10B380008EE30E148EE20E0C146200050000000025
-:10B390008F8200602403FDFF00431024AF82006011
-:10B3A0008FBF001803E0000827BD002027BDFFE085
-:10B3B000AFBF00188EE3523C8EE252381062007428
-:10B3C000000000008EE352388EE2523C00622023DF
-:10B3D00004820001248401008EE352448EE2523C38
-:10B3E0000043102B14400004240201008EE3523C61
-:10B3F00008003CFF004318238EE252448EE3523C87
-:10B40000004310232443FFFF008048210069102AD5
-:10B4100054400001006048218F87010027623000FE
-:10B4200024E800200102102B50400001276828006A
-:10B430008F82010811020004000000008F820104C5
-:10B4400015020007000010218EE201A80000202153
-:10B4500024420001AEE201A808003D418EE201A8AD
-:10B460008EE4523C00042140008018218EE40470D8
-:10B470008EE5047400A3282100A3302B0082202134
-:10B4800000862021ACE40000ACE500048EE3523CD1
-:10B4900000091140A4E2000E24020003ACE20018EF
-:10B4A000000319402463524802E31021ACE2000873
-:10B4B0008EE2523CACE2001C8EE204CCACE2001006
-:10B4C000AF88010092E204EC144000112404000152
-:10B4D0008EE24E2824030040244200015043000322
-:10B4E000000010218EE24E2824420001AEE24E28D8
-:10B4F0008EE24E28000210C024424E3802E218218B
-:10B5000024020003AC62000024020001AC620004CB
-:10B510001480000E240300408EE2523CAFA20010C3
-:10B520008EE252443C050007AFA200148EE652386A
-:10B530008EE752403C040001248458E00C002403B0
-:10B5400034A5F01008003D5F000000008EE2050009
-:10B550002442000150430003000010218EE2050048
-:10B5600024420001AEE205008EE2050000021080D8
-:10B5700000571021AC4905088EE2523C00491021C9
-:10B58000304200FFAEE2523C8EE3523C8EE2523833
-:10B5900014620005000000008F8200602403FEFF9B
-:10B5A00000431024AF8200608FBF001803E0000842
-:10B5B00027BD00208F8201208EE34E348F8201242C
-:10B5C0008F8601282402004024630001506200039A
-:10B5D000000010218EE24E3424420001AEE24E34CF
-:10B5E0008EE24E348EE44E348EE34E30000210C0B4
-:10B5F000244250381483000702E228218F82012858
-:10B6000024420020AF8201288F82012808003D9249
-:10B61000ACA000008EE24E3424030040244200011E
-:10B6200050430003000010218EE24E3424420001FA
-:10B63000000210C02442503802E228218CA20004EB
-:10B640008F8301280002114000621821AF83012876
-:10B65000ACA000008CC200182443FFFE2C62001234
-:10B6600010400008000310803C0100010022082166
-:10B670008C2258F000400008000000002402000165
-:10B68000AEE24E2403E000080000000027BDFFC822
-:10B69000AFBF0030AFB5002CAFB40028AFB300246B
-:10B6A000AFB20020AFB1001CAFB000188F830128EB
-:10B6B0008F820124106202B0000098213C11001F0B
-:10B6C0003631FFFF3C12FFF53652100024150012F0
-:10B6D000241400408F8C01288F82012824420020EE
-:10B6E000AF8201289182001B8F8301282443FFFE33
-:10B6F0002C6200121040029C000310803C010001EB
-:10B70000002208218C225948004000080000000057
-:10B710008F42021830420100104000070000000074
-:10B720009583001695820018006218230003140206
-:10B7300000431021A58200168D82001C3C0380006E
-:10B740003044FFFF004368243C03080000431824F2
-:10B7500011A00004AD84001C0004114008003DD875
-:10B76000244252480004114024420E2002E2582193
-:10B770009562000E3042FFFC10600004A562000ECE
-:10B780009584001608003EC0000000008D69001876
-:10B7900000004021952A000025290002952700007D
-:10B7A0002529000295260000252900029525000084
-:10B7B0002529000295240000252900029523000078
-:10B7C0002529000295220000252900020147502169
-:10B7D000014650210145502101445021014350218F
-:10B7E00001425021000A1C023142FFFF0062502139
-:10B7F000000A1C023142FFFF0062502196E2046AF7
-:10B80000314EFFFF30420002104000440000502142
-:10B81000252200140222102B1040001401201821B0
-:10B820002405000A000020210223102B54400001AF
-:10B8300000721821946200002463000224A5FFFF17
-:10B8400014A0FFF90082202100041C023082FFFFB7
-:10B8500000622021000414023083FFFF0043102106
-:10B860003042FFFF08003E3301425021952A00007C
-:10B8700025290002952800002529000295270000AF
-:10B8800025290002952600002529000295250000A3
-:10B890002529000295230000252900029522000099
-:10B8A0002529000295240000252900020148502185
-:10B8B00001475021014650210145502101435021AB
-:10B8C000014250219522000095230002014450219D
-:10B8D0000142502101435021000A1C023142FFFF66
-:10B8E00000625021000A1C023142FFFF0062502119
-:10B8F0003148FFFF510000013408FFFF8D6200183E
-:10B900009443000C2402080054620005A56800104E
-:10B910009562000E34420002A562000EA568001078
-:10B9200096E2046A000028213042000814400056C4
-:10B93000000030218D630018246200240222102BA5
-:10B9400010400034246900100229102B54400001DB
-:10B950000132482195250000246900140229102B8A
-:10B960001040000224A5FFEC01324821952200007E
-:10B9700030420FFF144000032529000208003E60FA
-:10B98000241300010000982100A030210229102B6F
-:10B990005440000101324821912200012529000272
-:10B9A00000A228210229102B544000010132482115
-:10B9B000252900020229102B5440000101324821A0
-:10B9C000952200002529000200A228210229102B1F
-:10B9D000544000010132482195220000252900022F
-:10B9E00000A228210229102B5440000101324821D5
-:10B9F000952200002529000200A228210229102BEF
-:10BA000054400001013248219522000008003E996F
-:10BA100000A2282194650010946200142469001685
-:10BA200030420FFF1440000324A5FFEC08003E8CB9
-:10BA3000241300010000982100A03021912300016F
-:10BA400025290004952200002529000295240000E4
-:10BA50002529000200A3282100A228219522000008
-:10BA60009523000200A4282100A2282100A3282158
-:10BA700000051C0230A2FFFF0062282100051C0205
-:10BA800030A2FFFF0062282196E2046A30420001E2
-:10BA90001040001E0000202195820016004E202339
-:10BAA0000004140200822021326200FF5040000294
-:10BAB000008620210085202100041402008220211C
-:10BAC0003084FFFF508000013404FFFF8D620018B6
-:10BAD000244300170223102B544000010072182148
-:10BAE00090620000384300112C63000138420006C8
-:10BAF0002C420001006218251060000400000000C4
-:10BB00009562000E34420001A562000E9562000E9F
-:10BB1000240A00023042000410400002A564001212
-:10BB2000240A00048F88012027623800250900209C
-:10BB30000122102B50400001276930008F8201281C
-:10BB400011220004000000008F820124152200074A
-:10BB5000240400208EE201A4000080212442000180
-:10BB6000AEE201A408003F4F8EE201A48EE5724CC4
-:10BB70008EE604908EE70494AD0B0008A504000E39
-:10BB8000AD0A00180005294000A01821000010216E
-:10BB900000E3382100E3202B00C2302100C4302113
-:10BBA000AD060000AD0700048EE2724C004D10257A
-:10BBB000AD02001C8EE204C4AD020010AF8901206A
-:10BBC00092E24E2014400060241000012543FFEE55
-:10BBD0002C630002394200112C420001006218253A
-:10BBE00010600024000000008EE24E30000210C001
-:10BBF0002442503802E220218C8200001455000FAC
-:10BC0000000000008EE34E308EE24E341062000BD6
-:10BC1000000000008C82000424420001AC82000479
-:10BC20008EE24E348EE34E30244200011054002B3D
-:10BC30000000000008003F2E000000008EE24E30A1
-:10BC40002442000150540003000010218EE24E30C7
-:10BC500024420001AEE24E308EE24E30000210C0AF
-:10BC60002442503802E220212402000108003F4E05
-:10BC7000AC9500008EE24E30000210C024425038D5
-:10BC800002E220218C830000240200071462001FBE
-:10BC9000000000008EE34E308EE24E341062001B36
-:10BCA000000000008C82000424420001AC820004E9
-:10BCB0008EE24E348EE34E302442000110540007D1
-:10BCC000000000008EE24E342442000110620005A4
-:10BCD0000000000008003F3A00000000146000056A
-:10BCE000000000008F82012824420020AF8201283A
-:10BCF0008F8201288C8200042C42001150400012D7
-:10BD0000AC80000008003F4F000000008EE24E3083
-:10BD10002442000150540003000010218EE24E30F6
-:10BD200024420001AEE24E308EE24E30000210C0DE
-:10BD30002442503802E2202124020007AC82000095
-:10BD400024020001AC8200041600000D0000000077
-:10BD50008F8201203C04000124845938AFA00014D4
-:10BD6000AFA200108D86001C8F8701243C050008BF
-:10BD70000C00240334A50001080040570000000017
-:10BD80008EE2724C24420001304207FF11A00006EF
-:10BD9000AEE2724C8EE201D02442FFFFAEE201D04F
-:10BDA00008003F6B8EE201D08EE201CC2442FFFFFF
-:10BDB000AEE201CC8EE201CC8EE201D82442FFFF3C
-:10BDC000AEE201D8080040578EE201D88F4202400F
-:10BDD000104000E5000000008EE20E1C244200012D
-:10BDE00008004057AEE20E1C9582001EAD82001C7A
-:10BDF0008F42024010400072000000008EE20E1CD4
-:10BE000024420001AEE20E1C8F4302400043102B7F
-:10BE1000144000D5000000008F8301202762380005
-:10BE20002466002000C2102B50400001276630001D
-:10BE30008F82012810C20004000000008F820124BC
-:10BE400014C20007000000008EE201A4000080215F
-:10BE500024420001AEE201A408003FDA8EE201A410
-:10BE60008EE2724CAC62001C8EE404A88EE504AC39
-:10BE70002462001CAC62000824020008A462000EC8
-:10BE800024020011AC620018AC640000AC65000430
-:10BE90008EE204C4AC620010AF86012092E24E2014
-:10BEA00014400034241000018EE24E30000210C015
-:10BEB0002442503802E220218C8200001455001FD9
-:10BEC000000000008EE34E308EE24E341062001B04
-:10BED000000000008C82000424420001AC820004B7
-:10BEE0008EE24E348EE34E3024420001105400079F
-:10BEF000000000008EE24E34244200011062000572
-:10BF00000000000008003FC60000000014600005AB
-:10BF1000000000008F82012824420020AF82012807
-:10BF20008F8201288C8200042C42001150400011A5
-:10BF3000AC80000008003FDA000000008EE24E30C6
-:10BF40002442000150540003000010218EE24E30C4
-:10BF500024420001AEE24E308EE24E30000210C0AC
-:10BF60002442503802E2202124020001AC95000056
-:10BF7000AC8200045600000B241000018EE2724CCB
-:10BF80003C040001248458A8AFA00014AFA2001004
-:10BF90008EE6724C8F4702803C0500090C0024039A
-:10BFA00034A5F00856000001AEE00E1C8EE20188B8
-:10BFB00024420001AEE20188080040508EE2018870
-:10BFC0008F830120276238002466002000C2102BD6
-:10BFD00050400001276630008F82012810C2000403
-:10BFE000000000008F82012414C20007000000003E
-:10BFF0008EE201A40000802124420001AEE201A4EF
-:10C00000080040448EE201A48EE2724CAC62001C37
-:10C010008EE404A88EE504AC2462001CAC62000827
-:10C0200024020008A462000E24020011AC62001871
-:10C03000AC640000AC6500048EE204C4AC62001085
-:10C04000AF86012092E24E201440003424100001FB
-:10C050008EE24E30000210C02442503802E220210D
-:10C060008C8200001455001F000000008EE34E304B
-:10C070008EE24E341062001B000000008C8200042F
-:10C0800024420001AC8200048EE24E348EE34E3036
-:10C090002442000110540007000000008EE24E34DC
-:10C0A000244200011062000500000000080040303A
-:10C0B0000000000014600005000000008F820128CD
-:10C0C00024420020AF8201288F8201288C82000444
-:10C0D0002C42001150400011AC8000000800404488
-:10C0E000000000008EE24E30244200015054000354
-:10C0F000000010218EE24E3024420001AEE24E30AC
-:10C100008EE24E30000210C02442503802E220215C
-:10C1100024020001AC950000AC8200041600000B64
-:10C12000000000008EE2724C3C040001248458A8F8
-:10C13000AFA00014AFA200108EE6724C8F470280B1
-:10C140003C0500090C00240334A5F0088EE20174BC
-:10C1500024420001AEE20174080040578EE20174EF
-:10C1600024020001AEE24E248F8301288F82012435
-:10C170001462FD58000000008FBF00308FB5002C06
-:10C180008FB400288FB300248FB200208FB1001C21
-:10C190008FB0001803E0000827BD003827BDFFE876
-:10C1A000278402082745020024060008AFBF0014B8
-:10C1B0000C00249AAFB000100000202124100001D0
-:10C1C0002402241FAF900210AF900200AF8002043F
-:10C1D000AF8202148F460248240300043C02004050
-:10C1E0003C010001AC235CC43C010001AC235CC8F1
-:10C1F0003C010001AC205D9C3C010001AC225CC014
-:10C200003C010001AC235CC80C005108240500046B
-:10C210000C004822000000008EE200003C03FEFFFC
-:10C220003463FFFD00431024AEE200003C023C00FA
-:10C23000AF82021C3C01000100370821AC3083AC06
-:10C240008FBF00148FB0001003E0000827BD001856
-:10C2500027BDFFE03C05000834A50400AFBF00186F
-:10C26000AFA00010AFA000148F8602003C040001B4
-:10C27000248459F00C002403000038218EE202804F
-:10C2800024420001AEE202808EE202808F8302002F
-:10C290003C023F00006218248FBF00183C020400DB
-:10C2A00003E0000827BD002027BDFFD8AFBF002056
-:10C2B000AFB1001CAFB000188F9002208EE20214C4
-:10C2C0000000382124420001AEE202148EE2021482
-:10C2D0003C02030002021024104000273C1104001D
-:10C2E0000C00429B000000003C02010002021024EE
-:10C2F00010400007000000008EE2021824420001F6
-:10C30000AEE202188EE20218080040C63C03FDFFB0
-:10C310008EE2021C24420001AEE2021C8EE2021CEC
-:10C320003C03FDFF3463FFFF3C0808FF3508FFFFB7
-:10C330008EE200003C040001248459FC3C05000806
-:10C340000200302100431024AEE200008F82022060
-:10C35000000038213C03030000481024004310254E
-:10C36000AF820220AFA000100C002403AFA0001485
-:10C370000800429600000000021110241040001F27
-:10C380003C0240008F830224240214021462000B3A
-:10C390003C03FDFF3C04000124845A083C050008CE
-:10C3A000AFA00010AFA000148F86022434A5FFFFB9
-:10C3B0000C002403000038213C03FDFF8EE2000046
-:10C3C0003463FFFF02002021004310240C004E5470
-:10C3D000AEE200008EE2022024420001AEE2022022
-:10C3E0008EE202208F8202203C0308FF3463FFFFAD
-:10C3F0000043102408004295005110250202102429
-:10C4000010400142000000008EE2022C2442000194
-:10C41000AEE2022C8EE2022C8F8202203C0308FF47
-:10C420003463FFFF0043102434420004AF82022033
-:10C430008F8300548F8200540800410E2463000251
-:10C440008F820054006210232C4200031440FFFC32
-:10C45000000000008F8600E08F8400E430C20007F7
-:10C4600010400012000000008F8300E42402FFF857
-:10C4700000C210241043000D000000008F82005401
-:10C480008F8300E014C30009244400508F820054BD
-:10C49000008210232C4200511040000400000000D4
-:10C4A0008F8200E010C2FFF9000000008F8202209E
-:10C4B0003C0308FF3463FFFD00431024AF820220D9
-:10C4C0008F8600E030C20007104000032402FFF80E
-:10C4D00000C23024AF8600E08F8300C43C02001FFE
-:10C4E0003442FFFF246800080048102B104000036E
-:10C4F0003C02FFF534421000010240218F8B00C83E
-:10C500008F8501208F8401240800414500006021AF
-:10C51000276238000082102B504000012764300051
-:10C5200010A40010318200FF8C82001838430007ED
-:10C530002C6300013842000B2C42000100621825D8
-:10C540005060FFF3248400208EE20240240C00019E
-:10C5500024420001AEE202408EE202408C8B0008D1
-:10C56000318200FF14400065000000003C02000121
-:10C5700000571021904283C014400060000000006A
-:10C580008F8400E400C41023000218C30462000179
-:10C59000246302008F8900C410600005240200019A
-:10C5A0001062000900000000080041870000000040
-:10C5B0008EE202300120582124420001AEE2023016
-:10C5C000080041BC8EE202308EE202343C05000AD3
-:10C5D00024420001AEE202348C8B000034A5F0004E
-:10C5E0008EE20234012B182300A3102B54400001CB
-:10C5F000006518212C62233F144000400000000019
-:10C600008F8200E824420008AF8200E88F8200E8B1
-:10C610008F8200E40120582124420008AF8200E408
-:10C62000080041BC8F8200E48EE202383C03000A1D
-:10C6300024420001AEE202388C8400003463F00032
-:10C640008EE20238008838230067102B5440000126
-:10C6500000E338213C02000334420D400047102B18
-:10C660001040000300000000080041BC0080582179
-:10C670008F8200E424440008AF8400E48F8400E447
-:10C68000108600183C05000A34A5F0003C0A00039F
-:10C69000354A0D408EE2007C24420001AEE2007C6F
-:10C6A0008C8300008EE2007C0068382300A7102BEA
-:10C6B0005440000100E538210147102B5440000789
-:10C6C000006058218F8200E424440008AF8400E415
-:10C6D0008F8400E41486FFEF00000000148600053C
-:10C6E0000000000001205821AF8600E4080041BC92
-:10C6F000AF8600E8AF8400E4AF8400E88F8200C812
-:10C700003C03000A3463F000004838230067102B14
-:10C710005440000100E338213C02000334420D3F45
-:10C720000047102B544000070000602101683823A7
-:10C730000067102B5440000300E33821080041CF6C
-:10C740003C0200033C02000334420D3F0047102B23
-:10C7500014400016318200FF144000060000000063
-:10C760003C02000100571021904283C01040000F8E
-:10C77000000000008EE2023C3C04FDFF8EE300005E
-:10C780003484FFFF24420001AEE2023C8EE2023C10
-:10C7900024020001006418243C0100010037082134
-:10C7A000A02283B80800422CAEE30000AF8B00C883
-:10C7B0008F8300C88F8200C43C04000A3484F000D8
-:10C7C000006238230087102B5440000100E4382118
-:10C7D0003C02000334420D400047102B2CE30001C3
-:10C7E0000043102510400008000000008F82022046
-:10C7F0003C0308FF3463FFFF004310243C03400068
-:10C8000000431025AF8202208F8600E08F8400E471
-:10C8100010C4002A000000008EE2007C24420001C7
-:10C82000AEE2007C8EE2007C24C2FFF8AF8200E022
-:10C830003C0200018C427E303C0300088F8600E001
-:10C84000004310241040001D0000000010C4001B15
-:10C85000240DFFF83C0A000A354AF0003C0C008029
-:10C86000248500082762280050A2000127651800CF
-:10C870008C8800048C8200008CA900003103FFFF2B
-:10C8800000431021004D102424430010006B102B96
-:10C8900054400001006A1821012B102B5440000164
-:10C8A000012A482110690002010C1025AC82000405
-:10C8B00000A0202114C4FFEB248500088F820220F1
-:10C8C0003C0308FF3463FFFF00431024344200029E
-:10C8D000AF8202208F8300548F82005408004237B9
-:10C8E000246300018F820054006210232C42000256
-:10C8F0001440FFFC000000008F8202203C0308FF70
-:10C900003463FFFB00431024AF8202200601005570
-:10C91000000000008EE2022824420001AEE202285C
-:10C920008EE202288F8202203C0308FF3463FFFF5F
-:10C930000043102434420004AF8202208F8300544D
-:10C940008F82005408004251246300028F820054F9
-:10C95000006210232C4200031440FFFC0000000082
-:10C960008F8600E030C20007104000120000000077
-:10C970008F8300E42402FFF800C210241043000D4E
-:10C98000000000008F8200548F8300E014C3000970
-:10C99000244400328F820054008210232C42003342
-:10C9A00010400004000000008F8200E010C2FFF978
-:10C9B000000000008F8202203C0308FF3463FFFD6B
-:10C9C00000431024AF8202208F8600E030C20007AF
-:10C9D000104000032402FFF800C23024AF8600E0BC
-:10C9E000240301F58F8200E800673823000718C090
-:10C9F00000431021AF8200E88F8200E8AF8200E49C
-:10CA00008EE2007C3C0408FF3484FFFF00471021C5
-:10CA1000AEE2007C8F8202203C038000346300027F
-:10CA20000044102400431025AF8202208F8300545D
-:10CA30008F8200540800428D246300018F820054CD
-:10CA4000006210232C4200021440FFFC0000000092
-:10CA50008F8202203C0308FF3463FFFB0043102455
-:10CA6000AF8202208FBF00208FB1001C8FB0001852
-:10CA700003E0000827BD00283C0200018C425CD87E
-:10CA800027BDFFD810400012AFBF00203C040001BA
-:10CA900024845A143C050008240200013C010001D2
-:10CAA00000370821AC2283ACAFA00010AFA0001467
-:10CAB0008F86022034A504983C010001AC205CD88C
-:10CAC0003C010001AC225CCC0C00240300003821A6
-:10CAD0008F4202683C037FFF3463FFFF0043102452
-:10CAE000AF4202688EE204D08EE404D42403FFFE39
-:10CAF00000431024308400021080011EAEE204D0F6
-:10CB00008EE204D42403FFFD00431024AEE204D4DB
-:10CB10008F8200443C03060034632000344200202E
-:10CB2000AF820044AFA300188EE206088F430228AC
-:10CB300024420001304A00FF514300FEAFA0001024
-:10CB40008EE20608000210C0005710218FA30018C3
-:10CB50008FA4001CAC43060CAC4406108F83005419
-:10CB60008F82005424690032012210232C420033AA
-:10CB70001040006A0000582124180008240F000DFE
-:10CB8000240D0007240C0040240E00018F87012093
-:10CB90002762380024E800200102102B50400001D9
-:10CBA000276830008F820128110200040000000075
-:10CBB0008F82012415020007000010218EE201A4DB
-:10CBC0000000282124420001AEE201A40800433DF8
-:10CBD0008EE201A48EE40608000420C00080182123
-:10CBE0008EE404308EE5043400A3282100A3302B0A
-:10CBF0000082202100862021ACE40000ACE5000486
-:10CC00008EE20608A4F8000EACEF0018ACEA001C97
-:10CC1000000210C02442060C02E21021ACE200081F
-:10CC20008EE204C4ACE20010AF88012092E24E20F4
-:10CC300014400033240500018EE24E30000210C083
-:10CC40002442503802E220218C820000144D001F43
-:10CC5000000000008EE34E308EE24E341062001B66
-:10CC6000000000008C82000424420001AC82000419
-:10CC70008EE24E348EE34E3024420001104C000709
-:10CC8000000000008EE24E342442000110620005D4
-:10CC9000000000000800432A0000000014600005A6
-:10CCA000000000008F82012824420020AF8201286A
-:10CCB0008F8201288C8200042C4200115040001009
-:10CCC000AC8000000800433D000000008EE24E30C2
-:10CCD00024420001504C0003000010218EE24E302F
-:10CCE00024420001AEE24E308EE24E30000210C00F
-:10CCF0002442503802E22021AC8D0000AC8E0004AA
-:10CD000054A00006240B00018F820054012210233E
-:10CD10002C4200331440FF9D00000000316300FFEF
-:10CD20002402000154620079AFA00010AEEA0608A8
-:10CD30008F8300548F820054246900320122102313
-:10CD40002C4200331040006100005821240D0008DF
-:10CD5000240C00112408001224070040240A0001BA
-:10CD60008F830120276238002466002000C2102B28
-:10CD700050400001276630008F82012810C2000455
-:10CD8000000000008F82012414C200070000000090
-:10CD90008EE201A40000282124420001AEE201A499
-:10CDA000080043A98EE201A48EE20608AC62001CD2
-:10CDB0008EE404A08EE504A42462001CAC6200088A
-:10CDC000A46D000EAC6C0018AC640000AC650004EF
-:10CDD0008EE204C4AC620010AF86012092E24E20C5
-:10CDE00014400033240500018EE24E30000210C0D2
-:10CDF0002442503802E220218C8200001448001F97
-:10CE0000000000008EE34E308EE24E341062001BB4
-:10CE1000000000008C82000424420001AC82000467
-:10CE20008EE24E348EE34E3024420001104700075C
-:10CE3000000000008EE24E34244200011062000522
-:10CE40000000000008004396000000001460000588
-:10CE5000000000008F82012824420020AF820128B8
-:10CE60008F8201288C8200042C4200115040001057
-:10CE7000AC800000080043A9000000008EE24E30A4
-:10CE80002442000150470003000010218EE24E3082
-:10CE900024420001AEE24E308EE24E30000210C05D
-:10CEA0002442503802E22021AC880000AC8A000401
-:10CEB00054A00006240B00018F820054012210238D
-:10CEC0002C4200331440FFA600000000316300FF35
-:10CED0002402000154620003AFA00010080043D6F2
-:10CEE000000000003C04000124845A20AFA000147C
-:10CEF0008F8601208F8701243C0500090C00240344
-:10CF000034A5F011080043D6000000003C040001E5
-:10CF100024845A2CAFA000148F8601208F8701240F
-:10CF20003C0500090C00240334A5F010080043D68A
-:10CF3000000000003C04000124845A38AFA0001413
-:10CF40008EE606088F4702283C0500090C002403E2
-:10CF500034A5F00F8EE201AC24420001AEE201AC38
-:10CF60008EE201AC8EE2015C24420001AEE2015C83
-:10CF70008EE2015C8FBF002003E0000827BD00287F
-:10CF80003C0200018C425CD827BDFFE01440000D3C
-:10CF9000AFBF00183C04000124845A443C0500083B
-:10CFA000AFA00010AFA000148F86022034A5049912
-:10CFB000240200013C010001AC225CD80C002403D7
-:10CFC000000038218EE204D03C03000100771821D4
-:10CFD000946383B23442000110600007AEE204D0D3
-:10CFE0008F8202203C0308FF3463FFFF00431024BC
-:10CFF00034420008AF820220000020210C0052A21F
-:10D0000024050004AF4202688FBF001803E0000847
-:10D0100027BD00200000000000000000000000000C
-:10D020000000000000000000000000000000000000
-:10D0300000000000000000000000000000000000F0
-:10D0400000000000000000000000000000000000E0
-:10D0500000000000000000000000000000000000D0
-:10D0600000000000000000000000000000000000C0
-:10D0700000000000000000000000000000000000B0
-:10D0800000000000000000000000000000000000A0
-:10D090000000000000000000000000000000000090
-:10D0A0000000000000000000000000000000000080
-:10D0B0000000000000000000000000000000000070
-:10D0C0000000000000000000000000000000000060
-:10D0D0000000000000000000000000000000000050
-:10D0E0000000000000000000000000000000000040
-:10D0F0000000000000000000000000000000000030
-:10D100000000000000000000000000003C120001D0
-:10D11000265212003C1400018E945C503C10000119
-:10D12000261011203C15C00036B500608E8A000024
-:10D130008EB30000026A400B0248000A0200F82188
-:10D14000000000000000000D0000000000000000D2
-:10D1500000000000000000000000000000000000CF
-:10D1600000000000000000000000000000000000BF
-:10D1700000000000000000000000000000000000AF
-:10D18000000000000000000000000000000000009F
-:10D19000000000000000000000000000000000008F
-:10D1A000000000000000000000000000000000007F
-:10D1B000000000000000000000000000000000006F
-:10D1C000000000000000000000000000000000005F
-:10D1D000000000000000000000000000000000004F
-:10D1E000000000000000000000000000000000003F
-:10D1F000000000000000000000000000000000002F
-:10D20000000000000000000000000000080014D62C
-:10D2100000000000080014D83C0A0001080014D8DF
-:10D220003C0A0002080014D800000000080024A6F0
-:10D2300000000000080014D83C0A0003080014D8BD
-:10D240003C0A000408002F8C00000000080014D8DD
-:10D250003C0A000508003CE80000000008003C66AD
-:10D2600000000000080014D83C0A0006080014D88A
-:10D270003C0A0007080014D800000000080014D879
-:10D2800000000000080014D80000000008002A7503
-:10D2900000000000080014D83C0A000B080014D855
-:10D2A0003C0A000C080014D83C0A000D0800237A40
-:10D2B000000000000800233900000000080014D816
-:10D2C0003C0A000E08001B3C00000000080024A4DB
-:10D2D00000000000080014D83C0A000F080040A716
-:10D2E000000000000800409100000000080014D871
-:10D2F0003C0A0010080014EE00000000080014D8DA
-:10D300003C0A0011080014D83C0A0012080014D886
-:10D310003C0A0013000000000000000000000000B4
-:10D3200000000000000000000000000000000000FD
-:10D3300000000000000000000000000000000000ED
-:10D3400000000000000000000000000000000000DD
-:10D3500000000000000000000000000000000000CD
-:10D3600000000000000000000000000000000000BD
-:10D3700000000000000000000000000000000000AD
-:10D38000000000000000000000000000000000009D
-:10D39000000000000000000000000000000000008D
-:10D3A000000000000000000000000000000000007D
-:10D3B000000000000000000000000000000000006D
-:10D3C000000000000000000000000000000000005D
-:10D3D000000000000000000000000000000000004D
-:10D3E000000000000000000000000000000000003D
-:10D3F000000000000000000000000000000000002D
-:10D400000000000000000000000000003C030001DC
-:10D4100034633800240500802404001F2406FFFF25
-:10D4200024020001AF80021CAF820200AF82022002
-:10D4300003631021AF8200C003631021AF8200C4D8
-:10D4400003631021AF8200C827623800AF8200D08A
-:10D4500027623800AF8200D427623800AF8200D83C
-:10D4600027621800AF8200E027621800AF8200E454
-:10D4700027621800AF8200E827621000AF8200F038
-:10D4800027621000AF8200F427621000AF8200F81C
-:10D49000ACA000002484FFFF1486FFFD24A5000437
-:10D4A0008F8300403C02F000006218243C025000D0
-:10D4B0001062000C0043102B144000063C02600078
-:10D4C0003C024000106200082402080008004539B0
-:10D4D0000000000010620004240208000800453922
-:10D4E00000000000240207003C010001AC225CDCCB
-:10D4F00003E000080000000027BDFFD8AFBF0024F4
-:10D50000AFB000208F8300548F8200543C01000193
-:10D51000AC205CC408004545246300648F8200543D
-:10D52000006210232C4200651440FFFC0000000044
-:10D530000C004D71000000002404000100002821AF
-:10D5400027A60018340280000C00498EA7A20018FC
-:10D550008F8300548F820054080045562463006472
-:10D560008F820054006210232C4200651440FFFC9F
-:10D5700024040001240500010C00494C27A60018D2
-:10D580008F8300548F820054080045622463006436
-:10D590008F820054006210232C4200651440FFFC6F
-:10D5A00024040001240500010C00494C27A60018A2
-:10D5B0008F8300548F8200540800456E24630064FA
-:10D5C0008F820054006210232C4200651440FFFC3F
-:10D5D000240400013C06000124C65DA00C00494C57
-:10D5E000240500028F8300548F8200540800457B7D
-:10D5F000246300648F820054006210232C42006573
-:10D600001440FFFC24040001240500033C10000129
-:10D6100026105DA20C00494C0200302197A600188C
-:10D620003C07000194E75DA03C04000124845AB04B
-:10D63000AFA00014960200003C05000D34A50100C7
-:10D640000C002403AFA2001097A200181040004C59
-:10D6500024036040960200003042FFF01443000AA9
-:10D66000240200203C03000194635DA05462000981
-:10D6700024027830240200033C010001AC225CC487
-:10D68000080045AC240200053C03000194635DA042
-:10D69000240278301462000F240300103C020001C1
-:10D6A00094425DA23042FFF01443000A24020003BA
-:10D6B0003C010001AC225CC4240200063C010001D4
-:10D6C000AC225DB03C010001AC225DBC080045E627
-:10D6D0003C09FFF03C0200018C425CC43C030001A9
-:10D6E00094635DA0344200013C010001AC225CC4A3
-:10D6F000240200151462000F000000003C0200012B
-:10D7000094425DA23042FFF03843F4202C630001C4
-:10D710003842F4302C4200010062182510600005E8
-:10D72000240200033C010001AC225DBC080045E678
-:10D730003C09FFF03C03000194635DA024027810D3
-:10D740001462000B240200023C02000194425DA21C
-:10D750003042FFF0144000062402000224020004BC
-:10D760003C010001AC225DBC080045E63C09FFF02D
-:10D770003C010001AC225DBC080045E63C09FFF01D
-:10D780003C0200018C425CC4240300013C01000106
-:10D79000AC235DBC344200043C010001AC225CC4FB
-:10D7A0003C09FFF03529BDC03C0600018CC65CC4B5
-:10D7B0003C04000124845AB0240200013C01000111
-:10D7C000AC225CCC8F8200543C0700018CE75DBC2E
-:10D7D0003C03000194635DA03C08000195085DA234
-:10D7E0003C05000D34A501003C010001AC205CC8E3
-:10D7F000004910213C010001AC225DACAFA3001038
-:10D800000C002403AFA800148FBF00248FB00020A9
-:10D8100003E0000827BD002827BDFFE83C05000104
-:10D820008CA55CC8240600042402000114A2001484
-:10D83000AFBF00103C0200018C427E3C30428000B1
-:10D84000104000053C04000F3C0300018C635DBCEC
-:10D8500008004617348442403C0400043C030001A5
-:10D860008C635DBC348493E02402000514620016CE
-:10D87000000000003C04003D0800462F34840900ED
-:10D880003C0200018C427E3830428000104000058E
-:10D890003C04001E3C0300018C635DBC0800462A6A
-:10D8A000348484803C04000F3C0300018C635DBC25
-:10D8B000348442402402000514620003000000008A
-:10D8C0003C04007A348412003C0200018C425DACBE
-:10D8D0008F83005400441021004310230044102B78
-:10D8E00014400037000000003C0200018C425CD074
-:10D8F00014400033000000003C01000110C000256E
-:10D90000AC205CE03C0900018D295CC424070001C7
-:10D910003C0440003C08000125087E3C250AFFFC31
-:10D920000005284214A0000224C6FFFF24050008B9
-:10D9300000A91024104000100000000014A70008E7
-:10D94000000000008D020000004410241040000A76
-:10D95000000000003C0100010800465BAC255CE0D3
-:10D960008D4200000044102410400003000000001D
-:10D970003C010001AC275CE03C0200018C425CE011
-:10D980000006182B2C420001004310245440FFE5F0
-:10D99000000528428F8200543C0300018C635CE048
-:10D9A0003C010001AC225DAC1060002A24020001A1
-:10D9B0003C010001AC255CC83C010001AC225CCC00
-:10D9C0003C0200018C425CE010400022000000009C
-:10D9D0003C0200018C425CCC1040000A2402000191
-:10D9E0003C010001AC205CCC3C0100010037082167
-:10D9F000AC2283AC3C010001AC205D4C3C01000139
-:10DA0000AC225D043C030001007718218C6383ACD9
-:10DA10002402000810620005240200010C00469553
-:10DA20000000000008004692000000003C030001D6
-:10DA30008C635CC8106200072402000E3C030001E6
-:10DA40008C637DD010620003000000000C004E5477
-:10DA50008F8402208FBF001003E0000827BD00184C
-:10DA600027BDFFE03C02FDFFAFBF00188EE30000C2
-:10DA70003C0500018CA55CC83C0400018C845CF072
-:10DA80003442FFFF0062182414A40008AEE3000033
-:10DA90003C030001007718218C6383AC3C02000139
-:10DAA0008C425CF410620008000000003C0200019F
-:10DAB000005710218C4283AC3C010001AC255CF086
-:10DAC0003C010001AC225CF43C0300018C635CC8A7
-:10DAD00024020002106201692C620003104000055C
-:10DAE0002402000110620008000000000800481C29
-:10DAF0000000000024020004106200B124020001B2
-:10DB00000800481D000000003C02000100571021E1
-:10DB10008C4283AC2443FFFF2C6200081040015A62
-:10DB2000000310803C010001002208218C225AC809
-:10DB300000400008000000003C0300018C635DBC55
-:10DB40002402000514620014000000003C020001E1
-:10DB50008C425CD41040000A240200030C004822CE
-:10DB600000000000240200023C01000100370821EF
-:10DB7000AC2283AC3C010001080046E0AC205CD440
-:10DB80003C01000100370821AC2283AC3C010001BC
-:10DB90000800481FAC205C600C0048220000000018
-:10DBA0003C0200018C425CD43C010001AC205C6072
-:10DBB000104000DD240200023C0100010037082172
-:10DBC000AC2283AC3C0100010800481FAC205CD4AF
-:10DBD0003C0300018C635DBC240200051462000359
-:10DBE000240200013C010001AC225D000C0049CF81
-:10DBF000000000003C0300018C635D000800478EBC
-:10DC0000240200113C0500018CA55CC83C06000103
-:10DC10008CC67E3C0C005108000020212402000527
-:10DC20003C010001AC205CD43C010001003708211C
-:10DC30000800481FAC2283AC3C04000124845ABC79
-:10DC40003C05000F34A50100000030210000382100
-:10DC5000AFA000100C002403AFA000140800481F60
-:10DC6000000000008F8202203C03F70000431025D3
-:10DC7000080047B7AF8202208F8202203C030004D5
-:10DC800000431024144000A9240200078F8300548D
-:10DC90003C0200018C425DA42463D8F000431023B1
-:10DCA0002C422710144000F8240200010800481DEF
-:10DCB000000000003C0500018CA55CC80C0052A2CD
-:10DCC000000020210C005386000020213C030001AD
-:10DCD0008C637E34046100EA240200013C020008E7
-:10DCE0000062102410400006000000008F82021421
-:10DCF0003C03FFFF00431024080047413442251F26
-:10DD00008F8202143C03FFFF004310243442241F7F
-:10DD1000AF8202148EE200003C0302000043102593
-:10DD2000AEE200008F8202202403FFFB0043102498
-:10DD3000AF8202208F82022034420002AF82022092
-:10DD4000240200083C01000100370821AC2283AC0A
-:10DD50008F8202203C03000400431024144000057D
-:10DD6000000000008F8202203C03F70000431025D2
-:10DD7000AF8202203C0300018C635DBC24020005DD
-:10DD80001462000A000000003C02000194425DA2FF
-:10DD900024429FBC2C4200041040000424040018BC
-:10DDA000240500020C004D93240600200C0043DDE6
-:10DDB000000000003C0100010800481FAC205D503D
-:10DDC0003C020001005710218C4283AC2443FFFF2A
-:10DDD0002C620008104000AC000310803C010001E0
-:10DDE000002208218C225AE80040000800000000B0
-:10DDF0000C00429B000000003C010001AC205CCC08
-:10DE0000AF8002043C0100010C004822AC207E20BF
-:10DE1000240200013C010001AC225CE42402000267
-:10DE20003C010001003708210800481FAC2283ACE8
-:10DE30000C00489F000000003C0300018C635CE480
-:10DE40002402000914620090240200033C01000136
-:10DE5000003708210800481FAC2283AC3C020001B7
-:10DE60008C427E3830424000104000050000000027
-:10DE70008F8200443C03FFFF0800479F34637FFF0D
-:10DE80008F8200442403FF7F00431024AF820044AC
-:10DE90008F830054080047B9240200048F83005484
-:10DEA0003C0200018C425DA42463D8F0004310239F
-:10DEB0002C42271014400074240200053C0100018C
-:10DEC000003708210800481FAC2283AC8F82022053
-:10DED0003C03F70000431025AF820220AF8002040C
-:10DEE0003C010001AC207E208F83005424020006F8
-:10DEF0003C01000100370821AC2283AC3C01000149
-:10DF00000800481FAC235DA48F8300543C0200012D
-:10DF10008C425DA42463FFF6004310232C42000AC8
-:10DF20001440005900000000240200073C010001D9
-:10DF3000003708210800481FAC2283AC8F820220E2
-:10DF40003C04F70000441025AF8202208F8202209B
-:10DF50003C03030000431024144000050000182176
-:10DF60008F8202202403000100441025AF8202208A
-:10DF700010600043240200018F8202143C03FFFF63
-:10DF80003C0400018C845D98004310243442251F1A
-:10DF9000AF820214240200083C010001003708216E
-:10DFA0001080000BAC2283AC3C0200018C425D74FB
-:10DFB00014400007240200013C010001AC227DD086
-:10DFC0000C004E548F8402200800480C0000000012
-:10DFD0008F8202203C0300080043102414400017E5
-:10DFE0002402000E3C010001AC227DD08EE2000034
-:10DFF000000020213C030200004310250C00538642
-:10E00000AEE200008F8202202403FFFB00431024B5
-:10E01000AF8202208F820220344200020C0043DDD6
-:10E02000AF8202203C0500018CA55CC80C0052A206
-:10E03000000020210800481F000000003C020001F1
-:10E040008C425D7410400010000000003C02000192
-:10E050008C425D702442FFFF3C010001AC225D70E8
-:10E0600014400009240200023C010001AC205D7450
-:10E070003C0100010800481FAC225D702402000131
-:10E080003C010001AC225CCC8FBF001803E000080B
-:10E0900027BD00208F8202008F8202208F82022003
-:10E0A00034420004AF8202208F8202003C0600014D
-:10E0B0008CC65CC834420004AF8202002402000215
-:10E0C00010C2003A2CC200031040000524020001D7
-:10E0D00010C20008000000000800486800000000AE
-:10E0E0002402000410C20013240200010800486842
-:10E0F000000000003C0300018C635CB83C0200019E
-:10E100008C425CC03C0400018C845CDC3C0500015A
-:10E110008CA55CBCAF860200AF860220346300226F
-:10E1200000441025004510253442000208004867CD
-:10E13000AF8302003C0300018C635D98AF82020054
-:10E1400010600009AF8202203C0200018C425D7425
-:10E15000144000053C033F003C0200018C425CB0CF
-:10E160000800485B346300E03C0200018C425CB074
-:10E170003C033F00346300E200431025AF820200FD
-:10E180003C0300018C635CB43C04F7003C020001DA
-:10E190008C425CC03C0500018CA55CDC0064182549
-:10E1A0000043102500451025AF82022003E000083F
-:10E1B000000000008F8202203C0300018C635CC8D9
-:10E1C00034420004AF820220240200011062000FDA
-:10E1D000000000008F8300548F82005424630002EB
-:10E1E000006210232C4200031040001100000000C8
-:10E1F0008F820054006210232C4200031040000C58
-:10E200000000000008004879000000008F830054DF
-:10E210008F82005408004885246300078F820054D1
-:10E22000006210232C4200081440FFFC0000000094
-:10E230008F8400E0308200071040000D00000000D5
-:10E240008F8200548F8300E014830009244500323C
-:10E250008F82005400A210232C420033104000048F
-:10E26000000000008F8200E01082FFF90000000033
-:10E270008F8202202403FFFD00431024AF8202207E
-:10E2800003E00008000000003C0300018C635CE434
-:10E290003C0200018C425CE8506200042463FFFFF2
-:10E2A0003C010001AC235CE82463FFFF2C62000901
-:10E2B0001040009D000310803C0100010022082155
-:10E2C0008C225B0800400008000000008F820044A0
-:10E2D00034428080AF8200448F8300540800493864
-:10E2E000240200028F8300543C0200018C425DA88E
-:10E2F0002463D8F0004310232C4227101440008AD6
-:10E300002402000308004945000000008F820044F9
-:10E310003C03FFFF34637FFF00431024AF820044BF
-:10E320008F83005408004938240200048F8300546E
-:10E330003C0200018C425DA82463FFF600431023D9
-:10E340002C42000A144000782402000508004945C8
-:10E35000000000008F8202203C03F70000431025DC
-:10E36000AF8202208F8202202403FFFB004310248F
-:10E37000AF8202208F82022034420002AF8202204C
-:10E380003C023F00344200E0AF8202008F82020074
-:10E390002403FFFD00431024AF8202002404000187
-:10E3A0003405FFFFAF8402048F8300548F82005432
-:10E3B000080048EC246300018F820054006210239F
-:10E3C0002C4200021440FFFC000000008F82022457
-:10E3D0000004204000A4102B1040FFF200000000B9
-:10E3E0008F8202203C03F70000431025AF820220F9
-:10E3F0008F8202143C03FFFF004310243442251F88
-:10E40000AF8202148F8202202403FFFB00431024FA
-:10E41000AF8202208F8202203C04F700348400087F
-:10E4200034420002AF8202208F8202203C033F0070
-:10E43000346300E200441025AF820220AF83020063
-:10E440008F8400F0276217F81482000224850008E8
-:10E45000276510008F8200F410A200073C038000A3
-:10E46000346300403C02000124425C70AC82000036
-:10E47000AC830004AF8500F08F8300540800493856
-:10E48000240200068F8300543C0200018C425DA8E8
-:10E490002463FFF6004310232C42000A144000229C
-:10E4A0002402000708004945000000008F8200E0B8
-:10E4B000AF8200E48F8200E0AF8200E88F8202200A
-:10E4C00034420004AF8202208F8202202403FFF72F
-:10E4D00000431024AF8202208F82004434428080A7
-:10E4E000AF8200448F830054240200083C010001E5
-:10E4F000AC225CE43C01000108004947AC235DA864
-:10E500008F8300543C0200018C425DA82463D8F044
-:10E51000004310232C42271014400003240200095A
-:10E520003C010001AC225CE403E0000800000000B4
-:10E5300000000000000000000000000027BDFFD820
-:10E54000AFB2001800809021AFB3001C00A098214A
-:10E55000AFB1001400C08821AFB0001000008021CE
-:10E56000AFBF0020A62000000C004D4B240400018A
-:10E57000261000012E0200201440FFFB00000000C6
-:10E580000C004D4B000020210C004D4B24040001D9
-:10E590000C004D4B240400010C004D4B00002021C9
-:10E5A000241000100250102410400002000020210E
-:10E5B000240400010C004D4B001080421600FFFAAD
-:10E5C0000250102424100010027010241040000289
-:10E5D00000002021240400010C004D4B001080425B
-:10E5E0001600FFFA027010240C004D7134108000E8
-:10E5F0000C004D71000000000C004D2B00000000CD
-:10E600005040000500108042962200000050102566
-:10E61000A6220000001080421600FFF70000000054
-:10E620000C004D71000000008FBF00208FB3001C54
-:10E630008FB200188FB100148FB0001003E00008F3
-:10E6400027BD002827BDFFD8AFB100140080882166
-:10E65000AFB2001800A09021AFB3001C00C09821F9
-:10E66000AFB0001000008021AFBF00200C004D4B68
-:10E6700024040001261000012E0200201440FFFB9C
-:10E68000000000000C004D4B000020210C004D4B01
-:10E69000240400010C004D4B000020210C004D4BC8
-:10E6A0002404000124100010023010241040000245
-:10E6B00000002021240400010C004D4B001080427A
-:10E6C0001600FFFA0230102424100010025010240B
-:10E6D0001040000200002021240400010C004D4BDA
-:10E6E000001080421600FFFA025010240C004D4B1F
-:10E6F000240400010C004D4B000020213410800048
-:10E7000096620000005010241040000200002021FA
-:10E71000240400010C004D4B001080421600FFF84D
-:10E72000000000000C004D71000000008FBF0020B1
-:10E730008FB3001C8FB200188FB100148FB000107F
-:10E7400003E0000827BD00283C0300018C635D0046
-:10E750003C0200018C425D4827BDFFD8AFBF0020BE
-:10E76000AFB1001C10620003AFB000183C01000103
-:10E77000AC235D482463FFFF2C6200131040034963
-:10E78000000310803C010001002208218C225B3034
-:10E7900000400008000000000C004D7100008021C6
-:10E7A00034028000A7A2001027B100100C004D4BCE
-:10E7B00024040001261000012E0200201440FFFB5B
-:10E7C000000000000C004D4B000020210C004D4BC0
-:10E7D000240400010C004D4B000020210C004D4B87
-:10E7E0002404000124100010320200011040000235
-:10E7F00000002021240400010C004D4B0010804239
-:10E800001600FFFA32020001241000100C004D4BDC
-:10E8100000002021001080421600FFFC00000000D4
-:10E820000C004D4B240400010C004D4B0000202136
-:10E830003410800096220000005010241040000286
-:10E8400000002021240400010C004D4B00108042E8
-:10E850001600FFF8000000000C004D7100000000E1
-:10E8600008004D242402000227B10010A7A00010C8
-:10E87000000080210C004D4B2404000126100001F3
-:10E880002E0200201440FFFB000000000C004D4B46
-:10E89000000020210C004D4B240400010C004D4BC6
-:10E8A000240400010C004D4B000020212410001016
-:10E8B0003202000110400002000020212404000167
-:10E8C0000C004D4B001080421600FFFA320200018E
-:10E8D000241000100C004D4B00002021001080423D
-:10E8E0001600FFFC000000000C004D713410800089
-:10E8F0000C004D71000000000C004D2B00000000CA
-:10E900005040000500108042962200000050102563
-:10E91000A6220000001080421600FFF70000000051
-:10E920000C004D710000000097A2001030428000E2
-:10E93000144002DC2402000308004D240000000003
-:10E9400024021200A7A2001027B1001000008021AD
-:10E950000C004D4B24040001261000012E02002063
-:10E960001440FFFB000000000C004D4B0000202174
-:10E970000C004D4B240400010C004D4B00002021E5
-:10E980000C004D4B24040001241000103202000141
-:10E990001040000200002021240400010C004D4B17
-:10E9A000001080421600FFFA32020001241000100D
-:10E9B0000C004D4B00002021001080421600FFFC8F
-:10E9C000000000000C004D4B240400010C004D4BD6
-:10E9D00000002021341080009622000000501024F6
-:10E9E0001040000200002021240400010C004D4BC7
-:10E9F000001080421600FFF8000000000C004D716E
-:10EA0000000000008F83005408004D16240200040B
-:10EA10008F8300543C0200018C425DB82463FF9C4C
-:10EA2000004310232C4200641440029E2402000282
-:10EA30003C0300018C635DBC106202972C620003F2
-:10EA40001440029624020011240200031062000503
-:10EA500024020004106202912402000F08004D24D9
-:10EA60002402001108004D24240200052402001491
-:10EA7000A7A2001027B10010000080210C004D4B10
-:10EA800024040001261000012E0200201440FFFB88
-:10EA9000000000000C004D4B000020210C004D4BED
-:10EAA000240400010C004D4B000020210C004D4BB4
-:10EAB0002404000124100010320200011040000262
-:10EAC00000002021240400010C004D4B0010804266
-:10EAD0001600FFFA32020001241000103202001268
-:10EAE0001040000200002021240400010C004D4BC6
-:10EAF000001080421600FFFA320200120C004D4B4B
-:10EB0000240400010C004D4B000020213410800033
-:10EB10009622000000501024104000020000202126
-:10EB2000240400010C004D4B001080421600FFF839
-:10EB3000000000000C004D71000000008F830054A5
-:10EB400008004D16240200068F8300543C02000189
-:10EB50008C425DB82463FF9C004310232C42006468
-:10EB6000144002502402000708004D240000000059
-:10EB700024020006A7A2001027B100100000802187
-:10EB80000C004D4B24040001261000012E02002031
-:10EB90001440FFFB000000000C004D4B0000202142
-:10EBA0000C004D4B240400010C004D4B00002021B3
-:10EBB0000C004D4B2404000124100010320200010F
-:10EBC0001040000200002021240400010C004D4BE5
-:10EBD000001080421600FFFA3202000124100010DB
-:10EBE0003202001310400002000020212404000122
-:10EBF0000C004D4B001080421600FFFA3202001349
-:10EC00000C004D4B240400010C004D4B0000202152
-:10EC100034108000962200000050102410400002A2
-:10EC200000002021240400010C004D4B0010804204
-:10EC30001600FFF8000000000C004D7100000000FD
-:10EC40008F83005408004D16240200088F8300545F
-:10EC50003C0200018C425DB82463FF9C00431023FA
-:10EC60002C4200641440020F2402000908004D24C5
-:10EC70000000000027B10010A7A0001000008021B4
-:10EC80000C004D4B24040001261000012E02002030
-:10EC90001440FFFB000000000C004D4B0000202141
-:10ECA0000C004D4B240400010C004D4B24040001CA
-:10ECB0000C004D4B000020212410001032020001F6
-:10ECC0001040000200002021240400010C004D4BE4
-:10ECD000001080421600FFFA3202000124100010DA
-:10ECE000320200181040000200002021240400011C
-:10ECF0000C004D4B001080421600FFFA3202001843
-:10ED00000C004D71341080000C004D7100000000AB
-:10ED10000C004D2B00000000504000050010804208
-:10ED20009622000000501025A6220000001080420C
-:10ED30001600FFF7000000000C004D71000080215C
-:10ED400097A2001027B1001034420001A7A20010C2
-:10ED50000C004D4B24040001261000012E0200205F
-:10ED60001440FFFB000000000C004D4B0000202170
-:10ED70000C004D4B240400010C004D4B00002021E1
-:10ED80000C004D4B2404000124100010320200013D
-:10ED90001040000200002021240400010C004D4B13
-:10EDA000001080421600FFFA320200012410001009
-:10EDB000320200181040000200002021240400014B
-:10EDC0000C004D4B001080421600FFFA3202001872
-:10EDD0000C004D4B240400010C004D4B0000202181
-:10EDE00034108000962200000050102410400002D1
-:10EDF00000002021240400010C004D4B0010804233
-:10EE00001600FFF8000000000C004D71000000002B
-:10EE10008F83005408004D162402000A8F8300548B
-:10EE20003C0200018C425DB82463FF9C0043102328
-:10EE30002C4200641440019B2402000B08004D2466
-:10EE40000000000027B10010A7A0001000008021E2
-:10EE50000C004D4B24040001261000012E0200205E
-:10EE60001440FFFB000000000C004D4B000020216F
-:10EE70000C004D4B240400010C004D4B24040001F8
-:10EE80000C004D4B00002021241000103202000124
-:10EE90001040000200002021240400010C004D4B12
-:10EEA000001080421600FFFA320200012410001008
-:10EEB000320200171040000200002021240400014B
-:10EEC0000C004D4B001080421600FFFA3202001772
-:10EED0000C004D71341080000C004D7100000000DA
-:10EEE0000C004D2B00000000504000050010804237
-:10EEF0009622000000501025A6220000001080423B
-:10EF00001600FFF7000000000C004D71000080218A
-:10EF100097A2001027B1001034420700A7A20010EA
-:10EF20000C004D4B24040001261000012E0200208D
-:10EF30001440FFFB000000000C004D4B000020219E
-:10EF40000C004D4B240400010C004D4B000020210F
-:10EF50000C004D4B2404000124100010320200016B
-:10EF60001040000200002021240400010C004D4B41
-:10EF7000001080421600FFFA320200012410001037
-:10EF8000320200171040000200002021240400017A
-:10EF90000C004D4B001080421600FFFA32020017A1
-:10EFA0000C004D4B240400010C004D4B00002021AF
-:10EFB00034108000962200000050102410400002FF
-:10EFC00000002021240400010C004D4B0010804261
-:10EFD0001600FFF8000000000C004D71000000005A
-:10EFE0008F83005408004D162402000C8F830054B8
-:10EFF0003C0200018C425DB82463FF9C0043102357
-:10F000002C420064144001272402001208004D2401
-:10F010000000000027B10010A7A000100000802110
-:10F020000C004D4B24040001261000012E0200208C
-:10F030001440FFFB000000000C004D4B000020219D
-:10F040000C004D4B240400010C004D4B2404000126
-:10F050000C004D4B00002021241000103202000152
-:10F060001040000200002021240400010C004D4B40
-:10F07000001080421600FFFA320200012410001036
-:10F08000320200141040000200002021240400017C
-:10F090000C004D4B001080421600FFFA32020014A3
-:10F0A0000C004D71341080000C004D710000000008
-:10F0B0000C004D2B00000000504000050010804265
-:10F0C0009622000000501025A62200000010804269
-:10F0D0001600FFF7000000000C004D7100008021B9
-:10F0E00097A2001027B1001034420010A7A2001010
-:10F0F0000C004D4B24040001261000012E020020BC
-:10F100001440FFFB000000000C004D4B00002021CC
-:10F110000C004D4B240400010C004D4B000020213D
-:10F120000C004D4B24040001241000103202000199
-:10F130001040000200002021240400010C004D4B6F
-:10F14000001080421600FFFA320200012410001065
-:10F1500032020014104000020000202124040001AB
-:10F160000C004D4B001080421600FFFA32020014D2
-:10F170000C004D4B240400010C004D4B00002021DD
-:10F18000341080009622000000501024104000022D
-:10F1900000002021240400010C004D4B001080428F
-:10F1A0001600FFF8000000000C004D710000000088
-:10F1B0008F83005408004D16240200138F830054DF
-:10F1C0003C0200018C425DB82463FF9C0043102385
-:10F1D0002C420064144000B32402000D08004D24AA
-:10F1E0000000000027B10010A7A00010000080213F
-:10F1F0000C004D4B24040001261000012E020020BB
-:10F200001440FFFB000000000C004D4B00002021CB
-:10F210000C004D4B240400010C004D4B2404000154
-:10F220000C004D4B00002021241000103202000180
-:10F230001040000200002021240400010C004D4B6E
-:10F24000001080421600FFFA320200012410001064
-:10F2500032020018104000020000202124040001A6
-:10F260000C004D4B001080421600FFFA32020018CD
-:10F270000C004D71341080000C004D710000000036
-:10F280000C004D2B00000000504000050010804293
-:10F290009622000000501025A62200000010804297
-:10F2A0001600FFF7000000000C004D7100008021E7
-:10F2B00097A2001027B100103042FFFEA7A2001055
-:10F2C0000C004D4B24040001261000012E020020EA
-:10F2D0001440FFFB000000000C004D4B00002021FB
-:10F2E0000C004D4B240400010C004D4B000020216C
-:10F2F0000C004D4B240400012410001032020001C8
-:10F300001040000200002021240400010C004D4B9D
-:10F31000001080421600FFFA320200012410001093
-:10F3200032020018104000020000202124040001D5
-:10F330000C004D4B001080421600FFFA32020018FC
-:10F340000C004D4B240400010C004D4B000020210B
-:10F35000341080009622000000501024104000025B
-:10F3600000002021240400010C004D4B00108042BD
-:10F370001600FFF8000000000C004D7100000000B6
-:10F380008F83005408004D162402000E240208400A
-:10F39000A7A2001027B10010000080210C004D4BE7
-:10F3A00024040001261000012E0200201440FFFB5F
-:10F3B000000000000C004D4B000020210C004D4BC4
-:10F3C000240400010C004D4B000020210C004D4B8B
-:10F3D0002404000124100010320200011040000239
-:10F3E00000002021240400010C004D4B001080423D
-:10F3F0001600FFFA3202000124100010320200133E
-:10F400001040000200002021240400010C004D4B9C
-:10F41000001080421600FFFA320200130C004D4B20
-:10F42000240400010C004D4B00002021341080000A
-:10F4300096220000005010241040000200002021FD
-:10F44000240400010C004D4B001080421600FFF810
-:10F45000000000000C004D71000000008F8300547C
-:10F46000240200103C010001AC225D003C010001BF
-:10F4700008004D26AC235DB88F8300543C02000188
-:10F480008C425DB82463FF9C004310232C4200642F
-:10F490001440000400000000240200113C0100019F
-:10F4A000AC225D008FBF00208FB1001C8FB0001810
-:10F4B00003E0000827BD00288F8500448F820044A8
-:10F4C0003C030001004310253C030008AF820044C8
-:10F4D0008F8400548F82005400A3282408004D37E5
-:10F4E000248400018F820054008210232C420002E9
-:10F4F0001440FFFC000000008F8200443C03FFFE2C
-:10F500003463FFFF00431024AF8200448F83005414
-:10F510008F82005408004D45246300018F820054FF
-:10F52000006210232C4200021440FFFC0000000087
-:10F5300003E0000800A010218F8300443C02FFF08C
-:10F540003442FFFF00042480006218243C020002C1
-:10F550000082202500641825AF8300448F82004478
-:10F560003C03FFFE3463FFFF00431024AF820044DE
-:10F570008F8300548F82005408004D5E2463000185
-:10F580008F820054006210232C4200021440FFFCC2
-:10F59000000000008F8200443C030001004310255E
-:10F5A000AF8200448F8300548F82005408004D6B5B
-:10F5B000246300018F820054006210232C42000259
-:10F5C0001440FFFC0000000003E000080000000001
-:10F5D0008F8200443C03FFF03463FFFF004310249C
-:10F5E000AF8200448F8200443C0300010043102599
-:10F5F000AF8200448F8300548F82005408004D7FF7
-:10F60000246300018F820054006210232C42000208
-:10F610001440FFFC000000008F8200443C03FFFE0A
-:10F620003463FFFF00431024AF8200448F830054F3
-:10F630008F82005408004D8D246300018F82005496
-:10F64000006210232C4200021440FFFC0000000066
-:10F6500003E000080000000027BDFFC8AFB300248E
-:10F6600000809821AFB5002C00A0A821AFB20020E7
-:10F6700000C0902132A2FFFFAFBF0030AFB400281E
-:10F68000AFB1001CAFB0001814400034A7B2001096
-:10F690003271FFFF27B20010000080210C004D4B9B
-:10F6A00024040001261000012E0200201440FFFB5C
-:10F6B000000000000C004D4B000020210C004D4BC1
-:10F6C000240400010C004D4B000020210C004D4B88
-:10F6D0002404000124100010320200011040000236
-:10F6E00000002021240400010C004D4B001080423A
-:10F6F0001600FFFA3202000124100010023010241C
-:10F700001040000200002021240400010C004D4B99
-:10F71000001080421600FFFA023010240C004D4BFE
-:10F72000240400010C004D4B000020213410800007
-:10F7300096420000005010241040000200002021DA
-:10F74000240400010C004D4B001080421200007593
-:10F750000000000008004DC9000000003274FFFFE7
-:10F7600027B10010A7A00010000080210C004D4B15
-:10F7700024040001261000012E0200201440FFFB8B
-:10F78000000000000C004D4B000020210C004D4BF0
-:10F79000240400010C004D4B240400010C004D4BCF
-:10F7A000000020212410001032020001104000024D
-:10F7B00000002021240400010C004D4B0010804269
-:10F7C0001600FFFA320200012410001002901024EB
-:10F7D0001040000200002021240400010C004D4BC9
-:10F7E000001080421600FFFA029010240C004D71A8
-:10F7F000341080000C004D71000000000C004D2BF7
-:10F8000000000000504000050010804296220000D9
-:10F8100000501025A6220000001080421600FFF7BD
-:10F82000000000000C004D710000000032A5FFFF39
-:10F830002402000154A200042402000297A2001036
-:10F8400008004E140052102514A200063271FFFF6A
-:10F8500097A200100012182700431024A7A200103E
-:10F860003271FFFF27B20010000080210C004D4BC9
-:10F8700024040001261000012E0200201440FFFB8A
-:10F88000000000000C004D4B000020210C004D4BEF
-:10F89000240400010C004D4B000020210C004D4BB6
-:10F8A0002404000124100010320200011040000264
-:10F8B00000002021240400010C004D4B0010804268
-:10F8C0001600FFFA3202000124100010023010244A
-:10F8D0001040000200002021240400010C004D4BC8
-:10F8E000001080421600FFFA023010240C004D4B2D
-:10F8F000240400010C004D4B000020213410800036
-:10F900009642000000501024104000020000202108
-:10F91000240400010C004D4B001080421600FFF83B
-:10F92000000000000C004D71000000008FBF00308F
-:10F930008FB5002C8FB400288FB300248FB2002025
-:10F940008FB1001C8FB0001803E0000827BD0038FD
-:10F9500000000000000000000000000027BDFFE8DC
-:10F96000AFBF00103C030001007718218C6383AC0B
-:10F97000240200081462022C008030213C020001A5
-:10F980008C425D9814400033000000008F850224F3
-:10F9900038A300202C63000138A200102C42000183
-:10F9A000006218251460000D38A300302C6300019C
-:10F9B00038A204002C4200010062182514600007E0
-:10F9C00038A304022C63000138A204042C42000175
-:10F9D0000062182510600005000000000C00429B2A
-:10F9E0000000000008004E8D2402000E0C0043DDD4
-:10F9F000000000003C0500018CA55CC80C0052A270
-:10FA0000000020213C0300018C635CC82402000438
-:10FA1000146200052403FFFB3C0200018C425CC41D
-:10FA200008004E892403FFF73C0200018C425CC4AD
-:10FA3000004310243C010001AC225CC42402000EEF
-:10FA40003C0100010C00429BAC227DD00800508795
-:10FA5000000000008F8202203C03040000431024B9
-:10FA6000104000272403FFBF8F8502243C020001C1
-:10FA70008C427DDC00A32024004310241482000C5F
-:10FA8000000000003C0200018C427DE024420001A5
-:10FA90003C010001AC227DE02C4200021440000831
-:10FAA000240200013C01000108004EADAC227E00A2
-:10FAB0003C010001AC207DE03C010001AC207E0057
-:10FAC0003C0200018C427E001040000630A2004043
-:10FAD00010400004240200013C01000108004EB85F
-:10FAE000AC227E043C010001AC207E043C010001FC
-:10FAF000AC257DDC3C01000108004EC8AC207E1026
-:10FB0000240200013C010001AC227E103C010001F6
-:10FB1000AC207E003C010001AC207DE03C010001F6
-:10FB2000AC207E043C010001AC207DDC3C030001E4
-:10FB30008C637DD03C0200018C427DD410620003B6
-:10FB40003C0202003C010001AC237DD400C2102421
-:10FB5000104000072463FFFF8F820220240300016E
-:10FB60003C010001AC235CCC080050853C03F7004D
-:10FB70002C62000E104001A8000310803C0100011F
-:10FB8000002208218C225B80004000080000000059
-:10FB90003C010001AC207E003C010001AC207DE076
-:10FBA0003C010001AC207DDC3C010001AC207E0466
-:10FBB0003C010001AC207DF83C010001AC207DF04F
-:10FBC0000C00486AAF800224240200023C010001BC
-:10FBD000AC227DD03C0200018C427E1014400056C5
-:10FBE0003C03FDFF8EE200003463FFFF004310245E
-:10FBF0000C00429BAEE20000AF8002048F82020044
-:10FC00002403FFFD00431024AF8202003C010001E9
-:10FC1000AC207E208F8300543C0200018C427DF892
-:10FC2000240400013C010001AC247E0C24420001AC
-:10FC30003C010001AC227DF82C4200043C01000193
-:10FC4000AC237DF414400006240200033C010001B3
-:10FC5000AC245CCC3C01000108005083AC207DF852
-:10FC60003C01000108005083AC227DD08F830054FA
-:10FC70003C0200018C427DF42463D8F00043102341
-:10FC80002C42271014400003240200043C01000110
-:10FC9000AC227DD03C0200018C427E101440002634
-:10FCA0003C03FDFF8EE200003463FFFF004310249D
-:10FCB00008005083AEE200003C0400018C845D9C8F
-:10FCC0003C0100010C00508AAC207DE83C020001A0
-:10FCD0008C427E1CAF8202043C0200018C427E10EA
-:10FCE000144000153C03FDFF8EE200003463FFFF6B
-:10FCF00000431024AEE200008F8202043042003044
-:10FD00001440013C240200023C0300018C637E1C71
-:10FD1000240200053C010001AC227DD03C01000121
-:10FD200008005083AC237E203C0200018C427E10F0
-:10FD3000104000103C03FDFF3C0200018C425D6C52
-:10FD4000244200013C010001AC225D6C2C42000207
-:10FD500014400131240200013C010001AC225D7419
-:10FD60003C010001AC205D6C3C01000108005083A7
-:10FD7000AC225CCC8EE200003463FFFF0043102411
-:10FD8000AEE200003C0200018C427E0010400122E5
-:10FD9000000000003C0200018C427DDC1040011E8E
-:10FDA000000000003C010001AC227E082402000398
-:10FDB0003C010001AC227DE0080050242402000632
-:10FDC0003C010001AC207DE88F82020434420040F7
-:10FDD000AF8202043C0200018C427E202403000713
-:10FDE0003C010001AC237DD0344200403C010001C5
-:10FDF000AC227E203C0200018C427E0010400005B7
-:10FE0000000000003C0200018C427DDC104000F943
-:10FE1000240200023C05000124A57DE08CA2000024
-:10FE20002C424E21104000F3240200023C0200014B
-:10FE30008C427E04104000F82404FFBF3C02000105
-:10FE40008C427DDC3C0300018C637E08004410245E
-:10FE50000064182410430004240200013C01000146
-:10FE600008005083AC227DD024020003ACA2000025
-:10FE7000240200083C010001AC227DD03C020001BC
-:10FE80008C427E0C1040000C240200013C04000156
-:10FE90000C0050978C847DDC3C0200018C427E2853
-:10FEA00014400005240200013C0200018C427E2423
-:10FEB00010400006240200013C010001AC225CCC91
-:10FEC0003C01000108005083AC207DF83C02000199
-:10FED0008C427DF03C0300018C637DDC2C420001F0
-:10FEE000000210C0306300083C010001AC227DF02C
-:10FEF0003C010001AC237DEC8F83005424020009F7
-:10FF00003C010001AC227DD03C010001080050837F
-:10FF1000AC237DF48F8300543C0200018C427DF4BD
-:10FF20002463D8F0004310232C422710144000A86B
-:10FF3000000000003C0200018C427E0010400005E1
-:10FF4000000000003C0200018C427DDC104000A952
-:10FF5000240200023C03000124637DE08C62000067
-:10FF60002C424E21104000A3240200023C0200015A
-:10FF70008C427E0C1040000E000000003C0200018C
-:10FF80008C427DDC3C010001AC207E0C30420080C4
-:10FF90001040002F2402000C8F82020430420080A7
-:10FFA0001440000C24020003080050112402000C2D
-:10FFB0003C0200018C427DDC304200801440000590
-:10FFC000240200038F820204304200801040001F90
-:10FFD00024020003AC6200002402000A3C0100017C
-:10FFE000AC227DD03C04000124847E188C82000069
-:10FFF0003C0300018C637DF000431025AF820204B6
-:020000021000EC
-:100000008C8300003C0400018C847DF02402000BF2
-:100010003C010001AC227DD0006418253C010001A8
-:10002000AC237E203C05000124A57DE08CA20000CD
-:100030002C424E211040006F240200023C020001BD
-:100040008C427E1010400005000000002402000CCD
-:100050003C01000108005083AC227DD03C0200012D
-:100060008C427E001040006C000000003C04000147
-:100070008C847DDC1080005E308200083C0300012F
-:100080008C637DEC10620064240200033C010001DB
-:10009000AC247E08ACA20000240200063C01000152
-:1000A00008005083AC227DD08F82020034420002CF
-:1000B000AF8202008F8300542402000D3C01000136
-:1000C000AC227DD03C010001AC237DF48F83005431
-:1000D0003C0200018C427DF42463D8F000431023DD
-:1000E0002C4227101440003A000000003C0200019E
-:1000F0008C427E10104000292402000E3C030001B7
-:100100008C637E243C01000114600015AC227DD07C
-:100110000C0043DD000000003C0500018CA55CC81C
-:100120000C0052A2000020213C0300018C635CC83B
-:1001300024020004146200052403FFFB3C020001BA
-:100140008C425CC4080050522403FFF73C020001BB
-:100150008C425CC4004310243C010001AC225CC40E
-:100160008EE200003C03020000431025AEE20000D6
-:100170008F8202243C010001AC227E2C8F8202205F
-:100180002403FFFB00431024AF8202208F82022051
-:100190003442000208005083AF8202203C0200017A
-:1001A0008C427E0010400005000000003C0200016F
-:1001B0008C427DDC1040000F240200023C02000152
-:1001C0008C427DE02C424E211040000A24020002A5
-:1001D0003C0200018C427E001040000F0000000035
-:1001E0003C0200018C427DDC1440000B000000004A
-:1001F000240200023C01000108005083AC227DD0A3
-:100200003C0200018C427E00104000030000000010
-:100210000C00429B000000008F8202203C03F7008C
-:1002200000431025AF8202208FBF001003E00008BA
-:1002300027BD00183C03000124637E288C62000067
-:1002400010400005344220003C010001AC227E1C1D
-:1002500008005095AC6000003C010001AC247E1CFD
-:1002600003E000080000000027BDFFE030820030FE
-:10027000AFBF00183C010001AC227E24144000678F
-:100280003C02FFFF34421F0E008210241440006124
-:1002900024020030308220001040005D3083800056
-:1002A00000031A0230820001000212003C04000127
-:1002B0008C845D9C00621825000331C23C03000160
-:1002C00024635D78308280000002120230840001D5
-:1002D0000004220000441025000239C200061080EC
-:1002E0000043102100471021904300002402000128
-:1002F00010620025000000001060000724020002C8
-:1003000010620013240200031062002C3C05000F51
-:10031000080050F9000000008F8202002403FEFF55
-:1003200000431024AF8202008F8202203C03FFFEB4
-:100330003463FFFF00431024AF8202203C01000120
-:10034000AC207E443C01000108005104AC207E4CEE
-:100350008F82020034420100AF8202008F820220AD
-:100360003C03FFFE3463FFFF00431024AF820220F2
-:10037000240201003C010001AC227E443C0100014A
-:1003800008005104AC207E4C8F8202002403FEFF43
-:1003900000431024AF8202008F8202203C03000140
-:1003A00000431025AF8202203C010001AC207E44B6
-:1003B0003C01000108005104AC237E4C8F820200F6
-:1003C00034420100AF8202008F8202203C03000110
-:1003D00000431025AF820220240201003C010001ED
-:1003E000AC227E443C01000108005104AC237E4C49
-:1003F00034A5FFFF3C04000124845BB8AFA30010C8
-:100400000C002403AFA000140800510400000000F9
-:10041000240200303C010001AC227E288FBF00186E
-:1004200003E0000827BD00200000000027BDFFC832
-:10043000AFB2002800809021AFB3002C00A098211B
-:10044000AFB0002000C080213C04000124845BD0B8
-:100450003C0500093C0200018C425CC834A59001B7
-:100460000240302102603821AFBF0030AFB100241C
-:10047000A7A0001AAFB000140C002403AFA2001014
-:1004800024020002126200832E6200031040000565
-:10049000240200011262000A000000000800529BC2
-:1004A0000000000024020004126200FA2402000886
-:1004B000126200F93C02FFEC0800529B00000000B1
-:1004C0003C0200018C425CC4304200021440000433
-:1004D000001289403C02FFFB3442FFFF02028024ED
-:1004E0003C01000100310821AC307E3C3C02400060
-:1004F000020210241040004E001023C2308400304D
-:10050000001013823042001C3C03000124635D088C
-:1005100000431021008238213C02002002021024F6
-:1005200010400006240201003C01000100310821B6
-:10053000AC227E40080051503C0200803C0100018A
-:1005400000310821AC207E403C02008002021024D1
-:1005500010400006001219403C0200013C0100015D
-:10056000002308210800515CAC227E480012114093
-:100570003C01000100220821AC207E4894E40000E8
-:100580003C0300018C635DBC240200051062001076
-:10059000A7A400183202400010400002348240003C
-:1005A000A7A200182404000194E20002240500041C
-:1005B00024E60002344200010C00498EA4E200024D
-:1005C00024040001000028210C00498E27A60018F1
-:1005D0003C0200018C425CC8241100013C01000176
-:1005E000AC315CD414530004320280000C00429BF6
-:1005F00000000000320280001040011F00000000D7
-:100600000C00429B000000003C0300018C635DBCB9
-:100610002402000510620118240200023C010001BE
-:10062000AC315CCC3C0100010800529BAC225CC8A0
-:10063000240400012405000427B0001A0C00498E90
-:100640000200302124040001000028210C00498E02
-:10065000020030213C020001005110218C427E3406
-:100660003C0400018C845CC83C03BFFF3463FFFF83
-:100670003C010001AC335CD4004310243C01000178
-:1006800000310821109300FAAC227E340800529BFE
-:10069000000000003C02200002021024104000056F
-:1006A000240200013C010001AC225D98080051AD1C
-:1006B000001289403C010001AC205D980012894085
-:1006C0003C01000100310821AC307E383C02400082
-:1006D0000202102414400016000000003C02000139
-:1006E0008C425D9810400008240400042405000199
-:1006F0000C004D9324062000240200013C0100015F
-:1007000000370821AC2283AC3C02000100511021CB
-:100710008C427E303C03BFFF3463FFFF0043102454
-:100720003C0100010031082108005299AC227E30C2
-:100730003C0200018C425D98104000283C0300A060
-:10074000020310245443000D3C0200203C0200012F
-:100750008C425D9C240301003C0100010031082112
-:10076000AC237E443C0300013C0100010031082120
-:10077000AC237E4C080051F03442040002021024E5
-:1007800010400008240301003C0200018C425D9CE3
-:100790003C01000100310821AC237E44080051F0E7
-:1007A000344208003C020080020210241040002E57
-:1007B0003C0300013C0200018C425D9C3C010001B5
-:1007C00000310821AC237E4C34420C003C01000176
-:1007D000AC225D9C08005218240400013C02002059
-:1007E0000202102410400006240201003C01000116
-:1007F00000310821AC227E44080052013C020080F6
-:100800003C01000100310821AC207E443C02008004
-:100810000202102410400007001219403C0200019F
-:100820003C01000100230821AC227E4C0800520F3D
-:1008300024040001001211403C01000100220821A3
-:10084000AC207E4C240400010000282127B0001EAB
-:100850000C00494C02003021240400010000282132
-:100860000C00494C02003021240400012405000141
-:1008700027B0001C0C00494C020030212404000168
-:10088000240500010C00494C020030210800529957
-:10089000000000003C02FFEC3442FFFF0202802413
-:1008A0003C02000802028025001211403C010001B8
-:1008B00000220821AC307E383C02200002021024C5
-:1008C00010400009000000003C0200018C425D74F1
-:1008D00014400005240200013C010001AC225D9897
-:1008E0000800523A3C0240003C010001AC205D98F7
-:1008F0003C024000020210241440001E00000000D0
-:100900003C0200018C425D983C010001AC205CE09F
-:1009100010400007240220203C010001AC225D9C15
-:10092000240200013C01000100370821AC2283AC05
-:100930003C04BFFF001219403C020001004310219B
-:100940008C427E303C0500018CA55CC83484FFFFDE
-:10095000004410243C01000100230821AC227E3019
-:100960002402000110A20044000000000800529977
-:10097000000000003C0200018C425D981040001C09
-:10098000240220003C010001AC225D9C3C0300A03D
-:100990000203102414430005001211403402A00089
-:1009A0003C01000108005294AC225D9C3C03000114
-:1009B000006218218C637E383C0200200062102403
-:1009C00010400004240220013C0100010800529460
-:1009D000AC225D9C3C020080006210241040001F8D
-:1009E0003402A0013C01000108005294AC225D9C3D
-:1009F0003C0200200202102410400007001219409F
-:100A0000240201003C01000100230821AC227E44A5
-:100A1000080052883C020080001211403C01000195
-:100A200000220821AC207E443C02008002021024F7
-:100A300010400006001219403C0200013C01000178
-:100A40000023082108005294AC227E4C0012114071
-:100A50003C01000100220821AC207E4C3C03000137
-:100A60008C635CC8240200011062000300000000D7
-:100A70000C00429B000000008FBF00308FB3002CA1
-:100A80008FB200288FB100248FB0002003E000084F
-:100A900027BD003827BDFFD8AFB2002000809021CD
-:100AA000AFB1001C0000882124020002AFBF002467
-:100AB000AFB00018A7A0001210A200D3A7A000108A
-:100AC0002CA20003104000052402000110A2000A1D
-:100AD00000128140080053800220102124020004EB
-:100AE00010A2007D2402000810A2007C0012294000
-:100AF00008005380022010213C03000100701821DF
-:100B00008C637E3C3C0240000062102414400009CB
-:100B1000240400013C027FFF3442FFFF006288246E
-:100B20003C01000100300821AC317E3408005380C4
-:100B300002201021240500010C00494C27A60010BA
-:100B400024040001240500010C00494C27A60010D4
-:100B500097A2001030420004104000343C114000C5
-:100B60003C0200018C425DBC2443FFFF2C62000666
-:100B700010400034000310803C01000100220821D5
-:100B80008C225BE00040000800000000240400010B
-:100B90002405001127B000120C00494C020030213E
-:100BA00024040001240500110C00494C02003021EE
-:100BB00097A5001230A24000104000023C04001033
-:100BC0003C0400083C0300010800530130A28000EF
-:100BD000240400012405001427B000120C00494C25
-:100BE0000200302124040001240500140C00494CAB
-:100BF0000200302197A5001230A210001040000220
-:100C00003C0400103C0400083C03000130A2080032
-:100C1000544000013C0300023C02800002221025E7
-:100C2000006418250800530E004388253C1100017C
-:100C3000023088218E317E3C3C027FFF3442FFFF30
-:100C4000022288243C0200018C425CD81040001D26
-:100C5000001211403C0200018C425D9810400002DD
-:100C60003C02200002228825001211403C010001B4
-:100C7000002208218C227E40104000033C0200200C
-:100C800008005322022288253C02FFDF3442FFFF86
-:100C900002228824001211403C0100010022082198
-:100CA0008C227E48104000033C0200800800532D37
-:100CB000022288253C02FF7F3442FFFF0222882463
-:100CC000001211403C01000100220821AC317E34A9
-:100CD0000800538002201021001229403C0300012B
-:100CE000006518218C637E383C02400000621024AD
-:100CF000144000083C027FFF3442FFFF006288245A
-:100D00003C01000100250821AC317E3008005380F1
-:100D1000022010213C0200018C425CD810400033BC
-:100D20003C11C00C3C0200018C425D743C04C00CC0
-:100D3000348420003C0300018C635D980002102B7A
-:100D40000002102300441024106000030051882585
-:100D50003C022000022288253C02000100451021AF
-:100D60008C427E44104000033C0200200800535D8A
-:100D7000022288253C02FFDF3442FFFF0222882442
-:100D8000001211403C010001002208218C227E4CFF
-:100D9000104000033C0200800800536802228825AE
-:100DA0003C02FF7F3442FFFF022288243C02000104
-:100DB0008C425D60104000023C020800022288253F
-:100DC0003C0200018C425D64104000023C020400C1
-:100DD000022288253C0200018C425D68104000061A
-:100DE0003C0201000800537B022288253C027FFF61
-:100DF0003442FFFF00628824001211403C010001D0
-:100E000000220821AC317E30022010218FBF002447
-:100E10008FB200208FB1001C8FB0001803E00008D3
-:100E200027BD002827BDFFD8AFB400200080A02137
-:100E3000AFBF0024AFB3001CAFB20018AFB10014B5
-:100E4000AFB000108F9002003C0300018C635CC8BF
-:100E50008F93022024020002106200632C620003C0
-:100E600010400005240200011062000A001419401D
-:100E70000800544800000000240200041062005AD8
-:100E800024020008106200590014914008005448E0
-:100E9000000000003C040001008320218C847E3C83
-:100EA0003C110001022388218E317E343C02400037
-:100EB000008210241040003E3C0200080222102450
-:100EC00010400020361000023C02000100431021B7
-:100ED0008C427E4010400005361000203610010084
-:100EE0003C020020080053BD022288252402FEFF98
-:100EF000020280243C02FFDF3442FFFF02228824EA
-:100F0000001411403C010001002208218C227E487F
-:100F1000104000053C020001026298253C0200805E
-:100F2000080053DC022288253C02FFFE3442FFFF0A
-:100F3000026298243C02FF7F3442FFFF080053DC2A
-:100F4000022288242402FEDF020280243C02FFFEEB
-:100F50003442FFFF026298243C02FF5F3442FFFFED
-:100F6000022288243C01000100230821AC207E409D
-:100F70003C01000100230821AC207E480C00486A97
-:100F800000000000AF900200AF9302208F82022089
-:100F90002403FFFB00431024AF8202208F82022033
-:100FA00034420002AF820220080053F300141140C3
-:100FB0008F8202002403FFFD004310240C00486AC6
-:100FC000AF8202003C02BFFF3442FFFF0C00429B95
-:100FD00002228824001411403C0100010022082153
-:100FE00008005448AC317E34001491403C040001A8
-:100FF000009220218C847E383C110001023288212D
-:101000008E317E303C0240000082102414400011DA
-:10101000000000003C0200018C425D981440000674
-:101020003C02BFFF8F820200344200020C00486A7B
-:10103000AF8202003C02BFFF3442FFFF0C00429B24
-:10104000022288243C010001003208210800544893
-:10105000AC317E303C0200018C425D9810400005AE
-:101060003C0200203C0200018C425D741040002BC9
-:101070003C0200200082102410400007361000209F
-:10108000240201003C01000100320821AC227E4410
-:1010900008005428361001003C01000100320821EC
-:1010A000AC207E442402FEFF020280243C02008029
-:1010B0000082102410400007001419403C02000177
-:1010C0003C01000100230821AC227E4C0800543969
-:1010D00002629825001411403C0100010022082101
-:1010E000AC207E4C3C02FFFE3442FFFF026298249B
-:1010F0000C00486A00000000AF900200AF9302208D
-:101100008F8202202403FFFB00431024AF820220C1
-:101110008F82022034420002AF820220001411406C
-:101120003C01000100220821AC317E308FBF002439
-:101130008FB400208FB3001C8FB200188FB1001441
-:101140008FB0001003E0000827BD00282448656127
-:101150006465723A202F70726F6A656374732F72C0
-:1011600063732F73772F67652F2E2F6E69632F663A
-:10117000772F636F6D6D6F6E2F66776D61696E2E61
-:10118000632C7620312E312E322E313120313939F7
-:10119000382F30342F32372032323A31333A34322A
-:1011A00020736875616E6720457870202400000008
-:1011B0007468655F4441574E00000000535441433A
-:1011C0004B5F312000000000426164536E64526E38
-:1011D000670000003F456E71457674003F6E6F51A9
-:1011E00064457650000000006576526E6746756C67
-:1011F0006C000000496C6C436F6E66527800000012
-:1012000053656E64436B53756D00000052656376E1
-:10121000566C616E0000000000000000244865610B
-:101220006465723A202F70726F6A656374732F72EF
-:1012300063732F73772F67652F2E2F6E69632F6669
-:10124000772F636F6D6D6F6E2F74696D65722E638E
-:101250002C7620312E312E322E3820313939382F4C
-:1012600030372F33312031373A35383A343520731F
-:101270006875616E6720457870202400542D446D98
-:101280006152643100000000542D446D61424200FF
-:10129000542D446D613200003F6E6F5164547845A7
-:1012A000000000003F6E6F5164527845000000005E
-:1012B000656E714D4576504661696C00656E714D85
-:1012C00045764661696C00006661696C456E454D06
-:1012D000000000003F456E71457674003F6E6F510F
-:1012E00064457650000000006576526E6746756C66
-:1012F0006C00000000000000000000002448656150
-:101300006465723A202F70726F6A656374732F720E
-:1013100063732F73772F67652F2E2F6E69632F6688
-:10132000772F636F6D6D6F6E2F636F6D6D616E6480
-:101330002E632C7620312E312E322E313020313951
-:1013400039382F31312F31382031373A31313A3174
-:101350003820736875616E6720457870202400001E
-:101360003F4D626F78457674000000004E4F636F0A
-:101370006D616E6400000000687374655F455252D1
-:1013800000000000412D45727242756300000000AC
-:101390004552524F522D416464000000656E714DFC
-:1013A0004576504661696C00656E714D45764661C3
-:1013B000696C00006661696C456E454D0000000077
-:1013C000442D4572724C617374000000442D4572C7
-:1013D000723200006D4373744D6445525200000038
-:1013E00070726F6D4D6445525200000046696C7416
-:1013F0004D64455252000000636D645F45525200D7
-:101400003F456E71457674003F6E6F51644576506E
-:10141000000000006576526E6746756C6C00000037
-:101420000000000000006EA000007FBC00006E38CD
-:1014300000008734000082B00000878000008780B1
-:1014400000006F540000769400007F0C000080A81C
-:10145000000080740000878000007E70000080CC57
-:1014600000006E64000081CC00000000244865612B
-:101470006465723A202F70726F6A656374732F729D
-:1014800063732F73772F67652F2E2F6E69632F6617
-:10149000772F636F6D6D6F6E2F646D612E632C7689
-:1014A00020312E312E322E3320313939382F30343D
-:1014B0002F32372032323A31333A34312073687563
-:1014C000616E67204578702024000000646D6172B1
-:1014D0006441544E00000000646D61777241544EC7
-:1014E00000000000000000000000000024486561CA
-:1014F0006465723A202F70726F6A656374732F721D
-:1015000063732F73772F67652F2E2F6E69632F6696
-:10151000772F636F6D6D6F6E2F74726163652E63CD
-:101520002C7620312E312E322E3220313939382F7F
-:1015300030342F32372032323A31333A353020735B
-:101540006875616E672045787020240024486561C5
-:101550006465723A202F70726F6A656374732F72BC
-:1015600063732F73772F67652F2E2F6E69632F6636
-:10157000772F636F6D6D6F6E2F646174612E632CB6
-:101580007620312E312E322E3220313939382F301B
-:10159000342F32372032323A31333A3430207368C4
-:1015A00075616E67204578702024000046575F56AD
-:1015B000455253494F4E3A2023312046726920410B
-:1015C000707220372031373A35353A34382050445C
-:1015D000542032303030000046575F434F4D504961
-:1015E0004C455F54494D453A2031373A35353A3408
-:1015F0003800000046575F434F4D50494C455F420D
-:10160000593A2064657672637300000046575F4361
-:101610004F4D50494C455F484F53543A20636F6DCE
-:10162000707574650000000046575F434F4D504988
-:101630004C455F444F4D41494E3A20656E672E61DF
-:101640006374656F6E2E636F6D00000046575F43D5
-:101650004F4D50494C45523A20676363207665727E
-:1016600073696F6E20322E372E32000000000000AA
-:101670000000000000000000000000002448656138
-:101680006465723A202F70726F6A656374732F728B
-:1016900063732F73772F67652F2E2F6E69632F6605
-:1016A000772F636F6D6D6F6E2F6D656D2E632C766A
-:1016B00020312E312E322E3220313939382F30342C
-:1016C0002F32372032323A31333A3434207368754E
-:1016D000616E672045787020240000002448656111
-:1016E0006465723A202F70726F6A656374732F722B
-:1016F00063732F73772F67652F2E2F6E69632F66A5
-:10170000772F636F6D6D6F6E2F73656E642E632C14
-:101710007620312E312E322E313120313939382F89
-:1017200031322F32322031373A31373A3535207362
-:101730006875616E6720457870202400736E64645C
-:10174000654E6F51200000006E6F454E515F54583A
-:1017500000000000736E6464744E6F51200000003E
-:101760003F6E6F516454784500000000756E6B72D7
-:101770006474797065000000000000000000ACCCCB
-:101780000000ACCC0000AD9C0000AAB00000AAB0E4
-:101790000000AD9C0000AD9C0000AD9C0000AD9C25
-:1017A0000000AD9C0000AD9C0000AD9C0000AD9C15
-:1017B0000000AD9C0000AD9C0000AD9C0000AD9C05
-:1017C0000000AD9C0000AD7C000000000000BCA843
-:1017D0000000BCA80000BD700000AE4C0000B05876
-:1017E0000000BD700000BD700000BD700000BD7045
-:1017F0000000BD700000BD700000BD700000BD7035
-:101800000000BD700000BD700000BD700000BD7024
-:101810000000BD700000BD540000B0402448656168
-:101820006465723A202F70726F6A656374732F72E9
-:1018300063732F73772F67652F2E2F6E69632F6663
-:10184000772F636F6D6D6F6E2F726563762E632CCD
-:101850007620312E312E322E313920313939382F40
-:1018600030372F32342032313A33303A303520732A
-:101870006875616E6720457870202400706B52781F
-:101880004552520066726D324C617267650000000D
-:1018900072784E6F527842640000000072785144B2
-:1018A0006D61444600000000727851446D6142460B
-:1018B000000000003F6E6F51645278450000000048
-:1018C000706B5278455252730000000066726D32A0
-:1018D0004C7267530000000072784E6F42645300F0
-:1018E0003F724264446D6146000000003F724A420C
-:1018F00064446D4600000000000000000000F6781F
-:101900000000F6780000F6780000F6780000F6781F
-:101910000000F6780000F6780000F6780000F6780F
-:101920000000F6780000F6780000F6780000F678FF
-:101930000000F6780000F6780000F6700000F670FF
-:101940000000F670572D444D41456E4600000000E2
-:10195000000000000000FDC00001015C0000FDDC93
-:101960000001015C0001015C0001015C0001015CFF
-:101970000001015C0001015C0000F7040001015C52
-:101980000001015C0001015C0001015C0001015CDF
-:101990000001015400010154000101542448656113
-:1019A0006465723A202F70726F6A656374732F7268
-:1019B00063732F73772F67652F2E2F6E69632F66E2
-:1019C000772F636F6D6D6F6E2F6D61632E632C7655
-:1019D00020312E312E322E313220313939382F300C
-:1019E000342F32372032323A31333A34322073686E
-:1019F00075616E6720457870202400006D61637406
-:101A00007841544E000000004E7453796E264C6BA2
-:101A10000000000072656D61737372740000000055
-:101A20006C696E6B444F574E00000000656E714D3F
-:101A30004576504661696C00656E714D457646612C
-:101A4000696C00006661696C456E454D00000000E0
-:101A50006C696E6B55500000000000002448656101
-:101A60006465723A202F70726F6A656374732F72A7
-:101A700063732F73772F67652F2E2F6E69632F6621
-:101A8000772F636F6D6D6F6E2F636B73756D2E6344
-:101A90002C7620312E312E322E3220313939382F0A
-:101AA00030342F32372032323A31333A33392073DF
-:101AB0006875616E672045787020240050726F62EF
-:101AC00065506879000000006C6E6B4153535254AE
-:101AD0000000000000011B2C00011BC400011BF8CA
-:101AE00000011C2C00011C5800011C6C00011CA8EA
-:101AF0000001207C00011DE400011E2400011E5095
-:101B000000011E9000011EC000011EFC00011F30DC
-:101B10000001207C000122C0000122D80001230026
-:101B2000000123200001234800012478000124A0A3
-:101B3000000124F40001251C000000000001278C96
-:101B40000001285C0001293400012A0400012A60F8
-:101B500000012B3C00012B6400012C4000012C688B
-:101B600000012E1000012E3800012FE0000131D8B5
-:101B70000001346C000133800001346C00013498A2
-:101B800000013008000131B00000000000013B847A
-:101B900000013BC800013C6000013CAC00013D1C61
-:101BA00000013DB400013DE800013E7000013F0826
-:101BB00000013FD8000140180001409C000140C0D6
-:101BC000000141F4646F42617365506700000000DA
-:101BD00000000000000000000000000073746D6150
-:101BE000634C4E4B000000000000000000014C3828
-:101BF00000014C3800014B8000014BC400014C38FF
-:101C000000014C380000000000000000000000004F
-:101C100000000000000000000000000000000000C4
-:101C2000000000000000000000000000416C74652E
-:101C30006F6E204163654E4943205600416C7465C8
-:101C40006F6E204163654E49432056004242424236
-:101C50000000000000000000000000000013541805
-:101C60000013E7FC0000000000000000000000007E
-:101C70000000000000000000000000000060CF0035
-:101C800000000060CF000000000000000000000025
-:101C90000000000000000000000000000000000044
-:101CA0000000000000000000000000000000000034
-:101CB0000000000000000000000000000000000024
-:101CC0000000000000000000000000000000000014
-:101CD0000000000000000000000000030000000001
-:101CE00000000001000000000000000000000000F3
-:101CF00000000001000000000000000100000000E2
-:101D000000000000000000000000000000000001D2
-:101D100000000001000000000000000000000000C2
-:101D20000000000000000000010000002100000091
-:101D30001200014000000000000000002000000030
-:101D4000120000A0000000001200006012000180DC
-:101D5000120001E000000000000000000000000090
-:101D60000000000100000000000000000000000072
-:101D70000000000000000000000000000000000261
-:101D8000000000000000000000030001000000014E
-:0C1D900000030201000000000000000041
-:00000001FF
-/* tg1 firmware v12.4.11 */
diff --git a/firmware/acenic/tg2.bin.ihex b/firmware/acenic/tg2.bin.ihex
deleted file mode 100644
index a9ff4f431f22..000000000000
--- a/firmware/acenic/tg2.bin.ihex
+++ /dev/null
@@ -1,4844 +0,0 @@
-:100000000C040B0000004000000040000000000055
-:1000100010000003000000000000000D0000000DB3
-:100020003C1D00018FBD6D2003A0F0213C1000009D
-:10003000261040000C0010C0000000000000000D61
-:100040003C1D00018FBD6D2403A0F0213C10000079
-:10005000261040000C0017E0000000000000000D1A
-:100060000000000000000000000000000000000090
-:100070000000000000000000000000000000000080
-:100080000000000000000000000000000000000070
-:100090000000000000000000000000000000000060
-:1000A0000000000000000000000000000000000050
-:1000B0000000000000000000000000000000000040
-:1000C0000000000000000000000000000000000030
-:1000D0000000000000000000000000000000000020
-:1000E0000000000000000000000000000000000010
-:1000F0000000000000000000000000000000000000
-:1001000000000000000000000000000002000008E5
-:10011000000000000800172F3C0A00010800172FFC
-:100120003C0A00020800172F0000000008002CAC59
-:100130000000000008002C4F000000000800172FEE
-:100140003C0A00040800328A0000000008001A522D
-:10015000000000000800394D00000000080038F4DD
-:10016000000000000800172F3C0A0006080039BBF9
-:100170003C0A00070800172F3C0A00080800172F48
-:100180003C0A000908003A130000000008002EA6EF
-:10019000000000000800172F3C0A000B0800172F72
-:1001A0003C0A000C0800172F3C0A000D080028FB31
-:1001B0000000000008002890000000000800172F31
-:1001C0003C0A000E0800208C0000000008001964A2
-:1001D0000000000008001A040000000008003CA60F
-:1001E0000000000008003C94000000000800172FE9
-:1001F000000000000800191A000000000800172F76
-:10020000000000000800172F3C0A00130800172FF9
-:100210003C0A001400000000000000000000000084
-:1002200000000000000000000000000000000000CE
-:1002300000000000000000000000000000000000BE
-:1002400000000000000000000000000000000000AE
-:10025000000000000000000000000000000000009E
-:10026000000000000000000000000000000000008E
-:10027000000000000000000000000000000000007E
-:10028000000000000000000000000000000000006E
-:10029000000000000000000000000000000000005E
-:1002A000000000000000000000000000000000004E
-:1002B000000000000000000000000000000000003E
-:1002C000000000000000000000000000000000002E
-:1002D000000000000000000000000000000000001E
-:1002E000000000000000000000000000000000000E
-:1002F00000000000000000000000000000000000FE
-:1003000000000000000000000000000027BDFFE02A
-:100310003C1CC000AFBF001CAFB000188F82014072
-:1003200024030003AF8300EC344200040C002B20B4
-:10033000AF8201403C0100C00C001763AC203FFCC1
-:10034000004018213C0200103C010001AC236E9CCF
-:10035000106200110043102B144000023C020020E8
-:100360003C0200081062000C240501003C0600015C
-:100370008CC66E9C3C04000124845C74000038210F
-:10038000AFA000100C002B3BAFA000143C020020DB
-:100390003C010001AC226E9C240200083C010001DB
-:1003A000AC226EB42402001F3C010001AC226EC4DA
-:1003B000240200163C010001AC226E983C05FFFEB1
-:1003C00034A56F083C0200018C426E9C3C03000285
-:1003D000246390103C0400018C846CC400431023FF
-:1003E00014800002004580212610FA382402F00013
-:1003F000020280240C00178502002021020228231B
-:100400003C0400200082182300651823247BB000E0
-:100410003C03FFFE3463BF080363B8213C0600BF02
-:1004200034C6F0003C0700018CE76CC03C0300BF01
-:100430003463E000008520233C010001AC246EA859
-:10044000008220233C010001AC256E90000528426B
-:100450003C010001AC226E8427620FFC3C010001CC
-:10046000AC226D2027621FFC00DB3023007B1823A9
-:100470003C010001AC246E883C010001AC256EAC4F
-:100480003C010001AC226D24AF86015010E0001148
-:10049000AF8302503C1D00018FBD6CCC03A0F02146
-:1004A0000C001749000000003C0200018C426CD097
-:1004B0003C0300018C636CD42442FE0024630200E0
-:1004C0003C010001AC226CD03C0100011000000492
-:1004D000AC236CD43C1D00018FBD6D2003A0F02126
-:1004E0003C0200018C426CC41040000D26FAFA3820
-:1004F0003C0200018C426CD03C0300018C636CD444
-:100500003C1A00018F5A6CD42442FA38246305C87F
-:100510003C010001AC226CD03C010001AC236CD446
-:100520003C0200018C426CC8144000030000000033
-:100530003C010001AC206CD00C0011510000000007
-:100540008FBF001C8FB0001803E0000827BD0020FB
-:100550003C0200018C426CD03C0300018C636CD4E3
-:1005600027BDFF98AFB000483C1000018E1066B860
-:10057000AFB200503C12000026524100AFBF0060F5
-:10058000AFBE005CAFB50058AFB30054AFB1004C84
-:10059000AFA20034AFA30030AFA00010AFA0001492
-:1005A0008F8600403C04000124845C802405020006
-:1005B0003C010001AC326E800C002B3B0200382164
-:1005C0008F8300403C02F000006218243C0260006F
-:1005D0001062000BA3A0003F240E00013C040001A8
-:1005E00024845C88A3AE003FAFA00010AFA000142D
-:1005F0008F860040240503000C002B3B02003821AD
-:100600008F8202403C03000100431025AF8202406C
-:10061000AF8000488F8200481440000500000000B1
-:10062000AF8000488F8200481040000400000000A6
-:10063000AF8000481000000302E02021AF80004C92
-:1006400002E020213C0500010C002BA834A540F855
-:10065000034020210C002BA8240505C83C02000102
-:100660008C426EA83C0D00018DAD6E883C030001EC
-:100670008C636E843C0800018D086E903C0900017B
-:100680008D296EAC3C0A00018D4A6EB43C0B000112
-:100690008D6B6EC43C0C00018D8C6E983C04000187
-:1006A00024845C9424050400AF42013C8F42013C49
-:1006B0002406000124070001AF400000AF4D0138BF
-:1006C000AF430144AF480148AF49014CAF4A015024
-:1006D000AF4B0154AF4C01582442FF80AF42014060
-:1006E00024020001AFA200100C002B3BAFA00014AD
-:1006F0008F420138AFA200108F42013CAFA200141C
-:100700008F4601448F4701483C04000124845CA0CB
-:100710000C002B3B24050500AFB70010AFBA001446
-:100720008F46014C8F4701503C04000124845CAC8F
-:100730000C002B3B240506003C0200018C426E9C01
-:10074000036038213C06000224C690102448FFFFB5
-:100750000106182400E810240043102B1040000666
-:10076000240509003C04000124845CB8AFA80010F3
-:100770000C002B3BAFA000148F82000CAFA2001026
-:100780008F82003CAFA200148F8600008F87000488
-:100790003C04000124845CC40C002B3B24051000A5
-:1007A0008C0202208C0302248C0602188C07021C87
-:1007B0003C04000124845CCC24051100AFA200108D
-:1007C0000C002B3BAFA30014AF800054AF80011C82
-:1007D0008C020218304200021040000900000000A4
-:1007E0008C0202203C030002346300040043102505
-:1007F000AF42000C8C02021C1000000834420004BE
-:100800008C0202203C0300023463000600431025E2
-:10081000AF42000C8C02021C34420006AF420014AE
-:100820008C020218304200101040000A0000000044
-:100830008C02021C34420004AF4200108C020220E1
-:100840003C03000A34630004004310251000000933
-:10085000AF4200088C0202203C03000A3463000609
-:1008600000431025AF4200088C02021C34420006EF
-:10087000AF42001024020001AF8200A0AF8200B09E
-:100880008F8300548F820054AF8000D0AF8000C0AF
-:1008900010000002246300648F8200540062102361
-:1008A0002C4200651440FFFC000000008C0402088C
-:1008B0008C05020C26E20028AEE2002024020490FF
-:1008C000AEE20010AEE40008AEE5000C26E400083D
-:1008D0008C8200008C830004AF820090AF83009470
-:1008E0008C820018AF8200B49482000AAF82009C10
-:1008F0008F420014AF8200B08F8200B030420004FB
-:100900001440FFFD000000008F8200B03C03EF00A8
-:100910000043102410400021000000008F8200B42A
-:10092000AFA200108F8200908F8300943C040001DE
-:1009300024845CD4AFA300148F8600B08F87009C02
-:100940003C0500010C002B3B34A5200D3C040001AC
-:1009500024845CE0240203C0AFA20010AFA0001406
-:100960008F8601443C07000124E75CE80C002B3B28
-:100970003405DEAD8F82011C34420002AF82011CBF
-:100980008F82022034420004AF8202208F82014015
-:100990003C03000100431025AF82014096E204723F
-:1009A00096E6045296E70462AFA2001096E2048233
-:1009B0003C04000124845D14240512000C002B3B30
-:1009C000AFA2001496F0045232020001104000025F
-:1009D0000000B02124160001320200025440000140
-:1009E00036D60002320200085440000136D6000418
-:1009F000320200105440000136D6000832020020B6
-:100A00005440000136D6001032020040544000012C
-:100A100036D60020320200805440000136D6004015
-:100A200096E6048230C202005440000136D64000EF
-:100A300096E304723062020010400003306201004D
-:100A40001000000336D620005440000136D61000B6
-:100A500096F0046232C24000144000043207009B4A
-:100A600030C2009B14E20007240E000132C22000B5
-:100A70001440000D320200013062009B10E20009B8
-:100A8000240E00013C04000124845D202405130091
-:100A900002003821A3AE003FAFA300100C002B3B97
-:100AA000AFA00014320200015440000136D600808D
-:100AB000320200025440000136D601003202000822
-:100AC0005440000136D602003202001054400001AA
-:100AD00036D60400320200805440000136D60800A9
-:100AE0008C02021830420200104000023C02000852
-:100AF00002C2B0258C0202183042080010400002E9
-:100B00003C02008002C2B0258C0202183042040070
-:100B1000104000023C02010002C2B0258C02021803
-:100B200030420100104000023C02020002C2B02527
-:100B30008C02021830420080104000023C02040087
-:100B400002C2B0258C020218304220001040000280
-:100B50003C02001002C2B0258C0202183042400054
-:100B6000104000023C02002002C2B0258C02021894
-:100B700030421000104000023C02004002C2B0258A
-:100B80008EE204988EE3049CAF420160AF4301649F
-:100B90008EE204A08EE304A4AF420168AF43016C6F
-:100BA0008EE204A88EE304ACAF420170AF4301743F
-:100BB0008EE204288EE3042CAF420178AF43017C1F
-:100BC0008EE204488EE3044CAF420180AF430184BF
-:100BD0008EE204588EE3045CAF420188AF43018C7F
-:100BE0008EE204688EE3046CAF420190AF4301943F
-:100BF0008EE204788EE3047CAF420198AF43019CFF
-:100C00008EE204888EE3048CAF4201A0AF4301A4BE
-:100C10008EE204B08EE304B424040080AF4201A845
-:100C2000AF4301AC0C002BA8240500808C02025CB1
-:100C300027440224AF4201F08C0202602405020026
-:100C4000240600080C002BBFAF4201F83C043B9A7D
-:100C50003484CA0000003821240200062403000264
-:100C6000AF4201F4240203E8AF430204AF430200A1
-:100C7000AF4401FCAF42029424020001AF43029052
-:100C8000AF42029C3C0300010067182190636CD8BE
-:100C90000347102124E70001A043022C2CE2000F9F
-:100CA0001440FFF80347182124E700013C08000125
-:100CB000350840F88F8200403C04000124845D2CFC
-:100CC000240514000002170224420030A062022C06
-:100CD00003471021A040022C8C07021802C03021CB
-:100CE000240205C8AFA200100C002B3BAFA80014D3
-:100CF0003C04000124845D383C05000024A55C8090
-:100D00002406001027B100300220382127B3003418
-:100D10000C0017A3AFB300103C0300018C636CC838
-:100D20001060000A004080218FA300302405FF00DE
-:100D30008FA20034246400FF008520240083182340
-:100D400000431023AFA20034AFA400303C040001E4
-:100D500024845D443C05000024A5410024060108CC
-:100D6000022038210C0017A3AFB3001000409021DF
-:100D700032C200033C010001AC326E8010400045DD
-:100D8000022038218F8200503C03001000431024C1
-:100D900010400016000000008C0202183042004093
-:100DA0001040000F240200018F8200508C030218B3
-:100DB000240E00013C04000124845D50A3AE003FDA
-:100DC000AFA20010AFA300148F87004024051500C8
-:100DD0000C002B3B02C0302110000004000000007A
-:100DE0003C01000100370821A02240F43C0400012E
-:100DF00024845D5C3C05000124A55B403C060001A9
-:100E000024C65BAC00C530238F42001027B30030EE
-:100E10000260382127B1003434420A00AF4200108A
-:100E20000C0017A3AFB100103C04000124845D70D6
-:100E30003C05000124A5B7143C06000124C6BA9065
-:100E400000C5302302603821AF4201080C0017A30F
-:100E5000AFB100103C04000124845D8C3C0500010E
-:100E600024A5BE583C06000124C6C90000C5302395
-:100E7000026038213C010001AC226EF40C0017A383
-:100E8000AFB100103C04000124845DA410000024D4
-:100E9000240516003C04000124845DAC3C050001DF
-:100EA00024A5A10C3C06000124C6A23800C53023AD
-:100EB0000C0017A3AFB300103C04000124845DBCF8
-:100EC0003C05000124A5B2B03C06000124C6B70CC5
-:100ED00000C5302302203821AF4201080C0017A3BF
-:100EE000AFB300103C04000124845DD03C05000138
-:100EF00024A5BA983C06000124C6BE5000C5302384
-:100F0000022038213C010001AC226EF40C0017A332
-:100F1000AFB300103C04000124845DE424051650A6
-:100F200002C03021000038213C010001AC226EF8E3
-:100F3000AFA000100C002B3BAFA0001432C2002069
-:100F40001040002127A700303C04000124845DF0FC
-:100F50003C05000124A5B13C3C06000124C6B2A812
-:100F600000C5302324022000AF42001C27A2003419
-:100F70000C0017A3AFA20010000219000003198291
-:100F80003C04080000641825AE4300282403001028
-:100F9000AF43003C96E30450AF4300408F43004012
-:100FA0003C04000124845E04AFA00014AFA3001031
-:100FB0008F47001C240516603C010001AC226EF036
-:100FC0001000002532C600208EE204488EE3044C57
-:100FD000AF43001C8F42001C2442E0002C42200141
-:100FE0001440000A240E00013C04000124845E1019
-:100FF000A3AE003FAFA00010AFA000148F46001CAE
-:10100000240517000C002B3B000038213C02000097
-:1010100024425CBC00021100000211823C03080063
-:1010200000431025AE42002824020008AF42003CD5
-:1010300096E20450AF4200408F4200403C04000161
-:1010400024845E1CAFA00014AFA200108F47001CC8
-:101050002405180032C600200C002B3B00000000C5
-:101060003C050FFF3C0300018C636EF434A5FFFFC9
-:10107000024030213C0200018C426EF83C04080022
-:101080000065182400031882006418250045102408
-:101090000002108200441025ACC2008032C20180E0
-:1010A00010400056ACC300208F82005C3C030080DF
-:1010B000004310241040000D000000008F820050FB
-:1010C000AFA200108F82005C240E00013C040001DE
-:1010D00024845E28A3AE003FAFA200148F87004097
-:1010E000240519000C002B3B02C030218F820050D8
-:1010F0003C030010004310241040001600000000C4
-:101100008C020218304200401040000F24020001FF
-:101110008F8200508C030218240E00013C04000151
-:1011200024845D50A3AE003FAFA20010AFA3001413
-:101130008F870040240520000C002B3B02C030218B
-:1011400010000004000000003C01000100370821ED
-:10115000A02240F43C04000124845E343C050001DC
-:1011600024A55AC03C06000124C65B3800C53023C4
-:101170008F42000827B300300260382127B10034C5
-:1011800034420E00AF4200080C0017A3AFB10010AC
-:101190003C04000124845E4C3C05000124A5D8B425
-:1011A0003C06000124C6E3C800C530230260382194
-:1011B000AF42010C0C0017A3AFB100103C040001BA
-:1011C00024845E643C05000124A5E9AC3C060001D2
-:1011D00024C6F0F000C53023026038213C01000134
-:1011E000AC226F040C0017A3AFB100103C04000147
-:1011F00024845E7C10000027240521003C040001AB
-:1012000024845E843C05000124A59FC83C0600019F
-:1012100024C6A10400C5302327B1003002203821A4
-:1012200027B300340C0017A3AFB300103C04000137
-:1012300024845E943C05000124A5CAD43C06000128
-:1012400024C6D8AC00C5302302203821AF42010C9F
-:101250000C0017A3AFB300103C04000124845EA46B
-:101260003C05000124A5E84C3C06000124C6E9A485
-:1012700000C53023022038213C010001AC226F045C
-:101280000C0017A3AFB300103C04000124845EB827
-:101290002405215002C03021000038213C0100010A
-:1012A000AC226F10AFA000100C002B3BAFA00014BD
-:1012B0003C110FFF3C0300018C636F043631FFFFCC
-:1012C000024098213C0200018C426F103C0E080045
-:1012D0000071182400031882006E18250051102494
-:1012E00000021082004E1025AE630038AE62007816
-:1012F0008C02021830420040144000042402000115
-:101300003C01000100370821A02240F43C04000108
-:1013100024845EC43C05000124A5E3D03C06000102
-:1013200024C6E52C00C5302327BE003003C0382179
-:1013300027B500340C0017A3AFB500103C01000125
-:10134000AC226EFC00511024000210823C0E0800FA
-:10135000004E1025AE62005032C220001040000640
-:1013600003C038213C02000024425CBC022210244D
-:101370001000000F000210823C04000124845ED89B
-:101380003C05000124A5E5343C06000124C6E6E442
-:1013900000C530230C0017A3AFB500103C010001BD
-:1013A000AC226F1400511024000210823C0E080081
-:1013B000004E1025AE62004832C2400010400005C9
-:1013C00027A700303C02000024425CBC1000000E45
-:1013D000000211003C04000124845EF03C05000181
-:1013E00024A5E6EC3C06000124C6E84400C53023F1
-:1013F00027A200340C0017A3AFA200103C0100018B
-:10140000AC226F0800021100000211823C030800A8
-:1014100000431025AE4200603C04000124845F08B4
-:101420003C05000124A582303C06000124C68650FC
-:1014300000C5302327B100300220382127B3003403
-:101440000C0017A3AFB300103C0E0FFF35CEFFFF0B
-:101450003C04000124845F143C05000024A564685A
-:101460003C06000024C6658800C5302302203821D0
-:101470000240F0213C010001AC226EDC004E102441
-:10148000000210823C15080000551025AFAE004444
-:10149000AFC200B80C0017A3AFB300103C040001AA
-:1014A00024845F203C05000024A565903C060000D4
-:1014B00024C668088FAE004400C5302302203821BE
-:1014C0003C010001AC226ED0004E102400021082BC
-:1014D00000551025AFC200E80C0017A3AFB30010F1
-:1014E0003C04000124845F383C05000024A56810FA
-:1014F0003C06000024C669408FAE004400C530237E
-:10150000022038213C010001AC226EC8004E10249C
-:101510000002108200551025AFC200C00C0017A3B6
-:10152000AFB300103C04000124845F503C0500016F
-:1015300024A5FAD03C06000124C6FBA88FAE0044C7
-:1015400000C53023022038213C010001AC226ED4BA
-:10155000004E10240002108200551025AFC200C8B2
-:101560000C0017A3AFB300103C04000124845F5C9F
-:101570003C05000124A5C93C3C06000124C6CA2044
-:1015800000C5302302203821AF4201100C0017A300
-:10159000AFB300103C04000124845F6C3C050001E3
-:1015A00024A5C9103C06000124C6C93400C5302357
-:1015B00002203821AF4201240C0017A3AFB3001062
-:1015C0003C04000124845F7C3C05000124A55A8072
-:1015D0003C06000124C65AAC00C530230220382145
-:1015E000AF420120AF4201140C0017A3AFB30010AB
-:1015F0003C04000124845F883C05000124A5F29886
-:101600003C06000124C6F6B400C530230220382170
-:10161000AF4201180C0017A3AFB300108FAE004407
-:101620003C010001AC226F18004E10240002108211
-:10163000005510250C003FC3AFC200D00C003C4049
-:10164000000000000C0027A800000000AC000228E9
-:10165000AC00022C96E204502442FFFFAF42003857
-:1016600096E20460AF42008032C2400014400003A2
-:101670000000000096E20480AF42008496E70490E8
-:1016800050E000012407080024E2FFFFAF42008879
-:10169000AF42007C2402080010E2000F32C240007A
-:1016A000104000032402040010E2000B00000000C0
-:1016B000240E00013C04000124845F98A3AE003F87
-:1016C00096E604902405217002C03821AFA00010D6
-:1016D0000C002B3BAFA000148F4301388F4401381E
-:1016E00024020001A34205C2AF430094AF44009816
-:1016F000AFA00010AFA000148F4600808F47008479
-:101700003C04000124845FA40C002B3B2405220030
-:101710000C0024A43C1108003C1433D83694CB5858
-:101720003C020800344200803C04000124845FB085
-:101730003C05000024A55D003C06000024C65D1C9D
-:1017400000C5302327A70030AF8200602402FFFFCE
-:10175000AF82006427A200340C0017A3AFA20010D0
-:101760003C010001AC226EB800021100000211829F
-:10177000005110250C0018FCAE4200008F82024080
-:101780003C03000100431025AF8202403C020000F0
-:1017900024424034AF820244AF8002408F82006016
-:1017A00000511024144000053C0308008F820060A3
-:1017B000004310241040FFFD000000000C003C4DD1
-:1017C000000088213C020100AFA200208F530018C6
-:1017D000240200FF56620001267100018C020228DB
-:1017E0001622000E001330C08F42033C2442000139
-:1017F000AF42033C8F42033C8C0202283C040001B0
-:1018000024845C243C050009AFA00014AFA20010A2
-:101810008FA600201000003F34A5010000D7102142
-:101820008FA300208FA40024AC4304C0AC4404C4A4
-:1018300000C018218F4401788F45017C00001021E1
-:1018400024070004AFA70010AFB100148F48000CAC
-:1018500024C604C002E63021AFA800188F48010C4E
-:101860002407000800A3282100A3482B0082202180
-:101870000100F809008920211440000B240700080A
-:101880008F820120AFA200108F8201243C0400014E
-:1018900024845C2C3C050009AFA200148FA6002014
-:1018A0001000001C34A502008F4401608F450164C4
-:1018B0008F43000CAF5100188F86012024020010C6
-:1018C000AFA20010AFB10014AFA300188F42010CFB
-:1018D0000040F80924C6001C14400010000000005D
-:1018E0008F42034024420001AF4203408F42034035
-:1018F0008F820120AFA200108F8201243C040001DE
-:1019000024845C343C050009AFA200148FA600209B
-:1019100034A503000C002B3B026038218F4202E407
-:1019200024420001AF4202E48F4202E493A2003F4E
-:10193000104000693C02070034423000AFA200288A
-:101940008F530018240200FF126200020000882159
-:10195000267100018C0202281622000E001330C0EE
-:101960008F42033C24420001AF42033C8F42033CC0
-:101970008C0202283C04000124845C243C050009FC
-:10198000AFA00014AFA200108FA600281000003FE7
-:1019900034A5010000D710218FA300288FA4002CAC
-:1019A000AC4304C0AC4404C400C018218F44017887
-:1019B0008F45017C0000102124070004AFA7001010
-:1019C000AFB100148F48000C24C604C002E63021D9
-:1019D000AFA800188F48010C2407000800A3282195
-:1019E00000A3482B008220210100F8090089202152
-:1019F0001440000B240700088F820120AFA20010C2
-:101A00008F8201243C04000124845C2C3C050009E5
-:101A1000AFA200148FA600281000001C34A50200FD
-:101A20008F4401608F4501648F43000CAF51001853
-:101A30008F86012024020010AFA20010AFB1001465
-:101A4000AFA300188F42010C0040F80924C6001C07
-:101A500014400010000000008F42034024420001A7
-:101A6000AF4203408F4203408F820120AFA200109B
-:101A70008F8201243C04000124845C343C0500096D
-:101A8000AFA200148FA6002834A503000C002B3B46
-:101A9000026038218F4202F024420001AF4202F07E
-:101AA0008F4202F03C04000124845FC0AFA000100C
-:101AB000AFA000148FA60028240523000C002B3BA8
-:101AC0000000382110000004000000008C020264B5
-:101AD00010400005000000008F8200A0304200048A
-:101AE0001440FFFA000000008F82004434420004DA
-:101AF000AF8200448F42030824420001AF42030832
-:101B00008F4203088F8200D88F8300D400431023B4
-:101B10002442FF80AF4200908F4200902842FF8114
-:101B200010400006240200018F4200908F430144C0
-:101B300000431021AF42009024020001AF42008C0C
-:101B400032C2000810400006000000008F8202141C
-:101B50003C0381003042FFFF00431025AF82021496
-:101B60003C0300018C636D94306200021040000958
-:101B7000306200013C04000124845FCC3C0500007D
-:101B800024A56D503C06000024C671C81000001248
-:101B900000C5302310400009000000003C04000193
-:101BA00024845FDC3C05000024A571D03C060000C5
-:101BB00024C676781000000800C530233C040001DC
-:101BC00024845FEC3C05000024A569483C06000025
-:101BD00024C66D4800C5302327A7003027A2003453
-:101BE0000C0017A3AFA200103C010001AC226ECC88
-:101BF0003C0200018C426ECC3C0308000002110044
-:101C00000002118200431025AE4200408F8200A0E6
-:101C1000AFA200108F8200B0AFA200148F86005CCC
-:101C20008F87011C3C04000124845FFC3C010001FF
-:101C3000AC366EA43C010001AC206E943C01000166
-:101C4000AC3C6E8C3C010001AC3B6EBC3C01000125
-:101C5000AC376EC03C010001AC3A6EA00C002B3BCF
-:101C6000240524008F820200AFA200108F82022080
-:101C7000AFA200148F8600448F8700503C040001FF
-:101C8000248460080C002B3B240525008F83006012
-:101C90000074100B0242000A0200F821000000004C
-:101CA0000000000D8FBF00608FBE005C8FB5005834
-:101CB0008FB300548FB200508FB1004C8FB00048EA
-:101CC00003E0000827BD006827BDFFE03C040001D9
-:101CD00024846014240526000000302100003821EF
-:101CE000AFBF0018AFA000100C002B3BAFA000143A
-:101CF0008FBF001803E0000827BD002003E00008A4
-:101D00000000000003E000080000000000000000E8
-:101D100000000000000000000000000000000000C3
-:101D200003E000080000000003E0000800000000DD
-:101D300027BDFDE027A500183C04DEAD3484BEEFCE
-:101D4000AFBF02188F8201503C03001F3463FFFFB6
-:101D5000AFA4001800A2282300A328248CA200000E
-:101D60001044000A00000000AFA500108CA2000083
-:101D7000AFA200148F8601508F8702503C040001EF
-:101D80002484601C0C002B3B240527008FBF021805
-:101D900003E0000827BD022027BDFFE03C06ABBAE8
-:101DA00034C6BABEAFB000183C1000043C07007F38
-:101DB00034E7FFFFAFBF001C001028408E04000076
-:101DC0008CA30000ACA00000AE0600008CA20000B6
-:101DD000ACA3000010460005AE04000000A0802166
-:101DE00000F0102B1040FFF5001028403C040001CB
-:101DF00024846028240528000200302100003821B6
-:101E0000AFA000100C002B3BAFA00014020010216B
-:101E10008FBF001C8FB0001803E0000827BD002012
-:101E20008C0202243047003F10E000100080302177
-:101E3000000028212403002000E3102410400002A9
-:101E40000006304200A62821000318421460FFFB60
-:101E500000E310242402F00000A228243402FFFF33
-:101E60000045102B144000033C0200011000000844
-:101E70003C0200013442FFFF008518230043102B71
-:101E80001440000300A010213C02FFFE008210213C
-:101E900003E000080000000027BDFFD0AFB5002818
-:101EA0008FB50040AFB2002000A09021AFB1001C60
-:101EB00024C60003AFBF002CAFB30024AFB000189E
-:101EC0008EA200002403FFFC00C380240050102BCE
-:101ED0001440001B00E088218E330000AFB00010DA
-:101EE0008EA20000AFA200148E270000240530004F
-:101EF0000C002B3B024030218E230000007020217B
-:101F00000064102B10400007024028218CA2000022
-:101F1000AC620000246300040064102B1440FFFB3B
-:101F200024A500048EA2000000501023AEA20000E1
-:101F30008E220000005010211000000BAE22000085
-:101F40002402002DA0820000AFB000108EA200007D
-:101F500002409821AFA200148E2700002405310012
-:101F60000C002B3B02603021026010218FBF002C3F
-:101F70008FB500288FB300248FB200208FB1001CD2
-:101F80008FB0001803E0000827BD003027BDFFE830
-:101F90003C1CC0003C05FFFE3C0300018C636E84CA
-:101FA0003C0400018C846E9034A5BF0824021FFC01
-:101FB0003C010001AC226CD03C0200C03C0100019D
-:101FC000AC226CD43C020020AFBF00103C0100C02A
-:101FD000AC201FFC0043102300441023245BB000FE
-:101FE0000365B8213C1D00018FBD6CCC03A0F0211E
-:101FF0003C0400C0348402003C1A00C03C0300C012
-:10200000346307C824021DFC3C010001AC226CD0E3
-:10201000240218343C010001AC246CD43C010001C2
-:10202000AC226CD03C010001AC236CD40C00180D28
-:10203000375A02008FBF001003E0000827BD0018C8
-:1020400027BDFFC83C04000124846034240532000D
-:102050003C0200018C426CD03C0300018C636CD4C8
-:102060000000302103603821AFBF0030AFB3002C37
-:10207000AFB20028AFB10024AFB00020AFA2001C67
-:10208000AFA30018AFB700100C002B3BAFBA001481
-:102090000C001916000000008F8202403442000438
-:1020A000AF82024024020001AF4200003C02000166
-:1020B00000571021904240F4104000922403FFFC8E
-:1020C0003C1000012610AC733C1200012652A84CB3
-:1020D00002121023004380248FA3001C3C04000143
-:1020E000248460400070102B1440001A27B300189D
-:1020F0008FB100182405300002403021AFB000102D
-:10210000AFA300140C002B3B022038218FA3001832
-:10211000007020210064102B104000070240302185
-:102120008CC20000AC620000246300040064102B29
-:102130001440FFFB24C600048FA2001C0050102393
-:10214000AFA2001C8E620000005010211000000A97
-:10215000AE6200000240882124053100AFB00010BB
-:10216000AFA300148FA70018022030212402002DF5
-:102170000C002B3BA0820000240700208FA3001C32
-:102180003C0400012484605C241200203C01000116
-:10219000AC316EB02C6200201440001D27B1001835
-:1021A0008FB00018240530003C06000124C66F5093
-:1021B000AFA70010AFA300140C002B3B0200382186
-:1021C0008FA300183C04000124846F502465002074
-:1021D0000065102B10400007000000008C820000FA
-:1021E000AC620000246300040065102B1440FFFB68
-:1021F000248400048FA2001C00521023AFA2001CF4
-:102200008E220000005210211000000BAE220000B0
-:102210003C10000126106F5024053100AFA70010BC
-:10222000AFA300148FA70018020030212402002D54
-:102230000C002B3BA0820000240700203C0400017E
-:10224000248460708FA3001C241200203C01000134
-:10225000AC306EE42C6200201440001D27B1001841
-:102260008FB00018240530003C06000124C66F70B2
-:10227000AFA70010AFA300140C002B3B02003821C5
-:102280008FA300183C04000124846F702465002093
-:102290000065102B10400007000000008C82000039
-:1022A000AC620000246300040065102B1440FFFBA7
-:1022B000248400048FA2001C00521023AFA2001C33
-:1022C0008E220000005210211000000BAE220000F0
-:1022D0003C10000126106F7024053100AFA70010DC
-:1022E000AFA300148FA70018020030212402002D94
-:1022F0000C002B3BA08200003C01000110000031CB
-:10230000AC306EE03C1000012610821F3C12000130
-:102310002652809C02121023004380248FA3001CAD
-:102320003C040001248460840070102B1440001AC7
-:1023300027B300188FB10018240530000240302167
-:10234000AFB00010AFA300140C002B3B02203821CB
-:102350008FA30018007020210064102B104000078C
-:10236000024030218CC20000AC62000024630004F3
-:102370000064102B1440FFFB24C600048FA2001C35
-:1023800000501023AFA2001C8E62000000501021EC
-:102390001000000AAE6200000240882124053100CE
-:1023A000AFB00010AFA300148FA700180220302197
-:1023B0002402002D0C002B3BA08200003C010001F8
-:1023C000AC316EB03C0300018C636EB0240204009B
-:1023D0000060F809AF8200708FBF00308FB3002C0F
-:1023E0008FB200288FB100248FB0002003E00008D6
-:1023F00027BD003800000000000000008F82004070
-:102400003C03F000004310243C036000144300062A
-:10241000000000008F8200502403FF80004310243E
-:1024200034420055AF8200508F820054244203E8AA
-:10243000AF820058240201F4AF4200E024020004FD
-:10244000AF4200E824020002AF4001B0AF4000E418
-:10245000AF4200DCAF4000D8AF4000D403E000083A
-:10246000AF4000D08F8200542442000503E00008F2
-:10247000AF82007827BDFFE8AFBF00108F82005405
-:10248000244203E8AF8200583C02080002C2102434
-:10249000104000043C02F7FF3442FFFF02C2B024A8
-:1024A000369400403C0200018C426DA81040001799
-:1024B0003C0202003C0300018C636F1C106000169C
-:1024C0000282A0253C0200018C426E44144000129E
-:1024D0003C0202003C0200018C426D943042000339
-:1024E0001440000D3C0202008F8302243C020002D3
-:1024F0008C428FEC106200083C0202000C003DAFE1
-:1025000000000000100000043C0202000C00419694
-:10251000000000003C02020002C210241040000330
-:10252000000000000C001F4B000000008F4200D88C
-:102530008F4300DC24420001AF4200D80043102B3F
-:102540001440000300000000AF4000D83694008023
-:102550008C0302381060000C000000008F4201B0B4
-:10256000244203E8AF4201B00043102B14400006A0
-:1025700000000000934205C5144000030000000065
-:102580000C001DA0000000008FBF001003E0000839
-:1025900027BD001803E000080000000027BDFFD899
-:1025A000AFBF00208F43002C8F42003810620059CB
-:1025B000000000003C02000100571021904240F052
-:1025C00010400026240700088F4401708F450174D5
-:1025D0008F48000C8F86012024020020AFA200103B
-:1025E000AFA30014AFA800188F42010C0040F809F7
-:1025F00024C6001C14400011240200013C0100010B
-:1026000000370821A02240F08F820124AFA20010E1
-:102610008F8201283C04000124846128AFA20014A9
-:102620008F46002C8F8701203C0500090C002B3BB6
-:1026300034A509001000005C000000008F42030078
-:1026400024420001AF4203008F4203008F42002C5E
-:10265000A34005C110000027AF4200388F4401702D
-:102660008F4501748F43002C8F48000C8F8601200A
-:1026700024020080AFA20010AFA30014AFA800187E
-:102680008F42010C0040F80924C6001C14400011C0
-:10269000240200013C01000100370821A02240F182
-:1026A0008F820124AFA200108F8201283C04000118
-:1026B00024846134AFA200148F46002C8F87012040
-:1026C0003C0500090C002B3B34A51100100000361E
-:1026D000000000008F4203008F43002C24420001C1
-:1026E000AF4203008F42030024020001A34205C150
-:1026F000AF4300383C01000100370821A02040F121
-:102700003C01000100370821A02040F01000002605
-:10271000AF400034934205C11040001D000000008E
-:10272000A34005C18F8200403042000114400008E0
-:10273000000020218C0301042402000150620005E6
-:10274000240400018C020264104000030080102168
-:102750002404000100801021104000060000000049
-:102760008F42030C24420001AF42030C100000080A
-:102770008F42030C8F82004434420004AF82004435
-:102780008F42030824420001AF4203088F4203082E
-:102790003C01000100370821A02040F03C0100016D
-:1027A00000370821A02040F18F42000010400007B0
-:1027B00000000000AF80004C8F82004C1040FFFDF5
-:1027C000000000001000000500000000AF8000487D
-:1027D0008F8200481040FFFD000000008F820060E3
-:1027E0003C03FF7F3463FFFF00431024AF8200608F
-:1027F0008F420000104000030000000010000002A3
-:10280000AF80004CAF8000488FBF002003E000087D
-:1028100027BD002803E000080000000027BDFFD806
-:10282000AFBF00208F4300448F42007C106200291C
-:10283000240700088F4401688F45016C8F48000C05
-:102840008F86012024020040AFA20010AFA3001425
-:10285000AFA800188F42010C0040F80924C6001CE4
-:1028600014400011240200013C010001003708213E
-:10287000A02240F28F820124AFA200108F82012893
-:102880003C0400012484613CAFA200148F46004444
-:102890008F8701203C0500090C002B3B34A5130059
-:1028A0001000000F000000008F42030424420001CA
-:1028B000AF4203048F4203048F420044AF42007CC6
-:1028C0003C01000100370821A02040F21000000464
-:1028D000AF4000783C01000100370821A02040F201
-:1028E0008F4200001040000700000000AF80004C45
-:1028F0008F82004C1040FFFD00000000100000051A
-:1029000000000000AF8000488F8200481040FFFDAB
-:10291000000000008F8200603C03FEFF3463FFFF75
-:1029200000431024AF8200608F420000104000037B
-:102930000000000010000002AF80004CAF80004893
-:102940008FBF002003E0000827BD002803E0000837
-:10295000000000003C0200018C426DA827BDFFA8CA
-:10296000AFBF0050AFBE004CAFB50048AFB300449E
-:10297000AFB20040AFB1003CAFB00038104000D55E
-:102980008F9000448F4200D0244300012842000B66
-:10299000144000E4AF4300D08F42000430420002F4
-:1029A0001440009CAF4000D08F4200043C03000163
-:1029B0008C636D9834420002AF420004240200018F
-:1029C000146200033C020600100000023442300092
-:1029D00034421000AFA200208F4A0018AFAA003482
-:1029E00027AA0020AFAA002C8FAA0034240200FFDF
-:1029F0001142000200001821254300018C02022828
-:102A0000006098211662000E3C0500098F42033CCD
-:102A100024420001AF42033C8F42033C8C02022857
-:102A20008FA700343C0400012484610CAFA0001483
-:102A3000AFA200108FA600201000007034A5050082
-:102A40008FAA0034000A38C000F710218FA300209D
-:102A50008FA40024AC4304C0AC4404C48F8300544E
-:102A60008F820054247103E8022210232C4203E9D0
-:102A70001040001B0000A82100E09021265E04C049
-:102A80008F4401788F45017C02401821240A0004FC
-:102A9000AFAA0010AFB300148F48000C0000102143
-:102AA00002FE3021AFA800188F48010C240700084F
-:102AB00000A3282100A3482B008220210100F8094F
-:102AC0000089202154400006241500018F82005403
-:102AD000022210232C4203E91440FFE90000000009
-:102AE00032A200FF54400018AF5300188F42037801
-:102AF00024420001AF4203788F4203788F82012085
-:102B00008FAA002C8FA70034AFA200108F8201245F
-:102B10003C04000124846118AFA200148D4600001B
-:102B20003C0500091000003534A506008F4203085B
-:102B30002415000124420001AF4203088F4203081C
-:102B40001000001E32A200FF8F8300548F820054B9
-:102B5000247103E8022210232C4203E910400016DE
-:102B60000000A8213C1E0020241200108F42000CFF
-:102B70008F4401608F4501648F860120AFB2001041
-:102B8000AFB30014005E1025AFA200188F42010CF5
-:102B9000240700080040F80924C6001C1440FFE385
-:102BA000000000008F820054022210232C4203E90F
-:102BB0001440FFEE0000000032A200FF144000119C
-:102BC0003C0500098F42037824420001AF4203789C
-:102BD0008F4203788F8201208FAA002C8FA70034A8
-:102BE000AFA200108F8201243C04000124846120E4
-:102BF000AFA200148D46000034A507000C002B3B4B
-:102C0000000000008F4202EC24420001AF4202ECBF
-:102C10008F4202EC8F4200043042000150400029F4
-:102C2000361000403C02040002C210241040001381
-:102C30002404FFDF8F4202508F4302548F4401B4BB
-:102C400014640006361000408F4202708F430274F5
-:102C50008F4401B8106400072402FFDF8F42025046
-:102C60008F4302548F4402708F450274100000128B
-:102C70003A1000201000002B020280248F420250E4
-:102C80008F4302548F4501B414650006020480246A
-:102C90008F4202708F4302748F4401B85064002148
-:102CA000361000408F4202508F4302548F4402700E
-:102CB0008F4502743A100040AF4301B41000001970
-:102CC000AF4501B88F4200D4244300011000001129
-:102CD000284200338F4200043042000110400009B6
-:102CE0003C02040002C21024104000042402FFDF52
-:102CF000020280241000000B361000401000000972
-:102D0000361000608F4200D436100040244300018A
-:102D1000284201F514400003AF4300D4AF4000D473
-:102D20003A100020AF9000442402FF7F0282A024CA
-:102D30008FBF00508FBE004C8FB500488FB300444A
-:102D40008FB200408FB1003C8FB0003803E0000824
-:102D500027BD005803E00008000000003C0200010D
-:102D60008C426DA827BDFFB0AFBF0048AFBE004486
-:102D7000AFB50040AFB3003CAFB20038AFB10034E4
-:102D8000104000C7AFB000308F4200D02443000194
-:102D90002842000B144000DAAF4300D08F420004F9
-:102DA0003042000214400097AF4000D08F42000430
-:102DB0003C0300018C636D9834420002AF42000472
-:102DC00024020001146200033C020600100000020D
-:102DD0003442300034421000AFA20020000018211D
-:102DE0008F5E001827AA0020240200FF13C20002F1
-:102DF000AFAA002C27C300018C020228006090219A
-:102E00001642000E001E38C08F42033C24420001CF
-:102E1000AF42033C8F42033C8C0202283C04000179
-:102E20002484610C3C050009AFA00014AFA200107F
-:102E30008FA600201000006D34A5050000F71021BA
-:102E40008FA300208FA40024AC4304C0AC4404C46E
-:102E50008F8300548F820054247003E802021023F1
-:102E60002C4203E91040001B0000982100E088215B
-:102E7000263504C08F4401788F45017C022018213B
-:102E8000240A0004AFAA0010AFB200148F48000C4F
-:102E90000000102102F53021AFA800188F48010C66
-:102EA0002407000800A3282100A3482B008220212A
-:102EB0000100F80900892021544000062413000174
-:102EC0008F820054020210232C4203E91440FFE9D0
-:102ED00000000000326200FF54400017AF5200189B
-:102EE0008F42037824420001AF4203788F42037877
-:102EF0008F8201208FAA002CAFA200108F820124A4
-:102F00003C040001248461183C050009AFA20014B0
-:102F10008D4600001000003534A506008F420308DE
-:102F20002413000124420001AF4203088F4203082A
-:102F30001000001E326200FF8F8300548F82005405
-:102F4000247003E8020210232C4203E9104000160B
-:102F5000000098213C150020241100108F42000C25
-:102F60008F4401608F4501648F860120AFB100104E
-:102F7000AFB2001400551025AFA200188F42010C0B
-:102F8000240700080040F80924C6001C1440FFE391
-:102F9000000000008F820054020210232C4203E93B
-:102FA0001440FFEE00000000326200FF14400011E8
-:102FB000000000008F42037824420001AF420378F2
-:102FC0008F4203788F8201208FAA002CAFA20010BD
-:102FD0008F8201243C040001248461203C05000907
-:102FE000AFA200148D46000034A507000C002B3B57
-:102FF00003C038218F4202EC24420001AF4202ECB0
-:103000008F4202EC8F420004304200011040001851
-:10301000240400018F4202508F4302548F4501B4B3
-:103020003C01000114650006A0246CF18F4202707F
-:103030008F4302748F4401B8106400210000000027
-:103040008F4202508F4302543C04000190846CF084
-:103050008F4602708F47027438840001AF4301B479
-:10306000AF4701B83C01000110000025A0246CF01E
-:103070008F4200D43C010001A0206CF024430001E9
-:10308000284200331440001EAF4300D43C0200012C
-:1030900090426CF1AF4000D410000017384200019C
-:1030A0008F42000430420001104000080000000080
-:1030B0000C00565A000020213C010001A0206CF1B8
-:1030C0003C0100011000000EA0206CF08F4200D4E3
-:1030D0003C010001A0206CF024430001284201F5CE
-:1030E00014400007AF4300D43C02000190426CF151
-:1030F000AF4000D4004210263C010001A0226CF138
-:103100003C0300018C636D98240200021462000CE1
-:103110003C0300023C03000190636CF124020001B7
-:103120005462001F000020213C02000190426CF01C
-:103130001443001B24040005100000192404000699
-:103140003C0200028C428FF4004310241040000B1C
-:10315000240200013C03000190636CF154620010F2
-:10316000000020213C02000190426CF01443000C4E
-:10317000240400031000000A240400043C0300019E
-:1031800090636CF114620006000020213C020001F3
-:1031900090426CF024040001504400012404000219
-:1031A0000C00565A000000002402FF7F0282A02477
-:1031B0008FBF00488FBE00448FB500408FB3003CE6
-:1031C0008FB200388FB100348FB0003003E00008B8
-:1031D00027BD005003E00008000000003C02000191
-:1031E0008C426DA827BDFFB0AFBF0048AFBE004402
-:1031F000AFB50040AFB3003CAFB20038AFB1003460
-:10320000104000DEAFB000308F4200D03C0400011F
-:103210008C846D98244300012842000BAF4400E8E1
-:10322000144000FEAF4300D08F4200043042000241
-:1032300014400095AF4000D08F4200043442000299
-:10324000AF42000424020001148200033C02060085
-:10325000100000023442300034421000AFA20020BF
-:10326000000018218F5E001827AA0020240200FF0A
-:1032700013C20002AFAA002C27C300018C0202284F
-:10328000006090211642000E001E38C08F42033CA1
-:1032900024420001AF42033C8F42033C8C020228CF
-:1032A0003C0400012484610C3C050009AFA000141B
-:1032B000AFA200108FA600201000006D34A50500FD
-:1032C00000F710218FA300208FA40024AC4304C07A
-:1032D000AC4404C48F8300548F820054247003E8EC
-:1032E000020210232C4203E91040001B0000982129
-:1032F00000E08821263504C08F4401788F45017C89
-:1033000002201821240A0004AFAA0010AFB2001452
-:103310008F48000C0000102102F53021AFA80018E2
-:103320008F48010C2407000800A3282100A3482B84
-:10333000008220210100F809008920215440000664
-:10334000241300018F820054020210232C4203E94F
-:103350001440FFE900000000326200FF54400017F3
-:10336000AF5200188F42037824420001AF42037825
-:103370008F4203788F8201208FAA002CAFA2001009
-:103380008F8201243C040001248461183C0500095B
-:10339000AFA200148D4600001000003534A50600D1
-:1033A0008F4203082413000124420001AF420308A6
-:1033B0008F4203081000001E326200FF8F8300540A
-:1033C0008F820054247003E8020210232C4203E988
-:1033D00010400016000098213C1500202411001018
-:1033E0008F42000C8F4401608F4501648F8601205D
-:1033F000AFB10010AFB2001400551025AFA20018F5
-:103400008F42010C240700080040F80924C6001C64
-:103410001440FFE3000000008F82005402021023DA
-:103420002C4203E91440FFEE00000000326200FF6E
-:1034300014400011000000008F4203782442000174
-:10344000AF4203788F4203788F8201208FAA002C2D
-:10345000AFA200108F8201243C040001248461206B
-:103460003C050009AFA200148D46000034A50700FA
-:103470000C002B3B03C038218F4202EC2442000198
-:10348000AF4202EC8F4202EC8F4200043042000156
-:10349000104000333C02040002C210241040001708
-:1034A00000000000934205C08F4402508F45025433
-:1034B0008F4301B43442002014A30006A34205C088
-:1034C0008F4202708F4302748F4401B81064000869
-:1034D000000000008F4202508F430254934405C005
-:1034E0008F4602708F470274100000163884004027
-:1034F000934205C010000048304200BF934205C00F
-:103500008F4402508F4502548F4301B4304200BFB4
-:1035100014A30006A34205C08F4202708F430274B9
-:103520008F4401B81064000B000000008F4202506D
-:103530008F430254934405C08F4602708F47027434
-:1035400038840020AF4301B4AF4701B81000003306
-:10355000A34405C0934205C01000002F3442002050
-:10356000934205C08F4300D434420020A34205C0DB
-:103570002462000110000023286300338F4200E41E
-:103580008F4300E024420001AF4200E40043102AD0
-:1035900014400006240300018F4200E81443000297
-:1035A000AF4000E424030004AF4300E88F4200046E
-:1035B000304200011040000D3C02040002C2102401
-:1035C0001040000700000000934205C03442004054
-:1035D000A34205C0934205C01000000F304200DF37
-:1035E000934205C01000000C34420060934205C0B5
-:1035F0008F4300D434420020A34205C0246200015E
-:10360000286300FB14600005AF4200D4934205C05C
-:10361000AF4000D438420040A34205C0934205C0E9
-:103620008F4300E83042007FA34205C0240200011E
-:103630001462000500000000934405C0000421024C
-:1036400010000003348400F0934405C03484000F5C
-:103650000C005640000000002402FF7F0282A024DC
-:103660008FBF00488FBE00448FB500408FB3003C31
-:103670008FB200388FB100348FB0003003E0000803
-:1036800027BD005003E000080000000027BDFFB088
-:10369000274401C026E30028246504000065102BA0
-:1036A000AFBF0048AFBE0044AFB50040AFB3003C71
-:1036B000AFB20038AFB1003410400007AFB00030F7
-:1036C0008C820000AC620000246300040065102BB3
-:1036D0001440FFFB248400048C020080AEE200440E
-:1036E0008C0200C0AEE200408C020084AEE20030EA
-:1036F0008C020084AEE2023C8C020088AEE2024002
-:103700008C02008CAEE202448C020090AEE20248D1
-:103710008C020094AEE2024C8C020098AEE20250A1
-:103720008C02009CAEE202548C0200A0AEE2025871
-:103730008C0200A4AEE2025C8C0200A8AEE2026041
-:103740008C0200ACAEE202648C0200B0AEE2026811
-:103750008C0200B4AEE2026C8C0200B8AEE20270E1
-:103760008C0200BC24040001AEE20274AEE000341E
-:1037700000041080005710218EE300348C42023C7C
-:1037800024840001006218212C82000FAEE3003473
-:103790001440FFF8000410808C0200CCAEE2004818
-:1037A0008C0200D0AEE2004C8C0200E0AEE201F8E8
-:1037B0008C0200E4AEE201FC8C0200E8AEE2020002
-:1037C0008C0200ECAEE202048C0200F0AEE20208D1
-:1037D0008EE400C08EE500C48C0200FC0045102B76
-:1037E0001040000B000000008EE200C08EE300C419
-:1037F0002404000124050000006518210065302B19
-:103800000044102100461021AEE200C0AEE300C427
-:103810008C0200FC8EE400C08EE500C42408FFFF8B
-:1038200024090000004018210000102100882024F5
-:1038300000A928240082202500A32825AEE400C08A
-:10384000AEE500C48EE400D08EE500D48C0200F416
-:103850000045102B1040000B000000008EE200D04D
-:103860008EE300D424040001240500000065182123
-:103870000065302B0044102100461021AEE200D03C
-:10388000AEE300D48C0200F48EE400D08EE500D4C8
-:1038900000401821000010210088202400A92824BD
-:1038A0000082202500A32825AEE400D0AEE500D498
-:1038B0008EE400C88EE500CC8C0200F80045102B89
-:1038C0001040000B000000008EE200C88EE300CC28
-:1038D0002404000124050000006518210065302B38
-:1038E0000044102100461021AEE200C8AEE300CC37
-:1038F0008C0200F88EE400C88EE500CC0040182150
-:10390000000010210088202400A9282400822025FE
-:1039100000A3282524020008AEE400C8AEE500CCD0
-:10392000AFA20010AFA000148F42000C8C0402085C
-:103930008C05020CAFA200188F42010C26E600286D
-:103940000040F80924070400104000F03C02040085
-:10395000AFA20020934205C6104000890000182144
-:103960008F5E001827AA0020240200FF13C2000265
-:10397000AFAA002C27C300018C020228006090210E
-:103980001642000E001E38C08F42033C2442000144
-:10399000AF42033C8F42033C8C0202283C040001EE
-:1039A0002484610C3C050009AFA00014AFA20010F4
-:1039B0008FA600201000006B34A5050000F7102131
-:1039C0008FA300208FA40024AC4304C0AC4404C4E3
-:1039D0008F8300548F820054247003E80202102366
-:1039E0002C4203E91040001B0000982100E08821D0
-:1039F000263504C08F4401788F45017C02201821B0
-:103A0000240A0004AFAA0010AFB200148F48000CC3
-:103A10000000102102F53021AFA800188F48010CDA
-:103A20002407000800A3282100A3482B008220219E
-:103A30000100F809008920215440000624130001E8
-:103A40008F820054020210232C4203E91440FFE944
-:103A500000000000326200FF54400017AF5200180F
-:103A60008F42037824420001AF4203788F420378EB
-:103A70008F8201208FAA002CAFA200108F82012418
-:103A80003C040001248461183C050009AFA2001425
-:103A90008D4600001000003334A506008F42030855
-:103AA0002413000124420001AF4203088F4203089F
-:103AB0001000001C326200FF8F8300548F8200547C
-:103AC000247003E8020210232C4203E91040001482
-:103AD00000009821241100108F42000C8F440160D7
-:103AE0008F4501648F860120AFB10010AFB2001482
-:103AF000AFA200188F42010C240700080040F8090B
-:103B000024C6001C1440FFE5000000008F82005412
-:103B1000020210232C4203E91440FFEF00000000D2
-:103B2000326200FF54400012240200018F420378E9
-:103B300024420001AF4203788F4203788F82012034
-:103B40008FAA002CAFA200108F8201243C04000138
-:103B5000248461203C050009AFA200148D460000BA
-:103B600034A507000C002B3B03C0382100001021B6
-:103B70001440005B240200011000006500000000FA
-:103B80008F510018240200FF122200020000802141
-:103B9000263000018C0202281602000E001130C0EF
-:103BA0008F42033C24420001AF42033C8F42033C5E
-:103BB0008C0202283C040001248460F43C050009C6
-:103BC000AFA00014AFA200108FA600201000003F8D
-:103BD00034A5010000D710218FA300208FA400245A
-:103BE000AC4304C0AC4404C400C018218F44017825
-:103BF0008F45017C0000102124070004AFA70010AE
-:103C0000AFB000148F48000C24C604C002E6302177
-:103C1000AFA800188F48010C2407000800A3282132
-:103C200000A3482B008220210100F80900892021EF
-:103C30001440000B240700088F820120AFA200105F
-:103C40008F8201243C040001248460FC3C050009AF
-:103C5000AFA200148FA600201000001C34A50200A3
-:103C60008F4401608F4501648F43000CAF500018F2
-:103C70008F86012024020010AFA20010AFB0001404
-:103C8000AFA300188F42010C0040F80924C6001CA5
-:103C900054400011240200018F42034024420001DD
-:103CA000AF4203408F4203408F820120AFA2001039
-:103CB0008F8201243C040001248461043C05000936
-:103CC000AFA200148FA6002034A503000C002B3BEC
-:103CD00002203821000010211040000D24020001B4
-:103CE0008F4202E8A34005C6AF4001B02442000164
-:103CF000AF4202E88F4202E88EE201502442000106
-:103D0000AEE20150100000038EE2015024020001D7
-:103D1000A34205C68FBF00488FBE00448FB5004048
-:103D20008FB3003C8FB200388FB100348FB00030B9
-:103D300003E0000827BD005027BDFFD8AFBF00201B
-:103D40008F8200B030420004104000680000000084
-:103D50008F4301288F8201041462000500000000D7
-:103D60008F4301308F8200B4106200060000000013
-:103D70008F820104AF4201288F8200B41000005BE3
-:103D8000AF4201308F8200B03C030080004310241A
-:103D90001040000D000000008F82011C3442000220
-:103DA000AF82011C8F8200B02403FFFB004310246C
-:103DB000AF8200B08F82011C2403FFFD004310245A
-:103DC0001000004AAF82011C8F4301288F8201043A
-:103DD00014620005000000008F4301308F8200B4A0
-:103DE00010620010000000008F820104AF42012821
-:103DF0008F8200B48F430128AF420130AFA300107F
-:103E00008F4201303C04000124846144AFA20014BD
-:103E10008F86011C8F8700B03C0500051000003123
-:103E200034A509008F420128AFA200108F42013053
-:103E30003C04000124846150AFA200148F86011C51
-:103E40008F8700B03C0500050C002B3B34A510000B
-:103E50008F82011C34420002AF82011C8F83010457
-:103E60008F8200B034420001AF8200B0240200080B
-:103E7000AF830104AFA20010AFA000148F42000C6A
-:103E80008C0402088C05020CAFA200188F42010CB2
-:103E900026E600280040F809240704008F82011C50
-:103EA0002403FFFD00431024AF82011C8EE201DCDD
-:103EB00024420001AEE201DC8EE201DC8F420128E7
-:103EC000AFA200108F4201303C0400012484615CE9
-:103ED000AFA200148F86011C8F8700B03C0500053F
-:103EE00034A511000C002B3B000000008F8200A0C5
-:103EF0003042000410400069000000008F43012C94
-:103F00008F82012414620005000000008F430134F9
-:103F10008F8200A410620006000000008F8201243E
-:103F2000AF42012C8F8200A41000005CAF4201342C
-:103F30008F8200A03C030080004310241040000D3D
-:103F4000000000008F82011C34420002AF82011C7D
-:103F50008F8200A02403FFFB00431024AF8200A047
-:103F60008F82011C2403FFFD004310241000004B2E
-:103F7000AF82011C8F43012C8F8201241462000543
-:103F8000000000008F4301348F8200A410620010F3
-:103F9000000000008F820124AF42012C8F8200A418
-:103FA0008F43012CAF420134AFA300108F42013484
-:103FB0003C04000124846168AFA200148F86011CB8
-:103FC0008F8700A03C0500051000003234A51200C8
-:103FD0008F42012CAFA200108F4201343C0400013B
-:103FE00024846174AFA200148F86011C8F8700A007
-:103FF0003C0500050C002B3B34A513008F82011CEF
-:1040000034420002AF82011C8F8301248F8200A002
-:1040100034420001AF8200A024020080AF8301245B
-:10402000AFA20010AFA000148F4200148C0402084D
-:104030008C05020CAFA200188F4201083C0600015B
-:1040400024C66ED80040F809240700048F82011CA2
-:104050002403FFFD00431024AF82011C8EE201DC2B
-:1040600024420001AEE201DC8EE201DC8F42012C31
-:10407000AFA200108F4201343C040001248461800F
-:10408000AFA200148F86011C8F8700A03C0500059D
-:1040900034A514000C002B3B000000008FBF002053
-:1040A00003E0000827BD00283C0810002407000199
-:1040B0003C0600803C0501008F82007000481024FF
-:1040C0001040FFFD000000008F82005424420005D4
-:1040D000AF8200788C040234108000160000182192
-:1040E0003C020001005710218C4240E824420005A8
-:1040F0003C01000100370821AC2240E83C020001ED
-:10410000005710218C4240E80044102B1440000955
-:10411000000000003C0300803C0100010037082142
-:10412000AC2040E83C010001003708211000000BE2
-:10413000A02740F03C02000100571021904240F0BF
-:1041400054400006006618253C020001005710216B
-:10415000904240F154400001006618258C04023062
-:1041600010800013000000003C02000100571021E5
-:104170008C4240EC244200053C010001003708213C
-:10418000AC2240EC3C020001005710218C4240EC74
-:104190000044102B14400006000000003C01000108
-:1041A00000370821AC2040EC1000000600651825FF
-:1041B0003C02000100571021904240F2544000019F
-:1041C000006518251060FFBC000000008F42000051
-:1041D0001040000700000000AF80004C8F82004CB0
-:1041E0001040FFFD0000000010000005000000006E
-:1041F000AF8000488F8200481040FFFD00000000A3
-:104200008F82006000431025AF8200608F42000063
-:1042100010400003000000001000FFA7AF80004C1A
-:104220001000FFA5AF80004803E000080000000078
-:1042300000000000000000000000000027BDFFE0BB
-:10424000AFBF00188F86006430C200041040002504
-:10425000240400048C020114AF420020AF840064E7
-:104260008F4202FC24420001AF4202FC8F4202FC5A
-:104270008F820064304200041440000500000000FA
-:104280008C0301148F4200201462FFF20000000032
-:104290008F420000104000078F43003CAF80004C6D
-:1042A0008F82004C1040FFFD000000001000000550
-:1042B00000000000AF8000488F8200481040FFFDE2
-:1042C000000000008F82006000431025AF82006074
-:1042D0008F42000010400073000000001000006FCB
-:1042E0000000000030C20008104000202404000834
-:1042F0008C02011CAF420048AF8400648F4202A8C8
-:1043000024420001AF4202A88F4202A88F820064BB
-:104310003042000814400005000000008C03011C1E
-:104320008F4200481462FFF2000000008F4200003C
-:104330001040000700000000AF80004C8F82004C4E
-:104340001040FFFD0000000010000005000000000C
-:10435000AF8000488F8200481040FFFD0000000041
-:104360008F8200601000FFD93442020030C200206A
-:1043700010400023240400208C02012CAF4200686E
-:10438000AF8400648F4202D824420001AF4202D8B9
-:104390008F4202D88F820064304200201440000512
-:1043A00032C240008C03012C8F4200681462FFF27D
-:1043B00032C24000144000023C02000102C2B0259B
-:1043C0008F4200001040000700000000AF80004C4A
-:1043D0008F82004C1040FFFD00000000100000051F
-:1043E00000000000AF8000488F8200481040FFFDB1
-:1043F000000000008F8200601000FFB4344208000B
-:1044000030C2001010400029240400108C02012446
-:10441000AF420058AF8400648F4202D424420001AE
-:10442000AF4202D48F4202D48F8200643042001027
-:104430001440000532C220008C0301248F42005832
-:104440001462FFF232C220005040000136D68000D4
-:104450008F4200001040000700000000AF80004CB9
-:104460008F82004C1040FFFD00000000100000058E
-:1044700000000000AF8000488F8200481040FFFD20
-:10448000000000008F82006034420100AF820060B3
-:104490008F42000010400003000000001000006C7C
-:1044A000AF80004C1000006AAF80004830C20001AD
-:1044B0001040000424020001AF8200641000006478
-:1044C0000000000030C200021440000B3C05000355
-:1044D0003C0400012484624434A505000000382116
-:1044E000AFA000100C002B3BAFA000142402FFC0B3
-:1044F00010000057AF8200648C05022C8C02010C66
-:1045000010A20048000510808C46030024A2000180
-:104510003045003F24020003AC05022C00061E02B9
-:1045200010620005240200101062001D30C20FFF4F
-:1045300010000039000000008F4302A88F440000E3
-:1045400030C20FFFAF42004824630001AF4302A80E
-:10455000108000078F4202A8AF80004C8F82004C71
-:104560001040FFFD000000001000000500000000EA
-:10457000AF8000488F8200481040FFFD000000001F
-:104580008F82006034420200AF8200608F420000E0
-:104590001040001F000000001000001B0000000081
-:1045A000AF42005832C220005040000136D6800091
-:1045B0008F4202D48F43000024420001AF4202D454
-:1045C000106000078F4202D4AF80004C8F82004CF5
-:1045D0001040FFFD0000000010000005000000007A
-:1045E000AF8000488F8200481040FFFD00000000AF
-:1045F0008F82006034420100AF8200608F42000071
-:10460000104000030000000010000006AF80004CC6
-:1046100010000004AF8000480C00219600C020214B
-:10462000004028218C02010C14A200022402000286
-:10463000AF8200648F8200643042000214400004A4
-:10464000000000008C02010C14A2FFAC000000006E
-:104650008FBF001803E0000827BD002003E000081A
-:104660000000000027BDFFA0AFB000400080802107
-:10467000001016022442FFFF304300FF2C6200139B
-:10468000AFBF0058AFBE0054AFB50050AFB3004C41
-:10469000AFB20048AFB10044104001F3AFA5003401
-:1046A000000310803C010001002208218C22628856
-:1046B00000400008000000000010130230440FFF0B
-:1046C0002402000110820005240200021082000C66
-:1046D0002402FFFE100000243C0500038F43000469
-:1046E0003C0200018C426F04AF440200AF4402045C
-:1046F0003C0400018C846E801000000934630001CA
-:104700008F430004AF440200AF4402043C040001A4
-:104710008C846E80006218243C0200012442CA2866
-:104720000002110000021182AF4300043C030800A4
-:1047300000431025AC8200388F84005400041442DA
-:1047400000041C820043102100041CC200431023FB
-:1047500000041D020043102100041D4200431023E9
-:1047600010000009AF4202083C040001248462509A
-:1047700034A510000200302100003821AFA0001045
-:104780000C002B3BAFA000148F4202A0244200017A
-:10479000AF4202A01000021F8F4202A027B00028E3
-:1047A00002002021240502100C002BBF2406000863
-:1047B0000C00251802002021100002160000000045
-:1047C0008FAA003427A40028000A1880254200017F
-:1047D0003042003FAFA200348C6503008FAA003442
-:1047E000000210808C430300254200013042003F4C
-:1047F000AFA20034AC02022CAFA500280C00251893
-:10480000AFA3002C100002030000000027B0002816
-:1048100002002021240502100C002BBF24060008F2
-:104820000C00265702002021100001FA00000000B1
-:104830008FAA003427A40028000A1880254200010E
-:104840003042003FAFA200348C6503008FAA0034D1
-:10485000000210808C430300254200013042003FDB
-:10486000AFA20034AC02022CAFA500280C002657E2
-:10487000AFA3002C100001E700000000001013029D
-:1048800030430FFF240200011062000524020002E1
-:104890001062001E3C020002100000333C050003C1
-:1048A0003C03000202C310245440003702C3B02569
-:1048B0008F8202283C01000100370821AC2238D841
-:1048C0008F82022C3C01000100370821AC2238DC29
-:1048D0008F8202303C01000100370821AC2238E011
-:1048E0008F8202343C01000100370821AC2238E4F9
-:1048F0002402FFFFAF820228AF82022CAF82023077
-:10490000AF8202341000002002C3B02502C210247E
-:10491000104000123C02FFFD3C0200010057102134
-:104920008C4238D8AF8202283C0200010057102187
-:104930008C4238DCAF82022C3C020001005710216F
-:104940008C4238E0AF8202303C0200010057102157
-:104950008C4238E4AF8202343C02FFFD3442FFFF58
-:104960001000000902C2B0243C0400012484625CEF
-:1049700034A511000200302100003821AFA0001042
-:104980000C002B3BAFA000148F4202CC244200014C
-:10499000AF4202CC1000019F8F4202CC00101302E4
-:1049A00030450FFF2402000110A20005240200027E
-:1049B00010A2000D3C0408FF100000143C05000389
-:1049C0003C0208FF3442FFFF8F8302203C040004B6
-:1049D00002C4B0250062182434630008AF830220AB
-:1049E00010000012AF4502983484FFF73C03FFFB30
-:1049F0008F8202203463FFFF02C3B02400441024DE
-:104A0000AF82022010000009AF4502983C0400016B
-:104A10002484626834A5120002003021000038218D
-:104A2000AFA000100C002B3BAFA000148F4202BCC3
-:104A300024420001AF4202BC100001768F4202BC4A
-:104A400027840208240502000C002BBF240600085E
-:104A500027440224240502000C002BBF2406000872
-:104A60008F4202C424420001AF4202C41000016917
-:104A70008F4202C40010130230430FFF24020001D2
-:104A8000106200112862000250400005240200025A
-:104A90001060000700000000100000170000000078
-:104AA0001062000F00000000100000130000000062
-:104AB0008C060248000020210C005104240500044B
-:104AC00010000007000000008C06024800002021B2
-:104AD0000C00510424050004100000100000000028
-:104AE0008C06024C000020210C005104240500011A
-:104AF0001000000A000000003C04000124846274DD
-:104B00003C05000334A513000200302100003821C9
-:104B1000AFA000100C002B3BAFA000148F4202C0CE
-:104B200024420001AF4202C01000013A8F4202C08D
-:104B30000C002426000000001000013600000000D8
-:104B400024020001A34205C5241001008F4401A8DE
-:104B50008F4501ACAFB00010AFA000148F4200141D
-:104B6000AFA200188F42010826E600280040F8098D
-:104B7000240704001040FFF500000000100001258C
-:104B8000000000003C03FFFF34637FFF8F42036897
-:104B90008F44036002C3B02400001821AF400058C6
-:104BA000AF40005CAF400060AF40006400441023A1
-:104BB000AF4203683C020900AF400360AFA200208F
-:104BC0008F5E001827AA0020240200FF13C20002F3
-:104BD000AFAA003C27C300018C020228006090218C
-:104BE0001642000E001E38C08F42033C24420001D2
-:104BF000AF42033C8F42033C8C0202283C0400017C
-:104C00002484620C3C050009AFA00014AFA2001080
-:104C10008FA600201000006B34A5050000F71021BE
-:104C20008FA300208FA40024AC4304C0AC4404C470
-:104C30008F8300548F820054247003E802021023F3
-:104C40002C4203E91040001B0000982100E088215D
-:104C5000263504C08F4401788F45017C022018213D
-:104C6000240A0004AFAA0010AFB200148F48000C51
-:104C70000000102102F53021AFA800188F48010C68
-:104C80002407000800A3282100A3482B008220212C
-:104C90000100F80900892021544000062413000176
-:104CA0008F820054020210232C4203E91440FFE9D2
-:104CB00000000000326200FF54400017AF5200189D
-:104CC0008F42037824420001AF4203788F42037879
-:104CD0008F8201208FAA003CAFA200108F82012496
-:104CE0003C040001248462183C050009AFA20014B2
-:104CF0008D4600001000003334A506008F420308E3
-:104D00002413000124420001AF4203088F4203082C
-:104D10001000001C326200FF8F8300548F82005409
-:104D2000247003E8020210232C4203E9104000140F
-:104D300000009821241100108F42000C8F44016064
-:104D40008F4501648F860120AFB10010AFB200140F
-:104D5000AFA200188F42010C240700080040F80998
-:104D600024C6001C1440FFE5000000008F820054A0
-:104D7000020210232C4203E91440FFEF0000000060
-:104D8000326200FF14400011000000008F420378DF
-:104D900024420001AF4203788F4203788F820120C2
-:104DA0008FAA003CAFA200108F8201243C040001B6
-:104DB000248462203C050009AFA200148D46000047
-:104DC00034A507000C002B3B03C038218F4202B0F2
-:104DD00024420001AF4202B08F4202B08F4202F87B
-:104DE00024420001AF4202F81000008A8F4202F80C
-:104DF0008C02025C27440224AF4201F08C02026064
-:104E000024050200240600080C002BBFAF4201F865
-:104E10008F82022030420008144000022402000168
-:104E200024020002AF4202988F4202AC24420001E9
-:104E3000AF4202AC100000778F4202AC3C0200FF90
-:104E40003442FFFF0202182432C2018014400006DF
-:104E50003402FFFB0043102B14400003000000004D
-:104E60001000006CAF4300BC3C040001248462804D
-:104E70003C05000334A51500020030210000382154
-:104E8000AFA000100C002B3BAFA000143C020700A9
-:104E90003442100000101E0200621825AFA300204B
-:104EA0008F510018240200FF12220002000080210E
-:104EB000263000018C0202281602000E001130C0BC
-:104EC0008F42033C24420001AF42033C8F42033C2B
-:104ED0008C0202283C040001248461F43C05000992
-:104EE000AFA00014AFA200108FA600201000003F5A
-:104EF00034A5010000D710218FA300208FA4002427
-:104F0000AC4304C0AC4404C400C018218F440178F1
-:104F10008F45017C0000102124070004AFA700107A
-:104F2000AFB000148F48000C24C604C002E6302144
-:104F3000AFA800188F48010C2407000800A32821FF
-:104F400000A3482B008220210100F80900892021BC
-:104F50001440000B240700088F820120AFA200102C
-:104F60008F8201243C040001248461FC3C0500097B
-:104F7000AFA200148FA600201000001C34A5020070
-:104F80008F4401608F4501648F43000CAF500018BF
-:104F90008F86012024020010AFA20010AFB00014D1
-:104FA000AFA300188F42010C0040F80924C6001C72
-:104FB00014400010000000008F4203402442000112
-:104FC000AF4203408F4203408F820120AFA2001006
-:104FD0008F8201243C040001248462043C05000902
-:104FE000AFA200148FA6002034A503000C002B3BB9
-:104FF000022038218F4202E024420001AF4202E049
-:105000008F4202E08F4202F024420001AF4202F0E0
-:105010008F4202F08FA200348FBF00588FBE005421
-:105020008FB500508FB3004C8FB200488FB1004451
-:105030008FB0004003E0000827BD006027BDFFF8E7
-:105040002408FFFF10A00014000048213C0AEDB81E
-:10505000354A83209087000024840001000030211D
-:1050600001071026304200011040000200081842DB
-:10507000006A18260060402124C600012CC20008E6
-:105080001440FFF700073842252900010125102BA5
-:105090001440FFF0000000000100102103E00008B0
-:1050A00027BD000827BDFFB0AFBF0048AFBE00441A
-:1050B000AFB50040AFB3003CAFB20038AFB1003481
-:1050C000AFB000308F870220AFA700248F87020087
-:1050D000AFA7002C8F8202203C0308FF3463FFFF40
-:1050E0000043102434420004AF8202208F82020069
-:1050F0003C03C0FF3463FFFF00431024344200042C
-:10510000AF8202008F5303588F55035C8F5E03609C
-:105110008F470364AFA700148F470368AFA7001C35
-:105120008F4202D0274401C024420001AF4202D086
-:105130008F5002D08F5102048F5202000C002BA816
-:1051400024050400AF530358AF55035CAF5E036002
-:105150008FA70014AF4703648FA7001CAF470368F5
-:10516000AF5002D0AF510204AF5202008C02025C79
-:1051700027440224AF4201F08C02026024050200A1
-:1051800024060008AF4201F8240200060C002BBFE1
-:10519000AF4201F43C023B9A3442CA00AF4201FCE8
-:1051A000240203E82404000224030001AF42029415
-:1051B000AF440290AF43029C8F820220304200082D
-:1051C0001040000400000000AF43029810000003EC
-:1051D00000003021AF440298000030213C03000160
-:1051E0000066182190636D000346102124C600015B
-:1051F000A043022C2CC2000F1440FFF803461821D4
-:1052000024C600018F820040240400802405008011
-:105210000002170224420030A062022C0346102133
-:105220000C002BA8A040022C8FA7002430E2000421
-:1052300014400006000000008F8202203C0308FF9B
-:105240003463FFFB00431024AF8202208FA7002CA1
-:1052500030E2000414400006000000008F820200CB
-:105260003C03C0FF3463FFFB00431024AF82020005
-:105270008FBF00488FBE00448FB500408FB3003C05
-:105280008FB200388FB100348FB0003003E00008D7
-:1052900027BD00500000000000000000AF400104E6
-:1052A00024040001000410C002E21821248200013D
-:1052B0003C01000100230821A42234D00040202119
-:1052C0002C8200801440FFF8000410C0240200016A
-:1052D0003C01000100370821A42038D0AF42010072
-:1052E000AF800228AF80022CAF800230AF80023442
-:1052F00003E000080000000027BDFFE8AFBF001476
-:10530000AFB000108F420104284200051040002673
-:10531000008080213C0200018F430104344230D0E0
-:1053200002E22021000318C00062182102E31821C4
-:105330000083102B1040001500001021960700007C
-:1053400024840006246600069482FFFC14470009AA
-:10535000000028219483FFFE9602000214620006DA
-:1053600000A0102194820000960300040043102640
-:105370002C45000100A010211440000924840008DD
-:105380000086102B1440FFF000001021304200FF77
-:1053900014400030240200011000002E00001021F3
-:1053A0001000FFFA24020001020020210C00240C4E
-:1053B000240500063042007F000218C002E31021DD
-:1053C0003C01000100220821942230D01040FFF25D
-:1053D00002E310213C06000100C2302194C630D007
-:1053E00010C0FFED3C080001350834D296070000DC
-:1053F000000610C000572021008820219482000060
-:10540000144700090000282194830002960200023C
-:105410001462000600A01021948200049603000488
-:10542000004310262C45000100A010211440000765
-:10543000000610C002E210213C06000100C230212B
-:1054400094C634D014C0FFEB000610C010C0FFD2C9
-:10545000240200018FBF00148FB0001003E0000889
-:1054600027BD001803E000080000000027BDFFB0C2
-:1054700000801021AFB00030245000020200202133
-:1054800024050006AFB1003400408821AFBF0048BA
-:10549000AFBE0044AFB50040AFB3003C0C00240CDD
-:1054A000AFB200383047007F000710C002E2102181
-:1054B0003C05000100A2282194A530D050A0001C7A
-:1054C00000A030213C090001352934D29628000281
-:1054D000000510C00057202100892021948200007F
-:1054E0001448000900003021948300029602000253
-:1054F0001462000600C01021948200049603000488
-:10550000004310262C46000100C010211440000763
-:10551000000510C002E210213C05000100A2282174
-:1055200094A534D014A0FFEB000510C000A03021DA
-:1055300010C00014000610C0005718213C010001E3
-:10554000002308218C2334D000571021AFA3001072
-:105550003C010001002208218C2234D43C040001CB
-:1055600024846394AFA200148E2600008E270004CA
-:105570003C0500040C002B3B34A504001000006324
-:105580003C0208008F45010010A00006000510C075
-:1055900002E210213C01000100220821942234D0B3
-:1055A000AF42010000A0302114C00011000628C045
-:1055B000000710C002E21021AFA700103C0100015B
-:1055C00000220821942230D03C040001248463A0EE
-:1055D000AFA200148E2600008E2700043C050004B4
-:1055E0000C002B3B34A50500100000483C020800CD
-:1055F00000B718213C02000196040000344234D266
-:1056000000621821A46400008E020002000720C07E
-:10561000AC62000202E410213C0300010062182188
-:10562000946330D002E510213C01000100220821E2
-:10563000A42334D002E410213C01000100220821FF
-:10564000A42630D08F420104244200012842008069
-:105650001040000F3C0200028F4201043C04000194
-:10566000348430D296030000000210C0005710218D
-:1056700000441021A44300008E030002AC4300024A
-:105680008F42010424420001AF4201043C020002A7
-:1056900002C2102410400011000721423C03000107
-:1056A000346338D824020003004410230002108021
-:1056B0000057202100832021005710210043102192
-:1056C00030E5001F8C4300002402000100A21004FA
-:1056D000006218251000000CAC83000024020003B7
-:1056E0000044102300021080005C2821005C10217F
-:1056F00030E4001F8C4302282402000100821004C1
-:1057000000621825ACA302283C02080034421000B5
-:1057100000001821AFA200208F5E001827AA0020E9
-:10572000240200FF13C20002AFAA002C27C300010D
-:105730008C020228006090211642000E001E38C024
-:105740008F42033C24420001AF42033C8F42033CA2
-:105750008C0202283C0400012484635C3C0500099F
-:10576000AFA00014AFA200108FA600201000006BA5
-:1057700034A5050000F710218FA300208FA400247A
-:10578000AC4304C0AC4404C48F8300548F820054E3
-:10579000247003E8020210232C4203E91040001B8E
-:1057A0000000982100E08821263504C08F4401784C
-:1057B0008F45017C02201821240A0004AFAA0010A2
-:1057C000AFB200148F48000C0000102102F5302108
-:1057D000AFA800188F48010C2407000800A3282157
-:1057E00000A3482B008220210100F8090089202114
-:1057F00054400006241300018F820054020210233B
-:105800002C4203E91440FFE900000000326200FF6F
-:1058100054400017AF5200188F4203782442000111
-:10582000AF4203788F4203788F8201208FAA002C29
-:10583000AFA200108F8201243C040001248463681D
-:105840003C050009AFA200148D4600001000003393
-:1058500034A506008F4203082413000124420001EE
-:10586000AF4203088F4203081000001C326200FFA1
-:105870008F8300548F820054247003E802021023A7
-:105880002C4203E91040001400009821241100105C
-:105890008F42000C8F4401608F4501648F86012088
-:1058A000AFB10010AFB20014AFA200188F42010CCC
-:1058B000240700080040F80924C6001C1440FFE536
-:1058C000000000008F820054020210232C4203E9E2
-:1058D0001440FFEF00000000326200FF144000118E
-:1058E000000000008F42037824420001AF42037899
-:1058F0008F4203788F8201208FAA002CAFA2001064
-:105900008F8201243C040001248463703C0500095B
-:10591000AFA200148D46000034A507000C002B3BFD
-:1059200003C038218F4202B424420001AF4202B4C6
-:105930008F4202B48F4202F424420001AF4202F4CB
-:105940008F4202F48FBF00488FBE00448FB50040E5
-:105950008FB3003C8FB200388FB100348FB000306D
-:1059600003E0000827BD005027BDFFA000801021E4
-:10597000AFB00040245000020200202124050006A0
-:10598000AFB1004400408821AFBF0058AFBE005403
-:10599000AFB50050AFB3004C0C00240CAFB20048C0
-:1059A0003048007F000810C002E210213C060001D0
-:1059B00000C2302194C630D010C0001C0000382135
-:1059C0003C0A0001354A34D296290002000610C074
-:1059D00000572021008A20219482000014490009E8
-:1059E000000028219483000296020002146200063F
-:1059F00000A01021948200049603000400431026A6
-:105A00002C45000100A0102114400008000610C021
-:105A100000C0382102E210213C06000100C2302102
-:105A200094C634D014C0FFEA000610C014C00011A0
-:105A3000AFA70028000810C002E21021AFA8001094
-:105A40003C01000100220821942230D03C040001D6
-:105A5000248463ACAFA200148E2600008E270004BD
-:105A60003C0500040C002B3B34A509001000007518
-:105A70003C02080010E0000C000610C002E21021F9
-:105A80003C03000100621821946334D0000710C069
-:105A900002E210213C01000100220821A42334D09D
-:105AA0001000000B3C04000102E210213C03000145
-:105AB00000621821946334D0000810C002E2102163
-:105AC0003C01000100220821A42330D03C04000145
-:105AD000348430D08F430100000610C002E2102150
-:105AE0003C01000100220821A42334D08F4201048C
-:105AF00002E438210000282118400029AF460100A7
-:105B000024E6000694C3FFFC96020000146200091C
-:105B10000000202194C3FFFE9602000214620006DA
-:105B20000080102194C20000960300040043102658
-:105B30002C440001008010215040001424A50001D5
-:105B40008F4201042442FFFF00A2102A1040000BE4
-:105B500024E40004948200068C830008A482FFFEE3
-:105B6000AC8300008F42010424A500012442FFFF02
-:105B700000A2102A1440FFF7248400088F42010479
-:105B80002442FFFF10000006AF4201048F420104CF
-:105B900024C6000800A2102A1440FFDA24E70008F7
-:105BA000000810C002E210213C010001002208217F
-:105BB000942230D0144000233C0208003C02000232
-:105BC00002C2102410400012000821423C030001D0
-:105BD000346338D8240200030044102300021080EC
-:105BE000005720210083202100571021004310215D
-:105BF0003105001F240300018C42000000A318049B
-:105C000000031827004310241000000DAC82000090
-:105C1000240200030044102300021080005C2821AD
-:105C2000005C10213104001F240300018C42022873
-:105C3000008318040003182700431024ACA2022894
-:105C40003C0208003442200000001821AFA20020CE
-:105C50008F5E001827AB0020240200FF13C2000251
-:105C6000AFAB003427C300018C02022800609021F2
-:105C70001642000E001E38C08F42033C2442000131
-:105C8000AF42033C8F42033C8C0202283C040001DB
-:105C90002484635C3C050009AFA00014AFA200108F
-:105CA0008FA600201000006B34A5050000F710211E
-:105CB0008FA300208FA40024AC4304C0AC4404C4D0
-:105CC0008F8300548F820054247003E80202102353
-:105CD0002C4203E91040001B0000982100E08821BD
-:105CE000263504C08F4401788F45017C022018219D
-:105CF000240B0004AFAB0010AFB200148F48000CAF
-:105D00000000102102F53021AFA800188F48010CC7
-:105D10002407000800A3282100A3482B008220218B
-:105D20000100F809008920215440000624130001D5
-:105D30008F820054020210232C4203E91440FFE931
-:105D400000000000326200FF54400017AF520018FC
-:105D50008F42037824420001AF4203788F420378D8
-:105D60008F8201208FAB0034AFA200108F820124FC
-:105D70003C040001248463683C050009AFA20014C0
-:105D80008D6600001000003334A506008F42030822
-:105D90002413000124420001AF4203088F4203088C
-:105DA0001000001C326200FF8F8300548F82005469
-:105DB000247003E8020210232C4203E9104000146F
-:105DC00000009821241100108F42000C8F440160C4
-:105DD0008F4501648F860120AFB10010AFB200146F
-:105DE000AFA200188F42010C240700080040F809F8
-:105DF00024C6001C1440FFE5000000008F82005400
-:105E0000020210232C4203E91440FFEF00000000BF
-:105E1000326200FF14400011000000008F4203783E
-:105E200024420001AF4203788F4203788F82012021
-:105E30008FAB0034AFA200108F8201243C0400011C
-:105E4000248463703C050009AFA200148D66000035
-:105E500034A507000C002B3B03C038218F4202B849
-:105E600024420001AF4202B88F4202B88F4202F4CE
-:105E700024420001AF4202F48F4202F48FBF005867
-:105E80008FBE00548FB500508FB3004C8FB20048C6
-:105E90008FB100448FB0004003E0000827BD0060D0
-:105EA00000000000000000000000000027BDFFE02F
-:105EB00027644000AFBF00180C002BA82405100079
-:105EC0003C03000134632CC03C04000134842EC820
-:105ED00024020020AF82011C02E31021AF800100E8
-:105EE000AF800104AF800108AF800110AF800114C2
-:105EF000AF800118AF800120AF800124AF8001285E
-:105F0000AF800130AF800134AF800138AF4200EC88
-:105F100002E31021AF4200F002E41021AF4200F48E
-:105F200002E41021AF4200F83C02000100571021AA
-:105F3000904240F41440001C3C0500018F82011C7B
-:105F40003C040001248464703C05000134420001DB
-:105F5000AF82011CAFA00010AFA000148F86011CFF
-:105F600034A501000C002B3B000038218C020218E4
-:105F70003042004010400014000000008F82011CDD
-:105F80003C0400012484647C3C050001344200048C
-:105F9000AF82011CAFA00010AFA000148F86011CBF
-:105FA0001000000734A502003C040001248464842E
-:105FB000AFA00010AFA000148F86011C34A5030011
-:105FC0000C002B3B000038218FBF001803E00008B5
-:105FD00027BD00208FA900108F83012C8FAA0014E9
-:105FE0008FAB00181060000A27624FE014620002B5
-:105FF00024680020276848008F82012811020004CD
-:10600000000000008F82012415020007000000003C
-:106010008F4303340000102124630001AF43033495
-:10602000100000398F430334AC640000AC650004F9
-:10603000AC660008A467000EAC690018AC6A001CCE
-:10604000AC6B0010AC620014AF8801208F4200FCE2
-:106050008F4400F42442FFFFAF4200FC8C8200001A
-:10606000104900053042FF8F104000193122FF8F88
-:10607000104000183C0200018C8300042C620010C8
-:10608000104000133C02000124630001AC830004B3
-:106090008F4300F8344230C802E2102154620004F9
-:1060A000246200083C02000134422EC802E21021A2
-:1060B00014440015240200018F820128244200208C
-:1060C000AF8201288F8201281000000F24020001F6
-:1060D0003C020001344230C802E210215482000424
-:1060E000248200083C02000134422EC802E2102142
-:1060F0000040202124020001AF4400F4AC890000DC
-:10610000AC8200042402000103E00008000000004B
-:1061100003E00008000000008FA900108F83010C2D
-:106120008FAA00148FAB00181060000A276247E0A6
-:106130001462000224680020276840008F82010852
-:1061400011020004000000008F8201041502000704
-:10615000000000008F430338000010212463000179
-:10616000AF430338100000358F430338AC640000A0
-:10617000AC650004AC660008A467000EAC690018AA
-:10618000AC6A001CAC6B0010AC620014AF8801005C
-:106190008F4400EC8C820000304200061040001951
-:1061A00031220006104000183C0200018C830004DC
-:1061B0002C620010104000133C0200012463000117
-:1061C000AC8300048F4300F034422EC002E2102161
-:1061D00054620004246200083C02000134422CC0D6
-:1061E00002E2102114440015240200018F820108EC
-:1061F00024420020AF8201088F8201081000000FA6
-:10620000240200013C02000134422EC002E21021AF
-:1062100054820004248200083C02000134422CC055
-:1062200002E210210040202124020001AF4400ECD2
-:10623000AC890000AC8200042402000103E00008E5
-:106240000000000003E000080000000027BDFFD8A8
-:106250003C0400012484648C3C050001AFBF002491
-:10626000AFB20020AFB1001CAFB000188F90010496
-:106270008F9100B08F92011C34A525008F82010000
-:106280000240302102203821AFA200100C002B3B2D
-:10629000AFB000148E020008AFA200108E02000CF6
-:1062A0003C04000124846498AFA200148E06000010
-:1062B0008E0700043C0500010C002B3B34A5251083
-:1062C0008E020018AFA200108E02001C3C040001D8
-:1062D000248464A4AFA200148E0600108E0700145C
-:1062E0003C0500010C002B3B34A525203C027F001F
-:1062F000022210243C030800544300163C03020011
-:106300008F82009C3042FFFF144000123C030200C9
-:106310003C040001248464B03C05000234A5F03044
-:10632000000030210000382136420002AF82011CFB
-:1063300036220001AF8200B0AF900104AF92011C81
-:10634000AFA000100C002B3BAFA0001410000024E5
-:106350000000000002C310241040000D022310248E
-:106360001040000B36420002AF82011C36220001B1
-:10637000AF8200B0AF900104AF92011C8F42033096
-:1063800024420001AF420330100000158F42033059
-:106390003C040001248464B8240202A9AFA20010C6
-:1063A000AFA000148F8601443C07000124E764C0BD
-:1063B0000C002B3B3405DEAD8F82011C3442000201
-:1063C000AF82011C8F82022034420004AF8202207F
-:1063D0008F8201403C03000100431025AF82014041
-:1063E0008FBF00248FB200208FB1001C8FB0001827
-:1063F00003E0000827BD002827BDFFD83C040001AA
-:10640000248464E83C050001AFBF0024AFB2002043
-:10641000AFB1001CAFB000188F9001248F9100A085
-:106420008F92011C34A526008F820120024030216A
-:1064300002203821AFA200100C002B3BAFB000149B
-:106440008E020008AFA200108E02000C3C04000176
-:10645000248464F4AFA200148E0600008E070004AA
-:106460003C0500010C002B3B34A526108E020018C1
-:10647000AFA200108E02001C3C04000124846500C1
-:10648000AFA200148E0600108E0700143C05000118
-:106490000C002B3B34A526203C027F000222102456
-:1064A0003C030800544300163C0302008F8200ACFA
-:1064B0003042FFFF144000123C0302003C04000184
-:1064C0002484650C3C05000134A5F0300000302127
-:1064D0000000382136420002AF82011C3622000142
-:1064E000AF8200A0AF900124AF92011CAFA00010BA
-:1064F0000C002B3BAFA00014100000240000000093
-:1065000002C310241040000D022310241040000B81
-:1065100036420002AF82011C36220001AF8200A089
-:10652000AF900124AF92011C8F42032C2442000142
-:10653000AF42032C100000158F42032C3C040001D5
-:10654000248464B8240202E2AFA20010AFA00014B9
-:106550008F8601443C07000124E764C00C002B3BFC
-:106560003405DEAD8F82011C34420002AF82011C73
-:106570008F82022034420004AF8202208F820140C9
-:106580003C03000100431025AF8201408FBF00246F
-:106590008FB200208FB1001C8FB0001803E00008FC
-:1065A00027BD00280000602100005021000030219C
-:1065B0000000282100006821000048210000782107
-:1065C000000070218F8801248F8701041580002E20
-:1065D0008F8B011C11A00014316208008F820120F2
-:1065E00010460029000000003C0400018C846EE489
-:1065F0008CC200008CC30004AC820000AC83000499
-:106600008CC20008AC82000894C2000EA482000E66
-:106610008CC20010240C0001AC8200108CC200144B
-:106620001000001224C600201040001700000000D7
-:106630003C0400018C846EE48D0200008D03000494
-:10664000AC820000AC8300048D020008AC8200081C
-:106650009502000EA482000E8D0200102506002077
-:10666000AC8200108D020014240C000100C018211F
-:10667000AC82001427624FE00043102B544000010D
-:1066800027634800006030211540002F316201006F
-:1066900011200014316280008F8201001045002A11
-:1066A000316201003C0400018C846EE08CA2000089
-:1066B0008CA30004AC820000AC8300048CA2000810
-:1066C000AC82000894A2000EA482000E8CA20010DE
-:1066D000240A0001AC8200108CA2001410000012E9
-:1066E00024A5002010400018316201003C04000184
-:1066F0008C846EE08CE200008CE30004AC8200002D
-:10670000AC8300048CE20008AC82000894E2000E26
-:10671000A482000E8CE2001024E50020AC82001060
-:106720008CE20014240A000100A01821AC8200149D
-:10673000276247E00043102B5440000127634000CC
-:1067400000602821316201005440001D31621000B8
-:1067500011A0000931A20800104000042502002009
-:106760008F8200A8A5E2000025020020AF8201244C
-:106770008F8801240000682111800011316210000F
-:106780003C0400018C846EE48C8200008C83000445
-:10679000AF820080AF8300848C820008AF8200A4A7
-:1067A0009482000EAF8200AC8C8200100000602149
-:1067B000AF8200A08C8D00108C8F0014316210000D
-:1067C0001440FF82000000001120000F3122080059
-:1067D000104000043C0200028F8200B8A5C20000F5
-:1067E0003C020002012210241040000424E2002098
-:1067F0008F8200B4AF8200D424E20020AF82010473
-:106800008F870104000048211140FF700000000044
-:106810003C0400018C846EE08C8200008C830004B8
-:10682000AF820090AF8300948C820008AF8200B4E6
-:106830009482000EAF82009C8C82001000005021D8
-:10684000AF8200B08C8900101000FF608C8E0014A5
-:1068500003E0000800000000000060210000582153
-:106860000000302100002821000068210000502194
-:1068700000007821000070218F8801248F87010497
-:106880003C1801001580002E8F89011C11A00014F6
-:10689000312208008F8201201046002900000000EC
-:1068A0003C0400018C846EE48CC200008CC30004A4
-:1068B000AC820000AC8300048CC20008AC820008EB
-:1068C00094C2000EA482000E8CC20010240C0001A1
-:1068D000AC8200108CC200141000001224C60020EC
-:1068E00010400017000000003C0400018C846EE49E
-:1068F0008D0200008D030004AC820000AC83000414
-:106900008D020008AC8200089502000EA482000EE1
-:106910008D02001025060020AC8200108D020014AC
-:10692000240C000100C01821AC82001427624FE043
-:106930000043102B544000012763480000603021C1
-:106940001560002F31220100114000143122800017
-:106950008F8201001045002A312201003C04000111
-:106960008C846EE08CA200008CA30004AC8200003A
-:10697000AC8300048CA20008AC82000894A2000E34
-:10698000A482000E8CA20010240B0001AC82001027
-:106990008CA200141000001224A500201040001842
-:1069A000312201003C0400018C846EE08CE2000086
-:1069B0008CE30004AC820000AC8300048CE200088D
-:1069C000AC82000894E2000EA482000E8CE200105B
-:1069D00024E50020AC8200108CE20014240B00019E
-:1069E00000A01821AC820014276247E00043102B5E
-:1069F000544000012763400000602821312201003B
-:106A00005440001D3122100011A0000931A20800DD
-:106A100010400004250200208F8200A8A5E200009B
-:106A200025020020AF8201248F8801240000682104
-:106A300011800011312210003C0400018C846EE4AE
-:106A40008C8200008C830004AF820080AF830084BE
-:106A50008C820008AF8200A49482000EAF8200AC4A
-:106A60008C82001000006021AF8200A08C8D00108D
-:106A70008C8F00143122100014400022000000000E
-:106A80001140000F31420800104000043C02000297
-:106A90008F8200B8A5C200003C020002014210240F
-:106AA0001040000424E200208F8200B4AF8200D4A2
-:106AB00024E20020AF8201048F87010400005021EE
-:106AC00011600010000000003C0400018C846EE0A6
-:106AD0008C8200008C830004AF820090AF8300940E
-:106AE0008C820008AF8200B49482000EAF82009CBA
-:106AF0008C82001000005821AF8200B08C8A0010F8
-:106B00008C8E00148F8200703C0310000043102410
-:106B10001040FF5C000000008F82005424420005FA
-:106B2000AF8200788C040234108000160000182117
-:106B30003C020001005710218C4240E8244200052D
-:106B40003C01000100370821AC2240E83C02000172
-:106B5000005710218C4240E80044102B14400009DB
-:106B6000240200013C0300803C01000100370821A1
-:106B7000AC2040E83C010001003708211000000C67
-:106B8000A02240F03C02000100571021904240F04A
-:106B9000144000063C0200803C0200010057102116
-:106BA000904240F1104000023C0200800062182533
-:106BB0008C04023010800013000000003C02000131
-:106BC000005710218C4240EC244200053C0100019A
-:106BD00000370821AC2240EC3C0200010057102194
-:106BE0008C4240EC0044102B1440000600000000D2
-:106BF0003C01000100370821AC2040EC10000006E9
-:106C0000007818253C02000100571021904240F204
-:106C100054400001007818251060FF1A00000000A1
-:106C20008F4200001040000700000000AF80004CC1
-:106C30008F82004C1040FFFD000000001000000596
-:106C400000000000AF8000488F8200481040FFFD28
-:106C5000000000008F82006000431025AF820060BA
-:106C60008F42000010400003000000001000FF05EC
-:106C7000AF80004C1000FF03AF80004803E0000825
-:106C80000000000000000000000000003C020001C5
-:106C90008C426D2827BDFFE8AFBF001414400012DE
-:106CA000AFB000103C10000126106F9002002021B0
-:106CB0000C002BA82405200026021FE03C01000147
-:106CC000AC226EEC3C010001AC226EE8AC0202503A
-:106CD00024022000AC100254AC020258240200012D
-:106CE0003C010001AC226D288FBF00148FB0001052
-:106CF00003E0000827BD00183C0900018D296EEC57
-:106D00008C8200008FA300108FA80014AD22000019
-:106D10008C820004AD250008AD2200048F8200544F
-:106D2000AD260010AD270014AD230018AD28001CBF
-:106D3000AD22000C2529FFE03C02000124426F90A7
-:106D40000122102B10400003000000003C0900014C
-:106D50008D296EE83C0200018C426D10AD220000CE
-:106D60003C0200018C426D103C010001AC296EEC2C
-:106D7000AD220004AC09025003E00008000000004E
-:106D800027BDFFD0AFB000103C1000018E106EEC9C
-:106D90003C0200018C426D10AFB1001400808821CC
-:106DA000AFBE00248FBE00408FA40048AFB20018D1
-:106DB00000A09021AFBF0028AFB50020AFB3001CEA
-:106DC000AE0200003C0200018C426D1000C0982110
-:106DD00000E0A82110800006AE020004260500088D
-:106DE0000C002BB324060018100000052610FFE04D
-:106DF000260400080C002BA8240500182610FFE02C
-:106E00003C03000124636F900203102B1040000329
-:106E1000000000003C1000018E106EE88E22000081
-:106E2000AE0200008E220004AE120008AE02000482
-:106E30008F820054AE130010AE150014AE1E001861
-:106E40008FA80044AE08001CAE02000C2610FFE024
-:106E50000203102B10400003000000003C10000152
-:106E60008E106EE83C0200018C426D10AE020000F4
-:106E70003C0200018C426D103C010001AC306EEC14
-:106E8000AE020004AC1002508FBF00288FBE002459
-:106E90008FB500208FB3001C8FB200188FB1001483
-:106EA0008FB0001003E0000827BD003000851821D6
-:106EB0000083102B1040000600000000AC80000092
-:106EC000248400040083102B5440FFFDAC8000009C
-:106ED00003E000080000000000A6182100A3102B0A
-:106EE00010400007000000008C820000ACA20000EF
-:106EF00024A5000400A3102B1440FFFB24840004ED
-:106F000003E0000800000000008618210083102B19
-:106F100010400007000000008CA20000AC820000BE
-:106F2000248400040083102B1440FFFB24A50004DC
-:106F300003E00008000000000006308000861821F1
-:106F40000083102B1040000600000000AC850000FC
-:106F5000248400040083102B5440FFFDAC85000006
-:106F600003E00008000000000000000026E5002803
-:106F700000A03021274301C08F4D03588F47035C89
-:106F80008F4803608F4903648F4A03688F4B020464
-:106F90008F4C0200246404000064102B1040000891
-:106FA0003C0208FF8CC20000AC62000024630004B5
-:106FB0000064102B1440FFFB24C600043C0208FFB1
-:106FC0003442FFFF3C03C0FFAF4D0358AF47035CA3
-:106FD000AF480360AF490364AF4A0368AF4B020494
-:106FE000AF4C02008F8402203463FFFF8F860200C3
-:106FF000008210243442000400C3182434630004C7
-:10700000AF820220AF8302008CA20214AC02008483
-:107010008CA20218AC0200888CA2021CAC02008C6C
-:107020008CA20220AC0200908CA20224AC0200943C
-:107030008CA20228AC0200988CA2022CAC02009C0C
-:107040008CA20230AC0200A08CA20234AC0200A4DC
-:107050008CA20238AC0200A88CA2023CAC0200ACAC
-:107060008CA20240AC0200B08CA20244AC0200B47C
-:107070008CA20248AC0200B88CA2024CAC0200BC4C
-:107080008CA2001CAC0200808CA20018AC0200C0D4
-:107090008CA20020AC0200CC8CA20024AC0200D058
-:1070A0008CA201D0AC0200E08CA201D4AC0200E4BE
-:1070B0008CA201D8AC0200E88CA201DCAC0200EC8E
-:1070C0008CA201E0AC0200F08CA200988CA3009C82
-:1070D000AC0300FC8CA200A88CA300ACAC0300F4B1
-:1070E0008CA200A08CA300A430840004AC0300F8A0
-:1070F0001480000730C200048F8202203C0308FF86
-:107100003463FFFB00431024AF82022030C200042E
-:1071100014400006000000008F8202003C03C0FF04
-:107120003463FFFB00431024AF8202008F4202DC75
-:10713000A34005C524420001AF4202DC8F4202DCBD
-:1071400003E000080000000027BDFFD8AFBF002407
-:10715000AFB000208F4300248F420020106200381F
-:10716000000000008F4300208F4200240062202393
-:1071700004810003000000008F42004000822021B3
-:107180008F4300308F4200240043102B1440000531
-:10719000000000008F4300408F42002410000005D3
-:1071A000006210238F4200308F43002400431023DD
-:1071B0002442FFFF00406021008C102A544000014F
-:1071C000008060218F4A00248F4900408F480024AE
-:1071D0008F4401808F4501848F4600248F4B001C13
-:1071E00024070001AFA7001000084100010018218A
-:1071F000014C50212529FFFF01498024AFB0001424
-:107200008F4700140000102100063100AFA70018BE
-:1072100000A3282100A3382B0082202100872021F1
-:107220008F420108016630210040F809000C390046
-:1072300054400001AF5000248F4300248F420020AF
-:1072400014620018000000008F4200001040000788
-:1072500000000000AF80004C8F82004C1040FFFD0A
-:10726000000000001000000500000000AF80004892
-:107270008F8200481040FFFD000000008F820060F8
-:107280002403FFEF00431024AF8200608F42000010
-:10729000104000030000000010000002AF80004C0E
-:1072A000AF8000488FBF00248FB0002003E00008AB
-:1072B00027BD002803E000080000000027BDFFC034
-:1072C00032C20020AFBF0038AFB30034AFB20030DD
-:1072D000AFB1002C10400004AFB000288F5300283D
-:1072E00010000002000000008F5300208F42003089
-:1072F000105300EB000211008F43001C006280213C
-:107300008E0400008E050004961200088F42009043
-:107310009611000A3246FFFF0046102A104000175F
-:10732000000000008F8200D88F4300980043102394
-:107330002442DCBEAF4200908F4200902842DCBF66
-:1073400010400005000000008F4200908F43014470
-:1073500000431021AF4200908F4200900046102A57
-:1073600010400006000000008F4203482442000144
-:10737000AF420348100000E18F4203488F8200FCB7
-:1073800014400006000000008F4203442442000124
-:10739000AF420344100000D98F420344934205C218
-:1073A0001040000B32C200081040000832220200D8
-:1073B000104000063C0340009602000EAF4300ACB4
-:1073C0000002140010000002AF4200B0AF4000AC59
-:1073D000322200041040007F3222080010400003D7
-:1073E0003247FFFF100000022402002024020004A4
-:1073F000AFA200108F420030AFA200148F420010E5
-:107400003C03000200431025AFA200188F460098ED
-:107410008F4201080040F80900000000104000B74A
-:10742000000000008F42009C8F4300940242102114
-:10743000AF42009CAE03000C8F4200AC104000082D
-:107440003C0340008F42009400431025AFA200206F
-:107450008F42009C8F4300B01000000400431025B1
-:107460008F420094AFA200208F42009CAFA2002464
-:107470008F8200FC8FA300208FA40024AC43000067
-:10748000AC44000424420008AF8200F08F42009C0C
-:107490008F4402708F4502740040182100001021B3
-:1074A00000A3282100A3302B008220210086202168
-:1074B0003223006024020040AF440270AF450274E2
-:1074C000106200172C6200411040000524020020C9
-:1074D00010620008240200011000002600000000D5
-:1074E0002402006010620019240200011000002133
-:1074F000000000008F4202788F43027C2463000169
-:107500002C64000100441021AF420278AF43027C9A
-:107510008F4202788F43027C100000162402000183
-:107520008F4202808F430284246300012C64000197
-:1075300000441021AF420280AF4302848F42028098
-:107540008F4302841000000B240200018F42028846
-:107550008F43028C246300012C640001004410213D
-:10756000AF420288AF43028C8F4202888F43028C65
-:1075700024020001A34205C28F4200983244FFFF5B
-:107580002406FFF88F45013C0044102124420007E7
-:107590000046102424840007AF4200948F420090DC
-:1075A0008F43009400862024004410230065182B8C
-:1075B00014600005AF4200908F4200948F43014455
-:1075C00000431023AF4200948F4200941000002328
-:1075D000AF40009C3247FFFF50E0002232C2002043
-:1075E000144000022402001024020002AFA2001086
-:1075F0008F420030AFA200148F420010AFA20018DB
-:107600008F4600988F4201080040F80900000000F2
-:107610001040003A3245FFFF8F4200988F430090A0
-:107620008F46013C00451021AF4200988F42009CDC
-:107630008F440098A34005C200651823AF43009013
-:10764000004510210086202B14800005AF42009CCD
-:107650008F4200988F43014400431023AF420098AB
-:1076600032C2002010400005000000008F42035885
-:107670002442FFFFAF4203588F4203588F4200302D
-:107680008F430040244200012463FFFF0043102485
-:10769000AF4200308F420030145300180000000049
-:1076A0008F4200001040000700000000AF80004C37
-:1076B0008F82004C1040FFFD00000000100000050C
-:1076C00000000000AF8000488F8200481040FFFD9E
-:1076D000000000008F8200602403FFF700431024A5
-:1076E000AF8200608F4200001040000300000000E5
-:1076F00010000002AF80004CAF8000488FBF003800
-:107700008FB300348FB200308FB1002C8FB00028BF
-:1077100003E0000827BD004003E00008000000006F
-:1077200027BDFFD032C20020AFBF002CAFB200286F
-:10773000AFB1002410400004AFB000208F520028E9
-:1077400010000002000000008F5200208F42003025
-:10775000105200B5000211008F43001C006280210E
-:107760008E0400008E050004961100088F420090E0
-:107770009607000A3226FFFF0046102A1040001725
-:10778000000000008F8200D88F4300980043102330
-:107790002442DC46AF4200908F4200902842DC47F2
-:1077A00010400005000000008F4200908F4301440C
-:1077B00000431021AF4200908F4200900046102AF3
-:1077C00010400006000000008F42034824420001E0
-:1077D000AF420348100000AB8F4203488F8600FC85
-:1077E00010C0000C000000008F8200F42403FFF89A
-:1077F0000043102400461023000218C35860000103
-:10780000246301008F42008C0043102B14400006BB
-:10781000000712C28F42034424420001AF420344D6
-:10782000100000988F420344934305C21060000F7C
-:10783000304600018F4200103448040032C2000874
-:107840001040000830E20200104000063C034000F7
-:107850009602000EAF4300AC0002140010000004BA
-:10786000AF4200B010000002AF4000AC8F480010E3
-:1078700030E20004104000453227FFFF8F4900AC82
-:107880001120000530C200FF144000062402004011
-:10789000100000042402000814400002240200200A
-:1078A00024020004AFA200108F4300301120000416
-:1078B000AFA300148F4200B000621025AFA20014E5
-:1078C0003C02000201021025AFA200188F4600986A
-:1078D0008F4201080040F8090000000010400069D4
-:1078E0003224FFFF8F42008C8F430094244200011A
-:1078F000AF42008C24020001AE03000CA34205C27B
-:107900008F4200982406FFF88F45013C0044102167
-:10791000244200070046102424840007AF4200944C
-:107920008F4200908F43009400862024004410234F
-:107930000065182B14600005AF4200908F42009440
-:107940008F43014400431023AF4200948F430094BF
-:107950008F4201400043102B10400009000000003E
-:107960008F43013C8F4400948F4200908F45013833
-:107970000064182300431023AF420090AF450094E9
-:107980008F4200941000001FAF42009810E0001DCD
-:1079900030C200FF14400002240200102402000242
-:1079A000AFA200108F420030AFA80018AFA20014A1
-:1079B0008F4600988F4201080040F809000000003F
-:1079C000104000303225FFFF8F4200988F44013C69
-:1079D00000451021AF4200988F4200908F430098DD
-:1079E000A34005C2004510230064182B1460000555
-:1079F000AF4200908F4200988F4301440043102310
-:107A0000AF4200988F4200308F4300402442000173
-:107A10002463FFFF00431024AF4200308F42003048
-:107A200014520018000000008F42000010400007B0
-:107A300000000000AF80004C8F82004C1040FFFD22
-:107A4000000000001000000500000000AF800048AA
-:107A50008F8200481040FFFD000000008F82006010
-:107A60002403FFF700431024AF8200608F42000020
-:107A7000104000030000000010000002AF80004C26
-:107A8000AF8000488FBF002C8FB200288FB1002438
-:107A90008FB0002003E0000827BD003003E000089D
-:107AA0000000000027BDFFD83C02000134422EC078
-:107AB000AFBF00208F4300F08F84010802E2102145
-:107AC00054620004246200083C02000134422CC0CD
-:107AD00002E2102100401821AF4300F0AC6000002A
-:107AE0008F4200EC8C660004146200043C0200012A
-:107AF000248200201000000FAF8201088F4300F0A5
-:107B000034422EC002E210215462000424620008B4
-:107B10003C02000134422CC002E210210040182136
-:107B20008C6200040002114000821021AF82010823
-:107B3000AC6000008C85001830A200361040006C4C
-:107B400030A200018C82001C8F4300408F4400341F
-:107B5000244200012463FFFF0043102400862021FB
-:107B6000AF42002C30A2003014400006AF44003475
-:107B70008F4200348C03023C0043102B144000B4AD
-:107B80000000000032C20010104000282407000846
-:107B90008F4401708F4501748F43002C8F48000C77
-:107BA0008F86012024020080AFA20010AFA3001432
-:107BB000AFA800188F42010C0040F80924C6001C31
-:107BC00014400011240200013C010001003708218B
-:107BD000A02240F18F820124AFA200108F820128E1
-:107BE0003C040001248467C4AFA200148F46002C1B
-:107BF0008F8701203C0500090C002B3B34A51100A8
-:107C000010000036000000008F4203008F43002C5C
-:107C100024420001AF4203008F420300240200010E
-:107C2000A34205C110000026AF4300388F44017005
-:107C30008F4501748F43002C8F48000C8F860120E4
-:107C400024020020AFA20010AFA30014AFA80018B8
-:107C50008F42010C0040F80924C6001C144000119A
-:107C6000240200013C01000100370821A02240F05D
-:107C70008F820124AFA200108F8201283C040001F2
-:107C8000248467B8AFA200148F46002C8F87012090
-:107C90003C0500090C002B3B34A509001000000F27
-:107CA000000000008F42030024420001AF420300A5
-:107CB0008F4203008F42002CA34005C1AF42003821
-:107CC0003C01000100370821A02040F13C010001E7
-:107CD00000370821A02040F0AF4000348F42031449
-:107CE00024420001AF420314100000598F420314D4
-:107CF0001040002230A270008C85001C8F420028AA
-:107D000000A2202304810003000000008F420040F5
-:107D1000008220218F4203588F430000AF45002886
-:107D20000044102110600007AF420358AF80004CA0
-:107D30008F82004C1040FFFD000000001000000585
-:107D400000000000AF8000488F8200481040FFFD17
-:107D5000000000008F82006034420008AF820060A3
-:107D60008F420000104000030000000010000038A7
-:107D7000AF80004C10000036AF8000481040002F4C
-:107D800030A210001040000C30A240008C83001C78
-:107D90008F420050006220230482000124840200EC
-:107DA0008F42035C00441021AF42035C8F420368A2
-:107DB0001000001AAF4300501040000C32C2800087
-:107DC0008C83001C8F42007000622023048200011B
-:107DD000248404008F42036400441021AF420364F2
-:107DE0008F4203681000000DAF4300701040000E7A
-:107DF0003C0208008C83001C8F420060006220233C
-:107E000004820001248401008F4203600044102199
-:107E1000AF4203608F420368AF430060004410210B
-:107E2000AF4203683C02080002C210245040000820
-:107E300036940040100000060000000030A201004F
-:107E400010400003000000000C002BD800000000D0
-:107E50008FBF002003E0000827BD002803E00008D2
-:107E60000000000027BDFFA8AFBF0050AFBE004C10
-:107E7000AFB50048AFB30044AFB20040AFB1003C73
-:107E8000AFB000388F91010826220020AF82010890
-:107E90008E3200180000A82132420024104001BA9E
-:107EA0000000F0218E26001C8F43001C00061100EC
-:107EB000006218218C70000C9604000C962D0016A0
-:107EC0009473000A2C8305DD388288702C420001EF
-:107ED00000621825106000150000282132C2004001
-:107EE00010400015240208009603001414620012CA
-:107EF0003402AAAA9603000E146200070000202193
-:107F00009603001024020300146200040080102174
-:107F1000960200122C4400010080102154400006FB
-:107F200024050016100000040000000024020800D0
-:107F3000508200012405000E934205C3144000083E
-:107F400000005821240B000132620180AF4500A8D7
-:107F5000AF5000A010400002AF4600A4A34B05C3E1
-:107F600010A0008502054021910200000000382188
-:107F70003042000F0002508032C200021040001256
-:107F8000010A1821326200021040001032C20001C2
-:107F900001002021948200002484000200E23821A4
-:107FA0000083102B1440FFFB30E2FFFF00071C0290
-:107FB0000062382100071C0230E2FFFF0062382116
-:107FC00000071027A502000A32C200011040006A13
-:107FD0003262000110400068000000008F4200A8DB
-:107FE00010400065000000008F4200A08F4300A8F1
-:107FF00000431021904C0009318900FF392300060D
-:108000000003182B392200110002102B00621824E3
-:108010001060000C3C0500068F4200A43C040001E7
-:10802000248467D4AFA200108F4200A034A546007C
-:10803000012038210C002B3BAFA200141000004E91
-:108040000000000032C20004144000130000282188
-:10805000316200FF1440000400000000950200029D
-:108060001000000D004A28239505000C9502000E13
-:108070009503001000A2282100A3282195030012D7
-:10808000910400099502000200A3282100A42821E0
-:10809000004A102300A2282102002021948200001F
-:1080A0002484000200E238210088102B1440FFFBDA
-:1080B00000071C0230E2FFFF0062382100071C02AB
-:1080C00030E2FFFF0062382101A5282100051C02D3
-:1080D00030A2FFFF0062282100051C0230A2FFFF32
-:1080E0000062282100A728230005140200A22821ED
-:1080F00030A5FFFF50A000013405FFFF316200FFF3
-:1081000014400008318300FF8F4300A08F4200A875
-:1081100000624021910200003042000F00025080B6
-:10812000318300FF2402000614620003010A1021BB
-:10813000100000022444001024440006316200FFB5
-:1081400014400006000000009482000000A22821D4
-:1081500000051C0230A2FFFF00622821934205C3E4
-:10816000104000033262010050400003A48500006B
-:1081700000052827A48500009622000E8F43009C4E
-:108180000062182132A200FF10400007AF43009C9C
-:108190003C02400002021025AFA200208F42009C4A
-:1081A00010000003005E1025AFB000208F42009C3D
-:1081B000AFA2002432620080104000103262010041
-:1081C0008F4200B424430001000210C00057102168
-:1081D000AF4300B48FA300208FA400243C01000112
-:1081E00000220821AC2338E83C01000100220821CC
-:1081F000AC2438EC100000A532C20020104000640E
-:10820000000000008F4200B424430001000210C0AF
-:1082100000571021AF4300B48FA300208FA4002487
-:108220003C01000100220821AC2338E83C01000198
-:1082300000220821AC2438EC8F4200B410400051D9
-:10824000000038213C090001352938E83C08001FAE
-:108250003508FFFF240BFFFF340AFFFF000710C0A3
-:1082600000571021004910218C4300008C44000469
-:10827000AFA30028AFA4002C8F8200FC8FA300289E
-:108280008FA4002CAC430000AC440004244200083E
-:10829000AF8200F08F42008C2442FFFFAF42008C7F
-:1082A00097A2002E8F4402708F450274004018215F
-:1082B0000000102100A3282100A3302B00822021E0
-:1082C00000862021AF440270AF4502748FA20028BF
-:1082D0000048102490430000306300011460000B3C
-:1082E000004020218F4202788F43027C24630001EA
-:1082F0002C64000100441021AF420278AF43027C9D
-:108300008F4202781000001A8F43027C8C8200009A
-:10831000144B000E0000000094820004144A000B6D
-:10832000000000008F4202888F43028C246300010A
-:108330002C64000100441021AF420288AF43028C3C
-:108340008F4202881000000A8F43028C8F42028005
-:108350008F430284246300012C6400010044102137
-:10836000AF420280AF4302848F4202808F43028477
-:108370008F4200B424E7000100E2102B1440FFB844
-:10838000000710C0A34005C31000003FAF4000B479
-:108390008F8200FC8FA300208FA40024AC43000038
-:1083A000AC44000424420008AF8200F08F42009CDD
-:1083B0008F46008C8F4402708F4502740040182154
-:1083C0000000102124C6FFFFAF46008C00A3282127
-:1083D00000A3302B0082202100862021AF440270B0
-:1083E000AF45027492020000304200011440000CBC
-:1083F0002402FFFF8F4202788F43027C2463000136
-:108400002C64000100441021AF420278AF43027C8B
-:108410008F4202788F43027C1000001C32C2002081
-:108420008E0300001462000F3402FFFF9603000465
-:108430001462000C000000008F4202888F43028CFF
-:10844000246300012C64000100441021AF42028823
-:10845000AF43028C8F4202888F43028C1000000BC6
-:1084600032C200208F4202808F43028424630001C5
-:108470002C64000100441021AF420280AF4302840B
-:108480008F4202808F43028432C2002010400005D8
-:10849000AF40009C8F4203582442FFFFAF42035875
-:1084A0008F4203588E22001C8F430040244200015B
-:1084B0002463FFFF00431024AF42002C32420060CF
-:1084C0001440000832C200108F42003424420001E0
-:1084D000AF4200348C03023C0043102B14400102D5
-:1084E00032C2001010400018240700088F440170A9
-:1084F0008F4501748F43002C8F48000C8F8601201C
-:1085000024020080AFA20010AFA30014AFA800188F
-:108510008F42010C0040F80924C6001C104000479F
-:10852000240200018F4203008F43002C24420001EB
-:10853000AF4203008F42030024020001A34205C1A1
-:108540001000007CAF4300388F4401708F450174E8
-:108550008F43002C8F48000C8F86012024020020BE
-:10856000AFA20010AFA30014AFA800188F42010CF7
-:108570000040F80924C6001C1040005724020001E6
-:10858000100000650000000032420012104000752B
-:10859000324200019622000E8F43009C0062182197
-:1085A00032C2002010400005AF43009C8F420358A8
-:1085B0002442FFFFAF4203588F4203588E22001C13
-:1085C0008F430040244200012463FFFF0043102436
-:1085D000AF42002C324200101440000832C200109A
-:1085E0008F42003424420001AF4200348C03023C2D
-:1085F0000043102B144000BC32C200101040002871
-:10860000240700088F4401708F4501748F43002CAC
-:108610008F48000C8F86012024020080AFA200103A
-:10862000AFA30014AFA800188F42010C0040F80956
-:1086300024C6001C14400011240200013C0100016A
-:1086400000370821A02240F18F820124AFA2001040
-:108650008F8201283C040001248467C4AFA2001467
-:108660008F46002C8F8701203C0500090C002B3B16
-:1086700034A5110010000036000000008F420300F6
-:108680008F43002C24420001AF4203008F420300BD
-:1086900024020001A34205C110000026AF430038A8
-:1086A0008F4401708F4501748F43002C8F48000C5C
-:1086B0008F86012024020020AFA20010AFA3001477
-:1086C000AFA800188F42010C0040F80924C6001C16
-:1086D00014400011240200013C0100010037082170
-:1086E000A02240F08F820124AFA200108F820128C7
-:1086F0003C040001248467B8AFA200148F46002C0C
-:108700008F8701203C0500090C002B3B34A5090094
-:108710001000000F000000008F42030024420001FF
-:10872000AF4203008F4203008F42002CA34005C1DB
-:10873000AF4200383C01000100370821A02040F181
-:108740003C01000100370821A02040F0AF40003478
-:108750008F42031424420001AF4203141000006250
-:108760008F42031410400022324270008E25001CFC
-:108770008F42002800A22023048100030000000093
-:108780008F420040008220218F4203588F43000017
-:10879000AF4500280044102110600007AF42035885
-:1087A000AF80004C8F82004C1040FFFD00000000A5
-:1087B0001000000500000000AF8000488F820048D4
-:1087C0001040FFFD000000008F820060344200086E
-:1087D000AF8200608F4200001040000300000000E4
-:1087E00010000041AF80004C1000003FAF800048F7
-:1087F0001040002F324210001040000C3242400066
-:108800008E23001C8F42005000622023048200014E
-:10881000248402008F42035C00441021AF42035CB9
-:108820008F4203681000001AAF4300501040000C44
-:1088300032C280008E23001C8F4200700062202311
-:1088400004820001248404008F4203640044102148
-:10885000AF4203648F4203681000000DAF43007005
-:108860001040000E3C0208008E23001C8F42006066
-:108870000062202304820001248401008F420360EF
-:1088800000441021AF4203608F420368AF43006091
-:1088900000441021AF4203683C02080002C21024C9
-:1088A00050400011369400401000000F00000000FE
-:1088B0003242004810400007241500018E22001C9F
-:1088C0003C03FFFF0043F0243042FFFF1000FD7522
-:1088D000AE22001C324201001040000300000000E4
-:1088E0000C002BD8000000008FBF00508FBE004C42
-:1088F0008FB500488FB300448FB200408FB1003C69
-:108900008FB0003803E0000827BD005803E00008DE
-:108910000000000000000000000000008F8300E461
-:108920008F8200E02404FFF8004410240062102627
-:108930000002102B0002102303E000080062102444
-:1089400003E000080000000027BDFFE0AFBF001CEF
-:10895000AFB000188F8600C48F8400E08F8500E4DC
-:108960002402FFF80082182410A3000927623FF8B0
-:1089700014A2000224A200082762300000408021D7
-:1089800016030005308200041040000400C02021BE
-:1089900010000022000010218E0400008F42011CF4
-:1089A00014A20003000000008F420120AF42011416
-:1089B0008CA300008F420148008318230043102B32
-:1089C00010400003000000008F420148006218219F
-:1089D00094A20006244200500062102B1440000FA5
-:1089E00000A01021AFA40010AFA300148CA60000BB
-:1089F0008CA700043C0400010C002B3B24846894E9
-:108A00008F42020C24420001AF42020C8F42020C42
-:108A100000001021AF9000E8AF9000E48FBF001C71
-:108A20008FB0001803E0000827BD002003E0000815
-:108A3000000000008F8400E08F8800C48F8300E86E
-:108A40002402FFF80082382400E320232C82100047
-:108A50005040000124841000000420C2008018212E
-:108A60008F4402588F45025C0000102100A328218A
-:108A700000A3302B0082202100862021AF44025821
-:108A8000AF45025C8F8300C88F4201480103202359
-:108A90000082102B14400004008018218F420148EE
-:108AA00000822021008018218F4402508F450254FB
-:108AB0000000102100A3282100A3302B00822021D8
-:108AC00000862021AF440250AF450254AF8800C851
-:108AD000AF8700E4AF8700E803E000080000000073
-:108AE00027BDFF30240A0001AFBF00C8AFBE00C4DD
-:108AF000AFB500C0AFB300BCAFB200B8AFB100B407
-:108B0000AFB000B0A3A00097AFA00044AFAA005C34
-:108B1000934205C4A7A0008E1040000AA7A00086BB
-:108B20008F4B00C4AFAB00648F4A00C0AFAA006C8B
-:108B30008F4B00CCAFAB00748F4A00C810000129E6
-:108B4000AFAA007C8F4201140040F8090000000029
-:108B50000040302110C0034F000000008CC2000014
-:108B60008CC30004AFA20020AFA300248FAB00246D
-:108B70008FAA00203162FFFF2442FFFCAFA2006CED
-:108B80003C02000602C21024AFAB007C144000156A
-:108B9000AFAA006491420000304200011040001171
-:108BA0002402FFFF8D430000146200043402FFFF23
-:108BB000954300041062000B000000000C0024BB71
-:108BC0008FA40064304200FF144000060000000043
-:108BD0008F4201180040F809000000001000032D2A
-:108BE000000000008FA200243C03FFBF3463FFFF9E
-:108BF000004310243C03FFFF0043182414600003CB
-:108C0000AFA2002410000040000018213C020080A8
-:108C10000062102410400007000000008F42038C07
-:108C200024420001AF42038C8F42038C10000036B7
-:108C3000240300018F42021024420001AF420210BF
-:108C40008F4202103C020001006210241040000616
-:108C50003C0200028F4201C424420001AF4201C421
-:108C60008F4201C43C020002006210241040000642
-:108C70003C0200048F42037C24420001AF42037C8B
-:108C80008F42037C3C020004006210241040000666
-:108C90003C0200088F42038024420001AF4203805F
-:108CA0008F4203803C02000800621024104000063E
-:108CB0003C0200108F42038424420001AF4203842F
-:108CC0008F4203843C020010006210241040000612
-:108CD0003C0200208F4201C024420001AF4201C08B
-:108CE0008F4201C03C0200200062102410400006A8
-:108CF000240300018F42038824420001AF4203880D
-:108D00008F420388240300018C0202608FAB006C49
-:108D1000004B102B10400014307000FF8F4201E810
-:108D200024420001AF4201E88F4201E88FAA007C93
-:108D30008F8200E0354A0100AFAA007CAFA200108C
-:108D40008F8200E4241000013C040001248468A008
-:108D5000AFA200148FA600208FA700243C050007B7
-:108D60000C002B3B34A50800120000103C020080D0
-:108D700002C210241440000E32C204008FAB007CEB
-:108D80003C020080344201000162102410400005C2
-:108D9000000000008F42020C24420001AF42020C8E
-:108DA0008F42020C100002B08FA3006C32C204008C
-:108DB00010400015340281008FAA00649543000C16
-:108DC000146200123C020100240B0200A7AB008ECB
-:108DD0009542000E8D4300088D4400048D4500002F
-:108DE0008FAA006C8FAB0064254AFFFCAFAA006C11
-:108DF000A7A20086AD63000CAD640008AD65000459
-:108E0000256B0004AFAB00643C02010002C21024D9
-:108E100010400004000000008FAA006C254A0004E6
-:108E2000AFAA006C8F4200BC5040000AAFA0007493
-:108E30008FAB006C004B102B50400006AFA00074AD
-:108E40008F4200BC01621023AFA200748F4A00BCA5
-:108E5000AFAA006C8F4200808FAB006C004B102BD0
-:108E60001040005632C280001040005E240A000309
-:108E700032C210001040005BAFAA005C1000005826
-:108E8000240B00048F4203502403FFBF0283A0245D
-:108E900024420001AF4203501000024F8F420350A2
-:108EA00002C2B0252402FFBF0282A0248F830128C2
-:108EB0003C040001248468D026620001AFA20014A3
-:108EC000AFA300108F8601208F8701243C05000787
-:108ED0000C002B3B34A522501000023F0000000084
-:108EE00002C2B0252402FFBF0282A0248F83012882
-:108EF0003C040001248468D024020002AFA20014C4
-:108F0000AFA300108F8601208F8701243C05000746
-:108F10000C002B3B34A524501000022F0000000051
-:108F20008EA200008EA300043C040001248468E8A3
-:108F3000AFB00010AFBE00148EA7001834A52800F3
-:108F40000C002B3B006030211000022300000000C9
-:108F5000A6B1000A8F8201243C040001248468F039
-:108F6000AFBE0014AFA200108F4600448F870120CF
-:108F70003C0500070C002B3B34A530001000021606
-:108F800000000000A6B1000AA6B2000E8F820124E4
-:108F90003C040001248468FCAFBE0014AFA20010A2
-:108FA0008F4600448F8701203C0500070C002B3BB7
-:108FB00034A5320010000208000000008F42008437
-:108FC0008FAA006C004A102B144000073C020001DD
-:108FD00002C210241040000400000000240B000214
-:108FE000AFAB005C8FAA006C1140021B27AB0020C6
-:108FF000AFAB00A43C0A001F354AFFFFAFAA009C9C
-:109000008FAB005C240A0001556A0021240A00028B
-:109010008F4300548F4200501062000B274B0054C6
-:109020008F5E00543403ECC0AFAB004C27C200018C
-:10903000304201FFAFA20054001E11400043102136
-:109040001000006B02E2A8218F4200448FAA006C3E
-:109050003C040001248468ACAFAA0014AFA2001045
-:109060008F4600548F4700503C0500070C002B3BF7
-:1090700034A513008F4303502402FFBF0282A024B3
-:1090800024630001AF430350100001D38F4203500B
-:10909000156A001D000000008F4300748F420070AD
-:1090A0001062000A274B00748F5E0074AFAB004C57
-:1090B00027C20001304203FFAFA20054001E11403E
-:1090C00024426CC01000004A02E2A8218F420044F2
-:1090D0008FAA006C3C040001248468B83C0500079A
-:1090E000AFAA0014AFA200108F4600748F47007023
-:1090F00034A51500240B00010C002B3BAFAB005C2A
-:109100001000FFC3000000008F4300648F42006026
-:109110001062001A274A00648F5E00648FAB005C07
-:10912000AFAA004C27C20001304200FFAFA200549A
-:10913000240200041562000E001E1140001E118062
-:1091400024420CC002E21021AFA200449442002A43
-:109150008FAA00448FAB006C004B102B10400024F2
-:1091600025550020240A000110000021A3AA009721
-:1091700024424CC01000001E02E2A8218F4200448D
-:109180008FAB006C3C040001248468C4AFAB0014B6
-:10919000AFA200108F4600648F4700603C050007B7
-:1091A0000C002B3B34A518003C02000802C210241E
-:1091B0001440FF34000000008F420370240A0001B5
-:1091C000AFAA005C24420001AF4203701000FF9080
-:1091D0008F42037027A3003600131040006218214D
-:1091E000946200000044102110000020A4620000DE
-:1091F0008FAB0064AEAB001893A2009710400072D2
-:10920000000098218FAA00448FA4006C8FA300A4B3
-:1092100025420020AFA2002825420008AFA200305E
-:1092200025420010AFAA002CAFA200349542002ABC
-:10923000A7A2003895420018A7A2003A9542001A4A
-:10924000A7A2003C9542001CA7A2003E9462001811
-:1092500024630002008220231880FFDE26730001B1
-:109260002E6200041440FFF9000000008F4200FC51
-:109270002665000100A2102A1440002B24030001DF
-:109280008F83012C10600023000000008F820124D6
-:109290000043102300022143588000012484004031
-:1092A0008F820128004310230002194358600001F7
-:1092B000246300400064102A544000010060202113
-:1092C000AF4400FC8F4200FC00A2102A10400011A5
-:1092D0002403000110000015306200FF8FAB006412
-:1092E00096070018AFAB00108E2200083C04000166
-:1092F000248468DC8C4300048C42000034A52400E4
-:10930000024030210C002B3BAFA300141000002BB7
-:10931000000000008F4203340000182124420001A5
-:10932000AF4203348F420334306200FF5040FEDC12
-:109330003C02080012600021000090218FB100A4BF
-:10934000022080218E220008960700188FA6006454
-:109350008C4400008C450004240A0001AFAA0010D0
-:10936000AFBE00148F420008AFA200188F42010C5C
-:109370000040F809000000001040FFD83C0500073D
-:10938000960200188FAB00648FAA009C01625821DE
-:10939000014B102B10400004AFAB00648F4201481A
-:1093A00001625823AFAB0064261000022652000170
-:1093B0000253102B1440FFE3263100048FB0006CE1
-:1093C0001000003697B100388F4200FC24050002DF
-:1093D00000A2102A1440001B240300018F83012CDB
-:1093E00010600013000000008F820124004310234E
-:1093F0000002214358800001248400408F8201280C
-:109400000043102300021943586000012463004008
-:109410000064102A5440000100602021AF4400FC89
-:109420008F4200FC00A2102A144000062403000111
-:109430008F4203340000182124420001AF4203345C
-:109440008F420334306200FF1040FEA53C0208004A
-:1094500096B1000A8FB0006C3223FFFF0070102B12
-:1094600054400001006080218EA400008EA50004FD
-:10947000240B0001AFAB0010AFBE00148F420008F8
-:109480008FA60064AFA200188F42010C0040F809BB
-:10949000020038211040FEA23C05000796A3000EF2
-:1094A00097AA008E1140000700609021934205C4E6
-:1094B000144000040000000097AB0086006A1825E5
-:1094C000A6AB00168FAA007C3C02FFFF01421024CD
-:1094D00010400003000A140234630400A6A2001422
-:1094E0008FAB006C560B0072A6A3000E3462000412
-:1094F000A6A2000E8FAA0074016A1021A6A2000A7B
-:109500008F4300448F4401A08F4501A434028000A2
-:10951000AFA200108F42004402A030212407002097
-:10952000AFA200148F42000C0003194000604821D4
-:10953000AFA200188F42010C0000402100A9282191
-:1095400000A9182B008820210040F8090083202161
-:109550005040FE7FA6B2000E8F420368AFA0006CA1
-:10956000A34005C42442FFFFAF4203688FAB005CF9
-:10957000240A00018F420368156A0006240A0002CB
-:109580008F42035C2442FFFFAF42035C1000000CDB
-:109590008F42035C156A0006000000008F420364DE
-:1095A0002442FFFFAF420364100000058F420364B2
-:1095B0008F4203602442FFFFAF4203608F4203608B
-:1095C0008FAA00548FAB004CAD6A00008F4200445C
-:1095D0008F4400888F430078244200010044102407
-:1095E00024630001AF420044AF4300788C02024084
-:1095F0000062182B14600075240700088F4401686E
-:109600008F45016C8F4300448F48000C8F860120EA
-:1096100024020040AFA20010AFA30014AFA80018AE
-:109620008F42010C0040F80924C6001C14400011B0
-:10963000240B00013C01000100370821A02B40F25F
-:109640008F820124AFA200108F8201283C04000108
-:109650002484688CAFA200148F4600448F870120B9
-:109660003C0500090C002B3B34A513001000000B37
-:10967000000000008F42030424420001AF420304B3
-:109680008F4203048F420044AF42007C3C01000142
-:1096900000370821A02040F2AF4000788F42031825
-:1096A00024420001AF420318100000488F42031803
-:1096B000A6B0000A8F4300448F4401A08F4501A447
-:1096C00034028000AFA200108F42004402A030217B
-:1096D00024070020AFA200148F42000C00031940A1
-:1096E00000604821AFA200188F42010C0000402109
-:1096F00000A9282100A9182B008820210040F80982
-:10970000008320211040FE1F240A0001A34A05C443
-:109710008FAB006C8FAA006401705823AFAB006C54
-:109720008FAB009C01505021016A102B10400004A7
-:10973000AFAA00648F42014801425023AFAA0064DF
-:109740008F4203682442FFFFAF4203688FAA005C88
-:10975000240B00018F420368154B0006240B000206
-:109760008F42035C2442FFFFAF42035C1000000CF9
-:109770008F42035C114B0006000000008F42036023
-:109780002442FFFFAF420360100000058F420360D8
-:109790008F4203642442FFFFAF4203648F4203649D
-:1097A0008FAB00548FAA004CAD4B00008F42004499
-:1097B0008F4400888F430078244200010044102425
-:1097C00024630001AF420044AF4300788FAA006CCD
-:1097D0001540FE0B000000008FAB006C1160001EF6
-:1097E00000000000934205C4104000090000000082
-:1097F0008FAA0064AF4A00C4AF4B00C08FAB007C9F
-:10980000AF4B00C88FAA00741000000EAF4A00CC06
-:1098100097AB008E1160000B340381008FA20020F3
-:109820008C46000CA443000C97AA00868C440004CC
-:109830008C450008A44A000EAC440000AC4500046E
-:10984000AC4600088F42034C24420001AF42034C57
-:10985000100000108F42034C8FAB007C3164FFFF7F
-:109860002484FFFC008018218F4402508F4502544D
-:109870008F4601180000102100A3282100A3382BD7
-:109880000082202100872021AF44025000C0F80947
-:10989000AF4502548FBF00C88FBE00C48FB500C053
-:1098A0008FB300BC8FB200B88FB100B48FB000B0DE
-:1098B00003E0000827BD00D003E00008000000001E
-:1098C00027BDFF38240B0001AFBF00C0AFBE00BCF6
-:1098D000AFB500B8AFB300B4AFB200B0AFB100AC39
-:1098E000AFB000A8A3A00087AFA00044AFAB005C5E
-:1098F000934205C4A7A0007610400007A7A0007EF1
-:109900008F4C00C0AFAC00648F4B00C88F5E00C4AA
-:1099100010000130AFAB006C8F4201140040F80919
-:10992000000000000040302110C002A10000000033
-:109930008CC200008CC30004AFA20020AFA300249F
-:109940008FAC00248FBE00203182FFFF2442FFFC39
-:10995000AFA200643C02000602C2102414400015AD
-:10996000AFAC006C93C20000304200011040001107
-:109970002402FFFF8FC30000146200043402FFFFC3
-:1099800097C300041062000B000000000C0024BB11
-:1099900003C02021304200FF1440000600000000F8
-:1099A0008F4201180040F8090000000010000280FA
-:1099B000000000008FA200243C03FFBF3463FFFFC0
-:1099C000004310243C03FFFF0043182414600003ED
-:1099D000AFA2002410000040000080213C02008063
-:1099E0000062102410400007000000008F42038C2A
-:1099F00024420001AF42038C8F42038C10000036DA
-:109A0000241000018F42021024420001AF420210D4
-:109A10008F4202103C020001006210241040000638
-:109A20003C0200028F4201C424420001AF4201C443
-:109A30008F4201C43C020002006210241040000664
-:109A40003C0200048F42037C24420001AF42037CAD
-:109A50008F42037C3C020004006210241040000688
-:109A60003C0200088F42038024420001AF42038081
-:109A70008F4203803C020008006210241040000660
-:109A80003C0200108F42038424420001AF42038451
-:109A90008F4203843C020010006210241040000634
-:109AA0003C0200208F4201C024420001AF4201C0AD
-:109AB0008F4201C03C0200200062102410400006CA
-:109AC000241000018F42038824420001AF42038822
-:109AD0008F420388241000018C0202608FAB006467
-:109AE000004B102B10400015320200FF8F4201E89E
-:109AF00024420001AF4201E88F4201E88FAC006CC4
-:109B00008F8200E0358C0100AFAC006CAFA200107A
-:109B10008F8200E4241000013C040001248468A02A
-:109B2000AFA200148FA600208FA700243C050007D9
-:109B30000C002B3B34A53600320200FF1040001011
-:109B40003C02008002C210241440000E32C2040005
-:109B50008FAB006C3C020080344201000162102493
-:109B600010400005000000008F42020C244200015A
-:109B7000AF42020C8F42020C100002028FA300645D
-:109B800032C20400104000123402810097C3000C5E
-:109B90001462000F00000000240C0200A7AC007645
-:109BA00097C2000E8FC300088FC400048FAB0064FF
-:109BB0008FC50000256BFFFCAFAB0064A7A2007E41
-:109BC000AFC3000CAFC40008AFC5000427DE00041B
-:109BD0008FA70064320200FF144000343C020100F1
-:109BE00097C4000C2C8305DD388288702C4200015C
-:109BF00000621825106000150000282132C20800FC
-:109C0000104000152402080097C3001414620012CB
-:109C10003402AAAA97C3000E146200070000202194
-:109C200097C3001024020300146200040080102176
-:109C300097C200122C4400010080102154400006FD
-:109C40002405001610000004000000002402080093
-:109C5000508200012405000E10A0001303C520212E
-:109C6000248300093C02001F3442FFFF0043102BF5
-:109C700010400003000000008F42014800621823DA
-:109C800090620000384300062C6300013842001146
-:109C90002C42000100621825106000043C02010003
-:109CA00094820002004538213C02010002C21024C7
-:109CB0005040000EAFA700648FAC006410EC0008A9
-:109CC0003C0500073C040001248469088FA6006459
-:109CD00034A54000AFA000100C002B3BAFA0001437
-:109CE0008FAB0064256B0004AFAB00648F42008033
-:109CF0008FAC0064004C102B1040002C32C280004E
-:109D000010400034240B000332C210001040003118
-:109D1000AFAB005C1000002E240C00048F420350F7
-:109D20002403FFBF0283A02424420001AF4203505A
-:109D3000100001738F4203503C02080002C2B0259C
-:109D40002402FFBF0282A0248F8301283C0400016B
-:109D5000248468D026620001AFA20014AFA30010D3
-:109D60008F8601208F8701243C0500070C002B3BC8
-:109D700034A5530010000162000000008EA2000014
-:109D80008EA300043C040001248468E8AFB00010F6
-:109D9000AFB100148EA7001834A559000C002B3B5E
-:109DA0000060302110000156000000008F42008446
-:109DB0008FAB0064004B102B144000073C020001E5
-:109DC00002C210241040000400000000240C000215
-:109DD000AFAC005C8FAB00641160016627AC002063
-:109DE000AFAC008C8FAB005C240C0001556C0021E3
-:109DF000240C00028F4300548F4200501062000B6D
-:109E0000274B00548F5100543403ECC0AFAB004CCF
-:109E100026220001304201FFAFA200540011114080
-:109E2000004310211000006B02E2A8218F42004481
-:109E30008FAC00643C040001248468ACAFAC001417
-:109E4000AFA200108F4600548F4700503C0500071A
-:109E50000C002B3B34A543008F4303502402FFBF6B
-:109E60000282A02424630001AF43035010000124A8
-:109E70008F420350156C001D000000008F430074DA
-:109E80008F4200701062000A274B00748F510074DB
-:109E9000AFAB004C26220001304203FFAFA20054BA
-:109EA0000011114024426CC01000004A02E2A821B7
-:109EB0008F4200448FAC00643C040001248468B8E5
-:109EC0003C050007AFAC0014AFA200108F46007431
-:109ED0008F47007034A54500240B00010C002B3B7C
-:109EE000AFAB005C1000FFC3000000008F430064B4
-:109EF0008F4200601062001A274C00648F5100648A
-:109F00008FAB005CAFAC004C26220001304200FF5A
-:109F1000AFA20054240200041562000E001111408B
-:109F20000011118024420CC002E21021AFA20044B3
-:109F30009442002A8FAC00448FAB0064004B102B7E
-:109F40001040002425950020240C00011000002161
-:109F5000A3AC008724424CC01000001E02E2A821DE
-:109F60008F4200448FAB00643C040001248468C429
-:109F7000AFAB0014AFA200108F4600648F470060A3
-:109F80003C0500070C002B3B34A548003C020008B0
-:109F900002C210241440FF61000000008F420370D1
-:109FA000240C0001AFAC005C24420001AF420370FE
-:109FB0001000FF908F42037027A30036001310405B
-:109FC0000062182194620000004410211000001F5C
-:109FD000A4620000AEBE001893A200871040008467
-:109FE000000098218FAB00448FA400648FA3008CE5
-:109FF00025620020AFA2002825620008AFA2003031
-:10A0000025620010AFAB002CAFA200349562002A8D
-:10A01000A7A2003895620018A7A2003A9562001A1C
-:10A02000A7A2003C9562001CA7A2003E9462001803
-:10A0300024630002008220231880FFDF26730001C2
-:10A040002E6200041440FFF9000000008F4200FC63
-:10A050000262102A14400030240300018F83012C77
-:10A0600010600028000000008F82012400431023AC
-:10A070000002214358800001248400408F8201287F
-:10A08000004310230002194358600001246300407C
-:10A090000064102A5440000100602021AF4400FCFD
-:10A0A0008F4200FC0262102A1040001624030001B7
-:10A0B0001000001A306200FF8FAC008C00101040BE
-:10A0C000004C10219447001800101080004C102103
-:10A0D000AFBE00108C4200083C040001248468DC00
-:10A0E0003C0500078C4300048C42000034A5550059
-:10A0F000020030210C002B3BAFA3001410000039EC
-:10A10000000000008F4203340000182124420001A7
-:10A11000AF4203348F420334306200FF1040FF0629
-:10A12000000080218F4300082402FBFF1260002DF5
-:10A13000006250243C0B4000022B40258FB1008C64
-:10A140002669FFFF022090218E4200089627001802
-:10A150008C4400008C45000456090004240B0001C7
-:10A16000240C000210000002AFAC0010AFAB0010D6
-:10A1700016000004AFA800148F420008100000026F
-:10A18000AFA20018AFAA00188F42010C03C0302103
-:10A19000AFA80098AFA9009C0040F809AFAA00A0A2
-:10A1A0008FA800988FA9009C8FAA00A01040FFC222
-:10A1B0003C02001F962300183442FFFF03C3F02126
-:10A1C000005E102B10400003263100028F42014830
-:10A1D00003C2F023261000010213102B1440FFDAF3
-:10A1E000265200048FB000641000001A0000000026
-:10A1F00096A3000A8FB000640070102B5440000139
-:10A20000006080218EA400008EA500048FAB005C4E
-:10A21000240C0002AFAC0010934305C4000B1700E0
-:10A2200010600003022230253C02080000C23025E5
-:10A23000AFA600148F420008AFA200188F42010C95
-:10A2400003C030210040F809020038211040FECB45
-:10A250003C05000797AC00761180000796A3000E1E
-:10A26000934205C4144000040000000097AB007E38
-:10A27000006C1825A6AB00168FAC006C3C02FFFFEB
-:10A280000182102410400003000C14023463040007
-:10A29000A6A20014A6B0000A8FAB0064560B0006FD
-:10A2A00003D0F02134620004AFA00064A6A2000E27
-:10A2B0001000000DA34005C48FAC00643C02001FD9
-:10A2C0003442FFFF005E102B01906023AFAC0064AE
-:10A2D000A6A3000E240B000110400003A34B05C4ED
-:10A2E0008F42014803C2F0238FAB00548FAC004C67
-:10A2F000AD8B00008FAC00641580FEBA000000003A
-:10A300008FAB00641160001B00000000934205C485
-:10A310001040000600000000AF5E00C4AF4B00C05C
-:10A320008FAC006C1000000EAF4C00C897AB0076ED
-:10A330001160000B340381008FA200208C46000CBA
-:10A34000A443000C97AC007E8C4400048C450008AC
-:10A35000A44C000EAC440000AC450004AC46000820
-:10A360008F42034C24420001AF42034C1000001006
-:10A370008F42034C8FAB006C3164FFFF2484FFFCE1
-:10A38000008018218F4402508F4502548F460118D7
-:10A390000000102100A3282100A3382B00822021D7
-:10A3A00000872021AF44025000C0F809AF45025495
-:10A3B0008FBF00C08FBE00BC8FB500B88FB300B494
-:10A3C0008FB200B08FB100AC8FB000A803E00008DE
-:10A3D00027BD00C803E000080000000027BDFFD82B
-:10A3E000AFBF0024AFB000208F43004C8F42004825
-:10A3F00010620034000000008F4300488F42004C80
-:10A400000062202304820001248402008F43005450
-:10A410008F42004C0043102B144000042402020021
-:10A420008F43004C10000005004310238F4200545E
-:10A430008F43004C004310232442FFFF0040502173
-:10A44000008A102A54400001008050218F49004C9E
-:10A450008F48004C8F4401888F45018C8F46004CFB
-:10A4600024071000AFA70010000841400100182188
-:10A47000012A4821313001FFAFB000148F4700148A
-:10A480000000102100063140AFA7001800A32821CA
-:10A4900000A3382B00822021008720213402ECC049
-:10A4A00000C230218F42010802E630210040F80945
-:10A4B000000A394054400001AF50004C8F43004C1B
-:10A4C0008F42004814620018000000008F42000014
-:10A4D0001040000700000000AF80004C8F82004C4D
-:10A4E0001040FFFD0000000010000005000000000B
-:10A4F000AF8000488F8200481040FFFD0000000040
-:10A500008F8200602403FDFF00431024AF820060AF
-:10A510008F42000010400003000000001000000205
-:10A52000AF80004CAF8000488FBF00248FB0002068
-:10A5300003E0000827BD002803E000080000000039
-:10A5400027BDFFD8AFBF0024AFB000208F43005C11
-:10A550008F42005810620049000000008F430058ED
-:10A560008F42005C006220230482000124840100E9
-:10A570008F4300648F42005C0043102B14400004A2
-:10A58000240201008F43005C1000000500431023EB
-:10A590008F4200648F43005C004310232442FFFF7E
-:10A5A000004038210087102A5440000100803821E3
-:10A5B0008F42005C00471021305000FF32C2100073
-:10A5C00010400015240820008F49005C8F44019042
-:10A5D0008F4501948F46005C00073980AFA80010BA
-:10A5E000AFB000148F4800140009498001201821E1
-:10A5F0000000102100A3282100A3482B0082202165
-:10A600000089202100063180AFA800188F42010880
-:10A610001000001424C60CC08F49005C8F440190C8
-:10A620008F4501948F46005C00073940AFA80010A9
-:10A63000AFB000148F4800140009494001201821D0
-:10A640000000102100A3282100A3482B0082202114
-:10A650000089202100063140AFA800188F42010870
-:10A6600024C64CC00040F80902E6302154400001E5
-:10A67000AF50005C8F43005C8F420058146200189A
-:10A68000000000008F4200001040000700000000A2
-:10A69000AF80004C8F82004C1040FFFD0000000096
-:10A6A0001000000500000000AF8000488F820048C5
-:10A6B0001040FFFD000000008F8200602403FEFFB9
-:10A6C00000431024AF8200608F420000104000035E
-:10A6D0000000000010000002AF80004CAF80004876
-:10A6E0008FBF00248FB0002003E0000827BD0028A2
-:10A6F00003E000080000000027BDFFD8AFBF002422
-:10A70000AFB000208F43006C8F42006810620033AE
-:10A71000000000008F4300688F42006C006220231D
-:10A7200004820001248404008F4300748F42006C73
-:10A730000043102B14400004240204008F43006CDB
-:10A7400010000005004310238F4200748F43006CFB
-:10A75000004310232442FFFF00405021008A102AAA
-:10A7600054400001008050218F49006C8F48006CDC
-:10A770008F4401988F45019C8F46006C2407400050
-:10A78000AFA700100008414001001821012A48210C
-:10A79000313003FFAFB000148F47001400001021C8
-:10A7A0000006314024C66CC0AFA7001800A32821C2
-:10A7B00000A3382B00822021008720218F4201082E
-:10A7C00002E630210040F809000A394054400001F7
-:10A7D000AF50006C8F43006C8F4200681462001809
-:10A7E000000000008F420000104000070000000041
-:10A7F000AF80004C8F82004C1040FFFD0000000035
-:10A800001000000500000000AF8000488F82004863
-:10A810001040FFFD000000008F8200602403F7FF5E
-:10A8200000431024AF8200608F42000010400003FC
-:10A830000000000010000002AF80004CAF80004814
-:10A840008FBF00248FB0002003E0000827BD002840
-:10A8500003E00008000000008F4200FC3C03000100
-:10A860008F4400F8346330C824420001AF4200FC3A
-:10A870008F85012802E310215482000424820008FD
-:10A880003C02000134422EC802E21021004018218F
-:10A89000AF4300F8AC6000008F4200F41462000483
-:10A8A0003C02000124A200201000000FAF8201280A
-:10A8B0008F4300F8344230C802E210215462000491
-:10A8C000246200083C02000134422EC802E210213A
-:10A8D000004018218C6200040002114000A21021E7
-:10A8E000AF820128AC6000008CA3001830620070B9
-:10A8F0001040002D30620020104000043C02001087
-:10A9000002C210241040000D000000003062004020
-:10A91000104000043C02002002C210241040000736
-:10A9200000000000306200101040001F3C02004098
-:10A9300002C210241440001C000000008F8200405E
-:10A940003042000114400008000020218C03010463
-:10A950002402000150620005240400018C020264FC
-:10A960001040000300801021240400010080102109
-:10A9700010400006000000008F42030C244200013A
-:10A98000AF42030C100000088F42030C8F8200447A
-:10A9900034420004AF8200448F4203082442000185
-:10A9A000AF4203088F42030803E0000800000000E4
-:10A9B00003E000080000000027BDFF98AFBF006063
-:10A9C000AFBE005CAFB50058AFB30054AFB200509B
-:10A9D000AFB1004CAFB000488F4200FC24420001F0
-:10A9E000AF4200FC8F88012825020020AF82012899
-:10A9F0008D030018306200701040002E306200207D
-:10AA0000104000043C02001002C210241040000D4F
-:10AA10000000000030620040104000043C020020B2
-:10AA200002C2102410400007000000003062001035
-:10AA3000104001A93C02004002C21024144001A6AB
-:10AA4000000000008F8200403042000114400008E6
-:10AA5000000020218C030104240200015062000543
-:10AA6000240400018C0202641040000300801021C5
-:10AA700024040001008010211040000600000000A6
-:10AA80008F42030C24420001AF42030C10000192DC
-:10AA90008F42030C8F82004434420004AF82004492
-:10AAA0008F42030824420001AF4203081000018ACC
-:10AAB0008F420308306200021040014B3C02080044
-:10AAC0008D1E001C001E5702AFAA0034950A001606
-:10AAD00003C22024AFAA00248FAA0034240200015C
-:10AAE0001542000633DEFFFF001E11403403ECC0A8
-:10AAF000004310211000001002E2A82124020002ED
-:10AB00001542000524020003001E114024426CC0BF
-:10AB10001000000902E2A82115420005001E118064
-:10AB2000001E114024424CC01000000302E2A82184
-:10AB30000057102124550CE096A2000E304AFFFC6D
-:10AB40003042040010400003AFAA002C100000E1C6
-:10AB500000008821108000040000882197B10026A1
-:10AB6000100000DDA6B100128EB30018966A000C2A
-:10AB7000A7AA003E97A5003E2CA305DD38A2887049
-:10AB80002C420001006218251060001500002021F1
-:10AB900032C2080010400015240208009663001419
-:10ABA000146200123402AAAA9663000E146200070F
-:10ABB00000002821966300102402030014620004A0
-:10ABC00000A01021966200122C45000100A0102167
-:10ABD0005440000624040016100000040000000089
-:10ABE0002402080050A200012404000E108000B9C5
-:10ABF00002649021924200003042000F00028080E7
-:10AC000032C2010010400020025018213C020020F6
-:10AC10000043102B1440000E024020210000282188
-:10AC2000948200002484000200A228210083102BBB
-:10AC30001440FFFB30A2FFFF00051C020062282128
-:10AC400000051C0230A2FFFF10000009006228214D
-:10AC50008F4701488F420110001028423C06002017
-:10AC60000040F809AFA800403045FFFF8FA8004022
-:10AC700050A000013405FFFF8FAA002C354A0002C6
-:10AC800010000002AFAA002C0000282132C2008070
-:10AC900010400090A6A50010264300093C02001FAA
-:10ACA0003442FFFF0043102B10400003000000005F
-:10ACB0008F420148006218239066000030C200FFF6
-:10ACC000384300062C630001384200112C42000179
-:10ACD000006218251060007F24020800000088210F
-:10ACE00097A3003E1462000F0260202196710000BD
-:10ACF0009662000296630004966400060222882190
-:10AD00000223882102248821966200089663000AA3
-:10AD10009664000C0222882102238821100000077B
-:10AD200002248821948200002484000202228821C7
-:10AD30000092102B1440FFFB0000000000111C02C9
-:10AD40003222FFFF0062882100111C023222FFFF25
-:10AD50000062882132C2020010400003264400062F
-:10AD60001000003E000080213C05001F34A5FFFFBD
-:10AD700000A4102B10400003000000008F42014887
-:10AD8000008220239482000030421FFF1040000404
-:10AD90002644000C96420002100000300050802330
-:10ADA0009642000226430014005080233C020020FB
-:10ADB0000043102B1440000A00D080219642000C62
-:10ADC000020280219642000E964300109644001223
-:10ADD0000202802102038021100000200204802151
-:10ADE00000A4102B10400003000000008F42014817
-:10ADF0000082202394820000248400020202802129
-:10AE000000A4102B10400003000000008F420148F6
-:10AE10000082202394820000248400020202802108
-:10AE200000A4102B10400003000000008F420148D6
-:10AE300000822023948200002484000202028021E8
-:10AE400000A4102B10400003000000008F420148B6
-:10AE50000082202394820000020280213C02010033
-:10AE600002C210241040000E000000008FAA002C27
-:10AE7000314200041040000A000000009504000E5A
-:10AE8000026420210C003EEC2484FFFC3042FFFFD2
-:10AE90000222882100111C023222FFFF0062882159
-:10AEA0008FAA002401518823001114020222882154
-:10AEB0000230882100111402022288213231FFFF62
-:10AEC000522000013411FFFF8FAA002C354A0001E7
-:10AED000AFAA002CA6B1001297AA002EA6AA000EB7
-:10AEE0008FAA002C314200041040000224091000F7
-:10AEF000340980008F4800448F4401A08F4501A48D
-:10AF0000AFA900108F4900440008414001001821FA
-:10AF1000AFA900148F48000C02A0302124070020A4
-:10AF2000AFA800188F48010C0000102100A32821B1
-:10AF300000A3482B008220210100F809008920216C
-:10AF40001440000B000000008F8201283C04000127
-:10AF500024846914AFBE0014AFA200108F860124B0
-:10AF60008F8701203C0500070C002B3B34A599205E
-:10AF70008F4203682442FFFFAF4203688F420044C0
-:10AF80008F4300882442000100431024AF42004454
-:10AF90008FAA00348F440368240200011542000682
-:10AFA000240200028F42035C2442FFFFAF42035C95
-:10AFB000100000498F42035C1542000600000000AB
-:10AFC0008F4203642442FFFFAF420364100000423B
-:10AFD0008F4203648F4203602442FFFFAF4203604D
-:10AFE0001000003D8F4203603062100010400005E9
-:10AFF000306280008F420078244200011000003649
-:10B00000AF42007810400034000000008F4200780A
-:10B0100024420001AF4200788C0302400043102B11
-:10B020001440002D240700088F4401688F45016CEF
-:10B030008F4300448F48000C8F860120240200407B
-:10B04000AFA20010AFA30014AFA800188F42010CEC
-:10B050000040F80924C6001C14400011240200011D
-:10B060003C01000100370821A02240F28F82012418
-:10B07000AFA200108F8201283C0400012484688C58
-:10B08000AFA200148F4600448F8701203C050009C1
-:10B090000C002B3B34A513001000000B0000000037
-:10B0A0008F42030424420001AF4203048F42030491
-:10B0B0008F420044AF42007C3C0100010037082170
-:10B0C000A02040F2AF4000788F42031824420001D4
-:10B0D000AF4203188F4203188FBF00608FBE005C21
-:10B0E0008FB500588FB300548FB200508FB1004C11
-:10B0F0008FB0004803E0000827BD006803E00008A7
-:10B100000000000000000000000000008F42013C31
-:10B11000AF8200C08F42013CAF8200C48F42013C2D
-:10B12000AF8200C88F420138AF8200D08F42013811
-:10B13000AF8200D48F42013803E00008AF8200D80C
-:10B1400027BDFFE02784020824050200AFBF0018D6
-:10B150000C002BBF240600088C0202040C004012D5
-:10B16000AF8202103C0200018C426D94304200021A
-:10B170001040000E000020218C060248240200022C
-:10B180003C010001AC226D980C0051042405000222
-:10B19000000020218C060248240200013C0100012D
-:10B1A000AC226D9810000011240500018C060248A5
-:10B1B000240200043C010001AC226D980C005104F3
-:10B1C000240500043C0200018C426D9430420001D1
-:10B1D00010400008240200013C010001AC226D98DF
-:10B1E00000002021240500013C06601B0C005104D6
-:10B1F000000000003C040001248469D08F4201500B
-:10B200008F4301543C0500088F4601580002164048
-:10B21000000319403463040300431025000633C0C3
-:10B2200000461025AF82021CAFA00010AFA0001492
-:10B230008F86021C34A502000C002B3B0000382135
-:10B240003C010001AC206D903C010001AC206DA8D8
-:10B250008FBF001803E0000827BD002027BDFFE0D6
-:10B260003C05000834A50300AFBF0018AFA00010D4
-:10B27000AFA000148F8602003C040001248469DC26
-:10B280000C002B3B000038218F42041024420001A7
-:10B29000AF4204108F4204108FBF001803E0000873
-:10B2A00027BD002027BDFFD8AFBF0020AFB1001CD5
-:10B2B000AFB000188F4203A424420001AF4203A4A0
-:10B2C0008F4203A48F9002208F8200E0AFA2001073
-:10B2D0008F8200E4AFA200148F8600C48F8700C85D
-:10B2E0003C040001248469E80C002B3B0200282167
-:10B2F0003C04400002041024504000B43C0401000F
-:10B300008F4203BC24420001AF4203BC8F4203BC06
-:10B310008F8700C48F8300C88F42014800671823BD
-:10B320000043102B10400003000000008F42014832
-:10B330000062182110600005000000008F42014CDF
-:10B340000043102B1040000B000000008F8200E033
-:10B350008F430124AF42011CAF4301148F820220AE
-:10B360003C0308FF3463FFFB00431024100000CEB1
-:10B37000004410258F8202203C0308FF3463FFFF46
-:10B380000043102434420004AF8202208F8200E088
-:10B390008F430124AF42011CAF4301148F8600C8C4
-:10B3A0008F8401208F8301241000000500002821D4
-:10B3B0001462000224620020276248000040182125
-:10B3C0001064000C30A200FF8C62001830420003B1
-:10B3D0001040FFF727624FE08F4203D024050001A1
-:10B3E00024420001AF4203D08F4203D08C66000894
-:10B3F00030A200FF1440005800000000934205C432
-:10B4000014400055000000008F8700C48F8800E0C2
-:10B410008F8400E42402FFF8010240240104102379
-:10B42000000218C3046200012463020010600005DA
-:10B430002402000110620009000000001000001F3B
-:10B44000000000008F4203C000E0302124420001D0
-:10B45000AF4203C0100000408F4203C08F4203C4BC
-:10B4600024420001AF4203C48C8600008F42014891
-:10B470008F4303C400E618230043102B1040000440
-:10B480002C62233F8F420148006218212C62233F27
-:10B4900014400031000000008F42020C24420001E1
-:10B4A000AF42020C8F42020C00E0302124820008DF
-:10B4B000AF8200E410000028AF8200E88F4203C88A
-:10B4C00024420001AF4203C88F4203C88C850000AC
-:10B4D0008F42014800A718230043102B104000039F
-:10B4E000000000008F420148006218218F42014C89
-:10B4F0000043102B5440000A00A030218F42020C60
-:10B5000024420001AF42020C8F42020C2482000848
-:10B51000AF8200E48F8400E41488FFECAF8400E87D
-:10B520001488000D27623000148200022482FFF884
-:10B5300027623FF8944300063C02001F3442FFFF9D
-:10B5400000C330210046102B104000030000000013
-:10B550008F42014800C23023AF8600C88F8300C4E9
-:10B560008F42014800C318230043102B10400003F2
-:10B57000000000008F4201480062182110600005A1
-:10B58000000000008F42014C0043102B5040000887
-:10B590003C02FDFF8F8202203C0308FF3463FFFB67
-:10B5A000004310243C0340001000003F00431025DE
-:10B5B0008F4303CC3442FFFF0282A02424630001A6
-:10B5C000AF4303CC100000398F4203CC0204102497
-:10B5D0001040000E3C1102008F4203A824420001DB
-:10B5E000AF4203A88F4203A88F8202203C0308FFCA
-:10B5F0003463FFFF00431024004410250C003DAFCE
-:10B60000AF82022010000029000000000211102467
-:10B61000504000083C1104008F4203AC244200015A
-:10B62000AF4203AC0C003DAF8F4203AC10000019D9
-:10B6300000000000021110241040001C0000000057
-:10B640008F83022424021402146200093C050008BE
-:10B650003C040001248469F4AFA00010AFA00014E2
-:10B660008F86022434A505000C002B3B00003821F6
-:10B670008F4203B024420001AF4203B08F4203B0B7
-:10B680008F82022002002021344200020C004E9CD6
-:10B69000AF8202208F8202203C0308FF3463FFFF49
-:10B6A0000043102400511025AF8202208FBF0020DC
-:10B6B0008FB1001C8FB0001803E0000827BD0028E0
-:10B6C00003E00008000000003C0200018C426DA86D
-:10B6D00027BDFFB0AFBF0048AFBE0044AFB50040CC
-:10B6E000AFB3003CAFB20038AFB100341040000F30
-:10B6F000AFB000303C04000124846A003C0500081F
-:10B70000AFA00010AFA000148F86022034A5060061
-:10B71000240200013C010001AC206DA83C010001A5
-:10B72000AC226D9C0C002B3B000038213C037FFFBA
-:10B730008C0202683463FFFF3C04FDFF00431024C9
-:10B74000AC0202688F4200043484FFFF30420002E2
-:10B75000104000920284A0243C040600348420009F
-:10B760008F420004000028212403FFFD0043102421
-:10B77000AF420004AFA400208F5E001827AA00206B
-:10B78000240200FF13C20002AFAA002C27C500014B
-:10B790008C02022800A090211642000E001E38C024
-:10B7A0008F42033C24420001AF42033C8F42033CE2
-:10B7B0008C0202283C040001248469983C0500099D
-:10B7C000AFA00014AFA200108FA600201000006DE3
-:10B7D00034A5050000F710218FA300208FA40024BA
-:10B7E000AC4304C0AC4404C48F8300548F82005423
-:10B7F000247003E8020210232C4203E91040001BCE
-:10B800000000982100E08821263504C08F4401788B
-:10B810008F45017C02201821240A0004AFAA0010E1
-:10B82000AFB200148F48000C0000102102F5302147
-:10B83000AFA800188F48010C2407000800A3282196
-:10B8400000A3482B008220210100F8090089202153
-:10B8500054400006241300018F820054020210237A
-:10B860002C4203E91440FFE900000000326200FFAF
-:10B8700054400017AF5200188F4203782442000151
-:10B88000AF4203788F4203788F8201208FAA002C69
-:10B89000AFA200108F8201243C040001248469A41B
-:10B8A0003C050009AFA200148D46000010000035D1
-:10B8B00034A506008F42030824130001244200012E
-:10B8C000AF4203088F4203081000001E326200FFDF
-:10B8D0008F8300548F820054247003E802021023E7
-:10B8E0002C4203E910400016000098213C1500206E
-:10B8F000241100108F42000C8F4401608F450164B9
-:10B900008F860120AFB10010AFB200140055102592
-:10B91000AFA200188F42010C240700080040F8096C
-:10B9200024C6001C1440FFE3000000008F82005476
-:10B93000020210232C4203E91440FFEE0000000035
-:10B94000326200FF14400011000000008F420378B3
-:10B9500024420001AF4203788F4203788F82012096
-:10B960008FAA002CAFA200108F8201243C0400019A
-:10B97000248469AC3C050009AFA200148D46000088
-:10B9800034A507000C002B3B03C038218F4202EC8A
-:10B9900024420001AF4202EC8F4202EC8FBF00480C
-:10B9A0008FBE00448FB500408FB3003C8FB200388B
-:10B9B0008FB100348FB0003003E0000827BD005085
-:10B9C0003C0200018C426DA827BDFFE01440000D31
-:10B9D000AFBF00183C04000124846A0C3C05000839
-:10B9E000AFA00010AFA000148F86022034A507007E
-:10B9F000240200013C010001AC226DA80C002B3B8D
-:10BA0000000038213C02000402C21024104000074C
-:10BA1000000000008F8202203C0308FF3463FFFF18
-:10BA20000043102434420008AF8202203C0500018C
-:10BA30008CA56D982402000114A2000700002021AB
-:10BA40000C00529B24050001AC02026C8C03026CBA
-:10BA5000100000063C0200070C00529B0000202151
-:10BA6000AC0202688C0302683C02000700621824E2
-:10BA70003C0200025062000D3C0205F50043102B11
-:10BA8000144000063C0200043C0200011062000960
-:10BA90003C0200981000000B000000001462000936
-:10BAA0003C023B9A100000043442CA00100000021D
-:10BAB0003442E10034429680AF4201FC8F4201FCE7
-:10BAC000AEE200648FBF001803E0000827BD00202D
-:10BAD0000000000000000000000000000086102BA5
-:10BAE000504000010087202300C410230002484377
-:10BAF0000125102B1040001B00091040008240213E
-:10BB00000088102B104000070000182194820000CC
-:10BB100024840002006218210088102B1440FFFBCF
-:10BB2000000000000060202100C7302300A910237E
-:10BB30000002104000C2282100C5102B1040000751
-:10BB40000000182194C2000024C6000200621821DF
-:10BB500000C5102B1440FFFB000000001000000D7A
-:10BB60000083202100051040008228210085102B31
-:10BB70001040000700001821948200002484000275
-:10BB8000006218210085102B1440FFFB000000000C
-:10BB90000060202100041C023082FFFF006220218F
-:10BBA00000041C023082FFFF0062202103E0000835
-:10BBB0003082FFFF03E00008000000000080282121
-:10BBC00030A200011040002B3C03001F3463FFFF34
-:10BBD00024A200040062102B544000070065102BC3
-:10BBE00090A2000190A4000390A3000090A5000281
-:10BBF0001000002A00441021104000030000000043
-:10BC00008F42014800A2282390A4000024A500012F
-:10BC10000065102B10400003000000008F42014817
-:10BC200000A2282390A2000024A500010002120017
-:10BC3000008220210065102B10400003000000004E
-:10BC40008F42014800A2282390A2000024A50001F1
-:10BC5000008220210065102B10400003000000002E
-:10BC60008F42014800A2282390A200001000002D5E
-:10BC7000000212003463FFFF24A200040062102BB4
-:10BC80005440000A0065102B90A2000090A400020E
-:10BC900090A3000190A500030044102100021200AF
-:10BCA00000651821100000200043202110400003EF
-:10BCB000000000008F42014800A2282390A200004B
-:10BCC00024A50001000222000065102B1040000393
-:10BCD000000000008F42014800A2282390A200002B
-:10BCE00024A50001008220210065102B10400003D4
-:10BCF000000000008F42014800A2282390A200000B
-:10BD000024A5000100021200008220210065102BF2
-:10BD100010400003000000008F42014800A22823C9
-:10BD200090A200000082202100041C023082FFFF4C
-:10BD30000062202100041C023082FFFF00622021EB
-:10BD400003E000083082FFFF000000008F82022025
-:10BD500034420002AF8202203C0200028C428FF883
-:10BD60003042400010400054240400018F82020041
-:10BD700024067FFF8F830200304500022402FFFD6E
-:10BD800000621824AF830200AF8402048F83005442
-:10BD90008F82005410000002246300018F8200543F
-:10BDA000006210232C4200021440FFFC000000003F
-:10BDB0008F8202241444004D0004204000C4102B44
-:10BDC0001040FFF1000000008F82020000451025A6
-:10BDD000AF8202008F82022034428000AF820220B4
-:10BDE0008F8300548F8200541000000224630001EE
-:10BDF0008F820054006210232C4200021440FFFC8A
-:10BE0000000000008F8202203C0300040043102445
-:10BE10001440000F000000008F8202203C03FFFF4F
-:10BE200034637FFF00431024AF8202208F830054CD
-:10BE30008F82005410000002246300018F8200549E
-:10BE4000006210232C4200021440FFFC000000009E
-:10BE50008F8202203C030004004310241440000D94
-:10BE6000000000008F82022034428000AF82022056
-:10BE70008F8300548F82005410000002246300015D
-:10BE80008F820054006210232C4200021440FFFCF9
-:10BE9000000000008F8202203C03000400431024B5
-:10BEA0001040001B000010218F830220240200019B
-:10BEB000100000153C04F7008F8202203C04F700BC
-:10BEC00000441025AF8202208F8202202403FFFD50
-:10BED00000431024AF8202208F8202203C03030023
-:10BEE000004310241440000300000000100000086C
-:10BEF000000010218F82022034420002AF82022013
-:10BF00008F8302202402000100641825AF830220E1
-:10BF100003E0000800000000000020213C050100B3
-:10BF200024020001AF80021CAF820200AF82022017
-:10BF300027625000AF8200C027625000AF8200C469
-:10BF400027625000AF8200C827625000AF8200D045
-:10BF500027625000AF8200D427625000AF8200D821
-:10BF600027623000AF8200E027623000AF8200E439
-:10BF700027623000AF8200E827622800AF8200F01D
-:10BF800027622800AF8200F427622800AF8200F801
-:10BF9000000418C02484000103631021AC45300460
-:10BFA00003631021AC403000288202001440FFF9E6
-:10BFB000000418C000002021000418C024840001DF
-:10BFC00003631021AC40280403631021AC40280017
-:10BFD000288201001440FFF9000418C0AF80023C21
-:10BFE0002403008024040100AC60000024630004EA
-:10BFF0000064102B5440FFFDAC6000008F830040B4
-:10C000003C02F000006218243C0250001062000C58
-:10C010000043102B144000063C0260003C0240002C
-:10C020001062000824020800100000080000000050
-:10C030001062000424020800100000040000000048
-:10C04000240207003C010001AC226DAC03E00008B3
-:10C05000000000003C0200018C426DBC27BDFFD0F7
-:10C06000AFBF002CAFB20028AFB10024AFB00020AA
-:10C070003C01000110400005AC206D940C004D9E69
-:10C08000000000003C010001AC206DBC8F83005417
-:10C090008F82005410000002246300648F820054D9
-:10C0A000006210232C4200651440FFFC00000000D9
-:10C0B0000C004DB9000000002404000100002821FC
-:10C0C00027A60018340280000C0045BEA7A2001865
-:10C0D0008F8300548F820054100000022463006498
-:10C0E0008F820054006210232C4200651440FFFC34
-:10C0F00024040001240500010C00457C27A600183B
-:10C100008F8300548F820054100000022463006467
-:10C110008F820054006210232C4200651440FFFC03
-:10C1200024040001240500010C00457C27A600180A
-:10C130008F8300548F820054100000022463006437
-:10C140008F820054006210232C4200651440FFFCD3
-:10C15000240400013C06000124C66F240C00457C29
-:10C16000240500028F8300548F82005410000002C7
-:10C17000246300648F820054006210232C42006507
-:10C180001440FFFC24040001240500033C100001BE
-:10C1900026106F260C00457C0200302197A600185F
-:10C1A0003C07000194E76F243C04000124846AE00A
-:10C1B000AFA00014960200003C05000D34A501005C
-:10C1C0000C002B3BAFA2001097A200181040004DAE
-:10C1D00024036040960200003042FFF01443000C3C
-:10C1E000240200203C03000194636F241462000BBE
-:10C1F00024027830240200033C010001AC226D943B
-:10C20000240200053C0100011000003FAC226F3405
-:10C210003C03000194636F24240278301462000C04
-:10C22000240300103C02000194426F263042FFF0CC
-:10C2300014430007240200033C010001AC226D946A
-:10C24000240200063C0100011000002FAC226F34D4
-:10C250003C0200018C426D943C03000194636F2406
-:10C26000344200013C010001AC226D94240200150F
-:10C270001462000B000000003C02000194426F2693
-:10C280003042FFF03843F4202C6300013842F43090
-:10C290002C420001006218251460001B24020003D8
-:10C2A0003C03000194636F2424027810146200168A
-:10C2B000240200023C02000194426F263042FFF04B
-:10C2C00014400011240200021000000F2402000498
-:10C2D0003C0200018C426D94344200083C01000194
-:10C2E000AC226D941000005E240200043C020001A8
-:10C2F0008C426D94344200043C010001100000AFF8
-:10C30000AC226D94240200013C010001AC226F407C
-:10C310003C0200018C426D9430420002144000B295
-:10C320003C09FFF024020E00AF8202388F840054D3
-:10C330008F820054240300083C010001AC236D9857
-:10C3400010000002248401F48F8200540082102324
-:10C350002C4201F51440FFFC3C0200C8344201FBB2
-:10C36000AF8202388F8300548F8200541000000285
-:10C37000246301F48F820054006210232C4201F5E3
-:10C380001440FFFC00008021241200012411000948
-:10C390000C004482000000003C010001AC326DB48E
-:10C3A0000C004547000000003C0200018C426DB4C7
-:10C3B0001451FFFB3C0200C8344201F6AF82023840
-:10C3C0008F8300548F820054100000022463000AFF
-:10C3D0008F820054006210232C42000B1440FFFC9B
-:10C3E000000000008F820220240400013442000279
-:10C3F000AF8202208F83020024057FFF2402FFFD0D
-:10C4000000621824AF830200AF8402048F830054BB
-:10C410008F82005410000002246300018F820054B8
-:10C42000006210232C4200021440FFFC00000000B8
-:10C430008F8202241444000534028000000420404E
-:10C4400000A4102B1040FFF0340280001082FFA0E7
-:10C45000261000012E0200141440FFCD2402000417
-:10C460003C010001AC226D980000802124120009DB
-:10C470003C11FFFF36313F7F0C004482000000007A
-:10C48000240200013C010001AC226DB40C004547C0
-:10C49000000000003C0200018C426DB41452FFFB0E
-:10C4A000000000008F82004400511024344250806C
-:10C4B000AF8200448F8300548F820054100000022A
-:10C4C0002463000A8F820054006210232C42000B68
-:10C4D0001440FFFC000000008F8200440051102433
-:10C4E0003442F080AF8200448F8300548F82005426
-:10C4F000100000022463000A8F820054006210239F
-:10C500002C42000B1440FFFC000000008F82022030
-:10C510003C03F70000431025AF8202208F830054B4
-:10C520008F82005410000002246300648F82005444
-:10C53000006210232C4200651440FFFC0000000044
-:10C540008F8202202404000134420002AF820220C4
-:10C550008F83020024057FFF2402FFFD0062182460
-:10C56000AF830200AF8402048F8300548F82005493
-:10C5700010000002246300018F8200540062102327
-:10C580002C4200021440FFFC000000008F820224B5
-:10C5900014440005340280000004204000A4102B45
-:10C5A0001040FFF0340280001082FF50261000017E
-:10C5B0002E0200641440FFB0000000003C020001A5
-:10C5C0008C426D9430420004144000073C09FFF097
-:10C5D0008F8200443C03FFFF34633F7F00431024FD
-:10C5E000AF8200443C09FFF03529BDC03C06000184
-:10C5F0008CC66D943C04000124846AE0240200018E
-:10C600003C010001AC226D9C8F8200543C0700016C
-:10C610008CE76F403C03000194636F243C080001E9
-:10C6200095086F263C05000D34A501003C01000172
-:10C63000AC206D98004910213C010001AC226F3004
-:10C64000AFA300100C002B3BAFA800148FBF002C31
-:10C650008FB200288FB100248FB0002003E00008C3
-:10C6600027BD003027BDFFE83C0500018CA56D9873
-:10C67000240600042402000114A20014AFBF00101D
-:10C680003C0200028C428FFC3042800010400005CA
-:10C690003C04000F3C0300018C636F401000000558
-:10C6A000348442403C0400043C0300018C636F402E
-:10C6B000348493E024020005146200160000000098
-:10C6C0003C04003D10000013348409003C020002C9
-:10C6D0008C428FF830428000104000053C04001E60
-:10C6E0003C0300018C636F4010000005348484809B
-:10C6F0003C04000F3C0300018C636F4034844240D3
-:10C700002402000514620003000000003C04007ACB
-:10C71000348412003C0200018C426F308F8300543D
-:10C7200000441021004310230044102B1440004CFF
-:10C73000000000003C0200018C426DA01440004843
-:10C74000000000003C01000110C00025AC206DB0CD
-:10C750003C0900018D296D94240700013C04400030
-:10C760003C08000225088FFC250AFFFC0005284232
-:10C7700014A0000224C6FFFF2405000800A910240D
-:10C78000104000100000000014A700080000000086
-:10C790008D020000004410241040000A0000000038
-:10C7A0003C01000110000007AC256DB08D42000077
-:10C7B0000044102410400003000000003C01000170
-:10C7C000AC276DB03C0200018C426DB00006182B06
-:10C7D0002C420001004310245440FFE5000528428C
-:10C7E0008F8200543C0300018C636DB03C0100015A
-:10C7F000AC226F301060003B240200053C030001B6
-:10C800008C636F403C010001AC256D9814620012EE
-:10C81000240200013C0200028C428FF83C032000FD
-:10C820003463500000431024144000062402000129
-:10C830003C010001AC206F1C3C010001AC226D9852
-:10C84000240200013C010001AC226E243C010001E5
-:10C85000AC226DA4240200013C010001AC226D9CBD
-:10C860003C0200018C426DB01040001E0000000030
-:10C870003C0200018C426D9C104000082402000123
-:10C880003C010001AC206D9CAEE204B83C0100010B
-:10C89000AC206E1C3C010001AC226DD48EE304B8C8
-:10C8A0002402000810620005240200010C00423935
-:10C8B000000000001000000B000000003C0300011D
-:10C8C0008C636D98106200072402000E3C03000286
-:10C8D0008C638F9010620003000000000C004E9CDF
-:10C8E0008F8402208FBF001003E0000827BD0018CE
-:10C8F00027BDFFE03C03FDFF3C0400018C846D98E4
-:10C900003C0200018C426DC03463FFFF0283A0240F
-:10C9100014820006AFBF00188EE304B83C02000189
-:10C920008C426DC410620006000000008EE204B864
-:10C930003C010001AC246DC03C010001AC226DC47F
-:10C940003C0300018C636D98240200021062019C7C
-:10C950002C62000310400005240200011062000A4E
-:10C960000000000010000226000000002402000465
-:10C97000106200B6240200081062010A24020001BD
-:10C980001000021F000000008EE204B82443FFFFE5
-:10C990002C6200081040021C000310803C010001C2
-:10C9A000002208218C226AF80040000800000000E4
-:10C9B0003C0300018C636F402402000514620010E8
-:10C9C000000000003C0200018C426DA410400008F1
-:10C9D000240200030C004482000000002402000234
-:10C9E000AEE204B83C01000110000002AC206DA4CE
-:10C9F000AEE204B83C01000110000203AC206D302F
-:10CA00000C004482000000003C0200018C426DA436
-:10CA10003C010001AC206D301440017A2402000278
-:10CA20001000019D240200073C0300018C636F404D
-:10CA30002402000514620003240200013C010001ED
-:10CA4000AC226DD00C0045FF000000003C0300014B
-:10CA50008C636DD010000174240200113C050001AC
-:10CA60008CA56D983C0600028CC68FFC0C0051040E
-:10CA700000002021240200053C010001AC206DA42F
-:10CA8000100001E1AEE204B83C04000124846AEC29
-:10CA90003C05000F34A501000000302100003821C2
-:10CAA000AFA000100C002B3BAFA00014100001D66B
-:10CAB000000000008F8202203C0300040043102489
-:10CAC00014400175240200078F8300543C020001CA
-:10CAD0008C426F282463D8F0004310232C42271087
-:10CAE00014400003240200013C010001AC226D9CB3
-:10CAF0003C0200028C428FFC30425000104001C2C8
-:10CB0000000000008F820220304280001040017D32
-:10CB10000000000010000175000000003C0500014D
-:10CB20008CA56D980C00529B000020210C00551B19
-:10CB3000000020213C0300028C638FF4046101B0EB
-:10CB4000240200013C02000800621024104000068C
-:10CB5000000000008F8202143C03FFFF00431024FA
-:10CB6000100000053442251F8F8202143C03FFFF92
-:10CB7000004310243442241FAF8202148F8202200B
-:10CB80003C03020034420002AF820220240200086B
-:10CB9000AEE204B88F8202200283A0253C03000489
-:10CBA0000043102414400016000000003C02000264
-:10CBB0008C428FFC304250001040000D00000000FD
-:10CBC0008F820220304280001040000600000000EA
-:10CBD0008F8202203C03FFFF34637FFF10000003BD
-:10CBE000004310248F82022034428000AF82022052
-:10CBF0008F8202203C03F70000431025AF82022001
-:10CC00003C0300018C636F40240200051462000A9B
-:10CC1000000000003C02000194426F2624429FBCA9
-:10CC20002C420004104000042404001824050002D3
-:10CC30000C004DDB240600200C003E6D00000000BF
-:10CC40003C01000110000170AC206E208EE204B89F
-:10CC50002443FFFF2C6200081040016B000310808A
-:10CC60003C010001002208218C226B1800400008C2
-:10CC7000000000000C004547000000003C030001DC
-:10CC80008C636DB4100000E8240200093C0200022D
-:10CC90008C428FF830424000104000040000000039
-:10CCA0008F820044100000063442F0808F820044DE
-:10CCB0003C03FFFF34633F7F004310243442A080D5
-:10CCC000AF8200448F830054100000EA2402000465
-:10CCD0008F8300543C0200018C426F282463D8F0FB
-:10CCE000004310232C422710144001472402000562
-:10CCF000100000D8000000008F8202203C03F700E3
-:10CD000000431025AF820220AF8002043C010002E4
-:10CD1000100000D6AC208FE08F8300543C0200014D
-:10CD20008C426F282463FFF6004310232C42000A34
-:10CD30001440013524020007100000D70000000055
-:10CD40000C003F50000000001040012D24020001A3
-:10CD50008F8202143C03FFFF3C0400018C846F1C93
-:10CD6000004310243442251FAF820214240200081D
-:10CD700010800005AEE204B83C0200018C426E4413
-:10CD800010400064240200018F8202203C0300084E
-:10CD9000004310241040006A3C020200100000789A
-:10CDA000000000008EE204B82443FFFF2C6200075D
-:10CDB00010400115000310803C01000100220821F1
-:10CDC0008C226B3800400008000000000C003DAFD2
-:10CDD000000000003C010001AC206D9CAF8002040B
-:10CDE0003C0100020C004482AC208FE024020001D0
-:10CDF0003C010001AC226DB42402000210000102CB
-:10CE0000AEE204B80C004547000000003C030001FE
-:10CE10008C636DB410000084240200093C020002FF
-:10CE20008C428FF830424000104000033C0200C8A2
-:10CE300010000002344201F6344201FEAF82023893
-:10CE40008F8300541000008B240200048F83005451
-:10CE50003C0200018C426F282463D8F00043102369
-:10CE60002C422710144000E824020005100000792D
-:10CE7000000000008F8202203C03F70000431025D1
-:10CE8000AF820220AF8002043C0100021000007754
-:10CE9000AC208FE08F8300543C0200018C426F284D
-:10CEA0002463FFF6004310232C42000A144000D6EE
-:10CEB0002402000710000078000000000C003F5022
-:10CEC00000000000104000CE240200018F820214F6
-:10CED0003C03FFFF3C0400018C846F1C00431024C2
-:10CEE0003442251FAF820214240200081080000F74
-:10CEF000AEE204B83C0200018C426E441440000BC8
-:10CF0000000000008F82022034420002AF82022023
-:10CF1000240200013C010002AC228F900C004E9CC8
-:10CF20008F84022010000016000000008F82022073
-:10CF30003C03000800431024144000113C0202008E
-:10CF40000282A0252402000E3C010002AC228F9038
-:10CF50000C00551B000020218F8202203442000269
-:10CF60000C003E6DAF8202203C0500018CA56D983F
-:10CF70000C00529B00002021100000A300000000C4
-:10CF80003C0200018C426E441040009F00000000F3
-:10CF90003C0200018C426E402442FFFF3C01000134
-:10CFA000AC226E4014400098240200023C010001B3
-:10CFB000AC206E443C01000110000093AC226E4096
-:10CFC0008EE204B82443FFFF2C6200071040008E5D
-:10CFD000000310803C010001002208218C226B58C4
-:10CFE00000400008000000003C0200018C426DA4DB
-:10CFF00010400018240200050C00448200000000CC
-:10D0000024020002AEE204B83C0100011000007EE0
-:10D01000AC206DA40C004963000000003C0300013B
-:10D020008C636DD42402000614620077240200038E
-:10D0300010000075AEE204B83C0500018CA56D98A7
-:10D040003C0600028CC68FF80C0051040000202121
-:10D05000240200051000006CAEE204B88F820220AA
-:10D060003C03F70000431025AF8202208F83005459
-:10D0700024020006AEE204B83C0100011000006288
-:10D08000AC236F288F8202203C030004004310244D
-:10D0900010400003240200071000005BAEE204B859
-:10D0A0008F8300543C0200018C426F282463D8F027
-:10D0B000004310232C4227101440000324020001D7
-:10D0C0003C010001AC226D9C3C0200028C428FF8B6
-:10D0D000304250001040004C000000008F820220BF
-:10D0E0003042800010400007000000008F820220C4
-:10D0F0003C03FFFF34637FFF004310241000004215
-:10D10000AF8202208F820220344280001000003E55
-:10D11000AF8202203C0500018CA56D980C00529B4B
-:10D12000000020210C00551B000020213C020002C1
-:10D130008C428FF004410032240200018F820214DD
-:10D140003C03FFFF004310243442251FAF8202142A
-:10D1500024020008AEE204B88F82022034420002AA
-:10D16000AF8202208F8202203C030004004310247F
-:10D1700014400016000000003C0200028C428FF8B0
-:10D18000304250001040000D000000008F8202204D
-:10D190003042800010400006000000008F82022014
-:10D1A0003C03FFFF34637FFF1000000300431024A3
-:10D1B0008F82022034428000AF8202208F820220C0
-:10D1C0003C03F70000431025AF8202203C0200011F
-:10D1D00094426F2624429FBC2C420004104000045D
-:10D1E00024040018240500020C004DDB2406002056
-:10D1F0000C003E6D00000000100000030000000065
-:10D200003C010001AC226D9C8FBF001803E00008B8
-:10D2100027BD00208F8202008F8202208F82022091
-:10D2200034420004AF8202208F8202003C050001DC
-:10D230008CA56D9834420004AF82020024020002E3
-:10D2400010A2004B2CA20003104000052402000194
-:10D2500010A2000A00000000100000B10000000051
-:10D260002402000410A200722402000810A200850B
-:10D270003C02F0FF100000AA000000008F83005065
-:10D280003C02F0FF3442FFFF3C0400018C846F40FD
-:10D29000006218243C0207000062182524020E00D8
-:10D2A0002484FFFB2C840002AF830050AF85020072
-:10D2B000AF85022014800006AF8202388F820044BE
-:10D2C0003C03FFFF34633F7F00431024AF820044E0
-:10D2D0003C0300018C636F402402000514620004CB
-:10D2E000000000008F82004434425000AF820044AE
-:10D2F0003C0200018C426D883C0300018C636F404E
-:10D30000344200222463FFFC2C6300021460000CF2
-:10D31000AF8202003C0200018C426DAC3C03000174
-:10D320008C636D903C0400018C846D8C34428000D1
-:10D3300000621825006418251000000A34620002FB
-:10D340003C0200018C426D903C0300018C636DAC8B
-:10D350003C0400018C846D8C004310250044102592
-:10D3600034420002AF8202201000002F240200018C
-:10D3700024020E01AF8202388F8300503C02F0FF7E
-:10D380003442FFFF3C0400018C846F1C00621824AF
-:10D390003C020D000062182524020001AF830050FA
-:10D3A000AF820200AF820220108000053C033F00E4
-:10D3B0003C0200018C426D80100000043463007058
-:10D3C0003C0200018C426D803463007200431025E2
-:10D3D000AF8202003C0300018C636D843C02F700C5
-:10D3E000006218253C0200018C426D903C04000153
-:10D3F0008C846DAC3C0500018CA56F40004310256A
-:10D4000000441025AF8202202402000514A2000669
-:10D41000240200018F8200442403AFFF0043102444
-:10D42000AF820044240200011000003DAF820238A8
-:10D430008F8300503C02F0FF3442FFFF3C040001A8
-:10D440008C846F1C006218243C020A0000621825BC
-:10D4500024020001AF830050AF8202001080001E42
-:10D46000AF8202203C0200018C426E441440001A3C
-:10D470003C033F003C0200018C426D801000001A0A
-:10D48000346300E08F8300503C0400018C846F1CE7
-:10D490003442FFFF006218241080000FAF83005059
-:10D4A0003C0200018C426E441440000B3C043F00DF
-:10D4B0003C0300018C636D80348400E02402000191
-:10D4C000AF820200AF82022000641825AF83020001
-:10D4D000100000083C05F7003C0200018C426D8002
-:10D4E0003C033F00346300E200431025AF8202009A
-:10D4F0003C05F70034A580003C0300018C636D847B
-:10D500003C0200018C426D903C0400018C846DACA7
-:10D51000006518250043102500441025AF82022025
-:10D5200003E00008000000003C0300018C636DB4C0
-:10D530003C0200018C426DB810620003240200021C
-:10D540003C010001AC236DB81062001D2C62000389
-:10D55000104000252402000114620023240200046C
-:10D560003C0300018C636D981062000624020008E1
-:10D570001462000C3C0200C8344201FB1000000998
-:10D58000AF82023824020E01AF8202388F8200443B
-:10D590003C03FFFF34633F7F00431024344200808C
-:10D5A000AF8200448F830054240200023C0100013A
-:10D5B000AC226DB43C0100011000000BAC236F2CB9
-:10D5C0008F8300543C0200018C426F2C2463D8F0FE
-:10D5D000004310232C4227101440000324020009AA
-:10D5E0003C010001AC226DB403E000080000000023
-:10D5F00000000000000000000000000027BDFFD870
-:10D60000AFB2001800809021AFB3001C00A0982199
-:10D61000AFB1001400C08821AFB00010000080211D
-:10D62000AFBF0020A62000000C004D7824040001AC
-:10D63000261000012E0200201440FFFB0000000015
-:10D640000C004D78000020210C004D7824040001CE
-:10D650000C004D78240400010C004D7800002021BE
-:10D66000241000100250102410400002000020215D
-:10D67000240400010C004D78001080421600FFFACF
-:10D6800002501024241000100270102410400002D8
-:10D6900000002021240400010C004D78001080427D
-:10D6A0001600FFFA027010240C004DB934108000EF
-:10D6B0000C004DB9000000000C004D5800000000A7
-:10D6C00050400005001080429622000000501025B6
-:10D6D000A6220000001080421600FFF700000000A4
-:10D6E0000C004DB9000000008FBF00208FB3001C5C
-:10D6F0008FB200188FB100148FB0001003E0000843
-:10D7000027BD002827BDFFD8AFB1001400808821B5
-:10D71000AFB2001800A09021AFB3001C00C0982148
-:10D72000AFB0001000008021AFBF00200C004D788A
-:10D7300024040001261000012E0200201440FFFBEB
-:10D74000000000000C004D78000020210C004D78F6
-:10D75000240400010C004D78000020210C004D78BD
-:10D760002404000124100010023010241040000294
-:10D7700000002021240400010C004D78001080429C
-:10D780001600FFFA0230102424100010025010245A
-:10D790001040000200002021240400010C004D78FC
-:10D7A000001080421600FFFA025010240C004D7841
-:10D7B000240400010C004D7800002021341080006A
-:10D7C000966200000050102410400002000020214A
-:10D7D000240400010C004D78001080421600FFF870
-:10D7E000000000000C004DB9000000008FBF0020B9
-:10D7F0008FB3001C8FB200188FB100148FB00010CF
-:10D8000003E0000827BD00283C0400018C846DD093
-:10D810003C0200018C426E1827BDFFD8AFBF00202C
-:10D82000AFB1001C10820003AFB000183C01000132
-:10D83000AC246E183C0300018C636F402402000589
-:10D84000146200052483FFFF0C0049630000000000
-:10D850001000034C000000002C620013104003492C
-:10D86000000310803C010001002208218C226B8003
-:10D8700000400008000000000C004DB900008021AD
-:10D8800034028000A7A2001027B100100C004D78D0
-:10D8900024040001261000012E0200201440FFFB8A
-:10D8A000000000000C004D78000020210C004D7895
-:10D8B000240400010C004D78000020210C004D785C
-:10D8C0002404000124100010320200011040000264
-:10D8D00000002021240400010C004D78001080423B
-:10D8E0001600FFFA32020001241000100C004D78DF
-:10D8F00000002021001080421600FFFC0000000004
-:10D900000C004D78240400010C004D78000020210B
-:10D9100034108000962200000050102410400002B5
-:10D9200000002021240400010C004D7800108042EA
-:10D930001600FFF8000000000C004DB900000000C8
-:10D940001000030E2402000227B10010A7A000104F
-:10D95000000080210C004D782404000126100001F5
-:10D960002E0200201440FFFB000000000C004D7848
-:10D97000000020210C004D78240400010C004D789B
-:10D98000240400010C004D78000020212410001018
-:10D990003202000110400002000020212404000196
-:10D9A0000C004D78001080421600FFFA3202000190
-:10D9B000241000100C004D7800002021001080423F
-:10D9C0001600FFFC000000000C004DB93410800070
-:10D9D0000C004DB9000000000C004D580000000084
-:10D9E0005040000500108042962200000050102593
-:10D9F000A6220000001080421600FFF70000000081
-:10DA00000C004DB90000000097A2001030428000C9
-:10DA1000144002DC24020003100002D800000000C1
-:10DA200024021200A7A2001027B1001000008021DC
-:10DA30000C004D7824040001261000012E02002065
-:10DA40001440FFFB000000000C004D780000202176
-:10DA50000C004D78240400010C004D7800002021BA
-:10DA60000C004D7824040001241000103202000143
-:10DA70001040000200002021240400010C004D7819
-:10DA8000001080421600FFFA32020001241000103C
-:10DA90000C004D7800002021001080421600FFFC91
-:10DAA000000000000C004D78240400010C004D78AB
-:10DAB0000000202134108000962200000050102425
-:10DAC0001040000200002021240400010C004D78C9
-:10DAD000001080421600FFF8000000000C004DB955
-:10DAE000000000008F8300541000029624020004FE
-:10DAF0008F8300543C0200018C426F3C2463FF9CE6
-:10DB0000004310232C4200641440029E24020002B1
-:10DB10003C0300018C636F40106202972C6200038B
-:10DB20001440029624020011240200031062000532
-:10DB300024020004106202912402000F1000028FE0
-:10DB4000240200111000028D24020005240200149A
-:10DB5000A7A2001027B10010000080210C004D7812
-:10DB600024040001261000012E0200201440FFFBB7
-:10DB7000000000000C004D78000020210C004D78C2
-:10DB8000240400010C004D78000020210C004D7889
-:10DB90002404000124100010320200011040000291
-:10DBA00000002021240400010C004D780010804268
-:10DBB0001600FFFA32020001241000103202001297
-:10DBC0001040000200002021240400010C004D78C8
-:10DBD000001080421600FFFA320200120C004D784D
-:10DBE000240400010C004D78000020213410800036
-:10DBF0009622000000501024104000020000202156
-:10DC0000240400010C004D78001080421600FFF83B
-:10DC1000000000000C004DB9000000008F8300548C
-:10DC200010000248240200068F8300543C020001C9
-:10DC30008C426F3C2463FF9C004310232C42006401
-:10DC400014400250240200071000024C00000000A3
-:10DC500024020006A7A2001027B1001000008021B6
-:10DC60000C004D7824040001261000012E02002033
-:10DC70001440FFFB000000000C004D780000202144
-:10DC80000C004D78240400010C004D780000202188
-:10DC90000C004D7824040001241000103202000111
-:10DCA0001040000200002021240400010C004D78E7
-:10DCB000001080421600FFFA32020001241000100A
-:10DCC0003202001310400002000020212404000151
-:10DCD0000C004D78001080421600FFFA320200134B
-:10DCE0000C004D78240400010C004D780000202128
-:10DCF00034108000962200000050102410400002D2
-:10DD000000002021240400010C004D780010804206
-:10DD10001600FFF8000000000C004DB900000000E4
-:10DD20008F83005410000207240200088F830054E0
-:10DD30003C0200018C426F3C2463FF9C0043102393
-:10DD40002C4200641440020F240200091000020B50
-:10DD50000000000027B10010A7A0001000008021E3
-:10DD60000C004D7824040001261000012E02002032
-:10DD70001440FFFB000000000C004D780000202143
-:10DD80000C004D78240400010C004D78240400019F
-:10DD90000C004D78000020212410001032020001F8
-:10DDA0001040000200002021240400010C004D78E6
-:10DDB000001080421600FFFA320200012410001009
-:10DDC000320200181040000200002021240400014B
-:10DDD0000C004D78001080421600FFFA3202001845
-:10DDE0000C004DB9341080000C004DB9000000004B
-:10DDF0000C004D580000000050400005001080420B
-:10DE00009622000000501025A6220000001080423B
-:10DE10001600FFF7000000000C004DB90000802143
-:10DE200097A2001027B1001034420001A7A20010F1
-:10DE30000C004D7824040001261000012E02002061
-:10DE40001440FFFB000000000C004D780000202172
-:10DE50000C004D78240400010C004D7800002021B6
-:10DE60000C004D782404000124100010320200013F
-:10DE70001040000200002021240400010C004D7815
-:10DE8000001080421600FFFA320200012410001038
-:10DE9000320200181040000200002021240400017A
-:10DEA0000C004D78001080421600FFFA3202001874
-:10DEB0000C004D78240400010C004D780000202156
-:10DEC0003410800096220000005010241040000200
-:10DED00000002021240400010C004D780010804235
-:10DEE0001600FFF8000000000C004DB90000000013
-:10DEF0008F830054100001932402000A8F83005482
-:10DF00003C0200018C426F3C2463FF9C00431023C1
-:10DF10002C4200641440019B2402000B1000019766
-:10DF20000000000027B10010A7A000100000802111
-:10DF30000C004D7824040001261000012E02002060
-:10DF40001440FFFB000000000C004D780000202171
-:10DF50000C004D78240400010C004D7824040001CD
-:10DF60000C004D7800002021241000103202000126
-:10DF70001040000200002021240400010C004D7814
-:10DF8000001080421600FFFA320200012410001037
-:10DF9000320200171040000200002021240400017A
-:10DFA0000C004D78001080421600FFFA3202001774
-:10DFB0000C004DB9341080000C004DB90000000079
-:10DFC0000C004D5800000000504000050010804239
-:10DFD0009622000000501025A6220000001080426A
-:10DFE0001600FFF7000000000C004DB90000802172
-:10DFF00097A2001027B1001034420700A7A200101A
-:10E000000C004D7824040001261000012E0200208F
-:10E010001440FFFB000000000C004D7800002021A0
-:10E020000C004D78240400010C004D7800002021E4
-:10E030000C004D782404000124100010320200016D
-:10E040001040000200002021240400010C004D7843
-:10E05000001080421600FFFA320200012410001066
-:10E0600032020017104000020000202124040001A9
-:10E070000C004D78001080421600FFFA32020017A3
-:10E080000C004D78240400010C004D780000202184
-:10E09000341080009622000000501024104000022E
-:10E0A00000002021240400010C004D780010804263
-:10E0B0001600FFF8000000000C004DB90000000041
-:10E0C0008F8300541000011F2402000C8F83005422
-:10E0D0003C0200018C426F3C2463FF9C00431023F0
-:10E0E0002C42006414400127240200121000012376
-:10E0F0000000000027B10010A7A000100000802140
-:10E100000C004D7824040001261000012E0200208E
-:10E110001440FFFB000000000C004D78000020219F
-:10E120000C004D78240400010C004D7824040001FB
-:10E130000C004D7800002021241000103202000154
-:10E140001040000200002021240400010C004D7842
-:10E15000001080421600FFFA320200012410001065
-:10E1600032020014104000020000202124040001AB
-:10E170000C004D78001080421600FFFA32020014A5
-:10E180000C004DB9341080000C004DB900000000A7
-:10E190000C004D5800000000504000050010804267
-:10E1A0009622000000501025A62200000010804298
-:10E1B0001600FFF7000000000C004DB900008021A0
-:10E1C00097A2001027B1001034420010A7A200103F
-:10E1D0000C004D7824040001261000012E020020BE
-:10E1E0001440FFFB000000000C004D7800002021CF
-:10E1F0000C004D78240400010C004D780000202113
-:10E200000C004D782404000124100010320200019B
-:10E210001040000200002021240400010C004D7871
-:10E22000001080421600FFFA320200012410001094
-:10E2300032020014104000020000202124040001DA
-:10E240000C004D78001080421600FFFA32020014D4
-:10E250000C004D78240400010C004D7800002021B2
-:10E26000341080009622000000501024104000025C
-:10E2700000002021240400010C004D780010804291
-:10E280001600FFF8000000000C004DB9000000006F
-:10E290008F830054100000AB240200138F830054BE
-:10E2A0003C0200018C426F3C2463FF9C004310231E
-:10E2B0002C420064144000B32402000D100000AF93
-:10E2C0000000000027B10010A7A00010000080216E
-:10E2D0000C004D7824040001261000012E020020BD
-:10E2E0001440FFFB000000000C004D7800002021CE
-:10E2F0000C004D78240400010C004D78240400012A
-:10E300000C004D7800002021241000103202000182
-:10E310001040000200002021240400010C004D7870
-:10E32000001080421600FFFA320200012410001093
-:10E3300032020018104000020000202124040001D5
-:10E340000C004D78001080421600FFFA32020018CF
-:10E350000C004DB9341080000C004DB900000000D5
-:10E360000C004D5800000000504000050010804295
-:10E370009622000000501025A622000000108042C6
-:10E380001600FFF7000000000C004DB900008021CE
-:10E3900097A2001027B100103042FFFEA7A2001084
-:10E3A0000C004D7824040001261000012E020020EC
-:10E3B0001440FFFB000000000C004D7800002021FD
-:10E3C0000C004D78240400010C004D780000202141
-:10E3D0000C004D78240400012410001032020001CA
-:10E3E0001040000200002021240400010C004D78A0
-:10E3F000001080421600FFFA3202000124100010C3
-:10E400003202001810400002000020212404000104
-:10E410000C004D78001080421600FFFA32020018FE
-:10E420000C004D78240400010C004D7800002021E0
-:10E43000341080009622000000501024104000028A
-:10E4400000002021240400010C004D7800108042BF
-:10E450001600FFF8000000000C004DB9000000009D
-:10E460008F830054100000372402000E240208405D
-:10E47000A7A2001027B10010000080210C004D78E9
-:10E4800024040001261000012E0200201440FFFB8E
-:10E49000000000000C004D78000020210C004D7899
-:10E4A000240400010C004D78000020210C004D7860
-:10E4B0002404000124100010320200011040000268
-:10E4C00000002021240400010C004D78001080423F
-:10E4D0001600FFFA3202000124100010320200136D
-:10E4E0001040000200002021240400010C004D789F
-:10E4F000001080421600FFFA320200130C004D7823
-:10E50000240400010C004D7800002021341080000C
-:10E51000962200000050102410400002000020212C
-:10E52000240400010C004D78001080421600FFF812
-:10E53000000000000C004DB9000000008F83005463
-:10E54000240200103C010001AC226DD03C0100010E
-:10E550001000000CAC236F3C8F8300543C02000180
-:10E560008C426F3C2463FF9C004310232C420064C8
-:10E570001440000400000000240200113C010001CE
-:10E58000AC226DD08FBF00208FB1001C8FB000185F
-:10E5900003E0000827BD00283C0300018C636D9850
-:10E5A00027BDFFC824020002AFBF0034AFB2003065
-:10E5B000AFB1002C14620004AFB000283C1200027E
-:10E5C000100000038E528FF83C1200028E528FFC16
-:10E5D0003C0300018C636DD43C0200018C426E1C34
-:10E5E000506200042463FFFF3C010001AC236E1C59
-:10E5F0002463FFFF2C6200061040037700031080A5
-:10E600003C010001002208218C226BD80040000848
-:10E610000000000000002021000028210C004DDB3C
-:10E6200034068000240400102405000224060002A1
-:10E63000240200020C004DDBA7A2001824020002F5
-:10E640003C01000110000364AC226DD427B1001816
-:10E65000A7A00018000080210C004D7824040001C0
-:10E66000261000012E0200201440FFFB00000000D5
-:10E670000C004D78000020210C004D78240400018E
-:10E680000C004D78240400010C004D78000020217E
-:10E69000241000103202000110400002000020216E
-:10E6A000240400010C004D78001080421600FFFA8F
-:10E6B00032020001241000100C004D7800002021CF
-:10E6C000001080421600FFFC000000000C004DB955
-:10E6D000341080000C004DB9000000000C004D58B3
-:10E6E000000000005040000500108042962200000B
-:10E6F00000501025A6220000001080421600FFF7EF
-:10E70000000000000C004DB90000000097A20018A6
-:10E710003042800014400004240200033C01000148
-:10E72000AC226DD4240200033C0100011000032A36
-:10E73000AC226DD42404001024050002240600023B
-:10E74000240200020C004DDBA7A200183C030001CC
-:10E750008C636E2024020001146201E1000080211C
-:10E7600027B10018A7A000180C004D782404000160
-:10E77000261000012E0200201440FFFB00000000C4
-:10E780000C004D78000020210C004D78240400017D
-:10E790000C004D78240400010C004D78000020216D
-:10E7A000241000103202000110400002000020215D
-:10E7B000240400010C004D78001080421600FFFA7E
-:10E7C0003202000124100010320200181040000232
-:10E7D00000002021240400010C004D78001080422C
-:10E7E0001600FFFA320200180C004DB934108000F8
-:10E7F0000C004DB9000000000C004D580000000056
-:10E800005040000500108042962200000050102564
-:10E81000A6220000001080421600FFF70000000052
-:10E820000C004DB90000802127B10018A7A00018E6
-:10E830000C004D7824040001261000012E02002057
-:10E840001440FFFB000000000C004D780000202168
-:10E850000C004D78240400010C004D7824040001C4
-:10E860000C004D780000202124100010320200011D
-:10E870001040000200002021240400010C004D780B
-:10E88000001080421600FFFA32020001241000102E
-:10E890003202001810400002000020212404000170
-:10E8A0000C004D78001080421600FFFA320200186A
-:10E8B0000C004DB9341080000C004DB90000000070
-:10E8C0000C004D5800000000504000050010804230
-:10E8D0009622000000501025A62200000010804261
-:10E8E0001600FFF7000000000C004DB90000802169
-:10E8F00024040018000028210C004DDB2406040429
-:10E90000A7A0001A0C004D78240400012610000175
-:10E910002E0200201440FFFB000000000C004D7888
-:10E92000000020210C004D78240400010C004D78DB
-:10E93000240400010C004D78000020212410001058
-:10E9400032020001104000020000202124040001D6
-:10E950000C004D78001080421600FFFA32020001D0
-:10E960002410001032020018104000020000202184
-:10E97000240400010C004D78001080421600FFFABC
-:10E98000320200180C004DB9341080000C004DB953
-:10E99000000000000C004D58000000005040000531
-:10E9A0000010804297A2001A00501025A7A2001A5A
-:10E9B000001080421600FFF7000000000C004DB967
-:10E9C00000008021A7A0001A0C004D78240400014B
-:10E9D000261000012E0200201440FFFB0000000062
-:10E9E0000C004D78000020210C004D78240400011B
-:10E9F0000C004D78240400010C004D78000020210B
-:10EA000024100010320200011040000200002021FA
-:10EA1000240400010C004D78001080421600FFFA1B
-:10EA200032020001241000103202001810400002CF
-:10EA300000002021240400010C004D7800108042C9
-:10EA40001600FFFA320200180C004DB93410800095
-:10EA50000C004DB9000000000C004D5800000000F3
-:10EA6000504000050010804297A2001A0050102567
-:10EA7000A7A2001A001080421600FFF70000000055
-:10EA80000C004DB900008021A7A0001C0C004D789F
-:10EA900024040001261000012E0200201440FFFB78
-:10EAA000000000000C004D78000020210C004D7883
-:10EAB000240400010C004D78240400010C004D7862
-:10EAC00000002021241000100C004D7800002021AF
-:10EAD000001080421600FFFC00000000241000100F
-:10EAE0003202001E10400002000020212404000118
-:10EAF0000C004D78001080421600FFFA3202001E12
-:10EB00000C004DB9341080000C004DB9000000001D
-:10EB10000C004D58000000005040000500108042DD
-:10EB200097A2001C00501025A7A2001C00108042D4
-:10EB30001600FFF7000000000C004DB90000802116
-:10EB4000A7A0001C0C004D78240400012610000131
-:10EB50002E0200201440FFFB000000000C004D7846
-:10EB6000000020210C004D78240400010C004D7899
-:10EB7000240400010C004D78000020212410001016
-:10EB80000C004D7800002021001080421600FFFC90
-:10EB900000000000241000103202001E104000028D
-:10EBA00000002021240400010C004D780010804258
-:10EBB0001600FFFA3202001E0C004DB9341080001E
-:10EBC0000C004DB9000000000C004D580000000082
-:10EBD000504000050010804297A2001C00501025F4
-:10EBE000A7A2001C001080421600FFF700000000E2
-:10EBF0000C004DB90000802124020002A7A2001ED3
-:10EC00000C004D7824040001261000012E02002083
-:10EC10001440FFFB000000000C004D780000202194
-:10EC20000C004D78240400010C004D7800002021D8
-:10EC30000C004D7824040001241000100C004D78C5
-:10EC400000002021001080421600FFFC00000000A0
-:10EC5000241000103202001E10400002000020218B
-:10EC6000240400010C004D78001080421600FFFAC9
-:10EC70003202001E0C004D78240400010C004D7877
-:10EC8000000020213410800097A2001E00501024A4
-:10EC90001040000200002021240400010C004D78E7
-:10ECA000001080421600FFF8000000000C004DB973
-:10ECB00000008021A7A000200C004D782404000152
-:10ECC000261000012E0200201440FFFB000000006F
-:10ECD0000C004D78000020210C004D782404000128
-:10ECE0000C004D78240400010C004D780000202118
-:10ECF000241000100C004D780000202100108042EC
-:10ED00001600FFFC00000000241000103202001E5C
-:10ED10001040000200002021240400010C004D7866
-:10ED2000001080421600FFFA3202001E0C004DB99E
-:10ED3000341080000C004DB9000000000C004D584C
-:10ED400000000000504000050010804297A2002003
-:10ED500000501025A7A20020001080421600FFF7E7
-:10ED6000000000000C004DB900008021A7A0002089
-:10ED70000C004D7824040001261000012E02002012
-:10ED80001440FFFB000000000C004D780000202123
-:10ED90000C004D78240400010C004D78240400017F
-:10EDA0000C004D7800002021241000100C004D783C
-:10EDB00000002021001080421600FFFC000000002F
-:10EDC000241000103202001E10400002000020211A
-:10EDD000240400010C004D78001080421600FFFA58
-:10EDE0003202001E0C004DB9341080000C004DB9E9
-:10EDF000000000000C004D580000000050400005CD
-:10EE00000010804297A2002000501025A7A20020E9
-:10EE1000001080421600FFF7000000000C004DB902
-:10EE200000008021A7A000220C004D7824040001DE
-:10EE3000261000012E0200201440FFFB00000000FD
-:10EE40000C004D78000020210C004D7824040001B6
-:10EE50000C004D78000020210C004D7824040001A6
-:10EE6000241000100C004D7800002021001080427A
-:10EE70001600FFFC00000000241000100C004D786C
-:10EE800000002021001080421600FFFC000000005E
-:10EE90000C004D78240400010C004D780000202166
-:10EEA0003410800097A2002200501024104000026D
-:10EEB00000002021240400010C004D780010804245
-:10EEC0001600FFF8000000000C004DB90000000023
-:10EED00024040018240500020C004DDB2406000465
-:10EEE0003C1000018E106E24240200011602011D48
-:10EEF000000000003C02000194426F263C0100012A
-:10EF0000AC206E2424429FBC2C4200041040000C14
-:10EF100024040009240500010C004DDB2406040034
-:10EF200024040018240500010C004DDB24060020F9
-:10EF300024040018240500010C004DDB24062000E9
-:10EF40003C02400002421024104001233C022000F9
-:10EF50000242102410400004000000003C010001A7
-:10EF600010000003AC306F1C3C010001AC206F1C92
-:10EF70003C0300018C636F3424020005146200F925
-:10EF8000000000003C0200018C426F1C1040006732
-:10EF90003C0200040242102410400011A7A00018F7
-:10EFA0003C02000802421024104000022402020029
-:10EFB000A7A200183C0200100242102410400004D6
-:10EFC0000000000097A2001834420100A7A2001818
-:10EFD00097A600182404000910000004000028214E
-:10EFE0002404000900002821000030210C004DDB22
-:10EFF0000000000024020001A7A2001A3C02000841
-:10F00000024210241040000C3C0200020242102474
-:10F010001040000224020101A7A2001A3C020001D4
-:10F0200002421024104000053C02001097A2001A72
-:10F0300034420040A7A2001A3C02001002421024F1
-:10F040001040000E3C020002024210241040000555
-:10F050003C02000197A2001A34420080A7A2001AC5
-:10F060003C02000102421024104000053C0300A0B5
-:10F0700097A2001A34420020A7A2001A3C0300A065
-:10F0800002431024544300043C02002097A2001ABB
-:10F090001000000C344204000242102450400004CE
-:10F0A0003C02008097A2001A1000000634420800BB
-:10F0B00002421024104000040000000097A2001A31
-:10F0C00034420C00A7A2001A97A6001A24040004D8
-:10F0D0000C004DDB000028213C02000402421024F9
-:10F0E00010400004A7A0001C32425000144000044D
-:10F0F00000000000324240001040000500002021C6
-:10F100000C004CF902402021100000960000000085
-:10F1100097A6001C0000282134C612000C004DDB0D
-:10F12000A7A6001C1000008F00000000024210245F
-:10F1300010400004A7A00018324250001440000400
-:10F140000000000032424000104000053C02001068
-:10F150000C004CF90240202110000019A7A0001A51
-:10F1600002421024104000040000000097A2001882
-:10F1700010000004A7A2001897A200183442010052
-:10F18000A7A200183C020001024210241040000413
-:10F190000000000097A2001810000004A7A20018A9
-:10F1A00097A2001834422000A7A2001897A60018C2
-:10F1B000000020210C004DDB00002821A7A0001A30
-:10F1C000000080210C004D7824040001261000016D
-:10F1D0002E0200201440FFFB000000000C004D78C0
-:10F1E000000020210C004D78240400010C004D7813
-:10F1F000240400010C004D78000020212410001090
-:10F20000320200011040000200002021240400010D
-:10F210000C004D78001080421600FFFA3202000107
-:10F22000241000100C004D780000202100108042B6
-:10F230001600FFFC000000000C004DB934108000E7
-:10F240000C004DB9000000000C004D5800000000FB
-:10F25000504000050010804297A2001A005010256F
-:10F26000A7A2001A001080421600FFF7000000005D
-:10F270000C004DB900008021A7A0001A0C004D78A9
-:10F2800024040001261000012E0200201440FFFB80
-:10F29000000000000C004D78000020210C004D788B
-:10F2A000240400010C004D78240400010C004D786A
-:10F2B0000000202124100010320200011040000242
-:10F2C00000002021240400010C004D780010804231
-:10F2D0001600FFFA32020001241000100C004D78D5
-:10F2E00000002021001080421600FFFC00000000FA
-:10F2F0000C004DB9341080000C004DB90000000026
-:10F300000C004D58000000005040000500108042E5
-:10F3100097A2001A00501025A7A2001A00108042E0
-:10F320001600FFF7000000000C004DB900000000BF
-:10F330003C04000124846BCC97A6001897A7001A00
-:10F340003C0200018C426D983C0300018C636F1CF1
-:10F350003C05000D34A50205AFA200100C002B3BAC
-:10F36000AFA300148F830054240200043C01000169
-:10F37000AC226DD43C01000110000017AC236F38A3
-:10F380008F8300543C0200018C426F382463FF9C41
-:10F39000004310232C4200641440000F00000000C2
-:10F3A0008F820220240300053C010001AC236DD4B0
-:10F3B0003C03F7000043102510000007AF82022035
-:10F3C000240200063C010001AC226DD4240200118D
-:10F3D0003C010001AC226DD08FBF00348FB20030F1
-:10F3E0008FB1002C8FB0002803E0000827BD003843
-:10F3F00027BDFFD8AFB0001800808021AFB1001C3E
-:10F40000000088213202400010400013AFBF0020EE
-:10F410003C020010020210242C42000100021023C2
-:10F42000304341003C020001020210241440000657
-:10F43000347140003C020002020210241440000219
-:10F440003471600034714040000020210000282108
-:10F45000100000360220302132021000104000352A
-:10F4600000002021000028210C004DDB2406004074
-:10F4700024040018000028210C004DDB24060C0099
-:10F4800024040017000028210C004DDB2406040092
-:10F4900024040016000028210C004DDB2406000681
-:10F4A00024040017000028210C004DDB2406250051
-:10F4B00024040016000028210C004DDB2406000661
-:10F4C00024040017000028210C004DDB2406460010
-:10F4D00024040016000028210C004DDB2406000641
-:10F4E00024040017000028210C004DDB24066700CF
-:10F4F00024040016000028210C004DDB2406000621
-:10F500002404001F000028210C004DDB24060010FD
-:10F5100024040009000028210C004DDB24061500FE
-:10F52000240400090000282124061D000C004DDBE6
-:10F53000000000003C04000124846BF03C05000E38
-:10F5400034A501000200302102203821AFA00010B4
-:10F550000C002B3BAFA000148FBF00208FB1001C0C
-:10F560008FB0001803E0000827BD00288F850044F5
-:10F570008F8200443C030001004310253C03000837
-:10F58000AF8200448F8400548F82005400A328244B
-:10F5900010000002248400018F8200540082102396
-:10F5A0002C4200021440FFFC000000008F82004447
-:10F5B0003C03FFFE3463FFFF00431024AF8200448E
-:10F5C0008F8300548F8200541000000224630001D6
-:10F5D0008F820054006210232C4200021440FFFC72
-:10F5E0000000000003E0000800A010218F83004409
-:10F5F0003C02FFF03442FFFF000424800062182424
-:10F600003C0200020082202500641825AF830044DC
-:10F610008F8200443C03FFFE3463FFFF004310244D
-:10F62000AF8200448F8300548F8200541000000288
-:10F63000246300018F820054006210232C420002D8
-:10F640001440FFFC000000008F8200443C030001D6
-:10F6500000431025AF8200448F8300548F820054F2
-:10F6600010000002246300018F8200540062102306
-:10F670002C4200021440FFFC0000000003E00008E0
-:10F68000000000008F8200442403FF7F0043102409
-:10F69000AF8200448F8300548F8200541000000218
-:10F6A000246300018F820054006210232C42000268
-:10F6B0001440FFFC000000008F82004434420080B0
-:10F6C000AF8200448F8300548F82005410000002E8
-:10F6D000246300018F820054006210232C42000238
-:10F6E0001440FFFC0000000003E0000800000000E0
-:10F6F0008F8200443C03FFF03463FFFF004310247B
-:10F70000AF8200448F8200443C0300010043102577
-:10F71000AF8200448F8300548F8200541000000297
-:10F72000246300018F820054006210232C420002E7
-:10F730001440FFFC000000008F8200443C03FFFEE9
-:10F740003463FFFF00431024AF8200448F830054D2
-:10F750008F82005410000002246300018F82005445
-:10F76000006210232C4200021440FFFC0000000045
-:10F7700003E000080000000027BDFFC8AFB300246D
-:10F7800000809821AFBE002C00A0F021AFB2002075
-:10F7900000C0902133C2FFFFAFBF0030AFB50028DB
-:10F7A000AFB1001CAFB0001814400034A7B2001075
-:10F7B0003271FFFF27B20010000080210C004D784D
-:10F7C00024040001261000012E0200201440FFFB3B
-:10F7D000000000000C004D78000020210C004D7846
-:10F7E000240400010C004D78000020210C004D780D
-:10F7F0002404000124100010320200011040000215
-:10F8000000002021240400010C004D7800108042EB
-:10F810001600FFFA320200012410001002301024FA
-:10F820001040000200002021240400010C004D784B
-:10F83000001080421600FFFA023010240C004D78B0
-:10F84000240400010C004D780000202134108000B9
-:10F8500096420000005010241040000200002021B9
-:10F86000240400010C004D78001080421200007545
-:10F87000000000001000FFF6000000003275FFFFDE
-:10F8800027B10010A7A00010000080210C004D78C7
-:10F8900024040001261000012E0200201440FFFB6A
-:10F8A000000000000C004D78000020210C004D7875
-:10F8B000240400010C004D78240400010C004D7854
-:10F8C000000020212410001032020001104000022C
-:10F8D00000002021240400010C004D78001080421B
-:10F8E0001600FFFA320200012410001002B01024AA
-:10F8F0001040000200002021240400010C004D787B
-:10F90000001080421600FFFA02B010240C004DB91E
-:10F91000341080000C004DB9000000000C004D5860
-:10F9200000000000504000050010804296220000B8
-:10F9300000501025A6220000001080421600FFF79C
-:10F94000000000000C004DB90000000033C5FFFFAF
-:10F950002402000154A200042402000297A2001015
-:10F96000100000060052102514A200063271FFFF9D
-:10F9700097A200100012182700431024A7A200101D
-:10F980003271FFFF27B20010000080210C004D787B
-:10F9900024040001261000012E0200201440FFFB69
-:10F9A000000000000C004D78000020210C004D7874
-:10F9B000240400010C004D78000020210C004D783B
-:10F9C0002404000124100010320200011040000243
-:10F9D00000002021240400010C004D78001080421A
-:10F9E0001600FFFA32020001241000100230102429
-:10F9F0001040000200002021240400010C004D787A
-:10FA0000001080421600FFFA023010240C004D78DE
-:10FA1000240400010C004D780000202134108000E7
-:10FA200096420000005010241040000200002021E7
-:10FA3000240400010C004D78001080421600FFF8ED
-:10FA4000000000000C004DB9000000008FBF003026
-:10FA50008FBE002C8FB500288FB300248FB20020FA
-:10FA60008FB1001C8FB0001803E0000827BD0038DC
-:10FA700000000000000000000000000027BDFFE8BB
-:10FA8000AFBF00108EE304B824020008146201E046
-:10FA9000000000003C0200018C426F1C1440000575
-:10FAA000000000000C003DAF8F840224100001D83C
-:10FAB000000000008F8202203C0300080043102455
-:10FAC00010400026240200018F8402248F8202202D
-:10FAD0003C03040000431024104000060000000016
-:10FAE0003C010002AC208FA03C0100021000000B82
-:10FAF000AC208FC03C03000224638FA08C62000006
-:10FB000024420001AC6200002C42000214400003B9
-:10FB1000240200013C010002AC228FC03C02000222
-:10FB20008C428FC01040000630820040104000041C
-:10FB3000240200013C01000210000003AC228FC42B
-:10FB40003C010002AC208FC43C010002AC248F9C1D
-:10FB50003C0100021000000BAC208FD03C010002E1
-:10FB6000AC228FD03C010002AC208FC03C010002CF
-:10FB7000AC208FA03C010002AC208FC43C010002ED
-:10FB8000AC208F9C3C0300028C638F903C020002EF
-:10FB90008C428F94506200042463FFFF3C010002FA
-:10FBA000AC238F942463FFFF2C62000E104001945D
-:10FBB000000310803C010001002208218C226C000F
-:10FBC0000040000800000000240200023C01000286
-:10FBD000AC208FC03C010002AC208FA03C01000291
-:10FBE000AC208F9C3C010002AC208FC43C01000281
-:10FBF000AC208FB83C010002AC208FB0AF80022453
-:10FC00003C010002AC228F903C0200028C428FD05B
-:10FC10001440004F3C02FDFF3442FFFF0C003DAF9B
-:10FC20000282A024AF8002048F8202002403FFFD21
-:10FC300000431024AF8202003C010002AC208FE0A0
-:10FC40008F8300543C0200028C428FB824040001D0
-:10FC50003C010002AC248FCC244200013C01000294
-:10FC6000AC228FB82C4200043C010002AC238FB4BC
-:10FC700014400006240200033C010001AC246D9CEA
-:10FC80003C0100021000015EAC208FB83C01000274
-:10FC90001000015BAC228F908F8300543C02000265
-:10FCA0008C428FB42463D8F0004310232C422710D9
-:10FCB00014400003240200043C010002AC228F9097
-:10FCC0003C0200028C428FD0144000213C02FDFF18
-:10FCD0003442FFFF1000014A0282A0243C040001CC
-:10FCE0008C846F203C0100020C005084AC208FA853
-:10FCF0003C0200028C428FDCAF8202043C02000214
-:10FD00008C428FD0144000123C03FDFF8F8202040E
-:10FD10003463FFFF304200301440012F0283A024DF
-:10FD20003C0300028C638FDC240200053C010002CE
-:10FD3000AC228F903C01000210000131AC238FE017
-:10FD40003C0200028C428FD0104000103C02FDFFAC
-:10FD50003C0200018C426E3C244200013C01000147
-:10FD6000AC226E3C2C42000214400125240200010A
-:10FD70003C010001AC226E443C010001AC206E3C11
-:10FD80003C0100011000011EAC226D9C3C030002EE
-:10FD90008C638FC03442FFFF106001190282A024DF
-:10FDA0003C0200028C428F9C1040011500000000B4
-:10FDB0003C010002AC228FC8240200033C01000277
-:10FDC000AC228FA0100000B8240200063C01000203
-:10FDD000AC208FA88F82020434420040AF8202041C
-:10FDE0003C0200028C428FE0240300073C01000229
-:10FDF000AC238F90344200403C010002AC228FE0E3
-:10FE00003C0200028C428FC0104000050000000040
-:10FE10003C0200028C428F9C104000F02402000241
-:10FE20003C05000224A58FA08CA200002C424E218C
-:10FE3000104000EA240200023C0200028C428FC4FF
-:10FE4000104000EF2404FFBF3C0200028C428F9C54
-:10FE50003C0300028C638FC8004410240064182403
-:10FE600010430004240200013C010002100000E4E1
-:10FE7000AC228F9024020003ACA2000024020008F0
-:10FE80003C010002AC228F903C0200028C428FCCDD
-:10FE90001040000C240200013C0400020C005091B0
-:10FEA0008C848F9C3C0200028C428FE81440000539
-:10FEB000240200013C0200028C428FE41040000644
-:10FEC000240200013C010001AC226D9C3C010002B7
-:10FED000100000CBAC208FB83C0200028C428FB0E7
-:10FEE0003C0300028C638F9C2C420001000210C076
-:10FEF000306300083C010002AC228FB03C010002DC
-:10FF0000AC238FAC8F830054240200093C01000213
-:10FF1000AC228F903C010002100000B9AC238FB4DA
-:10FF20008F8300543C0200028C428FB42463D8F0CB
-:10FF3000004310232C4227101440009F00000000B3
-:10FF40003C0200028C428FC01040000500000000FF
-:10FF50003C0200028C428F9C104000A02402000250
-:10FF60003C03000224638FA08C6200002C424E21CF
-:10FF70001040009A240200023C0200028C428FCC06
-:10FF80001040000E000000003C0200028C428F9CDA
-:10FF90003C010002AC208FCC304200801040002F8A
-:10FFA0002402000C8F820204304200801440000CB6
-:10FFB00024020003100000292402000C3C0200026D
-:10FFC0008C428F9C304200801440000524020003C4
-:10FFD0008F820204304200801040001F2402000380
-:10FFE000AC6200002402000A3C010002AC228F90A7
-:10FFF0003C04000224848FD88C8200003C03000261
-:020000021000EC
-:100000008C638FB000431025AF8202048C83000004
-:100010003C0400028C848FB02402000B3C010002DF
-:10002000AC228F90006418253C010002AC238FE0C5
-:100030003C05000224A58FA08CA200002C424E217A
-:1000400010400066240200023C0200028C428FD065
-:1000500010400005000000002402000C3C010002DA
-:1000600010000067AC228F903C0200028C428FC0CF
-:1000700010400063000000003C0400028C848F9C50
-:1000800010800055308200083C0300028C638FAC66
-:100090001062005B240200033C010002AC248FC804
-:1000A000ACA20000240200063C0100021000005433
-:1000B000AC228F908F82020034420002AF82020095
-:1000C0008F8300542402000D3C010002AC228F906B
-:1000D0003C010002AC238FB48F8300543C02000229
-:1000E0008C428FB42463D8F0004310232C42271095
-:1000F00014400031000000003C0200028C428FD00E
-:10010000104000202402000E3C0300028C638FE4A8
-:100110003C01000214600015AC228F900C003E6D73
-:10012000000000003C0500018CA56D980C00529B5E
-:10013000000020213C0300018C636D982402000420
-:10014000146200052403FFFB3C0200018C426D9405
-:10015000100000032403FFF73C0200018C426D9461
-:10016000004310243C010001AC226D948F830224D3
-:100170003C0202003C010002AC238FEC1000002086
-:100180000282A0253C0200028C428FC01040000574
-:10019000000000003C0200028C428F9C1040000FC7
-:1001A000240200023C0200028C428FA02C424E210D
-:1001B0001040000A240200023C0200028C428FC060
-:1001C0001040000F000000003C0200028C428F9C97
-:1001D0001440000B00000000240200023C01000259
-:1001E00010000007AC228F903C0200028C428FC0AE
-:1001F00010400003000000000C003DAF00000000B4
-:100200008F8202203C03F70000431025AF820220BA
-:100210008FBF001003E0000827BD00183C03000258
-:1002200024638FE88C6200001040000534422000F7
-:100230003C010002AC228FDC10000003AC60000027
-:100240003C010002AC248FDC03E000080000000049
-:1002500027BDFFE030820030AFBF00183C01000234
-:10026000AC228FE4144000673C02FFFF34421F0EB3
-:1002700000821024144000612402003030822000EB
-:100280001040005D3083800000031A0230820001BC
-:10029000000212003C0400018C846F2000621825CB
-:1002A000000331C23C03000124636E4830828000A9
-:1002B00000021202308400010004220000441025D4
-:1002C000000239C2000610800043102100471021AF
-:1002D000904300002402000110620025000000008D
-:1002E00010600007240200021062001324020003C1
-:1002F0001062002C3C05000F1000003700000000C9
-:100300008F8202002403FEFF00431024AF8202000C
-:100310008F8202203C03FFFE3463FFFF0043102462
-:10032000AF8202203C010002AC2090043C0100029C
-:1003300010000034AC20900C8F8202003442010087
-:10034000AF8202008F8202203C03FFFE3463FFFF76
-:1003500000431024AF820220240201003C0100026D
-:10036000AC2290043C01000210000026AC20900C4E
-:100370008F8202002403FEFF00431024AF8202009C
-:100380008F8202203C03000100431025AF8202202F
-:100390003C010002AC2090043C0100021000001956
-:1003A000AC23900C8F82020034420100AF82020025
-:1003B0008F8202203C03000100431025AF820220FF
-:1003C000240201003C010002AC2290043C01000226
-:1003D0001000000CAC23900C34A5FFFF3C0400017E
-:1003E00024846C38AFA300100C002B3BAFA000148A
-:1003F0001000000400000000240200303C01000254
-:10040000AC228FE88FBF001803E0000827BD002052
-:1004100000000000000000000000000027BDFFC831
-:10042000AFB2002800809021AFB3002C00A098212B
-:10043000AFB0002000C080213C04000124846C5037
-:100440003C0500093C0200018C426D9834A59001E6
-:100450000240302102603821AFBF0030AFB100242C
-:10046000A7A0001AAFB000140C002B3BAFA20010E5
-:1004700024020002126200832E6200031040000575
-:10048000240200011262000A000000001000017343
-:100490000000000024020004126200F82402000898
-:1004A000126200F73C02FFEC1000016C000000003B
-:1004B0003C0200018C426D94304200021440000462
-:1004C000001289403C02FFFB3442FFFF02028024FD
-:1004D0003C01000200310821AC308FFC3C0240009E
-:1004E000020210241040004E001023C2308400305D
-:1004F000001013823042001C3C03000124636DD8BD
-:1005000000431021008238213C0200200202102406
-:1005100010400006240201003C01000200310821C5
-:10052000AC229000100000053C0200803C0100025B
-:1005300000310821AC2090003C020080020210240F
-:1005400010400006001219403C0200013C0100026C
-:100550000023082110000005AC2290080012114071
-:100560003C01000200220821AC20900894E4000025
-:100570003C0300018C636F402402000510620010F0
-:10058000A7A400183202400010400002348240004C
-:10059000A7A200182404000194E20002240500042C
-:1005A00024E60002344200010C0045BEA4E2000231
-:1005B00024040001000028210C0045BE27A60018D5
-:1005C0003C0200018C426D98241100013C010001A5
-:1005D000AC316DA414530004320280000C003DAF16
-:1005E00000000000320280001040011C00000000EA
-:1005F0000C003DAF000000003C0300018C636F4025
-:100600002402000510620115240200023C010001D1
-:10061000AC316D9C3C01000110000110AC226D98C2
-:10062000240400012405000427B0001A0C0045BE74
-:100630000200302124040001000028210C0045BEE6
-:10064000020030213C020002005110218C428FF444
-:100650003C0400018C846D983C03BFFF3463FFFFB2
-:100660003C010001AC336DA4004310243C010002A6
-:1006700000310821109300F7AC228FF4100000F72E
-:10068000000000003C02200002021024104000057F
-:10069000240200013C010001AC226F1C1000000488
-:1006A000001289403C010001AC206F1C00128940FF
-:1006B0003C01000200310821AC308FF83C024000C0
-:1006C0000202102414400014000000003C0200014B
-:1006D0008C426F1C10400006240400042405000115
-:1006E0000C004DDB2406200024020001AEE204B819
-:1006F0003C020002005110218C428FF03C03BFFFEE
-:100700003463FFFF004310243C0100020031082144
-:10071000100000D0AC228FF03C0200018C426F1C14
-:10072000104000283C0300A0020310245443000D95
-:100730003C0200203C0200018C426F202403010097
-:100740003C01000200310821AC2390043C0300016D
-:100750003C01000200310821AC23900C1000001570
-:100760003442040002021024104000082403010057
-:100770003C0200018C426F203C0100020031082144
-:10078000AC2390041000000B344208003C020080AF
-:10079000020210241040002E3C0300013C02000124
-:1007A0008C426F203C01000200310821AC23900CE8
-:1007B00034420C003C010001AC226F2010000025E7
-:1007C000240400013C020020020210241040000614
-:1007D000240201003C01000200310821AC229004F7
-:1007E000100000053C0200803C010002003108219D
-:1007F000AC2090043C02008002021024104000074C
-:10080000001219403C0200013C01000200230821B3
-:10081000AC22900C100000062404000100121140CC
-:100820003C01000200220821AC20900C24040001AD
-:100830000000282127B0001E0C00457C020030215A
-:1008400024040001000028210C00457C0200302116
-:10085000240400012405000127B0001C0C00457C85
-:100860000200302124040001240500010C00457C15
-:100870000200302110000077000000003C02FFEC75
-:100880003442FFFF020280243C020008020280255D
-:10089000001211403C01000200220821AC308FF808
-:1008A0003C02200002021024104000090000000059
-:1008B0003C0200018C426E441440000524020001F9
-:1008C0003C010001AC226F1C100000043C024000FF
-:1008D0003C010001AC206F1C3C02400002021024CD
-:1008E0001440001D24020E013C0300018C636F1CA8
-:1008F000AF8202383C010001AC206DB010600005F1
-:10090000240220203C010001AC226F2024020001BF
-:10091000AEE204B83C04BFFF001219403C020002E2
-:10092000004310218C428FF03C0500018CA56D988E
-:100930003484FFFF004410243C01000200230821FE
-:10094000AC228FF02402000110A20044000000003D
-:1009500010000040000000003C0200018C426F1CAF
-:100960001040001C240220003C010001AC226F203A
-:100970003C0300A0020310241443000500121140A0
-:100980003402A0003C0100011000002DAC226F20B9
-:100990003C030002006218218C638FF83C020020A7
-:1009A0000062102410400004240220013C010001D8
-:1009B00010000023AC226F203C0200800062102453
-:1009C0001040001F3402A0013C0100011000001C77
-:1009D000AC226F203C0200200202102410400007CD
-:1009E00000121940240201003C01000200230821EA
-:1009F000AC229004100000063C020080001211405E
-:100A00003C01000200220821AC2090043C0200803E
-:100A10000202102410400006001219403C0200019E
-:100A20003C0100020023082110000005AC22900CBC
-:100A3000001211403C01000200220821AC20900C61
-:100A40003C0300018C636D982402000110620003D6
-:100A5000000000000C003DAF000000008FBF003020
-:100A60008FB3002C8FB200288FB100248FB00020EC
-:100A700003E0000827BD003827BDFFB0AFB3003C3E
-:100A800000009821AFB500400000A821AFB10034AC
-:100A90000000882124020002AFBF0048AFBE00441E
-:100AA000AFB20038AFB00030AFA4002CA7A0001A3E
-:100AB000A7A00018A7A00020A7A0001EA7A00022A2
-:100AC00010A20130A7A0001C2CA2000310400005BA
-:100AD0002402000110A2000A3C0240001000025D46
-:100AE000022010212402000410A2020A240200089D
-:100AF00010A202080220102110000256000000007F
-:100B00008FA8002C000881403C03000200701821CF
-:100B10008C638FFC0062102414400009240400013F
-:100B20003C027FFF3442FFFF006288243C01000248
-:100B300000300821AC318FF4100002460220102151
-:100B4000240500010C00457C27A6001824040001A0
-:100B5000240500010C00457C27A6001897A2001868
-:100B600030420004104000D93C1140003C0200011A
-:100B70008C426F402443FFFF2C620006104000D9D6
-:100B8000000310803C010001002208218C226C68C7
-:100B900000400008000000002404000124050011AA
-:100BA00027B0001A0C00457C02003021240400010B
-:100BB000240500110C00457C0200302197A3001A87
-:100BC00030624000104000023C1500103C15000847
-:100BD00030628000104000AA3C130001100000A801
-:100BE0003C130002240400012405001427B0001A5D
-:100BF0000C00457C0200302124040001240500146F
-:100C00000C00457C0200302197A3001A30621000CE
-:100C1000104000023C1500103C150008306208002E
-:100C2000104000973C130001100000953C13000297
-:100C3000240400012405001927B0001C0C00457C89
-:100C40000200302124040001240500190C00457C19
-:100C50000200302197A2001C304307002402040048
-:100C600010620027286204011040000E24020200D6
-:100C70001062001F286202011040000524020100DA
-:100C80005062001E3C1300011000001E24040001ED
-:100C900024020300506200193C13000210000019E6
-:100CA00024040001240206001062000D28620601DF
-:100CB00010400005240205005062000B3C130002A6
-:100CC0001000001024040001240207001462000D2B
-:100CD000240400013C1300041000000A3C15000825
-:100CE000100000063C130004100000053C1500082D
-:100CF0003C130001100000023C1500083C150010D8
-:100D0000240400012405001827B0001E0C00457CB7
-:100D10000200302124040001240500180C00457C49
-:100D2000020030218FA8002C97A7001E0008114058
-:100D30003C06000200C230218CC68FF497A200222C
-:100D40003C10000126106C5C02002021AFA20010B4
-:100D500097A2001C3C05000C34A503030C002B3BA0
-:100D6000AFA200143C020004166200103C02000115
-:100D70008F84005424030001240200023C0100017E
-:100D8000AC236D9C3C010001AC226D983C0100013C
-:100D9000AC236DA43C010001AC236E243C01000196
-:100DA000AC246F301000004F02B388251662003962
-:100DB0003C0280003C0200018C426E201440001E68
-:100DC0002404001800002021000028210C004DDB25
-:100DD000340680008F8300548F82005402B388252C
-:100DE00010000002246300328F820054006210233E
-:100DF0002C4200331440FFFC000000008F8300549D
-:100E0000240200013C010001AC226E203C010001E3
-:100E1000AC226D9C3C010001AC226D983C010001AC
-:100E2000AC226DA43C010001AC226E243C01000107
-:100E30001000002CAC236F30000028210C004DDB8B
-:100E400024060404000020212405001E27A6001803
-:100E5000240200020C0045BEA7A2001800002021B9
-:100E60000000282127A600180C0045BEA7A00018E6
-:100E700024040018240500020C004DDB24060004A5
-:100E80003C0280000222102502B318251000001534
-:100E90000043882502221025027518250043882565
-:100EA0000200202197A6001C3C0700018CE76D98EA
-:100EB0003C05000C34A50326AFB300100C002B3BFF
-:100EC000AFB1001410000007000000003C11000248
-:100ED000023088218E318FFC3C027FFF3442FFFFBD
-:100EE000022288243C0200018C426DA81040001EA2
-:100EF000000000003C0200018C426F1C1040000208
-:100F00003C022000022288258FA8002C00081140F6
-:100F10003C010002002208218C22900010400003B6
-:100F20003C02002010000005022288253C02FFDF61
-:100F30003442FFFF022288248FA8002C00081140B1
-:100F40003C010002002208218C229008104000037E
-:100F50003C02008010000004022288253C02FF7F32
-:100F60003442FFFF022288248FA8002C0008114081
-:100F70003C01000200220821AC318FF41000013541
-:100F8000022010218FA8002C0008F1403C03000231
-:100F9000007E18218C638FF83C0240000062102410
-:100FA00014400009240400013C027FFF3442FFFF8B
-:100FB000006288243C010002003E0821AC318FF021
-:100FC0001000012402201021000028210C00457C83
-:100FD00027A6001824040001000028210C00457CED
-:100FE00027A60018240400012405000127B20020D0
-:100FF0000C00457C0240302124040001240500013E
-:101000000C00457C0240302124040001240500042A
-:1010100027B1001E0C00457C022030212404000171
-:10102000240500040C00457C02203021240400012A
-:101030002405000527B000220C00457C0200302169
-:1010400024040001240500050C00457C0200302129
-:1010500024040001240500100C00457C27A600187C
-:1010600024040001240500100C00457C27A600186C
-:10107000240400012405000A0C00457C02403021B4
-:10108000240400012405000A0C00457C02403021A4
-:1010900024040001240500180C00457C02203021A6
-:1010A00024040001240500180C00457C0220302196
-:1010B00024040001240500010C00457C27A600182B
-:1010C00024040001240500010C00457C27A600181B
-:1010D00097A2001830420004104000663C11400006
-:1010E0003C0300018C636F34240200051462006726
-:1010F000240400012405001927B0001C0C00457CC5
-:101100000200302124040001240500190C00457C54
-:101110000200302197A2001C304307002402040083
-:1011200010620027286204011040000E2402020011
-:101130001062001F28620201104000052402010015
-:101140005062001E3C1300011000001E3C0200040F
-:1011500024020300506200193C1300021000001921
-:101160003C020004240206001062000D2862060101
-:1011700010400005240205005062000B3C130002E1
-:10118000100000103C020004240207001462000D4D
-:101190003C0200043C1300041000000A3C15000847
-:1011A000100000063C130004100000053C15000868
-:1011B0003C130001100000023C1500083C15001013
-:1011C0003C020004126200173C0280008F8200542F
-:1011D000241000013C010001AC306D9C3C01000179
-:1011E000AC306D983C010001AC306DA43C010001B5
-:1011F000AC306E243C010001AC226F303C02000197
-:101200001662002202758825000020210000282196
-:101210000C004DDB340680003C0100011000001B77
-:10122000AC306E200222102502B318250043882519
-:1012300097A6001C3C0200018C426F1C3C07000179
-:101240008CE76D983C04000124846C5CAFA2001014
-:1012500097A2001E3C05000C34A503233C010001AD
-:10126000AC206E200C002B3BAFA200141000000736
-:10127000000000003C110002023E88218E318FF0F8
-:101280003C027FFF3442FFFF022288243C0200011F
-:101290008C426DA810400069000000003C02000173
-:1012A0008C426F1C104000023C0220000222882564
-:1012B0008FA8002C000811403C01000200220821E8
-:1012C0008C229004104000033C0200201000000516
-:1012D000022288253C02FFDF3442FFFF02228824DD
-:1012E0008FA8002C000811403C01000200220821B8
-:1012F0008C22900C104000033C0200801000004F34
-:10130000022288253C02FF7F3442FFFF1000004B81
-:10131000022288248FA8002C000829403C030002E8
-:10132000006518218C638FF83C0240000062102495
-:10133000144000083C027FFF3442FFFF0062882413
-:101340003C01000200250821AC318FF01000004163
-:10135000022010213C0200018C426DA81040003494
-:101360003C11C00C3C0200018C426E443C04C00C99
-:10137000348420003C0300018C636F1C0002102B9E
-:10138000000210230044102410600003005188253F
-:101390003C022000022288253C0200020045102168
-:1013A0008C429004104000033C0200201000000416
-:1013B000022288253C02FFDF3442FFFF02228824FC
-:1013C0008FA8002C000811403C01000200220821D7
-:1013D0008C22900C104000033C020080100000049E
-:1013E000022288253C02FF7F3442FFFF022288242C
-:1013F0003C0200018C426E30104000023C020800AA
-:10140000022288253C0200018C426E34104000020A
-:101410003C020400022288253C0200018C426E3806
-:10142000104000063C020100100000040222882542
-:101430003C027FFF3442FFFF006288248FA8002C0B
-:10144000000811403C01000200220821AC318FF05D
-:10145000022010218FBF00488FBE00448FB500408E
-:101460008FB3003C8FB200388FB100348FB00030A2
-:1014700003E0000827BD005027BDFFD0AFB2002811
-:1014800000809021AFBF002CAFB10024AFB000208E
-:101490008F8402003C1000018E106D988F86022010
-:1014A000240200021202005C2E020003104000051C
-:1014B000240200011202000A001219401000010C5F
-:1014C0000000000024020004120200BF24020008F1
-:1014D000120200BE00128940100001050000000049
-:1014E0003C05000200A328218CA58FFC3C100002C3
-:1014F000020380218E108FF43C02400000A21024D1
-:10150000104000383C020008020210241040002065
-:10151000348400023C020002004310218C429000FF
-:101520001040000534840020348401003C02002077
-:1015300010000006020280252402FEFF0082202403
-:101540003C02FFDF3442FFFF020280240012114000
-:101550003C010002002208218C2290081040000566
-:101560003C02000100C230253C0200801000001641
-:10157000020280253C02FFFE3442FFFF00C23024FD
-:101580003C02FF7F3442FFFF1000000F0202802464
-:101590002402FEDF008220243C02FFFE3442FFFFD3
-:1015A00000C230243C02FF5F3442FFFF020280246D
-:1015B0003C01000200230821AC2090003C01000205
-:1015C00000230821AC209008AF840200AF860220DF
-:1015D0008F82022034420002AF8202201000000AF3
-:1015E000001211403C02BFFF3442FFFF8F83020014
-:1015F000020280242402FFFD006218240C003DAF8B
-:10160000AF830200001211403C01000200220821B9
-:10161000100000B7AC308FF43C0200018C426F1C0C
-:101620001040006924050004240400010C00457CDE
-:1016300027A6001824040001240500050C00457CA1
-:1016400027A6001A97A3001897A2001A3C040001CD
-:1016500024846E4830630C0000031A8230420C0070
-:1016600000021282A7A2001A00021080004410217A
-:1016700000431021A7A30018904800002402000195
-:101680003103FFFF106200292862000210400005AC
-:101690000000000010600009000000001000003D84
-:1016A0000000000010700013240200031062002CE0
-:1016B0000000000010000037000000008F820200D0
-:1016C0002403FEFF00431024AF8202008F82022019
-:1016D0003C03FFFE3463FFFF00431024AF8202206F
-:1016E0003C010002AC2090043C01000210000032DA
-:1016F000AC20900C8F82020034420100AF820200C5
-:101700008F8202203C03FFFE3463FFFF004310245E
-:10171000AF820220240201003C010002AC229004AE
-:101720003C01000210000024AC20900C8F820200CB
-:101730002403FEFF00431024AF8202008F820220A8
-:101740003C03000100431025AF8202203C0100024F
-:10175000AC2090043C01000210000017AC23900C58
-:101760008F82020034420100AF8202008F82022089
-:101770003C03000100431025AF8202202402010037
-:101780003C010002AC2290043C0100021000000A5F
-:10179000AC23900C3C04000124846C8097A6001AB2
-:1017A00097A700183C05000134A5FFFFAFA8001063
-:1017B0000C002B3BAFA000148F82020034420002C9
-:1017C0001000004BAF820200001289403C0500026D
-:1017D00000B128218CA58FF83C1000020211802155
-:1017E0008E108FF03C02400000A210241440001024
-:1017F000000000003C0200018C426F1C14400005F8
-:101800003C02BFFF8F82020034420002AF8202001E
-:101810003C02BFFF3442FFFF0C003DAF02028024B8
-:101820003C0100020031082110000031AC308FF083
-:101830003C0200018C426F1C104000053C0200205D
-:101840003C0200018C426E44104000253C02002006
-:1018500000A210241040000734840020240201005C
-:101860003C01000200310821AC2290041000000667
-:10187000348401003C01000200310821AC209004B6
-:101880002402FEFF008220243C02008000A21024DB
-:1018900010400007001219403C0200013C01000208
-:1018A00000230821AC22900C1000000800C2302553
-:1018B000001211403C01000200220821AC20900CD3
-:1018C0003C02FFFE3442FFFF00C23024AF8402001E
-:1018D000AF8602208F82022034420002AF820220B3
-:1018E000001211403C01000200220821AC308FF0B0
-:1018F0008FBF002C8FB200288FB100248FB0002042
-:1019000003E0000827BD003000000000000018219F
-:10191000308400FF2405FFDF2406FFBF00641007AA
-:101920003042000110400004000000008F8200449B
-:1019300010000003344200408F820044004610240F
-:10194000AF8200448F82004434420020AF820044C2
-:101950008F82004400451024AF82004424630001BC
-:10196000286200085440FFEE0064100703E00008FE
-:10197000000000002C8200081040001B0000000046
-:101980002405FFDF2406FFBF000418803C0200018D
-:1019900024426E60006218212464000490620000FA
-:1019A00010400004000000008F820044100000037B
-:1019B000344200408F82004400461024AF8200442D
-:1019C0008F82004434420020AF8200448F82004462
-:1019D00000451024AF820044246300010064102BF2
-:1019E0001440FFEE0000000003E0000800000000CB
-:1019F0000000000000000000000000008F8400C410
-:101A00008F8600E08F8700E42402FFF800C22824BC
-:101A100010E5001A27623FF814E2000224E80008EB
-:101A200027683000550500048D0A000030C200040C
-:101A300014400012008050218CE900008F42013CCC
-:101A4000014948230049182B94EB0006106000025E
-:101A500025630050004948210123182B5040000302
-:101A60008F4201FC03E0000800E01021AF8800E88D
-:101A700024420001AF4201FCAF8800E403E000080B
-:101A80000000102103E00008000000008F8300E444
-:101A900027623FF81062000424620008AF8200E869
-:101AA00003E00008AF8200E427623000AF8200E864
-:101AB00003E00008AF8200E403E00008000000003B
-:101AC0000000000000000000000000008F880120DE
-:101AD00027624FE08F8301281502000225090020AC
-:101AE00027694800112300128FA20010AD040000E6
-:101AF000AD050004AD060008A507000E8FA3001475
-:101B0000AD0200188FA20018AD03001C25030016BB
-:101B1000AD020010AD030014AF8901208F4300FC1B
-:101B2000240200012463FFFF03E00008AF4300FC30
-:101B30008F430324000010212463000103E0000808
-:101B4000AF43032403E00008000000008F88010079
-:101B5000276247E08F830108150200022509002053
-:101B6000276940001123000F8FA20010AD04000070
-:101B7000AD050004AD060008A507000E8FA30014F4
-:101B8000AD0200188FA20018AD03001C250300163B
-:101B9000AD020010AD030014AF89010003E000089E
-:101BA000240200018F430328000010212463000158
-:101BB00003E00008AF43032803E000080000000032
-:101BC00000000000000000000000000024486561E3
-:101BD0006465723A202F70726F6A656374732F7236
-:101BE00063732F73772F67652F2E2F6E69632F66B0
-:101BF00077322F636F6D6D6F6E2F66776D61696ED3
-:101C00002E632C7620312E312E322E343520313970
-:101C100039392F30312F32342030303A31303A35A3
-:101C20003520736875616E67204578702024000048
-:101C3000657674526E674600516576744600000002
-:101C400051657674505F46004D657674526E6746F6
-:101C5000000000004D516576744600004D516576D8
-:101C6000505F46005173436F6E495F4600000000AD
-:101C70005173436F6E734600517250726F64460029
-:101C80006261644D656D537A0000000068775665A7
-:101C900072000000626164487756657200000000BF
-:101CA0002A2A4441574E5F41000000007478527860
-:101CB0004266537A00000000626641746E4D726B9A
-:101CC000000000007265645A6F6E6531000000000C
-:101CD000706369436F6E660067656E436F6E660082
-:101CE0002A646D615244666C000000002A50414E27
-:101CF00049432A002E2E2F2E2E2F2E2E2F2E2E2F02
-:101D00002E2E2F7372632F6E69632F6677322F63C7
-:101D10006F6D6D6F6E2F66776D61696E2E6300005B
-:101D2000726362466C616773000000006261645216
-:101D30007852636200000000676C6F62466C6773E4
-:101D4000000000002B5F646973705F6C6F6F700040
-:101D50002B65765F68616E646C65720063616E749A
-:101D600031446D61000000002B715F646D615F7430
-:101D70006F5F6E69635F636B73756D002B685F7374
-:101D8000656E645F646174615F72656164795F63ED
-:101D90006B73756D000000002B685F646D615F728E
-:101DA000645F6173736973745F636B73756D000057
-:101DB00074436B736D4F6E002B715F646D615F7464
-:101DC0006F5F6E69630000002B685F73656E645F10
-:101DD000646174615F726561647900002B685F649F
-:101DE0006D615F72645F61737369737400000000FA
-:101DF00074436B736D4F6666000000002B685F7361
-:101E0000656E645F62645F72656164790000000002
-:101E10006873745352696E67000000006261645316
-:101E200052696E67000000006E69635352696E6705
-:101E30000000000077446D61416C6C4100000000BF
-:101E40002B715F646D615F746F5F686F73745F6344
-:101E50006B73756D000000002B685F6D61635F72CE
-:101E6000785F636F6D705F636B73756D000000006A
-:101E70002B685F646D615F77725F61737369737400
-:101E80005F636B73756D000072436B736D4F6E0013
-:101E90002B715F646D615F746F5F686F73740000B6
-:101EA0002B685F6D61635F72785F636F6D700000B8
-:101EB0002B685F646D615F77725F617373697374C0
-:101EC0000000000072436B736D4F666600000000F7
-:101ED0002B685F726563765F62645F7265616479C7
-:101EE000000000002B685F726563765F6A756D6243
-:101EF0006F5F62645F726561647900002B685F7276
-:101F00006563765F6D696E695F62645F7265616467
-:101F1000790000002B6D685F636F6D6D616E64000A
-:101F20002B685F74696D6572000000002B685F6448
-:101F30006F5F7570646174655F74785F636F6E73F3
-:101F4000000000002B685F646F5F757064617465EA
-:101F50005F72785F70726F64000000002B636B73B8
-:101F6000756D3136000000002B7065656B5F6D612B
-:101F7000635F72785F7761002B7065656B5F6D6181
-:101F8000635F7278000000002B6465715F6D6163B0
-:101F90005F7278002B685F6D61635F72785F617458
-:101FA000746E0000626164526574537A0000000030
-:101FB000727842644266537A000000002B6E756CA2
-:101FC0006C5F68616E646C657200000066774F70CC
-:101FD0004661696C000000002B685F757064617475
-:101FE000655F6C65643400002B685F7570646174B4
-:101FF000655F6C65643600002B685F7570646174A2
-:10200000655F6C6564320000696E74537461746559
-:10201000000000002A2A696E697443700000000005
-:102020002373637265616D0069537461636B4572FC
-:102030000000000070726F62654D656D0000000069
-:102040002A2A4441574E5F42000000002B73775FFD
-:10205000646D615F6173736973745F706C75735FD6
-:1020600074696D65720000002B267072656C6F617B
-:10207000645F77725F646573637200002B26707211
-:10208000656C6F61645F72645F64657363720000A6
-:102090002B685F68665F74696D65720024486561CE
-:1020A0006465723A202F70726F6A656374732F7261
-:1020B00063732F73772F67652F2E2F6E69632F66DB
-:1020C00077322F636F6D6D6F6E2F74696D65722E31
-:1020D000632C7620312E312E322E33352031393992
-:1020E000392F30312F32372031393A30393A3530C3
-:1020F0002068617965732045787020240000000015
-:10210000657674526E67460051657674460000002D
-:1021100051657674505F46004D657674526E674621
-:10212000000000004D516576744600004D51657603
-:10213000505F46005173436F6E495F4600000000D8
-:102140005173436F6E734600517250726F64460054
-:10215000542D446D6152643200000000542D446DD2
-:102160006152643100000000542D446D615264429C
-:1021700000000000542D446D6157723200000000D1
-:10218000542D446D6157723100000000542D446D90
-:1021900061577242000000000000000024486561A1
-:1021A0006465723A202F70726F6A656374732F7260
-:1021B00063732F73772F67652F2E2F6E69632F66DA
-:1021C00077322F636F6D6D6F6E2F636F6D6D616E04
-:1021D000642E632C7620312E312E322E323820316F
-:1021E0003939392F30312F32302031393A34393AB8
-:1021F000343920736875616E67204578702024003B
-:10220000657674526E67460051657674460000002C
-:1022100051657674505F46004D657674526E674620
-:10222000000000004D516576744600004D51657602
-:10223000505F46005173436F6E495F4600000000D7
-:102240005173436F6E734600517250726F64460053
-:102250003F48636D644D6278000000003F636D6429
-:1022600048737453000000003F636D644D634D6418
-:10227000000000003F636D6450726F6D000000004D
-:102280003F636D644C696E6B000000003F636D64DA
-:1022900045727200000086AC00008E5C00008E5C0F
-:1022A00000008DE400008B7800008E3000008E5C12
-:1022B00000008790000088000000899000008A6874
-:1022C00000008A3400008E5C0000887000008B24BF
-:1022D00000008E5C00008B34000087B4000088246E
-:1022E00000000000000000000000000024486561BC
-:1022F0006465723A202F70726F6A656374732F720F
-:1023000063732F73772F67652F2E2F6E69632F6688
-:1023100077322F636F6D6D6F6E2F6D636173742EE7
-:10232000632C7620312E312E322E38203139393837
-:102330002F31322F30382030323A33363A3336208C
-:10234000736875616E672045787020240000000076
-:10235000657674526E6746005165767446000000DB
-:1023600051657674505F46004D657674526E6746CF
-:10237000000000004D516576744600004D516576B1
-:10238000505F46005173436F6E495F460000000086
-:102390005173436F6E734600517250726F64460002
-:1023A0006164644D63447570000000006164644DB5
-:1023B0006346756C0000000064656C4D634E6F45AC
-:1023C00000000000000000000000000024486561DB
-:1023D0006465723A202F70726F6A656374732F722E
-:1023E00063732F73772F67652F2E2F6E69632F66A8
-:1023F00077322F636F6D6D6F6E2F646D612E632C5E
-:102400007620312E312E322E323420313939382F88
-:1024100031322F32312030303A33333A3039207371
-:102420006875616E67204578702024006576745267
-:102430006E674600516576744600000051657674FB
-:10244000505F46004D657674526E6746000000008E
-:102450004D516576744600004D516576505F4600DB
-:102460005173436F6E495F46000000005173436F24
-:102470006E734600517250726F6446007377446DFC
-:10248000614F66660000000031446D614F6E0000D0
-:102490007377446D614F6E002372446D6141544EF9
-:1024A0000000000072446D6141544E300000000095
-:1024B00072446D6141544E310000000072446D6100
-:1024C000344762002A50414E49432A002E2E2F2EB7
-:1024D0002E2F2E2E2F2E2E2F2E2E2F7372632F6E19
-:1024E00069632F6677322F636F6D6D6F6E2F646D2A
-:1024F000612E63002377446D6141544E000000005B
-:1025000077446D6141544E300000000077446D61A6
-:1025100041544E310000000077446D613447620041
-:102520000000000000000000000000002448656179
-:102530006465723A202F70726F6A656374732F72CC
-:1025400063732F73772F67652F2E2F6E69632F6646
-:1025500077322F636F6D6D6F6E2F74726163652EAE
-:10256000632C7620312E312E322E352031393938F8
-:102570002F30392F33302031383A35303A32382045
-:10258000736875616E672045787020240000000034
-:102590000000000000000000000000002448656109
-:1025A0006465723A202F70726F6A656374732F725C
-:1025B00063732F73772F67652F2E2F6E69632F66D6
-:1025C00077322F636F6D6D6F6E2F646174612E6350
-:1025D0002C7620312E312E322E31322031393939BC
-:1025E0002F30312F32302031393A34393A353120D9
-:1025F000736875616E6720457870202400000000C4
-:1026000046575F56455253494F4E3A202331204694
-:1026100072692041707220372031373A35373A35A8
-:1026200032205044542032303030000046575F434F
-:102630004F4D50494C455F54494D453A2031373A4A
-:1026400035373A353200000046575F434F4D504909
-:102650004C455F42593A206465767263730000000E
-:1026600046575F434F4D50494C455F484F53543A8E
-:1026700020636F6D707574650000000046575F43FE
-:102680004F4D50494C455F444F4D41494E3A2065AE
-:102690006E672E616374656F6E2E636F6D00000050
-:1026A00046575F434F4D50494C45523A206763634C
-:1026B0002076657273696F6E20322E372E320000DD
-:1026C00000000000120411000000000024486561B1
-:1026D0006465723A202F70726F6A656374732F722B
-:1026E00063732F73772F67652F2E2F6E69632F66A5
-:1026F00077322F636F6D6D6F6E2F6D656D2E632C4E
-:102700007620312E312E322E3520313939382F3086
-:10271000392F33302031383A35303A303820736829
-:1027200075616E672045787020240000244865613B
-:102730006465723A202F70726F6A656374732F72CA
-:1027400063732F73772F67652F2E2F6E69632F6644
-:1027500077322F636F6D6D6F6E2F73656E642E63AE
-:102760002C7620312E312E322E3434203139393826
-:102770002F31322F32312030303A33333A31382052
-:10278000736875616E672045787020240000000032
-:10279000657674526E674600516576744600000097
-:1027A00051657674505F46004D657674526E67468B
-:1027B000000000004D516576744600004D5165766D
-:1027C000505F46005173436F6E495F460000000042
-:1027D0005173436F6E734600517250726F644600BE
-:1027E00069736E745463705500000000244865617D
-:1027F0006465723A202F70726F6A656374732F720A
-:1028000063732F73772F67652F2E2F6E69632F6683
-:1028100077322F636F6D6D6F6E2F726563762E63E7
-:102820002C7620312E312E322E3533203139393964
-:102830002F30312F31362030323A35353A3433208B
-:10284000736875616E672045787020240000000071
-:10285000657674526E6746005165767446000000D6
-:1028600051657674505F46004D657674526E6746CA
-:10287000000000004D516576744600004D516576AC
-:10288000505F46005173436F6E495F460000000081
-:102890005173436F6E734600517250726F644600FD
-:1028A000724D616343686B300000000072784672BD
-:1028B0006D324C670000000072784E6F53744264B2
-:1028C0000000000072784E6F4D6942640000000005
-:1028D00072784E6F4A6D4264000000007278436B5C
-:1028E000446D614600000000727851446D457846A1
-:1028F00000000000727851446D61460072785144C6
-:102900004C42644600000000727851446D426446B7
-:1029100000000000727843726350616400000000A0
-:1029200072536D51446D614600000000244865619A
-:102930006465723A202F70726F6A656374732F72C8
-:1029400063732F73772F67652F2E2F6E69632F6642
-:1029500077322F636F6D6D6F6E2F6D61632E632CF9
-:102960007620312E312E322E323220313939382F25
-:1029700031322F30382030323A33363A3330207308
-:102980006875616E67204578702024006576745202
-:102990006E67460051657674460000005165767496
-:1029A000505F46004D657674526E67460000000029
-:1029B0004D516576744600004D516576505F460076
-:1029C0005173436F6E495F46000000005173436FBF
-:1029D0006E734600517250726F6446006D616354AD
-:1029E000687265730000000023744D616341544EAA
-:1029F0000000000023724D616341544E000000004E
-:102A000072656D4173737274000000006C696E6BC7
-:102A1000444F574E000000006C696E6B555000002B
-:102A20000000000000000000000000002448656174
-:102A30006465723A202F70726F6A656374732F72C7
-:102A400063732F73772F67652F2E2F6E69632F6641
-:102A500077322F636F6D6D6F6E2F636B73756D2E95
-:102A6000632C7620312E312E322E392031393939EE
-:102A70002F30312F31342030303A30333A3438204F
-:102A8000736875616E67204578702024000000002F
-:102A9000657674526E674600516576744600000094
-:102AA00051657674505F46004D657674526E674688
-:102AB000000000004D516576744600004D5165766A
-:102AC000505F46005173436F6E495F46000000003F
-:102AD0005173436F6E734600517250726F644600BB
-:102AE00000000000000000000000000050726F6253
-:102AF00065506879000000006C6E6B41535352546E
-:102B000000000000000109A400010A1C00010A5095
-:102B100000010A7C0001105000010AA800010B10FE
-:102B2000000111FC00010DC000010C6800010C80C7
-:102B300000010CC400010CEC00010D0C00010D346F
-:102B4000000111FC00010DC000010DF800010E1084
-:102B500000010E4000010E6800010E8800010EB059
-:102B60000000000000010FDC000110080001102C23
-:102B7000000111FC00011050000110780001110843
-:102B80000000000000000000000000000001186CC0
-:102B90000001193C00011A1400011AE400011B4055
-:102BA00000011C1C00011C4400011D2000011D48E7
-:102BB00000011EF000011F18000120C0000122B812
-:102BC0000001254C000124600001254C00012578FE
-:102BD000000120E8000122907273745F676D6969DB
-:102BE00000000000000126080001264000012728FF
-:102BF00000013374000133B4000133CC7365746C8D
-:102C00006F6F7000000000000000000000013BBC7E
-:102C100000013BFC00013C8C00013CD000013D3434
-:102C200000013DC000013DF400013E7C00013F1465
-:102C300000013FE400014024000140A8000140CC15
-:102C4000000141DC646F4261736550670000000061
-:102C500000000000000000000000000073746D61BF
-:102C6000634C4E4B000000006765746D636C6E6BC7
-:102C70000000000000014ED800014ED800014B8C2E
-:102C800000014BD800014C2400014ED87365746DCF
-:102C90006163616374000000000000000000000038
-:102CA0000000000000000000000000000000000024
-:102CB0000000000000000000000000000000000014
-:102CC0000000000000000000000000000000000103
-:102CD000000000010000000100C001FC00003FFCFA
-:102CE00000C00000416C74656F6E204163654E4901
-:102CF000432056000000000000000000000000001B
-:102D0000000000000000000000000000416C74653D
-:102D10006F6E204163654E49432056004242424255
-:102D2000000000000000000000000000001FFFFC89
-:102D3000001FFF7C000000000000000000000000F9
-:102D40000000000000000000000000000060CF0054
-:102D500000000060CF000000000000000000000044
-:102D60000000000000000000000000000000000063
-:102D70000000000000000000000000000000000053
-:102D80000000000000000000000000000000000043
-:102D90000000000000000000000000000000000033
-:102DA0000000000000000000000000030000000020
-:102DB0000000000100000000000000000000000012
-:102DC0000000000100000000000000010000000001
-:102DD00000000000000000000000000000000001F2
-:102DE00000000001000000000000000000000000E2
-:102DF00000000000000000000100000021000000B1
-:102E0000120001400000000000000000200000004F
-:102E1000120000A0000000001200006012000180FB
-:102E2000120001E0000000000000000000000000AF
-:102E30000000000100000000000000000000000091
-:102E40000000000000000000000000000000000280
-:102E5000000000000000000000030001000000016D
-:102E60000003020100000000000000000101010158
-:102E70000101010000010100010100010001000148
-:0C2E800001000101000001010000000041
-:00000001FF
-/* tg2 firmware v12.4.11 */
diff --git a/firmware/adaptec/starfire_rx.bin.ihex b/firmware/adaptec/starfire_rx.bin.ihex
deleted file mode 100644
index 6b1fae0d18eb..000000000000
--- a/firmware/adaptec/starfire_rx.bin.ihex
+++ /dev/null
@@ -1,53 +0,0 @@
-:10000000010003DC00000000040004210000008661
-:10001000800000150000180E8100001500006664C5
-:100020001A0040AB00000B06142000110000000075
-:10003000142040220000AAAA14204022000003003D
-:1000400014204022000000001A0040AB00000B14F6
-:1000500014200011000000008300001500000002C1
-:10006000040000210000000000000010000000005B
-:1000700004000421000000870000001000000000C0
-:1000800000000010000000000000801500000000CB
-:100090000000003E00000000000000100000000012
-:1000A0008200001500004000009E8050000000000B
-:1000B000030080150000000086008015000000008D
-:1000C00082000015000080000100001C00000000FC
-:1000D000000050A00000010C4E20D011000060086C
-:1000E0001420D012000040080000F09000007000C2
-:1000F0000000C8B0000030000000404000000000D8
-:10010000001080150000000000A2C1500000400057
-:1001100000A400B000000014000000200000000057
-:100120002500400D0000252500047220000031004C
-:10013000009340700000000000000020000000005C
-:1001400000924460000001842B20C01100000000D8
-:100150000000C42000000540360140180000422D78
-:100160001420001100000000009244600000018390
-:100170003200001F0000003402AC00150000000235
-:1001800000A601100000000842200011000000003D
-:1001900000924060000001030000001E000000000B
-:1001A00000000020000001000000001E0000000010
-:1001B00000924460000000860000408000000000C3
-:1001C0000092C0700000000000924060000001003A
-:1001D0000000C8900000500000A6C1100000000000
-:1001E00000B0C09000000012021C001500000000CA
-:1001F0003200001F0000003400924460000005102F
-:100200004421001100000000420000110000000025
-:1002100083000015000000400092446000000508C3
-:100220004501401800004545008080500000000056
-:10023000622080120000000082000015000008000B
-:100240001520001100000000000000100000000058
-:10025000000000100000000000000010000000007E
-:10026000000000100000000000000010000000006E
-:10027000800000150000EEA4810000150000005F62
-:1002800000000060000000000000412000000000AD
-:1002900000004A000000400000924460000001900D
-:1002A0005601401A000059561400001100000000C9
-:1002B0000093405000000018009300500000001808
-:1002C0003601403A0000002D000643A9000000005E
-:1002D0000000C420000001405601401A0000595699
-:1002E00014000011000000000000001000000000D9
-:1002F0000000001000000000000642A900000000FD
-:1003000000024420000001835601401A00005956A3
-:1003100082000015000020001520001100000000E0
-:1003200082000015000000101520001100000000E0
-:1003300082000015000000101520001100000000D0
-:00000001FF
diff --git a/firmware/adaptec/starfire_tx.bin.ihex b/firmware/adaptec/starfire_tx.bin.ihex
deleted file mode 100644
index 6b1fae0d18eb..000000000000
--- a/firmware/adaptec/starfire_tx.bin.ihex
+++ /dev/null
@@ -1,53 +0,0 @@
-:10000000010003DC00000000040004210000008661
-:10001000800000150000180E8100001500006664C5
-:100020001A0040AB00000B06142000110000000075
-:10003000142040220000AAAA14204022000003003D
-:1000400014204022000000001A0040AB00000B14F6
-:1000500014200011000000008300001500000002C1
-:10006000040000210000000000000010000000005B
-:1000700004000421000000870000001000000000C0
-:1000800000000010000000000000801500000000CB
-:100090000000003E00000000000000100000000012
-:1000A0008200001500004000009E8050000000000B
-:1000B000030080150000000086008015000000008D
-:1000C00082000015000080000100001C00000000FC
-:1000D000000050A00000010C4E20D011000060086C
-:1000E0001420D012000040080000F09000007000C2
-:1000F0000000C8B0000030000000404000000000D8
-:10010000001080150000000000A2C1500000400057
-:1001100000A400B000000014000000200000000057
-:100120002500400D0000252500047220000031004C
-:10013000009340700000000000000020000000005C
-:1001400000924460000001842B20C01100000000D8
-:100150000000C42000000540360140180000422D78
-:100160001420001100000000009244600000018390
-:100170003200001F0000003402AC00150000000235
-:1001800000A601100000000842200011000000003D
-:1001900000924060000001030000001E000000000B
-:1001A00000000020000001000000001E0000000010
-:1001B00000924460000000860000408000000000C3
-:1001C0000092C0700000000000924060000001003A
-:1001D0000000C8900000500000A6C1100000000000
-:1001E00000B0C09000000012021C001500000000CA
-:1001F0003200001F0000003400924460000005102F
-:100200004421001100000000420000110000000025
-:1002100083000015000000400092446000000508C3
-:100220004501401800004545008080500000000056
-:10023000622080120000000082000015000008000B
-:100240001520001100000000000000100000000058
-:10025000000000100000000000000010000000007E
-:10026000000000100000000000000010000000006E
-:10027000800000150000EEA4810000150000005F62
-:1002800000000060000000000000412000000000AD
-:1002900000004A000000400000924460000001900D
-:1002A0005601401A000059561400001100000000C9
-:1002B0000093405000000018009300500000001808
-:1002C0003601403A0000002D000643A9000000005E
-:1002D0000000C420000001405601401A0000595699
-:1002E00014000011000000000000001000000000D9
-:1002F0000000001000000000000642A900000000FD
-:1003000000024420000001835601401A00005956A3
-:1003100082000015000020001520001100000000E0
-:1003200082000015000000101520001100000000E0
-:1003300082000015000000101520001100000000D0
-:00000001FF
diff --git a/firmware/advansys/3550.bin.ihex b/firmware/advansys/3550.bin.ihex
deleted file mode 100644
index 6809b0d84e4f..000000000000
--- a/firmware/advansys/3550.bin.ihex
+++ /dev/null
@@ -1,317 +0,0 @@
-:10000000DD2DD504000000F200F0001618E400FC1D
-:10001000010048E4BE18188003F6020000FAFFFF52
-:10002000280E9EE7FF0082E700EA00F601E609E7F6
-:1000300055F001F601FA08000300040018F410005E
-:1000400000EC85F0BC00D5F08E0C385400E61EF0B4
-:1000500086F0B4009857D0010C1C3E1C0C00BB006D
-:10006000AA18028032F001FC880CC6120213184054
-:10007000005701EA3C006C016E0104123E570080FB
-:1000800003E6B600C00001013E01DA0F221008129B
-:10009000024AB95403581B8030E44BE4200032007C
-:1000A0003E00800024013C0168016A017001720178
-:1000B000740176017801620A920C2C102E1006133E
-:1000C0004C1CBB553C5604804AE402EE5BF0B1F098
-:1000D00003F706F703FC0F004000BE000001B00864
-:1000E00030136415321C381C4E1C10440248004C5E
-:1000F00004EA5DF004F602FC0500340036009800C6
-:10010000CC0020014E014E0B1E0E0C100A120413DF
-:100110004013301C004EBD56068300DC05F009F08C
-:1001200059F0A7F0B8F00EF70600190033009B0055
-:10013000A400B500BA00D000E100E700DE03560AD3
-:10014000140E021004100A1036100A131213521360
-:1001500010151415AC16201C341C361C08443844E9
-:1001600091440A454846014868548355B0570158A0
-:10017000835905E60BF00CF05CF04BF404F805F83D
-:1001800002FA03FA04FC05FC07000A000D001C003B
-:100190009E00A800AA00B900E00022012601790112
-:1001A0007A01C001C2017C025A03EA04E807680828
-:1001B0006908BA08E909060B3A0E00101A10ED108A
-:1001C000F11006120C1316131E1382134214D614C8
-:1001D0008A15C617D2176B18121C461C9C32004099
-:1001E0000E47484741488948804C00544455E555DE
-:1001F00014567757BF57405C0680089003A1FE9CB9
-:10020000F02902FEB80CFF100000D0FECC1800CF81
-:10021000FE8001FF030000FE9315FE0F05FF38006E
-:1002200000FE572400FE48004FFF04000010FF09A5
-:100230000000FF080101FF08FFFFFF270000FF107B
-:10024000FFFFFF0F0000FE7856FE3412FF21000072
-:10025000FE04F7CF2A670B01FECE0EFE04F7CF6730
-:100260000B3C2AFE3DF0FE0202FE20F09CFE91F0C7
-:10027000FEF001FE90F0FEF001FE8FF09C05513B78
-:1002800002FED40C01FE440DFEDD12FEFC10FE2821
-:100290001C05FEA600FED3124718FEA600B5FE48B8
-:1002A000F0FE8602FE49F0FEA002FE4AF0FEBE020B
-:1002B000FE46F0FE5002FE47F0FE5602FE43F0FE00
-:1002C0004402FE44F0FE4802FE45F0FE4C02170BCD
-:1002D000A0170618960229FE001CDEFE021CDDFE99
-:1002E0001E1CFEE91001FE2017FEE710FE06FCC7EB
-:1002F0000A6B019E0229144D379701FE640F0A6BA9
-:100300000182FEBD100A6B0182FEAD10FE161CFEBE
-:10031000581C170618962A2529FE3DF0FE020221D8
-:10032000FE9402FE5A1CEAFE141C14FE300037979D
-:1003300001FE540F1706189602D01E20071034FE37
-:10034000691017061896FE04EC20463D1220FE05A3
-:10035000F6C701FE5216094A4C35112D3C8A01E6BA
-:1003600002290A40010E07005D016FFE1810FE41D0
-:10037000580A99010EFEC85464FE0C0301E60229D6
-:100380002A46FE02E827F8FE9E43F7FE27F0FEDC31
-:1003900001FE074BFE20F09CFE401C25D2FE26F0FD
-:1003A000FE5603FEA0F0FE4403FE11F09CFEEF108B
-:1003B000FE9FF0FE6403EB0FFE1100025A2AFE4876
-:1003C0001CEB09041DFE1813231E98AC12980A405A
-:1003D000010EAC7501FEBC1511CA25D2FE01F0D28A
-:1003E000FE82F0FE9203EC11FEE40065FEA40325FC
-:1003F000321FFEB4030143FE06F0FEC4038D81FEEE
-:100400000AF0FE7A060222056B2816FEF604142C6A
-:1004100001338FFE660202D1EB2A671AFE671BF8D2
-:10042000F7FE481C70016E870A40010E070016D3C4
-:100430000ACA010E7460597627056B28FE10121443
-:100440002C01338FFE660202D1BC7DBD7F25226563
-:10045000FE3C041FFE380468FEA000FE9B57FE4EC3
-:10046000122BFF02001001081FFEE0042B01081FE1
-:1004700022302ED5FE4C44FE4C1260FE4448132C14
-:10048000FE4C5464D3467627FAEFFE621309041D2E
-:10049000FE2A132F077EA5FE2010132CFE4C546459
-:1004A000D3FAEF8609041DFE08132F077E6E090498
-:1004B0001DFE1C1214920904063B14C401338FFE66
-:1004C000700C02222B11FEE600FE1C90F903149220
-:1004D00001330229FE425B671AFE4659F8F7FE8790
-:1004E00080FE31E44F09040BFE7813FE2080071ACA
-:1004F000FE7012490406FE601305FEA2002816FED7
-:100500008005FE31E46A49040BFE4A1305FEA00093
-:1005100028FE42125E01082532F1010826FE9805E8
-:1005200011FEE3002349FE4AF0FE6A05FE49F0FE93
-:1005300064058324FE2100A124FE2200A0244CFE99
-:100540000948010826FE9805FEE2084904C53B015A
-:1005500086240612CC37FE270109041DFE2212470D
-:1005600001A714920904063B14C401338FFE700CDA
-:10057000022205FE9C0028FE3E12055028FE36137E
-:100580004701A726FE08060A06490419FE02125F63
-:1005900001FEAA141FFEFE05119A014311FEE5009B
-:1005A0000550B40C5005C628FE6212053F28FE5ABD
-:1005B0001301FE141801FE6618FE4348B719136CA8
-:1005C000FF020057488B1C3D85B7694701A726FEEF
-:1005D000720649041BDF890A4D01FED8141FFE680C
-:1005E00006119A014311FEE500053FB40C3F1706C2
-:1005F00001A7EC7270016E8711FEE200010825323E
-:10060000FE0AF0FEA6068CFE5C07FE06F0FE6407FE
-:100610008D81022209040BFE2E12151A0108150005
-:1006200001081500010815000108FE99A40108152C
-:100630000002FE320861041BFE381209041B6E150D
-:10064000FE1B000108150001081500010815000136
-:100650000815060108150002D9664CFE3A555FFEE2
-:100660009A814B1DBAFE32070A1DFE096FAFFECA02
-:1006700045FE3212622C85667B01082532FE0AF0A7
-:10068000FE32078D818CFE5C070222014302FE8A46
-:1006900006151902FE8A06FE9CF7D4FE2C90FEAECB
-:1006A0009077FECA070C541855094A6A351E200770
-:1006B00010FE0E1274FE808037206327FE0610FEA7
-:1006C00083E7C4A1FE0340094A4F3501A8ADFE1FD0
-:1006D00040125801A5FE0850FE8A50FE4451FEC645
-:1006E0005183FBFE8A900C521853FE0C90FE8E90A4
-:1006F000FE4050FEC2500C39183AFE4A1009046AF6
-:10070000FE2A12FE2C90FEAE900C54185509044F90
-:100710008501A8FE1F801258FE4490FEC6900C561C
-:100720001857FBFE8A900C521853FE4090FEC29060
-:100730000C39183A0C38184E094A19352A13FE4E4E
-:100740001165FE4808FE9EF0FE5C08B116322A7361
-:10075000DDB8FE8008B9FE9E088CFE7408FE06F027
-:10076000FE7A088D8102220143FEC9101519FEC9C7
-:1007700010610406FE101261040B4509040BFE68AB
-:1007800012FE2E1C02FE240A6104064561040BFEC3
-:100790005212FE2C1CFEAAF0FE1E09FEACF0FEBE9C
-:1007A00008FE8A10AAFEF310FEADF0FECA0802FE93
-:1007B000240AABFEE710FE2BF09DE91CFE00FEFEB6
-:1007C0001C12B5FED2F09DFE76181C1A169D05CBA4
-:1007D0001C06169DB86DB96DAAABFEB110705E2BEC
-:1007E000149201330FFE3500FE01F05A0F7C025ABD
-:1007F000FE74181CFE00F8166D671B01FE440D3BCD
-:1008000001E61E2774671A026D09040B21FE060A11
-:1008100009046AFE8212090419FE66131E58ACFC14
-:10082000FE8380FEC844FE2E13FE0491FE86916373
-:1008300027FE4059FEC15977D7055431550C7B1816
-:100840007CBE54BF5501A8AD63271258C038C14EB5
-:1008500079566857F4F5FE04FA38FE05FA4E01A5FC
-:10086000A2230C7B0C7C79566857FE1210090419E0
-:1008700016D77939683A0904FEF700350552315325
-:10088000FE1058FE9158FE1459FE9559026D090448
-:100890001916D70904FEF70035FE3A55FE19815F97
-:1008A000FE1090FE9290FED7102F079B16FEC608F2
-:1008B000119B09040BFE14130539313A77FEC60863
-:1008C000FE0C58FE8D58026D2347FE1980DE090488
-:1008D0000BFE1A12FE6C19FE1941E9B5FED1F0D9D2
-:1008E000147A01330FFE4400FE8E10FE6C19BE39DF
-:1008F000FEED19BF3AFE0C51FE8E51E91CFE00FFC1
-:1009000034FE7410B5FED2F0FEB20AFE76181C1A40
-:100910008405CB1C06FE08130FFE1600025AFED1FA
-:10092000F0FEC40A147A01330FFE1700FE4210FED7
-:10093000CEF0FECA0AFE3C10FECDF0FED60A0FFE37
-:100940002200025AFECBF0FEE20A0FFE2400025AF9
-:10095000FED0F0FEEC0A0F93DCFECFF0FEF60A0F9D
-:100960004CFE1010FECCF0D96104193B0FFE1200B2
-:100970002A13FE4E1165FE0C0BFE9EF0FE200BB1FD
-:1009800016322A73DDB822B9222AEC65FE2C0B251B
-:10099000328CFE480B8D81B8D4B9D402220143FEBB
-:1009A000DB1011FEE800AAAB70BC7DBD7FFE89F0B4
-:1009B00022302ED8BC7DBD7F01081F22302ED6B13B
-:1009C000450FFE4200025A7806FE814916FE380C99
-:1009D00009040BFE44130F004B0BFE54124BFE2870
-:1009E0000021FEA60C0A40010E07005D3EFE280015
-:1009F000FEE21001E701E80A9901FE320E59112DBD
-:100A0000016F02290FFE44004B0BDF3E0BFEB410BA
-:100A100001863E0BFEAA100186FE1982FE3446A313
-:100A20003E0B0FFE4300FE9610094A0B3501E7010D
-:100A3000E859112D016F670B593C8A02FE2A030900
-:100A4000040B843E0B0F00FE5C1061041BFE581269
-:100A500009041BFE5013FE1C1CFE9DF0FE5C0CFEE8
-:100A60001C1CFE9DF0FE620C094A1B35FEA9100FEE
-:100A7000FE1500FE04E60B5F5C0FFE1300FE101077
-:100A80000FFE4700A10FFE4100A00FFE240087AA21
-:100A9000AB70056B2821D15FFE04E61BFE9D41FE75
-:100AA0001C425901DA0229EA140B3795A914FE31C8
-:100AB00000379701FE540F02D03CFE06ECC9EE3E13
-:100AC0001DFECE45343CFE06EAC9FE474B89FE7545
-:100AD000570551FE9856FE38120A42010EFE444850
-:100AE0004609041DFE1A130A40010E47FE41580A2A
-:100AF00099010EFE49548EFE2A0D02FE2A030A5168
-:100B0000FEEE14EE3E1DFECE45343CFECE47FEAD5D
-:100B10001302291E200710FE9E1223124D1294125A
-:100B2000CE1E2D47372DB1E0FEBCF0FEEC0D1306B6
-:100B3000124D01FEE21505FE380131FE3A0177FE45
-:100B4000F00DFE02ECCE62005DFE04EC2046FE05D8
-:100B5000F6FE340101FE5216FBFE48F40DFE18139A
-:100B6000AFFE02EACE627AFEC513141B3795A95C6C
-:100B700005FE38011CFEF0FF0CFE600105FE3A0187
-:100B80000CFE62013D12202406122D112D8A13063F
-:100B90000323031E4DFEF7121E94AC1294077AFE37
-:100BA0007113FE241C141A3795A9FED910B6FE0342
-:100BB000DCFE7357FE805D03B6FE03DCFE5B57FE72
-:100BC000805D03FE0357B623FE00CC03FE0357B639
-:100BD000750309044CFE2213FE1C800706FE1A133F
-:100BE000FE1E80E1FE1D80A4FE0C90FE0E13FE0E84
-:100BF00090A3FE3C90FE30F40BFE3C50A001FE8220
-:100C0000162F072DE001FEBC1509041D4501E70163
-:100C1000E811FEE90009044CFE2C1301FE1416FE37
-:100C20001E1CFE1490FE96900CFE640118FE6601D8
-:100C300009044FFE1212FE038074FE01EC20FE80B8
-:100C4000401220632711C8591E20ED762003FE08AC
-:100C50001C05FEAC00FE065805FEAE00FE0758055A
-:100C6000FEB000FE085805FEB200FE0958FE0A1C40
-:100C7000246912C9230C500C3F1340485F171DFE16
-:100C8000904DFE915421FE080F3E10134248174C20
-:100C9000FE904DFE915421FE1E0F24101220782C40
-:100CA000461E20ED762011C8F6FED6F0FE320FEA81
-:100CB00070FE141CFE101CFE181C033CFE0C14EEEF
-:100CC000FE07E61DFECE47FEF513030186782C468F
-:100CD000FAEFFE42132F072DFE34130A42010EB025
-:100CE000FE3612F0FE454801E3FE00CCB0FEF313E1
-:100CF0003D750710A30A80010EFE805C016FFE0E99
-:100D000010077E45F6FED6F0FE6C0F03FE445874C5
-:100D1000FE01EC97FE9E40FE9DE700FE9CE71B76E1
-:100D20002701DAFEDD102ABC7DBD7F302ED5071BE2
-:100D3000FE4812070BFE5612071AFE301207C216A3
-:100D4000FE3E1107FE230016FE4A11070616FEA8F6
-:100D5000110719FE12120700162214C201339F2B2D
-:100D600001088C43032BFE62080ACA01FE320E11F1
-:100D70007E02292B2F079BFED9137939683A77FE1B
-:100D8000FC1009046AFE7212C038C14EF4F58EFEE2
-:100D9000C6101E58FE2613057B317C77FE820C0C94
-:100DA000541855230C7B0C7C01A82469731258013C
-:100DB000A5C038C14EFE0455FEA555FE04FA38FE06
-:100DC00005FA4EFE911005563157FE4056FEE1568B
-:100DD0000C56185783C038C14EF4F505523153FEF6
-:100DE0000056FEA1560C52185309046AFE1E121E2C
-:100DF00058FE1F4005543155FE2C50FEAE5005568E
-:100E00003157FE4450FEC65005523153FE0850FE85
-:100E10008A500539313AFE4050FEC250025C240629
-:100E200012CD025B2B01081F44302ED5070621444A
-:100E30002F079B215B016E1C3D164409040BE279D0
-:100E400039683AFE0A5534FE8B55BE39BF3AFE0C5E
-:100E500051FE8E51025BFE1981AFFE1941025B2BE0
-:100E6000010825321FA2302ED84B1AFEA6124B0BBA
-:100E70003B0244010825321FA2302ED6071A214416
-:100E800001081FA2302EFEE809FEC2496005FE9C43
-:100E9000002884490419349FFEBB454B00453E069B
-:100EA000783DFEDA14016E87FE4B45E22F079AE18A
-:100EB00005C62884053F28345E025BFEC05DFEF84F
-:100EC00014FE03170550B40C505E2B0108265C017C
-:100ED000FEAA14025C010825321F44302ED60706F4
-:100EE000214401FE8E13FE4258FE8214FEA4148794
-:100EF000FE4AF40B1644FE4AF406FE0C122F079A23
-:100F000085025B053FB40C3F5E2B0108265C01FEA9
-:100F1000D814025C130665FECA1226FEE01272F1B6
-:100F200001082372038FFEDC1225FEDC121FFECAAD
-:100F3000125E2B0108FED510136CFF020057488B80
-:100F40001CFEFF7FFE3056FE005C03136CFF0200A8
-:100F500057488B1C3DFE3056FE005C03136CFF02AD
-:100F60000057488B03136CFF020057488BFE0B5849
-:100F7000030A5001820A3F018203FC1C10FF030098
-:100F800054FE00F41948FE007DFE017DFE027DFE48
-:100F9000037C63270C521853BE56BF5703FE6208EA
-:100FA000FE824AFEE11AFE835A740301FE1418FE03
-:100FB00042485F608901081FFEA214302ED8010844
-:100FC0001FFEA214302EFEE80AFEC15905C628FEF7
-:100FD000CC1249041BFEC41323621BE24BC364FE04
-:100FE000E8133B130617C378DBFE7810FF02835526
-:100FF000A1FF028355621AA4BBFE30008EE4172CB9
-:101000001306FE5610620BE1BBFE64008EE40AFE7E
-:10101000640017931306FE28106206FE6013BBFEE1
-:10102000C8008EE40AFEC800174D130683BBFE906D
-:1010300001BAFE4E1489FE1210FE43F494FE56F0DF
-:10104000FE6014FE04F46CFE43F493FEF310F90109
-:10105000FE22131C3DFE1013FE0017FE4DE469BA7C
-:10106000FE9C14B769FE1C10FE0017FE4DE419BA71
-:10107000FE9C14B719836023FE4DF400DF8913062C
-:10108000FEB456FEC3580360130B03150601082671
-:10109000E5150B010826E5151A010826E572FE89FB
-:1010A000490108031506010826A6151A010826A6F7
-:1010B0001506010826A6FE8949010826A672FE89A2
-:1010C0004A01080360031ECC0706FE4413AD12CC90
-:1010D000FE49F4003B729F5EFE01ECFE2701F10128
-:1010E000082F07FEE300FE20131FFE5A152312CD22
-:1010F00001431ECD070645094A0635030A42010E83
-:10110000ED880710A40A80010E880A51019E030A87
-:1011100080010E88FE80E710071084FE455801E329
-:1011200088030A42010E880A51019E030A42010EF9
-:10113000FE8080F2FE49E410A40A80010EF20A51FA
-:1011400001820317107166FE6001FE18DFFE19DED2
-:10115000FE241CFE1DF71D90FEF61501FEFC16E098
-:10116000911D66FE2C01FE2F1903AE21FEE615FE31
-:10117000DA1017107105FE6401FE00F419FE18580C
-:1011800005FE6601FE19589119FE3C90FE30F406EA
-:10119000FE3C5066FE3800FE0F79FE1CF71990FEEB
-:1011A0004016FEB6143403AE21FE1816FE9C10172E
-:1011B0001071FE835AFE18DFFE19DEFE1DF738900F
-:1011C000FE6216FE9414FE10139138661BFEAF19D2
-:1011D000FE98E70003AE21FE5616FE6C1017107144
-:1011E000FE30BCFEB2BC91C5661BFE0F79FE1CF73B
-:1011F000C590FE9A16FE5C143403AE21FE8616FEE0
-:101200004210FE02F61071FE18FE54FE19FE55FC47
-:10121000FE1DF74F90FEC016FE3614FE1C13914FB4
-:1012200047FE8358FEAF19FE80E710FE81E71011DC
-:10123000FEDD006327036327FE124521FEB016146E
-:10124000063795A90229FE39F0FE04172303FE7E16
-:10125000181C1A5D130D037105CB1C06FEEF12FE60
-:10126000E110782C462F072DFE3C13FE8214FE421F
-:10127000133C8A0A42010EB0FE3E12F0FE454801C0
-:10128000E3FE00CCB0FEF3133D750710A30A800106
-:101290000EF2016FFE1610077E85FE4014FE24122A
-:1012A000F6FED6F0FE2417170B03FE9CE70B0FFE8D
-:1012B000150059762701DA1706033C8A094A1D35BD
-:1012C000112D016F170603FE3890FEBA9079C7689A
-:1012D000C8FE485534FEC955031E98731298030A78
-:1012E00099010EF00A40010EFE494416FEF01773F4
-:1012F00075030A42010E0710450A51019E0A40017A
-:101300000E737503FE4EE41A64FE241805FE900069
-:10131000FE3A455BFE4EE4C264FE361805FE9200BE
-:10132000FE02E61BDCFE4EE4FE0B0064FE481805E0
-:10133000FE9400FE02E619FE081005FE9600FE026D
-:10134000E62CFE4E45FE0C12AFFF046854DE1C690D
-:1013500003077AFE5AF0FE741824FE0900FE3410CA
-:10136000071BFE5AF0FE821824C3FE2610071A5DE2
-:10137000242CDC070B5D2493FE0E1007065D244D24
-:101380009FAD0314FE09000133FE04FE7D057FF9C5
-:101390000325FECA18FE14F00865FEC61803FF1ADE
-:0213A00000004B
-:00000001FF
-/* Microcode buffer is kept after initialization for error recovery. */
diff --git a/firmware/advansys/38C0800.bin.ihex b/firmware/advansys/38C0800.bin.ihex
deleted file mode 100644
index a60b447ff74a..000000000000
--- a/firmware/advansys/38C0800.bin.ihex
+++ /dev/null
@@ -1,336 +0,0 @@
-:10000000D83F0D05000000F200F000FC001618E4D7
-:10001000010048E4188003F60200CE1900FAFFFF41
-:100020001C0F00F69EE7FF0082E700EA01FA01E6F6
-:1000300009E755F001F60300040010001EF085F0FA
-:1000400018F40800BC00385400ECD5F0820D00E62E
-:1000500086F0B1F0985701FCB400D4010C1C3E1C92
-:100060003C00BB000010BA19028032F07C0D021374
-:10007000BA131840005701EA02FC03FC3E006C0171
-:100080006E0174017601B9543E57008003E6B60054
-:10009000C00001013E017A01CA08CE1016110412F7
-:1000A0000812024ABB553C5603581B8030E44BE40F
-:1000B0005DF002FA200032004000800024013C0183
-:1000C00068016A017001720178017C01620A860D83
-:1000D00006134C1C04804AE402EE5BF003F70C00AC
-:1000E0000F004700BE00000120115C16321C381CB6
-:1000F0004E1C1044004C04EA5CF0A7F004F603FA2E
-:100100000500340036009800CC0020014E014A0B57
-:10011000420C120F0C1022110A120413301C024858
-:10012000004E42544455BD56068300DC05F009F0EC
-:1001300059F0B8F04BF406F70EF704FC05FC060086
-:10014000190033009B00A400B500BA00D000E10004
-:10015000E700E203080F021004100A100A130C1340
-:1001600012132414341404160816A417201C341C6B
-:10017000361C0844384491440A45484601486854AE
-:100180003A558355E555B0570158835905E60BF0AC
-:100190000CF004F805F807000A001C001E009E0081
-:1001A000A800AA00B900E0002201260179017E0121
-:1001B000C401C60180025E03EE049A06F8076208D5
-:1001C00068086908D608E909FA0B2E0F12101A10F0
-:1001D000ED10F1102A1106120C123E121013161314
-:1001E0001E134614761482143615CA156B18BE18E1
-:1001F000CA18E619121C461C9C3200400E47FE9C91
-:10020000F02B02FEAC0DFF100000D7FEE81900D65F
-:10021000FE8401FF030000FE9315FE0F05FF38006A
-:1002200000FE572400FE4C005BFF04000011FF0994
-:100230000000FF080101FF08FFFFFF270000FF107B
-:10024000FFFFFF110000FE7856FE3412FF21000070
-:10025000FE04F7D62C990A01FEC20FFE04F7D699C8
-:100260000A422CFE3DF0FE0602FE20F0A7FE91F0B1
-:10027000FEF401FE90F0FEF401FE8FF0A7035D4D49
-:1002800002FEC80D01FE380EFEDD12FEFC10FE2837
-:100290001C03FEA600FED3124114FEA600C2FE48B7
-:1002A000F0FE8A02FE49F0FEA402FE4AF0FEC202FF
-:1002B000FE46F0FE5402FE47F0FE5A02FE43F0FEF8
-:1002C0004802FE44F0FE4C02FE45F0FE5002180AC1
-:1002D000AA180614A1022BFE001CE7FE021CE6FE73
-:1002E0001E1CFEE91001FE1818FEE710FE06FCCEEB
-:1002F000097001A8022B155939A201FE5810097086
-:100300000187FEBD1009700187FEAD10FE161CFEB0
-:10031000581C180614A12C1C2BFE3DF0FE060223CF
-:10032000FE9802FE5A1CF8FE141C15FE300039A27D
-:1003300001FE4810180614A102D72220071135FE2D
-:100340006910180614A1FE04EC204F431320FE058B
-:10035000F6CE01FE4A1708545837122F429201FE7A
-:100360008216022B0946010E0700660173FE181063
-:10037000FE415809A4010EFEC8546BFE100301FE95
-:100380008216022B2C4FFE02E82AFEBF57FE9E4328
-:10039000FE7757FE27F0FEE001FE074BFE20F0A798
-:1003A000FE401C1CD9FE26F0FE5A03FEA0F0FE48BB
-:1003B00003FE11F0A7FEEF10FE9FF0FE6803F91098
-:1003C000FE110002652CFE481CF908051BFE1813DF
-:1003D0002122A3B713A30946010EB77801FEB41674
-:1003E00012D11CD9FE01F0D9FE82F0FE9603FA125A
-:1003F000FEE40027FEA8031C341DFEB803014BFEDB
-:1004000006F0FEC8039586FE0AF0FE8A0602240363
-:10041000702817FEFA04156D01367BFE6A0202D8B9
-:10042000F92C9919FE671BFEBF57FE7757FE481C33
-:100430007401AF8C0946010E070017DA09D1010ECD
-:100440008D5164792A037028FE1012156D01367BD8
-:10045000FE6A0202D8C781C8831C2427FE40041DFF
-:10046000FE3C043BFEA000FE9B57FE4E122DFF02F9
-:100470000010010B1DFEE4042D010B1D243331DEA1
-:10048000FE4C44FE4C1251FE44480F6FFE4C546B20
-:10049000DA4F792AFE0680FE4847FE621308051BE4
-:1004A000FE2A13320782FE5213FE20100F6FFE4CFD
-:1004B000546BDAFE0680FE4847FE401308051BFE1B
-:1004C0000813320782FE301308051BFE1C12159D0F
-:1004D0000805064D15FE0D0001367BFE640D022455
-:1004E0002D12FEE600FE1C90FE405C04159D0136B8
-:1004F000022BFE425B9919FE4659FEBF57FE775705
-:10050000FE8780FE31E45B08050AFE8413FE20802E
-:100510000719FE7C12530506FE6C1303FEA2002889
-:1005200017FE9005FE31E45A53050AFE561303FEEA
-:10053000A00028FE4E1267FF02001027FE48051C8F
-:1005400034FE8948FF02001027FE560526FEA80546
-:1005500012FEE3002153FE4AF0FE7605FE49F0FE4E
-:1005600070058825FE2100AB25FE2200AA2558FE35
-:100570000948FF02001027FE860526FEA805FEE2B8
-:10058000085305CB4D01B0250613D339FE270108CA
-:10059000051BFE22124101B2159D0805064D15FEF0
-:1005A0000D0001367BFE640D022403FE9C0028EB47
-:1005B000035C28FE36134101B226FE1806090653D5
-:1005C000051FFE02125001FE9E151DFE0E0612A50D
-:1005D000014B12FEE500035CC10C5C03CD28FE62FA
-:1005E00012034528FE5A1301FE0C1901FE7619FE6E
-:1005F0004348C4CC0F71FF02005752931E438BC473
-:100600006E4101B226FE820653051AE9910959018D
-:10061000FECC151DFE780612A5014B12FEE5000367
-:1006200045C10C45180601B2FA767401AF8C12FE72
-:10063000E20027DB1C34FE0AF0FEB60694FE6C07CF
-:10064000FE06F0FE74079586022408050AFE2E12A7
-:100650001619010B1600010B1600010B1600010BF9
-:10066000FE99A4010B160002FE420868051AFE3826
-:100670001208051AFE301316FE1B00010B160001AE
-:100680000B1600010B1600010B1606010B160002DB
-:10069000E26C58BE50FE9A81551B7AFE4207091B38
-:1006A000FE096FBAFECA45FE3212696D8B6C7F2758
-:1006B000FE54071C34FE0AF0FE4207958694FE6C39
-:1006C000070224014B02DB161F02DBFE9CF7DCFE57
-:1006D0002C90FEAE9056FEDA070C60146108545A56
-:1006E0003722200711FE0E128DFE808039206A2AE3
-:1006F000FE0610FE83E7FE4800ABFE034008545B95
-:100700003701B3B8FE1F40136201EFFE0850FE8AA6
-:1007100050FE4451FEC65188FE0890FE8A900C5E41
-:10072000145FFE0C90FE8E90FE4050FEC2500C3DB9
-:10073000143EFE4A1008055AFE2A12FE2C90FEAE08
-:10074000900C60146108055B8B01B3FE1F8013627F
-:10075000FE4490FEC6900C3F1440FE0890FE8A9026
-:100760000C5E145FFE4090FEC2900C3D143E0C2EB9
-:10077000143C210C490C6308541F372C0FFE4E11FA
-:1007800027DDFE9EF0FE7608BC17342C77E6C5FE0A
-:100790009A08C6FEB80894FE8E08FE06F0FE94087D
-:1007A00095860224014BFEC910161FFEC91068056C
-:1007B00006FE101268050A4E08050AFE9012FE2E6B
-:1007C0001C02FE180B6805064E68050AFE7A12FE2A
-:1007D0002C1CFEAAF0FED209FEACF0FE000902FEBF
-:1007E000DE09FEB7F0FEFC08FE02F61A50FE701895
-:1007F000FEF118FE4055FEE155FE1058FE9158FEE0
-:100800001459FE95591C85FE8CF0FEFC08FEACF0D8
-:10081000FEF008B5FECB10FEADF0FE0C0902FE188E
-:100820000BB6FEBF10FE2BF085F41EFE00FEFE1C74
-:1008300012C2FED2F085FE76181E19178503D21E4D
-:10084000061785C54AC64AB5B6FE891074672D15C8
-:100850009D013610FE3500FE01F06510800265FE38
-:100860009880FE19E40AFE1A1251FE1982FE6C18D5
-:10087000FE4454BEFE1981FE74188F9017FECE08F8
-:10088000024A08055AEC032E293C0C3F14409B2ECB
-:100890009C3CFE6C18FEED18FE4454FEE5543A3FB5
-:1008A0003B40034929638FFEE354FE7418FEF5189C
-:1008B0008FFEE35490C056FECE08024AFE37F0FE8B
-:1008C000DA09FE8BF0FE6009024A08050A23FEFAE7
-:1008D0000A3A493B6356FE3E0A0FFEC007419800A4
-:1008E000ADFE0159FE52F0FE0C0A8F7AFE240A3A40
-:1008F000498FFEE35457497D63FE1458FE95580214
-:100900004A3A493B63FE1459FE9559BE574957630D
-:10091000024A08055AFE821208051FFE661322626B
-:10092000B7FE03A1FE8380FEC844FE2E13FE049191
-:10093000FE86916A2AFE4059FEC15956E00360299D
-:10094000610C7F148057607D6101B3B86A2A13621D
-:100950009B2E9C3C3A3F3B4090C0FE04FA2EFE0585
-:10096000FA3C01EFFE3610210C7F0C803A3F3B40F1
-:10097000E408051F17E03A3D3B3E0805FEF7003747
-:10098000035E295FFE1058FE915857497D6302FEB1
-:10099000F40908051F17E00805FEF70037BEFE1929
-:1009A0008150FE1090FE9290FED3103207A617FEE3
-:1009B000080912A608050AFE1413033D293E56FE37
-:1009C0000809FE0C58FE8D58024A2141FE1980E7A5
-:1009D00008050AFE1A12FE6C19FE1941F4C2FED176
-:1009E000F0E2157E013610FE4400FE8E10FE6C19FA
-:1009F000573DFEED197D3EFE0C51FE8E51F41EFE5C
-:100A000000FF35FE7410C2FED2F0FEA60BFE761873
-:100A10001E198A03D21E06FE081310FE1600026578
-:100A2000FED1F0FEB80B157E013610FE1700FE4217
-:100A300010FECEF0FEBE0BFE3C10FECDF0FECA0B4B
-:100A400010FE22000265FECBF0FED60B10FE240045
-:100A50000265FED0F0FEE00B109EE5FECFF0FEEA50
-:100A60000B1058FE1010FECCF0E268051F4D10FE72
-:100A700012002C0FFE4E1127FE000CFE9EF0FE14FD
-:100A80000CBC17342C77E6C524C6242CFA27FE208C
-:100A90000C1C3494FE3C0C9586C5DCC6DC0224019B
-:100AA0004BFEDB1012FEE800B5B674C781C883FEAA
-:100AB00089F0243331E1C781C88327FE660C1D24E9
-:100AC0003331DFBC4E10FE420002657C06FE8149D8
-:100AD00017FE2C0D08050AFE44131000550AFE549B
-:100AE0001255FE280023FE9A0D0946010E070066E6
-:100AF00044FE2800FEE21001F501F609A401FE26DD
-:100B00000F64122F0173022B10FE4400550AE944B2
-:100B10000AFEB41001B0440AFEAA1001B0FE198208
-:100B2000FE3446AC440A10FE4300FE961008540AF8
-:100B30003701F501F664122F0173990A644292029B
-:100B4000FE2E0308050A8A440A1000FE5C106805A0
-:100B50001AFE581208051AFE5013FE1C1CFE9DF0CA
-:100B6000FE500DFE1C1CFE9DF0FE560D08541A375B
-:100B7000FEA91010FE1500FE04E60A50FE2E10100D
-:100B8000FE1300FE1010106FAB10FE4100AA10FE05
-:100B900024008CB5B67403702823D850FE04E61ADE
-:100BA000FE9D41FE1C426401E3022BF8150A39A0A8
-:100BB000B415FE310039A201FE481002D742FE06EC
-:100BC000ECD0FC441BFECE453542FE06EAD0FE4783
-:100BD0004B91FE7557035DFE9856FE381209480189
-:100BE0000EFE44484F08051BFE1A130946010E412C
-:100BF000FE415809A4010EFE495496FE1E0E02FE47
-:100C00002E03095DFEEE14FC441BFECE453542FE6C
-:100C1000CE47FEAD13022B22200711FE9E12211398
-:100C200059139F13D5222F41392FBCADFEBCF0FEC6
-:100C3000E00E0F06135901FEDA1603FE380129FEF5
-:100C40003A0156FEE40EFE02ECD5690066FE04ECA5
-:100C5000204FFE05F6FE340101FE4A17FE0890FE05
-:100C600048F40DFE1813BAFE02EAD5697EFEC513DC
-:100C7000151A39A0B4FE2E1003FE38011EFEF0FF37
-:100C80000CFE600103FE3A010CFE620143132025B5
-:100C900006132F122F920F060421042259FEF71279
-:100CA000229FB7139F077EFE7113FE241C1519396E
-:100CB000A0B4FED910C3FE03DCFE7357FE805D04B2
-:100CC000C3FE03DCFE5B57FE805D04FE0357C321B9
-:100CD000FE00CC04FE0357C37804080558FE221317
-:100CE000FE1C800706FE1A13FE1E80EDFE1D80AE60
-:100CF000FE0C90FE0E13FE0E90ACFE3C90FE30F407
-:100D00000AFE3C50AA01FE7A1732072FAD01FEB44D
-:100D10001608051B4E01F501F612FEE900080558FC
-:100D2000FE2C1301FE0C17FE1E1CFE1490FE969066
-:100D30000CFE640114FE660108055BFE1212FE0340
-:100D4000808DFE01EC20FE804013206A2A12CF64C1
-:100D50002220FB792004FE081C03FEAC00FE06588E
-:100D600003FEAE00FE075803FEB000FE085803FE67
-:100D7000B200FE0958FE0A1C256E13D0210C5C0C33
-:100D8000450F465250181BFE904DFE915423FEFC19
-:100D90000F44110F48521858FE904DFE915423E411
-:100DA000251113207C6F4F2220FB792012CFFE14D7
-:100DB00056FED6F0FE2610F874FE141CFE101CFE23
-:100DC000181C0442FE0C14FCFE07E61BFECE47FE78
-:100DD000F5130401B07C6F4FFE0680FE4847FE42CB
-:100DE0001332072FFE34130948010EBBFE3612FEE4
-:100DF0004148FE454801F0FE00CCBBFEF3134378AA
-:100E00000711AC0984010EFE805C0173FE0E100711
-:100E1000824EFE1456FED6F0FE601004FE44588D3D
-:100E2000FE01ECA2FE9E40FE9DE700FE9CE71A79C3
-:100E30002A01E3FEDD102CC781C8833331DE071A97
-:100E4000FE4812070AFE56120719FE301207C9178C
-:100E5000FE321207FE230017EB070617FE9C12074F
-:100E60001FFE12120700172415C90136A92D010B08
-:100E7000944B042DDD09D101FE260F1282022B2D89
-:100E80003207A6FED9133A3D3B3E56FEF011080547
-:100E90005AFE72129B2E9C3C90C096FEBA112262A2
-:100EA000FE2613037F298056FE760D0C6014612107
-:100EB0000C7F0C8001B3256E77136201EF9B2E9C93
-:100EC0003CFE0455FEA555FE04FA2EFE05FA3CFE36
-:100ED0009110033F2940FE4056FEE1560C3F14405E
-:100EE000889B2E9C3C90C0035E295FFE0056FEA1AD
-:100EF000560C5E145F08055AFE1E122262FE1F4049
-:100F000003602961FE2C50FEAE50033F2940FE4491
-:100F100050FEC650035E295FFE0850FE8A50033D16
-:100F2000293EFE4050FEC2500289250613D40272AB
-:100F30002D010B1D4C3331DE0706234C3207A6234F
-:100F40007201AF1E43174C08050AEE3A3D3B3EFEC8
-:100F50000A5535FE8B55573D7D3EFE0C51FE8E5198
-:100F60000272FE1981BAFE194102722D010B1C3466
-:100F70001DE83331E15519FEA612550A4D024C0108
-:100F80000B1C341DE83331DF0719234C010B1DE81E
-:100F90003331FEE809FEC2495103FE9C00288A5302
-:100FA000051F35A9FEBB4555004E44067C43FEDABD
-:100FB0001401AF8CFE4B45EE3207A5ED03CD288A18
-:100FC00003452835670272FEC05DFEF814FE031764
-:100FD000035CC10C5C672D010B268901FE9E150286
-:100FE00089010B1C341D4C3331DF0706234C01F102
-:100FF000FE4258F1FEA4148CFE4AF40A174CFE4A35
-:10100000F406EA3207A58B02720345C10C45672D31
-:10101000010B268901FECC1502890F0627FEBE139F
-:1010200026FED41376FE8948010B2176047BFED080
-:10103000131CFED0131DFEBE13672D010BFED51031
-:101040000F71FF02005752931EFEFF7FFE3056FEC7
-:10105000005C040F71FF02005752931E43FE30568E
-:10106000FE005C040F71FF0200575293040F71FFE2
-:101070000200575293FE0B5804095C018709450191
-:101080008704FE03A11E11FF030054FE00F41F524B
-:10109000FE007DFE017DFE027DFE037C6A2A0C5E61
-:1010A000145F573F7D4004DDFE824AFEE11AFE8355
-:1010B0005A8D0401FE0C19FE4248505191010B1D3E
-:1010C000FE96153331E1010B1DFE96153331FEE816
-:1010D0000AFEC15903CD28FECC1253051AFEC413D3
-:1010E00021691AEE55CA6BFEDC144D0F0618CA7C36
-:1010F00030FE7810FF028355ABFF0283556919AEAD
-:1011000098FE300096F2186D0F06FE5610690AED33
-:1011100098FE640096F209FE6400189E0F06FE28F1
-:10112000106906FE601398FEC80096F209FEC8001A
-:1011300018590F068898FE90017AFE421591E4FE38
-:1011400043F49FFE56F0FE5415FE04F471FE43F482
-:101150009EFEF310FE405C01FE16141E43ECFE00E2
-:1011600017FE4DE46E7AFE9015C46EFE1C10FE0054
-:1011700017FE4DE4CC7AFE9015C4CC885121FE4D6B
-:10118000F400E9910F06FEB456FEC35804510F0A4D
-:10119000041606010B26F3160A010B26F316190195
-:1011A0000B26F376FE8949010B041606010B26B1C6
-:1011B0001619010B26B11606010B26B1FE8949014D
-:1011C0000B26B176FE894A010B04510422D307068F
-:1011D000FE4813B813D3FE49F4004D76A967FE010B
-:1011E000ECFE2701FE8948FF02001027FE2E163272
-:1011F00007FEE300FE20131DFE52162113D4014BFF
-:1012000022D407064E08540637040948010EFB8E07
-:101210000711AE0984010E8E095D01A8040984013D
-:101220000E8EFE80E71107118AFE455801F08E04EC
-:101230000948010E8E095D01A8040948010EFE80CF
-:1012400080FE804CFE49E411AE0984010EFE804C04
-:10125000095D0187041811756CFE6001FE18DFFE40
-:1012600019DEFE241CFE1DF71B97FEEE1601FEF490
-:1012700017AD9A1B6CFE2C01FE2F1904B923FEDE5C
-:1012800016FEDA1018117503FE6401FE00F41FFE4D
-:10129000185803FE6601FE19589A1FFE3C90FE3056
-:1012A000F406FE3C506CFE3800FE0F79FE1CF71F62
-:1012B00097FE3817FEB6143504B923FE1017FE9CAE
-:1012C00010181175FE835AFE18DFFE19DEFE1DF799
-:1012D0002E97FE5A17FE9414EC9A2E6C1AFEAF1934
-:1012E000FE98E70004B923FE4E17FE6C1018117526
-:1012F000FE30BCFEB2BC9ACB6C1AFE0F79FE1CF716
-:10130000CB97FE9217FE5C143504B923FE7E17FEC0
-:101310004210FE02F61175FE18FE60FE19FE61FE17
-:1013200003A1FE1DF75B97FEB817FE3614FE1C13D3
-:101330009A5B41FE8358FEAF19FE80E711FE81E7FC
-:101340001112FEDD006A2A046A2AFE124523FEA855
-:1013500017150639A0B4022BFE39F0FEFC17210444
-:10136000FE7E181E19660F0D047503D21E06FEEFD1
-:1013700012FEE1107C6F4F32072FFE3C13F1FE424C
-:101380001342920948010EBBEBFE4148FE4548015D
-:10139000F0FE00CCBBFEF31343780711AC098401C7
-:1013A0000EFE804C0173FE161007828BFE4014FE69
-:1013B0002412FE1456FED6F0FE1C18180A04FE9CD9
-:1013C000E70A10FE150064792A01E3180604429228
-:1013D00008541B37122F0173180604FE3890FEBA0A
-:1013E000903ACE3BCFFE485535FEC9550422A3772F
-:1013F00013A30409A4010EFE41480946010EFE494B
-:101400004417FEE8187778040948010E07114E09C1
-:101410005D01A80946010E777804FE4EE4196BFEC3
-:101420001C1903FE9000FE3A45FE2C10FE4EE4C946
-:101430006BFE2E1903FE9200FE02E61AE5FE4EE454
-:10144000FE0B006BFE401903FE9400FE02E61FFE39
-:10145000081003FE9600FE02E66DFE4E45EABAFF56
-:10146000046854E71E6EFE081CFE6719FE0A1CFE87
-:101470001AF4FE0004EAFE48F4197AFE74190F19F2
-:1014800004077EFE5AF0FE841925FE0900FE341082
-:10149000071AFE5AF0FE921925CAFE261007196691
-:1014A000256DE5070A66259EFE0E1007066625597E
-:1014B000A9B80415FE09000136FE04FE810383FE6F
-:1014C000405C041CF7FE14F00B27FED6191CF77BBA
-:0C14D000F7FE82F0FEDA1904FFCC0000E9
-:00000001FF
-/* Microcode buffer is kept after initialization for error recovery. */
diff --git a/firmware/advansys/38C1600.bin.ihex b/firmware/advansys/38C1600.bin.ihex
deleted file mode 100644
index 18c7c4862046..000000000000
--- a/firmware/advansys/38C1600.bin.ihex
+++ /dev/null
@@ -1,398 +0,0 @@
-:1000000077EF0406000000F2001600FC001000F07C
-:1000100018E40100041E48E403F6F7132E1E020044
-:100020000717C05F00FAFFFF040000F609E782E748
-:1000300085F086F04E109EE7FF0055F001F60300B4
-:10004000985701E600EA00EC01FA18F40800F01DE8
-:10005000385432F01000C20E1EF0D5F0BC004BE454
-:1000600000E6B1F0B40002133E1CC8473E00D801C0
-:1000700006130C1C5E1E0057C85701FCBC0EA212D2
-:10008000B9540080620A5A12C8153E1E1840BD5667
-:1000900003E601EA5CF00F0020006C016E0104121F
-:1000A0000413BB553C563E5703584AE44000B60083
-:1000B000BB00C000000101013E01580A44100A12B1
-:1000C0004C1C4E1C024A30E405E60C003C0080004B
-:1000D00024013C0168016A0170017201740176011A
-:1000E00078017C01C60E0C10AC12AE12161A321C2E
-:1000F0006E1E02483A55C95702EE5BF003F706F749
-:1001000003FC06001E00BE00E1000C12181A701A53
-:10011000301C381C1044004CB057405C4DE404EADD
-:100120005DF0A7F004F602FC05000900190032009A
-:1001300033003400360098009E00CC0020014E01B0
-:1001400079013C09680D021004103A1008120A13D4
-:100150004016501600174A19004E0054015800DC92
-:1001600005F009F059F0B8F048F40EF70A009B00CA
-:100170009C00A400B500BA00D000E700F0036908B5
-:10018000E9095C0CB612BC19D81B201C341C361CA7
-:10019000421D0844384491440A45484689486854F9
-:1001A0008355835931E402E607F008F00BF00CF0B8
-:1001B0004BF404F805F802FA03FA04FC05FC070006
-:1001C000A800AA00B900E000E500220126016001B4
-:1001D0007A018201C801CA0186026A031805B207C2
-:1001E0006808100D06100A100E1012106010ED10A5
-:1001F000F310061210121E120C130E131013FE9C95
-:10020000F03505FEEC0EFF100000E9FE341F00E89B
-:10021000FE8801FF030000FE9315FE0F05FF380066
-:1002200000FE572400FE4C0065FF0400001AFF0981
-:100230000000FF080101FF08FFFFFF270000FF107B
-:10024000FFFFFF130000FE7856FE3412FF2100006E
-:10025000FE04F7E8377D0D01FE4A11FE04F7E87D44
-:100260000D5137FE3DF0FE0C02FE20F0BCFE91F079
-:10027000FEF801FE90F0FEF801FE8FF0BC03674D22
-:1002800005FE080F01FE780FFEDD1205FE0E03FECF
-:10029000281C03FEA600FED1123E22FEA600ACFEE4
-:1002A00048F0FE9002FE49F0FEAA02FE4AF0FEC8A7
-:1002B00002FE46F0FE5A02FE47F0FE6002FE43F0E8
-:1002C000FE4E02FE44F0FE5202FE45F0FE56021CB7
-:1002D0000DA21C0722B70535FE001CFEF110FE0220
-:1002E0001CF5FE1E1CFEE910015FFEE710FE06FC79
-:1002F000DE0A8101A305351F9547B801FEE4110A06
-:1003000081015CFEBD100A81015CFEAD10FE161C71
-:10031000FE581C1C0722B7372A35FE3DF0FE0C02A2
-:100320002BFE9E02FE5A1CFE121CFE141C1FFE30E9
-:100330000047B801FED4111C0722B705E9212C099A
-:100340001A31FE69101C0722B7FE04EC2C6001FE76
-:100350001E1E202CFE05F6DE01FE621B010C614A0A
-:100360004415565101FE9E1E01FE961A05350A5788
-:1003700001180900360185FE1810FE41580ABA011D
-:1003800018FEC8547BFE1C0301FE961A0535376023
-:10039000FE02E830FEBF57FE9E43FE7757FE27F071
-:1003A000FEE401FE074BFE20F0BCFE401C2AEBFEE3
-:1003B00026F0FE6603FEA0F0FE5403FE11F0BCFE24
-:1003C000EF10FE9FF0FE7403FE461C19FE1100059F
-:1003D0007037FE481CFE461C010C0628FE1813262A
-:1003E00021B9C720B90A570118C78901FEC81A15D3
-:1003F000E12AEBFE01F0EBFE82F0FEA403FE9C324C
-:1004000015FEE4002FFEB6032A3C16FEC60301418A
-:10041000FE06F0FED603AFA0FE0AF0FEA2070529F5
-:1004200003811E1BFE24051F6301428FFE7002051F
-:10043000EAFE461C377D1DFE671BFEBF57FE775741
-:10044000FE481C7501A6860A57011809001BEC0A14
-:10045000E101187750408D3003811EF81F6301427F
-:100460008FFE700205EAD799D89C2A292FFE4E04E8
-:1004700016FE4A047EFEA000FE9B57FE541232FF79
-:10048000020010010816FE02053201081629272570
-:10049000EEFE4C44FE581250FE44481334FE4C54B9
-:1004A0007BEC608D3001FE4E1EFE4847FE7C130142
-:1004B0000C0628FE32130143099BFE6813FE26102A
-:1004C0001334FE4C547BEC01FE4E1EFE4847FE5496
-:1004D00013010C0628A50143099BFE4013010C06DD
-:1004E00028F91F7F010C06074D1FFE0D0001428FEA
-:1004F000FEA40E05293215FEE6000FFE1C9004FE38
-:100500009C933A0B0E8B021F7F01420535FE425B26
-:100510007D1DFE4659FEBF57FE77570FFE878004AC
-:10052000FE8783FEC9470B0ED065010C060DFE98B1
-:10053000130FFE208004FEA083330B0E091DFE84E2
-:100540001201380607FE701303FEA2001E1BFEDA1E
-:1005500005D0540138060DFE581303FEA0001EFE00
-:1005600050125EFF0200102FFE90052A3CCCFF02C5
-:1005700000102FFE9E0517FEF40515FEE300260170
-:1005800038FE4AF0FEC005FE49F0FEBA05712EFEA7
-:100590002100F12EFE2200A22E4AFE0948FF020091
-:1005A000102FFED00517FEF405FEE208013806FE06
-:1005B0001C004D01A72E0720E447FE2701010C0671
-:1005C00028FE24123E01841F7F010C06074D1FFEEA
-:1005D0000D0001428FFEA40E052903E61EFECA137C
-:1005E00003B61EFE401203661EFE38133E0184173A
-:1005F000FE72060A0701380624FE02124F01FE565B
-:100600001916FE68061582014115E203668A106616
-:10061000039A1EFE701203551EFE681301C60912CE
-:1006200048FE92062E1201FEAC1DFE434862801366
-:1006300058FF02005752AD233F4E62493E018417D6
-:10064000FEEA0601380612F7450A9501FE841916DE
-:10065000FEE0061582014115E203558A10551C077C
-:100660000184FEAE10036F1EFE9E133E0184039AAA
-:100670001EFE1A1201380612FC01C601FEAC1DFE58
-:1006800043486280F0450A9503B61EF801380624F7
-:1006900036FE02F60771788C004D62493E2D934E6E
-:1006A000D00D17FE9A0701FEC01916FE90072620EE
-:1006B0009E1582014115E2219E0907FB03E6FE58C3
-:1006C0005710E605FE2A06036F8A106F1C07018487
-:1006D000FE9C325F7501A68615FEE2002FED2A3CD6
-:1006E000FE0AF0FECE07AEFE9608FE06F0FE9E085D
-:1006F000AFA00529010C060DFE2E12141D010814D1
-:100700000001081400010814000108FE99A4010862
-:10071000140005FEC60901760612FE3A12010C0607
-:1007200012FE301314FE1B0001081400010814000F
-:1007300001081400010814070108140005EF7C4AA1
-:10074000784F0FFE9A8104FE9A83FECB470B0E2D45
-:100750002848FE6C080A28FE096FCAFECA45FE3208
-:100760001253634E7C972FFE7E082A3CFE0AF0FE51
-:100770006C08AFA0AEFE96080529014105ED1424D2
-:1007800005EDFE9CF79F01FEAE1EFE185801FEBE51
-:100790001EFE9958FE7818FEF9188EFE1609106A8A
-:1007A000226B010C615444212C091AF87701FE7E5A
-:1007B0001E472C7A30F0FE83E7FE3F0071FE0340B7
-:1007C000010C61654401C2C8FE1F40206E01FE6A33
-:1007D00016FE0850FE8A50FE4451FEC651FE10100F
-:1007E00001FECE1E01FEDE1E1068226901FEEE1E15
-:1007F00001FEFE1EFE4050FEC250104B224CFE8AEF
-:1008000010010C0654FE501201FEAE1E01FEBE1E6B
-:10081000106A226B010C06654E01C20FFE1F800498
-:10082000FE9F83330B0E206E0FFE449004FEC49394
-:100830003A0BFEC69004FEC693790B0E106C226D27
-:1008400001FECE1E01FEDE1E106822690FFE4090E2
-:1008500004FEC0933A0BFEC29004FEC293790B0EC5
-:10086000104B224C10642234010C6124443713FED7
-:100870004E112FFEDE09FE9EF0FEF209FE01481B1E
-:100880003C3788F5D4FE1E0AD5FE420AD2FE1E0A67
-:10089000D3FE420AAEFE120AFE06F0FE180AAFA010
-:1008A00005290141FEC1101424FEC110017606077E
-:1008B000FE14120176060D5D010C060DFE7412FE8B
-:1008C0002E1C05FE1A0C017606075D0176060D4109
-:1008D000FE2C1CFEAAF0FECE0AFEACF0FE660AFE5E
-:1008E0009210C4F6FEADF0FE720A05FE1A0CC5FEAB
-:1008F000E710FE2BF0BFFE6B1823FE00FEFE1C125D
-:10090000ACFED2F0BFFE7618231D1BBF03E3230706
-:100910001BBFD45BD55BD25BD35BC4C5FEA910758E
-:100920005E321F7F014219FE3500FE01F0701998FA
-:100930000570FE741823FE00F81B5B7D1201FE7823
-:100940000F4D01FE961A2130777D1D055B010C06C7
-:100950000D2BFEE20B010C0654FEA612010C062420
-:10096000FE8813216EC701FE1E1F0FFE838004FE4A
-:100970008383FEC9470B0EFEC844FE42130FFE04DC
-:100980009104FE8493FECA570BFE869104FE869363
-:10099000FECB570B0E7A30FE4059FEC1598E4003F4
-:1009A0006A3B6B10972298D96ADA6B01C2C87A3019
-:1009B000206EDB64DC34916C7E6DFE4455FEE555A3
-:1009C000FE04FA64FE05FA3401FE6A16A3261097A7
-:1009D0001098916C7E6DFE1410010C06241B409142
-:1009E0004B7E4C010C06FEF7004403683B69FE1089
-:1009F00058FE9158FE1459FE9559055B010C0624CA
-:100A00001B40010C06FEF700447801FE8E1E4F0FBE
-:100A1000FE109004FE90933A0BFE929004FE929387
-:100A2000790B0EFEBD10014309BB1BFE6E0A15BB00
-:100A3000010C060DFE1413034B3B4C8EFE6E0AFE9A
-:100A40000C58FE8D58055B263E0FFE198004FE995A
-:100A500083330B0EFEE510010C060DFE1A12FE6C20
-:100A600019FE1941FE6B18ACFED1F0EF1F92014246
-:100A700019FE4400FE9010FE6C19D94BFEED19DAF8
-:100A80004CFE0C51FE8E51FE6B1823FE00FF31FE12
-:100A90007610ACFED2F0FEBA0CFE7618231D5D0374
-:100AA000E32307FE081319FE16000570FED1F0FEC1
-:100AB000CC0C1F92014219FE17005CFECEF0FED254
-:100AC0000CFE3E10FECDF0FEDE0C19FE220005707D
-:100AD000FECBF0FEEA0C19FE24000570FED0F0FEFD
-:100AE000F40C1994FE1C10FECFF0FEFE0C194AF314
-:100AF000FECCF0EF017606244D19FE12003713FEEE
-:100B00004E112FFE160DFE9EF0FE2A0DFE01481B13
-:100B10003C3788F5D429D529D229D32937FE9C32F0
-:100B20002FFE3E0D2A3CAEFE620DAFA0D49FD59F96
-:100B3000D29FD39F05290141FED31015FEE800C4C2
-:100B4000C575D799D89CFE89F0292725BED799D895
-:100B50009C2FFE8C0D16292725BDFE0148A419FEE9
-:100B6000420005709007FE81491BFE640E010C06D1
-:100B70000DFE441319002D0DFE54122DFE28002BDE
-:100B8000FEDA0E0A57011809003646FE2800FEFA62
-:100B90001001FEF41C01FE001D0ABA01FE581040AF
-:100BA00015560185053519FE44002D0DF7460DFE3D
-:100BB000CC1001A7460DFEC21001A70FFE1982043A
-:100BC000FE9983FECC470B0EFE3446A5460D19FE5A
-:100BD0004300FEA210010C610D4401FEF41C01FE55
-:100BE000001D40155601857D0D405101FE9E1E05DC
-:100BF000FE3A03010C060D5D460D1900FE62100160
-:100C0000760612FE5C12010C0612FE5213FE1C1C2C
-:100C1000FE9DF0FE8E0EFE1C1CFE9DF0FE940E014D
-:100C20000C611244FE9F1019FE1500FE04E60D4FE4
-:100C3000FE2E1019FE1300FE101019FE4700F119C8
-:100C4000FE4100A219FE240086C4C57503811E2B37
-:100C5000EA4FFE04E612FE9D41FE1C424001F405EF
-:100C600035FE121C1F0D47B5C31FFE310047B801EA
-:100C7000FED41105E951FE06ECE0FE0E474628FEC3
-:100C8000CE453151FE06EAE0FE474B45FE7557035F
-:100C900067FE9856FE38120A5A0118FE4448600151
-:100CA0000C0628FE18130A5701183EFE41580ABACE
-:100CB000FEFA14FE4954B0FE5E0F05FE3A030A67C1
-:100CC000FEE014FE0E474628FECE453151FECE47CB
-:100CD000FEAD130535212C091AFE98122620962008
-:100CE000E7FE081CFE7C19FEFD19FE0A1C03E5FE4A
-:100CF0004855A53BFE6201FEC95531FE741001FE48
-:100D0000F01A03FE38013BFE3A018EFE1E10FE0271
-:100D1000ECE7530036FE04EC2C60FE05F6FE3401D1
-:100D200001FE621B01FECE1EB211FE1813CAFE02A6
-:100D3000EAE75392FEC3131F1247B5C3FE2A1003FE
-:100D4000FE380123FEF0FF10E503FE3A0110FE62BB
-:100D50000101FE1E1E202C155601FE9E1E130702C9
-:100D600026022196C720960992FE79131F1D47B5CA
-:100D7000C3FEE110CFFE03DCFE7357FE805D02CFA1
-:100D8000FE03DCFE5B57FE805D02FE0357CF26FEAE
-:100D900000CC02FE0357CF8902010C064AFE4E1317
-:100DA0000FFE1C8004FE9C83330B0E0907FE3A13D2
-:100DB0000FFE1E8004FE9E83330B0EFE2A130FFED1
-:100DC0001D8004FE9D83FEF9130EFE1C1301FEEE32
-:100DD0001EACFE141301FEFE1EFE8158FA01FE0E2B
-:100DE0001FFE30F40DFE3C50A201FE921B01430990
-:100DF00056FB01FEC81A010C0628A401FEF41C01D2
-:100E0000FE001D15FEE900010C064AFE4E1301FE10
-:100E1000221BFE1E1C0FFE149004FE94933A0BFE40
-:100E2000969004FE9693790B0E10FE640122FE66E6
-:100E300001010C0665F90FFE038004FE8383330B6A
-:100E40000E77FE01EC2CFE8040202C7A3015DF401E
-:100E5000212CFE00408D2C02FE081C03FEAC00FE7F
-:100E6000065803FEAE00FE075803FEB000FE085809
-:100E700003FEB200FE0958FE0A1C2E4920E026108F
-:100E8000661055106F1357524F1C28FE904DFE915F
-:100E9000542BFE8811461A135A521C4AFE904DFEDE
-:100EA00091542BFE9E112E1A202C903460212CFE82
-:100EB00000408D2C15DFFE1456FED6F0FEB211FE5A
-:100EC000121C75FE141CFE101CFE181C0251FE0C98
-:100ED00014FE0E47FE07E628FECE47FEF51302017C
-:100EE000A7903460FE0680FE4847FE4213FE028053
-:100EF0000956FE34130A5A0118CBFE3612FE414839
-:100F0000FE454801FEB216FE00CCCBFEF3133F892E
-:100F1000091AA50A9D0118FE805C0185F2099BA4AF
-:100F2000FE1456FED6F0FEEC1102FE445877FE0188
-:100F3000ECB8FE9E40FE9DE700FE9CE7128D30015E
-:100F4000F4FEDD1037D799D89C2725EE0912FE480C
-:100F500012090DFE5612091DFE301209DD1BFEC4DA
-:100F60001309FE23001BFED01309071BFE341409CE
-:100F700024FE121209001B291FDD0142A1320108C3
-:100F8000AE410232FE62080AE101FE5810159B05CF
-:100F90003532014309BBFED713914B7E4C8EFE8048
-:100FA00013010C0654FE7212DB64DC34FE4455FE61
-:100FB000E555B0FE4A13216EFE261303973B988E2B
-:100FC000FEB60E106A226B261097109801C22E49A9
-:100FD00088206E01FE6A16DB64DC34FE0455FEA533
-:100FE00055FE04FA64FE05FA34FE8F10036C3B6D67
-:100FF000FE4056FEE156106C226D71DB64DC34FE5F
-:101000004455FEE55503683B69FE0056FEA15610A7
-:10101000682269010C0654F9216EFE1F40036A3BE9
-:101020006BFE2C50FEAE50036C3B6DFE4450FEC672
-:101030005003683B69FE0850FE8A50034B3B4CFE50
-:101040004050FEC25005732E07209E0572320108E3
-:10105000163D2725EE09072B3D014309BB2B7201E5
-:10106000A6233F1B3D010C060DFE1E13914B7E4C2B
-:10107000FE0A5531FE8B55D94BDA4CFE0C51FE8ED3
-:1010800051057201FE8E1ECAFE1941057232010819
-:101090002A3C16C02725BE2D1DC02D0D832D7F1B7C
-:1010A000FE6615053D01082A3C16C02725BD091D11
-:1010B0002B3D010816C02725FEE809FEC249500352
-:1010C000B61E830138062431A1FEBB452D00A4467F
-:1010D00007903F01FEF81501A686FE4B45FE201342
-:1010E00001430982FE1613039A1E5D03551E315EED
-:1010F0000572FEC05D01A7FE031703668A10665ED7
-:10110000320108177301FE5619057301082A3C16AF
-:101110003D2725BD09072B3D01FEBE16FE4258FEA8
-:10112000E81401A686FE4AF40D1B3DFE4AF407FEB4
-:101130000E12014309824E057203558A10555E3224
-:101140000108177301FE8419057301082A3C163D36
-:101150002725BD09122B3D01FEE8178BFEAA14FEC0
-:10116000B61486A8B20D1B3DB207FE0E120143094C
-:10117000824E0572036F8A106F5E32010817730189
-:10118000FEC019057313072FFECC1517FEE2155F7D
-:10119000CC0108265F028FFEDE152AFEDE1516FE44
-:1011A000CC155E320108FED5101358FF02005752CD
-:1011B000AD23FEFF7FFE3056FE005C021358FF0297
-:1011C000005752AD233FFE3056FE005C021358FF1D
-:1011D00002005752AD021358FF02005752FE005E44
-:1011E000021358FF02005752ADFE0B58020A660167
-:1011F0005C0A55015C0A6F015C0201FE1E1F231A86
-:10120000FF030054FE00F424520FFE007C04FE078E
-:101210007C3A0B0EFE0071FEF918FE7A19FEFB19DE
-:10122000FE1AF700FE1BF7007A3010682269D96CAD
-:10123000DA6D02FE6208FE824AFEE11AFE835A77E8
-:101240000201C6FE42484F5045010816FEE017272E
-:1012500025BE010816FEE0172725FEE80AFEC15943
-:10126000039A1EFEDA1201380612FED0132653121C
-:1012700048FE0817D1125312FE1E132DB47BFE2612
-:10128000174D13071CB49004FE7810FF028355F12C
-:10129000FF028355531DFE1213D6FE3000B0FE80B0
-:1012A000171C631307FE5610530DFE1613D6FE646B
-:1012B00000B0FE80170AFE64001C941307FE28107D
-:1012C0005307FE6013D6FEC800B0FE80170AFEC8A2
-:1012D000001C95130771D6FE900148FE8C1745F34C
-:1012E000FE43F496FE56F0FE9E17FE04F458FE43AD
-:1012F000F494F68B01FE2416233FFCA88C4948FE8B
-:10130000DA176249FE1C10A88C8048FEDA1762804A
-:10131000715026FE4DF400F7451307FEB456FEC388
-:10132000580250130D02503E784F45010816A92768
-:1013300025BEFE03EAFE7E01010816A92725FEE967
-:101340000A010816A92725FEE90AFE05EAFE7F0123
-:10135000010816A92725FE6909FE02EAFE8001019F
-:101360000816A92725FEE80847FE810103B61E835B
-:101370000138062431A278F2530736FE34F43FA137
-:1013800078039A1E830138061231F04F45FE901003
-:10139000FE405A233FFB8C4948FEAA186249718CD3
-:1013A0008048FEAA186280FEB456FE405D01C60168
-:1013B000FEAC1DFE0217FEC845FE5AF0FEC018FE28
-:1013C00043482D9336FE34F4FE0011FE40102DB438
-:1013D00036FE34F404FE34102DFE0B00364663FE58
-:1013E0002810FEC049FF020054B2FE900148FEFAE8
-:1013F0001845FE1CF43FF3FE40F496FE56F0FE0C3A
-:1014000019FE04F458FE40F494F63E2D934ED00D90
-:1014100021FE7F01FEC846FE24138C005D2621FEBE
-:101420007E01FEC845FE141321FE8001FE4845FAE8
-:1014300021FE8101FEC8444E260213070278455062
-:10144000130D021407010817FE8219140D01081765
-:10145000FE8219141D010817FE82195FFE894901D9
-:1014600008021407010817C1141D010817C1140749
-:10147000010817C1FE8949010817C15FFE894A01A9
-:1014800008025002140701081774147F010817742A
-:10149000141201081774FE89490108177414000119
-:1014A000081774FE894A01081774FE0949010817D4
-:1014B000745FCC01080221E40907FE4C13C820E444
-:1014C000FE49F4004D5FA15EFE01ECFE2701CCFF5A
-:1014D0000200102FFE3E1A014309FEE300FE221314
-:1014E00016FE641A26209E0141219E09075D010C0B
-:1014F000610744020A5A0118FE0040AA091AFE12A6
-:10150000130A9D0118AA0A6701A3020A9D0118AADD
-:10151000FE80E71A091A5DFE455801FEB216AA02BE
-:101520000A5A0118AA0A6701A3020A5A011801FE01
-:101530007E1EFE804CFE49E41AFE12130A9D01181D
-:10154000FE804C0A67015C021C1A877CE5FE18DFEE
-:10155000FE19DEFE241CFE1DF728B1FE041B01FE51
-:101560002A1CFAB3287CFE2C01FE2F1902C92BFE7F
-:10157000F41AFEFA101C1A8703FE6401FE00F4241C
-:10158000FE185803FE6601FE1958B32401FE0E1F13
-:10159000FE30F407FE3C507CFE3800FE0F79FE1C46
-:1015A000F724B1FE501BFED4143102C92BFE261BBA
-:1015B000FEBA101C1A87FE835AFE18DFFE19DEFEE3
-:1015C0001DF754B1FE721BFEB214FCB3547C12FE24
-:1015D000AF19FE98E70002C92BFE661BFE8A101C9D
-:1015E0001A878B0FFE309004FEB0933A0BFE18580A
-:1015F000FE329004FEB2933A0BFE19580EA8B34A7D
-:101600007C12FE0F79FE1CF74AB1FEC61BFE5E146B
-:101610003102C92BFE961B5CFE02F61A87FE18FEED
-:101620006AFE19FE6B01FE1E1FFE1DF765B1FEEE80
-:101630001BFE3614FE1C13B3653EFE8358FEAF1925
-:10164000FE80E71AFE81E71A15FEDD007A30027A85
-:1016500030FE12452BFEDC1B1F0747B5C30535FEC8
-:1016600039F0752602FE7E18231D361311028703FA
-:10167000E32307FEEF12FEE110903460FE028009C2
-:1016800056FE3C13FE8214FE421351FE06830A5A94
-:101690000118CBFE3E12FE4148FE454801FEB2163F
-:1016A000FE00CCCBFEF3133F89091AA50A9D011851
-:1016B000FE804C0185FE1610099B4EFE4014FE2450
-:1016C00012FE1456FED6F0FE521C1C0D02FE9CE7C4
-:1016D0000D19FE1500408D3001F41C070251FE0665
-:1016E00083FE1880612844155601851C0702FE38C8
-:1016F00090FEBA9091DE7EDFFE485531FEC955025C
-:1017000021B98820B9020ABA0118FE41480A5701D6
-:1017100018FE49441BFE1E1D8889020A5A01180939
-:101720001AA40A6701A30A570118888902FE4EE429
-:101730001D7BFE521D03FE9000FE3A45FE2C10FE5E
-:101740004EE4DD7BFE641D03FE9200D112FE1A10F2
-:10175000FE4EE4FE0B007BFE761D03FE9400D124BA
-:10176000FE081003FE9600D163FE4E4583CAFF04B7
-:101770006854FEF1102349FE081CFE6719FE0A1C7E
-:10178000FE1AF4FE000483B21D48FEAA1D131D02BA
-:101790000992FE5AF0FEBA1D2E93FE34100912FE75
-:1017A0005AF0FEC81D2EB4FE2610091D362E63FE0B
-:1017B0001A10090D362E94F20907362E95A1C8028B
-:1017C0001F930142FE04FE99039C8B022AFE1C1EFD
-:1017D000FE14F0082FFE0C1E2AFE1C1E8FFE1C1E7F
-:1017E000FE82F0FE101E020F3F04FE8083330B0EBC
-:1017F000020FFE188004FE9883330B0E020FFE02C8
-:101800008004FE8283330B0E020FFE068004FE86E8
-:1018100083330B0E020FFE1B8004FE9B83330B0EE3
-:10182000020FFE048004FE8483330B0E020FFE8041
-:101830008004FE8083FEC9470B0E020FFE1981044F
-:10184000FE9983FECA470B0E020FFE068304FE8636
-:1018500083FECE470B0E020FFE2C9004FEAC933A93
-:101860000B0E020FFEAE9004FEAE93790B0E020F2C
-:10187000FE089004FE88933A0B0E020FFE8A900435
-:10188000FE8A93790B0E020FFE0C9004FE8C933AA5
-:101890000B0E020FFE8E9004FE8E93790B0E020F3C
-:1018A000FE3C9004FEBC933A0B0E028B0FFE0380AD
-:0E18B00004FE8383330B770EA802FF66000050
-:00000001FF
-/* Microcode buffer is kept after initialization for error recovery. */
diff --git a/firmware/advansys/mcode.bin.ihex b/firmware/advansys/mcode.bin.ihex
deleted file mode 100644
index cd160d938667..000000000000
--- a/firmware/advansys/mcode.bin.ihex
+++ /dev/null
@@ -1,147 +0,0 @@
-:100000003F452C01010301190F0000000000000012
-:10001000000000000F0F0F0F0F0F0F0F0000000068
-:1000200000000000000000000000000000000000D0
-:1000300000000000000000000000000000000000C0
-:100040000000000000000000C3120D0501000000C8
-:1000500000FF000000000000FF80FFFF0100000023
-:10006000000000000000002300000000000700FF67
-:1000700000000000FFFFFF00000000000000E48817
-:100080000000000080734804360000A2C2008073A4
-:1000900003233640B600360005D60CD212DA00A291
-:1000A000C20092801E985000F5004898DF23366009
-:1000B000B60092804F00F5004898EF233660B600F6
-:1000C000928080629280004615EE13EA020109D800
-:1000D000CD044D0000A3D600A6977F2304618401C0
-:1000E000E684D2C18073CD044D0000A3DA01A69747
-:1000F000C681C28880738077000101A1FE004F0095
-:10010000849707A6080100330300C288030301DEB9
-:10011000C288CE006960CE0002034A6000A2780166
-:10012000806307A62401788103038063E20007A6A9
-:10013000340100330400C2880307020104CA0D23FE
-:1001400068984D04048505D80D236898CD041523BF
-:10015000F888FB23026182018063020306A3620127
-:1001600000330A00C2884E0007A36E0100330B0063
-:10017000C288CD04362D00331A00C288500488810D
-:1001800006AB820188814E0007A39201500000A3B4
-:100190003C0100057C814697020105C60423A001AD
-:1001A0001523A101BE81FD23026182010ADA4A0002
-:1001B000066100A0B4018063CD04362D00331B001E
-:1001C000C28806236898CD04E684060100A2D40103
-:1001D000576000A0DA01E6848023A001E6848073E2
-:1001E0004B00066100A2000204010CDE020103CCF8
-:1001F0004F008497FC810823024182014F006297DF
-:1002000048048480F0970046560003C00123E800AC
-:1002100081730629034206E203EE6BEB1123F88893
-:100220000498F0808073807707A42A027C9506A644
-:10023000340203A64C044682040103D8B4986A969B
-:100240004682FE95806783038063B62D02A66C020A
-:1002500007A65A0206A65E0203A66202C2887C9521
-:100260004882609648820423A0011423A1013C84A3
-:1002700004010CDCE0232561EF0014014F04A80108
-:100280006F00A5010323A40106239C01242B1C015C
-:1002900002A6AA0207A65A0206A65E0203A6200428
-:1002A00001A6B40200A6B40200331200C288000EF8
-:1002B0008063004300A08C024D0404010BDCE723A3
-:1002C00004618401103112351401EC006C38003FD8
-:1002D0000000EA821823046118A0E2020401A2C807
-:1002E00000331F00C28808310A350C390E3D7E9854
-:1002F000B62D01A6140300A6140307A60C0306A638
-:10030000100303A6200402A66C0200333300C28847
-:100310007C95EE826096EE82829880427E9864E4BC
-:1003200004012DC83105070100A2540300438701D1
-:10033000050586987E9800A6160307A64C0303A61B
-:100340003C0406A6500301A6160300332500C2880C
-:100350007C95328360963283040110CE07C8050570
-:10036000EB0400330020C020816272830001050588
-:10037000FFA27A03B1010823B2012E8305051501FE
-:1003800000A29A03EC006E0095016C38003F00005B
-:1003900001A6960300A69603108480427E9801A6CB
-:1003A000A40300A6BC031084A898804201A6A4035D
-:1003B00007A6B203D4837C95A88300332F00C2889C
-:1003C000A898804200A6BC0307A6CA03D4837C95E4
-:1003D000C08300332600C288382B80328036042345
-:1003E000A0011223A101108407F006A4F403806B7E
-:1003F000806705238303806303A60E0407A6060413
-:1004000006A60A0400331700C2887C95F483609620
-:10041000F483208407F006A42004806B8067052302
-:1004200083038063B62D03A63C0407A6340406A606
-:10043000380400333000C2887C9520846096208484
-:100440001D0106CC00330084C0200023EA00816235
-:10045000A20D806307A65A0400331800C288030364
-:100460008063A30107A46404230100A286040AA0F8
-:100470007604E00000331D00C2880BA08204E00077
-:1004800000331E00C2884223F888002322A3E6041A
-:10049000082322A3A204282322A3AE04022322A31A
-:1004A000C4044223F8884A00066100A0AE04452334
-:1004B000F888049800A2C004B49800330082C020D9
-:1004C0008162E8814723F88804010BDE0498B49820
-:1004D00000330081C0208162140100A00002432388
-:1004E000F8880423A0014423A10180734D0003A3D5
-:1004F000F40400332700C288040104DC0223A201B3
-:100500000423A001049826954B00F6004F044F00E9
-:1005100000A3220500057600066100A21C050A85DD
-:100520004697CD04248548048480020103DA8023A1
-:10053000820134850223A0014A00066100A2400521
-:100540001D0104D6FF2386414B60CB00FF238001B1
-:1005500049008101040102C830018001F704030150
-:1005600049048001C90000050001FFA0600577046F
-:100570000123EA005D00FEC700620023EA00006379
-:1005800007A4F805030302A08E05F48500332D00AF
-:10059000C28804A0B80580630023DF004A0006611A
-:1005A00000A2A4051D0106D60223024182015000CB
-:1005B00062970485042302418201048508A0BE05D8
-:1005C000F48503A0C405F48501A0CE0588008063EE
-:1005D000CC8607A0EE055F00002BDF0800A2E60531
-:1005E0008067806301A27A067C8506236898482389
-:1005F000F88807238000068780637C850023DF005E
-:1006000000634A00066100A236061D0116D4C0230D
-:1006100007418303806306A61C0600333700C288A7
-:100620001D0101D620236360830380630223DF0062
-:1006300007A67C05EF046F0000634B000641CB006A
-:100640005200066100A24E061D0103CAC0230741E5
-:1006500000631D0104CC00330083C020816280232D
-:1006600007410063806708238303806300630123DD
-:10067000DF0006A6840607A67C058067806300333A
-:100680000040C020816200630000FE958303806308
-:1006900006A6940607A67C05000001A01407002BFF
-:1006A000400E8063010006A6AA0607A67C05400E40
-:1006B0008063004300A0A20606A6BC0607A67C0530
-:1006C0008067400E806307A67C050023DF0000637F
-:1006D00007A6D60600332A00C28803038063890078
-:1006E0000A2B07A6E80600332900C288004300A2AF
-:1006F000F406C00E8063DE86C00E00330080C0208A
-:100700008162040102DA80637C85807B806306A6B7
-:100710008C0600332C00C2880CA22E07FE958303A2
-:10072000806306A62C0707A67C0500333D00C2881F
-:1007300000008067830380630CA0440707A67C0544
-:10074000BF2304618401E6840063F0040101F10029
-:100750000001F20001058001720471008101700442
-:10076000800581050063F004F20072040101F100CC
-:1007700070008101700471008101720080017104B8
-:100780007000800170040063F004F2007204000144
-:10079000F10070008001700471008001720081011D
-:1007A000710470008101700400630023B3018305AC
-:1007B000A301A201A1010123A0010001C80003A11E
-:1007C000C40700330700C28880058105040111C8F1
-:1007D0004800B001B1010823B201050148040043FB
-:1007E00000A2E4070005DA870001C800FF238001AA
-:1007F00005050063F7041A09F6086E040002804339
-:100800007608800277040063F7041A09F6086E047C
-:10081000000200A0140816880043760880027704BE
-:100820000063F3040023F40074008043F400CF401D
-:1008300000A2440874040201F7C9F6D9000101A11D
-:10084000240804982695248873040063F30475042F
-:100850005A88020104D84697049826954A8875005C
-:1008600000A3640800054E8873040063807B8063E6
-:1008700006A6760800333E00C28880678303806343
-:100880000063382B9C88382B928832093105929866
-:100890000505B209006300320036003A003E0063ED
-:1008A00080328036803A803EB43D0063382B40323F
-:1008B0004036403A403E00635A20C94000A0B40888
-:1008C0005D00FEC300638073E6200223E8008273AC
-:1008D000FFFD80731323F8886620C0200423A00145
-:1008E000A123A1018162E28880738077680000A261
-:1008F000800003C2F1C74123F8881123A10104231A
-:04090000A001E684E8
-:00000001FF
-/* Microcode buffer is kept after initialization for error recovery. */
diff --git a/firmware/atmsar11.HEX b/firmware/atmsar11.HEX
deleted file mode 100644
index dfddc190ac24..000000000000
--- a/firmware/atmsar11.HEX
+++ /dev/null
@@ -1,204 +0,0 @@
-:04000000A0D0F0009C
-:2C008000401A680000000000335B007C13600005335B10003C1AA0C0375A018003400008000000001760FFFB335B400020
-:2C00AC00401A700013600003241B0FC0AF9B45002508000803400008420000108F810C9032220002104000033C03A0D174
-:2C00D8002463F8100060F809242100011000001AAF810C9082020011AF900C480441000A34420080967D000296020012A4
-:2C01040000000000105D00110000000004110161A66200021000000DAE62000C34848000A20200114D01FFFF000000005E
-:2C0130008F834C0000000000AF830FEC00E0F80903E03821000414000440FFF700000000AF80460C8E1000084D01FFFF36
-:2C015C00000000008F834C004900001DAF830FEC8F820CBC8F9D0C4C2442000197BE0000AF820CBC13C00009ACA200D872
-:2C018800A7A000003C0100D1003E08259422002C0411013FA4220002AC22000CAC2000108F9E0C5427BD000217BE00028C
-:2C01B4008CA200C08F9D0C508F970FC8AF9D0C4C12E20005878040023C02A0D12442F94C0040F8090000000000E0F8094A
-:2C01E00003E038214500FFDC8E11000C3C1300D1001111022C4304001060FFB900021180026298218E76003C32220008C1
-:2C020C001440FFB78E7700348E7500303C03CFB016C0000302D5102B041100BE000000001040FFA6007018264D01FFFFE5
-:2C023800000000008F824C00AF974C00AF820FECAC7600100260902132220002104000078F944A009602003A3484000492
-:2C02640014400003AF820FBC3C029000AF820FBC8E10000832943F008E11000C2694FF00128000733C1300D14901007162
-:2C0290003237000816E0006F001111022C4304001060006C0002B980000417400440003A027798211272002326D60030E0
-:2C02BC00AE56003C8E76003C8E7700348E7500303C03CFB016C0000302D5102B0411009100000000104000602E8210006B
-:2C02E80014400009007018264D01FFFF000000008F824C00AF974C00AC760010AE4200341000FFD0AF80460C00E0F8090D
-:2C03140003E038213C03CFB000701826AE4600344D01FFFF000000008F824C00AF974C00AF820FECAC7600101000FFC382
-:2C034000AF80460C02D5102B104000423C17CFB02E8210001440000602F0B8264D01FFFF00000000AEF600101000FFB8E9
-:2C036C00AF80460C00E0F80903E038214D01FFFF000000008F824C00AF864C00AEF60010AF820FEC1000FFAEAF80460C7F
-:2C0398003084FFFB8E5700383242FFC000021182A7820FB8AF970FB4865D002A865E0008A79D0FBA279D0F1833DE00604B
-:2C03C40003BEE821001EF0C203BEE8218F970C584D01FFFF000000008F834C008FA2001C12E300033C030C403C1EC0008B
-:2C03F000AF9E0FBCAC620FB48FA300182442000C14430002AF80460C8FA20014AE40003CAFA2001C8E76003C8E7700340D
-:2C041C008E7500303C03CFB016C0000302D5102B0411003C00000000007018264D01FFFF00000000ACA500E410400032D6
-:2C044800AF974C001000FF7FAC760010000417400440000726D60030AE56003C00E0F80903E03821AF80460C1000FF393E
-:2C047400AE4600348E5700383242FFC000021182A7820FB8AF970FB48F970C5800E0F80903E0382112E600033C030C4029
-:2C04A0003C02C000AF820FBC865D002A865E0008A79D0FBA279D0F1833DE006003BEE821001EF0C203BEE8218FA2001C23
-:2C04CC004D01FFFF000000008F974C00AC620FB43084FFFB8FA300182442000C14430002AF80460C8FA20014AE40003CC2
-:2C04F800AFA2001C4D01FFFF00000000ACA500E41000FF13AF974C0000E0F80903E038211000FF0F000000001040005B50
-:2C052400867E0008279D0F1833DE006003BEE821001E10C203A2E8218FB700088FA2000C8EF6000412E2002886620008BC
-:2C05500082030010000217400441001924630001106000173C02D1B0005010264D01FFFF000000008F9E4C00AC56001008
-:2C057C0026D6FFFE860200103C03CFB034632000A662002A8EE2000026F70008AE6200388FA20020AFB700082417FFFF46
-:2C05A80002C2A8214D01FFFF00000000AF9E4C0003E00008AE7500308EE2000026F70008AE6200388FA20020AFB70008DB
-:2C05D4002417FFFFA677002A02C2A8213C03CFB003E00008AE750030001E18C2006518218C6300C88FA200100000000064
-:2C0600000062B0231EC000038FA1000412C0001B0022B0232EC30041146000023C1500402416004000161E80000318829E
-:2C062C00007518254D01FFFF000000008F954C00001EB84000771821AC624D00005610211441000227830D008FA200004D
-:2C06580002E3B821AFA2001002D71821AFA3000C4D01FFFF000000008EF600041000FFB5AF954C003C16DEADAE76003C82
-:2C068400AE60003826D5FFFF0000102103E00008AE7500302C430AB2106000052C4324B21000000424020AB210000002AF
-:2C06B000240224B11060FFFD304301FF000318403C1DA0D127BDD6CC007D1821946300000002EA4200031C0027BDFFFBC1
-:2C06DC0003E0000803A3100624030FC0AF83450010000002012060213C0CCFB011E000560189602685FE00000000000089
-:2C07080013C000473C02CFB007C0002D001E1F8004610034001E1FC0046000093C02D3B000E0F80903E038214D01FFFF10
-:2C073400000000008F864C008F990FEC1000000BAF994C0001E2782600E0F80903E038214D01FFFF000000008F864C001B
-:2C076000AF994C00ADEF20103C02D3B001E278268F820FC08F830FC4AF824D008DE20004A5E00000AC6200008C62000094
-:2C078C0024020380AF824D008F824D008F820F1424630004146200022419FFFF8F830F10ACA500E4AF830FC44D01FFFF93
-:2C07B800000000008F824C801000001FADE2003C00E0F80903E038214D01FFFF00000000A5E000008F864C001580002238
-:2C07E400AF8F45401000001701E2782600E0F80903E038214D01FFFF000000008F864C00AF994C00ADEF20103C02CFB097
-:2C08100001E27826A5E000004D01FFFF00000000100000078F994C0000E0F80903E038214D01FFFF000000008F864C0015
-:2C083C008F990FEC1580000AAF8F45000000782110000014AF19001400E0F80903E038214D01FFFF000000001180FFF8C1
-:2C0868008F864C0085220000012078210440000A8D290008130B0004000C1602AF1900148D7900140160C021AF994C0084
-:2C089400AD8E40103042003F01C27021000417800440018B8F824A0030818000304200041440FF8D8D4B00001020000C47
-:2C08C00030847FFF8F820C480120F021244300348C5D000C24420004AFDD000C1462FFFC27DE0004A52100001000FF82E0
-:2C08EC00250800081160005800000000857D00088D63000C9562000A8D41000407A1002600621821A563000A00031C026D
-:2C091800041101A0000318C0001D16C00441001F27A2008000021CC00461000E0040E82127BD0080956200009563000293
-:2C0944003442000CAD22000C24020100A52200109562002CA5230014A5220012A520001634028000A5220000A57D0008D2
-:2C09700007A0000C8F820C4C8F830C502441FFE80023F02B13C000020020102124420400945E00002441FFFE17C0FFF994
-:2C099C00AD620010A44B0000142B001CAD400000AD400004254A00083142007F1440000E00041780044100038F820FE03A
-:2C09C800100000063484000134840002244200083442100038421000AF820FE0354A0100394A010039420080AF820FE4B9
-:2C09F400001D14C00441000333A2EFFF1000FF3CA562000807A0009F33A2FFFE10000021A56200088D620024001D1CC01D
-:2C0A200004610004AD42000033A3EFFF1000FF31A563000807A0000533A3FFFEA56300088D4B00001000FFAA000000001E
-:2C0A4C001000008E25080008254A00083142007F1440000E00041780044100038F820FE010000006348400013484000274
-:2C0A7800244200083442100038421000AF820FE0354A0100394A010039420080AF820FE4110000038D4B00001000FF9303
-:2C0AA4002508FFF88F820FD88F830FDC8F810FD41062001D246200084D01FFFF000000008F8C4C00847F00003C1E00D11C
-:2C0AD00033FD03FF001D5980017E5821857E0008001DE900001E0F0003E1F82507E00003AF820FDC879E0CA0278B0C986E
-:2C0AFC0007C100423C0208403C01F7B08D62002000230826AC2200008C620004946300022442FFF8004310211000004E12
-:2C0B2800AD6200208F820FD087830CA014220007278B0C98410000513C018000ACA100E08CA100C4000000001022004C4E
-:2C0B54000022E8238F9F0F0C07A10002AF810FD403E2E8232FA30041146000023C1E0040241D0040001D1E800003188256
-:2C0B8000007E18254D01FFFF000000008F8C4C00AC624CC0005D1021145F000227830CC08F820F0803A3F021AF820FD059
-:2C0BAC00AF9E0FD84D01FFFF000000001000FFC3246200088D63000C8D7D0010A563000A13A0000200031C02A7A00000F8
-:2C0BD800000318C0041100EF006818214D01FFFF000000008F820C448F830C40AD620010A5630004A563000610000021FC
-:2C0C0400AF8C4C00A57D00008C7D000494630002AC5D4C4027A20008AD62001803A3E82127BDFFF4AD7D001C27BD0004D4
-:2C0C3000AD7D002037C18001001E17C00441FFE0A56100084D01FFFF000000008F820C448F830C40AD620010A563000478
-:2C0C5C00A56300068F820FD88F830FDC4D01FFFF000000001462FF9524620008AF8C4C0087830CA0278B0C980461FE97F8
-:2C0C88000004170004400005956200001178000600000000AF0E0010A70D00043084FFF7956D00048D6E001025ADFFD075
-:2C0CB40005A1FE8FAD22000C3C0CFFB001896026000D182225AD00308D7E00188D61001C4D01FFFF00000000103E0036B9
-:2C0CE0008F9D4C003C010840AC3E4C4027DE000811A00017AD7E0018000DF600019E60254D01FFFF00000000AD8E40105F
-:2C0D0C008F8D0C40957E00068F8E0C4403CDF021A57E0006000CF782000C0E0203C1F021001E0F80000C6200000C6202C2
-:2C0D38000181602533DE003C019E60213401000110000008A5210000957E00064D01FFFF000000008F8D0C408F8E0C44CD
-:2C0D640003CDF021A57E00064D01FFFF0000000001A3F02B17C000080003F60001A36823019E6025018960264D01FFF7CF
-:2C0D9000000000001000FE58AF9D4C008D7E00188D61001C00000000143EFFCE006D18234D01FFFF000000002C61000864
-:2C0DBC001020001795610008000000000001FF8007E0000B34210002006D182100031E000183602501896026240D002CC0
-:2C0DE800A56100084D01FFFF000000001000FE40AF9D4C003C1F0C40AFFE4FA83021FFFDA56100083C0CD3CF358CE0006E
-:2C0E140010000008340300023C1F0C40AFFE4FA811A0FFF9000DF60034030003019E6025018960263484000834420002C4
-:2C0E4000AD22000C95620006A5230000AD2200384D01FFFF00000000857E00088F820FA897830FACAD22000433C17FFFA6
-:2C0E6C00AD600010A56100081060FE20AF9D4C00A57E00080003190030633FF0A56300008F820FB03C030840AC624C4007
-:2C0E980024430008AD63001897830FAE2442FFF400621821AD63001C4D01FFFF000000008F8D0C408F830C44A56D000474
-:2C0EC400A56D0006AD6300101000FE0AAF9D4C008F820FE000040FC08C4300000421001B8F9F0FE48C5D0004AC4000043A
-:2C0EF0001060000EAC400000000000009462002800000000005F10208C4100040000000010200003AC43000410000002B6
-:2C0F1C00AC230024AC43000017A3FFF48C6300248F820FE03BFF0080244200083442100038421000AF820FE0AF9F0FE46E
-:2C0F48001000FE573084FFFE1060001000000000947D00280000000003BFE8208FA10004AFA30004102000038C5E000439
-:2C0F740010000002AC230024AFA300008C61002417C3FE48AC410000AC400004AC4000001000FE443084FFFD2C6201006F
-:2C0FA0001440000E006A10213143007F01431823004318233062007FA562002800621823000319028F820FE02463FFF8BF
-:2C0FCC000062182134631000100000033863100034430100386301008C6200040000000010400003AC6B000403E000089A
-:0C0FF800AC4B002403E00008AC6B0000D0
-:02000004A0D08A
-:2CD5000000000002A0D0E00000000000000010000000000600000008000000000000000800000002A0D0D64800000000F7
-:2CD52C00000008880000000000000000000000000000000024313200243132002431320000000000244D43522420436FB2
-:2CD558007079726967687420286329204D61646765204E6574776F726B73204C746420313939352E20416C6C207269674C
-:2CD584006874732072657365727665642E004D6164676520416D6261737361646F722076312E303100000000000000012C
-:2CD5B00000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004E
-:2CD5DC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023
-:2CD608000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6
-:0CD6340000000000FFF0400000000000BB
-:2CF000000C343E2D000000003C1CA0D1279C56383C1DA0D127BDDFD03C08A0D12508DFD0AF8780080C343C1300000000E4
-:2CF02C00240400030097000D3C08BFC0350802308D08000000000000010000080000000027BDFFD0AFBF001CAFB1001864
-:2CF05800AFB000143C11FFF0000080213C18005637183B7926190200172000020319001A0007000D2401FFFF172100056B
-:2CF08400000000003C01800017010002000000000006000D00001012001018403C05A0D124A5D6CC00A32021A4820000C5
-:2CF0B000261000012A0102001420FFEA000000003C06A0D124C6F9E43C07A0D124E7D648ACE600003C08A0D12508FB14D9
-:2CF0DC00ACE800043C09A0D12529FC94ACE900083C0AA0D1254AFCD4ACEA000C3C0BA0D1256BFBA8ACEB00103C0CA0D15C
-:2CF10800258CFBC4ACEC00143C0DA0D125ADFBE0ACED00183C0EA0D125CEFBFCACEE001C3C0FA0D125EFFC18ACEF0020AD
-:2CF134003C18A0D12718FC34ACF800243C19A0D12739FC50ACF900283C02A0D12442FC60ACE2002C3C03A0D12463FC70A6
-:2CF16000ACE300303C04A0D12484FC80ACE400343C05A0D124A5FCB4ACE500383C06A0D124C6FE08ACE6003C3C08A0D111
-:2CF18C002508FE90ACE800403C09A0D12529FA38ACE900443C0AA0D1254AFA74ACEA0048241000133C0BA0D1256BF9D8E7
-:2CF1B800001060803C0EA0D125CED64801CC6821ADAB0000261000012A0100201420FFF6000000008F988000000000006F
-:2CF1E400AF0001008F828000241903FFA4590202000080218F86800024030FFF0010204024C7038000E42821A4A30000C1
-:2CF21000261000012A0100081420FFF7000000008F89800034089C40AD2803A08F8B80003C0A00FF354AFFFFAD6A03A4FC
-:2CF23C00000080218F8F8000240C0FFF0010684025F80300030D7021A5CC0000261000012A0100081420FFF700000000AB
-:2CF268008F82800034199C40AC5903208F8480003C0300FF3463FFFFAC8303248F868000240502FFA4C502023C08A0C00C
-:2CF29400350801803C09A0D12529D5B8250A00288D0B00008D0C0004AD2B0000AD2C000425080008150AFFFA252900081B
-:2CF2C0004002600000000000AFA20028240300223C04A0E034840014AC8300008FA500280000000034A6100100C01021CB
-:2CF2EC00AFA600283C07FFBF34E7FFFF00C7382400E01021AFA7002840876000000000003C0800023508D8903C09FFFE59
-:2CF3180035290130AD2800008FAA00283C0BF000014B582501601021AFAB002801606021408C6000000000000000802141
-:2CF3440000107080022E7821ADE00000261000012A0104001420FFFA00000000241800013C19A0E8AF380000240200117C
-:2CF370003C03A0F034630017A06200003C04F0EB348400703C05FFF034A54A00ACA400003C06FCEB34C60070ACA6000027
-:2CF39C003C07FFF034E74700ACE00000000080213C08FFF035080FC03C09FFF035294500AD280000261000012A01000433
-:2CF3C8001420FFF800000000000080213C0ADEAD001059803C0100D1002B0821AC2A003C3C0100D1002B0821AC200030C1
-:2CF3F4003C0100D1002B0821AC200038240DFFFF3C0100D1002B0821AC2D0014001071003C0100D1002B0821A42E000054
-:2CF420003C0100D1002B0821A4200004241800203C0100D1002B0821A43800083C0100D1002B0821AC200010261000017F
-:2CF44C002A0104001420FFE00000000000008021001018C03C05A0D124A5E00000A32021AC8000003C07A0D124E7E000BF
-:2CF4780024E8000401033021ACC00000261000012A0100091420FFF300000000240903803C0AFFF0354A4D00AD4900005F
-:2CF4A4003C0CA080358C009CAD8000003C0DA08035AD00A0ADA000003C0E11003C0FA08035EF00A8ADEE000041010003A0
-:2CF4D000000000004100FFFF000000003C18A080371800E08F1900003C01A0D1AC39D6C80C343D43032020218FB00014DE
-:2CF4FC008FBF001C8FB1001803E0000827BD00300080B8213C1CFFF0A3800C84A3800C888F90440000002021AF800CBC7E
-:2CF52800240200A827830F002C5D004017A0000C3C1DFFB003A3E826AFB740000000000000000000000000004D01FFFFF6
-:2CF55400000000002442FFC0246300401000FFF326F700401040000D000000000002EE003C01004003A1E8253C01FFF099
-:2CF5800003A1E82603A3E826AFB740000000000000000000000000004D01FFFF000000003C05A0808F820F08000000007E
-:2CF5AC00AF820FD4AF820FD0ACA200C48F820F100000000000021D82AF830FC000031D80004310233C01A0800041102542
-:2CF5D800AF820FC4AF820F108F820F1400000000004310233C01A08000411025AF820F1424030003279D0F1824BE00C823
-:2CF6040027810D008FA2000000000000AFA20010AFC20000AFA10008AFA1000C8FA2001400000000AFA2001C27BD0024B4
-:2CF6300027DE0004242100401460FFF32463FFFF8F820F0000000000AF820FC8ACA200C0278208002403000FAC4000002C
-:2CF65C00244200041460FFFD2463FFFF8F830FC000000000AF834D008F834D008F830F148F820F102463FFFCAC40000091
-:2CF688001443FFFE2442000424020380AF824D00279D0F1827A100908FA200148FA3001800000000006218232C7F004017
-:2CF6B40017E000093C1F004037FF080003A0F0214D01FFFF00000000AFE20000244200401000FFF62463FFC01060000659
-:2CF6E00037FF080000031E0003E3F8254D01FFFF00000000AFE2000027BD002417A1FFE800000000000038218FC200145A
-:2CF70C008FC3001800000000006218232C7F004013E000043C1F004000030E001000000203E1F8252403004037FF080084
-:2CF73800241E03E7000008214D01FFFF00000000AFE20000002308214900FFFB000000008780400217C0FFF827DEFFFFCA
-:2CF7640014E0000434E7400003E7F8251000FFF0AF810C60AF810C5C3C01A0D18C22D6C8000000003C01A080AC2200E0E7
-:2CF790003C01A0808C2000E0AF800FB4A7800FB8A7800FBAA7800FBCA7800FBE27820CC0AF820FDCAF820FD83C02A0D156
-:2CF7BC002442DACCAF820C4CAF820C5024420400AF820C542402001E3C03FFF0247D0040AC7D000803A018211440FFFC55
-:2CF7E8002442FFFF3C1DFFF0AC7D00083C02C7043442DD7BAF820C583C07000024E7015808343FA9000000008E620038B9
-:2CF8140000000000144000058F830C9412A000222463000110000020AF830C94AF820FB43262FFC0000211828663002A70
-:2CF84000A7820FB83C02A000AF820FBCA7830FBA867E0008279D0F1833DE006003BEE821001EF0C203BEE8218FA2001CC6
-:2CF86C003C030C404D01FFFF000000008F974C00AC620FB48FA300182442000C14430003000000008FA2001400000000FB
-:2CF89800AFA2001C4D01FFFF00000000ACA500E4AF974C0003E00008AE60003C3C0DA0D125ADD50011A00021000000005C
-:2CF8C4008DA90000000000001120001D000000008DAA00048DAB00088DAC000C0009474005010004000000003C08A0D185
-:2CF8F0002508D638014850210009478005010007000000001180000D00000000AD400000254A00041000FFFB258CFFFC66
-:2CF91C0011800007000000008D6E0000256B0004AD4E0000254A00041000FFF9258CFFFC1000FFE125AD001003E00008B9
-:2CF94800000000003C021040AC574FF0000000000000000000000000000000004D01FFFF000000008F820FFC000000005B
-:2CF974003042001F000210803C17A0D102E2B82126F7D6488EF700000000000002E00008000000002402FFFFAF820FFCB9
-:2CF9A0008F970FC83C021040AC570FF08F820F0426F7001016E20004AF970FC88F970F0000000000AF970FC84D01FFFFA6
-:2CF9CC000000000003E00008000000003C1FA0D127FFF02C1000FFED8F970FF03C0200D132F703FF0017B98002E2B825AA
-:2CF9F800AEE0003C2402FFFFAEE20030AEE2001497830FF497820FF83C1D000027BD0698A6E30008A6E20002AF9F0FE819
-:2CFA240003A0F809A6E2002C8F9F0FE81000FFD9AEE2000C8F970FF03C0200D132F703FF0017B98002E2B82597820FF429
-:2CFA50003C03000024630698A6E20002AF9F0FE80060F809A6E2002C8F9F0FE81000FFCAAEE2000C8F970FF03C0200D174
-:2CFA7C0032F703FF0017B98002E2B82597820FF40000000096E30008A6E2000800431026304200601040FFBD8EE2003CF2
-:2CFAA800AEE0003C1040FFBA3C028800AF820FBC8EE20038AEE0003830630060279D0F1803A3E821000318C203A3E82116
-:2CFAD4008FA3001C1040FFAFAF820FB43C020C40AC430FB48FA200182463000C14430003000000008FA30014000000000E
-:2CFB0000AFA3001C4D01FFFF000000001000FFA2000000008F970FF03C0200D1A7970FB80017B98032F7FFC002E2B82140
-:2CFB2C00AEE000303C02DEAD8EE3003CAEE2003C8EE200381060FF95AEE000383C038800AF830FBC86E3000827970F1821
-:2CFB58003063006002E3B821000318C202E3B8218EE3001C1040FF8AAF820FB43C020C40AC430FB48EE200182463000C84
-:2CFB840014430003000000008EE3001400000000AEE3001C4D01FFFF000000001000FF7D000000008F820FF08F970FF4B8
-:2CFBB0009041000000000000003708251000FF76A04100008F820FF08F970FF49441000000000000003708251000FF6F9E
-:2CFBDC00A44100008F820FF08F970FF48C41000000000000003708251000FF68AC4100008F820FF08F970FF49041000040
-:2CFC080002E0B827003708241000FF61A04100008F820FF08F970FF49441000002E0B827003708241000FF5AA4410000DB
-:2CFC34008F820FF08F970FF48C41000002E0B827003708241000FF53AC4100008F820FF08F970FF41000FF4FA05700009D
-:2CFC60008F820FF08F970FF41000FF4BA45700008F820FF08F970FF41000FF47AC5700008F820FF0000000008C4200007A
-:2CFC8C001000FF42AF820FF43C01A0C28C22C00000000000AF820FF03C01A0C28C22C0041000FF3AAF820FF43C01A0D14E
-:2CFCB8008C22D5AC00000000AF820FF03C01A0D18C22D5B01000FF32AF820FF43C02A0F0AC400000905701530000000076
-:2CFCE400A3970C809057015700000000A3970C819057015B00000000A3970C879057015F00000000A3970C8690570163BA
-:2CFD10000000000032F70007A3970C859057019300000000A3970C8B9057019700000000A3970C8A9057019B00000000AE
-:2CFD3C0032F70007A3970C899057000B0000000032F700E000170942905700470000000032F700780037082590570067BE
-:2CFD68000000000032F7000F0017B9C000370825905700C70000000032F7002F0017BAC000370825905701470000000019
-:2CFD940032F7001E0017BC0000370825905701830000000032F700600017BC0000370825AF810C8C3C0218408F970FC83F
-:2CFDC000000000008F970FF000000000AC570C800000000000000000000000000000000000000000000000004D01FFFF17
-:2CFDEC00000000003C02A0D12442F998AF800C90AF800C94004000080000000087970FF03C1300D1A67700083C030000C2
-:2CFE180024630520AF9F0FE80060F809240200018F9F0FE81040FEDA97970FF027830F18007718210017B8C202E3B821FB
-:2CFE44003C028800AF820FBC8E620038A7800FB8AF820FB48EE3001C3C020C40AC430FB48EE200182463000C1443000487
-:2CFE7000AEE3001C8EE3001400000000AEE3001C4D01FFFF000000001000FFDF000000008F820C5C8F830C60AF820FF026
-:2CFE9C001000FEBEAF830FF423890800012018212402000F206C0040AC6C0008018018211440FFFC2042FFFFAC69000884
-:2CFEC800278B0C98A56000002403FFFFAD6300143402000134420020A5620008278A0E000140102100001821AC40000038
-:2CFEF400246300042C6C01001580FFFC244200043C02A0D12442E000AF820FE03C1800D1012060210000682100007821C6
-:28FF20000000582100004021400260000000000034424001408260003C020000244206F800400008000000007A
-:00000001FF
-/*
- Madge Ambassador ATM Adapter microcode.
- Copyright (C) 1995-1999 Madge Networks Ltd.
-
- This microcode data is placed under the terms of the GNU General
- Public License. The GPL is contained in /usr/doc/copyright/GPL on a
- Debian system and in the file COPYING in the Linux kernel source.
-
- We would prefer you not to distribute modified versions without
- consultation and not to ask for assembly/other microcode source.
-*/
-
-First record is start address in a __be32.
diff --git a/firmware/av7110/Boot.S b/firmware/av7110/Boot.S
deleted file mode 100644
index d562fdc2908f..000000000000
--- a/firmware/av7110/Boot.S
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- Boot.S: boot loader for Siemens DVB-S card
-
- Copyright (C) 2001 Convergence integrated media GmbH
- Written by Ralph Metzler
- <rjkm@convergence.de>
- Copyright (C) 2006 Matthieu CASTET <castet.mattheiu@free.fr>
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-*/
-
-/*
- check AV711x_3_1.pdf for some hardware infos
- build it with :
- $ cc -mbig-endian -c Boot.S
- $ ld -Ttext 0x2c000000 -EB -o Boot Boot.o
- $ objcopy -Obinary Boot
-*/
-
- .text
- .align
- .globl _start
-_start:
- b reset // reset vector
- movs pc, r14 // undefined
- subs pc, r14, #4 // SWI
- subs pc, r14, #4 // prefetch abort
- subs pc, r14, #8 // data abort
- subs pc, r14, #4 // reserved
- subs pc, r14, #4 // IRQ
- subs pc, r14, #4 // FIQ
-
- .word tbl // table needed by firmware ROM
-tbl: .word (endtbl - tbl)
- .word 0
- .word conf
-endtbl: .word 0
-conf: .word 0xa5a55a5a
- .word 0x001f1555
- .word 0x00000009
-
-reset: ldr r13, buffer
- ldr r4, flag
- mov r0, #0
- str r0, [r4]
- str r0, [r4, #4]
-
- ldr r1, wait_address
- ldr r2, flag_address
- ldr r3, sram
-
-copycode: // copy the code HW Sram
- ldmia r1!, {r5-r12}
- stmia r3!, {r5-r12}
- cmp r1, r2
- ble copycode
- ldr pc, sram // jump to the copied code
-
-wait: ldrh r1, [r4] // wait for flag!=0
- cmp r1, #0
- beq wait
-
- mov r1, r13 // buffer address
- ldr r3, [r4,#4] // destaddr
-
- ldrh r2, [r4,#2] // get segment length
- add r2, r2, #63 // round length to next 64 bytes
- movs r2, r2, lsr #6 // and divide by 64
- moveq r0, #2 // if 0, set flag to 2, else signal
- strh r0, [r4] // that buffer is accepted by setting to 0
- beq wait
-
-copyloop:
- ldmia r1!, {r5-r12}
- stmia r3!, {r5-r12}
- ldmia r1!, {r5-r12}
- stmia r3!, {r5-r12}
- subs r2, r2, #1
- bne copyloop
-
- eor r13, r13, #0x1400 // switch to other buffer
- b wait
-
-// flag is stored at 0x2c0003f8, length at 0x2c0003fa,
-// destaddr at 0x2c0003fc
-
-flag: .word 0x2c0003f8
-
-
-// buffer 1 is at 0x2c000400, buffer 2 at 0x2c001000
-
-buffer: .word 0x2c000400
-
-sram: .word 0x9e000800
-wait_address: .word wait
-flag_address: .word flag
diff --git a/firmware/av7110/bootcode.bin.ihex b/firmware/av7110/bootcode.bin.ihex
deleted file mode 100644
index 26a2993e0723..000000000000
--- a/firmware/av7110/bootcode.bin.ihex
+++ /dev/null
@@ -1,15 +0,0 @@
-:10000000EA00000EE1B0F00EE25EF004E25EF00401
-:10001000E25EF008E25EF004E25EF004E25EF0040C
-:100020002C0000240000000C000000002C00003414
-:1000300000000000A5A55A5A001F15550000000930
-:10004000E59FD07CE59F4074E3A00000E5840000BC
-:10005000E5840004E59F1070E59F2070E59F306403
-:10006000E8B11FE0E8A31FE0E1510002DAFFFFFB67
-:10007000E59FF050E1D410B0E35100000AFFFFFC0F
-:10008000E1A0100DE5943004E1D420B2E282203FDB
-:10009000E1B0232203A00002E1C400B00AFFFFF494
-:1000A000E8B11FE0E8A31FE0E8B11FE0E8A31FE00C
-:1000B000E25220011AFFFFF9E22DDB05EAFFFFEC17
-:1000C0002C0003F82C0004009E0008002C00007493
-:0400D0002C0000C040
-:00000001FF
diff --git a/firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex b/firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex
deleted file mode 100644
index 4c43b26af0a6..000000000000
--- a/firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex
+++ /dev/null
@@ -1,5818 +0,0 @@
-:10000000080001180800000000004A68000000C84D
-:1000100000000000000000000000000008004A6826
-:100020000000001400004B30080000A00800000091
-:100030000000569400004B44080058200000008443
-:100040000000A1D808005694000001580000A25CEE
-:100050000800321008000000000072D00000A3B4B5
-:10006000000000000000000000000000080072D046
-:100070000000002400011684080004900800040019
-:10008000000017D4000116A80000000000000000C6
-:100090000000000000000000000000000000000060
-:1000A000080000A80800000000003BFC00012E7CB6
-:1000B0000000000000000000000000000000000040
-:0800C000000000000000000038
-:0800C8000A00004600000000E0
-:1000D000000000000000000D636F6D362E322E31DF
-:1000E0000000000006020102000000000000000302
-:1000F000000000C800000032000000030000000003
-:1001000000000000000000000000000000000000EF
-:1001100000000010000001360000EA600000000549
-:1001200000000000000000000000000000000008C7
-:1001300000000000000000000000000000000000BF
-:1001400000000000000000000000000000000000AF
-:10015000000000000000000000000000000000009F
-:10016000000000020000000000000000000000008D
-:10017000000000000000000000000000000000007F
-:10018000000000000000000000000010000000005F
-:10019000000000000000000000000000000000005F
-:1001A000000000000000000000000000000000004F
-:1001B000000000000000000000000000000000003F
-:1001C000000000000000000000000000000000002F
-:1001D000000000000000000000000000000000001F
-:1001E0000000000010000003000000000000000DEF
-:1001F0000000000D3C02080024424AA03C03080015
-:1002000024634B9CAC4000000043202B1480FFFD76
-:10021000244200043C1D080037BD7FFC03A0F021F0
-:100220003C100800261001183C1C0800279C4AA01E
-:100230000E000168000000000000000D27470100CB
-:1002400090E3000B2402001A94E5000814620028D1
-:10025000000020218CE200003C0308008C63004475
-:1002600094E60014000211C20002104030A4000203
-:10027000005A10212463000130A50004A446008028
-:100280003C010800AC23004410A000190004202BFE
-:100290008F4202B804410008240400013C02080017
-:1002A0008C420060244200013C010800AC22006046
-:1002B00003E00008008010218CE2002094E3001687
-:1002C00000002021AF4202808CE20004A743028498
-:1002D000AF4202883C021000AF4202B83C02080064
-:1002E0008C42005C244200013C010800AC22005C0E
-:1002F00003E00008008010212747010090E3000B75
-:100300002402000394E50008146200280000202164
-:100310008CE200003C0308008C63004494E6001467
-:10032000000211C20002104030A40002005A102145
-:100330002463000130A50004A44600803C010800AD
-:10034000AC23004410A000190004202B8F4202B8F7
-:1003500004410008240400013C0208008C420060B3
-:10036000244200013C010800AC22006003E00008C8
-:10037000008010218CE2002094E300160000202170
-:10038000AF4202808CE20004A7430284AF4202889D
-:100390003C021000AF4202B83C0208008C42005CF4
-:1003A000244200013C010800AC22005C03E000088C
-:1003B000008010218F4301002402010050620003DD
-:1003C000000311C20000000D000311C20002104022
-:1003D000005A1021A440008003E000080000102112
-:1003E0009362000003E00008AF80000003E0000813
-:1003F0000000102103E00008000010212402010089
-:1004000014820008000000003C0208008C4200FC3E
-:10041000244200013C010800AC2200FC0A0000DD7F
-:1004200030A200203C0208008C42008424420001DB
-:100430003C010800AC22008430A2002010400008DB
-:1004400030A300103C0208008C4201082442000145
-:100450003C010800AC22010803E000080000000095
-:1004600010600008000000003C0208008C420104FB
-:10047000244200013C010800AC22010403E0000812
-:10048000000000003C0208008C42010024420001F0
-:100490003C010800AC22010003E00008000000005D
-:1004A00027BDFFE8AFBF0010274401009483000878
-:1004B000306200041040001B306600028F4202B818
-:1004C00004410008240500013C0208008C42006041
-:1004D000244200013C010800AC2200600A0001290E
-:1004E0008FBF00108C82002094830016000028210A
-:1004F000AF4202808C820004A7430284AF4202888C
-:100500003C021000AF4202B83C0208008C42005C82
-:10051000244200013C010800AC22005C0A000129D1
-:100520008FBF001010C00006006028218F4401001A
-:100530000E0000CD000000000A0001282405000183
-:100540008F8200088F4301045043000700002821D8
-:100550008F4401000E0000CD000000008F42010416
-:10056000AF820008000028218FBF001000A01021DA
-:1005700003E0000827BD001827BDFFE8AFBF001447
-:10058000AFB00010974201083043700024022000F1
-:100590001062000B286220011440002F000010217F
-:1005A00024024000106200250000000024026000C8
-:1005B00010620026000010210A0001658FBF0014A0
-:1005C00027500100920200091040001A2403000184
-:1005D0003C0208008C420020104000160000182148
-:1005E0000E00049300000000960300083C0608007B
-:1005F00094C64B5E8E0400188F8200209605000C76
-:1006000000031C0000661825AC440000AC45000443
-:1006100024040001AC400008AC40000CAC400010C9
-:10062000AC400014AC4000180E0004B8AC43001CF1
-:10063000000018210A000164006010210E0003254B
-:10064000000000000A000164000010210E000EE905
-:1006500000000000000010218FBF00148FB00010B8
-:1006600003E0000827BD001827BDFFE0AFB2001867
-:100670003C036010AFBF001CAFB10014AFB000105E
-:100680008C6450002402FF7F3C1A800000822024EA
-:100690003484380C24020037AC6450003C1208004B
-:1006A00026524AD8AF42000824020C80AF420024F0
-:1006B0003C1B80083C06080024C60324024010218D
-:1006C0002404001D2484FFFFAC4600000481FFFDCC
-:1006D000244200043C020800244204B03C0108000B
-:1006E000AC224AE03C020800244202303C010800EF
-:1006F000AC224AE43C020800244201743C03080096
-:100700002463032C3C040800248403D83C0508001F
-:1007100024A538F03C010800AC224B403C02080004
-:10072000244202EC3C010800AC264B243C010800AA
-:10073000AC254B343C010800AC234B3C3C01080089
-:10074000AC244B443C010800AC224B483C0108005F
-:10075000AC234ADC3C010800AC204AE83C0108001C
-:10076000AC204AEC3C010800AC204AF03C010800F7
-:10077000AC204AF43C010800AC204AF83C010800D7
-:10078000AC204AFC3C010800AC204B003C010800B6
-:10079000AC244B043C010800AC204B083C01080091
-:1007A000AC204B0C3C010800AC204B103C01080075
-:1007B000AC204B143C010800AC204B183C01080055
-:1007C000AC264B1C3C010800AC264B203C01080029
-:1007D000AC254B303C010800AC234B380E000623FF
-:1007E000000000003C028000344200708C42000097
-:1007F000AF8200143C0308008C6300208F82000449
-:10080000104300043C0280000E00045BAF83000430
-:100810003C028000344600703C0308008C6300A05A
-:100820003C0208008C4200A4104300048F84001492
-:100830003C010800AC2300A4A743009E8CCA000022
-:100840003C0308008C6300BC3C0208008C4200B8EA
-:100850000144202300641821000040210064202B63
-:1008600000481021004410213C010800AC2300BCCA
-:100870003C010800AC2200B88F5100003222000772
-:100880001040FFDCAF8A00148CC600003C05080055
-:100890008CA500BC3C0408008C8400B800CA30233E
-:1008A00000A628210000102100A6302B0082202164
-:1008B00000862021322700013C010800AC2500BC45
-:1008C0003C010800AC2400B810E0001F32220002F6
-:1008D0008F420100AF4200208F420104AF4200A8C6
-:1008E0009342010B0E0000C6305000FF2E02001E86
-:1008F00054400004001010800E0000C90A000213CA
-:1009000000000000005210218C4200000040F80955
-:1009100000000000104000053C0240008F4301042D
-:100920003C026020AC4300143C024000AF4201385E
-:100930003C0208008C420034244200013C010800C3
-:10094000AC220034322200021040000E3222000499
-:100950008F4201400E0000C6AF4200200E000295FB
-:10096000000000003C024000AF4201783C02080059
-:100970008C420038244200013C010800AC220038BF
-:10098000322200041040FF983C0280008F42018018
-:100990000E0000C6AF4200208F43018024020F00EA
-:1009A00014620005000000008F420188A742009CED
-:1009B0000A0002483C0240009362000024030050F9
-:1009C000304200FF144300083C0240000E00027B4E
-:1009D00000000000544000043C0240000E000D7571
-:1009E000000000003C024000AF4201B83C02080099
-:1009F0008C42003C244200013C010800AC22003C37
-:100A00000A0001C83C0280003C0290003442000110
-:100A100000822025AF4400208F4200200440FFFECA
-:100A20000000000003E00008000000003C0280001D
-:100A3000344200010082202503E00008AF4400207A
-:100A400027BDFFE0AFB10014AFB0001000808821D7
-:100A5000AFBF00180E00025030B000FF9362007D5F
-:100A60000220202102028025A370007D8F70007477
-:100A70003C0280000E000259020280241600000988
-:100A80008FBF00188F4201F80440FFFE24020002CD
-:100A9000AF5101C0A34201C43C021000AF4201F8B3
-:100AA0008FBF00188FB100148FB0001003E0000852
-:100AB00027BD002027BDFFE8AFBF0010974201848B
-:100AC0008F440188304202001040000500002821B8
-:100AD0000E000FAA000000000A00028D240500018C
-:100AE0003C02FF0004800005008218243C02040040
-:100AF000506200019362003E240500018FBF001088
-:100B000000A0102103E0000827BD0018A360002208
-:100B10008F4401400A00025E2405000127BDFFE862
-:100B2000AFBF0014AFB0001093620000304400FF6C
-:100B300038830020388200300003182B0002102B6D
-:100B40000062182410600003240200501482008008
-:100B50008FBF001493620005304200011040007CFA
-:100B60008FBF0014934201482443FFFF2C6200050D
-:100B7000104000788FB00010000310803C03080084
-:100B800024634A68004310218C42000000400008A2
-:100B9000000000000E0002508F4401408F70000CD6
-:100BA0008F4201441602000224020001AF62000CD1
-:100BB0000E0002598F4401408F420144145000043A
-:100BC0008FBF00148FB000100A000F2027BD00183F
-:100BD0008F62000C0A0003040000000097620010FE
-:100BE0008F4301443042FFFF1462001A00000000EE
-:100BF00024020001A76200108F4202380443001053
-:100C00008F4201403C02003F3446F0003C0560004A
-:100C10003C04FFC08CA22BBC0044182400461024C6
-:100C20000002130200031D82106200390000000060
-:100C30008F4202380440FFF7000000008F4201405D
-:100C4000AF4202003C021000AF4202380A00032209
-:100C50008FBF0014976200100A0003040000000018
-:100C60000E0002508F440140976200128F430144EE
-:100C70003050FFFF1603000224020001A762001299
-:100C80000E0002598F4401408F42014416020004B5
-:100C90008FBF00148FB000100A00029127BD00180A
-:100CA000976200120A00030400000000976200141B
-:100CB0008F4301443042FFFF14620006240200010A
-:100CC0008FBF00148FB00010A76200140A00124AF0
-:100CD00027BD0018976200141440001D8FBF001438
-:100CE0000A00031C00000000976200168F430144B5
-:100CF0003042FFFF1462000B240200018FBF00147A
-:100D00008FB00010A76200160A000B1227BD001852
-:100D10009742007824420004A76200100A000322D0
-:100D20008FBF001497620016240300013042FFFFBA
-:100D3000144300078FBF00143C0208008C4200706F
-:100D4000244200013C010800AC2200708FBF001457
-:100D50008FB0001003E0000827BD001827BDFFE892
-:100D6000AFBF0014AFB000108F50010093620000BD
-:100D700093430109304400FF2402001F106200A5C4
-:100D80002862002010400018240200382862000A5F
-:100D90001040000C2402000B286200081040002CB8
-:100DA00000000000046000E52862000214400028F2
-:100DB00024020006106200268FBF00140A00041FE0
-:100DC0008FB000101062005E2862000B144000DC3F
-:100DD0008FBF00142402000E106200738FB0001049
-:100DE0000A00041F00000000106200C028620039E1
-:100DF0001040000A2402008024020036106200CA5B
-:100E000028620037104000B424020035106200C18F
-:100E10008FBF00140A00041F8FB000101062002B57
-:100E20002862008110400006240200C82402003914
-:100E3000106200B48FBF00140A00041F8FB00010AE
-:100E4000106200998FBF00140A00041F8FB00010B9
-:100E50003C0208008C420020104000B98FBF0014F3
-:100E60000E000493000000008F4201008F830020D9
-:100E70009745010C97460108AC6200008F420104BF
-:100E80003C04080094844B5E00052C00AC62000416
-:100E90008F4201180006340000C43025AC620008FF
-:100EA0008F42011C24040001AC62000C9342010A31
-:100EB00000A22825AC650010AC600014AC600018DE
-:100EC000AC66001C0A0003F58FBF00143C0208004A
-:100ED0008C4200201040009A8FBF00140E00049333
-:100EE00000000000974401083C03080094634B5E37
-:100EF0009745010C000422029746010E8F820020C4
-:100F0000000426000083202500052C003C030080FF
-:100F100000A6282500832025AC400000AC4000043A
-:100F2000AC400008AC40000CAC450010AC400014D4
-:100F3000AC400018AC44001C0A0003F42404000177
-:100F40009742010C14400015000000009362000558
-:100F50003042001014400011000000000E0002504A
-:100F6000020020219362000502002021344200107B
-:100F70000E000259A36200059362000024030020C2
-:100F8000304200FF1043006D020020218FBF00148B
-:100F90008FB000100A000FC027BD00180000000D20
-:100FA0000A00041E8FBF00143C0208008C4200207F
-:100FB000104000638FBF00140E0004930000000077
-:100FC0008F4201048F8300209744010C3C050800E8
-:100FD00094A54B5EAC6200009762002C00042400D4
-:100FE0003042FFFF008220253C02400E00A228254F
-:100FF000AC640004AC600008AC60000CAC60001095
-:10100000AC600014AC600018AC65001C0A0003F46E
-:10101000240400010E00025002002021A7600008F5
-:101020000E00025902002021020020210E00025E63
-:10103000240500013C0208008C42002010400040C2
-:101040008FBF00140E000493000000009742010CB3
-:101050008F8300203C05080094A54B5E000214001D
-:10106000AC700000AC620004AC6000088F64004CFF
-:101070003C02401F00A22825AC64000C8F62005087
-:1010800024040001AC6200108F620054AC620014B2
-:10109000AC600018AC65001C8FBF00148FB000104E
-:1010A0000A0004B827BD0018240200205082002541
-:1010B0008FB000100E000F0A020020211040002007
-:1010C0008FBF0014020020218FB0001000002821E3
-:1010D0000A00025E27BD0018020020218FBF001405
-:1010E0008FB000100A00058027BD00189745010C3D
-:1010F000020020218FBF00148FB000100A0005A04D
-:1011000027BD0018020020218FB000100A0005C57D
-:1011100027BD00189345010D020020218FB000105B
-:101120000A00060F27BD0018020020218FBF0014FF
-:101130008FB000100A0005EB27BD00188FBF001408
-:101140008FB0001003E0000827BD00188F4202781E
-:101150000440FFFE2402000234840080AF440240B9
-:10116000A34202443C02100003E00008AF420278B0
-:101170003C04080094844B6A3C0208008C424B7487
-:101180003083FFFF000318C000431021AF42003C32
-:101190003C0208008C424B70AF4200383C020050C9
-:1011A00034420008AF4200300000000000000000A0
-:1011B000000000008F420000304200201040FFFD80
-:1011C000000000008F4204003C010800AC224B608C
-:1011D0008F4204043C010800AC224B643C02002016
-:1011E000AF420030000000003C02080094424B680F
-:1011F0003C03080094634B6C3C05080094A54B6EBF
-:1012000024840001004310213083FFFF3C010800CB
-:10121000A4224B683C010800A4244B6A1465000317
-:10122000000000003C010800A4204B6A03E0000815
-:10123000000000003C05000A27BDFFE80345282107
-:101240003C04080024844B50AFBF00100E00051D65
-:101250002406000A3C02080094424B523C0308005A
-:1012600094634B6E3042000F244200030043180485
-:1012700024027FFF0043102B10400002AF83001CAC
-:101280000000000D0E00042A000000003C020800CF
-:1012900094424B5A8FBF001027BD001803E000088E
-:1012A000A74200A23C02000A034210219443000618
-:1012B0003C02080094424B5A3C010800A4234B56C0
-:1012C000004310238F83001C00021400000214034B
-:1012D0000043102B03E000083842000127BDFFE85F
-:1012E000AFBF00103C02000A0342102194420006E6
-:1012F0003C010800A4224B560E00047700000000B9
-:101300005440FFF93C02000A8FBF001003E00008C0
-:1013100027BD001827BDFFE8AFBF00100E000477FF
-:101320000000000010400003000000000E000485D3
-:10133000000000003C0208008C424B608FBF001090
-:1013400027430400AF4200383C0208008C424B6443
-:1013500027BD0018AF830020AF42003C3C020005CF
-:10136000AF42003003E00008AF8000188F82001801
-:101370003C0300060002114000431025AF4200303C
-:101380000000000000000000000000008F4200008C
-:10139000304200101040FFFD27420400AF820020C1
-:1013A00003E00008AF8000183C0608008CC64B64C0
-:1013B0008F8500188F8300203C02080094424B5A0E
-:1013C00027BDFFE024A50001246300202442000182
-:1013D00024C70020AFB10014AFB00010AFBF001899
-:1013E000AF850018AF8300203C010800A4224B5AAF
-:1013F000309000FF3C010800AC274B6404C100089A
-:101400000000882104E00006000000003C02080003
-:101410008C424B60244200013C010800AC224B602E
-:101420003C02080094424B5A3C03080094634B680A
-:101430000010202B004310262C42000100441025F0
-:10144000144000048F830018240200101462000F5F
-:10145000000000000E0004A9241100013C03080054
-:1014600094634B5A3C02080094424B681462000398
-:10147000000000000E00042A000000001600000317
-:10148000000000000E000493000000003C03080070
-:1014900094634B5E3C02080094424B5C2463000161
-:1014A0003064FFFF3C010800A4234B5E148200035C
-:1014B000000000003C010800A4204B5E1200000662
-:1014C000000000003C02080094424B5AA74200A2D0
-:1014D0000A00050B022010210E0004770000000016
-:1014E00010400004022010210E00048500000000BE
-:1014F000022010218FBF00188FB100148FB0001090
-:1015000003E0000827BD00203084FFFF30A5FFFF67
-:101510000000182110800007000000003082000148
-:101520001040000200042042006518210A00051343
-:101530000005284003E000080060102110C00006EC
-:1015400024C6FFFF8CA2000024A50004AC8200008A
-:101550000A00051D2484000403E0000800000000C8
-:1015600010A0000824A3FFFFAC86000000000000CC
-:10157000000000002402FFFF2463FFFF1462FFFA53
-:101580002484000403E0000800000000240200019D
-:10159000AF62000CA7620010A7620012A7620014DD
-:1015A00003E00008A76200163082007F034210218A
-:1015B0003C08000E004818213C0208008C42002024
-:1015C00027BDFFD82407FF80AFB3001CAFB20018BF
-:1015D000AFB10014AFB00010AFBF00200080802179
-:1015E00030B100FF0087202430D200FF1040002FD0
-:1015F00000009821AF44002C9062000024030050AA
-:10160000304200FF1443000E000000003C020800BE
-:101610008C4200E00202102100471024AF42002C4F
-:101620003C0208008C4200E0020210213042007FA0
-:101630000342102100481021944200D43053FFFF90
-:101640000E000493000000003C02080094424B5E30
-:101650008F8300200011340000C2302500122C00BE
-:101660003C02400000C2302534A50001AC700000EF
-:101670008FBF0020AC6000048FB20018AC7300086C
-:101680008FB10014AC60000C8FB3001CAC6500106F
-:101690008FB00010AC60001424040001AC6000188E
-:1016A00027BD00280A0004B8AC66001C8FBF0020CC
-:1016B0008FB3001C8FB200188FB100148FB00010D0
-:1016C00003E0000827BD00289343010F2402001007
-:1016D0001062000E2865001110A0000724020012FD
-:1016E000240200082405003A1062000600003021A0
-:1016F00003E0000800000000240500351462FFFC30
-:10170000000030210A000538000000008F420074FC
-:1017100024420FA003E00008AF62000C27BDFFE8E1
-:10172000AFBF00100E00025E240500018FBF001045
-:1017300024020001A762001227BD00182402000144
-:1017400003E00008A360002227BDFFE0AFB1001452
-:10175000AFB00010AFBF001830B1FFFF0E00025055
-:10176000008080219362003F24030004304200FF88
-:101770001443000C02002021122000082402000A59
-:101780000E00053100000000936200052403FFFEF7
-:1017900000431024A362000524020012A362003F4C
-:1017A000020020210E000259A360008116200003D0
-:1017B000020020210E0005950000000002002021FB
-:1017C000322600FF8FBF00188FB100148FB00010B9
-:1017D000240500380A00053827BD002027BDFFE09A
-:1017E000AFBF001CAFB20018AFB10014AFB0001013
-:1017F0000E000250008080210E0005310000000024
-:101800009362003F24120018305100FF123200038F
-:101810000200202124020012A362003F936200050F
-:101820002403FFFE004310240E000259A3620005AA
-:10183000020020212405002016320007000030217C
-:101840008FBF001C8FB200188FB100148FB0001032
-:101850000A00025E27BD00208FBF001C8FB2001857
-:101860008FB100148FB00010240500390A0005382C
-:1018700027BD002027BDFFE8AFB00010AFBF0014A8
-:101880009742010C2405003600808021144000108E
-:10189000304600FF0E00025000000000240200123B
-:1018A000A362003F93620005344200100E00053130
-:1018B000A36200050E00025902002021020020212F
-:1018C0000E00025E240500200A000604000000004D
-:1018D0000E000538000000000E000250020020211A
-:1018E000936200232403FF9F020020210043102461
-:1018F0008FBF00148FB00010A36200230A000259AA
-:1019000027BD001827BDFFE0AFBF0018AFB100141E
-:10191000AFB0001030B100FF0E00025000808021F7
-:10192000240200120E000531A362003F0E0002598E
-:101930000200202102002021022030218FBF001848
-:101940008FB100148FB00010240500350A0005384F
-:1019500027BD0020A380002C03E00008A380002DF9
-:101960008F4202780440FFFE8F820034AF42024073
-:1019700024020002A34202443C02100003E00008DB
-:10198000AF4202783C0360008C6254003042000891
-:101990001440FFFD000000008C625408AF82000C70
-:1019A00024020052AC605408AC645430AC6254342D
-:1019B0002402000803E00008AC6254003C0260000E
-:1019C0008C42540030420008104000053C03600087
-:1019D0008C625400304200081440FFFD00000000FB
-:1019E0008F83000C3C02600003E00008AC43540805
-:1019F00090A3000024020005008040213063003FD6
-:101A000000004821146200050000502190A2001C33
-:101A100094A3001E304900FF306AFFFFAD00000CA8
-:101A2000AD000010AD000024950200148D05001CCF
-:101A30008D0400183042FFFF0049102300021100FE
-:101A4000000237C3004038210086202300A2102B5B
-:101A50000082202300A72823AD05001CAD04001838
-:101A6000A5090014A5090020A50A001603E0000836
-:101A7000A50A00228F4201F80440FFFE2402000262
-:101A8000AF4401C0A34201C43C02100003E00008BF
-:101A9000AF4201F83C0208008C4200B427BDFFE8C9
-:101AA000AFBF001424420001AFB000103C01080099
-:101AB000AC2200B48F4300243C02001F30AA00FF78
-:101AC0003442FF8030D800FF006280240080F8217B
-:101AD00030EF00FF1158003B01405821240CFF80DB
-:101AE0003C19000A3163007F000310C00003194055
-:101AF000006218213C0208008C4200DC25680001CD
-:101B0000310D007F03E21021004310213043007F9C
-:101B100003431821004C102400794821AF420024CF
-:101B20008D220024016C1824006C7026AD22000C5C
-:101B30008D220024310800FFAD22001095220014F0
-:101B4000952300208D27001C3042FFFF3063FFFFEC
-:101B50008D2600180043102300021100000227C345
-:101B60000040282100C4302300E2102B00C23023A3
-:101B700000E53823AD27001CAD2600189522002073
-:101B8000A522001495220022154B000AA52200165A
-:101B90008D2300248D220008254600013145008058
-:101BA0001462000430C4007F108F000238AA008045
-:101BB00000C0502151AF000131C800FF1518FFC906
-:101BC000010058218F8400343082007F03421821A5
-:101BD0003C02000A006218212402FF8000822024B7
-:101BE000AF440024A06A0079A06A00838C62005090
-:101BF0008F840034AC6200708C6500743C027FFFFF
-:101C00003442FFFF00A228240E00066BAC6500746E
-:101C1000AF5000248FBF00148FB0001003E0000805
-:101C200027BD001827BDFFC0AFBE0038AFB70034D6
-:101C3000AFB5002CAFB20020AFB1001CAFB00018A0
-:101C4000AFBF003CAFB60030AFB40028AFB3002444
-:101C50008F4500248F4600288F43002C3C02001F34
-:101C60003442FF800062182400C230240080A82182
-:101C7000AFA3001400A2F0240E00062FAFA60010A0
-:101C80003C0208008C4200E02410FF8003608821A1
-:101C900002A2102100501024AF4200243C02080090
-:101CA0008C4200E002A210213042007F0342182142
-:101CB0003C02000A00629021924200D293630084A9
-:101CC000305700FF306300FF24020001106200342F
-:101CD000036020212402000214620036000000008C
-:101CE0000E001216024028219223008392220083C4
-:101CF0003063007F3042007F000210C000031940B3
-:101D0000006218213C0208008C4200DC02A2102173
-:101D10000043382100F01024AF42002892250078BB
-:101D20009224008330E2007F034218213C02000C21
-:101D300014850007006280212402FFFFA24200F107
-:101D40002402FFFFA64200F20A0007272402FFFF39
-:101D500096020020A24200F196020022A64200F262
-:101D60008E020024AE4200F492220083A24200F0D0
-:101D70008E4200C8AE4200FC8E4200C4AE4200F863
-:101D80008E220050AE4201008E4200CCAE420104D1
-:101D9000922200853042003F0A0007823442004010
-:101DA0000E00123902402821922200850A00078283
-:101DB0003042003F936200852403FFDF3042003F42
-:101DC000A36200859362008500431024A36200850E
-:101DD0009363008393620078307400FF304200FF09
-:101DE00010540036240AFF803C0C000C3283007F24
-:101DF000000310C000031940006218213C020800D3
-:101E00008C4200DC268800013109007F02A21021EB
-:101E10000043382130E2007F0342182100EA1024F9
-:101E2000AF420028006C80218E020024028A182410
-:101E3000006A5826AE02000C8E020024310800FF12
-:101E4000AE02001096020014960300208E07001CBC
-:101E50003042FFFF3063FFFF8E060018004310235F
-:101E600000021100000227C30040282100C43023D3
-:101E700000E2102B00C2302300E53823AE07001C1F
-:101E8000AE06001896020020A60200149602002258
-:101E9000A602001692220079304200FF105400077B
-:101EA0000000000051370001316800FF92220078E5
-:101EB000304200FF1448FFCD0100A0219222008390
-:101EC000A22200798E2200500A0007E2AE220070A2
-:101ED000A22200858E22004C2405FF80AE42010C18
-:101EE0009222008534420020A2220085924200D135
-:101EF0003C0308008C6300DC305400FF3C02080007
-:101F00008C4200E400143140001420C002A31821C8
-:101F100000C4202102A210210064382100461021B3
-:101F20000045182400E52824AF450028AF43002CC5
-:101F30003042007F924400D030E3007F03422821EA
-:101F4000034318213C02000C006280213C02000E79
-:101F5000309600FF00A298211296002A000000008F
-:101F60008E02000C02002021026028211040002572
-:101F7000261000280E00064A000000009262000DA4
-:101F800026830001307400FF3042007FA262000D02
-:101F90002404FF801697FFF0267300203C020800FF
-:101FA0008C4200DC0000A02102A210210044102479
-:101FB000AF4200283C0208008C4200E43C030800C9
-:101FC0008C6300DC02A2102100441024AF42002CDC
-:101FD0003C0208008C4200E402A318213063007F19
-:101FE00002A210213042007F034220210343182126
-:101FF0003C02000C006280213C02000E0A0007A493
-:10200000008298218E4200D8AE2200508E4200D825
-:10201000AE22007092250083924600D19223008365
-:10202000924400D12402FF8000A228243063007F64
-:10203000308400FF00A628250064182A10600002E2
-:1020400030A500FF38A50080A2250083A2250079D5
-:102050000E00063D000000009222007E02A020211A
-:10206000A222007A8E2300743C027FFF3442FFFFDD
-:10207000006218240E00066BAE2300748FA20010BD
-:10208000AF5E00248FBF003CAF4200288FBE0038F7
-:102090008FA200148FB700348FB600308FB5002C9C
-:1020A0008FB400288FB300248FB200208FB1001CA2
-:1020B0008FB0001827BD004003E00008AF42002C9D
-:1020C00090A2000024420001A0A200003C030800EE
-:1020D0008C6300F4304200FF1443000F0080302175
-:1020E000A0A000003C0208008C4200E48F84003471
-:1020F000008220213082007F034218213C02000C24
-:10210000006218212402FF8000822024ACC300005A
-:1021100003E00008AF4400288C8200002442002025
-:1021200003E00008AC82000094C200003C080800F4
-:10213000950800CA30E7FFFF008048210102102106
-:10214000A4C2000094C200003042FFFF00E2102B46
-:1021500054400001A4C7000094A200003C03080002
-:102160008C6300CC24420001A4A2000094A20000D1
-:102170003042FFFF544300078F8600280107102BD1
-:10218000A4A000005440000101003821A4C70000B1
-:102190008F8600288CC4001CAF44003C94A2000031
-:1021A0008F43003C3042FFFF000210C00062182144
-:1021B000AF43003C8F42003C008220231880000483
-:1021C000000000008CC200180A00084324420001ED
-:1021D0008CC20018AF4200383C020050344200105C
-:1021E000AF420030000000000000000000000000CE
-:1021F0008F420000304200201040FFFD0000000030
-:102200008F420404AD2200048F420400AD2200007E
-:102210003C020020AF42003003E000080000000054
-:1022200027BDFFE0AFB20018AFB10014AFB000108F
-:10223000AFBF001C94C2000000C080213C12080007
-:10224000965200C624420001A60200009603000038
-:1022500094E2000000E03021144300058FB100300B
-:102260000E000818024038210A000875000000001E
-:102270008C8300048C820004244200400461000727
-:10228000AC8200048C8200040440000400000000C2
-:102290008C82000024420001AC8200009602000003
-:1022A0003042FFFF50520001A600000096220000BD
-:1022B00024420001A62200008F82002896230000FD
-:1022C00094420016144300048FBF001C2402000136
-:1022D000A62200008FBF001C8FB200188FB100141F
-:1022E0008FB0001003E0000827BD00208F89002870
-:1022F00027BDFFE0AFBF00188D220028274804004B
-:1023000030E700FFAF4200388D22002CAF8800304C
-:10231000AF42003C3C020005AF420030000000002C
-:1023200000000000000000000000000000000000AD
-:10233000000000008C82000C8C82000CAD020000BA
-:102340008C820010AD0200048C820018AD020008DF
-:102350008C82001CAD02000C8CA20014AD02001097
-:102360008C820020AD02001490820005304200FFF4
-:1023700000021200AD0200188CA20018AD02001C71
-:102380008CA2000CAD0200208CA20010AD02002433
-:102390008CA2001CAD0200288CA20020AD02002CF3
-:1023A000AD060030AD000034978300263402FFFFF5
-:1023B00014620002006020213404FFFF10E00011CD
-:1023C000AD04003895230036952400362402000120
-:1023D0003063FFFF000318C20069182190650040B8
-:1023E000308400070082100400451025A0620040E0
-:1023F0008F820028944200563042FFFF0A0008DC1A
-:10240000AD02003C952300369524003624020001DD
-:102410003063FFFF000318C2006918219065004077
-:1024200030840007008210040002102700451024A9
-:10243000A0620040AD00003C000000000000000071
-:10244000000000003C02000634420040AF42003071
-:102450000000000000000000000000008F420000AB
-:10246000304200101040FFFD8F860028AF880030FA
-:1024700024C2005624C7003C24C4002824C50032CE
-:1024800024C600360E000856AFA200108FBF0018F9
-:1024900003E0000827BD00208F8300243C060800CD
-:1024A0008CC600E88F82003430633FFF0003198040
-:1024B00000461021004310212403FF803046007F96
-:1024C00000431024AF420028034618213C02000CB0
-:1024D0000062302190C2000D30A500FF00003821BD
-:1024E00034420010A0C2000D8F8900288F8A00247A
-:1024F00095230036000A13823048000324020001AD
-:10250000A4C3000E1102000B2902000210400005B6
-:10251000240200021100000C240300010A0009201B
-:102520000000182111020006000000000A00092026
-:10253000000018218CC2002C0A000920244300014D
-:102540008CC20014244300018CC200180043102BDD
-:1025500050400009240700012402002714A20003B0
-:10256000000000000A00092C240700019522003E0B
-:1025700024420001A522003E000A138230430003DA
-:102580002C62000210400009008028211460000421
-:102590000000000094C200360A00093C3046FFFFEC
-:1025A0008CC600380A00093C008028210000302138
-:1025B0003C04080024844B780A00088900000000CD
-:1025C000274901008D22000C9523000601202021BF
-:1025D000000216023046003F3063FFFF240200274E
-:1025E00000C0282128C7002810C2000EAF83002495
-:1025F00010E00008240200312402002110C200096A
-:102600002402002510C200079382002D0A00095BF6
-:102610000000000010C200059382002D0A00095B33
-:10262000000000000A0008F4000000000A0006266E
-:102630000000000095230006912400058D25000C64
-:102640008D2600108D2700188D28001C8D29002054
-:10265000244200013C010800A4234B7E3C010800F9
-:10266000A0244B7D3C010800AC254B843C010800B4
-:10267000AC264B883C010800AC274B903C0108007D
-:10268000AC284B943C010800AC294B9803E00008AF
-:10269000A382002D8F87002827BDFFC0AFB3003471
-:1026A000AFB20030AFB1002CAFB00028AFBF0038E0
-:1026B0003C0208008C4200D094E3003030B0FFFFB1
-:1026C000005010073045FFFF3063FFFF00C0982126
-:1026D000A7A200103C110800963100C614A3000602
-:1026E0003092FFFF8CE2002424420030AF42003CD5
-:1026F0000A0009948CE2002094E200323042FFFF8D
-:1027000054A2000827A400188CE2002C24420030B8
-:10271000AF42003C8CE20028AF4200380A0009A218
-:102720008F84002827A5001027A60020022038212A
-:102730000E000818A7A000208FA200182442003025
-:10274000AF4200388FA2001CAF42003C8F840028AB
-:102750003C020005AF42003094820034274304005D
-:102760003042FFFF0202102B14400007AF830030FD
-:1027700094820054948300340202102100431023F9
-:102780000A0009B63043FFFF94830054948200345A
-:102790000223182100501023006218233063FFFF2A
-:1027A000948200163042FFFF144300030000000033
-:1027B0000A0009C424030001948200163042FFFF7E
-:1027C0000043102B104000058F82003094820016C9
-:1027D000006210233043FFFF8F820030AC530000B3
-:1027E000AC400004AC520008AC43000C3C020006B4
-:1027F00034420010AF420030000000000000000032
-:10280000000000008F420000304200101040FFFD29
-:10281000001018C2006418219065004032040007BF
-:10282000240200018FBF00388FB300348FB2003014
-:102830008FB1002C8FB000280082100400451025B5
-:1028400027BD004003E00008A062004027BDFFA8AC
-:10285000AFB60050AFB5004CAFB40048AFB30044C2
-:10286000AFB1003CAFBF0054AFB20040AFB00038D2
-:102870008C9000003C0208008C4200E88F860034F7
-:10288000960300022413FF8000C2302130633FFF13
-:102890000003198000C3382100F3102490B2000017
-:1028A000AF42002C9203000230E2007F034230214D
-:1028B0003C02000E00C28821306300C024020040A8
-:1028C0000080A82100A0B021146200260000A021F1
-:1028D0008E3400388E2200181440000224020001B9
-:1028E000AE2200189202000D304200201440001564
-:1028F0008F8200343C0308008C6300DC001238C077
-:10290000001231400043102100C730210046382119
-:1029100030E300073C02008030E6007800C230253A
-:102920000343182100F31024AF4208002463090078
-:10293000AF4608108E2200188C6300080043102157
-:10294000AE2200188E22002C8E2300182442000193
-:102950000062182B1060003D000000000A000A7899
-:1029600000000000920300022402FFC00043102474
-:10297000304200FF1440000524020001AE2200187E
-:10298000962200360A000A613054FFFF8E2200149E
-:1029900024420001AE22001892020000000216003C
-:1029A0000002160304410029000000009602000204
-:1029B00027A4001000802821A7A20016960200027A
-:1029C00024070001000030213042FFFFAF820024C5
-:1029D0000E000889AFA0001C960300023C0408000A
-:1029E0008C8400E88F82003430633FFF000319803D
-:1029F00000441021004310213043007F3C05000CAF
-:102A00000053102403431821AF4200280065182109
-:102A10009062000D001221403042007FA062000D44
-:102A20003C0308008C6300E48F82003400431021D3
-:102A30000044382130E2007F03421021004510217C
-:102A400000F31824AF430028AEA200009222000D2C
-:102A5000304200101040001302A020218F83002874
-:102A60008EA40000028030219462003E2442FFFFC9
-:102A7000A462003E948400029625000E3084FFFF7D
-:102A80000E00097330A5FFFF8F82002894430034A5
-:102A90009622000E1443000302A02021240200010C
-:102AA000A382002C02C028210E0007FE00000000B7
-:102AB0008FBF00548FB600508FB5004C8FB40048C4
-:102AC0008FB300448FB200408FB1003C8FB000380C
-:102AD00003E0000827BD00588F82002827BDFFD0E3
-:102AE000AFB40028AFB20020AFBF002CAFB30024BA
-:102AF000AFB1001CAFB00018904400D0904300D19B
-:102B00000000A021309200FFA3A30010306300FF5B
-:102B10008C5100D88C5300DC1072002B2402000171
-:102B20003C0308008C6300E493A400108F820034FF
-:102B30002406FF800004214000431021004410219E
-:102B40003043007F00461024AF4200280343182181
-:102B50003C02000C006218218C62000427A40014BF
-:102B600027A50010022280210270102304400015C6
-:102B7000AFA300149062000D00C21024304200FF89
-:102B800014400007020088219062000D344200408A
-:102B90000E0007FEA062000D0A000ABD93A20010FD
-:102BA0000E0009E1241400018F830028AC7000D8C6
-:102BB00093A20010A06200D193A200101452FFD87B
-:102BC0000000000024020001168200048FBF002CC8
-:102BD0000E000626000000008FBF002C8FB40028D6
-:102BE0008FB300248FB200208FB1001C8FB000186B
-:102BF00003E0000827BD003027BDFFD8AFB3001C9D
-:102C0000AFB20018AFB10014AFB00010AFBF0020DA
-:102C10000080982100E0802130B1FFFF0E00049376
-:102C200030D200FF000000000000000000000000A3
-:102C30008F820020AC510000AC520004AC5300085D
-:102C4000AC40000CAC400010AC400014AC4000188C
-:102C50003C03080094634B5E02038025AC50001CCB
-:102C6000000000000000000000000000240400013B
-:102C70008FBF00208FB3001C8FB200188FB10014DB
-:102C80008FB000100A0004B827BD002827BDFFE858
-:102C9000AFB00010AFBF001430A5FFFF30C600FF7B
-:102CA0000080802124020C80AF420024000000003C
-:102CB0000000000000000000000000000000000014
-:102CC0000E000ACC000000003C040800248400E050
-:102CD0008C8200002403FF808FBF001402021021A9
-:102CE00000431024AF4200248C8200003C03000A01
-:102CF000020280213210007F035010218FB000109B
-:102D00000043102127BD001803E00008AF8200280F
-:102D100027BDFFE8AFBF00108F4401403C0308000F
-:102D20008C6300E02402FF80AF840034008318210C
-:102D300000621024AF4200243C02000803424021FC
-:102D4000950500023063007F3C02000A034318210E
-:102D50000062182130A5FFFF3402FFFF0000302180
-:102D60003C07602010A20006AF8300282402FFFF6A
-:102D7000A5020002946500D40E000AF130A5FFFF01
-:102D80008FBF001024020C8027BD001803E000084C
-:102D9000AF4200243C020008034240219502000299
-:102DA0003C0A0800954A00C63046FFFF14C00007E1
-:102DB0003402FFFF8F8200288F8400343C0760209C
-:102DC000944500D40A000B5A30A5FFFF10C200241E
-:102DD0008F87002894E2005494E400163045FFFFEA
-:102DE00000A6102300A6182B3089FFFF10600004F6
-:102DF0003044FFFF00C51023012210233044FFFFA1
-:102E0000008A102B1040000C012A1023240200011C
-:102E1000A50200162402FFFFA502000294E500D4DB
-:102E20008F8400340000302130A5FFFF3C07602074
-:102E30000A000AF1000000000044102A10400008B7
-:102E4000000000009502001630420001104000040E
-:102E5000000000009742007E24420014A5020016E4
-:102E600003E00008000000008F84002827BDFFE079
-:102E7000AFBF0018948200349483003E1060001AA3
-:102E80003048FFFF9383002C2402000114620027C6
-:102E90008FBF00188F820028000818C23108000771
-:102EA000006218212447003A244900542444002099
-:102EB000244500302446003490620040304200FF38
-:102EC0000102100730420001104000168FBF0018A9
-:102ED0000E000856AFA900108F82002894420034DB
-:102EE0000A000B733048FFFF94830036948200344D
-:102EF0001043000E8FBF001894820036A482003465
-:102F000094820056A48200548C82002CAC8200244F
-:102F100094820032A48200309482003CA482003A61
-:102F20008FBF00180A000B3327BD002003E0000804
-:102F300027BD002027BDFFE8AFBF00108F4A01006A
-:102F40003C0508008CA500E03C02080090424B8440
-:102F50003C0C0800958C4B7E01452821304B003FEE
-:102F600030A2007F03424021396900323C02000A4E
-:102F70003963003F2C630001010240212D2900012B
-:102F80002402FF8000A2282401234825AF8A0034B0
-:102F900000801821AF450024000030210080282146
-:102FA00024070001AF8800283C04080024844B78E3
-:102FB000AF8C002415200007A380002D24020020E0
-:102FC0005562000F006020213402FFFF5582000C83
-:102FD000006020212402002015620005000000008E
-:102FE0008C6300142402FFFF106200070000000041
-:102FF0000E000889000000000A000BD0000000004D
-:103000000E0008F4016028210E000B68000000008B
-:103010008FBF001024020C8027BD001803E00008B9
-:10302000AF4200243C0208008C4200E027BDFFA014
-:10303000AFB1003C008210212411FF80AFBE0058C8
-:10304000AFB70054AFB20040AFB00038AFBF005CC4
-:10305000AFB60050AFB5004CAFB40048AFB30044BA
-:10306000005110248F4800248F4900288F470028E2
-:10307000AF4200243C0208008C4200E00080902116
-:1030800024060006008210213042007F03421821EE
-:103090003C02000A006280213C02001F3442FF8093
-:1030A00000E2382427A40010260500F00122F024B5
-:1030B0000102B8240E00051DAFA700308FA2001832
-:1030C000AE0200C48FA2001CAE0200C88FA2002472
-:1030D000AE0200CC93A40010920300D12402FF8022
-:1030E0000082102400431025304900FF3083007F08
-:1030F0003122007F0062102A10400004000310C03B
-:1031000001311026304900FF000310C000031940B0
-:10311000006218213C0208008C4200DC920400D2BC
-:10312000024210210043102100511024AF42002818
-:1031300093A300103063007F000310C00003194008
-:10314000006218213C0208008C4200DC024210217F
-:10315000004310213042007F034218213C02000C42
-:10316000006240218FA300142402FFFF1062003090
-:10317000309500FF93A2001195030014304400FF26
-:103180003063FFFF0064182B1060000D000000008A
-:10319000950400148D07001C8D0600183084FFFF75
-:1031A00000442023000421000000102100E4382105
-:1031B00000E4202B00C230210A000C4A00C4302158
-:1031C000950400148D07001C8D0600183084FFFF45
-:1031D000008220230004210000001021008018211B
-:1031E00000C2302300E4202B00C4302300E3382346
-:1031F000AD07001CAD06001893A20011A502001433
-:1032000097A20012A50200168FA20014AD020010B2
-:103210008FA20014AD02000C93A20011A5020020A1
-:1032200097A20012A50200228FA20014AD02002472
-:103230002406FF80024610243256007FAF4200244D
-:10324000035618213C02000A006280218E02004CC5
-:103250008FA200203124007F000428C0AE0200505D
-:103260008FA200200004214000852821AE020070BA
-:1032700093A2001001208821A202008393A20010D3
-:10328000A2020079920200853042003FA20200852E
-:103290003C0208008C4200DC024210210045102153
-:1032A00000461024AF42002C3C0208008C4200E48F
-:1032B0003C0308008C6300DC024210210044102112
-:1032C00000461024AF4200283C0208008C4200E473
-:1032D00002431821006518210242102100441021E8
-:1032E0003042007F3063007F93A50010034220210D
-:1032F000034318213C02000E006240213C02000CF6
-:1033000010B1008C008248213233007F1660001912
-:103310002404FF803C0208008C4200DC02421021A1
-:1033200000441024AF42002C3C0208008C4200E410
-:103330003C0308008C6300DC02421021004410248E
-:10334000AF4200283C0208008C4200E402431821EE
-:103350003063007F024210213042007F034220216F
-:10336000034318213C02000E006240213C02000C85
-:10337000008248219124000D2414FF8000001021B8
-:1033800000942025A124000D950400029505001449
-:103390008D07001C3084FFFF30A5FFFF8D0600184D
-:1033A000008520230004210000E4382100C23021E0
-:1033B00000E4202B00C43021AD07001CAD0600182E
-:1033C00095020002A5020014A50000168D02000857
-:1033D000AD0200108D020008AD02000C9502000243
-:1033E000A5020020A50000228D020008AD020024E5
-:1033F0009122000D30420040104000422622000180
-:103400003C0208008C4200E0A3B300283C10000AF4
-:103410000242102100541024AF4200243C02080054
-:103420008C4200E0A380002C27A4002C0242102133
-:103430003042007F03421821007018218C6200D8AE
-:103440008D26000427A50028AFA9002C00461021D6
-:10345000AC6200D80E0009E1AF83002893A30028D6
-:103460008F8200280E000626A04300D10E000B68B4
-:103470000000000002541024AF4200243C02080067
-:103480008C4200DC00132940001320C000A420213E
-:10349000024210210044102100541024AF42002C9D
-:1034A0003C0208008C4200E43C0308008C6300DC12
-:1034B00003563021024210210045102100541024EF
-:1034C000AF4200283C0208008C4200E4024318216D
-:1034D0000064182102421021004510213042007F73
-:1034E0003063007F03422021034318213C02000E79
-:1034F000006240213C02000C00D080210082482163
-:10350000262200013043007F14750005304400FF7F
-:103510002403FF800223102400431026304400FFC0
-:1035200093A2001000808821250800281444FF760B
-:103530002529002093A400108FA300142402FFFF6C
-:103540001062000A308900FF2482000124830001F8
-:103550003042007F14550005306900FF2403FF80CE
-:103560000083102400431026304900FF92020078A7
-:10357000305300FF11330032012088213C02080043
-:103580008C4200DC3225007F000520C00005294068
-:1035900000A42021024210212406FF8000441021B3
-:1035A00000461024AF42002C3C0308008C6300DC72
-:1035B0003C0208008C4200E4024318210242102120
-:1035C0000045102100641821004610243063007F5C
-:1035D000AF420028034318213C02000E0062402144
-:1035E0003C0208008C4200E48D06000C0100202102
-:1035F00002421021004510213042007F0342182171
-:103600003C02000C0062482110C0000D012028215E
-:103610000E00064A000000002402FF800222182447
-:1036200026240001006228263082007F1455000203
-:10363000308300FF30A300FF1473FFD000608821A7
-:103640008E0300743C027FFF3442FFFF00621824A7
-:10365000AE0300740E00066B02402021AF57002419
-:103660008FA20030AF5E00288FBF005C8FBE005875
-:103670008FB700548FB600508FB5004C8FB4004800
-:103680008FB300448FB200408FB1003C8FB0003840
-:1036900027BD006003E00008AF42002C27BDFFD823
-:1036A000AFB1001CAFBF0020AFB000182751018898
-:1036B000922200032408FF803C03000A3047007F69
-:1036C000A3A700108F4601803C0208008C4200E056
-:1036D000AF86003400C2282100A81024AF42002485
-:1036E0009224000030A2007F0342102100431021E9
-:1036F000AF8200283084007F24020002148200255B
-:10370000000719403C0208008C4200E400C210216E
-:103710000043282130A2007F0342182100A8102472
-:10372000AF4200283C02000C006218219062000D9C
-:10373000AFA3001400481025A062000D8FA3001451
-:103740009062000D304200405040006A8FBF002060
-:103750008F860028A380002C27A400148CC200D8D8
-:103760008C63000427A50010004310210E0009E11E
-:10377000ACC200D893A300108F8200280E0006264A
-:10378000A04300D10E000B68000000000A000E0BE1
-:103790008FBF00200E00062F00C020210E00063D26
-:1037A000000000003C020008034280219223000137
-:1037B0009202007B1443004F8FBF00209222000032
-:1037C0003044007F24020004108200172882000584
-:1037D00010400006240200052402000310820007A6
-:1037E0008FB1001C0A000E0C0000000010820012B5
-:1037F0008FBF00200A000E0C8FB1001C92050083C1
-:10380000920600788E0700748F84003430A500FF84
-:1038100000073E0230C600FF0E00067330E7007F4F
-:103820000A000E0B8FBF00200E000BD78F840034D0
-:103830000A000E0B8FBF002024020C80AF42002430
-:103840009202003E30420040104000200000000084
-:103850009202003E00021600000216030441000618
-:10386000000000008F8400340E0005A024050093A2
-:103870000A000E0B8FBF00209202003F24030018A5
-:10388000304200FF1443000C8F84003424050039BB
-:103890000E000538000030210E0002508F840034E5
-:1038A00024020012A202003F0E0002598F8400344D
-:1038B0000A000E0B8FBF0020240500360E000538CD
-:1038C000000030210A000E0B8FBF00200E000250B6
-:1038D0008F8400349202000534420020A2020005C9
-:1038E0000E0002598F8400340E000FC08F84003404
-:1038F0008FBF00208FB1001C8FB0001824020C80F5
-:1039000027BD002803E00008AF42002427BDFFE8E0
-:10391000AFB00010AFBF001427430100946200084D
-:103920000002140000021403044100020000802180
-:103930002410000194620008304200801040001AF8
-:10394000020010219462000830422000104000164E
-:10395000020010218C6300183C021C2D344219ED2A
-:10396000240600061062000F3C0760213C0208009C
-:103970008C4200D4104000078F8200288F830028DB
-:10398000906200623042000F34420040A062006248
-:103990008F8200288F840034944500D40E000AF1F1
-:1039A00030A5FFFF020010218FBF00148FB0001060
-:1039B00003E0000827BD001827BDFFE0AFB10014E9
-:1039C000AFB00010A380002CAFBF00188F450100DE
-:1039D0003C0308008C6300E02402FF80AF850034C4
-:1039E00000A318213064007F0344202100621824C2
-:1039F0003C02000A00822021AF430024275001002E
-:103A00008E0200148C8300DCAF8400280043102356
-:103A100018400004000088218E0200140E000A8461
-:103A2000AC8200DC9202000B24030002304200FF53
-:103A30001443002F0000000096020008304300FFEE
-:103A40002402008214620005240200840E00093E54
-:103A5000000000000A000E97000000001462000938
-:103A6000240200818F8200288F8400343C0760216B
-:103A7000944500D49206000530A5FFFF0A000E868B
-:103A800030C600FF14620027000000009202000A06
-:103A9000304300FF306200201040000430620040DC
-:103AA0008F8400340A000E82240600401040000477
-:103AB000000316008F8400340A000E8224060041A1
-:103AC00000021603044100178F84003424060042CC
-:103AD0008F8200283C076019944500D430A5FFFF71
-:103AE0000E000AF1000000000A000E97000000001E
-:103AF0009202000B24030016304200FF1043000620
-:103B0000000000009202000B24030017304200FF67
-:103B100014430004000000000E000E11000000001D
-:103B2000004088210E000B68000000009202000A8D
-:103B3000304200081040000624020C808F850028C7
-:103B40003C0400080E0011EE0344202124020C80E6
-:103B5000AF4200248FBF0018022010218FB0001048
-:103B60008FB1001403E0000827BD002027BDFFE847
-:103B7000AFBF0014AFB000108F5000243C0308000A
-:103B80008C6300E08F4501002402FF8000A3182110
-:103B90003064007F03442021006218243C02000AA4
-:103BA00000822021AF850034AF4300249082006260
-:103BB000AF8400283042000F34420050A0820062DF
-:103BC0003C02001F3442FF800E00062602028024C1
-:103BD000AF5000248FBF00148FB0001003E0000826
-:103BE00027BD00183C0208008C4200201040001D38
-:103BF0002745010090A300093C0200080342202150
-:103C000024020018546200033C0200080A000ED887
-:103C10002402000803422021240200161462000539
-:103C20002402001724020012A082003F0A000EE2C4
-:103C300094A700085462000694A700089362000548
-:103C40002403FFFE00431024A362000594A700088C
-:103C500090A6001B8CA4000094A500060A000ACCC4
-:103C600000073C0003E000080000000027440100BA
-:103C700094820008304500FF38A3008238A20084F7
-:103C80002C6300012C420001006218251060000620
-:103C9000240200839382002D1040000D00000000DC
-:103CA0000A000B9B0000000014A2000524A2FF8064
-:103CB0008F4301043C02602003E00008AC43001481
-:103CC000304200FF2C420002104000032402002278
-:103CD0000A000E3C0000000014A2000300000000D7
-:103CE0000A000EA9000000000A000EC70000000034
-:103CF0009363007E9362007A144300090000202140
-:103D00009362000024030050304200FF144300047B
-:103D1000240400019362007E24420001A362007E1D
-:103D200003E00008008010218F4201F80440FFFEEC
-:103D300024020002AF4401C0A34201C43C021000AF
-:103D400003E00008AF4201F827BDFFE8AFBF001055
-:103D50009362003F2403000A304200FF14430046F0
-:103D6000000000008F6300548F62004C1062007DE1
-:103D7000036030219362000024030050304200FFB2
-:103D80001443002F000000008F4401403C02080053
-:103D90008C4200E02403FF800082102100431024A5
-:103DA000AF4200243C0208008C4200E08F650054C2
-:103DB0003C03000A008220213084007F034410214C
-:103DC00000431021AC4501089762003C8F63004C12
-:103DD0003042FFFF0002104000621821AF63005C18
-:103DE0008F6300548F64004C9762003C006418237A
-:103DF0003042FFFF00031843000210400043102A26
-:103E000010400006000000008F6200548F63004CD9
-:103E1000004310230A000F58000210439762003C31
-:103E20003042FFFF00021040ACC2006424020001D7
-:103E3000A0C0007CA0C2008424020C80AF420024F9
-:103E40000E000F0A8F440140104000478FBF001042
-:103E50008F4301408F4201F80440FFFE240200021C
-:103E6000AF4301C0A34201C43C021000AF4201F8BD
-:103E70000A000FA88FBF00109362003F24030010B8
-:103E8000304200FF14430004000000008F44014052
-:103E90000A000F94000028219362003F24030016BB
-:103EA000304200FF1443000424020014A362003FC8
-:103EB0000A000FA2000000008F62004C8F630050C8
-:103EC00000431023044100288FBF0010936200813B
-:103ED00024420001A3620081936200812C4200040D
-:103EE00014400010000000009362003F240300040F
-:103EF000304200FF14430006000000008F440140E0
-:103F00008FBF0010240500930A0005A027BD0018EC
-:103F10008F440140240500938FBF00100A00060F54
-:103F200027BD00188F4401400E0002500000000021
-:103F30008F6200542442FFFFAF6200548F62005032
-:103F40002442FFFFAF6200500E0002598F4401402F
-:103F50008F4401408FBF0010240500040A00025E58
-:103F600027BD00188FBF001003E0000827BD001810
-:103F70008F4201889363007E00021402304400FFE8
-:103F8000306300FF1464000D0000000093620080A5
-:103F9000304200FF1044000900000000A3640080CC
-:103FA0009362000024030050304200FF14430004D9
-:103FB000000000000A0006D78F440180A36400803F
-:103FC00003E000080000000027BDFFE8AFB00010CC
-:103FD000AFBF00149362000524030030304200306C
-:103FE00014430089008080213C0208008C4200209C
-:103FF00010400080020020210E0004930000000009
-:104000008F850020ACB000009362003E9363003FB8
-:10401000304200FF00021200306300FF0043102511
-:10402000ACA2000493620082000216000002160394
-:1040300004410005000000003C0308008C630048B8
-:104040000A000FE6000000009362003E304200408C
-:10405000144000030000182193620081304300FFE8
-:104060009362008200031E00304200FF0002140031
-:1040700000621825ACA300088F620040ACA2000CBF
-:104080008F620048ACA200108F62004CACA20014FA
-:104090008F6200508F63004C0043102304410003E3
-:1040A000000000000A000FFA8F62004C8F6200507F
-:1040B000ACA200183C02080094424B5E3C03C00BCB
-:1040C00000002021004310250E0004B8ACA2001C03
-:1040D0008F6200548F840020AC8200008F620058F1
-:1040E000AC8200048F62005CAC8200088F620060CA
-:1040F0008F43007400431021AC82000C8F62006477
-:10410000AC820010976300689762006A00031C008D
-:104110003042FFFF00621825AC83001493620082D6
-:1041200024030080304200FF14430003000000001D
-:104130000A00102EAC8000188F63000C24020001CE
-:104140001062000E2402FFFF9362003E30420040E6
-:104150001440000A2402FFFF8F63000C8F4200749A
-:10416000006218233C020800006210241440000280
-:10417000000028210060282100051043AC820018AF
-:104180003C02080094424B5E3C03C00C000020211E
-:10419000004310258F8300200E0004B8AC62001C81
-:1041A0008F6200188F8300203C05080094A54B5EA9
-:1041B00024040001AC620000AC6000048F66006C57
-:1041C0003C02400D00A22825AC6600088F6200DC8E
-:1041D000AC62000CAC600010936200050002160097
-:1041E000AC620014AC6000180E0004B8AC65001C92
-:1041F000020020218FBF00148FB00010A3600005C3
-:104200000A00042127BD00188FBF00148FB00010D2
-:1042100003E0000827BD00189742007C30C600FF6D
-:10422000A08600843047FFFF2402000514C2000B63
-:1042300024E3465090A201122C42000710400007D0
-:1042400024E30A0090A30112240200140062100467
-:1042500000E210210A0010663047FFFF3067FFFFC1
-:1042600003E00008A4870014AC87004C8CA201086E
-:104270000080402100A0482100E2102330C600FF4A
-:104280001840000393AA001324E2FFFCACA201082B
-:1042900030C2000110400008000000008D020050F4
-:1042A00000E2102304410013240600058D0200548F
-:1042B00010E20010000000008D02005414E2001A09
-:1042C000000000003C0208008C4200D83042002070
-:1042D0001040000A2402000191030078910200833B
-:1042E000144300062402000101002021012028219E
-:1042F000240600040A00105400000000A1000084FD
-:1043000011400009A50200148F4301008F4201F8FB
-:104310000440FFFE24020002AF4301C0A34201C4D7
-:104320003C021000AF4201F803E00008000000006A
-:1043300027BDFFE88FA90028AFBF001000804021F3
-:1043400000E918231860007330C600FFA080007CCD
-:10435000A08000818CA2010800E210230440004DDF
-:10436000000000008C8200509483003C8C84006428
-:10437000004748233063FFFF012318210083202BCF
-:1043800010800004000000008D0200640A0010B7D5
-:1043900000E210219502003C3042FFFF0122102173
-:1043A00000E21021AD02005C9502003C8D03005C30
-:1043B0003042FFFF0002104000E210210043102BAA
-:1043C00010400003000000000A0010C68D02005CCF
-:1043D0009502003C3042FFFF0002104000E2102135
-:1043E000AD02005CA1000084AD07004C8CA2010866
-:1043F00000E210231840000224E2FFFCACA20108F6
-:1044000030C200011040000A000000008D02005080
-:1044100000E2102304410004010020218D02005419
-:1044200014E20003000000000A0010E82406000562
-:104430008D02005414E200478FBF00103C020800B8
-:104440008C4200D8304200201040000A24020001B3
-:1044500091030078910200831443000624020001B6
-:1044600001002021240600048FBF00100A00105410
-:1044700027BD0018A1000084A50200148F4301008D
-:104480008F4201F80440FFFE240200020A00110DD1
-:10449000000000008C82005C004910230043102BB8
-:1044A00054400001AC87005C9502003C3042FFFFA5
-:1044B0000062102B14400007240200029502003C09
-:1044C0008D03005C3042FFFF00621821AD03005CE9
-:1044D00024020002AD07004CA10200840E000F0A66
-:1044E0008F4401001040001B8FBF00108F4301005C
-:1044F0008F4201F80440FFFE24020002AF4301C0D6
-:10450000A34201C43C021000AF4201F80A0011238B
-:104510008FBF001030C200101040000E8FBF00107F
-:104520008C83005C9482003C006918233042FFFFBA
-:10453000006218213C023FFF3444FFFF0083102B30
-:10454000544000010080182101231021AD02005CBD
-:104550008FBF001003E0000827BD001827BDFFE84B
-:104560008FAA0028AFBF00100080402100EA482336
-:104570001920002130C600FF8C83005C8C8200640F
-:10458000006A18230043102B5040001000691821C6
-:1045900094A2011001221021A4A2011094A20110E2
-:1045A0003042FFFF0043102B1440000A3C023FFF43
-:1045B00094A2011000431023A4A201109482003C95
-:1045C0003042FFFF0A00114200621821A4A001102E
-:1045D0003C023FFF3444FFFF0083102B5440000196
-:1045E0000080182100671021AD02005CA100007C52
-:1045F0000A00118AA100008130C200101040003C66
-:10460000000000008C820050004A1023184000383F
-:10461000000000009082007C24420001A082007C07
-:104620009082007C3C0308008C630024304200FF31
-:104630000043102B1440005C8FBF00108CA20108B7
-:1046400000E2102318400058000000008C83005442
-:104650009482003C006A18233042FFFF0003184395
-:10466000000210400043102A104000050000000026
-:104670008C820054004A10230A001171000210437A
-:104680009482003C3042FFFF00021040AD02006403
-:104690009502003C8D0400649503003C3042FFFF0E
-:1046A00000021040008220213063FFFF00831821A8
-:1046B00001431021AD02005C8D020054ACA2010840
-:1046C00024020002A10200840E000F0A8F440100A0
-:1046D000104000358FBF00108F4301008F4201F85A
-:1046E0000440FFFE240200020A0011B30000000093
-:1046F000AD07004C8CA2010800E210231840000214
-:1047000024E2FFFCACA2010830C200011040000A04
-:10471000000000008D02005000E21023044100045C
-:10472000010020218D02005414E20003000000006B
-:104730000A0011AA240600058D02005414E2001A92
-:104740008FBF00103C0208008C4200D8304200208D
-:104750001040000A240200019103007891020083B6
-:104760001443000624020001010020212406000455
-:104770008FBF00100A00105427BD0018A10000844C
-:10478000A50200148F4301008F4201F80440FFFE90
-:1047900024020002AF4301C0A34201C43C02100046
-:1047A000AF4201F88FBF001003E0000827BD0018DA
-:1047B0008FAA00108C8200500080402130C600FF7C
-:1047C000004A102300A048211840000700E01821EB
-:1047D00024020001A0800084A0A00112A482001481
-:1047E0000A001125AFAA0010A0800081AD07004C7F
-:1047F0008CA2010800E210231840000224E2FFFC12
-:10480000ACA2010830C20001104000080000000006
-:104810008D0200500062102304410013240600059D
-:104820008D02005410620010000000008D02005440
-:1048300014620011000000003C0208008C4200D805
-:10484000304200201040000A240200019103007849
-:10485000910200831443000624020001010020217C
-:1048600001202821240600040A0010540000000042
-:10487000A1000084A502001403E00008000000006D
-:1048800027BDFFE0AFBF0018274201009046000A95
-:104890008C4800148C8B004C9082008430C900FF3F
-:1048A00001681823304A00FF1C60001A2D460006DC
-:1048B000240200010142100410C00016304300031E
-:1048C000012030210100382114600007304C000C19
-:1048D00015800009304200301440000B8FBF0018D3
-:1048E0000A001214000000000E001125AFAB0010EA
-:1048F0000A0012148FBF00180E00109AAFAB001000
-:104900000A0012148FBF0018AFAB00100E0011BACE
-:10491000AFAA00148FBF001803E0000827BD0020D5
-:1049200024020003A08200848C82005403E000086B
-:10493000ACA201083C0200080342182190620081E9
-:10494000240600433C07601924420001A062008154
-:10495000906300813C0208008C4200C0306300FF7D
-:10496000146200102403FF803C0208008C4200E027
-:104970000082102100431024AF4200243C020800B2
-:104980008C4200E03C03000A008210213042007F8C
-:104990000342102100431021944500D40A000AF17B
-:1049A00030A5FFFF03E000080000000027BDFFE086
-:1049B000AFBF0018AFB10014AFB000108F4201803C
-:1049C0000080802100A088210E00121B00402021C1
-:1049D000A20000848E0200548FBF00188FB0001018
-:1049E000AE2201088FB1001403E0000827BD0020AB
-:1049F00027BDFFE03C020008AFB00010AFBF0018B9
-:104A0000AFB10014034280218F5101409203008412
-:104A10008E0400508E02004C14820040306600FF6D
-:104A20003C0208008C4200E02403FF800222102197
-:104A300000431024AF4200243C0208008C4200E0F6
-:104A40009744007C92050081022210213042007FB1
-:104A5000034218213C02000A0062182114A0000B36
-:104A60003084FFFF2402000554C20014248205DCB8
-:104A70009062011224420001A062011224020C8003
-:104A8000AF4200240A00127324020005A060011244
-:104A90002402000514C20009248205DC9202008170
-:104AA0002C4200075040000524820A009203008136
-:104AB0002402001400621004008210213044FFFF21
-:104AC000A60400140E00121B022020219602003CB6
-:104AD0008E03004C022020213042FFFF00021040D4
-:104AE000006218210E000250AE03005C9202007DAD
-:104AF00002202021344200400E000259A202007D13
-:104B00008F4201F80440FFFE24020002AF5101C0B1
-:104B1000A34201C43C021000AF4201F88FBF00184D
-:104B20008FB100148FB0001003E0000827BD0020F3
-:104B300008000ACC08000B1408000B9808000BE4CE
-:044B400008000C203D
-:0C4B44000A000028000000000000000033
-:104B50000000000D6370362E322E31000000000080
-:104B60000602010400000000000000000000000038
-:104B70000000000000000000000000000000000035
-:104B80000000000000000000000000000000002005
-:104B90000000000000000000000000000000000015
-:104BA0000000000000000000000000000000000005
-:104BB00000000000000000000000000000000001F4
-:104BC0000000002B000000000000000400030D4066
-:104BD00000000000000000000000000000000000D5
-:104BE00000000000000000001000000300000000B2
-:104BF0000000000D0000000D3C020800244258A4F3
-:104C00003C03080024635F70AC4000000043202B8D
-:104C10001480FFFD244200043C1D080037BD7FFCCA
-:104C200003A0F0213C100800261000A03C1C080046
-:104C3000279C58A40E0001AC000000000000000DED
-:104C400027BDFFE83C096018AFBF00108D2C500055
-:104C5000240DFF7F24080031018D5824356A380C5B
-:104C600024070C003C1A8000AD2A50003C04800A46
-:104C7000AF4800083C1B8008AF4700240E00091510
-:104C8000AF8400100E0008D8000000000E000825B8
-:104C9000000000000E001252000000003C046016EC
-:104CA0008C8500003C06FFFF3C02535300A61824ED
-:104CB0001062004734867C0094C201F2A780002C69
-:104CC00010400003A78000CC38581E1EA798002C67
-:104CD00094C201F810400004978300CC38591E1E7E
-:104CE000A79900CC978300CC2C7F006753E000018C
-:104CF000240300669784002C2C82040114400002D7
-:104D000000602821240404003C0760008CE904387A
-:104D10002403103C3128FFFF1103001F30B9FFFFAF
-:104D200057200010A38000CE24020050A38200CEA2
-:104D3000939F00CE53E0000FA78500CCA78000CC46
-:104D4000978500CC8FBF0010A780002CA78000346F
-:104D5000A78000E63C010800AC25008003E00008C5
-:104D600027BD0018939F00CE57E0FFF5A78000CC29
-:104D7000A78500CC978500CC8FBF0010A784002C9E
-:104D8000A7800034A78000E63C010800AC25008025
-:104D900003E0000827BD0018A38000CE8CCB003CA8
-:104DA000316A00011140000E0000000030A7FFFF33
-:104DB00010E0FFDE240200508CCC00C831860001D8
-:104DC00014C0FFDC939F00CE0A00007A2402005139
-:104DD0008C8F00043C0E60000A00005D01EE302163
-:104DE0008CEF0808240D5708000F740211CD000441
-:104DF00030B8FFFF240500660A00007B240404008D
-:104E00001700FFCC939F00CE0A00007A24020050C6
-:104E10008F8600103089FFFF000939408CC30010D5
-:104E20003C08005000E82025AF4300388CC5001432
-:104E300027420400AF82001CAF45003CAF44003065
-:104E40000000000000000000000000000000000062
-:104E50000000000000000000000000000000000052
-:104E60008F4B0000316A00201140FFFD0000000060
-:104E700003E00008000000008F840010948A001AEC
-:104E80008C8700243149FFFF000940C000E8302131
-:104E9000AF46003C8C8500248F43003C00A31023C8
-:104EA00018400029000000008C8B002025620001C2
-:104EB0003C0D005035AC0008AF420038AF4C00301C
-:104EC00000000000000000000000000000000000E2
-:104ED00000000000000000000000000000000000D2
-:104EE0008F4F000031EE002011C0FFFD00000000D8
-:104EF0008F4A04003C080020AC8A00108F4904044B
-:104F0000AC890014AF4800300000000094860018FF
-:104F10009487001C00C71821A48300189485001AE8
-:104F200024A20001A482001A9498001A9499001EE9
-:104F3000133800030000000003E000080000000038
-:104F400003E00008A480001A8C8200200A0000DC24
-:104F50003C0D00500A0000CD000000003C0308009A
-:104F60008C6300208F82001827BDFFE810620008C4
-:104F7000AFBF00100E000104AF8300183C0308000F
-:104F80008C63002024040001106400048F89001049
-:104F90008FBF001003E0000827BD00188FBF00106E
-:104FA0003C076012A520000A9528000A34E500108D
-:104FB00027BD00183106FFFF03E00008ACA60090F3
-:104FC0003C0208008C42002027BDFFC8AFBF003460
-:104FD000AFBE0030AFB7002CAFB60028AFB500248D
-:104FE000AFB40020AFB3001CAFB20018AFB10014D3
-:104FF00010400050AFB000108F840010948600065F
-:105000009483000A00C3282330B6FFFF12C0004A71
-:105010008FBF003494890018948A000A012A402323
-:105020003102FFFF02C2382B14E0000202C020212F
-:10503000004020212C8C0005158000020080A0215A
-:10504000241400040E0000B3028020218F8700107A
-:1050500002809821AF80001494ED000A028088211C
-:105060001280004E31B2FFFF3C1770003C1540002B
-:105070003C1E60008F8F001C8DEE000001D71824AD
-:10508000507500500220202102A3802B160000350D
-:105090003C182000507800470220202124100001F5
-:1050A0008F83001414600039029158230230F823D2
-:1050B0000250C82133F1FFFF1620FFEE3332FFFF0D
-:1050C0008F8700103C110020AF510030000000001D
-:1050D00094E6000A3C1E601237D5001002662821B3
-:1050E000A4E5000A94E2000A94F2000A94F400187D
-:1050F0003057FFFF1292003BAEB700908CED0014CA
-:105100008CE400100013714001AE4021000E5FC31B
-:10511000010E502B008B4821012A1821ACE8001405
-:10512000ACE3001002D3382330F6FFFF16C0FFB9FE
-:105130008F8400108FBF00348FBE00308FB7002CDB
-:105140008FB600288FB500248FB400208FB3001CC9
-:105150008FB200188FB100148FB0001003E0000868
-:1051600027BD0038107E001B000000001477FFCC24
-:10517000241000010E00159B000000008F83001416
-:105180001060FFCB0230F823029158238F87001064
-:10519000017020210A0001973093FFFF8F830014D4
-:1051A0001460FFCB3C110020AF5100300A000163B6
-:1051B000000000000E00077D024028210A00015770
-:1051C000004080210E00033A024028210A000157C6
-:1051D000004080210E001463022020210A000157A4
-:1051E000004080210E0000CD000000000A0001797F
-:1051F00002D3382327BDFFE8AFB00010AFBF0014C3
-:105200000E00003F000000003C028000345000709F
-:105210000A0001BA8E0600008F4F000039EE00012F
-:1052200031C20001104000248F8600A88E070000C4
-:105230003C0C08008D8C003C3C0908008D2900388E
-:1052400000E66823018D28210000502100AD302B9D
-:10525000012A4021010620213C010800AC25003C28
-:10526000AF8700A83C010800AC2400380E000106FE
-:10527000000000003C0308008C6300701060FFE633
-:10528000006020213C0508008CA500683C06080051
-:105290008CC6006C0E00152A000000003C010800BE
-:1052A000AC2000708F4F000039EE000131C20001C8
-:1052B0001440FFDE8F8600A88E0A00008F8B00A8A6
-:1052C0003C0508008CA5003C3C0408008C84003898
-:1052D000014B482300A938210082182100E9402B06
-:1052E000006810213C010800AC27003C3C0108008C
-:1052F000AC2200388F5F01002419FF0024180C0035
-:1053000003F9202410980012AF840000AF4400205D
-:10531000936D0000240C002031A600FF10CC001279
-:10532000240E005010CE00043C194000AF59013843
-:105330000A0001B3000000000E0011C800000000C8
-:105340003C194000AF5901380A0001B300000000C9
-:105350000E00011F000000003C194000AF59013849
-:105360000A0001B3000000008F58010000802821CE
-:10537000330F00FF01E020210E0002F1AF8F000487
-:105380003C194000AF5901380A0001B30000000089
-:1053900000A4102B2403000110400009000030215C
-:1053A0000005284000A4102B04A0000300031840AF
-:1053B0005440FFFC000528405060000A0004182BF0
-:1053C0000085382B54E000040003184200C3302548
-:1053D00000852023000318421460FFF900052842CD
-:1053E0000004182B03E0000800C310218F4201B80D
-:1053F0000440FFFE00000000AF4401803C031000A9
-:1054000024040040AF450184A3440188A3460189D8
-:10541000A747018A03E00008AF4301B83084FFFFCB
-:105420000080382130A5FFFF000020210A00022A59
-:10543000240600803087FFFF8CA40000240600387B
-:105440000A00022A000028218F8300388F8600304E
-:105450001066000B008040213C07080024E75A1822
-:10546000000328C000A710218C4400002463000121
-:10547000108800053063000F5466FFFA000328C04F
-:1054800003E00008000010213C07080024E75A1C34
-:1054900000A7302103E000088CC200003C0390000C
-:1054A0003462000100822025AF4400208F45002097
-:1054B00004A0FFFE0000000003E000080000000060
-:1054C0003C038000346200010082202503E00008D4
-:1054D000AF44002027BDFFE0AFB100143091FFFFC3
-:1054E000AFB00010AFBF00181220001300A0802141
-:1054F0008CA2000024040002240601401040000F8A
-:10550000004028210E000C5C00000000000010216B
-:10551000AE000000022038218FBF00188FB10014A8
-:105520008FB0001000402021000028210000302111
-:105530000A00022A27BD00208CA200000220382188
-:105540008FBF00188FB100148FB0001000402021D1
-:1055500000002821000030210A00022A27BD002077
-:1055600000A010213087FFFF8CA500048C440000B0
-:105570000A00022A2406000627BDFFE0AFB0001093
-:10558000AFBF0018AFB100149363003E00808021CC
-:105590000080282130620040000020211040000FD0
-:1055A0008E1100000E000851022020219367000098
-:1055B0002404005030E500FF50A400128E0F0000BC
-:1055C000022020218FBF00188FB100148FB000106F
-:1055D000A762013C0A00091127BD00200E000287C6
-:1055E000000000000E0008510220202193670000F7
-:1055F0002404005030E500FF14A4FFF20220202113
-:105600008E0F00003C1008008E1000503C0D000C66
-:10561000240BFF8001F05021314E007F01DA602120
-:10562000018D4021014B4824AF4900280220202150
-:105630008FBF00188FB100148FB00010A50200D6E4
-:1056400027BD00200A000911AF8800D027BDFFE068
-:10565000AFBF0018AFB10014AFB0001093660001E7
-:10566000008080210E00025630D1000493640005B2
-:10567000001029C2A765000034830040A363000521
-:105680000E00025F020020210E00091302002021FB
-:1056900024020001AF62000C02002821A762001062
-:1056A00024040002A762001224060140A76200142D
-:1056B0000E000C5CA76200161620000F8FBF0018AA
-:1056C000978C00343C0B08008D6B00782588FFFF19
-:1056D0003109FFFF256A0001012A382B10E000067E
-:1056E000A78800343C0F6006240E001635ED00102C
-:1056F000ADAE00508FBF00188FB100148FB00010F6
-:1057000003E0000827BD002027BDFFE0AFB1001473
-:10571000AFBF0018AFB0001000A088211080000AB1
-:105720003C03600024020080108200120000000090
-:105730000000000D8FBF00188FB100148FB0001053
-:1057400003E0000827BD00208C682BF80500FFFE51
-:1057500000000000AC712BC08FBF00188FB1001487
-:105760008FB000103C09100027BD002003E00008A6
-:10577000AC692BF80E00025600A0202193650005AD
-:10578000022020210E00025F30B000FF2403003E03
-:105790001603FFE7000000008F4401780480FFFE3D
-:1057A000240700073C061000AF51014002202021D1
-:1057B000A34701448FBF00188FB100148FB00010B1
-:1057C000AF4601780A0002C227BD002027BDFFE8CE
-:1057D000AFBF0014AFB000108F50002000000000D9
-:1057E0000E000913AF440020AF5000208FBF0014FB
-:1057F0008FB0001003E0000827BD00183084FFFFC1
-:10580000008038212406003500A020210A00022A49
-:10581000000028213084FFFF008038212406003654
-:1058200000A020210A00022A0000282127BDFFD065
-:10583000AFB3001C3093FFFFAFB50024AFB2001828
-:10584000AFBF0028AFB40020AFB10014AFB000105C
-:1058500030B5FFFF12600027000090218F90001CE0
-:105860008E0300003C0680002402004000033E023C
-:1058700000032C0230E4007F006688241482001D9F
-:1058800030A500FF8F8300282C68000A510000100B
-:105890008F910014000358803C0C0800258C56940E
-:1058A000016C50218D49000001200008000000001B
-:1058B00002B210213045FFFF0E000236240400849E
-:1058C000162000028F90001CAF8000288F910014DA
-:1058D000260C002026430001018080213072FFFF4A
-:1058E00016200004AF8C001C0253502B1540FFDC27
-:1058F00000000000024010218FBF00288FB5002457
-:105900008FB400208FB3001C8FB200188FB1001429
-:105910008FB0001003E0000827BD0030240E0034D3
-:1059200014AE00F9000000009203000E241F168040
-:105930003C07000CA36300219202000D0347C8211D
-:105940003C066000A3620020961100123C0A7FFF13
-:10595000354CFFFFA771003C960B00102403000597
-:105960003168FFFFAF6800848E05001CAF5F002820
-:105970008F3800008CC4444803057826008F3021FE
-:10598000AF66004C8F69004C24CE00013C057F00BF
-:10599000AF6900508F740050AF740054AF66007050
-:1059A000AF6E00588F6D005824140050AF6D005C2E
-:1059B000A3600023AF6C0064A36300378E02001461
-:1059C000AF6200488F710048AF7100248E0B001841
-:1059D000AF6B006C9208000CA3680036937F003E0A
-:1059E00037F90020A379003E8F78007403058024E6
-:1059F000360F4000AF6F007493640000308900FFE1
-:105A0000513402452404FF803C04080024845A9841
-:105A10000E00028D000000003C1008008E105A9805
-:105A20000E00025602002021240600042407000173
-:105A3000A366007D020020210E00025FA36700051F
-:105A40008F5F017807E0FFFE240B0002AF5001409A
-:105A5000A34B01448F90001C3C081000AF48017814
-:105A60000A000362AF8000282CAD003751A0FF98D8
-:105A70008F9100140005A0803C180800271856BC20
-:105A8000029878218DEE000001C00008000000009F
-:105A90002418000614B80011000000003C0808009B
-:105AA0008D085A9824040005AF4800208E1F001866
-:105AB000AF7F00188F79004CAF79001C8F650050C4
-:105AC000122000C0AF6500700A000362AF84002896
-:105AD0002406000710A60083240300063C050800E6
-:105AE00024A55A980E000264240400818F90001CA3
-:105AF0000011102B0A000362AF8200282407000463
-:105B000014A7FFF6240500503C1808008F185A9877
-:105B1000AF5800208E0F0008AF6F00408E090008BC
-:105B2000AF6900448E14000CAF7400488E0E001054
-:105B3000AF6E004C8E0D0010AF6D00848E0A001405
-:105B4000AF6A00508E0C0018AF6C00548E04001C1D
-:105B5000AF64005893630000306B00FF116501D8FB
-:105B6000000000008F7400488F6900400289702394
-:105B700005C000042404008C1620FFDE240200036C
-:105B8000240400823C05080024A55A980E000287D0
-:105B9000000000008F90001C000010210A0003622A
-:105BA000AF820028240F000514AFFFCC240520008D
-:105BB0003C0708008CE75A98AF4700208E06000487
-:105BC000AF66005C9208000824100008A36800215A
-:105BD0008F9F001C93F90009A37900208F86001C79
-:105BE00090D8000A330400FF10900011000000005C
-:105BF0002885000914A0006924020002240A00205C
-:105C0000108A000B34058000288D002115A00008A3
-:105C100024054000240E0040108E00053C050001C4
-:105C200024140080109400023C050002240540006A
-:105C30008F7800743C19FF00031980240205782531
-:105C4000AF6F007490C4000BA36400818F84001CAC
-:105C50009489000C11200192000000009490000C27
-:105C60002406FFBF24050004A770003C908F000E9F
-:105C7000A36F003E8F84001C9089000FA369003F32
-:105C80008F8B001C8D6E00108F54007401D468231C
-:105C9000AF6D00608D6A0014AF6A0064956C0018E7
-:105CA000A76C00689563001AA763006A8D62001CE8
-:105CB000AF62006C9167000EA367003E9368003EE0
-:105CC0000106F8241220014BA37F003E8F90001C98
-:105CD0000A000362AF8500282407002214A7FF7F73
-:105CE000240300073C0B08008D6B5A981220000C0F
-:105CF000AF4B00200A000362AF830028240C00335E
-:105D000010AC0014240A00283C05080024A55A9869
-:105D10000E00023C240400810A0003EB8F90001C5B
-:105D20003C04080024845A980E00028D00000000F4
-:105D30009363000024110050306200FF10510135C0
-:105D4000000000008F90001C000018210A00036270
-:105D5000AF8300283C0D08008DAD5A9824040081C3
-:105D6000AF4D00203C05080024A55A980E00023CC7
-:105D7000A36A00348F90001C240200090A00036209
-:105D8000AF82002802B288213225FFFF0E000236C2
-:105D9000240400840A0003628F90001C1082FFA478
-:105DA00024050400288B000311600170240C0004FA
-:105DB000240300015483FF9E240540000A00043B95
-:105DC000240501003C04080024845A988F62004C8A
-:105DD0000E00028D8F6300508F90001C0000202168
-:105DE0000A000362AF8400288E1000042404008A95
-:105DF000AF50002093790005333800021700015F8F
-:105E0000020028219368002302002821311F00206E
-:105E100017E0015A2404008D9367003F2406001206
-:105E200030E200FF10460155240400810E000256A6
-:105E30000200202193630023240500040200202196
-:105E4000346B0042A36B00230E00025FA365007D4C
-:105E50008F4401780480FFFE240A0002AF50014005
-:105E6000A34A01448F90001C3C0C1000AF4C0178F9
-:105E70000A0003EC0011102B8E1000042404008A89
-:105E8000AF500020936E000531CD000215A0001622
-:105E900002002821936F003F2414000402002821EF
-:105EA00031E900FF11340010240400810E00025675
-:105EB000020020219362002324080012241FFFFE09
-:105EC00034460020A3660023A368003F93790005B1
-:105ED00002002021033FC0240E00025FA3780005CA
-:105EE00002002821000020210E00033400000000E1
-:105EF0000A0003EB8F90001C8E1000043C03000886
-:105F00000343A021AF500020928B000024050050D5
-:105F1000316400FF10850161240700880200202100
-:105F2000000028210E00022A2406000E928D000097
-:105F3000240EFF800200282101AE8025A2900000DF
-:105F4000240400040E000C5C240600300A0003EB5D
-:105F50008F90001C8E0800043C14080026945A9868
-:105F60003C010800AC285A98AF480020921F00035B
-:105F700033F9000413200002240200122402000658
-:105F8000A362003F920B001B2404FFC03165003F59
-:105F900000A43825A367003E9206000330C200012A
-:105FA00014400132000000008E020008AE8200089A
-:105FB0003C0208008C425AA010400131000249C244
-:105FC000A76900088E14000C240C0001240300149F
-:105FD000AF74002C8E0E0010AF6E0030960D0016C0
-:105FE000A76D0038960A0014A76A003AAF6C000C3F
-:105FF000A76C0010A76C0012A76C0014A76C001609
-:1060000012200136A3630034920F000331F0000226
-:106010002E1100018F90001C262200080A00036246
-:10602000AF8200288E0400043C0E0008034E30218D
-:10603000AF4400208E05000890CD0000240C0050D5
-:1060400031AA00FF114C00862407008824060009AD
-:106050000E00022A000000000A0003EB8F90001CD3
-:106060008E04001C0E00024100000000104000F4ED
-:10607000004050218F89001C240700890140202105
-:106080008D25001C240600010E00022A00000000DD
-:106090000A0003EB8F90001C960D00023C140800D0
-:1060A00026945A9831AA0004514000B83C10600070
-:1060B0008E0E001C3C010800AC2E5A98AF4E0020FA
-:1060C000920700102408001430E200FF144800D6A4
-:1060D00000000000960B00023163000114600165AE
-:1060E000000000008E020004AE8200083C1408008C
-:1060F0008E945AA01280015B000000008F7400741F
-:106100003C0380002404000102835825AF6B007417
-:10611000A3600005AF64000C3C0708008CE75AA0A0
-:106120008F86001CA7640010000711C2A76400122C
-:10613000A7640014A7640016A76200088CC80008B2
-:1061400024040002AF68002C8CC5000CAF65003041
-:1061500090DF0010A37F00348F99001C9330001152
-:10616000A37000358F98001C930F0012A36F0036A8
-:106170008F89001C912E0013A36E00378F90001C96
-:10618000960D0014A76D0038960A0016A76A003A0B
-:106190008E0C0018AF6C00245620FDCCAF84002874
-:1061A0003C05080024A55A980E0002640000202136
-:1061B0008F90001C0A0004A7000020218E1000040C
-:1061C00024070081AF500020936900233134001070
-:1061D000128000170000000002002021000028218A
-:1061E0002406001F0E00022A000000000A0003EB34
-:1061F0008F90001C3C05080024A55A980E000287C9
-:10620000240400828F90001C000028210A000362F1
-:10621000AF8500283C0408008C845A980E0014E8CE
-:10622000000000008F90001C0A000482000018216A
-:106230000E00025602002021937800230200202144
-:10624000370F00100E00025FA36F002300003821FB
-:1062500002002021000028210A0005A82406001FB2
-:10626000920F000C31E90001112000030000000032
-:106270009618000EA4D8002C921F000C33F90002CF
-:1062800013200005000038218E0200149608001229
-:10629000ACC2001CA4C8001A0A0005432406000969
-:1062A0003C05080024A55A980E0002872404008BA0
-:1062B0008F90001C0011282B0A000362AF85002874
-:1062C000AF6000843C0A08008D4A5A983C0D0800D3
-:1062D0008DAD0050240CFF803C02000C014D1821B4
-:1062E000006C2024AF4400288E070014306B007F20
-:1062F000017A282100A2C821AF2700D88E060014F9
-:10630000AF9900D0AF2600DC8E080010251FFFFEDD
-:106310000A000408AF3F01083C0508008CA55A9804
-:106320003C1908008F39005024CCFFFE00B9C02171
-:1063300003047824AF4F00283C1408008E945A9828
-:106340003C0908008D2900500289702131CD007F61
-:1063500001BA502101478021AE0600D8AF9000D08D
-:10636000AE0000DC0A0003B1AE0C0108548CFE3014
-:10637000240540000A00043B240510000E00032EF3
-:10638000000000000A0003EB8F90001C8E0F442CCD
-:106390003C186C62370979703C010800AC205A98AF
-:1063A00015E9000824050140979F00349786002CCA
-:1063B0000280282103E6C82B132000112404009238
-:1063C000240501400E000C7A240400023C01080060
-:1063D000AC225A98AF4200203C0508008CA55A9880
-:1063E00010A00005240400830E00084500000000F2
-:1063F00010400009240400833C05080024A55A9895
-:106400000E000264000000008F90001C0011202B81
-:106410000A000362AF8400280E0008490000000053
-:106420000A00055F8F90001C0E00084D0000000060
-:106430003C05080024A55A980A00062F2404008B66
-:10644000240400040E000C7A240500301440002AB5
-:10645000004050218F89001C240700830140202127
-:106460008D25001C0A000551240600018E04000839
-:106470000E000241000000000A00051BAE82000869
-:106480003C05080024A55A980E00023C240400870D
-:106490008F90001C0A0005360011102B8F830038E6
-:1064A0008F8600301066FE9D000038213C070800F2
-:1064B00024E75A1C000320C0008728218CAC000070
-:1064C00011900061246A00013143000F5466FFFA05
-:1064D000000320C00A0004F6000038213C05080033
-:1064E00024A55A980E000287240400828F90001C75
-:1064F0000A000536000010213C0B0008034B202148
-:106500002403005024070001AF420020A0830000B4
-:10651000A08700018F82001C90480004A08800180A
-:106520008F85001C90A60005A08600198F9F001C77
-:1065300093F90006A099001A8F90001C921800078A
-:10654000A098001B8F94001C928F0008A08F001C45
-:106550008F89001C912E0009A08E001D8F8D001CBC
-:1065600091AC000AA08C001E8F8B001C3C0C080014
-:10657000258C5A1C9163000B3C0B0800256B5A18A4
-:10658000A083001F8F87001C90E8000CA0880020CB
-:106590008F82001C9045000D24024646A0850021F4
-:1065A0008F86001C90DF000EA09F00228F99001C98
-:1065B0009330000FA09000238F98001C93140010BC
-:1065C000A09400248F8F001C91E90011A089002560
-:1065D0008F89001C8F8E00308F900038952D00140D
-:1065E000000E18C025C80001A48D002895270016AC
-:1065F000006C3021006BC821A487002A9525001863
-:106600003108000FA485002CA482002E8D3F001CB1
-:10661000ACCA0000AF88003011100006AF3F000088
-:10662000000038218D25001C014020210A00055161
-:1066300024060001250C00013184000F00003821E0
-:106640000A0006B8AF8400383C07080024E75A184F
-:106650000087302100003821ACA000000A0004F6B9
-:10666000ACC000003C05080024A55A980A00062F7B
-:10667000240400878E0400040E0002410000000084
-:106680000A00056AAE8200083084FFFF30C600FFB2
-:106690008F4201B80440FFFE00064400010430258B
-:1066A0003C07200000C720253C031000AF400180BC
-:1066B000AF450184AF44018803E00008AF4301B84F
-:1066C00027BDFFE8AFB00010AFBF00143C0760006B
-:1066D000240600021080000600A080210010102B6C
-:1066E0008FBF00148FB0001003E0000827BD001812
-:1066F0003C09600EAD2000348CE5201C8F82001C0C
-:106700002408FFFC00A81824ACE3201C0E0006D1CE
-:106710008C45000C0010102B8FBF00148FB00010A0
-:1067200003E0000827BD00183C02600E344701005A
-:1067300024090018274A040000000000000000009F
-:10674000000000003C06005034C30200AF44003893
-:10675000AF45003CAF430030014018218F4B000093
-:10676000316800201100FFFD2406007F2408FFFF90
-:106770008C6C000024C6FFFF24630004ACEC000016
-:1067800014C8FFFB24E70004000000000000000024
-:10679000000000003C0F0020AF4F00300000000060
-:1067A00024AD020001A5702B2529FFFF008E2021BA
-:1067B0001520FFE101A0282103E0000800000000EF
-:1067C00027BDFFE0AFB10014AFBF0018AFB000109D
-:1067D0003C05600E8CA20034008088211440000625
-:1067E0003C0460008C87201C2408FFFC00E8302457
-:1067F00034C30001AC83201C8F8B001C24090001D2
-:10680000ACA90034956900028D6500148D70000CF0
-:106810002D2400818D6700048D660008108000071C
-:106820008D6A00102D2C00041580000E30CE00075C
-:10683000312D000311A0000B000000002404008B88
-:10684000020028210E0006D1240600030011102B9F
-:106850008FBF00188FB100148FB0001003E0000844
-:1068600027BD002015C0FFF62404008B3C03002048
-:10687000AF4300300000000024020001AF8200148A
-:106880000000000000000000000000003C1F01505C
-:10689000013FC825253800033C0F600EAF47003884
-:1068A00000181882AF46003C35E8003CAF59003074
-:1068B000274704008F4400003086002010C0FFFDF1
-:1068C00000000000106000082466FFFF2403FFFFA3
-:1068D0008CEB000024C6FFFF24E70004AD0B000092
-:1068E00014C3FFFB250800043C08600EAD09003806
-:1068F0000000000000000000000000003C07002035
-:10690000AF470030000000000E0006F901402021D2
-:1069100002002821000020210E0006D124060003D9
-:106920000011102B8FBF00188FB100148FB0001012
-:1069300003E0000827BD002027BDFFE0AFB200182C
-:106940003092FFFFAFB10014AFBF001CAFB000101A
-:106950001640000D000088210A0007AA022010211D
-:1069600024050001508500278CE5000C0000000D77
-:10697000262300013071FFFF24E200200232382B71
-:1069800010E00019AF82001C8F8200141440001622
-:106990008F87001C3C0670003C0320008CE5000043
-:1069A00000A62024148300108F84003C00054402BC
-:1069B0003C09800000A980241480FFE9310600FF13
-:1069C0002CCA00095140FFEB262300010006688015
-:1069D0003C0E080025CE579801AE60218D8B00003B
-:1069E0000160000800000000022010218FBF001C81
-:1069F0008FB200188FB100148FB0001003E00008B0
-:106A000027BD00200E0006D1240400841600FFD804
-:106A10008F87001C0A00078BAF80003C90EF0002BC
-:106A200000002021240600090E0006D1000F2E00D0
-:106A30008F87001C0010102B0A00078BAF82003CD0
-:106A4000020028210E0006DF240400018F87001CAD
-:106A50000A00078BAF82003C020028210E0006DFEF
-:106A6000000020210A0007C38F87001C0E00071FAB
-:106A7000020020210A0007C38F87001C30B0FFFFEF
-:106A8000001019C08F5801B80700FFFE3C1F2004FA
-:106A90003C191000AF430180AF400184AF5F018813
-:106AA000AF5901B80A00078C262300013082FFFF8E
-:106AB00014400003000018210004240224030010E5
-:106AC000308500FF14A000053087000F2466000801
-:106AD0000004220230C300FF3087000F14E00005DD
-:106AE000308900032468000400042102310300FF00
-:106AF0003089000315200005388B0001246A00024C
-:106B000000042082314300FF388B00013164000112
-:106B100010800002246C0001318300FF03E00008B4
-:106B200000601021308BFFFF000B394230E600FF80
-:106B30003C09080025295998000640800109602178
-:106B40008D8700003164001F240A0001008A1804A8
-:106B500030A500FF00E3202514A000020003102749
-:106B600000E22024240F000100CF700401096821F5
-:106B7000000E282714800005ADA400008F86000CAD
-:106B800000A6102403E00008AF82000C8F88000CE0
-:106B900001C8102503E00008AF82000C3C06001F6E
-:106BA0003C0360003084FFFF34C5FF8024020020D6
-:106BB000AC602008AC60200CAC602010AC652014E8
-:106BC000AC642018AC62200000000000000000004F
-:106BD00003E000080000000027BDFFE82402FFFFDB
-:106BE000AFBF0010AF82000C000020213C0608005F
-:106BF00024C659982405FFFF248900010004408021
-:106C00003124FFFF010618212C87002014E0FFFA31
-:106C1000AC6500000E0008160000202124020001CF
-:106C20003C04600024050020AC822018AC852000C4
-:106C3000000000000000000000000000244A0001E5
-:106C40003142FFFF2C46040014C0FFF78FBF001035
-:106C500003E0000827BD00188F8300082C620400A1
-:106C600003E00008384200018F830008246200011D
-:106C700003E00008AF8200088F8300082462FFFF52
-:106C800003E00008AF82000827BDFFE0AFB10014A9
-:106C9000AFBF0018AFB000108F6B00303C06600033
-:106CA00000808821ACCB20088F6A002C3C02800039
-:106CB00024030008ACCA200C9769003A9768003892
-:106CC00000092C003107FFFF00A72025ACC42010CD
-:106CD000ACC22014ACC32000000000000000000083
-:106CE000000000003C0360008C6D200031AC000807
-:106CF0001580FFF9000000008C6E201405C00020F4
-:106D0000000000000E0007DA8F84000C00024080B3
-:106D10003C09080025295998010938218CE4000014
-:106D20000E0007DA00028140020220213090FFFFAE
-:106D3000020020210E0007F8000028213C0C8000F2
-:106D4000022C58253210FFFF3C116000240A00205D
-:106D5000AE2B2014AE302018AE2A20000000000018
-:106D60000000000000000000020010218FBF00188A
-:106D70008FB100148FB0001003E0000827BD002081
-:106D80008C6620143C02001F3443FF803C1FFFE848
-:106D900000C3C02437F9080003198021001079C20C
-:106DA0003C0C8000022C582531F0FFFF3C116000A4
-:106DB000240A0020AE2B2014AE302018AE2A20006A
-:106DC0000000000000000000000000000200102190
-:106DD0008FBF00188FB100148FB0001003E00008BF
-:106DE00027BD002027BDFFE8AFB000103402FFFF31
-:106DF0003090FFFFAFBF00141202000602002021F6
-:106E00000E00081600000000020020210E0007F806
-:106E1000240500018F8400088FBF00148FB000107C
-:106E20002483FFFF27BD001803E00008AF8300089C
-:106E3000000439C230E6003F00043B42000718401E
-:106E4000240210002CC4002024C8FFE0AF42002C14
-:106E5000246300011480000330A900FF00071840DC
-:106E6000310600FF0003608024080001019A5821C8
-:106E70003C0A000E00C82804016A382111200005D0
-:106E8000000530278CE900000125302503E00008CB
-:106E9000ACE600008CEE000001C6682403E00008A8
-:106EA000ACED000027BDFFE8AFBF0014AFB000108D
-:106EB0003C0460008C8508083403F00030A2F00028
-:106EC00050430006240200018C8708083404E000C7
-:106ED00030E6F00010C4001E24020002AF82004021
-:106EE0003C1060003C0A0200AE0A0814240910009D
-:106EF0003C08000E8E03440003482021AF49002CBB
-:106F0000240501200E000CC0000030218F830040BA
-:106F1000106000043C021691240B0001106B000E5F
-:106F20003C023D2C344F0090AE0F44088FBF00143C
-:106F30008FB000103C0C6000240E10003C0D0200CD
-:106F400027BD0018AD8E442003E00008AD8D081069
-:106F50000A0008E7AF8000403C0218DA344F009086
-:106F6000AE0F44088FBF00148FB000103C0C6000BF
-:106F7000240E10003C0D020027BD0018AD8E4420E9
-:106F800003E00008AD8D08100A0008BB24050001CD
-:106F90000A0008BB000028213C08080025085DA461
-:106FA0002404FFFF010018212402001E2442FFFFD9
-:106FB000AC6400000441FFFD246300043C070800AA
-:106FC00024E75E208CE5FFFC2404001C240600015D
-:106FD000308A001F0146480424840001000910275C
-:106FE0002C8300201460FFFA00A22824ACE5FFFCEB
-:106FF0003C05666634A4616E3C06080024C65EE06B
-:10700000AF840058AF88009C2404FFFF00C0182103
-:107010002402001F2442FFFFAC6400000441FFFD76
-:10702000246300043C0766663C05080024A55EA0B6
-:10703000AF86004834E6616EAF8600982404FFFFF7
-:1070400000A018212402000F2442FFFFAC640000BE
-:107050000441FFFD246300043C0B66663C06080007
-:1070600024C65E203568616EAF8500A4AF880070CD
-:107070002404FFFF00C018212402001F2442FFFF48
-:10708000AC6400000441FFFD246300043C0D66660F
-:107090003C0A0800254A5F6035AC616EAF860090FF
-:1070A000AF8C005C2404FFFF014018212402000380
-:1070B0002442FFFFAC6400000441FFFD2463000490
-:1070C0003C09080025295F708D27FFFC2404000679
-:1070D000240500013099001F0325C0042484000109
-:1070E000001878272C8E002015C0FFFA00EF3824F6
-:1070F000AD27FFFC3C09666624030400240403DC7E
-:1071000024050200240600663522616E3C08080052
-:1071100025085AA4AF820074AF830044AF83006C8B
-:10712000AF830050AF830084AF8A008CAF840064CB
-:10713000AF85004CAF860054AF840078AF85006007
-:10714000AF86008001001821240200022442FFFFC4
-:10715000AC6000000441FFFD24630004240400032C
-:107160002403000C3C0A0800254A5AB0AF8A006884
-:107170000A00098E2405FFFF000418802484000102
-:10718000006858212C8700C014E0FFFBAD650000AB
-:107190003C0E666635CD616E240C17A024081800DD
-:1071A000AF8D0088AF8C009403E00008AF88007CAE
-:1071B0002484007F000421C200004021000030210F
-:1071C00000003821000028210A0009A5AF8400A092
-:1071D0001060000624E7000100C4302124A500014E
-:1071E0002CC20BF51440FFFA2CA300663C090800E2
-:1071F00025295F6001201821240200032442FFFF9B
-:10720000AC6000000441FFFD2463000410E0001A9C
-:1072100024E3FFFF0003294210A0000A0000202100
-:107220002406FFFF3C03080024635F602484000100
-:107230000085502BAC660000250800011540FFFBBF
-:107240002463000430E2001F10400008000868803A
-:10725000240C0001004C38040008588001692821E2
-:1072600024E6FFFF03E00008ACA6000001A94021CE
-:107270002409FFFFAD09000003E000080000000042
-:10728000AF4400283C04000C034420210005288260
-:107290000A000CC000003021000421803C03600083
-:1072A000AC6410080000000000052980AC65100CDB
-:1072B0000000000003E000088C62100C27BDFFE80E
-:1072C0000080282124040038AFBF00140E0009D527
-:1072D000AFB0001024040E00AF4400283C10000C96
-:1072E00003502021240500100E000CC000003021A6
-:1072F00003501021AC400000AC40000424040038CE
-:107300008FBF00148FB0001024053FFF27BD001869
-:107310000A0009D58C430000000421803C03600072
-:10732000AC641008000000008C62100C03E0000840
-:107330000002118227BDFFC8AFB400208F940068FF
-:10734000AFBE0030AFB7002CAFB600280000B821A8
-:107350000080B021241E00C0AFBF0034AFB50024B0
-:10736000AFB3001CAFB20018AFB10014AFB0001043
-:107370000A000A12AFA5003C504000018F9400683B
-:1073800027DEFFFF13C00028269400048E92000021
-:107390003C03080024635DA01240FFF70283102B1A
-:1073A0003C04080024845AA4028410230002A8C0CC
-:1073B000000098210A000A212411000100118840D0
-:1073C000122000260000000002B380210251282470
-:1073D0000200202110A0FFF9267300010E0009DE33
-:1073E000000000000016684032EC000101AC2021D2
-:1073F0000E0009D5020028218F89009426F700018C
-:107400008FA6003C3AEB0001316A00012528FFFFFE
-:107410000011382702CAB021AF88009416E6FFE7B2
-:1074200002479024AE92000002E010218FBF00348A
-:107430008FBE00308FB7002C8FB600288FB5002488
-:107440008FB400208FB3001C8FB200188FB10014CE
-:107450008FB0001003E0000827BD00383C0E080084
-:1074600025CE5DA0028E102B0A000A0DAE92000000
-:1074700027BDFFD8AFB10014AFB00010AFBF0020E0
-:10748000AFB3001CAFB2001800A0882110A0001FED
-:10749000000480403C13080026735AA40A000A5ACC
-:1074A0002412000112200019261000010E0009F517
-:1074B00002002021000231422444FFA0000618806F
-:1074C0003045001F2C8217A1007318212631FFFFC1
-:1074D0001040FFF400B230048C690000020020214B
-:1074E00024053FFF012640241500FFEE0126382524
-:1074F0000E0009D5AC6700008F8A009426100001A9
-:10750000254700011620FFE9AF8700948FBF0020B8
-:107510008FB3001C8FB200188FB100148FB0001011
-:1075200003E0000827BD00288F85009C00805821BB
-:107530000000402100004821240A001F3C0C0800E4
-:10754000258C5E1C3C0D080025AD5DA48CA60000BA
-:1075500050C000140000402100AD1023000238C0CC
-:10756000240300010A000A930000202115000003F3
-:1075700000E410212448202400004821252900018E
-:10758000512B00132506DFDC106000062484000167
-:1075900000C3702415C0FFF5000318400A000A91CB
-:1075A0000000402110AC002624A300040060282124
-:1075B000254AFFFF1540FFE5AF85009C512B0004D5
-:1075C0002506DFDC0000402103E000080100102157
-:1075D0000006614230C5001F000C50803C070800C7
-:1075E00024E75DA424040001014730211120000F8D
-:1075F00000A420043C05080024A55E20148000059A
-:107600002529FFFF24C6000410C50011000000005A
-:10761000240400018CCF00000004C0270004204097
-:1076200001F868241520FFF5ACCD00008F99007893
-:1076300001001021032B482303E00008AF890078E4
-:107640003C05080024A55DA40A000A9B0000402117
-:107650003C06080024C65DA40A000AB42404000104
-:10766000308800FF240200021102000A24030003F4
-:107670001103005C8F8900A4240400041104005F3E
-:1076800024050005110500670000182103E000082B
-:10769000006010218F8900483C0C0800258C5EE0BA
-:1076A0003C04080024845F60240300201060000F65
-:1076B00000005821240D0002240E00033C0F080096
-:1076C00025EF5EE08D27000014E0000B30F9FFFF8E
-:1076D000252900040124C02B53000001018048210A
-:1076E0002463FFFF5460FFF88D270000016018211C
-:1076F00003E0000800601021132000323C0500FF69
-:1077000030E200FF004030211040004200005021D4
-:1077100024050001000020210005C84000A6C02467
-:1077200017000003332500FF14A0FFFB2484000191
-:10773000012CC023001828C000AA6021008C502111
-:107740003144001F240C0001008C18040003102792
-:1077500000E23024110D0041AD260000110E004C56
-:10776000000A1840110D00368F87006C510E00562C
-:107770008F8C0060240D0004110D005A8F8E008440
-:10778000240E0005150EFFDA01601821240B1430B9
-:1077900011400006000018218F8400A0246300011E
-:1077A000006A402B1500FFFD016458218F8A00807C
-:1077B000AF89008C016018212549FFFF0A000AEB00
-:1077C000AF89008000E52024000736021080FFD03A
-:1077D000240A001800075402314600FF0A000AF389
-:1077E000240A00103C0C0800258C5EA03C04080014
-:1077F00024845EE00A000ADA240300103C0C08002E
-:10780000258C5E203C04080024845EA00A000AD96E
-:107810008F89009000071A02306600FF0A000AF301
-:10782000240A00088F89008C3C0C0800258C5F60BE
-:107830003C04080024845F700A000ADA2403000470
-:10784000000A4080250B003024E6FFFF016018216C
-:10785000AF8900480A000AEBAF86006C000AC982B3
-:10786000001978803C07080024E75EA001E720218A
-:10787000000A18428C8F00003079001F032C380456
-:107880000007C02701F860240A000B08AC8C000038
-:10789000000331420006288000AF28213062001F1B
-:1078A0008CB8000024630001004CC804000321428E
-:1078B000001938270004108003073024004F2021CE
-:1078C0000A000B4CACA60000000A68C025AB0032D1
-:1078D000258AFFFF01601821AF8900A40A000AEB86
-:1078E000AF8A0060254B1030AF89009001601821ED
-:1078F00025C9FFFF0A000AEBAF8900843086000724
-:107900002CC2000610400014000000000006408059
-:107910003C030800246357BC010338218CE40000B9
-:1079200000800008000000002409000310A9000ED8
-:1079300000000000240A000510AA000B000000004F
-:10794000240B000110AB0008000000008F8C00A089
-:1079500010AC00050000000003E00008000010214A
-:107960000A000A7900A020210A000AC700C02021CD
-:1079700027BDFFE8308400FF240300021083000BC2
-:10798000AFBF0010240600031086003A240800044C
-:1079900010880068240E0005108E007F2CAF143074
-:1079A0008FBF001003E0000827BD00182CA2003094
-:1079B0001440FFFC8FBF001024A5FFD0000531C28A
-:1079C000000668803C07080024E75EE001A730213C
-:1079D0008CC900000005288230AC001F240B000178
-:1079E000018B50048F840048012A4025ACC8000058
-:1079F0008C83000050600001AF8600488F98006CB7
-:107A000030AE000124A6FFFF270F000115C00002C1
-:107A1000AF8F006C24A600010006414200082080C0
-:107A2000008718218C79000030C2001F2406000155
-:107A30000046F804033F382410E0FFDA8FBF00103F
-:107A40000005C182001870803C0F080025EF5EA081
-:107A500001CF48218D2B00000005684231A5001F91
-:107A600000A66004016C502527BD001803E0000843
-:107A7000AD2A00002CA7003014E0FFCA8FBF001011
-:107A800030B900071723FFC724A8FFCE00086A02F9
-:107A9000000D60803C0B0800256B5EA0018B30213F
-:107AA0008CC40000000828C230AA001F240800016E
-:107AB000014848048F8200A400891825ACC3000047
-:107AC0008C5F000053E00001AF8600A40005704009
-:107AD000000E7942000F28803C04080024845EE0F8
-:107AE00000A418218C6B000025DF000131CD001FA0
-:107AF000001F514201A86004016C4825000A108053
-:107B0000AC690000004428218CA600008F9800601A
-:107B100033F9001F8FBF00100328380400C77825F1
-:107B2000270E000127BD0018ACAF000003E00008DD
-:107B3000AF8E006024A5EFD02CB804001300FF998D
-:107B40008FBF001000053142000658803C0A080033
-:107B5000254A5E20016A30218CC4000030A3001F3A
-:107B600024090001006910048F9900900082F82513
-:107B7000ACDF00008F27000050E00001AF860090CE
-:107B80008F8D00848FBF001027BD001825AC000129
-:107B900003E00008AF8C008415E0FF828FBF001067
-:107BA0008F8600A0000610400046F821001F21002B
-:107BB00003E4C8210019384024F8143000B8402BE1
-:107BC0001100FF788FBF001024A4EBD00E00021329
-:107BD00000C0282100027942000F70803C0D08008F
-:107BE00025AD5F6001CD20218C8B0000304C001F43
-:107BF00024060001018618048F89008C016350253A
-:107C0000AC8A00008D25000050A00001AF84008CDC
-:107C10008F9800808FBF001027BD00182708000133
-:107C200003E00008AF88008030A5000724030003AC
-:107C300010A3001028A2000414400008240700022A
-:107C40002403000410A300152408000510A8000F49
-:107C50008F8500A003E000080000000014A7FFFDCE
-:107C60000080282114C3FFFB240400020A000B8BB0
-:107C700000000000240900050080282110C9FFFB36
-:107C80002404000303E000080000000014C5FFF115
-:107C9000008028210A000B8B24040005240A00011F
-:107CA0000080282110CAFFF12404000403E000082A
-:107CB0000000000027BDFFE0AFB00010000581C24A
-:107CC0002603FFD024C5003F2C6223D024C6007FAA
-:107CD000AFB20018AFB10014AFBF001C309100FF6D
-:107CE000000691C2000529820200202110400008F0
-:107CF0002403FFFF0E000A4B0000000002002021B9
-:107D0000022028210E000C390240302100001821E9
-:107D10008FBF001C8FB200188FB100148FB00010FD
-:107D20000060102103E0000827BD002027BDFFD818
-:107D300024A2007FAFB3001CAFB20018000299C2AA
-:107D4000309200FF24A3003F02402021026028213E
-:107D5000AFB10014AFB00010AFBF00200E000B6E2B
-:107D60000003898200408021004020210220282138
-:107D700014400009000018218FBF00208FB3001CA1
-:107D80008FB200188FB100148FB000100060102166
-:107D900003E0000827BD00280E0009FC00000000D9
-:107DA00000402821020020211051FFF3001019C0CB
-:107DB0000E000A4B00000000020020210240282192
-:107DC0000E000C39026030218FBF00208FB3001CE1
-:107DD0008FB200188FB100148FB00010000018216E
-:107DE0000060102103E0000827BD00283084FFFF59
-:107DF00030A5FFFF1080000700001821308200012D
-:107E00001040000200042042006518211480FFFB8E
-:107E10000005284003E000080060102110C00007A2
-:107E2000000000008CA2000024C6FFFF24A500046F
-:107E3000AC82000014C0FFFB2484000403E00008AF
-:107E40000000000010A0000824A3FFFFAC86000083
-:107E500000000000000000002402FFFF2463FFFF79
-:107E60001462FFFA2484000403E00008000000000C
-:107E700030A5FFFF8F4201B80440FFFE3C076015AC
-:107E800000A730253C031000AF440180AF400184BF
-:107E9000AF46018803E00008AF4301B88F8500D0EA
-:107EA0002C864000008018218CA700840087102BAE
-:107EB00014400010000000008CA800842D06400033
-:107EC00050C0000F240340008CAA0084008A482B75
-:107ED000512000018CA3008400035A42000B208033
-:107EE0003C05080024A558200085182103E000085F
-:107EF0008C62000014C0FFF4000000002403400066
-:107F000000035A42000B20803C05080024A558209D
-:107F10000085182103E000088C6200008F8300D0E8
-:107F2000906600D024C50001A06500D08F8500D0E8
-:107F3000906400D090A200D210440017000000000E
-:107F4000936C00788F8B00BC318A00FFA16A000C13
-:107F500025490001938700C4312200FF3048007F8B
-:107F60001107000B00026827A36200788F4E01788A
-:107F700005C0FFFE8F9900B0241800023C0F1000CE
-:107F8000AF590140A358014403E00008AF4F017806
-:107F90000A000D0931A20080A0A000D00A000CFF49
-:107FA000000000008F8700D027BDFFC8AFBF0030A2
-:107FB000AFB7002CAFB60028AFB50024AFB4002097
-:107FC000AFB3001CAFB20018AFB10014AFB00010D7
-:107FD00094E300E094E200E2104300D72405FFFFA1
-:107FE0003C047FFF3497FFFF2415FF800A000DF04B
-:107FF0003C16000E108A00D18FBF00308F9100B068
-:108000003C1808008F18005C001230C0001291402C
-:108010000311702101D57824AF4F002C94EC00E2BD
-:1080200031CD007F01BA5821318A7FFF0176482186
-:10803000000A804002091021945300003C08080007
-:108040008D0800580246C02132733FFF001319808B
-:10805000010320210224282130BF007F03FAC82118
-:1080600000B5A024AF54002C0336A0218E87001049
-:108070008E8F003003785821256D008800EF702323
-:10808000240C0002AE8E0010AF8D00ACA16C0088F5
-:10809000976A003C8E8400308F9100AC0E000CD6A5
-:1080A0003150FFFF00024B80020940253C02420094
-:1080B00001022025AE2400048E8300048F8D00ACC5
-:1080C0008E860000240E0008ADA3001CADA600188B
-:1080D000ADA0000CADA00010929F000A33F900FF84
-:1080E000A5B90014968500083C1F000CA5A5001634
-:1080F0009298000A331100FFA5B100209690000865
-:1081000024180005A5B00022ADA00024928F000B1A
-:108110002410C00031E700FFA5A70002A1AE0001B6
-:108120008E8C00308F8B00AC8F8400B0AD6C00085B
-:108130003C0A08008D4A005401444821013540247E
-:10814000AF4800283C0208008C4200540044302113
-:1081500030C3007F007AC821033F282102458821CF
-:10816000AF9100BCAF8500C0A23800008F8A00BC70
-:108170002403FFBF2418FFDF954F000201F03824CD
-:1081800000F37025A54E0002914D000231AC003F76
-:10819000358B0040A14B00028F8600BC8F8900D038
-:1081A000ACC000048D28007C3C098000ACC80008ED
-:1081B00090C4000D3082007FA0C2000D8F8500BCEE
-:1081C00090BF000D03E3C824A0B9000D8F9100BC3F
-:1081D0009233000D02789024A232000D8E9000346C
-:1081E0008F8B00BCAD7000108E87002C8E8F0030FE
-:1081F00000EF7023AD6E0014916D001831AC007F5C
-:10820000A16C00188F9F00BC8E8A00308FE8001888
-:10821000015720240109302400C41025AFE20018C2
-:108220009283000AA3E3001C969900088F8500BC86
-:108230008F9800D0A4B9001E8E9000308E8400303C
-:108240000E0002138F0500848F8500D0000291403C
-:108250000002990090AF00BC0253882100403021F9
-:1082600031E7000210E0000302118021000290803B
-:108270000212802190B900BC3327000410E00002F4
-:108280000006F880021F80218E9800308F8B00BC82
-:1082900024068000330F0003000F702331CD00034C
-:1082A000020D6021AD6C000494A400E294AA00E2E7
-:1082B00094B000E231497FFF2522000130537FFF57
-:1082C0000206182400734025A4A800E294A400E24A
-:1082D0003C1408008E94006030917FFF123400221D
-:1082E000000000000E000CF6000000008F8700D098
-:1082F0000000282194F300E094F000E21213000F34
-:108300008FBF003090E900D090E800D1313200FFFB
-:10831000310400FF0244302B14C0FF36264A00010E
-:1083200090EE00D2264B000131CD00FF008D602180
-:10833000158BFF338F9100B08FBF00308FB7002CAB
-:108340008FB600288FB500248FB400208FB3001C97
-:108350008FB200188FB100148FB0001000A0102150
-:1083600003E0000827BD003894A300E20066402423
-:10837000A4A800E290A400E290B900E2309100FFCE
-:108380000011A1C20014F827001F39C03332007F4A
-:10839000024730250A000DE8A0A600E23084FFFF66
-:1083A00030A5FFFFAF440018AF45001C03E00008F4
-:1083B0008F42001427BDFFB8AFB000208F9000D0CF
-:1083C0003084FFFFAFA40010AFBF0044AFBE004039
-:1083D000AFB7003CAFB60038AFB50034AFB4003033
-:1083E000AFB3002CAFB20028AFB10024A7A0001893
-:1083F000920600D1920500D030C400FF30A300FFE8
-:108400000064102B10400122AFA00014920900D08C
-:108410008FB50010312800FF0088382324F4FFFFB7
-:108420000014882B0015982B02339024524001260B
-:108430008FB40014961E0012961F00108FB7001004
-:1084400003DFC823001714000019C400000224032E
-:108450000018140302E2B02A52C00001004020219B
-:108460000284282B10A0000200801821028018210D
-:1084700000033C0000071C033064FFFF2C8600094A
-:1084800014C000020060B821241700088E0A0008FA
-:10849000001769808E09000C31ABFFFF3C0C001007
-:1084A000016C402527520400AF4A0038AF9200B853
-:1084B000AF49003CAF480030000000000000000061
-:1084C00000000000000000000000000000000000AC
-:1084D00000000000000000008F4F000031EE00207F
-:1084E00011C0FFFD0017982A027110240A000E83A4
-:1084F0000000B02155E001019258000131130080C5
-:10850000126001CF012020219655001232A5FFFFF5
-:108510000E000CCBA7B500188F9000D00291A023BD
-:1085200026CD00018F9100B8000DB4000016B403F1
-:108530002638004002D7582A0014882B2405000151
-:108540000300902101711024AF9800B8AFA500146A
-:10855000104001BC8F8900B03C0C08008D8C005489
-:10856000240BFF80921E00D001895021014B28244A
-:10857000921900D0AF4500288E4700103C08080033
-:108580008D0800583C1808008F18005430E33FFF56
-:108590000003218001043021012658212402FF809C
-:1085A0000162F824920C00D0AF5F002C92480000CA
-:1085B00033D100FF333500FF0309982100117140CA
-:1085C000001578C0326D007F01CF382101BA282113
-:1085D000318300FF3164007F3C0A000C00AA88212F
-:1085E0000367F02100033140009A10213108003F59
-:1085F0003C1F000E00D1C021005F982127D90088C0
-:108600002D150008AF9100C0AF9900ACAF9800BC29
-:10861000AF9300B412A0018A00008821240E00014B
-:10862000010E4004310D005D11A0FFB2310F0002B8
-:108630008E4A00283C0300803C04FFEFAE6A000035
-:108640008E450024A260000A3488FFFFAE65000456
-:108650009247002C3C1FFF9F37FEFFFFA267000CD4
-:108660008E62000C3C180040A267000B00433025CE
-:1086700000C8C824033E88240238A825AE75000C23
-:108680008E490004AE6000183C0F00FFAE69001474
-:108690008E4D002C35EEFFFF8F8B00B001AE6024B5
-:1086A000AE6C00108E470008A660000896450012C8
-:1086B000AE6700208E42000C30B03FFF00105180AA
-:1086C000AE6200248E5E0014014B182130A400011C
-:1086D000AE7E00288E590018000331C2000443808A
-:1086E000AE79002C8E51001C00C8F821A67F001C1A
-:1086F000AE710030965800028E550020A678001EFC
-:10870000AE75003492490033313000045600000544
-:10871000925000008F8C00D08D8B007CAE6B0030AF
-:10872000925000008F8F00BCA1F00000924E0033E9
-:1087300031CD000251A00007925E00018F8900BC7C
-:108740002418FF80913100000311A825A1350000F5
-:10875000925E00018F9900BC2409FFBF240BFFDF4C
-:10876000A33E00018F9500BC92B8000D3311007F2D
-:10877000A2B1000D8F8E00BC91D0000D02097824AB
-:10878000A1CF000D8F8800BC8E6D0014910A000DE2
-:108790002DAC0001000C2940014B382400E51825C0
-:1087A000A103000D964200128F8800BC8F8700D075
-:1087B000A50200028E45000490FF00BC30A4000317
-:1087C0000004302330DE000300BE102133F9000224
-:1087D00017200002244400342444003090E200BCFE
-:1087E00000A2302430DF000417E0000224830004DC
-:1087F000008018218F8F00AC24090002AD03000413
-:10880000A1E90000924E003F8F8D00ACA1AE0001A7
-:108810008F9500AC924C003F8E440004A6AC000241
-:10882000976B003C0E000CD63170FFFF00025380A6
-:10883000020A38253C05420000E51825AEA30004D5
-:108840008F8600AC8E480038ACC800188E440034C7
-:10885000ACC4001CACC0000CACC00010A4C0001420
-:10886000A4C00016A4C00020A4C00022ACC00024F4
-:108870008E6400145080000124040001ACC4000880
-:108880000E000CF6241100010A000E768F9000D025
-:10889000920F00D2920E00D08FB5001031EB00FF86
-:1088A00031CD00FF008D6023016C50212554FFFF66
-:1088B0000014882B0015982B023390241640FEDDFF
-:1088C000000000008FB400148FBF00448FBE004032
-:1088D0003A8200018FB7003C8FB600388FB5003464
-:1088E0008FB400308FB3002C8FB200288FB10024DA
-:1088F0008FB0002003E0000827BD0048331100209E
-:10890000122000EF24150001921E00BC241F00015C
-:108910000000A82133D900011320000DAFBF001CB7
-:108920008E4400148E0800840088102B144000022E
-:10893000008030218E0600848E03006400C3A82BC3
-:1089400016A0000200C020218E0400640080A8212F
-:108950008E4700148E05006400E5302B14C0000221
-:1089600000E020218E0400640095F02313C0000471
-:108970008FAC001C240A0002AFAA001C8FAC001CA4
-:10898000028C582B156000A8000018218E4F00386B
-:108990008E6D000C3C0E0080AE6F00008E4A0034DD
-:1089A0003C10FF9F01AE5825AE6A00049246003F7E
-:1089B000360CFFFF016C38243C0500203C03FFEF20
-:1089C000A266000B00E510253468FFFF8F8700B812
-:1089D0000048F8243C04000803E4C825AE79000CE4
-:1089E0008CF80014AE60001802BE7821AE78001436
-:1089F0008CF10018AE71001C8CE90008AE690024EF
-:108A00008CEE000CAE6F002CAE600028AE6E002025
-:108A1000A6600038A660003A8CED001401B58023F2
-:108A2000021E902312400011AE72001090EA003D29
-:108A30008E6500048E640000000A310000A6C82183
-:108A4000000010210326402B0082F82103E8C021FA
-:108A5000AE790004AE78000090F1003DA271000AEA
-:108A60008F8900B895320006A67200088F9800AC76
-:108A70002419000202A02021A31900009769003CDC
-:108A80008F9200AC0E000CD63131FFFF00027B80CC
-:108A90008F8500B8022F68253C0E420001AE80256C
-:108AA000AE5000048F8400AC8CAC0038AC8C001845
-:108AB0008CAB0034AC8B001CAC80000CAC80001084
-:108AC000A4800014A4800016A4800020A4800022AA
-:108AD000AC80002490A7003FA487000212A00135BB
-:108AE0002403000153C0000290A2003D90A2003E6A
-:108AF00024480001A08800018F9F00ACAFF500085A
-:108B00008F8300D024070034906600BC30C500027B
-:108B100050A00001240700308F9200B88F8A00BC5B
-:108B2000906D00BC924B00002412C00032A50003DF
-:108B3000A14B00008F8600B88F8800BC240200047F
-:108B400090C400010045182330790003A1040001FE
-:108B50008F8A00BC8F9F00B800F53821955800021D
-:108B600097E9001200F9382103128824312F3FFFC2
-:108B7000022F7025A54E00029150000231A800047A
-:108B8000320C003F358B0040A14B000212A00002C6
-:108B90008F8500BC00E838218F8E00D0ACA7000480
-:108BA000240BFFBF8DCD007C2EA400012403FFDF2A
-:108BB000ACAD000890B0000D00044140320C007FC5
-:108BC000A0AC000D8F8600BC90CA000D014B102494
-:108BD000A0C2000D8F8700BC90E5000D00A3F82413
-:108BE00003E8C825A0F9000D8F9100B88F8D00BC57
-:108BF0008E380020ADB800108E290024ADA90014D5
-:108C00008E2F0028ADAF00188E2E002C0E000CF613
-:108C1000ADAE001C8FB0001C240C0002120C00EE44
-:108C20008F9000D08FA3001C006088211460000288
-:108C30000060A8210000A02156A0FE390291A023C7
-:108C40000014882B8FA90010960700103C1E0020EE
-:108C50000136402302C750213112FFFFA60A00103F
-:108C6000AFB20010AF5E0030000000009617001099
-:108C7000961300121277008F000000008E05000C82
-:108C80008E0B00080016698000AD7021000DC7C36F
-:108C900001CDA82B0178782101F56021AE0E000CE2
-:108CA000AE0C00088FB300100013B82B02378024DD
-:108CB0001200FF048F9000D00A000E3C000000005C
-:108CC0008E4D0038A6600008240B0003AE6D000036
-:108CD0008E500034A260000A8F9800B8AE70000475
-:108CE0003C0500809311003FA26B000C8E6F000CBE
-:108CF0003C0EFF9FA271000B01E5102535CCFFFF54
-:108D00003C03FFEF8F9200B8004C30243464FFFF27
-:108D100000C4F824AE7F000C8E590014964800124F
-:108D20008F8A00B0AE7900108E490014AE60001832
-:108D3000AE600020AE690014AE6000248E470018BB
-:108D400031093FFF0009F180AE6700288E4D000811
-:108D500003CA802131180001AE6D00308E4F000C27
-:108D60008F8C00AC001089C200185B80022B282178
-:108D7000240E0002A665001CA6600036AE6F002C13
-:108D8000A18E00009763003C8F8A00AC3C04420037
-:108D90003062FFFF00443025AD4600048F9F00B8CD
-:108DA000240700012411C0008FF30038240600348A
-:108DB000AD5300188FF90034AD59001CAD40000CC4
-:108DC000AD400010A5400014A5400016A5400020AD
-:108DD000A5400022AD400024A5550002A147000196
-:108DE0008F9E00AC8F8800B88F9200BCAFD5000872
-:108DF000910D0000A24D00008F9000B88F8B00BC39
-:108E000092180001A17800018F8400BC94850002B3
-:108E100000B1782401E97025A48E0002908C000234
-:108E20003183003FA08300028F8300D08F8400BC79
-:108E3000906200BC305300025260000124060030F2
-:108E4000AC8600048C6F007C2403FFBF02A0882145
-:108E5000AC8F0008908E000D31CC007FA08C000DEF
-:108E60008F8600BC90C2000D00432024A0C4000DDA
-:108E70008F8900BC913F000D37F90020A139000D0A
-:108E80008F8800B88F9300BC8D070020AE6700105C
-:108E90008D0A0024AE6A00148D1E0028AE7E0018D4
-:108EA0008D12002C0E000CF6AE72001C0A00103D54
-:108EB0008F9000D0960E00148E03000431CCFFFF7B
-:108EC000000C10C000622021AF44003C8E1F000443
-:108ED0008F46003C03E6C8231B20003C0000000036
-:108EE0008E0F000025E200013C05001034B500089B
-:108EF000AF420038AF550030000000000000000015
-:108F00000000000000000000000000000000000061
-:108F100000000000000000008F580000330B00200C
-:108F20001160FFFD000000008F5304003C0D002085
-:108F3000AE1300088F570404AE17000CAF4D00307D
-:108F4000000000003C0608008CC600442416000106
-:108F500010D600BD00000000961F00123C0508005E
-:108F60008CA5004000BFC821A61900129609001464
-:108F700025270001A6070014960A00143144FFFFBC
-:108F80005486FF498FB30010A60000140E000E1681
-:108F900030A5FFFF3C0408008C84002496030012D7
-:108FA0000044102300623023A60600120A00105964
-:108FB0008FB30010A08300018F8200AC2404000155
-:108FC000AC4400080A000FF08F8300D08E0200002E
-:108FD0000A0010EA3C0500108F8200C08FA7001C19
-:108FE000921800D0920B00D0920E00D0331100FFE7
-:108FF000316900FF00117940000928C001E56021B6
-:1090000031C300FF036C50210003314000C2C8216E
-:10901000255F0088AF9F00ACAF9900BCA1470088D6
-:109020009768003C03C020218F9100AC0E000CD645
-:109030003110FFFF00026B80020DC0253C0442008E
-:109040008F8D00B803045825AE2B00048DA900387D
-:109050008F8B00AC0000882100118100AD690018E1
-:109060008DAF00343C087FFF3504FFFFAD6F001C5F
-:1090700091AC003E8D65001C8D660018000C190037
-:10908000000C770200A33821020E102500E3F82B14
-:1090900000C2C821033F5021AD67001CAD6A001813
-:1090A000AD60000CAD60001091B8003E24050005D5
-:1090B00003C45024A578001495A9000403C02021FE
-:1090C000A569001691AF003EA56F002095B1000480
-:1090D000A5710022AD60002491AE003FA56E000294
-:1090E00091B0003E91AC003D01901023244300015B
-:1090F000A16300018F8600AC8F9F00BCACDE00082E
-:10910000A3E500008F9000BC8F9900B82405FFBF35
-:1091100096070002973800120247782433093FFF70
-:1091200001E98825A6110002921200022418FFDF2F
-:10913000324E003F35CD0040A20D00028F8600BCAC
-:109140008F8C00D02412FFFFACC000048D8B007CFC
-:109150003C0C8000ACCB000890C2000D3043007F77
-:10916000A0C3000D8F8700BC90FF000D03E5C8244D
-:10917000A0F9000D8F9100BC9229000D01387824D0
-:10918000A22F000D8F9000BCAE120010AE1500147F
-:10919000920E00182415FF8002AE6825A20D00185B
-:1091A0008F8500BC8F8300B88CAB0018016C102435
-:1091B000004A3025ACA600189068003EA0A8001C0C
-:1091C0008F9F00B88F8700BC8F9800D097F900045C
-:1091D000A4F9001E0E0002138F0500848F8600D0B4
-:1091E000000279400002490090D200BC01E98821C8
-:1091F000004028213255000212A0000303D1202193
-:109200000002A8800095202190CD00BC31B200045E
-:109210001240000333DF0003000540800088202156
-:10922000240600048F9E00BC00DFC8233327000300
-:1092300000875021AFCA00040E000CF6A665003866
-:109240000A0010388F9000D0961E00123C080800CB
-:109250008D080024011E9021A61200120A00105948
-:109260008FB3001027BDFFE03C1808008F18005096
-:10927000AFB00010AFBF0018AFB10014AF8400B0A2
-:1092800093710074030478212410FF8031EE007F75
-:109290003225007F01F0582401DA68213C0C000AD5
-:1092A000A38500C401AC2821AF4B002494A9001071
-:1092B0009768000690A600620080382124020030E2
-:1092C0000109202330C300F0AF8500D010620019DF
-:1092D0003090FFFF90AE0062240DFFF0240A005092
-:1092E00001AE6024318B00FF116A002F00000000E6
-:1092F00016000007241F0C00AF5F00248FB100147C
-:109300008FBF00188FB0001003E0000827BD0020B9
-:109310000E000E1C02002021241F0C00AF5F002451
-:109320008FB100148FBF00188FB0001003E0000849
-:1093300027BD002094A200E094A400E290BF011396
-:10934000008218263079FFFF33E700C014E00009DF
-:109350002F31000116000038000000005620FFE603
-:10936000241F0C000E000D18000000000A0011ED73
-:10937000241F0C001620FFDE000000000E000D1858
-:10938000000000001440FFDC241F0C001600002227
-:109390008F8300D0906901133122003FA062011336
-:1093A0000A0011ED241F0C0094AF00D48F8600D466
-:1093B00000E02821240400050E000C5C31F0FFFFC2
-:1093C0001440000524030003979100E600001821D3
-:1093D0002625FFFFA78500E68F5801B80700FFFE8E
-:1093E0003C196013AF400180241F0C00AF50018472
-:1093F000007938253C101000AF4701888FB1001468
-:10940000AF5001B8AF5F00248FB000108FBF0018BD
-:1094100003E0000827BD00200E000E1C02002021E2
-:109420005040FFB5241F0C008F8300D090690113BA
-:109430000A0012163122003F0E000E1C02002021ED
-:109440001440FFAD241F0C00122000078F8300D0B2
-:10945000906801133106003F34C20040A06201133E
-:109460000A0011ED241F0C000E000D180000000072
-:109470005040FFA1241F0C008F8300D0906801137F
-:109480003106003F0A00124634C20040AF9B00C8BC
-:1094900003E00008AF8000EC3089FFFF0009404284
-:1094A0002D020041000921801440000200095040B3
-:1094B00024080040000830C0000811400046582130
-:1094C000256701A800E2C821272F007F2418FF800C
-:1094D00001F818240064302100CA702125CC00FF57
-:1094E000240DFF00018D202425650088240A0088B2
-:1094F0003C010800AC2A004C3C010800AC2500509F
-:10950000AF8400D43C010800AC2900603C01080095
-:10951000AC2800643C010800AC2700543C01080062
-:10952000AC2300583C010800AC26005C03E00008B6
-:1095300000000000308300FF30C6FFFF30E400FF72
-:109540008F4201B80440FFFE00034C00012438257F
-:109550003C08600000E820253C031000AF45018076
-:10956000AF460184AF44018803E00008AF4301B86F
-:109570008F86001C3C096012352700108CCB00043C
-:109580003C0C600E35850010316A00062D48000144
-:10959000ACE800C48CC40004ACA431808CC20008C8
-:1095A00094C30002ACA2318403E00008A78300E466
-:1095B0003C0308008C6300508F8400E88F86001CF9
-:1095C0002402FF800064C0210302C824AF59002890
-:1095D0008CCD00043305007F00BA78213C0E000CCE
-:1095E00001EE2821ACAD00588CC80008AF8500D032
-:1095F0003C076012ACA8005C8CCC001034E8001072
-:10960000ACAC000C8CCB000CACAB000894AA0014E2
-:109610003C0208008C42004425490001A4A9001422
-:1096200094A400143083FFFF106200178F8400D0D1
-:109630003C0A08008D4A0040A4AA00128CCE0018F3
-:10964000AC8E00248CCD0014AC8D00208CC700188B
-:10965000AC87002C8CCC001424060001AC8C0028B4
-:109660008D0B00BC5166001A8D0200B48D0200B84B
-:10967000A482003A948F003AA48F003C948800D4CE
-:1096800003E000083102FFFF3C0908008D29002497
-:10969000A4A000148F8400D0A4A900128CCE0018BE
-:1096A000AC8E00248CCD0014AC8D00208CC700182B
-:1096B000AC87002C8CCC001424060001AC8C002854
-:1096C0008D0B00BC5566FFEA8D0200B88D0200B418
-:1096D000A482003A948F003AA48F003C948800D46E
-:1096E00003E000083102FFFF8F86001C3C0C0800DD
-:1096F0008D8C0050240BFF808CCD00083C03000CA7
-:10970000000D51C0018A4021010B4824AF8A00E8B6
-:10971000AF49002890C700073105007F00BA10212B
-:109720000043282130E4000410800039AF8500D0C8
-:1097300090CF000731EE000811C000380000000093
-:109740008CD9000C8CC400140324C02B13000030EF
-:10975000000000008CC2000CACA200648CCD00188C
-:109760002402FFF8ACAD00688CCC0010ACAC0080DB
-:109770008CCB000CACAB00848CCA001CACAA007C67
-:1097800090A900BC01224024A0A800BC90C30007FF
-:109790003067000810E000048F8500D090AF00BC57
-:1097A00035EE0001A0AE00BC90D9000733380001AF
-:1097B000130000088F8300D08F8700D0240400346A
-:1097C00090E800BC35030002A0E300BC8F8300D00A
-:1097D000AC6400C090C900073126000210C000052B
-:1097E00000000000906A00BC35420004A06200BC8A
-:1097F0008F8300D09065011330AD003FA06D011341
-:109800008F8C00D0958B00D403E000083162FFFFFD
-:109810008CC200140A001305000000000A001306A1
-:10982000ACA0006427BDFFD8AFB000108F90001C23
-:10983000AFBF0024AFB40020AFB20018AFB1001426
-:10984000AFB3001C9613000E3C07600A3C14600680
-:109850003264FFFF369300100E00125534F40410EA
-:109860008F8400D43C11600E0E00099B363100102D
-:10987000920E00153C0708008CE700603C12601255
-:1098800031CD000FA38D00F08E0E00048E0D000868
-:1098900096080012961F00109619001A9618001EBE
-:1098A000960F001C310CFFFF33EBFFFF332AFFFF45
-:1098B0003309FFFF31E6FFFF3C010800AC2B0040FD
-:1098C0003C010800AC2C00243C010800AC2A0044F8
-:1098D000AE293178AE26317C92020015960300162F
-:1098E00036520010304400FF3065FFFF3C06080090
-:1098F0008CC60064AE243188AE4500B492080014D2
-:1099000096190018241F0001011FC004332FFFFF08
-:109910003C0508008CA50058AE5800B8AE4F00BCFE
-:10992000920C0014AF8E00D8AF8D00DC318B00FF9D
-:10993000AE4B00C0920A0015AE670048AE66004C00
-:10994000314900FFAE4900C8AE65007C3C03080009
-:109950008C6300503C0408008C84004C3C080800D8
-:109960008D0800543C0208008C42005C8FBF00242C
-:10997000AE6300808FB00010AE8300748FB3001C04
-:10998000AE22319CAE4200DCAE2731A0AE2631A41F
-:10999000AE24318CAE233190AE283194AE2531986F
-:1099A000AE870050AE860054AE8500708FB10014B3
-:1099B000AE4700E0AE4600E4AE4400CCAE4300D07B
-:1099C000AE4800D4AE4500D88FB400208FB2001846
-:1099D00003E0000827BD002827BDFFE0AFB1001459
-:1099E000AFBF0018241100010E000845AFB00010F1
-:1099F00010510005978400E6978300CC0083102B5C
-:109A0000144000088F8500D4240700028FBF00187F
-:109A10008FB100148FB0001000E0102103E00008A7
-:109A200027BD00200E000C7A24040005AF8200E858
-:109A30001040FFF6240700020E0008498F90001C1A
-:109A4000979F00E68F9900E88F8D00C827EF0001EF
-:109A5000240E0050AF590020A78F00E6A1AE0000F1
-:109A60003C0C08008D8C00648F8600C8240A80009E
-:109A7000000C5E00ACCB0074A4C0000694C9000AC0
-:109A8000241FFF803C0D000C012AC024A4D8000A2A
-:109A900090C8000A24182000011F1825A0C3000A3E
-:109AA0008F8700C8A0E000788F8500C800003821AB
-:109AB000A0A000833C0208008C4200508F8400E884
-:109AC0000044782101FFC824AF590028960B0002FA
-:109AD00031EE007F01DA6021018D3021A4CB00D46A
-:109AE000960A0002AF8600D03C0E000425492401EE
-:109AF000A4C900E68E080004ACC800048E03000868
-:109B0000ACC30000A4C00010A4C00014A0C000D0CA
-:109B10008F8500D02403FFBFA0A000D13C04080023
-:109B20008C8400648F8200D0A04400D28E1F000C71
-:109B30008F8A00D0978F00E4AD5F001C8E19001053
-:109B400024100030AD590018A5400030A551005434
-:109B5000A5510056A54F0016AD4E0068AD580080C7
-:109B6000AD580084914D006231AC000F358B001070
-:109B7000A14B00628F8600D090C900633128007F1E
-:109B8000A0C800638F8400D02406FFFF9085006387
-:109B900000A31024A08200638F9100D000E0102168
-:109BA000923F00BC37F90001A23900BC8F8A00D077
-:109BB000938F00F0AD580064AD5000C0914E00D3BB
-:109BC000000F690031CC000F018D5825A14B00D347
-:109BD0008F8500D08F8900DCACA900E88F8800D881
-:109BE0008FBF00188FB100148FB0001027BD002068
-:109BF000ACA800ECA4A600D6A4A000E0A4A000E2BB
-:109C000003E000080000000027BDFFE0AFB0001037
-:109C10008F90001CAFB10014AFBF00188E19000464
-:109C20003C1808008F180050240FFF80001989C0CD
-:109C30000238702131CD007F01CF602401BA50215C
-:109C40003C0B000CAF4C0028014B4021950900D47F
-:109C5000950400D68E0700043131FFFFAF8800D095
-:109C60000E000913000721C08E0600048F8300C870
-:109C7000000629C0AF4500209064003E30820040BD
-:109C8000144000068F8400D0341FFFFF948300D659
-:109C90003062FFFF145F000400000000948400D6CF
-:109CA0000E0008A83084FFFF8E050004022030213A
-:109CB0008FBF00188FB100148FB000102404002251
-:109CC00000003821000529C00A00127C27BD0020B1
-:109CD00027BDFFE0AFB100143091FFFFAFB000101F
-:109CE000AFBF00181220001D000080218F86001CCD
-:109CF0008CC500002403000600053F020005140285
-:109D000030E4000714830015304500FF2CA800063E
-:109D10001100004D000558803C0C0800258C57D4DC
-:109D2000016C50218D490000012000080000000056
-:109D30008F8E00EC240D000111CD005900000000B1
-:109D4000260B00013170FFFF24CA00200211202BD6
-:109D5000014030211480FFE6AF8A001C0200102170
-:109D60008FBF00188FB100148FB0001003E00008FF
-:109D700027BD0020938700CE14E00038240400148F
-:109D80000E001338000000008F86001C2402000122
-:109D90000A00147FAF8200EC8F8900EC24080002D7
-:109DA0001128003B2404001300002821000030216A
-:109DB000240700010E00127C000000000A00147F3E
-:109DC0008F86001C8F8700EC2405000214E5FFF647
-:109DD000240400120E0012E9000000008F8500E844
-:109DE00000403021240400120E00127C00003821B3
-:109DF0000A00147F8F86001C8F8300EC241F000351
-:109E0000147FFFD0260B00010E00129B0000000003
-:109E10008F8500E800403021240200022404001055
-:109E200000003821AF8200EC0E00127C0000000020
-:109E30000A00147F8F86001C8F8F00EC240600021E
-:109E400011E6000B0000000024040010000028218F
-:109E5000000030210A00149C240700010000282182
-:109E60000E00127C000030210A00147F8F86001C37
-:109E70000E0013A500000000144000128F99001C72
-:109E80008F86001C240200030A00147FAF8200ECBE
-:109E90000E001431000000000A00147F8F86001CA1
-:109EA0000E00128B000000002402000224040014A3
-:109EB0000000282100003021000038210A0014B9D8
-:109EC000AF8200EC004038212404001097380002D3
-:109ED000000028210E00127C3306FFFF0A00147FC9
-:109EE0008F86001C8F8400C83C077FFF34E6FFFF8D
-:109EF0008C8500742402000100A61824AC83007431
-:109F000003E00008A082000510A000362CA200800B
-:109F1000274A04003C0B000524090080104000077C
-:109F20002408008030A6000F00C540212D030081C9
-:109F30001460000200A0482124080080AF4B0030CC
-:109F400000000000000000000000000011000009F7
-:109F500000003821014030218C8D000024E70004EE
-:109F600000E8602BACCD0000248400041580FFFACB
-:109F700024C60004000000000000000000000000F3
-:109F80003C0E0006010E3825AF47003000000000EF
-:109F900000000000000000008F4F000031E80010BA
-:109FA0001100FFFD000000008F42003C8F43003C89
-:109FB0000049C8210323C02B130000040000000047
-:109FC0008F4C003825860001AF4600388F47003C93
-:109FD00000A9282300E96821AF4D003C14A0FFCE62
-:109FE0002CA2008003E000080000000027BDFFD085
-:109FF0003C020002AFB100143C11000CAF45003828
-:10A00000AFB3001CAF46003C00809821AF42003047
-:10A0100024050088AF44002803512021AFBF002849
-:10A02000AFB50024AFB40020AFB200180E0014F199
-:10A03000AFB000103C1F08008FFF004C3C18080018
-:10A040008F1800642410FF8003F3A82132B9007F29
-:10A0500002B078240018A0C0033A70210018914083
-:10A0600001D12021AF4F00280E0014F10254282105
-:10A070003C0D08008DAD00502405012001B358218E
-:10A08000316C007F01705024019A48210131202158
-:10A090000E0014F1AF4A00283C0808008D08005457
-:10A0A0003C0508008CA500640113382130E6007FD0
-:10A0B00000F0182400DA202100912021AF4300286D
-:10A0C0000E0014F1000529403C0208008C420058A3
-:10A0D0003C1008008E1000601200001C0053882104
-:10A0E0002415FF800A0015743C14000C3226007FF2
-:10A0F0000235182400DA202102402821AF4300282D
-:10A10000009420210E0014F12610FFC01200000F51
-:10A11000023288212E05004110A0FFF42412100005
-:10A120003226007F001091800235182400DA2021A9
-:10A1300002402821AF430028009420210E0014F192
-:10A14000000080211600FFF3023288213C0B08003A
-:10A150008D6B005C240AFF802405000201734021FE
-:10A16000010A4824AF4900283C0408009484006296
-:10A170003110007F021A88213C07000C0E000CAA47
-:10A180000227982100402821026020218FBF00284B
-:10A190008FB500248FB400208FB3001C8FB200183D
-:10A1A0008FB100148FB000100A0014F127BD0030E9
-:10A1B0008F83001C8C62000410400003000000002C
-:10A1C00003E00008000000008C6400108C650008AB
-:08A1D0000A00152A8C66000C40
-:08A1D800000000000000001B64
-:10A1E0000000000F0000000A000000080000000648
-:10A1F000000000050000000500000004000000044D
-:10A200000000000300000003000000030000000342
-:10A210000000000300000002000000020000000235
-:10A220000000000200000002000000020000000226
-:10A230000000000200000002000000020000000216
-:10A240000000000200000002000000020000000206
-:0CA25000000000010000000100000001FF
-:04A25C0008000F24C3
-:10A2600008000D6C08000FB80800106008000F4CC3
-:10A2700008000F8C0800119408000D88080011B820
-:10A2800008000DD8080015540800151C08000D889A
-:10A2900008000D8808000D880800124008001240D0
-:10A2A00008000D8808000D88080014E008000D88DB
-:10A2B00008000D8808000D8808000D88080013B4F8
-:10A2C00008000D8808000D8808000D8808000D881A
-:10A2D00008000D8808000D8808000D8808000D880A
-:10A2E00008000D8808000D8808000D8808000D88FA
-:10A2F00008000D8808000D8808000FAC08000D88C4
-:10A3000008000D880800167808000D8808000D88E0
-:10A3100008000D8808000D8808000D8808000D88C9
-:10A3200008000D8808000D8808000D8808000D88B9
-:10A3300008000D8808000D8808000D8808000D88A9
-:10A3400008000D8808000D8808000D88080014100A
-:10A3500008000D8808000D8808001334080012A4B6
-:10A3600008001E2C08001EFC08001F1408001F28EF
-:10A3700008001F3808001E2C08001E2C08001E2C88
-:10A3800008001ED808002E1408002E1C08002DE41A
-:10A3900008002DF008002DFC08002E08080052F4DB
-:10A3A000080052B40800528008005254080052308D
-:04A3B000080051EC64
-:0CA3B4000A000C84000000000000000003
-:10A3C0000000000D727870362E322E310000000031
-:10A3D0000602010300000000000000010000000070
-:10A3E000000000000000000000000000000000006D
-:10A3F000000000000000000000000000000000005D
-:10A40000000000000000000000000000000000004C
-:10A41000000000000000000000000000000000003C
-:10A42000000000000000000000000000000000002C
-:10A43000000000000000000000000000000000001C
-:10A44000000000000000000000000000000000000C
-:10A4500000000000000000000000000000000000FC
-:10A4600000000000000000000000000000000000EC
-:10A4700000000000000000000000000000000000DC
-:10A4800000000000000000000000000000000000CC
-:10A4900000000000000000000000000000000000BC
-:10A4A00000000000000000000000000000000000AC
-:10A4B000000000000000000000000000000000009C
-:10A4C000000000000000000000000000000000008C
-:10A4D000000000000000000000000000000000007C
-:10A4E000000000000000000000000000000000006C
-:10A4F000000000000000000000000000000000005C
-:10A50000000000000000000000000000000000004B
-:10A51000000000000000000000000000000000003B
-:10A52000000000000000000000000000000000002B
-:10A53000000000000000000000000000000000001B
-:10A54000000000000000000000000000000000000B
-:10A5500000000000000000000000000000000000FB
-:10A5600000000000000000000000000000000000EB
-:10A5700000000000000000000000000000000000DB
-:10A5800000000000000000000000000000000000CB
-:10A5900000000000000000000000000000000000BB
-:10A5A00000000000000000000000000000000000AB
-:10A5B000000000000000000000000000000000009B
-:10A5C000000000000000000000000000000000008B
-:10A5D000000000000000000000000000000000007B
-:10A5E000000000000000000000000000000000006B
-:10A5F000000000000000000000000000000000005B
-:10A60000000000000000000000000000000000004A
-:10A61000000000000000000000000000000000003A
-:10A62000000000000000000000000000000000002A
-:10A63000000000000000000000000000000000001A
-:10A64000000000000000000000000000000000000A
-:10A6500000000000000000000000000000000000FA
-:10A6600000000000000000000000000000000000EA
-:10A6700000000000000000000000000000000000DA
-:10A6800000000000000000000000000000000000CA
-:10A6900000000000000000000000000000000000BA
-:10A6A00000000000000000000000000000000000AA
-:10A6B000000000000000000000000000000000009A
-:10A6C000000000000000000000000000000000008A
-:10A6D000000000000000000000000000000000007A
-:10A6E000000000000000000000000000000000006A
-:10A6F000000000000000000000000000000000005A
-:10A700000000000000000000000000000000000049
-:10A710000000000000000000000000000000000039
-:10A720000000000000000000000000000000000029
-:10A730000000000000000000000000000000000019
-:10A740000000000000000000000000000000000009
-:10A7500000000000000000000000000000000000F9
-:10A7600000000000000000000000000000000000E9
-:10A7700000000000000000000000000000000000D9
-:10A7800000000000000000000000000000000000C9
-:10A7900000000000000000000000000000000000B9
-:10A7A00000000000000000000000000000000000A9
-:10A7B0000000000000000000000000000000000099
-:10A7C0000000000000000000000000000000000089
-:10A7D0000000000000000000000000000000000079
-:10A7E0000000000000000000000000000000000069
-:10A7F0000000000000000000000000000000000059
-:10A800000000000000000000000000000000000048
-:10A810000000000000000000000000000000000038
-:10A820000000000000000000000000000000000028
-:10A830000000000000000000000000000000000018
-:10A840000000000000000000000000000000000008
-:10A8500000000000000000000000000000000000F8
-:10A8600000000000000000000000000000000000E8
-:10A8700000000000000000000000000000000000D8
-:10A8800000000000000000000000000000000000C8
-:10A8900000000000000000000000000000000000B8
-:10A8A00000000000000000000000000000000000A8
-:10A8B0000000000000000000000000000000000098
-:10A8C0000000000000000000000000000000000088
-:10A8D0000000000000000000000000000000000078
-:10A8E0000000000000000000000000000000000068
-:10A8F0000000000000000000000000000000000058
-:10A900000000000000000000000000000000000047
-:10A910000000000000000000000000000000000037
-:10A920000000000000000000000000000000000027
-:10A930000000000000000000000000000000000017
-:10A940000000000000000000000000000000000007
-:10A9500000000000000000000000000000000000F7
-:10A9600000000000000000000000000000000000E7
-:10A9700000000000000000000000000000000000D7
-:10A9800000000000000000000000000000000000C7
-:10A9900000000000000000000000000000000000B7
-:10A9A00000000000000000000000000000000000A7
-:10A9B0000000000000000000000000000000000097
-:10A9C0000000000000000000000000000000000087
-:10A9D0000000000000000000000000000000000077
-:10A9E0000000000000000000000000000000000067
-:10A9F0000000000000000000000000000000000057
-:10AA00000000000000000000000000000000000046
-:10AA10000000000000000000000000000000000036
-:10AA20000000000000000000000000000000000026
-:10AA30000000000000000000000000000000000016
-:10AA40000000000000000000000000000000000006
-:10AA500000000000000000000000000000000000F6
-:10AA600000000000000000000000000000000000E6
-:10AA700000000000000000000000000000000000D6
-:10AA800000000000000000000000000000000000C6
-:10AA900000000000000000000000000000000000B6
-:10AAA00000000000000000000000000000000000A6
-:10AAB0000000000000000000000000000000000096
-:10AAC0000000000000000000000000000000000086
-:10AAD0000000000000000000000000000000000076
-:10AAE0000000000000000000000000000000000066
-:10AAF0000000000000000000000000000000000056
-:10AB00000000000000000000000000000000000045
-:10AB10000000000000000000000000000000000035
-:10AB20000000000000000000000000000000000025
-:10AB30000000000000000000000000000000000015
-:10AB40000000000000000000000000000000000005
-:10AB500000000000000000000000000000000000F5
-:10AB600000000000000000000000000000000000E5
-:10AB700000000000000000000000000000000000D5
-:10AB800000000000000000000000000000000000C5
-:10AB900000000000000000000000000000000000B5
-:10ABA00000000000000000000000000000000000A5
-:10ABB0000000000000000000000000000000000095
-:10ABC0000000000000000000000000000000000085
-:10ABD0000000000000000000000000000000000075
-:10ABE0000000000000000000000000000000000065
-:10ABF0000000000000000000000000000000000055
-:10AC00000000000000000000000000000000000044
-:10AC10000000000000000000000000000000000034
-:10AC20000000000000000000000000000000000024
-:10AC30000000000000000000000000000000000014
-:10AC40000000000000000000000000000000000004
-:10AC500000000000000000000000000000000000F4
-:10AC600000000000000000000000000000000000E4
-:10AC700000000000000000000000000000000000D4
-:10AC800000000000000000000000000000000000C4
-:10AC900000000000000000000000000000000000B4
-:10ACA00000000000000000000000000000000000A4
-:10ACB0000000000000000000000000000000000094
-:10ACC0000000000000000000000000000000000084
-:10ACD0000000000000000000000000000000000074
-:10ACE0000000000000000000000000000000000064
-:10ACF0000000000000000000000000000000000054
-:10AD00000000000000000000000000000000000043
-:10AD10000000000000000000000000000000000033
-:10AD20000000000000000000000000000000000023
-:10AD30000000000000000000000000000000000013
-:10AD40000000000000000000000000000000000003
-:10AD500000000000000000000000000000000000F3
-:10AD600000000000000000000000000000000000E3
-:10AD700000000000000000000000000000000000D3
-:10AD800000000000000000000000000000000000C3
-:10AD900000000000000000000000000000000000B3
-:10ADA00000000000000000000000000000000000A3
-:10ADB0000000000000000000000000000000000093
-:10ADC0000000000000000000000000000000000083
-:10ADD0000000000000000000000000000000000073
-:10ADE0000000000000000000000000000000000063
-:10ADF0000000000000000000000000000000000053
-:10AE00000000000000000000000000000000000042
-:10AE10000000000000000000000000000000000032
-:10AE20000000000000000000000000000000000022
-:10AE30000000000000000000000000000000000012
-:10AE40000000000000000000000000000000000002
-:10AE500000000000000000000000000000000000F2
-:10AE600000000000000000000000000000000000E2
-:10AE700000000000000000000000000000000000D2
-:10AE800000000000000000000000000000000000C2
-:10AE900000000000000000000000000000000000B2
-:10AEA00000000000000000000000000000000000A2
-:10AEB0000000000000000000000000000000000092
-:10AEC0000000000000000000000000000000000082
-:10AED0000000000000000000000000000000000072
-:10AEE0000000000000000000000000000000000062
-:10AEF0000000000000000000000000000000000052
-:10AF00000000000000000000000000000000000041
-:10AF10000000000000000000000000000000000031
-:10AF20000000000000000000000000000000000021
-:10AF30000000000000000000000000000000000011
-:10AF40000000000000000000000000000000000001
-:10AF500000000000000000000000000000000000F1
-:10AF600000000000000000000000000000000000E1
-:10AF700000000000000000000000000000000000D1
-:10AF800000000000000000000000000000000000C1
-:10AF900000000000000000000000000000000000B1
-:10AFA00000000000000000000000000000000000A1
-:10AFB0000000000000000000000000000000000091
-:10AFC0000000000000000000000000000000000081
-:10AFD0000000000000000000000000000000000071
-:10AFE0000000000000000000000000000000000061
-:10AFF0000000000000000000000000000000000051
-:10B000000000000000000000000000000000000040
-:10B010000000000000000000000000000000000030
-:10B020000000000000000000000000000000000020
-:10B030000000000000000000000000000000000010
-:10B040000000000000000000000000000000000000
-:10B0500000000000000000000000000000000000F0
-:10B0600000000000000000000000000000000000E0
-:10B0700000000000000000000000000000000000D0
-:10B0800000000000000000000000000000000000C0
-:10B0900000000000000000000000000000000000B0
-:10B0A00000000000000000000000000000000000A0
-:10B0B0000000000000000000000000000000000090
-:10B0C0000000000000000000000000000000000080
-:10B0D0000000000000000000000000000000000070
-:10B0E0000000000000000000000000000000000060
-:10B0F0000000000000000000000000000000000050
-:10B10000000000000000000000000000000000003F
-:10B11000000000000000000000000000000000002F
-:10B12000000000000000000000000000000000001F
-:10B13000000000000000000000000000000000000F
-:10B1400000000000000000000000000000000000FF
-:10B1500000000000000000000000000000000000EF
-:10B1600000000000000000000000000000000000DF
-:10B1700000000000000000000000000000000000CF
-:10B1800000000000000000000000000000000000BF
-:10B1900000000000000000000000000000000000AF
-:10B1A000000000000000000000000000000000009F
-:10B1B000000000000000000000000000000000008F
-:10B1C000000000000000000000000000000000007F
-:10B1D000000000000000000000000000000000006F
-:10B1E000000000000000000000000000000000005F
-:10B1F000000000000000000000000000000000004F
-:10B20000000000000000000000000000000000003E
-:10B21000000000000000000000000000000000002E
-:10B22000000000000000000000000000000000001E
-:10B23000000000000000000000000000000000000E
-:10B2400000000000000000000000000000000000FE
-:10B2500000000000000000000000000000000000EE
-:10B2600000000000000000000000000000000000DE
-:10B2700000000000000000000000000000000000CE
-:10B2800000000000000000000000000000000000BE
-:10B2900000000000000000000000000000000000AE
-:10B2A000000000000000000000000000000000009E
-:10B2B000000000000000000000000000000000008E
-:10B2C000000000000000000000000000000000007E
-:10B2D000000000000000000000000000000000006E
-:10B2E000000000000000000000000000000000005E
-:10B2F000000000000000000000000000000000004E
-:10B30000000000000000000000000000000000003D
-:10B31000000000000000000000000000000000002D
-:10B32000000000000000000000000000000000001D
-:10B33000000000000000000000000000000000000D
-:10B3400000000000000000000000000000000000FD
-:10B3500000000000000000000000000000000000ED
-:10B3600000000000000000000000000000000000DD
-:10B3700000000000000000000000000000000000CD
-:10B3800000000000000000000000000000000000BD
-:10B3900000000000000000000000000000000000AD
-:10B3A000000000000000000000000000000000009D
-:10B3B000000000000000000000000000000000008D
-:10B3C000000000000000000000000000000000007D
-:10B3D000000000000000000000000000000000006D
-:10B3E000000000000000000000000000000000005D
-:10B3F000000000000000000000000000000000004D
-:10B40000000000000000000000000000000000003C
-:10B41000000000000000000000000000000000002C
-:10B42000000000000000000000000000000000001C
-:10B43000000000000000000000000000000000000C
-:10B4400000000000000000000000000000000000FC
-:10B4500000000000000000000000000000000000EC
-:10B4600000000000000000000000000000000000DC
-:10B4700000000000000000000000000000000000CC
-:10B4800000000000000000000000000000000000BC
-:10B4900000000000000000000000000000000000AC
-:10B4A000000000000000000000000000000000009C
-:10B4B000000000000000000000000000000000008C
-:10B4C000000000000000000000000000000000007C
-:10B4D000000000000000000000000000000000006C
-:10B4E000000000000000000000000000000000005C
-:10B4F000000000000000000000000000000000004C
-:10B50000000000000000000000000000000000003B
-:10B51000000000000000000000000000000000002B
-:10B52000000000000000000000000000000000001B
-:10B53000000000000000000000000000000000000B
-:10B5400000000000000000000000000000000000FB
-:10B5500000000000000000000000000000000000EB
-:10B5600000000000000000000000000000000000DB
-:10B5700000000000000000000000000000000000CB
-:10B5800000000000000000000000000000000000BB
-:10B5900000000000000000000000000000000000AB
-:10B5A000000000000000000000000000000000009B
-:10B5B000000000000000000000000000000000008B
-:10B5C000000000000000000000000000000000007B
-:10B5D000000000000000000000000000000000006B
-:10B5E000000000000000000000000000000000005B
-:10B5F000000000000000000000000000000000004B
-:10B60000000000000000000000000000000000003A
-:10B61000000000000000000000000000000000002A
-:10B62000000000000000000000000000000000001A
-:10B63000000000000000000000000000000000000A
-:10B6400000000000000000000000000000000000FA
-:10B6500000000000000000000000000000000000EA
-:10B6600000000000000000000000000000000000DA
-:10B6700000000000000000000000000000000000CA
-:10B6800000000000000000000000000000000000BA
-:10B6900000000000000000000000000000000000AA
-:10B6A000000000000000000000000000000000009A
-:10B6B000000000000000000000000000000000008A
-:10B6C000000000000000000000000000000000007A
-:10B6D000000000000000000000000000000000006A
-:10B6E000000000000000000000000000000000005A
-:10B6F000000000000000000000000000000000004A
-:10B700000000000000000000000000000000000039
-:10B710000000000000000000000000000000000029
-:10B720000000000000000000000000000000000019
-:10B730000000000000000000000000000000000009
-:10B7400000000000000000000000000000000000F9
-:10B7500000000000000000000000000000000000E9
-:10B7600000000000000000000000000000000000D9
-:10B7700000000000000000000000000000000000C9
-:10B7800000000000000000000000000000000000B9
-:10B7900000000000000000000000000000000000A9
-:10B7A0000000000000000000000000000000000099
-:10B7B0000000000000000000000000000000000089
-:10B7C0000000000000000000000000000000000079
-:10B7D0000000000000000000000000000000000069
-:10B7E0000000000000000000000000000000000059
-:10B7F0000000000000000000000000000000000049
-:10B800000000000000000000000000000000000038
-:10B810000000000000000000000000000000000028
-:10B820000000000000000000000000000000000018
-:10B830000000000000000000000000000000000008
-:10B8400000000000000000000000000000000000F8
-:10B8500000000000000000000000000000000000E8
-:10B8600000000000000000000000000000000000D8
-:10B8700000000000000000000000000000000000C8
-:10B8800000000000000000000000000000000000B8
-:10B8900000000000000000000000000000000000A8
-:10B8A0000000000000000000000000000000000098
-:10B8B0000000000000000000000000000000000088
-:10B8C0000000000000000000000000000000000078
-:10B8D0000000000000000000000000000000000068
-:10B8E0000000000000000000000000000000000058
-:10B8F0000000000000000000000000000000000048
-:10B900000000000000000000000000000000000037
-:10B910000000000000000000000000000000000027
-:10B920000000000000000000000000000000000017
-:10B930000000000000000000000000000000000007
-:10B9400000000000000000000000000000000000F7
-:10B9500000000000000000000000000000000000E7
-:10B9600000000000000000000000000000000000D7
-:10B9700000000000000000000000000000000000C7
-:10B9800000000000000000000000000000000000B7
-:10B9900000000000000000000000000000000000A7
-:10B9A0000000000000000000000000000000000097
-:10B9B0000000000000000000000000000000000087
-:10B9C0000000000000000000000000000000000077
-:10B9D0000000000000000000000000000000000067
-:10B9E0000000000000000000000000000000000057
-:10B9F0000000000000000000000000000000000047
-:10BA00000000000000000000000000000000000036
-:10BA10000000000000000000000000000000000026
-:10BA20000000000000000000000000000000000016
-:10BA30000000000000000000000000000000000006
-:10BA400000000000000000000000000000000000F6
-:10BA500000000000000000000000000000000000E6
-:10BA600000000000000000000000000000000000D6
-:10BA700000000000000000000000000000000000C6
-:10BA800000000000000000000000000000000000B6
-:10BA900000000000000000000000000000000000A6
-:10BAA0000000000000000000000000000000000096
-:10BAB0000000000000000000000000000000000086
-:10BAC0000000000000000000000000000000000076
-:10BAD0000000000000000000000000000000000066
-:10BAE0000000000000000000000000000000000056
-:10BAF0000000000000000000000000000000000046
-:10BB00000000000000000000000000000000000035
-:10BB10000000000000000000000000000000000025
-:10BB20000000000000000000000000000000000015
-:10BB30000000000000000000000000000000000005
-:10BB400000000000000000000000000000000000F5
-:10BB500000000000000000000000000000000000E5
-:10BB600000000000000000000000000000000000D5
-:10BB700000000000000000000000000000000000C5
-:10BB800000000000000000000000000000000000B5
-:10BB900000000000000000000000000000000000A5
-:10BBA0000000000000000000000000000000000095
-:10BBB0000000000000000000000000000000000085
-:10BBC0000000000000000000000000000000000075
-:10BBD0000000000000000000000000000000000065
-:10BBE0000000000000000000000000000000000055
-:10BBF0000000000000000000000000000000000045
-:10BC00000000000000000000000000000000000034
-:10BC10000000000000000000000000000000000024
-:10BC20000000000000000000000000000000000014
-:10BC30000000000000000000000000000000000004
-:10BC400000000000000000000000000000000000F4
-:10BC500000000000000000000000000000000000E4
-:10BC600000000000000000000000000000000000D4
-:10BC700000000000000000000000000000000000C4
-:10BC800000000000000000000000000000000000B4
-:10BC900000000000000000000000000000000000A4
-:10BCA0000000000000000000000000000000000094
-:10BCB0000000000000000000000000000000000084
-:10BCC0000000000000000000000000000000000074
-:10BCD0000000000000000000000000000000000064
-:10BCE0000000000000000000000000000000000054
-:10BCF0000000000000000000000000000000000044
-:10BD00000000000000000000000000000000000033
-:10BD10000000000000000000000000000000000023
-:10BD20000000000000000000000000000000000013
-:10BD30000000000000000000000000000000000003
-:10BD400000000000000000000000000000000000F3
-:10BD500000000000000000000000000000000000E3
-:10BD600000000000000000000000000000000000D3
-:10BD700000000000000000000000000000000000C3
-:10BD800000000000000000000000000000000000B3
-:10BD900000000000000000000000000000000000A3
-:10BDA0000000000000000000000000000000000093
-:10BDB0000000000000000000000000000000000083
-:10BDC0000000000000000000000000000000000073
-:10BDD0000000000000000000000000000000000063
-:10BDE0000000000000000000000000000000000053
-:10BDF0000000000000000000000000000000000043
-:10BE00000000000000000000000000000000000032
-:10BE10000000000000000000000000000000000022
-:10BE20000000000000000000000000000000000012
-:10BE30000000000000000000000000000000000002
-:10BE400000000000000000000000000000000000F2
-:10BE500000000000000000000000000000000000E2
-:10BE600000000000000000000000000000000000D2
-:10BE700000000000000000000000000000000000C2
-:10BE800000000000000000000000000000000000B2
-:10BE900000000000000000000000000000000000A2
-:10BEA0000000000000000000000000000000000092
-:10BEB0000000000000000000000000000000000082
-:10BEC0000000000000000000000000000000000072
-:10BED0000000000000000000000000000000000062
-:10BEE0000000000000000000000000000000000052
-:10BEF0000000000000000000000000000000000042
-:10BF00000000000000000000000000000000000031
-:10BF10000000000000000000000000000000000021
-:10BF20000000000000000000000000000000000011
-:10BF30000000000000000000000000000000000001
-:10BF400000000000000000000000000000000000F1
-:10BF500000000000000000000000000000000000E1
-:10BF600000000000000000000000000000000000D1
-:10BF700000000000000000000000000000000000C1
-:10BF800000000000000000000000000000000000B1
-:10BF900000000000000000000000000000000000A1
-:10BFA0000000000000000000000000000000000091
-:10BFB0000000000000000000000000000000000081
-:10BFC0000000000000000000000000000000000071
-:10BFD0000000000000000000000000000000000061
-:10BFE0000000000000000000000000000000000051
-:10BFF0000000000000000000000000000000000041
-:10C000000000000000000000000000000000000030
-:10C010000000000000000000000000000000000020
-:10C020000000000000000000000000000000000010
-:10C030000000000000000000000000000000000000
-:10C0400000000000000000000000000000000000F0
-:10C0500000000000000000000000000000000000E0
-:10C0600000000000000000000000000000000000D0
-:10C0700000000000000000000000000000000000C0
-:10C0800000000000000000000000000000000000B0
-:10C0900000000000000000000000000000000000A0
-:10C0A0000000000000000000000000000000000090
-:10C0B0000000000000000000000000000000000080
-:10C0C0000000000000000000000000000000000070
-:10C0D0000000000000000000000000000000000060
-:10C0E0000000000000000000000000000000000050
-:10C0F0000000000000000000000000000000000040
-:10C10000000000000000000000000000000000002F
-:10C11000000000000000000000000000000000001F
-:10C12000000000000000000000000000000000000F
-:10C1300000000000000000000000000000000000FF
-:10C1400000000000000000000000000000000000EF
-:10C1500000000000000000000000000000000000DF
-:10C1600000000000000000000000000000000000CF
-:10C1700000000000000000000000000000000000BF
-:10C1800000000000000000000000000000000000AF
-:10C19000000000000000000000000000000000009F
-:10C1A000000000000000000000000000000000008F
-:10C1B000000000000000000000000000000000007F
-:10C1C000000000000000000000000000000000006F
-:10C1D000000000000000000000000000000000005F
-:10C1E000000000000000000000000000000000004F
-:10C1F000000000000000000000000000000000003F
-:10C20000000000000000000000000000000000002E
-:10C21000000000000000000000000000000000001E
-:10C22000000000000000000000000000000000000E
-:10C2300000000000000000000000000000000000FE
-:10C2400000000000000000000000000000000000EE
-:10C2500000000000000000000000000000000000DE
-:10C2600000000000000000000000000000000000CE
-:10C2700000000000000000000000000000000000BE
-:10C2800000000000000000000000000000000000AE
-:10C29000000000000000000000000000000000009E
-:10C2A000000000000000000000000000000000008E
-:10C2B000000000000000000000000000000000007E
-:10C2C000000000000000000000000000000000006E
-:10C2D000000000000000000000000000000000005E
-:10C2E000000000000000000000000000000000004E
-:10C2F000000000000000000000000000000000003E
-:10C30000000000000000000000000000000000002D
-:10C31000000000000000000000000000000000001D
-:10C32000000000000000000000000000000000000D
-:10C3300000000000000000000000000000000000FD
-:10C3400000000000000000000000000000000000ED
-:10C3500000000000000000000000000000000000DD
-:10C3600000000000000000000000000000000000CD
-:10C3700000000000000000000000000000000000BD
-:10C3800000000000000000000000000000000000AD
-:10C39000000000000000000000000000000000009D
-:10C3A000000000000000000000000000000000008D
-:10C3B000000000000000000000000000000000007D
-:10C3C000000000000000000000000000000000006D
-:10C3D000000000000000000000000000000000005D
-:10C3E000000000000000000000000000000000004D
-:10C3F000000000000000000000000000000000003D
-:10C40000000000000000000000000000000000002C
-:10C41000000000000000000000000000000000001C
-:10C42000000000000000000000000000000000000C
-:10C4300000000000000000000000000000000000FC
-:10C4400000000000000000000000000000000000EC
-:10C4500000000000000000000000000000000000DC
-:10C4600000000000000000000000000000000000CC
-:10C4700000000000000000000000000000000000BC
-:10C4800000000000000000000000000000000000AC
-:10C49000000000000000000000000000000000009C
-:10C4A000000000000000000000000000000000008C
-:10C4B000000000000000000000000000000000007C
-:10C4C000000000000000000000000000000000006C
-:10C4D000000000000000000000000000000000005C
-:10C4E000000000000000000000000000000000004C
-:10C4F000000000000000000000000000000000003C
-:10C50000000000000000000000000000000000002B
-:10C51000000000000000000000000000000000001B
-:10C52000000000000000000000000000000000000B
-:10C5300000000000000000000000000000000000FB
-:10C5400000000000000000000000000000000000EB
-:10C5500000000000000000000000000000000000DB
-:10C5600000000000000000000000000000000000CB
-:10C5700000000000000000000000000000000000BB
-:10C5800000000000000000000000000000000000AB
-:10C59000000000000000000000000000000000009B
-:10C5A000000000000000000000000000000000008B
-:10C5B000000000000000000000000000000000007B
-:10C5C000000000000000000000000000000000006B
-:10C5D000000000000000000000000000000000005B
-:10C5E000000000000000000000000000000000004B
-:10C5F000000000000000000000000000000000003B
-:10C60000000000000000000000000000000000002A
-:10C61000000000000000000000000000000000001A
-:10C62000000000000000000000000000000000000A
-:10C6300000000000000000000000000000000000FA
-:10C6400000000000000000000000000000000000EA
-:10C6500000000000000000000000000000000000DA
-:10C6600000000000000000000000000000000000CA
-:10C6700000000000000000000000000000000000BA
-:10C6800000000000000000000000000000000000AA
-:10C69000000000000000000000000000000000009A
-:10C6A000000000000000000000000000000000008A
-:10C6B000000000000000000000000000000000007A
-:10C6C000000000000000000000000000000000006A
-:10C6D000000000000000000000000000000000005A
-:10C6E000000000000000000000000000000000004A
-:10C6F000000000000000000000000000000000003A
-:10C700000000000000000000000000000000000029
-:10C710000000000000000000000000000000000019
-:10C720000000000000000000000000000000000009
-:10C7300000000000000000000000000000000000F9
-:10C7400000000000000000000000000000000000E9
-:10C7500000000000000000000000000000000000D9
-:10C7600000000000000000000000000000000000C9
-:10C7700000000000000000000000000000000000B9
-:10C7800000000000000000000000000000000000A9
-:10C790000000000000000000000000000000000099
-:10C7A0000000000000000000000000000000000089
-:10C7B0000000000000000000000000000000000079
-:10C7C0000000000000000000000000000000000069
-:10C7D0000000000000000000000000000000000059
-:10C7E0000000000000000000000000000000000049
-:10C7F0000000000000000000000000000000000039
-:10C800000000000000000000000000000000000028
-:10C810000000000000000000000000000000000018
-:10C820000000000000000000000000000000000008
-:10C8300000000000000000000000000000000000F8
-:10C8400000000000000000000000000000000000E8
-:10C8500000000000000000000000000000000000D8
-:10C8600000000000000000000000000000000000C8
-:10C8700000000000000000000000000000000000B8
-:10C8800000000000000000000000000000000000A8
-:10C890000000000000000000000000000000000098
-:10C8A0000000000000000000000000000000000088
-:10C8B0000000000000000000000000000000000078
-:10C8C0000000000000000000000000000000000068
-:10C8D0000000000000000000000000000000000058
-:10C8E0000000000000000000000000000000000048
-:10C8F0000000000000000000000000000000000038
-:10C900000000000000000000000000000000000027
-:10C910000000000000000000000000000000000017
-:10C920000000000000000000000000000000000007
-:10C9300000000000000000000000000000000000F7
-:10C9400000000000000000000000000000000000E7
-:10C9500000000000000000000000000000000000D7
-:10C9600000000000000000000000000000000000C7
-:10C9700000000000000000000000000000000000B7
-:10C9800000000000000000000000000000000000A7
-:10C990000000000000000000000000000000000097
-:10C9A0000000000000000000000000000000000087
-:10C9B0000000000000000000000000000000000077
-:10C9C0000000000000000000000000000000000067
-:10C9D0000000000000000000000000000000000057
-:10C9E0000000000000000000000000000000000047
-:10C9F0000000000000000000000000000000000037
-:10CA00000000000000000000000000000000000026
-:10CA10000000000000000000000000000000000016
-:10CA20000000000000000000000000000000000006
-:10CA300000000000000000000000000000000000F6
-:10CA400000000000000000000000000000000000E6
-:10CA500000000000000000000000000000000000D6
-:10CA600000000000000000000000000000000000C6
-:10CA700000000000000000000000000000000000B6
-:10CA800000000000000000000000000000000000A6
-:10CA90000000000000000000000000000000000096
-:10CAA0000000000000000000000000000000000086
-:10CAB0000000000000000000000000000000000076
-:10CAC0000000000000000000000000000000000066
-:10CAD0000000000000000000000000000000000056
-:10CAE0000000000000000000000000000000000046
-:10CAF0000000000000000000000000000000000036
-:10CB00000000000000000000000000000000000025
-:10CB10000000000000000000000000000000000015
-:10CB20000000000000000000000000000000000005
-:10CB300000000000000000000000000000000000F5
-:10CB400000000000000000000000000000000000E5
-:10CB500000000000000000000000000000000000D5
-:10CB600000000000000000000000000000000000C5
-:10CB700000000000000000000000000000000000B5
-:10CB800000000000000000000000000000000000A5
-:10CB90000000000000000000000000000000000095
-:10CBA0000000000000000000000000000000000085
-:10CBB0000000000000000000000000000000000075
-:10CBC0000000000000000000000000000000000065
-:10CBD0000000000000000000000000000000000055
-:10CBE0000000000000000000000000000000000045
-:10CBF0000000000000000000000000000000000035
-:10CC00000000000000000000000000000000000024
-:10CC10000000000000000000000000000000000014
-:10CC20000000000000000000000000000000000004
-:10CC300000000000000000000000000000000000F4
-:10CC400000000000000000000000000000000000E4
-:10CC500000000000000000000000000000000000D4
-:10CC600000000000000000000000000000000000C4
-:10CC700000000000000000000000000000000000B4
-:10CC800000000000000000000000000000000000A4
-:10CC90000000000000000000000000000000000094
-:10CCA0000000000000000000000000000000000084
-:10CCB0000000000000000000000000000000000074
-:10CCC0000000000000000000000000000000000064
-:10CCD0000000000000000000000000000000000054
-:10CCE0000000000000000000000000000000000044
-:10CCF0000000000000000000000000000000000034
-:10CD00000000000000000000000000000000000023
-:10CD10000000000000000000000000000000000013
-:10CD20000000000000000000000000000000000003
-:10CD300000000000000000000000000000000000F3
-:10CD400000000000000000000000000000000000E3
-:10CD500000000000000000000000000000000000D3
-:10CD600000000000000000000000000000000000C3
-:10CD700000000000000000000000000000000000B3
-:10CD800000000000000000000000000000000000A3
-:10CD90000000000000000000000000000000000093
-:10CDA0000000000000000000000000000000000083
-:10CDB0000000000000000000000000000000000073
-:10CDC0000000000000000000000000000000000063
-:10CDD0000000000000000000000000000000000053
-:10CDE0000000000000000000000000000000000043
-:10CDF0000000000000000000000000000000000033
-:10CE00000000000000000000000000000000000022
-:10CE10000000000000000000000000000000000012
-:10CE20000000000000000000000000000000000002
-:10CE300000000000000000000000000000000000F2
-:10CE400000000000000000000000000000000000E2
-:10CE500000000000000000000000000000000000D2
-:10CE600000000000000000000000000000000000C2
-:10CE700000000000000000000000000000000000B2
-:10CE800000000000000000000000000000000000A2
-:10CE90000000000000000000000000000000000092
-:10CEA0000000000000000000000000000000000082
-:10CEB0000000000000000000000000000000000072
-:10CEC0000000000000000000000000000000000062
-:10CED0000000000000000000000000000000000052
-:10CEE0000000000000000000000000000000000042
-:10CEF0000000000000000000000000000000000032
-:10CF00000000000000000000000000000000000021
-:10CF10000000000000000000000000000000000011
-:10CF20000000000000000000000000000000000001
-:10CF300000000000000000000000000000000000F1
-:10CF400000000000000000000000000000000000E1
-:10CF500000000000000000000000000000000000D1
-:10CF600000000000000000000000000000000000C1
-:10CF700000000000000000000000000000000000B1
-:10CF800000000000000000000000000000000000A1
-:10CF90000000000000000000000000000000000091
-:10CFA0000000000000000000000000000000000081
-:10CFB0000000000000000000000000000000000071
-:10CFC0000000000000000000000000000000000061
-:10CFD0000000000000000000000000000000000051
-:10CFE0000000000000000000000000000000000041
-:10CFF0000000000000000000000000000000000031
-:10D000000000000000000000000000000000000020
-:10D010000000000000000000000000000000000010
-:10D020000000000000000000000000000000000000
-:10D0300000000000000000000000000000000000F0
-:10D0400000000000000000000000000000000000E0
-:10D0500000000000000000000000000000000000D0
-:10D0600000000000000000000000000000000000C0
-:10D0700000000000000000000000000000000000B0
-:10D0800000000000000000000000000000000000A0
-:10D090000000000000000000000000000000000090
-:10D0A0000000000000000000000000000000000080
-:10D0B0000000000000000000000000000000000070
-:10D0C0000000000000000000000000000000000060
-:10D0D0000000000000000000000000000000000050
-:10D0E0000000000000000000000000000000000040
-:10D0F0000000000000000000000000000000000030
-:10D10000000000000000000000000000000000001F
-:10D11000000000000000000000000000000000000F
-:10D1200000000000000000000000000000000000FF
-:10D1300000000000000000000000000000000000EF
-:10D1400000000000000000000000000000000000DF
-:10D1500000000000000000000000000000000000CF
-:10D1600000000000000000000000000000000000BF
-:10D1700000000000000000000000000000000000AF
-:10D18000000000000000000000000000000000009F
-:10D19000000000000000000000000000000000008F
-:10D1A000000000000000000000000000000000007F
-:10D1B000000000000000000000000000000000006F
-:10D1C000000000000000000000000000000000005F
-:10D1D000000000000000000000000000000000004F
-:10D1E000000000000000000000000000000000003F
-:10D1F000000000000000000000000000000000002F
-:10D20000000000000000000000000000000000001E
-:10D21000000000000000000000000000000000000E
-:10D2200000000000000000000000000000000000FE
-:10D2300000000000000000000000000000000000EE
-:10D2400000000000000000000000000000000000DE
-:10D2500000000000000000000000000000000000CE
-:10D2600000000000000000000000000000000000BE
-:10D2700000000000000000000000000000000000AE
-:10D28000000000000000000000000000000000009E
-:10D29000000000000000000000000000000000008E
-:10D2A000000000000000000000000000000000007E
-:10D2B000000000000000000000000000000000006E
-:10D2C000000000000000000000000000000000005E
-:10D2D000000000000000000000000000000000004E
-:10D2E000000000000000000000000000000000003E
-:10D2F000000000000000000000000000000000002E
-:10D30000000000000000000000000000000000001D
-:10D31000000000000000000000000000000000000D
-:10D3200000000000000000000000000000000000FD
-:10D3300000000000000000000000000000000000ED
-:10D3400000000000000000000000000000000000DD
-:10D3500000000000000000000000000000000000CD
-:10D3600000000000000000000000000000000000BD
-:10D3700000000000000000000000000000000000AD
-:10D38000000000000000000000000000000000009D
-:10D39000000000000000000000000000000000008D
-:10D3A000000000000000000000000000000000007D
-:10D3B000000000000000000000000000000000006D
-:10D3C000000000000000000000000000000000005D
-:10D3D000000000000000000000000000000000004D
-:10D3E000000000000000000000000000000000003D
-:10D3F000000000000000000000000000000000002D
-:10D40000000000000000000000000000000000001C
-:10D41000000000000000000000000000000000000C
-:10D4200000000000000000000000000000000000FC
-:10D4300000000000000000000000000000000000EC
-:10D4400000000000000000000000000000000000DC
-:10D4500000000000000000000000000000000000CC
-:10D4600000000000000000000000000000000000BC
-:10D4700000000000000000000000000000000000AC
-:10D48000000000000000000000000000000000009C
-:10D49000000000000000000000000000000000008C
-:10D4A000000000000000000000000000000000007C
-:10D4B000000000000000000000000000000000006C
-:10D4C000000000000000000000000000000000005C
-:10D4D000000000000000000000000000000000004C
-:10D4E000000000000000000000000000000000003C
-:10D4F000000000000000000000000000000000002C
-:10D50000000000000000000000000000000000001B
-:10D51000000000000000000000000000000000000B
-:10D5200000000000000000000000000000000000FB
-:10D5300000000000000000000000000000000000EB
-:10D5400000000000000000000000000000000000DB
-:10D5500000000000000000000000000000000000CB
-:10D5600000000000000000000000000000000000BB
-:10D5700000000000000000000000000000000000AB
-:10D58000000000000000000000000000000000009B
-:10D59000000000000000008000000000000000000B
-:10D5A000000000000000000000000000000000007B
-:10D5B00000000000000000000000000A0000000061
-:10D5C0000000000000000000100000030000000048
-:10D5D0000000000D0000000D3C02080024427320F2
-:10D5E0003C030800246377ACAC4000000043202BD0
-:10D5F0001480FFFD244200043C1D080037BD7FFC61
-:10D6000003A0F0213C100800261032103C1C08003A
-:10D61000279C73200E0010FE000000000000000D8B
-:10D6200030A5FFFF30C600FF274301808F4201B8BD
-:10D630000440FFFE24020002AC640000A465000860
-:10D64000A066000AA062000B3C021000AC67001844
-:10D6500003E00008AF4201B83C0360008C624FF861
-:10D660000440FFFE3C020200AC644FC0AC624FC4F9
-:10D670003C02100003E00008AC624FF89482000CFA
-:10D680002486001400A0382100021302000210803A
-:10D690000082402100C8102B1040005700000000FD
-:10D6A00090C300002C6200095040005190C200015C
-:10D6B000000310803C030800246372D00043102153
-:10D6C0008C420000004000080000000090C30001F0
-:10D6D0002402000A1462003A000000000106102330
-:10D6E0002C42000A1440003624C600028CE20000DE
-:10D6F00034420100ACE2000090C2000090C300017F
-:10D7000090C4000290C5000300031C000002160034
-:10D710000043102500042200004410250045102578
-:10D7200024C60004ACE2000490C2000090C30001D3
-:10D7300090C4000290C500030002160000031C0004
-:10D740000043102500042200004410250045102548
-:10D7500024C600040A000CB8ACE2000890C3000123
-:10D76000240200041462001624C6000290C20000C5
-:10D7700090C400018CE30000000212000044102558
-:10D780003463000424C60002ACE2000C0A000CB8AA
-:10D79000ACE3000090C300012402000314620008FF
-:10D7A00024C600028CE2000090C3000024C60001E1
-:10D7B00034420008A0E300100A000CB8ACE20000FC
-:10D7C00003E000082402000190C3000124020002CB
-:10D7D0001062000224C40002010020210A000CB8DB
-:10D7E000008030210A000CB824C6000190C200015C
-:10D7F0000A000CB800C2302103E00008000010212C
-:10D8000027BDFFE8AFBF0014AFB000100E00130239
-:10D8100000808021936200052403FFFE0200202186
-:10D82000004310248FBF00148FB00010A3620005C6
-:10D830000A00130B27BD001827BDFFE8AFB000108A
-:10D84000AFBF00140E000F3C0080802193620000E7
-:10D8500024030050304200FF14430004240201005E
-:10D86000AF4201800A000D3002002021AF4001804C
-:10D87000020020218FBF00148FB000100A000FE7B4
-:10D8800027BD001827BDFF80AFBE0078AFB700747A
-:10D89000AFB20060AFBF007CAFB60070AFB5006C38
-:10D8A000AFB40068AFB30064AFB1005CAFB0005874
-:10D8B0008F5001283C0208008C4231A02403FF80D5
-:10D8C0009365003F0202102100431024AF42002460
-:10D8D0003C0208008C4231A09364000530B200FF86
-:10D8E000020210213042007F034218210004202749
-:10D8F0003C02000A0062182130840001AF8300144A
-:10D900000000F0210000B82114800053AFA00050A7
-:10D9100093430116934401128F450104306300FFC5
-:10D920003C020001308400FF00A2282403431021A0
-:10D9300003441821245640002467400014A001CD60
-:10D940002402000193620000304300FF2402002003
-:10D950001062000524020050106200060000000062
-:10D960000A000D74000000000000000D0A000D7D8B
-:10D97000AFA000303C1E080027DE736C0A000D7D4E
-:10D98000AFA000303C0208008C4200DC24420001C1
-:10D990003C010800AC2200DC0E00139F00000000D8
-:10D9A0000A000F318FBF007C8F4201043C0300202E
-:10D9B00092D3000D004310240002202B00042140CC
-:10D9C000AFA400308F4301043C02004000621824E1
-:10D9D000146000023485004000802821326200205B
-:10D9E000AFA500301440000234A6008000A0302112
-:10D9F00010C0000BAFA6003093C500088F67004C25
-:10DA00000200202100052B0034A5008130A5F08103
-:10DA10000E000C9B30C600FF0A000F2E0000000015
-:10DA20009362003E304200401040000F2402000488
-:10DA300056420007240200120200202100E02821A3
-:10DA40000E0013F702C030210A000F318FBF007C97
-:10DA500016420005000000000E000D2100002021EC
-:10DA60000A000F318FBF007C9743011A96C4000E45
-:10DA700093620035326500043075FFFF00442004D6
-:10DA8000AFA400548ED1000410A000158ED400085D
-:10DA90009362003E3042004010400007000000004A
-:10DAA0000E0013E0022020211040000D00000000B5
-:10DAB0000A000F2E000000008F6200440222102393
-:10DAC0000440016A000000008F6200480222102317
-:10DAD00004410166240400160A000E218FC20004CE
-:10DAE0008F6200480222102304400008000000005A
-:10DAF0003C0208008C423100244200013C01080035
-:10DB0000AC2231000A000F23000000008F620040A9
-:10DB100002221023184000128F8400143C020800D7
-:10DB20008C423100327300FC0000A8212442000125
-:10DB30003C010800AC2231008F6300409482011C3C
-:10DB4000022318233042FFFF0043102A50400010E8
-:10DB50002402000C8F6200400A000DF20222102302
-:10DB60009483011C9762003C0043102B1040000678
-:10DB7000000000009482011C00551023A482011CA7
-:10DB80000A000DF72402000CA480011C2402000CE2
-:10DB9000AFA200308F620040005120231880000D9A
-:10DBA00002A4102A1440012600000000149500066B
-:10DBB00002A410233A620001304200011440012007
-:10DBC0000000000002A41023022488210A000E098C
-:10DBD0003055FFFF00002021326200021040001A81
-:10DBE000326200109362003E30420040504000110B
-:10DBF0008FC200040E00130202002021240200182C
-:10DC0000A362003F936200052403FFFE020020216F
-:10DC1000004310240E00130BA362000524040039F6
-:10DC2000000028210E0013C9240600180A000F3036
-:10DC300024020001240400170040F809000000003D
-:10DC40000A000F302402000110400108000000000B
-:10DC50008F63004C8F620054028210231C4001032A
-:10DC600002831023044200010060A021AFA4001829
-:10DC7000AFB10010AFB50014934201208F65004092
-:10DC80009763003C304200FF034210210044102102
-:10DC90008FA400543063FFFF244240000083182B00
-:10DCA0008FA40030AFA20020AFA50028008320255C
-:10DCB000AFA40030AFA50024AFA0002CAFB4003457
-:10DCC0009362003E30420008504000118FC20000B5
-:10DCD00002C0202127A500380E000CB2AFA00038EA
-:10DCE0005440000B8FC200008FA200383042010068
-:10DCF000504000078FC200008FA3003C8F6200607D
-:10DD00000062102304430001AF6300608FC2000073
-:10DD10000040F80927A400108FA200303042000212
-:10DD200054400001327300FE9362003E30420040D6
-:10DD3000104000378FA200248F6200541682001A10
-:10DD40003262000124020014124200102A4200151F
-:10DD500010400006240200162402000C12420007A4
-:10DD6000326200010A000E7D000000001242000530
-:10DD7000326200010A000E7D000000000A000E78E9
-:10DD80002417000E0A000E78241700100A000E7CDB
-:10DD900024170012936200232403FFBD00431024C4
-:10DDA000A362002332620001104000198FA20024F8
-:10DDB0002402000C1242000E2A42000D1040000600
-:10DDC0002402000E2402000A124200078FA200243F
-:10DDD0000A000E9524420001124200088FA200247E
-:10DDE0000A000E95244200010A000E932417000831
-:10DDF0002402000E16E20002241700162417001059
-:10DE00008FA2002424420001AFA200248FA200248C
-:10DE10008FA300148F76004000431021AF620040B2
-:10DE20008F8200149442011C104000090000000081
-:10DE30008F6200488F6400409763003C00441023C9
-:10DE40003063FFFF0043102A104000088FA20054E7
-:10DE5000936400368F6300403402FFFC008210049C
-:10DE600000621821AF6300488FA200548FA60030D3
-:10DE70000282902130C200081040000E0000000015
-:10DE80008F6200581642000430C600FF9742011A04
-:10DE90005040000134C6001093C500088FA700341D
-:10DEA0000200202100052B0034A500800E000C9BF1
-:10DEB00030A5F0808F620040005610231840001BF0
-:10DEC0008FA200183C0208008C42319830420010AA
-:10DED0001040000D24020001976200681440000AFF
-:10DEE000240200018F8200149442011C1440000699
-:10DEF00024020001A76200689742007A244200646D
-:10DF00000A000EE9A7620012A76200120E001302B7
-:10DF1000020020219362007D2403000102002021E1
-:10DF2000344200010A000EE7AFA300501840000A77
-:10DF3000000000000E001302020020219362007D09
-:10DF40002403000102002021AFA30050344200044A
-:10DF50000E00130BA362007D9362003E304200402E
-:10DF60001440000C326200011040000A0000000062
-:10DF70008F6300408FC20004240400182463000152
-:10DF80000040F809AF6300408FA200300A000F3054
-:10DF9000304200048F620058105200100000000050
-:10DFA0008F620018022210231C4000082404000184
-:10DFB0008F62001816220009000000008F62001C0A
-:10DFC000028210230440000500000000AF720058D8
-:10DFD000AFA40050AF710018AF74001C12E0000B2A
-:10DFE0008FA200500E00130202002021A377003FF1
-:10DFF0000E00130B0200202102E030212404003720
-:10E000000E0013C9000028218FA200501040000309
-:10E01000000000000E000CA90200202112A0000543
-:10E02000000018218FA2003030420004504000113F
-:10E0300000601021240300010A000F30006010214D
-:10E040000E001302020020219362007D02002021B5
-:10E05000344200040E00130BA362007D0E000CA9D5
-:10E06000020020210A000F3024020001AF400044CA
-:10E07000240200018FBF007C8FBE00788FB7007430
-:10E080008FB600708FB5006C8FB400688FB30064DA
-:10E090008FB200608FB1005C8FB0005803E00008C1
-:10E0A00027BD00808F4201B80440FFFE2402080013
-:10E0B000AF4201B803E00008000000003C02000885
-:10E0C00003421021944200483084FFFF2484001250
-:10E0D0003045FFFF10A0001700A4102B10400016C1
-:10E0E00024020003934201202403001AA343018B5E
-:10E0F000304200FF2446FFFE8F82000000A6182B4E
-:10E100003863000100021382004310241040000510
-:10E110008F84000434820001A746019403E00008C4
-:10E12000AF8200042402FFFE0082102403E00008F6
-:10E13000AF8200042402000303E00008A342018B25
-:10E1400027BDFFE0AFB10014AFB00010AFBF0018A3
-:10E1500030B0FFFF30D1FFFF8F4201B80440FFFE17
-:10E1600000000000AF440180AF4400200E000F42C9
-:10E17000020020218F8300008F840004A750019AA1
-:10E18000A750018EA74301908F8300083082800042
-:10E19000AF4301A8A75101881040000E8F820004F0
-:10E1A00093420116304200FC24420004005A102120
-:10E1B0008C4240003042FFFF144000068F82000472
-:10E1C0003C02FFFF34427FFF00821024AF82000434
-:10E1D0008F8200042403BFFF00431024A74201A63E
-:10E1E0009743010C8F42010400031C003042FFFFE3
-:10E1F00000621825AF4301AC3C021000AF4201B8E9
-:10E200008FBF00188FB100148FB0001003E000081A
-:10E2100027BD00208F470070934201128F830000BA
-:10E2200027BDFFF0304200FF00022882306201006B
-:10E23000000030211040004324A40003306240005D
-:10E24000104000103062200000041080005A10219D
-:10E250008C43400024A4000400041080AFA30000FD
-:10E26000005A10218C424000AFA2000493420116D4
-:10E27000304200FC005A10218C4240000A000FC0BE
-:10E28000AFA200081040002F0000302100041080D1
-:10E29000005A10218C43400024A400040004108084
-:10E2A000AFA30000005A10218C424000AFA000082C
-:10E2B000AFA200048FA80008000030210000202138
-:10E2C000240A00083C0908002529010003A41021A4
-:10E2D000148A000300042A001100000A0000000054
-:10E2E00090420000248400012C83000C00A2102125
-:10E2F00000021080004910218C4200001460FFF3DE
-:10E3000000C230263C0408008C8431048F42007027
-:10E310002C83002010600009004738233C030800CC
-:10E32000246331080004108000431021248300017D
-:10E33000AC4700003C010800AC233104AF86000864
-:10E340002406000100C0102103E0000827BD0010D2
-:10E350003C0208008C42003827BDFFD0AFB5002436
-:10E36000AFB40020AFB10014AFBF0028AFB3001CA2
-:10E37000AFB20018AFB00010000088213C150800B3
-:10E3800026B50038144000022454FFFF0000A021ED
-:10E390009742010E8F8400003042FFFF308340001F
-:10E3A0001060000A245200043C0200200082102465
-:10E3B00050400007308280008F8200042403BFFF9A
-:10E3C000008318240A0010103442100030828000AC
-:10E3D0001040000A3C020020008210241040000778
-:10E3E0008F8200043C03FFFF34637FFF0083182407
-:10E3F00034428000AF820004AF8300000E000F980B
-:10E400000000000014400007000000009743011EB8
-:10E410009742011C3063FFFF0002140000621825C0
-:10E42000AF8300089742010C8F4340003045FFFF47
-:10E430003402FFFF14620003000000000A001028ED
-:10E44000241100208F42400030420100544000015E
-:10E45000241100108F8400003082100050400014FE
-:10E4600036310001308200201440000B3C021000C5
-:10E47000008210245040000E363100013C030E0093
-:10E480003C020DFF008318243442FFFF0043102B91
-:10E4900050400007363100013C0208008C42002C3D
-:10E4A000244200013C010800AC22002C363100055A
-:10E4B0003C0608008CC6003454C000238F85000041
-:10E4C0008F820004304240005440001F8F850000BE
-:10E4D0003C021F01008210243C0310005443001A28
-:10E4E0008F85000030A20200144000178F850000C5
-:10E4F0003250FFFF363100028F4201B80440FFFE68
-:10E5000000000000AF400180020020210E000F42F9
-:10E51000AF4000208F8300042402BFFFA750019A60
-:10E52000006218248F820000A750018EA751018835
-:10E53000A74301A6A74201903C021000AF4201B8D8
-:10E540000A0010F5000010213C02100000A2102467
-:10E550001040003A0000000010C0000F0000000052
-:10E5600030A201001040000C3C0302003C020F00EE
-:10E5700000A2102410430008000000008F82000851
-:10E58000005410240055102190420004244200043D
-:10E590000A00109F000221C00000000000051602C2
-:10E5A0003050000F3A0300022E4203EF38420001C0
-:10E5B0002C6300010062182414600073240200011F
-:10E5C0003C0308008C6300D02E06000C386200016A
-:10E5D0002C4200010046102414400015001021C0F8
-:10E5E0002602FFFC2C4200045440001100002021B0
-:10E5F000386200022C420001004610241040000343
-:10E60000000512420A00109F000020210010182B64
-:10E610000043102450400006001021C000002021BB
-:10E620003245FFFF0E000F633226FFFB001021C0B2
-:10E630003245FFFF0A0010F2362600028F424000EA
-:10E640003C0308008C630024304201001040004667
-:10E6500030620001322200043070000D14400002CC
-:10E660002413000424130002000512C238420001E2
-:10E670002E4303EF304200013863000100431025B0
-:10E68000104000033231FFFB2402FFFB0202802412
-:10E6900010C000183202000130A201001040001525
-:10E6A000320200013C020F0000A210243C030200D1
-:10E6B0001043000F8F8200082403FFFE0203802412
-:10E6C00000541024005510219042000402333025DC
-:10E6D0002442000412000002000221C03226FFFF83
-:10E6E0000E000F633245FFFF1200002700001021CB
-:10E6F000320200011040000D320200042402000129
-:10E7000012020002023330253226FFFF00002021D2
-:10E710000E000F633245FFFF2402FFFE0202802439
-:10E7200012000019000010213202000410400016EF
-:10E7300024020001240200041202000202333025E8
-:10E740003226FFFF3245FFFF0E000F632404010055
-:10E750002402FFFB020280241200000B00001021A3
-:10E760000A0010F5240200011040000700001021EB
-:10E770003245FFFF36260002000020210E000F6305
-:10E7800000000000000010218FBF00288FB500247A
-:10E790008FB400208FB3001C8FB200188FB100140B
-:10E7A0008FB0001003E0000827BD003027BDFFD068
-:10E7B000AFB000103C04600CAFBF002CAFB6002817
-:10E7C000AFB50024AFB40020AFB3001CAFB2001847
-:10E7D000AFB100148C8250002403FF7F3C1A8000EC
-:10E7E000004310243442380CAC8250002402000351
-:10E7F0003C106000AF4200088E0208083C1B8008F5
-:10E800003C010800AC2000203042FFF038420010EC
-:10E810002C4200010E001B85AF8200183C04FFFF54
-:10E820003C020400348308063442000CAE0219484E
-:10E83000AE03194C3C0560168E0219808CA30000B3
-:10E840003442020000641824AE0219803C02535383
-:10E850001462000334A47C008CA200040050202128
-:10E860008C82007C8C830078AF820010AF83000C18
-:10E870008F55000032A200031040FFFD32A20001BC
-:10E880001040013D32A200028F420128AF42002019
-:10E890008F4201048F430100AF8200000E000F3C45
-:10E8A000AF8300043C0208008C4200C01040000806
-:10E8B0008F8400003C0208008C4200C42442000106
-:10E8C0003C010800AC2200C40A00126900000000EC
-:10E8D0003C020010008210241440010C8F830004BD
-:10E8E0003C0208008C4200203C0308008C63003886
-:10E8F00000008821244200013C010800AC220020D5
-:10E900003C16080026D60038146000022474FFFF6D
-:10E910000000A0219742010E308340003042FFFFEB
-:10E920001060000A245200043C02002000821024DF
-:10E9300050400007308280008F8200042403BFFF14
-:10E94000008318240A0011703442100030828000C5
-:10E950001040000A3C0200200082102410400007F2
-:10E960008F8200043C03FFFF34637FFF0083182481
-:10E9700034428000AF820004AF8300000E000F9885
-:10E980000000000014400007000000009743011E33
-:10E990009742011C3063FFFF00021400006218253B
-:10E9A000AF8300089742010C8F4340003045FFFFC2
-:10E9B0003402FFFF14620003000000000A00118807
-:10E9C000241100208F4240003042010054400001D9
-:10E9D000241100108F840000308210005040001479
-:10E9E00036310001308200201440000B3C02100040
-:10E9F000008210245040000E363100013C030E000E
-:10EA00003C020DFF008318243442FFFF0043102B0B
-:10EA100050400007363100013C0208008C42002CB7
-:10EA2000244200013C010800AC22002C36310005D4
-:10EA30003C0608008CC6003454C000238F850000BB
-:10EA40008F820004304240005440001F8F85000038
-:10EA50003C021F01008210243C0310005443001AA2
-:10EA60008F85000030A20200144000178F8500003F
-:10EA70003250FFFF363100028F4201B80440FFFEE2
-:10EA800000000000AF400180020020210E000F4274
-:10EA9000AF4000208F8300042402BFFFA750019ADB
-:10EAA000006218248F820000A750018EA7510188B0
-:10EAB000A74301A6A74201903C021000AF4201B853
-:10EAC0000A001267000010213C02100000A210246E
-:10EAD0001040003A0000000010C0000F00000000CD
-:10EAE00030A201001040000C3C0302003C020F0069
-:10EAF00000A2102410430008000000008F820008CC
-:10EB000000541024005610219042000424420004B6
-:10EB10000A0011FF000221C00000000000051602DB
-:10EB20003050000F3A0300022E4203EF384200013A
-:10EB30002C63000100621824146000852402000187
-:10EB40003C0308008C6300D02E06000C38620001E4
-:10EB50002C4200010046102414400015001021C072
-:10EB60002602FFFC2C42000454400011000020212A
-:10EB7000386200022C42000100461024504000037D
-:10EB8000000512420A0011FF000020210010182B7E
-:10EB90000043102450400006001021C00000202136
-:10EBA0003245FFFF0E000F633226FFFB001021C02D
-:10EBB0003245FFFF0A001252362600028F42400003
-:10EBC0003C0308008C6300243042010010400046E2
-:10EBD00030620001322200043070000D1440000247
-:10EBE0002413000424130002000512C2384200015D
-:10EBF0002E4303EF3042000138630001004310252B
-:10EC0000104000033231FFFB2402FFFB020280248C
-:10EC100010C000183202000130A20100104000159F
-:10EC2000320200013C020F0000A210243C0302004B
-:10EC30001043000F8F8200082403FFFE020380248C
-:10EC40000054102400561021904200040233302555
-:10EC50002442000412000002000221C03226FFFFFD
-:10EC60000E000F633245FFFF120000390000102133
-:10EC7000320200011040000D3202000424020001A3
-:10EC800012020002023330253226FFFF000020214D
-:10EC90000E000F633245FFFF2402FFFE02028024B4
-:10ECA0001200002B00001021320200041040002846
-:10ECB0002402000124020004120200020233302563
-:10ECC0003226FFFF3245FFFF0E000F6324040100D0
-:10ECD0002402FFFB020280241200001D000010210C
-:10ECE0000A001267240200015040001900001021A0
-:10ECF0003245FFFF36260002000020210E000F6380
-:10ED0000000000000A001267000010212402BFFF6B
-:10ED1000006210241040000800000000240287FF59
-:10ED200000621024144000083C020060008210249D
-:10ED300010400005000000000E000D34000000002F
-:10ED40000A001267000000000E0012C70000000059
-:10ED5000104000063C0240008F4301243C0260202A
-:10ED6000AC430014000000003C024000AF420138F8
-:10ED70000000000032A200021040FEBD00000000B2
-:10ED80008F4201403C044000AF4200208F430148C5
-:10ED90003C02700000621824106400420000000071
-:10EDA0000083102B144000063C0260003C0220004F
-:10EDB000106200073C0240000A0012C3000000007D
-:10EDC0001062003C3C0240000A0012C30000000038
-:10EDD0008F4501408F4601448F42014800021402D2
-:10EDE000304300FF240200041462000A274401801B
-:10EDF0008F4201B80440FFFE2402001CAC850000D5
-:10EE0000A082000B3C021000AF4201B80A0012C3FE
-:10EE10003C0240002402000914620012000616029F
-:10EE2000000229C0AF4500208F4201B80440FFFE18
-:10EE30002402000124030003AF450180A343018B9A
-:10EE4000A740018EA740019AA7400190AF4001A8BA
-:10EE5000A7420188A74201A6AF4001AC3C021000C6
-:10EE6000AF4201B88F4201B80440FFFE000000002D
-:10EE7000AC8500008F42014800021402A482000801
-:10EE800024020002A082000B8F420148A4820010DD
-:10EE90003C021000AC860024AF4201B80A0012C345
-:10EEA0003C0240000E001310000000000A0012C3D4
-:10EEB0003C0240000E001BBA000000003C02400073
-:10EEC000AF420178000000000A00112F000000008E
-:10EED0008F4201003042003E144000112402000124
-:10EEE000AF4000488F420100304207C0104000058B
-:10EEF00000000000AF40004CAF40005003E00008AD
-:10EF000024020001AF400054AF4000408F42010096
-:10EF10003042380054400001AF4000442402000158
-:10EF200003E00008000000008F4201B80440FFFE2B
-:10EF300024020001AF440180AF400184A74501884D
-:10EF4000A342018A24020002A342018B9742014A94
-:10EF500014C00004A7420190AF4001A40A0012EFC0
-:10EF60003C0210008F420144AF4201A43C02100059
-:10EF7000AF4001A803E00008AF4201B88F4201B8DA
-:10EF80000440FFFE24020002AF440180AF4401842C
-:10EF9000A7450188A342018AA342018B9742014AF7
-:10EFA000A7420190AF4001A48F420144AF4201A8A3
-:10EFB0003C02100003E00008AF4201B83C029000A0
-:10EFC0003442000100822025AF4400208F420020FF
-:10EFD0000440FFFE0000000003E000080000000005
-:10EFE0003C028000344200010082202503E000083A
-:10EFF000AF44002027BDFFE8AFBF0014AFB0001042
-:10F000008F50014093430149934201489344014882
-:10F01000306300FF304200FF00021200006228252A
-:10F020002402001910620076308400802862001AE1
-:10F030001040001C24020020240200081062007707
-:10F04000286200091040000E2402000B2402000177
-:10F0500010620034286200025040000524020006BD
-:10F0600050600034020020210A00139A00000000C2
-:10F0700010620030020020210A00139A00000000F4
-:10F080001062003B2862000C504000022402000E77
-:10F090002402000910620056020020210A00139A7F
-:10F0A0000000000010620056286200211040000F8E
-:10F0B000240200382402001C106200582862001D3F
-:10F0C000104000062402001F2402001B1062004CA6
-:10F0D000000000000A00139A000000001062004ABD
-:10F0E000020020210A00139A00000000106200456F
-:10F0F0002862003910400007240200802462FFCB00
-:10F100002C42000210400045020020210A00139604
-:10F110000000302110620009000000000A00139A6C
-:10F12000000000001480003D020020210A0013901E
-:10F130008FBF00140A001396240600018F4201B805
-:10F140000440FFFE24020002A342018BA745018870
-:10F150009742014AA74201908F420144A74201927F
-:10F160003C021000AF4201B80A00139C8FBF00148C
-:10F170009742014A144000290000000093620005F4
-:10F180003042000414400025000000000E0013026D
-:10F190000200202193620005020020213442000475
-:10F1A0000E00130BA36200059362000530420004B9
-:10F1B00014400002000000000000000D93620000F7
-:10F1C00024030020304200FF14430014000000001C
-:10F1D0008F4201B80440FFFE24020005AF500180B9
-:10F1E000A342018B3C0210000A00139AAF4201B8FF
-:10F1F0008FBF00148FB000100A0012F227BD001854
-:10F200000000000D02002021000030218FBF0014FB
-:10F210008FB000100A0012DD27BD00180000000D9D
-:10F220008FBF00148FB0001003E0000827BD001846
-:10F2300027BDFFE8AFBF00100E000F3C000000002C
-:10F24000AF4001808FBF0010000020210A000FE7AF
-:10F2500027BD00183084FFFF30A5FFFF00001821F4
-:10F260001080000700000000308200011040000202
-:10F2700000042042006518210A0013AB0005284055
-:10F2800003E000080060102110C0000624C6FFFF44
-:10F290008CA2000024A50004AC8200000A0013B573
-:10F2A0002484000403E000080000000010A000080F
-:10F2B00024A3FFFFAC860000000000000000000057
-:10F2C0002402FFFF2463FFFF1462FFFA248400047A
-:10F2D00003E0000800000000308300FF30A500FFBD
-:10F2E00030C600FF274701808F4201B80440FFFE6F
-:10F2F000000000008F42012834634000ACE20000AF
-:10F3000024020001ACE00004A4E30008A0E2000A2B
-:10F3100024020002A0E2000B3C021000A4E5001051
-:10F32000ACE00024ACE00028A4E6001203E00008F2
-:10F33000AF4201B827BDFFE8AFBF00109362003FA6
-:10F3400024030012304200FF1043000D00803021E2
-:10F350008F620044008210230440000A8FBF001017
-:10F360008F620048240400390000282100C21023C5
-:10F3700004410004240600120E0013C9000000001E
-:10F380008FBF00102402000103E0000827BD001811
-:10F3900027BDFFC8AFB20030AFB1002CAFBF003403
-:10F3A000AFB0002890C5000D0080902130A400105F
-:10F3B0001080000B00C088218CC300088F620054AD
-:10F3C0001062000730A20005144000B524040001BB
-:10F3D0000E000D21000020210A0014BB0040202156
-:10F3E00030A200051040000930A30012108000ACCC
-:10F3F000240400018E2300088F620054146200A9C7
-:10F400008FBF00340A00142C240400382402001298
-:10F41000146200A3240400010220202127A500106B
-:10F420000E000CB2AFA000101040001102402021CD
-:10F430008E220008AF620084AF6000400E0013020D
-:10F44000000000009362007D024020213442002031
-:10F450000E00130BA362007D0E000CA902402021B8
-:10F46000240400382405008D0A0014B82406001274
-:10F470009362003E304200081040000F8FA200103F
-:10F4800030420100104000078FA300148F6200601B
-:10F490000062102304430008AF6300600A001441B7
-:10F4A00000000000AF6000609362003E2403FFF79D
-:10F4B00000431024A362003E9362003E30420008E5
-:10F4C000144000022406000300003021936200343F
-:10F4D000936300378F640084304200FF306300FF85
-:10F4E00000661821000318800043282100A4202B67
-:10F4F0001080000B000000009763003C8F620084C6
-:10F500003063FFFF004510230062182B14600004D5
-:10F51000000000008F6200840A00145D0045802313
-:10F520009762003C3050FFFF8FA300103062000450
-:10F5300010400004000628808FA2001C0A001465F9
-:10F540000202102B2E02021850400003240202185F
-:10F550000A00146E020510233063000410600003DB
-:10F56000004510238FA2001C00451023004080217D
-:10F570002C42008054400001241000800E00130231
-:10F580000240202124020001AF62000C9362003E81
-:10F59000001020403042007FA362003E8E22000413
-:10F5A00024420001AF620040A770003C8F6200500F
-:10F5B0009623000E00431021AF6200588F62005066
-:10F5C00000441021AF62005C8E220004AF6200187C
-:10F5D0008E220008AF62001C8FA20010304200088B
-:10F5E0005440000A93A20020A360003693620036C4
-:10F5F0002403FFDFA36200359362003E0043102422
-:10F60000A362003E0A0014988E220008A36200350F
-:10F610008E220008AF62004C8F6200248F6300408E
-:10F6200000431021AF6200489362000024030050A1
-:10F63000304200FF144300122403FF803C02080004
-:10F640008C4231A00242102100431024AF42002816
-:10F650003C0208008C4231A08E2400083C03000CC0
-:10F66000024210213042007F03421021004310214A
-:10F67000AC4400D88E230008AF820014AC4300DCF9
-:10F680000E00130B02402021240400380000282122
-:10F690002406000A0E0013C9000000002404000123
-:10F6A0008FBF00348FB200308FB1002C8FB0002894
-:10F6B0000080102103E0000827BD003827BDFFF8B7
-:10F6C00027420180AFA20000308A00FF8F4201B8BC
-:10F6D0000440FFFE000000008F4601283C020800A5
-:10F6E0008C4231A02403FF80AF86004800C2102165
-:10F6F00000431024AF4200243C0208008C4231A099
-:10F700008FA900008FA8000000C210213042007FA6
-:10F71000034218213C02000A00621821946400D4BC
-:10F720008FA700008FA5000024020002AF83001401
-:10F73000A0A2000B8FA30000354260003084FFFFC1
-:10F74000A4E200083C021000AD260000AD04000455
-:10F75000AC60002427BD0008AF4201B803E00008F8
-:10F76000240200018F88003C938200288F830014BC
-:10F770003C07080024E7777800481023304200FF58
-:10F78000304900FC246500888F860040304A000321
-:10F790001120000900002021248200048CA3000015
-:10F7A000304400FF0089102AACE3000024A50004C7
-:10F7B0001440FFF924E70004114000090000202153
-:10F7C0002482000190A30000304400FF008A102B27
-:10F7D000A0E3000024A500011440FFF924E7000184
-:10F7E00030C20003144000048F85003C3102000346
-:10F7F0001040000D0000000010A0000900002021B2
-:10F800002482000190C30000304400FF0085102BCB
-:10F81000A0E3000024C600011440FFF924E7000122
-:10F8200003E00008000000001100FFFD000020219F
-:10F83000248200048CC30000304400FF0088102B99
-:10F84000ACE3000024C600041440FFF924E70004E0
-:10F8500003E00008000000008F83003C9382002832
-:10F8600030C600FF30A500FF00431023304300FFE7
-:10F870008F820014008038210043102114C0000240
-:10F88000244800880083382130E20003144000053A
-:10F8900030A2000314400003306200031040000D4A
-:10F8A0000000000010A000090000202124820001B7
-:10F8B00090E30000304400FF0085102BA1030000FE
-:10F8C00024E700011440FFF92508000103E00008C7
-:10F8D0000000000010A0FFFD000020212482000491
-:10F8E0008CE30000304400FF0085102BAD030000C6
-:10F8F00024E700041440FFF92508000403E0000891
-:10F90000000000000080482130AAFFFF30C600FF41
-:10F9100030E7FFFF274801808F4201B80440FFFE17
-:10F920008F820048AD0200008F420124AD02000426
-:10F930008D220020A5070008A102000A240200165B
-:10F94000A102000B934301208D2200088D240004A6
-:10F95000306300FF004310219783003A00441021D8
-:10F960008D250024004310233C0308008C6331A044
-:10F970008F840014A502000C246300E82402FFFF1A
-:10F98000A50A000EA5030010A5060012AD0500187B
-:10F99000AD020024948201142403FFF73042FFFFDC
-:10F9A000AD0200288C820118AD02002C3C02100030
-:10F9B000AD000030AF4201B88D220020004310247A
-:10F9C00003E00008AD2200208F82001430E7FFFF23
-:10F9D00000804821904200D330A5FFFF30C600FFD1
-:10F9E0000002110030420F0000E238252748018054
-:10F9F0008F4201B80440FFFE8F820048AD02000034
-:10FA00008F420124AD0200048D220020A5070008CA
-:10FA1000A102000A24020017A102000B9343012057
-:10FA20008D2200088D240004306300FF0043102164
-:10FA30009783003A004410218F8400140043102360
-:10FA40003C0308008C6331A0A502000CA505000E44
-:10FA5000246300E8A5030010A5060012AD00001401
-:10FA60008D220024AD0200188C82005CAD02001CC7
-:10FA70008C820058AD0200202402FFFFAD0200245A
-:10FA8000948200E63042FFFFAD02002894820060BD
-:10FA9000948300BE30427FFF3063FFFF00021200FC
-:10FAA00000431021AD02002C3C021000AD000030DC
-:10FAB000AF4201B8948200BE2403FFF700A21021D8
-:10FAC000A48200BE8D2200200043102403E0000821
-:10FAD000AD220020274301808F4201B80440FFFE81
-:10FAE0008F8200249442001C3042FFFF000211C0AC
-:10FAF000AC62000024020019A062000B3C0210005E
-:10FB0000AC60003003E00008AF4201B88F87002CE2
-:10FB100030C300FF8F4201B80440FFFE8F820048CF
-:10FB200034636000ACA2000093820044A0A20005F0
-:10FB30008CE20010A4A20006A4A300088C8200207E
-:10FB40002403FFF7A0A2000A24020002A0A2000BD7
-:10FB50008CE20000ACA200108CE20004ACA2001405
-:10FB60008CE2001CACA200248CE20020ACA2002895
-:10FB70008CE2002CACA2002C8C820024ACA20018D9
-:10FB80003C021000AF4201B88C82002000431024D8
-:10FB900003E00008AC8200208F86001427BDFFE838
-:10FBA000AFBF0014AFB0001090C20063304200201D
-:10FBB0001040000830A500FF8CC2007C2403FFDF4A
-:10FBC00024420001ACC2007C90C2006300431024B8
-:10FBD000A0C2006310A000238F830014275001806F
-:10FBE000020028210E0015D6240600828F82001400
-:10FBF000904200633042004050400019A38000440E
-:10FC00008F83002C8F4201B80440FFFE8F82004892
-:10FC1000AE02000024026082A60200082402000254
-:10FC2000A202000B8C620008AE0200108C62000C75
-:10FC3000AE0200148C620014AE0200188C62001830
-:10FC4000AE0200248C620024AE0200288C620028E0
-:10FC5000AE02002C3C021000AF4201B8A380004469
-:10FC60008F8300148FBF00148FB000109062006368
-:10FC700027BD00183042007FA06200639782003ADF
-:10FC80008F86003C8F850014938300280046102344
-:10FC9000A782003AA4A000E490A400638F820040F1
-:10FCA000AF83003C2403FFBF0046102100832024C3
-:10FCB000AF820040A0A400638F820014A04000BD6A
-:10FCC0008F82001403E00008A44000BE8F8A001455
-:10FCD00027BDFFE0AFB10014AFB000108F88003C2B
-:10FCE000AFBF00189389001C954200E430D100FF9B
-:10FCF0000109182B0080802130AC00FF3047FFFF46
-:10FD00000000582114600003310600FF012030215B
-:10FD1000010958239783003A0068102B1440003CD7
-:10FD20000000000014680007240200018E02002079
-:10FD30002403FFFB34E7800000431024AE020020C0
-:10FD40002402000134E70880158200053165FFFFB9
-:10FD50000E001554020020210A00169102002021F5
-:10FD60000E001585020020218F8400482743018062
-:10FD70008F4201B80440FFFE24020018AC6400006A
-:10FD8000A062000B8F840014948200E6A46200102D
-:10FD90003C021000AC600030AF4201B894820060B9
-:10FDA00024420001A4820060948200603C030800A9
-:10FDB0008C63318830427FFF5443000F02002021C2
-:10FDC000948200602403800000431024A482006019
-:10FDD0009082006090830060304200FF000211C2F8
-:10FDE00000021027000211C03063007F0062182556
-:10FDF000A083006002002021022028218FBF00186C
-:10FE00008FB100148FB000100A0015F927BD002033
-:10FE1000914200632403FF8000431025A142006348
-:10FE20009782003A3048FFFF110000209383001CA6
-:10FE30008F840014004B1023304600FF948300E4AD
-:10FE40002402EFFF0168282B00621824A48300E439
-:10FE500014A000038E020020010058210000302170
-:10FE60002403FFFB34E7800000431024AE0200208F
-:10FE700024020001158200053165FFFF0E001554B4
-:10FE8000020020210A0016B99783003A0E0015855A
-:10FE9000020020219783003A8F82003CA780003A1D
-:10FEA00000431023AF82003C9383001C8F82001418
-:10FEB0008FBF00188FB100148FB0001027BD002035
-:10FEC00003E00008A04300BD938200442403000126
-:10FED00027BDFFE8004330042C420020AFB00010E3
-:10FEE000AFBF00142410FFFE10400005274501801D
-:10FEF0003C0208008C4231900A0016D600461024BD
-:10FF00003C0208008C423194004610241440000743
-:10FF1000240600848F8300142410FFFF9062006287
-:10FF20003042000F34420040A06200620E0015D63D
-:10FF300000000000020010218FBF00148FB00010DD
-:10FF400003E0000827BD00188F83002427BDFFE0D1
-:10FF5000AFB20018AFB10014AFB00010AFBF001CBB
-:10FF60009062000D00A0902130D100FF3042007F50
-:10FF7000A062000D8F8500148E4300180080802140
-:10FF80008CA2007C146200052402000E90A2006383
-:10FF9000344200200A0016FFA0A200630E0016C51E
-:10FFA000A38200442403FFFF104300472404FFFF03
-:10FFB00052200045000020218E4300003C0200102A
-:10FFC00000621024504000043C020008020020217E
-:10FFD0000A00170E24020015006210245040000988
-:10FFE0008E45000002002021240200140E0016C5D8
-:10FFF000A38200442403FFFF104300332404FFFFC7
-:020000040001F9
-:100000008E4500003C02000200A2102410400016A1
-:100010003C0200048F8600248CC200148CC30010A4
-:100020008CC40014004310230044102B50400005E2
-:10003000020020218E43002C8CC2001010620003AD
-:10004000020020210A00173F240200123C02000493
-:1000500000A210245040001C00002021020020219A
-:100060000A00173F2402001300A2102410400006CB
-:100070008F8300248C620010504000130000202168
-:100080000A001739020020218C6200105040000441
-:100090008E42002C020020210A00173F240200118A
-:1000A00050400009000020210200202124020017F6
-:1000B0000E0016C5A38200442403FFFF1043000274
-:1000C0002404FFFF000020218FBF001C8FB2001806
-:1000D0008FB100148FB000100080102103E00008E1
-:1000E00027BD00208F83001427BDFFD8AFB40020A8
-:1000F000AFB3001CAFB20018AFB10014AFB0001026
-:10010000AFBF0024906200638F91002C2412FFFF88
-:100110003442004092250000A06200638E2200104D
-:100120000080982130B0003F105200060360A021EB
-:100130002402000D0E0016C5A38200441052005484
-:100140002404FFFF8F8300148E2200188C63007C30
-:1001500010430007026020212402000E0E0016C585
-:10016000A38200442403FFFF104300492404FFFF3F
-:1001700024040020120400048F83001490620063A2
-:1001800034420020A06200638F85003410A000205C
-:1001900000000000560400048F8200140260202139
-:1001A0000A0017902402000A9683000A9442006015
-:1001B0003042FFFF144300048F8200202404FFFD1F
-:1001C0000A0017B7AF82003C3C0208008C42318C19
-:1001D0000045102B14400006026020210000282159
-:1001E0000E001646240600010A0017B70000202161
-:1001F0002402002D0E0016C5A38200442403FFFF35
-:10020000104300232404FFFF0A0017B70000202139
-:10021000160400058F8400148E2300142402FFFFAF
-:100220005062001802602021948200602442000184
-:10023000A4820060948200603C0308008C633188D3
-:1002400030427FFF5443000F0260202194820060FF
-:100250002403800000431024A48200609082006088
-:1002600090830060304200FF000211C2000210279C
-:10027000000211C03063007F00621825A083006077
-:10028000026020210E0015F9240500010000202144
-:100290008FBF00248FB400208FB3001C8FB20018D2
-:1002A0008FB100148FB000100080102103E000080F
-:1002B00027BD00288F83001427BDFFE8AFB00010D2
-:1002C000AFBF0014906200638F87002C00808021F4
-:1002D000344200408CE60010A06200633C0308003A
-:1002E0008C6331B030C23FFF0043102B1040004EF2
-:1002F0008F8500302402FF8090A3000D004310245E
-:10030000304200FF504000490200202100061382C5
-:10031000304800032402000255020044020020215C
-:1003200094A2001C8F85001424030023A4A20114AE
-:100330008CE60000000616023042003F1043001019
-:100340003C0300838CE300188CA2007C1062000642
-:100350002402000E0E0016C5A38200442403FFFFF2
-:10036000104300382404FFFF8F8300149062006361
-:1003700034420020A06200630A0017FC8F8300242F
-:1003800000C31024144300078F83002490A200624E
-:100390003042000F34420020A0A20062A38800383F
-:1003A0008F8300249062000D3042007FA062000D18
-:1003B0008F83003410600018020020218F840030E9
-:1003C0008C8200100043102B1040000924020018FA
-:1003D000020020210E0016C5A38200442403FFFF63
-:1003E000104300182404FFFF0A00182400002021F5
-:1003F0008C820010240500010200202100431023FC
-:100400008F830024240600010E001646AC62001003
-:100410000A001824000020210E0015F9240500010F
-:100420000A00182400002021020020212402000DCF
-:100430008FBF00148FB0001027BD00180A0016C52A
-:10044000A38200448FBF00148FB0001000801021E1
-:1004500003E0000827BD001827BDFFC8AFB2002089
-:10046000AFBF0034AFB60030AFB5002CAFB400283A
-:10047000AFB30024AFB1001CAFB000188F46012805
-:100480003C0308008C6331A02402FF80AF86004843
-:1004900000C318213065007F03452821006218241D
-:1004A0003C02000AAF43002400A2282190A200626F
-:1004B00000809021AF850014304200FF000211023D
-:1004C000A382003890A200BC304200021440000217
-:1004D00024030034240300308F820014A3830028F7
-:1004E000938300388C4200C0A3800044AF82003C5C
-:1004F00024020004106203148F84003C8E44000424
-:10050000508003118F84003C8E4200103083FFFF27
-:10051000A784003A106002F7AF8200408F84001475
-:100520002403FF809082006300621024304200FFA9
-:10053000144002C79785003A9383003824020002D2
-:1005400030B6FFFF14620005000088219382002866
-:100550002403FFFD0A001B11AF82003C8F82003C88
-:1005600002C2102B144002998F8400400E0014EC3C
-:1005700000000000938300283C040800248477785E
-:10058000240200341462002EAF84002C3C0A0800C0
-:100590008D4A77A82402FFFFAFA200100080382107
-:1005A0002405002F3C09080025297378240800FF42
-:1005B0002406FFFF90E2000024A3FFFF00062202B2
-:1005C00000C21026304200FF0002108000491021B6
-:1005D0008C420000306500FF24E7000114A8FFF5FD
-:1005E0000082302600061027AFA20014AFA2001030
-:1005F0000000282127A7001027A6001400C51023FB
-:100600009044000324A2000100A71821304500FFF8
-:100610002CA200041440FFF9A06400008FA2001077
-:100620001142000724020005024020210E0016C5D9
-:10063000A38200442403FFFF104300642404FFFF4F
-:100640003C0208009042777C104000098F82001421
-:10065000024020212402000C0E0016C5A382004493
-:100660002403FFFF104300592404FFFF8F8200146E
-:10067000A380001C3C0308008C63777C8C440080C2
-:100680003C0200FF3442FFFF006218240083202B4D
-:1006900010800008AF83003402402021240200199A
-:1006A0000E0016C5A38200442403FFFF1043004739
-:1006B0002404FFFF8F87003C9782003A8F85003427
-:1006C000AF8700200047202310A0003BA784003AFA
-:1006D0008F86001430A200030002102390C300BCD8
-:1006E0003050000300B0282100031882307300014D
-:1006F0000013108000A228213C0308008C6331A065
-:100700008F8200483084FFFF0085202B004310219A
-:1007100010800011244200888F84002C1082000E6B
-:100720003C033F013C0208008C42777800431024D0
-:100730003C0325001443000630E500FF8C820000D6
-:10074000ACC200888C8200100A0018E9ACC2009884
-:100750000E001529000030219382001C8F850014A3
-:100760008F830040020238218F82003CA387001C47
-:1007700094A400E4006218218F82003434841000B5
-:10078000AF83004000503021A4A400E41260000EAA
-:10079000AF86003C24E20004A382001C94A200E483
-:1007A00024C30004AF83003C34422000A4A200E430
-:1007B0000A001906000020218F820040AF80003C13
-:1007C00000471021AF820040000020212414FFFFC9
-:1007D000109402092403FFFF3C0808008D08778865
-:1007E0003C0208008C4231B03C03080090637778EB
-:1007F00031043FFF0082102B1040001B3067003F88
-:100800003C0208008C4231A88F83004800042180FC
-:1008100000621821006418213062007F0342282101
-:100820003C02000C00A228213C020080344200015E
-:100830003066007800C230252402FF800062102458
-:10084000AF42002830640007AF4208048F820014D2
-:100850000344202124840940AF460814AF850024B6
-:10086000AF840030AC4301189383003824020003A6
-:10087000146201C7240200012402002610E201C90B
-:1008800028E2002710400013240200322402002234
-:1008900010E201C428E200231040000824020024D2
-:1008A0002402002010E201B02402002110E2013FE6
-:1008B000024020210A001AF32402000B10E201B9C1
-:1008C0002402002510E20010024020210A001AF341
-:1008D0002402000B10E201A628E2003310400006BB
-:1008E0002402003F2402003110E200920240202145
-:1008F0000A001AF32402000B10E2019D024020219D
-:100900000A001AF32402000B8F90002C3C0308000D
-:100910008C6331B08F8500308E0400100000A82158
-:100920008CB3001430823FFF0043102B8CB10020A9
-:10093000504001870240202190A3000D2402FF8037
-:1009400000431024304200FF50400181024020212A
-:1009500000041382304200031440017D0240202134
-:1009600094A3001C8F8200148E040028A443011459
-:100970008CA20010026218231064000302402021A0
-:100980000A00197C2402001F8F82003400621021AB
-:100990000262102B104000088F83002402402021A7
-:1009A000240200180E0016C5A38200441054016CE6
-:1009B0002404FFFF8F8300248F8400348C62001096
-:1009C0000224882100441023AC6200108F8200149E
-:1009D000AC7100208C4200680051102B10400009BF
-:1009E0008F830030024020212402001D0E0016C516
-:1009F000A38200442403FFFF104301592404FFFF96
-:100A00008F8300308E0200248C6300241043000783
-:100A1000024020212402001C0E0016C5A3820044BF
-:100A20002403FFFF1043014E2404FFFF8F840024A2
-:100A30008C82002424420001AC8200241233000482
-:100A40008F8200148C4200685622000E8E02000035
-:100A50008E0200003C030080004310241440000D6F
-:100A60002402001A024020210E0016C5A382004471
-:100A70002403FFFF1043013A2404FFFF0A0019BAC0
-:100A80008E0200143C0300800043102450400003F9
-:100A90008E020014AC8000208E0200142411FFFF8F
-:100AA000105100062402001B024020210E0016C532
-:100AB000A38200441051012A2404FFFF8E0300008A
-:100AC0003C02000100621024104000123C02008031
-:100AD0000062102414400008024020212402001A61
-:100AE0000E0016C5A38200442403FFFF1043011C1F
-:100AF0002404FFFF02402021020028210E0016E5F9
-:100B0000240600012403FFFF104301152404FFFF06
-:100B1000241500018F83002402A0302102402021EF
-:100B20009462003624050001244200010A001AD70D
-:100B3000A46200368F90002C3C0308008C6331B017
-:100B40008E13001032623FFF0043102B10400089CB
-:100B50008F8400302402FF809083000D0043102416
-:100B6000304200FF104000842402000D0013138265
-:100B700030420003240300011443007F2402000DCF
-:100B80009082000D30420008544000048F820034EF
-:100B9000024020210A001A082402002450400004C8
-:100BA0008E03000C024020210A001A0824020027AC
-:100BB0008C82002054620006024020218E0300082F
-:100BC0008C820024506200098E0200140240202111
-:100BD000240200200E0016C5A382004410540071A8
-:100BE0002403FFFF0A001A3D8F8400242411FFFF15
-:100BF000145100048F860014024020210A001A3884
-:100C0000240200258E0300188CC2007C10620003B1
-:100C10002402000E0A001A38024020218E0300240C
-:100C20008C82002810620003240200210A001A3876
-:100C3000024020218E0500288C82002C10A2000387
-:100C40002402001F0A001A38024020218E03002CC3
-:100C500014600003240200230A001A3802402021F5
-:100C60008CC200680043102B1040000324020026B1
-:100C70000A001A38024020218C82001400651821D5
-:100C80000043102B104000088F84002402402021D4
-:100C9000240200220E0016C5A38200441051004118
-:100CA0002403FFFF8F8400242403FFF79082000DAC
-:100CB00000431024A082000D8F8600143C0308001E
-:100CC0008C6331AC8F82004894C400E08F8500248F
-:100CD0000043102130847FFF000420400044102195
-:100CE0003043007F034320213C03000E008320217A
-:100CF0002403FF8000431024AF42002CA493000083
-:100D00008CA2002824420001ACA200288CA2002C56
-:100D10008E03002C00431021ACA2002C8E02002C6C
-:100D2000ACA200308E020014ACA2003494A2003AAF
-:100D300024420001A4A2003A94C600E03C0208004C
-:100D40008C4231B024C4000130837FFF1462000F55
-:100D500000803021240280000082302430C2FFFF56
-:100D6000000213C2304200FF000210270A001A7668
-:100D7000000233C02402000D024020210E0016C5DF
-:100D8000A38200440A001A7C004018218F820014BC
-:100D900002402021240500010E0015F9A44600E0C0
-:100DA000000018210A001B0E006088218F90002C83
-:100DB0003C0308008C6331B08E05001030A23FFF69
-:100DC0000043102B104000612402FF808F8400300C
-:100DD0009083000D00431024304200FF5040005C1F
-:100DE000024020218F8200341040000B0005138246
-:100DF0008F8200149763000A944200603042FFFF24
-:100E000014430005000513828F8200202404FFFD97
-:100E10000A001AEBAF82003C304200031440000E7F
-:100E20000000000092020002104000058E03002422
-:100E300050600015920300030A001AA70240202107
-:100E40008C82002450620010920300030240202193
-:100E50000A001AAF2402000F9082000D30420008F1
-:100E60005440000992030003024020212402001094
-:100E70000E0016C5A38200442403FFFF1043003870
-:100E80002404FFFF92030003240200025462000CBA
-:100E9000920200038F820034544000099202000342
-:100EA000024020212402002C0E0016C5A38200441B
-:100EB0002403FFFF1043002A2404FFFF92020003D3
-:100EC0000200282102402021384600102CC60001D3
-:100ED0002C4200010E0016E5004630252410FFFFCD
-:100EE0001050001F2404FFFF8F8300341060001394
-:100EF000024020213C0208008C42318C0043102B20
-:100F00001440000700000000000028212406000112
-:100F10000E001646000000000A001AEB0000202117
-:100F20002402002D0E0016C5A38200441050000CB0
-:100F30002404FFFF0A001AEB000020210E0015F91F
-:100F4000240500010A001AEB0000202102402021A4
-:100F50002402000D0E0016C5A3820044004020218B
-:100F60000A001B0E008088211514000E00000000EE
-:100F70000E00174C024020210A001B0E0040882161
-:100F80000E0016C5A38200440A001B0E00408821F3
-:100F900014620017022018212402002314E2000525
-:100FA0002402000B0E0017C0024020210A001B0E75
-:100FB0000040882102402021A38200440E0016C573
-:100FC0002411FFFF0A001B0F0220182130A500FF8B
-:100FD0000E001529240600019783003A8F82003CF9
-:100FE000A780003A00431023AF82003C0220182162
-:100FF0001220003E9782003A2402FFFD5462003E18
-:101000008E4300208E4200048F830014005610236C
-:10101000AE420004906200633042007FA062006331
-:101020008E4200208F840014A780003A34420002D0
-:10103000AE420020A48000E4908200632403FFBF3E
-:1010400000431024A08200630A001B518E4300203D
-:101050009082006300621024304200FF10400023A1
-:101060009782003A90820088908300BD2485008892
-:101070003042003F2444FFE02C820020A383001C68
-:1010800010400019AF85002C2402000100821804D2
-:10109000306200191440000C3C028000344200020F
-:1010A000006210241440000B306200201040000F3A
-:1010B0009782003A90A600010240202124050001F9
-:1010C0000A001B4B30C60001024020210A001B4AC7
-:1010D00024050001024020210000282124060001EF
-:1010E0000E001646000000009782003A1440FD0CE6
-:1010F0008F8400148E4300203062000410400012E0
-:101100008F84003C2402FFFB00621024AE420020CA
-:10111000274301808F4201B80440FFFE8F820048C0
-:10112000AC6200008F420124AC62000424026083A0
-:10113000A462000824020002A062000B3C0210001E
-:10114000AF4201B88F84003C8F8300148FBF0034FE
-:101150008FB600308FB5002C8FB400288FB30024D9
-:101160008FB200208FB1001C8FB000182402000144
-:1011700027BD003803E00008AC6400C030A500FFC4
-:101180002403000124A900010069102B1040000C69
-:1011900000004021240A000100A31023004A380463
-:1011A00024630001308200010069302B10400002EE
-:1011B000000420420107402554C0FFF800A310237B
-:1011C00003E00008010010213C020800244260A452
-:1011D0003C010800AC22736C3C0208002442530816
-:1011E0003C010800AC2273702402000627BDFFE01A
-:1011F0003C010800A02273743C021EDCAFB2001850
-:10120000AFB10014AFBF001CAFB0001034526F413B
-:1012100000008821240500080E001B7202202021F6
-:10122000001180803C07080024E773780002160054
-:1012300002071821AC6200000000282124A200014E
-:101240003045FFFF8C6200002CA60008044100021C
-:10125000000220400092202614C0FFF8AC64000079
-:10126000020780218E0400000E001B72240500205E
-:10127000262300013071FFFF2E2301001460FFE5DB
-:10128000AE0200008FBF001C8FB200188FB1001497
-:101290008FB0001003E0000827BD002027BDFFD855
-:1012A000AFB3001CAFB20018AFBF0020AFB1001445
-:1012B000AFB000108F5101408F48014800089402E0
-:1012C000324300FF311300FF8F4201B80440FFFE9C
-:1012D00027500180AE1100008F420144AE0200048D
-:1012E00024020002A6120008A202000B240200142D
-:1012F000AE1300241062002528620015104000087B
-:101300002402001524020010106200302402001292
-:10131000106200098FBF00200A001CAD8FB3001CB3
-:101320001062007024020022106200378FBF00207C
-:101330000A001CAD8FB3001C3C0208008C4231A097
-:101340002403FF800222102100431024AF42002416
-:101350003C0208008C4231A0022210213042007F62
-:10136000034218213C02000A00621821166000BCEA
-:10137000AF830014906200623042000F34420030AC
-:10138000A06200620A001CAC8FBF00203C04600019
-:101390008C832C083C02F0033442FFFF00621824C7
-:1013A000AC832C083C0208008C4231A08C832C08B2
-:1013B000244200740002108200021480006218258A
-:1013C000AC832C080A001CAC8FBF00203C02080034
-:1013D0008C4231A02403FF800222102100431024FC
-:1013E000AF4200243C0208008C4231A03C03000ABA
-:1013F000022210213042007F0342102100431021BD
-:101400000A001CABAF8200143C0208008C4231A0E1
-:101410002405FF800222102100451024AF42002441
-:101420003C0208008C4231A0022210213042007F91
-:10143000034218213C02000A0062182190620063F6
-:1014400000A21024304200FF10400085AF8300143A
-:1014500024620088944300123C0208008C4231A8A8
-:1014600030633FFF00031980022210210043102146
-:101470003043007F03432021004510243C03000C2F
-:1014800000832021AF4200289082000D00A210248A
-:10149000304200FF10400072AF8400249082000DA3
-:1014A000304200101440006F8FBF00200E0015C89E
-:1014B000000000008F4201B80440FFFE0000000061
-:1014C000AE1100008F420144AE020004240200026B
-:1014D000A6120008A202000BAE1300240A001CACE6
-:1014E0008FBF00202406FF8002261024AF42002078
-:1014F0003C0208008C4231A031043FFF00042180EF
-:101500000222102100461024AF4200243C030800B0
-:101510008C6331A83C0208008C4231A03227007F46
-:101520000223182102221021006418213042007F7A
-:101530003064007F034228213C02000A0066182420
-:1015400000A22821034420213C02000C008220211B
-:10155000AF4300283C020008034718210062902195
-:10156000AF850014AF8400240E0015C8010080214F
-:101570008F4201B80440FFFE8F8200248F84001444
-:10158000274501809042000DACB10000A4B00006D8
-:10159000000216000002160300021027000237C2E4
-:1015A00014C00016248200889442001232033FFFC8
-:1015B00030423FFF14430012240260829083006394
-:1015C0002402FF8000431024304200FF5040000CF2
-:1015D00024026082908200623042000F3442004058
-:1015E000A082006224026084A4A200082402000DEC
-:1015F000A0A200050A001C963C022700240260827B
-:10160000A4A20008A0A000053C02270000061C00C0
-:101610000062182524020002A0A2000BACA3001057
-:10162000ACA00014ACA00024ACA00028ACA0002CFE
-:101630008E42004C8F840024ACA200189083000DD1
-:101640002402FF8000431024304200FF10400005B8
-:101650008FBF00209082000D3042007FA082000DDD
-:101660008FBF00208FB3001C8FB200188FB1001401
-:101670008FB000103C02100027BD002803E00008D6
-:04168000AF4201B8BC
-:0C1684000800343008003430080033A89F
-:10169000080033E0080034140800343808003438F7
-:0816A00008003438080033187B
-:0816A8000A000124000000000B
-:1016B000000000000000000D747061362E322E31E3
-:1016C0000000000006020101000000000000000010
-:1016D000000000000000000000000000000000000A
-:1016E00000000000000000000000000000000000FA
-:1016F00000000000000000000000000000000000EA
-:1017000000000000000000000000000000000000D9
-:1017100000000000000000000000000000000000C9
-:1017200000000000000000000000000000000000B9
-:101730000000000000000000000000001000000396
-:10174000000000000000000D0000000D3C02080039
-:1017500024421C003C03080024632094AC40000099
-:101760000043202B1480FFFD244200043C1D080090
-:1017700037BD2FFC03A0F0213C1008002610049078
-:101780003C1C0800279C1C000E00015C00000000AF
-:101790000000000D3084FFFF308200078F850018A5
-:1017A00010400002248300073064FFF800853021D8
-:1017B00030C41FFF03441821247B4000AF85001C68
-:1017C000AF84001803E00008AF4400843084FFFFBA
-:1017D000308200078F8500208F860028104000028D
-:1017E000248300073064FFF8008520210086182B31
-:1017F00014600002AF8500240086202303442821C2
-:1018000034068000AF840020AF44008000A6202171
-:1018100003E00008AF84003827BDFFD8AFB3001C39
-:10182000AFB20018AFB00010AFBF0024AFB40020BB
-:10183000AFB100143C0860088D1450002418FF7FDD
-:101840003C1A8000029898243672380CAD12500071
-:101850008F5100083C07601C3C08600036300001D6
-:10186000AF500008AF800018AF400080AF40008448
-:101870008CE600088D0F08083C0760168CEC000011
-:1018800031EEFFF039CA00103C0DFFFF340B800031
-:101890003C030080034B48212D440001018D282486
-:1018A0003C0253533C010800AC230420AF890038AC
-:1018B000AF860028AF840010275B400014A200030D
-:1018C00034E37C008CF90004032818218C7F007C11
-:1018D0008C6500783C0280003C0B08008D6B048C0A
-:1018E0003C0A08008D4A048834520070AF85003CE1
-:1018F000AF9F00403C13080026731C440240A02107
-:101900008E4800008F46000038C30001306400019B
-:1019100010800017AF880034028048218D2F00000E
-:101920003C0508008CA5045C3C1808008F1804587E
-:1019300001E8102300A280210000C8210202402BF0
-:1019400003198821022838213C010800AC30045CCE
-:101950003C010800AC2704588F4E000039CD00012F
-:1019600031AC00011580FFED01E04021AF8F003464
-:101970008E5100003C0708008CE7045C3C0D080019
-:101980008DAD04580228802300F0602100007021F2
-:101990000190302B01AE1821006620213C01080087
-:1019A000AC2C045C3C010800AC2404588F460108B0
-:1019B0008F47010030C92000AF860000AF87000CC0
-:1019C0001120000A00C040213C1808008F18042C88
-:1019D000270800013C010800AC28042C3C184000FA
-:1019E000AF5801380A000196000000009749010431
-:1019F00000002821014550213122FFFF01625821BA
-:101A00000162F82B015F502130D902003C0108002F
-:101A1000AC2B048C3C010800AC2A0488172000156C
-:101A200024040F0010E400130000000024080D003F
-:101A300010E8023B30CD000611A0FFE93C18400041
-:101A4000936E00002409001031C400F01089027167
-:101A500024020070108202E58F880014250F000117
-:101A6000AF8F00143C184000AF5801380A000196AF
-:101A700000000000974C01041180FFD93C18400081
-:101A800030C34000146000A1000000008F460178C0
-:101A900004C0FFFE8F87003824100800240F0008C0
-:101AA0008CE30008AF500178A74F0140A7400142E6
-:101AB000974E01048F86000031C9FFFF30CD000131
-:101AC00011A002E1012040212531FFFE241800026F
-:101AD000A75801463228FFFFA75101483C190800CA
-:101AE0008F39043C172002D08F8C000C30DF00208F
-:101AF00017E00002240400092404000130C20C0095
-:101B0000240504005045000134840004A744014A20
-:101B10003C1108008E3104203C1800483C100001A4
-:101B20000238182530CF00020070282511E000048B
-:101B3000000018213C19010000B9282524030001E8
-:101B400030DF000453E00005AF8300083C060010BE
-:101B500000A6282524030001AF830008AF4510002C
-:101B60000000000000000000000000000000000075
-:101B70008F83000810600023000000008F451000D4
-:101B800004A1FFFE000000001060001E0000000025
-:101B90008F4410003C0C0020008C102410400019D1
-:101BA0008F8E000031CD000211A000160000000051
-:101BB000974F101415E0001300000000975910080B
-:101BC0003338FFFF27110006001118820003308010
-:101BD00000C7282132300001322300031200032CF9
-:101BE0008CA200000000000D00C7F821AFE2000049
-:101BF0003C0508008CA5043024A600013C01080027
-:101C0000AC2604308F6D00003402FFFFAF8D00045E
-:101C10008CEC0000118202A6000020218CED000057
-:101C200031AC01001180028A000000003C02080073
-:101C30008C4204743C0308008C63044C3C1F080075
-:101C40008FFF04703C1808008F18044800483821A2
-:101C50000068802100E8282B03E430210208402B93
-:101C60000304882100C57021022878213C01080066
-:101C7000AC30044C3C010800AC2F04483C01080087
-:101C8000AC2704743C010800AC2E04708F8400184B
-:101C90000120302131290007249F000833F91FFF5C
-:101CA00003594021AF84001CAF990018251B400048
-:101CB000AF590084112000038F83002024C2000745
-:101CC0003046FFF88F84002800C3282100A4302B61
-:101CD00014C00002AF83002400A428230345602120
-:101CE000340D8000018D10213C0F1000AF850020C5
-:101CF000AF820038AF450080AF4F01788F88001465
-:101D0000250F00010A0001EFAF8F00148F62000859
-:101D10008F670000240500300007760231C300F011
-:101D2000106500A7240F0040546FFF4C8F880014EB
-:101D30008F4B01780560FFFE0000000030CA0200F2
-:101D400015400003000612820000000D00061282FA
-:101D5000304D0003000D4900012D18210003808043
-:101D6000020D402100086080019380218E1F000039
-:101D700017E00002000000000000000D8F6E00045C
-:101D800005C202BD92070006920E000592020004F1
-:101D90003C090001000E18800070F8218FED00183A
-:101DA000277100082448000501A96021000830823D
-:101DB000AFEC0018022020210E00059E260500141D
-:101DC000920A00068F7900043C0B7FFF000A2080F6
-:101DD000009178218DF800043566FFFF0326282442
-:101DE00003053821ADE70004920E0005920D0004B2
-:101DF000960C0008000E10800051C8218F230000AF
-:101E0000974901043C07FFFF006758243128FFFF72
-:101E1000010DF82103EC50233144FFFF016430250C
-:101E2000AF26000092030007241800011078027505
-:101E3000240F0003106F0285000000008E050010C3
-:101E40002419000AA7590140A7450142921800042D
-:101E50008F860000240F0001A7580144A7400146C7
-:101E60009747010430D100023C050041A7470148D3
-:101E700000001821A74F014A1220000330CB0004B4
-:101E80003C0501412403000151600005AF830008B7
-:101E90003C06001000A6282524030001AF8300089B
-:101EA000AF4510000000000000000000000000002E
-:101EB000000000008F8A00081140000400000000AC
-:101EC0008F4410000481FFFE000000008F6B0000B3
-:101ED000920800043C1108008E310444AF8B0004CA
-:101EE00097590104311800FF3C0E08008DCE0440C4
-:101EF0003325FFFF03053821022760210000102150
-:101F0000250F000A31E8FFFF0187482B01C2682135
-:101F100001A9F821311000073C010800AC2C044451
-:101F20003C010800AC3F0440120000038F8C0018F5
-:101F30002506000730C8FFF8010C682131BF1FFFDC
-:101F4000AF8C001CAF9F0018AF5F00849744010462
-:101F5000035F80213084FFFF308A000711400003B7
-:101F6000261B4000248900073124FFF88F820020BF
-:101F70008F850028008220210085702B15C000026B
-:101F8000AF820024008520233C0B08008D6B048C5D
-:101F90003C0A08008D4A04880344882134038000E9
-:101FA000022310213C0F1000AF840020AF820038C4
-:101FB000AF440080AF4F01780A0002968F8800146A
-:101FC0008F5001780600FFFE30D10200162000037A
-:101FD000000612820000000D00061282305F00032E
-:101FE000001F1900007F302100062080009FC821BB
-:101FF00000194880013380218E1800001300000270
-:10200000000000000000000D8F6C000C058001FB3B
-:102010008F870038240E0001AE0E00008CE300080C
-:10202000A20000078F65000400055402314D00FF37
-:1020300025A80005000830822CCB00411560000265
-:10204000A20A00040000000D8F7800043C03FFFF8B
-:1020500000E02821330BFFFF256C000B000C1082E1
-:1020600000022080008748218D3F000026040014D4
-:10207000A618000803E3C8240E00059EAD39000031
-:102080008F4F01083C11100001F1382410E001AB22
-:1020900000000000974D01049208000725AAFFECFC
-:1020A000350600023144FFFFA2060007960600082D
-:1020B0002CC7001354E0000592030007921100079B
-:1020C000362F0001A20F0007920300072418000119
-:1020D000107801C224090003106901D58F880038E7
-:1020E00030CBFFFF257100020011788331E400FF3F
-:1020F00000042880A20F000500A848218D2D0000B3
-:10210000974A01043C0EFFFF01AEF8243143FFFF64
-:10211000006B1023244CFFFE03ECC825AD390000F2
-:10212000920600053C03FFF63462FFFF30D800FF43
-:102130000018388000F08821922F00143C04FF7FA3
-:102140003487FFFF31EE000F01C65821316500FFD3
-:1021500000055080015068218DAC00200148F82115
-:10216000A20B00060182C824AE0C000CAFF9000CD3
-:10217000920900068E11000C032778240009C08004
-:102180000310702195C60026030828210227202469
-:10219000AE04000CADCF0020ADC60024ACA60010EC
-:1021A0008F8800003C0B08008D6B048C3C0A0800F3
-:1021B0008D4A0488241F001024190002A75F0140E3
-:1021C000A7400142A7400144A7590146974901048D
-:1021D00024070001310600022538FFFEA7580148F8
-:1021E0003C050009A747014A10C000030000182160
-:1021F0003C05010924030001310C00045180000555
-:10220000AF8300083C08001000A828252403000123
-:10221000AF830008AF451000000000000000000080
-:1022200000000000000000009205000424AE00023F
-:1022300031CD0007000D182330620007AE020010F8
-:102240008F90000812000004000000008F4F100063
-:1022500005E1FFFE000000008F7100008F8E001866
-:102260003C0308008C630444AF91000497450104CB
-:1022700025CF001031E61FFF30A2FFFFAF8E001CFC
-:10228000AF860018AF4600842449FFFE3C0C0800CE
-:102290008D8C0440974D010401208021000947C323
-:1022A0000070C02131A9FFFF0310F82B0188C8215D
-:1022B000033F202103463821313100073C0108004B
-:1022C000AC3804443C010800AC2404401220000354
-:1022D00024FB40002527000730E9FFF88F86002007
-:1022E0008F8400280126382100E4C02B170000024B
-:1022F000AF86002400E438230347202134198000EE
-:10230000009910213C0F1000AF870020AF820038E9
-:10231000AF470080AF4F01780A0002968F88001403
-:102320009747010410E0FDAE3C1840008F5801783B
-:102330000700FFFE30C5400010A000033C1F00084E
-:102340000000000D3C1F0008AF5F01402410080092
-:102350008F860000AF5001789744010430D9000106
-:10236000132000ED3086FFFF24CCFFFE240D000279
-:10237000A74D0146A74C01488F9100182408000D75
-:10238000A748014A8F630000262F000831E21FFF93
-:102390000342702130C90007AF830004AF91001CD5
-:1023A000AF82001800C03821AF4200841120000322
-:1023B00025DB400024D800073307FFF88F85002075
-:1023C0008F84002800E5302100C4382B14E000027F
-:1023D000AF85002400C430238F8400140346F82105
-:1023E000340C8000AF86002003EC8021AF460080D3
-:1023F000249900013C0610003C184000AF460178CB
-:10240000AF900038AF990014AF5801380A00019618
-:10241000000000008F630000975101043067FFFF48
-:102420003228FFFF8F4F017805E0FFFE30EC0007F8
-:10243000000CF82333F0000724F9FFFE2404000AFF
-:10244000A7440140A7500142A7590144A7400146B3
-:10245000A74801488F45010830B800201700000246
-:10246000240300092403000130CD0002A743014AE0
-:102470003C04004111A00003000018213C0401416C
-:102480002403000130C9000451200005AF83000877
-:102490003C0600100086202524030001AF830008BD
-:1024A000AF44100000000000000000000000000029
-:1024B000000000008F8E000811C000040000000022
-:1024C0008F4210000441FFFE000000008F7F0000DB
-:1024D000276400088F91003CAF9F0004948500089A
-:1024E0009490000A9499000C30AFFFFF0010C400D4
-:1024F0003323FFFF11F100A6030320253C0E080043
-:102500008DCE04443C0C08008D8C044000E88821EA
-:102510002626FFFE01C628210000682100A6F82B10
-:10252000018D2021009F80213C010800AC2504443E
-:102530003C010800AC30044024E200083042FFFFB8
-:102540003047000710E000038F830018244F000776
-:1025500031E2FFF83106FFFF30C800070043802159
-:1025600032191FFF0359C021AF83001CAF99001817
-:10257000271B4000AF590084110000038F8C0020FE
-:1025800024C5000730A6FFF88F84002800CC28213E
-:1025900000A4F82B17E00002AF8C002400A428232D
-:1025A000AF850020AF4500803C0408008C840434D3
-:1025B00003454821340E8000012E6821108000055B
-:1025C000AF8D0038939100172406000E12260011DB
-:1025D0002407043F3C021000AF4201788F880014AA
-:1025E000250F00010A0001EFAF8F00140E0005C493
-:1025F00000E020218F8800143C0B08008D6B048CB8
-:102600003C0A08008D4A0488250F00010A0001EFEA
-:10261000AF8F00143C021000A7470148AF42017879
-:102620000A0004CE8F88001424040F001184003D9A
-:1026300030CE002015C0000224030009240300014D
-:102640000A00021AA743014A0A00020DA7400146E8
-:1026500094EF000894F1000A94F0000C8F8C003C79
-:10266000001174003207FFFF31EDFFFF11AC00379E
-:1026700001C720253C1808008F1804443C0F0800AF
-:102680008DEF0440000080210308682101A8382B49
-:1026900001F0702101C760213C010800AC2D044409
-:1026A0003C010800AC2C04400A00027A8F84001818
-:1026B0003C0208008C42047C3C0308008C630454F8
-:1026C0003C1F08008FFF04783C1808008F18045046
-:1026D000004838210068802100E8282B03E43021DD
-:1026E0000208402B0304882100C5702102287821AC
-:1026F0003C010800AC3004543C010800AC2F0450ED
-:102700003C010800AC27047C3C010800AC2E047896
-:102710000A00027A8F840018A74001460A00043597
-:102720008F91001830CD002015A0FFC52403000DA7
-:10273000240300050A00021AA743014A974E010428
-:1027400025C5FFF00A00038130A4FFFF8F980040E9
-:102750001498FFC8000010213C0508008CA5046CEB
-:102760003C1F08008FFF046800A8C8210328302BF5
-:1027700003E22021008640213C010800AC39046CB2
-:102780003C010800AC2804680A00027A8F84001813
-:102790008F8C0040148CFF5900E8C8213C180800B9
-:1027A0008F18046C3C1108008E3104682723FFFE4B
-:1027B00003034821000010210123302B0222702145
-:1027C00001C668213C010800AC29046C3C010800EA
-:1027D000AC2D04680A0004A524E200088F880038A4
-:1027E0003C03FFFF8D02000C0043F82403E4C825DE
-:1027F000AD19000C0A00038F30CBFFFF0A0003C3A2
-:10280000AE000000974A0104920400048E26000CDA
-:10281000014458212579FFF200C7C0243325FFFF6A
-:1028200003053825AE27000C0A0002E68E050010CD
-:102830003C0DFFFF8D0A0010014D582401646025F6
-:10284000AD0C00100A00038F30CBFFFF974301044B
-:10285000920E00048E290010006E1021244DFFEE10
-:102860000127602431A8FFFF0188F825AE3F001042
-:102870000A0002E68E0500108E0F000CAE0000006C
-:1028800000078880023028210A0002B8ACAF00207F
-:102890001460000D3058FFFF3C04FFFF0044682423
-:1028A00001A47026000E602B000D102B004CF824A4
-:1028B00013E00002000000000000000D8CAF0000DB
-:1028C0000A00025001E410253B03FFFF0003882BA0
-:1028D0000018802B0211202410800002000000004C
-:1028E0000000000D8CB900000A0002503722FFFFE3
-:1028F0003084FFFF30A5FFFF108000070000182183
-:1029000030820001104000020004204200651821BE
-:102910001480FFFB0005284003E000080060102140
-:1029200010C00007000000008CA2000024C6FFFFBA
-:1029300024A50004AC82000014C0FFFB2484000422
-:1029400003E000080000000010A0000824A3FFFF1F
-:10295000AC86000000000000000000002402FFFF21
-:102960002463FFFF1462FFFA2484000403E00008DC
-:1029700000000000308EFFFF30D8FFFF00057C0014
-:1029800001F8602539CDFFFF01AC5021014C582BD7
-:10299000014B4821000944023127FFFF00E83021A4
-:1029A0000006240230C5FFFF00A418213862FFFF93
-:1029B00003E000083042FFFF3C0C08008D8C0484CB
-:1029C000240BFF8027BDFFD001845021014B4824F8
-:1029D000AF4900203C0808008D080484AFB20020F5
-:1029E000AFB00018AFBF0028AFB30024AFB1001CD8
-:1029F000936600040104382130E4007F009A10211E
-:102A00003C0300080043902130C500200360802172
-:102A10003C080111277B000814A000022646007024
-:102A20002646006C9213000497510104920F000493
-:102A30003267000F322EFFFF31ED004001C728231F
-:102A400011A0000500004821925900BC3338000451
-:102A50001700009000000000924300BC307F00048B
-:102A600013E0000F0000000010A0000D00000000A7
-:102A7000960E0002240AFF8000A7602125CDFFFEEC
-:102A8000A74D1016920B0004014B2024308200FF4A
-:102A900010400085010C40253C0F0400010F40252B
-:102AA0008F5301780660FFFE2404000AA74401400A
-:102AB000960D00022404000931AC0007000C5823D5
-:102AC000316A0007A74A0142960200022443FFFE32
-:102AD000A7430144A7400146975F0104A75F01484F
-:102AE0008F590108333800205300000124040001ED
-:102AF000920F000431EE001015C000023483001064
-:102B000000801821A743014A0000000000000000D7
-:102B10000000000000000000AF48100000000000AE
-:102B20000000000000000000000000008F511000B5
-:102B30000621FFFE3113FFFF1260000300000000BA
-:102B40008F481018ACC8000096030006307FFFFFC6
-:102B500027F900020019988200138880023B302177
-:102B60008CD800001520005700183402920300048E
-:102B70002405FF8000A3F82433F100FF1220002C6D
-:102B800000000000924700BC30F200021240002812
-:102B900000000000974B100C2562FFFEA7421016A4
-:102BA000000000003C0A040035490030AF49100025
-:102BB0000000000000000000000000000000000015
-:102BC0008F4C10000581FFFE000000009749100C9B
-:102BD0008F51101C00C020213127FFFF24F200304C
-:102BE000001218820003288000BBF8213226FFFF64
-:102BF000AFF100000E0005B300112C020013C880D5
-:102C0000033B98218E78000000027400AFB80010DA
-:102C10008FA80010310FFFFFAFAF00108FA400107E
-:102C200001C46825AFAD00108FA60010AE6600008D
-:102C300097730008976D000A9766000C8F8A003C16
-:102C4000000D5C0030CCFFFF3262FFFF104A0036FF
-:102C5000016C2025960600023C10100024D30008C9
-:102C60000E00013B3264FFFF974C01040E00014946
-:102C70003184FFFFAF5001788FBF00288FB300244D
-:102C80008FB200208FB1001C8FB0001803E0000845
-:102C900027BD003010A0FF700000000024A5FFFC3D
-:102CA0000A0005EC240900048CD10000AF51101873
-:102CB0008F5301780660FF7A2404000A0A00060197
-:102CC0000000000000A7C8218F8800388F4E101C1C
-:102CD0000019C0820018788001E82021AC8E000025
-:102CE000000E2C0200C020210E0005B331C6FFFFEC
-:102CF000023B28218CAD000000025400004030212E
-:102D0000AFAD00108FAC0010318BFFFFAFAB0010E8
-:102D10008FA2001001424825AFA900108FA7001014
-:102D20000A000631ACA700008F8F0040148FFFC946
-:102D30000000000097420104960B00023C050800C9
-:102D40008CA5046C3049FFFF316AFFFF3C1108007D
-:102D50008E310468012A382124F2FFFE00B240219E
-:102D60000012FFC30112C82B023FC021031920210A
-:102D70003C010800AC28046C3C010800AC24046849
-:102D80000A00066B0000000000A4102B1040000990
-:102D9000240300010005284000A4102B04A0000318
-:102DA000000318405440FFFC000528401060000755
-:102DB000000000000085302B14C000020003184200
-:102DC000008520231460FFFB0005284203E0000873
-:102DD000008010218F85002C27BDFFE800053027DB
-:102DE0002CC300012CA40002008310251040000316
-:102DF000AFBF00102405007FAF85002C00052827F9
-:102E000030A5FFFF0E000592240426F58F830030C5
-:102E1000240402BD004030210083382B10E000095B
-:102E200024050001000420400083102B04800003CF
-:102E3000000528405440FFFC0004204010A000087A
-:102E400000C350210064402B1500000200052842F9
-:102E50000064182314A0FFFB0004204200C350218B
-:102E60008FBF0010000A4C02312200FF27BD00185E
-:0C2E7000AF8A002C03E00008AF8900309E
-:042E7C000A00002A1E
-:102E800000000000000000000000000D74787036A3
-:102E90002E322E310000000006020100000000006A
-:102EA000000001360000EA600000000000000000A1
-:102EB0000000000000000000000000000000000012
-:102EC0000000000000000000000000000000000002
-:102ED00000000000000000000000000000000016DC
-:102EE00000000000000000000000000000000000E2
-:102EF00000000000000000000000000000000000D2
-:102F000000000000000000000000000000000000C1
-:102F1000000000000000138800000000000005DC35
-:102F2000000000000000000010000003000000008E
-:102F30000000000D0000000D3C02080024423C206F
-:102F40003C03080024633DD4AC4000000043202B28
-:102F50001480FFFD244200043C1D080037BD7FFCA7
-:102F600003A0F0213C100800261000A83C1C08001B
-:102F7000279C3C200E0002BA000000000000000D5B
-:102F80008F8300383C088000350700708CE5000016
-:102F9000008330253C02900000C22025AF85003020
-:102FA000AF4400208F4900200520FFFE3C03800035
-:102FB000346200708C4500008F8600303C19080098
-:102FC0008F39007C3C0E08008DCE007800A62023AF
-:102FD00003245821000078210164682B01CF60216F
-:102FE000018D50213C010800AC2B007C3C01080005
-:102FF000AC2A007803E00008000000000A0000414D
-:10300000240400018F8400383C05800034A20001B4
-:103010000082182503E00008AF43002003E0000809
-:10302000000010213084FFFF30A5FFFF1080000753
-:1030300000001821308200011040000200042042EC
-:10304000006518211480FFFB0005284003E00008FC
-:103050000060102110C00007000000008CA20000DA
-:1030600024C6FFFF24A50004AC82000014C0FFFBAF
-:103070002484000403E000080000000010A0000801
-:1030800024A3FFFFAC860000000000000000000049
-:103090002402FFFF2463FFFF1462FFFA248400046C
-:1030A00003E0000800000000308AFFFF93A800132F
-:1030B000A74A014497490E1630C600FF3C02100093
-:1030C000A7490146AF450148A3460152A748015A06
-:1030D000AF4701608FA400188FA30014A7440158C4
-:1030E000AF43015403E00008AF42017803E0000859
-:1030F000000000003C038000346200708C49000036
-:103100008F8800002484000727BDFFF83084FFF873
-:10311000AF890030974D008A31ACFFFFAFAC0000A3
-:103120008FAB0000016850232547FFFF30E61FFFEB
-:1031300000C4282B14A0FFF73C0C8000358B0070D6
-:103140008D6A00003C0708008CE700843C060800FC
-:103150008CC6008000081082014918230002788084
-:1031600000E370210000202101C3C82B00C4C0214E
-:1031700001FA4021031948212502400027BD00081B
-:103180003C010800AC2E00843C010800AC29008002
-:1031900003E00008000000008F8200002486000782
-:1031A00030C5FFF800A2182130641FFF03E00008BB
-:1031B000AF8400008F8700388F8A004027BDFFB89A
-:1031C0008F860044AFB60040AFBF0044AFB5003CAF
-:1031D000AFB40038AFB30034AFB20030AFB1002CA1
-:1031E000AFB000288F4501048D4900ACAF47008087
-:1031F0008CC8002000A938230000B021AF480E1071
-:103200008F440E1000004821AF440E148CC20024DD
-:10321000AF420E188F430E18AF430E1C10E001256D
-:103220002D230001936B0008116000D40000000002
-:10323000976E001031CDFFFF00ED602B158000CFA1
-:103240000000000097700010320FFFFFAF4F0E001C
-:103250008F520000325100081220FFFD00000000D4
-:1032600097540E088F460E043285FFFF30B30001DD
-:1032700012600132000000000000000D30B8A040D4
-:1032800024150040131500C030A9A0001120012D05
-:1032900000000000937F000813E000080000000019
-:1032A00097630010306BFFFF00CB402B1100000331
-:1032B00030AC00401180012300000000A785003CD5
-:1032C000AF8600349366000800E02821AFA70020F5
-:1032D00014C0012427B30020AF60000C9782003C8B
-:1032E0003047400014E00002240300162403000EBF
-:1032F00024194007A363000AAF790014938A003EA3
-:103300008F740014315800070018AA4002959025C8
-:10331000AF7200149784003C8F700014309100103D
-:1033200002117825AF6F0014978E003C31CD000854
-:1033300011A00147000028218F6700143C021000F3
-:103340003C0C810000E22825AF65001497460E0A68
-:103350002408000E3405FFFC30C3FFFF006C582525
-:10336000AF6B0004A3680002937F000A27E9000402
-:10337000A369000A9786003C9363000A30CC1F00C3
-:10338000000C598301634021251F0028A37F0009F9
-:1033900097490E0CA769001093790009272A0002AB
-:1033A000315800070018A82332B10007A371000BA1
-:1033B00093740009976400108F910034978F003C3C
-:1033C000329200FF024480210205702131ED00405D
-:1033D00011A0000531C4FFFF0091282B3C12800092
-:1033E00010A000140000A0210224382B14E0011BBF
-:1033F0008FA500208F4D0E14AF4D0E108F420E1C66
-:10340000AF420E18AF440E008F4F000031EE00089F
-:1034100011C0FFFD0000000097540E0800808821B5
-:1034200000009021A794003C8F500E04241400014A
-:10343000AF900034976400103095FFFF8E68000055
-:103440000111F82317E00009AE7F00008F6500141A
-:103450008F8B004434A60040AF6600148F4C0E10D2
-:10346000AD6C00208F430E18AD63002493670008F5
-:1034700014E000D2000000000E00009E24040010A2
-:103480008F8900483C08320000402821312600FF87
-:103490000006FC0003E8502525390001AF990048DB
-:1034A000AC4A0000937800099370000A330400FFCF
-:1034B00000047400320F00FF01CF6825AC4D0004FA
-:1034C0008F820048064000EAACA20008ACA0000CC5
-:1034D0009783003C306B0008156000022628000628
-:1034E00026280002974E0E148F450E1C8F6700048D
-:1034F000936D000231C4FFFF31A200FFAFA20010A4
-:103500008F6C0014AFA800180E00008BAFAC001435
-:10351000240400100E0000C7000000008E7200009E
-:1035200016400005000000008F6400142405FFBF52
-:1035300000859824AF7300148F79000C033538216F
-:10354000AF67000C9375000816A00008000000008B
-:1035500012800006000000008F7F00143C0BEFFF7C
-:103560003568FFFE03E84824AF690014A37400081F
-:103570008FA500200A00024602202021AF470E003E
-:103580000A0000F5000000008F5901780720FFFEB7
-:10359000241F08008F840000AF5F0178974B008ADA
-:1035A000316AFFFF014448232528FFFF31021FFF36
-:1035B0002C4300081460FFF9000000008F8E0048C3
-:1035C0008F8D003800C048210344202125C600010A
-:1035D000240C0F00AF86004800E938232486400001
-:1035E00031CA00FF11AC0005240800019391003E90
-:1035F0003230000700107A4035E80001000AAC00C4
-:103600003C18010002B8A025AC9440008F930048FC
-:1036100030B2003630A40008ACD30004108000970C
-:1036200001123025974E0E0A8F8D00003C0281005A
-:1036300031CCFFFF25AB0008018240253C03100080
-:1036400031651FFF25390006241F000EAF480160B9
-:1036500000C33025A75F015AAF850000A759015864
-:1036600014E0000A8F93003824120F0052720002F7
-:103670002416000134C600408F580E108F94004469
-:10368000AE9800208F550E18AE9500248F450E146D
-:10369000AF4501448F590E1CAF590148A34A01524E
-:1036A0003C0A1000AF460154AF4A017814E0FEDD39
-:1036B0002D2300010076A025128000178FBF004443
-:1036C0008F84003824160F0010960084000000003C
-:1036D0008F45017804A0FFFE24150F001095006EA1
-:1036E000000000008F470E14240202403C1F10000F
-:1036F000AF4701448F440E1CAF440148A340015220
-:10370000A740015AAF400160A7400158AF420154A1
-:10371000AF5F01788FBF00448FB600408FB5003C8B
-:103720008FB400388FB300348FB200308FB1002CCB
-:103730008FB0002803E0000827BD004814C0FED069
-:1037400030B8A0408F420E148F84004400004821FE
-:10375000AC8200208F510E1CAC9100240A00020E96
-:103760002D2300018F910034978A003C3C12800089
-:103770000220A821315800401700FF300000A0218E
-:10378000976900108F9200343139FFFF13320035F2
-:1037900000002021008048211480FEA000A03821D4
-:1037A0008F420E148F840044AC8200208F510E1C77
-:1037B000AC9100240A00020E2D230001936A000937
-:1037C0009378000B315000FF330F00FF020F702180
-:1037D00025C2000A3050FFFF0E00009E020020218B
-:1037E0008F8600483C1F410024CD0001AF8D00486A
-:1037F000936C000930C600FF00064400318300FFCF
-:10380000246B0002010B4825013FC825AC5900007C
-:103810008F67000C97440E1400F22825AC45000475
-:103820008F450E1C8F670004936A00023084FFFFEF
-:10383000315800FFAFB800108F6F0014AFB10018FF
-:103840000E00008BAFAF00140A0001A60200202179
-:10385000AF6000040A00013EA36000020A000246B5
-:1038600000002021000090210A00017024140001B2
-:103870003C1280000A000195ACB2000C8F91000050
-:1038800025240002A744015826300008320F1FFFEC
-:103890000A0001F9AF8F0000AF40014C1120002C4D
-:1038A000000000008F590E10AF5901448F430E18CD
-:1038B000240200403C1F1000AF430148A3400152C6
-:1038C000A740015AAF400160A7400158AF420154E0
-:1038D000AF5F01780A0002278FBF00441120000665
-:1038E0000000000097460E0830CC00401580000212
-:1038F000000000000000000D8F4D017805A0FFFEC4
-:103900000000000097530E103C120500240E20000A
-:10391000326AFFFF0152C025AF58014C8F4F0E1481
-:103920003C021000AF4F01448F500E1CAF500148B5
-:10393000A34001528F840038A740015AAF40016074
-:10394000A7400158AF4E01540A000215AF4201785A
-:103950008F490E14AF4901448F430E1C0A00028E9A
-:10396000240200403C0E20FF27BDFFE03C1A8000EF
-:103970003C0F800835CDFFFDAFBF001CAFB2001873
-:10398000AFB10014AFB00010AF8F0040AF4D0E00CC
-:103990000000000000000000000000000000000027
-:1039A000000000003C0C00FF358BFFFDAF4B0E000C
-:1039B0003C0660048CC95000240AFF7F3C11600063
-:1039C000012A40243507380CACC750008E24043837
-:1039D00024050009AF4500083083FFFF38622F71CE
-:1039E0002450C0B3AF8000480E000068AF800000D4
-:1039F00052000001AE20442C0E0004353C11800022
-:103A00000E000ED9363000708F8A00403C1208003C
-:103A100026523C88020088218E0800008F5F00003B
-:103A20003BF900013338000113000017AF88003064
-:103A3000022048218D2700003C0F08008DEF006C0C
-:103A40003C0C08008D8C006800E8C02301F8282198
-:103A50000000682100B8302B018D582101664021FB
-:103A60003C010800AC25006C3C010800AC28006853
-:103A70008F44000038830001306200011440FFEDE4
-:103A800000E04021AF8700308E0C00003C050800AC
-:103A90008CA5006C3C0408008C84006801883023ED
-:103AA00000A638210000102100E6402B00821821DA
-:103AB0000068F8213C010800AC27006C3C010800BC
-:103AC000AC3F00688F49010025590088AF99004438
-:103AD000AF890038AF4900208E070000AF87003063
-:103AE0008F4D017805A0FFFE000000008E0600004B
-:103AF0003C0B08008D6B00743C0408008C84007043
-:103B000000C728230165F8210000102103E5402BA0
-:103B10000082382100E8C821240908003C0108007F
-:103B2000AC3F00743C010800AC390070AF4901782B
-:103B300093580108A398003E938F003E31EE000198
-:103B400015C000158F830038240E0D00106E00196B
-:103B5000240F0F00106F001D00000000915900009D
-:103B600024180050332900FF113800043C1F400086
-:103B7000AF5F01380A0002E7000000000E00090EE6
-:103B8000000000008F8A00403C1F4000AF5F0138FA
-:103B90000A0002E700000000938D003E31AC0006F1
-:103BA000000C51000E0000CE0152D8210A00034340
-:103BB0008F8A00403C1B0800277B3D080E0000CE8A
-:103BC000000000000A0003438F8A00403C1B0800ED
-:103BD000277B3D280E0000CE000000000A000343B2
-:103BE0008F8A004090AA00018FAB00108CAC0010AF
-:103BF0003C0300FF8D680004AD6C00208CAD001408
-:103C000000E060213462FFFFAD6D00248CA7001836
-:103C10003C09FF000109C024AD6700288CAE001CE0
-:103C20000182C82403197825AD6F0004AD6E002C05
-:103C30008CAD0008314A00FFAD6D001C94A9000254
-:103C40003128FFFFAD68001090A70000A5600002BA
-:103C5000A1600004A167000090A30002306200FF91
-:103C60000002198210600005240500011065000E95
-:103C70000000000003E00008A16A00018CD80028C1
-:103C8000354A0080AD7800188CCF0014AD6F001459
-:103C90008CCE0030AD6E00088CC4002CA16A0001EF
-:103CA00003E00008AD64000C8CCD001CAD6D001865
-:103CB0008CC90014AD6900148CC80024AD680008DC
-:103CC0008CC70020AD67000C8CC200148C8300648C
-:103CD0000043C82B13200007000000008CC2001412
-:103CE000144CFFE400000000354A008003E00008A7
-:103CF000A16A00018C8200640A00039900000000A0
-:103D000090AA000027BDFFF88FA9001CA3AA0000FD
-:103D10008FAE00003C0FFF808FA8001835E2FFFF38
-:103D20008CCD002C01C26024AFAC0000A1200004A7
-:103D300000E06021A7A000028FB800008D270004DA
-:103D40000188182100A0582100C05021006D2826AC
-:103D50003C06FF7F3C0F00FF2CAD000135EEFFFF5E
-:103D600034D9FFFF3C02FF0003193024000D1DC0B1
-:103D7000010EC82400E2C02400C370250319782571
-:103D8000AD2E0000AD2F00048D450024AFAE000025
-:103D9000AD2500088D4D00202405FFFFAD2D000C42
-:103DA000956800023107FFFFAD27001091660018EB
-:103DB00030C200FF000219C2506000018D4500347E
-:103DC000AD2500148D67000827BD0008AD27001C35
-:103DD0008C8B00CCAD2C0028AD20002CAD2B00240A
-:103DE000AD20001803E00008AD20002027BDFFE053
-:103DF000AFB20018AFB10014AFB00010AFBF001CDD
-:103E00009098000000C088213C0D00FF330F007F18
-:103E1000A0CF0000908E000135ACFFFF3C0AFF00F0
-:103E2000A0CE000194A6001EA22000048CAB0014BA
-:103E30008E29000400A08021016C2824012A40243E
-:103E40000080902101052025A6260002AE24000452
-:103E500026050020262400080E0000762406000215
-:103E600092470000260500282624001400071E00A3
-:103E70000003160324060004044000032403FFFF8C
-:103E8000965900023323FFFF0E000076AE23001088
-:103E9000262400248FBF001C8FB200188FB100149D
-:103EA0008FB0001024050003000030210A000080BC
-:103EB00027BD002027BDFFD8AFB1001CAFB0001850
-:103EC000AFBF002090A80000240200018FB0003C8A
-:103ED0003103003F00808821106200148FAA00384F
-:103EE000240B0005506B0016AFAA001000A0202183
-:103EF00000C028210E0003DC02003021922400BC07
-:103F0000308300021060000326060030ACC00000C1
-:103F100024C600048FBF00208FB1001C8FB0001892
-:103F200000C0102103E0000827BD0028014038210F
-:103F30000E00035AAFB000100A0004200000000079
-:103F40000E0003A1AFB000140A000420000000001E
-:103F50003C02000A034218213C04080024843D6C02
-:103F60002405001A000030210A000080AF830054AD
-:103F70003C038000346200708C48000000A058218F
-:103F800000C04821308A00FFAF8800308F4401789C
-:103F90000480FFFE3C0C8000358600708CC500005C
-:103FA0003C0308008C6300743C1808008F180070F4
-:103FB00000A82023006468210000C82101A4782BF8
-:103FC0000319702101CF60213C010800AC2D007461
-:103FD0003C010800AC2C00708F480E14AF4801441F
-:103FE000AF47014CA34A0152A74B01589346010821
-:103FF00030C5000854A0000135291000934B09007A
-:1040000024070050316A00FF11470007000000003C
-:104010008F450E1CAF450148AF4901543C091000C3
-:1040200003E00008AF490178934D010831A800086A
-:104030001100001000000000934F010831EE001045
-:1040400051C00001352900083C04080090843DD08F
-:10405000A34401508F4309A4AF4301488F4209A0F4
-:10406000AF420144AF4901543C09100003E000088D
-:10407000AF4901783C1908008F393D8C333800086E
-:104080005700FFF1352900080A0004730000000002
-:1040900024070040AF470814AF4008108F4209447E
-:1040A0008F4309508F4409548F45095C8F46094C52
-:1040B000AF820064AF830050AF84004CAF85005CDA
-:1040C00003E00008AF8600609346010930C5007F19
-:1040D000000518C0000521400083102103E00008FE
-:1040E000244200883C09080091293D9124A800023F
-:1040F0003C05110000093C0000E8302500C51825EA
-:1041000024820008AC83000003E00008AC800004B7
-:104110009347010B8F4A002C974F09083C18000E5B
-:104120000358482131EEFFFF000E41C0AF48002C7C
-:1041300097430908952C001A0080402124030001B0
-:10414000318BFFFFAC8B00008D2D001C00A058218F
-:1041500000C06021AC8D00048D24002030E70040B9
-:10416000AD04000891220019304400031083004878
-:104170002885000214A00062240600021086005662
-:1041800024190003109900660000000010E0003AB6
-:10419000000000003C07080094E73D8624E200018F
-:1041A000934F0934934709219525002A31EE00FFEA
-:1041B000000E488230ED00FF978700580009360056
-:1041C000000D1C003044FFFF00C310250044C02533
-:1041D00000A778213C19400003197025000F4C00FE
-:1041E000AD090004AD0E0000934D09203C0300060C
-:1041F00025090014000D360000C32025AD04000879
-:104200008F59092C24E5000130A27FFFAD19000C65
-:104210008F580930A782005825020028AD180010D9
-:104220008F4F0938AD0F0014AD2B00048F4E09409D
-:10423000AD2E0008934D09373C05080090A53D9030
-:104240008F4409488F46094031A700FF00EC182130
-:10425000008678230003C7000005CC000319602501
-:1042600031E8FFFC01885825AD2B000CAD20001073
-:1042700003E00008AF4A002C3C0D080095AD3D86D8
-:104280003C0E080095CE3D800A0004C901AE102105
-:104290003C05080094A53D8A3C06080094C63D8074
-:1042A0003C18080097183D7C952E002400A6782124
-:1042B00001F86823000E240025A2FFF200821825D1
-:1042C00024190800AD03000CAD190014AD00001056
-:1042D0000A0004C425080018952600249525002806
-:1042E0000006C40000057C00370E810035ED080093
-:1042F000AD0E000CAD0D00100A0004C4250800141A
-:104300001480FFA200000000952400240004140083
-:1043100034430800AD03000C0A0004C42508001053
-:104320003C03080094633D8A3C05080094A53D8049
-:104330003C06080094C63D7C953900249538002839
-:10434000006520210086782300196C000018740095
-:1043500025E2FFEE01C2202535A3810024190800C3
-:10436000AD03000CAD040010AD190018AD00001431
-:104370000A0004C42508001C03E00008240201F41C
-:1043800027BDFFE8AFB00010AFBF00140E00006003
-:104390000080802124050040AF4508148F83005021
-:1043A0008F84004C8F85005C0070182100641023FE
-:1043B00018400004AF830050AF6300548F66005470
-:1043C000AF86004C1200000C000000008F44007407
-:1043D000936800813409FA002D07000710E00005FA
-:1043E00000891021936C0081240B01F4018B50048F
-:1043F00001441021AF62000C8F4E095C01C5682397
-:1044000019A000048FBF00148F4F095CAF8F005CB0
-:104410008FBF00148FB000100A00006227BD001883
-:104420008F8400648F8300508F82004CAF640044FF
-:10443000AF63005003E00008AF6200543C0380000B
-:10444000346200708C43000027BDFFF8308700FF06
-:1044500030A900FF30C800FFAF8300308F440178DF
-:104460000480FFFE3C028000345900708F38000049
-:10447000A3A700033C0708008CE700748FAC000082
-:104480003C0608008CC60070030378233C0E7FFFB7
-:1044900000EFC82135CDFFFF00005021018D2824F9
-:1044A00000CA1821000847C0032F202B00A81025A0
-:1044B0000064C021AFA200003C010800AC390074C8
-:1044C0003C010800AC380070934F010AA3A0000221
-:1044D0003C0E80FFA3AF00018FAC0000312B007FAA
-:1044E00035CDFFFF018D4824000B5600012A4025E1
-:1044F000240730002406FF803C05100027BD00087B
-:10450000AF48014CAF470154A7400158A3460152A0
-:1045100003E00008AF45017827BDFFE8AFBF0014F6
-:10452000AFB000108F6500743C068000309000FF33
-:1045300000A620250E000060AF64007493630005A0
-:10454000346200080E000062A36200050200202110
-:104550008FBF00148FB00010240500052406000151
-:104560000A00057027BD001827BDFFE03C0380004E
-:10457000AFB00010AFBF0018AFB1001434620070CC
-:104580008C470000309000FF30A800FFAF8700305C
-:104590008F4401780480FFFE3C18800037110070C2
-:1045A0008E2F00003C0D08008DAD00743C0A080001
-:1045B0008D4A007001E7702301AE282100005821C8
-:1045C00000AE302B014B4821012638213C01080068
-:1045D000AC250074000088213C010800AC27007065
-:1045E0001100000F000000008F6200742619FFFF09
-:1045F0003208007F0002FE0233E5007F150000064E
-:10460000332200FF2407FF800207202624A3FFFF98
-:1046100000838025320200FF004080212411100811
-:104620000E000060000000008F49081831250004CA
-:1046300014A0FFFD3218007F001878C000187140E8
-:1046400001CF682125AC0088AF4C0818274A0980A3
-:104650008D4B0020AF4B01448D460024AF460148EE
-:10466000A35001500E000062A74001580220102103
-:104670008FBF00188FB100148FB0001003E0000846
-:1046800027BD002027BDFFE8308400FFAFBF00102A
-:104690000E0005BB30A500FF8F8300508FBF0010B8
-:1046A000344500402404FF903C02100027BD001850
-:1046B000AF43014CA3440152AF45015403E000084D
-:1046C000AF4201789343093E306200081040000D6C
-:1046D0003C0901013528080AAC8800008F470074A6
-:1046E000AC8700043C06080090C63D9030C5001021
-:1046F00050A00006AC8000088F6A0060AC8A0008F9
-:104700002484000C03E00008008010210A00062227
-:104710002484000C27BDFFE8AFBF0014AFB0001029
-:104720009346093F00A050210005288000853823CA
-:1047300030C200FF240300063C09080095293D868D
-:1047400024E8FFD8240500041043003724060002A3
-:104750009750093C3C0F020400063400320EFFFF64
-:1047600001CF6825AC8D0000934C093E318B0020B1
-:104770001160000800000000934309363C02010369
-:10478000345F0300307900FF033FC0252405000893
-:10479000AC98000493430934935909210005F88229
-:1047A000306200FF0002C082332F00FF00186E004D
-:1047B000000F740001AE6025018920253C094000EE
-:1047C00000898025ACF0FFD8934309378F4F094803
-:1047D0008F580940306200FF004AC821033F702112
-:1047E00001F86023000E6F0001A650253185FFFC03
-:1047F000001F58800145482501683821AD09002077
-:104800000E00006024F00028240400040E00006262
-:10481000A364003F020010218FBF00148FB000106E
-:1048200003E0000827BD00180A0006352406001220
-:1048300027BDFFD024090010AFB60028AFB5002473
-:10484000AFB40020AFB10014AFB000103C010800BD
-:10485000A0293D90AFBF002CAFB3001CAFB2001831
-:1048600097480908309400FF3C02000E3107FFFF13
-:10487000000731C0AF46002C974409089344010B50
-:1048800030B500FF03428021308300300000B021AA
-:104890001060012500008821240C00043C01080060
-:1048A000A02C3D90934B093E000B5600000A2E03AE
-:1048B00004A0016000000000AF400048934F010BCE
-:1048C00031EE002011C00006000000009358093EA0
-:1048D00000189E00001396030640018900000000A6
-:1048E0009344010B30830040106000038F9300500D
-:1048F0008F8200502453FFFF9347093E30E60008A3
-:1049000014C0000224120003000090219619002C0C
-:1049100093580934934F0937A7990058330C00FF77
-:1049200031EE00FF024E6821000D5880016C5021CD
-:10493000015140213C010800A4283D869205001841
-:1049400030A900FF010918213C010800A4233D887B
-:104950009211001816200002000000000000000D57
-:104960003C010800A4233D8A3C010800A4203D80AE
-:104970003C010800A4203D7C935F010B3063FFFFE6
-:1049800033F00040120000022464000A2464000B8B
-:104990003091FFFF0E00009E022020219358010B52
-:1049A0003C08080095083D8A0040202100185982E3
-:1049B000316700010E00049A01072821934C010B76
-:1049C0008F4B002C974E09083C0F000E034F4021DF
-:1049D00031CDFFFF000D51C0AF4A002C97430908AD
-:1049E0009505001A004038212404000130A9FFFF7A
-:1049F000AC4900008D06001C00404821318A00406F
-:104A0000AC4600048D020020ACE2000891030019BE
-:104A100030630003106400EC2879000217200118AD
-:104A2000241000021070010C241F0003107F011ECF
-:104A300000000000114000DE000000003C090800FA
-:104A400095293D8625220001935F0934934E092163
-:104A50009504002A33F900FF0019C08231CF00FF0E
-:104A6000978E005800184600000F6C00010D80253D
-:104A70003045FFFF02051025008E50213C03400009
-:104A800000433025000A6400ACEC0004ACE60000F2
-:104A9000935F09203C19000624EC0014001FC60097
-:104AA00003197825ACEF00088F48092C25CD0001AB
-:104AB00031A57FFFACE8000C8F500930A785005866
-:104AC00024E80028ACF000108F4409380100802150
-:104AD000ACE40014AD9300048F530940AD9300087B
-:104AE000934A09373C19080093393D908F43094890
-:104AF0008F460940314200FF0052F82100667023C2
-:104B0000001F7F000019C40001F8282531CDFFFCEB
-:104B100000AD2025AD84000CAD800010AF4B002C03
-:104B2000934B093E317300081260000D3C060101F1
-:104B300034CC080AACEC00288F530074AD13000489
-:104B40003C0B0800916B3D903167001050E0000372
-:104B5000AD0000088F6A0060AD0A00082510000C47
-:104B600012C0003D000000009343093F24160006D8
-:104B700024060004306200FF105600C9240700021A
-:104B80009758093C3C0F0204330DFFFF01AF40254D
-:104B9000AE0800009345093E30A4002010800008B4
-:104BA00000000000935309363C0B0103357F0300DE
-:104BB000327900FF033F7025AE0E00042406000882
-:104BC000934F093493480921312AFFFF31ED00FF4B
-:104BD000000D1082310300FF0002B60000032C001C
-:104BE00002C56025018A9825001220803C094000FA
-:104BF0000204502302695825AD4BFFD8935F093753
-:104C00008F4F09488F58094033F900FF0332702154
-:104C10000006B08201D668210007440001F828236D
-:104C2000000D1F000068302530A2FFFC2547FFD88B
-:104C300000C260250016808002074821ACEC0020ED
-:104C4000253000280E00006024120004A372003FEB
-:104C50000E000062000000009347010B30F200409C
-:104C6000124000053C1900FF8E180000372EFFFF90
-:104C7000030E3024AE0600000E0000C702202021E3
-:104C80003C10080092103D90321100031220000FDA
-:104C900002A028218F89005025330001AF930050D6
-:104CA000AF7300508F6B00540173F8231BE00002B8
-:104CB000026020218F640054AF6400548F4C007454
-:104CC000258401F4AF64000C02A028210280202179
-:104CD000A76000680E0005BB3C1410008F850050D3
-:104CE00034550006AF45014C8F8A00488FBF002C19
-:104CF0008FB3001C25560001AF9600488FB20018F4
-:104D0000A34A01528FB60028AF5501548FB1001449
-:104D1000AF5401788FB500248FB400208FB00010FD
-:104D200003E0000827BD00309358093E00189E009C
-:104D3000001396030642003624110002934409230F
-:104D4000308300021060FEDD8F8600608F8200508D
-:104D500014C2FEDA000000000E0000600000000037
-:104D60009369003F24070016312800FF1107000C4B
-:104D7000240500083C0C0800918C3D90358B000107
-:104D80003C010800A02B3D90936A003F314300FF97
-:104D900010650065240D000A106D005E2402000CF1
-:104DA0000E000062000000000A00069000000000F3
-:104DB0003C09080095293D863C0A0800954A3D803B
-:104DC0000A0006F3012A10213C09080095293D8AB2
-:104DD0003C04080094843D803C06080094C63D7C59
-:104DE00095030024012410210046F8230003CC0081
-:104DF00027F0FFF20330C025240F0800ACF8000CA8
-:104E0000ACEF0014ACE000100A0006EE24E7001836
-:104E10003C010800A0313D90935F093E241600013B
-:104E200033F900201720FEA5241100080A0006907F
-:104E3000241100048F6E00848F4D094011A0FE9E46
-:104E4000AF8E0050240F00143C010800A02F3D90AD
-:104E50000A00068F00000000950E0024950D002822
-:104E6000000E6400000D2C003589810034A6080076
-:104E7000ACE9000CACE600100A0006EE24E70014D2
-:104E80001460FEEC000000009502002400021C00EB
-:104E900034640800ACE4000C0A0006EE24E70010BD
-:104EA0000A000741240700123C02080094423D8A90
-:104EB0003C06080094C63D803C03080094633D7C9A
-:104EC00095100024951900280046F82103E3C0231B
-:104ED00000106C0000197400270FFFEE01CF282589
-:104EE00035AC8100ACEC000CACE5001024070800E8
-:104EF000AD2700182527001C0A0006EEAD2000147F
-:104F00008F7F004CAF7F00548F7900540A000699C0
-:104F1000AF790050A362003F0E0000620000000065
-:104F20000A00069000000000240200140A0008276E
-:104F3000A362003F27BDFFE8308400FFAFBF001031
-:104F40000E0005BB30A500FF9378007E9379007FAB
-:104F5000936E00809368007A332F00FF001866007C
-:104F6000000F6C0031CB00FF018D4825000B520073
-:104F70008FBF0010012A3825310600FF344470002D
-:104F800000E628252402FF813C03100027BD0018FD
-:104F9000AF45014CAF440154A342015203E0000865
-:104FA000AF43017827BDFFD8AFB20018AFB10014EE
-:104FB000AFB00010AFBF0020AFB3001C9342010997
-:104FC000308600FF30B000FF000618C23204000235
-:104FD0003071000114800005305200FF9367000516
-:104FE00030E5000810A0000D30C80010024020215C
-:104FF0000E0005A702202821240400018FBF0020F5
-:105000008FB3001C8FB200188FB100148FB0001046
-:105010000080102103E0000827BD002815000032A1
-:105020000000000093430109000028213062007F46
-:10503000000220C00002F94003E49821267900888C
-:10504000033B98218E7800248E6F0008130F0046D2
-:10505000000000008F640084241800020004FD8218
-:1050600033F900031338007C0000000093660083CE
-:10507000934A0109514600043205007C10A00060EB
-:10508000000000003205007C14A0005302402021E3
-:1050900016200006320400018E7F00248F5901047F
-:1050A00017F9FFD600002021320400011080000A09
-:1050B000024020218F4209408F9300641053000664
-:1050C000000000000E00066D022028218F430940D9
-:1050D000AF630044024020210E0006020220282176
-:1050E0000A000860240400013C0908008D290064BE
-:1050F000252600013C010800AC26006416000012C1
-:10510000000000008F6D00843C0E00C001AE6024E2
-:1051100015800005024020210E00082E02202821C3
-:105120000A00086024040001240500040E00057034
-:1051300024060001024020210E00082E0220282112
-:105140000A000860240400010E000041240400014C
-:10515000936B007D020B50250E000062A36A007D58
-:105160000A0008A38F6D00848F6600748F480104C5
-:105170008E67002400064E021507FFB63126007F19
-:10518000936B008326440001308A007F1146004360
-:10519000316300FF5464FFB08F6400842645000132
-:1051A00030B1007F30A200FF122600042405000168
-:1051B000004090210A00087624110001240FFF808E
-:1051C000024F702401CF9026324200FF0040902110
-:1051D0000A000876241100010E00066D0220282125
-:1051E000321800301300FFAA321000820240202142
-:1051F0000E0005A7022028210A00086024040001EF
-:105200008F6E00743C0F80002405000301CF9025B1
-:10521000AF72007493710083240600010E000570C4
-:10522000322400FF0E00004124040001936D007D34
-:10523000020D60250E000062A36C007D3C0B08008F
-:105240008D6B0054257000013C010800AC30005407
-:105250000A000860240400018F6800743C09800083
-:105260002405000401093825AF67007493630083A7
-:10527000240600010E000570306400FF0E0000419E
-:10528000240400019362007D020298250E00006252
-:10529000A373007D0A00086024040001324D0080E1
-:1052A00039AC0080546CFF6C8F6400840A0008C91C
-:1052B0002645000127BDFFC83C0A0008AFBF0030EB
-:1052C000AFB5002CAFB40028AFB30024AFB20020BC
-:1052D000AFB1001CAFB00018034AD8212409004028
-:1052E000AF490814AF4008108F4209448F4309505A
-:1052F0008F4609548F47095C8F48094C9344010835
-:105300009345010BAF820064308400FF30A500FF9D
-:10531000AF830050AF86004CAF87005C0E00084A98
-:10532000AF8800601440017D8FBF0030A760006827
-:10533000934D0900240B00503C15080026B53D484C
-:1053400031AC00FF3C12080026523D58118B00037F
-:10535000000000000000A8210000902193510109E5
-:105360008F9F005024040010322E007F000E68C072
-:10537000000E6140018D282124B40088AF54081824
-:105380008F4901048F4A09A43C0B000E034BC02136
-:10539000012A10233C010800AC223D6C8F430958C0
-:1053A0003C010800A0243D9097470908007F302366
-:1053B0003C010800AC263D7030E8FFFF0008C9C082
-:1053C0003C010800AC3F3D94AF59002C97420908BE
-:1053D0009710002C8EB10000930F001803749821D1
-:1053E000A7900058AF9300440220F80931F000FF65
-:1053F000304E000215C001B2304F000111E0014FE4
-:10540000000000009343093E3066000814C000020B
-:10541000241400030000A0218F5809A424130001C4
-:105420003C010800AC383D98934F0934935109373B
-:1054300031EC00FF322E00FF028E6821000D288023
-:1054400000AC5021015058213C010800A42B3D889C
-:105450003C010800A42A3D8693490934312200FF0B
-:1054600002022021249000103C010800A4303D8459
-:10547000240700068F9F00503C010800AC273D8C9C
-:105480008F88005C8F59095800008021011F282354
-:1054900004A00149033F20230480014700A4302BCE
-:1054A00010C00149000000003C010800AC253D701F
-:1054B0008E4200000040F809000000003043000266
-:1054C000146000F80040882130440001548000102E
-:1054D0008E4200043C0908008D293D743C0AC0003E
-:1054E000012A8025AF500E008F45000030AB000828
-:1054F0001160FFFD00000000974D0E082410000110
-:10550000A78D003C8F4C0E04AF8C00348E420004FB
-:105510000040F8090000000002228825322E000217
-:1055200015C00180000000003C09080095293D7C61
-:105530003C06080094C63D883C0A0800954A3D7E1A
-:105540003C1908008F393D74012660213C18080081
-:105550008F183D983C03080094633D92018A2021F6
-:105560008F4E09400329F821248F000203E32821EC
-:10557000031968213C010800A42C3D8AAF8E006409
-:105580003C010800AC2D3D983C010800A4253D805D
-:105590000E00009E31E4FFFF8F870048004020216D
-:1055A0003C010800A0273D918E42000824E800013C
-:1055B000AF8800480040F809000000009344010B48
-:1055C0008F4C002C974A09083C0B000E034B4021DE
-:1055D0003149FFFF000919C08F8B0050AF43002CE9
-:1055E000974309089506001A00403821308A004088
-:1055F00030DFFFFFAC5F00008D19001C0040482128
-:10560000AC5900048D180020AC580008910F001907
-:1056100031E30003107300F0000000002862000274
-:105620001440010924050002106500FD240D00034B
-:10563000106D010D00000000114000D900000000B5
-:105640003C0A0800954A3D8625420001934D0934E5
-:1056500093580921950E002A31A300FF00032082F0
-:10566000331F00FF9798005800047E00001FCC00F5
-:1056700001F940253049FFFF0109102501D83021EB
-:105680003C0540000045502500066C00ACED0004D0
-:10569000ACEA0000934309203C04000624ED00140A
-:1056A0000003FE0003E4C825ACF900088F49092C6B
-:1056B000270F000131EE7FFFACE9000C8F48093065
-:1056C000A78E005824E90028ACE800108F4509385F
-:1056D00001204021ACE50014ADAB00048F4209402D
-:1056E000ADA20008934B09373C1F080093FF3D9083
-:1056F0008F4309488F4A0940316600FF00D42021BA
-:10570000006A78230004C700001FCC000319282575
-:1057100031EEFFFC00AE1025ADA2000CADA00010D4
-:10572000AF4C002C934C093E318B00085160000FA8
-:105730008E58000C3C06010134CA080AACEA002865
-:105740008F4B0074AD2B00043C0C0800918C3D90F5
-:105750003187001050E00003AD2000088F62006028
-:10576000AD2200082528000C8E58000C0300F80913
-:10577000010020213C19080097393D8A3C1F080090
-:1057800097FF3D7E033F782125E900020E0000C708
-:105790003124FFFF3C0E08008DCE3D6C3C08080014
-:1057A0008D083D7401C828233C010800AC253D6CE0
-:1057B00014A00006000000003C0308008C633D8C30
-:1057C000346400403C010800AC243D8C12000070A1
-:1057D0008F8C00448F470E108F900044AE0700203E
-:1057E0008F4D0E18AE0D00243C10080096103D8021
-:1057F0000E0000600000000024020040AF420814C8
-:105800008F8600508F8A004C00D01821006A5823E0
-:1058100019600004AF830050AF6300548F650054DB
-:10582000AF85004C1200000C000000008F44007493
-:10583000936800813409FA002D0E000711C000059D
-:1058400000891821937F0081241901F403F9780459
-:1058500001E41821AF63000C8F44095C8F83005C66
-:105860000083C0231B000003000000008F50095C70
-:10587000AF90005C0E000062000000008F8C0050B2
-:105880008E4700103C010800AC2C3D9400E0F80964
-:10589000000000003C0D08008DAD3D6C55A0FEF5EC
-:1058A000240700068F450024975909088F8B006450
-:1058B0008F9400503C0F001F978200588F86005431
-:1058C0008F93004C3328FFFF35E9FF8000A9502457
-:1058D000000871C032320100AF4E0024A4C2002C77
-:1058E000AF4A0024AF6B0044AF740050AF73005454
-:1058F0001640008032380010570000868EA4000445
-:10590000322300405460001B8EB100088EB0000CA2
-:105910000200F809000000008FBF00308FB5002C96
-:105920008FB400288FB300248FB200208FB1001CE9
-:105930008FB0001803E0000827BD00389347010925
-:105940008F8800380007FE0003E8C825AF590080A3
-:105950008F5809A08F5309A4AFB80010AF580E1488
-:105960008FB40010AF540E10AF530E1C0A00096222
-:10597000AF530E180220F809000000008EB0000C92
-:105980000200F809000000000A000AA88FBF0030DA
-:10599000A5800020A59300220A000A5BAD93002495
-:1059A0003C09080095293D863C06080094C63D80C8
-:1059B0000A0009F4012610213C010800AC203D70CA
-:1059C0000A00098E8E4200003C010800AC243D70A4
-:1059D0000A00098E8E4200003C03080094633D8A51
-:1059E0003C04080094843D803C1F080097FF3D7CE8
-:1059F000951800240064C821033F782300186C0028
-:105A000025EEFFF201AE2825AC45000C240208006B
-:105A1000ACE20014ACE000100A0009EF24E7001823
-:105A200095060024950900280006240000091C00A2
-:105A3000349F810034790800ACFF000CACF90010F1
-:105A40000A0009EF24E700141460FEFB00000000C8
-:105A50009518002400187C0035EE0800ACEE000C10
-:105A60000A0009EF24E700103C07080094E73D8096
-:105A70003C04080094843D8A3C03080094633D7C08
-:105A800095190024951800280087F82103E378234E
-:105A90002407080000192C0000186C0025EEFFEE0A
-:105AA00001AE302534A28100AD2700182527001C47
-:105AB000AD22000CAD2600100A0009EFAD20001445
-:105AC00093520109000028210E000602324400FF13
-:105AD0008FBF00308FB5002C8FB400288FB3002407
-:105AE0008FB200208FB1001C8FB0001803E00008B7
-:105AF00027BD0038935F010933E400FF0E00066DF7
-:105B000000002821323800105300FF7E322300406D
-:105B10008EA400040080F809000000000A000AA218
-:105B2000322300401200FF5F000000008F540E146B
-:105B30008F920044AE5400208F530E1C0A000A8A34
-:105B4000AE5300248F82001C008040213C040100E1
-:105B50009047008530E3002010600009000000003D
-:105B60003C0708008CE73D948F83001800E3202356
-:105B7000048000089389000414E30003010020213D
-:105B800003E00008008010213C04010003E000084D
-:105B9000008010211120000B006738238F8C00201B
-:105BA00024090034918B00BC316A0002514000018D
-:105BB0002409003000E9682B15A0FFF10100202125
-:105BC00000E938232419FFFC00B9C02400F9782427
-:105BD00000F8702B15C0FFEA01E8202130C2000355
-:105BE0000002182314C000123069000300003021A5
-:105BF00000A9702101C6682100ED602B1180FFE033
-:105C00003C0401002D2F00010006482B010538211E
-:105C100001E9302414C0FFDA24E4FFFC2419FFFC5E
-:105C200000B9C0240308202103E0000800801021EF
-:105C30008F8B002024060004916A00BC31440004CC
-:105C40001480FFEC00A970210A000B5E00003021D7
-:105C500027BDFFE8AFBF00108F460100934A01093E
-:105C60003C1F08008FFF00902407FF80314F00FF8A
-:105C700031E8007F0008614003E6C821032CC02101
-:105C800027090120012770243C010800A02F3DD0E6
-:105C9000AF4E080C3C0D08008DAD00903C04008018
-:105CA0003482000301A65821016C182124650120CB
-:105CB00030AA007801424025AF48081C3C1F08006C
-:105CC0008FFF00908F88004003E6C0213319000742
-:105CD00003074824033A7821AF49002825E909C081
-:105CE000952E00023C0D08008DAD008C3C0A08008A
-:105CF0008D4A009031CC3FFF01A61821000C59803D
-:105D0000006B282100A72024AF44002C952200021C
-:105D10003C1F08008FFF008C9107008530593FFF22
-:105D200003E678210019C1800146702101F868213D
-:105D300031CC007F31AB007F019A2821017A5021BC
-:105D40003C03000C3C04000E00A328210144102158
-:105D500030E6002027470980AF82002CAF88001C66
-:105D6000AF890024AF85002010C00006AF8700284F
-:105D70008D0200508CA4010C0044302318C0007721
-:105D800000000000910C0085240DFFDF018D3824F8
-:105D9000A10700858F8B001C8F8900248F87002826
-:105DA0008D65004CAF850018912F000D31EE00205D
-:105DB00011C000170000000024090001A38900049D
-:105DC000AF80000C8CE400248F85000C240A0008AE
-:105DD000AF800008AF8000103C010800A42A3D7E7F
-:105DE0003C010800A4203D920E000B32000030213F
-:105DF0008F8500248FBF0010AF82001490A8000D83
-:105E000027BD00180008394203E0000830E2000115
-:105E1000913F00022418000133F900FF001921828C
-:105E200010980039240800021088005B8F86002C2F
-:105E30008CE5002414A0001B8F9F002091220000FD
-:105E4000240A00053046003F10CA00472404000120
-:105E50008F860008A3840004AF860010AF86000C74
-:105E60008CE400248F85000C240A00083C01080003
-:105E7000A42A3D7E3C010800A4203D920E000B3276
-:105E8000000000008F8500248FBF0010AF82001437
-:105E900090A8000D27BD00180008394203E0000853
-:105EA00030E200018CF800088CF900248FEE00C469
-:105EB000A38000048CE40024AF8E000C8F85000CBE
-:105EC0008F86000803197823240A0008AF8F00107A
-:105ED0003C010800A42A3D7E3C010800A4203D921C
-:105EE0000E000B32000000008F8500248FBF0010D1
-:105EF000AF82001490A8000D27BD00180008394299
-:105F000003E0000830E20001912300003062003F0E
-:105F1000104400278F8500208CE400241480002189
-:105F2000000000008D2E00183C187FFF8F85002098
-:105F3000370FFFFF01CF1824AF8300088F9F0008A1
-:105F40008CA8008403E8C82B1720000203E020215E
-:105F50008CA400840A000BEDAF8400088CA3010C14
-:105F60000A000BCBAF8300188D2C00188F86000819
-:105F70003C0D7FFF8F89002035A3FFFF018358244C
-:105F800024040001AF8B0010AD2000CCA3840004DA
-:105F90000A000BF9AF86000C8CCA00140A000BED46
-:105FA000AF8A00088CA300C80A000C30AF83000839
-:105FB0008F84002C8CAC00648C8D0014018D582BC8
-:105FC00011600004000000008CA200640A000C3084
-:105FD000AF8200088C8200140A000C30AF820008E7
-:105FE0008F85000C27BDFFE0AFBF0018AFB10014D4
-:105FF00014A00007AFB000108F8600242402000513
-:1060000090C400003083003F106200B68F840020EF
-:106010008F91000800A080218F8C00283C0508008B
-:106020008CA53D708D8B000431663FFF00C5502B61
-:106030005540000100C02821938D000411A0007379
-:1060400000B0F82B8F98002024040034930F00BC7C
-:1060500031EE000251C000012404003000A4C82B1E
-:10606000172000D10000000000A4282300B0F82B66
-:106070003C010800A4243D7C17E0006802002021B8
-:106080003C0308008C633D6C0083102B54400001DE
-:10609000008018218F8800243C010800AC233D7447
-:1060A000000048219104000D308300205060000161
-:1060B0008F490E188F8300140123382B10E00059EC
-:1060C000000000003C0408008C843D7400895821C5
-:1060D000006B502B114000560090602B006930235C
-:1060E00000C020213C010800AC263D7412000003D2
-:1060F000241FFFFC1090008A32270003009FC82451
-:106100003C010800AC393D743C010800A4203D92DC
-:106110008F84000C120400078F830020AF910008C9
-:10612000020020218C7100CCAF90000C26300001C1
-:10613000AC7000CC3C0208008C423D748F8A001089
-:10614000240700180082202301422823AF84000C7A
-:1061500010800002AF850010240700108F86001CFD
-:106160003C010800A0273D902407004090CC00850A
-:10617000318B00C0116700408F8D001414A00015F2
-:1061800000002021934A01098F420974314500FF24
-:106190000002260224A300013090007F3071007FAE
-:1061A0001230007A2407FF80A0C300833C09080056
-:1061B0008D293D8C8F880024240D0002352C000889
-:1061C0003C010800A02D3DD13C010800AC2C3D8CC9
-:1061D00024040010910E000D31C6002010C00005EF
-:1061E00000801821240800013C010800AC283D74FF
-:1061F000348300018FBF00188FB100148FB00010DE
-:106200000060102103E0000827BD00203C010800C9
-:10621000A4203D7C13E0FF9A020020210A000C819B
-:1062200000A020213C0408008C843D740090602B69
-:106230001180FFAE000000003C0F080095EF3D7C90
-:1062400001E4702101C6682B11A000072C82000414
-:106250003C1F60008FF954043338003F1700FFE5FE
-:10626000240300422C8200041040FFA024030042BB
-:106270000A000CDF8FBF0018152DFFC000000000C2
-:106280008CDF00743C0380002405FF8003E3C825F5
-:10629000ACD9007490D80085240E000424040010AA
-:1062A000330F003F01E54025A0C800858F880024FA
-:1062B0003C010800A02E3DD1240300019106000DF1
-:1062C00030C9002015200003000000003C03080036
-:1062D0008C633D743C010800AC233D6C0A000CD675
-:1062E000000000008F8700108C88008400E8282BB5
-:1062F00014A0000200E088218C9100842409000190
-:10630000A38900048F440E18022028210E000B32AE
-:1063100002203021022080210A000C67AF82001485
-:1063200000071823306600033C010800A4263D92B4
-:10633000122000058F8C0020918B00BC316A000474
-:106340001540001524CD00043C0F080095EF3D9248
-:1063500001E4702100AE302B50C0FF6E8F84000C22
-:106360002C85000514A0FFA32403004230980003ED
-:1063700017000002009818232483FFFC3C0108004A
-:10638000AC233D740A000CA30000000000A75824B1
-:106390000A000CCB016718263C010800A42D3D9291
-:1063A0000A000D33000000003C010800AC203D74E1
-:1063B0000A000CDE240300428F83001014600007E3
-:1063C000000010218F88002424050005910600009C
-:1063D00030C400FF108500030000000003E0000847
-:1063E00000000000910A0018314900FF000939C27D
-:1063F00014E0FFFA8F85001C3C04080094843D7C67
-:106400003C0308008C633D943C1908008F393D74AF
-:106410003C0F080095EF3D920064C0218CAD005404
-:106420000319702101CF6021018D58231960001DCF
-:1064300000000000910E001C8F8C002C974B0E105A
-:1064400031CD00FF8D850004016D30238D88000063
-:1064500030CEFFFF000E510000AAC82100003821F5
-:1064600001072021032A182B0083C021AD990004C5
-:10647000AD980000918F000A01CF6821A18D000A1C
-:106480008F88002C974B0E12A50B0008950A003838
-:1064900025490001A50900389107000D34E60008E0
-:1064A000A106000D03E000080000000027BDFFE08A
-:1064B000938700048F8F00248FAD00143C0E7FFF64
-:1064C0008F89000C35C8FFFFAFBF001CAFB00018AC
-:1064D00001A8182491EA000D000717C03C1FBFFF58
-:1064E000006258252D2E00018F90001837F9FFFF0C
-:1064F0003C1808008F183D943C0F080095EF3D8A2A
-:1065000001796824000E47803C07EFFF3C05F0FF4F
-:1065100001A818253149002034E2FFFF34ACFFFF09
-:106520000310582327A500102406000225EA0002C4
-:106530000062182400808021152000020000402104
-:106540008F480E1CA7AA0012056000372407000020
-:1065500030FF00FF001FCF008F8B001C0079382513
-:10656000AFA70014916F00853C08080091083D9189
-:106570003C18DFFF31EE00C0370AFFFF000E182B7A
-:106580003C1F080097FF3D8400EA6824A3A800117F
-:106590000003174001A248258FB90010AFA90014CD
-:1065A0003C0A0800914A3D93A7BF00168FA800142B
-:1065B000032CC0243C0B01003C0F0FFF030B1825DC
-:1065C0003147000335EEFFFF010C68240007160079
-:1065D000006EF8243C09700001A2C82503E9582583
-:1065E000AFB90014AFAB00100E000076A3A00015E9
-:1065F0008F8C0024260200089186000D30C40020F4
-:10660000108000068FBF001C3C05080094A53D804B
-:1066100024B0FFFF3C010800A4303D808FB000187B
-:1066200003E0000827BD00208F9800140118502BAC
-:106630005540FFC7240700010A000DB630FF00FFD8
-:106640009382000427BDFFE0AFBF00181040000F89
-:10665000008050218F880024240B00058F890008BA
-:10666000910700008F8400200100282130E3003FC3
-:106670008F86002C106B000800003821AFA9001095
-:106680000E00040EAFAA0014A38000048FBF0018F0
-:1066900003E0000827BD00208D1900183C0F0800FA
-:1066A0008DEF3D748F9800103C027FFF8D08001421
-:1066B000345FFFFF033F682401F8702101AE6023BF
-:1066C00001883821AFA900100E00040EAFAA0014F3
-:1066D0000A000E04A38000048F8700243C050800F4
-:1066E00094A53D923C0208008C423D8C90E6000D42
-:1066F0000005240030C300201060002C0044402519
-:106700008F85001C00006021240B000190A30085F0
-:1067100000004821240A00013C0F800035EE007083
-:106720008DC70000AF8700308F5801780700FFFE4B
-:106730003C038000347900708F3800003C0508006D
-:106740008CA500743C0D08008DAD00700307782304
-:1067500000AF38210000102100EF302B01A22021D2
-:10676000008618213C010800AC2700743C01080099
-:10677000AC230070AF4B01483C1908008F393D94A1
-:10678000A7490144A74A0146AF59014C3C0B0800F8
-:10679000916B3D91A34B0152AF4801543C0810004E
-:1067A000A74C015803E00008AF4801788F4B0E1C3E
-:1067B0003C0A08008D4A3D7497490E16974D0E14F9
-:1067C00001456021312AFFFF0A000E2731A9FFFF92
-:1067D0008F8300249064000D308200201040002937
-:1067E000000000000000482100005021000040216E
-:1067F0003C07800034EB00708D670000AF870030ED
-:106800008F4C01780580FFFE3C0D800035AC007098
-:106810008D8B00003C0508008CA500743C0408002A
-:106820008C8400700167302300A6782100001021BD
-:1068300001E6C82B0082C021031970213C01080029
-:10684000AC2F00743C010800AC2E0070AF49014829
-:106850003C0D08008DAD3D94A7480144240900403B
-:10686000A74A01463C081000240AFF91AF4D014C95
-:10687000A34A0152AF490154A740015803E0000860
-:10688000AF4801788F490E1897460E1297450E10A3
-:1068900030CAFFFF0A000E5D30A8FFFF8F8300247F
-:1068A00027BDFFF89064000D308200201040003AB0
-:1068B00000000000240B000100004821240A000110
-:1068C0003C088000350700708CE30000AF83003087
-:1068D0008F4C01780580FFFE3C0E80003C040800D0
-:1068E00090843DD035C700708CEC00003C0508005A
-:1068F0008CA50074A3A400033C1908008F39007014
-:106900008FAD00000183302300A638210000102144
-:106910000322782100E6C02B01F8602101AE40255A
-:10692000AFA800003C010800AC2700743C0108003F
-:10693000AC2C00709346010A3C04080090843DD1C1
-:10694000A3A00002A3A600018FA300003C0580FFC6
-:106950003099007F34A2FFFF006278240019C6003E
-:1069600001F87025240D3000AF4E014C27BD000802
-:10697000AF4D0154A7400158AF4B0148A74901440E
-:10698000A74A01463C091000240AFF80A34A01528D
-:1069900003E00008AF4901788F4B0E1897460E129E
-:1069A00097450E1030CAFFFF0A000E9130A9FFFF75
-:1069B0008F85001C2402008090A40085308300C0D5
-:1069C000106200058F8600208F8800088F87000CDA
-:1069D000ACC800C8ACC700C403E000080000000059
-:1069E0003C0A0800254A39543C09080025293A2068
-:1069F0003C08080025082DD43C07080024E73B3458
-:106A00003C06080024C637C43C05080024A5353CD4
-:106A10003C040800248431643C0308002463385C8F
-:106A20003C020800244236303C010800AC2A3D50AC
-:106A30003C010800AC293D4C3C010800AC283D4815
-:106A40003C010800AC273D543C010800AC263D64E5
-:106A50003C010800AC253D5C3C010800AC243D58DD
-:106A60003C010800AC233D683C010800AC223D60BD
-:086A700003E000080000000033
-:00000001FF
-/*
- * This file contains firmware data derived from proprietary unpublished
- * source code, Copyright (c) 2004 - 2009 Broadcom Corporation.
- *
- * Permission is hereby granted for the distribution of this firmware data
- * in hexadecimal or equivalent format, provided this copyright notice is
- * accompanying it.
- */
diff --git a/firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex b/firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex
deleted file mode 100644
index 05e710248d2c..000000000000
--- a/firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex
+++ /dev/null
@@ -1,6512 +0,0 @@
-:10000000080001180800000000005594000000C816
-:1000100000000000000000000000000008005594EF
-:10002000000000380000565C080000A00800000036
-:100030000000574400005694080059200000008436
-:100040000000ADD808005744000001C00000AE5CBD
-:100050000800321008000000000092340000B01CBC
-:1000600000000000000000000000000008009234C2
-:100070000000033C00014250080004900800040006
-:10008000000012FC0001458C000000000000000090
-:1000900000000000080016FC000000040001588861
-:1000A000080000A80800000000003D000001588C76
-:1000B00000000000000000000000000008003D00FB
-:0800C000000000300001958CE6
-:0800C8000A00004600000000E0
-:1000D000000000000000000D636F6D362E322E31DF
-:1000E00061000000060201020000000000000003A1
-:1000F000000000C800000032000000030000000003
-:1001000000000000000000000000000000000000EF
-:1001100000000010000001360000EA600000000549
-:1001200000000000000000000000000000000008C7
-:1001300000000000000000000000000000000000BF
-:1001400000000000000000000000000000000000AF
-:10015000000000000000000000000000000000009F
-:10016000000000020000000000000000000000008D
-:10017000000000000000000000000000000000007F
-:10018000000000000000000000000010000000005F
-:10019000000000000000000000000000000000005F
-:1001A000000000000000000000000000000000004F
-:1001B000000000000000000000000000000000003F
-:1001C000000000000000000000000000000000002F
-:1001D000000000000000000000000000000000001F
-:1001E0000000000010000003000000000000000DEF
-:1001F0000000000D3C020800244256083C030800A1
-:1002000024635754AC4000000043202B1480FFFDB2
-:10021000244200043C1D080037BD9FFC03A0F021D0
-:100220003C100800261001183C1C0800279C5608AA
-:100230000E000256000000000000000D27BDFFB4B4
-:10024000AFA10000AFA20004AFA30008AFA4000C50
-:10025000AFA50010AFA60014AFA70018AFA8001CF0
-:10026000AFA90020AFAA0024AFAB0028AFAC002C90
-:10027000AFAD0030AFAE0034AFAF0038AFB8003C28
-:10028000AFB90040AFBC0044AFBF00480E001544FA
-:10029000000000008FBF00488FBC00448FB90040B1
-:1002A0008FB8003C8FAF00388FAE00348FAD003078
-:1002B0008FAC002C8FAB00288FAA00248FA90020C0
-:1002C0008FA8001C8FA700188FA600148FA5001000
-:1002D0008FA4000C8FA300088FA200048FA1000040
-:1002E00027BD004C3C1B60108F7A5030377B502864
-:1002F00003400008AF7A00008F82002427BDFFE092
-:10030000AFB00010AFBF0018AFB100148C42000CAA
-:100310003C1080008E110100104000348FBF001887
-:100320000E000D84000000008F85002024047FFF54
-:100330000091202BACB100008E030104960201084D
-:1003400000031C003042FFFF00621825ACA300042C
-:100350009202010A96030114304200FF3063FFFF4E
-:100360000002140000431025ACA200089603010C03
-:100370009602010E00031C003042FFFF00621825A8
-:10038000ACA3000C960301109602011200031C009E
-:100390003042FFFF00621825ACA300108E02011846
-:1003A000ACA200148E02011CACA20018148000083C
-:1003B0008F820024978200003C0420050044182509
-:1003C00024420001ACA3001C0A0000C6A782000062
-:1003D0003C0340189442001E00431025ACA2001CB0
-:1003E0000E000DB8240400018FBF00188FB1001457
-:1003F0008FB000100000102103E0000827BD00208E
-:100400003C0780008CE202B834E50100044100089A
-:10041000240300013C0208008C42006024420001D9
-:100420003C010800AC22006003E0000800601021DD
-:100430003C0208008C42005C8CA4002094A30016AF
-:100440008CA6000494A5000E24420001ACE40280B6
-:100450002463FFFC3C010800AC22005C3C0210005D
-:10046000A4E30284A4E5028600001821ACE6028819
-:10047000ACE202B803E000080060102127BDFFE0F5
-:100480003C028000AFB0001034420100AFBF001C3E
-:10049000AFB20018AFB100148C43000094450008BF
-:1004A0002462FE002C42038110400003000381C23D
-:1004B0000A00010226100004240201001462000553
-:1004C0003C1180003C02800890420004305000FF44
-:1004D0003C11800036320100964300143202000FB6
-:1004E00000021500004310253C0308008C63004403
-:1004F00030A40004AE220080246300013C01080007
-:10050000AC2300441080000730A200028FBF001C03
-:100510008FB200188FB100148FB000100A0000CE07
-:1005200027BD00201040002D0000182130A20080BF
-:1005300010400005362200708E44001C0E000C672F
-:10054000240500A0362200708C4400008F82000C2D
-:10055000008210232C43012C10600004AF82001095
-:10056000240300010A000145AF84000C8E42000400
-:100570003C036020AF84000CAC6200143C02080015
-:100580008C42005850400015000018218C62000475
-:10059000240301FE304203FF144300100000182121
-:1005A0002E020004104000032E0200080A00014041
-:1005B0000000802114400003000000000A000140F8
-:1005C0002610FFF90000000D2402000202021004B0
-:1005D0003C036000AC626914000018218FBF001C4E
-:1005E0008FB200188FB100148FB00010006010217E
-:1005F00003E0000827BD00203C0480008C8301003C
-:1006000024020100506200033C0280080000000D3B
-:100610003C02800890430004000010213063000F6A
-:1006200000031D0003E00008AC8300800004188074
-:100630002782FF9C00621821000410C00044102390
-:100640008C640000000210C03C030800246356E4E0
-:10065000004310213C038000AC64009003E00008DC
-:10066000AF8200243C0208008C42011410400019A3
-:100670003084400030A2007F000231C03C02020002
-:100680001080001400A218253C026020AC43001426
-:100690003C0408008C8456B83C0308008C630110AD
-:1006A0003C02800024050900AC4500200086202182
-:1006B000246300013C028008AC4400643C01080053
-:1006C000AC2301103C010800AC2456B803E000083C
-:1006D000000000003C02602003E00008AC4500146C
-:1006E00003E000080000102103E0000800001021D2
-:1006F00030A2000810400008240201003C0208005B
-:100700008C42010C244200013C010800AC22010C87
-:1007100003E0000800000000148200080000000050
-:100720003C0208008C4200FC244200013C0108000D
-:10073000AC2200FC0A0001A330A200203C02080009
-:100740008C420084244200013C010800AC22008459
-:1007500030A200201040000830A200103C02080027
-:100760008C420108244200013C010800AC2201082F
-:1007700003E0000800000000104000080000000036
-:100780003C0208008C420104244200013C010800A4
-:10079000AC22010403E00008000000003C02080055
-:1007A0008C420100244200013C010800AC220100FF
-:1007B00003E000080000000027BDFFE0AFB1001417
-:1007C0003C118000AFB20018AFBF001CAFB00010EA
-:1007D0003632010096500008320200041040000733
-:1007E000320300028FBF001C8FB200188FB10014BB
-:1007F0008FB000100A0000CE27BD00201060000B53
-:10080000020028218E2401000E00018A0000000051
-:100810003202008010400003240500A10E000C6786
-:100820008E44001C0A0001E3240200018E2301040F
-:100830008F82000810430006020028218E24010048
-:100840000E00018A000000008E220104AF82000821
-:10085000000010218FBF001C8FB200188FB1001450
-:100860008FB0001003E0000827BD00202C82000498
-:1008700014400002000018212483FFFD240200021E
-:10088000006210043C03600003E00008AC626914DD
-:1008900027BDFFE0AFBF001CAFB20018AFB100141E
-:1008A000AFB000103C048000948201083043700017
-:1008B000240220001062000A2862200154400052E5
-:1008C0008FBF001C24024000106200482402600018
-:1008D0001062004A8FBF001C0A0002518FB200183C
-:1008E00034820100904300098C5000189451000C90
-:1008F000240200091062001C0000902128620009F7
-:10090000144000218F8200242402000A5062001249
-:10091000323100FF2402000B1062000F00000000C3
-:100920002402000C146200188F8200243C0208008C
-:100930008C4256B824030900AC83002000501021DB
-:100940003C038008AC6200643C010800AC2256B84D
-:100950000A0002508FBF001C0E0001E900102602A1
-:100960000A0002308F8200240E0001E900102602E6
-:100970003C0380089462001A8C72000C3042FFFF26
-:10098000020280258F8200248C42000C5040001E01
-:100990008FBF001C0E000D84000000003C02800090
-:1009A00034420100944300088F82002400031C009D
-:1009B0009444001E8F82002000641825AC50000073
-:1009C00024040001AC510004AC520008AC40000CFF
-:1009D000AC400010AC400014AC4000180E000DB844
-:1009E000AC43001C0A0002508FBF001C0E000440E4
-:1009F000000000000A0002508FBF001C0E000C9F78
-:100A0000000000008FBF001C8FB200188FB10014CF
-:100A10008FB000100000102103E0000827BD002067
-:100A200027BDFFD8AFB400203C036010AFBF002447
-:100A3000AFB3001CAFB20018AFB10014AFB00010DC
-:100A40008C6450002402FF7F3C1408002694563822
-:100A5000008220243484380CAC6450003C028000B6
-:100A6000240300370E0014B0AC4300083C07080014
-:100A700024E70618028010212404001D2484FFFFAF
-:100A8000AC4700000481FFFD244200043C02080042
-:100A9000244207C83C010800AC2256403C02080032
-:100AA000244202303C030800246306203C04080072
-:100AB000248403B43C05080024A506F03C06080085
-:100AC00024C62C9C3C010800AC2256803C02080045
-:100AD000244205303C010800AC2756843C01080044
-:100AE000AC2656943C010800AC23569C3C010800FF
-:100AF000AC2456A03C010800AC2556A43C010800DB
-:100B0000AC2256A83C010800AC23563C3C0108002E
-:100B1000AC2456443C010800AC2056603C0108005F
-:100B2000AC2556643C010800AC2056703C0108001E
-:100B3000AC27567C3C010800AC2656903C010800CE
-:100B4000AC2356980E00056E00000000AF80000C2C
-:100B50003C0280008C5300008F8300043C0208009C
-:100B60008C420020106200213262000700008821C0
-:100B70002792FF9C3C100800261056E43C02080017
-:100B80008C42002024050001022518040043202483
-:100B90008F820004004310245044000C26310001D1
-:100BA00010800008AF9000248E4300003C028000BB
-:100BB000AC4300900E000D4BAE05000C0A0002C1C4
-:100BC00026310001AE00000C263100012E22000269
-:100BD000261000381440FFE9265200043C020800A9
-:100BE0008C420020AF820004326200071040FFD91F
-:100BF0003C028000326200011040002D326200028F
-:100C00003C0580008CA2010000002021ACA2002045
-:100C10008CA301042C42078110400008ACA300A85B
-:100C200094A2010824032000304270001443000302
-:100C30003C02800890420005304400FF0E0001593C
-:100C4000000000003C0280009042010B304300FF96
-:100C50002C62001E54400004000310800E00018628
-:100C60000A0002EC00000000005410218C42000039
-:100C70000040F80900000000104000043C02800021
-:100C80008C4301043C026020AC4300143C02080089
-:100C90008C4200343C0440003C03800024420001AC
-:100CA000AC6401383C010800AC220034326200021E
-:100CB00010400010326200043C1080008E0201409F
-:100CC000000020210E000159AE0200200E00038317
-:100CD000000000003C024000AE0201783C02080027
-:100CE0008C420038244200013C010800AC2200384C
-:100CF000326200041040FF973C0280003C108000EC
-:100D00008E020180000020210E000159AE02002059
-:100D10008E03018024020F00546200073C02800809
-:100D20008E0201883C0300E03042FFFF00431025A3
-:100D30000A000328AE020080344200809042000086
-:100D400024030050304200FF14430007000000005D
-:100D50000E000362000000001440000300000000C9
-:100D60000E000971000000003C0208008C42003CAB
-:100D70003C0440003C03800024420001AC6401B804
-:100D80003C010800AC22003C0A0002A33C028000A7
-:100D90003C02900034420001008220253C02800089
-:100DA000AC4400203C0380008C6200200440FFFE25
-:100DB0000000000003E00008000000003C0280008A
-:100DC000344300010083202503E00008AC440020E8
-:100DD00027BDFFE0AFB10014AFB000100080882144
-:100DE000AFBF00180E00033230B000FF8F83FF94B6
-:100DF000022020219062002502028025A07000259B
-:100E00008C7000183C0280000E00033D020280241A
-:100E10001600000B8FBF00183C0480008C8201F884
-:100E20000440FFFE348201C024030002AC510000E4
-:100E3000A04300043C021000AC8201F88FBF0018F0
-:100E40008FB100148FB0001003E0000827BD002010
-:100E500027BDFFE83C028000AFBF00103442018094
-:100E6000944300048C4400083063020010600005C5
-:100E7000000028210E00100C000000000A0003787A
-:100E8000240500013C02FF000480000700821824B2
-:100E90003C02040014620004240500018F82FF94C8
-:100EA00090420008240500018FBF001000A010210F
-:100EB00003E0000827BD00188F82FF982405000179
-:100EC000A040001A3C028000344201400A00034264
-:100ED0008C4400008F85FF9427BDFFE0AFBF001C4E
-:100EE000AFB20018AFB10014AFB0001090A2000074
-:100EF000304400FF38830020388200300003182B74
-:100F00000002102B0062182410600003240200501D
-:100F1000148200A88FBF001C90A20005304200017F
-:100F2000104000A48FBF001C3C02800034420140EE
-:100F3000904200082443FFFF2C6200051040009EF1
-:100F40008FB20018000310803C030800246355ACE6
-:100F5000004310218C420000004000080000000007
-:100F60003C028000345101400E0003328E24000008
-:100F70008F92FF948E2200048E50000C1602000205
-:100F800024020001AE42000C0E00033D8E2400003E
-:100F90008E220004145000068FBF001C8FB2001870
-:100FA0008FB100148FB000100A000F7827BD002009
-:100FB0008E42000C0A000419000000003C0480006E
-:100FC0003482014094A300108C4200043063FFFF80
-:100FD0001443001C0000000024020001A4A2001021
-:100FE0008C8202380441000F3C0380003C02003F29
-:100FF0003448F0003C0760003C06FFC08CE22BBC8C
-:1010000000461824004810240002130200031D8229
-:10101000106200583C0280008C8202380440FFF7C6
-:101020003C038000346201408C44000034620200C2
-:10103000AC4400003C021000AC6202380A00043BE1
-:101040008FBF001C94A200100A00041900000000C9
-:10105000240200201482000F3C0280003C03800028
-:1010600094A20012346301408C6300043042FFFFFD
-:10107000146200050000000024020001A4A2001276
-:101080000A0004028FBF001C94A200120A00041977
-:1010900000000000345101400E0003328E24000095
-:1010A0008F92FF948E230004964200123050FFFF6F
-:1010B0001603000224020001A64200120E00033DA6
-:1010C0008E2400008E220004160200068FBF001C32
-:1010D0008FB200188FB100148FB000100A00037C8B
-:1010E00027BD0020964200120A00041900000000EB
-:1010F0003C03800094A20014346301408C6300041C
-:101100003042FFFF14620008240200018FBF001C60
-:101110008FB200188FB100148FB00010A4A2001479
-:101120000A00146327BD002094A20014144000217B
-:101130008FBF001C0A000435000000003C03800043
-:1011400094A20016346301408C6300043042FFFF18
-:101150001462000D240200018FBF001C8FB2001822
-:101160008FB100148FB00010A4A200160A000B1457
-:1011700027BD00209442007824420004A4A200105D
-:101180000A00043B8FBF001C94A200162403000138
-:101190003042FFFF144300078FBF001C3C020800D1
-:1011A0008C420070244200013C010800AC22007017
-:1011B0008FBF001C8FB200188FB100148FB00010C9
-:1011C00003E0000827BD002027BDFFD8AFB20018FC
-:1011D0008F92FF94AFB10014AFBF0020AFB3001CDB
-:1011E000AFB000103C028000345101008C5001006F
-:1011F0009242000092230009304400FF2402001FA5
-:10120000106200AB28620020104000192402003850
-:101210002862000A1040000D2402000B286200081A
-:101220001040002E8F820024046001042862000216
-:101230001440002A8F820024240200061062002637
-:101240008FBF00200A00055F8FB3001C1062006092
-:101250002862000B144000FA8FBF00202402000E09
-:10126000106200788F8200240A00055F8FB3001C93
-:10127000106200D2286200391040000A2402008067
-:1012800024020036106200E528620037104000C3D7
-:1012900024020035106200D98FBF00200A00055FCC
-:1012A0008FB3001C1062002D2862008110400006E0
-:1012B000240200C824020039106200C98FBF002038
-:1012C0000A00055F8FB3001C106200A28FBF0020D0
-:1012D0000A00055F8FB3001C8F8200248C42000C33
-:1012E000104000D78FBF00200E000D8400000000CA
-:1012F0003C038000346301008C6200008F85002075
-:10130000946700089466000CACA200008C64000492
-:101310008F82002400063400ACA400049448001E10
-:101320008C62001800073C0000E83825ACA20008D9
-:101330008C62001C24040001ACA2000C9062000A24
-:1013400000C23025ACA60010ACA00014ACA0001860
-:10135000ACA7001C0A00051D8FBF00208F8200244F
-:101360008C42000C104000B68FBF00200E000D8490
-:10137000000000008F820024962400089625000CAF
-:101380009443001E000422029626000E8F82002045
-:10139000000426000083202500052C003C0300806B
-:1013A00000A6282500832025AC400000AC400004A6
-:1013B000AC400008AC40000CAC450010AC40001440
-:1013C000AC400018AC44001C0A00051C24040001B9
-:1013D0009622000C14400018000000009242000504
-:1013E0003042001014400014000000000E000332D0
-:1013F0000200202192420005020020213442001008
-:101400000E00033DA242000592420000240300208A
-:10141000304200FF10430089020020218FBF0020CE
-:101420008FB3001C8FB200188FB100148FB0001062
-:101430000A00107527BD00280000000D0A00055E97
-:101440008FBF00208C42000C1040007D8FBF002019
-:101450000E000D84000000008E2200048F84002006
-:101460009623000CAC8200003C0280089445002CBE
-:101470008F82002400031C0030A5FFFF9446001E4D
-:101480003C02400E0065182500C23025AC830004E4
-:10149000AC800008AC80000CAC800010AC80001464
-:1014A000AC800018AC86001C0A00051C2404000156
-:1014B0000E000332020020218F93FF9802002021AA
-:1014C0000E00033DA660000C020020210E00034226
-:1014D000240500018F8200248C42000C104000582B
-:1014E0008FBF00200E000D84000000009622000C2B
-:1014F0008F83002000021400AC700000AC62000476
-:10150000AC6000088E4400388F820024AC64000C6C
-:101510008E46003C9445001E3C02401FAC66001005
-:1015200000A228258E62000424040001AC6200148D
-:10153000AC600018AC65001C8FBF00208FB3001C8E
-:101540008FB200188FB100148FB000100A000DB8D0
-:1015500027BD0028240200201082003A8FB3001C0F
-:101560000E000F5E00000000104000358FBF00200D
-:101570003C0480008C8201F80440FFFE348201C0EC
-:1015800024030002AC500000A04300043C02100001
-:10159000AC8201F80A00055E8FBF00200200202106
-:1015A0008FBF00208FB3001C8FB200188FB10014C2
-:1015B0008FB000100A000EA727BD00289625000C4A
-:1015C000020020218FBF00208FB3001C8FB20018B3
-:1015D0008FB100148FB000100A000ECC27BD002878
-:1015E000020020218FB3001C8FB200188FB10014AD
-:1015F0008FB000100A000EF727BD00289225000DBD
-:10160000020020218FB3001C8FB200188FB100148C
-:101610008FB000100A000F4827BD002802002021CB
-:101620008FBF00208FB3001C8FB200188FB1001441
-:101630008FB000100A000F1F27BD00288FBF0020A9
-:101640008FB3001C8FB200188FB100148FB0001040
-:1016500003E0000827BD00283C0580008CA202782A
-:101660000440FFFE34A2024024030002AC44000008
-:10167000A04300043C02100003E00008ACA2027882
-:10168000A380001803E00008A38000193C03800039
-:101690008C6202780440FFFE8F82001CAC62024024
-:1016A00024020002A06202443C02100003E0000891
-:1016B000AC6202783C02600003E000088C425404F3
-:1016C0009083003024020005008040213063003FF9
-:1016D0000000482114620005000050219082004C57
-:1016E0009483004E304900FF306AFFFFAD00000CCC
-:1016F000AD000010AD000024950200148D05001C03
-:101700008D0400183042FFFF004910230002110031
-:10171000000237C3004038210086202300A2102B8E
-:101720000082202300A72823AD05001CAD0400186B
-:10173000A5090014A5090020A50A001603E0000869
-:10174000A50A002203E000080000000027BDFFD822
-:10175000AFB200183C128008AFB40020AFB3001C39
-:10176000AFB10014AFBF0024AFB00010365101007C
-:101770003C0260008C4254049222000C3C1408008D
-:10178000929400F7304300FF2402000110620032FF
-:101790000080982124020002146200353650008037
-:1017A0000E00143D000000009202004C2403FF8054
-:1017B0003C0480003042007F000211C024420240FD
-:1017C0000262102100431824AC8300949245000863
-:1017D0009204004C3042007F3C03800614850007D1
-:1017E000004380212402FFFFA22200112402FFFFF8
-:1017F000A62200120A0005D22402FFFF9602002052
-:10180000A222001196020022A62200128E020024BB
-:101810003C048008AE2200143485008090A2004C65
-:1018200034830100A06200108CA2003CAC6200185E
-:101830008C820068AC6200F48C820064AC6200F0C0
-:101840008C82006CAC6200F824020001A0A2006847
-:101850000A0005EE3C0480080E001456000000004B
-:1018600036420080A04000680A0005EE3C04800873
-:10187000A2000068A20000690A0006293C02800854
-:10188000348300808C62003834850100AC62006CC7
-:1018900024020001A062006990A200D59083000894
-:1018A000305100FF3072007F12320019001111C058
-:1018B00024420240026210212403FF8000431824C6
-:1018C0003C048000AC8300943042007F3C038006DF
-:1018D000004380218E02000C1040000D02002021E8
-:1018E0000E00057E0000000026220001305100FF9E
-:1018F0009203003C023410260002102B0002102339
-:101900003063007F022288240A0005F8A203003C0D
-:101910003C088008350401008C8200E03507008017
-:10192000ACE2003C8C8200E0AD02000090E5004C8F
-:10193000908600D590E3004C908400D52402FF806F
-:1019400000A228243063007F308400FF00A62825F1
-:101950000064182A1060000230A500FF38A500803E
-:10196000A0E5004CA10500093C0280089043000E50
-:10197000344400803C058000A043000A8C8300189A
-:101980003C027FFF3442FFFF00621824AC83001842
-:101990008CA201F80440FFFE00000000ACB301C0BF
-:1019A0008FBF00248FB400208FB3001C8FB20018AB
-:1019B0008FB100148FB0001024020002A0A201C455
-:1019C00027BD00283C02100003E00008ACA201F88B
-:1019D00090A2000024420001A0A200003C030800E5
-:1019E0008C6300F4304200FF144300020080302179
-:1019F000A0A0000090A200008F84001C000211C073
-:101A00002442024024830040008220212402FF80DF
-:101A1000008220243063007F3C02800A006218218B
-:101A20003C028000AC44002403E00008ACC300008A
-:101A300094820006908300058C85000C8C86001033
-:101A40008C8700188C88001C8C8400203C010800C6
-:101A5000A42256C63C010800A02356C53C0108003C
-:101A6000AC2556CC3C010800AC2656D03C01080001
-:101A7000AC2756D83C010800AC2856DC3C010800D5
-:101A8000AC2456E003E00008000000003C0280089F
-:101A9000344201008C4400343C038000346504006F
-:101AA000AC6400388C420038AF850028AC62003C42
-:101AB0003C020005AC6200300000000000000000A5
-:101AC00003E00008000000003C020006308400FF34
-:101AD000008220253C028000AC4400300000000061
-:101AE00000000000000000003C0380008C62000049
-:101AF000304200101040FFFD3462040003E0000893
-:101B0000AF82002894C200003C080800950800CA73
-:101B100030E7FFFF0080482101021021A4C200002D
-:101B200094C200003042FFFF00E2102B544000013D
-:101B3000A4C7000094A200003C0308008C6300CC02
-:101B400024420001A4A2000094A200003042FFFF42
-:101B5000144300073C0280080107102BA4A00000DA
-:101B60005440000101003821A4C700003C02800855
-:101B7000344601008CC3002894A200003C0480007D
-:101B80003042FFFE000210C000621021AC82003C17
-:101B90008C82003C006218231860000400000000E2
-:101BA0008CC200240A0006BA244200018CC2002420
-:101BB000AC8200383C020050344200103C038000EC
-:101BC000AC620030000000000000000000000000D7
-:101BD0008C620000304200201040FFFD0000000039
-:101BE00094A200003C04800030420001000210C0BA
-:101BF000004410218C430400AD2300008C420404F7
-:101C0000AD2200043C02002003E00008AC8200305A
-:101C100027BDFFE0AFB20018AFB10014AFB00010A5
-:101C2000AFBF001C94C2000000C080213C1208001D
-:101C3000965200C624420001A6020000960300004E
-:101C400094E2000000E03021144300058FB1003021
-:101C50000E00068F024038210A0006F10000000045
-:101C60008C8300048C82000424420040046100073D
-:101C7000AC8200048C8200040440000400000000D8
-:101C80008C82000024420001AC8200009602000019
-:101C90003042FFFF50520001A600000096220000D3
-:101CA00024420001A62200003C02800834420100C8
-:101CB000962300009442003C144300048FBF001C94
-:101CC00024020001A62200008FBF001C8FB2001862
-:101CD0008FB100148FB0001003E0000827BD002072
-:101CE00027BDFFE03C028008AFBF0018344201006E
-:101CF0008C4800343C03800034690400AC68003830
-:101D00008C42003830E700FFAF890028AC62003C0D
-:101D10003C020005AC620030000000000000000042
-:101D200000000000000000000000000000000000B3
-:101D30008C82000C8C82000C97830016AD22000070
-:101D40008C82001000604021AD2200048C820018BB
-:101D5000AD2200088C82001CAD22000C8CA2001465
-:101D6000AD2200108C820020AD220014908200056C
-:101D7000304200FF00021200AD2200188CA20018B1
-:101D8000AD22001C8CA2000CAD2200208CA2001001
-:101D9000AD2200248CA2001CAD2200288CA20020C1
-:101DA000AD22002C3402FFFFAD260030AD20003400
-:101DB000506200013408FFFFAD28003850E00011E8
-:101DC0003C0280083C048008348401009482005066
-:101DD0003042FFFFAD22003C9483004494850044D0
-:101DE000240200013063FFFF000318C200641821C1
-:101DF0009064006430A5000700A210040A00075C8C
-:101E00000044102534420100AD20003C94430044BE
-:101E1000944400443063FFFF000318C2006218219D
-:101E200030840007906500642402000100821004E1
-:101E30000002102700451024A0620064000000008A
-:101E400000000000000000003C0200063442004098
-:101E50003C038000AC620030000000000000000085
-:101E6000000000008C620000304200101040FFFDB6
-:101E70003C06800834C201503463040034C7014A70
-:101E800034C4013434C5014034C60144AFA200104B
-:101E90000E0006D2AF8300288FBF001803E00008B1
-:101EA00027BD00208F8300143C0608008CC600E884
-:101EB0008F82001C30633FFF000319800046102111
-:101EC000004310212403FF80004318243C068000B7
-:101ED000ACC300283042007F3C03800C004330211B
-:101EE00090C2000D30A500FF0000382134420010E0
-:101EF000A0C2000D8F8900143C028008344201000A
-:101F00009443004400091382304800032402000176
-:101F1000A4C3000E1102000B2902000210400005AC
-:101F2000240200021100000C240300010A0007A48F
-:101F30000000182111020006000000000A0007A49A
-:101F4000000018218CC2002C0A0007A424430001C1
-:101F50008CC20014244300018CC200180043102BD3
-:101F60005040000A240700012402002714A20003A5
-:101F70003C0380080A0007B1240700013463010014
-:101F80009462004C24420001A462004C00091382B8
-:101F9000304300032C620002104000090080282119
-:101FA000146000040000000094C200340A0007C15D
-:101FB0003046FFFF8CC600380A0007C10080282188
-:101FC000000030213C040800248456C00A000706A3
-:101FD0000000000027BDFF90AFB60068AFB50064F9
-:101FE000AFB40060AFB3005CAFB20058AFB1005403
-:101FF000AFBF006CAFB000508C9000000080B021EB
-:102000003C0208008C4200E8960400328F83001CDA
-:102010002414FF8030843FFF0062182100042180D7
-:1020200000641821007410243C13800000A090214B
-:1020300090A50000AE620028920400323C02800CA1
-:102040003063007F00628821308400C02402004099
-:10205000148200320000A8218E3500388E2200182C
-:102060001440000224020001AE2200189202003C3B
-:10207000304200201440000E8F83001C000511C068
-:102080002442024000621821306400783C02008043
-:102090000082202500741824AE630800AE64081086
-:1020A0008E2200188E03000800431021AE22001873
-:1020B0008E22002C8E230018244200010062182B6F
-:1020C0001060004300000000924200002442000122
-:1020D000A24200003C0308008C6300F4304200FF81
-:1020E00050430001A2400000924200008F84001C77
-:1020F000000211C024420240248300403063007F6C
-:10210000008220213C02800A0094202400621821D1
-:10211000AE6400240A0008D2AEC30000920300326D
-:102120002402FFC000431024304200FF1440000589
-:1021300024020001AE220018962200340A00084250
-:102140003055FFFF8E22001424420001AE220018F9
-:102150009202003000021600000216030441001C27
-:10216000000000009602003227A400100080282101
-:10217000A7A20016960200320000302124070001B9
-:102180003042FFFFAF8200140E000706AFA0001C14
-:10219000960200328F83001C3C0408008C8400E807
-:1021A00030423FFF000211800064182100621821B4
-:1021B00000741024AE62002C3063007F3C02800E5D
-:1021C000006218219062000D3042007FA062000D75
-:1021D0009222000D304200105040007892420000E0
-:1021E0003C028008344401009482004C8EC30000FD
-:1021F0003C130800967300C62442FFFFA482004CE3
-:10220000946200329623000E3054FFFF3070FFFFBF
-:102210003C0308008C6300D000701807A7A30038A7
-:102220009482003E3063FFFF3042FFFF14620007DC
-:10223000000000008C8200303C038000244200300B
-:10224000AC62003C0A00086A8C82002C9482004038
-:102250003042FFFF5462000927A400408C820038FE
-:102260003C03800024420030AC62003C8C8200348D
-:10227000AC6200380A0008793C03800027A50038CA
-:1022800027A60048026038210E00068FA7A000484C
-:102290008FA300403C02800024630030AC43003830
-:1022A0008FA30044AC43003C3C0380003C0200058B
-:1022B000AC6200303C028008344401009482004249
-:1022C000346304003042FFFF0202102B1440000769
-:1022D000AF8300289482004E9483004202021021B2
-:1022E000004310230A00088F3043FFFF9483004E01
-:1022F00094820042026318210050102300621823C8
-:102300003063FFFF3C028008344401009482003CAB
-:102310003042FFFF14430003000000000A00089F42
-:10232000240300019482003C3042FFFF0062102B26
-:10233000144000058F8200289482003C0062102324
-:102340003043FFFF8F820028AC550000AC400004F2
-:10235000AC540008AC43000C3C02000634420010B0
-:102360003C038000AC620030000000000000000070
-:10237000000000008C620000304200101040FFFDA1
-:102380003C04800834840100001018C20064182145
-:102390009065006432020007240600010046100424
-:1023A00000451025A0620064948300429622000E2E
-:1023B00050430001A386001892420000244200010D
-:1023C000A24200003C0308008C6300F4304200FF8E
-:1023D00050430001A2400000924200008F84001C84
-:1023E000000211C0244202402483004000822021C8
-:1023F0002402FF80008220243063007F3C02800A98
-:10240000006218213C028000AC440024AEC30000EE
-:102410008FBF006C8FB600688FB500648FB400600A
-:102420008FB3005C8FB200588FB100548FB0005052
-:1024300003E0000827BD007027BDFFD8AFB3001C24
-:10244000AFB20018AFB10014AFB00010AFBF0020A2
-:102450000080982100E0802130B1FFFF0E000D8444
-:1024600030D200FF0000000000000000000000006B
-:102470008F8200208F830024AC510000AC520004F6
-:10248000AC530008AC40000CAC400010AC40001451
-:10249000AC4000189463001E02038025AC50001C61
-:1024A0000000000000000000000000002404000103
-:1024B0008FBF00208FB3001C8FB200188FB10014A3
-:1024C0008FB000100A000DB827BD002830A5FFFF0F
-:1024D0000A0008DC30C600FF3C02800834430100DB
-:1024E0009462000E3C080800950800C63046FFFFC5
-:1024F00014C000043402FFFF946500EA0A000929B1
-:102500008F84001C10C20027000000009462004E5F
-:102510009464003C3045FFFF00A6102300A6182B52
-:102520003087FFFF106000043044FFFF00C5102318
-:1025300000E210233044FFFF0088102B1040000EF3
-:1025400000E810233C028008344401002403000109
-:1025500034420080A44300162402FFFFA482000E30
-:10256000948500EA8F84001C0000302130A5FFFF15
-:102570000A0009013C0760200044102A10400009AD
-:102580003C0280083443008094620016304200010F
-:10259000104000043C0280009442007E244200145B
-:1025A000A462001603E000080000000027BDFFE061
-:1025B0003C028008AFBF001CAFB0001834420100DD
-:1025C000944300429442004C104000193068FFFFD1
-:1025D0009383001824020001146200298FBF001C9D
-:1025E0003C06800834D00100000810C200501021C1
-:1025F000904200643103000734C70148304200FFB5
-:10260000006210073042000134C9014E34C4012C6D
-:1026100034C5013E1040001634C601420E0006D2F9
-:10262000AFA90010960200420A0009463048FFFF99
-:102630003C028008344401009483004494820042A8
-:102640001043000F8FBF001C94820044A4820042FC
-:1026500094820050A482004E8C820038AC820030FC
-:1026600094820040A482003E9482004AA4820048E2
-:102670008FBF001C8FB000180A00090427BD00207E
-:102680008FB0001803E0000827BD002027BDFFA081
-:10269000AFB1004C3C118000AFBF0058AFB3005445
-:1026A000AFB20050AFB000483626018890C2000398
-:1026B0003044007FA3A400108E32018090C200003D
-:1026C0003043007F240200031062003BAF92001CE5
-:1026D00028620004104000062402000424020002C4
-:1026E000106200098FBF00580A000B0F8FB300540F
-:1026F0001062004D240200051062014E8FBF005889
-:102700000A000B0F8FB30054000411C002421021C5
-:102710002404FF8024420240004410242643004049
-:10272000AE2200243063007F3C02800A0062182140
-:102730009062003CAFA3003C00441025A062003C26
-:102740008FA3003C9062003C304200401040016C7E
-:102750008FBF00583C108008A3800018361001007D
-:102760008E0200E08C63003427A4003C27A50010F3
-:10277000004310210E0007C3AE0200E093A2001038
-:102780003C038000A20200D58C6202780440FFFE68
-:102790008F82001CAC62024024020002A06202444C
-:1027A0003C021000AC6202780E0009390000000003
-:1027B0000A000B0E8FBF00583C05800890C3000133
-:1027C00090A2000B1443014E8FBF005834A4008028
-:1027D0008C8200189082004C90A200083C0260009D
-:1027E0008C4254048C8300183C027FFF3442FFFF6C
-:1027F000006218243C0208008C4200B4AC8300182C
-:102800003C038000244200013C010800AC2200B4DB
-:102810008C6201F80440FFFE8F82001CAC6201C094
-:102820000A000AD6240200023C10800890C300016E
-:102830009202000B144301328FBF005827A40018E6
-:1028400036050110240600033C0260008C4254044B
-:102850000E000E470000000027A40028360501F0F6
-:102860000E000E47240600038FA200283603010045
-:10287000AE0200648FA2002CAE0200688FA200306E
-:10288000AE02006C93A40018906300D52402FF8070
-:102890000082102400431025304900FF3084007F5F
-:1028A0003122007F0082102A544000013929008023
-:1028B000000411C0244202402403FF800242102180
-:1028C00000431024AE220094264200403042007F94
-:1028D0003C038006004340218FA3001C2402FFFF1D
-:1028E000AFA800403C130800927300F71062003359
-:1028F00093A2001995030014304400FF3063FFFFDA
-:102900000064182B106000100000000095040014F3
-:102910008D07001C8D0600183084FFFF0044202323
-:102920000004210000E438210000102100E4202BE5
-:1029300000C2302100C43021AD07001CAD060018D4
-:102940000A000A2F93A20019950400148D07001C99
-:102950008D0600183084FFFF008220230004210030
-:10296000000010210080182100C2302300E4202B39
-:1029700000C4302300E33823AD07001CAD06001867
-:1029800093A200198FA30040A462001497A2001A1A
-:10299000A46200168FA2001CAC6200108FA2001C63
-:1029A000AC62000C93A20019A462002097A2001A46
-:1029B000A46200228FA2001CAC6200243C048008A8
-:1029C000348300808C6200388FA20020012088218F
-:1029D000AC62003C8FA20020AC82000093A20018E1
-:1029E000A062004C93A20018A0820009A0600068B9
-:1029F00093A20018105100512407FF803229007F54
-:102A0000000911C024420240024210213046007FDA
-:102A10003C03800000471024AC6200943C02800616
-:102A200000C2302190C2003CAFA60040000020212F
-:102A300000471025A0C2003C8FA80040950200026C
-:102A4000950300148D07001C3042FFFF3063FFFF29
-:102A50008D060018004310230002110000E2382107
-:102A600000E2102B00C4302100C23021AD07001C51
-:102A7000AD06001895020002A5020014A50000167C
-:102A80008D020008AD0200108D020008AD02000C9E
-:102A900095020002A5020020A50000228D02000878
-:102AA000AD0200249102003C304200401040001A68
-:102AB000262200013C108008A3A90038A38000183A
-:102AC000361001008E0200E08D03003427A4004080
-:102AD00027A50038004310210E0007C3AE0200E016
-:102AE00093A200383C038000A20200D58C620278D9
-:102AF0000440FFFE8F82001CAC62024024020002F0
-:102B0000A06202443C021000AC6202780E00093957
-:102B100000000000262200013043007F14730004EF
-:102B2000004020212403FF8002231024004320269C
-:102B300093A200180A000A4B309100FF93A40018DA
-:102B40008FA3001C2402FFFF1062000A308900FFDF
-:102B500024820001248300013042007F14530005C9
-:102B6000306900FF2403FF800083102400431026F7
-:102B7000304900FF3C028008904200080120882173
-:102B8000305000FF123000193222007F000211C0C5
-:102B900002421021244202402403FF8000431824F3
-:102BA0003C048000AC8300943042007F3C038006EC
-:102BB000004310218C43000C004020211060000BCA
-:102BC000AFA200400E00057E000000002623000199
-:102BD0002405FF803062007F145300020225202468
-:102BE000008518260A000AAF307100FF3C048008F7
-:102BF000348400808C8300183C027FFF3442FFFF46
-:102C000000621824AC8300183C0380008C6201F839
-:102C10000440FFFE00000000AC7201C0240200026C
-:102C2000A06201C43C021000AC6201F80A000B0E65
-:102C30008FBF00583C04800890C300019082000BB5
-:102C40001443002F8FBF0058349000809202000878
-:102C500030420040104000200000000092020008B6
-:102C60000002160000021603044100050240202164
-:102C70000E000ECC240500930A000B0E8FBF0058E7
-:102C80009202000924030018304200FF1443000D93
-:102C900002402021240500390E000E64000030217E
-:102CA0000E0003328F84001C8F82FF9424030012D5
-:102CB000A04300090E00033D8F84001C0A000B0E88
-:102CC0008FBF0058240500360E000E64000030212E
-:102CD0000A000B0E8FBF00580E0003320240202165
-:102CE000920200058F84001C344200200E00033D38
-:102CF000A20200050E0010758F84001C8FBF0058C3
-:102D00008FB300548FB200508FB1004C8FB0004889
-:102D100003E0000827BD00603C0280083445010044
-:102D20003C0280008C42014094A3000E0000302140
-:102D300000402021AF82001C3063FFFF3402FFFF00
-:102D4000106200063C0760202402FFFFA4A2000ED0
-:102D500094A500EA0A00090130A5FFFF03E000087E
-:102D60000000000027BDFFC83C0280003C06800830
-:102D7000AFB5002CAFB1001CAFBF0030AFB400281E
-:102D8000AFB30024AFB20020AFB00018345101003F
-:102D900034C501008C4301008E2200148CA400E491
-:102DA0000000A821AF83001C0044102318400052EB
-:102DB000A38000188E22001400005021ACA200E471
-:102DC00090C3000890A200D53073007FA3A200102A
-:102DD0008CB200E08CB400E4304200FF1053003BA2
-:102DE00093A200108F83001C2407FF80000211C0F3
-:102DF0000062102124420240246300400047102456
-:102E00003063007F3C0980003C08800A006818217C
-:102E1000AD2200248C62003427A4001427A50010E2
-:102E2000024280210290102304400028AFA3001426
-:102E30009062003C00E21024304200FF1440001970
-:102E4000020090219062003C34420040A062003CAD
-:102E50008F86001C93A3001024C200403042007FE4
-:102E6000004828213C0208008C4200F42463000141
-:102E7000306400FF14820002A3A30010A3A000107E
-:102E800093A20010AFA50014000211C0244202401A
-:102E900000C2102100471024AD2200240A000B4577
-:102EA00093A200100E0007C3000000003C0280083F
-:102EB00034420100AC5000E093A30010240A00014A
-:102EC000A04300D50A000B4593A200102402000184
-:102ED000154200093C0380008C6202780440FFFE2A
-:102EE0008F82001CAC62024024020002A0620244F5
-:102EF0003C021000AC6202789222000B2403000214
-:102F0000304200FF144300720000000096220008C7
-:102F1000304300FF24020082146200402402008437
-:102F20003C028000344901008D22000C95230006EC
-:102F3000000216023063FFFF3045003F24020027E5
-:102F400010A2000FAF83001428A200281040000830
-:102F5000240200312402002110A2000924020025CD
-:102F600010A20007938200190A000BBD00000000A8
-:102F700010A20007938200190A000BBD0000000098
-:102F80000E000777012020210A000C3D0000000000
-:102F90003C0380008C6202780440FFFE8F82001C9C
-:102FA000AC62024024020002A06202443C02100013
-:102FB000AC6202780A000C3D000000009523000678
-:102FC000912400058D25000C8D2600108D270018FA
-:102FD0008D28001C8D290020244200013C0108009E
-:102FE000A42356C63C010800A02456C53C01080095
-:102FF000AC2556CC3C010800AC2656D03C0108005C
-:10300000AC2756D83C010800AC2856DC3C0108002F
-:10301000AC2956E00A000C3DA38200191462000A94
-:10302000240200813C02800834420100944500EAF9
-:10303000922600058F84001C30A5FFFF30C600FFDC
-:103040000A000BFE3C0760211462005C00000000D7
-:103050009222000A304300FF306200201040000737
-:10306000306200403C02800834420100944500EA8E
-:103070008F84001C0A000BFC24060040104000074F
-:10308000000316003C02800834420100944500EA27
-:103090008F84001C0A000BFC24060041000216036A
-:1030A000044100463C02800834420100944500EA95
-:1030B0008F84001C2406004230A5FFFF3C076019E6
-:1030C0000E000901000000000A000C3D0000000095
-:1030D0009222000B24040016304200FF1044000628
-:1030E0003C0680009222000B24030017304200FFB0
-:1030F000144300320000000034C5010090A2000B10
-:10310000304200FF1444000B000080218CA20020FC
-:103110008CA400202403FF800043102400021140EF
-:103120003084007F004410253C032000004310251C
-:10313000ACC2083094A2000800021400000214037C
-:10314000044200012410000194A2000830420080D3
-:103150005040001A0200A82194A20008304220002A
-:10316000504000160200A8218CA300183C021C2D20
-:10317000344219ED106200110200A8213C0208003F
-:103180008C4200D4104000053C0280082403000457
-:1031900034420100A04300FC3C028008344201009C
-:1031A000944500EA8F84001C2406000630A5FFFF2A
-:1031B0000E0009013C0760210200A8210E00093918
-:1031C000000000009222000A304200081040000473
-:1031D00002A010210E0013790000000002A01021AF
-:1031E0008FBF00308FB5002C8FB400288FB3002420
-:1031F0008FB200208FB1001C8FB0001803E00008D0
-:1032000027BD00382402FF80008220243C02900069
-:1032100034420007008220253C028000AC4400209C
-:103220003C0380008C6200200440FFFE0000000090
-:1032300003E00008000000003C0380002402FF803F
-:10324000008220243462000700822025AC64002024
-:103250008C6200200440FFFE0000000003E0000834
-:103260000000000027BDFFD8AFB3001CAFB10014B1
-:10327000AFB00010AFBF0020AFB200183C1180000B
-:103280003C0280088E32002034530100AE2400201E
-:10329000966300EA000514003C074000004738250B
-:1032A00000A08021000030210E0009013065FFFFE1
-:1032B000240200A1160200022402FFFFA2620009FC
-:1032C000AE3200208FBF00208FB3001C8FB20018D9
-:1032D0008FB100148FB0001003E0000827BD002854
-:1032E0003C0280082403000527BDFFE834420100AA
-:1032F000A04300FCAFBF00103C0280008C420100E4
-:10330000240500A1004020210E000C67AF82001CA4
-:103310003C0380008C6202780440FFFE8F82001C18
-:103320008FBF001027BD0018AC62024024020002CB
-:10333000A06202443C021000AC62027803E0000884
-:103340000000000027BDFFE83C068000AFBF001072
-:1033500034C7010094E20008304400FF3883008243
-:10336000388200842C6300012C4200010062182581
-:103370001060002D24020083938200195040003B0E
-:103380008FBF00103C020800904256CC8CC4010054
-:103390003C06080094C656C63045003F38A30032AC
-:1033A00038A2003F2C6300012C4200010062182566
-:1033B000AF84001CAF860014A380001914600007BE
-:1033C00000E020212402002014A2001200000000CE
-:1033D0003402FFFF14C2000F00000000240200208E
-:1033E00014A2000500E028218CE300142402FFFF52
-:1033F0005062000B8FBF00103C040800248456C0AC
-:10340000000030210E000706240700010A000CD638
-:103410008FBF00100E000777000000008FBF001064
-:103420000A00093927BD001814820004240200850F
-:103430008CC501040A000CE1000020211482000662
-:103440002482FF808CC50104240440008FBF00103B
-:103450000A00016727BD0018304200FF2C4200021D
-:1034600010400004240200228FBF00100A000B2726
-:1034700027BD0018148200048F8200248FBF001023
-:103480000A000C8627BD00188C42000C1040001E5C
-:1034900000E0282190E300092402001814620003D0
-:1034A000240200160A000CFC240300081462000722
-:1034B00024020017240300123C02800834420080DA
-:1034C000A04300090A000D0994A7000854620007F0
-:1034D00094A700088F82FF942404FFFE9043000508
-:1034E00000641824A043000594A7000890A6001BC0
-:1034F0008CA4000094A500068FBF001000073C00BC
-:103500000A0008DC27BD00188FBF001003E0000888
-:1035100027BD00188F8500243C04800094A2002A57
-:103520008CA30034000230C02402FFF000C210243B
-:1035300000621821AC83003C8CA200303C03800068
-:10354000AC8200383C02005034420010AC620030C3
-:103550000000000000000000000000008C6200007D
-:10356000304200201040FFFD30C20008104000062D
-:103570003C0280008C620408ACA200208C62040C27
-:103580000A000D34ACA200248C430400ACA300203C
-:103590008C420404ACA200243C0300203C028000C6
-:1035A000AC4300303C0480008C8200300043102487
-:1035B0001440FFFD8F8600243C020040AC820030A6
-:1035C00094C3002A94C2002894C4002C94C5002EF1
-:1035D00024630001004410213064FFFFA4C20028CE
-:1035E00014850002A4C3002AA4C0002A03E0000836
-:1035F000000000008F84002427BDFFE83C05800404
-:1036000024840010AFBF00100E000E472406000AED
-:103610008F840024948200129483002E3042000F85
-:10362000244200030043180424027FFF0043102BB0
-:1036300010400002AC8300000000000D0E000D13CE
-:10364000000000008F8300248FBF001027BD0018EA
-:10365000946200149463001A3042000F00021500B7
-:10366000006218253C02800003E00008AC4300A083
-:103670008F8300243C028004944400069462001A64
-:103680008C650000A4640016004410233042FFFF44
-:103690000045102B03E00008384200018F8400240D
-:1036A0003C0780049486001A8C85000094E2000692
-:1036B000A482001694E3000600C310233042FFFFEB
-:1036C0000045102B384200011440FFF8A483001677
-:1036D00003E00008000000008F8400243C02800406
-:1036E000944200069483001A8C850000A482001680
-:1036F000006210233042FFFF0045102B38420001CA
-:103700005040000D8F850024006030213C0780046C
-:1037100094E20006A482001694E3000600C310237E
-:103720003042FFFF0045102B384200011440FFF8E3
-:10373000A48300168F8500243C03800034620400BB
-:103740008CA40020AF820020AC6400388CA200243E
-:10375000AC62003C3C020005AC62003003E00008B3
-:10376000ACA000048F8400243C0300068C8200047B
-:1037700000021140004310253C038000AC62003081
-:103780000000000000000000000000008C6200004B
-:10379000304200101040FFFD34620400AC80000491
-:1037A00003E00008AF8200208F86002427BDFFE0E1
-:1037B000AFB10014AFB00010AFBF00188CC300044D
-:1037C0008CC500248F820020309000FF94C4001A22
-:1037D00024630001244200202484000124A7002047
-:1037E000ACC30004AF820020A4C4001AACC70024FC
-:1037F00004A100060000882104E2000594C2001A1A
-:103800008CC2002024420001ACC2002094C2001AE5
-:1038100094C300282E040001004310262C4200010E
-:10382000004410245040000594C2001A24020001F4
-:10383000ACC2000894C2001A94C300280010202BC8
-:10384000004310262C4200010044102514400007BC
-:10385000000000008CC20008144000042402001084
-:103860008CC300041462000F8F8500240E000DA786
-:10387000241100018F820024944300289442001AEE
-:1038800014430003000000000E000D1300000000B0
-:10389000160000048F8500240E000D840000000037
-:1038A0008F85002494A2001E94A4001C24420001D1
-:1038B0003043FFFF14640002A4A2001EA4A0001E57
-:1038C0001200000A3C02800494A2001494A3001A7F
-:1038D0003042000F00021500006218253C028000F3
-:1038E000AC4300A00A000E1EACA0000894420006E3
-:1038F00094A3001A8CA40000A4A200160062102356
-:103900003042FFFF0044102B384200011040000DF0
-:1039100002201021006030213C07800494E2000660
-:10392000A4A2001694E3000600C310233042FFFF58
-:103930000044102B384200011440FFF8A4A30016E5
-:10394000022010218FBF00188FB100148FB000101B
-:1039500003E0000827BD002003E00008000000008D
-:103960008F82002C3C03000600021140004310250A
-:103970003C038000AC62003000000000000000004A
-:10398000000000008C620000304200101040FFFD7B
-:1039900034620400AF82002803E00008AF80002CEE
-:1039A00003E000080000102103E000080000000010
-:1039B0003084FFFF30A5FFFF0000182110800007B2
-:1039C000000000003082000110400002000420428C
-:1039D000006518210A000E3D0005284003E000089C
-:1039E0000060102110C0000624C6FFFF8CA200005A
-:1039F00024A50004AC8200000A000E4724840004C1
-:103A000003E000080000000010A0000824A3FFFF4E
-:103A1000AC86000000000000000000002402FFFF50
-:103A20002463FFFF1462FFFA2484000403E000080B
-:103A3000000000003C0280083442008024030001A2
-:103A4000AC43000CA4430010A4430012A443001490
-:103A500003E00008A44300168F82002427BDFFD88E
-:103A6000AFB3001CAFB20018AFB10014AFB000107C
-:103A7000AFBF00208C47000C248200802409FF8007
-:103A80003C08800E3043007F008080213C0A80008B
-:103A9000004920240068182130B100FF30D200FF17
-:103AA00010E000290000982126020100AD44002CFE
-:103AB000004928243042007F004820219062000005
-:103AC00024030050304200FF1443000400000000B3
-:103AD000AD45002C948200EA3053FFFF0E000D84A8
-:103AE000000000008F8200248F83002000112C0032
-:103AF0009442001E001224003484000100A22825F4
-:103B00003C02400000A22825AC7000008FBF0020BE
-:103B1000AC6000048FB20018AC7300088FB10014C1
-:103B2000AC60000C8FB3001CAC6400108FB00010B0
-:103B3000AC60001424040001AC60001827BD00280C
-:103B40000A000DB8AC65001C8FBF00208FB3001CAD
-:103B50008FB200188FB100148FB0001003E000087E
-:103B600027BD00283C06800034C201009043000FAE
-:103B7000240200101062000E2865001110A000073A
-:103B800024020012240200082405003A10620006F4
-:103B90000000302103E0000800000000240500358B
-:103BA0001462FFFC000030210A000E6400000000D7
-:103BB0008CC200748F83FF9424420FA003E000089E
-:103BC000AC62000C27BDFFE8AFBF00100E0003423F
-:103BD000240500013C0480088FBF0010240200016E
-:103BE00034830080A462001227BD00182402000163
-:103BF00003E00008A080001A27BDFFE0AFB2001864
-:103C0000AFB10014AFB00010AFBF001C30B2FFFF67
-:103C10000E000332008088213C028008345000806E
-:103C20009202000924030004304200FF1443000CF8
-:103C30003C028008124000082402000A0E000E5BBD
-:103C400000000000920200052403FFFE0043102440
-:103C5000A202000524020012A20200093C02800810
-:103C600034420080022020210E00033DA0400027A6
-:103C700016400003022020210E000EBF00000000AD
-:103C800002202021324600FF8FBF001C8FB2001897
-:103C90008FB100148FB00010240500380A000E64A4
-:103CA00027BD002027BDFFE0AFBF001CAFB200184A
-:103CB000AFB10014AFB000100E00033200808021BD
-:103CC0000E000E5B000000003C02800834450080BE
-:103CD00090A2000924120018305100FF1232000394
-:103CE0000200202124020012A0A2000990A20005D7
-:103CF0002403FFFE004310240E00033DA0A2000594
-:103D00000200202124050020163200070000302187
-:103D10008FBF001C8FB200188FB100148FB000103D
-:103D20000A00034227BD00208FBF001C8FB200187D
-:103D30008FB100148FB00010240500390A000E6402
-:103D400027BD002027BDFFE83C028000AFB0001077
-:103D5000AFBF0014344201009442000C2405003629
-:103D60000080802114400012304600FF0E00033214
-:103D7000000000003C02800834420080240300124E
-:103D8000A043000990430005346300100E000E5B51
-:103D9000A04300050E00033D020020210200202167
-:103DA0000E000342240500200A000F3C0000000022
-:103DB0000E000E64000000000E00033202002021FD
-:103DC0003C0280089043001B2405FF9F0200202135
-:103DD000006518248FBF00148FB00010A043001B93
-:103DE0000A00033D27BD001827BDFFE0AFBF001844
-:103DF000AFB10014AFB0001030B100FF0E000332BD
-:103E0000008080213C02800824030012344200809C
-:103E10000E000E5BA04300090E00033D02002021AE
-:103E200002002021022030218FBF00188FB1001422
-:103E30008FB00010240500350A000E6427BD002055
-:103E40003C0480089083000E9082000A1443000B0B
-:103E5000000028218F82FF942403005024050001D4
-:103E600090420000304200FF1443000400000000B4
-:103E70009082000E24420001A082000E03E00008A0
-:103E800000A010213C0380008C6201F80440FFFE7A
-:103E900024020002AC6401C0A06201C43C02100014
-:103EA00003E00008AC6201F827BDFFE0AFB20018E4
-:103EB0003C128008AFB10014AFBF001CAFB00010BF
-:103EC00036510080922200092403000A304200FF8C
-:103ED0001443003E000000008E4300048E22003890
-:103EE000506200808FBF001C92220000240300500B
-:103EF000304200FF144300253C0280008C42014008
-:103F00008E4300043642010002202821AC43001CED
-:103F10009622005C8E2300383042FFFF00021040E2
-:103F200000621821AE23001C8E4300048E2400384A
-:103F30009622005C006418233042FFFF0003184300
-:103F4000000210400043102A10400006000000004C
-:103F50008E4200048E230038004310230A000FAA6B
-:103F6000000220439622005C3042FFFF0002204006
-:103F70003C0280083443010034420080ACA4002C91
-:103F8000A040002424020001A062000C0E000F5E7D
-:103F900000000000104000538FBF001C3C02800056
-:103FA0008C4401403C0380008C6201F80440FFFE19
-:103FB00024020002AC6401C0A06201C43C021000F3
-:103FC000AC6201F80A0010078FBF001C92220009A2
-:103FD00024030010304200FF144300043C02800020
-:103FE0008C4401400A000FEE0000282192220009B3
-:103FF00024030016304200FF14430006240200147C
-:10400000A22200093C0280008C4401400A001001F9
-:104010008FBF001C8E2200388E23003C00431023EB
-:10402000044100308FBF001C92220027244200016F
-:10403000A2220027922200272C42000414400016DE
-:104040003C1080009222000924030004304200FF4B
-:10405000144300093C0280008C4401408FBF001CC7
-:104060008FB200188FB100148FB000102405009398
-:104070000A000ECC27BD00208C440140240500938B
-:104080008FBF001C8FB200188FB100148FB00010CA
-:104090000A000F4827BD00208E0401400E000332A5
-:1040A000000000008E4200042442FFFFAE420004E4
-:1040B0008E22003C2442FFFFAE22003C0E00033D56
-:1040C0008E0401408E0401408FBF001C8FB2001887
-:1040D0008FB100148FB00010240500040A000342C1
-:1040E00027BD00208FB200188FB100148FB00010D0
-:1040F00003E0000827BD00203C0680008CC2018838
-:104100003C038008346500809063000E00021402B6
-:10411000304400FF306300FF1464000E3C0280084E
-:1041200090A20026304200FF104400098F82FF94C5
-:10413000A0A400262403005090420000304200FF5B
-:1041400014430006000000000A0005A18CC4018091
-:104150003C02800834420080A044002603E00008AE
-:104160000000000027BDFFE030E700FFAFB20018FD
-:10417000AFBF001CAFB10014AFB0001000809021A1
-:1041800014E0000630C600FF000000000000000D33
-:10419000000000000A001060240001163C038008A3
-:1041A0009062000E304200FF14460023346200800B
-:1041B00090420026304200FF1446001F000000001D
-:1041C0009062000F304200FF1446001B0000000008
-:1041D0009062000A304200FF144600038F90FF9463
-:1041E0000000000D8F90FF948F82FF983C1180009B
-:1041F000AE05003CAC450000A066000A0E0003328C
-:104200008E240100A20000240E00033D8E24010034
-:104210003C0380008C6201F80440FFFE240200028F
-:10422000AC7201C0A06201C43C021000AC6201F893
-:104230000A0010618FBF001C000000000000000D8C
-:10424000000000002400013F8FBF001C8FB2001847
-:104250008FB100148FB0001003E0000827BD0020CC
-:104260008F83FF943C0280008C44010034420100A3
-:104270008C65003C9046001B0A00102724070001B3
-:104280003C0280089043000E9042000A0043102632
-:10429000304200FF03E000080002102B27BDFFE0C2
-:1042A0003C028008AFB10014AFB00010AFBF0018DF
-:1042B0003450008092020005240300303042003068
-:1042C00014430085008088218F8200248C42000CDA
-:1042D000104000828FBF00180E000D840000000007
-:1042E0008F860020ACD100009202000892030009E2
-:1042F000304200FF00021200306300FF004310252F
-:10430000ACC200049202004D000216000002160327
-:1043100004410005000000003C0308008C630048D5
-:104320000A00109F3C1080089202000830420040B2
-:10433000144000030000182192020027304300FFC0
-:104340003C108008361100809222004D00031E00B0
-:10435000304200FF0002140000621825ACC30008C0
-:104360008E2400308F820024ACC4000C8E250034D3
-:104370009443001E3C02C00BACC50010006218251F
-:104380008E22003800002021ACC200148E22003C96
-:10439000ACC200180E000DB8ACC3001C8E020004A5
-:1043A0008F8400203C058000AC8200008E2200201B
-:1043B000AC8200048E22001CAC8200088E220058C1
-:1043C0008CA3007400431021AC82000C8E22002CC0
-:1043D000AC8200108E2200408E23004400021400A4
-:1043E00000431025AC8200149222004D240300806B
-:1043F000304200FF1443000400000000AC800018AD
-:104400000A0010E38F8200248E23000C2402000196
-:104410001062000E2402FFFF92220008304200408A
-:104420001440000A2402FFFF8E23000C8CA20074AB
-:10443000006218233C0208000062102414400002AD
-:10444000000028210060282100051043AC820018DC
-:104450008F820024000020219443001E3C02C00CE7
-:10446000006218258F8200200E000DB8AC43001C9E
-:104470003C038008346201008C4200008F850020DC
-:10448000346300808FBF0018ACA20000ACA0000411
-:104490008C6400488F8200248FB10014ACA4000803
-:1044A000ACA0000CACA00010906300059446001E68
-:1044B0003C02400D00031E0000C23025ACA30014D6
-:1044C0008FB00010ACA0001824040001ACA6001CA2
-:1044D0000A000DB827BD00208FBF00188FB100144F
-:1044E0008FB0001003E0000827BD00203C028000D0
-:1044F0009443007C3C02800834460100308400FF75
-:104500003065FFFF2402000524A34650A0C4000C20
-:104510005482000C3065FFFF90C2000D2C42000752
-:104520001040000724A30A0090C3000D24020014C9
-:104530000062100400A210210A00111F3045FFFF85
-:104540003065FFFF3C0280083442008003E0000831
-:10455000A44500143C03800834680080AD05003891
-:10456000346701008CE2001C308400FF00A210239D
-:104570001840000330C600FF24A2FFFCACE2001C80
-:1045800030820001504000083C0380088D02003C4E
-:1045900000A2102304410012240400058C620004D0
-:1045A00010A2000F3C0380088C62000414A2001EBD
-:1045B000000000003C0208008C4200D8304200207D
-:1045C000104000093C0280083462008090630008BB
-:1045D0009042004C144300043C0280082404000470
-:1045E0000A00110900000000344300803442010039
-:1045F000A040000C24020001A462001410C0000AB4
-:104600003C0280008C4401003C0380008C6201F875
-:104610000440FFFE24020002AC6401C0A06201C499
-:104620003C021000AC6201F803E00008000000004A
-:1046300027BDFFE800A61823AFBF00101860008058
-:10464000308800FF3C02800834470080A0E000244E
-:1046500034440100A0E000278C82001C00A210233B
-:1046600004400056000000008CE2003C94E3005C33
-:104670008CE4002C004530233063FFFF00C3182179
-:104680000083202B1080000400E018218CE2002C15
-:104690000A00117800A2102194E2005C3042FFFF72
-:1046A00000C2102100A21021AC62001C3C02800854
-:1046B000344400809482005C8C83001C3042FFFFF5
-:1046C0000002104000A210210043102B10400004F3
-:1046D000000000008C82001C0A00118B3C06800840
-:1046E0009482005C3042FFFF0002104000A21021C3
-:1046F0003C06800834C3010034C70080AC82001C33
-:10470000A060000CACE500388C62001C00A21023F5
-:104710001840000224A2FFFCAC62001C3102000120
-:10472000104000083C0380088CE2003C00A21023EB
-:1047300004410012240400058CC2000410A20010E1
-:104740008FBF00108C62000414A2004F8FBF0010B6
-:104750003C0208008C4200D8304200201040000A81
-:104760003C02800834620080906300089042004C54
-:10477000144300053C028008240400048FBF00108D
-:104780000A00110927BD001834430080344201009B
-:10479000A040000C24020001A46200143C0280002E
-:1047A0008C4401003C0380008C6201F80440FFFE51
-:1047B000240200020A0011D8000000008CE2001C54
-:1047C000004610230043102B54400001ACE5001CB0
-:1047D00094E2005C3042FFFF0062102B144000079F
-:1047E0002402000294E2005C8CE3001C3042FFFFD4
-:1047F00000621821ACE3001C24020002ACE5003882
-:104800000E000F5EA082000C1040001F8FBF001032
-:104810003C0280008C4401003C0380008C6201F863
-:104820000440FFFE24020002AC6401C0A06201C487
-:104830003C021000AC6201F80A0011F08FBF0010BA
-:1048400031020010104000108FBF00103C028008A1
-:10485000344500808CA3001C94A2005C00661823E1
-:104860003042FFFF006218213C023FFF3444FFFF4B
-:104870000083102B544000010080182100C3102138
-:10488000ACA2001C8FBF001003E0000827BD001879
-:1048900027BDFFE800C0402100A63023AFBF0010B5
-:1048A00018C00026308A00FF3C028008344900808E
-:1048B0008D24001C8D23002C008820230064182BDD
-:1048C0001060000F344701008CE2002000461021E8
-:1048D000ACE200208CE200200044102B1440000BBE
-:1048E0003C023FFF8CE2002000441023ACE2002099
-:1048F0009522005C3042FFFF0A0012100082202146
-:10490000ACE00020008620213C023FFF3443FFFF43
-:104910000064102B54400001006020213C028008FC
-:104920003442008000851821AC43001CA0400024C4
-:10493000A04000270A0012623C03800831420010A8
-:10494000104000433C0380083C06800834C40080CB
-:104950008C82003C004810235840003E34660080A2
-:104960009082002424420001A0820024908200242E
-:104970003C0308008C630024304200FF0043102BEE
-:10498000144000688FBF001034C201008C42001C2C
-:1049900000A2102318400063000000008CC3000434
-:1049A0009482005C006818233042FFFF0003184324
-:1049B000000210400043102A1040000500000000D3
-:1049C0008CC20004004810230A0012450002104364
-:1049D0009482005C3042FFFF000210403C068008D9
-:1049E000AC82002C34C5008094A2005C8CA4002C06
-:1049F00094A3005C3042FFFF00021040008220219F
-:104A00003063FFFF0083202101041021ACA2001CB1
-:104A10008CC2000434C60100ACC2001C2402000297
-:104A20000E000F5EA0C2000C1040003E8FBF0010B1
-:104A30003C0280008C4401003C0380008C6201F841
-:104A40000440FFFE240200020A001292000000004F
-:104A500034660080ACC50038346401008C82001CD0
-:104A600000A210231840000224A2FFFCAC82001C0C
-:104A7000314200015040000A3C0380088CC2003CD7
-:104A800000A2102304430014240400058C620004D7
-:104A900014A200033C0380080A00128424040005C9
-:104AA0008C62000414A2001F8FBF00103C0208009B
-:104AB0008C4200D8304200201040000A3C0280089E
-:104AC00034620080906300089042004C144300055B
-:104AD0003C028008240400048FBF00100A00110962
-:104AE00027BD00183443008034420100A040000C70
-:104AF00024020001A46200143C0280008C440100E6
-:104B00003C0380008C6201F80440FFFE2402000296
-:104B1000AC6401C0A06201C43C021000AC6201F8A8
-:104B20008FBF001003E0000827BD001827BDFFE875
-:104B30003C0A8008AFBF0010354900808D22003C40
-:104B400000C04021308400FF004610231840009D23
-:104B500030E700FF354701002402000100A63023A2
-:104B6000A0E0000CA0E0000DA522001418C0002455
-:104B7000308200108D23001C8D22002C0068182329
-:104B80000043102B1040000F000000008CE20020BA
-:104B900000461021ACE200208CE200200043102BE4
-:104BA0001440000B3C023FFF8CE200200043102326
-:104BB000ACE200209522005C3042FFFF0A0012C1E7
-:104BC00000621821ACE00020006618213C023FFF83
-:104BD0003446FFFF00C3102B5440000100C01821D1
-:104BE0003C0280083442008000651821AC43001C60
-:104BF000A0400024A04000270A00130F3C038008B7
-:104C0000104000403C0380088D22003C00481023E7
-:104C10005840003D34670080912200242442000166
-:104C2000A1220024912200243C0308008C6300246C
-:104C3000304200FF0043102B1440009A8FBF001039
-:104C40008CE2001C00A21023184000960000000017
-:104C50008D4300049522005C006818233042FFFF5A
-:104C600000031843000210400043102A10400005C2
-:104C7000012020218D420004004810230A0012F276
-:104C8000000210439522005C3042FFFF00021040FA
-:104C90003C068008AC82002C34C5008094A2005CE5
-:104CA0008CA4002C94A3005C3042FFFF0002104053
-:104CB000008220213063FFFF0083182101031021AF
-:104CC000ACA2001C8CC2000434C60100ACC2001CA3
-:104CD000240200020E000F5EA0C2000C1040007102
-:104CE0008FBF00103C0280008C4401003C03800018
-:104CF0008C6201F80440FFFE240200020A0013390E
-:104D00000000000034670080ACE500383466010024
-:104D10008CC2001C00A210231840000224A2FFFC39
-:104D2000ACC2001C30820001504000083C038008E7
-:104D30008CE2003C00A2102304430051240400052F
-:104D40008C62000410A2003E3C0380088C620004C8
-:104D500054A200548FBF00103C0208008C4200D8BF
-:104D600030420020104000063C028008346200807F
-:104D7000906300089042004C104300403C028008C1
-:104D80003443008034420100A040000C24020001A2
-:104D9000A46200143C0280008C4401003C038000AB
-:104DA0008C6201F80440FFFE24020002AC6401C0E2
-:104DB000A06201C43C021000AC6201F80A00137743
-:104DC0008FBF001024020005A120002714E2000A72
-:104DD0003C038008354301009062000D2C42000620
-:104DE000504000053C0380089062000D2442000101
-:104DF000A062000D3C03800834670080ACE50038F9
-:104E0000346601008CC2001C00A21023184000026E
-:104E100024A2FFFCACC2001C308200015040000AFA
-:104E20003C0380088CE2003C00A2102304410014E3
-:104E3000240400058C62000414A200033C038008D3
-:104E40000A00136E240400058C62000414A20015ED
-:104E50008FBF00103C0208008C4200D83042002076
-:104E60001040000A3C028008346200809063000811
-:104E70009042004C144300053C02800824040004C6
-:104E80008FBF00100A00110927BD001834430080AD
-:104E900034420100A040000C24020001A46200146E
-:104EA0008FBF001003E0000827BD00183C0B8008EE
-:104EB00027BDFFE83C028000AFBF00103442010074
-:104EC000356A00809044000A356901008C45001461
-:104ED0008D4800389123000C308400FF0105102319
-:104EE0001C4000B3306700FF2CE20006504000B1C8
-:104EF0008FBF00102402000100E2300430C2000322
-:104F00005440000800A8302330C2000C144000A117
-:104F100030C20030144000A38FBF00100A00143BC1
-:104F20000000000018C00024308200108D43001CD7
-:104F30008D42002C006818230043102B1040000FF6
-:104F4000000000008D22002000461021AD2200202C
-:104F50008D2200200043102B1440000B3C023FFF29
-:104F60008D22002000431023AD2200209542005CDA
-:104F70003042FFFF0A0013AF00621821AD2000206D
-:104F8000006618213C023FFF3446FFFF00C3102B90
-:104F90005440000100C018213C02800834420080C7
-:104FA00000651821AC43001CA0400024A04000274D
-:104FB0000A0013FD3C038008104000403C038008B9
-:104FC0008D42003C004810231840003D34670080AB
-:104FD0009142002424420001A14200249142002475
-:104FE0003C0308008C630024304200FF0043102B78
-:104FF000144000708FBF00108D22001C00A21023EF
-:105000001840006C000000008D6300049542005CB5
-:10501000006818233042FFFF0003184300021040CD
-:105020000043102A10400005014020218D62000439
-:10503000004810230A0013E0000210439542005C70
-:105040003042FFFF000210403C068008AC82002C7A
-:1050500034C5008094A2005C8CA4002C94A3005C56
-:105060003042FFFF00021040008220213063FFFF2A
-:105070000083182101031021ACA2001C8CC2000483
-:1050800034C60100ACC2001C240200020E000F5EF8
-:10509000A0C2000C104000478FBF00103C028000EF
-:1050A0008C4401003C0380008C6201F80440FFFE48
-:1050B000240200020A00142D000000003467008062
-:1050C000ACE50038346601008CC2001C00A210233D
-:1050D0001840000224A2FFFCACC2001C3082000178
-:1050E0005040000A3C0380088CE2003C00A21023E0
-:1050F00004430014240400058C62000414A200037D
-:105100003C0380080A00141F240400058C6200047C
-:1051100014A200288FBF00103C0208008C4200D867
-:10512000304200201040000A3C02800834620080B7
-:10513000906300089042004C144300053C02800834
-:10514000240400048FBF00100A00110927BD0018B5
-:105150003443008034420100A040000C24020001CE
-:10516000A46200143C0280008C4401003C038000D7
-:105170008C6201F80440FFFE24020002AC6401C00E
-:10518000A06201C43C021000AC6201F80A00143BAA
-:105190008FBF00108FBF0010010030210A00115A8C
-:1051A00027BD0018010030210A00129927BD001800
-:1051B0008FBF001003E0000827BD00183C038008E3
-:1051C0003464010024020003A082000C8C620004FD
-:1051D00003E00008AC82001C3C05800834A300807A
-:1051E0009062002734A501002406004324420001F8
-:1051F000A0620027906300273C0208008C42004810
-:10520000306300FF146200043C07602194A500EAAB
-:105210000A00090130A5FFFF03E0000800000000BC
-:1052200027BDFFE8AFBF00103C0280000E00144411
-:105230008C4401803C02800834430100A060000CD3
-:105240008C4200048FBF001027BD001803E0000847
-:10525000AC62001C27BDFFE03C028008AFBF001815
-:10526000AFB10014AFB000103445008034460100E7
-:105270003C0880008D09014090C3000C8CA4003CC8
-:105280008CA200381482003B306700FF9502007C3E
-:1052900090A30027146000093045FFFF2402000599
-:1052A00054E200083C04800890C2000D2442000132
-:1052B000A0C2000D0A00147F3C048008A0C0000DAD
-:1052C0003C048008348201009042000C2403000555
-:1052D000304200FF1443000A24A205DC348300801E
-:1052E000906200272C4200075040000524A20A00CB
-:1052F00090630027240200140062100400A2102111
-:105300003C108008361000803045FFFF012020212E
-:105310000E001444A60500149602005C8E030038AB
-:105320003C1180003042FFFF000210400062182153
-:10533000AE03001C0E0003328E24014092020025B1
-:1053400034420040A20200250E00033D8E2401409D
-:105350008E2401403C0380008C6201F80440FFFE73
-:1053600024020002AC6401C0A06201C43C0210002F
-:10537000AC6201F88FBF00188FB100148FB000101D
-:1053800003E0000827BD00203C0360103C02080039
-:1053900024420174AC62502C8C6250003C048000AA
-:1053A00034420080AC6250003C0208002442547C2D
-:1053B0003C010800AC2256003C020800244254384C
-:1053C0003C010800AC2256043C020002AC840008F8
-:1053D000AC82000C03E000082402000100A0302190
-:1053E0003C1C0800279C56083C0200023C050400B7
-:1053F00000852826008220260004102B2CA5000101
-:105400002C840001000210803C0308002463560035
-:105410000085202500431821108000030000102182
-:10542000AC6600002402000103E000080000000058
-:105430003C1C0800279C56083C0200023C05040066
-:1054400000852826008220260004102B2CA50001B0
-:105450002C840001000210803C03080024635600E5
-:105460000085202500431821108000050000102130
-:105470003C02080024425438AC62000024020001BF
-:1054800003E00008000000003C0200023C030400AE
-:1054900000821026008318262C4200012C63000194
-:1054A000004310251040000B000028213C1C080080
-:1054B000279C56083C0380008C62000824050001EC
-:1054C00000431025AC6200088C62000C00441025DB
-:1054D000AC62000C03E0000800A010213C1C080096
-:1054E000279C56083C0580008CA3000C0004202754
-:1054F000240200010064182403E00008ACA3000C9F
-:105500003C020002148200063C0560008CA208D018
-:105510002403FFFE0043102403E00008ACA208D0DF
-:105520003C02040014820005000000008CA208D098
-:105530002403FFFD00431024ACA208D003E00008C0
-:10554000000000003C02601A344200108C430080CE
-:1055500027BDFFF88C440084AFA3000093A3000094
-:10556000240200041462001AAFA4000493A20001F4
-:105570001040000797A300023062FFFC3C0380004C
-:10558000004310218C4200000A001536AFA200042F
-:105590003062FFFC3C03800000431021AC4400005B
-:1055A000A3A000003C0560008CA208D02403FFFEED
-:1055B0003C04601A00431024ACA208D08FA300045E
-:1055C0008FA2000034840010AC830084AC82008081
-:1055D00003E0000827BD000827BDFFE8AFBF0010AB
-:1055E0003C1C0800279C56083C0280008C43000CA1
-:1055F0008C420004004318243C0200021060001496
-:10560000006228243C0204003C04000210A00005B3
-:10561000006210243C0208008C4256000A00155B10
-:1056200000000000104000073C0404003C02080099
-:105630008C4256040040F809000000000A00156082
-:10564000000000000000000D3C1C0800279C5608CC
-:0C5650008FBF001003E0000827BD001809
-:04565C008008024080
-:1056600080080100800800808008000000000C8095
-:105670000000320008000E9808000EF408000F88A1
-:1056800008001028080010748008010080080080BD
-:04569000800800008E
-:0C5694000A0000280000000000000000D8
-:1056A0000000000D6370362E322E316100000000C4
-:1056B00006020104000000000000000000000000DD
-:1056C000000000000000000038003C000000000066
-:1056D00000000000000000000000000000000020AA
-:1056E00000000000000000000000000000000000BA
-:1056F00000000000000000000000000000000000AA
-:10570000000000000000000021003800000000013F
-:105710000000002B000000000000000400030D400A
-:105720000000000000000000000000000000000079
-:105730000000000000000000100000030000000056
-:105740000000000D0000000D3C020800244259AC8E
-:105750003C03080024635BF4AC4000000043202BB2
-:105760001480FFFD244200043C1D080037BD9FFC4F
-:1057700003A0F0213C100800261000A03C1C0800EB
-:10578000279C59AC0E0002F6000000000000000D3E
-:1057900027BDFFB4AFA10000AFA20004AFA3000873
-:1057A000AFA4000CAFA50010AFA60014AFA700185F
-:1057B000AFA8001CAFA90020AFAA0024AFAB0028FF
-:1057C000AFAC002CAFAD0030AFAE0034AFAF00389F
-:1057D000AFB8003CAFB90040AFBC0044AFBF004819
-:1057E0000E000820000000008FBF00488FBC00445E
-:1057F0008FB900408FB8003C8FAF00388FAE0034B7
-:105800008FAD00308FAC002C8FAB00288FAA002406
-:105810008FA900208FA8001C8FA700188FA6001446
-:105820008FA500108FA4000C8FA300088FA2000486
-:105830008FA1000027BD004C3C1B60188F7A5030B0
-:10584000377B502803400008AF7A000000A01821E1
-:1058500000801021008028213C0460003C0760008B
-:105860002406000810600006348420788C42000072
-:10587000ACE220088C63000003E00008ACE3200CDD
-:105880000A000F8100000000240300403C02600079
-:1058900003E00008AC4320003C0760008F86000452
-:1058A0008CE520740086102100A2182B14600007DC
-:1058B000000028218F8AFDA024050001A1440013C7
-:1058C0008F89000401244021AF88000403E0000810
-:1058D00000A010218F84FDA08F8500049086001306
-:1058E00030C300FF00A31023AF82000403E00008D0
-:1058F000A08000138F84FDA027BDFFE8AFB000108B
-:10590000AFBF001490890011908700112402002875
-:10591000312800FF3906002830E300FF2485002CE1
-:105920002CD00001106200162484001C0E00006EB2
-:10593000000000008F8FFDA03C05600024020204DF
-:1059400095EE003E95ED003C000E5C0031ACFFFF93
-:10595000016C5025ACAA2010520000012402000462
-:10596000ACA22000000000000000000000000000C9
-:105970008FBF00148FB0001003E0000827BD00188F
-:105980000A0000A6000028218F85FDA027BDFFD8B2
-:10599000AFBF0020AFB3001CAFB20018AFB100140E
-:1059A000AFB000100080982190A4001124B0001C1A
-:1059B00024B1002C308300FF386200280E000090D4
-:1059C0002C5200010E00009800000000020020216F
-:1059D0001240000202202821000028210E00006E43
-:1059E000000000008F8DFDA03C0880003C05600099
-:1059F00095AC003E95AB003C02683025000C4C0095
-:105A0000316AFFFF012A3825ACA7201024020202C8
-:105A1000ACA6201452400001240200028FBF0020D7
-:105A20008FB3001C8FB200188FB100148FB000101C
-:105A300027BD002803E00008ACA2200027BDFFE03E
-:105A4000AFB20018AFB10014AFB00010AFBF001C70
-:105A50003C1160008E2320748F82000430D0FFFF41
-:105A600030F2FFFF1062000C2406008F0E00006E63
-:105A7000000000003C06801F0010440034C5FF00F9
-:105A80000112382524040002AE2720100000302126
-:105A9000AE252014AE2420008FBF001C8FB200184A
-:105AA0008FB100148FB0001000C0102103E0000877
-:105AB00027BD002027BDFFE0AFB0001030D0FFFFB2
-:105AC000AFBF0018AFB100140E00006E30F1FFFF41
-:105AD00000102400009180253C036000AC70201071
-:105AE0008FBF00188FB100148FB000102402000483
-:105AF000AC62200027BD002003E000080000102158
-:105B000027BDFFE03C046018AFBF0018AFB1001420
-:105B1000AFB000108C8850002403FF7F34028071E6
-:105B20000103382434E5380C241F00313C1980006F
-:105B3000AC8550003C11800AAC8253BCAF3F0008DA
-:105B40000E00054CAF9100400E00050A3C116000AC
-:105B50000E00007D000000008E3008083C0F570941
-:105B60002418FFF00218602435EEE00035EDF00057
-:105B7000018E5026018D58262D4600012D69000109
-:105B8000AF86004C0E000D09AF8900503C06601630
-:105B90008CC700003C0860148D0500A03C03FFFF8B
-:105BA00000E320243C02535300052FC2108200550D
-:105BB00034D07C00960201F2A780006C10400003F4
-:105BC000A780007C384B1E1EA78B006C960201F844
-:105BD000104000048F8D0050384C1E1EA78C007C96
-:105BE0008F8D005011A000058F83004C240E0020E3
-:105BF000A78E007CA78E006C8F83004C1060000580
-:105C00009785007C240F0020A78F007CA78F006C55
-:105C10009785007C2CB8008153000001240500808A
-:105C20009784006C2C91040152200001240404008C
-:105C30001060000B3C0260008FBF00188FB1001491
-:105C40008FB0001027BD0020A784006CA785007CC2
-:105C5000A380007EA780007403E00008A780009264
-:105C60008C4704382419103C30FFFFFF13F9000360
-:105C700030A8FFFF1100004624030050A380007EDF
-:105C80009386007E50C00024A785007CA780007CFE
-:105C90009798007CA780006CA7800074A780009272
-:105CA0003C010800AC3800800E00078700000000AF
-:105CB0003C0F60008DED0808240EFFF03C0B600ED9
-:105CC000260C0388356A00100000482100002821B6
-:105CD00001AE20243C105709AF8C0010AF8A004859
-:105CE000AF89001810900023AF8500148FBF0018F3
-:105CF0008FB100148FB0001027BD002003E0000812
-:105D0000AF80005400055080014648218D260004D4
-:105D10000A00014800D180219798007CA784006C7C
-:105D2000A7800074A78000923C010800AC38008076
-:105D30000E000787000000003C0F60008DED080892
-:105D4000240EFFF03C0B600E260C0388356A001011
-:105D5000000048210000282101AE20243C105709F2
-:105D6000AF8C0010AF8A0048AF8900181490FFDF95
-:105D7000AF85001424110001AF9100548FBF0018AB
-:105D80008FB100148FB0001003E0000827BD002081
-:105D90000A00017BA383007E3083FFFF8F880040D1
-:105DA0008F87003C000321403C0580003C020050EE
-:105DB000008248253C0660003C0A010034AC040027
-:105DC0008CCD08E001AA58241160000500000000F5
-:105DD0008CCF08E024E7000101EA7025ACCE08E092
-:105DE0008D19001001805821ACB900388D180014AD
-:105DF000ACB8003CACA9003000000000000000007E
-:105E00000000000000000000000000000000000092
-:105E100000000000000000003C0380008C640000D3
-:105E2000308200201040FFFD3C0F60008DED08E047
-:105E30003C0E010001AE18241460FFE100000000D8
-:105E4000AF87003C03E00008AF8B00588F8500400F
-:105E5000240BFFF03C06800094A7001A8CA90024B4
-:105E600030ECFFFF000C38C000EB5024012A402129
-:105E7000ACC8003C8CA400248CC3003C00831023DD
-:105E800018400033000000008CAD002025A2000166
-:105E90003C0F0050ACC2003835EE00103C068000CC
-:105EA000ACCE003000000000000000000000000048
-:105EB00000000000000000000000000000000000E2
-:105EC000000000003C0480008C9900003338002062
-:105ED0001300FFFD30E20008104000173C0980006D
-:105EE0008C880408ACA800108C83040CACA30014AC
-:105EF0003C1900203C188000AF19003094AE001807
-:105F000094AF001C01CF3021A4A6001894AD001A54
-:105F100025A70001A4A7001A94AB001A94AC001E98
-:105F2000118B00030000000003E0000800000000E7
-:105F300003E00008A4A0001A8D2A0400ACAA0010F7
-:105F40008D240404ACA400140A0002183C1900209B
-:105F50008CA200200A0002003C0F00500A0001EE53
-:105F60000000000027BDFFE8AFBF00100E000232A6
-:105F7000000000008F8900408FBF00103C038000AC
-:105F8000A520000A9528000A9527000427BD0018BF
-:105F90003105FFFF30E6000F0006150000A22025A6
-:105FA00003E00008AC6400803C0508008CA50020DC
-:105FB0008F83000C27BDFFE8AFB00010AFBF001407
-:105FC00010A300100000802124040001020430040A
-:105FD00000A6202400C3102450440006261000010F
-:105FE000001018802787FDA41480000A006718217C
-:105FF000261000012E0900025520FFF38F83000CAC
-:10600000AF85000C8FBF00148FB0001003E00008B4
-:1060100027BD00188C6800003C058000ACA8002457
-:106020000E000234261000013C0508008CA500205B
-:106030000A0002592E0900022405000100851804F7
-:106040003C0408008C84002027BDFFC8AFBF00348B
-:1060500000831024AFBE0030AFB7002CAFB60028CD
-:10606000AFB50024AFB40020AFB3001CAFB200182E
-:10607000AFB1001410400051AFB000108F84004049
-:10608000948700069488000A00E8302330D5FFFF8B
-:1060900012A0004B8FBF0034948B0018948C000A20
-:1060A000016C50233142FFFF02A2482B1520000251
-:1060B00002A02021004020212C8F000515E00002C5
-:1060C00000809821241300040E0001C102602021E9
-:1060D0008F87004002609021AF80004494F4000A52
-:1060E000026080211260004E3291FFFF3C1670006A
-:1060F0003C1440003C1E20003C1760008F99005863
-:106100008F380000031618241074004F0283F82BF8
-:1061100017E0003600000000107E00478F86004424
-:1061200014C0003A2403000102031023022320219B
-:106130003050FFFF1600FFF13091FFFF8F870040C6
-:106140003C1100203C108000AE11003094EB000A9E
-:106150003C178000024B5021A4EA000A94E9000A8F
-:1061600094E800043123FFFF3106000F00062D00E4
-:106170000065F025AEFE008094F3000A94F6001846
-:1061800012D30036001221408CFF00148CF4001052
-:1061900003E468210000C02101A4782B029870213B
-:1061A00001CF6021ACED0014ACEC001002B238233A
-:1061B00030F5FFFF16A0FFB88F8400408FBF00347A
-:1061C0008FBE00308FB7002C8FB600288FB500240B
-:1061D0008FB400208FB3001C8FB200188FB1001451
-:1061E0008FB0001003E0000827BD00381477FFCC03
-:1061F0008F8600440E000EE202002021004018218C
-:106200008F86004410C0FFC9020310230270702360
-:106210008F87004001C368210A0002E431B2FFFF0A
-:106220008F86004414C0FFC93C1100203C10800040
-:106230000A0002AEAE1100300E00046602002021FA
-:106240000A0002DB00401821020020210E0009395B
-:10625000022028210A0002DB004018210E0001EE76
-:10626000000000000A0002C702B2382327BDFFC8A1
-:10627000AFB7002CAFB60028AFB50024AFB40020F4
-:10628000AFB3001CAFB20018AFB10014AFB0001034
-:10629000AFBF00300E00011B241300013C047FFF40
-:1062A0003C0380083C0220003C010800AC20007048
-:1062B0003496FFFF34770080345200033C1512C03F
-:1062C000241400013C1080002411FF800E000245C0
-:1062D000000000008F8700488F8B00188F89001402
-:1062E0008CEA00EC8CE800E8014B302B01092823F4
-:1062F00000A6102314400006014B18231440000E82
-:106300003C05800002A3602B1180000B0000000000
-:106310003C0560008CEE00EC8CED00E88CA4180CC1
-:10632000AF8E001804800053AF8D00148F8F0010C3
-:10633000ADF400003C0580008CBF00003BF900017B
-:10634000333800011700FFE13C0380008C6201003C
-:1063500024060C0010460009000000008C680100B3
-:106360002D043080548000103C0480008C690100B2
-:106370002D2331811060000C3C0480008CAA0100A8
-:1063800011460004000020218CA6010024C5FF81D5
-:1063900030A400FF8E0B01000E000269AE0B00243A
-:1063A0000A00034F3C0480008C8D01002DAC3300AB
-:1063B00011800022000000003C0708008CE70098D4
-:1063C00024EE00013C010800AC2E00983C04800043
-:1063D0008C8201001440000300000000566000148D
-:1063E0003C0440008C9F01008C9801000000982123
-:1063F00003F1C82400193940330F007F00EF7025E6
-:1064000001D26825AC8D08308C8C01008C85010090
-:10641000258B0100017130240006514030A3007F1C
-:106420000143482501324025AC8808303C04400037
-:10643000AE0401380A00030E000000008C99010030
-:10644000240F0020AC99002092F80000330300FFD5
-:10645000106F000C241F0050547FFFDD3C048000AF
-:106460008C8401000E00154E000000000A00034F4E
-:106470003C04800000963824ACA7180C0A000327BF
-:106480008F8F00108C8501000E0008F72404008017
-:106490000A00034F3C04800000A4102B24030001D9
-:1064A00010400009000030210005284000A4102BF6
-:1064B00004A00003000318405440FFFC00052840DE
-:1064C0005060000A0004182B0085382B54E00004AB
-:1064D0000003184200C33025008520230003184222
-:1064E0001460FFF9000528420004182B03E000089F
-:1064F00000C310213084FFFF30C600FF3C0780003E
-:106500008CE201B80440FFFE00064C000124302557
-:106510003C08200000C820253C031000ACE00180AE
-:10652000ACE50184ACE4018803E00008ACE301B809
-:106530003C0660008CC5201C2402FFF03083020062
-:10654000308601001060000E00A2282434A500014E
-:106550003087300010E0000530830C0034A50004C3
-:106560003C04600003E00008AC85201C1060FFFDC7
-:106570003C04600034A5000803E00008AC85201C42
-:1065800054C0FFF334A500020A0003B03087300086
-:1065900027BDFFE8AFB00010AFBF00143C0760009C
-:1065A000240600021080001100A080218F83005873
-:1065B0000E0003A78C6400188F8200580000202171
-:1065C000240600018C45000C0E000398000000001A
-:1065D0001600000224020003000010218FBF0014E7
-:1065E0008FB0001003E0000827BD00188CE8201CC5
-:1065F0002409FFF001092824ACE5201C8F870058EE
-:106600000A0003CD8CE5000C3C02600E00804021A6
-:1066100034460100240900180000000000000000BA
-:10662000000000003C0A00503C0380003547020097
-:10663000AC68003834640400AC65003CAC670030E2
-:106640008C6C0000318B00201160FFFD2407FFFFE0
-:106650002403007F8C8D00002463FFFF248400044A
-:10666000ACCD00001467FFFB24C60004000000004E
-:10667000000000000000000024A402000085282B78
-:106680003C0300203C0E80002529FFFF010540212E
-:10669000ADC300301520FFE00080282103E0000892
-:1066A000000000008F82005827BDFFD8AFB3001C48
-:1066B000AFBF0020AFB20018AFB10014AFB00010F0
-:1066C00094460002008098218C5200182CC300814F
-:1066D0008C4800048C4700088C51000C8C49001039
-:1066E000106000078C4A00142CC4000414800013AE
-:1066F00030EB000730C5000310A0001000000000C0
-:106700002410008B02002021022028210E00039873
-:10671000240600031660000224020003000010217A
-:106720008FBF00208FB3001C8FB200188FB10014F0
-:106730008FB0001003E0000827BD00281560FFF1AE
-:106740002410008B3C0C80003C030020241F00011F
-:10675000AD830030AF9F0044000000000000000047
-:10676000000000002419FFF024D8000F031978243A
-:106770003C1000D0AD88003801F0702524CD000316
-:106780003C08600EAD87003C35850400AD8E0030BE
-:10679000000D38823504003C3C0380008C6B000007
-:1067A000316200201040FFFD0000000010E00008F2
-:1067B00024E3FFFF2407FFFF8CA800002463FFFFF2
-:1067C00024A50004AC8800001467FFFB24840004A7
-:1067D0003C05600EACA60038000000000000000080
-:1067E000000000008F8600543C0400203C0780001D
-:1067F000ACE4003054C000060120202102402021DA
-:106800000E0003A7000080210A00041D02002021C1
-:106810000E0003DD01402821024020210E0003A7C5
-:10682000000080210A00041D0200202127BDFFE096
-:10683000AFB200183092FFFFAFB10014AFBF001C21
-:10684000AFB000101640000D000088210A0004932C
-:106850000220102124050003508500278CE5000C40
-:106860000000000D262800013111FFFF24E2002066
-:106870000232802B12000019AF8200588F82004430
-:10688000144000168F8700583C0670003C0320001F
-:106890008CE5000000A62024148300108F84006083
-:1068A000000544023C09800000A980241480FFE90F
-:1068B000310600FF2CCA000B5140FFEB26280001D7
-:1068C000000668803C0E080025CE575801AE6021B6
-:1068D0008D8B0000016000080000000002201021E4
-:1068E0008FBF001C8FB200188FB100148FB0001042
-:1068F00003E0000827BD00200E0003982404008454
-:106900001600FFD88F8700580A000474AF8000601B
-:10691000020028210E0003BF240400018F870058C5
-:106920000A000474AF820060020028210E0003BF39
-:10693000000020210A0004A38F8700580E000404E1
-:10694000020020218F8700580A000474AF82006083
-:1069500030AFFFFF000F19C03C0480008C9001B8DD
-:106960000600FFFE3C1920043C181000AC83018097
-:10697000AC800184AC990188AC9801B80A00047518
-:106980002628000190E2000390E30002000020218D
-:106990000002FE0000033A0000FF2825240600083C
-:1069A0000E000398000000001600FFDC2402000324
-:1069B0008F870058000010210A000474AF82006025
-:1069C00090E8000200002021240600090A0004C308
-:1069D00000082E0090E4000C240900FF308500FF21
-:1069E00010A900150000302190F9000290F8000372
-:1069F000308F00FF94EB000400196E000018740043
-:106A0000000F62000186202501AE5025014B28258C
-:106A10003084FF8B0A0004C32406000A90E30002BE
-:106A200090FF0004000020210003360000DF28252D
-:106A30000A0004C32406000B0A0004D52406008BB8
-:106A4000000449C23127003F000443423C02800059
-:106A500000082040240316802CE60020AC43002CC4
-:106A600024EAFFE02482000114C0000330A900FFE3
-:106A700000801021314700FF000260803C0D800043
-:106A8000240A0001018D20213C0B000E00EA28049D
-:106A9000008B302111200005000538278CCE000026
-:106AA00001C5382503E00008ACC700008CD8000001
-:106AB0000307782403E00008ACCF000027BDFFE007
-:106AC000AFB10014AFB00010AFBF00183C076000BA
-:106AD0008CE408083402F0003C1160003083F000C0
-:106AE000240501C03C04800E000030211062000625
-:106AF000241000018CEA08083149F0003928E00030
-:106B00000008382B000780403C0D0200AE2D081411
-:106B1000240C16803C0B80008E2744000E000F8B47
-:106B2000AD6C002C120000043C02169124050001FB
-:106B3000120500103C023D2C345800E0AE384408E9
-:106B40003C1108008E31007C8FBF00183C066000AD
-:106B500000118540360F16808FB100148FB00010E1
-:106B60003C0E020027BD0020ACCF442003E000080B
-:106B7000ACCE08103C0218DA345800E0AE384408B5
-:106B80003C1108008E31007C8FBF00183C0660006D
-:106B900000118540360F16808FB100148FB00010A1
-:106BA0003C0E020027BD0020ACCF442003E00008CB
-:106BB000ACCE08100A0004EB240500010A0004EB27
-:106BC0000000282124020400A7820024A780001CC2
-:106BD000000020213C06080024C65A582405FFFF67
-:106BE00024890001000440803124FFFF01061821A0
-:106BF0002C87002014E0FFFAAC6500002404040098
-:106C0000A7840026A780001E000020213C06080063
-:106C100024C65AD82405FFFF248D0001000460809B
-:106C200031A4FFFF018658212C8A00201540FFFA6D
-:106C3000AD650000A7800028A7800020A780002263
-:106C4000000020213C06080024C65B582405FFFFF5
-:106C5000249900010004C0803324FFFF030678213B
-:106C60002C8E000415C0FFFAADE500003C05600065
-:106C70008CA73D002403E08F00E31024344601403C
-:106C800003E00008ACA63D002487007F000731C266
-:106C900024C5FFFF000518C2246400013082FFFFF5
-:106CA000000238C0A78400303C010800AC27003047
-:106CB000AF80002C0000282100002021000030219E
-:106CC0002489000100A728213124FFFF2CA81701E7
-:106CD000110000032C8300801460FFF924C600011A
-:106CE00000C02821AF86002C10C0001DA786002AF6
-:106CF00024CAFFFF000A11423C08080025085B581F
-:106D00001040000A00002021004030212407FFFF2E
-:106D1000248E00010004688031C4FFFF01A86021B7
-:106D20000086582B1560FFFAAD87000030A2001FC7
-:106D30005040000800043080240300010043C804D0
-:106D400000041080004878212738FFFF03E0000886
-:106D5000ADF8000000C820212405FFFFAC8500002D
-:106D600003E000080000000030A5FFFF30C6FFFF71
-:106D700030A8001F0080602130E700FF0005294295
-:106D80000000502110C0001D24090001240B000147
-:106D900025180001010B2004330800FF0126782686
-:106DA000390E00202DED00012DC2000101A2182591
-:106DB0001060000D014450250005C880032C4021BF
-:106DC0000100182110E0000F000A20278D040000A8
-:106DD000008A1825AD03000024AD00010000402109
-:106DE0000000502131A5FFFF252E000131C9FFFF12
-:106DF00000C9102B1040FFE72518000103E0000830
-:106E0000000000008D0A0000014440240A0005D162
-:106E1000AC68000027BDFFE830A5FFFF30C6FFFFCC
-:106E2000AFB00010AFBF001430E7FFFF00005021EB
-:106E30003410FFFF0000602124AF001F00C0482174
-:106E4000241800012419002005E0001601E010219B
-:106E50000002F943019F682A0009702B01AE40240B
-:106E600011000017000C18800064102110E00005CC
-:106E70008C4B000000F840040008382301675824B8
-:106E800000003821154000410000402155600016E7
-:106E90003169FFFF258B0001316CFFFF05E1FFEC3D
-:106EA00001E0102124A2003E0002F943019F682A5C
-:106EB0000009702B01AE40241500FFEB000C188078
-:106EC000154600053402FFFF020028210E0005B51B
-:106ED00000003821020010218FBF00148FB0001075
-:106EE00003E0000827BD00181520000301601821E9
-:106EF000000B1C0224080010306A00FF154000053A
-:106F0000306E000F250D000800031A0231A800FFA3
-:106F1000306E000F15C00005307F000325100004FF
-:106F200000031902320800FF307F000317E000055C
-:106F3000386900012502000200031882304800FF72
-:106F4000386900013123000110600004310300FFA3
-:106F5000250A0001314800FF310300FF000C6940A1
-:106F600001A34021240A000110CAFFD53110FFFF00
-:106F7000246E000131C800FF1119FFC638C9000195
-:106F80002D1F002053E0001C258B0001240D000163
-:106F90000A000648240E002051460017258B0001E8
-:106FA00025090001312800FF2D0900205120001281
-:106FB000258B000125430001010D5004014B1024D5
-:106FC000250900011440FFF4306AFFFF3127FFFF5D
-:106FD00010EE000C2582FFFF304CFFFF0000502117
-:106FE0003410FFFF312800FF2D0900205520FFF24B
-:106FF00025430001258B0001014648260A000602B0
-:10700000316CFFFF00003821000050210A000654B7
-:107010003410FFFF27BDFFD8AFB0001030F0FFFFE6
-:10702000AFB10014001039423211FFE000071080A8
-:10703000AFB3001C00B1282330D3FFFFAFB200185C
-:1070400030A5FFFF00809021026030210044202104
-:10705000AFBF00200E0005E03207001F022288218A
-:107060003403FFFF0240202102002821026030216A
-:1070700000003821104300093231FFFF02201021A7
-:107080008FBF00208FB3001C8FB200188FB1001487
-:107090008FB0001003E0000827BD00280E0005E0B7
-:1070A0000000000000408821022010218FBF002036
-:1070B0008FB3001C8FB200188FB100148FB0001076
-:1070C00003E0000827BD0028000424003C03600002
-:1070D000AC603D0810A00002348210063482101605
-:1070E00003E00008AC623D0427BDFFE0AFB0001034
-:1070F000309000FF2E020006AFBF001810400008BD
-:10710000AFB10014001030803C03080024635784A2
-:1071100000C328218CA400000080000800000000AB
-:10712000000020218FBF00188FB100148FB0001015
-:107130000080102103E0000827BD00209791002A5D
-:1071400016200051000020213C020800904200332C
-:107150000A0006BB00000000978D002615A0003134
-:10716000000020210A0006BB2402000897870024A3
-:1071700014E0001A00001821006020212402000100
-:107180001080FFE98FBF0018000429C2004530219C
-:1071900000A6582B1160FFE43C0880003C0720004B
-:1071A000000569C001A76025AD0C00203C038008E4
-:1071B0002402001F2442FFFFAC6000000441FFFDD9
-:1071C0002463000424A5000100A6702B15C0FFF560
-:1071D000000569C00A0006A58FBF00189787001C2C
-:1071E0003C04080024845A58240504000E0006605C
-:1071F00024060001978B002424440001308AFFFFFD
-:107200002569FFFF2D48040000402821150000409B
-:10721000A789002424AC3800000C19C00A0006B964
-:10722000A780001C9787001E3C04080024845AD8BD
-:10723000240504000E00066024060001979900262C
-:10724000244400013098FFFF272FFFFF2F0E04007A
-:107250000040882115C0002CA78F0026A780001EA3
-:107260003A020003262401003084FFFF0E00068D41
-:107270002C4500010011F8C027F00100001021C0CA
-:107280000A0006BB240200089785002E978700227B
-:107290003C04080024845B580E00066024060001AC
-:1072A0009787002A8F89002C2445000130A8FFFF12
-:1072B00024E3FFFF0109302B0040802114C0001897
-:1072C000A783002AA7800022978500300E000F7543
-:1072D00002002021244A05003144FFFF0E00068DE4
-:1072E000240500013C05080094A500320E000F752E
-:1072F00002002021244521003C0208009042003376
-:107300000A0006BB000521C00A0006F3A784001E80
-:1073100024AC3800000C19C00A0006B9A784001C70
-:107320000A00070DA7850022308400FF27BDFFE873
-:107330002C820006AFBF0014AFB000101040001543
-:1073400000A03821000440803C0308002463579CBF
-:10735000010328218CA40000008000080000000028
-:1073600024CC007F000751C2000C59C23170FFFFCE
-:107370002547C40030E5FFFF2784001C02003021B0
-:107380000E0005B52407000197860028020620217B
-:10739000A78400288FBF00148FB0001003E00008FE
-:1073A00027BD00183C0508008CA50030000779C2F5
-:1073B0000E00038125E4DF003045FFFF3C04080098
-:1073C00024845B58240600010E0005B52407000143
-:1073D000978E002A8FBF00148FB0001025CD0001BA
-:1073E00027BD001803E00008A78D002A0007C9C2C6
-:1073F0002738FF00001878C231F0FFFF3C04080076
-:1074000024845AD802002821240600010E0005B564
-:1074100024070001978D0026260E0100000E84002F
-:1074200025AC00013C0B6000A78C0026AD603D0838
-:1074300036040006000030213C0760008CE23D0469
-:10744000305F000617E0FFFD24C9000100061B00A5
-:10745000312600FF006440252CC50004ACE83D0443
-:1074600014A0FFF68FBF00148FB0001003E00008D7
-:1074700027BD0018000751C22549C8002406000195
-:10748000240700013C04080024845A580E0005B566
-:107490003125FFFF978700248FBF00148FB00010A5
-:1074A00024E6000127BD001803E00008A786002499
-:1074B0003C0660183C090800252900FCACC9502C8A
-:1074C0008CC850003C0580003C020002350700805B
-:1074D000ACC750003C04080024841FE03C030800B3
-:1074E00024631F98ACA50008ACA2000C3C01080066
-:1074F000AC2459A43C010800AC2359A803E00008BF
-:107500002402000100A030213C1C0800279C59AC3B
-:107510003C0C04003C0B0002008B3826008C4026FB
-:107520002CE200010007502B2D050001000A4880C5
-:107530003C030800246359A4004520250123182199
-:107540001080000300001021AC660000240200013E
-:1075500003E00008000000003C1C0800279C59AC18
-:107560003C0B04003C0A0002008A3026008B3826BF
-:107570002CC200010006482B2CE5000100094080C8
-:107580003C030800246359A4004520250103182169
-:1075900010800005000010213C0C0800258C1F986D
-:1075A000AC6C00002402000103E0000800000000B1
-:1075B0003C0900023C080400008830260089382677
-:1075C0002CC30001008028212CE400010083102539
-:1075D0001040000B000030213C1C0800279C59ACD7
-:1075E0003C0A80008D4E00082406000101CA68256F
-:1075F000AD4D00088D4C000C01855825AD4B000C9D
-:1076000003E0000800C010213C1C0800279C59AC76
-:107610003C0580008CA6000C0004202724020001F9
-:1076200000C4182403E00008ACA3000C3C020002D4
-:107630001082000B3C0560003C070400108700032B
-:107640000000000003E00008000000008CA908D042
-:10765000240AFFFD012A402403E00008ACA808D05A
-:107660008CA408D02406FFFE0086182403E000083E
-:10767000ACA308D03C05601A34A600108CC300806F
-:1076800027BDFFF88CC50084AFA3000093A40000C1
-:107690002402001010820003AFA5000403E00008DC
-:1076A00027BD000893A7000114E0001497AC000266
-:1076B00097B800023C0F8000330EFFFC01CF682119
-:1076C000ADA50000A3A000003C0660008CC708D058
-:1076D0002408FFFE3C04601A00E82824ACC508D04A
-:1076E0008FA300048FA200003499001027BD00086A
-:1076F000AF22008003E00008AF2300843C0B800031
-:10770000318AFFFC014B48218D2800000A00080C3B
-:10771000AFA8000427BDFFE8AFBF00103C1C080065
-:10772000279C59AC3C0580008CA4000C8CA2000462
-:107730003C0300020044282410A0000A00A31824DF
-:107740003C0604003C0400021460000900A610245A
-:107750001440000F3C0404000000000D3C1C080015
-:10776000279C59AC8FBF001003E0000827BD00180C
-:107770003C0208008C4259A40040F80900000000B7
-:107780003C1C0800279C59AC0A0008358FBF00102C
-:107790003C0208008C4259A80040F8090000000093
-:1077A0000A00083B000000003C0880008D0201B880
-:1077B0000440FFFE35090180AD2400003C031000A9
-:1077C00024040040AD250004A1240008A1260009DE
-:1077D000A527000A03E00008AD0301B83084FFFFCD
-:1077E0000080382130A5FFFF000020210A00084555
-:1077F000240600803087FFFF8CA400002406003898
-:107800000A000845000028218F8300788F860070C9
-:107810001066000B008040213C07080024E75B68ED
-:10782000000328C000A710218C440000246300013D
-:10783000108800053063000F5466FFFA000328C06B
-:1078400003E00008000010213C07080024E75B6CFF
-:1078500000A7302103E000088CC200003C03900028
-:1078600034620001008220253C038000AC640020CB
-:107870008C65002004A0FFFE0000000003E000086B
-:10788000000000003C0280003443000100832025FA
-:1078900003E00008AC44002027BDFFE0AFB10014B6
-:1078A0003091FFFFAFB00010AFBF001812200013DF
-:1078B00000A080218CA20000240400022406020003
-:1078C0001040000F004028210E0007250000000096
-:1078D00000001021AE000000022038218FBF0018E8
-:1078E0008FB100148FB0001000402021000028212B
-:1078F000000030210A00084527BD00208CA20000AE
-:10790000022038218FBF00188FB100148FB00010F3
-:107910000040202100002821000030210A000845F5
-:1079200027BD002000A010213087FFFF8CA5000498
-:107930008C4400000A000845240600068F83FD9C45
-:1079400027BDFFE8AFBF0014AFB00010906700087C
-:10795000008010210080282130E600400000202116
-:1079600010C000088C5000000E0000BD0200202155
-:10797000020020218FBF00148FB000100A000548BC
-:1079800027BD00180E0008A4000000000E0000BD76
-:1079900002002021020020218FBF00148FB00010B0
-:1079A0000A00054827BD001827BDFFE0AFB0001052
-:1079B0008F90FD9CAFBF001CAFB20018AFB1001498
-:1079C00092060001008088210E00087230D2000467
-:1079D00092040005001129C2A6050000348300406E
-:1079E000A20300050E00087C022020210E00054A9B
-:1079F0000220202124020001AE02000C02202821D6
-:107A0000A602001024040002A602001224060200AE
-:107A1000A60200140E000725A60200161640000F4D
-:107A20008FBF001C978C00743C0B08008D6B007896
-:107A30002588FFFF3109FFFF256A0001012A382B45
-:107A400010E00006A78800743C0F6006240E0016A4
-:107A500035ED0010ADAE00508FBF001C8FB2001886
-:107A60008FB100148FB0001003E0000827BD002084
-:107A700027BDFFE0AFB10014AFBF0018AFB00010DA
-:107A80001080000400A088212402008010820007DA
-:107A9000000000000000000D8FBF00188FB100141F
-:107AA0008FB0001003E0000827BD00200E00087210
-:107AB00000A020218F86FD9C0220202190C500057A
-:107AC0000E00087C30B000FF2403003E1603FFF1D7
-:107AD0003C0680008CC401780480FFFE34C801405D
-:107AE000240900073C071000AD11000002202021EE
-:107AF000A10900048FBF00188FB100148FB00010CF
-:107B0000ACC701780A0008C527BD002027BDFFE0EB
-:107B1000AFB00010AFBF0018AFB100143C10800030
-:107B20008E110020000000000E00054AAE04002067
-:107B3000AE1100208FBF00188FB100148FB000105D
-:107B400003E0000827BD00203084FFFF00803821BB
-:107B50002406003500A020210A0008450000282145
-:107B60003084FFFF008038212406003600A0202149
-:107B70000A0008450000282127BDFFD0AFB500242A
-:107B80003095FFFFAFB60028AFB40020AFBF002C88
-:107B9000AFB3001CAFB20018AFB10014AFB000100B
-:107BA00030B6FFFF12A000270000A0218F920058DE
-:107BB0008E4300003C0680002402004000033E0289
-:107BC00000032C0230E4007F006698241482001D1C
-:107BD00030A500FF8F8300682C68000A1100001098
-:107BE0008F8D0044000358803C0C0800258C57B84A
-:107BF000016C50218D4900000120000800000000A8
-:107C000002D4302130C5FFFF0E0008522404008446
-:107C1000166000028F920058AF8000688F8D00447C
-:107C20002659002026980001032090213314FFFFDD
-:107C300015A00004AF9900580295202B1480FFDC9A
-:107C400000000000028010218FBF002C8FB600289A
-:107C50008FB500248FB400208FB3001C8FB20018A2
-:107C60008FB100148FB0001003E0000827BD003072
-:107C70002407003414A70149000000009247000EB9
-:107C80008F9FFDA08F90FD9C24181600A3E700197C
-:107C90009242000D3C0880003C07800CA3E20018D3
-:107CA000964A00123C0D60003C117FFFA60A005C62
-:107CB000964400103623FFFF240200053099FFFF91
-:107CC000AE1900548E46001CAD1800288CEF000041
-:107CD0008DAE444801E6482601C93021AE06003881
-:107CE0008E05003824CB00013C0E7F00AE05003C21
-:107CF0008E0C003CAFEC0004AE0B00208E13002075
-:107D0000AE13001CA3E0001BAE03002CA3E2001284
-:107D10008E4A001424130050AE0A00348E0400343E
-:107D2000AFE400148E590018AE1900489258000CA8
-:107D3000A218004E920D000835AF0020A20F0008D7
-:107D40008E090018012E282434AC4000AE0C001817
-:107D5000920B0000317200FF1253027F2403FF8058
-:107D60003C04080024845BE80E0008AA0000000020
-:107D70003C1108008E315BE80E00087202202021C1
-:107D80002405000424080001A2050025022020216A
-:107D90000E00087CA20800053C0580008CB001782C
-:107DA0000600FFFE8F92005834AE0140240F0002FF
-:107DB0003C091000ADD10000A1CF0004ACA90178AE
-:107DC0000A000962AF8000682CAD003751A0FF9413
-:107DD0008F8D0044000580803C110800263157E05B
-:107DE000021178218DEE000001C0000800000000A3
-:107DF0002411000414B1008C3C0780003C080800EA
-:107E00008D085BE88F86FD9CACE800208E4500085D
-:107E10008F99FDA0240D0050ACC500308E4C000899
-:107E2000ACCC00508E4B000CACCB00348E43001019
-:107E3000ACC300388E4A0010ACCA00548E42001405
-:107E4000ACC2003C8E5F0018AF3F00048E50001C97
-:107E5000ACD0002090C40000309800FF130D024AFF
-:107E6000000000008CC400348CD00030009030231F
-:107E700004C000F12404008C126000EE2402000310
-:107E80000A000962AF8200682419000514B900666F
-:107E90003C0580003C0808008D085BE88F86FD9C4F
-:107EA000ACA800208E4C00048F8AFDA0240720007F
-:107EB000ACCC001C924B000824120008A14B001906
-:107EC0008F82005890430009A14300188F85005805
-:107ED00090BF000A33E400FF1092001028890009C7
-:107EE000152000BA240E0002240D0020108D000B76
-:107EF000340780002898002117000008240740005C
-:107F000024100040109000053C0700012419008057
-:107F1000109900023C070002240740008CC20018A0
-:107F20003C03FF00004350240147F825ACDF001854
-:107F300090B2000BA0D200278F8300589464000CED
-:107F4000108001FE000000009467000C3C1F8000C0
-:107F50002405FFBFA4C7005C9063000E2407000443
-:107F6000A0C300088F820058904A000FA0CA0009E1
-:107F70008F8900588D3200108FE400740244C823AA
-:107F8000ACD900588D300014ACD0002C95380018B6
-:107F9000330DFFFFACCD00409531001A322FFFFFAB
-:107FA000ACCF00448D2E001CACCE00489128000EB2
-:107FB000A0C8000890CC000801855824126001B6C2
-:107FC000A0CB00088F9200580A000962AF870068B2
-:107FD0002406000614A600143C0E80003C0F080086
-:107FE0008DEF5BE88F85FD98ADCF00208E4900189E
-:107FF0008F86FD9C8F8BFDA0ACA900008CC800383B
-:1080000024040005ACA800048CCC003C1260008164
-:10801000AD6C00000A000962AF84006824110007FB
-:1080200010B1004B240400063C05080024A55BE8C1
-:108030000E000881240400818F9200580013102B39
-:108040000A000962AF820068241F002314BFFFF6F4
-:108050003C0C80003C0508008CA55BE88F8BFDA0E4
-:10806000AD8500208F91FD9C8E4600042564002084
-:1080700026450014AE260028240600030E000F81BA
-:10808000257000308F87005802002021240600034D
-:108090000E000F8124E500083C04080024845BE8FE
-:1080A0000E0008AA0000000092230000240A0050DD
-:1080B000306200FF544AFFE18F9200580E000F6CAF
-:1080C000000000000A000A6A8F920058240800335A
-:1080D00014A800323C0380003C1108008E315BE89C
-:1080E0008F8FFDA0AC7100208E420008240D002867
-:1080F0008F89FD9CADE200308E4A000C24060009F9
-:10810000ADEA00348E5F0010ADFF00388E440014DD
-:10811000ADE400208E590018ADF900248E58001CE3
-:10812000ADF80028A1ED00118E4E00041260003160
-:10813000AD2E00288F9200580A000962AF860068B1
-:10814000240D002214ADFFB8000000002404000735
-:108150003C1008008E105BE83C188000AF10002037
-:108160005660FEAEAF8400683C04080024845BE8DF
-:108170000E0008AA241300508F84FD9C90920000EA
-:10818000325900FF1333014B000000008F9200585A
-:10819000000020210A000962AF8400683C05080045
-:1081A00024A55BE80E000858240400810A000A6A2E
-:1081B0008F92005802D498213265FFFF0E000852BA
-:1081C000240400840A0009628F920058108EFF5325
-:1081D000240704002887000310E00179241100041B
-:1081E000240F0001548FFF4D240740000A000A228B
-:1081F000240701003C05080024A55BE80E0008A444
-:10820000240400828F920058000030210A00096285
-:10821000AF8600683C04080024845BE88CC2003808
-:108220000E0008AA8CC3003C8F9200580A000AC0B6
-:1082300000002021240400823C05080024A55BE8FE
-:108240000E0008A4000000008F92005800001021CA
-:108250000A000962AF8200688E5000048F91FD9C75
-:108260003C078000ACF00020922C00050200282181
-:10827000318B0002156001562404008A8F92FDA004
-:108280002404008D9245001B30A6002014C001502C
-:1082900002002821922E00092408001231C900FF93
-:1082A0001128014B240400810E00087202002021D5
-:1082B0009258001B240F000402002021370D0042B9
-:1082C000A24D001B0E00087CA22F00253C0580005B
-:1082D0008CA401780480FFFE34B90140241F000201
-:1082E000AF300000A33F00048F9200583C101000F4
-:1082F000ACB001780A000A6B0013102B8E500004FA
-:108300008F91FD9C3C038000AC700020922A0005F8
-:108310000200282131420002144000172404008A80
-:10832000922C00092412000402002821318B00FF46
-:1083300011720011240400810E0008720200202135
-:108340008F89FDA0240800122405FFFE912F001B39
-:108350000200202135EE0020A12E001BA2280009DA
-:108360009226000500C538240E00087CA2270005CF
-:1083700002002821000020210E0009330000000027
-:108380000A000A6A8F9200588E4C00043C07800055
-:108390003C10080026105BE8ACEC00203C01080013
-:1083A000AC2C5BE8924B0003317100041220013BBE
-:1083B0008F84FD9C24020006A0820009924F001BBE
-:1083C000240EFFC031E9003F012E4025A08800089F
-:1083D0009245000330A6000114C0013200000000E5
-:1083E0008E420008AE0200083C0208008C425BF09E
-:1083F000104001318F90FDA0000219C28F8DFD9CAD
-:10840000A603000C8E4A000C24180001240400145A
-:10841000AE0A002C8E420010AE02001C965F0016C1
-:10842000A61F003C96590014A619003EADB8000CDA
-:10843000A5B80010A5B80012A5B80014A5B800167C
-:1084400012600144A2040011925100033232000272
-:108450002E5300018F920058266200080A0009621C
-:10846000AF8200688E4400043C1980003C068008FE
-:10847000AF2400208E45000890D80000240D005045
-:10848000331100FF122D009C2407008824060009E8
-:108490000E000845000000000A000A6A8F9200588A
-:1084A0008E5000043C0980003C118008AD30002053
-:1084B0009228000024050050310400FF10850110AF
-:1084C0002407008802002021000028210E00084512
-:1084D0002406000E922D00002418FF80020028219F
-:1084E00001B8802524040004240600300E0007256E
-:1084F000A23000000A000A6A8F9200588E500004D1
-:108500008F91FDA03C028000AC500020923F001BE8
-:1085100033F900101320006C240700810200202191
-:10852000000028212406001F0E000845000000005E
-:108530000A000A6A8F9200588E44001C0E00085DE3
-:1085400000000000104000E3004048218F880058E0
-:1085500024070089012020218D05001C240600012C
-:108560000E000845000000000A000A6A8F920058B9
-:10857000964900023C10080026105BE831280004F0
-:10858000110000973C0460008E4E001C3C0F8000E0
-:10859000ADEE00203C010800AC2E5BE896470002DF
-:1085A00030E40001148000E6000000008E42000468
-:1085B000AE0200083C1008008E105BF0120000ECC8
-:1085C0003C0F80008F92FD9C241000018E4E0018FD
-:1085D0008F8DFDA08F9FFD9801CF4825AE490018D3
-:1085E000A2400005AE50000C3C0808008D085BF06E
-:1085F0008F840058A6500010000839C2A6500012FF
-:10860000A6500014A6500016A5A7000C8C8C0008DC
-:108610008F8B00588F8A0058ADAC002C8D63000CF6
-:1086200024070002ADA3001C91460010A1A6001172
-:108630008F82005890450011A3E500088F990058DB
-:1086400093380012A258004E8F910058922F0013B9
-:10865000A1AF00128F920058964E0014A5AE003CB8
-:1086600096490016A5A9003E8E480018ADA8001432
-:108670005660FD6AAF8700683C05080024A55BE8EA
-:108680000E000881000020218F9200580000382140
-:108690000A000962AF8700683C05080024A55BE872
-:1086A0000E0008A4240400828F9200580A000A4D8C
-:1086B000000038210E000F6C000000008F9200585F
-:1086C0000A000AC0000020210E00087202002021CA
-:1086D0009223001B02002021346A00100E00087C47
-:1086E000A22A001B000038210200202100002821BE
-:1086F0000A000BA52406001F9242000C305F000107
-:1087000013E0000300000000964A000EA4CA002CEB
-:10871000924B000C316300025060000600003821CB
-:108720008E470014964C0012ACC7001CA4CC001A53
-:10873000000038210A000B7F240600093C050800D0
-:1087400024A55BE80E0008A42404008B8F92005837
-:108750000A000A4D0013382B3C0C08008D8C5BE896
-:1087600024DFFFFE25930100326B007F016790211B
-:1087700002638824AD110028AE4600E0AE4000E45C
-:108780000A0009B3AE5F001CACC000543C0D0800E9
-:108790008DAD5BE83C18800C37090100ACED00287A
-:1087A0008E510014AD3100E08E4F0014AD2F00E467
-:1087B0008E4E001025C7FFFE0A0009F4AD27001CED
-:1087C0005491FDD6240740000A000A222407100015
-:1087D0000E00092D000000000A000A6A8F9200585E
-:1087E0008C83442C3C12DEAD3651BEEF3C010800B8
-:1087F000AC205BE810710062000000003C196C6264
-:1088000037387970147800082404000297850074C2
-:108810009782006C2404009200A2F82B13E0001948
-:1088200002002821240400020E00069524050200FF
-:108830003C068000ACC200203C010800AC225BE892
-:108840001040000D8F8C0058240A002824040003D7
-:10885000918B0010316300FF546A00012404000171
-:108860000E0000810000000010400004240400837A
-:108870000A000BC28F920058240400833C050800B4
-:1088800024A55BE80E000881000000008F920058CC
-:108890000013382B0A000962AF8700680A000B49F1
-:1088A000240200128E4400080E00085D0000000043
-:1088B0000A000B55AE0200083C05080024A55BE841
-:1088C0000E000858240400878F9200580A000B728B
-:1088D0000013102B240400040E000695240500301C
-:1088E0001440002A004048218F8800582407008344
-:1088F000012020218D05001C0A000BB32406000175
-:108900008F8300788F8600701066FEEE000038219D
-:108910003C07080024E75B6C000320C00087282187
-:108920008CAE000011D0005D246F000131E3000F18
-:108930005466FFFA000320C00A000B8C00003821A7
-:108940008E4400040E00085D000000000A000BC801
-:10895000AE0200083C05080024A55BE80E0008A450
-:10896000240400828F9200580A000B72000010212C
-:108970003C05080024A55BE80A000C7C2404008761
-:108980008C83442C0A000C5B3C196C628F88005865
-:108990003C0780083C0C8000240B0050240A000196
-:1089A000AD820020A0EB0000A0EA000191030004CA
-:1089B000A0E3001891040005A0E400199106000648
-:1089C0003C04080024845B6CA0E6001A91020007B6
-:1089D0003C06080024C65B68A0E2001B9105000865
-:1089E000A0E5001C911F0009A0FF001D9119000ABD
-:1089F000A0F9001E9118000BA0F8001F9112000CA6
-:108A0000A0F200209111000DA0F100219110000EA4
-:108A1000A0F00022910F000FA0EF0023910E001094
-:108A2000A0EE0024910D0011A0ED0025950C00147E
-:108A3000A4EC0028950B00168F8A00708F920078A6
-:108A4000A4EB002A95030018000A10C02545000178
-:108A5000A4E3002C8D1F001C0044C0210046C82147
-:108A600030A5000FAF3F0000AF09000010B20006B4
-:108A7000AF850070000038218D05001C01202021E9
-:108A80000A000BB32406000124AD000131A7000F3A
-:108A9000AF8700780A000CF9000038213C06080076
-:108AA00024C65B680086902100003821ACA000003D
-:108AB0000A000B8CAE4000003C0482013C036000C5
-:108AC00034820E02AC603D68AF80009803E000087D
-:108AD000AC623D6C27BDFFE8AFB000103090FFFFE7
-:108AE000001018422C620041AFBF00141440000275
-:108AF00024040080240300403C010800AC300060E6
-:108B00003C010800AC2300640E000F7500602821B2
-:108B1000244802BF2409FF8001092824001039805D
-:108B2000001030408FBF00148FB0001000A720212C
-:108B300000861821AF8300803C010800AC25005856
-:108B40003C010800AC24005C03E0000827BD0018CD
-:108B5000308300FF30C6FFFF30E400FF3C08800098
-:108B60008D0201B80440FFFE000354000144382583
-:108B70003C09600000E920253C031000AD050180A0
-:108B8000AD060184AD04018803E00008AD0301B81F
-:108B90008F8500583C0A6012354800108CAC0004E8
-:108BA0003C0D600E35A60010318B00062D690001CA
-:108BB000AD0900C48CA70004ACC731808CA20008AA
-:108BC00094A40002ACC231848CA3001C0460000396
-:108BD000A784009003E00008000000008CAF00189C
-:108BE000ACCF31D08CAE001C03E00008ACCE31D449
-:108BF0008F8500588F87FF288F86FF308CAE00044A
-:108C00003C0F601235E80010ACEE00788CAD000827
-:108C1000ACED007C8CAC0010ACCC004C8CAB000CF0
-:108C2000ACCB004894CA00543C0208008C4200447B
-:108C300025490001A4C9005494C400543083FFFFA7
-:108C400010620017000000003C0208008C42004047
-:108C5000A4C200528CA30018ACE300308CA2001414
-:108C6000ACE2002C8CB90018ACF900388CB80014B8
-:108C700024050001ACF800348D0600BC50C5001975
-:108C80008D0200B48D0200B8A4E2004894E40048CC
-:108C9000A4E4004A94E800EA03E000083102FFFF80
-:108CA0003C0208008C420024A4C00054A4C200521C
-:108CB0008CA30018ACE300308CA20014ACE2002CB2
-:108CC0008CB90018ACF900388CB8001424050001E8
-:108CD000ACF800348D0600BC54C5FFEB8D0200B823
-:108CE0008D0200B4A4E2004894E40048A4E4004AE1
-:108CF00094E800EA03E000083102FFFF8F86005885
-:108D00003C0480008CC900088CC80008000929C0F8
-:108D1000000839C0AC87002090C30007306200040F
-:108D20001040003EAF85009490CB0007316A0008E8
-:108D30001140003D8F87FF2C8CCD000C8CCE001491
-:108D400001AE602B11800036000000008CC2000CC8
-:108D5000ACE200708CCB00188F85FF288F88FF3025
-:108D6000ACEB00748CCA00102402FFF8ACAA00D847
-:108D70008CC9000CAD0900608CC4001CACA400D0F0
-:108D800090E3007C0062C824A0F9007C90D8000722
-:108D9000330F000811E000040000000090ED007C9B
-:108DA00035AC0001A0EC007C90CF000731EE000153
-:108DB00011C000060000000090E3007C241800347D
-:108DC00034790002A0F9007CACB800DC90C2000746
-:108DD0003046000210C000040000000090E8007C53
-:108DE00035040004A0E4007C90ED007D3C0B600E97
-:108DF000356A001031AC003FA0EC007D8D4931D4C4
-:108E00003127000110E00002240E0001A0AE00098D
-:108E100094AF00EA03E0000831E2FFFF8F87FF2CE8
-:108E20000A000DAF8CC200140A000DB0ACE0007057
-:108E30008F8C005827BDFFD8AFB3001CAFB200180D
-:108E4000AFB00010AFBF0020AFB10014918F00157C
-:108E50003C13600E3673001031EB000FA38B009CA7
-:108E60008D8F00048D8B0008959F0012959900103E
-:108E70009584001A9598001E958E001C33EDFFFF17
-:108E8000332AFFFF3089FFFF3308FFFF31C7FFFFA1
-:108E90003C010800AC2D00243C010800AC29004432
-:108EA0003C010800AC2A0040AE683178AE67317CE6
-:108EB00091850015959100163C12601236520010F3
-:108EC00030A200FF3230FFFFAE623188AE5000B4F6
-:108ED00091830014959F0018240600010066C804C1
-:108EE00033F8FFFFAE5900B8AE5800BC918E0014A5
-:108EF000AF8F00843C08600631CD00FFAE4D00C04E
-:108F0000918A00159584000E3C07600A314900FFE4
-:108F1000AF8B00883084FFFFAE4900C835110010C8
-:108F20000E000D1034F004103C0208008C4200606A
-:108F30003C0308008C6300643C0608008CC60058A3
-:108F40003C0508008CA5005C8F8400808FBF00204A
-:108F5000AE23004CAE65319CAE030054AE4500DC40
-:108F6000AE6231A0AE6331A4AE663198AE22004845
-:108F70008FB3001CAE0200508FB10014AE4200E06F
-:108F8000AE4300E4AE4600D88FB000108FB2001898
-:108F90000A00057D27BD0028978500929783007CF5
-:108FA00027BDFFE8AFB0001000A3102BAFBF001427
-:108FB000240400058F900058104000552409000239
-:108FC0000E0006958F850080AF8200942404000374
-:108FD0001040004F240900023C0680000E00008172
-:108FE000ACC2002024070001240820001040004DDE
-:108FF00024040005978E00928F8AFF2C24090050CC
-:1090000025C50001A7850092A14900003C0D08007C
-:109010008DAD0064240380008F84FF28000D66005E
-:10902000AD4C0018A5400006954B000A8F85FF3017
-:109030002402FF8001633024A546000A915F000AE4
-:109040000000482103E2C825A159000AA0A0000899
-:10905000A140004CA08000D5961800029783009094
-:109060003C020004A49800EA960F00022418FFBFF7
-:1090700025EE2401A48E00BE8E0D0004ACAD00448C
-:109080008E0C0008ACAC0040A4A00050A4A000547A
-:109090008E0B000C240C0030AC8B00288E060010C8
-:1090A000AC860024A480003EA487004EA487005014
-:1090B000A483003CAD420074AC8800D8ACA800602A
-:1090C000A08700FC909F00D433F9007FA09900D4C2
-:1090D000909000D402187824A08F00D4914E007C88
-:1090E00035CD0001A14D007C938B009CAD480070F4
-:1090F000AC8C00DCA08B00D68F8800888F87008422
-:10910000AC8800C4AC8700C8A5400078A540007AB0
-:109110008FBF00148FB000100120102103E0000861
-:1091200027BD00188F8500940E0007258F860080CC
-:109130000A000E9F2409000227BDFFE0AFB0001017
-:109140008F900058AFB10014AFBF00188E09000413
-:109150000E00054A000921C08E0800048F84FF28F4
-:109160008F82FF30000839C03C068000ACC7002069
-:10917000948500EA904300131460001C30B1FFFF97
-:109180008F8CFF2C918B0008316A00401540000B3A
-:10919000000000008E0D0004022030218FBF001857
-:1091A0008FB100148FB00010240400220000382179
-:1091B000000D29C00A000D2F27BD00200E000098C9
-:1091C000000000008E0D0004022030218FBF001827
-:1091D0008FB100148FB00010240400220000382149
-:1091E000000D29C00A000D2F27BD00200E000090A1
-:1091F000000000008E0D0004022030218FBF0018F7
-:109200008FB100148FB00010240400220000382118
-:10921000000D29C00A000D2F27BD002027BDFFE04B
-:10922000AFB200183092FFFFAFB00010AFBF001C0C
-:10923000AFB100141240001E000080218F8600583C
-:109240008CC500002403000600053F02000514023F
-:1092500030E4000714830016304500FF2CA80006F8
-:1092600011000040000558803C0C0800258C58BCBB
-:10927000016C50218D490000012000080000000011
-:109280008F8E0098240D000111CD005024020002A1
-:10929000AF820098260900013130FFFF24C800206A
-:1092A0000212202B010030211480FFE5AF88005806
-:1092B000020010218FBF001C8FB200188FB1001464
-:1092C0008FB0001003E0000827BD00209387007EC8
-:1092D00054E00034000030210E000DE700000000D3
-:1092E0008F8600580A000EFF240200018F87009825
-:1092F0002405000210E50031240400130000282199
-:1093000000003021240700010E000D2F0000000096
-:109310000A000F008F8600588F83009824020002F5
-:109320001462FFF6240400120E000D9A00000000E3
-:109330008F85009400403021240400120E000D2F70
-:10934000000038210A000F008F8600588F83009894
-:109350002411000310710029241F0002107FFFCE8A
-:1093600026090001240400100000282100003021FB
-:109370000A000F1D240700018F91009824060002A7
-:109380001626FFF9240400100E000E410000000014
-:10939000144000238F9800588F8600580A000EFF53
-:1093A00024020003240400140E000D2F00002821C5
-:1093B0008F8600580A000EFF240200020E000EA93C
-:1093C000000000000A000F008F8600580E000D3FBD
-:1093D00000000000241900022404001400002821C9
-:1093E0000000302100003821AF9900980E000D2FA9
-:1093F000000000000A000F008F8600580E000D5775
-:10940000000000008F8500942419000200403021E4
-:1094100024040010000038210A000F56AF9900986C
-:109420000040382124040010970F0002000028217A
-:109430000E000D2F31E6FFFF8F8600580A000F0047
-:10944000AF9100988F84FF2C3C077FFF34E6FFFF2D
-:109450008C8500182402000100A61824AC83001893
-:1094600003E00008A08200053084FFFF30A5FFFF65
-:109470001080000700001821308200011040000217
-:1094800000042042006518211480FFFB00052840DD
-:1094900003E000080060102110C000070000000079
-:1094A0008CA2000024C6FFFF24A50004AC820000AB
-:1094B00014C0FFFB2484000403E000080000000047
-:1094C00010A0000824A3FFFFAC86000000000000ED
-:1094D000000000002402FFFF2463FFFF1462FFFA74
-:1094E0002484000403E0000800000000000411C010
-:1094F00003E000082442024027BDFFE8AFB000109F
-:1095000000808021AFBF00140E000F9600A0202124
-:1095100000504821240AFF808FBF00148FB0001034
-:10952000012A30243127007F3C08800A3C042100B6
-:1095300000E8102100C428253C03800027BD001846
-:10954000AC650024AF820038AC400000AC6500245C
-:1095500003E00008AC4000403C0D08008DAD005811
-:1095600000056180240AFF8001A45821016C482174
-:10957000012A30243127007F3C08800C3C04210064
-:1095800000E8102100C428253C038000AC650028B9
-:10959000AF82003403E00008AC40002430A5FFFF98
-:1095A0003C0680008CC201B80440FFFE3C086015F8
-:1095B00000A838253C031000ACC40180ACC0018475
-:1095C000ACC7018803E00008ACC301B83C0D08003B
-:1095D0008DAD005800056180240AFF8001A4582148
-:1095E000016C4021010A4824000931403107007F05
-:1095F00000C728253C04200000A418253C02800058
-:10960000AC43083003E00008AF80003427BDFFE81A
-:10961000AFB0001000808021AFBF00140E000F9685
-:1096200000A0202100504821240BFF80012B502452
-:10963000000A39403128007F3C0620008FBF00140B
-:109640008FB0001000E8282534C2000100A21825C0
-:109650003C04800027BD0018AC83083003E00008FC
-:10966000AF8000383C0580088CA700603C0680086D
-:109670000087102B144000112C8340008CA8006040
-:109680002D0340001060000F240340008CC90060CF
-:109690000089282B14A00002008018218CC30060D0
-:1096A00000035A42000B30803C0A0800254A59202A
-:1096B00000CA202103E000088C8200001460FFF340
-:1096C0002403400000035A42000B30803C0A08008B
-:1096D000254A592000CA202103E000088C8200009E
-:1096E0003C05800890A60008938400AB24C20001CA
-:1096F000304200FF3043007F1064000C0002382726
-:10970000A0A200083C0480008C85017804A0FFFE24
-:109710008F8A00A0240900023C081000AC8A014096
-:10972000A089014403E00008AC8801780A00101BFE
-:1097300030E2008027BDFFD8AFB200188F9200A49E
-:10974000AFBF0020AFB3001CAFB00010AFB100142A
-:109750008F9300348E5900283C1000803C0EFFEFA0
-:10976000AE7900008E580024A260000A35CDFFFFBC
-:10977000AE7800049251002C3C0BFF9F356AFFFF2E
-:10978000A271000C8E6F000C3C080040A271000B0F
-:1097900001F06025018D4824012A382400E8302595
-:1097A000AE66000C8E450004AE6000183C0400FF5D
-:1097B000AE6500148E43002C3482FFFFA6600008C3
-:1097C0000062F824AE7F00108E5900088F9000A030
-:1097D000964E0012AE7900208E51000C31D83FFF1A
-:1097E00000187980AE7100248E4D001401F06021C4
-:1097F00031CB0001AE6D00288E4A0018000C41C22A
-:10980000000B4B80AE6A002C8E46001C01093821EB
-:10981000A667001CAE660030964500028E4400200C
-:10982000A665001EAE64003492430033306200042B
-:1098300054400006924700003C0280083443010077
-:109840008C7F00D0AE7F0030924700008F860038BA
-:10985000A0C700309245003330A4000250800007BA
-:10986000925100018F880038240BFF80910A00304C
-:10987000014B4825A1090030925100018F9000381A
-:10988000240CFFBF2404FFDFA21100318F8D0038AC
-:109890003C1880083711008091AF003C31EE007F0A
-:1098A000A1AE003C8F890038912B003C016C502404
-:1098B000A12A003C8F9F00388E68001493E6003C7C
-:1098C0002D0700010007114000C4282400A218251C
-:1098D000A3E3003C8F87003896590012A4F90032A8
-:1098E0008E450004922E007C30B0000300107823D7
-:1098F00031ED000300AD102131CC000215800002D3
-:1099000024460034244600303C0280083443008062
-:10991000907F007C00BFC824333800041700000289
-:1099200024C2000400C010218F98003824190002BE
-:10993000ACE20034A3190000924F003F8F8E003834
-:109940003C0C8008358B0080A1CF00018F9100383E
-:10995000924D003F8E440004A62D0002956A005CE3
-:109960000E000FF43150FFFF00024B800209382532
-:109970003C08420000E82825AE2500048E4400384B
-:109980008F850038ACA400188E460034ACA6001CAD
-:10999000ACA0000CACA00010A4A00014A4A0001661
-:1099A000A4A00020A4A00022ACA000248E62001479
-:1099B00050400001240200018FBF00208FB3001C23
-:1099C0008FB200188FB100148FB00010ACA2000845
-:1099D0000A00101327BD002827BDFFC83C058008DA
-:1099E00034A40080AFBF0034AFBE0030AFB7002C4E
-:1099F000AFB60028AFB50024AFB40020AFB3001C51
-:109A0000AFB20018AFB10014AFB00010948300786B
-:109A10009482007A104300512405FFFF0080F0215A
-:109A20000A0011230080B821108B004D8FBF003435
-:109A30008F8600A03C1808008F18005C2411FF805E
-:109A40003C1680000306782101F18024AED0002C62
-:109A500096EE007A31EC007F3C0D800E31CB7FFF1B
-:109A6000018D5021000B4840012AA82196A4000036
-:109A70003C0808008D0800582405FF8030953FFF02
-:109A800001061821001539800067C8210325F82434
-:109A90003C02010003E290253338007F3C11800C2A
-:109AA000AED20028031190219250000D320F000415
-:109AB00011E0003702E0982196E3007A96E8007AF8
-:109AC00096E5007A2404800031077FFF24E300013B
-:109AD00030627FFF00A4F82403E2C825A6F9007ACB
-:109AE00096E6007A3C1408008E94006030D67FFF22
-:109AF00012D400C1000000008E5800188F8400A00E
-:109B000002A028212713FFFF0E000FCEAE53002C1A
-:109B100097D5007897D4007A12950010000028217C
-:109B20003C098008352401003C0A8008914800085F
-:109B3000908700D53114007F30E400FF0284302B81
-:109B400014C0FFB9268B0001938E00AB268C000158
-:109B5000008E682115ACFFB78F8600A08FBF003440
-:109B60008FBE00308FB7002C8FB600288FB5002431
-:109B70008FB400208FB3001C8FB200188FB1001477
-:109B80008FB0001000A0102103E0000827BD0038AE
-:109B900000C020210E000F99028028218E4B00105A
-:109BA0008E4C00308F84003824090002016C502351
-:109BB000AE4A0010A089000096E3005C8E4400309D
-:109BC0008F9100380E000FF43070FFFF00024380C9
-:109BD000020838253C02420000E22825AE25000498
-:109BE0008E5F00048F8A00388E590000240B000815
-:109BF000AD5F001CAD590018AD40000CAD40001029
-:109C00009246000A240400052408C00030D000FF5A
-:109C1000A550001496580008A55800169251000A45
-:109C20003C188008322F00FFA54F0020964E0008F8
-:109C300037110100A54E0022AD400024924D000BCB
-:109C400031AC00FFA54C0002A14B00018E49003051
-:109C50008F830038240BFFBFAC690008A06400307C
-:109C60008F9000382403FFDF9607003200E8282495
-:109C700000B51025A6020032921F003233F9003FD2
-:109C800037260040A20600328F8C0038AD800034A9
-:109C90008E2F00D0AD8F0038918E003C3C0F7FFF9F
-:109CA00031CD007FA18D003C8F84003835EEFFFF61
-:109CB000908A003C014B4824A089003C8F850038E5
-:109CC00090A8003C01033824A0A7003C8E42003439
-:109CD0008F9100383C038008AE2200408E59002C42
-:109CE0008E5F0030033F3023AE26004492300048A0
-:109CF0003218007FA23800488F8800388E4D00301F
-:109D00008D0C004801AE582401965024014B482583
-:109D1000AD0900489244000AA104004C964700088F
-:109D20008F850038A4A7004E8E5000308E4400303E
-:109D30000E0003818C65006092F9007C0002F940FE
-:109D4000004028210002110003E2302133360002D6
-:109D500012C00003020680210005B0800216802197
-:109D6000926D007C31B30004126000020005708027
-:109D7000020E80218E4B00308F8800382405800031
-:109D8000316A0003000A4823312400030204182129
-:109D9000AD03003496E4007A96F0007A96F1007AEA
-:109DA00032027FFF2447000130FF7FFF0225C824D5
-:109DB000033F3025A6E6007A96F8007A3C120800A8
-:109DC0008E520060330F7FFF11F200180000000078
-:109DD0008F8400A00E000FCE02A028218F8400A047
-:109DE0000E000FDE028028210E001013000000007C
-:109DF0000A00111F0000000096F1007A022480245E
-:109E0000A6F0007A92EF007A92EB007A31EE00FF32
-:109E1000000E69C2000D6027000C51C03169007F3F
-:109E2000012A20250A001119A2E4007A96E6007A98
-:109E300000C5C024A6F8007A92EF007A92F3007A67
-:109E400031F200FF001271C2000E6827000DB1C090
-:109E5000326C007F01962825A2E5007A0A0011D015
-:109E60008F8400A03C0380003084FFFF30A5FFFFFB
-:109E7000AC640018AC65001C03E000088C620014A0
-:109E800027BDFFA03C068008AFBF005CAFBE0058F6
-:109E9000AFB70054AFB60050AFB5004CAFB40048F8
-:109EA000AFB30044AFB20040AFB1003CAFB0003838
-:109EB00034C80100910500D590C700083084FFFF29
-:109EC00030A500FF30E2007F0045182AAFA4001043
-:109ED000A7A00018A7A0002610600055AFA000148E
-:109EE00090CA00083149007F00A9302324D3FFFF26
-:109EF0000013802B8FB400100014902B02128824C2
-:109F0000522000888FB300143C03800894790052DB
-:109F1000947E00508FB60010033EC0230018BC0092
-:109F2000001714030016FC0002C2A82A16A00002A3
-:109F3000001F2C030040282100133C0000072403CD
-:109F400000A4102A5440000100A020212885000907
-:109F500014A000020080A021241400083C0C8008FA
-:109F60008D860048001459808D88004C3C03800089
-:109F70003169FFFF3C0A0010012A202534710400DA
-:109F8000AC660038AF9100A4AC68003CAC64003013
-:109F900000000000000000000000000000000000C1
-:109FA00000000000000000000000000000000000B1
-:109FB0008C6E000031CD002011A0FFFD0014782A26
-:109FC00001F01024104000390000A8213C16800840
-:109FD00092D700083C1280008E44010032F6007FC8
-:109FE0000E000F9902C028218E3900108E44010006
-:109FF0000000902133373FFF0E000FB102E028210F
-:10A00000923800003302003F2C500008520000102C
-:10A0100000008821000210803C030800246358E4FB
-:10A020000043F8218FFE000003C00008000000007C
-:10A0300090CF0008938C00AB31EE007F00AE682318
-:10A04000018D58210A0012172573FFFF0000882197
-:10A050003C1E80008FC401000E000FCE02E02821BC
-:10A060008FC401000E000FDE02C028211220000F55
-:10A070000013802B8F8B00A426A400010004AC00E9
-:10A08000027298230015AC032578004002B4B02A70
-:10A090000013802B241700010300882102D0102414
-:10A0A000AF9800A41440FFC9AFB700143C07800864
-:10A0B00094E200508FAE00103C05800002A288217F
-:10A0C0003C060020A4F10050ACA6003094F40050EF
-:10A0D00094EF005201D51823306CFFFF11F4001EDD
-:10A0E000AFAC00108CEF004C001561808CF500487F
-:10A0F00001EC28210000202100AC582B02A4C02133
-:10A10000030BB021ACE5004CACF600488FB4001056
-:10A110000014902B021288241620FF7C3C03800838
-:10A120008FB300148FBF005C8FBE00583A620001ED
-:10A130008FB700548FB600508FB5004C8FB40048D5
-:10A140008FB300448FB200408FB1003C8FB0003815
-:10A1500003E0000827BD006094FE00548CF2004428
-:10A1600033C9FFFE0009C8C00259F821ACBF003C4A
-:10A170008CE800448CAD003C010D50231940003B9D
-:10A18000000000008CF7004026E20001ACA200387D
-:10A190003C05005034A700103C038000AC67003041
-:10A1A00000000000000000000000000000000000AF
-:10A1B000000000000000000000000000000000009F
-:10A1C0008C7800003316002012C0FFFD3C1180087F
-:10A1D000962200543C1580003C068008304E000159
-:10A1E000000E18C0007578218DEC04003C070800B3
-:10A1F0008CE700443C040020ACCC00488DF40404FF
-:10A20000240B0001ACD4004C10EB0260AEA4003073
-:10A21000963900523C0508008CA5004000B99021F9
-:10A22000A6320052963F005427ED0001A62D00549F
-:10A230009626005430C4FFFF5487FF2F8FB40010C0
-:10A2400030A5FFFF0E0011F4A62000543C070800C3
-:10A250008CE70024963E00520047B82303D74823DA
-:10A26000A62900520A0012198FB400108CE2004097
-:10A270000A0012BE00000000922400012407000121
-:10A280003085007F14A7001C97AD00268E2B00148C
-:10A29000240CC000316A3FFF01AC48243C06080092
-:10A2A0008CC60060012A402531043FFF0086882BC0
-:10A2B00012200011A7A800263C0508008CA5005814
-:10A2C0008F9100A0000439802402FF8000B1182182
-:10A2D0000067F82103E2F02433F8007F3C1280008D
-:10A2E0003C19800EAE5E002C0319702191D0000D38
-:10A2F000360F0004A1CF000D0E001028241200011B
-:10A30000241100013C1E80008FC401000E000FCEFE
-:10A3100002E028218FC401000E000FDE02C02821B8
-:10A320001620FF558F8B00A40A0012860013802B85
-:10A330008F8600A490C80001310400201080019194
-:10A34000241000013C048008348B0080916A007C5A
-:10A350008F9E0034AFA0002C314900011120000F66
-:10A36000AFB000288CCD00148C8E006001AE602B45
-:10A370001580000201A038218C8700603C188008FD
-:10A38000370300808C70007000F0782B15E000021D
-:10A3900000E020218C640070AFA4002C3C028008F7
-:10A3A000344500808CD200148CBF0070025FC82B33
-:10A3B00017200002024020218CA400708FA7002CDF
-:10A3C0000087182310600003AFA3003024050002AB
-:10A3D000AFA500288FA400280264882B162000BA9D
-:10A3E000000018218CD000388FCE000C3C0F00806C
-:10A3F000AFD000008CCD00343C0CFF9F01CF58251E
-:10A40000AFCD000490CA003F3586FFFF01662024CF
-:10A410003C0900203C08FFEFA3CA000B0089382547
-:10A420003511FFFF00F118243C0500088F8700A4B8
-:10A430000065C825AFD9000C8CE20014AFC000182D
-:10A440008FA60030AFC200148CF800188FB0002C1B
-:10A450003C1FFFFBAFD8001C8CEF000837F2FFFF5A
-:10A4600003326824AFCF00248CEC000C020670216C
-:10A47000AFCD000CA7C00038A7C0003AAFCE002C6B
-:10A48000AFCC0020AFC000288CEA00148FAB002CAA
-:10A49000014B48230126402311000011AFC80010D2
-:10A4A00090EB003D8FC900048FC80000000B5100E5
-:10A4B000012A28210000102100AA882B010218215E
-:10A4C0000071F821AFC50004AFDF000090F2003D3D
-:10A4D000A3D2000A8F9900A497380006A7D80008D5
-:10A4E0008F910038240800023C038008A228000055
-:10A4F0003465008094BF005C8FA4002C33F0FFFF14
-:10A500000E000FF48F9200380002CB808F8500A4DC
-:10A51000021978253C18420001F87025AE4E00045F
-:10A520008F8400388CAD0038AC8D00188CAC0034B2
-:10A53000AC8C001CAC80000CAC800010A48000141B
-:10A54000A4800016A4800020A4800022AC800024F7
-:10A5500090A6003F8FA7002CA486000250E0019235
-:10A56000240700018FA200305040000290A2003D5D
-:10A5700090A2003E244A0001A08A00018F84003886
-:10A580008FA9002CAC8900083C128008364D008051
-:10A5900091AC007C3186000214C000022407003414
-:10A5A000240700308F8500A43C198008373F0080C5
-:10A5B00090B0000093F9007C240E0004A0900030BD
-:10A5C0008F8F00A48FB8002C8F8D003891F200017E
-:10A5D0003304000301C46023A1B200318F8E003820
-:10A5E0008F8600A42402C00095CA003294C90012CC
-:10A5F0008FAB002C0142402431233FFF010388250B
-:10A60000A5D1003291D000323185000300EBF82152
-:10A610003218003F370F0040A1CF00328FA4002C2A
-:10A6200003E5382133280004108000028F850038AC
-:10A6300000E838213C0A8008ACA700343549010005
-:10A640008D2800D08FA3002C2419FFBFACA80038A0
-:10A6500090B1003C2C640001240FFFDF3227007F03
-:10A66000A0A7003C8F98003800049140931F003C45
-:10A6700003F98024A310003C8F8C0038918E003C9D
-:10A6800001CF682401B23025A186003C8F8900A447
-:10A690008F8800388D2B0020AD0B00408D220024C8
-:10A6A000AD0200448D2A0028AD0A00488D23002CFD
-:10A6B0000E001013AD03004C8FB1002824070002D8
-:10A6C000122700118FA300280003282B00058023E8
-:10A6D0000270982400608021006090210A00126FAF
-:10A6E0000010882B962900128F8400A00000902172
-:10A6F0003125FFFFA7A900180E000FC22411000189
-:10A700000A00131D3C1E80003C0B80003C12800898
-:10A710008D640100924900088F92FF340E000F995A
-:10A720003125007F8F9900388FA700288FA4003033
-:10A73000A3270000965F005C33F0FFFF0E000FF4CC
-:10A740008F91003800026B80020D80253C0842008A
-:10A750008F8D00A402085025AE2A00048DA5003874
-:10A760008F8A003800007821000F1100AD450018D5
-:10A770008DB800343C047FFF3488FFFFAD58001CC7
-:10A7800091A6003E8D4C001C8D4900180006190052
-:10A79000000677020183C821004E58250323882B29
-:10A7A000012B382100F1F821AD59001CAD5F0018D4
-:10A7B000AD40000CAD40001091B0003E8FA40030C1
-:10A7C00024090005A550001495A500042419C00013
-:10A7D00000884024A545001691B8003EA5580020E9
-:10A7E00095AF0004A54F0022AD40002491AE003F7C
-:10A7F000A54E000291A6003E91AC003D01861023BB
-:10A80000244B0001A14B00018F9100388FA3003031
-:10A810003C028008344B0100AE230008A22900301E
-:10A820008F8C00388F8700A4959F003294F000121F
-:10A830002407FFBF033FC02432053FFF03057825EF
-:10A84000A58F0032918E00322418FFDF31CD003FFA
-:10A8500035A60040A18600328F910038240DFFFFFD
-:10A86000240CFF80AE2000348D6A00D0AE2A003860
-:10A870009223003C3069007FA229003C8F90003871
-:10A880003C0380009219003C0327F824A21F003CDF
-:10A890008F8E003891C5003C00B87824A1CF003CD1
-:10A8A0008F8A00383C0E8008AD4D00408FA6002CEA
-:10A8B000AD46004491420048004C5825A14B004849
-:10A8C0008F9000388F9900A48E09004801238824B6
-:10A8D00002283825AE070048933F003EA21F004CD7
-:10A8E0008F9800A48F8F003897050004A5E5004ECF
-:10A8F0000E0003818DC500609246007C8FAC003055
-:10A9000000026940000291000040282130CB000283
-:10A9100001B21021156000AA018230213C0E80088E
-:10A9200035C20080904C007C31830004106000032D
-:10A930008FB900300005788000CF3021241F00043B
-:10A940008F910038332D000303ED8023320800037C
-:10A9500000C85021AE2A00343C188000A7C500383A
-:10A960003C0680088F04010090DE00080E000FDE18
-:10A9700033C5007F0E001013000000000A00140D04
-:10A980008FA300288F9800348CC90038241F00033F
-:10A99000A7000008AF0900008CC50034A300000A1E
-:10A9A0008F9900A4AF0500043C080080932D003F60
-:10A9B000A31F000C8F0A000C3C02FF9FA30D000B8D
-:10A9C0000148F0253451FFFF3C12FFEF8F9900A49E
-:10A9D00003D170243646FFFF01C61824AF03000CD4
-:10A9E0008F2C0014972900128F8400A0AF0C001048
-:10A9F0008F2F0014AF000018AF000020AF0F00141D
-:10AA0000AF0000248F270018312F3FFF000F59801F
-:10AA1000AF0700288F2500080164F821312D0001BF
-:10AA2000AF0500308F31000C8F920038001F51C2EB
-:10AA3000000D438001481021241E00023C068008BE
-:10AA4000A702001CA7000034AF11002CA25E00007A
-:10AA500034D20080964E005C8F9900383C0342004F
-:10AA600031CCFFFF01833825AF2700048F8B00A472
-:10AA7000240500012402C0008D640038240700343E
-:10AA8000AF2400188D690034AF29001CAF20000CE2
-:10AA9000AF200010A7200014A7200016A720002038
-:10AAA000A7200022AF200024A7300002A325000128
-:10AAB0008F8800388F9F00A4AD10000893ED000030
-:10AAC000A10D00308F8A00A48F98003891510001A9
-:10AAD000A31100318F8B0038957E003203C27024A1
-:10AAE00001CF6025A56C0032916300323064003FD5
-:10AAF000A16400329249007C3125000214A00002BA
-:10AB00008F840038240700303C198008AC8700345B
-:10AB1000373201008E5F00D0240AFFBF020090216F
-:10AB2000AC9F0038908D003C31A8007FA088003C8D
-:10AB30008F9E003893C2003C004A8824A3D1003C79
-:10AB40008F8300380010882B9066003C34CE0020A4
-:10AB5000A06E003C8F8400A48F9800388C8C00205D
-:10AB6000AF0C00408C8F0024AF0F00448C8700286E
-:10AB7000AF0700488C8B002CAF0B004C0E0010135D
-:10AB80003C1E80000A0012700000000094C80052B1
-:10AB90003C0A08008D4A002401488821A4D10052B3
-:10ABA0000A0012198FB40010A08700018F840038AA
-:10ABB000240B0001AC8B00080A0013BE3C12800875
-:10ABC000000520800A0014A200C4302127BDFFE048
-:10ABD0003C0D8008AFB20018AFB00010AFBF001C32
-:10ABE000AFB1001435B200808E4C001835A80100BA
-:10ABF000964B000695A70050910900FC000C5602E8
-:10AC0000016728233143007F312600FF240200031F
-:10AC1000AF8300A8AF8400A010C2001B30B0FFFFBC
-:10AC2000910600FC2412000530C200FF10520033D0
-:10AC300000000000160000098FBF001C8FB2001832
-:10AC40008FB100148FB00010240D0C003C0C80005C
-:10AC500027BD002003E00008AD8D00240E0011FB8D
-:10AC6000020020218FBF001C8FB200188FB100148A
-:10AC70008FB00010240D0C003C0C800027BD00207C
-:10AC800003E00008AD8D0024965800789651007AB4
-:10AC9000924E007D0238782631E8FFFF31C400C0B3
-:10ACA000148000092D11000116000037000000007B
-:10ACB0005620FFE28FBF001C0E0010D100000000E4
-:10ACC0000A00156A8FBF001C1620FFDA0000000082
-:10ACD0000E0010D1000000001440FFD88FBF001CF0
-:10ACE0001600002200000000925F007D33E2003F6A
-:10ACF000A242007D0A00156A8FBF001C950900EA78
-:10AD00008F86008000802821240400050E0007257E
-:10AD10003130FFFF978300923C0480002465FFFFE1
-:10AD2000A78500928C8A01B80540FFFE0000000054
-:10AD3000AC8001808FBF001CAC9001848FB20018E2
-:10AD40008FB100148FB000103C0760133C0B100053
-:10AD5000240D0C003C0C800027BD0020AC8701882E
-:10AD6000AC8B01B803E00008AD8D00240E0011FB90
-:10AD7000020020215040FFB18FBF001C925F007D78
-:10AD80000A00159733E2003F0E0011FB020020215C
-:10AD90001440FFAA8FBF001C122000070000000013
-:10ADA0009259007D3330003F36020040A242007DC0
-:10ADB0000A00156A8FBF001C0E0010D100000000B1
-:10ADC0005040FF9E8FBF001C9259007D3330003FE2
-:08ADD0000A0015C6360200401E
-:08ADD800000000000000001B58
-:10ADE0000000000F0000000A00000008000000063C
-:10ADF0000000000500000005000000040000000441
-:10AE00000000000300000003000000030000000336
-:10AE10000000000300000002000000020000000229
-:10AE2000000000020000000200000002000000021A
-:10AE3000000000020000000200000002000000020A
-:10AE400000000002000000020000000200000002FA
-:0CAE5000000000010000000100000001F3
-:04AE5C008008010069
-:10AE6000800800808008000000000C000000308096
-:10AE7000080011D00800127C08001294080012A8E3
-:10AE8000080012BC080011D0080011D0080012F010
-:10AE90000800132C080013400800138808001A8CBF
-:10AEA00008001A8C08001AC408001AC408001AD82E
-:10AEB00008001AA808001D0008001CCC08001D5836
-:10AEC00008001D5808001DE008001D108008024001
-:10AED000080027340800256C0800275C080027F4C8
-:10AEE0000800293C0800298808002AAC080029B479
-:10AEF00008002A38080025DC08002EDC08002EA4F3
-:10AF000008002588080025880800258808002B20CF
-:10AF100008002B20080025880800258808002DD06F
-:10AF2000080025880800258808002588080025884D
-:10AF300008002E0C080025880800258808002588B0
-:10AF4000080025880800258808002588080025882D
-:10AF5000080025880800258808002588080025881D
-:10AF6000080025880800258808002588080029A8E9
-:10AF7000080025880800258808002E680800258814
-:10AF800008002588080025880800258808002588ED
-:10AF900008002588080025880800258808002588DD
-:10AFA00008002588080025880800258808002588CD
-:10AFB00008002588080025880800258808002588BD
-:10AFC00008002CF4080025880800258808002C6853
-:10AFD00008002BC408003CE408003CB808003C848E
-:10AFE00008003C5808003C3808003BEC8008010091
-:10AFF00080080080800800008008008008004C6401
-:10B0000008004C9C08004BE408004C6408004C64A9
-:0CB01000080049B808004C6408005050CB
-:04B01C000A000C8496
-:10B0200000000000000000000000000D7278703683
-:10B030002E322E31610000000602010300000000E4
-:10B0400000000001000000000000000000000000FF
-:10B0500000000000000000000000000000000000F0
-:10B0600000000000000000000000000000000000E0
-:10B0700000000000000000000000000000000000D0
-:10B0800000000000000000000000000000000000C0
-:10B0900000000000000000000000000000000000B0
-:10B0A00000000000000000000000000000000000A0
-:10B0B0000000000000000000000000000000000090
-:10B0C0000000000000000000000000000000000080
-:10B0D0000000000000000000000000000000000070
-:10B0E0000000000000000000000000000000000060
-:10B0F0000000000000000000000000000000000050
-:10B10000000000000000000000000000000000003F
-:10B11000000000000000000000000000000000002F
-:10B12000000000000000000000000000000000001F
-:10B13000000000000000000000000000000000000F
-:10B1400000000000000000000000000000000000FF
-:10B1500000000000000000000000000000000000EF
-:10B1600000000000000000000000000000000000DF
-:10B1700000000000000000000000000000000000CF
-:10B1800000000000000000000000000000000000BF
-:10B1900000000000000000000000000000000000AF
-:10B1A000000000000000000000000000000000009F
-:10B1B000000000000000000000000000000000008F
-:10B1C000000000000000000000000000000000007F
-:10B1D000000000000000000000000000000000006F
-:10B1E000000000000000000000000000000000005F
-:10B1F000000000000000000000000000000000004F
-:10B20000000000000000000000000000000000003E
-:10B21000000000000000000000000000000000002E
-:10B22000000000000000000000000000000000001E
-:10B23000000000000000000000000000000000000E
-:10B2400000000000000000000000000000000000FE
-:10B2500000000000000000000000000000000000EE
-:10B2600000000000000000000000000000000000DE
-:10B2700000000000000000000000000000000000CE
-:10B2800000000000000000000000000000000000BE
-:10B2900000000000000000000000000000000000AE
-:10B2A000000000000000000000000000000000009E
-:10B2B000000000000000000000000000000000008E
-:10B2C000000000000000000000000000000000007E
-:10B2D000000000000000000000000000000000006E
-:10B2E000000000000000000000000000000000005E
-:10B2F000000000000000000000000000000000004E
-:10B30000000000000000000000000000000000003D
-:10B31000000000000000000000000000000000002D
-:10B32000000000000000000000000000000000001D
-:10B33000000000000000000000000000000000000D
-:10B3400000000000000000000000000000000000FD
-:10B3500000000000000000000000000000000000ED
-:10B3600000000000000000000000000000000000DD
-:10B3700000000000000000000000000000000000CD
-:10B3800000000000000000000000000000000000BD
-:10B3900000000000000000000000000000000000AD
-:10B3A000000000000000000000000000000000009D
-:10B3B000000000000000000000000000000000008D
-:10B3C000000000000000000000000000000000007D
-:10B3D000000000000000000000000000000000006D
-:10B3E000000000000000000000000000000000005D
-:10B3F000000000000000000000000000000000004D
-:10B40000000000000000000000000000000000003C
-:10B41000000000000000000000000000000000002C
-:10B42000000000000000000000000000000000001C
-:10B43000000000000000000000000000000000000C
-:10B4400000000000000000000000000000000000FC
-:10B4500000000000000000000000000000000000EC
-:10B4600000000000000000000000000000000000DC
-:10B4700000000000000000000000000000000000CC
-:10B4800000000000000000000000000000000000BC
-:10B4900000000000000000000000000000000000AC
-:10B4A000000000000000000000000000000000009C
-:10B4B000000000000000000000000000000000008C
-:10B4C000000000000000000000000000000000007C
-:10B4D000000000000000000000000000000000006C
-:10B4E000000000000000000000000000000000005C
-:10B4F000000000000000000000000000000000004C
-:10B50000000000000000000000000000000000003B
-:10B51000000000000000000000000000000000002B
-:10B52000000000000000000000000000000000001B
-:10B53000000000000000000000000000000000000B
-:10B5400000000000000000000000000000000000FB
-:10B5500000000000000000000000000000000000EB
-:10B5600000000000000000000000000000000000DB
-:10B5700000000000000000000000000000000000CB
-:10B5800000000000000000000000000000000000BB
-:10B5900000000000000000000000000000000000AB
-:10B5A000000000000000000000000000000000009B
-:10B5B000000000000000000000000000000000008B
-:10B5C000000000000000000000000000000000007B
-:10B5D000000000000000000000000000000000006B
-:10B5E000000000000000000000000000000000005B
-:10B5F000000000000000000000000000000000004B
-:10B60000000000000000000000000000000000003A
-:10B61000000000000000000000000000000000002A
-:10B62000000000000000000000000000000000001A
-:10B63000000000000000000000000000000000000A
-:10B6400000000000000000000000000000000000FA
-:10B6500000000000000000000000000000000000EA
-:10B6600000000000000000000000000000000000DA
-:10B6700000000000000000000000000000000000CA
-:10B6800000000000000000000000000000000000BA
-:10B6900000000000000000000000000000000000AA
-:10B6A000000000000000000000000000000000009A
-:10B6B000000000000000000000000000000000008A
-:10B6C000000000000000000000000000000000007A
-:10B6D000000000000000000000000000000000006A
-:10B6E000000000000000000000000000000000005A
-:10B6F000000000000000000000000000000000004A
-:10B700000000000000000000000000000000000039
-:10B710000000000000000000000000000000000029
-:10B720000000000000000000000000000000000019
-:10B730000000000000000000000000000000000009
-:10B7400000000000000000000000000000000000F9
-:10B7500000000000000000000000000000000000E9
-:10B7600000000000000000000000000000000000D9
-:10B7700000000000000000000000000000000000C9
-:10B7800000000000000000000000000000000000B9
-:10B7900000000000000000000000000000000000A9
-:10B7A0000000000000000000000000000000000099
-:10B7B0000000000000000000000000000000000089
-:10B7C0000000000000000000000000000000000079
-:10B7D0000000000000000000000000000000000069
-:10B7E0000000000000000000000000000000000059
-:10B7F0000000000000000000000000000000000049
-:10B800000000000000000000000000000000000038
-:10B810000000000000000000000000000000000028
-:10B820000000000000000000000000000000000018
-:10B830000000000000000000000000000000000008
-:10B8400000000000000000000000000000000000F8
-:10B8500000000000000000000000000000000000E8
-:10B8600000000000000000000000000000000000D8
-:10B8700000000000000000000000000000000000C8
-:10B8800000000000000000000000000000000000B8
-:10B8900000000000000000000000000000000000A8
-:10B8A0000000000000000000000000000000000098
-:10B8B0000000000000000000000000000000000088
-:10B8C0000000000000000000000000000000000078
-:10B8D0000000000000000000000000000000000068
-:10B8E0000000000000000000000000000000000058
-:10B8F0000000000000000000000000000000000048
-:10B900000000000000000000000000000000000037
-:10B910000000000000000000000000000000000027
-:10B920000000000000000000000000000000000017
-:10B930000000000000000000000000000000000007
-:10B9400000000000000000000000000000000000F7
-:10B9500000000000000000000000000000000000E7
-:10B9600000000000000000000000000000000000D7
-:10B9700000000000000000000000000000000000C7
-:10B9800000000000000000000000000000000000B7
-:10B9900000000000000000000000000000000000A7
-:10B9A0000000000000000000000000000000000097
-:10B9B0000000000000000000000000000000000087
-:10B9C0000000000000000000000000000000000077
-:10B9D0000000000000000000000000000000000067
-:10B9E0000000000000000000000000000000000057
-:10B9F0000000000000000000000000000000000047
-:10BA00000000000000000000000000000000000036
-:10BA10000000000000000000000000000000000026
-:10BA20000000000000000000000000000000000016
-:10BA30000000000000000000000000000000000006
-:10BA400000000000000000000000000000000000F6
-:10BA500000000000000000000000000000000000E6
-:10BA600000000000000000000000000000000000D6
-:10BA700000000000000000000000000000000000C6
-:10BA800000000000000000000000000000000000B6
-:10BA900000000000000000000000000000000000A6
-:10BAA0000000000000000000000000000000000096
-:10BAB0000000000000000000000000000000000086
-:10BAC0000000000000000000000000000000000076
-:10BAD0000000000000000000000000000000000066
-:10BAE0000000000000000000000000000000000056
-:10BAF0000000000000000000000000000000000046
-:10BB00000000000000000000000000000000000035
-:10BB10000000000000000000000000000000000025
-:10BB20000000000000000000000000000000000015
-:10BB30000000000000000000000000000000000005
-:10BB400000000000000000000000000000000000F5
-:10BB500000000000000000000000000000000000E5
-:10BB600000000000000000000000000000000000D5
-:10BB700000000000000000000000000000000000C5
-:10BB800000000000000000000000000000000000B5
-:10BB900000000000000000000000000000000000A5
-:10BBA0000000000000000000000000000000000095
-:10BBB0000000000000000000000000000000000085
-:10BBC0000000000000000000000000000000000075
-:10BBD0000000000000000000000000000000000065
-:10BBE0000000000000000000000000000000000055
-:10BBF0000000000000000000000000000000000045
-:10BC00000000000000000000000000000000000034
-:10BC10000000000000000000000000000000000024
-:10BC20000000000000000000000000000000000014
-:10BC30000000000000000000000000000000000004
-:10BC400000000000000000000000000000000000F4
-:10BC500000000000000000000000000000000000E4
-:10BC600000000000000000000000000000000000D4
-:10BC700000000000000000000000000000000000C4
-:10BC800000000000000000000000000000000000B4
-:10BC900000000000000000000000000000000000A4
-:10BCA0000000000000000000000000000000000094
-:10BCB0000000000000000000000000000000000084
-:10BCC0000000000000000000000000000000000074
-:10BCD0000000000000000000000000000000000064
-:10BCE0000000000000000000000000000000000054
-:10BCF0000000000000000000000000000000000044
-:10BD00000000000000000000000000000000000033
-:10BD10000000000000000000000000000000000023
-:10BD20000000000000000000000000000000000013
-:10BD30000000000000000000000000000000000003
-:10BD400000000000000000000000000000000000F3
-:10BD500000000000000000000000000000000000E3
-:10BD600000000000000000000000000000000000D3
-:10BD700000000000000000000000000000000000C3
-:10BD800000000000000000000000000000000000B3
-:10BD900000000000000000000000000000000000A3
-:10BDA0000000000000000000000000000000000093
-:10BDB0000000000000000000000000000000000083
-:10BDC0000000000000000000000000000000000073
-:10BDD0000000000000000000000000000000000063
-:10BDE0000000000000000000000000000000000053
-:10BDF0000000000000000000000000000000000043
-:10BE00000000000000000000000000000000000032
-:10BE10000000000000000000000000000000000022
-:10BE20000000000000000000000000000000000012
-:10BE30000000000000000000000000000000000002
-:10BE400000000000000000000000000000000000F2
-:10BE500000000000000000000000000000000000E2
-:10BE600000000000000000000000000000000000D2
-:10BE700000000000000000000000000000000000C2
-:10BE800000000000000000000000000000000000B2
-:10BE900000000000000000000000000000000000A2
-:10BEA0000000000000000000000000000000000092
-:10BEB0000000000000000000000000000000000082
-:10BEC0000000000000000000000000000000000072
-:10BED0000000000000000000000000000000000062
-:10BEE0000000000000000000000000000000000052
-:10BEF0000000000000000000000000000000000042
-:10BF00000000000000000000000000000000000031
-:10BF10000000000000000000000000000000000021
-:10BF20000000000000000000000000000000000011
-:10BF30000000000000000000000000000000000001
-:10BF400000000000000000000000000000000000F1
-:10BF500000000000000000000000000000000000E1
-:10BF600000000000000000000000000000000000D1
-:10BF700000000000000000000000000000000000C1
-:10BF800000000000000000000000000000000000B1
-:10BF900000000000000000000000000000000000A1
-:10BFA0000000000000000000000000000000000091
-:10BFB0000000000000000000000000000000000081
-:10BFC0000000000000000000000000000000000071
-:10BFD0000000000000000000000000000000000061
-:10BFE0000000000000000000000000000000000051
-:10BFF0000000000000000000000000000000000041
-:10C000000000000000000000000000000000000030
-:10C010000000000000000000000000000000000020
-:10C020000000000000000000000000000000000010
-:10C030000000000000000000000000000000000000
-:10C0400000000000000000000000000000000000F0
-:10C0500000000000000000000000000000000000E0
-:10C0600000000000000000000000000000000000D0
-:10C0700000000000000000000000000000000000C0
-:10C0800000000000000000000000000000000000B0
-:10C0900000000000000000000000000000000000A0
-:10C0A0000000000000000000000000000000000090
-:10C0B0000000000000000000000000000000000080
-:10C0C0000000000000000000000000000000000070
-:10C0D0000000000000000000000000000000000060
-:10C0E0000000000000000000000000000000000050
-:10C0F0000000000000000000000000000000000040
-:10C10000000000000000000000000000000000002F
-:10C11000000000000000000000000000000000001F
-:10C12000000000000000000000000000000000000F
-:10C1300000000000000000000000000000000000FF
-:10C1400000000000000000000000000000000000EF
-:10C1500000000000000000000000000000000000DF
-:10C1600000000000000000000000000000000000CF
-:10C1700000000000000000000000000000000000BF
-:10C1800000000000000000000000000000000000AF
-:10C19000000000000000000000000000000000009F
-:10C1A000000000000000000000000000000000008F
-:10C1B000000000000000000000000000000000007F
-:10C1C000000000000000000000000000000000006F
-:10C1D000000000000000000000000000000000005F
-:10C1E000000000000000000000000000000000004F
-:10C1F000000000000000000000000000000000003F
-:10C20000000000000000000000000000000000002E
-:10C21000000000000000000000000000000000001E
-:10C22000000000000000000000000000000000000E
-:10C2300000000000000000000000000000000000FE
-:10C2400000000000000000000000000000000000EE
-:10C2500000000000000000000000000000000000DE
-:10C2600000000000000000000000000000000000CE
-:10C2700000000000000000000000000000000000BE
-:10C2800000000000000000000000000000000000AE
-:10C29000000000000000000000000000000000009E
-:10C2A000000000000000000000000000000000008E
-:10C2B000000000000000000000000000000000007E
-:10C2C000000000000000000000000000000000006E
-:10C2D000000000000000000000000000000000005E
-:10C2E000000000000000000000000000000000004E
-:10C2F000000000000000000000000000000000003E
-:10C30000000000000000000000000000000000002D
-:10C31000000000000000000000000000000000001D
-:10C32000000000000000000000000000000000000D
-:10C3300000000000000000000000000000000000FD
-:10C3400000000000000000000000000000000000ED
-:10C3500000000000000000000000000000000000DD
-:10C3600000000000000000000000000000000000CD
-:10C3700000000000000000000000000000000000BD
-:10C3800000000000000000000000000000000000AD
-:10C39000000000000000000000000000000000009D
-:10C3A000000000000000000000000000000000008D
-:10C3B000000000000000000000000000000000007D
-:10C3C000000000000000000000000000000000006D
-:10C3D000000000000000000000000000000000005D
-:10C3E000000000000000000000000000000000004D
-:10C3F000000000000000000000000000000000003D
-:10C40000000000000000000000000000000000002C
-:10C41000000000000000000000000000000000001C
-:10C42000000000000000000000000000000000000C
-:10C4300000000000000000000000000000000000FC
-:10C4400000000000000000000000000000000000EC
-:10C4500000000000000000000000000000000000DC
-:10C4600000000000000000000000000000000000CC
-:10C4700000000000000000000000000000000000BC
-:10C4800000000000000000000000000000000000AC
-:10C49000000000000000000000000000000000009C
-:10C4A000000000000000000000000000000000008C
-:10C4B000000000000000000000000000000000007C
-:10C4C000000000000000000000000000000000006C
-:10C4D000000000000000000000000000000000005C
-:10C4E000000000000000000000000000000000004C
-:10C4F000000000000000000000000000000000003C
-:10C50000000000000000000000000000000000002B
-:10C51000000000000000000000000000000000001B
-:10C52000000000000000000000000000000000000B
-:10C5300000000000000000000000000000000000FB
-:10C5400000000000000000000000000000000000EB
-:10C5500000000000000000000000000000000000DB
-:10C5600000000000000000000000000000000000CB
-:10C5700000000000000000000000000000000000BB
-:10C5800000000000000000000000000000000000AB
-:10C59000000000000000000000000000000000009B
-:10C5A000000000000000000000000000000000008B
-:10C5B000000000000000000000000000000000007B
-:10C5C000000000000000000000000000000000006B
-:10C5D000000000000000000000000000000000005B
-:10C5E000000000000000000000000000000000004B
-:10C5F000000000000000000000000000000000003B
-:10C60000000000000000000000000000000000002A
-:10C61000000000000000000000000000000000001A
-:10C62000000000000000000000000000000000000A
-:10C6300000000000000000000000000000000000FA
-:10C6400000000000000000000000000000000000EA
-:10C6500000000000000000000000000000000000DA
-:10C6600000000000000000000000000000000000CA
-:10C6700000000000000000000000000000000000BA
-:10C6800000000000000000000000000000000000AA
-:10C69000000000000000000000000000000000009A
-:10C6A000000000000000000000000000000000008A
-:10C6B000000000000000000000000000000000007A
-:10C6C000000000000000000000000000000000006A
-:10C6D000000000000000000000000000000000005A
-:10C6E000000000000000000000000000000000004A
-:10C6F000000000000000000000000000000000003A
-:10C700000000000000000000000000000000000029
-:10C710000000000000000000000000000000000019
-:10C720000000000000000000000000000000000009
-:10C7300000000000000000000000000000000000F9
-:10C7400000000000000000000000000000000000E9
-:10C7500000000000000000000000000000000000D9
-:10C7600000000000000000000000000000000000C9
-:10C7700000000000000000000000000000000000B9
-:10C7800000000000000000000000000000000000A9
-:10C790000000000000000000000000000000000099
-:10C7A0000000000000000000000000000000000089
-:10C7B0000000000000000000000000000000000079
-:10C7C0000000000000000000000000000000000069
-:10C7D0000000000000000000000000000000000059
-:10C7E0000000000000000000000000000000000049
-:10C7F0000000000000000000000000000000000039
-:10C800000000000000000000000000000000000028
-:10C810000000000000000000000000000000000018
-:10C820000000000000000000000000000000000008
-:10C8300000000000000000000000000000000000F8
-:10C8400000000000000000000000000000000000E8
-:10C8500000000000000000000000000000000000D8
-:10C8600000000000000000000000000000000000C8
-:10C8700000000000000000000000000000000000B8
-:10C8800000000000000000000000000000000000A8
-:10C890000000000000000000000000000000000098
-:10C8A0000000000000000000000000000000000088
-:10C8B0000000000000000000000000000000000078
-:10C8C0000000000000000000000000000000000068
-:10C8D0000000000000000000000000000000000058
-:10C8E0000000000000000000000000000000000048
-:10C8F0000000000000000000000000000000000038
-:10C900000000000000000000000000000000000027
-:10C910000000000000000000000000000000000017
-:10C920000000000000000000000000000000000007
-:10C9300000000000000000000000000000000000F7
-:10C9400000000000000000000000000000000000E7
-:10C9500000000000000000000000000000000000D7
-:10C9600000000000000000000000000000000000C7
-:10C9700000000000000000000000000000000000B7
-:10C9800000000000000000000000000000000000A7
-:10C990000000000000000000000000000000000097
-:10C9A0000000000000000000000000000000000087
-:10C9B0000000000000000000000000000000000077
-:10C9C0000000000000000000000000000000000067
-:10C9D0000000000000000000000000000000000057
-:10C9E0000000000000000000000000000000000047
-:10C9F0000000000000000000000000000000000037
-:10CA00000000000000000000000000000000000026
-:10CA10000000000000000000000000000000000016
-:10CA20000000000000000000000000000000000006
-:10CA300000000000000000000000000000000000F6
-:10CA400000000000000000000000000000000000E6
-:10CA500000000000000000000000000000000000D6
-:10CA600000000000000000000000000000000000C6
-:10CA700000000000000000000000000000000000B6
-:10CA800000000000000000000000000000000000A6
-:10CA90000000000000000000000000000000000096
-:10CAA0000000000000000000000000000000000086
-:10CAB0000000000000000000000000000000000076
-:10CAC0000000000000000000000000000000000066
-:10CAD0000000000000000000000000000000000056
-:10CAE0000000000000000000000000000000000046
-:10CAF0000000000000000000000000000000000036
-:10CB00000000000000000000000000000000000025
-:10CB10000000000000000000000000000000000015
-:10CB20000000000000000000000000000000000005
-:10CB300000000000000000000000000000000000F5
-:10CB400000000000000000000000000000000000E5
-:10CB500000000000000000000000000000000000D5
-:10CB600000000000000000000000000000000000C5
-:10CB700000000000000000000000000000000000B5
-:10CB800000000000000000000000000000000000A5
-:10CB90000000000000000000000000000000000095
-:10CBA0000000000000000000000000000000000085
-:10CBB0000000000000000000000000000000000075
-:10CBC0000000000000000000000000000000000065
-:10CBD0000000000000000000000000000000000055
-:10CBE0000000000000000000000000000000000045
-:10CBF0000000000000000000000000000000000035
-:10CC00000000000000000000000000000000000024
-:10CC10000000000000000000000000000000000014
-:10CC20000000000000000000000000000000000004
-:10CC300000000000000000000000000000000000F4
-:10CC400000000000000000000000000000000000E4
-:10CC500000000000000000000000000000000000D4
-:10CC600000000000000000000000000000000000C4
-:10CC700000000000000000000000000000000000B4
-:10CC800000000000000000000000000000000000A4
-:10CC90000000000000000000000000000000000094
-:10CCA0000000000000000000000000000000000084
-:10CCB0000000000000000000000000000000000074
-:10CCC0000000000000000000000000000000000064
-:10CCD0000000000000000000000000000000000054
-:10CCE0000000000000000000000000000000000044
-:10CCF0000000000000000000000000000000000034
-:10CD00000000000000000000000000000000000023
-:10CD10000000000000000000000000000000000013
-:10CD20000000000000000000000000000000000003
-:10CD300000000000000000000000000000000000F3
-:10CD400000000000000000000000000000000000E3
-:10CD500000000000000000000000000000000000D3
-:10CD600000000000000000000000000000000000C3
-:10CD700000000000000000000000000000000000B3
-:10CD800000000000000000000000000000000000A3
-:10CD90000000000000000000000000000000000093
-:10CDA0000000000000000000000000000000000083
-:10CDB0000000000000000000000000000000000073
-:10CDC0000000000000000000000000000000000063
-:10CDD0000000000000000000000000000000000053
-:10CDE0000000000000000000000000000000000043
-:10CDF0000000000000000000000000000000000033
-:10CE00000000000000000000000000000000000022
-:10CE10000000000000000000000000000000000012
-:10CE20000000000000000000000000000000000002
-:10CE300000000000000000000000000000000000F2
-:10CE400000000000000000000000000000000000E2
-:10CE500000000000000000000000000000000000D2
-:10CE600000000000000000000000000000000000C2
-:10CE700000000000000000000000000000000000B2
-:10CE800000000000000000000000000000000000A2
-:10CE90000000000000000000000000000000000092
-:10CEA0000000000000000000000000000000000082
-:10CEB0000000000000000000000000000000000072
-:10CEC0000000000000000000000000000000000062
-:10CED0000000000000000000000000000000000052
-:10CEE0000000000000000000000000000000000042
-:10CEF0000000000000000000000000000000000032
-:10CF00000000000000000000000000000000000021
-:10CF10000000000000000000000000000000000011
-:10CF20000000000000000000000000000000000001
-:10CF300000000000000000000000000000000000F1
-:10CF400000000000000000000000000000000000E1
-:10CF500000000000000000000000000000000000D1
-:10CF600000000000000000000000000000000000C1
-:10CF700000000000000000000000000000000000B1
-:10CF800000000000000000000000000000000000A1
-:10CF90000000000000000000000000000000000091
-:10CFA0000000000000000000000000000000000081
-:10CFB0000000000000000000000000000000000071
-:10CFC0000000000000000000000000000000000061
-:10CFD0000000000000000000000000000000000051
-:10CFE0000000000000000000000000000000000041
-:10CFF0000000000000000000000000000000000031
-:10D000000000000000000000000000000000000020
-:10D010000000000000000000000000000000000010
-:10D020000000000000000000000000000000000000
-:10D0300000000000000000000000000000000000F0
-:10D0400000000000000000000000000000000000E0
-:10D0500000000000000000000000000000000000D0
-:10D0600000000000000000000000000000000000C0
-:10D0700000000000000000000000000000000000B0
-:10D0800000000000000000000000000000000000A0
-:10D090000000000000000000000000000000000090
-:10D0A0000000000000000000000000000000000080
-:10D0B0000000000000000000000000000000000070
-:10D0C0000000000000000000000000000000000060
-:10D0D0000000000000000000000000000000000050
-:10D0E0000000000000000000000000000000000040
-:10D0F0000000000000000000000000000000000030
-:10D10000000000000000000000000000000000001F
-:10D11000000000000000000000000000000000000F
-:10D1200000000000000000000000000000000000FF
-:10D1300000000000000000000000000000000000EF
-:10D1400000000000000000000000000000000000DF
-:10D1500000000000000000000000000000000000CF
-:10D1600000000000000000000000000000000000BF
-:10D1700000000000000000000000000000000000AF
-:10D18000000000000000000000000000000000009F
-:10D19000000000000000000000000000000000008F
-:10D1A000000000000000000000000000000000007F
-:10D1B000000000000000000000000000000000006F
-:10D1C000000000000000000000000000000000005F
-:10D1D000000000000000000000000000000000004F
-:10D1E000000000000000000000000000000000003F
-:10D1F000000000000000000000000000000000002F
-:10D20000000000000000000000000000000000001E
-:10D21000000000000000000000000000000000000E
-:10D2200000000000000000000000000000000000FE
-:10D2300000000000000000000000000000000000EE
-:10D2400000000000000000000000000000000000DE
-:10D2500000000000000000000000000000000000CE
-:10D2600000000000000000000000000000000000BE
-:10D2700000000000000000000000000000000000AE
-:10D28000000000000000000000000000000000009E
-:10D29000000000000000000000000000000000008E
-:10D2A000000000000000000000000000000000007E
-:10D2B000000000000000000000000000000000006E
-:10D2C000000000000000000000000000000000005E
-:10D2D000000000000000000000000000000000004E
-:10D2E000000000000000000000000000000000003E
-:10D2F000000000000000000000000000000000002E
-:10D30000000000000000000000000000000000001D
-:10D31000000000000000000000000000000000000D
-:10D3200000000000000000000000000000000000FD
-:10D3300000000000000000000000000000000000ED
-:10D3400000000000000000000000000000000000DD
-:10D3500000000000000000000000000000000000CD
-:10D3600000000000000000000000000000000000BD
-:10D3700000000000000000000000000000000000AD
-:10D38000000000000000000000000000000000009D
-:10D39000000000000000000000000000000000008D
-:10D3A000000000000000000000000000000000007D
-:10D3B000000000000000000000000000000000006D
-:10D3C000000000000000000000000000000000005D
-:10D3D000000000000000000000000000000000004D
-:10D3E000000000000000000000000000000000003D
-:10D3F000000000000000000000000000000000002D
-:10D40000000000000000000000000000000000001C
-:10D41000000000000000000000000000000000000C
-:10D4200000000000000000000000000000000000FC
-:10D4300000000000000000000000000000000000EC
-:10D4400000000000000000000000000000000000DC
-:10D4500000000000000000000000000000000000CC
-:10D4600000000000000000000000000000000000BC
-:10D4700000000000000000000000000000000000AC
-:10D48000000000000000000000000000000000009C
-:10D49000000000000000000000000000000000008C
-:10D4A000000000000000000000000000000000007C
-:10D4B000000000000000000000000000000000006C
-:10D4C000000000000000000000000000000000005C
-:10D4D000000000000000000000000000000000004C
-:10D4E000000000000000000000000000000000003C
-:10D4F000000000000000000000000000000000002C
-:10D50000000000000000000000000000000000001B
-:10D51000000000000000000000000000000000000B
-:10D5200000000000000000000000000000000000FB
-:10D5300000000000000000000000000000000000EB
-:10D5400000000000000000000000000000000000DB
-:10D5500000000000000000000000000000000000CB
-:10D5600000000000000000000000000000000000BB
-:10D5700000000000000000000000000000000000AB
-:10D58000000000000000000000000000000000009B
-:10D59000000000000000000000000000000000008B
-:10D5A000000000000000000000000000000000007B
-:10D5B000000000000000000000000000000000006B
-:10D5C000000000000000000000000000000000005B
-:10D5D000000000000000000000000000000000004B
-:10D5E000000000000000000000000000000000003B
-:10D5F000000000000000000000000000000000002B
-:10D60000000000000000000000000000000000001A
-:10D61000000000000000000000000000000000000A
-:10D6200000000000000000000000000000000000FA
-:10D6300000000000000000000000000000000000EA
-:10D6400000000000000000000000000000000000DA
-:10D6500000000000000000000000000000000000CA
-:10D6600000000000000000000000000000000000BA
-:10D6700000000000000000000000000000000000AA
-:10D68000000000000000000000000000000000009A
-:10D69000000000000000000000000000000000008A
-:10D6A000000000000000000000000000000000007A
-:10D6B000000000000000000000000000000000006A
-:10D6C000000000000000000000000000000000005A
-:10D6D000000000000000000000000000000000004A
-:10D6E000000000000000000000000000000000003A
-:10D6F000000000000000000000000000000000002A
-:10D700000000000000000000000000000000000019
-:10D710000000000000000000000000000000000009
-:10D7200000000000000000000000000000000000F9
-:10D7300000000000000000000000000000000000E9
-:10D7400000000000000000000000000000000000D9
-:10D7500000000000000000000000000000000000C9
-:10D7600000000000000000000000000000000000B9
-:10D7700000000000000000000000000000000000A9
-:10D780000000000000000000000000000000000099
-:10D790000000000000000000000000000000000089
-:10D7A0000000000000000000000000000000000079
-:10D7B0000000000000000000000000000000000069
-:10D7C0000000000000000000000000000000000059
-:10D7D0000000000000000000000000000000000049
-:10D7E0000000000000000000000000000000000039
-:10D7F0000000000000000000000000000000000029
-:10D800000000000000000000000000000000000018
-:10D810000000000000000000000000000000000008
-:10D8200000000000000000000000000000000000F8
-:10D8300000000000000000000000000000000000E8
-:10D8400000000000000000000000000000000000D8
-:10D8500000000000000000000000000000000000C8
-:10D8600000000000000000000000000000000000B8
-:10D8700000000000000000000000000000000000A8
-:10D880000000000000000000000000000000000098
-:10D890000000000000000000000000000000000088
-:10D8A0000000000000000000000000000000000078
-:10D8B0000000000000000000000000000000000068
-:10D8C0000000000000000000000000000000000058
-:10D8D0000000000000000000000000000000000048
-:10D8E0000000000000000000000000000000000038
-:10D8F0000000000000000000000000000000000028
-:10D900000000000000000000000000000000000017
-:10D910000000000000000000000000000000000007
-:10D9200000000000000000000000000000000000F7
-:10D9300000000000000000000000000000000000E7
-:10D9400000000000000000000000000000000000D7
-:10D9500000000000000000000000000000000000C7
-:10D9600000000000000000000000000000000000B7
-:10D9700000000000000000000000000000000000A7
-:10D980000000000000000000000000000000000097
-:10D990000000000000000000000000000000000087
-:10D9A0000000000000000000000000000000000077
-:10D9B0000000000000000000000000000000000067
-:10D9C0000000000000000000000000000000000057
-:10D9D0000000000000000000000000000000000047
-:10D9E0000000000000000000000000000000000037
-:10D9F0000000000000000000000000000000000027
-:10DA00000000000000000000000000000000000016
-:10DA10000000000000000000000000000000000006
-:10DA200000000000000000000000000000000000F6
-:10DA300000000000000000000000000000000000E6
-:10DA400000000000000000000000000000000000D6
-:10DA500000000000000000000000000000000000C6
-:10DA600000000000000000000000000000000000B6
-:10DA700000000000000000000000000000000000A6
-:10DA80000000000000000000000000000000000096
-:10DA90000000000000000000000000000000000086
-:10DAA0000000000000000000000000000000000076
-:10DAB0000000000000000000000000000000000066
-:10DAC0000000000000000000000000000000000056
-:10DAD0000000000000000000000000000000000046
-:10DAE0000000000000000000000000000000000036
-:10DAF0000000000000000000000000000000000026
-:10DB00000000000000000000000000000000000015
-:10DB10000000000000000000000000000000000005
-:10DB200000000000000000000000000000000000F5
-:10DB300000000000000000000000000000000000E5
-:10DB400000000000000000000000000000000000D5
-:10DB500000000000000000000000000000000000C5
-:10DB600000000000000000000000000000000000B5
-:10DB700000000000000000000000000000000000A5
-:10DB80000000000000000000000000000000000095
-:10DB90000000000000000000000000000000000085
-:10DBA0000000000000000000000000000000000075
-:10DBB0000000000000000000000000000000000065
-:10DBC0000000000000000000000000000000000055
-:10DBD0000000000000000000000000000000000045
-:10DBE0000000000000000000000000000000000035
-:10DBF0000000000000000000000000000000000025
-:10DC00000000000000000000000000000000000014
-:10DC10000000000000000000000000000000000004
-:10DC200000000000000000000000000000000000F4
-:10DC300000000000000000000000000000000000E4
-:10DC400000000000000000000000000000000000D4
-:10DC500000000000000000000000000000000000C4
-:10DC600000000000000000000000000000000000B4
-:10DC700000000000000000000000000000000000A4
-:10DC80000000000000000000000000000000000094
-:10DC90000000000000000000000000000000000084
-:10DCA0000000000000000000000000000000000074
-:10DCB0000000000000000000000000000000000064
-:10DCC0000000000000000000000000000000000054
-:10DCD0000000000000000000000000000000000044
-:10DCE0000000000000000000000000000000000034
-:10DCF0000000000000000000000000000000000024
-:10DD00000000000000000000000000000000000013
-:10DD10000000000000000000000000000000000003
-:10DD200000000000000000000000000000000000F3
-:10DD300000000000000000000000000000000000E3
-:10DD400000000000000000000000000000000000D3
-:10DD500000000000000000000000000000000000C3
-:10DD600000000000000000000000000000000000B3
-:10DD700000000000000000000000000000000000A3
-:10DD80000000000000000000000000000000000093
-:10DD90000000000000000000000000000000000083
-:10DDA0000000000000000000000000000000000073
-:10DDB0000000000000000000000000000000000063
-:10DDC0000000000000000000000000000000000053
-:10DDD0000000000000000000000000000000000043
-:10DDE0000000000000000000000000000000000033
-:10DDF0000000000000000000000000000000000023
-:10DE00000000000000000000000000000000000012
-:10DE10000000000000000000000000000000000002
-:10DE200000000000000000000000000000000000F2
-:10DE300000000000000000000000000000000000E2
-:10DE400000000000000000000000000000000000D2
-:10DE500000000000000000000000000000000000C2
-:10DE600000000000000000000000000000000000B2
-:10DE700000000000000000000000000000000000A2
-:10DE80000000000000000000000000000000000092
-:10DE90000000000000000000000000000000000082
-:10DEA0000000000000000000000000000000000072
-:10DEB0000000000000000000000000000000000062
-:10DEC0000000000000000000000000000000000052
-:10DED0000000000000000000000000000000000042
-:10DEE0000000000000000000000000000000000032
-:10DEF0000000000000000000000000000000000022
-:10DF00000000000000000000000000000000000011
-:10DF10000000000000000000000000000000000001
-:10DF200000000000000000000000000000000000F1
-:10DF300000000000000000000000000000000000E1
-:10DF400000000000000000000000000000000000D1
-:10DF500000000000000000000000000000000000C1
-:10DF600000000000000000000000000000000000B1
-:10DF700000000000000000000000000000000000A1
-:10DF80000000000000000000000000000000000091
-:10DF90000000000000000000000000000000000081
-:10DFA0000000000000000000000000000000000071
-:10DFB0000000000000000000000000000000000061
-:10DFC0000000000000000000000000000000000051
-:10DFD0000000000000000000000000000000000041
-:10DFE0000000000000000000000000000000000031
-:10DFF0000000000000000000000000000000000021
-:10E000000000000000000000000000000000000010
-:10E010000000000000000000000000000000000000
-:10E0200000000000000000000000000000000000F0
-:10E0300000000000000000000000000000000000E0
-:10E0400000000000000000000000000000000000D0
-:10E0500000000000000000000000000000000000C0
-:10E0600000000000000000000000000000000000B0
-:10E0700000000000000000000000000000000000A0
-:10E080000000000000000000000000000000000090
-:10E090000000000000000000000000000000000080
-:10E0A0000000000000000000000000000000000070
-:10E0B0000000000000000000000000000000000060
-:10E0C0000000000000000000000000000000000050
-:10E0D0000000000000000000000000000000000040
-:10E0E0000000000000000000000000000000000030
-:10E0F0000000000000000000000000000000000020
-:10E10000000000000000000000000000000000000F
-:10E1100000000000000000000000000000000000FF
-:10E1200000000000000000000000000000000000EF
-:10E1300000000000000000000000000000000000DF
-:10E1400000000000000000000000000000000000CF
-:10E1500000000000000000000000000000000000BF
-:10E1600000000000000000000000000000000000AF
-:10E17000000000000000000000000000000000009F
-:10E18000000000000000000000000000000000008F
-:10E19000000000000000000000000000000000007F
-:10E1A000000000000000000000000000000000006F
-:10E1B000000000000000000000000000000000005F
-:10E1C000000000000000000000000000000000004F
-:10E1D000000000000000000000000000000000003F
-:10E1E000000000000000000000000000000000002F
-:10E1F000000000000000000000000000000000809F
-:10E20000000000000000000000000000000000000E
-:10E2100000000000000000000000000000000000FE
-:10E220000000000A000000000000000000000000E4
-:10E2300010000003000000000000000D0000000DB1
-:10E240003C020801244295A03C030801246397DCAA
-:10E25000AC4000000043202B1480FFFD244200044A
-:10E260003C1D080037BD9FFC03A0F0213C100800B6
-:10E27000261032103C1C0801279C95A00E0012BEEF
-:10E28000000000000000000D3C02800030A5FFFFF0
-:10E2900030C600FF344301803C0880008D0901B87E
-:10E2A0000520FFFE00000000AC6400002404000212
-:10E2B000A4650008A066000AA064000BAC67001803
-:10E2C0003C03100003E00008AD0301B83C0560000A
-:10E2D0008CA24FF80440FFFE00000000ACA44FC029
-:10E2E0003C0310003C040200ACA44FC403E000084F
-:10E2F000ACA34FF89486000C00A050212488001491
-:10E3000000062B0200051080004448210109182B4B
-:10E310001060001100000000910300002C6400094F
-:10E320005080000991190001000360803C0D080134
-:10E3300025AD9234018D58218D67000000E0000862
-:10E340000000000091190001011940210109302B42
-:10E3500054C0FFF29103000003E000080000102108
-:10E360000A000CCC25080001910F0001240E000AC0
-:10E3700015EE00400128C8232F38000A1700003D81
-:10E38000250D00028D580000250F0006370E0100F4
-:10E39000AD4E0000910C000291AB000191A400026F
-:10E3A00091A60003000C2E00000B3C0000A71025D6
-:10E3B00000041A000043C8250326C025AD580004F8
-:10E3C000910E000691ED000191E7000291E5000336
-:10E3D000000E5E00000D6400016C30250007220075
-:10E3E00000C41025004518252508000A0A000CCC99
-:10E3F000AD430008910F000125040002240800022B
-:10E4000055E80001012020210A000CCC00804021A9
-:10E41000910C0001240B0003158B00160000000076
-:10E420008D580000910E000225080003370D0008EA
-:10E43000A14E00100A000CCCAD4D00009119000156
-:10E44000240F0004172F000B0000000091070002AA
-:10E45000910400038D43000000072A0000A410254A
-:10E460003466000425080004AD42000C0A000CCC00
-:10E47000AD46000003E000082402000127BDFFE8CC
-:10E48000AFBF0014AFB000100E00164E0080802108
-:10E490003C0480083485008090A600052403FFFE1C
-:10E4A0000200202100C310248FBF00148FB0001081
-:10E4B000A0A200050A00165827BD001827BDFFE8D6
-:10E4C000AFB00010AFBF00140E000FD40080802149
-:10E4D0003C06800834C5008090A40000240200504F
-:10E4E000308300FF106200073C09800002002021F9
-:10E4F0008FBF00148FB00010AD2001800A00108F74
-:10E5000027BD0018240801003C07800002002021DC
-:10E510008FBF00148FB00010ACE801800A00108F8C
-:10E5200027BD001827BDFF783C058008AFBE0080DE
-:10E53000AFB7007CAFB3006CAFB10064AFBF008475
-:10E54000AFB60078AFB50074AFB40070AFB200687A
-:10E55000AFB0006034A600803C0580008CB201287A
-:10E5600090C400098CA701043C020001309100FF17
-:10E5700000E218240000B8210000F021106000071C
-:10E58000000098213C0908008D2931F02413000176
-:10E59000252800013C010800AC2831F0ACA0008423
-:10E5A00090CC0005000C5827316A0001154000721C
-:10E5B000AFA0005090CD00002406002031A400FF41
-:10E5C00010860018240E0050108E009300000000EA
-:10E5D0003C1008008E1000DC260F00013C010800F2
-:10E5E000AC2F00DC0E0016C7000000000040182110
-:10E5F0008FBF00848FBE00808FB7007C8FB60078FD
-:10E600008FB500748FB400708FB3006C8FB2006848
-:10E610008FB100648FB000600060102103E000083B
-:10E6200027BD00880000000D3C1F8000AFA0003017
-:10E6300097E501168FE201043C04002030B9FFFF8A
-:10E64000004438240007182B00033140AFA60030E7
-:10E650008FF5010437F80C003C1600400338802188
-:10E6600002B6A02434C40040128000479215000D69
-:10E6700032A800201500000234860080008030217E
-:10E6800014C0009FAFA600303C0D800835A6008066
-:10E6900090CC0008318B0040516000063C06800899
-:10E6A000240E0004122E00A8240F0012122F003294
-:10E6B0003C06800834C401003C0280009447011AE3
-:10E6C0009619000E909F00088E18000830E3FFFF97
-:10E6D00003F9B00432B40004AFB6005CAFA3005835
-:10E6E0008E1600041280002EAFB8005434C3008090
-:10E6F000906800083105004014A0002500000000CB
-:10E700008C70005002D090230640000500000000ED
-:10E710008C71003402D1A82306A201678EE20008A2
-:10E72000126000063C1280003C1508008EB531F4E2
-:10E7300026B600013C010800AC3631F4AE4000447E
-:10E74000240300018FBF00848FBE00808FB7007C40
-:10E750008FB600788FB500748FB400708FB3006CE3
-:10E760008FB200688FB100648FB00060006010212C
-:10E7700003E0000827BD00880E000D2800002021BE
-:10E780000A000D75004018210A000D9500C02021D7
-:10E790000E00171702C020211440FFE10000000006
-:10E7A0003C0B8008356400808C8A003402CA482300
-:10E7B0000520001D000000003C1E08008FDE310017
-:10E7C00027D700013C010800AC3731001260000679
-:10E7D000024020213C1408008E9431F42690000160
-:10E7E0003C010800AC3031F40E00164E3C1E80088F
-:10E7F00037CD008091B700250240202136EE00047D
-:10E800000E001658A1AE00250E000CAC02402021CF
-:10E810000A000DCA240300013C17080126F796A040
-:10E820000A000D843C1F80008C86003002C66023E5
-:10E830001980000C2419000C908F004F3C14080024
-:10E840008E94310032B500FC35ED0001268E0001BA
-:10E850003C010800AC2E3100A08D004FAFA0005845
-:10E860002419000CAFB900308C9800300316A02397
-:10E870001A80010B8FA300580074F82A17E0FFD309
-:10E88000000000001074002A8FA5005802D4B021A7
-:10E8900000B410233044FFFFAFA4005832A8000298
-:10E8A0001100002E32AB00103C15800836B00080FD
-:10E8B0009216000832D30040526000FB8EE200083E
-:10E8C0000E00164E02402021240A0018A20A000958
-:10E8D000921100052409FFFE024020210229902404
-:10E8E0000E001658A2120005240400390000282149
-:10E8F0000E0016F2240600180A000DCA24030001B7
-:10E9000092FE000C3C0A800835490080001EBB00C6
-:10E910008D27003836F10081024020213225F08118
-:10E920000E000C9B30C600FF0A000DC10000000065
-:10E930003AA7000130E300011460FFA402D4B02123
-:10E940000A000E1D00000000024020210E001734B6
-:10E95000020028210A000D75004018211160FF7087
-:10E960003C0F80083C0D800835EE00808DC40038D7
-:10E970008FA300548DA60004006660231D80FF68ED
-:10E98000000000000064C02307020001AFA400548F
-:10E990003C1F08008FFF31E433F9000113200015FC
-:10E9A0008FAC00583C07800094E3011A10600012FD
-:10E9B0003C0680080E002161024020213C03080132
-:10E9C000906396D13064000214800145000000007D
-:10E9D000306C0004118000078FAC0058306600FBDB
-:10E9E0003C010801A02696D132B500FCAFA000582A
-:10E9F0008FAC00583C06800834D30080AFB40018B8
-:10EA0000AFB60010AFAC00143C088000950B01209D
-:10EA10008E6F0030966A005C8FA3005C8FBF003061
-:10EA20003169FFFF3144FFFF8FAE005401341021E4
-:10EA3000350540000064382B0045C82103E7C02598
-:10EA4000AFB90020AFAF0028AFB80030AFAF00249F
-:10EA5000AFA0002CAFAE0034926D000831B40008B6
-:10EA6000168000BB020020218EE200040040F8095D
-:10EA700027A400108FAF003031F300025660000170
-:10EA800032B500FE3C048008349F008093F90008F2
-:10EA900033380040530000138FA400248C850004F9
-:10EAA0008FA7005410A700D52404001432B0000131
-:10EAB0001200000C8FA400242414000C1234011A3C
-:10EAC0002A2D000D11A001022413000E240E000AAD
-:10EAD000522E0001241E00088FAF002425E40001FF
-:10EAE000AFA400248FAA00143C0B80083565008079
-:10EAF000008A48218CB10030ACA9003090A4004EAF
-:10EB00008CA700303408FFFF0088180400E3F821C8
-:10EB1000ACBF00348FA600308FB900548FB8005CB2
-:10EB200030C200081040000B033898218CAC002044
-:10EB3000119300D330C600FF92EE000C8FA7003473
-:10EB400002402021000E6B0035B400800E000C9BAB
-:10EB50003285F0803C028008345000808E0F0030F7
-:10EB600001F1302318C00097264800803C070800B8
-:10EB70008CE731E42404FF80010418243118007F5D
-:10EB80003C1F80003C19800430F10001AFE300908D
-:10EB900012200006031928213C030801906396D136
-:10EBA00030690008152000C6306A00F73C10800864
-:10EBB00036040080908C004F318B000115600042BC
-:10EBC000000000003C0608008CC6319830CE0010D2
-:10EBD00051C0004230F9000190AF006B55E0003F9A
-:10EBE00030F9000124180001A0B8006B3C1180002E
-:10EBF0009622007A24470064A48700123C0D800806
-:10EC000035A5008090B40008329000401600000442
-:10EC10003C03800832AE000115C0008B00000000EC
-:10EC2000346400808C86002010D3000A3463010015
-:10EC30008C67000002C7782319E000978FBF00544B
-:10EC4000AC93002024130001AC760000AFB3005059
-:10EC5000AC7F000417C0004E000000008FA90050D8
-:10EC60001520000B000000003C030801906396D1C2
-:10EC7000306A00011140002E8FAB0058306400FE56
-:10EC80003C010801A02496D10A000D75000018214E
-:10EC90000E000CAC024020210A000F1300000000FF
-:10ECA0000A000E200000A0210040F80924040017EB
-:10ECB0000A000DCA240300010040F80924040016CC
-:10ECC0000A000DCA240300019094004F240DFFFE9A
-:10ECD000028D2824A085004F30F900011320000682
-:10ECE0003C0480083C030801906396D1307F0010FB
-:10ECF00017E00051306800EF34900080240A0001D2
-:10ED0000024020210E00164EA60A00129203002592
-:10ED100024090001AFA90050346200010240202103
-:10ED20000E001658A20200250A000EF93C0D8008BC
-:10ED30001160FE83000018218FA5003030AC000464
-:10ED40001180FE2C8FBF00840A000DCB240300012C
-:10ED500027A500380E000CB6AFA000385440FF4382
-:10ED60008EE200048FB40038329001005200FF3F61
-:10ED70008EE200048FA3003C8E6E0058006E682364
-:10ED800005A3FF39AE6300580A000E948EE200041A
-:10ED90000E00164E024020213C038008346800809B
-:10EDA000024020210E001658A11E000903C0302188
-:10EDB000240400370E0016F2000028210A000F116B
-:10EDC0008FA900508FAB00185960FF8D3C0D800853
-:10EDD0000E00164E02402021920C00252405000151
-:10EDE000AFA5005035820004024020210E001658C5
-:10EDF000A20200250A000EF93C0D800812240059D9
-:10EE00002A2300151060004D240900162408000C68
-:10EE10005628FF2732B000013C0A8008914C001BA5
-:10EE20002406FFBD241E000E01865824A14B001BA2
-:10EE30000A000EA532B000013C010801A02896D1BD
-:10EE40000A000EF93C0D80088CB500308EFE0008DB
-:10EE50002404001826B6000103C0F809ACB600303F
-:10EE60003C030801906396D13077000116E0FF81E2
-:10EE7000306A00018FB200300A000D753243000481
-:10EE80003C1080009605011A50A0FF2B34C60010DC
-:10EE90000A000EC892EE000C8C6200001456FF6D42
-:10EEA000000000008C7800048FB9005403388823D8
-:10EEB0000621FF638FBF00540A000F0E0000000000
-:10EEC0003C010801A02A96D10A000F3030F9000158
-:10EED0001633FF028FAF00240A000EB0241E00106C
-:10EEE0000E00164E024020213C0B80083568008041
-:10EEF00091090025240A0001AFAA0050353300040F
-:10EF0000024020210E001658A11300253C050801DF
-:10EF100090A596D130A200FD3C010801A02296D117
-:10EF20000A000E6D004018212411000E53D1FEEA94
-:10EF3000241E00100A000EAF241E00165629FEDC07
-:10EF400032B000013C0A8008914C001B2406FFBD32
-:10EF5000241E001001865824A14B001B0A000EA598
-:10EF600032B000010A000EA4241E00123C038000EF
-:10EF70008C6201B80440FFFE24040800AC6401B8B0
-:10EF800003E000080000000030A5FFFF30C6FFFFCF
-:10EF90003C0780008CE201B80440FFFE34EA0180A7
-:10EFA000AD440000ACE400203C0480089483004899
-:10EFB0003068FFFF11000016AF88000824AB001274
-:10EFC000010B482B512000133C04800034EF01005A
-:10EFD00095EE00208F890000240D001A31CCFFFF30
-:10EFE00031274000A14D000B10E000362583FFFEC5
-:10EFF0000103C02B170000348F9900048F88000490
-:10F00000A5430014350700010A001003AF87000470
-:10F010003C04800024030003348201808F890000B7
-:10F020008F870004A043000B3C088000350C018052
-:10F03000A585000EA585001A8F85000C30EB800099
-:10F04000A5890010AD850028A58600081160000F75
-:10F050008F85001435190100972A00163158FFFCDE
-:10F06000270F000401E870218DCD400031A6FFFF7D
-:10F0700014C000072403BFFF3C02FFFF34487FFF9A
-:10F0800000E83824AF8700048F8500142403BFFFF5
-:10F090003C04800000E3582434830180A46B0026E4
-:10F0A000AC69002C10A0000300054C02A465001000
-:10F0B000A46900263C071000AC8701B803E00008F3
-:10F0C000000000008F990004240AFFFE032A382460
-:10F0D0000A001003AF87000427BDFFE88FA20028B5
-:10F0E00030A5FFFF30C6FFFFAFBF0010AF87000C99
-:10F0F000AF820014AF8000040E000FDBAF80000071
-:10F100008FBF001027BD001803E00008AF80001477
-:10F110003C06800034C4007034C701008C8A0000B3
-:10F1200090E500128F84000027BDFFF030A300FFA0
-:10F13000000318823082400010400037246500032D
-:10F140000005C8800326C0218F0E4000246F0004F4
-:10F15000000F6880AFAE000001A660218D8B4000DB
-:10F16000AFAB000494E900163128FFFC01063821FA
-:10F170008CE64000AFA600088FA9000800003021EF
-:10F18000000028213C07080024E701000A0010675E
-:10F19000240800089059000024A500012CAC000CA4
-:10F1A0000079C0210018788001E770218DCD000022
-:10F1B0001180000600CD302603A5102114A8FFF50C
-:10F1C00000051A005520FFF4905900003C0480000F
-:10F1D000348700703C0508008CA531048CE30000E6
-:10F1E0002CA2002010400009006A38230005488046
-:10F1F0003C0B0800256B3108012B402124AA00019B
-:10F20000AD0700003C010800AC2A310400C0102109
-:10F2100003E0000827BD0010308220001040000BE2
-:10F2200000055880016648218D24400024680004B0
-:10F2300000083880AFA4000000E618218C6540006B
-:10F24000AFA000080A001057AFA500040000000D91
-:10F250000A0010588FA9000827BDFFE03C07800076
-:10F2600034E60100AFBF001CAFB20018AFB100140C
-:10F27000AFB0001094C5000E8F87000030A4FFFFD0
-:10F280002483000430E2400010400010AF830028C7
-:10F290003C09002000E940241100000D30EC800002
-:10F2A0008F8A0004240BBFFF00EB38243543100085
-:10F2B000AF87000030F220001640000B3C1900041C
-:10F2C000241FFFBF0A0010B7007F102430EC80001D
-:10F2D000158000423C0E002030F220001240FFF862
-:10F2E0008F8300043C19000400F9C0241300FFF5CB
-:10F2F000241FFFBF34620040AF82000430E20100EF
-:10F300001040001130F010008F83002C10600006B8
-:10F310003C0F80003C05002000E52024148000C044
-:10F320003C0800043C0F800035EE010095CD001E26
-:10F3300095CC001C31AAFFFF000C5C00014B482556
-:10F34000AF89000C30F010001200000824110001F9
-:10F3500030F100201620008B3C18100000F890249B
-:10F36000164000823C040C002411000130E801002A
-:10F370001500000B3C0900018F85000430A94000F6
-:10F38000152000073C0900013C0C1F0100EC58242B
-:10F390003C0A1000116A01183C1080003C09000171
-:10F3A00000E9302410C000173C0B10003C18080086
-:10F3B0008F1800243307000214E0014024030001E9
-:10F3C0008FBF001C8FB200188FB100148FB00010D7
-:10F3D0000060102103E0000827BD002000EE682433
-:10F3E00011A0FFBE30F220008F8F00043C11FFFF00
-:10F3F00036307FFF00F0382435E380000A0010A685
-:10F40000AF87000000EB102450400065AF8000245F
-:10F410008F8C002C3C0D0F0000ED18241580008807
-:10F42000AF83001030E8010011000086938F0010B8
-:10F430003C0A0200106A00833C1280003650010032
-:10F44000920500139789002A3626000230AF00FF8C
-:10F4500025EE0004000E19C03C0480008C9801B811
-:10F460000700FFFE34880180AD0300003C198008CE
-:10F47000AC830020973100483225FFFF10A0015CCB
-:10F48000AF8500082523001200A3F82B53E0015993
-:10F490008F850004348D010095AC00202402001AF1
-:10F4A00030E44000318BFFFFA102000B108001927D
-:10F4B0002563FFFE00A3502B154001908F8F0004A1
-:10F4C000A50300148F88000435050001AF850004F2
-:10F4D0003C08800035190180A729000EA729001AD1
-:10F4E0008F89000C30B18000A7270010AF290028B9
-:10F4F000A72600081220000E3C04800035020100FF
-:10F50000944C0016318BFFFC256400040088182100
-:10F510008C7F400033E6FFFF14C000053C048000F0
-:10F520003C0AFFFF354D7FFF00AD2824AF85000466
-:10F53000240EBFFF00AE402434850180A4A800261D
-:10F54000ACA7002C3C071000AC8701B800001821C4
-:10F550008FBF001C8FB200188FB100148FB0001045
-:10F560000060102103E0000827BD00203C020BFFD3
-:10F5700000E41824345FFFFF03E3C82B5320FF7B14
-:10F58000241100013C0608008CC6002C24C5000193
-:10F590003C010800AC25002C0A0010D42411000501
-:10F5A0008F85002410A0002FAF80001090A30000D2
-:10F5B000146000792419000310A0002A30E601002D
-:10F5C00010C000CC8F860010241F000210DF00C97D
-:10F5D0008F8B000C3C0708008CE7003824E4FFFF09
-:10F5E00014E0000201641824000018213C0D0800FA
-:10F5F00025AD0038006D1021904C00048F85002847
-:10F6000025830004000321C030A5FFFF3626000239
-:10F610000E000FDB000000000A00114D0000182151
-:10F6200000E8302414C0FF403C0F80000E00103D65
-:10F63000000000008F8700000A0010CAAF82000C93
-:10F64000938F00103C18080127189620000F90C0D7
-:10F6500002588021AF9000248F85002414A0FFD38E
-:10F66000AF8F00103C0480008C86400030C5010044
-:10F6700010A000BC322300043C0C08008D8C002438
-:10F6800024120004106000C23190000D3C04800080
-:10F690008C8D40003402FFFF11A201003231FFFBCC
-:10F6A0008C884000310A01005540000124110010EF
-:10F6B00030EE080011C000BE2419FFFB8F9800280F
-:10F6C0002F0F03EF51E000010219802430E90100FF
-:10F6D00011200014320800018F87002C14E000FB79
-:10F6E0008F8C000C3C05800034AB0100917F00132F
-:10F6F00033E300FF246A00042403FFFE0203802496
-:10F70000000A21C012000002023230253226FFFF1B
-:10F710000E000FDB9785002A1200FF290000182138
-:10F72000320800011100000D32180004240E0001FF
-:10F73000120E0002023230253226FFFF9785002A82
-:10F740000E000FDB00002021240FFFFE020F80249B
-:10F750001200FF1B00001821321800045300FF188C
-:10F760002403000102323025241200045612000145
-:10F770003226FFFF9785002A0E000FDB24040100CC
-:10F780002419FFFB021988241220FF0D0000182104
-:10F790000A0010E9240300011079009C00003021C8
-:10F7A00090AD00012402000211A200BE30EA004028
-:10F7B00090B90001241800011338007F30E900409F
-:10F7C0008CA600049785002A00C020210E000FDBC4
-:10F7D0003626000200004021010018218FBF001CC6
-:10F7E0008FB200188FB100148FB00010006010218C
-:10F7F00003E0000827BD0020360F010095EE000C45
-:10F8000031CD020015A0FEE63C0900013C1880083D
-:10F81000971200489789002A362600023248FFFFD7
-:10F82000AF8800083C0380008C7101B80620FFFE01
-:10F83000346A0180AD4000001100008E3C0F800052
-:10F84000253F0012011FC82B1320008B240E00033C
-:10F85000346C0100958B00202402001A30E4400033
-:10F860003163FFFFA142000B108000A72463FFFE5D
-:10F870000103682B15A000A52408FFFE34A5000194
-:10F88000A5430014AF8500043C0480002412BFFF90
-:10F8900000B2802434850180A4A9000EA4A9001A16
-:10F8A000A4A60008A4B00026A4A700103C071000DE
-:10F8B000AC8701B80A00114D000018213C038000FC
-:10F8C00034640100949F000E3C1908008F3900D861
-:10F8D0002404008033E5FFFF273100013C010800CC
-:10F8E000AC3100D80E000FDB240600030A00114DD6
-:10F8F00000001821240A000210CA00598F85002830
-:10F900003C0308008C6300D0240E0001106E005EE2
-:10F910002CCF000C24D2FFFC2E5000041600002136
-:10F9200000002021241800021078001B2CD9000CA4
-:10F9300024DFFFF82FE900041520FF330000202109
-:10F9400030EB020051600004000621C054C00022C8
-:10F9500030A5FFFF000621C030A5FFFF0A00117D82
-:10F96000362600023C0908008D29002431300001B0
-:10F970005200FEF7000018219785002A3626000263
-:10F980000E000FDB000020210A00114D000018219D
-:10F990000A00119C241200021320FFE624DFFFF866
-:10F9A0000000202130A5FFFF0A00117D362600024D
-:10F9B0000A0011AC021980245120FF828CA6000499
-:10F9C0003C05080190A5962110A0FF7E24080001A7
-:10F9D0000A0011F0010018210E000FDB3226000191
-:10F9E0008F8600108F8500280A00124F000621C064
-:10F9F0008F8500043C18800024120003371001801A
-:10FA0000A212000B0A00112E3C08800090A30001F6
-:10FA1000241100011071FF70240800012409000264
-:10FA20005069000430E60040240800010A0011F08B
-:10FA30000100182150C0FFFD240800013C0C80008B
-:10FA4000358B01009563001094A40002307FFFFF06
-:10FA5000509FFF62010018210A001284240800014F
-:10FA60002CA803EF1100FE56240300010A001239EE
-:10FA700000000000240E000335EA0180A14E000BB7
-:10FA80000A00121C3C04800011E0FFA2000621C005
-:10FA900030A5FFFF0A00117D362600020A0011A5DD
-:10FAA000241100201140FFC63C1280003650010096
-:10FAB000960F001094AE000231E80FFF15C8FFC08A
-:10FAC000000000000A0011E690B900013C060800A1
-:10FAD0008CC6003824C4FFFF14C00002018418241F
-:10FAE000000018213C0D080025AD0038006D1021E4
-:10FAF0000A0011B6904300048F8F0004240EFFFE0D
-:10FB00000A00112C01EE28242408FFFE0A00121A14
-:10FB100000A8282427BDFFC8AFB00010AFBF003435
-:10FB20003C10600CAFBE0030AFB7002CAFB6002861
-:10FB3000AFB50024AFB40020AFB3001CAFB20018C3
-:10FB4000AFB100148E0E5000240FFF7F3C068000E2
-:10FB500001CF682435AC380C240B0003AE0C5000E8
-:10FB6000ACCB00083C010800AC2000200E001819A6
-:10FB7000000000003C0A0010354980513C06601628
-:10FB8000AE09537C8CC700003C0860148D0500A0B2
-:10FB90003C03FFFF00E320243C02535300051FC237
-:10FBA0001482000634C57C000003A08002869821E0
-:10FBB0008E7200043C116000025128218CBF007C31
-:10FBC0008CA200783C1E600037C420203C05080150
-:10FBD00024A59264AF820018AF9F001C0E0016DDB2
-:10FBE0002406000A3C190001273996203C01080030
-:10FBF000AC3931DC0E0020D4AF8000148FD7080858
-:10FC00002418FFF03C15570902F8B02412D502F56C
-:10FC100024040001AF80002C3C1480003697018042
-:10FC20003C1E080127DE9624369301008E900000CA
-:10FC30003205000310A0FFFD3207000110E000882C
-:10FC4000320600028E7100283C048000AE91002034
-:10FC50008E6500048E66000000A0382100C040219F
-:10FC60008C8301B80460FFFE3C0B0010240A0800DE
-:10FC700000AB4824AC8A01B8552000E0240BBFFF3C
-:10FC80009675000E3C1208008E52002030AC4000E9
-:10FC900032AFFFFF264E000125ED00043C010800B5
-:10FCA000AC2E0020118000E8AF8D00283C18002009
-:10FCB00000B8B02412C000E530B980002408BFFFAE
-:10FCC00000A8382434C81000AF87000030E62000B8
-:10FCD00010C000E92409FFBF3C03000400E328240E
-:10FCE00010A00002010910243502004030EA010092
-:10FCF00011400010AF8200048F8B002C11600007B0
-:10FD00003C0D002000ED6024118000043C0F000435
-:10FD100000EF702411C00239000000009668001E38
-:10FD20009678001C3115FFFF0018B40002B690252C
-:10FD3000AF92000C30F910001320001324150001BD
-:10FD400030FF002017E0000A3C04100000E41024FB
-:10FD50001040000D3C0A0C003C090BFF00EA18247F
-:10FD60003525FFFF00A3302B10C0000830ED010047
-:10FD70003C0C08008D8C002C24150005258B0001FF
-:10FD80003C010800AC2B002C30ED010015A0000B4D
-:10FD90003C0500018F85000430AE400055C00007CF
-:10FDA0003C0500013C161F0100F690243C0F10009A
-:10FDB000124F01CE000000003C05000100E5302498
-:10FDC00010C000AF3C0C10003C1F08008FFF002447
-:10FDD00033E90002152000712403000100601021A6
-:10FDE000104000083C0680003C08800035180100E7
-:10FDF0008F0F00243C056020ACAF00140000000011
-:10FE00003C0680003C194000ACD9013800000000DD
-:10FE10005220001332060002262B0140262C0080BF
-:10FE2000240EFF80016E2024018E6824000D1940ED
-:10FE3000318A007F0004A9403172007F3C16200007
-:10FE400036C20002006A482502B2382500E2882541
-:10FE50000122F825ACDF0830ACD1083032060002B0
-:10FE600010C0FF723C188000370501408CA80000CC
-:10FE700024100040AF08002090AF000831E300706C
-:10FE8000107000D428790041532000082405006038
-:10FE9000241100201071000E3C0A40003C09800033
-:10FEA000AD2A01780A001304000000001465FFFB6E
-:10FEB0003C0A40000E001FF1000000003C0A400018
-:10FEC0003C098000AD2A01780A00130400000000FC
-:10FED00090A90009241F00048CA70000312800FF0E
-:10FEE000111F01B22503FFFA2C7200061240001404
-:10FEF0003C0680008CA9000494A4000A310500FF90
-:10FF000000095E022D6A00083086FFFF15400002DE
-:10FF10002567000424070003240C000910AC01FA33
-:10FF200028AD000A11A001DE2410000A240E0008EA
-:10FF300010AE0028000731C000C038213C06800008
-:10FF40008CD501B806A0FFFE34D20180AE47000078
-:10FF500034CB0140916E0008240300023C0A4000AB
-:10FF600031C400FF00046A0001A86025A64C000807
-:10FF7000A243000B9562000A3C0810003C09800077
-:10FF8000A64200108D670004AE470024ACC801B83B
-:10FF9000AD2A01780A001304000000003C0A80002A
-:10FFA000354401009483000E3C0208008C4200D8C6
-:10FFB000240400803065FFFF245500013C01080047
-:10FFC000AC3500D80E000FDB240600030A001370C6
-:10FFD000000018210009320230D900FF2418000166
-:10FFE0001738FFD5000731C08F910020262200016D
-:10FFF000AF8200200A0013C800C0382100CB2024A3
-:020000040001F9
-:10000000AF85000010800008AF860004240D87FF34
-:1000100000CD6024158000083C0E006000AE302446
-:1000200010C00005000000000E000D42000000009E
-:100030000A001371000000000E0016050000000009
-:100040000A0013710000000030B980005320FF1F28
-:10005000AF8500003C02002000A2F82453E0FF1B03
-:10006000AF8500003C07FFFF34E47FFF00A4382485
-:100070000A00132B34C880000A001334010910242D
-:1000800000EC58245160005AAF8000248F8D002C62
-:100090003C0E0F0000EE182415A00075AF83001071
-:1000A00030EF010011E00073939800103C12020041
-:1000B000107200703C06800034D9010093280013B0
-:1000C0009789002A36A60002311800FF271600047F
-:1000D000001619C03C0480008C8501B804A0FFFE06
-:1000E00034880180AD0300003C158008AC830020FB
-:1000F00096BF004833E5FFFF10A001BCAF850008A4
-:100100002523001200A3102B504001B98F85000455
-:10011000348D010095AC0020240B001A30E440001F
-:10012000318AFFFFA10B000B108001BA2543FFFEAF
-:1001300000A3702B15C001B88F9600048F8F0004A8
-:10014000A503001435E50001AF8500043C088000DC
-:1001500035150180A6A9000EA6A9001A8F89000CEA
-:1001600030BF8000A6A70010AEA90028A6A60008F0
-:1001700013E0000F3C0F8000350C0100958B00163A
-:10018000316AFFFC25440004008818218C6240007D
-:100190003046FFFF14C000072416BFFF3C0EFFFFD0
-:1001A00035CD7FFF00AD2824AF8500043C0F8000D3
-:1001B0002416BFFF00B6902435E50180A4B20026C6
-:1001C000ACA7002C3C071000ADE701B80A00137083
-:1001D000000018210E00165D000000003C0A4000DF
-:1001E0003C098000AD2A01780A00130400000000D9
-:1001F0008F85002410A00027AF80001090A300007E
-:10020000106000742409000310690101000030210E
-:1002100090AE0001240D000211CD014230EF0040EC
-:1002200090A90001241F0001113F000930E20040A5
-:100230008CA600049785002A00C020210E000FDB49
-:1002400036A60002000040210A00137001001821A8
-:100250005040FFF88CA600043C07080190E7962167
-:1002600010E0FFF4240800010A00137001001821B7
-:10027000939800103C1F080127FF96200018C8C063
-:10028000033F4021AF8800248F85002414A0FFDBAA
-:10029000AF9800103C0480008C86400030C50100FF
-:1002A00010A0008732AB00043C0C08008D8C0024A9
-:1002B00024160004156000033192000D241600027C
-:1002C0003C0480008C8E4000340DFFFF11CD0113E3
-:1002D00032B5FFFB8C984000330F010055E0000160
-:1002E0002415001030E80800110000382409FFFB35
-:1002F0008F9F00282FF903EF53200001024990241B
-:1003000030E2010010400014325F00018F87002CA2
-:1003100014E0010E8F8C000C3C0480003486010038
-:1003200090C5001330AA00FF25430004000321C03C
-:100330002419FFFE025990241240000202B6302513
-:1003400032A6FFFF0E000FDB9785002A1240FEA3A6
-:1003500000001821325F000113E0000D3247000455
-:10036000240900011249000202B6302532A6FFFF1F
-:100370009785002A0E000FDB000020212402FFFEDB
-:10038000024290241240FE950000182132470004DA
-:1003900050E0FE922403000102B63025241600042A
-:1003A0005656000132A6FFFF9785002A0E000FDB8C
-:1003B000240401002403FFFB0243A82412A0FE87AB
-:1003C000000018210A001370240300010A0014B968
-:1003D0000249902410A0FFAF30E5010010A00017E3
-:1003E0008F8600102403000210C300148F84000CB9
-:1003F0003C0608008CC6003824CAFFFF14C0000267
-:10040000008A1024000010213C0E080025CE003880
-:10041000004E682191AC00048F850028258B0004D4
-:10042000000B21C030A5FFFF36A600020E000FDB37
-:10043000000000000A00137000001821240F0002C1
-:1004400010CF0088241600013C0308008C6300D004
-:100450001076008D8F85002824D9FFFC2F280004FA
-:100460001500006300002021241F0002107F005DA2
-:100470002CC9000C24C3FFF82C6200041440FFE9CF
-:100480000000202130EA020051400004000621C093
-:1004900054C0000530A5FFFF000621C030A5FFFFB6
-:1004A0000A00150436A600020E000FDB32A600017A
-:1004B0008F8600108F8500280A001520000621C0B5
-:1004C0003C0A08008D4A0024315200015240FE438C
-:1004D000000018219785002A36A600020E000FDBC7
-:1004E000000020210A001370000018219668000CFB
-:1004F000311802005700FE313C0500013C1F800806
-:1005000097F900489789002A36A600023328FFFF92
-:10051000AF8800083C0380008C7501B806A0FFFE80
-:100520003C04800034820180AC400000110000B621
-:1005300024180003252A0012010A182B106000B2AB
-:1005400000000000966F00203C0E8000240D001A71
-:1005500031ECFFFF35CA018030EB4000A14D000BAC
-:10056000116000B02583FFFE0103902B164000AE02
-:100570002416FFFE34A50001A5430014AF85000436
-:100580002419BFFF00B94024A6E9000EA6E9001A0D
-:10059000A6E60008A6E80026A6E700103C07100023
-:1005A000AE8701B80A001370000018213C048000D7
-:1005B0008C8201B80440FFFE349601802415001C93
-:1005C000AEC70000A2D5000B3C071000AC8701B8F5
-:1005D0003C0A40003C098000AD2A01780A0013045F
-:1005E000000000005120FFA424C3FFF800002021D8
-:1005F00030A5FFFF0A00150436A600020E00103DCC
-:10060000000000008F8700000A001346AF82000C34
-:1006100090A30001241500011075FF0B24080001B0
-:10062000240600021066000430E2004024080001A5
-:100630000A001370010018215040FFFD240800013A
-:100640003C0C8000358B0100956A001094A40002D8
-:100650003143FFFF5083FDE1010018210A00158599
-:10066000240800018F8500282CB203EF1240FDDB27
-:10067000240300013C0308008C6300D02416000111
-:100680001476FF7624D9FFFC2CD8000C1300FF72DF
-:10069000000621C030A5FFFF0A00150436A600029F
-:1006A00010B00037240F000B14AFFE23000731C039
-:1006B000312600FF00065600000A4E0305220047BF
-:1006C00030C6007F0006F8C03C16080126D69620EA
-:1006D00003F68021A2000001A20000003C0F600090
-:1006E0008DF918202405000100C588040011302769
-:1006F0000326C024000731C000C03821ADF81820FF
-:100700000A0013C8A60000028F850020000731C030
-:1007100024A2FFFF0A0013F6AF8200200A0014B2E1
-:100720002415002011E0FECC3C1980003728010080
-:100730009518001094B6000233120FFF16D2FEC6B1
-:10074000000000000A00148290A900013C0B080080
-:100750008D6B0038256DFFFF15600002018D1024A0
-:10076000000010213C080800250800380048C0217E
-:10077000930F000425EE00040A0014C5000E21C0EA
-:1007800000065202241F00FF115FFDEB000731C07D
-:10079000000A20C03C0E080125CE9620008EA8211C
-:1007A000009E602100095C02240D00013C076000EE
-:1007B000A2AD0000AD860000A2AB00018CF21820B3
-:1007C00024030001014310040242B025ACF61820B6
-:1007D00000C038210A0013C8A6A900020A0015AA01
-:1007E000AF8000200A0012FFAF84002C8F85000428
-:1007F0003C1980002408000337380180A308000B4F
-:100800000A00144D3C088000A2F8000B0A00155A9B
-:100810002419BFFF8F9600042412FFFE0A00144B18
-:1008200002D228242416FFFE0A00155800B62824F8
-:100830003C038000346401008C85000030A2003E3F
-:100840001440000800000000AC6000488C870000E5
-:1008500030E607C010C0000500000000AC60004C8E
-:10086000AC60005003E0000824020001AC600054BA
-:10087000AC6000408C880000310438001080FFF923
-:10088000000000002402000103E00008AC60004406
-:100890003C0380008C6201B80440FFFE3467018095
-:1008A000ACE4000024080001ACE00004A4E500086A
-:1008B00024050002A0E8000A34640140A0E5000B12
-:1008C0009483000A14C00008A4E30010ACE00024E4
-:1008D0003C07800034E901803C041000AD20002872
-:1008E00003E00008ACE401B88C8600043C0410006E
-:1008F000ACE600243C07800034E90180AD200028EC
-:1009000003E00008ACE401B83C0680008CC201B8EA
-:100910000440FFFE34C7018024090002ACE400005B
-:10092000ACE40004A4E50008A0E9000A34C50140D5
-:10093000A0E9000B94A8000A3C041000A4E80010F1
-:10094000ACE000248CA30004ACE3002803E0000822
-:10095000ACC401B83C039000346200010082202541
-:100960003C038000AC6400208C65002004A0FFFEE6
-:100970000000000003E00008000000003C028000CE
-:10098000344300010083202503E00008AC4400202C
-:1009900027BDFFE03C098000AFBF0018AFB10014D5
-:1009A000AFB00010352801408D10000091040009FF
-:1009B0009107000891050008308400FF30E600FF31
-:1009C00000061A002C820081008330251040002A86
-:1009D00030A50080000460803C0D080125AD928C9C
-:1009E000018D58218D6A00000140000800000000C0
-:1009F0003C038000346201409445000A14A0001EAC
-:100A00008F91FCBC9227000530E6000414C0001A48
-:100A1000000000000E00164E02002021922A000560
-:100A200002002021354900040E001658A2290005B5
-:100A30009228000531040004148000020000000028
-:100A40000000000D922D0000240B002031AC00FFAF
-:100A5000158B00093C0580008CAE01B805C0FFFE77
-:100A600034B10180AE3000003C0F100024100005AE
-:100A7000A230000BACAF01B80000000D8FBF001812
-:100A80008FB100148FB0001003E0000827BD0020D4
-:100A90000200202100C028218FBF00188FB1001450
-:100AA0008FB00010240600010A00161D27BD00208B
-:100AB0000000000D0200202100C028218FBF001877
-:100AC0008FB100148FB00010000030210A00161DF5
-:100AD00027BD002014A0FFE8000000000200202134
-:100AE0008FBF00188FB100148FB0001000C02821F4
-:100AF0000A00163B27BD00203C0780008CEE01B8A1
-:100B000005C0FFFE34F00180241F0002A21F000B6D
-:100B100034F80140A60600089719000A3C0F10009F
-:100B2000A61900108F110004A6110012ACEF01B835
-:100B30000A0016998FBF001827BDFFE8AFBF00104D
-:100B40000E000FD4000000003C0280008FBF001098
-:100B500000002021AC4001800A00108F27BD001842
-:100B60003084FFFF30A5FFFF108000070000182130
-:100B7000308200011040000200042042006518216C
-:100B80001480FFFB0005284003E0000800601021EE
-:100B900010C00007000000008CA2000024C6FFFF68
-:100BA00024A50004AC82000014C0FFFB24840004D0
-:100BB00003E000080000000010A0000824A3FFFFCD
-:100BC000AC86000000000000000000002402FFFFCF
-:100BD0002463FFFF1462FFFA2484000403E000088A
-:100BE000000000003C03800027BDFFF83462018054
-:100BF000AFA20000308C00FF30AD00FF30CE00FF10
-:100C00003C0B80008D6401B80480FFFE00000000F2
-:100C10008FA900008D6801288FAA00008FA700000F
-:100C20008FA400002405000124020002A085000A10
-:100C30008FA30000359940003C051000A062000B16
-:100C40008FB800008FAC00008FA600008FAF0000AF
-:100C500027BD0008AD280000AD400004AD80002491
-:100C6000ACC00028A4F90008A70D0010A5EE0012E2
-:100C700003E00008AD6501B83C06800827BDFFE829
-:100C800034C50080AFBF001090A7000924020012F5
-:100C900030E300FF1062000B008030218CA8005070
-:100CA00000882023048000088FBF00108CAA003425
-:100CB000240400390000282100CA4823052000052B
-:100CC000240600128FBF00102402000103E0000878
-:100CD00027BD00180E0016F2000000008FBF0010A4
-:100CE0002402000103E0000827BD001827BDFFC84B
-:100CF000AFB20030AFB00028AFBF0034AFB1002CAE
-:100D000000A0802190A5000D30A6001010C000109A
-:100D1000008090213C0280088C4400048E0300086F
-:100D20001064000C30A7000530A6000510C0009329
-:100D3000240400018FBF00348FB200308FB1002C2B
-:100D40008FB000280080102103E0000827BD003884
-:100D500030A7000510E0000F30AB001210C00006F5
-:100D6000240400013C0980088E0800088D25000439
-:100D70005105009C240400388FBF00348FB200302E
-:100D80008FB1002C8FB000280080102103E00008F4
-:100D900027BD0038240A0012156AFFE6240400016A
-:100DA0000200202127A500100E000CB6AFA00010F5
-:100DB0001440007C3C19800837240080909800087B
-:100DC000331100081220000A8FA7001030FF010025
-:100DD00013E000A48FA300148C8600580066102333
-:100DE000044000043C0A8008AC8300588FA7001020
-:100DF0003C0A800835480080910900083124000829
-:100E00001480000224080003000040213C1F8008D9
-:100E100093F1001193F9001237E600808CCC005456
-:100E2000333800FF03087821322D00FF000F708057
-:100E300001AE282100AC582B1160006F00000000AB
-:100E400094CA005C8CC900543144FFFF0125102373
-:100E50000082182B14600068000000008CCB005446
-:100E60000165182330EC00041180006C000830800C
-:100E70008FA8001C0068102B1040006230ED0004A9
-:100E8000006610232C46008010C00002004088211C
-:100E9000241100800E00164E024020213C0D8008D7
-:100EA00035A6008024070001ACC7000C90C80008DC
-:100EB0000011484035A70100310C007FA0CC00088C
-:100EC0008E05000424AB0001ACCB0030A4D1005C43
-:100ED0008CCA003C9602000E01422021ACC40020C6
-:100EE0008CC3003C0069F821ACDF001C8E190004A3
-:100EF000ACF900008E180008ACF800048FB10010A7
-:100F0000322F000855E0004793A60020A0C0004EF5
-:100F100090D8004E2411FFDFA0F8000890CF000801
-:100F200001F17024A0CE00088E0500083C0B80085B
-:100F300035690080AD2500388D6A00148D2200309F
-:100F40002419005001422021AD24003491230000D7
-:100F5000307F00FF13F90036264F01000E001658AF
-:100F60000240202124040038000028210E0016F23F
-:100F70002406000A0A001757240400010E000D2859
-:100F8000000020218FBF00348FB200308FB1002CC1
-:100F90008FB00028004020210080102103E00008CD
-:100FA00027BD00388E0E00083C0F800835F0008009
-:100FB000AE0E005402402021AE0000300E00164E4E
-:100FC00000000000920D00250240202135AC0020D9
-:100FD0000E001658A20C00250E000CAC0240202179
-:100FE000240400382405008D0E0016F22406001299
-:100FF0000A0017572404000194C5005C0A001792E8
-:1010000030A3FFFF2407021811A0FF9E00E6102363
-:101010008FAE001C0A00179A01C610230A0017970A
-:101020002C620218A0E600080A0017C48E0500080A
-:101030002406FF8001E6C0243C118000AE38002861
-:101040008E0D000831E7007F3C0E800C00EE602121
-:10105000AD8D00E08E080008AF8C00380A0017D074
-:10106000AD8800E4AC800058908500082403FFF7A9
-:1010700000A33824A08700080A0017758FA7001066
-:101080003C05080024A560A83C04080024846FF4F3
-:101090003C020800244260B0240300063C01080121
-:1010A000AC2596A03C010801AC2496A43C010801A3
-:1010B000AC2296A83C010801A02396AC03E00008EE
-:1010C0000000000003E00008240200013C02800050
-:1010D000308800FF344701803C0680008CC301B893
-:1010E0000460FFFE000000008CC501282418FF806A
-:1010F0003C0D800A24AF010001F8702431EC007F20
-:10110000ACCE0024018D2021ACE50000948B00EAD8
-:101110003509600024080002316AFFFFACEA0004D0
-:1011200024020001A4E90008A0E8000BACE00024C0
-:101130003C071000ACC701B8AF84003803E00008DA
-:10114000AF85006C938800488F8900608F820038DB
-:1011500030C600FF0109382330E900FF01221821C1
-:1011600030A500FF2468008810C000020124382147
-:101170000080382130E400031480000330AA00030B
-:101180001140000D312B000310A0000900001021B8
-:1011900090ED0000244E000131C200FF0045602B9D
-:1011A000A10D000024E700011580FFF925080001CA
-:1011B00003E00008000000001560FFF300000000DD
-:1011C00010A0FFFB000010218CF80000245900043F
-:1011D000332200FF0045782BAD18000024E70004FF
-:1011E00015E0FFF92508000403E0000800000000F6
-:1011F00093850048938800588F8700600004320070
-:101200003103007F00E5102B30C47F001040000F39
-:10121000006428258F8400383C0980008C8A00EC0B
-:10122000AD2A00A43C03800000A35825AC6B00A0AD
-:101230008C6C00A00580FFFE000000008C6D00ACEF
-:10124000AC8D00EC03E000088C6200A80A00188254
-:101250008F840038938800593C0280000080502120
-:10126000310300FEA383005930ABFFFF30CC00FFF9
-:1012700030E7FFFF344801803C0980008D2401B82D
-:101280000480FFFE8F8D006C24180016AD0D000049
-:101290008D2201248F8D0038AD0200048D5900206D
-:1012A000A5070008240201C4A119000AA118000B17
-:1012B000952F01208D4E00088D4700049783005C18
-:1012C0008D59002401CF302100C7282100A32023FD
-:1012D0002418FFFFA504000CA50B000EA5020010AA
-:1012E000A50C0012AD190018AD18002495AF00E848
-:1012F0003C0B10002407FFF731EEFFFFAD0E002876
-:101300008DAC0084AD0C002CAD2B01B88D460020B7
-:1013100000C7282403E00008AD4500208F8800386E
-:101320000080582130E7FFFF910900D63C02800081
-:1013300030A5FFFF312400FF00041A00006750258C
-:1013400030C600FF344701803C0980008D2C01B875
-:101350000580FFFE8F82006C240F0017ACE20000B6
-:101360008D390124ACF900048D780020A4EA00082E
-:10137000241901C4A0F8000AA0EF000B9523012056
-:101380008D6E00088D6D00049784005C01C35021B0
-:10139000014D602101841023A4E2000CA4E5000E9D
-:1013A000A4F90010A4E60012ACE000148D7800242B
-:1013B000240DFFFFACF800188D0F007CACEF001C73
-:1013C0008D0E00783C0F1000ACEE0020ACED002438
-:1013D000950A00BE240DFFF73146FFFFACE600285A
-:1013E000950C00809504008231837FFF0003CA00C2
-:1013F0003082FFFF0322C021ACF8002CAD2F01B8D2
-:10140000950E00828D6A002000AE3021014D282407
-:10141000A506008203E00008AD6500203C028000C4
-:10142000344501803C0480008C8301B80460FFFED9
-:101430008F8A0044240600199549001C3128FFFFBB
-:10144000000839C0ACA70000A0A6000B3C051000A6
-:1014500003E00008AC8501B88F87004C0080402174
-:1014600030C400FF3C0680008CC201B80440FFFE7F
-:101470008F89006C9383006834996000ACA90000E8
-:10148000A0A300058CE20010240F00022403FFF744
-:10149000A4A20006A4B900088D180020A0B8000A74
-:1014A000A0AF000B8CEE0000ACAE00108CED000481
-:1014B000ACAD00148CEC001CACAC00248CEB002018
-:1014C000ACAB00288CEA002C3C071000ACAA002C26
-:1014D0008D090024ACA90018ACC701B88D05002007
-:1014E00000A3202403E00008AD0400208F8600380C
-:1014F00027BDFFE0AFB10014AFBF0018AFB00010C0
-:1015000090C300D430A500FF3062002010400008D6
-:10151000008088218CCB00D02409FFDF256A0001E0
-:10152000ACCA00D090C800D401093824A0C700D4A8
-:1015300014A000403C0C80008F840038908700D4B9
-:101540002418FFBF2406FFEF30E3007FA08300D400
-:10155000979F005C8F8200608F8D003803E2C82364
-:10156000A799005CA5A000BC91AF00D401F870243D
-:10157000A1AE00D48F8C0038A18000D78F8A0038AC
-:10158000A5400082AD4000EC914500D400A658244F
-:10159000A14B00D48F9000348F8400609786005C4C
-:1015A0000204282110C0000FAF850034A38000582A
-:1015B0003C0780008E2C000894ED01208E2B000447
-:1015C000018D5021014B8021020620233086FFFF30
-:1015D00030C8000F3909000131310001162000091F
-:1015E000A3880058938600488FBF00188FB100145D
-:1015F0008FB0001027BD0020AF85006403E0000815
-:10160000AF86006000C870238FBF00189386004823
-:101610008FB100148FB0001034EF0C00010F28219F
-:1016200027BD0020ACEE0084AF85006403E0000815
-:10163000AF86006035900180020028210E00190F4E
-:10164000240600828F840038908600D430C5004084
-:1016500050A0FFBAA38000688F85004C3C06800034
-:101660008CCD01B805A0FFFE8F89006C2408608234
-:1016700024070002AE090000A6080008A207000B1C
-:101680008CA300083C0E1000AE0300108CA2000CCE
-:10169000AE0200148CBF0014AE1F00188CB90018E5
-:1016A000AE1900248CB80024AE1800288CAF002896
-:1016B000AE0F002CACCE01B80A001948A380006818
-:1016C0008F8A003827BDFFE0AFB10014AFB0001023
-:1016D0008F880060AFBF00189389003C954200BC22
-:1016E00030D100FF0109182B0080802130AC00FFB1
-:1016F0003047FFFF0000582114600003310600FF4F
-:1017000001203021010958239783005C0068202BB9
-:101710001480002700000000106800562419000102
-:101720001199006334E708803165FFFF0E0018C08F
-:10173000020020218F83006C3C07800034E601808A
-:101740003C0580008CAB01B80560FFFE240A001840
-:101750008F840038ACC30000A0CA000B948900BE7F
-:101760003C081000A4C90010ACC00030ACA801B8FF
-:101770009482008024430001A4830080949F008011
-:101780003C0608008CC6318833EC7FFF1186005E72
-:101790000000000002002021022028218FBF001835
-:1017A0008FB100148FB000100A00193427BD00203B
-:1017B000914400D42403FF8000838825A15100D4E4
-:1017C0009784005C3088FFFF51000023938C003C1D
-:1017D0008F8500382402EFFF008B782394AE00BC85
-:1017E0000168502B31E900FF01C26824A4AD00BCA0
-:1017F00051400039010058213C1F800037E60100AC
-:101800008CD800043C190001031940245500000144
-:1018100034E740008E0A00202403FFFB241100015E
-:1018200001432024AE0400201191002D34E78000F4
-:1018300002002021012030210E0018C03165FFFF79
-:101840009787005C8F890060A780005C0127802358
-:10185000AF900060938C003C8F8B00388FBF0018D6
-:101860008FB100148FB0001027BD002003E00008E6
-:10187000A16C00D73C0D800035AA01008D48000402
-:101880003C0900010109282454A0000134E740006C
-:101890008E0F00202418FFFB34E7800001F870242D
-:1018A00024190001AE0E00201599FF9F34E708802F
-:1018B000020020210E00188E3165FFFF020020215A
-:1018C000022028218FBF00188FB100148FB00010A4
-:1018D0000A00193427BD00200A0019F7000048212A
-:1018E00002002021012030210E00188E3165FFFFFB
-:1018F0009787005C8F890060A780005C01278023A8
-:101900000A001A0EAF900060948C0080241F8000A3
-:10191000019F3024A4860080908B0080908F0080EF
-:10192000316700FF0007C9C20019C027001871C045
-:1019300031ED007F01AE2825A08500800A0019DF67
-:1019400002002021938500682403000127BDFFE8E1
-:1019500000A330042CA20020AFB00010AFBF0014D1
-:1019600000C01821104000132410FFFE3C0708009F
-:101970008CE7319000E610243C088000350501809A
-:1019800014400005240600848F890038240A0004CE
-:101990002410FFFFA12A00FC0E00190F0000000018
-:1019A000020010218FBF00148FB0001003E0000868
-:1019B00027BD00183C0608008CC631940A001A574F
-:1019C00000C310248F87004427BDFFE0AFB200188A
-:1019D000AFB10014AFB00010AFBF001C30D000FF9B
-:1019E00090E6000D00A088210080902130C5007F86
-:1019F000A0E5000D8F8500388E2300188CA200D042
-:101A00001062002E240A000E0E001A4AA38A0068F3
-:101A10002409FFFF104900222404FFFF5200002088
-:101A2000000020218E2600003C0C001000CC582421
-:101A3000156000393C0E000800CE682455A0003F18
-:101A4000024020213C18000200D880241200001F10
-:101A50003C0A00048F8700448CE200148CE30010E1
-:101A60008CE500140043F82303E5C82B1320000580
-:101A7000024020218E24002C8CF1001010910031A6
-:101A80000240202124020012A38200680E001A4A9C
-:101A90002412FFFF105200022404FFFF0000202147
-:101AA0008FBF001C8FB200188FB100148FB00010D0
-:101AB0000080102103E0000827BD002090A800D47A
-:101AC000350400200A001A80A0A400D400CA4824CB
-:101AD0001520000B8F8B00448F8D00448DAC0010BF
-:101AE0001580000B024020218E2E002C51C0FFECEF
-:101AF00000002021024020210A001A9B2402001726
-:101B00008D66001050C0FFE6000020210240202119
-:101B10000A001A9B24020011024020212402001511
-:101B20000E001A4AA3820068240FFFFF104FFFDC4B
-:101B30002404FFFF0A001A8A8E2600000A001AC138
-:101B4000240200143C08000400C8382450E0FFD4EC
-:101B500000002021024020210A001A9B24020013C9
-:101B60008F85003827BDFFD8AFB3001CAFB2001877
-:101B7000AFB10014AFB00010AFBF002090A700D4E9
-:101B80008F90004C2412FFFF34E2004092060000C8
-:101B9000A0A200D48E0300100080982110720006CD
-:101BA00030D1003F2408000D0E001A4AA3880068B7
-:101BB000105200252404FFFF8F8A00388E09001878
-:101BC0008D4400D01124000702602021240C000E57
-:101BD0000E001A4AA38C0068240BFFFF104B001A5A
-:101BE0002404FFFF24040020122400048F8D0038F9
-:101BF00091AF00D435EE0020A1AE00D48F85005403
-:101C000010A00019000000001224004A8F9800382C
-:101C10008F92FCBC971000809651000A5230004809
-:101C20008F9300403C1F08008FFF318C03E5C82BC9
-:101C30001720001E02602021000028210E0019A993
-:101C400024060001000020218FBF00208FB3001C5C
-:101C50008FB200188FB100148FB0001000801021D7
-:101C600003E0000827BD00285224002A8E05001436
-:101C70008F840038948A008025490001A48900805F
-:101C8000948800803C0208008C42318831077FFF35
-:101C900010E2000E00000000026020210E00193446
-:101CA000240500010A001B0B000020212402002D46
-:101CB0000E001A4AA38200682403FFFF1443FFE1C9
-:101CC0002404FFFF0A001B0C8FBF002094990080A2
-:101CD000241F800024050001033FC024A498008035
-:101CE00090920080908E0080325100FF001181C2DE
-:101CF00000107827000F69C031CC007F018D582576
-:101D0000A08B00800E001934026020210A001B0BFA
-:101D1000000020212406FFFF54A6FFD68F84003840
-:101D2000026020210E001934240500010A001B0B5B
-:101D300000002021026020210A001B252402000A45
-:101D40002404FFFD0A001B0BAF9300608F8800384E
-:101D500027BDFFE8AFB00010AFBF0014910A00D458
-:101D60008F87004C00808021354900408CE60010B0
-:101D7000A10900D43C0208008C4231B030C53FFFBD
-:101D800000A2182B106000078F850050240DFF80E3
-:101D900090AE000D01AE6024318B00FF156000088D
-:101DA0000006C382020020212403000D8FBF00140F
-:101DB0008FB0001027BD00180A001A4AA3830068DC
-:101DC00033060003240F000254CFFFF70200202146
-:101DD00094A2001C8F85003824190023A4A200E8D7
-:101DE0008CE8000000081E02307F003F13F9003528
-:101DF0003C0A00838CE800188CA600D0110600086D
-:101E0000000000002405000E0E001A4AA385006899
-:101E10002407FFFF104700182404FFFF8F850038B8
-:101E200090A900D435240020A0A400D48F8C0044B5
-:101E3000918E000D31CD007FA18D000D8F83005458
-:101E40001060001C020020218F8400508C9800102C
-:101E50000303782B11E0000D241900180200202143
-:101E6000A39900680E001A4A2410FFFF10500002C8
-:101E70002404FFFF000020218FBF00148FB000104A
-:101E80000080102103E0000827BD00188C86001098
-:101E90008F9F00440200202100C31023AFE20010F6
-:101EA000240500010E0019A9240600010A001B9751
-:101EB000000020210E001934240500010A001B97A0
-:101EC00000002021010A5824156AFFD98F8C004494
-:101ED000A0A600FC0A001B84A386005A30A500FFC0
-:101EE0002406000124A9000100C9102B1040000C99
-:101EF00000004021240A000100A61823308B0001B5
-:101F000024C60001006A3804000420421160000267
-:101F100000C9182B010740251460FFF800A61823FC
-:101F200003E000080100102127BDFFD8AFB0001862
-:101F30008F90004CAFB1001CAFBF00202403FFFF07
-:101F40002411002FAFA30010920600002405000802
-:101F500026100001006620260E001BB0308400FF12
-:101F600000021E003C021EDC34466F410A001BD8F2
-:101F70000000102110A00009008018212445000154
-:101F800030A2FFFF2C4500080461FFFA0003204047
-:101F90000086202614A0FFF9008018210E001BB037
-:101FA000240500208FA300102629FFFF313100FFF8
-:101FB00000034202240700FF1627FFE20102182651
-:101FC00000035027AFAA0014AFAA00100000302170
-:101FD00027A8001027A7001400E6782391ED00033E
-:101FE00024CE000100C8602131C600FF2CCB0004C4
-:101FF0001560FFF9A18D00008FA200108FBF002097
-:102000008FB1001C8FB0001803E0000827BD002826
-:1020100027BDFFD0AFB3001CAFB00010AFBF00288A
-:10202000AFB50024AFB40020AFB20018AFB10014B8
-:102030003C0C80008D880128240FFF803C06800A1C
-:1020400025100100250B0080020F68243205007F57
-:10205000016F7024AD8E009000A62821AD8D002464
-:1020600090A600FC3169007F3C0A8004012A1821F7
-:10207000A386005A9067007C00809821AF830030CF
-:1020800030E20002AF88006CAF85003800A0182154
-:10209000144000022404003424040030A3840048C7
-:1020A0008C7200DC30D100FF24040004AF92006089
-:1020B00012240004A38000688E7400041680001EA1
-:1020C0003C0880009386005930C7000150E0000FA3
-:1020D0008F8600608CA400848CA800842413FF8069
-:1020E00000936024000C49403110007F01307825B6
-:1020F0003C19200001F9682530DF00FE3C03800018
-:10210000AC6D0830A39F00598F8600608FBF0028F8
-:102110008FB500248FB400208FB3001C8FB200183D
-:102120008FB100148FB000102402000127BD0030D1
-:1021300003E00008ACA600DC8E7F000895020120B9
-:102140008E67001003E2C8213326FFFF30D8000F4E
-:1021500033150001AF87003416A00058A39800582B
-:1021600035090C000309382100D81823AD03008479
-:10217000AF8700648E6A00043148FFFF1100007EC3
-:10218000A78A005C90AC00D42407FF8000EC3024C8
-:1021900030CB00FF1560004B9786005C938E005A91
-:1021A000240D000230D5FFFF11CD02A20000A021B6
-:1021B0008F85006002A5802B160000BC9388004824
-:1021C0003C11800096240120310400FF1485008812
-:1021D0008F8400648F9800343312000356400085CA
-:1021E00030A500FF8F900064310C00FF24060034FE
-:1021F00011860095AF90004C9204000414800119E0
-:102200008F8E0038A380003C8E0D00048DC800D84E
-:102210003C0600FF34CCFFFF01AC30240106182B34
-:1022200014600121AF8600548F8700609798005C8E
-:10223000AF8700400307402310C000C7A788005C99
-:102240008F91003030C3000300035823922A007C92
-:102250003171000302261021000A20823092000111
-:102260000012488000492821311FFFFF03E5C82BD9
-:10227000132001208F8800388F8500348F880064F8
-:102280001105025A3C0E3F018E0600003C0C250051
-:1022900000CE682411AC01638F84004C30E500FF50
-:1022A0000E00184A000030218F8800388F870060A8
-:1022B0008F8500340A001DB78F8600540A001C5613
-:1022C000AF87006490AC00D400EC2024309000FF75
-:1022D000120000169386005990B5008890B400D77C
-:1022E00024A8008832A2003F2446FFE02CD1002021
-:1022F000A394003C1220000CAF88004C240E000177
-:1023000000CE2004308A00191540012B3C068000C5
-:1023100034D80002009858241560022E3092002014
-:1023200016400234000000009386005930CE0001B0
-:1023300011C0000F9788005C8CA900848CAF0084CA
-:102340002410FF800130C8240019194031ED007FAE
-:10235000006D38253C1F200000FF902530CB00FE8B
-:102360003C188000AF120830A38B00599788005C9E
-:102370001500FF84000000008E630020306C000414
-:102380001180FF51938600592404FFFB0064302420
-:102390003C038000AE660020346601808C7301B877
-:1023A0000660FFFE8F8E006C346A01003C15000150
-:1023B000ACCE00008C62012424076085ACC200040E
-:1023C0008D54000402958824522000012407608364
-:1023D000241200023C1810003C0B8000A4C7000827
-:1023E000A0D2000BAD7801B80A001C2B93860059CF
-:1023F00030A500FF0E00184A240600018F88006CEB
-:102400003C05800034A90900250201889388004812
-:10241000304A0007304B00783C0340802407FF809F
-:102420000163C825014980210047F824310C00FFD1
-:1024300024060034ACBF0800AF90004CACB90810C3
-:102440005586FF6E920400048F8400388E11003090
-:10245000908E00D431CD001015A000108F83006045
-:102460002C6F000515E000E400000000909800D4F7
-:102470002465FFFC331200101640000830A400FF52
-:102480008F9F00648F99003413F90004388700018E
-:1024900030E20001144001C8000000000E001BC320
-:1024A000000000000A001DF8000000008F84006496
-:1024B00030C500FF0E00184A24060001938E004824
-:1024C000240A003411CA00A08F8500388F8600606E
-:1024D0009783005C3062FFFF00C28823AF910060E9
-:1024E000A780005C1280FF90028018212414FFFD59
-:1024F0005474FFA28E6300208E6900042403FFBF82
-:10250000240BFFEF0135C823AE79000490AF00D44F
-:1025100031ED007FA0AD00D48E6600208F9800388A
-:10252000A780005C34DF0002AE7F0020A70000BC63
-:10253000931200D402434024A30800D48F9500389E
-:10254000AEA000EC92AE00D401CB5024A2AA00D4DD
-:102550000A001CD78F8500388F910034AF8000604F
-:1025600002275821AF8B0034000020212403FFFFF5
-:10257000108301B48F8500388E0C00103C0D0800CC
-:102580008DAD31B09208000031843FFF008D802B6B
-:1025900012000023310D003F3C1908008F3931A88B
-:1025A0008F9F006C000479802408FF80033F202166
-:1025B000008FC821938500590328F8243C06008029
-:1025C0003C0F800034D80001001F91403331007F60
-:1025D0008F8600380251502535EE0940332B0078A4
-:1025E000333000073C0310003C02800C017890253A
-:1025F000020E48210143C0250222382134AE0001D9
-:10260000ADFF0804AF890050ADF20814AF87004455
-:10261000ADFF0028ACD90084ADF80830A38E005976
-:102620009383005A240700035067002825A3FFE086
-:10263000240C0001146CFFAB8F850038241100239B
-:1026400011B10084000000002402000B0260202170
-:102650000E001A4AA38200680040A0210A001D3221
-:102660008F85003802602021240B000C0E001A4ACE
-:10267000A38B0068240AFFFF104AFFBC2404FFFF5D
-:102680008F8E0038A380003C8E0D00048DC800D8CA
-:102690003C0600FF34CCFFFF01AC30240106182BB0
-:1026A0001060FEE1AF860054026020212412001960
-:1026B0000E001A4AA3920068240FFFFF104FFFABD1
-:1026C0002404FFFF0A001C838F8600542C74002012
-:1026D0001280FFDE2402000B000328803C11080159
-:1026E0002631949000B148218D2D000001A00008F2
-:1026F000000000008F85003400A710219385003C66
-:10270000AF82003402251821A383003C951F00BC32
-:102710000226282137F91000A51900BC5240FF926B
-:10272000AF850060246A0004A38A003C950900BCC0
-:1027300024A40004AF84006035322000A51200BC40
-:102740000A001D54000020218F8600602CCB00055C
-:102750001560FF609783005C3072FFFF00D240235A
-:102760002D18000513000003306400FF24DFFFFC78
-:1027700033E400FF8F8500648F86003410A60004C8
-:10278000388F000131ED000115A001380000000074
-:102790008F840038908C00D435870010A08700D437
-:1027A0008F8500388F8600609783005CACA000ECBA
-:1027B0000A001D2F3062FFFF8CAA00848CB50084B4
-:1027C0003C041000014710240002894032B4007F0D
-:1027D0000234302500C460253C0880002405000137
-:1027E00002602021240600010E0019A9AD0C08305A
-:1027F0000A001CC38F8500388C8200EC1222FE7EFA
-:102800000260202124090005A38900680E001A4AED
-:102810002411FFFF1451FE782404FFFF0A001D5508
-:102820002403FFFF8F8F004C8F8800388DF8000045
-:10283000AD1800888DE70010AD0700988F87006005
-:102840000A001DB78F8600542407FFFF118700057B
-:10285000000000000E001B4C026020210A001D90A9
-:102860000040A0210E001AD1026020210A001D9014
-:102870000040A0218F90004C3C0908008D2931B008
-:102880008E11001032323FFF0249682B11A0000C5C
-:10289000240AFF808F85005090AE000D014E102459
-:1028A000304C00FF11800007026020210011C3821C
-:1028B00033030003240B0001106B0105000000002E
-:1028C000026020212418000D0E001A4AA398006807
-:1028D000004020218F8500380A001D320080A02191
-:1028E0008F90004C3C0A08008D4A31B08F85005013
-:1028F0008E0400100000A0218CB1001430823FFF34
-:10290000004A602B8CB200205180FFEE0260202133
-:1029100090B8000D240BFF800178702431C300FFB4
-:102920005060FFE80260202100044382310600036A
-:1029300014C0FFE40260202194BF001C8F9900386E
-:102940008E060028A73F00E88CAF0010022F20233E
-:1029500014C40139026020218F83005400C3682110
-:10296000022D382B14E00135240200188F8A004410
-:102970008F820030024390218D4B00100163702341
-:10298000AD4E0010AD5200208C4C00740192282BEB
-:1029900014A00156026020218F8400508E0800246C
-:1029A0008C86002411060007026020212419001CD7
-:1029B0000E001A4AA3990068240FFFFF104FFFC5AD
-:1029C0002404FFFF8F8400448C87002424FF00012F
-:1029D000AC9F0024125101338F8D00308DB10074F3
-:1029E000123201303C0B00808E0E000001CB5024CF
-:1029F00015400075000000008E0300142411FFFF35
-:102A000010710006026020212418001B0E001A4AD3
-:102A1000A39800681051FFAF2404FFFF8E0300004D
-:102A20003C0800010068302410C000133C04008002
-:102A30000064A024168000090200282102602021E1
-:102A40002419001A0E001A4AA3990068240FFFFFE8
-:102A5000104FFFA02404FFFF020028210260202164
-:102A60000E001A6A240600012410FFFF1050FF997F
-:102A70002404FFFF241400018F9F004402602021E2
-:102A80000280302197F1003424050001262700013F
-:102A9000A7E700340E0019A9000000000000202163
-:102AA0008F8500380A001D320080A0218F90004CD5
-:102AB0003C1408008E9431B08E07001030E83FFFC0
-:102AC0000114302B10C000618F860050241FFF803E
-:102AD00090C5000D03E52024309200FF5240005CB9
-:102AE000026020218F8D005411A0000700078B8207
-:102AF0008F8500388F89FCBC94AF00809539000A1F
-:102B0000132F00F68F870040322C000315800063DE
-:102B10000000000092020002104000D700000000F8
-:102B20008E0A0024154000D8026020219204000380
-:102B300024060002308800FF15060005308500FFDE
-:102B40008F940054528000F202602021308500FFF3
-:102B500038AD00102DA400012CBF000103E4302586
-:102B6000020028210E001A6A026020212410FFFFB3
-:102B7000105000BE8F8500388F830054106000C451
-:102B8000240500013C1908008F39318C0323782B70
-:102B900015E000B12409002D026020210000282149
-:102BA0000E0019A9240600018F85003800001821A5
-:102BB0000A001D320060A0210E0018750000000000
-:102BC0000A001DF800000000AC8000200A001E78FA
-:102BD0008E03001400002821026020210E0019A994
-:102BE000240600010A001CC38F8500380A001DB7A7
-:102BF0008F8800388CB000848CB900843C031000AE
-:102C00000207482400096940332F007F01AFF825EF
-:102C100003E32825ACC50830910700012405000115
-:102C2000026020210E0019A930E600010A001CC331
-:102C30008F850038938F00482403FFFD0A001D3460
-:102C4000AF8F00600A001D342403FFFF02602021C3
-:102C50002410000D0E001A4AA390006800401821AD
-:102C60008F8500380A001D320060A0210E00187503
-:102C7000000000009783005C8F8600603070FFFFCB
-:102C800000D048232D3900051320FE128F8500380F
-:102C9000ACA200EC0A001D2F3062FFFF90C3000DB4
-:102CA000307800085700FFA2920400030260202140
-:102CB000240200100E001A4AA38200682403FFFFBA
-:102CC0005443FF9B920400030A001F128F850038B3
-:102CD00090A8000D3106000810C000958F94005494
-:102CE0001680009E026020218E0F000C8CA4002014
-:102CF00055E40005026020218E1F00088CB90024D5
-:102D000013F9003A02602021240200200E001A4A22
-:102D1000A38200682405FFFF1045FEEE2404FFFF98
-:102D20008F8F0044240CFFF72403FF8091E9000DEE
-:102D30003C14800E3C0B8000012CC824A1F9000D2E
-:102D40008F8F00303C0708008CE731AC8F8D006C12
-:102D500095E500788F99004400ED902130BF7FFF0A
-:102D6000001F20400244302130C8007F00C3C0242F
-:102D700001147021AD78002CA5D100008F2A002805
-:102D800025420001AF2200288F29002C8E0C002C38
-:102D9000012C6821AF2D002C8E07002CAF270030AE
-:102DA0008E050014AF250034973F003A27E4000158
-:102DB000A724003A95F200783C1008008E1031B03C
-:102DC0002643000130717FFF1230005C006030212B
-:102DD0008F83003002602021240500010E00193489
-:102DE000A46600780A001EA1000020218E070014AE
-:102DF0002412FFFF10F200638F8C00388E09001838
-:102E00008D8D00D0152D005D026020218E0A0024DA
-:102E10008CA2002811420053240200210E001A4AFD
-:102E2000A38200681452FFBE2404FFFF8F85003880
-:102E30000A001D320080A0212402001F0E001A4A41
-:102E4000A38200682409FFFF1049FEA22404FFFFAB
-:102E50000A001E548F830054026020210E001A4A7B
-:102E6000A38900681450FF518F8500382403FFFFA9
-:102E70000A001D320060A0218CCE00248E0B00249D
-:102E8000116EFF2A026020210A001F262402000F73
-:102E90000E001934026020218F8500380A001EE5DB
-:102EA000000018218E0900003C05008001259024B7
-:102EB0001640FF452402001A026020210E001A4A23
-:102EC000A3820068240CFFFF144CFECB2404FFFFF8
-:102ED0008F8500380A001D320080A0212403FFFDE9
-:102EE0000060A0210A001D32AF8700602418001D79
-:102EF0000E001A4AA39800682403FFFF1443FEA69D
-:102F00002404FFFF8F8500380A001D320080A021B5
-:102F10002412002C0E001A4AA39200682403FFFF1B
-:102F20001043FF508F8500380A001ECC9204000326
-:102F3000026020210A001F3C24020024240B800090
-:102F4000006B702431CAFFFF000A13C2305100FF2A
-:102F5000001180270A001F6D001033C00A001F3CBB
-:102F6000240200278E0600288CAE002C10CE00080C
-:102F7000026020210A001F802402001F0A001F8017
-:102F80002402000E026020210A001F802402002576
-:102F90008E04002C1080000D8F8300308C7800741C
-:102FA0000304582B5560000C026020218CA80014EB
-:102FB0000086A0210114302B10C0FF5A8F8F0044CF
-:102FC000026020210A001F802402002202602021CA
-:102FD0000A001F80240200230A001F80240200260A
-:102FE00027BDFFD8AFB3001CAFB10014AFBF0020A6
-:102FF000AFB20018AFB000103C0280008C5201400C
-:103000008C4B01483C048000000B8C02322300FFF3
-:10301000317300FF8C8501B804A0FFFE349001805D
-:10302000AE1200008C8701442464FFF024060002E5
-:103030002C830013AE070004A6110008A206000BA3
-:10304000AE1300241060004F8FBF002000044880A2
-:103050003C0A0801254A9510012A40218D040000F0
-:1030600000800008000000003C0308008C6331A8C9
-:1030700031693FFF0009998000728021021370219D
-:103080002405FF80264D0100264C00803C02800074
-:1030900031B1007F3198007F31CA007F3C1F800A28
-:1030A0003C1980043C0F800C01C5202401A530246C
-:1030B00001853824014F1821AC460024023F4021ED
-:1030C00003194821AC470090AC440028AF8300446A
-:1030D000AF880038AF8900300E00190001608021F0
-:1030E0003C0380008C6B01B80560FFFE8F870044B5
-:1030F0008F8600383465018090E8000DACB2000086
-:10310000A4B0000600082600000416030002902761
-:10311000001227C21080008124C20088241F608210
-:10312000A4BF0008A0A0000524020002A0A2000B7A
-:103130008F8B0030000424003C0827000088902575
-:10314000ACB20010ACA00014ACA00024ACA00028CD
-:10315000ACA0002C8D6900382413FF80ACA90018A6
-:1031600090E3000D02638024320500FF10A00005EB
-:103170008FBF002090ED000D31AC007FA0EC000D62
-:103180008FBF00208FB3001C8FB200188FB10014C6
-:103190008FB000103C0A10003C0E800027BD0028B4
-:1031A00003E00008ADCA01B8265F01002405FF80D6
-:1031B00033F8007F3C06800003E578243C19800A40
-:1031C00003192021ACCF0024908E00D400AE6824D7
-:1031D00031AC00FF11800024AF840038248E0088B9
-:1031E00095CD00123C0C08008D8C31A831AB3FFF0F
-:1031F00001924821000B5180012A40210105202421
-:10320000ACC400283107007F3C06800C00E620217A
-:103210009083000D00A31024304500FF10A0FFD8BC
-:10322000AF8400449098000D330F001015E0FFD5D7
-:103230008FBF00200E001900000000003C0380003A
-:103240008C7901B80720FFFE00000000AE120000DC
-:103250008C7F0144AE1F0004A61100082411000257
-:10326000A211000BAE1300243C130801927396D0F8
-:10327000327000015200FFC38FBF00200E00213DBD
-:10328000024020210A00205A8FBF00203C1260001B
-:103290008E452C083C03F0033462FFFF00A2F824A3
-:1032A000AE5F2C088E582C083C1901C003199825D4
-:1032B000AE532C080A00205A8FBF0020264D010073
-:1032C00031AF007F3C10800A240EFF8001F02821DE
-:1032D00001AE60243C0B8000AD6C00241660FFA89A
-:1032E000AF85003824110003A0B100FC0A00205A69
-:1032F0008FBF002026480100310A007F3C0B800A66
-:103300002409FF80014B3021010920243C07800063
-:10331000ACE400240A002059AF860038944E001215
-:10332000320C3FFF31CD3FFF15ACFF7D241F608283
-:1033300090D900D42418FF800319782431EA00FFC3
-:103340001140FF770000000024070004A0C700FC24
-:103350008F870044241160842406000DA4B1000866
-:10336000A0A600050A002044240200023C0400013B
-:10337000248496BC24030014240200FE3C010800AF
-:10338000AC2431EC3C010800AC2331E83C010801DD
-:10339000A42296D83C040801248496D80000182161
-:1033A00000643021A0C30004246300012C6500FFE9
-:1033B00054A0FFFC006430213C07080024E7010012
-:1033C00003E00008AF87007800A058210080482162
-:1033D0000000102114A00012000050210A00213921
-:1033E000000000003C010801A42096D83C0508011B
-:1033F00094A596D88F8200783C0C0801258C96D82D
-:1034000000E2182100AC2021014B302BA0890004E0
-:1034100000001021A460000810C0003901004821FC
-:103420008F8600780009384000E940210008388084
-:1034300000E6282190A8000B90B9000A000820405F
-:1034400000881021000218800066C021A319000A1C
-:103450008F85007800E5782191EE000A91E6000B57
-:10346000000E684001AE6021000C20800085102114
-:10347000A046000B3C030801906396D21060002226
-:103480002462FFFF8F8300383C010801A02296D2FE
-:10349000906C00FF1180000400000000906E00FF9F
-:1034A00025CDFFFFA06D00FF3C190801973996D884
-:1034B000272300013078FFFF2F0F00FF11E0FFC925
-:1034C000254A00013C010801A42396D83C050801C7
-:1034D00094A596D88F8200783C0C0801258C96D84C
-:1034E00000E2182100AC2021014B302BA089000400
-:1034F00000001021A460000814C0FFC90100482189
-:1035000003E000080000000003E0000824020002BD
-:1035100027BDFFE0248501002407FF80AFB0001025
-:10352000AFBF0018AFB1001400A718243C108000F2
-:1035300030A4007F3C06800A008628218E110024DA
-:10354000AE03002490A200FF14400008AF850038AD
-:10355000A0A000098FBF0018AE1100248FB1001485
-:103560008FB0001003E0000827BD002090A900FDE7
-:1035700090A800FF312400FF0E0020EB310500FF72
-:103580008F8500388FBF0018A0A00009AE1100245D
-:103590008FB100148FB0001003E0000827BD002099
-:1035A00027BDFFD0AFB20020AFB1001CAFB00018F4
-:1035B000AFBF002CAFB40028AFB300243C0980009B
-:1035C0009533011635320C00952F011A3271FFFF29
-:1035D000023280218E08000431EEFFFF248B0100AF
-:1035E000010E6821240CFF8025A5FFFF016C5024EB
-:1035F0003166007F3C07800AAD2A002400C73021D5
-:10360000AF850074AF8800703C010801A02096D1FE
-:1036100090C300090200D02100809821306300FF90
-:103620002862000510400048AF8600382864000278
-:103630001480008E24140001240D00053C010801B3
-:10364000A02D96B590CC00FD3C010801A02096B6B7
-:103650003C010801A02096B790CB000A240AFF8005
-:10366000318500FF014B4824312700FF10E0000C9A
-:10367000000058213C128008365100808E2F003007
-:103680008CD0005C01F0702305C0018E8F87007024
-:1036900090D4000A3284007FA0C4000A8F860038CC
-:1036A0003C118008363000808E0F00308F8700700C
-:1036B00000EF702319C000EE0000000090D4000954
-:1036C00024120002328400FF109202470000000022
-:1036D0008CC2005800E2F82327F9FFFF1B200130BD
-:1036E0000000000090C500092408000430A300FF7A
-:1036F00010680057240A00013C010801A02A96B571
-:1037000090C900FF252700013C010801A02796B4BD
-:103710003C030801906396B5240600051066006A14
-:103720002C780005130000C4000090210003F880ED
-:103730003C0408012484955C03E4C8218F25000023
-:1037400000A0000800000000241800FF1078005CB2
-:103750000000000090CC000A90CA00093C08080153
-:10376000910896D13187008000EA48253C01080184
-:10377000A02996BC90C500FD3C140801929496D2F5
-:10378000311100013C010801A02596BD90DF00FE2B
-:103790003C010801A03F96BE90D200FF3C01080109
-:1037A000A03296BF8CD900543C010801AC3996C0B8
-:1037B0008CD000583C010801AC3096C48CC3005C2E
-:1037C0003C010801AC3496CC3C010801AC2396C8FE
-:1037D000162000088FBF002C8FB400288FB3002460
-:1037E0008FB200208FB1001C8FB0001803E00008DA
-:1037F00027BD00303C1180009624010E0E000FD42E
-:103800003094FFFF3C0B08018D6B96D40260382189
-:1038100002802821AE2B01803C1308018E7396B4E0
-:1038200001602021240600830E00102FAFB300108A
-:103830008FBF002C8FB400288FB300248FB20020DC
-:103840008FB1001C8FB0001803E0000827BD0030C6
-:103850003C1808008F1831FC270F00013C010800BC
-:10386000AC2F31FC0A0021CE000000001474FFB917
-:1038700000000000A0C000FF3C0508008CA531E45A
-:103880003C0308008C6331E03C0208008C423204A7
-:103890008F99003834A80001241F00023C01080160
-:1038A000AC2396D43C010801A02896D03C01080125
-:1038B000A02296D3A33F00090A0021878F860038F3
-:1038C0000E00213D000000000A0021CE8F86003846
-:1038D0003C1F080193FF96B42419000113F9022933
-:1038E0008F8700703C100801921096B83C060801C2
-:1038F00090C696B610C000050200A0213C04080145
-:10390000908496B9109001E48F8700780010884069
-:103910008F9F0078023048210009C880033F702142
-:1039200095D80008270F0001A5CF00083C04080126
-:10393000908496B93C05080190A596B60E0020EB40
-:10394000000000008F8700780230202100043080C2
-:1039500000C720218C8500048F82007400A24023C0
-:1039600005020006AC8200048C8A00008F83007080
-:10397000014310235C400001AC8300008F860038B7
-:1039800090CB00FF2D6C00025580002D2414000107
-:103990000230F821001F40800107282190B9000B58
-:1039A0008CAE00040019C04003197821000F188064
-:1039B000006710218C4D000001AE88232630FFFFE8
-:1039C0005E00001F241400018C4400048CAA000037
-:1039D000008A482319200019240E00043C01080124
-:1039E000A02E96B590AD000B8CAB0004000D884066
-:1039F000022D802100101080004710218C4400040B
-:103A000001646023058202009443000890DF00FEF9
-:103A100090B9000B33E500FF54B900040107A02161
-:103A2000A0D400FE8F8700780107A0219284000BAC
-:103A30000E0020EB240500018F86003824140001BD
-:103A4000125400962E500001160000423C08FFFF61
-:103A5000241900021659FF3F00000000A0C000FF1B
-:103A60008F860038A0D200090A0021CE8F86003848
-:103A700090C700092404000230E300FF1064016FC6
-:103A800024090004106901528F8800748CCE005400
-:103A9000010E682325B100010620017524180004D9
-:103AA0003C010801A03896B53C010801A02096B45D
-:103AB00090D400FD90D200FF2E4F000215E0FF14BD
-:103AC000328400FF000438408F89007890DF00FFC7
-:103AD00000E41021000220800089C8212FE50002A7
-:103AE0009324000B14A0FF0A2407000200041840CE
-:103AF0000064802100105880016928218CAC0004EA
-:103B0000010C50230540FF02000000003C030801A7
-:103B1000906396B614600005246F00013C01080113
-:103B2000A02496B93C010801A02796B73C010801E2
-:103B3000A02F96B690CE00FF24E7000131CD00FF04
-:103B400001A7882B1220FFE990A4000B0A0021BDD9
-:103B5000000000003C0508018CA596B43C1200044E
-:103B600000A8F82413F20006240200053C0908010D
-:103B7000912996B5152000022402000324020005B5
-:103B80003C010801A02296D190C700FF14E001205B
-:103B900024020002A0C200090A0021CE8F8600384C
-:103BA00090CC00FF1180FEDA240A00018F8C007493
-:103BB0008F890078240F0003018068211160001EA6
-:103BC000240E0002000540400105A02100142080C1
-:103BD000008990218E510004019180230600FECCC3
-:103BE000000000003C020801904296B61440000517
-:103BF000245800013C010801A02A96B73C010801A5
-:103C0000A02596B93C010801A03896B690DF00FFC8
-:103C1000010510210002C88033E500FF254A00019C
-:103C20000329202100AA402B1500FEB99085000B26
-:103C30001560FFE5000540400005404001051821E2
-:103C4000000310803C010801A02A96B43C01080141
-:103C5000A02596B8004918218C64000400E4F823DC
-:103C600027F9FFFF1F20FFE9000000008C63000020
-:103C700000E358230560013A01A3882310E30117EC
-:103C80000184C0231B00FEA2000000003C010801CB
-:103C9000A02E96B50A0022FC240B0001240E00047D
-:103CA000A0CE00093C0D08008DAD31F88F8600389C
-:103CB00025A200013C010800AC2231F80A0021CE07
-:103CC000000000008CD9005C00F9C0231F00FE7BBF
-:103CD000000000008CDF005C10FFFF658F84007423
-:103CE0008CC3005C00834023250200011C40FF6060
-:103CF000000000008CC9005C2487000100E9282B2B
-:103D000010A0FE943C0D80008DAB01043C0C000122
-:103D1000016C50241140FE8F240200103C01080168
-:103D2000A02296D10A0021CE000000008F910074DD
-:103D30008F86003826220001ACC2005C0A0022896E
-:103D4000241400018F8700382404FF80000088219C
-:103D500090E9000A2414000101243025A0E6000A9D
-:103D60003C05080190A596B63C040801908496B9DC
-:103D70000E0020EB000000008F8600388F85007851
-:103D800090C800FD310700FF000740400107F821FF
-:103D9000001FC0800305C8219323000BA0C300FDB2
-:103DA0008F8500788F86003803056021918F000B86
-:103DB000000F704001CF6821000D808002051021A6
-:103DC0008C4B0000ACCB00548D8400048F830074B6
-:103DD0000064502319400002248200012462000183
-:103DE00001074821ACC2005C0009308000C54021B9
-:103DF00000E02021240500010E0020EB9110000BB3
-:103E00008F86003890C500FF10A0FF0C0010704096
-:103E10008F85007801D06821000D10800045582161
-:103E20008D6400008F8C00740184502325470001AD
-:103E300004E0FF02263100013C030801906396B6BE
-:103E40002E2F0002247800013C010801A03896B60C
-:103E50003C010801A03496B711E0FEF802003821B9
-:103E60000A00235C000740408F8400388F83007471
-:103E70008C85005800A340230502FE9AAC830058AD
-:103E80000A002232000000003C07080190E796D2A9
-:103E9000240200FF10E200BE8F8600383C110801AA
-:103EA000963196DA3C030801246396D82625000152
-:103EB0003230FFFF30ABFFFF020360212D6A00FFAD
-:103EC0001540008D918700043C010801A42096DA7A
-:103ED0008F8800380007484001272821911800FFEB
-:103EE000000530802405000127140001A11400FF03
-:103EF0003C120801925296D28F8800788F8E007003
-:103F0000264F000100C820213C010801A02F96D2B5
-:103F1000AC8E00008F8D0074A4850008AC8D000469
-:103F20003C030801906396B4146000770000902170
-:103F30003C010801A02596B4A087000B8F8C007867
-:103F400000CC5021A147000A8F820038A04700FD15
-:103F50008F840038A08700FE8F8600388F9F007006
-:103F6000ACDF00548F990074ACD900588F8D007865
-:103F70000127C02100185880016DA021928F000AEE
-:103F8000000F704001CF182100038880022D80218E
-:103F9000A207000B8F86007801666021918A000BD2
-:103FA000000A1040004A20210004288000A6402179
-:103FB000A107000A3C07800834E900808D22003008
-:103FC0008F860038ACC2005C0A00228924140001EC
-:103FD00090CA00FF1540FEAD8F880074A0C4000990
-:103FE0000A0021CE8F860038A0C000FD8F980038CF
-:103FF00024060001A30000FE3C010801A02696B59E
-:104000003C010801A02096B40A0021BD0000000078
-:1040100090CB00FF3C040801908496D3316C00FFE4
-:104020000184502B1540000F2402000324020004D9
-:10403000A0C200090A0021CE8F86003890C3000A72
-:104040002410FF8002035824316C00FF1180FDC151
-:10405000000000003C010801A02096B50A0021BD27
-:1040600000000000A0C200090A0021CE8F8600389F
-:1040700090D4000A2412FF8002544824312800FF03
-:104080001500FFF4240200083C010801A02296D18B
-:104090000A0021CE00000000001088408F8B0070C5
-:1040A000023018210003688001A72021AC8B00009A
-:1040B0008F8A0074240C0001A48C0008AC8A0004D0
-:1040C0003C05080190A596B62402000110A2FE1E30
-:1040D00024A5FFFF0A0022489084000B0184A0233E
-:1040E0001A80FD8B000000003C010801A02E96B54F
-:1040F0000A0022FC240B00013C010801A42596DAE9
-:104100000A0023AE8F880038240B0001106B0022B8
-:104110008F9800388F85003890BF00FF33F900FF7B
-:104120001079002B000000003C1F080193FF96B897
-:10413000001FC840033FC0210018A08002887821DA
-:1041400091EE000AA08E000A8F8D00783C030801D2
-:10415000906396B800CD88210A0023D4A223000BD7
-:10416000263000010600003101A490230640002BF8
-:10417000240200033C010801A02F96B50A0022FC8E
-:10418000240B00018F8900380A002232AD27005429
-:104190000A00228824120001931400FDA094000B51
-:1041A0008F8800388F8F0078910E00FE00CF682135
-:1041B000A1AE000A8F910038A22700FD8F83007006
-:1041C0008F900038AE0300540A0023D58F8D0078FD
-:1041D00090B000FEA090000A8F8B00388F8C007882
-:1041E000916A00FD00CC1021A04A000B8F8400389A
-:1041F000A08700FE8F8600748F850038ACA600581B
-:104200000A0023D58F8D007894B80008ACA4000470
-:10421000030378210A00227CA4AF00083C010801B6
-:10422000A02296B50A0021BD0000000090CF000931
-:10423000240D000431EE00FF11CDFD8524020001A4
-:104240003C010801A02296B50A0021BD0000000033
-:10425000080033440800334408003420080033F4D5
-:10426000080033D808003328080033280800332812
-:104270000800334C8008010080080080800800009E
-:104280005F865437E4AC62CC50103A4536621985EB
-:10429000BF14C0E81BC27A1E84F4B556094EA6FEB0
-:1042A0007DDA01E7C04D748108005A7408005AB8DD
-:1042B00008005A5C08005A5C08005A5C08005A5C06
-:1042C00008005A7408005A5C08005A5C08005AC07A
-:1042D00008005A5C080059D408005A5C08005A5C6F
-:1042E00008005AC008005A5C08005A5C08005A5C72
-:1042F00008005A5C08005A5C08005A5C08005A5CC6
-:1043000008005A5C08005A5C08005A5C08005A947D
-:1043100008005A5C08005A9408005A5C08005A5C6D
-:1043200008005A5C08005A9808005A9408005A5C21
-:1043300008005A5C08005A5C08005A5C08005A5C85
-:1043400008005A5C08005A5C08005A5C08005A5C75
-:1043500008005A5C08005A5C08005A5C08005A5C65
-:1043600008005A5C08005A5C08005A5C08005A5C55
-:1043700008005A5C08005A5C08005A5C08005A9809
-:1043800008005A9808005A5C08005A9808005A5CBD
-:1043900008005A5C08005A5C08005A5C08005A5C25
-:1043A00008005A5C08005A5C08005A5C08005A5C15
-:1043B00008005A5C08005A5C08005A5C08005A5C05
-:1043C00008005A5C08005A5C08005A5C08005A5CF5
-:1043D00008005A5C08005A5C08005A5C08005A5CE5
-:1043E00008005A5C08005A5C08005A5C08005A5CD5
-:1043F00008005A5C08005A5C08005A5C08005A5CC5
-:1044000008005A5C08005A5C08005A5C08005A5CB4
-:1044100008005A5C08005A5C08005A5C08005A5CA4
-:1044200008005A5C08005A5C08005A5C08005A5C94
-:1044300008005A5C08005A5C08005A5C08005A5C84
-:1044400008005A5C08005A5C08005A5C08005A5C74
-:1044500008005A5C08005A5C08005A5C08005A5C64
-:1044600008005A5C08005A5C08005A5C08005A5C54
-:1044700008005A5C08005A5C08005A5C08005A5C44
-:1044800008005A5C08005A5C08005A5C08005A5C34
-:1044900008005A5C08005A5C08005A5C08005A5C24
-:1044A00008005A5C08005A5C08005ADC0800782CA6
-:1044B00008007A90080078380800762C08007838D0
-:1044C000080078C4080078380800762C0800762C9C
-:1044D0000800762C0800762C0800762C0800762C34
-:1044E0000800762C0800762C0800762C0800762C24
-:1044F00008007858080078480800762C0800762CC8
-:104500000800762C0800762C0800762C0800762C03
-:104510000800762C0800762C0800762C0800762CF3
-:104520000800762C0800762C08007848080082D80D
-:1045300008008164080082A008008164080082707D
-:104540000800804C080081640800816408008164D0
-:1045500008008164080081640800816408008164A7
-:104560000800816408008164080081640800816497
-:10457000080081640800818C08008D1008008E6C92
-:0C45800008008E4C080088B408008D284C
-:04458C000A000124FC
-:1045900000000000000000000000000D7470613693
-:1045A0002E322E31610000000602010100000000E1
-:1045B00000000000000000000000000000000000FB
-:1045C00000000000000000000000000000000000EB
-:1045D00000000000000000000000000000000000DB
-:1045E00000000000000000000000000000000000CB
-:1045F00000000000000000000000000000000000BB
-:1046000000000000000000000000000000000000AA
-:10461000000000000000000000000000000000009A
-:1046200010000003000000000000000D0000000D5D
-:104630003C020800244217203C03080024632A108F
-:10464000AC4000000043202B1480FFFD24420004F6
-:104650003C1D080037BD2FFC03A0F0213C100800D2
-:10466000261004903C1C0800279C17200E000262B4
-:10467000000000000000000D2402FF8027BDFFE0C5
-:1046800000821024AFB00010AF420020AFBF00186E
-:10469000AFB10014936500043084007F03441821F7
-:1046A0003C0200080062182130A500200360802130
-:1046B0003C080111277B000814A000022466005C5E
-:1046C00024660058920200049743010492040004F7
-:1046D0003047000F3063FFFF30840040006728231D
-:1046E00010800009000048219202000530420004B9
-:1046F000104000050000000010A0000300000000B2
-:1047000024A5FFFC240900049202000530420004A5
-:10471000104000120000000010A000100000000077
-:104720009602000200A72021010440252442FFFE3A
-:10473000A7421016920300042402FF8000431024B5
-:10474000304200FF104000033C0204000A000174E4
-:10475000010240258CC20000AF4210188F42017840
-:104760000440FFFE2402000AA74201409602000214
-:1047700024040009304200070002102330420007E1
-:10478000A7420142960200022442FFFEA7420144D2
-:10479000A740014697420104A74201488F42010801
-:1047A0003042002050400001240400019202000425
-:1047B00030420010144000023483001000801821A1
-:1047C000A743014A000000000000000000000000B4
-:1047D00000000000AF4810000000000000000000D2
-:1047E00000000000000000008F4210000441FFFEA6
-:1047F0003102FFFF10400007000000009202000499
-:104800003042004014400003000000008F421018A6
-:10481000ACC20000960200063042FFFF24420002B4
-:10482000000210430002104003628821962200001B
-:104830001120000D3044FFFF00A710218F830038A6
-:104840008F45101C000210820002108000431021CE
-:10485000AC45000030A6FFFF0E00058D00052C02C0
-:1048600000402021A6220000920300042402FF80C1
-:1048700000431024304200FF1040001F00000000E1
-:1048800092020005304200021040001B00000000B0
-:104890009742100C2442FFFEA742101600000000B1
-:1048A0003C02040034420030AF421000000000001F
-:1048B0000000000000000000000000008F42100017
-:1048C0000441FFFE000000009742100C8F45101CB1
-:1048D0003042FFFF244200300002108200021080AC
-:1048E000005B1021AC45000030A6FFFF0E00058DD7
-:1048F00000052C02A6220000960400022484000871
-:104900000E0001E93084FFFF974401040E0001F717
-:104910003084FFFF8FBF00188FB100148FB00010DC
-:104920003C02100027BD002003E00008AF420178E0
-:104930003084FFFF308200078F8500241040000282
-:10494000248300073064FFF800A4102130421FFFC9
-:1049500003421821247B4000AF850028AF82002449
-:1049600003E00008AF4200843084FFFF3082000F74
-:104970008F85002C8F860034104000022483000FA6
-:104980003064FFF000A410210046182BAF850030E2
-:104990000046202314600002AF82002CAF84002C5C
-:1049A0008F82002C340480000342182100641821F7
-:1049B000AF83003803E00008AF4200808F8200140C
-:1049C000104000088F8200048F82FFDC1440000535
-:1049D0008F8200043C02FFBF3442FFFF008220248C
-:1049E0008F82000430430006240200021062000F90
-:1049F0003C0201012C620003504000052402000427
-:104A00001060000F3C0200010A00023000000000AC
-:104A100010620005240200061462000C3C02011121
-:104A20000A000229008210253C0200110082102594
-:104A3000AF421000240200010A000230AF82000CD5
-:104A400000821025AF421000AF80000C0000000073
-:104A5000000000000000000003E00008000000006B
-:104A60008F82000C10400004000000008F421000F4
-:104A70000441FFFE0000000003E000080000000009
-:104A80008F8200102443F800000231C224C2FFF0DC
-:104A90002C63030110600003000210420A00025759
-:104AA000AC8200008F85001800C5102B1440000B4D
-:104AB0000000182100C51023244700018F82001C2C
-:104AC00000A210212442FFFF0046102B5440000496
-:104AD0002402FFFF0A000257AC8700002402FFFFF8
-:104AE0000A000260AC8200008C82000000021940C3
-:104AF000006218210003188000621821000318804A
-:104B00003C0208002442175C0062182103E0000800
-:104B10000060102127BDFFD8AFBF0020AFB1001C3F
-:104B2000AFB000183C0460088C8250002403FF7F63
-:104B30003C066000004310243442380CAC82500024
-:104B40008CC24C1C3C1A8000000216023042000F3E
-:104B500010400007AF82001C8CC34C1C3C02001F9D
-:104B60003442FC0000621824000319C2AF8300180D
-:104B70008F420008275B400034420001AF4200082A
-:104B8000AF8000243C02601CAF400080AF40008436
-:104B90008C4500088CC308083402800003422021A1
-:104BA0002402FFF0006218243C0200803C0108004F
-:104BB000AC2204203C025709AF8400381462000480
-:104BC000AF850034240200010A000292AF82001473
-:104BD000AF8000148F4200003842000130420001D3
-:104BE0001440FFFC8F8200141040001600000000EB
-:104BF00097420104104000058F83000014600007F5
-:104C00002462FFFF0A0002A72C62000A2C62001037
-:104C1000504000048F83000024620001AF82000036
-:104C20008F8300002C62000A144000032C620007EE
-:104C30000A0002AEAF80FFDC104000022402000137
-:104C4000AF82FFDC8F4301088F44010030622000F7
-:104C5000AF83000410400008AF8400103C0208003D
-:104C60008C42042C244200013C010800AC22042C9C
-:104C70000A00058A3C0240003065020014A00003CF
-:104C800024020F001482026024020D0097420104E6
-:104C9000104002C83C02400030624000144000ADA9
-:104CA0008F8200388C4400088F4201780440FFFE58
-:104CB00024020800AF42017824020008A742014004
-:104CC000A7400142974201048F8400043051FFFF46
-:104CD0003082000110400007022080212623FFFEC1
-:104CE000240200023070FFFFA74201460A0002DBE7
-:104CF000A7430148A74001463C0208008C42043CFF
-:104D00001440000D8F8300103082002014400002F8
-:104D10002403000924030001006020218F83001078
-:104D2000240209005062000134840004A744014AAF
-:104D30000A0002F60000000024020F0014620005C1
-:104D400030820020144000062403000D0A0002F502
-:104D50002403000514400002240300092403000179
-:104D6000A743014A3C0208008C4204203C0400484E
-:104D70000E00020C004420250E0002350000000049
-:104D80008F82000C1040003E000000008F42100097
-:104D90003C03002000431024104000398F8200049F
-:104DA000304200021040003600000000974210140C
-:104DB0001440003300000000974210088F8800382C
-:104DC0003042FFFF244200060002188200033880B0
-:104DD00000E83021304300018CC400001060000462
-:104DE000304200030000000D0A00033700E81021E4
-:104DF000544000103084FFFF3C05FFFF0085202455
-:104E0000008518260003182B0004102B00431024E3
-:104E10001040000500000000000000000000000D30
-:104E200000000000240002228CC200000A000336A9
-:104E3000004520253883FFFF0003182B0004102BAA
-:104E40000043102410400005000000000000000096
-:104E50000000000D000000002400022B8CC20000A6
-:104E60003444FFFF00E81021AC4400003C0208007D
-:104E70008C420430244200013C010800AC22043082
-:104E80008F6200008F840038AF8200088C8300009E
-:104E90003402FFFF1462000F000010213C050800DF
-:104EA0008CA504543C0408008C84045000B02821D4
-:104EB00000B0302B00822021008620213C01080018
-:104EC000AC2504543C010800AC2404500A000580C1
-:104ED000240400088C820000304201001040000FC2
-:104EE000000010213C0508008CA5044C3C0408007F
-:104EF0008C84044800B0282100B0302B008220218F
-:104F0000008620213C010800AC25044C3C0108002F
-:104F1000AC2404480A000580240400083C0508006D
-:104F20008CA504443C0408008C84044000B0282173
-:104F300000B0302B00822021008620213C01080097
-:104F4000AC2504443C010800AC2404400A00058060
-:104F5000240400088F6200088F620000000216021D
-:104F6000304300F0240200301062000524020040AB
-:104F7000106200E08F8200200A00058824420001B0
-:104F800014A0000500000000000000000000000D5B
-:104F900000000000240002568F4201780440FFFE0A
-:104FA000000000000E00023D27A400101440000580
-:104FB00000408021000000000000000D0000000003
-:104FC0002400025D8E020000104000050000000079
-:104FD000000000000000000D00000000240002603E
-:104FE0008F62000C04430003240200010A00042E17
-:104FF000AE000000AE0200008F8200388C4800082E
-:10500000A20000078F65000C8F64000430A3FFFF2F
-:105010000004240200852023308200FF0043102179
-:1050200024420005000230832CC20081A605000A3C
-:1050300014400005A2040004000000000000000D60
-:1050400000000000240002788F8500380E0005ABB8
-:10505000260400148F6200048F430108A602000892
-:105060003C021000006218241060000800000000DC
-:1050700097420104920300072442FFEC34630002CC
-:105080003045FFFF0A0003C3A20300079742010453
-:105090002442FFF03045FFFF960600082CC20013A3
-:1050A00054400005920300079202000734420001B9
-:1050B000A20200079203000724020001106200050B
-:1050C000240200031062000B8F8200380A0003E004
-:1050D00030C6FFFF8F8200383C04FFFF8C43000C7A
-:1050E0000064182400651825AC43000C0A0003E096
-:1050F00030C6FFFF3C04FFFF8C43001000641824FF
-:1051000000651825AC43001030C6FFFF24C2000222
-:1051100000021083A20200058F830038304200FF96
-:1051200000021080004328218CA800008CA20000FF
-:1051300024030004000217021443001200000000C0
-:10514000974201043C03FFFF010318243042FFFF94
-:10515000004610232442FFFE00624025ACA8000058
-:1051600092030005306200FF000210800050102101
-:10517000904200143042000F004310210A00041531
-:10518000A20200068CA40004974201049603000AC0
-:105190003088FFFF3042FFFF004610232442FFD635
-:1051A0000002140001024025ACA80004920200078E
-:1051B000920400052463002800031883006418216A
-:1051C00034420004A2030006A20200078F820004FA
-:1051D0002403FFFB3442000200431024AF8200048A
-:1051E000920300068F87003800031880007010219A
-:1051F0008C4400203C02FFF63442FFFF0082402432
-:1052000000671821AE04000CAC68000C9205000683
-:105210003C03FF7F8E02000C0005288000B0202197
-:105220003463FFFF010330249488002600A728215F
-:1052300000431024AE02000CAC860020AC88002491
-:10524000ACA8001024020010A74201402402000272
-:10525000A7400142A7400144A742014697420104EA
-:105260003C0400082442FFFEA7420148240200013A
-:105270000E00020CA742014A9603000A92020004A3
-:105280000043102124420002304200070002102394
-:10529000304200070E000235AE0200108F6200009F
-:1052A0003C0308008C63044424040010AF8200080F
-:1052B000974201043042FFFF2442FFFE00403821A4
-:1052C000000237C33C0208008C42044000671821EA
-:1052D0000067282B00461021004510213C010800E2
-:1052E000AC2304443C010800AC2204400A0005152C
-:1052F0000000000014A000050000000000000000F5
-:105300000000000D000000002400030A8F42017815
-:105310000440FFFE000000000E00023D27A4001420
-:105320001440000500408021000000000000000D36
-:1053300000000000240003118E020000544000060B
-:1053400092020007000000000000000D00000000B5
-:105350002400031C920200073042000410400005A4
-:105360008F8200042403FFFB344200020043102418
-:10537000AF8200048F620004044300089202000719
-:10538000920200068E03000CAE00000000021080A6
-:1053900000501021AC43002092020007304200046C
-:1053A000544000099602000A920200053C030001E5
-:1053B00000021080005010218C46001800C33021DC
-:1053C000AC4600189602000A9206000427710008F5
-:1053D0000220202100C2302124C600052605001429
-:1053E0000E0005AB00063082920400068F650004B3
-:1053F0003C027FFF00042080009120218C83000468
-:105400003442FFFF00A2282400651821AC83000469
-:105410009202000792040005920300043042000447
-:105420001040001496070008308400FF000420801C
-:10543000009120218C860004974201049605000A01
-:10544000306300FF3042FFFF004310210045102170
-:1054500030E3FFFF004310232442FFD830C6FFFF94
-:105460000002140000C23025AC8600040A0004C902
-:1054700092030007308500FF0005288000B1282135
-:105480008CA4000097420104306300FF3042FFFF0C
-:1054900000431021004710233C03FFFF008320241A
-:1054A0003042FFFF00822025ACA4000092030007D9
-:1054B0002402000110620006000000002402000324
-:1054C00010620011000000000A0004EC8E030010BE
-:1054D00097420104920300049605000A8E24000CF2
-:1054E00000431021004510212442FFF23C03FFFF3E
-:1054F000008320243042FFFF00822025AE24000CD0
-:105500000A0004EC8E030010974201049203000489
-:105510009605000A8E24001000431021004510213A
-:105520002442FFEE3C03FFFF008320243042FFFFB4
-:1055300000822025AE2400108E0300102402000AF1
-:10554000A7420140A74301429603000A92020004C9
-:105550003C04004000431021A7420144A7400146FB
-:1055600097420104A7420148240200010E00020CE8
-:10557000A742014A0E000235000000008F620000C1
-:105580009203000400002021AF820008974201042A
-:105590009606000A3042FFFF0062182100602821B1
-:1055A0003C0308008C6304443C0208008C42044025
-:1055B00000651821004410210065382B0047102198
-:1055C0003C010800AC2304443C010800AC22044028
-:1055D00092040004008620212484000A3084FFFF06
-:1055E0000E0001E900000000974401043084FFFF31
-:1055F0000E0001F7000000003C021000AF420178ED
-:105600000A0005878F82002014820027306200067E
-:1056100097420104104000673C02400030624000A5
-:105620001040000500000000000000000000000D18
-:1056300000000000240004208F4201780440FFFE97
-:1056400024020800AF42017824020008A74201406A
-:10565000A74001428F8200049743010430420001B9
-:10566000104000073070FFFF2603FFFE24020002F7
-:10567000A7420146A74301480A00053F2402000D46
-:10568000A74001462402000DA742014A8F62000094
-:1056900024040008AF8200080E0001E900000000A9
-:1056A0000A00051902002021104000423C0240007F
-:1056B00093620000304300F02402001010620005E5
-:1056C00024020070106200358F8200200A000588D5
-:1056D000244200018F620000974301043050FFFF15
-:1056E0003071FFFF8F4201780440FFFE3202000755
-:1056F00000021023304200072403000A2604FFFEA4
-:10570000A7430140A7420142A7440144A7400146E4
-:10571000A75101488F420108304200201440000286
-:105720002403000924030001A743014A0E00020CD0
-:105730003C0400400E000235000000003C07080059
-:105740008CE70444021110212442FFFE3C060800AD
-:105750008CC604400040182100E3382100001021CD
-:105760008F65000000E3402B00C2302126040008B2
-:1057700000C830213084FFFFAF8500083C010800DD
-:10578000AC2704443C010800AC2604400E0001E9AB
-:10579000000000000A000519022020210E00013B34
-:1057A000000000008F82002024420001AF82002010
-:1057B0003C024000AF4201380A00029200000000A3
-:1057C0003084FFFF30C6FFFF00052C0000A628250F
-:1057D0003882FFFF004510210045282B004510218D
-:1057E00000021C023042FFFF0043102100021C0295
-:1057F0003042FFFF004310213842FFFF03E0000862
-:105800003042FFFF3084FFFF30A5FFFF000018216A
-:1058100010800007000000003082000110400002EC
-:1058200000042042006518210A0005A10005284057
-:1058300003E000080060102110C0000624C6FFFF2E
-:105840008CA2000024A50004AC8200000A0005AB75
-:105850002484000403E000080000000010A00008F9
-:1058600024A3FFFFAC860000000000000000000041
-:105870002402FFFF2463FFFF1462FFFA2484000464
-:0858800003E000080000000035
-:04588800000000011B
-:04588C000A00002AE4
-:1058900000000000000000000000000D7478703669
-:1058A0002E322E31610000000602010000000000CF
-:1058B000000001360000EA60000000000000000067
-:1058C00000000000000000000000000000000000D8
-:1058D00000000000000000000000000000000000C8
-:1058E00000000000000000000000000000000016A2
-:1058F00000000000000000000000000000000000A8
-:105900000000000000000000000000000000000097
-:105910000000000000000000000000000000000087
-:10592000000000000000138800000000000005DCFB
-:105930000000000000000000100000030000000054
-:105940000000000D0000000D3C02080024423D68EC
-:105950003C0308002463401CAC4000000043202BA3
-:105960001480FFFD244200043C1D080037BD7FFC6D
-:1059700003A0F0213C100800261000A83C1C0800E1
-:10598000279C3D680E00044E000000000000000D42
-:1059900027BDFFB4AFA10000AFA20004AFA3000871
-:1059A000AFA4000CAFA50010AFA60014AFA700185D
-:1059B000AFA8001CAFA90020AFAA0024AFAB0028FD
-:1059C000AFAC002CAFAD0030AFAE0034AFAF00389D
-:1059D000AFB8003CAFB90040AFBC0044AFBF004817
-:1059E0000E000591000000008FBF00488FBC0044EE
-:1059F0008FB900408FB8003C8FAF00388FAE0034B5
-:105A00008FAD00308FAC002C8FAB00288FAA002404
-:105A10008FA900208FA8001C8FA700188FA6001444
-:105A20008FA500108FA4000C8FA300088FA2000484
-:105A30008FA1000027BD004C3C1B60048F7A5030C2
-:105A4000377B502803400008AF7A00008F86003C67
-:105A50003C0390003C0280000086282500A32025FE
-:105A6000AC4400203C0380008C67002004E0FFFE73
-:105A70000000000003E00008000000000A000070C1
-:105A8000240400018F85003C3C0480003483000125
-:105A900000A3102503E00008AC82002003E000080A
-:105AA000000010213084FFFF30A5FFFF10800007A9
-:105AB0000000182130820001104000020004204242
-:105AC000006518211480FFFB0005284003E0000852
-:105AD0000060102110C00007000000008CA2000030
-:105AE00024C6FFFF24A50004AC82000014C0FFFB05
-:105AF0002484000403E000080000000010A0000857
-:105B000024A3FFFFAC86000000000000000000009E
-:105B10002402FFFF2463FFFF1462FFFA24840004C1
-:105B200003E000080000000090AA00318FAB0010D5
-:105B30008CAC00403C0300FF8D680004AD6C00207D
-:105B40008CAD004400E060213462FFFFAD6D0024A5
-:105B50008CA700483C09FF000109C024AD6700285C
-:105B60008CAE004C0182C82403197825AD6F000467
-:105B7000AD6E002C8CAD0038314A00FFAD6D001CBD
-:105B800094A900323128FFFFAD68001090A70030C3
-:105B9000A5600002A1600004A167000090A300328C
-:105BA000306200FF00021982106000052405000128
-:105BB0001065000E0000000003E00008A16A00016B
-:105BC0008CD80028354A0080AD7800188CCF00149E
-:105BD000AD6F00148CCE0030AD6E00088CC4002C6C
-:105BE000A16A000103E00008AD64000C8CCD001C2C
-:105BF000AD6D00188CC90014AD6900148CC8002468
-:105C0000AD6800088CC70020AD67000C8CC2001482
-:105C10008C8300700043C82B132000070000000095
-:105C20008CC20014144CFFE400000000354A0080D0
-:105C300003E00008A16A00018C8200700A0000E6FF
-:105C4000000000009089003027BDFFF88FA8001CDD
-:105C5000A3A900008FA300003C0DFF8035A2FFFF29
-:105C60008CAC002C00625824AFAB0000A1000004F3
-:105C700000C05821A7A000028D06000400A0482102
-:105C80000167C8218FA50000008050213C18FF7FCC
-:105C9000032C20263C0E00FF2C8C0001370FFFFF49
-:105CA00035CDFFFF3C02FF0000AFC82400EDC0244B
-:105CB00000C27824000C1DC00323682501F870255C
-:105CC000AD0D0000AD0E00048D240024AFAD00002A
-:105CD000AD0400088D2C00202404FFFFAD0C000C47
-:105CE0009547003230E6FFFFAD06001091450048B1
-:105CF00030A200FF000219C2506000018D24003460
-:105D0000AD0400148D4700388FAA001827BD000885
-:105D1000AD0B0028AD0A0024AD07001CAD00002C1F
-:105D2000AD00001803E00008AD00002027BDFFE033
-:105D3000AFB20018AFB10014AFB00010AFBF001C7D
-:105D40009098003000C088213C0D00FF330F007F89
-:105D5000A0CF0000908E003135ACFFFF3C0AFF0061
-:105D6000A0CE000194A6001EA22000048CAB00145B
-:105D70008E29000400A08021016C2824012A4024DF
-:105D80000080902101052025A6260002AE240004F3
-:105D900026050020262400080E000092240600029A
-:105DA00092470030260500282624001400071E0014
-:105DB0000003160324060004044000032403FFFF2D
-:105DC000965900323323FFFF0E000092AE230010DD
-:105DD000262400248FBF001C8FB200188FB100143E
-:105DE0008FB0001024050003000030210A00009C41
-:105DF00027BD002027BDFFD8AFB1001CAFB00018F1
-:105E0000AFBF002090A900302402000100E0502123
-:105E10003123003F00A040218FB000400080882146
-:105E200000C04821106200148FA70038240B000521
-:105E300000A0202100C02821106B00130200302197
-:105E40000E000128000000009225007C30A4000212
-:105E50001080000326030030AE000030260300341B
-:105E60008FBF00208FB1001C8FB000180060102180
-:105E700003E0000827BD00280E0000A7AFB0001007
-:105E80000A00016F000000008FA3003C01002021E8
-:105E90000120282101403021AFA300100E0000EEA8
-:105EA000AFB000140A00016F000000003C06800043
-:105EB00034C20E008C4400108F850044ACA4002036
-:105EC0008C43001803E00008ACA300243C068000CB
-:105ED00034C20E008C4400148F850044ACA4002012
-:105EE0008C43001C03E00008ACA300249382000C48
-:105EF0001040001B2483000F2404FFF000643824AA
-:105F000010E00019978B00109784000E9389000D04
-:105F10003C0A601C0A0001AC0164402301037021AB
-:105F2000006428231126000231C2FFFF30A2FFFFC8
-:105F30000047302B50C0000E00E448218D4D000C6E
-:105F400031A3FFFF00036400000C2C0304A1FFF346
-:105F50000000302130637FFF0A0001A42406000105
-:105F600003E00008000000009784000E00E44821D0
-:105F70003123FFFF3168FFFF0068382B54E0FFF842
-:105F8000A783000E938A000D11400005240F000125
-:105F9000006BC023A380000D03E00008A798000E4B
-:105FA000006BC023A38F000D03E00008A798000E2C
-:105FB00003E000080000000027BDFFE8AFB00010BC
-:105FC0003C10800036030140308BFFFF93AA002B6A
-:105FD000AFBF0014A46B000436040E0094880016B2
-:105FE00030C600FF8FA90030A4680006AC65000829
-:105FF000A0660012A46A001AAC6700208FA5002CCE
-:10600000A4690018012020210E000198AC6500143D
-:106010003C021000AE0201788FBF00148FB0001058
-:1060200003E0000827BD00188F85000024840007C6
-:1060300027BDFFF83084FFF83C06800094CB008A2F
-:10604000316AFFFFAFAA00008FA90000012540239D
-:106050002507FFFF30E31FFF0064102B1440FFF7FC
-:1060600000056882000D288034CC400000AC10216F
-:1060700003E0000827BD00088F8200002486000787
-:1060800030C5FFF800A2182130641FFF03E00008AC
-:10609000AF8400008F87003C8F84004427BDFFB091
-:1060A000AFB70044AFB40038AFB1002CAFBF004869
-:1060B000AFB60040AFB5003CAFB30034AFB2003074
-:1060C000AFB000283C0B80008C860024AD670080B8
-:1060D0008C8A002035670E0035690100ACEA00109B
-:1060E0008C8800248D2500040000B821ACE800183D
-:1060F0008CE3001000A688230000A021ACE300146C
-:106100008CE20018ACE2001C122000FE00E0B0217E
-:10611000936C0008118000F400000000976F0010DD
-:1061200031EEFFFF022E682B15A000EF00000000EB
-:10613000977200103250FFFFAED000003C03800089
-:106140008C740000329300081260FFFD0000000014
-:1061500096D800088EC700043305FFFF30B5000154
-:1061600012A000E4000000000000000D30BFA040BD
-:106170002419004013F9011B30B4A000128000DF85
-:106180000000000093730008126000080000000087
-:10619000976D001031ACFFFF00EC202B1080000346
-:1061A00030AE004011C000D500000000A7850040BF
-:1061B000AF8700389363000802202821AFB1002088
-:1061C000146000F527B40020AF60000C978F0040EA
-:1061D00031F1400016200002240300162403000EB3
-:1061E00024054007A363000AAF650014938A0042A8
-:1061F0008F7000143155000100151240020248252D
-:10620000AF690014979F00408F78001433F9001095
-:1062100003194025AF6800149792004032470008E8
-:1062200010E0016E000000008F6700143C121000A7
-:106230003C11800000F27825AF6F001436230E0069
-:10624000946E000A3C0D81002406000E31CCFFFF45
-:10625000018D2025AF640004A36600029373000A39
-:106260003406FFFC266B0004A36B000A97980040DD
-:10627000330820001100015F000000003C05800091
-:1062800034A90E00979900409538000C978700407C
-:10629000001940423312C0003103000300127B0397
-:1062A00030F11000006F68250011720301AE602507
-:1062B000000C20C0A764001297930040936A000A64
-:1062C000001359823175003C02AA10212450003C71
-:1062D000A3700009953F000C33F93FFFA779001028
-:1062E00097700012936900090130F82127E5000238
-:1062F00030B900070019C02333080007A368000B5A
-:106300009371000997720012976F0010322700FFF7
-:106310008F910038978D004000F21821006F702196
-:1063200001C6602131A6004010C000053185FFFF85
-:1063300000B1102B3C128000104000170000982183
-:106340000225A82B56A0013E8FA500203C0480000A
-:10635000348A0E008D5300143C068000AD530010AB
-:106360008D4B001CAD4B0018AD4500008CCD0000DE
-:1063700031AC00081180FFFD34CE0E0095C300083B
-:1063800000A0882100009021A78300408DC6000452
-:1063900024130001AF860038976F001031F5FFFF1E
-:1063A0008E9F000003F1282310A0011FAE8500007E
-:1063B00093620008144000DD000000000E0001E7B9
-:1063C000240400108F900048004028213C02320035
-:1063D000320600FF000654000142F825260900019C
-:1063E000AF890048ACBF000093790009977800128C
-:1063F000936F000A332800FF3303FFFF01033821A6
-:1064000000076C0031EE00FF01AE6025ACAC00046B
-:106410008F840048978B0040316A20001140010AA8
-:10642000ACA4000897640012308BFFFF06400108FF
-:10643000ACAB000C978E004031C5000814A00002E0
-:1064400026280006262800023C1F800037E70E00A1
-:1064500094F900148CE5001C8F6700049378000207
-:106460003324FFFF330300FFAFA300108F6F00142E
-:10647000AFA800180E0001CBAFAF00142404001029
-:106480000E0001FB000000008E9200001640000587
-:10649000000000008F7800142403FFBF0303A02432
-:1064A000AF7400148F67000C00F5C821AF79000CA1
-:1064B0009375000816A00008000000001260000696
-:1064C000000000008F6800143C0AEFFF3549FFFE12
-:1064D0000109F824AF7F0014A37300088FA50020E2
-:1064E0000A00034F02202021AED100000A00022D35
-:1064F0003C03800014E0FF1E30BFA0400E0001905E
-:106500000000A0212E9100010237B02512C0001812
-:106510008FBF00488F87003C24170F0010F700D46E
-:106520003C0680008CD901780720FFFE241F0F0055
-:1065300010FF00F634CA0E008D56001434C7014017
-:1065400024080240ACF600048D49001C3C141000E5
-:10655000ACE90008A0E00012A4E0001AACE00020C2
-:10656000A4E00018ACE80014ACD401788FBF004858
-:106570008FB700448FB600408FB5003C8FB4003811
-:106580008FB300348FB200308FB1002C8FB0002851
-:1065900003E0000827BD00508F9100389788004025
-:1065A0003C1280000220A8213107004014E0FF7C4B
-:1065B00000009821977900108F9200383338FFFF40
-:1065C000131200A8000020210080A021108000F3F9
-:1065D00000A088211620FECE000000000A00031F44
-:1065E0002E9100013C0380008C6201780440FFFE84
-:1065F000240808008F860000AC6801783C03800006
-:10660000946D008A31ACFFFF01865823256AFFFF95
-:1066100031441FFF2C8900081520FFF900000000FD
-:106620008F8F0048347040008F83003C00E0A02131
-:10663000240E0F0025E70001AF87004800D030216D
-:10664000023488233C08800031F500FF106E0005FD
-:106650002407000193980042331300010013924075
-:1066600036470001001524003C0A0100008A482535
-:10667000ACC900008F82004830BF003630B9000836
-:10668000ACC200041320009900FF982535120E00BB
-:106690009650000A8F8700003C0F81003203FFFFF5
-:1066A00024ED000835060140006F60253C0E100007
-:1066B00031AB1FFF269200062405000EACCC002053
-:1066C000026E9825A4C5001AAF8B0000A4D2001852
-:1066D000162000083C1080008F89003C24020F0027
-:1066E0005122000224170001367300400E00018879
-:1066F0003C10800036060E008CCB0014360A014098
-:1067000002402021AD4B00048CC5001CAD450008A3
-:10671000A1550012AD5300140E0001983C15100055
-:10672000AE1501780A00035200000000936F0009C3
-:10673000976E0012936D000B31E500FF00AE202133
-:1067400031AC00FF008C80212602000A3050FFFF90
-:106750000E0001E7020020218F8600483C03410023
-:106760003C05800024CB0001AF8B0048936A0009F0
-:106770009769001230C600FF315F00FF3128FFFF2C
-:1067800003E8382124F900020006C4000319782523
-:1067900001E37025AC4E00008F6D000C34A40E0098
-:1067A000948B001401B26025AC4C00048C85001C55
-:1067B0008F670004936A00023164FFFF314900FFD4
-:1067C000AFA900108F680014AFB100180E0001CB04
-:1067D000AFA800140A0002FD02002021AF600004EF
-:1067E000A360000297980040330820001500FEA324
-:1067F00000003021A760001297840040936B000ACC
-:106800003C10800030931F0000135183014BA821DE
-:1068100026A20028A362000936090E00953F000C4D
-:106820000A000295A77F00108F70001436090040FF
-:106830000E000188AF6900140A0002C900000000C0
-:106840000A00034F000020210641FEFAACA0000C14
-:106850008CAC000C3C0D8000018D90250A0002EAF2
-:10686000ACB2000C000090210A0002C52413000104
-:10687000128000073C028000344B0E009566000831
-:1068800030D3004012600049000000003C06800048
-:106890008CD001780600FFFE34C50E0094B50010C0
-:1068A0003C03050034CC014032B8FFFF03039025C0
-:1068B000AD92000C8CAF0014240D20003C0410009D
-:1068C000AD8F00048CAE001CAD8E0008A1800012BC
-:1068D000A580001AAD800020A5800018AD8D0014A1
-:1068E000ACC401780A0003263C0680008F9F00009C
-:1068F000351801402692000227F9000833281FFFAF
-:10690000A71200180A000391AF8800003C02800023
-:1069100034450140ACA0000C1280001B34530E0023
-:1069200034510E008E370010ACB700048E240018CE
-:106930003C0B8000ACA400083570014024040040EA
-:10694000A20000128FBF0048A600001A8FB70044B3
-:10695000AE0000208FB60040A60000188FB5003CA6
-:10696000AE0400148FB400388FB300348FB20030FF
-:106970008FB1002C8FB000283C02100027BD0050C2
-:1069800003E00008AD6201788E660014ACA6000436
-:106990008E64001C0A00042A3C0B80000E0001904B
-:1069A0002E9100010A0003200237B02500000000EC
-:1069B0000000000D00000000240003690A0004012B
-:1069C0003C06800027BDFFD8AFBF00203C098000F7
-:1069D0003C1F20FFAFB200183C07600035320E00AC
-:1069E0002402001037F9FFFDACE23008AFB3001C01
-:1069F000AFB10014AFB00010AE59000000000000AD
-:106A00000000000000000000000000000000000086
-:106A10003C1800FF3713FFFDAE5300003C0B600431
-:106A20008D7050002411FF7F3C0E0002021178246B
-:106A300035EC380C35CD0109ACED4C18240A0009B1
-:106A4000AD6C50008CE80438AD2A0008AD2000146D
-:106A50008CE54C1C3106FFFF38C42F7100051E0267
-:106A60003062000F2486C0B310400007AF820008D8
-:106A70008CE54C1C3C09001F3528FC0000A818249C
-:106A8000000321C2AF8400048CF108083C0F5709B1
-:106A90002412F0000232702435F0001001D060267C
-:106AA00001CF68262DAA00012D8B0001014B38254E
-:106AB00050E00009A380000C3C1F601C8FF8000808
-:106AC00024190001A399000C33137C00A793001034
-:106AD000A780000EA380000DAF80004814C0000303
-:106AE000AF8000003C066000ACC0442C0E0005B92D
-:106AF0003C1080000E000F1A361101003C120800F5
-:106B000026523DD03C13080026733E508E030000F1
-:106B100038640001308200011440FFFC3C0B800A05
-:106B20008E2600002407FF8024C90240312A007FFE
-:106B3000014B402101272824AE060020AF880044E5
-:106B4000AE0500243C048000AF86003C8C8C0178AC
-:106B50000580FFFE24180800922F0008AC980178E9
-:106B6000A38F0042938E004231CD000111A0000F8F
-:106B700024050D0024DFF8002FF903011320001C69
-:106B8000000629C224A4FFF0000410420002314094
-:106B90000E00020200D2D8213C0240003C068000D8
-:106BA000ACC201380A0004A00000000010C5002398
-:106BB000240D0F0010CD00273C1F800837F90080FE
-:106BC00093380000240E0050330F00FF15EEFFF342
-:106BD0003C0240000E000A36000000003C0240006B
-:106BE0003C068000ACC201380A0004A0000000008E
-:106BF0008F83000400A3402B1500000B8F8B00082F
-:106C0000006B50212547FFFF00E5482B15200006AB
-:106C100000A36023000C19400E0002020073D8216B
-:106C20000A0004C43C0240000000000D0E000202F5
-:106C3000000000000A0004C43C0240003C1B0800A5
-:106C4000277B3F500E000202000000000A0004C42F
-:106C50003C0240003C1B0800277B3F700E000202F4
-:106C6000000000000A0004C43C0240003C0660042E
-:106C70003C09080025290104ACC9502C8CC85000DF
-:106C80003C0580003C02000235070080ACC7500084
-:106C90003C040800248415A43C0308002463155C0C
-:106CA000ACA50008ACA2000C3C010800AC243D607F
-:106CB0003C010800AC233D6403E00008240200010D
-:106CC00000A030213C1C0800279C3D683C0C0400BF
-:106CD0003C0B0002008B3826008C40262CE2000181
-:106CE0000007502B2D050001000A48803C030800D6
-:106CF00024633D60004520250123182110800003F6
-:106D000000001021AC6600002402000103E000082E
-:106D1000000000003C1C0800279C3D683C0B040060
-:106D20003C0A0002008A3026008B38262CC2000163
-:106D30000006482B2CE50001000940803C030800B8
-:106D400024633D60004520250103182110800005C3
-:106D5000000010213C0C0800258C155CAC6C000078
-:106D60002402000103E00008000000003C090002CA
-:106D70003C08040000883026008938262CC3000116
-:106D8000008028212CE40001008310251040000B16
-:106D9000000030213C1C0800279C3D683C0A800014
-:106DA0008D4E00082406000101CA6825AD4D00087B
-:106DB0008D4C000C01855825AD4B000C03E00008FC
-:106DC00000C010213C1C0800279C3D683C05800049
-:106DD0008CA6000C000420272402000100C4182403
-:106DE00003E00008ACA3000C3C0200021082000B80
-:106DF0003C0560003C070400108700030000000011
-:106E000003E00008000000008CA908D0240AFFFD60
-:106E1000012A402403E00008ACA808D08CA408D0C4
-:106E20002406FFFE0086182403E00008ACA308D067
-:106E30003C05601A34A600108CC3008027BDFFF803
-:106E40008CC50084AFA3000093A4000024020001BD
-:106E500010820003AFA5000403E0000827BD00086E
-:106E600093A7000114E0001497AC000297B8000249
-:106E70003C0F8000330EFFFC01CF6821ADA5000060
-:106E8000A3A000003C0660008CC708D02408FFFEC9
-:106E90003C04601A00E82824ACC508D08FA3000485
-:106EA0008FA200003499001027BD0008AF22008097
-:106EB00003E00008AF2300843C0B8000318AFFFC14
-:106EC000014B48218D2800000A00057DAFA8000471
-:106ED00027BDFFE8AFBF00103C1C0800279C3D68A1
-:106EE0003C0580008CA4000C8CA200043C03000232
-:106EF0000044282410A0000A00A318243C06040023
-:106F00003C0400021460000900A610241440000F85
-:106F10003C0404000000000D3C1C0800279C3D6858
-:106F20008FBF001003E0000827BD00183C020800D6
-:106F30008C423D600040F809000000003C1C080045
-:106F4000279C3D680A0005A68FBF00103C02080080
-:106F50008C423D640040F809000000000A0005ACC6
-:106F600000000000000411C003E0000824420240B9
-:106F70003C04080024843FB42405001A0A00009C45
-:106F80000000302127BDFFE0AFB000103C108000B2
-:106F9000AFBF0018AFB100143611010092220009F2
-:106FA0000E0005B63044007F8E3F00008F89003C04
-:106FB0003C0F008003E26021258800400049F82151
-:106FC000240DFF80310E00783198007835F90001EA
-:106FD00035F100020319382501D14825010D30246F
-:106FE00003ED5824018D2824240A00402404008045
-:106FF000240300C0AE0B0024AE000810AE0A081433
-:10700000AE040818AE03081CAE050804AE0708203D
-:10701000AE060808AE090824360909009539000CA7
-:107020003605098033ED007F3338FFFF001889C033
-:10703000AE110800AE0F0828952C000C8FBF001869
-:107040008FB10014318BFFFF000B51C0AE0A002C32
-:107050008CA400508FB000108CA3003C8D2700043E
-:107060008CA8001C8CA600383C0E800A01AE1021B2
-:1070700027BD0020AF820044AF840050AF8300548E
-:10708000AF87004CAF88005C03E00008AF8600606B
-:107090003C09080091293FD924A800023C051100B1
-:1070A00000093C0000E8302500C5182524820008AE
-:1070B000AC83000003E00008AC8000043C098000C1
-:1070C000352309009128010B906A00112402002841
-:1070D00000804821314700FF00A0702100C06821D6
-:1070E0003108004010E20002340C86DD240C080058
-:1070F0003C0A800035420A9A94470000354B0A9CAE
-:1071000035460AA030F9FFFFAD3900008D78000048
-:10711000354B0A8024040001AD3800048CCF0000F8
-:10712000AD2F00089165001930A300031064009092
-:1071300028640002148000AF240500021065009E40
-:10714000240F0003106F00B435450AA4240A080078
-:10715000118A0048000000005100003D3C0B8000F7
-:107160003C048000348309009067001230E200FF85
-:10717000004D7821000FC880272400013C0A8000C0
-:10718000354F090091E50019354C09808D8700289D
-:1071900030A300FF00031500004758250004C40079
-:1071A0003C19600001793025370806FFAD26000044
-:1071B000AD2800048DEA002C25280028AD2A0008FF
-:1071C0008DEC0030AD2C000C8DE50034AD250010A9
-:1071D0008DE400383C05800034AC093CAD2400143B
-:1071E0008DE3001CAD2300188DE70020AD27001CA7
-:1071F0008DE20024AD2200208DF9002834A2010088
-:10720000AD3900248D830000AD0E000434B90900AF
-:10721000AD0300008C47000C25020014AD070008E8
-:10722000932B00123C04080090843FD8AD0000105E
-:10723000317800FF030D302100064F0000047C0070
-:10724000012F702535CDFFFC03E00008AD0D000CCB
-:1072500035780900930600123C05080094A53FC844
-:1072600030C800FF010D5021000A60800A00063C72
-:10727000018520211500005B000000003C0808008B
-:1072800095083FCE3C06080094C63FC80106102171
-:107290003C0B80003579090093380011932A0019BE
-:1072A00035660A80330800FF94CF002A0008608208
-:1072B000314500FF978A0058000C1E00000524008D
-:1072C0003047FFFF006410250047C02501EA302148
-:1072D0003C0B4000030B402500066400AD28000075
-:1072E000AD2C0004932500183C030006252800144B
-:1072F00000053E0000E31025AD2200088F24002C7D
-:107300003C05800034AC093CAD24000C8F38001CD7
-:1073100034A20100254F0001AD3800108D8300001C
-:10732000AD0E000431EB7FFFAD0300008C47000C75
-:1073300034B90900A78B0058AD070008932B001241
-:107340003C04080090843FD825020014317800FFE7
-:10735000030D302100064F0000047C00012F702532
-:1073600035CDFFFCAD00001003E00008AD0D000CB2
-:107370003C02080094423FD23C05080094A53FC857
-:1073800035440AA43C07080094E73FC4948B0000EE
-:107390000045C8210327C023000B1C002706FFF26D
-:1073A00000665025AD2A000CAD200010AD2C001455
-:1073B0000A00063025290018354F0AA495E500007B
-:1073C000956400280005140000043C003459810035
-:1073D00000EC5825AD39000CAD2B00100A0006302A
-:1073E000252900143C0C0800958C3FCE0A0006812C
-:1073F000258200015460FF56240A080035580AA46B
-:107400009706000000061C00006C5025AD2A000CF9
-:107410000A000630252900103C03080094633FD27F
-:107420003C07080094E73FC83C0F080095EF3FC4B5
-:1074300094A400009579002800671021004F58237C
-:1074400000041C00001934002578FFEE00D87825D0
-:10745000346A8100AD2A000CAD2F0010AD2000145D
-:10746000AD2C00180A0006302529001C03E0000896
-:10747000240207D027BDFFE0AFB20018AFB100145F
-:10748000AFB00010AFBF001C0E00007C0080882150
-:107490008F8800548F87004C3C05800834B20080F0
-:1074A000011128213C10800024020080240300C028
-:1074B00000A72023AE0208183C068008AE03081C73
-:1074C00018800004AF850054ACC500048CC90004CA
-:1074D000AF89004C12200009360409800E0006F81E
-:1074E00000000000924C00278E0B007401825004B3
-:1074F000014B3021AE46000C360409808C8E001CF6
-:107500008F8F005C01CF682319A000048FBF001C7F
-:107510008C90001CAF90005C8FBF001C8FB20018D5
-:107520008FB100148FB000100A00007E27BD00202C
-:107530008F8600508F8300548F82004C3C0580085A
-:1075400034A40080AC860050AC83003C03E000080B
-:10755000ACA200043C0308008C63005427BDFFF874
-:10756000308400FF2462000130A500FF3C010800C8
-:10757000AC22005430C600FF3C0780008CE8017844
-:107580000500FFFE3C0C7FFFA3A400038FAA0000B0
-:10759000358BFFFF014B4824000627C001244025FE
-:1075A000AFA8000034E201009043000AA3A000024B
-:1075B0003C1980FFA3A300018FAF000030AE007F15
-:1075C0003738FFFF01F86024000E6E003C0A0020EF
-:1075D00034E50140018D5825354920002406FF80FF
-:1075E0003C04100027BD0008ACAB000CACA9001493
-:1075F000A4A00018A0A6001203E00008ACE40178E3
-:10760000308800FF30A700FF3C0380008C620178C7
-:107610000440FFFE3C0C8000358A0A008D4B0020A0
-:107620003584014035850980AC8B00048D490024E8
-:107630000007302B00061540AC890008A088001018
-:1076400090A3004CA083002D03E00008A480001844
-:1076500027BDFFE8308400FFAFBF00100E00075DBC
-:1076600030A500FF8F8300548FBF00103C068000C0
-:1076700034C50140344700402404FF903C02100010
-:1076800027BD0018ACA3000CA0A40012ACA70014E6
-:1076900003E00008ACC2017827BDFFE03C08800889
-:1076A000AFBF001CAFB20018AFB10014AFB00010F4
-:1076B000351000808E0600183C078000309200FFD5
-:1076C00000C72025AE0400180E00007C30B100FF7A
-:1076D00092030005346200080E00007EA20200053D
-:1076E000024020210E0007710220282102402021A3
-:1076F0008FBF001C8FB200188FB100148FB0001024
-:1077000024050005240600010A00073227BD0020D9
-:107710003C05800034A309809066000830C2000850
-:107720001040000F3C0A01013549080AAC890000ED
-:107730008CA80074AC8800043C07080090E73FD890
-:1077400030E5001050A00008AC8000083C0D800817
-:1077500035AC00808D8B0058AC8B00082484000C65
-:1077600003E00008008010210A0007B52484000C03
-:1077700027BDFFE83C098000AFB00010AFBF001488
-:107780003526098090C800092402000600A058216F
-:10779000310300FF35270900008080212405000403
-:1077A0001062007B2408000294CF005C3C0E0204AF
-:1077B00031EDFFFF01AE6025AE0C000090CA00085D
-:1077C00031440020108000080000000090C2004EEC
-:1077D0003C1F010337F90300305800FF031930251F
-:1077E00024050008AE06000490F9001190E600128E
-:1077F00090E40011333800FF0018708230CF00FF92
-:1078000001CF5021014B6821308900FF31AAFFFFD1
-:1078100039230028000A60801460002C020C4823E1
-:1078200090E400123C198000372F0100308C00FFDB
-:10783000018B1821000310800045F821001F8400EF
-:10784000360706FFAD270004373F090093EC00110F
-:1078500093EE0012372609800005C0828DE4000CEB
-:107860008CC5003431CD00FF01AB10210058182128
-:1078700000A4F8230008840000033F0000F0302536
-:1078800033F9FFFF318F00FC00D97025015820210A
-:1078900001E9682100045080ADAE000C0E00007CB0
-:1078A000012A80213C088008240B00043505008053
-:1078B0000E00007EA0AB0009020010218FBF001453
-:1078C0008FB0001003E0000827BD001890EC0011F5
-:1078D00090E300193C18080097183FCE318200FF52
-:1078E0000002F882307000FF001FCE0000103C0044
-:1078F0000327302500D870253C0F400001CF6825B4
-:107900003C198000AD2D0000373F090093EC0011B9
-:1079100093EE0012372F0100372609800005C08240
-:107920008DE4000C8CC5003431CD00FF01AB10217B
-:107930000058182100A4F8230008840000033F0029
-:1079400000F0302533F9FFFF318F00FC00D970259E
-:107950000158202101E9682100045080ADAE000CDF
-:107960000E00007C012A80213C088008240B0004C2
-:10797000350500800E00007EA0AB0009020010213A
-:107980008FBF00148FB0001003E0000827BD00185F
-:107990000A0007C72408001227BDFFD03C0380005F
-:1079A000AFB60028AFB50024AFB40020AFB10014CB
-:1079B000AFBF002CAFB3001CAFB20018AFB00010C7
-:1079C0003467010090E6000B309400FF30B500FFF3
-:1079D00030C200300000B021104000990000882122
-:1079E000346409809088000800082E0000051E03FA
-:1079F000046000C0240400048F8600543C01080089
-:107A0000A0243FD83C0C8000AD8000483C0480009E
-:107A1000348E010091CD000B31A5002010A000078D
-:107A20003C0780003493098092720008001286009F
-:107A300000107E0305E000C43C1F800834EC010008
-:107A4000918A000B34EB09809169000831440040B1
-:107A50000004402B3123000800C898231460000262
-:107A600024120003000090213C10800036180A8088
-:107A700036040900970E002C9083001190890012A3
-:107A800093050018307F00FF312800FF02481021C5
-:107A90000002C880930D0018033F782101F13021C6
-:107AA00030B100FF00D11821A78E00583C0108001A
-:107AB000A4263FCE3C010800A4233FD015A000021D
-:107AC000000000000000000D920B010B3065FFFF6D
-:107AD0003C010800A4233FD2316A00403C01080069
-:107AE000A4203FC83C010800A4203FC4114000026C
-:107AF00024A4000A24A4000B3091FFFF0E0001E72C
-:107B0000022020219206010B3C0C0800958C3FD2EC
-:107B1000004020210006698231A700010E00060105
-:107B20000187282100402021026028210E00060C38
-:107B3000024030210E0007A10040202116C000693C
-:107B4000004020219212010B3256004012C0000565
-:107B50003C0500FF8C93000034AEFFFF026E8024D2
-:107B6000AC9000000E0001FB022020213C0F080019
-:107B700091EF3FD831F10003122000163C1380082A
-:107B80008F8200543C09800835280080245F000162
-:107B9000AD1F003C3C0580088CB9000403E02021A7
-:107BA000033FC0231B000002AF9F00548CA40004BD
-:107BB0000E0006F8ACA400043C0780008CEB0074B7
-:107BC0003C04800834830080004B5021AC6A000CD8
-:107BD0003C138008367000800280202102A02821FA
-:107BE000A200006B0E00075D3C1480008F920054D1
-:107BF000368C0140AD92000C8F8600483C15100079
-:107C0000344D000624D60001AF9600488FBF002CEB
-:107C1000A18600128FB60028AD8D00148FB3001C12
-:107C2000AE9501788FB200188FB500248FB4002074
-:107C30008FB100148FB0001003E0000827BD0030A2
-:107C400034640980908F0008000F7600000E6E03E8
-:107C500005A00033347F090093F8001B241900109D
-:107C60003C010800A0393FD8331300021260FF67BF
-:107C70008F8600548F8200601446FF653C048000AC
-:107C80000E00007C000000003C0480083485008069
-:107C900090A8000924060016310300FF1066000DAD
-:107CA0000000000090AB00093C07080090E73FD8B7
-:107CB00024090008316400FF34EA00013C01080097
-:107CC000A02A3FD81089002F240C000A108C00280D
-:107CD0002402000C0E00007E000000000A00086074
-:107CE0008F8600540E0007B9024028210A0008AE12
-:107CF000004020213C0B8008356A00808D460054EE
-:107D00008CE9000C1120FF3DAF86005424070014BD
-:107D10003C010800A0273FD80A00085F3C0C800007
-:107D200090910008241200023C010800A0323FD8C4
-:107D3000323000201200000B241600018F86005400
-:107D40000A0008602411000837F800808F0200380C
-:107D5000AFE200048FF90004AF19003C0A00086C80
-:107D60003C0780008F8600540A000860241100043C
-:107D7000A0A200090E00007E000000000A000860BA
-:107D80008F860054240200140A00093AA0A20009B8
-:107D900027BDFFE8AFB000103C108000AFBF00145B
-:107DA00036020100904400090E00075D2405000121
-:107DB0003C0480089099000E34830080909F000F4F
-:107DC000906F00269089000A33F800FF00196E00BA
-:107DD0000018740031EC00FF01AE5025000C5A0071
-:107DE000014B3825312800FF36030140344560003F
-:107DF00000E830252402FF813C041000AC66000C32
-:107E00008FBF0014AC650014A0620012AE040178AC
-:107E10008FB0001003E0000827BD001827BDFFE861
-:107E2000308400FFAFBF00100E00075D30A500FFDB
-:107E30003C05800034A40140344700402406FF92F2
-:107E4000AC870014A08600128F8300548FBF0010EF
-:107E50003C02100027BD0018AC83000C03E00008B2
-:107E6000ACA2017827BDFFD8AFB00010308400FF6E
-:107E700030B000FF3C058000AFB10014AFBF002060
-:107E8000AFB3001CAFB20018000410C234A601004A
-:107E900032030002305100011460000790D2000943
-:107EA0003C098008353300809268000531070008DE
-:107EB00010E0000C308A0010024020210E000783E1
-:107EC00002202821240200018FBF00208FB3001C54
-:107ED0008FB200188FB100148FB0001003E00008BB
-:107EE00027BD00281540003434A50A008CB80024B2
-:107EF0008CAF0008130F004B000038213C0D8008A8
-:107F000035B30080926C006824060002318B00FFBC
-:107F1000116600843C06800034C201009263004C6C
-:107F200090590009307F00FF53F900043213007CA0
-:107F300010E00069000000003213007C5660005C15
-:107F40000240202116200009320D00013C0C800067
-:107F500035840100358B0A008D6500248C86000471
-:107F600014A6FFD900001021320D000111A0000E4F
-:107F7000024020213C188000371001008E0F000CB9
-:107F80008F8E005011EE0008000000000E00084324
-:107F9000022028218E19000C3C1F800837F0008039
-:107FA000AE190050024020210E0007710220282146
-:107FB0000A00098F240200013C0508008CA500641A
-:107FC00024A400013C010800AC2400641600000D4C
-:107FD00000000000022028210E000771024020212D
-:107FE000926E0068240C000231CD00FF11AC00221B
-:107FF000024020210E000941000000000A00098F04
-:10800000240200010E00007024040001926B002580
-:10801000020B30250E00007EA26600250A0009D35F
-:10802000022028218E6200188CDF00048CB9002405
-:1080300000021E0217F9FFB13065007F9268004C04
-:10804000264400013093007F12650040310300FF99
-:108050001464FFAB3C0D80082647000130F1007F1F
-:1080600030E200FF1225000B2407000100409021A0
-:108070000A00099C24110001240500040E000732A7
-:10808000240600010E000941000000000A00098FCB
-:10809000240200012405FF8002452024008590264B
-:1080A000324200FF004090210A00099C2411000187
-:1080B0000E000843022028213207003010E0FFA103
-:1080C00032100082024020210E0007830220282166
-:1080D0000A00098F240200018E6900180240202145
-:1080E00002202821012640250E000964AE680018F0
-:1080F0009264004C24050003240600010E000732A0
-:10810000308400FF0E0000702404000192710025ED
-:10811000021150250E00007EA26A00250A00098F78
-:10812000240200018E6F00183C18800002402021BC
-:1081300001F87025022028210E000771AE6E00188C
-:108140009264004C0A000A1B24050004324A008095
-:10815000394900801469FF6A3C0D80080A0009F45F
-:108160002647000127BDFFC0AFB000183C108000BB
-:10817000AFBF0038AFB70034AFB60030AFB5002C9A
-:10818000AFB40028AFB30024AFB200200E0005BE8C
-:10819000AFB1001C360201009045000B0E000976BD
-:1081A00090440008144000E78FBF00383C08800866
-:1081B00035070080A0E0006B3606098090C50000FE
-:1081C000240300503C17080026F73F9030A400FF1E
-:1081D0003C13080026733FA0108300033C1080006E
-:1081E0000000B82100009821241F00103611010062
-:1081F00036120A00361509808E5800248E34000489
-:108200008EAF00208F8C00543C010800A03F3FD867
-:1082100036190A80972B002C8EF60000932A00183E
-:108220000298702301EC68233C010800AC2E3FB497
-:108230003C010800AC2D3FB83C010800AC2C3FDCF1
-:10824000A78B005802C0F809315400FF30490002E2
-:10825000152000E930420001504000C49227000977
-:1082600092A9000831280008150000022415000317
-:108270000000A8213C0A80003543090035440A006B
-:108280008C8D00249072001190700012907F00116C
-:10829000325900FF321100FF02B110210002C080EC
-:1082A00033EF00FF0319B021028F702102D4602147
-:1082B00025CB00103C010800A4363FCE3C0108004D
-:1082C000AC2D3FE03C010800A42C3FD03C0108004D
-:1082D000A42B3FCC355601003554098035510E0092
-:1082E0008F8700548F89005C8E850020240800064B
-:1082F000012730233C010800AC283FD400A72823E5
-:1083000004C000B50000902104A000B300C5502BAC
-:10831000114000B5000000003C010800AC263FB849
-:108320008E6200000040F8090000000030460002A4
-:1083300014C0007400408021304B000155600011D2
-:108340008E6200043C0D08008DAD3FBC3C0EC000A9
-:108350003C04800001AE6025AE2C00008C9800002B
-:10836000330F000811E0FFFD00000000963F0008F9
-:1083700024120001A79F00408E390004AF990038F5
-:108380008E6200040040F80900000000020280250F
-:1083900032030002146000B3000000003C09080032
-:1083A00095293FC43C06080094C63FD03C0A08000B
-:1083B000954A3FC63C0708008CE73FBC0126702168
-:1083C0003C0308008C633FE03C08080095083FDA56
-:1083D00001CA20218ED9000C00E92821249F000227
-:1083E00000A878210067C02133E4FFFFAF99005057
-:1083F0003C010800AC383FE03C010800A42F3FC816
-:108400003C010800A42E3FD20E0001E7000000004E
-:108410008F8D0048004020213C010800A02D3FD94D
-:108420008E62000825AC0001AF8C00480040F809BE
-:10843000000000008F85005402A030210E00060CC1
-:10844000004020210E0007A1004020218E6B000C6F
-:108450000160F809004020213C0A0800954A3FD2FB
-:108460003C06080094C63FC6014648212528000264
-:108470000E0001FB3104FFFF3C0508008CA53FB452
-:108480003C0708008CE73FBC00A720233C01080004
-:10849000AC243FB414800006000000003C02080039
-:1084A0008C423FD4344B00403C010800AC2B3FD4FD
-:1084B000124000438F8E00448E2D00108F92004496
-:1084C000AE4D00208E2C0018AE4C00243C04080059
-:1084D00094843FC80E0006FA000000008F9F0054ED
-:1084E0008E6700103C010800AC3F3FDC00E0F8095B
-:1084F000000000003C1908008F393FB41720FF79B5
-:108500008F870054979300583C11800E321601005B
-:108510000E000729A633002C16C0004532030010B8
-:108520005460004C8EE50004320800405500001DE8
-:108530008EF000088EE4000C0080F80900000000B6
-:108540008FBF00388FB700348FB600308FB5002C46
-:108550008FB400288FB300248FB200208FB1001C8D
-:108560008FB0001803E0000827BD00408F86003C54
-:1085700036110E0000072E0000A62025AE04008054
-:108580008E4300208E500024AFA30010AE230014B1
-:108590008FB20010AE320010AE30001C0A000A7517
-:1085A000AE3000180200F809000000008EE4000C54
-:1085B0000080F809000000000A000B2E8FBF003871
-:1085C00024180001240F0001A5C00020A5D8002216
-:1085D0000A000B10ADCF00243C010800AC203FB8CE
-:1085E0000A000AA68E6200003C010800AC253FB8D4
-:1085F0000A000AA68E620000922400090E0007718C
-:10860000000028218FBF00388FB700348FB60030AC
-:108610008FB5002C8FB400288FB300248FB20020B8
-:108620008FB1001C8FB0001803E0000827BD004088
-:108630003C14800092950109000028210E00084397
-:1086400032A400FF320300105060FFB8320800402F
-:108650008EE5000400A0F809000000000A000B28C5
-:10866000320800405240FFA8979300588E340014FF
-:108670008F930044AE7400208E35001CAE7500242C
-:108680000A000B1F979300588F820014000421806A
-:1086900003E00008008210213C07800834E20080DB
-:1086A0009043006900804021106000093C040100F3
-:1086B0003C0708008CE73FDC8F83003000E3202379
-:1086C000048000089389001C14E3000301002021AA
-:1086D00003E00008008010213C04010003E00008D2
-:1086E000008010211120000B006738233C0D800012
-:1086F00035AC0980918B007C316A0002114000206A
-:108700002409003400E9702B15C0FFF1010020217D
-:1087100000E938232403FFFC00A3C82400E3C0249D
-:1087200000F9782B15E0FFEA0308202130C400038C
-:108730000004102314C0001430490003000030214D
-:1087400000A9782101E6702100EE682B11A0FFE05E
-:108750003C0401002D3800010006C82B010548210A
-:108760000319382414E0FFDA2524FFFC2402FFFC5F
-:1087700000A218240068202103E0000800801021D6
-:108780000A000B9E240900303C0C800035860980CD
-:1087900090CB007C316A00041540FFE924060004F8
-:1087A0000A000BAD000030213C0308008C63005C24
-:1087B0008F82001827BDFFE0AFBF0018AFB10014D3
-:1087C00010620005AFB00010000329C024A402808D
-:1087D000AF840014AF8300183C10800036020A00FA
-:1087E00094450032361101000E000B7F30A43FFF8C
-:1087F0008E240000241FFF803C1100800082C021D5
-:10880000031F60243309007F000CC9400329402561
-:10881000330E0078362F00033C0D1000010D50255B
-:1088200001CF5825AE0C002836080980AE0C080C84
-:10883000AE0B082CAE0A0830910300693C06800C90
-:108840000126382110600006AF8700348D09003CF6
-:108850008D03006C0123382318E000820000000023
-:108860003C0B8008356A00803C108000A140006904
-:10887000360609808CC200383C06800034C50A00E8
-:1088800090A8003C310C00201180001AAF8200300B
-:10889000240D00013C0E800035D10A00A38D001C80
-:1088A000AF8000248E2400248F850024240D00082E
-:1088B000AF800020AF8000283C010800A42D3FC6F7
-:1088C0003C010800A4203FDA0E000B830000302199
-:1088D0009228003C8FBF00188FB100148FB0001099
-:1088E00000086142AF82002C27BD002003E0000891
-:1088F0003182000190B80032240E0001330F00FFD6
-:10890000000F2182108E004124190002109900648A
-:1089100034C40AC03C03800034640A008C8F0024F5
-:1089200015E0001E34660900909F003024180005F1
-:1089300033F9003F1338004E240300018F860020D6
-:10894000A383001CAF860028AF8600243C0E800065
-:1089500035D10A008E2400248F850024240D0008C0
-:108960003C010800A42D3FC63C010800A4203FDACA
-:108970000E000B83000000009228003C8FBF0018FF
-:108980008FB100148FB0001000086142AF82002C3C
-:1089900027BD002003E00008318200018C8A000816
-:1089A0008C8B00248CD000643C0E800035D10A00F2
-:1089B000014B2823AF900024A380001CAF85002822
-:1089C0008E2400248F8600208F850024240D00082B
-:1089D0003C010800A42D3FC63C010800A4203FDA5A
-:1089E0000E000B83000000009228003C8FBF00188F
-:1089F0008FB100148FB0001000086142AF82002CCC
-:108A000027BD002003E000083182000190A2003061
-:108A10003051003F5224002834C50AC08CB00024D5
-:108A20001600002234CB09008CA600483C0A7FFFC8
-:108A30003545FFFF00C510243C0E8000AF820020AA
-:108A400035C509008F8800208CAD0060010D602BBA
-:108A500015800002010020218CA400600A000C2275
-:108A6000AF8400208D02006C0A000BFC3C068000E5
-:108A70008C8200488F8600203C097FFF3527FFFF4E
-:108A8000004788243C04800824030001AF9100289B
-:108A9000AC80006CA383001C0A000C30AF8600245D
-:108AA0008C9F00140A000C22AF9F00208D6200688A
-:108AB0000A000C6C3C0E800034C409808C89007064
-:108AC0008CA300140123382B10E0000400000000E8
-:108AD0008C8200700A000C6C3C0E80008CA200148A
-:108AE0000A000C6C3C0E80008F85002427BDFFE03F
-:108AF000AFBF0018AFB1001414A00008AFB0001051
-:108B00003C04800034870A0090E60030240200050F
-:108B100030C3003F106200B9348409008F910020F7
-:108B200000A080213C048000348E0A008DCD00041A
-:108B30003C0608008CC63FB831A73FFF00E6602B1B
-:108B40005580000100E03021938F001C11E0007877
-:108B500000D0282B349F098093F9007C3338000221
-:108B6000130000792403003400C3102B144000D9F3
-:108B70000000000000C3302300D0282B3C01080077
-:108B8000A4233FC414A0006E020018213C04080076
-:108B90008C843FB40064402B55000001006020210C
-:108BA0003C05800034A90A00912A003C3C010800E1
-:108BB000AC243FBC31430020146000030000482176
-:108BC00034AB0E008D6900188F88002C0128202BF3
-:108BD0001080005F000000003C0508008CA53FBC31
-:108BE00000A96821010D602B1180005C00B0702B82
-:108BF0000109382300E028213C010800AC273FBCD4
-:108C000012000003240AFFFC10B0008D3224000380
-:108C100000AA18243C010800A4203FDA3C01080007
-:108C2000AC233FBC006028218F840024120400067E
-:108C30003C0B80088D6C006C02002021AF9100205D
-:108C400025900001AD70006C8F8D00280085882371
-:108C5000AF91002401A52023AF8400281220000238
-:108C600024070018240700103C18800837060080ED
-:108C700090CF00683C010800A0273FD824070001DE
-:108C800031EE00FF11C700470000000014800018FB
-:108C9000000028213C06800034D1098034CD010039
-:108CA00091A600098E2C001824C40001000C860235
-:108CB0003205007F308B007F1165007F2407FF8025
-:108CC0003C19800837290080A124004C3C0808008A
-:108CD0008D083FD4241800023C010800A038401938
-:108CE000350F00083C010800AC2F3FD424050010CC
-:108CF0003C02800034440A009083003C307F002016
-:108D000013E0000500A02021240A00013C01080016
-:108D1000AC2A3FBC34A400018FBF00188FB10014EF
-:108D20008FB000100080102103E0000827BD002054
-:108D30003C010800A4203FC410A0FF9402001821A9
-:108D40000A000CC000C018210A000CB72403003030
-:108D50003C0508008CA53FBC00B0702B11C0FFA8DB
-:108D6000000000003C19080097393FC40325C021CA
-:108D70000307782B11E000072CAA00043C036000D5
-:108D80008C625404305F003F17E0FFE3240400428C
-:108D90002CAA00041140FF9A240400420A000D246A
-:108DA0008FBF00181528FFB9000000008CCA0018FA
-:108DB0003C1F800024020002015F1825ACC300188C
-:108DC00037F90A00A0C200689329003C240400047B
-:108DD00000A01021312800203C010800A0244019E7
-:108DE0001100000224050010240200013C010800CB
-:108DF000AC223FB40A000D1A3C0280008F88002884
-:108E00008C8900600109282B14A000020100882130
-:108E10008C9100603C048000348B0E008D6400183F
-:108E2000240A00010220282102203021A38A001CEC
-:108E30000E000B83022080210A000CA6AF82002CBA
-:108E40000004582312200007316400033C0E800008
-:108E500035C7098090ED007C31AC00041580001905
-:108E6000248F00043C010800A4243FDA3C1F0800C2
-:108E700097FF3FDA03E5C82100D9C02B1300FF6B31
-:108E80008F8400242CA6000514C0FFA324040042F4
-:108E900030A200031440000200A2182324A3FFFC08
-:108EA0003C010800AC233FBC3C010800A4203FDA91
-:108EB0000A000CE70060282100C770240A000D0D8D
-:108EC00001C720263C010800A42F3FDA0A000D78D4
-:108ED000000000003C010800AC203FBC0A000D234C
-:108EE000240400428F8300283C05800034AA0A0035
-:108EF0001460000600001021914700302406000590
-:108F000030E400FF108600030000000003E00008CA
-:108F100000000000914B0048316900FF000941C288
-:108F20001500FFFA3C0680083C04080094843FC406
-:108F30003C0308008C633FDC3C1908008F393FBCC0
-:108F40003C0F080095EF3FDA0064C0218CCD00048F
-:108F50000319702101CF602134AB0E00018D28234D
-:108F600018A0001D00000000914F004C8F8C0034B1
-:108F7000956D001031EE00FF8D89000401AE3023A5
-:108F80008D8A000030CEFFFF000E29000125C82188
-:108F900000003821014720210325182B0083C02120
-:108FA000AD990004AD980000918F000A01CF6821AF
-:108FB000A18D000A956500128F8A0034A54500082E
-:108FC000954B003825690001A54900389148000DEE
-:108FD00035070008A147000D03E00008000000006D
-:108FE00027BDFFD8AFB000189388001C8FB00014C5
-:108FF0003C0A80003C197FFF8F8700243738FFFF31
-:10900000AFBF0020AFB1001C355F0A000218182462
-:1090100093EB003C00087FC03C02BFFF006F60255F
-:109020002CF000013449FFFF3C1F08008FFF3FDC9C
-:109030008F9900303C18080097183FD20189782496
-:10904000001047803C07EFFF3C05F0FF01E81825C2
-:109050003C1180003169002034E2FFFF34ADFFFF96
-:10906000362E098027A500102406000203F960238C
-:10907000270B0002354A0E00006218240080802170
-:1090800015200002000040218D48001CA7AB0012F3
-:10909000058000392407000030E800FF00083F0089
-:1090A000006758253C028008AFAB0014344F0080A5
-:1090B00091EA00683C08080091083FD93C09DFFFAD
-:1090C000352CFFFF000AF82B3C02080094423FCCED
-:1090D000A3A80011016CC024001FCF40031918255C
-:1090E0008FA70010AFA300143C0C0800918C3FDB4D
-:1090F000A7A200168FAB001400ED48243C0F01001E
-:109100003C0A0FFF012FC82531980003355FFFFF90
-:10911000016D40243C027000033F382400181E00FB
-:1091200000E2482501037825AFAF0014AFA9001075
-:1091300091CC007C0E000092A3AC0015362D0A00E5
-:1091400091A6003C30C400201080000626020008D2
-:109150003C11080096313FC8262EFFFF3C01080055
-:10916000A42E3FC88FBF00208FB1001C8FB0001805
-:1091700003E0000827BD00288F8B002C010B502B2B
-:109180005540FFC5240700010A000E0430E800FF27
-:109190009383001C3C02800027BDFFD834480A009E
-:1091A00000805021AFBF002034460AC001002821B2
-:1091B0001060000E3444098091070030240B000534
-:1091C0008F89002030EC003F118B000B000038210C
-:1091D000AFA900103C0B80088D69006CAFAA001885
-:1091E0000E00015AAFA90014A380001C8FBF0020FD
-:1091F00003E0000827BD00288D1F00483C18080028
-:109200008F183FBC8F9900283C027FFF8D080044D7
-:109210003443FFFFAFA900103C0B80088D69006C40
-:1092200003E370240319782101CF682301A83821B2
-:10923000AFAA00180E00015AAFA900140A000E5878
-:10924000A380001C3C05800034A60A0090C7003CA7
-:109250003C06080094C63FDA3C0208008C423FD42A
-:1092600030E30020000624001060001E0044382572
-:109270003C0880083505008090A300680000482164
-:109280002408000100002821240400013C0680007D
-:109290008CCD017805A0FFFE34CF0140ADE8000879
-:1092A0003C0208008C423FDCA5E50004A5E4000672
-:1092B000ADE2000C3C04080090843FD93C038008D8
-:1092C00034790080A1E40012ADE70014A5E900188C
-:1092D0009338004C3C0E1000A1F8002D03E000086C
-:1092E000ACCE017834A90E008D28001C3C0C08007F
-:1092F0008D8C3FBC952B0016952A001401864821C1
-:109300003164FFFF0A000E803145FFFF3C048000FE
-:1093100034830A009065003C30A200201040001900
-:1093200034870E0000004021000038210000202179
-:109330003C0680008CC901780520FFFE34CA01403C
-:1093400034CF010091EB0009AD4800083C0E080045
-:109350008DCE3FDC240DFF91240C00403C08100012
-:10936000A5440004A5470006AD4E000CA14D001217
-:10937000AD4C0014A5400018A14B002D03E00008DF
-:10938000ACC801788CE8001894E6001294E4001050
-:1093900030C7FFFF0A000EA93084FFFF3C048000A5
-:1093A00034830A009065003C30A200201040002762
-:1093B00027BDFFF82409000100003821240800011E
-:1093C0003C0680008CCA01780540FFFE3C0280FF0D
-:1093D00034C40100908D00093C0C0800918C4019A8
-:1093E000A3AD00038FAB00003185007F3459FFFF30
-:1093F00001665025AFAA00009083000AA3A00002D6
-:1094000000057E00A3A300018FB8000034CB01400B
-:10941000240C30000319702401CF6825AD6D000CB9
-:1094200027BD0008AD6C0014A5600018AD690008E8
-:10943000A56700042409FF80A56800063C08100009
-:10944000A169001203E00008ACC8017834870E005F
-:109450008CE9001894E6001294E4001030C8FFFF75
-:109460000A000ECD3087FFFF27BDFFE0AFB100142B
-:109470003C118000AFB00010AFBF001836380A00B2
-:10948000970F0032363001000E000B7F31E43FFFB2
-:109490008E0E0000240DFF803C04200001C25821E4
-:1094A000016D6024000C4940316A007F012A40258B
-:1094B000010438253C048008AE270830348600803B
-:1094C00090C500682403000230A200FF104300048E
-:1094D0008F9F00208F990024AC9F0068AC99006496
-:1094E0008FBF00188FB100148FB0001003E0000888
-:1094F00027BD00203C0A0800254A3A803C090800A4
-:1095000025293B103C08080025082F1C3C070800B3
-:1095100024E73BDC3C06080024C639043C0508006F
-:1095200024A536583C0408002484325C3C0308001F
-:10953000246339B83C020800244237543C01080037
-:10954000AC2A3F983C010800AC293F943C0108003C
-:10955000AC283F903C010800AC273F9C3C01080030
-:10956000AC263FAC3C010800AC253FA43C01080000
-:10957000AC243FA03C010800AC233FB03C010800F4
-:0C958000AC223FA803E00008000000003F
-:04958C008000094012
-:109590008000090080080100800800808008000029
-:1095A000800E0000800800808008000080000A8093
-:0C95B00080000A00800009808000090093
-:00000001FF
-/*
- * This file contains firmware data derived from proprietary unpublished
- * source code, Copyright (c) 2004 - 2009 Broadcom Corporation.
- *
- * Permission is hereby granted for the distribution of this firmware data
- * in hexadecimal or equivalent format, provided this copyright notice is
- * accompanying it.
- */
diff --git a/firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex b/firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex
deleted file mode 100644
index dcc443e210f5..000000000000
--- a/firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex
+++ /dev/null
@@ -1,366 +0,0 @@
-:1000000000000000000008F800000058000000098F
-:1000100000000000000000000000000000000000E0
-:1000200000000000000000000000000000000000D0
-:1000300000000CF000000950000000050000000066
-:1000400000000000000000000000000000000000B0
-:080050000000000000000000A8
-:0800580000000010B180000659
-:100060000000001F0106000F000000080500FFFF50
-:10007000000000180002000000000008050000FF5A
-:10008000000000180002000000000008AC000001A1
-:1000900000000008078000000000000C2F80000115
-:1000A000000000002B000000000000002B8000007A
-:1000B0000000001091E1000200000008AC00000107
-:1000C00000000010203F003B00000010213F000313
-:1000D0000000001020BF0015000000188000FFFD88
-:1000E0000000000C1F800002000000188000FFF9D3
-:1000F00000000008B1000001000000082C8000B0E2
-:10010000000000082D000008000000082D800001FC
-:10011000000000188000003C0000000B2FDF0002F0
-:100120000000000C1F800002000000002C070000EF
-:100130000000001091DE0000000000188000FFEFBA
-:100140000000000B2FDF00020000000C1F800000E9
-:10015000000000002C0700000000001091DE0000ED
-:10016000000000188000FFEA0000000C1F80000261
-:10017000000000188000FFE80000000802240025AD
-:1001800000000018000400000000001880000000BB
-:10019000000000188000001B0000001880000042D2
-:1001A000000000188000000000000018800000001F
-:1001B000000000188000000000000018800000000F
-:1001C00000000018800000000000001880000000FF
-:1001D00000000018800000000000001880000000EF
-:1001E00000000018800000000000001880000000DF
-:1001F000000000188000008E000000188000000041
-:1002000000000018800000000000001880000000BE
-:1002100000000018800000000000001880000000AE
-:10022000000000188000000000000018800000009E
-:10023000000000188000008D00000018800000B74A
-:10024000000000188000008400000018800000DA20
-:10025000000000188000002B000000188000000043
-:10026000000000188000006B0000001091D4000016
-:100270000000000C298000010000000C1F8000011C
-:10028000000000082A0000020000000807800000AB
-:10029000000000188000FFC4000000080380010077
-:1002A00000000010B73C0E000000001880000000A5
-:1002B000000000180002000000000000068200009C
-:1002C00000000010B18F000400000010B18F140373
-:1002D000000000082A0000010000001091D4000076
-:1002E000000000000780140000000018000D00004E
-:1002F00000000000050200000000001091DE000078
-:1003000000000018000A0000000000000682000043
-:100310000000001091DE0000000000090561FFFFF1
-:1003200000000010918A00020000000830E1FFFF89
-:10033000000000188000FFA9000000010561140002
-:1003400000000010918A000200000008B0E10001E6
-:1003500000000018000D00000000000006820000F0
-:100360000000001091DE0000000000090562FFFFA0
-:1003700000000010918A0002000000083162FFFFB7
-:10038000000000188000FF9F0000000105621400BB
-:1003900000000010918A000200000008B162000114
-:1003A00000000018000D000000000010B1A0B01304
-:1003B0000000000B2FDF0002000000002C200000D6
-:1003C000000000082C800000000000082D00000044
-:1003D0000000001091D40000000000080500005546
-:1003E000000000188000FFDB000000082D80011CC9
-:1003F00000000010001F0000000000188000FFE255
-:100400000000000F476000080000000F060E00010A
-:10041000000000000F580000000000000A64000007
-:10042000000000000AE50000000000090B66FFFF65
-:10043000000000000D6100000000001880000015A1
-:100440000000000F476000080000000B2FDF0002D3
-:10045000000000082C800000000000082D000000B3
-:100460000000001091D40000000000082D80011C45
-:100470000000000F060E000100000010001F000029
-:10048000000000000F580000000000188000FFD09E
-:10049000000000000A640000000000000AE50000FF
-:1004A000000000090B66FFFF000000000D61000066
-:1004B00000000000026200000000000002E00000F6
-:1004C0000000000B2FDF00020000000030050000DC
-:1004D000000000003104000000000000309A00001D
-:1004E000000000100060000A00000008051600016E
-:1004F00000000010BA9A140300000000030000007E
-:100500000000001880000006000000188000FF6C4A
-:1005100000000010B60614040000000803060001E5
-:10052000000000082A000001000000188000FF7190
-:10053000000000000C961800000000090C99FFFF55
-:1005400000000004CC99340000000010BA992C027D
-:10055000000000080F8000000000000C298000014E
-:100560000000000C295200010000000C295200007C
-:100570000000000822800002000000080200000EB7
-:10058000000000080280001A00000010B1C40A0236
-:1005900000000008020000030000000C1F800001A2
-:1005A000000000002ADF0000000000002A00080010
-:1005B000000000188000FF600000000B2FDF000229
-:1005C0000000001091D40000000000082A00000183
-:1005D000000000002C2000000000001091D400005A
-:1005E000000000082C800000000000082D00000022
-:1005F000000000082D80011C000000188000FF9FF3
-:10060000000000082C800006000000082D000006F5
-:1006100000000000308000000000000031000000F9
-:10062000000000082D8000060000000C2980000159
-:100630000000000C1F8000010000001091DE00008F
-:10064000000000002ADF0000000000082A0000105F
-:100650000000000807800000000000188000FF4B29
-:100660000000001091D4000000000008050000AA5E
-:10067000000000188000FF890000000C29800001A4
-:100680000000000C1F800001000000082A00000983
-:10069000000000188000FF440000001091D400000A
-:1006A0000000000805000055000000188000FF82CF
-:1006B0000000001091A0B00200000010B1E6620737
-:1006C0000000000B2FDF0002000000002C310000B2
-:1006D000000000092CB1007F000000082CD90000A8
-:1006E000000000082D000000000000082D80010D12
-:1006F00000000010B1A8000600000010205F0000FC
-:10070000000000002C200000000000002CA70000CA
-:10071000000000082D000010000000082D800108D6
-:10072000000000188000FF7A00000010B1A6001041
-:1007300000000010001F00000000000F0F30000735
-:10074000000000000A600000000000000AE1000054
-:100750000000000F4B620008000000090B1600FFAC
-:10076000000000000D620000000000090D1A00FFEB
-:1007700000000010073000030000000C0D1A0008F4
-:100780000000000C0B1600080000000F4CE30018DE
-:10079000000000000C992C0000000004CC993400EB
-:1007A000000000080F8000000000000C29800001FC
-:1007B0000000000033310000000000082200001695
-:1007C000000000002ADF0000000000082A00000CE2
-:1007D00000000010009F0000000000002C2000001E
-:1007E0000000000C1F800001000000188000FF19AD
-:1007F0000000001091D4000000000008050000AACD
-:10080000000000188000FF570000000F472200087A
-:1008100000000009070E000F00000008070E000886
-:1008200000000008028000010000000702851C0093
-:1008300000000008828500010000000002854C00D5
-:100840000000000742851C0000000003C3AA5200FC
-:100850000000000003B10E00000000074B071C0061
-:100860000000000F0F3000070000000F0A96000381
-:10087000000000000A955C00000000004A005A00D9
-:10088000000000000C960A00000000090C99FFFF10
-:10089000000000080D00FFFF00000010BA992C02B4
-:1008A000000000080F80000500000010B1A800083B
-:1008B00000000010205F00000000000B2FDF00028E
-:1008C000000000002C200000000000002CA7000009
-:1008D000000000082D000010000000082D80010815
-:1008E000000000188000FF420000000C2980000179
-:1008F00000000010001F00000000000C1F8000011D
-:10090000000000002ADF0000000000082A00000D9F
-:10091000000000188000FEF40000001091D40000D8
-:100920000000000805000055000000188000FF329C
-:100930000000000C298000010000000C1F80000155
-:10094000000000082A000007000000188000FEEDEB
-:1009500000000010B18000040000001F0106000F1D
-:1009600000000008050000FF000000180002000061
-:10097000000000002A00000000000010B1D40000B8
-:100980000000001091DE0000000000102053000065
-:1009900000000010001F0000000000002F80AA00CF
-:1009A0000000000C29800001000000080254000E25
-:1009B000000000002C400000000000000F4000007C
-:1009C0000000001800040000000000188000001162
-:1009D000000000188000001200000018800000389D
-:1009E00000000018800000DF00000018800000DE1A
-:1009F00000000018800000DD00000018800000DD0D
-:100A0000000000188000000000000018800000F6C0
-:100A100000000018800000D90000001880000000CD
-:100A200000000018800000FA000000188000014853
-:100A3000000000188000005A00000018800000C468
-:100A400000000018800000C500000018800000D2DF
-:100A5000000000002A000000000000188000FFE4F1
-:100A6000000000002A0000000000000C29800000A7
-:100A7000000000188000FFE10000001800020000E4
-:100A8000000000000502000000000010B99A2C21AF
-:100A900000000010205F0000000000002C1E00007D
-:100AA000000000082C800006000000082D00000651
-:100AB000000000082D80010200000000000000007E
-:100AC0000000001091DE0000000000000D61000039
-:100AD00000000018000A00000000000005020000ED
-:100AE00000000010B99A2C1600000010205F0000D2
-:100AF0000000000009D80000000000002C1E0000CB
-:100B0000000000082C8000B2000000082D00000A40
-:100B1000000000082D80010200000000000000001D
-:100B20000000001091DE0000000000000D620000D7
-:100B3000000000002C13000000000018000A000054
-:100B4000000000000502000000000010B99A2C0906
-:100B500000000010205F0000000000002C1E0000BC
-:100B6000000000082C800006000000082D00006A2C
-:100B7000000000082D8001020000000000000000BD
-:100B80000000001091DE0000000000000D7A00005F
-:100B900000000018000A0000000000002A00000009
-:100BA0000000000822000001000000000D610000AC
-:100BB0000000001021C2002400000010B1C6000295
-:100BC00000000010234200A2000000090B66FFFF96
-:100BD00000000010BA9A2C20000000000A640000F7
-:100BE000000000000AE50000000000000C0000000A
-:100BF000000000000B800000000000080CC600127E
-:100C0000000000188000FFD0000000080F800003E3
-:100C1000000000000000000000000010009F000025
-:100C2000000000082711001200000000669000007C
-:100C300000000010B198000300000010001F000029
-:100C4000000000080F8000040000000822000003DC
-:100C5000000000082C80000C000000082D00000C93
-:100C600000000010009F00000000001091C6000569
-:100C700000000010001F000000000010BA9A2C03B2
-:100C8000000000080F800004000000188000FFFD35
-:100C900000000000259600000000000C29800000E4
-:100CA0000000000032140000000000003295000037
-:100CB0000000000573662C000000000031E32E00E8
-:100CC000000000082D800010000000188000FF9632
-:100CD00000000000230000000000000925E6FFFFDF
-:100CE000000000082200000B0000000C6952000008
-:100CF0000000000C29800000000000188000FF9018
-:100D0000000000002A000000000000082C800040C5
-:100D1000000000082D000020000000082D80011CAC
-:100D200000000008220000010000001091DE000019
-:100D30000000000F42EA001000000010004F000405
-:100D400000000010B746920000000008024900129F
-:100D500000000010B5840A00000000000D610000D2
-:100D600000000010BA663457000000088305001226
-:100D700000000010004F00020000000003490000C6
-:100D80000000000183068C000000000083C60C00F8
-:100D900000000010B1870013000000000B6E00007F
-:100DA000000000090569FFFF00000010918A0002A1
-:100DB0000000000834E9FFFF000000188000FF7504
-:100DC000000000010569140000000010918A000273
-:100DD00000000008B4E9000100000010BAE92C4846
-:100DE0000000000086692C000000000002000000E6
-:100DF0000000000902EAFFFF00000010000C0002E2
-:100E00000000000002040A000000000F460C000170
-:100E10000000000F0285000100000010918C01FC11
-:100E200000000010B7040E3F000000000D6100003C
-:100E3000000000000A640000000000000AE5000055
-:100E4000000000090B66FFFF000000000C0000001E
-:100E5000000000000B800000000000080C8600125B
-:100E6000000000080F8000030000000C2952000061
-:100E700000000010009F0000000000082711001271
-:100E80000000000066900000000000002306000043
-:100E900000000010B198000500000010001F0000C5
-:100EA000000000080F8000040000000000000000A7
-:100EB00000000010001F00000000000032140000BD
-:100EC00000000000329500000000000031E32E0019
-:100ED0000000000573662C0000000000259600004D
-:100EE00000000010B18700160000000C29800000EF
-:100EF0000000000F0F6B0007000000000D690000EC
-:100F0000000000000A6C0000000000000AED000074
-:100F1000000000000B6E0000000000000B800000CD
-:100F2000000000000C870000000000080F80000394
-:100F300000000010205300000000000C6952000166
-:100F400000000010001F00000000000022C58C00FF
-:100F500000000000231B000000000000271100001B
-:100F6000000000002690000000000010B8170E03DB
-:100F70000000000C29800000000000188000FFF62F
-:100F800000000010B1980002000000080F8000046B
-:100F9000000000082200001A000000082C80000C4D
-:100FA000000000082D00000C000000082D8000103B
-:100FB00000000010001F0000000000000D6E000087
-:100FC00000000003E7CF34000000000C298000007F
-:100FD0000000001091DE000000000010B187000743
-:100FE00000000000361400000000000036950000EC
-:100FF0000000000037160000000000082C800050A0
-:10100000000000082D000030000000082D80000CBA
-:10101000000000188000FF2D0000000023000000E9
-:101020000000000925E6FFFF000000000B6E000035
-:1010300000000003E7CF2C00000000082200001B86
-:101040000000000C695200000000000C2980000024
-:10105000000000188000FF25000000002A000000AA
-:10106000000000188000FF23000000002A0000009C
-:101070000000000C298000000000001091DE00003C
-:10108000000000082C80001A000000082D00001A43
-:101090000000000573660000000000082D800002BB
-:1010A00000000000318000000000001091DE000010
-:1010B000000000082C80000C000000082D00000C2F
-:1010C000000000082D800004000000188000FF16BA
-:1010D0000000001880000000000000188000FF14CD
-:1010E000000000002A00000000000010001F0000A7
-:1010F000000000000F008000000000080F800007C3
-:10110000000000188000001B00000000280A0000FA
-:101110000000000005020000000000082200000995
-:1011200000000000290000000000000F65680010AA
-:1011300000000000248A000000000003F66C940008
-:1011400000000010B972A0040000000C73E7001941
-:101150000000000C21420004000000003CF80000E8
-:101160000000000C29800000000000102053000047
-:1011700000000008220000080000000C614200048A
-:1011800000000018000A0000000000000502000036
-:101190000000000C6142000000000010014200034A
-:1011A0000000000C33E7001D0000000C614200024B
-:1011B00000000018000A0000000000002A000000E3
-:1011C00000000010001F00000000000F0F47000784
-:1011D000000000080F8000080000000C29800000BB
-:1011E00000000010009F0000000000188000FEF2C8
-:1011F0000000000033510000000000002A00000041
-:1012000000000010B1C600230000000F0F500007BF
-:10121000000000000A600000000000000AE1000079
-:101220000000000F4B620008000000090B1600FFD1
-:101230000000000F4C620010000000000D62000072
-:10124000000000090D1A00FF000000100750000305
-:101250000000000C0D1A00080000000C0B1600081E
-:10126000000000000CC60000000000000B80000021
-:101270000000000006980000000000080F80000336
-:101280000000001006C200040000000C290000024B
-:1012900000000010264200020000000C295200034A
-:1012A000000000082200000100000010009F000064
-:1012B00000000000231B00000000000027111A009E
-:1012C00000000000669000000000000C29520000A1
-:1012D00000000010B19732090000000C29800000C6
-:1012E00000000000069800000000001020530000DD
-:1012F0000000000C295200030000000022C58C00F1
-:1013000000000010001F0000000000080F80000314
-:10131000000000188000FFF300000010B1C80013A7
-:1013200000000010B1C600030000000C298000007E
-:1013300000000010205300000000000C29520000A3
-:101340000000000C295200030000001006C2000239
-:101350000000000C295200020000000022C58C0091
-:1013600000000000276500000000000026E40000E7
-:10137000000000082200001600000010B1C60003A3
-:10138000000000002348000000000010B1800005AC
-:1013900000000000234800000000000C298000002D
-:1013A0000000000F0F50000700000018800000121E
-:1013B00000000008220000160000000C2980000038
-:1013C0000000000030140000000000003095000014
-:1013D0000000001007500003000000090B1600FF7A
-:1013E000000000090D1A00FF0000000F3116000870
-:1013F000000000003162340000000003F1623000A0
-:1014000000000010205F0000000000002C510000D0
-:10141000000000092CD1007F000000082CD900003A
-:10142000000000082D000000000000082D80000CC6
-:1014300000000000000000000000001091DE00002D
-:101440000000001005C20004000000080F80000723
-:10145000000000003300000000000010009F0000AA
-:10146000000000188000FEA3000000002A00000019
-:101470000000000F0F50000700000010B1C6002D43
-:101480000000000F4742000800000009070E000F8F
-:1014900000000008070E000800000010001F0000F8
-:1014A00000000008090000010000000709121C00EC
-:1014B00000000003CBCA9200000000000B97A200BE
-:1014C0000000000742171C00000000000B04000091
-:1014D0000000000F0A840003000000000A959C0031
-:1014E000000000004A009A0000000008821200017B
-:1014F000000000010C170800000000000C978C0091
-:101500000000000002180000000000080D00FFFFAE
-:10151000000000080F8000060000000C29000000F9
-:101520000000001006C200040000000C2952000256
-:1015300000000010264200020000000C29520003A7
-:10154000000000082200000100000010009F0000C1
-:1015500000000010B197320C00000000231B0000B7
-:101560000000000027110800000000006690000045
-:101570000000000C2980000000000000021800009C
-:1015800000000010205300000000000C295200034E
-:101590000000000022C5360000000010001F0000FF
-:1015A000000000080F800006000000188000FFF413
-:1015B00000000000231B00000000000027110800AD
-:1015C000000000006690000000000010B1C8000B91
-:1015D0000000000C298000000000001020530000D3
-:1015E0000000000C295200000000000C29520003EA
-:1015F0000000001006C200020000000C2952000288
-:101600000000000022C58C000000000027650000DB
-:101610000000000026E40000000000002348000055
-:1016200000000008220000170000000C29800000C4
-:1016300000000010001F0000000000188000FE687D
-:00000001FF
-/*
- * This file contains firmware data derived from proprietary unpublished
- * source code, Copyright (c) 2004 - 2009 Broadcom Corporation.
- *
- * Permission is hereby granted for the distribution of this firmware data
- * in hexadecimal or equivalent format, provided this copyright notice is
- * accompanying it.
- */
diff --git a/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex b/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex
deleted file mode 100644
index 435203d64305..000000000000
--- a/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex
+++ /dev/null
@@ -1,392 +0,0 @@
-:1000000000000000000008F800000058000000098F
-:1000100000000000000000000000000000000000E0
-:1000200000000000000000000000000000000000D0
-:1000300000000E88000009500000000500000000CC
-:1000400000000000000000000000000000000000B0
-:080050000000000000000000A8
-:0800580000000010B180000659
-:100060000000001F05060011000000080500FFFF4A
-:10007000000000180002000000000008050000FF5A
-:10008000000000180002000000000008AC000001A1
-:1000900000000008078000000000000C2F80000115
-:1000A000000000002B000000000000002B8000007A
-:1000B0000000001091E1000200000008AC00000107
-:1000C00000000010203F003B00000010213F000313
-:1000D0000000001020BF0015000000188000FFFD88
-:1000E0000000000C1F800002000000188000FFF9D3
-:1000F00000000008B1000001000000082C80010C85
-:10010000000000082D000008000000082D800001FC
-:10011000000000188000003C0000000B2FDF0002F0
-:100120000000000C1F800002000000002C070000EF
-:100130000000001091DE0000000000188000FFEFBA
-:100140000000000B2FDF00020000000C1F800000E9
-:10015000000000002C0700000000001091DE0000ED
-:10016000000000188000FFEA0000000C1F80000261
-:10017000000000188000FFE80000000802240025AD
-:1001800000000018000400000000001880000000BB
-:10019000000000188000001B0000001880000042D2
-:1001A000000000188000000000000018800000001F
-:1001B000000000188000000000000018800000000F
-:1001C00000000018800000000000001880000000FF
-:1001D00000000018800000000000001880000000EF
-:1001E00000000018800000000000001880000000DF
-:1001F000000000188000008E000000188000000041
-:1002000000000018800000000000001880000000BE
-:1002100000000018800000000000001880000000AE
-:10022000000000188000000000000018800000009E
-:10023000000000188000008D00000018800000B74A
-:10024000000000188000008400000018800000DA20
-:10025000000000188000002B000000188000000043
-:10026000000000188000006B0000001091D4000016
-:100270000000000C298000010000000C1F8000011C
-:10028000000000082A0000020000000807800000AB
-:10029000000000188000FFC4000000080380010077
-:1002A00000000010B73C0E000000001880000000A5
-:1002B000000000180002000000000000068200009C
-:1002C00000000010B18F000400000010B18F140373
-:1002D000000000082A0000010000001091D4000076
-:1002E000000000000780140000000018000D00004E
-:1002F00000000000050200000000001091DE000078
-:1003000000000018000A0000000000000682000043
-:100310000000001091DE0000000000090561FFFFF1
-:1003200000000010918A00020000000830E1FFFF89
-:10033000000000188000FFA9000000010561140002
-:1003400000000010918A000200000008B0E10001E6
-:1003500000000018000D00000000000006820000F0
-:100360000000001091DE0000000000090562FFFFA0
-:1003700000000010918A0002000000083162FFFFB7
-:10038000000000188000FF9F0000000105621400BB
-:1003900000000010918A000200000008B162000114
-:1003A00000000018000D000000000010B1A0B01304
-:1003B0000000000B2FDF0002000000002C200000D6
-:1003C000000000082C800000000000082D00000044
-:1003D0000000001091D40000000000080500005546
-:1003E000000000188000FFDB000000082D80011CC9
-:1003F00000000010001F0000000000188000FFE255
-:100400000000000F476000080000000F060E00010A
-:10041000000000000F580000000000000A64000007
-:10042000000000000AE50000000000090B66FFFF65
-:10043000000000000D6100000000001880000015A1
-:100440000000000F476000080000000B2FDF0002D3
-:10045000000000082C800000000000082D000000B3
-:100460000000001091D40000000000082D80011C45
-:100470000000000F060E000100000010001F000029
-:10048000000000000F580000000000188000FFD09E
-:10049000000000000A640000000000000AE50000FF
-:1004A000000000090B66FFFF000000000D61000066
-:1004B00000000000026200000000000002E00000F6
-:1004C0000000000B2FDF00020000000030050000DC
-:1004D000000000003104000000000000309A00001D
-:1004E000000000100060000A00000008051600016E
-:1004F00000000010BA9A140300000000030000007E
-:100500000000001880000006000000188000FF6C4A
-:1005100000000010B60614040000000803060001E5
-:10052000000000082A000001000000188000FF7190
-:10053000000000000C961800000000090C99FFFF55
-:1005400000000004CC99340000000010BA992C027D
-:10055000000000080F8000000000000C298000014E
-:100560000000000C295200010000000C295200007C
-:100570000000000822800002000000080200000EB7
-:10058000000000080280001A00000010B1C40A0236
-:1005900000000008020000030000000C1F800001A2
-:1005A000000000002ADF0000000000002A00080010
-:1005B000000000188000FF600000000B2FDF000229
-:1005C0000000001091D40000000000082A00000183
-:1005D000000000002C2000000000001091D400005A
-:1005E000000000082C800000000000082D00000022
-:1005F000000000082D80011C000000188000FF9FF3
-:10060000000000082C800006000000082D000006F5
-:1006100000000000308000000000000031000000F9
-:10062000000000082D8000060000000C2980000159
-:100630000000000C1F8000010000001091DE00008F
-:10064000000000002ADF0000000000082A0000105F
-:100650000000000807800000000000188000FF4B29
-:100660000000001091D4000000000008050000AA5E
-:10067000000000188000FF890000000C29800001A4
-:100680000000000C1F800001000000082A00000983
-:10069000000000188000FF440000001091D400000A
-:1006A0000000000805000055000000188000FF82CF
-:1006B0000000001091A0B00200000010B1E6620737
-:1006C0000000000B2FDF0002000000002C310000B2
-:1006D000000000092CB1007F000000082CD90000A8
-:1006E000000000082D000000000000082D80010D12
-:1006F00000000010B1A8000600000010205F0000FC
-:10070000000000002C200000000000002CA70000CA
-:10071000000000082D000010000000082D800108D6
-:10072000000000188000FF7A00000010B1A6001041
-:1007300000000010001F00000000000F0F30000735
-:10074000000000000A600000000000000AE1000054
-:100750000000000F4B620008000000090B1600FFAC
-:10076000000000000D620000000000090D1A00FFEB
-:1007700000000010073000030000000C0D1A0008F4
-:100780000000000C0B1600080000000F4CE30018DE
-:10079000000000000C992C0000000004CC993400EB
-:1007A000000000080F8000000000000C29800001FC
-:1007B0000000000033310000000000082200001695
-:1007C000000000002ADF0000000000082A00000CE2
-:1007D00000000010009F0000000000002C2000001E
-:1007E0000000000C1F800001000000188000FF19AD
-:1007F0000000001091D4000000000008050000AACD
-:10080000000000188000FF570000000F472200087A
-:1008100000000009070E000F00000008070E000886
-:1008200000000008028000010000000702851C0093
-:1008300000000008828500010000000002854C00D5
-:100840000000000742851C0000000003C3AA5200FC
-:100850000000000003B10E00000000074B071C0061
-:100860000000000F0F3000070000000F0A96000381
-:10087000000000000A955C00000000004A005A00D9
-:10088000000000000C960A00000000090C99FFFF10
-:10089000000000080D00FFFF00000010BA992C02B4
-:1008A000000000080F80000500000010B1A800083B
-:1008B00000000010205F00000000000B2FDF00028E
-:1008C000000000002C200000000000002CA7000009
-:1008D000000000082D000010000000082D80010815
-:1008E000000000188000FF420000000C2980000179
-:1008F00000000010001F00000000000C1F8000011D
-:10090000000000002ADF0000000000082A00000D9F
-:10091000000000188000FEF40000001091D40000D8
-:100920000000000805000055000000188000FF329C
-:100930000000000C298000010000000C1F80000155
-:10094000000000082A000007000000188000FEEDEB
-:1009500000000010B18000040000001F0506001117
-:1009600000000008050000FF000000180002000061
-:10097000000000002A00000000000010B1D40000B8
-:100980000000001091DE0000000000102053000065
-:1009900000000010001F0000000000002F80AA00CF
-:1009A0000000000C29800001000000080254000F24
-:1009B000000000002C400000000000000F4000007C
-:1009C000000000092952003F000000180004000048
-:1009D00000000018800000110000001880000012C4
-:1009E000000000188000003800000018800001118D
-:1009F0000000001880000110000000188000010FA6
-:100A0000000000188000010F0000001880000000A6
-:100A10000000001880000128000000188000010B71
-:100A20000000001880000000000000188000012C69
-:100A3000000000188000017A000000188000005AB1
-:100A400000000018800000C400000018800000C5ED
-:100A50000000001880000104000000002A000000CF
-:100A6000000000188000FFE3000000002A000000E2
-:100A70000000000C29800000000000188000FFE04A
-:100A80000000001800020000000000000502000045
-:100A900000000010B99A2C2100000010205F000017
-:100AA000000000002C1E0000000000082C80000642
-:100AB000000000082D000006000000082D80010243
-:100AC00000000000000000000000001091DE0000A7
-:100AD000000000000D61000000000018000A000086
-:100AE000000000000502000000000010B99A2C165A
-:100AF00000000010205F00000000000009D8000086
-:100B0000000000002C1E0000000000082C80010ED8
-:100B1000000000082D00000A000000082D800102DE
-:100B200000000000000000000000001091DE000046
-:100B3000000000000D620000000000002C13000007
-:100B400000000018000A000000000000050200007C
-:100B500000000010B99A2C0900000010205F00006E
-:100B6000000000002C1E0000000000082C80000681
-:100B7000000000082D00006A000000082D8001021E
-:100B800000000000000000000000001091DE0000E6
-:100B9000000000000D7A000000000018000A0000AC
-:100BA000000000002A0000000000000822000001F0
-:100BB000000000000D6100000000001021C20024B0
-:100BC00000000010B1C6000200000010234200A285
-:100BD000000000090B66FFFF00000010BA9A2C20ED
-:100BE000000000000A640000000000000AE50000A8
-:100BF000000000000C000000000000000B8000005E
-:100C0000000000080CC60012000000188000FFD091
-:100C1000000000080F80000300000000000000003A
-:100C200000000010009F00000000000827110012C3
-:100C3000000000006690000000000010B198000362
-:100C400000000010001F0000000000080F800004DA
-:100C50000000000822000003000000082C80000CA7
-:100C6000000000082D00000C00000010009F000094
-:100C70000000001091C6000500000010001F0000D9
-:100C800000000010BA9A2C03000000080F80000436
-:100C9000000000188000FFFD000000002596000005
-:100CA0000000000C29800000000000003214000049
-:100CB00000000000329500000000000573662C0063
-:100CC0000000000031E32E00000000082D8000101D
-:100CD000000000188000FF950000000023000000C5
-:100CE0000000000925E6FFFF000000082200000BBD
-:100CF0000000000C695200000000000C2980000078
-:100D0000000000188000FF8F000000002A00000093
-:100D1000000000082C800040000000082D0000208A
-:100D2000000000082D80011C0000000822000001C6
-:100D30000000001091DE00000000000F42EA0010E9
-:100D400000000010004F000400000010B7469200A1
-:100D5000000000080249001200000010B5840A00DB
-:100D6000000000000D61000000000010BA6634575A
-:100D7000000000088305001200000010004F000270
-:100D800000000000034900000000000183068C0001
-:100D90000000000083C60C0000000010B1870013A3
-:100DA000000000000B6E0000000000090569FFFF55
-:100DB00000000010918A00020000000834E9FFFFE3
-:100DC000000000188000FF74000000010569140095
-:100DD00000000010918A000200000008B4E9000140
-:100DE00000000010BAE92C480000000086692C00C1
-:100DF00000000000020000000000000902EAFFFFFE
-:100E000000000010000C00020000000002040A00B4
-:100E10000000000F460C00010000000F02850001D9
-:100E200000000010918C01FC00000010B7040E3F80
-:100E3000000000000D610000000000000A640000D6
-:100E4000000000000AE50000000000090B66FFFF3B
-:100E5000000000000C000000000000000B800000FB
-:100E6000000000080C860012000000080F8000033C
-:100E70000000000C2952000000000010009F00003C
-:100E8000000000082711001200000000669000001A
-:100E9000000000002306000000000010B1980005CB
-:100EA00000000010001F0000000000080F80000478
-:100EB000000000000000000000000010001F000003
-:100EC0000000000032140000000000003295000015
-:100ED0000000000031E32E000000000573662C00C6
-:100EE000000000002596000000000010B1870016E9
-:100EF0000000000C298000000000000F0F6B0007AD
-:100F0000000000000D690000000000000A6C0000F5
-:100F1000000000000AED0000000000000B6E000061
-:100F2000000000000B800000000000000C870000A3
-:100F3000000000080F800003000000102053000094
-:100F40000000000C6952000100000010001F0000AA
-:100F50000000000022C58C0000000000231B0000E0
-:100F60000000000027110000000000002690000093
-:100F700000000010B8170E030000000C29800000CC
-:100F8000000000188000FFF600000010B198000279
-:100F9000000000080F800004000000082200001A72
-:100FA000000000082C80000C000000082D00000C40
-:100FB000000000082D80001000000010001F00003D
-:100FC000000000000D6E000000000003E7CF3400B9
-:100FD0000000000C298000000000001091DE0000DD
-:100FE00000000010B1870007000000003614000068
-:100FF00000000000369500000000000037160000D9
-:10100000000000082C800050000000082D00003077
-:10101000000000082D80000C000000188000FF2C4C
-:1010200000000000230000000000000925E6FFFF8B
-:10103000000000000B6E000000000003E7CF2C0052
-:10104000000000082200001B0000000C6952000094
-:101050000000000C29800000000000188000FF2420
-:10106000000000002A000000000000188000FF229D
-:10107000000000002A0000000000000C2980000091
-:101080000000001091DE0000000000082C80001A13
-:10109000000000082D00001A000000057366000023
-:1010A000000000082D8000020000000031800000D8
-:1010B0000000001091DE0000000000082C80000CF1
-:1010C000000000082D00000C000000082D80000426
-:1010D000000000188000FF150000000806660001EF
-:1010E00000000010BA9A197F000000000A64000096
-:1010F000000000000AE50000000000090B66FFFF89
-:10110000000000000C000000000000000B80000048
-:10111000000000080CC60012000000188000FF2E1E
-:10112000000000080F800003000000000000000025
-:1011300000000010009F00000000000827110012AE
-:10114000000000006690000000000010919B32003B
-:10115000000000100293000000000010B19800038E
-:1011600000000010001F0000000000080F800004B5
-:101170000000000C2980000000000010001F00008B
-:1011800000000010BA9A2C000000000031E32E008D
-:10119000000000000B800000000000008CCC8C00E0
-:1011A00000000010B5CC8C02000000080C8000018B
-:1011B000000000188000FF1B000000080F800003E3
-:1011C00000000010205300000000000C69520001D4
-:1011D0000000000022C58C0000000010009F0000ED
-:1011E0000000000027110000000000002690000011
-:1011F00000000000231B000000000010B198000355
-:1012000000000010001F0000000000080F80000414
-:101210000000000822000003000000082C80000CE1
-:10122000000000082D00000C00000010009F0000CE
-:1012300000000000259600000000000C298000003E
-:101240000000000032140000000000003295000091
-:101250000000000573662C000000000031E32E0042
-:10126000000000082D800010000000188000FEE241
-:10127000000000188000FEE1000000002A000000CD
-:1012800000000010001F0000000000000F008000A0
-:10129000000000080F800007000000188000001BFD
-:1012A00000000000280A0000000000000502000005
-:1012B00000000008220000090000000029000000D2
-:1012C0000000000F6568001000000000248A000084
-:1012D00000000003F66C940000000010B972A00436
-:1012E0000000000C73E700190000000C214200040C
-:1012F000000000003CF800000000000C2980000005
-:101300000000001020530000000000082200000828
-:101310000000000C6142000400000018000A0000F8
-:1013200000000000050200000000000C6142000007
-:1013300000000010014200030000000C33E7001D14
-:101340000000000C6142000200000018000A0000CA
-:10135000000000002A00000000000010001F000034
-:101360000000000F0F470007000000080F80000872
-:101370000000000C2980000000000010009F000009
-:10138000000000188000FEBF000000003351000084
-:10139000000000002A00000000000010B1C6002379
-:1013A0000000000F0F500007000000000A6000005E
-:1013B000000000000AE100000000000F4B6200087E
-:1013C000000000090B1600FF0000000F4C62001027
-:1013D000000000000D620000000000090D1A00FF6F
-:1013E00000000010075000030000000C0D1A000858
-:1013F0000000000C0B160008000000000CC60000E6
-:10140000000000000B8000000000000006980000B3
-:10141000000000080F8000030000001006C2000456
-:101420000000000C2900000200000010264200020B
-:101430000000000C295200030000000822000001F7
-:1014400000000010009F000000000000231B0000AF
-:101450000000000027111A00000000006690000044
-:101460000000000C2952000000000010B197320962
-:101470000000000C29800000000000000698000019
-:1014800000000010205300000000000C295200034F
-:101490000000000022C58C0000000010001F0000AA
-:1014A000000000080F800003000000188000FFF318
-:1014B00000000010B1C8001300000010B1C6000306
-:1014C0000000000C298000000000001020530000E4
-:1014D0000000000C295200000000000C29520003FB
-:1014E0000000001006C200020000000C2952000299
-:1014F0000000000022C58C000000000027650000ED
-:101500000000000026E40000000000082200001691
-:1015100000000010B1C600030000000023480000D6
-:1015200000000010B180000500000000234800000A
-:101530000000000C298000000000000F0F50000781
-:1015400000000018800000120000000822000016B1
-:101550000000000C29800000000000003014000092
-:10156000000000003095000000000010075000034C
-:10157000000000090B1600FF000000090D1A00FF13
-:101580000000000F31160008000000003162340036
-:1015900000000003F162300000000010205F000036
-:1015A000000000002C510000000000092CD1007F39
-:1015B000000000082CD90000000000082D000000E9
-:1015C000000000082D80000C00000000000000005A
-:1015D0000000001091DE00000000001005C20004B1
-:1015E000000000080F80000700000000330000002A
-:1015F00000000010009F0000000000188000FE7036
-:10160000000000002A0000000000000F0F5000073B
-:1016100000000010B1C6002D0000000F4742000876
-:1016200000000009070E000F00000008070E000868
-:1016300000000010001F0000000000080900000169
-:101640000000000709121C0000000003CBCA920032
-:10165000000000000B97A2000000000742171C00CA
-:10166000000000000B0400000000000F0A840003CB
-:10167000000000000A959C00000000004A009A004B
-:101680000000000882120001000000010C17080091
-:10169000000000000C978C00000000000218000001
-:1016A000000000080D00FFFF000000080F8000068A
-:1016B0000000000C290000000000001006C2000419
-:1016C0000000000C29520002000000102642000217
-:1016D0000000000C29520003000000082200000155
-:1016E00000000010009F000000000010B197320CB5
-:1016F00000000000231B000000000000271108006C
-:1017000000000000669000000000000C298000002E
-:10171000000000000218000000000010205300002C
-:101720000000000C295200030000000022C5360012
-:1017300000000010001F0000000000080F800006DD
-:10174000000000188000FFF400000000231B0000D0
-:101750000000000027110800000000006690000053
-:1017600000000010B1C8000B0000000C2980000030
-:1017700000000010205300000000000C295200005F
-:101780000000000C295200030000001006C20002F5
-:101790000000000C295200020000000022C58C004D
-:1017A00000000000276500000000000026E40000A3
-:1017B000000000002348000000000008220000177D
-:1017C0000000000C2980000000000010001F000035
-:0817D000000000188000FE3546
-:00000001FF
-/*
- * This file contains firmware data derived from proprietary unpublished
- * source code, Copyright (c) 2004 - 2009 Broadcom Corporation.
- *
- * Permission is hereby granted for the distribution of this firmware data
- * in hexadecimal or equivalent format, provided this copyright notice is
- * accompanying it.
- */
diff --git a/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex b/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex
deleted file mode 100644
index d2f275788f16..000000000000
--- a/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex
+++ /dev/null
@@ -1,425 +0,0 @@
-:100000000000000000000970000000580000000916
-:1000100000000000000000000000000000000000E0
-:1000200000000000000000000000000000000000D0
-:1000300000001010000009C80000000500000000CA
-:1000400000000000000000000000000000000000B0
-:080050000000000000000000A8
-:0800580000000010B180000659
-:100060000000001F03060011000000080500FFFF4C
-:10007000000000180002000000000008050000FF5A
-:10008000000000180002000000000008AC000001A1
-:1000900000000008078000000000000C2F80000115
-:1000A000000000002B000000000000002B8000007A
-:1000B0000000001091E1000200000008AC00000107
-:1000C00000000010203F003B00000010213F000313
-:1000D0000000001020BF0015000000188000FFFD88
-:1000E0000000000C1F800002000000188000FFF9D3
-:1000F00000000008B1000001000000082C80010C85
-:10010000000000082D000008000000082D800001FC
-:10011000000000188000004F0000000B2FDF0002DD
-:100120000000000C1F800002000000002C070000EF
-:100130000000001091DE0000000000188000FFEFBA
-:100140000000000B2FDF00020000000C1F800000E9
-:10015000000000002C0700000000001091DE0000ED
-:10016000000000188000FFEA0000000C1F80000261
-:10017000000000188000FFE80000000802240025AD
-:1001800000000018000400000000001880000000BB
-:10019000000000188000001B0000001880000055BF
-:1001A000000000188000000000000018800000001F
-:1001B000000000188000000000000018800000000F
-:1001C00000000018800000000000001880000000FF
-:1001D00000000018800000000000001880000000EF
-:1001E00000000018800000000000001880000000DF
-:1001F000000000188000009D000000188000000032
-:1002000000000018800000000000001880000000BE
-:1002100000000018800000000000001880000000AE
-:10022000000000188000000000000018800000009E
-:10023000000000188000009C00000018800000C62C
-:10024000000000188000009300000018800000E902
-:10025000000000188000003E000000188000000030
-:10026000000000188000007A0000001091D4000007
-:100270000000000C298000010000000C1F8000011C
-:10028000000000082A0000020000000807800000AB
-:10029000000000188000FFC4000000080380010077
-:1002A00000000010B73C0E000000001880000000A5
-:1002B000000000000202000000000000029A00009E
-:1002C00000000000060C2C0000000004C60C3400E6
-:1002D00000000010001F000000000010BA8C2C0C61
-:1002E000000000080696000400000009068DFFFCCF
-:1002F00000000004CD051A0000000004CC9A18008C
-:100300000000001020D700000000000C2B56000059
-:1003100000000000000000000000000000000000DD
-:100320000000001020D70000000000080F8000012E
-:1003300000000010B18001F400000010001F000058
-:100340000000000C6B5600000000001800040000C4
-:10035000000000000682000000000010B18F0004C1
-:1003600000000010B18F1403000000082A000001F3
-:100370000000001091D4000000000000078014006D
-:1003800000000018000D0000000000000502000041
-:100390000000001091DE000000000018000A0000BC
-:1003A00000000000068200000000001091DE000046
-:1003B000000000090561FFFF00000010918A0002A3
-:1003C0000000000830E1FFFF000000188000FF96E9
-:1003D000000000010561140000000010918A000275
-:1003E00000000008B0E1000100000018000D00004E
-:1003F00000000000068200000000001091DE0000F6
-:10040000000000090562FFFF00000010918A000251
-:10041000000000083162FFFF000000188000FF8C20
-:10042000000000010562140000000010918A000223
-:1004300000000008B162000100000018000D00007B
-:1004400000000010B1A0B0130000000B2FDF00026D
-:10045000000000002C200000000000082C8000009C
-:10046000000000082D0000000000001091D40000E2
-:100470000000000805000055000000188000FFDBA8
-:10048000000000082D80011C00000010001F00006B
-:10049000000000188000FFE20000000F4760000825
-:1004A0000000000F060E0001000000000F580000C1
-:1004B000000000000A640000000000000AE50000DF
-:1004C000000000090B66FFFF000000000D61000046
-:1004D00000000018800000150000000F47600008B1
-:1004E0000000000B2FDF0002000000082C8000003D
-:1004F000000000082D0000000000001091D4000052
-:10050000000000082D80011C0000000F060E0001F5
-:1005100000000010001F0000000000000F58000045
-:10052000000000188000FFD0000000000A640000F6
-:10053000000000000AE50000000000090B66FFFF54
-:10054000000000000D6100000000000002620000D9
-:100550000000000002E000000000000B2FDF00029E
-:100560000000000030050000000000003104000021
-:1005700000000000309A0000000000100060000A37
-:10058000000000080516000100000010BA9A1403CC
-:1005900000000000030000000000001880000006BA
-:1005A000000000188000FF5900000010B606140477
-:1005B0000000000803060001000000082A000001F6
-:1005C000000000188000FF5E000000188000FF9D02
-:1005D0000000000C298000010000000C29520001DD
-:1005E0000000000C295200000000000822800002D8
-:1005F000000000080200000E000000080280001A3F
-:1006000000000010B1C40A0200000008020000034C
-:100610000000000C1F800001000000002ADF000025
-:10062000000000002A000800000000188000FF51B0
-:100630000000000B2FDF00020000001091D400002A
-:10064000000000082A000001000000002C2000002B
-:100650000000001091D40000000000082C80000071
-:10066000000000082D000000000000082D80011C83
-:10067000000000188000FFA3000000082C80000686
-:10068000000000082D00000600000000308000007F
-:100690000000000031000000000000082D8000066E
-:1006A0000000000C298000010000000C1F800001E8
-:1006B0000000001091DE0000000000002ADF0000B2
-:1006C000000000082A000010000000080780000059
-:1006D000000000188000FF3C0000001091D40000D2
-:1006E00000000008050000AA000000188000FF8D2F
-:1006F0000000000C298000010000000C1F80000198
-:10070000000000082A000009000000188000FF35E2
-:100710000000001091D40000000000080500005502
-:10072000000000188000FF860000001091A0B002B9
-:1007300000000010B1E662070000000B2FDF00028E
-:10074000000000002C310000000000092CB1007FE7
-:10075000000000082CD90000000000082D00000057
-:10076000000000082D80010D00000010B1A8000657
-:1007700000000010205F0000000000002C2000009E
-:10078000000000002CA70000000000082D00001051
-:10079000000000082D800108000000188000FF7E86
-:1007A00000000010B1A6001000000010001F0000A3
-:1007B0000000000F0F300007000000000A6000007A
-:1007C000000000000AE100000000000F4B6200087A
-:1007D000000000090B1600FF000000000D62000081
-:1007E000000000090D1A00FF000000100730000390
-:1007F0000000000C0D1A00080000000C0B16000889
-:100800000000000F4CE30018000000000C992C00C1
-:1008100000000004CC993400000000080F800000A4
-:100820000000000C298000010000000033310000AE
-:100830000000000822000016000000002ADF00006F
-:10084000000000082A00000C00000010009F0000BB
-:10085000000000002C2000000000000C1F800001A0
-:10086000000000188000FF0A0000001091D4000072
-:1008700000000008050000AA000000188000FF5BCF
-:100880000000000F4722000800000009070E000FBB
-:1008900000000008070E00080000000802800001A8
-:1008A0000000000702851C0000000008828500018E
-:1008B0000000000002854C000000000742851C007B
-:1008C00000000003C3AA52000000000003B10E00A4
-:1008D000000000074B071C000000000F0F3000074E
-:1008E0000000000F0A960003000000000A955C005B
-:1008F000000000004A005A00000000000C960A00A8
-:10090000000000090C99FFFF000000080D00FFFF28
-:1009100000000010BA992C02000000080F800005AA
-:1009200000000010B1A8000800000010205F0000C7
-:100930000000000B2FDF0002000000002C20000050
-:10094000000000002CA70000000000082D0000108F
-:10095000000000082D800108000000188000FF46FC
-:100960000000000C2980000100000010001F0000A2
-:100970000000000C1F800001000000002ADF0000C2
-:10098000000000082A00000D000000188000FEE5AD
-:100990000000001091D40000000000080500005580
-:1009A000000000188000FF360000000C29800001C4
-:1009B0000000000C1F800001000000082A00000752
-:0809C000000000188000FEDEBB
-:0809C80000000010B1800004E2
-:1009D0000000001F0306001100000008050000FFD2
-:1009E0000000001800020000000000002A000000C3
-:1009F00000000010B1D400000000001091DE0000E3
-:100A0000000000102053000000000010001F000034
-:100A10000000000C6BD70001000000002F80AA002E
-:100A20000000000C298000010000000802540010A2
-:100A3000000000002C400000000000000F400000FB
-:100A4000000000092952003F0000001800040000C7
-:100A50000000001880000011000000188000001243
-:100A600000000018800000470000001880000137D7
-:100A700000000018800001360000001880000135D9
-:100A80000000001880000135000000188000000000
-:100A9000000000188000014F0000001880000131A4
-:100AA00000000018800000000000001880000155C0
-:100AB00000000018800001A6000000188000006DF2
-:100AC00000000018800000E400000018800000E52D
-:100AD000000000188000012A000000002A00000029
-:100AE000000000188000FFE2000000002A00000063
-:100AF0000000000C29800000000000188000FFDFCB
-:100B00000000000003820000000000188000FFDAEF
-:100B1000000000010C161400000000008C181400E6
-:100B20000000001091980003000000080C960002DD
-:100B300000000010B1800003000000080C960001C6
-:100B4000000000000C000000000000000D19000073
-:100B5000000000080F8000010000000000000000FD
-:100B600000000010001F00000000000C6BD7000107
-:100B700000000010011301F300000018000700003E
-:100B8000000000000502000000000010B99A2C21AE
-:100B900000000010205F0000000000002C1E00007C
-:100BA000000000082C800006000000082D00000650
-:100BB000000000082D80010200000000000000007D
-:100BC0000000001091DE0000000000000D61000038
-:100BD00000000018000A00000000000005020000EC
-:100BE00000000010B99A2C1600000010205F0000D1
-:100BF0000000000009D80000000000002C1E0000CA
-:100C0000000000082C80010E000000082D00000AE2
-:100C1000000000082D80010200000000000000001C
-:100C20000000001091DE0000000000000D620000D6
-:100C3000000000002C13000000000018000A000053
-:100C4000000000000502000000000010B99A2C0905
-:100C500000000010205F0000000000002C1E0000BB
-:100C6000000000082C800006000000082D00006A2B
-:100C7000000000082D8001020000000000000000BC
-:100C80000000001091DE0000000000000D7A00005E
-:100C900000000018000A0000000000002A00000008
-:100CA0000000000822000001000000000D610000AB
-:100CB0000000001021C2002800000010B1C6000290
-:100CC00000000010234200B3000000090B66FFFF84
-:100CD00000000010BA9A2C24000000000A640000F2
-:100CE000000000000AE50000000000000C00000009
-:100CF000000000000B800000000000080CC600127D
-:100D0000000000188000FFD0000000080F800003E2
-:100D1000000000000000000000000010001F0000A4
-:100D20000000000C6BD70001000000082711001222
-:100D3000000000006690000000000010B198000460
-:100D400000000010001F00000000000C6BD7000125
-:100D5000000000080F8000040000000822000003CB
-:100D6000000000082C80000C000000082D00000C82
-:100D700000000010001F00000000000C6BD70001F5
-:100D80000000001091C6000600000010001F0000C7
-:100D90000000000C6BD7000100000010BA9A2C0371
-:100DA000000000080F800004000000188000FFFC15
-:100DB00000000000259600000000000C29800000C3
-:100DC0000000000032140000000000003295000016
-:100DD0000000000573662C000000000031E32E00C7
-:100DE000000000082D800010000000188000FF8126
-:100DF00000000000230000000000000925E6FFFFBE
-:100E0000000000082200000B0000000C69520000E6
-:100E10000000000C29800000000000188000FF7B0B
-:100E2000000000002A000000000000082C800040A4
-:100E3000000000082D000020000000082D80011C8B
-:100E400000000008220000010000001091DE0000F8
-:100E50000000000F42EA001000000010004F0004E4
-:100E600000000010B746920000000008024900127E
-:100E700000000010B5840A00000000000D610000B1
-:100E800000000010BA6634640000000883050012F8
-:100E900000000010004F00020000000003490000A5
-:100EA0000000000183068C000000000083C60C00D7
-:100EB00000000010B1870013000000000B6E00005E
-:100EC000000000090569FFFF00000010918A000280
-:100ED0000000000834E9FFFF000000188000FF60F8
-:100EE000000000010569140000000010918A000252
-:100EF00000000008B4E9000100000010BAE92C5518
-:100F00000000000086692C000000000002000000C4
-:100F10000000000902EAFFFF00000010000C0002C0
-:100F20000000000002040A000000000F460C00014F
-:100F30000000000F0285000100000010918C01FCF0
-:100F400000000010B7040E4C000000000D6100000E
-:100F5000000000000A640000000000000AE5000034
-:100F6000000000090B66FFFF000000000C000000FD
-:100F7000000000000B800000000000080C8600123A
-:100F8000000000080F8000030000000C2952000040
-:100F900000000010001F00000000000C6BD70001D3
-:100FA00000000008271100120000000066900000F9
-:100FB000000000002306000000000010B1980007A8
-:100FC00000000010001F00000000000C6BD70001A3
-:100FD000000000080F800004000000000000000076
-:100FE00000000010001F00000000000C6BD7000183
-:100FF00000000000321400000000000032950000E4
-:101000000000000031E32E000000000573662C0094
-:10101000000000002596000000000010B187001FAE
-:101020000000000C298000000000000F0F6B00077B
-:10103000000000000D690000000000000A6C0000C4
-:10104000000000000AED0000000000000B6E000030
-:10105000000000000B800000000000000C87000072
-:10106000000000188000FF2F000000010C16140083
-:10107000000000008C181400000000080C9600010D
-:101080000000001091980002000000080C99000177
-:10109000000000000D190000000000000C0000001E
-:1010A000000000080F800001000000102053000025
-:1010B0000000000C6952000100000010001F000039
-:1010C0000000000C6BD700010000000022C58C005E
-:1010D00000000000231200000000000027110000A3
-:1010E000000000002690000000000010B8170E035A
-:1010F0000000000C29800000000000188000FFEDB7
-:101100000000000082970E0000000000A3120A00F9
-:10111000000000082200001A000000082C80000CCB
-:10112000000000082D00000C000000082D800010B9
-:1011300000000010001F00000000000C6BD7000131
-:10114000000000000D6E000000000003E7CF340037
-:101150000000000C298000000000001091DE00005B
-:1011600000000010B18700070000000036140000E6
-:101170000000000036950000000000003716000057
-:10118000000000082C800050000000082D000030F6
-:10119000000000082D80000C000000188000FF0BEC
-:1011A00000000000230000000000000925E6FFFF0A
-:1011B000000000000B6E000000000003E7CF2C00D1
-:1011C000000000082200001B0000000C6952000013
-:1011D0000000000C29800000000000188000FF03C0
-:1011E000000000002A000000000000188000FF013D
-:1011F000000000002A0000000000000C2980000010
-:101200000000001091DE0000000000082C80001A91
-:10121000000000082D00001A0000000573660000A1
-:10122000000000082D800002000000003180000056
-:101230000000001091DE0000000000082C80000C6F
-:10124000000000082D00000C000000082D800004A4
-:10125000000000188000FEF400000008066600018F
-:1012600000000010BA9A1972000000000A64000021
-:10127000000000000AE50000000000090B66FFFF07
-:10128000000000000C000000000000000B800000C7
-:10129000000000080CC60012000000188000FF1DAE
-:1012A000000000080F8000030000000000000000A4
-:1012B00000000010001F00000000000C6BD70001B0
-:1012C00000000008271100120000000066900000D6
-:1012D00000000010919B32000000001002930000FB
-:1012E00000000010B198000300000010001F000073
-:1012F0000000000C6BD70001000000080F80000404
-:101300000000000C2980000000000010001F0000F9
-:101310000000000C6BD7000100000010BA9A2C00EE
-:101320000000000031E32E00000000000B800000F0
-:10133000000000008CCC8C0000000010B5CC8C02AA
-:10134000000000080C800001000000188000FF076A
-:10135000000000080F800003000000102053000070
-:101360000000000C695200010000000022C58C0042
-:1013700000000010001F00000000000C6BD70001EF
-:10138000000000002711000000000000269000006F
-:1013900000000000231B000000000010B1980003B3
-:1013A00000000010001F00000000000C6BD70001BF
-:1013B000000000080F800004000000082200000365
-:1013C000000000082C80000C000000082D00000C1C
-:1013D00000000010001F00000000000C6BD700018F
-:1013E00000000000259600000000000C298000008D
-:1013F00000000000321400000000000032950000E0
-:101400000000000573662C000000000031E32E0090
-:10141000000000082D800010000000188000FEBBB6
-:10142000000000188000FEBA000000002A00000042
-:1014300000000010001F00000000000C6BD700012E
-:10144000000000000F008000000000080F8000076F
-:10145000000000188000001C00000000280A0000A6
-:101460000000000005020000000000082200000942
-:1014700000000000290000000000000F6568001057
-:1014800000000000248A000000000003F66C9400B5
-:1014900000000010B972A0040000000C73E70019EE
-:1014A0000000000C21420004000000003CF8000095
-:1014B0000000000C298000000000001020530000F4
-:1014C00000000008220000080000000C6142000437
-:1014D00000000018000A00000000000005020000E3
-:1014E0000000000C614200000000001001420003F7
-:1014F0000000000C33E7001D0000000C61420002F8
-:1015000000000018000A0000000000002A0000008F
-:1015100000000010001F00000000000C6BD700014D
-:101520000000000F0F470007000000080F800008B0
-:101530000000000C2980000000000010001F0000C7
-:101540000000000C6BD70001000000188000FE9521
-:101550000000000033510000000000002A000000DD
-:1015600000000010B1C600250000000F0F5000075A
-:10157000000000000A600000000000000AE1000016
-:101580000000000F4B620008000000090B1600FF6E
-:101590000000000F4C620010000000000D6200000F
-:1015A000000000090D1A00FF0000001007500003A2
-:1015B0000000000C0D1A00080000000C0B160008BB
-:1015C000000000000CC60000000000000B800000BE
-:1015D0000000000006980000000000080F800003D3
-:1015E0000000001006C200040000000C29000002E8
-:1015F00000000010264200020000000C29520003E7
-:10160000000000082200000100000010001F000080
-:101610000000000C6BD7000100000000231B00003D
-:101620000000000027111A00000000006690000072
-:101630000000000C2952000000000010B197320A8F
-:101640000000000C29800000000000000698000047
-:1016500000000010205300000000000C295200037D
-:101660000000000022C58C0000000010001F0000D8
-:101670000000000C6BD70001000000080F80000381
-:10168000000000188000FFF100000010B1C8001336
-:1016900000000010B1C600030000000C298000000B
-:1016A00000000010205300000000000C2952000030
-:1016B0000000000C295200030000001006C20002C6
-:1016C0000000000C295200020000000022C58C001E
-:1016D00000000000276500000000000026E4000074
-:1016E000000000082200001600000010B1C6000330
-:1016F000000000002348000000000010B180000539
-:1017000000000000234800000000000C29800000B9
-:101710000000000F0F5000070000001880000012AA
-:1017200000000008220000160000000C29800000C4
-:1017300000000000301400000000000030950000A0
-:101740000000001007500003000000090B1600FF06
-:10175000000000090D1A00FF0000000F31160008FC
-:10176000000000003162340000000003F16230002C
-:1017700000000010205F0000000000002C5100005D
-:10178000000000092CD1007F000000082CD90000C7
-:10179000000000082D000000000000082D80000C53
-:1017A00000000000000000000000001091DE0000BA
-:1017B0000000001005C20005000000080F800007AF
-:1017C000000000003300000000000010001F0000B7
-:1017D0000000000C6BD70001000000188000FE43E1
-:1017E000000000002A0000000000000F0F5000075A
-:1017F00000000010B1C600300000000F4742000892
-:1018000000000009070E000F00000008070E000886
-:1018100000000010001F00000000000C6BD700014A
-:1018200000000008090000010000000709121C0068
-:1018300000000003CBCA9200000000000B97A2003A
-:101840000000000742171C00000000000B0400000D
-:101850000000000F0A840003000000000A959C00AD
-:10186000000000004A009A000000000882120001F7
-:10187000000000010C170800000000000C978C000D
-:101880000000000002180000000000080D00FFFF2B
-:10189000000000080F8000060000000C2900000076
-:1018A0000000001006C200040000000C29520002D3
-:1018B00000000010264200020000000C2952000324
-:1018C000000000082200000100000010001F0000BE
-:1018D0000000000C6BD7000100000010B197320D22
-:1018E00000000000231B000000000000271108007A
-:1018F00000000000669000000000000C298000003D
-:10190000000000000218000000000010205300003A
-:101910000000000C295200030000000022C5360020
-:1019200000000010001F00000000000C6BD7000139
-:10193000000000080F800006000000188000FFF281
-:1019400000000000231B0000000000002711080019
-:10195000000000006690000000000010B1C8000BFD
-:101960000000000C2980000000000010205300003F
-:101970000000000C295200000000000C2952000356
-:101980000000001006C200020000000C29520002F4
-:101990000000000022C58C00000000002765000048
-:1019A0000000000026E400000000000023480000C2
-:1019B00000000008220000170000000C2980000031
-:1019C00000000010001F00000000000C6BD7000199
-:0819D000000000188000FE0475
-:00000001FF
-/*
- * This file contains firmware data derived from proprietary unpublished
- * source code, Copyright (c) 2004 - 2009 Broadcom Corporation.
- *
- * Permission is hereby granted for the distribution of this firmware data
- * in hexadecimal or equivalent format, provided this copyright notice is
- * accompanying it.
- */
diff --git a/firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex b/firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex
deleted file mode 100644
index 0ed7f5891184..000000000000
--- a/firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex
+++ /dev/null
@@ -1,9484 +0,0 @@
-:1000000000003BB0000000680000070C00003C202E
-:1000100000001AF8000043300000007C00005E3051
-:1000200000007A2C00005EB0000000B00000D8E0B4
-:10003000000080200000D99800000088000159C00D
-:100040000000398800015A5000000090000193E040
-:100050000000AC040001947800000FFC0002408016
-:100060000000000400025080020400480000000F5D
-:100070000204005400000045020400580000000083
-:100080000204005C0000000602040070000000048E
-:1000900002040078000000000204007C1217000037
-:1000A00002040080221700000204008432170000BE
-:1000B00006040088000000050204009C12150000E0
-:1000C000020400A022150000020400A43215000062
-:1000D000060400A800000004020400B8021000009A
-:1000E000020400BC00100000020400C01010000058
-:1000F000020400C420100000020400C830100000F8
-:10010000060400CC00000004020400DC0010000023
-:10011000020400E012140000020400E422140000B3
-:10012000020400E832140000060400EC00000004A1
-:100130000104012400000000010401280000000067
-:100140000104012C00000000010401300000000047
-:1001500002040004000000FF02040008000000FF89
-:100160000204000C000000FF02040010000000FF69
-:1001700002040014000000FF02040018000000FF49
-:100180000204001C000000FF02040020000000FF29
-:10019000020400240000003E0204002800000000C9
-:1001A0000204002C0000003F020400300000003F69
-:1001B000020400340000003F020400380000000088
-:1001C0000204003C0000003F020400400000003F29
-:1001D000020400440000003F020420080000021155
-:1001E0000204200C0000020002042010000002049F
-:1001F00002042014000002190204201C0000FFFF6A
-:10020000020420200000FFFF020420240000FFFF62
-:10021000020420280000FFFF0604203800000080B0
-:100220000204223807FFFFFF0204223C0000003FC7
-:100230000204224007FFFFFF020422440000000FD7
-:1002400001042248000000000104224C00000000CC
-:1002500001042250000000000104225400000000AC
-:1002600001042258000000000104225C000000008C
-:10027000010422600000000001042264000000006C
-:1002800001042268000000000104226C000000004C
-:10029000010422700000000001042274000000002C
-:1002A00001042278000000000104227C000000000C
-:1002B000020424BC000000010C042000000003E83C
-:1002C0000A042000000000010B0420000000000AC6
-:1002D0000605400000000D0002050044000000205B
-:1002E00002050048000000320205009002150020BF
-:1002F000020500940215002002050098000000305D
-:100300000205009C08100000020500A00000003358
-:10031000020500A400000030020500A80000003122
-:10032000020500AC00000002020500B0000000055C
-:10033000020500B400000006020500B8000000023B
-:10034000020500BC00000002020500C00000000021
-:10035000020500C400000005020500C800000002FC
-:10036000020500CC00000002020500D000000002DF
-:10037000020500D400000001020501140000000184
-:100380000205011C0000000102050120000000021E
-:1003900002050204000000010205020C00000040FA
-:1003A00002050210000000400205021C00000020AF
-:1003B00002050220000000130205022400000020B4
-:1003C000060502400000000A04050280002000002B
-:1003D000020500500000000702050054000000075D
-:1003E00002050058000000000205005C0000000843
-:1003F0000605006000000004020500D800000006A9
-:10040000020500E00000000D020500E40000002DE0
-:10041000020500E800000000020500EC00000020DA
-:10042000020500F000000000020500F400000020BA
-:10043000020500F800000000020500FC000000209A
-:100440000205000400000001020500080000000190
-:100450000205000C00000001020500100000000170
-:100460000205001400000001020500180000000150
-:100470000205001C00000001020500200000000130
-:100480000205002400000001020500280000000110
-:100490000205002C000000010205003000000001F0
-:1004A00002050034000000010205003800000001D0
-:1004B0000205003C000000010205004000000001B0
-:1004C0000406100002000020020600DC000000010B
-:1004D000010600D80000000004060200000302200C
-:1004E000020600DC0000000002060068000000B800
-:1004F0000206007800000114010600B800000000A8
-:10050000010600C8000000000206006C000000B8F0
-:100510000206007C00000114010600BC000000007F
-:10052000010600CC0000000007180400007B00005A
-:100530000818076000140223071C00002A040000AA
-:10054000071C800032110A82071D00001E0C1707CD
-:10055000081D4550575602250118000000000000F4
-:10056000011800040000000001180008000000004D
-:100570000118000C0000000001180010000000002D
-:100580000118001400000000021800200000000103
-:1005900002180024000000020218002800000003D6
-:1005A0000218002C000000000218003000000004B7
-:1005B000021800340000000102180038000000009A
-:1005C0000218003C00000001021800400000000476
-:1005D000021800440000000002180048000000015A
-:1005E0000218004C00000003021800500000000038
-:1005F0000218005400000001021800580000000416
-:100600000218005C000000000218006000000001F9
-:1006100002180064000000030218006800000000D7
-:100620000218006C000000010218007000000004B5
-:100630000218007400000000021800780000000496
-:100640000218007C00000003061800800000000271
-:10065000021800A400003FFF021800A8000003FFDA
-:1006600002180224000000000218023400000000FA
-:100670000218024C00000000021802E4000000FF13
-:100680000618100000000400021B8BC000000001CF
-:10069000021B800000000034021B80400000001894
-:1006A000021B80800000000C021B80C000000020A4
-:1006B0000C1B83000007A1200A1B830000000138E7
-:1006C0000B1B8300000013880A1B834000000000FE
-:1006D0000C1B8340000001F40B1B8340000000054D
-:1006E000021B83800007A120021B83C0000001F4CD
-:1006F000061A100000000273041A19CC0001022728
-:10070000061A2008000000C8061A20000000000297
-:10071000041A499800040228061A2E280000000234
-:10072000061A2E2000000002061A0800000000022F
-:10073000061A080800000004061A08180000000243
-:10074000041A08B00002022C061A2FD0000000067E
-:10075000041A2FE80002022E041A2FC000040230EF
-:10076000041A300000010234061A300400000003AD
-:10077000041A301000010235061A3014000000037C
-:10078000041A302000010236061A3024000000034B
-:10079000041A303000010237061A3034000000031A
-:1007A000041A304000010238061A304400000003E9
-:1007B000041A305000010239061A305400000003B8
-:1007C000041A30600001023A061A30640000000387
-:1007D000041A30700001023B061A30740000000356
-:1007E000041A30800001023C061A30840000000325
-:1007F000041A30900001023D061A309400000003F4
-:10080000041A30A00001023E061A30A400000003C2
-:10081000041A30B00001023F061A30B40000000391
-:10082000041A30C000010240061A30C40000000360
-:10083000041A30D000010241061A30D4000000032F
-:10084000041A30E000010242061A30E400000003FE
-:10085000041A30F000010243061A30F400000003CD
-:10086000041A310000010244061A3104000000039A
-:10087000041A311000010245061A31140000000369
-:10088000041A312000010246061A31240000000338
-:10089000041A313000010247061A31340000000307
-:1008A000041A314000010248061A314400000003D6
-:1008B000041A315000010249061A315400000003A5
-:1008C000041A31600001024A061A31640000000374
-:1008D000041A31700001024B061A31740000000343
-:1008E000041A31800001024C061A31840000000312
-:1008F000041A31900001024D061A319400000003E1
-:10090000041A31A00001024E061A31A400000003AF
-:10091000041A31B00001024F061A31B4000000037E
-:10092000041A31C000010250061A31C4000000034D
-:10093000041A31D000010251061A31D4000000031C
-:10094000041A31E000010252061A31E400000003EB
-:10095000041A31F000010253061A31F400000003BA
-:10096000041A320000010254061A32040000000387
-:10097000041A321000010255061A32140000000356
-:10098000041A322000010256061A32240000000325
-:10099000041A323000010257061A323400000003F4
-:1009A000041A324000010258061A324400000003C3
-:1009B000041A325000010259061A32540000000392
-:1009C000041A32600001025A061A32640000000361
-:1009D000041A32700001025B061A32740000000330
-:1009E000041A32800001025C061A328400000003FF
-:1009F000041A32900001025D061A329400000003CE
-:100A0000041A32A00001025E061A32A4000000039C
-:100A1000041A32B00001025F061A32B4000000036B
-:100A2000041A32C000010260061A32C4000000033A
-:100A3000041A32D000010261061A32D40000000309
-:100A4000041A32E000010262061A32E400000003D8
-:100A5000041A32F000010263061A32F400000003A7
-:100A6000041A330000010264061A33040000000374
-:100A7000041A331000010265061A33140000000343
-:100A8000041A332000010266061A33240000000312
-:100A9000041A333000010267061A333400000003E1
-:100AA000041A334000010268061A334400000003B0
-:100AB000041A335000010269061A3354000000037F
-:100AC000041A33600001026A061A3364000000034E
-:100AD000041A33700001026B061A3374000000031D
-:100AE000041A33800001026C061A338400000003EC
-:100AF000041A33900001026D061A339400000003BB
-:100B0000041A33A00001026E061A33A40000000389
-:100B1000041A33B00001026F061A33B40000000358
-:100B2000041A33C000010270061A33C40000000327
-:100B3000041A33D000010271061A33D400000003F6
-:100B4000041A33E000010272061A33E400000003C5
-:100B5000041A33F000010273061A33F40000000394
-:100B6000041A340000010274061A34040000000361
-:100B7000041A341000010275061A34140000000330
-:100B8000041A342000010276061A342400000003FF
-:100B9000041A343000010277061A343400000003CE
-:100BA000041A344000010278061A3444000000039D
-:100BB000041A345000010279061A3454000000036C
-:100BC000041A34600001027A061A3464000000033B
-:100BD000041A34700001027B061A3474000000030A
-:100BE000041A34800001027C061A348400000003D9
-:100BF000041A34900001027D061A349400000003A8
-:100C0000041A34A00001027E061A34A40000000376
-:100C1000041A34B00001027F061A34B40000000345
-:100C2000041A34C000010280061A34C40000000314
-:100C3000041A34D000010281061A34D400000003E3
-:100C4000041A34E000010282061A34E400000003B2
-:100C5000041A34F000010283061A34F40000000381
-:100C6000041A350000010284061A3504000000034E
-:100C7000041A351000010285061A3514000000031D
-:100C8000041A352000010286061A352400000003EC
-:100C9000041A353000010287061A353400000003BB
-:100CA000041A354000010288061A3544000000038A
-:100CB000041A355000010289061A35540000000359
-:100CC000041A35600001028A061A35640000000328
-:100CD000041A35700001028B061A357400000003F7
-:100CE000041A35800001028C061A358400000003C6
-:100CF000041A35900001028D061A35940000000395
-:100D0000041A35A00001028E061A35A40000000363
-:100D1000041A35B00001028F061A35B40000000332
-:100D2000041A35C000010290061A35C40000000301
-:100D3000041A35D000010291061A35D400000003D0
-:100D4000041A35E000010292061A35E4000000039F
-:100D5000041A35F000010293061A35F4000000036E
-:100D6000041A360000010294061A3604000000033B
-:100D7000041A361000010295061A3614000000030A
-:100D8000041A362000010296061A362400000003D9
-:100D9000041A363000010297061A363400000003A8
-:100DA000041A364000010298061A36440000000377
-:100DB000041A365000010299061A36540000000346
-:100DC000041A36600001029A061A36640000000315
-:100DD000041A36700001029B061A367400000003E4
-:100DE000041A36800001029C061A368400000003B3
-:100DF000041A36900001029D061A36940000000382
-:100E0000041A36A00001029E061A36A40000000350
-:100E1000041A36B00001029F061A36B4000000031F
-:100E2000041A36C0000102A0061A36C400000003EE
-:100E3000041A36D0000102A1061A36D400000003BD
-:100E4000041A36E0000102A2061A36E4000000038C
-:100E5000041A36F0000102A3061A36F4000000035B
-:100E6000041A3700000102A4061A37040000000328
-:100E7000041A3710000102A5061A371400000003F7
-:100E8000041A3720000102A6061A372400000003C6
-:100E9000041A3730000102A7061A37340000000395
-:100EA000041A3740000102A8061A37440000000364
-:100EB000041A3750000102A9061A37540000000333
-:100EC000041A3760000102AA061A37640000000302
-:100ED000041A3770000102AB061A377400000003D1
-:100EE000041A3780000102AC061A378400000003A0
-:100EF000041A3790000102AD061A3794000000036F
-:100F0000041A37A0000102AE061A37A4000000033D
-:100F1000041A37B0000102AF061A37B4000000030C
-:100F2000041A37C0000102B0061A37C400000003DB
-:100F3000041A37D0000102B1061A37D400000003AA
-:100F4000041A37E0000102B2061A37E40000000379
-:100F5000041A37F0000102B3061A37F40000000348
-:100F6000041A3800000102B4061A38040000000315
-:100F7000041A3810000102B5061A381400000003E4
-:100F8000041A3820000102B6061A382400000003B3
-:100F9000041A3830000102B7061A38340000000382
-:100FA000041A3840000102B8061A38440000000351
-:100FB000041A3850000102B9061A38540000000320
-:100FC000041A3860000102BA061A386400000003EF
-:100FD000041A3870000102BB061A387400000003BE
-:100FE000041A3880000102BC061A3884000000038D
-:100FF000041A3890000102BD061A3894000000035C
-:10100000041A38A0000102BE061A38A4000000032A
-:10101000041A38B0000102BF061A38B400000003F9
-:10102000041A38C0000102C0061A38C400000003C8
-:10103000041A38D0000102C1061A38D40000000397
-:10104000041A38E0000102C2061A38E40000000366
-:10105000041A38F0000102C3061A38F40000000335
-:10106000041A3900000102C4061A39040000000302
-:10107000041A3910000102C5061A391400000003D1
-:10108000041A3920000102C6061A392400000003A0
-:10109000041A3930000102C7061A3934000000036F
-:1010A000041A3940000102C8061A3944000000033E
-:1010B000041A3950000102C9061A3954000000030D
-:1010C000041A3960000102CA061A396400000003DC
-:1010D000041A3970000102CB061A397400000003AB
-:1010E000041A3980000102CC061A3984000000037A
-:1010F000041A3990000102CD061A39940000000349
-:10110000041A39A0000102CE061A39A40000000317
-:10111000041A39B0000102CF061A39B400000003E6
-:10112000041A39C0000102D0061A39C400000003B5
-:10113000041A39D0000102D1061A39D40000000384
-:10114000041A39E0000102D2061A39E40000000353
-:10115000041A39F0000102D3061A39F40000000322
-:10116000041A3A00000102D4061A3A0400000003EF
-:10117000041A3A10000102D5061A3A1400000003BE
-:10118000041A3A20000102D6061A3A24000000038D
-:10119000041A3A30000102D7061A3A34000000035C
-:1011A000041A3A40000102D8061A3A44000000032B
-:1011B000041A3A50000102D9061A3A5400000003FA
-:1011C000041A3A60000102DA061A3A6400000003C9
-:1011D000041A3A70000102DB061A3A740000000398
-:1011E000041A3A80000102DC061A3A840000000367
-:1011F000041A3A90000102DD061A3A940000000336
-:10120000041A3AA0000102DE061A3AA40000000304
-:10121000041A3AB0000102DF061A3AB400000003D3
-:10122000041A3AC0000102E0061A3AC400000003A2
-:10123000041A3AD0000102E1061A3AD40000000371
-:10124000041A3AE0000102E2061A3AE40000000340
-:10125000041A3AF0000102E3061A3AF4000000030F
-:10126000041A3B00000102E4061A3B0400000003DC
-:10127000041A3B10000102E5061A3B1400000003AB
-:10128000041A3B20000102E6061A3B24000000037A
-:10129000041A3B30000102E7061A3B340000000349
-:1012A000041A3B40000102E8061A3B440000000318
-:1012B000041A3B50000102E9061A3B5400000003E7
-:1012C000041A3B60000102EA061A3B6400000003B6
-:1012D000041A3B70000102EB061A3B740000000385
-:1012E000041A3B80000102EC061A3B840000000354
-:1012F000041A3B90000102ED061A3B940000000323
-:10130000041A3BA0000102EE061A3BA400000003F1
-:10131000041A3BB0000102EF061A3BB400000003C0
-:10132000041A3BC0000102F0061A3BC4000000038F
-:10133000041A3BD0000102F1061A3BD4000000035E
-:10134000041A3BE0000102F2061A3BE4000000032D
-:10135000041A3BF0000102F3061A3BF400000003FC
-:10136000041A3C00000102F4061A3C0400000003C9
-:10137000041A3C10000102F5061A3C140000000398
-:10138000041A3C20000102F6061A3C240000000367
-:10139000041A3C30000102F7061A3C340000000336
-:1013A000041A3C40000102F8061A3C440000000305
-:1013B000041A3C50000102F9061A3C5400000003D4
-:1013C000041A3C60000102FA061A3C6400000003A3
-:1013D000041A3C70000102FB061A3C740000000372
-:1013E000041A3C80000102FC061A3C840000000341
-:1013F000041A3C90000102FD061A3C940000000310
-:10140000041A3CA0000102FE061A3CA400000003DE
-:10141000041A3CB0000102FF061A3CB400000003AD
-:10142000041A3CC000010300061A3CC4000000037B
-:10143000041A3CD000010301061A3CD4000000034A
-:10144000041A3CE000010302061A3CE40000000319
-:10145000041A3CF000010303061A3CF400000003E8
-:10146000041A3D0000010304061A3D0400000003B5
-:10147000041A3D1000010305061A3D140000000384
-:10148000041A3D2000010306061A3D240000000353
-:10149000041A3D3000010307061A3D340000000322
-:1014A000041A3D4000010308061A3D4400000003F1
-:1014B000041A3D5000010309061A3D5400000003C0
-:1014C000041A3D600001030A061A3D64000000038F
-:1014D000041A3D700001030B061A3D74000000035E
-:1014E000041A3D800001030C061A3D84000000032D
-:1014F000041A3D900001030D061A3D9400000003FC
-:10150000041A3DA00001030E061A3DA400000003CA
-:10151000041A3DB00001030F061A3DB40000000399
-:10152000041A3DC000010310061A3DC40000000368
-:10153000041A3DD000010311061A3DD40000000337
-:10154000041A3DE000010312061A3DE40000000306
-:10155000041A3DF000010313061A3DF400000003D5
-:10156000041A3E0000010314061A3E0400000003A2
-:10157000041A3E1000010315061A3E140000000371
-:10158000041A3E2000010316061A3E240000000340
-:10159000041A3E3000010317061A3E34000000030F
-:1015A000041A3E4000010318061A3E4400000003DE
-:1015B000041A3E5000010319061A3E5400000003AD
-:1015C000041A3E600001031A061A3E64000000037C
-:1015D000041A3E700001031B061A3E74000000034B
-:1015E000041A3E800001031C061A3E84000000031A
-:1015F000041A3E900001031D061A3E9400000003E9
-:10160000041A3EA00001031E061A3EA400000003B7
-:10161000041A3EB00001031F061A3EB40000000386
-:10162000041A3EC000010320061A3EC40000000355
-:10163000041A3ED000010321061A3ED40000000324
-:10164000041A3EE000010322061A3EE400000003F3
-:10165000041A3EF000010323061A3EF400000003C2
-:10166000041A3F0000010324061A3F04000000038F
-:10167000041A3F1000010325061A3F14000000035E
-:10168000041A3F2000010326061A3F24000000032D
-:10169000041A3F3000010327061A3F3400000003FC
-:1016A000041A3F4000010328061A3F4400000003CB
-:1016B000041A3F5000010329061A3F54000000039A
-:1016C000041A3F600001032A061A3F640000000369
-:1016D000041A3F700001032B061A3F740000000338
-:1016E000041A3F800001032C061A3F840000000307
-:1016F000041A3F900001032D061A3F9400000003D6
-:10170000041A3FA00001032E061A3FA400000003A4
-:10171000041A3FB00001032F061A3FB40000000373
-:10172000041A3FC000010330061A3FC40000000342
-:10173000041A3FD000010331061A3FD40000000311
-:10174000041A3FE000010332061A3FE400000007DC
-:10175000041A4CB000080333061A400000000124AC
-:10176000021A492000000000061A2500000000109F
-:10177000061A258000000012061A09C00000004861
-:10178000061A080000000002061A082000000012D5
-:10179000041A2FB00002033B041A4CF00002033D70
-:1017A000061A500000000004061A449000000124AC
-:1017B000021A492400000000061A2540000000100B
-:1017C000061A25C800000012061A0AE000000048A8
-:1017D000061A081000000002061A0868000000122D
-:1017E000041A2FB80002033F041A4CF80002034108
-:1017F000061A5010000000040200A468000AFFDC72
-:101800000200A280000000010200A294071D29111D
-:101810000200A298000000000200A29C009C042488
-:101820000200A2A0000000000200A2A40000020921
-:101830000200A4FCFF000000020100B4000000014F
-:10184000020100B800000001020100DC00000001FC
-:10185000020101000000000102010104000000017A
-:101860000201007C0030000002010084000000281A
-:101870000201008C000000000201013000000004A1
-:101880000201025C000000010201032800000000C8
-:101890000201055400000030020100C400000001F4
-:1018A000020100CC00000001020100F8000000016C
-:1018B000020100F000000001020100800030000081
-:1018C00002010088000000280201009000000000D2
-:1018D0000201013400000004020102DC00000001EA
-:1018E0000201032C0000000002010564000000302A
-:1018F000020100C800000001020100D00000000148
-:10190000020100FC00000001020100F400000001DF
-:10191000020C100000000028020C200800000A1130
-:10192000020C200C00000A00020C201000000A0427
-:10193000020C201C0000FFFF020C20200000FFFF13
-:10194000020C20240000FFFF020C20280000FFFFF3
-:10195000020C203800000020020C203C0000002176
-:10196000020C204000000022020C20440000002352
-:10197000020C204800000024020C204C000000252E
-:10198000020C205000000026020C2054000000270A
-:10199000020C205800000028020C205C00000029E6
-:1019A000020C20600000002A020C20640000002BC2
-:1019B000020C20680000002C020C206C0000002D9E
-:1019C000020C20700000002E020C20740000002F7A
-:1019D000020C207800000010060C207C0000004F54
-:1019E000020C21B800000001020C21BC0000000123
-:1019F000020C21C000000001020C21C40000000103
-:101A0000020C21C800000001020C21CC00000001E2
-:101A1000020C21D000000001020C21D400000001C2
-:101A2000020C21D800000001020C21DC00000001A2
-:101A3000020C21E000000001020C21E40000000182
-:101A4000020C21E800000001020C21EC0000000162
-:101A5000020C21F000000001020C21F40000000142
-:101A6000020C21F800000001060C21FC0000000F10
-:101A7000020C223807FFFFFF020C223C0000003F4F
-:101A8000020C224007FFFFFF020C22440000000F5F
-:101A9000010C224800000000010C224C0000000054
-:101AA000010C225000000000010C22540000000034
-:101AB000010C225800000000010C225C0000000014
-:101AC000010C226000000000010C226400000000F4
-:101AD000010C226800000000010C226C00000000D4
-:101AE000010C227000000000010C227400000000B4
-:101AF000010C227800000000010C227C0000000094
-:101B0000020C24BC000000010C0C2000000003E8C3
-:101B10000A0C2000000000010B0C20000000000A4D
-:101B2000020C400800000562020C400C0000055148
-:101B3000020C401000000555020C40140000057214
-:101B4000020C401C0000FFFF020C40200000FFFFC1
-:101B5000020C40240000FFFF020C40280000FFFFA1
-:101B6000020C403800000046020C403C0000000C13
-:101B7000060C40400000005E020C41B8000000016D
-:101B8000060C41BC0000001F020C423807FFFFFF9B
-:101B9000020C423C0000003F020C424007FFFFFFE6
-:101BA000020C42440000000F010C424800000000FB
-:101BB000010C424C00000000010C425000000000EB
-:101BC000010C425400000000010C425800000000CB
-:101BD000010C425C00000000010C426000000000AB
-:101BE000010C426400000000010C4268000000008B
-:101BF000010C426C00000000010C4270000000006B
-:101C0000010C427400000000010C4278000000004A
-:101C1000010C427C00000000010C4280000000002A
-:101C2000020C44C0000000010C0C4000000003E85E
-:101C30000A0C4000000000010B0C40000000000AEC
-:101C4000060D400000000A00020D004400000032B2
-:101C5000020D008C02150020020D009002150020DC
-:101C6000020D009408100000020D009800000033DF
-:101C7000020D009C00000002020D00A00000000008
-:101C8000020D00A400000005020D00A800000005E0
-:101C9000060D00AC00000002020D00B400000002BE
-:101CA000020D00B800000003020D00BC000000029D
-:101CB000020D00C000000001020D00C8000000027B
-:101CC000020D00CC00000002020D015C00000001CA
-:101CD000020D016400000001020D01680000000215
-:101CE000020D020400000001020D020C00000020A1
-:101CF000020D021000000040020D0214000000401E
-:101D0000020D022000000003020D02240000001852
-:101D1000060D028000000012040D030000180343AA
-:101D2000060D03600000000C020D004C00000001D5
-:101D3000020D005000000002020D005400000000DF
-:101D4000020D005800000008060D005C00000004B1
-:101D5000020D00C400000004020D0114000000097F
-:101D6000020D011800000029020D011C0000000AEC
-:101D7000020D01200000002A020D012400000000D5
-:101D8000020D012800000020020D012C00000000BF
-:101D9000020D013000000020020D0134000000009F
-:101DA000020D013800000020020D013C000000007F
-:101DB000020D014000000020020D0144000000005F
-:101DC000020D014800000020020D00040000000187
-:101DD000020D000800000001020D000C00000001CF
-:101DE000020D001000000001020D001400000001AF
-:101DF000020D001800000001020D001C000000018F
-:101E0000020D002000000001020D0024000000016E
-:101E1000020D002800000001020D002C000000014E
-:101E2000020D003000000001020D0034000000012E
-:101E3000020D003800000001020D003C000000010E
-:101E4000060E200000000800020E004C00000032C8
-:101E5000020E009402150020020E009802150020C8
-:101E6000020E009C00000030020E00A008100000CE
-:101E7000020E00A400000033020E00A80000003093
-:101E8000020E00AC00000031020E00B000000002A3
-:101E9000020E00B400000004020E00B800000000B2
-:101EA000020E00BC00000002020E00C00000000292
-:101EB000020E00C400000000020E00C80000000274
-:101EC000020E00CC00000007020E00D0000000024D
-:101ED000020E00D400000002020E00D80000000133
-:101EE000020E014400000001020E014C000000013E
-:101EF000020E015000000002020E02040000000168
-:101F0000020E020C00000040020E02100000004011
-:101F1000020E021C00000004020E0220000000203D
-:101F2000020E02240000000E020E02280000001B18
-:101F3000060E030000000012040E0280001B035B6B
-:101F4000060E02EC00000005020E00540000000C1A
-:101F5000020E00580000000C020E005C00000000A1
-:101F6000020E006000000010060E00640000000475
-:101F7000020E00DC00000003020E01100000000F42
-:101F8000020E01140000002F020E011800000000D4
-:101F9000020E011C00000020020E000400000001DF
-:101FA000020E000800000001020E000C00000001FB
-:101FB000020E001000000001020E001400000001DB
-:101FC000020E001800000001020E001C00000001BB
-:101FD000020E002000000001020E0024000000019B
-:101FE000020E002800000001020E002C000000017B
-:101FF000020E003000000001020E0034000000015B
-:10200000020E003800000001020E003C000000013A
-:10201000020E004000000001020E0044000000011A
-:102020000730040000AF0000083007680013037693
-:10203000073400003305000007348000327F0CC2F3
-:10204000073500001A951962083539E058C403783D
-:10205000013000000000000001300004000000001A
-:1020600001300008000000000130000C00000000FA
-:1020700001300010000000000130001400000000DA
-:1020800002300020000000010230002400000002A5
-:1020900002300028000000030230002C0000000085
-:1020A0000230003000000004023000340000000163
-:1020B00002300038000000000230003C0000000147
-:1020C0000230004000000004023000440000000024
-:1020D00002300048000000010230004C0000000304
-:1020E00002300050000000000230005400000001E7
-:1020F00002300058000000040230005C00000000C4
-:1021000002300060000000010230006400000003A3
-:1021100002300068000000000230006C0000000186
-:102120000230007000000004023000740000000063
-:1021300002300078000000040230007C0000000340
-:102140000630008000000002023000A400003FFFC3
-:10215000023000A8000003FF02300224000000004B
-:1021600002300234000000000230024C0000000087
-:10217000023002E40000FFFF0630200000000800EB
-:1021800002338BC000000001023380000000001AFF
-:10219000023380400000004E0233808000000010B7
-:1021A000023380C0000000200C3383000007A12010
-:1021B0000A338300000001380B33830000001388CA
-:1021C0000A338340000000000C338340000001F418
-:1021D0000B33834000000005023383800007A120F9
-:1021E000023383C0000001F406322A88000000C2D6
-:1021F00006322008000000C806322000000000025D
-:10220000063223E80000004004322E580004037A0E
-:10221000063250A000000004063250B80000000250
-:102220000632508000000006043250980002037EFF
-:10223000063250000000002006323000000004008A
-:1022400006321C0000000004043218300002038033
-:10225000063224E8000000B402322DB00000000075
-:1022600006324000000000B40632300000000020BA
-:10227000063231000000002006323200000000204B
-:102280000632330000000020063234000000002037
-:102290000632350000000020063236000000002023
-:1022A000063237000000002006323800000000200F
-:1022B000063239000000002006323A0000000020FB
-:1022C00006323B000000002006323C0000000020E7
-:1022D00006323D000000002006323E0000000020D3
-:1022E00006323F000000002006321C1000000002F1
-:1022F000063245A000000024063227B8000000B4D2
-:1023000002322DB400000000063242D0000000B4BA
-:1023100006323080000000200632318000000020AC
-:102320000632328000000020063233800000002098
-:102330000632348000000020063235800000002084
-:102340000632368000000020063237800000002070
-:10235000063238800000002006323980000000205C
-:1023600006323A800000002006323B800000002048
-:1023700006323C800000002006323D800000002034
-:1023800006323E800000002006323F800000002020
-:1023900006321C20000000020632463000000024F5
-:1023A0000720040000870000082007800010038237
-:1023B000072400003165000007248000081D0C5A26
-:1023C00008248EB06C9003840120000000000000FF
-:1023D00001200004000000000120000800000000AF
-:1023E0000120000C0000000001200010000000008F
-:1023F0000120001400000000022000200000000165
-:102400000220002400000002022000280000000337
-:102410000220002C00000000022000300000000418
-:1024200002200034000000010220003800000000FB
-:102430000220003C000000010220004000000004D7
-:1024400002200044000000000220004800000001BB
-:102450000220004C00000003022000500000000099
-:102460000220005400000001022000580000000477
-:102470000220005C0000000002200060000000015B
-:102480000220006400000003022000680000000039
-:102490000220006C00000001022000700000000417
-:1024A00002200074000000000220007800000004F8
-:1024B0000220007C000000030620008000000002D3
-:1024C000022000A400003FFF022000A8000003FF3C
-:1024D000022002240000000002200234000000005C
-:1024E0000220024C00000000022002E40000FFFF76
-:1024F000062020000000080002238BC0000000011D
-:10250000022380000000001002238040000000121F
-:102510000223808000000030022380C00000000EF3
-:102520000C2383000007A1200A2383000000013848
-:102530000B238300000013880A238340000000005F
-:102540000C238340000001F40B23834000000005AE
-:10255000022383800007A120022383C0000001F42E
-:10256000062250000000004206222008000000C899
-:10257000062220000000000206224000000000C6E3
-:1025800004224318000503860622432C0000000B9A
-:10259000042243580005038B0622436C0000000B05
-:1025A0000422439800050390062243AC0000000B70
-:1025B000042243D800050395062243EC0000000BDB
-:1025C000042244180005039A0622442C0000000B44
-:1025D000042244580005039F0622446C0000000BAF
-:1025E00004224498000503A4062244AC0000000B1A
-:1025F000042244D8000503A9062244EC0000000B85
-:1026000004224518000503AE0622452C0000000BED
-:1026100004224558000503B30622456C0000000B58
-:1026200004224598000503B8062245AC0000000BC3
-:10263000042245D8000503BD062245EC0000000B2E
-:1026400004224618000503C20622462C0000000B97
-:1026500004224658000503C70622466C0000000B02
-:1026600004224698000503CC062246AC0000000B6D
-:10267000042246D8000503D1062246EC0000000BD8
-:1026800004224718000503D60622472C0000000B41
-:1026900004224758000503DB0622476C0000000BAC
-:1026A00004224798000503E0062247AC0000000B17
-:1026B000042247D8000503E5062247EC0000000B82
-:1026C00004224818000503EA0622482C0000000BEB
-:1026D00004224858000503EF0622486C0000000B56
-:1026E00004224898000503F4062248AC0000000BC1
-:1026F000042248D8000503F9062248EC0000000B2C
-:1027000004224918000503FE0622492C0000000B94
-:1027100004224958000504030622496C0000000BFE
-:102720000422499800050408062249AC0000000B69
-:10273000042249D80005040D062249EC0000000BD4
-:1027400004224A180005041206224A2C0000000B3D
-:1027500004224A580005041706224A6C0000000BA8
-:1027600004224A980005041C06224AAC0000000B13
-:1027700004224AD80005042106224AEC0000000584
-:1027800006224B000000001704224B5C00010426C7
-:1027900006224B600000000304224B6C000104275A
-:1027A000062238000000004006223000000002002F
-:1027B000042251C00004042806221000000000C0BA
-:1027C000062215C00000024004221EC80008042C86
-:1027D0000622390000000008022251180000000003
-:1027E000062251D00000000606221300000000025D
-:1027F00006221410000000300622392000000008D4
-:102800000222511C00000000062251E800000006D0
-:102810000622130800000002062214D00000003037
-:102820000216100000000028021700080000000235
-:102830000217002C000000030217003C00000004F7
-:1028400002170044000000000217004800000002C8
-:102850000217004C0000009002170050000000908A
-:102860000217005400800090021700580810000062
-:10287000021700600000008A021700640000008058
-:1028800002170068000000810217006C0000008041
-:10289000021700700000000602170078000007D041
-:1028A0000217007C0000076C02170038007C10043F
-:1028B000021700040000000F06164024000000026A
-:1028C000021640700000001C0216420800000001C1
-:1028D0000216421000000001021642200000000112
-:1028E00002164228000000010216423000000001DA
-:1028F000021642380000000102164260000000018A
-:102900000C16401C0003D0900A16401C0000009CCE
-:102910000B16401C000009C40216403000000008DD
-:10292000021640340000000C02164038000000106F
-:102930000216404400000020021640000000000182
-:10294000021640D8000000010216400800000001F5
-:102950000216400C000000010216401000000001A9
-:10296000021642400000000002164248000000002B
-:1029700006164270000000020216425000000000DD
-:1029800002164258000000000616428000000002B5
-:1029900002166008000006140216600C0000060013
-:1029A00002166010000006040216601C0000FFFF03
-:1029B000021660200000FFFF021660240000FFFFE7
-:1029C000021660280000FFFF021660380000002099
-:1029D0000216603C00000020061660400000000265
-:1029E00002166048000000230216604C000000241C
-:1029F00002166050000000250216605400000026F8
-:102A000002166058000000270216605C00000029D2
-:102A1000021660600000002A021660640000002BAD
-:102A2000021660680000002C0216606C0000002D89
-:102A30000616607000000012021660B80000000167
-:102A4000021660BC00000001061660C00000003ED7
-:102A5000021661B800000001061661BC0000001FEC
-:102A60000216623807FFFFFF0216623C0000003FBB
-:102A70000216624007FFFFFF021662440000000FCB
-:102A800001166248000000000116624C00000000C0
-:102A900001166250000000000116625400000000A0
-:102AA00001166258000000000116625C0000000080
-:102AB0000116626000000000011662640000000060
-:102AC00001166268000000000116626C0000000040
-:102AD0000116627000000000011662740000000020
-:102AE00001166278000000000116627C0000000000
-:102AF000021664BC000000010C166000000003E830
-:102B00000A166000000000010B1660000000000AB9
-:102B100002168040000000060216804400000005F6
-:102B2000021680480000000A0216804C00000005D2
-:102B30000216805400000002021680CC000000043F
-:102B4000021680D000000004021680D400000004A9
-:102B5000021680D800000004021680DC0000000489
-:102B6000021680E000000004021680E40000000469
-:102B7000021680E800000004021688040000000429
-:102B8000021680300000007C021680340000003DF8
-:102B9000021680380000003F0216803C0000009CB6
-:102BA000021680F000000007061680F40000000501
-:102BB0000216880C010101010216810800000000C4
-:102BC0000216810C000000040216811000000004AF
-:102BD0000216811400000002021688100801200469
-:102BE00002168118000000050216811C0000000575
-:102BF0000216812000000005021681240000000555
-:102C00000216882C200810010216812800000008F6
-:102C10000216812C00000006021681300000000719
-:102C200002168134000000000216883001010120E4
-:102C300006168138000000040216883401010101E3
-:102C400006168148000000040216883801010101BF
-:102C500006168158000000040216883C010101019B
-:102C6000061681680000000302168174000000014E
-:102C7000021688400101010102168178000000015E
-:102C80000216817C00000001021681800000000114
-:102C9000021681840000000102168844010101012E
-:102CA00002168188000000010216818C00000004D9
-:102CB00002168190000000040216819400000002B8
-:102CC00002168848080120040216819800000005B9
-:102CD0000216819C00000005021681A0000000057C
-:102CE000021681A4000000050216881420081001B5
-:102CF000021681A800000008021681AC0000000640
-:102D0000021681B000000007021681B40000000125
-:102D10000216881801010120021681B80000000186
-:102D2000021681BC00000001021681C000000001F3
-:102D3000021681C4000000010216881C0101010175
-:102D4000021681C800000001021681CC00000001BB
-:102D5000021681D000000001021681D4000000019B
-:102D60000216882001010101021681D8000000012D
-:102D7000021681DC00000001021681E00000000163
-:102D8000021681E4000000010216882401010101FD
-:102D9000021681E800000001021681EC000000012B
-:102DA000021681F0000000010216882801010101CD
-:102DB00002168240FFFF003F061682440000000218
-:102DC0000216824CFFFF003F0216825000000100F5
-:102DD000021682540000010006168258000000020C
-:102DE00002168260000000C002168264000000C06B
-:102DF0000216826800001E000216826C00001E008F
-:102E0000021682700000400002168274000040002A
-:102E100002168278000080000216827C000080008A
-:102E2000021682800000200002168284000020002A
-:102E30000616828800000007021682A40000000126
-:102E4000061682A80000000A021681F400000C0891
-:102E5000021681F800000040021681FC000001000B
-:102E600002168200000000200216820400000017F3
-:102E700002168208000000800216820C0000020088
-:102E8000021682100000000002168218FFFF01FFE8
-:102E900002168214FFFF01FF0216823C000000139D
-:102EA000021680900000013F021680600000014081
-:102EB00002168064000001400616806800000002CF
-:102EC00002168070000000C0061680740000000723
-:102ED0000216809C00000048021680A000000048F6
-:102EE000061680A400000002021680AC0000004814
-:102EF000061680B00000000702168238000080002D
-:102F000002168234000025E40216809400007FFF40
-:102F100002168220000000070216821C0000000733
-:102F2000021682280000000002168224FFFFFFFF25
-:102F300002168230000000000216822CFFFFFFFF05
-:102F4000021680EC000000FF0214000000000001E7
-:102F50000214000C000000010214004000000001F7
-:102F60000214004400007FFF0214000C0000000067
-:102F700002140000000000000214006C00000000B9
-:102F800002140004000000010214003000000001DF
-:102F900002140004000000000214005C00000000A5
-:102FA00002140008000000010214003400000001B7
-:102FB000021400080000000002140060000000007D
-:102FC00006028000000020000202005800000032CB
-:102FD000020200A003150020020200A40315002035
-:102FE000020200A801000030020200AC081000003C
-:102FF000020200B000000033020200B40000003002
-:10300000020200B800000031020200BC0000000310
-:10301000020200C000000006020200C4000000031B
-:10302000020200C800000003020200CC00000002FF
-:10303000020200D000000000020200D400000002E2
-:10304000020200DC00000000020200E000000006B6
-:10305000020200E400000004020200E80000000296
-:10306000020200EC00000002020200F00000000179
-:10307000020200FC00000006020201200000000025
-:103080000202013400000002020201B0000000014F
-:103090000202020C00000001020202140000000102
-:1030A00002020218000000020202040400000001F3
-:1030B0000202040C00000040020204100000004064
-:1030C0000202041C00000004020204200000002090
-:1030D0000202042400000002020204280000001F73
-:1030E00006020500000000120402048000200434DF
-:1030F000020200600000000F0202006400000007EE
-:1031000002020068000000000202006C0000000ED5
-:103110000602007000000004020200F40000000437
-:103120000202000400000001020200080000000189
-:103130000202000C00000001020200100000000169
-:103140000202001400000001020200180000000149
-:103150000202001C00000001020200200000000129
-:103160000202002400000001020200280000000109
-:103170000202002C000000010202003000000001E9
-:1031800002020034000000010202003800000001C9
-:103190000202003C000000010202004000000001A9
-:1031A0000202004400000001020200480000000189
-:1031B0000202004C00000001020200500000000169
-:1031C00002020108000000C802020118000000020B
-:1031D000020201C400000000020201CC0000000055
-:1031E000020201D400000002020201DC0000000221
-:1031F000020201E4000000FF020201EC000000FFF7
-:103200000202010C000000C80202011C00000002C2
-:10321000020201C800000000020201D0000000000C
-:10322000020201D800000002020201E000000002D8
-:10323000020201E8000000FF020201F0000000FFAE
-:1032400007280400008E00000828076800130454B3
-:10325000072C000033C80000072C800038050CF351
-:10326000072D000038B61AF5072D800007762923B0
-:10327000082D8CB04E6A04560128000000000000A2
-:1032800001280004000000000128000800000000E0
-:103290000128000C000000000128001000000000C0
-:1032A0000128001400000000022800200000000196
-:1032B0000228002400000002022800280000000369
-:1032C0000228002C0000000002280030000000044A
-:1032D000022800340000000102280038000000002D
-:1032E0000228003C00000001022800400000000409
-:1032F00002280044000000000228004800000001ED
-:103300000228004C000000030228005000000000CA
-:1033100002280054000000010228005800000004A8
-:103320000228005C0000000002280060000000018C
-:10333000022800640000000302280068000000006A
-:103340000228006C00000001022800700000000448
-:103350000228007400000000022800780000000429
-:103360000228007C00000003062800800000000204
-:10337000022800A400003FFF022800A8000003FF6D
-:10338000022802240000000002280234000000008D
-:103390000228024C00000000022802E40000FFFFA7
-:1033A0000628200000000800022B8BC0000000014E
-:1033B000022B800000000000022B8040000000185B
-:1033C000022B80800000000C022B80C000000066F1
-:1033D0000C2B83000007A1200A2B8300000001387A
-:1033E0000B2B8300000013880A2B83400000000091
-:1033F0000C2B8340000001F40B2B834000000005E0
-:10340000022B83800007A120022B83C0000001F45F
-:10341000062A3D4800000004042A3D5800020458D2
-:10342000062A3D6000000006062A30000000004821
-:10343000062A2008000000C8062A2000000000021A
-:10344000062A31280000008E062A33680000000397
-:10345000042A33740001045A062A3A780000000254
-:10346000042A3A800002045B042A3A700002045DD8
-:10347000042A3E280002045F042A3EB000040461CE
-:10348000042A250000020465062A25080000010020
-:10349000062A297000000004042A29600004046739
-:1034A000042A2F480002046B062A3378000000D853
-:1034B000022A3A3800000000062A3A88000000324A
-:1034C000042A3D880010046D062A502000000002E6
-:1034D000062A503000000002062A500000000002B8
-:1034E000062A501000000002022A50B80000000115
-:1034F000062A50480000000E042A3D780002047D90
-:10350000062A3C1800000026022A50400000000055
-:10351000062A36D8000000D8022A3A3C00000000F3
-:10352000062A3B5000000032042A3DC80010047FE8
-:10353000062A502800000002062A50380000000227
-:10354000062A500800000002062A50180000000257
-:10355000022A50BC00000001062A50800000000E24
-:10356000042A3D800002048F062A3CB00000002699
-:10357000022A504400000000021010080000000160
-:103580000210101000000264021010000003D000AE
-:10359000021010040000003D091018000200049100
-:1035A00009101100001006910610114000000008DB
-:1035B00009101160000806A1061011800000000229
-:1035C00009101188000606A9061011A000000018B5
-:1035D000021010100000000006102400000000E09F
-:1035E0000210201C0000000002102020000000013A
-:1035F000021020C0000000010210200400000001A1
-:10360000021020080000000109103C00000506AF70
-:1036100009103C20000506B409103800000506B961
-:1036200002104028000000100210404400003FFF3C
-:103630000210405800280000021040840084924A82
-:1036400006104C000000010002104058000000006D
-:103650000610806800000004021080000000108046
-:1036600006108028000000020210803800000010C0
-:10367000021080400000FFFF021080440000FFFFA6
-:1036800002108050000000000210810000000000C5
-:10369000061081200000000202108008000002B520
-:1036A0000210801000000000061082000000004A96
-:1036B000021081080001FFFF061081400000000297
-:1036C0000210800000001A80061090000000002404
-:1036D000061091200000004A061093700000004A76
-:1036E000061095C00000004A0210800400001080FF
-:1036F00006108030000000020210803C0000001024
-:10370000021080480000FFFF0210804C0000FFFF05
-:10371000021080540000000002108104000000002C
-:1037200006108128000000020210800C000002B583
-:103730000210801400000000061084000000004AFF
-:103740000210810C0001FFFF0610814800000002FA
-:103750000210800400001A800610909000000024DF
-:10376000061092480000004A061094980000004A93
-:10377000061096E80000004A0212049000E383401D
-:103780000212051400003C10021205200000000285
-:1037900002120494FFFFFFFF02120498FFFFFFFFD5
-:1037A0000212049CFFFFFFFF021204A0FFFFFFFFB5
-:1037B000021204A4FFFFFFFF021204A8FFFFFFFF95
-:1037C000021204ACFFFFFFFF021204B0FFFFFFFF75
-:1037D000021204B8FFFFFFFF021204BCFFFFFFFF4D
-:1037E000021204C0FFFFFFFF021204C4FFFFFFFF2D
-:1037F000021204C8FFFFFFFF021204CCFFFFFFFF0D
-:10380000021204D0FFFFFFFF021204DCFFFFFFFFE4
-:10381000021204E0FFFFFFFF021204E4FFFFFFFFBC
-:10382000021204E8FFFFFFFF021204ECFFFFFFFF9C
-:10383000021204F0FFFFFFFF021204F4FFFFFFFF7C
-:10384000021204F8FFFFFFFF021204FCFFFFFFFF5C
-:1038500002120500FFFFFFFF02120504FFFFFFFF3A
-:1038600002120508FFFFFFFF0212050CFFFFFFFF1A
-:1038700002120510FFFFFFFF021204D4FFFF3330D6
-:10388000021204D8FFFF3340021204B4F0003000EB
-:1038900002120390000000080212039C00000008BE
-:1038A000061203A000000002021203BC0000000484
-:1038B000021203C400000004021203D00000000042
-:1038C000021203DC000000000212036C0000000181
-:1038D000021203680000003F021201BC0000004019
-:1038E000021201C000001808021201C400000803FF
-:1038F000021201C800000803021201CC00000040BF
-:10390000021201D000000003021201D400000803DB
-:10391000021201D800000803021201DC00000803B3
-:10392000021201E000010003021201E4000008039A
-:10393000021201E800000803021201EC000000037B
-:10394000021201F000000003021201F40000000363
-:10395000021201F800000003021201FC0000000343
-:103960000212020000000003021202040000000321
-:1039700002120208000000030212020C0000000301
-:1039800002120210000000030212021400000003E1
-:1039900002120218000000030212021C00000003C1
-:1039A00002120220000000030212022400000003A1
-:1039B00002120228000024030212022C0000002F31
-:1039C0000212023000000009021202340000001945
-:1039D00002120238000001840212023C000001833E
-:1039E0000212024000000306021202440000001905
-:1039F00002120248000000060212024C00000306F8
-:103A000002120250000003060212025400000306D4
-:103A10000212025800000C860212025C000003062B
-:103A20000212026000000306021202640000000697
-:103A300002120268000000060212026C000000067A
-:103A4000021202700000000602120274000000065A
-:103A500002120278000000060212027C000000063A
-:103A6000021202800000000602120284000000061A
-:103A700002120288000000060212028C00000006FA
-:103A800002120290000000060212029400000006DA
-:103A900002120298000000060212029C00000006BA
-:103AA000021202A000000306021202A4000000138A
-:103AB000021202A800000006021202B00000100468
-:103AC000021202B400001004021203240010644029
-:103AD0000212032800106440021201B0000000012D
-:103AE0000600A000000000160200A06CBF5C0000F1
-:103AF0000200A070FFF51FEF0200A0740000FFFF9E
-:103B00000200A078F00003E00200A07C00000000AA
-:103B10000200A0800000A0000600A08400000005B4
-:103B20000200A0980FE000000600A09C0000001416
-:103B30000200A0EC555400000200A0F05555555568
-:103B40000200A0F4000055550200A0F8F0000000AB
-:103B50000200A0FC555400000200A1005555555527
-:103B60000200A104000055550200A108F000000069
-:103B70000600A22C000000040200A0600000030761
-:103B80000200A10CBF5C00000200A110FFF51FEFB6
-:103B90000200A1140000FFFF0200A118F00003E0E2
-:103BA0000200A11C000000000200A1200000A000F3
-:103BB0000600A124000000050200A1380FE000006B
-:103BC0000600A13C000000140200A18C5554000026
-:103BD0000200A190555555550200A194000055557D
-:103BE0000200A198F00000000200A19C55540000C2
-:103BF0000200A1A0555555550200A1A4000055553D
-:103C00000200A1A8F00000000600A23C0000000491
-:103C10000200A06400000307000000000000000094
-:103C20000000002E00000000000000000000000066
-:103C30000000000000000000000000000000000084
-:103C40000000000000000000000000000000000074
-:103C50000000000000000000000000000000000064
-:103C60000000000000000000000000000000000054
-:103C70000000000000000000002E004D00000000C9
-:103C80000000000000000000000000000000000034
-:103C90000000000000000000000000000000000024
-:103CA00000000000004D008B00000000000000003C
-:103CB0000000000000000000000000000000000004
-:103CC00000000000000000000000000000000000F4
-:103CD000008B009000900094009400980000000079
-:103CE00000000000000000000000000000000000D4
-:103CF000000000000000000000000000009802DE4C
-:103D000002DE02E802E802F200000000000000000B
-:103D100000000000000000000000000000000000A3
-:103D20000000000000000000000000000000000093
-:103D30000000000000000000000000000000000083
-:103D40000000000000000000000000000000000073
-:103D50000000000000000000000000000000000063
-:103D60000000000000000000000000000000000053
-:103D70000000000000000000000000000000000043
-:103D80000000000000000000000000000000000033
-:103D90000000000000000000000000000000000023
-:103DA0000000000000000000000000000000000013
-:103DB0000000000000000000000000000000000003
-:103DC00000000000000000000000000000000000F3
-:103DD000000000000000000002F202FA00000000F3
-:103DE00000000000000000000000000000000000D3
-:103DF00000000000000000000000000000000000C3
-:103E000000000000000000000000000000000000B2
-:103E100000000000000000000000000000000000A2
-:103E20000000000000000000000000000000000092
-:103E300002FA02FF02FF030A030A03150000000052
-:103E40000000000000000000000000000000000072
-:103E50000000000000000000000000000000000062
-:103E60000000000000000000000000000000000052
-:103E70000000000000000000000000000000000042
-:103E80000000000000000000031503160000000001
-:103E90000000000000000000000000000000000022
-:103EA0000000000000000000000000000000000012
-:103EB000000000000316035700000000000000008F
-:103EC00000000000000000000000000000000000F2
-:103ED00000000000000000000000000000000000E2
-:103EE0000357037B000000000000000000000000FA
-:103EF00000000000000000000000000000000000C2
-:103F0000000000000000000000000000037B03BB75
-:103F100000000000000000000000000000000000A1
-:103F20000000000000000000000000000000000091
-:103F3000000000000000000003BB03F700000000C9
-:103F40000000000000000000000000000000000071
-:103F50000000000000000000000000000000000061
-:103F60000000000003F7043D043D045204520467BE
-:103F70000000000000000000000000000000000041
-:103F80000000000000000000000000000000000031
-:103F9000046704ED04ED04F204F204F700000000ED
-:103FA0000000000000000000000000000000000011
-:103FB00000000000000000000000000004F704F80A
-:103FC00000000000000000000000000000000000F1
-:103FD00000000000000000000000000000000000E1
-:103FE000000000000000000004F8050A00000000C6
-:103FF00000000000000000000000000000000000C1
-:1040000000000000000000000000000000000000B0
-:1040100000000000050A051F051F052205220525D1
-:104020000000000000000000000000000000000090
-:104030000000000000000000000000000000000080
-:1040400005250555000000000000000000000000EC
-:104050000000000000000000000000000000000060
-:10406000000000000000000000000000055505DC15
-:104070000000000000000000000000000000000040
-:104080000000000000000000000000000000000030
-:10409000000000000000000005DC05E305E305E783
-:1040A00005E705EB00000000000000000000000034
-:1040B0000000000000000000000000000000000000
-:1040C0000000000005EB062B062B06330633063BEB
-:1040D00000000000000000000000000000000000E0
-:1040E00000000000000000000000000000000000D0
-:1040F000063B068806880695069506A20000000085
-:1041000000000000000000000000000000000000AF
-:1041100000000000000000000000000006A206AE43
-:10412000000000000000000000000000000000008F
-:10413000000000000000000000000000000000007F
-:10414000000000000000000006AE06B40000000001
-:10415000000000000000000000000000000000005F
-:10416000000000000000000000000000000000004F
-:104170000000000006B406B70000000000000000C8
-:10418000000000000000000000000000000000002F
-:10419000000000000000000000000000000000001F
-:1041A00006B706BD0000000000000000000000008F
-:1041B00000000000000000000000000000000000FF
-:1041C00000000000000000000000000006BD06BE68
-:1041D00006BE06D006D006E2000000000000000087
-:1041E00000000000000000000000000000000000CF
-:1041F000000000000000000006E2074F0000000081
-:1042000000000000000000000000000000000000AE
-:10421000000000000000000000000000000000009E
-:1042200000000000074F0750075007630763077639
-:10423000000000000000000000000000000000007E
-:10424000000000000000000000000000000000006E
-:10425000000000000000000000000000000000005E
-:10426000000000000000000000000000000000004E
-:10427000000000000000000000000000000000003E
-:10428000000000000000000000000000000000002E
-:10429000000000000000000000000000000000001E
-:1042A000000000000000000000000000000000000E
-:1042B00000000000000000000000000000000000FE
-:1042C00000000000000000000000000000000000EE
-:1042D00000000000000000000000000000000000DE
-:1042E00000000000000000000000000000000000CE
-:1042F00000000000000000000000000000000000BE
-:1043000000000000000000000000000000000000AD
-:10431000000000000000000000000000000000009D
-:10432000000000000000000000000000000000008D
-:1043300000010000000204C00003098000040E40D8
-:1043400000051300000617C000071C80000821406C
-:1043500000092600000A2AC0000B2F80000C344000
-:10436000000D3900000E3DC0000F42800010474094
-:1043700000114C00001250C00013558000145A4028
-:1043800000155F00001663C00017688000186D40BC
-:1043900000197200001A76C0001B7B80001C804050
-:1043A000001D8500001E89C0001F8E800000934004
-:1043B00000002000000040000000600000008000BD
-:1043C0000000A0000000C0000000E00000010000AC
-:1043D0000001200000014000000160000001800099
-:1043E0000001A0000001C0000001E0000002000088
-:1043F0000002200000024000000260000002800075
-:104400000002A0000002C0000002E0000003000063
-:104410000003200000034000000360000003800050
-:104420000003A0000003C0000003E000000400003F
-:10443000000420000004400000046000000480002C
-:104440000004A0000004C0000004E000000500001B
-:104450000005200000054000000560000005800008
-:104460000005A0000005C0000005E00000060000F7
-:1044700000062000000640000006600000068000E4
-:104480000006A0000006C0000006E00000070000D3
-:1044900000072000000740000007600000078000C0
-:1044A0000007A0000007C0000007E00000080000AF
-:1044B000000820000008400000086000000880009C
-:1044C0000008A0000008C0000008E000000900008B
-:1044D0000009200000094000000960000009800078
-:1044E0000009A0000009C0000009E000000A000067
-:1044F000000A2000000A4000000A6000000A800054
-:10450000000AA000000AC000000AE000000B000042
-:10451000000B2000000B4000000B6000000B80002F
-:10452000000BA000000BC000000BE000000C00001E
-:10453000000C2000000C4000000C6000000C80000B
-:10454000000CA000000CC000000CE000000D0000FA
-:10455000000D2000000D4000000D6000000D8000E7
-:10456000000DA000000DC000000DE000000E0000D6
-:10457000000E2000000E4000000E6000000E8000C3
-:10458000000EA000000EC000000EE000000F0000B2
-:10459000000F2000000F4000000F6000000F80009F
-:1045A000000FA000000FC000000FE000001000008E
-:1045B000001020000010400000106000001080007B
-:1045C0000010A0000010C0000010E000001100006A
-:1045D0000011200000114000001160000011800057
-:1045E0000011A0000011C0000011E0000012000046
-:1045F0000012200000124000001260000012800033
-:104600000012A0000012C0000012E0000013000021
-:10461000001320000013400000136000001380000E
-:104620000013A0000013C0000013E00000140000FD
-:1046300000142000001440000014600000148000EA
-:104640000014A0000014C0000014E00000150000D9
-:1046500000152000001540000015600000158000C6
-:104660000015A0000015C0000015E00000160000B5
-:1046700000162000001640000016600000168000A2
-:104680000016A0000016C0000016E0000017000091
-:10469000001720000017400000176000001780007E
-:1046A0000017A0000017C0000017E000001800006D
-:1046B000001820000018400000186000001880005A
-:1046C0000018A0000018C0000018E0000019000049
-:1046D0000019200000194000001960000019800036
-:1046E0000019A0000019C0000019E000001A000025
-:1046F000001A2000001A4000001A6000001A800012
-:10470000001AA000001AC000001AE000001B000000
-:10471000001B2000001B4000001B6000001B8000ED
-:10472000001BA000001BC000001BE000001C0000DC
-:10473000001C2000001C4000001C6000001C8000C9
-:10474000001CA000001CC000001CE000001D0000B8
-:10475000001D2000001D4000001D6000001D8000A5
-:10476000001DA000001DC000001DE000001E000094
-:10477000001E2000001E4000001E6000001E800081
-:10478000001EA000001EC000001EE000001F000070
-:10479000001F2000001F4000001F6000001F80005D
-:1047A000001FA000001FC000001FE000002000004C
-:1047B0000020200000204000002060000020800039
-:1047C0000020A0000020C0000020E0000021000028
-:1047D0000021200000214000002160000021800015
-:1047E0000021A0000021C0000021E0000022000004
-:1047F00000222000002240000022600000228000F1
-:104800000022A0000022C0000022E00000230000DF
-:1048100000232000002340000023600000238000CC
-:104820000023A0000023C0000023E00000240000BB
-:1048300000242000002440000024600000248000A8
-:104840000024A0000024C0000024E0000025000097
-:104850000025200000254000002560000025800084
-:104860000025A0000025C0000025E0000026000073
-:104870000026200000264000002660000026800060
-:104880000026A0000026C0000026E000002700004F
-:10489000002720000027400000276000002780003C
-:1048A0000027A0000027C0000027E000002800002B
-:1048B0000028200000284000002860000028800018
-:1048C0000028A0000028C0000028E0000029000007
-:1048D00000292000002940000029600000298000F4
-:1048E0000029A0000029C0000029E000002A0000E3
-:1048F000002A2000002A4000002A6000002A8000D0
-:10490000002AA000002AC000002AE000002B0000BE
-:10491000002B2000002B4000002B6000002B8000AB
-:10492000002BA000002BC000002BE000002C00009A
-:10493000002C2000002C4000002C6000002C800087
-:10494000002CA000002CC000002CE000002D000076
-:10495000002D2000002D4000002D6000002D800063
-:10496000002DA000002DC000002DE000002E000052
-:10497000002E2000002E4000002E6000002E80003F
-:10498000002EA000002EC000002EE000002F00002E
-:10499000002F2000002F4000002F6000002F80001B
-:1049A000002FA000002FC000002FE000003000000A
-:1049B00000302000003040000030600000308000F7
-:1049C0000030A0000030C0000030E00000310000E6
-:1049D00000312000003140000031600000318000D3
-:1049E0000031A0000031C0000031E00000320000C2
-:1049F00000322000003240000032600000328000AF
-:104A00000032A0000032C0000032E000003300009D
-:104A1000003320000033400000336000003380008A
-:104A20000033A0000033C0000033E0000034000079
-:104A30000034200000344000003460000034800066
-:104A40000034A0000034C0000034E0000035000055
-:104A50000035200000354000003560000035800042
-:104A60000035A0000035C0000035E0000036000031
-:104A7000003620000036400000366000003680001E
-:104A80000036A0000036C0000036E000003700000D
-:104A900000372000003740000037600000378000FA
-:104AA0000037A0000037C0000037E00000380000E9
-:104AB00000382000003840000038600000388000D6
-:104AC0000038A0000038C0000038E00000390000C5
-:104AD00000392000003940000039600000398000B2
-:104AE0000039A0000039C0000039E000003A0000A1
-:104AF000003A2000003A4000003A6000003A80008E
-:104B0000003AA000003AC000003AE000003B00007C
-:104B1000003B2000003B4000003B6000003B800069
-:104B2000003BA000003BC000003BE000003C000058
-:104B3000003C2000003C4000003C6000003C800045
-:104B4000003CA000003CC000003CE000003D000034
-:104B5000003D2000003D4000003D6000003D800021
-:104B6000003DA000003DC000003DE000003E000010
-:104B7000003E2000003E4000003E6000003E8000FD
-:104B8000003EA000003EC000003EE000003F0000EC
-:104B9000003F2000003F4000003F6000003F8000D9
-:104BA000003FA000003FC000003FE000003FE001E8
-:104BB00000000000000001FF0000020000007FF87C
-:104BC00000007FF80000016A0000150000000001ED
-:104BD0000000FF00000000000000FF0000000000D7
-:104BE00000000000140AFF000000000100000000A7
-:104BF00000201001000000000100860000000100FC
-:104C00000000860200008604000086060000860878
-:104C10000000860A0000860C0000860E0000861048
-:104C20000000861200008614000086160000861818
-:104C30000000861A0000861C0000861E00008620E8
-:104C400000008622000086240000862600008628B8
-:104C50000000862A0000862C0000862E0000863088
-:104C60000000863200008634000086360000863858
-:104C70000000863A0000863C0000863E0000864028
-:104C800000008642000086440000864600008648F8
-:104C90000000864A0000864C0000864E00008650C8
-:104CA0000000865200008654000086560000865898
-:104CB0000000865A0000865C0000865E0000866068
-:104CC0000000866200008664000086660000866838
-:104CD0000000866A0000866C0000866E0000867008
-:104CE00000008672000086740000867600008678D8
-:104CF0000000867A0000867C0000867E00008680A8
-:104D00000000868200008684000086860000868877
-:104D10000000868A0000868C0000868E0000869047
-:104D20000000869200008694000086960000869817
-:104D30000000869A0000869C0000869E000086A0E7
-:104D4000000086A2000086A4000086A6000086A8B7
-:104D5000000086AA000086AC000086AE000086B087
-:104D6000000086B2000086B4000086B6000086B857
-:104D7000000086BA000086BC000086BE000086C027
-:104D8000000086C2000086C4000086C6000086C8F7
-:104D9000000086CA000086CC000086CE000086D0C7
-:104DA000000086D2000086D4000086D6000086D897
-:104DB000000086DA000086DC000086DE000086E067
-:104DC000000086E2000086E4000086E6000086E837
-:104DD000000086EA000086EC000086EE000086F007
-:104DE000000086F2000086F4000086F6000086F8D7
-:104DF000000086FA000086FC000086FE00008700A6
-:104E00000000870200008704000087060000870872
-:104E10000000870A0000870C0000870E0000871042
-:104E20000000871200008714000087160000871812
-:104E30000000871A0000871C0000871E00008720E2
-:104E400000008722000087240000872600008728B2
-:104E50000000872A0000872C0000872E0000873082
-:104E60000000873200008734000087360000873852
-:104E70000000873A0000873C0000873E0000874022
-:104E800000008742000087440000874600008748F2
-:104E90000000874A0000874C0000874E00008750C2
-:104EA0000000875200008754000087560000875892
-:104EB0000000875A0000875C0000875E0000876062
-:104EC0000000876200008764000087660000876832
-:104ED0000000876A0000876C0000876E0000877002
-:104EE00000008772000087740000877600008778D2
-:104EF0000000877A0000877C0000877E00008780A2
-:104F00000000878200008784000087860000878871
-:104F10000000878A0000878C0000878E0000879041
-:104F20000000879200008794000087960000879811
-:104F30000000879A0000879C0000879E000087A0E1
-:104F4000000087A2000087A4000087A6000087A8B1
-:104F5000000087AA000087AC000087AE000087B081
-:104F6000000087B2000087B4000087B6000087B851
-:104F7000000087BA000087BC000087BE000087C021
-:104F8000000087C2000087C4000087C6000087C8F1
-:104F9000000087CA000087CC000087CE000087D0C1
-:104FA000000087D2000087D4000087D6000087D891
-:104FB000000087DA000087DC000087DE000087E061
-:104FC000000087E2000087E4000087E6000087E831
-:104FD000000087EA000087EC000087EE000087F001
-:104FE000000087F2000087F4000087F6000087F8D1
-:104FF000000087FA000087FC000087FEFFFFFFFF2C
-:10500000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
-:10501000FFFFFFFFFFFFFFFFFFFFFFFF0000000399
-:1050200000BEBC20000000000000000500000003DE
-:1050300000BEBC20000000000000000500002000B1
-:10504000000040C000006180000082400000A3001A
-:105050000000C3C00000E4800001054000012600FC
-:10506000000146C000016780000188400001A900DE
-:105070000001C9C00001EA8000020B4000022C00C0
-:1050800000024CC000026D8000028E400002AF00A2
-:105090000002CFC00002F08000001140000080003C
-:1050A000000103800001870000020A8000028E00D8
-:1050B00000031180000395000004188000049C0088
-:1050C00000051F800005A300000626800006AA0038
-:1050D00000072D800007B100000834800008B800E8
-:1050E00000093B800009BF00000A4280000AC60098
-:1050F000000B4980000BCD00000C5080000CD40048
-:10510000000D578000005B0000007FF800007FF872
-:1051100000000166000015000000FF000000000014
-:105120000000FF0000000000000019000000000067
-:1051300000000000FFFFFFFF00007FF800007FF885
-:1051400000000361000015000000FF000FFFFFFFDB
-:105150000000FF000FFFFFFF000000FF0000FF0046
-:105160000FFFFFFF0000FF000FFFFFFF000000FF29
-:105170000000FF000FFFFFFF0000FF000FFFFFFF19
-:10518000000000FF0000FF000FFFFFFF0000FF0016
-:105190000FFFFFFF000000FF0000FF000FFFFFFFF9
-:1051A0000000FF000FFFFFFF000000FF0000FF00F6
-:1051B0000FFFFFFF0000FF000FFFFFFF000000FFD9
-:1051C0000000FF000FFFFFFF0000FF000FFFFFFFC9
-:1051D000000000FF0000FF000FFFFFFF0000FF00C6
-:1051E0000FFFFFFF000000FF0000FF000FFFFFFFA9
-:1051F0000000FF000FFFFFFF000000FF0000FF00A6
-:105200000FFFFFFF0000FF000FFFFFFF000000FF88
-:105210000000FF000FFFFFFF0000FF000FFFFFFF78
-:10522000000000FF0000FF000FFFFFFF0000FF0075
-:105230000FFFFFFF000000FF0000FF000FFFFFFF58
-:105240000000FF000FFFFFFF000000FF0000FF0055
-:105250000FFFFFFF0000FF000FFFFFFF000000FF38
-:105260000000FF000FFFFFFF0000FF000FFFFFFF28
-:10527000000000FF0000FF000FFFFFFF0000FF0025
-:105280000FFFFFFF000000FF0000FF000FFFFFFF08
-:105290000000FF000FFFFFFF000000FF0000FF0005
-:1052A0000FFFFFFF0000FF000FFFFFFF000000FFE8
-:1052B0000000FF000FFFFFFF0000FF000FFFFFFFD8
-:1052C000000000FF0000FF000FFFFFFF0000FF00D5
-:1052D0000FFFFFFF000000FF0000FF000FFFFFFFB8
-:1052E0000000FF000FFFFFFF000000FF0000FF00B5
-:1052F0000FFFFFFF0000FF000FFFFFFF000000FF98
-:105300000000FF000FFFFFFF0000FF000FFFFFFF87
-:10531000000000FF0000FF000FFFFFFF0000FF0084
-:105320000FFFFFFF000000FF0000FF000FFFFFFF67
-:105330000000FF000FFFFFFF000000FF0000FF0064
-:105340000FFFFFFF0000FF000FFFFFFF000000FF47
-:105350000000FF000FFFFFFF0000FF000FFFFFFF37
-:10536000000000FF0000FF000FFFFFFF0000FF0034
-:105370000FFFFFFF000000FF0000FF000FFFFFFF17
-:105380000000FF000FFFFFFF000000FF0000FF0014
-:105390000FFFFFFF0000FF000FFFFFFF000000FFF7
-:1053A0000000FF000FFFFFFF0000FF000FFFFFFFE7
-:1053B000000000FF0000FF000FFFFFFF0000FF00E4
-:1053C0000FFFFFFF000000FF000000FF000000FFD4
-:1053D0000000FF00000000000000FF0000000000CF
-:1053E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
-:1053F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
-:1054000000001000000020800000310000004180FA
-:1054100000005200000062800000730000008380E2
-:10542000000094000000A4800000B5000000C580CA
-:105430000000D6000000E6800000F70000010780B1
-:105440000001180000012880000139000001498096
-:1054500000015A0000016A8000017B0000018B807E
-:1054600000019C000001AC800001BD000001CD8066
-:105470000001DE000001EE8000000F0000000000CF
-:1054800000007FF800007FF80000021D00001500FA
-:1054900010000000000028AD00010001FFFFFFFF29
-:1054A000FFFFFFFF00090206CCCCCCC17058103CB6
-:1054B000000000000000FF00000000000000FF00EE
-:1054C000000000000000000000000001CCCC020140
-:1054D000CCCCCCCCCCCC0201CCCCCCCC00000000D1
-:1054E000FFFFFFFF0000FFFF000000000000FFFFC4
-:1054F000000000000000FFFF000000000000FFFFB0
-:10550000000000000000FFFF000000000000FFFF9F
-:10551000000000000000FFFF000000000000FFFF8F
-:1055200000000000000E0000011600D60000FFFF82
-:10553000000000000000FFFF000000000000FFFF6F
-:10554000000000000000FFFF000000000000FFFF5F
-:10555000000000000000FFFF000000000000FFFF4F
-:10556000000000000000FFFF0000000000720000CB
-:10557000012300F3FFFFFFF3318FFFFF0C30C30C5B
-:10558000C30C30C3CF3CF300F3CF3CF30000CF3C5F
-:10559000CDCDCDCDFFFFFFF130EFFFFF0C30C30CC1
-:1055A000C30C30C3CF3CF300F3CF3CF30001CF3C3E
-:1055B000CDCDCDCDFFFFFFF6305FFFFF0C30C30C2C
-:1055C000C30C30C3CF3CF300F3CF3CF30002CF3C1D
-:1055D000CDCDCDCDFFFFF4061CBFFFFF0C30C305C2
-:1055E000C30C30C3CF300014F3CF3CF30004CF3CE6
-:1055F000CDCDCDCDFFFFFFF2304FFFFF0C30C30C00
-:10560000C30C30C3CF3CF300F3CF3CF30008CF3CD6
-:10561000CDCDCDCDFFFFFFFA302FFFFF0C30C30CF7
-:10562000C30C30C3CF3CF300F3CF3CF30010CF3CAE
-:10563000CDCDCDCDFFFFFFF731EFFFFF0C30C30C19
-:10564000C30C30C3CF3CF300F3CF3CF30020CF3C7E
-:10565000CDCDCDCDFFFFFFF5302FFFFF0C30C30CBC
-:10566000C30C30C3CF3CF300F3CF3CF30040CF3C3E
-:10567000CDCDCDCDFFFFFFF3318FFFFF0C30C30C3D
-:10568000C30C30C3CF3CF300F3CF3CF30000CF3C5E
-:10569000CDCDCDCDFFFFFFF1310FFFFF0C30C30C9F
-:1056A000C30C30C3CF3CF300F3CF3CF30001CF3C3D
-:1056B000CDCDCDCDFFFFFFF6305FFFFF0C30C30C2B
-:1056C000C30C30C3CF3CF300F3CF3CF30002CF3C1C
-:1056D000CDCDCDCDFFFFF4061CBFFFFF0C30C305C1
-:1056E000C30C30C3CF300014F3CF3CF30004CF3CE5
-:1056F000CDCDCDCDFFFFFFF2304FFFFF0C30C30CFF
-:10570000C30C30C3CF3CF300F3CF3CF30008CF3CD5
-:10571000CDCDCDCDFFFFFFFA302FFFFF0C30C30CF6
-:10572000C30C30C3CF3CF300F3CF3CF30010CF3CAD
-:10573000CDCDCDCDFFFFFFF730EFFFFF0C30C30C19
-:10574000C30C30C3CF3CF300F3CF3CF30020CF3C7D
-:10575000CDCDCDCDFFFFFFF5304FFFFF0C30C30C9B
-:10576000C30C30C3CF3CF300F3CF3CF30040CF3C3D
-:10577000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CF1
-:10578000C30C30C3CF3CF3CCF3CF3CF30000CF3C91
-:10579000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CD1
-:1057A000C30C30C3CF3CF3CCF3CF3CF30001CF3C70
-:1057B000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CB1
-:1057C000C30C30C3CF3CF3CCF3CF3CF30002CF3C4F
-:1057D000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C91
-:1057E000C30C30C3CF3CF3CCF3CF3CF30004CF3C2D
-:1057F000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C71
-:10580000C30C30C3CF3CF3CCF3CF3CF30008CF3C08
-:10581000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C50
-:10582000C30C30C3CF3CF3CCF3CF3CF30010CF3CE0
-:10583000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C30
-:10584000C30C30C3CF3CF3CCF3CF3CF30020CF3CB0
-:10585000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C10
-:10586000C30C30C3CF3CF3CCF3CF3CF30040CF3C70
-:10587000CDCDCDCDFFFFFFF3320FFFFF0C30C30CBA
-:10588000C30C30C3CF3CF300F3CF3CF30000CF3C5C
-:10589000CDCDCDCDFFFFFFF1310FFFFF0C30C30C9D
-:1058A000C30C30C3CF3CF300F3CF3CF30001CF3C3B
-:1058B000CDCDCDCDFFFFFFF6305FFFFF0C30C30C29
-:1058C000C30C30C3CF3CF300F3CF3CF30002CF3C1A
-:1058D000CDCDCDCDFFFFF4061CBFFFFF0C30C305BF
-:1058E000C30C30C3CF300014F3CF3CF30004CF3CE3
-:1058F000CDCDCDCDFFFFFFF2304FFFFF0C30C30CFD
-:10590000C30C30C3CF3CF300F3CF3CF30008CF3CD3
-:10591000CDCDCDCDFFFFFF8A042FFFFF0C30C30C90
-:10592000C30C30C3CF3CC000F3CF3CF30010CF3CDE
-:10593000CDCDCDCDFFFFFF9705CFFFFF0C30C30CC2
-:10594000C30C30C3CF3CC000F3CF3CF30020CF3CAE
-:10595000CDCDCDCDFFFFFFF5310FFFFF0C30C30CD8
-:10596000C30C30C3CF3CF300F3CF3CF30040CF3C3B
-:10597000CDCDCDCDFFFFFFF3300FFFFF0C30C30CBB
-:10598000C30C30C3CF3CF300F3CF3CF30000CF3C5B
-:10599000CDCDCDCDFFFFFFF1300FFFFF0C30C30C9D
-:1059A000C30C30C3CF3CF300F3CF3CF30001CF3C3A
-:1059B000CDCDCDCDFFFFFFF6305FFFFF0C30C30C28
-:1059C000C30C30C3CF3CF300F3CF3CF30002CF3C19
-:1059D000CDCDCDCDFFFFF4061CBFFFFF0C30C305BE
-:1059E000C30C30C3CF300014F3CF3CF30004CF3CE2
-:1059F000CDCDCDCDFFFFFFF2304FFFFF0C30C30CFC
-:105A0000C30C30C3CF3CF300F3CF3CF30008CF3CD2
-:105A1000CDCDCDCDFFFFFFFA302FFFFF0C30C30CF3
-:105A2000C30C30C3CF3CF300F3CF3CF30010CF3CAA
-:105A3000CDCDCDCDFFFFFF97040FFFFF0C30C30C82
-:105A4000C30C30C3CF3CC000F3CF3CF30020CF3CAD
-:105A5000CDCDCDCDFFFFFFF5300FFFFF0C30C30CD8
-:105A6000C30C30C3CF3CF300F3CF3CF30040CF3C3A
-:105A7000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CEE
-:105A8000C30C30C3CF3CF3CCF3CF3CF30000CF3C8E
-:105A9000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CCE
-:105AA000C30C30C3CF3CF3CCF3CF3CF30001CF3C6D
-:105AB000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CAE
-:105AC000C30C30C3CF3CF3CCF3CF3CF30002CF3C4C
-:105AD000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C8E
-:105AE000C30C30C3CF3CF3CCF3CF3CF30004CF3C2A
-:105AF000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C6E
-:105B0000C30C30C3CF3CF3CCF3CF3CF30008CF3C05
-:105B1000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C4D
-:105B2000C30C30C3CF3CF3CCF3CF3CF30010CF3CDD
-:105B3000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C2D
-:105B4000C30C30C3CF3CF3CCF3CF3CF30020CF3CAD
-:105B5000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C0D
-:105B6000C30C30C3CF3CF3CCF3CF3CF30040CF3C6D
-:105B7000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CED
-:105B8000C30C30C3CF3CF3CCF3CF3CF30000CF3C8D
-:105B9000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CCD
-:105BA000C30C30C3CF3CF3CCF3CF3CF30001CF3C6C
-:105BB000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CAD
-:105BC000C30C30C3CF3CF3CCF3CF3CF30002CF3C4B
-:105BD000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C8D
-:105BE000C30C30C3CF3CF3CCF3CF3CF30004CF3C29
-:105BF000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C6D
-:105C0000C30C30C3CF3CF3CCF3CF3CF30008CF3C04
-:105C1000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C4C
-:105C2000C30C30C3CF3CF3CCF3CF3CF30010CF3CDC
-:105C3000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C2C
-:105C4000C30C30C3CF3CF3CCF3CF3CF30020CF3CAC
-:105C5000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C0C
-:105C6000C30C30C3CF3CF3CCF3CF3CF30040CF3C6C
-:105C7000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CEC
-:105C8000C30C30C3CF3CF3CCF3CF3CF30000CF3C8C
-:105C9000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CCC
-:105CA000C30C30C3CF3CF3CCF3CF3CF30001CF3C6B
-:105CB000CDCDCDCDFFFFFFFF30CFFFFF0C30C30CAC
-:105CC000C30C30C3CF3CF3CCF3CF3CF30002CF3C4A
-:105CD000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C8C
-:105CE000C30C30C3CF3CF3CCF3CF3CF30004CF3C28
-:105CF000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C6C
-:105D0000C30C30C3CF3CF3CCF3CF3CF30008CF3C03
-:105D1000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C4B
-:105D2000C30C30C3CF3CF3CCF3CF3CF30010CF3CDB
-:105D3000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C2B
-:105D4000C30C30C3CF3CF3CCF3CF3CF30020CF3CAB
-:105D5000CDCDCDCDFFFFFFFF30CFFFFF0C30C30C0B
-:105D6000C30C30C3CF3CF3CCF3CF3CF30040CF3C6B
-:105D7000CDCDCDCD000C0000000700C00002813069
-:105D8000000B81580002021000010230000F024097
-:105D900000010330000C0000000800C00002814038
-:105DA000000B81680002022000010240000702503F
-:105DB000000202C000100000000801000002818003
-:105DC000000B81A80002026000018280000E829810
-:105DD0000008038000028000000B8028000200E021
-:105DE000000101000000811000000118CCCCCCCCD7
-:105DF000CCCCCCCCCCCCCCCCCCCCCCCC00002000F3
-:105E0000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD2
-:105E100000002000CCCCCCCCCCCCCCCCCCCCCCCCD2
-:105E2000CCCCCCCC00002000000000000000000022
-:105E30001F8B080000000000000BFB51CFC0F003D7
-:105E40008ABB5819180238107C7AE0A58C94E9DFD7
-:105E5000C8CCC0B00388AF02F17E66D2F5B34A2346
-:105E6000D8F7241818182419184E893130EC9244A8
-:105E700088E702D5084A3130DC858A0500D967A554
-:105E8000E81B4EA39836F8BB3A2AFF912A84CE87A6
-:105E900089A3C93F86CA6F5480D03FD5B19BBB0947
-:105EA0002A0F00FE694F6760030000000000000039
-:105EB0001F8B080000000000000BED7D0B7854D50F
-:105EC000B9E8DACFD933994C7642422610700703ED
-:105ED000040D30208FA85427E1D1E0E5E8F0462EEC
-:105EE000CA80AF0892448D356D39373B6412020287
-:105EF0008ECAA1B4A53A207AA247DBD4464B7BF5E3
-:105F0000DC206A73DAD37B9152A52DB6413D281669
-:105F100068F49403BDD796BBFE7FAD3DD97B672661
-:105F20000F5FDF395F1B3EDD597BAFBDD6BFFEF78C
-:105F3000FAFF7FEDA8A297A8971072117EAE256494
-:105F40009D4008C9EBBD5AF78916AD26B9845405A2
-:105F500055632B7DB65E0A1B8DD3E8FD4BC4D01371
-:105F600004EE8F9B432611A2C07B05844C85FF4D18
-:105F70002744CE691D1EF5D37BD2AA2CB85AE3590B
-:105F8000D72A99107D2A3CDF362ED5F3E4FC09A5EB
-:105F9000A75B23F873710C21F5C76F9CFF8AD5A608
-:105FA000FF8D2499B9272FA7BFCC24332F4A847C97
-:105FB00054B828ABD3483FDE070D5DBA3C9690F34A
-:105FC0000D2BE6BF32B6EFF3F512A96D2FED7BFF77
-:105FD0002AA2215E8866AA9189BDEB5E4F48A72759
-:105FE0008790CD859BD87A7329B2AEA4F7DBFE45A6
-:105FF000974B7AE15C2FD37E53FBAE871013C7B566
-:10600000C649BE9FE872BCEF7E2F391E7F9FC8F441
-:10601000DF0C42B00B5DFF74217A2DDCF7142E32B9
-:1060200047D0F6FA67CA49B4343DFC497A7D42F854
-:10603000ADF7D2D291F7FB687F530BA1EF9D54E3EC
-:10604000D75F45F9E8BDEF4BA14DC0477BC6CF21D7
-:10605000017A9F303EB2E8746A7FD3F054FC918E8F
-:106060004E7F4FBCC87F167F5589ABB23AC927E730
-:10607000AF3B80BF326CFCD5BEB8DFF13E297FC597
-:10608000DCFCC5F171BA9DAD9FEC1EC6E8C2E9E526
-:10609000A64F5ABA7CD2F7FAF2D316C0ABA77DB19D
-:1060A0003982A4E0270EAF45AF4F0BEF407C444848
-:1060B0001CE94C484482F97BEFB36B469921009F61
-:1060C000D1E6615847904D4582B7B6DC2D52380372
-:1060D00024D13AAE88B6BBD72C00B803C7E79F02DD
-:1060E00079680E5568B3E97AF569C643F3E835A3D4
-:1060F0005417603D5B89084A808E576D969702BDA4
-:1061000008B69F366F099B80071226643821F7F185
-:106110003511221A326DABF0EB9854EB504927C37E
-:106120008770D1D3F7FD74EB577BDF23178BE0FF2C
-:10613000F71058DF40EF91287BCFA4FF00DF39AE86
-:1061400071F439B46DE3FB00B1B5E9F3A3F00BE2F0
-:10615000FBEE2F64BE6CB24F33A87E504B443D0122
-:10616000FD89912DD37646255544F03C480E528A40
-:106170000C489766422ADB811F493B5938B117BE4C
-:106180005344C0F514DCBE734D0B555DE7CAFC21CA
-:10619000E0F3A04EC8B09CBEEBD9D6401979BCAD97
-:1061A0001D7A0EF93F46F9680C7DDF0C317BB8B5DE
-:1061B000E4653D6A93EF0C41E07CE9E60F62C83389
-:1061C00040CC8055E8B5440C7B039F9E3F64171E6E
-:1061D00007CB1FFEA88D3E64E8F40A72BF61B0FCD5
-:1061E000F169E7B3E8DA57AE1A2DBA6A84D2614B87
-:1061F000F1A294FE477ABAEE23D03FA384841329F8
-:10620000DE1B25085C0E4C87BEC12BA58F9424EFA6
-:10621000BD0E7A49F93356ECED071F52AE131FD667
-:10622000B8DE7AC97897AA4422EB228CA7C2789468
-:106230004FB7041F3609958773C0DB141F527C4A81
-:1062400027B44931413EA43F9D026D7B83E1C45692
-:10625000E48304D2C582CF63880EFCCAB93E479B53
-:10626000AC30053BFCDE7A15E150D147A0E3E87481
-:10627000408A0AD94F3A816F2D7E0536B87829B405
-:10628000BFEEE08356632A4945078B5F01AD8C5F03
-:10629000BF3E38FDE29E6F8913DE41BFE7978D93C5
-:1062A000363B94FE3D999CB4E84391580503D8F8D9
-:1062B00060B3420E089309692A5C46A2F4EE667840
-:1062C00044ED580B5C0BC03F9C8A7A81B40932C004
-:1062D00069D95512CCC17ED30503C713B55AD42B47
-:1062E000923FCCEC2B7F9E1E2E36FF70231ED629AC
-:1062F0007EF3493C2C52FA505D19EA24A037C304BE
-:10630000F88084185F48DC4FB7DE8F717EF692A369
-:10631000F83ED5AEA68EF6CC29C77325FA908EB37B
-:10632000A584243C48A7B8066DB94426B02FA0FA2E
-:10633000C95F40FB6759EC2F2D0801FC59DCBE9268
-:10634000599CBF05AACF289EFDD39CF2ED73C9BF0F
-:10635000CCED711F7D96663F615DDDFEDB6302F76C
-:10636000DF32881FE9CDDF27FED4FEAAE5B75978D2
-:10637000CD1309E293FC54493C51C4D746DBF7BC2A
-:10638000959D80759B159135CD140FE6DB42A809CC
-:10639000E829877BB2E8F3934F4AB85FCA5B567F20
-:1063A00009CCB7BDC11C5B6CF307B7CBB51AE09B3A
-:1063B000F28566B7173790E80B826DFFE509B68C5A
-:1063C0002D1E86FCF7767709980A01F9CFEB8F0529
-:1063D0005F05B9E4F793F8B1B7A5BEEDDC7CC2ED7B
-:1063E000E50DE5613A6F2BE8AE11F8D814283CAD05
-:1063F00005ACFD93C6E1E5603F5B3359FBA3C6776F
-:10640000C28DC817512D42EFD5138E972E8A17A42F
-:10641000BF916FB7AFEEAB7BFD3B64DD077CB6D7BA
-:106420009F735D09D8CF32310468DF1B3BA2AFB147
-:10643000E1E39B9E8A37001F2349422040BF582E2C
-:10644000CA8FE5CF01E341BB80CB5321398CFD4698
-:10645000477ACA15B8B5427F19AE2DC1E7B2519E31
-:10646000C81CFD24CABF245CBC7CF0F29E6EBD013A
-:10647000814452F9F3F74B392857816974DD0EBD19
-:106480005EA8233FF271BF063402FD914D619A0C64
-:106490007A24BE229262BC9F0822F6D3C01E5C41C1
-:1064A000D150B8ACECDFE87A352D3CE5550A97279A
-:1064B000D71F32116C66270C2E039E78A306F82591
-:1064C000472502F2AF158623B7019F924858A0F7DF
-:1064D000B56038B4D5E8BB3E9530FB9043AF179913
-:1064E0007C13E87F4F9E8EFD09D80B6B5D63002EF9
-:1064F00015E1FA0CE89D2B4E1F98CE23487B3918E6
-:10650000B374F4FEACE99CEE7D377D030293AFFBE0
-:106510009BCE874D2A4F2DC7055102A5182F46BA8D
-:10652000689C2EE795A8067EE396AF8A641F6D3FB0
-:106530005ADFBF9F12033FC563B39B3AA3DFC8BBBB
-:10654000F4A9C042E9DEDB7597589948C14F9522FE
-:10655000D3FB5BEE7A383E16E8F98A73BFA7AC0A24
-:10656000A35F4AF77D95400FEB3D6F31B34F643F1A
-:106570005D0FEDAF707FE47CDEA22C92621EEBBA61
-:10658000C7057F21C5732AB9B94FE2FED54E36BE85
-:10659000E5EF9C2FE87F7C0B3F172A4572B814C9A2
-:1065A000EA23A57C3114EF8549BF3B0FDB1EFE2893
-:1065B000512BFA08D8BDC2CE72B82AA4A711F8741C
-:1065C0009748AA52C1B7561211BEC230DD7A50BDEB
-:1065D0005F688AA099C8BD9281F7F357D51E5428E9
-:1065E0005D5A47911098994B603CD0AB07BD683F0E
-:1065F000D55C92F0523DFD5AD1574CB0CB7A21096F
-:10660000032C7A2DEC39E97FD4BE1AF4B9B2316A81
-:10661000225CC108EE110E152D437AB750FFCEC390
-:1066200016E2E0A71653EC04BE8DD3F1C11F8C1BFC
-:106630001528AFE782D4F2C3CFC7147E6BBF712990
-:10664000C485282901CE0932C2494762F4D4195EB3
-:1066500046EE9E453AA9DD69CDDE85F2605E495081
-:106660005E6572D814C0CEC80953A4F0C6AA983E7D
-:106670005072E382DD8EED21D107ED7C23EB9DE8A6
-:10668000FFB5FE595A910AAFD522D36FF7717D78C5
-:106690005E699F8FFE4633958FA2BEFDC39C0EDFC1
-:1066A0008E2D7A703CEA336697ACE75D82E18863B1
-:1066B0008EBCA0E27ADC7ECD3CEED7B41452BF068D
-:1066C000E59D2C003F2683F3470B608F3EF76493D4
-:1066D0008449E1C8007F86FA25A494F9251AFD07AC
-:1066E000FA2F7F85D39FF1B8FC9674FECCD784C86F
-:1066F0000F50DF515505F0EF16E2F3C701BE0BE86E
-:106700007ED2E8BBEE2EBE9F9C2B6D2B6AA1703D06
-:10671000962B3AF861349797C78879E2227D1E2F2D
-:10672000140D803B5E2FE23ACE19CC6F27EF7A1D15
-:1067300076A2D95CA4119BFED9C1E5695B83E69082
-:106740005BF7D5AFC6A391147A4BE7F4C99815C689
-:10675000F8873F9440FAC33A53F9E90F945668FD1D
-:10676000E93FB9445D83F82BAC3825C3B5CCBD5F98
-:106770004A3DAEFB4AEC7EA694BEDF60AF5B289E2E
-:10678000DE561CFE78A704FB2E93A0FFE70D5153A5
-:106790001580AB3E1CE0F786A8B8C1B5BBBC12EEB5
-:1067A0001BB3221AC891659FBDA1C856B89FF52595
-:1067B000790BD0CB5B2E8A12A59F269B24C7263748
-:1067C00053E1A68DBF33A9BAB4E3438B7EA512FC77
-:1067D00054522892B1148ECD1F3768763A75D16D18
-:1067E00008DBB73AF9265EDFBF9EFDB47CF173D1BA
-:1067F0008A8738E9853FF67808A77392FE7DE21A0A
-:10680000FF39E8AD71FA19947E9B0CA027D3177459
-:10681000E385FE435C33C3D08E1B8668DAF4D8C7A9
-:10682000620EE241BE20A35EDABDA6250CF4D2E9D9
-:1068300018405A7A0DA7B2DB5D828A7245F5C655BB
-:10684000D27454C802C43FE74A1B91DE8F517A8349
-:106850001E7B8CD4765DCCED957F2DAAA21FDFD553
-:10686000689637160F456F52F8A85F47F630FFE578
-:1068700012CB7FF97BCA2783F057CE53A3C1EDB16A
-:1068800017F84AEEA62C4DE12ADCC8EC26F86A3946
-:10689000B46D50BBD729F4F2A387CFA394260E8FF3
-:1068A000477A3BEDD363852F0B1EB06FC5CCBEA9D5
-:1068B000666718F44CA098DA2782F66735E06744DB
-:1068C00049BC1CDA2377CFC3757C1BFC503FD8171B
-:1068D00082F8F8A698683429CD7CE148A728C1FE43
-:1068E00099E0FECEA29F7B5E6AF5909EBE6C712FF2
-:1068F000D029507B189669B77BD5525EAF3D1C51AD
-:10690000D289EAD6ED2FA4F513FE2CF1FDD8CCC622
-:10691000306D8F825FA93FB9537CBC11F663114F74
-:10692000B81EE9EEDA4724E3503CDEBDB6CC122AAD
-:1069300063F96FE83C7776291400027E80648F0348
-:10694000DD097689EA9BB5DCAEDD4A2201787886DE
-:1069500088185F3B438E04AEB0F1E14E4965F3B455
-:106960002A6F43FCDE8AEFDE16676D4BFFDCB1DB7E
-:10697000D9BE9D2C1A0EF1DBDB772AB8FE3B5DFBFE
-:10698000D698A4E3B87790DA16C043B342D04F58F4
-:10699000AB1319E2B11B7EF89D19B04FF836B72B37
-:1069A0001F50FE326CFA679D3FA1C27EF69D8E2B72
-:1069B000965D4DE0FD44CB08D89767939476F496A6
-:1069C00056277C03C1EF8697904DFDC221B7092958
-:1069D000E3874F4982236E58AF052641D0E4BC9728
-:1069E0005DCD0AA63FCCDF7A134DE0274A06EF5F64
-:1069F0003B99E5396A67C275A0F77EC6FDD1A1BE95
-:106A00007738CD7B1BB46E15F8BF46362B05B137F2
-:106A10005EA529B5E19120C707CA3B471247BFD6FB
-:106A200041F6AB14FBE9E786F794AE99E2E4BE7059
-:106A3000DF40A26F81DC9D17A3D51827E0707B0093
-:106A4000CF125C65A427C64F8A605E7FAB9005714C
-:106A5000940EF44FBC86ECA0778DA507A85E82B893
-:106A60004F4689F3B93BAED293A46B27CA1786442D
-:106A7000E992029ABF53027FB14C3E9DEC4FE7ABC7
-:106A800086754DC64EA85FEAB87EA926C683B3A612
-:106A9000A17C61BCAE6EFE1813E0A8CB3342A60108
-:106AA0006A3414C6315C7C5573412009DBFEBB4659
-:106AB000EE51418E6AA8FEB6DFBF27C8E2C9E9F4ED
-:106AC000B64234C35F027EAD88789274DAB6ADFB0D
-:106AD000A3B850D9CEF655594BFAD917DF1364F144
-:106AE000E2B55BC666B1B88B535F9DE5F6E127CF93
-:106AF0003CAE76839E79FAC4F5B0CEF5FF53221AE8
-:106B00009DF7EC3399A413ED464205BBB1AE434A61
-:106B1000690F096962F9F3EF6522BDD63DE7492C9B
-:106B2000A0EFAF7BE19D4984C2777653CF6B23C141
-:106B30009F7E5A607171B37BD2627A7F9D4C56A75B
-:106B40008AB34C90D93EE4F48F325680FC0A6D072C
-:106B50006FC671DB972B6057AD7E86AC20BFD27EAF
-:106B600068B7CDA784C45821157C2C1F71FA2981E0
-:106B7000C17740C1FDDFBAB6BD6A94C251D3F621D8
-:106B8000EA8BD9DF7B360078A8392039FCB89A36F1
-:106B9000A9D33309AF27E00A71566106F009E797D8
-:106BA0008E0D185FAD6E7FE0432900EF3BF516C5F3
-:106BB0004BA813F0FAA6145A00ED1FFC63C0A0A85E
-:106BC000FAE0F01301C02B1D778D9A05717C277FA9
-:106BD000C3F81772FA8E47391DF3BD35ED5BD87CCB
-:106BE0002EBDF801FC52D0370E1B919D7974D23620
-:106BF000B83CEFFA67CF3D6AD2F94E3FF7FB474DFD
-:106C00000AF75D7FF9F747BF0E72F9CF5E1DF47A80
-:106C1000CDD3BF0C101B1FAE9359FCE0EC28BA85F6
-:106C2000A2FDCEFECA930087E0EC4BEF8D36E87AEA
-:106C3000CF7EFF4FC30DDABFEEA5B9F9B0FEBAE7BC
-:106C400067E7F7E7C7009F263C76B81238BE714069
-:106C500060CEC28BFCEAA2CBA18E43A301CE33C788
-:106C60003CB83FABA1F7EAA7029D36A09D85F6464A
-:106C70008ADFEA67367F08FAA12F9ECD912206BFF0
-:106C8000A81A0C029DDF9987F4223D681FDDFD6B79
-:106C90008E523A4E4E4FB773E46315F45CCD335BBE
-:106CA000D87C2EBA9D815FAEEC4BB7CD2EBA9D231A
-:106CB000773D560089D78E618E3C8275ED8D9F475A
-:106CC000B222FDE8074BFE07C22BE659285C4BE5D4
-:106CD000F0376490A3E73292745D00747DF6DC684F
-:106CE00042F9E27DA5E766B0073D2F79F47DF4FE19
-:106CF000BA97DE44B93AFBFCEBAA81768CF805EA38
-:106D0000579E25C99FC3E06756339F93D4ECCFECC1
-:106D1000F4047AE9539D58586904F0FE09BC9F6059
-:106D2000FC5E9D38B8444841AFD7E5314CFF27F2AF
-:106D3000102F1BF6FF46257E271D8532A0E389799B
-:106D4000703F1D1DADF5EBB0FE99367AEE6772EA25
-:106D5000EE5F4DE511EC5D92AE09E14D92422ECF12
-:106D6000EEF5C860EFCE825F95326FCAFC99A1E65E
-:106D7000577E263BEBAF92F9158E87F4FCC1E47B7E
-:106D8000A0F50D157F3F920D1CD78DC7D31FA7D639
-:106D9000F7EF717D514DCCCA1197F6F5436412316E
-:106DA0004716F5C27B1A36A894FF4E3F2D613CA8CA
-:106DB000A5FD10EA6DB79EA84E13DFBC20333FA19E
-:106DC000FAC0C149A0CF4EBFFC23E4CFEA674EA86A
-:106DD000102F7EADED076A7769AF3C803D48D8EC57
-:106DE000C1E9EF1E9CC4F4001D3F059D14858D5F15
-:106DF000F3A273FC9A673E748CBFDE6C47FF60A001
-:106E0000793E90C3CB61BD1F1C5608E8D10FDAA5AF
-:106E1000CA547EED07DC1E5A786A797DDE6F200F3A
-:106E200036ED88CF00BBD9B1299CBF1DFCB5230A24
-:106E300001BD4DE4F0EF3DB4DDF1BACF80FC74C785
-:106E400091659261DB87FED085CF9947CDD9997442
-:106E5000BC99DD9169E0A2BAF546D971BAAFB2F139
-:106E600041DDEB95F9A0EF611F6A8C87F94241D8AB
-:106E7000E74A8179952C7F2DEADE94F69A8DA7F862
-:106E80002318AF5274311923837147924423C45796
-:106E900089DFEFCE4F44347B1E6AC5E183B0C5CC99
-:106EA0005DFC62018C132031FD24FA9F2474B11F14
-:106EB000FFCB9D8FB0F09994BF34F9890CFDE6E0CB
-:106EC00041D277BCBE7998A806F1ED16FFDAD6223A
-:106ED0005B1EA625D8270F3357A178681548CA78B6
-:106EE000ED78A562BE9287BBE368AAE737294CAE6E
-:106EF000AE25DDF7AE0138232C9F33CB85AF2F7144
-:106F00007CFDF364BA70AA42CBC1B3A2F89DBD2444
-:106F10001C53E8FDB9AB7A2E7F19BBF37C8E395E2A
-:106F2000BC983178FC0D356F17F12CBA5D1944DE31
-:106F30002E5DFEB8170E93EFC7731C798C436FDD7F
-:106F4000AF75639EA1B6B5C816F71BDEE92561CC07
-:106F5000E319E81F0EEFBCF39BB741DC39B730E40F
-:106F6000257DC7912F5C8D71232B9F2F17863B2189
-:106F7000DE2FEB46B984F32C0F437E61B3C1F205DB
-:106F80009B83FDC7F56628D16605E351D7E0B8A21B
-:106F9000C6EB0F06B9CE6F2C0E209E0314CF20EF48
-:106FA000B8FF81F51D1778DEBCDB94207F78221BAB
-:106FB000F305019994403CE0BCE00B6DC27C823348
-:106FC0006F9E8E7FB7CB26E6CD5B8D3E79F3EF28A3
-:106FD000B67C8396266FAEF99760DE5C23367FB76A
-:106FE000A8B75FAFDCB9F2E63016C665B6CF86B893
-:106FF0004C733671E4CD9B41F0AF22E439E5EAD918
-:107000005877E6E5CFCD59B3C3F63639FE32B679B7
-:10701000FCE98FCDE73641FFDC91A416EBD4E40800
-:10702000596AD383EF292C4EBB4109FF50B1D71DBC
-:10703000717EB0F23F87DE7A0FF90AAE63285E9B5D
-:10704000295F7990AF4E11BB5EB5AE16FF341BFDC4
-:10705000F3857A610AC6CD92EDA0897C110846C3FA
-:10706000E114EF4DF230B9B7E60D94513D4AE54DCC
-:107070003122988F5275BAE135060F7F3AB82C3E0F
-:107080006D36C6B03A289D60FD5EFA754C63714C52
-:10709000887051B876DD787BA83F3FC75AE70C254A
-:1070A0007CD28EF7DC4B52D7EF56AB6CDDCD9155D1
-:1070B0002CBF5EE5CCA742FADA1E679D2E44FF5D29
-:1070C000C13821CBA78A5A84E7474C2B3E1E4CC6B9
-:1070D000C30DA833BCCB047DA8AC6A3705B8E6B2B3
-:1070E0007C4AAE16FD58B1D90759EF6672EBCA0F4C
-:1070F000CE954E0F09BF565DDCD6061DFDF42D0D55
-:10710000416C6F6E30F0DAD210C6FB6E3A361B2F30
-:10711000076FC1BA341FC665D38DFF604308C789A6
-:107120003594B1F178DE9C90CC26E02B55B4E46523
-:1071300018B6FD127F6E163481FC6D17D8F36B5AAA
-:107140002E4579B3F86787D17F5C5A4ACC403E1808
-:10715000EAF87DF9F527B8CEE6597ED4AF03C951D8
-:1071600056279B77B0F328497BC1E6D9314BC379C9
-:1071700076E40E304F9CCD3330FC0C5FDB0E9EC2AC
-:107180003A0485F203A828450FA7AED3E3F2D677D9
-:107190001C0FEAF9E620AB0B538BFD6150FECD06C8
-:1071A000CF3716B27CA35A32BC02EEABA1CBB04EA5
-:1071B0005C2DF5633E4F2D1E7E0BB4B71DDCA25730
-:1071C00080FD2814435E03EC76379173516C307E5A
-:1071D000AB1697DC06FD7590630AC7280FDB6FA915
-:1071E000C557DD01EF1F9CF29AD144FB3717FA42D5
-:1071F0001E90B76ED9C1FF83D61385CE3C1A91A9D4
-:10720000BEA0FA6BDB94DB4B503E355B9D648A7A03
-:10721000419BDED8A0DAF4864AE6988087747A87A4
-:10722000DADFFBD4BCBEE358EF6F5022F52AEA85C3
-:107230000871D6BBA7CE675BF400370BF2917230B2
-:1072400059A7B7A060786F7EDBAAD373E7B5E3F4E4
-:107250005FAABCB6BBFEFCB3AAD3DBA926EBF446FF
-:10726000419DDE8F1512EA84BCFC2FA5D03EA32FD2
-:10727000DFB9C7739FB7A0FE8F06FB9C7472F9330A
-:10728000D5993F2D88BAE87EABD731DF2B202FA5CB
-:1072900003EB979155CE7146D53AEB6A2FA9CF7182
-:1072A000B48BCC118EFE97B68E713C1F1BBFCCF1F8
-:1072B0007CFCEEA98EF684C4558EFE97B75538DA5D
-:1072C00013DBAF73F49F7C6091A33DA573A5A3FF6F
-:1072D000155D6B1DCFA71F5EE7783EF3D83D8EF698
-:1072E00095DD5F73F4AFA7EE900A729BCBEB9073C2
-:1072F000F3457B9EB6358FDA25BACFDF9147190665
-:10730000E3DFACAE4B658F937943F77BB2A1867513
-:10731000CCFB8F9B035722D7A13D958DE11506DE4F
-:107320009F310FAE649AB3BE5635587D32ECE39C64
-:10733000F502CE3A6355DA86793ACFF12F77099381
-:10734000FAD2552D74CAC160EB9415C3F5DE10E571
-:10735000E2BC2517A3A85C60FCED6309CFB5CCC9DE
-:1073600044FFC2B69F423C5AFBA96B34120317D3A9
-:10737000928BF2553D235FC56ED63ECA230EA52ED5
-:10738000CE92BF804DEFC37EC5D233CD6583D3AFE0
-:1073900052E20A873FE9BE3605D6A5D38F051E9B6C
-:1073A0007FEFD68F339448213CD7E4B0496CF11A73
-:1073B00052AB38E01E2C9C9FD40EDC45198EA4D015
-:1073C000E32AA9C5BAAB9615610C02903AE2E0D364
-:1073D0009D8BFF47198C4BFDC219CE7532BFD0ED86
-:1073E0004F53FD86FEF40EEA4FA3BD73E947AAA7EB
-:1073F0004C5EFF65303F82E943F73A3F2F3FFADFAB
-:10740000C059ED875E81A25025EE0FF34402FBC305
-:10741000E6599120C4E7ACBA79EBBD56CFA5384EFA
-:107420002C5715217E19EB9A8BF1FA262DAAB13C27
-:107430007114C769CA16F5547562751E962FD6EA7F
-:107440001F18BBBF9FB88BA69268AA78DA4E0FCBE5
-:1074500007C5F4B55D604733F35403F6DCAD074F61
-:1074600045208E2497C93AECD70905E61D5B7E8F2F
-:107470009028C699B4A0887657ABDF81F30F04EF4C
-:10748000CD1E819FFBD8D22FBC5E3575DC251DBC7F
-:107490005B00DE6903C3EB05788B60FE6D387F8D82
-:1074A000C748897F85842B6703DD4E7C3982E95686
-:1074B000CA36201F3BCAD8BE9C1A02077F5BFB1C42
-:1074C000CADF0F7BF2B07E15F9DA3AE770A347C73F
-:1074D000792CBA92C21C8C6B04A2B1B1C594DF3274
-:1074E000A36C3FDFAB9F181F652A6102F12CD92FD7
-:1074F000627E50E5F110ABDF1F383E9B667523BD01
-:10750000365F29934D426F9D75AC90AE6B72EFBAAA
-:10751000FE8F279BF1279FD7479664615D8AF44CC5
-:10752000B03FBDEDE3F872EBEFEF79B8FE2E20052A
-:107530004C7F972E877C77BA71DC7E4C3D8FF30EA3
-:10754000BDBE9E9F2FF0DFD30571262BCE4782D381
-:1075500052C6E57BF1CAF295BDF45D6E7452FAC96C
-:10756000D3A7629EDC3AAF40D599B35E98D3D7A239
-:10757000AB15472741163FB2E8EC4DE2734FBFF819
-:10758000F482BC5CD1179FBFF2F07CC37F317CBE1C
-:10759000023E0DBD6666B2F3E9E4D05709E6A50ADE
-:1075A0009D7268BD67F1BB7BFD7FFA2FCA4FD6FA8B
-:1075B0002D7E48DFDF4CB9AFB1F2AB999CDF343898
-:1075C000654515CFAB656FB75E0AFBD7A01FF77D8A
-:1075D0009965313CDFAB105307BD9069ED6BF879CD
-:1075E00023AB5EC957EAF4CB34D7FE45E575517D30
-:1075F000CEDB72FFCD7D8E2A895F17BD266B69F2C7
-:1076000063833C7FB48BE7EB0AEAE28DB01F2EB8B0
-:1076100095D5FBEF51C86AA8AF1C51658ABE5CC8FE
-:10762000DF147D3F83AEBFE0C5871A4702496E3540
-:107630008AC0CD7846331C76B8E0AE78B98F3D9FCE
-:1076400002E33CA531BD5B5019C773CE4DCF8FCF40
-:10765000023FE195B796EB101FF828B718F74F6770
-:107660005EF08441FF9FC921555817F6C2CCD7C0A0
-:107670008FFF7D43578E6CE39333DF7D7D86428998
-:1076800074E6B9D767C848AC8463FE0D177F310331
-:10769000E0362B48492DE4EF7495C0B8351ACB97E6
-:1076A00059F53EBB86AB2D70FDA9379BC513F3C5BD
-:1076B0001DD0AE878018F80D3C9E7FF5696339D4E4
-:1076C0005F66772902D4E33D2498A69F5ECF9F781A
-:1076D00048003F4BEDAC85300BBD1F3A042837C73F
-:1076E000B27DC9F922525244F5BEEF70ED78F4A78D
-:1076F0005DF54E16FFCBB309E6FB7A6ED41260AF90
-:10770000B7CBC6375681FD5E25633DCE76F930CACC
-:10771000859B8EC7BD639CF5B93C1E7DE8AD3BE201
-:10772000E5F4FD7BA688C8AFFE1353B2480AF9DD25
-:10773000DE5086F3070ADEAE2C07B03EA67767F46C
-:10774000EE93FC3231B3A889548A4453A178F1975F
-:1077500011F2B68DEF5A4412D6E9F3171A088ED3F8
-:10776000D1A0E1B5AD411F5B4C3706DF6A08E27579
-:10777000678381D7871B4AF0F9830D2187DCC37C9F
-:107780006F97F0760A7FE5F3BA3ED040E7B5C1B116
-:107790006B22957A4AAF5D3C1FF540E9D4ACB5FD4C
-:1077A000C4C1F634740D9B3396230BEA4DEBF4BD44
-:1077B0005BFB817F4FA3B07A11F83577CB917DA821
-:1077C0001FA3058B6CFA91FA6D0584B2E2BD2D23DF
-:1077D000E6CC29407944799976388AFE7841302E72
-:1077E000401CB1E028BB6F9DB7407A5141FB61EE70
-:1077F0001C4101BD594ADA012CB5344A2A68FF9967
-:10780000794BCAE13E99E8BC3F4365F20DE356D09F
-:10781000EB6C2DF2236D3A7CA763B7F92C5DCF1F7B
-:107820003B3C06E4791E7CF94F2AEC0B62BF5235D3
-:10783000F0630A5E3C81750F31A15B85CAD8E35ABB
-:10784000F51C99EA19DC0C627C952A16CA2731D0FE
-:10785000B118FFEC89CDF1C37997E8297BFF5DBEB4
-:10786000E8DDFCE448580B523E4AE62FD6C7C27406
-:10787000D3F902CF5F1CD7D6C5CC4268D3FE53588C
-:107880003B46DF7F213B3A52CC86A28BAA58D79742
-:10789000A06DF5AF8A41BDED9B5CEF107FB408E4AD
-:1078A0002DD9D6693BD3D696599B68EC6AAD77C380
-:1078B000A13FBD067AAEFA45A11D40A37A8FE1FF34
-:1078C000C0435877DBD6D0A5C7144E7F8B0E542407
-:1078D000270409D6D3A909213186EA8F09FCFB14B4
-:1078E00005D3C24623E8D7841202BD19F231BF7115
-:1078F00042828E6393AB0969BE8382795FA0E336CF
-:107900005637ECE6AF67BD2C3F504FCCAD90072308
-:10791000CF283AE623799CF2B465E7F87EF52E2F5E
-:107920006B2A9B4CDF65A07FD6C818075B5F142FBE
-:1079300057E93CEB7F5414A29615F24A58D7B03E53
-:10794000BB7DF854969772B41FE275B4C16C331BBB
-:10795000CE0F541F786834D4055493F8CD5F037864
-:10796000FF95E51F4F1DBC32EB6ADADE40DB107F6E
-:10797000DDD0F1BA1AA5FD8671B8AB3BA65C07EB6A
-:10798000ABDE2612B188C967783CC573387E994C46
-:10799000F9E49AAD23E77A299D9F1A13D645CA07C1
-:1079A0002B7DE39A3568ABFA04909B95BE89CDC0D8
-:1079B00057EB27F2EF359089AF86655E2F45F96268
-:1079C000D8968618D427EC5F59791D98D9E122936F
-:1079D0005BCA88983F94B26398B7F843333BEF0291
-:1079E00029FD8D940EC532E992E97597CAE867B60C
-:1079F000C8182FA6F75B95A940977818CF57B432CF
-:107A0000BD3FF6450FC69D8B6BC377A25FA097E283
-:107A10003E653449FE605EFA12F88D8E335E27E5CE
-:107A2000700EE1C75E162F2C5EB16C3DBC27652E33
-:107A3000F1E1BE5C62E7A0C8B7599C7A979868D715
-:107A400040CE03C548DF5D01C617E6C3A5C817FBD6
-:107A5000C58ACBEE86B8A4B066EBBF005DB38B09D8
-:107A6000D015EEDF43EFEFE7F494B2433AD06F3F27
-:107A7000A7672C219A501F63DD7F41587B27C8DB05
-:107A80003AEFF373348AD7E19E707C18A5C39DDE6C
-:107A9000E763C102A4C3188DE2FDCE2D1D316D1424
-:107AA0001DA7313C42B7B5C7FF997A23989FEC4098
-:107AB0007996B31F5E07F24E9FBFA2D1753E95C364
-:107AC000F5057F5E3C26A93FC284DA1AA9B1579F0B
-:107AD00068D43E14DBFACFA1FAE0C947591DFBF583
-:107AE000743E9077BA0ECCFFF64C9013509FE5A3EE
-:107AF000B080DFE29B3806EBF3E8BA09F8253D13C6
-:107B000065B4B3561CDB3341C4F812F4077EF08D24
-:107B100062FDA9A044406FCA8532EE5765694F786F
-:107B20008201E16396D715F485786ED55B62CBE36D
-:107B300092DE3A606C17E1676E1CEDB19EEE029129
-:107B4000FA95B9C7170AA3E9787778B9BF9D4BFDB5
-:107B50006D7A7FBD97E9A5FB23E69721C4418CEEA2
-:107B600002D44F243215AEF93715E747FBB14B7DF0
-:107B7000FDEA6EF41F76F8539FD39CEE63FBF92663
-:107B8000FF111DF8AD9E50F907B9D019BF59FAC3BE
-:107B90003A9FE0AE27B6F48992CDD65837BF221F60
-:107BA000F480CCEB93643DA4437D6579E634F4FB2B
-:107BB0009EF432BD271DBCF20638A7A1FE2BCB0BCD
-:107BC000EDF146319ED45340DA815FE56098D8F3F9
-:107BD000BF963E6869D0F0FAC4D4711520274F4C87
-:107BE0001D5EA153193834E9C75D90673AB787C95C
-:107BF000EFB9C3B7E1F9C773268B37015B615CB29C
-:107C0000F3113CAFFBB81C7910EB6AA13E8282B441
-:107C10002DDB59BF55CCF16272FDD4ACB0E79B1B94
-:107C200058FC58BD7039C6B554AEC73DD15BF1DCC8
-:107C30008687DA32385FA911D364DF3B6078D00AD7
-:107C40009DDFC3502F4CC2F74D2F8B1F59F522EEED
-:107C5000BA100B9E191C9EBEE7329CF4B0F65F165C
-:107C60001DACF7EB8470BEDE0FDFD45C9048C2160B
-:107C7000FFE8ADEF56F1FE59A88BCF823A9E68FC23
-:107C8000EA22908304EE8FBCFE3A42F8F795904FBB
-:107C900083728FBD0E3DC35517DF475E0C67DB5DFA
-:107CA00017B11E9883D7F1613DAB4CBE29507A9F26
-:107CB000C9F8ED0CF06B6BA87AD02040249B3ACC2D
-:107CC0007F96FBFBF28B7787471A363E170CC73E31
-:107CD000A1FAC0428C23D4ECF763BD7F35E8BFC95D
-:107CE000706EC0ECF238CE0B843BA13E4F39C0C65B
-:107CF0007B12E0A1F7FFA85715C0BA8FC3FE270F6C
-:107D0000EC495462875E0E231E62DEF031A2337DA1
-:107D100026539E88655BFAAC3A061B865D2A71F88D
-:107D20004BBB7CBCEDAB8EC54A7BEB3F8E6BFF0F34
-:107D3000F59B55DF715CFB0FF48776A9F14ED07788
-:107D4000E60B1E03EC177D1FCFEF9A2B4BD00EC412
-:107D50008AC808C0C32BD92AEAB9D8F39E7DA0E708
-:107D6000666BD13735DBBEE14CF61BA361FF956234
-:107D70003CD331DEA8A18D47E7EF00BC5ACF5FC9E5
-:107D8000DE85E716E97B06E60D0B0F8F5E43DBC34E
-:107D90005FF0E0B9216BBFE9E6CB7C2E5F2DAEF33F
-:107DA000802AC89B1FF46D2DCA9927E8CC8359728D
-:107DB000A75E98E0C8073C097696D24F95A310A21B
-:107DC000A4CF4BF1B9C9F9AC85D723A49F2727CD00
-:107DD0003C57A03CA79F67069777C2E558D693DF2C
-:107DE00085E9E7DCA03B4FE2D653D6D5D253DFE29C
-:107DF000FC2993E8153E3ACFBA44FB3C1FBE1D9DBB
-:107E0000047EF0071A3B0755D2F6D0CB609EBFE93F
-:107E100009DFEF9D8EE7BEFEC99B37747958E923D1
-:107E2000BC2EB38F1E62FED5ADCC5FAD9B3F15FD62
-:107E3000BBBAED6374FB3945F7B5EA4286430F0DD3
-:107E4000F31AFC7B7B26EAA3AA0B017CFED9CDE7C3
-:107E5000759C5FE93B9F1F9F5BF3DDE5D2B38726EF
-:107E6000FD74179C73AFFBBE227A6CF3D47D9FD751
-:107E7000FF7BA9DE75CA7B18E45D2E22C9FA2ED0DD
-:107E80000FDB54AB1D6E9E330BFC5A9B7E2803FF09
-:107E9000ABF77DF8CEDD361FEF6F56A6EE9FE1EA19
-:107EA0003FC61A7F21F677C393D43FB01FA3FDE5E9
-:107EB0003F7B2CF8507F3D24BAC6CBB1E6BF11C73B
-:107EC000B3FCEE8BDADA574D19F8345E0EFBA79E41
-:107ED000DB8801DF9F785C0EF94276BED518BF566D
-:107EE0005DB8D441EF5EBC8F73DC7FAF21E8A8D7CB
-:107EF000BD235A8775DA1779FCA98A7AE6F8DE9EDF
-:107F0000918E3ADDBFC1F149E1B83A0D1CD77CC171
-:107F1000701439E4B3178E62C7FD4F0AC7428DE96A
-:107F2000AFE5FC3A5767E766E71A42A889DE9A4B45
-:107F3000EF7B29AF7F995E357A9D2B13D38FDF4579
-:107F40004DB0FEB40DFBFB1BFE7CEFBBD762A22A3B
-:107F5000E8A82B90789DB75BEFC0396F56EFA63934
-:107F6000BE0F675D7D12ABD774DFFFD0C7F0F28D17
-:107F7000CBAB09F8D3D4574F796E6D975FE0DFFB39
-:107F80000C8A8E38376F5B75BE9F155C72069BEF4F
-:107F90001B975F4F20AE2BE7A6FEBEDD413F83BFA0
-:107FA000450B639D784CEFFFBB349F149EE14978ED
-:107FB000AE413C4969F0546BC1A3B3BC604BF0F3D4
-:107FC00081A724C3A25BFFF8D9CAE126172E413E40
-:107FD00092389D5A60FF96A2BF95FF68D13E5FF828
-:107FE000C383A4EF73195F0C7D170D92BEC55C0EA1
-:107FF0005AF4CF179E5B0709CF7516BF05C348AF6C
-:10800000CF0B9EAF0C129E6316BD8CCF173FAD49B0
-:10801000FEEF1F9EBF70B8F333581CA4A5849D27A4
-:10802000F14991078B8481E5C257ECDC676B853E93
-:10803000679DCDBBCEBAAF74EBFC355F673A795A1A
-:10804000A924F2807EC71A583CE00DBE3FF9755551
-:108050005326C6E75DF3B404F765F617B7F9EF5595
-:10806000CE73B903C9F1A40C96FFB931EA7C6FF95C
-:108070008A0C571D9989FD2CFCA51BEFAF056F617C
-:1080800048620E026F145F5945FDEC1B3E6B7CA5E8
-:1080900093BBA1E22BA60F0D5F03C9FB5786882F68
-:1080A0004B5EFF5AF1950FF89AFE37FE1A2CBE165A
-:1080B000FD4D1E8784AF5B872A8FDCAFFD6BC5D774
-:1080C00060E5D1BD6FA3FBBB507FDF17F8ACF1E7D4
-:1080D0009EFFD3E2D11A6F659A7D5E3A7C0E0487CB
-:1080E00075FDD03748BCBAF79F5F345E5DF37F6A99
-:1080F000BCF2F1868CD701E0B0AEF220E5DBF2EB0A
-:10810000DAD4D4DF111D97C9BEE3365EA83D321F15
-:10811000F2C77F27617EFAC89E391BECF540E33237
-:1081200099BF7DA472F606889F9E8B6460EDD9513D
-:1081300031F4F36990575EC4DE738F7F84E3CB9391
-:10814000996DC57FF380AE47238BFB954752695BE2
-:1081500017E68D6CF495FAE2FB0831B64F833CC408
-:1081600082D47058744E37EF50E97B34F2F890F4B3
-:10817000CF40EBFD0FFF9841EA9F04F6CB25C9BF26
-:10818000BB7319E0B34D64F570C7E156017CD78D20
-:1081900060A7E52BF2F7029DEECE64F9C30ED5D8A9
-:1081A00000F913CFE2050F6452BA1D5D9A2DD8CFA6
-:1081B0005FCEC964FBAF19AB52EFBB16723EE87DD0
-:1081C0005F20E353F07798F75BBA8A7D7F8CC8E134
-:1081D000518B6CE74ED7BB9EF7A1476600E1389AFA
-:1081E000E6DCFF02FEFEF225FDBF4F6AD9F77D28CF
-:1081F000DF8DB29F7B4DF219978F33FEE8D24C7A18
-:108200007D43887EE73EE0A3097E766E4826455092
-:108210007F658D932B934E95E2FD5DC5180579CD55
-:1082200014E3DC9C393DFD38E9F06AADC79A074498
-:1082300011BED333576371C46961426641FCD013E8
-:10824000BA9BE50F191FE4F03AC499B5198946D8CD
-:10825000F7CA749D36783BFEEFECFF06CF3B8E8865
-:108260003A9E6F77E16120FDD094C9F2C9B952748A
-:108270009317F226AB8594DFB1DB98C9FEDED1A45B
-:10828000CC64BD14CE336E675481EF5F2C9359FEDE
-:108290008B90E8A885B6F927717E73BF972BB17ACA
-:1082A00023F22693E7B67DEB46A5929F5F70399D3A
-:1082B0009459E2A8735C12B95B01F95CB260A162E7
-:1082C000F8E1B981E32FE570B4A9D15153FCBD7831
-:1082D0004AAB87387E3A8E459BE0BB1FABEB05ACC3
-:1082E0001328DDC8F86EF5C683E2067ADDCBE56FAC
-:1082F00021D0C036DE77395DDBF6F94603FC6DC967
-:10830000FC0D1D98C271F36E82F99027B79F6E81A4
-:108310007C48B74078FEE4C64AA86BE8E6F56D2FC6
-:10832000D3E78D80BF397928DFE3367E5807FAB965
-:108330004325785EE6775B3C09384F60F14B524F3E
-:108340006C3CDF00F5C38FA89D13816FF29A6AEF32
-:108350004B953F7D89D3E18FFE48562A3FD0BA5ACC
-:10836000FADCEAB748369454FD1757BAEC1A877B03
-:1083700098A7F30C4991C74CF261A27F3FED975C3F
-:108380008FFFC295E75D722C759CF1579C7FDB12C5
-:1083900015EBD16E991E3C8762C163E12BD76478DF
-:1083A0005AB64472E8DBD50B325C7E0FC3EB0D1E70
-:1083B000E35158C723FB7E3A11CF51B9EC834F8A62
-:1083C000AAF0FC0ED2A9809E785F32F0FA4683F3C1
-:1083D000EFBCBC41A2DBA783FDAC9752CAD51F39C5
-:1083E000FFBCB1E296A5087F4CD201FE13AB865DBF
-:1083F0005F06FA65851282EFA69F88DD9B799B6DEB
-:10840000FD49BFC605D7AFAB6EE9D76E2D5FE1A4BE
-:108410005B9BCAFC02F33A268777521E9D85FCD5EA
-:10842000BD7D269DFF482267CA56D69DC0DF995A5A
-:10843000CC7F7F5F8CEE9849F5CD2991E549CCAF93
-:1084400030BDB16467A41952A7A7EAAF78A99BF61B
-:10845000F30618DFFDB6BE7FFBE8E6A7713B9DFE85
-:10846000DE8C634485F7A375A9EDC1B7F50CFEF763
-:10847000C442A341BFDCB43175BFFF05CC4CE13928
-:10848000F517A92A557CF22A9DC1BB3A92FAFDAB99
-:10849000F44CF61CEC520A3C9F0B64703DA78F060F
-:1084A0003DBD3A0DBC1F060208EF3BCDF7DF04755A
-:1084B00020EFBBBE03FF4E80F1C5C100E3EF53FBCD
-:1084C000562A7940A71641077E783B3B3401F86D68
-:1084D0004DEC049E7739C0F1FCA62F3225301DE407
-:1084E00065D1DC3C4A978E55242418E9F5FF9501A7
-:1084F000E637E4F2782DB57FEF82FDA3AFBE8BFEA9
-:10850000871C1E7DE34456020575E0A744731DD603
-:1085100019EEF3B1BA52129A6EF7E3BFCCE138B557
-:108520007F68F45E1A71F9417DFCBF7835CEBB3FA0
-:108530004387BA94239552E7B514C893FB33F0FBF5
-:10854000B86EB94837FF50FDC053FB87E6070EB43D
-:10855000EE0D81A241F981E72A1FD9310DE4488D42
-:108560004F4AA57F2D3D7D94C7DFDDFC635DBFCA0B
-:10857000F9E8FD44FF70DDB1DB09CF4DB54E782C35
-:1085800079793FD1E45B0378229D13ED7E299933FD
-:108590007D003BCBF253E9E0DCEED213C07940879B
-:1085A0003BB9BEF96DFD23013B1DDCEB3F25F2FD20
-:1085B000C1A3AC2E776C644D459ED1CB9FDFFA9C56
-:1085C000F8D2B233EE71FEB3F3A165E706E2C3DC85
-:1085D00034799C4970D099BEBF46D655C8D74F0A4A
-:1085E00018AC4DF47970548B94F1BA51628C86F3C7
-:1085F0005FA7F6F9F0EF43995B3D89B15404DEDFE4
-:1086000077F504FB7A7EC5F974F5926CFCFCC4FB2B
-:1086100062687E3ED69D49F81DB7378EE5CC83F65D
-:10862000238745D0D0E4A6BA3512ACEF8D00DB77B6
-:10863000AEDEF83AFA8343E5F3D5B54EFB7F155F1E
-:1086400047D2CF927BA601FFA4C3C36B1C0F4B2361
-:108650000BE7827EBE65A380FAF627300E5DC82D3B
-:108660007218F5368931FB48348A0F6A424EC022AF
-:10867000001FFFC0BF5B254754FB39B9DBB6DD3FA8
-:1086800017FC43B7BCACC8627C5C91C5ECC29BBE16
-:10869000E81F40DF5BFAF96DA1F6603EEDB231A054
-:1086A0005BDF094639B5D6B391C345FDB467F1FB2D
-:1086B000C57C7DA4C7C56F62BCFAC780FF0A0DFDEB
-:1086C000029F87EA7DA88B7EDC877554965C59FEF5
-:1086D0008EFBFD6572D4E13766661539FC77B71FEE
-:1086E000F2377B91BAFF15595FACBDB836EBB3B129
-:1086F00017C3389FB9ED4652AE5BD8799013C73E89
-:108700009A9B4AAE239F100EB73CBFBFCFC7BE9BFC
-:108710007C4D26EA9DDEFD547E02F6CB6EB980FDCF
-:10872000147CF7E3917D3F9B0875BD27B6DF7F532F
-:108730002A7ACED299DF44BAF31DF1BCB50182F595
-:10874000DF84CEF7846D7CEBBDA4BC0C10BF5CB69F
-:10875000F24ADC4FBEB1F2EAD16B4AFBEE2BFAF4DF
-:1087600017A2FFB014E66DE4FBE91D9EAA7DA9F6F1
-:10877000811CAF7DE3C44EFF7EE9C6F266D8526F1E
-:10878000CAB8E64BD114F327F7351B53C7E31EE4F1
-:108790007A2AB9AF31E9BE86E2A37B9514289BD62D
-:1087A000BBAFE9363F9F7DCDEF48CFCF67A2FCA797
-:1087B00086EF7B167FA9D11D5752F84ED1FD8F0948
-:1087C000F223D2F7805FBE957ABFF6387FEF771B32
-:1087D00087A8AF8E39F733E9E4EF7B9F91FCB5A909
-:1087E0003DA3400FFC6EEFC76FDD0FEBD9EB437C71
-:1087F000BBC789E812DF5FF8906F2DFBDCA132FD6B
-:10880000FFBBBF1B817F37DB2D1F84C4AFBF8A3EF8
-:108810003FBE4F9C02DF596CDB9751956A9FB35E58
-:1088200017787CC919EF21DCBF5BCAF94DDFF774FB
-:10883000AD3D1EFD26D757561CE07F67313BBB641C
-:10884000C14215E23DB725E34D04372BFA65857B20
-:10885000E1FB17BFE4E7B9CCB59929CFC7FD86E3A3
-:1088600077A038C48A55CE38C19205FDDB9B938929
-:10887000D47559163FA79B6FA8F6A52D31B4BCD867
-:1088800040EB1CA10FCEBE2C25B55F8278C73212FB
-:1088900052E0BA84D44EFC3145E5C9DD8B119E5FB0
-:1088A0005A7FFFF8E37B27DAFD98FF0F11FE85A1C1
-:1088B00000800000000000001F8B08000000000086
-:1088C000000BDD7D0B7854459670DDBEFD4AD24924
-:1088D0003A9DEEBC091D020818620742001FD02114
-:1088E0004482B2DA810041519A87184948A2E2CA0B
-:1088F000FEBA438720467466C2AA8CBFE3B80D82D5
-:10890000EB286AA2D1418CD8A0F8D8D59DA0AE8B17
-:10891000B3E846C7415E4322A32BB3CB0CFF39A774
-:10892000AAD2F7DE744370C7FDF6FBE338D7BAB7B7
-:108930009EE77D4E9DAAB63915C63C8C7D5B73FBC8
-:108940005F4D628CFDABB579BCD3C1D859FC9B1E81
-:108950007DFECB3AC6221731F6E13A3B8BD8A01CFC
-:1089600036558563D4FB53AA8931E8E85FE1C14AF3
-:10897000190B2D50C33B94C1F5B2705CACB7785E57
-:108980006A30463FF2B9A04665113BA3BFB3F06F12
-:10899000CD9C245DF922A753F4D39A182C62EC885D
-:1089A0001CF7513EEE91307F2FFBBB488C7B247C23
-:1089B000EE716F7E04C61D131DE78666FDB8BD2CE3
-:1089C000B48AB9619C70A2734701C3FF8CD8264456
-:1089D000DBEF759A08AEEC48A689653076876C1B8C
-:1089E00067BC0F057C8DF56BCC7E8B161FB7A77A05
-:1089F00069FEB25C33473F4F6F8A938FCB9CF981FE
-:108A000064C68E6E4BF4133CA6258747C13C2BED04
-:108A10002CE480793EF8E4C59FB1118C2D13F8AF9A
-:108A2000097C6D41781C35F5DF938CEBFAC0E4DCF2
-:108A30000143951DF45BB4F0BB2B85C3EFE8F673DF
-:108A4000C3EFAE143ECF7955FAF9CD3F98A82B1B52
-:108A5000D7FBEF7F7BEF04ECF7DFFFF63B8BB6FF36
-:108A600005A77359243D5A5E52ABF8C34583C77DB1
-:108A700029D53A24B8BF6480E392D3F9D4BF5B65AB
-:108A8000CD1D31D655EEB453FDF981728B07E0B997
-:108A9000FC6EC5A74017339CBC9FE566E6EF80F9E6
-:108AA00030B337BF1AE0EE696DBE2310A39FFF23DA
-:108AB000E0FD8D23901A8BCFE4F363410FB2DE0209
-:108AC00073D012ABFEC25A3D7C7B19AB8A35FF1FB7
-:108AD0003B395F0E951EE5F8C6FA439DC7DD820E51
-:108AE000D36D91DF33155E9C807ECA2E605C437D22
-:108AF000E3B8F73BF5F8338E7FF4CF6A5D2C38BCD2
-:108B000026F83F1800FA89F93D99BE7FC0DA1B7735
-:108B1000137F27F9762018B62FFF09A09DAD9C7D05
-:108B2000C75BF09A25A614D0FA16070E5412BB9D07
-:108B300079B018F1FE6DD5833F2985A91DB5065B77
-:108B400093A1C1D1F58A2FE41D3CCE07B84E90A366
-:108B50001FA13CBD08FB639C6E67C2FF65333646B0
-:108B6000F5D7A3506177D9BC3B347CEB5EFBDD3A93
-:108B700056CCD853D6C0FA64783FFAEEAFD73094CB
-:108B8000792C4CF3FEC2E2BB85E0CD18F1FDA16D5E
-:108B90008EAD9BA05E6A0A97938CF9F203E335725F
-:108BA000C2ECA4F250F1F3611CFC5CA89C92EB8C2B
-:108BB000370E409EE6377786A34D4965ACCBEABDBC
-:108BC00009D7D33F3BC1B90D5038D7EABF1AE1F3FB
-:108BD000C10193A9A580BA35239DCEE343B0826B32
-:108BE0000AEE1F578AF2C7E24F80A954431B36157D
-:108BF000E868862384FD957E38E719C4CF83B536AF
-:108C0000AF8AFD4DF37EAA4279EE5536EF7AE8AF92
-:108C1000AC67C45E37F43F7F8EE264D07EE6EC51F1
-:108C20009E5E585FD25AE8270747B8B7AAC2CCD889
-:108C3000D3F89F97323E6180C55C45965F6C9B0977
-:108C4000F2609CA7CBE40050AF4C7BB1CD0EFDDEB3
-:108C5000D312C872A6C1D236DFD7661FC658468661
-:108C6000BF67BA8FB1D99BEFAFB25F01EB7C54B451
-:108C70000F3DD0E6CF63EC5553B04081EFCD9B77ED
-:108C80005499015EEE4239FE2B6DFECB613D57DDFE
-:108C9000B2630DF4BF25ED9FAACC38EFC572FC9EE0
-:108CA000AA8A9130FFCB65F95FEC385F77926C0F41
-:108CB000F39DC298654474FEE62C18DF25CB9F54C3
-:108CC000CD84F13F2E6FAE30C3F8C7D2FEBDAD6884
-:108CD0002C6393E7943BFD50EEDBFC1F5549809FCE
-:108CE0002E06740AE53F6C3E4DF377AB26DE7FE837
-:108CF0008F34BFB2C5A171F85D617F6AAB8275AF79
-:108D0000B6F7BE85E4DAB43664CF4091A4703AB1C8
-:108D10005B9AFDB9003BCBAEF2482E4DA79DD36BBD
-:108D20005E643CEAB181F218288FD794B378B96BAE
-:108D30003D5B124BDE76BAB81EEE4A8CFDBD228D2D
-:108D4000CB03801BE993D483CCBF33865E1997E6AF
-:108D5000A07EF627B290DD15E5B76B8187A7005F8F
-:108D6000323B9FA7EC6790FE48E3729F85AE75216A
-:108D7000DFCCC12E60E9853E258474CD9A93C2A3D1
-:108D8000907658C43C0FF5876AA2F97A5465493544
-:108D9000F49791C8829DF0F4A4332A437B7FA723E4
-:108DA000DADF7B82EE2B0B03DBB1BFCACCEC92D6B1
-:108DB00082683F30EF0DF609BA799BA7B8F0FBDC6B
-:108DC000925B8B34F02CE2EB003AA07630CC33D3BC
-:108DD000810FBA7AC68DD804F3FB06E5AE27BAAE8A
-:108DE000B29EB91606F5B6B8843CF1F2F69E0A2E8C
-:108DF0007FFA6F4D0A6F43FEB4FB4A104FB2DD0D90
-:108E000002EE15F7CEF919D66BE8B1301BD45BD35F
-:108E1000599EC9CEA1171B4E5FC6C213356573C4D8
-:108E20008A72A7E1F4347A5F71EF7B56E453ECC7A2
-:108E30000BEB5A93E0CFF421DC5A63E39FB1169A0F
-:108E400047C3E934169AA87DCFE114EDDF4DDFCF9B
-:108E5000B7AE687F2A0BA79FAB3F2B7D1F80BB5906
-:108E6000C0DD1A7B9E1B04FD20BC4D1AFA9A2FE828
-:108E70000DA49F1FE5E1A16B8AB6A1BC8F8EBB9E9E
-:108E8000FAEF32031ED10EEC49F4A25D5C66E6F205
-:108E9000B3ACC7E50C2951FA907421F1DAE56A2EDA
-:108EA000A7F5562BCE6D0583E775BF9C97D0A79984
-:108EB0008B83EA52CDFC243F40FF5DA2FFD229C440
-:108EC0003FBFE0F4027C7303F22FDA2DB80E5F642B
-:108ED000FCDCE4C1F33F0DE4854FC02387FF5F391D
-:108EE000C2A80724DC06C33FF73CF8CCA7EF653DDA
-:108EF000FBACB8CE86387CFB802B85DA651E8CA453
-:108F000078A1DE19617774754C4CB80CF9628E89C2
-:108F1000A108C375A3BD5A36206FAF7C7706C8DBA6
-:108F2000CC8132C85B2FE26140FE46ECF668FD1F43
-:108F3000B9AE9CBD01E4B5DB06F82F223BD4CE349C
-:108F4000FEC4EE346EBF4D09B29876CBDFB9927590
-:108F500072ECFFAEAD60BF85F599D3B8DE9FD21B32
-:108F600052102F92AF8D72EA13C18F1F8BE7FFBC97
-:108F70009C52CE23A7AA859CE2EFF783998FF53206
-:108F80003222E315D089CBDE9D380AFD99DBB2543D
-:108F9000EF97C057F314DFB067A1DF1ABBF79E64E9
-:108FA0006F944E6A98DDEB40B883D17416F5FE9C41
-:108FB000042AE31FDA25A7DA154E87CC9B5A333EE5
-:108FC000BE1C92F3B82DCB4AE32DBB6F546A503BC5
-:108FD0003FA127AEB5459E658583F95C9661FEABE2
-:108FE0004DAAE6BB83EBB3B1C9FE6FD2D00E555884
-:108FF0002DCDC7602F3904DF19EDA587B16F0FFDA7
-:109000002F62233E3691739AD9660B33DE24847E19
-:109010006A660713FC1A313568E8C0EECAA3792CDA
-:109020005E081F2F01A6B4BF71C9971A3E7A07E7E1
-:10903000437A213209F934C1C57476DE623590A7CE
-:10904000A0DD9A69F3A19C013C111CF62730730244
-:109050008CFB363C116F95EAAD7B2D6EA403C5D712
-:109060004AD0DF2AFC5616417D73EDF424B25BD959
-:1090700099DB4756033C3C499C6EA11FBBE8C74E99
-:109080007422E4DEAFF3C76E43FD24E5A7C4033BBF
-:10909000A3527FF2FB7EA53ACF09E5FD9E8B4A5A8B
-:1090A00015BDFD83F650D47E4ABF6F16F0E3E4AAE7
-:1090B0008E880958A825E4997D27D4AF4CE26B1E11
-:1090C000E9E27A707F41484DC1FE46C13AE0D55B86
-:1090D00089C1A26647141F60E304117F1956783ACC
-:1090E000387FE0739F8BF3D99C748E942DE9BC9CE0
-:1090F00091C2EB1BE9ED49F17D95C2F1BBA99CCB77
-:109100000963BDE92EDEDF6A7BA82A6384D6BE0A26
-:1091100030A44333E37696DF25E8A482C3ABE2DED6
-:10912000C5A9A837BFED999FCA8AA272F41E25E887
-:10913000F441FD7B2C819F52BCE35F5486FE883551
-:109140002DE87441BDF4A4D8FEF24D621EE9E84F4B
-:1091500043BD9F087FC772FA62F2B317BAB83C4B9F
-:10916000C9AA21798E30F4A29FC2FA434E0DFE5255
-:10917000A798747E83E57431B5BF70BBA1248EDDE2
-:1091800050AAB31BE4B846FBE1D37559347FD9FE2E
-:1091900086AC8F2A99A6FE8DACF71EECEFC635B9CA
-:1091A000BA38513CBBE32E011FB4134231E765D5F9
-:1091B000BDFF14FCC49076FC237CFCE8B849C06871
-:1091C000D171FD2EFFDD2EE2A7CB9D872F864702B2
-:1091D000BC5749DF90DC07BDE4DFEA207D5485F20F
-:1091E0005AFA47C8F7CE54A4F1F20DAE491AFD2839
-:1091F000DA19E5D09F453CE3CF4E6EFFA51E94F6ED
-:1092000062A25751A2FA66B0BE127AC62017CF6783
-:109210005F03BD86B4FADFD8EF53AEEF6B5716C6C7
-:10922000A18FD1FF237665D9E541753CCACD2A854A
-:109230008D82C7E4997A3DDFEDE2FE47B72B49A75F
-:10924000E7E72ED6D78B60BD49F84C1A92BFA2D55E
-:10925000438A8AF28EF7D728E8A1E0D807562FC8AC
-:10926000DFFF1276D017E9FEB791AE3624A614A31D
-:109270007ED8FAA78A315B61DEFDEF5B7CDBB0BB99
-:109280005D9C3ECA17AD6935C37B4B87E2B4318D17
-:10929000DE5ADB79C90A58EF0792FEDD7C1D0DEE20
-:1092A0008875248C9BD3C0C7CFEBD8AB9835F22DF3
-:1092B000AF8ED73BE4B2E8F45EAF287F26FD0F16F1
-:1092C0006EA92CC5FA7EF326107D391D0AC583735D
-:1092D0009A01004007393EDEBFC31756961745D79F
-:1092E000D966AA2E42BDD09691E443BD30D61D3C2E
-:1092F0008CF4DF70281241304D3ED46346FBAEC281
-:10930000EDFF0ADFCB757A55670ECAD5A4437C7E84
-:10931000ED067A070B59D0F9362E6F55F60E437CC1
-:10932000A0EC80F132D68F21BD24EB67B8849EC8B3
-:1093300060C117C8AE626D8CF0C5681D19EB47930C
-:109340007D2FF119B5A3C64E403BAAF0818879194B
-:10935000B4DBFD58ECF8BC45E81158074BF744D78F
-:10936000118F2FA41E93F52C71FC6849EF4955B15C
-:10937000ED53D000F4BD7C91FB3A5C77C3062BB370
-:109380002951F857B803E9389F9C8EAD0AC246D2DE
-:10939000D706D7D34A2EACEFF65B985365F1E7DBDF
-:1093A000B0F6C54B5668FC2DE89FF0B1D5CAEAB4BB
-:1093B000FA54FA1317A773FD73A73B3002C76DDC8D
-:1093C000B5D98AF8BD65FBE7566DBC7BD03A8608F7
-:1093D0002FA58EFB290DB5F630AEB37C9199F057D1
-:1093E000BFC11A4679D4B0B33362427BFA6EE6430A
-:1093F0007E6FE8E87C2B07E092DBE09FA47AA3FD78
-:10940000E53684159C4F0610610FF979112BEA6738
-:10941000235DA33D8C76C95B099CDF4F943B420AD8
-:10942000C0EF8425D880F54E6427F942055178BFF6
-:10943000DD39EB1D05583AF9055B049F6DA66D59A2
-:1094400076A8D736CEEA433AAA700767A5037C5CB4
-:10945000E64017B64F7327FB5AA0ADD7C626907EBD
-:109460001E221C261BE861F2DD9C4FFE263D45DADC
-:109470007B13500E2D4D4F96F612C9A7B72C7C1DAD
-:109480001B189FEF3E977F01D1ABD345E3E63444F1
-:1094900014B4F78DE346E9C9BFF842E81BEC3C2B56
-:1094A000CAF57A2167CA176D577EABA1837A3064FB
-:1094B000905E72766E55D00F84EF2D956EAACF6CAC
-:1094C000286776F2FD887AF87E9346AEC875C49018
-:1094D0002FB7217C1D877ADEE4F22542F427E76B63
-:1094E000C4E78FD2B91D77259805F4DE1A1AE385F3
-:1094F000FEDE1A9148FD497E37F2E78F049DE7D4DE
-:109500006E57306EE04EE276A39C9FACF745FA8C26
-:10951000F5389FC9553D0487D5B566C29B9C4FA5BC
-:10952000353012FDAF76D1DFBE859F597BA1FCD0CF
-:10953000AF0E103DAE6E57FCE417B41FB0CEC7F8A7
-:109540005CE8972AC663AFE62609DBF2D201D22394
-:109550005777F138C1EAAE4EF37247944E0B8EED59
-:10956000BB11E96C75878D2528883FBE5E239D82DF
-:109570007C21BA67212BED67817C0C913C65C1028F
-:10958000F447A4FCDD27EC4BE6E0EF9F10F396FDDB
-:1095900046E56602D17BC1B109FBEC00CFD53EC5E3
-:1095A00007A612D8DBBC1EF41F21F9CBD808F4CBD8
-:1095B00064FF46F8FD5AC8D518787E3E3D861E9158
-:1095C0007AB5E0F1190C9F127F660177D9EF9E748E
-:1095D000BE9FB527DD4CFD6F28E7F1EB0D16AE3FC2
-:1095E00036B4D8C3C8D76FA75DF98E520C707259C4
-:1095F00023F8DC6F5AD680DFF7E7F079B499D68F7D
-:1096000069E6FAEBF574C25F0AE3F289CBA3875EE1
-:10961000E4F2A421E4203FB12158B382F61FDC0913
-:109620003EB4F759F04DEBFCE4283D18F1EB7D61B9
-:10963000AFD50BDFAFEEE07C10855B5847B720E776
-:1096400008EFFB5C723F2258807005FFBD05E30CFC
-:10965000D27F4F591C08257B07F36BBAF0DF27092F
-:10966000FFDD32C5FE17F5DFEBD7FE5336965765A3
-:10967000BD4B4FC92FE027EAF8EA84F0DB0E08BCA7
-:10968000FF41D04B7D6907F143FD97CDC4478E2A3A
-:109690002E4F1C87F47290B11F8BF53F40FD54266E
-:1096A000755CA9A23FFCF78AB395C59FF7CD4AF335
-:1096B0003F4F45BC74AAB42FC5CE80555F06704D90
-:1096C000103010F52C6E1EF73EF1142002F9D2DC9A
-:1096D0006C3D97FD7BBE7E59E42305F15D2F607DD7
-:1096E0006267C5D4DF613CF1A954DF2858FAF19DC7
-:1096F000F3FEE677D0FEC4F6E93ED4D3EED600D131
-:109700004FBF27C1877143B70A962DD0434BC71B64
-:109710002997E1BED833974C40B999E7E67C79ECBC
-:1097200045752DC267FD3F3C3F0DBFD7879574B48B
-:109730001B4F3CF5F77F46BD58B7BD093D0DD6FA26
-:10974000CCEB64879BC25BF9FBA752C9BE3CFAC451
-:10975000E66908F7D68E56FA7EEC89AD54DEF70F2F
-:10976000CFEFF94FB43702293EAC77ECC5CD3FFAC5
-:109770004FA4F39A141FAEA32168E6FBB692BE8DE8
-:1097800072AB732FF1A9A497AB51EF229C6AB9FC7D
-:1097900091F4FC85D8575A56E1684379F6C5A6E49A
-:1097A000BA58F144BF582FC65C488ED52A144F6B67
-:1097B00003AAC1B8465B229B82CFA4A2883517C6F4
-:1097C00059B8B8731AD93DA1CF5762FD79BB12D8E9
-:1097D000268ABF61F016EC7F2275C6C683183C0C42
-:1097E0007E32F4BEFD2CD8D71F5B309643FDE9ECEA
-:1097F000FF796DEFFE11E5688DBD77AFC71B7DDF8B
-:1098000026E234509FF44ED99AD8F1D02AB743D0EB
-:109810002DD79B395DD5795E921336DF288D5D3A61
-:10982000EC60F32610432CA7AEE74A5CC75563965D
-:109830004E24BAC0381FEA9F9083FA5F8D714AE0C8
-:10984000B3456ECE4F194EE6BE14C6AF3433B703E0
-:109850009F8C7D642139B283FA05FB83EC2AEFEB00
-:109860000B77A03DB2C512CC9E84FDB409BDB59D59
-:10987000CF1BDA3B71BF14FA735E3A81FAE9B1B8D3
-:10988000A87D88B79FB5BD4589CE1728351FF51629
-:10989000F657EA403D13AA25FC78ADB4AE635825CF
-:1098A0009BD65D7CC3F828FF1AE33B28CF701FF8D6
-:1098B0004E77F96DEE49D1A78CFB18E1F9327E871E
-:1098C000757FEBF6D3933D95AED32BF1EC957D0BE5
-:1098D0004F72FDFBEAE7246F1A918E71FCE0973A14
-:1098E000FDBB5CD2F12B9F131D2FDFC5F56FE3AEDF
-:1098F000122BD2EDF1757EF65B30401BC53EEB16A8
-:10990000A57725C5795E497062FCEEA4D037F50FC6
-:109910007C7E18F74747ECCA26BFFEE42B09B5D872
-:10992000CF7E9389E0B97FDBC55B5B15ED3CB93F2A
-:10993000007630916A23D8A9DC0E5EB119FDB3D54B
-:1099400075CC87FCDF68A09FC65D07885EA41D5CA0
-:10995000F0F8DC15DCFE4CF025A0FF3693DBA30C01
-:10996000EC51AC9F3633DC6225FA2A2943FADAB788
-:1099700070CF46D4E38D339913FBDF32CCFF4A2EF0
-:10998000AD476198CFB2C5D23EC30CEDB7547A9DB6
-:10999000004980DB76B27BD918ABD0732BC85E6EE2
-:1099A000CCBADE477C669407AFB490DDD5E84DA411
-:1099B000F95CBD4BB98DDB230EC6E7AF107D5E1D94
-:1099C000BE2C8CFBCABF17F093703C69E9B911E15A
-:1099D00071F2252044F87EF54C4EAF69333B488E3A
-:1099E000BCFDCA2CD2E3922E935FB6913E77999D2F
-:1099F0008A8FF4DA3C9B16AFED16AE97D2849E297F
-:109A00007C80E33722F82922F440C46DD5C75B9CE3
-:109A1000A162D4BBBF17F8273182F25DC893D52B62
-:109A200022C44F0D3B797F6E9BBFE4760DFDBA2BB0
-:109A3000B85E94717FDC07A88E212F7EE7E6FAB12D
-:109A4000E0F1659BD15EBE0AF08E2A25678C90A35B
-:109A5000401708B79CBA00D1C155EE9B7D6A01ED55
-:109A60001F909FD8DF6265B1E23C47851CF5A407D3
-:109A70004A31DEECC94C263BC7A3969B12B05D89E8
-:109A8000E2DBE6A5FD4DB2F3FA3DD9BE6D3A7E0F9D
-:109A9000949AA0DE918C648EE7F0AFCD73C7231F3C
-:109AA0007AA59FAEB3FB06FBDBDC6E9CD31E2A4679
-:109AB0003F44EE5F4838845B126BB5F2B34FC02170
-:109AC0003C96C7F3C1BE7750FCDA09E3A05FBFED57
-:109AD000B227B85FDF4AE31F74F3784625AC0FED79
-:109AE000364F61600DD7A7C9BE58F0B853E079DF93
-:109AF000C21B4BD0AF6CAC71F890DF1E7A55594643
-:109B0000F48CC141F4B7832B080F0CF080FCC082A9
-:109B1000DC2F6D6C0E8463D37B35F15F23F29F42A3
-:109B2000F44EF176A0F730A777AEFFA4DF8FF2B145
-:109B30003AC67EA8942F8DD6DED148C7921F1AA7A9
-:109B4000F58E46B80D559E9CB400FF23FF001C9077
-:109B50007F24BF24EFE67CB2A9C55B8EDF37553288
-:109B600067AB461F19FD259C27FA9D52AE8F7507DE
-:109B70000A3D1807304536621E8594C38DBBEF1B26
-:109B80001D2BCF4DCA61BB99CB377B3829DCAAA1ED
-:109B90002FDCDB4B9E404FCADB495A1B3B2E52E663
-:109BA000718878FDD0F222325097A3BCD996144622
-:109BB0007925E344C67EC778145D3C46FA2DB8BFCC
-:109BC00080F5E77A38BD547AB89CB85E3CE5FC2550
-:109BD000FD7B4DC1CF319F289EFE92EDFE52712B31
-:109BE000398ED4A346FCCBFD115C4F7551FC7AED48
-:109BF0007BB97C32D2E372C1275E5C2BD47B4EEC06
-:109C0000670DC62FEF87D59A75F96F6DA6CEBA5836
-:109C1000F12FB9BFC11E320F29BF6EEF3A9E47F533
-:109C20009CC8A7658BCDBA7C2A87CFDB82F1D3197C
-:109C3000F6821295C6E571ACE469EC6BD4C3C5BB82
-:109C4000DAC7609E9227A0DF1FC9AC4DD4ED3F64F8
-:109C5000075DBA726E5D8EAEFEB0E611BAEFC3D785
-:109C60008ED37D2F084DD0950BDB2ED5D51FD53E3D
-:109C7000439F8FFBC855BAFA63C37375E54D2D1D1D
-:109C8000B588978B9FBA4ED76E86D9692E01B88E4C
-:109C9000EF58A6CF1333C033F5CF6A4C3A7CD2537A
-:109CA00040789D61D6E70B5FB24B0F0F4C8BC3FE24
-:109CB0008A99E86FDA9109E7CA632D66E66F7A65DB
-:109CC000FB82C1F4C0ECBDBE400C3F53D2B92C1B8B
-:109CD000F7B1A4FCB850FA8B374F497FF1BEC78368
-:109CE000DBBB1EB90FC3E16219804BADEF5C70B1F5
-:109CF0009C0F2E0CE092FCFDE162EC6F7D5223E59F
-:109D0000037F84058D7DDC2BF84896178452B91E9D
-:109D10000ACC3B8F1DCDE3C0411BDF9F347EB7676C
-:109D200070B9361AE640F019225F7F26F070281EBF
-:109D30005FAFFD7A7F26CAEF2A467EB3B3B9E56BE3
-:109D4000D45B4BCC1186F4FF9058CF169117FAC80C
-:109D50003A27F5F3A8D87F7C6C9D97DE3FBE6E0C4A
-:109D60003DC3EB7CF47EDBBA29F4DC0EF61C3E9F8F
-:109D70005C5745CFA7D605A8DED3EB6AE9B9735D7A
-:109D800090CF6B10BE5819D93981F498F1D2A52122
-:109D9000754878626A5E4C7D19B71F75F139F3C852
-:109DA000D71E5A34FB4D0DFF666524BB0F630EE3CF
-:109DB000643619F733CFD7FEBB75B5B3DF1C3574E6
-:109DC0003E92F4C4CEA48F8EC5D741913FF9BB8794
-:109DD000CF6E0A15C5875794CE62C3A9C67E3207D7
-:109DE0009DF562B41934ED0F1AF8B826981AD36E9F
-:109DF000A811F4596BE3FBEF8B0CFCFD92F8FE52BB
-:109E000006D7779FC49133576798A43F6FA1FDC0D1
-:109E1000417CF7932B62C1777F8657C7C78B820639
-:109E2000BC1AFAF9C4D23ECC1783CFCED78F5C9F31
-:109E3000B1DDC3195C6EBDF8FF297F7E725332F924
-:109E40000F08378F66FD9FDC94541B2B2EF35A06A8
-:109E5000DF0705EB9C15B8C8D40F59D1561CC3BCFD
-:109E60007C9F77A413E343320F203EBD9A298E4492
-:109E7000305407C315F0E1B51642FFE68171226642
-:109E80001CC7678AEA59CCA9619A731EEA607A8076
-:109E9000F6212BE5EFF4E6D0BEFF05D213531F1BCE
-:109EA00075AE7DBA41ED2F50CEECF881E58CE473B0
-:109EB00076E6C151B1F4642D8E7D29AC63CBD4FB21
-:109EC00049CE9CA7DF0B855FADDA4BFBD64386DF1F
-:109ED0002EF790E2526BED29C50CFCBAEF12F83365
-:109EE0003483F1F3589F2584D1CE3F20E6098EFFBD
-:109EF00025DCAF6E9E8CCF7FCE0A7C9801ED975902
-:109F0000B99F383EC3FF119613C53EB035D3BA1181
-:109F10009FCCC9D7718958C74693371FD7F1A5E29F
-:109F20001B8B7E8AD314F6E1338545C6F3BCBB7028
-:109F300010FDB3F48B13BDE8DF268E66AC87E2E13B
-:109F4000BE048C9B5993FAFF7124F2FBEB268C30F4
-:109F5000B2E79D7CBECF3F924BFB2AE801A17C2853
-:109F6000C6F730F54D688743FB6B59F018CEEFA864
-:109F7000D31E32C1BC8A677FE1C27CA8E7BB67D031
-:109F80003E42E4293564C5730B3D27FEEE6AE8EFD7
-:109F9000921E0BC59B2F612AC9F37A337B00F926E9
-:109FA0001E3C8FFF75ECFCAE2B32B9DC93795BC69F
-:109FB000EF79E2FBF13879C48E4CAE17647E8C45A4
-:109FC000E6C778FCE7CC8FB118F2632CE600C37DBE
-:109FD00060CB407ECC6246F931D08F363FE6F88CBC
-:109FE000D8F3708B79584E27C5E93785DE1F1F716E
-:109FF000EE755A4E27E8F2ACA3ED1DF43E5E7ECE20
-:10A000007831FEF138F9496307FACF66A1746D3BE8
-:10A010002F9FF7C03879F4DD62C8F3897EE7F93DF8
-:10A020001BD2389DECCD72BA9742D74B59AF05E998
-:10A030007489C36DC1F85180F93AE9DC8ED9D2DF59
-:10A040002BF96E04D6337F8176B609242DDAD94BED
-:10A05000D65ABEE8D5C8A96ABFBECCB0BE46EE6E21
-:10A06000CA6234DFC4716328AFEF14F3A63ACF217C
-:10A070003717DB55BB59B3DE4371EC865B05FC0E2D
-:10A0800065C786DF7599DCEE88771EE2D6CC14DDD5
-:10A0900039BDDB9DE7969708DF60BAB67F231EDCEB
-:10A0A000F4FD7C70F6E0E61AC6D1CA159EBFFF1714
-:10A0B00087779A3857C5CF05580C79E89BB2B8FC1A
-:10A0C0008BCE9BE7A17FE40CDC9E8972D1EC1DADA9
-:10A0D0003D07D065F6274D80E72121778C70D99D0B
-:10A0E000C9ED37E3BABB443E7DA2CA9A3B35F0378F
-:10A0F000AEF73941E7B2FE060BDFBF82BF801DF02D
-:10A100007203E372EFE1CC11222F3CCD8CF270315F
-:10A11000EF82DDE07C8BF693249C07C14FC0DD0805
-:10A12000C700F3DE8879DBE783674796FF6184CB5E
-:10A13000D203895694FF37DAFBF7A38FDADB63FA91
-:10A1400078243C3F778C3CBC9DE1FEDB9897F7C1BF
-:10A1500033658A8FE751B09964EF28A15CF5ECC5AF
-:10A1600043B77736A604C7207F7C29F2AEA53EDA36
-:10A1700098736C34E6CF7B5DE5ABB23C1477F7A700
-:10A18000231DBD66E374F408F404E5A63D63B7A29D
-:10A190009E79302B5887F5641E1FF3F78FC63C84D9
-:10A1A0000B8513FC59908ECE07A7273219E1E75093
-:10A1B0004A6C3AF94D1C3A31F2079D2F2BFDE1F81C
-:10A1C00043C253EE5BC8F9D565713A944F093763C2
-:10A1D000FE505D9649D4E3F9880F660508CE7DC32D
-:10A1E000BE3E9C00733F64C8F792CF93421E9D6FA2
-:10A1F000FD12DE3F941C3E94187B7EA6ACA1E1E7E5
-:10A20000879A5FBD9C5F71ECF965660D0D7E01D686
-:10A21000FF59DA0FA0C700CFF58867B6A19FE4E326
-:10A220002157EC79960D799E41CB0FA16F257DB317
-:10A23000D0D23ADAAFCF4A8CB95FBF00FC27F47FA7
-:10A240008CFBF6727F1EE407ADB7C6DE7F633AE291
-:10A250007DA65877068BA4E17EE61E1BC5FF8DEB1D
-:10A26000BF42D011C0AB82E035A79FE2188746C736
-:10A27000960B15C6FA6D7C9C78E70BAECE528674B1
-:10A28000BE80950629FE576E774454C0C36D021FE9
-:10A29000D6DC553EB40FCBB3DE3B88EB04F89F18F9
-:10A2A00080A7269FEFD8BA779C232DF1E576BDFADB
-:10A2B0004259738CF5043DC11BB3347E50FD53EFFE
-:10A2C0003A476AF0359EF59AF8F9E87E93CE2FCE9C
-:10A2D0006417E41757639F988FE00A903E40FD8013
-:10A2E0007A67E3EEA925884CB433309FA73F3991B4
-:10A2F000E4686BCEA563BC1A7886B2A47DA9C6B10A
-:10A300001BFF7BF9FF51BB49D1D9AFD1FECDF45E24
-:10A31000E2A7DCF18F31F111F4F8EF213DE6F26FA5
-:10A32000C4A7117EA17B2F4FA3F30508BFE9D1FE7F
-:10A3300006F01F07CF1D1E7F3BF6D720CED1283257
-:10A340008F6F205E61761EB647E13D54BC248A784B
-:10A350001AD80D8F211D586D821F9983CE874BBB54
-:10A360008519EC1B3686FBB73764BDF7478CF76C55
-:10A370004CE12CBBF14709E4072E519C565C37D8C1
-:10A380001F9FFE1CEA0759E4D3BBC83F9476469250
-:10A390007A3669E8F394FEF2F9F2A9F7A13D06F3E3
-:10A3A000996172D0FEE63E585F36C88D1956FE2C74
-:10A3B0009F055405FDCD50F3BA7B615EDFB2338952
-:10A3C00057C0F3A78CC361CD81DFB9D01F9D61B6A3
-:10A3D0001CD3CA2D63BCE38DAC6437E151C43BBED2
-:10A3E00065737E7D31C2E57217C1A5F8959999DA3A
-:10A3F00078CB40BC43AC635E682997A7063927E554
-:10A4000099C9CEEF11617EE6756650DC88C33DA424
-:10A41000303394AF90657452A07CB9409282ED6164
-:10A42000DD5788275B16CC423983693C381E787F1C
-:10A4300059F86C9DEAF3E273BA1230F3798479DE4D
-:10A44000216BCEC3FA267BAFCACFE7C10C32B0BDB9
-:10A450001C8F9793457943CDA91B6FF20E8E633005
-:10A460004732D9BD5631AFA34E47C804EF6D8EC8F1
-:10A4700051CA4F154F63BCE33B532884F9D977AADF
-:10A48000619A6F128B447A303E61071098288EF0E3
-:10A4900007E403F06E1A719E09CE5391BB18E6399A
-:10A4A000FA152CA71BF491C7B186F29E3D01B3416A
-:10A4B0000F0515E49BCC5AE37BBD7EB2B343741EFB
-:10A4C000488904B2CEA69F3F5E638CD35866701451
-:10A4D000F7DFC2EDDE8F13793B4917E9D95CFF3610
-:10A4E000BAAC8CF25D32EC76B4DB4F261FC12397F9
-:10A4F000A837DA506FD82D7E8287D41FABBB6E652C
-:10A50000889FC65DD50CE5E86F14BEFF19BA41A15E
-:10A510003C05796F436D117B1F5AB2A6EC1134CE06
-:10A52000FC7782373440B9E63D363E02F54AA6074D
-:10A530002AF17E96D6F1CCB71ECAAD09C1675FC2BB
-:10A54000F51C50A99F26712E963167FD4EE87FEBD2
-:10A5500075C37C9B704915FD1B310FA8FF3EE6C4F7
-:10A56000BC9141747A06D607F87F02CB30EFA6156E
-:10A57000C15FDC01F5B3DF633EAA23BEA32F82785F
-:10A5800053043DE0FBE9F0BE49D04D61B7C2F7EF9F
-:10A59000DD36CA9F600733895FE6DBF9384DDDE5BC
-:10A5A000D74E827915F64C24321E09F531BF093396
-:10A5B0000C787E1D237FD9587F24D6F752B48AE7C2
-:10A5C000D5E458E9FE2326E4DC6403BF5D16A57FCD
-:10A5D000FA5E22CA4D421FE9F804FB01FFDC5FC6A8
-:10A5E000B7F3A99D9BF3838FC93FCEB797B2E81FFE
-:10A5F000F65B111D87E4EF4CF16DFFA2D994D73DB6
-:10A60000D91CD98B7C7D9978968827F2B51DE0B846
-:10A61000D0DCBCDF03EB495BCB7C2D38CA626F2BEF
-:10A62000F657CA022AC2B9CC795F2BCE6FEAE20391
-:10A63000E9485F4F6617123D5D6EF715260089B435
-:10A640004EF1F99CF0AA76B14270995F6B0F63FEF0
-:10A65000DAFC81FB7A82050B806F160615718E3E3F
-:10A6600058B058138F95797D0B6CE047C7DA77CED9
-:10A67000E67A5CB66F12E74EE4F76DD90E9E5F99ED
-:10A680007D655336E557F07C67E0FBDBB22745E597
-:10A69000088C4BF928F398DF82EB9A27F856F2FDE5
-:10A6A0007CFFED64B7CE0FE8EDCFDF281CDFA145BE
-:10A6B0000AD9830B6BCF6D9FB664CBFDDE3C27C5FB
-:10A6C000B799D4479CAEA4DC9E8B7A1CE56D15E847
-:10A6D0006D8D7DBCF8CE3369D42EF3C9D56787471D
-:10A6E000CFB93419CEB9348A732E4DBB5A2C1948C0
-:10A6F000EFE29C4B53F7E71BB5F97D124E83CFB9C0
-:10A70000F4535EE3026B782F9EFF59B00AD608F52A
-:10A71000DF10E722DEC4731113A274947C5D4284BF
-:10A72000E7CDF9297F2FCF99E4C37C9336D304CAB0
-:10A73000176A4B49F669F37336B53457623D99276A
-:10A7400024CFB52C88B31FFC9C906B5B149EAF1577
-:10A750005A6427787B5476507B4EDF5318A03CB95F
-:10A76000A66C2F8DB345C41130AF74223CC3608EEC
-:10A77000717CF1F646F900FD6DC0FE2A0A7D941F3A
-:10A780005391CAF3CC3CE98192DB8AA2FDD674F3E3
-:10A79000BCBC9AC0D76FF1FCDAEA5284A7519E4B39
-:10A7A000FA32CA75A0BF7D488FDF99B8DE89CAF733
-:10A7B000C0A29BA0BFBEF7AD943FC7EEF62B1668B4
-:10A7C000F7E2BB4E1F9EA7DB501EA8AEA4EF663A71
-:10A7D000EF9751CB2236F85EFA9E751BE6EDD5B1A8
-:10A7E000762BF65767D05BAB1C6F5A913F576DB70E
-:10A7F00044E99161BEA1AF10055DC3CE41710F92D6
-:10A800003F522E19E9988DD4CB9F12296F412E709B
-:10A810007DB598EB39F6A482F19FBEE423AAF09FA0
-:10A8200049DE4D9242CA20E72775BF4DF6CA3490E3
-:10A830000FE89F29582EA6FA5406F93906F3472F38
-:10A840006389445F83EC0431AFD28179737B48CA5A
-:10A85000C5F2298CE17D06122F300ED1B3DCAF9BFF
-:10A8600084F7F0C0F33231EE9D267F5144413CB174
-:10A87000B0A910ED8820D93B46FBA7CCDE9C6487AD
-:10A88000F54D61ED241727EF7F93E424E0F92CCAFE
-:10A8900099D798C4B3CF8E72A61213FF547CEAF1F5
-:10A8A00034CBF19019E1342BCB888F9019E13ADB4E
-:10A8B0003B084F744EC01F074F7E2947985E8E1489
-:10A8C000B033FC5CF27D6FDD817EEFF9EC900F3DE3
-:10A8D000C1AC1C929F7A7B245E5E5D418EE382F266
-:10A8E000EAFA2CDC4FB894F5AEDCA90CA68B93FBEE
-:10A8F000D7AA591AFA9174B95BE4D92BAF8BBCDD96
-:10A90000D264D27351BDC8F15F264A97225D69F0C7
-:10A910007FC5AE84880AF45622DA5F8AF43021AA11
-:10A9200017232687D70AE36E547C6D6A0CBC67B880
-:10A93000BCA4FF269AFC2AD953CC978E7806BC4F2C
-:10A9400043784DB177B49A619E87ADBE9FA3BF5245
-:10A95000CEBC84F772837EA970D498913F2BEC46CD
-:10A96000FCFA09EF95CE41EF4DDF07EFC311EF522F
-:10A970007F0CC1FE04BC2FCC89B15F180FEFC1EF73
-:10A98000897723BE25DF7726382B1C18D7ADE3F94E
-:10A99000C413DF1FD98AE58CD50574CEA533CDF756
-:10A9A000067D6FE6DF4B7BFC2ADE9F58B806BE4370
-:10A9B000B9B3205081E5A6B50AC9CB491F055BB1E3
-:10A9C0003CF26EFEBD647DF31B780F595388B7DFF0
-:10A9D0007D7423DD2711DE28DA97B75760B9A98D7A
-:10A9E000B7FF2AD91E42FFBAEC60B815DF8F7D8011
-:10A9F000CF43DA75D3059D752A2FBC41EDDA79BBBB
-:10AA00009BDFB227927C1276DA34B1CEE98FF175F2
-:10AA1000BA7F7B559517E8F0A6FE9005E9E0B0A94E
-:10AA2000A18CE4651C7FAB5C69CFC3E72C900B8CD9
-:10AA3000F00DF43982E79B6E83211ECBE17686CC44
-:10AA4000D3C47CF16A0DBE1ECBE17127592FC3C55B
-:10AA5000785EF1A3C964B7CA3CD2C8CF98827100AE
-:10AA60005C23E9D73879A5B30A9B495FCE1A2EF348
-:10AA7000497BCDCB60DC92B37FB832967FFD8418E2
-:10AA8000F788C87F97EFEBC20526F43F3A9178E844
-:10AA90001EB3DAF7D12EE94C63BA7B423A0B78B990
-:10AAA000F3D19A1FB7E5017C4DCDE6100AFD7C85F8
-:10AAB000EE3DB9A68745525306CF7F96994578DE7D
-:10AAC000039FFFCA56EBB64D1A3B7DBE141B978FF2
-:10AAD000223D5223F024E5C57C812FE0EFDDC8DF65
-:10AAE0000BECCD64172E12F2FD1616A638C52D06F6
-:10AAF000FEAE777CF399C984F1303D1FAF86E970D3
-:10AB0000BDD0FFF82700FFBA47929DA8E75777E826
-:10AB1000EBD53DF2FE416E5FE9F9BC4EF27958CFBC
-:10AB2000E76038703EFFD938DA7F91E7FA12ECFD22
-:10AB30009F855874BD03FADDC07F0978CE6F0CFA8B
-:10AB40002D269E5F28CA72DC53ED5C0F87400F0BE9
-:10AB50003F8744EDA943B3C3480F25827F251F9744
-:10AB6000087D3E485F5719FD9887883F268A928462
-:10AB7000BBD4CFD00FE967796E10F4F2FB7EF2EF11
-:10AB8000C1FFC4798ED3F3CB2605E47341D45F01B2
-:10AB9000BC7D8D7803796CE7718A7686F22CAEDD08
-:10ABA000EF5813D3EE074947FB0083EDFD88CE8EA7
-:10ABB00037E22B9E5D3F80AF04B09792D08F67C481
-:10ABC0001FFF88CF21E475809C76E4C690D3D67DA4
-:10ABD000BC5EFFD6048A17C8F8B8E437258FDBD5EA
-:10ABE000EF66F95DB9B8FF20FA3F74EB2CDAAFFEDF
-:10ABF00086F969BF1AF38D7263E44BE07EF5064D6A
-:10AC00009CF4505AECB8F5F05CCEEF4B72F9BAC632
-:10AC10007BFC5E1CEF8895C7C58F248A670ADF57C7
-:10AC2000B83897C7B9978867B9781E1179D8475C43
-:10AC3000FA78BAAC5721C6F9729DDDBE412357BCE4
-:10AC40003FB335A3BEF2148ABCF5359C5EFB5E496A
-:10AC5000DBAABDAFED9ADCF22508474FA1DF9A8D44
-:10AC6000719657B85E6834F75A31BFE41A77702A84
-:10AC70007E6FF432FF0BD88FB7D73A0FE0DC27F6A0
-:10AC8000E9FB2CDCDFE84BE04F39AF6B72AB97E0B0
-:10AC90007AFB6EED25F93050AEEE25FEBF2637402B
-:10ACA000E3F6CD97DF45F9C7BCCC847F582EF882F8
-:10ACB000E2BC31E2BA83E3B8FAFB679AACB1F7972A
-:10ACC000595EB22E3E7B43378F1BDE68671B73E1F4
-:10ACD000FB92EE4CF21FEA5242A39D14C7FBEFC554
-:10ACE0005DFB86F5D0BA3695F7E73F5A4AFBB814B4
-:10ACF000F759DDFD36C9B9D5924FBAF47C522FF021
-:10AD00007BBEFD0F635C7C08FCB32616FFBC8CFA8F
-:10AD1000C91285FF6D220FA9526DA8C0B8D0A91520
-:10AD20008CCEBFDEF6AE4AF474DBB30ADD0721ED4C
-:10AD3000B3D502BEF1D683E707BC1AF981E707BC99
-:10AD40001AFF0CCF0F68CB787E405B1FCF0F68BF18
-:10AD5000E3F901ED773C3FA02D97B0E5AD18676BA7
-:10AD60006A63CEB0979F27D0B6C7F304DA329E2726
-:10AD7000D0B6C7F304DAF229C6E178EA3195E2F4F5
-:10AD800078AE40DBFEE677276621DD7425F03C32A5
-:10AD900016F2F714015C5608B8E079036D7FC753CB
-:10ADA000AE7C8701DDADE85939079F97EC5AA5EBDA
-:10ADB000AF5E6D203A64ED5CEE36C33F243FD52292
-:10ADC00015E7F1ED2E85A517E0FDE106FDD9BD796A
-:10ADD000238A9E5BC2FAF7F54C13AF2D181C977FA0
-:10ADE0003957E421E6B01C6D9C264A070E5F04D754
-:10ADF000FF91EA8B450725ECA2548ACFBCA362ECF5
-:10AE0000817DC59AB75CAE68E2F70678D8B2F4F4F3
-:10AE100090E0D5D343D2183D3D24FBF4F4903A455D
-:10AE20004F0F69FE71E7846F7A959E3E8CF09D020C
-:10AE3000FF207C27E0CD9018578275629CF72F0584
-:10AE4000DF2F72C5BE8780EFB7ECF20A87973ED737
-:10AE5000D8CBA2F649E93BCDB4496B8C7B4A384A42
-:10AE60003B41C62F2731EEA7DBF1BC6521DA01DCBF
-:10AE70007F43FD8F7C7ED8CAFD36A420949337B1E2
-:10AE800020C9A39B0CFAFF66C74356D4FF83D60B99
-:10AE90001617DE1B685C2FDA514C134F32EA7FA580
-:10AEA0005B892417E372BBA55C0E9E2563C7AF0CBC
-:10AEB000455EFCDEE1B7E579681C662FD3C57B6390
-:10AEC000DA73721E122E727C1B6B56B3909EC718DB
-:10AED000ED2FBDBF2CFD6BEA54138F96FEB1F44FDE
-:10AEE0008C7056871790DD35D129FDE29EEBF1BDC0
-:10AEF000F4878D7EE8F9F6A5E68594DE9F1744ED8C
-:10AF0000C92BC4739E8817C1B27EFB6FD0F872C57F
-:10AF10003B0CC79BBBFB220FD2CB46A59919E6770A
-:10AF2000F055E84735F5A7F3F84B50B75FF5B6D2C3
-:10AF30004BF35EC0FCF7E0B351C4D31ABBDEA67D71
-:10AF4000D4C62E1E2F60BBF47831DAFBAB5887B520
-:10AF500040196CEF37B01EEACF68DF0FA293F3E819
-:10AF6000F18E3C79DF16CF1760422ED50978C5F3F4
-:10AF70000BCC08E0A9D1FB3B811FE6E54D8AE6D169
-:10AF800066B8C08F51310FC36B8D9527C5F0721510
-:10AF9000B049973B6A484E2C6F1B1497B0123FB5CF
-:10AFA0009F7B7DD20EB81F7C377C96E67979DC20BA
-:10AFB00071CE3B7EFC5CDA93AF3DFFD164E5E70EDA
-:10AFC00059B3FE7CFEDA3C933C3FA50E65FD83E160
-:10AFD000FAFDF2F265FE01C0EF2E2DFCE43E825C2C
-:10AFE000CFEF27F53C89F1433579A61DFD5AAF2BEC
-:10AFF000D882F5871DEC3DACA03C7378293FE4E492
-:10B00000AEA31FA3FF2ED7C758EF16BCDFB66E97AF
-:10B010004AFE60DDAE37C82E8AEFEFB50FDCA32005
-:10B02000F6377E126B5E32AFB9522D4AEDD5D8E9B4
-:10B030004B851F307978E0216C57FA615E0ACED7D4
-:10B0400032A283EEC5EABF83DBC16E95CD44F881A1
-:10B05000DEE37ADF61A67D077752484D413B6E29DA
-:10B06000E3F7D0F99A7D482AEAB0228AD366DCA1B8
-:10B0700006D0FEFE74CDF2343CAF9C91BC22AD10E4
-:10B080009ED36DFC5E9A0CC514E0E74E97A5E13D9A
-:10B090002037D8F8BE7CC15F27450A81DF5EB7F252
-:10B0A000FB46DD4941BABFA03F4DA5F91C5B074BEC
-:10B0B0001B85FB1EDF4CC47B0772CE3826E07CB2BA
-:10B0C000C5BD163FCAE3F7DC1C7FF6BB89E8AFAA13
-:10B0D000671D74BE5DD29FBB30B6BFB242C0A3D164
-:10B0E000C3F3DE4F0AFBF190D86F9579F06BC43E45
-:10B0F000E0A1D103F78379302FA431C19FBA10E3C7
-:10B10000110754CA6BFFC6E94F4D23BB99E7B3AF94
-:10B1100011F6C34991F7B966F68C4CF42FE2E54B72
-:10B120001FC8E376EF0F755FA5CC3F8D0B873433D7
-:10B13000335F42F72E05CE55EFD53FAB31E1795A5B
-:10B140007C8F9737DF97A7E8F2E21B312F1E5EADA9
-:10B1500079A53C939D235FBA11EF23D7E4D7A09F35
-:10B1600086EB6BC4FBC8E99ED213744F07F683F7D6
-:10B17000869DEFDEC815621E8D984F9EAE7DCFF97D
-:10B1800039DABF9BBE3F2DE0F6F43BA6AA6D31E64F
-:10B1900099378CCBA7711E7300F7252F8EF07B3F5C
-:10B1A000E3D593E7B8E3CDAB6B46EF8D386FCCCFEB
-:10B1B0008C355ECA304E2772BE5DAEDE9501BE9FF5
-:10B1C00037BA3A595376F6E7CFD5C8D7D9023F5D9B
-:10B1D00057F5E6D37D00B3B9FF1A0FCF65E66605D4
-:10B1E000E190E00A06D11E91F715E37DC63CCF231E
-:10B1F000744E7C47E1ACEACE1F0C86B395BECBFE05
-:10B20000A4DC39FA884A72E7E807821F99DFA19423
-:10B21000A1BEE27C7594F1B8EED176FEFB1FCB8225
-:10B22000A02B407E2CDD5E3F070F1FAFDC3171236A
-:10B230008A7F7C7F37C89FA5598C4D83E7B20DFA72
-:10B24000FDB16FD903A4E7563C60D467012BCAD97E
-:10B25000950FE9EBD7B107BE46FBA0CE60F76608B5
-:10B26000BD6BB47F670C13F66F192BBB90734E8FB9
-:10B2700030FFEC61A4FFF97EDB24B19F6EACFFBC14
-:10B2800097D3C36D3BFE60C59F048AD7EF319017FB
-:10B2900023A1DF13EB9CF45C32CC5F330CDA350D69
-:10B2A0000B2EC471FA0E70389F6A38B592E2D2B58F
-:10B2B000DC0EB0E1252BF09FB6EBEDE447DF8BF71A
-:10B2C0008C019C6D366E5F48BB4A556F57F1275B0A
-:10B2D000A6FE6E451AAECFFDCCAC2AF43F3CCF247F
-:10B2E000F9111F9BCAFD2528BF37553B689F78ABD6
-:10B2F00089DF4368B7F1FDB9F0D353F7613878645B
-:10B30000C7E619E86738BBF746302ED166E2FBAFD7
-:10B310006DD398B8C79A8FD7D45DDD89F3CAAF01D2
-:10B32000790FFD6D2AF0973835FD33612F350A5CB2
-:10B33000F4BD76D14FF1DEAB9FBF43E62AAC730478
-:10B34000C5BFC6314E3732BF847E1B43132F3A012F
-:10B35000FA8769CE3F8FEB50229614BA5F8FE2D8FE
-:10B360000DEB2319D7A3FEFC25DFAF95F373BF9E2A
-:10B370003D03E3FD529F5E8FF96D18071676EF22AD
-:10B3800026FFF87E41ADA0EB45C2DEBD3E89C37904
-:10B3900019F3D1F9ABEBEC2C05E3CBD757744CA2E6
-:10B3A000FBAFEB2D6968AFC8B8773CBCC78BCF3417
-:10B3B0003E99CCEFCB51FA476327C73006521ACDDE
-:10B3C000B737F6B36398E0E7D1C24E1BC9FCB8CFDC
-:10B3D000D2B8E722CAC7B725F27D35906F76C4EBA5
-:10B3E0007ED4E7B0EE5B5E4D88F07DE3B0B81787A2
-:10B3F00085683F664F26ED2BB80BFDB4EF7ED2D2A9
-:10B400009B4FF200E49702BA73CFB04FAE31E3FD29
-:10B410002039604741F9F82F0E5F83BFCFD238A2A1
-:10B420007725DE179EFEF8595E1ED77B18CBC31E0C
-:10B430004FBC96CA137A57AA509EF278D6B5D41E3E
-:10B440001D2820ACCAC7875F8BE7FC8E89F825F3DF
-:10B45000F5D23D418DBB2F3269E38325F95C4E1F48
-:10B460004BE0F58E15B0257311DE637A476B7F379D
-:10B47000C1932FED526E97C975CA762C2B76FFEFCC
-:10B480000B3D708BB8DF677A126B4BE0FB1521B474
-:10B49000AFDEECBE88E0F2C2309780572FDDDB28AC
-:10B4A000FB319EEF97E3AE42BD8D72DDA23F4FF4BC
-:10B4B0001BA12F609C0D344E91BF04EFE5699C9B4E
-:10B4C000578278037C9905BECCDC0FDC4A78C67EB7
-:10B4D000D38A498F4CC43CB137CF40FD82E8BC8D44
-:10B4E000F471588C734B2BDF67EA4F2B243A9A9EEA
-:10B4F000C4ED3F560AF003393645C0AD245F9CE3E6
-:10B5000019C043A642FDB70AF8E5F1FA17BADED32F
-:10B510003FD07A3578F263DEF19BBBC6129EA60C53
-:10B52000D0C1665D3FC75A0CEDA6F0BC94465721CA
-:10B53000B5BB57DCB32FEF2DC67605D06E7A45FF2D
-:10B5400044E407796F1B0B4D2367BD41488B817B1A
-:10B55000D83A787E0A1BE9E7F711CD9D532AD6E742
-:10B5600014EB736AEFA51BE0C38FFAF36B34F75249
-:10B57000CBF703701FE8AF6882E84FC7CFB1FA433B
-:10B58000BE88878F71F97F617CC8791AE0390067BE
-:10B59000C3FC243C918FA95D919E9FE43C87E59B71
-:10B5A00084BF6DE0E782EF399EC8EF5FFD37221F51
-:10B5B000D2ABA7E7D55D0526DC3F95EDDA3A5A0216
-:10B5C00028E765BCDBD6551D42FDD7D45D4E799B7F
-:10B5D000AB7FF5ECCB2168BFEAF987533099F6A829
-:10B5E000B93D03EDDC861DF7A4F871BFC41C4A41C8
-:10B5F000F97934AC56C53A0F181278907654A3D026
-:10B6000037C79EBEFF1A84C77FECB038518F363DD6
-:10B61000658BD8280E720BD95150FE9C97EFFD1AFE
-:10B62000FDD2A65D7A3B69D53F3C9CE1257A0AE5CF
-:10B630009AF08C0B8BE43278366EB7F8226E1E4F80
-:10B6400084615813EBDF88F333B6C7799C06BC37A7
-:10B6500075A84BF13CAFF13B4812B2C39ABAEE2742
-:10B66000BBAB491B67003CD4C5B1BB6ECDD7E75B14
-:10B670004BB8B0B087EC9AD65FFEACF87307DEA784
-:10B68000F94F294A91565FAE27389DEA58FEF7BB1D
-:10B69000BDF1F5EA49B40B6CDA761CAFDE5D0AED5C
-:10B6A00049B06EFE6CB04452D0CF6FD86AF181E6DB
-:10B6B000650DCF3EF124EE87B04F6C74FF41FDB3B2
-:10B6C000FB3FBE14CAF59D16F71C3E7D879211C53F
-:10B6D0004F9397DB27121FAB5EDC4FF70CE27BB476
-:10B6E0006B255EEA3BF75AD9F8C1F0ABE8D82B7E60
-:10B6F00077C1809F8ECFAFA4FB3C7FF99D15E9FAFF
-:10B70000E81E8565160C6E5FB7757F0AD21FC209E9
-:10B71000FD4B89A701BC0DC257E49ADDA5548FE209
-:10B720001AF1F036379FF178D0AF9E7D0E7F07B0CB
-:10B73000EE37361FAEBFEEB9DB53701D5F999B39F4
-:10B740007DFFE29E0C3F8C5B67096538E9C9DFD756
-:10B750003D7E07D1DDCD07EEC8E0BFA7E1CF364D76
-:10B76000A17566E3FA6E7A6C3EAD6F250B12DDD5DE
-:10B77000FD82C727BE15BFC760C4E769C11F5F6DE3
-:10B78000B3E18F64B0AF30111DF3083F50459EEF19
-:10B79000AD4C7B8F0558DC54FE56C407DE1FD0032A
-:10B7A000CCCE3471D9A6EDF7F6207E8E0DF367E28C
-:10B7B000BE1AC02124E0A5E0FDBAEA81CA4C8E1F62
-:10B7C000E635CBB832D8DF15F81EEBF758FC09C5C3
-:10B7D000BA7662BF9E8F2FE31330EF44DCF7FB2A6B
-:10B7E00023F6B9ADD1C31521DF580FD3D2573C7E14
-:10B7F000DF7E1FD1D5371F71BE690C5757D1F71E99
-:10B800004B048F163786F7D628240F6CBAFB9F0699
-:10B81000E862BB45F0B3FE3BCCD3AC68E1BB87E745
-:10B82000D5AE7CC8A6BB0F214A37D6E8FB82287F5D
-:10B830004A3FEA66C1FFC6F51AE5C11F0CF2803D1A
-:10B84000E619D2BD320D96F0938F22FF02BFA29F60
-:10B85000D9F0AC85FCFCE33BDFF8F83AA0F3E31D3C
-:10B86000926FF572D5C8B7752F4C62B1F8F6B8C3B0
-:10B87000C762F22DBC8FC9B78EE83E8D97FD7072FE
-:10B88000F5E63872356FB8F11C4B512AE6BA1F7BCA
-:10B89000BA7E38C5050C7095FEAC515EBE9CEF8D2E
-:10B8A000292F195E41A581A3849FA4C755CFACA6BB
-:10B8B0007106E856D2A5A4DB01BA1C945FA983A344
-:10B8C000F1FB17288F2645F16E590F7E0ADAB1AFCA
-:10B8D000A9F43B287D30978D00F7BE9D05B40F7A03
-:10B8E0008FB0F3FB9CFD2918D7BB47F815FD184F07
-:10B8F0004C8DBEEF4F10790381FE94348D5DF47949
-:10B90000B79A82765C6F38F6EFC9CA7B2A7BE3FC74
-:10B91000DEAC3CBF54A93AF2D7629CB69DEF4FAE65
-:10B9200068599882F18CBEEE42FA3DA19BDE057FFC
-:10B9300017E6DB27E39A21BF39BB2C7ABFE9111642
-:10B94000A2FDCAE5DDF5B45F688C83AC74D4A4E2D3
-:10B950007EA0310E7233E641611EF263FAF7AB301E
-:10B960003E827832D05310E9297B303DAD1C2EF653
-:10B970005F4B58896EFF55C8B54AB5E8A7689FF474
-:10B9800081DF8EF120A616FD1AF5E9B7E8C723037B
-:10B99000843C44A7F5C12332CF8AE85AD29DD17F97
-:10B9A000373E4FBCF469199E076A78F9DF8A7F0E2B
-:10B9B000CF132F7F32FA552CFFEA5FF3FF8D0DAEC8
-:10B9C0005FB1E78FE4AFF4EDB1D17CFAF6BC9D7FB7
-:10B9D000179677DB7C38DFBEF536FE7BD07B92E9AD
-:10B9E000DEE9BE613CCED6FADA77C5BDA4A7361033
-:10B9F000DEFE6E38BF2FF654F77F7D86F7AB9EEAEA
-:10BA0000B67931EED0B42789FCF0A6DD09744F7CFD
-:10BA1000DF6BDF9569E345FFDDF5348AF3167DC9F9
-:10BA2000AC16F35BFAD2B8BFD6F4EAD4275A0AD0E0
-:10BA30002EDD4BF71657BCFEA762943F7D2F70BBDF
-:10BA400002FCF3C77113F117C3BB7F6A998AE78DB4
-:10BA500018F9D553BD7FBA36E48805170E873E80A6
-:10BA600003AE0BE042F775C78347D7707E0FFFFF29
-:10BA70003E787C4DFE4243F764E2A3285C14FEFB53
-:10BA800023DDC961BB42EBE7EFF77C578C76D2F13F
-:10BA90008E16D2FBE75BF787FF6BE9E0FBAE5B89B5
-:10BAA0000C65DDA7FED7AE9BD3FFDAE15C3F19F949
-:10BAB00060309DFFEAAFA9FC5CB28FE66BE0FFFF50
-:10BAC00007ABA359F3008000000000001F8B0800A3
-:10BAD00000000000000BCD3C0B7814D5B9FFECCC76
-:10BAE0003E926CC22604084260F2244A1E0B791072
-:10BAF0001EA99B842008E206A4A2222EF8E015923B
-:10BB000008B6C66ACD622202F5B6516CAF6DD16F30
-:10BB10004141DADA6B8A41B1025D10115AAAAB8257
-:10BB2000A246BA52AB50031B41052ABDDEFFFFCF30
-:10BB30004CB233243CFCAEDFD7E423C733E7CC3927
-:10BB4000FFFB75CE18498599ADB9004DDB4EE587F1
-:10BB5000B1056806280648526D00FD004E6CFDFADE
-:10BB600090944CAD5D853480BAED710045D8FE31BE
-:10BB70002600124064DBA9129F13E01BFAB912A041
-:10BB8000A3119718D6DD37B71D9B3F2CB917A7D443
-:10BB9000BCF041FEAFB1ED78E1BDEC97A9FFE2BB8F
-:10BBA000433EC0B6D606BE565C2F120F3337213C3B
-:10BBB0009144F000EE5FF7F2E8A796E1FE8BDB3EE2
-:10BBC0009F4DFBD76C1D0532F62BFFF4EFFC30CDFB
-:10BBD000DF2479C4F3F88003E1AADC7E463CDF7EF3
-:10BBE0002A1FB0FD6C93149413B0FF807D7E80D625
-:10BBF000ED05EF118477F17F22DE3B6CB7E278C36D
-:10BC00005095E1EBC67B870DF208DFBDB3697E641A
-:10BC10007BBCCB9E46F0FD7B0844E17F21BCBDFF91
-:10BC2000B1FC3E3FDE007E86DB2A7B1DE908DFC3D8
-:10BC3000100CA9D83E0830B1D5792E3C3FA6C16280
-:10BC40007A0F42D01F4006F123272F9C0209D4AE61
-:10BC5000FA5CCEA7F7A74D4C4338FCAAC5BD5EA53C
-:10BC60001916A6C38AC1EEC02A840B14EFFCB5D8FE
-:10BC7000B70EAD71AFE215EE042801F881435BAF5A
-:10BC8000FF948912AED7B40CE1C2759AFA595C4D93
-:10BC9000B88EA25A82F67C6E3FA2F6A1FE57EFA1A3
-:10BCA0007D15A70D82DABBDFE03F27603F47EBE35E
-:10BCB0007EB199517DFC17033B5D0AEE1FE35620D0
-:10BCC0008028D921EA7D9C7F93EA62BAC442C0EF02
-:10BCD000725E3A9D7E4F83FD7AA793993E3ADDCE00
-:10BCE000A1138083DE57E8BF08FFE45521D2430546
-:10BCF000147F58E0237D23113DDD290E5CCFDAE768
-:10BD00000EF72A899FAB4A89F69E85FE2C31D01703
-:10BD1000E9E789C9EFA673D47A8CBF99CE974A5FB9
-:10BD20009D2F31308DF91C33D8E90E20FC0FAA82EB
-:10BD3000EE0F22DD25A99BBE3ADDCC7CF093EC14FE
-:10BD400077D3BFBB1DE7FA64383312BE41E2FA2B4A
-:10BD500020A71ED7A992C785FDB8FE89D238B79D06
-:10BD6000F44582A03412DBF2FE15807874A4DA1454
-:10BD70006ACB3A11A72878AF3CED00250ABF72487C
-:10BD800034F43B52B3F9FD4AC740C37B1D034B1D3E
-:10BD9000F4BCCA956698FF464C423E14D07B1326ED
-:10BDA000D2F85529971BDE9B7AB863CD1C6CAF95F2
-:10BDB000C245241C1D7B675510BD26A9230CF3B674
-:10BDC000A059217DEEAC9203EB901ED552B07F3E80
-:10BDD000D26D72CE68237C128C273C6B2C285A388B
-:10BDE000EF1A77B961FCDAD2498675AB3DD5867E0C
-:10BDF0004DC357A0F40518DB70169442B4E3C15646
-:10BE0000C3FB857BB618E627EC03391EDB11FBD597
-:10BE1000266A0BDB434924BEB6BE0EBFA50F8A704F
-:10BE2000D85B89E840C991FA57A86D70203DF0F9B8
-:10BE3000A918D122BF58CEFD8762024D08EF294BC9
-:10BE4000C04774B85B0EE4501B3BE88E7C48073853
-:10BE50009AF2B0DC87E0075FA78A7230FA8B401352
-:10BE6000F5AF3CDB2AFBC80E6F94FDB602E2FB94F3
-:10BE7000B8BF92DD6D9580F85EE3B47802E4B792C6
-:10BE80005AF39746C9D7673F845BBCB9E7EAEB8BA7
-:10BE900059E596345CBF39C5D3B283EC66C587B328
-:10BEA000E5F473E7814BE90CEB7449A7F7BC4583D4
-:10BEB000511EE5F8F10EB2EBB19532E30557590387
-:10BEC000EB719DE516778CA6FCEC5F5D13AC6B49BE
-:10BED000AFD7A409FB10FB175025843FB6AF4FCE58
-:10BEE000A3F77E26C17AE8DEEFD652603CB2D22CB0
-:10BEF000420F1457BF9BF3E8FD787EBFA454D011C6
-:10BF0000A6580259B864C241F76E2BF657E7EC7792
-:10BF10009119689B72D82F235DDA0E86CA24D4A5A6
-:10BF2000010F979FCC14F3210BFB6D39E3E3F2D89B
-:10BF30008FE558C8CE2C41B347766647D93339E4EC
-:10BF400027965C7EC500E8C1BEE96DC26909D4C20E
-:10BF5000EEFE9A3495E14A50C2407A9D705AE171E2
-:10BF600068C8B690FDD1D74F98A5BEBB94E0D86302
-:10BF7000852CDA5EF12C223C565DD1AEAE623C04DB
-:10BF8000DE00E1142FA2FA4FF4932A315609A7DC00
-:10BF90001C7F2E1CFFDC589CA8221E7DCBDD896EE9
-:10BFA0006A7F8F441FC374F7131D7E4A7F2EA3DE62
-:10BFB000DAD0781CDF4836518C0701E57A954D1BA5
-:10BFC000279382FDBE9236EE5FEB1D4F7C958DF37D
-:10BFD0000BD2BBE67B1C29DDEB7BD7AE0D35F748DA
-:10BFE0004F3BFBE55513AC01BB7431748DBB005D59
-:10BFF00013045DCFA2F5C77DEE72887D3E96D421F5
-:10C00000246FAB2D68053200F6BB7CD7935CC7CAA2
-:10C01000C13C7A3E37C133A00CE5AFCDE619720FB3
-:10C02000D9956D31EE75F85EF59D9F3DDE407A3D08
-:10C03000F59F39CD24378A276E24EE53E7FA8AED2F
-:10C0400041959CDB87E29D2E3A923CE39E3FB5747E
-:10C05000F7C93E2474D3D59389E3ABA2E8EC709082
-:10C06000FD12FD47D3DABC4CA7DB1C4CA7A59A4EAA
-:10C070003527428B05F5E1A46BC3F7491E4E6EB41C
-:10C0800002C54D6D3448FE32C7C17A05C9E1946AD4
-:10C09000D483BC372D5E8ACBDA513E3C241FF5D9C0
-:10C0A00086F54E8E7B37290FDF3B99AC24117D1628
-:10C0B000866D4CB79B1508DAD15EB625DF5659CE92
-:10C0C000FAA1F278ABB6CE6B599EFBD2D8EF8C7743
-:10C0D0007D8278499E31F237C37BE71779D04F7460
-:10C0E000FB8874AE2334937A9783E6724780E2CC60
-:10C0F000BAD265B9E41F9624660F00C4A36EBCC40F
-:10C10000FEB6AEE10BA6BBBEBE725A06B56F777F18
-:10C110007C86CAF640513C2C0FCA691B8FD7349CD1
-:10C12000643B8EE0A491DE742C13F6AEC50AB754BE
-:10C13000635BF3BFF22DD538BF06430CF617B0D3BF
-:10C14000B624CA1E42EBE75D76BF0079B77ACA5BB8
-:10C15000B16467AB25D70C401C8EA6BBAA95D1D87D
-:10C160008F71CD90B0DFB6EE8C97FBA9AE1916ECAF
-:10C17000EF4ABB498C0F74FDDCE206F87CDD5DA262
-:10C180009FE63A40FD0FD31EA95606623F5EC8C126
-:10C190006FD26AABFDB9245F4EA6CB891571AC1F77
-:10C1A000BDD1795EC3CB06BA9C332E4BB778C96E2E
-:10C1B000CC1476F1D8CA416B391ECA0C65D39E5B8C
-:10C1C000D344FCDA1F79538AFF5E45BD77201D9268
-:10C1D00033C063C1F9C92FA23FA2F91F878610FDA2
-:10C1E000E6BD181394901F8B9F78C546FE68AEACD1
-:10C1F00066935EBD3FCCB793E4E3787C88FBF31A8B
-:10C20000B6335C29592E61A75D9DB95E94CFF9D0F4
-:10C2100062A3F1F9A01C26BF614161A6B866A173B3
-:10C22000978DE2B2854F5B0F87A3FCEA22081F229D
-:10C230003DAD79D67A381CE57F81DE8F92AFC3168B
-:10C240000187A2D163AE1C9A6D13701D20B816270A
-:10C25000617C2F93BB08F5F7715C5493C379494A0D
-:10C260002C90DC2DBFECFD7C5F0F7EB0B511FD3E48
-:10C27000AADCA6C62DDCAEC135C9EE0C50C23637DD
-:10C28000AE53ABD9E592D0611B44BD7F42A36B9FF7
-:10C290002D128FEBF6A27B3C5ED025D733C2827085
-:10C2A0002C9EB66F1CF145E7E79571D01A93C47CBC
-:10C2B000716B7C71135F74FA233D0B157C6FD7593A
-:10C2C0007C2FAD27B9D0E92FE06D8B15F6A27373E3
-:10C2D0000CC74D66F8E3D205BC3A1E43D3CF0FFF1F
-:10C2E000D0F4EF06FEA1E9428FCD78E87AAC3FD7D3
-:10C2F000F5D88CB70EF7A5CB59C8763172A6DB9965
-:10C300005AF0E5D0FABA5DD1E9ACC3A9D3AB8DF24E
-:10C31000A11EE0541A5E32E0A3842A28898071E9C4
-:10C32000E9C28EB54E02E283D2B095E75D2A3EBAED
-:10C33000BDED0D2FDDCE9AF1D3EDAD8EA76E7775E5
-:10C340007CCBD090B03DC4349EF2AC2B4FFB0C7133
-:10C3500070392C30C4C9958E3B0DFD2AD73D86F926
-:10C3600057A52C338C4F52571AC627E73C62E85F1B
-:10C37000E3FEA5298E5F6B8AE37F63181F170E719A
-:10C38000DCFD7AE344509047DF3BD2C9F177B0D16E
-:10C39000C5FD9D8D29DCEE6A5459BF7737E670BB29
-:10C3A000A7D1CDCFFFDC58CAEDBE460FB7A1462FAF
-:10C3B000B766BB30F5F9EB15CA574A432D9564CAE9
-:10C3C0007764F87E928EF47BC312688A473A8D6A4E
-:10C3D00017F139CC37FBE35387EE25BFEEB2B9C96D
-:10C3E0001F36EF182DA93DC47309E8EF3C51F292B6
-:10C3F00030250C1E8A7BD03DF7245F2DE916964729
-:10C4000032FB807A37D301D664D4B79933257713BA
-:10C41000F0733F24711BF4E1F85405FCE4FFAB9D7D
-:10C420004AD09EC0A0791D08E70C0126D8699CFC63
-:10C4300077725F85E2D6EBE821C22B7B64F81E3E63
-:10C440009F51FA97339437DFE86CB5929CDCB0E7E4
-:10C450008163F7E23834FB8B493FBAE206FFFB9673
-:10C460004B891B5A28AE443A462477C843F14EA262
-:10C47000E28ECE07F4F6B674910F4C6DF2CB0948FC
-:10C48000CFCE3781E3385D1F11BF1504BFAE17D57E
-:10C490002E25382C81FCFD239534BF66BFCA74D18C
-:10C4A000F542D7033D0FD4F5A04A7EB689E69F3802
-:10C4B000089C4F8FEAF01D799EF034C59DA59D2DF7
-:10C4C0009594975D286F1C73BAF5159AB7BDD1C7BF
-:10C4D00072B4B57126B7C1C6F99A7CD6737F57631B
-:10C4E00003F77737FAB9DDD3B84293CF161EDFD7FB
-:10C4F000F838F75F6F0C6872BA919F8FCF10FEF714
-:10C500008B50E50092BF17D3451D071CE59C478063
-:10C5100022DA8B95939A9497453C65920FB35CE829
-:10C52000F200683724A4D78DE867C93FDC04FEBC5D
-:10C5300039D8CE9CD7621D2B7D7BB958E86CE6F8C4
-:10C54000C36C0F174090EDDDB9F65DC4FF17B2EF75
-:10C5500032E6ABE4AF74FBB718C2BC9E5DBED34DF0
-:10C56000F594EFCEAFB834BF0273687E57DE1DDBA3
-:10C570003E5BB65C38EF2E1A2CF8AAE7DD183F02B6
-:10C58000F9E54840E6B87A7E5A4B02E7DDA59D09F9
-:10C5900014072CD826333F30CF540622DFE6697CBF
-:10C5A000EB80E03BC49779E3E6715D6EFE1A233EB3
-:10C5B0000B9DD7F509AA3DC6693DE2590B0F7F4E89
-:10C5C000F5B95A8D5EFC1CE16968BF61D2AEA879ED
-:10C5D0003119F1C99FC49142C128A207C2EF0E923E
-:10C5E0009EED9759CF7A938BE3989F909C9F6A9C7E
-:10C5F000396917CAFDF1B38D9C7F25653CF2887FB0
-:10C60000DC77C7AFB559DEA1199C0F856DA43F3A01
-:10C61000FF96938D44B8975738029468478A5D0A0D
-:10C62000ED1F913C723CF1E323702F43FA956F7D2F
-:10C63000ED20E947B9C3C9E708884447343F47EFCD
-:10C64000F7353971DEA87D1E99C2F7E25DE1269AC1
-:10C65000A6FB1BDDFF8CEDE8947D5C17C8643D02F2
-:10C66000CC25BEC9B8783D32E79B4D946FA2413AC4
-:10C67000E99CC0F09E0C829B9E77D7B544BD69ECC7
-:10C68000598F9C80F02DD7F2C3D11F7B198E6A87FA
-:10C69000CA7268D7F2497B8A053C517474D97C1BF5
-:10C6A000A9FE097F8CE13AAF19BEC919C28EAB4908
-:10C6B000DEC94C5FA79A4D794395DCB1E1D7240FD1
-:10C6C0006D716E3BBE67B6B7BA7DEB2D6EAF739DD5
-:10C6D000EC318ED4DB3A8B38371859A91652FE4705
-:10C6E000F125E5857A9E689EEFCBAA989DD18FEBC8
-:10C6F000AB210FC1E5B29C574EEB1A3E3F6F9EA691
-:10C70000EF5FB7ADD83537AA0EB226433F5F505C16
-:10C710009F38BAF976B1FC2DEB9C69F03FFFE9F147
-:10C72000DA540C7324D4A13C2920E20810F1C42C63
-:10C7300008713B1B3AB9F5A124513B17DCDCDE063E
-:10C740005E6EBFCEF4AD26B989583BFB931E1F7BAE
-:10C75000E1EB5C928B63DF1BEB4A53BBFDABEE6FEF
-:10C760002FD5AFC6D2F9520FF2B041935BDD6EF711
-:10C77000CA1F93DD8E8C40FB807046368B73B148A8
-:10C780007C6C80CE0174FB007E63BCA8DB8BC2593D
-:10C79000EE37B85EB84FE6BAA5D97E5429228F0786
-:10C7A000C59D43F5517DFF260BCC2739DB88ED1F56
-:10C7B000108F3EB3C28A1A85CF760D8FF21BC60347
-:10C7C000E52F535D223FAC724032E57370F664EEA4
-:10C7D0000C340453291E45791E95E4F913D1DBFF6F
-:10C7E000D0B8443E7F20FB3314F9F79138B7810568
-:10C7F00052200BE9B1A54DF4F36E4F64FC6E82201C
-:10C80000F3F166085B09FF5B00D8EECE0195DB5BB8
-:10C81000C1C3FCC495E3F2D10EDDDEA68C5C857845
-:10C82000162475A6937EE68D7E2F4942B8F229FE26
-:10C8300075726D6605C5293A1E964C81C765999E2D
-:10C84000B709BE82A4D0AAD514176EB600C5859FBD
-:10C850008EBEE70E88F2AB2559150769DE73923854
-:10C860002FF46FB38BBA1A74F6F746C5E35F6756B9
-:10C870001E22BDFF07C1C6F9EF2A3E47AA7609DA94
-:10C88000C3F87E4C037C6F8837AF27FDF4B37D2C53
-:10C89000205A8A3AA11F4A795FEE7FF5D417D5CD89
-:10C8A000021F3FC5632559BE08ED5760435348F04A
-:10C8B0003F610FACE3B8A97E08D52FE63D69B7907C
-:10C8C0001F7F0FED309D9B7ED0E8E0F643CC6FA834
-:10C8D000FD1BE637D47E84F90DB57FC7FC86DADB15
-:10C8E0004F8F402102F861A6E77F33CE8347EF7672
-:10C8F00046E0119160664FE77DA73244FE91DFF676
-:10C90000F1037124075B6437C969DE6685EB10C7E4
-:10C91000B78E0AC869D174F5C565221CF95BDE7E45
-:10C92000746C11BDA7B8249C7F7CCBC9FE9C379941
-:10C93000E0EBA2C7369BA08706EF7389A155F4FEF2
-:10C94000739BD30942B42320E490F8D9431D0D60B2
-:10C9500019F3F1F50C113F5D6BEF2C8A3EDF040AF1
-:10C9600019A85EA9F9992AF96C423857ABDB8E26D3
-:10C97000B9CE7C83F6F3EF117A887C35D4252A353D
-:10C9800039D4DBBC6D362FE9D373DBDE993619E978
-:10C990003075CCA46259ED9E5F98D98FF7CD1B7D81
-:10C9A000E657AB93793E9F5BDC006BAB5C38EF26C0
-:10C9B000C78E57890437BB3EAA4AC4FE2D29D26EC2
-:10C9C0006AE7A8691392C80E4080F7B935A77C378B
-:10C9D00089D81477B58DFC7239295594DDAD74C4AE
-:10C9E000D1496A57BFCAD5D7D0BF2A659061FE2406
-:10C9F00035C3303E3967B8615CDF778ABBD0308F92
-:10CA0000F495E266C483F90EEB653E97C9DBFCC57D
-:10CA1000FB8B18FF1B8A08FF08D2CF8681C591D2F5
-:10CA200095BF584D6663F3CE043EA735C5A735DBE9
-:10CA30009EDAED517B8F4FBF84AD3DC675B5BDC449
-:10CA400075171B9FA2FD7894EC47C10BD7F1B9FB7A
-:10CA500073A3CF5CA6225EBE4C8C5BC9EE99E2D676
-:10CA60008816B79AE5A74B4E2555C8CD5E19280EF6
-:10CA7000D2E357B3FC003CA0F97FD15EAA9E4F7D64
-:10CA80004BF8AB7F90BEF78D966BAD35D5230A6C16
-:10CA9000E857A84EF85719D6D183B308874EFF8CB4
-:10CAA0006EB987DBD6BE3AB0889FFBE371CB5AAD37
-:10CAB0003EF1AB4CED9CBF66C7AB0393BBC7E1AE89
-:10CAC0008F0CF3E13E69B7A1DF9C66EC3F5CBE3B97
-:10CAD000FAFDDEECD0BC3577DA7C54977E4CD42955
-:10CAE000CDE33A3C553B633C642F95AD76CE876AE7
-:10CAF0005D1EAE9F28BDD44F74BB70830CF53DD92D
-:10CB0000B7F5DABA5376C680FC2DD67D0F6585E081
-:10CB1000F1BF28FCCC7B7D3CE08DDAA73553C47D8A
-:10CB2000C7125B7EFC15CE3BF612B889F4C712859E
-:10CB3000BDCD6FFBD462213F112BE425DF15B62458
-:10CB4000D17D97F9717E3A4FAE5B10EFA773A38248
-:10CB5000F4CE771CC8FA2D4FFB1E75A0DCBD6FB15B
-:10CB600018FC4E846C1DF67764FAA691DF99BC33ED
-:10CB70002668F916F8ECC804E1D72A84BECF26B996
-:10CB8000D1CFC5D0D4D43D08867332C29FFA679EF8
-:10CB9000BEF5ADC728EEDD2BF41F879DE67CF4A61D
-:10CBA000A87C14D608FD75E02FC5390B77B5D828B9
-:10CBB0004FFAAEF4BE3DD3D9ADDFC3CED5675DDF4E
-:10CBC000EB0E087D3FB1F5CBB7C8AE9F407F17ADE8
-:10CBD000EF5D7E51D3F3BAC765D647FDF9F1ADF2EB
-:10CBE000C4400FF47D4D930370651BCECD96949D8C
-:10CBF0009A467E6DC93685CF037BF3D7752B8CE7BC
-:10CC000064CF6DB7CF17E7C8028F88EE4FB77D9915
-:10CC1000549E2BDA657C5EDBA2D91D11C7A01FB51F
-:10CC200026931FAD96B8FE7660DB00BE9F714082F2
-:10CC3000A03A9297B8CE817C9B2E96A3E74E8AC7E6
-:10CC4000202547A17DA669FC9CAED585666C9B918D
-:10CC500045FC7AA76DEE010FA19795C1F2733DF8DF
-:10CC6000391E3C90E84DA57B0A539B847C1F48EC01
-:10CC7000ECA03AD281B23889CEA370FDE6E878EF15
-:10CC800080D59B5ACF78E9E79357C8DFC45D421E31
-:10CC9000ACD943E4A75F12F91CCBBF32F06196AB6D
-:10CCA0000510D8EDC17D6BDD418E4B1781C8EBCDF2
-:10CCB000F17CEDB8CF6CE417CCF967F9961D07E964
-:10CCC000DCE39C3A84495E2F547730E7BDBDD50F35
-:10CCD0004625790BB3A2EA7EE6F8BC2B0ED5E3A875
-:10CCE000F5717C2EF44AD97F1F5F84FDBBD6C7B98E
-:10CCF00028CF3EFAA4DD4F76F9E83A7B40C2F1A393
-:10CD0000499DED94771CDD94E7C615609E45FDDDD9
-:10CD1000B3E4D77F6B65B90030DE6B58527637DFEE
-:10CD2000FF5BB23E5EA27B389022C6F59C4F7E260A
-:10CD30009EE38205CF0FE4734EDDBF907ED0B9F441
-:10CD40009127623C14E41FDD33BD0FD5FB3A2C7FE5
-:10CD5000E0F37C90EF3B44E7F58B36C48FA4F801F9
-:10CD60007281F9367FDDE57CBEF973C53783F0AF9C
-:10CD70007CE69A0174AF6CC1DBFD80F0896C7D9E0E
-:10CD8000CFFFBAE3F49EE3BB135B33FA406E379DEB
-:10CD9000F43AE08AA7977989EFC5922ACE69A0DE96
-:10CDA0003388E4624B35D0BA2365716FB473651C68
-:10CDB000C7A566B9ABC91271608D5E6FE80B8E14A2
-:10CDC000D21F1F301D222B87AFA3F3B0E6AC24CDBA
-:10CDD0004F77664F8BBA975825B7D7BE4CF2B9C676
-:10CDE000CE75908E989ECFC11AB21279FE3C87F113
-:10CDF000DCBCB6E18CB19F8BF91DBE3FB2492DBCA6
-:10CE000013DBA51AFD57A77AEFCDC2F717B63EF28E
-:10CE1000C23EA6CB9A1FBE4FFBEE718AFACB3E41B3
-:10CE20003F73FC3FCF21EA1C006B797FFDF9A74FD0
-:10CE3000BCCBE7AB9F6E1E9E2DCE8D439FFC3A8DE3
-:10CE4000CF8B0FDD8BEDA63D6F315FCCF09E73EE87
-:10CE500027498C6F0DE1D197CE77BD8F109CC80804
-:10CE6000CEDBE6AECA63FAE9E76F91A33DE7273A66
-:10CE70009CFAFA3A7CFAFAFABC27B3441E335BCB2D
-:10CE80000F8ED942C7F91CFD85E112D5F7BA9E274E
-:10CE900085F213A3E4E5BBAAA7DFA8D5430E5A96F3
-:10CEA000FDC046F7E45A575B7DD176EF12EBE85DA3
-:10CEB00071A00754577FE14AD86F21724A7F3AEF39
-:10CEC000D3FAA40CD81FA78127113C746F506B6153
-:10CED000A12F85EBE4B49E4CD71003DC6F2A77AB0F
-:10CEE000D45E29791571EF2BC0F23F01EA07131EBA
-:10CEF000164798CFC5F47B2E3312975F9386FB3588
-:10CF0000F783E514C7345B855EF8E7C471FEA6D3EA
-:10CF100049F733E0CA35F8976617A80AAE3353814C
-:10CF200015D624316F28D2F9C09EB9AF529CF0AE0D
-:10CF300052DF8FF67DCFF9589E64A1F82E104F393D
-:10CF4000E2FB6FFDB6F8AF38F703F09439517EAECF
-:10CF50007BCDC176DF5C8FB81D7CDC9F0761EB1752
-:10CF6000F8DEDF46FF6BFD4EE8C6EB6F63BEDA4CC2
-:10CF7000F9C14D890F14D3FBFA3D4CF37DBFA32EAD
-:10CF800027DF0B34DFFBBB167C9F91DD3A65F1D5C3
-:10CF90008AFA47FD28F2BF91441B48383FD24FA37D
-:10CFA000C731607A44ACDAFB9FABDC2FAA1CC9F511
-:10CFB0004838A5B23D1E6BF23745C32D220FFB4604
-:10CFC000CC2FEB540CFEA6A840ABDB7CAD725C7A98
-:10CFD000E569E5BCFEE8A16C61CF8AFA5AEA7B8A72
-:10CFE0000FD56CA13F4D1094053E224E18DB2557FE
-:10CFF0001E99F857ABF56BC99FA13C45121C7EBA30
-:10D00000E83876AB90AFB14A7007B5685DA181E2B0
-:10D010008A2DE8EF7438E88C306538CBC1185D3E56
-:10D0200071AD59386FB954CF798B83E2196C574978
-:10D030002186E37BD0C9AD47F3E315E0E6763C7883
-:10D04000B945F9E47622B4707B35B4723B0542C22F
-:10D05000EF5F116C627F06F7B9F8DC62D23C0BC55A
-:10D060001B45D7F79C2F546874EA9D0EA87025972E
-:10D070004E8709807A97D1033D06E7B0FD30D3C3D0
-:10D08000AC9F651096593FC93064509D40653DADD9
-:10D09000040FF7AB2E920EA5619FC2751A333D2A7D
-:10D0A0007B968BC91A3DFE950D2C1F3A9FEECF56ED
-:10D0B000F9B9CE2FD4AB14927F331FF5E745711524
-:10D0C00027E96AFA1DD9C3A7D3BDAAA2C28AA5645B
-:10D0D00092EFDE30663ADDAB2A1A5BF13C1D79DE59
-:10D0E000933D4EF40B2A0AAD6ECC5AA4B2E9E3711B
-:10D0F000BE4FBB970C33457C7D9716B7F896FDC0A5
-:10D10000ED423DF1A53ADD849F03837BAA7FCA19D6
-:10D11000E27C70C8C4E04E2BCE3BA4F8E664537C9E
-:10D12000E00826A848F7BB9655F1BDB5876C62BEEE
-:10D13000DD2EEAB03A5EF8DC1F83FD4D9B862F950D
-:10D14000D27BDF1FD7ADA5757DCBB2FCA4AFBECD22
-:10D15000925B70B262C04CD4CF8E9015A81EAAEF1D
-:10D16000939DEA5B9ACDE7BAD95C271BA4C5331D12
-:10D170009B860F27BEDC9FADDDC34A4E2B24BA2D04
-:10D180004BF5DE4FF323F142BEEED7F8D05BBB2167
-:10D19000DB735F76F1B9CF23FF4000F0FD9F65FBA5
-:10D1A0001EA0F5EAE2CEB27F3F3EE2EDE5E1B46ECD
-:10D1B00039959049B310EF260F046CEC07B4FBEAE5
-:10D1C000DA7955E4765C07E950E4F53591491B3589
-:10D1D000ABB384EC27AEFB5FBCAE2D3C6404BEF762
-:10D1E000D8F44336216783859C697668DBF6BDF702
-:10D1F0000E125D2F44E955DDF6335F7D80F4AB3BC5
-:10D20000E174D3F46E7DFAE552CE27C169B01BBA42
-:10D210009E8DD962E7B87AECD6CB6FA779656FB7E8
-:10D2200067105E57B687F91C2CB2EDDD41020E3D4A
-:10D23000DF38257D1BBF4BE7B49CC76D16E7B44BA9
-:10D24000A4FA57E2A9FF7BC9ED47F83FD5FC869EBB
-:10D2500017CFD7F05ABC77FD72AA8BCC5F73EB1453
-:10D26000BEC7131079838ABFA4FF5FC23E3E1F5F13
-:10D27000B4D19C4F74DA88FF8B5B4DF781281FA6D1
-:10D280007B0FD1F6BD877C787BB6764E9B0AA98C46
-:10D29000873CAB8FAF077B67CE771F07CFAB2C9F49
-:10D2A000E09569FF62A5E77AC273DDDFD3B03ECCBB
-:10D2B000D3F6263A3939DFB589FBC24F2C75BBA8A6
-:10D2C000AFE9E75A9495528AA33B7FC9F2AFBFA753
-:10D2D000EBEB8215E25E36ACE9CB3257B0C1EE2102
-:10D2E000BE166C18C0F905E6411CF7ADDD605F4164
-:10D2F000FDA60763FD7201D5933B2FA3BA4A538C59
-:10D30000F8CE89DC23DD132D4817758E33BA5DD72F
-:10D31000FCBA7EDFB62BFF89CFE67BCD5DE361C52E
-:10D32000906F3469F17311C1477160BD55E44F319D
-:10D3300002FE1D6F7E3F8EE2D8CD8A378EEAD2275D
-:10D34000F6A7F7811EE8A6B7C5E85EE03CE78CC506
-:10D35000EF4EC9381FBF8A1ED7EEA76BF2F9C7463A
-:10D360000FFCDDDACD0F1DAF2AF9D94A1BD5396E76
-:10D370000317D53D96EC7DAA89BEB759B212B8A263
-:10D380007082FE50BE70C4C2E7E063F616A6903C01
-:10D39000B669F68ECE85D528B92AA1A210CE2F1E49
-:10D3A0000C01FAFE28468D05352A2F8ECB4932F422
-:10D3B000E3DD9719DEEF539A6E1807BF27945BD20F
-:10D3C0001DBF267AAE30CC7F2861027F8F5316BAFC
-:10D3D00083EB4A7D278E348CDB51AEE99E037C21A2
-:10D3E000E29F52FC65BF0AF532C139360CF02B942E
-:10D3F000BB311DC6F8A834DCC27960CC7EC590D79D
-:10D40000DB2F5067BA7C98A6578361B0B00F667A5D
-:10D410001BEF432CD92B731CB7241503CFB4DEE9C3
-:10D42000ADEB9F4EF77E5E23DD07CC34D279A0CFE3
-:10D4300048E741F38D744EAD37D279688391AE6978
-:10D440007E231D33568C31CCCF6AA930F4873D7EC4
-:10D45000B561FEE5816986FEF08D371AE6E7B5CE47
-:10D46000358C176C59785EBE8F082E318C9BF95E17
-:10D47000B8E74726395498CEC5DAF7593AFFFDF890
-:10D480004BFC1F0BDE3E4189CA81FE26D2C7FF2F0F
-:10D49000FE2F18A69D23E8FCBF48BB7A95E687CDF2
-:10D4A000DF794D8D13F6E6F53D27F67BB0FF865A02
-:10D4B000684DA1B8498B0FBCFA798429EFD3F39456
-:10D4C0006B4B25D3397D8CE19CFE42F7DA8A4341D0
-:10D4D000437FC47EF17DD4C883EE57A82DFED823A8
-:10D4E000477F0F35FA0B76CBE7E49DFAFD383D6FA9
-:10D4F00082E627390F9DA5C34F4A50726E7D51CFEA
-:10D500004FCD79AB9EAF9EFBBD95884BEE967BCB06
-:10D510006345FEAAE7ADDF070F7F5776D560DFDAF8
-:10D520006168FF654B675F1AD7F359222C9D1B4733
-:10D5300088B0FCDDCC3BD33DB9FC3D2AD7BD174AB2
-:10D540006F4FA77BFE08BE2B5C22CA3FF4F3D2309C
-:10D55000DFEF68BDC3926B7921BEFBFA98CF86D00E
-:10D560007AFF334CC46F76192984FE67C02C0FD024
-:10D57000F351499EE768BEF97EB6B935DF1B6A6B89
-:10D580000C72ABB8DC7C6FC75C1F0C5B548E3BFD30
-:10D590003F92F89ECE6704DCE8EE78E5C40A2BC71C
-:10D5A0002BA0E5E3376BF4D7EB16B3347C0EE31214
-:10D5B000F3D1FFDEBCE535E6CBA2940EADDE51CF54
-:10D5C000F1F5AD839D23F91E9AA7D02DEA5C7A1D53
-:10D5D00063D0257D5F7221FC17A51C35D491E0D95D
-:10D5E000BE1775BEDD8DB758FFF04A518F3CBC3277
-:10D5F00095EBDFDDEB1FE77AD2CDF56F1AF4E296FB
-:10D6000086F70C7A30C7FF91613C9CDC69A5FA6112
-:10D61000F88581136E42FA1DDB6CE7EFA1510E3ADB
-:10D6200088AFFAFAE195C3C7F3779517C4F3338649
-:10D63000A3BD31C4FCD5F13CD47890FBE1C630B732
-:10D64000663CF53A85DEDA76420EDDCFEF9462DD98
-:10D65000541736D72FEEB6A89F901E3C9493AEC5B4
-:10D660006BF5055EE69FA857B46BDF97B66BDF9747
-:10D67000B66BDF8BB66BDF87B66BDF8146ACCE1542
-:10D6800054D76897C4BD9F5992E7C939B85FDA602B
-:10D690009F3387E2FE859DF90AEE5357109E2D2198
-:10D6A0009FF3FAF9FAD07309D38581FC3D919FEF7E
-:10D6B000871DB1F8F3E9FB9BC91BB3AEA33CF0484F
-:10D6C000ACFF384522953969D751DE77C426F4700E
-:10D6D000FAC6D8EB48EF3EC6C5083FFF4B92A82BD1
-:10D6E00039C336FA7E6A6AB26F504EB1B8F7C5DFF9
-:10D6F000CDE073924BBDCE19B18A3830A2C583E913
-:10D7000039E21C302347C4AD7A5B463CC7E7D3A956
-:10D7100065FD7C389BBF375963078A5F717FFEBE0A
-:10D7200046BF6762FEFE66E49FECFC9D845E0F2DA3
-:10D73000C949E375E8BB1CD2CBE49FC4B1DD82705C
-:10D7400068087DC7D305EF7EF15DE531AA2347D593
-:10D750009F4B72441D066E03C377408BF71E3E44F9
-:10D7600079D6FBC37C6388AE732D6A09F17571C2EB
-:10D770000EAE774DC951795F8497F145FBD34C7C50
-:10D780005AEC08737DEC42F5F0DEF03F767BE8174B
-:10D79000B95CFF55F3F93B3C6D5F84630AD15FC709
-:10D7A0005B87A37B9DF3CBBF5ED7D5FB9F3EF1503C
-:10D7B000B65697BFC5DB833FBD55A34BBBB5E73A14
-:10D7C000FAFD1A7FCFE1CF3000AADBDB63D14760DF
-:10D7D0005BAFD1E9D80D880FD7273C2388BF8BA733
-:10D7E00039F9FB737D7D5CC7F787F3ECB33AD5BBA2
-:10D7F00090F05F582FEAEEFA7844127CF5AF14757A
-:10D80000D0C5DBDF3B44FF1F8405CFE415727EAF3C
-:10D81000BD6FA633D297BF8B9A2B8B732BA4EFDDF2
-:10D82000C46773BDFDDBD235922ACE57236BCF0C74
-:10D83000A17B648BE9DE1A7D1FA6D5AFA0CD5897DA
-:10D84000427AF9A95E71EE7914F0B9965DF3237608
-:10D85000FDFDC18AE1FD634EEF4F893E2F687603DF
-:10D86000E7072CB87F9B9E279BEA286D2151EF6C20
-:10D870004BB1719C4CF10EF9273DDEB9EB4D51EFE8
-:10D88000BC2B4DC4D1041FF1573AB89BE3842EFF43
-:10D890002FB955A29FD3EA0BD0FEE05BCAFE4B1E08
-:10D8A0008AFCA5F38B3F5FADD503843F2CD6FC5F8C
-:10D8B00031AD43014E6E1FF68B45DABE183F72DD67
-:10D8C0006D34F89A04305ADD6CE56E431DE1FF00BB
-:10D8D00090CECABD504500000000000000000000CE
-:10D8E0001F8B080000000000000BFB51CFC0F003AD
-:10D8F0000917B1A1F26FA0F1B33851F9BF5951F92D
-:10D9000097D0F884B02E1303C30A46D2F420E39DC7
-:10D9100040FD0780F838109F6322DF1C103E210C69
-:10D92000F48F1803C34220DD0DA4AF00F11F207E49
-:10D9300004E44B8B30306801F1325106864420BD3F
-:10D940000688CB4520FA4E02E96651F2ECD4E3A1F9
-:10D95000CCCDA39832BC411A955FA3C2C0B05695F6
-:10D9600081E1931A84BF02499E5D9D81A15605C243
-:10D9700036956360E807AA59208DDD5C33A0FC046E
-:10D98000A0BCB83A840F00134DDDCB680300000043
-:10D9900000000000000000001F8B080000000000D5
-:10D9A000000BCD3D097855D599FF5DDEBEE42679A3
-:10D9B000819705B8090183067C09612DE24D8C1819
-:10D9C0006C8A2F88364E197DA0D56859223235B61B
-:10D9D000DABC4012C2A6416D8741A52F5A2D525A7A
-:10D9E000A3624B67D4792C1DD1B1355AAA76A49D78
-:10D9F000C8388E5A65E242AB558739FF7FCE4DEE6F
-:10DA0000BD7909A89DF98ACBE1DC7B96FFFCE7DFB5
-:10DA1000CF7FEE73CB3E80090027F1CFB900574B83
-:10DA2000009037548237D608118026CDAD6F2A0674
-:10DA3000F886123BAC57B1E763E5D8FD3A3E9F5CF0
-:10DA40000B610005DBE703C4F07FACDFFAE0BA311D
-:10DA500089207BA62CCDC2D21CDF2C9B5400AD129A
-:10DA6000DF6F999CE9BD5942CA35D0EF05FA73B210
-:10DA700004A0E5E86FA71E32EBECBF0208455E0F7D
-:10DA8000B0BFCC8259271580F7828BB3D230F278A1
-:10DA90006FB5769FA54E02F853EBCB530F4D1AFE90
-:10DAA000FE1B0A34F7960F7F3E0BD8A433101F4994
-:10DAB000777CEAD0BA07D71964489AC3FA03A43D21
-:10DAC00039ACDCB5ED2CB56C084EE73A00921CBFC2
-:10DAD0009FB39F2752932E60B50A29318FE052D908
-:10DAE0003F3301A829DB97EB763500C1E580B723EA
-:10DAF000F2978177C4FD12EDDE0BAEEB04D66FBD5D
-:10DB00008BD34B7B9E1C5B07C3E9C5DC0F138FA730
-:10DB1000BB1F37818FE631E9A8495E3AEABE9F8A8A
-:10DB20008EAE443A3AEBFF9E8E927FBD74D441E3B1
-:10DB3000FC95D1114037C717F4AB38FFD0735E4660
-:10DB400096F64A4867ACDA87708FE353C1B896CE31
-:10DB5000EBE5694C4C41ECE93398DC1AD7BFAC1EBD
-:10DB6000E11E7B74E19B58762EA9A93B9FAD2FBF88
-:10DB7000B1F7F90B581989A7A404DBAF3B4046A1C4
-:10DB8000C2C65B91AC66EB6BC7C1E6023C905C66BB
-:10DB90002471BD60008C01F83BB126005957593DF6
-:10DBA000447FCDB40E37A4393EA4939EE1FD475A7D
-:10DBB0007F08FB996D8AF1FF6B00D777AA7EB0963C
-:10DBC000CF9764FF20BE0B87E6A771F29B2C7540B0
-:10DBD000FCD8DFF7E15F08BFD7FFBFCC5700953E09
-:10DBE000940FA17A594B617BE8CD56593DB24285DD
-:10DBF0003493110555DD924B3FF5BE7402D4F5F216
-:10DC0000FD911A4243F0FD2748443FE3BFF55ACF48
-:10DC100006467227960663441F1A406ECEF0F57CC6
-:10DC2000B71509D9525F52232568BED8D3A5AC7F5A
-:10DC30007209D77B77D42FCEB6CA2B8F2409BC3973
-:10DC4000E903747526B215A70FB55E367CD3BE38CE
-:10DC50007DA89F933EF2D65AFAC167DFAF88691755
-:10DC60009C267D7CD1F9CC7D1DCE576D625F4B7DAE
-:10DC7000C0F8F6F6BAC519ED8C91F7B592F83D5299
-:10DC80000F462A43BFFCC1FD4C0E2FD9FE2883DB73
-:10DC90007B836DBF94B1331B7B46C18712B1AFD775
-:10DCA0001CD7D7A2E8AFE5B2AAAAC9389E1BC763A2
-:10DCB00074B6317A7B12183F9C40DA66F850BA2B62
-:10DCC000D258875288DD2F209059DD1735529B8816
-:10DCD0000E52B42F267C1E5DB6E15F8DF86D75681F
-:10DCE0004C4A56F87D2D6E82C38DF3317A57343607
-:10DCF0002043851A84B42F8C2D38FC4806272762D0
-:10DD0000FDDB363AE8D22B21D33E98F48A68E5F45D
-:10DD1000FAEDD3932FCEF996D8E13DED7E41557FB4
-:10DD2000DDA28746EEA7C2EBE6FE30245E8503CC7B
-:10DD300018DAA70D2ED8279DCDF475D1A590604F88
-:10DD400037E0AB3944A764CF6C28AAD490AE609773
-:10DD5000A4229CA61E85680EB5AB90741A47F636B1
-:10DD600003B653820695E6FB91E112F49734F697D9
-:10DD7000B271BF22F6F72B42AF4195EBB57E136E21
-:10DD8000D2B3EA509DADE39D9BD8FF189D242BA4F0
-:10DD9000D4FDD2F0F7F5A817995CAAC7E716B9B277
-:10DDA0007D900FA2B45FF5E2DDC1C75E9A3C9DD1C4
-:10DDB000475F4C01145BEB1EF318B56CFCE7CF9189
-:10DDC000521E49C0CBE05C24E07CD6C81D8774DAC3
-:10DDD00057EB213A5E74C19F2248C6C7F7FD5ACD62
-:10DDE000442F8BE6B986E060FFADB6AE8FFDF7C37A
-:10DDF000C17D29A2794CB856562A0447DF3C2985B3
-:10DE0000F31CFADD7FDDFA2506E7B35552CCA313E8
-:10DE1000BC2160F3F519EF4746F53BCCF975D010FE
-:10DE20009FCEF9CDFD081702E115FE9DE195CD9736
-:10DE3000AC19E85F8F783E26C5D6B3F9B2E6B74C89
-:10DE4000C0798A6599E0DD38CF2B2B8C7EE0E531F7
-:10DE500032E23328F83CCBDDED9DC8E0EC9C24C3D6
-:10DE6000BDECD1C6D2D1E559BB439EA95ADC90582E
-:10DE70007F3DA9552AA3F045CA90EB32C9BB672460
-:10DE8000AE273B928BB5525CDE21BB1D887A296E92
-:10DE9000D1ABCC5E7C4662EB7745381D67D7C6B9FF
-:10DEA0009DD83786E45740EC47D6B4C55990C10E8B
-:10DEB0001E711D6CA24C7673B6CCE183A37C7CD51D
-:10DEC0001C3F67F4F13788F13F6C92A00FE153E3F8
-:10DED0005EDC7F302A889EFD823E616D0ED54DB995
-:10DEE000EB298B7715B37DF44465D0755C5F92F6B2
-:10DEF0007933DBE322068ABF96BD674D377FAA9050
-:10DF00005D922D9F4826191C9BF75F0B3AB353FD7A
-:10DF1000D114507DEAD55EC4CF66A614F8FCBD804E
-:10DF2000F30718D9A27C0D30F9AAA37CD57BD33294
-:10DF3000ABAB751033D8AB901693FC8C640E444B8E
-:10DF4000DA54F6BC7D2910FD025A1116FCB6475F63
-:10DF5000301406576723905DD319A9A1F5B597D75B
-:10DF6000788BD1DEA957E9397CC2F061DA214C1EE9
-:10DF7000FACBC0C0F936E7432A88BC549B47F4E883
-:10DF8000D6F8FAF5EDA5909ECEDE67CFDC8FF327AD
-:10DF90006F81D8243E25C935D5A40B359194D0BFC7
-:10DFA0006BD1629B32D0DD764864C9336C744A7A97
-:10DFB000D789B72C375C88F8EDAC60F45F3C7C9C6B
-:10DFC00022E41F466FA9D8E28B4A32CC532CEB4493
-:10DFD0001F665DFFD04DF08FD47EA81DB3337371E3
-:10DFE000684342BC406D84D69703837F0CACE78ABC
-:10DFF000F58E81666A179DDDBD1FF9ACC0E8AD46A0
-:10E000005C7C3774E9F3B46F70B786F108066DE98C
-:10E01000C9DC21396104B99C782F26937C0CC9692D
-:10E02000CD6003847C7D5152D63A901F91855D1856
-:10E03000C09B5ABBA7A27F19869884EF43313569EC
-:10E04000953F59C0EA36FB0F8E94CE24D2E27C0174
-:10E05000DA7E6419ADACF90C1CEF0E06908FF9C98D
-:10E060005B4209D2177FF285A7E1647F92E3596989
-:10E07000DEBF0CEDEE1B157F6C13D2438CEB072F2C
-:10E08000FB07E55FD66CD5268FB30D7B3DD7A13757
-:10E090001628415A6FF65740E803A37ED29821F81C
-:10E0A00018640D4837DB6A55C0F982410E9709673D
-:10E0B000AEF2495A0682E318C2C1D0437084CB80C5
-:10E0C000FC3D06CF31073CC71CF01CB3C2D3E2E5D0
-:10E0D000EB75FAFDCB65E1F733BF17F5E00978DBA7
-:10E0E000A8438231C6915E096BBC6DD0DB47469573
-:10E0F000061AEDBFD3EF67FBF39E4D3FCC16759D1F
-:10E10000D9F525049FFD3D14119D505D8141FF759A
-:10E11000F96C133FFA575F617C77ED6117205F312F
-:10E12000FE55F0BD4BBCBD56F8B1CB51FF33BD7DA4
-:10E1300015C4C308DF3B2093BDFC0EBC109E6E913E
-:10E140008B77C86EA1C7D9865AF9176251F4ABD53F
-:10E1500060679F1226349874269DA47D8B01F9DD9B
-:10E16000414E6F49F0B6917DD1C5F5A3E9F77DBD6C
-:10E17000DBAEAFAFD96EAF5F0D8BC7207D5D7DA7E6
-:10E180000B526CDC6BADF607DB9F6FC91AC1770DC4
-:10E1900034776A41B2B31A711DCB3550D14F5BF958
-:10E1A000B37B662E63EBD921F4E85B4CAEEB16BD76
-:10E1B000715D24E536CA87AF6FBD145BF42569E451
-:10E1C000F56D70F52D42FB20B9D5457E1D38FDB5A6
-:10E1D000BD0AF96B967E04EF955DF6F59D6AFDCE5E
-:10E1E000F5328F85D67BDDAE65A437475A8F7B9796
-:10E1F00064A432E8B7874D7D28E48B49DF265F278A
-:10E200006B80DB7BBFF7A5D6B3F97E83F291F6BFB7
-:10E21000F96C1E47699E85E5A9FAFDDBE7ECF7EF8F
-:10E220009FB3DF6B428E3BFBADF4F6BB713F57AB48
-:10E23000C93A491EB2A3BDAE66A390A1C2B5AF3A1A
-:10E240008DA698A55DD769B63B2C959C56BB3A79AF
-:10E2500094F18E0B3BE3A93DF7B9FB91FF76BFBA72
-:10E2600008F5FB37FE49012F5BD7F13D2148237D9F
-:10E27000AA2937DA2BD731BA4A513D3DF3628B5D7B
-:10E28000C52896C6FFC64321B20FAE7BC493AA67CA
-:10E29000FDAFFBE97F4C038687E3EB06FEA510E9A3
-:10E2A00075B7C4FDBF64FFB48BD9F3EB54B8229E9D
-:10E2B000814E6485F3CBDB3F0F34A2DD27EDDA7F9F
-:10E2C000398DDBFB5517CA65B3DD47B28BE665EDCB
-:10E2D0000C7C9F7C504A4D92387C0D5387FBDD6F40
-:10E2E0003F2871F8F6B9523E846F578F3BC1DAADC3
-:10E2F000DEF52ED1ED790FFD388C7858BD4FB1F990
-:10E30000BBAB772969CF342A5FC51235A3C4F86D3A
-:10E3100095E0D7557B57921E58D5BBF95DE4D7D50C
-:10E32000FB5C36B9CEF0124B235E5F5262F5587F2C
-:10E33000F487619DA1EAADE8EEB0564EE32E73334B
-:10E34000BABA68B6BD1F8EFF61CEF0F1000628AEE6
-:10E35000B9BA77239F0FB8BE31F9F42DFC4BFE708C
-:10E36000BD3145B19F3B9C806767521C72576E461A
-:10E370003FCED41726BF7EE3C7277626D9BC6F3F92
-:10E38000F2879D4906FF8AFF797FE7B7D9BAE0494E
-:10E390009F867268F5EEDF84C182F75A85FB61C7FC
-:10E3A0001FFCE1033B18BF1CFFAD87ECBAE34FFC39
-:10E3B000D7789DADFBF8C31F8D41BB73ED13E78F7D
-:10E3C00045FA5AFBD879636114FF01E935E5B1EEEE
-:10E3D0006B8AF655DF27611006E071513AF6E7E0E7
-:10E3E0005E258DA1DB775EF6A43C0C3FABD9B396DE
-:10E3F0004ADCAF95A487B07E33C3F3AA3D1BDE553C
-:10E40000A665C277B2508E62C9D8268AFB7DF145D7
-:10E41000E75461E98AE9481F3040F2DFD96FF5110E
-:10E42000B6AF678FBC8F27E01337E27FF59E8D7CF8
-:10E430005EC73EBE837F999341FF0FDBC715DFDFC9
-:10E44000812FF7E6D2BE8FB48F2B1FBB6454FFCC55
-:10E450009407A7C26F93C4E13A5B31D628C8578F9F
-:10E46000FCE8811D11BEBFF50C21C77F7C623C0614
-:10E4700097DF700D5C8E7272E0098F762FEB73DD83
-:10E48000132F119F1D7FEC79B74E72128212D37B2E
-:10E49000C761F04F1FEAC15512AFACFE4128ED092C
-:10E4A0000FEDD3AA54439D1EA6E7AFD2F314A7FFE6
-:10E4B00055A9FD4BA40CFBB65B29E1723995477851
-:10E4C00059A9F7B9B5A07D3FA5D9B88FAF2E40BAED
-:10E4D0001B691FCDF56BB8FE5996FDFC01E7DB917A
-:10E4E000F8F3788F4795B286F6F7B8B00F56A7A421
-:10E4F000972003DF02ACE3F08E70FE68964E7AF848
-:10E5000081831ECCFEE6BA4FC5D7A75ECF67C3D7BF
-:10E510009D8A6EA31B136F6F7F9259DEA7859C584F
-:10E5200005C9BA8289C3F5950AF16461F110BC9DF1
-:10E53000BD0AC9F1B7772964A73BE5C2AA11FCF16E
-:10E540005F29DCFE58B56FFF34945F6F1FF8B9A0E8
-:10E55000434EE7ABF6BCEA4E0AF99FB2CA7F1C2FC6
-:10E56000C37EBC2CE05EFD78E6F156EF7937E378A8
-:10E570006FA9C65711FEB7FA5C906443BCD5AB6473
-:10E580008C6F1C505CB6386E6768E6CB5918DF0C90
-:10E59000FB755CF7FA75C64B49B4435E7001D981CF
-:10E5A0006AEC0D0F7BBF3EE4A773EFF5E1AB41B71B
-:10E5B000E8E976079ED4689CFC603512AFE2B1D7DB
-:10E5C00094CD1F7569B20D6E509345184FF955F1F2
-:10E5D0007FA938EE7368FF9D31D4FE39153A72D9A0
-:10E5E00078CF1952AC0D32C4A71CE3C7E729A05B52
-:10E5F000E9CC2893ADF1D5F0819B282ED102CD69CD
-:10E600008C134111F4DE6F19F7EE560DD26C7EA813
-:10E610002B93ADF1554F73B3E1617014ADD54AD072
-:10E62000341B69FE71CDB23DAE2DE65F23E209B029
-:10E630006BF7EEDD6CDC3A7C57827E0C8F573177BE
-:10E640008AEC98F3841CFC6761071F90E287D0CFA7
-:10E6500032F46D2ACA39A9749B8AF6C4C24FBAD55E
-:10E66000E5167A5C58DA5684F472F853A531135DD6
-:10E670002D51395DB5156F28C2FE877D371671277C
-:10E68000344AEB2C10EB3C34EE9A603F1B777FF161
-:10E69000355B2633B8EAA20A60BCA52EB26C4B05E6
-:10E6A0005B7FC11125E663F582A6A49A983A7C9E09
-:10E6B0009D28EF19FEEE453C32F87FD01AA5FA03EB
-:10E6C000AD3A95BB5ACBA8DCDD1AA3F77B5A67534A
-:10E6D000BDB7B58ECA475AE3F43CFC2D7F02E977FB
-:10E6E0006F6B233DFF696B82CA1A95F3DB42810F82
-:10E6F000CBBAE91C6C497B781DC6514CFC39F15DE5
-:10E70000CB282E87CE0D241DF13D56E572C589D745
-:10E71000969620D9A53B25B0E173A6CAEDC8B8806E
-:10E72000E3903771A1CACAF7EA4ACBC9EE81780CE7
-:10E73000E5F44E297E5B05E397A7C6CD8A5AE56EC0
-:10E74000249888AB7943F5F15D3C3E334BE5F2A963
-:10E750000EDA0E6531F88C4F40473A33D779A05A1C
-:10E760002F42B978A08DC1538EEF6528B3D0993967
-:10E77000DE5C011F0433CBE921BAE5FC1F9D5BB6CB
-:10E780000DE3C4CCF18C4DD2C9EAB6F5DBA69A7183
-:10E790006F9DE8D8A413C63F4F8D8BD030DC5F6CE3
-:10E7A0002AE6EF7D9CCE5BFADFA5F856740CD8E222
-:10E7B0008D1D4D32F9393B8EF2B8F489A6926D93D6
-:10E7C00059FB6A8637F4DB73169666252C74BD45B3
-:10E7D000D0D30E6F3C4B1B457F758A7666FD155F67
-:10E7E000E23B88E7BF9FF0937CA4E71DAED4652889
-:10E7F0001F5B8E7AF475129E37C493B86FF122F6C0
-:10E800009C8174A26EAD879616E4E70F2D37EBDB83
-:10E81000CEB0F0792866E7EB9D2DA3C7A54DB8775C
-:10E8200022DCA3C4654DB8CDFD3851B764E01A1899
-:10E830008E07E7B8390B978C3AFFDDC8771EC2C345
-:10E840004ED5229F8A9A353A6730FB9BEB75F67757
-:10E85000AE77285FE1F4CE677A5D908BFBF9F0C765
-:10E86000E31F7D0E70CBE30ACAB12BD4442FEECB4D
-:10E870004C68A63AA803F9C82FBFF373FADFD1F9A1
-:10E88000403EF1919A2A46BD70BAF375403C5E8DC8
-:10E890007A2B26C7ACF2DC2C7FA19A718234C58F0B
-:10E8A000E888994D29076E8E66C2F3E0F845EADBE9
-:10E8B000D6F3A42D00DC4F4F7BE99C0303221AAB57
-:10E8C000171F86CA4D6CBCDD429E54ABDC2F9C7E6C
-:10E8D00058EF5178FC48690859F028E2A9661CAB4A
-:10E8E000036E068D7575AB15FBB1B9C9870DEEC406
-:10E8F0008B882F7754A7F3775724417C0522FE3D60
-:10E900004EC4E9CF1771C6FB5B789CB105E2179E38
-:10E91000817C7D4401F28F13136DFCEB5CE77E413B
-:10E9200057FF24F4DFCF85DC2E55F74B596CFCD014
-:10E930001BE9036156FE4CC8F1C7841C3FB0ED5F74
-:10E940008A319FA023E18E214EC355FEB4C4ECD082
-:10E950005B67BEA15FCBDA77744F6E47FC6C58CB18
-:10E96000E3F28FA2DC67FD1E16723FDCDC793D9D71
-:10E97000DB09F95264E60B08795224E4C9C16D2F12
-:10E980002EDB80EB4B78699E16483F8D717D582BAE
-:10E99000939D12EEFDDE0D38CE43AD061FB77BF71B
-:10E9A000DFA17D7F8F375DF9AF18FF9FE78E25517F
-:10E9B0004EA526D9E454B877DF8DD82EDCFBCC4D9C
-:10E9C000940F23F0E0799CAD9735C9BAFD703AC435
-:10E9D000DA15F6A7D1EC66FBDAB3700A1BAFB45EAA
-:10E9E000A670F51E297E5E08E9A1819F4367552C1C
-:10E9F00069C3F6DD2B5E4862FF31CF364BB8ED3987
-:10EA00007F776F35E2EFFEA2D79EAE66E5645731A1
-:10EA1000D141F0A89EFF43C0F1E3D16BF591E9F03D
-:10EA2000E08A358072CC73A74CE7F4F7DFB906AE05
-:10EA3000B1E65DAC5033C6C726BB3CFC3CEBCEC553
-:10EA40007D2867CDF3ABC295B55EE2FF67C1763E28
-:10EA50006B9E6399FD2BA4C464571E9D57F0732DC4
-:10EA6000D1BF40411B8F556F90391FC4D33E6BBE41
-:10EA700049F07A399E099E592E95E0698FD5EEFAB4
-:10EA800017369F3AEB52D2CBD06D87C3D98FC131A5
-:10EA90008BC3C1E133E118C74C82209BFFF6852F61
-:10EAA000E6237C1FD60DEA1B3FFAFF1DDF95D3132B
-:10EAB000D8FE6C6D97E9FCFE40D5012FE2714B55F5
-:10EAC0008D9FDB3F9CEE72041FFDA04E26BE3D5184
-:10EAD000C5CFFBE19393741EE612EF73F20E78E953
-:10EAE0000C236904AB6762FA81F9C7925FC0705367
-:10EAF00099F4DBE4A7DC9263CB371807058EBC954D
-:10EB000092A1F6E87FD71D91502F85C47974A97919
-:10EB1000BEAD1C8DE1FAEF32F562AB97CA9EE603FB
-:10EB20003E9DC1F58B664627B42E7B5E8AA7096899
-:10EB30005D05CDFC9C6D8BD6B7DFCDEA45DF65A8C2
-:10EB4000D7D19EEB25F902DD3C5FC03CEF98B4C203
-:10EB50009EB752E4C8B719969FF519FDCCEB5DF648
-:10EB60007CC313B0650AD1435F896D5F7AE630B725
-:10EB7000E6ECE1FEE6E0B8C29F82289773393E3E9C
-:10EB8000C7ADDF529AD05E0A5F58996D3D1FED7494
-:10EB9000713BE9D0EF3C80F1F80DB55E8AE398E770
-:10EBA000E8E67E6FC5A42BCC77687FC087F4B223DC
-:10EBB0005242E5C1B9CFF8FA890E793E8047AC6977
-:10EBC000DDDC67163631BCDE9327938EE9287A2187
-:10EBD0001FCF176FAFF5D2797F38D0DF7B90D58309
-:10EBE0007FEF8EE1F9F6FDD5E946ABFFFA908BDBBE
-:10EBF0005BDB5D425F6DB19F3F333ED88E7CE009A9
-:10EC0000C6E9FC52F68ABC09879F63E2237C205F39
-:10EC10002E9ECACB92A943F6F9DD826E760879BFA3
-:10EC200045C87BE738C54DDA0137DAFD2BB44A25F4
-:10EC3000035F4E68B1DB09E39AED7935854D76BA0D
-:10EC40000FC50A1C76459AF498A98F37F88213915C
-:10EC5000EE2B99BEE4F681265BCFDB9DFA78B76A8E
-:10EC6000EC7391BD7B7A764238106F467C3BEDDCCD
-:10EC70004302DF1F2BC601C46F408D1F72511E68F7
-:10EC80009CE48CD36E1806273038A78E0AE72F5DD8
-:10EC90009FC17E3AD5F9C09FE4F8F6E718C8F3B3F0
-:10ECA00040E45D84480E7784B8BFD2E1E27EC27B47
-:10ECB000625DFFE15268DC01415FF303D09C399F44
-:10ECC0008CC78B3E40C304DB8DCD9CBF8B160BBD28
-:10ECD0002FCCFCFE03173F679B3F61F479FE88F35E
-:10ECE000B0F257AAF1AECB728EF384CB78DF658990
-:10ECF000537CE8D2383F98FB21F2734DFB699F6A41
-:10ED00007C64ED6F96390B553ACF3D01FE98C2F009
-:10ED1000F3643EEC0526479E94043E7FE7A33C2027
-:10ED200013DF83F635CA0FD4034703298CA798FB5A
-:10ED3000609EC30CCA11D1FE4C3797278C6E026EB1
-:10ED40009A3FCECF0B214DF2A140D0CD0EDFD2DBCA
-:10ED50006A5979EBDCB75EC67C85771EF3E908D784
-:10ED6000D6AA6361ABDC84263BFD98CF5D1F16D22B
-:10ED700039FD37A544BEDBE247BA22036EECFFA49F
-:10ED8000A4933F97FC8D42F6C893526A0A192A2A27
-:10ED9000D079C693D746539B2CE71D4E3B3FC7D730
-:10EDA0007FD76A5C7713B39760F8BE9976FAA0DDD7
-:10EDB00011B5F78FBB41D8D96CB98CAF2BC4BA63EE
-:10EDC000AAA1201C332041E52CD0A964FE40A59BBC
-:10EDD000B59F0E03F9C847EB02E3BFC4ED8CFF33C8
-:10EDE000BC197F8D781BA25BBBDE36CF1DF2041EE3
-:10EDF00042D04CE7EFBF685CBE71129BCF5D14241C
-:10EE00007B38AFB1FD7A398CD97E7D1AFA9B79E2D5
-:10EE10003C1C9670FD6C9E4FE7D4DBF5B9537F7BAD
-:10EE200084BDE11941AF3BE5E6487A7D85DBAED78D
-:10EE300007E3C723C83F67FCF8D4F24FBFADB6184D
-:10EE4000F3348C976AD1AE9BA752BC333C11AE8889
-:10EE50005BE8E1F76E223A56F2BC994D8C5F53673E
-:10EE6000703E07F413024C01E179C2383985F93656
-:10EE70001B92A93ACC3FDBA04ED2ACFB583D8EDBB7
-:10EE8000B35B6BFC4D56BBF60F7E178DFFCD40F587
-:10EE90003348C7E5C1540DB97B067304C7F0BC4BBA
-:10EEA000DCB7B334E8C773580F70BDCD38C2CBF5AB
-:10EEB0004AADF63AE56726E0646034BD60CFC7DC52
-:10EEC000ADA6D6F9111F111E7F096D97283947E9A4
-:10EED00035D298CB5515587CB79BEBAF329C67FF6A
-:10EEE0004C66EEB2F67FDCEF263BA73754A8A23D76
-:10EEF000F9A4BCFCFB68070EFCD603789ED2FBE9A4
-:10EF00009974AFA137F4A5054807BD1230CF96AD6F
-:10EF10009FF10F4FFE8100C6EDC3E7198071CB81D1
-:10EF20005F40EC5E36BF2BFA689CF276C108C8B32E
-:10EF3000593F1F7461FE4AECCFFEF7CF6574F74866
-:10EF4000B0F28EB361280E60FAFFB5FEC4A3086765
-:10EF5000C7987F6B423EEB62702A6487195184BB6D
-:10EF6000324F26FE83BC606A127B5E7D38528BF97D
-:10EF700068D56A054A1A0607DFEF577C892710FF14
-:10EF8000B55A436D366B5F7544277B6541F4FA4390
-:10EF9000589F7994D73BDC40F620F22F58F8AFFA0F
-:10EFA000C3F1B4BEC3428EB7478D3E431A653F34AA
-:10EFB000D5719FC39EC762A5036DA68D0E122E2B21
-:10EFC0001DCC667430D54A0786F459E8E07B42DEF2
-:10EFD0009E9A5F389FDCA870BE194EF7CDDE9CF27A
-:10EFE000E1FC61CEBBA92A2782E7AB261F68B36E7E
-:10EFF000D6B0EE59E68E23DF997C61F283E21BE402
-:10F000008B8B7C6C7F9704F5F333F105FA7156FA1C
-:10F01000BF78043E5904038730E77E910AC92C2645
-:10F02000427E35E78DD2F116BA77E269D13C098E7E
-:10F0300059E4D1C993BC6EC1A3369807AD9C3EBEBE
-:10F040005F50F58E8885EF3A99FD8C4661971C8359
-:10F05000BC62E4BBE541CF0CBCDFF07094E2FB9EE8
-:10F060007813E5ADCD7A3B7035A3C33F8E91755CC7
-:10F070007C87BEFC21E2DF97038076DBD699D74DF3
-:10F0800040FFE48FD72626609C7323C3FF31326E86
-:10F09000526365CA85EA1FCBCFCBF4282F1351FEEC
-:10F0A0001CC4FB94A81BA25D3FB563FB6C9387DB7C
-:10F0B000BD5C0E6EF7723B70A3BBDB8BFC3550EC76
-:10F0C000A5F354E7FACFF5707E38D70355B108CDD4
-:10F0D00046F1960EAF52D7C3E350E973D9F37327C5
-:10F0E00096DD6BD58F66BF3B5A53F1D726E17A7612
-:10F0F00051995B9F023C37F09725758CDB7BD7419C
-:10F1000022937DB8C3CBE304DE03FF40E74DB9A5EE
-:10F1100031F24F23F56C3CCBBE2E6228CC62728656
-:10F120002DCB407AEFD0FD64AF2D8AD4BCA94E1B05
-:10F130004E07F8E798653FBDFFA3247AB91F477EC5
-:10F14000C85AE1F7D59678897F3A5ADC3D184FBB0B
-:10F15000CC934DF8FA2052336A9E2DFA5749460F48
-:10F1600029E65F6189E720C933F83908D6F11C0424
-:10F170004B3C07C112CF41F03D9E8360FD27AD0699
-:10F18000D5F13C04EB781E82753C07C13A9E836042
-:10F19000B9AFB589CA7F6C6DA6F78FB7B6509DED34
-:10F1A00013D9E350968C2E6678EEBAC96DE0F976E5
-:10F1B000B7D88F8346492EEEA32FC2FD53DFB3B7D6
-:10F1C00003AEC717E571A5CEE8ED70252BBB6684AD
-:10F1D000BA30E0E57D2848A54FBD0330BEB0534AA4
-:10F1E000366124EFC60DFBCE53991E2F8D5E5F93C3
-:10F1F000C3EAB76C78723DE6F74CD6DB62CBB5A1BB
-:10F20000BA1EAABCEE614B7D42798FEA67EDD779D1
-:10F21000F6AF477E4638D0C8DBB2E1E0796DA58C09
-:10F22000984A80EE790C14BB53488F57E17E4D42CB
-:10F23000F8B9FDFF65581F457F7A82EEAE443E6205
-:10F24000EDD39C7E4FAF7D371E66CD18DE6FB47652
-:10F2500072D569B5036594F1F0BD34CA381DB05E4E
-:10F26000C33B679B91E731EFC817207FAECBC5F951
-:10F27000B7CBC7CBFF167C7BC85B13F7B232EEE58A
-:10F28000FBDAE58BD7613C7460AA4C71855E171B75
-:10F290000293775B8A7F5DC2E6FDE6332A607CFAE3
-:10F2A000871ECEFF932684B85EFDB697F4EA051359
-:10F2B0007EDC9EC3EA93EE8BC5504F6E86981FE9A5
-:10F2C00024B985F3FB8FAA26E634B0E667CD782C07
-:10F2D00007E30DAA802385F79258BDADE3EA09182C
-:10F2E0000FF9E3F35C7EFD54CCD3E3EA6BA6FD9CFF
-:10F2F0001124FB82618CEC87B6A84AE7F7723E2F97
-:10F30000DD2EED6FB09D9B29E82483C7FDE92C2FEE
-:10F31000F9E91F7AC47DB63EB22BDCBE8496CD9E41
-:10F32000772765E2F7F59A3F8529FB9B839574BFA4
-:10F330003659AE527EF6E6721EC70B842E4DA13DA5
-:10F3400071DB7E1F970F412FE569A5CAF71EAE89B5
-:10F3500060296BC8EF2963711DE15D9335CAF762BF
-:10F360007FA3F74D11CAE7DE0C625F9A64F2173B88
-:10F37000C6FCF95FCFC673F1AF6B3171C788F22558
-:10F38000C90492F1BEEFC08100C2F3B7E6FDA4FE4E
-:10F390007501D6BE7DB916C37D98A6D5D4611CB1C2
-:10F3A00043ABF1225F05A6D67A97911C1ACC67A6CB
-:10F3B0007B70EDE5DCAEC5F7C897D00E87F0DE4B6D
-:10F3C000A1906581EC4A09EDA18E7A0A2F61BEAF4A
-:10F3D0002D3FB33DE742CA7F5716E5109C1D60786C
-:10F3E000B17DB25E25FD5518F4A6D1DE2B34E38B3A
-:10F3F000989A6CF1377257D8F39BF39B54DBFD8FCF
-:10F40000B1097B3D4FF80F798E3C68C96B9E23DABA
-:10F41000F1E45C6F6EE4DE6C8437172F34EBC3D7F6
-:10F420007347A4B201D759A8F909EEA8B6AE1AE5F8
-:10F43000D758686E43BAFBCCF03AE09C56DEDE87C4
-:10F44000FB3E4D57E9BEC3D930B00EC7DD2CE8BC3A
-:10F45000ABD8AE4F7FE851C43970CD1CE4478C87E0
-:10F46000252DF31727FD90B4CC37B12BC7569FD469
-:10F470005D606B7FC6F612DBFB29A9336DEFCFDA37
-:10F480005569AB4FED9D6B6B7FF6BE1A5BBD227D60
-:10F49000A1ADFDF4C38B6DF5197D7F636B3FEBE58B
-:10F4A000E5B6F773FAAFB3BDFFD21B6B6CF573060D
-:10F4B000BE656B6FDAD74EBD38DDFBF9EC6A0FDE47
-:10F4C00007B3C50FED76BBD3EEF6FECF7A7D1DCA2E
-:10F4D000B5B09BE85B453DCEEA6B6EE27E8F777EF2
-:10F4E0004C47B93245D063246818B86FD5612FE90D
-:10F4F0000335C8DBA9C10564778CDFCEE4D174B4D1
-:10F500001661F07D00E5726B325EEA1A82DBA77548
-:10F51000D3DD86EA701DC5DFCDFEAA66402284F3E6
-:10F52000E93CFF887995D8CEA7B3FE96753C29CBE8
-:10F5300074157C80F967F75AFCB391FC31A7FF750D
-:10F54000BAFED67819FC58F648F1662CCB9B9FAFD3
-:10F55000C1343CE6875DE565FBB3D51D6FEA61E329
-:10F560006E2DF1F3F332E1877515F7125F0C14ABD2
-:10F57000A45F40D5CB175BE260B709BB32E0BD8B1F
-:10F58000FC40B564F6611DF1DEA6527C62B3C4E3B3
-:10F590002849B60FA8D776CE7DE3DD5BD8736F8997
-:10F5A000B7D0CBE451ECA0DBC073D23B045E4BB4CC
-:10F5B0008A1A667131FBA2E1009693756667B0B254
-:10F5C000AC6CDB012CDBBC2534DF99B1876B50962A
-:10F5D00078E773FB4F99E64EADC3FDD3381C23D1BA
-:10F5E000999AB39D9F6795AAAF23BDA1557E521EE0
-:10F5F000A2031FD2814425D18F2F1224BDE1C30362
-:10F600001FACAB522AC0DE474A0D09F333AAC3DB55
-:10F61000E97CCE97B6DBABCC2FBD0DF11AA9B7EFC5
-:10F6200077C0BB93E06B97789CB62B5B7FB686C1A7
-:10F63000DF9557928331168C633458E4CD76A14F11
-:10F64000AFF0C9A6FE2779E343DEC81BB27718FDE9
-:10F650006F9727227CDD8072CB77733720BDFB3418
-:10F66000B69B686F7F2749F46FDABB3708DEAA2D97
-:10F6700069A473B1F7239564DFFA5A7E92117FBEB5
-:10F680007E058CE923E3353C7907E97B2871EB683B
-:10F6900057B4E86EA327D339A047F81F981F82F00C
-:10F6A00088FC902E810FF35CEE7D336F4A9C07DF60
-:10F6B000900DB6F3C11BF22AC78E668FFB987F9818
-:10F6C000B0C0BB91CD8378E9F8A4A12E4EE784C0E9
-:10F6D000EFB37D5ADE43F7863F59AFE339E62C811D
-:10F6E000EF733D1CBFE3DD407EC27918E7988E5E64
-:10F6F000E997EB902FCDB8C89BDE1CC27F2C094A3E
-:10F7000033D92B2E536FC927CF269875B719CF241D
-:10F710009397EB35F6EF7EBC7F31B1CB7EAF69526C
-:10F72000B7BD7EC6767B7D4ACA5E6756F311B40BC1
-:10F730001A80E3E7AC5DF6F70D663CB096DFC7F0E4
-:10F74000B2994F72FD6BBBFF0A42FF9B71D771BD2F
-:10F75000E96A14AF456BED7AB540E8F90287FEAC73
-:10F760000C29140FA83E1C3984F6A319A779C5A744
-:10F77000DBE29F66BCC529CFFD47B7017B437E75A1
-:10F78000C2C3E31009E6DFB41489F8C6385EBA14C0
-:10F79000FDB9A564A7359F81F2E99037F1B197E2F1
-:10F7A000CEF6FB12EFD5A9BF90743E4FC232CF8D7B
-:10F7B00065C90BF8F253947F62C63B4C7F5E091A11
-:10F7C000711C6F73EC85E683186FFAAD07709CF3BC
-:10F7D00095670FB7B2FA9A712AE54B6AB3567CDF88
-:10F7E0008FF1427CCFEAD5C5FA58A2FFA75DE4D7D6
-:10F7F0006F10F46CDEE331E323519FD03F3ED32EF4
-:10F800004AFA453EAC1FEDDCB37631D96CD3733C7C
-:10F81000EE66C6D7A6F6DADFF78294ABB1FD3BBB46
-:10F82000312573BBCA08565BE2EF678AFD9AB6348E
-:10F830007DFB5256DF03A94AFCAE4485A08BD8213C
-:10F84000FBBDB13120D1FD82314794588AB59FF676
-:10F85000B8FD7DB9E35ED999CE7B668E787048811C
-:10F860007797B1F9B6E8CD12CACF2D4B99CCC2F932
-:10F870007D22CF78324C46FA3B5F09C6D288DFDF63
-:10F8800028A4373CAF9EF1D232D4E7CFF33C166DBB
-:10F89000A2BEAD96D5B57F55483F6901A8A8080E10
-:10F8A000C58FBF773206EDAEA178D46EB6AFA59303
-:10F8B000D0BFF602EA959FB0FDC57A2FF3C7B1FE1F
-:10F8C00008F3C7B1DCCBFC717CFE53E68F637D1F70
-:10F8D000F3C7B1FC47E68FE3F3C7993F8EF56F0698
-:10F8E000AA1738E359D6F8DE503CAB5F32E359280B
-:10F8F0004A3E70EBB4EF8371AD048F6B9D7A1CC3ED
-:10F900001C87E286C3C611F1C3776EFAB707F09E73
-:10F91000F5CA19EBBAF0BEACD765C6CF789E84990C
-:10F92000FF6CF2DFCABDD7D3B9B13BFF4833EEC796
-:10F93000DEAA207D8BC8ED4A68281F9DFE97E977D7
-:10F9400039ED5FB374EA233FDA01D3D14EEAA6B8AA
-:10F95000CF261794D1FD59C91F43BE70C62B4D3E0B
-:10F960007ED15792F1BED4601EAD88CF7820E5C518
-:10F97000B89A5B12EB14799E24C2D8109B919F2DEC
-:10F9800079C9C1F234C539824183EC2F89D96564C4
-:10F99000A7698928C6A13A47C89BBD4FF0675BBEDF
-:10F9A0009BBE37D199CFF3046A8B6251ECBF3E7F87
-:10F9B00066D49A476BE6F91E0ACDF4F65BC65B1374
-:10F9C0002A19554F294CAFEAA3E855C5C3F3DCD734
-:10F9D0001F98E3C5FCE54DC1E57D685F6D8A46E88B
-:10F9E0009EFBFEFC99647F0CB68FCEA63C6725C8B3
-:10F9F000ED5625EA25BB55C5F5970FB537DBB5FAAA
-:10FA0000385D31F6A3F85C20D84BED3C6A9CE21FD0
-:10FA10009E08D0B996C7CBF30A82CCBFF6DAE2AB28
-:10FA20007CDE1611F7DDA427E2D86F5354D5511CA4
-:10FA30006D2AAB243CAF17785E9F67EAFD18D91B8F
-:10FA40003F137836C7592FFCF5F54D6EB2BBE22D4A
-:10FA5000D9466D2EE56DEEF1E1F8C17BBD9807EF5B
-:10FA6000CEAF1A75DC0338EE8CD1C67DB5A6763ADA
-:10FA70008DFB331CD71D5AAEE1B8AE11F2F39F13C4
-:10FA8000707E5EFB92614EA3733130F56D2A6A3D44
-:10FA90004F76967EB413A70FEFB752EF5F80F9C190
-:10FAA0002A24EBFCCAF0FB0DABF6F1EF556D55FBCC
-:10FAB000C8DED9FA8994F19EC418BF24CE6B07FD25
-:10FAC000709BBD5228F8A950BCD7D15E2946BFD241
-:10FAD0006E5F4C3F6CAFCFE8B3D767BDECB4578CCB
-:10FAE000DFA0BDB244C8BB3E269F7972C5808A7232
-:10FAF000209E4C5523DC0DD0DB86E7992E85E7113F
-:10FB00002C11FAEA22A1CF82FE6C82BFB0C96FF33A
-:10FB100013CDEF6E1489F1C7D51EBABE1D856BDCFF
-:10FB2000B47F74F22FC72D7CA49AC4A4C30E6A308C
-:10FB3000ECF7562F72D8394E7BA85AEDA1BCCC02F7
-:10FB400047FCC13CCFC475E2FD5DE7FC9F755E7369
-:10FB5000BC1D4C6FA1BD627ECF80BEF7C5FA8F532E
-:10FB6000D3522C48795E940F58B8168C9E0C747C36
-:10FB70008ED8F761784B9E4B783B4F3C2B08F2EFC9
-:10FB8000A514D42A29BD98E789A13C59BC82AD8728
-:10FB9000ECE593745E6DB6CFC9EEA5BCB21DF5124F
-:10FBA000F71F93407688B9CF3B82FC9E4DC33952F4
-:10FBB0004AC6FECD25343FC15532B4BF0C4FC738BD
-:10FBC0009E781EDAC575F6FB400D0E7BC3A4878BAD
-:10FBD0001CCFFB7DDC2F32F9E09D392F4F1ECFE08B
-:10FBE000582925EB02CAE9EB490B7FB84E221FE2E8
-:10FBF000DFC7D052883F0E781FD5288F20BBFF2E3D
-:10FC00006024D9E08764ED3C807FF60F9C25B17AB3
-:10FC1000E3A6B33BBAC6E1B5C6811FA151E6D950F0
-:10FC2000757EDD394375FF2683EA11310F732D92FE
-:10FC30007CBF2DDF3760F0EEC43C02B44B0DD8A67C
-:10FC4000600EA6AC6D8B150FF5CBC17ED228FDE200
-:10FC5000B04DCDD02F68F663E8EA34BF0752822555
-:10FC60007F2F0B78ACF3AB88374D0FD27D9F05AA61
-:10FC700086E73F5F148E31A75A7702B6B9260EEF9A
-:10FC8000C7C06E33E19733C39FC2F7D6F95DA3C0F7
-:10FC9000FF97C6C7A9C6738BF79F193ED67CDD9820
-:10FCA00091D78B70B9E8BB1A7A50B68C73DBFE8F94
-:10FCB000287EAD5E06749F4775195A8CD179B97646
-:10FCC00027F9E16A76AD8676C04656473B60636F9A
-:10FCD00037C5A9CB4B6FEF42A22F4FFB01E5C154B3
-:10FCE000D0B2F7B071A76A2A66EC807ACE2119E308
-:10FCF000DEF015A0FB2459FBFDFCFB17C573EF4399
-:10FD0000FF283BDB4B71A040F6CCFBB8B1CBE3C185
-:10FD100026FC81EA23351827571B2086ACA84A29E0
-:10FD2000A846269B02740EE137F6DE88F73299E288
-:10FD300023FD44DF8440BD2AE2E26339C940975B7A
-:10FD40006B403F21F98C4AF1F7B17864C188B2BCAD
-:10FD50003C671BC2539E600348083F8F6B4D4DC8E4
-:10FD6000B1341BBFF25DDE0F7EC9EF11305FA2F12F
-:10FD7000B1E0105E4DB93256C4CBA34BEDF164181F
-:10FD8000606B66FD2B7FB9F87E8C278C1926BFB976
-:10FD90007F6D7E6F27EB5D883F46E79A76BDE11762
-:10FDA000DFB5F03BBE97303968BFBF37CC6FF84E38
-:10FDB0009CF48007625E37D9174BC96E30FD911DE8
-:10FDC000D810E3FFE3807FFFCAD97F26EF0F51EE03
-:10FDD0009F78FCCCCCAB64EFAFF31B9417E4617558
-:10FDE0008647C90DDE7CF6BC40E67191360954ACFD
-:10FDF0000FCD97A6F3FC0D52AC2B260DF9BFEBB53A
-:10FE000018E519C0DA1C9BBD6CE6ABAEB9B6786CD0
-:10FE10000E2BB386EE0D69488F6BF24AC97E0EE752
-:10FE2000F67F0DE5EB47FE5BCFF7A23CC53C87B9FB
-:10FE30004C286FEEEA483279EBF9B010748B5DE62E
-:10FE4000519B290EE6F970BCED79BAD57ECFD0086A
-:10FE5000CAB5384F514027BC5683D68EFDAAC17E05
-:10FE60009FD0F361BECD4E1F1ABFC8F63CCDEC1932
-:10FE7000EB772C461E3F007A9975FC89238C3FD97D
-:10FE800031BE9671FCA171736DE376A83C3E9A8CED
-:10FE9000F869DF9DF64055A0A63890374AFC3EC071
-:10FEA000E3F71BA2CD14BFAF01C6F08C4ECEFDE42C
-:10FEB00098C2EFBD01D96D50648FDFD708FA95194C
-:10FEC0004520FD9EABDABF1F361F9CDF13B3DB431B
-:10FED0002F21A3B079E550551FC5F13F0AEAE87F0D
-:10FEE0008D642FF7B502C58FE707FA6FC073EAFA82
-:10FEF000C0F75D1DB3459E6C01C0DF04F69E8FF711
-:10FF000003FBC4BDBE8E884C7889D78CA57B3AE6AE
-:10FF10003871374C42791897797E02FD61F3F7E525
-:10FF200015D8F21CCCD2790FB4C190E2A516BAE96B
-:10FF300093195EADF39D57D8A358D611F7C00C9A0C
-:10FF40004FD8B983F38DF97CF33D2FE24EE67C0D5B
-:10FF50000BECEB6B706BB4BE06C1BFE67CCFE3FA73
-:10FF600032E0F794F3C99C6E06E7BBC0BEBE068FB5
-:10FF700046EB6B10DF031E9C6FCCE79B6F83AB39A6
-:10FF80008176DB3689F3FF77373FDE81FBFA7EFD32
-:10FF90009A28E90361175F841D58BB8B543EDFA28A
-:10FFA000226FAACD32DF0E26070C910F6F78307FBB
-:10FFB00043A37AAA354AE5BDCCCE36287FA38CDE92
-:10FFC0003FD01AA3FAAED6D9549AE394CDE6DFA770
-:10FFD00099324FCA686FFF32C0FDC66DF9DA6557B6
-:10FFE000A15EAAF6F37B93B3BF0486C5FE6506F156
-:10FFF000011F9EBF5C0A15A8DB266FE770476AC722
-:020000021000EC
-:10000000A470FFFC1587FA5A59DDE372E9A84F196D
-:100010002FC433F9A98703DC0FF7B8B9BC87B9FC43
-:100020007B878B845E01A55E72213E2ECAA6F3FEFD
-:10003000C54B8C90C6F0B644927E532AF414DE6F02
-:10004000B9446C95D3CE8FA0C660E3460C2585DFFE
-:1000500031BAA4E87023EAE578E862F20FE2AC6313
-:100060000E1BE712A127AB5FF500E63BC0F96E82DD
-:1000700063C912BB3DBFCD97D6D03ED9561101DC26
-:100080009FC5F5F6F71E37E7C3B8E3FB068B4EF1C5
-:10009000BD03FAE656867C53677CF24040E4AB8AA7
-:1000A00038E40928BFAD165F164546FDDEC14D0197
-:1000B0002E9F4CFD369C8E393C7F10726C47EB3E78
-:1000C0008A8799F015A82909E57561D33E5B5E130F
-:1000D000432C19C3661C1E943D15E88738D7B343DB
-:1000E000DA933FDAF74D0A407DBDBF4C7CFF531ACF
-:1000F000BEEE5703F6F8EB0998F75C2964E21F1E81
-:10010000775D745889B5E9437831F1F0FFCD475BED
-:100110001166563E77DE0755DC7F2BB27D67D3FC38
-:100120007EF0C5837515540B3D5F749D9BEC1930B3
-:1001300006CA91EE8E9C13E0DF7B33ED97F46F657A
-:10014000B45FBEF8F8C6385B7EA71877A4FD72E6E8
-:100150001B5AEE8B0EE5C3637E89C4CFB10A30CF44
-:100160002DCC9F1FB3DB99B63CB7F5FB1F9430CE67
-:100170007717E6E359CEAD0B993F8FF1AEA215F696
-:10018000BC3A275C665ED5E07DDB794BB43D3A7DB9
-:100190005FB11B3F58D3B53D19074B1EA5798FD0D2
-:1001A000F4A79DF7079520FFCE5E54DCCB70C68385
-:1001B0006F94935AB18479AB296F352BA7E72466E6
-:1001C000E195F61B95641D3E57C6CE6D423C2C6DE5
-:1001D000F9760CE3775A6EE6B8F452A1BF6B829CB5
-:1001E0006E8EBAD2E3308E7D4D4E4D4D302F43FB97
-:1001F00096EFD078F347F86EFDD7823C6E7297D0B9
-:10020000E7CEF74BC4FBAFAE94E93B183E08A5A47C
-:10021000623C37EE9E4DF7F656ED8865BA1FF75CE7
-:100220003871B1151E5F29BFA70DD03B07F1B5F19D
-:10023000E3BB7B1F62A8CCF93848723447E1E35A2C
-:10024000FA7F2D386378FF273F7A91EE373F89F7A1
-:1002500059E6E2F6DDB300E3DF5BCD3A86E4B19E1A
-:100260006DD6BFCDDF0FD6672CA866FDB7220D3245
-:1002700022FBFD960B3A51CF6E95407C87BC6E01F8
-:10028000FA875B5DBCFD3F89F7F32F7CFBBEDB503B
-:10029000DECF74931FB855D823267CFD417E1FA95D
-:1002A000FF14F8BC45EC5B10F119F94CF8BC2513B0
-:1002B0003EFB738CEF209E7C9849C140F07DEC5D45
-:1002C0008BF9C6FFD00AB1ABD81AEE8AED7DF036B5
-:1002D000A0FE1D99F019CF313AF17970E5315A5FDE
-:1002E000A83488EE0D6C9C05344E06386E1D6D5F8B
-:1002F0009FCAE272EC93102F7384FDA778FAA2785C
-:10030000FEAF557DEF068DC991CEE2EEC64CF47D71
-:100310007788DBE5D923C4AB1F15F8FDBD16DF894F
-:1003200070B76BB7D37758DD12B71B36CEEE07C95F
-:10033000D2EF85106FCFE07E00E176CFE1DF470D91
-:1003400031BC638259A88AC3BF513F0298FF1D8AFE
-:100350001EA1BCD050553FF13B5D6928E07485FE7D
-:100360009A57D8678F6E59BA00E54C8E62D2E1F188
-:100370004EA41B65A84E74D493C3FBBFBCF578276D
-:10038000FA733B99FD82DFEB4816F0BC11E7FA9E49
-:1003900014F0DE13367E8EEB1B864F4FFF7DB7B118
-:1003A000FE5B27F17B39F3E5BEC62B912E2F0C9215
-:1003B000FDC59E375ABF93F307416F7F0872FB69F3
-:1003C000EB475E7AEFDC8F91E8F5D702DF9F835E23
-:1003D0007F9D89DE18BD1E71D0EB0790995E5FC9C5
-:1003E00044678C5E8F66C28BB3AE80B11DCF67D57C
-:1003F0003F2FD885E3A95F9EB7FD21562A7FBE39DE
-:1004000049BB19936CF750CD792AA4C45B418B7C0E
-:1004100037BFE34D391099C69D35733BCAB1D31828
-:10042000F704C2ED1CF7208E3B03E54B3091E9FB4E
-:1004300046DF0FF1BCF107C5BA46E29BE74EC13774
-:100440003F0D713A607CE30A9D06DFBC2EDAB37D76
-:1004500008854E8B6FEEA4D257CAF986AE2BCF1DFE
-:10046000CE3700AF74A23CEE2CE67C313EF44667FA
-:10047000B2C8C247F011BD5786EA24BF4D3E7A3B51
-:10048000F411F191B37F7884EF594D1A5C47BC1495
-:10049000D76D9CA5B5F3FB38FDA4B77B6060BF8723
-:1004A000F26C795EAB3F9934B8D9D007F87DC4A916
-:1004B000821F77A20F867ECE4C116752FB60716857
-:1004C000383F87AAD255D6EF0D1C12F37F1A8A57F0
-:1004D000E1FC3DD03F05EDAF91F6698E98EF7BD9F9
-:1004E000C69C50063A3F951EBA3CC4F3372F17F30B
-:1004F000E67CEC6D46FBD3C9EFF357FDE39B0F8C15
-:1005000032CED744FF8B439F9BFF2F0E65E6FF251E
-:10051000213BFF57E1773A33F0FFD74299F97F69E2
-:1005200026BC7C017E6F0A65E0CBEAD3C4F78F045A
-:10053000BE7FF405F1BD51F46FFBFCF86E1B01DFCB
-:10054000EB108FA781EF8D23E07B5388EC95470854
-:10055000FE901EA43876D72CD82B956484E376EBD6
-:10056000385E9D8FC3F0FE81C4E87EFE9FBB62991A
-:10057000BE4FC3FAFD83157EB3DF9C90B8270DFAFA
-:10058000F5E89FDFF5E520C5FB997EBC27F497953C
-:10059000FB0F8632C8FDF93297431F6FD9DB89FA0A
-:1005A000FE0B8CFF58263A5B2DE03E955D7058D0CF
-:1005B000075BF7E3A1BCE1F2AF47FC9ECA3DE1C493
-:1005C000C110F957FD0B515EEDFC568E84F1A82247
-:1005D000232DA19FF073A1C72A433ABFCF20FAED84
-:1005E00054D312E6B3EC6CD624BC6F6419EF97A118
-:1005F00019238FE78483C1D7172279673C8FFDE6E3
-:100600000CD9819FC94E6ACC367E1B22BB2DFE0AB7
-:10061000C9ED33EC72DB5C871CEFA6BC17DFECCCBA
-:10062000BFF7F2F3A02AECBFF86B56F97F34A409A8
-:100630003F948FF759F50F83EF9D10D72BFF8DA5B2
-:10064000133E275E4E056711EA793EDE4799F49422
-:10065000733CD36F35F7C98D3AC912D7718707ED4F
-:100660005E5718E549874CF790160979B26876B657
-:10067000B0DB353F8E7F978893DFB5E2F66A3CEFBB
-:10068000EEB959AB4014143471BDA7AF184FF14FF8
-:100690002D2CD9CE93CD72B0BFBB770A7E9F9CCD57
-:1006A0001BC179CF9D0769F41BB3D06EA078844637
-:1006B000BFF795E3E98E62FC74A3D4DDB81CF5EABC
-:1006C000C220BF57125D728AEFBCF1F893B96E88F1
-:1006D000569DA27D1BB5D702DDF49D8CD36EEFE94C
-:1006E0006ECC945F32232C9B788D8D8AD76884E200
-:1006F0005A267E87CFC3F7AF3ADE2C21BE435592F0
-:100700008657AF428C4ED05E924BFB289FE92B550B
-:100710009C5E80F925A37F67A3D3B4D7CE0BE77D7A
-:1007200071B8CC7623CF27DA39EE2BE0B917C5673D
-:10073000835C8E5143567FEF706EC6B8BF596E68AA
-:10074000D58A549775FC148F430EE64FC7A2686F85
-:10075000B500A747887AC90EA3EFB95BF6F39A30C4
-:10076000CF73DE99155F1E26F862F4FD42D0B4D334
-:100770005A0FEB772DEE2BA8AC5FE8F4FB8D5C9A5B
-:10078000BF7317D3E396EFA599FC3A369104FC1E8C
-:100790008DBF1C3489ED7F24649E13723AB8336890
-:1007A000D69374481E2FEDE679F9BA49275CAE68F6
-:1007B000815E43AE00D81EAEBF203A858D579A8821
-:1007C000E2A7F759FD2995E42FAF03D43F7588F4CC
-:1007D0008576A614637A4AAD7BEAF038E057A5C85F
-:1007E000CFAD7B8AE4DD601DD298CFDCE31FAC1B6C
-:1007F000DE28AB970CD69358DF29F4E4F670DD536E
-:10080000EDC4FFF13BACFC512DE8F02F4D7F3D7A5C
-:10081000BB86F70C925195ECAA8D0E7AF8E7B09B47
-:10082000F05FA525EE477A5874F3808A5757BCC508
-:100830009110F2C384E80749FCCEDE8479224DB5DD
-:10084000947FCFA127BA96F8B207F705785A02C667
-:100850002787F62795797FCA52B43F7E9DBF97B10F
-:100860004EFE368FBF05CA383F6B1E1EDFDB27E406
-:10087000C9536145945CBE6645DBC99FF2D6C91475
-:100880003FCEAA936D7A837E298FDAAB367AEBCF8F
-:10089000491C0C5BE523A4E3656C1DFE29911C3CFF
-:1008A0007FA92E53D7A2BFFD7D61FFB17DBA97E42A
-:1008B0004545C49FE0FBF64CC67D137839D5BEBDD7
-:1008C000D89A88D5BA46DEB74B2FE3F9F4CEE7BF06
-:1008D000137838DEF89FDF437659E91DA0EF7E7765
-:1008E00095B6511CD68CBB7AF656A70BF5A17CC0E9
-:1008F0007581F03C2C9DF3BEF8C9DF6B744FE42387
-:100900004FC6F324258BE3F9486B23F5631B4CBFDB
-:10091000D372052E85E7B1D9EEF199F7112E074E66
-:100920000C4BE2CBBE82726879A342DF77B802EC4F
-:10093000F914979B795F2D667E1CCFFB4A40F60227
-:1009400064C36549C7EF4C406C01DEB71FF6FB136B
-:10095000E27CEBEB8EBC89AF362E8BD58A76EFD35B
-:10096000FF5384BF253A97BF4B62FC3B3F97C42F90
-:100970008BD55ACEA35FFA54C99837191FC4473C88
-:10098000563B69383E96C725B7A69F1A2FA78B8777
-:10099000656AC5823C7D381E9CEB6718DB8A78FE51
-:1009A0003AC333DA9D23E183B5A3FD78E932857E2E
-:1009B00077668152EFC273902B1B243A6362F80D65
-:1009C0008BBCB8FAF32DF03AF1E8C4D7954F00DDAF
-:1009D0001BB8F2BB218AB7BD60E2277D2E9D5F98D0
-:1009E000E72796751EE3F95B1AAD73F1EC8A5FE0B9
-:1009F000F71512ED4CDAF2F5DACE019733CCE3BD00
-:100A000005B6EE6323ECBBED3CD0099F137E9FD06F
-:100A10002BCE733150D3E5A807CFCF12E763D32095
-:100A200026CEC7B2281DB734B3BC757E97CEA4B30B
-:100A30002B5A1A06E7C5F125480CD635BCAFF5B4DC
-:100A4000B2F512F6F73551FEFB87F1CB723BF0DDC4
-:100A500022307F97C8A0F3A62B04FE1A98C787BF41
-:100A600099762E134E78AEB7C8F0E941CB3ADFEB5A
-:100A700096EAC43DAAAC2553B15F72BF326D38BC53
-:100A80006BA2FC770E191D7E60A543DF24FEFD5985
-:100A9000275E4C7C350DE165DA67C1CBEF5171E61D
-:100AA000D1790DD9B9039297EEC39BE738ECAF49E2
-:100AB00037139DB764150B3B80AFDBFCCE1740337B
-:100AC000D9F74BC57DACA32E687C38C8CF752A2DCD
-:100AD00072EB3B39D5B76459FC63F35CC7FCAE9449
-:100AE00049CF977B836985D3A1EDBB5143794C09ED
-:100AF000CA6352B256E8888F2E7C3587EC9EAE2CA6
-:100B0000F49F03FCBCCAF7F4A35D97E843FBB7E985
-:100B1000AAC7BA67B0BAFFEBBF4ED2A07A0EE12DDA
-:100B200024F6AD5AEC9B099FBF9C3FB7EC1F8F9FEB
-:100B30009589F899D8C791F484B98FE6BEA11D852F
-:100B4000F4EB2B53FF9CE9F7FAE050D500F2692251
-:100B5000AA520E5D427AAD83BEC705FA4E3C7FBFF6
-:100B6000A2C565FB9DA604DED3C7F61B7DC22F89F7
-:100B700051FFE5F9BC3F9471BB7190EE93ACBF257A
-:100B80000F08BCE131B86FFDAC2FE689B1F1C6A00A
-:100B9000BE872ECB3C25C3E71D713C473F65F0DC8B
-:100BA00024168B59E4F5BE2C6EDFBE17ADEA9533E3
-:100BB000C45FCC72B937B748B5E4871DCBF736664A
-:100BC000FA7EA939DEE0F7E506EDC481A70ECD1B5C
-:100BD000B2133777BC65B713936F7D213BB1FFB676
-:100BE000B79E6A67FDFFF43B0FE9ABF7EAFCB40F71
-:100BF000B92DE7C17FE07D5B157F0390EC7BFA3E6A
-:100C00008EB7A590D623A90C73F83B627A4C427C30
-:100C1000BF891FF3C5B88A0EE910032E578D498886
-:100C2000AFDB853FCAE86C8AF53BAE6F66713BC3AC
-:100C30009CC7E38524DE3336C76574D04679A5F5B5
-:100C4000407AC43C8735F9D91CE74496DD0F3E0D48
-:100C5000FE3D91897F9F959BFFFD16B45F9F5128B4
-:100C60001FF46FA337D1F34B5BAEA4F2B2966BF9CE
-:100C7000BC62BE6F4A8993384E5FE3AFFFF64646CB
-:100C8000AFABF77AE85ED9CA6FBE792BF2A7B7850A
-:100C9000ED3B6BFFBFCC8E383800800000000000B9
-:100CA0001F8B080000000000000BE57D0B7C54C585
-:100CB000B9F89C3DFB4AB2BBD9DDBC96BC38E11902
-:100CC00025C44D801010EB86575109049F51026CCA
-:100CD0000884008104A4BAAD1436246040ACF155F8
-:100CE000F1AA7451ACB657BD4169E5B6D16E442D39
-:100CF000540AB1BED00A06A516154DE45156ABE50F
-:100D0000CEF7CD4C72CEC92E84DAFBFBF7FEFEF196
-:100D1000D77ECC9939F3F8DEF3CD37676F5C587521
-:100D2000FF986442CC430D4E8910D29C45CA5B6D3E
-:100D3000B4DC209501DCA898A7EDA4B0CE5132D246
-:100D4000398690B3F0773994276399781C0652441A
-:100D5000C84A2BFDB742C89943B77BE6D3FEE26D84
-:100D6000362F7D42FBC9B9CB40CB64AF4C1EA740A8
-:100D70004E20F3CAF228B43038D069242405A001EB
-:100D8000611A40DAAF3542679304EDBCDE7A3ABEB1
-:100D9000D518244E8011233E374B747E79BDF31154
-:100DA00050F4678DC8848C82F1F4EF9BF139AC0B61
-:100DB000DE9793D83CC4FBB9F0FE1880621E096C24
-:100DC0001E49FA7E1CECB94CEA014FFA7934254EE3
-:100DD000CA73A6009E7C230112D2692AB31332D7AC
-:100DE000F68783523E85565B58A690044CC73B73EA
-:100DF00009FE9D1D04FF5FE1FC78042112E994CEF9
-:100E0000D2A1677C23850752FCC595C8A17539140A
-:100E10004ACED2D1A369B3129317F0D93124D93E67
-:100E20004835FEE540453AEFD78D4E3BCCB36C8A52
-:100E30005C16CAC3EE53AE857EA654156D62C359C7
-:100E4000492A21F3D8BFC9EBCAF6E641B43E1834AB
-:100E50007987523ACEB3064330BF79C418ECB462F6
-:100E600013E9AC84503116F1F7E87CE74D967D71BB
-:100E70000E4D3B7296CE9334919787D0FEE74A7C15
-:100E800080202DD3F70EF3E207934F5E07CBE824C3
-:100E90004EF320DA7E6E67E574928F5536E0A785B3
-:100EA000BCDDBC80E9684FBFF47F95416D797E71F0
-:100EB000C1AB940C142FA169A381CF2E32209F5572
-:100EC000356BDB2D7CFF8A4F8803FA351EEDC13769
-:100ED000CC93DCCDF8654AA353A1781AED54B03C0D
-:100EE00063F24793092DCF24E43AE877E664D919F1
-:100EF000A6AD37070CC44727BEDF278724BAB6FD47
-:100F0000B99D7B2F07BC159B94C761ADB9E4CE6B2F
-:100F100092A17E9413F05C06CF06607B42A09DC731
-:100F20001A1A4A9F75F83EB255A9F86E7FF1471715
-:100F3000F929BDB61A484D347E22A401E9FAF28F90
-:100F4000E2B19F0FEE9342163AFF29F2377F1C4B16
-:100F5000E753F56393D7A2E0B20C40D7E95E268F42
-:100F600084F86C53283EE71256FE88941585E9F8FC
-:100F70005505874A2CB49FAAF512CAA9C03FC5F7E8
-:100F8000876ABCF9EBCB12C30AE25DF39C76660676
-:100F90007EA678FE30069E3F54E339F0FEBB235F09
-:100FA00056B5BBDB694F063E2785A4F02C45CD69BD
-:100FB00032217114E9BB6E01CFAC3D38F2E5A1845A
-:100FC000DC477C5B50EF904E63D9484A2723F145BC
-:100FD000D303A50E260753E4E3489F13C5B202F8D6
-:100FE000DA1FF8D446398CECFF469E0678263E4A36
-:100FF000EC71BDEF3DE334E37B5BCDC40778DE9A53
-:101000006E0D35D0AEDA7F74715A27D247796002FF
-:10101000D0F10F26F2B8127BBEF6804C8650C62C5B
-:101020000D480805FD0606E28871944A5F91E8F3D1
-:10103000FF1DC8319D5ACA6A6250E8B8AE20F185DA
-:10104000A2F08568B7CCDA3DD548B07DD845E7B782
-:101050005C318424BADE0289F1B3D554EFCBA04DC4
-:101060008D6DB3821904E621E33C143A3F239D5F62
-:101070004E2001CB8302490807075C08870432B081
-:101080007E686030C261811C7C3E3C3002CBB981FD
-:1010900051082F0A1420BC387029C2118149D82E5A
-:1010A0002F50827064E02A7C9E1FB806E12581598A
-:1010B00008BD81D9585F10A8425818A8C4E7A302F8
-:1010C0004BB13C3A703396C70456202C0ADC86702C
-:1010D0006CA0116171A001DB8D0BDC81E5F1817BDE
-:1010E000115E1AB81BE184C043580F0A08F010CFF4
-:1010F000E5F10E6581934A0A70B8027C1C4BEEFE46
-:10110000C1ED52B5D3F731F09D68673610BFBABD57
-:1011100068F735B71B2EA06B94FE4E73FDFC85F768
-:10112000C39F0E27BD746BF6349411B9975E969DDC
-:1011300025E10CFACFE5BB6611D00B243759C3A7C4
-:101140007DF5035BDF5FB8FEDA6AECF0C9C0BFF57E
-:10115000C41BA48F4A47BF2E413FDB14E3B4501495
-:101160007ECB7799705EA39D7E938BC2849CA32FC8
-:10117000833E991974FE7122F04B5EF21F26D2FE57
-:101180000636196004AA4A9CED13A9DE512613D431
-:101190008BDB084179DA16AFB5A7C35C0C1F84B4AA
-:1011A000EE1984F234A490D99FCE2B40BECC3F1AC6
-:1011B0004436E580BC852523ED2FB89290C785CDB8
-:1011C00080F61BE6FF1CEA7BFB33337FA199BC64EE
-:1011D000A513C9695126C65138788BEFA538FACACC
-:1011E000D0907F623C2D0F7F32F812C08B5A431390
-:1011F00013281CB12BFC1235A76464B873A28D961A
-:101200002FD94376035A0B3A9449765A1E75D0B7B4
-:101210009BB20119D3E99FE450603EA146079DCFE0
-:10122000D6C3C4DB40CBC5C75BE444A2A2BF99F8D8
-:1012300077A8E8621FDD313989FE337395B34086A4
-:10124000F78D9D71AEBCBEF4D906EB8675523BF2AC
-:10125000385D57A62F2C39557C72B54B1274280275
-:101260003ACC58DD6D84756E6B72DB917EF1CE12D7
-:1012700018B27B0A713EAA001F1B114FE6F583507E
-:10128000DE05DF51FC5E34CBAEC69B24F45A4D6BB9
-:101290005E6CFC5EFD6F86DF23C06D6362E3D70A80
-:1012A000BC32EEFC725CE5EA91E379AE31B1DB353C
-:1012B000BB983ED5E3799B81ECA1B68A8E4BF9941D
-:1012C000C91509D2A68D9CBFCF87D71FBB985DF9E2
-:1012D00077C1EB4D2EA62762E19528C9A82729BF23
-:1012E0005E4406C7D637D05F34FB758FAB8F9E3315
-:1012F00083BFD8ECA47A6E706C3D37D7C5E81D5318
-:101300007F713D63E67A5C8CF7334EB7038EB2474C
-:1013100080BEB6F58620C85909B1A35C104F32E7EC
-:1013200013673CF0C974D95902FA860C27E847279D
-:10133000E48582B04F1918540A6568064A19F09876
-:101340009E1BDA44BBCEA17E8691D29F761506689D
-:10135000559C86F974DD8942DE9C951EB5BC097BDF
-:10136000DF2B8F822FDCDB36E5307E9D45FD97C37A
-:101370007CDEBDFD48D86EC30FD3B76D52E9C16D99
-:101380001E0F9645FB58FCFB8DE0DFA675C40FF2DF
-:101390003121BADF70D02573BEEDF6019F07BF473C
-:1013A0009CE0CFB89A3E44FDE4A2FA4942FDC4C68F
-:1013B000CF0CC4FF3C48CBEFB852B17FC0E3F5F689
-:1013C000FF77FCFC948B30799AE06C9769FD406A5A
-:1013D000871490D30974EEA3015F66A4BB42181D65
-:1013E000950924047E2FC55BD800FAD7600F819D34
-:1013F000319B5B7C20CFC4ECC2F51F70F83F769D1B
-:1014000043DF3813940220EA99BBFF3ECD46F96FC3
-:10141000438E331ECAA76879B3878EEBEE24BCDCFB
-:101420006C43F9A17FE948C530DD1B807D14659FC1
-:1014300015DA0FEA2907A1BC157C92F1B47FD7D742
-:101440007B9A2862CA5DBED3301FCAD76700FA866E
-:10145000D30DEAE05E7E3E9F3F20E4B3579E9C059D
-:10146000429E2AF3501F4AEE94DEFE62F937BFE532
-:10147000FAD3ED6630967F23F8FE82FD1B3E5FE2D5
-:1014800056CEE9BFC4ED7D63CB765A5EE99195A354
-:10149000D4BFB3A7BFDD61A4652BF5373FA2658339
-:1014A000B5C308ED4AA984DA28BE7DD4C983FD8777
-:1014B00075342BC31FEC3F4EB448D398BE5612AFC1
-:1014C0001D792E3C86703D2B3D661C2F6EE89044A6
-:1014D000902B07E72B62944260C71DC54EE37CEC5E
-:1014E000AF935C4DFBBBC4CDEC82906BD05BCFE681
-:1014F000815E721B61BF6EB192A0DDDDDB3F941394
-:101500000B7BF513E1FBB89BF99EA9659D3771082C
-:10151000C8E97E16476959C3E4B2349384D6819EE4
-:10152000F011C549DBC711F1470597964DBC34FD55
-:101530006B89F8E8FCF77D2D23948690B09DEEF73B
-:101540004ABD5218F68166833504B6B424DD4ACC10
-:101550005076184216908F0F255CA7B9302104CA27
-:101560006F727A7162275DC7C97DBB6DFE28F4BFBB
-:10157000C15FE99D3C2A361E7BDACD79C509787CAE
-:10158000486972821F19F41831EEB0119AAAF4FA60
-:101590005C37F347A83F540E7C3A6341779319E8D0
-:1015A0009D938CFE1019E246BE1DE0D9B9B1044CE2
-:1015B000562DF34FD349A841ED5709FEEA74FBE7D6
-:1015C000BBE93C1EE276848A65C73088575D94EC9F
-:1015D00006BFB4A42EBD0DFCDD07D712EF0213EA3F
-:1015E00083EB605C5F526B01F0EF43DE9DBFB80B95
-:1015F000F069A1FB62D0E3A30ED9144AAF8A31BBD4
-:1016000053603D7FD4CD5FC08AC01AC48B7E1FBC9F
-:10161000D2CDF7C1F9241FF6C127BDD7248691B7D3
-:1016200092A2CA7745E036EC47EC87DF3785B39C5A
-:1016300051E5508B6F317E85C4F6B5C42431FDC7AA
-:10164000ED28D52F4DA8074204EDA6CF223D0AF67E
-:10165000E6A4779417EC762C7D23E643F138B4CCDE
-:101660001EA55E2265D1F4C45637F30F2A4C74BF11
-:1016700040EBA51563EA615E15769B047C27DA6D65
-:10168000E2ED043F8B78959CF8CD18A03FC407A3EA
-:10169000AD7F1E319E52C7A33681ACA5307C79A3A5
-:1016A000F82BB1F075D0D4520AF33AB850260DB4E5
-:1016B0009F93FEB16924CAFB02BE077C43E9B22AAC
-:1016C000898DD743CF21D1F177706D8D77B2A997EE
-:1016D0009E7DEA2BE3CAC17E97031E55E31E70333D
-:1016E0003B7F8C4362F12B4E5A6F9E7FBF938C04DD
-:1016F0003D756A4CD00E71B1EE5F3500BD7F6CC791
-:10170000784579E5E9310D2355F82C266824E7ED75
-:101710007ED0A9D0E7E5439B5282B6D8783C0678C4
-:10172000A478BA031E8CC378CC1FDC17108F2179E4
-:101730006EE437B23BCE1B8678E45BB217FC06182A
-:10174000D78FFA93C5935739D9BCE2747E5E79601E
-:10175000B946BF244424124A52958DAD189F4D8836
-:1017600018F1B95EDE9ED2C99BC07F2C7A0AFCEBD1
-:101770009FFF9EF3E5C1CAC50AC40DCDF1D1FDE0BE
-:10178000EC2449C3576FAFF56BC67BE75B59B35F7A
-:1017900016F0EFBCFF93FE716910AF2A370787F68A
-:1017A00047CE057EDEFEE60127F41BF79525AAFC51
-:1017B0009DE2F689DAD3E6EB14953DBD516E02BC8D
-:1017C0002718B97ED3C99D0FEC2AC5E7E56057E914
-:1017D0001413CE6357E791603BC491F5E30B7BAAEA
-:1017E000E72F615FF574137CE049A2F44BE8A59FF5
-:1017F000881BC6922F21579D5CFEF5F8D7C31BCCE2
-:101800005ABF47C0CFB99C9DF4C79120D58F379759
-:10181000C82122217FA07D3C78BF84FE66B8D28299
-:1018200076B9AA320EE3B3550532D657DD29A3FDAA
-:101830000C53FD504BE7F347AE27F4F1D912227950
-:1018400027ABD63D63749CA67CE3C27BFFB816E24F
-:10185000CBC52605C6DBAFB07873D027A3FF4AFB04
-:10186000F086213E7DDF655EB067821FF6FB6494E3
-:10187000B7E09BB21786EDE0F1E8FDCD052119E850
-:101880002CF97BC6510643FF550AD0E15DCF1627E0
-:10189000E8BBB86F1F282BC3FDA35F2940BB499D40
-:1018A000553AEF382EA793D28BAF073BFEC1661394
-:1018B00081B8D107AB4FA23C77AEADF74E1EDA1B15
-:1018C0005F16F1617D9C591F5FEE1357D6C59305D6
-:1018D0003FE8F9A422067F087D158B3FA81EAB4A7E
-:1018E0004AB9703D26F4C77B7C9D93D2B7DCD940C2
-:1018F000F190B040463C08BE7CF79BDB1F013D1CCD
-:1019000047F9631DF0F3B74FBC02FB10B2588A1AB7
-:1019100047DEDE63F7285D727BE972A37F714F19A2
-:10192000C47F76CD8A9E32AC5F6F5762EBB573EBA6
-:10193000AD61492C5EA1B73B7A79F857DB9DF2CABD
-:10194000FB73E1FDF2CA8521801BD3AD35A07FF585
-:101950007A426F27C47CF4F34C88C824344A3D6F24
-:1019600005DBF5DA0933D607AC8E7C70D6CFC431EF
-:1019700018042710FCD2C371A1461CAFFE92329C02
-:101980007FFD588001E2ED0CC2FA3CF1183F68C9B6
-:1019900064EDE52BE2993F3EDA8DEB9485437ECAF8
-:1019A00085E546BE86516EFF734914BF8D3E431CCC
-:1019B0009C2B4CB21BF742C8A565A28158482F9EAC
-:1019C00084FF4E203240D78B7512EC3B0BACE6C146
-:1019D000E89FFE16FA216BE8BE90F2FBBE7DF2CEC8
-:1019E0006D7489FBBCA312A3F9E702CEF1FC10F5DC
-:1019F000C2F5812A84877EF04E36C8EB2D92FF55C2
-:101A000090838EF2AA3BE15CB86E978CE74A736EC6
-:101A1000797718DBA769CF2765873517E2288D52BC
-:101A2000BC17F488C063BBDD8CFAA5F110D3838D9D
-:101A300047245E66FB889779FDC9F7EDB8CF10782B
-:101A4000A7EB790BC6F7DDEBC2F5887DC677584F5B
-:101A500027E027F67A329DA82F80AFE4DEF9CB7617
-:101A600023AEAB8BC47B61FE011E0F22EFC7A1DF4B
-:101A70002CE85BC7F94FD07739A76F57DBE99F5C3C
-:101A80004ADBB7F8DC78CA2067115C6FD7FB09C85E
-:101A90001F62BD940F4EC1FC76B7313BD172D8CED8
-:101AA000F0652FCA85F909FFDA99C4FC64FDBA2BE9
-:101AB000C43E9DFB19E0DF429C62917BE2D9A431D8
-:101AC00051DA73BF96E2D9904CEB4B9CE45488F406
-:101AD000E2598C23C615EF3992B57E4C058F2BBC8D
-:101AE0006F22E5104F84710B55F35BE32E7124A731
-:101AF000F41DF73BD07140F239F9524BC73AA3AD10
-:101B0000594A243DFB620CA5297DE55C2F67525B99
-:101B1000FB57703EAF97FF33867A22D17E6F95FDDB
-:101B200007DD1436FA49A765705F79389F1EA1F466
-:101B30002E484EE9AB4FFA4BE709C952CF3E86D348
-:101B400079427214BD27F03DDC5DF63DA887F5674C
-:101B500014E23ECF0774073D611E84E3215F76BB2C
-:101B600048E851DA2889C751C47C202E1147DF9BF1
-:101B7000999C83E34A461234D17252AE5702BDDFBC
-:101B80000F3E98F92FE6839B92CF29CF61F44B96B5
-:101B9000717A2F1379163BCF9D67D10FBAD5C03A12
-:101BA000CE18BCDDFE9C0BA7DBCDC97DE4F3E6E4DB
-:101BB00073C8E770B7FF1618AFD14C4EA11F5E5C1B
-:101BC000E981F10E387C9F24D2E72F36707D924355
-:101BD000E946EB5F4996515FDD432E463DFC3D8370
-:101BE00001E7DF45F5EFA339D1F83E6874D3F7CFAD
-:101BF0005C4DF03C8EAE6F3DE3CBA004CF6F9D47B4
-:101C00000CF0DCA33410C305E8A196BEFCD9722EFB
-:101C1000FEA47AE85EA8A7FCB80AF8D1AA388DE736
-:101C2000D2433F4BD6DAF97EF0DFCFD478FE17F0FF
-:101C3000DF2FCFCD7F17CC57CF45D307828FC5BEBF
-:101C40002056BE10954792E1EE3B2E215E3C0F2BB5
-:101C5000715899DDDD21A19D6D3C52E0C7B2DD8A4E
-:101C60004A41D8E1133B59BD3C31BA3FD896EC66A6
-:101C70007906AD2BBC464D1E48109FDFE53BE11CAD
-:101C800042F5E254D986EB4B2A65F143B17EAA674F
-:101C9000A74F49E57153BA9EA42C868724EA0FC04A
-:101CA000399A83EF0F128B8D1ABF5FE0ED56B94C56
-:101CB00082B8B72B9940DA0DF5EB570F87F37B9776
-:101CC0004FDB3E856CFE52C64108CA839BDA6F88A3
-:101CD00063254DD3B5837D483EB4573DCFE9BB9FC7
-:101CE000F83899EF27CCC4037685C815E7E41BD5EF
-:101CF0007EE2F3E47EC4454E261BF8798AD67EB593
-:101D0000C691A871818614BE2F38E542FF57E6764A
-:101D10006B72670EE6A7ACB42B182F9065AF757A7F
-:101D20004EDFF75D3E035154EB4B9A164F14D5FE30
-:101D300021A5CCAD29A795A76BDA0FF00FD2D467F8
-:101D4000D45CACA9CFAA2FD4940706C66BDAE750AF
-:101D500001509707375FA9693FB4E56A4D79F89656
-:101D60009B34ED2F0ACDD7D48F787289A67E64EB91
-:101D70004A4DF9925D3FD2B46FE4715F3D5E2673C8
-:101D8000BC361A99DE69B015623CB2D1A68D4766A1
-:101D9000F37625891372210EDEF861412EE0FB6592
-:101DA000C7788C8BC7E20BBD1E8BA53FF5CF2F4BA1
-:101DB00061FAEE8B97CC069083E5BBA9BC5E42CB63
-:101DC000B6F736C09A9AF3D879AA91B0FC1E71BEC4
-:101DD00022DEEF395F317A597CD561239BA2F04531
-:101DE000768A1235FE29F82816DE1AFA89B7297C78
-:101DF0001DDF156FEF4B2C3F55ADFF774499D79AF8
-:101E00001416DFA2F6655E0AF37746C7A327EE44F1
-:101E100079BC50FD2FE641F5FF9214F443DF98732F
-:101E20002BE8FF9D162FECC9BE287FA3FA0105DA27
-:101E300057B3F6066F2ED02556FC7B4D4A9FF87798
-:101E40000D8B7FC76BF0562BE45D17876B747C8D11
-:101E5000F1EF46B337B73FF1EF5AD031294007C60B
-:101E60001F3DF4E5F1F358FBA000217B25D8F7D8FE
-:101E70008C0A9C739D6F5F4BF7B3B9709EDA02FBBF
-:101E800026D53E87EE6FF9FE260EED02B57BF7A64E
-:101E9000A0DE237B15FAFC0CDDF76E52A028EC9F28
-:101EA0004FE3975B88D76A96919E0FA6E07E97AC2A
-:101EB0008A93215E16DE3721E73BD9F3ED291760BF
-:101EC000CFC9F9CFE5D0EE94D2F5AF8BE277E9CF69
-:101ED000E17AFC6FF0D3243C8F433CADA77611CE62
-:101EE000E3DA53987D5E7F88ED93D71F99E541B97A
-:101EF00049293AE7395C7FF5CDAB297DFCD25753B0
-:101F0000CEE1978AF5AFE4FBDE29725E2BC41B4F4E
-:101F100044CC883799B0FCC8BA3D2612427AB23C0C
-:101F200063414753644307D86713D1E7152B89B042
-:101F30006ED31E19F5134966F541626D003F27B156
-:101F4000586BB75C3EADDD4A9AE6D6D931ADDD4A75
-:101F50002BD7DAAD017EADDDCAA829D4D931ADDDEC
-:101F60001A1898A8B3635ABB35B8F96A9D1DD3DA1D
-:101F7000ADE15BB476EBA290D66E8D7872A5CE8E75
-:101F800069EDD625BBD669EA0BC29B34F5A3F6DC16
-:101F9000A3298FE9F80F4DFB457B9FC3FC9BB1073D
-:101FA0001FD5B41BD7F94B4D3B8AF00EC8D35E80CA
-:101FB0002421E4D263CF6AEA17703FEDB2EEDF6806
-:101FC000FA212D2CDF3A48FF037AFD95F8CDE09CED
-:101FD0001849F7AB1994AECB4392374C9B2DDEB525
-:101FE000A308E6F1D9E12BF6403F8BB668F3B417AE
-:101FF00087B4E53A322811F4431DE58B10E593A52B
-:1020000090BFADD26B4B49BD03F321FAC9678BF684
-:102010005E4330EF33E8EB80FC74B14EC16F3ECECF
-:102020006F627E62BD4BA9DF17567AD7E9A3FFB175
-:102030007D64A719F8B67A9744FE43EABB9E9AB628
-:10204000BB37644459977E1D7ABF734CAA368E3DC8
-:1020500045B6615CFFC49BB297C507B572B8722FD5
-:102060008BE7AF7C5AC2F89A1E1FC22F8D85173995
-:10207000C8F60975C9241452C99FC2F161F168E517
-:10208000EF04FC03E6F3B01C82BCA038255ECF6FE2
-:102090004561D217CF09B95A39D5E3D9EE4D8FCA68
-:1020A000570AFD0FE6514DD8B9949EAFF4785FBE44
-:1020B000EB6E33E8C50BC5FB8254EDF9A0383F2821
-:1020C000A1AB3547C9831378A5FBF225A929B1F740
-:1020D000ADB7A45EF0BEF596D47FEDBEB521F51C7C
-:1020E000F1B32E889751BF521F2FEB1B1FDBFD95BD
-:1020F000E4C038348B7FF9BD5696AFA2B393B91EB6
-:102100008D9DECD9F77E28851A69E7F50E5F0BAC3B
-:102110006F85C37737C0990EDF3DA92AFC3452BCC6
-:10212000E0FD1C6AA77644F10FF7A50ABFA80CE3EF
-:1021300022EB4B587B7DBB5FA7B2FB40ED29451ED0
-:10214000F43B8F1430FB692F3AA7DF79173FCFB9E3
-:1021500003CE0B87F6E6F1DCC9CF55A8D8F9806E1F
-:10216000EB4D651E759EEF83A92E1CCF31EED90E67
-:10217000C8776E741A9C9202FEB301CF459B7CB661
-:10218000693BF3D87BC99AF7D8BD2319F00DFEBC83
-:10219000CDF8B59A6FF7515C42BFB1D6B92F95F91A
-:1021A000BB26E2B382DE15E7B9A60F0BACA06F8D9C
-:1021B00092D7192D8FD3C4F3A426F2F35CD9C9CEDC
-:1021C000777BE4FC3C7952373BFCAFA9F9549CEB9C
-:1021D000CE76F8F6C1F380316801FF32608DBEFF24
-:1021E000FD13A7E35DB03EA4A70DF908C797FB1543
-:1021F0003FF9732AC6E58298AF78ABEC3D06F1B99A
-:10220000FEC6AB3E4EED13AFFA58CD877AF9A3FE6A
-:10221000E72789908797986EC4ED84D19B0BFCDFEC
-:102220000CFF1E87F1D5CF61DD7DF24F1537CFA7AB
-:1022300055CE994F2BFA2977F94EA5B2BCBFBFA551
-:10224000B2BCBF2659D58FE33CFD503CE5D6DBFA46
-:10225000853F396D0CC6358FB160C285C5351D69A6
-:102260007DFC4747DA39FCC733878627C279B288B5
-:102270005BE9DB59034999EAFB31CD2EEDF81B0AE6
-:102280005979001F777922E3FB91698C8E220F50D8
-:10229000C4ADADD3890FEE3BDCC3F3B3453F23D3CD
-:1022A000ECD83ED53D71645A0A9CA749B8AFDCE032
-:1022B0009234FBCB4F524B46C27A86F3FE47A6318F
-:1022C0003EDD3688C567F479902778FB13A9131192
-:1022D00052825D04F834CB72543C16A6B1F97F9259
-:1022E000C8E45BC4CFAAEE67F7BB44DC4CC4010969
-:1022F000F1BE9D40F5CA479B4D04E25A0B65DB06D3
-:10230000E0C39EFB73FC5CDD49FF037B5999578654
-:10231000F947DFF5FE16E033C1DDD75E5E99D6E3FF
-:10232000A7782FF01ED7ACB40B386FEF8C677CDB2F
-:102330006DB7613C5BDF6E29E787CD3C4E01FA1A31
-:10234000EC865B26F5D1ECC7528EF733872C3EF432
-:1023500063A6C5633E8738FF3052FE4C74631A781B
-:1023600010A035909109F7897ACE3F1482EF25D9D4
-:102370006CF89E5121613B5C09357A25C82FEB34FE
-:1023800077AE4F83F95E2679E1FE405A85B33D2D45
-:1023900019EE112A28661B7288A318EA0B0C58EF55
-:1023A000BAD6B9C10479D70A81936C62A2E3D8E99D
-:1023B00038F7A6E5B07505AF694FA3ED12956E32FB
-:1023C000280FF48873AA07E4B89CE5AFEBD7D7C40D
-:1023D000F9D5B69EEE1B001F4AF43CF0A63483C824
-:1023E0009B6F047E2D51C84E762F8AE5A1429A3507
-:1023F000E60B7A59BE7402E41B0D667A06EA7FEAA0
-:102400009AB411DE13F225737C03DFABF3E1EFE541
-:10241000E324E9E453E0930ED000F910C6E904F98F
-:102420007A6645F4F93EC3E9BCCA51F620F0CFCC38
-:10243000090D98E74EBE397B562E02A797C9097D34
-:102440009F401C222E99E9DF3845417D4C9C12E6C5
-:10245000995A156F0D94E36CE39D32D83D0B3F2FD5
-:102460005C6020462A6F93783FBE72227D9CCBE24F
-:10247000AC4CBF1AC9C7422E648E9C22B09FEC8F11
-:10248000FA459B13E87A26D9F6E13962DC90FA1214
-:10249000B857F0CA3CD6C73D31F2F63FE17ACC2DB1
-:1024A000FB3D06F0E9837F79EDE50948E78BE1869E
-:1024B000E61DA6CED7F65CC6E3E7982FDEF99A2F85
-:1024C000EF9FCF2F7F2DADF3B5A6BCEFC2FF5E0906
-:1024D000F4F82794B160DE7AFE17FAECA0EC3F78AE
-:1024E0001BC5FF7594A90285008DA402E9CDF28772
-:1024F000AEE5780E7E4DF16CEDC5F3756D7B117F09
-:10250000074D74DE747CD344866AD38F12793E46BD
-:1025100008C7BDDEDA3205FC9B2E73773E8CDBF5F7
-:10252000C23B5941AA4F0EFDF8A49D50FEFBC0D8F6
-:102530006D87E7C756BF61F751BC1F5A2DE3FD37C2
-:10254000BC97ACCA07FA9CCBCB959EB2A3C057F3FD
-:10255000D67E5BA4F6B3492005EDEEE2900C777CC5
-:102560007BF4DFD2271338D3B1F2B2D6244D59D839
-:10257000E36596E8F7C40779985C2C7E6A9B19F2AC
-:10258000E1AFF4F8FF06E31FE3F906C776DA717FDF
-:1025900025E633FFA90233EC273F68B39030F0BD46
-:1025A000B1C344304EE59B2E51BEF5733ED4CFF3FC
-:1025B000D51713B0BF85F7CB1847AAA46305285ECB
-:1025C000FD6D8BD9FE56B78E858794A9A0AF166E88
-:1025D00094485061ED5753BAF903B7E3F98A7E9DE9
-:1025E0007AFB729AAC36831ED1DB9705C4DB3C01C3
-:1025F000EC568BF6F9A2B63BB0DF45E7398FF178A0
-:10260000F8FEAC888C3D3B18E2CC83305F3096BD41
-:1026100039B69609E5A76BAD088FAF75223C0ACA9B
-:1026200094E279E9AEF6573350AC3B8AC00EC5ED63
-:102630009D64BD89F4FACFC66DD7841F52802FB533
-:10264000F990151CCFC27F5EC4EF199CCF7FAE807E
-:10265000759E231FB2A29FF99027F68CB2C2F3F1A8
-:10266000021F63293ED0FEE61D50C8F9ED6F2CBC59
-:10267000C47A6F197CE7200A9E85DC1CE5FA7DC1CF
-:10268000F6591BD2E9041A5FF86B7627F2258B43C3
-:1026900088732AD9B3A103D62F135DFC2F48DE24FB
-:1026A0002AFED5F3E722E26576C7C6DEB3F2B84468
-:1026B0000F5FB6DD8978157C04370A0C1E80618FA8
-:1026C000A1B8EF7703FA7C1FA0455BFEC2D4990D39
-:1026D0007A63912E5EF085147DFF35DD3388AD5F22
-:1026E000F14D85BC8885A46C038BABB7A09E3A6680
-:1026F0006C79F53690E7ED4C9E963DFFF4AF414F77
-:102700002DF9AFFB1DA0A73E31B6A4C278B58FAF9F
-:1027100077805E3F660C3AE0FD4F4272D4FBBA4FC1
-:10272000787ACE056C9017B61C590C042C3803F43B
-:10273000E4DF1E3739218E5AF7A4256CA1F858BE64
-:1027400093E191968FB0F2ED88AFBA5D5A395CF2A1
-:10275000C4FDA90AEEE783191C7F19A0AA976F3759
-:1027600061FEE8F237652F0C5347BA717DFAF761C5
-:102770001E114AB7BA56B9D29CD8B79E7A3C669019
-:10278000B3BA9D8C4E753A3FB386EB653DBF3FE0D3
-:10279000E17E26E7738A178C87897C561262FAB924
-:1027A000F1170FE41FA1F33ABEFD358794D7CBEFA5
-:1027B00004B22EC12F6FAD9A077906B1F8FC0B2E2B
-:1027C000173D7A9FDB1965179D18F8FE6D0CD69A98
-:1027D000C28E4B293E6AB799BC41FAB8F669D967EF
-:1027E000033FE95D0B7EDF61E9D3AFBC3D9ECE6F59
-:1027F000E90E53F274B60C1BE86741A73AE0EFC24A
-:102800005EBA2C79EE1533E441C2F3D5EE5EFA2CB4
-:10281000DDD16E86BC4A3D1E27B5B69B997CE9E8A2
-:10282000D47A642AD8E5C65F9C31031F7CF2A244A7
-:10283000C085D4BF5FB3ED1507E80FC013D80F41B3
-:10284000AF1EFAF5A15B78C66F46633B279CD3C4E5
-:10285000A25F00E63206F9FB99DFD0F16BDEB378B8
-:1028600061FD35CFDCEC8075FCD558CFF8FC91F5D7
-:10287000A9608F6B4CC1542742F6BC66EB0F90FFEA
-:1028800016BDFE8354827AD33700E497AE7300AC52
-:102890006FE1C3D7E1FAAA891FF9AFE611B90CFCC1
-:1028A000C4D346322D9A9FAF0C60FAE9AF8F5A70AD
-:1028B00053F0573361DFE1F893CCF2F8C80AF443E0
-:1028C0007EC0D74A3531964F5B199D4E79C4FD7550
-:1028D000A6C7EA78ABBAEDB7A31EFB34CB9706F2D6
-:1028E0004EF1A08DA7BE3E258DEB3FFC5E0ABE4794
-:1028F000F96E123C87F61D265F5CBEE63D9ED7CA88
-:10290000C65FC5C7A7F38E87B8DC5F53B5FB570119
-:10291000670C107A807410357FC592FBED1B91AF68
-:102920004EBDC9F4CAF2D0AC6958DF610AA7417D37
-:10293000A8FD5A09F502F52FA2C9F57613976B6D1C
-:102940003D9DA75152E3F745762FAEFA3EDA4EE5AC
-:1029500087F4F28DB9F7794EAF7C8AFC8A453AFF4D
-:102960004C40BD5E481FA0B57FE27DF2704AD47B2B
-:1029700058BDFA20887C516B0AFDFC3F408EDFB5C4
-:10298000E03DC3DAA74DF8BD9CCF9EDAFDF64D942D
-:10299000DF3F6B15F2ABD5B37AF9AD79F63A124D4C
-:1029A0007E3F4B2E2351E5973E8F2ABFC92C7FFFD8
-:1029B0007F5BCF2E8AA167270FD0EA59EA4F245EAA
-:1029C0004A8B9FFE72E940DC67E9F02AF0A9D79BA9
-:1029D000873C0AE257AF37E9DF9B448547813FC117
-:1029E000974BFE73198ED3C3BF823F05FFF6F0A746
-:1029F0007EBD5A3CEAEBE3E0CE514A2FDD4DEBE8D9
-:102A0000FE1ACE5D5F90F1DCB54BE976B8212ECB96
-:102A1000F36EBA9CBCEC62E5EE14F306D01FE279CB
-:102A2000771CCB43E82AEB76B8547EFD9136D9016A
-:102A300079F59DA1E8F91298499102B74463D53719
-:102A4000F0EFD6D8B203B02F6B61E73D0B1A6E7072
-:102A5000803FDDD536786639F8F17B65F4A9BAE2B6
-:102A6000797E55D0671C40F15AC5964C8E91E04F47
-:102A7000C1CFAE6A5B3A1D368D0B366BF1516DBB23
-:102A800016CFB3AAEF33F5F205017F2764063FABFB
-:102A9000E661EDF325905705F4D1F1911FF828CAAE
-:102AA0003D8C3B051F159002B64FE6E7555CAF4DD8
-:102AB00091F3669643FEE21E764FE2449B4C36C08D
-:102AC0007A9FE2E757C114E4CFE5948FD571CEE346
-:102AD000C067C363DBEFE3BF3A54741B6D52FBEB7B
-:102AE0003FE73F44E1F15FBF3BECB7507EFE9DEC1A
-:102AF0003F93BEED27BDF8D55CCCA37CD142605F8F
-:102B0000D4F5E2EFB36F83F26F2C5E9867D73AB6D5
-:102B10003F0EBE6847BBDE95C5FCBFC617CEE47747
-:102B2000A27D6A427AED1AC0EEA99E68FBFB61099C
-:102B3000F2E9DAE8AAC0EEF27D57DD6FE2707FDDE0
-:102B4000F5C219CDBEF2BBAE6739BFAFD46527E57C
-:102B500070BFB8CBC5EE77D6FD76DC63705F71D9F8
-:102B6000CE767315AD9FF4BB6FF341DF743DCBFCA4
-:102B700009EADF6E05977AF780039B4D14CF5F80DB
-:102B8000CF974EF71FE989A5700FA32F5E181EBAC5
-:102B9000281E605D142F35A02763E1E3BD01ECFE24
-:102BA000C8BF1F3EBE9C0BE3D7B68D25104FEFC5A7
-:102BB0008BE463CFED987741D7CF9EBF78261FFC7B
-:102BC000A3F3AD37F2FFD97A53D3FF5DD7CBF87DAE
-:102BD000EB00667FF47CDF97AF9FBF05CBCFD8BDFE
-:102BE00038DF7ECA7B51FABFABBCFFEFD0FBDAFF08
-:102BF000B3F4DECBE96D77C2794AD70BDF66930B6E
-:102C000058F7CDFF47D7DDE3E718BCD6D1747EEF88
-:102C100091D0752552EC3CCE50BA761F3183FB1112
-:102C20003392ABD17F98E163F1954652B807EEA994
-:102C3000057D329E3B60320DC543C7B50521CCDB17
-:102C4000320687FE14F2B8AE5FE665DFF9D2EEAF6A
-:102C500066A44E9B06FEDBFE063A2FDA6EBFDDE071
-:102C60006CA44B98E993D1DFA310FDBCB7265E8519
-:102C70007921338BB5FB8C9B74FB861BCAB5F5D7CA
-:102C800093475320FFEEFA1A13E60B5DA76BBF269E
-:102C9000DD89EBBC81D4AF67F1990BC353473ADBB5
-:102CA0004FF6C5C3B9F1D6074F7C3F89B93C4A5F9F
-:102CB000BC59FC6C7F69A115DCDFE279722BFB85C6
-:102CC0004FC2F79D163EB4C0AFC5C7BED7A9EA171D
-:102CD000F122F07EA1F81674D2E35DE057E04D4F8B
-:102CE00087C7E04C42E58FF7429147E227EA7CCB69
-:102CF000193D7EA30DF178603BBBAF70A0B86A733D
-:102D000001949F92D05F3B3D6114B1D2F5EE3791B3
-:102D10005DECFE974F7116F5E6B348C5BFC7730566
-:102D2000C82754EF4B219F50BD2EC8275497219F91
-:102D300050DD1EF209D5F5904FA8AE877C4275197B
-:102D4000F209D5ED219F505D867C42757BC82754E2
-:102D500097219F50DD1EF209D5F5904FA8AE877CD4
-:102D6000427519F209D5ED219F505D0FF984EA7A79
-:102D7000C8275497219F50DD1EF208D5F59047A82B
-:102D8000AE87BC417519F205D5ED2F8FBCA42997EC
-:102D900090D734ED2759DFD094A738FFAC69FF7D79
-:102DA000CF479AFA2B94CF34F582FE57E59ED43C58
-:102DB00087338B6011EC63D85FA9F7EF9A7E8CA400
-:102DC0000CE3CC66528FD00AF15B0AE3492B421B1D
-:102DD000157380570EF35F9C01FCBA35B801986BF0
-:102DE000FFB833D9A0FF0F4CB886C51FF839C14CC6
-:102DF000F8A7429938E19B4CD8D78A734F474426AD
-:102E0000E151940F2312426724818493281F46E2E4
-:102E100010BA2349F83C29E242981CC9C0E729911D
-:102E2000010853238311A64572107A2223100E88BD
-:102E30005C84303D320ADFCB881420CC8C5C8ACF96
-:102E4000B322E310664726E1F3819112844AE42A13
-:102E50008439912B100E8A5C83ED064766211C1283
-:102E6000998DCF87466E44382C52857078A41261B4
-:102E70006E6429C28B228B115E1CB919DF1B11599C
-:102E800081302F721B3E1F19F921C2FC4823C24B0F
-:102E9000220D08BD913BB05D416423C2C2C8BDF89C
-:102EA0007C54E46E84A3230FE1F33191071116459E
-:102EB0001E433836B20D6171E43F118E8BFC02E186
-:102EC000F8C873F8DEA5911D0827447E8BCF2F8BA1
-:102ED000FC37C2EF4576E3F3CB23ED087D91D7F0C5
-:102EE0007949642FC2899137F0F9A4C8EB082747C4
-:102EF000FE8CCFA744DE453835F211C2EF478E2055
-:102F00009C16F90CE115914F105E193989EF5D158A
-:102F1000F912E1F4C8DFF17969E42B843DFBFD0986
-:102F2000B1EE25FA0D6721AE6573F7EB3B5F846C5C
-:102F3000D19C4B3D90E0403D397335CB23D9507245
-:102F40007232FAB52B2C0AFFBEA64EAF7E6303FF8A
-:102F5000613DD40C607D401EE01CCEBF078A77A780
-:102F600080BFB4A1B0B316E22177E6745600BC2F3F
-:102F700083F90D776430BB784F068B97560E73B28A
-:102F80007B062B86E2F91549EEDF3ADEE4F659B40A
-:102F9000BF398B976DDDD9782FA09FFDF4B7DDF990
-:102FA000F2A37E98E17F2203FD22FDFDBC7EBFFFE0
-:102FB0005FA827FEF9F79F3FD7FB1F707AA564969D
-:102FC000FD16E769F4E543FDC47503E464DA4FE5F3
-:102FD00066C90976B2AAA9602AD0AF90F8309E38A7
-:102FE00027465E5727A7DFFC7A1381B8E27C85600D
-:102FF0003C77FE4E96E70B71D052CA17359C2F9640
-:103000006DDC610617B4A67E11CB3F0AB1389395EB
-:10301000FE07FCBC64F32CCC3F5AFAA436FE540BDA
-:10302000711D19CE91B5CFEB789CA9CFB9822EBE78
-:10303000F46E068F2F7959DE11913371BDA7E97AAD
-:10304000219FC37F8BDD0AFA9FE201CF49C4FA4575
-:10305000BC52E081F4BDCF8079A127F60CC53CB508
-:10306000138A9206EDFC549C3A6C90FFE01F0BCF44
-:1030700029FE309FA4BB2101F3918E507DAE40E22A
-:1030800093D33F16BE9FD6F95E16E1DF6FD49E1B29
-:10309000583763FE75A5890E4CDB553E9E84F71F9D
-:1030A000697FF9BB201EF9B809F3818264A58714F2
-:1030B000F73D57285B6F42FE98BFCBC5F2C382BE77
-:1030C00037215F5FD0E348D3E0A9905734BF39A7D9
-:1030D00000C36EBB4CE8E789F35241A7BE79D165C6
-:1030E00089F07DC425CDAF233D29BD34F5B59BBF07
-:1030F000C4FB03945E4763D0EBE8B9E89598A9A5B3
-:1031000017C4956F80CAD54928A715EBC243EB5564
-:10311000FCA88FD3934C1BDE7714F9C4D3D2193D8E
-:1031200088D19B0A743DB9790CD24B4FA769FFA88F
-:10313000427A90F7ECF8BDDD3983C9BCABE9F3798D
-:103140003C6E39A7F10AF49F7333991E3BB0167297
-:103150002D09797DAD95F8A8F3FCC65A2796DF5A5C
-:10316000EBC1F23B6B1584EFAECD4578D4CCF27950
-:10317000843C5106C0BCBAFC4C2647F999625FB545
-:10318000CA0371E969FF78638C0155A367C6942C63
-:10319000F4BB35791AE5D76AF3303A4D3CCF6BA3CF
-:1031A000E485EFA8CC2FBB54D39EE48EEA2D83FD9B
-:1031B000E07923F39B5DF8FDB61BA72769DA5FDF93
-:1031C0009CA1294FCD5410BFB3A60DD63CBFA96218
-:1031D00084A65CC97F378158E30DEAF329EA19B167
-:1031E0003C6F276B7BAA7E6CDAAD74FC53FB4C58AA
-:1031F000AFA7C7517310F7E3C1472D5EB043C7E0D7
-:103200001E192D1F7B4B467D77CC44824EAABA8F68
-:1032100049A409203132793A7D90C9D3B47FC804DA
-:10322000F6E1E497163CBFABDA229120DCA1EAA6D6
-:1032300098A7E3AEFA8505D7BD608B4CFC785F4953
-:10324000698573EB558F0FF7C2B9E59CC1E12CB8C6
-:10325000B7D7FDAB38EFA3B4B6AA93BD7F8CEEAF62
-:103260005D90972415E2F9C1E7A52DD506C83790E2
-:10327000F7A5809C7EFEAC8CF194C52BDE2A728271
-:103280005E7BB5F5ED623ACED11619C7FDEC49CBA0
-:103290003619E5DD9706DF75ED5D7708E30CAF794C
-:1032A000CAEA32291F7C5A1DCA47BDB39AC5B7FB6B
-:1032B000E287AE17E80DFCAAD263BD768B9D9351D1
-:1032C000E53300F44395C98BE7A647379BF03C8F65
-:1032D000EA7F3CFF3FDA926460FAE759E4BBF946C3
-:1032E000C5AC1E77FE66D9C77E174231C37CC9DDE7
-:1032F000B29F8C8532CB5708364B7E765EA3A5EF06
-:10330000CD2BC6E2FD627DFE94805F5099F2ABCE7C
-:103310008196BCC0CE67C9E84EA33A7F5CC457888B
-:1033200087F52FBEE3533BE8819F4CA0F0848F7D4F
-:1033300072F0F4763BEAC7E386978A6EA5F0B3D2C3
-:10334000E0C7464A977AD9FF5026E4EF18366F95C2
-:10335000F05CE4A39FC079FCA74F9BBC28863C5F30
-:103360006BC92F170F3C577E10CC809D2F8753259C
-:103370000F7C959760FEC66CD2CAE3032176FE0FE0
-:1033800093A0F871D6B273AC8FC6D837C13DDC2A92
-:10339000DDBDDD8FF8BD856732258D7D3ECECB55F9
-:1033A00006269FE445F6FD45C87B19A2B2A7429FB9
-:1033B000BE90C9F2497AEC2A6945BD52CDBF0F5C77
-:1033C000FBA485DDD3518813E47131230FF90AE49E
-:1033D00099CE7789F9E99F023B2F221D68E73E3598
-:1033E00085AA3B72E0FD6D4D6E7CDFE40D81FC72C1
-:1033F0003B60A58A03F4C722C2E6B7AC450A8555EF
-:10340000710AF17B1C04EC824ADFF4B5075A3BB029
-:1034100090DBBB854497EFD3A2B54B6509765CD7AB
-:1034200092169EF7DC332F999CA538ABF6875E9DEC
-:1034300081F396BCA128F35844BAC3F01DE0654F50
-:10344000B1FB40FA79E9D7D1DF79567B674D86EF3A
-:1034500009F78CAB9BB7C037810B4A2A3A08BC5797
-:1034600007193EABDB24A4D75FB85F25EED909BAB4
-:103470002F22653340AF2DBA8FEE0B737AF9A0C7B8
-:103480005EEF08A1BFF4196971D828FFD76ED97112
-:10349000FD3878EFE1D7CDC0DF15EEF050838BEE2D
-:1034A00017833FFEC9B4AC28F65D67CFFF55F821FE
-:1034B0003CCE84EF517C2CDC2E635E83AA1D3FDF63
-:1034C0000F327E0E12CC23AA7953F636D2A735F0EE
-:1034D000733E85173E5F819FFFED79EBFD98DC2CF5
-:1034E0009E6F10C38FD1EB973E7E8CCE7EC2BD09FE
-:1034F000B097DD292C0FFC94D197E846BDACD3BB27
-:103500002985F8DD51A177ABB9DD13E32C047B47A6
-:10351000CB1F6F79CE01F187BFDCF75C2AE65180C3
-:103520007DC9EBB52FB754B1F16E793E0EF3963EDF
-:103530002FEDC807BFAFE291DF3BD4DF35ADF3F825
-:10354000A766C17CB93D5C266FCB76823D0C44CF2B
-:10355000ABE8B3FF8AB54EFB79D669D7AE733EAC04
-:1035600053751FA48AAFF3C366B6BE8F36B3F52E6C
-:10357000E8B3CE209E83DCF298C51B443F238C76B3
-:10358000FCD80E99C0FDB31E3F4367F74F9396AD2D
-:10359000808F652BDF396CA47CB17818C50FE5836B
-:1035A0008ABB2D68E717FF8A9D7F7E2A95A4E101DB
-:1035B000FCCB61C70FE9F325D43F00FFA2771E3D86
-:1035C000767F7996DAEEF7137FCB791C6A79DBEF99
-:1035D000F1F7A2241FCB875C2EBE03B34BF71D1857
-:1035E000057400BB276F053A651285ED13B5F1D45C
-:1035F000BF0DFD72EE4AE4FFEE61EAEFF5D6C58736
-:103600004D90EFDBBD4342BF68D9AA12470981FC48
-:10361000561607BB238BD92FC9E7C3BC170BA56B65
-:103620003C1DEF27590A7BAE38595EF7C304BF3BF8
-:1036300023E6AB7F0EF1712BD83F9B01ED9F7EFD02
-:103640002FF07196C906F4A76BCDCCAFEEE2DF7D0B
-:1036500078288BF9D30F6531FF7A1B8F0F74811F88
-:1036600009E7D39759F0F77A08998C71722361FCB6
-:10367000671478731ABFE8916FF497BB33014F73E7
-:10368000498709E839A3789602F7060EA75AF13B55
-:103690004AF4AF0CFA99CDFBD96F62F7040EC31848
-:1036A000745DB3793CF9307C06948E7F788019FD87
-:1036B000D8E00B16F4136E8F67F13E929C68043EBF
-:1036C000BF89EBA939132C3E381F983DE1F63280B3
-:1036D000B4BF20A1F8AAB076AF2FA0E33418989D0C
-:1036E0006F7013BC2F499A3AC700FE2EA16E31E4C9
-:1036F000C9D3D5EF3C9B742E3ED2DE53A885B8C209
-:1037000078C218AC18F1AB29D79A59FD1B8F1C99B8
-:10371000715F26217F826C26B0338023E08BCA4400
-:10372000DCE7CE843C7E374023F2DBD546123430D2
-:10373000D86CC3EF10B1BC7E710E725D310927D217
-:10374000F585F76AEF51DC10368487C3F98E31DCDA
-:103750000EF833581593938E53364D2A04BCD7AECA
-:10376000EBDF7C3F7EE4F88CFB26D0327CEF0AE670
-:10377000F94309F3796653A1073E9D6B242FCB854E
-:103780008C7EC087756E2588ED56303E17F737045E
-:103790005D0A68F76AFCCEE6F3A3FD343BE07D7377
-:1037A000F4B8C9892CB1CF637EDA522EB74B05DF4E
-:1037B0003DA595D7E46C2E37E00F52BCCDE6301610
-:1037C000DFBBB2995CB8B2599EF5B71738DE320B41
-:1037D00009E3BA5FB0201DC5B833394CCC1E84FD57
-:1037E000897908FEAD26F5987F53CDE33106AA49C5
-:1037F000304FB7E531CCEFD7E709510709F3CE9643
-:103800006CD73F57C573648D5EC238A764EE5E0007
-:10381000F393BE17E7057E9F6D6EC57880BE9DA9A8
-:103820004542393735537F4AE2E75BB46CD92CE126
-:10383000EF3BCCCEEC1E89DF2BE77E7535A72BD571
-:10384000DE53E11E5035F85378FEC5BF13B585F938
-:103850009146EEFFCEDFACF5336637A9FC4C06345B
-:10386000F7EA2DBAFC7013F7373E30778F047DAF3F
-:10387000BF67FF8181CD3F984A303F52DCB337723A
-:103880007F52F093926DD29C8B89FB9C15A0A7D898
-:10389000F70E74F95436FCEE4A85C4BF57C9E38A63
-:1038A00027A8BF89DF95391487764BC419BB4AEC2A
-:1038B0004143227CCE9295E724DE3203FCCC0A877A
-:1038C000D908F08CA113C7B955EEB0E7E4F4C6717E
-:1038D00037948CDA027943D7678F9869CDC2530E3B
-:1038E0007EBFC87B00F2D6AFFD86CE1FCB05337DF1
-:1038F000747FD4F54AF75C2B55D1B55B0B661AA9DA
-:103900003DEFBABF7B2B94D76C1D3FD348ED60D7FA
-:103910009DDDD9F00DE135D997B3FA06D1DFE53356
-:10392000213FB8EB41569E4DEB83E0E7F27B40151B
-:10393000E325D4B36BB8FD11F1A30AC34B0C4E645D
-:10394000BFF371BE76B76797AD01FB2CDB8FE2EF5B
-:1039500009DCADF8D680DFD394E9AFCEA670C92CD0
-:103960002968867BF16F868671FB15F5772FD66403
-:1039700031B9DC3890F527F045FBA9FB67FA49839C
-:103980007E5234FD04FE997E8EF6EDA7E19FE9E7B5
-:10399000FB8AB61FE19F89EFCCFD31C7F708F4BB66
-:1039A000740DDB0F93A336CDFDFF93F5CF0F03BB53
-:1039B0007FF2294B12F0E1D267FE3BBB1AFC3FEECF
-:1039C0000F7DD6FEAE19F2BE9747D87771EA22EC8A
-:1039D0003B39CB77B69BA7E6411E6BBB79926A7EDB
-:1039E000B5BDBF7365BC5AE5C73C9A2DF2B5D9EF9A
-:1039F0003A2E7DE613FC9EE05243EBC790E74BC6A0
-:103A0000B3389A7E9D9BF87B87E1DC3F4ABCE0C9D6
-:103A10006CA66FFF31D8F74436851BB309F62FC764
-:103A2000F86ED797BCBF8A78A6C7AB8AEC5685E2FA
-:103A30007BCC9BFE46C83BAD7E38A750A6F37822D0
-:103A400073E20EE82F767CB39BC537DB587CB3C29C
-:103A5000DDB18A1A29723C7BDE5DD6CB08B9EA015A
-:103A6000D273DF0FE286D32CA27CCBCCC91358BC17
-:103A70000CCA07B6D6DD05F2B387FF3EDB9CB12347
-:103A8000E341CE3B73120C4E2AFFBB322A8FC33C5C
-:103A9000E68CBD6C2A3C2FB1D88755B2F838F2C7F6
-:103AA000AE8CB2DF037DA13DC43DFCE670CA0D744F
-:103AB0001DFE3FC89837EDCF4FF047BBA7F20AB7BE
-:103AC00057C7B3999FB6C740E759D83B0F313E75EA
-:103AD000CC567540DC6ADD8002F0A353324B3ECBFE
-:103AE0001ED33B7E4AA6FF2094C5F874B9F9F0BCFA
-:103AF000BFF3788BD3E333A01B85651364F8524280
-:103B00008F5EBF7A7282A67CEDF424E253C74DAF7C
-:103B1000CDD094CB2B066BDADFB46084A6BED4D2B2
-:103B200031BAFE02FCFD3AFB9398DF7BA8EDF4DB93
-:103B3000B3C18FDD2E7B25BA9EC52F3CFE36E45FD8
-:103B40009F809F2029647131F6BD467E1E63F41963
-:103B500035E7317B9F3383DFAE8AF3EBEEE5EDC3D0
-:103B600038BEFE3C46E48BFFB3E7310903F5BFE7FF
-:103B700079FC55BA323269573BD2A7712FCB636EAD
-:103B8000A47E0B7C4FECFB3B2D21F886FBE7FF7DF1
-:103B9000C4ACA8CE65EA220DF8BBBA93761DC173FA
-:103BA0009BA7B89FB4BCED4B33DC93FA7EDB0A9441
-:103BB000E7A9547F2552BEE968272377423C39C7DD
-:103BC0008E79384B9BAFC03875626436C2DA962B5B
-:103BD000B0BF65916BB0BC9CFF9EEF9EF88EA96054
-:103BE00087F7FCDA85FBC1037278D843D08FC58E86
-:103BF000FAA13463CE3AF013F6C407F36EA6E39548
-:103C0000FED7F7310F7DF94E09E3A6A532D923413E
-:103C1000FE7D240EFB2B95FF347A057D7ED5246630
-:103C2000574BC1C7A1F572917D137E4F3AC6EFA4E1
-:103C30008D1DC8FC3A53279BF794C82CEC4FD45FDA
-:103C4000367090E6BB7CA694EDC6F9B6DEF5983AE0
-:103C5000258457464620ACDB39CB08F9E77FC87D81
-:103C60002C19F044DBE3F7C1FAEAE3B189248ADED8
-:103C700012D0C2F5F06CD0C370FE9EE3BB66600A42
-:103C8000FC1E61A7D10A7AD4667582FF32A3B840C0
-:103C9000A956AD4B7EE946BC076149EE3681FD9ED3
-:103CA0004DA15A6FCF8B61676E1C28F47603426179
-:103CB0008F48E407EC3BA83C3E20E469EA4083E6F9
-:103CC0007B3A1D12938BE0AFD8B940698E7FE940F3
-:103CD000DA4F4709297F16F5684736DC47FF57CD8D
-:103CE0009FD2D70AF477183B09C431EAF97C843CA7
-:103CF0009F6FFE7379FB033209005F1CB8FCF20E64
-:103D00001F9D57FB6DA346815D10E3350C6479A6BA
-:103D1000C4D9FD0DE61BBE98A0405CBF14CE3C4646
-:103D2000F7FAF3908F08F1C3BA172D8FC20752EB41
-:103D30001C747F6F83BCC0B830F06DFBEFE28C6009
-:103D40003F0A87F81B002F937E377C327CC7C7D78A
-:103D5000663112F4837CEBE079ACF99E4F7F0979F0
-:103D6000D4F399BF99C99F9FCB6125E7DBF95C0E1E
-:103D70002B8DDE44388F99B74FC67B91F3574B2379
-:103D800077427C40B1E33D7D218742DE4CC097A362
-:103D9000803F195FD6465C5CBE7378BF4C0E4A65A7
-:103DA000966F573AC285FBE7E591246C27E455C826
-:103DB000E91D39FE1DC0D7A58D54BEE938FE750337
-:103DC0004683BCF4F289D909FC44F9C453ADE283BB
-:103DD000C6F6AF8CC027A60912F28985C2492A3ED1
-:103DE0002AEBF14F9C5353E93C6634E5E0F79445E8
-:103DF000FDAF7BF8A57FFCFE18978FF9B6F050F069
-:103E00006B4DF5715EF88EFC896405F5D8CA8D128C
-:103E1000FE38E14A53D924F02F563E28617C0FFC2E
-:103E20000ED03F4507EBCDEA73901B23F9785E7DFA
-:103E30004D6408C22732FD2F03FD2B23D7733CE6C8
-:103E4000473DEF3B557F3BC6D54E852C5EF69D31F9
-:103E50006DFC6E8CCF8BE77FA67D26B24D81B89B23
-:103E60005FC6F3BD2CE2BC5762F13B88E789F89B43
-:103E700038A71371380B7C0F5765474F1B5BB26136
-:103E80001FD2271E57C2ECFEF1ED26766FABFD4F19
-:103E900045065AFF698E0FE372AF79FC87613D4B8F
-:103EA000AE0E3D63A2E5A5773EE78078B9C067AB6B
-:103EB000313C14F64BAD148F101F6CDD2C4F0B31C1
-:103EC0007F2761962ABF22165F2F890C46FC087B4C
-:103ED00023F4F7F36B3DB829157AFC7C7648F0F7AC
-:103EE000322E07CB400E88DADECC2A83DF3523B9A9
-:103EF00012DE73EDB5374C1E849EA6FC8E72533ACB
-:103F0000380BE3EA426FEBEDD16EB9F5DEF1C03765
-:103F10008ADFA950FCFC0F4D62B3890080000000CD
-:103F20001F8B080000000000000BB55B0B7854D518
-:103F3000B55E67CE9C994932AF3C0986C43393077E
-:103F4000700D383C22E1E1C78140002138C15B455A
-:103F50004D65402411131250AE51B8DF9C90808003
-:103F6000D486EA55DA824E28285AB551B0C68A302E
-:103F70003CB4A15A1DABADF456E8A014791BB15660
-:103F8000FCA472D7DAFB9CCC9C4982526F874F37D6
-:103F9000EBECB5F75E7BAD7FADBDD63E8789BFFC50
-:103FA0007AFBFF0240ED8B4F4F820C8009570920AE
-:103FB0000A00339747CD36A4C16E736FF5205D3A82
-:103FC0004C5E500C70917EE301C4BD5F49F210005D
-:103FD000EBF24A50EC00B7625B668FF54B004A3B50
-:103FE000D20051F32C47EC79A66CC2FFD1F32680A6
-:103FF000129C57E73BBF14E01A80DBDCC07F8DC802
-:10400000D41FD7217EE49B6A85397E5C1FCC91BC8E
-:10401000F8F92A3C1307CAC85A2C0B6CDEFF2FB9DB
-:104020002B44B00969004E7314D28A697E5D6E9587
-:10403000AFF32D725FA1F1BF2342633B8E7F67FC1C
-:10404000F8888272ED5936628428C7D61B2F5B1818
-:104050005F453A8E1D09D0F59A35B419E5069C4F97
-:1040600040FE4F5F1B1C5A8B5B3B0C5D17C83EEA42
-:10407000CE1499F655BF2B85F1D727BB4202F6D750
-:104080003BBB8AFC284FD9EEA4300CC57576279926
-:1040900001D7FD26FFF6F1A49FB2DD0327094E14D8
-:1040A0007AA7D50CC8F7409EA2D0F3BEE4D7E54B63
-:1040B0006CF5FD97570AAACB0530BDCCA19AB05D2F
-:1040C000783E1F6004C05DABA7B1F6E560362A19E3
-:1040D00060F2F94A00DC5BDDF91BD8F345E75318C1
-:1040E0003DFDC14839ED075E16602BCA5F91F3C3F1
-:1040F0001580F27526C3901DB8AF4E6FAEAF9970A4
-:10410000D93A8DF157FC6ACA54DAD7A21DC84CE3DC
-:104110000609A142D2D351BB09B200EEB671F13FFC
-:104120006FF860A48CE33F1FE91806C8BA4F6C7F94
-:10413000788CC0ECD949F69CA8E15D3A2F8282F2D6
-:1041400058CF0BACFD400E2C964B181F401AF9436C
-:10415000FF9101FB77C1D32B928C78946A3F93082F
-:104160004F566CCBE2FAE7683849D4E37F5DA61F6F
-:10417000CCFF8E785A43782AF9B7E2690DE9A9177E
-:104180003CADFD3E78BA841D7DE089E16CFA9B1C54
-:104190001F90EFF06D0586172677A72537D48C7C06
-:1041A000B7925D095F17A181F43987EC9B1EC3EBC1
-:1041B0000E4FE0F9783B7726ABC58B8BBF8B9D6F9D
-:1041C000068A1BB766348082CFE7601B1F37AC645A
-:1041D000BFE29EFBDB7E99766EFB8E76DEAFD91951
-:1041E000DC68C791CC7E32D935D1EE6457B27BFD05
-:1041F0002EEBE64BD9757841E09DDEEC0AEE6413B8
-:10420000C919B38BF506C2CDE76133907FF56557C9
-:104210006903D7BB4EAF0C9BA786D87900E99543BD
-:10422000185E22DF072F1565ED7FB7A5029C0DDD17
-:10423000ED378F06B8B114BBAEA0EE7B5A95028A5B
-:104240002FF8F7316C46056C4C9F9C56974626E13B
-:104250007EA73FDCDDAF52FFE4712E3E1EF9715B9D
-:10426000DDFC67424B22EB98DCAD5CDF81A8D93FD7
-:10427000248E1E89B4238E2E4DA037727E3A47DCE1
-:104280006C9E10F74F9C5F184EB43E9FE607D055CA
-:104290009E8AF69BB94370AF457BDF32EE530BD954
-:1042A000A7A22CFA460EEE57685BEEB70FC6E714CE
-:1042B0000751DED4B69656B5401B8FFE53ABA9D13D
-:1042C000DA2E2822DAA9B65408793D3DF598EA316C
-:1042D0009E67F4331BC78365E4E58D273BB2F15E2F
-:1042E000363E6CBD8CF56F1A074AA8973879A587BA
-:1042F0009FFF7001697D7ED4DD0DB8BF502FFE3663
-:10430000509B376232D501EAEBEAB60DADB65CB42C
-:104310002F707C0C6B7BCCAF721C8292B0DF4BC9D0
-:104320009BA9CB11B75FD9383E7C297DE5F4D097A6
-:10433000868F1A235E5C66FFFECF510E5786E056CD
-:10434000D1FE8BFC49EBC045F6D7F1BDD9AF0CC00F
-:10435000FD2541375E8DF8FE859FF0BD0874FEADEA
-:10436000AD742EF94DDDFC1CEF3B85EEF183D0954D
-:104370005DC0C74F6FDBD2AA16337BB07E469B2F42
-:1043800081F7F6047A5C827F68F866FE49711BF556
-:1043900053D84BDCA8D1F47B4680D914F72213798B
-:1043A000BE17F1F276B587E7770D1A5FA36EE7E4E3
-:1043B000383D0C88D9197F611864D837D3D3CD190B
-:1043C000FABEF7FB67A0DF44D26088803859E10964
-:1043D000B7B6C4E1A4C5B39FE12436DFDE08C5FD4E
-:1043E0009B353DADF6EC8B683812C8EFEA1820100B
-:1043F000073B0455C47DD6110E7AD9E7AC9E3852DE
-:1044000013C62BD225C6CFEE395E49180F52C6E52A
-:104410008CD7EC3423C18E5313EC382981AED2E90A
-:1044200090219EE9716E5EC7FA955928C75DDB043D
-:104430003A26285E5B8461009BDA7EEFB7F727BCE3
-:10444000CA520EC6FCB6B6772236C47225C533866C
-:10445000DF48AB8278BB81FC9DD1EFFA1517E1A74D
-:10446000616536F23FD5F687561BB2DED2B25EA248
-:104470009CE6976DEFB79A71DE9B47FEEA0D9ACFE7
-:10448000DCF4A7C80CCF25F0DA9AB08F8D09B49A66
-:10449000C0FFC8B7C4F79684F1CB13FAD725D01B59
-:1044A00012E8D5C6F173E70BCC4FE6A2FD4871DFE9
-:1044B000E6377B347B76FB3FEE40B0B33CC980FBF4
-:1044C000E9CD9C7EB3EDA87FB53D8EF61CF393BF7E
-:1044D000EB389680FF6ECD0095CE0FA98F78F64A07
-:1044E0005F381A9478DEF1FEBFD25FFB53DE098697
-:1044F00073799F68A4F788BADC7F8FDC63A7873A5B
-:10450000FDB99FF2F1E98F19F78575A1467FE69F06
-:1045100084FE3FFDC71AAD76F995B87DEAFCE5FF4C
-:10452000BC28D27A473C5DFE2DB8EFAA89E1C206CD
-:10453000E4AB4AE32D9E33229D63F536EE4FE5AFA3
-:10454000897E3A67AA92C3854B8AE3F609ED45B4A2
-:10455000CF3DCB44661FB599D723F3C067012C85A7
-:10456000F6B85C8D4F22FFBE6562239D6B871BD31F
-:10457000B348FEE15E5EEFED735D997507D27B5245
-:10458000E65864E4DBF3C064D6EE1595555D88E328
-:104590008B6D17D939BF27C5C5F4F3B5E76B7F130A
-:1045A000C6AB6F3C325B3F90E6CEEAA07C75AD04B3
-:1045B0005B6592C7F738C3CD8FACC3D6A21C739B83
-:1045C000AECAA2FC6DDEFF5496F747BE792B259F3D
-:1045D000C0F86028C91D583BD942FDF35BB4569D15
-:1045E000C2DADDDF6C7F7328F277AD117D9B9179A4
-:1045F000D779AF731ECAF571128FC31F9D2E7092AB
-:104600009C8F7A03C95EC2ABD3912CD0E1E1969D19
-:10461000B370DE87F395146F668C7FF737E21CCAA0
-:10462000375F3D3D2F2B8074A697E366D7F9795904
-:10463000F3E2CEFB0567CC4CCFBB2DF23D945FEE91
-:104640004ECE155481E939BD12FD65BE965F235EDD
-:104650001AB7F772EE9BBC22D3EB516B237C8C20F4
-:10466000DEF360E63892531F57F27EA0D941781EE0
-:10467000200F8FCFA3B3F2267A48DE18CEB2DE2504
-:10468000DCB03C1AE9E2CD69EB553A0BF761FE4F1D
-:10469000726428E5D40FCB9101F34EC86E2F8ABF08
-:1046A0008F88E5A92BB478C0F90EA90E56B71E7AEB
-:1046B000362944F5CC21F52F0EB0C7F3733FA97608
-:1046C0003A543A8C3F7138CCA4D7C3E6E0B1FB70C2
-:1046D000DC824D128BA30B36652EEFA27880F62C70
-:1046E000849EEBAEF44A6C9E3EFD44CDAF34F80997
-:1046F000E457D2B9D6979F946FF6566EB1F7ED276F
-:10470000D55ADE5EBE49F213CEAB4B1C66B81AEB2F
-:10471000EC4DAF6F253C562F4E1A6E45C1AB375945
-:10472000997DA30E87EAC6FE80D3614EC5F6560D6D
-:104730000FD1A62456A788591616F7C4552532E975
-:10474000A74C04B30DCF15D1E993FD9C6E7163DDC9
-:10475000B6D2512A937D577865B6DFEE7ED7ECEB63
-:1047600004AC6BCEE13ED271DC89C6871F1D85F299
-:104770009D84D08DA350EFE7C8D0B8CEB91D624854
-:10478000A573C2AC982B30EED500F7F7BA03DB2D3A
-:1047900013F0AF350DD533A83EBA33247D14D56A56
-:1047A0009F8BF8DF17F09685F2DBBBB6199FA3C786
-:1047B00058C8AFEADA8DCFEB61DD67E2506ACD1FF2
-:1047C000450769CF71DDC60FFF3C647F1CDFDD5EEE
-:1047D00047C6312CC161380C47CDE23AC5AE9B08C3
-:1047E000768D2293575C9114223D8A79FC7C980245
-:1047F00042288900E1C67DE3BA5F060F0ED98F809B
-:1048000010EF1FC1F4723488781A88FA70DA18BF72
-:1048100078BF18B2E2BA65E9A0A4923E1FAD047059
-:10482000307DAA6EA4A7643498293E7579B83EE716
-:104830000AE06F677EEFCBA3FA78C1A62466BFEAD1
-:10484000C7EFFCD34F4792BD2A32E2FDE821C25D9B
-:10485000099B0F6C69B1793E69FAEF3C92A7EC09AC
-:10486000AC2BA9DE14038FDECCE2658A8FC52D77D1
-:10487000F447A308274D29C3D602E1A47F9EB73889
-:1048800036BE7AC5B2223E1EEB5527C5AB24B69F75
-:10489000DA1D568693B96B44859D8FB916763E7E98
-:1048A000D492C4E8DA01A5CCCFE69A2040FBC05CE4
-:1048B000309BC575AE72A8B583B2DD4E717E5D4486
-:1048C0007432FBA89ADD2C649FA7BDE96CFD39A466
-:1048D000633CB70E68389B6BE2F8815D42682B8BB6
-:1048E0004F0D32F97F954960712ED11F7F434918D2
-:1048F000C5C93CDF6D34AEEE21AB6F8587CB20EAB6
-:10490000F2209EEA4C91053FA7797F6D65F71AF575
-:10491000B88F2427AB2F941751FE7A33982D742F1C
-:1049200025F378A6CB532F574E219C62FF4133F6D7
-:10493000D739783CAE4BE5F73DE0B085B6C6AF471A
-:1049400032E7F371B293FC6C34C30BF9BD09FB3F42
-:1049500005DE5FE62C95A3F8BCD304ABE99E84E4A6
-:10496000193C346E5DA4FB0F253C2E367B1D6487FD
-:10497000F41B67D37ACF892C2EA1333D544AF9DF3B
-:1049800073E208AA63E7AED957BE81E81786B94932
-:1049900084B9CFBFC7CEA7BB349C4529EFA7F30A84
-:1049A000E917B0FDC8CBF3FB80C8EF713EF2F2FC13
-:1049B0005FD7ABDE5FB74662F6A85BC9F150D7F4AC
-:1049C000019BB7CE11C9227BD4BD245D43B83EA55F
-:1049D000C93DAF2977DC41C4C73CC9E516F051ADEC
-:1049E0005A6121BAB65560B4BE5EDD9A3F66998AB7
-:1049F000F97CD45A351CC5E6CDCCA3F3ECD4B3E98D
-:104A00007973E3EC7EAAE565A76C27BF0917BAE9BD
-:104A10001E6671926F33F3536E8F532D859BE99E03
-:104A200066BE3BE210B07FFE3DF96974CE1D76870D
-:104A30002DD47FB8DD63225A71BBC711AD98AF6624
-:104A4000F4290CE1EDC51A78D14E8B048E9BDA6700
-:104A5000F759BCB89E3B9FEBE7CC73EF15D17D4176
-:104A60005D5EA488CE5FC455510ED9E51981E50974
-:104A70008B9E1595A4A1315C2D225CA1FF2FD470D3
-:104A8000B568C7CBF7929F2E223C0DEF894BAC2B1C
-:104A9000F7B3E72FB695031FBF9F70A79FF748B7DF
-:104AA0004874AF66D1685C87E8D47C99F901F64F09
-:104AB000E2FD6A313B47206AA17CB85EE47902FAE4
-:104AC0005336E511F51D92DA1D2F695DEA2F8EF53B
-:104AD000F7859BE1F926CDCE56761E0DD7F4125DF3
-:104AE000F392937071E6B97D6F8CA1FAEA45C14DDE
-:104AF000F1BE871F6A7AAB273D39D93E595E544FC4
-:104B00007A71C6F4D4ED6F1A2EEA81EB41D74BBD12
-:104B100059D393DEAF8D1FA1E9A11634BDEE18C89D
-:104B2000FD5DF36FFD1CD1F71748E3E3757CCDD72E
-:104B3000F637219F9F9BB5881B5F31C39762B946AB
-:104B4000ABFBB1EBCC0B6DECDE48B7A72EF7F27CDC
-:104B5000EE0718A795D4B4989DA326A8E9ED9EFA70
-:104B6000264D7F929DC795234D39B735A2FE163E3F
-:104B70002BFA98F2A8E68A5BD76A8A3A585E7ABF1F
-:104B8000E8A67D95FDB2F23ADAB78E3B699B60EEFE
-:104B9000184975462AD3BF2E5F593FFF75A91C7768
-:104BA00061924797F3881066F6525F10DC3CCF8D18
-:104BB0005AE8FE50F7D34479E76BF28A4E618C7065
-:104BC00035C9E393C9BF01CF41268FFDE032B69EC0
-:104BD0007A689967686C9DC3AAC34C7C8781C701BA
-:104BE0001D9747B4FB88232B5F6679B0BECEFD3D91
-:104BF000D7093466F45C47E75F92CFCF01DD2F3AE7
-:104C0000D338FECB5A3E607C7A9CA51FDDC3E9FAFF
-:104C1000D4F516E79706FDE8FEA5FB936ED77FD582
-:104C2000AF607926CB571FD0F6CD7C242B762E1083
-:104C30003EE9BCB35A109776C3B9C9F29A29033E2C
-:104C4000B3047A79AEEB29F179AC9E72E791FEA7B5
-:104C5000D8B34D9407404BF6FE82B8BCEC63BAEF74
-:104C6000A2789A09FC7D06A057C69DE77ABEA69F4A
-:104C7000D7F85BD78D4B1C5F9FA19CA0FE9A918BB0
-:104C80008B288FF847BE97E9EF24B45B26E07CB50C
-:104C9000C723E54E3956AF5CFBF7B0E8A2FBC01D59
-:104CA0001E43BD507B7A3FF3EF3A88ACA2FA76EE12
-:104CB0009AF72A4691DD9FC67C1CF9E6B77AD8B9E7
-:104CC0007762CBED23A8949DBBB290D1776EBD8364
-:104CD000D36B783E377765C993741FFF7192524E3C
-:104CE000F8EE5A2FB8A9DE1ABBB564F92DD83FD615
-:104CF00071652AC97D68CBC71563A86E681499BF12
-:104D0000285B1EBE91FA950ED1475B9D0FEEE5B76D
-:104D100010BECD2EE66F87B573A259E2387B578B54
-:104D20001307BA5B8EC3B2E6E62213ADDB86E71348
-:104D3000EEBFCA22B787A9EE7BAD9F6F33E90BCBDD
-:104D4000D46CC4D17181E7DF3516B011AE0E489135
-:104D5000A524FF81A58E614D248078E11AF20B45D0
-:104D6000ABB3B06E62EBEAFAD2D78F68FEA2CFA3E4
-:104D70008FEBA47C8ACE0F4DDE132D4FDF4879C216
-:104D8000896D856910A7F713B42FD4F79D18175FA5
-:104D9000ECA5FE3B94AFDF4784585BA3DD1B1E9060
-:104DA0005A07D0FB5BCCE38FC6E7E59FB425D90853
-:104DB0008F98C71B9F4BFC3CC13CDEF01CFDE6A856
-:104DC00031DFD7EA3BB1CA15E8250EE96D629EDFF7
-:104DD000956FCF387615F4C8F375BF4B1CAFE7F568
-:104DE000DDF72C1FDA13DEC78C72C125D63F1D44B8
-:104DF000C360EDB78D7C17E59D94F2CFED11AA2726
-:104E00005BAD6E2BEAF728F915BD077C49E479A262
-:104E10000D7C61C4C5D13F8EF0911F2EF890FBDD53
-:104E200082762144AFD8F7AF7F4024FE3B360AD0CC
-:104E30004F88ABB31E597F23B9DD395F60557FE4DE
-:104E40003FB74DF0A94C42C59E505FBDD15FEEBB50
-:104E5000BEFABE75957ECF94A8F72B0BB4FACA079D
-:104E60003EA3DE797DBE1BE1533ABCA7DE4F0703AC
-:104E7000AC8E3A1BAC61EDE8F6B6B21C94FF53E180
-:104E8000C84363C97F1C2E764F723AD8C05E029E1B
-:104E9000ED18716126EAE755BBCB4D71E36CB0911B
-:104EA0003DEFC68B86CF6B77EC117380F1EF1C8BD7
-:104EB000FCBBEC2E7AADD1CBFB366E5F8064FE7E00
-:104EC00054ABB7EF5E3CAA1F3DD7F77BF23E6E674F
-:104ED0005DFE93DB6E77527EBAE7E7E93B47937D51
-:104EE000535C6E8251F506110223008E6DE071E86D
-:104EF000B8CDF524DD971EDF784316D58377485D5E
-:104F0000161FCEEB7BADD249F7027F33479D6E6A09
-:104F1000913F4C72984322C5BF315381BD071C138A
-:104F20003683EC61AFE8194E469F3687C2489FA290
-:104F3000F783746E5F48E6EFE9B5F77E77BCC2EFA2
-:104F4000D3BAEF4FB47B84B1DA7E9715A4E9EF7B37
-:104F5000D8F3B252FEFC938DDB67D27C27B6486E45
-:104F600092F7EC1689CDBF10EB7813E2F038E28DA2
-:104F7000E2D7C2F7451F41FAC4365E272F44DCD280
-:104F80007D71DD6249B1B87AE2B14CE7DB29B0FA54
-:104F90005AC7E5422554CEF4AEE1D3867F2EE29186
-:104FA000910AEDAB481F8938FD57EBFE2584CBDE17
-:104FB000E241020E747DE97888E113182E75BBA7D3
-:104FC000B50F9B90C306A82C5EA8136110E505CD14
-:104FD000161864261C98927DE4E78D36E750BA6770
-:104FE000FA3289B7F79ADCAF53BDFCA54996046C39
-:104FF000FF56E061E3EF157D93899632A2EC7E4087
-:105000002C3329263AEF9AAD2C5E24C69B870A786A
-:105010007EEA25B061FB4C819BE78FD0C0F207BDD3
-:10502000C50DE6527E529992F6858C2C3F2F983111
-:105030008BDEE3568E4D5B9A8F99E52F0A66CD3253
-:1050400023AE2B47A4BDE4457AEB163FA7AF4E2B0A
-:1050500091906E126E983509F9F716283F2D288920
-:10506000ADA3CF8BCF37D2F3B7FA059EA0B6DE62E1
-:105070005F4DF1FE53A16B91498CF1BF2BC0E157FD
-:1050800085181D95208FF2E967E89D6A49DFEDD903
-:1050900002655B412FCFE701AC243DCE537F7B906F
-:1050A000F235FCF96D88B7EB35BCCDB3D9C3840BB1
-:1050B000582D9DEEC68597E292CB4CFE3D5333F7BB
-:1050C000F5E6F01E1A3F185ADCC76C2C15DC783157
-:1050D000BDEF388F8E09C7F4F9707F9F4AB85FB46F
-:1050E000ABA0A0ADD1A504547215C63761E76FBF60
-:1050F000A2799B558826313B54B9097F02044C178D
-:10510000B1AD4B413CA09E96BC74663FC1FF4E3D85
-:105110009FCAE6DF672CD5F0787D4479AC0D85FA1F
-:105120002408190568EB33B0F7AC19D73D610ABC08
-:105130005D807AAC35BD95B74426BF6D7652FE7260
-:10514000E679D13703C7D56A793B5C10C3E3F179BF
-:10515000A767F0E6B57138FA40C3CF694F386F19C9
-:10516000C50F0FAF3BE1C2BEBC65C83FD53BAD84A8
-:10517000CEA54740F97301B3377FDF30D3DCFBF7AF
-:10518000177FB882E73BB0859FAF5633A88E34D6E1
-:105190008213F5310D6529455A425A64EFE3438C79
-:1051A0009FF89C94A7C8B767F3F735E0277FD4ED45
-:1051B000A8DBA787DD5064CACF4D3690C85F06C311
-:1051C00046379D3BBAFD268B76166F96BCC4EFE33F
-:1051D0009608D19674A29FC3F392F4A5F965CF7394
-:1051E00073AB854C51B3F176169FF4B824E31FC21C
-:1051F000CFBFEB5ED252A89D9BC36018E1EADBF201
-:105200001D3D2EA17D1C8571EF7FBFD53EA422DC04
-:105210006FB5B6F664B14A36935E326D3E8ACB4BBB
-:1052200036E5F7E3F1F82710CF071BD3193E57797E
-:105230004466C78A8E1C90F1D19D1D02C878CECDE0
-:10524000E84867B4F37C7F46573CD56F22E5FFDD25
-:10525000EF2D9F1AC8E8134FBE3932C0EF576C3498
-:10526000BF1F74398ADB291F3A674739D00E7EFB8E
-:105270006A765FE887EE3A46B828108D28217F527B
-:105280002495DBC5D6C4FC5ADBD71237B7E39203AB
-:10529000FCDC5D3281BFDF33AB835D8407A95384BF
-:1052A00010D23F3820968491B5598BCBD66C13C859
-:1052B00071F6489293418EABDF4055225427CDD6EC
-:1052C00070923228CDD0FF80109048AED9F6050CF0
-:1052D000370EDF1586F92279E59D4C1F019EDFEA26
-:1052E0007802F1B499E4FC629C00E9888B1FCCC67B
-:1052F000FEB879A5719F4D12586BCC8B512F472F5B
-:105300008527BF8EA7C13098E129413FE81F2CFFB8
-:105310003C87E738A54D985D3C360EE91B3B2508D8
-:10532000C92CDF64FE734E4961F7F72B353DE9B8B0
-:10533000F30F048782F3BA4A8D7A4B558C7A4B9FD0
-:105340006AD453A6DFA8977EB3BD86FEFE81FF30E8
-:10535000F4E7D40C37D0B90D630CFC57364E34D07B
-:105360001EF53A037FFEEA5906BAB0F51603FFC0F0
-:105370000DF30CFD83430B0DFD576D5B62A087B4ED
-:10538000DF6FE0BFBA6385A17F5878ADA17F44E7A6
-:105390004F0C7449E46706FE5107371BFA47479FD5
-:1053A00031F48F3DFEA281BEB6EB3706FEF1E7F782
-:1053B0001AE809F0A681BFCCF69E819EECFE8B8197
-:1053C0007F4AF6C786FE69F22943FFF4419F1BE836
-:1053D0000ADFD706FEB62B024F1462C89F6D5A77BC
-:1053E00048058ACFF28FC7219E6FCA30FBC2C474B2
-:1053F0009975DB53855A9EA6E1F60BB0DF66F27E07
-:105400007B1C5C47794126E17A06D07DEFB9768135
-:10541000E1BAAFF3D985F9AE396E1FA98A0D0BF049
-:10542000189D3ED56DA033FDD906FE7EB365437F42
-:10543000FFC020437F4E8DCF40E736941AF8AF6C03
-:10544000540CB4479D6AE0CF5FED37D085ADB30D06
-:10545000FC0337040CFD83433586FEABB63518E8F4
-:1054600021ED8D06FEAB3B5443FFB0F06A43FF884D
-:10547000CE56035D12D960E01F753064E81F1DDD54
-:1054800066E81F7BBCDD405FDBD561E01F7F3E6CC3
-:10549000A027C001037F99ED5D033DD9FD6703FFA0
-:1054A00094EC2386FE69F209437FED29841FE5CF42
-:1054B000AF0AECFDD7F4419F19FAA50CCCD3E97ED5
-:1054C0001A927DF41D7E629EAEE76F15BEAF0CEBA7
-:1054D000DC6B6A60DFC57D69E2799DA3C8CBCE37FE
-:1054E000CCDF6D361667F1841AC2AE5A9A283F7522
-:1054F000A902C31DA51A55ECBE3083BD576047A352
-:105500004CDFA1617E83449AC9E3A1FA21259687E5
-:105510000EB838E2BBE7A13945C0F07F5D51C05DF0
-:105520005442F5D80BE5549FDC09EA2A9203CF5781
-:1055300017BD677A3BC9786FA4B7D36CA8BFB8F51D
-:105540000E24B50E187E09BF9D663BCDF8BBE7D58E
-:10555000EE9504DCDF92B8F91FC2BAC98C25646BE2
-:1055600010FD0BFDF4274137A31F096633FAD1A0C4
-:10557000CCDA0DC141ACFD59D0C7FA37064B19FD45
-:1055800078506174283895B59B837EF67C4B7036D5
-:10559000A39F0C0658BB2D58C3DA67820DACFFD908
-:1055A0006023A39F0FAAAC6D0FAE66CF5F0CB6321F
-:1055B0007A477003A37F1D0CB1B623B88DB5BF0920
-:1055C000B6B3FE9DC10E46EF0A86191D0E76327ADD
-:1055D0006F30C2E8FDC1838C7E2318656D67F0389B
-:1055E0006B7F17EC62FD6F05CF33FAB476DF3FB502
-:1055F00088E75FBA5E741A6012C3839ED7CEA4BADE
-:1056000085C0512A9D35D42D09F543A23D4E6AEB44
-:105610004813F1D8A63CE78AA2CDCD71F9FE7F16DA
-:10562000F17BC10792414DC2F8D744C53C42B12934
-:105630000D42CDECFD2ACFBBAB355C4206CFB71790
-:105640006872556BFE5042F81CC4F0F9D6E5D44997
-:105650007A9DDC322030BF08DB85B92695DD13D872
-:10566000434594F73F3520504DB83DD770C71B6C6C
-:105670003DB7AF8816A9B086336FA2FB9F0322BB4C
-:105680002FED6BBD7AEDDF2FF4D9BFEBC4003A8765
-:10569000A67E23B2FBF4B725C76CBA1FB94FD3CB94
-:1056A0007D4526433B34D7DF48727E52D8F0E4DD97
-:1056B000C852B5B8D04579EBF5545AA3DF57822CC0
-:1056C000B1EF6341799D3E99FC01267644DF042ABF
-:1056D0006B3B72024D34FE662C20880E8CB1E6F5D1
-:1056E000B69F44791ED470F16091C9D04ECFF5AF0A
-:1056F00025FD1C2D540CF2A8B9B2F6BD7BD7E324CE
-:10570000D73F5EFBEC98901FD3B77E2FB16A82F62D
-:10571000FDD462417F4FCDF3411BE8F920EBAF5A36
-:10572000CAEF677E887519BDAFFC508B87E71A24D6
-:10573000162FAB84641FE5D3E71A960EA4FD24C68A
-:10574000CD2A1C67C27155C0BF87A8FA3085E10B0E
-:10575000E7037AEF5685993BD57F77E7EAF71E5145
-:105760007B269747A1F7B073765ADBA84E459C3C41
-:10577000CDE2D86851B5609DFCB6295424880C1F31
-:105780001601E5ADCE407CF49217E83858A4FDFB35
-:1057900018FD39E26B3BCD77F6955183D87B935D4D
-:1057A000A365D25FB309ED41F735BF13F9771274E2
-:1057B000C54EDF71B88ADBD877FE944490BD463B76
-:1057C000D8FB903D2234BED04BFC7C5FB3DBDBD9F1
-:1057D000D2D4109BD7F89EEFF71AAE7EAFE1AD6240
-:1057E000EF81DC7B71DE459D12AB776064B4D8DF5E
-:1057F000CBF74DF58D6FF62F88DB477DC711FE5D2A
-:1058000014448BE3BF873AADCDABE349B438026DA6
-:10581000F678F9388E10D7EF911E10D7C728AF9FB2
-:1058200069955D37E1D028AA268C6DE00937FBAE7B
-:105830004EFFBE6E3EF8595B8D70201CFBD5F5AC5B
-:10584000FE5D08EDECF9A2D2DBF388AE87AE49D954
-:1058500054BFAC6E7A3D1BA5BBA175FD64BA7F9E9B
-:10586000159AFB3AB5955B84635477A35F1C25BFFB
-:10587000880A0D2BA924BDE5D9092BE99E77A6C876
-:10588000ED006F723B208E1431ADE7FED00F4ED18C
-:1058900078F40326BFEE07552B387EF47F8FD1EDC9
-:1058A00017A577FD3587DE7D98BBD87721F5BBAC92
-:1058B0006984AF8554798AF179A17E3EF3BCE02EEC
-:1058C000CC0B88EFA4C4ED7FF25012FB772F270595
-:1058D000C4C7F09EB8D7F3CC2F4DFCDEED5E11B7F8
-:1058E0002852BDFC30D3538D2D3494F484E7B33467
-:1058F0009070FD71FBAA6174DF37319447F9AAF407
-:105900008CD5D7EC31C479B89812BBC77B48E2F785
-:105910006A89F2F6C85B4ADFF88AF209AB05547A65
-:105920009F84FECFFDFE3097FF4B5320FB1A91E77B
-:105930002BAC8E1EE067F53F64D97C6B859EEBB780
-:1059400068EB76FE93D7D36A2EB0EF7112E510DCC8
-:105950007CDD4479ACC95C0EFDDCE9290FB7832EF0
-:10596000CF90811E7E2EE6296CDF4DA65416BF3ED9
-:105970001503C5A437FD7E4CAF633B3D9FB0B80E09
-:10598000179A07F0EF7BC37D9DA7A7BBEB676FEC72
-:10599000BCD3EF99605CEFF7827E9B5B22BBCD02AC
-:1059A0001F8BFB83E1435D3F867BC2FF035073AFD8
-:1059B00086E0390000000000000000000000000048
-:1059C0001F8B080000000000000B7BC4CEC0F0A3BA
-:1059D0001E822538106C62711D0B03C30756D2F569
-:1059E000C17025507F0910E703711610A7027102DC
-:1059F000104703711810BF069AFD0C881F02F11D95
-:105A000020BE0EC49780F82C109F40B277191B035C
-:105A1000C35A36D2EDFF83E4E78940763910CF24AC
-:105A2000231C46F1F0C0F23C0C0CDABC08FE3E5ED2
-:105A30005479051E047BB92065766D03EA0700E9F9
-:105A4000CD424A800300000000000000000000007A
-:105A50001F8B080000000000000BD57D0B7854D58B
-:105A6000B5F03E8F79253393C9839040C493970452
-:105A700009382421F2AA1E0842A4D406F42A5AAEF8
-:105A80000EC823869044B02DB7729B21092F411B6D
-:105A9000152D5AB483458B0A36F268D106EEF028EC
-:105AA000C65BB4D1A282D536D45B450B4944116F95
-:105AB000B5BF77ADB5F7C9CC393349406BFF7BC370
-:105AC000C7B7B3CFD967EFB5D75E6BEDF5DA3B76E5
-:105AD000D9C5E42B19FB027FA09CA330C60644CA9B
-:105AE00051775EBB687B09FCFE99DDFFB8166967DC
-:105AF00094173389B1D1F09E653056CAD8954EF8C7
-:105B000015DA95BD70EA0F97A531B69F29CC018FA4
-:105B1000C26A59EAB7A09FFD9F333FBE975F706787
-:105B200075B8F1BB2063E98C5DC1F877E16C2DCBD2
-:105B300057881526E373DD49BF433FB99BEAE0FB75
-:105B4000B39FBAE97B2B1C46C93E9759587CF34555
-:105B50000EF6AB7EDC5120EAD90C066702DE2C1A69
-:105B6000D780F7D0DBEF11BC075480578B33BE13BF
-:105B7000E04F8BC0BF9F5D9BC40A39FC7A6904FE6D
-:105B80000B8587E60F786EACD7BE9997CFD8BA7AD7
-:105B900046E5DA7A2795ABEB7DDFCCB331B6B23E82
-:105BA00083CA46153E01381AB7B0501050EF2E8404
-:105BB000F646FFF03F21CF69AA3BB37CA6BA3D0D64
-:105BC000FA2988D455B766AA37BA2739036E1C1F3D
-:105BD000E6EEC0F19D5402984733001F978A79BAC8
-:105BE000B4E02C06EB91E7B66B2180E352F782E933
-:105BF0006C24B6CB27BCD9055E9764367420BC1FD5
-:105C0000433B06F31DE69EF23EF332F69FD94FF07A
-:105C1000796C606C203C5FFDEF751D12F4B732D3D8
-:105C2000AE35407F4FC0F86B1C5178DCAAFEB9033B
-:105C3000FA74C23FC4E3D08DBC1E9937D4A3E631B9
-:105C40008C45BDCF8EF473A1FDE6379BEBD67EF37A
-:105C5000347D12D2ABD16F3EAB68F0B9FFF7F67B63
-:105C600029E03C3525D2AF314EBFFD023954C0B7D3
-:105C7000F91B59289C1D3B4E9EE62F0FC2FBBC8D85
-:105C80002A0B65F3E769C01779FC57D6E49B94109B
-:105C9000288C8587458F93135997BC34FB1C19E8D2
-:105CA000292FE3FA4512D25573D4FAE63066F0CDC7
-:105CB0008FEA7D4C1FCAD8DDF505546EA9F7E9C8F7
-:105CC0002777FF5D99D55218CB8F7F11F2EA1E1B03
-:105CD00023FA0B3ECE428F4BD85FC5AC39505F3FA5
-:105CE0002ABDE82E8D885C4679E61274BC5ED26EC1
-:105CF000C8C1F6AF280CE5A0951FEEB6E9D3B0BF3A
-:105D0000B5A364A901F19CC7F921CF1676E662BF5D
-:105D1000CD39A382D88FFF55E287BCFC4B3405C632
-:105D20001D9627F861F4834E94873DF35F96AEE7A6
-:105D300015339664A103DF79D2816F42DF74F07569
-:105D4000F1C3D7475FCD7DD2D77AFF7DEF3BE0FD32
-:105D5000963CBBA664C7C295797138A3C21D4B6F30
-:105D6000797982CEFC7DD399B57CB03EC4DE011A30
-:105D7000BABF3E83E8EEDE7A8DCAB5488730EF07BA
-:105D8000B0E958A8231DE2B8D71551BDD77D8BAD1A
-:105D900020BA4C9FD5CC50FEDE8FF4390E875BA91C
-:105DA000EB1360AE79A20E5BA40C7BC0BDF87E1035
-:105DB000D575DCCAEE928CF6CF0675C0778A683F3F
-:105DC00075C5B3C146F8FD7E17AF5FBDA2530F6620
-:105DD000457D1F5CA7EB5991F6500F4F52A3FAC3B4
-:105DE000FE0BA3E13948ED8DFEE6AF38A10701BEF9
-:105DF0007B5DBCBFB52B8EFD53FA5F2B053240B5E2
-:105E000060AB2CFDACEDA9DFAB231E8C7172A45FDF
-:105E1000E8C1E8F7C16774DD1D797FB9746F10DFE1
-:105E20006F64157912AC43E6F48A0C06EB6FAF6829
-:105E30000EE296DB039FC077647E0F12BCAE0CFEB1
-:105E40007EC48ADFEB8D51EB3369C5CB4184D7D05B
-:105E5000731441AFF20B594B8F00BD2A49763FE9CD
-:105E60001BD701D364C278B32A980670C969150C90
-:105E7000E58192A6BE1BCD0706FD019C6309CEC934
-:105E800015B37A8133180DA701477F701B70F44E4C
-:105E9000A77C7C2B3D4DBA66CCEF26C0FE6D6FB75C
-:105EA000F9515D48453C4157ECF35B8336789E3AA7
-:105EB0001370ADD1BACD62B9B1FDA64D1FC4425128
-:105EC000FBF73F7A5DF3B0CEF116885E5FA8CF9501
-:105ED0000644F03856B4B3D29F313F5BCCFCAE35AC
-:105EE000CD8FA9818C0A4FFFF3BBD7E59F55E18E7B
-:105EF0006DF75B49A2F1274D19F36DC6C7630E908C
-:105F00005FC9385E5164BCE469301E76A636C71D91
-:105F10002F65328CE7FCFAF069E547035E7B0CBC29
-:105F2000B79AE05D6B03BE8DB3FE5F37BCE7CB7FF6
-:105F30002E90BFC47F797DF3DF3FBABF64FC153E6E
-:105F4000F94865E12B015F775CE524FDDE9073FF86
-:105F50006C7CA5E2A7B07E77BC547CE24A192B404A
-:105F6000D72322E3D74A1AED57BDD1776FF3810DBE
-:105F7000D6D4CFFFAFF9F486D7AF5B0E9DAF7C6D63
-:105F8000783D81213FAD2C642107F4B1B2ED2AB2F6
-:105F900037571E291BC8A05FDB9AE14C8749256350
-:105FA000FFD0DF4A43CF985CD24FFF5CCF00FB4E5F
-:105FB0006F02A56BB7B782F4A29512A3EFD783DE69
-:105FC00016023DA6E4950DCE3958F7EF70CEC1719B
-:105FD0006D8CF4E992570EF9CA80CE5D23524629A2
-:105FE00040022B5DC6F3A3E5A8E7DE55289E7B782B
-:105FF0007FF0BC02DB2788F6BDC1959007F044AD69
-:106000007FA2BD395011477FD76599F0F390D0BB7F
-:10601000EE46BD0B047262424B00F56A57BA5D7BD7
-:106020004C8AFDEE265912F306BD0DEDEC115332EC
-:1060300051CF3A30E389157684AF90915C77E5854E
-:106040007419EAEE02CEDB0F59F67D37AE21E95D19
-:106050009952994ADF99EA77F7E831D913516FF3EA
-:1060600016F0F7650D574C6C8C7ECFFC1371FF3525
-:10607000DE071A4AE97DA6B3E2D804183F13E468A4
-:1060800023E02B536D96EA685DD3E2EA8F1BE63B73
-:10609000678500860D331ECC9E1F673F81D534F186
-:1060A000E9A079663E7B48E0EF6E81CF4CE4F5D104
-:1060B000820E41BEB978D31EF9E61ACAE55B4241A9
-:1060C000F30AC4F7A079CC8FFAF686194F90DE6AEE
-:1060D0008CE32A30CBB94CD53CAFAF6B3E1B99FE5D
-:1060E0001D7974EFFD5BF96C230BDC8AED33C57E03
-:1060F0009E5010920285FDCFDF3ADFDEE6FD2DC413
-:10610000271FA74E1E103BCE3F0B2F996E18A7E4FA
-:106110001F3F4EC23CB3BC3C5FBCC33E20E88C2951
-:10612000B81F58EDAB84129FC464AAB6A31D4EF2EB
-:106130001BE0F6B0E6F24B80DE522B56DD2E83DDFF
-:10614000EC79EBEAF7D1CE4EED9843F676536151F8
-:10615000DB246897E4F7CD984274CA08CF6BB1335B
-:10616000E2BBAA1513615E8D8CF3DD66F996895C3E
-:106170003FD069BDBF2B70062BAEA950477665395D
-:10618000F1E66167613E6FE90B47ECF7BDCDDF16C5
-:10619000F94EF8FF9690DFB4BFEFD8743BF9118346
-:1061A000F00FEDD2644B3F49BA3DE2676488A7A87F
-:1061B0003ABCFF6D0F5FDFFE4F19CFC7EE736A4029
-:1061C0000AB63CD987F67A12F325AB2867278342B3
-:1061D00000A2D897D61D94B5FED7A589B1F29642F4
-:1061E0004E7733A2F4DC0E99EBC969332767AF848D
-:1061F0007ECF9670BF70AA0FFE17C5CE671DEC6BE1
-:10620000E1283FC7BAC2C7887F1B819E72802F8258
-:106210008532F9B7D7E6EDF045F3B5AC18FE6D2B36
-:106220007D304D2D15FA1FE047C99375D7C8AF4E85
-:106230001FCA97A48FC4E951DFB10B5FAF24E5C239
-:10624000E8E3AB8E67AC6B2C5F71FD246DE63C27F9
-:10625000EA3BAB326626C593B3BDAFEB7DB4AEA8C7
-:106260004F84E2F49FA64871FD39567D9EB1A5A6E4
-:10627000F5520696CEDADCD7BAA599F161F4EB5A5D
-:10628000A668FF85C24BF5915FDC29FA5BABDD1791
-:10629000C4FDF32CEEED800FA5795418F53D96C79B
-:1062A000FC8FF326A487B8343D443A24CADDD208D3
-:1062B0007CF62CD9349E9A9660C2379B05DA761408
-:1062C000FCAE657682C389E3C1388A0F3A94D0FF69
-:1062D000CFC22E2FF548FDE1505FE462FD4E131D45
-:1062E000ACCE2A8ABBDFA9625DD16CE5F47AE7F90E
-:1062F000C917EB78D799E13DEFEFDCAAF66E1CFFEA
-:1063000071EC772A7BD7C01720F1961E7AE7EBB4A1
-:10631000CAC6F64849200F32AE67010DEAF80A36C0
-:10632000EB35588E453A2CF2915EB05552114E62C3
-:10633000690DFF737DBE10955BE84F7606084F8AA6
-:106340005B67D45E3B3F7DFF9CD0AFD3843E6FBC88
-:10635000FFA162A77E5556C1D06E3EF7F6D40CEA77
-:10636000578747A51138ACFD162A811F2A0390ECE8
-:10637000383CF801FA09584701F9B5F305CECE3D8E
-:10638000303389F5C15F0F59F8EB2189C3C92ACE93
-:10639000CFCE380763B6637B359040F1B29305C426
-:1063A00007B962FC27D6CF4DC0F19FD8D8379F1BC5
-:1063B00070FCB4DEC9C2A0A786EA7D541AEF43C2BE
-:1063C000DFBF59D831C6F3738A4C70EC137CFF845D
-:1063D000B32281FCE7076F9C360CF82BE7A8E24755
-:1063E0001D4F5BCB52FA1A3F3B68E637A6CCEE1343
-:1063F000DE656F4D9C71288A1F7FA178D2DE1D0E4D
-:10640000BF5CCE2E47FAEBEFFB73F5FA8C43F95FD6
-:106410001D2F9B85FD79AEF1772B48CF095F49FC95
-:106420009923E448CE3C2E0F72AB594843FEFDFC45
-:106430000B164D1F6099109E32AB558DFC4D4C775D
-:10644000CF81F743C5DB4C65BA8C5BF850D4BF50A5
-:106450008E6CE2FE73C3CF0FEB7E17CAB9CDAF29A6
-:10646000640BE7556A0DB8DE39EBCDFEFDC12CCAD1
-:10647000EF8EFE7AA1D7655AFCF85F751D3A701D44
-:1064800012FFF9EB105219D19D51D72456116FFF0D
-:10649000FB44D0A9B6E210B743C0F87B272A1E01FF
-:1064A000EB99829BC04F83F74D44BB35B886F9F317
-:1064B000E3C84B9B9A48746F637A7828FA0FE65CBE
-:1064C000DFB117E5D50466925F71E4864DC5EFD262
-:1064D000B8DC080567F2F27385E265F9EB5908E369
-:1064E0005B9337D4ED47BF5E6635B79B33D7042542
-:1064F0003BD473EA981F87C9AD64BCFD6C16D27992
-:10650000BCE66806D0CD104137430C7A5966A69791
-:10651000C17596B8D01A737D20D2057C37D0422F32
-:10652000D67E723446F1B8BCF5328F17CD32C77DB6
-:10653000F259F7FB3F0778F30FB9FD61161B6FB2F5
-:10654000F6AFB24001E265F70FDDFF590013FCD949
-:10655000FA49A98817902749244F2AE2DB3D31F4F4
-:106560006AE81BBDB48FC84FDEAEB7F7ABF2D39766
-:10657000CE0538D67A7446E307B349AE2B225E794E
-:1065800030F37A6707FA6DDC4524DFF7631DFD3CC5
-:1065900019970C8C96F78AF02319F546E147B28ECD
-:1065A0003755E57AF07B4C9F8A7818E50864605C83
-:1065B000CF9691BE730E8C67F381BE15E7BBB16AAF
-:1065C000029FAFA6FE2D1AFFB071FB481E32BE1F00
-:1065D0003377CA79E1A3440DDCA442199C04660414
-:1065E000D27F0E0B35E2FAD635F3FD2DD2EE16D161
-:1065F0002E8879053DED02D06E84A9DD3C9C0FB458
-:10660000D34DED2A62DADD26FA63A671F598716B37
-:10661000447FA4CFF5B4F3C7F4B754B4233DB0A777
-:106620009D16D3DF3231AE6E6AE78B69F7EF067CD9
-:10663000A6719979DC9EF7A576E33DF9630FE44FE7
-:10664000217A39943FA57C2E8CB3F4451B97115BBE
-:10665000793E874157FB45BB26A4AB42CC5B6163C7
-:10666000AA294F85E7AD34BA673A0351CF7BE8CA10
-:106670003DD317FFF95C537B758D8BE9C5F49CDA2C
-:1066800037FD5D11F1AA1F4C427FEBEA3459F8DB6C
-:10669000AE69D05590630354537D4D86786FBBA689
-:1066A000810262223E02B2F29B8551FCDD33FE3F45
-:1066B0000B7EE13F8EC03FDB02FF6C33FCA2EECCD1
-:1066C000E4EFD595B327E17C0CFFF2D9A6E50D41A7
-:1066D000F7FFE6F95559E65765995F95697EF69596
-:1066E00055938279FF97E6B7CC32BF6596F92D3383
-:1066F000CDCFB972D905AD9FB5DDDDB66692B76B6A
-:10670000F35F27FD7FAD88E326ACD41B56E07BE02A
-:10671000ED76EA4F23F93E8AE99FA33CE8EFBB47B9
-:10672000548DE482D323935C60F9F6507E36876BF8
-:1067300026C885E7541F97DF02CED72CF50F2D759D
-:10674000F8E56FB86FFA9861475AE47C3FFBDACA04
-:106750004CBE9FACF2F8E5E87D4D15B83938A094F1
-:10676000E44FA38FCB9FFD03843C4A837D8DFC4483
-:106770001924AF6C425EDD57CFF3D89A457E506343
-:106780005A11E1A759D80B2C9465DA370F4C9CD2DB
-:10679000867EAB334779DEE23A1BD7C756D6339DA8
-:1067A000E8ABDE49F945FBA0DF003468057D0FCB7F
-:1067B000E741DFC3724F7D0695BFACD7A8DC01E38C
-:1067C00062F94CBD9F0560FC6DF563A8FC31EA8B56
-:1067D000503E20F4C52BD264F2576CAE872D339F08
-:1067E000F4482A1FA9F78D5561BC9FD46750FD233B
-:1067F00069E6581BD9AD1D8D4900E7EE57F3285FB8
-:1068000069429A4AFB2F53C34A5249E4B981D78F50
-:10681000A44957E077E33264DECE196AF4C66F57B5
-:1068200086EDC664A8040F7307156F5ADC76E5364B
-:10683000C04BA95BF4E70B347AE2F7F72D6C57E411
-:1068400016FDA5698DEEF8FDCDC47147FA381E58C6
-:1068500046474362FC763760BB429F986F56584E5E
-:106860008C3FEE6C1C3725A53980F1AD2B6733D2F8
-:10687000476D69DA66292A3E141A50C164A0F39460
-:10688000D4E63A6CF78D809FE5C0F89AD7CF64A024
-:10689000679B1BDE17624E138F478DBF0EDEA33E34
-:1068A0008CEF4744BDC7EFA11C3B4B7C9F647EDF50
-:1068B000A397AF613D793C98BC646B32D79365CEAA
-:1068C0009FCB571E98847C9F6CE7EF7F8A75D4B767
-:1068D0009633431EF1F609FCFD8F8CF65EFEFE1723
-:1068E000A27D4A0A9FB76B8A338471B147BE7B4948
-:1068F000E6DCC2C87C2FFA5EC1B0B951F37BE47B01
-:10690000E332E7BA23F3B9E8FB1386CDEDC3EE49D2
-:106910002D977B7264516E25371792FC1CE5A820D9
-:10692000B9336A60A98EFCACACE770FD87EDAE862A
-:10693000863C822B88F2C680EB278BCD700DAE3162
-:10694000C3F5931A335C836BFB866B9D8DCBB5DEF1
-:10695000E083F1F5E8F11FFD37F3F8437E601EFF99
-:10696000D11F98C71F72E7571E3F1CBD2E9B6E3765
-:106970008F9FB5C43CFEA625E6F1B3967EB5F1FF28
-:1069800051FA78922D70C426F45D255AEFAC0B981D
-:10699000F45368F78A681754A2F5D840C0A49F4200
-:1069A000BBD76D42DF35B5AB8869F707D11F338D93
-:1069B000ABC78CDB21FA0BCBD1FDF963FAFB8B68FB
-:1069C0001794A3FBD362FAFBC080CFD4CE17D3AE0B
-:1069D0004BB463A67199795CF82950A19FEFB30479
-:1069E0003FFA47964D5E4371AF812C20A1BFCF97F0
-:1069F000CA461D82EF592ECFBF4F9EB2EC62B43B08
-:106A0000D7249BFD5CE9766E9FD9EC0A95BE44566F
-:106A100047F900CE60E68CA87C8B6A3BDFCF7ADE3C
-:106A2000BB8399D746BD1F28BE5F23E2D469F6D247
-:106A300046942BBEC1D03E8EBF22538C6BBC67697F
-:106A4000FE761DE0DDF8AF3347A3BF2832AE8DB729
-:106A5000BB588C9B151FAE35D97CDC45386E213E6A
-:106A600037F48B6026E1D7C74BE3F9839EEF49FFEC
-:106A70000578593DD9292B49F07E3DF76F1A7EF6EE
-:106A8000647B9D13F3761B2F92D963D82EAB6F3F97
-:106A90004E53BDD9DFA9FA2A74B4F70655FA8A1401
-:106AA000D6FB770F97CBE5F1E20DA3C5BC9A2A2759
-:106AB00035E7C1F8EC90D96F0B84CDA2F3610A954C
-:106AC000C0687B3CBF6D538129AF3E7950DF7EDBD0
-:106AD00046A15FF4CC033A8AB77E370AF8D8C602DB
-:106AE000939E959C3293F4ABE486AB9DBE38DFADAC
-:106AF000B5F4EF6233756C9798D6CC64EE5C34E9EC
-:106B0000614DBEC7F83E94093209E33F693BC2C8F4
-:106B10003F674BF8790A3523149428CEC1E7896A78
-:106B200025FE24AAE1A00CED076D54593895B1FB60
-:106B3000E5C08D881F575E33F9C7549F2E219ECE26
-:106B4000D94257D379025017E3E57FCCB3733FF0B6
-:106B5000C3DACCDF65C759C7DBEC9A492F1DF4A90E
-:106B60009D858B7B6F1F69C7E1EAA1D30CA04FE421
-:106B70006F8DD3E9ED8ABED84EFA5A968FFC8E8679
-:106B80007C35F85FC4B7E78E61E247BBE10F308F19
-:106B9000DBDA6C3CBFEF73681D15F7B94DF8BFE643
-:106BA0008A78F73C56E1C597A7995C8E7C759ABDAB
-:106BB000EA2D8E5AAFB5763B1F678D8DFC5B463C48
-:106BC000777EB3CDE4EF5AB8D15C5FC066A6A35C14
-:106BD0005AB0C1C6F07CC76D167FD8BFE17C615E3C
-:106BE0000B59DD2AD4D38DFCA0B93EA662FEF7E294
-:106BF0005F3D528A7943CD769EAFF301D08B16C5A7
-:106C00005755EE901DEDF97776155F3F9EE1F7A1A0
-:106C10005583509E26B3B8E78C6E5D6386AF3FF810
-:106C2000ADF032D640F0F60687BA558AEBBF7AD47B
-:106C30002E99E244CB9CDE910CE4CC39172F7BFCDF
-:106C4000297F74917CDF27E80836C0CBB89CAFBBA6
-:106C50001CCBFEBE3BD8CB778B9D1D76E48F5AB5FF
-:106C6000AE5C92237126872DA00F86EF6C7B268663
-:106C7000073353BB35E7D9AE4DCA39AF76E5721F3E
-:106C8000FD750A79F9C2B69FD9D1BF78FAA913D791
-:106C9000201F2EFAB5C29CD0AE739B8785715F50C2
-:106CA0004376942755BB94B871598AFCC3FC17FDF1
-:106CB000C24372A26A8723341DBEAFFAE53B231993
-:106CC000E0A1B3A1FBF060DC479F92787C34D8311F
-:106CD00012F7AD2A95DD122F4FEC84A0BB53CF25C0
-:106CE000CEC27595B6EEBF99FA6DB9C1E688920F1E
-:106CF000C7C4BE04EDB87FED4929941F477E18F143
-:106D0000AC534F4A1CBE3DB6900BE1DBBAD91E0016
-:106D1000386AB77E487454F68BED5EC443ED1EC5E9
-:106D2000E4F7ADDDAA841D23A93C8125C65124E0EA
-:106D3000EB1AC6E563CDAEC5E40FAF6959F7A1E222
-:106D4000C5EFCDF40C78F18711AF6F28FEE958DF5D
-:106D5000F973AF06A8FAA0FD712FE215FA9D634FF3
-:106D6000C278AED98F8DFD7F9A12DB1F63DD76A4CA
-:106D7000AFDA96B57C3C0BBF7C80BF64C6C64F9C27
-:106D80000E4B1C6B6BEA79E9898BB69F7D3408E367
-:106D90009DDAF1D74783B87FFFBF8F1EBD13F59AE9
-:106DA0007D2E1FF27BED53AF7959D43E98E3E07C02
-:106DB000D7F9E4CF9F7818F8A4F3B8838EEE75EE78
-:106DC0007D6F8806F3ED7CF6BFD335687FC7DEABF9
-:106DD000C8EEBF6377D9C0BEF643A4D350F43917C9
-:106DE00091C7A4ED9150D902435E94967539B84B82
-:106DF000612E80F3F4314708F39A6BE1D9B2225C3B
-:106E0000A7C5247FB1BE1CF05BB36DF587CAC878F7
-:106E1000780E0E9631C79E01BB64E03A5FFBED6FC2
-:106E2000946069A338492DEB26F969FDAEF628ACCC
-:106E3000E765BDAFDF59F6B91D8378B5DBD6F271D2
-:106E40002DEB771A7F191BBB7EBA65FDCEB2EA9F88
-:106E50003E8C2F77A5C68DE71AF1AFC5BBFFA54FB6
-:106E6000BDC99003FDE1B752E270791C7A8503F940
-:106E700069C7D34F3C9CC6D7773A20A473FBD9216E
-:106E80000CE8E3A4ADFB66948FDD7B1D3EDCCFAB4D
-:106E9000F6BE41FCD5B9FB15BB46F291B925D0131E
-:106EA0003A59CF4F3BEA0D3512AFD46EF1841DDE57
-:106EB000C83AD58466946B5E7A7E829E8738DDD729
-:106EC00084F65F27C559B7D58E1C2E8F433C696F5A
-:106ED000F1963FD899DBBC9ED2185CC71353F0796A
-:106EE0006FEB68CCDF87F3BF3C6A3DB7707EED8DFA
-:106EF0002F3B373B54CC4730D6B7D3C6F5FDDA909D
-:106F0000F4068BC3AFC6FE76A1F1D00687251E2AF4
-:106F1000E6DB1F3FF73F8F0BC3D3124CAA1C1D8B20
-:106F2000AF539FC797EF8F382401475DF9A0DCD896
-:106F3000FD496515C1C1D911784F8973B3A79E5218
-:106F4000424178BEAAE520C969AB5CA8E9454F7EFD
-:106F5000C6186FCFFE9128BF4E1D788EE8B066DB55
-:106F6000093BDA4787B7EEB4771446E81EE57F742D
-:106F70005EE4A967F68F24398DFDC7599F5F0B79B1
-:106F800057DB6AEEBF76DB87A6FE17055BECE417DE
-:106F9000ED679C0F54FD069CEF07ED368679F71FD1
-:106FA000B428E5F1F49B90C366CA835AE5293D866F
-:106FB0007E4525C5AEA1BC6B5AA1BF11A4738F3607
-:106FC0007EEE51D58F39802F1B93ED1ADAAB4D9E93
-:106FD000EB991625B79B2DF8F4A5F926625CCD3701
-:106FE000B9A224DA7E32E04FD66513FC7778CA075F
-:106FF000E27909B4C3344C3250FDE45756BC53CA4D
-:10700000713E8A4FF6B9E2EECFBC3FF4B721FDDB0B
-:107010007C32D3A2E86B54D9F5C3D1D5A632CD9436
-:10702000BF7AEF641EC735E67FEF456C1303B97B6B
-:10703000AFD4DD86F9ECC1AB795E201376BA17EDDB
-:10704000F4EC587D8EE9BA86F287C40F6FCF7423B3
-:107050007F147EBE0FE0C898BF23FB4999FFBEA2F4
-:10706000533E8F1DC7CD45FB2944CF135998EA8A5B
-:1070700093CB1F0FABA3E749ACA319CF30BDEDA84D
-:10708000F8D401CFEF2B4F9138DC61CAD74816E313
-:10709000C88959997DF13F9BAC9E8AF6FB38D8266A
-:1070A000B24BD0EDF8456A040F463E9CD1EFBDAE21
-:1070B0000912EE3738BFC178AE479C9FF7F5CC5721
-:1070C000A7FA00A36E19075BFA4AC5164BAC1890D5
-:1070D00054056F0D68263FC720D64265166BA73250
-:1070E000C5E9935482EF2DF24BC9ECCFEC8B440BE6
-:1070F0007CE7A18F9F93F5E301281B6DE2F9DB9EEE
-:10710000D0E350DF90CC4CE783739D9CBF2F77CAB0
-:10711000865F26106D7735B26A9ABB2B8D1F63315F
-:10712000BEBBDE1918EE8CA227C5DDCEF3BE84FDF2
-:107130006BD8EB5729CB29FEBE3A83DBD5BDADCF4B
-:10714000CAFA0A935D6D2D9B0738E76C66043FF71A
-:1071500053494E7E7E59679A2F9AFE605C67697428
-:107160003EA3AE937D2FDEDB607AF8D28178546245
-:10717000E96F06D2DF68A4BF0ED14937F9296E57EF
-:107180000257E37C33F2EA24FE3C2071BF97AEE065
-:107190007CD345FF72627566A08F79B259401F514A
-:1071A000792D1B84FDA8AA4C4D284278368975B7E5
-:1071B000D2A5393FD5D0D7DCA2E6107972BF2979A4
-:1071C00095CEA3A8696ECA4F719734DD8EE77C55C2
-:1071D00056E743F9E936F24FFC3C9FD0B08B5D0592
-:1071E000E63C4E87256FD526ECEF983C6EB1EFDE7E
-:1071F000830FE2E8C3D67DF77667FC3C2436267E13
-:10720000BEA0A1879D2FDD5BEDC86A67FB611ADC1C
-:10721000A7539EA52AFC0D13AFF3911FBC6B9BC413
-:10722000CFAD59E8A86B47D2489487C8BF78CF45FF
-:10723000A2782E6DDBBF1FF5A6262FD3935348CE21
-:10724000694A2E9E971AE594A05CBCEBC3977F8D8C
-:10725000FEF55685E1D6DCE536E2937A322E5622EB
-:107260005B6F5ADF0B9D4F6C5C91F3DB129FC16F1C
-:107270006EFAFECC3689CE4F296CF88FF1FC436D47
-:107280009B8D85E0FD19C6FB3FB389EB030B5F8443
-:1072900051F03CA8181FF7A5E8FD23B53C8169D142
-:1072A000793C41BD1DCFFFCF13F8185091627AFF92
-:1072B000D7B9E56DE49F09F07B0006CE1A64EA6F4A
-:1072C00091B27C2825E1093F8606FF90FE8CF99F4C
-:1072D000930376BE4F542485499F01FB17ED86909A
-:1072E00044F94A567F47CD1E89F6A7DB607FC2F37B
-:1072F00038B7852CF6A3258FCEC0B7952E0F3985CC
-:107300007DE066EE5EF0EA0F97507C94F86AC98BD8
-:107310003C2F6CC976294479CC1D439318E159213F
-:10732000BFD17BACEE41D83922F46BC19B23C38C17
-:10733000679766C673628119AF1EBF198F563C27C7
-:107340008DC931B55FA454DB89C8049E0BE01FE2F0
-:1073500019E420CDA306E611D662F159D97AEF2AB5
-:10736000F46FF48B470BFE4E59F07796B5EEE76F4E
-:107370005985339D589BE69DA986897FACFC66E0C4
-:1073800029CBD73E919EF93DE42FCE109D48F3F8CE
-:1073900077839C2D9C798AFCC46F467E7062CF7E79
-:1073A000F90EFB02CAA5330E9D98CB62F96B1396BA
-:1073B000C0D72DF54EDFBC7C8C4F33DF3C1BC6ABFA
-:1073C0007D54C6D947A97FA047DA0FEEC1B8641A29
-:1073D000F2B54AF12B5CAAE9504F6CB5F9D06F7940
-:1073E0004F51F735A8B7D7CEE7798E372770FFEB27
-:1073F0009204BEBFDA12785EF35D1532D3D1BE6F50
-:10740000554212FA8B7CFA8B57A2DED56AD3685F9D
-:10741000F375BFFC1D7A5FECC3F86EA6DC3C0AE195
-:1074200080F6E46FEF6A7DC77B6B94BED3B9E7FE4D
-:1074300061B8EF3C24B3CA787A7CBE8BC3D159F0D3
-:10744000E77424C7C5CE6EB2A35777D455E0BC0C01
-:107450003BC2BE8BFBB76AF6CC207DF2D0027E1E0B
-:1074600073F7297E1E738A32FB9B23A03EF6359567
-:10747000CB4DA64F9F93CE5328701D3760BE24F28C
-:10748000C17FC9A106C24FF3EF314ED5F81795A1C0
-:10749000FE5852B780F69F5F7BA7B46159AAB71414
-:1074A000235F4F6E4D9E88E7646ADFE27995A3DB28
-:1074B000CDFE1CA6541F443FD8D9637C5BBEFC980C
-:1074C0006AB5BB14DC8FC776989F8FEF876ECB5C55
-:1074D000623FF2B2F40BC98BFD91AC4F73917F9474
-:1074E0009FE3F2ABF1EDA74713B87D037891504EBF
-:1074F0007575337F03E0A96BDE209A6FD7C7FC6AEE
-:10750000A6AECF95F278F6D12D2E4E2F0FD979DC7D
-:10751000F6A105EED00A98C781055517A35DF4C9F9
-:10752000BF052E8E17A788D8072C49A63D4F4F625E
-:1075300063902F9AF8F932D69C19EFFCBCC10F0664
-:107540007F187C91B9202110CF7FF98E8BCF6FD21D
-:107550008202CA83EDDC27518CA7B301E0EA038FD6
-:1075600041D63018E1A9DDF311F9179CADF1FDD03A
-:10757000F5784803E9B621B8623CE0EB7BC0D44122
-:10758000E4077B7376BCFE836C03F99B16B834E288
-:10759000B74E27B7A399DA9C39D3837C5276F52A64
-:1075A00080F361E03F24F9876C7E823BB89831F22A
-:1075B000AFAA9CFFB3AE619BEF8AB2B7D6BA263EA4
-:1075C000E082FE1E70F178476AC02F21DCFEBF9F6B
-:1075D000F362FF5D9F3A68FD06093F8FF15D8BC046
-:1075E0004F5982FE23FC9E55A69130F407BCBE790C
-:1075F000B0FF5FB607F01D27BFCBD077520220FB4C
-:10760000009E14B74CE756D0DE427BA296193F414C
-:10761000523E0DFEC34366783ECB90B752AB14F694
-:1076200080DC2C71BAC3E84F49A98479633C8A395C
-:10763000797FED667D14252FCA5D94013C599EDB50
-:107640003B861C36E477533297834DF7AAA146094F
-:10765000D3DF3B5CE83FCED6B549985A95A26A94F1
-:10766000E7705125F3075148E63E92DCA3F78C679B
-:10767000ECD9BF2B71FD1B275DDC1E294B08FC0AD2
-:10768000F135B2ADFB00AA4F7E174BC5F59E22F433
-:107690009BB1A7B93C32F2FA6B85BD619547CF012A
-:1076A0009DA3C018FB0DBEEF8D3DEDF623FDF4C884
-:1076B000A10553681F2D6A2D3E88F939456F717EEB
-:1076C0006442FE80F54678296D0B2A880FABDCE911
-:1076D0004FDE18F2C4BACEA05CF7D4B30029C56D52
-:1076E000C06751FBB7554E1D7389FD55C8A9B36CD2
-:1076F000C2C0ABB4083D152DF31F7444D18F21A730
-:1077000022F414223AB48E2331674FDD978BF2E5D1
-:1077100088827E90AE893C3EB942F051F2C7A1AB5F
-:1077200071FE1B5AA7BA90EE77B4953991AD966465
-:10773000F0735EEAFEEB824C904F745CD7C69C1AE5
-:107740009E291F0F2B8FF8507C508F9AD79966492E
-:107750009C73D492AE8B733F82512EC9E0E7B8760A
-:10776000B4E524713B334CEBDE43F7C20F61F08587
-:1077700041EF56FA36F8A19171BF84A13F28528B90
-:10778000B00BCD7E8146C3CF1174519CF80EA10F72
-:1077900036BA2F5937017E6D0A4FF2615CE20E4F07
-:1077A0000EE533DF3180E3CD8A07A3ACFD14F4C3CB
-:1077B000A8BCF35AB59BFC5AB59FDA4DCF0DBCF669
-:1077C000860F03AFE310AFD297C7EBA7B8BEA36392
-:1077D000F1FB65E79DB5644CDCF372FF57E63D9E17
-:1077E000057EDD4176173FB761D097212F4A976E0E
-:1077F000CC24E26837DFEB65C891317BEA0EA28AC0
-:1078000068951397B5B26B114F63C32AC3A32EFDBE
-:10781000C98D8FF1974C3A7F716302F0DFA817662C
-:107820002DDA068F466A2C753A0035B25D2539C6C9
-:10783000DACF2F0ED512FE381DFD8B865E1A8357C8
-:10784000A1971AFB8B11075A9710A8C4F1A53DC048
-:10785000375ECC3FE5F6EE5A57605102B44F0498BC
-:107860001330D7AE209CCDED53335FF6C687891613
-:107870003E6B01BCD03904D8E7F2A558388CF1F33F
-:107880001292399C406DA8BF6495323E580DBFCF0F
-:107890002E6B240BE03E8CC736719E6B85FE759770
-:1078A000A55CEBAA68C079D9541674147D79B80D1B
-:1078B000BFE0BA043D88F87096EB348FC13EE647CE
-:1078C000BD7EB0DA22F9018E946A4DEA71D618FBBA
-:1078D000379EFB99AE4D44BA189CC7E83CEC60D487
-:1078E00083E2ACCFA6041EAF5DECEC388C21F3DA5A
-:1078F000E975E5DE3EE2D3917B06FCC24F65CEC35F
-:10790000E8DAFBC64518977CFBDF3FF260DCE94F05
-:107910006AB707E13CB9FCF71EBCBFE5EDE5DCCE7C
-:10792000B8D9A2CFEC14F84B4EAC780AF1774BFDE6
-:10793000DF4BA3F99D2DE37194DB420A1A9D3DF4C0
-:10794000BD686B22F9E68CFAE2965453DDA0D3C5EC
-:107950000E9E27659DFFFBC28EBA6DDB66FB600D38
-:10796000C70FB422BE4F0A7DEDE42E0FF9330C7819
-:10797000E66E1B65473CFCA9D521E2F0ED368E7F13
-:107980007D3AC6CF026229AC701EDE9748FDCD7FDE
-:107990004021FD620E8CB50CE83BD07A1BD9D9D6BC
-:1079A00079CC7F5B9B3210D66FFE5A89F4526CBF44
-:1079B0001CE821B06C35C5D9ACF39C13B4C6339721
-:1079C000939D6ECDF398C7B47513B2E3E47BB4F224
-:1079D00038F9C27EEC9A3F26087DA1945D8EF9E8C5
-:1079E0006759E18F0AB5FEED9A93F58C92B43EA8E3
-:1079F000775279AADE47E553091A8F67EFD97F9846
-:107A0000E84B6D2F457EDFD1F64EE24D5A446E5F56
-:107A1000B1F9A3833F817A31E3FE1BC33F3E5BE0B4
-:107A2000FB4A21BF170A7DA0F8D3BEE5F76C9CEF97
-:107A3000C858780DB93D1BEF958DC28321C7ADF8AD
-:107A400038D3969B887421255AE3C05F0D2FBD7DE6
-:107A5000B758899F3768F0CF53C21F306FCB8C5512
-:107A60008360FCC6BDEF0DE1F702B3A3281F0CFA3B
-:107A7000B4D21F637576E4E71E3A6BBD9BF063D00A
-:107A800005F05186883F66A0DD67A5B7FEF2893A0A
-:107A90006D1D43500E58E9AB536271EF154D4DE427
-:107AA000FEF2799A3E05ED50D85E56F1381D973FAB
-:107AB00027D5E6C377227F6EE1FCB1F857DB7F89DB
-:107AC00072A7EA170F7851EEBCAF36A7E378D58FCF
-:107AD000AFF4629CFBA41AF4E2F7EF8794B87985BF
-:107AE0000B1325E10F37E72BB035C16B906F3F7952
-:107AF000DCE6433F43ED56078F83EFE278833A8F0E
-:107B00007FEF8A9FAF50F5F307D2359EC76ACE5BF1
-:107B1000D862A3FC13F497E130BDC5717BE2C22D9E
-:107B20007DC7B76B77AD8B9B7762E40758E9F606A4
-:107B30000BBD025EC88E09023CE4161771EBC62726
-:107B40007F3CF204C0756ACB6FBD5261B4DF9CC745
-:107B5000C7CFB4DCFA530CF1F446AF9D82BE237A52
-:107B600043286E1E43B52DEC453BBC7AB38DECBA71
-:107B7000EAED0A73623ECB7107EDDB8BB6FFE6F5EB
-:107B80007100DFA2676D69D3F934285FC158A79EE1
-:107B90003C12B12E553B7FC3E3BD9AC82711EBB30E
-:107BA000E8D9FD76CC8BB1E2B1AC65BFBDC3928F95
-:107BB00040EBD472620A9DCB7BF29C1DF7D3F7F7A2
-:107BC0004974BFB2F5FBCACDBFF1A27C403C515C09
-:107BD0005EAC57EFF942E16B9E2FA176E487EB6D27
-:107BE000FDC6E0DE3A9AE8FB99E761FCCA371D94CE
-:107BF000AF54F9CC52CAEF794FADE374FEC8CA74E2
-:107C0000DC5F2B6DC1741F95FC79E5A3DF25FA5B62
-:107C1000F8CA77D3F9791E3D93FB6D829938BFF985
-:107C20009BFE85E6B7800588FE2A1F512AD05F7229
-:107C30005665E5CFC6E1933F093E79EF310706511E
-:107C4000D97BC26F197C5511F7FE5AE349FCBE95EA
-:107C5000B3C28EDE95281BF71439A3EDAADA2DAB3B
-:107C6000DB717D3EB8481FE8A3B8BE1A14F89248ED
-:107C70001F7FE5AA81428ED13D31869E5386CFB1CA
-:107C80007DBB8DEE8B89FACE74DFCB1D627C803B91
-:107C900041BA0CCAF4F8FE4C8F5B32E0E3F92F06D0
-:107CA0007DF5C6F75B783EC9C747B95CC1BC187A99
-:107CB000DF6E0B0F34E5C3384CF78944F23D6C821C
-:107CC000AFCDEF014ECA57E9C1EF3E89E2AC0B36AA
-:107CD00038CC79703D7463BDE7C69CBFB2D0A26F4B
-:107CE00019A5552EBC69910B6CD3F9E5AF54DB4255
-:107CF0009477547DDC41F643F5765B05E2E3AFDB38
-:107D00000EBE7E13D0F95F5B0CBE35CB572BDF5612
-:107D1000EE18CDE2F1ED5FDD7E16976FE1795CBE86
-:107D20007547E2111AFBFAE4EBC25EE4ABE28ED1D6
-:107D30000792302FF783A7165D4C7E060B5E0DB9B8
-:107D40006A95978F246AFCFE8298BC3ABE9F47F2E0
-:107D50001D39FE0C7AAC7A7A318DD343B7065D1AA1
-:107D600074DB4B9E96158FD6F72FA23C1A10EBCFE3
-:107D7000084E620578AF5EA39D15A0FF392827F84D
-:107D80001FCF8E93D7C1EA86A29ED1E8CE8E9B9F4D
-:107D9000EB77FBD08CC573654ABC78B7BF4C8EAB14
-:107DA000C797B8B95CD98BB40065B59BE3AD49C43E
-:107DB00057C012A4BC7FF429123F257B899F6CF029
-:107DC0009CD1B94A3F9DDBF627CA1F69A08255B8EE
-:107DD000B5292AFA538BE5A5B9505FE82EE6F5F1EF
-:107DE000F2CE1CA8DFE62EE1F5CBE4621B90E61391
-:107DF0006CF494C950AF31E6392FC9E4DF50E51374
-:107E00000F62DC457D9EDF17B70EF8DA591489F74B
-:107E1000263A58D05584F7344209F555D9BF5F85C5
-:107E200046E00647E01A37C9A3491AE2F594CF495C
-:107E3000F932773C7715E56756BBB9DF78F8CEF1B4
-:107E400074FFEED730FECDEE01BD8FDF64E3FD9C05
-:107E5000DA31BC0CF13AFC62467E0803FF45AA46C3
-:107E6000CF5D2D78F494F83F03CF7F3426DBA99FB4
-:107E7000EA9EF53ABFB251E43528899C0E9424B9A4
-:107E8000EE5928978AF5BF43E0037FD05EEEDA3BD8
-:107E9000F0317EDF53F7105C5F4539F347D41BBBED
-:107EA000FF35D18FE757DE4CE0F8BA2169BDED52BE
-:107EB000A81739872C45A27E53DAF65D2CBFED0951
-:107EC000FC90E39F85B1BF9B6E56787FEE3A0FDE44
-:107ED0009F26E95C8F96806866031E1A75A6D97383
-:107EE0009145CDF9168A52D41DA6713DA671591639
-:107EF000EC83B04E378CE5EB0438A57DF18D31BCB9
-:107F00003E2B94D3D8A1111CF7201CA31CA18BD00D
-:107F1000FEB909D4224ED766FBDB88D3D7FE4526AF
-:107F20003BB356D21ADD50DFF91623B9DC99E015C0
-:107F3000F907FCDE19C32F31F6A5B965B864257BB6
-:107F400016F13C0EE18732E2E86759AB829389F182
-:107F5000535BE4E178B69EE4647FF1B19FBB457C5E
-:107F60006C101B7481F1B167DCE7111FBBC86DE8B1
-:107F7000F322DE2EF6FF334772285F485531278FF4
-:107F800031BBA6508A88F1DD2E8BFC35E878C451D0
-:107F9000DFAD88971147D92DDC5EEA253FE224A3A7
-:107FA000BCE6511D05941F61B3E6471C9329E1A966
-:107FB000F4C5620DF1D924E2C6171AB737E2FEC53F
-:107FC000FC514C1CFF796F39C5418B7DF1E3F8E31F
-:107FD00094D914776047F8FA19717CA6142A08E737
-:107FE000D930D86008E751F3DF01B93C2DA8505AC9
-:107FF000CD5BE6E7E32C74605DEFBF58D7FB7CF305
-:1080000020DEE7F7AA8D6223290FC226F2207EC95F
-:1080100002F747E7411878EC2FCFC49A5762CD2377
-:10802000C90C98F134B8F252D3FB8BEA8A4CF58B29
-:10803000978D33B5CF868D30BA9EBB669AA97D7E6B
-:10804000F34C537DE8C69B4CED8785E69ADE0FDF47
-:108050005AD5E7BA8F6859627AAFC8A162BC0FD20D
-:1080600058F7CBF6FC202E5D18EB6EE46961BA116F
-:10807000E27734ACFBC3D9E43F2A93B4D8F5F78751
-:1080800083B42F5FE8FAE77B843E7481FC3E0A8963
-:108090000DE3443AD713BB6CEE35A81727036C28C1
-:1080A0006FADFA4572EB0BFF2D79E3E55B682B9022
-:1080B0008EBEAFE86371BF1F20F2239B64719E7474
-:1080C0009293F4817B64F996E87BE4AFF0703972A7
-:1080D0008587FB557E02FB26EE9383135990F64F5E
-:1080E00071BE9CA1430AE6EB4D65E2FCF963AB2649
-:1080F0004FC078664781968C2205EADF88C8FD9BD1
-:108100001C5A23C60346295C8E837C9FE6198DFB8F
-:10811000CE721BD77F8236C4F360270B7A8B68DF61
-:10812000A3B866324B939614A2E9D5B3BF685F003B
-:10813000311CAC1A9E8476D0CB383406699D09B4C4
-:10814000FFDF68C8BDCA6124F7CEB87BEEB5A0F3E7
-:108150008E67E6E5D2F3E33703D701FF1CB79BED4B
-:10816000A2FEFC53959BEFF7A0FFFF780133E519C2
-:10817000547BB81D55ED5178BC3CF49774444BD7F3
-:10818000FCCF2E41A06BA5F65528A2576FBCBD822F
-:10819000F27677CD08A2FFCFF03B1BFDD4B64E643C
-:1081A0003DF707433F37BCC1FD5F377C66F6E7DE2E
-:1081B000E9E179D7778AF1AE87C20778BB1EEFF481
-:1081C000C6F2850953901FE0795882FAB7DB40F573
-:1081D00003BA9F11C8B6213CBF67FED7764B98AF54
-:1081E000ADD1F7D7B10A1BC2F5FACD8B3DD8AEA7FA
-:1081F0003FA39FC178A613F6E9E4A02D1DE8A7FBD5
-:108200001B12EDEB309E139F57CC1EBC12B70E63B2
-:10821000BCD759E0F46BB0DE33999FFA35FA672C7E
-:10822000C1240777542EFA536A0ECA3F99FC1F4B9C
-:10823000F63A48FE75559DDBFE20BCBF6570C7450C
-:10824000A85FBC59F5D92588971B372A4C83F50FB1
-:108250002504EEF344E1EDF8BC8F3CF81EF484C72E
-:108260001FC44DFE69079DF37AB3EAE94BA2F5EA14
-:108270004D9E893FF6E03E39E6FCE23D654F0D2319
-:108280007BDBA0AFDB047D2D797228E9834B3CE6D4
-:108290007B53963C9E4BE7894A2516D78EC47B3F7D
-:1082A000302F7D07D0159E23DCF729CF1FDF7924DF
-:1082B000A598CEA3B2C07684CF68BFF3E59B865362
-:1082C0005EE7B1B4F3BB1719E00BA27EC5389C2F53
-:1082D00009FE98D59A5A2CF4BBE7106F37FDFAC9FE
-:1082E000D37F40FCEC7DFAF13BB14DC9F9E18389C4
-:1082F0007DCC2FF000FB18D93F5D2CC1EF8863FFC8
-:108300003C2BF4AFEFCB3AD925E7E40A91BFCEED91
-:108310001045F667601E774BAB928878F3A2C16276
-:10832000C817D009BD78FFA2B83FDD09F6D9702182
-:108330007FDA3D1F4F69E27108935E5772A8CAA4A5
-:10834000CF55C03F94F7976F0A34E23D8DBDEA7573
-:108350006199ECE12FABDFBDF325E57DA787F37FC6
-:108360004B0197DF2DE18410B71B5831EA7BCFE03A
-:108370005CE0FDB464BE2FD8A5CE0227FC7EC6F318
-:10838000C9AA3559B0DC791C1F58C7BFD3C3DA3826
-:108390009DF6E87F872EE57F674E9C032E11E7A2AE
-:1083A00063EC49E02BBEC92698F4C7F0E1BFD13990
-:1083B00097ED29DAEFC6A33E0F7A0AF2BD4BEDB076
-:1083C00027C799DF2F517E027D8FF572FBC4B987D5
-:1083D000C7E19C9A4EF79EB97CBE51682F19ED4FAC
-:1083E00089FD66F1E13787D8619D4ECB47BC1847C0
-:1083F000A8DEBDC38B66F2658981242FC64B8EBF74
-:108400005AEAA37CABCD43D0AE6D09F3F8C408950E
-:1084100005D538F735D76E2CA64BBF6B36A652392B
-:108420000CFD09F0A836CCE7D9B9A731259EBD5D72
-:10843000FB1F7B07E1BA3D3D809F971AD15ABC10C4
-:10844000E51FC2620339F7D4A7C3A9BF4BBCD93417
-:108450003F185FC5E7209164BCEFE86961AF757EA6
-:10846000AA503BA3DF117B262A3E58CBC270F301F2
-:10847000B20F5B1D1AAEB36B0BBF0FCED5EA22B99C
-:1084800057BB6F2AB7E39279DC737B42F71FC5397C
-:1084900036FABB042E5F334B81FEB7DBF9FE380C96
-:1084A0001860873BF2DC18CFD5FA634A6A77E6F1A9
-:1084B0007BF55C6A33FB863B1AEF1EC2FB542FA789
-:1084C000ABED096119F376BA81261F23B822703209
-:1084D0001AD7807318E9F3DBEDDDEFE2F94B3A5F71
-:1084E000A7211C1C4ED63A5443BDC2E5E3F15B976D
-:1084F0004FF307A558B86A47829E0BFC764F038B53
-:10850000FC7D04CC634B88D49DC013DB739890072B
-:10851000C3564FCE8AAE83401A13F97EF63DC35739
-:10852000374D203B27A8A05D0FA52705E7C9F737E2
-:10853000BCBF604011C703FA89139DFC7D4F7B27A8
-:10854000BFB24475F376FE245FE23489F5DC676AD6
-:10855000F89DEE90C2EF5E89FEADF081911AC05297
-:10856000FDC2F344B78BE4D6074768782E31B000DC
-:10857000E9F5576FC90CEF47FAE049179D432E788C
-:108580006E33F9ABADFDAD3ED6701FE665773D2786
-:10859000699807DA65EBA6B8514DEB7B745E71EA1A
-:1085A0009E13746E4B490AD47947635EC48A32C401
-:1085B000DF58D6DC88FE3D908714A76FC9E0F2E350
-:1085C000CCD14B1E5B1185EF07BDC2BFDB1DB818B8
-:1085D000F9A655F0E73ED46FA0DC2DF4ACDDFB6FBF
-:1085E000CC8D3E87156407C81FD6C00E517EA1F101
-:1085F000BC2BA4D239B0E1AF3B6FD1A3E8AD59F0A9
-:108600007BB3182F3F29B08AF876FF9FED5E0DF3FC
-:10861000585B86A0DC6D013DACAF7CC65A0BDFF425
-:10862000E4B79CE4F771C3BA3625C13A3DFDFA9E22
-:108630004BF1EF8B00FC8CEEAB3AEE20B9B93B9BD3
-:10864000F3DF8AD73E198972EB93BD8B2E467C2DC2
-:10865000F3DA0C3A9F9480FCF42C233966F0632102
-:10866000F2A384F742713F4A21D239F29FBD7D1AAD
-:10867000F1DF6E7E2F04D039D13DD0B90FF58B429A
-:108680001FD03D7D3F94F8797BBBCCCF81831CCF3D
-:10869000A7FA24CA57D9DE3ED947FC2C036A8B902F
-:1086A0002FC307A89F16FADB75ACC4729FEB294C49
-:1086B000D21810918F7FF3703E6D29D092FC309FBD
-:1086C000444531F141D43EC9EB621F957F74D3EA32
-:1086D0000DF8F7C3DAC5BE20F4AE7D42CF65C7B84A
-:1086E000BC5F2AF6B225BF19F7ED6D30DF252F29C3
-:1086F0005CFE0B3A3920F4E043F51954C7FD428380
-:10870000751A0D25DE0754AAD7E19F2F6163CA9B16
-:108710000F6239AEA2A50C8F4C4D98D57E909F610B
-:10872000D38723FDED3A70F570CADF3DEE6098A265
-:10873000B8EB6FDD7F7C0AF351F701FEE3EC4BE809
-:108740009F6514BFA9207AEC8D6EBAA48E6BC6FB10
-:10875000410FBCA77AAA0A1B7D0D1206E0E3F57B48
-:10876000AA56E3BD803725E9C7911E97FB02C79142
-:108770008FBA5EF95B3ACAF4DD47FFEC4579BFCBAF
-:10878000AE0F473ADB9503F6401CFA3C2CE8A7A451
-:1087900097BC8ACFBCDC5EBA24C8D621FDD4EC528B
-:1087A000E8EF169CDEA5E8780EFB5D3D908E7ACE54
-:1087B0004916BC7E3CEEEFC2AE9DCFD1CEE6A3DE25
-:1087C0003292EECB30D9994C592ED33DEFAD12F900
-:1087D000272A2D7A48356B5E3518F78DD6CD769CD5
-:1087E00047D516F3F7D5A8BF8CC4B26F7BF533AF6E
-:1087F000D05F72592EEA2F403FE49FE87E4DF13F53
-:10880000C628BFA70DF37B9E96397E405E121F1AC5
-:108810007ACC569F7E1AF5CAD3824EB70B7BB47BB7
-:10882000BB44F9FDC3B6F2BCEB7127B5CD8CCF9F2D
-:10883000F2C22A851C1CA7F2F8C5B8A3B9140F1DF3
-:10884000A333F2872C68954288C74A43AF13E729C0
-:1088500060DB25BD6E2C0B35E2FD720BB74A740E42
-:1088600063D156B3FFBE7AE32B87D13C5CDC62391F
-:108870001F2FF0628D6FECC05FE2C4372E4E12FEE8
-:108880009C216C88E9BC55DBF99DB7FAAB387FFDBC
-:10889000AAE8DF68372189D34D8D986F754809891B
-:1088A000BF4FE9C6FCDB5B057DDC2AE8A39685EDBE
-:1088B00098BFBF78039F2F5B6F33DD5BBC60D7ED44
-:1088C000741EC14A4795DB78DC0D1048F19DCA4DF6
-:1088D000E6F755021F55167CD404240B5C5CDF8E32
-:1088E00085ABE57A5CDFC5DB6CF4F739AC709D6570
-:1088F000B3298FE81F0D9F759DAE33D6E95276A937
-:10890000699DCAFBBE9F2062DF98F5DF670F5F4A53
-:10891000F92E67DA72C87F60D087B59F29427F9EA3
-:10892000BA91EB99A7F794258E40BBE888EA97A007
-:108930009FE2973EF6E2798FA2BD0AC3B860576BFB
-:10894000F13A3CA7BDB32DEF5ABC8FA2E82595F6AE
-:108950008DE2978AE85E90A2978A1273298F424B24
-:10896000457C403FB4EF761DC9FB7D21CACFB6C917
-:108970002588E615478A12513FD8C9B83F427AA9DF
-:1089800024B5236A1F599CC4FD03AB32DEB907F539
-:10899000F7A9CFDAE8BCC9545BF7CB987FB0B34DE9
-:1089A000F5AF807AF54B731BF09E8AEA27253FAA24
-:1089B000D987DB97A47D07E9ACD5E67310BCDF3D12
-:1089C00080EF83DB247F3EB4AFDD7BD5F0ED98E70D
-:1089D000BDB9D81F7D2EBB2859BB1FF32A5966226B
-:1089E000D9DF532FB2D17E7A6A50E2CFE83E167DAE
-:1089F000F31494B3A79EDF69A77383DB2596011355
-:108A0000399C71F019BADFE397AF50BE42D9AE5727
-:108A1000283FA137797F3AA4B030D9DDCD742FCC6F
-:108A2000E2CD46BD83CE415408BDA966CB09AA5705
-:108A3000A1FE0FE3556D52421AFC7A70EFAF28BFCA
-:108A4000A1661BCF6F80F7247FAA307EAA45E87C01
-:108A50002EE3743057C89F458CDF33B4A8999FA389
-:108A600033EE4532E87CFEB639948716936F86F66E
-:108A700025C5219A89BE63EF1BE2F46DBD77C84A14
-:108A8000DF2D067D0F63C390BE3F99C8F3C33E79C7
-:108A90002521B110E6F3C98B0AE5DDF741E7B49F64
-:108AA0001E11FBFF99B04CFB93D1AE73CF47B48F2F
-:108AB000D41E3963477D754AEB87B40ED35BF74FFD
-:108AC000463C7F8B05AA116FDF6A4DF4219F4FEF63
-:108AD000E0726B5AAB23847EEA6FB196265CDFAE00
-:108AE0007D3F6F4A417A7982D38B21CF160A7C2E43
-:108AF00014F85CA8F2FB9EAA0AF73F88F9D0D318B5
-:108B00009737D35A84BCD964C66F97AD4525BA1937
-:108B100021B1E6ECD8FD6E11EBA0738F5D99C3E92E
-:108B2000EF4906C15E453DAC7A9B350ECEEDFA1A93
-:108B3000CB7E7A30C9F6A5EEC178C7B22ED3BBF989
-:108B40007E360DE809E3216DE18642947B067EAC1A
-:108B5000EBD2A6E526F575DEF965A1B71BF56F8B9F
-:108B60007B265A7CCDEE683BBCDCC7F5F0AAB14A47
-:108B700010D7B5C75EC93B38529323F60AD8299F50
-:108B8000250DE076CB28E8FA852C85A5A545EC9542
-:108B9000D519F74F2F4AC3FB23B8BCE81C03FD616E
-:108BA000BE80CA484ED56E7384D0CEF81F85B75AA2
-:108BB0003D008000000000001F8B08000000000046
-:108BC000000B8D576D6C53E7153EF7C31F8913FBE0
-:108BD0009A78662C34BB31F9202584DB109A40D773
-:108BE000F626A51D83141C58296AABE2B65BD90A88
-:108BF0004E5085281295B889A9D6956942DA7E54D7
-:108C0000EA56DD226D621BAB4C096A9892C8A1A19D
-:108C100025E990A0401BD0D659FC60EB9490C0345D
-:108C2000D24D95D873DE7B8D1D12B43A528EDFAFD4
-:108C3000F39EF39CE77DDED75D7DFFF29AF544DF7E
-:108C4000EDBFEECDC2C6FBA54709B63A94F069DF89
-:108C500020EA20F2449A60FB242343B0ABAF7B139D
-:108C6000254423558B4209CCBBA1EAF335B46FF1FF
-:108C7000E7E1BCEDFA52212A23EA84D5CBF2FD9D2F
-:108C80006AD6CBF33BFB25D386ED3DF99F8ACA52CA
-:108C9000A2C981E98AE760576832FE71FFF796A89A
-:108CA000D877EA928F6295D8D8322FD0FD442F9290
-:108CB000F3D9A611ED9987F6F04BEDD4800E697FBC
-:108CC00039B5C0AF878C0CD6755E540C4B47FF0985
-:108CD0000F513351F7277F1A9E1721BAF6AE64F869
-:108CE0007467FDAB8D683F6FEF9F87F9377F27195A
-:108CF00016A6BFF84DA287D0BFED4DCF95ACDFD9FA
-:108D0000EB96F89FBEB217F39247FCFA1B687553B7
-:108D10004F39616E0FED1736493FBBAE04E1AF2FFF
-:108D2000E5655CC82E581F23DA7E78A6BF24A9F912
-:108D300036F2DBF397D68EE182F1355A69E46A00A8
-:108D40005FEAA8EE96C2F1171F90B0FFE488A2F97F
-:108D50002481DBDBDF2AC4E734C058C0FD4526216F
-:108D6000CFC973257611E6FD731FC66A89C6F7C1A0
-:108D7000B90F7E5A148187BCD2B14B06DF8F713D8B
-:108D800019FFC452A23F0CBE7F2FF30109883A6C31
-:108D90003F8C798B0BE24E23A88238119791C17ECC
-:108DA0005D9F2A06DC735C35DE483EAEE36A3668BA
-:108DB00014F0637A9FD9315C8D72492745BD64698F
-:108DC00058D8DBBC39A1C4EDFA7C1BF96C35B1FE77
-:108DD000299717A44E45E388F3590D45043FBBFB83
-:108DE0009DFACA038EC5FE9B8971419BF79F35DEB4
-:108DF00066EDE0F19B9501B218B72FAD766EEF8E60
-:108E000029F406DABB3F79A9960AF6278E13F5ED09
-:108E1000F24C4599B75DE764115FD7B91BD12AB40D
-:108E2000D7D23BAB35B4D7517A3F8F7F180BFC8834
-:108E3000796DF1BEF3F37EBE0829225EE27CE1CFBC
-:108E4000A25F3A7EDD7C7B68A3C0A1C7E5D50B217C
-:108E500059CC7F554BBCC2E770F2DC7FA3489B8E98
-:108E60005FB812E47AE5EA7DE7B9BB1D3776E0F535
-:108E7000375BF5F34F83078D23AA15429EC7C68A39
-:108E8000EC76C66560DBDFF672DD2EFB88CFC3EEC5
-:108E9000C16DB5C47E138965719CC39B833F5EC65B
-:108EA0003890D423E2B2383EC435D17731AAA33FFB
-:108EB000397031CAE3C9E32B7E6161FEF2338DEB79
-:108EC000B8FFD86955F0AFF14C93E0DFB13F37956B
-:108ED0002DE2C0C908B0DFE4881A677C92234D1FD9
-:108EE000B7635EF24C5B93C4DB9C692A63FD592E29
-:108EF000513C8D7169A44AB473F9FC5C73F09B1CFE
-:108F0000021FD02F51CCE10F55CDE0CF8EDE535E46
-:108F1000CE63479F6216F228B7EE90A60A3FBF6560
-:108F2000FE804FDD69C914FC38EAD81D7DC7447E38
-:108F3000DB3D6951EFEE231E67FC8F8E253A28D664
-:108F40005934CF623C3EE62ED461ADD75E480871FD
-:108F5000B492B6A4E7D0C39AB024D68D5E4A7C9B67
-:108F6000F932DA9AA8D5EA67CFB3A84DE443928BD9
-:108F700077AF678D3D87BF2AF6873C8265B4353E63
-:108F8000C77838ECF067AD971273C5F379EE3C11F2
-:108F90001D90C18BF3ED1E8DF94F64962C80CEAEE3
-:108FA000777576D3E31ED3BB0CE3A49D2AC2F8FAEF
-:108FB0009CDEB640CFA00B71FCB1BEC5DF8C873202
-:108FC00080B4C39CA9731B29EEA145F0B36666FF6C
-:108FD00013AC970D6C55E1E76E3AF829EBE0127C83
-:108FE000A9A11AD641524A021278F3EFD31E4D11AD
-:108FF000F1DA55AC0777E697D3990FA17F3AF4EFF2
-:1090000034F48F6D77DD670D59E0313A74E9DDB0E6
-:10901000D0CF228A3101BF8277E49DD4DCBDEFF04E
-:10902000D77DFB7C7E7F06DF72F5998064A7EB67B6
-:10903000D7E786E6D421E91FF782ACD4453B5F979A
-:109040009147BDE2F0CFE74998E5C8C3D3D79A2945
-:10905000673DAD838A22BF8947259B751E7156F8EF
-:109060000A747E628124C6776F966C0B5F87EA3E36
-:1090700013F7763273D6CB7CAAE97DEE35716E2D6F
-:10908000BA40D17C1D37F89DFBF276FD72F9F2A053
-:10909000CEF981CF428F23C2F27CBE1FD7BBF7E14E
-:1090A000869699F5ABA5B38F95238E274DC9B0E76A
-:1090B000AAFB96FB4EB1DC7DDDBA2F09272261E0C9
-:1090C0003179F6C6E6A5F0375AF7F70ABE473BEF07
-:1090D000C2DF0A97DF5D81600385A02EB57A2A0B77
-:1090E0003CDE2B4DDC13669D90BF0ADE4BBC3EFB85
-:1090F000F6CB12D78304DE773B2F55AEBFAAB0E67E
-:10910000E874849633AF7EAF69CEB9F5D80B590FAA
-:10911000A81E8F9995FF5F77BB4F7CD4C075B93679
-:1091200034D2E02DA8DFF8CB38F77C8F0C7C10D53B
-:109130004B0AF925BBFC528595A48DEEFD38936F43
-:10914000E3CC37AEF7D10FD63FCD3CE9DD1491F437
-:1091500082FBF3F8F9607581DF897E45CC27355BAA
-:10916000F34469619CAF893827D28E3FA26CCDA6AB
-:10917000A585E32997B759C1DB9F2CDE19E7739CBE
-:10918000E3AD4A0E6F3BFB3A48DC476EDE692FBE0B
-:10919000202E6BD067FF06E3939EA98A70C1B9F8B1
-:1091A000A18B737346127C5C4996C27E9BE1F119D8
-:1091B0006EAB9451611FA08CE8275A48CCE3FB5D4D
-:1091C0001E37AB9921A941CCB354F072159D15F30C
-:1091D0001EA229614D82C0C3B691216C8B3FB38E14
-:1091E000E5A33E9D56984F99A81ABE0A3EB294CC6C
-:1091F00055BF7CFE2A5DCDF11393F1B8D91A9F4378
-:10920000AF0FBAE7DCE0B71AD77982EC43E87A907F
-:10921000B20A6FF2804A6B14E4F3A04AFE62C47B88
-:10922000745816E77730ABDBAC5F4699BBEE0BACFE
-:1092300043BBD974CE295F35CF34E6F3BD138755D0
-:10924000F017E2792ABDEE113866C47E0F73E0C8CC
-:10925000BB957495DBA970A5C3679A7A96F779A434
-:10926000DF27DE39B2DF1278FC34ECD433003C83E4
-:10927000F0B3EAA04463D8D758E4E49BF3BF0AAF45
-:10928000BE5023CF77EE31B4690CFD01BFB38E68B9
-:10929000B5C6784999A87C2BF0F5719D8C92883BD6
-:1092A000F8C2D4B5BDE2DDE6D30E2124A3FFA3317D
-:1092B00009EF69C934690FC7E32FC9F0FB1AEC182D
-:1092C0002F7C57FF3AFCFC5B7CDE255D13785182D6
-:1092D000747E67CCA75F697C6FC83CAFCC81EF1F01
-:1092E000C0EF4957EF2E173BBA71D8DEA8CBA8C7FD
-:1092F0009688DFE07A34FA2B9613FC6E284D08BF6F
-:1093000097A523D5C2896AAF60BF399E07C86C6133
-:109310009C25B75E7BFC8EBFE922C7F299643E07AD
-:1093200020E77EC47500E7C28FB6D5E6D4DBFABC71
-:10933000C84E61BF69392EC8F88A62F805DF6389B3
-:10934000B16658B5CDD47796F0931D7904F279A41F
-:10935000781FDCC7F4033C1041865D9A934FAA4402
-:109360005ECCBF9752546CE07144BB4A1D9EEDFA2F
-:109370006B914D95B3E33BE94B9CE4FCA665636CB4
-:1093800054DCA33B9B59EF18A7EFE47092F3386DC0
-:10939000B163A9AC2E7019619DBECF67DF93C1BACE
-:1093A000A77C7635C79FC303051224D55C9C73F850
-:1093B000685C3FE6B189FAE5EA1FCBE374A0D8C147
-:1093C000073FDF1C1C74D471E9ECFCFF0753B7A7FF
-:1093D000EBB00E00000000000000000000000000E4
-:1093E0001F8B080000000000000BFBC6C7C0F0A3E5
-:1093F0001E81C3D1F8E878022F7E7952B10C038226
-:109400005DC1C5C010CBC1C01007C42780F82410AF
-:109410006B70323024027112102F00F21702712586
-:10942000101700D5363333301C6663603805C41717
-:1094300081F8061BE9F66B483030EC9241F0396454
-:109440001918D8E4A9EBC7513C78F15A0354FE5BD4
-:109450004D54FE576D06063D4304FF9D2669E627E1
-:1094600001F526033100FBB288BA68030000000052
-:1094700000000000000000001F8B0800000000003A
-:10948000000BED7D0B7854D5B9E8DA8FD9F39EEC5B
-:109490004942184248765E1030E01042048A9E49E4
-:1094A0000A8896D2889E165BAB4340823C035A4C96
-:1094B0008F78B2212104083050AC91224E10305ADE
-:1094C00068A3A2D216DB8094A2F5F4466BABB53E3E
-:1094D00002521E3E68EAA38EF7D4C359FFBFD6CE10
-:1094E000EC3D9909D89E7BEEFDBE7BD2AF2ED65EB9
-:1094F000EF7FFDEFF5AF358AE824F23F117211FEE0
-:10950000683A4C24840C8AA784C85A8F0352A25FFD
-:109510002CB4E4C945E972F27F1B61CDEBBCDF7F5F
-:1095200021248B90EFF032FA1782FC149E31E6630F
-:10953000A424A890AE92783F5308CB6BA2402E0A89
-:10954000F0D55A6E8C53EFF08D2169847CEA64A9C2
-:109550005E458BCA69FA9633DA984F88430817B28A
-:10956000F9D45D593D1AD3AB206D14C8EC4E4F921F
-:10957000799035848CA7C9FE2122A988CF3FB19E5E
-:1095800091363510D2658FE765998492F55B41E796
-:109590000FFD9E13C215381F0F91011E0A87878D7C
-:1095A0000409A1EB3AE29F169843E7DF3A5909DA3A
-:1095B000A160FB10684C7C061C67E761DEC1F39577
-:1095C00044E3F0EE6A29A4ED9C41916CA0B9A6FC9D
-:1095D0002A07292564F3C4BF06C2743E4E3942549B
-:1095E000483DC9E7379388BC9F7BC9E5AC3B713FD9
-:1095F00064D8A3F19815615DC67CB7D8E8BC32E9A0
-:109600007E8C17C95E9ADF543E2B0DE663ACCB917E
-:10961000629C6680EB0842363638306D9A302B8D6E
-:10962000403BD23B1BF677F3C42C718310AF7F64B1
-:10963000E271470F5D6F236FD7AA1D75407D639F51
-:1096400013E1B699C32744049CF7C6D1AED9D1D251
-:10965000FEF308111F966F76D246B00E2F89EECD1D
-:10966000871E7ADAE6D2BC6F825AB641EB8F2F534F
-:1096700046CBC12E3A4F8FC713B4D3724F80B57704
-:10968000BC2144356C1FF20CA1F55DC6FE4F10E302
-:10969000F0A4FFF7916A42283DFA727A5F8371EC79
-:1096A0006FD88321FADDFDD947AFCDA5FD92934256
-:1096B000702F8C4B965BF68BEC6170B5A9F4DFB420
-:1096C000DC3579FE0C5882FBF327AB016EEB8B5631
-:1096D000B856C35E95B0FD53E9FF2E16D0FE35C5D2
-:1096E00032BECDBCBFF9809AD6BCBB78D6D70AB5FE
-:1096F000D4F8E1EEF191AE0C5A59BA05F73B55BDDD
-:10970000FA37C65E73CC346E1BF1669E71D37F5CF4
-:1097100045AE423ABF44FB4F1B82D71CB3E1BA456A
-:1097200033BF49557F2DC78F3E3CCBA7F8518AFBED
-:1097300019B86174FCFB4B8017400F7A25F231A4F5
-:1097400045BADEE6AB49AF44F7A3A958D1D65038A5
-:10975000D855A54BF0B1317B01BFE01FB4A9BDA81E
-:10976000B95B180399EF58F860CBE07F0D760D30A8
-:10977000BFC47DF8A2F0EB02F85D11879F9D54A74E
-:1097800075C17E5707103E5E3E8F7557AFD4BAE85D
-:109790007AD6657F3F749298E07815A3B3BEF9E45A
-:1097A0004489797C83BEAE14422F027C2425F85A6A
-:1097B00098C2834C52827B93AC4B16185F89C3D9F5
-:1097C0002113034E80BF87F5C00D5E9C52B5C304C4
-:1097D000677BE0F867003F399374B9C7E0F7263933
-:1097E0009DF2AF4CA2BBD3B01719F29F917CA44F4E
-:1097F0005A3E452903BE302D18A6E334DBF878EA3B
-:109800006ACBBE7EC6F7355EAE07FED9526EC3FE8A
-:109810009ABD9C6FA88D38BF7EEDFDAC7DE27AFFCE
-:10982000027C743CD45339FE340640DE3886344F13
-:109830003F02701F51D73917D6A8128483C1FFA9E0
-:109840000024508FCA87CFA09D43AB46B8DB73423C
-:10985000248C70B3CAD3947C39418EF6C32795E625
-:109860008D3E0AE0BF392AD21B4994DF3C0D0DBB67
-:109870002C39D8984057B4ABA47266B4C0F82DD137
-:109880003371FDB281075C3FB019E0D8CEE859E5ED
-:10989000E32A301FCA0F9D248A9DBB29A643DE4BB5
-:1098A000EA30FF49A8AC4B00BC91C97AE073F6904E
-:1098B00048F4FCFEE36FE6F224D53A364F4C2E070F
-:1098C00086094C0E489E3ABE1FB7A84067821E26E6
-:1098D0001781DE4884CBBF20EEF7BA867AF20E5DA0
-:1098E0008CEBE87544A3F823E7D48542B49D04B417
-:1098F000485934F194B3540E6A66FCEADB47B21A55
-:10990000FBB351B0C03A6D1EC71C320652F5064C6F
-:109910004B46DD0EF4614B9B560FAA1CC59B4A01BA
-:10992000C67724C72BE2A1443A11F35A75D2F1F855
-:109930007EF37A29F1AB0F3F8CF56A4AB5B73FDE6B
-:10994000B8CA5501488166BB613E83F96C06879BA6
-:10995000978B6360DF22D387D3FD19DC3307E59350
-:10996000F78DEBCEC3BAD696969D00152E2DA8DEA8
-:10997000308DEEA7AB840800EFF5D0D924E8E18460
-:109980005E09721DFE994DC8B7856743BA87A18FDE
-:1099900055DF1435D9E027E280FA8B70D1DEBF7D28
-:1099A0004AFE4C4CF483727CC5E5E94BB7B0F174C8
-:1099B000FA3FA03B7F823C4D0B99FA25001FEB3804
-:1099C000EB006F10BECBFF5BC653C93687067A47E4
-:1099D00091A846E9D86944F5535E4C5C536402F2A1
-:1099E00044CDE9D5617B2FB52F6B09998E7C94D23C
-:1099F000AD19CF77723E10A869CA6FA6FD7E52EEF0
-:109A000009021F184CD966467AFFF56C4CD0B33763
-:109A100096EE46FED848F1A800F4FD5211F5A1F5E6
-:109A2000454FA86679F57383DFF4C30FA2C915C843
-:109A30003A08A1F0918AC49073CC3F8E1F897AD2E4
-:109A4000E5E287FB16EB7E7CD1FDFA759FFE7D7902
-:109A5000F8F18F8E67EC6B2ABE45F715F5EF166DA2
-:109A6000D680FA4BFF7DDD86FBEA2A22A1647CB812
-:109A70005B10ACF2C99C9AE507B9D3B25FB6C2AF2E
-:109A800007760F000F5B49829CE4FD3AEB25ED342D
-:109A9000E8B1B28AF2C8B01FD66BDB74D0E73FC919
-:109AA000214CDF8B2CEF12400F2A22A807410722FE
-:109AB000CD3BB5507483C0F01FF6C5D06F6C541DFC
-:109AC00033C357525D963C99AD0BE6F93BEB159CC1
-:109AD0008703C603BAF4D00E69BF520EE972A2FE24
-:109AE000C9E60F43313BFE9ECBC203035F01AC0CC2
-:109AF0005FADED9A036524D9FEF51BEF26EB7C5391
-:109B0000F2A5C4761E593B63D24752B793C9199345
-:109B10005E33B4CF7FA11BFADC2181EA858D81AF52
-:109B2000EB386FF80F95AF2D905279260DA9226171
-:109B30000DE4A4C6E8444B67F2B743B0D8E1C6F7DA
-:109B4000D4F360E3C56EA7B8087C4DD62CFA7262D8
-:109B5000DAD810F8924C91D25DFFF024791C55624E
-:109B600057876657D3FAEB1B3A26C177A3DE54D149
-:109B7000B0BFA9D834E9C732A1F51CF8955C1C0721
-:109B80001F55A299E4BB83746239FDCAF78FE03E8A
-:109B9000A05E45BBAC1335EC572187B01E7404F5AD
-:109BA00028179F2497B0EE20BFD1160AE1BCE488A5
-:109BB0006305A5BB8D4E9ED778DECFF32ACFE7F3A2
-:109BC0003C951390772B344F53A72DA262DEC5F33B
-:109BD000F93C9FCEF37E9E2FE079611BE6372AACDD
-:109BE000BF0D7294F5EFE2798DE7D3795EE5F90266
-:109BF0009E27BBD9F8769677D9A2AC7F37CFE7F30B
-:109C00007C06CFFB79BE90E785DD984FB57FAEA28D
-:109C10000E06A73EBED019CFA3F0E070EDCB77259E
-:109C2000E419BE64080C0F635F35F02688FC917858
-:109C30007291DE86F0368DF3CAD877EE47317D3FDC
-:109C4000A15139F749584439996ABEDFE7FC743BA2
-:109C5000E8B934DDDAA062BAA521807AEFA6068DD4
-:109C6000FB554AF0FBFA8620E6D7354CC0746D43AD
-:109C700008BF37364CC7FC630DD598EF68988DE95F
-:109C8000BE8630A67B1A1660BABBA10ED328D57744
-:109C900021DDD5A063BAB3A105D31D0D114CDBE6C0
-:109CA000953D5F04F35F40E73F007F183CDBEA0728
-:109CB00019546DE58BE953D22DE5EAE46CABDFA4D2
-:109CC000BCC092F7948EB2E45D456596FE1C399354
-:109CD0002CE54A6695252F7BAEB7E4AFE89865C9B9
-:109CE0008F8C7ED3D2DF88B61A4B797164A1A5BC64
-:109CF000B06585259FAFFF8BA57E5EFD1A4B799BD6
-:109D000033FCAC48F9D5B0BA0D967A43176CB3CA98
-:109D1000AB199997C5B7C8C77A96D99F91C8EFA5CF
-:109D20005C120AA1DC62F2A511F016FC5EC3487455
-:109D3000AF00FEAB6B4F80DD612F6272A79F7D99F4
-:109D4000D09FE2D9F79A4EC7A9F49D08F498E88C01
-:109D5000044CED28DF3F2532BB79C3BDCCAE6EBDD0
-:109D600037B97D8D9C9DAEA3F5F3E4FEDB1E51E279
-:109D70007A906EB1535AEF15B0FE3FDABF519ED8BC
-:109D80006F7C3C8A7315663D246AF845899E15B739
-:109D9000776D3DFEB960F71876AEE460DF2B4B823D
-:109DA000279B28BCD7AA04FD866B3D5504F48A4F37
-:109DB000544637644F2EDAE346FDFEF333E915C807
-:109DC0007F5C563FAD6716FA3DD7660EAC972931DA
-:109DD00009FD77524C205D54EE2872F5F47C4ABFA1
-:109DE000CA2B52703541F993D4BE27641BC2414A35
-:109DF000D06F9AE625F0BD29C370DD36BE8EC6CC85
-:109E00002AFCDEA40E3C2F3BCC0BE6C3E7658BB9E6
-:109E10003195624E9CEFC45806E627C4FC985E1547
-:109E20001B8A69456C08A6E363859896C7F2311DC5
-:109E300017BB02DB95C546623A36360EBF07636331
-:109E400031BD32F625FC3E263611D3D1B12FE3F7D2
-:109E5000D25825A657C4BE82DF47C5AEC37464EC92
-:109E600046FC5E12BB01D311B16F613A3C7633A65A
-:109E7000C5B1B99816C5E6605A185B84ED0A6277D9
-:109E8000609A1FBB13BF6BB1E598E6C5EEC13437CE
-:109E9000F65D4C87C51A31CD89ADC674686C23B6A2
-:109EA000CB8EADC77448EC7BF83D10DB8A6956EC6D
-:109EB000014CFDB187B15C8DB5639A16FB217EF72D
-:109EC000C51EC5D41B7B12BF7B628F63EA8EFD0C5F
-:109ED000BFBB623FC1D4197B0EBF3B624730BDD4CC
-:109EE0003E2939563E2E65BA2CF909A7D32DF851D3
-:109EF000F186958F97BF5260292F7BD1CAC783C740
-:109F0000CA2CF931872759EA971EACB2E447EDB75E
-:109F1000F2F1923D563E3E7CA7958F176DB7F2F158
-:109F200082562B1FD79AAC7C3C7795958FE7DC65E2
-:109F3000E5E3D98BADFC3B30CFCABFB3C80EABFD58
-:109F40003D65B755AE4D7ECCD29FA7FC09ABBDC0D9
-:109F5000F98CABF4A796768EA2A349ED9A447F398B
-:109F60008044A6F47D377105CDE72A469ACEF941A3
-:109F700006D01D4D3339DD0D02BAA369FA5716E339
-:109F800039D3A75F6DF95513ED2C7D28617E017DD6
-:109F90005B15F8BD9A87F03CFD22D07ACDC308FA54
-:109FA0000988FE6E2596E7B3FC0FA433953AF3DFDC
-:109FB000B2727281953B59FEB1C67F5B0DE5E969CE
-:109FC000A1EC20ED678F2D391F7F4262E76D17C42A
-:109FD00050BB44D7FBE7CA9E95E047B33BC27B2505
-:109FE000FA7DB1239C07AEE90F6CE14764E08B2456
-:109FF000B40FBEA791D02312F26BAB5FB415146EF1
-:10A00000DACFC762F57E28CF98D9817691B1EE6616
-:10A01000EFC0F3894A4C2E35FB09DA8DFAA30ACA40
-:10A0200053FC33E4059583F7BB7D2128DFF5A8B207
-:10A03000DBCECB2D72A33E0BE586ADA37939B824D8
-:10A04000EDB09F5232BF680FE6D340E32F04FBBE52
-:10A050003757A6E9527B5733C8F5BFFABBDF122446
-:10A0600084C7AF003E2BAF0F63FD35EE9913603D03
-:10A07000141E27E03B85C7F3D2A0D4F02070B24075
-:10A08000E71F30B068BF60F13F9E13C2BF954C7EA2
-:10A09000CC403888703B20A9080F037EF4EFAE74E3
-:10A0A000C31FC3DAFD11C74DE84FE6E762BF95F85D
-:10A0B000F85C1E1A789C21927032F81BE73EA423AC
-:10A0C000F70BF9B39D8A98741C9B5C8DE7A9FDF88A
-:10A0D0005E66825D9F1986B35E2A3FA9BC4C32AF93
-:10A0E000690AF74FC97997757E15E5FA3DD99FFB47
-:10A0F00085CEBBC0D083FA438D7D3A968BF951BC97
-:10A10000FD50D0EB283E3DF7A6FDE812CA07765178
-:10A110009E614FE20FD8D521E2F9FA503F45385AF7
-:10A120005ECFF5006A13A13E688C2B2FB6FA8F2202
-:10A13000360EC7C356380EA588FD536A72134F1EDC
-:10A140009B1F3FB734FA69EF9BBF751EBBF52031EB
-:10A15000DBDDF9ABA322E83572079DC798FEE31358
-:10A160007EBE60D091ECE17E13350FFB35C64D1CF1
-:10A17000874833F03C29157CFB8DF305CFEB2AE4AF
-:10A18000E4E79D747F104E4529F43CE3BCCEC83F04
-:10A19000F7662D9E7F37476A50BF6B0EF073F6BF90
-:10A1A000D15EA11F921C4FF6727C7A889F8BECDDEA
-:10A1B0005EE5C0769979967D2ABEEF265798E967C5
-:10A1C000E990EE6B63F5863F308F7FAFC1EF0FAD47
-:10A1D00062DFF3EEFDD8C9BE7FE88734AAB3EFDAB9
-:10A1E0006A99D717B13EA9A77FA673A0E16AB508FF
-:10A1F000FAEEF0ED2404DFF2D45E01FCC89A4A4482
-:10A20000DD04D7ECED472BAFA3E5D991EA59D7C1CF
-:10A21000797898048B35F8FEF2EA91B88FC401FB87
-:10A22000BD83AF3B2712DE3012EACDA6F548BCBC99
-:10A230008D8F3B2C12DE761DF8EF4A583F46F9F71A
-:10A24000797B97511EB2B68FF0F2DC55A7BA46D093
-:10A2500076B991DE97AE857A1DD67A9B79BD51503D
-:10A260000EF3085AC769E5F390F4DD04D0438A90F1
-:10A27000F4E9D08F6AED678381BF505E8EFFC6F22E
-:10A28000870DBE90C0478C762D29F6DFE0273BC1B5
-:10A290004F3002FD5598E6B426F7BF96717E65E013
-:10A2A000572A3C270B448B7D47C22E6B7EB649FF55
-:10A2B000837C28DB5A3EA1C05A1E1C65CD97945959
-:10A2C000F3DA244BFED33E3F4BD409F460F8590C2B
-:10A2D000DFCC0E95D149DC8FD7ED34DB2539BCDEE0
-:10A2E0008375CC1FD3E8E1F4C4FD322E4E97CD2503
-:10A2F000CC6E31D6FD24E75711EEF7D8D5D0C6FC89
-:10A300003063438E7CBA9F2DBF938203F9A11FE770
-:10A31000FBF1634E8F07B8FFE6877C5F1EE5FE9B6F
-:10A3200047C07F03F40AFE1B3BEC3FF3DFB473FF2F
-:10A33000CD43E0BFC17DADE67E98D958DE06FE9BD9
-:10A3400011E0275A80E916EEBFD9C4FD371BC17F43
-:10A350003302FC422D980EB231BB7CEBD45036F860
-:10A36000CBF64C4D6E170FB231BCC8074586A6B967
-:10A3700024F46517E02F456C3897293F167ACE4DA7
-:10A38000F323A20CAEE50743CF4179711BCB17F243
-:10A3900071409E807CA1FF60713639541B32E1EF21
-:10A3A000B817A3640EDDB7B7657E0EA051D5232B79
-:10A3B000EE2F8572D8A73785508F3C1EFA25CC8F9B
-:10A3C0001F0E0B401E83EFEAD5155A4F5DDC1D8230
-:10A3D00036BE96CE2EB0B335BD0BDB6DAD0CA29F55
-:10A3E000CDD8273ABA051FE8DC902F0EE3FB4F26A5
-:10A3F0005BF12137B60BF5E1E6BA596988771A198E
-:10A40000D05E2FD969D517866FB7DA49CD77CD1AC7
-:10A41000D0BF9CE82F53275BFD65CD2503B7F7958B
-:10A420005BC7F79426B4F70CDCDE199B39A03D78A6
-:10A43000855893611B14CF17C6AEC1FA89FA9F0CD9
-:10A44000F16F54AF93A72821380796A7A8187A254B
-:10A450004FD1781AE4DF433C5FCDF22A8B93A0FA08
-:10A46000623E8C43F727E1FC3B44E07C7AEB48C238
-:10A47000ED91DA35A11C9AFF6782F6C449F9CE2A1C
-:10A480009DE677CC7088D295806F2CDE41E1FB95FC
-:10A49000A144D723DD6E15C96E9ADF131998EFF525
-:10A4A0008B83F084D07F3374B15A260D40F7DB17CD
-:10A4B0008BD3A349FABD86D315394612F5EA6B6CE6
-:10A4C000F4FBDAC5B354E0FFF24D41B41F88C6E691
-:10A4D0006FF0B98CF481F76F57C27C7353F87556DF
-:10A4E000DB38BD9530FE68E07FC64A86E7A9FA5F93
-:10A4F000C7F959AC53B0F87F06DD545D69CB447B96
-:10A5000028E8013EFAB9C4FC688759FC9A414F8D8E
-:10A51000252F23FF36C6CFCEE902B38D341F99C84D
-:10A52000E22A287CD15E3C42F97829F27B02F55D73
-:10A530000B7A2A991F3D8AF10FAEBAA00E79C9C3D2
-:10A54000F005EC515E1FE7B3E1AE5921D8A7C61C58
-:10A5500012E420C6751A78D018103134E29312A68E
-:10A56000F7CA2AE51330FF9132CE9FEA59172F1A06
-:10A57000F68B04E789BACEEC37167765C4E30D6D28
-:10A580001B83F8DFEC5D89E785FA58A60748A49B92
-:10A5900088F9381F5D2C077FBF1A04596FCBD4058B
-:10A5A00033BE7D4D08DF0BFB1EC7AF4E8C4731E03D
-:10A5B0009708FF6F71BE9A4792DB1F83B97D93A105
-:10A5C000745E077CB7E5518AE749E266FCBCDE0FA2
-:10A5D0003A66A5012919746B941F90341CC7C80FE3
-:10A5E0008D292CFEAFCB6AA7FCFFAEEF1FB459E359
-:10A5F000F3FE47DFFF1F7DFFFF117D9FCBC7A96BD8
-:10A6000060236C1E962F6F9EBA46C7F559ED7649AA
-:10A610000E5AFC1FBD40FF26392F7BAC7AC9E5F3EB
-:10A620000D19F527121C66E1BF19D903CB19C3CF49
-:10A63000F1E930439F0F215D90A21262D6D79A8034
-:10A64000CF5338EEA470E47187384E365F97ABA7CE
-:10A650005A17317EC2CAB7772E38EA1C81FC5FC612
-:10A66000769E406708E4AD43EB46FE6BF069CA9FF7
-:10A67000C72A8380CF5720FF739544307E6D2DD736
-:10A680004313E10AFC305006E325F021A2A53BA0CC
-:10A69000FCBB0C0764F0E3819FB27E603FCBE5C654
-:10A6A0007D187118B9F40FF8D04699CD8F1CB2C639
-:10A6B000B1537C7458E275CF3D8CF2D4E8C7D077A3
-:10A6C00012DB35A9556A32BEF8A610FEBA32009EDA
-:10A6D00024FAB548021FA71C54007D6EE88CE9E8F7
-:10A6E000AFEAF36FC956BE2E078CB898FF5EFE5EC8
-:10A6F000A7FC9DF1EB5FD0FFB78B9FEF27D2716274
-:10A700003FA24EC49E24E3E7EB62C2B9B355EF17F4
-:10A71000648DDD13AAB39ED3C89EECE4E7093CCE5A
-:10A72000B366421FFE7EE38F147FEF3861633C8C7B
-:10A73000CB25C3BF7B07C47BD2FDA981F84F2ABFBD
-:10A74000E7916A1F147E40448C2BFB80BCEC1B6796
-:10A75000DAA77D0AF3E79316DB29B86F64C435DE08
-:10A760001E6179633EB56DD6FC7C322B0BCE35E68F
-:10A770006FB7118863BC83C8A77A8CF9533DE7FB98
-:10A780000A8BD3AE2575CDC0CFD672FF7D8D4A64BE
-:10A7900088435CF2CC8315606F1E50981EF52E85A1
-:10A7A000BF668A575BE8892A703EF1CEC1715FFFB0
-:10A7B0001281F6D1E66C8847A47A2DD8BD89709FA6
-:10A7C000DB629DDFA5E69F385FE37E52AA79C81D54
-:10A7D0004228991DF133C51A3777A97B536F8391AE
-:10A7E0008CE720D67B53976A775AD148B2FB5697AD
-:10A7F0006A77FEEF1CEF428AF196387A14E003CBB9
-:10A80000E4F074A1201EF7A5D8AA43432928E44305
-:10A8100063BBC0176EAAD77299F54E80017219F505
-:10A82000A68B03F47781D3F1AFF63FAC007D7EF0C9
-:10A83000D8C99970EEB3E8671271C0BAF67B4917B0
-:10A84000B34F1490630B0F4AE88F237257C58DA640
-:10A85000385A8CB8A5EB5FF4632FC6692C7CC21EF6
-:10A860009D41DB2F7CFA9D3184C2E1C29ADEE34335
-:10A87000C1CE784C6071897ACF981BE9F78532B9DF
-:10A88000AD3A091FF4D8199EBFFF13F76CC023A17E
-:10A89000E3C8ADD86FE7376C76D3B9A064B7E1B839
-:10A8A000B45E889D6709D16281CDCF7CDFC2880705
-:10A8B0007DFF5181CDEF902DEA84F975B42B615A5B
-:10A8C0006F59C75F106FBFFCE3033E80C3B2439272
-:10A8D00085BF2CEB90BAEC63303D69C7FB34218F08
-:10A8E00040F9C8526431343DB804E3C797766EFC32
-:10A8F0008BE483F656FAA1700976015C5F9582338A
-:10A9000020FFE4233EB01BDFEDDEEB03B8D27EE791
-:10A910002814AFAEF9D8446784F51F4BEFDF1FD57D
-:10A920007414C0AF659DEBD97809F4F92EFC634827
-:10A930007FB930CE6E950B9F90172BD05EEFC84835
-:10A940001A6FDF271738BD2E3AF0C92E9D8EFBFEF9
-:10A9500013EFEDD2E9FC17FFC747BBEE01BDECE7F3
-:10A960004E15F8CCB2C77EE72326B8CFB433BFC1AB
-:10A9700085471FD9B783D2CB853FD8D1AEBDF0EC88
-:10A98000D95C8DAEFBC2E39F6569B4FE5DCF4E1D01
-:10A990000C70B8EBA92F0F1EC84F00F81AB59BF723
-:10A9A000358AFD6B870416DC7F98A709FBF3DCC1B1
-:10A9B000E772619E1FBC66C7FB8CCBE8B7FA32D842
-:10A9C000AF25C8F721BF8AC279E9FE757F91C624F9
-:10A9D00083B73E54C4C3454A3601D8EF1BBF7675D2
-:10A9E00039A4B6A006FD915EE4DB89ED96BD42F781
-:10A9F000F5CAD4FBF809F99B02F05FB67F3D1B371F
-:10AA0000611F3F807F4CECBF8F8BFBEDE3E287D073
-:10AA1000E638989134FECAD8C7254FFDF3807A8076
-:10AA2000C10F2E05DF053C8E70A23DB4CA0E74F531
-:10AA3000845B0FB0FD8DCEA065170E7C924B287EF7
-:10AA40009CB3F5DE0A7CB2F759BBBA9B7E5FF8EC8B
-:10AA5000AB4867179E7A49D1904F128F40F5840B0F
-:10AA6000A4EFAF1BF486A5FCCC79D91E6F97DD1738
-:10AA7000DFA7A5D11BA66B3EFC7E12BF4719FE2F98
-:10AA80008D1EB94948B26F4FDB0B183F8F0E42B88D
-:10AA90002C21DD8A5A6ADD4F6102ECE3C9698077B7
-:10AAA000A9F6D158BF0AEBBFCAB49F7B18DD26D6E2
-:10AAB0005F4AE913FC887DFB1A155E2549E8F442DC
-:10AAC000BB5D8678E10BB64BDC03FE82FA5FA73DE7
-:10AAD000857DCFE170293ABFD4FABE28FC76817318
-:10AAE0007B507F38BEFFB7E4FCFF45CE379692F02F
-:10AAF000F46CA9BFFC9248481F9A1F9F6F73A784EC
-:10AB00007CFDFD0E290A4D13F9C4D2147EA7D7EDA2
-:10AB10004C1F597AE8C818E067EF1FFD09C74B863C
-:10AB2000F74BF79F54742E0FA2667990C23F799A23
-:10AB3000CF7BD9E1E4FD2DDBFF97A4FDBD2B87BEC4
-:10AB400001F37FB7DB4674DAC5BB9D52523FEC6F11
-:10AB5000EC364B5C61B3B7E2B534DA4EF2B9341877
-:10AB6000BA714DE8551DF492976D78DE41E4E039F5
-:10AB70003BF813BD2E6D038557A36F3EFA2B8DFE58
-:10AB80009A12E02407AA75B04BE5CCEA72A62347D7
-:10AB90002D76B14D152DF3A6723607E4D05B63CF49
-:10ABA000DA609D6F27E8836FCBA47930EDEF6D5DA0
-:10ABB00008AED692E1B7B5FFF02A896866F967EF6B
-:10ABC0007D0BE6437EE12410A722FDDCA9033F595B
-:10ABD000B6CB1985B880E79EFA741FC0EDC24376E4
-:10ABE0001E27C0E2CE6B55D6C7D9A73EDDF5EFB420
-:10ABF000FC2C34A6E3D7EEA2F5410FDFEFC6E0FF51
-:10AC00003F3F91368650FE5CFB8B7B66027FA90539
-:10AC10009E4AEBD7FE7830EA756706B1FC9903C30C
-:10AC2000A2B02F8B9F7C7629C891453F7213701973
-:10AC30003CF7D4ABB742FEC22FBC182779E11767A7
-:10AC4000AF013AA0FAB36696E37798DF2BA0FD2E0A
-:10AC5000823C2B172E9AE26F16414AF9C6A243692D
-:10AC6000780FC8540FDB2DB3F7AE0CA23F59CF16A7
-:10AC7000D1C6E9CA063A5CD4611D6FA483F949972D
-:10AC800029BDF359FD4836A3D76E6C57E1E078CA69
-:10AC9000CB13DB1BF5CB1D05967A46FBA5765297A9
-:10ACA0000CFF2B79BF8B3A3E1F61ED8FE16BFF717B
-:10ACB000D8F7EF08EC9E0A79DC89E76D8B95AEE159
-:10ACC000E9945E9F56C802A0DBC5BEAEE17E3ADEC7
-:10ACD000CF389F5CECA279FA3D9BCF03EA439E38C4
-:10ACE0007A7E04FBBBE41927017C5FF20B2F9ECF19
-:10ACF0002C79FAD3333FA0DFDF7FCA8D7E9325BF47
-:10AD0000B81BF77B89BDEB56F0FBF53E6E477FF332
-:10AD1000FB8F3F9F0B7AC8FBB6AEDCF401ECF3254A
-:10AD20009D76EE8CB0AE83DA052575743EFA561624
-:10AD3000C7564F5CC1D5109F028E03C0E3379C2CD1
-:10AD4000DE8A9FEFAEE0FEA00FE7696938FF52E6AA
-:10AD5000DF5AC1FD072BBEAA0DF69BE60171A66462
-:10AD60001C21772B752380CF4AB1AF108DE6E558B3
-:10AD700021A6463D490DE2F98394C9CECF6D994194
-:10AD8000525B0AED585C12F15CDF4767FF8B6EF196
-:10AD90008A07B4C1D0DF4207D3A7DB9CA1BB1D68E3
-:10ADA000CF78F07E29AE933204FD29B6AE4F05B6BA
-:10ADB000AEC4F97E6AD3EDC0CFE3E7DEEC9CA55EBE
-:10ADC000D65E85F34C7282F3A57EEB6774F6A19A8A
-:10ADD0008E7466AC6363838AFC647D4300D3750D17
-:10ADE0002544C3FB0141CC4B1C1EF6529D4870DF2D
-:10ADF000566373B57BAA43707E017DE2B986278CCA
-:10AE0000F8650FD4A1EDEFF010B44F258F4E6A3DD9
-:10AE1000E80F4338C1B90CC049E179B96D06C29554
-:10AE2000B6C7EF2B9DE15D001747CE280B9F52322E
-:10AE3000CB2CF97E7033F0E2C07F37FC08C26B7D0B
-:10AE4000830353B85F017083FB1590FFBF00BFE31E
-:10AE50008EF1ECBE8366A21FB8EFA059E82905FC6D
-:10AE60001EA0F0CB8CD355221CEA797C9B414FA9C4
-:10AE7000E817EEA7C0E5836D0D6D981ADFD353C8B0
-:10AE8000F5E14E81C7058457DBB87F1CF7215327B6
-:10AE900039267F1209E8782F0AEF5743B987F9114D
-:10AEA0008DFD9554F98C95FF69AFC27AEE7EC1266F
-:10AEB00002BF92EA1F26EF6498E87846B5534338FC
-:10AEC00007D17FDBC8E5EBDABEFDB4D2C7C6060DFD
-:10AED000D34D9C4EB6703AD90AFB0EFEB9A0887BC2
-:10AEE000DA3A9DA0FCBC8FE6997DDF45CC7E6D7F74
-:10AEF000B0B3CB46F71F7992866917F2AFD7ECD182
-:10AF000062DACE5D4A42802FFED7BE1BC5B592CE17
-:10AF100000F843FD1C7EE47081FF66F69E828DC9B9
-:10AF20002922B1346203FB2911BE8DC1A30EB0BB2F
-:10AF300053CD272BA8DB73E978596FD8917F67DE53
-:10AF4000D2F95A0D5D87A7D58DF6645690E1A327F7
-:10AF500018166A4DFB979542EFDBE7BC2ED349E903
-:10AF60007810C4F3D2745B5BA113E0BBD1D6190097
-:10AF70003EB8D1CFE48C369B8E7695A93DE78FBE47
-:10AF8000722BFD1BFC589D5C66C16383DFA64FB12D
-:10AF9000E2BBC16FCF3B983ED7E6AC1EEE8478DEB5
-:10AFA000D84EA4C744FC6FB429BA40F59446D025C6
-:10AFB00041BF3B29B0B894FE7C00E3563EECC9DFAC
-:10AFC0000DEF0EACE1F1D43AA517943BDCFF699C80
-:10AFD000CB1F20D52DF00E4C0BC52302EFD550FC16
-:10AFE000017AD84CF107D208C51F4627133035F037
-:10AFF0007326384FCCE7BF45C745769F4304994336
-:10B00000646A077AC0CF7464A203F442D9C6E259D5
-:10B010007ABD6227C4B3ACF5CC7284C0AFE32FC74E
-:10B020007DFFABB7266FA07315785104F046F50489
-:10B03000C9A9D2F8BD5F492D23604F1EF074E3F912
-:10B04000DED54ED132AF3667F846A7C9CF3F1A4694
-:10B05000E7FBF64FB8FEE4F7876F73723F658E4EDD
-:10B060008A4CF46DC499124D2725263A5F533C8DC6
-:10B07000C039687FFA4EC1C7F6FED7F0B1C6BC280A
-:10B08000EE9B2D916F6452FEEEC154175538DF3B95
-:10B09000D4F42D3FE2D95D000FE2D9DDA7BFFC5308
-:10B0A00041FF7926F2ADB83CD2D05F45E5D1FD1322
-:10B0B000800FA6904747DE1CF1358596BFF3BC2470
-:10B0C00098FD750B62EB511ED4C626128DCEB7A625
-:10B0D000ED7B98CE6F6B47BC3F175DEBC3389A167C
-:10B0E00066CF9D8BDAA2523EE2ED4509FCFA84F56B
-:10B0F0007F6E6723D623E07D318D7B6E276B4FCA31
-:10B1000035D4A73FE46BACD9620FC139CDB936DA7B
-:10B110006E0078D6803194443FC5F704E0EE00A974
-:10B120001B017CCEA0F7BB15CA97000E6FD993FA0E
-:10B13000D9573AA7EE00BA5EE90CB533B8A75FD687
-:10B14000BB16EF8854EF4578877D3758FCACCC8F21
-:10B15000F90ED78B892345B98FB75793972F697D00
-:10B16000EFF8BD34D75C1AAE2626FB5A22CCBE5E61
-:10B170007AA892BF2FC2E693043F993EDB6A473E0E
-:10B18000348FFB830C7C8DE34BD8C7EF975AF0E9E3
-:10B190008ED856DC6F61E3E8FB2752F87D44F10856
-:10B1A000FC72C2C6AB07031DADDEF0A52DB7D0FE05
-:10B1B0003F7E51C2EF0B624EAC7FFEDEE0FDB780FA
-:10B1C000BEFE6F36027CE4E31353F13CF6BCCDEADD
-:10B1D0004758E462F2FA1CA7E3F9B18D16FD787EB8
-:10B1E000CB5C05FC8FF3639BF1FB7C3894C17B2027
-:10B1F0007F3E5629C3790DC1F3D173CEF7A7AC01B9
-:10B20000381C2E433F56ED267BD27B29E79C9AE5DE
-:10B21000DCB9B6A715FB25543FCACCE2FD99F84727
-:10B220006D0C2EB1C0FEE804EE2DCCE77CA46F7E41
-:10B230003B6D163E72DE99DC4F12E37AC9FCD8975B
-:10B24000908EFAAFEF1A465FC6B83D8CEEE2EBB9CE
-:10B250007F62B2F5C4D73119EB9FF7271F3F8FC329
-:10B26000F94CC30212A27CA8C64EEB7960FC3B9B52
-:10B2700027809DBDD39F2E98D655DBB688844CEB96
-:10B28000AADD3947A931F51BDF07E72FCDFB90B7C2
-:10B29000419EBAC60372BBDAEDA270AED978F598BA
-:10B2A00030DAD98C9FBC630BE6025F3DDB766752D8
-:10B2B000FACE736916B950DBC6F787EABDE5A6FD7D
-:10B2C00031F625B1FD99376BFF7A2FF8011E604AE0
-:10B2D0004D2A78F5DBB7FCE4709BE862787986CA82
-:10B2E000D930C24D7BFA35C0EB4D6E8CF74C0DBF9B
-:10B2F0002B487820F8A5D05FA9BE53E61A0FE312B9
-:10B3000084436D1BC3834BC12D3E2EC783CAE4EB20
-:10B31000A9EDC3837AA253823DA55C0A0FEE21BA40
-:10B32000638075F4E1C1680B1ED4BA8AA7023D9E02
-:10B33000033D6544FFFD3FA5E8BE49700EB441C220
-:10B3400073A6532E3DEB9B2C3F16F8F3295F64E662
-:10B35000A4F278FE8EBDC5BE39A671CFB6DCE94B2E
-:10B36000E667AD4D853F453A29ADF83F873FEFA4ED
-:10B37000B8C7B5D259B908F6934492FB738DD4E09F
-:10B38000DF529AA7CFEE04797ACA53F0D7282D3D21
-:10B39000E40CAF047ABA5BD4C6CC11E2F6673FFD89
-:10B3A000B361FAD5A78BC15F587DF5691BEA43D815
-:10B3B0001F01BD329FC745A07F6308CA83C4F3D273
-:10B3C0001FB8F2939E8FAE6DA81B07FD12874E54D7
-:10B3D000739C1C617AD4FF86F1F3E3EB516C613509
-:10B3E00008F6A540AA01CF6D72B805EE03DB0299FD
-:10B3F0006375135C1F7031FF97F3D8B1967CDADE6A
-:10B40000F9A7175582F7CC74F4AF3972E40FCDFE6B
-:10B41000695B268B5F2445A6EF0510874CF3163B2E
-:10B420009FCE77003BF567028383EEB5F37B75BA59
-:10B430000472EF662731FE50FFFE8311072237B1F9
-:10B4400072BF51DCC4CAB9FF72590DF34F26EEEB3F
-:10B45000CD87D775833E73F3E12173C18F75B367D1
-:10B46000C49FE07CE167E0C3077CF733B99CD8EE6A
-:10B4700030A7D36FB58BBA8DEECB315BEF5137CCA4
-:10B48000F73BEC1DC76FFEEE98CD4DD3D75F396506
-:10B4900083773B6E83001DBAAE39445398121CC5A6
-:10B4A000F67349A797E53B07CDF29AFBA3A62AF4CA
-:10B4B000B79C9DF37EF377AF4C05F14FFB5B0BE937
-:10B4C0006D2F1205FA9F73506B66D7F8787F8769E6
-:10B4D0007F62BCBF381C1566E7C80E844B1C4E0E3D
-:10B4E000849B012778E606CBE370467DC380731FFB
-:10B4F000DCD2665F4FC6A4A6979B3DC3FF44C6C47B
-:10B50000E79508E78FA188D2DB7157E88F403707AE
-:10B510005CA137205DECE8CD950BF01E630FE4973E
-:10B520004AE1BC2C8A671F0C0B8F1804715CDDC9C3
-:10B53000CF5713E9F42DA01788FFE67198B7F2F5FD
-:10B540003DF7DDB35E8CB37CEAD55C4897483D9B04
-:10B55000BE01F4F66B09F5EF0F0F8E18302EED2DAE
-:10B56000EEEFF8D425F2F303B6BEDBB81E77DB416D
-:10B570007714DEE3BCAD5EB2E8BFB7D5B3380E22B8
-:10B58000778FB9C9A24736A5EC07ECCEC47E8CF5FF
-:10B590001DCDCDBE02ECC387C62B1AF81F8EBCF89A
-:10B5A000E11F6A69DE35CC81E7B29BFC1C7F2B452D
-:10B5B000DCF787FC21F768F03B6D480FEA749D1BB0
-:10B5C0007E493A450A9FA3235746ABE8789BAF16BE
-:10B5D000D167B525F670A40ADA95B2778F54AE8F8D
-:10B5E0006EE93ED506F878F6353BFAFBD3BD12CEB0
-:10B5F0006383AD3A17F4F73FB52B49DFD97378650C
-:10B60000ACD72EF460BCDB5C127100DF38D83D6B28
-:10B6100030CCC717242AA0FFD99D92C8F464C3CFA9
-:10B62000D125333FBB2EB37C88A7AAD3FCDEDDFA3D
-:10B63000E953309E625EEB4B184FEC2B4F7ECF6987
-:10B64000829BDDD7F576A7635CB4778A886F24790F
-:10B6500083BD02B4CBEBAE52B07D4418B07DDE2A80
-:10B66000F53A802BB407FE9F7799ED836E05E1B024
-:10B6700095DBC9EDB660F314DA4FFB26BF00FB6122
-:10B68000D4BBCECDF499B3530CFF4D04FD37B9456F
-:10B69000AA13DE5BC90D2171136F79C401F0DA0DB5
-:10B6A000F5987F13E1D03EF2E92E383FDE00B2017B
-:10B6B000F6D9C6F069C32601FD99147ED9202FFE64
-:10B6C000749FFD2BB08EBC164105DB9BA649E7BDE0
-:10B6D000DAE360F2A6F57EB403C13D0AFDE6EEFCB6
-:10B6E0002DCECB9B62BD3FF430FCF8D325F023C7B1
-:10B6F000CDFC36B9F5DDDC4EEAC2F716230027C8CB
-:10B7000087CAD93B87724833C7A1C4E987D9617416
-:10B710009D18075A334189821F406C69C77785E7B6
-:10B7200046ECE45ABABE56A13B04F4A28F17F97B4B
-:10B730005EA1B7004E9BB70EC678B675622817FD9E
-:10B740003BFFAAE0F9D8D1D0870FC0BBBCBB2628ED
-:10B7500048174743EC9EEC43AB0ADAC10EF7D657C5
-:10B76000E17BC1515541CED2584E5E8078D2C6554C
-:10B77000A22AD0FA916AE33E82EA02BC182B7D74B9
-:10B780005D099C9F0D11C19744CE0AEC9D91B5AB0C
-:10B79000AA54D8D7B56AA660B65B748E077FF457F3
-:10B7A000EB6EBABEC0BDDB548801DF12CBB802FC21
-:10B7B000857A8BA2B1778BD9FB24197C5F32BAC50D
-:10B7C000AEF93ECC7B16501379CB64E6A7FCDEF5D0
-:10B7D00061E65F8433C90AF42FF2BF00EE6B26CF17
-:10B7E0006D18E5C2CCF635F3B13EF49345FBC9289C
-:10B7F00017BB2A68BFBBFDA15D284FA63A104E4477
-:10B80000EE69033845A76607E1DDE46D1387BF04E1
-:10B810004F54659CE89D0572343ACCF57A3BF0A90B
-:10B82000B58A06749EB1EACC2DF0DD1FFCFE9D901A
-:10B830006634FDFE1E9007FE9EBF34E0F7E98AC520
-:10B84000BF97F1C6F9CFA13CA35AB1F8093FF3570E
-:10B850003FECA6F0D9551A89D468EC7B282BBE8E14
-:10B8600003ABBBA7C3FBD9676F1083BB7939AE6B42
-:10B87000BB1ADDC0E0560E72CD80DB3A51EB84F787
-:10B880009DF5990EC48F22D28DFC6A089C2217C6A2
-:10B89000F725E38DF5CB214E22713ECFB885BE77DB
-:10B8A00061E09D4A8CD7A7724C1932C50578FD78A6
-:10B8B000597700F4F84DFEE4F1099F7A587B7B8AB2
-:10B8C000FBEE1F79183E004B6C2BC334341A520F19
-:10B8D000D1D320CD7184203EF67151FB23E2F9369D
-:10B8E0004983FD81FA36BA7F475E7817FD83472288
-:10B8F000BFC5F4654F097BD78F125C16BCB35B7E66
-:10B900000ACF4736AB0C476A5B18BFA80DF438E086
-:10B91000BCA2B694A8BB39BEE9069CC1DFC5E555FB
-:10B92000CD4D0CAE99A504CF5BC12706EF9E6541B6
-:10B930003D0ABFCC96D5CB711F49B75E48EB6D86EB
-:10B940007E617F9AD8FD14427A1C48BF1109CF1B33
-:10B9500029BDFF06CE136B5A07E3793B5C7787FE60
-:10B96000D2F9B8E9BCBF76DA0FF8FFCEB648643733
-:10B97000F2B76E78639868AB282E237EF65696D081
-:10B980007EB57255DD60E081C1C72869CCA3F202A3
-:10B99000E0364FD79703FE9D72A82FC03CDCDBED4D
-:10B9A0001AAC7FDEF667EE06BDC51DE86901FE50E4
-:10B9B0003B81CD37BD957E47FD46FB0DD4AF6DB5C0
-:10B9C0006B6C3C0EBF728E671C0EB7F379DFBE93B3
-:10B9D000CDDB352C1A01FCAC5D45E10A656186F7CB
-:10B9E000E0D2BC28225D9D80F57BF52CEC77D0EC75
-:10B9F00004BA48C03F635D357C5D35ABD8BA08A753
-:10BA0000273AAD2EE8B7A69CAD731E61ED45F84E02
-:10BA1000FBBF9DAFA7467F1AD3DB5BEC96FE779505
-:10BA2000ECE986F9E4972A9A807066EF6DE6F27584
-:10BA3000E536B1F1724B9F4678917AD37CD12F6A6B
-:10BA4000CA53BA3AFB3C252C78CC22D781C874EA79
-:10BA5000BB0A9EA3146DB7AEEBECFA110FB782FFD1
-:10BA6000F33E05CF2B1E17836FE5A11DAA688CFF3F
-:10BA7000047F3B03F8F4ED4D78BFEA402583FFD9FE
-:10BA8000AF9228E043F189EA748077F189304FEB77
-:10BA9000F01C9B0244E8E37B747ED4746A11805FDF
-:10BAA000C60A7FB800F800DD67D0078799E74DE741
-:10BAB00097D192550571489913D2AB147C4238A1A5
-:10BAC000FCC48E59F01E6EE6B11D77C238438869FA
-:10BAD0003DB4FC4A6F21BB9F758C9642BDFA33F78B
-:10BAE000C27EB4F277ED8B6166E9981E833483D20F
-:10BAF000F7C67498A74CA694C5F9C1DEFB2AC60206
-:10BB00005FC1BB2565987691B2FE7CC3547F24AF9C
-:10BB1000AF0B49EA5578358B5DBEF7BE6923C17E10
-:10BB2000DF0C7A621ABC0BA87E04F1317A5044B85B
-:10BB30006FB675394A33E1DD719180FEB2A5E4F745
-:10BB400022D0DDE6832408F89151FD1F76F33ED61E
-:10BB500079FCB86E59211B81FE8F8E3C331DF6296E
-:10BB60007A84EA9DB47ED5AF3C3BE03E71FB1F5822
-:10BB7000FC49FBF37528BF57E62A49DF7D2697D09D
-:10BB80001313EBA717CF423F5EDEF6ADF8BE6CEDA8
-:10BB90007439782DAD9DB9BDB212F418AD9A62D743
-:10BBA000603AEF9D635703116A33D87995369D7DCE
-:10BBB000D7A6B07463C3827160B7473A6467119DBA
-:10BBC000EFA8F5ECFDBE8DA51F3AC2542F2DAF7C1A
-:10BBD000C2F155FAFD74399582F4FBE9C91F3AE1C7
-:10BBE0007CE6A1F2AA0C80E7C116AB5E47E0713695
-:10BBF0006A078DB647425E3AAFD6DF1184A764EF7D
-:10BC00006AABA179E9190F6838FDEC9BF5ADEDB38E
-:10BC1000014FE795607872FF7DE7F2626E7DEFF489
-:10BC200002A05B9DB073D4C8FDC8946FE72C235F5E
-:10BC3000EF46A6E3DDCEEC93881C3A0E7C39521A0F
-:10BC400056A089C1CF5A8B6BF6013F53B8DE4FEA3D
-:10BC500016E0FD48A47F09F4A1DECA6476D3B7DDFF
-:10BC60002EC4ABB33B6F7C15FCD3F3EA99BE9FB7F0
-:10BC7000F32301F783EA7D4368FF79E5F8E425992A
-:10BC8000B72AE2180DFB5324124D83F97412B01336
-:10BC90002254FE98E160F4FBF7B6DFE1B1E33ABE6F
-:10BCA0000DC6F3F8F87A3C7C3DB9C1DECA64F1B345
-:10BCB000DFE2E37EE7C18F8E4C04F8AF6226525E6E
-:10BCC000E4A4E030CD234FBFBC79DC02FDD1793C48
-:10BCD000E961F7A7BDE53D78EF2891BF833A0F747E
-:10BCE000BBCB7D612CB3EFADFCB45F9EE355E2F7B7
-:10BCF000DC047E35DADE793DEEEF01F6BE3A2194C2
-:10BD00006E1DF8ACA8C6DE9D8D1AEFA0D741BD51BF
-:10BD10005E8F0A78D03AF2F765009F4D5C5FB8BD40
-:10BD200094A0BD7A7B4E37EA0B739BB8BE20079B6D
-:10BD300081C9BA77FAC90693FE802E2C702D357111
-:10BD40007DC190FF5C6ED706BA5B50AE827E60927A
-:10BD5000AB353A93AB790126D76B5BE8381A47E6E7
-:10BD60000AB35EC2E4B8B69DEB0F5C0E67F07133A8
-:10BD70005B98BCCA003DC207E1073ACA653CCBCB21
-:10BD80008AEB2D834A99BCCC687D1CE5DA1FC0E99B
-:10BD90003208F8069397C35E7A45073005E8E73620
-:10BDA000CAA78FF1F2804AF5B3F4B87EB64EE4E745
-:10BDB0004C84E987185B4FE77998D737BEEFE1F3FA
-:10BDC0007BFC58FA5780BFEE8D148C954C748B5EBB
-:10BDD0004F9ACF2D67E7F4B9F5EC9CDA1B9CBF4F67
-:10BDE000329D3F6CF5707BD3C0ABFAAE00F48BF79D
-:10BDF0001D918FB3F7AAD6537D09FD4FDCBE9AEB98
-:10BE0000E67E0D8E3FA9E489C187BC24E42BA5F012
-:10BE10003D1DDD87FC5AA7F612ACED74A4317B21E1
-:10BE2000D07BE4867298FFE6897FC5B88BBC14F698
-:10BE3000A2C3EB30E0F085F8BA77FA2BCC0EED1602
-:10BE400093DE9399CAFD0F9D3271033C9D11F6DE7E
-:10BE5000A1738292B4FE042FE39B195E768F68F380
-:10BE6000C47D78BF31A57C96892E2591A786BC6DAF
-:10BE7000857D9E44C8CCD65B9B75B4D3A3D512F206
-:10BE800057760F30C27F77462F51D06FD86A8B38E4
-:10BE9000603FB694F37D551DED703FFD0BEF0B85B4
-:10BEA00007ECF3FA901815F2619FA3EA68E6D7C190
-:10BEB000DFED394BED77F339C52CAFC8E1A489101C
-:10BEC0009F98D7C2F06BF34405E7B1616C56BB9401
-:10BED0006FE6BF02E79F0C4E1B261E47FCBADCF93B
-:10BEE000CDAFBF67D269D339E299071E290038C7A1
-:10BEF000DF6F090D787F617EFD4B93F624391FE8D3
-:10BF00002B073BCA037660F49BE67396855E6667F3
-:10BF10002DF11AEF3333FE06FCD586C645341BFCE3
-:10BF20004B07AE8EFAD07FBF989DD7DEC1CF6BDFB7
-:10BF3000DD7323BEBF301AEED426D9F7F30DD6F742
-:10BF400017CEEF7D249BF935A216FDEA8E7D3F19B1
-:10BF5000C5DE9FD1F9EF72102DB382BDA38D72FAA9
-:10BF60007850B74BF1F7D114F85D0CF0B703051713
-:10BF7000C22BA09D987A807E0BE1F7857A315541DE
-:10BF80001C15829D14C4349354639A45EA300D9075
-:10BF900008A6D9A413D31CB0730B412EF462AA11C6
-:10BFA000552426BE5F4082982F22D598CAB06F19BB
-:10BFB000F17309B9C381F117707E01746F9C531836
-:10BFC000E7FB377B6B1EF02639AFB8C71BDAC1BE63
-:10BFD0007721DF9ECB59F8891F8DEA84FB3D2B36F4
-:10BFE000B1FB25065F47BB86F6FFC3742607F46DD9
-:10BFF00002F2AF35EE99D7201C5B6DEF9BCF1B880B
-:10C00000C35104BF3F63F43B97FB17E672F907EE99
-:10C010006D76FF2E88F77FE6829FC1544EFACAD90B
-:10C02000FD6BA31FD13D79F840E77BA6F6188F5C26
-:10C0300093A0FF5F526E27E4E725B6FF1B9D505685
-:10C04000DC0FF7C36BB45C76CEC4E43645240DDB5D
-:10C05000B5D84FA21D16991A32C3E5258EFF863C2E
-:10C060009997E0D74F4CE7C99C2E12FAA192CF0FB7
-:10C07000F766F00D14135D1BEFE81ABFD375472860
-:10C08000AC0C61CD02B08F2A9F7784ECAC1A42D3FE
-:10C09000739037F9F37FE70BBFED35D1891AAA13F7
-:10C0A000CDEF34CDE77438556AAD04FE76364C8258
-:10C0B000603FDC41EA36833E465E9190BFC13D6CF5
-:10C0C000F8FDA06170A0918E795DA1E9070DEC5E8D
-:10C0D000CE1978476904BC7FCDDE517A0FDE4DA2C0
-:10C0E000E9E8B6BB67021EBC0BEF27C1FD5B4EFF44
-:10C0F000C6B8A33BDD7340EE8FEEBCBA16EA8DEEF8
-:10C10000B0E3EF45951C5C5F0D7E2178CFC545C738
-:10C11000C9A1E339D2818F1094B7EFB5BAA26BE809
-:10C120003CDF6B93902F7F522AE2BB23F06CA6C4B6
-:10C13000E797960EFDFCFBADA087BCCBF988F17E9E
-:10C14000E47B951ADAC7BF3CB04E807B09EFCDD1B6
-:10C1500070DDEF0DE9CC4D07B9E463F1E545FBED8A
-:10C160005D05741E0B1FFB43410DF0BF82C8C26406
-:10C17000E7CCB93E264FDE7B8A603CDC7B4EFEFB83
-:10C18000488E4E9FD9CF1AF00916BEF59E97FFCE66
-:10C1900052CE25EAF1F872E2E9F431BAEFF4C1794E
-:10C1A000D4FDEE1FE1FDB5334FB1738A5F3E509B66
-:10C1B0000BFEA8229FC6CEBD0F3C8971E3B00EB026
-:10C1C000A3E9FC3498DFFDEEB7DE05FF036D87F7CA
-:10C1D000338C76670ED4B2FA6DB4BE0FE14E7C6537
-:10C1E000800F0CEE643FE31386FEB8289A85BFDF0C
-:10C1F000102F17B11CA6E8A4F01FBDFF063CD7AA5C
-:10C20000F0A5337C563B47CDC2F94772611D07AE9E
-:10C210000EE7821FEF8CF17B52722417E070B33768
-:10C220005CE133ADFFFCC96790BF9788756FDF0B8A
-:10C2300078F904FB3D93BBDFD82A9AF9C7541FD382
-:10C240007BEE772FF5C179D499BE7775222CDEE786
-:10C25000307BD77511A7BD33EDD47EA2F038BFFF78
-:10C260007B587EA6EFDD9B4E8C273BBFFFB9744801
-:10C270006B783C3F89DE88F445E1D2E24822AFFA90
-:10C28000EE4545D97DB70B027FCFF441036E75CAE9
-:10C290002CCB7915A3EF9C9DF9C7505F8E26BF2745
-:10C2A0009728EF13DFA7BDD43DE0539C4E4FF377A3
-:10C2B0004DEEF1866B7C49E448CDC625B900E71AFE
-:10C2C000B85387710E95D782BD8DF74DD8FBB45DFD
-:10C2D0000827E3FD59FDAA6B21CEF18C9FE5BFBB7A
-:10C2E000B97A9DCEE1C8EA4F63EDF359F97D504E1E
-:10C2F000EBFFDE5BBD9C8D4F04F6FB48363FFCCE6A
-:10C3000085C1FF52AFDFFA3B171DC093C7637FF7AC
-:10C31000607F32ED6FF43FDE9FC16FFEE17E1CFF58
-:10C32000B5FD187C18E81242F6483038EABF027EA4
-:10C330007F6F7B323BCFC2CF3F7DA0B019CE813E15
-:10C3400009B077A2ECADAB09C8A5DBB76F4DFA3BDE
-:10C35000797D791E4FA214523A33D1F3F39CAF3E4C
-:10C36000EF8B9F07C0F9CC7042F87B175455C9C2B8
-:10C37000901BB4FF46F077E34B4804F5AB51A41390
-:10C38000D352D28DE918D28B291E931682AB2F88F7
-:10C39000E99F2B7B2A60F18B1DE1872054D7EE08A3
-:10C3A0001F077CFA6058F8117807788D7BE924988C
-:10C3B000FFAF7DAAF17BA224E1F7D9E2BF2BA281D6
-:10C3C0005E332330905E4354F9FDBEF88D027C4706
-:10C3D000F8651FAE2FD5EFCD25FC8E25BF476CC06D
-:10C3E0006109E9C438885FEE5CF102BCEBB370BF51
-:10C3F00017E5C1F09D4DF87B620B497716DC2F1DC8
-:10C40000CEDF93206DEC1D0FE39D88916D76CB3BC5
-:10C41000164B127ECF6811FFFDB14589BFEFC5EF06
-:10C420006F6E840F49E20812EF7FF6FA52BCE75AAA
-:10C430009AFC776512EF7FEEEF1431BE6705C40BEF
-:10C440000971BE37724F9DDD8A5F9DD71499DE83D7
-:10C450006A1482CC9EF6BA427B85FEE38C53197E29
-:10C460001D1084A47164DF4C33EC9B26723DEDA754
-:10C4700071B1AC82BDD91875E13968A3CAECC2A10B
-:10C48000DE2A07D8E9C42FAA703F659A3419E3CB96
-:10C490009525F23838F73CB67B6137DC5F680CC80D
-:10C4A000E8A71DEA67E7A0648888EF0334A94FF87E
-:10C4B000E7C23E79D839E33095E0EFA11E695F29E4
-:10C4C00042BE919A2D83611C21DC8DF76E86C88453
-:10C4D0009FBFCE189B85EF98F138A556BC7F3C6571
-:10C4E000C96927C8F53CBEEF5569F9B84E99EFE721
-:10C4F000AEFA537EC0D3E7DB9B5F9E46FBB3456538
-:10C500008C6B2DF9BCF1F56974BCDE768598DFE3A0
-:10C51000CC5D255BEECFE6DC65CD2B09F788656247
-:10C520002AA7F972181FE148F544735C55668839EB
-:10C530000B550FDE0F0EA5094C2FE6F90AC85390D4
-:10C5400074D822552E3ACF8E3705F43B1C6D9F9F31
-:10C550008771FA3F09E7017E1BF890B87F4A9A6617
-:10C56000BCEFE1E4F7839D705897883F4D0DA41808
-:10C57000FCD18EE831D715B08F276CF89ED45AAE17
-:10C580007FCB1E16FF6EE04B62BA3601EFD67E7E81
-:10C5900023E25D2FC5BBDD03E09DAC6AA827D872FE
-:10C5A0004810C8C396D99DADD276573CA3043D141C
-:10C5B00064D37E5C9A06FACC15CFDDCCDEF5A3F011
-:10C5C000C27721EB9562B0FBEDF599C57206D4F305
-:10C5D000203E7EE861E73F72BD3B08E58DED150129
-:10C5E000CD84D7CD0D6AB15C0CEFE3388AE1779644
-:10C5F0009A53FCDEF330BF580DFE2585DBFF77A68E
-:10C60000B1F9DE99E6C674451AF35B3C28EBB360DA
-:10C61000FE0F52FC817881237731FC5D31C481F7B4
-:10C620009E573C5F3878A038A07D0D816280DBCEBC
-:10C63000BB6AD0EF51B9FC9813DE055BE175A880A9
-:10C640008F926FF8FD9301DF5FB0E1BDAF466F855C
-:10C6500036D7D49FE49B807E2549D4B3C1286AD9BC
-:10C66000F2D6B5F244C0177D0748A248DAF16B65EF
-:10C67000CA5F3ABC7AB640CBDBD25E60E583F41D7C
-:10C68000022D8FA6FD86E587E9D9F04B221D692F83
-:10C69000B37CB1BE03F29D69BF67ED41B7A07ACC10
-:10C6A000A1B4D7AF053DA7D1169C0DFE9D1FD1F9B2
-:10C6B00097D2F977F2F4A71C4E46F913F09DC2FB0E
-:10C6C000204F13CB9FE6ED0EA528FF292F3F9CA2FC
-:10C6D000FF9FF3765D29DA1FE5ED8EA5687F9CB795
-:10C6E0003B91A2FC055EFE628AFE7FC3DB75A768F4
-:10C6F000FF326FF74A8AF6BFE7ED5E4B51FE3A2FE5
-:10C700007F23A1FFB778FD1EFE3DC7DBF23ABC1BBD
-:10C7100096D3CE5E022DF1B6A0FEBEB3AE1CF1BF25
-:10C72000713CD3330C7CCF81784D9ABF52657ECD5E
-:10C730002B55C6E75FE1785DB9BC680BE0DD8A7F09
-:10C7400093509E523982BFE7AB2F67712F2B9E67A4
-:10C75000F741562C97F1F7800C7C34DA1BF3DFC5D8
-:10C76000E7D764C031AD809FB7048A6798E33D5531
-:10C770006BDE41E90942769A32997C29595EE518C7
-:10C7800001F283CA17E09B6B3D4A17DCA35FABCA7B
-:10C7900058DE9459A542B9AECA287FD6665639E606
-:10C7A000A23F271DFD13793C6EAF4995F11EBFECEA
-:10C7B0009F82E5D37E3C43053EDA447AFD95B0BEC8
-:10C7C00055329ED71EA9ABC2EF79FE8FFDC09F7F69
-:10C7D000E367703FE63DEE84775FE5EF88282F86BC
-:10C7E00003FCE8B805ABC4A846AB1C535788907F40
-:10C7F000B889C92BFAE71D6B7A77B16365C50B1051
-:10C80000BFD3B8490EC2790EFCC9267950C47FF750
-:10C810005453D32DF2EA41EEC7D5030E8CC32B92AD
-:10C8200049C0FC7B989A2AF17729D83B668511ABE1
-:10C830007CCA6FB1BE63F39FD7EF7F0B008000000F
-:10C84000000000001F8B080000000000000BDD7DD1
-:10C850000D7854C5B9F09CB3677FB309BBC96EB2FC
-:10C860009BDF4D801024C006420C88BA090122A229
-:10C870002E880ADAE286DF00493670A962C5B22145
-:10C880001103450DB71181825DA85AB462438B1222
-:10C8900031E88A88F8157B43AFF6A2F67A17A48AA6
-:10C8A00080B06A45FB63F9E67D6766B3E7245168AB
-:10C8B000FBDC7ECF870F1EE69C397366DEFFBF99D7
-:10C8C000CD23CA89A889E09F8BF984289A764EA344
-:10C8D00069B052C4DBF4AFD16553B52DB664C787D8
-:10C8E00049F41F5EE2BDA82364D9EE65932DB439E7
-:10C8F000E917C503A2C584AC30A58C2003685FF896
-:10C90000732D21CDAB3AAE19A42764EB2A3A2EBD84
-:10C91000367F3D7A26292524966CF1ED900859B38F
-:10C920008A8E3FB8A7FF681BBD3986906D4A683A6A
-:10C9300071D06B58214D745EAF2C9709B497B94DE7
-:10C940006123EDB2EC8DFFBC6E08B497CA5EE2E9DC
-:10C95000795F7B7D72956B307CFF2D3A2718571FCE
-:10C9600090069F1C4DFFAD045CFE644206B625ACEC
-:10C970009FFECD6FA5ED84F5EAF57E9BCD4A48DE9E
-:10C98000B7C04DEF7CCB1E2886F1151C5F3B8F6F27
-:10C9900083EB1AA9B1880CA4573A57804FC829874E
-:10C9A0009FA0EBCC5E71EFB8936984641DB2B400B4
-:10C9B0005C49DBA384A413A2836FD3752B92CF436E
-:10C9C000281E5AF24BBC12BD1E7ED6C2E0946345AF
-:10C9D0003819246FC6F5F46A94FD36189FFEF1C12C
-:10C9E000F80FE458B6AFCB8766C00470C8DE4907BD
-:10C9F000CC84F6C0B53E85E289829B8CA37F43BF81
-:10CA00006BF5D175ED94E2ED6A6877840DBC3F89D2
-:10CA1000C0FF76CB127B4EC7575C84EC9224F63C69
-:10CA2000E4ADAECAA6FD15DB30C54B48D056DAAA38
-:10CA3000CF81E7B278DF47CAE9FAE07BBC0D70F935
-:10CA4000F941F1BCB2B56A101DDF40C4F821E8BF5E
-:10CA50005B9679FBAA56187F57A5787FF05A5F3608
-:10CA6000CEE77A9D9D90FBDA26B65ADD3DF37D68D0
-:10CA7000C3F5AD4D747D9F78A2297419A47EFBC9BE
-:10CA80007442875A3333E007380261FB8713724AD6
-:10CA9000F220BD08FCE9F75484B2E8ADF387FE9CB0
-:10CAA000524CAF415DF45012855F7D67C0A42FA04A
-:10CAB00070D6FB4259F93DEFD5EF994602946E824C
-:10CAC0005D2578EDE3BDC38AFC77BD67325CC2F7B4
-:10CAD0003E89FCB6E119FAA85E1768B50EC4FE845B
-:10CAE000E1BFEFF589F73F79E6B7B7C2F7CE79A294
-:10CAF000E953802E23142E7DBC27FA37745610A0DC
-:10CB00007B29C9B7DEE624641E853971027F357A38
-:10CB1000A17F87A9CDE6A5CFCDFA36BF97F6A7A806
-:10CB20000CCBE53DD7876D83703CED7D2DFF749870
-:10CB300048DA544AD7A13AC5FB0481762869046DC6
-:10CB4000AFAF574637D129AD2EF9DDA862683F67F0
-:10CB50002546DA6EAE3BE82A063EF21A08152F6427
-:10CB6000FDD80E37F0714BBD61E6E340BF9165AE75
-:10CB7000F9C53DE33F64D7E33CD6BE46F96C24BD1E
-:10CB8000EA3BEC12BC3F5821C087663BC5336D9B26
-:10CB9000DDA924940FFDACEB811FD7EA03D595D016
-:10CBA000CF2D9327E877CD83675457D279B89CB2BD
-:10CBB000A4C379541D5B409F37DB0C20D9C87BF69A
-:10CBC00039CF019C7EAE781B810F7F6EB5DA42F4BF
-:10CBD00001958D3EE05B65B0230C6DA38E3476D05D
-:10CBE000F96595107F87B5679EEF71F9F89ECD8046
-:10CBF000705E6FEE985641C7B12C936D21FABDB5AA
-:10CC0000F51BBB27D1EFFCB8FEF9A34DF4FEBA74B7
-:10CC100085C03CAC0E256248A1747C039D239DF722
-:10CC2000AE26BF0DE467CCA9901DF4B9659081785C
-:10CC300012E4A0B598B613E4539A43F199E9FB7F47
-:10CC4000B2078EC0FC47BFF99609DE778D9165600B
-:10CC50009B0E85E139A5543D8E6DBC7A9CD42AF596
-:10CC600073C754F5F3F419EAE7AEEFA8DB99F3D4F0
-:10CC7000ED5B80DEC640473AE732BA0EF68858A22E
-:10CC80009FAE2229089F7700FE9642D90BF031D73C
-:10CC90003F7E6A017D9E05F284CE9F8C20E127288D
-:10CCA0003E0FE47EDF13A57036A6367AECC5BDE1F3
-:10CCB000919563BA1EF0651DA4D808ED6FFDFDC700
-:10CCC0005FC3F85692D02F1FE0E3FBC43686B55DF4
-:10CCD000743EC9F00F0FC0BBF17FEE03BD7754E780
-:10CCE000057867D52BF8FD076778C2BA7CD69DD04A
-:10CCF000FE29BC7F8A697DB76E04BDFE7EED525D64
-:10CD00004A6FB8A6934609F892D207EA0B524350ED
-:10CD10005F3C20935AA01BCAAE04C6B3C10B54CECD
-:10CD2000F8530D0827C5CEE887FE4B86E7E936366F
-:10CD3000A6C13DCF0CFC7CFF2146FFF71BD838F184
-:10CD4000F13CF851544120276D765935CE461BEF02
-:10CD5000C3DB4E3B6BEF3E987A3DF0E5C619A9A3C5
-:10CD6000804E8C3209C07803B24DBEA1747DE63787
-:10CD70000C21890E3A402107F5A9B4BF85DCE9A74B
-:10CD8000F3D87CD812D2D1FBE6F9FF6EA34026255A
-:10CD90007CDEBB577BFF13E440AC4641389A9D6D67
-:10CDA000B651C56C0D213ABF54F807958F1583DB3A
-:10CDB0006D804F73451BEA6F73495B1BC069F35469
-:10CDC00019ED89D47932D2B339A7E3E8207A5F3FED
-:10CDD0005FB6C178A954B11BE8203FCA6EF3FB616E
-:10CDE0005C0A73B98C910A8C8B2BA4DF49E37075B4
-:10CDF00038F6DC2DD171D260BC11AC3FC0C9CEE198
-:10CE000034D6EE413E75F071D306D1FE23D8382DCD
-:10CE1000653DE3083C6EAE2661989FF8AE18273E4C
-:10CE20003EF1492057F5BFA670A37892724D38B9EC
-:10CE3000FB1793B0311FE0E36FDC8E7C6D253B80E8
-:10CE40005F1CD99540479987B74C9747C07B16FC24
-:10CE50008E7E3E09031D672AC4744D2AD82F7E8416
-:10CE6000A3965FDD07DB6EA63C12C78B967FDD0ABB
-:10CE700069D5A5F6E663B7C3515938A20F7ED6F03F
-:10CE80008BFB70EC7B40F45ABE7E2CE95C09C085BC
-:10CE900024F6D77D7B5BA7EB383A09909541F504E2
-:10CEA000057DAEE67B84FCCD086D89C89E8B034171
-:10CEB000EEDB391D537D459975F728DB042BF0E92E
-:10CEC0005282F455B977FDEDBFA6E35D186CB081D1
-:10CED0005EC939DCD60DFA91740686001EB62A8129
-:10CEE0009F24D1E75B8F651090DB6BCD6426D0B7B4
-:10CEF000C2E95CAB5F1E02BE71226B8465D7DF7F27
-:10CF000015F660C7A0F461361B8CFBFA6193F37FC2
-:10CF1000D1CE0A0D433B2BFB60779315BE6F9BDC94
-:10CF20006AA2F035BFC9FA3F48DBA14100BFBA3C55
-:10CF3000E0C303390B104ECABB4602743A5CE70BE0
-:10CF4000439BBC6726207F773EF79D5A0FC89FF40E
-:10CF5000291E90433F017EA7EBD9C6F95EBB7EC573
-:10CF6000E00B803DA1BDFF685C2EF94FD5503C0E13
-:10CF7000FFA981ACA30F8BE439ADF9C0176BA9FCF5
-:10CF8000A54FE7E83C0D3F947AF0D369AED86587AA
-:10CF9000EFAD32918091AEEB2B89042873E6387E99
-:10CFA0005B01F227974424D0B3B98DD4E005BA5A77
-:10CFB0006E2181047ACFFE4AC1FE9D66DF2E3B972B
-:10CFC000FF262A07F4EC9FE4E7A97E52E360320AC9
-:10CFD000EC17FD3396E3203788A3CA17F7370A808A
-:10CFE0007EA9DEA7DFDBC7D7ADA76A423F8AFEB5C1
-:10CFF000CA11E388DEFD5FE6FD14933502F252B1FB
-:10D000001E3986F2C5A69C4DEC670A337D43EA487B
-:10D0100078B0C4E082ED7FB3613B8BCA5FE328B494
-:10D02000FB434698670AF33F88CFE771A403BF101C
-:10D030000472B689B49A683FA476CA6F6ED26D4600
-:10D04000BBF920F1003F5088D9C13F845B00D7ADC8
-:10D05000845427F281B88EB4313E5056E8D05F1A1E
-:10D06000F6AA19E7A36F246133D84330370A6F65F6
-:10D0700039092BE06FAD3060BF91360FBE67208D50
-:10D0800068CFEEFAFAFD4C90D39643D41E1B097874
-:10D0900096514E592C6AFE23A409E1F409E7BF6DAD
-:10D0A000AB6C88E7B87F16788BE339DA04FA22771D
-:10D0B00079AA0ABFA25FF6575924303A71DC308E44
-:10D0C0009B3DE8A0448AE1792E3EDFB6CAF32DE30A
-:10D0D00017F433BE1BE9A8FFF1B3F1F9B6C85BF64C
-:10D0E0001B2928B6C60EDAFD9E1EFB5A0BE7ECE59F
-:10D0F0006AB93CB253DD167031EB7D8E6914E6E6F9
-:10D10000EFC9DEED74BC2B8FA9FB55E7BF8DFE6D1B
-:10D110004FFF88E366E84FFDEFED201D4EA9FBFBB6
-:10D120002B5EB3031FF7F467F3BBF62B753F2D7E21
-:10D13000B4F3A5F372DE9230AF0926A3EAF9CC9AD4
-:10D140005EF372DE9630AFC92E75FF4053DFF3BA3F
-:10D15000BEC8F88DF312FD6E2ABFB47EDA75DC5CB2
-:10D160006DEC07EEACFF6D332F6DDC3B6ABFB9DFB2
-:10D170009D2BB4DF0921BD5F2FF97CA9F43A076E1E
-:10D1800081BD68B5A0DDABA5975D5C7E4E067B8E4C
-:10D19000F69F95EC9B9C4ADB1305DF3DF5BBDB411D
-:10D1A000BE1C7EF68A0C90EB59A0E7109E2CAEB008
-:10D1B000BBCE857185EFF2FE549FB480BCD8BD9381
-:10D1C000BE97C2E695683FA5D531BFC24662C8CFBB
-:10D1D000C25E4A253689F9E3CCDEE9EF3BDAF1D7C6
-:10D1E00071FF73EE8A09E403CA87CF1B6C150AF836
-:10D1F000678F49680FCCADF2E992297D8C6B953031
-:10D200006E34F79E7F1B0D7265EC494F6794DE9F6D
-:10D210001BB67BE1B30DDDC417A67495A15B5A72F2
-:10D220001FBD3E7280DA3FBCBD14E8CDEAF380BF7B
-:10D23000510333A2E39CD53796D8406E7ED7EA03DC
-:10D24000B95933C3F70EAEF7AFD42AA1FDE6B3A5A3
-:10D2500093BDEDD30C1E6A67D47CC7530E764F4D39
-:10D2600087D9875713512C741D35D41E836B868143
-:10D270002866B85A8809AE65AB99FD9552EE37D449
-:10D28000D0EFD774FDEC0B786FA1127985D993613B
-:10D29000C45B4DD71B7F027B6DBECF6F0079316CB5
-:10D2A000A781D9A49C1E8677A8DB200F12DB25114D
-:10D2B000757BF46175FBC35406DF7D527818E06717
-:10D2C0001F5570E017877619515F1CD86F44FC2CEE
-:10D2D0003963D90EF1A7094BAC28D7CF3C6DC6787E
-:10D2E000D43EB9E35968879E4D42BFFA9577F795CA
-:10D2F00049B4BDF817C9323C7FF16B1DC21996A322
-:10D30000A7F7973C3B74FB3A7A7FC9E88E321BBD86
-:10D31000FFFC158474C373253C02D6F7FCDF743818
-:10D320007EEC29637807A587332FFCECD97BE9F7DE
-:10D33000CF3C95952A51BC5C05FA80F61BF75393B8
-:10D3400005FC8C71679E1908F262C94EA36A5D4F95
-:10D35000A7327B83223305E8ADBF78E289B53FC3AE
-:10D36000F78B4E1D437ADBA70FC91658FF5A465F4D
-:10D37000DAFEBB5399BE11F380F7F2297ECE7F6CA3
-:10D38000B913E2684336A9E13B34AC6EBF90CAF4EE
-:10D39000FB1C92703F1FC62B58E3023B753B417B41
-:10D3A000A6E8D4EF6FCF073BDAC8EC07ED3C0EA43C
-:10D3B00032BE7EFA693A0E930F3A663FD315537E1A
-:10D3C0005CC2E9F84589D9AFF4CFF22C4AB74B409B
-:10D3D000F117F4DC5FA2998718FF077C9D0EEE57CA
-:10D3E000C7DED4213E4EAFAA1D7D7270EFF97CB826
-:10D3F000AA716895BEA7BD60D3D2436EFA5EDD6E9A
-:10D4000027FA89E27EDD53AFA6DF41EF9FDDA978E1
-:10D41000C174AD9BF5E443E3A0DF53BA0E982F3CF3
-:10D42000F7D1F59EED782D05FA2DD86A1FA54BC0D2
-:10D43000C3C24DDF1B5A95200F2F971F04FFD671D3
-:10D44000FF766F79F7A42CA0EF4D9217BA2DE9B8AB
-:10D45000E5E61BC056D9AAF30EA6CFCB14E2D78DB2
-:10D4600042D77B065CEB763F7728933E0FEE1F5347
-:10D4700006EB5A27FBAF1F0EF4FF981EE3585AB86D
-:10D48000FC85E39BBE1F91E9FBEB6EB5D686AD38FC
-:10D49000EE41681F28DAA183387BCA292A9FD8FD6C
-:10D4A0006332E5C9535DF78F8078E23EBDB515E87C
-:10D4B0007C5F32C34368970EE53C89B0758CE3719D
-:10D4C000E325FFDD6E50E8F5D4A9D529158C8F50E2
-:10D4D000BE805076D0F5D5FE7438F2DDC24D6A3E7E
-:10D4E00011FDC47C1785D5CFB5F4919526E20DA426
-:10D4F0002891CEB4FDD2A6860CC057752BA83C4E01
-:10D50000B07FEA4EB619C06ED27E072C4022F0AA38
-:10D5100043FA241E5CAF99AD979AAC26BADED3F0DD
-:10D520002F16F796C02F5F2CE112C9922B489587D2
-:10D53000C273C974520DD77D52E4211D9767187FBD
-:10D54000DF9584F2ECAC2DFAE48F81FE9EC9F18662
-:10D55000E8A34C1E973BEB89A4A4D2EB79E00BA087
-:10D560003F1B6B2FEEA2F29CF2F7994F0C28D79B32
-:10D570003A5E4D017C9D7DD62CCB142F6776A75546
-:10D58000423CE76CC7AF53605DA73BD22A212ED740
-:10D590009FBCD1CA29A1CF8FC33FC7526598E6BBB4
-:10D5A0002A0DE4564B1A18E32423ADB1A4B10FFEA3
-:10D5B00017EF390C8D251E901BDFB57A77303811A7
-:10D5C0001F6D7F76386D07E05BC8A91A898D2FDE45
-:10D5D000BF318EC76F968FD5EB86621EE833E21996
-:10D5E00000F27A1A287AFADEE1570A0780BD20EEA7
-:10D5F000373AFD33D2E87D5765B74F0771C429C468
-:10D60000DB4CBB7EA0F3DE65A3F89A47A8FE826BD5
-:10D6100069C08071971627AE6FAE42220AA5F7B98E
-:10D62000A05F47601BF13577AB146EA6EB99B75E30
-:10D630000DAF05EDC61E3AA17F17112A608111B703
-:10D6400026F4A3E32F023D4AF1B0D844224974DC0A
-:10D65000C58FABDF5B4222389FBA672E1AFBC2C769
-:10D66000171C1F8D4E5F7D9A4A0EEA510E2E21FE29
-:10D670006BE0BB4B84BE7E8BE12B78CF3D43E75103
-:10D68000FBE3FC8A7B87CE4B837822F1811D41DA54
-:10D6900093918E975491480E9DD7922E29323CA596
-:10D6A000675CF24B89F96744C1F57FF116C3DFED82
-:10D6B000DCEE994F6F831D7115F8EF80EFCD12CE20
-:10D6C00063DC33522899FA49F34DD4C503F9C4D722
-:10D6D0000BFD07D0F6421242F83C9C968F785B44D3
-:10D6E000BA0D8C7FC2CDE9F4BB0DA7A84C2297429E
-:10D6F000076311DF9F132FE2FBDFE3745086F421F1
-:10D70000EE53FB8698537BBF0F78F325C0B976ABF9
-:10D71000BA4D1E4F6817005E683B015F0D7B2E1AE5
-:10D720007D7DE0E991B87E0B0F9D363C913F98FDE1
-:10D73000FC3EC7E323B72C70833C7A18ECC94C3EFF
-:10D740004039C86F22E22311131DDF329AA8E22567
-:10D75000D44EC3F62FD2FEEBBA4DD9846CD4073029
-:10D76000EF3057E73F0429B281E9815F01DDCF95B2
-:10D770007DB90AC2D557887EF30A460F8F8E6A1C80
-:10D78000DAD887BF2CE6BF51EA88C8209F5E60F6D2
-:10D790004672694C1F48E0F737D3981D33E040F4D8
-:10D7A0005016D0DF7312C6F7374BA445A2707651DE
-:10D7B0003C835EDA2C1D3F047A6CF3751ED24C9FBD
-:10D7C00097EE99B6F435F4B92D5EC897D4EFA9D089
-:10D7D000D55B71FDCCEE4D6ADC2ED3E71977168D43
-:10D7E000023EA3EBBE733ABDFFDB340FC2CD6D65C5
-:10D7F000F4E35A1DCA5F06F1DD03FEA5AF01DD0D9E
-:10D80000B7601C2D83C22A3915AFAD60CFBA4893DB
-:10D8100004FDD63825C4C79A1A32F397C548CDCA35
-:10D820008054763D46AF92425A202E9CA150FB98E0
-:10D83000DD6F81EF3C92C2E6E59475774E03FB7C89
-:10D84000146BA7AE947C3B508F6D403864184935FB
-:10D85000AC1BEE833D4FA7E1DB8DCFC338EF8C09C6
-:10D860008D25308F8C81ECEA3044B2619C23824E4E
-:10D87000BADC32E88DE55CFF2FDF5D91914ADF3F36
-:10D8800072D6A4803C3FE212F668C40AF628195406
-:10D89000C4FA733DBBBC64420630B52357DDEFBC10
-:10D8A000DE376034E8ABA33ACC1BFDD1EA1B60A79E
-:10D8B000FDAE32B07568F1AF7330BC06BF92483828
-:10D8C00021FE109C7901EDFCE0578AEAFED955262D
-:10D8D000124E883FD4D51E9804FDEA49F71AA0C716
-:10D8E000FA8E24124EE08FAB2C7D7F57F045F02B43
-:10D8F0001D098D46B2CF8638E9117D6CCD7CA0C361
-:10D90000FD12C6B382D4AF0F25CEEBAB34124AEB77
-:10D910006B9EE9EAFB743DAA76E797D88F9447534C
-:10D92000E03BE76CD1143B5F1FF413FAF77C580E11
-:10D93000E947629E92E96188335999FE9A06F85543
-:10D940006229D3937BC615CF61BCD484759E9B6935
-:10D950002011C44B0CBF0B700B0D21644BD7A706D5
-:10D960000FD8235DAF20DC04BD24C22F9498B76A82
-:10D97000EE8EC854565CDD9EB3AED84C517580CB4C
-:10D980008550DE3ADF78FA5C27ABE44452695C6E7E
-:10D99000A0987A04B2681857F5AC83386BBCCDFBFD
-:10D9A000C7DF0FE54FA9A2E39516B3F727B717FC1A
-:10D9B0009FD5A003491BD3CF4A2CD79F9CD0366953
-:10D9C000DA56DA1E9ED0B6699E3B34CF5D9A763623
-:10D9D000EB7F363992ABF31232BDBD708A42E5D689
-:10D9E00059776436F5A8C97ADDD02955B45D5FCA88
-:10D9F000F47A4397E44535C5E1D7E06576ABD51BAE
-:10DA000035CC2D0638741F02B952D729D924CA073C
-:10DA1000D68EDD116CC37B9E84F73A247CAFAEE3D7
-:10DA200038BED7EFF84532F2F9BAA213AC5FC74758
-:10DA3000683FAC69A9C1FCBEC85FEB88DF9725F5DC
-:10DA4000E4AF857C3DE7F6BD2A33BAB625FA7341CB
-:10DA50001837216E24FABF37BCEB6D304F92967F9A
-:10DA6000DA04F6F47FD77F3406ECCBF7B81ED9285A
-:10DA70008587C277B790C050D0A3DFAD1FFC8A4C1A
-:10DA8000FBBDAF8F6E831CDD86F66B107EEF2747E4
-:10DA900073242A637EE4B88EB59DD16D00CF8F1DAF
-:10DAA00053A628749CF773A239326D3FDABE9CB539
-:10DAB0000747B741FB654780F51F1ECDD1D9C0553B
-:10DAC000AB9952459F3F61EB9B9F5BB91C11F333B0
-:10DAD0000FF4353BC07EAC63FA671BB57F4D545ED7
-:10DAE000CE5E7C7AD713140EB3BF9F8472EC89B3D9
-:10DAF000374F61FE41C8AF9441FC97FD41FD8872EC
-:10DB00005E41FBC20D3A31B5071FC9B9DD1ED41FF6
-:10DB10005734EE06BB25637631EA8FB169BED3F088
-:10DB20005D71FD4526BB9E76D8985CD6C9980FCF0F
-:10DB3000B83719EDBA87CD6C3D946F10BF568E8FF4
-:10DB40006D0E66976E7330FF7649DAC4D30E7A7D18
-:10DB500057F26D3651B8BFAB272133C8D94516B43B
-:10DB600097EED84EE50695DBED7CDEED1BDC61C85B
-:10DB7000E7DF21113FC815213FDAED3E776A825F6A
-:10DB8000D45E42DBD61E3FB87D9ACF6D71C0355D45
-:10DB900086BC8F904BEDF9EC3DA18F329AD977324C
-:10DBA0001E1EBA03D691A4B0F8D5FC99853B9AD035
-:10DBB0001E988EF3253E9F1BE220271715C810D70D
-:10DBC00012F8B962A06F2FC0E5769E17107812F890
-:10DBD0003CCDD73D5747ED09BADEBF380308476A49
-:10DBE0005F8CE0F133B42F4E836E4F802F51A263D0
-:10DBF000E0FEFF4770FA3D3CFF47E154BF82CA0B8D
-:10DC0000F912E40587DF4629A2CF60F202FD79B858
-:10DC10000F7AA7332D1083F1C5F767DF5B8FF6A46A
-:10DC20009857D2DD7BAB6F23BDF94C6BEFFD19F03C
-:10DC3000E5ECB14BBD220ECABFF3FEBB26CC7BBCCC
-:10DC40006FE840B9F93EF5A39A40BEF0BC7DD9F724
-:10DC5000971C017F548C1B70EA70BCB592CF0DEB02
-:10DC60005B4BF16E82F94F33A0BF21F46ABB3DBC20
-:10DC700019EA26DA6FC9C6BA89F384D5A78456246F
-:10DC800061BFABE41304E2AAB1B136CC9B533AC1F5
-:10DC9000E7EDB30AB17E85D243C80CCF293D419D43
-:10DCA0005F7B095D108C37EB0A7C0EFE3AFAD9B324
-:10DCB0004C385E1F74C2E2D443587D467B3EA7C3F6
-:10DCC00045054887E9CD2C1E4A14DF8869097A7E0C
-:10DCD000BC93E139A934FADC7F01CDAF37A33D0B0A
-:10DCE0003A16734A6D19381EC5FF60278B4B209D6D
-:10DCF000CD7B2899D7C379CB00AE0F2433BADC6A29
-:10DD000066F9AEADD47E46B9C8E957D4E105B89DF1
-:10DD100017AD9553C05E18ED8CC73B7C107FC07863
-:10DD20003B7D3E272A1D07BF6F4E481731425CB826
-:10DD300075A22F9AE0BFC01FC817DEC9E52AD944D3
-:10DD4000D0BFBA13DE4B81F12D29901FBD13DE0722
-:10DD5000FF71E544551E7022C8F0313DF3D3CAFD72
-:10DD6000894E1EDF6C7BD497F81D31BE763CEAC726
-:10DD70004E723A11CE9101E04734E9108FDA7946BC
-:10DD800037B1B87974531ED29D18AFBF79FE8F2E6C
-:10DD9000F63D89EAC10513987F2FFC9EF9DCFF262A
-:10DDA0002BD57E1DC479E26D5DEFB6D64F84FCBEE7
-:10DDB000BA3FB35B928A6306CCFB7824D5FC05BCE2
-:10DDC000FA83439DC0E725C24DE8BD47CD549E521E
-:10DDD0007AD904759094BE36DD93847ACC61080FAD
-:10DDE00005BADA02F535A84F99FFFEF91175FC4521
-:10DDF0008BBF1FC4E9EAF2FCEE26C0B9B3B7DF1D42
-:10DE0000B4C41E03F8072D8C2FCFED4F46BE2283DE
-:10DE1000A2B3A1EEEDFC3E23017E6890A2852027EF
-:10DE2000CE49BE1AECD794E401FEFC406671812015
-:10DE30006084AE3318FA0BD65B053BD57EF839FA11
-:10DE4000B796F2CF39395A06E308F902F204EDAC7D
-:10DE50005A96876A904908FCB4ABE4398BD09E98F7
-:10DE6000954976E0FDE385E09709BD41FB1D94529D
-:10DE7000191902FFD5717C34C827B05F1DD44D013C
-:10DE80005EC05F83781F3C4C885337AC3F83755B23
-:10DE90000D7BD47453D74357D24509DE4BA033943E
-:10DEA0000B218423DAED2047AA581E3D99B793AA87
-:10DEB000BBB18E2BC8E32FCE03D149209F924B3BA1
-:10DEC000C81C7A0D9E6276CBB8AEEDAF825F6EAFA6
-:10DED000EECE01760AF278A7A01B31CFB15D1B749C
-:10DEE000E0370A7B27C16F1D3A5D15B7588DEF816A
-:10DEF0001F0CDF8BC22D379015D3931BB99E4C029C
-:10DF0000871AF469DB10D4A7A0EF40CE093F1AE4CA
-:10DF10001ED0D5C0F4CA23C0F72FA657BEEE74B2E8
-:10DF2000EFA17F00CED7D8FEE94EC047F4037FFAB9
-:10DF30009BE3905C7E13167F5CF686F31BE9FFFD86
-:10DF40004BA6FFA11940E7CB244F06D0F9F138FDCD
-:10DF50001762BE52DCFF5017C038A388772D82F8B5
-:10DF60001EBDD67139B480C7C71688B8D826755E6D
-:10DF700015E2D189EDC5224EB6D3D8536F04F2A372
-:10DF80008A4492E978F51067836B87FABD061263BD
-:10DF90007CD479D1A8CADBB63338DEC9E9C95E15AD
-:10DFA000D681FCDA6C66F13221D7C6ADDC8E7432D4
-:10DFB00060942FFF7EE09B37F4186FF903A70301ED
-:10DFC000974667E551C0A745C7E381F71B519E9F60
-:10DFD000A476C26E1EE7990EFEF1AAC050A897273C
-:10DFE0008A2D37D17F16D775FBCCB5687FA7CB2A92
-:10DFF0007A7DDEC9EA9B30FE85FA2209FD012ADE20
-:10E000004600BD9615087D4D4640DCEDB89EC5CD59
-:10E010001B6EB50660BCA8CCE4A13B9DE929773A0C
-:10E02000AB5714EDB8FFC9E951E443210E95988F21
-:10E03000F0C4FB6FE075C804D7BB7111AF778FF3E5
-:10E04000858CF22DA9D88F7AE12AB912E55BEC63B1
-:10E05000AB07E0527DA66E11ACE3B399160279C905
-:10E06000793C1EEE4DB7E3B8228E7DB9F1F0D1E9CF
-:10E07000717A54C5C3F771B9B88FB0F9865A8C2C30
-:10E080008FC1E7BFEFD41561CE1F21909BB1DD6634
-:10E09000A68FA99D0CF27ADF9E216158CF713DB306
-:10E0A0006742FB93F9FB81CD10A7D9F74BA717EA7D
-:10E0B000A0828B4F8F00FB76DFA9A77FF51BB8BF2F
-:10E0C000DFE8057F741FCF63D419228568CFF3FA88
-:10E0D000CFBA944821C4A55EE4F8AAB3D036BD7F78
-:10E0E00083293035DDD9936F84F7E0FE8930F31B47
-:10E0F0004E104607A1F52C2F4CE1EB8679C4D6666D
-:10E1000060BE12D60578F860FF709CF7463DEFFFC1
-:10E1100020B32F4FF0F689174AB01EF2BCDF80F50E
-:10E12000CBC187993D3B57F63CB60264EF4B49188B
-:10E13000079DDF7E14F347C187164E85E7C1C52BC7
-:10E140006F24DF9057013D9518C73F4762B9E8A794
-:10E15000D7167444E877CF750DF5B2F4A80B937118
-:10E160000DBC4EF624852FCC3BB65F8FF0BFD4F1AB
-:10E1700031A059C6F4257C279898BF42FDA2CE67EE
-:10E180007D5BFB9C3E5A780FFDFEDAD4C00FD213A4
-:10E19000ECD8E04B6E94A31F3CF8652EDA3B6D2C57
-:10E1A0006F7252EF9B0D7C62AF8A18E624C8D78D40
-:10E1B0009C8FE71AB95D4BE56022DF8BE765956AB6
-:10E1C0003E13D747D2995C4EE6F512BD9F8B7ABCC1
-:10E1D0009B8DA08F59C80BC6F5E0FD3C9EC71C77F0
-:10E1E0002AF60AD49DD57594609E346F6504F99221
-:10E1F000C23B02FEC9C9CDC94C9ED065C2380BCA0C
-:10E2000009DAD50B74ACFE638191DAE9CC2EC0FE3D
-:10E210001F6ECE403894AD66F669EC3909E5A2C8A8
-:10E22000E7D610F6FEDE96E3211DED5FB3532AA17B
-:10E23000A295D4B454607DC8E2ADF988FF715CFE4C
-:10E24000CE35FA0A3703BDED4D467AA3DF437FA0F2
-:10E250000E6AE046A15C32807EADDD29617E44AC71
-:10E260005F9B3F256175DE695C0793DFA03748A29D
-:10E27000DDC9F510E80BA2B16FD57411BA247DAADF
-:10E28000D50787E372F2F2F4E9AF417E8DE9AD4F35
-:10E29000A9BF70249DD10993FFBB59BEA99E34B27A
-:10E2A0007C1BD767F175717DF8A18EE9DF05C60D7E
-:10E2B000783D9E9E8FF35A4CA23CEF1433C0FCFA7B
-:10E2C000A3AFE3FDD097A0AB139CCEEA4E91C8D587
-:10E2D000F47B752B49A47E04BB268F40FDCEF4BC95
-:10E2E00089E979B85A2E41DF6BF5BC56AF6BF579E9
-:10E2F0008681E96D414F89F907B093C6AD0CEB58A3
-:10E300009C39DB86FBEB387E97A4F92E668EE9B14B
-:10E310000383C74C26CF4868FB498115E26715EB9C
-:10E32000B2212F40F500F06F1285D376888B71FFF4
-:10E33000E3EE6CB67E17AF93D22B7E5262053C752E
-:10E3400063BC20E624E8BF0BF86E4BA6EF8D82F786
-:10E35000185FC7DF3791164BC2FB95FBCCA8972EF1
-:10E36000BC908C753D54CFE4D9E978E9EF51BF8179
-:10E37000B6CFED4B463BE11CD71B0E1197216B101E
-:10E38000BFCE0C86E710A9CC82F83691A66481A88E
-:10E3900015F66CBDBDBF7C047F9EDF7D2BA33323B0
-:10E3A000EAEB0BF6E85DD0A6F3C13AECE40C36EFED
-:10E3B000E09E0925F742FD85DFEA65500D9480FD5A
-:10E3C00061D42DBF15E25E93742B63F7D075D4E74B
-:10E3D00058B1BEBB2AEFF7BF9B45DB1FEFD113231C
-:10E3E000E0FD899B0744E035C5E7EA8B4F1685F5CC
-:10E3F000AAFD834B76AADBF51DEA769024EC2FA4C8
-:10E400002058F1FB926B0E26D0495946B2E3C36106
-:10E41000C096C40BF5E944F79D01813EE4AEB87E99
-:10E42000B9CA7BCD413DD6F75D9DC1F8D900F6D183
-:10E430001CA0873EDEFB23E77BA3B1F114EC133075
-:10E44000BE68F436D1B7CC198149F07E831C3B04F9
-:10E45000F834E69D1D01FAB432EFAF9827BC701F67
-:10E46000F1027C2E982BD04EBAB0D9EC017FB13D91
-:10E47000D7CAE2322F496189F91553C750F95A8B2F
-:10E4800053A1EBDD74DDC76C530B31C9885FEA55CE
-:10E49000B9405EF9D0CFFB709AC5B69ABE57BB891A
-:10E4A000E9ED3AD29D0272E087803FA06BDD330632
-:10E4B00013FD677E8B6F68139DEF12BF05F733293D
-:10E4C0005F2B7EA0AF0760C804BF644E069307F5BC
-:10E4D000A6A8A102BEFFD779D5CE829E389E41CF95
-:10E4E000E2784A6749248BBEBA70C55CF4BFE2F992
-:10E4F000FACDAC8E6CE13D3578FFD5CD465CDF873B
-:10E50000FB25A4F30FB7B1F52FDC64F640BDFBB5D6
-:10E5100076E6BF2FA4EFF5BDFEC91FC3BA3EDA7A77
-:10E52000B717F2101F11F69D908DC5DB3EB2B1BA40
-:10E5300002E80BE37CB46720DA43B59B164DC5FABD
-:10E54000BE6D3A2FD823647F32C6B1166EFBDE6FE4
-:10E55000C6429C6CFAEDA500876BEDCBD3212E440F
-:10E56000FBF9C3CCBE6675D3A9E54F021F5EFBF570
-:10E5700084EE6BC1EEDA46F9249FED4B007BFFE0A1
-:10E58000B6C968DF2E9C66B1C3BA3C5B9F98047A1B
-:10E59000E8A3699932AE6797446C0007FB8A74B8A8
-:10E5A000BF5052FC7DD1537E860EE15A9167F546ED
-:10E5B000E0BDB775482794AF6E053D5CBF4D8FF643
-:10E5C000F3C1E9EFFE6E96A387AF16EADA6E1D97E8
-:10E5D000603F05B7DE20E88444CAC02F6330D1F223
-:10E5E00097316F6521CC47CB670B573716B2BCDC30
-:10E5F000E5F11BD9CAF8EDF10C89C56F2E9DDF7EC0
-:10E600007E39FC46B25355FAB7B75C0B613F91D7E0
-:10E61000307989EF092BE6AF7D1295BB6F6528F83D
-:10E62000FCAD0CBE8FEB4FCB76BE49E1332B23B054
-:10E630003F03EC28E22B013AF2C46C95B047CBCAF9
-:10E64000ED41B295D9DFE02700BE373AC993EB120E
-:10E65000E221DD196C1F21E5FF4330CEB977FE7A48
-:10E6600008F0D3907B7604CBEBFE11F3A0D62E9668
-:10E670003FB77A635857A077F891FE845C0F7A9978
-:10E68000DED1AE2BC3C5FCC2A02386E37CE6627C50
-:10E6900028F20A5B5658301EBCC51136B37847883D
-:10E6A000805E9A5AAE63F93F6EAFDDC0E3ACA6D28E
-:10E6B0005709E4FDC878566FF766E9AB4A1A6DFF53
-:10E6C000A67CA217F73996FEB4B500D63D5ECF9F63
-:10E6D0000F0CC1BAFFC35781CF97B9741EE0EBA9E5
-:10E6E000A5AC6E94D4A6601CE7CDD20F1CF312E645
-:10E6F000EF27268F95D2C974EA2C25D639DE38DE6D
-:10E70000ECB126D0D7676D5235B39B3D03660C67DD
-:10E71000711AD4C3A56A782C7319F0BB2FA6577C45
-:10E720000A70BEF61A868FD3BB8C61907FA7F9BEA4
-:10E73000A15E74E1E2F4F39D22551D82C3D0910BDA
-:10E74000FAF18CA47E6F71AB0EEB0016B54A244C27
-:10E75000BF77FAA9BDB920C73F7E626FEE9C84F9EE
-:10E7600068DF13578BF81E8F776AE3D7FDC5AD4579
-:10E77000BFF39B48C034B0A7FFF9DA3F63DC7A4EA1
-:10E78000178F7BFB7C831CE04FF1FEDAF146BB194F
-:10E790007D489D12C64D44DCF6C4E19F4286288E1A
-:10E7A0003F7357BE9C58272AAEE338DE6E06BCD1B5
-:10E7B000A5985B59BB3F7CF5C78FFFC1F58FC0DBC8
-:10E7C00089D68103008E8606AB42D8FEBD22B0F703
-:10E7D000B7118B17F8C990E9B282FC12E71F7C6968
-:10E7E000665787855EA9BD96935984EFDD2DFBB1F1
-:10E7F0001EF14BB90DF76FDEAD6BC43AF73217FB64
-:10E800005EB6CDBF7B01FA391D58F74E5AD5F04D93
-:10E810000728809EAA31A09E1270BE6ACE5DE8EFE6
-:10E82000F6819F4D403799E5EC5ED095CFEDE52818
-:10E83000E643CCE5C4067181E6B1219C8FC04F90C0
-:10E8400075275297847632D4EF24A562DE37C4AFA1
-:10E85000C49A4AE2799024EE1F134DDE838AAD10EC
-:10E86000F413F304310675400FDB3BDA0A59DE1866
-:10E87000ED4F1817EECF2956306F00FD0CA3BE9D4B
-:10E88000DEE274C9EB3BA78AFBB5963EF32C5361DD
-:10E890009F14ED9F43F520D87FC4AB57ED93DA4A20
-:10E8A000ED66F0EB441E5B277794B8D00FE98E42FB
-:10E8B0009CC55066F2805E4DD2751401DEB4796D50
-:10E8C000DA2F9FD55364DB41AF887D500D2B26F89E
-:10E8D000619F41DCCED8CFFCA3867B2AF0FE842E3C
-:10E8E000962708B61A711F67B053C2BC5C83DF104D
-:10E8F00036613CC4D304F80A513B0CFCCF763BABE9
-:10E90000036BBFCEE60D91C4B87AF4B17B31AE6E25
-:10E91000C57CE4DF9BA73D9F4C013032210F37C0FF
-:10E92000C4EB0D59DC3D9DD393C0BFE06791D74D3B
-:10E930002EF6E783C5FDE5C6D0AF2DCECBA87F214F
-:10E94000B73DF88DF52FE4A31BA0FEC504D63C7F90
-:10E950000ED3A27A33BEAFD1ECC1FC5DFC399C472B
-:10E9600061EA94F8FBED374C1C8475BBBC9E66D6FF
-:10E970007AA8C37FD84C54DF4B9C9FA2195F4FC726
-:10E98000B77A44FF7BAF9FA8601E9BB7DFFD21D401
-:10E99000FB3CAC578F872428F6619A7ABEB72E6B62
-:10E9A000C883EBC7F7E86FAACFF7BAC6F4E8F10758
-:10E9B000DE9DDA36D203FCF539D6410B7D1C74B0EE
-:10E9C0007A18ADDC3AE09284FD3B0954EC9A993513
-:10E9D000787E433C8FDD35CD07E758883C7670A5BF
-:10E9E0001FEBA141FFBB50FF9FFDF01580D2F4D378
-:10E9F00068FF07BF52585C89DA1112A543535705C7
-:10EA0000C64FA13C17F4A6C0FF62AE97C05607FAE6
-:10EA10000E6EBDED091D7D9EEBF6FD078ECBFD4014
-:10EA2000ED7C4FB9D8BE816051E5669007E47189ED
-:10EA300080DE5E57F419DA190D2F4C1C9358CFBFA6
-:10EA4000A8F311560FBE53DFE7FA4FB9983DDAF03D
-:10EA5000C27318173D1D66DB886A95F0DA71109F46
-:10EA6000A995C1D222A5E19A59A8FF67D275D075A0
-:10EA7000FD86DB25C19D3787607F4190FE05906D47
-:10EA8000F12F407B7FCB4C9315F248C1A2394B91BB
-:10EA90001F6C161FAC5F3BCF781EFC1E0BC62DD71C
-:10EAA00075EAABC16E2AA376D2AFE87C7352A75445
-:10EAB0007BA95CCAD2ED2EF9372BD40FF4AD87D7E2
-:10EAC00067323DDC22F943379562BD2749AC47CA1E
-:10EAD000EB64F6D84597411587BFE86276E2F850B7
-:10EAE000F704A0B997946812D8C541E2FB14FC5C06
-:10EAF000E2B77A601C380103EC2CC72A0FC6854D9B
-:10EB00008EE80F47A2DDA4A09F21FC88732FB038A8
-:10EB1000DA5277C0EA86F88E2EFAA39B006E3F6425
-:10EB2000FBAB89C2E44DEECDD65110F7323BA23F8C
-:10EB3000AAF6601D11C61F065CDD827878C9416C9B
-:10EB4000009F09A11A454AD033426E4C88EF637288
-:10EB500060BCB5928B97C1145B1F9A90445B2EA644
-:10EB6000F5D80587FF3A43819BC25E904D01F4675B
-:10EB7000AA6652FF10E8724DEC900CF17D4737DA2F
-:10EB80008BF51D127EA7BEE89758E7B784D793C5CB
-:10EB9000EBBA9428D6B915BA93785CAC85D103E961
-:10EBA00046FF973CC3E04FF526D6BFF5D8ED4DACF8
-:10EBB000EE888F67E079897A1EAFA180C2E7256E63
-:10EBC000116F5BCDF5AFA8D763DF258AA72C31BEC7
-:10EBD000B0711AD524382F4F0ACCB7D3EC1FE7A653
-:10EBE000EF9FA895595CBC35290C9B72374ADD3ED6
-:10EBF000885F864AFADE7F7413FFEE8003B149987E
-:10EC00003778A1BF7A6056FFBB79CC1558875FDA99
-:10EC1000F9E924A00F524D901FA9BCB8A47AE019BD
-:10EC2000800FE7FF43F5C05EC9B7835EE7BBEDEA3F
-:10EC30007A602FC397C8AB6AEB80CFB9230AABDBEE
-:10EC40008B3EF604E8DD4E23D6034EED7CFD18C462
-:10EC50002FA79A4807E69935F6C3C9B49B1B004F06
-:10EC6000E73FF9F0B1FB09D4913FEF65F5856A7B89
-:10EC7000A03FFB1F7323097E6248D0CD3FC9FE171A
-:10EC8000F23AC8FDA93352ECA14258DF7E9DADAFE8
-:10EC9000FD480FBA45DEB59F7A96AEBEEB5944DC0F
-:10ECA000B93A9AAFCA733D1AE783CBCB9B6D819C6F
-:10ECB000761F793385D7A92912131D24C7A0CA9BB3
-:10ECC00029F6C2FEF266117CFEDC107CFE40AFBC71
-:10ECD00019AB7768D99FE101FBBECE197BF2490FD2
-:10ECE0008C67C0715A5E480A433D7F0B877FDDA564
-:10ECF000E7CD7EE5EE236FB69DDB6F1F14C91103D0
-:10ED000085EB76C2E61FEA12F93319FDD8D88339AC
-:10ED100062FEF8FCFC83C3305E3457E4C55E62716A
-:10ED2000B4B93CFFF5C1F442AC67EB0FCE735BD5D1
-:10ED3000F985D7389C2F982B301E7FD7BF4FC3F84B
-:10ED4000D40288E30F84B8561B8FCBB3789EA79567
-:10ED50009D2BE0D929853D2C3F6392D136B4C970F3
-:10ED60007F0915A35B40F48628D55C496F4B146A74
-:10ED7000F4B9A785B6A9D1AFAC55422EDA6FFBB175
-:10ED8000248C9F3DE0F0E07C1F686179EAD07A290D
-:10ED90003C988D8BE7B5855A641F8CF30737D3F306
-:10EDA0005FBB0D7D9E0FD1A2E7F910FEBD26224765
-:10EDB000E02A4BECFA804DA9EECB7E10E3B5E81BC0
-:10EDC0004D1500EF1C762ECC05836F26C697530B8E
-:10EDD000F1FCA796E4C6D66AF61C79F68239E6C736
-:10EDE000E7572BCC20259E5498EF7B6E9E5FD3C0B7
-:10EDF000797E9BBAADCD1369F7BBCD258121EE811C
-:10EE0000BDF783BDC7F5DF8575F91C2F5ECC97B4C0
-:10EE1000E83DBFCD077A5FCBCE776ACA6670937341
-:10EE2000D8B5C05E85E7F0113BB7E3089B7FC1D53D
-:10EE30000E09F8A1C5CEE8F61F9DB776BEFACC4202
-:10EE4000065F3BE3D796B55298C18BCDFB52E322C8
-:10EE50000333FFB972F103C9FB64241FDF43B91008
-:10EE60007A508F7C778284B3587DA80DE5E61CEE3E
-:10EE7000E716677AF0FB5B6A0B52209F3AF7D41AC9
-:10EE80003CA769C2CD569C7FC34B66F4E3EA574664
-:10EE900073819EB57084D92A429ED2E7731C849DEB
-:10EEA000EFD3AACE0F6AF3BE6B53FDE3201FD450FD
-:10EEB000192D84BCD123F207BB5F67720DF56AC3BD
-:10EEC000CAD8931067FE6E6AA002FA9DBDE7DD49BD
-:10EED00092075F47F9767EFF10DCD739A745BDBFA3
-:10EEE0008DAC57E71F496B2AC6D549BBFA3EECC328
-:10EEF00052BDD72B1FC9EC9A8D86C050B03BAFBD19
-:10EF000086D55B7CB2482680CF4FCC84E7F9859CC0
-:10EF1000F51626EA81D9FDE295F60338F3FA57D1C2
-:10EF2000BF1EF04AF159C7F1FAC9735716025ECFF6
-:10EF3000EEBEB210F0BA51DFE603BE18981E980379
-:10EF4000F03839D18F76A1A8F7BD547A5B9AC9F50C
-:10EF5000E0BF480FFF407CFF32F530FC498C97BC86
-:10EF6000F45756971BEA62FB827BE274A7F17CB3ED
-:10EF7000F35FC912C8E1FEC6B371FBCE652221B0B2
-:10EF8000BFCA2AA3F85ED99F650276A0B07FB5F309
-:10EF9000DFC0F1BA23D377C105F8E571DD5A3EB67B
-:10EFA00029FC39B3B31F97306E6BF28452C6A15F50
-:10EFB000357FB40EE5CAAF70BF07E9926CE09F2CB5
-:10EFC0007ABC099F9FEB9C8BCF655324027E583DF2
-:10EFD0007D0EED35E3D5F5DBFA3D259144BF97CEA7
-:10EFE000E333F04B931C3103D06703D8D5748A0DFB
-:10EFF0000A8B6F373808C6554A3BD57EA2C8DB6EF0
-:10F00000F1B3F373B67449788E56BA21909F0D7898
-:10F01000D5E46F7F91E93B96E9ECC9BF373A7DBBF8
-:10F02000810E1D06928BF57A7AB11F51BD8FB3BF49
-:10F030003AB897057F7CABFD340BEDA42F881FED0C
-:10F04000A403107BC0BCFDAD685789FBBDEBE0C2DB
-:10F05000AA7CFD02BEDF7601DF6F0BF23EA291F7C4
-:10F0600089EDBA843AB8485FF50C09757089EF25C7
-:10F07000D6C1455472B28DEF07598679F220E59BCF
-:10F0800015A37AE8BA8EF03F9B621FE07EA09D46F2
-:10F090008CCFD5F1FADC60ED09F47B82B0BF88F14A
-:10F0A00037AB63E7E755D4517F12EB943BD475BC83
-:10F0B000E7FFC9FA45F4EB2FEEFE670D7F8B7589EC
-:10F0C00075D475498C1F35F3D4FAD1DAF8B9F083C9
-:10F0D0002F55CEA564FD6BE55C5696A0EF7F4CCE18
-:10F0E000F5CA430C8AA578FF0979888F3D6DE91030
-:10F0F0009A6C9518BD4ED2597D2CCFA9637510DA44
-:10F10000FCAF6712E63545DCD7F4BC2EBC3A1FFBDA
-:10F11000635EB77E7F32D625D47A6AD16ED7E63B5E
-:10F120001793DD9300055F9023B88FED1FAD2FA8D7
-:10F13000CC8AD717E45F667DC175599791EF7CD56E
-:10F14000FA795A20814E2A8BA90350DC7F1DD96D94
-:10F150009CEE92781D8A4909117BC2FBFDBD776741
-:10F16000168B1FBECAEB9F1E4E4EC2F3175C06B62F
-:10F170006FC325B33AAD5CB7BF266B0CE81586C7E5
-:10F180009FBC701B81BAC79FE83BF03C8450BDD543
-:10F190000BFA50C4ADC4F8BFE2F1D44BE59FBBFEFF
-:10F1A000C9FCF36D722324BE77A9F9BA4D14060980
-:10F1B0007CA5E583FEDEEB4FAE6CC8F2AFCF42B963
-:10F1C000E51B81798F4B944749A5545E83BEDF636D
-:10F1D000F480FF61E2FB8BC87AB7CA7F9FFB700E99
-:10F1E000EAC34FCCCC1F11FBA0C4FA1FEF17DE7F80
-:10F1F0009FBDF817A7FF4958CFC90A1FEE7B78209B
-:10F2000099E995D853ACCE48BB1F48AB4FC47E1686
-:10F21000F1BD4E21CFFE45F2F4B57F923CA5FA1523
-:10F22000ED8D7EF3BABDDE0FE177CB2ABB7D3CDFEF
-:10F2300085FB39C4BC82DDAC3EEF6D8E3F71FF595A
-:10F24000AE7733B37DBF033C9C7DC764823C6A6963
-:10F2500029939F0D7E2BE6211A3A585D4EC34A82B0
-:10F260007103B1EF775646200A72EA8177AD787E56
-:10F270006C43E7F6D602AC5708A09D78EE1D76DF0A
-:10F280009C113809E307574655F98EB28B9FAFA9F9
-:10F290002EC5F9A2DFEF30AAF75319B2993F2FAE6E
-:10F2A000BA6CA1B7A99F43DF3B5BCBEACA830E9F31
-:10F2B000AD02EB14583C3DC9D38D71F0863DA824B6
-:10F2C0000816B9C2F37BB3916E1AF65494E0F90BA9
-:10F2D0001DE6123C47E83D2BFA6B67EFC90C433C37
-:10F2E0007BA93BF017986F7269F83AB057F3E8774B
-:10F2F000209E7E76F77525185FD4F09DE0B7F83E26
-:10F30000DA3B4CE166A9871F37EA997E147AED0C47
-:10F3100018C74ECC7BB03AC3AE6964BEB5A76D7555
-:10F32000A8EB2F77644E3C03703E93A5F03C39CB9D
-:10F33000CBE79BA8375BD09B0EF3795E7E1AAFA715
-:10F340002021534F1D45C1B7E7E5C5FC445BE4E50B
-:10F3500093BE62767381CD807491DCCAE406A17499
-:10F3600001F6FAF858F704D8BF36A83D321EE0354A
-:10F3700000C00F312E12FDE148C87FA429E321FF10
-:10F38000F1D88A51074C0E8847755F0DA8F1B4D9A2
-:10F390002AC1559D95E12F82FA4AA2341601FD57E4
-:10F3A000BEAD67758F6B9350DFB7E7D661DDE3B90C
-:10F3B000778DAA7D46BDE43459ED82B85341EB7F89
-:10F3C00062FE21798FD4673DEB427022C6B0FE10F9
-:10F3D000C74A6EED0E95435CE641899DC149672F92
-:10F3E000B9209EA0C86077CCED64FBDFE7B6D92BCF
-:10F3F0004D284F2596BF19EF4039A9ACBD5E067F59
-:10F400004F692278DEDDEC6C76DEEDE0769B0C78E1
-:10F410007FF96B5D9F79B91BB27BEAE8005CF5C6AA
-:10F42000D821281D10F944513F27FCABB87CE5E7F3
-:10F43000C20B7DA4B5637BD9AF5C1FC5ED780D1DF4
-:10F44000F7F79EA06F41CF2FEB09DA612F4B26DC37
-:10F45000C726E8BA45EC2BF89AC585F3787DCE89A6
-:10F46000757F19C1CE8114F99830ABABD247D76400
-:10F4700021BCA2D78460DD7BEC724331C6D31A7005
-:10F480009CB5ECDCBABCD681ABCB4BE16A230082E5
-:10F4900013FB96E4015F86281D0CEE830E8AB35998
-:10F4A0001D94B23609F1A66CC013BA89624F47BCED
-:10F4B000298F30FC1466333A17F96011F7CCCC0E63
-:10F4C000ACCC1E93B0FF6C8585ED3FE3FBA4935756
-:10F4D000BCBB0BF6753DC6E3CF075E1A86BF9F71B6
-:10F4E00061AD22411CEA82BD260FFCBD07385E9348
-:10F4F000956E62B326D2E701ACBF2DD8CFEA0815CE
-:10F500007E0E96B2D6B11DE039362D8075C657B73E
-:10F5100044F0A7275EB29DC43C1FB58B70DFF8E9AD
-:10F5200017246117A9F4A1F0D7B47ED88FB3FF7761
-:10F53000FDAB27E372FA32FD2BA2F633E3FD85DF44
-:10F54000A8F52334EFF767FF105F485567F302C74C
-:10F55000BBD0EF995C368AFA9BF8BE6F1236C3FEB9
-:10F560008CC9504BCBD68375489B248B17EC246DEC
-:10F57000FD51BC2E88340E6175298D23D9791E8DDD
-:10F5800057C255D42799A13E25B10E3699D5179962
-:10F59000A13E85DE6FEE779FB8A709BEDF7E9F4D47
-:10F5A000EC136771FB6AC2F3163B701F79EC966C23
-:10F5B000DCF733A19AC50353FD0619E8F2F9BFE958
-:10F5C0007C207763946FC1BE4A1DE47383BD65A63A
-:10F5D000CFA1EE25BE4FBC86F4B94F5CD447897CE1
-:10F5E00071E6908D12E89F78DD4AB067FF387CB7EE
-:10F5F0007DA907E3CDF13AAAEF125C67A590332607
-:10F6000035FE527CAC5FCA4C03DA19E972E029CCB2
-:10F610000B6EE936037FEECE2E40BC359787F11C8A
-:10F62000E4D4E2368CE786D37CE7B29D3DF423E652
-:10F630004736B1F59F87FD6752CF77CF2FFA732EEC
-:10F64000D853955D4646879A796C899F5343BF434B
-:10F65000AFBA1C867FAFC6BE15575D8EA4AAE31352
-:10F66000DFEF6F9D821EBFCD6ED7D257A892E3E722
-:10F670007D7398D53FA9E9EBC0AAEAD127A92C3917
-:10F68000B8CA8FD7F366A94307754AE6D86C90804D
-:10F690006FE6B4DD08E7999C4F8EE5C2F9276FE766
-:10F6A000DE7513B69DB1F7A17D2AE769D61E1C7BD6
-:10F6B0000CCE43F95BCE889BE0BC93F3F0AD4C429B
-:10F6C000B2B615DC142A867D26D135DDA09F4A35D9
-:10F6D000F52E9A731BA02E13CF99B0327C66F0BA28
-:10F6E0005852C5ED77C854D176B3BBC40BF50C5650
-:10F6F000E2D9D30DCFB38DEC7C07C2EAB09A07E70D
-:10F70000B3BA094EEF249BC7B3493404F4DB9C6FB2
-:10F71000C7F7E3F27A8F91E7B1D8F78F3EC7F6BD0E
-:10F72000897A5F426C3960F7583D44D516E79E10E0
-:10F73000C59603E71C348B78216FFFC112B83A27B6
-:10F7400041FF1E9D787731FE8ECBF3F70E82F54E8A
-:10F7500036A8CFC116D79772197D9CE7E7456EB3DF
-:10F760000426C138C792664F82237867A65518ECE5
-:10F7700068A73DA50379E4E474619FC1E667AFF231
-:10F780004BF0FB29E2BC466740C1780009B4EB406E
-:10F790007F3A4FFAB1AEB0CE14CB55287D194D81CA
-:10F7A000E9399057AC397E17E615338FBE0F7520B7
-:10F7B00047F56D1352405FE4F3F333A8E317A2ED6E
-:10F7C000435979E8F7C5CF771D2CA17C983A83ED92
-:10F7D000A79D423A148CBFD8D8FEAE49A5F9DE6683
-:10F7E000FABDA9BC8E64D2317F0AC40126DD16554C
-:10F7F00058FE26A624D66D882B71E93D897C709D24
-:10F8000027A14DE05C6875FB06AFBA7D53F9D7437D
-:10F8100012DB0388AF1EE0F8A214C5FDD6A1B1C467
-:10F82000C6D6C5EA139FE67EDB301731E541FDA45D
-:10F83000430A815F306C6F26E665F696136CA7EF7E
-:10F8400034ED3025AE7F83CCF2BE3C6E2E7EFF09B8
-:10F850009E815E7DFE9D748457BA5546790A117566
-:10F86000A0B7B22C9305E4BB8ECB79B13F7D628A01
-:10F8700009CFED6D5ECA7E37427B6E69B3DEF60A54
-:10F88000E0B1F96338928AFAD9C986889C02F8A255
-:10F89000BE8FA3471E0BFA81F1AE01BA1FC37E9F34
-:10F8A0008B52F9A0C473E39B9D6CAECDF7293CDF6E
-:10F8B000C77E27A428FEBB2194ED687FB02909F2FA
-:10F8C00009CBB7E5887512C507FDDD44B4D97EAF15
-:10F8D00074DE16E7A51252A1E0F94492E8D784ED50
-:10F8E00047793FA9EBF53F017D0C4AA1EBA1D7D7A2
-:10F8F000723C48DC3F958F6E423AB1063C4027DEB1
-:10F90000A4BEF71F75E4303B62624AB90BE2EBCD4F
-:10F910006EAF0BEC2A011F715F8C2B9E8BEF79D39E
-:10F92000FA1EF7352EAF3BF83E68EDF3977364F59A
-:10F9300077F5745CEB377CD7A9FE6EFCBD9CBEDF0F
-:10F9400013F7457FFC59AF32E03306B729BC6E96FA
-:10F9500014A9EB5D48B9D7C4E4BDBABE65B2B4D250
-:10F960000DFC799DA9BE2B4ADF7F9DD3C96439F078
-:10F9700047C837BC3EBBF020F06735FC30011DE7BF
-:10F980007A125903C472BE22F013FB409417C78049
-:10F990008F1A748121A9B4FD89BE6DD0D27CE4AFE9
-:10F9A0007772C6F49E9FA0C3F83C29FD01DE05FDD9
-:10F9B00069E72DE880DCD8810582DB4804AF2EC2E0
-:10F9C000EAB2A9FE62F5D79E9C9E7551E29C646ADC
-:10F9D0001C04FAFDF5A610CA9FC9F61F611DDAF9CD
-:10F9E000BCC03998D7CC919FE2F942C45583F61632
-:10F9F0009DEFF97FE57CA18208EE0B3B50D87BBDE3
-:10FA0000EA913F36A8EA91C5FCB47C2CE61124ECBF
-:10FA1000DCA8095DDBD1BE0BCEB07A61DF4810EA0D
-:10FA20006C4B319F8675CBFBB85F169258FD702FDB
-:10FA30007BB1FFBA65764E41BD8D9D1F24CEA1FAE4
-:10FA40005E81385F88CD9BCA2F7EBE10B6DB6B3CD3
-:10FA5000E8FFC5EDC6F9CC0EBDB6D0D202E735F64B
-:10FA60003E6788C5F7C85EA387DB89A8BFDB93D94B
-:10FA7000773E31B33AF904394EA4F49EF3CF36EA17
-:10FA8000993DE8CDCD677941D95B06F8D802792B4D
-:10FA90005DEF38E4C0F4C0E85CDA6F7EB12F177E0A
-:10FAA0009A65AE81C519295D6DED26506ED7F8387F
-:10FAB0009C0B7A1D697C4B1E88743516FACF1CF698
-:10FAC000293B2FB487AEC6E53A99DC0421F86D7C5A
-:10FAD0007A322D3001C669B777BCD7500A794B23EB
-:10FAE000C25FD4336AF937613E27F56C3E0E381F8A
-:10FAF00099CEE7FABEE67329F49D48471984D1717F
-:10FB00007F740EFB069247F5D0F90012B81DBE1B9C
-:10FB1000A7F735DE56DDC03EE6ADB322DE6F9DC5EC
-:10FB2000F231C12466A7425EC69D0EF127F6FD5B49
-:10FB3000D732FAB8D56C447A99D6558FF91752C591
-:10FB4000F2295EFA1FCC6726F14D849F58B9D93649
-:10FB50000DF781CE98AACEB7CC344DC6FCCE2D84FD
-:10FB6000C5D36E9DA157FD7EA480C34CB2FE53A8A1
-:10FB70000F99A9F9DD482D5CB4F91A018FE6F26FEF
-:10FB8000E6FBFB72E3799D219799D769C945F97422
-:10FB900069799D83FA189E23F09A73E1D6A5942F74
-:10FBA00086FCB818CF5B9F98BEE8F10DB4FDB32D6D
-:10FBB0005760FBB5F43B961F85E78F1562BB4AFE85
-:10FBC0007436F04151D9AC29704EFD41331BC765E5
-:10FBD00009B4C3EF8EB846148C0297ACCA10C37E2A
-:10FBE000D78FAC1F0D75355516D63E52F25FA3B0B8
-:10FBF0005DC0DBA35EBC02DA07A54F67F795171A55
-:10FC0000562445E0F7C5AA5259FFA9A39ECA8438D5
-:10FC10004155256B0FF356AC1D08CFE5CF66F7A510
-:10FC20008F7FC9ED63616FF939BFEFF51D6F81FDFE
-:10FC3000667EABE4857D06FEF2E3EC5C3113AB4BF4
-:10FC4000F0FB4A143877B2D2C7E27B13AC4D6E900A
-:10FC50007F37060CA510C7B559F35BE07CE701E5DB
-:10FC6000156300DF13A81906FA8FF2D5F3C0CF335E
-:10FC7000AFFC343705ED10355F09BA9D26F8A94A67
-:10FC8000CD37541E74313CAAF9818EFB0A8E7B95C8
-:10FC90005A2FC5E5BB866FB5F4D8AFDE276A391891
-:10FCA000D74F6B3A902EB309DB4FB40DE894F1EFC8
-:10FCB0006F617E06B9DB03F7F324EF1558A8D18FE7
-:10FCC000FD20E607660F19D57B5EF04711F6229BF3
-:10FCD00081CD960EDF65CFE97B3EF83138312FFAC2
-:10FCE000FD13089F356C3EDBA446FEFB22CC2E178D
-:10FCF0007E6F83586FA77ABD6516B62FDE45A8DCE8
-:10FD0000C1D87DC915DF34EF20D7B3334CFE078D42
-:10FD100032FC4EE15CC4F36D24F41CD837EF58027A
-:10FD20007F84F9E8E4D0FEA804BF0FE2C37C32C5AB
-:10FD3000E3174CAE33BC887969E1D1D08F5CD5CE66
-:10FD40005B0B871EFC74A37DE6E6BF23185F9766F6
-:10FD50003DCDFC770462254655DDE9911A56572BB7
-:10FD6000E675442245A827250BE651E37127AD7CB3
-:10FD7000EB677F9CD0CF629E77F3FD595FCA4CEE54
-:10FD8000DDAD8BE03CF3AABBCD00C7F2BC02763EF2
-:10FD9000109F7F737908FB1964A9CF3C71799E2C61
-:10FDA000F260A4CF73DC3CF956E08B3B4DFCDC3AAF
-:10FDB0000D5D104DFEAC3F3A11F1BB4AEEB7C4F3F6
-:10FDC000A99A73E2E698FACE9B4914BE59A9BDF1EF
-:10FDD00020F2693768E374D7B1F8D50D3C4E37A1EE
-:10FDE0009AE127754532FA75A9A5471532BCE73C5B
-:10FDF0006B81AF0B8E40551EE635A263208EF0E678
-:10FE0000989F611E499C1BA9859F3F4F16F1C64BC9
-:10FE1000E297FEE6FF078B7F3A7CF713A91BCF839F
-:10FE20001BEDE6E79192403EF093DD965F01F1070E
-:10FE30002A772F5E0467141E51FCEE74066E87F756
-:10FE40006E23FE8950EB9D5A1DD0B3F83DC1F8F1E9
-:10FE500032EE474EE4FAFFB367D87EFD2ADFD04783
-:10FE6000C7837D7A584FC21EA81B67F0F96CAB0E92
-:10FE7000F5FEC23746BBC07EFF80D3E3904DB2EAA9
-:10FE8000770887862DAA733D86ED4C55B587776434
-:10FE9000AAFA8FEC2C503D2F895CA17A3EFAF0280B
-:10FEA000557B4CF73855FF2B8F55AADA63A3535473
-:10FEB000FDAF3A355DD5BE3A76BBFA5C9290AFBBEA
-:10FEC000281D7E3F81C1E3DAAFE6A8FA9F49997405
-:10FED00018F872DE7A56275E4196A8DE5FA2ABC3A1
-:10FEE000FA6BD2C6EC9C46FA1FDF17AF607D1AB5DD
-:10FEF000EFE1A701166E52DB41B55D1BD6802CEEFB
-:10FF0000751E86C6DED1DA37431C35706C3679240F
-:10FF10008FFFAEF895E44AFEBB345ABCE2F9029F6B
-:10FF2000BDA5433F63D91BCCFE5FB68BD5DF1592D1
-:10FF3000C10370DFD9611D094B70CE42E3C6F15297
-:10FF40008F9DA3858BD1A5C6B3D9A3C67352911A31
-:10FF5000CFC95E359E0794ABF16CF7A9F19C56AD05
-:10FF6000C6B3D3AFC673C64C359EDD01359EB36AAA
-:10FF7000D578CE6954E3396F851AAFF9A1C5AAE7E0
-:10FF800042AE0E6C5DA6BADF2C759451494AE6F973
-:10FF90006BF17C89C16DDFEF933E04FE43F43FC6F5
-:10FFA000CF8D58CFBF80E21FEAF9BF20EB0F414A47
-:10FFB000564B070D9D1B30EF76B974F0761EB75F78
-:10FFC00005FE2FD17EA5FAF2BDBC3168E7BC0FF269
-:10FFD00061E610EE97F8FBB67384DC4AB42B12FD91
-:10FFE000EEFEE4592F3DCAFDF07EF5A8C60F7F074F
-:10FFF000AA9FD05E5F8F71AF599CAE3F875B632134
-:020000022000DC
-:10000000EEFA2CDA07EFD08994D379BD03F31E0101
-:1000100076C2308C93DC41227A3C3F1C2A4675A87C
-:10002000BFB04EB386DAED709DCBED87F93C8E62A2
-:10003000340588C789F193BC74F86E7637EE33FBCC
-:10004000BF17F44F2B008000000000001F8B08003A
-:1000500000000000000BE57D097C94D5B5F8FDE6B5
-:100060009B2DC92499241012026126210B908449EA
-:100070005804451C9660D4806193C58833498090AC
-:100080008504D0D7B4A5CD40C2A28536B4A8A8A80F
-:100090000302050B345804D4688745A44F5B636B97
-:1000A000AD4BCB4B0045F618B4D23EDFF37FCEB953
-:1000B000F766E6FB480AF6BDF7FBF5F7FBE3EBBB9B
-:1000C000B9DFDDCF76CF3DE7DC3BECED38C612196A
-:1000D000FB06FFDD717DCA988FB1DE8CFD01FF84C8
-:1000E0007A231C455607E4275A1D0F3D069F8E189C
-:1000F0005879B30DFE28847E46436A2CCA9E96DD4D
-:100100005D3F2BA13163AF2A1E0F1B0EBD265A5D2A
-:10011000DB15C68624316B622C1427F853A64532B2
-:10012000D6C761A07AF04F61F18C0DB6D2DF6C4F6B
-:10013000DFE6A531A9F8973FB628FBDB8F9BEA7075
-:10014000273B4604EBDF68BD6673F3129C6747B537
-:10015000CDB5D5C9D87B5804ED9EBFCF1250A3189A
-:10016000BB62B2AD55A219FB2062DEF1DE0EC69E67
-:1001700009F764215C66CFBA6B35E69523718EA5CD
-:1001800030BF2BDEB6910CE66DB17A5C585E65F53A
-:100190000C8887255EEAEFC98856A1CF220E7FF82A
-:1001A00023BBA8DBF9F3F94C50F8F89F847B46E3B6
-:1001B0003A8E185A935D080F63EB486CC76CBDA963
-:1001C0009F4B660E979EE0303EA27F31AEABCC6275
-:1001D00071A9D0E77885E3F54CDC83F36AE0CFF9C9
-:1001E00086A2F880AA99F79D346FBB7740620AF423
-:1001F0006F12F3B6F6167077641545F63CEF06EC11
-:10020000BF17E47EA0F8B73B392E317FD017E37FCC
-:1002100014F216C3D5F7A643BE23DBE0DA0A459BEA
-:10022000C3A1EB3CC6DE11F07EC604F958FABE1637
-:10023000BF2784F3F6098F1BFC0DD0BE68FCCB846E
-:10024000A7E717DB683D5EE63033985F29739B7143
-:10025000FE9F8CFBCFD7DA001FF31D1E0FC2EDC12E
-:100260003843F27B340FCF90A9306F36E6E6E89F33
-:10027000B175063692B16976BE84F9026ED399DB08
-:1002800084E3CC641E138EFBFBCB663703FAF83D88
-:10029000E098C17C67311F7D9FC3FC94DECF025480
-:1002A000FF01D646F9772372FAD7C1FCA63E919199
-:1002B000C60C1AB8FF1BCE17E8E5C15E9C5ECEF6F1
-:1002C00041B86FEC7D53F43B55D00BF0EB0FB11FF1
-:1002D000E0D7E1B929217C3391D30B33DAD3FE1176
-:1002E000DFB47646E5B0A19877DB1261FD770A149A
-:1002F000DEE9AE2CC475E6AB36D60BE0DFEA50FD86
-:100300001618B3609CB72FAE0BFE45FA004F53DCB6
-:100310002A433CBFB902BE40BD3773553FD2C49497
-:100320004D93CE61FBC271D31BA361FD93BE6E1BC7
-:100330001E80B4A09FE9545B261FE31BF8DF976C77
-:10034000F3C41848EF4ED8676430FFBB076ACB0B85
-:10035000B3206F0DE6A73063B01CC63D8C7000FA69
-:10036000A9FB73EED86321ED186B52916FB63A2258
-:100370007B7D3A04B283D9E06F70DE6A71B4A71B4B
-:10038000FE91E957F5AEB1C78026EF51DCBB1C44A6
-:10039000170E33D27F8991B9BBE3BB8B698AA01F4B
-:1003A000C02EC8B37BC55C3B0BAF9AAFC07ADB1CD9
-:1003B0009EFDD8CFD2C99FCCC3F53123FBED308051
-:1003C000DBE2DF01DCA0FC543D403E03F8B3DECAB3
-:1003D000DC16C63EADB753FEB3FA044ACFD73B286E
-:1003E000BD589F49E597EB5D9467CEA2D7B0DF92E9
-:1003F000B59F1B3D598CAD099378E4F35826E878F6
-:100400004DFF917F72C1786BDE3651BEBCB9695227
-:1004100004A4CBFA9F5A1901DF97ED525CF8BDB2E4
-:10042000C56DB6211F1DF3AC46F259F876DB1414E6
-:100430003BD5D714E601169A3DB0E82D1C6FC41FBA
-:10044000CFC423FCCED68FA2F99CAB77D37CDC2D16
-:10045000EDC7E3A0FD85FA02CA273A8BDE45BA74E0
-:10046000B3CFCD587FF2EE76631294E7BB1537F227
-:10047000F75837F3FB017F9B4C7CBFD804FB05F298
-:10048000FBB8EC69CF3CC4509E7B3EC6F166C69675
-:10049000E6C7C1F729A3BC46AC37EB6BC6302FE9E2
-:1004A000FBC67CCDE1512DF072E97585E074E9C0A1
-:1004B000907B6F83FE5E3FA13215E6D579CD40F388
-:1004C000EAFC20DC0F3B5357BDA52FA5F661364C47
-:1004D00087F46159B83EE804D69DA9180D75C0FF90
-:1004E00017F67C2701E12FC7BD10DBFCD78F50DE4C
-:1004F000FD85CB3BC69A3F7D0AE561BF04D7A3903B
-:10050000BB6C62B3893F596D04EE878BCDCCC3F3CE
-:100510009E2198BF10CE1E2C82FCC8BD49E3917F5E
-:10052000703C4746509EA5EF7D22E5FB8EE0783B70
-:10053000F63CD9F98A03CBFDC4CFBBF63ED3F769AD
-:10054000C855ED5B158EF37A15D6320AF8E3D50D52
-:100550001124B75E35B94ED6A1BC7EC6E6DA0EF5DB
-:100560007EFEE3EF9E3A84E9FAEABCEF421AE38C9E
-:10057000A57ECA7EBA6830B687FD9B25C23A7F71D8
-:10058000500984E53096BDF1F0CA44186FE8E6766C
-:10059000435F4873B7290D980EE95F7002F7CD3EAF
-:1005A0004E07C17DD86EA79A846CD7D7FFD11DB4F2
-:1005B000AF6BF7FBAC8D9F8FEFCB82FBFE60A5F995
-:1005C000FC0A27D2EBFB791E824713CDE3A596E9FF
-:1005D0007FB89FE13A40A3C0797BCD2EDA6760B93E
-:1005E00026C85FDA9FBAE55158E301836F0BED43EC
-:1005F000255CEFB854E47B12E9A51AEAFB205F9D65
-:10060000EB8BBA15CAABFF32D00594C1FA3F7B67BA
-:1006100001C263F1FEC726F5857A97C6309702536B
-:100620002F7FE9EA246CC7FA3386AC7D697F43FCEF
-:100630005C68F7A3ACF123904E8AD4661A87D5F094
-:10064000719E10FB176B03E0C40B92837A3F82CF3D
-:10065000F83DB625E670120BE2A7A66585D308ED36
-:10066000877BAC2E15E9DFE94BACB505F743D8C75E
-:10067000463B91B4CDA25FFBF4E4A26FB18F99C564
-:10068000BE24FB7BC2CC7C61D04F7FF8AEE03E6BDA
-:10069000E6FBEF76900F48BF72FF8571EF728EA078
-:1006A000F66E94A749B0D9E6C23C939EB0903CBF89
-:1006B000D9F1A5DE5413CEE591D43F66C735BCD63B
-:1006C00006EB3D1EEE9989E3CC17FB3733BA1C28A5
-:1006D000A7F784BBEF73D27ED8918C6B80FD712E0F
-:1006E000E617ABA04FA586E853D69BDB1F3F0C77E0
-:1006F0007BB0FDCDD6D7CBCD655F1A582ED0C1B219
-:10070000C72C7E06F36E40F90AEB6A881C694539EE
-:10071000C08E19AA8EC37E793B6FD9D5DFB2C83C93
-:1007200092130D8C750BAFD7819F3D203F0220EFB8
-:100730003DC0D763AF75A89CDE5B8F460F4779C974
-:10074000DC91403F775C33304FC87EA6EF07F05511
-:100750008FEB1BC7229827647F74B31833F22DB335
-:10076000C5FE73EB16F31F23F037A6F38308947FBF
-:10077000CBBECC2339D8D3BA5E13EBFA35AE0BD24D
-:100780004FD28A36201DDFFE85DD88EBBBDD383594
-:1007900019F51398F71338EFB15F18B4F3FE3A5C0C
-:1007A00093BFD9F93FAC309F01F9F173B31FF9B191
-:1007B00005B7398063CBA22C3FF2FD0133CFFBA2FA
-:1007C000CCA49FB644321FCA9196A9F17E9F13E52F
-:1007D00021E3FA6B6FC6CBC344FB39F1D4BEAF053E
-:1007E000408AF2E0FE70D17FED5BD958BE2289E4E9
-:1007F0004883C9BF3605FBFF81EADA0E78FBC06F7C
-:10080000F099804E36C604EE57A1DF8D9FC7331C8A
-:10081000E7031648AAC171CAC349EEDE66303C3808
-:10082000D586F5DC89B100EF03FFAD92DCDF980BD4
-:10083000791BC9EDD9CDF07DE354776238F63335B5
-:10084000DE40F351592D7D77F2761F9978BDB902BC
-:100850005F1F0AFC005F13DF7BA64418916E4F3ABE
-:100860004BDE7512BEDD890ACCF7A9B234867273ED
-:100870006EC55D4EA297A627487ECD163890FD61C5
-:1008800003EB48D47FF9BF39F3B787213E679687DA
-:10089000B5C30EC93E285F19E980F6333D6AC00230
-:1008A000F294CDC87777E9672938AE9BC6AD6E1E46
-:1008B000947A26849E4B2C2027A0FF43619E0F88AC
-:1008C0004F0FE552F921504EBE017E3A5596B617AC
-:1008D000F98A95C9F35FA014F1F07A8795F4CD9E5B
-:1008E000E8A101E13F54D029E26539C73BE85D94B6
-:1008F0006F983D98CE25CF9938DDF8F685115E0BBF
-:10090000A65909CF9DB3C3B758A0FC4121B71A66B9
-:1009100087BB15A8D7F092C56F70D27987EAF95EC8
-:100920008BA47EABCC3C5FF5621AD1D301B37FD7E9
-:100930000E2C7F3D8CE8A12A8A8F5BF54A92A03766
-:10094000B773158EFB9A85E8A02ADC114DE5FF1ED2
-:10095000477432D9EAF91BC20BE8AE16F5822A7346
-:10096000203D06E07B52D0D5496883F8F3D546D2C6
-:10097000BC89E521EF69E8BF15F1E931F372F63D75
-:1009800095CA4FDAF9F827D7F1F18B7F52F9360380
-:10099000BC9D2C9A94381FE671B23682F4BF3FD7C3
-:1009A000A90173149E5F3A1E4F877A97979F1EB9CD
-:1009B00009E6DFB6F2E364A48FE295D585D8AEB838
-:1009C00062F914DC377BE2CBE22A60FE103E4E492E
-:1009D00071C7A4C07AC6A6787A615A93D5B600F5D5
-:1009E000E0CBE6D667F11C9114E7E983DFAFBC7C6E
-:1009F0007607D78F3BD2713F586CE4F421F7D51AB4
-:100A0000417FC7533CFD53709F080FCCC3FD232289
-:100A1000AB95CBBBE53727E7CFB76C3FA0C0389588
-:100A2000E12D8B2955FD39D8CF052510A5A412FC41
-:100A30003CC84F17ED812884BBC7C0F5B3CA9DDA07
-:100A400075E13F23CCAB12FF807695CDAA3B0C71AC
-:100A5000CDFC669C7F253307EB3B8378827E084F75
-:100A6000CCF6E779DF07F857EC1A9487E780CA9845
-:100A7000433FBE8DEA413BC927EAF579B99EEBE7D2
-:100A8000C3D77751D0FF4549FFB3CDF25C4EE35F4A
-:100A90007EB90F8D7F61AA3F1DE17F5911F576590F
-:100AA000783DA00623CEF3979C9E1E37F90CE17487
-:100AB000BE6744CF9571CD23112E520EC11C7C060A
-:100AC000A87F616F12D597728B153186ED2AF726B4
-:100AD0006EE5FA993897E244A17EC52F78FF9847D2
-:100AE0003E3CFF4292188FEBC77AFCE9D75B9C62D1
-:100AF000A0F53E2EE577A4E47357C254807FC62646
-:100B0000B3A6FEE548F3836EE877905FFB5DF65F82
-:100B10009EA2907E364087B7BE6AC7610BF2D3F3C0
-:100B20008CF8553FAF9A147EFE7BE1852E3CA91CC4
-:100B30006FA0064AFA70703DDC8470FEB00B1F0F88
-:100B400025815CAD4418A404E17320D79384F2FF9F
-:100B500032E6715F88817C16EA411CDE322FE1ACFF
-:100B6000A7B3951F2E486A83F64F09F80042FB2071
-:100B70003D76E92F26385F64E1B9B27CD899343CE0
-:100B80006FD60E82ADA06B3D0B36E55A919F166E67
-:100B9000CEB59684E0A161E7B0130E80F3C59D4603
-:100BA000178AE506A3FFC7A84F37EC549B7D8CCA74
-:100BB000AD08DF8BB623BFC37A0B36C7E4A1BE2CCA
-:100BC000DB2FDCF4F0A0B210B80FD9A9C54376B37F
-:100BD000363FF49036BF0D6543EF6FDF2E37A0CD63
-:100BE0000F3BA1CDB30EC016E041B5723C1D1CE514
-:100BF0003AE1003C0DF0AB2EFC34C0366DFA64D403
-:100C00002F36ABAE34281FB0BCE89E6CC87FB679D7
-:100C1000BE0BD15CAEFA167F1F7058FEF1A413B85C
-:100C20001F5E60CDEF4F063C2C68D960363A70DD10
-:100C30005ABA3D6010F4FA02B7972DF26BCBAFE7CA
-:100C4000EB15D25E9A194A4F7ABCC3B8F7B9614224
-:100C50005575CB869D812DB3BC10081D6036BA79C1
-:100C60008319F5B61B8FE3E3F462733B101EDE516C
-:100C7000BCECD6BA09ECF430F863DDBB9370DEDE71
-:100C80001F29A437787F95710CF781F67D73EEA646
-:100C9000F4BE025ABFB4CB2D6C51029190B78F7243
-:100CA0001C6A8376F3FD8A0BE75DD26809CA33F8C4
-:100CB0005FD93ADD3C368694C3FC171E3AFC3705F3
-:100CC000FA2FDFAC6DB708E42CCAAF8A6DDF58424B
-:100CD000BFCB73E3AD2D5B545CF77C397FDF588667
-:100CE000EBBA955765BD847E730633B06FD4F62E8C
-:100CF0003A8BFBCAAD1B793B10975E5C6FB5CDECB0
-:100D0000C0F5565B592002E67122D2ECB6C3F7ABB0
-:100D10009B22C91EB6C002FA641EA52C2C0FDBB99B
-:100D2000A2B1DDA7EF70BB58751CC777F5730A9D9C
-:100D3000A3AAD18889F9E7797E110BD03A904EDCCD
-:100D4000A1EBF36BF3AC899FBFAA8C81C3088F0A18
-:100D5000D6C6CF4F8047B7841FC0AB0AD6F9412C07
-:100D6000EA5BBAF6CCE5C1716B6C5C7FAA39F48D95
-:100D700025B45C9E03E53955DA699F4B2F0AC7718C
-:100D80005629EE27AD30CF5542BFF66D0823FA9DA8
-:100D9000BB85EF37A0C7A6235C366E4874A19E3191
-:100DA00017F4F230E49B45E1540FF45DB2AF748068
-:100DB0005E8DF6F68D31CD01DC37363EE6243D1AE8
-:100DC000F45F824BC7FA30FF5605F560AEC76CDCA6
-:100DD00090417AF8AB729F5ACFF5AE6EF4622A67F3
-:100DE0007DB81EFF112E25440F4E8DF7A4A586ACAD
-:100DF000AB6CA53B11F79DB2696603DA9D58F9CD3E
-:100E0000F90DB60B3DB203D68FEB38A3141D378412
-:100E1000E8A32353F93E3272BC7B87A847FE853294
-:100E2000C3D447EFC0F11E373870BC2E78BBDDE964
-:100E3000388F331BC2F290CE468EE7F69F93B95C93
-:100E4000BE470C676E3FA477887EEF483568D28432
-:100E500070A03FE8E74C3EB73B470E2F227B1BECD0
-:100E6000D524E7F5EBB847F453662EFAF7DBBB99C8
-:100E70008F840F9BC8F585334B94AD7C5E805FC833
-:100E80008FFC6918D9E9CE88FD47C219E86604D9F4
-:100E9000DB85BCDA20E8658389D3816F113F3F058C
-:100EA000E985113D6C14E7ACB902BF6C3DD76B818D
-:100EB0005E389CD7270A7A61ECEF480FF90EAE67CF
-:100EC000DFE47909F05E9ADAFBFA7393C43733FAF8
-:100ED00047FC23FF46F5C13D077CB07F56FCF2B1CD
-:100EE0002806F5CE199BE25DD0BE6AFBAA2837A47E
-:100EF0009F197D517618FF9C5F2DF077036FBF809F
-:100F000037DAD715903F8BF14F07EA3B3F9A82EBD8
-:100F1000FBEB76931D4542CD4E0B9D9F16EF5F4434
-:100F20007A36E4DB797ECDE72AE60F69EDE0153FFE
-:100F30007F2CDE41F0F6251912300D243148176F51
-:100F400033B902685F7E4F75C130A03777ACC6F900
-:100F5000E9DBE33CAE01BE6B9A55AF39FAFAF21AFF
-:100F6000215F6AF6FFE873B4EBD5E8ECEEE5C2FF6B
-:100F7000A0B7BB37A546F6FA140DCCB7B05B500F3F
-:100F800002B8B802C8B7309F3422136EB76DD8F5D7
-:100F9000444E3BEA0BDBDE8A52B2827677E997E871
-:100FA0006C2E7D0EED9A3DF1E36561870DE28BCBF2
-:100FB0002DC7210565001CD0795A650A44DD06F06D
-:100FC000A8DA62223953B5E7F91D4F219D7D68A14A
-:100FD000FDBC72CF1BEFDF8AFAEE3E53AF42BE0C70
-:100FE0009B121FC4538D83DBC9245E2A7EF586D9EC
-:100FF00091CDBF2F8F0DE2A772DF6133CBBE1E8E66
-:10100000139A0F9BDB6CDDE0A9B97D12D989767D3F
-:1010100065463E38F7BAC2FA38AF6F5FBEE58D2835
-:10102000D4C7104EB82F497C75E14F571FFA9FF275
-:10103000CA70AA67C773454FF85B827B07D17724D4
-:101040008B81F1CB3FB2F80B11AF7B9745E13ACEE4
-:101050001A6B399D3FB32A1EF5BA72932FDE4E29C3
-:10106000FF5EFEECC3447F0B95DA787B16D177A246
-:101070008174065F22AE6FFEE699B4BE05CC43F4E0
-:1010800057FE8C5AE487F44B232BD8D70D9FF41DC1
-:10109000C8F9E4EC56402AACEF2CDA6D506EFC5ED9
-:1010A00015E7DC25B47F3F2CD6CAD852CA7F29F475
-:1010B000B64BA95D7E656BE879B166DB9A56C4CF05
-:1010C000F9FEEE3E384F80834FC04BF906FA55DFEC
-:1010D000CDEFC3F1C31CC691A21DECA313F03BD608
-:1010E0006F35B9D1EE1DD24E9CE7F8F80F89F1614A
-:1010F000DEE1785E3D1BCFF576FDFA0A062AD2DEE8
-:10110000D6CA42E9AB27BEDFF608D1D517EF71B9D1
-:10111000B2D83FB580CA5B4D813E58EE3F3C43217B
-:10112000B9606181EEF87A9B49F0B5B61CE6695466
-:1011300042E1FB3AD7431780DE1508E1E320DD9852
-:1011400083DF69DD3F15EB6823BF98F4A72D14F208
-:1011500040BF6EBD7CE83550F8E3847C90EDD9E665
-:10116000EEFD3941B9E0A371AB603F413DA3EA43D5
-:101170000BED1B557B4C45089F0BBB8FBE3F17CF1C
-:10118000A1CD928FB5F256CFC7E52F8EE8968F2F5F
-:10119000ACCBED9E8FE17BB77CBC4E21F9F63F9541
-:1011A000B7B0D391DDA0277E5DD883BC1D3B502B0B
-:1011B0006FBF6459D1B761A1DD3B80F0A383AB84DD
-:1011C000A75E7EBE9FEA20F8EAE527C3D0881038E4
-:1011D0004AF849FA64CC43E374D1B1A45349C75DDA
-:1011E00074AA5FAF168EFA72C34046F3297AD9C447
-:1011F000ED672D0AE9DBD0EE78D270E253376D7FD0
-:10120000ACE97852AFD0BC5F976FD6D577EBF2459B
-:10121000BAFA1E5DBE5653BFEAD051333F1F0434A5
-:10122000F52C75F7D039E37A3DC2CFFD3EFB3F3751
-:10123000FB902EFA7598512E9A56325F24EABBAF76
-:10124000A9A4EF5E717444A15EB22A8CEB6D57ECD9
-:10125000221FC3F31DBDCDAB512ECAEF1D61DC4E65
-:1012600072A5A8232A26E49CDEDEA246A13DB6CDC7
-:10127000CF0ABA8F136920B8B6B19ECAB9FE96AF2D
-:10128000DA92EBD01EDAA4BA804C58D98A5951149C
-:10129000BFD0927AEF6CF83EFF372A85015C09E7F0
-:1012A0007605E6731B317EA094A3907DC67C8F8F5C
-:1012B000817595B6F03882B2755AFC2EB0CD880E85
-:1012C0003850EE68FDFD0BF15C978AE73DEDF70ABB
-:1012D000B68EE8AD42C7171E61A7D5F3C516C9176C
-:1012E000B92C57D863C8CFB154C8EB7C35EBDED9E5
-:1012F00000FF2B275466817C678BCA56E37A772BD5
-:10130000E4EF418700F2DB62E04B9C8F84CF45E441
-:101310009B8C9EF5928B2FFD65E4F7914E0E7C9C85
-:10132000837ED88B073E4C7F15F307FF94FC31BBBF
-:10133000BEFE84D7FF360FE5F095D72D0CE9FBCA2A
-:10134000EB6F26A35DF0CA2B163A2F5F5969E1F6C1
-:10135000E6D723FDE88FBCD29FEBB90DAF7D95D3C7
-:1013600046FB6E23E1EBED8166AE37B5FCE749B491
-:101370005777B6C0AA509F783D82F8A7E69530F21D
-:101380006B5F79EDAB91A1F10FFFD3F548FFF595B8
-:101390004836FB45A45BA1D7D7BC3AFA79F4E756A7
-:1013A000EF3F6C2E85F209BFFEAF1C949F575EE4A1
-:1013B0007AD26553DBB3686BFCD3C0393F3525A2C5
-:1013C0007D0E3AEB0BDC96F6E434E493EBE1C2E1FC
-:1013D0007005E080EB02B894A3DCEF091E97FF656F
-:1013E000E1F1F93C2ECF6E61E8FF0DC245E17E844C
-:1013F0009648BF55A1F5F3EFAF7F9583F2E646EB34
-:10140000B5A59989AFFF7F59EFE0B47F55FC727A9B
-:101410007F71A083C7F5E9E8FE7ABA3EF86F94DFE2
-:101420001BE9A2F9DE24BFDFFD2FBBFEFF1B7C976B
-:10143000FFCBAEF746F8FE8DC077A41DFD8A575E40
-:10144000FBAF64F62DD6BDE65F96AFFFF1BAA5BE41
-:101450003E5E759DC885FA6FB1E6F75C4ED23EBA26
-:10146000D53BF6A7493B093F1F4D607C9F9E60AD71
-:10147000247D7342BFF5A41737B03CF243F8FAA9B4
-:10148000E48FA1E00B80C39B09B97EF2271903FD0D
-:1014900096417E7C5235C55BE9CF8D13C22717A0DC
-:1014A0003E7A7405CC0BFA391A69B0A3AF78623F63
-:1014B0003560C9A1B41DD3E3C9F79C40BD65A24DF9
-:1014C0007B7EBA47771EBACBA12D2F602FF642FF45
-:1014D00059419689F9613E93B07EC8B9F1A7697602
-:1014E00082CB5DACA9D16EFBF6703A23E0743D1C53
-:1014F000FE31DCAE839338271B457D3DDC8CB6473F
-:101500005BB19D91C1B997AF97CECBF2DC7B2378CD
-:1015100032719E368AA1257C8DFDB89F34A45F82EE
-:101520008B84FBB785B7C4931EEE12BE126E7A3C55
-:101530001C446354EF20FCFB19738DC877B70B3D37
-:101540007EA23186E7FBB5AA45C48F7E82FB842F3D
-:101550005C46D44FC6D96228EE9239FAC7E07916B4
-:1015600055CC6F92182B1915335281F5261999CF46
-:1015700002E74DF4A1911DF511A37FA513C7E1F674
-:10158000DAFE466E9706EEF685E7517DB719F2DE74
-:101590009F2D646EA8EF4D622E85D767D1B1148E52
-:1015A000C6548CCB8214DB79A379BFDE3ECCBF92CC
-:1015B000E393F082C726B45F40BF6E432C6F1F9544
-:1015C00047ED7D06DEDE6D8474402AB7AF77ACB29E
-:1015D000D0F9C3BBA67F3ACA8FC2F15ABB71713A28
-:1015E000B7ABC8F4CD74CEEFAAC195807A7149E348
-:1015F000203A0FA9E145D52FA1BD7F6F04D1A37774
-:10160000F5039347E0FCF6C6B9707AE7A7EC1BC96F
-:10161000EBCF79F88FF0DDB3338CBE5F48F7F44938
-:10162000877ECF2B8E792FC187929947CD09308441
-:10163000A779EA25B4FF4DF1EDFB1DFA19A7CC50AF
-:10164000A9FE14C6E32B596304F9A327FB3E3726F2
-:10165000407F93E1B081E5ED61F6E425307FAFB0E6
-:10166000F7A6A673BB8B1ACE3C2FDA705EFDD35360
-:10167000E0FB64D67D3CAF57D61FAF6C46FFD080F1
-:1016800009DC1E2FEB633FD8EFC274EE5FCD117003
-:101690009179802BD52F5B6B694FC573CF5A53203F
-:1016A00003D26732C7E7A54379610A9BB409E1FE1B
-:1016B0005D956DA5F97678C9CE1D99E9403C788095
-:1016C000A429BEB0C9E940BB57FBB8E600FA07DA67
-:1016D0009F74BA1A1C84658AC791E7ACF671818140
-:1016E0006897EFC8E57E8693F6B6483C1F96DAAC5D
-:1016F000149F23E37AE6DB399F0F68685B7F0B9EBC
-:101700003B1F535D5B213FFF31EE77F9C466F52B3C
-:10171000785EDBC8F994ADD3C6F130BB8BEC3DA548
-:101720004DE3CC78BE2CB3B9CDB8CE8A0C4F11AEF8
-:101730008B7D0DF01B89719C8C98C1DBE4A538135F
-:10174000350AF80EF9C4E888C273AF3E0EA846C445
-:10175000FDC8FCA130CF1CECAF24DAB117E9E55489
-:101760005D2AD93D3709BA2BC43846F44F18DB122D
-:10177000713EE1F81DE05F186B4FB7113D87318472
-:1017800043BBC99E8EF4DDBE2ACC807EB6C2959C3A
-:10179000AE81CFAC4668FF889185A3DF2043B42F8C
-:1017A0005E612CDA02F97E56668C8C45BACA25BA7F
-:1017B0006ECBF4E4207D7EF603360AE9A174DD06E3
-:1017C000F2AF48BA60C6D6897130CE67DB9D792802
-:1017D00037251DB5658EAF4D0FA587190AD101A418
-:1017E0008753891EA63D8CFD168E0F0C5C9A85E7EB
-:1017F000D12AE6C6FD3D81B9504FE8641DE47FEC77
-:10180000B4991D68E792F244CA0DC0ABDB1A1FA45D
-:10181000831DB0DF1B4D8CEDACB752FA42BD9D1954
-:1018200041C6EDAE4FA0FCDE7A07A5CDF599F4FDDB
-:10183000C57A17E5F7D78FA2FC817A37E50FD51760
-:1018400050FA4A7D117D977209E0427248CA152903
-:101850008F4A6DE676F4474AB9A4A79B7900DEB1BA
-:1018600079D49EE49E9477B80E435E501E49FCA640
-:101870002845BE0427CAB1B63988FF7CF5E29E83AD
-:10188000782E2FB7B9E89CCEB8DCEB047A45B824A3
-:101890009BD921B4BB362C71B7AF7106E17F7FB9FC
-:1018A000C28C2174F5406D183386EC1B0FD6C568C9
-:1018B000F2C5757F78A30FF45FD1CBB30BF176F24D
-:1018C000879F3EF327F8FEDC0FCFA721BE611EDB0A
-:1018D0009FC071978777CD2316F38D26F2470D9021
-:1018E0007610F8877829619CDF9EFBE1DF89BFDBFA
-:1018F000EB2C0ED4873F423C015CFF2CF054526726
-:1019000021F879579DDE7310F97CB999E45C49A3FD
-:10191000E0C3B500CF10FFEEA94446F608D0A659A3
-:101920001DC0EDD40FCC8108E8FF94C2F95701A582
-:10193000A018E3FED6BEF901F2BF527782FCE71E83
-:10194000AB8DEE35319FE962687F4ADD71AAC7DA57
-:10195000FAC5A0BD84F6B13BD0EFE8363B60DD4868
-:10196000D388B792CC232C11FD264D8A1DFD266508
-:10197000E27BD95A85FC9318773303F4BE77D355AD
-:10198000C26364BA91D2CA7426F4BA26DA9F24BD1F
-:1019900096AD8376C8174DB9E6052172B8447C2F01
-:1019A000CD34502ABFB78B7EFBAECD9D8DFA445F00
-:1019B0002CCFC2346F36C2B7AF6D925109C1FFC789
-:1019C00038FE089C071FBF12910AFFF768668A79E4
-:1019D0007E16E287EF5F729C92CCBCD518C759B2D5
-:1019E0006E1C4A5FD6607225F4827A67BAFAE17A91
-:1019F0001BB3F278E5AA1EF60F693FFB0CFF1C4DE6
-:101A0000EB26BB6EC5DE5FEC7D057AAEF8D842F8FA
-:101A1000AD182AE2A7B2FC23A793A1516BAF9EF8A1
-:101A20008BBF4491FF613F8FAB8494DB53979773D7
-:101A3000FBAB0BF8AA1BFFCFB1BD1F47756BA7DE31
-:101A4000AFDE949DBA46F93A0AF507B99EFCD7BEB7
-:101A50008CA77928D7C8FF53F3DAAAF8EEEECFE8BF
-:101A6000EDD55DF66C61B7D397EBED757D32747E85
-:101A70000123A3FB58D25EC7D4AC68B4EF7F29EE34
-:101A80006BF474AE91F6ED9A4DD0491CF0A7D111CC
-:101A90008DFEAA2B3DE8D30F66F0FDFE92B0875F66
-:101AA000D9ADD239E7CAEE48E2A7C5BB7F761CFDA7
-:101AB000878BB729348D6AD64A700378326BE83E3B
-:101AC00086F16671D7CFBBD39F168DFB48E52F22D9
-:101AD0006B91CE16352BEEED309F4EAB23BA77C807
-:101AE0007C6ECBE0745669691E497016F3CFCD70D9
-:101AF000D077596F51CBCFC87E0CF52E931EF4CB07
-:101B000008F4F523BC7F87F3BCB079980BFD7E8B7E
-:101B10009AF72D263D6277841D8F0CE7459CB0EC2B
-:101B2000E7CE0CCE9F776670BDE582F0075DD8AB3F
-:101B3000923CC379227F9D57B4F1789345BBC9028B
-:101B40006E9F0BFE92F51735B7470D84FA670FFDB0
-:101B500081D259625D8B6CAD39B8FF9EDD1F41FEAD
-:101B6000ACB3FB9F9EF42A8C77A9795C2FE407D94C
-:101B7000FFFC0C13D5BFB4592D4078313F8F7BA9A2
-:101B800046F80E0B9D67DC169F3394EF78DCCF850B
-:101B9000FDBF8A326405F1596DF558F15E63CD7E63
-:101BA0006F11CA8DCF140E4FD3FE713EBC8F54D32C
-:101BB00092CB909E89EF12A9FE5A43483DB3C94586
-:101BC00042D17868AA3B89E02CEE13897879BC1F52
-:101BD00087F267E9542BF927E60D75CCBA1FE5E4C7
-:101BE0005B268E977E8E27507F9BF74E1CC54D2D12
-:101BF000753A66E1FC97BDAB52BCEFBC61420E2466
-:101C0000B48DC0B8C5AAB50A73C33ADB9D5C6FA892
-:101C1000F2ABCC03F9BE400F3E00C5FA8C14214F45
-:101C200003E978AFEFA97283DB0CFBDF4933F3A93B
-:101C300068377A91C73357A5F0B8E1A790EE21AD88
-:101C40008A0DA4C7417F17053EABA605D2314EA22F
-:101C5000EAC5448A93B868E67E4BFC8E7ED2AA3CE5
-:101C6000680FF57A8978586C1F13423F55252E0767
-:101C7000D653635D8E5C1BCED77E99F4D89722191C
-:101C8000EAB18683913CCEE9E7615B2D2178DA9257
-:101C9000C1F5E55E028F6C2E8F877C5CC4633FBE0E
-:101CA0003DD18FE73759FF7193670EC201D781FA93
-:101CB000FB2273533AEAB772BE8BA29A689E17054D
-:101CC0007D2F0A6FE2F1D2E29E2CD6C77CBB8951F0
-:101CD0001C77C72E0BC5939C4F6C3D80E39FDF356F
-:101CE00088E1FADB9DFE0587A81CF447C05BC50BA5
-:101CF0009600AEE7DC2E6E6F3E67E2FAD8B9A9090E
-:101D00000EC45BC1B44DF3C81EB3CDA220DECF29F3
-:101D1000CC9C80E5DB7BBB7CD8BEBE8EE2A42B4096
-:101D20004CE07D1C480BF05ECDB9ED83283EECDC29
-:101D30006F54BC1185DFD7E2770F6B9AF73D84C7EC
-:101D40004E7E7E3AFFC27F0E0ABD5726D38A6DDAD9
-:101D500038384927B2FC4806B70F1C11703E9EC1A7
-:101D6000F7ADEA88E6C753689D1CEE80273AF7C1B5
-:101D7000C61FF9F4708C834853506E3C0574F534DB
-:101D8000DA1576F2F3D5F9DD268A0BAF3818E9A615
-:101D9000B8B335B718280E42E57A788501C047A94F
-:101DA00042FD564CCBA47BBB006F3AC7766C57C53F
-:101DB000388CD970DD3B789C6F21EA8A549E4DE5C2
-:101DC000E744FEDC816CD2EBA07F37DE57AAF8DE59
-:101DD000F7391CA797BFCDC88E6125F95AD5E5C73D
-:101DE00019138DFB5DF59ADBA2F13E1F7B4765A8B9
-:101DF0009FE8E174D5E8EA8372B577A690B3079EB1
-:101E000031A33CA814F7432A5F50B83F19F80CEFF0
-:101E10003B56AEBEED09A2CFDF99581AACE762F38C
-:101E2000CFA234F81072B0ABBED945F52BA13EF667
-:101E300053B9FAAD289ACF0E13C5995CB75FDD6C24
-:101E4000FB17D49B6ADF451FCDDC8E72DDFA59EBA0
-:101E5000BF7D0CFD7FB13BCCE5A3AFCD74AFEC8271
-:101E6000A97901AEFFC29E3092471762B87C380B49
-:101E7000F2D39781F3B8E7271497F5FBE9741F6E47
-:101E8000A15FDBAF1CD79869E27416E78AC6B8BEBB
-:101E9000EA77B87C03BCDC4BEDDF31517BFD3A4E79
-:101EA00067F0765DFCB92782E8E1425F8E970B7B95
-:101EB00033683F6A8FE1740EF34DC6FB7317F66407
-:101EC000E4D2BD34546E801E2AC4F9F6424C73B27B
-:101ED0003DA4BCDD24CE6901A88974836D40EFABBD
-:101EE000A8E37A55A5751DC587605CEDC83C4A031B
-:101EF00096D8EBE363815EE9FC787FA6B053E27885
-:101F0000F1227E9BF49D6633CA6F8FD00BAB76EBCC
-:101F1000E36B79F9AD998A8C0371F492F1BC48872F
-:101F20003E85E24C2A1B972C423AAFACDD703FF263
-:101F3000999C7FA59115E039AC5D51691EED61EC6E
-:101F4000C169B86F848E13AAB7C979E254E3495FB7
-:101F5000A57DECAE4CBEAF61BE09FAAB6A54D6D1DA
-:101F6000384E799EE5EB927002709831AEAF7D9C51
-:101F700028EF61DD729EFA75CBF93C90C9E551BB43
-:101F8000D3F1933188E7DFAA743FF6EAD7C3A2639F
-:101F9000BBD1CB82FBBA3918DF8AF1BE487BD04F68
-:101FA0004E26976B95183F0BF34CDFAC8DEBCEDCD8
-:101FB000A6CD0FDEADCD67EDD7E6735AB479D73134
-:101FC0006D7E1A8EDB9B9FB3F13E2E9EB331C5739F
-:101FD000B6C3C2CFD998C77336A678CEC6EF78CE2F
-:101FE000C63C9EB3318FE76CCC4B78E3791BF3781A
-:101FF000DEC6F2A7059CAA449C24E201E99DBD1C13
-:10200000A6B9EF73E5357E8F03E880F3CD1C33F17D
-:10201000CD535883CE1DDCAED477BAD581F1BE8FB7
-:10202000C47A5665A25F54695D9D887833B651DCE9
-:1020300069CD2B3CEEB42A2FCC86F68DB65567576A
-:102040006338E703B19E47B1FE1553C70E846F7521
-:10205000DD51BABFDEB6C2F1CE1D1C7F646761E5FB
-:10206000B1A43779719F8BED198FFAB86FB64E1BFB
-:10207000E7AD8FFBD6C77BEBE940EA7BCF993A12FD
-:1020800051AE9FDE655D87F33F1D26EE9FCCB6EA1D
-:10209000FCFD424F5BAF6CC5FDFA1799B1DCAF7226
-:1020A00002F4F36EF65999965E1B467A78577E9D38
-:1020B00062A07B7109F1B40F2D13734A563ADAD737
-:1020C000A09C5B64A07DF32AE86538DED5F754D286
-:1020D0001F32361934EB19E40FD7D0D7909DB1BA1F
-:1020E0007B0D7D35F5871E4AD1DD6B18AC8DA39F26
-:1020F000B1E2309EEFA7AF1BA6A95756749B0E8E78
-:1021000062DE427F2D83FDC30DEB7B6AF9A664C4BA
-:10211000EFB2459DED6B503F7D298CEE8595E3FF39
-:1021200003B9580E7DE27DC6F2FDE23E709D761F3A
-:102130002E15FB50B991F9ECB1413A2CB733770C1D
-:10214000B45F34B8352780E78ADFFC61A43D05CF52
-:1021500015E3FAA03C4A36B9290EB66A5F5ACC0A92
-:10216000E8F758AAE7A34CC0CB99A6A33F2EC6FD1B
-:10217000701F3FEF9D5EF7AB288A1313F4966CB285
-:102180008723DEB734F1F838B48FA9B141BAD8D279
-:1021900014173ED0165C6F900EBE263C017EB81D13
-:1021A000A7FC08F93D3A9BC57AC7293ED4A7E5FAB2
-:1021B000968A7D850DE4FD3C24F267C4F942AEF3B6
-:1021C000E2A0C3390EBC7F517F285945796ED8BD36
-:1021D0002311D2D116CF97B89EF22D697F1A03E34F
-:1021E00054FC91AFE7938D13A246A3FEB9C7E42A2E
-:1021F00084FC9AA6E7CD78CEAE30FACD145FB96BE9
-:102200008B19E38BEFDCB985BE2FD8E9A578CA8599
-:10221000AC96CE9F9FC97704043CCAC72B9BED3078
-:10222000EFB983B8FC280FE7FE3BD08FDEC0F73B49
-:10223000AEEE5472318E6746D13EB317BE470D12D3
-:10224000F783747CD2F9F6F4FCDE040F7E5FE38F33
-:102250000C4EF1A9D7F3C5F46B4EE28B19D786D09B
-:10226000B96C6660103FFF66E9CEBF6FABDC5ED72E
-:10227000C2F9A0DC1CE8351DF9E47513E9B9D5B045
-:10228000DF8CCAC37335EC8D90168D5135F45A33FB
-:10229000314243CFB359ACE6DECB7D183412929F66
-:1022A0005198AAA93F6BC6101DFDE705CB498EDCEE
-:1022B000AAB95F57BDDCE75048CF1CAFFDCE789C74
-:1022C0002063776BDA57B369C17A48DFDBB81E5CED
-:1022D000BD3F662BDAFBCA0DFCFC34DBC3BF2F3ECF
-:1022E000C4BFB3D94CC38703525D7FE2FBA289FC14
-:1022F00002D29E3E1BFFEE06FE8C8577DD0FC77B6C
-:10230000F1688FD0DC9F16FE409C37E2A15AD88D31
-:10231000AA33B9DDA8DAD76AC6770700FEC6B8586F
-:10232000AA678DC3F8C82685EC8A982EA778496DD0
-:102330001C16F687718C8B4FA85EE4137D7939BE2D
-:10234000DF83F87D85C7952EDCA48F835C47FEC8AC
-:10235000C5680F0AC1DB53831C425FF1AFEE8BF0FF
-:102360002B5472E95EE4EEC3668CB39B31232617CF
-:10237000F9464F5F52AE033FD3F9BBF3EDA3445F81
-:102380009DE546A2DF1BC161B19BDB51F574B780AF
-:10239000B59AF19EF882FD8A0BCFA3580FE1D117B1
-:1023A000E951078FB8D8EBE120E1D305AFFDFA384A
-:1023B000370EA78587147FA01B38E9E7DD13DCE41F
-:1023C0007A16783C93502EC8752DC4F963FF307F80
-:1023D000EC5FFA21D8283D7FA6927D6A71118F8F1C
-:1023E000D5D3C3B46BDCEE72DF3523A5330AB5FC5D
-:1023F00088ED902F665E8BA7F26F4B2F8B619EFC52
-:10240000FED3CDD1895C8794BB417EE0F7066EF4A4
-:10241000BE8FDEEEB8639088131CC14668E29185DA
-:102420005CD5B7D7C7234B3D40BFBF78230D1437CA
-:10243000D9694B21FD42CA598FD83F3CABBEA47A23
-:102440001EA8C76713AFD96F3CC2FEB7343285DE12
-:1024500063485E11178F78F286D929FEDEBB42A54C
-:10246000B8672FD47384E827AB1B539371BF38F53B
-:1024700048C6B33ED0DB4F7DB757FC2818E7F42A97
-:10248000532FAB2358EFD4AAFC648CD338BDC13290
-:10249000DBDF0DBC5AC5FE50FDC30F683FBB64783F
-:1024A0003B6A36B4AF5AF5521486F957AEE2FB7860
-:1024B00079AAE79D41BD713FDFB2C38EF0B36FC90A
-:1024C00041BBEF49D80EB0BDD41F2A56E5F741FDF8
-:1024D000A2EABF8F3E6BC77BD62B4CF1A87F9E7BB9
-:1024E0000FF64385F633D21B3E0B832EC89F164949
-:1024F0007684CF14E646BFD245C3E1BFAEC1736157
-:102500006E737A00D2EF593C2771DCCA55CF93DE47
-:1025100052F1E88A7455C57ED3A2BBB39BC87487B9
-:10252000D8B7517FC714F5778C9341FD1DF3A8BF31
-:10253000638AFA3B7EAFD9A4D5FF2EA7713925ED6A
-:10254000C9031A3A72D17FE71BCF326B69BFB565F9
-:10255000A2BEBE4C0977A13C5A86BA12E6FF1246CB
-:10256000E758B62D91EFB702CF7556EE37FA4ADC31
-:10257000CFBDBD0374B210FABCE39A9585DE9B1DF6
-:10258000C76234F909D6444DFD7CBB53537E67C204
-:10259000204DF95D8E5C4DFE9ECCD19AFA935DE3A1
-:1025A00034F97B47DDA5A93FD53D55939F5E304764
-:1025B000537F669157533E6BF6224DF91CCF124D57
-:1025C000FEFEF2EF6AEA3F50BB4253FE95014EA475
-:1025D000402F2D78EEB2E0FB29564ABFA3DA8D28B2
-:1025E0003796FD36CD86F81E33C150DB9D7D3F63A7
-:1025F00030D787CA86B85306F7E6EFE0203DF617D6
-:10260000EFDC8C18CCF199C480AAE8BCDB9A88F482
-:10261000ABAFA72F1F1371E4AA0370F893C14367F0
-:102620001A410E8DB9E5C8B054C89F18BC60A611F8
-:10263000E4C698DB8EFC2A05F2AD837FC1CB871EF2
-:10264000B98AE5B38654F2F2E98C548F3FBFD07754
-:10265000A60FE77F47CA3A17B793747BCF5CA608EB
-:1026600007BCAF8D70C03400F48BE911A05F4C8FB4
-:1026700001FD96817C3A0EF48BE909387FE2F77F01
-:1026800087F327A66FC3F913D3DFC1B913D3563825
-:102690007762FAFBFAD994BE57EFA176EFD797533A
-:1026A000FA417D2D7DFFA8BE8ED23FD7FBE8FBD43B
-:1026B000C1D28E11609AFB01E867447FE221D3C545
-:1026C000503FB0F4574AFF64432D6B8B4079D1667D
-:1026D0008CF9D41AF43BF66C0730B24F43F4B1686E
-:1026E000E62E1E4CFA423F3BC96FF1DDE4F0781153
-:1026F000CF7F744E4F1BA6E2BE55FB06BA65FF683E
-:10270000E8FEDDC411823E460D712F20FA10FE75E1
-:10271000E9DFEE8A9B09F1BF1B42E275E85F48DC06
-:102720008DF483CB389FDBADFC9EB1F473CB781E68
-:10273000D95FFE178CE4C3D8B546D25F228D2C80BA
-:10274000FDCBB89DB1D6E65C8C63185B65A37BB509
-:102750007DE0BB398FEAB95548B7FD0DEAE704FDC6
-:10276000EA7DC4FCA19CE69FFF8587ECB063455CD5
-:1027700001B6B7F2721FB61F8BB685E194927C7AD0
-:1027800006EFEDE605FDFC583F82D70F607F03FFA3
-:102790000EE34505F9A67F6C732ECAEBFE8B6D74B4
-:1027A0002F74F3B800BD6745462780CB74797EB29D
-:1027B0008ABCF4E7EDEC4376A40982D7BFEFF06C56
-:1027C00042F81759EC7F89203E4BED8FF6C9A9429C
-:1027D0007FFE07787B06E940C253E245E251E223DF
-:1027E000247E8AF0D0135EF5F8D4E351E22FFF8BFC
-:1027F000205E10AED7E32D8857B4E7FEABE06DB88E
-:1028000091BF5F66A9B2D2BB6837C2E3831D6C5229
-:102810003456717A46207EBCD71CC7315FCAC64D7C
-:1028200042D4CAF2B1583EE2FA72CF171DA6E810A0
-:102830007CDF2EF03DBF87FE643DF91E83ECBFB107
-:1028400087FA6F85C9B80BB72D776430FE71593E92
-:10285000877F815325F84FC85A487A32B3713DD3E8
-:1028600001FFA15C9AF47511BD4FF925DB8D9E5BCC
-:1028700036A997563F2DD0F9ADEF167AE9DD3ABD6E
-:1028800054AF577E3E58F8B39DCCF92DDF9DBCC6A2
-:10289000E5DACDBE3BC9DF2D9D28F82C49D059AAD9
-:1028A000436563908E9887F6C963F86E690EBEEF34
-:1028B000E9A3FC5DCC4FE93D2C40FBEB6410C498D0
-:1028C000BF174428E68F464C29C6BB7113864D18A6
-:1028D00088DF43DE658B1CD29BDE65FB0F7BC8BBAC
-:1028E0006C47263AE87EE5116B2AE95FC887A61097
-:1028F0007BE06F607F1A08FBC751D8BF307D03F6BD
-:10290000AF81B0DE3761FFC2FCDD992B18B69BE4C6
-:10291000D0C6EDC8F6F7D827C0C1A467F8DD93F399
-:10292000723F84EF5B311913D17EFE56CC2D1371AB
-:10293000BD6FC5F431F0D462A634FBE0C0EEF443C1
-:10294000C907C1F126D1787AF84A78EAE128E1FB93
-:102950004FC0F396EEE0396230E3F649EB1FA21266
-:1029600052D07F1725DEA3FC6D8E0AF97338B5446B
-:102970008C57BD8DE639B66E34330E23BF4D16C26B
-:10298000B5CACAE1A5B75BB16D7D0CA1F1BB57CD4E
-:102990009E8221B0EEB39B55BA377EE9C530B2476F
-:1029A0007DE6E7F6B67B14CF649C5F95EA5887EF27
-:1029B00088B2B7F83B67ECEBA3C9D322BF059D6E85
-:1029C000E3F7EDABAC93BAC5A33C4F4D71BA47707A
-:1029D000FAE7EF454ABDA29F85BF4B20DF2FEC49A8
-:1029E000CF1819CEE5603F0B97DB12AFD08EF249BE
-:1029F000D0CF489073493F09A7F3C5CEDEEEF9B8B2
-:102A00003E6947E8EC17E147793B363084DEE52A3A
-:102A100038A1523CF11111DF75E7905A5B0AE0A929
-:102A200029CD5383ED98FAB58A72E66D58671CDAA2
-:102A30001F4E0CB3D1F9F15B9E43BF3344C88B1CCE
-:102A400096A3B9AF26E94EB551FC4EE77BFC3EDEBE
-:102A5000D2DFF0B8CDA5BD558AFFD7C7C58D65E9D2
-:102A60003F417BE3845E2697DF11942FF21D204BBC
-:102A700082813942F4EC3047387384CC27223356B4
-:102A8000938F74F5D5D48F1E95A2298F710FD6948C
-:102A9000C715E469F2BD8B6ED5D4EF337BBC269F9E
-:102AA000E8B95B533FA97C9A368F7C0770EF5F3B98
-:102AB00057D36E405D89A69ED357A129673E776B99
-:102AC000663CCA71FE2F75ED524DF9D351053C7E1F
-:102AD000DCB680EE29A6357D4FD39FC46F521CC74C
-:102AE0002F73F0FDC107FF91DF42E0393F41BB6F1B
-:102AF0004CB08F3B66A7546BD748BA411CD4A17F1A
-:102B0000960EAA99960E7AF1389EFCDF0C73A01EE1
-:102B1000A3C73FFA2342D789FE8850B8A03F22348A
-:102B20008FFE88D0FAE88F082D477F4468F9B013EC
-:102B30005AFC8F68D5E2FF960FC6FF433C8D6ED3DB
-:102B4000D2831E4FB77DA6A58FB19E7082CB04D0D5
-:102B5000C790DE259E66C37FB4CFB3A268B41BDCEA
-:102B6000C1DC742FE07F0B5F9775F8FA92AD1B8183
-:102B7000EF5C5EF17239DED33E7F6580FB0B94BB68
-:102B80002942CEEBED00329ED4379EE3D377328CD0
-:102B9000E4D55786B648DC3FBEA3B6915D3E91753D
-:102BA000BC81EFCF0CE9E56159BDF1CA36703F94A5
-:102BB0003FB5E8BE5CDCE7E6FDDA928C7ACDBC017D
-:102BC000FC3D4196D546EFB4C8F9CC4BE2F147D66F
-:102BD0002C21A75D3C0E29228BDB7F225D768A8328
-:102BE000F6663111E7C992E765231DBE1D96817413
-:102BF000B691DBB9DA4C0E8A6BF1013DA29F12F55A
-:102C00006DD487FB0B7DB4E143AB95D31DD3ECEFC3
-:102C100083FC564D1CEE909D764D3EBB3941537F53
-:102C2000E82187A63C3790A9291F76C2A5C98F68DD
-:102C30001DA5A97FCB076E4D7E745B81A6FE6D9F9F
-:102C40001569F249ACE34984E7F8AC141EDFAF081C
-:102C50003B8083E365DE77E2E93E8D3C47C8B86C94
-:102C60008FA063FD796480D94371DE0D89CC45F76F
-:102C700041ACE23CC8B4E7148F88AB96FA3CF369E8
-:102C8000E3AA653C75D779469C5FE47922249EDAF5
-:102C90008DF397F1D45D7817EF4BEAE9F35E817716
-:102CA000FD3A0698F9FDAF86EF9AE91E8B9C9F7E50
-:102CB0005E9B443CE0766BF7EF0F3D20E8AC2DA522
-:102CC000686616D47B16B62782E775E3B9DA7C000E
-:102CD000DF861F985D2B1D371E6FDE50BE9E627C07
-:102CE00057358BDEE9A47B6B72DC6A31EEF41CA5F0
-:102CF000DBF5CD8BE6F15D2CDA4CF72E7A1E8FC317
-:102D000035C1CC1AE99D24710FE18175CDEB3154A9
-:102D1000B3D8DC64E2EFE3FB4D68272A1C0F7A602E
-:102D20002EDA0DDFDF68037DEDD93A23D97D1EDA77
-:102D30003DE63ED020BBEE950C80731AD24921E2CD
-:102D40001FFA3D97CDE39D1FCBE2F2215FFDBAEB69
-:102D50003E804523E7F9F9AF1BBA237A94EBF8BF1D
-:102D6000BA1F20E9570F2779BE6662FF1A28E625A9
-:102D7000E1D7653F11F093F7331C4B4C455B6D7405
-:102D8000CFA300E3CA24FEBECEE674F96616C737A9
-:102D9000D64379D453BD7C352B1AEDE09DCC116D13
-:102DA000BF813DF8FFE8DE04C1BFA7FB5E3DC989D6
-:102DB000EBE4430FF7BF7AA24FFAF72DEE8185C8F7
-:102DC000091EEF23F0E11F6820BFFA9A482D1FFF6C
-:102DD000358BDB5D9E96FB850FCEDD5A39C1D0AEBB
-:102DE000DFB04A15726241D7EF48E0F7F9AB4CA467
-:102DF0005F3356F438C6197CB2D14471B163DD8CAF
-:102E0000F49892CD8A7F8B82FBE898049CBFD7A769
-:102E1000DD8FEF60AED5E8FF285DABFDBED0C67F8D
-:102E20006F62BEFEDD14715E5F7883F3FAD92CE128
-:102E300007723117E95DC2FF5F2EDAE8F5AE4E3F4B
-:102E4000F79BE1795BE576278A1B93FBBB03FD3794
-:102E500021EF81003CC333711F6F34761BCFD70540
-:102E6000CF1EE2152EDA44BC828DC76774EE0FE3E5
-:102E7000FE4DE95712F52FFAAE5239D6C7DE2EE5D0
-:102E8000F2B80BE94FD2FBAB3A6D06F2B774EE8F96
-:102E900024FF3CFA71A2810ECE1BF6C58F7206E7A5
-:102EA000E76953357E107DEA59F1129D17CB533DEA
-:102EB00031D918876D74595D907FC47684DE8F2A6E
-:102EC00014762FFD7CBBCE5D63F8FB2E9D3EAECF0E
-:102ED0007616F07738402E32E42319873095C129D1
-:102EE00015526F6034CDE7DBFA73A65FCBE57ECC7D
-:102EF0006BB7517BCFDAD1941FD0B87E09DE8399AE
-:102F0000D9B0D0842EECB62797E78743D3B6FEFE20
-:102F100095E188B7714AB776F9BC6C85F8A14D1771
-:102F20005F2FD3ADD99C5F7E9D2DE5B888435AA114
-:102F3000101F2C55988C4B22392EF3579B443E9FE3
-:102F4000E797ADE2F936F1BEFE0E6147C175638ABF
-:102F5000EBC673FF6E6167C175638AEBC6EF28B776
-:102F6000308F720BF328B7308F720B53945BF8BD20
-:102F7000841525E7AADC0F353194EFAE59D9C4107A
-:102F80007E413F54681EFD50A1F5D10F155A8E7E2B
-:102F9000A8D072F44385E6D10F155A1FFD50A179D0
-:102FA00036EAAE601EE59C7BAA263F1DF4FC892113
-:102FB000FC8D7EA8D0FED10FA5E9CFB344D3FE7E11
-:102FC00056A7698F7EA8D0FA0FD6291A3FD583E27B
-:102FD0009DD3D24D71443FF31D4535D980DFFF8825
-:102FE000F8EF874D2988E79645FC5C16EEE2786E8F
-:102FF0002AE07837308EE78E3984E7E5669ECFE7A2
-:10300000F1C97AFA417FCF4413F7F7608AFE1E4C6C
-:10301000D1DF8329FA7B26A6717F0FA6E8EFC1EFE7
-:10302000E8EFC114FD3D98A2BF0753F4F7608AFE94
-:103030001E4CD1DF83EDD0DF8329FA7BF03BFA7B96
-:1030400030457F0F7E3F897E2753705EA8C70FD41F
-:103050009C1F810E35E747BB268F7A7C687DD4E3C1
-:1030600043CB518F0F2D473D3E348F7A7C687DD402
-:10307000E343F3BFCC72109FA13E1FDA0EF5F9D0E7
-:103080007C7693EF0DB49D4DDE7CF918A66D91CA48
-:10309000B30A888CE6ECF7EE433F5D5B98921C0325
-:1030A00092D3B4E2C3FB2682BEE611F17F39ACC3F2
-:1030B00080F8F688F7D43D0146F196D97F4BA4F20B
-:1030C000CB78AF5FC4DB22DE73F733FA5D12E92FF2
-:1030D00096ED5DCCAE622AEB07F3DDD7D38F2FEBF5
-:1030E00091FC0C9907DE00C67895DCE5B63C8CF7C0
-:1030F000DC6150284E62C74A1E27ACA7AB33424F53
-:10310000DA61D87704EF81747815BA0F9C6E642762
-:103110004C7908A7DA3CDC7FDFCE8E11EBAABD1517
-:10312000EF9BC8794BFB26C809BA3F37A6A3754267
-:1031300034F4E3F18DA3DF49293473BD01DBE17978
-:1031400072884F716F0DA1EFF785DCF4F8F8F83F46
-:103150007F6E0A6F17CEDBFDFCB92882E3944685AB
-:10316000E2A5C6EC666EBC9FFB1F429E0ED91D50A9
-:10317000713C6F231F4FF6EBDD9C4CF716BDAC6D19
-:103180006202F9481486725BC20DD6770CD707C766
-:103190008613689FBED97B3FB70F8FC9C7383AD611
-:1031A000C2E81DCBC9C3DFD5AC97D03E92FAA57D4E
-:1031B0002DC3A7D07BC1537C2B56E2B63ED9B7E4D2
-:1031C0008DDE587F1B73391DB415D1BD58399FC191
-:1031D000EE7D06D81659166B358429886F76342E05
-:1031E000847E80F36720BE735D267ABF77AAD16E96
-:1031F000A2F7237A883FB96A93F1273A7D4117678E
-:10320000D2B0FC8364B4272F8D3490FD77E94BFC5A
-:10321000F7003C9B14926B520FF28A38B5AB8D6F5E
-:10322000F49E8570DF67A2FE64FC4975AA3FD980D1
-:1032300071F57DB7E4C4AAA407C4E6A01EE0FBD5DF
-:103240007DA3B0DE2AFE8EE5D5C699D101EA89FBC1
-:103250006BCA04BCCA441C93171FF45683BF8B254A
-:10326000EF77B026AEEF497B8EF7B7C38E237EBDD6
-:10327000CF8877A5D77AE95EB63E8E6851A389E2FA
-:103280008E16E9F4C24AA11756DE402F1C9CA3D328
-:103290000BE5EFA588364CEDF73EC6EDC97B89C539
-:1032A00026CEFFC5FB18D9618B574C30D03BC82FB9
-:1032B00071BA295EC1F59BE297DD74BF50EA8BEFCE
-:1032C000083D66DAB52482FB1F84DE3213E32B014E
-:1032D000BE856D61220E2B91D259D778BCE5341B87
-:1032E00097036DAFF177203A7D16AE4F1D63FC1D3D
-:1032F000331D5D4E35FA0D78E1CE3506E812F293B6
-:10330000510F82FE66A35E148774EECCA7F8BD024F
-:1033100085EEBDE8E9BCD054FB06C687166E672E65
-:103320001F0BA573A05FECCFA7D0FB001E71AE955D
-:10333000F4ABA7F77911C21E65E3F6A62EBB04EA2B
-:10334000A8F44877CE2CD41BE7A16FAF2F27188C99
-:103350003B8BCCE2E5653939B31AF190D3839D42BA
-:10336000FD9E99E0E191EF20F46037407B01CAC9EE
-:10337000071ECA359784C8C9E1AEF18D434704F1F1
-:103380005DD275DF2F8BDE055DFA481AFD1E4E4FAC
-:10339000FA7029C015F9625E74DBC3F80B6B0D3946
-:1033A000CC3D31017F2750AE8F05308E70AEC837CF
-:1033B000EFBDEF4F6B6D0417CAD7E78C998571216C
-:1033C000D5D6B649487635599E02BCC718944F45A4
-:1033D000EE2405E5536E00CF849BE4FD649D3DA281
-:1033E0003987D7D7DB254AB3B8DC96BF8B72EA9111
-:1033F000837B71BF92F33FD5C3EF30ECCCE1F2F7A2
-:103400007FEB1E84FEFEC32FFB7A9ECC81753C6E43
-:10341000E0F7F9FBAA4D4CD887C82F2CE50513EF30
-:103420006004F1EEA677741B1E51ECA1F629CF5A69
-:1034300085DFA3EFC18EC3323B9EDC0EEDE6D59B4C
-:10344000E9F7F89E4BE7F4F31CD00FFD5E8AB9F55F
-:103450000DAB3308C78FEB7E6AA2DFA56181347C98
-:103460007F676E6D980BE5F17057D12F71DE1159A2
-:103470002E92438D18430EF9BB7A15BD88DFABD76A
-:103480001D7E16DF13A86971D2EF95780FE5AEC6E1
-:10349000774E86BB3C07B1DC6BB3D37B1A8B1B63C7
-:1034A00068FF9AD747DC0B651DE46793F07F47D828
-:1034B000AFD6BA38FD5E11E70E14905335F5BAB7A2
-:1034C000E3493BA1DECEA07F5FA227FB82B427A009
-:1034D000FDC01C626794F60953E6A939A837149B0E
-:1034E000B5F71265CA86F27D5F9E03E777ED5B59FB
-:1034F00093FAA07EBC41B1D37B9336C7ACD1902F59
-:103500003B61C2C84E5618EB30E3FB031D805F8C55
-:103510008F2E017E4539532CE2B4CA368D267E2B80
-:10352000F343DACD3B9C32BD7FC3D1FE2F23FD0494
-:10353000DCE4B72CB3BBCDB1217C5FDAA468DE1D1F
-:1035400090F98E1C95F311A8E308BF071E729AF13B
-:103550006D9F62502330FE8F0D7568FCC7508FE25F
-:10356000410A53D871FE0E3CCCDBC9C7CB0BE9BF77
-:10357000A489DF9B9679A84FFACFDF732209AE5E4C
-:103580003BACDB89A99DE60970203875AC87FE1C31
-:10359000340EE1A334E037E179BB18E350203FD784
-:1035A000EE37E138258DFC1D13CF3A3E8E676D8CCA
-:1035B000391BF523A3DDDC1FE1277E6F15E6477A73
-:1035C0006419C005EF63E17D37DC5BF4F0F18AF943
-:1035D0009635C5D03B0AC1EF1B4C888F393DBC8B5B
-:1035E000903594D36D49E338BABF5E6674D33D0716
-:1035F0008F80EF274BC21E45FFC09C8D4F989C903B
-:10360000EF3794D36FD6504E5F852981347AAF68F7
-:1036100049980BE739C7DE44EBEB82EF63000F05F7
-:10362000DFB92922F8025DF8306EAF6CA3169FC196
-:10363000F970F8966DF412BF2D307ACCF6D0796C13
-:103640003A9C86F7AAE6007FE3BB12CCEEA1FB9280
-:103650009F3E362B99D609F344B846BA1C93F0FD29
-:1036600021A0137E0F46AC47DEEB96E34D1CCAEF5C
-:103670009D4E1CCAE567CF7CE926BDA601F08B767E
-:10368000EF9EF8D28C821BC63597F1DF91D0F3A95B
-:10369000E44FC997924F25FF3E6B2A0A24284139EF
-:1036A00003FB6CED8BDDC0A951CC77AEC02BC0F510
-:1036B00058E83DAF6A81D7E2142DBF637FD8EF1C75
-:1036C000C1EFC5E30369F82E93AC2FC72D8EE5ED4E
-:1036D00090EE91DEE688F1B0FE52AAAFBDA752DAB5
-:1036E000252F76AF8A4779B14FE17ED0F547FB7F32
-:1036F00007F5D73D5C7FBD50B57D31EE97CCE84FE7
-:103700000E7DDF7F3EE83928271688FDB92CD0BD15
-:10371000BCB890EEA9181AC2CF653FDB93EEE1F278
-:103720002680F2E6CF7B5EFDE3AD8EE07E2AD753A6
-:10373000B2F65D93D7160A3FBEFE47333BE93E5EC5
-:10374000A9CDECC078E7D2462FC95F96007AA112C6
-:10375000127FA6A30B6FA342F7C84AEB46FAD5FF28
-:1037600045395DBA6E2ABD7B20F126DF6791FBAB40
-:103770009CFF7A31FF2621DFE60AFA9E5B3ECE9C53
-:10378000D88BF46E0CB36473C4F73965DAEF5D78E7
-:10379000EBF25F67AD467EC1FB45743E5967E2F6CA
-:1037A000BEDDDCFE7861E9C1DFDD07F5CE3FBE2579
-:1037B00099A95ABCA19EBA40E8AB0B85FDAF1BBCD2
-:1037C0006D19DA3B985FF81CC75BE9DEDFFE05DFA9
-:1037D000132B4E11F26E3D7F07A0A4791FE171CE2D
-:1037E000DA0D2627D4DB37D44970EA92FFB5B976D3
-:1037F000B42BCF5DBBC58472629F84838E1F8A45C4
-:103800009CB08433EE4B4A887F43D647F988EFDF7C
-:103810003FB4242C0AE379E4381F093A2FAD8D898F
-:10382000C5F14A6BBD3FC6F390DC0FF4EB3C1DC6FF
-:10383000F9A504FA43BE3D3DCE95BC342BA8CFEA92
-:10384000EBBF2BF0F8B489FF4E4D5244F32E8A6B38
-:10385000A80977A1FC1838B0CD8FE3227DE3BCCD59
-:1038600006FEBB3603ABDA3EC77980AA4D713598A8
-:10387000E2FB58A87AC7437EAB81DFDF4A5179FA71
-:103880009590D7501EC072D6AB8D7E5F23246E56A6
-:1038900043BF66B68D7E3FD1DC8BD1FB66925E6501
-:1038A0003F925E253DF7B4BE2B42AEDC687DA79DFE
-:1038B0001C9E66F1BB2937BD3E0BFF1D5DB92E393D
-:1038C0003FD0E1DDF4BEC7F7B3C9DE737A852B19AB
-:1038D000E3267B5EEFC6FCF86ED6AB5FA7E41B1950
-:1038E0000BDFE5CF6AE27E87D30AEC6FD0EEF4926D
-:1038F000308A6F93EBD2DBC3FF1FB640B5F6008072
-:10390000000000001F8B080000000000000BCD56D7
-:103910007D6C5355143FF7BE7EAFDDDEBAB1751B2B
-:10392000DBBA8D8F46BAF1CA80F891681D8CF0C75A
-:10393000A2DD14DD0C6C25B031C68A9360A8C6B830
-:10394000B2229211E24C3618044C876C7F18205D2D
-:10395000208AB19A8689468311E11F1292A60B38FC
-:10396000D16856310A44649E73DF2B9D08897FFA23
-:1039700092E6F4DE7B3E7FE7E3DE0F7A658085002A
-:10398000C77B1D00468093BD4E41A3BD2EB19FA7AE
-:10399000D801E6007E495B930D60AD05DA7C565C8C
-:1039A000C6F1970F9008568DF4B3CC7E831DDA9A3A
-:1039B0009026E4A4CDEEC67DBBBA7FADC7DC0F393F
-:1039C000002D90DCE7588AB2C12A1845538981AB93
-:1039D000368E7C579F463E77466EBB3EB51E88CFDF
-:1039E00066708E5600646DFFAEBE10EDB50F567852
-:1039F00018CAAD0BD6268278BE6E57A102B86EB734
-:103A00003A773BE83C54A1F4E13A6BD033358CE78C
-:103A1000EDBB1629C4BF9D812F4A7E0F1C002800D4
-:103A2000E8807B9FD7B41C6013FD43BE4D56C32472
-:103A3000ABC1F3E0C43C19E53B14B387A1FD4DC312
-:103A40002C6EC4FD060E7BD81280F2B06F5511DAD1
-:103A50004B1D64CA51923D5CEF4D9A5485339500DD
-:103A60005D0B7D35CA325CDC99999941FD8F20460A
-:103A700020515C512FC501434C1E05F2DB67207CB1
-:103A80004E2C760A9C13839336A75BC5BB11F106B7
-:103A900047010794DF6652FD2B37A426DF46BF524D
-:103AA00036AE1CC575BDE4FED649717E2581D1496F
-:103AB000721ABFACF1BFF9A8C98FFAB6D92A0B01A7
-:103AC000E9C66174A216CF9A4D9C70E8D47C6E1F33
-:103AD00079AE00D08F763C77E2F921DA7C0C60F782
-:103AE000E08A8224C9BD5BBF3F540D50A6E1784DEA
-:103AF000976CA4FC5C1F29B4EFC4D83606C20B0037
-:103B0000CF378EBC5D46F4FA88B939827C2BE5C686
-:103B100095B9186FC7E15C8F84FECCD0F714E64DE1
-:103B20004121C4A72BB0A21010AFEEBB13EFC955B3
-:103B3000681FB126DC7F8F664542C8D2DD7BA64C6C
-:103B4000E2E88AD1DF4C786EE1B1171E433D3FB108
-:103B5000C85891E07716CAD68CDEFBE9542FC28094
-:103B6000F51C78F3B2D0F30B3FFF4C0BCA77074E2E
-:103B700065939E2D439796CBB8DF59E5DFA8CC21FE
-:103B8000BD2363324204C323353E8CA35D01E1674C
-:103B900083DDF7420BE1FE9524707F98BDCE334C58
-:103BA000E07B2FCE488E8170F7C7C1201395C140AE
-:103BB000F57D5D8260146943A5DA2FE9FD20E1827D
-:103BC0007E5CCF1928A3BAD83C76A0CC89F4479B59
-:103BD000BA5E3BF6E2D7908DFCC78C06CA975F07AA
-:103BE0000605E5368498374275D389FD5A94B1DFCE
-:103BF000A764097D9B87D1A9BCCC3E4044C4F5A3F2
-:103C00000E56931FE5E194E715A45774F176CAEBBD
-:103C1000951EB312AAA03C3905DF95016915ED8701
-:103C2000B091E6335A9FB2CD43FBAD39D043F2B6E3
-:103C3000A5D138C73C074EE72E91D49212F5B55561
-:103C40005617F5927555099E6F1B6732D5E9B68FE9
-:103C5000CFAD02750DC01E8E67D7AD27C039CBEF33
-:103C6000AED3E306EA8FEEE3182FDAEF8E8E7F51A4
-:103C70008C7AB69E595FABDA1D00AAFF80D6CF5B67
-:103C80004FABB8044E4F1A36B8337AD6BBECBB4BA9
-:103C900030B7A34AEB8B43C8BA9EF2F63840EC64C7
-:103CA00063F3CE79486B641137E852653EECC37E0E
-:103CB000D74503F5516097A6CF757177A588B731C1
-:103CC0000F66D5C398A217726979C443C8C5039615
-:103CD0003DB01887CD56AB8E683860CD267AB88750
-:103CE000BB7488AB97591409F10E9AB26B684EDE1B
-:103CF00034AB346651E90EEE1BEF40176FF20B66E2
-:103D0000C0BADF210D30A24FB97B18220D8BF2FD16
-:103D100031AA5F0744190820E28CFC9EFEF4875A02
-:103D2000B2FF6479F2374097F43BDB9A57627D7CAF
-:103D3000AE68F1B993B554E773CEAA73FA881EF64C
-:103D4000989750DC3E68AA262DF89FF27E9B476824
-:103D50000EC758FC7DD29F8EF796D6C73EA3750F2F
-:103D6000433F1B9CFE6FC88F6799BEDAC32907D2F9
-:103D70007CD23FAD57CF71FE7A4D581775DAF02DD2
-:103D8000E510022C5943B1C34A75CDBC5E08A2FDB3
-:103D90003EF7D90D541F7B532630A2DDB086475D18
-:103DA000CA32C990AFB47835079CC7CC994F770C0D
-:103DB0009C75F39011FDDC0BA608F18309E7B12B8C
-:103DC000338F0DDCEC15FCB12F6FD37C2F917E9DD2
-:103DD000C841FE921D4C09234FEB8DA923DF225DC4
-:103DE0000B110FE1DA95EF9FA2381237564FFA31D7
-:103DF000BF7BE5A84971ABFA66FB1F7BED76B69DEC
-:103E000067FC9A4E4D9DF868295193B877EA629203
-:103E1000B837EEF767DAE1D4911DE48B73E2B7F2BD
-:103E20000863C43F7199FCAB3359E35236C9E97F4B
-:103E30009E7DAFC085D2DCA945E22A8199129CF60D
-:103E400061356F4F6A7D98CE8B85C05F4654CD4FEC
-:103E50001A3FE1FCACFBE433EBD83AAA9F74BFBE37
-:103E6000ACEDDFB8559943F3E546AC2A07DC0FEF1C
-:103E7000CF4B385FE99D70B8C26BF72CCBDCA76BDA
-:103E8000D2B7AB76DF4A9ADE351A4E6BAC5CC5E52D
-:103E9000F9FB70D1EA245D0769BFD3794EE70F5E65
-:103EA000BF702EA742E4ADFA1D10F99A4BF613B776
-:103EB000CFBF856D05C59277D25FF17FCC57DCBC53
-:103EC00090DE0D435CBC1B4A09F825827A39C6078F
-:103ED0002E10F3A055B228FD0F98077E9A078B6924
-:103EE0001E0C883EBFC953E738A379D023D60E48AD
-:103EF000EDD4E13AC19336F23769C6AA47EAF754DE
-:103F00008A7BA0843ABA4ACD13F5F591D76C47E97C
-:103F1000FD1666DE8326940FEBB57EDF6C8D8CE29A
-:103F2000FE748487F4686F303772B003F707D7CC1C
-:103F3000554288D334687C9D1631179EE05CAC53A3
-:103F40002D0591A315C48F7D8D710EB63C22EEF127
-:103F50000FEF4AE2BD989A0FEAB907160CD379A37E
-:103F60004BE8FB243D67F6D984BEC1466F91459C62
-:103F70001770928FE4F95FA2FC164B2A1F3E0404CF
-:103F8000DFA143DE22CAC7A12683E0DBCF7C2DED73
-:103F9000A4A7DAAAD0FB32D9623939A6A623CE96D5
-:103FA000D27B558D375DBFC30B64814B7968F2209E
-:103FB000BD434275E0EAA1F72BD5E1E24C7E9817AC
-:103FC0007361CFE4295D8F213DE62B5FCD571FFB49
-:103FD00077BEF2B57CB120D66D36E52D2AF0BFC98B
-:103FE000D53CEC9020998531495C711891FE91EF98
-:103FF0007F558DF342119DB71A93CB06E85DCCA196
-:1040000033FA803E0C519F8BF739DEA258E76D5A88
-:104010009DB7A5EBF18DFBEA313937772A4BAB47DA
-:1040200094FFDEE2EB237BBFB04BCB69F3FC5F5226
-:10403000F383ECECD5E6C89F467FBFE8F36385FFCA
-:1040400078679EF7FC504AF70CDC99984BF7CE99AD
-:104050003CDF3EE233CF4B19FC8467514A4FF124D9
-:104060005A7E2AA5F74C5BF04BD137FFD5CFB41F52
-:104070007F03DC4DE081B00C000000000000000078
-:1040800000000018000000000000000000000040D8
-:1040900000000000000000000000002800000000F8
-:1040A0000000000000000010000000000000000000
-:1040B00000000020000000000000000000000010D0
-:1040C00000000000000000000000000800000000E8
-:1040D00000000000000000000000000000000000E0
-:1040E00000000000000000000000000000000000D0
-:1040F00000000000000000000000000000000000C0
-:1041000000000000000000000000000000000000AF
-:10411000000000000000000000000000000000009F
-:10412000000000000000000000000000000000008F
-:10413000000000000000000000000000000000007F
-:10414000000000000000000000000000000000006F
-:10415000000000000000000000000000000000005F
-:10416000000000000000000000000000000000004F
-:10417000000000000000000000000000000000003F
-:10418000000000000000000000000000000000002F
-:10419000000000000000000000000000000000001F
-:1041A000000000000000000000000000000000000F
-:1041B00000000000000000000000000000000000FF
-:1041C00000000000000000000000000000000000EF
-:1041D00000000000000000000000000000000000DF
-:1041E0000000000000000000000033280010000064
-:1041F0000000000800003330001000000000000242
-:1042000000003328001000000000001000003A7881
-:104210000000000000000008800000000000000016
-:10422000000000008000000000000000000000000E
-:1042300080000000000000000000000000003120AD
-:1042400000000000000000080000336000010004CE
-:1042500000000001000033680000000000000002C0
-:1042600000003370000000000000000800003374FC
-:10427000000000000000000200003A700000000092
-:104280000000000800003A4000080000000000089C
-:1042900000003D88004000000000004000003A504F
-:1042A000000800000000000800003A60000800005C
-:1042B0000000000800003A8800C8000000000098D4
-:1042C00000003C18009800000000002800003C5846
-:1042D00000980000000000280000337803600030E0
-:1042E0000000036000003EB0000800000000000174
-:1042F00000003EB10008000000000001000020089E
-:10430000001000000000001000002000000000006D
-:104310000000000880000000000000000000000015
-:10432000800000000000000000000000000000000D
-:10433000000000000000000000000000000000007D
-:10434000000000000000000000000000000000006D
-:10435000800000000000000000000000800000005D
-:1043600000000000000000008000000000000000CD
-:1043700000000000800000000000000000000000BD
-:10438000800000000000000000000000800000002D
-:10439000000000000000000080000000000000009D
-:1043A000000000008000000000000000000000008D
-:1043B00080000000000000000000000080000000FD
-:1043C000000000000000000080000000000000006D
-:1043D000000000008000000000000000000000005D
-:1043E000800000000000000000000000000000004D
-:1043F00000000000000000000000000000000000BD
-:1044000000000000000000000000000000000000AC
-:10441000000000000000000000000000000000009C
-:10442000000000000000000080000000000000000C
-:1044300000000000800000000000000000000000FC
-:1044400080000000000000000000000000000000EC
-:1044500000000000000000008000000000000000DC
-:1044600000000000800000000000000000000000CC
-:1044700080000000000000000000000000000000BC
-:10448000000000000000000000000000000000002C
-:10449000000000000000000000000000000000001C
-:1044A000000000000000000000000000000000000C
-:1044B00000000000000000000000000000000000FC
-:1044C00000000000000012C8008000000000008012
-:1044D000000000010000000000000000000040009B
-:1044E0000490000000000490000019C800000000C3
-:1044F0000000000800004948000800000000000813
-:1045000000004928000800000000000800004938A9
-:104510000008000000000008000020080010000053
-:104520000000001000002000000000000000000853
-:104530000000401004900040000000400000499836
-:104540000008000000000001000049990008000078
-:1045500000000001800000000000000000000000DA
-:10456000800000000000000000000000800000004B
-:1045700000000000000000008000000000000000BB
-:1045800000000000800000000000000000000000AB
-:10459000800000000000000000000000800000001B
-:1045A000000000000000000080000000000000008B
-:1045B000000000008000000000000000000000007B
-:1045C00080000000000000000000000080000000EB
-:1045D000000000000000000080000000000000005B
-:1045E000000000008000000000000000000000004B
-:1045F00000000000000000000000000000000000BB
-:1046000000000000000000000000000000000000AA
-:10461000000000000000000000000000000000009A
-:10462000000000000000000000000000800000000A
-:1046300000000000000000008000000000000000FA
-:10464000000000000000000000000000000000006A
-:10465000800000000000000000000000800000005A
-:1046600000000000000000008000000000000000CA
-:1046700000000000800000000000000000000000BA
-:104680000000400000180000000000180000430077
-:104690000040000000000040000043000040000215
-:1046A0000000000100004301004000020000000083
-:1046B00000003000004000000000004080000000CA
-:1046C0000000000000000000000030000008004072
-:1046D0000000000400003004000800400000000456
-:1046E00000004B00002800000000002800004B5094
-:1046F00000100000000000100000380000800000E2
-:104700000000008000003800000800800000000267
-:1047100000003900002000000000002000002008F8
-:104720000010000000000010000020000000000049
-:104730000000000800005108000800000000000808
-:104740000000512000080000000000080000513067
-:104750000008000000000008000051C00008000030
-:1047600000000001000051C100080000000000012D
-:10477000000039400010000400000004000051D087
-:104780000030001800000010000051D80030001860
-:104790000000000280000000000000000000000097
-:1047A0008000000000000000000000008000000009
-:1047B0000000000000000000800000000000000079
-:1047C0000000000080000000000000000000000069
-:1047D00080000000000000000000000080000000D9
-:1047E0000000000000000000800000000000000049
-:1047F0000000000080000000000000000000000039
-:1048000000000000000000000000000000000000A8
-:104810000000000000000000000000000000000098
-:104820000000000000000000000000000000000088
-:104830008000000000000000000000008000000078
-:104840000000000000000000000000000000000068
-:1048500000000000000023E800800000000000804D
-:10486000000000010000000000000000000020081F
-:1048700000100000000000100000200000000000F8
-:104880000000000800002DA0000800000000000843
-:1048900000002DB80008000000000008000024E817
-:1048A00002D00028000002D000002E5800080000AE
-:1048B0000000000100002E59000800000000000167
-:1048C00000002D900008000000000008800000009B
-:1048D0000000000000000000800000000000000058
-:1048E0000000000080000000000000000000000048
-:1048F00080000000000000000000000080000000B8
-:104900000000000000000000800000000000000027
-:104910000000000080000000000000000000000017
-:104920000000000000000000000000000000000087
-:104930000000000000000000000000000000000077
-:104940000000000000000000000000000000000067
-:104950008000000000000000000000008000000057
-:104960000000000000000000000000000000000047
-:1049700000000000800000000000000000000000B7
-:104980008000000000000000000000008000000027
-:104990000000000000000000800000000000000097
-:1049A000000000000000250000400000000000089A
-:1049B000000025080040000000000028000009C099
-:1049C000012000100000000880000000000000002E
-:1049D0000000000080000000000000000000000057
-:1049E0000000402002D00028000000080000300035
-:1049F00000000000000010000000509900000000BE
-:104A000000000001000050B00000000000000002A3
-:104A1000000045A000900008000000088000000091
-:104A200000000000000000000000296000080000F5
-:104A300000000001000029610008000000000001E2
-:104A4000000029700008000400000002000029781E
-:104A5000000800040000000400002FB0000800005F
-:104A60000000000400002FB4000800000000000453
-:104A700000002FC0000000000000000800002FC848
-:104A800000000000000000080000300000000000EE
-:104A90000000001000005040000100010000000173
-:104AA0000000500000000000000000200000080886
-:104AB00000100000000000040000080C00100000BE
-:104AC00000000001000008B7000000000000000125
-:104AD000000008B600000000000000010000100007
-:104AE000003000180000000400001004003000181E
-:104AF0000000000400001008003000180000000250
-:104B00000000100A00300018000000020000100C25
-:104B100000300018000000010000100D00300018E7
-:104B2000000000010000100E00300018000000011D
-:104B300000001010003000180000000400001014E5
-:104B40000030001800000004000030000100008068
-:104B50000008000400003004010000800008000488
-:104B60000000000A000000000000000000003068A3
-:104B70000100008000000001000030690100008099
-:104B8000000000010000306C010000800000000205
-:104B90000000306E01000080000000020000307054
-:104BA000010000800000000400003074010000805B
-:104BB00000000004000030660100008000000002D8
-:104BC000000030640100008000000001000030603F
-:104BD000010000800000000200003062010000803F
-:104BE00000000002000030500100008000000004BE
-:104BF0000000305401000080000000040000305824
-:104C000001000080000000040000305C0100008012
-:104C1000000000040000307C010000800000000162
-:104C20000000307D010000800000000100001C1821
-:104C3000001000000000000400001C300010000004
-:104C40000000000400001C380010000000000004F8
-:104C50008000000000000000000000008000000054
-:104C600000000000000000008000000000000000C4
-:104C700000000000800000000000000000000000B4
-:104C800000004C10000800000000000200004C1260
-:104C9000000800000000000200004C1400080000A2
-:104CA0000000000400004C20000800000000000884
-:104CB00000004C30004000080000000800004C00DC
-:104CC000000800000000000200004C020008000084
-:104CD0000000000100004C04000800000000000279
-:104CE00000004CD0000800000000000800004CE06C
-:104CF000000800000000000400004CE40008000070
-:104D00000000000100004CF000080000000000025C
-:104D100000004CF4000800000000000200004D00FC
-:104D20000008000000000004000050000010000017
-:104D30000000000400005004001000000000000407
-:104D400000005008001000000000000400001400E3
-:104D5000000800000000000200001402000800002B
-:104D60000000000100001404000800000000000220
-:104D700000001410000800000000000200001414DD
-:104D800000080000000000020000141600080000E7
-:104D900000000002000019B8000800000000000830
-:104DA000000014200008000000000002000014248D
-:104DB0000008000000000002000019C80008000000
-:104DC0000000000800002C10000800000000000196
-:104DD00000002C11000800000000000100002C124F
-:104DE000000800000000000100002C130008000073
-:104DF0000000000100002C0000080000000000027C
-:104E000000002C02000800000000000100002C043B
-:104E1000000800000000000200002C300008000024
-:104E20000000000200002C32000800000000000218
-:104E300000002C34000800000000000200002C20BC
-:104E4000000800000000000100002C210008000004
-:104E50000000000100002C220008000000000001FA
-:104E600000002C23000800000000000100002C249A
-:104E7000000800000000000100002C2500080000D0
-:104E80000000000100002C260008000000000001C6
-:104E900000001400000800000000000200001402DE
-:104EA00000080000000000010000140400080000D9
-:104EB000000000020000141200C0001800000002F0
-:104EC0000000141000C00018000000020000141CB4
-:104ED00000C00018000000080000141400C00018F2
-:104EE000000000080000142700C0001800000001A6
-:104EF0000000142400C00018000000020000142666
-:104F000000C000180000000100001590000800001B
-:104F100000000008000015A00008000000000008C4
-:104F2000000015B00008000000000008800000002C
-:104F300000000000000000008000000000000000F1
-:104F400000000000800000000000000000000000E1
-:104F50008000000000000000000000008000000051
-:104F600000000000000000008000000000000000C1
-:104F700000000000800000000000000000000000B1
-:104F80008000000000000000000000008000000021
-:104F90000000000000000000800000000000000091
-:104FA0000000000080000000000000000000000081
-:104FB00080000000000000000000000080000000F1
-:104FC0000000000000000000800000000000000061
-:104FD0000000000080000000000000000000000051
-:104FE00080000000000000000000000080000000C1
-:104FF0000000000000000000800000000000000031
-:105000000000000080000000000000000000000020
-:105010008000000000000000000000008000000090
-:105020000000000000000000800000000000000000
-:1050300000000000800000000000000000000000F0
-:105040008000000000000000000000008000000060
-:1050500000000000000000008000000000000000D0
-:105060000000000000000000000000000000000040
-:1050700080000000000000000000000000000000B0
-:08508000060209000000000017
-:00000001FF
diff --git a/firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex b/firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex
deleted file mode 100644
index ba1ce53df1d8..000000000000
--- a/firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex
+++ /dev/null
@@ -1,13192 +0,0 @@
-:1000000000004F48000000680000070C00004FB8D7
-:1000100000001ED4000056C800000094000075A027
-:1000200000009F4C00007638000000CC00011588CD
-:100030000000DC5800011658000000940001F2B8DE
-:100040000000400C0001F350000000A400023360E7
-:100050000000F4240002340800000FFC00032830E4
-:100060000000000400033830020400480000000FC4
-:1000700002040054000000450204005C0000000679
-:100080000204007000000004020400780000000078
-:100090000204007C121700000204008022170000F6
-:1000A00002040084321700000604008800000005E6
-:1000B0000204009C12150000020400A0221500009A
-:1000C000020400A432150000060400A80000000489
-:1000D000020400B802100000020400BC001000007E
-:1000E000020400C010100000020400C42010000030
-:1000F000020400C830100000020400CC40100000D0
-:10010000060400D000000003020400DC0010000020
-:10011000020400E012140000020400E422140000B3
-:10012000020400E832140000020400EC4214000053
-:10013000060400F000000003010401240000000098
-:1001400001040128000000000104012C000000004F
-:100150000104013000000000020401D00000890603
-:1001600002040004000000FF02040008000000FF79
-:100170000204000C000000FF02040010000000FF59
-:10018000020400140000007F02040018000000FFB9
-:100190000204001C000000FF02040020000000FF19
-:1001A000020400240000003E0204002800000000B9
-:1001B0000204002C0000003F020400300000003F59
-:1001C000020400340000003F020400380000003F39
-:1001D0000204003C0000003F020400400000003F19
-:1001E000020400440000003F020404CC00000001AF
-:1001F00002042008000002110204200C000002008A
-:10020000020420100000020402042014000002195D
-:100210000204201C0000FFFF020420200000FFFF5A
-:10022000020420240000FFFF020420280000FFFF3A
-:1002300002042038000000200604203C0000001FBB
-:10024000020420B800000001060420BC0000005F8A
-:100250000204223807FFFFFF0204223C0000003F97
-:100260000204224007FFFFFF020422440000000FA7
-:1002700001042248000000000104224C000000009C
-:10028000010422500000000001042254000000007C
-:1002900001042258000000000104225C000000005C
-:1002A000010422600000000001042264000000003C
-:1002B00001042268000000000104226C000000001C
-:1002C00001042270000000000104227400000000FC
-:1002D00001042278000000000104227C00000000DC
-:1002E0000C042000000003E80A04200000000001C4
-:1002F0000B0420000000000A0605400000000D006D
-:100300000205004400000020020500480000003201
-:10031000020500900215002002050094021500203D
-:1003200002050098000000300205009C0810000043
-:10033000020500A000000033020500A40000003008
-:10034000020500A800000031020500AC0000000218
-:10035000020500B000000005020500B40000000620
-:10036000020500B800000002020500BC0000000207
-:10037000020500C000000000020500C400000005E6
-:10038000020500C800000002020500CC00000002C7
-:10039000020500D000000002020500D400000001A8
-:1003A00002050114000000010205011C000000010B
-:1003B0000205012000000002020502040000000105
-:1003C0000205020C0000004002050210000000407F
-:1003D0000205021C0000002002050220000000139C
-:1003E0000205022400000020060502400000000A69
-:1003F00004050280002000000205005000000007F4
-:10040000020500540000000702050058000000002B
-:100410000205005C00000008020500600000000109
-:100420000605006400000003020500D80000000675
-:1004300002050004000000010205000800000001A0
-:100440000205000C00000001020500100000000180
-:100450000205001400000001020500180000000160
-:100460000205001C00000001020500200000000140
-:100470000205002400000001020500280000000120
-:100480000205002C00000001020500300000000100
-:1004900002050034000000010205003800000001E0
-:1004A0000205003C000000010205004000000001C0
-:1004B000020500E00000000D020500E80000000059
-:1004C000020500F000000000020500F80000000036
-:1004D000020500E40000002D020500EC00000020F1
-:1004E000020500F400000020020500FC00000020CE
-:1004F000020500E00000001D020500E800000010F9
-:10050000020500F000000010020500F800000010D5
-:10051000020500E40000003D020500EC0000003090
-:10052000020500F400000030020500FC000000306D
-:10053000020500E00000004D020500E80000004058
-:10054000020500F000000040020500F80000004035
-:10055000020500E40000006D020500EC00000060F0
-:10056000020500F400000060020500FC00000060CD
-:10057000020500E00000005D020500E800000050F8
-:10058000020500F000000050020500F800000050D5
-:10059000020500E40000007D020500EC0000007090
-:1005A000020500F400000070020500FC000000706D
-:1005B0000406100002000020020600DC000000011A
-:1005C000010600D80000000004060200000302201B
-:1005D000020600DC00000000010600B80000000078
-:1005E000010600C8000000000206016C00000000C7
-:1005F000010600BC00000000010600CC0000000065
-:1006000002060170000000000718040000910000BD
-:10061000081807D800050223071C00002BF700006C
-:10062000071C80002DD10AFE071D00002F461673FF
-:10063000071D800016342245081DB13049DA022515
-:100640000118000000000000011800040000000074
-:1006500001180008000000000118000C0000000054
-:100660000118001000000000011800140000000034
-:1006700002180020000000010218002400000002FF
-:1006800002180028000000030218002C00000000DF
-:1006900002180030000000040218003400000001BD
-:1006A00002180038000000000218003C00000001A1
-:1006B000021800400000000402180044000000007E
-:1006C00002180048000000010218004C000000035E
-:1006D0000218005000000000021800540000000141
-:1006E00002180058000000040218005C000000001E
-:1006F00002180060000000010218006400000003FE
-:1007000002180068000000000218006C00000001E0
-:1007100002180070000000040218007400000000BD
-:1007200002180078000000040218007C000000039A
-:100730000618008000000002021800A400003FFF1D
-:10074000021800A8000003FF0218022400000000A5
-:1007500002180234000000000218024C00000000E1
-:10076000021802E4000000FF061810000000040058
-:10077000021B8BC000000001021B8000000000343F
-:10078000021B804000000018021B80800000000C4B
-:10079000021B80C0000000200C1B83000007A1206A
-:1007A0000A1B8300000001380B1B83000000138824
-:1007B0000A1B8340000000000C1B8340000001F472
-:1007C0000B1B834000000005021B83800007A12053
-:1007D000021B83C0000001F4021B14800000000112
-:1007E0000A1B148000000000061A1000000003B36A
-:1007F000041A1ECC00010227061A1ED000000008B1
-:10080000061A2008000000C8061A20000000000296
-:10081000041AAF4000100228061A3718000000041E
-:10082000061A371000000002061A500000000002ED
-:10083000061A500800000004061A501800000004B0
-:10084000061A502800000004061A50380000000460
-:10085000061A504800000004061A50580000000410
-:10086000061A506800000004061A507800000002C2
-:10087000041A52C000020238061A40500000000656
-:10088000041A40680002023A041A40400004023C84
-:10089000041A800000010240061A800400000003D0
-:1008A000041A801000010241061A8014000000039F
-:1008B000041A802000010242061A8024000000036E
-:1008C000041A803000010243061A8034000000033D
-:1008D000041A804000010244061A8044000000030C
-:1008E000041A805000010245061A805400000003DB
-:1008F000041A806000010246061A806400000003AA
-:10090000041A807000010247061A80740000000378
-:10091000041A808000010248061A80840000000347
-:10092000041A809000010249061A80940000000316
-:10093000041A80A00001024A061A80A400000003E5
-:10094000041A80B00001024B061A80B400000003B4
-:10095000041A80C00001024C061A80C40000000383
-:10096000041A80D00001024D061A80D40000000352
-:10097000041A80E00001024E061A80E40000000321
-:10098000041A80F00001024F061A80F400000003F0
-:10099000041A810000010250061A810400000003BD
-:1009A000041A811000010251061A8114000000038C
-:1009B000041A812000010252061A8124000000035B
-:1009C000041A813000010253061A8134000000032A
-:1009D000041A814000010254061A814400000003F9
-:1009E000041A815000010255061A815400000003C8
-:1009F000041A816000010256061A81640000000397
-:100A0000041A817000010257061A81740000000365
-:100A1000041A818000010258061A81840000000334
-:100A2000041A819000010259061A81940000000303
-:100A3000041A81A00001025A061A81A400000003D2
-:100A4000041A81B00001025B061A81B400000003A1
-:100A5000041A81C00001025C061A81C40000000370
-:100A6000041A81D00001025D061A81D4000000033F
-:100A7000041A81E00001025E061A81E4000000030E
-:100A8000041A81F00001025F061A81F400000003DD
-:100A9000041A820000010260061A820400000003AA
-:100AA000041A821000010261061A82140000000379
-:100AB000041A822000010262061A82240000000348
-:100AC000041A823000010263061A82340000000317
-:100AD000041A824000010264061A824400000003E6
-:100AE000041A825000010265061A825400000003B5
-:100AF000041A826000010266061A82640000000384
-:100B0000041A827000010267061A82740000000352
-:100B1000041A828000010268061A82840000000321
-:100B2000041A829000010269061A829400000003F0
-:100B3000041A82A00001026A061A82A400000003BF
-:100B4000041A82B00001026B061A82B4000000038E
-:100B5000041A82C00001026C061A82C4000000035D
-:100B6000041A82D00001026D061A82D4000000032C
-:100B7000041A82E00001026E061A82E400000003FB
-:100B8000041A82F00001026F061A82F400000003CA
-:100B9000041A830000010270061A83040000000397
-:100BA000041A831000010271061A83140000000366
-:100BB000041A832000010272061A83240000000335
-:100BC000041A833000010273061A83340000000304
-:100BD000041A834000010274061A834400000003D3
-:100BE000041A835000010275061A835400000003A2
-:100BF000041A836000010276061A83640000000371
-:100C0000041A837000010277061A8374000000033F
-:100C1000041A838000010278061A8384000000030E
-:100C2000041A839000010279061A839400000003DD
-:100C3000041A83A00001027A061A83A400000003AC
-:100C4000041A83B00001027B061A83B4000000037B
-:100C5000041A83C00001027C061A83C4000000034A
-:100C6000041A83D00001027D061A83D40000000319
-:100C7000041A83E00001027E061A83E400000003E8
-:100C8000041A83F00001027F061A83F400000003B7
-:100C9000041A840000010280061A84040000000384
-:100CA000041A841000010281061A84140000000353
-:100CB000041A842000010282061A84240000000322
-:100CC000041A843000010283061A843400000003F1
-:100CD000041A844000010284061A844400000003C0
-:100CE000041A845000010285061A8454000000038F
-:100CF000041A846000010286061A8464000000035E
-:100D0000041A847000010287061A8474000000032C
-:100D1000041A848000010288061A848400000003FB
-:100D2000041A849000010289061A849400000003CA
-:100D3000041A84A00001028A061A84A40000000399
-:100D4000041A84B00001028B061A84B40000000368
-:100D5000041A84C00001028C061A84C40000000337
-:100D6000041A84D00001028D061A84D40000000306
-:100D7000041A84E00001028E061A84E400000003D5
-:100D8000041A84F00001028F061A84F400000003A4
-:100D9000041A850000010290061A85040000000371
-:100DA000041A851000010291061A85140000000340
-:100DB000041A852000010292061A8524000000030F
-:100DC000041A853000010293061A853400000003DE
-:100DD000041A854000010294061A854400000003AD
-:100DE000041A855000010295061A8554000000037C
-:100DF000041A856000010296061A8564000000034B
-:100E0000041A857000010297061A85740000000319
-:100E1000041A858000010298061A858400000003E8
-:100E2000041A859000010299061A859400000003B7
-:100E3000041A85A00001029A061A85A40000000386
-:100E4000041A85B00001029B061A85B40000000355
-:100E5000041A85C00001029C061A85C40000000324
-:100E6000041A85D00001029D061A85D400000003F3
-:100E7000041A85E00001029E061A85E400000003C2
-:100E8000041A85F00001029F061A85F40000000391
-:100E9000041A8600000102A0061A8604000000035E
-:100EA000041A8610000102A1061A8614000000032D
-:100EB000041A8620000102A2061A862400000003FC
-:100EC000041A8630000102A3061A863400000003CB
-:100ED000041A8640000102A4061A8644000000039A
-:100EE000041A8650000102A5061A86540000000369
-:100EF000041A8660000102A6061A86640000000338
-:100F0000041A8670000102A7061A86740000000306
-:100F1000041A8680000102A8061A868400000003D5
-:100F2000041A8690000102A9061A869400000003A4
-:100F3000041A86A0000102AA061A86A40000000373
-:100F4000041A86B0000102AB061A86B40000000342
-:100F5000041A86C0000102AC061A86C40000000311
-:100F6000041A86D0000102AD061A86D400000003E0
-:100F7000041A86E0000102AE061A86E400000003AF
-:100F8000041A86F0000102AF061A86F4000000037E
-:100F9000041A8700000102B0061A8704000000034B
-:100FA000041A8710000102B1061A8714000000031A
-:100FB000041A8720000102B2061A872400000003E9
-:100FC000041A8730000102B3061A873400000003B8
-:100FD000041A8740000102B4061A87440000000387
-:100FE000041A8750000102B5061A87540000000356
-:100FF000041A8760000102B6061A87640000000325
-:10100000041A8770000102B7061A877400000003F3
-:10101000041A8780000102B8061A878400000003C2
-:10102000041A8790000102B9061A87940000000391
-:10103000041A87A0000102BA061A87A40000000360
-:10104000041A87B0000102BB061A87B4000000032F
-:10105000041A87C0000102BC061A87C400000003FE
-:10106000041A87D0000102BD061A87D400000003CD
-:10107000041A87E0000102BE061A87E4000000039C
-:10108000041A87F0000102BF061A87F4000000036B
-:10109000041A8800000102C0061A88040000000338
-:1010A000041A8810000102C1061A88140000000307
-:1010B000041A8820000102C2061A882400000003D6
-:1010C000041A8830000102C3061A883400000003A5
-:1010D000041A8840000102C4061A88440000000374
-:1010E000041A8850000102C5061A88540000000343
-:1010F000041A8860000102C6061A88640000000312
-:10110000041A8870000102C7061A887400000003E0
-:10111000041A8880000102C8061A888400000003AF
-:10112000041A8890000102C9061A8894000000037E
-:10113000041A88A0000102CA061A88A4000000034D
-:10114000041A88B0000102CB061A88B4000000031C
-:10115000041A88C0000102CC061A88C400000003EB
-:10116000041A88D0000102CD061A88D400000003BA
-:10117000041A88E0000102CE061A88E40000000389
-:10118000041A88F0000102CF061A88F40000000358
-:10119000041A8900000102D0061A89040000000325
-:1011A000041A8910000102D1061A891400000003F4
-:1011B000041A8920000102D2061A892400000003C3
-:1011C000041A8930000102D3061A89340000000392
-:1011D000041A8940000102D4061A89440000000361
-:1011E000041A8950000102D5061A89540000000330
-:1011F000041A8960000102D6061A896400000003FF
-:10120000041A8970000102D7061A897400000003CD
-:10121000041A8980000102D8061A8984000000039C
-:10122000041A8990000102D9061A8994000000036B
-:10123000041A89A0000102DA061A89A4000000033A
-:10124000041A89B0000102DB061A89B40000000309
-:10125000041A89C0000102DC061A89C400000003D8
-:10126000041A89D0000102DD061A89D400000003A7
-:10127000041A89E0000102DE061A89E40000000376
-:10128000041A89F0000102DF061A89F40000000345
-:10129000041A8A00000102E0061A8A040000000312
-:1012A000041A8A10000102E1061A8A1400000003E1
-:1012B000041A8A20000102E2061A8A2400000003B0
-:1012C000041A8A30000102E3061A8A34000000037F
-:1012D000041A8A40000102E4061A8A44000000034E
-:1012E000041A8A50000102E5061A8A54000000031D
-:1012F000041A8A60000102E6061A8A6400000003EC
-:10130000041A8A70000102E7061A8A7400000003BA
-:10131000041A8A80000102E8061A8A840000000389
-:10132000041A8A90000102E9061A8A940000000358
-:10133000041A8AA0000102EA061A8AA40000000327
-:10134000041A8AB0000102EB061A8AB400000003F6
-:10135000041A8AC0000102EC061A8AC400000003C5
-:10136000041A8AD0000102ED061A8AD40000000394
-:10137000041A8AE0000102EE061A8AE40000000363
-:10138000041A8AF0000102EF061A8AF40000000332
-:10139000041A8B00000102F0061A8B0400000003FF
-:1013A000041A8B10000102F1061A8B1400000003CE
-:1013B000041A8B20000102F2061A8B24000000039D
-:1013C000041A8B30000102F3061A8B34000000036C
-:1013D000041A8B40000102F4061A8B44000000033B
-:1013E000041A8B50000102F5061A8B54000000030A
-:1013F000041A8B60000102F6061A8B6400000003D9
-:10140000041A8B70000102F7061A8B7400000003A7
-:10141000041A8B80000102F8061A8B840000000376
-:10142000041A8B90000102F9061A8B940000000345
-:10143000041A8BA0000102FA061A8BA40000000314
-:10144000041A8BB0000102FB061A8BB400000003E3
-:10145000041A8BC0000102FC061A8BC400000003B2
-:10146000041A8BD0000102FD061A8BD40000000381
-:10147000041A8BE0000102FE061A8BE40000000350
-:10148000041A8BF0000102FF061A8BF4000000031F
-:10149000041A8C0000010300061A8C0400000003EB
-:1014A000041A8C1000010301061A8C1400000003BA
-:1014B000041A8C2000010302061A8C240000000389
-:1014C000041A8C3000010303061A8C340000000358
-:1014D000041A8C4000010304061A8C440000000327
-:1014E000041A8C5000010305061A8C5400000003F6
-:1014F000041A8C6000010306061A8C6400000003C5
-:10150000041A8C7000010307061A8C740000000393
-:10151000041A8C8000010308061A8C840000000362
-:10152000041A8C9000010309061A8C940000000331
-:10153000041A8CA00001030A061A8CA40000000300
-:10154000041A8CB00001030B061A8CB400000003CF
-:10155000041A8CC00001030C061A8CC4000000039E
-:10156000041A8CD00001030D061A8CD4000000036D
-:10157000041A8CE00001030E061A8CE4000000033C
-:10158000041A8CF00001030F061A8CF4000000030B
-:10159000041A8D0000010310061A8D0400000003D8
-:1015A000041A8D1000010311061A8D1400000003A7
-:1015B000041A8D2000010312061A8D240000000376
-:1015C000041A8D3000010313061A8D340000000345
-:1015D000041A8D4000010314061A8D440000000314
-:1015E000041A8D5000010315061A8D5400000003E3
-:1015F000041A8D6000010316061A8D6400000003B2
-:10160000041A8D7000010317061A8D740000000380
-:10161000041A8D8000010318061A8D84000000034F
-:10162000041A8D9000010319061A8D94000000031E
-:10163000041A8DA00001031A061A8DA400000003ED
-:10164000041A8DB00001031B061A8DB400000003BC
-:10165000041A8DC00001031C061A8DC4000000038B
-:10166000041A8DD00001031D061A8DD4000000035A
-:10167000041A8DE00001031E061A8DE40000000329
-:10168000041A8DF00001031F061A8DF400000003F8
-:10169000041A8E0000010320061A8E0400000003C5
-:1016A000041A8E1000010321061A8E140000000394
-:1016B000041A8E2000010322061A8E240000000363
-:1016C000041A8E3000010323061A8E340000000332
-:1016D000041A8E4000010324061A8E440000000301
-:1016E000041A8E5000010325061A8E5400000003D0
-:1016F000041A8E6000010326061A8E64000000039F
-:10170000041A8E7000010327061A8E74000000036D
-:10171000041A8E8000010328061A8E84000000033C
-:10172000041A8E9000010329061A8E94000000030B
-:10173000041A8EA00001032A061A8EA400000003DA
-:10174000041A8EB00001032B061A8EB400000003A9
-:10175000041A8EC00001032C061A8EC40000000378
-:10176000041A8ED00001032D061A8ED40000000347
-:10177000041A8EE00001032E061A8EE40000000316
-:10178000041A8EF00001032F061A8EF400000003E5
-:10179000041A8F0000010330061A8F0400000003B2
-:1017A000041A8F1000010331061A8F140000000381
-:1017B000041A8F2000010332061A8F240000000350
-:1017C000041A8F3000010333061A8F34000000031F
-:1017D000041A8F4000010334061A8F4400000003EE
-:1017E000041A8F5000010335061A8F5400000003BD
-:1017F000041A8F6000010336061A8F64000000038C
-:10180000041A8F7000010337061A8F74000000035A
-:10181000041A8F8000010338061A8F840000000329
-:10182000041A8F9000010339061A8F9400000003F8
-:10183000041A8FA00001033A061A8FA400000003C7
-:10184000041A8FB00001033B061A8FB40000000396
-:10185000041A8FC00001033C061A8FC40000000365
-:10186000041A8FD00001033D061A8FD40000000334
-:10187000041A8FE00001033E061A8FE400000007FF
-:10188000041A62C00020033F061AD0000000007254
-:10189000061AD24800000010061AD6B00000002038
-:1018A000061AD47000000090061AD46800000002E6
-:1018B000061AA000000001C4061A30000000001043
-:1018C000061A308000000010061A310000000010D7
-:1018D000061A318000000010061A330000000012C2
-:1018E000061A339000000070061AD4580000000257
-:1018F000061AD34800000002061AD3580000002040
-:10190000061AA710000001C4061A3040000000109B
-:10191000061A30C000000010061A31400000001006
-:10192000061A31C000000010061A334800000012E9
-:10193000061A355000000070061AD460000000023C
-:10194000061AD35000000002061AD3D80000002067
-:10195000021AAE2000000000061A5000000000022B
-:10196000061A508000000012041A40000002035FB3
-:10197000041A63C000020361061A7000000000042C
-:10198000061A320000000008021AAE24000000000F
-:10199000061A501000000002061A50C8000000127B
-:1019A000041A400800020363041A63C800020365B6
-:1019B000061A701000000004061A32200000000809
-:1019C000021AAE2800000000061A50200000000293
-:1019D000061A511000000012041A4010000203679A
-:1019E000041A63D000020369061A70200000000484
-:1019F000061A324000000008021AAE2C0000000057
-:101A0000061A503000000002061A51580000001259
-:101A1000041A40180002036B041A63D80002036D15
-:101A2000061A703000000004061A32600000000838
-:101A3000021AAE3000000000061A504000000002FA
-:101A4000061A51A000000012041A40200002036F81
-:101A5000041A63E000020371061A704000000004DB
-:101A6000061A328000000008021AAE34000000009E
-:101A7000061A505000000002061A51E80000001239
-:101A8000041A402800020373041A63E80002037575
-:101A9000061A705000000004061A32A00000000868
-:101AA000021AAE3800000000061A50600000000262
-:101AB000061A523000000012041A40300002037768
-:101AC000041A63F000020379061A70600000000433
-:101AD000061A32C000000008021AAE3C00000000E6
-:101AE000061A507000000002061A52780000001218
-:101AF000041A40380002037B041A63F80002037DD5
-:101B0000061A707000000004061A32E00000000897
-:101B10000200A468000B01C80200A294071D29114D
-:101B20000200A298000000000200A29C009C042475
-:101B30000200A2A0000000000200A2A4000002090E
-:101B40000200A270000000000200A2740000000069
-:101B50000200A270000000000200A2740000000059
-:101B60000200A270000000000200A2740000000049
-:101B70000200A270000000000200A2740000000039
-:101B8000020160A000000001020160A400000262E6
-:101B9000020160A800000002020160AC0000001811
-:101BA0000201620400000001020100B40000000113
-:101BB000020100B800000001020100DC0000000189
-:101BC0000201010000000001020101040000000107
-:101BD0000201007C003000000201008400000028A7
-:101BE0000201008C0000000002010130000000042E
-:101BF0000201025C00000001020103280000000055
-:101C0000020160580000FFFF020160700000000741
-:101C10000201608000000001020105540000003054
-:101C2000020100C400000001020100CC000000011C
-:101C3000020100F800000001020100F000000001B4
-:101C4000020100800030000002010088000000282E
-:101C500002010090000000000201013400000004B5
-:101C6000020102DC000000010201032C0000000060
-:101C70000201605C0000FFFF0201607400000007C9
-:101C800002016084000000010201056400000030D0
-:101C9000020100C800000001020100D000000001A4
-:101CA000020100FC00000001020100F4000000013C
-:101CB000020C100000000028020C20080000021195
-:101CC000020C200C00000200020C20100000020494
-:101CD000020C201C0000FFFF020C20200000FFFF70
-:101CE000020C20240000FFFF020C20280000FFFF50
-:101CF000020C203800000020020C203C00000021D3
-:101D0000020C204000000022020C204400000023AE
-:101D1000020C204800000024020C204C000000258A
-:101D2000020C205000000026020C20540000002766
-:101D3000020C205800000028020C205C0000002942
-:101D4000020C20600000002A020C20640000002B1E
-:101D5000020C20680000002C020C206C0000002DFA
-:101D6000020C20700000002E020C20740000002FD6
-:101D7000020C207800000010060C207C00000007F8
-:101D8000020C209800000011020C209C00000012A0
-:101D9000020C20A000000013060C20A40000001D6F
-:101DA000020C211800000001020C211C000000019F
-:101DB000020C212000000001060C21240000001D5F
-:101DC000020C219800000001060C219C0000000775
-:101DD000020C21B800000001020C21BC000000012F
-:101DE000020C21C000000001020C21C4000000010F
-:101DF000020C21C800000001020C21CC00000001EF
-:101E0000020C21D000000001020C21D400000001CE
-:101E1000020C21D800000001020C21DC00000001AE
-:101E2000020C21E000000001020C21E4000000018E
-:101E3000020C21E800000001020C21EC000000016E
-:101E4000020C21F000000001020C21F4000000014E
-:101E5000020C21F800000001060C21FC0000000724
-:101E6000020C221800000001060C221C00000007D2
-:101E7000020C223807FFFFFF020C223C0000003F4B
-:101E8000020C224007FFFFFF020C22440000000F5B
-:101E9000010C224800000000010C224C0000000050
-:101EA000010C225000000000010C22540000000030
-:101EB000010C225800000000010C225C0000000010
-:101EC000010C226000000000010C226400000000F0
-:101ED000010C226800000000010C226C00000000D0
-:101EE000010C227000000000010C227400000000B0
-:101EF000010C227800000000010C227C0000000090
-:101F00000C0C2000000003E80A0C20000000000177
-:101F10000B0C20000000000A020C40080000101109
-:101F2000020C400C00001000020C401000001004D5
-:101F3000020C401400001021020C401C0000FFFFA6
-:101F4000020C40200000FFFF020C40240000FFFFB5
-:101F5000020C40280000FFFF020C40380000004641
-:101F6000020C403C00000010060C40400000000243
-:101F7000020C404800000018020C404C000000F029
-:101F8000060C40500000001F020C40CC0000000175
-:101F9000060C40D00000003A020C41B800000001DD
-:101FA000060C41BC00000003020C41C80000000107
-:101FB000020C41CC00000001060C41D00000001AC8
-:101FC000020C423807FFFFFF020C423C0000003FBA
-:101FD000020C424007FFFFFF020C42440000000FCA
-:101FE000010C424800000000010C424C00000000BF
-:101FF000010C425000000000010C4254000000009F
-:10200000010C425800000000010C425C000000007E
-:10201000010C426000000000010C4264000000005E
-:10202000010C426800000000010C426C000000003E
-:10203000010C427000000000010C4274000000001E
-:10204000010C427800000000010C427C00000000FE
-:10205000010C4280000000000C0C4000000003E86E
-:102060000A0C4000000000010B0C40000000000AB8
-:10207000060D400000000A00020D0044000000327E
-:10208000020D008C02150020020D009002150020A8
-:10209000020D009408100000020D009800000033AB
-:1020A000020D009C00000002020D00A000000000D4
-:1020B000020D00A400000005020D00A800000005AC
-:1020C000060D00AC00000002020D00B4000000028A
-:1020D000020D00B800000003020D00BC0000000269
-:1020E000020D00C000000001020D00C80000000247
-:1020F000020D00CC00000002020D015C0000000196
-:10210000020D016400000001020D016800000002E0
-:10211000020D020400000001020D020C000000206C
-:10212000020D021000000040020D021400000040E9
-:10213000020D022000000003020D0224000000181E
-:10214000060D028000000012040D03000018037F3A
-:10215000060D03600000000C020D004C00000001A1
-:10216000020D005000000002020D005400000000AB
-:10217000020D005800000008060D005C000000047D
-:10218000020D00C400000004020D00040000000164
-:10219000020D000800000001020D000C000000010B
-:1021A000020D001000000001020D001400000001EB
-:1021B000020D001800000001020D001C00000001CB
-:1021C000020D002000000001020D002400000001AB
-:1021D000020D002800000001020D002C000000018B
-:1021E000020D003000000001020D0034000000016B
-:1021F000020D003800000001020D003C000000014B
-:10220000020D011400000009020D011C0000000A6B
-:10221000020D012400000000020D012C000000004E
-:10222000020D013400000000020D013C0000000B13
-:10223000020D014400000000020D011800000029F9
-:10224000020D01200000002A020D012800000020DC
-:10225000020D013000000020020D013800000020B6
-:10226000020D01400000002B020D0148000000207B
-:10227000020D011400000019020D011C0000001ADB
-:10228000020D012400000010020D012C00000010BE
-:10229000020D013400000010020D013C0000001B83
-:1022A000020D014400000010020D01180000003969
-:1022B000020D01200000003A020D0128000000304C
-:1022C000020D013000000030020D01380000003026
-:1022D000020D01400000003B020D014800000030EB
-:1022E000020D011400000049020D011C0000004A0B
-:1022F000020D012400000040020D012C00000040EE
-:10230000020D013400000040020D013C0000004BB2
-:10231000020D014400000040020D01180000006998
-:10232000020D01200000006A020D0128000000607B
-:10233000020D013000000060020D01380000006055
-:10234000020D01400000006B020D0148000000601A
-:10235000020D011400000059020D011C0000005A7A
-:10236000020D012400000050020D012C000000505D
-:10237000020D013400000050020D013C0000005B22
-:10238000020D014400000050020D01180000007908
-:10239000020D01200000007A020D012800000070EB
-:1023A000020D013000000070020D013800000070C5
-:1023B000020D01400000007B020D0148000000708A
-:1023C000060E200000000800020E004C0000003243
-:1023D000020E009402150020020E00980215002043
-:1023E000020E009C00000030020E00A00810000049
-:1023F000020E00A400000033020E00A8000000300E
-:10240000020E00AC00000031020E00B0000000021D
-:10241000020E00B400000004020E00B8000000002C
-:10242000020E00BC00000002020E00C0000000020C
-:10243000020E00C400000000020E00C800000002EE
-:10244000020E00CC00000007020E00D000000002C7
-:10245000020E00D400000002020E00D800000001AD
-:10246000020E014400000001020E014C00000001B8
-:10247000020E015000000002020E020400000001E2
-:10248000020E020C00000040020E0210000000408C
-:10249000020E021C00000004020E022000000020B8
-:1024A000020E02240000000E020E02280000001B93
-:1024B000060E030000000012040E0280001B0397AA
-:1024C000060E02EC00000005020E00540000000C95
-:1024D000020E00580000000C020E005C000000001C
-:1024E000020E006000000010020E006400000010E8
-:1024F000060E006800000003020E00DC000000036E
-:10250000020E000400000001020E0008000000019D
-:10251000020E000C00000001020E0010000000017D
-:10252000020E001400000001020E0018000000015D
-:10253000020E001C00000001020E0020000000013D
-:10254000020E002400000001020E0028000000011D
-:10255000020E002C00000001020E003000000001FD
-:10256000020E003400000001020E003800000001DD
-:10257000020E003C00000001020E004000000001BD
-:10258000020E004400000001020E01100000000FC6
-:10259000020E011800000000020E012000000000E1
-:1025A000020E012800000000020E01140000002F9E
-:1025B000020E011C00000020020E01240000000099
-:1025C000020E012C00000000020E01100000001F8E
-:1025D000020E011800000010020E01200000000091
-:1025E000020E012800000000020E01140000003F4E
-:1025F000020E011C00000030020E01240000000049
-:10260000020E012C00000000020E01100000004F1D
-:10261000020E011800000040020E01200000000020
-:10262000020E012800000000020E01140000006FDD
-:10263000020E011C00000060020E012400000000D8
-:10264000020E012C00000000020E01100000005FCD
-:10265000020E011800000050020E012000000000D0
-:10266000020E012800000000020E01140000007F8D
-:10267000020E011C00000070020E01240000000088
-:10268000020E012C000000000730040000C9000009
-:10269000083007D8000503B207340000332B0000D0
-:1026A0000734800030A40CCB07350000351A18F52C
-:1026B000073580002A8A263C0736000018D830DF0C
-:1026C00008364630373A03B40130000000000000FD
-:1026D000013000040000000001300008000000008C
-:1026E0000130000C0000000001300010000000006C
-:1026F0000130001400000000023000200000000142
-:102700000230002400000002023000280000000314
-:102710000230002C000000000230003000000004F5
-:1027200002300034000000010230003800000000D8
-:102730000230003C000000010230004000000004B4
-:102740000230004400000000023000480000000198
-:102750000230004C00000003023000500000000076
-:102760000230005400000001023000580000000454
-:102770000230005C00000000023000600000000138
-:102780000230006400000003023000680000000016
-:102790000230006C000000010230007000000004F4
-:1027A00002300074000000000230007800000004D5
-:1027B0000230007C000000030630008000000002B0
-:1027C000023000A400003FFF023000A8000003FF19
-:1027D0000230022400000000023002340000000039
-:1027E0000230024C00000000023002E40000FFFF53
-:1027F000063020000000080002338BC000000001FA
-:10280000023380000000001A023380400000004EB6
-:102810000233808000000010023380C000000020DE
-:102820000C3383000007A1200A3383000000013825
-:102830000B338300000013880A338340000000003C
-:102840000C338340000001F40B338340000000058B
-:10285000023383800007A120023383C0000001F40B
-:1028600002331480000000010A33148000000000CD
-:10287000063280000000010206322008000000C875
-:10288000063220000000000204328EA0001003B6C1
-:1028900006323EB00000000606323ED800000002BC
-:1028A00006323E800000000A04323EA8000203C641
-:1028B00006323E00000000200632500000000400F6
-:1028C0000632400000000004043274C0000203C855
-:1028D00006324110000000020632D0000000003035
-:1028E0000632DD40000000440632DA00000000D06D
-:1028F0000632DEA0000000020632E0000000080000
-:1029000006328450000001180632100000000188D1
-:102910000632500000000020063251000000002066
-:102920000632520000000020063253000000002052
-:10293000063254000000002006325500000000203E
-:10294000063256000000002006325700000000202A
-:102950000632580000000020063259000000002016
-:1029600006325A000000002006325B000000002002
-:1029700006325C000000002006325D0000000020EE
-:1029800006325E000000002006325F0000000020DA
-:1029900006328DF00000000204328E00000203CAED
-:1029A00006328E08000000020632DE9000000002AF
-:1029B00006321C4000000038063288B000000118C2
-:1029C00006321620000001880632508000000020E8
-:1029D00006325180000000200632528000000020A4
-:1029E0000632538000000020063254800000002090
-:1029F000063255800000002006325680000000207C
-:102A00000632578000000020063258800000002067
-:102A1000063259800000002006325A800000002053
-:102A200006325B800000002006325C80000000203F
-:102A300006325D800000002006325E80000000202B
-:102A400006325F800000002006328DF80000000290
-:102A500004328E10000203CC06328E1800000002F1
-:102A60000632DE980000000206321D200000003809
-:102A700002328D50000000000632401000000002BB
-:102A800002328D5400000000063240200000000297
-:102A900002328D5800000000063240300000000273
-:102AA00002328D5C0000000006324040000000024F
-:102AB00002328D600000000006324050000000022B
-:102AC00002328D6400000000063240600000000207
-:102AD00002328D68000000000632407000000002E3
-:102AE00002328D6C000000000632408000000002BF
-:102AF000072004000091000008200780001003CE8A
-:102B0000072400002AFF00000724800015090AC0DE
-:102B10000824A9F0692803D001200000000000006B
-:102B20000120000400000000012000080000000057
-:102B30000120000C00000000012000100000000037
-:102B4000012000140000000002200020000000010D
-:102B500002200024000000020220002800000003E0
-:102B60000220002C000000000220003000000004C1
-:102B700002200034000000010220003800000000A4
-:102B80000220003C00000001022000400000000480
-:102B90000220004400000000022000480000000164
-:102BA0000220004C00000003022000500000000042
-:102BB0000220005400000001022000580000000420
-:102BC0000220005C00000000022000600000000104
-:102BD00002200064000000030220006800000000E2
-:102BE0000220006C000000010220007000000004C0
-:102BF00002200074000000000220007800000004A1
-:102C00000220007C0000000306200080000000027B
-:102C1000022000A400003FFF022000A8000003FFE4
-:102C20000220022400000000022002340000000004
-:102C30000220024C00000000022002E40000FFFF1E
-:102C4000062020000000080002238BC000000001C5
-:102C500002238000000000100223804000000012C8
-:102C60000223808000000030022380C00000000E9C
-:102C70000C2383000007A1200A23830000000138F1
-:102C80000B238300000013880A2383400000000008
-:102C90000C238340000001F40B2383400000000557
-:102CA000022383800007A120022383C0000001F4D7
-:102CB00002231480000000010A2314800000000099
-:102CC000062210000000004206222008000000C872
-:102CD00006222000000000020622B000000000C60C
-:102CE0000422B318000503D20622B32C0000000B07
-:102CF0000422B358000503D70622B36C0000000B72
-:102D00000422B398000503DC0622B3AC0000000BDC
-:102D10000422B3D8000503E10622B3EC0000000B47
-:102D20000422B418000503E60622B42C0000000BB0
-:102D30000422B458000503EB0622B46C0000000B1B
-:102D40000422B498000503F00622B4AC0000000B86
-:102D50000422B4D8000503F50622B4EC0000000BF1
-:102D60000422B518000503FA0622B52C0000000B5A
-:102D70000422B558000503FF0622B56C0000000BC5
-:102D80000422B598000504040622B5AC0000000B2F
-:102D90000422B5D8000504090622B5EC0000000B9A
-:102DA0000422B6180005040E0622B62C0000000B03
-:102DB0000422B658000504130622B66C0000000B6E
-:102DC0000422B698000504180622B6AC0000000BD9
-:102DD0000422B6D80005041D0622B6EC0000000B44
-:102DE0000422B718000504220622B72C0000000BAD
-:102DF0000422B758000504270622B76C0000000B18
-:102E00000422B7980005042C0622B7AC0000000B82
-:102E10000422B7D8000504310622B7EC0000000BED
-:102E20000422B818000504360622B82C0000000B56
-:102E30000422B8580005043B0622B86C0000000BC1
-:102E40000422B898000504400622B8AC0000000B2C
-:102E50000422B8D8000504450622B8EC0000000B97
-:102E60000422B9180005044A0622B92C0000000B00
-:102E70000422B9580005044F0622B96C0000000B6B
-:102E80000422B998000504540622B9AC0000000BD6
-:102E90000422B9D8000504590622B9EC0000000B41
-:102EA0000422BA180005045E0622BA2C0000000BAA
-:102EB0000422BA58000504630622BA6C0000000B15
-:102EC0000422BA98000504680622BAAC0000000B80
-:102ED0000422BAD80005046D0622BAEC00000005F1
-:102EE0000622BB00000000530422BC4C0001047207
-:102EF0000622BC50000000030422BC5C00010473E5
-:102F00000622BC60000000030422BC6C00010474B3
-:102F10000622BC70000000030422BC7C0001047582
-:102F20000622BC80000000030422BC8C0001047651
-:102F30000622BC90000000030422BC9C0001047720
-:102F40000622BCA0000000030422BCAC00010478EF
-:102F50000622BCB0000000030422BCBC00010479BE
-:102F60000622880000000100062280000000020006
-:102F7000042212700010047A06223000000000C003
-:102F800006226700000001000622900000000400F5
-:102F900004226B080020048A022212C0FFFFFFFFF8
-:102FA000062211E800000002062212C800000009F3
-:102FB000062212EC0000000906228C000000000826
-:102FC0000222114800000000062213200000000623
-:102FD000062233000000000206226040000000309C
-:102FE00006228C20000000080222114C0000000084
-:102FF00006221338000000060622330800000002F3
-:10300000062261000000003006228C40000000080B
-:10301000022211500000000006221350000000069A
-:103020000622331000000002062261C000000030BA
-:1030300006228C60000000080222115400000000EB
-:103040000622136800000006062233180000000262
-:10305000062262800000003006228C8000000008FA
-:103060000222115800000000062213800000000612
-:1030700006223320000000020622634000000030D8
-:1030800006228CA0000000080222115C0000000053
-:1030900006221398000000060622332800000002D2
-:1030A000062264000000003006228CC000000008E8
-:1030B0000222116000000000062213B0000000068A
-:1030C0000622333000000002062264C000000030F7
-:1030D00006228CE0000000080222116400000000BB
-:1030E000062213C800000006062233380000000242
-:1030F0000622658000000030021610000000002843
-:1031000002170008000000020217002C0000000354
-:103110000217003C000000040217004800000002F3
-:103120000217004C000000900217005000000090B1
-:103130000217005400800090021700580810000089
-:10314000021700600000008A02170064000000807F
-:1031500002170068000000810217006C0000008068
-:10316000021700700000000602170078000007D068
-:103170000217007C0000076C02170038007C100466
-:10318000021700040000000F061640240000000291
-:10319000021640700000001C0216420800000001E8
-:1031A0000216421000000001021642200000000139
-:1031B0000216422800000001021642300000000101
-:1031C00002164238000000010216426000000002B0
-:1031D0000C16401C0003D0900A16401C0000009CF6
-:1031E0000B16401C000009C4021640300000000805
-:1031F000021640340000000C021640380000001097
-:1032000002164044000000200216400000000001A9
-:10321000021640D80000000102164008000000011C
-:103220000216400C000000010216401000000001D0
-:103230000216424000000000021642480000000052
-:103240000616427000000002021642500000000004
-:1032500002164258000000000616428000000002DC
-:1032600002166008000012240216600C0000121002
-:1032700002166010000012140216601C0000FFFF0E
-:10328000021660200000FFFF021660240000FFFF0E
-:10329000021660280000FFFF0216603800000020C0
-:1032A0000216603C0000002006166040000000028C
-:1032B00002166048000000230216604C0000002443
-:1032C000021660500000002502166054000000261F
-:1032D00002166058000000270216605C00000029FA
-:1032E000021660600000002A021660640000002BD5
-:1032F000021660680000002C0216606C0000002DB1
-:1033000002166070000000EC0216607400000011EC
-:1033100002166078000000120616607C0000000FA4
-:10332000021660B800000001021660BC0000000137
-:10333000061660C00000000C021660F000000001DC
-:10334000061660F400000031021661B800000001AA
-:10335000061661BC0000000D021661F000000001BD
-:10336000061661F4000000110216623807FFFFFF25
-:103370000216623C0000003F0216624007FFFFFF9A
-:10338000021662440000000F0116624800000000AF
-:103390000116624C0000000001166250000000009F
-:1033A000011662540000000001166258000000007F
-:1033B0000116625C0000000001166260000000005F
-:1033C000011662640000000001166268000000003F
-:1033D0000116626C0000000001166270000000001F
-:1033E00001166274000000000116627800000000FF
-:1033F0000116627C000000000C166000000003E86B
-:103400000A166000000000010B1660000000000AB0
-:1034100002168040000000060216804400000005ED
-:10342000021680480000000A0216804C00000005C9
-:103430000216805400000002021680CC0000000436
-:10344000021680D000000004021680D400000004A0
-:10345000021680D800000004021680DC0000000480
-:10346000021680E000000004021680E40000000460
-:10347000021680E800000004021688040000000420
-:10348000021680300000007C021680340000003DEF
-:10349000021680380000003F0216803C0000009CAD
-:1034A000021680F000000007061680F400000005F8
-:1034B0000216880C010101010216810800000000BB
-:1034C0000216810C000000040216811000000004A6
-:1034D0000216811400000002021688100801200460
-:1034E00002168118000000050216811C000000056C
-:1034F000021681200000000502168124000000054C
-:103500000216882C200810010216812800000008ED
-:103510000216812C00000006021681300000000710
-:1035200002168134000000000216883001010120DB
-:1035300006168138000000040216883401010101DA
-:1035400002168148000000000216814C00000004B1
-:10355000021681500000000402168154000000028F
-:103560000216883808012004021681580000000560
-:103570000216815C00000005021681600000000553
-:1035800002168164000000050216883C2008100124
-:1035900002168168000000080216816C0000000617
-:1035A00002168170000000070216817400000001FD
-:1035B00002168840010101200216817800000001F6
-:1035C0000216817C000000010216818000000001CB
-:1035D00002168184000000010216884401010101E5
-:1035E00002168188000000010216818C0000000490
-:1035F000021681900000000402168194000000026F
-:10360000021688480801200402168198000000056F
-:103610000216819C00000005021681A00000000532
-:10362000021681A40000000502168814200810016B
-:10363000021681A800000008021681AC00000006F6
-:10364000021681B000000007021681B400000001DC
-:103650000216881801010120021681B8000000013D
-:10366000021681BC00000001021681C000000001AA
-:10367000021681C4000000010216881C010101012C
-:10368000021681C800000001021681CC000000046F
-:10369000021681D000000004021681D4000000024E
-:1036A0000216882008012004021681D800000005B7
-:1036B000021681DC00000005021681E00000000512
-:1036C000021681E40000000502168824200810017B
-:1036D000021681E800000008021681EC00000006D6
-:1036E000021681F0000000070216E40C0000000042
-:1036F00002168828010101200616E41000000004CB
-:103700000216E000010101010216E42000000000A1
-:103710000216E424000000040216E428000000045D
-:103720000216E42C000000020216E0040801200446
-:103730000216E430000000050216E4340000000523
-:103740000216E438000000050216E43C0000000503
-:103750000216E008200810010216E44000000008EC
-:103760000216E444000000060216E44800000007C8
-:103770000216E44C000000000216E00C01010120DA
-:103780000616E450000000040216E01001010101D9
-:103790000216E460000000000216E4640000000469
-:1037A0000216E468000000040216E46C0000000247
-:1037B0000216E014080120040216E470000000055F
-:1037C0000216E474000000050216E478000000050B
-:1037D0000216E47C000000050216E0182008100123
-:1037E0000216E480000000080216E48400000006CF
-:1037F0000216E488000000070216E48C00000001B5
-:103800000216E01C010101200216E49000000001F4
-:103810000216E494000000010216E4980000000182
-:103820000216E49C000000010216E02001010101E3
-:103830000216E4A0000000010216E4A40000000447
-:103840000216E4A8000000040216E4AC0000000226
-:103850000216E024080120040216E4B0000000056E
-:103860000216E4B4000000050216E4B800000005EA
-:103870000216E4BC000000050216E0282008100132
-:103880000216E4C0000000080216E4C400000006AE
-:103890000216E4C8000000070216E4CC0000000194
-:1038A0000216E02C010101200216E4D00000000104
-:1038B0000216E4D4000000010216E4D80000000162
-:1038C0000216E4DC000000010216E03001010101F3
-:1038D0000216E4E0000000010216E4E40000000427
-:1038E0000216E4E8000000040216E4EC0000000206
-:1038F0000216E034080120040216E4F0000000057E
-:103900000216E4F4000000050216E4F800000005C9
-:103910000216E4FC000000050216E0382008100141
-:103920000216E500000000080216E504000000068B
-:103930000216E508000000070216E03C0101012024
-:1039400002168240003F003F021682440000000041
-:103950000216E524003F003F0216E52800000000A3
-:1039600002168248000000000216824C003F003F11
-:103970000216E52C000000000216E530003F003F73
-:10398000021682500100010002168254010001005B
-:103990000216E534010001000216E53801000100BD
-:1039A00006168258000000020216E53C00000000E6
-:1039B0000216E540000000000216826000C000C050
-:1039C0000216826400C000C00216E54400C000C0B8
-:1039D0000216E54800C000C0021682681E001E00E4
-:1039E0000216826C1E001E000216E54C1E001E0010
-:1039F0000216E5501E001E000216827040004000B4
-:103A000002168274400040000216E5544000400057
-:103A10000216E558400040000216827880008000BF
-:103A20000216827C800080000216E55C8000800027
-:103A30000216E560800080000216828020002000CF
-:103A400002168284200020000216E5642000200077
-:103A50000216E56820002000061682880000000299
-:103A60000216E56C000000000216E5700000000080
-:103A700002168290000000000216829400000000EE
-:103A80000216E574000000000216E5780000000050
-:103A900002168298000000000216829C00000000BE
-:103AA0000216E57C000000000216E5800000000020
-:103AB000021682A000000000021682A4000000018D
-:103AC000061682A80000000A021681F400000C0805
-:103AD000021681F800000040021681FC000001007F
-:103AE0000216820000000020021682040000001767
-:103AF00002168208000000800216820C00000200FC
-:103B000002168210000000000216821801FF01FF59
-:103B10000216821401FF01FF0216E51001FF01FFEA
-:103B20000216E50C01FF01FF0216823C00000013A3
-:103B3000021680900000013F0216806000000140E4
-:103B40000216806400000140061680680000000232
-:103B500002168070000000C0061680740000000786
-:103B60000216809C00000048021680A00000004859
-:103B7000061680A400000002021680AC0000004877
-:103B8000061680B000000007021682380000800090
-:103B900002168234000025E40216809400007FFFA4
-:103BA00002168220000F000F0216821C000F000F69
-:103BB0000216E518000F000F0216E514000F000FA3
-:103BC000021682280000000002168224FFFFFFFF79
-:103BD0000216E520000000000216E51CFFFFFFFFB3
-:103BE0000216E6BC000000000216E6C0000000025B
-:103BF0000216E6C4000000010216E6C80000000339
-:103C00000216E6CC000000040216E6D00000000612
-:103C10000216E6D4000000050216E6D800000007F0
-:103C2000021680EC000000FF0214000000000001FA
-:103C30000214000C0000000102140040000000010A
-:103C40000214004400007FFF0214000C000000007A
-:103C500002140000000000000214006C00000000CC
-:103C600002140004000000010214003000000001F2
-:103C700002140004000000000214005C00000000B8
-:103C800002140008000000010214003400000001CA
-:103C90000214000800000000021400600000000090
-:103CA00006028000000020000202005800000032DE
-:103CB000020200A003150020020200A40315002048
-:103CC000020200A801000030020200AC081000004F
-:103CD000020200B000000033020200B40000003015
-:103CE000020200B800000031020200BC0000000324
-:103CF000020200C000000006020200C4000000032F
-:103D0000020200C800000003020200CC0000000212
-:103D1000020200D000000000020200D400000002F5
-:103D2000020200DC00000000020200E000000006C9
-:103D3000020200E400000004020200E800000002A9
-:103D4000020200EC00000002020200F0000000018C
-:103D5000020200FC00000006020201200000000038
-:103D60000202013400000002020201B00000000162
-:103D70000202020C00000001020202140000000115
-:103D80000202021800000002020204040000000106
-:103D90000202040C00000040020204100000004077
-:103DA0000202041C000000040202042000000020A3
-:103DB0000202042400000002020204280000002085
-:103DC000060205000000001204020480002004AA7C
-:103DD000020200600000000F020200640000000701
-:103DE00002020068000000000202006C0000000EE9
-:103DF000020200700000000E0602007400000003C2
-:103E0000020200F4000000040202000400000001AD
-:103E100002020008000000010202000C0000000184
-:103E20000202001000000001020200140000000164
-:103E300002020018000000010202001C0000000144
-:103E40000202002000000001020200240000000124
-:103E500002020028000000010202002C0000000104
-:103E600002020030000000010202003400000001E4
-:103E700002020038000000010202003C00000001C4
-:103E800002020040000000010202004400000001A4
-:103E900002020048000000010202004C0000000184
-:103EA000020200500000000102020108000000C8E8
-:103EB0000202011800000002020201C4000000001A
-:103EC000020201CC00000000020201D40000000246
-:103ED000020201DC00000002020201E4000000FF17
-:103EE000020201EC000000FF0202010000000000DD
-:103EF0000202010C000000C80202011C00000002C6
-:103F0000020201C800000000020201D0000000000F
-:103F1000020201D800000002020201E000000002DB
-:103F2000020201E8000000FF020201F0000000FFB1
-:103F3000020201040000000002020108000000C8A3
-:103F40000202011800000002020201C40000000089
-:103F5000020201CC00000000020201D400000002B5
-:103F6000020201DC00000002020201E4000000FF86
-:103F7000020201EC000000FF02020100000000004C
-:103F80000202010C000000C80202011C0000000235
-:103F9000020201C800000000020201D0000000007F
-:103FA000020201D800000002020201E0000000024B
-:103FB000020201E8000000FF020201F0000000FF21
-:103FC000020201040000000002020108000000C813
-:103FD0000202011800000002020201C400000000F9
-:103FE000020201CC00000000020201D40000000225
-:103FF000020201DC00000002020201E4000000FFF6
-:10400000020201EC000000FF0202010000000000BB
-:104010000202010C000000C80202011C00000002A4
-:10402000020201C800000000020201D000000000EE
-:10403000020201D800000002020201E000000002BA
-:10404000020201E8000000FF020201F0000000FF90
-:10405000020201040000000002020108000000C882
-:104060000202011800000002020201C40000000068
-:10407000020201CC00000000020201D40000000294
-:10408000020201DC00000002020201E4000000FF65
-:10409000020201EC000000FF02020100000000002B
-:1040A0000202010C000000C80202011C0000000214
-:1040B000020201C800000000020201D0000000005E
-:1040C000020201D800000002020201E0000000022A
-:1040D000020201E8000000FF020201F0000000FF00
-:1040E00002020104000000000728040000A30000F1
-:1040F000082807B8000904CA072C000034F10000A2
-:10410000072C800038A60D3D072D000037B61B6731
-:10411000072D800032632955072E00001C6835EEFC
-:10412000082E48B036EA04CC012800000000000048
-:104130000128000400000000012800080000000021
-:104140000128000C00000000012800100000000001
-:1041500001280014000000000228002000000001D7
-:1041600002280024000000020228002800000003AA
-:104170000228002C0000000002280030000000048B
-:10418000022800340000000102280038000000006E
-:104190000228003C0000000102280040000000044A
-:1041A000022800440000000002280048000000012E
-:1041B0000228004C0000000302280050000000000C
-:1041C00002280054000000010228005800000004EA
-:1041D0000228005C000000000228006000000001CE
-:1041E00002280064000000030228006800000000AC
-:1041F0000228006C0000000102280070000000048A
-:10420000022800740000000002280078000000046A
-:104210000228007C00000003062800800000000245
-:10422000022800A400003FFF022800A8000003FFAE
-:1042300002280224000000000228023400000000CE
-:104240000228024C00000000022802E40000FFFFE8
-:104250000628200000000800022B8BC0000000018F
-:10426000022B800000000000022B8040000000189C
-:10427000022B80800000000C022B80C00000006632
-:104280000C2B83000007A1200A2B830000000138BB
-:104290000B2B8300000013880A2B834000000000D2
-:1042A0000C2B8340000001F40B2B83400000000521
-:1042B000022B83800007A120022B83C0000001F4A1
-:1042C000022B1480000000010A2B14800000000063
-:1042D000062A9AF800000004042A9B08000204CE73
-:1042E000062A9B1000000006062A90800000004865
-:1042F000062A2008000000C8062A2000000000024C
-:10430000062A91A800000086062A900000000020DE
-:10431000062A93C800000003042A93D4000104D0A5
-:10432000062A9DA800000002042A9498000404D1E3
-:10433000042A9D58000104D5062A9D5C0000001146
-:10434000042ACB20001004D6042A3000000204E620
-:10435000062A300800000100062A40400000001034
-:10436000042A4000001004E8042A8408000204F82B
-:10437000062A9DA000000002062AB000000000509E
-:10438000062ABB7000000070062AB150000000022F
-:10439000062ABB6000000004062AD00000000800C6
-:1043A000062AC00000000150062A94A8000000322E
-:1043B000062A502000000002062A503000000002A9
-:1043C000062A500000000002062A501000000002D9
-:1043D000022A520800000001042A9B28000204FA65
-:1043E000062A963800000022042A96C0000104FC28
-:1043F000062A96C400000003062A976800000022DF
-:10440000042A97F0000104FD062A97F40000000337
-:10441000062A989800000022042A9920000104FE30
-:10442000062A992400000003062A99C800000022E9
-:10443000042A9A50000104FF062A9A54000000033F
-:10444000062AB14000000002062AC54000000150C3
-:10445000062A957000000032062A5028000000024B
-:10446000062A503800000002062A50080000000208
-:10447000062A501800000002022A520C0000000117
-:10448000042A9B3000020500062A96D00000002274
-:10449000042A975800010502062A975C00000003D1
-:1044A000062A980000000022042A988800010503CB
-:1044B000062A988C00000003062A9930000000228A
-:1044C000042A99B800010504062A99BC00000003DB
-:1044D000062A9A6000000022042A9AE800010505D5
-:1044E000062A9AEC00000003062AB14800000002E8
-:1044F000022ACA8000000000042A9B38001005062A
-:10450000062A50480000000E022ACA84000000005B
-:10451000042A9B7800100516062A50800000000E21
-:10452000022ACA8800000000042A9BB80010052651
-:10453000062A50B80000000E022ACA8C00000000B3
-:10454000042A9BF800100536062A50F00000000EE1
-:10455000022ACA9000000000042A9C380010054678
-:10456000062A51280000000E022ACA94000000000A
-:10457000042A9C7800100556062A51600000000E9F
-:10458000022ACA9800000000042A9CB800100566A0
-:10459000062A51980000000E022ACA9C0000000062
-:1045A000042A9CF800100576062A51D00000000E5F
-:1045B000021010080000000102101050000000015D
-:1045C000021010000003D000021010040000003D93
-:1045D0000910180002000586091011000010078656
-:1045E0000610114000000008091011600010079625
-:1045F000061011A00000001806102400000000E0C2
-:104600000210201C00000000021020200000000109
-:10461000021020C00000000202102004000000016F
-:10462000021020080000000109103C00000507A648
-:1046300009103800000507AB09103820000507B045
-:1046400006104C000000010002104028000000107D
-:104650000210404400003FFF0210405800280000B4
-:10466000021040840084924A02104058000000006A
-:104670000210800000001080021080AC00000000DA
-:1046800002108038000000100210810000000000BD
-:10469000061081200000000202108008000002B510
-:1046A0000210801000000000061082000000004A86
-:1046B000021081080001FFFF061081400000000287
-:1046C0000210800000001A800610900000000024F4
-:1046D000061091200000004A061093700000004A66
-:1046E000061095C00000004A0210800400001080EF
-:1046F000021080B0000000010210803C0000001099
-:104700000210810400000000061081280000000251
-:104710000210800C000002B502108014000000009E
-:10472000061084000000004A0210810C0001FFFF07
-:1047300006108148000000020210800400001A8068
-:104740000610909000000024061092480000004AD5
-:10475000061094980000004A061096E80000004AEF
-:104760000210800000001080021080AC00000002E7
-:1047700002108038000000100210810000000000CC
-:10478000061081200000000202108008000002B51F
-:104790000210801000000000061082000000004A95
-:1047A000021081080001FFFF061081400000000296
-:1047B0000210800000001A80061090000000002403
-:1047C000061091200000004A061093700000004A75
-:1047D000061095C00000004A0210800400001080FE
-:1047E000021080B0000000030210803C00000010A6
-:1047F0000210810400000000061081280000000261
-:104800000210800C000002B50210801400000000AD
-:10481000061084000000004A0210810C0001FFFF16
-:1048200006108148000000020210800400001A8077
-:104830000610909000000024061092480000004AE4
-:10484000061094980000004A061096E80000004AFE
-:104850000210800000001080021080AC00000004F4
-:1048600002108038000000100210810000000000DB
-:10487000061081200000000202108008000002B52E
-:104880000210801000000000061082000000004AA4
-:10489000021081080001FFFF0610814000000002A5
-:1048A0000210800000001A80061090000000002412
-:1048B000061091200000004A061093700000004A84
-:1048C000061095C00000004A02108004000010800D
-:1048D000021080B0000000050210803C00000010B3
-:1048E0000210810400000000061081280000000270
-:1048F0000210800C000002B50210801400000000BD
-:10490000061084000000004A0210810C0001FFFF25
-:1049100006108148000000020210800400001A8086
-:104920000610909000000024061092480000004AF3
-:10493000061094980000004A061096E80000004A0D
-:104940000210800000001080021080AC0000000601
-:1049500002108038000000100210810000000000EA
-:10496000061081200000000202108008000002B53D
-:104970000210801000000000061082000000004AB3
-:10498000021081080001FFFF0610814000000002B4
-:104990000210800000001A80061090000000002421
-:1049A000061091200000004A061093700000004A93
-:1049B000061095C00000004A02108004000010801C
-:1049C000021080B0000000070210803C00000010C0
-:1049D000021081040000000006108128000000027F
-:1049E0000210800C000002B50210801400000000CC
-:1049F000061084000000004A0210810C0001FFFF35
-:104A000006108148000000020210800400001A8095
-:104A10000610909000000024061092480000004A02
-:104A2000061094980000004A061096E80000004A1C
-:104A3000021205B0000000010212049000E383405E
-:104A40000212051400003C100212066C0000000166
-:104A5000021206700000000002120494FFFFFFFF24
-:104A600002120498FFFFFFFF0212049CFFFFFFFFEA
-:104A7000021204A0FFFFFFFF021204A4FFFFFFFFCA
-:104A8000021204A8FFFFFFFF021204ACFFFFFFFFAA
-:104A9000021204B0FFFFFFFF021204BCFFFFFFFF82
-:104AA000021204C0FFFFFFFF021204C4FFFFFFFF5A
-:104AB000021204C8FFFFFFFF021204CCFFFFFFFF3A
-:104AC000021204D0FFFFFFFF021204D8FFFFFFFF16
-:104AD000021204DCFFFFFFFF021204E0FFFFFFFFF2
-:104AE000021204E4FFFFFFFF021204E8FFFFFFFFD2
-:104AF000021204ECFFFFFFFF021204F0FFFFFFFFB2
-:104B0000021204F4FFFFFFFF021204F8FFFFFFFF91
-:104B1000021204FCFFFFFFFF02120500FFFFFFFF70
-:104B200002120504FFFFFFFF02120508FFFFFFFF4F
-:104B30000212050CFFFFFFFF02120510FFFFFFFF2F
-:104B4000021204D4FF809000021204B4F00050005E
-:104B5000021204B8F00010000212039000000008D6
-:104B60000212039C00000008021203A000000008CB
-:104B7000021203A400000002021203BC00000004A1
-:104B8000021203C000000005021203C4000000046A
-:104B9000021203D0000000000212036C00000001AA
-:104BA000021203680000003F021201BC0000004036
-:104BB000021201C000001808021201C4000008031C
-:104BC000021201C800000803021201CC00000040DC
-:104BD000021201D000000003021201D400000803F9
-:104BE000021201D800000803021201DC00000803D1
-:104BF000021201E000010003021201E400000803B8
-:104C0000021201E800000803021201EC0000000398
-:104C1000021201F000000003021201F40000000380
-:104C2000021201F800000003021201FC0000000360
-:104C3000021202000000000302120204000000033E
-:104C400002120208000000030212020C000000031E
-:104C500002120210000000030212021400000003FE
-:104C600002120218000000030212021C00000003DE
-:104C700002120220000000030212022400000003BE
-:104C800002120228000024030212022C0000002F4E
-:104C90000212023000000009021202340000001962
-:104CA00002120238000001840212023C000001835B
-:104CB0000212024000000306021202440000001922
-:104CC00002120248000000060212024C0000030615
-:104CD00002120250000003060212025400000306F2
-:104CE0000212025800000C860212025C0000030649
-:104CF00002120260000003060212026400000006B5
-:104D000002120268000000060212026C0000000697
-:104D10000212027000000006021202740000000677
-:104D200002120278000000060212027C0000000657
-:104D30000212028000000006021202840000000637
-:104D400002120288000000060212028C0000000617
-:104D500002120290000000060212029400000006F7
-:104D600002120298000000060212029C00000006D7
-:104D7000021202A000000306021202A400000013A7
-:104D8000021202A800000006021202B00000100485
-:104D9000021202B400001004021203240010644046
-:104DA0000212032800106440021205B40000000142
-:104DB000021201B0000000010600A0000000000C7B
-:104DC0000200A050000000000200A05400000000FB
-:104DD0000200A0EC555400000200A0F055555555B6
-:104DE0000200A0F4000055550200A0F8F0000000F9
-:104DF0000200A0FC555400000200A1005555555575
-:104E00000200A104000055550200A108F0000000B6
-:104E10000200A18C555400000200A1905555555533
-:104E20000200A194000055550200A198F000000076
-:104E30000200A19C000000000200A1A000010000EF
-:104E40000200A1A4000050140200A1A8000000006C
-:104E50000200A45C00000C000200A61C000000037D
-:104E60000200A06CFF5C00000200A070FFF55FFF75
-:104E70000200A0740000FFFF0200A078F00003E031
-:104E80000200A07C000000000200A0800000A00042
-:104E90000600A084000000050200A0980FE00000BA
-:104EA0000600A09C000000070200A0B8000004005B
-:104EB0000600A0BC000000030200A0C80000100013
-:104EC0000600A0CC000000030200A0D800004000B3
-:104ED0000600A0DC000000030200A0E800010000C2
-:104EE0000600A22C000000040200A10CFF5C0000E0
-:104EF0000200A110FFF55FFF0200A1140000FFFFF8
-:104F00000200A118F00003E00200A11C0000000054
-:104F10000200A1200000A0000600A124000000055E
-:104F20000200A1380FE000000600A13C00000007CD
-:104F30000200A158000008000600A15C0000000368
-:104F40000200A168000020000600A16C0000000320
-:104F50000200A178000080000600A17C0000000390
-:104F60000200A188000200000600A23C000000042C
-:104F70000200A030000000000200A0340000000089
-:104F80000200A038000000000200A03C0000000069
-:104F90000200A040000000000200A0440000000049
-:104FA0000200A048000000000200A04C0000000029
-:104FB00000000000000000000000003000000000C1
-:104FC00000000000000000000000000000000000E1
-:104FD00000000000000000000000000000000000D1
-:104FE0000000000000300031000000000000000060
-:104FF00000000000000000000000000000000000B1
-:1050000000000000000000000000000000000000A0
-:10501000003100520000000000000000000000000D
-:105020000000000000000000000000000000000080
-:105030000000000000000000000000000052008995
-:1050400000000000000000000089008D008D00912C
-:1050500000910095009500990099009D009D00A188
-:1050600000A100A500A500A900A900AE00AE00B1F6
-:1050700000B100B4000000000000000000000000CB
-:105080000000000000000000000000000000000020
-:105090000000000000B40309030903130313031DF8
-:1050A000031D03240324032B032B03320332033990
-:1050B00003390340034003470347034E034E0355A0
-:1050C00000000000000000000000000000000000E0
-:1050D00000000000000000000000000000000000D0
-:1050E00000000000000000000000000000000000C0
-:1050F00000000000000000000000000000000000B0
-:10510000000000000000000000000000000000009F
-:10511000000000000000000000000000000000008F
-:10512000000000000000000000000000000000007F
-:10513000000000000000000000000000000000006F
-:10514000000000000000000000000000000000005F
-:10515000000000000000000000000000000000004F
-:10516000000000000000000000000000000000003F
-:105170000355035B0000000000000000035B035CBC
-:10518000035C035D035D035E035E035F035F036017
-:1051900003600361036103620362036300000000B4
-:1051A00000000000000000000000000000000000FF
-:1051B00000000000000000000000000000000000EF
-:1051C00000000000000000000363036D036D037B1B
-:1051D000037B0389000000000000000000000000C5
-:1051E00000000000000000000000000000000000BF
-:1051F00000000000000000000000000000000000AF
-:10520000000000000000000000000000000000009E
-:10521000000000000000000000000000000000008E
-:105220000389038A00000000000000000000000065
-:10523000000000000000000000000000000000006E
-:10524000000000000000000000000000038A03D6F8
-:10525000000000000000000000000000000000004E
-:10526000000000000000000000000000000000003E
-:10527000000000000000000003D604010000000050
-:10528000000000000000000000000000000000001E
-:10529000000000000000000000000000000000000E
-:1052A00000000000040104330000000000000000C2
-:1052B0000433043A043A0441044104480448044FC6
-:1052C000044F04560456045D045D04640464046BD6
-:1052D000046B04A4000000000000000004A404A863
-:1052E00004A804AC04AC04B004B004B404B404B81E
-:1052F00004B804BC04BC04C004C004C404C4051342
-:105300000513052A052A05410541054305430545C1
-:1053100005450547054705490549054B054B054D1D
-:10532000054D054F054F0551055105E805E805E90F
-:1053300005E905EA05EA05EF05EF05F405F405F9C9
-:1053400005F905FE05FE0603060306080608060D18
-:10535000060D0612061206130000000000000000F1
-:10536000000000000000000000000000000000003D
-:10537000000000000000000000000000000000002D
-:1053800006130624000000000000000000000000DA
-:10539000000000000000000000000000000000000D
-:1053A0000000000000000000000000000624063994
-:1053B0000639063C063C063F0000000000000000E5
-:1053C00000000000000000000000000000000000DD
-:1053D0000000000000000000063F0675000000000D
-:1053E00000000000000000000000000000000000BD
-:1053F00000000000000000000000000000000000AD
-:1054000000000000067507780000000000000000A2
-:10541000000000000000000000000000000000008C
-:10542000000000000000000000000000000000007C
-:105430000778077F077F078307830787000000003F
-:10544000000000000000000000000000000000005C
-:10545000000000000000000000000000078707C8EF
-:10546000000000000000000007C807D107D107DADC
-:1054700007DA07E307E307EC07EC07F507F507FE94
-:1054800007FE080708070810081008670867087C67
-:10549000087C089108910894089408970897089A3E
-:1054A000089A089D089D08A008A008A308A308A6BC
-:1054B00008A608A908A908B2000000000000000022
-:1054C00000000000000000000000000000000000DC
-:1054D00000000000000000000000000000000000CC
-:1054E00008B208B800000000000000000000000042
-:1054F00000000000000000000000000000000000AC
-:1055000000000000000000000000000008B808BB18
-:10551000000000000000000000000000000000008B
-:10552000000000000000000000000000000000007B
-:10553000000000000000000008BB08C100000000DF
-:10554000000000000000000000000000000000005B
-:10555000000000000000000000000000000000004B
-:10556000000000000000000000000000000000003B
-:1055700008C108D008D008DF08DF08EE08EE08FDF3
-:1055800008FD090C090C091B091B092A092A0939FC
-:10559000093909AA00000000000000000000000016
-:1055A00000000000000000000000000000000000FB
-:1055B00000000000000000000000000009AA09BF70
-:1055C00009BF09D009D009E109E109E209E209E3CB
-:1055D00009E309E409E409E509E509E609E609E75B
-:1055E00009E709E809E809E90000000000000000F7
-:1055F00000000000000000000000000000000000AB
-:10560000000000000000000000000000000000009A
-:10561000000000000000000000000000000000008A
-:10562000000000000000000000000000000000007A
-:10563000000000000000000000000000000000006A
-:10564000000000000000000000000000000000005A
-:10565000000000000000000000000000000000004A
-:10566000000000000000000000000000000000003A
-:10567000000000000000000000000000000000002A
-:10568000000000000000000000000000000000001A
-:10569000000000000000000000000000000000000A
-:1056A00000000000000000000000000000000000FA
-:1056B00000000000000000000000000000000000EA
-:1056C000000000000000000000010000000204C013
-:1056D0000003098000040E4000051300000617C0F7
-:1056E00000071C800008214000092600000A2AC08B
-:1056F000000B2F80000C3440000D3900000E3DC01F
-:10570000000F42800010474000114C00001250C0B2
-:105710000013558000145A4000155F00001663C046
-:105720000017688000186D4000197200001A76C0DA
-:10573000001B7B80001C8040001D8500001E89C06E
-:10574000001F8E80000093400000200000004000F9
-:1057500000006000000080000000A0000000C00009
-:105760000000E000000100000001200000014000F6
-:1057700000016000000180000001A0000001C000E5
-:105780000001E000000200000002200000024000D2
-:1057900000026000000280000002A0000002C000C1
-:1057A0000002E000000300000003200000034000AE
-:1057B00000036000000380000003A0000003C0009D
-:1057C0000003E0000004000000042000000440008A
-:1057D00000046000000480000004A0000004C00079
-:1057E0000004E00000050000000520000005400066
-:1057F00000056000000580000005A0000005C00055
-:105800000005E00000060000000620000006400041
-:1058100000066000000680000006A0000006C00030
-:105820000006E0000007000000072000000740001D
-:1058300000076000000780000007A0000007C0000C
-:105840000007E000000800000008200000084000F9
-:1058500000086000000880000008A0000008C000E8
-:105860000008E000000900000009200000094000D5
-:1058700000096000000980000009A0000009C000C4
-:105880000009E000000A0000000A2000000A4000B1
-:10589000000A6000000A8000000AA000000AC000A0
-:1058A000000AE000000B0000000B2000000B40008D
-:1058B000000B6000000B8000000BA000000BC0007C
-:1058C000000BE000000C0000000C2000000C400069
-:1058D000000C6000000C8000000CA000000CC00058
-:1058E000000CE000000D0000000D2000000D400045
-:1058F000000D6000000D8000000DA000000DC00034
-:10590000000DE000000E0000000E2000000E400020
-:10591000000E6000000E8000000EA000000EC0000F
-:10592000000EE000000F0000000F2000000F4000FC
-:10593000000F6000000F8000000FA000000FC000EB
-:10594000000FE000001000000010200000104000D8
-:1059500000106000001080000010A0000010C000C7
-:105960000010E000001100000011200000114000B4
-:1059700000116000001180000011A0000011C000A3
-:105980000011E00000120000001220000012400090
-:1059900000126000001280000012A0000012C0007F
-:1059A0000012E0000013000000132000001340006C
-:1059B00000136000001380000013A0000013C0005B
-:1059C0000013E00000140000001420000014400048
-:1059D00000146000001480000014A0000014C00037
-:1059E0000014E00000150000001520000015400024
-:1059F00000156000001580000015A0000015C00013
-:105A00000015E000001600000016200000164000FF
-:105A100000166000001680000016A0000016C000EE
-:105A20000016E000001700000017200000174000DB
-:105A300000176000001780000017A0000017C000CA
-:105A40000017E000001800000018200000184000B7
-:105A500000186000001880000018A0000018C000A6
-:105A60000018E00000190000001920000019400093
-:105A700000196000001980000019A0000019C00082
-:105A80000019E000001A0000001A2000001A40006F
-:105A9000001A6000001A8000001AA000001AC0005E
-:105AA000001AE000001B0000001B2000001B40004B
-:105AB000001B6000001B8000001BA000001BC0003A
-:105AC000001BE000001C0000001C2000001C400027
-:105AD000001C6000001C8000001CA000001CC00016
-:105AE000001CE000001D0000001D2000001D400003
-:105AF000001D6000001D8000001DA000001DC000F2
-:105B0000001DE000001E0000001E2000001E4000DE
-:105B1000001E6000001E8000001EA000001EC000CD
-:105B2000001EE000001F0000001F2000001F4000BA
-:105B3000001F6000001F8000001FA000001FC000A9
-:105B4000001FE00000200000002020000020400096
-:105B500000206000002080000020A0000020C00085
-:105B60000020E00000210000002120000021400072
-:105B700000216000002180000021A0000021C00061
-:105B80000021E0000022000000222000002240004E
-:105B900000226000002280000022A0000022C0003D
-:105BA0000022E0000023000000232000002340002A
-:105BB00000236000002380000023A0000023C00019
-:105BC0000023E00000240000002420000024400006
-:105BD00000246000002480000024A0000024C000F5
-:105BE0000024E000002500000025200000254000E2
-:105BF00000256000002580000025A0000025C000D1
-:105C00000025E000002600000026200000264000BD
-:105C100000266000002680000026A0000026C000AC
-:105C20000026E00000270000002720000027400099
-:105C300000276000002780000027A0000027C00088
-:105C40000027E00000280000002820000028400075
-:105C500000286000002880000028A0000028C00064
-:105C60000028E00000290000002920000029400051
-:105C700000296000002980000029A0000029C00040
-:105C80000029E000002A0000002A2000002A40002D
-:105C9000002A6000002A8000002AA000002AC0001C
-:105CA000002AE000002B0000002B2000002B400009
-:105CB000002B6000002B8000002BA000002BC000F8
-:105CC000002BE000002C0000002C2000002C4000E5
-:105CD000002C6000002C8000002CA000002CC000D4
-:105CE000002CE000002D0000002D2000002D4000C1
-:105CF000002D6000002D8000002DA000002DC000B0
-:105D0000002DE000002E0000002E2000002E40009C
-:105D1000002E6000002E8000002EA000002EC0008B
-:105D2000002EE000002F0000002F2000002F400078
-:105D3000002F6000002F8000002FA000002FC00067
-:105D4000002FE00000300000003020000030400054
-:105D500000306000003080000030A0000030C00043
-:105D60000030E00000310000003120000031400030
-:105D700000316000003180000031A0000031C0001F
-:105D80000031E0000032000000322000003240000C
-:105D900000326000003280000032A0000032C000FB
-:105DA0000032E000003300000033200000334000E8
-:105DB00000336000003380000033A0000033C000D7
-:105DC0000033E000003400000034200000344000C4
-:105DD00000346000003480000034A0000034C000B3
-:105DE0000034E000003500000035200000354000A0
-:105DF00000356000003580000035A0000035C0008F
-:105E00000035E0000036000000362000003640007B
-:105E100000366000003680000036A0000036C0006A
-:105E20000036E00000370000003720000037400057
-:105E300000376000003780000037A0000037C00046
-:105E40000037E00000380000003820000038400033
-:105E500000386000003880000038A0000038C00022
-:105E60000038E0000039000000392000003940000F
-:105E700000396000003980000039A0000039C000FE
-:105E80000039E000003A0000003A2000003A4000EB
-:105E9000003A6000003A8000003AA000003AC000DA
-:105EA000003AE000003B0000003B2000003B4000C7
-:105EB000003B6000003B8000003BA000003BC000B6
-:105EC000003BE000003C0000003C2000003C4000A3
-:105ED000003C6000003C8000003CA000003CC00092
-:105EE000003CE000003D0000003D2000003D40007F
-:105EF000003D6000003D8000003DA000003DC0006E
-:105F0000003DE000003E0000003E2000003E40005A
-:105F1000003E6000003E8000003EA000003EC00049
-:105F2000003EE000003F0000003F2000003F400036
-:105F3000003F6000003F8000003FA000003FC00025
-:105F4000003FE000003FE00100000000000001FF12
-:105F50000000020000007FF800007FF80000014010
-:105F600000003500000000010000FF0000000000FC
-:105F70000000FF00000000000000FF000000000023
-:105F80000000FF00000000000000FF000000000013
-:105F90000000FF00000000000000FF000000000003
-:105FA0000000FF000000000000000000140AFF00D5
-:105FB00000000001000000000020100100000000AF
-:105FC0000100900000000100000090020000900419
-:105FD00000009006000090080000900A0000900C5D
-:105FE0000000900E0000901000009012000090142D
-:105FF00000009016000090180000901A0000901CFD
-:106000000000901E000090200000902200009024CC
-:1060100000009026000090280000902A0000902C9C
-:106020000000902E0000903000009032000090346C
-:1060300000009036000090380000903A0000903C3C
-:106040000000903E0000904000009042000090440C
-:1060500000009046000090480000904A0000904CDC
-:106060000000904E000090500000905200009054AC
-:1060700000009056000090580000905A0000905C7C
-:106080000000905E0000906000009062000090644C
-:1060900000009066000090680000906A0000906C1C
-:1060A0000000906E000090700000907200009074EC
-:1060B00000009076000090780000907A0000907CBC
-:1060C0000000907E0000908000009082000090848C
-:1060D00000009086000090880000908A0000908C5C
-:1060E0000000908E0000909000009092000090942C
-:1060F00000009096000090980000909A0000909CFC
-:106100000000909E000090A0000090A2000090A4CB
-:10611000000090A6000090A8000090AA000090AC9B
-:10612000000090AE000090B0000090B2000090B46B
-:10613000000090B6000090B8000090BA000090BC3B
-:10614000000090BE000090C0000090C2000090C40B
-:10615000000090C6000090C8000090CA000090CCDB
-:10616000000090CE000090D0000090D2000090D4AB
-:10617000000090D6000090D8000090DA000090DC7B
-:10618000000090DE000090E0000090E2000090E44B
-:10619000000090E6000090E8000090EA000090EC1B
-:1061A000000090EE000090F0000090F2000090F4EB
-:1061B000000090F6000090F8000090FA000090FCBB
-:1061C000000090FE00009100000091020000910488
-:1061D00000009106000091080000910A0000910C57
-:1061E0000000910E00009110000091120000911427
-:1061F00000009116000091180000911A0000911CF7
-:106200000000911E000091200000912200009124C6
-:1062100000009126000091280000912A0000912C96
-:106220000000912E00009130000091320000913466
-:1062300000009136000091380000913A0000913C36
-:106240000000913E00009140000091420000914406
-:1062500000009146000091480000914A0000914CD6
-:106260000000914E000091500000915200009154A6
-:1062700000009156000091580000915A0000915C76
-:106280000000915E00009160000091620000916446
-:1062900000009166000091680000916A0000916C16
-:1062A0000000916E000091700000917200009174E6
-:1062B00000009176000091780000917A0000917CB6
-:1062C0000000917E00009180000091820000918486
-:1062D00000009186000091880000918A0000918C56
-:1062E0000000918E00009190000091920000919426
-:1062F00000009196000091980000919A0000919CF6
-:106300000000919E000091A0000091A2000091A4C5
-:10631000000091A6000091A8000091AA000091AC95
-:10632000000091AE000091B0000091B2000091B465
-:10633000000091B6000091B8000091BA000091BC35
-:10634000000091BE000091C0000091C2000091C405
-:10635000000091C6000091C8000091CA000091CCD5
-:10636000000091CE000091D0000091D2000091D4A5
-:10637000000091D6000091D8000091DA000091DC75
-:10638000000091DE000091E0000091E2000091E445
-:10639000000091E6000091E8000091EA000091EC15
-:1063A000000091EE000091F0000091F2000091F4E5
-:1063B000000091F6000091F8000091FA000091FCB5
-:1063C000000091FEFFFFFFFFFFFFFFFFFFFFFFFF4A
-:1063D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
-:1063E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
-:1063F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
-:10640000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
-:10641000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
-:10642000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
-:10643000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
-:10644000FFFFFFFF0000000300BEBC2000000000B3
-:10645000000000050000000300BEBC20000000009A
-:10646000000000050000000300BEBC20000000008A
-:10647000000000050000000300BEBC20000000007A
-:10648000000000050000000300BEBC20000000006A
-:10649000000000050000000300BEBC20000000005A
-:1064A000000000050000000300BEBC20000000004A
-:1064B000000000050000000300BEBC20000000003A
-:1064C0000000000500002000000040C000006180C6
-:1064D000000082400000A3000000C3C00000E48070
-:1064E0000001054000012600000146C00001678050
-:1064F000000188400001A9000001C9C00001EA8034
-:1065000000020B4000022C0000024CC000026D8013
-:1065100000028E400002AF000002CFC00002F080F7
-:10652000000011400000800000010380000187008E
-:1065300000020A8000028E00000311800003950013
-:106540000004188000049C0000051F800005A300C3
-:10655000000626800006AA0000072D800007B10073
-:10656000000834800008B80000093B800009BF0023
-:10657000000A4280000AC600000B4980000BCD00D3
-:10658000000C5080000CD400000D578000005B0010
-:1065900000007FF800007FF8000000D50000150023
-:1065A0000000FF00000000000000FF0000000000ED
-:1065B0000000FF00000000000000FF0000000000DD
-:1065C0000000FF00000000000000FF0000000000CD
-:1065D0000000FF00000000000000FF0000000000BD
-:1065E000000019000000000000000000FFFFFFFF96
-:1065F0000000000003938700000000000393870061
-:1066000000007FF800007FF80000068E00003500D3
-:106610000000FF000FFFFFFF0000FF000FFFFFFF64
-:10662000000000FF0000FF000FFFFFFF0000FF0061
-:106630000FFFFFFF000000FF0000FF000FFFFFFF44
-:106640000000FF000FFFFFFF000000FF0000FF0041
-:106650000FFFFFFF0000FF000FFFFFFF000000FF24
-:106660000000FF000FFFFFFF0000FF000FFFFFFF14
-:10667000000000FF0000FF000FFFFFFF0000FF0011
-:106680000FFFFFFF000000FF0000FF000FFFFFFFF4
-:106690000000FF000FFFFFFF000000FF0000FF00F1
-:1066A0000FFFFFFF0000FF000FFFFFFF000000FFD4
-:1066B0000000FF000FFFFFFF0000FF000FFFFFFFC4
-:1066C000000000FF0000FF000FFFFFFF0000FF00C1
-:1066D0000FFFFFFF000000FF0000FF000FFFFFFFA4
-:1066E0000000FF000FFFFFFF000000FF0000FF00A1
-:1066F0000FFFFFFF0000FF000FFFFFFF000000FF84
-:106700000000FF000FFFFFFF0000FF000FFFFFFF73
-:10671000000000FF0000FF000FFFFFFF0000FF0070
-:106720000FFFFFFF000000FF0000FF000FFFFFFF53
-:106730000000FF000FFFFFFF000000FF0000FF0050
-:106740000FFFFFFF0000FF000FFFFFFF000000FF33
-:106750000000FF000FFFFFFF0000FF000FFFFFFF23
-:10676000000000FF0000FF000FFFFFFF0000FF0020
-:106770000FFFFFFF000000FF0000FF000FFFFFFF03
-:106780000000FF000FFFFFFF000000FF0000FF0000
-:106790000FFFFFFF0000FF000FFFFFFF000000FFE3
-:1067A0000000FF000FFFFFFF0000FF000FFFFFFFD3
-:1067B000000000FF0000FF000FFFFFFF0000FF00D0
-:1067C0000FFFFFFF000000FF0000FF000FFFFFFFB3
-:1067D0000000FF000FFFFFFF000000FF0000FF00B0
-:1067E0000FFFFFFF0000FF000FFFFFFF000000FF93
-:1067F0000000FF000FFFFFFF0000FF000FFFFFFF83
-:10680000000000FF0000FF000FFFFFFF0000FF007F
-:106810000FFFFFFF000000FF0000FF000FFFFFFF62
-:106820000000FF000FFFFFFF000000FF0000FF005F
-:106830000FFFFFFF0000FF000FFFFFFF000000FF42
-:106840000000FF000FFFFFFF0000FF000FFFFFFF32
-:10685000000000FF0000FF000FFFFFFF0000FF002F
-:106860000FFFFFFF000000FF0000FF000FFFFFFF12
-:106870000000FF000FFFFFFF000000FF0000FF000F
-:106880000FFFFFFF0000FF000FFFFFFF000000FFF2
-:10689000000000FF000000FF000000FF000000FFFC
-:1068A000000000FF000000FF000000FF000000FFEC
-:1068B0000000FF00000000000000FF0000000000DA
-:1068C0000000FF00000000000000FF0000000000CA
-:1068D0000000FF00000000000000FF0000000000BA
-:1068E0000000FF00000000000000FF0000000000AA
-:1068F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
-:10690000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
-:10691000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
-:10692000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
-:10693000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
-:10694000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
-:10695000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
-:10696000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
-:106970000000100000002080000031000000418075
-:10698000000052000000628000007300000083805D
-:10699000000094000000A4800000B5000000C58045
-:1069A0000000D6000000E6800000F700000107802C
-:1069B0000001180000012880000139000001498011
-:1069C00000015A0000016A8000017B0000018B80F9
-:1069D00000019C000001AC800001BD000001CD80E1
-:1069E0000001DE000001EE800001FF0000000F80CA
-:1069F00000007FF800007FF800000344000035002D
-:106A000010000000000028AD00010001000902068E
-:106A1000CCCCCCC5FFFFFFFFFFFFFFFF7058103C41
-:106A20000000FF00000000000000FF000000000068
-:106A30000000FF00000000000000FF000000000058
-:106A40000000FF00000000000000FF000000000048
-:106A50000000FF00000000000000FF000000000038
-:106A60000000000000000001CCCC0201CCCCCCCC5A
-:106A7000CCCC0201CCCCCCCCCCCC0201CCCCCCCC80
-:106A8000CCCC0201CCCCCCCCCCCC0201CCCCCCCC70
-:106A9000CCCC0201CCCCCCCCCCCC0201CCCCCCCC60
-:106AA000CCCC0201CCCCCCCC00000000FFFFFFFF1F
-:106AB000000E0000011600D6002625A0002625A005
-:106AC000002625A0002625A000720000012300F367
-:106AD000002625A0002625A0002625A0002625A00A
-:106AE0000000FFFF000000000000FFFF00000000AA
-:106AF0000000FFFF000000000000FFFF000000009A
-:106B00000000FFFF000000000000FFFF0000000089
-:106B10000000FFFF000000000000FFFF0000000079
-:106B20000000FFFF000000000000FFFF0000000069
-:106B30000000FFFF000000000000FFFF0000000059
-:106B40000000FFFF000000000000FFFF0000000049
-:106B50000000FFFF000000000000FFFF0000000039
-:106B60000000FFFF000000000000FFFF0000000029
-:106B70000000FFFF000000000000FFFF0000000019
-:106B80000000FFFF000000000000FFFF0000000009
-:106B90000000FFFF000000000000FFFF00000000F9
-:106BA0000000FFFF000000000000FFFF00000000E9
-:106BB0000000FFFF000000000000FFFF00000000D9
-:106BC0000000FFFF000000000000FFFF00000000C9
-:106BD0000000FFFF000000000000FFFF00000000B9
-:106BE0000000FFFF000000000000FFFF00000000A9
-:106BF0000000FFFF000000000000FFFF0000000099
-:106C00000000FFFF000000000000FFFF0000000088
-:106C10000000FFFF000000000000FFFF0000000078
-:106C20000000FFFF000000000000FFFF0000000068
-:106C30000000FFFF000000000000FFFF0000000058
-:106C40000000FFFF000000000000FFFF0000000048
-:106C50000000FFFF000000000000FFFF0000000038
-:106C60000000FFFF000000000000FFFF0000000028
-:106C70000000FFFF000000000000FFFF0000000018
-:106C80000000FFFF000000000000FFFF0000000008
-:106C90000000FFFF000000000000FFFF00000000F8
-:106CA0000000FFFF000000000000FFFF00000000E8
-:106CB0000000FFFF000000000000FFFF00000000D8
-:106CC0000000FFFF000000000000FFFF00000000C8
-:106CD0000000FFFF000000000000FFFF00000000B8
-:106CE000FFFFFFF3318FFFFF0C30C30CC30C30C329
-:106CF000CF3CF300F3CF3CF30000CF3CCDCDCDCD66
-:106D0000FFFFFFF130EFFFFF0C30C30CC30C30C3AB
-:106D1000CF3CF300F3CF3CF30001CF3CCDCDCDCD44
-:106D2000FFFFFFF6305FFFFF0C30C30CC30C30C316
-:106D3000CF3CF300F3CF3CF30002CF3CCDCDCDCD23
-:106D4000FFFFF4061CBFFFFF0C30C305C30C30C3AC
-:106D5000CF300014F3CF3CF30004CF3CCDCDCDCDEC
-:106D6000FFFFFFF2304FFFFF0C30C30CC30C30C3EA
-:106D7000CF3CF300F3CF3CF30008CF3CCDCDCDCDDD
-:106D8000FFFFFFFA302FFFFF0C30C30CC30C30C3E2
-:106D9000CF3CF300F3CF3CF30010CF3CCDCDCDCDB5
-:106DA000FFFFFFF731EFFFFF0C30C30CC30C30C304
-:106DB000CF3CF300F3CF3CF30020CF3CCDCDCDCD85
-:106DC000FFFFFFF5302FFFFF0C30C30CC30C30C3A7
-:106DD000CF3CF300F3CF3CF30040CF3CCDCDCDCD45
-:106DE000FFFFFFF3318FFFFF0C30C30CC30C30C328
-:106DF000CF3CF300F3CF3CF30000CF3CCDCDCDCD65
-:106E0000FFFFFFF1310FFFFF0C30C30CC30C30C389
-:106E1000CF3CF300F3CF3CF30001CF3CCDCDCDCD43
-:106E2000FFFFFFF6305FFFFF0C30C30CC30C30C315
-:106E3000CF3CF300F3CF3CF30002CF3CCDCDCDCD22
-:106E4000FFFFF4061CBFFFFF0C30C305C30C30C3AB
-:106E5000CF300014F3CF3CF30004CF3CCDCDCDCDEB
-:106E6000FFFFFFF2304FFFFF0C30C30CC30C30C3E9
-:106E7000CF3CF300F3CF3CF30008CF3CCDCDCDCDDC
-:106E8000FFFFFFFA302FFFFF0C30C30CC30C30C3E1
-:106E9000CF3CF300F3CF3CF30010CF3CCDCDCDCDB4
-:106EA000FFFFFFF730EFFFFF0C30C30CC30C30C304
-:106EB000CF3CF300F3CF3CF30020CF3CCDCDCDCD84
-:106EC000FFFFFFF5304FFFFF0C30C30CC30C30C386
-:106ED000CF3CF300F3CF3CF30040CF3CCDCDCDCD44
-:106EE000FFFFFFFF30CFFFFF0C30C30CC30C30C3DC
-:106EF000CF3CF3CCF3CF3CF30000CF3CCDCDCDCD98
-:106F0000FFFFFFFF30CFFFFF0C30C30CC30C30C3BB
-:106F1000CF3CF3CCF3CF3CF30001CF3CCDCDCDCD76
-:106F2000FFFFFFFF30CFFFFF0C30C30CC30C30C39B
-:106F3000CF3CF3CCF3CF3CF30002CF3CCDCDCDCD55
-:106F4000FFFFFFFF30CFFFFF0C30C30CC30C30C37B
-:106F5000CF3CF3CCF3CF3CF30004CF3CCDCDCDCD33
-:106F6000FFFFFFFF30CFFFFF0C30C30CC30C30C35B
-:106F7000CF3CF3CCF3CF3CF30008CF3CCDCDCDCD0F
-:106F8000FFFFFFFF30CFFFFF0C30C30CC30C30C33B
-:106F9000CF3CF3CCF3CF3CF30010CF3CCDCDCDCDE7
-:106FA000FFFFFFFF30CFFFFF0C30C30CC30C30C31B
-:106FB000CF3CF3CCF3CF3CF30020CF3CCDCDCDCDB7
-:106FC000FFFFFFFF30CFFFFF0C30C30CC30C30C3FB
-:106FD000CF3CF3CCF3CF3CF30040CF3CCDCDCDCD77
-:106FE000FFFFFFF3320FFFFF0C30C30CC30C30C3A5
-:106FF000CF3CF300F3CF3CF30000CF3CCDCDCDCD63
-:10700000FFFFFFF1310FFFFF0C30C30CC30C30C387
-:10701000CF3CF300F3CF3CF30001CF3CCDCDCDCD41
-:10702000FFFFFFF6305FFFFF0C30C30CC30C30C313
-:10703000CF3CF300F3CF3CF30002CF3CCDCDCDCD20
-:10704000FFFFF4061CBFFFFF0C30C305C30C30C3A9
-:10705000CF300014F3CF3CF30004CF3CCDCDCDCDE9
-:10706000FFFFFFF2304FFFFF0C30C30CC30C30C3E7
-:10707000CF3CF300F3CF3CF30008CF3CCDCDCDCDDA
-:10708000FFFFFF8A042FFFFF0C30C30CC30C30C37B
-:10709000CF3CC000F3CF3CF30010CF3CCDCDCDCDE5
-:1070A000FFFFFF9705CFFFFF0C30C30CC30C30C3AD
-:1070B000CF3CC000F3CF3CF30020CF3CCDCDCDCDB5
-:1070C000FFFFFFF5310FFFFF0C30C30CC30C30C3C3
-:1070D000CF3CF300F3CF3CF30040CF3CCDCDCDCD42
-:1070E000FFFFFFF3320FFFFF0C30C30CC30C30C3A4
-:1070F000CF3CF300F3CF3CF30000CF3CCDCDCDCD62
-:10710000FFFFFFF1302FFFFF0C30C30CC30C30C367
-:10711000CF3CF300F3CF3CF30001CF3CCDCDCDCD40
-:10712000FFFFFFF6305FFFFF0C30C30CC30C30C312
-:10713000CF3CF300F3CF3CF30002CF3CCDCDCDCD1F
-:10714000FFFFFF061CBFFFFF0C30C30CC30C30C396
-:10715000CF3CC014F3CF3CF30004CF3CCDCDCDCD1C
-:10716000FFFFFFF2304FFFFF0C30C30CC30C30C3E6
-:10717000CF3CF300F3CF3CF30008CF3CCDCDCDCDD9
-:10718000FFFFFFFA302FFFFF0C30C30CC30C30C3DE
-:10719000CF3CF300F3CF3CF30010CF3CCDCDCDCDB1
-:1071A000FFFFFFF731CFFFFF0C30C30CC30C30C320
-:1071B000CF3CF300F3CF3CF30020CF3CCDCDCDCD81
-:1071C000FFFFFFFF30CFFFFF0C30C30CC30C30C3F9
-:1071D000CF3CF3CCF3CF3CF30040CF3CCDCDCDCD75
-:1071E000FFFFFFFF30CFFFFF0C30C30CC30C30C3D9
-:1071F000CF3CF3CCF3CF3CF30000CF3CCDCDCDCD95
-:10720000FFFFFFFF30CFFFFF0C30C30CC30C30C3B8
-:10721000CF3CF3CCF3CF3CF30001CF3CCDCDCDCD73
-:10722000FFFFFFFF30CFFFFF0C30C30CC30C30C398
-:10723000CF3CF3CCF3CF3CF30002CF3CCDCDCDCD52
-:10724000FFFFFFFF30CFFFFF0C30C30CC30C30C378
-:10725000CF3CF3CCF3CF3CF30004CF3CCDCDCDCD30
-:10726000FFFFFFFF30CFFFFF0C30C30CC30C30C358
-:10727000CF3CF3CCF3CF3CF30008CF3CCDCDCDCD0C
-:10728000FFFFFFFF30CFFFFF0C30C30CC30C30C338
-:10729000CF3CF3CCF3CF3CF30010CF3CCDCDCDCDE4
-:1072A000FFFFFFFF30CFFFFF0C30C30CC30C30C318
-:1072B000CF3CF3CCF3CF3CF30020CF3CCDCDCDCDB4
-:1072C000FFFFFFFF30CFFFFF0C30C30CC30C30C3F8
-:1072D000CF3CF3CCF3CF3CF30040CF3CCDCDCDCD74
-:1072E000FFFFFFFF30CFFFFF0C30C30CC30C30C3D8
-:1072F000CF3CF3CCF3CF3CF30000CF3CCDCDCDCD94
-:10730000FFFFFFFF30CFFFFF0C30C30CC30C30C3B7
-:10731000CF3CF3CCF3CF3CF30001CF3CCDCDCDCD72
-:10732000FFFFFFFF30CFFFFF0C30C30CC30C30C397
-:10733000CF3CF3CCF3CF3CF30002CF3CCDCDCDCD51
-:10734000FFFFFFFF30CFFFFF0C30C30CC30C30C377
-:10735000CF3CF3CCF3CF3CF30004CF3CCDCDCDCD2F
-:10736000FFFFFFFF30CFFFFF0C30C30CC30C30C357
-:10737000CF3CF3CCF3CF3CF30008CF3CCDCDCDCD0B
-:10738000FFFFFFFF30CFFFFF0C30C30CC30C30C337
-:10739000CF3CF3CCF3CF3CF30010CF3CCDCDCDCDE3
-:1073A000FFFFFFFF30CFFFFF0C30C30CC30C30C317
-:1073B000CF3CF3CCF3CF3CF30020CF3CCDCDCDCDB3
-:1073C000FFFFFFFF30CFFFFF0C30C30CC30C30C3F7
-:1073D000CF3CF3CCF3CF3CF30040CF3CCDCDCDCD73
-:1073E000FFFFFFFF30CFFFFF0C30C30CC30C30C3D7
-:1073F000CF3CF3CCF3CF3CF30000CF3CCDCDCDCD93
-:10740000FFFFFFFF30CFFFFF0C30C30CC30C30C3B6
-:10741000CF3CF3CCF3CF3CF30001CF3CCDCDCDCD71
-:10742000FFFFFFFF30CFFFFF0C30C30CC30C30C396
-:10743000CF3CF3CCF3CF3CF30002CF3CCDCDCDCD50
-:10744000FFFFFFFF30CFFFFF0C30C30CC30C30C376
-:10745000CF3CF3CCF3CF3CF30004CF3CCDCDCDCD2E
-:10746000FFFFFFFF30CFFFFF0C30C30CC30C30C356
-:10747000CF3CF3CCF3CF3CF30008CF3CCDCDCDCD0A
-:10748000FFFFFFFF30CFFFFF0C30C30CC30C30C336
-:10749000CF3CF3CCF3CF3CF30010CF3CCDCDCDCDE2
-:1074A000FFFFFFFF30CFFFFF0C30C30CC30C30C316
-:1074B000CF3CF3CCF3CF3CF30020CF3CCDCDCDCDB2
-:1074C000FFFFFFFF30CFFFFF0C30C30CC30C30C3F6
-:1074D000CF3CF3CCF3CF3CF30040CF3CCDCDCDCD72
-:1074E000000C0000000700C000028130000B815832
-:1074F0000002021000010230000F024000010330C0
-:10750000000C0000000800C000028140000B8168F0
-:10751000000202200001024000070250000202C0E7
-:10752000001000000008010000028180000B81A80B
-:107530000002026000018280000E82980008038031
-:107540000010000000010100000281100009013854
-:10755000000201C8000101E8000E01F8000002D895
-:10756000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC5B
-:1075700000002000CCCCCCCCCCCCCCCCCCCCCCCC5B
-:10758000CCCCCCCC00002000CCCCCCCCCCCCCCCC4B
-:10759000CCCCCCCCCCCCCCCC040020000000000067
-:1075A0001F8B080000000000000BFB51CFC0F00350
-:1075B0008AB7B13130ECE644F0E98159181818F86F
-:1075C00099C8D7BF1168C04E20BE01C4075948D71B
-:1075D0007F551AC15E26C9C0700A8827883330B427
-:1075E0004A21C4ED651818EE01F92BA16272403DE5
-:1075F00073A4C977F3281E3CB8D014951F620CA160
-:107600005F9840E82234F950A8BCB81E842E36C5D5
-:107610006EAE841E71F6A7A9A0F2BD55F0ABCFD512
-:1076200040E5C7A2A90F81F2017EE9B234D8030078
-:1076300000000000000000001F8B08000000000098
-:10764000000BED7D0B7455D5B5E8DA9FB3CFFF6421
-:10765000278470123EEEC400C1063C4280A0A83BC5
-:10766000FC1A7DD41E1025E5A11C446B004922A6FE
-:10767000D78C96D76CC8870450E3E751BD457BA0F3
-:10768000D88B0E5BA3A68ABDB43D887AA9C3DB2242
-:107690005AA52D7A83FA2C58A0B1572ABD4FCB5B3F
-:1076A00073AEB592BD77CEC9C74F47EF788D43769D
-:1076B000D6DEEB3BFF6BCEB95634D94FF22E27E422
-:1076C0001CFCD0A7291142A6F73DC92D5932C92368
-:1076D000E41B3E823F1FF923534816210D3EF6BCA2
-:1076E0003D10D905CF2D8D84A426C2F771491221F2
-:1076F000244848899A0B2D02B1870BE15977617CA8
-:10770000323E67C23387C8848C84F218FDBD20EBFB
-:10771000FB9C42FF399AA880F114F68AA8A43C96F3
-:10772000C2F6DF226446DF3C48DD57F578B86FDEED
-:10773000EEA7A26B24C5EB9E837F94E5598950E6A2
-:10774000FA0D47A5C79FB7D51F4FC2B9382F95A8C7
-:10775000382FDE9E108BD8E7E7EEE7A346F2F8F36A
-:10776000E3FBC32DD3B8026E6D8D3E7CB636EA24A2
-:10777000E5258436333B4BE93344CC5DA5FDDBCDB9
-:107780002312871F9F0F8C63D0FAF47F42E1DE9CA7
-:107790004B9241C0214938E0D61C5AEC33D3F42730
-:1077A0009E2497C2AD84CFB9A8FF7AFD302F0A0777
-:1077B0003FCC2B0D3C97C2BCA6F79F97BFD83DAFDF
-:1077C0006A6287CF70E7159844C821C0876A128221
-:1077D00078B9CDD19FAC9B56779AFE08A70BD5E020
-:1077E000EB1B229E822572DFF8000723E0A02F6F9B
-:1077F00034C7496F6EBA067820BE3A387CE20AE395
-:1078000007AB0F8FF4199A1D93803568F110E02DA6
-:107810009F30F8E557B7DE2A4F2194D53A0F4EA096
-:10782000F0CBEF5EB99040F9E8152780DF9ACBA640
-:1078300056CEA5F5B2CB63AF2CA04D423143027AB0
-:10784000DD0A9D15407F5FB32A68B909FAA365CBAD
-:10785000BACAB4106EA6036E1472864ACB1EF8B56F
-:10786000280DFC482F1EA473DEFEED33C1CF436C00
-:10787000F8437E5EEFA0CB8C78BF91E1CBA2FF01F5
-:10788000BE46101B5FD37EB22B35075EB25CE33C75
-:107890000ABF20BC6FFD9B8C97439EF41994CE3D8C
-:1078A000A5B29EA478CA26B16CB58CE263A14A4009
-:1078B0008EE5E4EA1290C360786926A412F89F4A24
-:1078C00007B2C826E77ECEF9AB60CDEE9DAD749CC5
-:1078D00033B34331A895AFD3B94EEDBF9E3B40BE05
-:1078E000786DE5B2E74802C7EB3C5844E76595C9B7
-:1078F000B18729DD6C2D3DACDBE5E3B15EF9E2A695
-:107900000F62A833B83CA0F0514A65D31FF9ECF4DC
-:10791000A17C4AFA08DFE8C4C770F1757A98F4F1DF
-:1079200059C71378EDCF571B055E7D847EDF52B2B9
-:1079300078407DD51FAF4F92046D172A2566324DD2
-:10794000BBFFB4EB0BF7D326DFDD72541935A36A06
-:10795000E74078CB75AE57F4EB6F508C7747D0A2E9
-:10796000AAA37CD5B81E688FDE63114A776740F6FC
-:107970005078281D17A5A04C8A49EC61D64D4AA223
-:10798000657FD44C6E413A48225EC4FCBC86EC90C4
-:10799000B36AAE530E932A4BB2CFDFDFA0E13C3483
-:1079A000182F17EC02DA2105851A2229A05B41AFB6
-:1079B000A092CE9D0F65A79DD1664C25E9F0A072DF
-:1079C000BC4B92A0D76F0D4DBEB8C75BE29CEF9049
-:1079D000DB8554E33DD1268D9CEE6BA792F7047EA8
-:1079E00028102F13761DC7D3660FD92B5D48E5C12C
-:1079F000986BC152209BE1D32C6A87C0932A9FCDFC
-:107A000063A6EA4057648FA4C23C71488A4742F596
-:107A10001DD40B4A06F623FBEA90FE9490894FF1A1
-:107A20003DF3BCD8F8BD655FA206F0531DD58C2D83
-:107A3000748E6B15D3D80874318DC9A7EAE88479A0
-:107A4000A0EF3C129BD7B7A57C5C879AD39687762C
-:107A50005906FBAE5AA52A7F2A7CDF3661207E229A
-:107A6000494F4FB70D9E6E7BF06689DA835FA2BFE8
-:107A7000CC2433018E7F8A2DCE4A0D80AFF71B0FA9
-:107A8000EAEAF83E7BD0FD7DAD42EAD2C98156C913
-:107A9000C7F8D26769601F8875AF0576A720DD1625
-:107AA000DBC4D69B9B8BF05DBBE717BA6AE3BFB51F
-:107AB00054CD78A7F65F8F80B7E8A7B77DF2A0A373
-:107AC000BDBB5D6F7F425E507B18E85CD041504A81
-:107AD0006C95E87B6F6CB105EA6CED63150CFF19D2
-:107AE000E6DF8BAF4F397FD16E30BAFAD3EEA656B0
-:107AF000D04FEF691D575D4CE9E8F74F28B14DF4C1
-:107B00006BF58E89F3C05E7A8FD3B7C0D389DD4D14
-:107B100079E9E823139E7E21F9711C415FD5F2F2C9
-:107B200001E96130FA7ACA4D5F9D577F21F475C82B
-:107B30004D5F1C1E273BD9FAC9FD23185E38BEDCF9
-:107B4000F8C988974FDBAE3F3DFD5AA27CEDEDBCF6
-:107B50003A3D3DF1F90A7C7DD6F90E4647798669B2
-:107B6000EA74FC51D48E91407F9491588ACE53A7E9
-:107B70000FD45B31A6B7845C12ED4F4BCC4E53C98A
-:107B80006BD85E21294B477BDB6967CC57E84BDA22
-:107B90004F7309497A715F64FA504F95A884E93FA1
-:107BA00033943F03EC08FEA3CC8EC1BAB3C0FE07EA
-:107BB000FD359BEB5F89DA5B747DA132E7BE37E070
-:107BC000B23F14BE5FE8676F0D737FEC97F9FE3824
-:107BD0004842A88FC4FE38037FF6EE8B395C476AB3
-:107BE000C494E9BAB5839EE42609B41B41FD4C8ECA
-:107BF0004A49E62F20256037AF970A62A00FE83E7A
-:107C0000AF278B7E7FEF070AEA878668DD8A1658E2
-:107C1000F6B50D13BBE9B8F7349269C59EBEF1EE17
-:107C2000513B7C00EFF6E2F50EBBF6BB52A250B61C
-:107C3000E91D7F549B563C0D8653DFEEA6F090293C
-:107C40002081FF02A1FBA22F18003FF6BE174EF6BF
-:107C5000B2D2BF9C0B364F011653B02F6DA7B63B67
-:107C6000B9188AA3A50A4A07ED1EFEDDFA4D05ECF8
-:107C700077DBFDACBC63D3AC8D169447F2FA561596
-:107C8000FB9ECFCAB76DFA4105EC0BDAB2E99AA9AF
-:107C9000BE6EF324ABE269F8FB365976D85F4DC669
-:107CA00082F2FF43D7E1F79917BD40E1498112B352
-:107CB0000CD26B97150ABF41C7DD952500FFD7147D
-:107CC00002F4EC3762F19B0CA43FA47B7FAE19DB7E
-:107CD000424B0DF4850CF528DE1E96605FC7EC3133
-:107CE000F0E79C43FAA57C41BFAFCFD6B13ED16D42
-:107CF000F659519F3DD68B2717DEEE557BFC80B79A
-:107D0000EF8DF9F01713693FD642390664F3BD0DC4
-:107D100045D92B6D787CCC37A70AF0489A73D12EC1
-:107D20008992DE1F13CA62DF5C403A2BC0781C4385
-:107D3000251FA1743A2EDE53012830AAF4E7708F74
-:107D40004BE6E9EFA15DA548E7BE34743BCA0D07D9
-:107D5000DAE3A845543E8D90483C9DDC5DA9E6A041
-:107D60003C185149D73B809FE09B549F30FB2CE14E
-:107D700003FF56A67132CDF333C073934CC71D4D2C
-:107D80009208A7C1E09A099EADD127B3515E7FCE7C
-:107D900070CDD4DE0DCF1112E397956A39F2CB5036
-:107DA000FD3B6D7C3FD5027E38FA6CE27E38777BF6
-:107DB000BFDA416269F0EB379CFE210DF625B67201
-:107DC000BD6C307D1072FB89189EDD7A6101D70B86
-:107DD0002D51AA17983C5C087A20C8E1DF02BB7ECF
-:107DE000909F6192B4E8F720F707915226FF7DF447
-:107DF0003FE0B751554E7DA00D511FBC2BC55F9084
-:107E0000910E8904F3BB5FEAB86202D04F3EB3C75C
-:107E1000A337B445133638D4CB4CDF097D962C16E6
-:107E2000FA8C20FCCEE37348920E3FE8C307362C51
-:107E3000CE42BFDD8D41871C8AB62EC6FDAF8D9E1A
-:107E4000D12FDAC1FDA399F0A76BC9443A7958A89C
-:107E5000307918317B52E0F34342CEE32E434ED6C5
-:107E60000CFEC4B10F8B4CED39783E5DEFCE8BE448
-:107E7000D826DA4E9DADA63C14BE6AF98B55127D0C
-:107E8000EE2C64F0B76611A4D390B1E08402FA58E6
-:107E9000ED467F4DA8D2BD2FB69515E8A7E77AD459
-:107EA000DF763FF500FBB8A13E9B28BCDEB6F13F74
-:107EB000855C4AA1EB50371003EC09D5A4223102AE
-:107EC0004F3D0FE8453563217C765754C2F3BCD94A
-:107ED000F14AD9A6075433BE05EA8FF8CA7DEDB042
-:107EE0005EF526595624C6073936789B4AA1633F6A
-:107EF00097ADBBFCA589D62AD4EF8646C617F69F58
-:107F000077BDAC72B9E7A417412703C8BBCF441FA4
-:107F10006FCAC25FEDC4BF834E8AFAF02BDA85FACE
-:107F2000F9AB9CF875973F6FBCFA014F141FE751EE
-:107F30003C017D9E379BD123B547D17E7AC0D76166
-:107F400002BC1F2836644BEA6B175672989FF92CB7
-:107F5000DD6851BBE7FE95DB4D68975F4C6580841B
-:107F6000CFB4FEA37A59C376542E542ACC6E97C050
-:107F70001E9FAF6CAB82F63B295E81DF77027F43A9
-:107F80007C20A1A11CAE97DB2B36D2BE5B8F4AB200
-:107F90000246ACBE14F1EBE7FCFE912751097EC806
-:107FA0002DFF4B26BB0CD04B03FBBD9A38BE4519A9
-:107FB000FC0D609F8CA9D3A702D833B5DB5E275791
-:107FC000A65B57B5C2F07F47DDE10E344F9F77EED9
-:107FD000473CCB4DA048D897542B36FA0E97317FAB
-:107FE0000749D0F5407D4E371F150E4CAF0FBAE64E
-:107FF0003F96C753DCF55E56B8BFCE60F03244FF03
-:108000001B07EE5FC0E76C9BC2E323D40043221E34
-:1080100049ECFA5BB9F15005BCA75CB709F0B55D56
-:1080200026D5CCDF1C473D14E1E3ED2CCFC1F60B88
-:10803000552647C79AFA16C0F7D866192C05F2B824
-:1080400062E0FB51CBEBF67B281EDA0B492C64E097
-:1080500010D8EF8BE335A4CBFC5CA6C7F2EB290963
-:10806000D07AF9A52469D0F6EDFB1FA8D068394273
-:108070003754600AFBCA193E7D252406A690C72204
-:1080800029997D4F424C5229EFB140951E183F036C
-:10809000F75F77E69298D7E8931B82AEEE6CBEC787
-:1080A0000F7AE481E27BAE9800FEC65215FDE4E44F
-:1080B000630A27E14F54205E163761BCF6596CDE27
-:1080C000F40DE253D5D9FAC7DC3F1BF9A43DFC34CB
-:1080D000CEC35A4762E3B15E8C60FC860A54F05707
-:1080E0003655337BD78D8FF524F1B832DD4EAF870F
-:1080F000906EDA3F51F8BEE0C58D60E78F835F690F
-:10810000F9974D7FDC381CBB45C40F85DDB245EDCA
-:1081100044BEB728CF815E12768CBFB813C7FDBFAF
-:108120009CDE87DABFBFC4E96F75DB356E7BA65E68
-:10813000D61DF6AB7B5D1F795257C0FCB6E4537E6B
-:108140004FA3077E03FA9AB6DF115DFCAB89465F49
-:108150003F7D72C8C0EFA23CE6AC86F8197A7D2A52
-:10816000F7608F6632BE1A2BE4D037285F0D107F80
-:10817000147CF511151287804FD40EA42F6296201F
-:108180005F097E51BA3BDACFA7F460D4CBE0B906E1
-:10819000FE2239B45C48E93D65B38784BC504B3B53
-:1081A000E313A5FE74F7A021231ECF94317F7596AB
-:1081B000D56D4293606927C6F5285DFD17D095AA55
-:1081C0002725C0EB98FB17E0BA7EA93056F7AB2CF9
-:1081D0007EEC5EC7CF397C89BE1BED793F1B8EB22A
-:1081E000F87D31363F579CBDFE5703C6D9FD319708
-:1081F0009D334C3F428ECAFD08DCEF3558FBE1C68B
-:10820000D795B323903E7ACB19E4ED4D2AE78BA3A3
-:10821000BB1C70E9070F65476CA0F9F9859FFE53F9
-:10822000C60550870D010E6E385EA23AFD879F3756
-:108230001CDDF1EF97B8DC1F4C1E044D33252BE0FD
-:108240003F23CCBF1322DCBFE3A4F79DCD32DA215C
-:10825000C1B0BC134CC9ACFA6ED4C1627C4AEF55B4
-:10826000AA8DDE47971E4A413BB73ECAA4870693B4
-:10827000B7AB7CE60D2ACAADF4FBF1BE7C03CA2580
-:1082800069F20D32E2B5EEF3C937182ABC7BFD9BCB
-:108290003C7FE0867241C7C6D2DF51B8AC3EE821D0
-:1082A000E897F998AECE16575BCDF78137F07DE4AD
-:1082B0008D241E818FA7885C09FC728A1C8E4CB3AA
-:1082C000C993FB548DF14B9BE76DF0AF8A78F94D64
-:1082D0001DAC2CE673F3FDCEF2D7C9E23CF0EB7D8A
-:1082E000FD3E0FE26BB5CBBFD6AC32FD7133A96B4F
-:1082F00005BCB5784815C8B11B74A28EA0A6EBBA10
-:10830000671E9CB19296BFCBED91F7A95C366C715C
-:10831000D035A1A406F87DA76BDAB59710689F6CDD
-:108320002D807D5A36C17DAB1BCEABDA9CF31B6C26
-:10833000FEEEF952F2C2F9669A87BA474A6B4F3F8E
-:1083400022E40DC757A6BC2A914FF50B20205ADF17
-:108350009A43D8BEF3AD60B209E535CBA71AACFDA0
-:108360002F55463F9FB6FDAB83B45FE7EB5900CC7A
-:10837000D6966BC5C12F24E28235A4CE1C4D7F5505
-:10838000F72DB246135BBDE810EB150F5C2FD3BC85
-:108390004FE83E4BBEB06FFEDF9512C7D434F3BF3B
-:1083A0005D49D440FF5EC083024F15F18D7E608A27
-:1083B000DF5A35D4266541BE5317EE03FD86EAA089
-:1083C000875AF805E45A09936BC112E777B77FF82B
-:1083D0004355C4E153C87F188236C07E08A514F007
-:1083E000DF94AB277BEBD3F16A605D1742298E7275
-:1083F000A35E67F56B8871D7EC32E43F8C3FD4B74E
-:108400009F8F71F5FA9106FA77551233B10F17DD88
-:10841000D59E9548D2A60F6BD51E0DF8AC96DA45C1
-:10842000F6F7EBA38AC34FEB7E7AA8E51C2A817D81
-:1084300092CCFC483A2DDBD6FDA70E89E7AF185940
-:108440004B06F0DFAD8F327FF00DEDE3B398DFD058
-:10845000297F4F3732BFDCBF3DF67D0DFCFCA71EE8
-:108460003D7615C07BEDBF2AC407F91B8F85490AED
-:10847000EDB1A406F6D89A2EC54CA6CDAF6862F130
-:10848000CFC7C388AF354F7A930B69FB354FBF33E6
-:1084900085D0F99DDED4F3E268B09B1F95581E820B
-:1084A000D53DE56AFA7E8D4A56A4F31B4CF630F9A9
-:1084B00073F2D96015F0B7B467FFF5D86FE7528F44
-:1084C000D7B6DF2EF678906F693D66973F2225C7B5
-:1084D0004BE9E6C7F23F4E3E22B1F9EDF524FD30FF
-:1084E000BF3D3BB5049D47ED9E0F509ECC7DFC8764
-:1084F000118043ED5EC5A1076AF72829EF147C1EA1
-:108500008327C48DA41940279C5EBAD661BCA8A657
-:1085100073EB07E0C7A8DDEB946B142EB114C0F524
-:108520000D25B610CA4FFD4BC4A0A07AFFD0C311D1
-:10853000802BED77A59605FAC649DFD0FFD99CFEC2
-:10854000FD11D283F1BADACE76365ED7577E0F7A36
-:10855000A5D6253FDF875FF2FBDB33D7785CF6CC0F
-:108560009EA1C5EBD6FEF0CC43161DF7E4937F78B1
-:10857000C8A2F3BFE5AFFFF9D0B7803F7FE6D74190
-:10858000FED73EFAEB08B1D163AD87F1E3E9B1C4A0
-:10859000A27B5472FA37DE24F84B4EFFF4F7E30C5B
-:1085A000BAEED34FFC25CFA0F5EB7F3A7F14C0A1E4
-:1085B000FEC773470DB4FF067A4D7AEDF34A225E8B
-:1085C0008DBD123382F6F1A70B3F07BA0E8C83796B
-:1085D0009E3AE28D81DBB996BE6B980AF85A87FA0B
-:1085E00018CA1B289C6B1EDBFC01C889FEF0B6462E
-:1085F000CBE8AC4F8D06A77D4DD73B0B106FA40782
-:10860000F5A8BB7EED6B149F1766C6DF19F2B106A5
-:10861000F2AEF6B176365E27C55FA43FFE4EC12F9F
-:10862000B3FAE3EF0E17FECE905BBE970F798D5D28
-:10863000231C7152F1EC8B0FC6B3E203C80B210F60
-:1086400006836FB5C4E6B5CC633EE801BE7A32D886
-:108650008BDF8580DF1F9E1947287D1CF7F45C0F98
-:1086600072B3E7A75E7D177DBFE6A76F209F9DFED3
-:10867000F12B9A81F9992424E5F13C31F67308E451
-:10868000700DDBCB91DADDE19437D287A79AE4A2B3
-:108690004A2382EF8FE1FB24A3FF9AE4FE25521ABE
-:1086A000BCBDE1296276407224C265DDEEDF69CC93
-:1086B000BEECC3A7540EF83CB600DE67C2A758BF95
-:1086C0000EEB9F69C3EB6EC6B7EEFA35943F41EFF0
-:1086D000F5C36F527A039EA7777A55D07BA7C1FE68
-:1086E0000AF5C77B1FFC99FD33DCFDCA2B6EFE1615
-:1086F000F1630E87CCF461713B60E0F50D177E3FAE
-:10870000F7180E3A12703CF9717AF97F8ACB8D1AFC
-:10871000625516D8EC139F87DA27905F46E2D6E8B9
-:10872000C2BEF99E847D04A5BF938F2A18AF69ED60
-:108730003C8072DC2D2F6A48FA7DFB5F3DCC5EAC3D
-:10874000D9BB7F0AC8B593CF3D8BF459F3D8310D0F
-:10875000F62F2FEE794AEB2EEDE307D00F499B7EE3
-:1087600038F9A3FD53983C48BFFF0D6AACFFDA7D92
-:10877000CEFE6B1FFBC0D1FF5AAB5363790C038F46
-:10878000F3BE6A2E85F5BE7FC843409EBEDFA9A416
-:10879000F5BFF670FD28E0D4FACA82DF419CBFEC39
-:1087A00070C0003DDAB5C91C7507D86B873D04E47D
-:1087B0003751CD3F7869B9EB9500C633BA0E5FAB40
-:1087C0001836FFC4332E78CE7CCD9A1BA6FDCDEC97
-:1087D0008E97C116CA2D37CA8FD27DA3DD7FF54A89
-:1087E000E52890FBCD60CF4F84F16251F07F289156
-:1087F00005952C7F50D6FD69F537EBCF138A63BE04
-:10880000A047977B7DB6488F62BFC5FD4DADA1F4F3
-:10881000FEE8059AD817D0716D7290DAAA55E9F082
-:10882000364B637648A6EF976ACCDF93E97BC52089
-:10883000ED7BF99BE3470BCBF174F39EC6FB71FB19
-:108840005733C9030FEFA74C331CEB05782FB2E564
-:10885000C58F26C98D90274A4221773C3AEEB3C78F
-:10886000A3AB0EED87F873EED5FBF201FE11D2AC8F
-:10887000BF87763C899D1BC08E75C79FDD7989991E
-:10888000E2D1BE50CD9114E9DF5FFFF8BB897928B2
-:10889000CD63E6F90A6DF1F766BD5FFC7DBD46C7A5
-:1088A0006DC9808725DA9C7FD280BE649248F77DAF
-:1088B0000BA79BCB49F7532B619E3116BF9FED82CF
-:1088C000D7A51C5E3F3B9F2E9CAA9E0A62A81E0A4B
-:1088D000DFB94BCC661081F397F7ACDD0F7C26E255
-:1088E000F7D644F95C70E8F01B6E5EC42ADFE27BC9
-:1088F000B521E445103D27AD5EE89B87C5F755518E
-:10890000DC2779389F1D78F3661FC82D95242A0B24
-:1089100061BFC4E39A986F4FFBCB4BF98949E7AB32
-:10892000E906DADB79A9D50FDC0471757D0CC62365
-:1089300094B397A0FFD0DDAF128D59980F16322A4D
-:1089400014DB38ADB92C3EA3EAF1B479C3ABB4C49F
-:1089500013B05EE5EC65D8AFEC8B613D121A5ABEE0
-:10896000EC77AE8E207C7D14BE201F1164B02E9E4D
-:108970003775F7D511D433FE839E9DF0DD1F6279E4
-:1089800054B7CB8118E459B9F3A82ADE6A27D05F1F
-:10899000EB3109E328827E5B0BEBCE03393E401EB0
-:1089A000D54B9ACDAF9E298FCA1FBA11F3A8FC9F51
-:1089B000368FCA2A9807F6586B361179559644E7D0
-:1089C000D1CAF3A2FEA3F5A5B9A09F5AFDE2FBCB45
-:1089D000734D7BD95A7F00CB3CEF6AB4B7BD09EA2F
-:1089E000E78E26759DE8CF33C93536391BF1AA08C5
-:1089F000E77FD6CC7735479E7CD4115F3AF0E666A8
-:108A00001FE86FFAAC2C02F851BA02BB3D2FD54ECD
-:108A1000ECFA483C051DB5160F1CBF53CF5E847E93
-:108A20007C51F6E949D34C537FBE8FD91F827E7D9E
-:108A3000B924097AC967241EB809E83937140B32FA
-:108A4000BAC438595B08DD53FDD6D1567C03C6DB6A
-:108A5000CEE804B95ED071FFF95FC6E75F64615C80
-:108A60002244309E96791D65B88E559A19F6DAE043
-:108A7000987B5EFABCD4BBBD6C3D2DF1E52CEFAC10
-:108A8000DA198715791AA27E504A1478411EE6B287
-:108A900038ACEC63FCD6872FAA2A6CFECD26B2DC5C
-:108AA0000212509777E2D146554F62FD127FE27C69
-:108AB000AF233ED7CDE2BAAE78E27CE516C6DF83BF
-:108AC000E04F9CCBD80A71B789109F8BF2F37D06DB
-:108AD0008FD3992CAF28033DB5150F1C87EA688CFE
-:108AE00061FBBB1ACB59BE9244B85F3BD9047402F8
-:108AF0006E0946F73F6802BE092B822F7E88E53B50
-:108B00002556BEC9FBCC5CC8373CF0E61B55AB28EC
-:108B10007DB49A01E4FFC1D6A72767205E873B4E4C
-:108B2000FFF5B271DBCC10EE77075BB79E62E30E08
-:108B3000751C115FEB5B9F0FC769350619A7838D05
-:108B400033F8FC199FDCB17F35E62FF828FFFBE9ED
-:108B50007BDFEC1E9248D37F16E79F036F7A515E4E
-:108B6000B7E5B2FC284F49C8644E4067FF9ED2BCAF
-:108B70003978DEA1EC02CC9FBF637F3BCA190DC6DA
-:108B8000A1553CB1D04AD62E61C239DBC83C82F136
-:108B9000674F49DE2A78DF403AE273400F97CB2CCB
-:108BA0003FB9A4E426E8271BF892CEA3DCC7F69DC4
-:108BB0009E928B6F86FAFBA7BF9E68023895333A68
-:108BC0002007F31D706C358AC4B99D01F9DE53EEA0
-:108BD0008C5B109F33FF93A84B306E4EE54287D7D6
-:108BE000665752BD781FF23329B3C0DEDBFEB56B8A
-:108BF00063767EFE672DFE1D565FE46B093E4F9F38
-:108C000037D79A2BF2E6123EA50CCE29F5E6532F64
-:108C1000CCB7E77FF17CEA90C8A7E6F1CC0EFA5F0B
-:108C2000BAFC39F739C6CF2B9FFA292FDF0F07C9B6
-:108C300058C8A7FE8987C4529017F36B250679316F
-:108C40006EFA70F7E73E07D06B8F64E0E7F7013804
-:108C500036B9979F70E1ED463FC6E7C478CF837C75
-:108C60002A1D9C4F47573BFB195BE73C9F755E8372
-:108C7000335E55681538EA9FDF56E4F83EBEE302DE
-:108C8000C7F789F74F759427252F76D4FFD29E39E1
-:108C90008EF2E4CE2B1DF52FDCBBD851BE28B5CC0F
-:108CA000517FDAC11B1CDFA71F5AE3F83EF3C87AD5
-:108CB000477956F7371DF51BA87902F92C7040004B
-:108CC000F7ABDB46CB76FA6CCFA67A250BF3B8353B
-:108CD0009ED48FF166968BDC9767E06EA7146BA627
-:108CE0004EF9573126CCD331CFF046E423A5386F67
-:108CF0008E81EF672C00BF132963E7B444FCDA537D
-:108D00004C527EC8EF0BB9F0EB8A4B7B946D29C0B7
-:108D1000B376F4CB07A5487FBC7AA2EE7CC6A1C58A
-:108D2000B555E3B3E507E4F9385F8CA57C817EC4D3
-:108D30008F15D8B7907961B40F6CFB1B84A3D8DF73
-:108D40005CE623CD0053C11715CB7B46BF80D5C44D
-:108D5000BEC62B0F272FB9BF5EF1A2DD25E4CC6084
-:108D60007A45494E73E421B89F54FE95F9609F1EE1
-:108D70005986F2A8775FD02B1FE333E1BB478DA163
-:108D80007CEC957F7B0A1C7261A8F6995B4EDF052F
-:108D9000421FCF05A597D711C80BA372E9CEABAF81
-:108DA000C23818A9278EF3807955711FE83D6A975C
-:108DB0007DC567DB3F47CA997DF6F766A78660BD2C
-:108DC00036F927EC5501D7118575718CEB85650255
-:108DD000FBAAA6D9B128F801DBA08A6D9FF65DDF5A
-:108DE000F958BF39A4C9E02F6D3E381FE3035E7FF9
-:108DF000DC0779CE4D9E7825ACAB295BD6D3E53B1D
-:108E00006DF631FF8CD6109CB67B00FAD034BAEFE9
-:108E10004FB3DE7FF131BF4BB3BEF820E8B99CB051
-:108E20006640FE44EBFE598B305F77A1AAC3BE9625
-:108E3000D04DDC3BB6B8222171F46769B932EA45FE
-:108E4000AD2182E30F36DF5B7DCCCFE06DF00F38D4
-:108E50005FAF96DE4F9169BE9B61BEB983CFD70BE2
-:108E6000F39560FC108EBFC9C7F0E886BF87986D88
-:108E7000F368BD96635FEE28468A61F97AF72E9C07
-:108E80008A744A05B5837EC53E82D2EFC340BF6275
-:108E9000FF2ECEB3DEE263790902AFC460FE881113
-:108EA0000915F7BD3909B6FFED931F8C8E723C3161
-:108EB00082E7BFC6A8189704378DDD8FA1F8D9BE09
-:108EC000C77B690CF1D5FE15956C027A2BA6EB8158
-:108ED00073B90759DCA9DD13AB8A87FAC613EDDF36
-:108EE000E1FB40952CC9C27B529485D174F6672F63
-:108EF0009D73B8B9E5EC011FCFC3CA27F94CCE96D4
-:108F00002E85A34499FA71DB1B0DDCAF3CFCF329E1
-:108F10001D08CFF631F7A11D2DFC63245A3688BFFA
-:108F200087C54BFBF0BCD448513CAA574C45A75FC2
-:108F30007B31C7739D2B9F97E359E057F8ED493478
-:108F400017F95AE05B017802AE94D9D181F495C249
-:108F5000F9C60DCF53FF4DE17904D600743B96AEB0
-:108F60001FF8E6C01504E3602E7E14ED04DDBBD7C8
-:108F70001FF6FFF75EBFA087CCF5ADB4FB0F11D78E
-:108F80000D737AF371BDF942F9DB6D709E44CD65C6
-:108F9000FBDD7079F3AD329CC320960EFEB5B03880
-:108FA000BF53E6BC7F2450EADC7FF85CF74D78F8CD
-:108FB000FEA3DFFD2ADCCE12E7F9DDF377E36BAE2B
-:108FC0003F7D1E261993DEEFEA8EC789F886C88397
-:108FD00015710084035DBF67961C47F95746CC9D09
-:108FE00069E4D3323FD30B5DCFF9314F225CA5A1A9
-:108FF0003FB6A02C5501E5823A12033D71F1F143D1
-:1090000024413BBD20C0E47E41595202BF47C149C3
-:109010009617B89DC72B0BEA93D24ADB38969FE987
-:10902000AD8FDEBC1DE5E37363595EFA6D15CC7E32
-:109030003B14BDA1A302C62D67F9E461BA5F84BCED
-:10904000B1F0116F12EDADB26E027E54AA05AC30D4
-:10905000FD7EBC914CBD713CE47DF9F079B251C705
-:10906000E781B1DAFECB69BDF5850103FA6D290A06
-:10907000B0F3BD611FEEF7FF9CFD75F4AB9E6E8CE7
-:1090800062FDB66F9B685734EF3F817EC3A0392DD8
-:10909000C6FCA8A642CA613E874CF0731035662C08
-:1090A00086EF077E83F5142DF11B0BEC93651AEE0A
-:1090B000EF010E104F68F2B37CB9CDFEBA68363CB2
-:1090C0000BC98A4569E0BD82EB1D4A518A96D79744
-:1090D00087A495A7942CF02797914EC873F7B424D2
-:1090E0002B404F93D5BA01E38CF1252BC07F3CA6D2
-:1090F0005A8F810F5D2B67E745043E3C7E127F222D
-:1091000004F552D2AD74DC89011DC7293892C4BC64
-:10911000E58FDE9C99D6FEBFFD68057EDFD65879C7
-:10912000789E8D9F4319E2951B8BE73CE0A7E3BD3A
-:10913000EA67FC9AA95FF11C6ABFAF723A39F0E6A0
-:10914000C451605F3664C8A356748AA7114C3E812F
-:109150003F62FD78635476C8DE0F8387F2DCB30C80
-:10916000AFA58C3E9B7E3C310BFA7DFECDA53AF837
-:10917000FBFE945B8CFB86534F7B4DB05F4EE590BE
-:109180006ACCB77C7AE68BB03FFC43E3C11CD526A2
-:10919000174FFDE895191EDADFA9275F99A1227301
-:1091A000251D76ECBA73AFCE003BC19A434AEAE87C
-:1091B000B356D708F45BEB63EB107972DBF3B4566C
-:1091C000785E19CCC6F679A3E43BA1ACF85E1DF736
-:1091D000EE345C378B2BF0380E5D5F5308E95AA7ED
-:1091E0001B1088175ADE7110CF7AD38BF4F75121F8
-:1091F0002929BC10FC820AB6EB594D92904FA1A5CB
-:10920000EA803D89FFE52401BE09BEA6EF475AE387
-:10921000F7C1DDE9E7F90F3C8F70E39BB74F04F826
-:1092200008B9AECE2518CFE8F99A2F09F6E83DAA7D
-:10923000F19DE560075EA7E23C6819CF1BB9F1B369
-:109240003C58E488E3E5F0F884C06B263AD9DA4864
-:1092500062C514DE3F6BF4C560FC7D8D3A967FD20B
-:1092600018C5F2DE46039F4F3796E0B3AB3186DF79
-:10927000F73496E353E4F5E1D65E417B3A5E017A3A
-:10928000E81AE687D30DD9847C852C95F8E0BE26B4
-:10929000FDE8BF55C17E1BE44A560EF2BD04ED73D6
-:1092A000799EDFC8FC39ED15469F7C15F2B4C943A1
-:1092B000249047D62CE66708437FB47DEE1242DE49
-:1092C000B6C9F573F49FB74BF8FAE87CB24CE77770
-:1092D00077FD884A1790D3BF1D958B58EEEB373D2D
-:1092E000FC86FB047FF9DB36FADE3E9DAE9AD2D1D6
-:1092F0007689C9B13BF9F73BA6CFC8BA01CAB366B4
-:1093000064815CDF3E8B183A85E35D866C79B2FA46
-:10931000EAEF683C98376F3CD74120A7EAF59D5BA0
-:109320006CFB9831165911B7D1CB5D756AE52EB437
-:109330003312F98B2763BE31F76BEF9E678EC17EC8
-:10934000B13C21F0E23C8BEB159033979D657AA8F8
-:1093500057FF7CCCDE0BBDA771FC6F9BBD4989001C
-:109360009F803C057959962073E83C4397B2F8F703
-:10937000AC775304F2FBB4187D0FF6A8C6F24D0A81
-:10938000A24909CA3FF2C7670620EF3DE7FED42E87
-:109390008AEF0FBBBC06C41BBB9EFB0BE6672853C2
-:1093A000341FF077C1BE6398B7A4C8DD1AEC789774
-:1093B0000526CF57C19E8589607C802A6A8A6725E9
-:1093C0008FAF8F3CD5322F04E7BE1227ECF5B707DD
-:1093D00012B7B21D33317D51CA0F7ED1FE82168085
-:1093E000C7560F2B2F0B4C6AB1B04CEB67B37233DF
-:1093F0006DBF35BB332A6743D2D4C4968397425995
-:10940000D49FD862CD26E41AAE0F48285108FCDE5E
-:109410005BD669396C2BABAC4C7CEC29D6BBEEC06F
-:109420005F5E1C4DE150B34FEAC410DFBE9D12AC2D
-:10943000BB60EF4E94AF054982FBFE82A49484A3E7
-:109440009D7B1A0FEACDC2B926F04245C3A428BBC2
-:109450005F484B7A62B0BD9CC4EF0F1174F17490F9
-:10946000E9C74949DADE1E9776DD273289DF57835F
-:10947000200579B98D9D0776D37929EFAF81585BA7
-:10948000E03C2E79CCA3637C9CFBD94F0ABB89FBC3
-:10949000736EE10E3CCF262B7001C8BF952AFA816E
-:1094A000D7162637521B8AAC7DB630462D56D2E2EF
-:1094B00067F4B236BB336F2AC5674BB6B3DCC4F36F
-:1094C000E7A3D956369CD7ADD97BF738C8EFA92189
-:1094D0001DD77F13E6FB328B879FD83F2BEB125AA9
-:1094E0005EF7328B63ACEB7A4503FABE27C0F38E8E
-:1094F000BA2EBA12D657B34D267221E34B73229D72
-:10950000AED971019CAC7B7EEB5BF3FD630979A462
-:10951000C8D4E58B08E90E9E68F151FC3FA2E9939F
-:10952000803EBA833D2D405F6B67C99C9E7A5E305A
-:10953000559EFF5800E35CDE027196DDCB2AAF0436
-:10954000732B4F66FC4B0912E3DA4A76B30FECF942
-:109550003FB6C8683F838B7403857BB14A0EAAF47B
-:10956000B95DA3F8043E6B55511ED2F76D1EC44B76
-:1095700007DE3342DAD83D2DE3F77957829D5D5CF3
-:1095800067AE467B5B2F453FC038D2FB837912E73D
-:1095900011267F27EAA442A5F566050B117FC55564
-:1095A000D7AE85764A784900F83D4F495AD8FF77BB
-:1095B000991CDE2E273B7D2097234588DFED114641
-:1095C00017D63DA54817BBE53917805DD422ADDC21
-:1095D000F20BC06B76119E7B85F7EB61FD1C9F4DF6
-:1095E0007ACC07F8DBCDF1A9EC942DC8D714EFB7EE
-:1095F0004A37AC06B89ED8523FDF47E19AE735DBE1
-:1096000046503C1CDF52DF129D857828F2D1EFC70F
-:1096100003F52D3E8A97DD1BCD02DD569EF8099598
-:10962000EA48B4F52DE66CF09FDCB7069410FDFE19
-:1096300002F83F1EC9117CCFBE1717F5CA1113ECF3
-:10964000D226AB4FAEF8A85E28B6D59F47E5C20F2D
-:109650001E5210AFFF4EC7033941D76101DDF74CF1
-:1096600052D12E08D0B904683930B908F36DE9BA7F
-:109670004900EC86C92AEA7911C7D126C96837435F
-:109680007DA087407E11E6CF51791D87733E4A94B5
-:10969000C5751465874979980479FEBEA42FC2FB6D
-:1096A00048FC25B6BC0290BFAE3C04C5551EEFED8C
-:1096B000CE97A97ECD3DBA481A47F1F25E80EF8B76
-:1096C00072E93E96BE7F3FC0FC40B7C7AD2F43BE98
-:1096D0000C31BAF3593C2A3E159EA3AE2B1E359091
-:1096E000FFA5FF7E3586F6CBBD63D4B4F960FF1AC3
-:1096F00064FE41EFD862BC57A38150FE07BE08F15B
-:10970000FBF2B8FCF0707BC17D4E40C8134F365B56
-:10971000637DFBDC5139A1BE73704AC8F4813CD82B
-:10972000AF4FCD027B743C9753CDA9595F05BB4524
-:10973000E5F260879F9DCBEDC9269DBB08D8BF3160
-:1097400062CF4B10F2605BA30F9F0F5F3601E39770
-:109750000F5F963707E215072E7E1FF7BF6776303B
-:10976000FE3D73E805B84B899CB1A8B6311859A1E4
-:109770005F3E752FDE17F27D357E17E6CB43BE0EBA
-:109780009DD25DD9CE3CCC47395CCE0578DE808752
-:109790007D17F778A867BF847EE06D7C3DBEC43C32
-:1097A000DC57821B0FCE1DFB4907DEC724E0E0BE5D
-:1097B000BF433D3B85F9EB036C5F2AF297DC794AA6
-:1097C000623EFB8219EE3376E143F835041E44FB1A
-:1097D0007AC91CA50F4037B5671592B4E585F49D8D
-:1097E000DBD0F0FD6938EF9205F7AF243A2E29045B
-:1097F0003E48A29DE80F353BEE712551B5C77EBEB0
-:1098000024E83AEFE2E617B83F18F4B4660C7CAEF1
-:10981000E57DBACD1579B998A7AE9207C0AE3D15D2
-:109820007C6B06F8E36AA998005739512D3C4F7AB2
-:109830009AEF4BD47DB7E2791E313FE18F13E59A61
-:10984000BD8BD04F57BB3B84E7796A924C0EAEF389
-:109850005907BDB23DEFD64C41BEAD672FEB6F3C13
-:10986000E080D2C7877A753EAC3FD870FE4C38672F
-:109870009227D79D370EE0A3323CC07EF9C9109ED7
-:10988000D355BDB6FB53DFE2FBE365DC1E09124B8B
-:1098900006782A8158376167164D95DA474AAFDC5A
-:1098A0009BDC02FCB0DD656F6D0FB0726B70724BAC
-:1098B0007329EA67948BCB023F437BA8C52FCACF9D
-:1098C000A29CDCAEB1FB3AACA7BD06E83DDA1ECFE8
-:1098D000A75BCB4A507F2845A400E0360F1C2D2003
-:1098E000FF9EF6EE023FC38FFC896B0236B89D0ADD
-:1098F0001F1907FBCA34FD598EFEC60DAF3F3A7ED5
-:1099000017E0417C9F17B91FFBA7EDD0DF41C61CB4
-:109910007A8BDABA24EF692F9E33DCE171DADBE26D
-:10992000F920E7CB36D7BD1DBE44B3099B73C19F59
-:10993000EE7B9605BFAA672739F2A4C607593C5BA0
-:10994000554D7055D2EFA5EC7B80D1411BCFC7C9D7
-:109950003C4E4E86719C71BBFEE3CCE07282F07D82
-:10996000ACAAF7DECB3940FEAB3BBEE8966FBD4FED
-:109970002EDFF2393DC7A5C4B3415A5E93EC5C10AB
-:1099800060FC3905F87335A7D3923D773F076AFD30
-:10999000319FF967D837ACF2991704A70F9F7FBAA8
-:1099A00083623DFDE417B3CBAA999D5BDF3EED4A90
-:1099B00028D7DF51A45B69E245E2597D36E8905F24
-:1099C000F7707F51B56AA11CAB3E1BC1EF9FDF78DA
-:1099D0007EC779B6FEE385F0BB18EF16977C3E7024
-:1099E000F14BDBCB291DD73FE191BDB671EA9FE07A
-:1099F000E780FC545E3BF9DD047E570B496F9E22E5
-:109A0000C887BB3451565AC12E7AC42E1FCAC16EA4
-:109A1000EB6B0FF716DE15E0F5AD60FAFA4157FD76
-:109A200022D17F2ED677CF47C81F28839DA67EE2FE
-:109A300015F343F975B7ECEA2F478C3F06FB13F695
-:109A4000FAB703E35F843B25EECA4E568C66FE1DD3
-:109A500003EC80EFABB180FD3EAC6F737AAD3E7B23
-:109A6000BE03DF7D709FE078FFFBC6A8235FFFE6A3
-:109A7000443D9ED3F87680D16535B5E8B1DD8ED111
-:109A80008E3CFD7FCCE3D3CEE3920CF3B8EC6F3C7D
-:109A90008F42077FF6CDA3D8F1FED3CE631FF70B1D
-:109AA0003FC79FF375762FC07C4342BFF57C5AD7E2
-:109AB0004F69FDCBF4E9A3CFF92AB14278CF6D927B
-:109AC000DD6346CBE00FF8EA27B7BD7B39DE0B6DCF
-:109AD000623E8E57E4E3F0731E9BC70C7C5F91FBE4
-:109AE000EF3BB8BF0733DCD3DA1862FBEEBB2FBC09
-:109AF0008A60FE7A28817182FDF90BA260A77FE758
-:109B0000C21A7C36E7CF88823C6A0A7FDD916F4EAD
-:109B1000F70869CFC1FE91F74BCE7E59B69F47D962
-:109B20000CE751D2D41771B1CDBE3ACC03FFA2D607
-:109B3000FBE017B4DE4BC38CDE36FB1218176C8DBE
-:109B40007E31F37F26C4C6B9FBC2CB089BEF6529E3
-:109B500016F7D10CFB7960F1DC1F9E118575366517
-:109B60002F88023D3767CF70AC47C9B09E5561065C
-:109B7000A7CDFA17BB9EC39F793D0BD2E6C1AAB908
-:109B8000E9EF176B17788A2690CEBEA8759DFA1B51
-:109B9000AF6B14C7577588F90D361B8C8F824AFC42
-:109BA0005785D2E07C38D8DF1D21C5863C943CBC6B
-:109BB000DF727865E2DF659EE44898D79146B67F0C
-:109BC0007E9DDF27F5DBEAA630FAB55DE36C1EB3B8
-:109BD0002B3C909FE37F563BCFA70F26375A422C52
-:109BE0005EF3B584B3DDD2AA60DAFB4D28FCEE2A21
-:109BF0002CEC83673FFC7FCE70CB448FC3855B6BBF
-:109C00007478701B8C0FAAE1929BE983C34DD05BE3
-:109C1000A67EFE7FA1B307870E2FA4AFBF15BCFEA3
-:109C20005EE9EB1980D710F8F21FF03AC7F5E6D0DD
-:109C3000E025E4D81E8DDDBBE8EEE74498DDAF34C7
-:109C400051AA3B7C05C417BEA2A0BFF7F08E79EBEA
-:109C5000886CAFC7F4D9E1CAB9EB30DF351EC47BDD
-:109C60003C5F9363FF5E067187C5AC5DBF7972F898
-:109C7000BC14CEE67E4B6324F8115E8B5F3DE0FAA8
-:109C800048A56D5D989769BB8F4AE90FDFC3C4B8DB
-:109C9000A30CFC4D0BD3CF43E033D3B8C3C5E76B64
-:109CA000F1EF0F0B9F83ADF7D970D190E485D837D2
-:109CB000E492DEBF977101C0738FCCF2398EC2ABD4
-:109CC0007CB89F8C60A5A555A376029ECA223CEF66
-:109CD0004933D6819FCC7BF5C2AD618AB7D7AEC977
-:109CE00096BC367879230CCF3396A7B70B73233CF9
-:109CF0002FB7B7BD44E03E44773D85D7BB6639BB3F
-:109D0000978AA8E6D8C5B67375535CDFDDEDC74604
-:109D100022F8FD351E6F777FCFE2ED972E19B83D03
-:109D2000A963F7B950BA1B9BEE7E41C11F9DE14468
-:109D300034429FAF4B8907BF01743429C4E21E2A05
-:109D4000298478BDE8275725298DC2FD5D8F3116FE
-:109D5000FCB469FA291CA89F4C7015EB11E3002B89
-:109D6000C2BD2C74FF88FBC5329390D9B04FF4C6A6
-:109D70006E65870D191DE4F0FC999975C1E446B034
-:109D8000F354BA4EDB7CBBFE6BEEFF80EF5D876564
-:109D90007D53617F380C261F1670BAC955129BFC83
-:109DA000E01F5B21A5BDDFECF208FB3B251F847B98
-:109DB000E3EA38CE84FB121EB8E7E05A9EDF44483F
-:109DC00062ACFDEF8C7DC0E58ABB5DAEC2E2D1E442
-:109DD0000DC6CF7B76AD199B8E7F5EE57CFA41B8D0
-:109DE000C4919FB4247EAB07F873C9C2451E2304F7
-:109DF000DF99BCBC86CF638F96187B51A80F4E1994
-:109E0000E510874FD7914413DCEFB0A241C238521E
-:109E1000E90646772B36EC97D7D1E74ECE7F8B00FD
-:109E200007B6FE6EE578DDB32B300EE6BFA7D74F41
-:109E3000473BA6F3B8FE7E827EAFD591AB3683DF7B
-:109E4000AB5B22FCEF32FCA412F20DBA799E480BF8
-:109E5000FDBE11E63B6F24F2F7840D1FD4837CEE28
-:109E6000D2089E97FB8F762FFE7D0B412FBD72622D
-:109E7000C3478D907477AF969A0C7433B2A9EE1BDA
-:109E8000E9FCE416E7FB0F43F1AC7476AE780A798F
-:109E90002EEA2D560D4FBAFA57573AE59898F7081B
-:109EA0006FEA54BAFB1A7AE93039B0DEFB3597E332
-:109EB00002EFBDF83E927E5FB423C2E2777B9273DD
-:109EC000D6A2DEB2BC06C843311F01AF5C8BC1E92C
-:109ED000DA258A43DEAE5818749D476270FDAAD712
-:109EE0007808D671EFAE9726E3DF5174E987809248
-:109EF000D0E0FBCD24E50139715C31F0F97AA3F3B0
-:109F00005EE6D749E28EE9A03F1B94B47CF50CA72E
-:109F10009FD7AB565D83F36F567498FFB1E523AEC0
-:109F20002A07F952E5C17B828F35DF16BEC9B67E9E
-:109F3000A1EFDCF3FA6DF5AA01F5D6D22A27DEF6F9
-:109F400068CC2EB0AE647CB89ACA9BD9485FDD77E6
-:109F5000CCA4E31F4EE65CB4855527F0F71CAFE6B2
-:109F6000BF1F971377CEA4F2E684CCFC61D63F31B5
-:109F7000B9B1E4BE780BC4794F344CFB6937ADF707
-:109F8000325FDF5B0D03EB47373D4DB8CF793FE5DF
-:109F90008C234483F689FAF4FAE0FAEC2093AF6A52
-:109FA0006C1CC897EB36A4AFB709922B69BD137F21
-:109FB00055AAD3E56D7EA2333E59114FDFFE133D06
-:109FC000CCBE835E4A03E7BD59412EE7F47120A75A
-:109FD0005764986F575604EBBDD372FB7510EF3B77
-:109FE0002E3BE5F30FB278FC3C8BC9E713BB9679A7
-:109FF00046029E5A251DE8E1EDECD824A0B795CD88
-:10A00000C7D08FF02D5EFFBA50FC43D04F4B8E2C43
-:10A010009E3F92E2A56B3989494666F9FF31E79F79
-:10A020005C85DD6340F5DFBBA0FF68D377D1FE50D0
-:10A03000CD715F9BCCAE6C84BCC213B2B506F3503D
-:10A04000760558DE11894DB7DF2F13E0F338B17B69
-:10A0500078F8BE261E1CD08E3F4C3A6A70DCDD417B
-:10A060001DE28F872B95D4E57492EFED0EE23DAFA4
-:10A070006EBEC834FE70EDC013BB8767070EB6EE28
-:10A080005856E190ECC03395F7DE59067CA4754C28
-:10A0900049277F859C7E8DFBADDCF4239EB3393E42
-:10A0A0008E27079ED7CDF73BE7735D9D733E825F9A
-:10A0B0008E279B02901F4E479F6CB74BC9BCE9830C
-:10A0C000E859E6FFCD34CF389FA790134079104F61
-:10A0D0005BCDE5CD5B0DF746EC7870AFFF84CCF738
-:10A0E000070FB1BCADF1F19573461A7DF4795D1699
-:10A0F00093439F375D0A3DE3EEE7EF9D0E859E1B80
-:10A100008C0E855C70B7FF00E2FC23E1EFE3E81AF8
-:10A11000C4653E8818AC4CF40570448694F373CB48
-:10A12000C41807E76E4EEC0AE0FDF6D6166F12FE75
-:10A130006EC7F15D974CB2AF6707C7FF8A25D97824
-:10A140005DCA713976C528CC2F50F0BEAED78FE4EA
-:10A150002C80F2BD876490D0E4BAFA950AACEF8106
-:10A160002C9677BE62C32B680F0E97CE57D439F565
-:10A17000FF277C1DBD7696DA5306F493090EED5940
-:10A180003EB6CF892F9A0FF279D50609E5ED962CC8
-:10A1900003DFAF524D94DBA499E947E2A3F0A02A74
-:10A1A000E4182C02E0F1BFF9DF2953E39AFD7CD2D9
-:10A1B0004DDB6E9F0FF6A19B5F46EB8C8EE15E3010
-:10A1C000785E174A3C9935B24F3EBF2DD5ED1F45FD
-:10A1D000AB5C9EC5ED6DCEA7623D9767B1F5513B77
-:10A1E000ED87F8F799F8FA48CC456F7247CD4F00E4
-:10A1F000FE737C681704BC54EE43DEDCF7033ACBF5
-:10A200009B637C25EC1D77FB6BD584C36E3C94551A
-:10A21000E8C8C771DB21FFD017E9EBFFF96FAC2F5E
-:10A2200064FDD3E98BFF0778BAC08E008000000080
-:10A230001F8B080000000000000BDD3D0B7854D59B
-:10A2400099E7CE9DB9994966924932933738930080
-:10A250000625780321449E370991A0A803040C1A0F
-:10A260007044D4282144C54ABFD2CD0D893120DAAB
-:10A27000505DB4D67587885DB6D235586AD1D2762E
-:10A28000B0828FEA365A45DA8D1A1FA5800FA2AD2B
-:10A29000ABDB8FAD7BFEFF9C93B9F76626046DFBAD
-:10A2A000F12D7C7ED733E7FDBFFFFFFCE7B0A22591
-:10A2B00085449D04FF7C49FF3B9C1A20C44FC8F194
-:10A2C000BFCA8DBD6E428E45DA93AF81AF4D5D90B2
-:10A2D000ED2344EF94C9A3B4DD3B473EAD81F2BD0D
-:10A2E0007D36AF44CB2BD65F238769BB4C28F9A1C1
-:10A2F000DF9234287F097FE60EFFDEF0804CA2C596
-:10A30000B179AF867518CAC77A923502F3CDF14498
-:10A31000C60709D9AB109D9411F2F6E6ECC8265A8F
-:10A32000AE7112DD3D8590B9696CBDBE8D9FB77A67
-:10A3300027D3F5F4FCBA8414D2F5DD7DFB8AF0A4B2
-:10A3400038F37B6D844CA3130402369245C86D7CB0
-:10A35000EFAB528906E3133ADFA386F145BFC3ADE5
-:10A360008444CFA5F5E368BFF2583FEBF8CBAEBC11
-:10A37000702CECFBF09533C75E3329D62F111C9659
-:10A3800049E17F5E0AF3B6C92AC075D73D498D3DC4
-:10A3900071E0A673B85AE7873F76BA8F25FCFF971E
-:10A3A0006EACBCC34341B22965CEEC709CF90F93EF
-:10A3B000F0DDD3E87CFA46369F759EC57C9EC3F5DA
-:10A3C000D72E05F87FA6CB5E99C263A0414EAD8023
-:10A3D0007EF50E753C1D7F40BFD5739D619DBF4FBF
-:10A3E000009FDF375EEB898B07FEBDA2DE4C076F57
-:10A3F00093C197A7C33C3BE3AFEF16581FC5DF31AE
-:10A40000257CCF85747DC72F96559DAEE7B88DF618
-:10A41000037A7990F60B0CEF773DEFF7F6C691E9EA
-:10A420007249AD793D4B8F249BE9D2461A7BE3EC10
-:10A4300067685D6748F72B2CFCB74B191CE3A5FD3B
-:10A44000DFDE71EACDDB613F3B9211DED67132D3A4
-:10A4500065C6A7C02700AF2D499C4FBA9B9FA6FD9C
-:10A46000DEBE344FDD4486F30721DD97CDA0F5FD38
-:10A470003DB6D22DB46A574F4A6324CE7A27A7330C
-:10A480003AF0C97AF279B43D7983E103C80DF866F0
-:10A4900029A7376FCF0F5B882DD6EF0DA0832442FD
-:10A4A0007EDBEAC4EF36AF13C7A95BB84809D079A1
-:10A4B000AEB3130DE0877FE8B8DEF30A766CA153E4
-:10A4C000BD6E63657D15E53F69F87A1EE674B92BAC
-:10A4D000B27844F8D637C82678D62D34C3D74A9FE9
-:10A4E0004723B6DA78FB17F49C68BE2B1D113FE0BA
-:10A4F000E908DFEF61BEDFDF37B67BA0BD759E5D8B
-:10A50000919E11F9E0AA46335D9C6E9F6F7A830895
-:10A510008FE56173BF2BEACDFB5D4A5A66134A2A69
-:10A52000CB88EA806F1D6929799A82F2E8034B7023
-:10A530003DAF13520B729E9CBAB56451496CFC1727
-:10A54000393D7F5677EBA5202EDF505A4ABC71D695
-:10A55000F33A8793C0F7EB09E019E572F70DC033C2
-:10A56000D0EB32392E9EFF8BCFFB46C3C87CB4ACF8
-:10A570006E643C9FF07A113E6F34B427C33E8F89DE
-:10A58000791F64F3825E33E2E3C457D45B56FE1D49
-:10A5900020FA4D48C791642FE8111F9087418F74AE
-:10A5A000A4DB981C2F1E598F88EF6F855CB5B4AF64
-:10A5B000B36B0E233ECABD01849B28D72D34AFF365
-:10A5C000BD54060FCA7163431E83DCE0FA55E8BB35
-:10A5D0007B7F70FE5BA03FC7A7333CD4853E7100F4
-:10A5E0003CA87CBDC303FB7AD5E605F95A7E4473CB
-:10A5F00018E137278DB53FBE7364F8CD4963EB3C56
-:10A600009D9CB5EEF7ED6FDF3905C67DFBDB9F3B0B
-:10A610008CE32FFB229F443363E5ABEB252D1287A0
-:10A62000CF36789551C17D83058E577F3116C7F798
-:10A63000C9A4A537CEBEECE94E6CBF3454E9F05343
-:10A64000785EBB5152253A84239DC9DD6B85BCB32E
-:10A6500007C62EA270F7B7B7DC168A33CE6C0EEFA2
-:10A660003FBB4369F1F84C7C853E17ED96D9C38E0C
-:10A6700078EDAD7A7580F3B9B55DE80CE971C80E77
-:10A68000B2B41FED3AE6A6313ACC4C8A7E04F28889
-:10A690004C32DB61A79DD7D2DE3AEF651CEE89E62E
-:10A6A0001776AD757C9DC33F1CA2F413B7DE83F50E
-:10A6B000AF12A65FF5480AEAC3633BAFBD07CCB74C
-:10A6C000EB17DC7608D4E4CBA9416CD7107AA50649
-:10A6D000D9EDD4BD9301EF9FD5DE7B4F195DDA71C3
-:10A6E00025DCEEA11D8E6F92D06EB1CEF32AD72756
-:10A6F000AF813C3D17C623CC5E9D4747CBA56097F5
-:10A70000B5352054C8B79202463BD5B7E1F356326F
-:10A7100019EC87D0260FFD7DC2C64FD6835E262456
-:10A7200082FDDF75A83722BC09B373FB7BDC3BB627
-:10A73000D076AF825C80F1893A3654629013762FDE
-:10A7400096478B9FDF26C0CF99CA29B1CF44F350DB
-:10A75000C8E3FA1657B9BBA434B07702D7C17E0656
-:10A7600017B8BC3D14858B15ED1280CFABAFD86CFC
-:10A770006D411C16ED15611F072F0BDE755E19C8A4
-:10A780001F87E6A24B5904CECB85948EAADC3A8C67
-:10A7900057F6DB858F017EEEAD4F0AC830DE9CC0D8
-:10A7A0009B322D2FBE3829007E47795FE1011F1DA6
-:10A7B0007FE942C94B68FF790BC6FB07E8FE5236BA
-:10A7C000D071F26079C76AABC711F243986C066129
-:10A7D0000BA6B0582CF1B2EEDB3C8FB63FCFBFD703
-:10A7E000E6A6A09EF85DDF66271DF78EB6508E3771
-:10A7F0009DDA13E91F743967139295A5F5CD5509B4
-:10A8000071677C540BE5BD0F8AF13EEED20A08F960
-:10A81000992D1C9468FDD48CA405760A2F5F91981D
-:10A820003F6FB3368BEEE7E21B1F5D4FC75FFEDD68
-:10A83000490BECB0EE06317FE90258DFD259A25C39
-:10A84000EE82B22F85F787F55650F955185BBF3D5C
-:10A8500087CE9F21DACF58308FF63D5CD9526DA755
-:10A86000F3FFE8BBDAE649130999BEB0D2ABD1F2E7
-:10A870001319F50B52287EF6124AA7B4FC64C6954C
-:10A880000B60FD3ED9C6C7BF6A33ACBFBC413F0FAA
-:10A89000EA257DE5E65ABAEFB5CE814340AEEB3608
-:10A8A000E8CE2CFA3F2912E363A7A345CBA7B073E8
-:10A8B000ECAB8CE6E372BA19BD16444B408F0D9594
-:10A8C0008B69B9C450CE61E5BD9BC8D5F1E4ED6D8F
-:10A8D000994CEEED4D8E5FAF64307B80C20DF54933
-:10A8E000DA11A2ED8EA3573E4A77E37C079389EEF7
-:10A8F000CC88F1DBE594872B285F12275BA71867CC
-:10A9000098FEC8607287E89767803C5D0843D0ADC9
-:10A9100017A912FABBA42525321E688744ED4B40C7
-:10A920007FC8365CAF5F96AE5E44C7CB4A26E13D3A
-:10A93000F4EBCF2458A6FDB53DEED8782F71BAAF11
-:10A94000290AED84F16AB2734BDB83B171E8BA3B3B
-:10A950009C534CEBB6576440FDE2D29B2719E0397B
-:10A9600089ED83D201F6A3D33C3697F2C1DEBEF364
-:10A970000AC17EFFA945EE96F72D7610DAEECA4C95
-:10A980002E5F02ACBFBF9AC99FC19B53223DC09F9F
-:10A990004EB53464B03B031C1ED5772EBC1FDA3590
-:10A9A000F53948126DB77E4F653619412F367D3126
-:10A9B0009344A61ACAF6A80272A7E98B39F87BF568
-:10A9C0009D2F29C0A7304E80EE6BBD4BCB56016E3C
-:10A9D000EDF1F14F1D725C47D317E9449F6AFC9D6E
-:10A9E000C12936BE0FEB4FB7AFD8783289648E34A9
-:10A9F0009E82F54370B773B82BF1D7395FD02985A4
-:10AA0000B7CD405F4B39BD51E9877194FECB26F538
-:10AA100080BC8FCDBB09C7DF6BA778043BB02F3953
-:10AA2000007671B99DC9CFF2BE0CAF2EC5E843D0F8
-:10AA300085C0EBDE8C964ADCEF22C9DB131CBEAE70
-:10AA4000CBC4BAB83ECD6E08CBD718D627F8818EC6
-:10AA5000BF978F5F5681FCF32F4CFF50BE5901FC0E
-:10AA60000B760BEC438D962CF60C5FFFCFA8EC8099
-:10AA70002FC52383FFA5EE08E80101B7E1F0CF3F22
-:10AA80000D3EC7627D79DF330AECB32901DF8632E0
-:10AA900053B15FF691682AF8B5BF4C677A6D6FEFD6
-:10AAA00054D74CE08B853602220CF60DF66AB9902D
-:10AAB000B764D70B5576FAFB5099CADB00E06148C2
-:10AAC000FE469DCE58FBAACC5D0B3A689D2F89E2CD
-:10AAD0007F12DAA14E62F027BE9DC1E4584598C4AA
-:10AAE000B55B966532BB45C0FB7B1BAAC97B747FF7
-:10AAF000CFA533BEAC18D025C08BE06BAB9C7A8859
-:10AB0000E3F17BFCFB8F9753D269E4D4222EA7D8C4
-:10AB1000EF07A9990FEDB2B2A22512D589AB5E98C5
-:10AB20003A1EFC995B72E4C0FB94AF9648EA981F0A
-:10AB3000D171EB9C018C93093AA923CE801BE04E86
-:10AB40008DA62F41EF2F746119FE805DF269B7C4A5
-:10AB5000E89004D2EA4A12CB21B18E5B72149C6F4A
-:10AB6000D5E6F16961E3FAB89EB83C29FA2352347C
-:10AB70009CCF4599AE7FAD4D36D4BB993EFBD0A35B
-:10AB8000FD3483E2E15589D4E37A2CF6D26F78DC88
-:10AB9000C66A2FD5733BD20FE625F2B10D9DD3ECDB
-:10ABA000AEA408615D74F053B37B09E7D7A8ADC9C3
-:10ABB0004007BFCE286076ED15B4F202CA94CE6A83
-:10ABC000ED7D831C7B1ED6837A213A0DF8F4A50C0B
-:10ABD00062B2F31AE4508104766B76920A7286E2CE
-:10ABE00009E170D045EC2E3AEF73F40B78AB916F1E
-:10ABF0003EE0F0011D486A3B427F07F75B4914F4D1
-:10AC0000CDE57353D06E25A76E1D07F10A7F0AA309
-:10AC10005B3A8E938FE3443AE172EF376327F68015
-:10AC20007E12F253E0819C92713C517F505A54E065
-:10AC3000A5E583FE734BDB25B3FD03F650CC7E5AAE
-:10AC4000BF793EB597A6D7F6466D5E902AB72FB866
-:10AC50009DB6AFA1F6938BEEE78F194C0F1E0CEA51
-:10AC6000722A8C379EEE83FE7428393CA9C51DC319
-:10AC700007B571C280BF2C857EDD8C3FE0DB99C9B2
-:10AC80009091E163DF06FECD4A65ED87E93D5EAF59
-:10AC9000490CDE5B2A999CB0B6B3F171D73AF5DA6C
-:10ACA000AC42A37D1522408776C2EC2C19748F1F0D
-:10ACB000F519C2ABFACE8634D09B9FF52D4D239368
-:10ACC0006272D4E1FCEDD8F7A91C899225DF017EE0
-:10ACD000555E9709D8CB7738185D2AE9616F06FD74
-:10ACE00066A6C4F79B27F2F564825F4DDBDDC3FDEA
-:10ACF0001EC717E7A3BF9D9FC9E245A9397528D78D
-:10AD00000196018AF73432A87B0D784CABB099FCE0
-:10AD100007C71793B1FF99DB0FA509EC873293FDA5
-:10AD200020E6B5DA116FB6E6E0FA45FF1539AFD582
-:10AD30001043FB9564E00E186FE5FA7C53BC289134
-:10AD4000FD3137531AB217F4B8EB524CBFBF49FD6F
-:10AD500045DD38FF31367F6CDE14CA70B179E54CC1
-:10AD60004DCB44BF6F96F7E8F9F4E3A2BFCBA877C9
-:10AD700050FE53FDA4ED70A35EAA05B92DFC24E09E
-:10AD80007F6F1AF077656DA6DFA027793FAB3C3A5D
-:10AD9000C0FDEA035CDFA41D117663724092627A03
-:10ADA00067B8DEE276B1453E9ECECEA674AB1BED13
-:10ADB000806178CEFCAAF6655102FA98F00FB12FA7
-:10ADC000CB6785E512909FB512194F3FD3E799F5F0
-:10ADD000BD9EC9FC109D329CD16F59DC606ED701BD
-:10ADE000EDFCF04D1995DF62D447920C728F8DD730
-:10ADF000CCE92178E2552540E57094DB43BB7CDA51
-:10AE00005D40171DC9A993414F74248F8D405C622A
-:10AE1000C7FF5617EFA0EB1F7CD9A1F6C0B0FB18F7
-:10AE20009D542E5FDF6EA7BF3B7A256F1289ADD38D
-:10AE3000BD41D256533EBE9FCB89261FDB4F932F79
-:10AE4000AA8CA3F3E735B17514F41E90EC0679577C
-:10AE5000D0C8DAEDC87498F4CFA350A6E33C22FC26
-:10AE6000111269AB2983F69A1DCE41F27A258C0F17
-:10AE7000E7B55040507AC853D9F86E35225D3B296A
-:10AE8000B6DF2EDBA249A027BAB25254D013277DD9
-:10AE9000E1C760BF4DFDD128806B7A7F9F1DEC3DDF
-:10AEA000975FDB0DBF8B7D06646F1EC8D9947EB69D
-:10AEB000BE6E0BDD1372175F570F93BF32799E0082
-:10AEC0005E4086D0F9B23615A39E12EDB332B8DEDD
-:10AED000C822E127D0CE225D04F146701F599B267F
-:10AEE000A0BD2FF01AB3AB264E01BBAA686BD4BE2F
-:10AEF0008AF67BFAA1F8F1FA17399FD07D1C34EE5F
-:10AF000023117F08BD26DA3912F8D582EE536AE3A1
-:10AF1000DBAB5413607DE572DF95B0EFA60E8524A0
-:10AF20004931F8BBFCA12320B7F27A7748001B2BEC
-:10AF30009D7564FC50CAA7FBBCF546E29549E275D5
-:10AF4000376D90B5D5467EEE5018DD28E6F33DE12D
-:10AF5000677CC2E305B3FDA163008FE67DDB14C00F
-:10AF6000F38D3BDF51463AD7192DDCA446E6BF34BA
-:10AF7000D53B23B0DFCAE576C4E39A0E2502F2A9D9
-:10AF800069F79EA80DECEC8D4405FE6FEADD732891
-:10AF90008FC227BF499B260762E3E5374524584FF8
-:10AFA0001625C63EF4FFA20AE86D2B7D839D0CF6A4
-:10AFB000CA2117E3FF0F2BDDBA44E1F8A123DC041B
-:10AFC000ED3ECC4D51F5600CEECFED99FFBC4459F0
-:10AFD000DCF3445214BE5DB69E1C276DD7759EA24D
-:10AFE000023DB9FC618F8FC229C31EDA0BFDD37DF0
-:10AFF0001EB58DF60D249129A8AF470987E916BA29
-:10B0000098BE91F1CB5C5FAAB003A7805C3AD7E70A
-:10B01000117614CAAB430EB68F0EC2D6DB99A915B2
-:10B02000C07A883703E7CD6B8A4AE00758E78DD1AD
-:10B03000955688ED47BDCE5E05E4FC1A2E6F2A9723
-:10B04000EF94DE33D041A98F9DCFE6EDDE21817FE5
-:10B0500048EBDB6A7CD89E2481BCD9CDCE29D6D0E2
-:10B06000FAEB0CF245EC238E9CA980F5B9FBFB9E14
-:10B070006572268AF427D66BC5E73C1FB3EF2EA274
-:10B080006602FEAEE8C5013ADEA1C2641C4FF0BD07
-:10B09000954FE7F9189DE7D5EF94209EE04B61F6B8
-:10B0A000A4589F68B7CB5755EB4338F4211CD6D62C
-:10B0B000DB116F623D354A681CF865CBF878CF5CD0
-:10B0C000F1963240CBF7FDF415A4C7B5DD9286FEAC
-:10B0D00042F72BCA5288DBE9FF2E439CF61266A288
-:10B0E00090ED3F7905F5CA257B59FC60EDDE3DF614
-:10B0F0006BDD313A0D9E786625D0D9DADE24E292F6
-:10B10000007F01E4532B9D523983744F7405CFB9EE
-:10B11000A89CD451AE927010FC1421873B397F1348
-:10B1200037FBFD46BE6E316E4C7EBA90DE8327A69D
-:10B130003CE3A4F05CAB4AAA0BF891C39B8E1F457D
-:10B14000394C4821F86B627C2BFCFE99DBED71F0E9
-:10B150007C1BE0D9AA4F849E0D3E5C45E02BF06736
-:10B16000E7701FD2EF3E05D7DBE1B3333D5FC9E2A5
-:10B17000DA1D0EA6473ADA9C11E0EBE7D22F7A5E91
-:10B18000A2F2D293A144E17BD0B6AA09EA0FE6B1BC
-:10B190007574D93615B7303D76870FF1974A987C8C
-:10B1A00062F2E8BE1F3379D2A4BBD17F6C0AD7AD5F
-:10B1B000C673099F4B857309127E5659EA89D1835C
-:10B1C00015BF81270E28015A7F492FE38318DC9889
-:10B1D000BE12744BE51CE2BD33539C5F868300575F
-:10B1E000EAD7B741FC41F8F5A90D21DD1318CEAF20
-:10B1F00099DCAF9FC6FD7A4785F36FEAD7AFD9F0E8
-:10B200006BF4836ECA7901BF825FA8FF68E2AB2747
-:10B2100038BEEFF731BDFA948FD1D59AB25EE4878C
-:10B2200035EFB7201FB96B993C71F79BE52021776B
-:10B2300073FB602B8E5393D27B910C7EF2BF4ADE60
-:10B24000769278DD37482DFF097932640FCFDF38E9
-:10B2500045ADFC720A571787016FF76B1FF3B73EB6
-:10B26000DC4511017C696F5146B2874F372E89BE8C
-:10B270002601BED770587FB8BBFAC23F409C7157B9
-:10B280001AE6B37CB07BC937FF40FB7FB873AE0AC8
-:10B290007ADAD71E42FA19F4BB54882752F1592B97
-:10B2A000517A68EBFD55EA4C382F7BEC8229203728
-:10B2B000DFE57C79E2C7F20680CFA67F7B7C0ED4E7
-:10B2C000AF894899603F7EB8EB5FFF0A7AB171E7BA
-:10B2D0003ACC4B6B7FEC976897DB223BD8EFBBD225
-:10B2E000D0CE3CFEC8B63900F7F6DE76AC3FF1C8EA
-:10B2F0000E2C3FF36F8FFFE22F60778452556877F3
-:10B30000E2C7DBFEE92F40E775A92AECA3296C67A9
-:10B31000E7B982BEAD726BCF01E453412F9780DE57
-:10B320000538D533F923E8F95D7EDEB4AADADD0508
-:10B33000F2ECDD2D9EC6787146C5CFF002B11894AF
-:10B3400063F512C6D9BA28D540BCA32B9954C0378F
-:10B35000655254C9A7F35CD1B0670EDA3DFA3BD70A
-:10B3600043FB25FB5C640BC6E520A84BFD0124755F
-:10B37000424AA8183C4AFD663AFACE2F29DD1EA69D
-:10B38000F201F58EC51F58D2F5C2FF801CAD730EB9
-:10B390001C0051287EEFE2F11BDA1EF54EF9FAF897
-:10B3A00071D254BF9BD32DD39B797B171504504E7C
-:10B3B00024A9E30DF6E998232D5B203D29AFB1EFD9
-:10B3C00022D8C7C5C5D74C45BA80F81FE81FDD8D08
-:10B3D000E3AF85F825E5BF73FC3C2EE225BE19746A
-:10B3E000FE1A3BF1B9E14BC86B0E94238FE2B8D43F
-:10B3F000FE40BB2AF0CB2B1E057B64BB239C3B0D80
-:10B40000C6E9E27A6B275B37EDEF8573543A9E7796
-:10B41000C6141CA7CF9181FD75D67FFECE3629B606
-:10B420005E4AA963416FC178656ED0337A3DE227E9
-:10B43000A0E0BE4E40935CDCF7E4152531FEB5C6B6
-:10B440007D409EC1F9F06C7F65857F5AEC2BE2410F
-:10B4500056786EE4F53FF36BF825BB324D7A2591B3
-:10B46000BDF2CC151F33FDFBB37750DE34031DC393
-:10B47000FCE1F74DFAF75A41C74FBD83747CED3EAE
-:10B48000A67F9BF7952A40B71FB46AE43D6A8036D1
-:10B49000F3F3D7EDD2C0F598EFF294CB0B71BD8FDB
-:10B4A000B9BE59B3F59DA3706E5AB82F17FDFC8F26
-:10B4B0009F72D5C338076D3684E7C19EF377B44BCE
-:10B4C000C67532BF80DAC148AACDD44E6576F0EA9F
-:10B4D0006DE0A7AD6D242AF07FB3857E9AF7BD821B
-:10B4E000F422ECE0E0C38B5733FBD3A5BAC08F9BAB
-:10B4F000C7EC5142ED51689F3E2FD2A6207D959614
-:10B50000037D3D73C52F3A418F37CF235E187FFBF4
-:10B5100018EDA97CDC8F4420CF65BBA3BBCA4EFBD2
-:10B520006FAF0978292429DC76A2DD4B8A15AEE7B6
-:10B5300056A3BDDC9C73958A7C6695074FB5A1DD4B
-:10B54000D51C48C6F55CB24FBA85D9236EC2D62F3A
-:10B55000217D5E12991981F8D9471C7E028E1F3B0E
-:10B56000FA56023C3EFE0925445A7FC93C46AFE9E3
-:10B57000F37A518E3CF7D47CD4E3822E3D4F26A142
-:10B580003ECFB07B2515F5DA9224235EBB1D4C2FF0
-:10B59000A5733D53B495E1B793F353A7DFC6BF8AB4
-:10B5A00039FEE2D52783DEFD88E31FC508C8772E64
-:10B5B0004FD6AE8E223F35ED66E3F992B4D25B0DE5
-:10B5C000F4EBAB667A519C07C0F9C0A238F2E231C5
-:10B5D000BE8EE0C3ABB681BD7C31C53BA894BC62D6
-:10B5E0002E47295D00DCF21A43480717FB6E5021F5
-:10B5F0003FD59F49D05F1C6C5348BCB8CFE35C8EED
-:10B60000FA3343651087F6677BD0CEF1CB953617BA
-:10B61000F42B95D49E009E7BA29D37E8CF557B4CA2
-:10B62000FC1E2AB3D176C7B23C0CCF91DFD8179756
-:10B63000001F06D8B816BB6FB8DFCDECC685DDFAA3
-:10B6400064F043C4B9868043A42DB9DE283F7FC28D
-:10B65000E11099C8E2A9D4BE77635CDB4BE701FF38
-:10B66000BE67E623CCBF6FC7760FFB997D5443F7C7
-:10B6700007769BBF28B49EE9538F1A0F1EB3FDC2F5
-:10B680002E5F590A7E65739D5B057EBBEF67D22AEC
-:10B69000A467081682DF1D5E8D7820140FC00F246A
-:10B6A000CCFCD2E69650243EBD2F42FE6B06FE93A4
-:10B6B00090DE310E4FE93DC2E89DE93FE1FF837C1A
-:10B6C00034E61D0A3920E44BB3323001E858F04328
-:10B6D000F39C810900B7D1CA938F1D94FF817F2805
-:10B6E0001C807F04BF789E667CB2A52D5009F55B57
-:10B6F0006A88B7DDA08FACFE12AC13FC4E21D74F89
-:10B70000FA42C7FD1007B0453B21BF42C8E1E6A79A
-:10B71000374F8897FF26E4B0D3CEE49B339212696B
-:10B7200037D0179CF979A6E017F3795236C48F8F7A
-:10B730009CF2BB791C7F74F91259A0CB41DEF4A4B2
-:10B74000605EBB881759C7FDD82F99E232C26F815E
-:10B750007307689F93C5F827258BF3679688CF46B4
-:10B760004CF41FB085DF813CA344FA4BF4FB5BC56E
-:10B77000AFC43C428F5AF12FCE4D603F8B26256ED1
-:10B78000D77D80C9272B3D4EE47C72147C0FDAEE06
-:10B790003FF839D770FCB2714878A2292FAECBB6EA
-:10B7A000A7315E1C4C9C779087268E2AEFEE402BAB
-:10B7B000CBAFFA0F9E674B564F34E559B9D5401BB6
-:10B7C000C451AB9CC15219E765712CCF1CF209E83A
-:10B7D000E1C9FBBA8B217FC91F329F9764D7279B92
-:10B7E000CE2372C319A6727E639EA9FD989642531A
-:10B7F000FD391BCE33D507F529A67251D70C53FB63
-:10B80000F1DD55A6F2B90F5C6C6A3F31B2D854DE57
-:10B81000D2D65B0F78397FD795A67E5576AFBD948B
-:10B82000C2B5A47795397FCC02CFB4BFCA71E9B055
-:10B83000292B8878ADB29BF3882FD8678607A4CBD5
-:10B84000019C27133EDE9C635346CA6F9D4CEC7FE0
-:10B850001E10FD83C3E9813807D4501C3F53D0B973
-:10B86000285BCFB584FC3853FA4BB44E417F89EA4C
-:10B8700013C1ED3B9CFF055C1C4370A95747828BAD
-:10B88000E3747021142E9EAF0E17EB789B529A3101
-:10B890004FF8352818ECE38156F37D98657A1AD372
-:10B8A00043A125A7B1A3591C389CC4CE2BADF5FFED
-:10B8B000C9E1F2218509E261947CFD16C7437F222C
-:10B8C000BEDEF0C9C16C90DFB504FD666F4BDB27AF
-:10B8D000A0B7AEB64709D0FF7D7C3FDB79BEE80359
-:10B8E000AD5E1CE7417E1EF9506B007F7FB8B51836
-:10B8F000BF9156157FEF69ADC0EF4E6ACFC1F70714
-:10B90000ADB5F8DDD51AC2763F6CADC7EFEED630D7
-:10B910005BD7307C9172B473429971E3A5D7E8F29A
-:10B92000A8F044E482B8FA32E13872C388F9E51B22
-:10B93000FAA5C79F35F0EF5B591EDF51C86D9C4ECD
-:10B94000A6C3F9E6E9FA7FDE4A1E7F76FCE8F948ED
-:10B95000D013399539211E5F87795EE563DB57DDAA
-:10B96000A54F4A0CAF189DC587539DF3E33C70D695
-:10B970002783CD60E82FEE9F88725D382DAEDD9075
-:10B9800097CDF46E7D123B8F5F6EE1EF6F6533FAFA
-:10B99000FD5636D377BF4B2067D2793D5DA703CFE5
-:10B9A0000787F1DD3DB3E3C1F7AEEC80292FC57AFF
-:10B9B0006FC53ACEEF1CDD63D4387C76BA71C4FE15
-:10B9C000ACFDAEE2FBFF663661EBFF7FC69FBFBBFF
-:10B9D000CE83FE03C0CD6FD8FFEFAE4BA98F179774
-:10B9E00069CF66E7A1D43A27C10C34F575056CC55B
-:10B9F000621260E7BEE3BC101F12790189E9D58E9F
-:10BA0000712484A13C1CAE141F01A5888E6F1F9A5F
-:10BA1000276A8779545B4CCF42AE0D31DCFF9087AB
-:10BA2000D303EDAF2B98D7339007EB3B537A22F239
-:10BA300043E3473AA71BD6FF0CE5CC9AECBFAF9C7B
-:10BA4000117C4E4EDD3B3E9E9EAC87B967507BEC31
-:10BA5000FE87989C39CDB8670ABF7A7900CFAF4787
-:10BA60000DBF7DBE51C5A53E77A54E26D4AFDBE008
-:10BA700064DFDB93537BE0FBB96B6C84A4527E8163
-:10BA80007552BED5AB08BBBFF596F09B5AA683BCDA
-:10BA9000DD9E1B7A309B8EB34A61FEE29FB2B4EF0B
-:10BAA0004339999F0B27F37361255BE98432D18A6F
-:10BAB000715F17F07D75DA0263615FEF4BEA44F066
-:10BAC0005BBCB6880ADF54122D61F9799130F86BAE
-:10BAD00099E72707C0DF4D9E40481FC6C75517C4CA
-:10BAE000D19494C117C701FFFFD286F7A21FF7B206
-:10BAF000753EFE403E9EB350818FF26232FC4EB7DF
-:10BB0000B205EC72DAFFFB52F8896CBAAFE35EA7BC
-:10BB10006EA3EB9ABCF9BD8C0CFAFBE3FBABF05CBB
-:10BB200021BA4BD615B8DFD0F7E1772FA1E35DD06E
-:10BB3000E7C0F8F3054446F9BEC64EB6021F25829B
-:10BB4000EF07DF889F07E6C8914CF95DD6FAF7B991
-:10BB50001EF82041BEF16BBC5EE4CF3844FE8C5F22
-:10BB60001B317FC661C99F71D84304CE851D43F93F
-:10BB7000330D04F367E838C6FC990FAAE2AFA39F20
-:10BB8000CB73C7172909C64DC5DF3F281C799F8E87
-:10BB90002F5CA67CEC587F37FE9E287FE73301A7F9
-:10BBA00004F94B9F0CAD2F97E899C67E8CEF62F39A
-:10BBB0001460BDC3920714AB67F93F1DE98C4E0EAC
-:10BBC000E4787DD7D0A1AF2103789FF36AB7CF0186
-:10BBD000F1A41051F7E0FD1EBB637040F06121B489
-:10BBE000B3BF0B76B78D4A5EB0BBAFDEE07877C0EF
-:10BBF00020B71669E63281F60639BC1862D8741F80
-:10BC0000C9E71563FEDFA72490E61D418E3638E5AF
-:10BC100090DDB08FFE0476C4859C0EFB73E3C3AF4A
-:10BC200030C766CA631ADE9FE703F07B68B77A47BE
-:10BC3000969F00DF70A6717C2B1E7C587F3A38FBE4
-:10BC4000E1B00DE26A9512CBF3FF9BC33B9DE7BBCE
-:10BC5000B1FB030E4BBEFAE25CEBBA59BEFAFDE94A
-:10BC6000A19939D82F30C1785F60AF5D4B9942BF41
-:10BC7000FD5CEE58E1B289C3D9BAEFBD3CEF3E5945
-:10BC8000262D7B0CF0B7EEF71B398CCE45FB0E074B
-:10BC90003BCF02C1E7A4726F0561726F454E21CFA1
-:10BCA0001F4FB703BE1AD8106485F7109E2F0938AE
-:10BCB0000F831F87BB158E21125809F9DDA783E773
-:10BCC000865C6D450E9DF79A57921590FF2B9D83CC
-:10BCD00007C1671DE8B31D1E47BFEFB8C71DDD498B
-:10BCE000E03CAEF8C967E837B542657915641EDAFD
-:10BCF0003F929E2F7F79FEE8ED9FCED47031F0C742
-:10BD0000FB3C3F5BE8A5CEBC131320CFFEBD8CCA25
-:10BD100029B97E8CC36B9940473F4F6274F4001D74
-:10BD20008996D7FD6222DE87BF2A37AC423B91E776
-:10BD300047B4C109909770A670A27F1C4047A783A3
-:10BD4000D39A1CC2F831353E9DF4E4B0F8DFE9F82F
-:10BD500003EFA195FDFDF843C0539C6388F5A9B995
-:10BD60008C0EC557C0CD9A4FA4E6DA783B96AF78D3
-:10BD7000556E08E17C72CC27475D74EDFD4AFCF7F7
-:10BD80001D9E1CE5FE05BCFF5E72B83F39FEFA5EE3
-:10BD90004CC0C7FFA8F54DCDE5F43339FEFADE1EE1
-:10BDA00025FC4264F0ADF4BF831EA3789E0A78267A
-:10BDB0001D83281FFB33E2AFF3AFA35E67D8F1F713
-:10BDC000D0B782BE897E4D239EDFE724C73DBF5F8B
-:10BDD00046FD29F087ACE7F8E2BC9ECA0FDC6F9DF8
-:10BDE00073706526E07D1EDF771689A6C3F9E62FFE
-:10BDF00092F03C60989EE4FC41E195920BFA64E17C
-:10BE000020C635FA27C4970B29B98CEE86DA77B1AC
-:10BE10007912DD43C8CC9546750F819485311E5843
-:10BE2000E97447658A875B383E94FC9B54B00F2BBE
-:10BE3000735E3A02FBA4F0FF70089E86FCBE13AD51
-:10BE4000CF7BC73912CBED35F213E52D71F63321D7
-:10BE50002B3C21D7106F5CB3EB05EF3803BE4AC80B
-:10BE6000808DDDA31EB499FCE46C72467EF27E17D1
-:10BE7000E397F73242A80F403F80DEE97CFAC252D6
-:10BE80004026D81990DF33E8494639DA9E37A3387F
-:10BE90006080676DAEB02FE50476E3D7BB1F10B3AB
-:10BEA0009B2493FD1A1BDF8EBF0BFC54BA5F8C8B57
-:10BEB0008F0959DAA500CFBF646897C1D70A3FFD43
-:10BEC000CE59E978FF00E0373736DE10FE13E0F98F
-:10BED0001B595A3DC04DCD0CB0BC0191D73714BF92
-:10BEE000B07B8F3A63F01E2D5E92797C8DDA0DABBC
-:10BEF00061BD4A12E747E2C67BE4C26E2116FB86AB
-:10BF000014337F7745CE4BFF03F19FCE54C6B29DCD
-:10BF1000FFE4423FF06AC9ABC0BEA9FDF1E6F76994
-:10BF2000FB3089BEF92DF40F859D91227F9932FA5D
-:10BF3000750AFFF97479D6CF803D46D7536573E310
-:10BF400079E733747FB9546E5429EC5B399F5215ED
-:10BF50001DAF4A2ED83F40D7F51939953C9B7EBF7F
-:10BF600043181CD6BFF2870CF047ABEC8E1346B9D2
-:10BF7000658D7FDC956B8E7F7C4616FEE67C80CBE4
-:10BF8000AC0C84CBE4A7E6651BE32F43F10FBE8F17
-:10BF900025FA354C9E5AE49C906736277B6F84685F
-:10BFA00024E0CDC2381283BB2EE1FB57B345199C68
-:10BFB000145A9EC59124417FBAEFD9FC4B56857324
-:10BFC00040CE405A0FCC47BDBF1CF8B65FA806E074
-:10BFD0003B570AD9D93A222C0F91B414407B9B735A
-:10BFE0004086F945BC02579205E3887959D9C3CBFD
-:10BFF0001D759FAEBC2E303CAE41DC1EB47F15BE1D
-:10C00000BEE35EB76E33C43B92DCD1E398BFCABFD8
-:10C01000D6B8C7EDB2AE43FE7632E94579E9767F10
-:10C02000A40330BCC42B41F9FB52F8E7C017479575
-:10C030006E12A4BF9FFCF9E704DF65831B6245F025
-:10C0400035EB27BF7B3DE645FB43768B5E0A4BC055
-:10C0500047D9F5D6DFCDFACA49FAF1FE90140DE5BD
-:10C060007C9979FA784EA2388EA38AA17EF0466632
-:10C070000F1F4E66FD0F27B37E6F71BDD49CA110BC
-:10C08000CC8BC9723AC19EFFD8730CAE6C823EE96C
-:10C09000027DE274688857A157D6EEBD9900DE9AFA
-:10C0A000F72D4238FC5E62E7A4FA0A09F319C4BB13
-:10C0B0000FF593C8CBB4279991C7FC94A5CF8757A8
-:10C0C00034D172DD4BA4244ADB95CE0DD5C0FB2EB6
-:10C0D000ED2544DD44CBEDAEF08F7E02FB7885BDCF
-:10C0E00037B68EDFABA59858B39B8EBFE3CA31EA53
-:10C0F00016D852F56027E40B0D6E265EC82F194640
-:10C10000BFA7283F507A7804CA74DDEB5687FFE555
-:10C1100036DA3EF725A2621B5E0F3E0AE04FE2745C
-:10C1200001BFCFA5BFAFE37454B45F62E7FC3EF636
-:10C130000E180E0EEF7439D9FFAEDB5F79F934BA01
-:10C14000AEA2BEA948DEE3687BC883824C04D69EBB
-:10C15000D8E2B51F07ED0370AECFF043F2147C3F79
-:10C160008970F937DDC2873363FC80F5A5BCBC8ECE
-:10C17000EB2913DFC038D46FD7CAD9B13FF6F331FA
-:10C18000FE5089F8C3F8790689FD8171AB63F3A08D
-:10C190005C9EC7EB0E2E5F80F9DFD3EDD103C0EFBD
-:10C1A00033F9B7947F81DF9D148E57D85B0EFAE97F
-:10C1B0007ED23710B50D666908B4C37865242403B0
-:10C1C0009CCBBD9BDB617D1736BC9209F475735E19
-:10C1D00011D2DF2CA75AE4A224D25EA1AADE2278D3
-:10C1E0006F4C42B82CAD774620CF6DE9D07B3FE154
-:10C1F000E032CA3F5784257E0F3F1C6C30C46D452A
-:10C20000FEDFB224EA5FC791DF37E731FD2EFAAFD8
-:10C21000E3F75344FDDA3C37CBCFCCBB68461E9ED8
-:10C22000C7B0BC68CAFFB3F3A6C5E40A9D17F356AE
-:10C230009610CD01FB5AC2F957F0FF52ED56B46784
-:10C240009786CC76E9EF25866F7DB98476E215F581
-:10C2500023DBAD0BF3C4B9708117F500117A8AD1D5
-:10C260009590E78B41BF831CAEA5FADC603737DCC5
-:10C270007E2A1DFB65FF60ED97E7C4EEC3ACB3DC1F
-:10C280008769E6F761D6ED6B736401BDF3FB30EBB4
-:10C29000F6BFD369CC0314701A7E1F6610F31F9784
-:10C2A000299103704F68D94D748FB4FDAFF8FD89A3
-:10C2B00067E1FEC494181D79AE7445597E9D867958
-:10C2C0007E05DE1415F252BA6C5330AFA82BD5A3FD
-:10C2D0001AF378B6B4B5D4403B914F24EEBF2C4B43
-:10C2E000706EFCCD3C663F6F97585E97BEDC89F060
-:10C2F000F6CBE488F19EBFBF2884F97433F202388C
-:10C30000CF761E5F80FCD3A9F41BA1661AC317EB7E
-:10C310006F950F74BC0E18AFBA48C53C9AEA3496B4
-:10C320008FE6CF0C95DE3229366EDD7E96BF57172D
-:10C33000FAE410CBC35D5406F04C24D7ADFA8BD28F
-:10C34000DF3D408FC3F556B819E8CF51155A7E1D11
-:10C350001DF7E4CB0AE6DB918D9AE4A0ED7EFC822A
-:10C3600057857B781D95A14535586FC77B8259F558
-:10C37000249A44EBCB5E527A20CFAF91742B304E8F
-:10C38000A3458FDDE47E56013EBD69A72346970491
-:10C39000F213D52210784DBB87C545500E09F964BC
-:10C3A000A56732CE2C874A85DCA5F281E5F73530CA
-:10C3B000BD477E20417CE8A4E798CCFD6B947BD3FD
-:10C3C00084B0B2C8FB69FB9F437B46C0730E9517D0
-:10C3D000E0C749F0FB64EC87652A4F8B21EF742698
-:10C3E00049467A1B6647F0F5950DAD9FD94D424EF3
-:10C3F00056561002EF2358F143E7433A17E77D7092
-:10C40000B402E70833F9FC9FDBB449D120E08B4448
-:10C410006C14CE9D520BEA1D27E481D2EF16298CB5
-:10C4200072F1A7BA2E035C2F242D4B160611EF2FA5
-:10C4300001DE6739FB52000F4715D509F5359030FD
-:10C44000885F33BEE6BBEFB303BCE6E758F1A2DB7F
-:10C4500001BE0B02C3F085F70BB404F8D2845C2153
-:10C4600066B91224A7D8FDE6CD876E03FFF874F6EF
-:10C47000C9F7B2C247E3D1AFB05312E5E59DE4F28C
-:10C4800078B47979271DCCAF984106AEDF2D0DA782
-:10C49000938F0F6E90730CF424E8F4699EA72FFD20
-:10C4A00092E7FD967950FFC5F425A383725E9A0149
-:10C4B000F465A083D9FB5C5199EEB394F79F01F426
-:10C4C0003025A62FA33677402904BCAB5DB23CDCF7
-:10C4D0004ECECA0820FEA7DA34C4FF34EA8171BB0D
-:10C4E000D39D4FF75FE1EC6DB70710FFDF07FFA6A5
-:10C4F000920410FF9516BD53EDAEB3039D543BADB2
-:10C5000078D610FF35DE61BFDBBE0AFECF01FC0B23
-:10C51000BD320AFB94E27F42FE08E78D89F07F413D
-:10C52000BEFB8CF23205FEAD781772608FCB5BEDEF
-:10C5300086787023CB4B9EFAF2B8762867AD0DE271
-:10C540007D993DE9EAAFB0BE85D597F56932BCCF9C
-:10C5500058B49ED6D3F29E60A81ACAEB3648284734
-:10C56000A7BD166E87F2B88DACBE7453CBAFE09DFD
-:10C57000B3753AEBFFF4F14E7CAF22D2C9FB57768C
-:10C580005743795D17EBFF478F5307BFBCFC48A4A7
-:10C590001D7E9FB895AD43D87D7339BDED919EF852
-:10C5A00015F6EB66FD6E38E44C66FE12B3E3E6F07A
-:10C5B0007DCE7D88EDD3F7DEC5B5010AF7EB0675B4
-:10C5C00007CA0D5B5339CAD1047E5AA5D45D00DF7A
-:10C5D000F9544E10C43BA5D34296B7DA43A75893FB
-:10C5E000CFEC2691EF0979E78B0CF85A93CFFC0832
-:10C5F000D12E2B83B0FCE407D9BBB3221F357A3F81
-:10C6000091207E007B44FD9B203F757E510BEAD339
-:10C61000F9E788BCD401FB2A3A6FE9977FBA289ED4
-:10C620005F7E4B3EB3938EF13C7AF17B63246803CB
-:10C63000FF640F100FBE03147D19EC963DF0BE9100
-:10C64000E11D923D4156D6F3F7DFDD459DDC1B6CC5
-:10C650002D761D94C05809DF55B9AC8F44D352874D
-:10C66000AF7FBE9D4459FE045BFFF5ED4ACF1683B4
-:10C670001DBF54888F59E351AFD4713C09B9B194AF
-:10C68000E38BF2F9E67CBAFE65CE16B41B9713A6CF
-:10C69000D76F24118C6FDC68E1F335EE3FBF65B3D3
-:10C6A000411CCDCCCF6BE972D8F9FAE0C3BFA3F03F
-:10C6B0006F7CC0E305FDBFB6D7DCAEF181978F304C
-:10C6C000FBCBCCEF8D82DF23667EA70605E3F7FB6D
-:10C6D000CFC3731B713FD0E51C7C4B27B1FD0EE926
-:10C6E0007D0BFFB9E0BE6031F8353696A7C8CB6246
-:10C6F000DE4FBB995ED6A95EE67E108ADC4FFB2F2B
-:10C70000C17CF852A147B99C11FC5CCAF5FC303DD4
-:10C710005E6BF577EE433E99CA4B56FD2DF4B6B8E5
-:10C720008748C745FD4DF5F5CB1A5D6F9FCD1D01BF
-:10C7300078C7F47604F9688A93CA6B1BE2EF00E0CD
-:10C740006F1AC75B3BD7EB09FD03F7FAB8FE01F59B
-:10C7500037F01C61B85F1035D9FBC3CE3112D8FF5A
-:10C76000437873517B2A05FC7DC2ECE23C32AA3C43
-:10C77000112AB7DFCC1F416F2BCFB0DF0777B8305E
-:10C78000BE20E2EC82FF5E2F6076F8B65CED3D9055
-:10C79000FFFD7CBE7E3E7EFFCDF3F1FCFBCF44C3AC
-:10C7A000F36FC867CA8F937F01E7DF1D8678697FC3
-:10C7B0007AFC38F8275CFE941610FCFEC9AF7D0A9F
-:10C7C000EB3FA6B038FBB164FE4D65E714FF3BD4E8
-:10C7D0009EC98F4CFE15EF911FCB30C7E7453B3FFD
-:10C7E000FFBEDFEA0C7518E2E181FB935A408FF936
-:10C7F0008B785EFC7A46C7279F4ADF617C272E50E4
-:10C8000050595A300DDA694A2EC4679E62FAA2D98D
-:10C810003EA0C0FB3E3E7F38A5C00FF79B88F604C4
-:10C820008C1318509650789FE4E7FE27F97B402739
-:10C830005DEC2BD6152858540AFD4EDE3C80726301
-:10C84000A8BC6800E542A02084F39E5C2AEA79F93E
-:10C850006E5626DCAFACE47C8271E33871E2E171A4
-:10C8600061F37B37EB94F8E7D5A4C0638AF7AED8C1
-:10C87000CFE2902B9DA4339FD65FBD3F1BFD8DC69D
-:10C88000547D02D0C3D78DE39E1CD387FBDA523987
-:10C8900038F6C1323C17C678D1DAFDCFA1FC5B2B4C
-:10C8A000F866AF996F66178CEE3CC51A671F053F97
-:10C8B000CD2F18C10E7A12F4972386875B787E53AA
-:10C8C0008DDC540D71A54F5713BC677BCB0B32D257
-:10C8D000D52D3F92F0DD0961C7ADE5704EB42FB89C
-:10C8E000A71030C815B8A71030F875704FC158861A
-:10C8F0007B0AC6F6704FC1580FF7148CF5704FC104
-:10C90000582E25D7B6439C6E5D17F14602ECDE82A9
-:10C91000B13FDC5B3096E1DE82B13FDC5B30963FBD
-:10C92000250C6E9F3E2463FC1FEE2F18FBDFF0C228
-:10C930008FCBA3B06D17CB536B7751F8031DEA5A19
-:10C94000DF240A9FD51C3E70BFC138EE07A9173DF2
-:10C950000FF859DD77FD42F85EB0EF26D3B8A49BFF
-:10C96000C9E316FA17E0783D09A5813F37850C1E0B
-:10C9700082784773445261DE1B1E30CBEDA1F74C29
-:10C9800022E6DFD71043FC37383CEEBFA5C0E343B7
-:10C99000BACA2379C6784F8C1EDC6A14E0F09AACD0
-:10C9A000C6A38752726E1AC6799E97218641FE48A9
-:10C9B0005AB6CF920CE703167824E598E9C21530F1
-:10C9C000D3454AB1992E3CAA992ED22ACC7491AE65
-:10C9D0009D37227C336BCD74B2466E42BE1770AE6B
-:10C9E000A07F01CE53E0854A802FDD27C48BADF0B8
-:10C9F0006DDCBFAD13ECFE3385EF9316F87E466613
-:10CA000055BB03585DE72C8FD93165CFB7E021B016
-:10CA1000357E2AE028EC081107A5FA1FEDE9985F9A
-:10CA2000CFFC3D6A1F1C2CC0F303E6E7012581DC27
-:10CA3000BC8E84513E5D67B10F6E70DFA7807D3084
-:10CA40006CBFD43283F70BADFB057B8B18E25256DB
-:10CA5000FB40DA2F453D9361BBFB859C0E7F89C669
-:10CA600090268D466EF47AB4FF02B9058EA2B3DC2F
-:10CA700014378E6BF7897508B888F993488B9C0337
-:10CA8000F45C6CB5CFCCFEB5F0C745BC5DC4B585D4
-:10CA90003F2DFC182B9CE57382ED40FF53BDC28FE8
-:10CAA000EEBB0A7E17FEB3D56F1DBA170090857BCB
-:10CAB000373C4E7FA77F9593BDCBC7F84EFCDEE990
-:10CAC0005B9C36523EE61DADE67B30741BDA88F780
-:10CAD0008A00645970EE4420A842B65E7A6800DE8F
-:10CAE000DAD97AD98B83CFD2EF96921F0C6C82BAA7
-:10CAF000535FCA00D7A1783E61F78415DE4F29E85D
-:10CB0000BC19F468B26A27EF1AE8C24935D5BBC52B
-:10CB10007C5ED0133943F5BF319EEBFFA3BE775146
-:10CB2000F8BC3B7E847A456D8C67D759E1259EC35E
-:10CB3000704DBAE838D8272E62D837EA4343598E69
-:10CB4000C10B55AB8CF7A644BD06EF977CDD7D018C
-:10CB5000DEDF7518CBD157DE7718D71F617905F660
-:10CB60001081FC5BC547EB8DFA65880E2943951B48
-:10CB7000F6378A7D01D380FBC9EC1286EFBFD5BEA4
-:10CB80003A2CF88271435967F5FAF4B37C7DD1B33E
-:10CB90001CBF64D1D90D3F6DD1D90D3FFD2C5F5F16
-:10CBA000F42CC72F597C76AF4F5B7C76E3573FCB95
-:10CBB000D7173DCBF14B969CDDF0D3969CDDF0D39F
-:10CBC000CFF2F545CF6EFCEA6807BA2BA204DE97D8
-:10CBD0000874103518A0262BFD19FCF92295609ECB
-:10CBE00006E17E4921F74BB66D6DA90717EA115D85
-:10CBF00009603C88FAF739B47E2261F58F742DC63E
-:10CC0000386BDB980979F05E95BBEBA2E3707F6F20
-:10CC1000A2CEFC71EBBF1BB64833FFFB6B9757648A
-:10CC20009ACAD3FACCEF575CD55864AA5F1E3EDF90
-:10CC3000F2EFE74D35FFBB64A19996F7206E26C64B
-:10CC40007B918524AA427CA5F06E5B159C9BD9C183
-:10CC500067BE90FEB753C17E1AFD6BF45F0AA92729
-:10CC600034347E10E0A698C6775BEACFF41EEAFE65
-:10CC7000B1F1EFA112786432CEBD736B1E26B1DF25
-:10CC800088F13981AF3B37DBD0E5FD6C2BC1771ED6
-:10CC9000AB23011BBE83CEF1763E273DB1EF48ABFF
-:10CCA000F93E7AA14EAA009F451DC406F1B5E04E9B
-:10CCB000A26A04E34248278FE8F1E9E411E2AD8279
-:10CCC00077B91E8910FC77B2045DDCE908E4C1B9CC
-:10CCD000DAF95D8C1E049D04804E52212FC8FAEEB5
-:10CCE00080155F644A94AEF591AD8519C67C54B247
-:10CCF0009BC1DD49FF8E84AFE29D667C0588A1FC67
-:10CD000015F0F5E9D7C497E20B45D37C10CF240189
-:10CD1000C8933A3866820DE011EC52D1FFAFA5CD31
-:10CD200000CEC12EF69E9AC093186F6B2B89CE331E
-:10CD3000F87F4135AA019C6BE44955907FBEA30C56
-:10CD400043C6C3F0B383789321EEBDA3CB968C6F1B
-:10CD500054EFA3782921E4BF372F4B2BA6F53D4193
-:10CD6000920CEF6CF5B4D9F0DDB29EA7A47AF3BBB8
-:10CD7000CAD1245B0EEE23C956815F3BFB6AFC4B94
-:10CD8000ECAC3E2A4379ECC661EF7EC8509F5E6BE7
-:10CD9000F97703892641FBE473581E679A667ECFB4
-:10CDA000C651619607148C7D39E5106FE1F4CEDF32
-:10CDB000498DD490C826BAEE73B8DCB1D251FA1DB1
-:10CDC0008B9198DAC67C03E5594F9B82F077707996
-:10CDD000453632BAD0E95FA0A7740B1D7954331DD4
-:10CDE00039E402CCC3157C25D623E66F1B93956CE2
-:10CDF000C775D9F13D6C87554E58D6E7866020C57A
-:10CE00009DDB4722115AEFD0197F10B91F7F774C55
-:10CE1000272433F815D6F935E553E89CBF8D7CF20D
-:10CE2000F031EF9CC6F6F999CADEB5AEEE60F4EECD
-:10CE3000D9CAE81D6E74B37C2D6D61AEE15C752FAF
-:10CE4000975356B879FAB46AA0E78BE49734C88F41
-:10CE5000B8FB3546FF6D630E3F0FE5AD7733F8073E
-:10CE60005586674A2F6A942EFDEE3BDC98173CB539
-:10CE70008CE20BF0FF92599E4CEB33C3B1C82237C2
-:10CE80008209E06AE5D74470FD96806B39856BD1E5
-:10CE900099C355D1997C4E9FC5DE593C384661FFF8
-:10CEA0003EAFCEE098AEA9287F2F924F45D368BB06
-:10CEB0006D1A9537749DB51A83B7779690E36678A7
-:10CEC0000AF922E05FC8E1EF55BD2FC0BFF3E2D6FB
-:10CED000ED2420017CFF5B033BA27B9A9037830407
-:10CEE000F096A631BA1570EE9ECDE05CA871387749
-:10CEF00071B8494402385BE9D52A9FD3BE269C7796
-:10CF00009DC3E3F159A4FCABC0795B0A7B47D931DF
-:10CF10008EC1D5E11E8C829CED0ADA715F07820A10
-:10CF2000D67795B0FAFB5356E680BEEDF277E60071
-:10CF30005DB605AFCF01F9EECAE1728668EEDCF2AC
-:10CF4000D8BD831A792BBE43DA1950103F9E407C1E
-:10CF5000F995362BECC47926D9898C7078488D07E1
-:10CF6000076799629297F98D66F8A658E0EBFA9AEE
-:10CF7000F2E1B5AF291FEE216CFD778E17EF347407
-:10CF80003B513F55DC8471F34C3ED7E685DF65BFEE
-:10CF900073BD66F8BDB610E489DBAE023C13ADBBD1
-:10CFA000A795F0F75A9CFCFD16F6AECB3678D785E0
-:10CFB00096BF03EFBA2401FDB3775DB6C0BB2EF474
-:10CFC000DB05EFBA9C0BF6B4865FF9D2427C7FF0AA
-:10CFD000B35A82F1F14D297F25F1E055D465D67F12
-:10CFE000413DD9F20E9B59CF65CCCB3395BDB3CC27
-:10CFF000EFB67954F66EDBFF0164680340008000F1
-:10D00000000000001F8B080000000000000BDD7D09
-:10D010000B7854C5D9F09C3D6737BBC966B3B9924C
-:10D0200040124E42081B0861810483829E84406343
-:10D030004D71435151A88D40314248285E1A7FF509
-:10D04000C94282841834A0585A2F2C378BB56AB441
-:10D0500051A922DD2052FAD5964551F152BFF55221
-:10D060002F40258A177C3E5BFF79DF99D93DE76425
-:10D0700013C0E2FFF8FDF1C1C99C993367E6BDBF5B
-:10D08000EFBC332184906FE8BF04CF0412F410FC8E
-:10D0900081BA433D9704EDD1FA23C3EB1C6A3A21D0
-:10D0A0005677A5E139F1F7115F22562D248390546C
-:10D0B000DE365DBED71E2E26644DCDAC24520CFD4F
-:10D0C000B450266D4F80469590D5566F968F3E4F43
-:10D0D000A85954435C84AC6A2124388A90F6163BE4
-:10D0E000962B726CDE601A2177BE2C7BE3E82B3620
-:10D0F000CDA7B969FFDE9C5B09A1CFD7B80919920A
-:10D10000479FBB9711924F88423F20D1BA5233E3D9
-:10D110002352425F98B3849049D1F9ACA9B1788386
-:10D12000A584C4253BBDF07D52ACBC13A66D6EFA40
-:10D13000DF37F4FD6FE0E782681947583BAE13BE56
-:10D14000A3EAEA04BE676C6F7E537A74AFAE7DAC1F
-:10D150009A98F63E2CF61C72CE37322DE579497539
-:10D160004E5A96A71092D5FF7B5FB69047F78E4434
-:10D170008012920E653D01782A7CCCD5C9B3ECC4EF
-:10D180001985B378BECACDE01B27D1CAE4FEE3B649
-:10D19000015CE3A2758510AD1BF0915D1AB3BF2849
-:10D1A0002906082923A4B32578F03D6BF4B9730A46
-:10D1B0007DDFD9BFFF4C55C679CF55552C9D4A9080
-:10D1C000B869BF442F7D5F0717A77666DFA73FA525
-:10D1D0006974BD2E4E37E477920278B5F37A8254A3
-:10D1E00037572D037CF9081941FB956BA4AE987D48
-:10D1F0004F13EF49502AE41D41DF79AC74D3760612
-:10D20000522869BBDDD8AE6620BC705C25FABEF63C
-:10D210008D34F0BCBFAB12F0F8CEC841DA6DDE7AC7
-:10D22000E0A77ECF558B80635F1A859BCCD71B030D
-:10D230008E6DC0DF028EB293C1B14DCADB19A6FC60
-:10D2400066D55C5E8A115291A676035FB6694EE49C
-:10D25000CBB6B4EE5025AD9F28B57861A8C49195A2
-:10D26000C88F6D43F71D5E08709DB9FFC36D08350B
-:10D270002D5425E04BDB133DD5A12A9DBC11F88A26
-:10D28000E7BF778C7D20BC9296A917CF236E4A2AE0
-:10D29000CE21362253BC384656D9EB9C51FCD8E0FF
-:10D2A00017FA3C3E6DC64732E5FB78AF0E8FF0EFC4
-:10D2B0001B564778D0C5DBB26FFDB904449119E91C
-:10D2C0007700E6A3A8BEE8FCC8D9C717C94E43BE7D
-:10D2D000278A3713E4657F7AF733BEE7FD06E60B4E
-:10D2E000D66FBA5C93791585CB9A17987C241E2645
-:10D2F000176C7686CF354463EDD98A97BE41D664E4
-:10D30000AE44F9D1AECE6F07F9F979A685C8123CC3
-:10D310005F6F07F9A198E447BACF62D00743E6C42C
-:10D320001BE4FE9A825928CF069A67569DF1FD614B
-:10D33000F5C6F77396A518EAE23D6BE6452F55A5AD
-:10D3400046EBAB943A3BC8915B33D74B753AFA1E28
-:10D350005254F73AD0ABA8DB3267E27B7139A53182
-:10D36000E7B5CFA3BD0572A25D65F326EED870BE0A
-:10D370008BEBA1BBB91E3AD53A37F2FEBFE6FDEF03
-:10D380006D716319C167C13506BCACCEA2F29A8E2D
-:10D3900007B0D77FFF29B5EE73985F14CF96287C2E
-:10D3A00080698B175B805FC5386D59F90EC0DBFA59
-:10D3B000EAC1E727F4AAE867557CC44BDFB312A3A0
-:10D3C0001CB7A5590CF89890C7E5C6B66B0CDFDD05
-:10D3D0009B3C63631EA5ABF587648274F73BE3FA5D
-:10D3E000FAD3AB711DEB33D9FA07A66FD3BAA944B0
-:10D3F00088D011D6534CF5A1A6FEF9A6F6D1A6F613
-:10D4000009A6FAB9A6FE95A6FA0F4DFD6799EA5747
-:10D4100098FACF37B52F36B52F37D5FF8FB17F2983
-:10D42000C3F3F5E2D920F205F4BAB9BFA268885F68
-:10D43000A1E7237CE536F2E30F722AB43C66671855
-:10D44000F02BE8F374F1B39ACAB810F093A23A50F3
-:10D4500099962F267A7A589F998FFAA38D4E0BF5BD
-:10D4600037B75F52041D5773FB70CE12031DF5E6EC
-:10D47000143AC07E24CE34944BA7A20B89A418DBA7
-:10D48000B5A1D1F67CF8FFD9A58B53D37180EBDD24
-:10D49000C1E72DE4C023C37DD7223E02D49E1E1BCC
-:10D4A00085931AB1A7E9C728DF6D49238138AAEF10
-:10D4B000B6F82D58FF3C937E08EC952AC687237852
-:10D4C0007F42C2128C23E6D3CEE9651DC8295ADEFD
-:10D4D00001728A96B7B56462B97AAD256B218C5713
-:10D4E00063433CA58EBBD5AF4059595E04FAFBB6E9
-:10D4F000B13B340BAD279E94497022B5174AAE2834
-:10D5000087E5244C9F9FB9173EF735FDCE24E04EAA
-:10D510008246C6E62A12B08E2364ED9EAC1F7AE8DE
-:10D52000B86A81E275405BB177859286FDFCE03692
-:10D53000A84ADFFE11B43EBCC082F685B5BCAF057B
-:10D54000EC7731EFB53FA4844B3BE6557B2D7E0A4B
-:10D550008215C3EB7E05701ADE492C1AADAB7E55E1
-:10D5600002B9F6469E8AF276EB1F28438E800FF5AD
-:10D5700065819EFD62AD6D25CC73603C11D952FE74
-:10D58000ED4B310EDA9943F1B906F4AC2A484274F6
-:10D59000951F76C13C9D32AB3F9777CCB7B2385AD6
-:10D5A0007F2CEF987B256DEF9C986B8175E4A5B976
-:10D5B000B4400CBA3A0CF218D6B776D170BD1E340E
-:10D5C000976A0D1D77082D8B7909B4760EC09F9749
-:10D5D0002A7F9EC9EA0738DCD466DE9EC6CAB3FD40
-:10D5E0001DF3F8AFE5B9855D3A94FB8FC5CE8C414C
-:10D5F000EDD3C37965FDED532AE886029D6FB27ABB
-:10D60000875AE8D89BD6DA889FF2D4A61C827EA2DD
-:10D610007F8D2DB01DF84351875EAAB3BB026B32DC
-:10D62000AED0E8FB0189CCD1CBC97B399CEFCA973E
-:10D63000707ED3E5637E99D2EF263F413B6B137139
-:10D640003BC01E89E0DBFFB90FE990E3BB2ABF6A4C
-:10D650001DD02959C8F4667E549EAD50E8389B61B0
-:10D660001C5ADFDC6EC1F96DDA45F9977EEAF39B4F
-:10D67000DFB180DD3C96042DB0BE312480A5872C1F
-:10D68000B30050BAB91EDFC6F9B790F237FA3B20A3
-:10D69000FA68FBA5C3EBBE06BE48222AD655BF1BBF
-:10D6A000E9A9715772652CFBC0966FE17E26A957D8
-:10D6B00026713F87C1D9965FD61FFE56B20CE17E18
-:10D6C00093C767CF07FF6EE7C1E030DAF4C4AB461B
-:10D6D000BA05A8CCD2C99D1CFE9D24AF4F93E93852
-:10D6E0007B72EB92E1FDC6FA4FF665C0D07E3FBE7D
-:10D6F0003F39DF8DFDAE08764F8761C679C395400F
-:10D700000B63AB7BF700C98CD136839B413CE53F73
-:10D71000DF93AAC23CEA86C23885A17005908FB318
-:10D72000FE603003E773BE05E86204CC87D3472D63
-:10D73000D2978A7422F00DF4504BEB573430F850E6
-:10D740008310DB89E236CC7FCB2A4A27CEFE749247
-:10D750009ACFEC236F148EC43AB87FE5CD8F41BFCA
-:10D76000022EB37ABC560817F87EE75E053ED0CC91
-:10D7700040DF5E077DDE9E5B770EACB374A3AF1512
-:10D78000E8CFB92BE4877E024ECE29214DC27EDA46
-:10D79000B9D06FD3CD9595A817BA08FA4B427F9AA6
-:10D7A000F16F9D62B4F708E9C2F58CEC32DAE994C6
-:10D7B0008E519FF7A3E39B23741CAF8F4B08FD137F
-:10D7C000E8B4C47BC0CFA0FE078E35801C7980EB07
-:10D7D0002541D7E27901891D67B8323FE2CF66CA99
-:10D7E00083C3FBCAFC18FEAC0BF86304F2CB7CC00D
-:10D7F000879BF461FBF09B8DFCD2B8F3937DC3E86B
-:10D80000FC9DA5EA04C08FF87E03C737A5E3C54891
-:10D81000C71BFBF6815E1B7E33A3E36BC1D6488F2B
-:10D82000D2E34D1E6D297C47D099793D4BF87ADAC9
-:10D83000737DD7C278576CEC7EDE81EFF9AE473E40
-:10D84000DB180A3A4814BEC3397CE36E89E0D90D6F
-:10D85000F263568DF779D0CF3E8F7B3A9433D5BEA5
-:10D8600036302DE6D6CB06BBCF8C5F4A5FAD485F26
-:10D87000C4374D92C09AEDB6A2FE1C806EA27AD338
-:10D880002FE8FEE653C8ED3B62E1E174C73F99EB38
-:10D89000BB1BDE4FA9F611E4D3D39DD769F61371F4
-:10D8A000B3A81D1BB0EBED5841F71DEDB3D04F16DB
-:10D8B0007810CF57B5CFAACE033A772ADE58FE4F5D
-:10D8C00044DF703ABF9FD3F97A6E7F7571FBEBF638
-:10D8D0001615E57B678B07CB8E162F8F879663B95E
-:10D8E000AA45C37EF29A4F2BD07FBF99605C6B65CF
-:10D8F0004289148BAEF2FC467B7F78B311EFA9D539
-:10D9000046FF3B596F2FD37F49E5F986F644EF6810
-:10D9100043FB69C48B0F00DDDBD22A0DFD48F813F1
-:10D92000837D2BE0385D9E87F1620A4FB4AB853D65
-:10D930002BDA09A9C378AED5E467769AECD80E80C5
-:10D9400023C297C1B10BE088F02DE7F0AC667E13DF
-:10D95000F77BE285DF53B47ECE7C8C8B1094572B03
-:10D96000726CA89F3BF298BDDD8F7E3275F293F208
-:10D97000FCEA354C9F0B7BFCF99C57AAC1AEDD92AB
-:10D98000694139B9256D8F672BD6E3BD4C9FFABB32
-:10D990003C147F560F8F57538ACDA2EB4DE47CB3D6
-:10D9A000DA4A30FEDD91EEF4421C2CD1B3A806FB1E
-:10D9B00099BE4BC8CF89DEFF23EFD51BEC0EA25CCE
-:10D9C00063586764FEA536368E44241827A5D866AA
-:10D9D000C09F9DE8EA79305F5B148F79B05E8E2737
-:10D9E000939D23E214663CB96B8CFA6675117BBF7C
-:10D9F00037E701C4BB19BEAE2A23FD7670BA684B67
-:10DA0000DF827C68EE6F1E9F4C8937F87F1D9EC1B8
-:10DA1000E324C29F16FDC08F76C7E86FF6A3CF86BA
-:10DA2000BFEEC6EF19F55D0C7F7DD2085D3C49C0A5
-:10DA30003B8207115FE47E98885B8BF114C2C6C3FA
-:10DA40003AC6B7FD28FF7E99E0423FB2C0690B801D
-:10DA50002C2CA0F3003A6EFB55426025ADAF4B98DD
-:10DA6000D99744EB05DB6415DB9DBEA11067EEDDA5
-:10DA7000306368987EF71EA9EEA211BA38DCB6E4CE
-:10DA80001B32993DA0BC13F600934BE8E7FAD74D43
-:10DA90000C69608F1711EF76025E306B17F444F457
-:10DAA00075B97FFDB3114CEF66CE25CBBA63E07F2D
-:10DAB0000D6F8FCA715F3CCA6B2EC70B38BCB6772F
-:10DAC000CD8AD7CB71DDF3A4587475B6E4771BC843
-:10DAD000EF51F09D1735D4DBA584CBEF47C8F75144
-:10DAE0007E2FCBAB5B3DA22CC67E9F1246F93D51EB
-:10DAF000D5DA01EFE9E0EF015E7E4AF112631DCF56
-:10DB00008E60F6CDF7152F42AF6EEF7A9CE1A558E7
-:10DB1000E0E57612CBFFFD1EE0E569807B3FBD4A64
-:10DB2000C2B80FFB45B6F60CB43FA56ABB007F1127
-:10DB3000FC5C169B6FFEF91DE3E77EEEB7AEE7F8DF
-:10DB4000E9E2F1F1DB397E3AB9BEEEE0F869E7FAD5
-:10DB5000FA56C04FDC99F3CDF066237E52ABE34D0D
-:10DB6000F830E227A9DC889F44AF113F099ED126F7
-:10DB70007C18F1935EA022FCE2328D78EAC737A7C9
-:10DB8000F057D2609C187672765DA802F6B886CE01
-:10DB9000E9EEB5C220BEAE0A28C57AEF35F9A5A2D6
-:10DBA0004C2F6078CD9C161BEF16DE1EC8D7A40242
-:10DBB0003D9DFC20361FDB79FF63AA1667E87F5185
-:10DBC000ECFE2EDEFFF5E15AA2BE3FFDB94B1EC4AE
-:10DBD0005F30AF3F41D2D20B701DEACE30C5FDB6EB
-:10DBE000156C1F729B43ED86FD7CFF0AA777BB8AED
-:10DBF00023F9ECE01FF171883F09C7CDE59F19EECD
-:10DC0000DCFF15ECFBE52DC81E7A356DCF5B9E79E8
-:10DC1000A48E96A30B46E03CF3EBBD7B00CEB26B2B
-:10DC2000CE50B67F3CCFFDFE184A6AC154E91B7046
-:10DC3000B8DDB1F7ED4529F42995836807D2890449
-:10DC4000B6533A8D5388929802EBD5705D56B06307
-:10DC500065586F17D6E34937964E1262FBD7DC1F23
-:10DC60003DAF200FC7731337FAAB29C48BA5E06310
-:10DC70007B1A51D227E0F86D7113082AFCF3C05FBC
-:10DC800075666FEE009F46A3509884AC82F090EECC
-:10DC9000DA87EB271EA2B278DBCD6ECC4FF8335D6E
-:10DCA000DF98D35FDFE9F6FBD2E12A21498434DB38
-:10DCB00059F98B78D71628BF74E4062068A58DA87B
-:10DCC000FB31E0D55F49D0FEF0BF951068C5C92E85
-:10DCD0003B87F907A73DCEBCB334CECFCED2388D2B
-:10DCE00005E9A71EE736F87532EC63FA9643FFB6EE
-:10DCF000E44968778AD20CD77D1EED06989F627F33
-:10DD000029F7BDD4A8DDE67C5342BBAD4D0A12888D
-:10DD100053FADF96D0BE22C50C4F4E9578F2C64519
-:10DD2000C7717A970D67F12E16EF59F1F75F8C02E4
-:10DD3000FBFB970933C349F4FDAD07A99D0779346F
-:10DD4000D3BCAFD7537A4A4FB579B750FA49E57E7D
-:10DD500072DCDA4907EAE9AF9F8C62FCBDA365BFBC
-:10DD6000BB8D0AA444C57BE104FA9E93EFDF12B990
-:10DD7000260C7663E22445853D8E2239580DF32525
-:10DD80004D16027C714F83713FB7B3B008E122EAB0
-:10DD9000C3F87E2E2955FA227936D48EDF58C0F387
-:10DDA0006A5CC40576A1F26F2D2956DE8328C5FC76
-:10DDB0004AD3A8DE4A82B820E5145A96760631F98D
-:10DDC000A3D21BB4831DBB2140FC360AA707E7FB87
-:10DDD000AE81F13ACB7D0960976F3834EBA2B17414
-:10DDE000DEA1B0E205100447A5E0BA439ABC368133
-:10DDF0003EDFF9A6C50DEBDBCADFEFF449C8FFF73C
-:10DE0000CC23013F85C7D6863D7619ECDE90858C04
-:10DE1000443B973A5C93B82854215ECBF8FE965168
-:10DE2000E9F8B027B43C19E0B22EE1FC9046C7AF48
-:10DE3000AD6671E71972F6F3306EA8D386F849E73C
-:10DE4000F94712A945FB39659ECE5EA6FF123B99A4
-:10DE50005F19BA8E60DE535299D3EBA7DF7B22CCD9
-:10DE6000F68DEEA96671671709E2F767C8BB1C1645
-:10DE7000FABCA75A71033D2599EC73278C4749AE2C
-:10DE800067231BCF359E8D9768CA83B28B79B9E91A
-:10DE9000BC28FEE44405F1ECAE36E64FB94CEF3950
-:10DEA0004DDF7B59E0399B14029E4FF86E98F812B3
-:10DEB000B67AD558F9139D2D2454A5CBB7700E1002
-:10DEC0003FFCB290F909B6ACBD7698D709DF2B6953
-:10DED00010EE7AE15FFBDEBB03CA7FFF574F135D95
-:10DEE000D75FBF3ABCED518063F36D2F221D72BF27
-:10DEF0006A084C81CEE7F95A1BC2B14C63F101525A
-:10DF0000DABBD75A8AEDB8AFB5768F03DB87959326
-:10DF10008083C27398A265FD0CF835247B57A83026
-:10DF200088E6CC9A44D85615ADAFBD92120E950F27
-:10DF3000E9F334D95F0CF190174822C5F7064D522A
-:10DF400059FE9BF43CF0534E95847E58CE219F039E
-:10DF5000E8E1C46C0BE6BFACA8BDF4C29174FCFB55
-:10DF60002A148C375457555C0EEDC30E317A715D0F
-:10DF7000C7F047E114ACA2FC30E2108B279492B0BA
-:10DF80003748DB877989350DF4C73C0A60985F27ED
-:10DF9000C70F8F0F949686FC00D444AF118F6E1379
-:10DFA0001ECD78758DA47804FD52448A985FC7EC25
-:10DFB000C75ADE6743D544F45FEF5189DF3AAE3F7D
-:10DFC000BE5EA4F6A346EDBF10B51FA1FC1BB51F96
-:10DFD000A1ECA1F62394895AC545A574BEA1743A53
-:10DFE0002EF05F4DD94AD81FB86FEAD537FD93960A
-:10DFF000657C9F8D726A4A25FDCE2CE062565FAF2C
-:10E00000519BE4A552D9505F9BA6887D3C3FE8D444
-:10E01000C42C0BDFE79971A746EB9D990ADFD76304
-:10E02000F511C5C450EFA9B118EAE7EDD18D3F0550
-:10E03000F01387F5092377AEF71744DBEF28A475B3
-:10E04000DA7E80DB73B54B2DBE2D31E877D948469B
-:10E05000BFCABF895FA2F8FAAC80A09F2E5B349440
-:10E06000DFA4505141BEF6D7CB540EEAFDEB022A95
-:10E070005775F191C3853CAEEEAB60713612FDF978
-:10E080007A12CFB322F0BC330476C4ADAF5EE90D93
-:10E090009281E5AE355339A2A7938B051D8C2423BD
-:10E0A000D19F27530E54009D754D54801E4A391F31
-:10E0B000106EC761889FD2CF539FDEFD174D053F7D
-:10E0C000ADDDDD3612F37E2E1FA9CB935995BE68C8
-:10E0D00022E83391F7434895FB7DBA2EC97FA90505
-:10E0E000ECB681ED1485BCAF83476FED8C24D00373
-:10E0F0004E2EC7CDFD57B5EC7C05BEBFBAA51B4B58
-:10E10000679A0F858C5DF163FC669FA7AE11E6658B
-:10E11000CFA6ED3A396C4BA3EF19FC806C667709FA
-:10E120003CB809C683C4BEC986CE09F17114189DD6
-:10E13000545F807CDE109A8579159DDE0983C6AF19
-:10E140004EC5275BAB5E2269148E4FBE3AF32FB3E8
-:10E15000697910F88DEAC12738DFE4943FF6DAB523
-:10E16000067E396AE297A3267E397A0A7EB9E04EA6
-:10E1700068EFC9540CF51CE0175D7D6B845F583D5A
-:10E18000CA2F47915FEE79D986F58D238F1AF865EE
-:10E190004521AD67EBF865BAECDB12C30E78E53BC1
-:10E1A000E2975F9F29BFBC7166FCF2C4D9E3973F39
-:10E1B0008E4CFFEEF8C5779AFCE2EBCF2F87605EBE
-:10E1C00067CA2F9DEE20E60376CEB6540762E0FBC9
-:10E1D0007A8E6F11F72EE3718A69F3B4CBC7823D53
-:10E1E000CBF3D6443E4DE73CA6BF57D4CE407DB9D5
-:10E1F000F520D397423F97713CFE8DC731CA424C00
-:10E200006FA6974BF8FE4C4D0AA8F4D74E6A12A49D
-:10E2100082BE9E22912E1596BAAC76A414B59BE8C8
-:10E22000F7D06EBACFCBF266C92166EFD8E97F404E
-:10E230004F17975B0D7A7588D9FE32D5C53EA6D8A3
-:10E24000BFBC0FF212283CBE1EC9ED2693BE15704E
-:10E25000D870A812ED90CFB36D83EE5775F2F546E6
-:10E26000ECA9525F45AC78587DA184F0BEC9A3C526
-:10E270001796813EBE0AF5AED0E766BDDC53F59237
-:10E2800051CEF8C7A75616EBE48C7F3CEACD889CAC
-:10E29000E1F501E50C3907E546442FF37A442FF305
-:10E2A0007A442FF37A44CEC0F8D951BD3CF281F1C3
-:10E2B00077FA757A7B19D4B34FAD9717707970B62A
-:10E2C000E5CC1FB8BDFA5DE9E5CA424E2FFFB99C07
-:10E2D000A929FC0EE54C2DC899A453CB995A90332B
-:10E2E000C506397355E1B7D0CB890DBD7ED8BFBF08
-:10E2F0006200BA77707C371568D7C0F8A4E6F4F2EC
-:10E30000B6CD74D55BFBC0AA0CA0172FF3F3067A29
-:10E310003FB1F9F7AFB4E9F2A21395103B5FD1FC1E
-:10E32000243E9FDB7010E365A79A6F7D21C1D2ACBC
-:10E33000477B6BF7D9916EBD16DC13FFB6F3E89CF3
-:10E34000CDF8F28DED4FAF073EBA8FC7FDCC76AE5C
-:10E35000C0EBE9DA3FE6EF5E3F52C571CDDF3F1516
-:10E36000DD523ADD0C747A22FBBA31E0E7C98977D5
-:10E370002500BCBE07FAF0C96F43A7AF8C64F83C18
-:10E380008D750761FCEF6ADDFF017FBEFC6DD6BDB8
-:10E39000A090D1D569ACFBBFBF4B7CFF07FEC26725
-:10E3A000DF66DDCB04BE093B2FE3865F289FACFF11
-:10E3B00057E1DB10BF58FFEFD18FC13ABBBEB26F40
-:10E3C00086F805F9FA1BD9AD3F3F45D8B99944FE07
-:10E3D0005EA28F9D877157EBCE4791E879295C0F3C
-:10E3E000C63722ED07629D97FBAE4BB047DEB10EFC
-:10E3F000D26E63713BF3F3FF2E90D83936A9D60164
-:10E4000079F1BDB3F760BE41E7EC09B86F65B6536B
-:10E41000C47B3D2D1AC6933A5B7C58DEDE521D82CA
-:10E42000B8C9932FBD25413E58E94B0DA8DFD64E04
-:10E43000FAE130CCE39B5A1A0FF5DB4D768A8BDB81
-:10E4400029DE51AFDFA9F75F9EFC4D13CA4111874A
-:10E45000BA2362BFD0F7549D9F44EB400E113F0991
-:10E46000EA063F69D97AB05F7AC07EA1FDA78E5ACD
-:10E47000B63ED677D65A483DD82F6B1B2CD5B1EC7B
-:10E480009770416CFB85D671DFCD91680FACCC03E2
-:10E490007B86D4E9E36AA7B25F1E1EF5DDFA495711
-:10E4A0008C3A3B7E52846FB9DD32A4485B0821D997
-:10E4B000B32527869DA69C18D65F4EDC38EA5BF80C
-:10E4C00049E102965F2DE86BABEAC578726735C10A
-:10E4D000F8636768656A09AD3FD1602112AD5FFFDF
-:10E4E000328B0B6F2827013847BB219B603DE465C9
-:10E4F00074304376FE08E2E03D55D47F52216EF73A
-:10E50000E35A80EDBA8499B73928BDD4962B04FC20
-:10E51000A619F214FC4E4863F9A1B54EF2A338F0E7
-:10E52000ABA62A64E519C4AD13E562897224E54FF0
-:10E530003519F876A078B439FE4CE417BC802F73F7
-:10E540001CFA4CE3CFDB055D7DFBF833F2DF970F60
-:10E5500034CD8278EEA9E871C12815F599594F9903
-:10E56000F958D0D340F4E7043B69A2AECECFE186A0
-:10E57000F93EB513ECA48951BAE8AD9D94142BFF74
-:10E580004A9409CD7F78457F1E2F41E9C6F1129A42
-:10E5900077E1F3BB206F00D6A778519E3E5849E53E
-:10E5A000708CF9ED6E597608E4E7AE96662C2F5024
-:10E5B000FAE414DAFFE916FF2180DBCE96762C9F71
-:10E5C0006CE9C2F69E968D58DED112C0726DCB0EEC
-:10E5D0002C6F6BE9C6F2C17CF69D294A10C7B9E0E1
-:10E5E000241D5F474753FBE87774F83EEF43BFA114
-:10E5F0007D72B8DDD07ECEE12E43BD2CB4D1D0DF0C
-:10E600003D2560686F2AA83B067CE92ADD6178EE2B
-:10E610002CEE36BC77BA7EC1D9EE976B7F04B6C9B3
-:10E6200049329CBBA0AFC8706E88F2F190662A5E3A
-:10E6300069FDFE441EE7E866FBE49924F283740951
-:10E64000A964601FF426B23CC8D62CF67EEB8DACD4
-:10E650007E7F0EDB3F12799AB23D42D744CA88EEE4
-:10E66000E7DF9FC8CF2915B0BCC8DCE200442448CE
-:10E670002E24A8C17E4829DB2713FBDEAD3CEE70BB
-:10E68000BF95EC94A83DD9AAB0F9B76A24B082F638
-:10E690006B2D66F57BAA48C002F3D7A814CFD0ED46
-:10E6A0007337EFFB4A2A89EE9793D11AEED7C87CCD
-:10E6B0009F3DB2EFED7897E0BE3E87D7CA848F3199
-:10E6C0008F36B9B94F02FE1AD2DCD70BF3BBFF1657
-:10E6D0009B1ACB1FEABDE58B2CE09B4D377E910545
-:10E6E000CCBE29923FD3E7D0E7CFE472B86C6ACEB4
-:10E6F000C7FC854DF52E2F87B3C5D48EF90C9FD757
-:10E70000F3FB0988827ED1307714AE01913F22431A
-:10E71000DE1D5DFF88E8F9D3FF34BF6653F37296C0
-:10E720005F934D787ECD4CF427051E364139AEFF00
-:10E73000B9DEEF3ABFE6947935A63C0703FD42DD2A
-:10E740006FA66F15F112C7E95BBA99E5456499E8C0
-:10E7500046E45D08BA14F919225F43E46FD8785E85
-:10E7600007FD2CCF6B8E4D5FB63DC403E7DE644BD7
-:10E77000BC774BDEA9F3089A3DF95C392C1BC7C660
-:10E7800065F903FF334AFB85A72C3A6E9E47BB51C0
-:10E790005F17E556F875321DC21BAE027BB5A85C4B
-:10E7A0006B85F37C29A504CFE994964B58161D621E
-:10E7B000F5DB3C327EAFCDC3E24DA27EB1A63D0774
-:10E7C000EF2799DEBB38F29E15FBFDDE63E1A5C2A3
-:10E7D000E6CDF3906772FA5E3D5966F9D155129312
-:10E7E0001BB0A13A89EB430ABF8B89FB92025DDC27
-:10E7F000F5C71C5BB7B7B0FC3E910FFDB79765CC72
-:10E80000877696FBA6C1D9B3B2502808FBEBA5DBEF
-:10E81000883B4585F98535E0C7153977EF817C88D8
-:10E82000272E647BB6171F62F6C28FCBAFC6FB469E
-:10E830005C5FCB188F754F49F406E0433556A6FF51
-:10E84000453E74B9D15EA835D90B179FE2FE8F14EF
-:10E85000D2E7073DF988C7148FE5F7800C24BFA3E2
-:10E86000F78030F950CAC77496BB1D10BF2E3A64AA
-:10E87000C1E39EF2364DC6F3B19D2CCFE389906F74
-:10E88000D0F3A82F723886B89CF81BCF93ECE172B6
-:10E89000E2752E270E839CA0E52B3C4FF210CF9300
-:10E8A000349F97D8D152FD92DEDE319745927F1684
-:10E8B000E6416D56089EBF1BE0BE8FA2001DC790AB
-:10E8C000C7B802E9676FF2DD15401CEB350BDA952E
-:10E8D0005D5348562CFFAEEBC2CA41F30F3B5BE6DB
-:10E8E000BCD43688DFE8B4517F26D6FB1E71AEABB0
-:10E8F0000BCF5BA4955B08E45565D9FBD8FE43AF0D
-:10E9000003E97988D78EFBFB649E93BCABCB53B9EC
-:10E91000DDD7350BE6FFE03605CFE7887113BD7410
-:10E920003E3A3A499BB22713E6DF39359809F64C4F
-:10E93000D7F87D1B0B205FE4A04C800CCCF3B21603
-:10E94000717F96AF2B4DD1A45879EA03ADEB038FBD
-:10E9500064B867C20CFF01ED0EC80818FCBC95B383
-:10E960002846FEE269CC13EDDB6F765C3B1BCF4D96
-:10E970009EE6FD17099C0EB3161207FADD408F8341
-:10E98000E0D9650D21DED62EB454C73A5F5B54C47E
-:10E99000F0BDB6F453B48B4971EC7924959BE9959D
-:10E9A000CDE70E858E4FDFEB2A8D3DFEE51C6F9483
-:10E9B000AE5F0379D5556D41BB22092E62C0FC1CA8
-:10E9C0006A074948EF28973E2BB5313BC1242FFAFF
-:10E9D0007DBF54474FF9FDE5D0F9454E437CFF44D8
-:10E9E000F6ECA4600C3C8B52C051C8A1FE70247898
-:10E9F000FEB58BC39114C7E6EB28BE56887855DD6B
-:10EA000029CEEBCD2E2A8B714E6C003C98E9E18E1D
-:10EA1000853E5C1779EE35A282BE2CA5FCA88B43FF
-:10EA20000C043F33BC167EC7F032B7FFA888C74737
-:10EA30004E739DA7DD8FDA456E9D5D0C87A2155A3A
-:10EA40009FCAEB3FF64BE17BA85C9576FD09ED9EF6
-:10EA5000A9BCFC3194543FEE9282EFBE415F9E22EE
-:10EA6000A93980B4594F8F820819B9555A66B07FB9
-:10EA70003A24EFE167302ED4970AFDA6933A852118
-:10EA80003980EBFA93146E05857529D15641D94822
-:10EA9000BA6CF05E63CF9F0EC3771A7B1C4119825C
-:10EAA000933BADC7F471A36BF4E747F2E0168D6EAC
-:10EAB0005B1E9DCF921DC67DD20612C2F196761BBB
-:10EAC0009F9BCF8F4832050C5C4E10C97F9D82F909
-:10EAD000BDC4C1DAE3478BF3E87D85FAFBCCEA39A4
-:10EAE000BCEAEDCE20DC2F4402C6798A7B739EA758
-:10EAF00072CC3E01CFC33C0C74FC91DBEEB7507B73
-:10EB00003923A5AE11E07115516DAC647683589729
-:10EB1000B887668173B60DE0BBA0DDBC0ECD06F3F1
-:10EB2000F959D7E0EB1378FF4711C175DC5EA46299
-:10EB3000B934BE66BF06CDA5A15CFD7D104D5C3F1E
-:10EB40009065A906FE7D51D023D1E4D3597F7FB8CB
-:10EB500016609C4CC075603A35C6C976C121D77421
-:10EB600084DFCB7AF811A5AE04C615EBF96759E836
-:10EB70008120ECAB26B27BA0DE4DA97B03FAE71C1B
-:10EB80000EBF2FD1A913A75A08EBFC78E747AFC8EF
-:10EB9000F9D1F51112BE1BF2A3EB77CAEE0E58CFD6
-:10EBA000CEE70E03BD0FB42E911F4BE901E146E7FE
-:10EBB000F521E837F3BC8EDE407E0A76C974B9D8F9
-:10EBC00010477986C3F19E62DFC7F05EE94BD92E0C
-:10EBD000BC7F27BF7BDF503A8FBEEB25CCAB4D937C
-:10EBE0004915C04FE4237CEA54D0CF4E4BF0CB2ED6
-:10EBF0005AEFBB8A78B7C034BCCBBC402A724EB146
-:10EC0000B783D24DC6F5B20FE4C9DFAF5B90BC80CD
-:10EC10009619890B9347D0F28238E277D0F13224EB
-:10EC20008BAF1B8350F3932FA1F3FC491C9D27ADA1
-:10EC3000E7DD90101C41F9ED8F3662077A4D4BA845
-:10EC40005B371DBE932CE37C8E503B51A172ACE22E
-:10EC5000F2CF26DAE9F7867EED9C00F3C96A9E467C
-:10EC6000DEA5A03C5CC4F8E4E8C35F4E8473E0F228
-:10EC7000374E2F9E33E7F4973682C1C38CEFDD1CED
-:10EC80001E6FC6337FA731DD762BC4DB3FE6FE0F58
-:10EC9000D13CE82F5CC7FD8537E3991FF466A18856
-:10ECA0002F05D3F5F66DA3434BBA0C9C076A274199
-:10ECB000BEF3676E2D2919FA111FF2ED75DC6FFE98
-:10ECC00098906AA0F3EBD64C1B9242DF4F6F6570B1
-:10ECD00030CF6FEC68A69F1B4E5282D6C5CF1A94D8
-:10ECE000A00DE477C3499BE1F9DFA91DEDD79D573E
-:10ECF000FFC98787A6C3FCAE24E155D0FFCAEB123B
-:10ED000058E09EF36B0F9FC74070694C568842E1F4
-:10ED1000D12811DF60FD9EF9B71C13BEB34733FB4A
-:10ED2000257D5AECF55DC4D7376D75CD2F81CE1A90
-:10ED30004356B4E5AFFB43C590C1ECE7C693E791FA
-:10ED4000802EFED7A884111E8D27CFC7E7D3561F6C
-:10ED5000B301DDC3382A7D7E9D431B02F1DA81E0D9
-:10ED6000BC9BDB418D2793893F55FF9CF17774FC59
-:10ED7000346CFF2D87DB6FF75BAA63E577358F6611
-:10ED800070199DAEF8201F684C90689B637C57F407
-:10ED9000CB4831EE5F98E7D55319BE12E67D4E158C
-:10EDA000D1627D6F3187A3986F4F4A78910FE9B395
-:10EDB000AF10EE9988D4DD7DB9FA7B24B672FCF5EC
-:10EDC000FC309C0BE37F7C61EC733B02CF9394653A
-:10EDD000682FBF9052F734C8B77997D10AA58F2111
-:10EDE000F38216763EC53F28BEA370964960E26066
-:10EDF00070B661BB18EFA317393F523F1CF2D4AF76
-:10EE0000E2F2FFAA6D4B30EF49C8A98F36CA28A796
-:10EE10003E42DD42CB8084F6EBFC3A0A6B2A571661
-:10EE20006D9FB60FD4C15599D4064D61CF6F86B290
-:10EE3000CD6A88F78BEF2D38CCECB7859D463D57D2
-:10EE40004F3A3F01FBE0A317993CA0FC6D0379BC4E
-:10EE5000E82EE338F5DB2EFA00E6576FF2CB33B835
-:10EE60007E36DB799B47F3F8FE2432E94CFCF24610
-:10EE7000A2ED188D7AC127C33CCA14E33D5BA24CB6
-:10EE80002F61F05FBEFD84CDA50E3CEE112A470A2E
-:10EE9000E8B8C7A83F0EE51F476BBF1F4DF170FCD8
-:10EEA0002083CB81D1754FC1F78E1F64EBFFB4E196
-:10EEB000D345704F0C99C3EC8638387C407F8D9BCE
-:10EEC0006B0FB4D2F5AEA662CA01E782E2983D228A
-:10EED000EC3059BE5676D1F6C9FF58980CEB4C7BF6
-:10EEE000E807D5305EFA43091AC0ADA3421B0FF202
-:10EEF000BEA3D6E985F32A9B291996D3F7ED741C96
-:10EF0000D02781DF4EDE03DB9105DDEB2AE1DE1742
-:10EF1000F7AEDEE030BAAE760BBB27A3FD7CE26D28
-:10EF200025D1EF35EDAA7D0CE6953B9BEA0709CE8E
-:10EF3000D16BE3DDBAF109B7AF1A394E8E3F3BEA28
-:10EF40008EF3E05CC27E19CDC74F1BF2D1AF1F4DCF
-:10EF5000183D89FC7BF836D891027EC7A8BE22BA3C
-:10EF60003CB5D1DD52D04AD7B5B4E731BC8FA361EF
-:10EF70006530632EE8DB0715A647F9FCD2FE9855ED
-:10EF8000A9BAA2FA77AEE4463B52D8C99713F15317
-:10EF90008CF1C2399C0F2EE7F6F1DC0406E7F9C4C8
-:10EFA0009B0BEF5D61272E0B85D9DC69DD65CB40BE
-:10EFB000EF2EB126837D036B898577519AED20C1B1
-:10EFC000878D0F24FA21EEFAB1D45708831CB13291
-:10EFD0003EEB7B362EB025AFFF38D631CCAF6F2C51
-:10EFE000E4765D01D1E0FC40E3EE51781E2C2E9ECC
-:10EFF000E27102CA3F3BE0F579D0FF74DDD73CE314
-:10F0000008E2B930715F999BF813E9779A760FD9C6
-:10F01000027646DA086DFC723ADEC7D6702ECA0B4D
-:10F020002ADF24AA5B73C7ACB944A17CD53894DA33
-:10F030005DB47ED14377B37A7E789185D6AF7DE893
-:10F04000D14B144A9F8DA3C3EF43FD96879E66F56F
-:10F0500009E14532AD6F7C683FEB0F7BD894B0B6C9
-:10F060003F74E012F0FF8F2433FB8178C35702FD19
-:10F07000343E3DCAD2A15BEFBA314C3E1E71B07E28
-:10F0800047F2C84F6701BC3DE1C259BA7DB9EBC731
-:10F09000083B96D971629DE23D92197BFCB1639861
-:10F0A0001EBD661AEB7741026977B0F3757EB0C773
-:10F0B000F6EE1A8570491993C2E145C7298D8E2352
-:10F0C000E028C613DF5D0C7A1DE4BE95CA7D9D9CC9
-:10F0D0003997E38D7EA70DBF53AC8D877BAC1A6744
-:10F0E000658F07BC517C291C5F8A1D2F57DBCCE63E
-:10F0F00047C74D2E413D3311E2CA7BBFA6FDF3A2A7
-:10F10000F336D3C78C314C1E5DD3CACEF7F7258FAB
-:10F11000403ABA2081D98BA494C28FCAB38D1C6E99
-:10F12000EBC624333F32828721128EDFCAE197CDAE
-:10F13000FA9FE97AE7F0799CEDF5EAF0A4417C6565
-:10F14000EFCE22C4D3C6081DAC338C736485E9BDF1
-:10F1500072CA78308F9411F8DE6A07B1E373B22572
-:10F16000F25E1E7DEF82697D13811F96727B98F897
-:10F17000CFC7BC86062E2D96B6876C10975EDACD6B
-:10F18000E2E4A480AE0FE863564D295F9F9BAFCFAA
-:10F19000CDD61730D02739D4973B3BB13FDD46E081
-:10F1A0001E19AF78021FCFC0CFB1C603BE18081F0B
-:10F1B0001D671B1F629E267846E06C9A9F8027F091
-:10F1C00031BE576CE42731CF5BC644E2B1467ECEF8
-:10F1D000FB96DFAB60EF2DBD91E211EC1FD548CF60
-:10F1E0004B7BF22CF38BA3EFB577AFF0819C4F9064
-:10F1F000541607EFA9F583FE6BDA558171AAA54F66
-:10F200003DFCA49FBEBFF8D10D2E48AEFA48E9CA16
-:10F21000003BB861FB2A17DC33F7A1E27781FCFCE5
-:10F220002820C7CC5B7F9BCB01617735727D73E46F
-:10F23000B7B7CD04787CB1DD8AE70C9B76C405E3D3
-:10F24000306E720DDA63B4FE36ABAFFE04FCD8A6A6
-:10F250009D46FB69F16F3664A8484FFE6116DC04D9
-:10F260000B0E83CDB0C66D56DC4F693C247BE9673D
-:10F270004813E9BB15E6677E1FE67192E2BDA95B04
-:10F28000BE0AF2FBCCED5492A03DD6D4731BDA69D2
-:10F290004D3D177E00764593299FA27E003BECC52D
-:10F2A00031DC0EE3F7A40BF890403ADA37AD0FFEED
-:10F2B000B2E46D3AAF63DBFEE2928AF57A7325E23F
-:10F2C000E9D3EE059B9E5607D6AF1F837D10A77F1F
-:10F2D0008FE157DD29B18DA15DAC6CB0065D101FCB
-:10F2E00068D86CF5520D4C1A1EDEFAC0AFC1BF7C57
-:10F2F0002DCE0BA9A64B1E7EFE9573697DC963D6E4
-:10F30000B41A367D27EC730B3C41CE06D829022F68
-:10F310008B7FFFBC0DE290F01CEC5E819F258FF58A
-:10F32000DAE09C9F198ED3BA7B6D980F6BC653F7AA
-:10F33000DB33C004697DF04B1BD0F747BB25BCF71E
-:10F34000DEFC7EFDE6E75D40870027F04305BE2238
-:10F35000F8EB87B7E0CCA74BB11FC6434E85BFC7BC
-:10F3600001476548E78F3C0D7194D7E3BC0087FAED
-:10F3700047AE75C17A3E5096317ABF6F5506DC971D
-:10F38000576FF567B8B164CFEBEFBF1EE9F0EA83C2
-:10F39000D767B07B24B42C768FA63F0BD6F9B37B0E
-:10F3A0002FC1752E22754887F5F7B1F8C6E70AA96F
-:10F3B0007E2C06BFCC2D66FCF2C19638480E221F6B
-:10F3C000C03E02EC9BBC28E3B9FB7EF72291E558D6
-:10F3D000FF9CC717C61547EEEDB3837DD7C47B35B9
-:10F3E0006D5B1D023C1DC9D186403C9FC2C1CFE16F
-:10F3F00026C1BDEFF2C1E943189E880AFB21F81E21
-:10F40000B5C7A7C173E81FB26A8E12C37BFC7E1B0F
-:10F41000F67D11DFA0F38E87FDF40F32585E9E79E2
-:10F420007D1DC5421E9010D1D3D940FCBF6D0DD2B9
-:10F43000D7678718FF34066AABB13D640D0E81F6BD
-:10F4400040EF6C09E5439C61FF3C421FDBAC9CBF75
-:10F450008DED749E8AA487EF6E09EFD314F4B2E8A1
-:10F46000AE38C37E7D947E8CF745097E157ED6D559
-:10F470005C1E98D76D960F97169BFE8EC2BDE9A7AE
-:10F4800015FF6EB0061EF835F033E55FBF0AFC6C61
-:10F49000C5F8C0D1DF3DF7CA1594EE8F760B3E3626
-:10F4A000CA5B331FD73F5E4662F1F151A797C4E4B0
-:10F4B00063FA3C261F3BD9B9E9FF57F2F6EA01E4AB
-:10F4C000ADBFD8286F3F27C549E711D0334BF0BEF9
-:10F4D00057337C85DF6B96A399C56A4C394A7F0EFA
-:10F4E000111D3C051C057D2E7E68297E2742C782A2
-:10F4F0004E051D47E8D4BC6E233CCDED5530775DFD
-:10F50000FE837525F563C0CE7D560E6CA1533B4E30
-:10F51000E7722B85FFF1DFE561BED12AEE071C778C
-:10F52000F7B9207F6C15F73BFA202E99147DDEE7A2
-:10F5300060F6D2715F9F2B596737BDBD4B76819DB9
-:10F54000170E90EA58F1242AB1711E6132503BDB4C
-:10F55000173BCEE3A1C779BC73BAECCC6D8638708B
-:10F5600017BBD77FE18ACB5CB02F707CD7883B80FC
-:10F57000FF7EF66799DDEBE9D714C89358C0404089
-:10F580003E24FEBBA7D0752ED8B504F31BCC7194D6
-:10F5900045CE6DB8BFF039B9194B73FC6431C4590D
-:10F5A00080DEEF353DDF7511D2D762137DD5017D49
-:10F5B00065F5A7AF1704BF8E27E3F5E7CF9673B9BC
-:10F5C000375D2EBE03EC99E3D4CFC75C02B9F800D7
-:10F5D000E8DDCFC1EF07C6F0A723DD2EA9FBD0C61B
-:10F5E000EF71467A177468F6F7CDE5B127FE3EE96C
-:10F5F00026DAA5E1C9374AEEA1E5B1275F2B7C06E3
-:10F60000EA4FBD9AFB06E9DF7FDAEEAFD0BF39BE25
-:10F610003B0EE7737CF79F726F82FAD37198877500
-:10F620007C651CE645F9772706E03CDFF11C16B740
-:10F630006B7DF6CB12CCBF206D88C793C536668F25
-:10F64000ECFA9FB7207FFAD35D712AC4299A7627F6
-:10F65000A0DFDEF4B403F35E8E3FFBE5247D9CE97E
-:10F660003F5D4FA38DC5338F2792398F033D2733DD
-:10F67000FFAEE999C95B215F6E694FAF0DF607A632
-:10F68000FDF15F2520978E3FCEEC0FEACFDF0F37DD
-:10F690001DCA639BEEB652787F0C3622F5C3378DB8
-:10F6A000EDBE14FCF0FE706170384EE100EBA2700C
-:10F6B000A907793A103C868EB521FD7FFFE0F1095C
-:10F6C000FA170DBBCE413E8AC245D2D8F3C4805D45
-:10F6D000C2F5B3E7BBBF2C017BEA68F70AB40B4E57
-:10F6E000B5EEC963BFAF74F06DD72D054F67DD73FD
-:10F6F000BEB7F866F4FF16D757663EE84FE74FDD12
-:10F7000080F54712BD38DFD3E4FFE6FFDFF0FEB837
-:10F7100084FBF2A7C2FB2FFFD7E2FDCF1CEF896E5F
-:10F72000C82F3BFEECBF72896EFDA75AF793FF4BC3
-:10F73000D71DB18F649F1DAEB8EF24C1109C5F5FD1
-:10F7400035809DF2EE5849E4EFA01F22F277E4B431
-:10F75000C56867C8691D6837AC22EC1E64BF6AE1E2
-:10F76000F7B1B1BCEFF66C6F00E3A28AAF7E33ADA8
-:10F770005B8737783B7004A37F2667D454439CA5EE
-:10F7800075059D171DA735DDE26E55E19A764B3064
-:10F79000AE04CBB7A15C9DF1C3FDF05DC569BCAF04
-:10F7A000D669F237E20B6CC6BC62B2C70DFBD50E50
-:10F7B000AF0277B95353D678BF6DEF58B6AF1D4F30
-:10F7C0000298B779A6704A2D191C4E66F808B8F54C
-:10F7D0008313F747C57DFC4A5A4708F85021D49F48
-:10F7E00064EB413F14FE8E14ECD7589316793BD846
-:10F7F0007E8A1AB9C71FF220B8BF19B96756B5A0DB
-:10F800005F2AE0AC1B0FD76F86F399C257E0C54162
-:10F8100066219E1DD94E6F80CE7F95CAE0BE8AC2FA
-:10F820001DEE1717F0157033E3E17DA0519D1D1FEC
-:10F830002D8DF93AFE4AE2817D96E9F294B01FECF3
-:10F84000E5F204B4978F49242851FFED5845462529
-:10F85000F815C7726C0A9453FBE89A74F3BDE0A4E0
-:10F860003DF237F4A05E41920DF5633985F8FE3420
-:10F870007B96E1BD0390B74DFDF66359E576DC0F4D
-:10F8800075E719DE9B99E0DA02ED07208F1BBF3F79
-:10F8900003FD9B1F641619C699F9CEB17BAFA2E593
-:10F8A0004EEE57F74DB5623CFED89FE755021C2F30
-:10F8B00054C71BFA1F24EE74202ABABE2A58DF450B
-:10F8C0009EC986EF36BCBDA710E2103FF256189EC7
-:10F8D0005F5C7EA1611C9F3D1C04F2AED56A0DCF1A
-:10F8E0001B9ABF204A2A21E7357F4D9489D47C0F8B
-:10F8F000761BC699B87FA7A1BF37E49E0626E3848E
-:10F90000C3DEE7A014F9ECB654BBDF42CBB16F57AE
-:10F91000CAB0EF59F65E5D2B84A1CF3B463C400751
-:10F92000E79078DC0F1C28EFFD4B4BA00ED6F90BAF
-:10F9300039E081327ED8A21258D747999D326C4B5C
-:10F94000DF23D55D5E0276D6678156A85FF075B776
-:10F950000CFE64EB0E19CFD74D976B12FE0AF2B86E
-:10F960005BC21CFF06A705E3F04753BA4BAED5D1E7
-:10F970009DC8DB31F371D1C48A25307E5BA6D6D514
-:10F980000BF2B4F2EF57CA31CEBB12B7F15EBAA296
-:10F9900089BEDB619F5EE425C54F935972FB0FACB6
-:10F9A000182FB9D5E27570A1807AD73DC3BA19F87E
-:10F9B000DD3A8EC98DF8BF1015E241F1A975329C70
-:10F9C000B323774898D722BEB7A09CE5DBDF5E2241
-:10F9D000EE3771A7FF642CBC9FC8F205209606EF96
-:10F9E000D558D04E711DF6EE83FBC8EEF41C728321
-:10F9F00078E8A979C70FFB223D874353258A9721D1
-:10FA00009D15270A587F02F1CD1E4F55C258D46F5D
-:10FA1000E59887B39CE7CFF44EFD8D07F4C7F2A2BB
-:10FA2000D14306CB2F779D9488AACB33B08E5371E8
-:10FA30005E2E258CE7C55C27156C27E1F1CC1FE411
-:10FA4000E3BBE6A9AF5E0BF3D86FC57C67A2684B3A
-:10FA5000601D1DA3DF543B701D84FF5D9130FEDDF2
-:10FA60003CC84FC20BD19470E64F629CC33BB2A31B
-:10FA70002C19FCF2D40A2F9E1B4C7D588E9C9B05A2
-:10FA800038DC0EFFC373B597BE5A45C7DD01B2928D
-:10FA9000B50709A5EF0E9B68A7A2C6C3EF3DC4F644
-:10FAA0004B2F831843BC6CEC3F2E3FD25FB36746AD
-:10FAB000C7FF43C9A5AFB6C584671CEAEB8E1956CC
-:10FAC000CC9F38355C134E01571783EBD7542B640A
-:10FAD00044E38BEF496A2ED0DB9D705C80FAD1BF86
-:10FAE0004CAE0B96A4C3FC8363E1F97C9736642A81
-:10FAF000A5BF1E9B967B23C6491C98FF55FBF3A30D
-:10FB00001BE1C8986BE6114F1BD08DA2254C8038A5
-:10FB100095FB0B940B22CF2D0A474ACFF49BB75B82
-:10FB2000A2759013AE285C35B82BB84307673BAD80
-:10FB3000D772B8FECF23F597B5017E17DA912EAEB6
-:10FB4000E53CD5964CBA20CFEE84FB814B811E4E0E
-:10FB5000ECB062326B0F34821EF5D8D9DFF5490B59
-:10FB600067C2DF71197BD082F1BD37297D68401FE4
-:10FB7000C1F1087731DE8929AFA6C0F98913694A36
-:10FB80000AC06771D88670FB894282707F6A4FDA3B
-:10FB9000C26915C81F2AB677F371264FD4FE518269
-:10FBA0007A9D9FFFD5CE95E1BED481F065DECF87EB
-:10FBB000F8F0B92903D3415B851DEF1F6A2A5F5115
-:10FBC0000C7A62797221E663355549A8879B9A3F82
-:10FBD00043B88BF1959332517579533D104D4CD705
-:10FBE000DD237FD286ED0DCD27509ED3E9E401DFE2
-:10FBF0001CE3FB9D5D56F2D35A5A36FC5BFE69ADA1
-:10FC000013F72DDB419F34903DB6E53A7948BA3F72
-:10FC100089C8FF71147777D6BC180F72B656725F19
-:10FC200002970ECCEADE7B19ECE7D73ADC97C0FEF0
-:10FC30007F8EF71156CF715F02FBFD631F4D9A0354
-:10FC4000FBFBB559EE0DF09741AFF016CDC1F63C78
-:10FC5000F7CB509F316E06AB27323A4879347F8E0E
-:10FC60001FF5B913E1F2697B4260B07B48AE6E7E4E
-:10FC7000C600977EEDB284795198B841E9E79F6B51
-:10FC800086B17B710B4298A735721C8BAF67A4B00D
-:10FC90003FC92BF277D346100DF657D39E72B07B37
-:10FCA0005BDF0BE502FCAE7ECA1184B8E4D2FB9E9A
-:10FCB000B3813E9A2FAB85C057B3CBEAC68C2B835A
-:10FCC000F84908EB5737EFC679754C70F3FB72FBB8
-:10FCD0008A217E55CFF39EEB4DF9BF8B9D7B311E64
-:10FCE000B7789B31EEB68484DF023E6DF8DDE079B3
-:10FCF000BFEF58D83C140E8FF972E84A1B9BD7F916
-:10FD0000E3E8F797A6F462DEB1E20E65D4217C1B2E
-:10FD10003CE8AF64C6E3B99A5B87BE5E12EBBE985F
-:10FD2000EE16AAFF29CB3DDEB2134BE77882EB1922
-:10FD3000A2846D5E3A4E2397CB9342EFD8F4F983B9
-:10FD400073395C9376B2FD6F735EEC5CD05700172D
-:10FD5000BECFBC74D60B53002F029F1724906ECCDD
-:10FD60005F4D215E8E172FE045C03FBADF4CDFCBE1
-:10FD70008B451702FE84E5DBC53379D1F78403EDAB
-:10FD80002BF3FCAFE3FA57ACA39DD7079A7F3BD781
-:10FD9000B7677BFEED5CAE9BD721F8583C177C6CB7
-:10FDA0005EB798F799D359C8763A7426E44C23A9DC
-:10FDB000F3605C96CB150167314F01AF9E01F25D98
-:10FDC00095E63F18D6A3842AF1B0FC7650A420C74C
-:10FDD000BA2FC4942BA57917F63BD3F508793BD0FD
-:10FDE000BA849C35AF4FC85BB14E2177C57AA75214
-:10FDF0004182F210EE7E90C07FA833D8C3157062A6
-:10FE000041BF0F64FFB9A13EDD7DA3A1FF0F3257B3
-:10FE100018DA2F54D718DA2FF2AC33D47FE4FD95DB
-:10FE2000C9AEDF6C68AFD51E34B44F0987A681DD3B
-:10FE3000FDB7966ACCE73EFFC3BEE7A01E6C7163B8
-:10FE40007D4F4B26967B5B54E4EF7D2D1E2CF7B740
-:10FE500078F1F97FB59463F9428B8665A8C587A5CB
-:10FE6000592ECCFCFD650AD8EDE5A12EF407C68F0E
-:10FE7000AFFB0CE4E1014BA03591C2E99C37997DC1
-:10FE80004E02667DFCE55B37815E77B37BE8DA7A0C
-:10FE9000274B6A0C7BCE45F59DA6A317574D98C0FE
-:10FEA000FEB28BC4CEBBFC6A1CCBF7C17C3D4A9B27
-:10FEB00073ECEC5EDB397324CC4F9C43D879055A44
-:10FEC00006EB68FB4C85F841FFD73A15DC8F22FC26
-:10FED000FCF0256C9A70BFBA3F0EF4775A2A9E57F1
-:10FEE0009A0D0FE97C654DC6BCD64BCAFF82F980DE
-:10FEF0005738D9DFCDBA7CFFCA7FDE44DB499BBFD0
-:10FF00008C9D8710F786BC6E3913BBE12B386300DC
-:10FF100079A09297FDDD9464C5ABF70744F9D771DA
-:10FF2000CC1F98D9CACF0B1C2468C7097EA4EB6BE1
-:10FF300087F90BBEA8752BC1512ED0F7EBA641FF58
-:10FF4000FF0B270420E00080000000001F8B08004A
-:10FF500000000000000BB55A0B74146596BED5D591
-:10FF6000AF904EE88400411E76886020AF4E271D7A
-:10FF7000C26B28124054C446650714A540313C9317
-:10FF800018981547F774633308AC6737337A5C5DAC
-:10FF9000C1D3E0A0ECACE7102171339A300D2A8F69
-:10FFA0005947A3828266B141E4B126742428E270E5
-:10FFB0008E7BEFFDABE8AE4E02E859939373F35797
-:10FFC000FDF5FFFF7DDFFB552D3FE4720701A0BA71
-:10FFD0006C4D1E14209D221DB7215DBEFA3B30F7EB
-:10FFE000C3F1EA0B602E06982ABF164C2D01387F0C
-:10FFF00004DC369C3FA65D3DB3CB85FF5CFE5182A1
-:020000021000EC
-:100000000100ABECF83F8ECB3AEB2AFAE2BF45E1B8
-:100010007A30D335FCF911FF8A0F34813927361E27
-:10002000F77DFDDB346FB75F05B305A0D93F876966
-:10003000D8BF18CC2300F6FA6B78FC8E7F358FF78B
-:10004000F9034C0FF8D733FDABBF8EEFBFE77F9EB0
-:10005000C7EFFB434C5BFDDBF97A83DB09D01FE084
-:10006000426BC540350F8F46632F6E689F9CE94BEE
-:10007000416A16740E1DC883D40E968C0CA473248A
-:1000800096075E0F403AD3B08AF79767BEC5F2C0B5
-:100090001F9F1DF99D0DDA4F463F339402DC03820A
-:1000A000FFD965FF7D494AA5819A23A1BCEECDEC1D
-:1000B000031B2580FB2090BF00E99CCA3ACB7889BE
-:1000C000EE4F719E42794881CF4C3FE6A24CE867E3
-:1000D00052778A078553BADC6480A58EB556180E10
-:1000E00080523A1141F99A40821FB3009640D80AD3
-:1000F00074FF8F96139138392F03C8826C3CFF6BC5
-:10010000169EAF5F077A3E6E5DB94286B274929BCF
-:100110008BE5B60222BC9E4D7EC45DE3A0FDEAAC39
-:10012000B44EE2BE4B1DEF5871D0C3BEADFCFCB562
-:10013000F6D5F55405B080E6AFCD54EAF6E0BA2B1B
-:10014000FAB43D209B7A9087D3DC79653D94C3BF98
-:100150008C127A9553A6D85507D9A9034CA8C7681D
-:10016000480ED9709DC55975A9B42E1A662AE0F5B6
-:10017000252D32EB03CC8A7910EAAD52D35B3B8458
-:100180003F21BD544EA89C01A8BFC59B8CFC2C757B
-:100190009C64B97F0BCD3DF25B054F7F23A776E7CB
-:1001A000B76AC22DA769BD2A4D6E7C1DCFB5BA4D69
-:1001B000DAF14EDCBC95EE948C53C9E4583086E4F9
-:1001C000827CB8C3E46F8764F6B7DEECE39C1FD88B
-:1001D000DE2FFA61C73B68FFE72EE3851B009E70A8
-:1001E0004F7B3E30E197D35BBF62DF0637F913DA0E
-:1001F00009F991AEC775684380E75E576E0F0550E9
-:100200009E51AFD34CFB47A5503095F47209DC6B7F
-:1002100050DE939BF71F213F996C7784496EC84449
-:100220007BBC5E27B58BCB134F868229387F7C5BE6
-:100230004026B71D7B480D3A703CE63D05358D7173
-:10024000E61D9F4C7ADFE96F6239D4FBEB99C6FC5F
-:10025000E726F6331884D7B2AFDFCFE021BB89E2BF
-:10026000DA4AED4CC134A83361C0EA724C93539022
-:100270008FAE30B8E97AD1215790CE55DCA6C8A907
-:10028000782EEF493548E75E876A506C1427037271
-:100290005FBC6E3343D88671C4966902254EAE6347
-:1002A0002F84821407F5B8D69C24EC79D2E57A998C
-:1002B000E296D3AA6EDF82F2843793DCDB5CDDCF7B
-:1002C000FD96DBC472FF32DDF7961B29385C237D77
-:1002D000F9643FEDAFBC48F6D390ECB6E173897199
-:1002E0005A8F8BFA3ABADC7439563BBB38EE2F5F23
-:1002F000DDC5712F71DF6A13A8F528774F85ABB87C
-:1003000016D7695F03F367E1B8CE8234AFFBFC8F89
-:100310003CE5EF93BD4C9527B42A742EA7E9AA7645
-:100320005DBDFA1BDEBFD7FBDAFED52D5EE7424787
-:10033000ECBAA34812711ECCCE53F6983EAF57EFDD
-:10034000133BE718F2D6A4EF5543DE9A8C9136FEA4
-:100350007E85FD11C378AAF331C3FC5B32D718EE5A
-:10036000DFEADA60B87F7BCEEF0DE33BDC2F18E6E7
-:10037000DF59B6C5707F96F21F86FB33655024F4B3
-:10038000B97C2964213F9B0BF54CE7412BD307A097
-:1003900093A98A96447421B8993E043EA62B3CAAA0
-:1003A0005C847613B5740E20BFEF78E3EF796417A1
-:1003B0001DBF1AEFCC72C5F2B29EA77F6A3EEE63F4
-:1003C000453DF5600F038A84DDEAF1BE57FD24C484
-:1003D000FB6811C6133C67B43199E34C34A54F4810
-:1003E0009262F1042DD244F958F75B3DBE14CF73ED
-:1003F0007FB092FCE83D1946B8BAC79BA9662C0DA0
-:100400003C74DD9D737F7E6CFFA00916939D6D4744
-:10041000FA3AF2D1775EC4EC8AE3A780F8407B9B7E
-:100420003C770A44F0FA4C272821CA4376C848A2F0
-:100430005878B92B6F36068899DFA3A2D09E7F48E3
-:10044000570A49DE81A726A49DCAD5E2D28DA8BF4E
-:10045000E326E6079648A111288FA60631CE5F94C1
-:10046000C6FCDD0761D6E3FD10B110FFF301384E85
-:100470002F0017D30741617DE2CAC905189F1635C1
-:10048000983D1B91CFC2F4CEE1E49FF9638FA64B58
-:10049000782E2CED14E2A7D004EBA9BED1F9A8D593
-:1004A000F8D858A454D0F90AD35B373E83FB77368B
-:1004B0009A602BAE737AEC630F435C3EDEEE299FAD
-:1004C0004EF37648A0505E0DB4D842DBB268FFCE42
-:1004D00001940FF4792B3C15338B70DDD945C0FAAC
-:1004E00086D6BF00E9679653C81EA6F46719E07365
-:1004F000C37CF93DF967809F2B2459DE00E2421945
-:10050000EFCBE3875F7F6DCEDA3CE6274075DC7684
-:100510008F3A9FCF6FC55840E7DF6C0B6DE57AAB24
-:10052000669884E7AC7CC966A2FC7F14E333DC0CDC
-:10053000F0B9DFCEF47FFC4EA65FF833991EF7BB0F
-:10054000987EE9CF61BAE87B6400F577BA48A922C2
-:100550007E7AE3A3F73823F8884A30A7DED1FD7E00
-:10056000A5E60F050D279F4C263B6892DD64A7F991
-:100570008D689878EE73CD63427256BC5CD5C7899E
-:10058000CF82A68FFF30BE849E333B259C7FAEA9D1
-:100590006B00F96FE2F9AEC8A3C52AE4A19D7747C5
-:1005A0005AEB467A7E47E3703A21C611107648FA34
-:1005B000947AE2630DDBC9AF8A44BEBFD3D659E259
-:1005C00074C4F8032A3130CFD46A7966AA7C39958D
-:1005D000FC6216AD3B96ECFAA60F68BFC001E1873E
-:1005E000A8D7F9BE387FDAA5C941A7F92D561FF95A
-:1005F000D38E964FEEBA1DE53073DCAD5ED9159BF8
-:10060000FF3209C14BF67DE9DF9FC9E0F94EDA6A96
-:100610002E6C99EAC479F7D9F7BC4B22B8DF797C04
-:100620006A1A8EE7674AFB882E70654D4BA7380023
-:10063000217EFEC19CC9FBC8C466B86759A99E98B3
-:100640004C4E1517772BEC186F0C71BE9F617C4BCD
-:10065000E660C3FC5B5DD986FBB7E7E41AEEEBFB13
-:10066000CE70171BE691BF52BD8D7CB0DE619B1C26
-:100670001A21911D5CF86C19F33FB784F88FA2FC26
-:10068000AC58389C29DBF0DC3314361AF7A6927F7D
-:1006900026D6B5CB5B5EDEA7B87AAF6BABC0D737DB
-:1006A0002CF55ECFF6560F5E6F5D8B71E40F14472D
-:1006B0000ADFB8C719C473EC187BE90617F2F761B3
-:1006C00051CFF56E54AB7713EDE88ABD4A2E613FEA
-:1006D0000765A07A48AF7B13ED08E049AD0E10F432
-:1006E000A7FAFBCC8F44DEFA8AFCBE5FBC7D6B347C
-:1006F0005464C8338556CC2FA89FCEBFC9B0952E61
-:100700005CC673E87AC88ED93F3CB4E5DD41257CF0
-:100710003D40756D15E5055C3FD923897597EF79E7
-:10072000775046EC3EAC3A6E980F4F48FB0CE3B561
-:1007300059C6F1D393F7C53FDF5B3CAADCF488557B
-:10074000C5385DF9ACC4F92AF1BE7E9EA97B93142D
-:100750008A9BE6661BF753554E051407554D98477F
-:100760007AC8EB7A7C982B434D4F716E80B6EE8C35
-:10077000BD4920FF8C758FA2ADD07902FF25F2CD47
-:10078000D1BE0AF8E2F6C9F288FAAF23ADEE9FBEF9
-:10079000C3791D7F063789BE234DC4DD8286D326EB
-:1007A00013E5BF3EC25E0A9C11533AD2E8E2E40070
-:1007B000A03F552F4909980AF1FEF0CE4FECA8FA58
-:1007C000519E412FD8516F9F994C86FC13A5988755
-:1007D00063CFCECCB9947F6EDF9B1436FD0C7E3C8C
-:1007E0005473202D2C177EFF00D98DD84701F48F2C
-:1007F000EADF81BEAF427182F8A7F132CF90A3CF7A
-:10080000E2BAD507451CC0DB8EC47EF6BEB87E16A4
-:100810003609FFB5E32FD53B55109AE620DC208C36
-:10082000FE0FBF9CFFCFF43832B8CE213FBFB9BB1B
-:100830005FEB7E5F7D58F8FDF9E66F3FA2387F1EC3
-:10084000F35FBCDFEB72D3FDBDFA7999FD52BF7E39
-:10085000AE599E1EEA41CE65BA5F296EF6D75AA7F9
-:10086000D8B776E2C5BB28CFD5B6A086A4EEFBE804
-:10087000B47ABD0CAEB87D76ECB62D0E39627C44F0
-:10088000F5FCDAF26DFAE43C41D750FE853A2DFED4
-:1008900088BA06F3AA2583F2EA2CC9BD0DC9E196F0
-:1008A00081E524BFC312845D1E5EE21E3B9EEF6E97
-:1008B000B11C5D77507D06993966DAE72E4DAF772A
-:1008C0006BF8D2EC96D92328DE7FD2B0F0B042513B
-:1008D000CE93CDFBFD1A025C1F1E4EF30D5D89E722
-:1008E0009C1914767E38ADB39DF0A8C31393A5A0D0
-:1008F000C4EBAF8DAFFF0E5B7C436B982F0D97520F
-:1009000046CB3F26FF847E598B8BA8CF8024FA3BB1
-:10091000F603F3A0A719675802A17D0AEE5BE50E66
-:10092000739DBA0C042E9058DF574DF8DA4AF9211E
-:10093000B11F9DDCB4E78854D0038E9160B7D7C255
-:100940002D12FBE0DEF0871FD27DDB3C71F8616287
-:10095000BD7EA52ED5EBAA6DC9A1AD789EB727FEA9
-:10096000DBB965385EB52DD9497DF7D9976C018A19
-:10097000CF67B7DA4212DE3F9BDED9467DC8D99DEC
-:10098000F96E5C012A4DAEFF7C8DF2FC9F2C6C173A
-:10099000006EE11F57ECF4D16314EF6AB7A548402D
-:1009A000F5B52AEEEB3DA0FC6A0AD7094B760D0A95
-:1009B000D9A4589E21FF706169716673924245FF08
-:1009C000D90377F725FCAADDF4FA30C6C3E4278EF5
-:1009D0003D86CF2D7B25C543F504E401EB6DF1D6B3
-:1009E000515BA83E7ED1A2EE27FE2B5EBD63601652
-:1009F000ADFF717F207EA2CDBB06507D14ABDB7BAB
-:100A0000AEF7CE3767F785BC989C743C71FD1FD755
-:100A1000F848EFC9928BAF9BA146194C76D1340BA5
-:100A2000685D8F2C29E4979D1B92B94E4DB4BB6332
-:100A30001ED1A72CD7F1877E60CF24FF5181E5100E
-:100A4000DD90BB7523CAE93B4FBA96AF3B47DE95B5
-:100A50001F6F9F6D556F917D6EB2312ED29E64AC2B
-:100A60001B74FABF9E34DEA7D27EC1804354ADBE54
-:100A7000641CE761BF87CF7B82AEE24790AED4E4CF
-:100A8000DF35DAD7E1C1E797D6FFFE8DF7582E9B09
-:100A9000FEF133DAF78043E031EF09F925F60395EB
-:100AA00076817B006CE1F3EAD74F6FFEB480ECF007
-:100AB0007463EE48D2E342B9F5D48BC8E7B994D653
-:100AC000638F23DD79E023D64BE27913F19B7649DE
-:100AD000627E97131F78FD1EAF4F2EEECFEECC7DBA
-:100AE000DCC28DF92CBFA9725E5FD263F46C2FFD5E
-:100AF0008A764E7D7DFD7CFAFAFA3C67B1D0D7FB51
-:100B00001AFEDE616D3D47FAED782357227CF0CA6C
-:100B1000F5F4D682B4387BF9A570F97B357CE4888E
-:100B200069CD6FAC688FEDF5CF58D4F8B8F713F1F5
-:100B3000F82BF5A0022EE700914A386F2173661C4E
-:100B40004FD4C7E40C389EA01D4FA2F3A05F4ED433
-:100B5000282C5533196FA7F590264188C7C1C96E57
-:100B600017D149928F710FBD6F98063543880F9347
-:100B70003DC238E15AC227B16E999DB6EE8E2CDC8B
-:100B80006F6D7F5847F5CC5A8BF08BC08264EEE7CF
-:100B90007439E979069C7986FCB2D6092E33AE33D6
-:100BA000C70CEB2DE962DE8D28E7C30716BE4BB8F4
-:100BB000EBA7E69AFEB4EF51C7B3F99289EABC50AD
-:100BC0000AF58C9F7DF427EFDF70EEE7A04CA4BA06
-:100BD000E29EFD768EFB89F8C42250795C0911CB28
-:100BE000057CEE8BB13F6CDB0B31BEBE18F75D238D
-:100BF000F509F7A53DE9A5E703E5904379E96252D8
-:100C00006A01F1B3DA2EE8A37D52B7123DEB74040A
-:100C10000897BD98342C44F9F445497D80EC199F20
-:100C2000E33E36702C3944F9EE5159AD621C3ACD91
-:100C30000A12CE8FF6D7E4D2012C97A8459BFF8DE0
-:100C40008BC725151EC629E1A28BE3F2F884BC539D
-:100C5000926B12FDD98F62FEC44EB321EF94146AD9
-:100C600078CEDF5D5CA74EFADE7CD5BC74B958F453
-:100C7000BB25FD4C353DD58BCF68F783109605CE4F
-:100C800023EA85F157EC4B91498F55DAB88AF21A6D
-:100C9000DA5534D51E9091DFF1CDC2CEC69BC37B11
-:100CA00088629485D5545F3461DED3CF817105327B
-:100CB00073D91EC6E9768A6BCDC379EBA41AEE63AD
-:100CC000EC54D720DD28B5F2397E059D4C152D9FBB
-:100CD00097839BE914F031453B653A1DEA98DE069F
-:100CE000F54C6740ABC8FFA3C341CE6BF08493FBC8
-:100CF000C15B2B4D547794FCBAE7FEA1518B27BD05
-:100D0000CB011DAFF4A7CB611AA0FF65F7208F219F
-:100D1000391C4712E591E8A7132122B39F5280C8DE
-:100D200026FCC0C5FE5A010A8FA75EA71CCA22AACC
-:100D300099F19B447954F46C17BB35BBA8255BEB48
-:100D40001FD35357B18BC7BABED0BF32A90E4DD4F3
-:100D5000A37EBD24B9BCCB85A1F8B35D27E79A314A
-:100D60002F951497AFCCC6717BF1B773CD98CF4A4E
-:100D7000C697EF1A8EE373BBBE13E3C2F2628B1BFE
-:100D8000BB983517E74EC1F92AF9672151F4438A18
-:100D900067AAE88F5769758CBAE6376E27FA8B3ADF
-:100DA000D4E1263EED58EC133E2A678BF78EC3A69E
-:100DB00087F75A70DE498B7A98FC77853D9CEA422A
-:100DC000F9AF5A33752085CEA7AC62BECD26705AD6
-:100DD0009D3FBC1E48C2F1CE9DB92BA5E1D73E0771
-:100DE000AEFF25ADAFAE191120FF551B25B7D06C56
-:100DF000F9C03928C3F6560B106EAAEFF7E468F570
-:100E00000CE747979BE3F760ADCE69DF999B4B7A80
-:100E1000EA2A163818646415931C8F8FF675D1FC76
-:100E2000688AB0B72ECAE5DEDEE9E012E51B9A9FBC
-:100E3000783DFA151E009F3797A817E97E75F26571
-:100E4000CEFBE78A3E5E17C98AD9AD844A9B87FCF0
-:100E500007150859393F4C705EA95329DE2DC2751C
-:100E6000501E253E3548216ECCBCCE528AABB8AE62
-:100E7000A904F7A9B6468615E173CFDE7DCC2AEC2E
-:100E80006E88B03B2D2EB5EC3EF8F86031F4419CF5
-:100E90009F55EFBEF4DDE728BFEAF30E374D8FF91B
-:100EA000D70B2BB9DF0487218EE87E37AEC9C6F594
-:100EB000F6F8E6518B68DEC48FDBB289AF496D115D
-:100EC0007E8F166DF974B03887DE875C947E4E3E57
-:100ED0003EADE589D3769117E8BD30F77B8DE2BD55
-:100EE00070AD8673D6B648A100C71FD13F2FD6F884
-:100EF0005B71B0711FE1278B373D3883ED2824FAF1
-:100F00000A17FE525C587A44F4CDCBB61BFB8D6AAF
-:100F1000EA9B693E84AD640F2BEA13EE6FAAE0BE34
-:100F2000B93A3EFEF7D0377B4B347C6C280C65BE5B
-:100F3000E4797DD51EE261625F5C05CA8412AE7BF6
-:100F40007D32EDEF35F78C3FF42FD0DF9389FABD7A
-:100F500052DB9BE4E460B958B99FA8DDBCD2EDA494
-:100F6000B1E6B75B4CD453E3C4773E80F8E7743FF7
-:100F70005EB25EE2BE0336F5631B2C7CC5A610BFD5
-:100F800085AF0CE43E04FB25AE0FB7BC625B4FE3BC
-:100F9000E0EFFA04E442C2A13B6F201C269884F5DE
-:100FA000A6C0F341F2300EC3B8C823255ADCD7EAF5
-:100FB00000081719FAF9A096FF6B53460EC4CE39F4
-:100FC00036EFC020437F12D4EAED123A27D58DDBED
-:100FD0006F10F793041F7B3EFC8764AA7B1BCDBE7A
-:100FE00064C2B5CF1F1ACE7D4C6F72F7621A82AB06
-:100FF000BCA7F47E3A23FB6A7A2B79DE2CE4A5D9D0
-:10100000ED9B7E05BEB4C4F4A2F337557EADC24A53
-:10101000B8C843E0249CA4F6E0CB413BF5851B8097
-:101020001188F320ECF9FC1913BF772F859C7F9D65
-:101030008063EF19B33B84CF37687191DE3FBBE229
-:10104000ECCCA6E1BF49AE3EE08AEBA39373D20D90
-:10105000E314F70D86E7FA960D37DC47796FA5F5AF
-:1010600021A0B4E695C6EADE3465B4E1B9A752A77B
-:101070001D60BF6F7D9871A97ED33DC6F3C8CD3288
-:10108000C503B820EAA532FC257F1B038120E96354
-:101090005CBBB18E2A8BD471DF9874C86CC0016CB4
-:1010A000D7C0A5B6907F519C1C024344DC4894B73E
-:1010B000F1FB8BDA8332D77BB543B150CDEA49DE01
-:1010C0003719E4ADFBA32EF7FE3EA3DC07CE31CAF1
-:1010D0007B906A94F7E0C546790FAD31CAFBC6D55F
-:1010E00046B966058C72CC5E3FCE307F445DB961F7
-:1010F0007CF3F3B719E68F0ADD6518E76EBFD730CA
-:101100003FBF7EA1E17E61D3D2EBD27F51B8D63012
-:101110002F51FFC5077E7B55FD07F057E81F581F6D
-:1011200065A88FB0EBFFCF0E4EE87156B783EB8CFE
-:10113000B36F92CF329E302112203B284B663B99F1
-:10114000992CE2CEFB07CE1F5270FC81ABD892499E
-:101150007596563FF8B438A4F733897DE39D655200
-:10116000C2FBFE24C3FBFE6B7D57E76D0D1BC6451E
-:101170008780BF9BF11C71BF4DD47B5261B8ABF42B
-:101180004CCDDB44C75EE0B4DDAD5FD5BFCF4BECEB
-:10119000B760F9217EAF384F7F2F434E51DA1D9F44
-:1011A000D4FB31BDCF4DEC7FF5BEB77B9F26EA98CF
-:1011B000EEFD863BD3CC75B4CA75F57E49659C734C
-:1011C000CB2875B0D74B4D00F6C926EA93234121B1
-:1011D0004C05E83D7494FEA72224F0CCBD84C7479B
-:1011E000D380F17345AABB3790C7C777464A057CC1
-:1011F000443FC55E758417F57A4272AE2B267C6239
-:10120000DCD7C3A81EC9F18A3ACF26A3A4302F0D7C
-:101210009CA7005DFF215D19E5F5C6F092DEEC2686
-:10122000F1FBA4067F98A9D9E9E6EF9712F1C588EA
-:10123000C9C5F569E0B7127FF7F3351D6E6CAC8E4A
-:1012400039BFDEC2750C68FDFCFD9AFC75DC639E3F
-:10125000C6CF095C6231E6E5FB9BF6B35E9665B6E8
-:101260006B78490DD7E30F0E7178F87B38A5D82D30
-:1012700070321D07192CFF94BAEB5AFC2FCB3C6B34
-:10128000C0A1E0B57ED7F5BE3CC6B758FFC4068105
-:10129000679ED83094F1F3D8FAE7188FBABFE643C7
-:1012A000837FCC5F7DD4E00F0B02C70DF723199D20
-:1012B00016C21F236F0C9A761FCAAFA3D1564AFAE3
-:1012C000403B7898F4AAAF1FD9903B85F6BD369F76
-:1012D0005FF339DAFCADAC5F9DCF63FE233C8EF843
-:1012E0002309DFA7093E759C43A7D6BD9063A6F7E7
-:1012F00089521F37E1CABDE11FBA9F994A87F33A65
-:10130000174DAE530227AA1943F55FDBE401E574DC
-:10131000EEB6A156B3A023C57850995D8CA74D2792
-:101320001AB538D6132ED22689EF89E649CA4B0B57
-:1013300070DFC747A94F913F542FED2C20FFAB2EF4
-:101340008C3C20E1FA5DFDD58D241F09DB8B41E942
-:10135000CC077F7776C6142890D055F679BFBC9716
-:10136000FAC4337D02E7A842D9DD784C8CADC21FA8
-:10137000DFF71E60FF3B898B119F813F4B029F72FD
-:1013800044ACB3709D8CFEEA73B42F7D4F46EFF7EB
-:10139000E83AD9A78E97462DA24E8C6AF5E266AF41
-:1013A000A8675F4AA04D54E312FE4894E3F5D323A7
-:1013B000094F3FBFC90654DFE2FE8AA924F6FDCAE1
-:1013C00000E485EAD877ADA2CFF4FCC516A638A50F
-:1013D000E3AAAF7BB378BD8C6C819766FC33C62DD6
-:1013E000F2C348EBB0592971E73D048C6377101EB6
-:1013F0001D8763BFEE15FD3A3C24E25EC786C18CB3
-:10140000B7AF3878E218C5AF7BBC6A23C975A1C9EC
-:1014100055CADF67A5EE61DC6CBFD7C5FBE27999E1
-:101420005F8C436B494F2BEC11C6D9AE85ABF7C629
-:101430007FC7A2D6E7F21847761590DDE8FBE239C0
-:10144000F67BE3F06FFD1CB175AEEE073A3EAC8F54
-:101450004F6F7E6AA486EFCFF7F5905F8F69726950
-:10146000B3F48CC75FF28AF778DDF4733300E1FFE1
-:10147000B63E98FB917EED15FC77CC457E18DF508B
-:101480008A48BF2BEE72B849CEFAFAB88EFAFA55EE
-:10149000F6E91AEDFB8AF85F5A23F07BFD7E5412C1
-:1014A0007A0D6C1078EA8ADD478F3D8EBB2C79353A
-:1014B000BF98F281FE7CA29C51BE23F9FB3B59BC34
-:1014C000FF42F99EA7F51371FB9F2BD7E850F19EC1
-:1014D00036BAE5D230FA3E6D057D0F5740F621F061
-:1014E0002F6830E25A28AF00E11BDDDF6B01BF1F20
-:1014F000B369F9C4A63F3FC46C78BE3EC597548A11
-:10150000E77F438B1B383F64A2EFB9B5F8D4A0F551
-:10151000DD89F84B43ABC04D1B32AD5C4753FD43F7
-:10152000F7F5FA67D58702375D9525EA6C3A27E922
-:10153000593AB28FEB852BB8B884F91EE5986E55F1
-:101540008794923FA92B399FC937A29EE97DC85F36
-:101550006FD37004911FBD5A3EF4D23A74AEBCBE34
-:101560009C274BB47DB1BF60FC6E2CA85AFDA0E156
-:101570006F1BF619F087FF037A5FA88030310000F7
-:1015800000000000000000001F8B080000000000A9
-:10159000000BFB51CFC0F0030947B0A3F20FA0F13D
-:1015A00067B2A1F2B3B950F9875950F9FE68FAD180
-:1015B000713B13030323137E35F8B0083303830C08
-:1015C00010AB00B10E33F9E680B089280343A904BB
-:1015D00003030F906604D23E405C06C4FE407E27A3
-:1015E00010CF0262197106864B405A5E8C81E1A5CC
-:1015F00028449F2D90FD438C3C3BAD792973F32803
-:10160000A60C5BCAA2F285D41818BCD51918266B93
-:1016100040F80648F2AB8062C26A10F611790606FD
-:101620003D205F5D16BBB94781F2FA40F9DD1AF83B
-:10163000EDDFA183CA773543E5E7A1C937BAA0F248
-:1016400035DC50F9AAEE101A00B1C92A3BD80300C4
-:1016500000000000000000001F8B080000000000D8
-:10166000000BCD7D0B7C54D599F8B98FB9736732D7
-:1016700033B949263079C14D081030E02484808A7E
-:10168000701322449BC204698BBB6C77C4D646148A
-:1016900008EA6A7C6C33790701096A77295A3AB1FA
-:1016A000A2A0B44D5DDC3FB5D69D40DCD2D6D6A01D
-:1016B00058E9AE6D23F5DF5A57D9A052A9D2B2E747
-:1016C000FBCEB9997B6F2609E8EEFE363E6ECEBDA5
-:1016D000E7F19DEF7CEFF39D1345F4106D0921E7D1
-:1016E000E1873E5F25F4273BF924A48790F9F01C9D
-:1016F000922373E019E3EFD933B8B64F2045581C55
-:101700002495841410F653D0D4B9599C4BC8641254
-:10171000FEF1CC425A1EBABE8E0468F9F5ABFF004A
-:10172000CFCED5D5B557E984E4ACE93BB69C3E8332
-:1017300091B8102D25E4412212920BFD15C7AA7C09
-:1017400084B44367971332299663C44AA160D002D8
-:10175000217FA7F28188A8CBB4ECC75F93F3309FB9
-:1017600084282451821585F3EED1ED9DF5CDA71F78
-:10177000DA99750AE1FFB71298DF44EDC8ED6CBC49
-:1017800018FDE73CC54B5E727CEC27A7C152268052
-:101790001FFB776304EF9BFF57C6CB25E51EBD8279
-:1017A000CEB74ED4E2509FF465C8B41CBC452609A0
-:1017B000817EAFE8115CFAC4EBD249486D9F0FF10E
-:1017C0002BD4FB93F07D8E08389F2977BFD9DB158A
-:1017D00024E4CC5A5F18E94323242B73F47CBED64F
-:1017E0004C48C26D29AFAE16A2385EF8C7C5B47DAD
-:1017F0006CB518DE0BF0D4ADCA80F766BD3BF93886
-:10180000A3E983E832C5A3CCE943AE130DCFDC4F87
-:101810004F1FF227A48FECDB2DEDC8C5AF17E27D7B
-:10182000FE85D3C7A71DCF5CD7D17CD582704CB9BC
-:10183000BBD843E8FA3F50BB2A3D9AA2DED8EB5A08
-:101840008EFC1EAC23463C45BB2DB09E38CF984D38
-:10185000DEE093AE8F34B2BCB7D9D64B9A5CB9A652
-:10186000771C7C4841FB7CCD7E9526497F338B16C7
-:10187000654D84FE64DE5FA7B62E46806E81B62974
-:101880003EA49EB204A1FC414224BC974320D2B2A4
-:10189000A219F1FB0428C5715D4CF8D462D1369EC3
-:1018A0002BDF6B5B0FB2262658E1579A1484430650
-:1018B00036E1F22E82C28DC10D439C9F06E57B6C02
-:1018C000EB2FFB48C243E5EA96E272625D07934E56
-:1018D00005C1A4D37B2E4CAE38C75B6D87F382DB8A
-:1018E000F964FD77669BA2F1DAC9E477269E28F2B7
-:1018F0005E815F2CEBDEE52287844B0969CBEF8CA0
-:10190000C1DB2EF8DF65489F20B448577EB906F446
-:1019100044F60932C0E931C9239489F57A898EF4F5
-:101920001413EE20504FF245104FE6F7B1E1E27488
-:101930001733FA8B69BF9FE5DD7E96EB3352E17A70
-:1019400073C884BB08E7912CD379BC7B17FD1FA516
-:101950008F589910DF2B8CFE5E07FA90CAA33A7855
-:101960006F91276EC12ECFEAF8B723CFBC36631E26
-:10197000A5C7C1B044405CB53EE3366A68FFC7AE58
-:1019800014E26E81C34BEBAFE070BE686415007D5E
-:101990000ED6B8917E572CFF3008E47BEAD02B722C
-:1019A0002A7E5DB1C8958483FEB7C93A3FFADF2429
-:1019B0001803F9B206E9C8846B43B984700C2E127F
-:1019C000E230CEC0AF7E7FFF1514CE172B84B05B04
-:1019D0004778FD848E3768BC1F1C4F4E10737C9D6A
-:1019E00068804FE7F823EBA186D7005F36688A7ED0
-:1019F0001F1DEF66297C14F41899CCF4438336A399
-:101A000006D64712187D2C1572B05D9BAF7512AECD
-:101A1000BBB436A5BC6AA08A422B87EFDB668C0B71
-:101A200067DC353C64A1EBA6D70BEF1FB0C039478C
-:101A3000F0077F97467F594016C03ABFE75B959EF7
-:101A40002063F7F776B3DA22BB08F9B059BF7FC03D
-:101A500035FAFBCD1269EC2B1DFDFE1A41E5F88825
-:101A600029609F99F31E99A72F88F47D33885F4AD8
-:101A7000EA37EFF3B4C856F9E398C7087E3F613BF5
-:101A800035786B2C57077E8BAE14A01F99FE5399A7
-:101A9000E4C79B0FD433BE73C0DB11FCEF81772208
-:101AA0003E7ECFD7DA09F66A9B8BD14B7BB6186E98
-:101AB00025A3E9C55C0F138F17BA1EDB040FF2874D
-:101AC00049470DE2DA71D77D223ABA03E8E892FF7E
-:101AD000793A7A10E868FEFF493ADAF57F918E92FA
-:101AE000E5E5682FACE47DF50FFDF62190CFBF3022
-:101AF00024947BBF58C4E4FF2FA24C2E0E92E8F62C
-:101B0000F9A00F8E4B28A7068D363FC24B4D629829
-:101B100007FA5D94FE5E017B692695EBCD2A3EE9CE
-:101B2000EC0B56D1EFC7AEFA301FF4D731BAB6601E
-:101B30007F13326C18B4FD4B23656A8043D9C3CA46
-:101B4000C32D6763609F0F0AACFC2F2D678D188E25
-:101B5000B7AD7339C5E74AF895C2B17A9160C453FD
-:101B6000D0C54F0485E1A586D8F42A5D979F0894D7
-:101B70005ED4C866B4AB098910F40F8BA99D60B11F
-:101B80002F9A4081815CAE71A3FE73F6FF12B70BF2
-:101B90009D76DCEA45652ED017EEC86979883E57F8
-:101BA00046042C03FE350BDCA22118A007228BDC97
-:101BB0008F82FE8BC8C4A5A5E0D79586DB66779D8E
-:101BC000E67A8CE2650DF35BB482FA39C9FAA74D67
-:101BD000FDEB98CF587461CEC32C5FBBE8F4401680
-:101BE000CCBB56084F8786AA56F045BFB5FF34D305
-:101BF000BEF103DE7EB1E6DA74460751D4AB263D72
-:101C0000FDF88DAFB860FE647516D2E5EA3AC96694
-:101C10004FAEAA49B3953FBFE8DA71ED7012B5E057
-:101C2000C142F7813C82744A7E43ED144AA7B1EA6F
-:101C3000E128DA2D2705BD8D96D317374D857EEF28
-:101C40001133B1BEB0B869E610DA5BCB90FED37841
-:101C50009FE94AE3EF8B40AE4E17C9A33AD8A3E3FE
-:101C6000FB051D9CCECDB22B188D09743DF5985601
-:101C70002E8D83EFB821D6A6F21BA6896CDD3A62C1
-:101C8000ABB4620068C02E37326A1AD1FE33EB5310
-:101C90003A9E2666C3B8317C3F42C7DD745EB49D70
-:101CA00097D922247DF6AA7432CE3CDA1DEB4FC5BB
-:101CB000BF914ACEDECCE1238758FFA64C4ACFA481
-:101CC000FDA7A86F3EBB78FF67C322190438E588DB
-:101CD0008AFC50524DACFD10A30CCB0A2FBA431115
-:101CE000B590E2D35D2AC2344847E9A386AC031E0F
-:101CF00062B8DE5BE9DAE65BF872EB9F25F4F36F1E
-:101D0000168B5A406E6CEDBF89E8141FDE509C6044
-:101D100079CE8D2AE0692B75B206617CB98F001CE3
-:101D200069F9F4773A4E9A46E23AED4FD6FB122221
-:101D30002DCBB5246CD04F7E2D2C78A99C381C2A35
-:101D40006A91E9FBF6B504E52301E961A19FF6D0AC
-:101D5000CB8604F4B3868401E0F6E03A9C6767E939
-:101D6000BAEE42FAFE4C9D8CF103728EC26BFAF50C
-:101D7000D4CFF0961003C6DB9A43E23EB4830DC481
-:101D8000AFA2B1F5D3771593C43CFA3DA3B21FC6F9
-:101D90008FFD3D617C49985C93B93C2132A53F1889
-:101DA000BF490BDF9782FE5412BD499C6F59672DC6
-:101DB000827EAC136FE90AB906F0DB5E46F9208536
-:101DC000DCBB4314910EE2E1552B8B528C738FA830
-:101DD000A37C32CBFA5905E11FAB7EB29E4C12595F
-:101DE000D0B521005E482488F3CB24233F0694B36A
-:101DF000F87C279146AC175AD8D30FFC966BF45554
-:101E0000012EBEE6FFFC315C37F28806762C85B6E3
-:101E1000F87C56525E80CE81F9BD1716D1EFF08B5B
-:101E200009CDA01DF83D8321747E758271B9746857
-:101E30004201BEAF596D07BB2440C2027CF787E563
-:101E400098D5AE4F27B46C8BA790E3C59584897C59
-:101E5000FCAEF503EB68258D9702300F068C7F05ED
-:101E6000BF699B3F8A7ED8879EC05C18EC4E6FE0AE
-:101E700051787EE8991247FF2CCCFC2D95FE03F299
-:101E80002E7DA16CF36F320C7B39CBE1872D937CD7
-:101E900038CF8CCF12EE5F1975D32725E1A210D56C
-:101EA00003BDECAC9109F8FF3E1F83C7842F4BBAEA
-:101EB0007701EAC7B07C12E0A0684138CE90730980
-:101EC00058E24009C1F82985EBA403AE930EB84E41
-:101ED0005AE16A52D97C9DF662AC9A943452E07E03
-:101EE0002872FF83DA4D60379E21EF18B540389194
-:101EF0006B50CF0634D6C6A70E62B042231AD281E9
-:101F0000D36EA4EBF49ECDFF5AC8CB3A11601E14D9
-:101F10004EFB77928FF48265898CC485D72D34F17E
-:101F2000A57FE1DF29FFDD74D44580BF281F4BF07A
-:101F3000DDC5BFDEC4E3C3EBC0BFA6F8FB12890456
-:101F400000BE77898871A877C9CB81791639794A1B
-:101F5000E4F6092CB1958F493804725CF6750E4A87
-:101F6000014483496FC2795CC73093F33E467731B1
-:101F7000A2B6A03EEC66FEA7194FFD728FDD1FFED4
-:101F8000CA2E7BF946B26A12C44B6F7CC845E2B4D4
-:101F9000DF9BACFE3D5DA757450DE1FB0A69EC04F4
-:101FA000BBA4CBC5EC8D751A9121FEB9E1FF7DA3D1
-:101FB000F27A3A9F33200FE683FD4EC1B7E891F5E0
-:101FC000C1B862948E9E5F9B105E718530F6FCBA3C
-:101FD0005C832BC0FF8E6D77A19D499C71D08312CD
-:101FE000C6412DED10DE1BBAEDF39B68FECEF91253
-:101FF000F200CE77FDBEEBD13E1F6B3ECABED4F6DB
-:10200000A64F126C711F93AF4D7A77F27785A4B308
-:10201000B80E558368AFFC3A2DDE86EBDBB800D6F0
-:1020200077A2F69741FBEC4FDE7EF1A71C7FE90417
-:10203000ED37A8C3CB60BDB7047B22C09F661C6B85
-:1020400023891979F457D7739B6360BA8DD40B5DDC
-:1020500060BD7C5A4FBA807AC5E3F7778ADB253FAB
-:102060003AF02D05ECD4779F7C6305D80137FF400B
-:10207000222AA5875307FC2481F64A5C01FB663DB2
-:10208000A5BB38961395D75AEC614AD1B80E377F65
-:10209000D78F76C4FAA7DDF13ADA7EFD3FFF762EC0
-:1020A000A17838D53AFCAF7940CF4F0A2CEE1A1BF5
-:1020B0009A7B2D7DBF5E267F1B494147D74B8C9F66
-:1020C000DEF97EDA1AB013857DFD5FC47EFBBEE0CB
-:1020D000725BF4F11AC985E3D27AE847C4F60BF1D2
-:1020E000E90283CFEA0F98F1EE77F60B0CBE43AE10
-:1020F000B807E0DBD7AB4469BD4DFB4E235D2FFD38
-:10210000EEB70380874D87EC76FAA67D52C23D1765
-:102110009F6FC01334A85009F864FCBCF1E006D4EA
-:102120001B1BFBB69E067EDE74C86593FF142FE171
-:1021300004E0F535295C07E57F7A22A05354BD3DC4
-:10214000B8370078A5FD5EAF50BA5AB9D0DE0EFAA6
-:102150003F9B39BA3FEA19A2DFBCA96F0B1BEFE026
-:10216000677F0FF27613617ACAE4E7B7E1979CD1F3
-:102170007A668B648F6F9D212F56E23EE0BEAC9451
-:10218000FEB3A9574CBEBEF9DB67F6C4E8F8EF3CD6
-:10219000FD1F7B62741EB7FCE5FD3DF7D0F991E7AA
-:1021A0003D1AC8AB4D4FBE1A2016FC3F26B1FD802C
-:1021B00053FB9F787C37E59353BF74A31D78EA8760
-:1021C000BF9FA2D3F99FFADE9F26819D7AFB0FAFB6
-:1021D0009A0CF8B8FD99A593C7B3D7816EE36EEB5F
-:1021E000FAC6B17FFD90009B20843CC79F8E753A54
-:1021F00072504A4088E0DD13EEB89BE267137DD74A
-:10220000540EEBB601F51594EFA5F8DE78A0EBB40B
-:10221000343715DE637962089E893C128275BF7679
-:10222000E59515F0748575A013328C7AC2D96ED3FA
-:1022300071BABE978EBD9ED49E5000FF9B0E6C61FE
-:10224000E3F6D1F50C8C5ECF77E197CB46AFE71183
-:10225000C91E673A436EF9E66EF878300BD77FAC4B
-:10226000F5DCF0CCE7C6F5EF4CF930119E1B040607
-:10227000D70EC97845027E7CFAA9C77707D93AD725
-:1022800051C49CFAF69929B0C9FB966BF88B2027AC
-:10229000877FE8D6C0AE5EFFC3D790EF4E3D734C4C
-:1022A000D1717F9AF804AA274F91919F41D09B1B2F
-:1022B0000556D8F4983FE10E24D76B63BCBE560F89
-:1022C000E0FB37F07D9CF1C3C678FF6A21C5FAF9BF
-:1022D000E422A69FE2D988970DFAA0A2F9ECEB2A96
-:1022E0002C84F57C6319D0DF58EB69CE5F83F92F1E
-:1022F000B0ACEB638C8FC7E2D753BD6E59481FBD9E
-:10230000CEA7B85DB1292EBC966ADD096965F1BD1D
-:1023100031E2DEE6D349178A6CE773B3BD39FF8932
-:10232000F87CE2795D1CDECE707DEDC4DF3BE752C8
-:10233000EB812259E07AABA736D7A2EF3C2EAAC791
-:102340000AC1EE6C8CE51526E1EDEC9350BEBFB3EF
-:102350004F427BDF2927368EE1D787CD710EF5CF2F
-:102360000579F6CEE1EF737A64F4BEF1C01B4A8CB6
-:10237000EB85B8552F407F29D6E372DEDFA6E75202
-:10238000F7B7E9C0E994FDBD2D1B5F00F8DF1E74AF
-:102390009118EDE2ED3E29659CA45876D9ECAC4E3F
-:1023A0007FE58974DA4E0A787598775BABF15A0C41
-:1023B000EC91975D04ED4739FC969B7E6FF37B7142
-:1023C000BFA52D7023D12DFABBDD81273914413FE4
-:1023D0005A0E462AD85E68DCE6CFBA34D106379169
-:1023E00063F9B0CFF9F3C2DFCBD02FC4D3744B5C09
-:1023F000E8259974403CED254308B79014712D47AA
-:10240000FF914512D1AD74664C15ADF1C5C0E1BB6D
-:1024100030AED1441A13106F22F9A46FAFA5DF4775
-:102420009A7516778D4C15ADF13F7763A3E1A670D1
-:10243000E4DFAE1581FF36D6F8058DF67D5F73FCBF
-:102440005B793C82EC7BF2C92769792A7C13810E87
-:102450002306C2718EED2B2FE5F2F047DC7E3E2C79
-:102460009001B0C36AEF8DCA20EF84D0F518175DD4
-:10247000967FBDBCCE428FCB42A77340AF7EF3CFD9
-:10248000D29A54747A88D355CBDF3F9E03ED777B85
-:10249000BE90CF9CD908C297C7E35D03D9CB7D100E
-:1024A000DFEBBF69D98B33E87C73358940BC269755
-:1024B00054F9CA289C79C7A5B027C53A98CF3D3CA6
-:1024C000AEF768B386F2FFB1E610961FE778DDD766
-:1024D0005C82CF279BC3F8FD40F3422CF735D7E24F
-:1024E000F3E9E608BE0FDCFD6CBF0278F92AE98348
-:1024F00078CDC1E635F8FD9F9BA3F8DCCBE7B30CA4
-:10250000F0E2B3CD1FE33187DA97B4423CC6C4A3EF
-:1025100013EF4B486CC08DFBF9820E78BF4B66F20F
-:10252000C589DF29EE3E01E44BD32D04EDD73D3CB8
-:102530006E6CCEF7EB32B3370F72787EE0897E4750
-:10254000A6CFF76A8B4BD12E229130C8EF3D4224A3
-:10255000BD8C5679217B41C82A87A7FAA30765CB92
-:10256000BEC2946E16EFD92D337935553FDD9F41AC
-:10257000F1509B2FE8104E30E77BB84ACF073979EE
-:10258000581070BD6BF3255262A17BB3BF6FC82298
-:10259000DFDF482DB79374CCE441E6D57209F8B576
-:1025A0006788372C517E7F3E871C24D4FE781EE836
-:1025B00012E4C2AFD2304E6CFA37DBF87A670251C0
-:1025C00040BEC4EBFE38C89FB1FC9E4E5EFF3D0E80
-:1025D000D70639F28A8CFBCA3CFE4A1218C784948B
-:1025E00023A0C7DD9EB53B6AE8F3FECBDF3E01F1D9
-:1025F000C1779FF1E800D7F68A93012B1E4983FC2F
-:102600008E753F7E44DE9CCDC3B8D8FF27D137649A
-:10261000AB1C0A0E2BD0FE7941DF09FBD7B1572541
-:10262000E4BFE785F82C8C63C904FD82E76F0A617B
-:102630007E87D9CE1FB6F377A667E8E14D30EF0667
-:10264000251C4BC117BF49D36DFB46EE90BD7D08DD
-:1026500074E67C56D6297D96F1798765430238E683
-:1026600093283E17101D9F39AEE847308F79A42F6D
-:1026700007CAAD6953AE60FB07FF6378535DFF0780
-:10268000F166D26BE8F2128483DC2D86A7EBE84D6D
-:10269000DAE87CA54BE0F855519EE78EEC4F35FE0D
-:1026A000A82088DDB0388996867230D7C3F0D73439
-:1026B000741AE3BBA129C41677EF6810910F76BF97
-:1026C000CEF6F5CE3414ED9C41EB57117D474DE12C
-:1026D000E87998FCB15B8DA4A7DA9F329F265F98BA
-:1026E000E59D53BF48400EFDE3D42F62DE51EEEB73
-:1026F0001E1DFC8EAA5FEF6F01B9D8F106CBAFF8B3
-:102700009537BAC8353F29673A6E6A9C0A7E50C031
-:102710001F59ECA2F889E4C7AF037977A6F676379C
-:102720004EDDC7F25E9AEED577CED4C75E9F3D4DA3
-:10273000E3EFDF98F3DA03F31A67FFC29C97B95E01
-:10274000676A570FDFA8839C294E8FA66837224FF0
-:10275000AE5E3DEEF87BB85EA1F35F6BA5CF294D71
-:102760001AE6B798EDCDF93ADB3BE79BDC07BEB044
-:10277000BCA03E17C9027AFFDEC753FEE925148DBF
-:102780001109F434E5CF8D004F2569C43291FB72F5
-:10279000C0BE31E97977E7E339A817E47821E67715
-:1027A0005DE0781D2412A9027E0B8B61ABBD623EF9
-:1027B000DB46E83C81715537970362DABDA1547856
-:1027C0001EE93FDFCEFFDB0861723EA1A29C87407D
-:1027D000A146CB854749F97DB4BF06480AA5E35415
-:1027E000C92C1E32EFA8DE2BB1B8AA54EFB7E09186
-:1027F000EF3798F1DD0E722FD174F02BCAFAA1BA1F
-:10280000C9A74794E84340A74A48C77C4F57302A96
-:10281000B0FD38B63F54C2ED92ABA4B52AD8254DD1
-:1028200024A2CE06BE3D2E119687C7F8DA6DEE8340
-:10283000713E76733EA61C8CE519FCFB739CBE0EA4
-:10284000817D82F604A3A383DC3EA9191E3EE2A784
-:10285000ED4A067BAA613A4F83BDE206FB248CDF7A
-:10286000BF03F60A2D1FC9F8C76B6653BCEC33C40F
-:1028700030E0FA40B3C1F8A1B901BF37919877337E
-:10288000C8A547440DE0EC7AA4550AD0F27E55C0A5
-:10289000F8C523CD8D583F70CE9B007F73BF9A1033
-:1028A000C01E391326E118C04DDD2398D70C3E8F8A
-:1028B000AA370771BBFCF1F87BBFDD41EB3DB8D017
-:1028C0008BFB64267FCD681AD6AE01BEDA7B52DF61
-:1028D0000CF0CFBFD580FADBC245B84FF104C51765
-:1028E000ACD3BE5DEFED1AA4DF0372D766F0836749
-:1028F00016AC427B28A0FEE36D500E684FFD1D3ED6
-:10290000D5EFDF09FA7A665CB4ED9F07D49FDE0548
-:10291000DFAB87C235E9B49F59C707BBAFA6CF8EDF
-:10292000F0ED2290787AE61F705FE3B0A07DA907F2
-:10293000E26AD72B48AFC609A305D8D15561CF832A
-:10294000CC7E310A690B64F200C53B01BC1B32F43A
-:10295000FB96AB10E92C14C8A909D0F2E38F9DFCBB
-:10296000F1D5F4FB915DB7A25C743F22A33D36F331
-:102970001BB793AF58E484FB3139655EE95B2E37B2
-:10298000E3A34756F7CCD2197902FFCDDA5BA3A2B5
-:102990009C78D19EE760EE0BF792E85B2EA4676609
-:1029A0009FC81ADB47863D2FD84F240F8B8C4F22B0
-:1029B00051AF35FFB9E4EB6224559CFBAC4BC679B3
-:1029C000B5C76B4A601DE4F377E03E19E9B18F6F3C
-:1029D0008E47C73F6B956FB2C6E02A00D54FD7B37D
-:1029E0005FF9F71C80FF6CA3A9A712A8A706CAC4A9
-:1029F000C4540ADF030F897148CA3C52CBF4D6761F
-:102A000099E50B6EE7E5C7CE91B85098E4A3999C81
-:102A1000DF1E7B4464F65C9CA09E23E7CEA37DE191
-:102A2000E3DF33CB5E56717F2266F8AA2A312B9002
-:102A3000FF58E885E2E8D298D72667C5A64CDBFAAE
-:102A400017508BC59E4F5D94AC2F811C3FAE02FD8D
-:102A50009EA17E2BD0EF12BE4F5463E6614AE7E69B
-:102A6000C1FC1F36F5AC9937E3C893DEDBB8CE0B5B
-:102A7000F1C2174CFA696834D0FFD1DC389EB94FE7
-:102A800058724B2406FAD3956FCF9FAE72E4472F4E
-:102A900071942F36BE52AE38E3A8DB66211DE801E3
-:102AA0009457C51CCF7B2FA3EE7CFAE838CB48BFE8
-:102AB0003C8E407A02B87EC59C80EEBF5B6A00BF48
-:102AC00020F040798635BF60B9C2ECEE815FB9096C
-:102AD000D8F9FB6B548C679A799D2E3EEE0A45C758
-:102AE0007AFB1FBA4385F65DC1220FE0EBC8E5EB28
-:102AF000BD98FFC1F3534DB9DB7AF9FA6B6E0279D9
-:102B0000982DA2EEE9C86FCD857DF9076A54CC3FB8
-:102B10000DA40DF51DA165DF134AF851FA7D7F550F
-:102B2000628D356E7387C2F4D7750ADF07DA66CF18
-:102B3000DFA07C709D02F961BE46DCB714559EC7CC
-:102B4000EBF0EF4D7C040E5F2716FAD9B3C80FFEE9
-:102B500028A38F38A78F3DDC3F7D04E4BF1BE886A8
-:102B6000C9FF6DDC3F75F63BBD217258013BEC1689
-:102B7000AD1C4251CEF59DD66DB7270A6376393725
-:102B8000D549F78DB9B6FA790D45B6EFFEF06C87E9
-:102B90007D92607A8DB0F5E9F2F8A681DC2EA77AF5
-:102BA00097D9199A18B1EEAB38F47A83CB68562EC0
-:102BB000C2BE09A4451A617D9CF6F456BE3E7F2331
-:102BC0001B5B94F9E8BF6D8527B58F79BEBADDFE32
-:102BD000180527A170CE1917CE872E06CE89F6D9F3
-:102BE0009CFB6B774A915D2FD1E7E274960FD9E198
-:102BF00067FE7C07C45169F9594E874F2912F67F49
-:102C000088CF77711AAD9F82BFCDF8EA73907803B1
-:102C1000F526A7CEB3040B08BFE7A5FEFE9CC2F6BF
-:102C2000B3174F1D7F9CE7611CFADCE632BEAF583C
-:102C3000E278ED8AF1036B39A1B0FDE79175E17996
-:102C400094A63D7687CBE8B7D64F3EED72D3DC072E
-:102C5000C9E6EBE9278CFF5E58B36ECB74CACF4A46
-:102C6000BE0FED9FEC35ED9BC500E41F0D6AE00F34
-:102C700064F37D7CB29AC951735F3DB3CE2E579DEC
-:102C8000E7ADDC3C2FDEED3C67C3E5AB931EC7929E
-:102C9000AFBF56ECFB1A23F1EB31E8CA19BF6E82C5
-:102CA0005F999DC9EDE048FAAA3963D3E3CF9B87CA
-:102CB000B70F4C4F965F82F33329E980ED27060E5C
-:102CC000FFA16E7505ECDBB178DA607362F19BD31E
-:102CD00093F22BB228E305887B466A3250DEAC08BB
-:102CE000FD71FB00F5C7EB8DFEC56F5AE639A851A3
-:102CF00068A78DC32786EB232B7F3D2130FAE9E0BF
-:102D0000E3EDE0F874DAD15D62CC0DFD7E40860C17
-:102D100021855F6B9D773BE26DC8077436D6BCC3D7
-:102D20006EC65781858D6188D3B9CF4BC807EEA990
-:102D3000A6DD1246BB659E3B839DFBF015E13E1E62
-:102D4000F5D387FB611D7C2CBFDFD48FEF9BF15443
-:102D5000AEF76ECB60E5ADCD2C7EEC3E72D96B3A12
-:102D60006DE77FD1453CF4FD162AD7210ED84DEDF5
-:102D700078F81EA8182210476FA3F5A316BFBB2D25
-:102D80005CAD819DD05E5AAEEAF4BB34A702CB7233
-:102D900061B9564DC79CEDFEDAD26C8883178B98CB
-:102DA000575B4ACB2DD4A44B776B38BF9F97BCE9B8
-:102DB00003FB2C1D9CF3F9C9F57455440D89C2E33E
-:102DC0000A69D5908B31A2B7399DD1F78F42BCE407
-:102DD00009215AE9A6F3FF393F7FD5A53496DC0ACD
-:102DE0007E8F1C7343FCA04965FB10400FEDF392EE
-:102DF000702FE1F855F8B8237E105FCF0FE4A118CB
-:102E0000A4B67689A421D5FA5CED6672AE5D33B4C2
-:102E100071E949933FB2E54F2F62FCA404293DA517
-:102E2000883F3AE5357147EADDD9C97C25BAB01A41
-:102E3000F22961F69E79BEE74DC5F89C9BCEA3D5DD
-:102E4000C7E5587E26D2297DBFDCFB89E43E8BCFC7
-:102E50001C5E5471AC06FC924117C68B02D3C8DFCE
-:102E6000462CF2F6A81B836EF4C9ECA4FB287DC4A3
-:102E700067B2B80401BA49A38A18F6210BC4F8A3B3
-:102E800085006F6FED34DA5F973C9D5AE6C97EAAE4
-:102E90000A98FDBFBDDADB60F503DE4D63FB2F77DB
-:102EA000F9AA9E86F995FAE2D5E83E4376E62476BD
-:102EB0007E0AE8F8128D0C0922C8C108617A33AC89
-:102EC00032FD5AA3C179298144C9F9B4F1F4A3FDB3
-:102ED0005CD59372BCD50BF808B278977F9780C900
-:102EE00080529F91F08298F4AD6A77337D5102E36E
-:102EF000F4577A898FD6FF63BF82F6619F3F4F06F2
-:102F0000BC3E2FAEFB26C49F867FE9C6FCC6BE3FF3
-:102F1000CFC6FCFB3EFF15CB406EF709E42855F603
-:102F2000A4EA6C1E4F362469B0CF17586A10D8E750
-:102F3000187E8184213FD815FAE9E237E7E1C4D34E
-:102F4000C485B49D87747B68BBF047DEF79750BAA1
-:102F50007ADA57FEE0A524195731E329CBD2A20F24
-:102F600003DE3A26FD5B03F04D37855342FBD5085F
-:102F700001DCE5D922C61F49B62F3E1DE265478315
-:102F800035903F5A2597616A6C60295BEF5F79A3A2
-:102F90007B61BE355A7D0DC4D72B8EEB2867978594
-:102FA000360F40B9F27556EE5018BF40BC8858E451
-:102FB0006ED5D92938BF3E4E27ED2163D010C6E526
-:102FC0001BC7B9037BBE9C950E20CFDD42075197EE
-:102FD000950E16523A9863A50343B8183AF82A2A70
-:102FE000EB4FC23FC66B3542326E379A0F36AB9904
-:102FF000A5A3F9C584E3BE8ACC20C851932FB4059C
-:10300000F7A25C755FAF44C05F37F9C4E48F8F3DB2
-:10301000237C12017E5FEDD3AF4AC527E08758F9C4
-:10302000E1DA31F86605191E08D2462B64124BA767
-:10303000A2E4E797BD553CC5C2074EBCAD582490ED
-:10304000933679C6CA16BC6A23E71BA50BC7FFCB0C
-:10305000B2DE11B4F06127F543C058EE16C304F494
-:10306000CA02DFBA3F025DCA75DF0B813FE87247D3
-:103070001A306F76C13B693752BAFCE3245187C9D5
-:1030800077E8EBBE8BFC7C228D807DB2BD723DC6A5
-:103090007DFF7853742AE8892D14FF27512FC72705
-:1030A0008B9883393499EDB7EB21F68C86D87BC2A7
-:1030B000BFC779D9E0F586B01E5D679B7CDCE16116
-:1030C000FB5D3B3C4CDF6C517A54E0B7E142554B21
-:1030D00095EF5CA9B2FA4BDCA4221CC4D1705FB995
-:1030E00043956A7B599C2FB184BE5F32ADE451EBAE
-:1030F0007E81D9EEC1E63EB453B6341FC267565D39
-:103100009C40DE95B724A6C3FEB8FA97A5820BFAB9
-:103110009DCDF671E17D8BC54ED355C69FEA5FA468
-:1031200028F0B1DA1AD3332DF2581585682A7B7B43
-:10313000A787C569D45682DFD5C35FC77DEFACE2F0
-:10314000B0F06528B7F69030EDC79360EF83C58681
-:10315000F0254BBFC1BA3E9B3E5C41972ABD1CADDA
-:103160002C3C17D3A17B719F6C45B0FA0FF2DCD1D8
-:10317000F4063F272D7463C26FEED7DECEFDF49ABE
-:103180002215F9B4A349E9C573302AB39F3E085606
-:103190008F7BAE00F669A98587FE303C61BF36366D
-:1031A00093EDD74219F66BE109FBB5F084FD5AF8AF
-:1031B0000EFBB550FE4EB38165D8B78532ECDBC649
-:1031C00066B27D5A28C33E2D3C0F3537E0F3D9E671
-:1031D00046FCFE5C731396293DA0FD474A6221B070
-:1031E000ABBBEF520CC8C7E9E2EB7EC428CA027A37
-:1031F000F104593CC1F3E203782EDA131231BED741
-:10320000197A80DC409FDDF3FDDD101F51BFEBC359
-:10321000A7477E9080DDB64788359030211BD58A40
-:103220001A99DA13C5A1CDD59961C0DBE5ED909F60
-:1032300038436F09AFD39265DD5FBEFE7B96F2D453
-:10324000D25ED94BEBDFD5BDA81DE406C0019B6B58
-:103250006DEA929A96624AB445D4A001F957A8C47F
-:1032600081EEBF04EB351DE06776E067485B08E25E
-:103270001F5375A51CF895D64F303EB9B0FA5DAA1C
-:103280008EEF9DEDC6AB27565C503D228DD31F7C43
-:1032900017C6E9A783B4698314F6AD205BC08EF22C
-:1032A000B0FDE06E179313DD1EF6FC9DC7DC0FAF7B
-:1032B0005EEEA1CFE51EC687DD9E482D9C4B199E74
-:1032C00023621CA8CF45BB80430A4D85AFC0F9A13E
-:1032D0003B7E2213D867D8C3F976FA543FD3E7F779
-:1032E000A8A8CF974FFD767B262D4FFF56380CFAB6
-:1032F000792B097B814E62DB985C79AA625A663D24
-:10330000AD7EC9FC6732414F7DAC32BB36CEFD92FB
-:10331000968E1BA742FCEA8FC7989CFC361FA7D746
-:1033200035D888EB39DF87760D752CD06E6909C9E1
-:10333000986724E6B0A7E2D2FE0AEA29D430885181
-:1033400078943F2F50314E72D6CDEFC118447B4652
-:10335000F144B50CFABE272622BFB769DE38D8DFA4
-:103360005B7DE578FE34562AE33994ADA52CCE9AE0
-:10337000E6FF7C1CEC981DFD1E261F7C2AE699C6E4
-:103380004B0F1EAD0EC253D480DFE3C6AA5AC4BB96
-:10339000266A98AF4A7FC3EF0D413CB7B295F075EE
-:1033A0006910F1DC5DC7A48F7E7A29E4EF7C590BAC
-:1033B000F3BB09301F1C4D3311F68D860FA7013C5E
-:1033C0007F63DE6B30D49A46EBB7AFD3C2B00E73D7
-:1033D000B5EA5AC837E8D0AAD11F4A9B53A35E8FDB
-:1033E0007268E4DC06DE9FD15E2A63BE117C07BEF4
-:1033F00024ED6400CECDE771599696512E801DD6EE
-:103400005187E14038D760CB3F6FCFBC06CF2B4907
-:103410002B3211CE0E62A8503F5627A39ECCF3A9A3
-:1034200009B04BF2CCB82F1CC5B0C425B26EB19F09
-:10343000E7C869906DE7C72747EDE56C1E67C8765A
-:103440009CFB38CBE9C58927E77CB3828F6600BC3B
-:103450005970E0571F3D9F0783E5F530CF3CCD8B7A
-:103460007087B4D62A905F9349630BD0DD45C3EBD8
-:1034700080736E69FB20ACFB5C5D263A1DFF523207
-:10348000DC0AFD6EE574DE5D68D7DB7B54C9E4C7FA
-:1034900030F0E3D42691C42CE343BC3266196F5A52
-:1034A00077A6AD3CBD27D7567FE6AE22DBF759F1B4
-:1034B000D9B6EF97EC2BB795E7F45D6EAB7FE9A13A
-:1034C0006A5BB92C718DADFEBCA3AB6CE5F9837F53
-:1034D00065ABBFE0C43ADBF7CB86D6DBBE5FF1D687
-:1034E000ADB6F295C377DBEA9B76BD532FCEE6F6F9
-:1034F000CDC5DAF36EB84FC216BFB5FB0B4E7B5F7E
-:10350000FD4B9BDE0A722DA0207DCBA0C769F9D6AA
-:10351000BB98BFA52E0EEB2057742E47A9185C0050
-:10352000EB561550511FC83E564FF62D43FB63CA4C
-:103530002E2A8FE681554A46BEA7815C6E8E2D2EBF
-:10354000B6C4A53C5A0F9EE1AA0AD4E23E88D95ED1
-:10355000D60C12F5C3783AB37BA8370BF53C3A6D1D
-:103560006F99D7F3A28847A587A95FF8A8C52F1C34
-:10357000CB0F74FA7D17EAE74D118917CF1F089119
-:10358000467896361EAB86B461EAFFFDB587F2E752
-:103590007625D2D04BFBDD5EE465FBA5DCFFEB2E90
-:1035A000EC43BE182E9451BF10592FB5C6ED3AF911
-:1035B000FAA6A94FA1FF49F18EF2D6C4FB566128A5
-:1035C000DE0672E72E2FCAC329BF71BF0CFCA516F9
-:1035D000A9792A7D1F3EA218B00FF520C76B91561E
-:1035E000560DA1A7E250FD6178CED0A99D419F253F
-:1035F000253B0FA35AF314E178B3C3DFAB0659A2FE
-:103600002E66F69F3C5789B7D27E248DC291C2FFA9
-:10361000309F526017DBE728967F07F406D6FF79C4
-:103620003A85AA4C15F3423C4007023E917E3C414C
-:103630001FEA0D0F1C8285B22CC4619F10EC53D879
-:10364000AFABCADC85EB6EDAAD60CF46993FDC09E3
-:10365000780DD6D9D73B4DFD0EE2A95D60F1F1EEB4
-:103660000CFDC56A3A6E77765126C462217E526F90
-:1036700091373BB83E8D7AD9D39437B891333F69AF
-:10368000EF50FADF254E03F87A08C82DCFBD3D0470
-:10369000E8DDA3D1D544BB3EA647509F327BF73629
-:1036A0000E534DD11ACC03783F588EF6ADA7E9F9E9
-:1036B00094F8F30C49C49837365E033376A3BE27DB
-:1036C000458A0E764593AE18BD29E4C15C95FB3959
-:1036D00053CC73AF2C0FA89BE3C38C9B8EC4237970
-:1036E000DCCD8C479AFDDC965D3E793C7BDC43FD6E
-:1036F000D0A805DE2D741CC04BC7B9FA5AC4834C40
-:10370000D8B9DD3F97F6DE87FBB16D3AEC37CFE5F0
-:10371000F67225E087E27B8A42D04F580AF1952C59
-:10372000F07E3F530B7C69C663863CEC1C773846C1
-:1037300024167F73997A4B3C7F29C2AC2B661E19E5
-:103740009ABC4CAFD17FFBE17CD9B46EFBF9CDE9DB
-:103750003DF6F2CC5DF6F2ACB8BD4CADE6E36017D9
-:10376000808D86F18D7DF6EFF5E6BE410D3B6FA6AF
-:10377000D291CF33FD6BBB3F8770FD6FE6BB15F475
-:1037800025AA40BCE6DF6ED7ABB95CCFE73AF46759
-:10379000B95FC2B843D5D1E000D88F667CE8575EE8
-:1037A000DD967766C6799CF2DCFBFA4E42BFA0FF3D
-:1037B0001E75B37807C4913F2CE071957C1E579914
-:1037C000C2E32A052CAEE292F497D60A9827FA3E75
-:1037D000F20569BC94C573D8B9AFF76AE517049DC3
-:1037E0008D17B58C7767496C3943433C07EA99F1EB
-:1037F00015337E10F01BCB817FB7865F6E3C42E9AC
-:10380000A4FA976E02FD5C25BD78B419E45B818C47
-:10381000F9DDDA825BBEE98578257CA7E5EA427DA1
-:1038200032F2C18F5D1847E8E2746D9E5734E33180
-:103830009A97F181CF6BDA47312FCFDFF782BD7BCB
-:10384000C93E2AA36DFA8EC5FDCCF8DE9C3EFBF77F
-:103850003E226469901FB0262E32FBCAF05559F201
-:103860001F67F3759BBB36F1C05A5A3E40E2E570C4
-:103870002F5D19A78FF080FD9CEC2422E039A94927
-:10388000C7A5709CD69FFB9CFD7BA9E31CED6CE754
-:10389000B95AC7FE915F22A7AFA7E36DD31B05906E
-:1038A000A3DBD6525B9E966779F9BEFD0C3203E826
-:1038B000F02AC9174E007E5F95701FCCFDC6CCD78D
-:1038C000AE07BD7E8CE52769D3F49D106FD67E2AA6
-:1038D000A19ED2D24859992FB9DFF40FE7C304F65D
-:1038E0004FCCF8D793745D41AF1CA07E79B10BFC2F
-:1038F0006C0DCB7DD42F87F2D3D42F87E741EA9785
-:10390000C3FB7FA67E39940F51BF1C9ECF52BF1CB4
-:10391000DE3F47FD7228DFE5ABC278F920AD0FF43A
-:10392000E22D3BA84EAB0039ECD2803E9C72A8AA97
-:10393000EA36753525A92F743D85FB1CD557B17C1A
-:10394000EAE5F73D85FB1CD6389C354E998CC30DB6
-:1039500009661C0E42A3BFE6FB1123F1B8288BC7F2
-:103960004DDC8F61F683F1CF51FDF038E8BB77FD78
-:10397000DBE36DF4D386F90F747B8BE07C47238FF8
-:10398000FB99F933BA2D3F7FC3C116CC9F51728E7C
-:1039900037C2BA1EACF0615E89E28A6A206F9DFE72
-:1039A0009CE9C739ED69F3E9D46F7E6E5798F1D57C
-:1039B000ED2E82F9D43181DA13605F34C717BFE985
-:1039C0001A3BEE7AC25BC4F3F8EC7261E41C018F1F
-:1039D000FBB8C19AA5F354048E0F9EDF8EA2B18866
-:1039E000C5FFACF1576F711C0FAF7B7D06DA750216
-:1039F000B5F7D0FED3A22188A375C2B98114F3DB39
-:103A0000CBF9BD2547417BA33387E58BD4E48743BE
-:103A1000D0BE2DA732643D47609E7318F057AA436D
-:103A200096FE6EF5178DABFF24AAAFF571F4B5E4E1
-:103A300066E77CDA0E5FA6C2F98D6EDFBA41F0A3AD
-:103A4000BB43418CD3F7E75492214BFF5268219E30
-:103A5000F3907CCC1E96422ADAC332CCBF3459DFB5
-:103A6000ACD7C2E53E65678C2F7A7C3D58CF2D4799
-:103A7000F07E09771054267D6A6CDFCE5B2C12D560
-:103A8000222FCC71EFF63279D95D1AD520CED21D16
-:103A90009275382FD2AD97239EDB389EDB0A4C7B84
-:103AA000228C76CCF7B97C35FB69E37180B60605CC
-:103AB000EDB948538656938579BDDF017EEEF6B5A4
-:103AC000AAB07FA9E4548CDBEFC084FD964DAA997F
-:103AD00087FD7E1FFA55FCEB34E8D735C6F9A463A1
-:103AE0009C1E3EA9DDEADCEFA3D086AC792BCEA7E5
-:103AF0009FDB9FCE761B4A871458F72D8FD9CF3383
-:103B0000BB083BDFB5F1D066E4F3EDF220DA51DB20
-:103B1000CF0929CF8985D204CE6F23FEBDCD0ECA31
-:103B2000E3FC94C7BF03A981BE284BD8ED96794723
-:103B3000EDE5F983F6F282134E3BC87815ECA0D57B
-:103B40005CEE0D5279CF92668665C0472416AF02AF
-:103B5000B8EB495F0BE453B8249617B29AEBBF95C4
-:103B60005C3F06D23210FEBC06AFCDFF24FC3EC047
-:103B70007CDE7F41CDC0E67610B211D3AED2D16FDC
-:103B80002DB8FAE92A14970EFBAADEB09FF75FE979
-:103B9000B09F9C765695DC8B79BBB98EB886B9EF11
-:103BA0000BF3847B0F9CE35FECB8667F90AF05F26C
-:103BB000CDBC0F06EF1FA6ED0BE48410A678CA6DEE
-:103BC00064E775F26E27466F0A3A5EC2D77D14DE4F
-:103BD000624B106F4BF9BB5C1FBBC72BB7468AEB20
-:103BE00074FCDC863EB40756DD42E78376F879CC78
-:103BF0009731EB6766F4E1B9A5DD7502CFE325687F
-:103C0000D798EBBCDBC7CE19D65F29C44568DF580F
-:103C100084E3235C45C9F5A5783AC9F0C4F212AF34
-:103C2000ADB59F87AC77D82F263DAC74BC3FE96516
-:103C3000FBE7261FBC7BD9891953281C1B849EDAFD
-:103C4000B46917AE2F2DFCE13A0F7C08BF4F6229F3
-:103C50003298EFABFE9386E74232861E269424AF5D
-:103C60004D23B19A4584FC8B77F8128196FF6A6BDD
-:103C70005F4777011CF31E7E0A8C3C77D73357D5FC
-:103C80005E992C7BEFEBC772908F035B906CBD2D20
-:103C9000F7C350D4C5D3187C5B0DB253821C5C5162
-:103CA000DB192E4CB6CB8476C238ED2264A79CA2D9
-:103CB0009DCF6C47D1D509F73FF17979F97791C359
-:103CC000631D5F06BC69BA0FCF3B2E9335D8BFFA90
-:103CD000B4704C9A68DE51B2D3356D743B0A768B62
-:103CE00009BF981AFE387CB78EEF1A07FEFF6E7C6C
-:103CF0004CD49FC2BF5F347CB47AEBA4B1E70B70A5
-:103D0000B9F05E22DD275AFAD9D1FF278C8BCBD7A9
-:103D1000913084BC6497A1C17E5EA9F610FAF77257
-:103D2000468D0676C0165A063B604B5F0FC6BF4BEA
-:103D30008B1FE806A22F4D7809C8833944CB384041
-:103D4000FB9DA3C970028BC8570E88104F279F2573
-:103D5000985F92DEEF65F708155EFE2DF0B7323200
-:103D600054DCCF48CBA8FC16337A599CD9843FAD9C
-:103D7000EA7835C4DFE57A1216002E214EAA80C9F2
-:103D80006611DCDFF01A07EF84F3024466FA09EFEC
-:103D9000D201BDCAE3ED9319C9906E45ABC73C97FC
-:103DA0009FC818C79A0C578551A22C2DCDDC09F05D
-:103DB0009446690702C0CFE26573A2623841FB2FC7
-:103DC0003FCDDA919FB17326D43759F38C2F8957A1
-:103DD00053AE4CE671F8D05A7B9C9A0CD339D3F68B
-:103DE000E53F5BB517E2149346C96FE6B77B399C94
-:103DF000E9A74904FA0FD6D9F58697E7797B1DF72D
-:103E0000CC54F85DF6FBA19DFEC35723A807DC2424
-:103E1000AC2A685FAC45BBC1F44B764345B0C70BD9
-:103E200008BB97D7D9BE92B52721E6A7B8BD4455A0
-:103E3000CBE9F7F55E03F312DDB44CF1282844CD4D
-:103E4000A1EF7345166F6911880CE5E47809CC473A
-:103E500070AB9F6907FBE5B03A0FEF4F33FDEA36D1
-:103E60002D8CF912A4A4DA66379B7961B796154DAB
-:103E700086EFE99346E24E1AD0E5ADD9C56847070B
-:103E8000B286FE1AE4ECB9ADE9CB5490AB90AF71B9
-:103E900039E4477B3B6354E9BBCFE611DD629FB950
-:103EA000E5468CB3B9CF4EB1BD4F34DBCF5B1B3E83
-:103EB000B106C699EA637C5845B476685745ECE785
-:103EC000AADD67736CF67AB2FF7CDBFB04B56BACE2
-:103ED000F7008DDD7F1AD14BACFD4F1BA3FF198E70
-:103EE000FEB594FD27FBCDB2F5DB21B3F86B2CE8D2
-:103EF0004D792FE5025F75311C951D6B7FA0D2C7F0
-:103F0000E29A5DA146DC1FA82694F129BD2C3977E1
-:103F10005262E77D09DA6F24DFBE3F50CDE958A435
-:103F20009481E70764FBFDC68B89F3BE63BB5DF438
-:103F30004B8839507C89FE8A41DC27F8930FCF03E8
-:103F40008E65370F36138C4F2F4E1BBA0DF6C157A7
-:103F50006ED3958E10E63DA33FFF37DBE62F033B84
-:103F6000DFBC07B32328225E22D593F13C97D94FBB
-:103F70004421D3412E46449607813F74FCC1EC5C3A
-:103F80005BBE86F9749E87AF3784C5C596790D42AE
-:103F9000FEA175BCA579BD92651E1137998FE3719D
-:103FA0007B7764BC499F6CBC633C9E658E57BFCCDD
-:103FB0003EBF7A45C3F9D5733E36C73B06F34B8106
-:103FC000DF09C7E3F99523E32DB7CFAFDEADE1FC01
-:103FD000EAF97DBC23E34DFA64E399719D2EA5B106
-:103FE00011E870ACF88E19D7B9B66BBF2DAE43622D
-:103FF000FB97561513B25360F223EEABEE04BA787A
-:10400000BFEED612D42BDCBEC67B57A93E5E293349
-:104010007857E4FBE22D163CEEA672C49809E72916
-:10402000540207CFE07C8581E72D42F87C94DAEBDF
-:1040300006E69794E0F7C79BC358DED7BC109F668F
-:104040003F250BD9FD60B3160929EDF6133EE67F37
-:10405000EECCD1AEFB12E8B72A2FCB0B5E78053140
-:104060002C763435AC0F7B607FE8F3A40C74E48CC1
-:104070005D0CEE60CDA438ACBFB76C60B019E2A0A7
-:10408000B24BC7BC583DF5DF3B78C5C7FC79B79B41
-:10409000B52757B07B525770FD44A43ACC3F5AB174
-:1040A0003203F31156AD36FC1AC5DB6A4178B59878
-:1040B000EB3B381FF539BED44E7F21089A87AE57A7
-:1040C000D090E2708FDCE7F25F5C23D07E23FE6B42
-:1040D000D1CF88D08699B49FCF717D5BF5869B4008
-:1040E0003C825CA5A0FC5ABDDAEE17ECF42434B097
-:1040F00073769605490B6DB7AACEFEDDED667C158D
-:1041000071DC13B362827B63CCBC5C277E9C71D371
-:104110009FF9ECF1D133A474079E0DE3F9BBCEF601
-:10412000661CB4DDC7E45B97C2E4C3683E60F0BCC4
-:104130000B7DA3FF7702E368267CB9725C00799F50
-:10414000D770C2961F4F118B46B5B94F40A4036577
-:10415000A8871DF3D92D1CC819EFDEA85C22FF6EBD
-:10416000A884FF7D0361F4BCDF1935EF452F15935B
-:1041700054FCC3E2C12B8E4AE1163D8917130FFF91
-:10418000DB7CB4CBC7F0F9D2D20F2A981F986FFB13
-:104190003B02E639AF6B47CA32912DF4BC72BD6267
-:1041A000307F75B814E8F2F8956961F6F730B81DFC
-:1041B00094F8A50876D0A7EFDF28B0E53FF37EC7D7
-:1041C0005A2F67DEA5E55C72F29E04C87F690987F5
-:1041D000D01EC81609F0532EE4E305D8F79376BB3A
-:1041E000D5968FD7D6BF5F80B8E1C3909F68398FCF
-:1041F00097D7D02774807DD71267718804AD47E1C7
-:10420000CE6F4808EDA5C9BC2FA75CCFBFC59E2FB8
-:10421000D8B168B5764087BC9AEA1EB8206CCB2E20
-:1042200016E732EB8FC4BBF83955176924704E433B
-:10423000F2B1787388DFDF31519EEF87624C2B2C0F
-:1042400084FCDEB85A45E7BF272BBACC4FFBED0EF6
-:104250009637F6027DCA61CC075FDB744F04E284B7
-:104260005A56EA38F85A6E1FD4FB195DBDEE4A144F
-:1042700040DCFCE5ACEA7A7F768AFA4D5FC5FE1633
-:104280008F712FFD7A3F8BCF3C2CA6960737F0EF2E
-:104290005FD820E27D431EE2C773AC9EE29E85801C
-:1042A0008F8737EE0EA73A8FB9508BAEF35BF0EEE7
-:1042B0002966F70510D27719CC73CBC78FF47D9799
-:1042C000CE3BF3631FCAD94C89F56B69BFDE3A1F39
-:1042D000B3FDF37FFA059EB37F9EDFBF4EC8F4E5C2
-:1042E0001067DF3E52263138E8BC3D839763E272A7
-:1042F000F02B93E5E796554119689412DFBBFE97C2
-:104300003AE1FE9AED02E1C43AB80CEBF3FBDE7F32
-:10431000C2BF2FBEE69D6FED007D50A9A0BFB99D25
-:10432000DB3B267CFFE967793FFFC9D7652C7C6EB4
-:10433000E3DF7D80CFE045E1735B2A7C7E26686CFD
-:1043400087F71EC804A120783E566F87BCECAF37B4
-:1043500093C897E81C1E0E1FDC0F678F68FB8752FF
-:10436000B5FF4196F1353FC27312E7E72FF685019D
-:10437000155B1610EC27051CDF186F5DCB33989C7E
-:104380004B4B67CF4C6E5F4AEEC110E42F6815FFB0
-:10439000709B46E54C67E1E09A5471E2A702CCEECF
-:1043A000CF18232E7E98E3EFEACCC8B701EE76ED66
-:1043B00001F4F7148144A0FE96854344B0B47B23F6
-:1043C000C0E897C2FD0CC0AD5CC6EEB1F653BC436D
-:1043D000829CBF82C1BF453F4E204FDE1F3A8E797F
-:1043E000ADFE8A21E4771485B98CAEC01F54B9FDA7
-:1043F00076D8FF26DAF5999249777774011D4AC974
-:1044000032D2656F266BFFFBC01D5DE02FEE516859
-:104410001B9083B90ADA37CEF9FD2CC0E6A768C62F
-:10442000518077143EDD43DF827B09B64F67F7B9D1
-:104430002C1607D7DC0074798D0FED33FA7E8DF5DD
-:104440005CFE479C7F3FF233FB6AFB9F54FCEE5CB3
-:104450008FB1E8F5246FFF09E8F5642AFEA5F4FAA8
-:104460005B786FA1D70F486A7A7D7B0C7AFD0F6865
-:10447000EFC48BB32C116317EC2BCB1F2DDB07FD87
-:10448000C99F59B4EBBBF4297DB42D86AB19166CCA
-:10449000E79E93F23EFA2718D7BC7FC0FC3B46CD7F
-:1044A0004008F353F4BBA07217C8B10BE8570E6471
-:1044B0008FEEF7653F8377F135BE68AAFB14BE1314
-:1044C00090D9F9D800AB3716DFFC3AC0F253C6E2F8
-:1044D0009B17381F50BE0906E64FCC3767927C9376
-:1044E0001FB820BE79089F9E62C63738FFCB47F3BE
-:1044F0000D89ADEB02F9DA59C8F862CEFD9B902F19
-:1045000046F82816C3EF52B28CF2DBE4A38FEF8F8C
-:10451000617D67FBC018F70656707E5AA845E60114
-:10452000FE8D4BB476768E6908CFEBF692E17E373E
-:10453000E609B3BC5C6F2C6630F36090C0FDB48BB1
-:10454000381EF6808F067E50258F67C98364957F5D
-:10455000343FFB2B1215D67B605EE1E3FBD2234B8D
-:10456000018FBD646816D86763AD532D1F4FC832E5
-:104570006A0329F87F223DB421C0F4D0063E6EE6DE
-:10458000C76A23D8A74E7E5FBCF1D93F3C3E4E3F61
-:10459000EB391CEB029F585FAD0BA4D6573704ECE8
-:1045A000FAAA42284AC9FFEB0329E407E5FF9B5317
-:1045B000E1E553F0FB9D8114FC1E095C18BE9FE5EC
-:1045C000F87EF653E27B176FDF13F8C4F2B62715B7
-:1045D000BE28BE7706B22F08DFBB52AD17C5F7D78E
-:1045E00003B8FE4F23FC7EDD87F1F2EE05E420F4F4
-:1045F00093028E5E6B3FAACEFAA13CF58140E97E24
-:10460000F147DDE154F724D176FB52B5AB0D683CA0
-:104610000EAD6F06FFE1E1CFF8705F81EAC703815D
-:10462000FF5EB97F28151D2C16991CF206167581A0
-:10463000BEFF14FD0FA492FF5FE57436915DF01A82
-:10464000A70B3AEF9F029C4EF9D7CBCF312B5AF4F0
-:10465000E500E26BE86A90577BEECE1420DE956FA2
-:104660002404F0138E723D560597FDCC4FB6DB2324
-:104670002704B867674FA326C079294B7FAF07B2DD
-:10468000C7EECF090785EF3730BE2FDD188276B52C
-:104690007C7E176B271DC934DE0AA0FE89BC0D4F36
-:1046A00063A65D6E9BF310233D2CCF7661EABF734A
-:1046B00079D42F9BF2FF7DABFCFF8F11BA62FD5DB9
-:1046C000ACFEA1F09DE3F0FD25157C4EBC4C04E74B
-:1046D000250199EBDB889A9E424F39FB33FDEC9123
-:1046E00075029D6489FB64A78FE8EF603AAC478749
-:1046F00088E7A8567079B2626106B7DB352FF4FF00
-:10470000308FC33F7CCB0355B0AFDE7BAF5606285E
-:10471000C86D607A4FBF650AC657A7F27E9DF08FBD
-:10472000B457FA66C1DF8FA0E34E83792C59441247
-:10473000E037A683DD80F10A0DFFCE71A6BB27040A
-:10474000F1D92D42CF9A75A057AFF6B17331A1D5EB
-:1047500013DC9FD96AA35B12AA98A07E0BD6D7D28E
-:104760007AF09E950BAEEFEE496967D5A48B9C9EBF
-:10477000A24BC6C56B2888712F13BFA3C761EB5727
-:1047800015691400DFFE0A4183D43B3FA513B0979F
-:10479000C4E241CC9BFA6C05A31742FD92F1EF698C
-:1047A000E934E15A0578FFB47099F5C61E8FD773C6
-:1047B0009CB718F97B643E26C7B0222DBF77342BF7
-:1047C000E5BE82F9EC6AD60CB832F93D4DC7FB1B49
-:1047D000BB46F2BEC3A155FEFFF97AC979C5597C23
-:1047E000D4517FE49E92908AF61FFE9D0FEB7D3D93
-:1047F0009C2ED48C482C1DE54A18EF89A4E5565808
-:104800000FA2D2B21FCBED58D646CA9D583FC4EA7C
-:10481000134DBB20BCD376DBB11F79A49F1DD88F6D
-:104820006F64DC9D580E8E941FC4FAF9ACFE858E21
-:1048300033EA9E964109E7FF816CA4C3BEE9E79B7A
-:104840006EC0F8D2754D37E1B3BB59AB82389D7954
-:104850005FC9E7AFBB41037FFABA2F3F88FBFA6617
-:10486000FF2BC1EF00FED7E55AB097944231F29882
-:104870002FC97F4938DAB1BC4266F7FEAF5C787A5F
-:104880007BBB257EA7C2DF4F87FC1ADD725F06491E
-:10489000CAC32704E37BE91741CFA3E749C800A5B2
-:1048A000DF0F7CC5F118D273B5968A6FCCF98ED51F
-:1048B000BF39DFB1E48D8937F3FD9662FEF7761DCF
-:1048C000F14BCFF41ACCFF59297038FDFCFE485E3D
-:1048D0006F051DE7E952A40B1DE87605F7EF9CFA7A
-:1048E000C11CF709217A02E804E2C4F7968FC6EFEB
-:1048F00085E2CDEC7F723446E0FE2E6F29C17DB19A
-:10490000A0DFDC576772ED219F598E617249A4B810
-:1049100007E59C4737E51ED3935A5A9F2196513F8E
-:10492000A887D48666411E6834047FEA87968FCABA
-:10493000684FB0321DFEE800DA3FDA6CB8F1516D15
-:104940003FF7A3A35712767411F7DDCEFD08F5B734
-:1049500059860B7C4B68D93B5236D4102D178D9459
-:104960006350DEC3ED3EA1E7DC8F60CF84EAE573E0
-:1049700056795FC5E5EA44F2F4BF00B9E905CA001B
-:10498000800000001F8B080000000000000BE57D88
-:104990000B7854D5B5F03E73E695642699BC270490
-:1049A000C8090F098A38090482623BE1D558790C9D
-:1049B00015359628938447782620D5B1D2322180A8
-:1049C000A0D886AA156BC509C57B69AFB6A0B4E5AA
-:1049D0007AD17F10B4D0521A2B55B4A25150F15154
-:1049E000938294A9D572D75A7BEFCC39273321B45F
-:1049F000DEFFEFFF5DF874B3CFD967EFBD1E7BAD6F
-:104A0000B5D75A7B0F6361C6721963DE1CC6C63107
-:104A1000761EFF7CB967C944BB366DAD67C268A816
-:104A200079ADBEA11A631BF15541BC5D89C74EED3E
-:104A30001ECD0CA67BCA199BBEAACBEA8476CEE219
-:104A40001C77D0C55891F79370257C5F349E310D4B
-:104A5000BF1D9245E3B679572A769842DB08E651A6
-:104A600018BD5BE381F6396EC6DAA164D60863230C
-:104A700018BBDF25EB301F28032511D601CF533596
-:104A8000FEDE827578AE3A58D34EA8A795307F04E3
-:104A9000EA1E079B1380B2D863610CE6E5F3A834E5
-:104AA0004F1F8E06F50CEF5AA6417B6795C51F81F7
-:104AB00032034B971EFEB5E23B2B95121FD7E6043F
-:104AC00047209C6D8C55EDC479B168A004E0481D69
-:104AD0009E937537D42A4BAC2B190CF9E86A1698BB
-:104AE0006B63ACC21348C3F6AED29CD4E008AA8F65
-:104AF000F2403FAE75963003BC54327744298EE3C2
-:104B000005669E1A7027A7C7CBAB838149B6E474AC
-:104B1000BBE12635A087439653100FF0FDC7D5EFB4
-:104B20007C1FC159EAECB2B34140CF219B034C45F5
-:104B3000783482D3B97B66B410DE2FDBB39CE17C82
-:104B4000D7A4A58F473A9AC77DF9B3073D01789F4F
-:104B5000F25747606782F196083C1F5D5D4DDF416B
-:104B6000F79A358FB13908CA204604ED7062C994AE
-:104B7000F30E02EFE810787F0BE3CC302B503B8D27
-:104B8000015EEBAA55A616E377DDEDD979A8DFD251
-:104B9000513B958D844AC876129F3BE1EF79E83707
-:104BA000C832A778E0716D983FA7F6F0DF3CE69B2E
-:104BB000920BDFD56F303D7FFD9AF7593ABEB79E15
-:104BC000EC2889F77F63756D6092687786FE1F21F8
-:104BD000786669CC8F749BE54B8B8401C4EB0337FB
-:104BE000052695C4FB7BE573750EE2C58C8FFF44EB
-:104BF0007CE4223E028149437BE2A32EA0D83DDA29
-:104C000085F1D2573CD45A4BA7E46A3DF160861F28
-:104C100030762FE2791EE0F9EEE2E4F88076448FF8
-:104C2000576E827600CA1475AACD0278A89FA93063
-:104C30008742F84D6783B19D7FEA64DD7CCD78348F
-:104C4000E3ABFE19E68B42BFF50FB87DC0E1ECF790
-:104C5000123F5140DA189027BCA91ECEB771FE1E34
-:104C6000F88B707EADA2F4F91C984770ADE2631C1E
-:104C7000DEB7F5F0D5B140465421B8DF4E42F7B764
-:104C8000F5709AE7679E7F0A0A2B907FA1D78BBFAA
-:104C90007340D78E59A323029733F6538F3BE7DD3A
-:104CA000CBA03E92F9CEC3BA3ACBC6678CC2F743CB
-:104CB00012CBDB73ABB5EF1CB0E9D739E7B339A141
-:104CC00099DDE362FF0A0B76D73D80E7C04DEABD70
-:104CD000D7C3BF5F3E98BD0E9FADF0AADAC96CC4C2
-:104CE00017C04BF4F23326F98B6119DEA702FE667A
-:104CF00032A7E6827EBE0C42EA3CC032DD9FA2B9FA
-:104D000074709C6E55AA508E02F132665D1E87D774
-:104D10003CEF155E3B8D07FCF8899E1FCD7879B975
-:104D20007A7006CA9117112F69849791178397AFEC
-:104D3000E0628675E3C9665105E8DCA53823DB60CF
-:104D40004E35A13B039346215E58D80EA2F35D4F2A
-:104D5000B190D31C6E1B937F9A18CAD31A3B0B22B7
-:104D60005CAFDB58F52E1796D101653AB9F57E7622
-:104D7000E5BB28A765BD26F46DEA1F1891F850F22F
-:104D8000F32D4E5754E57CF85137DF903CABF120C2
-:104D9000DD814EEC3CC0A9662CD1106E352D7D24F2
-:104DA000CB606C033601389D9981D328FFD5B4813F
-:104DB00011E4BFD49B7EB481D3F1BEAA1B74744CA2
-:104DC00099F754983AD7B20CF84F13F4AB14F44B4C
-:104DD00029719AE9C7709D864B58E43145A000EAD5
-:104DE000A787F823B86E93E90D49CF9412EBA71D5E
-:104DF0007ABE66AD8457494776607417AED7A0D7A0
-:104E0000CAEEA6F725849FA047E2A7CB86FA644E98
-:104E1000C8765ADF4FB0606EA419BFDBE8F0E1B38B
-:104E20003A8B9687ED004F1ED4E3ACC4E7C3F5C3BD
-:104E3000C2F09DE427C42B1A13BAFE3B00868232CF
-:104E4000EC0FA4277EB74137CEA09EE376AF2B733D
-:104E5000BFA6EF5415EC07B2237C3E9F4E7E0FCECB
-:104E6000E4F6C369EFE89D9641C9F157E7CCF65BDC
-:104E7000B3E3F5B70B9CD591047A40F627F5799604
-:104E80001AF45A10B6F063070FF4473DECB9142436
-:104E900019BBC71639787000431661AC1FFE2F721C
-:104EA000D0EF22BB43D4813161FE6DA9DD75BFD344
-:104EB0000BF541DDF530D6B7C270EC4AB05B32235A
-:104EC00007D7C27CCE1D7790FE3A5D951AC1C59377
-:104ED0001D9AC84EC0BCAD60E66400AB4111C6D29D
-:104EE000192A2478142B600EF09DADF914C4F7AC88
-:104EF0004C8DE66FD558D40D93CBB6FA14C4D7F7C2
-:104F0000ECAC41C88DE13375F6CB2C01AF1CC7E189
-:104F100064E194B278BF606135A31EB14E65A457B9
-:104F2000609D93DD26D7B7EC2798C9F567F7FABCE3
-:104F3000F07A0E662658CF872D4D6F7E0BEDD95F28
-:104F4000ABEC3100E566EF1DF4FC86503D953785EE
-:104F50001652B9488CF70E0B2ECA84B2BDFAA59B27
-:104F60006F07FE6DDCEDF0A15A5E7ADBFBDF29D71F
-:104F7000104F4077FC6E5EFD03E5F0DE3ED442F656
-:104F8000EC8601AC1AF9C9DEAC907DB451B357ED93
-:104F900086F2A18CCA2D993A381ECA98447556A536
-:104FA0005990CF5738399F9F3B7E97B70EED4A9760
-:104FB0008BD68BBDB9F8BB16A8B343306F86F2838E
-:104FC000919DA13A78797726B753EF16F85E93C989
-:104FD000ED3D670C89CCF9BA09C6775AC30CED6C64
-:104FE00067CC4ACFED0ACC2F019FCAFE9C3158A452
-:104FF000A3703CF3F7767A8E70E1F76A3633D83DCA
-:10500000F7E1F7B958CA79A4F179649BFB49E7CF76
-:10501000C5FA33CFE34F9E890F227E1ECAF06FC9B7
-:10502000A475D36143797E8BEBD7C794917D91C7EB
-:105030001D0ACAE3E99F29D122C05F4AA51A595324
-:105040008C7ACD336D34F001ABB4F9109FED43721F
-:10505000DC8374E3FF44D0FF45ABC78DF30C4C06F3
-:10506000BB9AF89BE5CEC27E26D78FE1F20F0C2EBD
-:105070009D9E7D51DBBE6110CADFB08DF64B739CE7
-:10508000E108CE4F67B729E7B95CD6AC63E2F6DF3B
-:105090009C49AA3F25BDA77D07DB900364FF4959C2
-:1050A0001E863A7CF786A8BE39E9CCF5084607F398
-:1050B000D807E9ED41DC2D8D41FB86FF991332DAEB
-:1050C0007D66BBB0AEA2F4052003E02552351AF987
-:1050D0006CB885F8ACAFF632639B399D27B7787012
-:1050E0005FF528CA09A84F9F746212CA8D19605AC9
-:1050F00061BF3326A99E28B4DE14B2303F4CFC8831
-:105100005F8D2800DB91928E435F46BC55D834D228
-:105110005B25ECDEEB72F0FD280FE23920EC106825
-:10512000CFF59BD719190ACFDAFD275CF53ABE3BBC
-:1051300052716238EE5740EE3524E227C69A89AFA5
-:105140000F7C3395FA79F37E25E280F94F563FFBC9
-:10515000ED58B467BF65F3393402CB82749DEA63BE
-:1051600062E3EA774DD6D9012758600CD995A5C7D7
-:105170002B1D68BFAE53689D4AFCCF0919EDCD6069
-:1051800013D8655A4FFB143AB3233FF7D53E35DBAE
-:10519000579F650A7BB38C95E9EDAA647A4ADA5584
-:1051A00056E657B3F87AB2A2DE9D0E0F12C9819A65
-:1051B0000CBE0E26AB1F117D4E57A81AE2EB48E835
-:1051C0000317EEC78F7CA6F27DB03FD760C715648A
-:1051D00071BFC0563B1864F0DDD67ECE483374B53F
-:1051E000EF9B97E677107DB407C7231D7F6D2339AA
-:1051F0009C6CBEEE90CA8600634E0B29544AFA1589
-:1052000085529855A71F8A58E2F95F9AC5F7A1B948
-:10521000AB9845837133C3CC9F687F2CDBC1BE78CC
-:105220008A9551FB6826CC6FD9100BF1A7DC1FA71C
-:10523000D8C2FE4280DFB6777918F7C945303F9C67
-:105240008706F3437D591C4AA3FAA0503695834341
-:1052500099540E0915D2FBA1A1C1545E122AA6E7EA
-:10526000C3429751BD24348ACAE1A1522A2F0D5D51
-:1052700045E565A037B1DD885025959787AEA5E750
-:105280002343D7517945682695BED06C7A5F1AAA18
-:10529000A7B22C544BCF478516537D74E856AA9776
-:1052A000879653392674279563432D5456849AA9BB
-:1052B000DDB8D03D54BF32741F9557853653393E03
-:1052C000F430BD97764BAA588FF768733DE8EF002E
-:1052D0000ED7908F93ADBB85595C0FBC98E99F8921
-:1052E0007C27DBD92DA0C75D3DDBCD136526D235EC
-:1052F000417FC12CCE971FFBDEFEFE3016A7DB469A
-:105300006FEFFE0C56D237BF57208BCBAFADD676A2
-:10531000BF8AFCDBC47C6178346DF48B0ACA973693
-:10532000CD5A95C8BE7B28CB46E33E9A196CCA82FB
-:10533000EFD38A4F1E40793223ECF9ED04E4971144
-:1053400039BF9E00FD15ADB5D0765F639E7DE85FE9
-:10535000D32631928BD2AF04769D419F6ECE92764A
-:10536000E3CE8383683D0D29E3FAA7E31A5C5FF679
-:105370006F0EA2FDFB567B54B1A27DB38231BDFD01
-:10538000BF757DDDBFE1FB787F7C7D166D60CFA1B1
-:10539000895DDCAA4D488172F016FF7329F0C9D0EF
-:1053A0004870422AD487ED083F87E5F09D9109694E
-:1053B000505EB627FA1C6EE32E8F764C7041FD8A44
-:1053C000836C3F2EFFD2766DA21BEAA38EF9F70302
-:1053D0001BB0F28EE0C4740DE713694987F96C7D48
-:1053E000030C3DA8577CD4AAC276284E7FB0E3D0E8
-:1053F0007E9374718F6E9F940DFFECBFD253AAE21F
-:10540000F7D68E94CC113DE9D38670239CA0471E1D
-:1054100003B8FAFBA38A47C727CF08FE003AB42196
-:105420001DA45FB26D6D16F925DB523D953864D72A
-:1054300064E6D9A6211F5B094FF67583C81F27F9BB
-:105440000EF06BB067370B39B1B5DBDE4D8CDF6723
-:1054500010BFE5FF3AF89D9AC5D74332FC3A915701
-:10546000C65D781D1F117C08EBF8D788D764EDCE98
-:1054700008FC9BF1DC6661074157C1B8C0A77C5DA1
-:1054800031F4A37D2CD6FB85F07AEA5F0CAFCF0B0D
-:1054900039910CAF4CCB213909FC3A1CFD63C9E4AE
-:1054A0008D5DEC67CCEF3F17FCA69373DC6FEB01CF
-:1054B000393738B99C3B7421F925E48CDDE4DF49A8
-:1054C000CDE6E3557802CEECF2047E6A1137907E89
-:1054D000EAA9AAA712E50D1BC6C88E4E1B1109E347
-:1054E0003EA528AC95A9D80C8532E2B15F09F91F19
-:1054F0008AC1CEB002FDA1AB28964ECD63A943FF71
-:10550000BB5C6F9E5AAF7EBD497D1F5F8F922FB2ED
-:10551000DAEEE67E496D26D82FD764737E8BF7C30B
-:10552000FD20EBEFE8D776B74E0EB679BD5497ED78
-:1055300093F1EF02F1BE6DED1AC2A7737C62BB61FD
-:1055400062B62AE441971FF93CFC25E6417B2673AD
-:10555000EDDB249F32413E29249FF8F8FD43A9FF4B
-:105560001686FA84EC3C21CF3DA937B8FFDFF173F2
-:105570003EDA54A807C67BF6A918A7013DA4E13A74
-:105580001D0F731F8DF8B213DD35C6E9A88D6711A5
-:10559000B47B016F51DCB7872D6EF233D9EDAD7E50
-:1055A0005CCFCC9E49F057788233B37B91379E34E1
-:1055B000AD14895A97BDEB1A17F0DFFA624F2AD65D
-:1055C000E7407D53058C9BD5C1447DA36BDC3FEE4A
-:1055D000F7A8BBEF6787D0EFB13FCB1FCCE67C5D70
-:1055E00087A57F98C74AFEEA3EC6C1E4FA8CAF277A
-:1055F0004FA95C4FB523481E2EC17E657FC9EC9B29
-:105600004BB2B99CFB56B6C5C0D73DC76D36AFFB94
-:10561000BED93762BE8BB37B5FFF2F1FBC6FCB76CB
-:10562000A6F337F6FB7EBB55437F06F7D3589CEDB8
-:10563000D49F5BF81BFDE86F043E700EE175FC9390
-:10564000C85F9C1C8F119AAFF4334A7F62BAE02B7B
-:10565000665522A8C7D32B3CD63AEAAF837D0DFA14
-:10566000FB81C0935CD728B79E1C817229CB8AFB33
-:1056700075F427B9B3E2FD633DA32C2E9F98D8C7DC
-:10568000DD2AE6DCBAC697812EE7F011EE4769FD08
-:10569000365F97D3FAB3C81A94137EA679A07D0A11
-:1056A000937FFC067FF2D44F15E687F91FFE54A5C1
-:1056B0005219C2A26ED8EF4DF32951DC07DA2DCE74
-:1056C00008EAD2CA7E4E86F14D7BBA2582F111FBE3
-:1056D000DB0AC1692F4B8BA0F09BD4AF2203E39868
-:1056E000670EEF770513D0FFC660ADC1FF65C663D7
-:1056F00077BB9B9FF7201E1FBE409CF65076779C81
-:10570000767F36DA4373BBD6DAB5789C56C61F0B64
-:10571000BCBB3756A2CA5AC2EDD37E2CD2ACB7ABB3
-:105720007471D0DF22BF3F1C8F83B65FA28F833698
-:10573000F6DB8BF6EE43DD71D06014C7F567EF2C16
-:1057400045FE7DD8B7FBC7DF457C3A44BC62D471C7
-:1057500097867EFAF2FDB908CF6F4DF397A5F4E373
-:1057600099F7C1C7B38DF18533BEEB32A2C45BD9C3
-:1057700009D7B7F42FCAFD30FA0F3D09D7A111DFC1
-:1057800072FC1A85EF6B994DE1F24FE851902F9D15
-:105790002407228CF4A6DFA16C437D73C637CA4769
-:1057A00071CF24F246CE07F0383451FC17C64B189F
-:1057B000674DC9E17AAAC6C6FDA6CAF2F2269C5771
-:1057C0008DDBA53874FEFEB342AF9BE3426AC66729
-:1057D000E541E1F74E04BF39BE7356E80BC497DECE
-:1057E0004F7E217C1DB3B552FCF0D83C9535433F2C
-:1057F000678263F35982EF65F91AF2CD50C6DECCA9
-:10580000E1E375D33349BCE8D8EA068A339BE36900
-:10581000DDEF6B53AA517F57231E75E35E29F077A6
-:105820009D289923A879E0BDBDEE010FC3F8D7D01C
-:105830004FCAC36EF48B75FD1CE317EC5B6EF25719
-:1058400054D79E2D6FBE5C87CF0AC6E3B3FB1FF211
-:1058500068F0BC7AE8DADCB02B391ED1B78578BAAB
-:10586000071F8C237F4C79CE45F863D8081E17623A
-:10587000FB53287E9AF207D58776038ECBF500F787
-:1058800027AF147113731CAF3AB4CC205FD2620AF5
-:105890008BE8E21769D69DE49F4D8B59E9B979BD34
-:1058A000E5E774C73969BD49FC27A3A7C4BFF979E7
-:1058B000590EE7CB63B50B35F41BDA5313DBC11B71
-:1058C000453B5937E723248BBBCF17743D131C97F7
-:1058D0008FFEAA6A7B78685FD6B9C4CF85F21CE6D2
-:1058E000E4707DEEBEE92511C753D7626F52AFA6B3
-:1058F000597B8FC7FA4DF1D8B4D13DE279FF23F13E
-:10590000D8969C7F2C1E7BADE0DB0BE5A1DC6837D5
-:10591000DA3DDD7815743C134C6161908FB756AA5F
-:10592000148702FE20FD78EC0185ECCD68AD83F490
-:10593000727D6D0AF967EB4B557A5F7FAF4AFA3398
-:105940000AF26109C887DF0A3961F6CF5632C510FD
-:105950003F9F3E3AC550BF69DE7DBF5D8DFEE50AC3
-:105960009B86E31DD1B8BF39EC57C97E853E7C517B
-:10597000F44FDF7FB50FF599E487237E95D65BF86A
-:10598000A8EAC361DB853FFAC886D208E6A93025BC
-:105990001EA7D70663FFF514077ED5BB85E29C29B9
-:1059A0009F3F1808D0FE31A89592DEE4F1D314B1E0
-:1059B0004E27F6ABB801F5F89B9B6C0CFD466FAE1D
-:1059C0003A43EBB9637513E54548FFB2F40F9BFD0D
-:1059D000CC66FF720FBFB2C99F9C2C9FE15749F85C
-:1059E00043CAAB64FC0162EB484EEEC5CB31293FA4
-:1059F0005E13704EECB7E5DE66C043DA5C95F020CE
-:105A0000F9F2D5CFEE7A04E5700AF0C71A86F8FCF1
-:105A1000F7E7711FC2162A09FDC81952AE63FE448A
-:105A2000499C2E37051776D771F9CF6E586EC8FB93
-:105A300030EB95E472AD77B9B53987DB5D66BD6350
-:105A40005E0F5FB4DEA9AE7DA004BFAFAE9D17C1EF
-:105A500072633F6703CA5FB37C30EB896A939C8DA6
-:105A6000EB07954546E9E7AD51BBB89EB0D3FB7354
-:105A7000293CDF21E4E4E5EDA9E9DBB03C97C2F382
-:105A80001DC26814A29DFA465AA485F6E54D63919D
-:105A90004F42CCD7114638BDA9E44768EDCFDBA90A
-:105AA000D7A472BBFC4025C1AB4AC37C6D25AD9B1E
-:105AB0001601CBD6EC60512ECCA7C56F49C1F8C2F8
-:105AC00044B7F510BA5E5A27589883C5F115CF0B25
-:105AD000611E05BEA7770AEE3F4B9DF6C164A70E77
-:105AE000CB457EF936EC0F81EF0F1F5677B701A833
-:105AF000877DA33212D9E9B234C7918F7FE39581B4
-:105B0000B86EDF61C1B25C8A1FD7DF8BF1E1C63DA1
-:105B10002AC5976EBEEDD54BC8EE36C529D574673C
-:105B200009FA535A94541FCA1389C77D6E3BC99909
-:105B300096E369B49F68794B117537C94389F703B8
-:105B4000D0AE6034E62AB9496E4AFC035C13701E7D
-:105B5000920E952C7A787CF13F05D734C47772B8D1
-:105B6000FA7B487E209FA9713854B795E0EB64A971
-:105B70003E9C5F48F887D8EB69B4FF93746E14FCC1
-:105B800028E9BC4CD0B973EFD9EF5C05ED5BFD594A
-:105B90001475500730C243E7EB6EE21389070937EB
-:105BA000F0451DCE53C2BD7FEFA86341FC3E3D953D
-:105BB000E2F8D2EE9679073DE494D8BF2FCD55BADE
-:105BC000ED5EF45FFC3E7BC2D2DCDC04ED85BD0BF8
-:105BD000F86EC2712B3DEC93088BEFF392E537AC76
-:105BE00012FD77F773E1FC8655B989F21BFE717AD5
-:105BF000DE7531F46CB4BA362819717CCB7D332D47
-:105C000069ADE7FA37AF3F490F65EFBEBF621CDFF2
-:105C10002C176E579B9802E3ACBF9CAF4BB68A69BA
-:105C2000941F645A2F17923740FF6D085732B9D32B
-:105C300057FA3FD193FE4FF446FFEF65077E86EF9C
-:105C400071A8C232DA17EEC23ACA13FB201A8FF8D3
-:105C5000B62B93513E9BCC8F91F3917932514C5A94
-:105C6000CDD5E5E194F814D4137DE08FA87E7E5F56
-:105C7000007FFCA6773916A575BA54D07FA9CCCB86
-:105C8000D8DD7B5E461FE8F75A22FADDAEFABA820B
-:105C9000C57DA7DF3B3DE9F74EEFF40B9EC2F72D24
-:105CA00076F609D9EF15B55EE4970A8F7F16E6A15F
-:105CB0003CDB2CE44E31D00FDE3F9FA3925CFB1EF9
-:105CC000BB94E4F6972C169A6F27C8EB6D4A9FE0B9
-:105CD0008CE5D2FE2F6CCD827E6FBF8E517CCFAB18
-:105CE000352B58CFD7404F6B7D8757CDE37A5C0774
-:105CF000AF9A9740AFEBE4953D8FF3E74AE44FA7A7
-:105D0000E6B1F626AFB2F28C76421FF8312BEF8B5C
-:105D1000E5C70179BDCAAB8BE6B36138BF6472A237
-:105D2000AF79A0B04E596156CFF119F3515CAD3245
-:105D3000DDC9F5F62E45E8F1D220D5DD4E12160765
-:105D4000849E3FBD9BBF572724B62B7D7959C4CF76
-:105D50004B772E0F580DF924617AFE5DFF69CF1045
-:105D600015F3B45D044FF634EE8794F0CB3CED743C
-:105D7000014FF6000E77F6719ED72EF1952EF61B89
-:105D8000191556C33E42E2ED7635A0A01F3D33877C
-:105D9000619A04EC134628E8E7CAF41BDB4B7CE766
-:105DA000B24D7F5631E5ABCAF83E17F73323F1BD4C
-:105DB000EE7982FD2BD0A704F3C766E709FF839D28
-:105DC00079511F31B5A6573ED2ED4FEAF2FAE0679E
-:105DD00069C8B3887D8351EFED4C6109FD0C7F11DB
-:105DE000EB01EC15F237AB42CF4DEA28A67C9715B4
-:105DF0006E8DFC0FAAEA734E2DEEF97DA61F96B7A5
-:105E00000E1FD955A94CD3C19D1BC832D4F3ABFB8F
-:105E100019DA17040719DE17365C6A783FA0A9CC97
-:105E2000502F0A5D69685F0C88D5D7076FF8AAA163
-:105E3000FDD0D6AF19EAC3B67CDDD07E78A4CEF013
-:105E4000FEB21D8B0CEF2FDFB9C250BF62CF370DF2
-:105E5000ED5B841FD98C97FFCCE372BBC5CAE550BC
-:105E6000B3AB8CFC9B2D2EA37FF33E81FFCA8CF13C
-:105E700025E8576F79BBB404F17D20FD4AF2B327C2
-:105E8000E30BB35C4B264FCDCF9F14E37DFC9CDD31
-:105E9000827CBD6C3FACDB2BA0EE7A6D3DC2B47151
-:105EA000048FCFDA18CF1792F11AF97D77BCC6EAC2
-:105EB000E3FEDA7417BB3B015FDC97A725F4A74A22
-:105EC0003E4A8637C98F17C2DBD302BFFF2CDE5E86
-:105ED0005778BEAB5E1FEC4A30AF337916115F0EB8
-:105EE0001E15FA66742A59F21E5A8F17AB0FE43C3E
-:105EF000401FBC9997DB334FF7E3EA97E63FA86171
-:105F0000FBF9BCBDC557827449E64F3F23F0A6F3A9
-:105F1000A737707F7AAA016F6FC9F56EF2EBB5A44F
-:105F20007F4AFEF416BBAFA42FFEF4B7F218E1FFD0
-:105F300069A473AE8EBEC21F9F6C1F1562EC109ECB
-:105F400087602EABA6DF3725DB1F4B790EFBE312F4
-:105F50008CD3B6E2FE4B49A80753F2CB69FF4CFA4B
-:105F6000A015F4A083FC04EC9006F5DB275AD8DDDD
-:105F70005A1C6E69CF3B98CF695789AE19F83DFB23
-:105F8000365B99A27E21FBCC7EF917A1E7D985E388
-:105F90007D64A74D03F8D7E8F6D7123FE6F89EC414
-:105FA000CF341F8FDFAD03FD88F1BD7DB95C4FAFEE
-:105FB00083FD37E2D1931DF00E447B1E9E6F43722A
-:105FC000E48EA1F523F16A8EF3F555EE8CCFEF61E7
-:105FD000B78ECFEFC56E95F0AF10FBE7C9EA889D8D
-:105FE000E8C73C1DB313DE54C6F32E1B0FDA5884EA
-:105FF000E8C8F397251D6DB1F5EDA89F6DCC9CAF5A
-:10600000AC6520FCB683FC9C18CBE1EFC3CCD98CEB
-:10601000764F4685517F65FA8DFA2BBB2ACBA4CFEC
-:106020008CFA2BBFDAA8BF0A8246FD55D85066D23B
-:106030006746FD55149A60D26746FD3578C3D74C44
-:10604000FACCA8BF866D31EAAFE111A3FEBA6CC7E6
-:106050000A933E33EAAF2BF6AC31BC2F8DDE6D7860
-:106060003FEAE0F70CF5F2F61F18DA2F38F414E5E2
-:10607000F58C3DB6CDD06E5CC74F0CED00E1ED98D0
-:10608000FF3D9748C2D855A79E34BC9F2BECB5ABBB
-:10609000BB9E36F4C35A791E7718FE22BDDE6341DB
-:1060A0003B1A2956D6F54221D0755944F145A1D95C
-:1060B000C23DBBC6E03C3E7CE39A83D8CF822DC66E
-:1060C000FCEF851163BD910DCA40B9D0087C110168
-:1060D0003E598C79E13AF9B698358973817DE3B3FD
-:1060E0000587AE63944F1AF6B763DEBB8453F29B09
-:1060F0005FF09B9C9F847731D87F512D0EA71FFEA8
-:10610000F2FD66871DF976FE1E85FD40E9094FC345
-:10611000DECDEB0B13C06586C36C87FE47BED13F57
-:106120003E597551BCE0F451D5C7FD8DC675B8E236
-:10613000108F13AC7842217F9D191FD23E4D8617D8
-:1061400035CCF70D8D392C12D1AD3F4DE0C3E13583
-:10615000AEBFD3F80F9CCF0FD508E61BA568A96684
-:106160007E1B13653DF19C56625CA7663CBB7DFDC2
-:1061700012F295067F711EF3C5F943335F99F1BEA4
-:106180006CCF663BCAC38BC5FB6BF989E312A0EDEC
-:1061900046DB13E4D749BCC2BEBD03F548B2FDECF3
-:1061A00047F917BD9FFD28FF8BDDCF9EEB4DCF75C7
-:1061B000A2BF0DEC4BB39FCDAC8795BDFBFFAAA44E
-:1061C000935FBBC381EB2EE873F23C18939E2C299E
-:1061D00031E8C9EE7DEFDB0AED7B7F91E1B77B61B2
-:1061E0003EBFC9F03BBC00E72D197EA757076F0BD8
-:1061F000E085CEFD809EDA95C04E9CE495719700B7
-:10620000F94DD655F2F6E67623BCFC9CD1BEDC31C6
-:106210005EB23FDF2AF592FDE91ED3ABFDF95D11B9
-:1062200027BA07E39043E3F941F78A780D2C3B3F07
-:10623000D26D9D2DE0D5E70F67783369BCF4714FBF
-:10624000B6631E758BC7E251342C793EF75A97B569
-:106250006ABBF82EC7F01D3FCFA422BE01AF5697F0
-:10626000F5533DDF4EF232EA37199C93BC7C3F690F
-:1062700063C17BD11E92F161DBDB954E94772DCC0F
-:10628000EFE172D2E7D1E77FD8188F074F10F161A5
-:10629000F95CF5FC637958ED19C189DE047958770A
-:1062A00064F827E1F39035EC40BB33E44CBC2FFE9F
-:1062B000AA97AF139B80170C50E22B9A877AF1F1C3
-:1062C0001FB037AFC7716F57C39427D9E21E53125F
-:1062D00074F5DDCF15F4F6B08F82DE5EEC23B04F9F
-:1062E00067E179327F463F2B6D3BACBE12C4F706A7
-:1062F000FCF738F2D32EC0EF7BE4BD8A73B8B08FC1
-:10630000EB358F57F6B33FCBBFCCCBF30D9BB03FF4
-:10631000FF30CF5A55D74FFA05FA917E8E3EF8AD31
-:10632000BEED4DEC1F3D85FABDAF78DCE8EDE12F09
-:10633000DCE8EDC55F78EEF8B00C8C674B7F97B961
-:106340009D3C1729EB1B328DE3AF2FE3F5FBC5B85E
-:10635000AF887B3A7688BAD3745ED43995D13D1D27
-:10636000F29CA9EC6787D74DED9BB327ECC0F9AE43
-:106370002F56681FBA3E5331EC47EBBD953B900E4C
-:10638000DB44FF3B907F73296F94FC39E63CCC25BE
-:10639000A2FD12EF042AF15C2BCA31BBAA26C4E38A
-:1063A000135E3EFF5999BC5FE977AB7F4011FB2735
-:1063B000E3BD08B0CE5F4E03F97362938DCEBDCEC0
-:1063C000535DEB911F93DD73503B2240F94FFFEC7F
-:1063D000F931C4675A564FBDFABC37F1BD05C9E45F
-:1063E00088CE9F76D87B11794B1DA99C4FBBDC2EA4
-:1063F000F29B9BDBBD2BE8B349F83550AEA37EC9B9
-:10640000525953223DF3AEC0FB3F7EAE99DFE79178
-:10641000ED72D177E673CD1DF68E75F938DFAB15C9
-:106420001F9E5FC8AFF1ECCBCFC1738C1AF9F8D6C1
-:1064300017B3F40A7C5F6AA1F799B33CEB6D98F748
-:10644000AD31CCDC673618C70DE3A4171473B8C29E
-:10645000D7EDCB8776195A171B3482CE7B4FF1E2EA
-:10646000BAADE6F9F33DF02DE49B6B1DEC2F101F48
-:106470005AE23CF4F342BF80BCF93BF26BA5C6760E
-:10648000F373593C0F16D992F2157D3C5F3B0DF327
-:106490009D06737983EF95EC89D682DCF8FA520574
-:1064A000BECDE7B9D30BF8387D3DCF3DA326F17CB7
-:1064B000871770B88E67047270DC19E39BB93FECE4
-:1064C000B3F3E7D531681CF37502DF33F457A4E466
-:1064D00070399CA26924979947A13C57A7E66BC0E5
-:1064E0007A8AEB4A8F8A76B283C725D95C0BC3FBC5
-:1064F00055268A7EFCD54C79B784FB65B99CB5B22C
-:106500007725FFAB02396350CFF23F603F6D4A03FE
-:106510007826BA0E537C32654853259E6B787E0EE2
-:10652000EFE37B49CE0DC8F3EEDDE7FAD98F0E1B02
-:10653000CEF5AF7BE4F0C1AB75E7FAC38F1CF68FE5
-:10654000F8C7F3DBA73CF4C8E1B5AEFFB973FD5261
-:106550009E1D5383C7EE04FC5F0F4C152AC3D2CA9D
-:106560006A88DE5EC2DB2C81E7F0A78067671CCFFC
-:10657000D7EF3D44F83B668379C3F8B6091CD5B61E
-:106580006F66445A482E4668DC1B9CAD9371DFD978
-:1065900069EF1A89E3763EF3CA8030C893E3DF3AA5
-:1065A000E366C07F6F5ABBDCF8FCD4AA97DC780F97
-:1065B000C2F1552AD96B742E5A978FD420F8EA5716
-:1065C000058139C85773567F3E466F8FB3502EE909
-:1065D000DF85119552AFA4FC5BBC234D301DAF2F5E
-:1065E000DD996DA84BBDBCD491F89CFAA3059CEE37
-:1065F0000B1F6FB3176A387E70398E7F4AE4379C61
-:10660000DAEDA67D989C4FDDE3A576DC77BEB9D7A1
-:10661000C1A2E4076EB731F267F9A72A79788F1122
-:10662000FF639EE70BCFA6517FF31E50C9EF540BBB
-:10663000638500AFC1BD0BF93ED804C7BCE3DA14D3
-:106640009457F3362A2CACF1F6ABF0FE8CD05D14E7
-:106650008731C369D62F0B92DC9FB360EF3DF4FD09
-:106660005CE6BF07EDD979ADE6F7D7BC874CBEE055
-:1066700002F19CFB0B84DE19C3C69E1F4CF1A38C58
-:10668000CBB50BEB9D53ABF922FD60B593CA8F568A
-:106690007BA89C53C0F978F19E7D2F14D2326F1FD6
-:1066A000837AE9E583F5695FD7E276F798B65BF719
-:1066B0003F4C4D8DF9993502EF63455EE60271EE70
-:1066C000A1FC58EF799935888F913DE72BEDEC1AB5
-:1066D00093DF57DADD667C9C3E38310DF9E3970590
-:1066E000629F3B16F0A2FEF37849F6DD5295DF9BE0
-:1066F000667E2ED7D11CC1D773B7CF5CDF0FC66FB4
-:1067000079E6BD811DC4A7DC7F512EF055EE5ADF1E
-:106710008EF0973393DF30CC8E321D3F033FA9A814
-:1067200077CC7C2BF9891DE5DF3B855FA39B5FF769
-:10673000DE4BF8957C85271D2C68C3B1A8D7527114
-:10674000E17BAEE6B51AEB1FDB3A06A23C5960F2DC
-:10675000377CAC24DEBF1D2A1844F898ABF9A7603B
-:10676000FEC53C1658CFFDF3FC7E9C53D6D617EEE3
-:10677000C475BE9DAFB3A5BF7CE21728BF16FDEC64
-:106780008174945FEF5B5BF370BC258FAD4B4779F1
-:106790007FCA1A4EC7EFDF8FA809CF115FD24FEE25
-:1067A0009FFD2ECC535B46AC06FFCD0D4F47F9F94C
-:1067B00097C76C1EF4C336EE70441D808F65BB39DD
-:1067C0001EA1FE16AFDF45F86ADC635C978BFEFD09
-:1067D000813C8DFC01E14281BF4214E1CBB6DB2854
-:1067E000AF75D951D587C334B22E82CFFC3DCE23AD
-:1067F00006746BDCA9D6DA337ABE074BC88EEBADD4
-:106800007137A767E36E4EAF46931DDA20E4B69961
-:10681000FFF3FA097920F81EF0437E35996FCB22F9
-:106820005C7EB7FCF8C1916FC1FC3EDAFE9B7465DB
-:10683000449CFF196685023D4EEFAC9F63EFE5BEB9
-:106840009E8FC53AE9D60B420F697B6062F950DD35
-:10685000CBCB25B668FA558097256D365F181E2F6D
-:106860007942F5BBD08E7AD541F74F2C7EE2F9976D
-:10687000AF84F92DDE65CB99CAC170A1FC96F46A8C
-:10688000443E2F8BD367D153CFDB314F139FAFCA19
-:106890008AD369F1AE7D76CCFB34E373E2CE7D76AC
-:1068A000BEDE4CF4DAF9D614D4DB2D3F3E67477ECA
-:1068B00078FF5985E517F7FCBEA1EDF9749433888C
-:1068C00027D42F926EDD74EC41BFE8F4A747533B09
-:1068D0000FC6792E44C7BFE019845CE2F79F3E0DD6
-:1068E000F36878CDE1433C34FCF4D67484E73D6B27
-:1068F00013E7FB47D6E5A1DE6EB085F33C54F2E723
-:106900000D5BBF41FCB8E0C56FF0FB9C98BF00D7A2
-:1069100033C05B8070CEFBE1F504E77C16247E6C0F
-:106920007884DF6F78D6CAAA12ED07DAC4BA796F15
-:106930009B83360FEFD919BF2FE4F7AAB80F6B3935
-:10694000D92BDF10308384A6FA5927A7D7CA7EF245
-:106950009C3D976F8DA255E3F6BB48BE7D30C09F2E
-:106960008FEB1FF060F4CFBE38395FC845BAD785CA
-:10697000BE03FE9B88CFB17DBBCD9F32D2F09DC8B8
-:10698000BFE5E3AF14E3C3BC53D1CFF75E9E719F65
-:106990002BCBF66EB9C0DA999ECF92C981ED1B89D7
-:1069A000BF3E39CAE5CCB2C8CC2A7ADF6E8BE6E3AB
-:1069B000FBC8BE590AC909B04312ADF3ED36B1CEDA
-:1069C0008DEF619E56458FDF67F9F93DC92FF3EFD3
-:1069D00087F6BA751DE71F7BFC79717CBDCAFC8DFB
-:1069E00005267B4E966639F1B0494EC8EFD90F7334
-:1069F000139E8F88CB8730E16F892DF26F3FC07572
-:106A0000FDAA83CE452E79C246F7FB7CF8F8FE97A7
-:106A1000BF0EFCFFE14EB99E8DF2D7BC9E1B9EBC03
-:106A20009E255ACF1FE60458C2F50CCF13AEE71CC3
-:106A30007EDEE0FF96FC5D9044FEBED0AFA7DD7128
-:106A400015543FF8C9E222DA9F99F02BF16A96A714
-:106A500037A3B190DB539EC29FA34C874F8947C990
-:106A6000A78BFE63298DD3CDCF925F253F77F3AB04
-:106A7000196E233ECDEF37E2DEA93C4E7FDB1AD8FC
-:106A80009763BCF61995F2F33AB5AEF42C18779DDE
-:106A9000C8EFE9F4887A26AF77E5DAD7A33C91CF3F
-:106AA000BB5278BE4367A02B3D53B71F786BAF9A9C
-:106AB0008EE7013A2289F332286303FD2049F2363A
-:106AC000E4B9DFCE54EEEFEB4CE57EBEC9AA6B60B5
-:106AD00008F777AD3CBE34B7F9C674DCDF77EE1D3E
-:106AE0003CA31AF70387549E7314F65B0B00BFF5A3
-:106AF0001C74768A85BF3F1EEDF7BD8BA7623F737E
-:106B00003719F132DFB5DD8EFD9C65ABA89C7FBFE8
-:106B10002DCE27F0DF22CCD7423EFFA1E9F9DE6B74
-:106B200089AF1699F82A887C95E03C4966A158AF50
-:106B3000A5AC94EFB7457C4CC8BDC9EA8819D59877
-:106B40004F79909FF738BD5765EB11DEC745BC2CD8
-:106B50009C4BFCBA0CF85BEF37FD08F96E58723DA0
-:106B6000FFD1CF8F8FB9139A2CF9C51F473E0CE583
-:106B700047BF78F592FFC2FA2F5F19F847D6B3FDE9
-:106B8000C467FF7A0BE5753EEBA07B4D3B9FFDD5BF
-:106B9000C03BB1FEB483EE17ED5CC3F7D9E167DD0E
-:106BA000A4FF3B07707BB1E59973233B487FF17BE2
-:106BB00083C717F27B2A4EEFFDDB1B0AE6F3ED05D8
-:106BC000A8503E8AFD5BE3D329B44FEF7CE69C617D
-:106BD0007FFACFC2B34C9CBBEA74B36A3C27DD9901
-:106BE000C9CFA936FED7B81FE1B9CBA5BBF7D9EB02
-:106BF000E1FDC4FFF3F94894439D4F72BB03ECE100
-:106C0000ADCCC7D8570A37DF6B03FA7D8C3622AC80
-:106C1000998EC217A7E179929E78E178E8043C202A
-:106C20005C809706949FC9F0714B213F07F3AF87B3
-:106C30008F3FDF82E32FD93B96EE198EE345F1F3C8
-:106C4000E76ECAF700F8F9F367CF8D443BEA42F0EC
-:106C5000AEFA5F06EF0FFEC5F97D5021D74766BE3D
-:106C6000EFC9D7BFBC8DEA3F75FB68BE7D5CEF4FB7
-:106C7000FF2FA3F7B1FF6FE97D48D0DBEDC1B84C22
-:106C8000E7339F0F641701F7B97F593AF70E77B7CB
-:106C9000DD63F13947C3FC5E6391EB2B95E4F9A307
-:106CA00043FA2B721F44FB0C790FF7F49CF96447ED
-:106CB0004CF7737F4C0B2B3B88E7ECC27E95E217B9
-:106CC00094BC0378689F551AA13C316B78E8F73182
-:106CD0006FEC86A53E7E5F9971FF353DAFAA0AED48
-:106CE000B923CD302F6877C46DF1B4000833FC2A86
-:106CF000D97F5092DDF78709D7521ECA8C0AE33E2E
-:106D0000E4EBA6FDC48DD5C6F737B06DB998EF7723
-:106D100043838DF293AE37B5B7F4F7105E6E644DD2
-:106D2000EBB83FE7E2F034AB3FDF8FF5C443EF78D9
-:106D3000EB8127B1DFA4DC21AD27DE1C41BEFF744F
-:106D4000C00B616F89BCBC157DC22713FB5287182D
-:106D50005AE2D7E1E7F78EEAFA25BC48BC5F2CBEC1
-:106D6000259DCC7897F8957833D361189EF7CC8D14
-:106D7000E33F5E1AEFD566C26E9CDE6D37BA088FB0
-:106D8000BFDBCECF4BFCAEA27E5329D61FE7F7C1A7
-:106D90009F1D3F8A3901DE2336B687E2427EBFE679
-:106DA0001913CF9F512A7E45F109CC5FD4EF57319B
-:106DB0007F510F17E62FEAEB98BFA86F8FF98BFA78
-:106DC000F798BFA87F8FF98BFA3AE62FEADB63FECC
-:106DD000A2BE8EF98BFAF698BFA8AF63FEA2BE3DA5
-:106DE000E62FEADF63FEA2FE3DE62FEAEB98BFA89E
-:106DF0006F8FF98BFAF798BFA87F8FF98BFA3AE675
-:106E00002FEADB63DEA2FE3DE62DEADF639EA2BE33
-:106E10008EF989FAF65F8E3D67A857B2DF18DA4F10
-:106E200074BE64A84FF6FCD1D0FE2BDE1386F7D7D4
-:106E3000681F1ADE4BFA5F5B72C6F01C631FE131FC
-:106E4000B88FE17FA6F9FE66E8C7CA021427B5B37A
-:106E5000262A9DE8EF853295EDA4D205CB1CCBF711
-:106E600087057FDA1FF9756B783D32D79171E70698
-:106E7000A2FCFFDDF8EBB85F42C41766E03F356067
-:106E8000E2B4CFFAE33E57C64FD3632A8B8E023E5D
-:106E90008C29547A62692C9A0D7C184BA1322B965E
-:106EA0004DCFB3639954E6C40AE9796EAC80CABC8D
-:106EB000D8602AF363C5547A63975159101B4E6505
-:106EC000BFD828FAAE30564A65FFD855F47C406CDE
-:106ED0001C95036313E97951AC924A2D762D95C523
-:106EE000B16BA81C14BB8EDA0D8ECDA472486C3623
-:106EF0003D1F1ABB89CA4B62F5540E8BD5525912ED
-:106F00005B4CE5F0D8422A2F8DDD4ADF5D165B4EE3
-:106F1000E588D89DF4FCF2D81D548E8CB550794587
-:106F2000AC994A5FEC1E6A571ADB486559EC3E7A09
-:106F30003E2AB699CAD1B187E97979EC212AC7C42A
-:106F40007E44E5D8581B9515B1FFA0725CECC75480
-:106F50005E197B8ABEBB2AB68BCAF1B1FFA2E75786
-:106F6000C7FE93CA2FC5F6D3F32FC7F651E98FFD9D
-:106F7000869E57C60E513921F6123D9F187B91CA45
-:106F800049B13FD2F3C9B157A99C123B41E55762C1
-:106F90006F515915FB90CA6B62EF53F9D5D819FAA6
-:106FA000EEDAD89FA99C1AFB1B3D9F16FB2B95DDA3
-:106FB000FBFFF1497F57C0721EF7CFAEAC3EDD57E5
-:106FC000B6392D9DE4E2F4555C2E3E98F6F101921F
-:106FD00093E31C9A8384DF1643BC8B7E4402F67DC8
-:106FE000FBC6BDD71FED9DF595275EBF15F5D97280
-:106FF0000713FACC24773F73097F27C37CC49B0512
-:107000005FFFAE627F2EDA51EBCB3A96A0DFE4DE73
-:10701000E28E1A2C0B07703D9925CA8201C2CF5A05
-:10702000C2F56FCDF2A1FCF70572FA065FB5D0DBB1
-:10703000B2BD5224EAAEAE81745EAF8FFDF4B5DD11
-:1070400085F2B03EEF1FBC62406E6FE707FBDC4F7E
-:10705000C517D44FE580047961E67EDE14746F1B9A
-:1070600010988CED99D53F12DF4F5853A0E2EFAA4C
-:10707000D46E523CC82FF56B4BA7205DCB989FFC7C
-:10708000923727C9275B2CE85AD76463E89FACD3B3
-:1070900018F987EB76F33C64F4A74E037E6910FC85
-:1070A000B274E39FC9EFD4D0B480E73D45B87F4ABE
-:1070B000FE8ECDE2D6B617D0AD77961DA6FCF8C5EC
-:1070C0003B8CFEAB46E19F5ABAD3F4BCE92B09FDD9
-:1070D0009E66BFD4DC01C2DFE9E3794F4CED4F700F
-:1070E0009F05B8319F24789BDB897A03F0417118A2
-:1070F0008907E9F794F8603DCF5D50FEEAE98343E4
-:10710000294FEEB4A6E563BB603AFF3D2BC51A1CC0
-:107110008BCF018F94CFD2D59C46F9506F811ED072
-:1071200030F1CA131C8BF7C775BC368089FB2B8DD9
-:10713000F108E726CA13AF8539605E4AED63D9745A
-:107140006E13FA1BB907FD9A8FD9281F29CC5678E0
-:107150005945CF7845609D8DF8A26E4F26CF4F0BD5
-:10716000FB8FE2B9024997B7D60E9E82794D751B07
-:107170008A4BC95DB7C746F6A18CCB4A7AF5CCDFFE
-:10718000E6F9028D2CB21E5397805E2713D2AB75A1
-:107190001FD115E8763209DD4EF646B7874D7443A8
-:1071A0003FF58DF8725536ADE79A35D1A14D3AFECF
-:1071B00034FBFFD9DC2BE9DE1399FF5CD54FFECE03
-:1071C000982F0FE97B665339D1CD4CAFAABFD713A7
-:1071D0005DD86B6EBA77F8E6C16CCED7E0F91CE1EA
-:1071E000F7BCB9E51AB2BF770B39F7BBD598FBC925
-:1071F000D88BAB9DCC0FC6F74BAB3D54FFC36A2F6A
-:10720000D55F59AD51F9EAEA122A4FDA795E915CFD
-:107210005FC00894DFF7B458574F0F90FBB2955EEC
-:10722000F47357FDFDA5720B89BE37A64F1E40763D
-:10723000BB215FA47A96311FA4C326F2CD362A3E25
-:10724000BC4FA62E7095A13D2B1915AFA3FE11F9C9
-:107250002B751B32E91EBB9BA6661BDADFB0A1D0E3
-:1072600050FFFD008DE09E5935D8F0FCEB359719A5
-:10727000EAB5E2F723985641EB46C6BF407373BAAE
-:107280007878DB4F9AC6E6DF0EE37F72D846EFCD03
-:10729000F438690FD37E3EBCCDE1C3F8DE293CFF54
-:1072A00006F5537F5029BFE8948D853D20E24F2994
-:1072B0006C2D96CCCAD7D5D9637C5D55FD5D65B87C
-:1072C0008F673F71507CB07E8BC2C27837431760A6
-:1072D0001EC65DF96307C13D778BCA8274BE4ADB67
-:1072E0008971F2958F0DF3617CF4E6C1D10178DEEE
-:1072F000B0EBE7293E3CF755DFC1BF3F05FBF34C40
-:10730000CC8F52CA281EF1A769ADF32D986FA71E26
-:10731000CEC5F5FAA727F9EF9A2D5CFE87311EC07E
-:10732000F3A21776BE5C01E39C6C5569DC0F7738DD
-:10733000DA545AF7FE7CBCDF360E7784FC14D7F69D
-:107340000BFC0DE5F507F3232349FEACE2FEF19EAD
-:10735000F8017891DEC8AF3A7916D76F3CFE064245
-:10736000A800E544BDCD4771D9939B6C142F047DD3
-:1073700040F906275BB32D5C0E3D497C5767D5EC81
-:10738000FA71EB36A97EFEFB189A1DE7CB36AB41AE
-:107390003616EB3C3F22BC4109F2F88F91BEB72E66
-:1073A0001F4BE7A2CD795CB2FC18D6545017575A40
-:1073B000F40C8FFFB2D11D567D9EBBF4CFB060851B
-:1073C000E13EA325831EFCCE78284FFBF9D58B67C1
-:1073D000B7BB494E7E64796ECCED507E382DFCAE45
-:1073E00015E8F2A21A1C3610F3862C9BB62A145705
-:1073F00039F11D8CFB7FF084CD47CB50E48D2DFA05
-:10740000C9428A4F25B7179897C7AFA3798A176FD4
-:107410002766942F329BED14FE8508CF33C04900B8
-:107420007E3C4B785CEC44B9FB6E3C3F5C6F3A6F42
-:107430007C429CB3B872A062D0D7770CE472A0DE15
-:10744000C2D7277B96DF43297F2F4ECA71296FA5AC
-:10745000BCFEEA409EC722E52C633B49BECC17F731
-:10746000252FD9E1E0E78B34E6413C2EE4646277D6
-:107470000DE4EB7A91FD89EF235B2F60EDA4F73EDD
-:10748000B045E6B717E3F76D6BB3E87B9B2F82EB54
-:1074900038227F8FCE4A726401E3F35CDAAA44A2F9
-:1074A0003A7F87FC7D12867A4227777AE805933EF9
-:1074B0009827F4DF3C66CA376A35EAA9409A9BE010
-:1074C0005AD42AF2B0BBE7A5B2F318EF0A465E9889
-:1074D0004EF3567C9104F358C0BAA2782FF2D2C76B
-:1074E000F93926F3BCCC70F4759EF37D3327E1FDAA
-:1074F000CADDE39AE62DF1CDF060958E0E12EFF322
-:10750000C31C9FF3F72A44AF7784BD25CF079AE9C0
-:10751000BF8005A6A39C5B703FEC338BE3FC20F996
-:1075200060E1AE089D07FC90B5A6BB603D2CD9B2CA
-:10753000EB8671F0FD821FBE68477EAFC98A0EB52B
-:1075400064C2FE333CE9BB555727D0FB263DFF45BF
-:10755000E18909BF157D077899B75DA53C0A5D3BB8
-:10756000914710267C3584F9EF09361C557D2DF0A6
-:10757000B4017FE6A8ECE2E72BF1F63F3D6FB35D87
-:10758000F38B81BDDB356679D3C3AE31E9533CCF94
-:1075900081FAB32B97E7A77F62F56764919C36C9A0
-:1075A000E1DC32BA8F55CAE1F9420FCA71E6A1FE99
-:1075B00083FABB5B9E4A477FC63BF73F9547F91A64
-:1075C000A86F46C4F5CD6DF57CBCDB7E9942F952BF
-:1075D0007F9AD63E12EDC19A477E95AEBFEFF54F2A
-:1075E00005C1A30371BE423F2E55DB06E2EF1A4AE6
-:1075F000397BC17D5B3238DD1780D36D84B30EE1FA
-:10760000D49D53A91770BEBD81C377621387776E6F
-:107610000F38C31457B9ED470E5F98EC8E28E9F583
-:1076200053BB5486FBAC6EBBC364079C65AD5B115A
-:107630001F4B57BCF28615F862E125801FE0839A44
-:10764000CD0ED2FB0B7FCEE3A91F2895F914D03FB6
-:10765000104DBF039E2F027B01ED8DF83CBAED80EB
-:10766000CF108FDD76401FF1B74CF8B596EDFD15C4
-:10767000FD8E96E2E7F998CBE4BD367B4CF7DA68ED
-:107680002803F8397F27D2A9BFF93E2EEE9FFDCB04
-:10769000D03FDFB282F8BFEB12FD39B6C6D4A80DD9
-:1076A000F390BB762964272D5D59995EC9F07C1B48
-:1076B000F7AB151471FDA6F8FD945FE300BAA6C2FE
-:1076C00078FD8B34FE5CF3F07CF31F32BA4747CE73
-:1076D000D7FC1CFDED4ED4872E0BE94333FCD716A7
-:1076E00071BDB954B5907DBDC4CEEDEC4E717FC572
-:1076F00070318FE145FC9CC315C2AFD0897625C699
-:10770000BBAF76D0EF18313689FCEE56C6F9CF2ADA
-:10771000F1E6B17EDCBDBEC97EEEEA8F78BA85B5F2
-:10772000D3EF224EAF98A9E1798637F29C744F14BB
-:10773000FC09603FB3453F476CFCFCC21B3806C0E8
-:10774000355BF8A7DFC0EB5161FC370AEC64D786E4
-:107750009F7190DD70572AF71FB29C0C2BAE87AF3C
-:107760000B3975F378871FE5FAECF17705B084FEE5
-:10777000C20CF055E3EC5A570AE3345BB8BE6FCE47
-:1077800062DC2FB0B6A31CF1770598C998BF0FD063
-:10779000EF3E9FDD1B1F19CF4F2C413FC3958C330C
-:1077A0005805E1D7505F62E7EF6B1FDD31E3FEF173
-:1077B000B04FC0AC29D4338823E48BDA0CDAFFCE87
-:1077C000C0F30559585A89DFBE6665610B2F37B87B
-:1077D000E85E25AFE17761AFAF60D10C802F7AC84A
-:1077E00078BEE3C6A8253A0CE345D6E83EC49FC55B
-:1077F000A9D93C304EA04A2943BC2F59D3B7F9AE82
-:107800007CF4A919F7F7873ADEE785F3BC43A17C3E
-:10781000A1D9B0E8914F6FB1B2036A19A71FF26105
-:10782000639616A676CB399FCB7325922EA5D0BD35
-:107830001EBFB3C5FCA09F0DE9F8BD3DB15F252C6F
-:10784000F852DA6B8BC5BA5D2CF9EE71E37ADD265E
-:10785000D70DDA8780B7D9A24CC6F78F8A75F16841
-:1078600011DF67DE5324F7997D1B6FA9834509EE6D
-:10787000671C444739EE0C513E523488FA93F3901A
-:10788000FC3B9F35513ECF7CE1A7B18024A1FCE0B9
-:10789000D61F71BF9029EF080C25CA6F5BB4DDFCC1
-:1078A0005CE7E7510D7289FCA68ABD6B2ECE4FF9BD
-:1078B000528A0FF97DB67D27F907CCED6CF8FBA94C
-:1078C0001877DB00769522E26550776C52E8772FC7
-:1078D00066F7EFBA1CF53948EB29742E54D8DBF360
-:1078E000057D1DE27EABF9685F615C0DED2BC4D7B1
-:1078F000166E575A853D5CB7C9686FCC5EABB33B1B
-:107900007961B81FC061CA53B709BBE34D7BD7E5A6
-:1079100028F7CDF705BC69E17084F318BF573387AA
-:10792000BFB70AFB52F2D5CF8A6C86789B3C775A58
-:1079300083F28ADFDB60CAD372D1FD31350ABFBF63
-:1079400053FA215F17E569B043E9BE9CE369140768
-:1079500037FB273B2BDD618BCE4F7973C66DD3117F
-:107960003F35E9762B96AF77DF2BD641E31FF70C37
-:1079700022FB677DE5A82D989FF4DEA36766380794
-:107980005034459C9F8AFD0EF3E9677D06F050FD5B
-:10799000AF33FCB08FEA7CBEEB162788EECF8B3E70
-:1079A0009D61053DDFF940D756AC67686A80EAF70C
-:1079B000760DC43B9733220E5E6F96FD3902D85F79
-:1079C000E743BCFED1A38E4018ED5F716EA9E64A75
-:1079D00085E4AF0BD75779DCCF5463798E9713F8D2
-:1079E000EFA25CA89D570BB88ACAF13ED493F4FB72
-:1079F0000B8307F95D45807FCFC0E0392C17CD544C
-:107A0000C2763CEF7F347289D06B097F27C425D6BC
-:107A10006B617180BE977E74E88769E53DFBF96F05
-:107A20008E8B3EA000800000000000001F8B08002D
-:107A300000000000000BE57D0978545596F07DF5B7
-:107A40006A4B52498A244042162A090901031490BC
-:107A50004080A04512202C810A28A2A0168B10106D
-:107A60004840EDA65B7AAAC226E216D4B1691B9DF6
-:107A700012D1C66EB5A3B204D92A6C823A5228DA62
-:107A8000A8A041504163774418E30CB6FF39E7DE04
-:107A900097AAFBA8B0F4F4CC37DFF7878FEFE6BCEA
-:107AA0007BDF5DCE7ECEBDF7651C63AE7A1B633F88
-:107AB000E3CF0DA1D2D6D5C05821632F3ADCB6AEA4
-:107AC000504E5D9813EFC967CC9EE18972003CB7B8
-:107AD00052F199FB30C68EFA73DDB18C8DBB423FFB
-:107AE000BFC8BCA49F847FA49F8F74FDDCAEC0BBC5
-:107AF00083E03F733AF0FD3BB25DBD1D1D19BBEB4A
-:107B00005F9807FB6165430C6C0063775B19FD7C34
-:107B10005FB335D75A00E54B96449609ED5ED9968A
-:107B2000310BFA618BE1A514C6BE69FCC8EC807EFE
-:107B300016B4AACC95C85875AB42E5824D8DE611B6
-:107B4000D0AE1ACAD2B0F9CD13F365ACC93821361C
-:107B5000F4BCBF83CF97B1358CE17C5E396BF440C8
-:107B6000BBBB0CF55F3E95048F072BCEE71D97AE90
-:107B70003355BCF72963E5F5F997D60F722854FF02
-:107B8000588EAB08D7D905FA405835F0F5EADB2F07
-:107B900015FD4D8D6677B8A17EC68058AB03F05DAC
-:107BA00078D4B32C16E6316B5D663F15FAE89F5129
-:107BB0005282FDB19983257C9577612C88EB33B691
-:107BC0007462507EBFA3309EC1BCA62604EF617DC7
-:107BD00019FB8DBF7B9D752863637E0B6DBAD02B1F
-:107BE0002E06EF965B04ECBBDE5D560CF0DF558293
-:107BF0003D8EA23A1FBC7F10E703E56D037B45B3C2
-:107C0000DE80BDCC18833D9EB192F469BF41BEB801
-:107C10006DE0D011F87C982536771AE197117F94A2
-:107C2000A4BB27633DB667B00E8F39D0F166588785
-:107C3000E72DD5E98375787AC778FC11F03649E0ED
-:107C4000E1370E3B95070D30CF7EA17968E30367DE
-:107C5000DE1384FE4E2F4DE9BB1AFA7B367DD81217
-:107C6000C28B18FFD974CF9CF0F161B9BDF1F9D581
-:107C7000CE639698C71241377731F099C0F5CFF0AF
-:107C80007F42598C04DF383691B9F242F0A41B537D
-:107C90002578F2D46CA9FDAD33AF93EA2B2CC182C9
-:107CA0001A5B88BFF5F3D14A2014F16975ECC63828
-:107CB00006533CB1E3C28753404EFEB641752A30AD
-:107CC000D7393B9FFF7008B43A070B4E04BC9D7335
-:107CD0000100EB3DB749F5FB32913F5CC68A4E8C03
-:107CE000556157D07EFEA1D7CDC3E0D7AA9AD963FC
-:107CF000918E73FCA6CF9BC2E679815D34B32C9044
-:107D0000878DF2F36AF6D0776A6F840266772FE880
-:107D1000A75E575F33F22B1687ED8C9F3769EB8494
-:107D2000F1171FCF7C645FD8BA9F76C4267D791D7A
-:107D3000FCD28FF5FB59C5F19A0FC00A596943234C
-:107D4000D169D921D5892CBA2C5D610AAC73E4269E
-:107D50008B3F0A44EBDB6D27CD0EC0D70F5EC723E8
-:107D6000FB4C28FFB58C25E27B27CD4DF07CA8C3CA
-:107D700041785AB0E33B3303BA8FDCB190E47A0424
-:107D8000E8B178E09F6023EBB509FAF765C63A9F42
-:107D900087FEEF5A350A848BB1F8D62954CEAB1B37
-:107DA00045FDCD6F9D48F082D618820F46074730BB
-:107DB00098C7C12D1DD83298C7613590FB7BECC7A1
-:107DC000124B7AA222F5B6A5B8EE83D1BEFCBB61F8
-:107DD000BC8A3F8F2C47BC2ED8A4B890CF2A5476AB
-:107DE0005049C0F946517F15EA7B050BE1F998D25D
-:107DF000589F219EEA19837A7540EC6A06B06A069C
-:107E00007D11813F0F09FD626AE2F31EDE5A49FDD2
-:107E100069F5871D59B47E0D3675DC609C6E0BAD1F
-:107E2000C7D4A45039BAF53A2AAB37551A1D30CE0B
-:107E30005B79CF25219EA0BDCD13512F0F8C6711EB
-:107E4000F497565A843E9E82FA18FA3D90E5FA025B
-:107E5000E572DC9226A315F5A9CD6A7F1EF8605C59
-:107E6000515FC7ACB075A97B6E610EE0234B528B9E
-:107E7000C905FD4F81325C7FDFD18EBDF9A64D7FF4
-:107E8000D752A9D925E65CC218F0F9ED763E6F4DC0
-:107E9000AE8E89F6DAFB4185CB876FB3C5FF3CFC1C
-:107EA000FE5996E7279C6F70189BFC1AE9D3604631
-:107EB00065EC3F6FFE405F2BD23FCED8C412E07D11
-:107EC00043A6367F2ED7579A7F8B98FF61952D4614
-:107ED000BE387CC30D4117CCABF1BEFEFDD13E6870
-:107EE000E325669AA93F666FB988FC5ABD2BC6B1D7
-:107EF0001AD65701B441B865A7C5BF3E939E332536
-:107F0000094BCB7A05EAABE35A72D1FE94EE8E0AA6
-:107F100020DF36EE8E32A21D7933C79398D9119F98
-:107F2000772F5380BF5D3B2C46E48364872B29B3B6
-:107F3000B0FDF95E498F69F2A8E733CF2A2E7F1E84
-:107F40002187D304DF4E177238CDE88CFF25CCFB98
-:107F50008E7754867A7CFA12A5D7A602D469B1CE60
-:107F60009C3039D4E4CD847CD91FF993F3E5BCD699
-:107F70000E42BE3345BF5C0E2AC040237E2AAEEBC4
-:107F8000E047F95ED09A48ED3479D5E4343DDB53CF
-:107F90008AEBAE5806F20DE37896A614A0BC84F8DE
-:107FA000C46C477E023E499E15C607CB1A7F342219
-:107FB0009F988A15E2130B94A5617CE46EF353EC51
-:107FC000233AC13CC62DCF34AC66A1FA72E4978E39
-:107FD00057CFEF85A2FD745B20C700FD996AA29C74
-:107FE0004B615EE7921CA4C7163D0000A06091C9DA
-:107FF0005D8A7EC6A2DF294ED4BFE87FA0FE19703D
-:10800000ACC6EC099BDF2DADBD9903F034B1B51BB7
-:1080100095FD333C93100FD35A27093CF6A69239AD
-:108020008A0C389F7BACDCCE9CAFB9FF761CEFBCD2
-:10803000DFE2C4F1182BE2F416F32D74393BFF1282
-:10804000E7F78E893D0BEDCF44795494CB33E9CCDF
-:10805000FE384C71C65AA033F47BC6C47C76A0E7C8
-:108060004C803D087760AE0EFD50EE609D6176E578
-:1080700082B12E8365037D17FDE55323A8C239B96C
-:10808000C1DE011877EA306EFF9B3798C8FECF6BD0
-:108090007C6F8001EABFCE747566A07BC774F1D493
-:1080A000E07AE64EF0BF6202F8AE875F8F1BE4080D
-:1080B000E1B3DE18C831C2FBF580471FCCABFE210F
-:1080C000B5DCCFFD9E98CA5E57E6EBB9ADD9841FEB
-:1080D000CDDE68FA7BAB37191611D2E357B2431ADB
-:1080E0007FCF1772301FE58085DB9B4AF730E4C3F2
-:1080F0003CC599C3C2ED0D97074D4F03BF93DC54A8
-:1081000064A73B97B190DED6DBA3BD6AFDE3836134
-:10811000BDCBB33CEB510F94FCE9BF5EFF18AAE660
-:10812000BDF66219D269D8750A5395ABD1933F9ABF
-:10813000484F2EA964A427A10CD793A676FCF43F40
-:10814000645E9B9EFF57C1F7E0DF92DF887A3CBCFC
-:10815000BFCFB24AB6219D77652A5CEFFE93E6ADAC
-:10816000D7EFBBDAE4F5EAF4FB4BA2FD95F4FB1183
-:10817000D4EF8597EA7306FDA13EFFDBCE1E7ED4C9
-:10818000F79F32D0FF68DF76C4389E17FA9EEC4125
-:1081900074BCFF72FAFEB19C1947103F11F4FD7BCD
-:1081A000FF0C7DAFF1975E1EF472A0E7FB310F82EA
-:1081B000FF8574DAAA30D4AF217F8B111F1FCCE268
-:1081C0007CACC94D98FF45761EE4C19F9379A95CAC
-:1081D0007E5FF3970207C69B05B17D9912E2774D4A
-:1081E0005E347ED7DB9139591E35AB302427F35EE0
-:1081F000D3DB81F6F8699B09E357D3BCEFB81D8048
-:1082000032DC0EB4E7EF58B3AE4D0EFEE32AF92987
-:1082100035EB7F9C9F52B322F3535A56C77F9C9FE6
-:108220002E4347B2331A9F8D799BF307CBE6FE3E70
-:10823000F00BCDFBA039DDBF2C13F51ED787637E75
-:10824000663588CF3B443E41E3D711D91E17CE5344
-:10825000A333FAF7E8B75FAD5F3825A986B9E0F92F
-:108260001D5086EB0D0BD22F827F3FFC1AE9DC3FBD
-:10827000EBEAE83C49D0F99FE8174ECB8AE0173289
-:1082800017B7FF21BA582622DF7C1F303294AFF691
-:10829000E86A5ACBF1AEC12B0246CDBE26A27D05BF
-:1082A0007E99FEDFE1978AD2FAF35670FD7CEB8B64
-:1082B0002B8D83001F454CE43F86AE717543FD0254
-:1082C000BF0FA61E293F725815B0EFFA2365308FF5
-:1082D000318FB7D5FBB07E78717C5B3E054309AD2D
-:1082E000BD77FD90230FD1BCEB38BE3D4D4677AF37
-:1082F00030B800E0D830B84807AFE3EDD18ED8A948
-:108300001F3F974FE85FE987B0D69F9003D632A210
-:1083100003FA8B9B143BE6436E2DFE9B19E95351E8
-:10832000DA742015D6FBF8FAE195B61EF01CF5209C
-:10833000CCF7B9F5156B7C46F17E27CA8FD18FA596
-:108340005E71A940A779458A3F2BF3523C3E9725A1
-:10835000DB33FC31CAEF3373C1B5BD8FF24BEF672E
-:10836000D1FB01CB358C7F733173F923E8C957B545
-:10837000761701D6FA07DC4DACE771B8BEFD3621A1
-:108380006F4183613E037C35AE9FB606F365C3192A
-:10839000E78FBDEB3D95980F2342EBD67BB9F9FEF5
-:1083A000214B8EEFF0C721BF1FB81CBE5EBEE47D1F
-:1083B000C11F5532BFC41BDDFBBE8779C427297698
-:1083C000F46B17B8A31E42FFBDA254E3EFBB2A5DB6
-:1083D000C5B0BE2826E5FF42FC3DAF12F97B01D3B4
-:1083E000DA2F588376C96D686BCFF97D87D2F67E18
-:1083F0001EF00FA5E2E0FD13EBE7AFF1D9881E54A4
-:108400004F70B7CBF07BBD0E2ED6C987E06F924F71
-:10841000D4DB809F9C087AE33F059DBF55D864D488
-:108420007BC112EEEF05B378D9259BFB77866CDE16
-:108430002E3A5BD0393A0C0F69213AC34F00E388DA
-:10844000B075139E6E49D2D6FD70E55858573081ED
-:10845000F552804F92B21F58B33C8C4F3A653F5C47
-:10846000897808F5F7E011D4FBB7083C75C97EE8B8
-:10847000888FEB3305E56E3E3104F0C126C5A7C2F7
-:108480003AE7231F4458E7E94BE5C6A77BDF65BA07
-:10849000CCFB5F5FCA872EDDFBCC94742DEF0B3ACB
-:1084A0008DD5D1B15C47C7321D3C5583FD923ED37B
-:1084B000F4DCF486352B3A2561BE51413381FADA7A
-:1084C000ACF465ACCF734F56DA0621BF3A4CA9A085
-:1084D000F3FB3FB7F6881578B912F519F1EFEFD62F
-:1084E000B8801F27A2BC13FC54A5AB0FF24FCD8A56
-:1084F00064683FE8B9DFAFB142D35B97AF31A14FBA
-:1085000033F4B9A7D718817EB714FCF900F667AC2D
-:10851000FDB72363332FC3AF75BA75ACD3C13E5DCE
-:10852000FB27AEA0DF97EBDE5FA2AB7F4807AFD59E
-:10853000C1ABE4F7A7CD54484EA601FD1071579288
-:108540009B89D96D79A4367BA6D8C84F92F87ECC8A
-:10855000320EDFF6DCCB95ABF2C3E0EC3F5786F38F
-:10856000B189F19F2949CC87F6C3D48E3E1B93DD98
-:108570000E1FE5E9ED1DAFFF0C7F4DA17D16C92E45
-:10858000EF5565B851D5E6BDF3C83D367CA8C13B73
-:108590002AD11F6F77DF83BD5189FB1E631E15B083
-:1085A0006F5B25EA3D6D9D5AFB113FFDACE278778C
-:1085B000676FABDC80FB2A25811CCCD74F4DE025B3
-:1085C000D81915ED58B5C8778CD8A9BAD1CE4C8D2D
-:1085D0000EE42CCA0F5B27ABCFC57536DEA7127D24
-:1085E0007CCB783C329D39CD98AF688C8F5FFC0294
-:1085F000B4DF7B9FBA18EDDAA78B133BE1FCF7657C
-:1086000073BF6D6F7CD74E7702DC18738719F3B593
-:108610008DF70FA7728FEA5AD9027CBCE6B9836442
-:10862000E71B63E2093F0F67EFABAC05B9A8CB7658
-:10863000D0FB9E047BA706F457579B18E6ABC1916D
-:108640007A86F8E6614BDFD5308F69B5D7D1FED198
-:10865000F47FAD1C9102EDA6AF30D1BE02FCF4C692
-:10866000797B560F3763FDCCE5A2F48DA472F7DF5A
-:108670005F7FBB37B46F794075AE87C6BB5AB3E234
-:10868000A6C3BC4E45713DFC7973B7389C678F6EAD
-:108690009E75D9C8AF71B1D10A1A0FBB236E02F40F
-:1086A0009B9BE37A3ABB63A8FDEEBFABB40FB6BDAC
-:1086B000797A27CC3FFD41E8EF5DADD33B4D0FB359
-:1086C000F7B3BE35129E779B1DF7A07FB93B3A5D8D
-:1086D000C1BC0CE03911F3B633857F0DFCB2F8F55F
-:1086E0000876FF896C95F072DAB2989D02266E7C4E
-:1086F000B06331CE537B4FDB7F33A539FA85FBD195
-:108700001BBA96BC8EEB08F1D96747906FC88F06ED
-:1087100078D7739FACF1A12DDC0BFE3FCE23C9357A
-:1087200002EBD99244BE0F9A5C9F1B9E8F08F9A959
-:108730004B853EE0ED4EF862296E3DF152941FE309
-:108740009913BE4F62C3F3EF9A9CCC8E8BF5A13187
-:10875000FE2A36D68878FDD4E8FDF257B86FF8B413
-:1087600089F4E8ACA73B2E69417D00F4C47C907E7F
-:10877000DCE46E261AB7FDFDC1E6CAB2B430396139
-:10878000CD95AEFCF6E5E4D873DF546EB0B52F2777
-:10879000B385DF3EE269931BF97C7661AC11F7E9A2
-:1087A0004A9EDEFF3CF2E3EC8551FD2C30F1D94FBF
-:1087B0005B88BE4DB1B13E3BEE23C6C51A3B40F9C6
-:1087C000ADD0234DB55114A7A89DCCA4F7D4958561
-:1087D0000EC44FA9CA8C56B02B6A9CD3E1E6F07246
-:1087E000CC1BAE882D72207D3B76E3F2D0561F3F26
-:1087F00079B4D23BB46F7676F1E34F0E84F97DCD38
-:10880000FC930666FEF7F7D1AA993B1EF38FFF5340
-:10881000FB68E66EFA7DB4FCF89B91FD16AB346FF5
-:108820007569941FF1A966703B319229B48FC6EC2B
-:10883000B0FE5EA17D34F5D7FD093FA7BDC057DD71
-:10884000012F71566AAFFE5AF55B60DCD2449E6F11
-:10885000559FAC64B8AF0678F5D9011E995443FB17
-:108860006B4B859E99A630773DC9BF3303E3E4592E
-:108870004F47111D673F33E7C3DF1520DD2A92C242
-:10888000E52953F01FF4C7AC09A17EBEAAFD4D0631
-:10889000CEA7F4DF20BEC4B853F53C790BE9CD1860
-:1088A000DA6F63F6A6870722BFD4C6F4C53CF9EC9D
-:1088B000A75332B2F243EFCF5E7A5F2E7F1FE2D62C
-:1088C00038D45B51B49E799B2CC42FD31E505D6469
-:1088D00027D3CD64273F5F1E45F0BCB42292B76911
-:1088E00006BEFF063E6132E9778E7236CFC65CAFB8
-:1088F000DB50DF3F1454397D7C826E66A44F71B724
-:108900004492CB3B10C760BFA622BF75A4FE781E61
-:108910006A9742FB4D8CD538500F4C3528A4EFF4A4
-:108920007259D18DFBAFD3329CB7E37BF31FB138C3
-:108930009766F239A8DA7C206E9A6F08CEC27D481D
-:10894000B6C542F98D6A5847541C3FF7F01ACCBFA0
-:10895000DAC88C66CC4F39B85ED3E653EDA81C89D3
-:10896000FC0AF5C78C503F3F96EBE5F91D78DE8792
-:10897000C55AFDCF878F8773CEE6EF39E250DE060A
-:1089800011BFA0FC1BA0FE6F8CD797C615399AF2B9
-:1089900069FF7E15E64B703E3D7A878D0B704A6FFE
-:1089A000E4C785C6AC58A443E2A4C938DECB2AE9A3
-:1089B0002710AA478AD00F7C59ED8FF1ECB407F647
-:1089C0008E588BF0AB7DED388569AFBC4F76EA2EC3
-:1089D000C1674DE8FFA3DD02F85528EFEDC6F5832A
-:1089E00047E5F99C7BBB29D2BE9F563FFF0113D1BF
-:1089F00063FE0ACE0FF36BFF42FDCE8F0D76427AF7
-:108A0000CCDF6C1A807CFD2F62DED36BD38B8F01A1
-:108A10007F4C37C5DB157834CF576146785E9D4271
-:108A2000B036DEFC073EE864C8E7FD6169117C14DE
-:108A3000EAB76306DAB56F5E4ACC981646F76F96CA
-:108A40006F8DC37DED5351811C3BE663164639D7CC
-:108A5000939C727A7CB33C673DE66B66DA83B1B86F
-:108A60001F3EF39EEC04B4779FDA0366ACFFB43E7E
-:108A7000D380B0CB6E2F46D865EC43F037E29C0A2A
-:108A8000FD009D16289C6FE6BDB4D79C05E33D27ED
-:108A9000F8ECDB97DFCFC5BCC1FC8C602EDA61E05F
-:108AA000ABDC54A4CB1F15F21716BCA4BAA27A876C
-:108AB000F86A01F215C8FF5CC1570B366DFD25CA77
-:108AC000E902E4A77E97F225C497FBE8F96BCF8E05
-:108AD00060FCFD7DC8779ADD0778B909F36B660104
-:108AE000C338086F10FA1AEACB78BD2F9FEC096BD8
-:108AF00032A35F5CAD727F01E42919FD89EA069318
-:108B0000AF294C3F2EC0FAFC507D7B7CB3BF9BD875
-:108B10002FABB5905DDA2FF0D2F4C0E638E48B6F5E
-:108B20005FDE7B6030C659AF2976D4FB97C8A1C001
-:108B30005B35E2298ED649FE5135E2252E84A736D3
-:108B400079137C51CD381E34BC541B059EB47AF188
-:108B5000FE01C187F398C0EBA6EE5CDE857C03C7FF
-:108B6000901DD1D6E74990CF0FFC20F8FEA858E71A
-:108B70003CE01B673EF197CB3C40C4FF50F5EDABAA
-:108B8000CF52FE48A3A736EFF81C87A6A75D1D129B
-:108B900042746E32B0AA48F9EAAF85DC996C5CAFDA
-:108BA0009CAC4DBD7D31E06FEE4BAA939087B157E1
-:108BB000D8B81643532CF9A7BF56EDB8AED23F55DF
-:108BC0008EC6756B7C67DAA8181B709F907520FCA9
-:108BD0006BF32BEDEC1EDD81F35D00E7A3CDF3A479
-:108BE00012207AF95E55ECDCDF6D32631E5193532F
-:108BF000FD7C7F10F355E394C14A1F9C8FD381F213
-:108C0000CDC00ED27C6CC7EEA3F17C27EECBEC1D61
-:108C10001AE7535FAC11DB7DCAB81ED0F8F2A4C8C6
-:108C20004B9C5CB195FC616D9CD81CCE5761E37880
-:108C300016275D3A8ED6DE94C3E7A5C9C5C104CE1A
-:108C4000FFA5CBFF42ED343D8B3F988FD3F0A9E1D8
-:108C50002D4C2E25FC68F2A5C99346D77F54AED87B
-:108C6000928EE4B7DE2FD64D32D2296417903FD1D1
-:108C7000DE59CCFC1C5C98DD24BF6664DA77664F55
-:108C800084E71A9EF4CF4371953D03F13FD2964C91
-:108C9000FBE56C79F2BE6E61FED929CC7BA13E7DED
-:108CA00051F5933E65209561F65CF3DB6A178EB44F
-:108CB0000F43FE7A49A173479AFD869F87DAF8141D
-:108CC000FAAB2A58988BFEC4EA9C2C1ABF3AC97595
-:108CD00016DF9F77263822CE118A5F869E0FA8F175
-:108CE000981FDC9429C50FF39AF7919CCF67C19523
-:108CF00018EF4E7BE0FD8A8148FF174D747E616658
-:108D00005D26D9BFB31B66F4C7D076DA8A1C82E72A
-:108D10003C7F27871FE07EDDB415852F607EFE54E3
-:108D2000946B04F279CB1AC58EF1D790E70B97DCE0
-:108D30000AF54362BB76C0F99ED870AA6230C611AC
-:108D40008B55921BD786C72761BDAB4175E2126771
-:108D500032FB925B91CF8DF12477DAB9C66526CECE
-:108D60006F77E670BD715B0ED71BB709FE2D5DB640
-:108D70002C17CF15B43C0B760AF7D7CD8EFA00C668
-:108D8000813B3B3BD7C338D510B626033F9D51B836
-:108D90003F5E656656E4AF43A6E0BD38FF43F7C6C5
-:108DA000F6ADC509A81707A07CB844DC0571148D81
-:108DB000ABE14B1B7FA61857EB477BEF20FA5568BA
-:108DC00047C47CCF2E7F7112FA0B6737E624B03090
-:108DD000BC9FC57501BEE7807E7C2D423CB8304704
-:108DE000CB4FF8A9AC1279C443A6BA34DCCF05BF87
-:108DF000FE74B87FFED5B35156E44BF0EBE5E726A1
-:108E00006E57C09F979E83FC48705BBCA74E8DF742
-:108E100044D0475AA9F7F797E7D822FAFB9AFC5DA6
-:108E2000A2D7847FDF9677E9766DE7BA9ABD4018BE
-:108E300010886274CEE0FDB2989F5EC7F397B3EAE4
-:108E40002C760BE0F734CA17EE0B6E56B9BF68E507
-:108E5000F2767A675F3FE615661D67CE00C0B38E77
-:108E6000AA4E07B4DFB7E67E3ADF71E73A8575565A
-:108E7000C2E2AE27D64C42713BE7F4AC4C81F6E738
-:108E800036F2F328506DD3C55B07521CEDC75BFF6C
-:108E9000AC384BCB3FE9F1BF2907E2AD18F8C5C9A3
-:108EA0009C32FE79DCBE1BD8A8A8DFA5F86FF67A45
-:108EB00028AEFAABB78ACA41F5CF96A6C23AFEA64B
-:108EC0009C7C6408CA516C3CE54F9ABD35B439F8B6
-:108ED000D786FE17C7019EB6DBE2EDA83FFEEA5D2E
-:108EE0004CCFDBF846F0E9D04D8D6A2AA3F63B86DD
-:108EF00040FB5DB678DCEE88B00FC7E9AC3F7F730E
-:108F0000F7C2819DF1B9B6DEAF7FC5E9DD66C7372F
-:108F1000CE88437FB5F1F7893B06219D63E2EDC81A
-:108F20000AB3C5399C2FD7727D74C61AFF02E65169
-:108F3000CFAC9BD809E3C33B4D2D6627F4EBDC593E
-:108F40001987F9822F8C4D71762CA17D00E761F491
-:108F5000ABA807079733DA1F1C1C303247266DDD9C
-:108F600013FF0C6A36FA316EFE06F70DD18E5F8C58
-:108F7000E6FBF7623FF0CE6D3CCFD6965711F985F0
-:108F80002162BD1D7213B47D207A5E5AC49F7FB5E5
-:108F9000EEF571D8DFD90D263BCEF7AF1B4CD4FFD1
-:108FA0005C88EF0DC08F6736F2F3027377409C9CAC
-:108FB000897A4421FE9D0BFC6B45FE5B687299E348
-:108FC0002FE5CBD28D3CBE9E5BAF50BCADF1E75CD4
-:108FD000977F04E15DF0A915FEFD0CA6A303AB5F2E
-:108FE00089F8688F5FFFD17C803537723E40CF0FA4
-:108FF0001ADE34BE08F12923FED4E89F50DF7758EB
-:109000002ABDE0237CFA4A581EFA0BCBCC2C0FCF9A
-:1090100043F90CD14E94FB1FA2E27A631E6AB1950C
-:1090200097BF8C8E5B8FE50F51197E9CF70F06FB67
-:109030007E8CB3BCB999C4B7BF541D26057E9D98DC
-:10904000D4544666A0D4E032A01D5C66213DA2D770
-:109050004339B9220F98CBA81C96CBCF899B580DCA
-:10906000F9175A09FE403AFA2F95310917F0287975
-:10907000BF173A4FC4FDDECA2109F76683E739F806
-:1090800085F48946E0F3CAFE099BB3002ECE4DE37A
-:10909000709F844213C0B5B51913CBA0FD2DB92E16
-:1090A000676ED8385ABFF0BC3F3E1F99E219908BCB
-:1090B000F6DF6C5B8576E06F4ACB02831A6A7F44E9
-:1090C000619F6E574270938965A0BF3DAC6DFE9164
-:1090D000CB55B9AE1B72233C9FCED80ACC4B4CF774
-:1090E000BD794C217DC6DC56A0E778C17FD3ADB6F3
-:1090F00000E9B955A6E636FEC8423D156F44BA8F61
-:1091000013641F6F0C34E2FB3DD872FB9756721547
-:10911000D7FD9CD8BEFE0741655F6AFDC1FAFE66B9
-:1091200082F5025D1517D01A444C01244F057DA726
-:10913000EC78F347EC77998F3545111DA6DA910F3E
-:1091400015E631FC0CE5FC18E08B3E58023F40BBB5
-:10915000459BBFDD87623147F3B33C45E42FDE63B7
-:10916000E7EB619EC1C4AFF70A7EFDCACB6A3055FA
-:10917000343E188CC3A3B0CDE302B9A81FCA554F23
-:1091800015D2E1AB75CBD21601FF7CFB9AC539161F
-:10919000DA9FF1BF1E8776759EF0F7D945357003CB
-:1091A000D41FCCECB17E75187F2DCCE576BF39335A
-:1091B00090711FEA994C1EAFB28B7B33EE83F6E5BC
-:1091C00059A30A5713165C77E786ED4F8E33463E58
-:1091D000BF31298DFBEB6C03B7C71623F3C52650AF
-:1091E000C9E2004FA3602E45782E156095F6F3FD79
-:1091F000D41EDBC5A15FE39891CCF77B981BF59655
-:10920000465F8D6E97D013A68C7EBDC1CA4CB8DE6A
-:109210001E6C9D1DED9346D7AF843C7E65E572388C
-:109220005CB5919E5AB499E7F516295CDF2EDAA950
-:10923000F0FCE625F676F34AD4C955EB66903ED3AA
-:10924000F49803FE217FCDB5BBE3038E7FC0EEAE65
-:109250002BBD2A7DB65ED3677D595FE4BF2BF94BEA
-:109260009A1E03F2BC98DBF11AE885288375CF16A5
-:10927000731CAE4E7518112F1DAD4ED4E78B9ECECC
-:10928000263BC92EAE65E1EDD8BA44E2DF95992AB6
-:10929000D1B5A2219539E0D19C0685CEC98E6D4805
-:1092A0002438AE3585E08A3F742EC175B7ED83FE54
-:1092B000A13BC1675F78BBC0C3F33456ECDFCDB4CC
-:1092C00079E4D7A3FD39678379009EDDB65594779D
-:1092D00074B3B67848F9594118B806E5CE65F2710D
-:1092E000FA586B49FEC5BA1609B95A7488DBEB45C2
-:1092F000C3F87EA1D1D7231EE96F3AA8323FC03709
-:109300001D520B03D07499D0E79664037384D12D5A
-:10931000CA11CD1C61F4613E5710E3ADC9825FEE06
-:109320008FE27A3F262F416A37D9368BF82798315A
-:10933000E220AE37D6D945EA9779B87FACF1D5248B
-:1093400091371FC75A96A39DBC6932D487F5672A07
-:10935000FE8EEC86A958F6AB012FA72FC74FCD1A6A
-:109360003FF5603D889F74F801F9207B7FEE28BFB0
-:109370007F025EC96F8B019E74D0C4FC50BF42E077
-:1093800005FD568C7FCEB962496E34BE0BA2DD035B
-:109390003D175F24E3AD834BC65B62B98C9F8E6E35
-:1093A000191F9D276749F5299E9E527D6A553F09E1
-:1093B0004EAF192CB5EFBAB84482337DA3A5F6D9C8
-:1093C000AB2648704EDDAD52FBEE6BA74BF53DFC76
-:1093D00073A5FAEB362E92E05EF5BF96DAF7695880
-:1093E0002AD5F70DAC96EAFB1F7C4C820B834F49C4
-:1093F000ED071E5B2FD50F6AFAA3543FE4CC6B1226
-:109400003CB4E50DA9FD0DAD7B2478187B5B6A5F4C
-:109410006A7D5F8287DB3F91DA8F4C3E25D58F7264
-:109420007C23D58FC9FB5E8257083FA7C2F95FD264
-:109430007B4188D8908F73D23C43BB53DEE78C11BD
-:10944000E5EFD86D0A4BC4F8E7E0443BC9FD35C6EB
-:1094500081C3BB8B3844F0F10566BB1DCFB35F49B8
-:109460002F66A33F51887C3E96EE559DABE7F90EE3
-:10947000BD5DD7FCB97830CBC6B0713BB8AC10D06D
-:1094800087E0C472BB047774274BED3B4F7648F5F9
-:10949000299E3CA93EB5CA29C1E9354552FBAE8B90
-:1094A0005D129CE92B97DA67AF724B704EDD64A9B1
-:1094B0007DF7B51EA9BE87BF4AAABF6E638D04F7AC
-:1094C000AA5F2CB5EFD3E093EAFB065649F5FD0FF2
-:1094D000D649706170ADD47EE031BF543FA869A316
-:1094E000543FE44CBD040F6D6990DADFD01A90E070
-:1094F00061EC90D4BED47A448287DB3F92DA8F4C01
-:109500003E29D58F729C95EAE77DE30CD0BED476D8
-:109510007EDF55F3E7C6E47D27B5332581BF8FF99C
-:109520006F16EDC4F3FEEDF9F99A1F58E1FC511ADC
-:10953000F70703F7CF5FEA9E25FC7FEE272EF3B9EE
-:10954000E97C5E021E78053989F729C47F18624DCF
-:10955000A57C6412ED5B90C974E07937F083004814
-:10956000306466621C1213F263D37EEE7FF57EECEC
-:109570001B10E3A05F7DB6BBE7CF289773EB5F1DA1
-:109580008171CE1CE65B89F300BB1B8FFB58EF4655
-:10959000C9F928AD1C65053C868D7728AA2EADDF5C
-:1095A00065E47794B599DAB7F52BF2550AAC6F51AB
-:1095B00058FF8F40FC650439ADF3829C41A0FD98B3
-:1095C000D74EF013DE64829FF43AA85CEBCDA3F291
-:1095D00029AF93EAD7798B087EC6EB22D8EF2DA767
-:1095E00072BDD74DCF37782713FC82D743E5466F3E
-:1095F00015957FF4D650FD4BDEC504BFE2F55159F9
-:10960000EF5D45CF5FF3D611BCC9BB96E02D5E3F41
-:10961000950DDE8D54BEE1ADA7FA1DDE0682777989
-:10962000030407BC0709DEE30D12BCCF7B8CE0030B
-:10963000DE262A0F7ACF50F996B785EADFF1B61207
-:10964000DC2CF613BEEAAE48F7183598B132E207C3
-:10965000CDFF1D87710F324791E9AF52DCA38B3FDD
-:10966000F4F4F85A8C632A01F717FD9F2EB9EB9793
-:1096700085C505DF8BF1EE8F66BE2890875A03CF34
-:109680000BD42630BA1FC6847F3E5BF0254BE27EAA
-:10969000F92C31AFD9420E0A913FF3883FDFB996DA
-:1096A000384B8BB7ED191E350FF933DDE0A3BC83C2
-:1096B0008DDFC3EF9FE131E7811C9DABB9F3008DD6
-:1096C0006777E6E220159640C79B319F7448A53C1A
-:1096D0006C7BE3558B7B12EDD6EF3A9B86F6A8FCAC
-:1096E000EF2AE5EBDF35C54EC67C4B721EC74B72C9
-:1096F0009E412A7764B83BE33CBFCAA979E16E2555
-:1097000074FF7F3C86E620E795CC61A273B8CCB5A8
-:109710001FAFDEDC040E1FC237331F9525E91E077D
-:10972000BE7F0B0418087B065B3222AD473F9F9E2D
-:1097300079DC7FEF996790CA8F32DC3D103FA773C9
-:109740005CD27CE2BA3AC47D9C9667705EFFB1F34E
-:10975000BB2F95EC10BEB5FCC6CA61E29CD6424553
-:10976000DB07E77EA295697E22D54FBD97E77B3464
-:109770007B79BCADE4FAF05C8D89F4E65425DA8996
-:10978000FEF6B99A7BFBE07EE16D10EFE1FEA9A643
-:1097900047A7026C00782AE3E72EA61E8F253ED34A
-:1097A000EB57788FE17EDF54F03F317E54BAF27C84
-:1097B000CABBEEEF4CD82F4B6AA17BABC037A3716D
-:1097C000FD7307A9F4FD86770DFE5C45257E312BE0
-:1097D00030FFD949C02F11FC058D2F16887B39DA4F
-:1097E00073E0B71B913E7FDD36308FF669760D72E0
-:1097F000203E9719F8BD3ADF5B2A3F9781A97C3C50
-:1098000037129FFF2CDD2F40E702E9372896EE172D
-:1098100034AA6CF1AB11F4E9BD828EEF269BCAFD30
-:10982000D4AFBCAFB840D075816857B1E7503ADECD
-:109830001B5C70D04471112B68CA7747385755BDEF
-:10984000F8C15F740BE3F3EA8693FC3C166BCA0F16
-:109850003F87F5B0E06B8DBF5473ACE7595BF8FC04
-:10986000F8F8C0E7F7083EFF12FDFE711647FCCD81
-:10987000F06A13A02600A5E7DFEC749E4F3BD737B4
-:1098800093B9A99C0DE446BE76FBD6D0BDFAB9AC1F
-:109890009E9E2F289A918170356B294B86FE6E5AB9
-:1098A00055BB3F196637B16ECD70CC734FF04FDBAF
-:1098B0008F65E506E54B9F83E464058EDFA4D4AC99
-:1098C000E802E3DDFAD2B01598471EA7723AB0B7A6
-:1098D000391D809F5C6AC2A5EB03B97848C805CDE5
-:1098E0005F938BA94B994B490ADD03699393A2BB04
-:1098F0003E4BC53D16630B9D43A9DE6549C0FCC9BF
-:109900005CC6ED76280FC4EDB526075F9B38DDBF3A
-:109910007E59A17B365F2B8CBEE7D09EDFA0F99FDE
-:10992000207F5CEE3E8DE1FCAF8ABC5E8627B95F8E
-:1099300076C83E7F6DF00F88CB26FBBD11D7632A1A
-:10994000F13CD417CFEBBDA23897C15CBEEEE0CF9F
-:10995000E0E704DAEC00FB392694277CC4C4F376F4
-:109960007A7F575B477BF3B498990FF7B394A203C0
-:109970003FA21F72E97C3DC903002FCB904498970A
-:109980002C713B22CD63B918FFE04F3C1EF7A53385
-:109990003A17A4C7A762E7E3B4975FB544F3F96841
-:1099A000764A9BE7A5F3E2F47A3F2F93E8AACD0F1E
-:1099B00034459E1DC6371AA39D28AF9546CF7B8898
-:1099C0004F2DFFA6C5C50733BF227BC02E2E4BE30C
-:1099D000E78F03EDD9E1E6B6783C2B6427B53C165A
-:1099E0002B8E9C8F745BEDA4BF263027D98B1EEC89
-:1099F000B8862FCA63A9B84348795E0FADC382FA0F
-:109A00001ACA28CCA390BDF4937CC6E0BC685D4123
-:109A1000CC88B03531718487C1C718E9E9C1B8066F
-:109A200058EFCE93CC8FE7A91A2F4C2A8D85FA9D3B
-:109A3000DF1A290EFA6DCC2BA9F81D899D673F4CC2
-:109A4000C57C4FED852D040F681E7196E7CF8E4FB4
-:109A5000C1FEB69F373B2CE4072C243C6879CAED45
-:109A60008C39711FB4E8231BDD332E3C5A1F437819
-:109A70001379B562B1EEE2F33C1FB20B81411007DE
-:109A8000B4985920CC5F36D965B88885C1993824F7
-:109A9000C061798E6B8D1F637B883CC84036303C3B
-:109AA000AFC65A1322DEA7D2EF2316287CDE67F258
-:109AB000DC9D7A50FE6C82CAF1FD7715F17583CD7D
-:109AC0009F82FE6DE39C1752D0DFFD6DCCDF098FC6
-:109AD0004FFD644E41BCD60DFB0FB22375F06E10E6
-:109AE000E35FA33F8A51FE6B3EE5D76E1076F6A981
-:109AF0008B9FB364C0675D1123FBC9841DD6EAEB5D
-:109B00002E9EAB427A5E28B63A502FE48A7C68EDEE
-:109B1000F5FF99DC14868F9DE0570780C0DBC1AF4D
-:109B20000E80EFBF0DFC6A84F1DE29969BC1AFC6A3
-:109B3000D20F7E3596CF805F8DEDD0AFC6F229F083
-:109B4000ABB15C0B7E35964F825F8DED9E00BF1AE8
-:109B5000CBC7C0AFC6E77517A797D27C8E31BA5F67
-:109B6000BF3426CE80FA15E61F8D79A1C3AE7ED113
-:109B7000888FEBCF1B24FA1637474BF0E0D309212F
-:109B8000FA22FD8F7791EA071CCD92EA337D3D25BD
-:109B9000B8EBE27E128CF9A1F0F753AB4A2438C53A
-:109BA000335A6ADF79F20409EEE8BE556A9F583EDF
-:109BB0005DAA7F344E4747FF3C834C47FE7D850BB3
-:109BC000C5363A5FD91E9F3E26E8A2C18FFF4A9D47
-:109BD0001C296F7B570F83140F741173BBBB8783D2
-:109BE0009EEF3B31F0C5DC02A487816F9BBA5A62BD
-:109BF000BA015D721F37303C5748270E607E76F100
-:109C0000DEE325E762902FF75698A3903EBB5D25D3
-:109C1000D1082FAD30A784F3515DA6A71FDD53F007
-:109C2000F0F569EF3F5A32E1B2FBE88F21FF75BFD3
-:109C30004CFDE8B959280F97E09155D17E6D088FFA
-:109C400013E8FB4ECC5325CD5F2F170C37E953702B
-:109C50005CAB8C4F57D6038887A79E30D239ACB601
-:109C6000FEC4FB5A7FC3D58B314DF997CE7FB78B9E
-:109C7000B707FF370AF1026349F34B703A86217E3A
-:109C80007E27E4ED5F85BCFD56D015E35884999D91
-:109C9000BFA7D1ADAEEAB151B92837457C5EEB6FB5
-:109CA0007C4C417593C89CB5F630BC3E21E6F18CE6
-:109CB00058D73AEC17E08E37BA14C45FC662B78241
-:109CC000F2D6754913C14F09F94EAB69A1E7E9F71F
-:109CD00004A8EC5215A4FAE1EA4BB48E363C386580
-:109CE0003CEAE9E417EBD1FA0DBDFFDA21E4B70B4A
-:109CF0002E3EFF389FCD85F622CE6777F2D2214ADD
-:109D0000A713F57E9CCF25E09A7C84B78975C5F9A9
-:109D10007C04FBC5BAEAAA920EBDE0088DC71CD52B
-:109D200086707BD31E3F6D15F8DF2CF0A47F6F9BF0
-:109D3000A9A6BF3D825C69A5664F8B8E1B747A27EE
-:109D40005A92FB43F80BB7037FE981F2E873AB62E9
-:109D5000FF8AF038B12D5E9A4AFCB426E6F6B73198
-:109D6000DEBEF1A8CAB8BD1DB71FF5E5FBA32C6484
-:109D70004F1B478D4C0FE7BB06B18EAD02EF837CC6
-:109D8000AE13F740FB316E0BE5E3073257FABDD057
-:109D9000DFE8B1AA3300FD1D6DB327EE187EDE812A
-:109DA000DB9309620D7BC64E7C10C77FFF28E80558
-:109DB00047689E5AFDE6F289637A211D839C8EEDE9
-:109DC000E1E74D41AFFD625E7B05BD1A057FEF16F1
-:109DD000F664A7B027DBD19E5890CE45623DDC9E4D
-:109DE0006C16F62488F604CA77853D7907ED099448
-:109DF00005A3B2CB486FE22536B22710A0D07982F6
-:109E000005D2BAB47995A7A912BD4624C548F42A4B
-:109E1000B3254AF525C65409765DCC92E0EBCFF721
-:109E2000D4D929D9AE0C3E3D5867A74A2478C0D171
-:109E3000D1D2FB95AE8952FDF8A229527D85738659
-:109E400054CFC47E18DFA283327A9D4A71AED87790
-:109E5000D2FCA9F7CB55DAB719F481EA0C97DB42AB
-:109E6000D6B64F66C07D32705F1C46ADBF2CA99E32
-:109E7000FCA8A326772A9EDFABAD043E84B2F82867
-:109E8000F869947C04BE06BFB7D03D92FC40F097C1
-:109E9000FA131D5AF87E93B66F3548B7FF343A5F10
-:109EA000DE9F2ABCC2FE94AB673B7E59B7C4ABF2BF
-:109EB000CB40BEC8FFFA6DCCED7B916FB67D047EC2
-:109EC0002AFAB91FFD82FC2FCD6FDBFAC52FC8BF60
-:109ED000DDDA262F1E495E0A85DC6E399AD5D0045C
-:109EE000F2B63959710A5493BC1469F2D224F4665B
-:109EF00079353D1F20DEDB6A72C7A0FFB7F9D85263
-:109F0000D16F981E217F3D4C8F601CC912E4FAE48A
-:109F1000D4507D162756787BC67AEAFAEBA78307DA
-:109F2000EBDA97E8E0D1BAF61374F0ADBAF6D3A540
-:109F3000FA0658F7E5FCEDCD423F68ED0A8D6ED587
-:109F40001941DF0E382AEB57E6AE96CE3D349E9887
-:109F5000457A73CBF195028F55127DF668E31C05A7
-:109F60003CE75FFA7E89D117D31BF8A0E498D1595A
-:109F7000EB08D14FA313C37838ACBF52AB2AC95FEB
-:109F8000C3314EDFF6D6B94BE8E71DC2CEBCA1F314
-:109F9000DFD49FCEBF3F1EF8674B9381E2AB2D47C6
-:109FA0002724627FBB2FCEA4F9361C33D03DB217D5
-:109FB0007B8EBFA9B65B687EDA7C0A3F581A83FBAA
-:109FC000AC179A0CA4FF0A4DEE447B04BCEBF9AB32
-:109FD000BD7E35BE05072A11F1B21BEC109D1B1684
-:109FE000FA54C3CB9E134F12DEB71D5B948878BF23
-:109FF000A1D520E165688BECAF0F399320C1034FE9
-:10A00000727F10ECAE84DF2BCD5B2F17B83322C3E9
-:10A010005DE4F657E90F6C1774DA26E8B43DCA39E7
-:10A0200039D2BEC6B64FCD55E1DF5538D393E7DB05
-:10A03000CEF4E4F9AFCD4047D4B3174E1B48CF0E52
-:10A04000B1D7AB3511E851DC6CD0D909D96FB8D68E
-:10A0500078F5543B7AB1BDF735BD58A27D3F2578E0
-:10A0600063C4F3B1213A8873953A7C6A7EF495E92A
-:10A07000A69D47D7D1AF9DF743FDF8F4F134BB0E51
-:10A08000FB69AA247BB326E65DA1CFDF257DFEDE3A
-:10A090008F429FFFD889FCA423A33AA7A31C1D6964
-:10A0A000D3E32C365C8F6BE72183CDEFC584FBF9BE
-:10A0B0006EC18F3B5DEF8FE983F4ECA6FEAFFA3BF8
-:10A0C000EF0A7FE71DF477BAE33E10F7770EB96623
-:10A0D000707F2759A1EFC52C8DB9DEE889C0A7FF95
-:10A0E000D7FD9CF145B29F53E194FD1C6DFF60B715
-:10A0F0005DA1735863F264BF6737FE827926ABE2D5
-:10A10000C77B5CDB5D132FAB870342BE0F09FABC34
-:10A1100029F4F07E1137EC40FC135DCA055D78BE72
-:10A12000A2F8BCD3E674207DAA785C96574DF1F472
-:10A1300050CDBE7B6BA8FD910BD3CFE3FDFEDDF6CA
-:10A1400018CAB3ECC6F9C0128E983CE7F1FB15BBF8
-:10A150005D8A636984B87E488BAC07343F41E3CBAA
-:10A16000DDCD9F135FEE6ABDBC3DD5F497D6EE4DB5
-:10A17000F67A29E2E7FA66C6306EB892FED1DBC500
-:10A180002B8DA36F3FC458AF46B23BFA71DCAD01D3
-:10A1900015CF3FEF6C0926E2769D3B7048C57BE00A
-:10A1A000C52D019AEF3E97625733A95D299E8B7E9C
-:10A1B000F3E27B63F0F9AEF3468385F699EC24B7BE
-:10A1C000C5423EDFB968B03909BF2AED73045A3E73
-:10A1D0007F10E5D56755E9BEC8EE8BFD92C2F1F65A
-:10A1E000E8752AE993ED651603E697B79F378AF37A
-:10A1F000D601F21F76B466D9B0DCEE02F9217D11EA
-:10A2000024FCFFFE3A7E4E7527F4C7F58483E6A151
-:10A21000F141E0BCA13CD2F7767E2FC61B72F1B3B0
-:10A2200018C4CF81F37B62505FED6AE1E30C59D231
-:10A23000148371E6DBAD86589E57E99F84CF1B8758
-:10A24000DF6FEB87EB6A31F0FD1BE1D768E3ED2EA2
-:10A250009B4DF9FCDD2D3C0EDB7D9EE78FB6FBF9B7
-:10A26000B93526F498D67EFBF909637A61FEC06F92
-:10A27000A2F643987F651CB4DBDF71EB7574BEC634
-:10A28000378F85EBBD52BBECE794B4E8EC93671EC7
-:10A29000C981468723DF4DB8B192CED7733D39CA05
-:10A2A00028EB975DE797264DC0F16D7C7CE6E7EFE4
-:10A2B0006BF119FE18C3BEBB523BFCE68915D8DF13
-:10A2C000667ECE6C884DD6674786CDF8FD7C3CFF18
-:10A2D000BF2986ECEC765C3FF67F9451FE6C77F9F3
-:10A2E000E3A57198B76E664EEEC7C97ABDF4C2A6F3
-:10A2F000BD71D0FEBD0D0AE177649EBCDE9DAEEC63
-:10A3000087310EBED0CCF1ABE59334B9DCD39C7071
-:10A310001BE9A732781BF0F85EF9EB94C79EE39730
-:10A32000FB19B831469AF7FCA6045DFC26E7C7C1C5
-:10A33000DFD4F203B68A01A1F8ADB095E7D707FEE6
-:10A3400034A17F00E65B5CC6CFCFEBF3E2A38C16B3
-:10A35000D9CFD2E5C50BF57971BD3D17FED800B157
-:10A36000AF7189FF23EC9C966FD8660A4C715F83AE
-:10A37000FF30C808A10B9DEBF5241600FEDF10FE90
-:10A38000E52073DDDD29202A5B55DF1016E6173046
-:10A39000BB8F250D08C5B7834FCBF140D171992FE5
-:10A3A000217EFC12E3C955B8A74972E0E379D0AB2E
-:10A3B000F433D6C4F46E6802BA0E3CCAC47EC7BF7A
-:10A3C000EC45BE6AF842DBCF00D7A313EECF33F2E1
-:10A3D000B71BBF3013DF6D19CEED94E6A768FB34D1
-:10A3E00037B2A6E5A50A9ECBB6AE68027C6E3A32BD
-:10A3F0002B7501F4FFC1C7B4DDC9B6146ADFA7AF7E
-:10A4000093E2CB815A1EEAB8C1975880FEBA4592B2
-:10A410006BADBEE1F8D218FCBEC885A081F8B4F1DE
-:10A420002333C3BF0FD0B0C342FB390DC7CCB4DF59
-:10A43000B26D0797132DEFACF9F96F097D7E50F8D7
-:10A44000BD0784DFB24FF82D7B84DF12107ECB2E48
-:10A45000E1B7EC107ECB1BC26E6E3A2EE46F498CD6
-:10A460009F7FC796E765B579DED1BDE98411165C9B
-:10A47000FDF180B50186F65C9693510E594E462645
-:10A48000CBFA63B83D556A5F6ACD96EA87B1EBA413
-:10A49000FA1B5AFBE9E291C1BA78A444E78F8C9188
-:10A4A000E5F26858BC4BF1B51CEFDE141EEF6622D6
-:10A4B0009D781CB8ADE931A2E3B6D359F1E17ED95C
-:10A4C0001B426EB69DE6F6F98D33E76223F96D67A0
-:10A4D000043DBE16F468167ECA4D29AEDBF30B317F
-:10A4E000AE3867C6731FEDF1B3F6BEF6DE19FFA9ED
-:10A4F000B870FBF705058D21F8DB2D9FE452FEE4D3
-:10A500002AE563592C3FE7B65989A6FBF757BAD716
-:10A51000F29BFC2CB10F51D387EF8BD60CC4F20504
-:10A52000933B15EF3F6D56DC53508FFB7E678EF8E3
-:10A53000F72496E72B9AF037A07DE04792E1E725D4
-:10A54000C588FC1525C067996739E2C78AF13A3496
-:10A55000526D6E86EBDA64620D68E7998B39EC9D7B
-:10A5600018172118E7875E9ED5F9302F25C8F78F79
-:10A57000C1BCD2F73EF068167E770B4BDC27B35890
-:10A58000F9BD83E87C4F5D7E21FF9E6D7C3FECB77B
-:10A59000249BEFA306487F4F11FD1A6276A4933DDA
-:10A5A0006D4FAFEAE25C364FBE8FA2E79706A16718
-:10A5B000DFC8744F89F41D8C3F0AFC6CFB6A9C8ACF
-:10A5C000E31658E35CFCBB902E15EF81BDF1F5E876
-:10A5D000986911F86C7FEF697FCC0FE38382608DFF
-:10A5E0002AFE4E8541CE6F190248EF0B3633C9F56E
-:10A5F000605C70C2A5FD0D3923FB79839AE4F83FB6
-:10A60000B4BF5FA7E079B3367E428220FD8FF0EFC2
-:10A61000695C899FF4FBF6C7F3B5F3929E4FF01C7B
-:10A62000B11A6FA3F3359B8E58D7A31FA9CFF71D7F
-:10A63000FE80EB71FDFC1B3F98948AFED7E6A137A4
-:10A64000A7A21C6F41054FDFEF5938C925C1B07E65
-:10A650001BEA7B26BEB355CDEB476970CD243C3F4A
-:10A66000B365186FFF49FE9127F17B605B6E13F5B0
-:10A67000BE4778BD06B3459386216C32103CA917BE
-:10A68000B487FE7EEAE93A8EFC199DEF3A81E59F98
-:10A690005076A01CD1D3F519C2C791C760DD477BA6
-:10A6A000B84E86C3893D5CA7C2E1CD6DF6A5C5163F
-:10A6B000BE7FACF1E1E1631384DDE1741FAFC5350A
-:10A6C000C55797E7FF77C1A76F0B7D7548D88F37C0
-:10A6D00085FDD88FF683E2616E3F1AC5BEF16E61CB
-:10A6E0003F768AB8371477B9857F3159C4C33C0E99
-:10A6F0002B185ACAE35EBB96E7CF30468A87C61549
-:10A70000C87EE2D87CD9AE8CEE9628F169795AAA37
-:10A710002E4ECED6C5C9B25D2931F6D7C5C98375CF
-:10A7200071B21CF716378FD6C5C913A4F6C7F31D2F
-:10A7300044D7A2E3B7EAE2E5E952BB101DE57D9BF1
-:10A7400010BD6644A4E396E2190FFEDFA263E4FDA8
-:10A750009AFFFFE8F80FCAA3CD20EDDFE8CB77849E
-:10A76000FD7F4BD88D83C20F3820F21CFB843FB78E
-:10A7700007E9D81DFD3AA7F0EBF8390E2D0FF28648
-:10A78000C8433588731C5BC4BEDB2691875A56FCD0
-:10A790003D3FC77191093ABE1B918E154ED9CF1B13
-:10A7A0009327D371942351E7F7C97EDE70BBECE7A2
-:10A7B000955A653A0E63FD757E9F4CC7A12D253ACB
-:10A7C000BF6FB4CE4EC9E738C02F78B45721DE4BE7
-:10A7D00090CF731406E5F31C7AFBAEDD57D4FC86EC
-:10A7E000363FC12BEF336F421B8AFB452966FEBD06
-:10A7F0000DA3A70BFA1D1ABEFCBDF839C42D9FDCB2
-:10A800004EF82C447B1EC17EFFA917B7FB7FEA657B
-:10A810006FBB1F19DD0FD39B3EEEFFC48FB5F373E3
-:10A82000552C88DF9FBA8CDFF4275CAFE62F19ED3B
-:10A83000350CFD08D562F0E1F777996AA573778743
-:10A84000DBF1A34EF5CAD4BEBFAA60BF9F887E9538
-:10A85000E237F9B9BC5EAECDBDF05E4FA9B305F3EA
-:10A86000E29B3F323B6B919FA3F87750F4FED6E119
-:10A870005EB9D49F863F3CFFFF0BB48FF8A158FA16
-:10A88000DEDEE73AFB090B867E5E88E6F091974FA5
-:10A890004DF2A585ECF527BD2E903DCDB57599817E
-:10A8A000F1B2B2D697C0F72B03245F7ABFAD5DFF3C
-:10A8B00057E7A79DCC7305116FDFA35D2EA47355D9
-:10A8C0002E63BFF6DF7F21DA7D17FF1E8C4BC5712B
-:10A8D000353C69F58704DD0F8BFEDAF0A2F1157EB9
-:10A8E0009F2621EC1EAC6EFE1ABE561ED91BC42339
-:10A8F0008CD7BA1E6D1D11F8C77D05BFFB7BA2AFBB
-:10A900008E7FD858A7B8A71BD9EF33093F329CFEDA
-:10A9100083695D7E6DFD6C783FBCFFA2DD5BE7FA6D
-:10A9200050BB339360AFB367821CDD7E54A5730EBA
-:10A930004CEC831BDBE859ACA09D318E505862581B
-:10A94000DE55BF9FA8CF1FE8CF9515377791E0EB75
-:10A95000CFCBE7CA5C177B5ED6AE94D986E8EC52C3
-:10A96000A9CE6E8DD1D9B5893ABB27E7C58DCCA8C4
-:10A970007D6748ECD72B0EFCFE8E916328BC5E7C75
-:10A980000788E37B793BF2DB767EB69783F0DE26A1
-:10A990001FEB9883D3CF27DD33516D1EA2F3A303A2
-:10A9A000343BE6A4B8D71C1844DFF3343BE5BFCFF3
-:10A9B000E0F75A3F2ECBC17B368CCA67BCF68FCBF3
-:10A9C000E83E4E32954F791DF47CAD378FCA27BDD6
-:10A9D0004E7AFE84B788CAC7BC2E2AEBBCE5543E2B
-:10A9E000E47553BBD5DEC904AFF27AA8CC02F706F2
-:10A9F000FFDE40968F3961C62C7B158C1786E74C9D
-:10AA00001FCC230C8F5D17DB2538BD26596A9F5A52
-:10AA1000E590EA533C79527DE7C94E09EEE82E9263
-:10AA2000DA2796BB24B883AB5C6A1FEB744B704C7F
-:10AA3000DE64A97D94C323D5EFB97E707CD365E431
-:10AA4000B9CEEB3A817858ED759FE0782A3FC1F195
-:10AA50003399CAB9BD3B107DEDC67A17DA6D7BBE5E
-:10AA60009DE1F976B395DFFBEE60B42B1DC2FAEFE2
-:10AA7000E082FEA4F9427F523CE7E7E789F3DC2756
-:10AA8000E4794F96DE0319243BA9F931C3D5B458B4
-:10AA90008CC71E34D9FFBD3FCCE381E12AC37B2B99
-:10AAA00047CA26525E04AF6CB2087AF40BE19FC627
-:10AAB000F4B652BC38FE0985E23B584905E61167F9
-:10AAC0001DCD7686FF3D28AD3CFC1BFEBDA1983D0B
-:10AAD000DB1C98171B5F3C2D312A2CFE1B1FF8B185
-:10AAE0002C85FAEB3B200AE6317EED34F38CFCD06A
-:10AAF000FAB476B39E90FDD110FFFBADC21FA775CF
-:10AB00006AFA69B57D3D3D5F9D77F97D9BB3625DD6
-:10AB10005F097FED0BE1AF9D127EF749E1777F2A58
-:10AB2000FCEEE3C2EFFE58F8DDC784DFFDA1F0D7ED
-:10AB30008E0A7FED3DE177AF147EF7EABCF5F4773E
-:10AB4000AD2E6C54987A99F3A57337C8EBAC5A279D
-:10AB5000EF1BCE7A42F6BB673E24FB6BD397CB7ECE
-:10AB6000F71D8B657FEDB61AD95F9B5225EBC75B4E
-:10AB70003CA5127CF364392F77935BDE37D4E8343D
-:10AB8000B15CD6939664D95F6B6FBD5B03A354FC35
-:10AB90003B2448CC5361F630EC7BF0D279C702BB42
-:10ABA000AB14F76B0A997B19EEE70C3504DFC7FD90
-:10ABB00026F6A14ADF816CC0370681BC5E1830766C
-:10ABC000BC23CCEEF864BC4E3D2EE7476EBD47F685
-:10ABD000832BE7C9F18CB95CF6835D69F27EEC44A6
-:10ABE0009DDD61C21E9AF9EFACCC7D793B648899FA
-:10ABF00047F795AED51E9999FEFC18B747346E9667
-:10AC0000544FF628AA0F3F273140DC53A88D1AF87D
-:10AC10000EEEDFEDF988DF2F00B407BBC1FBD733A1
-:10AC20008E6FB375247D3F6EA789DF1BD89D62733D
-:10AC30002E85AAEB2FF2FB01ACD548E7C73C786F15
-:10AC4000240BFB95CF8F15068DD2F932B3AE3E0D96
-:10AC50006DE265E7C3CFD1FDEFCD479CE3E8C3FAD2
-:10AC6000D0F988A6C8F70DDAFC381D9F6AFAA7202C
-:10AC7000C0FDA38276FDA3A9F49D31E3878CEED9B4
-:10AC80005B0C2D679EC3FB515FF23CEC3026C76D19
-:10AC9000378E95E3B6E1F6CBC76DA31C32BF8EC9E4
-:10ACA00093F5408553D60397F8354DFC1C627B7EA7
-:10ACB000CD4D7DB2B47B3A849FA89C7D317C1F939F
-:10ACC000F3CF10B1CE47CD6EBABFB23C9D119D8679
-:10ACD000D8F979C55ADCB7C1F37F1FF07B2F46E660
-:10ACE0004EEC83E5E911E2FCE25827F5D7CCE955B3
-:10ACF00004FF7ECEBAF47CA2256894BEBB61646179
-:10AD0000F485FA39C85F1D437CF47F675EE2FB0877
-:10AD10001A9FD912AEB07FE793FC40AD1C1674A900
-:10AD2000B88EFD76BE8FBA3F5813C4EF447E9FCCD9
-:10AD3000F314F7A74D30F2EFB6B86CC3812E23C4DD
-:10AD4000FA8BC43ED9162F0BA23FB7C96BA552DBB5
-:10AD5000FF5C99BC2811EDE6960C4F2A9E0BDCD2C5
-:10AD6000B1C372067A7AB3A9435AA47B048DA68133
-:10AD70006467B734A618D10F1D66B41BE97B52690E
-:10AD8000D355CCCF8EC4FB26490833DAA7DBE40DBC
-:10AD900004CBE85CA887CE11C13A4AD18F2DB34FBE
-:10ADA000A3BFF7D8F801C88503FDE30E53F1BD7DBD
-:10ADB0001DF9F96B8B9D9F6F1D91349BE855E0E465
-:10ADC000DFEF2B48B339FDD85D32FF8E4F15FCE322
-:10ADD00074E17602E45EFABECF40160623BD74F03D
-:10ADE000D37A3DA03B97B8F298383FD71479DFE685
-:10ADF00033E1576C117987E3C2AFF858F8154784EF
-:10AE00005FB15297077A5FF815FB441EE880C8E7E8
-:10AE10001D14F9BCB7845FA19DBFD6F822791573C4
-:10AE200058E2197B771AC773CA2AC55F0EEB289DB3
-:10AE3000C9E1E4C57C7FB4ABA7CE5D5280F526E7BF
-:10AE4000485847F2E4BAE1B88E94A92D744F69B21C
-:10AE5000C7EC7029783FE929BA17A5DD0BBB93A38E
-:10AE600086DD3E7304E9DF3B3DE2DCB1DA5C48FCA1
-:10AE7000F58489BE93A47D3F6EF24CF97B4AD3756D
-:10AE8000F8BD5D079B15AE47DED1E4A23FEB1F8EF8
-:10AE9000F714D136EA4E719E172F5D459097B50293
-:10AEA000EF1A5E1AAF1F1DCBD7C1F7432DA29FA388
-:10AEB000C5B7C6623F1FA4F1FE260879D0F7B75A7E
-:10AEC000EB4FDCA78916F47FB4E7E5CF9D1EF63281
-:10AED000E99CE961419FB67E4B1E34E1F7B4270738
-:10AEE0001E48477909DDAB71C5F2FB2B63FF3D13AB
-:10AEF000E8B45ADC43D0F4EACD427EF5E37DE0BD10
-:10AF0000FCFD9D0F4AA698F07BE837057EC5FF1E25
-:10AF1000B0B12639FCBCEF07383FD095F7DF743766
-:10AF2000FD1DC96006E707CB8D16077E67B06B9ADB
-:10AF30006B05E23139CD395CE447C99EFD3FEE81B6
-:10AF4000191B0080000000001F8B0800000000009B
-:10AF5000000BED7D0B7854D5B9E8DAF34E32810958
-:10AF6000049C604227E161AC04262FF260083B108C
-:10AF7000344524131221981026099068D11BAA3D4C
-:10AF8000D27B68B321218418799C6B3D50090EF85F
-:10AF900068CFB99E1AACD7D27EEA8D8AD6DEA312CC
-:10AFA0007A430B6DC5F092F66B7B2F5ED49ED3A3D4
-:10AFB0001FF7FFFFB5D6CCDE3B93800AADF634F920
-:10AFC00074B3F65E7BAD7FFD8FF53FD78E93C18F57
-:10AFD0008F314BC25E65423263CE62858D87F6A6A5
-:10AFE0009245694333185B5EDDBC98CD64EC12FE7C
-:10AFF000CC83E7CCA60D65E24BCC724981FF8799E3
-:10B00000CF361BEFE31DC37376291DFFDFCA82898C
-:10B01000703F78CB6F719C6AD6EAEF87FBDD79EAE7
-:10B02000040F8CCFEAEC67875C8C65C2EFA58CE8D7
-:10B030003CF25ACD6CF45C8EB76431F497E3339AEA
-:10B04000CFF07C6B17F339C742E323806E22BC2F0D
-:10B050009E6DB5855D385F77F05E97EA662C23D5E7
-:10B06000D2E004782AD236AF64B06E56E9F44CC30D
-:10B07000F7030BDFCECD836BE65A1F2E0FFB354354
-:10B08000BFE33776A6F96644E1DABA8D9584609E0F
-:10B09000AD697FE75D9B88FD3E6C0B613F3BABE993
-:10B0A00083F1BBE7FF2E35DD1DED7F7056E94CFFC8
-:10B0B0000418B01CFE97C2D8744728C33F63F87ABF
-:10B0C00019D3189B80F88F670CE038D3A0849D00BB
-:10B0D000574D0FE06F0C3EBFD082F71B7A9CBE6EBF
-:10B0E0000490A9EEDB609D6BF93259C3B48EFC7EEF
-:10B0F000B8AEED01BA61FFDDF6D3882F17FC227ED2
-:10B10000D35A6DA723F8C2FE4CD7C6794C6D07CE33
-:10B1100001F0DEE24F4C7EF726F8772ECBBD64E5DA
-:10B12000F447FCD688BE710D556319D2D30BC82CD9
-:10B130001ABEAE15FF6665FDE319310CCB8FDE3FFD
-:10B14000B17A4A7C08DF43BE7109BE9A453CE97377
-:10B15000CC46FA73BEAA167C05ACF912F19566D7F7
-:10B160002270C2BAD87DF628DF6518C66308EF32B0
-:10B170007D9BDE578F4D05F8570AFE5F1968E1F891
-:10B18000BA8FF3A30B6E8A71A2FC06E3044DFC4751
-:10B19000F49A28E084716E2F2BFB1F3F059C3DBE67
-:10B1A00033E336A4D3EDDFB4322BCC5705DDB05DED
-:10B1B00055A384C3D05E16B899E461997E7CB85FCC
-:10B1C0005D6D3FABA7CF3B1BA7D038ABCAF9386C3E
-:10B1D000A36E7E826F27E133C8D8168F8EDFDE4DD7
-:10B1E000675319E0F1A53DCDFBF0FD73BB9C0CF955
-:10B1F00088E1BBB391EE1CAFC7807791FFCF6F534F
-:10B20000C20700EEB37B9C04E7BB6B943043FA3378
-:10B21000CF93FD70FF017F12CD732E2EB4EF1BF084
-:10B22000BC716B825F83F5768D6BBD2708F39E4BF7
-:10B230000AD5E3388D5B6FB268D0BF2B5E7365E0D3
-:10B24000B88D56FF019862850D703A0EAEF0EFEBA7
-:10B25000E1DAD0A5A31FFC37E85788EF975858A824
-:10B26000CF3D9C7FDCD90ACD8F0877EAE05F926101
-:10B2700021788F3FE42478C764FB689C86C2383508
-:10B280006E0CD291A9B61C8027559D8C709E55409E
-:10B290003E81DFCEDCAE68881F66E374715C3F6977
-:10B2A0003FCAD33F89759E7DB06032F2F39924FE88
-:10B2B000FCB4373E8CEB3AEDE36DCDEB0E3F81B243
-:10B2C000610B652E4BE4EB50800F1A055C8D3E8BB5
-:10B2D0001A07F46D7C68F95791CE8DDE9EF5783DA6
-:10B2E00096A8252AF0FEF93D5686F8467CB872F0FD
-:10B2F0007971333E37E3E5037F06C183F81B0F788E
-:10B300007B77777B6208D6C13C2CE49818C543C391
-:10B31000CE1FDEAFCC2479D6B8BC733951986E3FBE
-:10B3200006FE5DE17368E5300E3B3C95F876858757
-:10B33000F3ADA368CB840CDECD1DE10F1FB57B7090
-:10B340007F6F14ED06E45BC0EB0A949799888F71C8
-:10B35000B3FBE17ECD6A23DF6E49DEFC6015AC7382
-:10B360004DA19D59E1F91AAFCD2037951B8C720480
-:10B37000EB36B4C767335A77D738C19F9D9C3F815E
-:10B38000D32707B3A27CD1EBB748BEF0D947C1BFE2
-:10B3900019AF5F343C9C467E057D7326CDB7AF88E0
-:10B3A000F402F00F878B5975F2D0D0E524BE67C048
-:10B3B0001E8827E04F476556945F247E1A766F22D9
-:10B3C0007E6C107CD7D803FC3346C747267CE19AB5
-:10B3D0006D729E29513EA3E731F8EC453F875BCA69
-:10B3E0005F030BD633EB70B99657A27331D0B36FAE
-:10B3F0005D8D16C0513492E31D25C56389DF053D7F
-:10B40000B8EAA11F17D22D51D2476383B89FBBC59D
-:10B4100043CF06E54419E81BABD8671DEA40B81FC7
-:10B42000EE276DB0D27DD42F36E88FD33224F8F3D7
-:10B43000054F4F87769C68BB055DAD56770AE22BBA
-:10B440009119ED9E71CCA44FFC9CAE52CFEEB4B3DB
-:10B4500014DC8FE3C4FEDEBC708A82FD762A0AD932
-:10B46000078E32231F584D7A605AB685D62FF1C009
-:10B4700084BE75B8F87AE3522C24171FA482425573
-:10B48000A2F87088F58FEBF7F5F5C3F37AAFCB1F11
-:10B49000463E621ED20FA53053BF6EDEEAC509AC30
-:10B4A0005F47E7859EF186F62DDEEB0DFDBFE29B43
-:10B4B00062787E6BE64D86E7B7F9730D6D07D3E9C9
-:10B4C00075847388E3DD21F0AC7B2EF5F200D2B1F8
-:10B4D0004AAC638723E40DC23E5CE55D4BFA7953C9
-:10B4E000C95DDE215887D3CBE5CF81F6248C1B378D
-:10B4F0006DB587EC08A19F0BE117E9D08E83A444BA
-:10B50000F9CC61C2B359FECCF6E4DA6CB07B12A080
-:10B51000F165F665B27BDCE362DA3766FB0D7484B5
-:10B5200005F9355ED06BA1D54D7A636B35D8730ABA
-:10B53000DA974BB9BD94F95F88AE41D18F6916B2E5
-:10B540005B9789F54BFBEBAD36C6FA6F007CCCE719
-:10B5500076D6B2C20BD57ABB5C5EBB453FD98E2F87
-:10B56000DCAFAA31F4694736DF371302FCF9321732
-:10B57000B3A11E92CFB764737DBC4CE8ED2520C704
-:10B58000C8B71578D5D9ADBB049FEE8AF02B1BC880
-:10B59000D1CBE9538A0DF110279AFB596857F6046D
-:10B5A000C4B3469DACEE2023F9FE08B03B9BEC18DB
-:10B5B000FA29CD5EDDFB75F447AA13FDE85B38D5AB
-:10B5C0008627BE0DF88BAF4EF05B7C517E27BF0304
-:10B5D000DAC9999CDF6B525D7E7AACA983536747C9
-:10B5E000EDB26A61DF4D60AD2407C3FC1817E7CBED
-:10B5F00091FD18BEFFC8F99C62FF67D68D7EE2BB45
-:10B6000020DFF72DF08B7C777B8D91AF968746E717
-:10B61000B31F640BFBBA8015109F85D6115F3845A8
-:10B620009F1D93815F389E883FE2257E85BD6DB763
-:10B63000B17E1BD0E908D21F8074DB5922AE734063
-:10B640007D85E4622093D9F57C100C58D5B08E8EA0
-:10B6500003452CDE03FA65C0CED27641BF31EAF253
-:10B66000451E58DF40A933B18136D5B0C16E3F02C7
-:10B67000E39E72B311ED7DB33C4C877FA01ED89A38
-:10B68000F6AE17E1D96A67B4DF3376B106E1DA2E98
-:10B69000DBDAEF6A4AB11D27DB1FEE56A1FF93F1FB
-:10B6A000BCFD61F6A5DD5A2AD18BF82A41D0234191
-:10B6B000DAEF337478053AB89273689F7199F06D38
-:10B6C000B6EBA59E30EFC3E6797F27F70341A7913C
-:10B6D000D63D0C5E60CD2F8F2E17EFA35CB8C05FF8
-:10B6E000D6CBC5F071FAC97EAF15EBB6243C9F16D8
-:10B6F0008AE14746F0BFCEFE7BBDBF00783EA4A0E6
-:10B70000DDABC2DBB319571D308E52F8DABFA3FE92
-:10B7100057766BE3108F56E8807ADECE42048F9422
-:10B72000D738E4032BE2BD9F9E83FE1D52A6E02086
-:10B73000751EE45F05FA5F42FC5CE93E59CEF5DA1E
-:10B740000AB1FF55E094305E45172B45FF3C6E4D26
-:10B75000D3816DA8E754275A1470FF4229C207CF3E
-:10B7600055275D2FA84837E06783DE79A9E44FBFEE
-:10B77000790CDEEB1CB0FA9D306E67E0C70CEDEE85
-:10B780008B33981F17DD811D01BEFA9067A1C38717
-:10B7900072D37FBC631A63A7DAD840997D38BC03A3
-:10B7A0002FC7397CB0D8909634F35918A7ABD0E99D
-:10B7B000417BEE9D8D5607D26960738386C83891B0
-:10B7C000A2F52970BFCB1662E8DF3B36B62F44FEE8
-:10B7D0003E61D7FCE3E0DAB559BB1BFD10D5B7B825
-:10B7E0003C1DE03FD0652B0FC7D89FD7E7707FE7A0
-:10B7F000AD97EEA4F51F4971F8E360DC218C6F0072
-:10B80000FD8ED877A6F971DC4DFF2D0DC73FB266CE
-:10B81000ABFF6580EBC826277A52ECC81E570D8E09
-:10B820007B646EB377AD6E7CD7F58E56BC3F30C966
-:10B83000E19842EB792FD18BEBD9983B1E79B3334A
-:10B84000C531B9099FAF6D66B85E8777A71DD7E789
-:10B85000B2B1DDB8BF7CC97BE1CD02F4977C96D94B
-:10B86000B740FFFFEA0FDD9A83FEC986530B512FC5
-:10B8700039CA92B6E0B553C029F72B49DFA19446E7
-:10B8800017EE639DAB9B781CC66B69203AA6588265
-:10B89000B81F7506D6B8A6CFE0F79BC70CC74B27D5
-:10B8A000C65D66219C6BBD6BB3B0DF876D21E83749
-:10B8B00034D759130B8FCD395C8FB9DA9B333600EF
-:10B8C000DC9D7B5C1EC44FA712DADD0078D5D2DD8B
-:10B8D000FE277CC3DFFB81784FF207D089E4707DBF
-:10B8E000CEA43D9A0DED554E47C08BCBAED39B07F2
-:10B8F0006795AECBD1ED93C3E64DE9247DD1A97018
-:10B90000B9FE414ECE1E0DC6C9F587EECB81F98E2C
-:10B910007481ACCDA2754E467B7F24F91912CF3BC2
-:10B9200037C1BA63C8FFD06A2BBB612CBF5E07D793
-:10B93000E99BAD939518F8199ADB948171AA23F0CD
-:10B94000DC02E30CED71F12BDCCF40FE1A813FF3FA
-:10B9500072B8BECF9A19ECC6F5B2197E8AF3BD99BA
-:10B960001DECA1366BF562FB0BC0BF8F7D4EF897C7
-:10B97000B149C0AFCFCCDCA3814BCA3CE30C76EB22
-:10B9800048FB67900DD9703FDE54F2A716F407BA52
-:10B99000B31C3EA72E2E28EDE825995CBF05A79D78
-:10B9A000CD839D9B55CD584BFE0DD8CB141FF4C0B5
-:10B9B0006FACF86010E3813A7DB8C4D496F6E9BF65
-:10B9C000E608FB45D8C9A9BE9DC1F9E87FBC61F571
-:10B9D00087016F69F802B42B172B61B4D73795FC38
-:10B9E00033D9F14CD8714B049CBF6C73B1B2692C44
-:10B9F000E2CFAD10F7135A4E3D8EFE7502C63F31B1
-:10BA00005EDBE2F451FC05890FF35789F549BF8EDF
-:10BA1000EC4858CF8A16110765BBB8BEB106F29143
-:10BA20001F601D06BF24C84C7EC86ABBC19FAB35D2
-:10BA3000D90F66BFA1CA6437EC40DB09ED425B9FBA
-:10BA40000BF9E9FD193947327CF458EB97F63DF4D0
-:10BA50000B150E6E19D2ED3F8342FFFCAC4D3D81BC
-:10BA6000FA684BF03117C6E1BB6D6117EA93EEF24D
-:10BA70007B1391EFBAEBACE5C86F036DE5D4EFAD86
-:10BA8000B6205D6DB95C6F54FAD58F703F91F65951
-:10BA90005579E9890E1D5D2BD5AF9CE8D0C15F516A
-:10BAA0005869684BFEAAB0B2D6BE18FB4B5EAE8C8E
-:10BAB000BBA8CC608F5A9FF28762EC17F21ACF6C4A
-:10BAC000EFEBF1382ED768F73E3063FED8D1EC1992
-:10BAD000B94E891FB97EF97C2478FF2347FA279F46
-:10BAE0000DDECC4F08AF194E09FF48FD2B70139B9C
-:10BAF00084F076ACD066201D4385B980E7AA326514
-:10BB00000BE6657E26E2953F0B24863580E7D54C13
-:10BB10001EFF8C6FE17E657C59E542DC9F3E29BDAE
-:10BB2000EF2854483EAB034A58857FDE2CFCD55F96
-:10BB30006632CA3F80BCBE9908ED5FCCB5F338329F
-:10BB40005317DF363BEAA7C6D7F1FCC40E07F3F75D
-:10BB5000E37B37BAFD9BE1FE32297F35C63C447555
-:10BB6000B5DDB0CF5498F20EF1A67D6679AEB0BBCC
-:10BB70006703DEA744F13E92FF31129F30DB853C24
-:10BB80008C8B99F1738F093F667FA7E279937C5C78
-:10BB9000A1DF73A02BEFD564B433CA14FF34A41F04
-:10BBA0003E82F7E2D583940ED921E548F87B325FD7
-:10BBB000B5636915F97B6FA13D3096F24D93315E07
-:10BBC0002DC7977E5EAE5FFD466EFEC8700C8AF78D
-:10BBD000B656C6B61306D14E98C5AFD7C175FAD2C0
-:10BBE0000569B1EC84C1226127C073B40F06F794D4
-:10BBF000F36B91D14E60E5B997C1CB265A6FDCB497
-:10BC0000BCB1B1E46E7056E8E1DC09D17642662B36
-:10BC10002BD3E1FDABD9EA3FE27A2B451C42CE079C
-:10BC2000FAFDB0DE0E33CF7728C7C3F15C3E9EF439
-:10BC300085BC5E8E7E364F2B433E7BC0AED6A0BD0C
-:10BC4000678E27FD3097DB895D196A0B3E67EE9C96
-:10BC5000CB8CBB49C6AB33B327F2F403C57D4CFE96
-:10BC6000A0F49FF6E3C3FCA85F68F370BF303EF515
-:10BC7000C2610F3C5A971B7A1EF135F74258B380C8
-:10BC8000DC39172B643F395319D93D57EC875D6177
-:10BC9000BF2E146AE0E7AD8D3C1E5F9A6DA3767CE3
-:10BCA000C87A80F605531C275E7D8FFCB02560079F
-:10BCB00088B80DD953C7853D1564ADE4EFB9ED6182
-:10BCC00017C62BCC719B9A544BFF74D0EB3585175C
-:10BCD000AA7D33E97D43DCA7C69771788278EE812F
-:10BCE000EB92208F032DC338108E5F1DEECAC03C2F
-:10BCF0009CDFE65719F7F3D0BE58DE747FD6C3BE7B
-:10BD0000AB170792F125692F4A7B06F44BD778A42D
-:10BD1000CB02C547BEBF294E648E0BC9B88C397E95
-:10BD2000648E177D9C9B4EF490F6978CFF7C946BF1
-:10BD3000B4C3AC3037F6EB2E822D15E4BBDBCED28C
-:10BD400076CEE0F11DB4978E94FEC483F68535CF90
-:10BD500014E7BCC2FDAD13F6A133B8AFBE126747FE
-:10BD60007B3BE80D513C7189629493C9797C9FF3C8
-:10BD7000E4B9F93C228FDCD9B641BEAFA1BE09A619
-:10BD80003AC2714A741C56987F45F2949CAD4ECAD3
-:10BD9000CB277F2415AFCC0FFE4816FA231ECEDF2B
-:10BDA0008513683D4C9DC0CEE8F3C602EE081C2EFC
-:10BDB000F05BB23EF9FC2988E7FCE83C97C3DB8ED8
-:10BDC00092629703E31140632BE72B4F247E9F8100
-:10BDD000719D753EBD5D518F798B5CB43B795E433F
-:10BDE000DED7C5CF6DC8BFF1A9213518635F5D955A
-:10BDF0006731E44F23F1F74C46F922398E8D7937BC
-:10BE0000911CA0AC4A78AC31E2F402DED5420E00BF
-:10BE1000E12E27B04CD34E2BE375095C4E643EC235
-:10BE200056142C4F87F5366D53286FCCB49AC368DF
-:10BE3000DFAF11CF1D22FE66CE23AD117918665DEE
-:10BE40004776DAEA878CF9B5C61E63DB6C97CB7848
-:10BE5000BF0D8044B8DB249D40C15B47C7C37E5AF9
-:10BE6000E75F291E241F2ECEFDAA17EB5A3AE342A4
-:10BE7000BB1B30AFDDEBA27808F990282FFDF00B4B
-:10BE8000EBD9B6B7F0315CCFF63C2B977B85D7B9B1
-:10BE90001C4E79D835A4E3B7ED82CF66E5F978DC9E
-:10BEA00005F72550892C3599E448D6B51C49E1762B
-:10BEB000A523C0EDC6A7A6BEBC94E75D797D4B6601
-:10BEC000205ADF520AF8C912F8C99CB6DADF0FD738
-:10BED000AC00AF4B9AF1ACD15FBD35D36857669AD1
-:10BEE000FD5553FB405EECBA96689E4DC4DD05FCE3
-:10BEF00066B9FA5E1BCFB7FC33F8AD787DAACD43A7
-:10BF0000D7EFB779E9DAD7E6233BED99B64CBA4AD1
-:10BF1000BC3F600FD6635E4BC621657CBC3F8FFB88
-:10BF20006F2CC0E1A8106B59684D4D443C1F0D703B
-:10BF3000BB70A4FDA5AADC1807BD3D68CCEF2DAFF2
-:10BF400031E6F7EE9BA9BE9407F024CCF4DA43BAAD
-:10BF50007CD41AB1FE1D0FF37C931CFFE83739DD4A
-:10BF600065FB9C58FFCF045F24BC9C62F701B12A9B
-:10BF70001FAABC19E3F6CC937345F6E02F855C2627
-:10BF80006CF6D8312E54D9BFC281E3ACD90DE3B8D9
-:10BF9000AF7C9CAD6913D38CF985AFDD81701C8DAE
-:10BFA000E4175AEFC0FCC251915FF843DEBDDF4198
-:10BFB0003F6B569E7A1AF5862B4F3D83F8F883D057
-:10BFC0009BD03EA76FC3CFEB4913478DE3FF212FD3
-:10BFD0007F781CDFBA40698D55D7F2A19017D05BEE
-:10BFE00017711EE68AC4D13EE06DAE8FE2F2397E53
-:10BFF000DA7FC95A709CF61FB3966762D8F32C5F3C
-:10C000009171B98F490F7AA51E0C5E8A359ED5595C
-:10C010003919F17DCECEEB62CCE3C5E53B247CCE75
-:10C020007C7C3F35025F5C7E7E74BC1D808301A4F6
-:10C0300093CD9348794D7637E53F251F25D47B6E08
-:10C04000C3BA05702C19EE2F09CF796ECBC338CE49
-:10C05000CFA7F89F6023D3F5B782BFCE0BF93A87FD
-:10C06000F205727446C8D729942FB89E14F2F5EBE6
-:10C07000363FB57FD95648EDE36D2AB57FDE564E83
-:10C08000D7C1B620DDFF595B0DB53BDB42743D5A8D
-:10C09000F6D8CDB8EF7CF03D85F4F148F0DCF5B88A
-:10C0A000D5203F2D7B130CF2B6F6A1F186F6EA1EE1
-:10C0B00063FEBCB1638AA1BD6A83317FBEB2D598ED
-:10C0C0003FAF6D9963986F456881499E6F35C97B15
-:10C0D00095A1BD309FDB8955E5B586F79CDE4643CB
-:10C0E000BF84A52C148BFEB7E5F3B8C9CB25C56377
-:10C0F000874689733836DCFA36DA2791B62DC4D0F4
-:10C100009E776C5842F71F88E3FB9DF9BD26C1AFAF
-:10C110009D65AB83F319DA458BAC7ABBE79E59A1D9
-:10C12000E5F93A7FD0E1E5FED8C5A9D5562FF0D183
-:10C13000D2B2F75EBD0EF82834C0C8EF51C1DCF3AF
-:10C14000821D5CD8BA6BC175D0AED6D61BFCC7E2D7
-:10C150009683AF80F8B240D9D1F664783F3F3BD4A4
-:10C1600084E397782FBC82EFCF5F9C6D43367F20AE
-:10C1700089913D7A2ECD113E10831FEE1770CBFCB6
-:10C18000D527DDA7CD79FA8C4C568A71E48CCC0B7F
-:10C19000A5A8D7A0AD62FEEBE0ACD0FD081FDC5730
-:10C1A000514F3E90B53603F79391F2468FE41BE36F
-:10C1B0000912AE1D251C9EA322BF3064CA2FE8E2DF
-:10C1C00009EDF9A3C413CE89F786BE1D3B9E704EC0
-:10C1D000E41DCEC9BCC3C35531F30EE7168A7802FD
-:10C1E0003CC738C2B93D35FCBA70F4BC835C1FEC67
-:10C1F000477BF20D790761E78BB8F9E02C752F3E8C
-:10C20000FF6AB6DA8BD73F66A9FB108F4775F94FE7
-:10C21000CF445DFEB3EC2786FCE7A19CD093F93CAC
-:10C220006FCDD0AF6AD7D850DC14CCC706EF89C524
-:10C23000C7CFE4CBF862FF67CACFEAF2A8964B37C4
-:10C24000B12BCE035C71BF425E9762B66F121023B2
-:10C25000E3A276DFD379A19F20DE3A929EF3F1FA32
-:10C260002B4B74FF40E537823D649E4F8E87FA0A60
-:10C27000F5D620480CEE33DB932ED4A19F724CD020
-:10C28000D37C3D9E2FE8C93CC948DFA7F382BF207D
-:10C29000FDF36C9F8FEADAC4FD2B85E34947F06D0F
-:10C2A000B4633B1BADBE03DC6EA7B8C50D81A470A3
-:10C2B000B72E1F7C11F7CB7C8C3F0E4D7500BDDB7C
-:10C2C00043AFB8B11EFC9DBD36AC8861DF4DD4ECE8
-:10C2D00048FF9A4CBEBFCDF786BE34348A9C033FDC
-:10C2E0008CB778090E8BA590CFCAAF9A825773FF8F
-:10C2F00081BDEF4FF0C178DFEDE5F9AF1B7A57BB99
-:10C300001A75E3DF305BEC97C83379989F54C258B5
-:10C31000A85E1378EFCD02CCAFF82C14E77867E372
-:10C3200007C79663DC51B552DCF19D8D17A97DDC02
-:10C3300067C945F2BDE3FD7FC7B0FF0DDF5C3391F8
-:10C34000FB2D1C1FAB36E63ED99D4E7931C76C984C
-:10C35000E7B87A3171CA8C68FE6C95C282B1EC98EC
-:10C36000C9B339FF2F525BEF40B816859C0CEB9C8C
-:10C370008F376C7D1BDBDF2D557C56F4EB33F93C9E
-:10C38000357B6D544F0BF85987ED37FC090CE79D51
-:10C390001F3A68C3FE1F6629EC3AE52AE255BD380C
-:10C3A00001E5F01DE4BF18F05F94F22BE468BA0DCC
-:10C3B000E43E07F17FD8AD8F534A7ED2F2D4CCD978
-:10C3C00014F70BB504C9CE5D7A19FB7433AFD3FEF5
-:10C3D000DE051BE61EE21F6F9D84F1A561708E00D5
-:10C3E0005F91A0FB1FF3791CF3865EDB9B5F417EB0
-:10C3F000DE68A73A845979C139B3F5FED655DE37E0
-:10C4000064FDDA40213F8F00E634CD03F066DA00A8
-:10C410008E3825DEAF71B9A2F89C4BEC7FD04F1D52
-:10C420000BFD56B1BE7E8CF3319BBAD38AF1C32289
-:10C430003BF9C7CB57DA13912ED17C99DFE06F9887
-:10C44000AF67303F46751A2EBA0E809F8DF912FCE9
-:10C45000014B1C1EDA84DDEF7F449D0A722FEA4AED
-:10C46000EF3F74EB2358577ACCC2DB771DBAF5FA4D
-:10C47000CDB0A433935B8FDD0EEBEADEA5F837F980
-:10C48000F0BA7F77239EAFD8A0F8CBA16B7DFF8D4C
-:10C49000F598626CEE72928D7F7ADBFD3723BF5E7A
-:10C4A000F4320FF2F3F214CECF4D832C6C81F62DC3
-:10C4B0003DBB28EF191CB451DD9ACCCB9E4CE179E1
-:10C4C000D97F68EB27B8D1AF5D389BBBD8F833CEA6
-:10C4D0000F70601CB5CC46F9D2F1CCD389FB4BBCB4
-:10C4E0009A5ECAED698F83F23C8B19FB0EC67936D2
-:10C4F00070BFB948D445CA3C163BCBFDDB16F845A6
-:10C500007D32BEDCE81FE79BFC5FA9DFCCF916E0BB
-:10C510007F0DEF77CE4E34C4EB468ADBCBEBB360B6
-:10C5200047E0FA9E1379DC4360AF633EF3C760AF28
-:10C53000E3F579B0D7F1FE8B60AFE3B51FEC75BCC6
-:10C54000BE0CF63A5E0F83BD8ED7D7C05EC7EBEB4D
-:10C5500060AFE37BFF0BEC75BCBE01F63ADE7F7685
-:10C560002EDFFF3AA739C29B01DE4E3BFB35F29529
-:10C57000562AF2C2224FB62D693AEDEFAE8F80CB2C
-:10C58000C19E1A504277213DB43417F51B48BCF0C8
-:10C590001FFF17DBDBD2C90F6136DFA12178AFE3C4
-:10C5A0001BE9FE6E68763918E9FB53479947017B12
-:10C5B000E6FCEDCA4C8CA39EB94DE9C3F6C06D0AEA
-:10C5C000D913D351F472A2FB68F1FBBE03B89FB537
-:10C5D0002732C18F4FF6AAC07FE71136E4572DA945
-:10C5E0001EFDD2794ED91E538FCF1B3728C24F1D47
-:10C5F000B74F85356C53E4FBA9BDD8BF43BE2FDAD6
-:10C600008316F9FEBABDE8271F8BCCB7BA564D8505
-:10C6100076867CBEB60EC73F15A9AB9BB712DF1F4F
-:10C62000888C3FBB17DF3F9326C7BFB396DA76D916
-:10C63000FEA795D49EC0FBCF7AE1BA47B16EE56AFA
-:10C640008FD71EE2FB1FEC63AA3E9FB3A9D84AFB1B
-:10C650009EAE1E9CE26E32CF6F49704FBB9278A99E
-:10C660002ECF4FF15298CF8E72F6F5D2A4C9A8778B
-:10C670004FA5F963FA29E5C591FA5663FC5455783C
-:10C68000BDBD8785B03E3E5EDC8FEFE175F48E4C1C
-:10C69000DBB03AFA2B8927CABA07194FAC593D7A51
-:10C6A0003CB1A6D4184F5C259E8F144F5C658A2739
-:10C6B000AED868CA43843E593CB18EF5DBD10F63D6
-:10C6C000AA427254E7E97B7522FAFB677D144F6436
-:10C6D000BED729DE2ACF4FE0FF2DB3F1BC196F9FE3
-:10C6E000BF5BF1A25FD17DB73211AF27EF5626A114
-:10C6F0007C9DBD5BF1A0BC7D589041F8CFFF8DFFC4
-:10C70000751FEEB75E8B9FA323F802A62A82AB9318
-:10C710007CDD30CEA9BB9571F8FECAFBD21DC80FD7
-:10C7200060770A7EB4EE45FEB426288676DE64C9BC
-:10C730008FE147503EE68D176D6DF95E949F5287ED
-:10C740007C7F33B5578414D1FFEB7B51BF1C9B2FEB
-:10C75000FB4FACC3E7B74F91E31D20799C9720DBDB
-:10C76000BB49FEBA22E37DFF11ECFF0BD490D4DE6F
-:10C77000B917E5BDB452E8336D268DDF5927C7FFE1
-:10C780005A2FC6AD6A2DF2FDC524FF4D4CB6C17EB1
-:10C7900087F6AFC4FE70D70F3FAEC5B8D61DF2B94D
-:10C7A000F6F123084F9D68AF2BF897BDF8FCAF7EDC
-:10C7B0007D7FE6F9CCED956C60E1757951B930EF8C
-:10C7C0002B0D45DCDF296C3988EA8BD5B5EEB7A295
-:10C7D0003C46F36A29D541E46F9795EAE7825E7695
-:10C7E00073AC7AFE4B057C9C8D05579A5F8B3DCED2
-:10C7F000DA22BECF75CD6731FDDC83B3E66F2DC87D
-:10C800008FDA0D68223AE05A02570B5C3FCE0A3DA0
-:10C8100088CF91D618879171ED25A29E7853C9775C
-:10C8200082F3F1FC5291DD2FC2E103FA7CAF4D9C03
-:10C8300073AD9DCFEBBC42DD4EF2D7AABB441D8940
-:10C84000D54DF908DBF58EFD943713F9D410D61DBC
-:10C8500067505DD7A8E73B6CA63C6A97586F69F6AE
-:10C86000FB94A76E7A83D70BCB3C76BD80AB09F5E2
-:10C8700032C0DDB85A095BE0BD46543C98D7CD6460
-:10C88000615F7A34AFBCA2CCD6EFC07361E27C06A4
-:10C8900013F670241F5EEDEBC3FA189B1AE757716D
-:10C8A0001ED61FA4BA38CC17A5B348FE59EA91CAC0
-:10C8B000E6EBEEC63CB54E6F519E3A9E0DD31BA4DF
-:10C8C0001722754D228F1EA9CF117A40E6A71BC4EF
-:10C8D000BA9645F4C0E22568E7C63F20F2D422FFAD
-:10C8E0002CF3D495A6736D8D810563289EEBB7F963
-:10C8F000A9AC26D5789E29DE44879B8AF9B94A9946
-:10C90000A73E5A60CC373F6067A477BB328C7CB7B8
-:10C91000A098E743FCC5320E19DF1F87F6377391E5
-:10C920001FD28DF19CB1DC1FA1C35CA6B88E6D43F4
-:10C930002DC51FF1B9027CA864BEF6EFA897B15DC2
-:10C940000CFD6D78BE05E9E1B6903F2AE33F68A68D
-:10C950002CCCA138D079E467DB867A1A479E677FB2
-:10C96000323EB67C5C2C9079D63E3BF6ABF5BE767B
-:10C970001CE7FBCC7120E18745EC181FAF7F995471
-:10C98000E09376899D9FF763F6A559142FF9B800B7
-:10C99000EFCFE8F3211C725FBAA3E839DAC7AE3CE7
-:10C9A0000FCEDF5BFBA3976AB5E491F3183705223E
-:10C9B000790737A6C059B2CC3BA889D88EEA595816
-:10C9C00048A141CFD6B5FC27D0B351BB3FA30E9FA2
-:10C9D0007FD1E0077EBAA590EAA778FCED8B06FF31
-:10C9E0001BF96A3DF2E1B59EE7C5FCE03A9C67ABF6
-:10C9F000A2D6B8E95C0CF32BA3E70BEFC5FEE67CEF
-:10CA0000E1E5E2187F8B5B8C1EB7E82D34E6F53F3D
-:10CA10002F718B7F04DCE13E09F27490E429C0E5BC
-:10CA2000E9AF7DFF83F51EC1F56E55FAC2F1D6ABB5
-:10CA30001F37783A2FF46B94A3E9A9AE06B4676068
-:10CA40001E1FCA5F341E0270171AE2217B5BAE41C3
-:10CA50003C04D6F97BD27F659CAE7F05747314E1EC
-:10CA60007A546E47FC15F26506ADAF8FAFEF2F30ED
-:10CA70007F4E11EE034F717E89E287DB493AFCD489
-:10CA8000B5FC65F07333C17788C3F705A0671DD186
-:10CA9000D3CFE1BD9CFFBDBE80FB17F05E13BD97F9
-:10CAA000C7F9E05E6157835FBEE03A5FD42F4FCE97
-:10CAB000569B8BB89D7B6791A1CE54BDAB6874BF6C
-:10CAC000F99EA2D1FDE6FBF0FD2F8ADFBCBF80DB23
-:10CAD000FBD1BC4DD8C53FBED142F9E57AD1B77B79
-:10CAE00043D5A21BB1AE06F08F6D27AEC7AA5B4F30
-:10CAF0009A8DFBDBA6F36AF27B07725D366BDDD89D
-:10CB00007E5F149F6F8D6975E079A86635A913CF94
-:10CB1000DD2EE8788FEA061DAAD3877EE197BCBE9A
-:10CB20004ECCCB56A97CFD8E160F9DEF93E7DDE42E
-:10CB30003994E6FE1B5F73E0B939F05F5260FC8AFE
-:10CB400032FB69FDBA9DA6732936537BC3AFD3B7B9
-:10CB50001FD6F57FAAC8544F687DAA9CBED3D1A129
-:10CB600078449D2FD565348B313695DCB108E39739
-:10CB700060C7F9100F0B76EE1AC07C9AA3C34AB9AE
-:10CB8000F33FB6F9B61F06918AEBB552BCE1830DAF
-:10CB90000AFFDEC7629EC76F12797C668A33C87847
-:10CBA000B8C463DC83BCFEC35178AA8CCE37D6AD43
-:10CBB00019C8E7BC43F1061B878CC9EF6F540ABE46
-:10CBC000AA0FBCD781EF2DF35A0CF543E678848D7C
-:10CBD00099EBE4791DA74DE5759CB64C5E271FCFF8
-:10CBE00054FA5E47FC962AA267A5CAEB38C14812E0
-:10CBF000DFDDE274A908ACA73A1F731CC159688C29
-:10CC00004398F9D24C8F93267A3C61E3E7933A0735
-:10CC1000AD7E0D6E773EB4BA0BE3E7DA43168A6356
-:10CC20009C95F5210024C6F397B3087EC95EEE6C8F
-:10CC3000E5F502922ECB77F2BA11EA6588DBA732CE
-:10CC4000FD773C968BB8C21DAC8FCE3BAC6443766F
-:10CC5000948355184AB7623CC647D726A66D6184AF
-:10CC6000BF50573ACCF744EB783FC6B5FB27D99372
-:10CC7000DECDE47E442CFB359AAFB5B1777571FEFD
-:10CC8000BFC5B53E695CCBAAD1F952AF233C4DB9C3
-:10CC90007C5CEB88C84BC8B8D6D99DE27B1BE2BC54
-:10CCA000C580BD75F24E37F6F3919E19B377F92220
-:10CCB000E48323BD3FF188F3AF1B278EFE5D88829E
-:10CCC000E218F5A43F2F60345E67FA109DA33E6919
-:10CCD00037D6E5CAEBED0159BF19528B75F631F322
-:10CCE00044EA38E717D346C0CF6BCB38D3BADCD091
-:10CCF0002D787FEE05C10F8B95B002EBAD702BAF99
-:10CD00002ABEE8FCCC5C47FFB77C18C11D87F80140
-:10CD10003C0EC4F1BADA817456F34C0CFADC389745
-:10CD2000EBD181ECD8F493CFC13EB9BF7802F79F25
-:10CD3000C6F0B8C2EF1DA3C715BE551C23AE20E92F
-:10CD40007B709EAA71BAF3B62727D489FDDB4341D5
-:10CD5000AAD739DF63F56D42FCF7B7BE5508ED255C
-:10CD6000DFB27A301F7EADF37C930AD289AF2E9763
-:10CD7000E7FB50E0F764A4AEFB5B944FEF8EF867DF
-:10CD8000DC7EAC1DA76BC3965C3CC8FBBF585CBC8B
-:10CD90000FCFD98F646FDE1758D58BFE9CB437A1A7
-:10CDA000BD12DBF27D9084C9A5A0349B5A643EB1CC
-:10CDB00082F2F5D1F956EC43FBF8ACDD38BEB4573E
-:10CDC000078ACBF7A1BD1A8CCC5FBE0FEDD953A655
-:10CDD000FEF47D4A18EFD7C565D4BF91C9F1CBEAFF
-:10CDE000B17F24AEC8D6933F7ACC21DBF7D4A33DE4
-:10CDF000BE3D9D8F371858DFAB7D0EE1B9D6E37F7E
-:10CE0000D2FE23D9FD27EDBC7E50033BED89742C67
-:10CE1000A3ECB372E1531D78C6AE5855683FFA9340
-:10CE2000888307DD16E1E76CEC45BFA7B644F2E95D
-:10CE3000E354073212DFAD7FFE478F68FA756A3F11
-:10CE4000AA35C0ADB5529D8884FB04F68775D4DE43
-:10CE500073A717E1AC95F10DD6D98BEBEB4C92EFA4
-:10CE6000DDB40FDB23CDBBE6F99DBD88EFDAC83C0E
-:10CE7000DFA6F76BE3E578BDD48EE2F300C54BA2E5
-:10CE800070B518E07A2D70A017E10A7AC25B707F46
-:10CE9000087A19EDC777B46CA2FAEE881C693BD208
-:10CEA0004A510EBD9136C757448EEE2739BADA7013
-:10CEB000C17E9A3E07F7BF4CEE275EFD75C33E89E3
-:10CEC000EBEEE17A48F2519D478E03F8077DD2E4FC
-:10CED00093EDAFD5B7B8AFC6BCDCDF0DFE9E917D3C
-:10CEE0002BE58969AB4DF27365E3B5BBBF4675149D
-:10CEF000CDA0D763D563DF5B10D14FB7123E0BA532
-:10CF0000FFCCA4DD5181F72376872F627754CE8939
-:10CF1000617774629DD52CAAE722BDA9C213AFAE7A
-:10CF20000E68C65C9E076C177592799BD95ABDBF77
-:10CF3000FDFD79DC9F7F6A1E874B7EDFF6CC3A854C
-:10CF4000EAC4DA7BA68CC1F36EA7537DDB51AF0D2B
-:10CF5000A45BE83B0527C5F73507BEE14CBB0FEEE8
-:10CF60001F4F73F9515F1D4FDA49DF513BEDB70A8F
-:10CF7000FE3CF40EEEF3BAB8A2867A45C60DEF9EDB
-:10CF8000B3F55194A3133EDE2E9CF7E377509E59E0
-:10CF9000A6F97C6780EC18C7CDB08DE0BBE2FB9CA6
-:10CFA000C5E279E5B61F7CBB0AC710F68BD49FE6B5
-:10CFB000F39EF863D7DB5F5D566E7F79793F2F1B59
-:10CFC000DA74C982E3F2B66B84EFC2D6C8F3CB261B
-:10CFD0007BAAD2743E9989EFA04A7BBC38B9D18F25
-:10CFE0007E5CF13AA37D74BAEB959E42F46BFD56DC
-:10CFF0000F6E93B7661A9F4B3B6C51D763E48F82D9
-:10D000005D689847D6DFDECAFA3AE85CB8EFF5C348
-:10D01000D68951BFA5DD5349764A7326B4603DC712
-:10D02000FEBE34311FED831E2B7E1196D7DEEBD66C
-:10D0300001FDEC9664DAA7FD8AA2AF0BDAF228CAEA
-:10D0400045B42E88B7A3F1F8BF7FD45047C7BEB60A
-:10D05000CA10E7D46A1FA53A3E1917D3AAE9F919ED
-:10D060009B8883694D8FE27E16899369BFEA35C438
-:10D07000C9B4203D0F46F6BF5DFBB0BDCC23E0D167
-:10D080004EF622BFB5AB5C9FBC34C77D52B37DF278
-:10D09000FE209FFF730EC6B7827CBF333F2F1E0C4E
-:10D0A000B78F11761DD68B9BE57C5C80D7DF95A969
-:10D0B000D91D137C3C7EE504FAA82BAD2B316E10F4
-:10D0C000AD5729A2EFA4358D505FB224C0E5F7E833
-:10D0D0001CB7C12F37D7A934893A9591C6B9B38403
-:10D0E000E7D907144F35D7CB56867AB974D714379A
-:10D0F000E6A664BF9B4BF83EF071967A12D76F8E0E
-:10D10000A79DC5781AC9198F7B2C15BC63DBC9BFD5
-:10D11000572FBF677226C9EDDF0CF797F688784561
-:10D12000F9678B9FBD37C7784E7FA4FA87D212BEAE
-:10D130009F1589F57ED6FA8727E35515F135047DCD
-:10D14000313E38AC1E42D439C83A88B1810C5EB742
-:10D15000C1783D44BBD64AF8BBEAE75CC4FE0F7C0D
-:10D160009A1C403EADE17A44F2D94FE7F838FFFD12
-:10D17000C64FFC27F90EFA4F0AA01EA9E6FD8B7FC9
-:10D18000C3BF7B21ED8B718133BD9BA6921EF2053F
-:10D19000F4FEAF3B722E322310430F1D5DA04E0DE7
-:10D1A000E8FC23783F33901FF3FD2F13BCA6F7B3A1
-:10D1B0006606B3E8FDC8794E7566E06F7510A03D50
-:10D1C000CC75277CBF30D79D487BF0CE92DFAFC4B3
-:10D1D000BA934BF3D5651CCF1CBF11BB7288DB39EA
-:10D1E000517B3287F6C36B602F36133D453DCD35FD
-:10D1F00018FF5EFDF8D27E82FB7FA7BFFF79F3DFC9
-:10D2000000BE6E824FE44D3EC5FBFF40EF8B7CCDF0
-:10D210009F01DE30F191B0FB3F87F87CF6730EDFA3
-:10D22000EB44AFC59CDE657398DCB7FF35361F5CF9
-:10D2300031FFFF6F7A5FE4CD75E3FE5C3FDF48FEB0
-:10D2400039F4FB15E16DF130F93919D0E5E347798F
-:10D25000FF8C7E7EDDFBEFEAF9F32AC8F9053D7D00
-:10D26000AFC13EF2118D3F958FFFBBE2C83A2EE968
-:10D27000EFFF2D4E76593E9F3617F1D5CAF9E90AD0
-:10D28000ECEB9BE6F2FA96108FCF6A927F678AFBEF
-:10D2900043789E74F91C26BE8F12CCC6FB2AE3FE8F
-:10D2A0006DC41FD17AF719FD1118688641CFEFD3ED
-:10D2B000FB1BE5739FD88774B72EE0FDE7BE306E89
-:10D2C00015E2DFDC067B64DE5C635DA68AEDCB8D58
-:10D2D0008BF97F7ACF94FFD73D5F44CFA3F50B64E2
-:10D2E000BF82DDE672028D7F51674D6E8476B5F0A8
-:10D2F000DBC1FE8879AEBB3A1AE7AE9EABABC7186E
-:10D300000C5AE97C60C44E61EE4711FF113B4AFBA9
-:10D31000FE3EE3B98D8314E72A11F46D7EE1D97ADC
-:10D3200001E72AC4374B16EBB87CFF35D4DFCBFBC3
-:10D33000C7787E273D4FE57032F7EB67ADBA7C18B2
-:10D340004A9A05F3BCF82F1FC06FBF7D6E32D82BF1
-:10D350002F77293E2BB41BF74A7E7A81E44157F799
-:10D3600041F2B742F0FBD6170ED7233FAF785FC22A
-:10D37000EBE4EB8FD4311DA6F59F10F188092F4205
-:10D380007FCEBFDF24F87C1CBE6B30FE36A213E3D9
-:10D39000F8A9619A7DE2287516BB04FDE1BD9D04E4
-:10D3A000978BC3551352C85E0FAE06890638EA073D
-:10D3B00059CC38D3EEB90EB98FEDA679DDC28FF511
-:10D3C000C73E2FBB2FCA4FFBA8BF87CFE702FD8FF9
-:10D3D000ED40E8E802FC0E448DF8DE784D998DBEF4
-:10D3E000B750537861A98883507E53E6C14B1F9C88
-:10D3F0004AF9CDF8B238EE2FBA8C7FC722D8E4A410
-:10D40000EFC9C9EFD6CABA8C4A66FCBE5C8CFC96E2
-:10D4100021DE22E32291EFC95953C9BF753C2AFE90
-:10D42000FE93E9FB71F11B18C5B79C1DFC1CB839B4
-:10D430004FD5B0B1F5AD22ACFBB0D9292F6BCE677B
-:10D440009AFF1EC63C1753C7E4503DCA6B73F3A343
-:10D450007528E7F74E71A31C9AFDE7F323F9CF7BFC
-:10D460008DFEF380F49FD5ABE33F9F986BF49F1F35
-:10D47000CF0DFE8AF8CAA6D2FEF67249F1528C236D
-:10D480005C147514A71E4A5E82F128AD879F573839
-:10D490002DF2FC32DF7FAA88B93D78DDE2247C9E44
-:10D4A0005A9314C62D784C47F362FCAEA0F4A31136
-:10D4B000F318FFAA10EB34FBDBF18540CF5924664B
-:10D4C000E4679FF278282F50D125BE2F21EA05A4CA
-:10D4D0009F5D21CEF13795F173D518B1437E90DF72
-:10D4E0000FAC107EB8F4C7FB7FCA147D1DC052E696
-:10D4F00027FEAD06C6C0EB32F13DC51A0FDB8240F8
-:10D50000FD312BC44A102F7B399FB0ED36FA3B57C3
-:10D51000A77A76D1BE3AD2390677893CC7A0517E28
-:10D52000F61AF8F9490497D83FAE60BFB98EFADB16
-:10D53000B81C6FC3F3BFF9D1EF4AC873F3DB93781C
-:10D540001C654609DF6FCC57F9DD884FAA3F407F45
-:10D55000DE5082EF47FDF94C84E70AF4E74C825B2A
-:10D560007CB76232E681F8FAB34B783ED73786272C
-:10D5700071BB1CA3D70114968C92CF6597AF235033
-:10D5800063BDFFA1B0B3D7E5861696F07C3FF1AD41
-:10D5900039DF2FFB1DC3F8548CFD76838853950229
-:10D5A0008B5A72869FE7FF459B7A126DBC636DE5CF
-:10D5B000743D6ED312B17EEB2D719E1F0C2DAA67A8
-:10D5C00092755172DC9ABAD2936775FB59C5C2C77E
-:10D5D000A9CEAC3DF3C0EB0AC0795AD47B0D24FA36
-:10D5E000689FD38EF2EF4B2DABFECAC9B3BAFDC311
-:10D5F0000C2FD6456920EAEB4BF877CB5E2975F600
-:10D60000CFCBC3EF3571395CDD738ACEC3D46F687D
-:10D6100060A12CAA9BB2217DDF9EC3BFBF50516881
-:10D62000659A0EAEE46CF5AE121EF759477C12AD4A
-:10D630000BBC1BDBA576750CFEFD49199F94F98286
-:10D640009B5FFC3F94771B4862347FD0CBC29877B6
-:10D650005FA0AE770C61DEC5EBA3F8C8DA121FCD70
-:10D66000DBD8B59FE0890FBC47F0806DDD8FF58377
-:10D67000667C4BB9E814F8D6AD9BF03D92FC562C75
-:10D68000B425227EDF427A41BF07C53E70C476C111
-:10D69000ED8941F7C87B85A5067C3BBDE506BAB59B
-:10D6A000ABF78EC1F5483A378A67E7BBAC6F221DEE
-:10D6B000DF073A32A263EC3A88A348AF1B806F4C75
-:10D6C000F4AAEFE0DFBDAEEF28A5EFC5D5177EC504
-:10D6D00091427900A50FCF4B36953530B4A71D6A1E
-:10D6E000127DDF4ED26F6919D04F072FC8E3632434
-:10D6F000A7C2EEFC14F1F5FF5EA2B383AF75FC1F69
-:10D70000E6FB51490CBBFCCF957F18FE3D1FBEEFD9
-:10D710009E12FC62BECA7D77C4FA662DB8AAE55394
-:10D72000C021E506E5769382F5938A1DF92C88F2EF
-:10D730008BE7D70A7FBB05F3A1CD5ED6877BE13EA1
-:10D740009423C09BA33CDD81F2D3B8379DF802FD42
-:10D750007FC2A7D8A7DFC47D5AF8FF74BF85F3C581
-:10D760005F3AEF03F0FC1BC15327CE177CCEF25279
-:10D77000C9E541F73CC05B50DD4FFAE5A742DEE06A
-:10D78000278D7FB7E993E5418B555E3726F3A131AD
-:10D79000F29F3EE553E43FCD79D591F2A131F29F5E
-:10D7A000067B7DA4FC2733E549CDF9CF455D5328A1
-:10D7B000FFBC28D342DFA99676BFCC7BBED1F50350
-:10D7C0001B7D176986C292D287E747BF2DF431438C
-:10D7D000AB4EB7FEE369FCFBD7DD292EFABBABF8F5
-:10D7E00083F558129FA01F5C4E98B76321AFCBAC56
-:10D7F0004C7FC68C5787F04BAE08AF32BFEEE85275
-:10D80000C29B9135BC2C52FFE7D0D1D991F91CD1E4
-:10D8100091D9FADDF83DEE46FF78AA2733D3A1B8B7
-:10D820008BFF5DCA62CF6CFABB9492FEC5DEE175D8
-:10D830008336095F8CBAC13F3B3D7D9B5D19A3D008
-:10D8400053E6B147A2E3ACBCE0BDF32644BFDF24FE
-:10D85000EF1F4FE3F83D7323137FFFD4484FC0BF42
-:10D860004AE7FA33D9FECDCA707E2816F598C599D5
-:10D87000DA7AAA838F5FECC5BC5904BFA98708BFB9
-:10D88000EDADBEEDE81F1D2DB353BD4A0C7EA0BF0C
-:10D890006F7B397E1846F79E4F47BFDAA22716A442
-:10D8A000C7E08F4F4DD7CBD0D3617DAAABD0174BFC
-:10D8B0004E5FE92139F55B3D4857494F49DFE1F4B7
-:10D8C000E4FB9DA4F7DBF9EABFE07E18A5B3FA34C8
-:10D8D000D2392ABF9AA19EC5FCDD9B1F8A3A161831
-:10D8E000E7391CE710FA58143F540FE138555F8AA6
-:10D8F000FDF74E9E29E5FE4E1DEB7B7522FA7D67F6
-:10D9000099A8D7F4BFEEC338CD862931EB358F3DCA
-:10D91000A0F0BFD3E365FB2D627FB5E8FCDD535873
-:10D92000B709FEED09ACDB84EB5BF3D2F9F7E5B1A7
-:10D930007E732CD8E3A2BEB30EC7C679C09EC5BC09
-:10D940003CB385189E4B1FC0EFB3CCC2EFB36C2223
-:10D95000BD1BADC3F890F45534EEC9DB9501D97603
-:10D9600087A9EE46E63F993764CC7FCE0C1BF41DA9
-:10D970002B0C19F39FBC4E47EAB7CDEAFC10C6B595
-:10D98000A371C5721AFF649DECBF235C3A4397FFF5
-:10D99000D4AAC2AA5B9FDFBC2DACCF6F82BEA4B657
-:10D9A0008C433FD1FF6008EDFAAC99A10B48377961
-:10D9B0006E1E14908A7F87CEEAF61C403F1CFC0343
-:10D9C000A6E68F6C575FEBEBFF07133449A100808D
-:10D9D000000000001F8B080000000000000BE53C69
-:10D9E0000D705467B5DFDD7BF727C9866C42A04B0D
-:10D9F00009ED4DF879692561F909044AE06E76135D
-:10DA0000B62D9405429B0AC50B64101D5E0DB5280A
-:10DA10003EEBCB42421A420BC1E1F937AFBE2D05B6
-:10DA2000677CD631386AA1485DA0459496A63699A0
-:10DA3000521FD280790CD5AAB496577554DE39E7B7
-:10DA4000FBBEDD7B6F3685023A75DC4EE7E6BBF741
-:10DA50007CE73BE77CE7FF7E9745B315C66631F868
-:10DA6000F99386C6585F2DFC79338E83A651C2D8B0
-:10DA7000D2B1725C9934263236374F8EAB4D633655
-:10DA8000631D1E26E6B30403F8D7989BC69B8D5AE8
-:10DA900033318EB1F02255C0C708FF99E5127E4799
-:10DAA000320CF896B9C438B12469F819FB2893E30D
-:10DAB00005345E9E1EC769FC00E3EBEF4D3D6E260C
-:10DAC00060FE77A6C56F3646C0BD68B71EAFF8C703
-:10DAD000A3FF9C22E9196BE2F30F3BBD20EF9851A5
-:10DAE00085E8B9BCFF01E85D41FAB19FD3FB21A4F1
-:10DAF000EF2192E7D39CBE0F013D6D444F37D09389
-:10DB0000FFB75FEFC52A6327EECFDF808F2768DF7F
-:10DB100027723EAE02FE29E23BC4F7C1F9FCE67073
-:10DB200080317C3E8DE37BDD2DF428D164A2DE9F25
-:10DB3000755BF60DC6B37AE57A1BF4B066A57F0374
-:10DB4000D9C9B2223EFFD7A9CF9A8992CC187E06B6
-:10DB5000EEBB9CFF1B7C6E9BFF199ADFE94EC3D383
-:10DB60007A1EF15C39BC89E8CDF09B20F81E077C59
-:10DB7000A3E0AFE07047326191074B3C4AF249FBAA
-:10DB8000A5C4E3E497FA3C72BC8DEC667B29C73FE1
-:10DB9000EAF0E349A41FE47782E43D8ECBEF9F5D7A
-:10DBA0001EBF3584BE947379483DFCCE34E377A81C
-:10DBB000671F367A61FFD4F0888CFEFF1DD62BA438
-:10DBC000F5843D7DD0F9697B14719FCD4FCB77747F
-:10DBD00018EE8FAAD5E979F5DA7D919BE0CFE5CDF6
-:10DBE0004FAA26E2051856CC58BC9F2537C39A7712
-:10DBF000B0A4CA2086C543260B4CB4D835FB32D11D
-:10DC0000E1F1BBC4F8BFC8FF2D9B23F5FA5412F312
-:10DC10008B0CDDFE95B84F69BAD91336BA671FF67B
-:10DC20003F29F80E852D7672A3F1076B412E967C65
-:10DC3000283D16F259F6E057C7A01C969549BCDF5F
-:10DC400048229ED70B25DE7DB4EEB2F43ACFF171B7
-:10DC5000AE84FF29C167E8EA336D74255EA5BC4B2D
-:10DC6000D2F5CDC37DB45F9E4072CBC869706D5252
-:10DC70004209D88F8FAEDDA49A56BFC0BAF530C422
-:10DC8000B7FB597A4C7A95F103DDB4EE8DA66B7D26
-:10DC900058C847D8699ACE7E164A302B7DFBF9FECC
-:10DCA000DCE0F52D7EE121D4DB1B2FF794FB268BE6
-:10DCB000DCA51D2C0FA4EDDB603E90BB2EF1BC60FB
-:10DCC000AEF55FFFBAA0E78F5BFDC9F5F3D153470F
-:10DCD0007CBCC5F725E37F5E36EDFEE7AAE97B3223
-:10DCE0006C89E71F74FE7F87ED7666F13FDF42BEE9
-:10DCF0005BFD451ED4EF9541662481BECBF89B9B0E
-:10DD0000B98EAA55C83FA5EDB39ACF5FB2833577D8
-:10DD10004F1C0C7F53AD8BE05A9F656BBB015FD8E6
-:10DD200073B1296E814B85F9F3436185AEC0DF2164
-:10DD300092FF464EDF89B04EEB8599C60CB0A9869E
-:10DD400025634A500F5A7FCEF1B160882DCECFE0C7
-:10DD5000BB20F0C9750E2FCA6FB4F2F113B1CE8992
-:10DD600030E703E33FC9F311CE875AB02E88F8D5C8
-:10DD70003C595FFE9AE4DAEE16E3C43B14D7FAD2BC
-:10DD80007EE877A4EF4BBD522FDF23FB97F9FA3BD8
-:10DD9000E13F2513B3917EC65C53ACF37E4B7EF01E
-:10DDA0004AF3FA65BC6813FB9548EFD759A4FB4AC0
-:10DDB000F3D588D24C72F2B19402F143F50776772D
-:10DDC000022B1595C69B38FFA5C9C6AFAE060FC876
-:10DDD000E922EDCBC3F67AC4F2FCDDB0AD1EB8B8D3
-:10DDE0002E8E7860652FECDB6BCBD5E25520B7BF6C
-:10DDF000E2FE54517D10CBA65F7FCDECCB5FC3B666
-:10DE00007C3E925F0576C446B942E3F5C1F3FCB5AA
-:10DE10008AD433B14FDA93C8477BDADEF8787B21B6
-:10DE20007F9E73C4BD52D8535E2DAEF33D215F1665
-:10DE300028C6F5D8C4E329753AC45796FE192E189A
-:10DE4000AFC2BF60FDBEC85937EAC18A0EC5486679
-:10DE5000D1FB4176D221F03F96DEBF51B52308AF0A
-:10DE6000C9A68BF801BFBE8F6F22BC8D4D0AD99F0A
-:10DE7000D35EC6D672F98DAD4DCB692CD16F70BC17
-:10DE8000BE69F1F188174099774A06FF0A4177D8B1
-:10DE90001D3F7413E8417B9BA2A33F5AB9716547AC
-:10DEA000298C99E60E8D87CB049414CC6B0F96F9D0
-:10DEB000D10FBC24D6437C1ED8478C25C122826357
-:10DEC0001A5CA7C7D61FC5E97FA930AB70DDEAF899
-:10DED000CE08B235AB71DF51BCDE036E1AF3944D40
-:10DEE00073BE16AF85FDEB99E90EA1AA4176D63334
-:10DEF0000EE86A107469C6BC37D930A8A23C2C94CD
-:10DF00009A8671DD1FDA0CF71B9A3E3E9F55024C34
-:10DF1000DC3DD0EF43664C76B90CF16A03FDE55C5D
-:10DF20006697C1C72DDAE8CE8C91367CEECB3C5F8C
-:10DF3000722BF74FCB6A419E16BDFB91E0EF474233
-:10DF40009E3B80869E8984209FA1DDB0B52E94DF04
-:10DF50004A81ABA76DC95DB7017D97CA5908C75EF5
-:10DF6000E44FCDF077768CC6F963867FC148585769
-:10DF7000ECEBC916F075FF0268DB804FE047539762
-:10DF800017A42C7A7C7298C94298B79527B630D0DE
-:10DF90009388B9D3DD0F74DCDAF4F65ACCFB5698CB
-:10DFA0005E7D1E9078FFDA401DE6B54B4C2197F957
-:10DFB000EE73C8B70FFE43B978526FBEE04139CF58
-:10DFC00056D828C0BF30CA9F4BB9789976CE2A1749
-:10DFD000CD31DE78BA74FBF316F84FD5E6179FFF04
-:10DFE00008FC31954DBD0C7C82035980F45CEA50ED
-:10DFF000026A2981B918F0E9F1F17DDCDBB1FE2577
-:10E00000B4D315412DE4D2913E46F26B146BBCD7CC
-:10E01000A26F7F1E72D5C8C69D5DA877F7F7AACC00
-:10E020000B70EDCBF72226FCF9109F26F4C295F772
-:10E030009F3D1AC069FFA6325C4FCA11E41D980EBD
-:10E04000F7CFF5C17C00BDBF1AE404EBDE63787541
-:10E050001DE07267BFDD8672CA65CDA9E130BE37AB
-:10E06000E862295F862FE03B21E4E2BAACD05ABADD
-:10E0700026D775D99E935C723F17610C7D77C2E8F5
-:10E080001907708BA4DE76F0FD5C64F0FD90FBCA8E
-:10E09000A25C5FE5BEE43AF4D55BEDCEE867167DA1
-:10E0A00075EE43D2B10F7B356E27677B55CA8FCE95
-:10E0B000EE2ABEA71AE491D8E5223B863A6DBF52FC
-:10E0C000007FA414A681FCEF13F4D20FE0F63617FC
-:10E0D000263B4B33FB715FF9B13F2A958C438DCCC6
-:10E0E000F82386452C8CEF15A3FBBE9228423BFDFE
-:10E0F00028EB76A35D3FC0FADDA8FF1FC352504551
-:10E10000FF18F2E0FD465FC08372DCBBEB483EFACD
-:10E1100091D4CDEEC2F3E5642ACCEA279D5794C48E
-:10E1200079C93700A7A4FFF49941F2CB7EB8929F3A
-:10E1300036188E0BEBA23E334B1C3936D5FC31FA28
-:10E140002339D602CD0CE9D83335FE13EE77F9FC2E
-:10E15000F195C64FD17FEE9F629CC0FBDFC07C0F64
-:10E16000E2C3C5DA47A82EF94B857112EF3BFDD803
-:10E1700039F4637A461F163BF441FAB153E8C7E01D
-:10E18000D162B457901B8B5D9F1F3B2BF5E07676D9
-:10E190003BCA07F8F925F97F0DF801B99CC17D9FAD
-:10E1A000C4B0FB966245C4A61E00FA14411FDE5798
-:10E1B000C0BF2B1B7FFC4765181FCF023845EC2BD7
-:10E1C0009691751837BE1EF2F9C6A2BF304F21DFF7
-:10E1D0004EB9406076535D163C760AF5C695F7C396
-:10E1E0003166963898DED775EEB7D27CA11D4126F0
-:10E1F0008F7C28CC745D467E0240C4A8F7D38B0484
-:10E20000E941FB0285F86B2F658DE8CFDBF0D14C3F
-:10E21000D0F7054A37EAFBB722453C5F1AC7F3C27D
-:10E22000CEC26430C4FB2C04CFCA436C494506EF10
-:10E23000B7222AC14F9A66E461E082BC8FF2259929
-:10E24000AF4AB84084E795C3233CCFA8A88C1751A8
-:10E25000A02B0E91DC218F1A4E637F2AE91A29FA2E
-:10E2600022FCA7BB2C7944DFE824C33C24D7C89EFA
-:10E2700037DC1249C7F55B22C8C72E19D78D5B1151
-:10E28000FFDCE18106F4731EA07B7769265EFF60E8
-:10E29000C1175458967D24524AF45537ED6C1D0928
-:10E2A000FB1D0E8FF563DA94AA4906318FE81C0531
-:10E2B00072C8622F1B233C0E4EBB45C00979C9B8FA
-:10E2C000EF83F4DB0DEB6099EFC23CA084E7010F14
-:10E2D00044CA689ECC07003EE101B8F00493F0B454
-:10E2E0008FCFBEDE03429E99781B2A407FCD5833E4
-:10E2F000C58BB88827AFB51867064029FB5A6274EA
-:10E3000005FFDF130507774A4BE487B2C86F61DD6D
-:10E310001E1FC6EDD6F255BE7ECCFF8C08E16D5CAB
-:10E320001E3E3360F1B79D256C0CE601F736DC79B3
-:10E3300066C0626F3DF99C5E8C33096F06EF52D464
-:10E3400013A0F768D89B9A0B02CD0DB2A457A1ABCE
-:10E350005B473B88E8F43C6EAC6426D6E3D5673572
-:10E36000EA7F15B234FC26D89A483973235DF160F0
-:10E3700092E1BC5C18237C7CF6DB04BFB05A6509D3
-:10E380000B9DE07F56901E38F2A51DA86080B77DDA
-:10E39000A692DC0C781B826B28FE6C9A934BF7617B
-:10E3A000DDA417EEDF33BE89E296CCAFDAA3D1103D
-:10E3B000C5A7EBCCA78E4D8D3F84FAE809A6FDEAF0
-:10E3C000C34467C6AF6E8870BFFA19BC4AFFB1FB81
-:10E3D000E86BE43FA00621397782BCBF9B651F37FD
-:10E3E000093BE82CE47AE87CFE55A1AF7FA988B709
-:10E3F000221D06C4B4E0946BCF37DB65BE29E478F8
-:10E40000BDF201797C2962F1CB208F2F679303FC49
-:10E41000DAD05FA8D25B3CAD68A8FF3962F824333C
-:10E420009338CFC79A0948F5C719C6BBC178520CB3
-:10E43000E72D13FC7D507FFC1D486FB85F339E8E27
-:10E44000505DC8F559FA65B04B1E7FAFD16FF7BA72
-:10E45000C09F023D1D786B66E6F921B1CFCF55997B
-:10E4600087701F2794F856A2FC1F558CA05FC5BE6D
-:10E47000A7D9887E84E9536CF306AFB389F0F4958D
-:10E48000996BD1AE99BEF80AF09BC5BA824F9DF345
-:10E4900001EB7E25776C667C25BE7E10317E86F290
-:10E4A0006A35E3BF40BB7BB9DCA52714BA921D7661
-:10E4B00056E724151807A698AFF37D043F0AA83B3A
-:10E4C000CBDFA1BC68E17C85F2B4853EA8E0B2F860
-:10E4D000C9F322DE2CD4F97376DA085AFB1D855174
-:10E4E00097BDEE059530ACFD8BA86B15F6E5653C48
-:10E4F000C3BE49367BBB28EC49F5BE5D827EF5651F
-:10E500007776BFFD4EC443704A54F42544FC5BEA61
-:10E51000E5F5157B11E8B3C4D7E7AA6AFF8FE2627D
-:10E520008225144B5CEC1B7D91FC1D3DB1DC5F280A
-:10E53000FA4EACD78E47F2591465B675415F5D51FE
-:10E54000DEC750A396E74B55C6FB1E3D7679013DCD
-:10E55000BE28AFBB9B94E959E919C7A667A1E79408
-:10E560009D9EA228DF97E7AA8C22C407F17938D2B2
-:10E57000D1510BFA9745BEFB26D5DE84701A4B7439
-:10E580009495BE6FDE7A0BE291634BDEAA47EDFEF7
-:10E59000B534CAFD6B5994FC4AF6752B85DCAED7B1
-:10E5A0003F5CABDD6F73D8BBBC76F67F2FAF12E854
-:10E5B000F07A139F267B9D7875F6FDB15B7A462332
-:10E5C0009F87847EA26FC77CC3D0793EF26094EBB4
-:10E5D00071784292E09E1D22FF48C38160B02F37C0
-:10E5E000541E32F31AF390CED97D7988A7F5DDDD7C
-:10E5F0007958C73F3B509B350F3954D245743AF395
-:10E60000900343E4216BA23C5F3DFABF1ECA2B6A14
-:10E610002EF0385F73A14BD5413FD745B93F9B39A9
-:10E62000D0A39AA027359887009E03220F41F84D6A
-:10E63000A0BA9177BB54A46BE6851E9A570363CCAE
-:10E6400043660E918700152AEADDFE9ACE5771DFE8
-:10E650009CFCBE58696E885AEAADEAFE1E7A4F22CB
-:10E66000E775966FCE33699FED7A736C2AA73733BF
-:10E670008FEBBB136E28FDAA53FDE5D81FD8CA72D5
-:10E68000432887F7728655B2025ED7605EBC15419B
-:10E6900081EFADA7F39209ACAB7DFCF9677387ED11
-:10E6A000C6ABF43F3E6117EFE5DC92147590510064
-:10E6B000F33FAB1AA9B9100FB68EFB6280F3B39E7D
-:10E6C000EC6883904DED4E8DEAE93B827C1F64FE41
-:10E6D000F5D25285F24340337F01C0CF10F83DD3CD
-:10E6E000787D58AFFA096E5B39CF23EF485CA4FE02
-:10E6F000C5CC7E8FAEC37846FF1A5E2FAA3F3C9EE4
-:10E7000087F9FE4734A6C2FDA56DF156D2CFD31EC0
-:10E71000EA67C8FE42556F37C92D6FC063EB73E4DB
-:10E7200082274B59F2168F63CCD4E505D9FC90BCF7
-:10E730003AFB10FBA2A2FEAC64932E835C2EB14781
-:10E740003A9037EFF8DAA34FB1C1F3657FE1C149E1
-:10E75000C633A81FE3DCFDDF7E06E475E02D0FF570
-:10E760002D0EECDA757725F097E8D2A8AF2BEB19D0
-:10E77000905BD122AC675106D4973EB90AF5F2609E
-:10E78000BE1C834303BA0FA6DFD77F629561199F32
-:10E79000886E398771EFE00809FF269F2FC789FE31
-:10E7A00055785EE3E0283EBE14559F4AD0FEF66BD6
-:10E7B00054476FFCA53F9B7F3C5967D7D77BAAD7AF
-:10E7C000737DBDC23CF0EBAF47B3CCCB59606EABB1
-:10E7D00000791C1C70D1FB21A8B352981F3C38C98A
-:10E7E0007C03E11F3DC5E57AF0AD8702B84FDEE15D
-:10E7F000FD0F67F3F3BF11F1285DE74DE6FE83B12E
-:10E80000010DE3D68E39CF9EA884754ECE1C3F45B0
-:10E81000051640163ECC97E57C6F1DAFE332F4BD84
-:10E82000A2AE42FFF3D6B9866CF65E15357F1FB5F2
-:10E83000C1F3F7A2AD5D1AC9BFE8D8BCDD78EE27F9
-:10E8400055D3D5A3C1FE1EF88D8B619D72A042D415
-:10E85000E143D11502BA8AAE8AAE5D33B2E81BD06D
-:10E86000E5A91B3198AE97EB18C9E7C54AC387CF16
-:10E870009D7432D1C79C25FC7DCE9B5FA4BEE381F5
-:10E880007E17354F2E0DEC5651F564FFBBF354192E
-:10E8900066406CEEFCB32AAA94F9886AB3BB19A748
-:10E8A000726DE3079A87DBC6CBD68ECED821FCBF2C
-:10E8B000383AD636F6066FB78DC36CAA6DDC30FFDA
-:10E8C0000E1BBEBA40C4369E17BCDB067FA7BEC473
-:10E8D00036BEBB7C990D7E4168B5ED794D60E7167B
-:10E8E0006C1FC5274ED68633D2C7C975B00F79BD08
-:10E8F00006E9E3A3A71E0AA05EA46AE26350DFFA5A
-:10E90000F27B4AB07FFD923B7BBDF6489D2AE377C0
-:10E9100009C67B83F17A4DC287CBFA6D7DF9D57537
-:10E920003C3EAFA853B2F6099CF158C66119979DB9
-:10E93000EB3BE3AE33DE2EBC6DB78FF7FB79DC5FCC
-:10E940002AF4A0B5FC677EACD75F6AE07D84CE92E6
-:10E9500038F50DFA447C3EBAF4BE31F85E2DB7DCD2
-:10E960001CEE2DCDC4EB487992FD12FB3C81241B9B
-:10E970005B81CF936C7505F5A5B5C8447E7F82B8E1
-:10E98000BF06AF10A7EB2D7273C6DFB06FF20B0599
-:10E990002C93AF34FCC18816007D7735EDD38AE126
-:10E9A0001AF11FD6AC7EE864CDAF8A8788D39FB4B6
-:10E9B000DBC72B641F070616BF6F1C78A385F7DD26
-:10E9C0007FD0E26329E0EF744B80AE3F6F09D2FD48
-:10E9D000575A74BAB6B794D335D512A2E7AFB65426
-:10E9E000D3F5F91683AEC75A62743DDE1227B89F7D
-:10E9F000B634D2F5C51693EE6F1776FA61A1C72823
-:10EA0000977D85F8519742726DC0A3BAB32E18AAAC
-:10EA1000D5CF835CFF239B5CAF359EA46ABA47A326
-:10EA20009E41BCCA6A4FDD7532AF4FEF37D125F337
-:10EA300061AC5F504F649F0EE8FB26D2E7C5FE5CD9
-:10EA4000D1F5D37750E1741D2CE4FD1BC4B3281F0E
-:10EA5000FDF9D7E2B5E4CF474C267F1E649ADD9FCF
-:10EA6000970EF2E72BC9EED871EC93627F91DE53DB
-:10EA700038FA2005F53ACD937D90397FE07D902BD3
-:10EA8000F10F7C1F47BF25FDF6D5F2EDE4F7D85412
-:10EA9000E365C423E3F3A0F861AEA3F8512D6C96AF
-:10EAA00069EF529E9827F8D9716E7101FA172F12EB
-:10EAB000C8EB748355E33E33791E60F7DA92C17870
-:10EAC000DFA8E9A678BE2D9DE7BC4D79CCE0F865BE
-:10EAD0009703E642D6F80E7278B3AE6AB07ED6A936
-:10EAE0003FECDF0CF1F9603FE37DB269FC7D9D8C6A
-:10EAF00083072FF03EC6254D4932D8BA5AD6DC35A9
-:10EB000003AEFBBFC08AE3F8BE698C2BB41740F399
-:10EB10008E1CD07D0017EE3787E7C0F3EA540ECD88
-:10EB2000AB9D3F3989E386F8DBE49F6A357B9CC463
-:10EB30000C351D77A80956E418DF9C8157717FCBEF
-:10EB40003263C0BB6EAAA9D5035F8B2F36331DF08D
-:10EB50007B4B989BCE870C8EEFEB144B9F4D63A1A4
-:10EB60000EE443FBDC36FE5ECFA16F524EB2DF26D1
-:10EB7000EBF0279911C0F59CF8DBC47B17E7FB96F7
-:10EB8000F72ACC20C22B8163F4BE85AD65FC7C8462
-:10EB90000BEA1394DF304F726FE960BDDB3FE5CEC7
-:10EBA00031F564DF09E5C6D4ED5D0AD5EDA26E62EC
-:10EBB000FAA75CD63A46D64DCEFAE831E167655DF4
-:10EBC000F4989B51BDD5AEE486761393CD93F8FBB4
-:10EBD000B8E61978ADA9977EE90BB63AC91FA83FE8
-:10EBE0003330355B1DC7EB11777ABF4B02E7F33249
-:10EBF000FBEDF798413CDFD83E79DD5756A2BC4685
-:10EC0000F8E8FD26D3E23AFA9BC7F1443FDA7320D5
-:10EC1000C18AA767F65765DA79ECC77640F282EFCA
-:10EC200077E3F53C9F70D2E5BE46BA7023E93DB567
-:10EC3000B4771617EF25791EE913F7DB746EF70C1E
-:10EC4000FD96E53D799BDFF0052CFBF828CAD93B02
-:10EC5000F4BEAAA56D01EC6777F95D64A71DBAB68D
-:10EC6000B514C61D7E8DE729BA2B96ED7D5247BDA2
-:10EC700022F8E67405045D6A7831E53343ADD7299F
-:10EC8000F65D8E73279A06D9951E8A63BDDBEA2F3F
-:10EC900056B0CF299FAFAA57C4BE77911CB68AFC45
-:10ECA00028B7BC3BE5427D19B5662A8ACD07F9CE67
-:10ECB00079B8EF9BD84DF951FB089FED7C96BC3E8F
-:10ECC00026F06D75876254BFE7BB18D6EF5B4BB378
-:10ECD000C7C387C5FEB6EA53E2089F00B98C570642
-:10ECE000C3AD11705BDC5DC100ACBB75FCBD74DEF7
-:10ECF0006BEB1872356CF48F6F7B6A937FB07DC0BD
-:10ED000098F6CF1D60F23DBAEDDC43ABDED0B81211
-:10ED1000D6D55E6121340B6937DB313F81AB7BD4C3
-:10ED2000E246D4DF4BD5B92184AF535F4CA01CDB46
-:10ED3000438CFA165A61930FE97EB444A3730E9282
-:10ED40005EC8BB77A3FFC80FB96CF9794175AEC334
-:10ED50008FDAE981F548EF86DA5F277D94924F7963
-:10ED60001FF842B3319E05DFAB697BB7EB97FB0A17
-:10ED7000FA75257E6C71B22413278F1CFBD7D5F84A
-:10ED8000BEE371C69F3F7F6C0ED5EDCEF18DB2F321
-:10ED900056ADAB11F7A5759C87F4CF397F6B29A7CA
-:10EDA000ABB57E965837A0A0FE6FAF2ECA413FED9F
-:10EDB00047876B91EB0B95E6CFEB2D71B830DA4CB2
-:10EDC00071F8BBF58CE4E8D7E38171A017FE5E15FE
-:10EDD000740AE4EEFAF31FCEEAD72E47D66590DE2A
-:10EDE000FA59E6F76790CB30C6F5C4CF1EEBA1B851
-:10EDF000C436109C94D7F65B4F86526CE875FDD5EF
-:10EE0000F63ED307ED23FDA93EBF98E49CC37250A4
-:10EE1000CE97D8230AC5E1A841761748FB557EFE58
-:10EE2000A4580E811D1C93CA2999FE12C3F71768B6
-:10EE30005F26A33C8520478A57573AED0BCD1B2D03
-:10EE4000D0DC8C076354D47FEE772FB1B7F8FA305B
-:10EE50000DCF9F280917C5CB5B51AF01AE94997FA9
-:10EE60003C9BE55CCE9840D3BED5702D9E27FA62C0
-:10EE7000829F2BC943D2FDB7D25B19E79DFD50D9C4
-:10EE80002F7D06FBA5CA95FBA14CBB48729379ACBC
-:10EE9000B33F0A712D0FE5FEDE048D7592DC791EFD
-:10EEA00090A9D74D9FF51C9D8C97ED81C5B63EFB73
-:10EEB0000CA94B0E3EBF7785B8D8D90B7E13F3E172
-:10EEC000E066EAB3EF3FBDEA38D6E397821E9D596C
-:10EED000FC7F7BBEFD3D80C4FBF979A29F3EAA9ECC
-:10EEE000E17CADC76478FECE130C515C6855B2BFAF
-:10EEF0003F689D27F209679C70BC67F99F1C7FD211
-:10EF000053C6D2F14315FE59C657A641141D699D3B
-:10EF1000CFFDA894C77E9157761EF9049D176041D6
-:10EF20004BFFB62CCBFACEFCCF30F4C0F44C3EAA4B
-:10EF3000F4F33C54AEDF2EEAE7D6D37C3F72C5B97A
-:10EF4000A141FA5A617E7A1EF67FCA5D8E3E95DD3A
-:10EF5000DF38F35AAF8F25722DFE0FF2DA8DF328CA
-:10EF60001FB1E7A5C3638C9FEF293419F6712241C5
-:10EF700053C5BECBF4DE669501DF334EBFFF7E2C5A
-:10EF80009AC7F39CF6F25571AC7F641F79C79CBB9E
-:10EF9000C8BF421CDD3ACF52C7CA730B1FB4AF249F
-:10EFA000F575BAD847896FD0F992D91BF8FB9FD372
-:10EFB0000F9D407DDC0FFA8871BE3D3FB1AD02F37D
-:10EFC000935754B6571FDC8772F225FB49FE18D7BA
-:10EFD000534FB0FDE85C97453EFDCDAA4EF2311887
-:10EFE000BEEFD1C4FB1E67FFC8EB359A317EA76A1E
-:10EFF0008C466BFF58CA6D91D0E7376A9AE97DD489
-:10F000003343BCFF9570F89918D6D3B21F553AC94F
-:10F01000FC3EEEEBF4D87A15DD48757C3D9DA3CC23
-:10F02000FB77467520CB55927B61A923739EA53A49
-:10F03000F1F74146FD320FD689C55817F23A51D63D
-:10F040009FD24FD4A94F7794E1F98C5E8DCEDBE54A
-:10F050001DF9840FF3DE70EF6AAAD50C65691EEE08
-:10F06000A33C7F24E9BCDE3AB30AEB4CCB7B928C09
-:10F07000DF88FD02F5A0B325FE8B28E8C781168343
-:10F08000C6ED2D8D74ADD29206F253554E951B9B55
-:10F090003500CF2D7454F5C46CE31D95E619D4CB1F
-:10F0A000BCF2B8EDBE3708F82C7A0175EE3992EF54
-:10F0B000692E4FCF7C85CE152CEC675BB86DFFD3E6
-:10F0C000F8212D7663FC504EEC7DFD107F5FEAE960
-:10F0D00017EF4B1DF6B6679E4E7690B63B7C6F4A97
-:10F0E000712E41F3E9DDDF4CE067D827B9DFCA9C18
-:10F0F000CFA0EF12C3E27B693D366B0FE6B3EDAFF5
-:10F1000033F99DF01EC3F21CFE6AC2EF440E63B1D8
-:10F110000B79E6E65861137D4F2DBE87893416962C
-:10F12000F4B1CCB945A7BCB6C45CB6733161C6FBBB
-:10F1300062F2F92763A26E03765C96730FB978EEDC
-:10F14000214BFEDE24F0350B397578F8B983B98E82
-:10F15000EF3C66C6785D30D4771E9F1378AEF45DC1
-:10F16000C76201773FAE5745E722C331A4372EBEB1
-:10F17000CF1274CCEA4DB60EC32431C8B2E2B93313
-:10F18000C6CFEFA562FC3CB1276868B82F80EF6E50
-:10F19000C2D7C8CF59CAE7B32EA49F2F243D69E038
-:10F1A000CF675D30A91F24BFAFBBF3F8D83D9BC626
-:10F1B00065CED7B4633FC28FDF99F0734BBB04FDBC
-:10F1C000CEABFCCEE4DE8038A793B8758F81780C87
-:10F1D000FE5D65EDF10903098DD6FF18D127BEABA1
-:10F1E000992CF885FBAB882EC7BF0FF0C0F1E01E4D
-:10F1F000F13DCE1A9AD7CCE9CEFC7B07A13DD6EFE4
-:10F200007B261FAF6C12F0EB087E2D87CFA20F423A
-:10F210001FA7ECC15EEA55E0FB0CD1B79CD3571693
-:10F22000D3F977590EBD05B8CFD3BAE23B9FDEF8CC
-:10F230006A1FFAF3CCF7FBB7D17A5721A736C2631E
-:10F24000CAF59838CFC4ED42EABFD4876F08FDBC39
-:10F250003DA648BD7A8CE86DBA61FC7F89E8717C77
-:10F260005774253E2A2AE34FD0BC60FA5CF1D78957
-:10F27000AEEBA4477E07E6B48BEF0BFE61DDA7691A
-:10F280009D92109D2F8275BF7D23D605BCCF101E89
-:10F290005F1AEFFE58767FF381F0B292E2AB3A1F2D
-:10F2A00022C7FF0F94B0BE363046000000000000B9
-:10F2B00000000000000000001F8B0800000000009C
-:10F2C000000B93E46660F8510FC181486C62F11A3B
-:10F2D0007606866816068699AC0C0C15402CC74934
-:10F2E0009AFEE540FD8B80782E10CF00E2C940DC0D
-:10F2F00007C49D40DC02C49240F34480981F88B943
-:10F30000809815881980F8370703C3370E8439377A
-:10F3100080620F48B41B84AD7810EC3340FF6F045B
-:10F32000E2AB6484C3281E1E389D9F81A15A00C190
-:10F3300017104495CFE047B0B94429B34B1AA81F22
-:10F3400000656D40B4800300000000000000000074
-:10F350001F8B080000000000000BE57D0B7854D5E2
-:10F36000B5F03A8F79666672F2204C4280134830CD
-:10F370006A8A03840882F52420C696DA9152C5FE73
-:10F38000D60E34224A2051B1722BFD726002040164
-:10F390003BBC1414E9E00D8A8A362256ACE83F20C3
-:10F3A000B5B4B56D6CB9D55AED0DB5AD2F0C88520D
-:10F3B000FCFBEBE5EEB51F99734E661250F1B7F703
-:10F3C0000F9FEEECB35F6BAFD75E7BEDB577DCB232
-:10F3D0000FF287029CC49F8B00EE7003C0D8743A72
-:10F3E000EAB66FCC7DA49AFCFE7FDD916D7ABA9E61
-:10F3F00048878244EB01180045001779C9AFA4DEA5
-:10F40000A49F1FFED37985007B41010FF9945227F9
-:10F41000157C8DF4B3F7238860B9FCF3406957007D
-:10F42000DB99B4DD9781B54B95E9A55A156640C6C1
-:10F43000EF8697FE4EFA19BEB999B43FFE6180B6C9
-:10F4400077C22152F84886146F737218F6AB7ED0DB
-:10F4500055C9F3654006070EEF64809A34BCFB5F24
-:10F460007B83C2BB4F25F0EA19C6F712F80BD3F025
-:10F47000EF856FE4421583DFA849C37FBAF0D0F966
-:10F480000F0058DEA23F5DEE0258DD024F97570095
-:10F49000AC6CF1D2FCD2168DE6E32D619A5FAE9290
-:10F4A00026040FCBDB216992F6A16A525FF447FE76
-:10F4B0000B54796D79772169EF4DE7D540D896F7F0
-:10F4C00096EAB63C01E76098CCFB1C3E9FA52D0454
-:10F4D000071E1CDF0BC65958FE6D8A171FC75B3C01
-:10F4E00038E2CA61042F6D2F2A84D2002EDD988164
-:10F4F000F09507DC7A92B0C63981D9536124193767
-:10F50000140320F5E21B00D612B8CF0E4C790B4243
-:10F5100000F793FEDB48FF4AA8ED650F295F51E62F
-:10F52000D615C4CB76F52F5D640C2FF987783B6B2D
-:10F5300023CBA7E745F296799E0D9672D2FE977976
-:10F5400077BE2C1138E2E56EDD23A5C7E9A14B3F5C
-:10F55000FD5724EC7967FFE5BA51877C2AFAAD8024
-:10F56000E8122DF0C5EDF71C82DB82FC74BF629CB3
-:10F570007EFB25E48F92B6151B21992AEB3D4EB9EF
-:10F580001EA9374979F946159265EC7B219187725E
-:10F59000F62B2C2FADF3C7AA7AC303D67186A5E943
-:10F5A00052AEBB67CA842FCACBAF982B11BE8184E1
-:10F5B00085CEC31883A2BCFCB045A3FCB8BAA59203
-:10F5C000A6ED2D5A07959F8F95191D55BDE5F0AFF6
-:10F5D000A8A748BB3B5C40F9D0DC06C96D12F61702
-:10F5E0009D3193E4578D2A1A7DBB8EF91932EA05B5
-:10F5F000C1DFAB249DF2B749F81BF59F533E56BBC4
-:10F600008CAF607F2B46C9D212C47339E3F77257AF
-:10F61000CA3B1CFB4D0C1B65623F91DF7561BDF25F
-:10F620008A11BA42C63DBB9CF1FF2FC7DEE9453DBA
-:10F63000D833FF85451DE56300721D7CA09D221F08
-:10F640006813FBE60331CE672D0F678EBF127DF284
-:10F65000D7AAC8DAB7506FB49733BDE184AB7868E6
-:10F660002A1C0DF4E6B7F272C26748A748DF7CE6B1
-:10F670004C37B424E175C243EB5AC294EFD6B4E8D8
-:10F68000345DC9F9D0853C554CF29C0FA1B09AE687
-:10F69000B3AE57B098AE4703A6272146E05C87FC7F
-:10F6A00079017E5F6A18A5A479A5C8434A26BA7F66
-:10F6B0000D9697D0BC01A5C89FA2FC31D320EDF3D5
-:10F6C00079FD29D263669C20699D8FE5EBA56EC309
-:10F6D0002CB5B65F691813D3F5493E55576EED8FBB
-:10F6E000F45F6585E7395A5FF4D7201D324C925F8D
-:10F6F000E363FDB5492F7F2EFDDF2E25C2B8D0ACC8
-:10F7000070F473BBC89B09C3A84A8F53B6F851C3A2
-:10F71000B496C3A3B6F29AC509D32478BB0BA2C38F
-:10F720002542DFE2A9D13010FAFBA2491397DA345F
-:10F730007C0CDFE9F9DD49E1F597B3F22AE9F746F8
-:10F74000DC429F5AE93726C22FEC1B85F3ABFCF352
-:10F75000D29B5F20FCAAE4BA23D4CE282499F1647A
-:10F76000BCE931D0091C723806A80F94B0FA77AB07
-:10F770001C08FE23708EA3704E8ECEC802A769852A
-:10F7800053C0D11FDC028EEC7CCAC677F253DD6514
-:10F79000E37E3B91B0B8AFD315413BAF00F144F4E9
-:10F7A000007CB4CE7091EF05D308EE754AB71930DE
-:10F7B000BC77BF85534B206959C73F6BBA0EC7FC56
-:10F7C000588AB7EF4863D3F425F999563C8EE3F590
-:10F7D0009CFC27E6E7EE35BFEFDAE6076A221C0D50
-:10F7E000F63FBF35BEC88C68A077BD5F4ACC8EAEF1
-:10F7F0009B32EEEBC0C6030FD15F7938DEE8F478B8
-:10F80000795F21E361676A32E378F993C978DE337F
-:10F81000874FA73C0A787DBDE05D6783F776179137
-:10F82000DB0CF43FD3F09EAAFCF989FEA5F257D970
-:10F83000B7FC7DD6FDE5E1AF849FDE57217511C190
-:10F84000D7828BBD49534AEBB9CF1B5F055844E8BB
-:10F85000B7E0D7630E5D246386F0F597D2E3CF97C8
-:10F86000740A7736FECE361F80A4AD9FFF57F3C9CA
-:10F8700086D733AD874E55BF2EF9839FEEEF969610
-:10F880004312E569E9818BE93E73E90B930602E9CE
-:10F89000C7D5762E18645279DCCE588A7606F63FA4
-:10F8A000F9D4EC8CDB5BA0A395185D4F84A2D42E19
-:10F8B0005A2A016DBF8AD86D4962BF54BFD8EE9DE8
-:10F8C00019A076154D97BA80DA31D52FEED726914B
-:10F8D00029F82BF24721EF2FF589EF07EBD1CE5D09
-:10F8E000594EBE13D6581A64FD91EF51AC9F53C1C7
-:10F8F000BE67832BA792C063C1BBCF9D8C65D28F9F
-:10F900005F96658A9F4DDCEE5A8D761751C83E7F13
-:10F91000228676B5BFC8ADDF27F56E37436676FF22
-:10F92000FA8A9F98E8D25881F61B99FFBECBEF87E1
-:10F93000AE2A5C0713868CED23CC35B0C9B1DE0747
-:10F94000D086A3EB66589A44D64CBF23BF5AD4370F
-:10F95000F55AB4D74295ACBC76C985B5716B399C64
-:10F96000578BEBAE28BF66C9585A5EEC8DBE3C91F2
-:10F970008C5F4CF4679CE0A9584D48CD949E99F952
-:10F9800065FDB5DE194902C3FACBEF2CBB36039EE9
-:10F990000815299D45BEA4C12E5F9B38DE56733CD9
-:10F9A0008651C62D7ACDC7AAF6E835DF594CAFF996
-:10F9B0002B138B11CF250D10413B7B3DC15FCC320A
-:10F9C000BEAFD2AEDF8A55FBBCCED47CEE02E32ABA
-:10F9D0007940F6FE9DF27517C46662FD62BE8EFB2D
-:10F9E0002B9352ACAAFFF93BE79B6DDE5FE5F82451
-:10F9F000E3CCCF34CEE78597E20019A7FAB31FC74F
-:10FA0000DF60D793A78A77686C37705F8DA626EE84
-:10FA10009B7D303992A2FBB9DBA81FEE160E3BC4CA
-:10FA2000366968D7C40132EA33B5DC9DF6A7E1FF39
-:10FA300094AB7333D145A40B5F7D2F6FBFA57E526E
-:10FA40000E16FE3D87FC723E9C7F5249B707EEEFD3
-:10FA500053051C817CDBBC4EB41CCDDB4FF4C61AB5
-:10FA60006D1AD5C7D9C67B90E8D11491AF075ABC9F
-:10FA700034DDD6A2418AC8D9BF1379C3FC56227F90
-:10FA800098FE88EC1731BDB72542CBEF691947F3D3
-:10FA90009B5A0C9ABFABA59EA61B5AA2F4FBBA9622
-:10FAA0001934DF83CF8FC87835946501EDAAB36729
-:10FAB000244DD463B003221504BFCBF1BB05FED5A2
-:10FAC00072EDB332FA3D67F8A87F23C8E7E987A44F
-:10FAD00081FA1B0E2AB00DB2CFEB0E3EAFAF28322B
-:10FAE000F39FAA957470414FB91DA85FA5A89AAC61
-:10FAF0005B44E5E65ED89A8FFC5E54CDBE07038476
-:10FB000091C877A51A52BE101D5AC5F61A6FDF3676
-:10FB10004EA6F5566B2A6DEFE48B73A193AE33605E
-:10FB2000782308A777BCCAEA57B1753278FE3EA49D
-:10FB300020B44D94E9FAB9BA9CC1A168767E09D681
-:10FB4000DC0768EF879561741EAB2F50370D473681
-:10FB500080CE9787937E3690AD0DAE6B0F6CDEA98D
-:10FB6000CDB4D0D9AB30FBFCDCE93BA315088F4A00
-:10FB7000E49A8C5FB8D99FC47587D0434178737C71
-:10FB80006C3EE7E298048EC24590BCAF2C5D1EC867
-:10FB9000E3F3D18C5AEA9710DFB9E23957EF48C93D
-:10FBA000D86E2344EE8374B94FB433ECED7CA29D40
-:10FBB0009942DC42E12A7B3BBF6807B5B6767ED12D
-:10FBC0000ED61A74BC0469A7A7CB15DEAE47EE2B80
-:10FBD00035D92A674A409799DCD8E9948D7F34E07B
-:10FBE00074D8674A27115FD52C2F49DEB69332AE01
-:10FBF000B3763AF951CEAD7A2660C913D245517623
-:10FC000071BFC6E9953433D36B9D1AF94539CEAF30
-:10FC10004AB5CD4FD0699D97D3D1F467A4D33A8D1F
-:10FC2000D33106363A0B7AAD13F46AB4E34FD06B96
-:10FC30005D167AAD13F46ACE4CAF7559E8B54ED067
-:10FC4000ABC1DE4ED0CB490FB1EEA4E9D62C21DDFD
-:10FC5000CE143D9C7AE10559A7DFE5F6A39D680F18
-:10FC6000162D50D93EA9B21350CF43697E3F76ABD3
-:10FC7000C9ED93665A7F2DFE2AFC5F28A76E96BFBA
-:10FC8000267EA816EDF07C4994EFAB457F5812CB49
-:10FC900089FD7573FC382D7F528EC614DA5F1270A1
-:10FCA0003FE2C497279A848D04A40A357A6905FA3D
-:10FCB0002537CB11F4DF0A783C20F004FCFCE6D4B5
-:10FCC000F81F80E10BC13B39FC94E0BC45A1F84C26
-:10FCD000323C39E124FBCB8D645F3384F3F710F3BE
-:10FCE000CCC0090D6CBDE8599FB99DE482CCFD5490
-:10FCF0006E966D7C3362BDDFC637E5ABF26DE5C352
-:10FD00005A4B6C797DD1305BFD210BCEB195973686
-:10FD10008EB69597345C60CB87AFAEB3E57BF10BC5
-:10FD2000CFB72BAF2CB6F18B39A20EF76D496074AB
-:10FD3000D81E1F5187FBB6FECABF7E8B6A7809FEAC
-:10FD4000D542375D870805297E04BE723530DDE86F
-:10FD50001F280C242F21E57ECD30A93F403300F72A
-:10FD600073B216A37957D82E5F5F4301227CFAF550
-:10FD7000AD2A780BFBECDFF824FDF7372F27BF887F
-:10FD8000F55D2964EBEA06B25DC2F33593E8C76D11
-:10FD9000645C97C6D67597E01FC2CFA8573455E26A
-:10FDA000F27B7A72367CA31DDEB2843D3FB4CD6116
-:10FDB000079E227F7F5EF2DB1FFED641C4544E01B8
-:10FDC0007F1155E2E7D5A727FFA58D76FC9434B8BF
-:10FDD0001D72E2D0E79F33FE5AC57A01D13AC44B77
-:10FDE000CE7AE64341BB2B935D21F865C3F49BFCBF
-:10FDF000D6F50CACEBD4B0F43834AF64CA7FD1F88C
-:10FE0000A4AB16ED8B9C8564FE65CC8EC9387F4E05
-:10FE1000EF755365BFD50EFBA2CF3F4DE71F9C5634
-:10FE2000FB700FBCA51ADDAF89BC635FD6BBBDC933
-:10FE3000F44DCC275BF524F9A954ABD135E98F20DB
-:10FE40009F9DF08546422ED91F7A597AA6F76D0FED
-:10FE50004C67FB12F3D59C6405E293C771AC7DF54A
-:10FE60004B4984273955863BF19C79B29CAC20F9EB
-:10FE70005BFDA1FB10AE6F2AB15BD50108EF9024AA
-:10FE80009E1783AAE74D0B5AE6C9ED2231FF6CF6A7
-:10FE9000D192D69BEDEB194CAFB3F2E35DADCB69DC
-:10FEA00039B13B5A554AAF2F8A7D9415CE4DEA178A
-:10FEB000D83E12E703CEF6FF2AF6D101B57189DDEF
-:10FEC0003EDACDE8008C0E2FB4EEAE3B9572611F8A
-:10FED000F9036EBEAF77D82F95C43EC2F3A300B727
-:10FEE0005F2A93D45EF1552699FD5229EC19FB7ACD
-:10FEF00076231AA063D3F6511FFD1B9FA4FFFEE6D5
-:10FF0000956D7DF705847D9460F611C135C69928FD
-:10FF1000446DF846225FD8D7F76A5796F5FD7F8C77
-:10FF20007D94597EFBC3DF3A4830FBA81FFC4DCFC0
-:10FF300086BF7F71FB68BB0AFF9FD947D9F8E47F72
-:10FF4000B67D94A6F36763E738ED1A61479C69FBB9
-:10FF500046D827C48EA1769649EC2CB4734EC89A25
-:10FF6000EF4E32CF5B15DD877EEAB55C5E17AAD116
-:10FF7000352EBA7EEB7968676C447D3E80EB59B4D0
-:10FF800083023C3E4F8DC0B42F61FDD84697E51CDF
-:10FF90004209E8793DE7365F203C103BAF522DB473
-:10FFA000CC9FE345E061972B8FD3BBF9FC289BD70F
-:10FFB000E3140FA04BD4DE52751FA64FF3F58DAEA0
-:10FFC000C7D5567CB0BC52AF27511E48FBA75D0376
-:10FFD0006C78F1D9F042D621361E28CC9E336DF1D3
-:10FFE0006CFE6A4D42BF39C97622FFD2F3721D20E2
-:10FFF0000889FA11A4FF82D8B21B311E33F8EAA592
-:020000022000DC
-:100000006F615C6341D74C1ADFD85A35FA401DA99D
-:10001000971BD12E9FA2E3BA0AD4CFB8023BA3E725
-:10002000A110AF0DF0731C22DFBF597A9CAF9B0665
-:10003000D8ED725957853F69587679213FD2494F9B
-:10004000EFF6D9E4C365956B2A9F379D9A7C4E6580
-:10005000726D927FA82FF21CFDE41A8EF304B0E4B7
-:1000600049F9879C8F8985F2B98CA7C15AAF4EF8A0
-:10007000CD552E6B181F990B5A1EF29F7FB20A297D
-:10008000F4BF141E35D105DB1F5D5AB91F1D25F0C5
-:1000900072CB7E22E866F21A9ED55AB68CF47BBCEF
-:1000A0009AC5DF1768E4BFD1BDE7B392CB574FBE07
-:1000B000EA3E7A6E1A27FC340CF9B84AA6F70856BD
-:1000C00094333D2EEA9DE7966CF7082CFB365DAD28
-:1000D000E1F634C18F522E1B68077C5AFE503E2138
-:1000E0007FE44CB5DB05A74BAF89FC5EC5A9F2C721
-:1000F000A71D4FD0B5B75C2DE6746DF0A2DDBF2C07
-:100100003CADCF73D4DE745D4BE9EA2F072399A190
-:10011000FF5AB794317ED6B93F72DAEBCAC09A194A
-:100120005BFBA25BA1D32E63FDFA162AFA5F51791D
-:10013000A91A5D07BCBCBF15FA5A13D793E36833FD
-:10014000107C28895129D49F500EF41C111906CF18
-:100150004D7DBA41F7E17405AA49C3E72E956DE3D9
-:10016000A9857EBB5D3DC394ACF0FB16BA291C5E2D
-:100170001C0FF5B4C6CE3DD58038F774EC1F1D7644
-:10018000C3F2D2D119E30CD4CF6ABF3ADD0EEF2906
-:10019000B70BA8FADF2D7654F6762AFCDD624FAD58
-:1001A000427EB7D07F990B764B641D8E87AF8098C7
-:1001B0004EF258540CD086E978E4C3D11A5DBFB62C
-:1001C0004BF47C988AB48EFFB173A2ABDC3AED4756
-:1001D000F6C6289E948001B4BE7E6AE7482706B31F
-:1001E000B8A56112D8EA3FEC76D37215A2F43CFDB3
-:1001F000C46B978469BF06F9549386C3D9EF55EE53
-:10020000D8C36E6CA73178B001F5478C637E81B09E
-:1002100097B53B31B3EFB8818D285F6759F23C2E1B
-:100220000BDA4E2DAEEB0419B3B38AF2BF1FF7B54C
-:100230009060F6D0504EB3AD8BF2E9F7ADAD7DCB0B
-:10024000F9DD5CCEB770FBA81DED238BDCB7F3782E
-:10025000B36D12D8EE595478587CD63B5CEEB77A21
-:100260004D1FBDAFF0DC0ADF088C7739A8447C0451
-:100270000FE5D71AF9B13EF05091B0CBDBE9C67764
-:10028000BCEACE1CDF91ADBD88EBF8B478D9C6F7D7
-:1002900031159ED971BA6F495D44E5B398F34DF1BC
-:1002A0001CA076ED5013923AD6FDE82458F983FC51
-:1002B000EC433F454903190BE915930DD41F251B4A
-:1002C000DC4999CABB763BB60F1F5458AC21188144
-:1002D0009935945569FBB0F2422D8ADA706E9FC150
-:1002E0002AFBBD8BD245F6FB52258E7B1261B4EF03
-:1002F00042E877B5D42BFBF4F40879083DCEFDFC39
-:10030000E9D1AE1A7ECDD2BE5C82684786FECA3D78
-:10031000CCEE285FB39EC5813504E07531DF6148BE
-:1003200057231F17832D89FB16E3399BD9C0E26B36
-:100330000635826CE5E3319E1CDA8F0B0CF32C82C0
-:10034000B7A5DFBEA2EB19A4EB44B0E9B10CFA6388
-:100350008C87C88BAB90E98FF6C434967EA4D0F519
-:1003600023BC08924B08889363B1C52EA4FF1CA040
-:1003700071E8E186E6BD185F5DDC08111C86F015AA
-:10038000E5AFF00C481A945FE06098F0C76036154E
-:10039000188C7C81EBCF02465FC117258DF6FB36AA
-:1003A000E1067BBE88DBFD45CEFB5B8E7E8A7576E3
-:1003B0000F4A5F2403DEFB83E9F6FB3661E87AF03F
-:1003C00001846F7F2092427E351DE338FA572176F3
-:1003D0008587E0F389EF4FFDE559A4FE8F16D5150B
-:1003E000205EB67AA3B9F45E515BE6B8B35EFC2A30
-:1003F000EC8E2CF5D37AD4B4C5353BD3651545378F
-:10040000CF2270AC081A40F59A7915D5EF0A97DF1C
-:10041000E78AAFF0623CE9D2C0E85CD4B37B314FED
-:10042000D2A5E111346E57F4A3F0F85D918F737D7E
-:10043000EA1CEF160FD3A37F07E316C4C3284F2C83
-:100440008CF376858B1E9FA9D3F3422399A1DD758A
-:100450001E3FB32F75F59F56FC93055CA372087081
-:100460005AFE85599E581BF2A75947B613C8FFC3B9
-:10047000201947FA3727B8DFBDA7DE6A5ECFA47E12
-:100480004F512F9600EBBE93D45B8BF321F50C5BA1
-:10049000BD68AF7A77F17A601BD7E835EE66011F49
-:1004A00058FB8BF4EA6F2BEF8FDA833DF5F45EFD9A
-:1004B000DDCFFB336CF5B45EF51E16F0D9C605FB37
-:1004C000B83DE5E7B89371AAB7593CFDBE8A2994B7
-:1004D0005FF6574CA99F45C6B9F9172EAE23AEA1BA
-:1004E000EBB6E0ABBDBC5E2BF25515DEC385B64660
-:1004F000BC07CCEF09C703D3BC31CBF71EBE0A4CF7
-:10050000D3327F9F65ABAFB6F9C01843BFD3FAAD06
-:100510001F2BDCEF9D3719FD71CB0B65EE9FFB5B4D
-:10052000DC50891E1BA0DAF26D61563ED2FBB7B8D3
-:1005300089778AF83D18A22B9FAEB2C877CFF89F73
-:1005400017FCFC3C230DFFFB71A3DC0A3FCB0BF82F
-:1005500045DE5BCCCA47B7BD3F092F56897B00C338
-:10056000DB0A5AA9FFE20B3B3FA9D53E3F964FCF8E
-:100570008FE5C5FCAADBA4C9FF5AF3CB6DB5F31F09
-:10058000CBA7E7C7F2627E356DB9A7353F673DBCA3
-:10059000AF847A7E45C5FD615C7756E0424AFA1D1C
-:1005A000D7F6527C31C9DF3E40D8DB3AD5EFA3C045
-:1005B00038C73BB6FF76BFC2E037D2D61B64E7C16F
-:1005C00050E1E6E7C18930FA39DFF0683C8E8EC130
-:1005D000A978EDF9A1981F90CE935FFE89EB308644
-:1005E00029B2FDA443CFF7B3AE2D2D66EBC9B2609F
-:1005F00044B6AE6B220EFAB9013554FFC435A67F5E
-:10060000F60EE0FAA890AC6BCC9F47EBBBB8BE5A95
-:10061000DBC2DE0B48F0FBB0F1C2D1143F09711F01
-:10062000D69C62D36FFB6AA71C40FFD5B183EC9DBB
-:1006300088A7BC6CDD5BDA021DECDD032FBDD7FDA6
-:100640002CE937462AEC21F61EA63F25F61EA6BB4E
-:100650005BC234FD498B4ED39D645C4C1F6D894059
-:100660008C8CBFA3651C4DEFE2FBAB0D682F92F4A1
-:10067000CB8532F55B6C6D2196B20BFDBD5E9ADECB
-:10068000DBA2AD522BD0DF1BA6F963D2B4EBBC7456
-:10069000FFDA15CF25703EF1BB727A4F7C62A14A1A
-:1006A000D75F50534A6E75FABBC0EB31A9AE11DB70
-:1006B0005D1096593D6F321ECA5CEF46AC372EACCA
-:1006C000527820602AA1C28CF5BE87FC5513E0FD4C
-:1006D00069B17830737FB7617FA303BCBF423D1E11
-:1006E000C8DC9F89FD8DD4181E20DCB5242773BD7E
-:1006F000A558AF4AE3F32D4DC93999C7BD1DEBE5A8
-:10070000E727E8FD9D8BAE066A8FBA0AF5ADD46780
-:10071000C1EB25074441267C9E5F9068C67A17C6C8
-:1007200022308C8CAF872220137E7605487915DE27
-:100730002527FD9074C274528EE74258FE254B392E
-:10074000B627E9F819BC7DAEBD5C8CE76A839EFBD9
-:10075000D37869DCD56ACFE7C94C3E1F6ABB6A32E1
-:10076000CA7D1E3F7FFA35E6C9B8AE4520F411AB0D
-:10077000EF67E5CF88FA2156FE1ACFE7E7B379FB9A
-:10078000A67869BCF0BDB78C289E55959EEFE0EF2A
-:10079000559E3DCB32BF7BBF7741F1AC407A3E8363
-:1007A0006F9D78F6AC3EF63D05F572CF9B24A8B759
-:1007B000F21255547F8EF244A97D386A608D81F221
-:1007C000ACAC6270BDEB2D6B5DA252B84C7A4F930E
-:1007D000C375CF3C3B5C83E6DBE1BA67BE1DAE412F
-:1007E0004D7DC3F59497E9B56CF091F10DEBF85B95
-:1007F000FECD3EFE90EFDBC7DFF27DFBF8436EFBE4
-:10080000D4E3A7AC74D97CA37DFCD29BECE36FBE90
-:10081000C93E7EE9CD9F6EFCCFCA1EBFD01BFBA791
-:1008200097DBBB8AD5EE6C8ED9EC5352EF24AF67C1
-:100830002A563B3616B3D9A7A49EEAE3F6AEAD5EC0
-:10084000B4573D9F8FDBBBB6718D5EE386787F2901
-:10085000D9DA5FA4577F05BC9E295BFBD37BF517D4
-:10086000E6E31AB67A5AAF7A83057CB671C13E2E9A
-:10087000F038B05B791C189577527FE1D5649F5DA5
-:1008800086FBD0A884FB7DAD0046EDC7FB26C3D90F
-:10089000BB477953160EC5F55C9AB2F02C5CFFDAB3
-:1008A000F2C0B66F9BE2637E84B13E85A65A0E34D9
-:1008B00053FF9DB7B9F872CBBDD72DBC5E4F79A061
-:1008C000B9F81B96F24B78FB367E6F70B2EFB7D457
-:1008D0001ED10691FA19FC66978AFE783914463AB9
-:1008E0000D02F75D574D1B6BD5CF5B7C2E3A7F6DAC
-:1008F000281FB734335C6D656CDC7B71DC007E17C0
-:10090000F6477331C5B7C652F17D4370B6F457C48C
-:100910006ABB97AEEB6EBEAEE7B99B1F282370C4CF
-:1009200007CB80F7229697F6EDCF696DB19F2FA880
-:100930005AD4C07D5FC91C6D348A47B67677D7CB51
-:10094000F599CE1F1AF87C5AE7D425CAC9F8B0DF4A
-:10095000EEC7250C0ED6FBC857B9630DBE4C7EDC26
-:1009600056AFCDBEC92B9A960B7DCC23DE62F7E342
-:1009700012D56B64A2DB4A1F3F1F39E8B5D95B79FA
-:10098000F932DD771EAF62E7066016533F610F5EF6
-:100990004BEABCD6F15738C6F3C13403D7015CA685
-:1009A000505EDCE5EC5D157F61422BD3D17FD049F1
-:1009B000CF0381DF7713FDB686A7D1FDF8717E0FD7
-:1009C000560D276A99DF91C3A7715DC5C729D9A8BC
-:1009D00042AA808CED8AADF48DB5D2CDA4F74B4EF2
-:1009E000B89297D2F79ECA08FDA5DEF3BFD3C7FC25
-:1009F000C577EBD37E5B9681BEF7A0B3D8D26FC923
-:100A0000876E488DC95E3F5D8FC1D5C3B761C2AFE8
-:100A100028FF3AE75BB7F1235FA6780BA11FF839EF
-:100A2000F8AC71C07FF42BFF44E671FD01177B77B2
-:100A300041DCB7E1A5D773BFE92CEE776D8068087C
-:100A40000BDF05B91EE5EC5DF85D688C85FE4FFB9C
-:100A5000DC0CAE3617F5778973DF6B132E9B3FECFA
-:100A6000BA8DF6FC6C9856847A6BF67A17F5AF5D02
-:100A7000EFF0D33ECCE77B1D342F433B5EDCDB9EA7
-:100A8000A5818AEFF2CC7BF2DE1ABC1FB5CFC7EE90
-:100A9000EFBD4DF846B7C8DB0D81A41BEF01BCBE0E
-:100AA0006BCC151300DB279795A0BECD838CEFBED2
-:100AB0007DB7CD0E5F7FF03BE10558D2271CEA766B
-:100AC00029A37FABD327CE8919BDB2C57988B88B4E
-:100AD000639C8F7AFC307FCEE17E18167FD15FFB5E
-:100AE00013FDB49FE7ED72A3FC34A9CDF5929C3EB3
-:100AF0009FF2B862C620324FD7EEDAD420B0D56B61
-:100B0000EBBBDED12940F5657314F948D49B0FA4E3
-:100B10001ECAE59ECB4D5BBD72526F78F67ADD5CE6
-:100B2000AFFE7CC7BFBBD11FF9EE43872E43B99CF4
-:100B3000FBB4025E326EF78E20A4E83E36E9C6FDB5
-:100B4000DC0DBB948CE7B9346280F43FF7C741BA3F
-:100B50005EDEB0D3939C4ADADFF093D74702C143FD
-:100B6000F792A3CF0FC275F721899DAB9A5D2371D0
-:100B70005DBB4185EF4433F437C0CFF8F0F0533913
-:100B80003390CED2F6BDD7D07E3BAE74792CFA220C
-:100B9000E077897ACC1FF7A044E3A37BC3C7CEC11B
-:100BA0000E3F2831F876BB923E846FFB56778CC09F
-:100BB000D1B4FD3DCA57937EFC4808F1D0B45BB177
-:100BC000F9899BB62B29CF489A1EC214CF57A41A75
-:100BD000C427D38FF377CDA3FEF3F91D2BDF534248
-:100BE000D8DECEDF042F9114E2F525253215F38FE0
-:100BF0003F10D209AADEEEDC1642BC927E67BA73C1
-:100C0000F11CD8EEF7C6FE3FCCEFDD1FC05137F226
-:100C10005753C70A36DEAEAFBD81FAA5C921476F6B
-:100C2000E32FC5BDCF5D2EF43BCEC1B6179C927DA0
-:100C300039F791E35B4C32EEE19DEF6C3109FC8DAD
-:100C4000FFF5FE96DBD00E7AD6A7A11E687AE83FA4
-:100C500042605937AFF43379EC7EF081FBEF26F236
-:100C6000D1FD470F5D3FBA9F7963884EE6DDFDD821
-:100C7000FF29D249FD05CF5C4CFD050B9E9834B091
-:100C8000AFF513F935697D978CDF3FD77793710600
-:100C900092EC1E9E3AE8F3DC2E057C04CE775FF6DC
-:100CA000D07B524DE4DBC2D148AF79542F637E1123
-:100CB000C1F3FC1DCBDF534666C2B73948C64B07AC
-:100CC00040C4308CF4FEC6D72FACC6D445CF579A5B
-:100CD000E028D5ABCE764D07095DCFCB4EC7E3F00C
-:100CE000911BE3569A76AC60E376103A867AD3F19C
-:100CF0005DFC657C6F3A7ECF41C7E3D0F8233C1F93
-:100D0000845D0519CF85C5F9D9BC27BED9A7BD25F6
-:100D1000F4427F789E2331B8EAFCC6323FCAD7CE70
-:100D200087EFBFBB90D1792A414CF723C78700E1F9
-:100D300093375D47AF41FD78F4198F86EBFD0DCFFA
-:100D4000BC44E5ADFB8917DD3AB5BF2120117BA37B
-:100D50001B7A7E3AD1FE982FB14C537B30E509A522
-:100D6000E9353F7979BD1EA2DF0FD1EF492607F3A0
-:100D7000937BA74B19E8F7AC9FDDE786E4008A97E1
-:100D800079ED7F72D373700B5DA57148CF4353F03B
-:100D90007B367A8AF96B38FFF32D746D67F29B4DC1
-:100DA0004EBBB77A548C6B70D2B9DBC5F6094D498E
-:100DB000E9A54C7417EBE0E99EAB3EE5946F3EEF7E
-:100DC000FEE4BBFFF99C1EBEB6FB751BDF08BC1D15
-:100DD000FE28B3DE3FE897381CCDF525C37BAF83F3
-:100DE0002A44CD416569780FD3B7C948FA9042DFEC
-:100DF0003B5DD6F11CD5DF4E3D313F8B9DFD37AEBF
-:100E00009FE6EFDE3B12F5D9E17D4F517E9CBFE3BB
-:100E1000901BF737CF6F7FDCDD5595E67F5C17AC15
-:100E2000EF5B1C7E74EF48AABFB1FF0CF439C6FB20
-:100E30006FDA63EFBF69C77BB6FEE79A1D6EEA5FA4
-:100E4000ED679CB755E34A9CEFDB9D2EC07793DEA0
-:100E5000EE50EA33D9412FF175B127AE2658F3325F
-:100E6000FA27957CB78EFAAF75B1F112BE9B68BEBA
-:100E7000E862EF56AAC6CB1E229FF13CB78EFBDE7E
-:100E8000D6E015A05BF478C2814FAD50ABC5FD80B4
-:100E900036395A6DDD7F09F8F30CD906FF8260FD03
-:100EA000407CEF0AF7713ABE53A14698FF3A34A549
-:100EB0009EDE7BD464CD9771DD66FDA1DF0EF9DF88
-:100EC000A5C9A05BF86BD4A42BCE45979D0ABA6D3B
-:100ED0003FB066323B0F16F35F33183603D1C36B56
-:100EE000A4A307F09D08F352166728EC3BE0FBFE35
-:100EF00010EEFBCB7ADB7B60183AEA23AA8E7436BD
-:100F0000BE61B9E79C8EE3055D56309E39423701DC
-:100F10002AC468108617E36C87E3BEAB83A601A2E0
-:100F2000DE309D98338CF1371CA5F9B5F57FA171A2
-:100F30008F8539D1513903309F2FB179A4E83E4FC5
-:100F40005CE397734A8BFBD20730593D6CF52779E8
-:100F50006033DDCFA03BF364411A2F22DE4EF4BB99
-:100F6000C63751C2F508E73908DF69C3478E2CEF51
-:100F70007088F8C90122EF18076B6A357C09A6A2B0
-:100F800019935CC3F17C3F21E1FC4AA083A6A5D064
-:100F900049D37CAF26A914BE57A9BF4B86BFC0C991
-:100FA0001C077CA760C73BEDEF5B15FD9518A1639F
-:100FB0009CEF73EECBB3C7237D3B87E9991B73642A
-:100FC00011FF1CB3EEDBE2D04871E02B64CF93F548
-:100FD000C8414EECDA1C0B9F29814E165FE6D82FD4
-:100FE0005FAC2CA2E7FBCBC37DC7752DC5F8F0B372
-:100FF000B297270678676E050A3FF383495E16E7C6
-:101000006D80AE59F91163796AAC719386ED3D1D1F
-:1010100017F2A182783669EA43B922690EF215A166
-:10102000C34ACE8741E8E29D1CA5FE8F2DEE581CD9
-:10103000F97060794C62C1445189F9D50CC5CA0771
-:1010400072CED5C57DC56DC174C22796B899FB38DF
-:101050005D541554FF68846733A7BF933FED71B0AB
-:10106000C2AE0BF09C87C7E3FDACFA77F4FD17B571
-:101070003040E35F02D5AD37E2FBAD2A346BA857B1
-:101080000322BE25C2E216C5BEDA57698F17F538AE
-:10109000E2635D7CFFDE2B5E9CAFC777E0870C765A
-:1010A000B3733D7E3827739C138CCB1C9728ECB40C
-:1010B0004FCAFF62FFD9E8ED7C9E02A11934AE53FE
-:1010C000E57E8BDAE91AF5B71FD921B1F7361CFC9A
-:1010D000746467EE48D49728CFF87E790EFF2EED22
-:1010E000D8BB17EDABD6101879F954FFE90AC1FF48
-:1010F0003269945722E9BC5DEFFDE669F4E3EF51F4
-:1011000000DF753B42E6D889F3548D3C245A0EAC7F
-:10111000B2D1F993CEABF7392693BF9B34217F012F
-:10112000DAEED80E89BDF303E7DE85EF5D351D707D
-:101130004192941F03D6EFB1CDCC6EB8EE178FD786
-:101140001049808D1C1E5CBFACEB4C41BD1F740B65
-:101150009F84C5BA601A9DF8DE7303C7CF8068BE4E
-:10116000AD9E98DF3BB3EA0F50FF4F8CBDFF3C7044
-:101170004689AD7FE0FE119DFC43BEECE5679063C0
-:101180006EA0EB4A343745ED20B29FC6FD47528A28
-:1011900020DC4E7FCAFCDD125DCFAE27EB19BEC747
-:1011A000767DD2B11F75C45309FC3BF9560E703BD6
-:1011B0003200812C788EA4AAE9F92C95BB9B7EA1E4
-:1011C000507BECA647A4248DA7EE3A2B1728DE15FA
-:1011D000EA977A039AEF242B4C9ABF1DF8F384ED1B
-:1011E00078F7E976BCE754DAF11B8CD8F1E8C473E0
-:1011F000EEB861B6FA73954637653E8EEF4AF20F48
-:10120000F14DF4249DC77C328F94DE1B9F73F6ACA6
-:101210005986FE927EF1E8C0DF390EFC1D873D7BCA
-:10122000592944BD4596F84F3545E5CA2987024FEF
-:10123000A55A672DFD1609523F7598772235B0766D
-:1012400025DE0E2654A323540E459C724ECFBAFAC7
-:101250003A9C24E9CD97EF3F340BB2CB5D478B37F7
-:10126000D2E0C2F371883454E079B946D3CD58FF47
-:10127000BCBED65B838EE7828886E91DFCDCE44831
-:10128000157B17A923F54111DA7F778C3E7A19DA9D
-:10129000FD4DD74294BECB1464EBEF2E9E4E0EB2A2
-:1012A00038EBDBA33218E82FD8A32425F44369C612
-:1012B0002F2E42BB6D8F4BA7EB9F76F437FF8B969B
-:1012C0008FD1F01CA3584E8CC271497DEAEF3FB21A
-:1012D000E7F5D0772DF651F7EE7567E3FAB4498656
-:1012E0003999F6010D01367E77E55F8A902DE77911
-:1012F0008FD27DF9F22EBB9FCDBD8BF9E1E6EFBE1B
-:101300009CDAA3FB67B3F7389F38CCEEA54E51AEFD
-:10131000FEEA97487EFC7FF0778CC0983AB38885C8
-:1013200072203DE33E826782C7F53C7EB3E9AF326F
-:101330008DDF1C7F214828AFE3FF08111351DB3CF0
-:101340009BAE574F87A61CC074F21E89FA8F9A0E67
-:10135000B3F56D6CA7DD4F74FE64A21748FF357BB3
-:10136000987FABA68B9D0F9CFFB2BDDEF82E7B7ED7
-:10137000423FFCBB24C0D7AD10149D4E7CEE1E979F
-:10138000B122C0CED3E8BDB2889A79FFD515647674
-:1013900018C1079DFF91A3105942E671A4A1A4169C
-:1013A000EF291DF9809D371CF948A9CFB4BFDA1287
-:1013B00060FCB2C9CDCE8F37CD0E24179379EC9B4C
-:1013C0007DC350DC57FDE3DF6243B5BEEC12A222C1
-:1013D00064BA261AB9300EE5A395DD77834471A669
-:1013E000F793855C083911F2513CDB1FCBE4171DE4
-:1013F0001664FBBFBAD99512C66F773F2BD133A6BF
-:10140000EE2504AE3EF068C29241084FD3EEF7A934
-:101410009FC2BB27B3BFFBD94088CEBF7B89B978B9
-:1014200002C1D7F788709B280FEE4459A6FE4D588D
-:101430004FFD57DB028C9FBBBD6C1F0E6AA218DFED
-:101440008DE8DE3DE9D26504CEBB89FCE1FABDC979
-:1014500015A1709BF380BEFF07FC7E61E965B0F5C6
-:1014600076CB7EED40A0F620D2FB6080C51F15C470
-:101470002212C21DF9F84408FB3FF2A187D2AF84C3
-:10148000FB8B44BB23017E0E17347E43F9654E214E
-:10149000558A915828D23006E0BCDD04DF16FD9D48
-:1014A000A69B49C7C98F01BD479F1F90D97918D9FD
-:1014B000A7E1FEA309C48F49F72B42FEF0D29B6A35
-:1014C00089BB97F648A920D19FD5DE400AFD32F9A5
-:1014D00073647C8387D8A35ED65FA7DD6E450D8CD1
-:1014E000FA177500D03CDB1F097D2CF4786B1ED3F6
-:1014F0007FAD6B54AA1F37AB5D3EF44B97197A9DB5
-:101500004AC6CD57751A6F31780E93F79CE1F7E60E
-:10151000F5D84513001EFB58C9E81F392B28F015D4
-:10152000FB07E26BE481A3FBD0BC8AF8A000E93D95
-:1015300085DB3DE3DF65FA48DC3368EAB94760D70D
-:10154000479B7CDC8E81C4EFF1DCFEA9BFAAF4FED0
-:10155000408FFE993D85AEA7A0543D87FC35E157ED
-:101560007C7BC0F50FD9ED51BC9CFF422C8E7038AE
-:10157000F5CD38207A49EA5FEF38E94C8CF09E7C53
-:101580002941CA980344CE2CED9D7A6A6090AFB38E
-:101590005C4F1D8789032FD6D3FC347A61E4398FE1
-:1015A000857F849E4AF35392E2D5398E04DE9EBC39
-:1015B000361CF5CB0B0AFA518ED4B2BFF393E2720C
-:1015C00094F741F252E487F57B2EF121DFEF3C30B6
-:1015D000C98B62755398DD3B53F74E3781B38FF556
-:1015E0005CD9055E3D5089F890291E148DE42DE3E9
-:1015F0001F4B48FCDEA59E3B3DC3FBD822BD29CC3A
-:10160000EE95ED3C302C97ED475394EE3D7CCFFDAD
-:1016100017422E04BF3BF95BC8439CB4922D7684DD
-:101620002275F0FDA3DD8F10E776445CBC3F6316A6
-:1016300053FB7001B70FE381112BF1CF1CB4A6EA65
-:10164000343CF758101C46E3AB170C60F873E243C8
-:10165000A44D1F127BD11207DFA41EA5FEB1A60F59
-:10166000DDB6EF02BFD9F022F07B01E257FAE4F8D1
-:101670003D3FC8E8ECC4F3A79D7FE94DE332DEE7C8
-:10168000FB5799FF04883DDD45FDB1EC3E89E0370D
-:10169000A13F6A6E6E8BE7E8697D21EE8308BD236A
-:1016A000F4CBF98D89E77232E80FA7DE88B8B4EF82
-:1016B000AE22F88BFC2C40DFEB70EA910FF09762C2
-:1016C000EA77BB2748E07DECF9B765F49B3CF15322
-:1016D0003277521ED93B99F9053B4FEDBC4BD8AD43
-:1016E000C25E75D613F6AA5877C479D3AF83B18793
-:1016F000707C693791A710C6C7B27DF28140EC11AA
-:10170000FC9E4360F6632C6065AA8CED67EDF29A4F
-:101710004D3E731CF2D79152D93B3201F62E9413F1
-:101720000E317E4390BF2B40B80EED9AD21A6083E3
-:10173000CD67EF06948E8418AECF78BD14E7F92BF1
-:101740006E97BDC0D71B911E0844F723FC2E154C85
-:10175000CFE84F0EB7F02FFE3A68ECC3FEBCF5069B
-:101760009DC7200D2268EF0F523BA4088123BF5173
-:10177000977A9C3D625D27FD0D9AAAD7A21C0DC2E7
-:101780003B05581FEDA30CF4F97390C535CDF376E6
-:101790003D8F267CD3D4E6FA501FE7EBE9F7102201
-:1017A000DCCF658F0339F2CC4B83F1FCF3B51FBC62
-:1017B0001FC473ADFF548F0611CE3717FD3E88F757
-:1017C000215E5BC4F61FD738EC9CE31C7FD343D16A
-:1017D000C341927EA7E5E31ADB3B240BD9F9CCF594
-:1017E000490537A53DFC3E777B0EF5ED89FCBC8EA7
-:1017F000025B5EF0E93C0F8BDB72CEBF2AC4E2686D
-:10180000AEDFB1D53D48C7F163FF85E3BFC9EDB891
-:10181000377705A9FF43C0336BC72837E2E13FF7AD
-:1018200078F8B97FA78BE1DF988AE773314E0A27F2
-:101830009CCF3F9B43FBBB768342ED8E9964AC8586
-:1018400084BF637BAEA7FB70E73CAE7D4D9F3290BB
-:10185000D0EFDA1512B557B1FE22C20FB185CBE930
-:10186000399E739E334D47FC08B72B9C7126D7EDEC
-:1018700061E7EF0DA0AF9C589621EE64CFA5F4DC94
-:10188000EDBA7EF63D65216E4FD4C0F918377F1C46
-:10189000AA7E58A5F7BFEF79B3056810D9DB2D5E96
-:1018A0009A1E6ED158CAF5E7DCDD7B9FA77CA67631
-:1018B000D6A0DCEF3CF07ACEB7F4B41EFFF2D6F738
-:1018C0009FBB87E4C700F3F3087FFBD51CEF1771BC
-:1018D0007D7E1DB717C67CD8B73EBF1AF131B2372F
-:1018E000BC428F5F8D7F6FD08207A1D79DF838767D
-:1018F00060780EF2C7E490F3BCF9D3E1255BBB79C5
-:101900004AE67846214787838CAF1BDA2F5F564221
-:10191000C68F3FF3C6902EA6270EA29E107C0AD03B
-:10192000EC463976F2A3E0931EBEDBB39AE249F0AF
-:101930000791AB303FE70CE3FED0C97FFDC537759B
-:10194000BBBA86A05E70F259B7E35EB448AF083107
-:10195000FF7B836E4CC1FD2A596E96B1F340A68F72
-:10196000DE5413CFDF86F2DACEE465DE938FFC041B
-:10197000F5D00D3FDE10423DF4969A28C2F11AB719
-:101980002D0DE1B9FA9BAA19C2F66F25958CF18F3E
-:101990003B4292784FC31627016DE66528C7FFD8F2
-:1019A000E6D2F01CAC69BB879DBBEF6278237976E9
-:1019B000DEBE2B739CC40D0F6C28D259DCAD3D5E8E
-:1019C000A2DD45FD17E85FC361B29D17F79C3F7725
-:1019D000F47D9EDEB48BC7D9ECBA3463BC84884BEB
-:1019E00070F2F16607FF12FC50BF9F49E0A2EE764D
-:1019F0007E4E1E7FF0AE9187087C87DB7F1592AA12
-:101A0000ACFE78761E7FACE3BB3FF2CAD9F9B79B38
-:101A1000F37BDA9E48668C9F6874A542B8AF6ADC97
-:101A2000EAA2FBC0C64714FA5E1DFCD143D7F3B946
-:101A30008FFCEC0F1710F8E63EE62A9CCAA641E39D
-:101A40002404BD7AE258387D6E78FC67EC7C59E757
-:101A5000F12C9C4E731FDBEBC6B81C273E2775ECA0
-:101A6000757739E22028BD3A0E4DA1F7091F3CE1F8
-:101A7000C675F6AD67251858D6BBFD9CAD3F0BA1CA
-:101A8000BE403CD138004EB7EC714BA9CB7E5A4DCD
-:101A9000EB51BF5D7F745C84B23896F2FBA33F25A7
-:101AA00070CC79C543E3A7E63C7A338D337A436D36
-:101AB000667C7FEFD2225C7FE7B8CC228DA6ECFB60
-:101AC0009C2DB7507EBCEEC55B8AF87DA462E6EF24
-:101AD000318B719ED76EFE269DE76C88517E9C737C
-:101AE000AF12453FCB7115EA1FCB2037237299DC2B
-:101AF000BC719F071FD38137B89FD3FC9DC2FF5E87
-:101B0000A4F3BC8ABD1B739CEFBFFF19EA396FF4C5
-:101B10005AF7634DEDCB3B914E6F0F36066A349EFC
-:101B2000403539DEE8FBEBCA8B170FE4FA8DBE7740
-:101B300023ECA049F81DEB77BAE8BB379676B67769
-:101B40006B16F0F109DC7EE93C921665F6837E3374
-:101B5000571271F02CFE46F059363DD0CEE2593E78
-:101B600038C8F40CC6E5D0F24E576AA02D1EC763E4
-:101B70007B17251D67E2E2726E2F2770D278991EBF
-:101B8000FC3E2B25F11D64C12FB3D77BECF1793DD1
-:101B9000FCE37CB7C71E3F739DC32E1369AFF53FAF
-:101BA000D7715EB7F9D4E2671A5D491AFFD4F847D6
-:101BB0000FDD9F343EE28A225EDED9F1DC1FBE4596
-:101BC000F8FE9D0E21C776BDEB94E3393BC7422654
-:101BD000397E2710818C724CBE6794E340FA5C43D7
-:101BE0008733AF77AFCBA277BFEAC027B11B723183
-:101BF0008EF8ED87E60EA5FE0A077E85BE75EAD152
-:101C0000D7433AC573EF783FB6EEA7E331191E0507
-:101C10007FDEF0F03C3A4E0F1F0B3E157C9C256E8C
-:101C2000CC894F67792EFACEC6F6F68B9875508917
-:101C30007FA729EE06F6DE9BEC8F20FFF677DEF914
-:101C4000DBDC32F1FEDB796C5FC8CE3B23010DFF9C
-:101C50006205DE9753329DB34726C919EDFF1FE495
-:101C6000323B09DDB2983E99CBF0D7AA44B923AFF5
-:101C700083DE63A067AB08675E88CA998BC7A990AB
-:101C80009EE97DF4488EFCBE4EFAB8FB87FB2F51CF
-:101C9000D13F3B46BE7938C9EFFCE1CB97A884DE43
-:101CA0009109F2E3C3487ED70FFFC8CACF93C7B8E4
-:101CB00008AB6E375FB96432C9CFE7F39E2FFC24BF
-:101CC000AD636D7E12553E74279EE7A83F657F8FFA
-:101CD0006825917BEFE8F439738E074C1FC9E7B88C
-:101CE000494AF2CBCA7EBF0C3791BFF2C736E652E3
-:101CF0007CD5E988E7C39A97C6EF2C78EA621A4741
-:101D0000FA642EF3479FFBF804FA771DCF201C0FCF
-:101D1000E60EC80E47AB8BF57378E7B99310CFE7A3
-:101D20000E459F5A9A1EA3559D7EF711B49BCCEE8B
-:101D30000FE3FD96789E9BF6F324E7B3534D45DC05
-:101D40008B92C3F842C9959B1F23E9B39C1FFE7772
-:101D5000AE26D621BAEF3EF2CCC0FBD8BB314787C6
-:101D600020BD15E5D89FD1DE3CFAED1CFA774B5E1D
-:101D7000F133BCBDE26778BB327795EB1CF27DB4E2
-:101D800077C8CDC8F4AF483B6EC174AB16FB25A332
-:101D900007A4B0DF6F5DA3B07E03CD417C374E3228
-:101DA000981D2E1166BA9AE0236E80EE1E8E226C6C
-:101DB0008FFF5094D1475374FCA06D7C2825EB26EF
-:101DC00091F32BC7337A11DCD275F4A5712C2FE077
-:101DD0009B911C16EFD2293C7F4278467992837101
-:101DE0003FF52D625631BEB7EFEBBBFDEC7CB31B6C
-:101DF000DB8F4CC70F34FD4DA6FBD9269C03C93F92
-:101E00007E18F8DF2B64EFEB08BFC7F85FDF44FDF7
-:101E1000DFD5BBE7B23813EEEF12E7F935FBD9F99E
-:101E20009CD3BF350156517D3ADEA14727ECFE2AEF
-:101E3000D5AFFD9DCFFD43E8D5122839CDF3B98F3D
-:101E4000734FE17CEEBF013359118B00800000001D
-:101E50001F8B080000000000000BB55A0974545590
-:101E60009AFE5FBDDA92AA54AA2A450804E34B02FF
-:101E700024210B45122004D42220D0314A8016811F
-:101E8000F64881B298AD98B4DB699D438520D2DADB
-:101E9000A319756CCE69BAE785D61125E92924D135
-:101EA000E05432C52204254E9045A01D3BED74231D
-:101EB000DA64313D824BF761FEFFDEFBA82541E984
-:101EC0003E67C8E1DCBAEFDD77DF7FBFFFFBB77BA2
-:101ED000DFBA4409600CD03F1D2403D49BF1970264
-:101EE000307C3C2311F200F47A00D9096054642854
-:101EF000C1F62AFDBB0DA06D338E3385FB6F252AFD
-:101F00006C9EFC53F6FBC1462DAC86828879ED7C35
-:101F1000DEDB652B4031CE7F1154533AC0B4BEECAA
-:101F20009FCFC1BEA1DB002ABD979EA0FB6775AA0B
-:101F30001F459B71ECD74521BCB435CE560053F1FB
-:101F400095293A50CC6C5EB88AFFE3947850B2C3BE
-:101F50007D4BB633AA2FC7DB764122FEF07B7A5346
-:101F6000508E227E0B12DCE3A3E679DBB6A89BE45D
-:101F70002EB2AFAF20B9134B32A2E681E3FA4FFA8B
-:101F8000B09F8D7F573300A643656208E52F844AD2
-:101F90008F84F2BA3F027708E59F718A8FD39E73D0
-:101FA00087FCB217712CF928FA7A2944F4719EC77C
-:101FB0003EFAC27138429EE9F604D7050BFE180FAF
-:101FC000E3AFCAA3E2E80E114EA76437AA01EA8F75
-:101FD000E12017B69F810A88DB3428480486AB0CC1
-:101FE0002AF6DF04EF0B73B0BDB279C871785218CE
-:101FF0004F87271ACFA445D1788EA98CC673EC8A57
-:1020000068DCC679A3714ADD3825EAFE4D9B0AA338
-:10201000FA373F561A353EDD5F16D5CFDC5E1E35EA
-:102020007E52D3D2A87ED68E5551E373D4B551F7E4
-:10203000737757DD90FEF303F551E362F53FB5E3A7
-:102040002751F396CAF7CA9011E6811FFF880785CA
-:10205000A462D23FEA210423F53FD3E527C6FFCD92
-:10206000FA7F98F49F1BA17FF9DE44AF356C6FB106
-:10207000ADA6D79FD05AC7905E714E14EE0AE919EB
-:10208000AF0D1AACDB256C1DC89D7BF1FA63667E33
-:10209000FD5181CF95B83495D6EF081EFD5AC21672
-:1020A000D5C2ECD0FFB1456D44DE3C2A2B0DC4AB4C
-:1020B00017E54A09509E54549D2E1379A4838D012F
-:1020C000E4F7B33ADDEACA08F99EB373BFF29C5D48
-:1020D000C7DA5F18D156F1BDA916F09B0BD973B4BE
-:1020E00036FAE7015CB72D8981822F2CDF3E7F0E07
-:1020F000DE77F4652B0E0033F56F01381FCFE53D19
-:102100001FCFE55C65521AFBC87FC8EA2492A7D9A5
-:10211000EEDD69C7F79C979E30E09BC1E0F21BC8DB
-:10212000EE52CDE0B7E1FB1A0DB0BA12FB0E7049CA
-:10213000F5D826C24E3BE18B622857911487AA72CC
-:1021400013FBF0FAFB24D138B231B70E6600ACD4E1
-:10215000FCE1C61CE60F87718DBDA450BD9208D866
-:102160000E3F90C9AE9FBB0FAD10EDE99C91E3A16E
-:10217000E17051F8C9CF379B597B69B33DCA6F6E87
-:102180006C7E2141C179CE65C3A240047E5D84DFAF
-:10219000746A6586DF80FAC764826770DDB7934929
-:1021A000689FD4BBCD8A439EDAF10F95807A30B612
-:1021B0002DF1A34E60A55161E3B5797CC1B94038DA
-:1021C0001063E9FA3D1FC22692EF9E6FB18D785FD2
-:1021D0008FDDC0DED743EFC376393676C46D39EA7A
-:1021E000C541EDD1390BC82EF07A48C2FEE26E30FF
-:1021F000903D2CF1A61B489E93E03EDD8EF29CB5EF
-:102200002BECF91F42A581E43A735F6D028DBB365A
-:102210009F360F0AEBC078F2A1C36F4846BF3574F2
-:102220008BE4DEA5B0F799E97AE5BDA94F5A95F0A0
-:10223000FBCE80B7FF34EA7B29B8D9BCDAFC6879D9
-:10224000517EF18D8DD5BF4BCA207FA80333F9C3D2
-:102250004E13F3878355575A5FC2FBAB53FB6E3265
-:10226000E273E7ABBE9D4CB8ACDC218382FAFF245D
-:10227000C1FB07FBF4301EE71EF87302DD5F6552F9
-:102280005F7909ED00F698DCAF003DB7873DA78D7B
-:102290001BB0CFFD8C78072508D4ACEBDBA786FFFD
-:1022A000BCD773C612CF347E3D28F855FF5AD65896
-:1022B000E2537DC2357EF1FE2B9963895F3324CED4
-:1022C000CBD879BB905F4A16AE1B79A520AFBABEBA
-:1022D0002A4B223FB1EFB8B388E4D483F76AE4BA5B
-:1022E000F6BDBF2A97EEC359D70DC94BB6E947399A
-:1022F000EF012E678FB08F15C1A422D23BDA9DC5A6
-:1023000081E356FDC76BFDBF257C3AF7BCF2388DE3
-:1023100029BE313C34FFB4379EC7231071CE2D70D7
-:10232000C13897AD47510721DE4DF9C2F5FCD65EA5
-:10233000F20BC8AB2B3A747C99E4AF2A81FC82057E
-:10234000DC0AB5E865DE9B8D7A6C3CA083A7B16B97
-:1023500023A7A6F99F12ECCB3AEE7FB06F4EC1389F
-:1023600022FCD324C7BF2EDACAECC7635D3383B91E
-:10237000442657F1E1AA0A7A2FF4A21F47592BF1FC
-:102380008FE2C16CD874280EE59CB103F3031C37AF
-:10239000F32CBFAFF9F55921DD1A63228DFBD91754
-:1023A000B28D208A8E03B30F977F4AF3CE8688E7DB
-:1023B00046890FB31C7F5F7C98EFE0FE2190CDFD36
-:1023C0007B2014AFFAD3D9B44595F9C817278F1FCE
-:1023D0002D8839D9B1511AC836A31F5EE468DEBE14
-:1023E0007D02D26122C785FA8DF45B29623CBE96DC
-:1023F000371E9EC2FC21FC05A522BCEC42E61879E2
-:102400008AD1EE78307647E59DA123DFD8FA701D9A
-:10241000AD4EE5BF485F4398D7905F88D3F7191D4D
-:10242000A3ACEF4DF2AFC8FFE71C3A26AFB943F2B9
-:10243000A8F87EB3E20109D71067B74F93A5F0F86B
-:1024400032078F4BB547CEA719515FFDBAE3B63CB3
-:102450009CBFA6FD0D1B2E1F7E6CF3AE73E03CD51A
-:10246000E73E9841A10B199E569940386524923D4C
-:10247000E5EBC1AF2F1C29876F072E06295FB72315
-:1024800089B5391D125B9F2FC4D739D0D1E88CF4A0
-:102490001BD79EFBCFCEF1A4B73D636005F9E3FCEB
-:1024A00060D106E231C962405DBCFE552E9BEF094A
-:1024B000473ACFAFF5A0A7EB00AA6E290EDA63C0AA
-:1024C000E770DE81AF64364E9B37BF63AE6C471E4C
-:1024D000E5859A0E525E18173429A4E7B89781E370
-:1024E000128C637ED1D7B510287F1D74805BC2FB30
-:1024F000ADF1431F132F863A4DCA2E89F06B022788
-:10250000CEDF6AE4F133070DE10D6BF8BAF6BEB821
-:10251000E0CF81FC15F2C3A3D27D7D13DC628DC4B4
-:102520003D81C9FF4B07E7576B7C486725BF8F9CF0
-:10253000DCC5E40ACB09ECBD9A9C39AC0E68350EBB
-:102540005D78DCC5E4B2131F7280CB09C12CE515A0
-:102550007ADEEE61EB88B32B6EBF34522E5F01E65C
-:10256000C56877CF6E816B764E76EF8B0FF7CD68AF
-:1025700013AD1920FCC229968784FBE8B04AC2CF6C
-:10258000BFF1CF67B66F9DC3EA23BF8C7CB0609B61
-:10259000E0A47572FBC2B2C933A690E3E0469C2C5E
-:1025A000667EFFDA78E4BB95FA563ECE9D68B79416
-:1025B0004BCC6E80ECA64EF89987A4D085DB50B545
-:1025C0005F860E1628284BCDD1B7196FAB75C19712
-:1025D000F2F17E59BC3748FEF7AD8F7460C3F57FCA
-:1025E000FE5A9C5A817864EF6F4EF65847CEF7D466
-:1025F000D92DCFA792BEF74B0A228D79E1501AC987
-:102600005717FCD4E8C17661C7EF8D149F5639BDCA
-:1026100047C80E4A3A1AE6117EB3A0A9D16E657E6C
-:10262000D14B3C0DA470FF317C6AF2AE8608BC2F02
-:102630003978DE0243DE9BC96E82C23EBB28FFC1F1
-:10264000B65DE461ED0756662AF9E1E7FC703015E6
-:1026500070CE2D70389570D6AE0FAAFA45C4A7DC9F
-:1026600033E6D59E08BE5D10F67E41BCEF1F9DDEB1
-:102670008F0887EA039F186DB82EDF1F0269149F29
-:102680000298A7D9BFC32FFA62ECC6A71F32D2782F
-:10269000DF45607E04F5BA3511F5B4E74CC79435D3
-:1026A00056263F24E2BADBCF9998DF6C4FE7F6D786
-:1026B00070FA7201F9ADCB9DD537135EEF3B0C1A62
-:1026C000CFCBE2C99EF602F3639A3DE6913DA2E8C4
-:1026D00079C4F362EAE7B0F95A8DBDE5CCFEDA754C
-:1026E00040F6873C67BC479EDB29FFC8B323EFD980
-:1026F000F359CC9E5B7B31E061DF8F7E7C12EB97E0
-:102700002DA37E6BEF7C3BB3671D425B4876193A85
-:10271000C8E609604C23D549501999A796396C4CE5
-:102720005ECD3F563AB8FF0F642B896E5C8F45969D
-:10273000A3EC20225EF2BE88A72B9F37FCF4C509CC
-:10274000644D222E88BCAC4BE4C1E02D62FEFEC776
-:102750002296D5BF53BAB805D75BDF2373FF2F7816
-:102760007250E4C98737A7B03EC50B05F5341D5B31
-:102770000FFAD3199E4DF3D0C6A06451D3216A4BF2
-:102780002B03F3107198B3A2F790819B732EF1AFD6
-:10279000EDE00F72F5C4F77326884311DBBE19FA1A
-:1027A000F875C4E1912EC47F94B884CB61FC4304D6
-:1027B000181FAFC79B41A9EFAED96E4CF99F1FFB05
-:1027C000037D1CDA0F1103F1C87B7ECC4FFD28502E
-:1027D000BBD333D58938FE36C93BD589380E9EF830
-:1027E00026997C7AFBA94F6CE4EFDB8C9E5CE25966
-:1027F0005B06D60BA3F0738293F3A7D8149DA76B47
-:10280000ED5227E7FF643F3C43FCA96B93ED2AEAB6
-:10281000BBBF4DF618318FBAE0F126EB11D28BE039
-:102820005F3E9BE2BBA87FD771D8611DE52F18677B
-:10283000D6BF6888AA4B6BC4BE4616F46D4B459C48
-:102840007C2F4BACAEDD18938FD450FE5240F54533
-:10285000B391D653F572CC3C94C714D0B8EFAE7395
-:10286000973AC53E472664521E833C62F5F4D06910
-:10287000D9BD8B62A01EBA4DC8DF3D3A8E13FA4D0A
-:10288000668F5A3E637279E691DDCFD3E28AA85B08
-:10289000875A2595D9CF6EF4F3D82FBDA83403C736
-:1028A000E154CA0C5A0FE765A99E8F2F0DA633FB82
-:1028B0002BF1603D8FEB5E8FF5BC4AEBD6F23CD539
-:1028C000C0D68FE197E579B3406DB4E1B80DBB2573
-:1028D000B6EF53BDDB1095E7F9043E353B4E1CA126
-:1028E00072B23610735FE0E38BC1E70DFA316B24EF
-:1028F0004E8F3A45BE97066991F91E743B47AD0B62
-:10290000347CB43CFB4F069E5F7C20E6D7C6FD8B33
-:1029100093D7E7751E60FB4735AAACAA3C1FB4AE3F
-:1029200041BEDC2FF872BFE08B0FF8B8DADD921AE7
-:10293000A278F533AE7733FE112EEB026B16A42A84
-:1029400023795525F0D8D86260F92FC02623D9E71E
-:10295000C69D31E3042E5531B8D479A518F9783ED7
-:10296000FEB7CA576DE0FB35D5C82FBFF2FF276F02
-:10297000ACFEFE5DD3DF149812A5BF454937A4BF56
-:10298000D83C79EF9129167A7EB83B83ED4368BC39
-:10299000899D6781C8B317EEE0F9687FC73C4B3E5D
-:1029A000D553C7F56E09E729EAF95F5B3EE251D8D6
-:1029B0002943054E31182C7AC68FEBDCD73D71992F
-:1029C00082F1A1B047CFE24B514FA14A754D614F03
-:1029D000A1253381194F12D50B380F8BCF83C72711
-:1029E0009ECC233FDB3DBF98606F385E68A13C62A0
-:1029F0001FF07D0DA9A738A92F22DE743BF9BEC6B2
-:102A0000B694FF7996F2FC857B0D6ECA47161A863E
-:102A1000DE9FEDA2F7EBDD0DD8AFE959BB258EF4B3
-:102A2000FE9AE4A674FC486FBDEB47A4DFA0C16E1C
-:102A300062F23E7C90EEFB5B24F7241CEFEBBC3D86
-:102A4000B715FB85CD456E82597B5FA14379A18285
-:102A5000F2C5711656C72FBCC9C0E2EEA5F1965F4C
-:102A600053BE54E5695E40FEF8D2DBFB8CE40F06F2
-:102A70005B2548C1851C4939F41B3FAEF3D29B2727
-:102A80008C9494CF6B3B61ECFB8E7CA25F9521C450
-:102A9000EAF72623D541B5CD5ABFCF487AAA14F913
-:102AA00055DDCBBF67FD2AAA13F07D553B6555C1A7
-:102AB0009F873ADF3212DE752D128C4D8FB8FFB230
-:102AC000C4EE6BBC5F0B9C076B857FAA16FB90D591
-:102AD000B40F89D7613BF7371AEF1FD8BDE40885DB
-:102AE000EF754DD17EE841C1F30D5497B2FADB6B1F
-:102AF00024BD6ED811334EF0FCC1EFE1B93549F871
-:102B0000F31CC8219E5F9ECBE3C9E513F1963C5CA4
-:102B1000D7E563B21BE03BF9CEE2EF71912F0C8752
-:102B2000742C9E69E3063AFECCE28DEFF8B091F288
-:102B3000DB05C12F983E2A8207E613DE7782B7862F
-:102B4000F0BB3368B193FD57F4717F501E34A9B4C4
-:102B50000F7E2704B6929E07BB5EDDEA24DEFC1BD7
-:102B6000E70D087FB741E0BA41E0BA011D7E12BA15
-:102B7000D8AABC032F61BA0FE5C0FD507940F8A177
-:102B80009DD13863E4B98FF4551734C1D378FF0E63
-:102B9000E18FEE68E1FE28364ED6897D80C171B99D
-:102BA0008BD97E2BD6BB94C7D5B444E35F27F605FB
-:102BB000EA62E2F0CD497CDFEEFBEAFF583DCD8DC5
-:102BC000D153C510E74F39C53D5C7F77684B1EED8B
-:102BD000DB6978C5EAA95BC94C1CAD9ED5DAF7451F
-:102BE000DEAFF517237129DF0CD89BAC9175FCABD8
-:102BF000493CFE54CD92FDA4E76BF5CEC443058A53
-:102C00002E5CEF609DB332690CAF7BA6E1D4472701
-:102C1000C8E07285EB9DA7525EA828A47CA585FB21
-:102C20009181129C2F91F27960FECBD76252A94E0E
-:102C3000F1217F589D43BCC1B63228DD4EBCC1FA9C
-:102C4000611DCDBF84B68E1187251D3CEF5932FF23
-:102C50000BC6B76313F97A87F5CAD8D1EA09AD8EE6
-:102C6000A8FB8AE7A9DAF53AB47B1A5F1794585D96
-:102C7000DC76F0EBB474F49F839D57D2D660FBA250
-:102C800058BF96A70E619E9A21F214CA9FD77395DA
-:102C9000C1064C871F431EAE17710EA4ADCC4EEA81
-:102CA00028D925BEB54B7C1F673F5E9889FEF78308
-:102CB0007896C70C9CE1E743F4FC1398470DAC0DE4
-:102CC0001C76E2F8CBAD128B7FEB31C7BDB570A49B
-:102CD000BDD70A5E36C01651976D656D79F6DE4F29
-:102CE0001E277FD46256C8BF0E74341AD9FEB21A9A
-:102CF000F17CC6C87CA856F0B7F67BF6B55E4D12DF
-:102D00007152F012D7C1F2DBC163B2DD2431FC7E17
-:102D1000353E122791FFB41D8C637A1E3C61552904
-:102D2000CFFF5CF0EF92D8776F2891192EBA59BC7B
-:102D3000CDED7A2B83F44A7AF0D23E4AD75B533CEE
-:102D40006C9F4F65F654BD5BA6C3BEB0FC010BDBA8
-:102D50000BD5FA1ABE3E812FCA35D9E80ACBD5AEBB
-:102D6000EFB3B947B11B493AC8F4A693A2EB5CDFB5
-:102D70007EB9528DB0275CCF6AF26FFB053F403FB2
-:102D8000944C7EB9334961F23504B99E759DBCC53A
-:102D9000F72FE7FB3606F6FE11F7CBFC3574FF7212
-:102DA000BA05184FBEF25750FF910C99F9A9473E4A
-:102DB000A8CA8288F783C4EB719F612899D5C3277D
-:102DC000744C3EDF89E1E48956F283CDF3ED79E47A
-:102DD000DFB87F389261D948FCF6D37BC786E759C4
-:102DE00098C4E33CD07A53289B7991CF2BD6BB056E
-:102DF00096321CB6089E75897C14EBA633648FB19D
-:102E000075D3F5F2DD88FA8D3D7F79AE72F247C851
-:102E100083C2637A3FD5EBFBCE723FD1D0B9E17765
-:102E20005407FBCE9B80FCC4235D1BB2280E83D7C6
-:102E30003B95F2BBCB5D0F4E65FB97D21626979F55
-:102E4000E44BA1BCE97432E543B59DA793595C6F8F
-:102E50009FFE02E5499817DD41D7315F61FC2BECFD
-:102E60002966FCDB77BC3829930407B785E6AD3DBE
-:102E7000A6AF247C6A8F15BF5741F94B4F19CB93EE
-:102E8000B4BCA888EA71CA938E4D8CCA93FA057EA9
-:102E90008307E2D8FE8704199C3F30318A3F356DA5
-:102EA000EFB07CA2A643F644F2E8DA732E3DE38D40
-:102EB000C1A5B0F91A029287F1632F6F6B3AF6B190
-:102EC000F5551B024CDF0D2D067EBF95B7004DEC6E
-:102ED000793F38FD84C77B7409F5506E5427D0FEC6
-:102EE000FABBE9BCBE88D5C77617DF4F78F79CF7E9
-:102EF00066E2CBBB73BD59F651E2861FCA78DD2D61
-:102F000009BCDB0C2CAF8C1DB7CDC5F77B6C491011
-:102F100075DEA8B5F52ECE9F7223DFA78ABD7FABE5
-:102F20008BD7CDF8EF191DF2E26485C1FEB4A82756
-:102F3000C6A1BFBD4BF8DB65771A58DE71529C33D2
-:102F4000DDA5F9DD121EBFB5FDFE253BE1492CFFD5
-:102F5000E14BC863E7604B3CD17EEF6E915F2D5B28
-:102F600014735DE453777F4F3E35C325FCE16498CD
-:102F7000CCEB06AB85F645BFEC36D86526B73AB143
-:102F8000327FE43A357F73449C0F75A31FA4B621AA
-:102F9000E743B64FF5EE8173BF71303F1A07197CD6
-:102FA000DF91EDD7D75E67BFBEE19A9DFE308A778D
-:102FB0009A9EFA29CFCF1BA9A7A502EF5AF3252382
-:102FC0003BB7844DDB7572F89CD264F07A52711D68
-:102FD000868EB9213ABF6CC831B17CA9FF764925EC
-:102FE0007F8F72A69922FC7DFF389E7F3DB25C6286
-:102FF000FBC207723E6471BC36D46B245E4D6E5BBF
-:10300000F324B35F3F9CA27A49D3E762338F9FD703
-:10301000F4A8AD976E2AB43EA79FFB65176B693C79
-:10302000C5CBBB447C5C5C12ADBF2CE85D40FB2390
-:10303000F77824962F5D4FEF4B574C7B87DCDF8D65
-:10304000EAFF9F5CDE875D64EFBDC3CB697FF7DD80
-:103050009C4FD328BED65D87CF7E81AFCFC2CFC570
-:103060007C167E1EE6CE521AFB101FBDC3BBD9458F
-:10307000FB4FBABFD8A600CDD3F7AB7A89F4030CC7
-:10308000FFEBD9D13631EF36979DDB8B8B9F0FC588
-:10309000519FECD9A04E203F01793776CED7B0FFB3
-:1030A0006801E969E0C0B10263843E2FD5A33FA067
-:1030B000F8D2792859B146F24D27F8A667AD242DEC
-:1030C0001571339A7F97887FA4FFBD87EEA2BAB0AF
-:1030D000BF6D994B5222E26AFB49DBA48879FB83DE
-:1030E000321B8FF5D8E4BB1322E57C92C9D91FE0CF
-:1030F000F301F44D5E961F79BF919F1B99FB188FCA
-:103100009FCADEC4CEDD351EEB81F3B8AE6309B0D5
-:103110003825D61D30E20FAA33BA4C2A9D53D07EF3
-:10312000BB23C24E8E0A9C67627140FC9C057E994F
-:10313000E69D8933DE4B7D3D84E84C6E3684647EAB
-:10314000DE3D0188D73304AF67EA4307A402368E19
-:103150009D4B95422F1B772B0CB1D603763DB56561
-:10316000E0666D89397407B993BC40807D97144A35
-:10317000D63B2E98D951298CA6BFF0FAF57041E3C1
-:10318000290EC6A487EDE3C78E1B1676EFA6DA825A
-:10319000F4DC0F6C1FEE16E893E925B3F5B088BE9A
-:1031A00027BB450FE6789477EF611DB3E7AE3E4548
-:1031B000257FE64E12CF7D86CF617FA687DB2D85EA
-:1031C00020FA6E455B6F2C0EA5381FED0BCED46335
-:1031D000E5CB700CB1F7DD4682E3BAE782A2A7FE29
-:1031E0001F5DE9623F85D769F3449DA633FB191E35
-:1031F0007F12F191CE736C384F69930467E97C2696
-:1032000093AF579BBF14B3C1C4421ACFE31B6D8564
-:103210009F75F2731E1B3B9F9B6F27BCA450B2EEA1
-:10322000AAE5C6711D4C0626B7EDFEA181C78BC36A
-:10323000E75DEEE0D1B3F45D8EE4F1B0EF7ADC66E9
-:103240006B88F27364C7A5C8BCFBAA6BED5FC9DECF
-:1032500025C5CEF0022F28947F8C0D7FEF02579367
-:10326000C2DFD3108C1793C3E7FBDAF735BBD5A5C4
-:103270008A0EF5B2C26576935E0ACD6945540F3663
-:10328000DBBD7F75B1EF6C5A26B1C9F4EAF4CA848C
-:1032900030DF2DE02921BCB5737D49E8EF7AE7F6F0
-:1032A00064ABC4730BBA7DFA2EE819B417B373B4C8
-:1032B000EF8FF8793E5AA142DF1DC113F314FA2EA5
-:1032C000609BC3EC7E5AA2141FD76709AFAFD1CC65
-:1032D000BF276834F3EF0260EB74B67FF690388F47
-:1032E00068B4EAB2A9DE6A84783795F49ABC0F25EF
-:1032F000703E3EF4DF16763E1A2BF7D7F1DE9C3196
-:10330000D3C3F23F2ABBCF62EE1385E71C0D4F5D9E
-:1033100018CF156A46639FC2F09B46CF4F33A9373B
-:10332000D1BEC82A13FF7E49C30D15CA486D17FACE
-:10333000D0F0B393BE691D1ED4B7C6978C307ECF34
-:10334000C473DC0CF4E544267B56217F1D8BCBFF38
-:1033500001AF6B7F8EF0290000000000000000002C
-:103360001F8B080000000000000BFBCACFC0F0A3B9
-:103370001E8143D1F8E8389D0F534C941182D7B386
-:10338000E0D78B0D5B3122D8FEDC0C0CCA9C0C0CF8
-:103390002A40DC07C4FD40FC1E880DB818180C81BB
-:1033A000380DC84E07627B2076E386E86966676061
-:1033B000E806E2C9403C9B9D74FBCD251918CECA96
-:1033C00022F8B2720C0C510AA49B338A87267633FA
-:1033D00042E5C76BA3F2BB7419184E23A949D02646
-:1033E000CD7C466306062663DCF271E6A8FC504BF2
-:1033F00054FE5D3354FE4577080D00AEA32483B818
-:1034000003000000000000001F8B08000000000007
-:10341000000BC57D0D7C54C5B5F8DCBB77EF6EF6AF
-:103420002B9B0FC20642721302040CB8C480C14A1F
-:10343000BB89A0A0C85B502B585F5D02242004828A
-:103440005A492BFE73212104126041D4A0881B3EEF
-:10345000142BD8A0A0B6B576F9D0529FCF4645A57B
-:10346000ADA50115D4024DB5C8F63D7DFCE79C998C
-:103470009BBDF76637E0EBFBBF7FFAABC3DC993B44
-:1034800077E67C9F33676665318564E6117211FECD
-:10349000BE47C8040B21644CBC244155206309F984
-:1034A000919DE09FD6CF5C36D61312B511129B4B7F
-:1034B00048A78B76946AEDA49896B7DE28922C42A2
-:1034C00052E17D859026A1F6C8E05242D44122D92E
-:1034D000491FADCA999E1A72251F77371FF7B97A0F
-:1034E0003B961DF55E2C9FAFF761B9AF5E21D161B0
-:1034F00084BC585F84E5CBF57E7CFE8BFA322C5F72
-:10350000A90F60F96AFD242CA3F5412C0FD6CFC07A
-:10351000F2707D08DF7BBD7E1E9647EA6BF1F91BDA
-:10352000F57558BE59AFE2F3B7EA9BB1ECAC0F6347
-:10353000F94E7D1B9647EB23D8EFFDFA5D581EAB85
-:10354000EFC0E77FA87F19CB0FEBA358DE4ED20860
-:10355000E947C86DB79DB7CFA2EB1DF6C47DEF4C10
-:10356000CE2464FD18D10FE01AF6C4C7BE50717C9A
-:10357000DDEBBFB1CCE8480097EF1301C759EF2648
-:10358000D8BEFEC0EF893292907563BA7C2AAD4FE7
-:10359000E6DF19BEF3A87D5671BC9F799C4F8885E4
-:1035A0008D63A5EDB4DFD0CDACBFD63E19BE3326BA
-:1035B000DEFE54DB3BF6D92E7D3B7BFFE92DEFD8B9
-:1035C000017F6B63128922DE554268E950BADBFA4B
-:1035D000513CA71CB3115B3EC5BFD241BAE838EBE2
-:1035E000C63D12154B61DDB49B02EB7C9708140EAF
-:1035F000AA9B203D2830C6D5F1EF5C4D449CC7B056
-:10360000278EB2EFDC7A1ECB57FF211342DF5B77A8
-:103610009B1071D2F1D78DFFC217007A539FB10072
-:10362000BD21B92AF09F2E5F908EBD7EFCFB3E959A
-:10363000C269ED37EFCE980DF4379AF8E17B6B0F46
-:10364000FC9C28D03EB21BE1D7C0D7BD76E6AC3C8F
-:103650006F7172BAA49444C432BA5C17094412C0A0
-:10366000F75F0108143E166F04D7E4A0FD12E1E1F4
-:103670005F898CFDD6BA83EF015CD4DBACFE9D7410
-:10368000DED7F9A3E4942B3E6FA87F44EBAEBF478F
-:1036900089C50DF3FECC67A1EB7796C957A5D0D9A4
-:1036A000B8BABB8FC1FBAE6BAB02B0F675A3BB7CE7
-:1036B00055B4BFBDA813D74BFCC43F848EEB285232
-:1036C000C9EC62808305F16A9ECF6C80773FC0D3DE
-:1036D000573EC0894687EFDDFAAEBD52D7FF698DF0
-:1036E0003E04465FA4356A9FE68EB73FA1B5A7307A
-:1036F000FA217663FB66131D939C24ED560A68C479
-:103700009718D92920DCEDD347F69E776BF4B7C81C
-:10371000072E7FD41E4AB02ECA2776903BA9A5A2B9
-:103720001FE0B56E3CE597E2F83A2FC577CD1C2E29
-:103730006B4BA7BB61FC4BC9AD911D2289167199DA
-:1037400049FF7FE5CB0E3AF3787D7434DD50BFEA54
-:10375000C80043FF319D0586F6AB8F8D30B48FEBEB
-:103760002A31D4BFF3E93586FEE3BB2B0CF5EFC558
-:103770006E34F42F27B718EAD7D97F60E83FD13BE2
-:10378000DBD07E836F81A17DB272AFA17E53D10366
-:1037900086FE37FB1B0CEDFF52D662689F1678C879
-:1037A00050BF65D2E386FEB705B71BDA6F9FF1AC59
-:1037B000A17D66E80543BDC6113A0EF8F9C1BC5FAC
-:1037C0001ADEFBD7DA4386FA7B844C4A845F2230C8
-:1037D000394329C87BEA0ADE9F8A382FD01CD07172
-:1037E0003F46A745ED49E4246F7F66C73BF6B9061F
-:1037F000396965749CCDDA7745DE49FCFE20CE2719
-:10380000A4D33EDDAD6F67F3BAE21F54BE42BBA442
-:103810007E2BF9EAF6FAB1BF2657297D13720D8582
-:10382000AF3A5055F17B743C2A2F2D6CC9A48E30D1
-:103830003945C8BDF85CD3FB2487442D74DC06777A
-:103840004EFB1A80091D5BCA847AF136A88B4A8028
-:10385000742580ABC52B1BF064862F71A55362EED7
-:103860004BCEAA083F75222992E0FB82C3BF9CAED3
-:103870005722A101027D7E410CF960F24B2DEA6FC7
-:1038800042F9F1FECBC7D37F42FF13426405F657DE
-:10389000108E0D234900F4869A2D4776E6233C6D61
-:1038A000204FB4F7E803A58BCD57BD38D85067F348
-:1038B000BD64FDEB61C6BA36EE4F8CF0A47086FA9B
-:1038C0005DBCD26BDD7E394EB716E8C7EA8A289018
-:1038D0008B28078DEDDA772EA4784691548A473BE2
-:1038E0002B973A3CDBA0BC90921B211E428AC5500C
-:1038F00005C04DAD60F0518F3B230D385EEDD5C155
-:103900009100DFC4F602212B187F7C3859D4AF23F5
-:1039100019DE1AC06E1BA6A3831C3FCA71BA6AD4F3
-:103920006FE6FEB70B321BDF455145C7B711466343
-:10393000A996D0EDC218586D9048384F3F0922BE65
-:103940002611B04BED1A3CC373B1EEE276E601F7F7
-:10395000D863218AE7B501D90F63550A0AC783DF07
-:10396000077AC056269235B4B65679C70EFCD19C5C
-:103970002F67835CB749B5C44BEBB642CA0709F45D
-:10398000C8E21E39F120B91CBBD88CA722FA3A9B99
-:103990000741386AF30F0FEAB417005D8EA776313E
-:1039A0009DEAFA6BFBD62F2B397C5BC02EA6E53A3D
-:1039B000657A2A41BE253381BE9BF3B344E4530E9E
-:1039C000A71EB8E4BF6F073E5DCDDF5FEB7F07ED5D
-:1039D000F4D59A1E37C1B179F44984CF2C81E9E33B
-:1039E00096918E19910470992578B0BD19782A1393
-:1039F000ED2BC65F267AA12DBE4ADA6E57BC256B29
-:103A0000E8F813464A33812EDC6544B121FF065C99
-:103A1000D9F4FB0EDE5B524483FC706732BAB57F8B
-:103A2000284414DADFE563DFB3B9482480EF2F318F
-:103A3000E0C551169A4246513BE91F167C8FCE9144
-:103A4000D9114727233F5ABD6C9DA488E1C94BFF7C
-:103A500077B1808EA7C806BDB1BC5CF647E9779602
-:103A60007A5C484F563D5EE9779DDFBC1084F15784
-:103A7000E5DCE3584EC7BF50DEB40AD8D2F2E1E429
-:103A8000CF80EF2CE6FE83A6FF6E70023ED04A6721
-:103A90009787443360803BFBA403CF87ED6F1CD630
-:103AA000CDF315C19D89F2F56A7235CA854BBC7F8D
-:103AB000A13EF2C6E121080FF172E879A589AF9B1A
-:103AC000F235BDA5FAA6E9ECB2F302D36B442D475B
-:103AD000384B9C9F9BC6936EB05BD7E5CBCA0ADA86
-:103AE000452A93A3403AF0D74DBF0FB6190179ADDF
-:103AF0003475B2E73F32C8CDD5FDA7FAA37DC04DDE
-:103B00002A34E99B4BACBF0EE0A7EBFF31C0CF19C5
-:103B1000879F8D0453A3402FE149063F7655F9FD59
-:103B20004A94FE73D580470227880E8EDFA37CA8B7
-:103B3000E30F5B4E84E8BFAFC9C55BC44037C861C3
-:103B40008BEC4739450A64F447CCF32B1299BC89B6
-:103B5000C3D92E111D7F902911843BFD0BDAB33898
-:103B6000FCE85F8AEFF57F00FCA88E8E3A47E1F310
-:103B700046A984CE2793A8CE2BE9FB1291A03E48FC
-:103B8000CC47BEA5ED13E474E0DFEBFD20079BB846
-:103B9000DF47BCED3EBD5D3E4864788DB7477CB7DE
-:103BA00019DA99BDD3A4D9F5DEED06BAE8793F8DCF
-:103BB00024F43FFA89CCCE1E247A39FD6C47FF6D80
-:103BC00075E69418A02125FB7A7F25F0AB97201C81
-:103BD000343DA1E905AA2F0689FDE2E3C98541220A
-:103BE00060BB51FF2695D726BD9B52649403446F5A
-:103BF000CF14C07F73BC482FC4ACEF7919BCF1B2AD
-:103C0000F8AA97BE2489FDC5692293C344CDC4F5A3
-:103C10006B7C45B83D61D5E882307AF5F0EFCA306B
-:103C20009FC180E7080EEEA46E15D4DDA416EBE765
-:103C3000CB4AA200279BD4D54CB87E54F313F8513D
-:103C40003C0E936C1DEBC727D60FE5A207F16971F7
-:103C5000D59210D2F19D68070A6A885C447B30CC0B
-:103C6000F5AADF07785C555F473EA28B711C9C8CE0
-:103C7000FEB9941308807F6F0122C8A6FF7795B222
-:103C800052F22B7AFAECC123598EE3592958609DE0
-:103C900056977D16E801ABCB3B0DCBA211730528DF
-:103CA00053AFAF1391AD12D393361EA5AB79228CCF
-:103CB0009719427E96BC412C892B13ED57DA5F0988
-:103CC000269C07A703DE2F29DDF5D08D0607458644
-:103CD000F1CCF4E428A51E8988D54E986F7F8EED2F
-:103CE000FE739A960088DD24DC3C94E2AD7FD7AC6D
-:103CF00029A077DCA07FE83A5716971C01932FD5AF
-:103D0000EFDD70BD02710022001E56C360D7C0787F
-:103D10003F585E8EF10FFA37800A8B15C172E61F8D
-:103D2000044C76ABA8489A7D26F669EF08176DBD5E
-:103D3000DF4FB67E1BD1F115EAF17B2ECFBEBA93D1
-:103D40007D4FA5FF037E4C33E9D9D480511FB84D78
-:103D5000DF790E6089F05EF2BFF23D2FD96857C05F
-:103D60005E2914BD114ACBA9C49B067E946302F55B
-:103D7000EF68DD9BD3ADC2942E859795DC8F25949B
-:103D80009FF5F47F88CBD7ECAA4DB39AE8B8E74B00
-:103D90005D7EA0E7FE549C66A4F75E4F4B3D31F07C
-:103DA000734BF136A4EB06AAF00AC03F2816D15E89
-:103DB0005F5DF8BC57AFC73ED1E4502FFA208A347C
-:103DC00096FB93143E9642319032EA9FA70FB3FDC3
-:103DD00074B9F4E1BCD3888F6F8BAF2FBE257DFC07
-:103DE000B3DF5B992C3EC1E559765523F35794BE5A
-:103DF000FD83DE78DD88787550BF26917CBED08348
-:103E00004FB57769D02BC6B880F586EFCFD8D107EC
-:103E10003CAC33CCFE3F1B37A5CEA27C0CF6ADE408
-:103E200035F841AB958D2AD8F3E7C12E07FB305CFE
-:103E30008EF16152C8E2B5308048EB294A20C2FCBD
-:103E40009B08D1EB4139C71877B3643A8CFA7B866B
-:103E50002AE8E79F5227E33CECF0BD4C8CE746E0B4
-:103E6000BB162F89A6A0FDC9F0079F62F180072E1F
-:103E70008B0E347A053398D1ABF1BD553925241119
-:103E8000FE7A7DEF56E37C93CA25F37B2E4939A554
-:103E9000B35392BF2791533A7BA742DBF7E178A255
-:103EA00076DECB422A9507BEEF9310856F133465FB
-:103EB000433C94A03E6BF29578519FEF124C7EBB31
-:103EC000C2E84749C7FEA29DE94DAD9E7C3EECBBD2
-:103ED000F17D2405FDDA64FD1BEACB1E9628713ABC
-:103EE000EB0E6D92281E1B97076604D1BF3DB249A9
-:103EF0001A12EF5763D1FC76AA3EC7C6F7072442D1
-:103F0000FB21DC4472F12A78E825CA588026FBB3ED
-:103F1000934E6CA74F391E89D0E3CFD021DB609D33
-:103F2000189F3886FD60A08B186FEA6275FA22D45C
-:103F30005BAC8100CE4B0ADBEFA1F06A49E17585ED
-:103F4000D7D378DDCBEBF9BC4EF505D49D32ADD39C
-:103F500032C51AF662DDC1EBF9BC9ECEEB69BC5EE0
-:103F6000C0EBC246ACB7C86CBC3552848DEFE0756F
-:103F700085D7D379DDCBEB05BC4EB6B1EFDB58DD91
-:103F8000618DB0F19DBC9ECFEB19BC9EC6EB8379D1
-:103F90005DD886F564F8731452F81BE44367BC8E51
-:103FA0004A84C3B5A7DE656A67F49221106E87A9BB
-:103FB000D960B71D98757F36C4431F3D71B50FE8B2
-:103FC000A7E1668D9EFC283F49CE4D28C7FA737F36
-:103FD000AEE1CE1518876808C98C89787C26DE5E2C
-:103FE0007204F4F6F919A21F1ADB92F82FCF723B74
-:103FF000FE191E97799AEF57EEE4FB95DBF97E6583
-:104000003BDFAF7C92EF573EC1F72B1FE7FB959B41
-:10401000F97EE526D8AFA4FD36F0FDCAF57CBF7267
-:104020002DDFAF6C81FDCA6140EF7558AEE2FB95A4
-:104030002BF97E6503DFAF7CE4CE92DF16D2F59DCF
-:104040007789680F24C347F16EA3FC1CB1C3283FD6
-:104050008BB6A41BEA43370D30C8F7C256E3BE4502
-:1040600041E308435D595662A8E7DE778D61BC9C49
-:1040700085C67D8B01736E34D4FB05A71BFAA74F51
-:10408000B8C350F75E5B69A87B4AEF36D45DC5F7CD
-:1040900018C67314FEC450B7E7AC30F47FDC52800E
-:1040A000F42567AE31F4935C1B0DFD6A1C81CF2DA6
-:1040B00020EFA6645E967C237F57B3F4F2D2AC1F48
-:1040C0002CB92410403DC7F411C66821AE3688C50E
-:1040D000AFEC1FDE7004FC175B21D353E6789579B3
-:1040E0003CD9F5D431957EA7DC73C4D7A5A35BE298
-:1040F000D3BD47979A2A3139B9E64146DFAD0F263D
-:10410000A673D404741DADDF248E17BB258B418F9D
-:10411000687E4DEB8302F6FF67C7D7DACDE3C6BFF3
-:1041200047713D566FB744F87CA88ED0D90BD6AEF8
-:10413000B4D904F53CF3972D9CDFCB27F84F3452CC
-:1041400078AFF412BF8DD657BA2A02CC2E1115942F
-:104150000FCB6E46BF5EEBAFCDABD1359DC917A27D
-:104160008B5BA29C7218E20A2B33FBB6DFE4980546
-:10417000E37F969840A2542FC95270523EE55FF9F2
-:10418000A8C5BF9CA07E4A181F206423DB77F619C0
-:10419000E3A68D734CF28FE7655835F9965981CFB8
-:1041A0001BBD7DCFCB06F382F9F07959634E2C2DE0
-:1041B000B1149CEFB85806D6CB6269585E1D1B88B7
-:1041C000E5D8583696636283B12C8DE5637955EC5A
-:1041D0000A7CAF24361CCBD1B1ABF0B93F361ACB39
-:1041E0002B63DFC1E7A362E3B01C19BB0E9F17C7A7
-:1041F000CAB1BC2276133E1F119B8CE5F0D82DF876
-:10420000BC28360DCB61B11F6039343613CB21B1D8
-:10421000D95816C666613938B600DF2B88CDC7324B
-:104220003F762F3E57624BB0CC8B3D80656EECC71E
-:10423000580E8A356099135B8EE5C0580BBE372047
-:10424000B61ACBECD843F8DC17DB8065566C339696
-:1042500069B1EDD8EE8DB563991A7B169F7B62CF5D
-:1042600060E98EBD80CF5DB1BD583A63BFC4E78EB3
-:10427000D8CFB14C891DC2E7F6D8012C2F85A74BAA
-:10428000D9C1651F1BF79FC77E68DC7F2E3D6A94EE
-:10429000E3256F1AF79FFD878DFBCFA35E31EE3FBD
-:1042A00017EF33CAF111BB8DFBCF453B8C727CE815
-:1042B000963B8C7A6493518E17B4DE6DD4238D4671
-:1042C000399EBBEC27463D72DF0AA31E59B8C6D003
-:1042D000EE9B6394DF59E431A39F3E619B518F5C59
-:1042E000FB53C378AED2E74D7E4D04E58BA3F817A0
-:1042F00086F7EC85074D725965F2C9146F0790C0B7
-:10430000FEE652E2F0835F63C6673A970719C0770B
-:10431000B4CCE47CD70FF88E96E9372DF4013D64D8
-:104320004C2D9B0576CC85138202B132616ADD305B
-:10433000D8EF491F48583C818CB80EE2684DD95AD5
-:104340009DA8026D6F1A4430BE40D4E5150117C612
-:104350009BB1FE5BE9C10AC88B69B2F276B292B535
-:10436000A7B0FAB1C6392BA03D3DB5231B12991E4B
-:10437000B72696E75D12DBDF1B28057E27D1F5FF08
-:10438000B5BCEB7E88CBFDBB3DF4AE449F2FB4871C
-:10439000F2606BEDAC35F434A88E02217014FA8D06
-:1043A0001402EF4928B78D71D629A038E9F37C298A
-:1043B000F807E89731D527C0FA353834B9FB9ECFD6
-:1043C0005B5C3F35A511F437D5D57C3F18FE34BD75
-:1043D00041F5E1A34E0FCAFDC86A799B8DD9854688
-:1043E000FDA166CDC6786273D312D4C7805F4BA29D
-:1043F000386B17D653C1BA1C0C7181EE5C89968B51
-:104400006CD126D0275FA5751E172C088FF3B09EA0
-:10441000FB6F0C61FF15CEA965B01E0A8FAF383C4B
-:104420002EF4050FFA17F4D1F9F934AADA2D18E2AF
-:104430009AA9969060EDC7F653617C5FC88F7ED9CC
-:104440001F25166FD7E047FFEE4BD7E23804DF4B4E
-:10445000B18EE93D9E368E000003BAE67A51A3EB99
-:10446000BA247A4A8B7713F5E66FB5EF7444E67E8B
-:104470009CE93B16C98FFBB6E6F72497510E5A5DAF
-:1044800021CC8790A5C4FBBBB28DEF5B6D997A59A7
-:10449000FBDC3BB47534DE7C59FDDBB5FED43184E6
-:1044A000FE391C8E64CBCD4877055C1FE770FBEEB0
-:1044B000D09F6E58D14AF939429FD912C41122CDEA
-:1044C00022EE6BE6D45082CB8FC37BA0C2EC42EDD0
-:1044D000BB036B8D7198031A1C375D1EFCB5FCCEB7
-:1044E0001C4AF8BF28E93D0FB2632A5B8F9755A598
-:1044F0000D417B0A9D5701A3253290BA23FA38A0BB
-:10450000793E84EF5F0CE4C30D74B1FE649771DCF7
-:104510005EDFB5BC32BA2F3DD8EB3BDF723FB0CA8D
-:104520009A783F95E20BF13DD064FF69A5B61FA8CC
-:10453000D50FFDA9DA0E7677D3C24ADC6F6FF23160
-:10454000FD4DBEA6A38E8DAFDB3CCE4E0EF7EDDC4F
-:104550009FDCB9A902F31FC96E237D0E79F8564777
-:1045600088D96FE9503ED5C6FA0DDD3C873FAFC410
-:10457000E7DB5BD9F3C16B4BF9F3127CBE23CC9E16
-:10458000176E98E080784EA3B7221DE33A75F44F7A
-:1045900027EF86784322C4E386B491003C1BECF5F8
-:1045A0008B20FF0BBD012CB5790FDAB4AD7C38ED53
-:1045B0003F6861703AE4B952C2C4FC430221153A23
-:1045C000EFC7F87A73B5F690B1BD8D7F2FAFAD729E
-:1045D000F970FACFBC85A18D934BF1997F0889F7CB
-:1045E0007B848F63D7DA03C6F6306F575A4FA21811
-:1045F0005016FADF9904FD9A8DDF5BC7FBB928B32B
-:10460000C1BC0B16061CC3615E45ACDF131ADF9AF2
-:10461000E482146E249375DF6BE5F3B62C64715657
-:104620004D3E6CE37180AD10071816EFBF46EB6F7F
-:10463000DFFEC4C7548F4B0B593EA9D6DECCE7A58D
-:10464000E5E514DC678CDFFEC2CAF8B85B66F15B97
-:104650008DAE92D13799271AFC3D127218EB337444
-:104660007621D403038CED6505C676FF0863BDA8EB
-:10467000C45857AE31D42FF4C4613A53F471182D95
-:10468000A6F384B712FD9078FCAF3B459F479ECBC5
-:10469000F9EDC9BA12ECD7E0E27C64CAA769522AE4
-:1046A000ECFA7DF8BD9C8FF6413C84962F40FE3697
-:1046B0002DF78F0ED8F341BFBF67F16F23C9E1B665
-:1046C00095E3710BE7C3C7009FB46CE3F87C84C724
-:1046D00075D6F3B8CE5A1ED76981B80EC667585C36
-:1046E00067158FEBFC8CE7A1EFE1719D67795CE7C3
-:1046F000191ED7799AE7A1EFE479E8DB795CA79DE9
-:10470000C7752672F9BD7F624736C4D91E9F98D8F7
-:104710004F9E28337D168480262DAF224A8315E8CC
-:104720009AC206F6754AEA148B0DF262030CAE25A6
-:10473000F3148BCCF271F06F3AFF0EE815CC9F7931
-:1047400093E7F5E450AB4847EFA30F4709E47564DE
-:104750004DF08E8690682AA747DAE6837E5C0D903E
-:10476000ACC35E307388640978E57E303EC17EF963
-:10477000BBC307C19C1911ADAD70D2F78B5E0E564D
-:10478000504F9B0C2DF21F1414C8170A8880E7FDA8
-:10479000E5FE234A691C5F741606BAA073447D9631
-:1047A000A7E9876B8D7471556C2BDACB4D753C5F27
-:1047B0004A2109FD78ADF45E2B9AE249463FAA6989
-:1047C0009931DFC35C8ED861F4C38BB698DE57FA9B
-:1047D0007E7FE826D1145F33E61137B9A6F7191F9B
-:1047E000CF8F4DEDD35FBCC552799D3C265E77C619
-:1047F000BE8BFDCDF6A004761EB557A5A37200ECC6
-:104800005DE9A837007113E9A8C24B3F7F1EE0F5B0
-:1048100020D6A9DD1884F1295E0C76A3850A7CD800
-:104820001BD90FC21DFD908B2B02D418DA7F1B41C0
-:10483000BF224D765EA7827114988BF891397E3233
-:10484000E4DAA7210E12A911C9365A7F7C61DFF282
-:10485000AE575E852B80FB4939B5DE124B1FFCBE7F
-:10486000A9569C94689F6C31A7EB95B5D3BDA83F22
-:104870000E5F326F60B1ACCB1BE8772BCF1B38C318
-:10488000F2E20669EBBABF6F3A78D4B48EFE49EC17
-:10489000EAE735BE73B1BC138DEE330AFAA6935521
-:1048A0005C3EC62222E904792B05507EF6BB358496
-:1048B000F9F1A0A0F57CD2F4CD75C887EA83EC1C91
-:1048C0004FBF5B03449F77AFCD63504E17B875A4BD
-:1048D000E9C03896C741E10FFBD74D0708FF8E8A24
-:1048E000C2C17E1FA980EFD9492DB1437CB3CEAFA1
-:1048F000C2738B8BC10BFC55DE1FE7D5BC4CC49437
-:104900008A86092C3EAAC97F8D4E1A7C3C5E3F41A7
-:10491000C278B7E4AD8D02DE9B46133C6F43EDAE2B
-:104920008B1735FF06F2BC323BF1DFD6A26814E8E4
-:1049300092042621FCB4FCC026775639ECD3ABF3A5
-:1049400035FB82E7A14A7E3CB790D3368AC5C33295
-:10495000C3985771BF187A4EEEA7A7BB0E844F536A
-:1049600092F3056B6596F7E44B82D7F7B91CCE90AE
-:10497000A393993F4AE93F419CA093F7DBD23CFDCA
-:104980007743499C7FB5F63F4A0AB66BF59C988CF5
-:10499000F3266DDFCE0FB85EF3F74CFE9B550A1A77
-:1049A000FCB05CAB82FDB4BA9C699467973F4F89B9
-:1049B000E54316DF68C073C680BEF9A689F3CD85CE
-:1049C0004126BBA3B088ED1BF7D81D22F150B86E6D
-:1049D00035D193A647AC45DE0DC3F27BD3C5D66572
-:1049E00095AA00FB2A7E82FB426E7F4700F6055D9A
-:1049F000399172B08F291DFC15E840A38B9CB6B18C
-:104A000008EF1735BD57472A0209E6AFD975E06FA1
-:104A1000F9D2616493DF43825EF0AF7296331B720A
-:104A2000208F2B0C54FBF6FB2E77FF5ADB4FCEA5C5
-:104A30007FE0F7FC42C3F7A7A6B89597B2EC589D64
-:104A40007EFF3443B0E8E8B2C7CF37BD47FD0B6FF8
-:104A500022B92D594259361DBD98FD77B39F4D7A25
-:104A6000E5BD9512C89BB24C997404F21F7BFCED16
-:104A70002D5399FCE278B3727FB4B73F79A7BF2F6B
-:104A80007D627599F659BEA53FE9B719F34B2F3BE7
-:104A90003FF75BC6231A789E5E2FBFC3348E180E75
-:104AA0008889CE6D0C091BE12EB98C76C79556C648
-:104AB0009F839B8D71E4BCBA0189E39D3C5FADB2DD
-:104AC0004CC39372FB1F29BFCD3F62653E10F78335
-:104AD000B578D37C9E375D09796C144F7348D00349
-:104AE0008D678988F93167C93B9EAB747C536563D8
-:104AF000E7E848B3F5249CBFD0F2B3E686595D9B46
-:104B00004F759BB15E45A66741DCB56A9395403E03
-:104B1000D67C229DECD2E64FF9FDFB366607559315
-:104B2000DA26906B2B793CB1D24B24C8A7AA79E93D
-:104B300089B1709EA7C6C6E4F7E714FE8A2EEFE699
-:104B40006E574406FEFE68DF55DFFF0E81F7234DEA
-:104B500003406FA6253E0731BBD938BF4BCDDF3CA4
-:104B60005FED9C46B27948BB8484E7151FD0E25EB6
-:104B700097798E64BB8DE13FD939924BBDBF0BDE77
-:104B8000EFE31CCAA5DEDFF34FBEFFFC25E65F6343
-:104B9000EFBE1EE4C4AACCDA20C8552D9F651109CA
-:104BA0000520566379659A3A50D1F5F35D66BF1CCE
-:104BB000DACF7219FD0AFB1EEF1CD7C3BFD9BD5D4A
-:104BC00006FE3DFBD31353C12E58F04B0BB1533AA5
-:104BD00038B7DBCDCF8B4564D08F77EFB360DC8007
-:104BE00048D1B1B7E8F20531B3908EBFE0676EDC13
-:104BF0005FBEFB795B640A7DFFEE173F1A45281CF8
-:104C0000CEADE87E7D20D83D3F1558FE95DA35EAD9
-:104C100016FAFC6E89DC154CA0B73A391F9CF9B91D
-:104C20007306D099B0EBC00F71DC8EDBAD369D5EA4
-:104C3000F88DCD8AF0A7FDD879AC6784C81081CDF6
-:104C40004F9F2FAEE5BD9D794660F37BD91A498110
-:104C5000F9ED6A9743B4DFE25D7F43BABEEE677B4E
-:104C60003C0087C52F5B0CF267F12E4BD4360ACB84
-:104C7000133694F701973016E049500F2CDA57831A
-:104C800079B28B3A5AFE66F1C0FB46FEA270C17340
-:104C90001F0B3EB0F8A740FD85A73D60C77EDEB97B
-:104CA000D30370A5E3CE92295D7DF7EF3A3E246CE5
-:104CB000FC587AEFF1205203F4B5B86335FBDEBE41
-:104CC0009B4F837C5B6CE2E3CFE11FD9BDF547CC02
-:104CD000668C479E276F8E857D0AB22B23617E717D
-:104CE0008FFEE07CBD60CFF9AD709EF8CCF37FD92C
-:104CF0000A76FDC2FFFA72EB03100F7835C50BF28E
-:104D000068F14FDFF3101DFC33ECCC8E3FF7CCD3B2
-:104D10004F3D46F9E4DCEF6D68E79CFBD5E95C8527
-:104D2000AEFFDCDE7F64C1B9DBFB7E35B13FC0E3A3
-:104D3000BEFDD7F5EFCBCF00BA8DD8F4F88D207E2D
-:104D400095970596CCFC0A2F4D783AB4EF502ECCAF
-:104D5000F3EC311B9EBF594C9FD59500DE6A503F46
-:104D6000407D1985F7A2DDABFE66199508EEEA4095
-:104D7000113745A203C1C85EB4EF967F195F0AA53B
-:104D8000D5AFC078A41BE5BBF9BDC547297EAF4CA4
-:104D90008ECFF3E46B19E0BF78F76AF6DD0E8A4F29
-:104DA0004F6F7C9E857F8CEB8DCF12BB199F0B9F25
-:104DB000C4D8E8BE8C8479241A3E6BF6DFD6A7DD12
-:104DC000A0C9874BC1791ECF9BFA2F5BA0C20E7C76
-:104DD000F6BC53F5313C47A6D0B6737BCEE7124AFA
-:104DE000279F5ABB7F0872B2FB57362FF81D77FFFB
-:104DF000EA03E4BB73FBDF961576FEC42550BBE2E5
-:104E00001CE9F9EB043B6311DF335BBCC31DB579CF
-:104E1000E2F85A14993649F1E0F313F83CC2F8610C
-:104E200051E4C0AD4202FC2DB31730FD14E9877088
-:104E3000A9A19E0E9CCFD7E35528037C9EB81EE8FF
-:104E40002F193EB5F57B61FD57EBF0BA83F1B1B98F
-:104E5000FF22CAAF20877BE137227C00E5B9769B31
-:104E600004F991E7AC2CFE66C67B1CFEFCFCE4B7A3
-:104E7000B417EFB727D97FE070B814BF5F6A7DDF42
-:104E8000167E73EC0A8E6B86E399AF13EB838D5C11
-:104E90007E2C22B59306E8F499CD4AF5593ED87B8D
-:104EA0004175A0109F6F538705E5FC995D9608E852
-:104EB0000BB3BC584412EFDB45ECCC7E59F4F281C5
-:104EC0005120D7CE1CFC39A74B46F78B769F9055C7
-:104ED000AE1F227AFD90C4DFFE291F6FF12B89C718
-:104EE0005BBCFB6F09C7FB5C0ADC0EF3FFBCD34A5B
-:104EF000543AC4E71D964989ECAD4D76AB31CFD617
-:104F00003DF6582A7DCFE27128B0EE8615810F5408
-:104F1000B04BDEB1629C9648FE4F6D78DEDAA1ACF4
-:104F2000A1706BF054613C451BAFD10427C91744F5
-:104F3000BF54CA0C96329B3A62F0A7ADD4DFD5CFEE
-:104F40009BEADD1CD04BC7479FB6C23AFF6CB21F2D
-:104F5000FF2C91A6FE74BC3FAB827FB992C85F3430
-:104F60008E1F5A66218A5E1FDABA8FC37CC8AF5380
-:104F700008E4AF595E4D51419E2CDE9A12817DCDE1
-:104F800043FB2F3C05703BF7A48DEF73B23CDB6A0B
-:104F9000BEEF777AFF85ADFF49DB4FC3CBF4FBD57E
-:104FA0005B697FB0DB773B315FF3AFCFA78E2254D5
-:104FB0004E57FFFA81A9205FAAC1C7A2FDAB7FD6D9
-:104FC0003FD240C73BD58FD54FED191401BC2C7C87
-:104FD000E1578B409F2C78CE4980240FEDFFE0876E
-:104FE000503FF76B37E67B9DFBF5E9EF021F507BE7
-:104FF0005BD1EBF5F9FAF3DE74DC055067EDC245E1
-:105000002EEBC08F590025A5F7052FA7E2F9075D04
-:105010003F7C6FB1ADFB7E1688520788E8134507C9
-:10502000001F2ED865FCDE5FEDCC9E5A2C7757B161
-:10503000FEE1018C5F3BF1BDAF353AE5EDE6F7B53A
-:10504000FEFF612F308DC3DE5F6423B589E8DF96F4
-:10505000C2C65DB0EB9B61C6F118BDF6FE0E7BFECD
-:105060002381E5E793BD29B84FB0508E0E4D2FC672
-:1050700078C73CE0DB859EE8D034FABD5F7279B931
-:10508000D041EBF4F9003E0FE80F7562EF7A0EF0B5
-:105090005BF3520A017AAFF9B51BE3C9352F5E38CD
-:1050A000F5387D7E66BF13E37A35BF5E8AF8AEB110
-:1050B000457F08F1BDEEBD36B28DF63FB3F7B7B907
-:1050C000608F9CB14673D3FB880FD574D87832B803
-:1050D000711DD42F28AAA5F35137B0BC9C3AC2EE5B
-:1050E0001DA883A00ED0F18729EC1C31DF97BA8769
-:1050F000C7A3BE98A3A4E2FCAFBD893DE7F1867BC0
-:105100006E56FAA7E9E6017973E42AEA97C8B5C3AF
-:1051100040CE5A62371105F6FF6283B1D4FA59E0E6
-:10512000FE8662C8DF62FB7ED64C3FA9A6E5D2743C
-:1051300012C2F397AE1B7BF8EC7714C5F76C56FAE6
-:10514000C378FE14265F6A1C81F129980F69BC7729
-:1051500041DDCFD67581DFA7609EEF05AB6A03798D
-:105160001EDFAF6379837592F201C47DC9112E975A
-:105170007AAD9FF1D917DE74E4336D1D2DF55E9481
-:1051800027ABEB7D58AEAA2F220AE629FBB16EE1D0
-:10519000F0B015AB04EE99001E843F9B2B1880FBEA
-:1051A0002C604C88B75B5C21A42F9BAF16630576FF
-:1051B0007EFF8EC5A5926A17C467189C206E0C707E
-:1051C00092795D6A9B8270A5EFE3F3898ED09C94FF
-:1051D0003190EF3BC220A7E4CC1243BD17DC34BAB8
-:1051E000D8F3BF0D3F82F05A5D6FC772557D19C26B
-:1051F0006D657D00EBFF1FE0D7CAE0770D5174FCB1
-:1052000023675618EA49E1B799C22F33CE5766385B
-:10521000D4F1FC1C8D9F92F1EF23F504375F36D655
-:10522000B761A93D4F4FA2D7CFA6307BA48E8496FD
-:10523000E33EA897C56148A64A7274F127E253F18C
-:105240001C089E3785F69C9B307EA9E1D7E2954EDF
-:1052500019E59FF201AC67E91B5611E495A56E3B79
-:10526000F92843C7C75382290AC2D98F71E006AE15
-:105270005F57F6E0D3C81F2DF50A966B399FACE750
-:105280007CB201F00EF13DBF88386D9D44507F3EE9
-:105290004CEBCCDF8F127D3C3CCDDF11B552FCA333
-:1052A0004C52B064F7701CB34586D0F79CC52400FF
-:1052B000F49276ECC7115C2BE9C0F3D669DA3D3085
-:1052C000AF14A4CDC4FD1F62657A8A585819B682FE
-:1052D0001F65866F83FF20DE2F916C3EE5C7E70BCD
-:1052E000F0BD0B33D99E59E69D1DC7E03E0857AB74
-:1052F00013FDCA2C7F6D5E2ECA571BD2ABCB1F127B
-:10530000AA7578CC4A62FF2D734CFE23D0E38790B8
-:105310009748F1BBB16D700AC0B9C5DAE10379D81D
-:1053200092C6F48D3283424177BFD86B5C4E7A4A85
-:105330008D724093CBDE6B4B0CF4ACC9DDF40946A7
-:10534000BAD7E4EECF7AE46EF02CC8DD8CD816E440
-:105350004B331F34586555B812EFA361F1A7130200
-:10536000DB57EF2D0F70DFFD8BAEFC6D701E5BE326
-:105370001FF3FAA5E6C9F89D1E7BD09A381F60205E
-:10538000BF97A199D21BA174D44AE90C10B18ED257
-:105390001994614A678C9FCAB0D4E8780561324499
-:1053A000DD27B279F278ADB67FB2C25E12003CAEB4
-:1053B000EC603C34C8C1F7493345CC0B90A83FE9B9
-:1053C000A28FA403E3EC605F4A56B68FDFED163B75
-:1053D000601F7FA56BBA1DF24A85B452A49FAFDC53
-:1053E00095797DEDEBC0FD6B407F5E979F9C2C8E89
-:1053F0009F9BB4784B08F8A57B5C9D98DFE472888E
-:1054000086FDA71A47A8C0A1AB8F84AF73BCC3B0F9
-:105410007B929CBF1CC5D743725452A893133DF78F
-:1054200025292A29D2C98B1543AEC7FB987ACB8987
-:1054300024F270E7FF8C3C6CC88B205EAD66F9935C
-:1054400019C03BA068A9C2D50AD43A5FF983D148F4
-:10545000A7D739C00F716DEBB183BE57D07B9E6665
-:10546000F917D76B0AC6C1A85E7BB40CE46952BDBC
-:10547000567B17D271EB4005E8F8C0BA079E84FA54
-:1054800047EB6C78EF4B556C3551E87CAB63E3B080
-:105490009CD7F61096956DED94890859BEB67ADDC5
-:1054A0004CE8BFD982F19F5391ABCED5D1FAA95622
-:1054B0001BDAEFA7B6DC9B07F6DFA956A762017BD4
-:1054C0007FCB18637B33BBFFE5549B356261F47B74
-:1054D000D102FB1184CB778802E9E64B4A15B4E38D
-:1054E000BF30EDB754AEB705044F72F857B625B6C6
-:1054F00027F1FC36E45C93DA61205FCB8FFF380F35
-:10550000E84393334BD3A9DC03F81DB79144FB0266
-:10551000131D1317039E263A024B19BE2EEFDEAC65
-:105520008F446A77239E429E6986B82F8BAB7EC4D8
-:10553000ED72624FD2EEE1EF7B13B7D7B4FEE5F523
-:1055400007696D55B131AE6D8178B500FEF83496BE
-:10555000EFA0ED03F5A66B664FB7DA50AECCE1F1E4
-:10556000288DCEE37416F2F07C31031DCE8F6D4092
-:10557000B927B48C7C741C85DF9794FE803E84969A
-:10558000F1FD01BECBD77C67FD9D74FCBFBF69C137
-:10559000E7F36229D8FFB307FD8FDE09FEC2BF5BC8
-:1055A00009C89FBF1F9988FBC89F598D718C7227AE
-:1055B0009397AF72FEAF8AB518ECF3AAE6D932C45E
-:1055C00041AB62EBF079156C22611EFD1DAFC10687
-:1055D00070152CFD1A78FFF6892B509F96601CAD34
-:1055E0007AAD2D619EFFAB0EC520AFAABB5A715C90
-:1055F00042EDB3CC2C3E9E4EEE54C732903F8857BE
-:105600002590F75DC5E54FCFFCB6580DF2E7B39492
-:10561000C4719AB71C6C9D55B1EF20DFF55EDF7742
-:10562000F17995F6DD2EC6A7F1F53C3A2ED17AE256
-:10563000EBB816FB7F9696F8FBE7397C4FD5CF2366
-:10564000012ABF2A6DB49F0BBE7F6F5319F8F95B17
-:10565000D2D205DDBAAADB1690806E5DD55B66C935
-:10566000FAFB29E378B8CF8087F36B16231E9639AF
-:105670008227400F54B68C1F15423F7F35C2F92355
-:10568000AB3F17E4F1E9B67B3D89EE913C6FC64F25
-:105690001BC70FB5BB4B75F8D1F0627EFFD49FAA34
-:1056A000BF7A10E4D466B741AE98CB5E78CB4F0C8E
-:1056B000B7544E9FA7A8FE0E21DC94178F015DAF53
-:1056C00075627E5C72F85D41427DC12F89FD4CEDB3
-:1056D0002CBB730C7C97201CAADB181D5C0A6EF196
-:1056E000EF723A284FBC9EF14E8D0EEA884A19F6A9
-:1056F000A47C293A7880A8F63ED6D143076DAF95B1
-:1057000017C6E960BC333C7105EDF729D83FC37A71
-:10571000E3FFA4AC7AAE017B678D05F7BD4E3AD4AA
-:10572000AC3B587D34C8E7939EF0D46B4AE3F5F95F
-:105730003B8778F4F73A9E6EA6704800BFF1CE24FE
-:10574000F453A892E2B1FFEFE8E7A324E760263A1A
-:10575000CACB019F249C389EAC959AFCB6A4BA7A19
-:10576000FC5ED0A3275D055F4568EB3A47E86627F6
-:105770006D6F4CBB1FF5FCC99302EAE1E57F5A3A15
-:105780000CE4702FFBB73EF6D8C743306EF9F8C76C
-:1057900056B4A7705C42ED1FD003986F8E7EC04058
-:1057A0008CB324DBCFBD172EFF1D13DFD7D5F66FCB
-:1057B00057D6773E04E313BB4ABCDA797D054A66C7
-:1057C0008FFD07CC43179F97AD21AF1FFC5D810470
-:1057D00081EEAD52A819F20CADBECCD1AA0ECE4BC3
-:1057E0009C2C2F27E5F0E1E67CFA7ECADCDF7921EC
-:1057F000CE67A3DF81D29E237DA18F975B3359DED5
-:105800001729D43D2F8073C8B46E883BD0F9F6E1D8
-:1058100037FF52E8B9670DEF379EA95DF405A0A3E5
-:1058200074F37B2D7F456A64ED695A73236BE771CE
-:10583000D4C5952C4E7A68562AC24F5BD7CC5756A2
-:10584000E17D6B335FC9C6F34C335DC33E0178FE27
-:1058500012126B80EED3987E36D3C5435CFEFCA05B
-:105860005D54AD74BCC3D6EE834EE08B1F09E85780
-:10587000DFF1DE612B90FC1F8E9EB4425ED45D9002
-:105880005844D7338B283233A223F8FE6CD2E1661A
-:10589000F58E7E70FF697C3CEA32C3784BD8FEF30C
-:1058A0001DEF1D9D086A948EB712CABBDE24328C90
-:1058B0003F6B9FD2C48E43F1F15EA1E389F1F17A8F
-:1058C000E027D9111E71F8D8115EBFEF395FA2A28F
-:1058D0007DA1832FDA2B1A7C1B006E147E33536755
-:1058E000DC484625E79799AEA19F9051F1F998E1E0
-:1058F000FB7768A2FCF68433B017F8AFD119781E95
-:10590000F867A1BD3B572AC073602FC2F34596507C
-:105910005E16A5ABB38342C3FAC1BD1E9D89F7795C
-:10592000CD7C7A1CF8E54A28295FC03CF879951FA0
-:10593000F2751EFAF169379E47D9FF412E943596CC
-:10594000AEB5B703BFFD9B05EDCF2FF60DEB33AF23
-:10595000EE388FBBBCE514F9796BB6CEBBB83D779A
-:10596000D73E6704EE41BCABCED2E35F015DDF55AD
-:10597000C7F24F88D439EA56833DD9C8F7437A8FA6
-:1059800003FE82791C6D9D0773075C01FEE593633E
-:1059900064F4230EBCF9C5EFAB69DD31C88E7EC25D
-:1059A000DA344EBFE5CC6F7D322DE01C09F1AF3506
-:1059B000E97E95AE73CD6BA443A4703A38FCFE48E3
-:1059C0004529DC0B2D62EC6C7D6C7BB802DE2B660E
-:1059D000F7CE78B95DBABEF3641BD0E3E96336DC79
-:1059E00077F8CCCDCE11AEB10673C18EFFA45D4E5B
-:1059F00078FFD99FDD12CEB75DE81280CE6793B0F5
-:105A00001DE4C5BECEE9FD613E1E3FF102F99FDEF9
-:105A10006211D9FD685ABC252AB178BF2AB17A80B3
-:105A200097DE14FD7D63AB274DC03C8F39AD6F63AE
-:105A3000329EA734F13D3FA92E365F7767FA64BCEA
-:105A40007773828879D86E7FB700EFE57556C8F80E
-:105A50007E58E8F3FDBC655ECC4385F741CEE75D3B
-:105A6000E6FB3617CBD3DAC0FDEC76ABBF69021D7F
-:105A7000A77D6D9A00F8D0FA292E26574E4FD0E216
-:105A800048618C23E5167A53E01E8BDC00323771B7
-:105A90009786F1BEEF6DD08FC559110EEDC35F8CA7
-:105AA000C23EF61A88AF009EAD8C9ED6AC1530AEC5
-:105AB0004AE13700F4C4270FDB6E8275E4350B5ED4
-:105AC000F0DD699970DE33DC7646E7AD8FA25F08C2
-:105AD000615A183777CBBB382F7792F5AE70B37B0E
-:105AE000F23FB9047D7CE964F726E6D675F2FBF156
-:105AF000A2780F5E18E004F54029BBDF440A28FABB
-:105B0000FC9838FF2CE7744802B0CF56592647203E
-:105B10008E2036B7CF8075CF0EDBC80D747DAD42B9
-:105B20006700F8451D23F2FB9402C7014EEB36F4E3
-:105B3000C73CBC55622017F4B0FA7F64DCA73B1861
-:105B4000F86233DC1FBFB54C46BE381860E70D9FC6
-:105B50005C56D00EFB94EEBA8AB6D974BC88574610
-:105B6000C9D2504ADE1806FB94CB44AF40FB878372
-:105B70005ADEB6D7017431DAF2E5E422D8C7CB1683
-:105B800031A6745A60F736AC5C56E105BCAEF466DB
-:105B90000A7AFFE5764E07C7D383B7BB287C7C0F14
-:105BA0006EF452338EF267C6151047549B65453B21
-:105BB000B70BF73D6470BC64748AD12A0FD65DF3CD
-:105BC000D2E13E5D162F7DE8C6108B73C2DEE85829
-:105BD0008C73F23F1FE23593D7D68C706065D38A01
-:105BE0002AEC0FE364D171324AC5E8583AEEB6B4F4
-:105BF000C0568CDB4DB4239C88D4D506708A4C1CCF
-:105C0000E0877B6D378E1BFA369C5FC938D23D1D0D
-:105C1000F4686490E30FED20A756CA0AF079C6B283
-:105C20005377C2F334FF23F74299D1F8FE0320A73C
-:105C3000D3BAFE568FCF27C986F862C6879F7D03E9
-:105C4000ED1941D910A7FC3A3DF81380CBD6E2708C
-:105C500018EFC5048C66C5D7B16779E724B8EFF8AB
-:105C6000F434D1BF8DB7E3BA3679236B18DC4A41DF
-:105C70002F68705B252A1D5158D7543BD24721E924
-:105C80004479950DBBD983E378C9F870F512C8D76C
-:105C900030CF679D4BE8B97F03EE09045C417E8CF1
-:105CA0009CCDCE15EE2DE9F4813DBF362D717CF2F1
-:105CB0002D377BDF26B238ABB9FD0D37A30710892E
-:105CC0006D252C5F7E24942EA2A64299630F40FE80
-:105CD000F35E51F923D2F9468B02F881FE568ABF52
-:105CE000036F7C8EF1C503E177B17CC65DA4E5DD71
-:105CF00047B3E8FBEB4AD97DC7EBBC8C46AA9B991E
-:105D0000BCA8F675D961DFA4BA9878B7717A533513
-:105D10003843BC8CEBABCA5B195C338B09EEFB429E
-:105D20002C08EE9BCA827E147E99CDCB97201E490B
-:105D3000A73A98F65B07E3027E1A45C2C6EDB22386
-:105D4000FF862DB8EF49F9FD2D886B55B6F6C77D56
-:105D50007F38360CE3A5F3EFA6F3F1DAE938103F0C
-:105D60003CDD6CC17301907E03756519A565A4CFF8
-:105D7000EEF2223AAE52EAF5AED1E84093639435A2
-:105D8000E6507D01709BA3AA4B80FE4EDABD6FC02A
-:105D90003C9C9B6C0AAC7FCEA6979682FDE2F47584
-:105DA00035837CA82E63F34D6FA5CFD1CE51DE8213
-:105DB000FED5AD36857D8FC3AF94D31987C35C3EC6
-:105DC000EFB95BD8BC1D832261A0CFEA6514AED0C9
-:105DD0001662740F21D18B22F2D51158BF5BCDC250
-:105DE00071FBCD30F18589FEB47555F275552E6382
-:105DF000EB229C9FE8B4A2306E65295BE71CC2DEF3
-:105E000017E1391D7F2E5F4FA5FA2296739B6D8691
-:105E1000F1B716EDE884F9E417CB0A9E1321ECBE26
-:105E2000C35CBEAEDC46F6BDDCE217115EA44E37A5
-:105E30005F8CABEAEA94AF4EFF9632165C0A00071D
-:105E4000D8E8B8277F2CE37E4EE126E3BA4EAF1E9A
-:105E5000B6BD95B67FF4B08CFBDE7B45FFF13CF41C
-:105E6000476585C91FFFBB53404ECF6DF4831CDFD0
-:105E700053CEE07FFA6612017A187224980EF01E53
-:105E80007224C4CB5ADC4FA700117AE41E9D1F7503
-:105E9000999A059097B1C1CFCE033950C6EE231F12
-:105EA000A49F379D5F46735605E4436596A557C882
-:105EB00078B5ABA9FDC863D345683FFCD8BDF09D5C
-:105EC0006CA25B0F6D973D83D97996C3B415FAD553
-:105ED0009D7A10F0D1CACFB90E8199A5637918CAFD
-:105EE0000CCADF2DE9304F894C2889CB839D0F8F59
-:105EF0001D0D7205539E4AB08C9292DE7243D77F7D
-:105F000038EFAF0A09FAB93D8AC13FDFF9F0F5C3AE
-:105F1000C18F5F0776622ADCC7E6FD12F27454BFB8
-:105F200088705F678DDA8B697D15B51BC17E595FFF
-:105F3000F4BE087CB76E1FF1037D6404FFCBA6C7D7
-:105F4000E30D6EF6FB3C924C5A80FF0F0E3F350975
-:105F5000F0143940ED4EDABFE237AEC79C600FFD5A
-:105F60009EE5C1B4FFB616F5F7FDB972C2FB78C95C
-:105F700025EC4473FFF421D3319E97B76903DEEF1C
-:105F8000593D49F2DF407B676E2A2F073B46095295
-:105F9000EAEA4FE7BD65F4726042650ADB2F5326DB
-:105FA000B1E7CA0456B6D41F7908FCF6F02E29A52D
-:105FB00090CE77C46A76AF584BF117F610B54B4BBD
-:105FC000CB9FB7DF4C9F7F5C4AB5207DFEF1B55F6C
-:105FD000A4C0FECE93A5151900CF7DCD46BB8EC0C3
-:105FE0006557D41F1A690B07DC745EADEF1184A7E7
-:105FF000C5166DABA475CB4B2EB0707AF939AB5B7F
-:10600000DB67009DCE2992316C6F5EEFFB5C9FCC0D
-:10601000AEEB9E04F7EBE7AB84C5F7C38FA2509EAF
-:10602000CB4546BEDA8942C7BD89F9276129F03AD6
-:10603000C8E570714886573479D63AA4F22990673A
-:106040007FE2761DA99D87E7C890FF2D600F7597A9
-:1060500027F29B4A5D0EEC7F7ACB2D1F409C7A4E37
-:106060001DB3F7F3B67C29203EA8DD974DC7CF2B93
-:10607000C5AB06C99C6561FB48C04FA1481405E645
-:10608000D341C04F0853FDA3878336EE7FF7FD252C
-:106090006E1BF26129D8CEBAF5B8F87A72FD743D5C
-:1060A00009F47409FFEE8F9EF8F2C03880FF32E6E3
-:1060B00022E5854F0876DD3CF2D4CB9BC755301ED8
-:1060C000D8AF6E2F8EEB2EEDC2FB5CCCF21DCC79DF
-:1060D000E0DBADCE73A3997F6F94A7BDEA9CAECCF5
-:1060E000CF734DF26AA4ADE346C4EF1E76EF35647C
-:1060F000C442BB404485DDFB19D1EEA7AE857E23AB
-:10610000DC2E2FD041EBF0F74B003E6BB9BD30B722
-:1061100098A0BF3A37A713ED85D98DDC5E90FC4D72
-:1061200020649D5BD2C81A9DFD80A612B8D08DDC7C
-:106130005ED0F43FD7DBD5BECE66D4AB8DECBC5F72
-:106140008F9DA132BD9AE7637ABDBA997E47E1C4BB
-:106150003C566F97303DAE6CE2F603D7C319FCBBDB
-:1061600099CD4C5F65801DE181340815F532EE61F3
-:1061700065C5ED967EC54C5F66B4EE45BDD6013F64
-:106180002E3306E406D39783DE3EAA02987CF47190
-:106190001B95D38FF3769F97DA67E971FB6C95C8EF
-:1061A000F79B08B30F31E79FCEF321E8AFB31B771E
-:1061B000F0F9ED3D9C7E13C8D79DE1023C57AEF14E
-:1061C0002D463F693DB794E5AFE4D6B17D72B7BFC8
-:1061D000EA29FDF9B3796E76EFD03C8DAEEAA23EA6
-:1061E0001817EF8540392E637C7135B59730FEC4A2
-:1061F000FDAB6B5C3CAEC1E927993ED1E4909B04BA
-:106200003CC514BE1F479E4279AD527F09D6F67138
-:10621000B861C0DDC0EFE169A530FF75E3BEC2FC27
-:106220008FBC24FEE29F353FF35BCA75F7A4A3CC75
-:106230000FED14139EEFC9F1B0F84387449C00CFD3
-:106240009430BB472EA54C4ED83FD5C3ECECCF398C
-:10625000DCD68D7B0ACF6726D5CF12512D09F4A944
-:10626000A66F5B01CFD7D0FEEE379A54F4D323410B
-:106270000BCA57767E314CBAD08F548B648C1BB6C8
-:106280005AC376C0C7FA528E57AFBD1DEEB7F9D6C6
-:1062900078A1F0003CAF0E8811211FF01CF18E6434
-:1062A000711D3CB77C9AFAEFFAFD8AE11E91C34951
-:1062B000C11FE6CB6B66F4B56E9C8CF358333AABDA
-:1062C000DD92AF97BF02979FEC9CD89A71AF237D68
-:1062D0005DEEFCAAEA9EC57B3FB4E7A7363F5D00B2
-:1062E000708EDF7F11E8F33C4555DDDF36ED48B0B9
-:1062F0004FD0D30E7E940BFCC0C81D867D4D8EDF23
-:10630000091ED1107703F96A45E7223200E24B7B80
-:10631000C6473CF01E59C6F66DE7F37DDBCF77DC50
-:1063200082E7C94752B2B226C0FB67F5C6F3EA9FBF
-:10633000ED7C7A008B6B440C79C2F39FFAF908C3A9
-:10634000FE7080289963F915ACC0EFAFFB559B2513
-:106350007EFF800CBF57007176E0E0C170AB620732
-:10636000962EE05F5A7A4837965E504783C14FF2C7
-:10637000639949825866915A2C7D248CE500D2811C
-:10638000650EF8B983412F7463A910AF487472BFCA
-:1063900080F8B15E4882584A80B78CF8BE84B4CB8E
-:1063A0008EF91BB07F017C9FECDC99DF53B9C4836D
-:1063B000FC5D7B25FB1D23B65F31DD13B8C78378F9
-:1063C00088A2FC9ECD45F991E74674C0F9A37BD61F
-:1063D000B2732F9A7C47FF867EE7D974A60FD48DBF
-:1063E00002CAB115CEA9DF4578B65ACFE8F71B88A7
-:1063F000DD5E08BF0FA28D3B9BC71966733D08E1A8
-:106400006E767ED08FE7936643BC41D74E7ADAD959
-:10641000BD34DA38A2F3DAA17DEDF7E9DEC7FCE896
-:106420004A931F7049FD6DAACF31BFFF359D50566D
-:106430003C1EF7EC77955CA457AEBF294129F85E66
-:10644000B3ED04FA63E189013D5C9EE17CA0E9952E
-:1064500039A67C0F733947E2FC611A876AC0343869
-:10646000D78B774AE8F85BBB9F54BBBF677E20247D
-:1064700067B3D77C80472F9F77986CA9C8A6E5A7FC
-:1064800050D7C5F78FA6865EF2E8FC116FA056D4F0
-:10649000DF77B390F3E3444B6B39C8B9D321E207FC
-:1064A0003F623EA9F57C07E2F9472D28E706D2793D
-:1064B000CBF07B2FB0C1918E75157EEFE56C3D3B27
-:1064C00027748ADF33FC14DC4743CBBFF07B85475E
-:1064D000B62D9D0A74F039BF5FB868DFEA20C47D2D
-:1064E0004676386781DE1FD931BE1ADA47EEB2B17F
-:1064F000DFF1E172429B171C7377A4E33976D59ED6
-:106500000EF284A0DE3DDBEA88C0EFFF9CEDB0B068
-:106510007B558B45BCBF0CAE21B4F0F9A5A6C3F7E3
-:10652000FEF387608F7CCEE5C9194F1AC397A40A82
-:106530006A26A4A5103FD8351B9C8BF01C64952BB4
-:10654000F2D46399901F6EF7AFA0DF3FB0F7A55C60
-:1065500078FEA87311967FD9FC412EC8ADB3FB3FDE
-:106560009013D16D8D1495213EB5609F20C2FE49D8
-:1065700079C72C19F647AA761FC0B8728D3784EDFB
-:106580000BDBF6627DC2EEB771FF6470AA82F33A4C
-:106590009B1DC2386F619B2D0ABFC7B1A7207C77B6
-:1065A000C27DFB54A66736385FC5F11F75BEFA3A47
-:1065B000C265B30DCF7F1CD8FC1B1CF7CCFE97F82F
-:1065C0007C09E60B9E4DE938FE13D05F7BF9794CD0
-:1065D0007BA7471F0F965205837C3DEBE6FB5E3998
-:1065E00097E8C7F30589ABD3C3E452A707F6CDAA52
-:1065F0003A181CFE628DCA60472EE81014F83DBDA3
-:10660000F2DDED781E70C13E3B9E975800F000B859
-:106610005178215CDA0EE0FC0B002EFD601DEF626C
-:106620003E7EE13E0A9751F1752F7085905FB5F57A
-:106630005238B075EFB9149E42463CB5BD2D435C4F
-:1066400066E13E01E1B770379B47D53E36AF09BBE7
-:106650006721FECFEC270AC45B4EEDFDE07358CFF7
-:10666000D9FD76BCCF579B17DCB7E02901FE6174DA
-:106670004AF631B9AAD9DD35912CFCDD819EF6DDD3
-:10668000EC7749016429945E47EE9B86FB82A54026
-:10669000BCC0FFDE8E11ECF705C3B900D73DE3A304
-:1066A000B930EF33DAEF2349E15CC08BDF132A4DB9
-:1066B000D5E1E3B3132FA15E2C126BFFFC20F0F1A8
-:1066C000F3EC7738967EB841D4C3E33AF841AA3167
-:1066D00000B7B73C08B79EFB5BC22C5F8A84901F53
-:1066E000AB383F9E6DA77E275DFF676D2F60FBD99E
-:1066F0006C637ED55FDA0EA503DC2AF9790C12B93A
-:1067000005E511854BB33D819EEF39D71661E7153D
-:10671000CF09FC3ECD2734B8D5CAD30DFB7C4C1E27
-:10672000E66CC93F8C7E4624F13947B39D64BE2F89
-:1067300035593EC0492ECF3EE6F774697A77BA27BD
-:10674000342BB55FF2F3DE952D35B900EF4A381BD7
-:1067500089F79C1EB801E215786E88DD931A05F85A
-:106760009CEAB907F5A51B20CFF4541AABD7A57640
-:10677000AE02BBF69476AFAAFA1A7B3F9FB56F8242
-:1067800076DAFF394FB03695D9F702FB7D1F6B1AC9
-:10679000FC4E83A63792C3C1F83B0D4FD3B5025CC4
-:1067A000E8783FC1F1243ADEC87F7E3C4D4EFFD3EE
-:1067B000E3D8FF67C7D1F417F027A43E12BF7FC408
-:1067C000FF04FCFEBBEF93F05C035F5DD83CB809AF
-:1067D000F6D1CEFBD83D30B6D6E504F4F9DC4D1B3E
-:1067E00012FEFE5B4F9DE7E5C88329BFE9F8FA4832
-:1067F0002AB3CB8F70390D7FB0BF0577E5A05D4C14
-:10680000FF5AB3307509FDE761FC1EF3221246FB07
-:106810007404E9C0B2987462398A746389DBCC83EA
-:106820002154EAC7F2AFE55D6361F10BEDA1275397
-:1068300044CC3B780DE4D0D941A1A7E1A2B615CE56
-:1068400045D7C0FCDF48F57278450DBFB742F4BFAD
-:1068500087A1803D38C5D7973D48BCD2999EBC974B
-:1068600002BCCFF6ED545C5FB2DF515B62BAF786D3
-:106870009D0BD7E050433A308FE4B52DF7BC319CE7
-:10688000C2FFEEDD6EB493876E695C02F2FC6ED2DD
-:106890009905E78487F27B44481BBB0F47BB1F6405
-:1068A000789BCDF83BC2A6DFE359C07F3F6B81F9EF
-:1068B000F7A9F839DC167890201FC37C8EF7AFA9B2
-:1068C00089EF7D21C5897F0FC57C8E77778788F911
-:1068D00051F740DE95CEBF18BEA3D666A42FE5DFE4
-:1068E0000AADBABAE067F108B723B053E8FD9DFFDF
-:1068F0000B82D8B2B4008000000000001F8B08009B
-:1069000000000000000BDD7D0B7854D5B5F03E3360
-:10691000679E99849964924CDE131E21C86B0221F4
-:1069200045A47A122246A43A3C6AC15A9C8040800F
-:10693000BCA068B1C59F8144081425D488400107D4
-:1069400044C5FAE8A417E561B00344448BBDA15ADD
-:106950002F522F1D901F1111466DD1F66AFDD75A87
-:106960007BEF6466480AF4FADDFFFFFEF4B3877D2F
-:10697000F63EFBB1F67AAFB5F70C77288CA532F668
-:1069800082A2DCE31DC4D837F87753D773AA5DC75A
-:10699000D808067F8D6C5C31630DD5AA7D15941ADD
-:1069A00002564DEF84A75D1750F219CB4A2C33CF16
-:1069B000853273E8ECFDDC8C8DD58F3EEC86F6C617
-:1069C0001A75B809CAEDDBE67618F07B97CA4C3029
-:1069D000649603FA8532CBD005FA41B9D1FE1BC7C4
-:1069E0000C18BFC006EFA19F1C3B0BB8A1DFFD5BDD
-:1069F000EFD761B9A19EB1741C47F175B8E93B9519
-:106A00003D85D362DAF8A234C6F2F09F308ECA56C2
-:106A10007FAA4F62ACBCE6B4256C83F7E1CAF16C87
-:106A20000863A5F67C5AA7FAFEAD1F6179CBA25385
-:106A30000E1F8CF7C6D6E57F180BFD1902302FE824
-:106A4000A2F0EB86E36361BCC85623DBC6BAE090D4
-:106A5000BB583D1536D380EC1BF82F7B616CD9C831
-:106A6000A05C28CAF9388FA87A280F17E333368537
-:106A700085D2B05ECCD7A93106F364769BF3CC40C7
-:106A8000C66EB22BEC9BDE5DE511A2BCC3D05C668A
-:106A90008579EEF84FC5B314AA0F6C9D9587EBBBB3
-:106AA000B4C7976787752C32270D61BD2EDF3F83F2
-:106AB000DD2DF6CF6FD1B9F019B2305757FB01DB9E
-:106AC000EB4D3EE8A77109F39CEEC79839D06E1DD7
-:106AD00088FB78D8E081227B4861538250AFDA98F6
-:106AE000168471860B7C897F3EB4C4FDBBBE86AE26
-:106AF000711FFA7AD214DCDF48A255DBA65C3E2F68
-:106B0000F99D6A77FB717F0DD9CC9300E3199C1D29
-:106B10009976F86EE02EA3C706201BFBEB41BDC2A1
-:106B200030EEC08353993B91C30BE7AB2E327A4EC4
-:106B3000A730665AE4F4A8C3B19D8DF0F1339B31C0
-:106B40006042F82FFA7933D6376C2D71B9A3F07AF9
-:106B5000F912BB4785796E5A62F6A8B0C0E5627D2E
-:106B6000F1F3CB71E8BC01F8CEA8633EAC5F00FB4B
-:106B700080705C604FA0E77C51DEACFA27E2FC3706
-:106B800003FE2C457C5DC8F1774186398078BEE0F4
-:106B90008D3EE9AC1BBA92CFA797B83C7D611E9B96
-:106BA000164E7731F8B4747EBBE51658FF8244B3B5
-:106BB0001DF1519F54F0F868C4F7370D0CE9AA2174
-:106BC000B1C43D23AA3F7DD24817C243AFF3673219
-:106BD0003B632BECD32AD40CC417FF46E6616C4D03
-:106BE000F3CDBC9CE8CF54A0FEF1E65B7939D5BF6C
-:106BF0005181FA279ABFC7CB39FE4C1D949F699EDD
-:106C0000C0CBFDFC1BB1FCEBE6EFF3F26098432632
-:106C100063BB9AA756F861FC0683678A07C67D1195
-:106C2000E63F08E61F14CF3D76BEAFB2FE37F81E32
-:106C3000E0BD533CE3EB5F16DFEDEEA17EAFA86F46
-:106C4000EBA1FF57C577A11EBE3F20BE6BEFE1FB56
-:106C500043E2BBC33DD4BF29EA8FF4D0FFEFC57731
-:106C60001D3D7CFF07F1DD3B3D7CFFAEF8EE580F8C
-:106C7000F5C745FDFB71FD9F10EDC3E27D7662D344
-:106C8000713FE05D36F02DFC2B4C6C4A46BCDB546A
-:106C90005F4CF8DF3002F07C5017BE672BCC8BE5E1
-:106CA000210E95FA1B82FC189E6F8BFE4BE7F75D59
-:106CB0008378B7E02DBD07F1B041F11CF341FFFE31
-:106CC000F93A0FF2DD056FE8399ECF57032C8ABEE3
-:106CD000DF8E9BFF1631BF4631DFDFD97B13DDE44A
-:106CE0002D7279C64B7E89746F8F2D9B819E3418CF
-:106CF000BFD1C9E54BE1FC32737F941F205F906FD9
-:106D00003E6433864C30FE437695EA1B9D6576AC37
-:106D1000F7DB55923F0F39CBCC3390AFDA80D99562
-:106D2000C07876DE77A35DAD0820FF709453FDD860
-:106D30005F8FB7231F6D64114729AE6F31C815F8F7
-:106D40007E7F7D19BDCF73FCC581FCF968325F572A
-:106D50007BE2214B3EB453EFD391BC28B0AB24C7A8
-:106D60007A2FD605DCD0A4DDBE4087E5271BB9BC51
-:106D700082BFC42218BF2F1F9EEDB8BFE4CD42943E
-:106D8000670FAB1EB79BBF53A3E4415F94574938CD
-:106D90006E728CBCDA5CCC34ECD7EF32079E827E0C
-:106DA000FBAACC9592DC05F73C879ECB17FD780FAC
-:106DB000CAB53ECDB1F229BF294A3E319497B1F20E
-:106DC000295E5EE5D4037F8CFADEE4B2C7942D8E93
-:106DD00044924FC0633CDFC0D00B5A17DC62655D44
-:106DE000FC3A5E1E3508F920F96EC3D7C363E4830D
-:106DF000E4CBF1F2E1CAFCF5ED5BFB131E02B772C6
-:106E00005F99CFBE8D7800F867F029243F98EA7328
-:106E10007913AF0C2F83C16BB7DBAE0C3743EA3B62
-:106E2000A457187C2AF57F995CB9025C653BA3F9ED
-:106E3000C9CDA741AEFDE5FD9F14322099E5001BA9
-:106E4000DAFF545DE0295877F6A2E73663FF5987E9
-:106E5000AC8D0867A36BC6E6465C4FF3E38C013E3E
-:106E6000E9CD1C9F8C196576FC5ED569AEE43E5079
-:106E70007EF6DDBB14C0277D4ABD87C1BE1D7EF1F5
-:106E8000CDE4DB107E6F1988CE4D3AAF9DF5A1E9B8
-:106E900010BEADC8B16E5D4578EC33239CB27798D7
-:106EA000490E30FFF6951A2075036C071B85F553C4
-:106EB000566AB0EE1D4A67F9562C070346DE1E5887
-:106EC00034FE5FAB4E11F54C535DA4778AFADF5464
-:106ED000948F86F6AA7DA00A7267C1DA979A0C3958
-:106EE00058AF93DF6B6C24AC17C7136515F6E7B981
-:106EF0007651EF3FD8540E44D46A94E3333FB66FD3
-:106F0000D5E978D9DFD684FDBF5026BEF73FBD5204
-:106F1000CBA6F9DCA67740D1F17A93EDFAAEF9AEC3
-:106F20004D7EAB6929ACEF1377380996C16AB69EDE
-:106F30004E43F9BC624ABD17E18688EF0599D84BEC
-:106F4000EF263CEDDCB79D13FC59507BF1D0DF936D
-:106F50000641559D3E7C2801E057B3BBDE6C80EFB7
-:106F60004D06AF3F2BBFEBBB9A9D95A4CFD4B51573
-:106F7000D1B39BEF0EABBDFFA5EFCCC6AB18EF9323
-:106F8000D01F6A9F87AA1A7D7D934D4FED19DFFFB1
-:106F9000EED727BFFFE4F93FDC89E35D7087D3C6F6
-:106FA00041EB1521804B37DFC9F6B5BB27D0F3582D
-:106FB00082B6C601EF6703EF227EA5D67BB07DD0F7
-:106FC000DC6CF700A02D86662FCA0D007D4037B21D
-:106FD000EBF90B475F6A1FFF3E9EBE826696321E2C
-:106FE000F978B54A722A68F6270C81F26AB043969E
-:106FF000C2949615BD3B6C10965FB231B44B1AAA81
-:10700000DB5D8390AE3C4686FAEEEAEB831948E7F7
-:107010008D35C629DB117F430B5C33A3F4ADB5C9B5
-:10702000069AC7CAD780EE86C2D3107428F87D3F6F
-:10703000901B0AF2459F19ED1C4B4632F3E7633B68
-:10704000DB6AA4CF95065F4519B6CBD0917CB1F42D
-:107050009B5C5106F370A5EA143DCDA3FCD82C949B
-:107060006F76234A50762279FA6E84D373AAA71ECC
-:10707000E9F0399BCDEE870AE0911AF23FB59F33D4
-:107080008065939ED5A31CCF2A02791EA5C79E10AA
-:10709000FCF384C348FC6EB52538A114FAB12ED098
-:1070A000D9FD30DECA9A751D63619C5FD6BC7C74C5
-:1070B00029BC5F95A6329C87CDA9868C207F0CDFEA
-:1070C0008339C2BC5F58EAB5237F8DA4AA6C1BD458
-:1070D0005BFB1A993B8A5FD90641398A4FA638551E
-:1070E000CD02DF7F95ECFB77078C3BFCAD77CCF8CE
-:1070F000BD6B844E87641354F93E2715C7F6631F92
-:107100001DDB4F72796CBD737C6C7DDAE4D87AD765
-:10711000DDB1E5CC7B63CB5324BE01CFB1813CB65E
-:10712000F22A660D7FBA04E52DC0E73D84BFB54065
-:10713000E741F8586AB69F9D05F559C84FD01E1A09
-:10714000C248EE1EC8FDA91BF5025372BDDB31E833
-:10715000727864E5986FC3FDB2F555ED0CDADBDEAD
-:10716000FFE86BECDFC6A2DAE5237CB488239597B1
-:107170005D309F44FC871BE15DFFE707512E1ED564
-:107180007B10DE59352A8DFFF0647740CFF5091763
-:10719000EA3349A27D927975871EF879D2FB2BE7F5
-:1071A000A3DD1B0FD73456AF205D027E707BBB92F0
-:1071B00091FC58A1635588376823607FA41E01BFE6
-:1071C00098946224389992156137AA3AAC4F13FA11
-:1071D0009331E35E0BD2F1438738FE3F64E4FD74E4
-:1071E000F6E7A64111E519F2C994645D4C3FEBEC5A
-:1071F000A28D28A73A78B9B53DF936A4CB759393FB
-:1072000087219E98D0EE82FE7A659BB501B03ECB79
-:107210001B46BF029DF65259BB01F6B2D5CAEEF12C
-:10722000C23C361CB6FAF5F0DE32F31776D4D38AB8
-:10723000C5BC5B9779DE463E10A954098E96D4668C
-:10724000FBB0417C0D7E981FA203CAC5D27E2DA43F
-:10725000E7594A9B49BE5B8A9A9B114E1BC6EB4875
-:10726000DF48BE5747F86CC9091EED8B7E82993AFC
-:107270003BF6970C82DF089D3C9ADDEC45BF090385
-:1072800098EB4A38AA60BFB442182745C0D5E9DC5C
-:10729000F91305FA49C1FE86F0F608278780D3E87E
-:1072A0006437C1DD29FA4DE90BED87F07E1A4BBA40
-:1072B000FA91FBB8A18205707E725CD94F67FF4CD2
-:1072C0005390AF1A7E0770837D5272CD34B987E632
-:1072D00032B28F5B9779EBB7125DDBC8CF91E9CC07
-:1072E0002E433CCA3CBC71A26E087E67A5710C336C
-:1072F0005900F1385365E61B9351BFF1121CE3E9C5
-:1073000035A3BD7912EAA9725FE2E93743654DFA08
-:10731000E4CBE938C3E92C2B18D20D3DC7D14BC6BD
-:10732000E1C87D88F4F174BD25E14211C28545B7FD
-:10733000D75FB9ACD7078FA29F87A5839C00D0E702
-:10734000C68DC7D83F4C585698CEFD4D1FE4FB0E56
-:10735000E1BF017905C4DA3ACC3EC686743A9F1182
-:107360007E95ED5A7DD7EFA0BF4BFD8C76942B39DF
-:10737000879B3B503EB2DDBEFEB80F9B54DF130926
-:1073800050BFE9583A43BEBDD2C2ED3155E079BC99
-:107390007C592BE8C68D72CEF5AF3FA57E18EC9BCD
-:1073A00036D00EB4B7F617156F9853FF07F52CF6C5
-:1073B00002E959D9ED1D4B6D38FEDAC34D6680AF39
-:1073C000E52DDEBE19CA7E15E1574DFEAC0339B37B
-:1073D000084EEA7113433C1DACD70258667FB230A9
-:1073E000E4BF3B5EBABBCA8DFC276D9C1BF9D0364F
-:1073F00041EF01619FC5AF5F356A3ED427E2DF6F81
-:107400004CD689FDF49EAD847D1CFCA491AD82CA4E
-:1074100042DDF426B4EF222B81FF42ED74BDBBF6B2
-:10742000E751F6ED23D6D26032DA254BCCCC070AF1
-:1074300073F6970AF30171E638FF508AFC279785A7
-:107440001494B3B9F5A0F0225E2DB4325F14BE6778
-:107450007FA952FB47AC5A3079047F6F063E60E04B
-:10746000FF64CF257B59A593F328D45F0CCF5B4FE6
-:1074700022DF60CE72ADD31EE98DF80B721FC6DB22
-:1074800027D66D00181A86C17F365DC834E4F2F63F
-:1074900007049C54B32D84FC52B51D3946FCC5AE7F
-:1074A0009E8F6E87763731B16A467E59840B957F01
-:1074B0006CA77216F05FD330D2FBFD687FFB93B8E8
-:1074C0003DC234CDED4C437A6104E46C336B3243FE
-:1074D0003BC276A0B70CD66121BDB99DB9911ED033
-:1074E000C3762681581643B86E62AC229A0EE453D6
-:1074F000FA25D4457AB2A7061EB4D07C0CF52C60D0
-:10750000417D08E706F05617B2809ADFE5171CE2C6
-:1075100070D37746564FFAEC0B5F9FC8443E6D3DE3
-:1075200004FAD850DC671DF129AB3596FE185B4A8A
-:10753000708A08FCD8BCC44EFBDC69BFF9DE11FBC5
-:107540001C5E8AF222776172CCFECA76D95F663100
-:10755000DFF0E87E03D46F76DF7605FD32D95FE693
-:1075600052FDE625EE2BF4DFBB87FE33088F7AEE63
-:107570003F9BEA3787DE71DC0EA0D814697778DD8F
-:107580005DFA753C9CB317C6F2E5A1BB63CB122E26
-:107590001683E69C0030B7DCA7F36C85FEBE732C27
-:1075A000B65D45FE1FC9FEED6A1F724EC2F6609FB2
-:1075B0006F85B7379C8D6DEF2D7DCD8174DCD59EA9
-:1075C000CFEFA62F63DBC5EF4FFC7C615EA9DF8F99
-:1075D0009AD718B329A67E4AE565F34AFD41D4BC83
-:1075E0006E71C5B6F72DED7E5EB7159AFEE9BC64E7
-:1075F000BB3B465E5DBBF8754CAA30F50077DEFEFE
-:107600000753AEAEDF1F56FDF376F72C8A1FC74F28
-:10761000F8BE40A78D4981FAE9F80AF5459B95F433
-:10762000DECBEC2C219FC6A1E201DF7992B471F888
-:107630005D85A43BE16738FCE275E9C8D7B3841FD8
-:107640009D09BF426BB58BFC0A3ED11EE44923F273
-:107650008BD61DF05D129F57B4FE9452CDED0A3BC0
-:107660008B103D4B7D2999D9156E8F737DA7A7711E
-:10767000E2FB7F18154098EF8C4563D80740872FB1
-:107680001BEDA52ADA675B14D20766946BFA44C037
-:107690008F514D0AF995663CF0F6A3E88FB9FEB418
-:1076A0007B7718DECF08383C386C6D07D3304E90AE
-:1076B000AE9F5FF4203C1F3BC0288E86E5F9886FA3
-:1076C00036CD8DF64625CE08FA396FA82FB223DFC6
-:1076D000FC914D43BE5939597B8FD6FB156825D097
-:1076E0006E265F3ADBD532C188F18ECABBDD2351ED
-:1076F000EFA90C5A347A9A996A857554823E86CFDE
-:107700007423532DF8B432333E4B9671FD2B69A48C
-:10771000D75809E357B63DF357FC6EB61ADACFF5E2
-:10772000C900ADBBB2ED8DBFA1BE3653F31A915F58
-:107730000CDC61E43AA9C087C1C1D832F283E87297
-:107740005128B63CFC706CF9D3140EDF51C28F7512
-:10775000609F89F8F6BC8FADA47FEE05818776B275
-:10776000FF0513C98F31F36CB45F1F9FB36E45BF24
-:10777000DEFEE3566A3FF7390B6FAF0BBE8865FF3D
-:107780008B096467CF4B099624C3BC5FF95A4FF04D
-:10779000C66519B0FF17076C5D85F5C383251817FB
-:1077A0007BF93AC63AB05E0D0CC175BEFC0FEEB760
-:1077B0008E3C6B0A6C837E3FDEF3CC8B3FC3719FA4
-:1077C000CD4A56607F6E40B900ED463D69B6A2BD18
-:1077D00031EAE3E7FB20DF98B7C314B3BE175314B5
-:1077E000A13FB89310EF7AF23B9E5AF90C7D5F7877
-:1077F000F618E1DD5E835F87713CFF4A8E677B2D63
-:10780000DC4FBAD7921BC07DDA97C2E9EA06DDB633
-:107810005FD6A27EF916D7437AEABFD03563737973
-:10782000377EC6CE7A18371FF6F9E247D67BD01FCF
-:10783000D77F7DEC3E0D08C4965F4BE17AC274168B
-:10784000F53E1FE7D37BB90BE7B395D17C0ACFBEDA
-:107850007F573EEAE326AE87C48FFBFB142E3F7FA3
-:10786000F52BE887F3193DD7C3016240D7F3043DF8
-:10787000BCA2703D18FE166601FECF4305A277D765
-:10788000FB7971F390FD2F1570FADC9CB40DE5B90E
-:10789000D3C8F1FEDC92C38F621C53B63BB344D312
-:1078A000CAA3FCCAB3D6CF3F9401FB5FDD9A4A76E8
-:1078B000A67C5FFDECC1B41FC2FBF33B540FAABE14
-:1078C000D5539F7E6414B67B561FC47962BD06FDF6
-:1078D0009F0FBE9684ED666D720C437F89FC7EF629
-:1078E000FA9BB5F2287E7AADF424E9BF5AD8C7BB1B
-:1078F00046768CCD0278CF5BAF78B0D9BCE0F72765
-:107900007D0F759D4D7A0FC6374A54E6D50F23D3A8
-:107910007D323EAB5B5F3A9409F575FB4694E0BA65
-:1079200056E9BCB70D467AD962203F58FCFE189D37
-:107930001C7FE1FB900EBE5F75A7AD0AE322D06FFE
-:107940003B960F146ED3A31F3FE92CF037FEFE9831
-:107950000E78E6D9B6878680CD02786C6B42FAD86D
-:107960008B8E0B1CE7053DC90916E2EB1825FCCFF1
-:10797000F3FEB3C5A8C2F3ECD96549A59CFE689F88
-:1079800090A93B617D554F0E267A9DBD3E96BE6403
-:107990003B39DF3981D8FA78BC28704A7F052B8CB7
-:1079A000C6AFF87629E3FD46A4C7EA45C0CFA3E8F1
-:1079B000A6FA74B311F5AEF871508364725FF58462
-:1079C00097CC4DEBB5F0F582CA6B86F59EC37F71FF
-:1079D000BFB98276FD5C8596C8E65DC7CADD00CF7B
-:1079E000791359053E253F3C3F323804DBEF35849F
-:1079F0009FFE25F1C144E207E7EDA124F42B650ABF
-:107A0000BFDE79772809F9DC4511B7C37A2CCF6D31
-:107A100003790074FDF12746920B4B83079370BFE7
-:107A2000CEBF68D1E9605F3E6E4D29437FD0F9E05B
-:107A3000EF92705DE7822965E8D7EB894FC4F33791
-:107A4000A90F9CC47F5E0F7A8F531BEB44F86290A2
-:107A50002103E44D4A7D517D37742FBF731AEB8BA0
-:107A6000304F23F2239B671B8713C5F33E3B9CB229
-:107A70000DF75BF2D94A85F72FBF9FEABC3ABE5A91
-:107A8000B16A00C5993E63EE5EC8E7EF46DA80F959
-:107A90001DDE5FD00BF50DF9FEC134EF3D4EE8CF92
-:107AA00055D641F901AE71CCD3004D3FD07BEEB736
-:107AB00003FCEF6520FFF059EC3392DFA63195D639
-:107AC0003743652115F07D06CAE72154267D68C637
-:107AD0002625D000EBB977752CBC66B598BAF004B2
-:107AE000FE9BC380B122216E8A6A07FDCF41390C0B
-:107AF000FB30D7CC4209D0EFDCEDB1DFCD63219A6A
-:107B00004FF5F3DF98BADB8FBF8AFD78304D5B8489
-:107B1000FBA14C34D3BC7EFC824272D229FC9591ED
-:107B2000C77A0530AE364FCAFD77F8BED53D50A9AD
-:107B3000DD0BF87771D10CEDDE144A3DD1501F6199
-:107B40002D8984CFF3CA592807E637AF4D090D4E6A
-:107B5000EAEA8FFD46E1761EE3F1CEBFBEC3F7F140
-:107B60002EA13FCD84D7A88FDCA0E3793D910D0AEB
-:107B7000C9D751CF2BFE44E0CF33CD602A229F12CC
-:107B8000EBC6F6BDA03C9BF9094EBF74E6D3FAE6FE
-:107B9000B00E23A7A340431A8C5B7B167813BB1A45
-:107BA0007CB89EF6FD73E6A17DDF82734E457C288E
-:107BB000213C91EF414F6296E4CBBFC7FDD3A2E0D9
-:107BC0005DB529B6CCB647957BE3FE40396ADF6ADE
-:107BD000777E63D2BAD9AFC73AE55B60C084C1D1C2
-:107BE00074C2F5F013623F1FFBFEAC0CE44B6B500C
-:107BF0009FCE141D8C443ECEA49F256486FEADC34B
-:107C0000598CDF05F43D2ABFE2FCD1B8F5D98CAD23
-:107C100033F8287E3143EF3D84A1B6A274DF6F11A3
-:107C20004F66E8B45C95E0AA1590FDBD88E3C3E318
-:107C3000C3EA07D4776377CBF9AF5382211DF2A74C
-:107C40003D5C5F492C8E187C5174FF9EE0BBBD0EDD
-:107C5000840F6521DEBDA4509C6083C21A1580B3D9
-:107C60000BF619E5D306E5E42194671B6E75B306A0
-:107C7000A82FDE3961FE6B64BB5B29CFA86667A9BC
-:107C8000BEC646EBE7FA7342FD561DD4A7DF533854
-:107C90000CE90DD67DCF44787FC2E9A67965D83846
-:107CA000FEB896F9F317A09FF88077FE6B8877836C
-:107CB000ADE48F4B07582526D3B309F562175BAAAD
-:107CC00060BBE5A90ACF83A864537E3388B059ED21
-:107CD00095CC9FC7E0A9A8AC11FDCBE92AE8D9FC57
-:107CE0007D238EF358129F57AA4E7FCF04D4F3877B
-:107CF000F172F26245DB46F26C2DCD2BDDC42A70A9
-:107D0000DDF81EED029886D64AF5018253FA98FAFC
-:107D1000229C477A1FFE741A43D9D8CF914E3CF16A
-:107D2000E9507E2C147AC0C2AD65E9C8EF8F9C374C
-:107D3000ABC8D78FB8A43E1BB2A13ECBFA16F2F661
-:107D400042DE2E2C1A938E44EDCC8D6D77D1A0F5AA
-:107D50001A8E72EBA89EE24F7FB169BD1CD0EE0671
-:107D600023EB36EFAF572ADFD7BA2F151688F26309
-:107D7000D44DB944F642DD976ACCFBF34BCC2C10C2
-:107D8000E5C7A8AE3A3016DBD5B08EE5888F35C191
-:107D9000041688A28F1BACDD8F2BE9A2EE4B3DF3BE
-:107DA000773BAE31F6FD9729CC9FD25DBBB4D8F7B7
-:107DB000B08E98F2EE2F3AD781EFD9C87012FA75CB
-:107DC000C7A37C86F2C580CE6F00BE75C4C0E5EE49
-:107DD000057B38462E5F7087B95C46BF958DCBB367
-:107DE00009B8CF6A24696262D738B21EBF4F8E5A73
-:107DF000EF85294616A2FD89D03C107EFEFE8C6DD3
-:107E00006CFBD488F93AD56DFB097E126FA2E1E8CC
-:107E10008F8E8335748474C033C6A56E5F35680059
-:107E2000A0E001C91F9E5EA58D867ABD2E865F24C7
-:107E30001477F20F62578F61548EF8CD33ABD06F49
-:107E4000DB55E6EDBBBEDF310EEB8B07F1EF27A76D
-:107E50003EFBE6324A6A69E67A971AC9F5264695E4
-:107E6000CD71651B94074795ED71F5CEB87A575CD7
-:107E7000399BB73F9F18CAD57B18BB27F585712A58
-:107E8000F0CDF319A16998C7B6BAE1D7E3CA819FCB
-:107E9000D51473395FDBA678485C09F8D57AB81E2B
-:107EA0006BF3848D983F9750DC7108F94BF56EC5E4
-:107EB000AE003DD882AD212AE377EEA8EF820A7D9D
-:107EC000571D3C49DFF5D87FA18EE87D55E129DEBD
-:107ED0002EF821E9132B1AE753BE808C87EB994FBC
-:107EE000CB52BAE2E192CF5EC8D00E129FDDA7D886
-:107EF000913E3BF114FB8DF243C9F67F1ADCF64745
-:107F0000545712167EBA14F5EBFFACF97004EA9BD5
-:107F10007F12F2649D121880E36E64BE01284F7FC9
-:107F200054D36FBF0EDA9D30843763CC6F4BEA6B4E
-:107F300004BF1389E11CCC0B0C3CF6EFBC9C1ADE91
-:107F40008CF0BCF458C738CCFB3B9113CEC13CC07D
-:107F5000EDA9FFC5CBFDC29BB17CE4B133BC3C387D
-:107F60009CA387EF7BFB3F1C570EDF3F65EF9EAE68
-:107F70001F13FC44CEAFB6AFD69C8A7A5E359743CA
-:107F80009BC1463303DF9C36F7DC0B4F011CA6FD7B
-:107F90003481F8D953E7278DE3F682DFAB96A03F13
-:107FA00099FF919C247EAF929E9181B231B96B3F33
-:107FB00012733BDC2447AEAB6F45FD257DDA209282
-:107FC00023E54EED0B1C573EF767C113DA7F916A2C
-:107FD000E7FC5BAFA3F87AFACF1249CF5B63E1EB22
-:107FE00001BAA1FDB589FDF89558CFAF52B91D7AF8
-:107FF000BFF366EAE72EA1DFB7AC0C3C6B01F81FBC
-:1080000097793B6BB9BDF0C3ADC057808FB738B41B
-:108010000CE4273F147978927FE0FBE4283BA9A584
-:1080200008CAB62E7BB86582966175E2334D8771BA
-:1080300024C98F5AF2F977522EA537F071D3D70C95
-:10804000D886EB4850B93F6CE694826D4B492F9827
-:1080500048F3659A96A1407FA7E7F4D6A19F4CEE1E
-:10806000CF9ABE5A3BAD47C419E43EC9FDFC2295E8
-:10807000DBF733F4A057C03A2DE93EEA0FF48C2128
-:10808000C21F477AC617B8C751F0656A7804BEFFA9
-:10809000FF084E1F7D1B70AA5904FC427715FC4255
-:1080A000C06F9D1232A4737E41F63DBE47B9D3EE38
-:1080B000F47D9D1A95AF33ED6735A457CA7925FC39
-:1080C0006457C50FD8E57416AFF799D2F87E49FD0D
-:1080D000D423FDAA629C13C7CD144739610C12DF6B
-:1080E0003C0176D552E42F220FA0E4A7F38EA07DA9
-:1080F0002AFBAD49D373FFB4DC77C5DB3A2B1FF302
-:108100006298DF8CEB9860A47D9772B7C5C1F35C71
-:108110005A1EC8A23C978B2CCCC83F3B92117F04BF
-:108120003CA0FAC8D434A27F68EFB760FB39D751BE
-:108130007BC00B3FF187A956B2835A306E8EF55340
-:108140000B03989783763CE1DB1C1D8DDB0DBE7025
-:10815000FF777F9EF721F126AD81FB9998AA0D99B3
-:108160001025E76F4DE3FB9C501C7EE93F50AF5D4F
-:108170006D21BD16652CC5A89AD3A91FD8FF6169CA
-:10818000DC4F417876EF238922BFCE5382705D9118
-:10819000C8F1729385C7CF36811E4D7C51E0AFCCBC
-:1081A000EFF3097D2F5CA54B427D414B937633C89D
-:1081B000F512E1BF87FAE961E524DA7FD3FDFA9091
-:1081C00009FDCC4D376BE1283B06FF30FE788FE090
-:1081D000AB6C3D233BEB1EFC2E09FBB72661BCF5C7
-:1081E0001EFC1EEDC8C537C7C41527A671FA96F345
-:1081F0008BE7FB13E5BC9A1FD7A2C791FDC7F70712
-:1082000076EDA4B4548273A817EEEF523DED5FFCF7
-:108210003CC3EBB91F3EBC3E8FF04EF6D7D33CFFBC
-:10822000AC8FDCA7801C9C3586DBFBD2FE9929EC49
-:1082300071B638D6BE43BF4F67597F7939DE5EC409
-:108240007C81D8F65C6F4918143112DDBA9598F923
-:108250004B78F5048707AE116E52EE3D6E013A0081
-:108260007C598F7995805FEB1F482039E6340606EC
-:10827000205E6DC47C1D92A7DC8EFFFC48AC3F26BF
-:108280007EFF7E9E26FD6AD7667F3F8278D18DFD78
-:108290005D678D6C41F8D75919D1E7857D89448F89
-:1082A000AC6F781AE6D15DDC6B62480FB54AB80056
-:1082B000F9E00545ABA4764B13DC4897D2DFF1C15A
-:1082C000CBDCDF51873B03EBADF3FF17E571D5ED59
-:1082D0008EB5CB2FC07F5540471774E112EC4FF29B
-:1082E00017D0CB35D2B7AA787CAB56C7FC68B7DDC0
-:1082F000A09B3E87F38D4CB68DDE9F2C5810A5F7C2
-:1083000043BB762599A323D261B5D8975ADD296A54
-:10831000578DF958B83F68BFA11F102BA3FCD6B5E5
-:10832000AB3FA67CB0DA9DB1F853DD855FCA370A52
-:108330007E17856FC41FFC82BF30EE8F29E7F1F9ED
-:1083400044514EA8E8A0FCB03AE18F493D101E8B85
-:108350007C2AB138C8A6C3B3EE2CD75F46B56D3DB5
-:108360008876BAA3A22307C9AA4EF84125FEC87988
-:108370005EDFB6568F76A4D47BA2ECD8011363FCE3
-:1083800018CBE83BB48B71BC30BECA40F4E2F27249
-:108390009D9097096860A35C6DEE4F7215E51EF223
-:1083A0003B695723FF43FC2A4A2F3B8EF4FF467A52
-:1083B000D91F399F04BC453B018DB4EB7BC63F09F7
-:1083C0001FD90EEDEB7FEE9F147C9C71BFE48237CA
-:1083D00052FF291D9CEFE4AF57F44BA623BE2F504C
-:1083E000DCE988EF17057F3CBCBF80E2A0F2FD19F5
-:1083F000BD8FFC8FD2FF3507FD7EF0AC16FC689672
-:10840000F097CD927EB2F5B1F15AF4534797E74A0F
-:10841000BFD90E53571E13FAA9CA592811FAAB41F6
-:10842000BF1B3E83B1DFD5B2087D57B7FB1B534C52
-:108430003CB885C3F11E814F8EF2801EF9D8060B21
-:10844000F79F49FE366AF156C2935EC3B4FC87902B
-:108450006EDE3090FFE57F0B3C90707930ADECCF55
-:10846000B8AF56BDF00F3E6422BE7E1AF48556E1C9
-:10847000F7998876F212A6E13901A6DA73A3ED68BE
-:10848000F95CB5D75285F89899AE8BC1D7F634030D
-:1084900095C91F46722381F402607343105F4B7AC3
-:1084A0004BB9CD86A01FEEA4B0EB6BEFB4F9B0BF13
-:1084B000B08EF3C5FEE97C9FFBA7F3BC5959EEB41F
-:1084C00043053ECA382BFAA5A2E314433ADBAF15A5
-:1084D000FA2EA3F5AE9B23F2E83BE942477C2E61DE
-:1084E0009097E4C30DBA32E273918F6C6E844BC5E2
-:1084F000C7D573701D9F4DB1D279C97B859FFCC6CE
-:10850000749E8726FDDBD7EA272F4DEFC4C7183F9F
-:10851000F95EC117F7323E5FFF592BF7F7AACC8FF0
-:108520007C726F704000E75B29FC23A87F21BF8E1F
-:10853000BCC4F791A95C5FDBDB3638807474D2E091
-:10854000DB3013FD4DAD06F21B3235F0ECD3D8CF46
-:10855000AB191ECCB3BAA08B6CF93DB4DB7BF657DC
-:10856000591857DB2BE21BD5C65001E9F522AFB4F1
-:108570003A2954807EAA57C47E555BA10CEF532C38
-:10858000BEBBD253BBE28FF81DBE3F15E076C329B8
-:10859000C6F1C0BF9AC79701BE193371BE2BD3294C
-:1085A0007E89FB82FBF0C1BEC1B4AE7506D17E0FE1
-:1085B000F7732B130BA7919C59654A41F85FF41A86
-:1085C000292FBA6E0DD76B67E8DC5B1621EF7D357E
-:1085D00081D637B3E528C595EA1E994DE74DEBE600
-:1085E0002EBE9DFD93780BCAA968FFFE0516C9250E
-:1085F0007BBDAA773004F3B8D036C0C3C3A5FCFC5A
-:1086000052ADC8BF3D6D601ACE3BB2CF10E8EE5CF4
-:10861000654FFD9383B384CB4B1CA72E3AAE45F236
-:108620002536CE75A5F20543B8E001187F758A6F2F
-:1086300075BAD03B115E75AF66101FFDE0E12F7279
-:1086400049EF69E6F194D3066D1AD289A33C649C84
-:108650001EC55FB70B3A9E6112FA2DF0C168BA973A
-:10866000F52565B174269F4F0A7A4B14791897D770
-:10867000CB3CBF492694C7DCF585FDBAF9393411E6
-:10868000DF1C7536B21FF3D9AA8345143FCD5B1C9E
-:1086900022BA047887D03E39BD2191F3135826F6CB
-:1086A000336B2423FD7A969EE795CC3281BECEF5BE
-:1086B000026A7F66433AC1A16419D753232F29C4A4
-:1086C00017659CB792F1EF77359EF4EBA17DE50E2F
-:1086D000A508582BAB6C2CA5BC93B99BF269FF473E
-:1086E00009FE3BC3A4156C407CDBC5E384301ED976
-:1086F00005D5985B378CF89211E56BD50E85E22590
-:1087000072FDF1715516888D478D0A72FE8D728348
-:1087100045E993520EA1BC60717A6E2C5EF8AF4AA7
-:108720009EC6CB8377D3AF56AF8C95A7EF21FF4A78
-:10873000BD5C9E82DD701CF1B0A48CD371A495C782
-:108740009F6A583D8FC30979D6B92E210FCFE8B95A
-:10875000FC9D655A4BCF8BE93C0E359785451C2A0D
-:1087600062C4F9F5845F17D3657E7B2C7E49BC8A91
-:10877000209E417FD56759E8BB305EF56216AA1985
-:10878000C29F894348BE73396FE6721E9FD6AB9075
-:10879000F7F1723E5EAEC7CB73146728B7253E452E
-:1087A000C723504F1AB538A0E7FEE66C3BE665CA12
-:1087B000FDBDDFA939B253BBF4C0BA6366B37B28F1
-:1087C00096BDACB70DFD68A59B73A0BE4EE5E7C393
-:1087D00013004E5BE1FD666187ACCAE174E612F9F5
-:1087E0005706D5CB8A6CB84F1DE43788A432CAA788
-:1087F00097F0DD9C08DF613E420EC78FCEEFCDAC17
-:10880000D11AF57DD95E0BC9A94B7B12E91C205307
-:108810007D790EE82FED4F603F40F9C2DE44D21360
-:108820002E08B9E194FE19B69CF6A38F8BEFB39F87
-:108830009565A19F9B29E3B2189D8FE7FA6C8DA3E4
-:10884000A7F884A8CFEFB893E39989E4F52547F812
-:108850007E2CC37C28BF3BCBC5F7BD6EE798A29F9B
-:10886000615E86D7E6E150F515A1FE61D22FBCD33B
-:10887000ACC77B1216471E8075D4E4D8286FBC3C69
-:10888000EFFD77A742F9A39D063A5F3AE7A949BDF4
-:1088900042F899AAB9BAA393390143CCB9C5793B37
-:1088A00062CB35C1D8725DDC3D058BDEDFFA667BBD
-:1088B000547DB94B9CEB74330FE6BD33FDDDBD7CBD
-:1088C000DDF05DF9FC6249E0CDF67E9437789B8B54
-:1088D000D3B311F5A3E9880FDD7CA773F17D35993A
-:1088E000EACFE2F903D32B26BACF20DDE59BEC4A91
-:1088F000453B2A7208F7D394777E08CAD3B2BCAF3F
-:10890000286E78E941E641F85CB294929E746983DE
-:10891000C58D76634BAE8DF0A0E55525A070BB628A
-:10892000FC08E0AF55341558EFFA5B3FE2876598D5
-:1089300099DF7F0056950BF9954676DE990956FB2F
-:1089400032F8AE6A3D97DBD5AC2309F9C006B97F92
-:10895000FAE78D66F8677EA3366029CC779ED74A02
-:10896000E7A4D4AF55BA1F600576196597D4BB3814
-:108970003FA831878DA538FE570B2BD00528FD79F0
-:1089800026834FC3F37886DD45A12C78357BD14112
-:10899000B2BF3AE3F6FB38DF9AFDC07E7AAF4CAC4B
-:1089A000A0F59E81F5225C0E6E30D17ACFE4D8C856
-:1089B000FE3DB399DBF9B3EDC68099F4962F53F0E1
-:1089C0001CF399CD06BA3FE07278DC42E7893FDCC0
-:1089D000F43AF91B3F647C5CFF4E3DE93D1FDA230E
-:1089E000252184A3BB3E09F5E6AAF573E83CF2EC29
-:1089F000CD7A2FF2B3D99BEFFBFDF5E8279B785793
-:108A0000312EE926C7C234B7ADAB5EEABB6AF2C805
-:108A1000A7910E6FFA7A4CC74DA8776D063AC9E751
-:108A2000E71D50DF6FDF7C0BE9B7B327581DB82E69
-:108A3000F7A6A7C6A21CFA7042269D9F9EFD82C281
-:108A4000F0CA8CD98E4569F87EB6A27ABBC3A7A1BD
-:108A50002E7EEEB934CFE609E1777FD4139E005D18
-:108A6000DD8972B866B381F4E7F689C7DF9DEAEC69
-:108A7000A22B65E2FADB4761FB670CD4BE536FDAC9
-:108A8000F43D892F2C5482F619875B3C9D99F21690
-:108A900017E0BCE2E96DF6B2FA021EA7BB36BA6374
-:108AA0009B38DDFD9B4BDCFF71F574B7D7957AF5EC
-:108AB00074C7B29363E4F0E5FCCD4FF094710EB34C
-:108AC00087694FD928AEAD29C07F3FC080FE087CA2
-:108AD000F27362EADF16EC780BF1D8E53B82F3C85B
-:108AE000635A11CA4D77C45E8667C06C422F649B7F
-:108AF0004CD29E203B615D2A7B7A55945FE4CFA2E5
-:108B00003FE0037FC47E2EBCF7D521DCA7DADCF37F
-:108B100043D0BF5DF7E55F282E6A6BE371759B2735
-:108B200042F90606A797F050F2F73A0F973FF1EB9C
-:108B30002AC8E0F6619D3342FDE833DD546E1171C1
-:108B4000A48D8BACE437DEE80C58B8DFC3CF503EC1
-:108B50008D1FA9E7F140A1B77D4FF85DCDC507197D
-:108B6000C601D9689E8FF756F1413505CABF1F79F6
-:108B7000B387CE51163FD9D41BD73DDA20EAFBD0BC
-:108B80003D27FFAE9552FD0297DE8DF43DBE98E77E
-:108B9000A3B2AA24F2E7BC55FC81F3DEA8F97B99C5
-:108BA000D96D03BC9908C41A9DFF78FB688BDB164E
-:108BB000853F9F352B155C7F76F79A3C98FB6B4879
-:108BC0001E17C7C26381CB48E3BE915ECA3200CE96
-:108BD00037DDC8F7E3DC0BA600F2C173E25C523C60
-:108BE000FC7A6508FC5107C4E427388DC15C949376
-:108BF0001F2BB1DFCD6DD2537EC09C26850560BC96
-:108C000073CFEECA457EFED153BB72A747CD27FE78
-:108C10003BF9CCC888F57FC6FBB37BF263CB7617F4
-:108C2000D7339FB94F57FB8B557F273FF6F436E17B
-:108C300007D7B4BE4EB4AB44FBF8FECA057E28BBD2
-:108C400015F29F483FEEA9C34F62C4A873FF2C6D75
-:108C5000F9BAE83C52F91C25F66D12EE1B2CC5D270
-:108C6000C4CB3DED574FF47842C821B96FA79AFAAB
-:108C7000F442381A6B6D2AE3E7030B51EFDFCCACFB
-:108C80001EA4A72F443EB1D30A4FD0D38C992E1BDC
-:108C9000F233791FC34FAC49DBF0F985C837765AF8
-:108CA000E109FDE46416527F5FE8BC641FFE44DF07
-:108CB0004CE7466FC9E0704867214541563BEF6578
-:108CC00085F2E49A62E19DD6C0E548A4D248F24B11
-:108CD000C2FD86E9F7931DDCCD7EAD473CCA1CC9B9
-:108CE000DFF933F2851E1DA678896524B3A39FA002
-:108CF000E17A3FCD43EE571D6FCE943685F467CCB5
-:108D0000F34948A6B8B05F3C992D9975C6491284BD
-:108D1000DDCCE2E222E9A077633B394F2853BED095
-:108D20001A47B0B980C795492FC57EF1FDF4412A95
-:108D3000C515B09D71D895F1AF134F453EE878F950
-:108D4000BECADA6D1C663C9ECBC27D00F9887A21D2
-:108D5000F31862CE656D027D1AED3D19E7D6EB8200
-:108D6000452EB24F3AC2E887319698DD286F13F44A
-:108D7000C142DCBFF8B837B4CBE7F916D90E94334B
-:108D8000F2DC55EDA2315E8CC781FEE137E3FE4D8A
-:108D9000E0FB57FB4029BD5726162E45FCAA5BCCAD
-:108DA000E87E88316DAD940F5657C1F5B1BADD2715
-:108DB0008D0CF077BAF00B31E1174F13FB7A4AE8CC
-:108DC000DF5D71BDF016CCB76F99934DE7ACE3F35F
-:108DD00067AE35AE7B31110032342A5ED7CBCCE59D
-:108DE0008CD87F49DF327E9738C89B8F9AB861BD97
-:108DF000E98875C4B5E4C7841F2ECFFE27F931FE7C
-:108E0000FADB313FC68C5ABEA8C769801CED3C47CF
-:108E10006971537CAFB31EEFBF30EF56C47839B7DA
-:108E2000DFAC529EAF289F5A8D7EB1351616335E49
-:108E3000F4FCD4B8FE0DD0BFCD2DDBEBC6637F8F25
-:108E40000D13657FE56ACC075A6388ED8F50509EFD
-:108E5000FB34778DB7393BF8F0EAD15DF21CE4FBC7
-:108E600061941752AEAF383EBE79A81BE9EB73CAC6
-:108E70009B96F2B9CEC9F365E2F9D8DB829F835E97
-:108E80003C1645EE8A29F3E9BE88CE38775BA58685
-:108E9000FAB08C73D72DF652FE34E803FF9141FAF5
-:108EA000C0F933FB19EA9DE7C82EA8FB52E5FE2660
-:108EB000D02BF0FE1F735B29F955319DB75FD4FEAF
-:108EC000CF15720A7578A487BA4D3F784A0FF543DB
-:108ED00033B530F56BE8FEFEAFBF65703DBEAEB09A
-:108EE0006C03F203B65DA1FBB756157E467A47EDDB
-:108EF0009E9B4744E7FFCFD9FD18CF1FDF61E8767F
-:108F0000FD7FCBE07A6AED9E97C86F7A2EC08F2DD9
-:108F100055A98195A8875655E950F362C581CAA91C
-:108F2000A40F4C8175C0BAFE9CC1E153B763921F78
-:108F3000CF23D4C17F0ABCDAE89D4576C1C6296635
-:108F40001BC697EA0AA7CF27FCB75B355C7FFC3CC2
-:108F5000BBE2E9563A37BE6AB7A102F5A812D09B28
-:108F6000FE0DE69B933CAEC2037C294BDF5AF463B3
-:108F70001BE617742F97B764713DA051F1FAEF28E3
-:108F8000267F298BCE57CADBCDF5337BA631C63F72
-:108F90006FCFE4F74C8DF6778C419C7B550D27A065
-:108FA0009E5CC7B44FD1FE655E9B9BFCC48CE713EF
-:108FB0003897B8C94F6C76867F3E94F42895E2E9DD
-:108FC000D2BEB8B087FBD79665FA7232D13FA80FF0
-:108FD0003F7A07C2EDE7AAF037733E933BC9360CE0
-:108FE000FD611667F8D10A37E519915FA2D7771BA3
-:108FF000691F5E75323BC2678CBF5255A2E48CE498
-:109000001B633ACF4D39C90F5BC6D91AEB07BB7545
-:10901000C64C28DAF84D4A979E70F8ABC92ABE9420
-:10902000FA83CEEC233BA77C0AD88D8897CB238785
-:1090300074E8F7777690FE581354689C9AC2DF5014
-:109040001EE03C916FD699F7A586290FEE3B990952
-:10905000C28FD9C8F19275905DCC9EE7F007FE44AF
-:10906000F9715D7AFC526A27FB338A78458DF0E30B
-:1090700000A0A8BE2C53FAE19689A7CCE7E3E3321F
-:10908000D55D12ED775837012409CDCB9D84F37D52
-:10909000C4EABD2D13E6750AF017D779AA2981EE27
-:1090A000035BA77468E8D7F417F1BCE1783CF28958
-:1090B000717B1D888C457912D9D353DE30CF13DEF6
-:1090C00030E23ACADB2FDEFDE958C40F56C1881ED4
-:1090D0006B775F5DDEF04CB11FFFCFE40D7B146D4D
-:1090E0001B3CEFCF7470FD4AE60D7BF87EC9786BB0
-:1090F0007CBEF0858C90CAF3FAC25B9E42BB7DB702
-:1091000089F261C6EF7EFD18FA35C79B5990E2CF10
-:1091100071FA43C4396909D2C9C54FCE6C798861E7
-:10912000BEF9CB1E7E1E36561FE8C91EA098499474
-:10913000DDB83653E8E7DF923D20F9759DB0AF3ECC
-:1091400056228F14E0FAF6E9EDDD9D5FDA22C7EFD3
-:1091500029DFA5ADFB7C17E98FAE08E7C7C4BF7652
-:1091600074F6776DF1B4E7507676134F5345FE9A57
-:10917000AA70D6C11C3CBF49C6D3D4D6011427332C
-:1091800075C5D342AC9B789A2AE2532B0C5A25F929
-:1091900069F699DCDC8EF612FF6A6C4DF5207FAB28
-:1091A0009B7BEE453C7AA13AC6BAF09C5FA3807FD8
-:1091B000F5D5C7D3DA33BB89A76D157ADB0785BA36
-:1091C0009011E0BA9571FEEB6F9371351DD9B59191
-:1091D000877368DECA4433CDFB83574DDBD03F3500
-:1091E00043C6CB5EE5FEB519222EF6C1C402F23F9E
-:1091F000F504E7194DB1718777059C2F594AC94F7E
-:109200007FFF2F26907F7E16FAF7FBA07FAB59F8E1
-:10921000EBB99FCFDDC4EF3170EF50E81E59441316
-:109220001DE9A476BA4F761EB0D18DC87AFD80357F
-:10923000DF81D78A4E417DC8DD086550FAD595AAF1
-:10924000DF05EDB61E4B20BFE20AA75BE4E7F1F8AD
-:10925000B57FB512E8C7FBA5FBE3FC8D3A0DFBB962
-:1092600094C9E57C5296B1DBFB281A0D224E22C62A
-:109270005BCA60DFE1A953F87385B89F301E1EB248
-:10928000BF4643BD19FD7B911C7E0FCD25A33685BE
-:10929000FCCEC90574DF5463627D5305AF279ABDC8
-:1092A000648978A9FEBB2A5748993B99F2A83345AF
-:1092B0005E621C9C6736C796E3E347F1E7E36630DE
-:1092C0005FFF8C3E979F1F3B8FFC16FABFB42A5F4F
-:1092D000EC8B87E2288D06F71FF2290ECBEF935A0D
-:1092E0009ACDE1A6CBE1CFDE8E72BA1710E885EBFE
-:1092F000718CCFBFF7779D0AD24BA383E3ED7F77C5
-:10930000DEF1F34DCB2AE07A8D83D36BE34A25C09F
-:10931000E1C5E77DB57E92E2AC6FD74FF281E2798D
-:109320003A944FDF117FF03F6C20BADB6BE1E75ED0
-:1093300025BFA28423B43F85BD7B232AD318573D84
-:10934000BB9CEE85DA58D53B09E3AE6326D9681D90
-:10935000B5AFF273D5358BC3B988D7B565E182FA5D
-:109360006EE08A03A892BF42BBE94EC6EF176A8A35
-:109370008D23C6C78757A768E3B346A0BDF441EB6A
-:10938000EBB8DFAD1692AFB58B234FA3FFC097E2CA
-:109390009B9405F871FE81E36315377D46FAFCC5A1
-:1093A0007DFDE93CE8F4C6D873716C756C7C923530
-:1093B0002593DF9DB5C4BEC7735B31DF5D16AFE497
-:1093C000FACD3AA36F00EA9F37DDC8F3313E99A387
-:1093D00063B8AF9F58F8FEFB1F4E14FCDA53102DF4
-:1093E0000FEA7BDC5F683708F302789EAC6C5F8322
-:1093F000FB0BFB5A2DF6F79397BE5380FB7BBEF514
-:109400003B05B8BFEB0CCD1AD24751BA6F21C2E36E
-:10941000F4CD5ED20F655EF0D5E25DC3B78C77D731
-:109420002A8F9BB3FE35798C7FD17E9357BFD2FBB9
-:109430002D245FF879E22EFFDD39BA57EDE2973A35
-:1094400005F9714FFDE50B3DCF65667ED4C34ACA71
-:10945000C2F45DC9DF750CF541A907C7CFFF4931DB
-:10946000FF9D599A09E5A0F4F75689BECD81CFB981
-:10947000BEBD5D217FAED9ED4F1A45F6D5CCE17A60
-:10948000E22FFF46E742589B62473B65CEF6A55464
-:109490007F61F70CAAD7994321B4C76AA01ECB2BD2
-:1094A00046C7E6791B77F27890B47F611E7AD4D7ED
-:1094B000129C1123E2672DEAD730C55A95FBBD6B8C
-:1094C0009DCCE367A80FC7DA8B32AEBBD1CBEFEDF3
-:1094D000D9D8A6D0FD5D69465F7E36EE6B5C7C77A1
-:1094E0007F96760EF14EC6E71F4CD30E22DD3A8DE5
-:1094F0002C97F2F90CF25C5AECB9CF9EF2E48E761E
-:10950000E2C195F4A8A9A42FFD9579495F7A072FA8
-:10951000CD243DEA4ED2AFE4FBCBF3E40231F1FCC3
-:1095200059E29CEE2C714E17F97E288EEF4797ABCF
-:10953000A3F2E442DDE53B44E5C9457F179D2717CB
-:109540008AE18F9C9FA4EB17501CBD0EE866D1B03A
-:109550002EBCAE66E26F7DE4033A37B4C3447EBAF4
-:109560006A91C75B57758AEC9F3A3C87C4E95BE315
-:10957000E7E9B97E550D7625E5330763F37D95EC74
-:109580006F57FF96ED7AF2C7DBB2A59DC8E95BAED7
-:109590004BAEA3BA4DE1F41837CF787B3ADEAF2E4D
-:1095A000EDE1ABE573EE6F79DDD7CAE706C7C1E140
-:1095B0005FE57397C527FA46923CDF427CE223774A
-:1095C000731ABA28659E74D33E9E273D566FD37892
-:1095D0003C54CFF325E2E3C2EEB114F7947168F383
-:1095E000CBFAC0B27C6AEFC17CB49A7D8994BF503B
-:1095F000E5AE223D3E3E1E3A97B58EC5ADF82B3BFB
-:1096000042E7DEFEBB7908DFCF4E74129F72B3FCD7
-:109610006BCC43B83BFB1AE2A1076D9FA7F8A2F001
-:10962000A56C101804837ACE379B2BF63F41E4AB30
-:1096300098553F73447DDFD3770BB2B93FF1A0C893
-:10964000935A939840F737B88CFC9C874BC7F3B973
-:1096500086667A17E2FCCD6EBE9F4FECF901C373AC
-:109660007B4F1882749F82BFC6E641B928FD58B26D
-:10967000FF76E15FBD5A3A5AF93FCC3F1E957473AD
-:10968000B5F1BCF5008328FA8AA7879EBEEB89BF97
-:109690006CCFF63EC1F1421B427190ABE44B09C561
-:1096A000C0B751EEEF34B9D11E41BF0CC9DBD5199B
-:1096B000D29EE7F742ACC921B9F88985DB27F2DCF5
-:1096C000945CFF2EB9FE6F496FB4A47BF764437FAF
-:1096D000A74B353A27B12291CB97C8B33C1F29FE3F
-:1096E000FC50BC5C91E75FE478BFFBBFCC578F7D3B
-:1096F0004B7C15E42CE91D3DC67D2FFBDECFEFC171
-:1097000029EBD044FE0D9DFB90F3AAEBE0797C673A
-:10971000C5FCE4FB90D07306E7681F215E9D7FCFF8
-:109720006CC6B86A7131E79FB55E1BC5256A833C7C
-:109730005FA77631233F823C273CDBE5FB1CF76FBC
-:10974000C5711BDD5F5BBB7B6B536FCA67F091BE5E
-:1097500078E13DFE3EDDE5FB02DBD52D0EC7C43FC3
-:109760004ABEF97C794531CD97FC004E53ECF9ABFC
-:109770008C1CCE6FE4332D47C217EC1DF8EE7C1520
-:10978000CF3FAF736AF652CA63E0FEF5047707F97C
-:10979000956A77929060940C8BF53FCB26BCA9DD3F
-:1097A000595A44F736042D45740FD19FF8BD5DE733
-:1097B0001FC80CE8B93F3E2967049E3B09DC8A7A42
-:1097C0006B1E8C832AEEF9D65B8BC8DF1847779225
-:1097D000DE3ACFDDFED01C6850BAE8719D81CB49DE
-:1097E00029DFFE91EDE6F110A7C8476C9BC066DA51
-:1097F000BACA36676C9EE6CEAC9BFF81FBF38F6CDA
-:1098000055C4D179DC3EDF0CD66CEFCBF1305FC4B0
-:10981000ED27887C0BE63777E559F4BE72DC5ECE27
-:10982000AF93EF8BB87DC297E27722EC46C28BC430
-:1098300026CE3718E005EAEDA3231D63F0BC5BDFFD
-:1098400096D06884572F043F9EA361E19F0FC5788F
-:10985000488A3A1AE3215B160D3B80715A7565C739
-:1098600077716BDCCDF632345967BBBC37E4107FBF
-:10987000A92F44FC2FFBA381E747AE4C2079DF9250
-:109880005B4DF991178E9B62CE23C53FFD6C990B02
-:10989000FD50BD9BDEA67844E24EA5DBBCD79FE61B
-:1098A000D844FEE43217FAB5129B3AFC23D14FF3A9
-:1098B000B0C2EF0085D92B2EF427A83AD43B66EC32
-:1098C000E6E7E567343BCACCC44F151ECF19ED243B
-:1098D0003EA9AEBC4D87769FBA94D17D7BF373B819
-:1098E0005FBC5F8B5D87FBFEDBAFF5DDC6E97C39D6
-:1098F0003A19573422B86A4C914398DA29E38B32EB
-:10990000CFAEA77BECA53C8AD7672FD363853CEA13
-:10991000D4E7E3F0B8A7EF247E4B7CFEAD81911E27
-:10992000F65BC54CE7DE245E37CAF3075F733F7111
-:109930009EC8DF39B5EABF86F07B02647C26C0EFA3
-:10994000713584976711BCC237FA71DD3B1DBADAF5
-:1099500041E45FABA57E56F27BF2F29AFA2C1B59DA
-:109960008C4F3B53600AA7F6CECB43BAF4031EF4E8
-:10997000EB060F6ECAE17952EACA04DA37752DDDBB
-:1099800010CE54471AED9BFA18DF9FEB73383C65F5
-:109990007C58FA4107E7F8D6603E70E739B545567E
-:1099A0007E4E4D9CAB4E5C74FC053CFFB545F8A368
-:1099B0000FBC3A907EDFE3D24A55413DF592A39227
-:1099C0007ECF6AA3D8D744B583D96DD1F87980F218
-:1099D000747BEFE3F986AA3837AEAE746E4578969D
-:1099E0003B7D948FFCDDC610FD04C6ABF6D314F7A7
-:1099F00003BD88CE079FDBA348BD28461E4ABB2D6A
-:109A0000DE1E7B51F2CDFF213D694F279FBE463BB5
-:109A10008BC5DA9B9DEDA5FD186F4FC47DDF93FECE
-:109A2000C3347F4CDECD11B1EF52BE670ADE28F39E
-:109A3000713ACF89B38005CF714C41A21CD1959763
-:109A4000C444BED27AC5EA417DA9A7BCA4CEBC213C
-:109A5000563F94FB37EBBF834F99D724F3962C984E
-:109A6000BF927279FE8A05F35752F07750F87973F6
-:109A7000997FD26070533E8BFF4146714965620504
-:109A8000F9FF92BD46C2BF8B2CB0017F07C03FD902
-:109A900046E7EAF19C13E27D447151BF632A34D951
-:109AA0005E87ED3BEF93AC64549FDC57CB403DCCDD
-:109AB00002F578CF75E739F399FCDEFDF8FC1599CE
-:109AC0004725E3CA99FD5F56D0CF8A6104CA67F87B
-:109AD000B1F82E9FF7D3F22337F18DB4069E2715E8
-:109AE000B99ED9D1CF5F26F98F39765FD729BE7C51
-:109AF000A4CF75567ECFC266E669D243B93DA7377B
-:109B0000EDE346E6DEAF2386DD4CBFDBF1BC53D38D
-:109B1000E7A676E1939C175BCFD77D11CFAD295D8A
-:109B2000E35D9CF3F75CD4AFCADA4C1C2FE3C6DFCD
-:109B3000D879CF4DC082F2C495CBF1C113A7EFCA3B
-:109B4000A72B5789C9FB93E3F7B43E899F57D2E30C
-:109B500025FEF5846FFE32B14F271248FF90F8764C
-:109B600060C90EBA4FB27D49909E172D4A508FE7BB
-:109B7000872D9169C81973F2B2EEC07B502E26462C
-:109B800072F11E95016EB717EF51B9981A3981E538
-:109B9000EB9FF8BE97EAFB45B6E0BD2A77E41DBB14
-:109BA00083EA713F33192BDA72E40EBF0DCFA9841B
-:109BB0009777A0DC2A8ECB8B89BBFF2141FC0E540A
-:109BC000BACD48FA64BA8813B272A1D763440BCAFB
-:109BD0000D19451417B431F7CE0EACCF36F17B22F8
-:109BE00018E03FD6F7CBE7F9158CAF9B650B7F37B5
-:109BF0000BFBE9771DF31DF47D271FDF6912F12EA2
-:109C00003EFED197785C52E6093366CF417DC8E6C7
-:109C1000663165797F0A53ED39785F4283F4278A8C
-:109C2000F22B09BE49B95172F9E8CD3F1944BF2F53
-:109C3000F3F2CFFA22DFBCC5187B3FB77C26BB39D5
-:109C40009FBC28EEA1BC2FC17777EE08FC7D9969F7
-:109C500063F14AE12929A54607E96FCFEA914FA5AB
-:109C60000AFC704CE6F373947B15FC5D17790F6466
-:109C7000AA4F253F01F3B5E851AEA69EF652FE610C
-:109C8000B539928BBFBFF396D95785F3BC5479F29F
-:109C90007E8A3F661E3D81F922470DCD6392508E2C
-:109CA000E48B7B3830C00BE5435979640F76F2873B
-:109CB0007E0AC547C74FE6E771C7B1A08AFB3CD60D
-:109CC000CECF878D2DCEF734C078E345BEC9D8639B
-:109CD000DE24E46F637F1056F93D2111353ABF430E
-:109CE0003E99CBE08EA6875BDD516586F755C7961A
-:109CF000BFE7892DDF31F2EBFED1E5C18AD680EBDB
-:109D00007C4511F76D007FE1EBE2798CBF12F6DC48
-:109D1000401733E7619EA553F1A3BD30705726C5A8
-:109D20006D768D64544EDB61DE668E5EFF5A1D8F4C
-:109D30006B0BBFBAFC7D2AAC4379FBF27B6904AFA5
-:109D4000341BF05B27711FC2B703826E0F083A2DD8
-:109D5000C9325B91FF1F30B837119E279ADDE8A703
-:109D6000DA9F68A4FB7F1BE6F3DFB75092CCCC08E8
-:109D7000FDEAA7F332B4633742BDBEC44CF92907EC
-:109D800044DE77C3832AF9B9B01EEF41D43F622580
-:109D90007F797952E1DD58AF4F32D2B98BFD8925F9
-:109DA0003E311EFD2EC1F64473087F2723FE1ED6CA
-:109DB000A3382F841BCCEB293E0FA2477D8991F459
-:109DC00070793E1FFAA1789E3ED34CE31D70D8F700
-:109DD00023DE357C449A1ED48F74633E99C4EFF21F
-:109DE000A491F4BB33407D7DA3EFD9D7A779DCFCE8
-:109DF0001C30FF3D95C2CEDF578161A11DBAD51938
-:109E0000D12D8F0FE648B83355C3F6194C96F9F9A2
-:109E1000B5B4CE72A94AF72D29B2BC94CA8F8B7AF9
-:109E2000796F6C6A1EE7534ADBEB7F43BCED9B0402
-:109E300070817DF224747F7EEAB4E0EF97EF5F8952
-:109E40000BFDFE0AAE7350D7FA0F383C2E6F54B993
-:109E50009B7D0920BEC5EFCB018BC78D7EB62BF74E
-:109E6000C7E12AD7A1CFE4F0EC5C474AF7EB48CD35
-:109E7000E3EB088A73E3F1F54A9EEEDB5E67B7F821
-:109E8000F72FAF332D769DDFE23CC3CAB7304F7D4D
-:109E90002ECCCFD6353FFAF9B812E49B1CFFC68909
-:109EA0007C6956189BE7C4467ACC5C5F8CCD6BBA54
-:109EB00045D9D488F2F57111377F5DD0D5A184FFE3
-:109EC000D517F5ADD7A715B413BFEDB5B411894BB0
-:109ED000F267C9FF2F659C2CC132C88101792067C8
-:109EE000EEEF7D741A76DEEE78BC2FCA2BE09BD79E
-:109EF000E58DB87C9E927E3BE70BF48B7424E937AA
-:109F00007EFE928ED8ED414A10DDCC42F474319E33
-:109F10008F0F7A09DD73CFDC395DEB03221F6BAE47
-:109F2000E7EB58EAA779DFE27894F2106FC9F7DD22
-:109F30009407FB3D65E8A774FF147355F6273B4D66
-:109F4000D1B4FF9BF3C58C7F7C2FF5FC78BDFE4A16
-:109F500079E9729EF1FC50CE4799B883F4F83AD073
-:109F6000E379DEBA42FCBEAE4AC7F9F06E85F4FA78
-:109F70005A903328A7E4BDCC3715581BF19ECDBDB0
-:109F800006EE4FF5BF6472C7DE4B159FBF2EEC89FE
-:109F9000C54CDA0BFC7E8B1A3BBF774AC89996FBFF
-:109FA0007ACB7BA9B83C043915732F55A53BF65ED7
-:109FB000AA1EEC05B00B483F63BD74C22EE072BA16
-:109FC000E57AB7DDCFC8FFCC7F2774AA51E88300BC
-:109FD0008BB4AE7BF3C00EA0FB001BF3F2C5BD64D7
-:109FE00001FEBB2C42FF8FF74717A5FB56209ECCE6
-:109FF0001CA4E5E24F04CD30727F33E0DBA60E8671
-:10A000006998F5DBF15ED95B59FD3BBA3E846F0F71
-:10A0100013BE0DFC94DF37DB856F8FE4A572B98426
-:10A0200042E64A741C71FA1EC7715B1CC13FE13DD8
-:10A03000F81BDB4C046F99E71A4FDF51F3396DE0E1
-:10A04000F371EAF5349F27BA9BCFD5E07D345EA546
-:10A05000338EDF3DE13F9E27491CD685FF8315DF08
-:10A060008B386E271D2CE776D765F3D6DB68BFEFFC
-:10A070009CCAE3727509D24ED6C667A4A11F928FFF
-:10A080007FE74A8E177756F2BCA4096D35148763B3
-:10A09000E53CAEE681FFD1EFFC08FE36D9596440BD
-:10A0A000D4FB2BBBDB807ECEC9E363E36F53CCB71D
-:10A0B00050BCEFCEC98698DF39957098227E477DD7
-:10A0C0004ADCEF9BC6C3253E6ED7C90FC47AB3F0F6
-:10A0D000777FE099CDF8399E0CF17B7447F33AE332
-:10A0E0007BFDAF31BE772CEF1AE27BED8608DD3BBE
-:10A0F000F15AEAEC4DF3816EFAFF7210DDDB7F73EB
-:10A10000DA9CED6BA1FCCCC6EBA8FC5ADA0F171E4B
-:10A11000C5FA2D05542ED77D3A0DE9A0B064EA3872
-:10A12000FC9D83760BEFC765F5B5E0EFDFB886F4ED
-:10A130001E86F9C8E5C608B5BB6D68CD70CCAF2AE0
-:10A14000B7F2F291A2FF1846E5DEA23CEC95EBB027
-:10A15000DCAE7C3AADBBF8E0C0422584BF73579EAD
-:10A16000CCDB8F1FF66C26FA8BCACB7879A0A7744C
-:10A17000651FACD77D36AD3B7DC428EC21A95F7B44
-:10A1800005BDEFD24E36E2B944AF4DF1E0F913EF21
-:10A19000C893FC3E3A33CF53F93F722300BD008091
-:10A1A000000000001F8B080000000000000BE57D90
-:10A1B00009789445D270BFF3CE9564924C0E20215D
-:10A1C000102609840492300987288703048C0A38F2
-:10A1D0005C028AF08633E42011748DBBEC6620802B
-:10A1E000E8A28615151574404070118302A206BEC0
-:10A1F000E1505151E3B1AEE82E7FA2ACDC1283AE48
-:10A20000B8EBAE7F55757766DE37C902FBFDDFF32D
-:10A21000ECF7FCF8EC76FAEDABBAAABAAABABABA7D
-:10A22000C7EBC935CFCA626CB847F1F8211DE158B8
-:10A230009268EFC7D858CDDA4F5518733A5296390D
-:10A24000E3198B1E38AC3F7341B99D59582A6337C7
-:10A25000A468E1AE0E8C4DB9E6DBE4289531E62822
-:10A26000ECE98D849405181BC0D838FC13EA8FB331
-:10A270003B026A0EFC9D6F39D790C1E8DFCFD03E1C
-:10A280005BF1385DFD31D725E6EBDE8C61173F5F72
-:10A290004FFD76C0EF53067D9B6CC68F09BCDF0B6C
-:10A2A00016C74A253AD8FF4DA27FE661DDE33B326F
-:10A2B000A688FC4D72BC0CFD78F84F817A9D98F809
-:10A2C000BBEEAD1F15ACB7A25661690005F351BADC
-:10A2D0009ED528084CB6A2A5E3FCACA67A177EEF63
-:10A2E000A6B87B39119E816EBB37BB35DC12BEAE82
-:10A2F00026F890D71A2EFC67867C1293FF14A7B31A
-:10A30000238ECBCBA19D87C506E182F107107E5637
-:10A310007078D62B1594624306ED1688760BE47C94
-:10A32000F7EAE73B209CF9C2008E04E65EA962BB17
-:10A33000F8DC5EFF0AEEF2F0A81CD687B18976EF52
-:10A34000833698C3A4985944E7C9CCB73B06E6FFC7
-:10A3500062845680F0A826DFBE0698D41CE6B1229F
-:10A360005E808E37723A72BA48B88CF86881D388AA
-:10A370001703DC463C04E9539F886922ABA07CCBE1
-:10A38000BC0CF3A9461E047E6DCAB5F937E22066FF
-:10A39000F81FF0F3D1C274FF034A10AEA30ACB300A
-:10A3A000433D9F12EEDE9CC2D80F61307FF81E2F16
-:10A3B000F03068E62FC6B2A8D6F056DA79BD7BC277
-:10A3C000A336627A7D7AF8325334B64FF663FDF8DD
-:10A3D00070487382F0FF60629A1DE0BD47AD25FAB8
-:10A3E00075614D4BCC29413E7BD80593EE8F7C297E
-:10A3F000E7E353904E569332C3EB8039E1BFEB83D2
-:10A40000E9C32E4068078E2F3BC0354370D38C06BE
-:10A41000A55141785D290E5C2F33EC6AC096D39A22
-:10A420005F704676A0D3CCCBF00FAB799C61BBE1DB
-:10A43000765E6F26F68FF5168FF484D69B89E3E05F
-:10A44000B82BE1BB3DF85D01BC27C5B6A60FCC8F8C
-:10A45000E01F5339C27B220EF06515F4BA3792E83B
-:10A4600035E6DE61F45D199FA134C0FC4714B828BD
-:10A470008DEDF7A1996513DDA6D46605E9A876D41C
-:10A480009EC275CACC0DFDC7C1BCDFEBFF5CAE063A
-:10A49000E5C74DAC08EB19F1F75C107F57B48EDAC5
-:10A4A00083FFF508EF36E4FBF34AFD002CCCEFEC1C
-:10A4B000243A32A6A520FD629C29C36210DF3FC169
-:10A4C000B880EF8958047CB0A7A3B613E19DCCBC3B
-:10A4D00023CD30DFD802CDA239683813C2B3D0C93A
-:10A4E000E119A93A886F9BB72B7E1BD4CBF7643E4A
-:10A4F0003E18F2E5472CCC0FE5CD8CF375F33AD539
-:10A50000EF037E9AF7F6CB036005B2AF041FF75C4A
-:10A510006B622E490FF85FA63F9CB93282F9DE5B71
-:10A520006375F9ECDACEBAFA7DF6A6EACA7303BD12
-:10A5300074E57D8FE4E9F2FDEBAFD3D5BFE6B3E17F
-:10A54000BAFCB50D37E9EA0F3A355E971FD2749B16
-:10A55000AE7E7518ACAF3E886E4F7D06E065B6A046
-:10A56000D3F59766EADA9D8D1A7504D7DDEC55F3BD
-:10A5700046E3BA1BC64A74FDB01ACB97C89715F0CC
-:10A580001FD2732EF34607005F2359D39B4980BF28
-:10A59000057EC58D789BB796D793EDE6EFBD7378B2
-:10A5A0000CA67EFDF712660EE6A19FCA3F6D78E706
-:10A5B000704879BEB3D084FC77DE1519FF7504228C
-:10A5C000825DF3B3DA267DDD01A4DF27AADB069FD7
-:10A5D00016BEADD23A58F882E267D06F3AEB118DD1
-:10A5E000F9F2232AF303FD4FB28AC70643FA4395D3
-:10A5F000FF9DC33D82F8B125E8E91CE6D2D339229C
-:10A60000434FE748B79ECED103F5748EF1E8E91CBD
-:10A6100057A0A77307AF9ECE9DA6E8E99CA8E9E9DD
-:10A620009C54A4A773D70A3D9DBB55EAE999E22B38
-:10A63000D6D3CF407F299FD3562ED4D56BE1036F5D
-:10A64000D1684C7BD4FC52D76F895A6A65A6203FEB
-:10A65000F8E03FE4879E8CB90380E705408780AB34
-:10A66000351F14D5AD5E91F46FF041760AD0BF77F7
-:10A6700008FDD569D15A1BF25CA692AEA04FFBA68D
-:10A68000F4273B6800A6537A821D04728379DBB6F7
-:10A6900083A4FC0AB53BCC0382FAAA3DB9D64ACFC3
-:10A6A0008E95FAA91D3DEBEA1A94838090638CDBAA
-:10A6B000018CAD32211C53055F1F0CE77C79118B97
-:10A6C000AE857A506720C0750CE186718E85F73EA5
-:10A6D0008CEBF436566BC1FEA7B17A4AA7B3264A73
-:10A6E00035E624BB622673533A9B79297DCFAE4D64
-:10A6F0004901B9596A6F188076C95F0B3F3CAE209B
-:10A700003047E310D876F12AE5F5C7F827D47B3037
-:10A71000C5AB215EF3EDAEBB1E854F07514FA0FCCC
-:10A720001D1D47F032B3377B7C765BFD2C25F9FE8F
-:10A73000BAA26928777D8976F766985BEF24664F21
-:10A74000443D97E04F1D0FF4294FD1EB975E8227D0
-:10A750005EE85CBB10ED28C6FCB1A81FAE76DC5FDE
-:10A76000A5787E8170CBFA979BAFD55A7B27C2D94B
-:10A7700054E6706F04FEFC44D0E3D95B6D01352ACA
-:10A78000C8479F454C7FB303D0EDEE086D19F1DB50
-:10A79000E41B57605E3918E75A08F05D28047C73A3
-:10A7A000FCAFC4F252BBD6AD234CF17C57AD67343D
-:10A7B000E2DFCBF10F7F647BDB849FC33342E1E3B5
-:10A7C000BF1EA1ADC67E0E9AEA93DD880F73FD0011
-:10A7D000B24B1D1DA89FF3568E97F6F0303CA2EBAE
-:10A7E000349CD76C9BCD8DFB93E10AA7EB89B819FC
-:10A7F000D3CBE1CF39266FC780AA83FB1982DB59FF
-:10A80000D82D11F8E6BC45C06DEF20F0EECAC27538
-:10A81000D51EDCD5D83FDA89BF56FC6827D23FC8A1
-:10A82000BFE28BF13F00799BE9E22713D07EC93666
-:10A83000B93742D1BA70E81AF8FD0381EFF516C8AE
-:10A84000C7D2F795F83D219CB74F78CCE4AF86F698
-:10A85000DEE1AF129D9E5DE0A0F91432971517D985
-:10A860002C615FFF65D8DFF735003DF6A5687B7189
-:10A870001E33E24CC99F101C5A6FB477D8E02BE30B
-:10A880007FB94EC73BF914E608BC4D601E5A77935A
-:10A890009866C1713FFAC6EA41F9F991902760FFC5
-:10A8A000D3F7A9CC4FE9ED2C40F5EF600D94FF30C4
-:10A8B00022A76B25C037EEF19E3D50BE86E0FD7DA0
-:10A8C000BE5EB519F19C5F4E7642BCAFE97045FCA7
-:10A8D0003B4EF00BACD74FB11F58AFFD725343D670
-:10A8E0004D3EE7176676F6F857EBA6BE99EB0B10D0
-:10A8F0008C8E4498FF0D828437784A484FA09D156E
-:10A900000FF8AF77A96467150C6B3423FC5BBEE5C9
-:10A9100072ECAD252CD207E56F0D5319D26BECDA32
-:10A9200051A7B1DD511688EF07F5475ED20E47C338
-:10A93000FCC7827C0789CC0ABA809E08D14B372598
-:10A94000ACCE473BE2A6EEFAEF37B31A15F1373A31
-:10A950004BAF57C6A25E91F560BC038887D8D6FA84
-:10A96000E547A95F7AB15E57A35F169A3C2C95EC38
-:10A97000549715F97EA69979DA5A6F937B2AC29E6D
-:10A98000E576CB2D62ECE6D117AD1760BE0353B56B
-:10A9900008EC67E198BF4C47790CFBACF7FAA21EB4
-:10A9A0007D5F650F40F99755807150AE27AAECCCBA
-:10A9B0000306CED7554ECA9FAA4AA0F44C958BD217
-:10A9C00073551954FE4D959BF25353BDF1D8EFCCFE
-:10A9D00095DF9AD18EBA2F4CD28FC3B148F0EF7D5C
-:10A9E000617C9FB52872D1678530EE225280A0AF7E
-:10A9F0006B6B46A1D955BCB7F64D4CE1BBEAC0F232
-:10AA0000D58A1BF5D39CC3DA0A649F79471BC6A27B
-:10AA1000D8E9FF87131D116F659714A6C1523AD06C
-:10AA2000C39386E39FAC1A48709DAEF2105C9EBA49
-:10AA3000C637E3A0FDD9AA02CA2F4CF566A6764018
-:10AA400075FBAD15DB8FD9DE684E82F2911EC58392
-:10AA5000EB7BA887F9FD40BFB516AE2FD682BE406E
-:10AA6000FE19963D7EFD5D0CE5B9D617C799143BDE
-:10AA70006B641CF2D5C04233D69BFC13D85C2941D1
-:10AA8000FEBEDC3A39BF5F21FC9CDF1F43F89078A3
-:10AA90002A13F43ABFA7F72D83A0DFFD6047AA0071
-:10AAA0005FF32513C1D7FC59B81F8D0463FB85BB29
-:10AAB000D33A3107CE131ADB30DFBB13033A9C7D48
-:10AAC000E19E04A44786623655825C381B5BFBD747
-:10AAD000CF51EEFD99CB3DC66ABF7E12E562970469
-:10AAE000F70390FBC602FB34DAD75444A05E5C60E7
-:10AAF000651ACF6BBD317F369CD1FE76C08EA4E146
-:10AB0000B89E703C57CFA05C4BDFF178EAAF5CC1D8
-:10AB1000F96E79E189E6D75C58EE27BEDCB6637D35
-:10AB2000E7A72057BA737938C2F53ADA19B04E5E02
-:10AB30005F1D41F2EB758BFB7825CAEDF50EF766CC
-:10AB4000A8F7DC43F77EB917D307CBF2EE45FE48F2
-:10AB50008DA57E66FF6E7E2F6C0F7A9C25C2BC7E13
-:10AB6000FF8A120843FFCB9A034B1361BC3EEB1ADA
-:10AB70004D9D21CDDDA45463DABB6BC111D49F156B
-:10AB8000A92E6ADF777B8A8AF661AFCEFECFAF2728
-:10AB9000FDAED7FB596BBE1DDE9905F57F2FA5F6DF
-:10ABA000CC12A0EF7D5D3FCDE3FBBE1AEA6777DDF7
-:10ABB000848F6F67380FB02C10EE422BF92570BAD6
-:10ABC00016C89FDF95B601FD177B4CBE0DA48F669E
-:10ABD00072FBE3BCD7F704F24D19D4F741BE2CD772
-:10ABE00017751D9497FDB9BB1B3884757DFA8602D5
-:10ABF000C4C7825D8F8EEA0CF5CE0F666E05402FBE
-:10AC0000DA7D7114B6635DC156C67E765577BC0D8C
-:10AC1000DAFD366B787FE413AF5A4BE3B0723ECE69
-:10AC2000E3428FB1861CF20B904A817ABF85CFF840
-:10AC30003DB62EE600F76D71FA94D72D4941FF4AD3
-:10AC40003FCDEE56711DA4F8122B1C41BD08FAEC45
-:10AC500077B87E12ADA25FE78464EF55E833ABD0DE
-:10AC60004FB2BFC7ADCC1716CBED6005F5AD95EB78
-:10AC7000E1CD202F905FA51E867137A6F2F664FF06
-:10AC80002681D2CD0538931EB7F949D75FE1F84642
-:10AC9000BF99B443A6C455EF6B40FF4E84B603C7BB
-:10ACA000917E326676BBD0CE5916E1793195ECA80B
-:10ACB000A6649C03E8C997B1DE0215ECAAB410BBE8
-:10ACC000CA7E657AF2C508CFABD8FE4AEB1BE5E831
-:10ACD000A2EF4D2C17F860D1A336DA77560BFF415F
-:10ACE000B5F06755470EB0E3FA67874DA56F82FE52
-:10ACF0001CC27B68E97751641EC9876AC6DAC4DB67
-:10AD00007E58D71AC89100E8010DD6F7D04B4D2ACE
-:10AD1000E7FBFA43D1FD507E324FA40BF7F526A690
-:10AD200085E847633F40B76338CF612C8269217A59
-:10AD3000D0C362ACB87E9923F6DF9AFF60413F39F9
-:10AD40008FC1C27F37B8F9B30894838BBECF237904
-:10AD5000D8DEFCF689F9FD17CE0F526F4FEF39841C
-:10AD600073C8774E33CE7388795C32DA2D007F3327
-:10AD70007E1FFA9D490FFF4FE1BAFC95CEE36E8529
-:10AD8000F94CB83EBFB5FA717DD6017FE37AAE9B30
-:10AD90009FE54739B007D603FAF17DE3AD64B7D636
-:10ADA00009BF685D0727F98B5EB7F0BC6FAA681F03
-:10ADB000C6482FD44DED4CED3BDB2ADECDC6FEABB5
-:10ADC00023487ED659FC2B53B1FF5FC7B97D402F76
-:10ADD000D5FEECFA137D61FFE037F92CC82F96C041
-:10ADE000ED2AF6F7AD95E1786B620249E5507FCD2B
-:10ADF000FCCE54FF33308DD01F37C8649A31CE81DA
-:10AE0000E59EC458C8EFF9A74A7A604D2EE41D2488
-:10AE1000C7C9BFB7669C27313C1ED38E26824765C3
-:10AE200015F43D85B7FBDCC2EBDD26E8774CD00797
-:10AE3000D639C9016D6C8419F9F8DAB49959696485
-:10AE4000C778121580E7C9D93D18CAD1DB8A6F4C83
-:10AE500021BE117ECE298206B23F26FCA493F8675C
-:10AE60003675CEE630A4E7A4A230F2837E56B43421
-:10AE7000D205ED2769C2FF3951EF17BD36CD43E347
-:10AE800096D566A69D08E1EB9936901BD0FF43E16D
-:10AE90005ADF34E4C7BDB954BE178C959F615D7D00
-:10AEA00039BBC70EF253CC96FBC2C02CA4EBFE26D6
-:10AEB0003BC3FD467BFC508D74807EBB215DE2046C
-:10AEC000BF22FDA784F37D8B19F805F2D5B599B49F
-:10AED0006F79C6C23C0AD26BB78DE85F30DEEE21D7
-:10AEE0007FE294F00D36289F21E459F59470FA5EC4
-:10AEF000BD2FD26F52683F4479DF4E0BB52BB5FAA8
-:10AF0000B76D817E4AF76792BED96315E3BE16C15D
-:10AF1000CBA33C29CBFB617927E283D72DAE682AEE
-:10AF20007F5B65541E1E488F013CC6856913111F47
-:10AF30009D6D406707F6CBBF1F17FC751CBA45FA1D
-:10AF4000F92A22A95F5AFA90D7AABB6E447A6A56A8
-:10AF50005ECE7EA952F971A727710EE48F57241196
-:10AF60005CD26F74DC6B25BE3F5EAA90FDF3A74AEE
-:10AF700035600DF5DB8FDF7A7F3AB4FB6ABF85FC65
-:10AF800072D31E2E398ADFA72D2D23FFE2B4E2C52E
-:10AF9000742EF0CDE2AF06AC85F9342CFD22590BAE
-:10AFA000F1334F2B855621EBF937699E32E4832725
-:10AFB000D3B40A9C5F7956C35CB497BFB1D63F8DBA
-:10AFC000F67F7ABCB608BF5F78F5E4166E4737A502
-:10AFD000A39E5860E67C22F56DB9E0C35EDDB57BCB
-:10AFE000B13EE06D3AEA9588AC7A2EFF165F99FC87
-:10AFF0003F53B7798F02E39484D72DA054F5E760CF
-:10B000003F67954094924678D4705D9D7306A21078
-:10B01000FF9A89DB6D255BF5F3C27F789E55827FB1
-:10B0200040BB925AD51386EB80F9AD087F09B30671
-:10B03000EBA704E905FD10BD98E34FD37F05742805
-:10B04000DE969987FB859298BD0F0DA27AD04EAE01
-:10B0500017B5755ECEA7353C7C7EE7C43A38075FEE
-:10B060002CC82FDB6D72DF4EE37FF36A271ABFA374
-:10B070005827DF28825FB78571BE72C3BC10CE1718
-:10B08000395F3D26E5E436DE4F499CCF8472A9A4A2
-:10B09000CA497C25E512C042EBEBEC8E246A27E519
-:10B0A00018F33246F577246EE4F69BD8BF22C050E1
-:10B0B000BFF8F77C1CCCA33C3FF37C921C97EC6759
-:10B0C000A33E36CE7B7F9A89EC2DD0D39DFED5FE54
-:10B0D0002F2361D6FAD97D43E613691572C19D30DD
-:10B0E0002E1BCF0BACBA7EBF89B4CEF038F0DC405B
-:10B0F000FF5DF6F74E1ADF1F7633D0B9B3DA74C0AE
-:10B1000086EBF059467AC308C787A2DDF3CFB7D0E4
-:10B110005515FE71E692FCE4E2F63CD1EF9855D26B
-:10B12000EFAE2490C72588ABD4201EF7E46A49A867
-:10B1300037BE11E73D7B62209F85F614A78BCC4B71
-:10B140007A18F972E9B1B94978BEF4CF34EEB73361
-:10B15000E27B09E015CBAB2DB05FC9C27DEB914717
-:10B160004EF408CEE7EB2A8F6776487EEEDA5C3B3A
-:10B17000AEC779EB72ED3343E851BDB5EF1117E07F
-:10B18000FDDC56B31BC57BB5D9FF10DAE9D55BD51D
-:10B190005AE42328B723BECF390EBE8FF5E6AE8B17
-:10B1A000C9433B5CB69FB776A46776081D7A6FD516
-:10B1B000D325BB569FEFB3579FB7776734BFAB6DAF
-:10B1C000971BD0E7FB1ED1E75913506F00DA039CA1
-:10B1D0006EAF0C741F7101DDBAF955377EEAE618BF
-:10B1E0003F610CDA11EB54770F28EFB6D87B33DAD6
-:10B1F00015A7D6CD7123D98B54DF825F014D8BBE4D
-:10B20000187504F5EA5956FBE918A0CBDCBAD556F7
-:10B21000B30BE7ADE7F73D26C1BFCF737FDC7CBF43
-:10B22000BEBCB55C5822FD1819A1FC65E40318F7F3
-:10B23000560F00545AF9F12328178A4603E3A31E38
-:10B24000AF5D6D45FBEFF2E3F8B87DE9F0B8101F94
-:10B25000850379D9759523D857B0EED8AA0F472121
-:10B26000DC85BF55C8FE287CB9E761E4AFC69D53B5
-:10B270006FA2F4D6029ABFF4FBCDAB530291907744
-:10B280000E74ED6D807673FCDC7F3173992D280F81
-:10B29000199E7B19E05813520EF0CFDB7BE0473C40
-:10B2A000172E5AA76F371FE434EA9FE24D3FDB4267
-:10B2B000BFCBFDE875751B549CF71C01BFD49FCC18
-:10B2C0003794CE1DAEE34DD809FC3FD03BBFEEA86E
-:10B2D0008DEEDE3FA847AF5BC3DB83D82DC47997E3
-:10B2E00039AC2E9C77999D0522009E2391560FC65E
-:10B2F000955C5C1B497EB7B936B057F3286518B723
-:10B30000008298CEBFBEFE4025BBA72C8ED3BDECDD
-:10B310001985F66965E82CC5FCB33C3F9F05683E7E
-:10B32000C82F9ED079FAF57956C3F777A5E6C00104
-:10B33000C44B316BE0FB33A0A727E4FCBA14E6F959
-:10B34000592CDA6F86F6CCADD1B99C83DB63E57BF3
-:10B350007FB68596CB7DA6DC074B7FF033E9DE70A8
-:10B360001CC722ECE635F77BD211DEE5164F3AE238
-:10B37000C1B73A8CF6FBB76DE0FA6B4D0CD8B1F162
-:10B38000643F933D7E9BC2ED733695CBC341A69738
-:10B3900002A86F9A1E8D716F74517DD2636B1ECCA3
-:10B3A000E4F6FF3F55B2879A56F3388835B91C7FCB
-:10B3B0006B1ECCE6F6BFD47B1D18F5D7DADEF6A4FB
-:10B3C000A31F823DC2E1FA1CA714625FE776D21E7A
-:10B3D000E81E323F6997B3A22B3B9FD82CE2329AEA
-:10B3E0005687F9F17CE284E27DD31462DF3ED59D7D
-:10B3F000EB8901C33D5B443D3AC7986D1AF7C0F530
-:10B4000000D7ECC74C2EF4A7B5E0DBE34947FD7944
-:10B410006275581EF2D980E1DCBF743C97CBFD8881
-:10B420007E8CE29B36897E377537E9D28470E03FA7
-:10B43000E8E7C448EEDF8EECE725BFDE661797FB32
-:10B44000C679D48A7E665BBDEF0C69031E891796A8
-:10B45000CFED8E13772A1B395C406FC80FF85D184B
-:10B46000F9034F08BD24F10B7C43710C526EC5B437
-:10B47000F08B7F5B18F0CB6A0BE703B96F0BE1171A
-:10B4800041FFAE44DFDB047DD98361825F4CEC6F0A
-:10B4900088C7914ECE0F57B9FF027A1F417A1BF72A
-:10B4A0006192DECCECEFFFAFCE51CA5E79618F0FB7
-:10B4B000EC8CE2171F8D6250EFB4B9A6A31BDA978C
-:10B4C0006E5E1EE581F494D917E584F14FFBD50239
-:10B4D0007F1BF8B6F690FE688F430939F73CF3FC02
-:10B4E0006FC7E23CFFBAD9E2449150BED546FBB1EA
-:10B4F00005BBE693BD0EF9469EBFEF5B3C072DDF13
-:10B50000ABF7B7173FF7684717E1DB97644AC034DA
-:10B5100090C4205DB0C9D2722E0CC380FDDDB40290
-:10B52000E133B647382E01BDCB6BD5426B74EBF2DD
-:10B5300072215FCA77FDF65BF41B96EFBAF124CA5D
-:10B54000FB72839FBF489C7718FDFC7FEDAE3F47A1
-:10B5500006FC50DC800FE0EA41ECC2FDC4D5DB1EE6
-:10B56000CF6944FB61D3BB514A56D0DF2FCF419AFC
-:10B570006B673D83FED3F6D6E537C2DF1BA41B976E
-:10B580005FAEBD0A0F9AABE369A925103508F77BBA
-:10B590001B2C64FF96BEF0EC962791CF8ED948BF46
-:10B5A00097BCF0C6A7D7A1FDBCD3123F9A4FC3A149
-:10B5B00084C4D994BBB83F4ED2A7F8E537ACAE6C83
-:10B5C000FE7D716C904E253B0F5831DEC788CF1140
-:10B5D000B507AC0D8E36E855DB388AFC50DB7EB003
-:10B5E000E2FA38BD5F619D525AB72FDAF04614DA9D
-:10B5F000678827D44F926E2D7434D487FEC7BED689
-:10B600008FEA39719F72393A7E2AECACB2572259CF
-:10B610000CC051F4B9CD3F1AE9BB635114CEE7A475
-:10B62000B982F3FDFAE51DD1DE2BB2F83A3A29E5ED
-:10B63000DF8B9EBE9BF8719E52D1D19945FC9E68CE
-:10B64000225BC29788F39CB36E12CD732ED3881FF2
-:10B650008BD6AB5E3FA4DF9B59C1CE36D6CD52B15F
-:10B660006E4E6E04E2C23C4F8A782BDF47AAD84761
-:10B67000DF49FAFC6E3167C61652FE7B61CF4DEC96
-:10B68000D1729E6D0FDD87966FBAAF1EE974A6ABBF
-:10B69000A713C20978F009BC293F43BFEA87233BBF
-:10B6A000713A3117C623503BD0AB23F03BD6AFB72E
-:10B6B00078D0CF1ED24EEC13F9F87789F101EE70F5
-:10B6C000DC079FECD8763CD7CE16B9C0EA43E3B985
-:10B6D000DA95039BEE27FEFAEE132E6716F8C715D0
-:10B6E0005079BD25D009CBFD07262A24276C2CD004
-:10B6F000D63ADF6411EB5C5F0E709A9550FCEEE772
-:10B70000F6A9E497B960970542EC8420FF5883DFDF
-:10B7100069FEBF13F86EA0F33979AE374FC807E35F
-:10B72000FC8DF262718FB6E34ED8BAB6CF938272B7
-:10B73000C247E396827E477BA4F4988DEC88D217AB
-:10B740002C5EC4D3D9ED873EBD0DF7B7B5725DEB66
-:10B75000E5B0715D17BDD4BFCD757D76556EDBEB61
-:10B760001ABEB7B9AE572924EFFEBB7218341FF9C1
-:10B77000252EB77EE7B523879F33E0F57B96153DF1
-:10B78000080B9D85DD884E06FC4ABC1AE5EA1014BC
-:10B79000921D5ACB5586211A21F8947894FCCA98A8
-:10B7A00046E3B4F0B5E45BC9D72D7C6B9CB71E9F14
-:10B7B000C6F2F9487B80C7FBAA85EC85D23A1E6F9A
-:10B7C00008ED283EAE1CFDF354BBE6CDA4F8D0BC7A
-:10B7D000DF90AF35D4F718F25E437DCD90AFD0D572
-:10B7E0002FDD7BC8CAF70F015D3D5BE5CDB41F6956
-:10B7F0006D67F8F9B9D3AE6FAD3EE48F2E4D569418
-:10B800009396A5CC1709ED9BF6A964F75C703545B6
-:10B81000A1DDB23C8CDB75179C221FC3F34D1DAC20
-:10B820002B504ECAEF4D61DC0F73C1DB141513B200
-:10B830009F6FAC53A3D0FFDBE067056DC7AB54131C
-:10B840005E1B587BE5DCBEBB10CEFD0D17C2B9BF39
-:10B8500061A4EA48AE443F6C0D8F0B9CBD6472142A
-:10B86000C555D4A5DD3205BECF795BE561E03E8FDD
-:10B8700019E319667152B253CC47F181B3EA785C8F
-:10B88000C3EC557A3ACF756CA2F8B7EFD9624AE7A4
-:10B89000AED1C72314B355C46745EB0CDFEB6EA6DE
-:10B8A00075526C58279AF00F1BD789235DC43DE66B
-:10B8B000B25C5DDCA390E723D5AC5BA6003D2E1CFB
-:10B8C00051990DF2CD752A5BD18FC7B9E2F9136E8C
-:10B8D0004870FD2D80F58A7693C4D7395C473DDBEF
-:10B8E000B75FCEEDFEF3805F21DFECF92207CF8555
-:10B8F000CFED3996FE3AE65FF963F217AC75FD11AC
-:10B90000FB7F9C8E72FAC27E1B437EBFB0FFAD648C
-:10B91000F4475E78CD46FBEC0B4B6DDCCFBD3FD2E0
-:10B920008F2AE642576E1757EFFB21A781F4F232B8
-:10B93000A2DF35E9566E5FD5FDFD38FAD39BEB608B
-:10B940005628F7F747D07A2A7F2D8CFCCC17F6FDC6
-:10B950003020D43FF7DF9D8F3C4FBF10C9A6BC8479
-:10B960007C1CC3F705E5AF5FFB2C9E2F97ED3A607B
-:10B970009D05E523FEEB1F3928572FBCC4EDA96FA9
-:10B980002C0D4FA38F73F896A8472C89E8E783CE38
-:10B990003A33F6C596B1137C596DE185E3E102E0D7
-:10B9A00001E7057829427DD01E3EA6223E3AFC27BB
-:10B9B000E2E3DBE95CBE5DC3F03C3A8817C5C3BF78
-:10B9C00047FAED0ACD9F7FDFFF430ECA9FCBCDF72D
-:10B9D0009EFFCFE6FBE87FEC7C39BF774D77119C6B
-:10B9E00046BE6FCDD7AFFC82F23B22DD04EF15AE31
-:10B9F000F7DDFFB1EBFD7F86DE1FFFC7CEF772F4E8
-:10BA00007E5BD03BD289E79917F6FD23995DC5BCD3
-:10BA10009BFF97CE5BDAF1C355F7915CA8FF2EAB85
-:10BA2000FDC49D42D6489B7648B7609C1FED9F465B
-:10BA300030AEA747D84BC8FE1CD1E541B297AB59F1
-:10BA40001E9D5FF8BAA874AE4341208087B712727A
-:10BA5000E95E153307BA2C82FCF0A4328AFF32EE7D
-:10BA60002B47848F2940FBF4D012800BFA391469DC
-:10BA700072E219757E177E4F09D2464CDF4CBE9993
-:10BA8000E2F8F31DFAFDD5CD867DD28D2E7D7901AC
-:10BA90007B291ECFED0AB22C745F6214D60FD957E2
-:10BAA000FE23DD4978B991D52C733AAE1E4FB70805
-:10BAB0003CB5C6C3BFC65B2B3C897DB459D437E2C5
-:10BAC000CDEC78A01EDB9919EC8BF97C693F2DF742
-:10BAD000C597C32713FB6DB3185AE2D7DC859FCFF8
-:10BAE00086F44B789178BF5A7C4B3A19F12EF12BA2
-:10BAF000F166A4432AC6F8F50FE2BF8B39D78CEB69
-:10BB00006E88B0EBF3CD313CDFA55EF5D27AF473ED
-:10BB10003EFFCE6D46BB7E982386E2428DF71166CE
-:10BB20000E8C19A0C07C93CCCC67837D289EBD91E0
-:10BB3000DFF57EB37F690A8EC3FDBB5DCDDC7F0D73
-:10BB4000ABDB179E47F53D56C8173E328F79A07E76
-:10BB50006112732BBC3E8B8EA5F038A6C6F27B9B80
-:10BB6000D8AE309AF75BD889F997727A125DD0ED2A
-:10BB700083FE0DE8D7638AE5EDA3F2A8BDCFC4DB51
-:10BB80007BCC90764BE3710A4DCBB95FBEF0BEAE75
-:10BB9000E9283F460FD7FB99DFEAC9FDD232ED9B7A
-:10BBA000E1227CA9267702DD8F589649FB2335DCFC
-:10BBB0005BB61BFDF43B789C4EE18A3BC6F447F82C
-:10BBC00076C4B911BC3363770EE0F5A7DEFD07F844
-:10BBD000AE6D0DA3EF9333B4A53D311E40714DDF23
-:10BBE0000D1F664E3A644D8021B4DA71E7D14F38AB
-:10BBF000D6B7F37D3C9F1C3B51A5FA63198FF764C0
-:10BC0000CB601C281FE3FBD69C00FD8D814D079661
-:10BC100037863993EF04F80B857FF8215C2F086F86
-:10BC200038D35E72205C5DD353E1FB18D676BCF14D
-:10BC300051597FB8B20ECF99BA8DE0FE7B591FFBE8
-:10BC4000C17E3FEAC9FD514F8854E601AF547FF6EB
-:10BC50004A5B631AEE7F565A023D2175F41ABEBE46
-:10BC600027E06F742A1BB516F17EAFCA3612BC4DA1
-:10BC70008574AE1099E1423A68C0D274BE5293E224
-:10BC800042BF58E3B0DA009E27343E91E2AE76110F
-:10BC900095291E48EEB71A8705BAA31FBF29979F9B
-:10BCA0004B1C773644E27E7196C3CEEF498AB8A228
-:10BCB00039E25E4CB7EA8607AFC17DE8A32A9DD77B
-:10BCC000CC7994DFF7FA8BC3EE5770DFB646DCD73A
-:10BCD0005CA58F23624E37F98166D50CB3E27E7383
-:10BCE000B6C363C579FE31437B1DE725EF17F642E6
-:10BCF00022409785358514AFA246C1BAC3756276D6
-:10BD000045E13ED81887542EE28E64FEA170ED30D6
-:10BD1000F2C3CC68D70EE4972F2BD3C83FAA0ABE34
-:10BD20001B8D7195789E616E484478EEEEE922BED7
-:10BD30001C1DEB4C77103F8731C443A3C5998EFC83
-:10BD4000DDB83CCC84E772A39772BE867566374334
-:10BD5000FBFBCD2C1CCF197E27DA4F5B62F66E8081
-:10BD60007C173B3347C6225FE5125FDFD24B7B0275
-:10BD7000E777EAD76C20F2C3AC55ABE93C46F20555
-:10BD800033D7E7C7C138A736A7E4A1DC6C91D3BD90
-:10BD9000867F81ED5AF861A2427C00E98134E28716
-:10BDA000F10D38CFD1C303DD1766E17EB49479502D
-:10BDB000BF273037DA09CDAC89CE2B9B1D5617FA39
-:10BDC000BFA43C917203E8EAC17BB7920FB680BE74
-:10BDD000375B18DB5A65A7F4F92A2733F7606C7BC9
-:10BDE0005502E57754B928ADADCAA0EF2F55B92952
-:10BDF000BFAB6A20E5F7547928BFB7AA80D2D7AA8B
-:10BE0000BCF45DCA25C00BC9212957A43C9AE5B0F2
-:10BE1000D27D5F29978C7C331DD03B348FDA93DC45
-:10BE200093F20EE761CA0BCA2349DF54C5EB4B48B6
-:10BE30004139D63015E93F523DF7C22BB82F2F724A
-:10BE4000B8699FCEB8DC6B067E45BC245BD95EF436
-:10BE5000CB56DFE969BC2F2588FFDB8B14660EE12A
-:10BE6000AB3B2AC29839446FCCA88CD1E5A7557E4C
-:10BE7000FC4627E8FF9E0E5A7C06C071FC375FAF78
-:10BE8000FF237C7FE637677A20BD018ECD8FE3B834
-:10BE90008BC35BE088C5FC320B9D737513FE936EFC
-:10BEA000C27F82FF903EF27EF333BFF91BADF3C633
-:10BEB0004A9B0BEDE2CF915E80DF3F097ACDACB4B7
-:10BEC000111E0B977FF5C22BB8DE175B49DECD5CE8
-:10BED00026D6A3E15EF397898CFC126055B34AC065
-:10BEE000DF97BFB60622A0FF2F15BE8E15300EA617
-:10BEF00061FCE1CAB73E4339A0541EA1F3770DEFB0
-:10BF0000E1217C3ECB39DD3DE9CA37A91E6BE81241
-:10BF1000837E1379CF38A29FC7EA82F9236F23FD6E
-:10BF200066661C648978CE52A338D185385B7C9FC5
-:10BF3000BD92BFDB80713C13C1FE1B92A1123D2B51
-:10BF40007B9A29FD14F52DF9936B484F49BE9DBD91
-:10BF50000ADAE1FAA8C9B5CE0D91C733C5F7591968
-:10BF6000264AE5F731D82F9EFFADCC9D82764567F6
-:10BF70002CCFC2346F0AE2B7B363945909E1831B33
-:10BF800032CC020E46ED3EC54507E90319A9D63964
-:10BF90005974BF8FF4981C676646DE0A8C2F9DB9D2
-:10BFA0006A184A61566D7127C4433D6F4B3FDC7E72
-:10BFB00063761E475DDA8E1E917EB553F8E7B53481
-:10BFC0006FF2FB16EFF8FD8ED7A0E7E22F6C44DF8F
-:10BFD000E23E226E2BCB3F60023920F5FEECFCDF07
-:10BFE000FF398ACE2976F1F84E48B99F757111F75D
-:10BFF000CBBA617DB5715E7478C717516DFAB177B0
-:10C00000A957E4C72E577E8A423B42CE67E4BEEF73
-:10C010003B121CCA253A272ADFB7BC635B715E4618
-:10C020003F768BBF5BF8F5CA1717B4E9EF36FAEF26
-:10C03000966518CE0FCC8CEE8D49FF1D53B3A2F13F
-:10C040001CE07B719FA4BD7D8EF47F97AF854EE28F
-:10C0500060BD9A5DD178BE75A11DFBFA6806D7FF59
-:10C06000E785BFFCC27695F63D17B647D2BA5AB0FF
-:10C07000FD9137F1DC71C12685C02863F5843FC08E
-:10C080002BB387EA358C638B6B0D77B3BF4734EAEC
-:10C090009592DF475620BFCDAF553C9B019E66BBB6
-:10C0A0002BBA43083C5B91DF807F4A6CB50308DF05
-:10C0B00002FEA7514EF60FD69B5FF708F997A1DE57
-:10C0C000376417BD1881B10288F7F711CEB3EBFAC8
-:10C0D000BAF1BC707EEDCE0564576C8F70A25FE143
-:10C0E0008C885B96FDEC12FCBD2B83DB3167C5F9B8
-:10C0F000D1D91DFC5E3FC289EBEC8CC2FDD0B2DD14
-:10C100006B02CED732F8BEE48E0CBECE65FDF9B51B
-:10C110008D51DDA1FEC9BD1F537A58D49FEFA8CF22
-:10C12000417D7C7257049D7F9DDCF5D4A8D761BC0E
-:10C13000F3B5C3E2715DC8FE3FCAB050FDF3EBD466
-:10C1400002C417F3F3B89932C46FDF5038E336F8FE
-:10C150005242D71F8F1F3ABBEBE5285356909E657E
-:10C16000F60A7BA209D7D19D5EE4EF68641E80D7F2
-:10C17000BA6B9C0F7558795D2E43BEA6F59748F5AE
-:10C18000579A42EAD92C6E8A33B5EC2DF48837548D
-:10C19000F83D2711C73F52CDA273C5E97D5C936F6F
-:10C1A0004739F9AE85E8B130D33519E5D3C57A956D
-:10C1B000219C0B535800ED9345F7466E403D26E118
-:10C1C0009EDE97CB83D2950AF3C0FC4AFD2AD3208A
-:10C1D000ED0CF4F7213F2534F4C738C9C6146E5767
-:10C1E000C8F8D1278B4C1E2BE8C19F3262E5FB0FAC
-:10C1F0004FCCC1F3B3F119B49F3B6E653E15FD4AB8
-:10C200002FF1F8D2D2541ED7FCA488872F8D0DA40D
-:10C21000C7417FE7047D4BC707D231EEA2F4A544A6
-:10C220008ABB3867E5E79EF81DCF594BF3A0BD8365
-:10C23000DECDD064FB98107E2A9DE976613D35D62F
-:10C24000EDCA7520BCCE6FC8CEDD1DC9D0CE35BDC0
-:10C2500012C9E3A69E0BDB680BA19B3393F39F7C73
-:10C260008F83DDC6E38C1EB3F0B8D4C73627FAFD42
-:10C2700021F87ACCA24D453CE03CD0BE9F6FAD4941
-:10C2800047FB57C23B3FAA86E03C27F87D7E780DEE
-:10C290008FE716F77BB13EE61B451C7AD3361BC5EC
-:10C2A000019D49ACDF83E39FD996892FF200FCFE04
-:10C2B000B97BA91CEC4BA067F1F3B600CEE7F436CE
-:10C2C000EE8F3E6DE1F6DAE971092EA46FC1F8B583
-:10C2D000D3C95FB3C9A6A09FEFB4C2AC0958BEB919
-:10C2E00003C59F17575552FC7631880DBC3F046932
-:10C2F00001DE033ABD3993E2CD4EE33B0C0A7D5F8C
-:10C3000089DF355633FD97888FAD7C7F75E6F9BFA1
-:10C310006786C67BCBB478933EBE4EF2892CCFCDD8
-:10C32000E4F22D57E0B97F267F2FA42CA2F6B1545A
-:10C330009A27C73BD089BF5BC31A229FEA87F114B3
-:10C340003D1494234FB240FA53E877D8CAF75F6799
-:10C35000B65B286EBDF895480FC5B1DD778D89E2D3
-:10C3600029546EA7179B007D902ABFD94AF165F129
-:10C37000CF87E5D9C83E67B4CF6DDAAC8A71C026E5
-:10C38000C6796FE171C7A3D196A4F26C2A3F2DF252
-:10C39000A7F76493DD07FD7BF07E55F12F7FC5F194
-:10C3A00038A1E828B7BBEC246F4B5BCE790647A3D6
-:10C3B0001E2CBB6F5034DE3F641FA80CED16239E6D
-:10C3C0002E9ADD9D50CE2ECB147277CF7A3A9F2ACB
-:10C3D00011F7084A9E57F83934AC43BC9F59B262F2
-:10C3E000D0E3C49FEF5B580F98CFB9DA47A242E978
-:10C3F000B12093CBD396FA5637D52F81FAD84FC9AF
-:10C400008A77A3089E2D168A5731D2F18ADB3FAF77
-:10C410005E51FB16FEA8E57E9656F367F5BFF8025F
-:10C42000FAFF6E7B98DB475F6BE91EDC594BED5CD6
-:10C430009CFFD917C2486E9D8DE1F2E124C8535F7D
-:10C440004F84E3E68729BEEBA309747F6F9E5FDF0D
-:10C45000AF1C77512697E36571EE688C172CFB8033
-:10C46000CB41A0CB2DD4FE030BB537CE63BC68D730
-:10C47000B23E5F88207E38DB99D3E5EC8E9EA49F88
-:10C480001A63389F03BCC978DFEFEC0B3D73E91EDC
-:10C490001D1A3DC00FC562FF7B36A636D91952DE84
-:10C4A0006811FBB800D444BEC13620DF8B2BB9BD68
-:10C4B00055625F45F12518AF3B208FD2802DB675B0
-:10C4C000DC2DF02BED2FDFC9147E4C1CAFA388139D
-:10C4D000273BA8D68A725B13F662E97663DC2E2FBF
-:10C4E000DF26DB03B4F1324E18F9D0A7509C4AC9BD
-:10C4F000B23BE753FC7DC5EADB719D49F84BCCAC00
-:10C5000000F7698D8A4A703486B119E3D1AE0C1DEB
-:10C5100027C49EDB151C87E1FB5FA5F807ACD9BDDE
-:10C52000992EFA8EF91AE8AF7499B28AC64991FB2E
-:10C530005D3E2F8927408715E3041B8789F276E645
-:10C540002DE134CEBBC5EECAE4FEA5C614D7C38325
-:10C5500091CEEFA9749FF7E24F7DA363DBB0D38246
-:10C560007ADE1A8C9705F88F6532EA677D26B7D395
-:10C570004B301E17E04C5FA78F17CFD8A4CFF7DA48
-:10C58000AECF67EDD2E773EAF479F7617DFE8018EC
-:10C5900017F7E1787F18F7E198E23EDC65E3FB707E
-:10C5A000CCE33E1C53DC87E377DC87631EF7E1981E
-:10C5B000C77D38E625BE713F8E79DC8F6379782F91
-:10C5C0008EA752116F8974407E67AF86E9EE235DB6
-:10C5D000D8C7EF97001FF07533D54AEBE649AC4159
-:10C5E000FB11EE77EA3CC1EEC2F8E15571DA7799BA
-:10C5F000FDF11E4AFD8A44A49BB981E258CB5FE35A
-:10C6000071ACA579610EF47F342C3FB902C343B5F8
-:10C6100038ED47AC7FC1D2B405F15B567988EEDFC7
-:10C62000372C717D703DA71FF96158512CD9518568
-:10C63000A8E762DBA7A3319E9CADD2C78F1BE3C9DD
-:10C640008D71E4463E90F6DF3396A64494EB5F6D21
-:10C65000B3AF42F8BF0A13F761A6D80DF1000E92EE
-:10C66000270B1F5436A2BEEEDC8BDB51CD47C05EDC
-:10C670006F43CFCA74D6A5BE6497B7E45729268AFC
-:10C680004FD73CA4871609989295A6C6FB50CECDED
-:10C690003791DEBC08F61AD9839FA8643FE03B5966
-:10C6A000A1F3C177B242F90BDFC9D2DF97E8ACAB97
-:10C6B0008FEF64E9EF4BF4D2C7E74F5C7200F7FDF0
-:10C6C0001356F5D5D59BED1D64C0A3805BD8B3B3DD
-:10C6D000417F78D0BE5CBC3619E9BB687E73E37DD0
-:10C6E00040DF45BBC3DC585E84FF0772B108FAC463
-:10C6F0007B9745BBC4FDE54ABD1E9E25F45091992C
-:10C70000F99CB1413E2C72324F0CB49FDFAB3E0717
-:10C71000DFC39AFFF6C7039CA9B8CF18D609E55125
-:10C72000B2C54371B5A53B7BC42C817E7BF7D06E2F
-:10C73000EC05EBFA44CDA187A6A13EDCC9F77F5FEB
-:10C74000AD7A398AE2CB04BF255B9CE148F70D3511
-:10C750003CBE0EFD676A6C902F36D4C48577770493
-:10C76000E71BE4839F884E401FEEE7293A48E72203
-:10C77000CDB562BEC3141FDAD9727EF21D2DB68C00
-:10C78000F77397C89F10FB0D39CF739907725C78C8
-:10C79000AFA36A6FB28AF2DCB47D0BEE43FE69D3BD
-:10C7A00066F7EA8FF1A03DFE88EFAA15FF81CFE77B
-:10C7B0002F6B46445D8BF6E70B16F768C8DF57F31F
-:10C7C000AC15F715C566BF95E233B76DB062BCF224
-:10C7D0000D5B37D0F7B95B0B291E731EABA0FDE8CC
-:10C7E00029F9EE81C047D170659D13E07E47C88F5F
-:10C7F000A2707EBE07F6D11BF8EEC8C5AD4A2EC6A4
-:10C80000F94CF4EEB416C2F75F8B7AC675D27C741D
-:10C81000C2C80E840F7E0FE40F0C76F769ADD7C542
-:10C82000844B29B42E265EEA4DFBB449814CBE1FD1
-:10C83000CE32EC878FAADC9F57C7D7419135103F86
-:10C8400001D7C97E0BD9B96566FE6E5319FC7D1DF3
-:10C85000A4DEC1AA8E5FCBF32374FC3C85C5EAEE4F
-:10C86000D3DC8A412521F989A3D374F5274FEC6DD8
-:10C87000E0FFBC6039C991EB74F7FECA16FB5CF4AB
-:10C88000BE211BAEFFCE787C21BD086A0FFD3E3E67
-:10C89000580FF97B93C2F73DBB6236A21FB0C8C4E4
-:10C8A000F74F5334FE7DC15EFE9D4D61BA75D82DA4
-:10C8B000CDFD47AE172D746E20FDED53F0EF36F031
-:10C8C0000F9AA2E51E3BDEE347FF84EE7EB7382FCA
-:10C8D00044B8910E65C29F5496C1FD4965BE7A2B3E
-:10C8E000BE9300F837C7C5523D7B1CC655D628E419
-:10C8F0006FC47431C559EAE3B4B03F8C7F5C7044B7
-:10C900002DC475622C2FC2778790BEAFF1B8D405C5
-:10C91000E8178A6AFDDED902F413A17FCBF0BE9935
-:10C92000A3B74BF811FD2B3A231E472BB9746F7335
-:10C93000FB012BC6E74D9C18938BEBC7C86752BE13
-:10C94000C3BAA6B8C2E6A38788CF9A8BCCC4C797D0
-:10C95000C3C7020FF7B31AF96F2EABB7E2FD94B954
-:10C96000BB1437EE4BB11EE2A533F2A5012F71B116
-:10C97000ADF121F1D4823743F93CC6F1356FAFE216
-:10C9800047F9D80A4F027F46F8DBC39F9CD75C4D1E
-:10C990001B857242CE6F1ECE03C78179E038F2DC70
-:10C9A000820D34AED734F25F2DF0F2385B237F8CEA
-:10C9B000BFC4FD32B75E32533A71B47E7D623B5CD8
-:10C9C00027932E75A4F2ABE59F050027EA85ABE51A
-:10C9D0001B391F298F83EB84DF4BB8DCBB4546FF37
-:10C9E00064426FE19FECCFFAEBE29B85BC35B63732
-:10C9F000C6374BFBC0A8770A234D146FD9EC4825E6
-:10CA0000BB43CA5F4DE8156DF9F7544F837A1C1A82
-:10CA10008F4E0F69C24FB8303295DE91485E12D703
-:10CA200011E95518E6A4B8FEC2252AC55117423DA2
-:10CA30005788DDB262595A32EA912FEFEFF9B40FFD
-:10CA4000ECF92FEF8DEF3810C6F96AB925DEEE0A42
-:10CA5000D6FB72F9C8648CEFF86AB56D8ABF0D7C9D
-:10CA60000DEFCDFD0A65BFF98CF4DC79D3D1A8298F
-:10CA7000D0BE74F9EE28BC3E50B29CEBF7F7BA6B0F
-:10CA8000C37AD3B9EF862DF49EB173430EFA89BDF4
-:10CA90001CA72D7645F1F2919DD0EE28FDE7A1A7C8
-:10CAA0009D782F7C89A523DAA5A73F013DA9909EFB
-:10CAB000237BE254187441E77091F49ED92985795B
-:10CAC000F03CEA9CE9C05FEFC3FD626E6D7A40C145
-:10CAD000C353CDDB1BF7F7CB9F257BA6F88125E958
-:10CAE000F8AEA0B6A447745BFE14996E11FA1CED63
-:10CAF0007A4CD1AEC7F81AB4EB318F763DA668D721
-:10CB0000E3F7F2B57ABB706A4F2EB7A4DFB95B7555
-:10CB1000532E9EFBF986B38C0AD2C30E7A07789106
-:10CB200012EE46F9B4086D28CCFF3982FC0EEC9366
-:10CB30001B757496EF04CB7780873481AD16B24EA7
-:10CB4000AEBF6467A1F77487B1185D7E843D51570D
-:10CB50007FA43345577E4342A6AEFC4657AE2E7F98
-:10CB600073C6B5BAFA63DCC374F95B06DEA8AB3FE3
-:10CB7000CE334E979F503055577F92B750573E79DE
-:10CB8000CA7C5DF954ED4E5DFEF6A27B75F5EFA80B
-:10CB900058A22B97EF22D7E17ECC86EFBFD82995FC
-:10CBA000EF23DFA3327A5F6DF00813F733DAB83E74
-:10CBB0005AF45E0F47281F3C29F8F95296E751E4D2
-:10CBC00057F9BEA57CB7722BEAA3FE788E1950F8F0
-:10CBD0007EB83E11F9D858CF583E38E2E04517D01C
-:10CBE0003266FBA94966901783AF39D8370DF253E7
-:10CBF000B7E7DC4AF941075F4E857C61D6DDB79A1D
-:10CC0000415E0DEE73F022969FDDDE97974F6064D4
-:10CC10009A94657D3209E365075F9FBACACDFD2806
-:10CC20006DDE779729E203EF89233E300D001F6305
-:10CC30007A10F818D3C3C0C7B32D8CBD097C8CE91A
-:10CC400011D89FE2F777607F8AE951D89F62FA3E58
-:10CC5000EC4B31AD877D29A61F554DA1F4932A8D4C
-:10CC6000DA7D5A5544E9675515F4FDF3AA4A4AFF9F
-:10CC700054E5A3EF877B4BFF4340F77E687BEF844F
-:10CC8000CA734E79AE595DC11A22506E349863BE94
-:10CC9000B607CF2BDBF71398D9D721F65AB6E2F9AE
-:10CCA000A0378DDFC54971E2E2FB1D29DA2748E78D
-:10CCB0003FA44CE8D157453D56F10686DAFCC1D475
-:10CCC000F67B905B7B733BF9DD2CCF31EC6F889D5D
-:10CCD000DF4F1E62E7F78F8798EBAB91BFAA7F64A7
-:10CCE0002E8CFF3910C9DFFDA8BEDFEC473FA872CC
-:10CCF00089AFF3A1F18CF2D53F36D07DE5214E7797
-:10CD000002EA2B996F39F7C77F21713EF21C5EC68C
-:10CD1000F7E45FAA1F81F6C25087D5857224346E6E
-:10CD200000CFDB0F447E2DE161389E3CDFDFF42332
-:10CD30000B987282E7F843ECF529E837187A97DD0B
-:10CD40001D1AB724CFEB954B0D2AFA55657C921C22
-:10CD500047C21B6986FEF282F147439CB5B978DE73
-:10CD6000515DE6A0FE3AC1776B1ED5F3A8D4AE366E
-:10CD700017FD72434B1D14072BE3043A8979433D99
-:10CD80009A67FE258DE224868A3809ECC7CECB7DD2
-:10CD9000D8CFD0F84022C6810DADE0EF90AD57F866
-:10CDA000FBF3326E01EB4784AC5B8413FBEDFE3783
-:10CDB0008017ED288F87F03B41EEEB5C222FCF1DD3
-:10CDC000EDC3C9BF3542C89A8F53B4CE59786FC5E9
-:10CDD000E6FC7304ADEFB4AEE8371D27ECFA7FC173
-:10CDE0002FDDB0DD7F9F5F3C9CDEF8807F4A6BBE0D
-:10CDF000917491746E8F8F24DD43E2CC88CE2D71B7
-:10CE000063A21F237FB5C757929F86D839DD91AEA5
-:10CE100018A726F948B9C4DF751B5A6A277D27F978
-:10CE2000C8C807ADF988F365F5DD76EAAF351F05AB
-:10CE3000E98FF8F8F7F9A841C5F3ABABE59F194DB9
-:10CE40006C5434143D94AA6D45395278C9F526E6E0
-:10CE500067B161A390A564F9E358DEBF75B9F65DCB
-:10CE600093253A84CF86083EDBDF4E7FB29E7CF767
-:10CE700042F67FBC9DFAEF0ABBE1DD3019A7E271F3
-:10CE8000E40E08C68D2E1AC9F9AB204525BB6344B4
-:10CE9000167FCF9C39B89DED82FF501EDFC4B4C30E
-:10CEA000D129F8EEA897DE1B1D156F786F54D8E7CF
-:10CEB000058673FE9BB26E20FBFCA6CBBC5BBD2C33
-:10CEC0004BDCDF49612957F9AEE86FB3687F78A57D
-:10CED000EF8AF2F768F3C57A4F12FC94E652D9E074
-:10CEE000587C9F5D33A372398CEFD1E6E0BBAD3E39
-:10CEF000CADFC8FC94DECC0264478C014584F95B30
-:10CF000018A37BFB8722C64EC33B8723FA8EE88E8D
-:10CF1000DF43DED9F3237C0B54EDFF3843DED93BEE
-:10CF200098EFA2FBAB07ED696487E27AB584F84B12
-:10CF3000DF06FDDC1DE67708F437A66F80FEEE0EF7
-:10CF40007AF42DD0DF98BF296309C376A35CFAB8C1
-:10CF500027D9FE66E708D8A8B58FBF9B735EED8220
-:10CF6000F87D37A6673EF2C5BB31D7E4E37CDF8DA1
-:10CF7000E964E2A9CD4A69F62BDDDBB293E57A08D4
-:10CF80008E378AC633E257E2D3884789DF7F039F13
-:10CF9000EFB485CFADB88FC0FB21F68FA31252F14D
-:10CFA0007C93CBD9B28864F1BEE87B396A2AC6FB90
-:10CFB0000E223887565ECBCC78DE6EE7783A59C5BC
-:10CFC0007C88DFD3380574781BFC7BCC3CDC141ADE
-:10CFD00007FD8A4DFB13C271729D4AF7F5CFBF144E
-:10CFE000467EBB537EEE975C68D21AB3D06FAFBA61
-:10CFF00056B9D1DE7C57253F30FBE950F2F8C8AB7B
-:10D00000E0D74DFC9D8352FBA836E929F797CFA5C1
-:10D010007A68FD33C3EF4B74B1F1F720E4BB94970A
-:10D02000FBDD962E362EAF257DD759851D00FD0CD4
-:10D0300000399BF47038EDB7F674F4FC88F3837D07
-:10D040000CBD3FD5DC2592F4D34111173734D09B6A
-:10D05000DE5B2B10BF23F096789FFDA08897FB7BAB
-:10D06000BA66CE0678DF721DEC82FE87EB193F07A9
-:10D07000BAD1C1DFC3BFDAFDB9235BECCF7358CEA1
-:10D0800055FDEE410795EE530C65E9740E3F02E144
-:10D090004539F7F62C33EAC990DF3DA079FD6FFBE7
-:10D0A000DD03C69A549C579253614FA65CFDEF2056
-:10D0B000A8625F257F0FA18017B5FA1D84A7A20A79
-:10D0C000785CBE636E9BBF839024DEA9662EAE376C
-:10D0D000E4EF208C4CD0EB9111CE61879D94EAFD5A
-:10D0E0003C4997891F1B9D2DF4C7D5D2BF8C11FDDC
-:10D0F0005BE24CE379FCD350ADD7C3E89F1F116FBF
-:10D1000071FB5DADF9E03FED774EDAA393F1F74F98
-:10D110008C7432FE1E4A925A6AA67720059DA6C0DC
-:10D120007F48A7EBC5EF55E4E3EF55B0FF7774AB4D
-:10D1300036D0ED7BB6AA3FBE5B7AA190CBF5F6F474
-:10D14000FE0D299EFBB341FE3C2AFC47D23F22E361
-:10D15000728DBF9724FD00325ED7379CD3DB773CBE
-:10D1600082CEAFEE511B2251CF1C37F1DF471AD8C8
-:10D17000417B1CE5D38CAC0A05F191C0BC3BE702B6
-:10D18000FCD3FFCB968CF9E9DDF87B912C8BFFFE6D
-:10D190008F846F7A128FE77A265BE17E3F378FDFCD
-:10D1A000DA98CDF701916E27C599176631113FCBFB
-:10D1B00092A767237F1E0DEB89FCB786FB031BF04C
-:10D1C000BDCAF8E07B9568A7A35DDC55D8A5D5C797
-:10D1D000EC76CE874CA7FF33FD765D9C73EFAD4EAA
-:10D1E0005D3EBB364157BFCF5E97AE3C3790A12B1B
-:10D1F000EF7BC4ADCBF7AF1FA8AB7FCD671E5DFE45
-:10D20000DA86025DFD41A7BCBA7C126B7A02F17B23
-:10D210002C3B95DF9F50849FC4C5E931FD9E8E74E1
-:10D220005F49EE3F64DCBB26F8D9B8AFE966E57626
-:10D230007D7522E3FB56BBD89F32FDFE461371EB92
-:10D24000D2AE673E7DDCBA8C576FD907897D8EDC04
-:10D250004F84C4AB7B107E19AFDE4277F17EA8917C
-:10D260005FBF167437CEA39B95DFAFABBED74AF72F
-:10D2700084247C46B8D40CCEDF9BED6DBF07F55DF2
-:10D2800036B713F2BB7BCF21BF3E0DE28AF0D96ADD
-:10D290003C7703FE9E40F5AFADEEA5AECB8F37BD1C
-:10D2A0000F9FCF347C37378BDE5FA57B81725C7339
-:10D2B0000E1FF75C1FC1E786F1A647F3F838166D1D
-:10D2C000A57B2DED8FC7F19A6065CBE8DD2A71CF84
-:10D2D000E38E55B50FA20B759AB5C6C21F1EF05B43
-:10D2E000D08F367A38D889B9E85F7DF85107D86988
-:10D2F0004F579AC92F1691639FECEB1EBCB7D30D05
-:10D30000F669C827A391FED0EF923E3C3E3D0B6DDF
-:10D310009F0EE47F6FB96F61D3C97F46F2BF0DBE28
-:10D32000237E94F3F89FBA7F21F9D78827B92F6716
-:10D3300042AF75177049FCC97521F127EFBFB8EEF0
-:10D34000B478373AE81E4D01C6E549FAADE9C3FDA8
-:10D350009CD3053EB01ECAA3F6EA8D54B3A2F1BC1D
-:10D36000A099B9A29D97F19BFF0FDD4B21FCB777E8
-:10D370009FAE3D39D14A3EB473BFAE3DFEA47F5748
-:10D3800071CF2E444EF07829410F7F7713C525DCED
-:10D3900017A95FC70FE570FCE689F504FADB91ABCE
-:10D3A00097130CCF3FAA97AB424ECC6DF9FD10FC02
-:10D3B0003E67B985EC6EC6BC8F619CC65FD658E8E7
-:10D3C0009DC7A11E46F6CDCC758A7F8312FCDDAECB
-:10D3D000429FE19D16F527B20FBF5FA538F1F71FF9
-:10D3E00066ADD497CF73F0DF1D99637CAF469EC7BF
-:10D3F0005D665F5F9523F4BB9BB9C92E137114451D
-:10D40000A28ED12E6BF6F3F346DC97ABDC8F45F1A1
-:10D410007752EFBBF0BC2BE41D16C06B7806EAF127
-:10D4200065E636E3225BF0DA4EDCC7398788FB70AD
-:10D43000F03897E65D61FC7C589EC389FAE77C175B
-:10D44000A91CEB636FE77379FC8A3C7F339EEF3551
-:10D450003B4C743ED5BC2B92E21CF0DC2B1AF8E15D
-:10D460008C6967C7812941F8B40655776E644CB55D
-:10D4700025BB693FF95E776D5B0EC6E99BDD7637AC
-:10D48000E4EF771CA477BC460B3F9811DE96DFF1E2
-:10D490001BCCDFD569F6717BB7B980BF7702F291FB
-:10D4A000E17A92F11CE3185877901606AE2578AE13
-:10D4B000F6FC6BC2A55C7EFE7B6910B5D7565E4B51
-:10D4C000F96ECB1EBC13EF194DAA9E67C150808622
-:10D4D00027168F0C87A60D5DFD4BC3916EC3943646
-:10D4E000CF2FDEC9E17AA5C1706F41A6D7F5E17AE9
-:10D4F0007532C6E6F40F89E75AA2D07A58A83019D7
-:10D50000DF45F25CE62FD688FC489E5FB49CE71BA3
-:10D51000C4EF2A6C11FE169C37A6386FF40B6C17FB
-:10D52000FE189C37A6386FFC8EF20BF328BF308FA5
-:10D53000F20BF328BF3045F985DF67326F72AECA50
-:10D54000CFEDF243D6079EDBE587D847786E179A72
-:10D55000C773BBD0FA786E175A8EE776A1E5786E5E
-:10D56000179AC773BBD0FA786E179A67036F0CE6E9
-:10D5700051DE79C6E9F213C0FECF0F59DF786E177E
-:10D58000DA3F9EDBE9FAD3EED4B5BF9D55EADAE384
-:10D59000B95D68FD19958AEE5C6F86788776D6DA74
-:10D5A00038E29F7D295E5B1FA0EFFF89F8E7DD165B
-:10D5B000DC2FAA75F3F9BE2DDCCDE95C53C0E96E12
-:10D5C000E2F72C94A6A944E7C5569E1FC9E3BC8D7B
-:10D5D000FC83E762F9167E2E86299E8B618AE762BC
-:10D5E00098E2B9587E0F7E2E86299E8BE1773C17F4
-:10D5F000C314CFC530C573314CF15C0C533C17C319
-:10D6000014CFC5B01D9E8B618AE762F81DCFC5306F
-:10D61000C57331FC7E1CCFE72C41B8D09EEFAEDB4A
-:10D6200057021FEAF6954E5D1EEDF9D0FA68CF87D6
-:10D6300096A33D1F5A8EF67C681EEDF9D0FA68CF8E
-:10D6400087E647E5B8687DA15D1FDA0EEDFAD07C6C
-:10D65000768DEF0DF49D8D59F7CD614C1B2295A76A
-:10D66000151019057DFC93F1FCB2214C498E01C9BE
-:10D670006959B279723EE435114799C39A4CF4FB6B
-:10D680007BB879C4388700A3B8D5EC1F13A97CAA4E
-:10D69000BC7F87FF80EEB9BB18FD1E8D3C5F97ED08
-:10D6A000DDCCA9622AEB07F36DD7338E2FEB91FC0B
-:10D6B0000C81036F5A63BC4FEE62471EC6CD6E11DC
-:10D6C000BF8FBB65298FB736F2D562612F6D31ED03
-:10D6D0003C88F7699A0A15BA779D6E66472C798857
-:10D6E000A78A3CB42366F789117AA9E23AFC1D3176
-:10D6F00009B7F483829CA0FB89839BEA4744433F9C
-:10D700009A6F18FD3ECE682BB71FB01DEE2B7BFB2A
-:10D7100014CFC610FE5E20EC71CDC7C77FEE99B165
-:10D72000BC5D386FF7DC335184C7B1CB148A3B1B27
-:10D73000BC9D79F01EF43D429EF6DE1E5071BCC2C7
-:10D74000657C3CD96FE1BA64BA175AC81AF2F15E27
-:10D750000BEBA73094DB126F30BFC338BF74582A6D
-:10D76000E8C7BED2FB5443FAC58CC4784456C7E818
-:10D770005DD131FD3ED4CD97C83E80FA25BDD6D3CC
-:10D78000A7D03BCE637D4B96225B8CF1DDF946073B
-:10D79000ACBF89B9535CA48AE8FEB184A79767A798
-:10D7A00009D422CB62F5A63005E9CD0EC585F00F70
-:10D7B000ACFC8948EF5CB785DE551E67765AE89D5C
-:10D7C0008E76E2752E3A64BC8EC15E30C4E5542F6D
-:10D7D000FE2C19FDCD0B234DE43759B83B82EC06E6
-:10D7E0006DAD42724DDA418522DEEFE2B2373A4C3E
-:10D7F00046BCEFB4507F325EA72CCD9F6CC2FB09B4
-:10D800009D37E4C4AA64073C8FF2F0ACEFE55B07F8
-:10D8100062BDE5FC5DD18BCB76F3DF1915E73BF2FA
-:10D82000774B678BF8AFC26C6F34C6C3C8DF4793C2
-:10D83000F764E4EF924A3F4FE17B7DDF44FA16AE96
-:10D8400017EF7EAF2CA4FBEFC6B8AB1261FFCD5F24
-:10D8500066A1B8ADF906FBB044C4655DEEF74A0FAA
-:10D86000F531D887F27772441DA676F914FDC2F21D
-:10D87000DEE7340B9703D376323AAF9AB664840965
-:10D88000DFAB66BB39FF4C5BC2ED9C69AF7AE8FE4B
-:10D89000A6B41B3F10F6CCF84B4984FF8F85FD32B0
-:10D8A00009E35501CFA31BC2441C5B22A5932FF1B2
-:10D8B000F8D5F10E2E0F1AF6F177379A7D366E579E
-:10D8C0001D66FCDD38037F8E33FB4D78A1D13D18FA
-:10D8D000F813F263D01E82FEA6A07D1487FC9E3250
-:10D8E00092E2210B14BA4764E4F7D1968A3730DE0E
-:10D8F00076F466E6F6B1507E073EC6FE7C0ABDC7EA
-:10D90000A0897DAEE46323DF4F8F10FE2907F73F28
-:10D91000B5F829D056C547D47D7F9B8CF1C4D3D1AF
-:10D9200067D899A6E1C1B8BDC82C5EFE8F17FF3637
-:10D9300079196E7ADAF15BA8BFB4123E34F9EE447D
-:10D940003B7E04F41FA0BCBCE3AE5CEBCC1079F9C9
-:10D950007F018165E5A90080000000001F8B0800A1
-:10D9600000000000000BED7D0B7854D5B5F03E7340
-:10D9700066269364122621901048980422A906383E
-:10D980007941401E87C82358B40349143009C33B6A
-:10D99000A878236A0DBDB499908001C11B340AA2F6
-:10D9A000E880CAA5966AB4DE0A4ABD838855EB03AF
-:10D9B0008354EF6F1B86A7A0B546B8D6F67E5EFDF2
-:10D9C000D75A7BEFCC9C9399006AFFFF7EF76BF8E8
-:10D9D00074679FB39F6BAFF75AFBE4ADFCD28CFC2E
-:10D9E0007E0C7F2CAC3F630B5CF43B9BA2E6A50650
-:10D9F000F3185BB12E27953919FB067F26F62C17F5
-:10DA0000FEF54AE6EECB584D9FE01D8AC6D8208D24
-:10DA1000E993D3189B83838CA5A1022C97B1B9A25B
-:10DA20003E5D1BF2410B8C5713CFEB69ED8ED93E57
-:10DA3000A82F7704A7AAF0E89FF2EACA065818EBC5
-:10DA4000A3BA198375C5D8BCFAC02CC66C7BF20387
-:10DA500003E1919AEBA2E7CC1A1CE04960AC7A434F
-:10DA6000FBC6616E1C17FE57CC5895BDD5C67020FD
-:10DA7000E6B77986C3FAF298EE77627BF8AF88B1A1
-:10DA8000E3EB9E7F6ABD125AFF711B9BDD1E617F17
-:10DA900093340BCDB3B38131F730C6763538A87CDB
-:10DAA000B2C1C5DC318CED6E48A3FA530D6E2ADB92
-:10DAB0001B72E9F9B30D1AD59F6B28A1FAAF1B743D
-:10DAC000AAEF6928A3F285060F3DDF3FD05BA0C116
-:10DAD0007A1FB0E8C7EE82FDA5ABAD8C0D8135B6DF
-:10DAE0006E66780E8B700B6E829FEE18C598971F2E
-:10DAF0000B1B6CD7ED2C85B1A6758A6B35F4F33A08
-:10DB0000EDC79444285B9440CC0868E09BA207735F
-:10DB100079DB6FB2115E1C8E2CB7EBC127A05F4D75
-:10DB2000839DAD87478F5EC6741CE7D19FD8FDBE2D
-:10DB30002C84DBA1838EAC101C3FACBFD7061881B0
-:10DB4000C797E3867673EB62B5F5F0FEAD7C4F19AF
-:10DB5000AE3B3E4FB37B016E19F98CC6BFAE9FE75B
-:10DB6000871A94CB37EC7FE47D3CC77D59762FE054
-:10DB7000CFFC3DF96BD3DCD8CFEBC17EF39D2EBB40
-:10DB800007FADDD29C6477231EA4B2BAF63C9CA7A8
-:10DB90002B73564208FEB59A42EBC82AE0E37F8613
-:10DBA000E744ED5A6D330DED2CD40EE0A63BFA8719
-:10DBB000E09461653E4B01C2CBCB7484D700A621B3
-:10DBC000BC06C2F39802FE3E3639043F33DCEC005B
-:10DBD000770BBC1F08A5BD2004C70C78AFC2735BD0
-:10DBE000EEF1392C1BE1C6E67922E0CF83B87E84C2
-:10DBF000FB6C07D1D562073F4FA0ABA9A980872B4B
-:10DC000036292E4003B6C8E9BE7E0CD417BD666324
-:10DC1000ABA13E23D96D1F00F52E38DF1D505F707C
-:10DC20007BBEDD0DFBAEC2B380752CDA3286E86DAB
-:10DC3000911FCAC2E87479C3A603197B117F02BA87
-:10DC40001DE964914BB727E785D16DAB427461AE96
-:10DC5000AFD3545A77156393117ED5B767D9173868
-:10DC6000B1FE9A6D451EEE8BC341F68376016C378B
-:10DC7000239BBD8AF4D505FBDA91C5E72B081B7FF2
-:10DC8000018E1F363FB49FE781FA7D5A028D37DF40
-:10DC900005FBCEC2D245EB0438109CBA36C2786E72
-:10DCA0009A87CE6361C06FD3703D569817EA735D53
-:10DCB0007E1BCEB3A039DF8E7CCABB81CFE36D491A
-:10DCC000B20F87FA7CABCB9E81F08B0358A4D0FABD
-:10DCD000FC3BE06816015C929D380F9B37CBD91353
-:10DCE0003EF3C57A17B526D9171B9E6FB2E17900AE
-:10DCF0007FD323F18D83E2DC17344FB233EC6FD541
-:10DD0000ED1AAE47C0F7D4ADB1EB591FE8DFB6D975
-:10DD10009605F57F13F87B50C07546762047C17D88
-:10DD2000DF1AABE13AE7B85A697FDDF0BD1FE001C9
-:10DD3000CF17BB3C045FC00B1F03382C6A339E67B0
-:10DD4000683D1CBE8BDAE613BD2DB17AEDAEF075E1
-:10DD50006CD99FA3005CE6007D2B007FE6F2662273
-:10DD6000BE9CBEFFFA4CDA27AC13E19AA0B9A7A675
-:10DD700015119E101E4B7CA929E4F42BE7FBA3662A
-:10DD8000A5F9FE28F86774BAD45F4D43BA84F35DF1
-:10DD9000ED8E4E977664DC30AF7D91E26F527AD291
-:10DDA000A9A44F4997924E25FD3E62F304D29410E8
-:10DDB0009FA9E9C3EA9E8D00A78C7C7E0E73C5B92E
-:10DDC000025C5F41B8CAF7F67CCE8FAAB28DF48EA2
-:10DDD000E3E1B8E704BFAA2A0DE4DC9A176A2FE74B
-:10DDE000AD4AE6FD10EF11DFCE8973C7F62BA8BD53
-:10DDF000E063825F2CECE617BBD7F4477EF18CA280
-:10DE000021BF58B1F140C69D00B715BF8CD7100691
-:10DE10009FDCFCC42D03B251BEF9E9DCE4BA16FF65
-:10DE2000359FF8C412219F170522F38BEB73BD6A4F
-:10DE30007E71A8BEE8BE5F5EE6E5FC2680FCE60FCC
-:10DE4000BF7CF1C85877489ECAFD2C6879D736DF69
-:10DE5000190E3FBEDFF5B9E7E6E3792D74DADD2A66
-:10DE60003C5AD83C9FF82F4B635A8E123A7F335E50
-:10DE7000CC6F5674EA573FCAAF7E8F7C7AE18699A1
-:10DE80000CE5943C379898B15121F92AD77F593E37
-:10DE9000A7DB1FE4F3FE73057ECFAD9D641F908268
-:10DEA000FB9D5F886AC51CF17CCE22E3F3EE7373A1
-:10DEB00075F3F9B5482FE7DAF9B99DDB6023FE73F6
-:10DEC0006E77829FC1FE3E59F1FCDBD741BB8F1FAD
-:10DED000D89E89FA4AF8B9B1427E6E582E8573638E
-:10DEE0007D239EDBD8F0735BFA283FB7854FBDF5E5
-:10DEF000C717DCB45FCEEF36C6F8911F2F687F8658
-:10DF0000CE714ECB265B16B4BB3A3F8BCEAB9BFF9C
-:10DF1000D7E5BB18C0776ECB761BF289AB251C4CBE
-:10DF2000F400A5CEC2E80CE592921CD2C7647BE453
-:10DF30008FCFC03CB7DF1A9BC84686E6B92D9FF34A
-:10DF400085857549C938DFC2BAF9F7B01121796002
-:10DF5000DEE789584E2F0B603CA4DB1393B4CC153D
-:10DF6000849F968872F74681870F01B863011F0668
-:10DF7000C6B7FF1CE130F09FE234E41F438706FD83
-:10DF8000382FE237AEDB0EFCD301ED86DE1CFC1C25
-:10DF9000D73114300CFB6199904C25EB0FF51DB077
-:10DFA000EC1228B3555EB6E6733D09DE07F03D4B33
-:10DFB0000916E3FE257E9BF1D7CE1E6FC9463E961D
-:10DFC000C2B42677085FE538125F253E47DB5FCB9A
-:10DFD00045EEEF441687A73D0EF6977C09FB0364D8
-:10DFE0002D490EED4BAE0F7478DD82FAE33F0FDF63
-:10DFF0008EFAF389462DB3CED9DB7EDBA6F48FB043
-:10E000005FF33E25DD2C72709A06BAE98376C7B9B4
-:10E01000D6217D50EE9C5040BE41BF13B7C65A700A
-:10E02000FD725FA897B318AE9763897A391BC6F55E
-:10E0300072ACA35E8E25EAE5F43C3F99CB23164CE7
-:10E04000403D13F401CE0F029C4E3AEB87D0BEE464
-:10E0500073A91774BA8209C961FCFB649D909B2C5B
-:10E06000B811E99BD50F614FC0549DAD27122C7993
-:10E07000889F7C7DB2DFEDB62EE2872CC1EE7E025A
-:10E08000482EFEF677A7A4C27C8BDBB2F215E857C8
-:10E090005D5FD8590FEFAB9B5335E41B8B9DEEB5FD
-:10E0A000281717FBB234948BF16DF9A7B7C0FBC5E5
-:10E0B000CD5768D8FE76857990BEA49DB08475FF53
-:10E0C000909DB054F0B5A5C82F015E4BEA0F0C75BA
-:10E0D00041FF255A6C3ECAF7A55BB89D30C3C25AB2
-:10E0E0001494C34D9EA9C8C7BA1E5434D437D9C39B
-:10E0F000C05F1D21FEFA7EAEE7B7C867D857807FA4
-:10E1000030FEE5288355DC57BB8EFB60A08F3CC1F9
-:10E1100070DD1ED2EBA70ABED1D9762CC19DC7E116
-:10E120008DFA3AF3EA16E4BB2B845C1B6CEF3A766B
-:10E1300017EA3309166D07E797EFB8719FAFAB2C5D
-:10E1400086E48D682FF8E9E09F953890BFAD48C808
-:10E150004E25BD6A8B4AFC51E24FAD58F3E2EDE526
-:10E16000FD116F16C37B94775BF121B0D0B56D576D
-:10E17000F547BC5AB469CA033E906399028E27AD35
-:10E18000C199783E67B6A72637A25EB8BCE93206C9
-:10E19000EF176DBF2B13CB33DB636723BF9FEC9A65
-:10E1A000393909F6BBE4E1A47C354C6EFC45D0E37B
-:10E1B0008DCBAF4A457BE0E6AF0F3CE2023B6E31D0
-:10E1C000C01AE1FE457BBCDF074D6E6ED893A902F5
-:10E1D0008D7D1DE3FD1CE1799365DF756390FF2B59
-:10E1E000FE9D03A8BD3BD5D58B9D7D1AED50C0E7A4
-:10E1F000E53FFB80C6F9D4F2E6B573A0FFCDCB7F37
-:10E200009588E3DC74FFE1512E78FED650EF7FA3B2
-:10E210003DFFB1B27DA70B05D396ED23506E7F8DE8
-:10E22000765A31E2B5E7BA3908F7D755827BB4F9A7
-:10E230006AF728045F59AFF6F7217DD61B60761781
-:10E24000962E46FAF21995D5A33E20F51AF93CA967
-:10E2500080C3E54C9FD64CC48B653B3767A25C39C5
-:10E260009BC0EB553BAF7F03F994F7F118AEB75B5A
-:10E2700019E9C90B7D5CEF66B540AF0342F30F2C83
-:10E2800088A7F1966D2934C843D04BE8F9592B2B58
-:10E29000C3750C6EEACA47FDEB436B60319EEB879A
-:10E2A000A0D7A27DFB17C1C73E6C55A7E2731F1014
-:10E2B00012EA231FB6FE2A61A833A4C72514B507A6
-:10E2C00090CF2D7F2EA940E52845F8754BB75FC448
-:10E2D0003975600AE9632EC4D3157B0F4E65BC0EF9
-:10E2E00082303A3C6F147A5877FDB967C8AEBB7973
-:10E2F00037D7276E6E7FE6D57418E7963D429F109C
-:10E300007ACA7241CFB73CC7E1B2FCB963F685E186
-:10E31000F6486EF2DA81A0094E78F6F2D9F7BBD151
-:10E32000DE56C8AF52A965CE691C8AA5F4977491D0
-:10E330007EB83EB783ECF2E5CD62BCDC8EB5D9B4D5
-:10E34000DF997DC3F5A1890536EA27FB033CA8DFE9
-:10E3500097B1892390FF0596C7B5A05CD76F715A16
-:10E36000B16C5AEE2439FF709D25D70AF0D5953847
-:10E370000DF5B87A076F7F675CE20E2CF7C5F1FAEE
-:10E3800097B19924A7BEB4789E5902EDEE540FC5FB
-:10E39000A2FF6300EB3A60817A493FEF7505306F69
-:10E3A0002A03EA51517E04147CFFD96F3E2AC475BA
-:10E3B0004C181C3CCF6069B6C6BC3993014F6A0A41
-:10E3C000C43EF3828588EFFD5EE6FC7A9B8DB5A0A6
-:10E3D000BC63560F9B05CF03C8BFF0FCFF66F1235B
-:10E3E0003FDEA7041E0BD7BFEE1378EB8971B6286A
-:10E3F000B0CEC7B3BC4B711D3F526CC35175616E3B
-:10E400003507C7FFCCC6DF4B3DB65430E10C618FFA
-:10E41000D9D3D39CB8BF26012F45D7593DAC6375DE
-:10E42000DECB0B115FEEEE72B01898BFB42B8EF4FA
-:10E43000DA8CF432926F4D022E8A3B05650E7B39E1
-:10E44000CFE28B81F5DECD1C7E6CCF1C26FDD71272
-:10E45000AB633F65DF6FFF86FC7EA0FAF9813ED09B
-:10E460007EE09D8AD6046D6ACE9DDEF60E43FBD912
-:10E470009F8FF0BBB39FB7B100F6D779AEEC98177A
-:10E48000CEFB6E57BB43CBE3E385EF63DFCABF250B
-:10E49000265B42EBFBACEBF42F9F2FC2D24172A85C
-:10E4A000749FCAFD4DA6F57C96E6B6D23975390241
-:10E4B000166CEFB4F81505DB1FF800D757EA7006A5
-:10E4C00054D4E31DB63F85CB19762823E9F41524EF
-:10E4D0005AD837A02CF46FE2E737A18FD1BEDC59B0
-:10E4E000C0EDA49DE29C247C25DC985B67E172E68C
-:10E4F00025E7CE6AEEC7E274FC4FE2F9B9BF669336
-:10E500007E716E1FE81911F44E591E463D03F487C3
-:10E510002FB3F5A7106E52CE564AA92BE4B02AC6E7
-:10E52000AD14F0AA745A387C2A4CF0117863C60BEB
-:10E53000F3B9CBF3643F3974B04F169DE3F07F61BC
-:10E54000747E7B111F3BFFF6E61A203796AEEAC7B2
-:10E55000BC59FF13CF2F103B0CF58AFB2DA457A0FD
-:10E56000DE877AA2E41F5EE40323E939D703731937
-:10E57000F18D1A358EFC8C66BE21F985370ECA11D5
-:10E58000C8375A891FDCA9761DB428213E31B82C22
-:10E59000381CE5702798FEF83E6869A7E7DF146429
-:10E5A000137F18C40E0D203FAB35588C7AA0EA7843
-:10E5B0006CDB4910296DEB387D34D9FC0F2E41FE00
-:10E5C00050E9D450AFFBCC6FF1D9609D6D499C6F81
-:10E5D000B42D4B2779FE19137C64B69DF8C89516A7
-:10E5E0008B8FECAD39E9646F75B7CF71937FF5D739
-:10E5F0005FAB976DC1F7331D2477DB501E43BD6DB4
-:10E60000E3707AFFA2E44BCB385F6A9BA90F88C303
-:10E61000F733FB5B70BEDD29DEBFE1B9A7ABFE9F20
-:10E62000C7A23E79531C7B029EB765E90350DE3ECC
-:10E63000A078E62CC6FEC3F9BA8373E29EDAC98FCE
-:10E640002780FEA4CEFA841DE17E6FE9471FEC3BD4
-:10E65000F620C2CB57CA72519FEF44FC1C193A2FC7
-:10E66000B0CA597D72E8DC524CE726F1D56783F3D6
-:10E670004BE1E7B75A897E7E29E2FC947AC06FE2CB
-:10E68000FFFC7CEE54397F672F696E2CD5FEDED4FB
-:10E6900042585FD3AD702E2410837720BCB6AD4CAA
-:10E6A000D0711F9D1656DB1E816EB30B85DF09A549
-:10E6B00031D0C33C410FF324DEAE32E16D7050D255
-:10E6C000E97881B7D0FFC578CF509CF753E5F028A3
-:10E6D0007CF8E67FABB323CD33BC90FB0BF68356BF
-:10E6E0005A48F2B5D4A0AFBE99FF5106CA29F6D553
-:10E6F000814128775F49F18C2C04FE113BB48BFCDF
-:10E70000E69D03BA6CB8CFCE391F67A05E34AFFE6A
-:10E71000B7445F17BBCED5F135361C27A922CB16DF
-:10E720008432B522EB20E2CF91E931EE98087AC825
-:10E73000FEE9C33250FFEDA81C96817CAF030EF0BA
-:10E7400010AECFEA4E40FEC7F654131FAB147CAC9C
-:10E75000A362087F2EF866D8F38D45A8D73A2D5AC4
-:10E76000B8BE602ECF02DF0C00DFFC08EC332C4F6C
-:10E77000817D1600FDF504D867583F06F6199647C7
-:10E78000C13EC3B2A341A3F74D1543F604E19CBFBC
-:10E790006851687CF4DF46D28B6F7C5C6501091F91
-:10E7A000F8AFF6E17816C80DD597B4F535D4176DE6
-:10E7B0001868A82F681E62A84B3DD2BBEA0AC3B8EE
-:10E7C000E565858676ABE347D8F05C93CAF239DC21
-:10E7D000CBF209EE1DD74481FB35A309EE87A78F45
-:10E7E000CE40781E46B8A3FD66D512F01C24DC6727
-:10E7F00089390F9715F2E702EEA1E7E5BDCAA94FE7
-:10E8000010DE31087707951F21BC09EE1CDE2710AA
-:10E81000DE3108F75C2A8F22BC87E1B800EFA20B3B
-:10E82000C3FBE6DDAA010E373E6E8477EDC37D4D56
-:10E83000F01F6880E3A20D430C7509EF05CD467803
-:10E840007B57159ADA31B601E0508EBF001D1C2EA1
-:10E850009E467129AB83F9E281AF2421BDC1FAAD97
-:10E86000150AD78FE0A715E87016FE02F46575F259
-:10E87000F7CD73143FF225D489D0AE00B806E281FB
-:10E88000CECA5D979D42BE743D723015ED7A3F95BC
-:10E8900037B000D167350B527D1EEBCAB443798B7C
-:10E8A0001A588BFEBBB71CDE27919EFF32FDDD4E52
-:10E8B0000589529B3F0CE99C3993C9DE8C764EC08A
-:10E8C00029257F62CE51625FF05381FC1FFA75C427
-:10E8D0008FB8E30E3887CFE60747E1FC373BBC8FA4
-:10E8E000A65868BE3D38DFA736EFB0BEF0FCADE2FB
-:10E8F000D11948FFCCD3CF6027459B6F136E16E02C
-:10E9000030BF0CE0A4601C8EC3E5642587CBFE4DB0
-:10E910003176F4679C5C67237FE5E6F8CC4CC4DB7A
-:10E92000936BA66522DE356E1A9689F83EAB65DAE2
-:10E9300059E4DF53D41935144F6DE578CFD8ADA421
-:10E9400077DD21CEEEB89B6901785F393D41F3C197
-:10E950007EBCBEAC445A2FD39DF9D06EA1D8F7C26D
-:10E96000D6A533703CB9FF051B620CE7FFA3126309
-:10E97000BD92D943789685E76C0FBDC7F357ABFAC4
-:10E98000787BB1A3EBFFB0FD8D57C2C63B5E98907C
-:10E99000827A0B1BCD467FA386FA4783EB970DFE49
-:10E9A000375EC909C155E2D36F0A3D9FE0F9C063E4
-:10E9B0008AB7012D913CB8A5DBAFB52F11E1B7297E
-:10E9C000FEA57BAE44B8BCC7FD1C9BE36B887F7C77
-:10E9D000827C3B0BF9F4F519C130BE20FB07053FE3
-:10E9E0003DF2CBEB898F1CA84CA5784CC773DCBFDC
-:10E9F0007C54D07D47C5F5D57700FFECD8AD929E0D
-:10EA0000D7B1E7FC41F4D374B42B9A00B9257CDC70
-:10EA10008E3DC0CF91DF7A6CF47EFFEE5FD13ABFBE
-:10EA20002F7E5EB157F0F32D7CFEC5560FF117E631
-:10EA30009D6DD8DFDF8BAF5F889F1FB1713CED38D4
-:10EA4000A292BF8DF9F443B9FDC3F0B38CE36763C1
-:10EA5000650CE3F295F39959154007A8E733773130
-:10EA6000DA949FEC29EF47F27283ED38EAD32EF85F
-:10EA70008772DB0CC74A663D1E0CC3DF9B9F83F683
-:10EA800061EB9B85EFC3F0D98CAF2545467CFD82B9
-:10EA90007D9569CFE6EF0FF50FF13DFC09E72F9269
-:10EAA0006F49FC05BE55837C0DF8CA554580B73FBC
-:10EAB0002EC8FA4D5009E32B17C9C736C57F4D72D2
-:10EAC0007073FCD784C7872B051E839E81CF3BAE16
-:10EAD000E1FA06F3CF267A9827F5089B2701FDA4D3
-:10EAE0004756F54DC4F7C79ACB89EE243D99E73BCD
-:10EAF0002AF04FB69B67EDB26911E4A17795117FBB
-:10EB0000D8AED984EF7798F02CDAF8E6F6729E79D1
-:10EB1000A678AF799EDB8A84DED95E7D51F3211918
-:10EB200076F727FD362E84972AF2812F1382A47F51
-:10EB3000CD36E86547CB46935E76B8E27C44FDEC83
-:10EB400068C5F9B74623BD95D904BDD752FF72F108
-:10EB5000DEBC8E8F84DE704AF08F1382AEE57B754B
-:10EB6000FB9AFE7311EF57A91AF2AB23330A09CFB0
-:10EB7000CFF82B69FEA3152AF99BEE2F9A3217FDC9
-:10EB80004D723D72BEF26BCE27A03FED0B8017FA9F
-:10EB9000C7CA6D5ABF48FA85191ED1C695F803FA3F
-:10EBA000EC11DCE761E4A3F8D66B84D361EC0FEFE2
-:10EBB000676D5729DE6686D381E9C3882F1DDD2561
-:10EBC000F827C015F5F0DA878DE7BAA42DDEC46FFB
-:10EBD000FA1ADECFAAE47A99E4D7727D87570DE955
-:10EBE000179E3775A1F396E35C2CBEDC28FAA3D8F8
-:10EBF000FC86E46FB2613CB0144DF3659BDE5F6E42
-:10EC00007A5F60AC5F241E1F13F823E5CFB158ADC7
-:10EC10003A521CEFE8D531B5E1F9099D45DC7FD3C7
-:10EC20005924E2DE9728B7FFA328B2DC8ED65FF224
-:10EC3000BDA70B3D41E4772C504EF1EC8BE57361A1
-:10EC400072FE4C11D27950B1637FA957DD58C6E5E9
-:10EC5000C2E6F8A7284FE3D346AE17ED6F8C213CF0
-:10EC6000FCF335FCFD9FFFED23D2A70EECDD9C18D5
-:10EC70002EE7255E9EDD332D11FDC2272B1E4B0C8A
-:10EC8000B703E4FB8F2B1EBB672CD1B7AAF5762EFA
-:10EC9000DFD61EE8A810F680D0176EB2B6FF3FB1DF
-:10ECA00007CC76C014F5E144E47F667BE0AC5B4FB3
-:10ECB00074117C04DD09B972A380CF9F6D7A22C5DF
-:10ECC000E9761572B962C24F0987D3120E1BCA7B4F
-:10ECD000C59B53422EC8FA622B2378781D8CF465AD
-:10ECE000D6A66818FFC234951238974315F98FA13C
-:10ECF000FF4AB67FA65825FC96F31CD9A6B4A37F7D
-:10ED0000E5B7CDE5D57760BEC38C78E2ABB2FD1236
-:10ED10005FEFF2EBC8C6A46B711EEF1655C3475EDA
-:10ED2000DFB17EE1EB977A9AB9DF326BEB45D9D14F
-:10ED30005EDFF644B46F83629DC1FDB1767742CF4A
-:10ED40007E18AFC1FD2F9BA16A8DB0FE651BF8BA7E
-:10ED50002A7DAA960DF5DFB63E762DD2C1897A9B23
-:10ED600085DB072E039EBFD95AF836B63F59C6E554
-:10ED7000CAB18AAB12310FCEB7C5A6E5B87BCE5764
-:10ED800053CCF3D2CEEE89B1A0FFF46CBD8D05C893
-:10ED90007FE1217BF9C88621549E45F871FB9ACE0C
-:10EDA000FFC662EEE73AD1BAB03FA72737AD43E2DC
-:10EDB000CBB15D6A993F02BFBA519CDBA9AF9E26D9
-:10EDC0007C7B755739C9E313157C9E53ABB44484DF
-:10EDD000E7EF36A844C7277D7CFCFD7BEF4A1C0B80
-:10EDE000FB385BC1F77576CF9D6F8F817D062BA4B5
-:10EDF0003CE6724AE6F704370CA178EFA7CDDCFEBB
-:10EE000096F42EE3E157AD3C9248FDA59CDB3DDB3B
-:10EE1000B0FE8E5D27C80E3BBB0166E372CE998FB4
-:10EE2000F986BC3B5B32C378BEB32AE20DF5792D7F
-:10EE30004679D6B897F32BB39EBB7803E8C1E89721
-:10EE400032D9790B1B0B134B907E510FC63C932785
-:10EE5000CA0FA6E23EDAABA95D85889B2D6C8B318B
-:10EE6000F083CA66A35DB7C064C7F5B0EB4CF24847
-:10EE7000C2697914F924F5B90E61AF1CB579AA23DA
-:10EE8000E553B41773F9330FE8370DE3444CAFBCC7
-:10EE900052C07B3DC2C7DEF5450EE8D31DAA361E23
-:10EEA000F5EA1E7460D203CBCB8CF0659A8F95483F
-:10EEB0007F849BF4FBD3A8FFB7F41572DB0772289D
-:10EEC00001E592FE6C31CA958BF51F5CB47E5E2322
-:10EED000F4F31A837EDE814DC2FAEFAFBC9EFC5480
-:10EEE00047AEB99EF4F523DD7E2A8FC14F25F5BAD2
-:10EEF0002333CA0DFA67D8F33EBDE58B47D3378F6E
-:10EF0000213F263ECDE5D25A6147360B3BF2C80C75
-:10EF10006147A630A223AB556791F8D9A5EA6F0BDC
-:10EF20009A8D72C9BBCA683F3E3FC97B16CF252662
-:10EF3000ED72C3739BABC0E83F34E1E740C6FDE729
-:10EF400077A12F00E0DE54C9F34EF139E6BF48B98E
-:10EF5000C4A03DF28BCA0D97FBD7F3F73EB500D3A3
-:10EF6000E518AA74D4DECAEBBAC2EB3EA778AF8A22
-:10EF7000BC371BD48F6569B351EFC2BC9EF864FEE9
-:10EF80001E516420E075627248FEA15F3F9687D6ED
-:10EF90007D89D06F5045D62B48D798EF735901DA49
-:10EFA0008C3C2F2C0D5DFA05347E00F37A824D13D4
-:10EFB000C9DF5CEE48E4F179B0A37BC7BF46AED7AA
-:10EFC00095F5A5C90659F97AA2E2B36877217C0EB6
-:10EFD000D3C3068C223F9A85FC2D9BE247D8107F35
-:10EFE00067393D190807C07792AF1DBFB1131FDE07
-:10EFF0005FC9FDB01DD3476FBB1D9E8F78DA49BE38
-:10F00000F48EC5D20FDE95108EB747579DB0205FA6
-:10F01000FEFD1EA6611EE3D1DD5507DF80710EAC3B
-:10F020005AB8B118E9E84D95EC06B3FF76D2D3E3B0
-:10F03000C8FEBAEE1A95F2BB0F97A90CE5DAE10DFE
-:10F0400071063B24E4D755093FBED867A5F768EAA7
-:10F05000E462FE15FA37314FAB8C9FCB0B829FB524
-:10F060008B73FCB9D063760ABA69137473AFA09B33
-:10F070007566FFEEC39C6E0EEF01C301E4FA3B33ED
-:10F08000169692DF7A0BA33874D674757D11ECEF67
-:10F090008A18CD86F09B34239FC3B342B160FCA68F
-:10F0A000BC2CDF86F47E455FB70DF96879D94CAA90
-:10F0B0004FAEC8223B7FFF2A908F68EF2768194820
-:10F0C000974367C4042C89683716129FB8F28CC521
-:10F0D000402FF9813803DD5DFE78B2E1FDB02DE906
-:10F0E000867A3F4FB6A17DDF32233DC60D2D30F22B
-:10F0F0005DC6F54209E729EA38F2731D0DC9517A58
-:10F100002FF511E9AF93ED015A06BED622E4C808E7
-:10F11000A8633EDDBA8A2607E64D7CD16ED5F8F8A5
-:10F1200055A41F38B29E73209D606815F3AB5AA496
-:10F13000FE29FCF74C67A6756D6018673D5AC60836
-:10F140009F62873205F5AF3671DEF7897981AF4E60
-:10F15000B2919F8E9F63DF191E6AC73C46FB200D4C
-:10F16000E9AC00F184F7FFB9E8BF53E0CBD1B2C7F7
-:10F1700056C7213ECC66A46F4C516F5E8DF1C4A37F
-:10F180003318D1497BE0E5385C3F8E83F9812F4409
-:10F190001BA7E2571FDE82EBD965A771CA1F671351
-:10F1A000104F2EFFD1B18FDF46F06D711D88653D88
-:10F1B000E5F088C7750D81937B86056C540674E471
-:10F1C0003FB9670EE9180FBCFCCFBB3E7E8AE1BC9D
-:10F1D0005C2EB408FC36F3D75F3CF1EB05289F7F2B
-:10F1E000B1736BC10750FE60F583E9F550FE7CF505
-:10F1F0004D5B6F7787FCA53BAF5DBAA30DEAC37E7D
-:10F20000F8D3279F43BCBAF6A7FFE7395CEFB57F79
-:10F21000FBA313D67F59530243FA96EB33CF93C621
-:10F220005A148C8B221F25BE6CF5517DBECF68FF12
-:10F2300098E53EB6B702FCCAEB7F41F1E534D1FF59
-:10F24000F03577292ACCFBC17CCE573A1ABADA2698
-:10F25000DBA87D00DB039FA47CCD818380AD607F34
-:10F26000BB4FC1B83828481AC67B07C07BE4E7CC3F
-:10F27000ED26FD2A53E2AFE02B78CD81913FD04AB5
-:10F2800078962BE291C87F91DFBF312A9BF8F2403C
-:10F2900027D3F17CCB5EDCA0609EDAFB5EB7467ABA
-:10F2A0004103BB7F32D8C997AB3CEF22B7ECFDB925
-:10F2B000782EB055ABB72034EE2EA1D795BDE8A47B
-:10F2C000BCEDF77739B7939E7FE85A4BB87E58FA72
-:10F2D0008B3F3DFB3BC4AFF9B1845F66BDA543D016
-:10F2E0004777DDE6DE763BC0C7F71B07B7AB747721
-:10F2F00006D9E99A3B03F377BADBFD54C6D3B43F92
-:10F30000223F9F55154F7106195752CB3E5F83F42C
-:10F3100038AFA4AE18F5F7743C87BEA138F607CB1A
-:10F32000EC946FE053E2282F3D5ABCFABF843C6452
-:10F33000AC6E24AD83D58DC6F2FCECA66D767774E9
-:10F3400079D52CCE35DA7B9B9D7923C595FF6B143F
-:10F35000F72336E139D8C2CEC1F9FBB9181F8E7632
-:10F360000ECCEA2FA03C4B876328E681A48AC79B7A
-:10F37000E37FF616CAABCE235C5EA5D67FD980F4B8
-:10F3800027FD163569AC3B6EA6433F9BE8972AE202
-:10F390002C48C3A87FD78878516735A378516AFD78
-:10F3A00047FF8DF0D924C6AF798F8F6FB706F6234C
-:10F3B000BED438DD24773AFB256A78AF897DC5F362
-:10F3C00053D219C747393E13E3E3CA59D8BA53E3B6
-:10F3D000AADEA1EB101358201EF14771D0BCE9AB97
-:10F3E0006228AF55EA57A9F577DDAA8E308CA7A021
-:10F3F0005EFD7E15B7B7D1ECEC1E37CBA057919EC2
-:10F40000655E87ECD769637BD0FE0DD3B3480F638D
-:10F41000E1F30C31D4851FCD58B7A5D90D7CE2FDA1
-:10F42000AFCAFBD47139E04E19C5FD77080FA98F1B
-:10F4300049BDADC7B882DEC3F44B1FF20B9947D16B
-:10F44000AD27D586D94DD93DFBC97C35790E129EA5
-:10F45000D1FA3F3F499F329AF4AC008DE315C3586F
-:10F46000E29D99045F13BF04B6C5F3E9851E0A5AED
-:10F47000A4218F41EA95923F770ABE1BCC0A92DF06
-:10F4800050E6890F823E99D0FF86D149DD79F6A8F2
-:10F49000071D6DF88CE2EF35A887C2FCC1D59F1817
-:10F4A000EEA114954EBA81D66BCA97088BBBD27A5F
-:10F4B000BD826F4E519D94B7D2C9E234E45F9D3E48
-:10F4C000A18FFD219EF431C92FCCFCE11ACDC8FFDC
-:10F4D0007F5462E4FF33F5BE26BBD018A7AAF49888
-:10F4E000E2E1EF4D37F04DC97FEE44379F8AEE25BC
-:10F4F0000FC575DE14FCF26DA107DA591D3D77309A
-:10F500007E7F348EB553E96487A84C645D54BA9805
-:10F510008BF26B929946650AF350D99FD55199C6E3
-:10F52000783E553A6BA772103B446526EBA2D2CDCC
-:10F530005C162CB39946E550E6A1D2C35C14277F34
-:10F540002F21987118E037E37A26EEFD1EBA418725
-:10F5500073EAAC64A17BC04857539840BEB7F9FB2F
-:10F56000E9B2FECE0D3ABE9FC4DB6F7DFEBD87F0D3
-:10F570005E30F01BF1BE83BFEFAEBF7BC324EC6FE8
-:10F58000B3507DA7687FAA487F08CFFFE9D18CCE12
-:10F59000BBAC48DF36BA38543F53A83F1A5EEF3F42
-:10F5A0004ADF1E5E1F5DA83F16DE7F49A1FE44F8BC
-:10F5B000FB7DC5FABFF2BA8BF0F23D9B4EFA2EFCF2
-:10F5C000EC5246717CC39F3EAAF769C2C3DD8A151F
-:10F5D000CF3546D09B1DCF51453AD21C31587A7851
-:10F5E000DE4F30D6198CB7F462FF98E82888FC0902
-:10F5F000F070B8E2DD47F398F889E213F98329C681
-:10F60000B809E03BF95583ABB89DCE58E4F772DEFC
-:10F610000BE139D3C3FCBCD9A171A3EDC38CBF8767
-:10F62000849ED721F4BCF7441CB97BDF416BD269BF
-:10F6300047888EA3DB8756763A9C5FF6D8F79FAA59
-:10F640006D40D7C1FA1817CABBCE58F636DA69BE74
-:10F65000232A433DE352D7DB5638F50CE78B835C16
-:10F66000C867BAE7157CA6137F053DE78A3ED2BE80
-:10F67000D41C1CDEDCEE4812EB6A9A9C7C752EF9D9
-:10F68000F3B95E9F673B34731AAC337503F7AB264F
-:10F69000227D63E8ECE93FB8308ED63AC5C2904F80
-:10F6A000AD917E5E933F6ED3E415AE707FF09A44C9
-:10F6B000BF82F1CBF4402CF743A4307F2CCAD13267
-:10F6C000AD8CF2667CAAAB0CEB55ECDA5CA82F682B
-:10F6D00053DD6530EF81B65FAD403FE0A22A3BC508
-:10F6E000316CFAD4B3DCFFC7F33792059E37AF8B8A
-:10F6F000D10208C77E4EF2DBE6AD2928437BB7C9AD
-:10F70000999C8CB8985CB584FC864D4EED35BCDF79
-:10F71000E17359283F91B9744739E82BDB6FB796ED
-:10F72000211FCF78A628510D5BF789E673B1180722
-:10F7300079D465A1F78FAE2A752C71E23D46B017DA
-:10F74000A03CE03AAEA3FEBE15DAA0BFF19EDAE31C
-:10F75000AD97F5728E89657603DEC66BC67A8CC965
-:10F76000DF6833E905C34A1252E89C47B15178CEAD
-:10F77000239FFC8AECDF794E37F9D54B5B14CA8F97
-:10F7800009EED73251DF3CB17118E5BB34B718FD33
-:10F79000D1C10C9689F77DE6B72AA4AFAACD9F37D1
-:10F7A00062BFC1B9EE0138CE60AD6B802B8CFE1EFE
-:10F7B000FDE98F6351DE35E38535C223C6E342C2DE
-:10F7C0005E95F7CAE7BBCE55A3DEBFA8F55D0FC2B5
-:10F7D0003F49B710CD1CB5F9D3F0FCD74F9A45740B
-:10F7E00089F7B4508FE9A18FFE15D619763F614D88
-:10F7F0004A761CCE1BC25F3D11F77BB2B590F4A3D5
-:10F800001D2DA5741FC03CCEDD0DAC1DF5D6350DEC
-:10F810008EF648FAEFDD999E4CBCBF7D6AD3A4B545
-:10F820000CCEFFD4FE656978DF7D716B0C8B75F7AC
-:10F830006C7F72D3689A6F31DEA3C6795B67DA5149
-:10F840006E4C6B9B6447B8DDDD30FB99F0791E2A66
-:10F85000F5569700FDC5B73E4378E264011FC2F537
-:10F86000DFC7EB99A85F9CCC6111F33997962844C8
-:10F87000B7BF1BEFA1FB29A73222B7BBA984EBE7D7
-:10F88000C11237BFB76E656F2F4D217BD085F47ADB
-:10F89000A2A590E277368CBB0FC1EF567CD580F8DD
-:10F8A0007FBE6AE1074BE1FD9AE9D79DC172A4BD15
-:10F8B0008EF466F67B95E801F442BA27F69F150EA2
-:10F8C0005753581E21EA8FBAC1AFE161687FD85AF9
-:10F8D000D4801DF8BB6DDF69D2C3115FF530FCA584
-:10F8E0009F51429F17F92169A3E8DE1DFDACB9FACB
-:10F8F0003A7F00CAE32D0B1D91CE31FAFC61E3A2E1
-:10F900007E3B99E9B161F383540C905FDBCBE7EB6D
-:10F910006E27DE8319AAD3FA845E6E7EDF4D6F5B9D
-:10F920008CF4B94D9C8FD4CFA3ADF7077E63BF177E
-:10F930003038818644FBB5067AB95C6D5F817115FC
-:10F94000F63EE7FF60D7314F84385788CFC2DAFBE5
-:10F950000BF8013CD7A6CC22FB24DA3AECFE437A22
-:10F96000D68890FDF68334E3BA64BB17C4BE62FC4C
-:10F970002C604BC43240F73962A03FCAEF2FAA6E09
-:10F98000735D1D812E6469E65BF8E30E8BFF98F9C9
-:10F9900004A2C150A98F58787F3D8CCF25DCCFF5CC
-:10F9A000DF935B14D27FD76FE279145FF8A14ECA60
-:10F9B000053F27542DBE11CA8E33ECDEE192175B52
-:10F9C000EEB9DC6D80DBA2F0EF999C79F2276FE352
-:10F9D000FB8F9EFA8907977B57CAA244CEB78E2D1C
-:10F9E000C0794E5D61277F0CFE38247E40C3A5FEA2
-:10F9F00018031EAEDFFBE496052877F63A344CC7B1
-:10FA00005BBCC5F83E262D6C5F8CE397CF00A760EA
-:10FA1000F64CA0A3A33FFD57BA1F1E87FC13E97144
-:10FA2000550CDD0B33C3795C49F77746086F1784B3
-:10FA3000E250741F44D2D5F10D4DA7541867ED2A3A
-:10FA4000BB9BBEA760B2BF8EBA67EA6961F161FB7A
-:10FA50002A7E4F9385DB89D9A1FDCB718FFA163AA7
-:10FA6000DCCE9EE3F5C0BB28E3F529D5BF46BE98A2
-:10FA700056EA6163281EBD90F65DBF67D5D137A0F9
-:10FA8000CD3D715EEB987EB8FE21A314BC2F63754B
-:10FA9000D3BDC1E6664B2CF2FDD6766BEC50847775
-:10FAA000B385E47C6B7B4ADC50944B4E0BC54F51C5
-:10FAB000AEA861FEFDD16338BC42F2C39318AEFF1D
-:10FAC000C4097C3C952BF49FC95CFF519EDE477AAC
-:10FAD00047F31A1EA792FA864BE08FAB99C721A372
-:10FAE000E93FC87870DD09C58B5CC8D7D624F2EF32
-:10FAF0006F2C9AACF9F03EE7554E467263305EAA21
-:10FB0000403DCBC9FCD3601ED5C5F51B6F2B237DB3
-:10FB100026D9E9D410D4A96D7E1FAD5BE774E680C9
-:10FB20007F08CFB85C9DE1F856935E6137E90DAA76
-:10FB3000A9AE8D11792B428F6042FF96F1E0848D42
-:10FB4000BDE70149BF6EABF04F80FEE4A37B2325E8
-:10FB5000CC8F78CB74DD9DD23F6407A489EF1EA5BE
-:10FB600095B0ED4D61F127457F95FC06D22F29FD1B
-:10FB70000FD2CF31A204ECB5C4307FC44B605AAA77
-:10FB8000140F9B8E789205EC80ECC93CA6F0EB1923
-:10FB9000DF524FAFBFB8B8CF432FF3FB41CD9638FC
-:10FBA0006D4756CF76378DE3F8167700F6867AEDF7
-:10FBB000F50EBA873345DD4DF7EE371759785E33CA
-:10FBC0003BE4427D60E118CE77B34A3D0BC6503C22
-:10FBD000D593857803F0F0D9F0FE9EF0DB66DC91DA
-:10FBE0001D87FAF007034E6F42BDDCB7C642FC46E4
-:10FBF000C231ABD1722FA261587C2E602D08C5D9BD
-:10FC0000D67BCEF9F0BEF0B5E3B8DF356EE6C9FDC0
-:10FC1000E8075D37D4427EF6BB12748ADB01FD38FB
-:10FC2000541EAF7B0DE36D2DEEE464FCEECE534924
-:10FC3000FCBDFC7ED50309FDB787E797948EE3FAF8
-:10FC4000C8034A647DA5EF3885E759ED0540F621E4
-:10FC5000BF16B7C77D5F54E9CEB03AD21EF4FF1786
-:10FC60001FB7A75BF67E51E51B4A7692789F534DEE
-:10FC7000F63AFA18E1FD89BD2F55F9A0FE4856E481
-:10FC8000797F2BE67DE475EF60D467837B017FFA93
-:10FC9000443ADF00B394D0B89918970AAE8C991DF6
-:10FCA000E93B3683C6F37D6E8677317D427AECE69A
-:10FCB0002AB39EEA277E75BEF6F8414AD306FE5166
-:10FCC0000CF490C422F3CB0BEBAB5A1AEA9D4D2BEC
-:10FCD00095B5C83F9A405FC5B860AACB4EFA6A7323
-:10FCE000D28F27E1B99CAF652EBCEFBA03D43EE4B6
-:10FCF0005FE857C57BACD3EA399FF1BAB89F15ECE2
-:10FD000038CF55888F03AC848F527FB55671FE7300
-:10FD1000450CCF47EE4C7292DF34A99EE71FC7FB1C
-:10FD2000409FC5FD4DE6F9C33AFC433E24F55B67B1
-:10FD30009ED590476C37E5195B4D79C5FBC718ED2B
-:10FD40009984E2A25EF5AA97C0FEC575EE03FE8314
-:10FD50006500EC602C5F06BB1DCB57C06EC7B8C1F9
-:10FD6000AB0DB954BED6A0D1F3371A4AA89C981946
-:10FD7000A4B822F991C97FC3020AF9F1247E7D3A21
-:10FD8000A814EA4F4DE2EFFFF3853B1FF50D82F714
-:10FD900029A2BDEFEA6AC4D7EE3AABAFC6F6356921
-:10FDA000BC5E3DF6C7D5E8FFE99AA27F88F2AD9F19
-:10FDB000C5337F0DB6FD498C16C9BEAF1D2BE47946
-:10FDC00014FB9DE127128CFE9CB3637AF1E73CA003
-:10FDD000F075F4DDF7D2C348177D665A3D88C799A0
-:10FDE000D9463FFFD563395D3C3896F39FCC3780C9
-:10FDF0003E7A81BBA48F68EF9BF6020A44A02B5980
-:10FE00006E4E6013E87E76B57D76A43CA7F3827FC4
-:10FE1000441DDFC9DC312343F4D6E434D35B90E2E4
-:10FE2000BBE7EB6FDB8FF2F2BBD31B23FB3058AD8C
-:10FE300093BC0E02BD213F576B39BDA9567E3FB31F
-:10FE4000E64DEE1FD981F485F970486FF0EB341F51
-:10FE5000AFA79AE8ADC94C6F4E23BD0591DE60BCDB
-:10FE6000241FD72FE2ABDABF577A1B39F6BBD1DBA1
-:10FE7000BF8F0F525E436756DD0084CF66F13DBCF5
-:10FE80004BA5C337C7DAB93C18AE935FA0597CFFC6
-:10FE90001058CC06FCCECAB4418DD66480DF8C9459
-:10FEA0007CFA0EC16D63FB0B3A39E4447F4DE224CA
-:10FEB0007DDA58A4AFEBCED0FDC67E164EBFB5633B
-:10FEC000BBAA90FE32D674CC9C8674B75225396991
-:10FED000DED78B1338DD35297C5E38B901E171BD81
-:10FEE000B963393EBA5736290ED4C7E7332D278B6D
-:10FEF000BE2B43DFBBF997E6FF74E1B82F4EE0DF7E
-:10FF0000737137BE97E4E5FEB534B4DFE84A734158
-:10FF10004F7A849F765B7F033D2FC47D44A3E70B1C
-:10FF2000F18FE01845C085511EB057DCDF94719108
-:10FF3000A8F46CF2E346F51F0E8FFC5DCAC9E3F925
-:10FF4000BC4DC2FF6BD6F7E4FE0F4FF2FE6C2C8C5B
-:10FF5000A3385FE57EE07DCC8DEB9471B3EE3C235E
-:10FF6000A91FFA98BF09F56D2BA832FDB9BA81E334
-:10FF700075E71F093D7159A9771D8EBB9DB9F7A380
-:10FF80007C736A3C5FE1F949FA7A82E7B7D4034BA4
-:10FF90004AF57B71DC6878B56C9AFE406FEFD957F3
-:10FFA00030CAA8505C6BD24C2BE70BF58AE003CE2D
-:10FFB000B576A86F4E027EE646BD9DEFDB057CC39D
-:10FFC0004D7686D18E988ACE48E41BC84708B8FA89
-:10FFD0000CCCAB4C14E387E475F020EAA54180ED2E
-:10FFE000BDF02AD1C7E575D39B9CAFD881AF505CDB
-:10FFF000BA84DB09F25E507C9E46F697AAF76E3F04
-:020000023000CC
-:10000000584DF6FD9EB1C27E28604508B74C8BFB6B
-:10001000BE31F0BCF0C12987C7C0E3E26D8BFBA203
-:10002000381DBD7D4D397EEF6BD913A7B6A39F74E4
-:10003000CC7FC430F15D35CA33F83BCA193A97F327
-:10004000FB58B5CF8AFC2A321EAF19CFE59F8CB37F
-:10005000F682C7EF131E8B38E725E0B1F302787CF8
-:100060001CF135021E9FF88E78FC09F6BF170F01B0
-:10007000D61D3B4DFFB437BC9D3A55FFBC377E1AA9
-:10008000163FE0F943AC96EC6719BFEC015794AF0B
-:1000900039BDF8A5D6ED88457BB6A976C7EBF8DD66
-:1000A000C7A67A6E677726688E12B46FDE55E97B35
-:1000B00056D1FAA3DDED0366B96A3CCF8F3EB0326C
-:1000C000263011C6497772799BEED419E68B5B5DB9
-:1000D000419B3701F5350F43BDCD9E6261BE307F38
-:1000E000CC48DB2192CB9D20C7913E803E39BD2577
-:1000F000F171A47C9EB8F23E8CE4B0F15DC0FBC20D
-:10010000E8E4F5BD25E4874B287E6E05F653ABED9C
-:100110006EC4EF897F05B91936CF24D044C2EB579E
-:10012000390618C699E2CA32BC9F96F603C3FBABE8
-:10013000015FEC14C7E6F702A55E33DD9D6F68979B
-:1001400024E21C3FCC1D6318CFAA7E75EF68A47F04
-:10015000A1478C837FF45D5E93BE60D627CCFAC343
-:10016000E82B8DF75D4658451E9A95E7476C660E5D
-:10017000FA2E05F041FAEE414D284F80E864843DA7
-:10018000B8E36EF4ABCC71683E78D6BCF7EAB4F94C
-:100190004521FFD9E67AEEF76BDAE3D88EF4B05555
-:1001A000D0A5A4AFBC84E37318C9753B43796CA692
-:1001B0005799EF24FD05D29FA0D4723FC3D90959A6
-:1001C0003CEF48F09FCD55DCFE7D4809C42A4338FA
-:1001D0005DBA9343DFA74B638A6F3AA76F3D59948B
-:1001E000AAC8479579AF380EDAD9697C3EF61ACF9E
-:1001F0009B6CFC67ECEF62BE41C29F91911CF25375
-:10020000607EC2CDBC9F6FBAE83758E45BF6E1EB85
-:100210000F4C11F38D8052ADD3857FDA4B650CC640
-:10022000C3A1CC56B438F47F0C513D14684914F185
-:10023000F574114F8F57029C797C4B3E3212D828AF
-:10024000E625B064FE7D91D25F38994AF461DF8182
-:10025000F2E8AE63DA3BC5F0BC39E1C76F4D84E725
-:100260002DEFAA1AFA49EFCAF07D80746D0564F08B
-:10027000915FCB331FCF4DAD70B8A6413FD5B7BD11
-:1002800011E3BB23EDFEFD749EAB6388DE83D00FCC
-:10029000F1616B02D029E22B7ABA4685F281641CA7
-:1002A00023384673A01C0D623BEE6F36F83F23E403
-:1002B0009B90BFD42AEACDCE1DA4BFAF4DB1E317AA
-:1002C0005331BF27B31EF1B25F1CBF7FCB78DC6018
-:1002D00030FE12966F6F7745F66B82BE4670083619
-:1002E0002E4DEB4DEF8A1A47715A02F6C48B8FA33D
-:1002F000ACB9F13A7F206C9D72DF6B9D3B9405ECAD
-:1003000052E667C6384A2DD363474488A304FD0AE2
-:10031000AE73702D8FB30C16FEFA6F1B47A99CC0ED
-:10032000F5C74B8DA3C8FD5E237E9F01882DEE1976
-:10033000533C81CECB125A5F18FC1E277E44B82155
-:100340005004EA3F12F5B77677FCE949F8F5CD5D40
-:100350002FEFC652EA7133C5FB6B877DB90F73B7B8
-:1003600066AE5B21E258C6F8C33560D585FBF9F16E
-:100370007B01E1F599A6F5945A8D7182C94E63FB14
-:10038000A929C6F76583627A9C1BFAE569BF4ACF43
-:10039000FDDE157F0FE3DF9B0A3B07F5C27507E61D
-:1003A000CD61DCC7DD134FC2E3009EDF58597211E7
-:1003B000E28B85F4D2ADBEA5F75702FDAC0539CA74
-:1003C00079B1DB407FA1B847998EF824FDFDD1E8D3
-:1003D000E9B8339BFCFF83EBF7B74FEECBBAE300F2
-:1003E000F7C4791DE3F07B41CE730AEA2183EB5F0A
-:1003F000A1F7D7CD29EE158F72EA0FB44F0EFB8E01
-:10040000608ED56341FB39A7FE557A1E559FEFC913
-:1004100047286F2D47E085CC0BDC8A798100F79C5B
-:100420005AF17DE0B6DEF3DFA43C6C0ECBEFA364A3
-:1004300006B7C2C2C79772AF873F9D71BFAF9CAF6F
-:100440003B2FD0346FB7FC7371F9F7FC24AF36AE95
-:1004500038EC5E86B8C701FB8E98073A5AF8B37B32
-:10046000C963E37667C56B1FE0F8976C7746197729
-:10047000626630E23DA9A9C26FD5191BCC40BF41CD
-:100480006794BF9BF0D094A93F1CD78BBE8B79B3E8
-:1004900008CB68EBFCB679B37522DE24E3AD327F7E
-:1004A00056E6C55E287FF6BBFAE1570A7F40E93879
-:1004B00016310E615EEF6DC23F9E55EA598178118B
-:1004C0002DFE20DB7F30C01ED12F7E6442E4EF0E74
-:1004D000C8FC50586F4AB81D24FBC9BC7CF3786037
-:1004E00017AD1917E60FF436E690BF2FCCDE92F960
-:1004F000B0441F9B851FA29B0ECC7AA1888798F5DC
-:1005000042191F51AAB87F02E8A30DE745BD0BF3BE
-:10051000D2A59D27F34965DE28E685523CEA5BEAD1
-:1005200055DFBB3DD53885F2BA9A5CA5AF7D177B08
-:10053000EADF2718ED29AF93FB1DBC684F0DEF696B
-:100540004F15957A5F447899EDAAA33FFB84F26337
-:10055000C10EDD37EEFBE01326FFD4DC311CBFA556
-:100560009C96FEB4FD432D06BFEB5475D57ECA178D
-:10057000AFE5FE9674BD9DEC34BBD3EE467F8B7524
-:1005800032A7235B1EF3EB3CCE4BFE15995796EC3E
-:100590005C12F1BEA9B41383D24EF4F1FBA99D6F96
-:1005A000F2B86D3CFA5BB06119976BD2DF624B1108
-:1005B000FE16533E76BCC9BF62F6B79C1E27FCB63A
-:1005C000C2DFF288E2BE1B49FD575BA6FC0E41F17B
-:1005D0006F0F2F8E4753FF79FF9A1F0A7FCB834EF1
-:1005E00058DFDE0F8CFE1673FC2B42DC8B9C57838E
-:1005F000C6FF8EE26E12BE926EA53F2BBD9E7FBFE0
-:1006000069AABA5B41FEB2D9C9E1ABA23F2B25E48E
-:10061000CF529EFE53B75F8AEEE3F68893D7BD8E26
-:10062000EBB402C3591FC9BF25E06A8E4725D68B9C
-:100630007BC0DF933F2B79BC11BE050F16DE87DF31
-:10064000352EDA567E18CB51DB6FEB3B17CA92275B
-:10065000EE2BC7F22FAF07B350EF34FBB114047E7B
-:10066000714FF89AE128F1D45B2BF1D46927BAAD28
-:10067000E27034C32955E7789A03780A2A4237FE94
-:10068000752671FA4C9FACBD86FEB5C17956160928
-:100690008FADF5FC7B59128E5B051C936B97909F79
-:1006A000D08CA783DB2E0D3FC79AE0F7EC96C2BB38
-:1006B000116ECF3D5CFE3B2C7FEDBF2D1EE1B6E7FA
-:1006C000F1FB7E28E03780BEA76B82DF03F811E9DB
-:1006D0007E3DE13751E3F6F5E7A5DEB2F100DFAB91
-:1006E0008143A03F64474B81C3180732F2D3D4EF54
-:1006F000C93F15ECE6A7ECED9C4BE0A71F9BFC5314
-:10070000A93E4E37A9BE63449FE9409FB1E8AFAA16
-:10071000E57A24887D7FBC823637E7AF52AE21CBA5
-:10072000B180F0D9EAE271E7087ECA007DEFD7C454
-:1007300087D181138E772057EB107E52DE6DADE5A9
-:1007400071B4DBA678568CEF178AAB3D3F49BF6D7D
-:100750003CDD5FF8D6FEC77FC6FED2FF08784AFBB5
-:100760005701DFF1FBE657813C41FBDF5A1BB4A187
-:100770005CA9A9BF55F142D9E74A4E3FA9695E86F7
-:1007800071FE9EFEBA6002EAED138776E3C37A9C9F
-:1007900047E2C3C895E7EF433F57347C488F92AF99
-:1007A00074617C2835C8D7CDDDF850B7EEB2948B94
-:1007B000C787B809FCFB11DDF820E83FB536F82003
-:1007C000D2AF55E083D5057C0CE0A1221EE485E282
-:1007D0009E921E8222FFC00C9FA06F48943C8415FD
-:1007E0004A492FEBBBE8FC03110F6D12F1506F3D2E
-:1007F000CF97ED5C1933D5987FA0D1BAA739EB9488
-:10080000F03CFE0879B22FE3F9C938A78C6B7E5E05
-:10081000EA79059F4FCCE5E71C8C1E670AE0FD5680
-:10082000403F9709CFDF223C97F70F841E77DB14F8
-:10083000FD6D1C7784DD4F79CEA0EF1DC6765BF78A
-:100840003EC9BFB72BFC90322FEF3BFBCD12ED7EA4
-:10085000BC2F29FD669B13EC3BF0BCE7B3E014FA18
-:10086000CE2FC629D0EFB43186F21A172A6078232A
-:100870005FBCCAFBD1788AEB79281FD75BE170A1F6
-:100880009EDF9C34350DF946CD5A95E47A34FB460B
-:10089000D25B0DF01BA2B77ACE6F5201BF08DF7C8E
-:1008A0000AF19B74E0379CFFE80CF53A2BD29DB31C
-:1008B00027BFD9DC0BFC2F92EF7C83708FC077941D
-:1008C00009C506BE6399F01DF8CE4FC6336E1F8A68
-:1008D000FD633C80F68FF415BE7FB33EDBBD6F2316
-:1008E0007D49BAFB5F4067232744A6B3FC09DF8D2F
-:1008F000CEC662FF087476E504239DE913FE67D235
-:100900005905E1DB05E8ECA3F14CD8B7D71AF48A16
-:10091000CBD5F6733938FFFFE7FCED8357723BFE0A
-:1009200042F9DBF87331FE53733EF73FFCA9FF6BCE
-:10093000FDA9CF4EF81EFCA9AE716EC23FB35FF5A4
-:1009400093D1FABE09BDC495259FB64A3E0DFC1849
-:10095000796F0DF033E4CFA9555D9F3ECFED4D2D5E
-:10096000DE4DFE86D771BC74C1AFCD7C19F4CE3795
-:1009700026FC1DFD0D7F2FBFE14AE167BDD07DFB49
-:100980009502CED1EEDD3709FBBE09C6C07B7A5B8E
-:1009900057DAFDCDB0608FD0AB47D45E773512D932
-:1009A0003BCBEC71C15EEC26F977245A1BBC2F9E21
-:1009B000CC09DF1F8B28B7BAF767D293C3ED26F7B0
-:1009C00025D84D33261AF5646B2DB773AD20EF286B
-:1009D000AEAF9704905FA7FB94764C0DF6A6D42992
-:1009E0002807536B3D940F7FA9717D331E458BF310
-:1009F0007FDF717D73DEC0FF94387FD14461CF9B70
-:100A0000E2FCD2FF6A8ECB8FB0B796917CADB6E098
-:100A10005FC060CD7B3FDE71379EF71C07DDD330B2
-:100A2000E703448BDB8F48B607E3B3A3C7EFA5BF4B
-:100A3000E0115BDDEB68873FD268A1F335E70DE499
-:100A400025F0FCF1B313766DA3FC1FA90F57093EE7
-:100A500053AFD8E9BB8E557EE2335E7D5723C693F4
-:100A6000539DAC1DF5ACB8896EC23F354D273E6332
-:100A7000ADF2125EC9F8444D26BF37172BF04B1D5F
-:100A80005AF7168E9F7448D530BEBD119B02CF48D1
-:100A90004059897AC4180BE545B42975E4F76855BF
-:100AA000DCF4F73F92F25CA41F3D95A4FD7E36AEC8
-:100AB000BF1FFF3B2507A62F49433EB8B6B1310DF6
-:100AC000EF27DE3491F3877BA79FAEA6387A2EE816
-:100AD0007F0A9586BF672BCB1DBA22FEDE929FF25E
-:100AE0001161DD5BA8DF503BF9D954FD81DB900F2C
-:100AF000A8974D25BC6E555C7316E079E5D8498FF3
-:100B000069CE19357B11EC6B5D3F4F59169E6BD248
-:100B100050DA677352FF44D447D70DC8A6F95B1467
-:100B20006F5916F61B6021BA56457C7E5DCE92D772
-:100B3000F0EF8034A55B18DE3B68CB39DD82EDDA5F
-:100B4000C6F03F82635EAFEA32DE93C20F1F21FF21
-:100B500056D3785C5C157171D514572ED51599FF55
-:100B600048718758C1B76A7256CFA6EF2738ED2E65
-:100B700044B2A6846025E1C74A1BC3381DB3B61A28
-:100B8000F4B4BB1B8CDF7F71E619D7D3D27D3F2134
-:100B9000CB8B7C86FE062CDD5F48F2227E20BFE5F3
-:100BA000497FF1BC1E2BEA019BD717E17CFE51FE69
-:100BB000A3FC47192AFF2F0D22483C0080000000AB
-:100BC0001F8B080000000000000BC55B0D701CF5BA
-:100BD000757F7BBBB777279D4E7BD2C93E816C5614
-:100BE000B6446410F25AB68494D8684FDF322EBDF2
-:100BF000387C88C476CED8B8CE34932A4E49EC845B
-:100C00005667EB64C95FB2A414E44C3AD3B34932DB
-:100C10006DF08042661AF33967700821D028811080
-:100C200032930461885B529A310127A2434BDF7BE8
-:100C3000FF5DDDEDEAE4AFB81331CCDFFFDDFFFE91
-:100C40003FDEE7EFBDF73F00F0C00200D90F003AEA
-:100C5000C0A6224F122200E7AA200D95D8F74E9782
-:100C60006941800FE9AF25DB1EE807C8F8B2FD60D7
-:100C7000AD0A660DF0DF87A271CD3B6E5AF3C29FBD
-:100C800073DEE16AB5371D9C3BAF3DAED594001ACB
-:100C9000F2AE03D225AD73E6673A8E4FFE4C866AFC
-:100CA0007DEE7AEEEFEDEF3615AD2F86DAFFBFF170
-:100CB000F3D175A9E90128137D68C47353BB44744B
-:100CC00075A48302820E039D8DE90CFE73424A0CCB
-:100CD00057D2F9C21EE39B30970E762B6B73F897B1
-:100CE0009D5F16D347ECF9710BF2CE801908D12B1A
-:100CF000FC0E69AFE1B63F449628110F3F076BBE6B
-:100D000028C0B31FE2FE8E67F905DA82ECBCF2065A
-:100D100095C72F57FB5E6C5885CF5E918D6FEAD9D2
-:100D200079793F95C00B80FD5D65F6BD62ADFB91A5
-:100D3000232A64ECF1F8FF0933CC749AD8783F2465
-:100D400090BE3FDFF089E2441E39B0DB6569E7F70A
-:100D50006FE09CC07483F437F1DFA95F8C4ABCF864
-:100D600009F13CB5424BEFC7E7FBA5F4FEEB68DCAD
-:100D7000DD82BE361F0A2D3EE05FB40AE9E8B5F811
-:100D8000E4759F0BFF94054C278B38397C58C27350
-:100D900054D1B907ECF974230348A703CBEB56EC05
-:100DA000D7E9FCA3FFF26DDCC791E37BDEFA36BE28
-:100DB0000ED4D68D34E17E0A0C8F21933C7FEAC499
-:100DC0000964170CD5DE334AD36E1D954C0DDFFB3D
-:100DD000B5E03199CEE8974C9A4F39BC90CF13DDEE
-:100DE000EA948309C958504EE71B9380F85268383B
-:100DF000DFFBF49CF3E0FF4788CF2C9F39CF916E47
-:100E000048BDDEC9DAB9747FC5926705C727ED7999
-:100E1000912EE35EFD16A2F3F83E199238E5F82E06
-:100E2000548AAB007E6B4E7E7A3732FD9E412FF3A3
-:100E30006122A6A6251C3F51A4DDDE4BFD328F7139
-:100E40008C898AFFE3B946975DCBE7B2D7FB6C8B01
-:100E5000CEEB8DC51694933EE2B8F2F80D73E5CF54
-:100E6000BDFF4B95BFED668925EFA340F3C3E42D8D
-:100E70001ED227BF35E63A79B27E09ADF7731984E1
-:100E8000DCF441BC682E7D06C91E7C242B27AA25D4
-:100E9000477B23EB7F4CD3CF27CF6A7ACAACACA376
-:100EA00075A08FE8BE2CEADC9F3DEE7316BF7C690F
-:100EB000C87843D4664CA8A376CA94B03DB7E10B7A
-:100EC000DA5A7DFE757C90336F25CD077C6E2F241A
-:100ED0009858C4573387AF7B0AEBEE24BE0CDEACC8
-:100EE00002CB9F9BCE17E8AB4AE6A4142279F80800
-:100EF000CB4712E5A31AE7F1469D72187F72154C95
-:100F000007059F92FCBCDB243E255ABCB376C89FE4
-:100F1000632F41DFFD1B19E7FB6AB7AAEFC77D7E90
-:100F200035BEEDBEDB48CF5F900D89DFEB6C0FEF78
-:100F3000B1D680D109968762CBEFEC3C71EF6BCFD5
-:100F4000138FBAD5D7896EA4C7B37411F6D9F43705
-:100F500066D73BDC747A7829D221359C7FFEBB4A68
-:100F6000F5CF11FD6C3ACF37EFACFDDE7972B27D73
-:100F700065B63F529008C4F09C2341038D00BD3FED
-:100F8000C5EF6115CA65F9FCFC448AB23CBC46FF5A
-:100F9000C4713DEDA616C3BE7C02B7BE1CED6291C6
-:100FA0007ECB7A7CD511797D23D17F6BD0A3C939D3
-:100FB000FA3570D00B99201102D745B95B07D31BC6
-:100FC000D7E338A8F2B29CCB9115FC7C4B515CF175
-:100FD000607B6D6C09AF677FDF03FFA0ECC0E7CBE0
-:100FE000BDDA2B2427A988443BC2E74840DCFA5AE3
-:100FF00005CC10B65D7ACC4F7EADFB095A08A02512
-:101000003C1E21BF54F7D8918A04E975D29CAA41AD
-:10101000FE842D765DEF9B8AB7E17C032FCAC61E46
-:10102000EC8783DBD601CA91F47090EDC400DA79C5
-:101030001FF25D0976BE45CFD79C0568CF91A79674
-:10104000193FB4E7D8BD18CE9CDB6FF3973BC6774A
-:1010500068958EF732984606E9D4155DE61857D4A0
-:10106000B04AA3FDF6E82B1CCF6FAE69767C0FED7E
-:10107000CAE969ECAFC6FF88EF32883EBFAF249C57
-:1010800080FD9CEF15C8E9E3FBB5B1A2C819724A0F
-:1010900037C28DA447C8976307C8FEF4FAD96F0D0D
-:1010A00078E184540CA4FA49A827629BECEF254B05
-:1010B0005E93B14AE693147CF67D96C327A63D84E1
-:1010C000B3E031A827FBFA8F9A7ED28343AEA629DC
-:1010D000F1FB280ABA8E7C4218960CD4F37373691C
-:1010E00009F93929D983FD45382E2A44119EA37167
-:1010F0007ED8FD15310E16D1380D9215D8D70C2893
-:1011000020BE56E03C9F2DE1EF923DD677D788EF89
-:1011100092C52562FEBA7AF6A3990E6C8F82013EC3
-:10112000B63F71044D6445FAB8BD867685CF1F0081
-:10113000A39EFAD530CD760AD92F517F214C6AC2B1
-:10114000C86784DD9E56C267FCC2EEE7D397ACDE6B
-:101150002870C6E6070EBEBDC5FC12E9CDED773698
-:101160009C1777283B9F71E8ED23315DF8C39D5DA7
-:10117000AC27CACE67F9FD4BB1F81E9A8F48EFAF86
-:101180009F4BEF3A350364BF523130923845EAD174
-:10119000B5D1CDC8DFE4A37EA31AAE1C3F2E950FB8
-:1011A00069D00A88AE72DFE5F201D8CF074FF88F19
-:1011B000EE676134D94FFE097CF9F6E5F0C5CD0F35
-:1011C000B8B714A0F9C276F4EB5226202D657A98B0
-:1011D000D1FA2CFDB19F5C66D1ABC4E2872CDA8CCE
-:1011E0006C3D574AE6E70BCD575A92E5CF85F8128A
-:1011F0008DE3FBFA2C7FE43E938967FB691F9C65B6
-:101200007CBB4432985F4BE5B887FA8552C6023DF5
-:1012100069F69B21D0983F57411FB711EFF466C67E
-:10122000C33B7121C2B31FA097CD89C752C1567F5E
-:1012300025D9D71AC5F060BFB6C8134F231DAF56C6
-:101240002043E72B572049F61C9101CF9F7A14BD0C
-:1012500015FA9914BA690F7DB7CB9F4E49D9F5EBB2
-:101260002CBBFDE3A26F69D3B5593A9F26FBB55C51
-:10127000D0C3C3F6673243DF47BBC118D0E7DA33C8
-:101280001C97942D3B45ED267AD1CC744B86B02F1C
-:101290000DFFE07DC219349F82FDEFC512EF923F32
-:1012A000259C1E2C61BB345D48C07A2E2E30095718
-:1012B0006CB6D6E9BD495F1CC77D6E1EF6BD4EF308
-:1012C00041CAE7C405EEEF750972BFB7BF9B952B06
-:1012D000F7F797A907B0B3ECA27040ECE1D5C5D3FE
-:1012E0007970FB2CCE243D29CDFD4EF0498D24187C
-:1012F00077A8A42FA5179EC7EBC22FF63C5E145CFF
-:101300009AC76BE117DB4F6D83B35E65A9B54FA438
-:10131000D716B0FF224CCF4D16FD3E4DFE2A44F4A9
-:10132000C44005CFBD15E22AC9ED5F2184261CBF4C
-:1013300064DFD610E30568D7883E52E663F287D7AC
-:101340005F021D2D3A6DCABCE5D5C92EED2C823742
-:1013500072E337EBFDBB1B3E21E274BFBFCA9F1394
-:101360001F169EF8A09F8CFA9EC2BF7FB105B73EA4
-:10137000F8926CC895F45EE0E60008FF5D487A8A52
-:10138000FB2E7CE2CCFFD0F84217AEA69921675E17
-:101390004FE141C6B3852155679CED92331B47C38E
-:1013A000070207072DEAE5CC2B115EB6E31E9E5718
-:1013B0009ABBEE0D163EC757B10F2F02CFBB713A45
-:1013C000CCE273F13E1854859E609C9971C4C17A39
-:1013D0005E3DB3F76D7F57A6C62B8DDA3CDF5B7C95
-:1013E000A8A5401CEDC2C20A48EFC6FD0E0FEF884B
-:1013F00015627FAC0C748C3061A8F38B12E18DD632
-:101400008810A57093C085B404D8713CFE85FF4355
-:10141000DF5F83EFB755040DDC192C7C1B7132CED6
-:10142000737785DF30F1410AC4FB649347C4934965
-:101430007899F0E8568B3FDE2704CE64DEA01E1EAE
-:101440006C15F86AEB89CFAE23FE8E94DC6A64706B
-:10145000DC56B44FA584C746BD8CE710D73970BFA2
-:10146000AF290707E2FF771FF13AFA5E174E3CD02B
-:101470008A3810E5DBC681F7B702EB19ED8BFCC9A2
-:10148000955A078211B6A73728539E7CF9379B1FC0
-:1014900036FE7EB24CD0D9FB9EA00B06CC3BE8B901
-:1014A000EF3D118FA1010F362C20EF2FE8E76B40A5
-:1014B000FAD0D3F7843FC02F79DF26FE47FB76E3CF
-:1014C000619F0B0FBBF76BF3E1619B3E8DD048F43E
-:1014D000417CCE38C13E8FFB1C4F607CDE8E42F1DA
-:1014E00054BF9FDB4CBFC6EDD3FD516E4FF5EBD023
-:1014F0008E00ECD9FE1A6E9FEB37F8F9F3FD4DDC48
-:10150000DA74984B1F91D7BCC6DAB3523B15273F0C
-:101510007A55BB875561EC5E0FD3ED1CCA27295F56
-:10152000C8A0DC1B8EEFF6A429A4B7E39F8596BC68
-:101530005EEF3B7BD287E347CAC1D883DF2F6CDAEB
-:10154000C672B6E6AC27AB2740714E81234F10839D
-:101550005247BFCD7FB5637C87B6D4F1BE2436CD6C
-:1015600076AA2B7ABD639CCDE77FA2380BF737D6DE
-:101570007E5A23BAF6E82B1DE3947B91FF7514FF86
-:101580007CCC312FC8EB0CB2D3251B9C721872F1A6
-:1015900055DD7EFE38C8E6F3DBADCE78683EFEBA98
-:1015A000E5D5A66BC92C5D455C99A2B812E95AA293
-:1015B00009BADAE71DB1CE6BAFAB3489F35DE9F858
-:1015C0003244F16565BEF8F24D8BCE17882FBB9D76
-:1015D000F1A59BAE178A2F17B439EDCAC5D273D3C4
-:1015E0006291772B7941E6B845EEEE633F583A2594
-:1015F0001B5D64122D5C56443600C76D6A50D3845F
-:1016000033C7603A4AFEFCB0845445792BAD35CAE5
-:10161000C9CE3C14365EE925DCD823F280CFC46EF7
-:101620008F12EE18DC7D348ACE0A9ADB3C6CEF46D2
-:101630006367387FA1E8C0F90B6CCD741E7C628FA4
-:10164000B7F38D8737AA6909C71FB6F28D877B6606
-:10165000F38D5CDF986810F9C68FB6E9569E29199C
-:10166000A578E5AB1B1BCBD95929D8BF81861BAC0C
-:1016700027FB035A88E2E8D4468F46E79257DDFFFE
-:1016800005928F4352DFBE2A8ADFCA3C9C774D8584
-:101690001BCB37E3387913C218EA6F6C7C956CF674
-:1016A0004499BEAF8ABE0F5731FD0657DFEEA775CE
-:1016B00046C20B7A283F32D2E1611EC98433423CD4
-:1016C0004FCDF9E21E771D40268B4BF15BC4935141
-:1016D000C95F11FEC8C9FBDBFCDF1F56393FBBA544
-:1016E000EDC1A3C92A7ECCF66BA15D97D9D8CA7982
-:1016F000E6738427A4F9EB327BAD7CE7ACDF893A53
-:10170000F793671DC605765D82FE743B4F8B7FA9FC
-:101710005B3AD3E447C721DE4DF633193C7F1D44C5
-:10172000099EBF0E325FDD63579BC8A37E99F82EDA
-:10173000EA338E7A89D26DD545ACF8F530E5C349E8
-:101740001E5C75127B1F03D67CA9593972D54D5684
-:10175000ABD67C06E4CB5FFFA9F593FBDB44BDE68B
-:1017600052EB26DF6D03B15F2BDFEDB5F87F9D3CBB
-:10177000B983E4F1CF9DEFFE6EDB95CD77CFAD134E
-:10178000A5595FE0C4D93758AF972DB0F0CBF9EB2E
-:1017900040FB09E823FFC657202EA5FA87D54FDE68
-:1017A00020E675D78502561EE5876D4B45BC45F68C
-:1017B0008498AB188B89AE41E53B490DCF51101C85
-:1017C0008330B6BEC8E624B52D8B75AE0F8D2FF3D2
-:1017D000B0BF1A2F4A1C1DA4FD2F0BE6D58B572D29
-:1017E000FB376CD56F48803DA46F92AD1C90F02004
-:1017F0009F2640F0F9EDB6308F57B4D1A6BB506E9E
-:10180000DE247928E3F3E4ADFF9C6913F59F9CF98E
-:10181000BF41729AB226A77936E33CFF65C923908F
-:10182000E35840C18E58CFAF8F36112EF85D9B26FE
-:10183000DE2B2B0CD287F170FEF57E679D072815F5
-:10184000D398C5470B378879C02FBE3F2C9DED3DFF
-:10185000BD8AF9CAFA44FBA0F7EEFA977BFE408DE9
-:1018600033BE512B9CE33F983D87332E3A344F7D56
-:101870006C51BB90D796C542CE483EF6E4910FB767
-:10188000BEAB94F7A478AA3D6CAD27EC4E50996A94
-:10189000A57827580B06D71495937CDEF893552727
-:1018A000A657919D0F191407297E3495F5D938D183
-:1018B0007DEE0BC5798A02496FFDDC780FE7358B29
-:1018C000EB859F49E6CC774DBB901339371EACA40E
-:1018D0007044BF85EB785407A4FE2E5F6F3E3F5DDA
-:1018E000DD76FEBACE9138C61114A43E7C70DF16A8
-:1018F000ECBFAB79341F8FD1F3D67534AB3F5BD7D8
-:10190000895F5C5D67B4BDA4A7EA52EA3AF3CC3BB9
-:10191000EB8FE7D675DADBF19C6341515F99ADEB54
-:10192000DC1AB9A87C0E587EB9C4B2CB453D561C12
-:10193000B153E238E2E9867F3FB09CE4ACC1CB72A0
-:1019400000072720574FD66DD0BF564A7EE6551F59
-:10195000540BBB66D27C765C6CD34FB5E66F7DF0E2
-:101960000585C68F977B1A793EC8F83C5CEC4EAA79
-:10197000562B53BB5CCDC8C5346F095875F48C44E5
-:10198000CF6348ACDCF86064E6A76DC59427098294
-:1019900041266824A6ED2EA67F501588F04EA59E00
-:1019A000267BDBE62F74D8FF911E55D8D76A715F6E
-:1019B00066FCA4FEB5AD387E68678071D3A10A8F3E
-:1019C000D0AFA4C4F5E40ECD19F78C4F2E1178ECEE
-:1019D000A0D7A07B22C727C5F82DB1C6B4CCB8DBF1
-:1019E0001917F5E8CEB8684B79FD2B841761D0CB79
-:1019F000F978CDC2B537D738E3A4A2CABEE708A7A5
-:101A00006C1A1478786FB464C116B47FBF6AD71D9E
-:101A100071E2E6C1BBB96E34A802D7534736AAAC0F
-:101A20001F23DED78F6C61DC58C0749CD8A8962722
-:101A300072F4A5B4C367DD8B10F803E1656232CFA1
-:101A4000FBD20E617750B0D98FDBF2F2179F117481
-:101A50000E55405A271CD7B3234371E578059E09DC
-:101A6000DF0F46AB7A4ED2FA2FCB40E774CB6165DD
-:101A70004735EBE9AC3F6DF238E8E4F5C5FB687E2D
-:101A8000B81974B26BEDDDD8A73CC00615283FE04D
-:101A90008BFE2D9FB704FB01ECFBBB47930AF6FDC1
-:101AA000558995848B9FD975C7702C42FE4EE8B737
-:101AB0006FC3B6F82768FC2A2F04687FA04B51DA61
-:101AC0005F52DC6770EBC3DED4F7DB894F7B0D8997
-:101AD00059B4A967FD76BEB7142960DC34EA8D6F6E
-:101AE000667B749B5F4BB20F9CE638C2FB151F9060
-:101AF000DC4DECFA4D19E1EF1FB58BBA664077C6A5
-:101B0000D77E1865BFBDDA9CDA40DFAD6E52A9E220
-:101B1000014F379F61BE4D34F80C1FEE63A259622E
-:101B20003AFFA1C19BA6759E52A7645AF7A93FE050
-:101B3000DA95F9F43BBF5ED97AE41E3FD2B4DE4FAA
-:101B400072B117A66E25FA2467449ECA3D2EDE2187
-:101B5000FCD5DED46D350AE7B354AEB72B670DB3B1
-:101B600018670FCFC4FF9972AFC97645C449E59E87
-:101B7000A484F30DF5887B194345896192E721948C
-:101B80007B8E9322E23ED27879C4D89FB3DE78F37D
-:101B9000ED3564CF5E6C0830BE1F38F5377711BE67
-:101BA0006F95DFFEEEC3145755A8CCCF216FDFAB86
-:101BB0001407251B02BCDF538B54F0933D88DCF5E2
-:101BC00000C5D9707C03E4CAEB44B7D0D3890AA11D
-:101BD000F7D2C31B380E189764A6B359764C223C33
-:101BE000E6EBB6F34E22CF14B3CCD9C48647380FF8
-:101BF00075558FC8A3C6BAAD7C931C4CB25CDE1879
-:101C00007880F4DF54BC8EF878CD5967BC7C952B76
-:101C10005E76E7A3FEB7DDCA475879275B2E43D629
-:101C2000988926CB4EAFF2A5851CF6956BB573F55A
-:101C3000FBDF2CFC3CD5EFE77B643FEDD7B81F32D0
-:101C4000DFD95D8AF3BCDC1FE5E77FB9FAA894FB16
-:101C5000DDC8AADBFC3ADB93E928CDEBB6236EB9ED
-:101C6000D8DF5EE0F027F63E8B9A5BC5FDBBB36C18
-:101C700091614D70BA8D7D234C0573F17EA65FDCBA
-:101C8000737BDADAE729DAA78FF264627FCFF5EBAC
-:101C9000DC3EDF5FC3EDC60E10F500DB3E5C83F675
-:101CA00001E9D05E21FA640F88FF2591BB384FE629
-:101CB0008B2A1AE9BBBF623423E5D88789A2BE5FAD
-:101CC000DC4D76BF2CC8F2E83ED79A0E4FDE736D1E
-:101CD0006ADEC176E71CAE43F4473BB39DED10DAF4
-:101CE000055E77837A27EFC344BBC476A1EF6B7799
-:101CF000B05DF002C9B9DB0E9424857E277491BFD4
-:101D0000B3EF09CDDA055C278DEB3C8D769DFA4368
-:101D10006807689DA1E6D7FF9AD6FDC3FB057C2F17
-:101D20006A62E32B6C175E3C8736FB0ADA055B0FB1
-:101D30005F3B153B961BCF67F9BCFE8E13821E1AC4
-:101D400008BAF6C6F3C48997CA67302F0EC7A495A0
-:101D5000E93B45DD51653ACC5B774C7A0C4A0B0C7C
-:101D60004C2ADD56DD11A8EE68D71F73EA8E05CE2A
-:101D7000BAA39A4E31BE495B75C7DBD78ABAA35A5C
-:101D8000301DCCEEC3AE370ED2A3F26C7DFEAE8E0C
-:101D9000C4AE8E866C9D5197441DFCA598F9657A5A
-:101DA0000E9112F6FFEE3AA55D8F4478272572EA70
-:101DB0009B75F8DC5F92AD7FB9EB99F6BD8C3A75F7
-:101DC000FAD801A4CBC09D7EC60FF6FE061EFDE824
-:101DD000AB8948F63E805DEFB4EB9976DD13F73DB5
-:101DE00096BB6F7802D8EEC063FEA3E4DFDCFBFD98
-:101DF0005E2C717F47599E7D5F647D711D58F32372
-:101E0000EE227D7ECDA2A33DEE414B1F97AB22BFBC
-:101E10000D2195E39DD607832013CE2E528F915E20
-:101E20006C86E90EA2EF4058E0BCD4212FDBC9E359
-:101E30001D3AF3AF4C35F93E44D99703C66E9C2644
-:101E400075520B51FEA9A7DD3CDEC1FB18BD753DE7
-:101E5000ED03713BD9BB5F57DF17E17A3FDD7B2A8A
-:101E6000A6F8CF584C7990173AF2DF576A597C762A
-:101E70003DAF5BE4018ACF5201E339BE57FCA4C2F7
-:101E8000F3F5E014663DDF5F6A574B681E713F75DE
-:101E900020789AF9D552ED5BC179BDA2FC71E0B30F
-:101EA0001D226E5D8B73A938CF675A13DFA77D5350
-:101EB000AE34CA722CE2BB17C84E0AFB75AFA7310D
-:101EC0009B072B96132FD078382E29E41F7D96DCA4
-:101ED000D871E23BADE68BC477E48749EBDBF78052
-:101EE000ECF55FB2F890EC307F4AE35EB7D6A9D349
-:101EF0009231D2C3BA04CA83C4FAE3AAC30BB9703D
-:101F0000CBAB2D6FB375784B0E254DD46B51AE5EB8
-:101F1000E7FD3EA59FF448546F4F1C3D40DF5E66D1
-:101F2000BDFBEA36F32DDA77716BFC3F69DE5FEFBC
-:101F3000BA83EF055FEC3D8E96C57D51AAE30F0590
-:101F4000046E7E286638ECDDA24EC19F459D022FAF
-:101F50005D8F3233C5F74B0DBEF70DB09D71B46D7B
-:101F60009F46FB138FBF599DFD3ED50F93540F9A8B
-:101F70006F1FDE7D3B38AF3B50D1EA27FB83F6ADC8
-:101F800098FA43156634771FA92221E7C945226FC5
-:101F900041F9B464CE7DF2924E99CFD35601199295
-:101FA0001D5F50D4DD7CA8B83AFA1F9FD9C4F78BC7
-:101FB000F1F924A518AEEAD4455C1E31C0A478B36B
-:101FC000220EA4DF3E2DFB3DD551DB2AFAF8BEE5FB
-:101FD0007CF3C851FBFB047F7F53A7C6F3AA118F84
-:101FE000230F7021BAB9E9324874AB9E9F6EEA455F
-:101FF000D34DE89D9B5E8D16BD9E097F91CF071F37
-:10200000B4B19EF9343C27B6AB3B857D9183262441
-:102010008AC846C51141529EBD0FA80E6DD359D630
-:10202000049D65AD8FBFF3551890B881E89260BAF2
-:10203000B8E9807602C84EFCF0D12311C2A72DD892
-:102040008F0AFB013E6CBFDE21F862EBE93AF849EA
-:1020500050E4BF9DFEC26D4FEDF6212BFFEC7E2EAE
-:10206000750584FDD0C141F722EBF70BC786EB194C
-:102070001FA0FF4CD2BD98CEF2EA02EA5FE93AA275
-:10208000BB7EE8AE13BAEB8359B931FDB4CF77B557
-:10209000D3C98FE79117BB3D60E9DB60BF3FAFDE7F
-:1020A0001D407D27FE0D359B49AA1BED0D4F47595D
-:1020B0006E4EBEC5B858794136085F2A8AE073E78C
-:1020C000A269E663579309546F3AD0DFFB9DDC7930
-:1020D000BFDE9AF84A27CA49A13669D23C41C824D2
-:1020E000C9FFAC2D35FBF2E1A621CB8EBCD31ADFA4
-:1020F0004DDFD1B575E2FF9B31730FF52FD66ECD55
-:10210000A74F8A4DBB4BD6A7D3429F9A76B03E8D40
-:1021100054F431CE1AF9894C482A8B232D7D1A6943
-:102120003EC3FA6EEB55DAB63F4D422F288F40FE84
-:102130003B5461B2DDF896A54F0AEA09E993CFD284
-:10214000A790961D4FF9F136A2333E572AA6F9BB48
-:102150005093A57FA44F41BA3F0C8C038650EF28C3
-:102160002FE2D6AF962AE1379F684D3CD449F862FA
-:10217000D17ACECB0F55FCBE94F18B25FF59BC5BB9
-:10218000CFFEFCDCB0C7207DA823005D9FD503FBFC
-:10219000DCAB6764C8206BD6CC48DCDE3453C86D3A
-:1021A000CB4C805B73A694DBD84C98DBD699ABB94B
-:1021B0006D9B29E7B67D06F56025EAC34C25B79DE2
-:1021C00033D773DB35B38CDBEE99953CAE67660590
-:1021D000B76B673EC6EDCD33CD629D1A71AE3CFA4A
-:1021E0004065B02BA00F46128A480F3EF32ADB77DA
-:1021F0004DE53B4AA97023D7897CCA34EBC3B1268D
-:1022000061EFBB82824F6E7D78A735F1AB7CFA30EF
-:102210008B6F15D088FE2A587F2EFC80F8E737F4A4
-:10222000BD8D7BD5A8C97286F8E40CF1F37271C23A
-:102230002CCE5CAC321EB571E6C822C49995599C6F
-:1022400039D42CE2B2D4211FC76F5B2471BFECEAF2
-:10225000B6C47FB37E82C813256EF56B849B53E1B1
-:10226000CE6890F27A7B65A07C01E2900F789F4A5D
-:102270005CDC67BD487D7E3326ECBE3DBE0E4E7BEA
-:10228000FA2E01C7FC9AFED93CBF5D28B95C3FEB32
-:102290006D13764113762155D137CC7569975DB0B2
-:1022A000FD2CD2C3611796765976C1D2F3920AE11A
-:1022B0002F4BC82E207D9675D976C1E967151B87EF
-:1022C00074DB38C4B20BDDE23BC4ED0E3F8BECF6A1
-:1022D000430E2E46395ADE950787B03FCFF1730380
-:1022E00055D531FA2D41F82CC4483C4333FA5A23D2
-:1022F0008FDF4969F5AC07279536C8CDAF5CB29E34
-:10230000856DBF63B2DF718FB3F56DE8648F38A759
-:10231000E5874EE2F9CD1C7DEBD2843F42FF73335B
-:102320009DD3AD6F2D8BCD443CCF3E3FD925F0FEE4
-:102330008FD658B81771A511647C9F17377C92F817
-:10234000D7207EA7F118DA9F8EEE644AD159CF3F8D
-:1023500049EBAE6E9F92290F7453D3E8CB541241D0
-:102360003DFD5457C3E5EB6953AB55EFDB592A2EBE
-:102370003B5BED85E4DFC645B61EB8C73D5469F644
-:10238000E6A3C7B3163D06863D3D74E1CF968B9319
-:10239000CA52C63F79ECAD695C117B7B71F8E324CE
-:1023A000FA41E2FB79F0C7817CFC9F0F7F8C77CDEF
-:1023B000E28F31E2534BADC01FCF76C179E39BCBA7
-:1023C000C615B1D34CB7CBC5150F769D1F577CA74B
-:1023D0004BD84D459B66FB11BA4C5CE1B613881F88
-:1023E000FE95E96308BF6BFFDE842F50E6F82FB43B
-:1023F000338FD338C20D7479EC58B03529B11EC46F
-:102400009FA4E7A3E61296A32BA50F88137FD09570
-:10241000D3BF905E5CF4B8C98D9C07B4EB997F0C78
-:1024200084EA283FB2D32FDA2F15848E513BD62F62
-:10243000F2D07F0C2C4E53DE6CCC0B5C3F18940A10
-:102440008C63223FBA9C7F5F037D37527BA6CBAE65
-:10245000CBFF9DA35E1AD6B63DFE6669BEFD88FB26
-:10246000BD948AFF90EF8157689C3FB7E84169208F
-:10247000F6CFD5058CFF00614B538EDD4F75AC1345
-:102480007172A59FEB79322867281F3F4C6BF1FED4
-:102490007AB98E19B0FC212849FDE3BC5F9107B5DC
-:1024A0007FF7B76FF5FA627109793B8FB7E57F5F08
-:1024B00070D4AFD53AF4DDF1BB6E772BAF38A5B54C
-:1024C000E17EC77485EBAE078D4880EB2615227B35
-:1024D000EE5FE489A7F3E8E9B5DDB3F722785F6141
-:1024E0006B5FBE0E11AFCDB7DEFE7EE73DAB82DA8D
-:1024F000B849FEC45FD91727BAF9174524CAABCE2D
-:10250000D2BB5BB2EE69189916A4F7B0A587053562
-:1025100093190FD139BC6D25D1D65F938633344FD3
-:10252000ED24BC41FEA2D2DF9B6FDFD759FB1EF624
-:1025300026E38493862B15AE5F0E57E6F72F25DD35
-:10254000C2FEFA17EDE0F1B048E1FAB37B9CD22D60
-:10255000E4689FDAC7758CA145F7F37DB721FA21AE
-:10256000CD47D1EEFD70E681DDF8FC50FFF6C7DF08
-:10257000F4929C26B8DD77ED7E8DEE711EAAF76889
-:1025800094870BFB337EFA7D6678B5C87396B4E307
-:10259000B8DC7855AE08909D0DADC27972E2D031AD
-:1025A000D002B4EEBE906D1FA7FDC23E0A792AB2DA
-:1025B000C68EAC1275A9917576FE5FF02FFB7E7CFE
-:1025C000BBB82FA7EAC079685197E2D49E4EF7674F
-:1025D000EBC374AE324DD4A30E59F23568E5D9DDA4
-:1025E0007439B4788AFDC9A13553BDE43F429ADFFE
-:1025F000E826B93EEEDCD7DEE66907DE1869386DFD
-:10260000EDDFBD3F21F7CAD36F093B69E1FE90F1D1
-:102610007BC659F63DAEAED5420F8BAD7BF4C5916E
-:10262000B849F3EDBEF6B749AA131D2EB7EF167CD5
-:10263000DE790F03A6191787565B7539F96DBEFF52
-:102640000BB78A7B12F63D6F35A23AF202A5AEFBBC
-:102650005921571FE40DE7BDCFB6F397479F3F952C
-:10266000C3CFCF773BEF835FE8FB3FF6A79F3F8564
-:102670007E6E6CD5F9F5CFE6D3E1FE266E6D39B4EA
-:10268000E5324C47AC9FFFFBB1703C6FBDE5114B91
-:102690004FDCF2EA96D3625F9CFDFEE81AE73CF756
-:1026A000597A7E9F358FBA18CA090F8D86855E8E3E
-:1026B00006A0F7913CE77AAC5BE5F159B977E28285
-:1026C000A2CBC5052B5AADB8A284F56D6C55EB7342
-:1026D0002437EF915EE4D82777DEDCC6054A8FC049
-:1026E000A5CF845589FCBA169C66BC3CEBD72D1C43
-:1026F000E0F6EB7E6FB297F4CF5FA9DA7689ED470B
-:102700006577E01BC920FB0329D70F1ECADCC9F37C
-:10271000865D797388387F87B2B71B984E61DDB2CA
-:102720002FDD8AB887356A42EE3D9A31CFDB336FB1
-:10273000E8E2DF1FD838A292DE1F9CE2DFC7C03D6F
-:1027400090BBFEDE964DFC7B880BF1DDDE17DDCB0A
-:10275000CAD59B4BD58B976DBD084080F4E21CDC3D
-:10276000CB757418ED76F821AE282C601320FEF09E
-:10277000984AA365C7A4ACBE409755DF4E883A3D42
-:102780005198BE33ACCFCAE99604C5D790E1DF1D9E
-:10279000DAF6E51CFC92D74D3E2D49B3B8E96A0C38
-:1027A000DFE9F78C4B690B9A875AF7FE9780C1CF08
-:1027B000AB20CEEDB5D0C76D0D8C727B1D4C725B1E
-:1027C0000B53DCD6C1596E57802ED3222BC1948176
-:1027D000AF5E26B87F2324B96D86C4FB742774B01E
-:1027E0006CDB0AB257EFBBE864D3398FBE332EB42B
-:1027F000E961D3FD2132D20D17E66B2A2CEC6F5B19
-:10280000D314E3D7A2A01DFF0A39B7E7990FC7BABF
-:1028100071979F70D7CAB9727021DC65E3C4FF035A
-:1028200008E97101B048000000000000000000004D
-:102830000000001800000000000000000000004040
-:102840000000000000000000000000280000000060
-:102850000000000000000010000000000000000068
-:102860000000002000000000000000000000001038
-:102870000000000000000000000000080000000050
-:102880000000000000000000000000000000000048
-:102890000000000000000000000000000000000038
-:1028A0000000000000000000000000000000000028
-:1028B0000000000000000000000000000000000018
-:1028C0000000000000000000000000000000000008
-:1028D00000000000000000000000000000000000F8
-:1028E00000000000000000000000000000000000E8
-:1028F00000000000000000000000000000000000D8
-:1029000000000000000000000000000000000000C7
-:1029100000000000000000000000000000000000B7
-:1029200000000000000000000000000000000000A7
-:102930000000000000000000000000000000000097
-:102940000000000000000000000000000000000087
-:102950000000000000000000000000000000000077
-:102960000000000000000000000000000000000067
-:102970000000000000000000000000000000000057
-:102980000000000000000000000000000000000047
-:102990000000000000000000000090000010000097
-:1029A0000000000800009008001000000000000275
-:1029B00000009000001000000000001000009DA822
-:1029C000000000000000000880000000000000007F
-:1029D0000000000080000000000000000000000077
-:1029E000800000000000000000000000000091A036
-:1029F0000000000000000008000093C00001000477
-:102A000000000001000093C8000000000000000268
-:102A1000000093D00000000000000008000093D4E4
-:102A20000000000000000002000094980000000078
-:102A300000000008000093D8000800000000000813
-:102A400000009B3800400000000000400000941887
-:102A50000008000000000008000094580008000072
-:102A600000000008000094A800C8000000000098C2
-:102A700000009638009800000000002800009678BA
-:102A800000980000000000280000C0000540003051
-:102A9000000005400000CB200008000000000001FD
-:102AA0000000CB2100080000000000010000200809
-:102AB00000100000000000100000200000000000D6
-:102AC0000000000800009D600008000000000002F7
-:102AD00000009DA0000000000000000100000000B8
-:102AE00000000000000000000000000000000000E6
-:102AF00000000000000000000000000000000000D6
-:102B000080000000000000000000000080000000C5
-:102B10000000000000000000800000000000000035
-:102B20000000000080000000000000000000000025
-:102B30008000000000000000000000008000000095
-:102B40000000000000000000800000000000000005
-:102B500000000000800000000000000000000000F5
-:102B60008000000000000000000000008000000065
-:102B700000000000000000008000000000000000D5
-:102B800000000000800000000000000000000000C5
-:102B900080000000000000000000000000000000B5
-:102BA0000000000000000000000000000000000025
-:102BB0000000000000000000000000000000000015
-:102BC0000000000000000000000000000000000005
-:102BD0000000000000000000800000000000000075
-:102BE0000000000080000000000000000000000065
-:102BF0008000000000000000000000000000000055
-:102C00000000000000000000800000000000000044
-:102C10000000000080000000000000000000000034
-:102C20008000000000000000000000000000000024
-:102C30000000000000000000000000000000000094
-:102C40000000000000000000000000000000000084
-:102C50000000000000000000000000000000000074
-:102C60000000000000000000000000000000000064
-:102C700000000000000012C800800000000000807A
-:102C80000000000100000000000000000000A000A3
-:102C9000071000000000071000001EC80000000020
-:102CA000000000080000AEC000080000000000089E
-:102CB0000000AE4000080000000000080000AE80E8
-:102CC00000080000000000080000200800100000BC
-:102CD00000000010000020000000000000000008BC
-:102CE0000000A01007100040000000400000AF40AE
-:102CF00000080000000000010000AF4100080000D3
-:102D00000000000100001ED00000000000000001D3
-:102D100000001ED8000000000000000200001EDAC3
-:102D20000000000000000002000012B000080000D7
-:102D3000000000088000000000000000000000000B
-:102D40008000000000000000000000008000000083
-:102D500000000000000000008000000000000000F3
-:102D600000000000800000000000000000000000E3
-:102D70008000000000000000000000008000000053
-:102D800000000000000000008000000000000000C3
-:102D900000000000800000000000000000000000B3
-:102DA0000000000000000000000000000000000023
-:102DB0000000000000000000000000000000000013
-:102DC0000000000000000000000000000000000003
-:102DD0000000000000000000000000008000000073
-:102DE0000000000000000000800000000000000063
-:102DF00000000000000000000000000000000000D3
-:102E000080000000000000000000000080000000C2
-:102E10000000000000000000800000000000000032
-:102E20000000000080000000000000000000000022
-:102E30000000B00000180000000000180000B300FF
-:102E400000400000000000400000B300004000020D
-:102E5000000000010000B30100400002000000007B
-:102E600000008000004000000000004080000000E2
-:102E7000000000000000000000008000000800408A
-:102E8000000000040000800400080040000000046E
-:102E90000000BB0000280000000000280000BC402B
-:102EA00000100000000000100000880000800000FA
-:102EB0000000008000008800000800800000000280
-:102EC00000008C000020000000000020000020080E
-:102ED00000100000000000100000200000000000B2
-:102EE00000000008000011080008000000000008B1
-:102EF000000011680008000000000008000011A890
-:102F00000008000000000008000012700008000027
-:102F10000000000100001271000800000000000124
-:102F200000008D00001000040000000400001320C9
-:102F300000300018000000100000132800300018B6
-:102F400000000002800000000000000000000000FF
-:102F5000800000000000000000000000000011E8F8
-:102F600000000000000000018000000000000000E0
-:102F700000000000800000000000000000000000D1
-:102F80008000000000000000000000008000000041
-:102F900000000000000000008000000000000000B1
-:102FA00000000000800000000000000000000000A1
-:102FB0000000000000000000000000000000000011
-:102FC0000000000000000000000000000000000001
-:102FD00000000000000000000000000000000000F1
-:102FE00080000000000000000000000080000000E1
-:102FF00000000000000000000000000000000000D1
-:103000000000000000008308008000000000008035
-:103010000000000100000000000000000000200887
-:103020000010000000000010000020000000000060
-:103030000000000800008D100008000000000008DB
-:1030400000008D700008000000000008000084509F
-:10305000046000280000046000008EA0000800004A
-:103060000000000100008EA1000800000000000127
-:1030700000008408000800000000000800008448E8
-:10308000000000000000000100008DF400080000B6
-:103090000000000200008DF60008000000000002A1
-:1030A00000008E04001000000000000480000000FA
-:1030B0000000000000000000800000000000000090
-:1030C0000000000080000000000000000000000080
-:1030D00000000000000000000000000000000000F0
-:1030E00000000000000000000000000000000000E0
-:1030F00000000000000000000000000000000000D0
-:1031000080000000000000000000000080000000BF
-:1031100000000000000000000000000000000000AF
-:10312000000000008000000000000000000000001F
-:10313000800000000000000000000000800000008F
-:1031400000000000000000008000000000000000FF
-:1031500000000000000030000040000000000008F7
-:1031600000003008004000000000002800003390FC
-:1031700001C0001000000008000032000020000024
-:1031800000000020000037200000000000000008C0
-:103190000000102006200038000000080000A000F9
-:1031A000000000000000200000003EA90000000018
-:1031B0000000000100003EC8000000000000000206
-:1031C00000001C4000E00008000000088000000033
-:1031D00000000000000000000000400000080000A7
-:1031E0000000000100004001000800000000000194
-:1031F00000004040000800040000000200004060A1
-:103200000008000400000004000040000008000066
-:10321000000000040000400400080000000000045A
-:10322000000040400000000000000008000040488E
-:103230000000000000000008000080000000000006
-:1032400000000010000050400001000400000001D8
-:1032500000005000000000000000002000005008A6
-:1032600000100000000000040000500C00100000DE
-:1032700000000001000052C7000000000000000133
-:10328000000052C6000000000000000100003000F5
-:103290000030001800000004000030040030001866
-:1032A0000000000400003008003000180000000298
-:1032B0000000300A00300018000000020000300C4E
-:1032C00000300018000000010000300D0030001830
-:1032D000000000010000300E003000180000000166
-:1032E000000030100030001800000004000030140E
-:1032F00000300018000000040000500001000080B1
-:1033000000080004000050040100008000080004D0
-:103310000000000A000000000000000000005068EB
-:1033200001000080000000010000506901000080E1
-:10333000000000010000506C01000080000000024D
-:103340000000506E0100008000000002000050707C
-:1033500001000080000000040000507401000080A3
-:103360000000000400005066010000800000000220
-:103370000000506401000080000000010000506067
-:103380000100008000000002000050620100008087
-:103390000000000200005050010000800000000406
-:1033A000000050540100008000000004000050584C
-:1033B00001000080000000040000505C010000805B
-:1033C000000000040000507C0100008000000001AB
-:1033D0000000507D01000080000000010000401846
-:1033E00000100000000000040000409000100000E9
-:1033F00000000004000040980010000000000004DD
-:103400000000411000000000000000020000411216
-:103410000000000000000002000041140000000055
-:103420000000000200004116000000000000000241
-:103430000000604000080000000000020000604240
-:1034400000080000000000020000604400080000C6
-:103450000000000400006080000800000000000878
-:10346000000060C00040000800000008000060008C
-:1034700000080000000000020000600200080000D8
-:1034800000000001000060040008000000000002CD
-:103490000000634000080000000000080000638096
-:1034A0000008000000000004000063840008000021
-:1034B00000000001000063C00008000000000002DE
-:1034C000000063C400080000000000020000640067
-:1034D0000008000000000004000070000010000060
-:1034E0000000000400007004001000000000000450
-:1034F00000007008001000000000000400007000D0
-:103500000008000000000002000070020008000037
-:10351000000000010000700400080000000000022C
-:10352000000070400008000000000002000070442D
-:1035300000080000000000020000704600080000C3
-:1035400000000002000076480008000000000008AB
-:10355000000070800008000000000002000070847D
-:10356000000800000000000200007688000800004B
-:10357000000000080000804000080000000000017A
-:1035800000008041000800000000000100008042AF
-:103590000008000000000001000080430008000057
-:1035A0000000000100008000000800000000000290
-:1035B00000008002000800000000000100008004FC
-:1035C0000008000000000002000080C000080000A9
-:1035D00000000002000080C200080000000000029D
-:1035E000000080C40008000000000002000080808D
-:1035F00000080000000000010000808100080000B9
-:1036000000000001000080820008000000000001AE
-:10361000000080830008000000000001000080849A
-:103620000008000000000001000080850008000084
-:10363000000000010000808600080000000000017A
-:1036400000006000000800000000000200006002AE
-:1036500000080000000000010000600400080000F5
-:10366000000000020000604200C0001800000002DC
-:103670000000604000C00018000000020000604C24
-:1036800000C00018000000080000604400C00018DE
-:10369000000000080000605700C000180000000192
-:1036A0000000605400C000180000000200006056D6
-:1036B00000C0001800000001000066400008000083
-:1036C00000000008000066800008000000000008FC
-:1036D000000066C000080000000000080000D94299
-:1036E00000180000000000020000DE4000000000A2
-:1036F000000000000000E0000000000000000004E6
-:103700000000DD4000000000000000040000DD4477
-:1037100000000000000000040000DD480000000080
-:10372000000000040000DD4C000000000000000468
-:103730000000DD5000000000000000040000DD5427
-:1037400000000000000000040000DD580000000040
-:10375000000000040000DD40000000000000002028
-:103760000000DA0000000000000000040000DA00A1
-:1037700000000000000000680000BB6000000000C6
-:10378000000000000000D000000000000000000465
-:103790000000B0C000000000000000040000B0C441
-:1037A00000000000000000040000B0C8000000009D
-:1037B000000000040000B0C0000000000000001085
-:1037C0000000D6B000000000000000040000D6B4E5
-:1037D00000000000000000040000D6B80000000057
-:1037E000000000040000D6BC00000000000000043F
-:1037F0000000D6B000000000000000100000D34818
-:1038000000000000000000080000D3580000000085
-:103810000000008000000010000000000000000018
-:103820000000D35800000000000000080000000065
-:0838300006020900000000007F
-:00000001FF
diff --git a/firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex b/firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex
deleted file mode 100644
index 8405e719e7fb..000000000000
--- a/firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex
+++ /dev/null
@@ -1,15473 +0,0 @@
-:1000000000005310000000680000070C000053803F
-:100010000000318000005A90000000B000008C18F1
-:100020000000C13400008CD0000000D800014E0850
-:100030000000F26400014EE800000074000241502C
-:1000400000005250000241C8000000B40002942099
-:10005000000121EC000294D800000FFC0003B6C898
-:10006000000000040003C6C8020400480000000F9E
-:1000700002040054000000450204005C0000000679
-:100080000204007000000004020400780000000078
-:100090000204007C121700000204008022170000F6
-:1000A00002040084321700000604008800000005E6
-:1000B0000204009C12150000020400A0221500009A
-:1000C000020400A432150000060400A80000000489
-:1000D000020400B802100000020400BC001000007E
-:1000E000020400C010100000020400C42010000030
-:1000F000020400C830100000020400CC40100000D0
-:10010000060400D000000003020400DC0010000020
-:10011000020400E012140000020400E422140000B3
-:10012000020400E832140000020400EC4214000053
-:10013000060400F000000003010401240000000098
-:1001400001040128000000000104012C000000004F
-:100150000104013000000000020401D00000890603
-:1001600002040258000000360204025C000000365F
-:10017000020402600810000002040264081000007B
-:1001800002040004000000FF02040008000000FF59
-:100190000204000C000000FF02040010000000FF39
-:1001A000020400140000007F02040018000000FF99
-:1001B0000204001C000000FF02040020000000FFF9
-:1001C000020400240000003E020400280000000099
-:1001D0000204002C0000003F020400300000003F39
-:1001E000020400340000003F020400380000003F19
-:1001F0000204003C0000003F020400400000003FF9
-:10020000020400440000003F020404CC000000018E
-:1002100002042008000002110204200C0000020069
-:10022000020420100000020402042014000002193D
-:100230000204201C0000FFFF020420200000FFFF3A
-:10024000020420240000FFFF020420280000FFFF1A
-:1002500002042038000000200604203C0000000FAB
-:1002600002042078000000210604207C0000000F1A
-:10027000020420B800000001060420BC0000000FAA
-:10028000020420F800000001060420FC0000003FEA
-:10029000020421F800000001060421FC0000000F08
-:1002A0000204223807FFFFFF0204223C0000007F07
-:1002B0000204224007FFFFFF020422440000003F27
-:1002C00001042248000000000104224C000000004C
-:1002D000010422500000000001042254000000002C
-:1002E00001042258000000000104225C000000000C
-:1002F00001042260000000000104226400000000EC
-:1003000001042268000000000104226C00000000CB
-:1003100001042270000000000104227400000000AB
-:1003200001042278000000000104227C000000008B
-:10033000020422C00000FFFF020422C40000FFFFED
-:10034000020422C80000FFFF020422CC0000FFFFCD
-:100350000C042000000003E80A0420000000000153
-:100360000B042000000000030605400000000D0003
-:100370000205004400000020020500480000003291
-:1003800002050090021500200205009402150020CD
-:1003900002050098000000300205009C08100000D3
-:1003A000020500A000000036020500A40000003095
-:1003B000020500A800000031020500B000000004A2
-:1003C000020500B400000005020500C000000000A6
-:1003D000020500C400000004020500D40000000172
-:1003E00002050114000000010205011C00000001CB
-:1003F00002050120000000020205020400000001C5
-:100400000205020C0000004002050210000000403E
-:100410000205021C00000020020502200000001C52
-:100420000205022400000020060502400000000A28
-:1004300004050280002000000205005000000007B3
-:1004400002050054000000070205005800000000EB
-:100450000205005C000000080205006000000001C9
-:100460000605006400000003020500D80000000635
-:100470000205000400000001020500080000000160
-:100480000205000C00000001020500100000000140
-:100490000205001400000001020500180000000120
-:1004A0000205001C00000001020500200000000100
-:1004B00002050024000000010205002800000001E0
-:1004C0000205002C000000010205003000000001C0
-:1004D00002050034000000010205003800000001A0
-:1004E0000205003C00000001020500400000000180
-:1004F000020500E00000000D020500E80000000019
-:10050000020500F000000000020500F800000000F5
-:10051000020500E40000002D020500EC00000020B0
-:10052000020500F400000020020500FC000000208D
-:10053000020500E00000001D020500E800000010B8
-:10054000020500F000000010020500F80000001095
-:10055000020500E40000003D020500EC0000003050
-:10056000020500F400000030020500FC000000302D
-:10057000020500E00000004D020500E80000004018
-:10058000020500F000000040020500F800000040F5
-:10059000020500E40000006D020500EC00000060B0
-:1005A000020500F400000060020500FC000000608D
-:1005B000020500E00000005D020500E800000050B8
-:1005C000020500F000000050020500F80000005095
-:1005D000020500E40000007D020500EC0000007050
-:1005E000020500F400000070020500FC000000702D
-:1005F0000406100002000020020600DC00000001DA
-:100600000406020000030220020600DC00000000D5
-:100610000718040000AD0000081807D800050223E1
-:10062000071C000029920000071C8000312A0A657F
-:10063000071D000034A216B0071D80002E7A23D9B2
-:10064000071E000003502F78081E07F03F02022506
-:10065000021800BC0000003001180000000000007B
-:10066000011800040000000001180008000000004C
-:100670000118000C0000000001180010000000002C
-:100680000118001400000000021800200000000102
-:1006900002180024000000020218002800000003D5
-:1006A0000218002C000000000218003000000004B6
-:1006B0000218003400000001021800380000000099
-:1006C0000218003C00000001021800400000000475
-:1006D0000218004400000000021800480000000159
-:1006E0000218004C00000003021800500000000037
-:1006F0000218005400000001021800580000000415
-:100700000218005C000000000218006000000001F8
-:1007100002180064000000030218006800000000D6
-:100720000218006C000000010218007000000004B4
-:100730000218007400000000021800780000000495
-:100740000218007C00000003061800800000000270
-:10075000021800A400007FFF021800A8000003FF99
-:1007600002180224000000000218023400000000F9
-:100770000218024C00000000021802E4000000FF12
-:100780000618100000000400021B8BC000000001CE
-:10079000021B800000000034021B80400000001893
-:1007A000021B80800000000C021B80C000000020A3
-:1007B0000C1B8300000864700A1B830000000157B3
-:1007C0000B1B83000000055F0A1B83400000000034
-:1007D0000C1B8340000002260B1B8340000000011D
-:1007E000021B838000086470021B83C00000022685
-:1007F000021B1480000000010A1B1480000000008E
-:10080000021B944000000001061B944800000002F7
-:10081000061A1000000002B3041A1ACC00010227C5
-:10082000061A1AD000000008061A2008000000C8A6
-:10083000061A200000000002041A1BF8009002288B
-:10084000061A371800000004061A371000000002CC
-:10085000061A500000000002061A500800000004AA
-:10086000061A501800000004061A50280000000460
-:10087000061A503800000004061A50480000000410
-:10088000061A505800000004061A506800000004C0
-:10089000061A507800000002041A52C0000202B882
-:1008A000061A405000000006041A4068000202BA0E
-:1008B000041A4040000402BC041A8000000102C077
-:1008C000061A800400000003041A8010000102C10F
-:1008D000061A801400000003041A8020000102C2DE
-:1008E000061A802400000003041A8030000102C3AD
-:1008F000061A803400000003041A8040000102C47C
-:10090000061A804400000003041A8050000102C54A
-:10091000061A805400000003041A8060000102C619
-:10092000061A806400000003041A8070000102C7E8
-:10093000061A807400000003041A8080000102C8B7
-:10094000061A808400000003041A8090000102C986
-:10095000061A809400000003041A80A0000102CA55
-:10096000061A80A400000003041A80B0000102CB24
-:10097000061A80B400000003041A80C0000102CCF3
-:10098000061A80C400000003041A80D0000102CDC2
-:10099000061A80D400000003041A80E0000102CE91
-:1009A000061A80E400000003041A80F0000102CF60
-:1009B000061A80F400000003041A8100000102D02E
-:1009C000061A810400000003041A8110000102D1FC
-:1009D000061A811400000003041A8120000102D2CB
-:1009E000061A812400000003041A8130000102D39A
-:1009F000061A813400000003041A8140000102D469
-:100A0000061A814400000003041A8150000102D537
-:100A1000061A815400000003041A8160000102D606
-:100A2000061A816400000003041A8170000102D7D5
-:100A3000061A817400000003041A8180000102D8A4
-:100A4000061A818400000003041A8190000102D973
-:100A5000061A819400000003041A81A0000102DA42
-:100A6000061A81A400000003041A81B0000102DB11
-:100A7000061A81B400000003041A81C0000102DCE0
-:100A8000061A81C400000003041A81D0000102DDAF
-:100A9000061A81D400000003041A81E0000102DE7E
-:100AA000061A81E400000003041A81F0000102DF4D
-:100AB000061A81F400000003041A8200000102E01B
-:100AC000061A820400000003041A8210000102E1E9
-:100AD000061A821400000003041A8220000102E2B8
-:100AE000061A822400000003041A8230000102E387
-:100AF000061A823400000003041A8240000102E456
-:100B0000061A824400000003041A8250000102E524
-:100B1000061A825400000003041A8260000102E6F3
-:100B2000061A826400000003041A8270000102E7C2
-:100B3000061A827400000003041A8280000102E891
-:100B4000061A828400000003041A8290000102E960
-:100B5000061A829400000003041A82A0000102EA2F
-:100B6000061A82A400000003041A82B0000102EBFE
-:100B7000061A82B400000003041A82C0000102ECCD
-:100B8000061A82C400000003041A82D0000102ED9C
-:100B9000061A82D400000003041A82E0000102EE6B
-:100BA000061A82E400000003041A82F0000102EF3A
-:100BB000061A82F400000003041A8300000102F008
-:100BC000061A830400000003041A8310000102F1D6
-:100BD000061A831400000003041A8320000102F2A5
-:100BE000061A832400000003041A8330000102F374
-:100BF000061A833400000003041A8340000102F443
-:100C0000061A834400000003041A8350000102F511
-:100C1000061A835400000003041A8360000102F6E0
-:100C2000061A836400000003041A8370000102F7AF
-:100C3000061A837400000003041A8380000102F87E
-:100C4000061A838400000003041A8390000102F94D
-:100C5000061A839400000003041A83A0000102FA1C
-:100C6000061A83A400000003041A83B0000102FBEB
-:100C7000061A83B400000003041A83C0000102FCBA
-:100C8000061A83C400000003041A83D0000102FD89
-:100C9000061A83D400000003041A83E0000102FE58
-:100CA000061A83E400000003041A83F0000102FF27
-:100CB000061A83F400000003041A840000010300F4
-:100CC000061A840400000003041A841000010301C2
-:100CD000061A841400000003041A84200001030291
-:100CE000061A842400000003041A84300001030360
-:100CF000061A843400000003041A8440000103042F
-:100D0000061A844400000003041A845000010305FD
-:100D1000061A845400000003041A846000010306CC
-:100D2000061A846400000003041A8470000103079B
-:100D3000061A847400000003041A8480000103086A
-:100D4000061A848400000003041A84900001030939
-:100D5000061A849400000003041A84A00001030A08
-:100D6000061A84A400000003041A84B00001030BD7
-:100D7000061A84B400000003041A84C00001030CA6
-:100D8000061A84C400000003041A84D00001030D75
-:100D9000061A84D400000003041A84E00001030E44
-:100DA000061A84E400000003041A84F00001030F13
-:100DB000061A84F400000003041A850000010310E1
-:100DC000061A850400000003041A851000010311AF
-:100DD000061A851400000003041A8520000103127E
-:100DE000061A852400000003041A8530000103134D
-:100DF000061A853400000003041A8540000103141C
-:100E0000061A854400000003041A855000010315EA
-:100E1000061A855400000003041A856000010316B9
-:100E2000061A856400000003041A85700001031788
-:100E3000061A857400000003041A85800001031857
-:100E4000061A858400000003041A85900001031926
-:100E5000061A859400000003041A85A00001031AF5
-:100E6000061A85A400000003041A85B00001031BC4
-:100E7000061A85B400000003041A85C00001031C93
-:100E8000061A85C400000003041A85D00001031D62
-:100E9000061A85D400000003041A85E00001031E31
-:100EA000061A85E400000003041A85F00001031F00
-:100EB000061A85F400000003041A860000010320CE
-:100EC000061A860400000003041A8610000103219C
-:100ED000061A861400000003041A8620000103226B
-:100EE000061A862400000003041A8630000103233A
-:100EF000061A863400000003041A86400001032409
-:100F0000061A864400000003041A865000010325D7
-:100F1000061A865400000003041A866000010326A6
-:100F2000061A866400000003041A86700001032775
-:100F3000061A867400000003041A86800001032844
-:100F4000061A868400000003041A86900001032913
-:100F5000061A869400000003041A86A00001032AE2
-:100F6000061A86A400000003041A86B00001032BB1
-:100F7000061A86B400000003041A86C00001032C80
-:100F8000061A86C400000003041A86D00001032D4F
-:100F9000061A86D400000003041A86E00001032E1E
-:100FA000061A86E400000003041A86F00001032FED
-:100FB000061A86F400000003041A870000010330BB
-:100FC000061A870400000003041A87100001033189
-:100FD000061A871400000003041A87200001033258
-:100FE000061A872400000003041A87300001033327
-:100FF000061A873400000003041A874000010334F6
-:10100000061A874400000003041A875000010335C4
-:10101000061A875400000003041A87600001033693
-:10102000061A876400000003041A87700001033762
-:10103000061A877400000003041A87800001033831
-:10104000061A878400000003041A87900001033900
-:10105000061A879400000003041A87A00001033ACF
-:10106000061A87A400000003041A87B00001033B9E
-:10107000061A87B400000003041A87C00001033C6D
-:10108000061A87C400000003041A87D00001033D3C
-:10109000061A87D400000003041A87E00001033E0B
-:1010A000061A87E400000003041A87F00001033FDA
-:1010B000061A87F400000003041A880000010340A8
-:1010C000061A880400000003041A88100001034176
-:1010D000061A881400000003041A88200001034245
-:1010E000061A882400000003041A88300001034314
-:1010F000061A883400000003041A884000010344E3
-:10110000061A884400000003041A885000010345B1
-:10111000061A885400000003041A88600001034680
-:10112000061A886400000003041A8870000103474F
-:10113000061A887400000003041A8880000103481E
-:10114000061A888400000003041A889000010349ED
-:10115000061A889400000003041A88A00001034ABC
-:10116000061A88A400000003041A88B00001034B8B
-:10117000061A88B400000003041A88C00001034C5A
-:10118000061A88C400000003041A88D00001034D29
-:10119000061A88D400000003041A88E00001034EF8
-:1011A000061A88E400000003041A88F00001034FC7
-:1011B000061A88F400000003041A89000001035095
-:1011C000061A890400000003041A89100001035163
-:1011D000061A891400000003041A89200001035232
-:1011E000061A892400000003041A89300001035301
-:1011F000061A893400000003041A894000010354D0
-:10120000061A894400000003041A8950000103559E
-:10121000061A895400000003041A8960000103566D
-:10122000061A896400000003041A8970000103573C
-:10123000061A897400000003041A8980000103580B
-:10124000061A898400000003041A899000010359DA
-:10125000061A899400000003041A89A00001035AA9
-:10126000061A89A400000003041A89B00001035B78
-:10127000061A89B400000003041A89C00001035C47
-:10128000061A89C400000003041A89D00001035D16
-:10129000061A89D400000003041A89E00001035EE5
-:1012A000061A89E400000003041A89F00001035FB4
-:1012B000061A89F400000003041A8A000001036082
-:1012C000061A8A0400000003041A8A100001036150
-:1012D000061A8A1400000003041A8A20000103621F
-:1012E000061A8A2400000003041A8A3000010363EE
-:1012F000061A8A3400000003041A8A4000010364BD
-:10130000061A8A4400000003041A8A50000103658B
-:10131000061A8A5400000003041A8A60000103665A
-:10132000061A8A6400000003041A8A700001036729
-:10133000061A8A7400000003041A8A8000010368F8
-:10134000061A8A8400000003041A8A9000010369C7
-:10135000061A8A9400000003041A8AA00001036A96
-:10136000061A8AA400000003041A8AB00001036B65
-:10137000061A8AB400000003041A8AC00001036C34
-:10138000061A8AC400000003041A8AD00001036D03
-:10139000061A8AD400000003041A8AE00001036ED2
-:1013A000061A8AE400000003041A8AF00001036FA1
-:1013B000061A8AF400000003041A8B00000103706F
-:1013C000061A8B0400000003041A8B10000103713D
-:1013D000061A8B1400000003041A8B20000103720C
-:1013E000061A8B2400000003041A8B3000010373DB
-:1013F000061A8B3400000003041A8B4000010374AA
-:10140000061A8B4400000003041A8B500001037578
-:10141000061A8B5400000003041A8B600001037647
-:10142000061A8B6400000003041A8B700001037716
-:10143000061A8B7400000003041A8B8000010378E5
-:10144000061A8B8400000003041A8B9000010379B4
-:10145000061A8B9400000003041A8BA00001037A83
-:10146000061A8BA400000003041A8BB00001037B52
-:10147000061A8BB400000003041A8BC00001037C21
-:10148000061A8BC400000003041A8BD00001037DF0
-:10149000061A8BD400000003041A8BE00001037EBF
-:1014A000061A8BE400000003041A8BF00001037F8E
-:1014B000061A8BF400000003041A8C00000103805C
-:1014C000061A8C0400000003041A8C10000103812A
-:1014D000061A8C1400000003041A8C2000010382F9
-:1014E000061A8C2400000003041A8C3000010383C8
-:1014F000061A8C3400000003041A8C400001038497
-:10150000061A8C4400000003041A8C500001038565
-:10151000061A8C5400000003041A8C600001038634
-:10152000061A8C6400000003041A8C700001038703
-:10153000061A8C7400000003041A8C8000010388D2
-:10154000061A8C8400000003041A8C9000010389A1
-:10155000061A8C9400000003041A8CA00001038A70
-:10156000061A8CA400000003041A8CB00001038B3F
-:10157000061A8CB400000003041A8CC00001038C0E
-:10158000061A8CC400000003041A8CD00001038DDD
-:10159000061A8CD400000003041A8CE00001038EAC
-:1015A000061A8CE400000003041A8CF00001038F7B
-:1015B000061A8CF400000003041A8D000001039049
-:1015C000061A8D0400000003041A8D100001039117
-:1015D000061A8D1400000003041A8D2000010392E6
-:1015E000061A8D2400000003041A8D3000010393B5
-:1015F000061A8D3400000003041A8D400001039484
-:10160000061A8D4400000003041A8D500001039552
-:10161000061A8D5400000003041A8D600001039621
-:10162000061A8D6400000003041A8D7000010397F0
-:10163000061A8D7400000003041A8D8000010398BF
-:10164000061A8D8400000003041A8D90000103998E
-:10165000061A8D9400000003041A8DA00001039A5D
-:10166000061A8DA400000003041A8DB00001039B2C
-:10167000061A8DB400000003041A8DC00001039CFB
-:10168000061A8DC400000003041A8DD00001039DCA
-:10169000061A8DD400000003041A8DE00001039E99
-:1016A000061A8DE400000003041A8DF00001039F68
-:1016B000061A8DF400000003041A8E00000103A036
-:1016C000061A8E0400000003041A8E10000103A104
-:1016D000061A8E1400000003041A8E20000103A2D3
-:1016E000061A8E2400000003041A8E30000103A3A2
-:1016F000061A8E3400000003041A8E40000103A471
-:10170000061A8E4400000003041A8E50000103A53F
-:10171000061A8E5400000003041A8E60000103A60E
-:10172000061A8E6400000003041A8E70000103A7DD
-:10173000061A8E7400000003041A8E80000103A8AC
-:10174000061A8E8400000003041A8E90000103A97B
-:10175000061A8E9400000003041A8EA0000103AA4A
-:10176000061A8EA400000003041A8EB0000103AB19
-:10177000061A8EB400000003041A8EC0000103ACE8
-:10178000061A8EC400000003041A8ED0000103ADB7
-:10179000061A8ED400000003041A8EE0000103AE86
-:1017A000061A8EE400000003041A8EF0000103AF55
-:1017B000061A8EF400000003041A8F00000103B023
-:1017C000061A8F0400000003041A8F10000103B1F1
-:1017D000061A8F1400000003041A8F20000103B2C0
-:1017E000061A8F2400000003041A8F30000103B38F
-:1017F000061A8F3400000003041A8F40000103B45E
-:10180000061A8F4400000003041A8F50000103B52C
-:10181000061A8F5400000003041A8F60000103B6FB
-:10182000061A8F6400000003041A8F70000103B7CA
-:10183000061A8F7400000003041A8F80000103B899
-:10184000061A8F8400000003041A8F90000103B968
-:10185000061A8F9400000003041A8FA0000103BA37
-:10186000061A8FA400000003041A8FB0000103BB06
-:10187000061A8FB400000003041A8FC0000103BCD5
-:10188000061A8FC400000003041A8FD0000103BDA4
-:10189000061A8FD400000003041A8FE0000103BE73
-:1018A000061A8FE400000007041A62C0002003BF7C
-:1018B000061A1AF000000042061AAF0000000008E5
-:1018C000061AE00000000540061AD0000000007271
-:1018D000061AD24800000010061AD6B000000020F8
-:1018E000061AD47000000090061AD46800000002A6
-:1018F000061AA000000001C4061A30000000001003
-:10190000061A308000000010061A31000000001096
-:10191000061A318000000010061A33000000001281
-:10192000061A339000000070061AD4580000000216
-:10193000061AD34800000002061AD35800000020FF
-:10194000061AA710000001C4061A3040000000105B
-:10195000061A30C000000010061A314000000010C6
-:10196000061A31C000000010061A334800000012A9
-:10197000061A355000000070061AD46000000002FC
-:10198000061AD35000000002061AD3D80000002027
-:10199000021AAE2000000000061A500000000002EB
-:1019A000061A508000000012041A4000000203DFF3
-:1019B000041A63C0000203E1061A7000000000046C
-:1019C000061A320000000008021AAE2400000000CF
-:1019D000061A501000000002061A50C8000000123B
-:1019E000041A4008000203E3041A63C8000203E576
-:1019F000061A701000000004061A322000000008C9
-:101A0000021AAE2800000000061A50200000000252
-:101A1000061A511000000012041A4010000203E7D9
-:101A2000041A63D0000203E9061A702000000004C3
-:101A3000061A324000000008021AAE2C0000000016
-:101A4000061A503000000002061A51580000001219
-:101A5000041A4018000203EB041A63D8000203EDD5
-:101A6000061A703000000004061A326000000008F8
-:101A7000021AAE3000000000061A504000000002BA
-:101A8000061A51A000000012041A4020000203EFC1
-:101A9000041A63E0000203F1061A7040000000041B
-:101AA000061A328000000008021AAE34000000005E
-:101AB000061A505000000002061A51E800000012F9
-:101AC000041A4028000203F3041A63E8000203F535
-:101AD000061A705000000004061A32A00000000828
-:101AE000021AAE3800000000061A50600000000222
-:101AF000061A523000000012041A4030000203F7A8
-:101B0000041A63F0000203F9061A70600000000472
-:101B1000061A32C000000008021AAE3C00000000A5
-:101B2000061A507000000002061A527800000012D7
-:101B3000041A4038000203FB041A63F8000203FD94
-:101B4000061A707000000004061A32E00000000857
-:101B50000200A2A4000002090200A270000000001E
-:101B60000200A274000000000200A2700000000049
-:101B70000200A274000000000200A2700000000039
-:101B80000200A274000000000200A2700000000029
-:101B90000200A27400000000020100B40000000175
-:101BA000020100B800000001020100CC00000001A9
-:101BB000020100D000000001020100DC0000000171
-:101BC0000201010000000001020101040000000107
-:101BD0000201007C003000000201008400000028A7
-:101BE0000201008C0000000002010130000000042E
-:101BF0000201025C00000001020103280000000055
-:101C0000020160580000FFFF020160700000000741
-:101C10000201055400000030020100C40000000170
-:101C2000020100F800000001020100F000000001C4
-:101C3000020100800030000002010088000000283E
-:101C400002010090000000000201013400000004C5
-:101C5000020102DC000000010201032C0000000070
-:101C60000201605C0000FFFF0201607400000007D9
-:101C70000201056400000030020100C800000001FC
-:101C8000020100FC00000001020100F4000000015C
-:101C9000020C100000000028020C200800000211B5
-:101CA000020C200C00000200020C201000000204B4
-:101CB000020C201C0000FFFF020C20200000FFFF90
-:101CC000020C20240000FFFF020C20280000FFFF70
-:101CD000020C203800000000020C203C00000037FD
-:101CE000020C204000000021020C204400000020D3
-:101CF000060C20480000001D020C20BC0000000162
-:101D0000060C20C00000003F020C21BC00000001B6
-:101D1000020C21C000000001020C21C400000001DF
-:101D2000060C21C80000001C020C223807FFFFFF30
-:101D3000020C223C0000007F020C224007FFFFFF44
-:101D4000020C22440000003F010C22480000000069
-:101D5000010C224C00000000010C22500000000089
-:101D6000010C225400000000010C22580000000069
-:101D7000010C225C00000000010C22600000000049
-:101D8000010C226400000000010C22680000000029
-:101D9000010C226C00000000010C22700000000009
-:101DA000010C227400000000010C227800000000E9
-:101DB000010C227C00000000020C22D80000FFFF72
-:101DC000020C22DC0000FFFF020C22E00000FFFFFB
-:101DD000020C22E40000FFFF0C0C2000000003E8CE
-:101DE0000A0C2000000000010B0C20000000000382
-:101DF000020C400800001011020C400C0000100002
-:101E0000020C401000001004020C401400001021CD
-:101E1000020C401C0000FFFF020C40200000FFFFEE
-:101E2000020C40240000FFFF020C40280000FFFFCE
-:101E3000020C403800000046020C403C0000000C40
-:101E4000060C404000000002020C40480000001850
-:101E5000020C404C000000F0060C40500000001F37
-:101E6000020C40CC00000001060C40D00000003AFB
-:101E7000020C41B800000001060C41BC0000000348
-:101E8000020C41C800000001020C41CC000000011E
-:101E9000060C41D00000001A020C423807FFFFFF79
-:101EA000020C423C0000007F020C424007FFFFFF93
-:101EB000020C42440000003F010C424800000000B8
-:101EC000010C424C00000000010C425000000000D8
-:101ED000010C425400000000010C425800000000B8
-:101EE000010C425C00000000010C42600000000098
-:101EF000010C426400000000010C42680000000078
-:101F0000010C426C00000000010C42700000000057
-:101F1000010C427400000000010C42780000000037
-:101F2000010C427C00000000010C42800000000017
-:101F3000020C42D80000FFFF020C42DC0000FFFF51
-:101F4000020C42E00000FFFF020C42E40000FFFF31
-:101F50000C0C4000000003E80A0C400000000001E7
-:101F60000B0C400000000003060D400000000A00BA
-:101F7000020D004400000032020D008C021500200A
-:101F8000020D009002150020020D009408100000C0
-:101F9000020D009800000036020D00A000000000B5
-:101FA000020D00A400000004020D00A800000004BF
-:101FB000060D00AC00000002020D00B80000000297
-:101FC000020D00C000000001020D00C80000000268
-:101FD000020D00CC00000002020D015C00000001B7
-:101FE000020D016400000001020D01680000000202
-:101FF000020D020400000001020D020C000000208E
-:10200000020D021000000040020D0214000000400A
-:10201000020D022000000003020D0224000000183F
-:10202000060D028000000012040D0300001803FFDB
-:10203000060D03600000000C020D004C00000001C2
-:10204000020D005000000002020D005400000000CC
-:10205000020D005800000008060D005C000000049E
-:10206000020D00C400000004020D00040000000185
-:10207000020D000800000001020D000C000000012C
-:10208000020D001000000001020D0014000000010C
-:10209000020D001800000001020D001C00000001EC
-:1020A000020D002000000001020D002400000001CC
-:1020B000020D002800000001020D002C00000001AC
-:1020C000020D003000000001020D0034000000018C
-:1020D000020D003800000001020D003C000000016C
-:1020E000020D011400000009020D011C0000000A8D
-:1020F000020D012400000000020D012C0000000070
-:10210000020D013400000000020D013C0000000B34
-:10211000020D014400000000020D0118000000291A
-:10212000020D01200000002A020D012800000020FD
-:10213000020D013000000020020D013800000020D7
-:10214000020D01400000002B020D0148000000209C
-:10215000020D011400000019020D011C0000001AFC
-:10216000020D012400000010020D012C00000010DF
-:10217000020D013400000010020D013C0000001BA4
-:10218000020D014400000010020D0118000000398A
-:10219000020D01200000003A020D0128000000306D
-:1021A000020D013000000030020D01380000003047
-:1021B000020D01400000003B020D0148000000300C
-:1021C000020D011400000049020D011C0000004A2C
-:1021D000020D012400000040020D012C000000400F
-:1021E000020D013400000040020D013C0000004BD4
-:1021F000020D014400000040020D011800000069BA
-:10220000020D01200000006A020D0128000000609C
-:10221000020D013000000060020D01380000006076
-:10222000020D01400000006B020D0148000000603B
-:10223000020D011400000059020D011C0000005A9B
-:10224000020D012400000050020D012C000000507E
-:10225000020D013400000050020D013C0000005B43
-:10226000020D014400000050020D01180000007929
-:10227000020D01200000007A020D0128000000700C
-:10228000020D013000000070020D013800000070E6
-:10229000020D01400000007B020D014800000070AB
-:1022A000060E200000000800020E004C0000003264
-:1022B000020E009402150020020E00980215002064
-:1022C000020E009C00000030020E00A0081000006A
-:1022D000020E00A400000036020E00A8000000302C
-:1022E000020E00AC00000031020E00B4000000033A
-:1022F000020E00B800000000020E00C40000000042
-:10230000020E00CC00000006020E00D80000000102
-:10231000020E014400000001020E014C0000000109
-:10232000020E015000000002020E02040000000133
-:10233000020E020C00000040020E021000000040DD
-:10234000020E021C00000004020E02200000002009
-:10235000020E02240000000E020E02280000001BE4
-:10236000060E030000000012040E0280001B04177A
-:10237000060E02EC00000005020E00540000000CE6
-:10238000020E00580000000C020E005C000000006D
-:10239000020E006000000010020E00640000001039
-:1023A000060E006800000003020E00DC00000003BF
-:1023B000020E000400000001020E000800000001EF
-:1023C000020E000C00000001020E001000000001CF
-:1023D000020E001400000001020E001800000001AF
-:1023E000020E001C00000001020E0020000000018F
-:1023F000020E002400000001020E0028000000016F
-:10240000020E002C00000001020E0030000000014E
-:10241000020E003400000001020E0038000000012E
-:10242000020E003C00000001020E0040000000010E
-:10243000020E004400000001020E01100000000F17
-:10244000020E011800000000020E01200000000032
-:10245000020E012800000000020E01140000002FEF
-:10246000020E011C00000020020E012400000020CA
-:10247000020E012C00000020020E01100000001FBF
-:10248000020E011800000010020E012000000010D2
-:10249000020E012800000010020E01140000003F8F
-:1024A000020E011C00000030020E0124000000306A
-:1024B000020E012C00000030020E01100000004F3F
-:1024C000020E011800000040020E01200000004032
-:1024D000020E012800000040020E01140000006FEF
-:1024E000020E011C00000060020E012400000060CA
-:1024F000020E012C00000060020E01100000005FBF
-:10250000020E011800000050020E012000000050D1
-:10251000020E012800000050020E01140000007F8E
-:10252000020E011C00000070020E01240000007069
-:10253000020E012C000000700730040000D60000DD
-:10254000083007D80005043207340000322B0000A1
-:1025500007348000314B0C8B0735000038C518DE7E
-:10256000073580002F90271007360000268F32F5A0
-:102570000836716031D40434023000BC00000030F1
-:1025800001300000000000000130000400000000E5
-:1025900001300008000000000130000C00000000C5
-:1025A00001300010000000000130001400000000A5
-:1025B0000230002000000001023000240000000270
-:1025C00002300028000000030230002C0000000050
-:1025D000023000300000000402300034000000012E
-:1025E00002300038000000000230003C0000000112
-:1025F00002300040000000040230004400000000EF
-:1026000002300048000000010230004C00000003CE
-:1026100002300050000000000230005400000001B1
-:1026200002300058000000040230005C000000008E
-:10263000023000600000000102300064000000036E
-:1026400002300068000000000230006C0000000151
-:10265000023000700000000402300074000000002E
-:1026600002300078000000040230007C000000030B
-:102670000630008000000002023000A400007FFF4E
-:10268000023000A8000003FF023002240000000016
-:1026900002300234000000000230024C0000000052
-:1026A000023002E40000FFFF0630200000000800B6
-:1026B00002338BC000000001023380000000001ACA
-:1026C000023380400000004E023380800000001082
-:1026D000023380C0000000200C33830000086470C7
-:1026E0000A338300000001570B3383000000055FAD
-:1026F0000A338340000000000C33834000000226B0
-:102700000B338340000000010233838000086470B3
-:10271000023383C00000022602331480000000014F
-:102720000A3314800000000006328000000001021D
-:1027300006322008000000C8063220000000000217
-:1027400004328520008F04360632875C00000009C1
-:1027500006323EB00000000606323ED00000000205
-:1027600006323E800000000A04323EA8000204C582
-:1027700006323E00000000200632500000000940F2
-:102780000632400000000004043294C0000204C776
-:1027900006324110000000020632D0000000007036
-:1027A0000632DB00000000D40632DEA0000000028A
-:1027B0000632E00000000800063324000000011883
-:1027C0000632100000000188063250000000002090
-:1027D00006325100000000200632520000000020A6
-:1027E0000632530000000020063254000000002092
-:1027F000063255000000002006325600000000207E
-:102800000632570000000020063258000000002069
-:10281000063259000000002006325A000000002055
-:1028200006325B000000002006325C000000002041
-:1028300006325D000000002006325E00000000202D
-:1028400006325F0000000020063284F00000000223
-:1028500004328500000204C9063285080000000227
-:102860000632DE90000000020633286000000118E6
-:102870000632162000000188063250800000002039
-:1028800006325180000000200632528000000020F5
-:1028900006325380000000200632548000000020E1
-:1028A00006325580000000200632568000000020CD
-:1028B00006325780000000200632588000000020B9
-:1028C000063259800000002006325A8000000020A5
-:1028D00006325B800000002006325C800000002091
-:1028E00006325D800000002006325E80000000207D
-:1028F00006325F8000000020063284F800000002EB
-:1029000004328510000204CB063285180000000254
-:102910000632DE98000000020232845000000000FF
-:102920000632401000000002023284540000000011
-:1029300006324020000000020232845800000000ED
-:1029400006324030000000020232845C00000000C9
-:1029500006324040000000020232846000000000A5
-:102960000632405000000002023284640000000081
-:10297000063240600000000202328468000000005D
-:1029800006324070000000020232846C0000000039
-:10299000063240800000000207200400007300009F
-:1029A00008200780001004CD072400002AE400005E
-:1029B0000724800027670ABA0824D35063FC04CF99
-:1029C000022000BC000000300120000000000000D8
-:1029D00001200004000000000120000800000000A9
-:1029E0000120000C00000000012000100000000089
-:1029F000012000140000000002200020000000015F
-:102A00000220002400000002022000280000000331
-:102A10000220002C00000000022000300000000412
-:102A200002200034000000010220003800000000F5
-:102A30000220003C000000010220004000000004D1
-:102A400002200044000000000220004800000001B5
-:102A50000220004C00000003022000500000000093
-:102A60000220005400000001022000580000000471
-:102A70000220005C00000000022000600000000155
-:102A80000220006400000003022000680000000033
-:102A90000220006C00000001022000700000000411
-:102AA00002200074000000000220007800000004F2
-:102AB0000220007C000000030620008000000002CD
-:102AC000022000A400007FFF022000A8000003FFF6
-:102AD0000220022400000000022002340000000056
-:102AE0000220024C00000000022002E40000FFFF70
-:102AF000062020000000080002238BC00000000117
-:102B00000223800000000010022380400000001219
-:102B10000223808000000030022380C00000000EED
-:102B20000C238300000864700A238300000001570F
-:102B30000B2383000000055F0A2383400000000090
-:102B40000C238340000002260B2383400000000179
-:102B50000223838000086470022383C000000226E1
-:102B600002231480000000010A23148000000000EA
-:102B7000062210000000004206222008000000C8C3
-:102B800006222000000000020622B00000000330F0
-:102B90000622F400000000530422F54C000104D189
-:102BA0000622F550000000030422F55C000104D267
-:102BB0000622F560000000030422F56C000104D336
-:102BC0000622F570000000030422F57C000104D405
-:102BD0000622F580000000030422F58C000104D5D4
-:102BE0000622F590000000030422F59C000104D6A3
-:102BF0000622F5A0000000030422F5AC000104D772
-:102C00000622F5B0000000030422F5BC000104D840
-:102C10000622F5C0000000460622E2000000044043
-:102C200004221240009004D906223000000000C0A7
-:102C30000622670000000100062290000000040048
-:102C400004226B0800200569062211F0000000062E
-:102C50000422120800060589062212200000000244
-:102C600006224000000005C00622C0000000000649
-:102C70000422C0180006058F0622C0300000000A9A
-:102C80000422C058000605950622C0700000000A04
-:102C90000422C0980006059B0622C0B00000000A6E
-:102CA0000422C0D8000605A10622C0F00000000AD8
-:102CB0000422C118000605A70622C1300000000A40
-:102CC0000422C158000605AD0622C1700000000AAA
-:102CD0000422C198000605B30622C1B00000000A14
-:102CE0000422C1D8000605B90622C1F00000000A7E
-:102CF0000422C218000605BF0622C2300000000AE6
-:102D00000422C258000605C50622C2700000000A4F
-:102D10000422C298000605CB0622C2B00000000AB9
-:102D20000422C2D8000605D10622C2F00000000A23
-:102D30000422C318000605D70622C3300000000A8B
-:102D40000422C358000605DD0622C3700000000AF5
-:102D50000422C398000605E30622C3B00000000A5F
-:102D60000422C3D8000605E90622C3F00000000AC9
-:102D70000422C418000605EF0622C4300000000A31
-:102D80000422C458000605F50622C4700000000A9B
-:102D90000422C498000605FB0622C4B00000000A05
-:102DA0000422C4D8000606010622C4F00000000A6E
-:102DB0000422C518000606070622C5300000000AD6
-:102DC0000422C5580006060D0622C5700000000A40
-:102DD0000422C598000606130622C5B00000000AAA
-:102DE0000422C5D8000606190622C5F00000000A14
-:102DF0000422C6180006061F0622C6300000000A7C
-:102E00000422C658000606250622C6700000000AE5
-:102E10000422C6980006062B0622C6B00000000A4F
-:102E20000422C6D8000606310622C6F00000000AB9
-:102E30000422C718000606370622C7300000000A21
-:102E40000422C7580006063D0622C7700000000A8B
-:102E50000422C798000606430622C7B00000000AF5
-:102E60000422C7D8000606490622C7F00000000A5F
-:102E70000422C8180006064F0622C8300000000AC7
-:102E80000422C858000606550622C8700000000A31
-:102E90000422C8980006065B0622C8B00000000A9B
-:102EA0000422C8D8000606610622C8F00000000A05
-:102EB0000422C918000606670622C9300000000A6D
-:102EC0000422C9580006066D0622C9700000000AD7
-:102ED0000422C998000606730622C9B00000000A41
-:102EE0000422C9D8000606790622C9F00000000AAB
-:102EF0000422CA180006067F0622CA300000000A13
-:102F00000422CA58000606850622CA700000000A7C
-:102F10000422CA980006068B0622CAB00000000AE6
-:102F20000422CAD8000606910622CAF00000000A50
-:102F30000422CB18000606970622CB300000000AB8
-:102F40000422CB580006069D0622CB700000000A22
-:102F50000422CB98000606A30622CBB00000000A8C
-:102F60000422CBD8000606A90622CBF00000000AF6
-:102F70000422CC18000606AF0622CC300000000A5E
-:102F80000422CC58000606B50622CC700000000AC8
-:102F90000422CC98000606BB0622CCB00000000A32
-:102FA0000422CCD8000606C10622CCF00000000A9C
-:102FB0000422CD18000606C70622CD300000000A04
-:102FC0000422CD58000606CD0622CD700000000A6E
-:102FD0000422CD98000606D30622CDB00000000AD8
-:102FE0000422CDD8000606D90622CDF00000000A42
-:102FF0000422CE18000606DF0622CE300000000AAA
-:103000000422CE58000606E50622CE700000000A13
-:103010000422CE98000606EB0622CEB00000000A7D
-:103020000422CED8000606F10622CEF00000000AE7
-:103030000422CF18000606F70622CF300000000A4F
-:103040000422CF58000606FD0622CF700000000AB9
-:103050000422CF98000607030622CFB00000000A22
-:103060000422CFD8000607090622CFF00000000A8C
-:103070000422D0180006070F0622D0300000000AF4
-:103080000422D058000607150622D0700000000A5E
-:103090000422D0980006071B0622D0B00000000AC8
-:1030A0000422D0D8000607210622D0F00000000A32
-:1030B0000422D118000607270622D1300000000A9A
-:1030C0000422D1580006072D0622D1700000000A04
-:1030D0000422D198000607330622D1B00000000A6E
-:1030E0000422D1D8000607390622D1F00000000AD8
-:1030F0000422D2180006073F0622D2300000000A40
-:103100000422D258000607450622D2700000000AA9
-:103110000422D2980006074B0622D2B00000000A13
-:103120000422D2D8000607510622D2F00000000A7D
-:103130000422D318000607570622D3300000000AE5
-:103140000422D3580006075D0622D3700000000A4F
-:103150000422D398000607630622D3B00000000AB9
-:103160000422D3D8000607690622D3F00000000A23
-:103170000422D4180006076F0622D4300000000A8B
-:103180000422D458000607750622D4700000000AF5
-:103190000422D4980006077B0622D4B00000000A5F
-:1031A0000422D4D8000607810622D4F00000000AC9
-:1031B0000422D518000607870622D5300000000A31
-:1031C0000422D5580006078D0622D5700000000A9B
-:1031D0000422D598000607930622D5B00000000A05
-:1031E0000422D5D8000607990622D5F00000000A6F
-:1031F0000422D6180006079F0622D6300000000AD7
-:103200000422D658000607A50622D6700000000A40
-:103210000422D698000607AB0622D6B00000000AAA
-:103220000422D6D8000607B10622D6F00000000A14
-:103230000422D718000607B70622D7300000000A7C
-:103240000422D758000607BD0622D7700000000AE6
-:103250000422D798000607C30622D7B00000000A50
-:103260000422D7D8000607C90622D7F00000000ABA
-:103270000422D818000607CF0622D8300000000A22
-:103280000422D858000607D50622D8700000000A8C
-:103290000422D898000607DB0622D8B00000000AF6
-:1032A0000422D8D8000607E10622D8F00000000A60
-:1032B0000422D918000607E70622D9300000000AC8
-:1032C0000422D958000607ED0622D9700000000A32
-:1032D0000422D998000607F30622D9B00000000A9C
-:1032E0000422D9D8000607F90622D9F00000000A06
-:1032F0000422DA18000607FF0622DA300000000A6E
-:103300000422DA58000608050622DA700000000AD6
-:103310000422DA980006080B0622DAB00000000A40
-:103320000422DAD8000608110622DAF00000000AAA
-:103330000422DB18000608170622DB300000000A12
-:103340000422DB580006081D0622DB700000000A7C
-:103350000422DB98000608230622DBB00000000AE6
-:103360000422DBD8000608290622DBF00000000A50
-:103370000422DC180006082F0622DC300000000AB8
-:103380000422DC58000608350622DC700000000A22
-:103390000422DC980006083B0622DCB00000000A8C
-:1033A0000422DCD8000608410622DCF00000000AF6
-:1033B0000422DD18000608470622DD300000000A5E
-:1033C0000422DD580006084D0622DD700000000AC8
-:1033D0000422DD98000608530622DDB00000000A32
-:1033E0000422DDD8000608590622DDF00000000A9C
-:1033F0000422DE180006085F0622DE300000000A04
-:103400000422DE58000608650622DE700000000A6D
-:103410000422DE980006086B0622DEB00000000AD7
-:103420000422DED8000608710622DEF00000000A41
-:103430000422DF18000608770622DF300000000AA9
-:103440000422DF580006087D0622DF700000000A13
-:103450000422DF98000608830622DFB00000000A7D
-:103460000422DFD8000608890622DFF00000000AE7
-:103470000422E0180006088F0622E0300000000A4F
-:103480000422E058000608950622E0700000000AB9
-:103490000422E0980006089B0622E0B00000000A23
-:1034A0000422E0D8000608A10622E0F00000000A8D
-:1034B0000422E118000608A70622E1300000000AF5
-:1034C0000422E158000608AD0622E1700000000A5F
-:1034D0000422E198000608B30622E1B00000000AC9
-:1034E0000422E1D8000608B90622E1F00000000439
-:1034F0000622153800000002062211E80000000232
-:103500000622F3000000000802221148000000001B
-:1035100006225900000000060622330000000002C7
-:1035200006226040000000300622F3200000000860
-:103530000222114C0000000006225918000000066B
-:10354000062233080000000206226100000000305D
-:103550000622F34000000008022211500000000083
-:103560000622593000000006062233100000000237
-:10357000062261C0000000300622F360000000084F
-:1035800002221154000000000622594800000006E3
-:10359000062233180000000206226280000000307C
-:1035A0000622F380000000080222115800000000EB
-:1035B00006225960000000060622332000000002A7
-:1035C00006226340000000300622F3A0000000083D
-:1035D0000222115C0000000006225978000000065B
-:1035E000062233280000000206226400000000309A
-:1035F0000622F3C000000008022211600000000053
-:103600000622599000000006062233300000000216
-:10361000062264C0000000300622F3E0000000082B
-:103620000222116400000000062259A800000006D2
-:1036300006223338000000020622658000000030B8
-:103640000216100000000028021700080000000207
-:103650000217002C000000030217003C00000004C9
-:10366000021700440000000002170048000000029A
-:103670000217004C0000009002170050000000905C
-:103680000217005400800090021700580810000034
-:10369000021700700000000602170078000009FF02
-:1036A0000217007C0000076C021701C4081000001C
-:1036B0000217034400000001021704000000008A02
-:1036C00002170404000000800217040800000081B3
-:1036D0000217040C00000080021704100000008A8A
-:1036E0000217041400000080021704180000008173
-:1036F0000217041C00000080021704300000008A3A
-:103700000217043400000080021704380000008112
-:103710000217043C00000080021704400000008AE9
-:1037200002170444000000800217044800000081D2
-:103730000217044C00000080021704800000008A79
-:103740000217048400000080021704880000008132
-:103750000217048C0000008002170038007C10045F
-:10376000021700040000000F021701EC0000000225
-:10377000021701F400000002021701EC0000000231
-:10378000021701F400000002021701EC0000000221
-:10379000021701F400000002021701EC0000000211
-:1037A000021701F400000002021701EC0000000201
-:1037B000021701F400000002021701EC00000002F1
-:1037C000021701F400000002021701EC00000002E1
-:1037D000021701F400000002021701EC00000002D1
-:1037E000021701F400000002061640240000000247
-:1037F000021640700000001C021642080000000182
-:1038000002164210000000010216422000000001D2
-:10381000021642280000000102164230000000019A
-:103820000216423800000001021642600000000249
-:103830000C16401C0003D0900A16401C0000009C8F
-:103840000B16401C000002710216403000000028D8
-:10385000021640340000002C0216403800000030F0
-:103860000216404400000020021640000000000143
-:10387000021640D8000000010216400800000001B6
-:103880000216400C0000000102164010000000016A
-:1038900002164240000000000216424800000000EC
-:1038A000061642700000000202164250000000009E
-:1038B0000216425800000000061642800000000276
-:1038C00002166008000012140216600C00001200BC
-:1038D00002166010000012040216601C0000FFFFB8
-:1038E000021660200000FFFF021660240000FFFFA8
-:1038F000021660280000FFFF02166038000000205A
-:103900000216603C00000010061660400000000235
-:1039100002166048000000230216604C00000024DC
-:1039200002166050000000250216605400000026B8
-:1039300002166058000000270216605C00000011AB
-:103940000216606000000000021660640000002B98
-:10395000021660680000002C0216606C0000002D4A
-:1039600002166070000000EC021660740000000097
-:1039700002166078000000290216607C0000002A10
-:10398000021660800000002F061660840000000D03
-:10399000021660B800000001061660BC00000008B6
-:1039A000021660DC00000001061660E00000000462
-:1039B000021660F000000001061660F4000000032B
-:1039C0000216610000000001061661040000002DCF
-:1039D000021661B800000001061661BC0000000874
-:1039E000021661DC00000001061661E00000000420
-:1039F000021661F000000001061661F400000003E9
-:103A00000216620000000001061662040000000DAC
-:103A10000216623807FFFFFF0216623C0000007FBB
-:103A20000216624007FFFFFF021662440000003FDB
-:103A300001166248000000000116624C0000000000
-:103A400001166250000000000116625400000000E0
-:103A500001166258000000000116625C00000000C0
-:103A600001166260000000000116626400000000A0
-:103A700001166268000000000116626C0000000080
-:103A80000116627000000000011662740000000060
-:103A900001166278000000000116627C0000000040
-:103AA000011662D400000000021662D80000FFFF79
-:103AB000021662DC0000FFFF021662E00000FFFF5A
-:103AC000021662E40000FFFF0C166000000003E82D
-:103AD0000A166000000000010B16600000000003E1
-:103AE0000216804000000006021680440000000517
-:103AF000021680480000000A0216804C00000005F3
-:103B00000216805400000002021680CC000000045F
-:103B1000021680D000000004021680D400000004C9
-:103B2000021680D800000004021680DC00000004A9
-:103B3000021680E000000004021680E40000000489
-:103B4000021680E800000004021688040000000647
-:103B5000021680300000007C021680340000003D18
-:103B6000021680380000003F0216803C0000009CD6
-:103B70000216E6E8000060000216E6EC00006000B5
-:103B80000216E6F0000060000216E6F40000600095
-:103B900002168234000025E40216823800008000FC
-:103BA00002168094000025E3021681F400000C0840
-:103BB000021681F800000040021681FC000001009E
-:103BC0000216820000000020021682040000001786
-:103BD00002168208000000800216820C000002001B
-:103BE00002168210000000000216823C0000001342
-:103BF00002168220008F008F0216821C008F008F19
-:103C0000021680F0000000070216821801FF01FF73
-:103C10000216821401FF01FF061680F40000000264
-:103C20000216811C0000000502168120000000051C
-:103C300002168124000000050216812800000008F9
-:103C40000216812C000000060216813000000007D9
-:103C50000616813400000004021680FC00000000FB
-:103C600006168144000000020216814C0000000488
-:103C7000021681500000000102168154000000026B
-:103C800002168158000000050216815C0000000544
-:103C90000216816000000005021681640000000524
-:103CA0000216816800000008021681000000000072
-:103CB0000216816C000000060216817000000007E9
-:103CC00006168174000000060216818C00000004B4
-:103CD000021681900000000102168104000000001D
-:103CE000021681940000000202168198000000056F
-:103CF0000216819C00000005021681A0000000054C
-:103D0000021681A400000005021681A80000000828
-:103D1000021681AC00000006021681B00000000708
-:103D2000061681B40000000202168108000000009F
-:103D3000061681BC00000004021681CC00000004BD
-:103D4000021681D000000001021681D4000000029A
-:103D5000021681D800000005021681DC0000000573
-:103D6000021681E0000000050216810C000000042C
-:103D7000021681E400000005021681E80000000838
-:103D8000021681EC00000006021681F00000000718
-:103D900002168110000000010216811400000002CA
-:103DA00002168118000000050216809C0000004CDD
-:103DB000021680A00000004C061680C4000000021D
-:103DC000021680A400000000021680A80000000077
-:103DD000021680AC0000004C061680B00000000502
-:103DE0000216E6F80000020402168240003F003F7F
-:103DF00002168244003F003F061682900000000435
-:103E000002168248008000800216824C00800080EA
-:103E100002168250010001000216825401000100C6
-:103E20000616825800000002021682600040004020
-:103E30000216826400400040021682681E001E00C6
-:103E40000216826C1E001E000216827040004000A6
-:103E500002168274400040000216827880008000C2
-:103E60000216827C800080000216828020002000E2
-:103E700002168284200020000616828800000002BC
-:103E8000021680900000004B021680600000014086
-:103E900002168064000001400616808800000002BF
-:103EA00002168068000000000216806C000000000E
-:103EB00002168070000000C0061680740000000525
-:103EC0000216880C0101010102168810010120046C
-:103ED000021688142008100102168818010101201A
-:103EE0000216881C0101010102168820010120042C
-:103EF00002168824200810010216882801010120DA
-:103F00000216882C200810010216883001010120B9
-:103F100002168834010101010216883801012004CB
-:103F20000216883C20081001021688400101012079
-:103F3000021688440101010102168848010120048B
-:103F40000216E6BC000000000216E6C000000002F7
-:103F50000216E6C4000000040216E6C800000006CF
-:103F60000216E79400000001021680EC000000FF3A
-:103F700002140000000000010215C024000000002F
-:103F80000215C0EC000000010215C0F000000001A5
-:103F90000615C10000000002021400040000000128
-:103FA00002140008000000010214000C00000001CF
-:103FB000021400300000000102140034000000016F
-:103FC0000214004000000001021400440000FFFF42
-:103FD00006140004000000030214000000000000AA
-:103FE000060280000000200002020058000000329B
-:103FF000020200A003150020020200A40315002005
-:10400000020200A801000030020200AC081000000B
-:10401000020200B000000036020200B400000030CE
-:10402000020200B800000031020200BC00000002E1
-:10403000020200C000000005020200C400000002ED
-:10404000020200C800000002020200D000000007C7
-:10405000020200DC00000000020200E00000000597
-:10406000020200E400000003020200F00000000170
-:10407000020200FC00000006020201200000000015
-:104080000202013400000002020201B0000000013F
-:104090000202020C000000010202021400000001F2
-:1040A00002020218000000020202040400000001E3
-:1040B0000202040C00000040020204100000004054
-:1040C0000202041C00000004020204200000002080
-:1040D0000202042400000002020204280000002062
-:1040E000060205000000001204020480002008BF40
-:1040F000020200600000000F0202006400000007DE
-:1041000002020068000000000202006C0000000EC5
-:10411000020200700000000E06020074000000039E
-:10412000020200F40000000402020004000000018A
-:1041300002020008000000010202000C0000000161
-:104140000202001000000001020200140000000141
-:1041500002020018000000010202001C0000000121
-:104160000202002000000001020200240000000101
-:1041700002020028000000010202002C00000001E1
-:1041800002020030000000010202003400000001C1
-:1041900002020038000000010202003C00000001A1
-:1041A0000202004000000001020200440000000181
-:1041B00002020048000000010202004C0000000161
-:1041C000020200500000000102020108000000C8C5
-:1041D0000202011800000002020201C400000000F7
-:1041E000020201CC00000000020201D40000000223
-:1041F000020201DC00000002020201E4000000FFF4
-:10420000020201EC000000FF0202010000000000B9
-:104210000202010C000000C80202011C00000002A2
-:10422000020201C800000000020201D000000000EC
-:10423000020201D800000002020201E000000002B8
-:10424000020201E8000000FF020201F0000000FF8E
-:10425000020201040000002002020108000000C860
-:104260000202011800000002020201C40000000066
-:10427000020201CC00000000020201D40000000292
-:10428000020201DC00000002020201E4000000FF63
-:10429000020201EC000000FF020201000000001019
-:1042A0000202010C000000C80202011C0000000212
-:1042B000020201C800000000020201D0000000005C
-:1042C000020201D800000002020201E00000000228
-:1042D000020201E8000000FF020201F0000000FFFE
-:1042E000020201040000003002020108000000C8C0
-:1042F0000202011800000002020201C400000000D6
-:10430000020201CC00000000020201D40000000201
-:10431000020201DC00000002020201E4000000FFD2
-:10432000020201EC000000FF020201000000004058
-:104330000202010C000000C80202011C0000000281
-:10434000020201C800000000020201D000000000CB
-:10435000020201D800000002020201E00000000297
-:10436000020201E8000000FF020201F0000000FF6D
-:10437000020201040000006002020108000000C8FF
-:104380000202011800000002020201C40000000045
-:10439000020201CC00000000020201D40000000271
-:1043A000020201DC00000002020201E4000000FF42
-:1043B000020201EC000000FF0202010000000050B8
-:1043C0000202010C000000C80202011C00000002F1
-:1043D000020201C800000000020201D0000000003B
-:1043E000020201D800000002020201E00000000207
-:1043F000020201E8000000FF020201F0000000FFDD
-:1044000002020104000000700728040000B300004D
-:10441000082807B8000908DF072C000028CB000097
-:10442000072C8000365D0A33072D0000347017CB4F
-:10443000072D80003A9424E8072E000036C7338EFB
-:10444000072E80001CE94140082EC5D0274608E110
-:10445000022800BC0000003001280000000000001D
-:1044600001280004000000000128000800000000EE
-:104470000128000C000000000128001000000000CE
-:1044800001280014000000000228002000000001A4
-:104490000228002400000002022800280000000377
-:1044A0000228002C00000000022800300000000458
-:1044B000022800340000000102280038000000003B
-:1044C0000228003C00000001022800400000000417
-:1044D00002280044000000000228004800000001FB
-:1044E0000228004C000000030228005000000000D9
-:1044F00002280054000000010228005800000004B7
-:104500000228005C0000000002280060000000019A
-:104510000228006400000003022800680000000078
-:104520000228006C00000001022800700000000456
-:104530000228007400000000022800780000000437
-:104540000228007C00000003062800800000000212
-:10455000022800A400007FFF022800A8000003FF3B
-:10456000022802240000000002280234000000009B
-:104570000228024C00000000022802E40000FFFFB5
-:104580000628200000000800022B8BC0000000015C
-:10459000022B800000000000022B80400000001869
-:1045A000022B80800000000C022B80C000000066FF
-:1045B0000C2B8300000864700A2B83000000015755
-:1045C0000B2B83000000055F0A2B834000000000D6
-:1045D0000C2B8340000002260B2B834000000001BF
-:1045E000022B838000086470022B83C00000022627
-:1045F000022B1480000000010A2B14800000000030
-:10460000022B944000000001062B94480000000299
-:10461000062A9A7000000004042A9A80000408E325
-:10462000062A9A9000000002042A9A98000208E7DD
-:10463000062A900000000048062A2008000000C852
-:10464000062A200000000002062A912800000086A9
-:10465000062AC00000000120062A9348000000033B
-:10466000042A9354000108E9062A9FB000000002C2
-:10467000042A9418000208EA042A9CD0000108ECDD
-:10468000062A9CD400000011042A9D20008F08ED0A
-:10469000062A9F5C00000005042A30000002097C05
-:1046A000062A300800000100062A404000000010E1
-:1046B000042A40000010097E042A84080002098EA2
-:1046C000042ACF4000040990042ACF600002099414
-:1046D000062A9FA000000004062A60000000054092
-:1046E000062A9D1800000002062AB00000000050B3
-:1046F000062ABB7000000070062ABB68000000029A
-:10470000062AB94800000004062AD000000008006C
-:10471000062AC48000000150062A942000000032BE
-:10472000062A502000000002062A50300000000235
-:10473000062A500000000002062A50100000000265
-:10474000022A520800000001042A9AA000020996D9
-:10475000062A95B000000022042A96380001099824
-:10476000062A963C00000003062A96E0000000227C
-:10477000042A976800010999062A976C0000000333
-:10478000062A981000000022042A98980001099A2D
-:10479000062A989C00000003062A99400000002287
-:1047A000042A99C80001099B062A99CC000000033D
-:1047B000062ABB5800000002062AC9C000000150AA
-:1047C000062A94E800000032062A50280000000261
-:1047D000062A503800000002062A50080000000295
-:1047E000062A501800000002022A520C00000001A4
-:1047F000042A9AA80002099C062A96480000002272
-:10480000042A96D00001099E062A96D400000003CF
-:10481000062A977800000022042A98000001099FC8
-:10482000062A980400000003062A98A80000002227
-:10483000042A9930000109A0062A993400000003D7
-:10484000062A99D800000022042A9A60000109A1D2
-:10485000062A9A6400000003062ABB6000000002DA
-:10486000022ACF0000000000042A9AB0001009A21A
-:10487000062A50480000000E022ACF040000000063
-:10488000042A9AF0001009B2062A50800000000E97
-:10489000022ACF0800000000042A9B30001009C241
-:1048A000062A50B80000000E022ACF0C00000000BB
-:1048B000042A9B70001009D2062A50F00000000E56
-:1048C000022ACF1000000000042A9BB0001009E269
-:1048D000062A51280000000E022ACF140000000012
-:1048E000042A9BF0001009F2062A51600000000E15
-:1048F000022ACF1800000000042A9C3000100A028F
-:10490000062A51980000000E022ACF1C0000000069
-:10491000042A9C7000100A12062A51D00000000ED2
-:1049200002101008000000010210105000000001E9
-:10493000021010000003D000021010040000003D1F
-:104940000910180002000A220910110000100C22A0
-:1049500006101140000000080910116000100C3210
-:10496000061011A00000001806102400000000E04E
-:104970000210201C00000000021020200000000196
-:10498000021020C0000000020210200400000001FC
-:104990000210200800000001021030D800000001C1
-:1049A00009103C0000050C420910380000050C47B6
-:1049B0000910392000050C4C09103B0000050C5172
-:1049C000021040D400000030021040D80000003037
-:1049D00006104C00000001000210402800000010EA
-:1049E0000210404400003FFF021040580028000021
-:1049F000021040840084924A0210405800000000D7
-:104A0000021041380000000102104138000000018E
-:104A1000021041380000000102104138000000017E
-:104A2000021041380000000102104138000000016E
-:104A3000021041380000000102104138000000015E
-:104A40000212049001F680400212051400003C108E
-:104A500002120494FFFFFFFF02120498FFFFFFFF02
-:104A60000212049CFFFFFFFF021204A0FFFFFFFFE2
-:104A7000021204A4FFFFFFFF021204A8FFFFFFFFC2
-:104A8000021204ACFFFFFFFF021204B0FFFFFFFFA2
-:104A9000021204B8FFFFFFFF021204BCFFFFFFFF7A
-:104AA000021204C0FFFFFFFF021204C4FFFFFFFF5A
-:104AB000021204C8FFFFFFFF021204CCFFFFFFFF3A
-:104AC000021204D0FFFFFFFF021204D8FFFFFFFF16
-:104AD000021204DCFFFFFFFF021204E0FFFFFFFFF2
-:104AE000021204E4FFFFFFFF021204E8FFFFFFFFD2
-:104AF000021204ECFFFFFFFF021204F0FFFFFFFFB2
-:104B0000021204F4FFFFFFFF021204F8FFFFFFFF91
-:104B1000021204FCFFFFFFFF02120500FFFFFFFF70
-:104B200002120504FFFFFFFF02120508FFFFFFFF4F
-:104B30000212050CFFFFFFFF02120510FFFFFFFF2F
-:104B4000021204D4F800C000021204B4F0005000B5
-:104B500002120390000000080212039C00000008EB
-:104B6000021203A000000008021203A400000002C9
-:104B7000021203BC00000004021203C00000000582
-:104B8000021203C400000004021203D0000000005F
-:104B90000212036C00000001021201BC0000004080
-:104BA000021201C000001808021201C4000008032C
-:104BB000021201C800000803021201CC00000040EC
-:104BC000021201D000000003021201D40000080309
-:104BD000021201D800000803021201DC00000803E1
-:104BE000021201E000010003021201E400000803C8
-:104BF000021201E800000803021201EC00000003A9
-:104C0000021201F000000003021201F40000000390
-:104C1000021201F800000003021201FC0000000370
-:104C2000021202000000000302120204000000034E
-:104C300002120208000000030212020C000000032E
-:104C4000021202100000000302120214000000030E
-:104C500002120218000000030212021C00000003EE
-:104C600002120220000000030212022400000003CE
-:104C700002120228000024030212022C0000002F5E
-:104C80000212023000000009021202340000001972
-:104C900002120238000001840212023C000001836B
-:104CA0000212024000000306021202440000001932
-:104CB00002120248000000060212024C0000030625
-:104CC0000212025000000306021202540000030602
-:104CD0000212025800000C860212025C0000030659
-:104CE00002120260000003060212026400000006C5
-:104CF00002120268000000060212026C00000006A8
-:104D00000212027000000006021202740000000687
-:104D100002120278000000060212027C0000000667
-:104D20000212028000000006021202840000000647
-:104D300002120288000000060212028C0000000627
-:104D40000212029000000006021202940000000607
-:104D500002120298000000060212029C00000006E7
-:104D6000021202A000000306021202A400000013B7
-:104D7000021202A800000006021202B00000100495
-:104D8000021202B400001004021203240010644056
-:104D90000212032800106440021205B40000000152
-:104DA000021205F800000040021205FC0000001984
-:104DB00002120600000000010212066C0000000151
-:104DC000021201B000000001021207D80000000327
-:104DD000021207D800000003021207D800000003E7
-:104DE000021207D800000003021207D800000003D7
-:104DF000021207D800000003021207D800000003C7
-:104E0000021207D8000000030600A0000000000CFA
-:104E10000200A050000000000200A05400000000AA
-:104E20000200A0EC555400000200A0F05555555565
-:104E30000200A0F4000055550200A0F8F0000000A8
-:104E40000200A0FC555400000200A1005555555524
-:104E50000200A104000055550200A108F000000066
-:104E60000200A19C000000000200A1A000010000BF
-:104E70000200A1A4000050140200A1A8000000003C
-:104E80000200A6A8000000000200A6AC000000007E
-:104E90000200A6D0000000000200A45C00000C008C
-:104EA0000200A61C000000030200A070FFF55FFFD7
-:104EB0000200A0740000FFFF0200A078F00003E0F1
-:104EC0000200A07C000000000200A0800000A00002
-:104ED0000600A084000000050200A0980FE000007A
-:104EE0000600A09C000000070200A0B8000004001B
-:104EF0000600A0BC000000030200A0C800001000D3
-:104F00000600A0CC000000030200A0D80000400072
-:104F10000600A0DC000000030200A0E80001000081
-:104F20000600A22C000000040200A688000000FC7D
-:104F30000600A68C000000070200A6F40000000096
-:104F40000200A10CFF5C00000200A110FFF55FFF52
-:104F50000200A1140000FFFF0200A118F00003E00E
-:104F60000200A11C000000000200A1200000A0001F
-:104F70000600A124000000050200A1380FE0000097
-:104F80000600A13C000000070200A1580000080034
-:104F90000600A15C000000030200A16800002000E0
-:104FA0000600A16C000000030200A1780000800050
-:104FB0000600A17C000000030200A188000200009E
-:104FC0000600A23C000000040200A6B0000000FCA5
-:104FD0000600A6B4000000070200A6F800000000CA
-:104FE0000200A030000000000200A0340000000019
-:104FF0000200A038000000000200A03C00000000F9
-:105000000200A040000000000200A04400000000D8
-:105010000200A048000000000200A04C00000000B8
-:10502000020090C40000E000020090CC0000F300F9
-:10503000020090D400000003020091A000000001D3
-:105040000600917000000003020090EC0000600078
-:10505000020090F400007300020090FC00000003C6
-:10506000020091A8000000010600918800000003E2
-:10507000020091000000400002009108000053006F
-:105080000200911000000004020091AC0000000139
-:1050900006009194000000020200919C00000001B3
-:1050A000020090D800006000020090E00000730051
-:1050B000020090E800000003020091A4000000013B
-:1050C0000200917C000000010200918000000001BC
-:1050D00002009184000000000200912800000300FB
-:1050E0000200916C0003F0080200912C0000030004
-:1050F0000200913000000300020091340000030020
-:1051000002009138000003000200913C00000300FF
-:1051100002009140000003000200942C00000001F6
-:1051200002009430000000010200943400000001ED
-:105130000200942C000000010200943000000001E5
-:1051400002009434000000010200942C00000001D1
-:1051500002009430000000010200943400000001BD
-:105160000200942C000000010200943000000001B5
-:1051700002009434000000010200942C00000001A1
-:10518000020094300000000102009434000000018D
-:105190000200942C00000001020094300000000185
-:1051A00002009434000000010200942C0000000171
-:1051B000020094300000000102009434000000015D
-:1051C0000200942C00000001020094300000000155
-:1051D0000200943400000001021300780000003047
-:1051E0000213003C000061A8061301080000000340
-:1051F000021301040000000002130134000000004B
-:10520000061301080000000302130104000000005F
-:10521000021301340000000006130108000000031F
-:10522000021301040000000002130134000000001A
-:10523000061301080000000302130104000000002F
-:1052400002130134000000000613010800000003EF
-:1052500002130104000000000213013400000000EA
-:1052600006130108000000030213010400000000FF
-:1052700002130134000000000613010800000003BF
-:1052800002130104000000000213013400000000BA
-:1052900006130108000000030213010400000000CF
-:1052A0000213013400000000021100B800000001E8
-:1052B0000216E6E8000020000216E6EC00002000DE
-:1052C0000216E6F0000065550216E6F4000065558A
-:1052D00002168150000000000216817400000001D7
-:1052E00002168178000000010216817C0000000196
-:1052F0000216818000000001021681840000000176
-:105300000216818800000001021681B4000000012D
-:10531000021681B800000001021681BC00000001E5
-:10532000021681C000000001021681C400000001C5
-:10533000021681C800000001021681100000000062
-:105340000216824000BF00BF061682440000000221
-:105350000216824C00BF00BF0216E6C40000000126
-:105360000216E6C8000000030216E79400000000E1
-:10537000042ACF40000A0C56000000000000000084
-:1053800000000034000000000000000000000000E9
-:10539000000000000000000000000000000000000D
-:1053A0000000000000000000000000000034003594
-:1053B00000000000000000000000000000000000ED
-:1053C00000000000000000000000000000000000DD
-:1053D0000000000000000000003500600000000038
-:1053E00000000000000000000000000000000000BD
-:1053F00000000000000000000000000000000000AD
-:1054000000000000006000910000000000000000AB
-:1054100000910095009500990099009D009D00A1C4
-:1054200000A100A500A500A900A900AD00AD00B134
-:1054300000B100B500000000000000000000000006
-:10544000000000000000000000000000000000005C
-:1054500000000000000000000000000000B5031183
-:105460000311031B031B03250325032C032C033308
-:105470000333033A033A0341034103480348034F0C
-:10548000034F03560356035D0000000000000000B8
-:10549000000000000000000000000000000000000C
-:1054A00000000000000000000000000000000000FC
-:1054B00000000000000000000000000000000000EC
-:1054C00000000000000000000000000000000000DC
-:1054D00000000000000000000000000000000000CC
-:1054E00000000000000000000000000000000000BC
-:1054F00000000000000000000000000000000000AC
-:10550000000000000000000000000000000000009B
-:10551000000000000000000000000000000000008B
-:10552000000000000000000000000000000000007B
-:105530000000000000000000035D035E00000000AA
-:1055400000000000035E035F035F0360036003610C
-:10555000036103620362036303630364036403651B
-:10556000036503660000000000000000000000006A
-:10557000000000000000000000000000000000002B
-:10558000000000000000000000000000000000001B
-:105590000366036D036D0379037903850000000042
-:1055A00000000000000000000000000000000000FB
-:1055B00000000000000000000000000000000000EB
-:1055C00000000000000000000000000000000000DB
-:1055D00000000000000000000000000000000000CB
-:1055E00000000000000000000385038600000000AA
-:1055F00000000000000000000000000000000000AB
-:10560000000000000000000000000000000000009A
-:1056100000000000038603B100000000000000004D
-:10562000000000000000000000000000000000007A
-:10563000000000000000000000000000000000006A
-:1056400003B103E0000000000000000000000000C3
-:10565000000000000000000000000000000000004A
-:1056600000000000000000000000000003E0040F44
-:105670000000000000000000040F04160416041DC2
-:10568000041D04240424042B042B043204320439A2
-:1056900004390440044004470447047A0000000031
-:1056A00000000000047A047E047E048204820486E2
-:1056B0000486048A048A048E048E0492049204965A
-:1056C0000496049A049A04EA04EA05000500051603
-:1056D000051605180518051A051A051C051C051ED2
-:1056E000051E052005200522052205240524052682
-:1056F00005260693000000000000000006930698AF
-:105700000698069D069D06A206A206A706A706AC59
-:1057100006AC06B106B106B606B606BB06BB06BCAD
-:105720000000000000000000000000000000000079
-:105730000000000000000000000000000000000069
-:10574000000000000000000006BC06E000000000B1
-:105750000000000006E006E206E206E406E406E6D3
-:1057600006E606E806E806EA06EA06EC06EC06EEB9
-:1057700006EE06F006F00705070507080708070B01
-:105780000000000000000000000000000000000019
-:105790000000000000000000000000000000000009
-:1057A000070B074F00000000000000000000000091
-:1057B00000000000000000000000000000000000E9
-:1057C000000000000000000000000000074F07E19B
-:1057D00000000000000000000000000000000000C9
-:1057E00000000000000000000000000000000000B9
-:1057F000000000000000000007E107EF00000000CB
-:105800000000000000000000000000000000000098
-:105810000000000000000000000000000000000088
-:105820000000000007EF082C00000000000000004E
-:10583000082C08350835083E083E08470847085038
-:1058400008500859085908620862086B086B087408
-:10585000087408D508D508EA08EA08FF08FF090215
-:1058600009020905090509080908090B090B090EB0
-:10587000090E09110911091409140917091709203A
-:105880000000000000000000000000000000000018
-:105890000000000000000000000000000000000008
-:1058A00000000000000000000920092600000000A0
-:1058B00000000000000000000000000000000000E8
-:1058C00000000000000000000000000000000000D8
-:1058D000000000000926092B000000000000000065
-:1058E00000000000000000000000000000000000B8
-:1058F00000000000000000000000000000000000A8
-:10590000092B0933000000000000000009330934AE
-:10591000093409350935093609360937093709388F
-:10592000093809390939093A093A093B00000000E8
-:105930000000000000000000000000000000000067
-:105940000000000000000000000000000000000057
-:105950000000000000000000093B09AC000000004E
-:105960000000000009AC09AD09AD09AE09AE09AFF0
-:1059700009AF09B009B009B109B109B209B209B357
-:1059800009B309B409B409C809C809DB09DB09EF7F
-:1059900009EF09F009F009F109F109F209F209F337
-:1059A00009F309F409F409F509F509F609F609F707
-:1059B00009F70A1600000000000000000A160A1984
-:1059C0000A190A1C0A1C0A1F0A1F0A220A220A258F
-:1059D0000A250A280A280A2B0A2B0A2E0A2E0A3020
-:1059E00000000000000000000A300A330A330A36C3
-:1059F0000A360A390A390A3C0A3C0A3F0A3F0A4277
-:105A00000A420A450A450A480A480A4900000000B5
-:105A10000000000000000000000000000000000086
-:105A20000000000000000000000000000000000076
-:105A3000000000000A490A610000000000000000A8
-:105A40000000000000000000000000000000000056
-:105A50000000000000000000000000000000000046
-:105A60000A610A620000000000000000000000005F
-:105A70000000000000000000000000000000000026
-:105A80000000000000000000000000000000000016
-:105A9000000100000002070000030E0000041500D2
-:105AA00000051C000006230000072A000008310042
-:105AB00000093800000A3F00000B4600000C4D00B2
-:105AC000000D5400000E5B00000F62000010690022
-:105AD000001170000012770000137E000014850092
-:105AE00000158C000016930000179A000018A10002
-:105AF0000019A800001AAF00001BB600001CBD0072
-:105B0000001DC400001ECB00001FD2000000D90001
-:105B10000000200000004000000060000000800045
-:105B20000000A0000000C0000000E0000001000034
-:105B30000001200000014000000160000001800021
-:105B40000001A0000001C0000001E0000002000010
-:105B500000022000000240000002600000028000FD
-:105B60000002A0000002C0000002E00000030000EC
-:105B700000032000000340000003600000038000D9
-:105B80000003A0000003C0000003E00000040000C8
-:105B900000042000000440000004600000048000B5
-:105BA0000004A0000004C0000004E00000050000A4
-:105BB0000005200000054000000560000005800091
-:105BC0000005A0000005C0000005E0000006000080
-:105BD000000620000006400000066000000680006D
-:105BE0000006A0000006C0000006E000000700005C
-:105BF0000007200000074000000760000007800049
-:105C00000007A0000007C0000007E0000008000037
-:105C10000008200000084000000860000008800024
-:105C20000008A0000008C0000008E0000009000013
-:105C30000009200000094000000960000009800000
-:105C40000009A0000009C0000009E000000A0000EF
-:105C5000000A2000000A4000000A6000000A8000DC
-:105C6000000AA000000AC000000AE000000B0000CB
-:105C7000000B2000000B4000000B6000000B8000B8
-:105C8000000BA000000BC000000BE000000C0000A7
-:105C9000000C2000000C4000000C6000000C800094
-:105CA000000CA000000CC000000CE000000D000083
-:105CB000000D2000000D4000000D6000000D800070
-:105CC000000DA000000DC000000DE000000E00005F
-:105CD000000E2000000E4000000E6000000E80004C
-:105CE000000EA000000EC000000EE000000F00003B
-:105CF000000F2000000F4000000F6000000F800028
-:105D0000000FA000000FC000000FE0000010000016
-:105D10000010200000104000001060000010800003
-:105D20000010A0000010C0000010E00000110000F2
-:105D300000112000001140000011600000118000DF
-:105D40000011A0000011C0000011E00000120000CE
-:105D500000122000001240000012600000128000BB
-:105D60000012A0000012C0000012E00000130000AA
-:105D70000013200000134000001360000013800097
-:105D80000013A0000013C0000013E0000014000086
-:105D90000014200000144000001460000014800073
-:105DA0000014A0000014C0000014E0000015000062
-:105DB000001520000015400000156000001580004F
-:105DC0000015A0000015C0000015E000001600003E
-:105DD000001620000016400000166000001680002B
-:105DE0000016A0000016C0000016E000001700001A
-:105DF0000017200000174000001760000017800007
-:105E00000017A0000017C0000017E00000180000F5
-:105E100000182000001840000018600000188000E2
-:105E20000018A0000018C0000018E00000190000D1
-:105E300000192000001940000019600000198000BE
-:105E40000019A0000019C0000019E000001A0000AD
-:105E5000001A2000001A4000001A6000001A80009A
-:105E6000001AA000001AC000001AE000001B000089
-:105E7000001B2000001B4000001B6000001B800076
-:105E8000001BA000001BC000001BE000001C000065
-:105E9000001C2000001C4000001C6000001C800052
-:105EA000001CA000001CC000001CE000001D000041
-:105EB000001D2000001D4000001D6000001D80002E
-:105EC000001DA000001DC000001DE000001E00001D
-:105ED000001E2000001E4000001E6000001E80000A
-:105EE000001EA000001EC000001EE000001F0000F9
-:105EF000001F2000001F4000001F6000001F8000E6
-:105F0000001FA000001FC000001FE00000200000D4
-:105F100000202000002040000020600000208000C1
-:105F20000020A0000020C0000020E00000210000B0
-:105F3000002120000021400000216000002180009D
-:105F40000021A0000021C0000021E000002200008C
-:105F50000022200000224000002260000022800079
-:105F60000022A0000022C0000022E0000023000068
-:105F70000023200000234000002360000023800055
-:105F80000023A0000023C0000023E0000024000044
-:105F90000024200000244000002460000024800031
-:105FA0000024A0000024C0000024E0000025000020
-:105FB000002520000025400000256000002580000D
-:105FC0000025A0000025C0000025E00000260000FC
-:105FD00000262000002640000026600000268000E9
-:105FE0000026A0000026C0000026E00000270000D8
-:105FF00000272000002740000027600000278000C5
-:106000000027A0000027C0000027E00000280000B3
-:1060100000282000002840000028600000288000A0
-:106020000028A0000028C0000028E000002900008F
-:10603000002920000029400000296000002980007C
-:106040000029A0000029C0000029E000002A00006B
-:10605000002A2000002A4000002A6000002A800058
-:10606000002AA000002AC000002AE000002B000047
-:10607000002B2000002B4000002B6000002B800034
-:10608000002BA000002BC000002BE000002C000023
-:10609000002C2000002C4000002C6000002C800010
-:1060A000002CA000002CC000002CE000002D0000FF
-:1060B000002D2000002D4000002D6000002D8000EC
-:1060C000002DA000002DC000002DE000002E0000DB
-:1060D000002E2000002E4000002E6000002E8000C8
-:1060E000002EA000002EC000002EE000002F0000B7
-:1060F000002F2000002F4000002F6000002F8000A4
-:10610000002FA000002FC000002FE0000030000092
-:10611000003020000030400000306000003080007F
-:106120000030A0000030C0000030E000003100006E
-:10613000003120000031400000316000003180005B
-:106140000031A0000031C0000031E000003200004A
-:106150000032200000324000003260000032800037
-:106160000032A0000032C0000032E0000033000026
-:106170000033200000334000003360000033800013
-:106180000033A0000033C0000033E0000034000002
-:1061900000342000003440000034600000348000EF
-:1061A0000034A0000034C0000034E00000350000DE
-:1061B00000352000003540000035600000358000CB
-:1061C0000035A0000035C0000035E00000360000BA
-:1061D00000362000003640000036600000368000A7
-:1061E0000036A0000036C0000036E0000037000096
-:1061F0000037200000374000003760000037800083
-:106200000037A0000037C0000037E0000038000071
-:10621000003820000038400000386000003880005E
-:106220000038A0000038C0000038E000003900004D
-:10623000003920000039400000396000003980003A
-:106240000039A0000039C0000039E000003A000029
-:10625000003A2000003A4000003A6000003A800016
-:10626000003AA000003AC000003AE000003B000005
-:10627000003B2000003B4000003B6000003B8000F2
-:10628000003BA000003BC000003BE000003C0000E1
-:10629000003C2000003C4000003C6000003C8000CE
-:1062A000003CA000003CC000003CE000003D0000BD
-:1062B000003D2000003D4000003D6000003D8000AA
-:1062C000003DA000003DC000003DE000003E000099
-:1062D000003E2000003E4000003E6000003E800086
-:1062E000003EA000003EC000003EE000003F000075
-:1062F000003F2000003F4000003F6000003F800062
-:10630000003FA000003FC000003FE000003FE00170
-:1063100000000000000001FF0000020000007FF804
-:1063200000007FF800000A90000035000000000126
-:106330000000FF00000000000000FF00000000005F
-:106340000000FF00000000000000FF00000000004F
-:106350000000FF00000000000000FF00000000003F
-:106360000000FF00000000000000FF00000000002F
-:106370000000FF00000000000000FF00000000001F
-:106380000000FF00000000000000FF00000000000F
-:106390000000FF00000000000000FF0000000000FF
-:1063A0000000FF00000000000000FF0000000000EF
-:1063B0000000FF00000000000000FF0000000000DF
-:1063C0000000FF00000000000000FF0000000000CF
-:1063D0000000FF00000000000000FF0000000000BF
-:1063E0000000FF00000000000000FF0000000000AF
-:1063F0000000FF00000000000000FF00000000009F
-:106400000000FF00000000000000FF00000000008E
-:106410000000FF00000000000000FF00000000007E
-:106420000000FF00000000000000FF00000000006E
-:106430000000FF00000000000000FF00000000005E
-:106440000000FF00000000000000FF00000000004E
-:106450000000FF00000000000000FF00000000003E
-:106460000000FF00000000000000FF00000000002E
-:106470000000FF00000000000000FF00000000001E
-:106480000000FF00000000000000FF00000000000E
-:106490000000FF00000000000000FF0000000000FE
-:1064A0000000FF00000000000000FF0000000000EE
-:1064B0000000FF00000000000000FF0000000000DE
-:1064C0000000FF00000000000000FF0000000000CE
-:1064D0000000FF00000000000000FF0000000000BE
-:1064E0000000FF00000000000000FF0000000000AE
-:1064F0000000FF00000000000000FF00000000009E
-:106500000000FF00000000000000FF00000000008D
-:106510000000FF00000000000000FF00000000007D
-:106520000000FF00000000000000FF00000000006D
-:106530000000FF00000000000000FF00000000005D
-:106540000000FF00000000000000FF00000000004D
-:106550000000FF00000000000000FF00000000003D
-:106560000000FF00000000000000FF00000000002D
-:1065700000000000140AFF000000000100000000FD
-:106580000020100100000000010090000000010048
-:1065900000009002000090040000900600009008A7
-:1065A0000000900A0000900C0000900E0000901077
-:1065B0000000901200009014000090160000901847
-:1065C0000000901A0000901C0000901E0000902017
-:1065D00000009022000090240000902600009028E7
-:1065E0000000902A0000902C0000902E00009030B7
-:1065F0000000903200009034000090360000903887
-:106600000000903A0000903C0000903E0000904056
-:106610000000904200009044000090460000904826
-:106620000000904A0000904C0000904E00009050F6
-:1066300000009052000090540000905600009058C6
-:106640000000905A0000905C0000905E0000906096
-:106650000000906200009064000090660000906866
-:106660000000906A0000906C0000906E0000907036
-:106670000000907200009074000090760000907806
-:106680000000907A0000907C0000907E00009080D6
-:1066900000009082000090840000908600009088A6
-:1066A0000000908A0000908C0000908E0000909076
-:1066B0000000909200009094000090960000909846
-:1066C0000000909A0000909C0000909E000090A016
-:1066D000000090A2000090A4000090A6000090A8E6
-:1066E000000090AA000090AC000090AE000090B0B6
-:1066F000000090B2000090B4000090B6000090B886
-:10670000000090BA000090BC000090BE000090C055
-:10671000000090C2000090C4000090C6000090C825
-:10672000000090CA000090CC000090CE000090D0F5
-:10673000000090D2000090D4000090D6000090D8C5
-:10674000000090DA000090DC000090DE000090E095
-:10675000000090E2000090E4000090E6000090E865
-:10676000000090EA000090EC000090EE000090F035
-:10677000000090F2000090F4000090F6000090F805
-:10678000000090FA000090FC000090FE00009100D4
-:1067900000009102000091040000910600009108A1
-:1067A0000000910A0000910C0000910E0000911071
-:1067B0000000911200009114000091160000911841
-:1067C0000000911A0000911C0000911E0000912011
-:1067D00000009122000091240000912600009128E1
-:1067E0000000912A0000912C0000912E00009130B1
-:1067F0000000913200009134000091360000913881
-:106800000000913A0000913C0000913E0000914050
-:106810000000914200009144000091460000914820
-:106820000000914A0000914C0000914E00009150F0
-:1068300000009152000091540000915600009158C0
-:106840000000915A0000915C0000915E0000916090
-:106850000000916200009164000091660000916860
-:106860000000916A0000916C0000916E0000917030
-:106870000000917200009174000091760000917800
-:106880000000917A0000917C0000917E00009180D0
-:1068900000009182000091840000918600009188A0
-:1068A0000000918A0000918C0000918E0000919070
-:1068B0000000919200009194000091960000919840
-:1068C0000000919A0000919C0000919E000091A010
-:1068D000000091A2000091A4000091A6000091A8E0
-:1068E000000091AA000091AC000091AE000091B0B0
-:1068F000000091B2000091B4000091B6000091B880
-:10690000000091BA000091BC000091BE000091C04F
-:10691000000091C2000091C4000091C6000091C81F
-:10692000000091CA000091CC000091CE000091D0EF
-:10693000000091D2000091D4000091D6000091D8BF
-:10694000000091DA000091DC000091DE000091E08F
-:10695000000091E2000091E4000091E6000091E85F
-:10696000000091EA000091EC000091EE000091F02F
-:10697000000091F2000091F4000091F6000091F8FF
-:10698000000091FA000091FC000091FEFFFFFFFF64
-:10699000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
-:1069A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
-:1069B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
-:1069C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
-:1069D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
-:1069E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
-:1069F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
-:106A0000FFFFFFFFFFFFFFFFFFFFFFFF000000038F
-:106A100000BEBC20000000000000000500000003D4
-:106A200000BEBC20000000000000000500000003C4
-:106A300000BEBC20000000000000000500000003B4
-:106A400000BEBC20000000000000000500000003A4
-:106A500000BEBC2000000000000000050000000394
-:106A600000BEBC2000000000000000050000000384
-:106A700000BEBC2000000000000000050000000374
-:106A800000BEBC2000000000000000050000200047
-:106A9000000040C000006180000082400000A300B0
-:106AA0000000C3C00000E480000105400001260092
-:106AB000000146C000016780000188400001A90074
-:106AC0000001C9C00001EA8000020B4000022C0056
-:106AD00000024CC000026D8000028E400002AF0038
-:106AE0000002CFC00002F0800000114000008000D2
-:106AF000000103800001870000020A8000028E006E
-:106B000000031180000395000004188000049C001D
-:106B100000051F800005A300000626800006AA00CD
-:106B200000072D800007B100000834800008B8007D
-:106B300000093B800009BF00000A4280000AC6002D
-:106B4000000B4980000BCD00000C5080000CD400DD
-:106B5000000D578000005B0000007FF800007FF808
-:106B60000000022A000035000000FF0000000000C5
-:106B70000000FF00000000000000FF000000000017
-:106B80000000FF00000000000000FF000000000007
-:106B90000000FF00000000000000FF0000000000F7
-:106BA0000000FF00000000000000FF0000000000E7
-:106BB0000000FF00000000000000FF0000000000D7
-:106BC0000000FF00000000000000FF0000000000C7
-:106BD0000000FF00000000000000FF0000000000B7
-:106BE0000000FF00000000000000FF0000000000A7
-:106BF0000000FF00000000000000FF000000000097
-:106C00000000FF00000000000000FF000000000086
-:106C10000000FF00000000000000FF000000000076
-:106C20000000FF00000000000000FF000000000066
-:106C30000000FF00000000000000FF000000000056
-:106C40000000FF00000000000000FF000000000046
-:106C50000000FF00000000000000FF000000000036
-:106C60000000FF00000000000000FF000000000026
-:106C70000000FF00000000000000FF000000000016
-:106C80000000FF00000000000000FF000000000006
-:106C90000000FF00000000000000FF0000000000F6
-:106CA0000000FF00000000000000FF0000000000E6
-:106CB0000000FF00000000000000FF0000000000D6
-:106CC0000000FF00000000000000FF0000000000C6
-:106CD0000000FF00000000000000FF0000000000B6
-:106CE0000000FF00000000000000FF0000000000A6
-:106CF0000000FF00000000000000FF000000000096
-:106D00000000FF00000000000000FF000000000085
-:106D10000000FF00000000000000FF000000000075
-:106D20000000FF00000000000000FF000000000065
-:106D30000000FF00000000000000FF000000000055
-:106D40000000FF00000000000000FF000000000045
-:106D50000000FF00000000000000FF000000000035
-:106D60000000FF00000000000000FF000000000025
-:106D70000000FF00000000000000FF000000000015
-:106D80000000FF00000000000000FF000000000005
-:106D90000000FF00000000000000FF0000000000F5
-:106DA0000000FF00000019000000000000000000CB
-:106DB000FFFFFFFF000000000393870000000000BA
-:106DC0000393870000007FF800007FF800000BA30A
-:106DD00000001500000000FF000000FF000000FFA1
-:106DE000000000FF000000FF000000FF000000FFA7
-:106DF000000000FF0000FF00000000000000FF0096
-:106E0000000000000000FF00000000000000FF0084
-:106E1000000000000000FF00000000000000FF0074
-:106E2000000000000000FF00000000000000FF0064
-:106E3000000000000000FF00000000000000FF0054
-:106E4000000000000000FF00000000000000FF0044
-:106E5000000000000000FF00000000000000FF0034
-:106E6000000000000000FF00000000000000FF0024
-:106E7000000000000000FF00000000000000FF0014
-:106E8000000000000000FF00000000000000FF0004
-:106E9000000000000000FF00000000000000FF00F4
-:106EA000000000000000FF00000000000000FF00E4
-:106EB000000000000000FF00000000000000FF00D4
-:106EC000000000000000FF00000000000000FF00C4
-:106ED000000000000000FF00000000000000FF00B4
-:106EE000000000000000FF00000000000000FF00A4
-:106EF000000000000000FF00000000000000FF0094
-:106F0000000000000000FF00000000000000FF0083
-:106F1000000000000000FF00000000000000FF0073
-:106F2000000000000000FF00000000000000FF0063
-:106F3000000000000000FF00000000000000FF0053
-:106F4000000000000000FF00000000000000FF0043
-:106F5000000000000000FF00000000000000FF0033
-:106F6000000000000000FF00000000000000FF0023
-:106F7000000000000000FF00000000000000FF0013
-:106F8000000000000000FF00000000000000FF0003
-:106F9000000000000000FF00000000000000FF00F3
-:106FA000000000000000FF00000000000000FF00E3
-:106FB000000000000000FF00000000000000FF00D3
-:106FC000000000000000FF00000000000000FF00C3
-:106FD000000000000000FF00000000000000FF00B3
-:106FE000000000000000FF00000000000000FF00A3
-:106FF000000000000000FF00000000000000FF0093
-:10700000000000000000FF00000000000000FF0082
-:10701000000000000000FF00000000000000FF0072
-:10702000000000000000FF00000000000000FF0062
-:1070300000000000FFFFFFFFFFFFFFFFFFFFFFFF5C
-:10704000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
-:10705000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
-:10706000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
-:10707000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
-:10708000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
-:10709000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
-:1070A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
-:1070B000FFFFFFFF00000000000028AD00002918BE
-:1070C0000000291900000005000000070000FF0073
-:1070D0000FFFFFFF0000FF000FFFFFFF000000FF9A
-:1070E0000000FF000000FF000FFFFFFF0000FF0097
-:1070F0000FFFFFFF000000FF0000FF000000FF0087
-:107100000FFFFFFF0000FF000FFFFFFF000000FF69
-:107110000000FF000000FF000FFFFFFF0000FF0066
-:107120000FFFFFFF000000FF0000FF000000FF0056
-:107130000FFFFFFF0000FF000FFFFFFF000000FF39
-:107140000000FF000000FF000FFFFFFF0000FF0036
-:107150000FFFFFFF000000FF0000FF000000FF0026
-:107160000FFFFFFF0000FF000FFFFFFF000000FF09
-:107170000000FF000000FF000FFFFFFF0000FF0006
-:107180000FFFFFFF000000FF0000FF000000FF00F6
-:107190000FFFFFFF0000FF000FFFFFFF000000FFD9
-:1071A0000000FF000000FF000FFFFFFF0000FF00D6
-:1071B0000FFFFFFF000000FF0000FF000000FF00C6
-:1071C0000FFFFFFF0000FF000FFFFFFF000000FFA9
-:1071D0000000FF000000FF000FFFFFFF0000FF00A6
-:1071E0000FFFFFFF000000FF0000FF000000FF0096
-:1071F0000FFFFFFF0000FF000FFFFFFF000000FF79
-:107200000000FF000000FF000FFFFFFF0000FF0075
-:107210000FFFFFFF000000FF0000FF000000FF0065
-:107220000FFFFFFF0000FF000FFFFFFF000000FF48
-:107230000000FF000000FF000FFFFFFF0000FF0045
-:107240000FFFFFFF000000FF0000FF000000FF0035
-:107250000FFFFFFF0000FF000FFFFFFF000000FF18
-:107260000000FF000000FF000FFFFFFF0000FF0015
-:107270000FFFFFFF000000FF0000FF000000FF0005
-:107280000FFFFFFF0000FF000FFFFFFF000000FFE8
-:107290000000FF000000FF000FFFFFFF0000FF00E5
-:1072A0000FFFFFFF000000FF0000FF000000FF00D5
-:1072B0000FFFFFFF0000FF000FFFFFFF000000FFB8
-:1072C0000000FF000000FF000FFFFFFF0000FF00B5
-:1072D0000FFFFFFF000000FF0000FF000000FF00A5
-:1072E0000FFFFFFF0000FF000FFFFFFF000000FF88
-:1072F0000000FF000000FF000FFFFFFF0000FF0085
-:107300000FFFFFFF000000FF0000FF000000FF0074
-:107310000FFFFFFF0000FF000FFFFFFF000000FF57
-:107320000000FF000000FF000FFFFFFF0000FF0054
-:107330000FFFFFFF000000FF0000FF000000FF0044
-:107340000FFFFFFF0000FF000FFFFFFF000000FF27
-:107350000000FF000000FF000FFFFFFF0000FF0024
-:107360000FFFFFFF000000FF0000FF000000FF0014
-:107370000FFFFFFF0000FF000FFFFFFF000000FFF7
-:107380000000FF000000FF000FFFFFFF0000FF00F4
-:107390000FFFFFFF000000FF0000FF000000FF00E4
-:1073A0000FFFFFFF0000FF000FFFFFFF000000FFC7
-:1073B0000000FF000000FF000FFFFFFF0000FF00C4
-:1073C0000FFFFFFF000000FF0000FF000000FF00B4
-:1073D0000FFFFFFF0000FF000FFFFFFF000000FF97
-:1073E0000000FF000000FF000FFFFFFF0000FF0094
-:1073F0000FFFFFFF000000FF0000FF000000FF0084
-:107400000FFFFFFF0000FF000FFFFFFF000000FF66
-:107410000000FF000000FF000FFFFFFF0000FF0063
-:107420000FFFFFFF000000FF0000FF000000FF0053
-:107430000FFFFFFF0000FF000FFFFFFF000000FF36
-:107440000000FF000000FF000FFFFFFF0000FF0033
-:107450000FFFFFFF000000FF0000FF000000FF0023
-:107460000FFFFFFF0000FF000FFFFFFF000000FF06
-:107470000000FF000000FF000FFFFFFF0000FF0003
-:107480000FFFFFFF000000FF0000FF000000FF00F3
-:107490000FFFFFFF0000FF000FFFFFFF000000FFD6
-:1074A0000000FF000000FF000FFFFFFF0000FF00D3
-:1074B0000FFFFFFF000000FF0000FF000000FF00C3
-:1074C0000FFFFFFF0000FF000FFFFFFF000000FFA6
-:1074D0000000FF000000FF000FFFFFFF0000FF00A3
-:1074E0000FFFFFFF000000FF0000FF000000FF0093
-:1074F0000FFFFFFF0000FF000FFFFFFF000000FF76
-:107500000000FF000000FF000FFFFFFF0000FF0072
-:107510000FFFFFFF000000FF0000FF000000FF0062
-:107520000FFFFFFF0000FF000FFFFFFF000000FF45
-:107530000000FF000000FF000FFFFFFF0000FF0042
-:107540000FFFFFFF000000FF0000FF000000FF0032
-:107550000FFFFFFF0000FF000FFFFFFF000000FF15
-:107560000000FF000000FF000FFFFFFF0000FF0012
-:107570000FFFFFFF000000FF0000FF000000FF0002
-:107580000FFFFFFF0000FF000FFFFFFF000000FFE5
-:107590000000FF000000FF000FFFFFFF0000FF00E2
-:1075A0000FFFFFFF000000FF0000FF000000FF00D2
-:1075B0000FFFFFFF0000FF000FFFFFFF000000FFB5
-:1075C0000000FF000000FF000FFFFFFF0000FF00B2
-:1075D0000FFFFFFF000000FF0000FF000000FF00A2
-:1075E0000FFFFFFF0000FF000FFFFFFF000000FF85
-:1075F0000000FF000000FF000FFFFFFF0000FF0082
-:107600000FFFFFFF000000FF0000FF000000FF0071
-:107610000FFFFFFF0000FF000FFFFFFF000000FF54
-:107620000000FF000000FF000FFFFFFF0000FF0051
-:107630000FFFFFFF000000FF0000FF000000FF0041
-:107640000FFFFFFF0000FF000FFFFFFF000000FF24
-:107650000000FF000000FF000FFFFFFF0000FF0021
-:107660000FFFFFFF000000FF0000FF000000FF0011
-:107670000FFFFFFF0000FF000FFFFFFF000000FFF4
-:107680000000FF000000FF000FFFFFFF0000FF00F1
-:107690000FFFFFFF000000FF0000FF000000FF00E1
-:1076A0000FFFFFFF0000FF000FFFFFFF000000FFC4
-:1076B0000000FF000000FF000FFFFFFF0000FF00C1
-:1076C0000FFFFFFF000000FF0000FF000000FF00B1
-:1076D0000FFFFFFF0000FF000FFFFFFF000000FF94
-:1076E0000000FF000000FF000FFFFFFF0000FF0091
-:1076F0000FFFFFFF000000FF0000FF000000FF0081
-:107700000FFFFFFF0000FF000FFFFFFF000000FF63
-:107710000000FF000000FF000FFFFFFF0000FF0060
-:107720000FFFFFFF000000FF0000FF000000FF0050
-:107730000FFFFFFF0000FF000FFFFFFF000000FF33
-:107740000000FF000000FF000FFFFFFF0000FF0030
-:107750000FFFFFFF000000FF0000FF000000FF0020
-:107760000FFFFFFF0000FF000FFFFFFF000000FF03
-:107770000000FF000000FF000FFFFFFF0000FF0000
-:107780000FFFFFFF000000FF0000FF000000FF00F0
-:107790000FFFFFFF0000FF000FFFFFFF000000FFD3
-:1077A0000000FF000000FF000FFFFFFF0000FF00D0
-:1077B0000FFFFFFF000000FF0000FF000000FF00C0
-:1077C0000FFFFFFF0000FF000FFFFFFF000000FFA3
-:1077D0000000FF000000FF000FFFFFFF0000FF00A0
-:1077E0000FFFFFFF000000FF0000FF000000FF0090
-:1077F0000FFFFFFF0000FF000FFFFFFF000000FF73
-:107800000000FF000000FF000FFFFFFF0000FF006F
-:107810000FFFFFFF000000FF0000FF000000FF005F
-:107820000FFFFFFF0000FF000FFFFFFF000000FF42
-:107830000000FF000000FF000FFFFFFF0000FF003F
-:107840000FFFFFFF000000FF0000FF000000FF002F
-:107850000FFFFFFF0000FF000FFFFFFF000000FF12
-:107860000000FF000000FF000FFFFFFF0000FF000F
-:107870000FFFFFFF000000FF0000FF000000FF00FF
-:107880000FFFFFFF0000FF000FFFFFFF000000FFE2
-:107890000000FF000000FF000FFFFFFF0000FF00DF
-:1078A0000FFFFFFF000000FF0000FF000000FF00CF
-:1078B0000FFFFFFF0000FF000FFFFFFF000000FFB2
-:1078C0000000FF000000FF000FFFFFFF0000FF00AF
-:1078D0000FFFFFFF000000FF0000FF000000FF009F
-:1078E0000FFFFFFF0000FF000FFFFFFF000000FF82
-:1078F0000000FF000000FF000FFFFFFF0000FF007F
-:107900000FFFFFFF000000FF0000FF000000FF006E
-:107910000FFFFFFF0000FF000FFFFFFF000000FF51
-:107920000000FF000000FF000FFFFFFF0000FF004E
-:107930000FFFFFFF000000FF0000FF000000FF003E
-:107940000FFFFFFF0000FF000FFFFFFF000000FF21
-:107950000000FF000000FF000FFFFFFF0000FF001E
-:107960000FFFFFFF000000FF0000FF000000FF000E
-:107970000FFFFFFF0000FF000FFFFFFF000000FFF1
-:107980000000FF000000FF000FFFFFFF0000FF00EE
-:107990000FFFFFFF000000FF0000FF000000FF00DE
-:1079A0000FFFFFFF0000FF000FFFFFFF000000FFC1
-:1079B0000000FF000000FF000FFFFFFF0000FF00BE
-:1079C0000FFFFFFF000000FF0000FF000000FF00AE
-:1079D0000FFFFFFF0000FF000FFFFFFF000000FF91
-:1079E0000000FF000000FF000FFFFFFF0000FF008E
-:1079F0000FFFFFFF000000FF0000FF000000FF007E
-:107A00000FFFFFFF0000FF000FFFFFFF000000FF60
-:107A10000000FF000000FF000FFFFFFF0000FF005D
-:107A20000FFFFFFF000000FF0000FF000000FF004D
-:107A30000FFFFFFF0000FF000FFFFFFF000000FF30
-:107A40000000FF000000FF000FFFFFFF0000FF002D
-:107A50000FFFFFFF000000FF0000FF000000FF001D
-:107A60000FFFFFFF0000FF000FFFFFFF000000FF00
-:107A70000000FF000000FF000FFFFFFF0000FF00FD
-:107A80000FFFFFFF000000FF0000FF000000FF00ED
-:107A90000FFFFFFF0000FF000FFFFFFF000000FFD0
-:107AA0000000FF000000FF000FFFFFFF0000FF00CD
-:107AB0000FFFFFFF000000FF0000FF000000FF00BD
-:107AC0000FFFFFFF0000FF000FFFFFFF000000FFA0
-:107AD0000000FF000000FF000FFFFFFF0000FF009D
-:107AE0000FFFFFFF000000FF0000FF000000FF008D
-:107AF0000FFFFFFF0000FF000FFFFFFF000000FF70
-:107B00000000FF000000FF000FFFFFFF0000FF006C
-:107B10000FFFFFFF000000FF0000FF000000FF005C
-:107B20000FFFFFFF0000FF000FFFFFFF000000FF3F
-:107B30000000FF000000FF000FFFFFFF0000FF003C
-:107B40000FFFFFFF000000FF0000FF000000FF002C
-:107B50000FFFFFFF0000FF000FFFFFFF000000FF0F
-:107B60000000FF000000FF000FFFFFFF0000FF000C
-:107B70000FFFFFFF000000FF0000FF000000FF00FC
-:107B80000FFFFFFF0000FF000FFFFFFF000000FFDF
-:107B90000000FF000000FF000FFFFFFF0000FF00DC
-:107BA0000FFFFFFF000000FF0000FF000000FF00CC
-:107BB0000FFFFFFF0000FF000FFFFFFF000000FFAF
-:107BC0000000FF000000FF000FFFFFFF0000FF00AC
-:107BD0000FFFFFFF000000FF0000FF000000FF009C
-:107BE0000FFFFFFF0000FF000FFFFFFF000000FF7F
-:107BF0000000FF000000FF000FFFFFFF0000FF007C
-:107C00000FFFFFFF000000FF0000FF000000FF006B
-:107C10000FFFFFFF0000FF000FFFFFFF000000FF4E
-:107C20000000FF000000FF000FFFFFFF0000FF004B
-:107C30000FFFFFFF000000FF0000FF000000FF003B
-:107C40000FFFFFFF0000FF000FFFFFFF000000FF1E
-:107C50000000FF000000FF000FFFFFFF0000FF001B
-:107C60000FFFFFFF000000FF0000FF000000FF000B
-:107C70000FFFFFFF0000FF000FFFFFFF000000FFEE
-:107C80000000FF000000FF000FFFFFFF0000FF00EB
-:107C90000FFFFFFF000000FF0000FF000000FF00DB
-:107CA0000FFFFFFF0000FF000FFFFFFF000000FFBE
-:107CB0000000FF000000FF000FFFFFFF0000FF00BB
-:107CC0000FFFFFFF000000FF0000FF000000FF00AB
-:107CD0000FFFFFFF0000FF000FFFFFFF000000FF8E
-:107CE0000000FF000000FF000FFFFFFF0000FF008B
-:107CF0000FFFFFFF000000FF0000FF000000FF007B
-:107D00000FFFFFFF0000FF000FFFFFFF000000FF5D
-:107D10000000FF000000FF000FFFFFFF0000FF005A
-:107D20000FFFFFFF000000FF0000FF000000FF004A
-:107D30000FFFFFFF0000FF000FFFFFFF000000FF2D
-:107D40000000FF000000FF000FFFFFFF0000FF002A
-:107D50000FFFFFFF000000FF0000FF000000FF001A
-:107D60000FFFFFFF0000FF000FFFFFFF000000FFFD
-:107D70000000FF000000FF000FFFFFFF0000FF00FA
-:107D80000FFFFFFF000000FF0000FF0000001000D9
-:107D900000002080000031000000418000005200FF
-:107DA00000006280000073000000838000009400E7
-:107DB0000000A4800000B5000000C5800000D600CF
-:107DC0000000E6800000F7000001078000011800B5
-:107DD00000012880000139000001498000015A009B
-:107DE00000016A8000017B0000018B8000019C0083
-:107DF0000001AC800001BD000001CD800001DE006B
-:107E00000001EE800001FF0000000F8000007FF8FD
-:107E100000007FF8000005F60000350010000000AB
-:107E2000000028AD000029180000291900000005F5
-:107E3000000000060001000100090206CCCCCCC9FC
-:107E40007058103C0000FF00000000000000FF0020
-:107E5000000000000000FF00000000000000FF0024
-:107E6000000000000000FF00000000000000FF0014
-:107E7000000000000000FF00000000000000FF0004
-:107E8000000000000000FF00000000000000FF00F4
-:107E9000000000000000FF00000000000000FF00E4
-:107EA000000000000000FF00000000000000FF00D4
-:107EB000000000000000FF00000000000000FF00C4
-:107EC000000000000000FF00000000000000FF00B4
-:107ED000000000000000FF00000000000000FF00A4
-:107EE000000000000000FF00000000000000FF0094
-:107EF000000000000000FF00000000000000FF0084
-:107F0000000000000000FF00000000000000FF0073
-:107F1000000000000000FF00000000000000FF0063
-:107F2000000000000000FF00000000000000FF0053
-:107F3000000000000000FF00000000000000FF0043
-:107F4000000000000000FF00000000000000FF0033
-:107F5000000000000000FF00000000000000FF0023
-:107F6000000000000000FF00000000000000FF0013
-:107F7000000000000000FF00000000000000FF0003
-:107F8000000000000000FF00000000000000FF00F3
-:107F9000000000000000FF00000000000000FF00E3
-:107FA000000000000000FF00000000000000FF00D3
-:107FB000000000000000FF00000000000000FF00C3
-:107FC000000000000000FF00000000000000FF00B3
-:107FD000000000000000FF00000000000000FF00A3
-:107FE000000000000000FF00000000000000FF0093
-:107FF000000000000000FF00000000000000FF0083
-:10800000000000000000FF00000000000000FF0072
-:10801000000000000000FF00000000000000FF0062
-:10802000000000000000FF00000000000000FF0052
-:10803000000000000000FF00000000000000FF0042
-:10804000000000000000FF00000000000000FF0032
-:10805000000000000000FF00000000000000FF0022
-:10806000000000000000FF00000000000000FF0012
-:10807000000000000000FF00000000000000FF0002
-:108080000000000000000001CCCC0201CCCCCCCC24
-:10809000CCCC0201CCCCCCCCCCCC0201CCCCCCCC4A
-:1080A000CCCC0201CCCCCCCCCCCC0201CCCCCCCC3A
-:1080B000CCCC0201CCCCCCCCCCCC0201CCCCCCCC2A
-:1080C000CCCC0201CCCCCCCC00000000FFFFFFFFE9
-:1080D000030303031342020250505020706080508B
-:1080E0000200020006040604000E0000011600D67D
-:1080F000002625A0002625A0002625A0002625A0D4
-:1081000000720000012300F3002625A0002625A010
-:10811000002625A0002625A00000FFFF000000008B
-:108120000000FFFF000000000000FFFF0000000053
-:108130000000FFFF000000000000FFFF0000000043
-:108140000000FFFF000000000000FFFF0000000033
-:108150000000FFFF000000000000FFFF0000000023
-:108160000000FFFF000000000000FFFF0000000013
-:108170000000FFFF000000000000FFFF0000000003
-:108180000000FFFF000000000000FFFF00000000F3
-:108190000000FFFF000000000000FFFF00000000E3
-:1081A0000000FFFF000000000000FFFF00000000D3
-:1081B0000000FFFF000000000000FFFF00000000C3
-:1081C0000000FFFF000000000000FFFF00000000B3
-:1081D0000000FFFF000000000000FFFF00000000A3
-:1081E0000000FFFF000000000000FFFF0000000093
-:1081F0000000FFFF000000000000FFFF0000000083
-:108200000000FFFF000000000000FFFF0000000072
-:108210000000FFFF000000000000FFFF0000000062
-:108220000000FFFF000000000000FFFF0000000052
-:108230000000FFFF000000000000FFFF0000000042
-:108240000000FFFF000000000000FFFF0000000032
-:108250000000FFFF000000000000FFFF0000000022
-:108260000000FFFF000000000000FFFF0000000012
-:108270000000FFFF000000000000FFFF0000000002
-:108280000000FFFF000000000000FFFF00000000F2
-:108290000000FFFF000000000000FFFF00000000E2
-:1082A0000000FFFF000000000000FFFF00000000D2
-:1082B0000000FFFF000000000000FFFF00000000C2
-:1082C0000000FFFF000000000000FFFF00000000B2
-:1082D0000000FFFF000000000000FFFF00000000A2
-:1082E0000000FFFF000000000000FFFF0000000092
-:1082F0000000FFFF000000000000FFFF0000000082
-:108300000000FFFF000000000000FFFF0000000071
-:108310000000FFFF00000000FFFFFFF3318FFFFFB1
-:108320000C30C30CC30C30C3CF3CF300F3CF3CF391
-:108330000000CF3CCDCDCDCDFFFFFFF130EFFFFFF3
-:108340000C30C30CC30C30C3CF3CF300F3CF3CF371
-:108350000001CF3CCDCDCDCDFFFFFFF6305FFFFF5D
-:108360000C30C30CC30C30C3CF3CF300F3CF3CF351
-:108370000002CF3CCDCDCDCDFFFFF4061CBFFFFFEB
-:108380000C30C305C30C30C3CF300014F3CF3CF323
-:108390000004CF3CCDCDCDCDFFFFFFF2304FFFFF2E
-:1083A0000C30C30CC30C30C3CF3CF300F3CF3CF311
-:1083B0000008CF3CCDCDCDCDFFFFFFFA302FFFFF22
-:1083C0000C30C30CC30C30C3CF3CF300F3CF3CF3F1
-:1083D0000010CF3CCDCDCDCDFFFFFFF731EFFFFF3C
-:1083E0000C30C30CC30C30C3CF3CF300F3CF3CF3D1
-:1083F0000020CF3CCDCDCDCDFFFFFFF5302FFFFFCF
-:108400000C30C30CC30C30C3CF3CF300F3CF3CF3B0
-:108410000040CF3CCDCDCDCDFFFFFFF3318FFFFF2F
-:108420000C30C30CC30C30C3CF3CF300F3CF3CF390
-:108430000000CF3CCDCDCDCDFFFFFFF1310FFFFFD1
-:108440000C30C30CC30C30C3CF3CF300F3CF3CF370
-:108450000001CF3CCDCDCDCDFFFFFFF6305FFFFF5C
-:108460000C30C30CC30C30C3CF3CF300F3CF3CF350
-:108470000002CF3CCDCDCDCDFFFFF4061CBFFFFFEA
-:108480000C30C305C30C30C3CF300014F3CF3CF322
-:108490000004CF3CCDCDCDCDFFFFFFF2304FFFFF2D
-:1084A0000C30C30CC30C30C3CF3CF300F3CF3CF310
-:1084B0000008CF3CCDCDCDCDFFFFFFFA302FFFFF21
-:1084C0000C30C30CC30C30C3CF3CF300F3CF3CF3F0
-:1084D0000010CF3CCDCDCDCDFFFFFFF730EFFFFF3C
-:1084E0000C30C30CC30C30C3CF3CF300F3CF3CF3D0
-:1084F0000020CF3CCDCDCDCDFFFFFFF5304FFFFFAE
-:108500000C30C30CC30C30C3CF3CF300F3CF3CF3AF
-:108510000040CF3CCDCDCDCDFFFFFFFF30CFFFFFE3
-:108520000C30C30CC30C30C3CF3CF3CCF3CF3CF3C3
-:108530000000CF3CCDCDCDCDFFFFFFFF30CFFFFF03
-:108540000C30C30CC30C30C3CF3CF3CCF3CF3CF3A3
-:108550000001CF3CCDCDCDCDFFFFFFFF30CFFFFFE2
-:108560000C30C30CC30C30C3CF3CF3CCF3CF3CF383
-:108570000002CF3CCDCDCDCDFFFFFFFF30CFFFFFC1
-:108580000C30C30CC30C30C3CF3CF3CCF3CF3CF363
-:108590000004CF3CCDCDCDCDFFFFFFFF30CFFFFF9F
-:1085A0000C30C30CC30C30C3CF3CF3CCF3CF3CF343
-:1085B0000008CF3CCDCDCDCDFFFFFFFF30CFFFFF7B
-:1085C0000C30C30CC30C30C3CF3CF3CCF3CF3CF323
-:1085D0000010CF3CCDCDCDCDFFFFFFFF30CFFFFF53
-:1085E0000C30C30CC30C30C3CF3CF3CCF3CF3CF303
-:1085F0000020CF3CCDCDCDCDFFFFFFFF30CFFFFF23
-:108600000C30C30CC30C30C3CF3CF3CCF3CF3CF3E2
-:108610000040CF3CCDCDCDCDFFFFFFF3320FFFFFAC
-:108620000C30C30CC30C30C3CF3CF300F3CF3CF38E
-:108630000000CF3CCDCDCDCDFFFFFFF1310FFFFFCF
-:108640000C30C30CC30C30C3CF3CF300F3CF3CF36E
-:108650000001CF3CCDCDCDCDFFFFFFF6305FFFFF5A
-:108660000C30C30CC30C30C3CF3CF300F3CF3CF34E
-:108670000002CF3CCDCDCDCDFFFFF4061CBFFFFFE8
-:108680000C30C305C30C30C3CF300014F3CF3CF320
-:108690000004CF3CCDCDCDCDFFFFFFF2304FFFFF2B
-:1086A0000C30C30CC30C30C3CF3CF300F3CF3CF30E
-:1086B0000008CF3CCDCDCDCDFFFFFF8A042FFFFFBB
-:1086C0000C30C30CC30C30C3CF3CC000F3CF3CF321
-:1086D0000010CF3CCDCDCDCDFFFFFF9705CFFFFFE5
-:1086E0000C30C30CC30C30C3CF3CC000F3CF3CF301
-:1086F0000020CF3CCDCDCDCDFFFFFFF5310FFFFFEB
-:108700000C30C30CC30C30C3CF3CF300F3CF3CF3AD
-:108710000040CF3CCDCDCDCDFFFFFFF3320FFFFFAB
-:108720000C30C30CC30C30C3CF3CF300F3CF3CF38D
-:108730000000CF3CCDCDCDCDFFFFFFF1302FFFFFAF
-:108740000C30C30CC30C30C3CF3CF300F3CF3CF36D
-:108750000001CF3CCDCDCDCDFFFFFFF6305FFFFF59
-:108760000C30C30CC30C30C3CF3CF300F3CF3CF34D
-:108770000002CF3CCDCDCDCDFFFFFF061CBFFFFFDC
-:108780000C30C30CC30C30C3CF3CC014F3CF3CF34C
-:108790000004CF3CCDCDCDCDFFFFFFF2304FFFFF2A
-:1087A0000C30C30CC30C30C3CF3CF300F3CF3CF30D
-:1087B0000008CF3CCDCDCDCDFFFFFFFA302FFFFF1E
-:1087C0000C30C30CC30C30C3CF3CF300F3CF3CF3ED
-:1087D0000010CF3CCDCDCDCDFFFFFFF731CFFFFF58
-:1087E0000C30C30CC30C30C3CF3CF300F3CF3CF3CD
-:1087F0000020CF3CCDCDCDCDFFFFFFFF30CFFFFF21
-:108800000C30C30CC30C30C3CF3CF3CCF3CF3CF3E0
-:108810000040CF3CCDCDCDCDFFFFFFFF30CFFFFFE0
-:108820000C30C30CC30C30C3CF3CF3CCF3CF3CF3C0
-:108830000000CF3CCDCDCDCDFFFFFFFF30CFFFFF00
-:108840000C30C30CC30C30C3CF3CF3CCF3CF3CF3A0
-:108850000001CF3CCDCDCDCDFFFFFFFF30CFFFFFDF
-:108860000C30C30CC30C30C3CF3CF3CCF3CF3CF380
-:108870000002CF3CCDCDCDCDFFFFFFFF30CFFFFFBE
-:108880000C30C30CC30C30C3CF3CF3CCF3CF3CF360
-:108890000004CF3CCDCDCDCDFFFFFFFF30CFFFFF9C
-:1088A0000C30C30CC30C30C3CF3CF3CCF3CF3CF340
-:1088B0000008CF3CCDCDCDCDFFFFFFFF30CFFFFF78
-:1088C0000C30C30CC30C30C3CF3CF3CCF3CF3CF320
-:1088D0000010CF3CCDCDCDCDFFFFFFFF30CFFFFF50
-:1088E0000C30C30CC30C30C3CF3CF3CCF3CF3CF300
-:1088F0000020CF3CCDCDCDCDFFFFFFFF30CFFFFF20
-:108900000C30C30CC30C30C3CF3CF3CCF3CF3CF3DF
-:108910000040CF3CCDCDCDCDFFFFFFFF30CFFFFFDF
-:108920000C30C30CC30C30C3CF3CF3CCF3CF3CF3BF
-:108930000000CF3CCDCDCDCDFFFFFFFF30CFFFFFFF
-:108940000C30C30CC30C30C3CF3CF3CCF3CF3CF39F
-:108950000001CF3CCDCDCDCDFFFFFFFF30CFFFFFDE
-:108960000C30C30CC30C30C3CF3CF3CCF3CF3CF37F
-:108970000002CF3CCDCDCDCDFFFFFFFF30CFFFFFBD
-:108980000C30C30CC30C30C3CF3CF3CCF3CF3CF35F
-:108990000004CF3CCDCDCDCDFFFFFFFF30CFFFFF9B
-:1089A0000C30C30CC30C30C3CF3CF3CCF3CF3CF33F
-:1089B0000008CF3CCDCDCDCDFFFFFFFF30CFFFFF77
-:1089C0000C30C30CC30C30C3CF3CF3CCF3CF3CF31F
-:1089D0000010CF3CCDCDCDCDFFFFFFFF30CFFFFF4F
-:1089E0000C30C30CC30C30C3CF3CF3CCF3CF3CF3FF
-:1089F0000020CF3CCDCDCDCDFFFFFFFF30CFFFFF1F
-:108A00000C30C30CC30C30C3CF3CF3CCF3CF3CF3DE
-:108A10000040CF3CCDCDCDCDFFFFFFFF30CFFFFFDE
-:108A20000C30C30CC30C30C3CF3CF3CCF3CF3CF3BE
-:108A30000000CF3CCDCDCDCDFFFFFFFF30CFFFFFFE
-:108A40000C30C30CC30C30C3CF3CF3CCF3CF3CF39E
-:108A50000001CF3CCDCDCDCDFFFFFFFF30CFFFFFDD
-:108A60000C30C30CC30C30C3CF3CF3CCF3CF3CF37E
-:108A70000002CF3CCDCDCDCDFFFFFFFF30CFFFFFBC
-:108A80000C30C30CC30C30C3CF3CF3CCF3CF3CF35E
-:108A90000004CF3CCDCDCDCDFFFFFFFF30CFFFFF9A
-:108AA0000C30C30CC30C30C3CF3CF3CCF3CF3CF33E
-:108AB0000008CF3CCDCDCDCDFFFFFFFF30CFFFFF76
-:108AC0000C30C30CC30C30C3CF3CF3CCF3CF3CF31E
-:108AD0000010CF3CCDCDCDCDFFFFFFFF30CFFFFF4E
-:108AE0000C30C30CC30C30C3CF3CF3CCF3CF3CF3FE
-:108AF0000020CF3CCDCDCDCDFFFFFFFF30CFFFFF1E
-:108B00000C30C30CC30C30C3CF3CF3CCF3CF3CF3DD
-:108B10000040CF3CCDCDCDCD000C0000000700C003
-:108B200000028130000B8158000202100001023067
-:108B3000000F024000010330000C0000000800C0DC
-:108B400000028140000B8168000202200001024007
-:108B500000070250000202C00010000000080100DF
-:108B600000028180000B81A8000202600001828067
-:108B7000000E829800080380001000000001010030
-:108B80000002811000090138000201C8000101E85B
-:108B9000000E01F8000002D8CCCCCCCCCCCCCCCC94
-:108BA000CCCCCCCCCCCCCCCC00002000CCCCCCCC15
-:108BB000CCCCCCCCCCCCCCCCCCCCCCCC0000200005
-:108BC000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCE5
-:108BD00004002000CCCCCCCCCCCCCCCCCCCCCCCCE1
-:108BE000CCCCCCCC4100200003030303034202029F
-:108BF0005050502070608050131313131342121200
-:108C000050505020706080500301020000000000AE
-:108C100000000000000000001F8B080000000000A2
-:108C2000000BFB51CFC0F0038A0F093230688A2055
-:108C3000F8C4E05C760686751C0C0C5BB849D3075B
-:108C4000C32C0C0C0CDA4CE4E905E1FBBC0C0CAFBA
-:108C50008098850F559C871342FF015AC0C7CAC030
-:108C6000A0C1865DFF3A35043B408581A11C88D9AF
-:108C7000941818CC5411E2D2EA0C0C3380FC04A8EE
-:108C8000D81D201DAB46BE9B47F1E0C1378D51F981
-:108C90005B0DA169012A7E0B4D7E1B54BE4A074223
-:108CA000DF36C66E6EB50E71F69FB546E5AFB4C63B
-:108CB000AFFEAE3D2AFF209AFAAD503E00C5D55B0F
-:108CC000A7D8030000000000000000000000000022
-:108CD0001F8B080000000000000BED7D7F7C14D589
-:108CE000B5F8999DD9D9D9CDEE6608096C20E02454
-:108CF000861AFB82DFE577A841878034B63CDF8A9D
-:108D00005AD3D6F6BB506C551456BF3EE1F56933C5
-:108D1000F941122262049FDAD61F2B554BFB6C8956
-:108D2000942AAD3FDE024AF1F5C743AAD5D7A22F58
-:108D3000FE80AA455FC4D2D87E51DE3DE7DEC9CEB3
-:108D40004C76930DD01F7FBCF081E1CEDC1FE79EF7
-:108D500073EE39E79E73EE8DEA0BC2C7CE05388EEF
-:108D60003FECD913028059D9A771F5BCAEBE99006A
-:108D70004721D2D35D0AD0A68009AC6C1D88A41F00
-:108D800094007F6A14565E2D7F3CDE5D097067D1CA
-:108D9000D7EEC3FA6B2C0502ECD9DD0C9039837D3C
-:108DA0000F453743314011A4B6E277F6937890F53A
-:108DB00037109C9C866876FC32F0D1B80015FAA179
-:108DC00022AA07C765F6CF81E47C18072083FDB38C
-:108DD000067A593FCAF3721AC795E5C5FA8B55D979
-:108DE0007EBC4F595721A389FEF01FF9B2E26438C7
-:108DF0007FFD35072AB73E5D93AD7F06444A0FFDE0
-:108E00001DFB8F020AC123AF07C4C3D130A4E5CA3A
-:108E1000FCFD0C341B5B9FF6231EBF509C989ABF31
-:108E20009E8DA7AE668D9E1DCD3A6402000C64B384
-:108E3000B7963DC3606EAE1DDA6E0148842FCDB08B
-:108E4000089EF6B02F5D5489502701187EFD881FBB
-:108E500009DF2FD1CC1CEDED279432FCD8F36578D7
-:108E60000C02EF0FD8FC1E64FD0571FC1CF8BA085B
-:108E7000C72F63DFAB878E6FCD3CF1F1436702EC08
-:108E80000B23BE4D84017C7A0AE282DE9F9486E940
-:108E900047D05931783F23E1BDA8C6971D97FD0DF6
-:108EA0001A21179F0462256EBEF1F225E2A90CE992
-:108EB0006548AF4FC9F6AB22DD72E0EB4A81AFFEE9
-:108EC000F989A604C3C7DA66B05E73B4936360A67B
-:108ED00073E069B568678FA794B27A39FA076811A9
-:108EE000EBC772D52F14BE9B4E10BE9BFF42F0DD28
-:108EF00026F89D49287AF6CF4F129CDEFE72AD2FE0
-:108F0000B68807CB21256DF990BF4B21FE207BF859
-:108F100035BECEECEFDF073FF5B303250E1BA74DA3
-:108F2000C0D73F9FCBBFB5D3D4F46689E4910BCEB5
-:108F300087517EB1769224F0A1F502F25FD1070A43
-:108F4000C05884CF844404605D7583369CFC015D09
-:108F5000F9539FCD775543F9EEE36C18842B14CE6B
-:108F60008DA7EF0FCAD1CBACD7583F5A90BD3F1D4C
-:108F7000FB2D8D55CC069C1DFDF8C577907CF271BC
-:108F80005CB7C758BDD942CECAD43FC911A8009218
-:108F9000F7B2A84FE3B0FA01362D733A7BE2FB1A21
-:108FA000318E34B45F6FBB0128E1F811F0D8725DE7
-:108FB0008627A89F41789404E1CBFBDECFDEEBE16E
-:108FC000937F7FB265BF9167BC1E89F869A4F6AF35
-:108FD000087E19C29F79E8BA5FAC33057A4D383DF7
-:108FE000CB47367F9D281F9D349FB0E1495FE4E168
-:108FF000130B52B46E5835AB7BDAE8F925079F6442
-:109000009CF5174B63F83C9438F10B834721BED590
-:10901000393C65D34BA93F09D7F819D88328231EBB
-:10902000D87C97D9ED214EEB3584768EA33D9B1CE1
-:10903000C12BC99290FBBCDE0D629DCF6BA8E0F006
-:1090400083E8DF032FEB4F73F627438587CF39DCA7
-:109050001B242EDF58FD0CE1D33BBE2211BC322471
-:109060002C1F6BB7598CEF955FF673BBE86FBD048F
-:109070004DBD61BE9E9638F4618324E484C6D799C1
-:10908000573EF991AF669C385F152AD7174BB9F553
-:109090000EB38A621746F2EB9D629FAD0F323141EB
-:1090A000B751D1FD74A9C445F742E15D7682F04E17
-:1090B0001C0A6F417C76A6E41B959EBCE104E10B83
-:1090C0007AE03B557C3D43F059A1F0DBEB60B4F016
-:1090D000CB43F15BD03A9A3B4AF8369F207ECB7C5B
-:1090E000B69D24E0CBB36EE7097A5BC0F9436176A5
-:1090F00038EE730A85EFD191E103F804FB6BBD6A8A
-:10910000990AD96B0013009E6E79D5B2942C7C26F7
-:1091100070B93EDAF1F78C4C3F31FE5B96599D1DDC
-:10912000FFF996B75CE32B8C7F90D90A1DF7854237
-:10913000E70DEFB9E6FDBAF49E6BDC13C5FBC18207
-:10914000C7FFA36BDEEF4B7F74CF3BCCE67D7AE1AC
-:10915000E3FEFE04F9B152AC97064977E9817CF64B
-:10916000FB0C41D7BBEDFA36BC79EA9F29E06A2FA8
-:10917000B0FE44D1FFE70AACDF2BFAEFC5FA652356
-:10918000D73F5DD44F15585FF2F175984F7FCE975A
-:109190006CFC816BFFD1A6713F88D9A640F09CA1E1
-:1091A0007E13AB21F5ED3E467BAB35A0B79592DF44
-:1091B00084FC226B0012E837F92624EB7CAC1F6399
-:1091C000C74DF761BD238AA677EBC01724FB1E3C71
-:1091D00010D9DC5D991D6FB59C6C929097DAA2FA5C
-:1091E00083E45F493549EC59668575F4DB0C5425F9
-:1091F0005A9696E23C0CDD62FDFCFA8A8B76627927
-:109200009326E9322BFFCB39736FFB0C6B35F0E102
-:10921000CE974EC37AD3C655B592BC3425C44F6998
-:109220005C35E5287B5E7C71561FE03F8B1D6566D3
-:10923000077CB6E9122EFFC5F7CF27DDE54B1A2FC5
-:1092400071B5BF34E1FE9E9D0FF07DC7B9DCFF30E4
-:109250005095FA2F0ED7C72A2DEE5FA0F9EA565483
-:10926000EF66F35CFFE1B5545EDF52ABB7B2F2E7F5
-:10927000AEF4B72C65CFB004BACC9652715CA5F9A8
-:10928000029BAF5AC7768FE73CDB35DBC8BFFF2AAE
-:10929000363DF38C5F9C8593CDB3E9EADC70ABFA85
-:1092A000FB13DE60F6D2C0CEA089F084F7CAE9A035
-:1092B0004474DD3909E9621527397D40AA66CF2358
-:1092C0008D3AA07FA4A13169C8ACBC31A6C5030604
-:1092D000DAC9190DF11E411ACC65EFE3BE20DA633D
-:1092E000AAFE07EA5F17DF7BE255E3D13FF2E3E630
-:1092F000351315B6DE77345BF47CB4B98B9EDB9BFB
-:109300007B262ACC88DFD27C173DEDF9A12431ECF5
-:10931000F9C9B8AF365B91DF06FCCC34423CCEF7DE
-:10932000D1FE7603CA113FCAE1745B14DFD7C1B422
-:109330006E40B9C4E5CBC6F8B6DDF87E633D4C435C
-:10934000926D3437B745D93CAE2B87E9D8F7CE9725
-:109350001FE3DF2B607A8095773536905CED89FBD3
-:10936000D2814A82FF7CE4E79E461F3093078AEB56
-:10937000185C0EBC0662EEF2AE4626B066123ED215
-:1093800001293B7F852D33C4C746B32AE8DC57CF7C
-:10939000DAE76E7F66DA5DDE88ED87F14BCDED733F
-:1093A000D79FF392BBCC24DB2B837CC0F1F8AF3E7C
-:1093B000260F76BF3CDE67E1BC4D3E4FF6E4FEC2B1
-:1093C000982F8DC6E716813F1BBF03112E5F3636DF
-:1093D000733F603E78367EEAAAD8707E03B5B1232B
-:1093E00081FE54B5B1270167E1332D9EBD09A79FCA
-:1093F000D57EBE88C68FC35FD211DB58B2B4360BA0
-:109400008FB7FE785925793750C6BF77C45ED3979A
-:10941000D63AFB93BCDFB5CBC3CEEFDCAF32506E98
-:109420007F3FA22D0DE7683F897DCF4197A532FF91
-:10943000FEF4CB81863B901F057E77BFFC13AD1AEF
-:10944000F1FDBC0CC8671BF73590BC453E4379B1B4
-:109450008BF1455F2DD27FFD2BCE755B5CE72E3304
-:10946000BEE2FCC5FAC5A17E86F4601DFEBBF0CB52
-:10947000EE157ED93DCD317A3EDD6CD07357730D3C
-:109480007DCF34C7A9FC54731D959F6836A9FCE3B2
-:10949000E6462AEF684E50F9D1E6267A6E6F4ED234
-:1094A000734BF315F464FC4BFCBCA13925FCC06B79
-:1094B0005CFCF0F7F1808BFF3E5DE32E9F6F9C918B
-:1094C0005DD7ECEF2763EEF279FA275DE5059ABBED
-:1094D0003C1FBEE2EAEFDC0FBEEC2ACFEBEF70D50B
-:1094E0003FFB4D77796EDF439EF5E22ECFDAB7C7AB
-:1094F000B31EDDE5E2BA43AEFE023177F97E1432E7
-:109500005C4E117F74C45A4B72F2CFE0F78DA12FDD
-:10951000B9BECBD47E64FE59D65589FC93F6C52DD1
-:10952000943B26E7275BEE78F9C4A6DB48FC65C3CD
-:10953000F197E6ABFFE5A7E1F9A9607EA85772F2C3
-:109540008397EE5EFE18226704BFFC2F1FFC6DF0B0
-:1095500001CC64C42ECFAF5773D877649F061240F6
-:10956000F69D1FED34477B75722A69E6D09F57F947
-:10957000E66F95593F8152E8C0786840C9E3E795A6
-:10958000F93E25A0F1EFC16A93ECB26230A6CB633D
-:1095900000AE796C5EF932F6FEE7421F765C089603
-:1095A000C4FA1B37414DE23EA6B8DABDDF7B46E682
-:1095B000FB18FBB9E9879126FC0EA5334798378F36
-:1095C000D7C8136737FDC660CF0B666F59CBDE86F1
-:1095D000AA9319F2019596927D9A0C19D4AF5997D6
-:1095E000B67CA518478338DA8972D884241B67AE05
-:1095F000CFFC05CE9BD947FF21CFCADA3D9BC4F3F0
-:1096000047621D5EE4337F29EA3D3F5C3D7BDC1110
-:10961000E905494BE2FEA9F8830C447F69DC653F0C
-:10962000D9F353948499C8616FFC4EE04BD2E34D5B
-:10963000DC0FA202CA877CF50FCAB6FFC972ED071C
-:109640008BA13F23231C311E6F82631719174E1DF8
-:109650000A87AA2492380EC6AB37B371DAC77CC624
-:10966000483AC6F948E67E2A2966123CAACEE1515C
-:1096700095B899C8C14703021EBB1F3B6E26C5FAA9
-:10968000A12F9C856F6D30D184FB256B8C4A786A45
-:109690008FB8EDAF190AEFA75A3CDBFDB9ED438057
-:1096A00056BE1F1E57A761FF6D750D1ADAD78C1DA8
-:1096B00068BFD21E5E523C9CBDBD5ED8BFDD280F88
-:1096C00003180FD785BC8AD1B33DBCAD11D7C1D12A
-:1096D0005A8687CAFCFD44E2EEB86E514DC813C7E6
-:1096E0004D139C41A3C413EF9DE06AE71FA7F8EC5C
-:1096F000B8364823C3DF21E0B7EB752A294DCF895F
-:10970000273EBE5D0EC4DCF0FEF9F0C7DB17F97B27
-:10971000F55C709D2ABCE58BC3DA4F75AC9A4A7331
-:109720007F4ACCB90E3E2BF84B1DABA5483E69F9DC
-:10973000BE8778FB7082FC5B5A38614055361EABA1
-:10974000E17A70E0E95AD1EED78A4FACCB540CFDE8
-:109750005C92916A427ED22AD83A9286B6B39F49E9
-:10976000D1BEF3C3FFF712AD93328DD68964B075C5
-:1097700094631C4931AF56D8F31DD9BC46C1F8CC0F
-:10978000477232D77A5921E0D116270CAD8A427838
-:109790003CDFC303C73A85EB834336FC568AFC564D
-:1097A00085C2BFA640F8ED7118FCED02FEB5C3C13D
-:1097B000DF26E02901A3857C990697B300171ACE0E
-:1097C000BC8B37C4F825424E314C11DDECEFFF2540
-:1097D000FA29743E1B059C23CDE78D2C3DEEC579FF
-:1097E000B0F9DC87F3CA379F7B041C6F285CCF6815
-:1097F000898411AB22559F93AF9E1070F42B228E5B
-:10980000665D3B2ABEFAD702E7F144962E8F09BA6D
-:10981000EC186E1E8F8A79F4C830F70DF4339E2E43
-:10982000F40E2C71D1E5A8C04F4FC0A6CB752EBA4F
-:10983000FC4ECCABD0F93C53209F1DCDD2E5393145
-:109840009FFDC3CDC751FF4551FF25519FFCE74701
-:10985000952B5AAD5AFC9E38A0CCCA8EC7EABDECF7
-:10986000AC776DFB2CBBDEABC80F5223D783ACDECD
-:109870006BCE7A605DD08AF6DB5A8C897E02E081FD
-:10988000F6AF3688766F52BBC583FDBF25D607B5C8
-:109890005BD73EBFD50A53BD77F07DCB828FEC7A84
-:1098A000EFBAE15D61C37184E04D0CC2F1BEB3DE7D
-:1098B00013CAE7A9BF217947B19282EC1F7F699251
-:1098C000F2F74A20D283FEC50E2545FE640C36A071
-:1098D0001F7275204EA92A23F9A3CB2EE6ED7445FD
-:1098E000237F6A005270177BBFA154A1F8C862257C
-:1098F00019F1A31D21252D0AAE827E590BF63FD604
-:10990000A0FC2F1B9EDB8ABED845FD3078B0DF3B24
-:109910008BA23B91AF364E520DE4AB9D936E20BFB0
-:10992000F96D2D3C7FF0B6F355DA676D7A3942FA5E
-:1099300077AD12FF2CD6B74CD5403FFAEAD0472F6F
-:109940002D67E5BE96625D3A87E641705B3E48B49E
-:10995000CD74E42332B80371CAA7233FDC6D8D3C7C
-:10996000AEC37ECAB1FDEA0546BCDB40F1C5E418D2
-:10997000FBDE59A792FD7A5B45D57C1C6F539D4653
-:10998000F6C6A6C5552DE4C7AB0B91BFB2246C48F3
-:10999000E8678FCE519901CECAA5460BDA9B91D9C3
-:1099A0002140BF5349051F2F7206901FCA0F3D89E2
-:1099B0006AF68C76A990198BFD2DC97C09ED99BAB0
-:1099C00000F9E1D9C4F6D78EA39437FE23FF0C101B
-:1099D0001EFF441910EF367DA33D83ED87CD638CC8
-:1099E000A60BAC9729AC5EA44B81CC8C02EAF51493
-:1099F000582F5D60BD0CAF17800B87CDE78338CF44
-:109A000023D4D81F9EC7E8C82BACE4F6BBD36EF1B5
-:109A10007BBE8F362FF42ABFC80B9D0373785EE898
-:109A2000F0EDED7CD091E60BE0CBC2298F5C7F6D31
-:109A3000F3F07E63FFB81B62987FD959F655F1BCED
-:109A4000913FCBC5FBF2353194779DE5E27BF98DF3
-:109A50004DB9F6AF77FAB91CAE81C4B0742811F0D5
-:109A60001F62B0637E4F8DC2EA47F2D7574B7DC36A
-:109A7000E6596A8AD540EB76B18FD66D008501AE86
-:109A80009B0ABE8EFD904A54F37855B4DCB17EFC3F
-:109A9000F57B68FDFCA25C06A98EE813473C7AF9C9
-:109AA000C4CB170170942B4F9E4FB6FE99F8C4DFBC
-:109AB0002517B47EFC3D05D64B17582F53583DB59E
-:109AC0004B2A48AEA83D05D64B17582FC3EBAD9D8A
-:109AD000AB727D0E7F68C578BFFF139AABBCF613DF
-:109AE00021F7F7B3C3AE72C72C777B75B6BB7DC7C2
-:109AF0006C777B750E6F1FEC800518CF2F749D1C43
-:109B00003CC17552A30D5F3F5237C2BAD2F420B6A2
-:109B10002F510CC89492BE4A0BBD95331E7E9ACA33
-:109B2000D77F959FC7CF6F53F420EE23FFD6E72949
-:109B3000A93C9FC09EEF48F0DAF2F7B7B2B0B7F297
-:109B4000E47D438C9F7FF043288E768EB1506B78F6
-:109B500085E1D1FF2CCF7BF7F6FB8A9A9CA63AF6DB
-:109B6000C5CC3E83A4C30F737E99C2F36D181DD07C
-:109B70001E5221D158C9FA6BABF0913DA28447D057
-:109B80001B150EB995232F2FEB970213CF53D02718
-:109B90000360FE9B7CDC501C08EE08F4D166BA180A
-:109BA00053E54E07180386C493BEE212CF13ACD719
-:109BB000519E95064F75BF9751BF92791B1C2F1A66
-:109BC00045BF4A1FE5CB9CF27E478037087753BFDD
-:109BD0006C97547A7C6CB65F7F2C452F314F56764C
-:109BE000E4CBE1B908CA37F1C53394DF30214AFB31
-:109BF000B2B5A5D7B9F2C1FF59AD72F98754BDE32B
-:109C00005A09E3BA15579B7DC3F079331357E4F72C
-:109C1000AC586EF6D5E4AF3798A78FF99E39D64188
-:109C2000879A4CA3FD6E4D0EF3FDBC92227F63A775
-:109C300054321DF32DEC7A4A0593B40CAEC84CD3C4
-:109C4000C2FD5EE7585F1CED5405D6EF93CE62ED82
-:109C5000E4C571A7FFD2FB542A94B79DF3B95D65A3
-:109C60007A12E1147AB26D047E1FD1EE51E3C95C21
-:109C70007ED16FAB7C5FEB0FE5FEDE176A78409D0F
-:109C800035146F8F217E717F3B06BAA4FFC3D9873D
-:109C9000F2A52AF6BC8478585BB62836DC7CD90657
-:109CA000EAF0205D18897F16321F4179300C1C3F85
-:109CB000CC0507840BF37FEB0BE3C48783F65229B3
-:109CC00088FD98199518DF870457DE32737306CF25
-:109CD00043F897864DA49F6C6E01F457DB76936C26
-:109CE000865EF5113DEBB9FD54C3ED2193FDC179BD
-:109CF00044EB87B7AB654FF939D56D0FB535EF003C
-:109D0000679E9BF75C85FD4C871A5ECC8D8FC2F6F3
-:109D1000C3B7337EC13CFB8DCD1A22057A9A752AD2
-:109D20006F688E51797DB341CFF6E61A7ADE8C4D9D
-:109D3000E7E2F9A7545725C35B57EC81D8E5ACCAD5
-:109D4000ED283B288FEFDE05682F770F96D93690E8
-:109D5000C1DD3D09785E9F7AEB02DCE7770741F8C9
-:109D600015DA16A05D9D2DDFD1361FCBC2CF10EACC
-:109D7000BC6F01EEF76F17F90FA098DA250EBD77CB
-:109D80005AC04FFC477B576A6FB5617F414594E1EC
-:109D90009105EE3298084F50E3E505816DD43F8977
-:109DA0000036DEA7033FE0E34D11F96DB54B46C029
-:109DB00023F7EF5BAAC1FD5DB525143F52E3717433
-:109DC000BFC2ED6304DC05F6034A92EB3B718E2FB4
-:109DD000FFBA1941AF093846A23F4307F9D1EDF365
-:109DE00069CA0BB9F5F4A91EF776FFE8F0A2D6F51B
-:109DF0005B7886ED09353927C0DA47CCDE4C252B58
-:109E00004717672C5ABE058E3B3660E7392669FD39
-:109E1000DB7856746E77ACF0D0D15FCAE3754171D0
-:109E2000FEA4507893AA1847F4030F37940F67AF36
-:109E300095257C68840DCA8BB18D21E19CE1E531CB
-:109E40006689AB5C5C37C1553F12AF727DF7EB1F83
-:109E5000777D3F513A5DE299C7A784DD6897CFF5DA
-:109E6000CEB3C07E0F1627560570DD34404D8AE113
-:109E7000F5CE2F3C44F80F0DAED385ED6605E58396
-:109E80008B753D8F9775FB7B5DBB59CFCA86FD7D7A
-:109E9000062F9BF6F738AF6FD9DFA7F2EF28F759F7
-:109EA000F96B9D67B45BF81D5AC96F0B152958E211
-:109EB000A0CFD8F10DAD08DFF8CBD2318BBDEFFECE
-:109EC00050E6F2007A62CE7A776ADC0FFDCC943BE2
-:109ED00062E8AF5C77E64331207927E58C07FE3CEA
-:109EE000C0F3C5CA42899E00AD77B3BF98F1E1A126
-:109EF000876483EB21E535D4873E8BE7E3AB10DF46
-:109F000067A25D54C3FDD521F19DE85899AD3F4846
-:109F1000574FF9EF34AED77F87491B0CCEEF159B17
-:109F2000F7D0B890961AD97AAFB0A01FCF1F81B0E2
-:109F3000FB26F2A6509A48939F6F12C3A7CCBE4F40
-:109F4000BEB8BFC5CF706D5CA6FB7089542D8FFB6A
-:109F500048C00DDA9163A5E3ECF93DA417CAE39B71
-:109F60005280FA7BED990F35215E02997F0283E1E1
-:109F7000ED1F27A5C040FF6F80C315B8AC07483E52
-:109F800057F7109EBDF85A3788F7B40BEF3F0970AA
-:109F90007F7E2CC9DB0DD65358BDA943EB75077BDB
-:109FA000E6AB68BF4DE178F48EF35E4012E776DDF4
-:109FB00070D8FD7AEBDF1210716D2D4DF18D67CEEB
-:109FC000BC21867EEDCE298CFEB5F9E97F4B80E77A
-:109FD0005B19C76E22B9DB3D6923C533D7556F26A0
-:109FE0007BF228B323F0FC747765EEF69DCD3C3F01
-:109FF000E65CB8BBB18AD1A7F37999FCB4DE7ADF0D
-:10A000000954B9E28D5A857B3FC8F8AF0FE5E8489F
-:10A01000FC27471EE0EB72947C8766213FCF50D629
-:10A020008EF6805F94EF0E1C6F13FA9FE47FF9F2B7
-:10A030001E70E64BBE2FF82213E0722658C1F9A31A
-:10A04000DB6F494EFAC5D8FBF98E76F9E8968F1F7B
-:10A050001E17EBE17D25DE44CA5F49E9B9E4B3127E
-:10A06000FBF42F173ACE7BB52B694D47F86B364A78
-:10A070004EBBF61B6632A439F627A1D805BF5C8813
-:10A08000FB1F259E739FFE29D38C6A6CFC9B9B61F2
-:10A0900046359E4B50AC00D6BB59C934D2BEA2DA6D
-:10A0A00047FEF27515D7EDC53C2BABD617C76A6DC9
-:10A0B00015BB1AAB0CE4976D9467FAA6BE2486FD17
-:10A0C0000462EA8CEAB194DF9DC079876B59BF0EB8
-:10A0D0007ADBE3DE2DF8F65BBA3959E3F2E034EDD2
-:10A0E0002F200FDE87788C1B590CCF39F65743F1A0
-:10A0F000CCF3043A2B86E0798EE6E0EB00E27906B9
-:10A10000C9FB9CFE0B86E7B35D780686E7A9593C40
-:10A110007757703C77D66CEEAA72E2B966D7DE4A02
-:10A1200003C7E7787E48E3E773438867079C5E3C94
-:10A1300087255BFF7CAC1DF9D6CBF70CEF7F8FF04A
-:10A14000D8EF3F0AFC82ECE1B1E313176AE43F4920
-:10A15000D1FEE94E29AF5EBA442B402F758A757443
-:10A16000A7C03FEBFF0BD47FA9E8DFD6B7421FFEA5
-:10A1700083F66F0B501FB27ACBA89E9EA27DF06033
-:10A180003D0B86D5A3ACDD95C447614FFF268C4AB5
-:10A190001FB37EAEA37E34CFF8069C949E67FDDE8F
-:10A1A00044FD2A9E7E4FB13DC1C6E926FC81070FC2
-:10A1B0007F663B2696F4F083D2E3927B363F942F62
-:10A1C00077D7CBAFD77AB85E1B6AD710DFFEBC73E8
-:10A1D000CF6EDC27BDA99BDF46BC8E761DD876608E
-:10A1E0005928B94DE376209D83B0BE51946E636DBE
-:10A1F00095E33D511E7F77EBA3F1B63D54CDF5407D
-:10A2000070947A699FB0D73AC6301955CC9EFE44F7
-:10A21000532E3FC3339A9DB7E6B69B7F8373243F8B
-:10A220005182FC6BEDB1CFECE863B4331B7B20971C
-:10A230009C4F86923FC7F9A9BA65927A15FE917C28
-:10A24000FD9626AC9D7B6792DCEDC7BC461072186C
-:10A250004D6BF4C74519DE0E69E4C288A37FADECEF
-:10A26000626B3ECAB10AC62F587F5CD33E29992B38
-:10A270003E6EEF7F10881CFB97719F9B9DA47CB85E
-:10A28000C53347D8DFB4D8F6EB6F715E87D49E0B29
-:10A29000A638F06ED3E90E2971E179284FE7713ABB
-:10A2A000158F924E03824EB098E7A19E7BEC5C8D99
-:10A2B000FC8B115F02FDF0417F8F5EE2E0A3713EF7
-:10A2C00048F68E02FE7AE8DF7D1CF77F611FED778E
-:10A2D000BBC3CBBE83F7EF58BA1A9F6264C7ED6663
-:10A2E000FABEC4A17FBCFEAAC17DF4E2C2F265A79A
-:10A2F000587328DE9FBD3FC89D7FC018AB06F3860C
-:10A3000056CBDC7F7E67D1D7280F618D15D003A592
-:10A31000A4C7C8FE5B27F2D93A453EDB5A91CFE687
-:10A32000B7566FC5FA9B0012E8976C9997A2787F91
-:10A3300054D1F4D638C2919A837A225A6AAFCF1F89
-:10A340002FC4F53958B6BED1DEC0E61B8DD9E58DD8
-:10A3500064BFB5B77079F3D9E00B0BAD7A64C53E35
-:10A36000A2C7A6BA25C5308C3F325CEBCE9F0B55F9
-:10A37000875C65ADA2C455564B270C1BB7F819FA7C
-:10A380008966E17CFA208E70E6C9179E12E476B6E3
-:10A390002C4FEBCF60BEC1D96A7CB381E7A8DD79D1
-:10A3A0009CED416E0F3E8A0E218AE30ABEA8E3713E
-:10A3B000D5A2B955BD180782319C2F304FD0C90F97
-:10A3C000F9F8E2AF8D1F5FD1E118E65DDCD21A0526
-:10A3D000CC73B965EEAFE21903E56A5F0CF333DACB
-:10A3E00098246965DF37CCFD9591CB9F7C404B2E3F
-:10A3F0000F22FEC209B2BF223393F4FC6BCF6B2451
-:10A400007ADE19E47A6E8AA0A782F49C99A5E7BA4D
-:10A410003A46CF99D975BE4EE9D10AA1E7F9387EFF
-:10A4200019CAA1FFA67DDBCD75BE46944306F45242
-:10A43000FEED865A9F0FFBFF6BE1C5862B3C97C94B
-:10A4400047A25326817A61435CF1A11CF99BE3C3C7
-:10A450008FFAE87D017CF8C35C7CB85CD0432EDACF
-:10A46000D7942BEF6E4A5072E1653DD28BE3A591F4
-:10A47000E3C5F757C1CBA0BED0922B916FAE88A990
-:10A48000B4EF564ABA3A285EC4F41EC61B56C8A694
-:10A4900081F126F8969FDFC7847ADBA15FFE180C56
-:10A4A00072FB445EBF88E2186C6AB82F63E58F0DBB
-:10A4B0001B0F4DFBFB9DF79478F3325E0BBAE31054
-:10A4C000472A961423BDF2F5F776F35E1DCFD5DA51
-:10A4D000F919DEEF2B6448E53AB72885346167F651
-:10A4E000AA84871B99AE9D86F8F8D8423C9FD9591B
-:10A4F000D13A8EEC1871AE61C5966775C501E70A51
-:10A5000085A9BFE943E763E37705AAC91247FBF4CE
-:10A510005E577B6FBBC1FE447B66B7F9430C3E536D
-:10A5200049EDC578B37D7E43DD323F436A330FDCAE
-:10A530008C8E270577A1E7388E3CD0D681FB6DB491
-:10A54000BF3EC1F8E4B78FC8F156F6F58ABBCF58C5
-:10A5500088E75A0F01E7179B3E6F3DD0362E175FF5
-:10A56000E4A3CF79A12087E714F3D759210F7FF512
-:10A570005E549C8153CF5F8BF3F197C0CFE15E8E29
-:10A580000FB86B6C4E3AE59BCF209DEC7682CFBC2A
-:10A59000EDF3B5637C95E07C95899E5D085F097855
-:10A5A0006DFA9D2CBC23F155608D6CE079AE4A2587
-:10A5B0004172B3B3F43A4BDCEB48F99E72CFB48CE2
-:10A5C000B8D74AE4B54306ED8940A949767448DC1A
-:10A5D000CFA355BBE5A612739F9B8835253276BF66
-:10A5E000E8BF0CAC5169DCC1F8711832C12896790A
-:10A5F0009C14C51FEE2B02F04DF27BB27639FD9E06
-:10A60000F65311F96A98CB4BF7B2C1E747C86F719F
-:10A610008F13BB78F8FC1A6F7D082BC62107DEF379
-:10A62000B753E090639FB341DC2B6AE3DFDCB29465
-:10A63000F2CA83E08BD3FE20D661E1BEAF43ACE724
-:10A640004E7CCEC573BCD375DAAF55F0788B257DC3
-:10A6500099FC0CF6B9337B3CFBBC995D6F24FAAFD7
-:10A66000C6F594637DEF0A717D3AF0B5D47FE33E81
-:10A67000C4FA1318780FC5E3CD1F509CFA9CCC5B2D
-:10A6800032FAF79F098DA37ECEE9EF931738D6E50E
-:10A6900039E21C0740AF9CEB9C97DF0AEC427E78C6
-:10A6A000EA30DF8F3D75F808D9E14FFDDE9746BEF1
-:10A6B0007BEA83E1F31E1E17FB22BBDEE3BFE7F656
-:10A6C000D9E34A6F512EFB2E3B7E9AEF070FBBF961
-:10A6D00015945E19F965E0A67D32FA071E6FD6A4BF
-:10A6E000D799FC9927E679CEE13E19F74D23CD6B3A
-:10A6F000AB87BEF63CB7D6737B746BFD9110FAFF47
-:10A70000B73EC1E77BB49E9F8FCD07EFAE669EDF5D
-:10A71000B1F589DCF86898C7F7C70D7EA334A75D4B
-:10A72000EB3967B54093DDE7BB4E317CBBEBB9DD60
-:10A73000B55B89874F049EBCEBBBAEA711DD08510A
-:10A740004836CE9708BDFB5D7E92035F6FF932E617
-:10A750006B2C0D9B12EE65A12FF3249B5789A92525
-:10A76000F0DE98E2FA1E6932E677C4781EF937AF58
-:10A770007E2DF3322BDFDC5444655D379E5B84F81D
-:10A7800028D5C99F72337A5C48407F732DE627D065
-:10A790007A64E5C0CD3DE7A13F4B012E2F98C56BF4
-:10A7A00028E3E85E3F72D2E4931BEC473A1EC8B63A
-:10A7B000CB3B4F4FDE6D00960C2FC796F3FA16FB7E
-:10A7C0008372A8C49367A22F74E7A5443DFD4F454B
-:10A7D0005BB5AC80BCF2931C670C6CD30CDC67D708
-:10A7E000FAF434D607630CE60D861B9981C4E83968
-:10A7F000460709CDE591F0BE0EA091FBBF33E03CCA
-:10A80000A7D350C4E5D584AB6E97709F7134CEB892
-:10A81000621A96DFCC997FD52EE4C76059DF45F2E6
-:10A82000B4037AF7525C20E9233BFCE6DAD631CE5A
-:10A83000F64B8B24DB1F28E80F86323B4B7F363FDD
-:10A840003378D65F8EFEB1E56EBC8F962ED714712D
-:10A85000793512FD4F761C9B6E43D7478BA0DB03E7
-:10A860001417EDAE195EEE0FA5DB36D277E1DADC18
-:10A87000F9BAD715492E796C3F3548419CF1892C9E
-:10A88000EE6796C7CF6EBA7F18F9233BEF67866CE9
-:10A890003FE38C1E13E356E3A1C7C473DF8CA7E329
-:10A8A0001940FE3601ED24661E111FC99EFDDC46CF
-:10A8B000C14741789EDAB35560E9A45752A03BF2F4
-:10A8C00054CE93C371F45FACD3C3742F12CA4F9E9E
-:10A8D000BFC3F3FC8B39480CBFFD80F22D542E838F
-:10A8E000857EBF7A01AFC4F80EF3FB0FBC7500F78D
-:10A8F0002BE1996E3A29078A28AF2DE43D2772E0B3
-:10A900009A6B687FE3A1E368F3FEBF5F24ECFF224C
-:10A910000893DD24DAE7CBDFB3ED7E1BBFC6B108B9
-:10A92000E5ED741C90081F659313F7E3FE0C7E257C
-:10A9300003CFCB0413F3F656FF74167D1F1A574846
-:10A9400054225DDE3A50A4B75616922F9948B6B0FD
-:10A95000FAC68140BCD520D5E2D3908E7D12D1516C
-:10A960001AA751BED6EA7FF7DF1F18265FCB8E3FAE
-:10A970000E96158BE29B5DC674CD294FCA42C95F06
-:10A980001639E3F622AEEBF5AF07C3EDB16760F41D
-:10A99000F18FD2F120E2F29F5F84F64B17AE019E59
-:10A9A0001747797A5DE5BCFC46D1944518DFE98A02
-:10A9B000F07271F8C8792D246713E4FF5BC3180E99
-:10A9C000F1087BFDE21E4963FC85C3C80BEFFCD791
-:10A9D0002BFB284FFE9EF0FEF3CF40FAC47DE48FA0
-:10A9E000BBE7FA6DAEFB93DED41BDE2FA2F5AAB750
-:10A9F000637C7A62D2CED774C74526A0D660F39B1B
-:10AA0000C408E3677838ED626845B6A9BCACB71CEA
-:10AA1000F7C96B4BB78DE1E7FD17EA87C86E972939
-:10AA20003E9D0F5EAF9D9E6FBE76BCDDDBFEAE0829
-:10AA3000BF47D51B17F3FA831E44FC9651FE2C60CA
-:10AA4000FE6CA7BF2F673CEA8D22EED76CAF5894FF
-:10AA5000B81CE7A598730F327CDC5B1AA57D90FFCC
-:10AA6000A2DA4B7D0E7BC3CE6753C47ECE5F9A22A3
-:10AA7000B9A86866D719182F7A5EC61505153D3B2B
-:10AA800025B4E7EDFB2010AD174FE5F3C579058040
-:10AA9000DBC5785EE1B863DE1073F8C1509E88FDB7
-:10AAA000DB29A0F7B4F0ACA1F49DDFC5F3D0635768
-:10AAB000F0F34D1395DCF41E7F99EEE3F1AF534BA9
-:10AAC000E77CEDF3C53DEF8AA8B47EA6E8ABF7E2DC
-:10AAD0003D771D567112E33103FE5417CAAB0DFFCB
-:10AAE000E883CD34FFD1E937454FD03D7A15297D34
-:10AAF0003A2EEF7CEDEE48ED0A129E2D9ECFE0FD42
-:10AB00007E7998EB9B9E94EF36FC6E3E9DDAE9C70A
-:10AB10007D678CEFABED7D783294BC3CECB0CF75AB
-:10AB2000D3223E9A92BC94E4C0405961F72F0CE2C4
-:10AB30002B4F1EF31D11AE97A718AB79BF9386F765
-:10AB4000CBDA78F9A04B16BF1721134438FC8C914F
-:10AB500013B82E6EE472E2EE35BBE8BD7263DF7CA3
-:10AB6000FEBDBF05F5EA1D3EB82297DFA82DC2E362
-:10AB70004193CDCC3AD41B93533E40FBF4F688412D
-:10AB8000EFC75FC6F1D43509E238EC69D81FFBCFB7
-:10AB90009E4A95F4D2D852A0FB92C6AE01D2DB6396
-:10ABA0006B206DB072D7CEB93BD1BE55AB218EAE06
-:10ABB000EBDD953758680F6CAA0013F5B8FF46B661
-:10ABC000C0587DD5F0A53150BC29B58CEE6959CB64
-:10ABD000D6255263ADD140F6C3D1182F072AF839D4
-:10ABE00098AE331582C3BE7F9CEC4EA61FFCB5FD0C
-:10ABF000265EFD65C015D48F7F2EA7AB71573D9D96
-:10AC000053EB1AF310DD4B635D033CDE69C7A515FA
-:10AC1000C65F6C9CF62BF49CFE9523A1E4B79DFCCB
-:10AC2000C0F891E44C17E613E4C0676798E3F30EAD
-:10AC300021E706FCF0298A97B4F8E83E176FFD6516
-:10AC400002FF775B4BFEE10C23AB6FECEF078B0C45
-:10AC5000977FA3E20395E6B348BE1174A43BB39378
-:10AC6000E8FE17BC18F4745A9617943BCEB3DC1B5D
-:10AC7000EF85C98867DB2EAAE5F68C7DEE91E12190
-:10AC8000730FFBAED705E87ED1F14DB9ED23B5408A
-:10AC9000FBA8ABC8FC6918F30D443EFFD7972F21E2
-:10ACA0007D9FEFDEDABB235CCEDF2559951D489FE3
-:10ACB00049FCFE196FBD83C25E64F620F1CD268B80
-:10ACC000DFBBB5896D7D1E45BEBA9EDFF3C7DEF3DF
-:10ACD000730E06D079F1D80DCBB45CEBD51B57CEF3
-:10ACE000B7EE826A5F3257BCA556D0AD24AECFF71F
-:10ACF000F1E983E9B0478B6A81EEFFD2197DD0F686
-:10AD0000AD805E4ABADFD858528971A15B6F540D8D
-:10AD10007C7F5F65AFB510E72D41EF839823A3F4E7
-:10AD20009A781EBD223ECEE8769CF72EAE7894CE61
-:10AD3000C3DFFE54000275783FA9E7F7D938E9234D
-:10AD400067E96CEBAB7CF32BF4790BC397F3F780DB
-:10AD5000308833388F220B0CBA1FD9E8253BF4A872
-:10AD60001544DD0A467D2FD72BED2178308EF7CCA8
-:10AD7000F2F2A6F054C0FB6735A597EC754DAFA273
-:10AD8000725175A29BECF369DBF55CFAE153914AD1
-:10AD900097DF24E4895369C91B9AB89F56852939DE
-:10ADA000D6D9C12285DBD3AC29C573ADE1E5EDC9A8
-:10ADB000F2C79B42DFE8D97D32F107C92E468F707A
-:10ADC000C5A2B764C77D9C61EFF9622F3D3DE59355
-:10ADD000A5E73AA4A723BEA0D52735A49FC1EC249C
-:10ADE000B2FBEB019CF7A66FD22C7E0F8361F82C8F
-:10ADF000077ECB85DDA77CA0D079DBBB9676D0FE25
-:10AE0000632CEB03F37AD933E7BDD3078B785E78F5
-:10AE10005751624984F27281EE195E27E4C679F2D5
-:10AE2000CF8298871504A6E7908F16FBE0C11C74AB
-:10AE30002D8F703CA743E6E722B3F2CFF77129F7D5
-:10AE40007DA276FB83C20F50B81CE6F39D620ED044
-:10AE500079D2819B0AD3DF036C6EFBD02E57E25C64
-:10AE60004FF719D03E93EE7F4AA3DEDD145B4278A4
-:10AE7000BF0FF529DA56B55C4FFA53DC4F0C864408
-:10AE8000F7CA86C4BD1BF7A58E3C8B76CFD11A05B9
-:10AE90003D3E10AC485AA85F8BABFB2C09F56C69A2
-:10AEA0009AE2C74C8F598867E3AE4504B75FE96DF6
-:10AEB000417D99562084FA7C008D4966C73D127EFB
-:10AEC000A403F35DFCB5695064DCD70338EFF737B2
-:10AED000602FD9597EA687C96E52FA5A502EB5D71F
-:10AEE000EB14D739EDC63E70EEEFD8B8B7E2B81321
-:10AEF0004AD97846567F7AED8D7C7606D3B3222FD9
-:10AF0000674107EEDF6829B1F2C3E1ED1D686F7E8E
-:10AF10004B37BF4EFC93679FC1F8E29E48D9E8F9D2
-:10AF2000E2B9B09B2F06FD27C2EFBAAC4E087A30CB
-:10AF30002EFD0D83FBCABD7EC0F99F7BECBE3DF7A5
-:10AF4000307CC8A84FC972E9D9F324FBBE1CFDB000
-:10AF5000AC7CE581A92ACABD5F4D90F1EC30F25975
-:10AF600014F9E71DF0917FE81DD81F9DE180676708
-:10AF700084AF13E8F2BFD6E7F03F5EDEC3CBB6FC8A
-:10AF8000FBCA5DEEF29761C938B4BFBE7CBB1FD26D
-:10AF900012FEDE29F7BEF99108CF37FF0AA43A1056
-:10AFA000CF6BC5F9A46B1E9BAAA2FD74E50CBD1264
-:10AFB000E39F361CCF0A3DFD36E363C3210FAF0A82
-:10AFC000A755CC977A7DFB8CCF9C0DD84FBA6302E6
-:10AFD000FA0FC7404E3DFEA52E379C23CDC30BB7BD
-:10AFE0007DDE281F1CCA1629A71FECC588DB0F763B
-:10AFF000B2F7B31F45FB7856F6F7D7D9796627DB4A
-:10B00000EF9FF2F47B8D86175103AC527A1AA5AAF2
-:10B010006CDC2BE8B7CC8968FFED989FC1DC7547E5
-:10B02000BDAE02EB35FA86A937D27C5687EE8DA2EB
-:10B03000BFA84F8244AEFB77CA42C931D15943EF12
-:10B04000E101F1FB820EBD62DF63DFBF08FD7C0121
-:10B0500060FB7B7A2AC407E4FF91D05EEDC9989526
-:10B06000183F565CFC5184F11466F7AE12F6655138
-:10B070008DFBBBD71F747A94AFEB7AE823FB3FAA12
-:10B080008533329E6BAD73E73FDD59F44592BB2BA0
-:10B09000F7F9C9CE5C09C6ADF533691D921FECFA0C
-:10B0A00075A7539CF8FA32236EA15C83B8496D3DB5
-:10B0B0007CB7EA0309D20E3FC12AA55FC5F5B68A5F
-:10B0C000E90FE7FBEB62B2F1468EDFDF643FFDA0E4
-:10B0D00019E11AC4838F9FA7D559D931CF233D5287
-:10B0E000238FCB19C5170FB37FBF2EA6D238CBD66F
-:10B0F0004D29E6FE21B7DC7C57E8A99F3CFC2D9545
-:10B10000EEA3FAEEAB17201E563C2E83C6C67DF783
-:10B11000E10864487FA555D45F576D9773EA77CCF3
-:10B1200074A2BC94ADDC7F79D5B6407A316B7FD503
-:10B13000A3AF9F050CBE775BFBF74CC475F05DEECB
-:10B140005704ABEFAC8BD8FBAB14F8BFB9ECA9CF6D
-:10B1500047B9BD7DF847454DB8BEA52D3BBF48FD5D
-:10B16000F65EEA0F38E2734BA2FC7C2CABC7FDA065
-:10B17000DF91D25372C4EF6CBFFBE1EF481CBE1DE0
-:10B18000FE7410E1DB72BF9A6470ACDAF21EC993F0
-:10B19000055BBF17453CACDAE18ED3ADD8FA610749
-:10B1A000E6A1AC90A17F31F2B37C8CCA474DAD5F74
-:10B1B00026B9CFCF57AF2492B07A3FF8EDA2DFB0D7
-:10B1C000EF6FC7640832D1FBF6BE83EAE3584E86C0
-:10B1D00053B8C35DB5C32DF7566D799DF222741F28
-:10B1E000F4579C8DF9016EBEF6D667EB4745FB69B7
-:10B1F00055EFBAF7D0AE5CB5FD9D5FA3FC58E59165
-:10B200009F6FE37FCA87FAA9DBA29EFB69B61496FB
-:10B210003FB1E27B47EFB5D8B887B7FDEE5ECCB360
-:10B22000BFFAA3F7EFFD67B4179E0AEA28FF577D20
-:10B23000F7852838F8F11EB1FEDE9D045639ABF7CC
-:10B24000EE7F06D278A0F5DD277F3B19CFC9BDFB85
-:10B25000C81FC719ACFEF54F9E47F7F25FFFC30545
-:10B26000E387B3AB905FD301275C69A2ABB143E244
-:10B27000C6CB13E2E9A1C7E1470654B477FF2041EA
-:10B280003FEAB995BD1FAAB83FD963423FE267F7CD
-:10B29000F6D7F77C9595DF61F409E4A00F9BFF4496
-:10B2A0001FE96F2626D973E5F6D71721BCABA09FFF
-:10B2B000F4E9107A3ECFE839334B4FEFF7A3704CE7
-:10B2C000C57DC1AA8719FDCE423A32FA9D35947EDA
-:10B2D000EFE07FE60EA5DFE351F7BD0947E1EAFBAA
-:10B2E000CA7163BA7D6CCE3C886C9C61F87B506CF3
-:10B2F0007930127EAF90385C5D51F3A728EF0F6F65
-:10B300002B1AA4EF62A4EFF78E4E46E3ED4D7FFFBC
-:10B3100017110FFD4F0674FCFD12573DF922ADB316
-:10B32000777FF89C6A505C07A2D26C5686C19FFD5D
-:10B33000C0CA2BB90F1CAE79E0FF2FFA356B7F0D19
-:10B34000EB02F7998C6E54DEC3D61DD1217D61A32B
-:10B35000817A335D46F35E99E6EB61657AE7C578FD
-:10B360001F8517EFFE62FB3ED02C3DF1BE8395DBBF
-:10B370005F5D847C978F9EF6FC759CFF1CF6FD013B
-:10B38000F77AF5D65FC9D627E9292F7DD33B7F8190
-:10B39000CF77EF0F28783EE35D71AFAE97EE59FCA3
-:10B3A0008B73F3A38C431DF7F0C7601C4AE0293F61
-:10B3B0007FF0753ED2FC468BBF77A2868B8F6C3CAC
-:10B3C0001E3E965BFE4F2CE6726325F434A2E9EC38
-:10B3D000B55714485A132BB3F01E46FB82C17BF8B5
-:10B3E000BB32F9853A7A77931CF7CA8B9590FBF7B5
-:10B3F0006FD516737B71E58E9D67A15C3BBCEB47F7
-:10B40000C49F2B1F7E55C57DC79E2D3F50FB6AB341
-:10B41000EB01F543DA81EFC3DFDF79169707B9FD5A
-:10B420005E73C57C563DE1EE7FD5C3EFB9FA5F612F
-:10B43000F592BD30D2386F2BE6A538DFB7F7F9E9C2
-:10B440001EC2B77BE5C65C76F0E462BFCB0EEE7839
-:10B450006ED16FF03CECCCFD21BA7F717BAB39FE35
-:10B4600016B4DFF6FB457CD1FC1DDAA5DB9F0B9102
-:10B470009F67FBFECF503E90DDDF631E7CCE79DE02
-:10B480005A1061FDCDE94BCC948DA172A3EE00DB87
-:10B49000EF39F8E0FAE71AC7A3DCC7FDB181BF5F57
-:10B4A0004E89D3392C39BA88F2CC65DDA70773EA07
-:10B4B0006FDE9F3FCCF7937EC698CEFBDCCF3DF688
-:10B4C0001FB47FEF88FB72E2E13E817FFBF73FD93B
-:10B4D000EFD74B9C6FAC67793C24DFFADAD81C8B32
-:10B4E000573354DEDA5C17C7B8CFB5C5FCBE9EB182
-:10B4F0006F18129E2D99DB674CC7F917432FE0791F
-:10B50000FFDB9BF5B8333E5476D86CC17A67BF0930
-:10B5100071AC87E3E27E6DB4E35AC5FCDCF3907155
-:10B520006B7B092F858CAB9DC0B8B79E8271C327FA
-:10B53000806780CD058DEBCDB3F28EAF4EE379639E
-:10B54000DEF192B63E10F1055A7AC3F8DBFCA29FF9
-:10B55000A5C586EBF7958192A17BABB3791769A955
-:10B560007326C6EF06CF1B2734C77963F69DCE1B23
-:10B57000B7993C0F96B5A375D025FC1318CF5CE6A0
-:10B5800080F705219F0215A918DA5F9D79E211AFB6
-:10B59000083EEF8C346838999DFAF4E2BE61F48677
-:10B5A000B2E69B339CE792153D23B9E2C8E6EB7403
-:10B5B0007F56BEF6DEF8A20D7FE7CE7F82AAA9985D
-:10B5C000379B80D61C706E17EB07EB5562BD581287
-:10B5D0005A1CF5D4189FA75DEE147EA1576E7DA569
-:10B5E00093E2F679F0B443D0F30574CC97D1F64DDD
-:10B5F000C3F86F57C44772B22B98FB1EFBFF2CF6A3
-:10B60000B9E4A48AE71FC90FBB8FF68DC6B1974D69
-:10B61000BC1FE9D65A95FC6091FAFD543E6AFAC8FF
-:10B62000FACF871FFB3E83C1721EFF53BDCEE9BB1D
-:10B63000DBDC46F9B1D74D558DE1F22D426BA6C545
-:10B64000316F425B73761CCF6B876AF8EF61D8303D
-:10B650000FE26106DF863CFCF13F58523CAB0080B4
-:10B66000000000001F8B080000000000000BED7DB3
-:10B670000B5C54D79DF0B93377EE3C813B30C0F082
-:10B68000BE8310D1623A28A2363E2E0F0D3E62468E
-:10B69000C4A809D6D13C4A2218B436A11B1B2E02DD
-:10B6A00082F8C2266BCDAE4D47A22D6DD31653DA6C
-:10B6B000358FF61B4C74ED635B626CE2F6D30613B8
-:10B6C00037AB59D365B7CDD6ED9736DFF9FFCFBD90
-:10B6D000CCBDC30C68DAF4B7FB7D4B7EC9C9B9E7B2
-:10B6E000F53FFFF37F9FC77C4AE4089949C8EE2DD8
-:10B6F000840C151342F8B08DB808D95762B2433A9A
-:10B70000284F4F1AA6E987F0B7606C6A6DFEDB1907
-:10B71000553322F9CEBC442E48FBD999F73819A6E7
-:10B72000A9F5831612A0EDAD3C91FB69EA96C960BC
-:10B730009287E6E55B7C561F4D5D24C3544ADB953A
-:10B74000DFC2EDF08DED7F30E711EF5BB45DBA4CF9
-:10B750003220ED2C17324C3A787ABED04402749CD9
-:10B760008E72612DC0690D7F9E480991F2274513A5
-:10B7700021A9F47B5D8F2CC3FC08C90824C03C4977
-:10B78000468DAE5E0F47D6F4178F1DFF10E087B6CB
-:10B79000DFAD96EF9BF3CEA17B29FCA22C95986997
-:10B7A00037FB06AF92FC69341FBE2A73302F0F9906
-:10B7B0006E2763FB817A3E5A2FD11B241B00CEECEF
-:10B7C0006112A4E327160D1398BF43229249C27E4B
-:10B7D00010FEA4D92344A1F592E60E7B9569BA7EAA
-:10B7E000FE608E09A719E649D7D1D15CEA2F48211E
-:10B7F000C4D63CDF5F40D725811F2222ED2741625E
-:10B80000F88F6EF7CF490C3F1A5E7ACA6F490AC6A5
-:10B81000E87F747D5BCEA4F1165DBEBC670DE0DFF2
-:10B82000E2092A30FFC4D90C2F5A79A2344C643A69
-:10B830006E2261F324A5443E4693845285C0387439
-:10B8400048593F9F07547A7C409D0FFCC969588F27
-:10B8500010FA29415E74D57C2BE479F256112BFF46
-:10B86000D0477041DFB2A979F3D87CBCF94C94EE93
-:10B870006A21E42DDD7C6DD974FE5ABFF4DF1E0B06
-:10B88000C900FC7E54BC09DE61A407EDFB3675FEE1
-:10B8900016CF30E2670CFE8A19FE9CC50C7FCE28BD
-:10B8A000FCED55DBEFFD2F86BF513C71A63540877F
-:10B8B000D178D4EA578CC2AD205DD276847C0AF26E
-:10B8C000816AE0DF1E3BCB1F12EFAC06FE00BE9A82
-:10B8D000805F08C9A44D7AB82E28CF1545ECDF7AD1
-:10B8E0001F9507FA7C50930F6C5C97CF5F4D283DF6
-:10B8F000139F891CA328ED9AAB7861BDBA9153229E
-:10B90000FDFFA33809EB774A8289FB244DCF2C4CED
-:10B9100007B9D966EBB1C17CBB2C3DD84F5B8E49D2
-:10B92000EC8D21DF4EABF335373B671C9D111F8F2C
-:10B9300066810463F1FDDBAA7C6B1B7CEA8C99D2E7
-:10B94000072F09929DC20B4CFFB6B6BEF9B43DE974
-:10B950001FF2F9609C441CC7A5C2E52A349156DF4A
-:10B96000C4701E57E98A6FB68F0B270F70C69033CD
-:10B970001A9CED00A7273E9CCE9C0AA453BED985F5
-:10B98000E30C8A125B0F4B936D239D9FAB35496A85
-:10B99000A5E92EBEA9AB0ED2210B5168150B91CF94
-:10B9A0005450B8F969D309A1FD745C9A659B04B43D
-:10B9B000DFDC43023A391F74042F89B43F5E0C92D6
-:10B9C00020859377293280F1AC4A07DABA91A264D4
-:10B9D00042E6D0F182FC0C90A7CEA080A9D68F467B
-:10B9E000274E8B4CC462E8C7248740DF416773222F
-:10B9F000F5E6BB19DEDAE6860354F691EE129EEC0C
-:10BA0000A09FDA8B28BD24D1BC45EEAAA3F8E87E1E
-:10BA1000D5427A757CA08D9BEB66FAC74E6A93C2BD
-:10BA2000D0B7F9B037388E3EB603DE68BBE60BBE42
-:10BA3000EFBCA2E115FE15133CEF38917633809FE1
-:10BA4000DF27C5AB4DA6F8FDFCAE45FACE2B3A7903
-:10BA5000D54C98FE20444A5F312D7EBBDD2D6446D7
-:10BA6000416124BF870F213EBB5DBD5DF9749E8A95
-:10BA7000DFE42FA4EB45B24B0D788A4E096965725D
-:10BA800070CCBAAE96C2B47D779189B702BD1690DC
-:10BA90009019F092ED41BED4D635E8607463F13070
-:10BAA000396976C998DA008F20EFCC7BBCE3C96B8B
-:10BAB0001BF0490C3C16B9291E3FF1DF0F8F1E37D2
-:10BAC000C1D499509304F8232FEF22D23400C3C875
-:10BAD0007F5A3B8DDEA3E75FFDDF7CFE1A9DC4AF7E
-:10BAE000AF68F6103F48AB660549A89BC37CC0967B
-:10BAF000864D29E854A5D8C2ADA09A72EAFA334E11
-:10BB000011D0CFEDE23B36145DFE0F53C6EB9F27FD
-:10BB1000EF68F83447C6D3E3C7047AE78C25748C02
-:10BB20008BE02941FCB47790DC089E9A6C208F3A18
-:10BB30005D5BCFF84A2378EACC7E4EDCA0A3F72BDE
-:10BB40006285E2A6F8D809766D0C7972AFBBA21DAA
-:10BB5000CA05536C797E48956B5480F30BE9380B1A
-:10BB6000468C789AA7E2697EFA3B8FC134A994E4A7
-:10BB70000915C815017F15E0AD6A4D00C882085946
-:10BB80001F7C2288F45025025E3865B2E943E78DB8
-:10BB9000E32F1EBE5C1C09C482FB19B1E6881BF4AE
-:10BBA0004931C59BCEFEA08421A27CD4D6C5E5999F
-:10BBB00080AED8BABD7C31DDA4D0AA9D5E5308FC0E
-:10BBC000190B69EA02BC93736602765A5A3803CBA2
-:10BBD000ADDEFC10E8BBB4B09DC8E82788213BADC2
-:10BBE0007F70ED5D7ED443D76F23614A3728CB4009
-:10BBF0008E65CB61B0A779512A374B30CEA336F092
-:10BC00006F3ABD354984D9DB24961ED8E20EFE007A
-:10BC1000D68DBF3E1FFB33D998DCBBD1F97C69655B
-:10BC200022013BC07E810B812E3BB0727ED77029F2
-:10BC3000C8CD841E2B4DDB78250C7A4CB96097005B
-:10BC4000DF5B0B95DB4D342DFF95BD88A7DFBB383F
-:10BC5000871FF0D05548979CF6F3BBA79C2142F371
-:10BC60003B572E1F49827E8E9A25287FF2C3A64F0E
-:10BC7000823D65FB603FFA8736D53F247CD32C5844
-:10BC80003FFB479413BBF91EA4FF5D05D36D7AF902
-:10BC90009EEA080E035EB4BCDD4BE5DB0CA4A7B73F
-:10BCA00086293D99148E7C48E9D3E6DAE63D25C124
-:10BCB0007CE9778D3E7C917A11BE35E63D14D760E4
-:10BCC0006712726431D8919D206FD06E250A07EB00
-:10BCD00096C1CADF3FB06231D8A19D76AD7CE562E6
-:10BCE000599F57FE7006F3AADDEB4FF6EC82FA9EE1
-:10BCF0002CD2C4F01320AB74F64C41328FEBD6E754
-:10BD0000967FEFD6D9CD1A5D761530BA7CF9626789
-:10BD100035C8CD4E4A975609E87097C14FD6528D17
-:10BD20000E3B0B189DC5C3BBE57A0909EBEC408BB4
-:10BD3000A707E9D1E609A01D1D5D7F450AB363345D
-:10BD4000FAB77909F2834D0A3E753FF287CB0FECC3
-:10BD5000672D68221CA5138BC8FCE189E6110F3EF4
-:10BD60008DFE3B0BF215A0D7F745E227E3D4B75C75
-:10BD70002FC5F96C71CB93927578F4E451BCC798D8
-:10BD8000CF5792D97C3A027581FB69BF72BDA4205E
-:10BD9000DF7889BF1BF412257FB03BA9BDF9C9E448
-:10BDA000543D9E983DA2F5AF704D8316E0730F6D24
-:10BDB00047BFB6939714587A8B2764E0EF2FA604F9
-:10BDC00067EBFBE145E61F2E34BB4CE423E0673F05
-:10BDD000F5CBC293A99FD82262BAA7C58B69578BAE
-:10BDE0008469778B4CC256EAFE90EBE7EF053BDBAC
-:10BDF000E540F826A28B8E163FB66F6F99CDFAE11B
-:10BE0000343A9FBA0BE8C261D2F8C4BF0BE83CC910
-:10BE1000AC959761BE8763E58F242F58AC14E37C03
-:10BE200050EE754D30AE395486EB77F3FDABF25BD7
-:10BE3000C5DFFE798F54E703FDBD6126FA38C618C9
-:10BE40007A09B3F16EB4FFAE6C13CAD3FDF3769EDC
-:10BE5000F1D1BCE575DAFF78F4D8C3FA8FDB9F0621
-:10BE6000EFE02E84D74AD7DB4EFBB38A4CDEC7E324
-:10BE700087E8F9D294207F7808CAE9FD836BC9CBA3
-:10BE8000C09F7458BB087C1A9021DE25B4531CFB5C
-:10BE900041DF06C2CF80BEB571E418CD0B2ADF505A
-:10BEA000B5AFBC4CFB11641BE9A6ED06E7DD45A070
-:10BEB0005DE72B360A13A5D3947CB417EC85B5A4A3
-:10BEC0008DD6DB596D2766FA3D69FE1A02FDEDFC41
-:10BED000991DFBF79D9982FCBA4B647C34A11CF23E
-:10BEE0009A4858AFC76D8E483E1FE4E57D24300D5B
-:10BEF000F9FA693D5F533DD90BFC24902A8570A067
-:10BF0000871FF0333B4451E569E05832DA81016C18
-:10BF10001FB10B9B8808FC7ACE1CEA06BFC4DC80EC
-:10BF200046DF22F361DB30F2B5BC3CA38C10170373
-:10BF300081ECF287492EE025C34C6D31204B818482
-:10BF4000A9DEE8A1FF007CFC85AB17C8AD84A4AFD7
-:10BF5000110CF3E02F382F996E05F8587D4D0FF135
-:10BF6000171A1BA13E4F74F5D19FA94B1ACF2F8CE6
-:10BF7000B6E30793557FD0497240EFB5B79C206F69
-:10BF80005B22FDF05171252DD5ECF9875358DC6209
-:10BF9000949E2446DF2F503F1DE8B1E31766D21B65
-:10BFA00083BEAF27FB0CF66E46D014991FFDF795A4
-:10BFB0008BD68A8306FA1C7FFDB3EA8DED739A1C3B
-:10BFC000063CE635271BF23E25D3507F5257BEA1D3
-:10BFD000BCB067AAA17CF2A1E986FC94D0A70CF5BD
-:10BFE0003FD15761C84FEB5F62A8FFC91335867C0C
-:10BFF00049F86E43FD1967361ACA670E3D64289FDB
-:10C00000757EAB213F67F8AF0CF5BD41F1E409E067
-:10C010004F4A8F668AAF5D19CA21D09FC36DD48EF7
-:10C020009BCFEC63D0B7249BA8F631554C694057A1
-:10C03000ECAF1DF400C8F93D8F85BF807AD2E407CC
-:10C04000FEE50B16C91BA15DBB68225E9D1C911607
-:10C0500011F85EB1C78DDFE5D256E40F81AA0D7BE2
-:10C0600022E86DE37A10F376D20FF0BDC1E0E3452C
-:10C0700025A67C12B28DF46F25F72405C6B1FB2CE2
-:10C0800092B1FECDD2BF2F45A5FF1C4AFFE689DB4A
-:10C090006B74FF90499E9CC2FCC3AA731E83DF830E
-:10C0A000781DF57B6CA41DD8A9BC6E24EB14ABAE37
-:10C0B000FA3756D3879FB871FF269ABF684A714EE8
-:10C0C000D7C9CBE4B566DF8FD587330CF65974DA60
-:10C0D00096F810CA3B2A17CB530C72315005F31354
-:10C0E0007819E5A2F6DDD73715E57297C8EC944EBE
-:10C0F00089F2E538F88A96CB5F4E9698BF18473E8E
-:10C100000B54CE82C2DDB9F2D35D8037791B41BDBD
-:10C11000447510CAD9E8FEA95D7537C2E965F4A473
-:10C12000F9439ABF65A3F203FC2B9B44105F568A28
-:10C130002F27DA478FA27D49E721817D64F550FBE7
-:10C1400013F43DB53F99BDF9E7B52FF361DE7AFBF6
-:10C150004FD5972187DC94921ABFFF17E3EC479DD8
-:10C1600049D6FCEEFF9EF427A718F1A1D1A146679E
-:10C1700056203A3ADEFB125B77DA2291D3F62F246F
-:10C18000F84F10E9E5D4ECB34A25AC5BD0255BA9A8
-:10C190005EDD37BB06DB0993780272266178C33215
-:10C1A000D093A494C90985FE03F4E62836CA0D5B32
-:10C1B000941E15401F278ED5BB9A7CD0FCF389E4D2
-:10C1C000CBB752D438D92C324B2F5FE2F9E19A7CAD
-:10C1D000D1F0B0E0831611ED8E0F68B9664FD07EB6
-:10C1E0002C397C00E2CC829FC84762F0DFCBAA5E8C
-:10C1F000EE3B6997812E5D6B04F4B332FDE172C8AA
-:10C200006736113FE067F670980469FF3FF4B0F5B8
-:10C21000C8F48738B0CF332F873880F3A085C58521
-:10C2200032B785387DDCE89AEAC7FDEEE2A37E5896
-:10C23000F78A3C17F2E9671713A48F21EFC69E72A5
-:10C24000D857984BFCC03F2E0F4F32217FDE1A4249
-:10C2500079E21F51A8AF4392E944614DAFB490E930
-:10C26000F751FFFDDD161BA6D75A444C2BF38A0766
-:10C2700017D07A5B7D0E8C1774E43B709CCE5C010A
-:10C28000C7F98F9C87F2C02EF8758B17EB773DDED0
-:10C290005404F184CE93FF8971CD083D53AC7901EC
-:10C2A0009E30EEF710BEC90BFBBE49F20CDC27ED49
-:10C2B000B404FF7103C413D70AFE6331F837E9E50C
-:10C2C0001FA19F0CF8013CB4DB195EACCE26BF1B4E
-:10C2D000E2FD93C8FA15B1F854C513A530B340E98F
-:10C2E0003789910611E686DA1241AFFA493F059B7C
-:10C2F000583A421CEC8790074509E245D9B6D02050
-:10C300009467D78BFE36AC4F705F415B278B9D04E3
-:10C310008EBBA05E98DB42BFBFE811D9FA0D8570D5
-:10C32000DFFD37176E1FCC21F1F97B4F4BF5D92A72
-:10C330005D3CD64562EF0BFFCB6D15160FEDF77622
-:10C34000806D26ACF7AC71F5E38DF67BBB8753E3CC
-:10C350001393D3C15E6EE663DB996691AD0FC47F24
-:10C36000C08FDE5A28A5BB5DFA7E183ECC279FC73A
-:10C37000F57116B3F9B77DEF8DCD8F513AF977DAB4
-:10C3800010E255AF5CFC0CFA8FEF254BFBC1EF526E
-:10C390007E6C26B0CEEF7D7FD669589431F36E392E
-:10C3A00093CCEBE249EF7DFBD5320BEDFFBDE75EB1
-:10C3B0002DE3510885101F5A79E387AF9541FC4A58
-:10C3C00068FE4DE6650AAF52418A9A204F0D68E635
-:10C3D000876E591A1E076F07D31ED802F1C2509BF1
-:10C3E0004BE4A8BDF625E71F05A0C766809FA60FF2
-:10C3F000DB4676727489B9F4779754D1FEB6728AA7
-:10C40000E2E2006F8A15FC0A72C1EA07BAD95AC87B
-:10C41000F4E5D607C59002722CDCC4C8DDF65AE6F6
-:10C42000652A87ED3F0DC11900D2CE052A13207E63
-:10C43000378D20BDDF76AD290FF695DD44C8073A6C
-:10C44000B498CCD8CFC84567A817E56FD32C9043D4
-:10C45000AD171F9D0CEBF57B55BE6871B73453D3F8
-:10C46000813A1FC4DDFC1877DBCDF7639C3EDE7C90
-:10C470009D5EB6AFC0571235DEF5DBEE7076841EDA
-:10C4800034FE8A6EB7B785F861BC975A6C98BED0F7
-:10C4900022627AA2C58BE9F75B244C075A8A30EDF9
-:10C4A0006BF1FB0B2C00E76C4C3B2C647D40476729
-:10C4B0005FF0B0FDC87B92CABF0074FE24EDF73276
-:10C4C0006DF745DAFE32AD3FAF366C86B8CCBC11A5
-:10C4D0002A2F2528EFC2EFFB697F506F6CB9AD049E
-:10C4E000CA4BABFBC380C7D262FA9D407F7D587FA9
-:10C4F0007FCB093F2B1FAAB450FC96FE96953BE7D5
-:10C50000D27E68DEA9F643C72F61F567637F745C4E
-:10C51000CCC7E8B784C173A224163CD1F5A9956FA6
-:10C5200026548F88F0BFE0EF59240EF75138123EA1
-:10C5300006F2F882B51CF4E79E12926FA2FACD9231
-:10C540005AC041FEA966229A4BA8CACBA8D9554E1B
-:10C55000A09D8CDF95557CE8980FF513F6ABE9A705
-:10C56000E4EA30EA9D243FC937BB69CAD381A753A7
-:10C5700054DF4722E70D503EB13CAE076D2756937E
-:10C58000C8790332717DAA5FA2CA63D3DB474D210C
-:10C590003EA63FF771701EB1835F4B7DFD7E924BCF
-:10C5A000F3AA7DF645B5DEFE7965491B21BFF8810A
-:10C5B000A7200EFE1BE2E5603F7EB47D943D77B878
-:10C5C000E54C5A55A1AA1440DE6F138FE8EDDC6CE0
-:10C5D00085D2AB8E0F7A9AF8EA5E8C2F04336A7498
-:10C5E000FAADC312CCA0CC4BAE3FF18F8B413E8055
-:10C5F000BE06393D7784E9F751BDFE5B261F357BCA
-:10C600004250D76B9FBCB12D01F7D3A83E92C0AE6C
-:10C6100008920ADA3EB17CEBCBF09D9418BF270854
-:10C620008C8F32BD210EF2999EC04F3CB0DF907CC2
-:10C63000487E86CEF7B7035609E8AFEFE4DA7A888A
-:10C640001B3E4C12253BED27F3A54B02C0D1611ACE
-:10C65000168008473CCD4B786A0775089A9CA486DB
-:10C660000F5DFF8E34552E90DF7757D1FA074DC1FD
-:10C67000AB54578ED63FE8086E813CFD936D54AFA6
-:10C68000EF1D8DA36FEB96294DEC55E3E6239ECF6E
-:10C69000762BD990A7F5DD2CDF4EDBEF750F794DAA
-:10C6A000349FC86DE93E930379ADFE966E85B6BFA3
-:10C6B000EA61E700882BE803B9379A17693E41978A
-:10C6C000E7599ED858DA77F23F05D0431D6923A772
-:10C6D000B3009F3FE4FA41BE36BEFCF541C86FAEE1
-:10C6E0002712C4E7324F1CC175F8AAB97C04F0D6F2
-:10C6F000D7724644431DFEB475A176EA142FC17863
-:10C70000B210E242F960BF15F798D07EDB4E49B017
-:10C7100004F0DD9506EB5C91C6FC812921DA8F8E51
-:10C720007FA650BEB34E0775651919D6FB5BC46F63
-:10C73000027811E5F01FE57F2F01FDD4375B714CC6
-:10C74000A5E36DDAC0FB5B25D03FA15601D6FF04FF
-:10C75000877AC2772663C73768FE5A7F4A2FF81B4D
-:10C76000961D8C3E37F9FAD3A6D3B4C3CEE86293B4
-:10C770005BCDBB8DF976D59EF4BA157732FDBEF947
-:10C78000C4815C3000AF1E9B857EE4660D1E720086
-:10C79000E1B93A3827E9363ADFC69FB2B866E340D6
-:10C7A000C912987FE31E13013F6EF300A5271D7F7A
-:10C7B000ECA37C284FA6F3907BA6F2943E02070BD5
-:10C7C00096DAE9FA7E3D5F16015FF569B7EEB6517C
-:10C7D000E7E8EB823805E8A13EAD7437D0D3A6393F
-:10C7E0006F213D26A596FEA49AE2EBE8DDD54B40ED
-:10C7F000ACA599185F5282433967766F43FCFF6B93
-:10C800003919B1BA119DB8CF9907FF47E19B2CCADE
-:10C8100015505F5C465D22A053217012EC10A5C23A
-:10C820008671D20A711996E7AE21A66E0ACF112938
-:10C8300039B99536B517C826B053F2030E8C7F9AD6
-:10C8400013AA76803F7AEC1CCB47D6E912E2C55199
-:10C8500014EAB7D17E6E71F122F8226966D906EB2F
-:10C86000467979E85829F00BB303942F1663BCE797
-:10C870006022A97F8EB63B6ADAD8FD235AEF68B2F0
-:10C8800087805DD9C171EB6BF07BC5D4AD743D8EF3
-:10C89000AAEB6776FB4558AFA36E637E2FB7F141D5
-:10C8A000C0DB23A92F2E81F9A559E59E140ADFE7E5
-:10C8B000525FECF666209EF36DB4FC737FFD42B7C9
-:10C8C0008DE2FD68AB9C29EAF293FF40A536CEE3EA
-:10C8D00005E453DEFDC587808F69F98F6D54FF7EB7
-:10C8E0003D59B307587941BEC6D7D4AF9D4DE168D5
-:10C8F0001DCD2BB622D8F78AD4AFA27CFED5A7CD0A
-:10C9000044EB1FEC09C79C7E9BC38CF3200EB067E1
-:10C91000A6F168CF38DC6C5D1D53F2D14E3A6A67E0
-:10C92000F81AC93161F922F3B322C407AC53781362
-:10C930009EE5214D01D0CF7C364F58BCF7B03C4529
-:10C9400082B029DB1FE47A56A07F682FD2ED071250
-:10C95000F0638DFB877C54BED03A9C61A27AD87379
-:10C960006105974BFBFB6CAAEA2F7A4806C4631F4C
-:10C970004D6572E6D18072BB45021A1B66E75649C7
-:10C98000603AA4E9EB0AD2C73BBF32F65C4018ED2F
-:10C99000B23D2E938AB749BBC305D45E763D27824C
-:10C9A0001CA16A7EC761D06F1E1EE9A610F89FE623
-:10C9B000B7B9591CDED7B7E44BB3C13E7CB5D00440
-:10C9C000FCCF8B7E11CED99527942681DDC68FD2E0
-:10C9D000E9EB4BC240378373EE043F5000FEA59F46
-:10C9E0000FDBD9F9D0910CD20F7161DE2B13FD3E14
-:10C9F000A1C6BF3B5B6C98527FFE5DD01F5FEB22F0
-:10CA0000B84F2078039897DA09077CF1F2A7EEC6B1
-:10CA1000719FE10349EB40DE9E63763D900BC63982
-:10CA2000C24F7010E778DF16488279EF771BEDBFB1
-:10CA3000B23466C776A632F9D9D9C2E2A0C2F54FA0
-:10CA4000605CA7C3A2C923D7D2F05CB0E783788E1D
-:10CA5000D61ADC2683BCB21145117571725BB631F2
-:10CA6000DE255CBF95C58752D938D1E70D5C9CD6D1
-:10CA70007FC1EEF1FC032D8D3E9FD04C02288FC864
-:10CA8000103BF7B06D57657AB2AE9F6D9C9C2E8EB1
-:10CA9000431F0F5F379390EE9CCAC3FC8800F37965
-:10CAA000F8BA80DF897738B115F66528C175C33AC1
-:10CAB0003EFF5DD44B0ED213860373568853E8CEE7
-:10CAC00085122F3F324AFFF911FEC07D752E067F79
-:10CAD00048C67CF47EFAA3E03BD37F77387F2DC035
-:10CAE0003CDFAB242360871232BC08F8B7B1D28197
-:10CAF00071EA87498FCD06062EDF23EAE3C58D0351
-:10CB000097123794E23E960476F0C32F951BE254B9
-:10CB1000DAF9302DBFF9C4068C1F3E7CF49A30B58B
-:10CB200014C118B2507FACD1D673C69A1FA96FB783
-:10CB300004952CA0FF975AE52CFAE95B00279CABE3
-:10CB40006A9E340BFCBFDF8AF519802727AFEA8F76
-:10CB50003536D41FED76EAAF019D5E9C8CFA9416B3
-:10CB6000F3A09FB5F15778181D8EA8FE7C023533CF
-:10CB700001BF1D8EC01566B41399A7F64E47B24685
-:10CB800037CDDDA0FF0E0A11B908933DE860F9E446
-:10CB9000B4E6EE76A687B1FEC893FC6EB0873AEC99
-:10CBA0006ADE43307F50E8413F41F9BE5502380FFD
-:10CBB0003A027EF007951D5324D02755E92E9C8715
-:10CBC000E5EFACBD200F333DC1AB60B7100FB38FA5
-:10CBD000DE4BBD904B5C31FB19E16EA41FAFB11F62
-:10CBE000FB5C36FE7B9C39B0A334528FB60FE3B9A1
-:10CBF000807B6C18FFD1EA1FB618ED642D9D92C69C
-:10CC0000E20C204F80AFB5EF42F03EE45F2B69426B
-:10CC1000FEB57A8DFB451A3F0BD7A718E297DF4A7E
-:10CC2000F5E1FA687240B85E8CE59D2A9DEE847D40
-:10CC3000F471C7498E33CE0C9413F1C72953E5081C
-:10CC400051E3493C9E33D3F824BEBC30C671A3E502
-:10CC50009F966AF2EF884AC7FF600F2E4CA3FFFF32
-:10CC600050A87F91035B076F85F5F9A36AF716F566
-:10CC70001D3809E47745945B5353E13C957C1CD205
-:10CC80009BE59BFA3436DE5839C6E20FDB1E945022
-:10CC90003F3FC3FB1DFE1870D75F771AE4577EAA8B
-:10CCA00084FDD5F30ACAB1FAEB8958FED1FBB793DC
-:10CCB000D08CF1FA7761F968FFFDACFF973FF5E39F
-:10CCC00083B3A1FFE3169355E7CF6D3BBE301DE262
-:10CCD00095DBEC542E1BF95606BEE57D64D40F029D
-:10CCE0003EDFAFF945CAA2DD5573C16ED5F1F96CCF
-:10CCF000B0BF22ED79BACEFB1D5AFB3B77833D34A2
-:10CD0000A6BE33AA7EBED6FF6AEC3F1A1E4D8E40E9
-:10CD10001EEC2DFE0F560D3E9443074C51FD8DCA5F
-:10CD2000A520F6B7690EB33392FEBAFE270A0FF4B8
-:10CD3000172ACF023BEB4122C139E768BC27A9740F
-:10CD4000587F7D92615D23F8BEC5F0FD9F5BBC24DA
-:10CD5000A4E3B7CF04B72D027E4BD2D689283BB1CE
-:10CD6000DDE12C12D2F1DDFFC0F151E1B82D0E1C36
-:10CD7000F3FFC270F80C7C1981A3C0F0FDA3C2615F
-:10CD8000B65DCFBCACCB5B4492A5CF97846D599771
-:10CD90007576CB8C33A2213F73C86BA83FEBBC6484
-:10CDA000289F335C6428BFED8ADF909F3732DB50C9
-:10CDB0007FC175D9902F278B0DF52B6D2B0CF98525
-:10CDC000E25A43FD696A9CFC76EF0643BDC5D283F7
-:10CDD000867A4273CA77C07E59F0C1021BF8173BAE
-:10CDE0005DA6EA10C5CF4E3E684B8E211FCBD47E88
-:10CDF00047F59D370DDB2F149BDA411E2EA4AE7034
-:10CE00001BB5D7D2EB02EDA0F7AB45229AD16F0E3E
-:10CE1000B1F8C9072BABE0FB9D8B89D8ED8EE46F91
-:10CE2000FF2B42206FCD96F15C9BBDD884E7067640
-:10CE300017D78CBBFFB04FB5DFF744E9FB51FA3190
-:10CE4000B3F393D1DF8BD3195D1D58B08FC03E81F2
-:10CE5000CD15C27B3E8353767A21FFA505DFF6828E
-:10CE60009FD135E5112FD04F67CE570DE7F21C0546
-:10CE70006C7F26BADFBF55FB2DB8FEA80DF4E7EE98
-:10CE80006C86CFE87ADAF9F4DD361637FFB8E6B902
-:10CE9000F8639AE7E5746667EDB68530FEDF5DF40A
-:10CEA000F1C07FAF3ACE81058F1306EFE3780EB95C
-:10CEB0002B4790F47A564BE1DE28CCA7D3B7D30B9F
-:10CEC0007AB7CBF788C1FEB7C27C628C63F3323C81
-:10CED000ED163FDEF93CFE27CF6767CC7D775B9C84
-:10CEE00079156BF3F2AAF7283EA6793DF5179E5700
-:10CEF000581D2F359DD9A7BB25C64749E6C0CFF39E
-:10CF00007DF1F92F69B6F19C5282DFE807E417043E
-:10CF1000C63D7F745EC54F3C7E5D635152018ED726
-:10CF20005BD839DB7380479A9E0F4EAA80FB0AAF0D
-:10CF3000C3792D0EDAEF48186F1DD606CD063827B7
-:10CF4000920F25E9F9888FD56B8CED56059CC6F3B9
-:10CF500052EA39038AA7FD105FD6F036669DFF4C72
-:10CF6000788A476F378AA7EEA29BC3D344F49D9A71
-:10CF70002E21BD4C84278D8EE2F5F3FF2A1D2DBE98
-:10CF800071FC20FD7CDCF8F9AF463FF7A64B37C4B7
-:10CF900067FFBFE2E7F11BC4CFE8796B81D4C73AE2
-:10CFA00007D2E915900E27734D6717839FBDD88C64
-:10CFB000F1B3D70E1734927C7D3DA6075E5B36A990
-:10CFC00011CF8F553BF1ACD65953EC7E5F53F1F145
-:10CFD00090D7AD9EA7F3A782DD7BB67AE5B8F322A2
-:10CFE000CBCCC6F38BC411999F99F64BA40A8C9FA6
-:10CFF00051BC1E1B67DDB5758B37DE8DAEDBD9EA04
-:10D00000B69B5A376D3C8AA798EDEEF6E6DF10DF47
-:10D01000C309768637761EA0EF7166B7F701BE6941
-:10D02000BFBF84A20CB0FF09C6FD56AF493F02F056
-:10D03000BEE665F1F001416AC47741562EDB0DE78B
-:10D0400051CEAD727310D2D0E038A6AE67595D6C88
-:10D05000BBF339B53CD29E2393A5B1F58EA876CF0C
-:10D06000AA3A0EED07C2CB39FA773FFE21AA3CBAA5
-:10D07000FD4BDE442C3F17E73CE6B7D4F6AB6BC75D
-:10D080006F4FEA53F0DC1F21528EFE3EFA285DA955
-:10D090007CB0C21BFCBE97D67F9D0B7EF973104FF0
-:10D0A0009DE2C2F33D84273ED8F71FED8797F1BC80
-:10D0B000C6E54686F7E87E75FD85BDA9F1FB8B8741
-:10D0C0005F6D5EDA78A524807E1DA926E27E36BEDD
-:10D0D00019CE39DC59499A707C5E427852DEA4FE42
-:10D0E0009C2F421F174CD23ABC48A3F633F0FBCA20
-:10D0F000A5D0CFC05993B8C3171FEE78F2E09F5464
-:10D10000FAF198833BE05C0159CFC53CB7F72BAFF0
-:10D110001DEBEDF78EEED7E338B73C19B448B4DF1A
-:10D12000BBD4736784047356E8C6DFAFCE3BBA9DA9
-:10D13000C7CCF6C7C91B66C45F5FEF4339B1F8E7D8
-:10D1400035D55EDEEF2D32F8C7B5812D16B06B6B8D
-:10D1500097ADB0482E289718DDA970F409C19C122C
-:10D1600057044F71E58F8A9F81F3413CB7B1BE9957
-:10D17000C373C7C5DB19FDADDF3E686AA4E911952D
-:10D180000F57C03E93AE3F77069B5F5FAF2317E01C
-:10D19000EFD39FBFA0707CFA10C1B89D2DE3E93D8D
-:10D1A00010B71BE6881AE7332D87FD8661755FACE3
-:10D1B0009096B702BC55A9C8E7EBB7AF403FFF96C2
-:10D1C0006AE6E70F0804CF01BD392F2104EF1D10D7
-:10D1D0009B3CF828CDBFF58724D2ED8FD0C71342F2
-:10D1E000781AD0476A5BE073B1E2D35206E3F3DF0B
-:10D1F000BAD83E5E3CBC9C55E5A956AF86972CB18B
-:10D20000EAAFAC36CA350DFE146BF83D12239E3ED4
-:10D210004A8FA1F1F5DD2F5439FD5A94BF547B3E5E
-:10D22000B6DF3237433DA71BAAD884FA4AB14A7801
-:10D23000B65885C7A3AC467C7EB8948890BFD32AE5
-:10D240003D0DF0DD556B8E92C321EC67FD32A76179
-:10D250005E4FF4FE781ADC4BCA2F60F2F7FD2217FE
-:10D260009E137F80340970FEAB8E28F3912F896462
-:10D2700001FA3EA7E24F83EF1C91136682BC683629
-:10D28000C7E4AFBB543A3A17A85C85E7DFDBCD783B
-:10D290001EE1526DCA72887F2B018B1F8E375D6A2B
-:10D2A0005F9970BF6E5D35BDA7D935E78395E3EA19
-:10D2B000AF5501E37AF5093DB8FFA75490A66394F2
-:10D2C000CE267FF9F2DE59347F36642A61E7DCD856
-:10D2D0007CCF86B2B473F1844FA3EBAE165D350DEF
-:10D2E000637DE56FD8BCD6D58516C296D83D877AC2
-:10D2F000F6CDA2F9860CB7BAEF387F1EF0EBAF9AE5
-:10D30000C7B707A2E9E996271D867CD97922E07B79
-:10D3100014DB62EB87F7B29C6C5F87F7E7C23AAC2D
-:10D32000DB1EBB9E3BDB85F5AEFED15C1FCBEF3E2B
-:10D3300090C5D6637D3D17539E1FC84A60E50DB169
-:10D34000FB5F95E954E59D980BEBB23E0EBC2B328A
-:10D3500013118EB73B56AF83FDFB2B51F655452677
-:10D360008343CA64E72BAFF6BED09106F4B09313A3
-:10D37000E11CD95B6EFF14A0BF0DED97D0CF4F57C6
-:10D38000EB3BD2034F66D0F4EEF3CF9D82FA0375E8
-:10D39000C4CF49F1F5C0E10C4D0F68F7A2357DD837
-:10D3A00063077D04FF0BFBAB1404252919D65D79B7
-:10D3B00008CFC5F43A44760FCA3F536F577F43A551
-:10D3C000E7AB476F6EBDEFA937DA4567C1FEF3449F
-:10D3D000ECBFAB82B4B7948E7B95D25B2B9D0FF9DB
-:10D3E000E0895BF5FA46E38778E3DEA81D78F5E887
-:10D3F000CDD98113CDF36719BE1BB203DFAF7E62B7
-:10D400005FA904F3ECB93596BCD5E4F22F55B918F1
-:10D410004D2F5AFA4B55CE5F098D0FD7670E19E184
-:10D4200059D7648447E38F2BA13607BCAB45479F90
-:10D4300006EBACD9A5A46AE60DBD17120FCE5FAB03
-:10D4400074F2AB66338F72EF2887F1E95F353F9155
-:10D45000182B6E153DFFAB264A0F401F4FF3287F58
-:10D460000AEB379C4C9322F4F87F543CFCA974A837
-:10D47000C9574D9F44B7FFAF4A779A3E9B88EE3C11
-:10D4800071E28F07326C88BF0DBC28C0FED1810CC1
-:10D4900089E589B8C80BF6EB6C76EE9D4AA85C78F6
-:10D4A00057E26AAF03EF8329DDD650215DC72BBD5C
-:10D4B000B74DD1AFE3EC4CB61EEB1BDC3B61CBFAB6
-:10D4C0008AC9BF381DD6AF86BDEF71EE7CF2A2745B
-:10D4D000DAFE892113BC9045D66DDB6086F9CDCC90
-:10D4E000647A64FDF657D1EEBB59BA5EDF64D4E7C7
-:10D4F0005FCE10553DC1ECF03BA95D00E708E3E1CC
-:10D50000A13093E1E19EFAE3284FEFDDCEA13CBDCF
-:10D510002593E1E35E3E847299B433FB99D8283EAB
-:10D52000A85CBA0493007CFC35C7CE77F30141FFB9
-:10D53000FEC6FD7B562F043B309A3FBEA7E2E92B87
-:10D5400099EA3B84E9C13B33D13F0C70D0DF5B9F4C
-:10D5500067F0AEDFBE05CF275FCC50ED6B953F2F58
-:10D56000C23ACD8CCC2F459DDF05C7C836D0179465
-:10D570006F4C78BEE47533C275F5ABDF6C827AE22E
-:10D580005417DEF7423B96E6FB9627845A75F13A2C
-:10D59000CDAEC9F7337EA8E565835DD890E933D871
-:10D5A000E9D1F6C6FFE80396F6A878FA4BE983C3FB
-:10D5B000AA5DF0A7EA834754FE8FD60BA37CBC93E9
-:10D5C000F1F1A5F3FFBE10F2D17CFCADCC8FA69794
-:10D5D000A2F9F74AEFDD48D7CA1222161AFCA39C1B
-:10D5E00010F8C1A3F41FF1933838DFF644EF4FA6CB
-:10D5F000419CEBD2DED5EB628DFF4416B3B33626E9
-:10D600004A267C1FF2754667D17222BADD285FC4B4
-:10D61000892FD6D6CC41FFF05CCD6DB970EF2DDAF5
-:10D620003F18539F935357817FDCAAFAC7FBACF591
-:10D63000BD31E0F566317CE6178C9C027CBFDFC013
-:10D64000E17D62F8D3DBE9779FF7FF60581A0BEFB3
-:10D65000685EF34FB6B3F1A2C779575DB751FF4487
-:10D66000A1FE09C5F370AD3911CEB16AFEC9B0F2A1
-:10D67000E7F54FDE2423FF300BD6F9686CB81CEABF
-:10D68000FCAF08C17D73281C579798FD0AF08B8961
-:10D69000B6D3F925D1EDFEA8CEE7CDED37298FCE53
-:10D6A0001BE3C9F1F86D14AE3F91DFFA84911CE0E1
-:10D6B000FB378F7C70F15198CF1107BE3F16DDCF3D
-:10D6C000D7B2CCAA7FE0403ED0F4EF80D0B3F905CA
-:10D6D000DAEECD3B32FD3B888E2F08E50BFAFDC21A
-:10D6E0001F295FF851BE211FF7F53AEB63F9298333
-:10D6F000AA3F141DB7117BBFD1047EB14CFC167D2F
-:10D70000DCE90D75DD7FA1CAA5A22CA63FEFAA5DBD
-:10D710002140BCE8FED1781141E7429C9A7D04FC8F
-:10D72000CBD7D47B02CAC68498F1DE992A5E278AB9
-:10D730001FACA933FAF577D51AE5C73BA1FC513DDB
-:10D740005238CE7E9446BFF1C6BB51FDD117BAB94F
-:10D75000FD8089E6F7D9AC1BD31FAB48D33C8C7353
-:10D76000D0F581B496344D7B81C2F3CEA19509608A
-:10D7700047FD82906AB4E33FF8EC34BD5D1254F18A
-:10D78000FC7EED67EF00727943689A164BFF44C741
-:10D79000697E118A7D2EE32E55AEBEA1DDA7B82B82
-:10D7A000763C7F8B3AEE1B75E3F34D74DCA67699DD
-:10D7B00071DE4A16B387DEA86B7304995FCDC6FD90
-:10D7C0001B362EE82DBD5DAA64FD79F4E330C4EF6D
-:10D7D000619CED84403CA54F50A6EACF5DA5643323
-:10D7E0003CE4178DBF0FA5EDA768F5A2EDAC9F67D0
-:10D7F0004A867BB3B5CB8C70B569F62D11310E72AC
-:10D8000015F4A527A22FEFB4FA1F043A202E09CB56
-:10D810004FA878BFBBFEDF2C307F2A3F3BF01EDBDA
-:10D82000599308F2B3EC7CC8A2C7CB851BF4AB2E8E
-:10D83000A8F6C2447234BF6804E5DBFB2117DE8F13
-:10D8400078F30BBFB3C4EAB7F67A96E11CF1FA405D
-:10D85000ECB88A98258C8B6731CB88BFF5D773F1EC
-:10D860005C703CFBFF10C8AF99608F1EE9D0DBFFF6
-:10D870004F6549AAFDAFCA339ED9FDF1E2AF432AF5
-:10D880009D4D147FD5F4B3562F7AFDB5345A5F0EF3
-:10D89000ABFC1C5DEF52D68DD1DDA81D1387EEE2E7
-:10D8A0008DABF91F5ADC37BF98B68FB12F33661C8A
-:10D8B000B55EF4386F46ADCF183F224EDC2E299B63
-:10D8C000E13718276E9794CDE2766709D38B4AC863
-:10D8D000897AECCAD17BF781B9F7C0E2CF9D06F512
-:10D8E000D6A8C66BEAEA5F3D057EAAE65744ECF18E
-:10D8F000601BEC935DDDC1A1BD113D4EB45DDE0842
-:10D90000EF15822055E307456619E3D4E43176BE6E
-:10D91000DFD3BC1AED4B2D3EDD27047624D0EFB7C4
-:10D920006CFFB76DA05F353FFE2D8BFF411667661C
-:10D93000F6EE855E17DE73DD3AEAFFF931DE38CAAE
-:10D94000FF6AFC71A2F518953771D6632279132FFF
-:10D950002EA2A5A3FB2C8254F80A9C4BE512FDBD18
-:10D9600034AD11080F78A859CEA19F5923C84B3167
-:10D97000DEFCAAC90479DF72DF6E3807BFB2DA2293
-:10D98000DBA5C8FE4BE96B0D85AF807F41270C7E80
-:10D99000ECC02FA57F82FBC1AF2FB64BB03F727694
-:10D9A0009E34E8A1F9B3777022D83D558BEF374FFD
-:10D9B00083F15671F80E8DB399A8E7B56F5D5E5986
-:10D9C00040C8370044DDBD8F1A6D9F4659BB0FEE2E
-:10D9D000CD4E4D1D30B9284ABF7B78ED3E1B85AB3F
-:10D9E000A335E085FB78F76597EC83FB786969F2EE
-:10D9F000D0026A471DCC9EB11CF2037FA3F557BA33
-:10DA00000FEEDFBD680AFA385AFE83EC65CB79D891
-:10DA10008F98A48DBF1ECBEF5AF2E0B16DB4FFB763
-:10DA20000F6F590E67D7CBEAB4F11F595EC953FA8D
-:10DA30009FABE51F4B84BCC74922FB4CB309B144E3
-:10DA4000EEF7E179F781D1FB7C2DCBE1FCF8EBE53A
-:10DA50004D95708FB3ECCB1DFB8AA710326B59B973
-:10DA600028D3FCDC9C2F2F77C2FE31A1F448F3723F
-:10DA7000CE57107E8FD9A4F61FDA2767033CCA540D
-:10DA800028E79467F655BBE13EC2F06920CB879B3F
-:10DA90007B6C69867B098A0CA68970A23C9C85E018
-:10DAA000A8FBDAD9E169ECBE9D9A2F62718AD1BCDC
-:10DAB00097E50776C4BE7FF2610E935F038ED8E5CB
-:10DAC0003D2ADF6BFBAF49E789FC6C0CFEFF3CC4D1
-:10DAD000FD6746F8E914C4433CF8E45C532BECC3FF
-:10DAE000DA189CF1F671F7A9E314B426E13B45CBB3
-:10DAF0009A9CF8AECE243F9337948BF89520FFCDB7
-:10DB0000268433D5CCE17B26690E123C4ED3D41447
-:10DB1000F6BEC9328A6A787764E1A4C0513CDF9BC3
-:10DB20009E51D206E7EB5A7FCE831DA6B51F0BA7E9
-:10DB3000B805E04C35D7946C29D6E1AF98C14DD7E4
-:10DB40005D6D277F13DE7B19189A9A0F767565B67F
-:10DB50006488CB940DD558E05CEAE51C554E48AC82
-:10DB60007D6A25932B235BD4F72A6CFE12435C5FFE
-:10DB70009D7F65E7B22F41BD86210B817388DB8EC7
-:10DB800097E33BFDF1F8BF01CEBBEBF476031FC674
-:10DB900073E60D70DE7D06F4F75301CE37423FE0A9
-:10DBA0001FC0BD0EB09B52DB62AFB716576EB8EE0A
-:10DBB00026CA0CFD7786AF48FF1E2C9F685E91FE3B
-:10DBC0008CF7F8C6F6A7DEE7D3F0CEAB781762C3C2
-:10DBD000F9AA469714DF261D3DAD52E98B4A3F7CDA
-:10DBE000D7F7C2F2E25EFD7B0584EC60E73A78BAD3
-:10DBF0008E604F0E39F07DE0329EC9C7B2A16451EC
-:10DC0000E1C6D285B6AE03C94DF83ED1C80A2EE6AC
-:10DC1000EF0F9CD7E052EDA7F4BAA079830E3E8DAA
-:10DC2000FE23FD0F7D41E38F75C8B77B197C606FC4
-:10DC3000C03CFCE169FA73201AFCB753D981E7496B
-:10DC4000DB54FCDFE10AF57211BC8DC57FD604EB15
-:10DC5000998BE5654327059867431C3EFD650E3BA0
-:10DC600027927E3E9C08E703966633FD35D03FC37E
-:10DC70007E1BF0C53213E124366FB033CB34F94A42
-:10DC8000DEFB590595AFE9A3792A5F2558875179BD
-:10DC90001BB6D922F57F9AF3DEF276AA3F3C567680
-:10DCA0001F8CDA8F36A2BB8768CD61F1DBD9C1D872
-:10DCB000FBD6C3390906B9F5547325799BCE6F6538
-:10DCC00036D3E7B387157C2749E3EB68B95498C38B
-:10DCD000D6D197C3ECF18F5F2E7113C8A515AA5C3E
-:10DCE00062E5C4136880F234937A2F4164EBBEF18D
-:10DCF00047330A210EB7D56B96E09EC34ACE9FF3F9
-:10DD00002D3A4EAD4DEA489022F4514B6C920BF0F7
-:10DD10004D47807BAF35CBEC98873FB03BFEBD874E
-:10DD200063F447A4A4DA71EC5A0D9EAD5E01C7DB23
-:10DD3000B8AB3029A887930F3C8BF13DA70AA72DDC
-:10DD40004A5FF1C67C5A5AB8D164D695BB98FEEAB0
-:10DD5000F6CAE539605FAAE79BA2EDA27BB23983E0
-:10DD60001CD6ECA2DF79199F50FE45FF319DFA8F3A
-:10DD700004EE7BF407F03C183C605488F775D9FB3F
-:10DD8000C66F1D2773C14FD2FAB92BA7D8D06FDD4C
-:10DD90006ABA489FA4CC69AB942FEBE4D919F57DFE
-:10DDA0007A4A0F33815F57E710633B73201BEE9570
-:10DDB0009374AB1FE4CD29217018D757246E58DF18
-:10DDC00085E62D87912ECCC4DD86E7A48E60FBEA24
-:10DDD000BA9152B4533F308741EFFC3C3703E339EB
-:10DDE000A94E46B7A7EC4DD88E275232CA1155EE30
-:10DDF000FD3C770ABE7FA1C9CFC87D16AD1F567EF8
-:10DE00008A5B910DEFC49E4A9D5CD2C619ED1DB090
-:10DE10007F22F6D2F3FB6EA7FC38ABBA3F4C61A66B
-:10DE200052E5A5E58FD2FA5B7298FE3BE50B0CC07C
-:10DE3000B8A7DC4404F8670F079F85FC62AF13DFC7
-:10DE400071D3D623CDC47E1F264DFDFD15E01348AA
-:10DE5000C55CC66F8773D93ABEA3E6D31263FF9E33
-:10DE6000CC7FA8F57AE0FE1FADD75D1EFBDEE81E75
-:10DE7000958F1B6D3DD570955E77CF13EF2DF38495
-:10DE8000DA55B4CADE1CD60FD56788AFCACE3AFCC5
-:10DE90003DB1F78756E1BBAEA3BFF301EF54D17597
-:10DEA0000F9395FB01EFC22FCC787EB3C3C2E8522B
-:10DEB000700745B88794E28CEDEF7E578527C5CC77
-:10DEC000DEEBD6EE2F58D4FBFCC7547B2CD15B8BFA
-:10DED000721DDE58937CF02EDB08DECFD5D631FAEA
-:10DEE0003CAE45BDC77FF3F643491CFBA1D4603F60
-:10DEF00068E346DB1117E13D6E5DBC7B9DF7DC42BC
-:10DF0000A2ABFF6932DC01FD7D7A5B96212E11CF39
-:10DF1000FEF8912A6FC15E5062C22518BE5FA47ED2
-:10DF2000A0A21FFF0A1B3F32AE9328BA71F7E6C8C2
-:10DF30003FCEC1F8CD5C11DFB1B0133C0F5BA6BE84
-:10DF40005F47F513BE5748F55235C86FCD2F02BE57
-:10DF5000179380AFCBCFE6A4EAF4A4DA2E5A1EDDE5
-:10DF6000A1DA0177A8FA26E9BC66373A248E8BE855
-:10DF70009DB17A8B53EDE868F918AD178C7635A50D
-:10DF80005B456F078CE11715AF374F1F93E2D0C782
-:10DF90002D7F11FBB26C6ED03C0DE4663547601FDF
-:10DFA00064569551DF3B7299DFE1C8751ACEE1D610
-:10DFB000D419EB25423DE0AB5CE70DF9297A7DC42D
-:10DFC0009941EEB1FE36ABF4E07BF7AC00EF372EB3
-:10DFD000C965F650499E9C9A4BD3237FA8EC83DFFA
-:10DFE000A11869E549AF07DAC97DC31E98974D04AA
-:10DFF0003FB57C6D55D1115A6EF9A905DF9D2427D7
-:10E0000062FBF7AE664EBE8FF273BE2AE71A3C6C17
-:10E010005E0D9EB05040E1C86C60F064F70F72BCBA
-:10E020004EEE65D7B37AC5B91683FEF1439EC2772B
-:10E030006BAE16BF0CB5C2EFA164D7CB3CE8BBCC2E
-:10E040007E8EA8EF6EE27BA9997ED6BFCB1FE2EE53
-:10E050002D8ECCBBCBB4A218F445579AD30FFAE25D
-:10E060007379C1329877C3857018D036EBC2100F20
-:10E0700076DFFE3C79167CD7E62799C54CD81F770A
-:10E080005E60F0F544D13F21BBD575E965F0B9027A
-:10E0900025004F5AA284EF10D1BF7CD0AB69C9AA2A
-:10E0A000DE482341782F88D8683DB0831CB49EFE9B
-:10E0B000DE260994C23E412875DA74D0730B1DFE2A
-:10E0C0009336D0AFD37DD3E15DA1170EC78EA7D70E
-:10E0D000AA7A87C27FA71EFE78FC31FADEBA5ACF31
-:10E0E00012C78FD6E8DE591DDB5EA59A00CBCBD7D1
-:10E0F0007AEE86F934B40BF81B5D1ADEF7E70536C5
-:10E10000E6A6C23A1DE1805F33FBCB91AE32159E8D
-:10E11000805DD1EEC80DC13BB2EDC99F4A07FCC777
-:10E1200083BBA1D92CDFA7E7E77601D7E348D4F971
-:10E1300035CDCF782C97E9A3D37981AD30FEE613A6
-:10E1400007F09CE083472F09E3BDEB73A378E3EA74
-:10E1500099FFD2B086BD9751BE96473ADCD42EE0E7
-:10E16000BBEA0DCF1E0FE37EF17682FBA00DFDC74B
-:10E170004FC33BAD590DF24CFDEF126435B077E360
-:10E18000D212467F1F5400BD9DD9BFA201E95A2477
-:10E1900022413A0AA2DD956D63F6A886DFD34238A4
-:10E1A00017E267A74DC4DF46CBAF59942289E6AF8B
-:10E1B000F91C7E787FE1EF8FBF213D067886B81885
-:10E1C000BC7B9017FC12E0A3BB959D27EF5E48ED4A
-:10E1D0001E5A6FA1936C85FCC2361701FEB8513CE4
-:10E1E000CC8AA28B59DB199FFC283751E55782EF67
-:10E1F000291DCF4D50EDA8601DDAAF741E9D731020
-:10E200002E9C87982B7F15E9564CC671331BC29CF8
-:10E21000FEFE899646E84A7E3637F566E0ECC77D15
-:10E22000C64DAA9C295F7B947B5B47072FE69A919A
-:10E230006E329F3DC2817F48CB5B177AB03EC607E6
-:10E24000339F657ED3265A7EBF41AE6CC0F97439C8
-:10E2500098FD48E5CA4980EB94690BBEEF776A3AAE
-:10E26000C17766EFB8103E8DE25985F794C0D6931A
-:10E27000A77868A5F99FE54A38FE6921781FACFBAD
-:10E28000E94C76BFBBCBB403DF3BD5F83E9A4F7F5A
-:10E2900096CBFCC9CC3547398827789CCC9ED4E0F6
-:10E2A000D3EA95E4559C05FCCEAA1E423C34AEE16F
-:10E2B000D97D0D159E8542A000FCB461B5BF93AB1E
-:10E2C000BF6D3E44E16B2CE6909E9FFCBB57912EA8
-:10E2D0001B7B38F6BB413DAF0AAB74FED5C1EFBD29
-:10E2E0008A7A65E9008B1F340E1CE7EF7581BE3911
-:10E2F00089F4D948E9CF5E0AEBC6ECD86B96702E4C
-:10E30000E8CB68FA745633B90831D742F60E1CEEE2
-:10E31000FF86D6DAD0EED7E4AFA8C209EF08827C38
-:10E32000FD8DCAEF5AFF117FD5EE07FAF6BD3BFD12
-:10E3300024BCEBD6E8E7FC701EF93F46F50993D7FD
-:10E340005222FC7660A4FF68FCE5E631F91A438F9F
-:10E350007C184B8F687AD6F77405BE97ACAD1FAFAB
-:10E36000E27D54BFE7B1FB578979BC0A8FEC853851
-:10E37000B644F9B9BB14DEF50B144B809F54A71FAC
-:10E38000E23B7FEF7E5DDAA0C3D76981F23BCD9F90
-:10E39000CE77203C942F92F274EBD750CC7E67EA74
-:10E3A000C9EFAE40BC36C0DA51BC3604EFBB0FF14A
-:10E3B000EC25E231902F4126BF1AD6DCC5DE05D709
-:10E3C000F4DF731CE2BF4171E13BD74BFB57207D6B
-:10E3D000128FDD5FC8A15CC375D6F84CCCD5F61D95
-:10E3E000D8BB43D4AF6F857889E6D727D605940488
-:10E3F000692C9FA6A87EFD4CD5AFB7CCB6FD59FDC4
-:10E40000FA4DCD3F41FFE721EF8F30D5F884FA8DEB
-:10E41000067EBA2D8FD92D929A56E431BEDC54DA9D
-:10E420008FF4BFE97213F28FAB9AC911D705A3FC21
-:10E43000D3E260D4836374E8EC5F04FB110BBFC2CA
-:10E44000892007E2C1FD19AEE967705E851C67E7A8
-:10E4500028167CF0F344FD3BA435798CBEAFF599CA
-:10E460004918F0CD3709E3D9BFF1FACB0957CDF9F7
-:10E4700027BA7EFFD29784E782AE3DBBF2F3905776
-:10E480008E26E139929C702DD2C535CF1C3FD081AC
-:10E49000A78DE1E95A7F25D2CFBBE99209DE096B4E
-:10E4A000ED7F623EFC5E74BD0AD7BBDF3537031ECD
-:10E4B000767CED3BF3E15DC94D212E05EE9B5DEBD6
-:10E4C000FBCA1F41EFD51F7D18CF7DB57DF37FA11E
-:10E4D000DD6D0A1D61DFFB9244A877F59903F30116
-:10E4E000BF6DFD6D58FEEE3347307FF26BDF311F9D
-:10E4F0002A8DD0F1BBDF3DF2C3DF433E9088F77237
-:10E500001A824F3E0E79529BC8EE5D055F11F4BF33
-:10E51000DF75F0F820F2A146174BFB39F5DD30012D
-:10E52000CF7968F4FB56457119F01DA550BF793EAF
-:10E53000CD7727D4C78A23EE51E7DB00B408E3AEDA
-:10E54000E142C0075D82D287F25CECCF0579EE2C08
-:10E550000E0BF02EE9EABAE3F3D9CF10B662F94A0E
-:10E560001B3B2F368DF20BBC1F457B3BFA21C4F7BA
-:10E57000BA1E5C07FD1D3613D19C118177B320A113
-:10E580007FB4B986F3530E231CD9762A15F6C79AA1
-:10E59000897AAE8BD5EBA2EEA52D19F510B1D3B4C7
-:10E5A0006C5BEC38E893792E953E19BF660EACC8CB
-:10E5B00006F9413C567FA12FD25FCEF9A66E78DED8
-:10E5C0003FB37E6811CC6349D18619300F0FC4FB6D
-:10E5D00040BF282EECBF11E293949FBEAACAC73455
-:10E5E0003180EF8CD8E4402AFC269B640DE0396E24
-:10E5F000697DC0D20A72861FC95D858AF09861FF65
-:10E60000F0A025983113FAEB52F5D351063F6D8FE8
-:10E61000FD4995B207DAD3FEB13F5B9DCCE36FBEF7
-:10E62000D9D83AFCEB0F6E3F668C9787C6F45FEA49
-:10E6300002FDA2ACC17593049CEFBB5015F1ADDC9B
-:10E64000AA8F6347C77B409EC17EEFE9BCF2C1BC85
-:10E65000D448AAC581A2F1CC4BB49CF65321C998E9
-:10E6600092BE1BBB77A6C9EDCD7B54BDFBE22594C2
-:10E670003B9B833CD3BBC1CBA877FFA545266F53FB
-:10E68000C3F2E0F39790BEEF3DC1F4EEE61325022E
-:10E69000D0B3F61EF2E68A6BA87F153341BADE2CA2
-:10E6A000F49FF642FFDDC44D2D7BB279FEF02D20A4
-:10E6B000FF7EFDBC7D0DB43F653221BD9DEAFDC4EA
-:10E6C00091364E0F1FF303B8FA10F2E366D52E28E9
-:10E6D0005F7BDF01F0C71AEBD9EF116C1E50F98B8D
-:10E6E000FA6380DFCD275E45FAD1EC5EDFD3354893
-:10E6F0006F6E4A6FF8BB095543081FFDF317D2D45C
-:10E700005DC5DEC55D52545206F47672F50F778210
-:10E71000DEDE5C4544E8FF608EFC3CBEFFFB3C87D0
-:10E72000EF511EB4F454C03DC9830B2511F8637337
-:10E73000B076543FE1F9EA60ED00F28F679D1FEC7F
-:10E7400087EED620DAD5DD194EB40B0E3EDF8AFAFD
-:10E7500073B3E4F0C3EF992C3DC16DC5F68A8B30DD
-:10E76000F839B4F397866EC3735B1A3E96560DE77D
-:10E770003279C1E0FEB565E8D330EF5F7FCF0A6F35
-:10E780007E8FD2DFFF05D640AE560080000000002D
-:10E790001F8B080000000000000BDD7D0B7854D5B6
-:10E7A000B5F03A73CE3C1226939327E1E9C90308EA
-:10E7B00098841308EF872704102BB583F2B2220E3A
-:10E7C000C823424846C48AD77E37830331526F6FCD
-:10E7D000AC2FEAA576A06AD12B106DAC51030DA821
-:10E7E00014ABB5D1528A16BDA3222F918CE083DEE3
-:10E7F000D2F2AFB5F639C9CC640262EDFFF9FFE998
-:10E800005737FBECF7DAEBBDD7DE9336D9BFF18E85
-:10E8100032802BD561BAAC03A42B6DBE3B3201D242
-:10E8200000F435986FB07B9D3A9647FE430A6DCE53
-:10E83000C5EFD3C0081501E4DF23192137408A262C
-:10E840000164516A335307C008C0BF0691AA811200
-:10E850006F31C027B5067C3800F84FCB0658CEFF85
-:10E860000058B1A8D5A1617F554F89FE329D46E978
-:10E870002D989EA3BFCB305F013778B13C4B966E8D
-:10E8800098C1A98D53ABDC4A8799F3C87D64E1BD7B
-:10E890005370FEDFA9043D0987E85D88DF310F7EF4
-:10E8A000080DC0F9F7AEF4F6D5A83C73A92E633E67
-:10E8B0002B03BE4FE591350ED82C75ED7724AD6B4B
-:10E8C00004D5F39649582FAB678A1EA4A1E4725B66
-:10E8D00012B52B95F4CD1AE5AF7E14084E59BD74D0
-:10E8E000EA072064C2C15B66C37A47B353F4F5F408
-:10E8F0003DF407E56A84C7244DB5CA4BA99DE601DE
-:10E90000585FDAD96E4ABE97FB9BD233490FE23C7F
-:10E91000A737044A204FC0C1EBEE8443684DF2DCB8
-:10E9200050143CC6131CB07D6830CC6D2C22F87B93
-:10E93000ABA89F6C9B9EB11E3715DC81926B526811
-:10E940009C20C36B00CD03D329B83E3FF59BEF5D00
-:10E95000C5F0C84AD113C163CF25021EBBE76C9333
-:10E960003760BDEA2229E4C4F9DDFFE28C525A6720
-:10E97000F54CB70E98AFF6290B695C08B8E031CCBE
-:10E98000836FD1BD53305F5DE9D5D76BBCEE455485
-:10E99000DE3733495F8FE50F3E2F1994AF0EB84332
-:10E9A0004998BFB259E04375F3D3CA8D98F620BC9D
-:10E9B0007353BB40C98CE2CEF900ACE1F9544F3A35
-:10E9C000D1FF656C1F9041972762DE111EA8E3FA04
-:10E9D000AB27860712BC4E3E9F3497DABF62B30561
-:10E9E000689C57365FBA292875EDE7A4DDDB44EB58
-:10E9F0003F89EB0F60F96F9FFF7388E8612DD28329
-:10EA00009C837BB4462BA7F2F55340A57DB1F66BF2
-:10EA10008F23504878B5272F99F183E6E945381FB1
-:10EA2000A77FF602B8F5126F8D8670AEB6B5D629FF
-:10EA3000D46E4B06C018CCBF70F7409FBB2B9CB167
-:10EA40003DEF8B4B01C65F57A847281885572E17F7
-:10EA5000D2DA304E036E4C7BAC16F089EFE74ECD28
-:10EA6000CDFDAC7085F7E0CE41CDEA065736E29198
-:10EA70002F59E3EF49F680D107E7E3682E6FED8366
-:10EA8000E5D9E9F81FDAB7CD3D42B46FD9D9E07BBB
-:10EA90002641BFAB4C3CB3F6A5211D182FB33DA2B8
-:10EAA000FECF4DBAF98949975BCC348A2E62F1DEEC
-:10EAB000EDCB253E919D0CBEC604E359ED717E5C05
-:10EAC0006ECD0B5CD84F26B5D36C8CDF717417CA32
-:10EAD0002A1E4674372559DFED227A1A963B2C08F8
-:10EAE0009DE320247267A474C5035A07D10FAD8B30
-:10EAF000E8ACBB7A0DBB047F8AC7CB674C3AA9222E
-:10EB00005CC7796F93901E13EEB3E8A7DE966B7B1C
-:10EB100010E7FBA3FD32F3D9F87A56BAAB16A0750D
-:10EB20001040DEC66B53BDC5DDD7DB66D6FB71ADCD
-:10EB30008B53B7AEAD51B0FFA12D5AA90C349E3600
-:10EB400089C60BE078B4CF2913E15319E1E319DD4D
-:10EB50005078672EE179E35C5AD750256C2B25BE9F
-:10EB6000EBB5416BA1E0DFE7F0FF3DE72643ABAB40
-:10EB700033DFCB971E93EF53D93BA67E3F7F5E4C8E
-:10EB8000F925AB87C494E70686C5E4F3EBC7C6D482
-:10EB90001FD03029263F68C37762EA0F0E5D1D93B0
-:10EBA000BF74CBF763EA17372E8C299FF48FFCDDF7
-:10EBB0003F253CA7F527E073561AD17279FF8636B8
-:10EBC000C7AE3F7574ECFA158800D1FBA4E4BFEA28
-:10EBD00089E8D94A5341F92C6CB5233EE0D26C0F39
-:10EBE000E23CCAFF2C87D627988785CF567E922293
-:10EBF000C78C6BF1890BE1579EEFFCF8F263C217EB
-:10EC0000E779E6FD0F39215DAAB9820F28E0E5F525
-:10EC1000A74E9C7BDEF5DBE3D70F1AE3BD87D69FBB
-:10EC200000EFE3D79F3A3A761FACF5E7F90637874E
-:10EC3000B19FCFE74A2C5FF651D198AEFDBD1BB70F
-:10EC4000CED9AB52599F01EF3509EB77CEE34E9EFB
-:10EC5000C7F54EF02782C374130E95B982DE2F4498
-:10EC60009FEF9BF3F81FA24F4CDD6B73991E619FC2
-:10EC70001C1A805D2DAC9776F544BC48F7B9592F26
-:10EC80005BA8B44269949CBFDFA4EF074DFADE5045
-:10EC9000AB723F0FD7E670BAB156E3EF8FD416725E
-:10ECA0001AAAD5F9FBE6DAD19C3E8AFA18A58FD7C5
-:10ECB0004EE3744BAD97EB3D593B97D3A76A7DFC70
-:10ECC000DDDA9FEBCDFD016F06CBB3F8F5CC5F9598
-:10ECD000182F412EE2F6F391CEE4F3F0B52EEDE5D8
-:10ECE00079A9E7C3A3D50773B7BF1C8507D7E5A6E6
-:10ECF000641EEE81FF1805A3CEC9176EFF65ADB681
-:10ED0000FD65FB85E9C2C21738FBE18044F5AEA77B
-:10ED100031C722BFC9DDDC1070770F9F4E3C8AC31C
-:10ED2000572FE22B7E2D21D9DE8BCAC3BDA3C7F995
-:10ED300093B9CF567EE64C81AFF1FDDE6FE2DF2C5A
-:10ED4000C24F2C9F1D47AFA77385FC3C9D2BF4F44D
-:10ED5000FDDDF08B7B726DA6FC14FB3E6B9FE04BE0
-:10ED600077F6983FC197605C294F8BA1CFD9336369
-:10ED7000F771BF5DF0B7FD7F92436B12ECFF85DA50
-:10ED80005BEB896FF72773BD9FFE7F466FFBAF4D2F
-:10ED9000617D7EBFDDD72F2B6A7FF65FDB636EA2BE
-:10EDA0007DFFDF5CBBD8AF421548BE433A18A407CD
-:10EDB000E192020ED2E5A0403D4C7482C610D145CE
-:10EDC000F778A9C0618B9E64826712EBE39FCF4CFA
-:10EDD000E1FD079F6A4054FFA0A8AC976EFB2EEAA6
-:10EDE0000A349E82E3A11E0ABAAD73FFF2E8BFC9DE
-:10EDF0009DFC5AEE9EDE2E8407161F994D7CE43C46
-:10EE0000F2BA6BBB8BE32387888F5CFACDF3118B4F
-:10EE10008EE1EC8D03BC295DCB67111FE90DF0D3AA
-:10EE2000DCB7998F7C6D3859746BEA13F1FCA4DB65
-:10EE300076CD9917907F263F57FCF561C48BDBE4B4
-:10EE40009486F5D8E42EC5FF73CA07020A3C86A94A
-:10EE500073F5E9DE878673B7850AD71BC2F69D5323
-:10EE6000F1FF32CCF6A053A57A0FF5F8F7ED945FD9
-:10EE70008D1CD389E99749FD4380B640699EE03FE8
-:10EE8000B2EB4CEF4351F3B3ABD0273A5FDAEAEA87
-:10EE900073286ADF86EF5563F223DA7262EA8F3AEB
-:10EEA000A0C5948F0917C6948F3BAAC7E427444690
-:10EEB000C7D4BFEC8C11932F872B62EA57B866C476
-:10EEC000E4A7A8D7C6D4BF3C67414CF915DA4DB1C9
-:10EED000FD157887E7E1BA173ADCF5522ADA69B905
-:10EEE0004619E59393ABFD0BC84E5AE3516122D509
-:10EEF0000E85086E750E97BA1EF9D40792D11F10B1
-:10EF00004FEFB3A1D59D8FF5E530507AD0A697523B
-:10EF10009A676CF1119D6E2F4CD6681F920702B450
-:10EF2000919C52F424407EE2E811F95D01EDCB6F33
-:10EF30006CF01826DB5554F4A97E736688ECDFACC0
-:10EF400064DF15348FF5B606CF1ADA671B781FCB4E
-:10EF500064BCFAC968CC1F7E41B1119E6D6FB1DDF2
-:10EF60003316F39F61F7329637B59DF8C995981F10
-:10EF7000DA66D7A9F65090D94E5CAEC03D4A7AF712
-:10EF800078F6F10F843D15FFFD677982DF6755083C
-:10EF90003B33BEFC8E3C21DF3E76242E5F6EB6AF47
-:10EFA000B86BFA43C4D7EC6D7620BFC5AA2CA32753
-:10EFB0009C4F5F3D930FA1E15179C50BAA9BBE0FFA
-:10EFC000E4EF1577CD83B05BF4437EAC5549464FF3
-:10EFD000F23B7C3C29F13C6E31E7613FD3A39B7E41
-:10EFE0003DFCFDE3BCF3AFD37E2609421989DABBB1
-:10EFF000F97B563071FB7BCCF13F4E4F5C5EDFD12D
-:10F000007F2F086444B7137CA7739CBE5C6E3F934C
-:10F01000068184EBC8E4EF9063E410DEEC423A270B
-:10F020007E519E96ED0024F1F91079C540F8CF206D
-:10F030009300F1145C7A29F12950EC91B04517281E
-:10F040003F1680F201D90B3644C67338B51B56DB28
-:10F050003F0847D1D10C23360F543F4ADE7C427D16
-:10F06000E37A928714A612BE9F022D554D805F56FB
-:10F070003ACF257B95A8F51CEC464F6A33E178B072
-:10F080005762383E6FF2B191F320A1BED696E711D8
-:10F090007659A1DEF37C7283E0EBCB88EE377E1FDE
-:10F0A00032B9FCABC219F182E57AE4BBEE10FB2960
-:10F0B000BF71785BF8DD27062F3EC98F9F777F2EC3
-:10F0C0002FE8EB7D2B8FE58A3690E4629349BF4DA4
-:10F0D0008AD163989BF8185426827F9F7C534F8D6A
-:10F0E0005B771318390BC8AFA1D875E267C932F83E
-:10F0F0009F4E00FFF875A79AF3C6F6735BA93D789B
-:10F1000074C1E7C0EBCA463D9FFE854B280FBC6922
-:10F11000A7FEE7F93DFA7A54813ECF13FAF40208CC
-:10F12000DB890F77819F3BD34E7EDB78387A419B1A
-:10F130002FE55F189EE905C6E7041F9B4BCDDE8ACD
-:10F14000EB9C1FF000F9696E98079E629C8FEFBBE5
-:10F15000E96F185877E155434AD6527AE9F83A9957
-:10F160005B4F66BD4F0AF491CF5DFAD5F5BE3A8F7D
-:10F17000AF90E8E390A42D61384808079237BD8F1F
-:10F180000F5C1005C715FDCA7F9F9F45E7036064AC
-:10F1900090BF788793FD56B001580FADD9397813D9
-:10F1A000C9852FF27DAF51BD51934DFFAD11197837
-:10F1B00075CAC5C30BFFEC44271782976CD2FB417D
-:10F1C0004F62BC19972FF6EBABD24B66BE8043045F
-:10F1D000E1B0B9EC9BA717845F0CFF782D5FF05F5F
-:10F1E0002BB5E0366A5AAC7FF735731DAFE57B3837
-:10F1F000FD22DFCB706EEFF7E9E12492FF0E5C7F1A
-:10F2000002BCF7764337DDADBF3B7AF9A6F8F2C111
-:10F21000E4C4F35CFC2D99E71B344FE2F32589E746
-:10F22000F96F17894FB83F4B5CF9DFFC3CBFC8371B
-:10F23000DEC8A779A6279EE74F2F129EC8EC96B48A
-:10F2400062BDD9C807A9DE373D5F082C984272E835
-:10F250001A9FF0FF1723C7253E845379F4DC70D240
-:10F260006FF5751B88EFACF4E80195F9C81BF982BE
-:10F270000F8281F399394D627F52FB884F97288422
-:10F28000EFD9D09A46FC6AA793FDD9F1EB0F99EB21
-:10F29000473A799CE004D32303899F1C1C98984F1C
-:10F2A0003C1E5FBF3EC2F2697D7962FD749B49AF2F
-:10F2B0002B5C0DD3B26DD1E72BB84099B86CC0E888
-:10F2C00043F2B64C5D4BFCC4817289E0EAE833A49A
-:10F2D00027ED07E6BD12F981735E3F207918DE271E
-:10F2E0003AE097D739CEF1DABD6A81BD7B7EBE5C4C
-:10F2F0007E66A43FC17AB66ABE5DF95176E3F22D0F
-:10F30000AFAA05D1FE7108DB800547C4E6E5F341ED
-:10F31000D36FD0132ECA6F509C29E865453F2FCB81
-:10F3200007921B643FD7BD30A6943617F50F20FB1C
-:10F33000209292CCF222D87B6CA11605CF0FF32D30
-:10F34000FD53EE46AF74C47C7FB7D685266567FE55
-:10F35000FAA3FBA6903E3F1FC2EBA8FEFC553DE87A
-:10F3600008B2639D1DFD9D9162F4DBCEFE15FE5E2D
-:10F37000EE72B7CA433175FF2EE17E6CD58CA304C3
-:10F38000CFB5FD8C63B4CE78F805EE1A9FC67E0427
-:10F3900082DF655DF7BDBB7DFEAB669CA6FE5EE8C9
-:10F3A000A75A7E1D9DCFE392ADF361453DECEA8403
-:10F3B000F757DD9764D3BF88FAC4399AB701557EF1
-:10F3C0009ACF3C8BBEE3F41C2814FE803A4FDBBA84
-:10F3D0005D517478832D9225E476781D3999FE6706
-:10F3E0004712F38FF61DBFEDE7E3F3344BEFE8214F
-:10F3F0009FEBF1D5E767F917ECC989F569EB1C6359
-:10F40000B7BDA880F5123AE71D8D79495B44F6AA8D
-:10F41000A2821EC4F5955F8ED884FD4D92FBB68402
-:10F42000711D9FC3D9E40998FE2788F5AF7AF3A32D
-:10F4300074F2634E52ECC7A3F953BC1F684041AC51
-:10F440003FF914CC4B6D25B88C4F67B86C6F99940D
-:10F450004AFD943C3FB927A5BB6AEB55C5DEE90FD1
-:10F460008A9F7F793776E9B002A177BE9E6C0C2B1C
-:10F47000C0B4BC9BF58F32EB85938D5105599DFD32
-:10F4800051FD44F1106D832C3FAE80EB358105AC0E
-:10F490006FD95CC857897FA2FE2AABE4272CB03312
-:10F4A000BD1BA0A9D9EC3714FB8F7C5DC1FC0433D4
-:10F4B0002FD5BF1DA4761B6FF1F03938F83420F931
-:10F4C0008080E173813AC9CF7E0717C57D60BA5E3F
-:10F4D000D237902E26DB2219822E4222AE017C0AE0
-:10F4E000E57F2B85831427B0D6F5EF3F273FB81172
-:10F4F00054206922E615603F63E0600A9FCBF1CC9F
-:10F50000701E4E6B5E663EC5CCB7CF9A3A6D00A6B4
-:10F51000B7253FE2213C0D4BC847B19F2F93FFBD5C
-:10F5200095E9C69FACDB7B937FE93DCE4B2B937572
-:10F530002987FC4F9E42D2535743B2EEC4710C77D9
-:10F540007180C67568C0FEF86468E475B8DD9F0414
-:10F5500008282AA812DB4FC9BE65056CAF009F932F
-:10F560001F7E2F6533AD3F493DD57A077ECA0083A4
-:10F57000EB65C4C9C72CF72A89E337BC4A9C5CF405
-:10F580004904FF9E73E3BFC7CA4B171C54899F48A9
-:10F59000ADDE9C73C89FDA086E659D706B53845D09
-:10F5A00067C12D30C9FF4B826BE04EA71ACCECDE51
-:10F5B000DF86001A45FA789BBA642BD547C3096CDD
-:10F5C000D45F8E585FA0D229F641F16DA5F6EFD831
-:10F5D0007354B27B2C3C7B68A0C9AFBBF1773C5025
-:10F5E00020F4A3EAF4C3D524E70007B5F50738995A
-:10F5F000727424F10D9497F5242F93EC06C3DB92DB
-:10F600009B2B9AD600D15575F30220BEF28EE41BD7
-:10F61000F032DB23C076D99C6981576C1AF9B26647
-:10F62000AE7363FA49411EE3D7FE57A6BEC26C48CB
-:10F63000761753BBD2CBBC53B270DC6031E8776233
-:10F64000BD60926FEBB3B4AE3765FD318DE2212A18
-:10F65000E0C3E12632E1F74DB333D86F9A5911A9CF
-:10F66000A37881C8DDA0527C4F17FA388BEB1B09B9
-:10F67000F00B1E0BFB59A4B612FEF4427C93D4CEC1
-:10F68000F247A93C5FE42FC37C8DD852C86F29FF95
-:10F69000DE0882479B0C141655D322D968FCFC99CE
-:10F6A000C359AF29A0F2CCE8F2B4E54F61BE60EED9
-:10F6B000049DC849B3F97E762B95BF01BC0E30F985
-:10F6C000F7A838FA1DD749375C5EDA91F757D07C36
-:10F6D0005FB919D88EAD31E56D0CBDD162B1CC18D2
-:10F6E00049F8D7D10F503F15667E9CA2723F7DFD31
-:10F6F00060F205EFC607F89CC0A6937FB24E6A6021
-:10F70000F840C0CFFA1EC5CD10BDF49FB76BB79DB2
-:10F7100006CB1474A7EF157457065E99E03552BDF9
-:10F720003B48E3CF9997CB7C66CC5160B830E5611C
-:10F730007E429AC4FB943F209FF165BC4BAF97116A
-:10F740008F64B9343F09C79B3B4FE2F38959735D1E
-:10F750002109FF390BE983E3A1145FEE6CC4F7398B
-:10F760003E499CFB627E5E943F1EB5613E379BED39
-:10F7700004FFD309F0397F80C077AB7DCD5A478C29
-:10F780007FE792016EE1E71830F59302E6BF22AE03
-:10F79000252BD91B117CA381F9D4611BEADFA4FFBF
-:10F7A00082C1FAF63526BD5BFC6296710BDBC1B3F4
-:10F7B000BCB17AF43BB4274407D74AACE7CE997B77
-:10F7C0007E3DFB5C8164C6DDF455599E99DF35D0E2
-:10F7D000D89EBE9AF49C12FC380DF59028FD7EDE72
-:10F7E0006D67D3B87ECFC7579CBB0451A152F09729
-:10F7F0001A8427F1CBF26B15A697EAB50E8EFFAAF5
-:10F80000695E63CF267CFE21E8025FDFAFEB83F306
-:10F81000EC53658C90B528BF4D554822BACE269E34
-:10F82000C3F08F38C82F37DBA157D1BA66A7831A28
-:10F830004843BCBCF68A8DD4FF5A17A832CADBDE17
-:10F840002D6F8608AF9095EB849388391CD7D657D7
-:10F85000EDC1E70BF5B6611CB755EF49D1A3E3A4A1
-:10F86000D6AFE9C43B8AD7D29C304C35F737919D4F
-:10F87000346480E0570F4AC0F22270AD8BE19C9552
-:10F880002FE295B2527547308DF88D66D5E338BBBF
-:10F8900007EDBE5EC3310DA15A29F647B48BA7FB15
-:10F8A000AC0CB39F1E9A1444629CD9525A6623B87A
-:10F8B000B953748A4FB4FAAD4836ECC4B72A8648B7
-:10F8C00023820CCF4DCA22D24F9362F9BEDD2EF6B1
-:10F8D00005DE157C3F5E0EA21C60BE4F7EFB6019EC
-:10F8E000CBAF8A01592C0FB89FD58A4B75EAD0450A
-:10F8F0009E657A2185FC5CC31064A4AFB7E5786788
-:10F9000050FC5EE07585FD6A6573F5EB1647EDEB1F
-:10F91000E60E391099CFF1503FD4FB503CD4DAF2C7
-:10F92000CE3CC53D56428383F0BD324E3E2E73BF62
-:10F93000CC7AE4B247ED9DF80B1427AAE713FFA891
-:10F940007AAA8B3F88F954273F8BB32F417D89D604
-:10F950003302F931F121A3204566FF32CC13721432
-:10F960001E97C82F267B56D793DC6B97521AE4B2AA
-:10F970004E3E39C2DCAFBB14EF4B141F1B407DE978
-:10F980003115BACA01F0B3FE3211E526E9D152CBE6
-:10F990001C99C6DDB814FBA6F37C255C41F9DB9607
-:10F9A0008A735208DCCCE760E3024E95E8FFCBE4B3
-:10F9B000FE6BCD71FD7664D6C7D41F727F80FB428B
-:10F9C0007A8B44FC10CB7B4FC3A64807E35A8E705A
-:10F9D0007F1B33045DC4EB312FDBDC219B8DF86E84
-:10F9E00080E54E128472087E4681E0B36507049F6D
-:10F9F0007D2E801AB44CAAACFF9AE9B9AC0772F913
-:10FA0000D80870FCCC0EF0559BFACE5D034650B47E
-:10FA1000A85FF071535FB0F4B82971FB78B9FB7E31
-:10FA200085F8D6E5395DF64BA6FEA781C4FAE21546
-:10FA3000DAF9F99661F12588E54BB97096F70FEE82
-:10FA4000DE732BF90982717A50F022F5A05EB9BEFF
-:10FA50005FD0FAE2F5A1EEE2299F1A7071F194A845
-:10FA600041CC27F935D6B2B3E2F0A77ACFF1F9F756
-:10FA70004027DE75E07360D375B40E94E72AD97D14
-:10FA8000D26F1E62BA5E8BF5E4F104CD83C1FFC272
-:10FA90007CAB0DFC14AF003EF534E1A92577911342
-:10FAA000319ED42D1678374A11F9BEA8C8125E06C9
-:10FAB00047C7EBEBBE5CF2471B65C51C1F6BC9E378
-:10FAC000E13683F16404E81954CFC2939161518EF9
-:10FAD000F8F11AF19371D3105FF228CE76541FD249
-:10FAE000BBCA4163FC288F936B15EE990AD17985C7
-:10FAF0002B7EFF0D3E779C6CE2C714F5EBE1C7252A
-:10FB0000841F96DC423DF9AE38FBE2AE38FBE22BB7
-:10FB1000E0C7918BC18FC845E247BBFD87EF05CA9F
-:10FB2000D89EF5CBFDBBE287D472DB927B88DE8367
-:10FB30002940FBFE74925AE1C679D6548AB8F3E1A3
-:10FB4000BF2F08523E7B452EEB854FA7E92F71B999
-:10FB50005F9497B519720AE6F3576139E69FCEF5BF
-:10FB60005650BE66359663FD11FB7C41CA17FC50AA
-:10FB70009497DEE97F2985E47C40B47FE1589DECD1
-:10FB8000C1F2509DD9BEBCA182F235F5A2FDC803D9
-:10FB9000A120E507DF23C6B7F4CECB4CFEF9B47441
-:10FBA000EAA5DBA93FE49F9B917F8E3B61946EC3E6
-:10FBB000FC22D56623BC5D1C09D8091F0EDBAA46B2
-:10FBC00012FEC0425F0EE19993EC56B9937FD9C8FB
-:10FBD000A983ED262A76D6FB5E95FC0AD59B4624A2
-:10FBE000417276B4EE22FE4EF1C89B51DE1499F2BA
-:10FBF000C88ADFA57B0433A2F6AB68A090F356BD9C
-:10FC0000EC748117F0B0C00B2BBEB8F52190C8DFA3
-:10FC1000426B633F449778633FCBEF50BFE2618410
-:10FC2000B797539C31965F3E56C419979E3B3D351E
-:10FC3000915D347CA0B0E78F9AF722ACEF95A15C80
-:10FC40001BD1CFD3843CBD099EDA1F495F7A9AC687
-:10FC50001ACB200DC068DA47912F7FBCEF7DF57D70
-:10FC60000196DAFC0AE111F497749AFF556DFEC90A
-:10FC7000BC9E2A80EFF54AB00E53DE2F093A368B30
-:10FC80003811C17F6699FB764C9DF7CAED6C3F7BBE
-:10FC9000743B8E3369FC00A6FB9973258BEEBF3352
-:10FCA00090F4603AC1607FB68FE3DD6F8290830687
-:10FCB000B9298EEE97BB3F7B8FE4D2F22DB174BD94
-:10FCC000025A1DC2DF1C79E46DECBF72438A4AF20E
-:10FCD0006745636CBDCA0DBF3F209574E50395165B
-:10FCE0001F08C5F2015438041F7868089F7FADCC07
-:10FCF00091B54319E4FFF0B3BC4F0221EFEF52F48A
-:10FD000030D35F8B53D851A67E7E9B2CF4F32470A6
-:10FD100069EE42E2C336335E55E4ADF1212ECEE505
-:10FD200054C3CDCC6FAC78180420CBFB5381CBD51A
-:10FD3000683F5B079F8FA3F7D2969EAD74DFC0F23A
-:10FD4000B3A07EC0F6152C424E378EF910EF9BB44F
-:10FD50000CFF3F86D6E5E0753DD4A33FF3F7D548C9
-:10FD600010CE52B28B95E256EA7388A02717D111B4
-:10FD7000F1F769B1F65612083D7E789BF0E38CE806
-:10FD800094FB75B4BF4ED05D42EE3700D157B7F645
-:10FD90008A7B55427B852514F63F7B9AE0EB17B2B0
-:10FDA00057BAB3473AF63309F5364C67FA92B6D3E9
-:10FDB000BA2F3B9B9A92289E6A66B9EC25BB6CA62B
-:10FDC000DDC84A4FA0E73F60EAD91DF57D6EEE4FD2
-:10FDD000F1656CA7F825ECB795F87FDBEB8E8471A5
-:10FDE000C98AD9BF6237D444FD5F454EA9287FBB7D
-:10FDF000E2CBE67EBF017DE579DA977879E4D81D1C
-:10FE0000774E098181D171054F0F12FC6E4281F14D
-:10FE10009B81744E94D49FF99D568AF6541FCE73DD
-:10FE20007F076FBE9CE3243E03E38271126BA3FC49
-:10FE3000E707D3129F8BBC61F2D7148A7DC3F47697
-:10FE4000CDF8038D7FD421CE5D8E269BA9479C5B88
-:10FE5000BDD3515FF0C788C5276DA2FC687AEC79E5
-:10FE60008D55EF94D9EE50ADCBBB36CAFFAA3DE419
-:10FE7000F4939CCECA37EF71AC02B69FDB9F4FDB89
-:10FE800014BDAF670796A70CA2F8A27CC3D18BE084
-:10FE9000F8BC907FD54AD841FBFBF025BEA334EFD8
-:10FEA0006A0D8C67A81F2DECB8A698EC06111FD21E
-:10FEB0006E1776607B9248AD799D1D382365109D45
-:10FEC000CBDE1C66BED8919F1166BE7776A097C721
-:10FED0006D9F65959BF9FF10790D549DE65BEE32A1
-:10FEE000ED8742752DFB5D51EF23BF4DFCF901C03D
-:10FEF00078A11F9BF19E46DFBFF3395E777E7E9B24
-:10FF0000ABED95FFC2EFF34D7FB0AFF9D357EED015
-:10FF1000187F0ED3B80B4249C071DFFFA45FBFBD8D
-:10FF20005F1BAF677D79A4FFC3651C2FC07EB5152D
-:10FF30002DBF65BEBEC2A2FBA658BAEF65C2F14294
-:10FF4000E76AF1E72DDF009D0D1C9440EFFB35C9FA
-:10FF50006BC4AF29F274E66BA79A24F68768D05673
-:10FF600047705E29897D59F9EA8D150ECA2F0695CD
-:10FF7000F97C533C3FF305494F585E0F2CEF4A2163
-:10FF80003F95E05DB357261F02DFB7D1A2F824DD0D
-:10FF9000B7D1A2EC62BA6F139DA7FB36D1F5E9BECB
-:10FFA0004D7439DDB7892EA7FB36D179BA6F135D51
-:10FFB0009FEEDB44E7E9BE4D747DBA6F139DA7FB4E
-:10FFC00036D1F58F80FFC1F112C175E206826BD385
-:10FFD0001AA74A70C5ED7AAB289BC519E31FDDCB84
-:10FFE00089EE67B967AA6305C2614F8E0CD268BA01
-:10FFF00077B32CA6DFE57215FB0950ED6039E2C737
-:020000021000EC
-:10000000FF313CE522B6933F6F962003F175E986F8
-:1000100038FDA1E5DE3AD2B76F0AC57E5F0E517E8C
-:10002000F7DCAEE7404B0699F1C0BDA137E1F31410
-:10003000D9ADD33E9FDA27EB4E305D00B4CF5B8560
-:100040003FB214063D349EF7D10E218D8E4744F900
-:10005000A98D722890DB793E746AEFAF0EFBB0DE9B
-:10006000D25EB24A74E7CC89DDEF242D76BF7B14D3
-:10007000C6EE778A1EBBDFA9A363F73B1ECE694697
-:10008000ECFE833C9DE1BCBC0F9A77387EC6B45829
-:100090007CB0E03B1AFF27F05563F82E41F83E2C68
-:1000A000D1B9DA3D7BFA685DE15CDD7CAF83F4D7E2
-:1000B0008B85F37D7170FE1CC657B819B830D335E7
-:1000C000B2535F2ADBEBE72081636ADF0AF35EAF9E
-:1000D00038DF31E18AFA0BDB0B51E750F5B2CCFA8D
-:1000E000CC26A267233385F980BEA107EFD73097CE
-:1000F000E86F31F8983F2D8ED36B96BAEF77905E0C
-:1001000013BF4E9A0DF95D2A5B845E13BFDE2EFE8F
-:10011000A842B5B58FE0DB8D0FEBB4CC168B4FFB4F
-:10012000C88F91096D0ED263BAE38333728C5F93EB
-:10013000DC402E06040F610AF05F427DB2A6A35890
-:10014000F8E79D7EE1E787401ACF6314887970A3B2
-:10015000287FFF2825C47E073429D8BF64D963F1DE
-:10016000F084BED2DAB7B05FF92530E1A8CB92AD0A
-:10017000D37F8F56A041FAF5C8CF84FE34DAD51864
-:1001800054B4AEF6F927F9E639B762C67F5EE01CD3
-:1001900092E64F7E8E6BCCF8BB092DA35EA17CC787
-:1001A000B9E4CE57FBD07E8DDFF9FB0C4ADF92B469
-:1001B000C7EEC0F1AF96045EC4DB95C11DE334DA2F
-:1001C000FFCB242FFB2BA682BFAFB047423CAF89A9
-:1001D0002E1FEBB5369761E7F328D37F09109E4AAF
-:1001E0007AFA32DDC1F358AB7E3095FC31CBC1F4E5
-:1001F000C734C7EE5F177B28CE0EAAC2FDA77EE3E9
-:10020000ED9E047814170F102BEF17145AF7CA45F8
-:10021000BC8A06E2FE77A5E947AA746DF4887338B4
-:1002200094737DA18BDDA410E0C7F07985BD90EDBE
-:1002300062B407F8BC5F73248AD7033593CFD56FB8
-:1002400074CF64BE7C637D17BF0EE3F5E2860BAC12
-:10025000CBD413C6D3379CFFE1419A90FBC9D3F7A7
-:100260001A545CD6D63F5A9FAD7188FBB9E0CF884F
-:10027000B9B730B8509C7B97997A53A5CB8453611A
-:10028000A08EF4E30EBDA98BBDF8F5EEC958F12E92
-:1002900008AFA242C6E306CF9ACCCEF31D6B1D9FDA
-:1002A0008C687BBC15E125A74C76117F5CD1CF37DC
-:1002B0008CEAF73B103E4C74036E8DF5F593CDC779
-:1002C000F6CB799DEB423C7B701CADA35956C5BD66
-:1002D000F940DD38ECB7BD54E05DF7F6AF8027CECE
-:1002E000EBB2C2ACAEF3B2E2ECA7C845A9E128BDBF
-:1002F0003DC3845FFB10EF146A57F6C7BE1E9AAF6A
-:100300003DAF714F6FD28B6F157A31EE2BFB41648D
-:100310003B48A4974E91CFDE42F95339A092FD9904
-:10032000D923207B48CF5B00EC2702DDAF13AAC89E
-:10033000FD8AD84ECEBE15ED27ECF7DD5537A6D198
-:10034000FDFEEC944569F96E8A6FC2A90EC0BC64CB
-:10035000F38AFBD9CFBCF76F65543E8FFDD2D73BF4
-:10036000C53973EE0FFEB69CE900B474E7181ACFD6
-:10037000C7EF0B44D2649E5FF9B59F0D27FDAAF726
-:1003800059F730D2CF7AD1392F8274A8491F9755A7
-:100390004486FBDD9D70CACC4F6CBF649BF03898DF
-:1003A0007C72369D8758F7301EEAF1069F879F348E
-:1003B000CF4FF28C69A984E707075AE75AAD59E491
-:1003C000B2AA4E3252E7D03CDF94F97EC567AA91BB
-:1003D0009A86E527C1CBFA63A0CDCEE744ABEEAE5B
-:1003E000E899EEEE3E6E7F4DA1B06FAAE2E2A2AABE
-:1003F0009456079D6755FD9371514D6871273A0FCB
-:10040000B3D65F9DA68032145309BCE7ABF7E23F39
-:10041000E48470DC629677777FE3E7E6FAACFB1959
-:10042000D5743F033FAD7ABEBC279CC70EAD3E33AB
-:100430002EE61E04D96BB4BEEA3313F97BC55D27E3
-:100440001C84DFD40F3D8560DDCFE80ECED985C298
-:10045000DEA8A67B0D19D1DF051D77F69FC9E54FF4
-:100460009A707B72AF6DDAE604F37CBD50D8DD4341
-:10047000B214F6175CDA0AC6A604E35AF5ACF70D17
-:10048000BA9B57D3A4F07C9A37C505271A6FA709E2
-:10049000476BBE4DE9E1255E71CE3A90DE2FE8C88C
-:1004A000AB91FE5747F1D3B3A67FA0E93BE1FEFC39
-:1004B0005EC615C28EED6E9FE7F4F3A5137F18A9F3
-:1004C000B4DEFA4A269B5D407EB49EF35A6D242723
-:1004D0003BF84F37FBDD096739E61E4C57383BB810
-:1004E000BCE3FE19181E299BE410B03EF0D01F4B50
-:1004F0001C0E1CFF980D22C477A6C87DA7BE4079AC
-:10050000B41F882E8FB1ECC07483CCF7998E3D9ABE
-:10051000EF20BB6C49394464E45BC7DEEA5F477196
-:1005200097DA02D424C7A1BAB336F6FCB1128C3DD7
-:1005300029D8EEC603DED456CC2FBA27568E1D7BA3
-:10054000EBC70EB207A4856E3FC515E13CA7BE8080
-:10055000F9C5CD0EBE9FB5E4FEF8FE62F5E06C5322
-:10056000DEC6EBC39F179AFAF048184972E685DA9F
-:1005700066F17E8E791F11F53F23119E587A7028FF
-:1005800079D2DF99EF43A34C7C699C92B8FE92220A
-:10059000B10F2B1F3BEDF068DDD3D971E42705388F
-:1005A000FE895A95D3ACC1866B30F63F60B02F659B
-:1005B00030B697B548FF4FD8CF29CE4111DF385F0D
-:1005C00043F7D448DECE157A8253BEB992F5D13EB8
-:1005D000A006597FF1FBD99F6E43FD248DE2376E53
-:1005E000913DEC6F10EF078DF968511AAD37F3BFED
-:1005F000E73C4D70A53B0E40EFB0941BA5C4DFD780
-:10060000CF70F379FF265B80FBA140ADBB109EA1AC
-:1006100027C7EC26F77941E3BD93C8EE535B76B567
-:1006200092BD526FFB740FC525D44F043DC8D00E48
-:10063000F138352D339EA6F6FD67BA75BA5FBA3E1E
-:10064000D72855A3FAD720F21EE99927AB6CEC37CF
-:100650003DD5FC0B3EAF42FB2E42CAF7A9AA3CF6A1
-:100660009B59713F7CF697C06F7802E51B44DDE72C
-:100670005ED1B4C946FAF8A5B451517155D6BCAA99
-:10068000EE6CCDBE8EE4EE130ACBD1CCDF5CC1F1B3
-:1006900003B98A26113CAF9354A18F9A7AF2B560C0
-:1006A000FD35BC42FAE942D293110F3F94421CAF90
-:1006B00069839667A9FDDC1CA10F82D63882FCD71E
-:1006C000E12AF37DA2E5F634D26FAC7382EEF0A19D
-:1006D0003B3F0FF6B4E41D1CF7A404EC6FAAB14530
-:1006E000FAD3FC8EDB13CBD779834D3E30D01F621B
-:1006F000799E0EEA6334AF025F2ED165B54D5BC9BA
-:100700007EAF7D5E8E0F6997D4F498775ED4865F56
-:1007100093DE5D6353857D73C028A5F398F6194574
-:10072000FCEECB497BB83FF311E47B149775EB13D8
-:100730004D3315845B756FD4BB30BFF9895D3315BC
-:100740007A87272FBCC486F95707FF45940F091FE6
-:10075000A6FC1F9FF848940F0B2FA1FD39F9C4691F
-:100760009127030C11EC6F4FFCEFCC00AEEBB8E916
-:10077000FF043D3C9FE659FDC2205BB47FF1C86099
-:10078000C1378F27897AC773E186AB49FF280CF3FD
-:100790007D18ABDE6B83CDFB0426FEDFF462522BAB
-:1007A000C5095BED202771FF41B3DD4DE67B59485C
-:1007B0007FBFA27A2FE768E9BCCF479147115C9EC3
-:1007C0001FCCE73D370D4EE7FA049FF4A2AEE32DB0
-:1007D00023394F72C01E7BFFADC1DC2F2812FD579D
-:1007E000F756D3683FB2D3859D811B927617BF63BE
-:1007F000B0C9D4ABC4FE64CA6A695065B9339CEC15
-:10080000E697CFF62D65BBB9A29BFB9E83851CBBEB
-:100810002928C689F4D2D4CD7CEF1C0C8A4779B93B
-:10082000396973F47B29274DF81E199C26E0D7B14E
-:100830000F3D251E2768C2A52FC2BBB8137FACF69B
-:10084000175AF7F67FD1BABBEC5399989FB51E8023
-:100850007B051C707E69A8E71F5F63B61B6DCD43E7
-:10086000637AB8E9C5DB3708FEA7A5B3DD0E3F11F3
-:10087000707059E316F1F9E40A530F96036F38C804
-:10088000DE5851DFC6EFAFAD6814EF6D75D29DB184
-:100890002A9ACE32F3C53A33652333C8F488EB6322
-:1008A0007A34CC788358FCE980773C1D77E94F4B4C
-:1008B0008FED4FE3FEBADB87B08917DFD83E041314
-:1008C000C3B383BFC4C1AF831E73CD76458867654C
-:1008D0005DE9F18FDDD171EED71CCFBC77B2E27646
-:1008E000335E558BC5E3154DB9B685459DF5EF6E65
-:1008F000BCD71B1D4FEB6A5A1020F957D352CE714B
-:10090000B52B9EDBFAEB00B65FB6FD010F05531F5A
-:10091000531AB2492FAE7A6C9DC7A0731625E021F9
-:10092000BE792C244F4B747F75D41029461FABA67B
-:100930007F62FFC79FFC5BDDBFE1FCBF9050BF4201
-:10094000785737FDB58EECB73D862B4272FBA81267
-:100950009E4A72F4A6056E3FBD2F58D31CAB4F2D97
-:10096000FBE503D91A077707FAD8589F6AED43EDDC
-:10097000AA1FB5EB64BF57EF93751C066A20524758
-:10098000F38B6F5FD3F8A183E0AAA23ED8775CD740
-:1009900072E4248CF7354D3FFA54F6507AEC1D285A
-:1009A000A1FEA2FC1108F7CA6EF4B2C221B1F7028F
-:1009B0002CF840288BF59BE0130F95BC8FF33AF190
-:1009C000E86B1EA9285A5EDE29CEA91A6FFCF90B26
-:1009D0005AF772F524E907CEAE7A80D62C0925BBEA
-:1009E00045A455F6560FF905AA36D9F5007EAEDABC
-:1009F000FA8BC7E95C05DE76EA74F458B5F5B48382
-:100A0000DE3FAB928C88C47A1678A4919DFBB47CAF
-:100A1000EB47C25FD54B86E9B84FCB7EF5B9A86FDF
-:100A2000402409EB2F7FFA7DF66F55F9DC7E578263
-:100A30007DAA68DCE508BB13EC53E3FB53490F0ABE
-:100A40003EF125EFC3B19D12F4CCEDDABE72D3476F
-:100A50000EA29B13B8211969025E649FD634CA0B9B
-:100A60001CA989F6ADF52AD2FFB09CFD2017DA3F0C
-:100A7000D7101074F1DCD66D640F54BEE3D4A7D345
-:100A8000B8DB6EF100EEFF11C52FF0FD67EBB20D84
-:100A90001CB7D21EC8563915DF2B1FB995F170E966
-:100AA0009BB766B35E07462FDB685E6F2F5AE7E29F
-:100AB0008DB3789D4BC0C77858F933E1CFF85C818E
-:100AC0006989EE1B6F1F22E487136E2E21FAF81C32
-:100AD0007B223FCC11078878DEB7C43B644EB83A1E
-:100AE00035FA9DB93B8708391080D07BF4FE640D40
-:100AF000DAC5C417E4373F9F4AFDACCA55FC4E9592
-:100B0000D71F30E1259D13F11C9A62C59DE6E17E59
-:100B1000BD39A527D9C14E38E5B8BE8CDF69D0C82C
-:100B2000FF1BD58EE17664B33359423BFF4876E232
-:100B30007B84EF99EBC0BFB7200A9F6AB61C617C2B
-:100B400002B4BB527344FE61A243B48B52116E9F38
-:100B5000EDFBD0D19BFC1D99361840F36DFB88F35B
-:100B6000A0676954DFEABFA6D919F32E49CDA31FA8
-:100B7000C5D1B333EEBD133FC3B3065235D2378F61
-:100B80003822535FA471705C8AD75C72BF33E6BDB4
-:100B9000B04E7C71747ECFEDA44FCBBE5A6AD27F2B
-:100BA000FCFAE3F9C19371FC0036667DA5F79FAAB4
-:100BB000ECA1C7093E5548AF01A657417FA8A347FE
-:100BC00006203D7CFCD44BFBBF4F7EBA467BE674CF
-:100BD0001E2D96CF563E83F44BFE348477924E7C86
-:100BE000F64B07E9BD39156807E3BC3F76EB74297E
-:100BF000AD2BDDE2F78474EB063ED7FABFC55F97F5
-:100C000076C35FF7C5C1F373284AA53B0CC79F5C49
-:100C10007E09FB15E2E06BD9BBF17CB37A88C67024
-:100C20008EE79BF8B71FA2E0B8ECBF3F61BCFDA206
-:100C3000973807AB7EF4AF2CBF10AC1127E26D756F
-:100C4000E853CEAF23F9C5F95D33E9BCBAEBBA631B
-:100C5000E1195FBEC1E4471DF7DCEE8400C5DD4548
-:100C600076C8FC0E433BCEA58EF4F3A772F99C70B8
-:100C70009DA9EFB7AB110FE9E7EBD2AC3CDC40EF3D
-:100C8000C1B4074AD400B54F32E30FBC114F5A9498
-:100C90009EF47E8BEC21BD2E1C826989DF050CF24F
-:100CA0003CC2D05DF91A715F4B3EBB2D6CDAF54E3C
-:100CB0001C2FBCE6CB6D746E7E4871F1B9E5A23590
-:100CC000733C7CFFAF25FF3F092F16BF8A70247A43
-:100CD0000A188E5E08E71B0508D0FC08F079B09C66
-:100CE00052B6E745ACB704014CE724F1FE9465E049
-:100CF0004D6DCDEDEA374139E820F9BF14E511FB20
-:100D0000BD37C6962F6BF998F16C591C9EF908CF28
-:100D10007A75C5B3DC4B4DFF4A29949AE7BA6CCF7C
-:100D2000B7EF95F93CFF940B58DFA0735EDC3138C8
-:100D3000D522F3FE9C7A4A0A71BC61204BBCDF8A43
-:100D4000F84E7A968587F1F67D7C7AE2D97747D29C
-:100D50003DB1AA5FFFA5E4BF303DF1EBB707BE4848
-:100D6000F9E7FEDCFF2FD0B57EC5CEBFB21DD3BEE6
-:100D7000D3C9FED0F69DBFED4F72B9FD05A74EF861
-:100D8000DB7EA753C435EC4CE177CCDAFB09BF5DC1
-:100D900070C7972561965B6B791FA75FEAE0FD3E00
-:100DA000D5F2379623A75A9C1AADA366670FF68F24
-:100DB000D5BC901422FF40FB8E2F4746BF77F5CF5E
-:100DC000AEA7DABC4FD39E0273296EA63D4DC4591F
-:100DD000D6BC38E6176BC81E69DAE520FF7FC56F01
-:100DE000FE5E427CA9FD995D0EE25B68973E02883B
-:100DF0001F732EFDE903F65E745F0CD8DE3E7DE9BD
-:100E00003BB3E87DACAE701170684738D0BA102E95
-:100E100095A49775078FEA6F2D3C3E657BA2AA6566
-:100E200014D351275C24437C4F09B9245AFFF31E85
-:100E3000F21BB5E7A1FCD769DD5F9690FE74A17542
-:100E4000FFC7A5E27DEEFFE7D76D838B5AF753DF2F
-:100E5000DA750BFC1F76A926DEA78AA383AE78FE7F
-:100E6000DC0F38BF2D45E7F97E45FA7FFD5BBBFE01
-:100E7000AFBCEF25E4B7BDD87DFFF85BBBEE0BED53
-:100E8000FBABE6BEA7A874BFAE7DC7DFFBF37ABF9E
-:100E9000E2BA938BBEADFCEDFCEBEED08F64AF8B72
-:100EA0009ED8BA075ADB344CD775A3A78C2AB2FC5C
-:100EB00010C21E914D7D631D0C3336915D857A06FF
-:100EC000D901EB3245BE1EF50799EF0F72B00AD477
-:100ED000F7D5C5BBB68A1F54CCDBFF7C23C7B3ACA8
-:100EE000CBFE0EE495D17985F06304D7E8BE5DD8DA
-:100EF0003E9866D3823A3D57B5D2B709CBD5DEB21C
-:100F00004AF6CD3AED6A57F43B168ADB1163A7B86F
-:100F1000E3EC8DE402478C5D9204BB55F2C327E9F4
-:100F20000AC7FF3921AA3DD6CF2A12EFF42743285A
-:100F3000A0BA2F1E4E8BBE3E9C5C7CAF5235E104A6
-:100F40008641EB766A0AEB610AA0FD28D621EC4EB9
-:100F500084A316054730ED50C504B9A20D6338A22D
-:100F600001A14D1A4D70F5331C83BD6495E1DAD9AA
-:100F70001FAF3B7E1FD6699320CFD4C725FD9B872B
-:100F8000F3D822111F100F672BCDF795AF21FD77F6
-:100F9000D51A71CEF5CCEFBEC3F9263BEAC374CFA8
-:100FA00030D5B7A288FC8E5E43223A5D3543BC2F14
-:100FB0005846F7C032C9D41771B899AEBEA0B0BFB9
-:100FC00012ED0CF657AA40F69F3C091AD91FE855B6
-:100FD000E2E27A558E7B0ADE2CE29EA01034F14EBE
-:100FE0004B6CFC4F601214525CC314B9AA81E675B5
-:100FF0000A521A28EED2616FEDCFFEE17E008F918A
-:10100000BFA5FC8B8D549E8B7A3DD07D32A5F53DDE
-:101010008A6FB84D4E058EAB8AE0A728B85D76C6BC
-:10102000054A149CCB212D267FA2DFE126B213F2C4
-:10103000024E9582C72A5CBD62DA9FE87586C70BAF
-:101040003A5D2AD94753D4DC98F6B267EF7B64D770
-:10105000BC916E63BBE0F29CC131EDAFFAE0C4C657
-:101060000526CED23ABEF7AEB8A78AF6D623AF632E
-:10107000BB37EF0720BFF1155A694CBB66D3BF12CF
-:101080009962E7F766AE2C1C13336E737837C3A5ED
-:101090002A0B243A0FAEB2214960BDEFEAE531F5E3
-:1010A000BE37FA8A987E67183362F255ABBF0025C7
-:1010B0000360DCEAB340EF0796B636C6B41FBEB78E
-:1010C00039A6BEE7753485302DDDA705291D75507D
-:1010D000DC231D8EFB41E71BCDE1853AC5EB14D324
-:1010E00005D0323A16F0565018F2C8A3FE9728BD24
-:1010F00050FC3298EFB2269BE7AFEB6DA1C605B965
-:1011000014FFD3F0E35D12C743EE263C1D1D69A812
-:1011100048C5EA63CF34BE446953DBF87A7AC7B373
-:101120000AA08DE5AFDBC6E70253E4961289ED9F76
-:101130001EC39D51E72EDDBDD7F9A3D2F27D4548F0
-:10114000476B738C865DC4F727BD3B5FCEEB5A0FB0
-:101150005425128DE73F2AF51EA6384D2B4E2AB98D
-:101160004216BF4771B98893A9B3E94926F362FDD6
-:10117000409D6AE738FE65C582BF8D6CDBDCE82EDA
-:1011800023BBD3A5D1BE2667C4DEF3BE71B4B8B706
-:10119000F7459179BEA2A859D7931FBC3845B4270B
-:1011A0001F1F8D37DDC6FA94E780BEC78EF9FB0A94
-:1011B000F7A9C4CE9AA67F10E0F74D0FB44D903436
-:1011C000809EF794DAC80E87BD76FE7D99A6C2C9C7
-:1011D000A70BA87CFA5B1CC3B86BC22F0B49BEAD32
-:1011E0001C3CE4BCEF8C7ACE48A045C5412C2BD6E4
-:1011F000783E1E25CCEF1279CE285CEE99A7DBFA5B
-:10120000478DB77282D0FF560E4EDE4A78EB3960BA
-:1012100088B8A842B73680E9239CC37C4209E75CC2
-:101220009F22E2ABB4F3BCF37F7CCB88349263198A
-:10123000E57A1AF94133B6CA1DF7CE683D3FA6FFDD
-:10124000D0C13AACDF3F19E7B58562D744792BF2BC
-:101250002458EFB0CA9125613E43B2CAD7CF9E5CF5
-:10126000C4EF31C6D41F9AD751DF70E574F6AF15BD
-:10127000AFDFBFB688E037CA467125EB7F67E777F7
-:1012800006709DAC4FAC447A06E97CF0EC710178B5
-:101290007AB8FC90A4C5BD9FDB5A4CF982BEBE4112
-:1012A000C558FF92B3A9FC0EC067F5492CFF2E3933
-:1012B000FB3D7EAFB3C961F4BF9DFD37491C6F365E
-:1012C000E3E68F37AC26BABEEA7821C52858EF5737
-:1012D000D6A85F303FB0E2EC3AE187F88B78FF6345
-:1012E0005B679EF883A7139E06BDCFB53E0ABEF48A
-:1012F0009B2F334C78FA8A37CE5E8BFD6B8BA6E53D
-:10130000105D9E0637C7F59D561F9F4DF33DBDC529
-:10131000CE41B44D26BF0C149AEF11648673E85E7B
-:101320007EF19B368E473A88F860203EE4B7BE993E
-:101330005E4CED3295748A6F383DFECFFC6EC2E98B
-:101340001F0207172F0B3B185E4D998B2ACA19FFF6
-:10135000B574F23F58F06D34FB79B8D4B8B298FD4B
-:101360005CE67D1163EC45BD3FB96BC2977C2EB046
-:101370003617F5FC340A393E5347EF4BAECCB5B3C4
-:101380005C5A99F6C5D44CC2F7725784DE81A859CD
-:10139000FD19C317BBC98DBE07A69C91418B8ADF7F
-:1013A000D2868AFD571483F75F39E3E0F2AAD5A706
-:1013B000996F5BED4F98E7ABF42E23DD17AAFA8700
-:1013C000CCF746911FD64BC328DDED5819C54FA069
-:1013D000F1D30E3E3F14F7EABEE96F25939F728664
-:1013E000A4CEA2F9B56C3B339BE2056624A9B328D1
-:1013F000DEA06EDBFBB329BE60463F7516C517DC69
-:10140000573C790E97F7521FB0A1FC7AB964BEC859
-:10141000E7AA7FA2FC535BEF98C3F553C4BEDFB6C7
-:1014200075CE9C00F36337D3C1A9FA1E21E779E892
-:1014300060E9EA1721FA3DDB2EE5E6EF49C15CC120
-:10144000F73EB9BB0FBFDB09056D1C2FB6BE58F8C0
-:10145000FB3BCF5741A5F3D5CC7C30C8DF9CF95C72
-:1014600092F85DA2436DFD097E4736DEF203F2A7D6
-:10147000AE9080DFD1AF026D24D1D5425BF83D4AFA
-:101480005F1CEEBBB798F5A9368E775DBA7A27CF89
-:10149000EF53DD8C5B562345DEAFF54E04F69FF02F
-:1014A0009D88D838E30F6CDA40EA5731E1B2506ECC
-:1014B0009BEF10F37A94E6B5227D17C7392B6A5B50
-:1014C000B64FE851856C3FE524F37BD175BDDF292C
-:1014D00049F43B088DB528EF91E49EA96DE674F5BB
-:1014E00050607CEBA9841D3AF6537D40C89D916DF8
-:1014F0001F38A2E319779BF04D357FEF2A3E1E7708
-:1015000037C9A5A8B88315BD5BFB927E68ED6BE774
-:10151000BEB4F635F70568BE99192F3D45EF9D50CD
-:101520009CEB0FE93CE3B9A456F25B778F27D63EDC
-:10153000887937250BBE11793689F5A6F8751C34E4
-:10154000E76DAD2762CADFEED61131E5EBBF6A1D4C
-:101550001193BFC7AFC7A26FEBBB45DF5DDB8BF954
-:101560005F3CDE897B6D17C23B8BFF5483AF50DC41
-:101570009716FCC682B7354F0B6E4DDDC4E32AAB20
-:101580009F8F598FD236898C1E482D11EF5F298D80
-:101590005700ED87B2BA85EB75B71E39E5333EC704
-:1015A00059A6819FF4DEF875554123B7EBBAAE0812
-:1015B000F3E3159AE0C75DE3F823CC9FABD13E235C
-:1015C0007DDC5A77079FC6F5137D4F4086C37C9319
-:1015D000EE124A645FF862F4E372BA31117D6EE58F
-:1015E000BA39263F45BD3DA6FEE5396B62CAAFD08C
-:1015F000EE8E29BFB2F0DE98FC77F59FC6E9F79B27
-:10160000E2F4FB2762CAC787DB58FF7EA3761AC7BE
-:10161000A74F3C1A613DBCB556E5FCEEDA1C4E5FA7
-:10162000AED598FEF7D41672BAB756E7EFBFAB1D2A
-:10163000CDE9EBB506A76DB55E4EE3F946595BB84B
-:101640008CFCFBA33353F93C6AE350DFF525140708
-:10165000B92F5244F837F640E34B240AF2439FBEB9
-:1016600047F54EAB0E8E475CBB6BCC1F6EC17CC684
-:10167000EB322469E7D38B6430A2F0C7333D0C749E
-:10168000FEED01F13E567CFD8525424F9E0B61F13A
-:101690009EC06A3E0187B92EF5152393C54684EC9A
-:1016A000F6B9E0673DD4B65ABC5333177428237B90
-:1016B000D607FE7B381E29F67D01AF3163DDAFB062
-:1016C0007C36DD3BC5F6DF7737F2BDF267F6A64F15
-:1016D0002EC5EFD77A25FE9D8F033BEFBAD5C5F611
-:1016E000AF75FFF41DDBC5E8130B4B047DB54B7ADA
-:1016F0001BCD379026DE2F8A6F37CA5CE755C108AD
-:10170000EB1F11D43F28DECCA2CB19EA2173FD9A3E
-:101710002D750CD1C71ABEDF50D5A6E94184F798C4
-:1017200043822E46205DD0BE8D3D2AE86024D20142
-:10173000CB41D33EB4E800EDA997A8FDA983A03B17
-:10174000B17DDDC41FC9647F8DF92C14A4F4B2B33C
-:10175000915DE7B07C5C9BF8DDA40BD993965EDAD3
-:10176000523B97F16867AD8FD3D6DA4A133FFD9CA1
-:101770007FB97635E7F7D40638DD5B5B6FE2670348
-:1017800097BF5EBB81F36FD4864C3CDDC2DF3592E0
-:1017900067089FBB4B4C39ED2A37ED0A917A8D359E
-:1017A00076BEE78F9F889FCCA5B9127E544A21E26E
-:1017B000DF75E9013BE5EB92690F68D601AE7F9DCD
-:1017C0001B5A490E54E5BC28F4B0383C29CFBC86DE
-:1017D000F164A619C77A20BDEE5607E2C389C6FB9D
-:1017E000ECB1EF8D5E1C5E2C73AFE57B7DF17CF17F
-:1017F000267A8F42EECA0F0174BDAC4CDCEFA238E2
-:10180000BDAFCAEF555B9B795F4CDC7FA9EEEBE681
-:1018100038DB7F9D9C514D39030BA87E87FD9D7C55
-:10182000703EBD8FD7052E71F6F7E141627F2DFB2B
-:101830001BF54CF64BB58764B6BF2A731B3C6C7F17
-:101840008F8E78683F6FDA2103EB8B8A38EF5D4A21
-:101850001D6914D7D3BA7F1CCB99557B882F2D33A4
-:10186000CF7BE3CF6DABE9BC574A04EF30C7D52F30
-:1018700037CF7BE3D75D3DFE089FF7565FE05EE91B
-:101880007B25B1BFE7137F7FB73B7CA17882E8F768
-:101890005C4F9EAD653BEDC8B63B1E0AF4FDD7ED2F
-:1018A000DFADA5DECF4A441C35DF9BB3F6B3CEFCDB
-:1018B0005DCEBA492EBEC7D03E42E5F76FDA25F1BC
-:1018C000FE4EFB5F415FA3D1FB3AEACB24172ED338
-:1018D0001DCC574787C57B01E3E95E6282F702268C
-:1018E0001C0A0553A8DDC100FBA3C6ECF305E9DE25
-:1018F000EDA8D70D99C8ABF465AF4C7860C9274BFC
-:101900005E75D295796F8E6232F2BF3AFD698B4671
-:10191000E7907ED761B7BAA7F23B45A75B81A349A1
-:101920002DBFD8F083864CF712461CF20549DED64F
-:101930009976E6A813013915BF4FF8CCCF76D018A9
-:10194000B453E552718FDA8882AFE5D7B2F89CC5FF
-:10195000D7AC7B7BAAC3B785FCCFF04212BFFF1286
-:101960003FEF41436DD67BD6838612DF33EFE94DDF
-:1019700091CFEE3A4776419B8817B8E46CFBE3645D
-:10198000F7AC7AB607DF53BB907D50A39E4EA89F5D
-:101990005A698D4D9CA30CABD08693BD497A2BD947
-:1019A000A1965D1A5FBFAC74D2D8A15934AFF16D66
-:1019B00006E1B76A3B2F7ED7ACFEF4BC76A1357E3C
-:1019C000CD8E11EAC228BFD5EAA19219C7F2F5DE81
-:1019D000A19E10991B23C7BEED7A1FD26119E11792
-:1019E000D98624A7BE4F3B80EBB80E5A595FB9DEAB
-:1019F000FC1D8B1B001CD1F7646F0483F9C39F741B
-:101A00005F0DE1CD6288CCA77C8D14A97A1141F8D5
-:101A1000C9C4716AAED6555E5FAC7C4E36EFC1C6A6
-:101A2000C3FD4E136F2DFEDFEDFEC4F1FFF65295A0
-:101A3000EF41B73F3BCE46E738EDBF97F9FD54ACD9
-:101A4000C87C25384CDC3B1D3ECF7C8704F9CA009E
-:101A5000BD2B5F393D7ECE64F61FD1C106C59F2ADE
-:101A60007AE1F551F7CD82E6EFBA6CC194E22553E5
-:101A7000E78595E8F3B39F9AF32FBF7632903D74D4
-:101A8000952AECCE292EC84C225E78F674D12C64AF
-:101A90001057913E3B9CDF617F98E0DCF10E08F12E
-:101AA000A34B70DFDE17E77C7093C4FED2E626916D
-:101AB0002F5E9CC6EBFAAAFB883DF728C1F52F6E76
-:101AC0005286117D0F4D8FE4115D168F793B5DC2FB
-:101AD000799598F7B170DAF510F5FB56EF9AEBF8B7
-:101AE0007CA8B18DE63734BD6DFD7DA45F3E6B03F0
-:101AF000F21B1E1973FB128892CB9ED249BFA27AA9
-:101B0000DB25F39DBA1DE2F70CB04576B47FEB4FB1
-:101B10007AC5F354AFD5F433C0AAE7F91EFF0C55CC
-:101B2000EC014CCE327F4F32D23FD1EF0B59E75907
-:101B3000430996C2FFC8EF8A6D37FD936F0EFD60B3
-:101B40000EF917A1359247F3389224EE517B4A7D66
-:101B5000BF233E3394FCBCB48E9F09FFC091343F39
-:101B6000DF23791BF9339D1FFFA5D6C5E9BB681F8D
-:101B700051FA3F681F51FA3EDA47947E88F611A564
-:101B80008BCF60A7B87F3374E36DE6AFDDACA37B8A
-:101B9000FE1230F5FBC4BFD3F49609FF92A643773B
-:101BA000F6203C6896393EBAF85985F5D3932DA3B3
-:101BB000627E9714E9F530ADAFA4F98F3FA17BD6D3
-:101BC000254D8A2A69742FFB7436C71FC6CD8FE056
-:101BD00040E70D911D0EF17B4AE67CB7A7B5ADA796
-:101BE000F6DB9FCDA319D2398EC0C31DCE84BF377B
-:101BF0006CC5DB3D3154E85FDF7346CAA2CF1FE3FB
-:101C0000E3D3D80F3C86F0B9E00F344E60AF0C033D
-:101C1000182F63FD1BFD74710FC14A8B7738384E46
-:101C200079FB8EFD575F89FDFD1F8FB61B3100804C
-:101C3000000000001F8B080000000000000BCD7D9D
-:101C40000B7854D5B5F09A39F34A32934CC2000957
-:101C5000123809AF00018664121212E024048A8A45
-:101C60007482D482A28EB462541E23D29ADED23FF2
-:101C700027244012830605CA558401C1C7FDFCAE66
-:101C8000D102175BF44E50A9F6B73422E2A354C731
-:101C900047552C4A8A62EBAD2DFF5A6B9F939933BF
-:101CA0004C0222FC97F0E9CE3E7B9FFD58EFC73EE9
-:101CB0003BB3265E5E24C900A7E9670A80CBDB1729
-:101CC000A008604CE9D70FDCEFC1F2599BDB0400A0
-:101CD000F360DB3437F6BBCED1F1A21BEBD7BBDF11
-:101CE0009B968EF51B334D07A8BC49CE999E812546
-:101CF0004088DFFF515EC5810CACCDF456DB024E4F
-:101D0000800A9000F2807F4EE37F531D29008E6889
-:101D10007D9ABB8FA1FEBDCCCB0CFD2F978718DA27
-:101D2000AFCC1B6D68D7E79DE92D34F41B97D19597
-:101D30001B74D23EBEBAA71CF70326080FA37DED85
-:101D4000FEF2EDDBB19C35719E8FF67F0CDAAE1999
-:101D50008D1BFDA4A479E3FDF4B245B165F503B88C
-:101D6000857EC7F6E3103E5286ED926BF9813BF11A
-:101D7000BDDB322590BC00359BADEF4762D6B10488
-:101D8000FC6961EC77DB0EE37380882DEC03B83DD2
-:101D9000E00CB62000173D81ED0E433B8FBB78AFC2
-:101DA000CD4DED4BC0126DCF01A83D9AF3E40B3140
-:101DB000E38DCBE8BCEF7E1C6FDC9E39EE065CDF6A
-:101DC00093A55F0F90719FE55E97E723040D4C800C
-:101DD00009A711E42039CD80FD4EBD2485245CD7B0
-:101DE00034E99BD4483E3EAF423C67E17B26F90F85
-:101DF00065D8AEBE2CC14E1CE76F75F2932F5869A3
-:101E00007CB8D19F1FA50B80950C5FBD7CAB0E7F6E
-:101E10001D01F0C73A07977FAA7373F96E5D269785
-:101E2000EFD5C95C7E5097C7E5AC431068C7F1FE9B
-:101E3000FCF7F1007D681C15A06FB41C67F39A07CE
-:101E4000E03ABA7E2F85B6E37EBF289F9006B4CED7
-:101E50006F70FE620D0F4802D5448CA5F8DF8FB776
-:101E6000BD98E5E3E7AA0BA75AF27709141C77B9E6
-:101E7000D724C65DD4F1629627DA0ECBDF33F48720
-:101E800015A603867A638EB1DE5A7120F67D1D0E8B
-:101E9000F1E52D9BEFB0055C58AE372921E799EDB0
-:101EA000FA7AA6ED4F524C389E659F3D64C7FD2DD2
-:101EB000712BA0607F0B80D29E7FE67B00F50CE744
-:101EC000791204DB138C5B47E312BDEF4F02E93C50
-:101ED000C67D0B6983D6A3FE973DB413DF7B2B4DE4
-:101EE000017FCC3C2DDAF89FA5B7FDE22BECF7D9AA
-:101EF00033404FB00E73693D63777D6C3663392E86
-:101F000059D0C95877C49C81E5899A7F6C3CE261BD
-:101F100032F59B26637B6ED71107A2FCBEF6AB366B
-:101F200039106F6F9BCD00034020BE04FBE31854B3
-:101F30007FD07BD5DC46FCFDCAFD4961F379ECE737
-:101F400041E445A6A34AC1EF3710DD88791440511A
-:101F5000B37415E8F32A241F68FF547FADDDFFE654
-:101F60007AA233E8DA48F2E13840B885D7AFA4C6A0
-:101F7000F2FFD2677FC2FCB9280BF99E04E066C16C
-:101F8000BF0EFC773A97F83534DD89EBBD358CFC14
-:101F90000F179FFF9FF13AA37C3E22219F1FBA1289
-:101FA000EB4B9F91BC766C3EB96F98E0278DEF7537
-:101FB0003ED7E1B87493C47CA9D73FDF27CD08256D
-:101FC00080F7368D2E86285DB369BE65CF5AA00591
-:101FD000D7B76CD288FEB1E3C7BFB7B44902396640
-:101FE000FC279FB3D710BFC8D0D5AF1AF967DCB3B1
-:101FF000A7322AF24559CFF868D3E44DD720FF180D
-:1020000094D726FF9F7E8EF301E27127C2A7327319
-:102010006E36CD3FDB094ACB7806CB1C07CA89ABAD
-:102020000588E0EA92EBB201E1B919D12521DDCDB5
-:1020300051AA5FBF0EF1F80373E02A92F3C7BC43C5
-:1020400078FC6B5CCBAD606672CD36E17873E7D817
-:102050000B693FB31A045DBF9EDE759C9EBF3E298F
-:10206000C5D480EFBD6E8246C888EEE375AB3F9B5A
-:10207000E80D37EEFE08F163524649A7537A9617EA
-:1020800044C91FE97894A2F26F9AE454699E936E52
-:1020900033D3BD25ABD546EBBA154207149C7789DF
-:1020A000376C23F9773BB82D5462D1D54D1F447F4F
-:1020B000E5FFE8388DEF2FE9944226ECDF5ED70E7E
-:1020C00016C4EFD3757BB91CFCCDE0C6CB101ECB7C
-:1020D000C7DBBC2DA4B734FA32AB26389D405F9DD8
-:1020E000499F96683BAEBBC2E10C4BA9F4D87A3C41
-:1020F000761D8DD94ACA78DC8FBAA63C9DE99368D3
-:102100006170749FE36C004E92F33B5358CE1F7B7B
-:10211000AED84C783AF63B6BC844F52D23DEB8D3E5
-:10212000C7752079732CC36BB6517B466E48C5F6D4
-:102130005BCCA0925C86ED426E3D3FE9AE77488E67
-:102140002DDFE932D94D828E653401A447D7BEF325
-:10215000EF38CEADC8AC766F546F2C9AF2E8C62734
-:10216000900E1699DBEE29C767A7203CD68DF0FCB0
-:102170008BA97D38E9ED8F1FB287CDF4DEC323B77D
-:102180004B38FECBA98191B41FC854FAE7E0F39A0B
-:10219000437DA105DF9FFAE83F0F92DEBCF5C9BE83
-:1021A000CC5F3ADD4F233EC4F59C403EA4F59CDC59
-:1021B0003784F92E8A7F0187C5280FC8246ADEB1CB
-:1021C000CE4FF80C24CBFCDC02AA7219E17BEF4D58
-:1021D00040765381645288CEBB9A115EA633E9499A
-:1021E000196FE6F7169951BF121D06E44282C7091E
-:1021F000935CA0F105D07ADE7F6EE4F6167C7FAEAC
-:10220000D63F4A774797FC86E86EB3DD6BC7251C3F
-:102210004F32EA7DBD9C393E9DF9E516C79760298E
-:102220008C3E5F52FBB5B19E0F0AC98D8206B9F094
-:102230000E2CEFD4E07EC548FFF7C7E3FBB7B5AF80
-:10224000DBF38A4CF36EFEE9DB34EF4B4E9E175EF8
-:1022500011F03B6112FAA55BBF3AFECAE3A3E4E1C9
-:10226000F5EACF3F7EE88DB1011CFFE3DDA38703D4
-:10227000D2DD02A9F3A307115F9FBB3ADFF93996BC
-:102280004FBF74A81FC12F7EBD8B6ABF004B8C1C33
-:102290003A6E32F17E17D13EF0F96F0AFD3733BE48
-:1022A0002DA827106E0B5AC66C2779304DCA4F23C4
-:1022B000BBE9C431E3FAE2D7A98FAFAF4F1F5FEF9D
-:1022C000B78CE08F709838CE2DF4ABADF373C2EFBE
-:1022D000677B469B9015A3CF333AC7A6E747F1E447
-:1022E00057EAADD4EF1A12F5888AB90E81D7B935FD
-:1022F000A650430EF7E3F6EBF039E1BDC2D3C0F5CB
-:10230000394ED467D87F51E66F785D24E81CA8D792
-:102310007E00FA4FF5AA5F61BF3797A5B25C987B44
-:102320004B9B95ECDC6E79A6BE6D3E3DFADBCB3364
-:10233000849EECEE07CCC3A43F013767C1FA24ADFD
-:102340006E2AF963C3AF483EDF99EA95D064841AD8
-:1023500019C2C4D7272144F05E6D0AB2BDE7203D03
-:1023600080658BC99B69C1523277F5019E27C47085
-:102370009A06010BD57F6B8A3400BEB7CA539949C0
-:10238000F4FF2638FD6417FD207DF51892A395EE25
-:102390009973E9F96C35D5DD82FB6DB4CA77E793A3
-:1023A000FDF303C94B76AF0E175D7FCCB578AD0456
-:1023B000DF7E41D9AB22FD16BEA2384C0C7F874A86
-:1023C000E3BE6109F6A575BDE55C3FC664263B2DFD
-:1023D000E41A839B7DFBD07F14FD1EDFFF2328932F
-:1023E000C81E98F35B07CBF19B40667EFF11282C3B
-:1023F000C76F8600D76F8188F54B7CEFDDD2FFD9A0
-:10240000B91FA2FB7A77E257BBC9AE9F2BB5F7CDB8
-:10241000C176B512F248CFFCDAF17FB646701D4A9C
-:10242000830592D0BEFA35D129D9EF475DA19DD859
-:10243000EFAEE42DA91D588F9884FDA556069FA4E4
-:10244000FEAA19FC0D58F64D0E3C4F7CF8CB14310A
-:102450004EADC5E126F94806168DF3D13B2EA67781
-:10246000D2BB3761BD0CB145F03AD157D09BFA577A
-:1024700060B97BC2EAED5468DC53B27727BD3AD528
-:10248000CCEFC36999D75116A75F7CA3CDFC3EFC66
-:1024900043E6F72775590CFAC537CE1C7C1AF73777
-:1024A000E5EF965EF5CECD05827F7C7DCCC144F60E
-:1024B000E0FF68FC851092683D0D7B4DA116264219
-:1024C000611F94E9F40891D5446FE50041A27BD8DF
-:1024D0008B7A4C9F2797F7FFB9EA233AC476B60761
-:1024E000DB9F2739690F0A3EC1FA54DA8F23085E51
-:1024F000B2D750218305EB49F8A290BB6E203BB6C2
-:10250000A502DAA93E092212E17B0A417A08F9C341
-:1025100032D3ED5450B8AED3F1F740E5F272087102
-:1025200079258485BE07B9F1299CFFAA4F40EC6745
-:102530005498E91D1D19F747686FC0E5B798C9EEB3
-:10254000F0FD30B1BF30A840870B22C473EE709904
-:102550000E814C31BF80879D9EFBA2F070C4C123C9
-:1025600089E0E18DC203E710F03803BE023E931408
-:10257000840FCAA7C9D025D13C8A66DF548297CB85
-:102580002AF073D90B5C5EA8F79C09979248C01299
-:10259000C84F009FA989E96684069F3F1600CB2F8C
-:1025A0005DFE5C5B20F3735D0E217F66923D1A2F0A
-:1025B0009FF4E7BE94CA2F64A487AA82AC7916D48C
-:1025C00067BEC2CA3B8760FDEAA7F344BDACF257C1
-:1025D000B958FF41C128511F5759684578D59B46C6
-:1025E000CFABC2FA90806923F1E5F27AB4AB715FA8
-:1025F00081A47B8244C7A60C709BB03D505FE42D44
-:10260000C07A00E912106E7629A79EE06CFF397837
-:102610001B7015196981C905B8DEFCF99DAB053E33
-:102620002BFBCFC5FEC73BAD6CB7ACB10583842790
-:102630006477777D69747FC79FFE790D3D7F7A004F
-:10264000B849BF80472EF4BBCE5C8FD9015C5F8C4C
-:102650007283E21F38DF4C9A2F80EA49A6753D2528
-:102660008508FECBEBA7B13F7024CFFFFD82BE31C2
-:10267000E3E33EA4F134AFD073E0C92924B8958CCC
-:10268000F45F4BFD4EB850BEA651BBC0434F6563CF
-:10269000813297E68D7F6E4EF9E6862538CF52A4BB
-:1026A0001192D38B0B0237D2B84BCD914185F86C88
-:1026B00065CA3B36A60B05E993E403F12BEDB7069B
-:1026C000E991E87ABFE057E40077B7FD8AF8F5F8BA
-:1026D000BB6E58E813224EC2FF15CF0D3E8F6635F4
-:1026E0008D7F3BAD63A9D4B590E8F2F3F4D76C7F4E
-:1026F00066BE1C28E84E935B4B9FFB9AF9E7593363
-:102700000425CD3F8618BE5BFA5C9285FCC3A59F6D
-:10271000422805DF2FDBF77803F93BA5E8FF939FFD
-:10272000BC78D753CC6FFB485F22E896FEF7B3CF57
-:102730003F487C7A6512C7A126BD767408D94153FB
-:102740008E461A106D70E2D9372E13F4AFFB257F39
-:10275000339D8F1E9F26ADB887F0BD0CF16FC7F972
-:10276000969982A26E75B855967BC24FAED1F6F19E
-:1027700019746E9CCF72453D504AFBC99480E56345
-:1027800048F81332FE23FEBFFD686835AD13A46F11
-:102790006C246F4EA15F4CFBBAFDB178BFA3EB4038
-:1027A00029F9DDE417E33E17B71BDB97C6EA870478
-:1027B0007EF296022D1E960DD9B4AF5FA33FF4C1F1
-:1027C000309A777E1AD9871329AE90405EEAFE715F
-:1027D00028B9F29102B697DB25E287324BE2FE0B75
-:1027E000F3855FACDBFFCB1E92D88F5BF6509F5119
-:1027F000EC276BFC0A612FF3EF93A45788CE022FCE
-:1028000003D1C12DDA9E60731FA6B95B9B4CECC748
-:10281000D8A53BBCA4F7C73DD2FFB67F63BA4975C4
-:102820004326D527CC7DCCC3F655908435FA556C1C
-:10283000673E99DE954BF33F992E838AF3352475D5
-:10284000E5929C559F757849EFC6AFFBED02E10F0D
-:102850000C098FDF14F1083C139FE7BC54BA89F0D0
-:102860007C12F99CF0B7CC35BC3F38C96E989C19E6
-:10287000C1B241B3D3731E1B95361BE1E2A3F5C66B
-:10288000D8D51DAF5E9342F6F26E8B3FC58DFD4EDF
-:102890001ECE35F841F16551189153D84BFB1B33CF
-:1028A000870412C05D2F7D9B2C0C2F9D6E7F5DA732
-:1028B000C00756C247B9D8876A77DB7D447FA1A994
-:1028C000E44F2EBB19DC2DD87BD9CB0F3738A8DECF
-:1028D0000C4CCD27E97FD4FF137388ECF15FA68CF5
-:1028E000BDB71CEBBB8E59849FA22A87F263EC58BC
-:1028F0007BA6196403BD764A8B491E13DD23BD26D2
-:10290000C9C920C7D0634A5E86A1EEF20E30BC9FD3
-:1029100056926B684F574619DA8BA13612C0F514E0
-:10292000654AEE10AEB8CF8C0243BB1DE93A4CEBC2
-:10293000FC52D85125F84FE8DB20DB4365118007B6
-:10294000900E261E37DA59259136F637930E5B0C1A
-:102950007100FB59E250C9851A7F0D8481C45F481C
-:10296000FF5E9263270F8BB893ACC17359B6D0CF7B
-:10297000CB5E96D80E5C76CCCC7AE22478BBF14361
-:10298000F251E7BB78B8F7F51BE1DC7FAE11AE5929
-:1029900001235C2FAB31C2353B6884EBE05A235CEA
-:1029A0007354231C87344D34F41FD65669A88FD82E
-:1029B0007485A1FFC8D06C437DF463D71AFA8F6980
-:1029C0005F60681FB7F736437B3C5D8D0F2F33B4D4
-:1029D000DB538F305D1D40BA32A13E287CE9DFE237
-:1029E000E8C2C2702F1AE8F48662F0AFE23FC27FFD
-:1029F00099969798006A03F1E385C2FF1584FF94C6
-:102A000028FE75B9DA139FEAF81D42FA9AE565794E
-:102A100084F07EB22485E9E5E04B270F2B40F84F88
-:102A20008502DCEFAC29228E22C9C126A2934E700A
-:102A3000B591FDB9C61264FF4545B3702729E53845
-:102A40007FF3FB25E86FC6ACB35A49024BCC7EC777
-:102A500087DB0DF5C297F61AFA1775860DF5F18723
-:102A600041227D55F0A6F7792A8B3E5438FC55FC5F
-:102A700049F0792A4BBF0CDE45FA37DECFBD5AAD9F
-:102A800097D2C8AFFF7BFBF368D6A07F364825BF3F
-:102A9000377247AAD73400E191FC4E03F9DF807604
-:102AA000B4159511B80FB23E98EF10EFFF2D69F2F3
-:102AB0002AEA6F42FF9CF08E70C9237BAF1692BD4D
-:102AC0000417B25BC80F832B843DBFDAA4B23D9AD2
-:102AD00084F628D9230D157EB697A74370203DBFF5
-:102AE000069455C4779219ED577CFE3F23028D85DD
-:102AF0004562B1443F777D21B3FF3D85FC6906A661
-:102B000002A4F74ED0EFB43E78691EC5E34F902E75
-:102B1000C3F5B7B5BC304F253BC303EE08AE3B2031
-:102B200040069B0B03F7D0B8EF9BDCAB0BF1DD83CA
-:102B300013FF3288EC917585C2EEB34B0829A4814E
-:102B4000FEF315A0E78DD9CA7D8545D1384B4FF4EA
-:102B5000A3C733F5F8E6AEBA309716B75722BA8B4B
-:102B60008F3B46CCEEAAF1A4FF9699D8EFFC0B2D33
-:102B7000AE94E7496539EF804E7B3A2F99FDFFEB24
-:102B800035BC991D9DAB7E8EEFDD1014F6D60293F9
-:102B900097FDF5DB338F731CC52E99C047FE505A45
-:102BA000FE76117FD1E3259749DFC6CE3ADB7E6FF3
-:102BB000CF3C668857C1137D12C6D7A3E3ABACFFE9
-:102BC00062F6B9659347E835F2F3DF6FCEAE84D491
-:102BD00044F37CCEF1ABEB83AF1AF8E2C6DAB70C64
-:102BE0007C7093FA9EA13DE2E9B252BC32B2276BEF
-:102BF0003AC5D73FDB6D2F263C20FE0F16C6C4EB2F
-:102C000022CDA3AB60ECB9ECF72FBC8EA3759D8CE5
-:102C1000577DBFEFD4BDC9F5485D84CBF8FDEAF11F
-:102C200011BD4471D844F6CC5D12CA0BF277495EEF
-:102C30007862E405401ED9FF7749A3BC44EFB6FD96
-:102C4000C147A9BDABDEEEDEEEE3F808C74D6A91E1
-:102C50002EC86E00A7787F81CDC176E81D3EE12F9A
-:102C60001EADF8EA06B25F7320D58B32107FC27FAB
-:102C7000A2B8C97C531AEBFFD55907B8FE61338857
-:102C8000BC514DF821F25797A6A60ABB58C1FE5871
-:102C90003F9161E6FAA11181AF981FF3C39CDF5801
-:102CA000DA5FC4F3C01319447CF833D9FFB5E05799
-:102CB0007780DA6B32D0DF46FAFDC4AC8E35116B0B
-:102CC000ED1A70AD05F1FE49B2FA395934637CFD55
-:102CD000AE253FF3139BE0DF49BB4ECF53113E1FA0
-:102CE0009A24F6CFD5674C1CAF0167C4568D7ED8A9
-:102CF000038303561F8EDF66457BD2299ECF1E13AA
-:102D00008DCB9EB0624971D024513A7DC2EE75F9E7
-:102D1000449E532F4710CCB09CE4D3E57CEB708AE3
-:102D2000BF9DDC6C07925B38BF42FE96FAAC88E32D
-:102D3000F7CBF02F028117F71A5CAF6788FC05F11B
-:102D40009F4742BF16F721FB720CF167726053B1C7
-:102D5000FDFD3DF66D84BFEEF51E16F1B0CF9A472E
-:102D600073BC5BA713D9A7C5BD7F0C20DA2FDB4648
-:102D7000ED8B5F7EFF1D8ACFFDA63030D487ED0B33
-:102D8000CC7231C9C9C5A91D1CA72BF6C93C2FAEF1
-:102D900097F78B72AB117D7158EC88705CEF6CF11A
-:102DA000FB9EF6FFD9CD9D1BF3395E2D8F25B9A271
-:102DB000CF8BEB28A675E8FBD4D7111DA777FED1E2
-:102DC000E3D07AFDE387D60CD7F20837FA13E8E5AB
-:102DD000AB743AB6268EFBD768F88CC74FC18860B3
-:102DE00088E3796E703760FD5A0D4E9FCDC3FD703C
-:102DF0003C44194FF85D3CDBE92538EBE3F7CB8029
-:102E0000C053BDCC73C548FF1CA2BFDB82224FA0BC
-:102E1000B723FD893867730AD3EBE2E7DE7AE7E789
-:102E200038CBAD8F8E2924FDA1BF1F0F6784EF70B3
-:102E30005ACF0249E4CF10BE37D1F8F1F981F385BA
-:102E4000EB89EC4ED60B27B6FD2C44EB3B91056E7F
-:102E500013F2E3E27DBF7DD33496E8C41996B084C3
-:102E60005DC6F857BC9E7243E03A92237694236481
-:102E7000DFD8F5F7065A0CEF55672A77F9D81F55B2
-:102E8000EE2679645785BF362450C1F5E556E1AF8B
-:102E9000EDEA34CBC4DFBB2C10223DBEFCD50C9533
-:102EA000ECC7E56877B0A79317E4F54232FA41E939
-:102EB00009EC069357E6785C5A600DC14BFAD1D401
-:102EC000079FC889FAA3BABE2CD2F4BD927F6303D0
-:102ED0008DEFD3E281686772BCB314029A1DA1C55D
-:102EE000E19A0F701C4297DB3698EBA0F8CF9ABEA0
-:102EF0000B1CE41FCA382CC7D73CB3D3A0173B72B6
-:102F0000551D4ADA11D1BAB5073F5E3F1FC06BECC1
-:102F100047DB0512D6D07AD5814823FEDA3AEB7723
-:102F20005D2F60D932E691C84A6AFBE6B44476A4C4
-:102F300043B303B8E847EB14EFD906AEBEC384FA37
-:102F400033D96B81F763F4A00339FFFD3C6D5EB2AA
-:102F50000732BBDBFF4078EB691F17AB24F8BC6F6F
-:102F6000EDA5DDE6AD49240F12C28BC8C433FD18B0
-:102F7000D16332C4EC9BED9E98BA14072F89CAEE38
-:102F800076E57482FCE577DDD7AABAF0AB1F1AECC0
-:102F90008110AFDF6AF18317E9C9E6C176C3390C46
-:102FA00055CB7F220117C7ECEF1CF64576B955DBF0
-:102FB00097F522EF8BC6F5F7BBA4D7A75EE2EB0B24
-:102FC0005FE2F885EA4B1B7E4AF5A50D3FF5125FDF
-:102FD0005FF812C72FCCBEB4D7A7CCBEB4F1AB5E9E
-:102FE000E2EB0B5FE2F885AB2F6DF829575FDAF063
-:102FF000532FF1F5852F6DFCAA6C073ACB81CFCD0D
-:10300000A6379A4374CE46AA0A73DE3857058E4710
-:10301000A73603E72BB67B851FA5C7E947D2103239
-:10302000FA2D567716D9D1DB1BEFABFC318E732A04
-:1030300013174FF9FCEC230A8DB36D1A70FEC2D939
-:10304000F8D1518A7FE540D81BCEA1B89A04E11887
-:10305000BBF4FA600A8463FC896AA58FA15ED43947
-:10306000C0D0FF964D430CED37B78D36B4FFA8A9FD
-:10307000D050BF492D33F4B7434E4B1EE55D1B2D99
-:103080005ECA8359686FA567C20D76D8F83D05FF03
-:10309000911F9383167DF7B8B88F74D56618D7192A
-:1030A000D77EB67C407C3E614EB1964FE8FE7E41B5
-:1030B000BC0F6E4FC2B8A79E4FD0F139DC92C4F856
-:1030C0005AA78A7CD39A69C28F9C1A729B286FA9CF
-:1030D000E36FB44672FABEB7D519FDC9F446772539
-:1030E000FBA34DC0F9DCDC2A7348C9A138C1C04A32
-:1030F00007E239B443D04708047D841A81F385A1DF
-:10310000AADC95D47E2A047C0A46A78FD1550B678A
-:1031100052DCB53EBB5F16C51972AA043D2CDD6BAF
-:10312000A4034AE7D256D30F4BBCFEF4FA8C02CA72
-:10313000E79D819727049CF5F3E7E97170CFDB6188
-:10314000C44B3CDEBE2D5ED614C77F57F2EDF06255
-:103150009B2177A4519C540599E2322F660F373397
-:103160001C9ABC8C9F19D88DF830A70938DF134FF3
-:103170008FAD7510AE8AE1DF1C6F5821FC4C93F2C5
-:103180002B99CFF0DDFEC0A744195FDB9A44FE16F1
-:10319000CB641A1FF6CA0328AE105267F3BAB737CA
-:1031A000DB92E93CDF57F566A0F3F2DB73E40194B0
-:1031B00017DBFE8C696EECF920A40ABB3993F7612A
-:1031C0003797706911A5A2956011ED6189EA835660
-:1031D00098E3F0A94AD49E3E2339EEB962A2FE5B81
-:1031E0008A73193E694A86015FD61223BF23180FDE
-:1031F000E5A37C1C4CBFCB4457824E42AF4BA195FC
-:103200001C5FE932D510DD68E72DD257CD06CA47DD
-:10321000D567FF742ECBAF7A1BC31D5608BAD0F307
-:1032200082D6264187F1F4E3F21AE9C72A0D3489E0
-:10323000FC96E01F7D1DDB146DDE2C0954967BB6D9
-:1032400001C467D6B8F1EC243C49DE78045F3A61EA
-:1032500036D07BCE123BE7B1413ACAF8B74E00E810
-:1032600013734E217EBD675DE777A4F30FBF239DE7
-:10327000EBF267AD57933F45E25CE429A46B8A1FEC
-:103280004DADEA04FEFE0ADC26A247A4835959C5C7
-:103290007CF4817F76911CB213BCAAD3A8DDD5A99A
-:1032A0004C25FA9D2EBDA2B8709CB587059DA37EC6
-:1032B0007989EAADCD16A0732628674C3FA2794BD9
-:1032C000EDEE952479A481E369DD853E943B1447B6
-:1032D0007CC5282F8A3A8D70CB8D97EB3DC0B127E6
-:1032E0003D110F47D7040D8EC508C721DF1E8E364E
-:1032F000AFD0C3E92542CEBE98FD537ED57D589C04
-:10330000AB495780E1FA852AF4F274E97898E4CB66
-:103310003A05E50BB6CFD0DADD25429EE870CED572
-:10332000E0ACCB9375F32183F8DE4DF2C44970FD18
-:1033300088F5765B9180334084F39FA98AE09335CA
-:1033400056F0529CB6ADD4E9A57861AEA2C1B7499A
-:103350008397094C04DF78BA9421A68EEB4B8DAB92
-:103360007F5BF8964ED0F4643F283E1FF8AE4B4981
-:1033700015FC3654C0C7EA8CF0B9E6A61C8B77253D
-:10338000F275470EC21BDB9B5E17F0FEA5D67FD5FC
-:1033900018E07A53DFD5990CAF9C859944CF4DD670
-:1033A0003695F2584D3AFD69E7C25C9A9C9886FCC6
-:1033B000BD00DF5F8DF289F290A92501078DD794BA
-:1033C0006F0189F7BFD99B68FF0E9FCD20072FABF8
-:1033D00031C235250E8E49DF91FF7F3CE1BBF1FF05
-:1033E00076FA15FBAD1906D0C979C89083E0642B35
-:1033F00099984C74D4D2BA9DEB32849A7271FF0FB3
-:103400003B85FDD5D23ABBD7F351214D2E6CA97324
-:1034100070795F9D9BCBB6BA4C2EEFA993D97E698C
-:10342000ADCBE3B2A5CECB65535D0997ABEA14EE05
-:1034300027ADCDA860395C051CCF5E99F239E7DF76
-:10344000E3E7CB518D7A6C706DB201EE7D6618F5B5
-:1034500055BA62D457748E29B6DDE51D65684FC92B
-:103460002B30D493E48986FE5326047E3981E48090
-:10347000A7324E0F223F8E899EB36B6915DF4BE951
-:10348000F0D3F59353E3F33556EF00CA3B395B05B0
-:103490009F366B765E13C111CB6405F8DC8CEDB002
-:1034A000E40D01F1FF6AA6F38771EEFE488B1DD98A
-:1034B000D7286427B4C8C28EB78238F76BCBF4879D
-:1034C0006BF07912EA2FCAEBDAE6A6B05C78D8E3A3
-:1034D000F4D239DB96D6656E5E8F579CA771E3BF39
-:1034E000447980F8F3358EA1C67339D6B39C6FFC4E
-:1034F000754FF4DA9491508E9C2167BBF32FEF6BDC
-:103500007429F22FF778043CED3DC8A3D6387BD957
-:10351000A9E55F60A02F61FFA83D25F20BAD717199
-:103520007BF4C312E66FDE9A2071FF3F4F9085BF98
-:10353000660903C96B9717DF8FF53B14F17DE8B976
-:10354000CE8F3F3E4F8C7C0A2407FE3C019F2B4FC1
-:10355000083B254916DFA1D84051583E81C887D085
-:10356000591FD237A95ABEA75BCE908888A13BE7E6
-:1035700019FEAEC88BD06716443F96E8FB17C4BF50
-:10358000FDB66523F9C3C37A69A7FC5002B9E02AE6
-:10359000D1BF1F832E4F3180EEBA23FC5C2589E119
-:1035A000172678359AD6CDC8C5E7A95E8B173100A6
-:1035B0001525F25E3A5FB14A4965FDBEAA446E2701
-:1035C000FEF942717A091FADF955ACAC93867DC8FE
-:1035D000A2B7B1C4C676BA8E87246D5E444F679594
-:1035E0000E67ECEFCC9B11ADE37FCD6336725EAF1F
-:1035F000E5AA4738DFD732EB3F38DFB73A6B7A1EA0
-:10360000C9BDA492E9C7F82097861F660DD2237919
-:10361000C6FCDEE9D3A2CE70A0F8849607048F31F1
-:10362000CF6791FD86F92F349E60A0D0436051F89A
-:103630007B8333E95BF0B5DEAF673E50F5EF4E5765
-:10364000D2F9E0268F90A34DE07D3340F55724AFAB
-:103650002AD3F38237E9BCE9EA8116C6CBEACCD992
-:103660004DC28E177E53936725E76DE3F5369DD7E0
-:103670008C95DB745E3356BE37C9B37BD5CB59010D
-:10368000739CDE37BE9F1D34EA1FFDBDA4CC2B5FAB
-:10369000AB8A392FD56CF13B485EACF2DC678AD53A
-:1036A000730F2881052531E793AC99B3F83D7BB6BC
-:1036B0002FE1BAAE50948544DFB8FF5EED81F59AF4
-:1036C0005CDCA8E997B3ED7393D6FF01ADFF66D23A
-:1036D000EB23A2F8193EF4F26496CFEB441C8379F5
-:1036E00020665EA524B082D615C5AB390A17A4D3CF
-:1036F000E1F957B0DDD1B06E7632E169E7FADED795
-:10370000A3E7D5F57E7A1E353EBF6EF3980DF0DF48
-:10371000A3C985175C0B2B1F40D0EC6C13F4D4B0FD
-:103720004EE891E14F887D9C4987C6F5EE6CEBDD54
-:103730000E8AEF4F91C56E3AE17A465C7D405CFFA0
-:10374000DCB8F65171ED0571F58971FD2BE3EA578F
-:10375000C4F59F1D57BF36AEFF82B8F6DBE2DA979D
-:10376000C5D5FFCD884FDFB56989E0188F3FBDDF34
-:10377000B9E2EF5D5FC57EA2A3E13083E945A7B75B
-:1037800073C543D4DEF5339DD94A46B17CDF81F65B
-:1037900015D9433BDB2ADDE27C4760E56E8D3E4870
-:1037A0003F58368879D0CE4AE6F89CD36390236799
-:1037B000C3B709328CEDB17668EE85C7F7D9E93326
-:1037C000A4D917BDAF5BE7E32913FC27490E414895
-:1037D000F899BA5DBB4D15FCB34D5D50B99EE46DD3
-:1037E0009359C49FB5FB50E86E1D11270F684A38E6
-:1037F000C2F18426CD4F68D3E4C95A4D9EDCADF9A1
-:10380000094943839B28EE9B7C988FE740B3AFE048
-:10381000AF0B103FF797166FA3EFC7EE1E53F2F8EA
-:10382000C35877FD5D827021DAE9635B14B259DA1F
-:10383000948C243A4F946272B4939FB8AAB0CD3F4F
-:1038400014FBADDD7FACFD79C4B39C69F3A2CE0758
-:10385000D9D265227A837C2F7F9786EB54C9C6B272
-:103860009677D5253A77BAF60AB7898CB0F419B2AB
-:1038700099CE11F79910E85B8AF018DC046605EB25
-:10388000196A98CFE25C532A0BFFEA196428DE6FAD
-:103890005716C1EBAB66DB7EAAF68C0F90B438DD11
-:1038A0007995FA38698234E887E38EB245ABAB8FFD
-:1038B0006CA6F3D04E49D4A73CF3F8FC95F9D1FAA5
-:1038C00098671E1FB812DB5B0B0799489EA67B52B8
-:1038D00013DE137375A9909FDB9B170E4EE48FE9DF
-:1038E000A53C13383021E76B25D1D4042C876AA579
-:1038F000AC3DCF14F52B35B8C9B55ABB4794177AF0
-:103900009EF8F1E794BA753B7B809F8D6CC877F683
-:1039100033D88B5797F6622FA279CCF1DAAD56796E
-:10392000009D23DCDA6C03BAFF616B3688EF905799
-:10393000D9F8DC2858DC03AE7145D71D5AD56F1E67
-:10394000D14DC80486386EA6065FFB4493768EF28E
-:103950009B307DC7B755CBF36C8588DB9D1F8BE70C
-:103960005FCD27BCEA78DE57FAAFCD449F1DD90B57
-:103970002B37E27BEB1ACD1C3759D798CB744EE32B
-:10398000907D746AC52133D9ADF9D06E263B7F1482
-:103990007D793D84AE400A70D9AEC9E7FFD4FCF80A
-:1039A00061A0F0F341D0C5C0F9B438F01382CB1058
-:1039B000126D12F18FDBE4C07996EC4BAF48A4B7DF
-:1039C000EB4AF5EF7AA1C652ACF91732C3B78EF8BD
-:1039D000281EBE74429FE38E8ABF9EDA9D7B5F0DD8
-:1039E0005F86D5DD6F18E993F0363B46CF6CD4E0A7
-:1039F000E7F6FA15C2E1B5C581167A7FC9A6BF1EE2
-:103A0000207354565533BDFF14E11D9F2F0C07A79B
-:103A1000D33063BCE14AEA3FBA76DB7E8AA7E5058C
-:103A2000EFA8EC8FEB1BAE54577A888694C0FD3418
-:103A3000CED0CE48850BEBCE4DAF86B3783D6379C3
-:103A4000BC5C7D3D480FD54C476E11C7D7F04BF895
-:103A5000A773CB0B370BF8607B16EFCFE2CE8A5DF6
-:103A6000FFB669FDF8BB8578BA68D5E0F758148EC3
-:103A70006035FA358F2582A34EA73A3C6E78A26B4B
-:103A800015E53AE7873A5F2439E8DFE49EC6F2B0ED
-:103A900038F024BDEF6BF337701E7057275D47D4A5
-:103AA0000D1FA7D249D7BB603FE569C2FBD615EF12
-:103AB0005772BC782F88B8589C3ED44BAB129F6786
-:103AC00010F7E58CDB6BB493915E958D9E587A353B
-:103AD00073BE33A4E9935013D22FCDB742D06F48B1
-:103AE0005DE64E44678F687A658746B7FAF3A13D75
-:103AF0009CBB3C54DAED27664A46781EEA8DEFD32C
-:103B0000C0CBFC807C7084FA65101F607DF00A37A2
-:103B1000D3A7CE074BF6FEF500DD67E3F4C905B188
-:103B2000F7D745343C227DBE43EF2FD9D475807C36
-:103B3000C5C12B047D7E4C77871545E90CFDC7F781
-:103B4000A89F4E3FF1FB78571B4F2EF67F4C785CB9
-:103B5000B829C8E321FF1C2BE5713AC349CC724A4E
-:103B600025ED676B1BB8693FF65F1474905C3855A0
-:103B70006B62B8DE981F5E65C6F2FAA160A5EB869F
-:103B8000AA33916C72298F6BCCFF0D6B33E20FE976
-:103B9000E76F344F91276013C1EBA08DE5690F7477
-:103BA00011D57BAA0EFF157172D73CB1177A3ED79B
-:103BB00071D7162B8E8945DF621DE7D84F8F379D51
-:103BC000193F1DC5FE434BD36CFD9CF00CBA8F67AB
-:103BD0003BC54F11AEAB9A7AB7572F58FCB4F9A436
-:103BE000889FAE008E03AD4C196B4A44379740FC5A
-:103BF00074CAC444F1D3C87B063B735593900B3A07
-:103C0000FC86578D4C16792948A57C891E1FD3F751
-:103C100075B7664F3669706B21B8313C05DCDA0840
-:103C20006E0C4F1D6E33843F425F8853BCD66316C3
-:103C300079B1910B3651BEE054A6C893D767DB44E7
-:103C40007B8EC82F9C411F9931F634F2C19A667160
-:103C50009F08BECF79B517B30F3886509E33D3CCAB
-:103C600071DAED9EFB6AB6733D99F9CF0A6A5B1E65
-:103C7000CE3BFCC3B9EA027A5E62E773F27A3EA7F2
-:103C8000A5AFC8E7B8F2B47C4EDC7C76B8A9B28D9B
-:103C9000E6CB137E4B8F74ECD3F2115A1E2823DF30
-:103CA00098AF70C4E52BE2F3956B9A17ECDF2EE228
-:103CB0002B2C9F87FF7824FB63F1F3B8671AFDB7BD
-:103CC0003523753FEA1147A2EF1852AB8CF4D8A206
-:103CD000E1BBA1AFC8479C6D7C284F36F8552D79C4
-:103CE000E71647D0FB911FEA4ED03FDE0F3D1FFF86
-:103CF000D6CDE31BEF074CE0DF6E99C8F11441DF2E
-:103D00006B9AC5FEBBE3699A5FA59F3FD2C7B16AB4
-:103D10007E1CD773A2724ACF870D75DB985E876AC7
-:103D2000F74535FC7B4A68650EE5D76675513E72EE
-:103D3000E80E89F3EE439D7ECE43746C98CEF9F184
-:103D4000BEC981A727C6C49F76B87E9AC9F9022D3D
-:103D5000DECFF7E6A0DE53D715762A64EF8E04BED9
-:103D60006727392E1F107F3F4E7C7D4E99D0C39917
-:103D7000D741C27B4F3E9F28DACFF4DFAF6038A136
-:103D8000BF9B2CE4ADA2D7FFBFE4A976B61DE2EF3E
-:103D90007D4EF94093B3FF0997A29C3D5112389E86
-:103DA00050CE5ABA58CE8627289F919E5C4E177DDA
-:103DB000101E6E4C7C3F8F5C76A9E2E16981877CA6
-:103DC0001D0FF75C92F942C4437659223CA05F452F
-:103DD000F06AF32983A85D29510653D98D8F1F26D8
-:103DE000E68B5965C2EEBB58F858A7E1E35EC207FF
-:103DF000C769642D4E93C7CF9B357CAC39031FEF49
-:103E00000B7C94E8F878EEBCF09151956168779757
-:103E10001BF191EACB35D49DF9467C240F2D308CD3
-:103E2000B7BC4C16F7240D9C68E877263E8CFEC084
-:103E30009DF45E2FF6E8C04067057D4B34606E7BD5
-:103E400007C9E64C7F5B0595FA3E37C7F9737AB927
-:103E50005CC35FE6D4C4F85DA0F15BC644E526030D
-:103E60003D7C2F317FD668FD979728B794C5F2F334
-:103E70009589FB2FD1FADF3641591CDB1F7FD64BCA
-:103E800031F6784FFB0E242BCBCB78FD224FB6A317
-:103E90003E95F3663B92E476CA57ABF54EC3BD75CB
-:103EA00083E937AC67FEE89B0E95CED9D13D4168DA
-:103EB000596DBBA35FEE1A6CDA96317C25C1B1A9AE
-:103EC0006C88B8BF7591FF6DCAEF28EA09ED1CD266
-:103ED0007CBEEFC814EE63A27BB2C09D714EF92385
-:103EE0009467E25EB7C120BE238620EB41C90FE98B
-:103EF000F4DDB205FC225F4EFDC5F785BCF9140860
-:103F000073DD0511AEA7697EDE0365393C6E3AC8E4
-:103F1000260124AF89E4A8CEA70E4F90E9DF53EB2A
-:103F200036AD245FCE0250467EA073207FCF0B9526
-:103F3000A0523ECB040EB6334DEB0F7CCD793AFD4B
-:103F4000FBC397FB88EF0FCF717FE7DAAF91EEE508
-:103F5000F344EFE56BD4EC01FD5E3EB532C8DF976C
-:103F6000AB2BEDEE06CF99DF973F3A31B08BF0FDEA
-:103F7000B7A4412191640E4E98EDBAA0E3872FF2C9
-:103F8000F8AF5CE4F1DFEC6DFCBBE9D752CAEBF9AA
-:103F90008F123F37B88AD9EED4CB78BC5DA12811F7
-:103FA000EA27395E1BF0619FA83DE73C6A627FA863
-:103FB000C124CE9FA9EF99D8EE827C41074E19F219
-:103FC00072C645C7717A838345DC49C45FEAFF74D2
-:103FD000D708B2BF7F99322B9286E31D7C55D87FDC
-:103FE00096A991CD74BF73FF349B773BF2DD3DDA28
-:103FF0007AEDA513EEBD137FBD798A90172E8BF74E
-:10400000F2023EB7343342F6A3ABD82253AEC01906
-:1040100097D76CB5B42553BCB275C77D15A3B0FB5B
-:1040200063752FB91B137CEFE9D4F29A23A5C472F0
-:10403000F09F939244DCCB67BC4FD85AAE9D2B497E
-:104040008554B2232DFF52D2129D07D04B7DFE2204
-:104050004FA48ABEBF8ED0256E88E7A292EAA464E0
-:104060000F9F8BE824F8567AC30EB27F1F5F10BCF7
-:1040700035F6FBD3D61270911DEF9B22CEC36E5046
-:104080002417DDAFF160C4C2F78E3FB8E8E9E6144B
-:10409000ACEF3D6A76133C5AFDEF3993B1FE388E92
-:1040A0004BF2EEE00E71CE529D0FA16108BF56F2A9
-:1040B0002AB1BE5B11E7B2D9212BD6AEEA43F8FF95
-:1040C00075725F016F0856D3BD9DEB5226F37D9646
-:1040D000D973443C78BA74B483DE7FB0C4CEF81B85
-:1040E000A29DD331A9D57C9F65DFF9C6733A0F2E07
-:1040F000EF5409BFEE52BB5BE5F3974ED7587CDF18
-:10410000F5A8192456715D3CF974C929D6E5157EC8
-:10411000EEE37258A5FB8EFBE27BF56EBE35D170E7
-:104120001E68F726E19FA68D777A91D271BD71E75F
-:1041300085F475B5E1BAE8DE63D7508E4764CC31BB
-:10414000AE2F2DCE6F70C6D5A79677DFE3339CF0E8
-:10415000FD85FFA785AF71AB574EE47FB6D64167AB
-:1041600055CCB904670F71C09AC982AE6D592F380A
-:10417000C84EF9C27FC4433878E59F073EBC97CA52
-:104180007FFD6ED75284CFEFBF7E73C793B4BFDA83
-:10419000BB0F11BDEAFE189FC1C4F5BC586D63B8D2
-:1041A000F96768E7397D1D2F587DDCCEF9A5B5FB91
-:1041B00093B87D64398492B07DA445C9BA99E8AEBC
-:1041C00053F2D6CB3488388FA8E37FED0D7E138C65
-:1041D000213CFA25BA0F639A76BE76C3229009FF76
-:1041E000B645ED7C5EDDB75C9C57F729D5497CDE92
-:1041F000748E99CF87D4575F73F930ACEFBA5CDC1B
-:104200004F3563B9328FE75704BDA475169B9713DA
-:104210005D6689FB9AF4F3A645D0C5DF7F8CF4B6C2
-:1042200077D848DECC4700D3FA5A357C69718322AF
-:104230005FA74AF6A4CB6BC463461CDEE2F1BA4228
-:10424000C7E34818497894A12D99F4E14300ED742F
-:10425000AFC086E54FCFA3F36C5FA8690CAF9EF8A3
-:10426000F91DB4579511740F8B83CB4EB457A9DC4D
-:1042700085F62A95AE60C575CB71DD7BDE38F8D248
-:104280000F71BA594AF5957444AB48CB7B81BA7427
-:104290005025AEFF06E25E51DF4289C4777D92A1D0
-:1042A000BED66389FE3D00FCD595A5FF7D80D35B1E
-:1042B00094A108964C8B968F11F559E487C4B4EFFE
-:1042C0009E69EC5FB63F66FC81B8DEC5366E0FEDC9
-:1042D0005BBA45B5C4B43F87F572805735FBF1FA38
-:1042E0009D66FFF604F2EDDD7261475AFE052AC9AC
-:1042F000B52FD14E23FF5E322B2CDF21D72227BAD8
-:10430000570F00E561AC5F2E1BE5EBE51A5F58FC2B
-:1043100015A0E5C7E01B3DFE803F7BFE388BEF63B9
-:104320005A35C4C2F70FA13EF0F696AFB3782C9F72
-:10433000C6DEDBF5AC2EBF87C1309AFF4B28FF43AA
-:1043400005F341CCBD0DC4F76DCF5FB614E7F11D89
-:104350004DE638AAE45A9FC2F731D535B13C7F40CB
-:1043600009FCB63CE67C4963FAC242922FFA3999BD
-:10437000E8BD47D798BFCDBDF71DD50780F4C297DC
-:10438000485AF65EE8B0B16EEF115AC7EABA762E17
-:104390009D6E85858DDD12E4B8CF154AE04FB43EA1
-:1043A0007B26B6C7F089D58DEF19FC0EE37D9CB254
-:1043B0003BE224B86F28F9C049F3B71E167CBDE173
-:1043C000F0EC24E2BB56EFA124E29B2FE8E2C7EF1A
-:1043D000C0273EE5559661BBDF48BD9EE8674F4369
-:1043E0001ADB150797DF7F2DF1CF8DBFF801C3BB17
-:1043F0009B6FE0E14195CE18BE818799AEBBF9462F
-:10440000ABF7CC377F67BEDADDCD37A2EECB074303
-:10441000FDE04C63FF6EBEA0F1912F1EAFB073BBE9
-:104420007DD2C35BD418BE3A49F558BEF909F24DA6
-:1044300002B93F7D9246DF17986F522E32DF0C9DF6
-:10444000A4C9CFEFCE3763275D14BED9633A1FBE30
-:10445000B9EC4CBEA99AD4F7DBF34DAB3BCCE7E902
-:104460005AE79813FE7D900F347939757EA0B28D8E
-:10447000EC1A45DCDF374D9A99E5F3109F497487B4
-:1044800034EA4FA1CF0F5EDFFD7D06EB67FDFEF541
-:10449000F58450B293160BBAE9AC1371DF6952F987
-:1044A000B4C5A477E93B024A3553F694EC02D4FB39
-:1044B00032D985D05EE1C179365499A04DA62D0739
-:1044C000AB87F1F861B6CF8668717FA7942FBE677E
-:1044D0009A29FEEE85FE5D4CB562BC5FB6FF59ECD5
-:1044E000265C770AF931EE12F17750164D8AD7BF64
-:1044F0006887E0FA3A07DA984E362857F71A273ACB
-:10450000E35CB52F98302FF9D6249376CFBEF233E3
-:10451000A2B3DD6F6C49A673127B24E0F339F383F9
-:104520004FCD23BE73A942DEB4AEF833A52361D7C5
-:10453000B41F1AF5347C6AD4D3F0A9514F6BF51E21
-:10454000E58D7AC2A8A7B57AB79ED6EADD7A5AABCE
-:1045500047E5CDA7063DBD61D2A70679F31ED5CFAD
-:10456000414F1F9E7471F4F4A88B2C6F9EBE70F2A5
-:1045700066DFA4BE1743DE1C392F79937DA6BC39B4
-:10458000743EF2C6B5B943A5F4CCC21EF8A056C31A
-:10459000FB5B65CADB343E949C5BBC269EBE3AAA9C
-:1045A00017AEA6BF2BF3A557F87F3DBDEFAAFDD5EB
-:1045B00091C6183FDC65E914DF23D4EEE1E7B76C60
-:1045C0007E95E3B1675D2F5D105A74A65E45BBC84A
-:1045D000C1F4EB35732EFC7CD7D13A47F0DB95CF95
-:1045E000DEC1FC945C6E9C4FB77F3BAA6D669EAFAC
-:1045F00044C8E99EECA19EE6FDA05C16F7FFC5CD80
-:104600001F4FBF489FE9938B981E2D742FF8179D5D
-:10461000C07FA7EABF4E6EFCBF8A7C49E9C51193F3
-:10462000CF834EA76BF84CB06FEFC5DDF705E3CF36
-:10463000E993CFC38E3E4CFBEE9B70DFDF67385EA5
-:10464000B47D5F30FFE1E6F3C1F7BBE5DDFBE6EFEC
-:104650005132B47D6FF8E735EF515C63C3BFAE7D77
-:104660008AE21AF77D9DB78DE21AFABD726910FDD4
-:1046700091F5EF8F102E2EBFF89E24634ECC774518
-:10468000C0FE7DF4BB13B2377CDDEDFF2BF7CA9182
-:104690007DD2DBBD72AD36635C4F2FAF2A17F64A71
-:1046A000AB691DC72336A05F558F78EB9823E211C5
-:1046B000AD68A7B0DC9953D0AB7DB4AB4EE1B85335
-:1046C0006B9D9FCB7BEB6670B9EBB5256524777D41
-:1046D000AF2D62BDE7F3FAAF7B1881E4AEF8D049A5
-:1046E000CFEFF5E8FE90B05FD2C87EC1FAC393D792
-:1046F0006F8D8D0B8CFAEFE15BD481D178555B66C1
-:104700008CDD23C7FA51A012B944FD28AC1BEC9AEA
-:1047100011EC47ED26BB06EBED934718EC1A7D9E96
-:10472000B566A821BB66ED0EF38C4476CDACF2C421
-:104730007E14D6390FE27039F8FB7F49FBFB5F51DD
-:104740007EE9DDAEC99D7271ED9ADF4FBE30F18713
-:104750006E3ED6EC990714E50D4DAE7C47F9B1D10C
-:104760004CF1E36F2B3F4692FCC837C88FCFCE4742
-:104770007ECC2A771BE2A20765B5CF58B2D37798D3
-:10478000A15ED6F42FD63BD1AF31219C7E5221B110
-:104790009FB3C10BFCF7FDA64BF35F267AD8BDC8CB
-:1047A000CCDFBB3FA88873220FCD11E7A91E5E5E48
-:1047B000309B3E235A9772C3DD4914D72E17F70456
-:1047C0004C97CA39CEFDE00C61E7643BDB2FA7FDB7
-:1047D0001FACB000D1D5D9E2DC146EE778B5E6475E
-:1047E00081B499FD0ED70F2D6E3AAF1A1FBF769682
-:1047F0007CCCDFCD83F40A7FDF7DB6F8F5B78D5B27
-:104800000F98F29DE3D6CC8F35CF0DBF41759E49F1
-:104810009F4726CBE25C620F7A2C9E9F3BAAA7A7FC
-:10482000457A3917E524FB29E61E59FD7BD659E563
-:10483000621E27D94F8551BAE8A82EEEF55EDA94AC
-:10484000DA678EC4E685522CED3C5E4AED3E7EBEB4
-:104850009ECE2F90CCB27859AE3E5E89F239C178A7
-:10486000FBEA8287092EBFAEAB3D4C71EA49964EFA
-:1048700089FE9EEBDE3A95EB7BEA9AB8DC55D7C60B
-:10488000FDD6D76DE2F2BEBA103FBFB7EE31AEDF54
-:104890005DD7CEF5C773C53C132D211E6752178E09
-:1048A0001FC30F659FE03C31782E8DA886F6096FF7
-:1048B0003619DA8B3ADB0CF5BEFE4D86FE7D66843A
-:1048C0000CED6F950502538AE85CC363867ECEFCCF
-:1048D0007643FD5CFD850BDD6F654AAAE51FC8AF19
-:1048E0008302484F4867E9B5B2CA79F31AC197FD08
-:1048F0006BBD61AA6F71D998BF75BAE433CB26B18D
-:104900007E53CC3DB51D2E717EB2A1AF88A734FC7D
-:104910004CD4B76489F391C3AB447EA461A0B8972B
-:1049200044CFC36F7169F793F8C43D1A83F223FC37
-:10493000DDED20EDEFC139CB45FECC0D6ECECF378E
-:10494000D481F67D6284F31D1960F68AFBD5159932
-:10495000FF9E920542F5385F43BE5BBD85E44C3057
-:10496000D56BF6F29F960D99298F48E2899330ED29
-:104970009ADED1F2F2491F009F3BE886CFE7E27B47
-:1049800084DA2EBEB7A97F6D17E7E3B6FC42DC637D
-:10499000130FD78E5F7CC5F72A6DFDD95759C4D444
-:1049A0005BBBCFED7425C57E8FB6A52695EF5BD892
-:1049B0005A9BCBE728B6D688EF8D6510FBDDB2C8D1
-:1049C000C6E730B6D69ACD24274F2DB2305CF4F529
-:1049D000C7CFAB7FBFB94E3BD773AF76AE67AD766F
-:1049E000CEEA6EED5C4FB376CE6A8D763E76159D3F
-:1049F000EBB1133CC5B99EADB50B14ED3CAB7E2FAE
-:104A000003C35742F8F2772A56D86B1A07F4870C7B
-:104A1000196EF1DFC7665425C79DE7319EB74AF589
-:104A20000D30D49DF9C6F356C9434719CFA90E34AA
-:104A30009EEFB1798CE77A2CCE4AE3F9D058FA444C
-:104A4000609A566CAC27FC77FF7D477AD88FFF7E43
-:104A50005C37FD86F47340129D4349637ACDAC12F6
-:104A6000F499A17D0FE3864E2E53915EA874529E59
-:104A70005DA273902AD351F4FB37A5577A3ADFBF72
-:104A80000720AD4CFCF700F473087FD1ECA8A553C8
-:104A9000944FA71445E7BB7F8A723CB6AE973DC9D9
-:104AA00085FFADF2FF01C18CE32B00800000000008
-:104AB0001F8B080000000000000BB555CF4B1B41B9
-:104AC00014FEB2BBD144A35934B6865A481A520DCB
-:104AD000A4B06D37A225D2D5869283C8163C78E85B
-:104AE00021879CFAE358E86D635B904A24A9422F22
-:104AF00052C8C11E0A821EFC03621B7A8E680B52CA
-:104B000029C18AE7405B7A11D23793AC899BC47A7A
-:104B1000E940F2F266E6FDF8BEF7E6E50D68798158
-:104B200090A2DD137D40245A2A3848065468B930D3
-:104B3000305324E9A2FDB5AA94359114C0A9095CAB
-:104B40009ABA1E2F4912D9C9163BFDD4CECEEF8D8D
-:104B500031BB0126252EAF1F39000FB015B3E51666
-:104B6000FDC0C20E9DABC0EF315B0E7E96DC49A549
-:104B700032CA4D01917D69BDDE4BC02CFB49F17AF3
-:104B8000C73D0309F29F3180FC30BBF3D0CD745791
-:104B9000343BE5A33C427B4548E42F5284DC078646
-:104BA000AFAC81F6E7AFDE17258AFB6109B84CFB95
-:104BB0000BF652EC11DDDB1AEF945F28CCCFB4FD7D
-:104BC000299DCF5C1121325DB71F962855D860AB67
-:104BD0005C237EA25255A755A1CF0334E894F70C6D
-:104BE000D347EABAFB243029535ECF0FFC1B8591D3
-:104BF000BA5D805261FBB7B51ECF71376D8410AAC4
-:104C000088751C15B6EE36CB3F866FA360673821DA
-:104C100030BED43D21E7A738BD5F96BB183EB1A892
-:104C20008B25B2478C508F13CE3DDD8D73FC7D6795
-:104C3000FC7502078683CBA22173B9650C72796C6F
-:104C4000F8B83C3246B83C34142E4BC61897408A0C
-:104C5000D7B3D3061E2F63C47763C1F6F1645B59E3
-:104C60006775C78484F7ACCE432AB76BBA17253F64
-:104C70000D7C115DBC190A3D6F2799FDBB27028F82
-:104C8000B91ADDF4EAE166FBD56753E7E24E1B7320
-:104C9000BBAFECEDCF5D1D486CB6F0FBB2D6C740A4
-:104CA00096E711880B58A43CBC0EC529D3FDF4B679
-:104CB00093F7754871E49C0CDF9A0B3F4C1CD43F72
-:104CC000CB696A19829CD524997AEAD46F8F42F90C
-:104CD00034F45560FAE320AB677A223FA8138ED5EF
-:104CE0009B9FE786C92EB5232288E6BC5E6B369E65
-:104CF00097892B202982DC027F3B5C8F6BF618F2B0
-:104D0000F0B960E5DF7ADFAC3BADB4345A7BA2B4D6
-:104D1000125D898C4675D2D66D9C07A70FFC7D77F6
-:104D200040CB33BC17C80FB8433CE7238994AB9EF4
-:104D30004FBB3A997974D7FACF9B2C3B12846FF909
-:104D40001F7DD8672F3A58BD9692423CD7228FF5E7
-:104D5000DA9C5B526F39D97B44B8751EFD716B9F2D
-:104D600056F35991C83F9B4F2AF96FC1F737C67761
-:104D7000B59FF745AA6B46137CAC9FFB891B8D4200
-:104D8000F547904B116FD9A8A0E4E9FC97DAA17020
-:104D9000F796F9D0145F6DE8A36BCD73675B73551D
-:104DA000E74D1041366F7E0ECDBAF32DEA6B4A9374
-:104DB0004773EE34F358AEE24C567122DCFA3DD71D
-:104DC000EB355F1BEA488867FBE6EB797DD38E7F86
-:104DD0006B1FAC2475779EFE1FF0691FBE1B8C8F66
-:104DE000B3EFAF1D6F569E8EFF334FD6F3A23957E8
-:104DF0002E88F3A2F74CFD2FDBA790A6F00700004A
-:104E000000000000000000001F8B080000000000F0
-:104E1000000BFB51CFC0F0030977F3A0F2BFA3F161
-:104E2000D7F3A3F2CBB851F99E68FC2634FDE7D145
-:104E3000E4591820B4233BAA38B158988381410E15
-:104E400088353950C5F3A1E6D6002DE807E215AC48
-:104E500084CDFA2C05748F1C03C32920DD00C4D730
-:104E6000651918D8817C216906065F204E00E2CFC3
-:104E7000320C0CB380F43B20DE2A0DD1C707143B63
-:104E800027439EFBBB85C8D3378AA9831F28A1F27D
-:104E900067683330DCD66160D0D683F0AF20C9BB01
-:104EA00003C5666A43D831AA0C0C877419184E28BA
-:104EB00061373716287F18281FAB87DF7E572354AA
-:104EC000FE2E6B54FE4F4354FE134F547E9F372AE1
-:104ED000BFD107420300BDE0D98DD8030000000018
-:104EE00000000000000000001F8B08000000000010
-:104EF000000BCD7D0D7C15D595F8998F376FDE674A
-:104F000026C90B3C20C02404891AE8000182224EE5
-:104F100042B0C14DF181546997EA93B53622C81366
-:104F2000B1A6AE6D26DFE1AB8DE85656AD3E586DAD
-:104F3000A9D51A2D6D6957DB04D0C52D8548A9B5B3
-:104F40002DFB6F50575B16D9E816755D5AFEF79C1E
-:104F50003B93CC3C5E3EECC7CFC6ED0E77E67E9C25
-:104F60007BEE39E79EAF7B9F220640BF1CE01CFE14
-:104F7000B1E7452200CC197C462BA0542E07D8243B
-:104F8000048D70117BFE415AD91566DFC08A2F9FB0
-:104F90003ED8EE5A10A8FEF3456DF13EF6BD63EA29
-:104FA00057E350C6EA4F14A8BE53CF79DE0812402B
-:104FB000014049E76A35C1FAD934AE49C5FA1DFA4C
-:104FC000F695C0C63B53A28084E315656FDFD6001B
-:104FD000D03D0DE072D8AA16C758F998646C866C5B
-:104FE000E314D1384ED91F17A1BB14E8EF1CFBDF27
-:104FF000A62F2621C1C66D9DFAD59508B7D27D335F
-:10500000E811803BC6254167EF678248F3522A2C9E
-:10501000305959D5ADB835FDFC713A102F65D86BB4
-:10502000677C7964F0FD32072F0C1F197801B804F2
-:10503000408359DD16960340ED33FB35EDF1B5F8AD
-:10504000E8C63F7FFE7CFC19A0131E40ED8C272292
-:1050500083F06CF2F5774B0CDF5611188FB12A39BB
-:105060006C9C4A573F99E30DCC53EEF4ACFF74842B
-:10507000B380E621C8AEFE32E1996BD79BCB668E3A
-:105080004F675E390BF83823F57F25A2B800EB7720
-:10509000C6AD888B1E65CB83F7A05D5F33BDF586FB
-:1050A000C24F08F13307F163C5911E1D3A96C27ACB
-:1050B000630D9B4F8105FD522E918D096300F2F126
-:1050C0005FAC89ACE99548AF634C56977D1F1BB325
-:1050D0001A25F67EDC82B420B367041ED2DE0801F6
-:1050E0004253728E1A599CEEBB6677F431BA3D0377
-:1050F00091CECDECD92CB37E116FC723E9C71848E8
-:105100008D97A51EE963E588254353398D4B7C783F
-:10511000A77491B19991F4669BFE3B1A547AB63507
-:1051200068D0ED07686988D3F3FED097BE81FDD7BC
-:105130005B7ECDCF9E72D7ED4F61B9192081E345DB
-:1051400062BC7F9055ED310DCB6022DE2325FCF94A
-:1051500012E285C1F9558649C4CB0F6D3CE9D04DAB
-:10516000FCDA6C2CCF812CF8749EA1522F9F05F491
-:10517000206B3958F6C7F33C659F36DE531FA0906D
-:10518000F04665262AEA042E8F22722F180827C3BC
-:105190005756B960CB15499AD9DFCDE6179EA718A7
-:1051A000BB58D36D8297BFC6099C3ECA04959E31F9
-:1051B000E8DF7F0EF16288E9CD6CACE0CCE2AEEEC8
-:1051C000188EA91853D93A067D692D2F0B7F41B946
-:1051D0007CAACF81BBF8A3C78F24F5A41259C6FDC2
-:1051E000BDBD7E979F3DA222FFAB33C544BA0CE103
-:1051F000B5126CF2B05597459CF74707F7F0EB7581
-:10520000C2E6E73650A9BE8CEB553EB85E1D065B84
-:105210002FE49F72BE5E1DB2A58E66BD1E07F0E034
-:10522000253480972E8E97B28F182FCDFB5626B23D
-:10523000CCA3CD5E4F190CA394F0A0E808E7D646A6
-:105240004EB716A3DB6CF277283C4839C7E3C9B2E6
-:10525000F3F17E8DC0C75964F38983A74D865893B7
-:105260000E239E3A6B506E6D2D1145944B1F159E6B
-:105270001CB8360FC095E670957EB47049A1EE95C6
-:10528000D9F8B12D831FB720DC9CEE6A38DD891F69
-:1052900029DD397005901FF83A27F83ACB7F13EBD8
-:1052A000DC36B0CE49BECEF18F669D9DFD1C5463A9
-:1052B00025AE5B9DC6F890C1718B642937E0FE1A5C
-:1052C00012E03183D101C23F8EE999E1A697751DA5
-:1052D000E03E21C0F50D69554ED2056F9DCC749608
-:1052E00059F87EEB05C961E601695F7F9F0327E3FB
-:1052F000DFFAE38DED075C707E5188C408CE79300B
-:105300000FE17C27BC3CA71B86EEEF6483DA28FB09
-:1053100000DE6BB0DA0FF8CEFF7E8B04A96CFAE5E5
-:1053200083B65C00B54BA1F9DFCD787026E2E1824F
-:105330006A88B2F508378DC17940987D9CCFFAD93B
-:105340001D68945DF81D6A3E037875DA3175C79F54
-:10535000777EFBA1DA7D20241F11187E5B63623506
-:10536000C2A596401AD7C0BF7B59F778181ADED667
-:10537000D85F06DE21D7CDAEF74EB8A90D58BB6673
-:105380009F71506774D252201A4D300887432FCE38
-:10539000BA38781CEDBAFC6680BEB65E01A467829E
-:1053A0002ECDFCF3E9EA20D2D5C57F7DBA7AE36F32
-:1053B00097AE4E0A057FBB74A5D44BFAEBCCCE2832
-:1053C000924D2E27B5D516AD3F8ECDE492D439B38C
-:1053D0001BE525C4997DC68701919515CDE47A2FEB
-:1053E0001880FAAB5AE29593BE42AF9C8CAF34BBA7
-:1053F0009D7E37EB38AE42E3A27984E3CA61E80EC2
-:1054000044B1AC503F48CEE7A6303CC18335C5BC63
-:105410009D81ED869A8F8CEDD878A87E9C2BC276E4
-:105420007F9F93C862F70ECEDF3B4E7C452227114B
-:10543000197D7D08CBFA1B2EBC0FDD4E86371CBCB8
-:1054400030FA2F453F49C120FECDDDB791FF220044
-:10545000A241765D619B855FDBF1FFCDC77D9FF348
-:10546000757BE12C0DF52D60FB0DBEB784CF039647
-:105470003F1074E25B673C299C00A21BBBDE48EB3B
-:105480007F27F25316FE5E25727DE3BD2FA5FE1B1E
-:10549000ED416BB3A03FC6F07AB8E17D788DF1E5C0
-:1054A000EAEE0B15F47B5C2F8EA17AAB1714298BD7
-:1054B0005CFDAC066E1702F4C9CB22EE711BB91E5F
-:1054C000DA25EDC379BF5A21A571FF7BB5E27F488C
-:1054D0003F7FD594D288E4573BAECE194EEE1C6E7A
-:1054E000E0F6AC53EFB029D1FE7E58EE0B67D3E364
-:1054F00007C74FD3F8575548DE7D5AEE9371FDDF4D
-:10550000FB22F8507F3EDCA00AAF4D65C62FCE933C
-:10551000D1D1EA8A2205FD0E23CD6B89ED0773F008
-:10552000EBCCB3252CD23C5BC255E4B76AD1DE216B
-:10553000FBF10C7B8FF26028781DBF558BB63C2B9E
-:105540003E9408D7B7145F32BBBD69CFD72967FA3D
-:10555000B31CF8DAC2DC2E6A0B73B8DA62621AF98D
-:10556000BF2D9E7D5CE7D96CC3E7D46B8971BDB458
-:1055700085C993D1C02387BDF030B41D457FC94490
-:105580005BD6E4D7F6367E0EEDEC64D8940C7CD373
-:105590002B4C62E5097109366B6CDC9AAA8E6AC6DF
-:1055A0000279AB122F3230602C7456A21F70F217A2
-:1055B00037F67C8DCD6BC27CBF86EDF26A523DCF53
-:1055C000B176E399989358BBB1C7D7AD4339FB4F38
-:1055D0006827A220B66E6A443F560B0E7109C0C3FD
-:1055E000E2AA4AF4B3C9C0E502937ABA3C06FD3395
-:1055F00040CE99A1E403FB13CEF907DB0D85B788F4
-:105600002DAF68DE24AF960F2FAF36F2FE2DF61FBA
-:10561000CA9B0983E351FB71758A078F6333BE1FF1
-:10562000B0E9D20FCBFEAAE38C87E501D44F222B41
-:10563000442D8DF5A12B17FD5063D6CAD08DDFCB3D
-:105640003B1B99F81811EF4CEED570BF715258E61C
-:1056500082F79722F7334DBAEB9820A0DFD7602A64
-:10566000FD4C2CD7CFCC46A7DB6DFA1C28D7AC1647
-:1056700092345E62C954946BB522D9BDFFB46256B0
-:10568000AEBBFDFBF63883EB0FBA3C17CB7CFDE5D8
-:1056900015A21998F1A7AFBFFC21D73F7FA3E2D98C
-:1056A0004F3FECBAC8687B148CBCFE7FEE38CEBA94
-:1056B0009DCF1F5C3E4EBAAB3A80F2EFBEC4F07293
-:1056C000E5FC755B4EEB36660598E92C72252009E2
-:1056D0009E7DD579AA900283ADB3744C22F9268DB4
-:1056E0009DBB72270C3DAE145332EC37BB3FCBDC75
-:1056F0005FC2D6FF13E0FCF5CA28876A510EA15C91
-:105700002AF7BDEEF68F308C0F9619EEDFFAC2FE47
-:1057100003288F2C268FD07F9AF9BD16CB2E7AB80E
-:1057200042E2FBEFBEEFFEE202818D73C4F0EB7E3E
-:10573000F6EA90D0FB06F97D2B25DA8F113E752E07
-:10574000B607524E8E989259CDEAF7960BB48FFA5F
-:10575000E1A5EBFE91DA8728DED1BBE0B52F5FCA69
-:10576000DA7FE2321F720EC704B68FB37FA25E7378
-:10577000B6EFCB97B2FA872ECB1F56DFAAC5F9BA80
-:10578000E8E4AA67BDE555486F08FF7FBC59FB20D8
-:105790001BEF08E424FCF8ACE0F01D41F890EEFBB0
-:1057A0007EF506EA85874D81FC51472A7E16437BAC
-:1057B000BCD214485F5CBA4048FBB3CC73E982DBCF
-:1057C000264F62FD258C901660DF0F55BEBDF55249
-:1057D00006EF553F90B6E1F3F45EA920593634BC8C
-:1057E000CEFBAB4CEFFB01BD189216E21D341E97A9
-:1057F000F0C58CB89B5E07F418396166F3B7AD95B8
-:10580000B8FF51D00CD2EFE4B002388FA1EADF34F8
-:1058100004FDE6407FB7847038FAF7D9AB75B73C22
-:1058200074E050E44412C791340576A19E917B8DBB
-:10583000EE9E7F83C4E34242DC2478148DC3A3C868
-:105840008699CDDF546FC3E3F403D069B7EF87BE09
-:10585000F0207CAD81C44AF45B58B9DC7FD812F1EA
-:10586000FA03F7D8FD3CE6F4E783AC71158026EA2D
-:10587000BF6A4C858AFD3757703D490783FCE32D8D
-:10588000CC6E8461F4BAADB6BCD88CF10D3FC6398C
-:10589000343BCE11E7FA53F819F2939D2913C9AEA0
-:1058A00019AA9F88E1D54742A55E3BC6D15F027A1F
-:1058B0005E861FC8EBF7F18D914547EF437A1D09CE
-:1058C000FE013DCFAED72EA7542D2B9ED2C3EA7337
-:1058D0007F3DFCF1F6215F97960DAEBF14DE1CBA3A
-:1058E000CAEC5FC95752698ADB25E21E7DC09693D8
-:1058F0004ABE9AC27D01D4A1BE0779FB30FB8EF16E
-:105900008C7042477F8A043C2EA4221FB8F0F3B665
-:10591000DDEED3B268EBF3298A830A7A8AFC766AD1
-:1059200021E31FE1FC76CEB3CF6EDFFE87DB5F2184
-:10593000FE2850893F049DF14F96719A24F394C438
-:105940009EB74AE65BF8F4FD514A66E393FFB2E581
-:105950008A5A9BD0D5628A2B923D92094740E6FD38
-:10596000DEE4C06FA5284E395AF8DF1F25FCCE387B
-:105970000C7E592E20F87DF81C0A7EC986270FF46C
-:105980004619E59ACEE52BC032DDAD97DC28737958
-:105990009167CB2780DBE26E7BEB7ABB9FD1CE2772
-:1059A0004F1EDD7C9C71D97C26C97C3D26CBC3ACC7
-:1059B000C7441B8E1B65BEDFA9D5093DCED6257712
-:1059C00008BA5A60C39192455BAFB8ED43D1D5C5D3
-:1059D000A39CC782C1759967AF4BC570F3986BCF15
-:1059E000A35382F9AFA35E3CC5F1F72CF7ACCB1DF6
-:1059F000367E3AFDCEBA6CF0ACCB2DF6BC463B9F62
-:105A0000C5767F23CDE78EC1755966CF67F970F3F0
-:105A100071D5BFD6AEBFD2AE4F76C71D726913DA4D
-:105A2000194D5262955C30381EABF71977BDB79BA4
-:105A3000CF34DAF56EC0F7420DDFFF58BDD5EE7AF0
-:105A400060459BD03FD08AB602B3634A5A2EA9B2B2
-:105A5000DBD551BBDA81FE6FB6F983DA055A8426AD
-:105A60002B4CF5D661BDC6457F74EADDEA85F76249
-:105A700007DE0D046FF5001CB7BBEB2D9027507FA0
-:105A8000E7C51D46E90FF2C5921D18E7CF834827E9
-:105A9000E679B4C9A947300FC0B264780CF309FCA9
-:105AA00086803EB66845EA1B582FD762F635AE5B56
-:105AB00055EA292C5B22249ACB299F80F205EA65BE
-:105AC00055F31B987F61C00E56D662721AEDF356DD
-:105AD0002169E1BEF85329F96599E4ABB6AA11FB37
-:105AE000CFD7B99E0E7DB46F3970DD13BA8EF21F19
-:105AF00072195CE88F6ACD80EBFED0A41EDC6FEFDC
-:105B00002D50484F66065629CA973BA5A081FDF542
-:105B1000147C9EE0DDDEC8F31BB67FE2F304EF7D6C
-:105B20000250DCF63E1FCF6FB8C7A76A4D1AF617B2
-:105B30001DF759CA87C8D1FCE5361C08DFDF1513ED
-:105B40007CF9A055DE2890F8EA41FBB6B542217DEC
-:105B5000797B6C5625F557A1929E7A5F625623E9B0
-:105B60001D1541F2D1E7870DB25BA3F314B0B01C51
-:105B7000331A51CF8CCC0D620E0CE417022617405D
-:105B8000641AA4B1EC83CECE12F68C7630BB249F7F
-:105B9000EC26B811EDDE0A8677B4232CF328DA253B
-:105BA00061B0FFA44326CEDB374102F47B38EB1B08
-:105BB000ED1C683FACDD154D8FB25EF7E8EA453A63
-:105BC00098DD3F7B14F53A47592F3DCA7ADDBCDE9C
-:105BD00088FE0E83DB7B2AFB0FEDB640A6DD1CF6AC
-:105BE000DAC3BE8CEF99F1B8CC67663CE4A4EC8DC7
-:105BF000878CD4DE89838C345F744A0CC0298D5C19
-:105C0000DFD13787FAAE8CBF266EB2F6ADE33E1D0C
-:105C100027B9366E157F4EB4DF4F5C69973F6D979D
-:105C200057AD34B3C8F7B13E2E874BD11F329CDF3E
-:105C300001B8FEF80683FD9C80C94BC3FB4F32F5CB
-:105C4000DE4C79A7CA5615F2EBF604F76BFA9119F8
-:105C5000910F0B81FCB03E487596A09C0033BA783A
-:105C6000CC20FFF8CC174CE4E7C3E324102A687D6E
-:105C70000CF2A767D049265DF833FC397F2E9D7C56
-:105C8000CCE78DC7FEA5E844E99046C53F4AE72822
-:105C9000EBA54759AF7B74F5FC1DC2E8EA758EB2DF
-:105CA0005E7A94F5BA79BDB6F90ADFCFE17B4D662D
-:105CB0000983FB12D5536EBB24E8FD7E69D8536E71
-:105CC0009FA3D0FEEF94FD73554FB99DC979CFF7CF
-:105CD00079612A6F6AEDAE625BD9A8F9E43FFF44AF
-:105CE0003E295547F04B578819765B065FA97A0025
-:105CF000DBE7CB3A60FE547E8CEF53EC69A6B3E051
-:105D0000F7119BFF77C93C7F73BBAC07D07EFC5B70
-:105D10009F67A38FC3EBCC7724781DF9FBA664EBB8
-:105D20005B43E57D54F3BC4C1982949759526D56F0
-:105D3000994C2EC92FF2385866BFD729C9A77D2E96
-:105D40007B58D6923CBE67F7B7A44026BD44667226
-:105D50000DF51E05123545144714C9DF278747D8AE
-:105D6000370A5D72AB7818B8ED3C56FAA40354FEBE
-:105D7000968F1B3480E46B04FAC898CE41AD670A55
-:105D8000EA69BA00D4DE10B8FF7C8186FB5E2CF095
-:105D900097EE7715F52B98F7C0B9D087E857EE2323
-:105DA0007FE75FBCDF11E00D607EEFC5144288B96C
-:105DB000F37B7DF114BD84B3E7CE49738137A1BF76
-:105DC00024C5D765D1207F288C8F925DD61ADBA0A1
-:105DD000BAD7F5FF7CC51EBF89A2B5DD2644D9B36D
-:105DE00070ADD9370C9D9FC3600CFA470A6F34FB26
-:105DF00086D94F07E29918AFCFC2076D4A328DFAA4
-:105E0000BB3529CCED7939457EC676216FD6E67251
-:105E100017FD162ADD0857A4DCB4D0DE6BCF170DB2
-:105E2000D45365D8DA2BCC60EDA45A2399458F184A
-:105E30006C2F9F74CF27A678F5A9E611E8BD7504ED
-:105E4000BDC7A718C96CFED0690AB76B7DC1ECDF6E
-:105E5000EF12AB4A9439E7E38DA9F9DCBECD850E8C
-:105E6000E1639C7C28DFA1F08557100FAD0557C476
-:105E7000879B2F68DEBCCB9B4473A6323C1C73B25D
-:105E8000C131DA7C10ADDA203A1CD097629CAE5159
-:105E90004F12C660BE07FFDB56BEAB1BF3407C371C
-:105EA000F0B8AC64EE06F4533B7A9364064F88B4C2
-:105EB0009E0BB8FE54CAF52193FD87F3882E185E19
-:105EC000AF9632CACB14AF3ED4DCB017303EEFC031
-:105ED000EFF8F132E7758958756D767C8CCE1EBE71
-:105EE0008FD10B4CC378948A4881CE068DCA5F6EE1
-:105EF0008853796B834ECF9686527A6EC1A6F39102
-:105F0000CF531D450C6F1DF147E39F6555EE43D9F7
-:105F100041FBFE758B504FDE3C50666620837B3321
-:105F200006BC991E71BB72D522B4DF3707C0F62BB1
-:105F30002C5A647ACAD7345762D9F6336C6EBB9E3A
-:105F4000EADF3711EC7310A6FA49D7BEF788E223CF
-:105F5000FEC6BD85B7379BB1BF806C97E1B645DE05
-:105F60003298084F40E5E5FDCA06EA9F44001BEF62
-:105F700027CAED7CBCA9DC8F0F65CB47C023F7EBAC
-:105F800083A273F9599647F92C8A61A0FB15EECBD1
-:105F9000B5E11E6D3F7292EF77C7B2EF97837C3306
-:105FA000C2BE66C331D2FA3374D87E88245838EE24
-:105FB000CF791CF1AF3DEE7DBE0F8717A5A2DFC2E2
-:105FC000F3230B94E4F791DE23665777112B476B8D
-:105FD000BB2D62DF518E7BAFA2D9F34E12FF3B780F
-:105FE00076F48EFFF279D7D11733290F2910E6FC0A
-:105FF000375A78FB50BF9A33D80F3C51356E387DF5
-:10600000AD2021A21236202FF26B82688C0D947382
-:10601000CD3C4F39A762BCA77EC428F67CF7691730
-:1060200079BEFFA9EBF4F38C79FCBBAD373AE51FE1
-:1060300067CE7394FD3AE59EBE4562295B87976BF8
-:1060400025D2EF5EAE7DEDBED9584E4814BF3DB3AC
-:10605000B2D9878C740CCCC81CF4872525DB9F6EC5
-:106060004E447CFE1CFFC9C67B09F73D269F8ED897
-:10607000E77F989C9888E79F8E5C366F22AEEB1185
-:106080001FE76FB03A493EFDCC071E79F0335BFE47
-:1060900018ED3B9AD10F794CE065A97DC7228BE2C0
-:1060A000835BDB3ECEF496AB390A6179AD90D51EA9
-:1060B00088F815C2C7074232E267F334ABF5D61849
-:1060C000E6BFE940FAAA1F12A497D5835529A2BEBC
-:1060D000C3E88FE2DC727F6136BDE367F67EEE8750
-:1060E000AB49DF5F5E9BEB4363DE5F33D3877ED4D8
-:1060F000AB6B2A7D60EBCB9A0B3E3121D0F9A91511
-:10610000B5FE5D88D715B2E9CB16D7BA3AE1F7EC00
-:106110005333190E11FE63F6B90780FE4277BC694E
-:10612000A69FDB3BF192E1ED05076EA7BCAC76E6DE
-:10613000F38807866D3A8F026A7FE1751177BF2178
-:10614000272E1CC17E5F5EF90F7C7F6674817EC541
-:10615000174F7CCE4771D915F91EFE5B5E2D79E095
-:106160004F2C0879CAD7D45E9D33ACFE91F467C832
-:1061700033CB3E8729921CDE7C5C20F99033A93F0B
-:106180008D799AF0B2045CFF73FCAF9790FF353ABB
-:10619000A15F477D017E13D21E73C9CF169B2E8748
-:1061A0001AFF393FD76BE5BC1A8A6FBF7742D071AF
-:1061B000BE425EFD349CAFAC984D386E4B9198C694
-:1061C000B8F79DC5DB555CEF4D251F4E0FF4C57824
-:1061D000BC5FB7B459C8FE43B54B9BFC1C41E6FB02
-:1061E000B57E1E6F69B5966B25B88C07B44A9C7F47
-:1061F000A010B29E3365F4BFD68F7EFB98053CBEDF
-:106200009E20BDBA445D4D79B8F2F8E1E3B59978C6
-:1062100093ED386066BD276D7A2CA9D845FDBE7711
-:10622000E1F0FD3A7879DF10A1D7D627B0BE0A6C2D
-:106230003E0CFF5B4A791E6E4BD9338467C9AC2490
-:106240007DD6A7A54CACB7A56C35D1652BAB93CF4C
-:1062500086CEADEEA2739A5BFEC0E3134FB61F6805
-:1062600046FD614BCFCD807995C1781A507E6C99EF
-:106270007E938A78D8B213A017E958EE22A75CC89B
-:10628000F687873448334B0A426526A05CC8D3F8AA
-:1062900099CA7DF12AC075DB520E06B2667E3AD5E8
-:1062A00088A19F2D711EFF0E969A354508F73891EB
-:1062B000C4800EC90E2CB7D4CA348F368DE303EDDB
-:1062C000AE734E7E17E6C19470BBAB04FDFBAC7F92
-:1062D000E58B7CDEFA8E12F2136DC97DD9447DD731
-:1062E000FA04185381EBB5A427C88C8EB0FF7A2D21
-:1062F000EBBA6F1593DFF2BBE2F7B2A60B48A79992
-:10630000F879CF0757E2BC5B668AB02B8BBEB1D75A
-:10631000CFE3756963F955C559C679CEAF7BF204F1
-:10632000F4F715827BA8FA83F564F2EBA3E1B1845C
-:10633000CDA3A086FB4B21E31C6B0C9264DF8E0582
-:10634000AB11F9D139BF3AA13AF1CB247B4A91156F
-:10635000944F37D4795627CF7375852D9041BFF66A
-:10636000D76CBE371FF401E2EDF2B38FBC80F95257
-:10637000BE0ABF46F955D0F902E66FDEC8D4312C0B
-:10638000DF7C7CBA82F93F2F8F97303706F9278A56
-:1063900074F81688947FF6161C8DCE76D1F9297B79
-:1063A000DF41C98A72A43997CF4B0EB7F54A515CC9
-:1063B00077D9EA73F2F74861E279ED1066EF55CAD2
-:1063C0003E6A24F9D7C1F3859CFCC8CF767AF3875F
-:1063D0003EB7C35BBE09968F41BEB989297469D6A1
-:1063E000EFCDEEBC2F36FE313FD70F3E07A936DC8E
-:1063F0007FDAEDFC9875DF9FAE205DDF3C5B2BC242
-:106400007318CE3C7EEFE776E849C6A7BA8BFFD774
-:10641000C4D2949F9C39BFB7F62CEA4EB2F26BBA45
-:106420009CE276B6779EEDBEDEA598EF656DF3D95A
-:106430007A8337CF71CDEE4A13F3C518F6F47C6F2B
-:106440007B82FF1F3ABCF31D091F99F377F4C1A1AA
-:10645000E6A3EC16B2E6FB85546FBE54B3CAE38DD7
-:1064600066B30C8185E79F8FB6AA5274BED96AF2D3
-:106470006BCD318A4F52FCAF9E110EC6F7CA559DA7
-:10648000FA792F30290D740E21350FF5A33FB7DFB0
-:10649000F92AE7C3BF74BF0B8780779DDAA7207FF7
-:1064A000AE973B6B84E2C1F301019F654E60F8F645
-:1064B000EF5DD63D013CF53A4659EF201E811E4561
-:1064C000BD1A7198FE4EDBFBD6BF3DF12F0AEEDF01
-:1064D0006F3D7E6229CAB95BFE550295D53BFD44EE
-:1064E00004BA69DF492B2897D7EC9168FD41EE9EED
-:1064F0007BB527DFBE99E67FCB5311DA1FD63CE38D
-:106500004FD7B2F66BBEF7DA0C607C7BBAA9FF8579
-:106510000988BFC7059EC760F5CDB89ABD5F23C384
-:10652000F5D9F2106E50395F9DFA416825EEEFC241
-:10653000EE9EEBA8DFAE6B7D7E97FC5DA9727B9A29
-:10654000D533F1BBF54D213D55E0F065CBCB3BF5A7
-:106550004DEE4759B3D797C63CC535BB772A495648
-:106560006FFDEEB789BE173DF56414F1B07EAFF74D
-:106570003CC22D4FFDA1ED92723AEFD45F8BF24FEA
-:106580003A4BE533A6DACFF3E0B93FE656E2585688
-:10659000EF3B6F5EF16BF6FD645C82001329277B95
-:1065A000FF53F9572C27C32926CA58FFBE57DD7C55
-:1065B000B87EF76B74EE481399027B299E87C8F862
-:1065C0009E519FE9B90ACAC3F55D9BDE4679B97E43
-:1065D000CF5BBF42BA5B0FF2AB6E7E3E89FF18778E
-:1065E0007E3C6B93EAF5D39D814373C901B03B3F79
-:1065F000ABBDE8C4B31CFEBEE5C9330FA31E71EAF0
-:1066000099FF7A18EF6758FBC7FF7918F35AE147EB
-:10661000010DE5D6FAC77F1E0517FE1FB5E5C3E9D4
-:106620006F7EE3EB0F303C9CFEA59FB076FAB93746
-:1066300027E13D1DA79FFEDF31A87F6C7C6EF158DE
-:10664000A4B38DDF5D3476B873A048B769BF7B7D96
-:10665000D3FC7E83BD026E8200CFDACF8C7581437E
-:10666000FD0AEABDEF0AD0BF3997BDEFFA8382FA7F
-:10667000CB0B26F4239EF6EF79ED85BB58F92DB6AA
-:106680004EFE2CEBC4E63F41A4FD8DB10F7BDEBA7C
-:10669000E7EAAB2E2BC7A7CFC0EED7433FED1BE7F2
-:1066A000ADEF31B6BEE583EB9BF9FD0C9C5510FFB9
-:1066B000EB9F60EB3903D795ADE78CF3D7F32DFC57
-:1066C000C7FCF3D773BFEAF5C79D81B58F3C801F28
-:1066D000F7E467B56F9DF55CF7DD4F0EAB973BF2C6
-:1066E00061243CD3F95E06D75754F3672AF2ED33A1
-:1066F000DFFAFA0331BECEB50C31A79F3C33090F48
-:106700006BFCD6D77F1DE2A1FF39BF867AD49AE70A
-:106710007E417C77FABB2FD1B91EF61715D87E774C
-:106720001A06FE8E022BDF2AF0C23ABDFF8A5FB145
-:106730007ED7B12E2C83D6EF8A5F95E3FAA9FDB4FC
-:106740001EE965353ACADF7401CDFBD634E78F5BAD
-:10675000D33D2BD09F9D89F748C0C9271C5C57F4B7
-:1067600097DEBAE7C415487F43ADA7337F0DE73FF7
-:106770008F7D7FD4CBBF43F2ABBDBEA777BEA7A0B2
-:106780007ED5FDAF8A26323BFFB4AF5F198FFBCDBC
-:10679000D39286E78D33D77D10FF4D59CF1D673ECD
-:1067A00033E9C31FC81EBF76F03412BF8F3CBF0F42
-:1067B00087BF33F63E9C89C75367B3EF075302DCAC
-:1067C0009EBB153A6B50C5CCDCCF7C90B226140D25
-:1067D000C2DBD625919C3FB59BFB6932E5C5AD4335
-:1067E000D867339D71F6F6CC40B9766ADF0F6CBA84
-:1067F000E4747FEB132714CBDE1FD22EFCAE1FC236
-:10680000DF7DA9DDDFFA67B3F7B7FE89B7B3F677A7
-:106810005236AF45F84FF6FA282FE9649794D5CE53
-:106820009D1AF079F4AEB6C8DC5772583B291AA409
-:10683000BCABE626F317E827B58EFA6C3F80F15B18
-:10684000CCB76A8E04E99C7B73F426BA2FC9E9AFF2
-:1068500025034F723C41F6931C4B94F31858DA63AE
-:10686000C7F81841B8E106D92A44BDFF70D19B3260
-:10687000F67B04F548975D7F4486D6FC723C172171
-:10688000188D90C5BF91D17F628104BADB4FD83D8E
-:106890004EFC3D6BEF3F26A511B5F590EAA67301BE
-:1068A00085D0F55896FE1E6AD0C97E2E4A5C4FFEF2
-:1068B0001F7F2A65A2BE56B8512B16F5A1C79D9819
-:1068C000F2C6AFC733CAFF3D8E73D047FA20EC7EC5
-:1068D000FCF1C7C7F02D05F5F217F0C9E4DFE57547
-:1068E0007A21961FB2E7CD7880CE314EB41232CAEB
-:1068F0003921B64C46FD62712A21AF76ADE7E298A8
-:10690000301EF7D3F410F7407D3FC0F7CFC6C66BFB
-:10691000288FFDC12F8A44D70F063E5E887C7620E3
-:10692000775E18FD6B3DEBE61E9AC6E09C10960064
-:106930004DCEFDE1E1CF6D3E6CFB1776D9F70F3DF3
-:106940006AE7977FDDC6DBEE86527A3EDE60D0F7DF
-:10695000271A2AA8DCD55043CF671A12F43E7A577B
-:106960003089F4B9A76125BD9F006F0BB8FEDF6BBE
-:106970004852F9D1402EC13FF96E1093ECFD62C42C
-:10698000477870DE0E3C69DBEEFE7EE0C72DC8174F
-:106990000378CCC0F7E5D02BA8E8BF8A093AAE7BD4
-:1069A0007D40E779AE19F89DE4EF17302E577F3719
-:1069B000CF877858F09E77B8DF96FFDFB1F9F4DD26
-:1069C00068F2C9007BBE53B3A294F421D0CA906E82
-:1069D0001E1612478C22C2B3E7DCC9FABCE4770268
-:1069E0002EFFF0A40E6ED7EF08D8F26D2388486F03
-:1069F0001353A023BD39F3DE57A917A25CDC270887
-:106A0000B4DE486FA52E7A1BA0DF809D971CCFBEF9
-:106A10008F0FD22FE7FFF825A5F754235E3688E4C1
-:106A20000769C64FAE761FD874C4EC16D1427AAE51
-:106A300013C99F3BF9F8096112834FD7BE15C07B7C
-:106A4000BBE293C0F637750590BE1EACE3FEC5AF42
-:106A50001DE7E798CE6C2C5E368DD55FCAF083C1FA
-:106A6000A8BC25251EBFA5737EE16B6A22471BC605
-:106A7000BF9599F776FFE42FBD9FC3C699703CA4DC
-:106A8000E379987B26FFA84761E5F17D02F993C67B
-:106A90008753D3703D2BFFDF37C7F5B9D6E181753A
-:106AA000A9C9A837B64DFEB6807C30FEEC8F05DC58
-:106AB000474AB4E49BB83E1364FB9CB09C9A87762B
-:106AC000C1F57989DFE1FB4461FA53484F676A36C3
-:106AD000FE1BF6EFC421EBEBF5DC692EF990799EF5
-:106AE000E2A1D4F0FE4C67FE0FE1FC87A9E7CCDF02
-:106AF00059BF3335B1B5281733F199D96FDE9215E7
-:106B0000C38EFF907D8F189BBF3FE8926B85A93E97
-:106B100019DB39ED878ABB66CE77C04F34CA386D32
-:106B2000970FF2912E9EFEBF49DF3902483A0909BC
-:106B3000FD53FB02C97108CF5C4851994947CA67A8
-:106B4000377239FF3E30E6EBE388EFE47411E57D00
-:106B50008C72BC5648242A719F334423DB3E303D5F
-:106B6000C8E97E01A4C83F2A86EE1E3ECE5FE88DAE
-:106B7000F36F059A0458DDAA1DFF0059437FD841E1
-:106B800098857EC8FC20E7F74A99DB97B30FEA3B6C
-:106B900025EEB79296455CF8B3FD763EDE3583FB75
-:106BA0006ED0743CF735B34770F1EB7BA1E4C220A3
-:106BB000ABAFC4B93FD2174BD279CBC55258247F63
-:106BC0006E2797FFF590502FE47119C079EB1017DD
-:106BD00071BF7F68233FDFAE6B2182FBA1984EE53A
-:106BE0007A5B4FF9B14D473FB0E5FEF76D7AF92E6C
-:106BF000CA7DA49B3EF3400E83EB3BB6FC7FDA9646
-:106C0000FF4FD9F27FCEB13EF86639C96303F39ED8
-:106C1000BFBC3DDE84D37CB2C1A47ABB1AEAE8B91A
-:106C20003F77ACB897D57B74A3B80BF9F9516DECED
-:106C30009578DF55DA140D81357EC8DABE28CAE0B2
-:106C4000DFA90A143F7BB82145ED76AA7A938AF131
-:106C500014662D5B4806F5BD14F6A8FC6DBF56C33F
-:106C6000EA7DAD33EF4A8CC3DD5B23533B878FF462
-:106C7000391BB03944F3FC4164ABBC826E750ADA4F
-:106C8000E91B45EAE72B81CFA88BD873E2C4A3EABE
-:106C9000C7755C8C13668A7D5FC4908CF3A8E8EBA3
-:106CA000B3B05CF27A98F2B5E7BED2074FB3725137
-:106CB0005D84CA132D2F5F4CDFD367753238269E53
-:106CC000E2DFABF37E6775B1FA391BA2D45FD5EB77
-:106CD0007D02D2B3AFDC7BFE6A87EF97FB236CFCAF
-:106CE000D8A1848078DB27688B3025C4FA143F7FD5
-:106CF00033F62054E1FB787409ADC3F66011D1CFAF
-:106D0000D75A8EC66F463C6D8CB5A099B37FE3060B
-:106D10003A9FE0DFB891EB4129EEFF9E78C701E191
-:106D2000732EF950D82267F5DB6D0FFA799C64E376
-:106D30008AC4340EDE8130EA7B25DC5F59D45AEDFB
-:106D4000C96B72E2231F08C9ED41B29B789C44D6FF
-:106D500052F4FE32097545F6FA4E91EB4989DE8010
-:106D6000DB0FA3DFC1EF67CB8463575026385AACE3
-:106D7000EA3A9417DBE6287200E19866DFCF62C733
-:106D80002107F63121B9CB2DD7648DC33591A132BE
-:106D9000847077F77EAA8BF5F37ECAD9C7CC20E939
-:106DA00049F788C41F5BCBF939C0FDC63BDD78CFFE
-:106DB00085C34FAD8648FCBB5D16D202EB677B797D
-:106DC00071EE85483F31DCBD69BE2AE2B944F6F177
-:106DD0001C0E30F7A15FDC8F7E71B6DE25C743271E
-:106DE00044F2FF79F3BF8B2CEFFA8BF5DE73771348
-:106DF00099D2E3CE57064634037446FB6BF5BEFFCB
-:106E0000407E5819223A03CB8C568EC1F445FB4F75
-:106E1000AAA5F3CF2519E70C1EB0EDF787ED738413
-:106E200070F63640B9F5807DFEFA81B5625067781C
-:106E300079DE3A4AFBE6C4FAEE4A0ACC687E4F7E17
-:106E4000B5FF6EAD09F7D7A294374FA832232FA80C
-:106E5000E4CFCCB33E1EF4DAA9FB4E060DBC0F2FD7
-:106E60007D4C32509FFDF25DB349FE596BB8DE9206
-:106E7000AECB7B00CFBBE40B60E07BA75FC77E7D22
-:106E80002798477C939ECFBEE730B912E95A5287C4
-:106E9000EB05395A530CCF43DF09DFC6FEEBF8FA96
-:106EA000571602DDAF5318033AE7CC9E9B2F40FEE6
-:106EB000DF28624C1CCEA19C4739AEF6BE88EF732A
-:106EC000AF14E9FE9CA216EB429CE7BE4BC68F476F
-:106ED000FAD81AE6E75E9A851468086F01E7879D7D
-:106EE000916ECA07DD562342135214C3A581FDAC2F
-:106EF0000EEEA23C1684770ED11DE95D18A3407EEC
-:106F0000B46E08F27DE7AC7521FA95A3A1BEAEFD83
-:106F1000AC9F70BB62EC62FDECACF4DE533735C461
-:106F2000F7BB404870E2FB81107B9A5B81F216D977
-:106F30005C88BF195F5940FB8246769513DF8FEE60
-:106F40005B22164DE7CF6217FFEEB2E56CDACE5B3F
-:106F500078D8DE3F1C7DE301DB6ED86AEF1B45E687
-:106F6000554D0AD26D1DCC443C95ACED125667B31D
-:106F7000EF3BBC7235935F2667F24BCA7B4E75427E
-:106F80005DB1E77BC4B8C8F39D4231B8EE6CFF46F3
-:106F90003CB707CA24D4FB6643C274CB95A1F6FF65
-:106FA000FCA03923F421F49F68289142FD3353FF5C
-:106FB000BED45E97EB0289F9B81ED14B56521ECF54
-:106FC000BA40E252EA5F4E0B284F1760BB58567822
-:106FD00029F96B14F0567F18784136E83CD79D921A
-:106FE000739FADF73C1764DC5F9B793FEDC2FFBB3D
-:106FF0009BEEA76D1598A287E51CFB7E5A3FBF9FAD
-:10700000B635C2EDAE563B8FEA561B0FD787F87DDB
-:10701000AF6B6D3A5D18CA7EFF91E3F74AA16CC071
-:107020007A63B3DF3B861A15F6B77042F6EFA91004
-:107030008F3B2E9C3CFC381B701CD6CFDCA0B92E9D
-:10704000E4F2AFCC0E99EBDDE5DB43767E919C203C
-:10705000BDD294F97E5814343786E6B8F06B3FF30E
-:107060009694D379BE33F6793ED66E87407895B440
-:10707000D1E0DDD1FF5B05FD1E92833F677A5F960D
-:10708000F5782F18B5C49CC17894A31FED0E717BC1
-:1070900092D1DB263E8F34E5418741BF07EF8198CF
-:1070A00080F770EBE85738FEF0BFA0BCBDACB70668
-:1070B000F5A7753F94E87EBBF3F0B596D19D2B1FE5
-:1070C000C5793FFEFD0964074F9692F7875CF6F19C
-:1070D000F8BA7E05E91DE1AFE6F0F3FC69217D21F8
-:1070E000B70780E238AD37C73DF98499F6481EDE10
-:1070F0007340724521BD2E132EC79E70CA99E711A9
-:107100000EDB74847FFA18BC271CB8322B9B12F25A
-:10711000D71C48D2731EE8F464764B17CE83F19FD8
-:107120008E703685265D8AF3F82BE2ED47A1397F14
-:107130007B7873E8B82879F9001D67BBFFFAFE5029
-:1071400094E46DFDF108E9FDD17D5F20BA96185DEC
-:10715000076283F932F560E7D187A10BF5DEA264FF
-:10716000039D0B3DC3E818FB95347E8E55062D819B
-:10717000711B29C6F9C327976AA2867159CB8F79EB
-:1071800007563118286BD11FE986B73C9C7CD38DFC
-:10719000C73B8FDF43F2F6BA40F224AEE79D259657
-:1071A0001F353B971C3EE596C3028475E4BF856797
-:1071B000F97E5999D465A487458CD311EF8B214969
-:1071C000E58F8345CF2590A6E7DFE19546A4C7D993
-:1071D000E716BAAF15DDE71606F2B9CB9D7C0E1E99
-:1071E000A72AB0E9106C3BF5F995CB1B17B3F1D981
-:1071F000E29B188FFAEA4A9ECFE39F27D3F9D58204
-:10720000BE1B6A314E042BB85EE6E441E4D57AF544
-:10721000B4F3EEB73AFEBBE3D82EF39C9CA3AF6564
-:10722000EE5BCE33535FCB0B673F3F39D4BE931930
-:1072300057A8C77F72FBD5B6AB1339EE7BE3339FFC
-:10724000871BFA5B0EB8F2CC8FE0FD4659F7011EA2
-:10725000EF8DEEFB5DED8A72BA5FCEC094C9DE861B
-:10726000EE85AF4F1DB483130B729F477F74A23A14
-:107270007796C4F0BE34FE6ECB817C806566CFC24B
-:10728000D75DF3ECD518B459F48481F14CDF07EEE7
-:10729000FDF72D85CB97567BBC881D1F6B172D3FA7
-:1072A000F1ABED7FFB7D21B7D31DFB3EDB7C5B08A3
-:1072B0005F7D61A487A1E6FB0F61BE9F8E5969D0F7
-:1072C0007DF9CDF67DF9CD139DFC2D43437DF2A6CE
-:1072D000702EBFAF205C42F1D5E69EF9E44F2E3808
-:1072E000E4237FFA981549C172ED8BF73670FFEBF6
-:1072F00057987E87F9205B985E87E57D957355B436
-:10730000176E8FCCA278EDE606C3932FE23CF13ED8
-:10731000BAA4CBBFD79CA8D230DEDB523B4B45BBD7
-:1073200043FA443995E50B677556317EFECCD61984
-:107330005714605CA28CDF47763D2B3796303B3A82
-:10734000CCF7D9C3C6EB61C453555877E887D6D17B
-:10735000B72269FA502EC4B52ACC9571DE834D5FF1
-:10736000EC3DE9D76F29C99BC36CFE87ED7BB1DA91
-:107370009554E986323C17CF040EFA8955EE27441E
-:107380003A68993D08F7061BBF97D8E33281243E3F
-:10739000ED5A3F25CED7AF5D84BA6CEB737798EB8F
-:1073A000372D9AA90D4B479AFC81E7FED0F218CFF2
-:1073B000CF8F313A72F1F3F9F4CEF9A93C9C680908
-:1073C00017A05C84D214CD3F4CF287DA4983F7587A
-:1073D000C6C36607D63B9A6BEB2F853C0F9ABDDF81
-:1073E0009243F34B917C77F4C17699EB73A3D50765
-:1073F000F3966C247DF01DC65A649F7D6223C9ED0F
-:107400008D3E95EEFFDBB740A67856740A5CEFB66A
-:107410005BA4887DFF7F84FBE5F17712D2D3B8DED1
-:1074200083E73CA221A0732EFD13797E693BECAC6F
-:107430009942F04DD5DCFB59E544EE67D85615ACC2
-:1074400073FB1B16E6F278D98BB995BFC3F9978504
-:10745000D355C89A176BD087F93450C5CF8F09859B
-:10746000FC9C8D0F0C95F36BB586F7860A90A4F300
-:107470006743AE1F78EF177D5C4E3705116F31EE15
-:10748000D789EC1028694FEA32BBF1EC4E7BEEF263
-:107490001F223D32B967207FF7CC0D92BDF76E8F6A
-:1074A00042F6E7BB37C3AFD19FF4AE2F072CB654DB
-:1074B0003F12C55F3FC5E6DBCF987517E67F69FCD5
-:1074C000FBCCAD02F99B7EF4417002D2BB110511D9
-:1074D0007FCF6229D32778922084303E1B5D04DD64
-:1074E0009763FB9E30E1CF17FFC9C2D767D3FE1366
-:1074F000122BF0BC96F820CEFF9938E461FBD9FF3F
-:107500005B25A1FFCAD187BEAA258F22DEE6815561
-:10751000D7C3DA6F53387F6DCB53D218A79C552051
-:10752000921E02BE507A2AFBBEF4E0EBD598DFB97A
-:10753000B46226D6C4F169BD4BB4E4719C77B5B68C
-:10754000AC3A97D52F3FA693FCBD227EDB012CCF12
-:107550003DCECB3E3FD7E3518F719F0F58FAFE24AB
-:107560009AD79B61AECFB6C4CD5E531896AF32EEBC
-:10757000E5F59E2F70E8806DEB3AE6A5D3BF75A2C6
-:107580008BA44F1CF43F4185619F3F71E8C1143EBD
-:107590000C3DEC09F37DA11DF3CD6283F966EDB6D8
-:1075A000FE36DA7CB34C7ECA5B22D33ABCC3F42DE0
-:1075B000BCCFE37C3EB98DEEFFCCE42707CECDE512
-:1075C000793194C30EDF68F3EE26B9ECBF41A1FB1D
-:1075D0004C1D3E72F8E7D29C013EBA0FE5C58AB059
-:1075E000BE98A76898E0E693AB47E0ABA5D07F20B4
-:1075F000C6CA4B65B07298083A3CFFB725935C7CCD
-:107600009289CFA50B0478D5230779D9856F6DE0D2
-:107610001EE02C76F250EB7254E6E71E1C3EC5DFEE
-:1076200063C1F3631DA201B81FB5E7AE36226CDD5E
-:10763000E4DADCB5C80F5B84440AF92132EF54E880
-:107640002686F777C7302D12FD87FAEAA788DF5F15
-:1076500009915DB66DEE1A8A4BBD7B737232EE2FC7
-:107660009B18DE5FA5FD3C3D56A45CDBBEB13C6FC4
-:10767000428FF36732CEDF83FD3D6D974DBB5E1FBA
-:10768000D563EBEB919B3F8D723EF86994EF539B72
-:10769000944E15E9A1BF48D5B2E52BA722BCFEE563
-:1076A0007E28C7FB18D968941FD0AA4A353BC95910
-:1076B000C2E5C4E5534A77B9CF5739EDEE6DE822FC
-:1076C000BD6653C35E7AE6D7A601F3E882A5968E1F
-:1076D000FA87FAC74502EEC770118FCBE3FB4697D6
-:1076E0005EF7695BBEAB785F101B4F6DB274F7FD40
-:1076F000B4AA2864BD47E84894FB89D526A0EFEAE0
-:10770000BE7FA6FC85FC1243F82C969B3AE9F765F0
-:1077100002DDFC7DACC4146E74F51BABEDF2ECA382
-:10772000AAD82793DD540F9A8546A0DC578DFEB961
-:107730008EE5C14ECC6BCEA437FC7BD54537EA1F16
-:10774000AF26FD098E72FDB5BA58253A6FAD577652
-:10775000A2FFEFF7B12ACA67EF88089EFC02E7890B
-:10776000F177A611923FCDF2F338BC358DC7E1B168
-:107770008C71787C621C1E9F1887C7EF1887C7F230
-:10778000B71B4C2A633C1ECB188FC732C6E1B18CA5
-:10779000F1777CEE6DA8A3E70F1B52F4FDD9867A32
-:1077A0002A5F6ECB5728E5BF07D6F105C5C4FCA9F3
-:1077B0006E7B7DF69BCBEB7E86FE42881AB8AF07C8
-:1077C0000E35BDF2EF7699EEC98E17E7A3FF126270
-:1077D0002260DCA12DBE9DE9A283F30BC8F7824E87
-:1077E0007177AB0EF31EBFB1ADF70A99E91F25F112
-:1077F000DBAAF258F9C96D2FB7619EE9057AE3CA91
-:107800009DAEB21E99B5E6696DB03CB96CA71C641B
-:10781000DF9F89FCB20DE54520C6F5C367B7FD9A29
-:10782000F4C3EE62A600A1BC2B52D248EF37E23A75
-:107830004DC579F07CEEBF83E638E6F94DD6955913
-:10784000C8A7AC7E37E78F51D6C760CD9CF3DB0D60
-:10785000574F2C1F553D3AA73B643DF65D18A69F38
-:107860005668D67A19EC5B7C7C1FB60AB89FB8C301
-:10787000C7E54347803FA7E438F90D55CDD102CC89
-:10788000FBE17CDC11E0F713F44F17E9777BA05E96
-:10789000F87BECE7F3E341C3FCC859D38BF3D14E3B
-:1078A000F8854D0F532747F8FEFE8F2AEDEF1F9FF7
-:1078B000FC644B1E2B4FFD17C3C0FD7A0B1841947F
-:1078C00027D6562E4FBE553E256F19AB7EF19CEF45
-:1078D000E6A17E3CCF964F69DB8E696CBD6932DADA
-:1078E00011EFBEC4E5E31BB67CD9E9EB4DD17ACEEE
-:1078F00009D3790B804ED25F1AE332E58989E3F828
-:1079000053F1699FA6FB335B15BAAF49F9C33C95A8
-:10791000FCAEEFFBEDFB8A7B49AF5102492D97BDD1
-:10792000EFB444F253346BC134DE9BB5253C8B7EFF
-:10793000BFC12A93296EB6A58CC77F42916BE85EC2
-:10794000ACAFF404A87E6B58A57CE174D99E835536
-:10795000317C8A1AEA07697339DD636969A246795D
-:10796000C7EC5FF47D6D8CFC4174FE18BFAFE5F190
-:107970000ADFD843546EFEA446FD839DDF4F2A9A4A
-:1079800088BF2791E8F1DE4BDBFF938FA1BF640D29
-:107990003FBF32435BDEF31CFBDE62AA8962C60F87
-:1079A000ADDA3BFB42585E05144F0D4D7FBD298477
-:1079B000F56FD40C9EAFC5CF4B807D0F724BD98A2B
-:1079C0009EFFC0FE578660AA81F5AB55E4576881DB
-:1079D00017F0DEAA428288BDCF9D25A0DED65A4B85
-:1079E000D77332F8BCE70C5AF2AE54916EA4A57965
-:1079F000344E2B982AD6B76A65DA3F0BC36A37FA3A
-:107A0000170A6DFF84230FF253AEF306EC7FE3D722
-:107A1000CA9EF308636FF4960B32EEE12DB7E927A7
-:107A2000136F99F3CC8F3D938BF0E4AFA59313E7DD
-:107A3000C17F6F6CD6329CD7386D9FB0B39C4C1F02
-:107A40004DC77BC821D5E8CED7F873E19D51D6D27A
-:107A50008BF4304397416778F918F43761FF5B6C1A
-:107A6000FAEF28F2EEE3BFB0ED1FC6A76BA37330A9
-:107A7000EE2182E5EA1FE322960B9E291D799EF2F4
-:107A8000D4CEF19EFAD376147BBE5F98BEC8F3FDC8
-:107A9000E2DDB33CE5E95D9778EA7F6C6F95A73C42
-:107AA000B3FB4A4FFDD907977BCA737A3FEDA93FD5
-:107AB000EF95D59EEFF3FBD678BE5FFADB0D9EF215
-:107AC00065FD7779EA3BFA7FE6BE795394CBA30F45
-:107AD000ABF7E3EF03B9CF1D67DA15E7DDAFF3C707
-:107AE000661DE38410E5F7E9CAB8BFB3F2862F70CC
-:107AF000FB4C5D68E8286F5645B97C5D9F67DE8E5C
-:107B0000F2B532AAD23E2187793D397C05E923932B
-:107B1000763039359BECB681EF18AFEE68B016962B
-:107B2000B8FC5A01AD13304FAC325A43F70A3AED64
-:107B300065CD04CC9F5B15D5B91EC4AC5EBA2F4091
-:107B400067ED5DF36276225D31D1CFEC48D4FF075B
-:107B5000EC443987E2C3CC4E243BD20872BB11CE31
-:107B60004AF4DDF88A40F7F8333B90ECC867C2CCA2
-:107B70008E9C89765BDF169443FD3F9529DEC8FE17
-:107B8000C84E2C6776E2E65CB7BFBCAF089F69D0F1
-:107B9000C6E3B347E916C71691DDF8CF48CF9FD9A2
-:107BA000F8521DF63BBD9CDFBFD731A6368EFA7466
-:107BB000475117F1497F91CCF7213951EAF6031E5D
-:107BC000B0F7AB90FA2DB257D93A905C76D6618B6C
-:107BD000D097C67B0EAD2F04C92F3EE937FEA3C850
-:107BE0006F6AB13A01F3048DFD8A89E3DD6BE3B975
-:107BF000589B59853F0759125FB60F9F17E84C1FD6
-:107C000061CFD2D27BF6E1F37B51327AE122E3E914
-:107C10002A9431EA42EEDF966728E92601FDD20C6C
-:107C20008E2CF689F394A23BF8BD4025F21B487FC9
-:107C3000681D9C6353A8CC5329BE1C40BA10E84968
-:107C4000F4149043B4BF04F0B02A962B843486C455
-:107C5000507FC5BCD1CABC1D44078E5E8BFA6E92A4
-:107C6000DBD10790DE62B5DEF50FA9DF263CB5D883
-:107C7000E7A23B72F543556CDC8E82E23CF4EDA248
-:107C8000DF65994BFE1CB4F7DD477344474F20F97D
-:107C9000B30073190A06F522C60F3BC429086F8288
-:107CA000E2F0814312D9FD81BB3BE97758039AA5E5
-:107CB00003E9FF968EFD5617AF243FE1FFC466919E
-:107CC0001E1CA8FF5156BC05FA2430670F8DCFE863
-:107CD000050F903E0063823AEEB3F5B1A0B9338B45
-:107CE0007D5017B1ED9F498EDF3341E7625BD12FA5
-:107CF00017C6AD4D15319FE7F69F1678EC9ADB0B52
-:107D0000B81F73A8F103CC1E4DBAE0DBC4FA4539A5
-:107D1000DE7A76590DDDBB8ADB4C399E1B2DDB49A3
-:107D2000FEFCB3CD3AE67DD5D9784D61320FC3DF85
-:107D3000240516ED447992C7F42386D24ADBFFE28C
-:107D4000F86926E6F0F8BF6181C4FD773E67DF126F
-:107D5000CFE17D353AE8CA5CFB2A005281F9BEC604
-:107D6000FEAF07CF0F4EE970ED7380FB81B73C6D1E
-:107D700087B77C61DA5B665AF4CBA807AC00E0FEFB
-:107D80008FDDDEEF61307D186F19EFDCB39FE0E728
-:107D900009550601D2775957BAE76B6C7E09E73E61
-:107DA000CC8C7BF5A7EF4993FE7295FDBB1F99F72D
-:107DB000BD8FC7DF019941F3F2ECA3B37C12F92523
-:107DC000D09F64B8FC49259AEEB1AB1CBF50A65CAD
-:107DD0000F1EBF07D817B2EB937EBC37552B43FF5E
-:107DE000435BE1977E73A27CD00FD326A7DE3C4194
-:107DF0007E4EA67FC5B89F04FDD7B7FFF48EFF3E29
-:107E0000E1F267BE1B4DCE46BFC7FD93797BE75EAF
-:107E100055E7DCDF3B35F2F382CEE148BAE0B8B398
-:107E2000D4FA385757D2E3D08FE4F8611C7FC3F5FA
-:107E30007926E9E75B8CA3A9FDACDFAA5FFA01FB19
-:107E4000592C1D3AD880F26EA24C7925DABCB58F38
-:107E500004D1EF89DF59B9AA481F4BFCF1A28FFC6E
-:107E60000EED36DF3BE7571DBF4D2287F347AD6D63
-:107E70000FB09906ED731B41D4932FDECDD6D0B34E
-:107E80001F72BFA1E31F9CDEE5FD7E111E0527FFCB
-:107E9000E84ECA8332E6F33CA8312BD3FB709D3FFA
-:107EA00066AF33C6B72AE70EC659C7AE4AEF433DA1
-:107EB00074869DCF54F6E2F3F493BF20154A485FD1
-:107EC00017611E136B671C903DE746C68040F94062
-:107ED000638E49469AF533E359EFF73270958B106C
-:107EE0003E6F39337EC5D4ADB76F10F0F7535302F0
-:107EF000CAB3ADAB988DC0CAEB72EC3CA40BE002E8
-:107F0000A4DBC552D8C0FBF536FC5CA23C64FF89FB
-:107F100069BFC0382ABCC4F32EB5293C2EABFD4442
-:107F2000329804042D0433678607E35D5F3D67E004
-:107F30005DFB037EB4C7D9BAE33EF404B3FB4B7CCC
-:107F400068C76B54EE62763F969F61763F3EF7308E
-:107F5000BB1FDF7F8FD9FD58DECBEC7E7CFE90D936
-:107F6000FDF8FE5966F763F9C5DCCA2D397330BEDA
-:107F7000554AF4149CB987F21EDB559F86F4932969
-:107F8000CF2A2B6F575730FC6E0E2FA6784BD56239
-:107F90009E77BF256731D9D303FEBC0C7FE8A07F55
-:107FA000AF4F70FC7B78043A6EDBB3037ED2A44102
-:107FB000F71B8CDC8FE9F4437ED6F3FAB1FDAD6F8D
-:107FC0007DE1575F6F669FD6CDD9DE112CC6733F1A
-:107FD00029FEDDCE3FCCFCDDAD757B1A291F501983
-:107FE000772C85EBBAA73C4CFA06FE2E13CAED4C53
-:107FF0003BD1B10F33F571E799B91F66E6CB446CFD
-:10800000BD64A4FC8D6DBE14C5B7AD46265F70BFC0
-:1080100068482F7CDD77BE7F77B29697714E99E7DF
-:1080200067F90FF2BCBD0E486AEEF93BE723C8E6DC
-:108030002BE67E46B77F375892A6FB1B826193F4EE
-:108040004581E991A4576A498A17B60DF1FBDAA771
-:108050006C39D138EE1ADAEFDB5EF491BE556DE77C
-:10806000C9358F53A9DC3C6E6E9CF22B2373D5BEB1
-:108070002CFD6C88140FBBBF4A6CFFD787D9FF2536
-:108080003F3F17D6BC6FBE8AE7A73AC2AB7BD16E23
-:10809000EF88C7284ED0336EAEE77E72295E41F777
-:1080A000594861AE674B7195F46C19E75F3658DF3C
-:1080B000A9773087D30F6373F26306C29D54CF2F25
-:1080C000274CF4B7F8633C0FD9AFF1B862B0440461
-:1080D00035CB798D1EDB2FDE5196D4D0AFD31197DF
-:1080E000E9DC47873E6BA8B82CBFEF42F3FA079B49
-:1080F0006DBF43739D427A61A23E57ABCEA7730B0F
-:108100006790CF3BC24D2AC669FF3F82909C4F00CB
-:10811000800000001F8B080000000000000BCD7DD8
-:108120000B7C14D5B9F8999DD9577637996437C91E
-:10813000E6C90402060DB8818487C6380991A222D7
-:108140002E0235B4B42C0414E415D1B6ABD5B2214B
-:10815000098F2025581F282DDD50B02FBD8D96DEAC
-:1081600052ABFD6F04B9A8A8A97A15FDA146B43E8B
-:10817000EECF6A04BDC547FFFCBFEF3B33C9CE64F9
-:108180003604B5F77FB1653833E7F19DEF7CEFF347
-:108190009DB38EBCCA60CCC758CB3FC5862E2F3C42
-:1081A0008B18EB8127934219AC9C318F2C3096CDE4
-:1081B000D869FC73317CEF76ABAC129ECB1C717727
-:1081C0000963E168454EFD44C6166685990CF51CA9
-:1081D000BEC5720CDADB1953B13FBD9DFE0C627F48
-:1081E000558C89F26F6BDEF20FFEAE3FC5F41D2C8D
-:1081F0008270944A6FF7BA18B3294C386D8332F302
-:10820000CA6F9FC7E8CF6911FFEE09867DA9FBF110
-:10821000B9FEADE6AD8983DBAD2AEF75880A639BB5
-:10822000F7748419943F131482CBCE626A01CC6B2D
-:10823000F5FEEB5904E6BF55EA71C900C7D62F8495
-:1082400085E1F2C1FD2FD3F003088B219CF0C776A6
-:10825000FA7CF85B618A63126305F866243EF9775D
-:1082600018A5FB34F45F91807299060FFC7FE261E0
-:1082700063B9AAC7589E7CD458662C640F8F63ECF0
-:108280008575D0E9398CCD39F6DE3196CED8DC58FB
-:10829000E8F147038CE5ABAE705C666C1E0B3DFEEF
-:1082A0002A940B1A3C2C1182C16D6C19AE0B4CF345
-:1082B000A55280AF8111ACAC60591A63AE81FEBF8C
-:1082C0002B67123E1A7A17CD64E319FBF1CD2D8C82
-:1082D000413FB13A21BE17E09F5DBF67F62878DEC7
-:1082E0005B692BBA0F1B45EC6FE1FC5CD0D9699838
-:1082F0006FA6EDFA1123A17E789A4768817A3FBE76
-:10830000E0DCCDA550EE993E3A8478077CBDD53FA0
-:108310001FC0FFBC306FAF8FFF6CE589B9A3E0B918
-:10832000B3F2A1D9F89C935C1FFA9B35A5B3D90190
-:10833000FD5DB9529980FD85EB8DED0BAA8D6580B1
-:108340009CD609E7EBCF1A0CEF99E0318FAFF777A6
-:10835000EF3A85F0CFBE007A007C86F113B40F4B64
-:108360007D5208F09C5F2DA871A09B0255503B2DBB
-:10837000F8619B463F66FC8BB10C867C56374F8C70
-:10838000B743957C979DF09F3F53882B307EFEB27C
-:10839000BEC469287FD3658F8BF03D2BB34BC0EFF4
-:1083A000F7AE64ACA384C04BAF4D5ADF7B5D6DF676
-:1083B00062F83E2F4F6436A003563D8AC6233846E6
-:1083C000123E8E737CB8081F052B438FFF0CC6BF6F
-:1083D0007A8A5316A1FED50DFCBB0EDF5609E80CB8
-:1083E000BE6F053A8B119D49C793F133E7D8AA5563
-:1083F000488F734CEFC7CA8CE8EAEF538F8E29067B
-:10840000B856091D333C008ADBDEC4182E346010D8
-:10841000E95AE7471D4FABF635133F26F199FD3476
-:10842000F233FE3B8750437CF698EBF732CA8DBFA0
-:1084300064F6EE6440C2BF9059ACBE9AB1FF93D6C9
-:10844000779E00E5DF74346CDA74117C77F7FD9663
-:108450005530E6DCF89D19338A06CA69EDCB67CC46
-:10846000B808FBE3E3C014627CBDFBC725FAE893C0
-:10847000397C5B54B65D84B26493B7874A06DA658B
-:10848000613B61887661B65DB268E7D5DB019E36F7
-:10849000C0FAA569F34AD3BEDB347892C797106F50
-:1084A000B2E215603DA4E9928CF4F255E1C839D3EB
-:1084B000BC236CBB7DD4E0760076B30EBFCD1AFE34
-:1084C000387E4F1EDF3E04FC5F373ECED49F43FB19
-:1084D0007ED6F041F5F539A9E78B70D9515F298A2D
-:1084E000D796D4CFB6EE4F9F3A1F88579ACF426E99
-:1084F000E843B2AB7208E8BC5CBEC3859D4B99F5FE
-:108500007204F86133945578BFB9ABC3A5C0FBF2D0
-:10851000D2DB3721D19727D218CA83714CCEBC1F2A
-:10852000FA1D274B2C81AB76D1419B07CAEC0A166A
-:108530001A0DFD6674A7913CC92CB9E017028C9BFB
-:1085400099E952B1BD2773D22F18D10753A4247CC7
-:10855000786A5FA8F3205CB35908595112E2AC164F
-:10856000996C2C637BA19C79C91E560FE5097FF796
-:108570002922F2B4C4F55D3BB6473DDDCA0EA17EAB
-:10858000C9D3E4CF2687BC9DF4C7751243FDE1191A
-:10859000778780F0DC0B5D89C097E5E559B3EBA1E7
-:1085A0005C7EC41652149C4F87508CF3098AA4B782
-:1085B000747CEA7264C24709CEF463597C2FC0DF31
-:1085C0006A8F27505EC5A65E2DEF0578F29724C905
-:1085D0006BFCAB0F7080F03E7DD5DEF612A46FE928
-:1085E000ADE4FE323E8A27509EB1DA8630B60FCC1B
-:1085F000940CF23F4D936769263DD09A65273AD196
-:10860000F50153254586790BDABCD98FC2A40F9C9E
-:108610002CE47290BDB280EC1081F50AA73D307F4A
-:10862000AC887017F1790C6A3F89B767C1900BED80
-:108630001C675A5313D6878F59CD805CE1BA341525
-:10864000F5B3E060AEBC09306F1B8B74019D340B39
-:108650004CC2F2C0780986E3395D9E56B4BB1E73E6
-:10866000B5D8107F2D87417FC03C36DA19B7FFE4BB
-:10867000902B0BDA4735FB6D6DC5C85C2C67E4E8C1
-:1086800076615846BA5C9B5D9A8BF661BABFF7DBA0
-:108690002867676EFFE30C17CAD53AA87301E89DF7
-:1086A000CC8736C540EE3A4F153025C9CE734A4DBA
-:1086B0000CED29E7A962C3FBC43A98D1390365D50B
-:1086C0006BABC771D6642A84D75A26B762BB5A40AF
-:1086D0008692B42ECE53794C9968D57FA1E17D0264
-:1086E000EC24C5399CFE3D4C294BEE7F548AFEC7D5
-:1086F00098FA972DFB1FE8D76FE8B74D626447C71C
-:10870000025E5A77B35DB031B3EEC64CB4479DAC50
-:10871000A9CBC2EEDC906923BADB186CEA51A17DCB
-:108720001D03C6073AB9F88BE322237B06560AE8F5
-:1087300085154A7DFD743C12EB71FAB5C50486724D
-:10874000E962C96EE0931A662C9BEDA27361AD11CC
-:108750005F365F650FD2CFDAEC34C56901BFFEEC3E
-:1087600059C76A4A47C37CD3C2CB18F0F1CFB71FB1
-:1087700076B505A19CCEE9E481EDAFCE88C1FC7A47
-:10878000044E7F6D011BE1255C97DB2926F51B76E6
-:10879000B0D12817C348DF5E0E0F8EDF935DB8BBE4
-:1087A000DD627C10BB06FB61B62AD49426CDAB47B4
-:1087B000B383FBC79B56D0897CD03F9E9355D1781D
-:1087C00022E03F79BC9C2F37DE5F717EE503E3CD6D
-:1087D0009E6E9CDF6C874CF39BADF1AF3EDE5F710C
-:1087E0007E255F623C9C5FF278DF30CE6FB653A689
-:1087F000F9CD16397DF58F97F3E5C6EB59574676D7
-:10880000F04607C827A093B48A7DAE5130EE469754
-:108810005D16948176B5B537B8E6A2EEF54E9B9E0F
-:108820000DE3D45D0295F3B19769D36B4B19DB2E41
-:1088300070BAE8CBFCAF4DE8479E9CB9B68CF48982
-:10884000665F5F8955411F5F29717867157AE3CDAF
-:108850004978BC17E4880A70FC14F85D057EDC05D5
-:108860007C89E5F8BA203D7783BD8ECF3D002F7E11
-:10887000BF6F5D88CABF5A37859E7A3F6553B8DDA2
-:108880003EB6DADA6E3F2F8BDBEDDBF3E4F94B50CB
-:10889000AFD5A685502FB229173235D9AE664D8F88
-:1088A000B9E1FBD66FB20AD48D637670B803F5399F
-:1088B00064B7A7551CEC5907E58D925D41BDBC51CD
-:1088C0006133ACFCE631A867603CA793B7671772C9
-:1088D0003F2C10EE3D887A6F0EDAE980D7ECB9BDF7
-:1088E00007D1FFBB0AEC72D2CBEC8D83AFC2F71776
-:1088F000C0FF6BC7B2E865329467CDC9A6F1E14FFE
-:108900007A6D0EDAEFFCCF4F669E20BF22ECE67A3E
-:1089100021C0663FDE8DF0861C4A9CFA6377869103
-:108920000F54BBD24EA2206C473D9D8D7A1ABED704
-:10893000BEE1643684EF1207C9B5B9738D7EC37684
-:10894000774246FB677B45803543FF57CD347E77C2
-:108950003A39BF854D7EC32C5319AC2DAE77C50572
-:108960001968EF6FC4575307E32D7AAC79E3C1243C
-:108970003A55B27C81B73DB8106C0CCAB34F58F968
-:10898000B67AFC589845C68AB9FD3FD6C5361E044E
-:10899000D4BF80720FE5AD83CB8DC1FCC1E1A9D1FD
-:1089A000E4E3BDEB7A6ADE1A3D005FBE1417500F98
-:1089B000142C83F749F395027101FD1D26DE5F81BA
-:1089C000FE8D791EF70AF7E7318BF1F4673E93DEEF
-:1089D00046BCE052A23C37CFB766D07CAB9F2D653A
-:1089E00056FCA46C477B6ED66131D4AC0CE0439F3F
-:1089F000FFFF345FBDABE19BA90196007A7916E8D1
-:108A0000BD9DFB310CED549D5EA102D94F575E090F
-:108A1000DF912E54B508F1F9ECC8BE3DD7603B900C
-:108A20001D2DE8EFEA7650E2651BDA415FB6DF2BD9
-:108A3000AF7390BDC558BDFC76D9407FA9D607FB62
-:108A40007D3B497FF6DB89F8679226FA10C6E6502F
-:108A500090EC819BC03E467F3F5AFF9E94CEBF1F45
-:108A60004FB253F1CFF1A4FE5ABA7F2D280057E739
-:108A7000BAAE9AB7EC03E3962C936D6D68CF35C709
-:108A8000058A4324A01ED803239729B656C0FF1297
-:108A9000EC07E9D324D747B6423FC9764AF55CF9DB
-:108AA0007EA087D6F2BA8E103C37EFE0F132BD7E61
-:108AB0007FDC2C1023FFDCCE9A9800703ADC3FFA62
-:108AC000792FCC476D9198BB06CA766EEFB0577D73
-:108AD0002417446FD32FF17B3006720BE75DD7F478
-:108AE0003B2CC76C2CDC02CFBB3DBC7D5472C94E05
-:108AF00058BF76B975064E3F272F726F168CD796E2
-:108B0000934672D0F19A6F37CA2947E6846568F7B1
-:108B10002C88FE308CF148D9CF16862DE86B816603
-:108B20003FECD5E8EC983D519409704FCFABDB9BFF
-:108B30005565513FFA23EAAF46B4B6C31ED5FAD9FC
-:108B400069B3960BFF9EC5E39D57AF7AE8BDFB6006
-:108B50003E9E526F08C96DF3F96C9F601B5CBF3B72
-:108B60003BF287ACA478ABBB5496280ECABAA6A237
-:108B70003DB7F9F39F76FD0E509EF5B997E46C96DC
-:108B8000E88B0B2586F68F26CF436FFF974F5F0C40
-:108B9000E2FAFCC5CD48BFB2D8D397AA18D7D4CB38
-:108BA000F046C072A65EFEEDA5E86F0E94AFB9B4B4
-:108BB00016CB48BB409435FEE866D4CF5B05A611C2
-:108BC000F14DBCBE9DD72FD4BED75CF6FE2FB6A10B
-:108BD0003E98E4203F74AB6607E9F0A97E91F0A3CC
-:108BE000FA87C6E36B1A9E5DC3C7E36B567838906D
-:108BF000A7BE8EF875B32E01E9D8FDB9EB466C7FA0
-:108C0000CF3A165E02B0EF54F6FD7A9B42EDDFB626
-:108C10005A87F3F3D477B2088EE3BFD80670F8749E
-:108C20003826B31B53C0F1E150EBF9A71C2EE7BE69
-:108C300015E0CF2CCDDE74387A82B3E12957DE758A
-:108C4000830CF2664349578355FCF9333FF70332EF
-:108C500053C4DB037E4E7FDDB9E1D30847ABFC9004
-:108C60000BC74F135818EB6F99D2CB84A47E4301E6
-:108C70008E6780DBE987766953998A74E663BE382C
-:108C8000033AF35572F8B7045F600AB4F395C1D3A1
-:108C90008BEF7B89FFD1E5E0F400820ECA0E8D3E9A
-:108CA00002FEAD97A29D9F25EAF457D48EF4E2B060
-:108CB00069F563459761B9338B9727DD51D41E2B36
-:108CC000043DE380362817F21D64EF98E75718E05B
-:108CD000F3DB96ADE6FBB32DF0E9ECA575DA3ACE01
-:108CE000118AC1BAD6D87A1A1AF1DB655EB2D7E01A
-:108CF0007D433C69FE976BF8BADCCFEDADAD9FBA12
-:108D00001AE216EB918A4E276AEDCF824E27FA2D92
-:108D1000E803E8B412F19F44A71F336B3ABDD06F4C
-:108D200041E740A7D5F8DE8C0F735964EA8E450001
-:108D3000A0F4D9F45F6D436D7579F58EDFC1B3E6AC
-:108D400073AFE4873AE2184676A2CDC5E5FB80DC36
-:108D50008F5C86704B7213BD17BD61DAAF792E2B15
-:108D600045BF9327ED40B9358C7EE721DCE67E4B8D
-:108D7000FD8CD6A3E6326F246E81F77FFA256E1F35
-:108D80000778BD54FC322E60A3EF29F945A7FFDC1C
-:108D9000F05284E34CFC523FC02FAB86C72FFB88B8
-:108DA0005F3CE59C5F3C29F80523D1289F3794F070
-:108DB000F28FFCB9C40FFDFCC3CAE87B3FFFB0B221
-:108DC000CBB0ACF3CF658132AA6F6E9F8EF3B6C085
-:108DD0004B9B5F9F47B815D7553D4F6E15C9DEE8D1
-:108DE0006528A73A595FB713F9B05A08ED85B7B3AC
-:108DF000623DF52E05BFF7B0D9607F6CD5E87E17D0
-:108E0000C283FED0242D9E25F5B0AB7C83F9D857C4
-:108E100099288B24E17FA486C76F07C277E0F89D6D
-:108E2000AC772CDAA5A9D6E91E6DBC9B82EA3D562B
-:108E30007C7F26BDF328EA9D6C7CF27EB23E7735BE
-:108E4000A11C30F379CDEA87DFBB6F887E1ED6F098
-:108E5000F6D0D9F3FD4329F8FEF726BEAF14465AE3
-:108E6000F2FDC329F8FECF567CFF15F8FC3FACF8A5
-:108E7000BCD33F3C3CBB035CBFBBB5F5FDB2787EC9
-:108E800047C3EFEBFEB3B6035EB7C213E0B9779802
-:108E9000787EC76A9D00CFEFFA69BD6D31DC17405F
-:108EA0007E47FF7DD3E4581FEE875AC0D197DC8FF1
-:108EB0004BE1FD8069FFB100745EF3D9A650C48216
-:108EC0002FA1DD3F92E1D7DBDDE397B5B8B3723D6B
-:108ED000DAD53B2FF7F2FD846CF5732B7EF80AEBA5
-:108EE000EF0C58C8E31A1B9743DFF6BF4576DE57F1
-:108EF000E8DF6FD5FF331A7D9D49FF8F49D2FFD838
-:108F00008F59DE75321E4FD9961D290910BE7A2F52
-:108F100045F9B4EBE62C01FDBA423521A0FD9FAF27
-:108F20008D77BB5F21FAD2DBED92128284F59B64D0
-:108F3000212618FA3B6FA8FECC70007CE30324DFE7
-:108F4000D4F3F1798FA6CFCED61EBA30A84E0E70CC
-:108F5000393D15C757CF31CA697D1EB67017EB452D
-:108F6000FD02EE77DC82AEF2357D09FDD4513F9AE9
-:108F7000BCBF20206BFE29EFEF6CF50DC07739F6F2
-:108F800007FD5E61059F192F6782F3960138AF0ECA
-:108F900058E825737FBA7FADAF13E9D3A4B8CE12DA
-:108FA0008D5E80AF1A113E579B2DC60203FCABEBC2
-:108FB0006B904C69D8FF4E078FA3EE5C797B2DE652
-:108FC0001B74DE2257204AF297713DA7AC2CA6B83D
-:108FD000EA6AAD5F33FCFDED1D5D632796D3B86B88
-:108FE00071DC8BAB5902E54606DA09147F90258CBB
-:108FF0002F64393B821897DD2C74342C463D7AA9B6
-:1090000097F42D0BCEB58C4FE94F3DFEA4CF9B05B9
-:109010002BCF50BF99EACB9E8E26B493865DDFD9C5
-:10902000616957FD44B3AB607E3F1E12AFC100C5FE
-:10903000B774FC0E1E87AF5F6DB849407CA795C31F
-:1090400090C09269E10EDA6CB595C6592FDA4F657A
-:10905000402FD4DF0B9671BF81FE36E8707522FD7C
-:109060007C55B8F47AA9C7E3F570FF8CE21D5E2E3B
-:10907000B7E803944F1CF65BEE1FE8CF8DEB645509
-:1090800002FD73425632305EB851D383E09905AF8A
-:10909000F2FDEBEB0DCC23CEE39DA6FA51C6E99E83
-:1090A000055D64DF61183E996E8E6A74B02D27FCF1
-:1090B0007480E4482884740DE567495EBAA0ECA387
-:1090C000F25FA92CF7979FA7FA415E9FC9F2B0F013
-:1090D0000CED5EA176527F3FC7A8ECED1FF7351A65
-:1090E00027D05FEEA5EF85BCFE70C7495A573EFFFB
-:1090F0001E91E6FFB1A466E0FEE837A38D14279A1F
-:109100001F5D4ECF4DEBE45A8CC73DB3AEAFB515E6
-:109110009EDF9CDF28A3DD3F7FE94F68FF5EEFFF06
-:109120004AF42B90DF156906D94525B6F01EEF00ED
-:10913000BF0DC0D1AAE9FBDE7AA42397CAFADA2BC5
-:10914000A0FD948F5A5B0D794E1D943FE356A4CF3A
-:1091500092E3EABA1CFCBB433D1D383B3A36CD973F
-:10916000B18330FEC7DED2788CE8BA4EB6E2177D06
-:10917000DEA9FAD7E79D4ACEE8F8D3DF6F2E9D200F
-:10918000F3FC9FB8012FEED1F594EF73A5A0C1E9D0
-:109190007369FCC6EBCD82711E2A27FA50907E6758
-:1091A000697E9C592FE8E3FEDD1119938DEDE0CD2A
-:1091B0002D132CF03B4CBC1D5DB72C5C6F4779DC4C
-:1091C000E5A6FD7B26539C5FAFD79062FE75D95C08
-:1091D0008F30A74AF3D9726B461CED8E2D8BFE2083
-:1091E0006370C533EEE32ACCD7F4087D9F2C46F993
-:1091F00072AB8FF2311A167D52D59CD4FFC2037F19
-:109200007261BCB761DCFA6C8CBB2C64D2C7C9F943
-:109210000EE6711BA2AB896E63CD428395BF752CA0
-:1092200087F3F5424C9111A9BFE3C9FBC88B9409A0
-:109230000E8C4F2C8A19F77340433A903E1A379997
-:10924000DF27EDE788D83FA379C770330FF55E9B22
-:109250008DE86D27E00DFDC0625097F83C9693A510
-:10926000F1410FE1F35F0DCFB11C6E0F395D2CE6BC
-:10927000C91AA09BDC480743FDE4AB14687F33E0C8
-:10928000D3F323BA484FDDE1D5CBA0B700FFE1729D
-:10929000CDCE29E5DF6D5846FFC7D373D0067CDC01
-:1092A0009EFDF865C1B1D05F79246893A9FCA44400
-:1092B000F6212F33F6F89307C99E95CF1542C0FFCC
-:1092C00052F793878BC89FD7ECB1EE27C91EEB2FBF
-:1092D000B30483F974A6F597555710CA23FBCB3115
-:1092E0002CEFD2ECF8F6ECEE275BC93E09B7652708
-:1092F000E9EF5AC6E3CB5FB77EEC0C2EE9C07CA247
-:1093000058A98DFCBD34133F3E98EDA07A637223BB
-:109310007767C373D62D7D12C61B1C792F04500EA0
-:109320008C283DA18E04FA1F51CDD36458191FB764
-:10933000B3742DD90D9DDABAC0FFD6A3DE1B589F9A
-:109340001ED3FAF0F50857F6D0FAF8CA7B68BD6C60
-:1093500058A6B81FDF8FBFA292DB1BB293EF2BFC86
-:10936000269BC75DFF942D6A4FEE976694DE4EF103
-:109370001DF70C1BD5CFD09E6639FEA76CC9A05730
-:109380000EE445FE909D64B7C2FB705925CAB740F4
-:1093900016EEB3D6964A37223DFF5CF34F619DEE41
-:1093A000A0752A09A445F8BA3D62B96E65C35BB7DA
-:1093B00017D745485EA55AB76FCE17C35671B76722
-:1093C000353C7CD0F0B7BB902D57B9FA1CB80FB321
-:1093D000B974BB21AFDAB56F760273A1F5BCEAF5BB
-:1093E0009EF46A94DBE6715FFCE23F0288DF999F9E
-:1093F0003A2DE5E37F6BF2F185750DD40E16589189
-:1094000072480E309EF7D29F27269C76D2F45EC417
-:109410003CB4EF12EB333637FC06ED572F0E8A0CB7
-:10942000F7C71732635E198BEA79C13C0FF645091D
-:109430005C5340E18B31210498628BA4D9BA5C3132
-:10944000E487CD9B3BFB10EEC3376AFBF0205F0C3B
-:10945000DF979AF2C6AE6E5814AED7BE9FA4BFE394
-:1094600034AFB90AB71BE77ABDA45FE785E787EB9E
-:1094700093F6E35EFAA76899875E97A3E3251CAE8F
-:109480001F3D182F8BC3824356CE8C1F333E6A2557
-:109490008EAF451ABECCF831E3A171EE6C5A7FF362
-:1094A000FC5F7485093F2F027E305FD88C0FC62287
-:1094B0005720DDBE345F64681F4F1767DA314FA055
-:1094C00071B6C030BF68290BA5F3FC6075D625497D
-:1094D000F09AF168C657E3A32C94807E1BEFF4D179
-:1094E000FA3DA7E1474C7C48F30AC3BCDAF9BC8ECD
-:1094F000F3FC5599E675955AF17800BE475A41DA62
-:109500002A567A84CF6731CCA75D1EAC4F3E61D519
-:109510004D48274B4D790B66F8CCF0CF4439387560
-:10952000F03EFEE41C5F80CE2F8C67216D1F3F83D1
-:109530008E3584B287CC5B18E0734E5F0BA3B3FB10
-:10954000C7C37E0516E92FCB80DF994FF8B7CE83CE
-:109550007FAF0D8A0AE609CE9E3FAA0DE71F66E19E
-:109560008C4409DAFB7D76942357313063A1DDC545
-:109570003049D4B7E17A3795F57E4F747C64273D46
-:109580001E614D7B69FF5DC9983B2EB57C591B74EC
-:10959000D078663B6566C5E80C9417667CE878FA77
-:1095A000568E96DF309E8D3F1BBCF4A0EC457F1697
-:1095B000E368B08E7DCB19DB5D31B07FCC0A556E90
-:1095C0004FE630DAFF5F9D93A9D91D4D147758A05F
-:1095D000E9856376D6F0A097EF234F48928F0BF37F
-:1095E0006A57E724C5FBF47D642FEB25FC7DD7E5A6
-:1095F0004D88E389EEDEEFA70F925F7ABE6684F2B4
-:1096000035C58C950AC5C53CE9E35906D8C58CCF4C
-:109610001BFC989B7230AEE7298EA31130F3895F53
-:109620006C9AA70CACDBE6257B3B105CF7D2DFC75E
-:10963000A87385E77378B475ABD5D6ADDF8E2E836E
-:10964000F749F83DD1A1D961655A1C1FFF40F94483
-:10965000A91A1FCA7FD5D7D15D06FE87218FB08397
-:10966000F0A7AF2738117DC89791A04439C336E6DB
-:1096700022FF387213CFC758C8945D981FB4306A60
-:109680003F91DC4F244F2238229BDD5ADC2444FDDD
-:109690002CCEE3FDB032EEE7F5D37D0CDA27E53FC3
-:1096A000DA5C604A62FB4C1642FF09FACB417DCF7F
-:1096B00036258D3372F0B8A9FA33B713B5FD5BD1F7
-:1096C000190A8592E4F46F72B89E3C11ACECB28D2D
-:1096D0004C8DBFC52EBF2A25E5C51ECF733558C595
-:1096E000C5F4FE74FDDD6F27C6963F956C277A376B
-:1096F000343E75F8A2243B31D6F814C515F5F2595D
-:10970000DA89CFDFD5F8542BCCEF1FAF7E83F2C7B9
-:109710004F3481C0043CFAA3D3D89B7E940F32E926
-:10972000AFE206F0A830F95B52C622BDBBA305AA82
-:1097300094942F7B2C4721B8FDA52AED9741D32E79
-:1097400074C5FD524840BCDDAEC5CD8070C7CEF6B5
-:1097500025B7E37E883E9ED325131C0E7D3C166AFA
-:10976000A6FCFA998CF4889E07A2F3B5DECFBB392C
-:10977000C678DD30F8F9DD9CAAC1FC2C8A4DAFDF3C
-:109780008A72E22991FCB0EF046FA2F7E678C089F3
-:109790001C6E1F8E102327502EF4343CFF9D1F405B
-:1097A000BB35FB9C2154C3ABBEFFDE8FAB14C4138F
-:1097B0005FFFF94B1BEFACC2798D9664DADF28E2CC
-:1097C000711847B340FEABBBC411DE07CFB703B57A
-:1097D000237293E07A3B504FE59133385C27A0CF5A
-:1097E0007605DB6D6F207FD1C7F7BD4F280A9DEF4F
-:1097F000133D8CEC09D1C99F99B9DC2ECDCCE5780D
-:10980000766B4FD729811609E9BA09F72DA418E517
-:1098100041BB4E49F4DE210896F69ADE9FEB140810
-:1098200067C497C7DCDE41EF713ED85EF433837DB9
-:10983000938FEDABF0C9E9DD75CAC3E1F09BFB493D
-:10984000E7EF35FE33C37163CEB462C4CBDB017581
-:10985000442E8F6F7339EC7DF2A8307E38F298E792
-:10986000EB5F9127B928AE77AB101F0DF2A9BDECC5
-:10987000441BC9AD1257139E934AB29F047EEE86D5
-:109880009FAB18B04FFB2E995389D16BA6DC1B1AE6
-:109890006C6FBD5EF9C9BC3958D0CE4F7C5797BDAF
-:1098A0003128833DF79A565CA48CDC80A1FE2BAB5B
-:1098B000B97DD688F65988E496C1EE32DB675ED072
-:1098C000F773802E96062519E9C26CA7B557CE23EB
-:1098D000BBA61DEC1ACCD71E6CA77179735BD4C6DE
-:1098E00054A8F74CB5487EC63365BD4F5C8CFA6210
-:1098F0008A5D217D51D677DB1CFA3E91C6F16AFE66
-:109900001DD4E7E71D429EF86878F76CF59BDEC62C
-:10991000A4F57E66CA9B63D12FD89522BF428FD310
-:109920001CBC99E77FBD7E87107722DE6E116DD853
-:10993000EFC20A1FE5AD5E227A699CC6AD62DC49C2
-:109940003854D32FC919B01B99589DF33CE2619B41
-:109950009DE1F9C1A21B7B0D76EEC2A8D19E8B348E
-:1099600081FDA39CBD1D68B6FFCC76CCDA5CCDAE84
-:109970009BC026A0FDF2CCBAFDECCDD10376CCACD9
-:1099800014FBDFBA1D7381ADEEE65C1E17A4FD83E8
-:109990005992F5FEFE559A7FCA42DC1FBC447C9F5B
-:1099A000D6EB444852107FDE9B9EA4731DDE7F8A57
-:1099B00061ABF1B6E7727F7C978391BCDD35C14323
-:1099C00079D7DD379F9BDB4BEBA5DC5D8DEBFFA4EF
-:1099D0009DE4602AFDE68E8AAC1426E68B0AF4D458
-:1099E000D77344D4CD92F5C38814790ABB73B9DC1C
-:1099F000CEBE85D9D0CFCE8C31D5CA2FD5EB813F05
-:109A00003A1D63D4503F9109F0AD2EB551DC5FF79C
-:109A10004BDD767EDED7FEC8F531F44F47007C087B
-:109A20008702F0A11C2E897AA83C32EAA7E7A86831
-:109A3000263D4BA305F47D7474143DC7444BE8FDEB
-:109A400039D1F3A85C169D48CFB1D10A7A9E1BBDCF
-:109A5000909EE781DEC27AE5D15A7A8E8B5E4EEF18
-:109A6000C747E7D0F3FCE86C7A86A2DFA6EF15D1F2
-:109A7000467A4E882EA2F713A32BA85C19BD81CA83
-:109A800055D1EBE93929FA437A4E8EB6D0734AB4F0
-:109A900099EA4D8D6EA1F205D19FD0F3C2E8767A96
-:109AA000564777D2779D9F3D9A3DFD74708F4CF954
-:109AB000F62C518EF231151FBEA1E9856FE4AA4F35
-:109AC000A03CD5EB1DD1CE1D98EBBD9A3B74DECDED
-:109AD000D15C4E9F1F848EDF85C769F575DB1C1C2A
-:109AE0003A8EC0CA0367D8B7E2F33B9CCBDBEF9258
-:109AF0003AC8DED8D5C4281FCC57D923503E43508E
-:109B00009A61454799417EBE6B4C6EE45D9CA737D8
-:109B1000EFAD83B81F7565AC27300DE92514489B60
-:109B200006FD8D68B5917BAD3059C0B252CFE404CB
-:109B30001B88E7807D65D06BEEA04D8BFFF4CC9C3D
-:109B400088F09C5B3A81EC576D3FF9C8CD2319FA38
-:109B50001DBB1C09414279B996B1643B7CD786C5CF
-:109B6000F7259FD370071D9C8F36B1C7304E56D254
-:109B7000A1D4E179C2513BD4C730C573743C52972C
-:109B800006E5737E157B0C9F63BBE2751E789EB75E
-:109B90003FF118BA4FE312BD755E289F7F981DC034
-:109BA000F053458F32CD07E58947D503B84D52D5DF
-:109BB0001B9996AE203CF196748067D76B60684124
-:109BC00079CAFB1D22B82503EB0F76DB8349EBE254
-:109BD0002EED5145F867E18D7205CAD95D52AF3B54
-:109BE000B37CF0FA74E2BC719EA057F66AFBE8728F
-:109BF000D27A5405053D1E9817AC1A880776B63EF2
-:109C000047F1C0CE34B916435D7D973079B7827481
-:109C1000CCFD84B4B691A49F74BA03FC1AEC49B786
-:109C2000D6EFAE7E7BD31ABF55FFCBF07B50A3E7B8
-:109C300054F87D1AE79177663E9E1EE47615F07122
-:109C40005D303B75BD15412E4FCD78DE25C9E7123D
-:109C5000BEBCCC16AB1858B76B34FA3E135E23FF6C
-:109C6000CBF07A517068BCB24A3F8F336BF969A967
-:109C7000E4CD9114E744BEA7E13149CEF178A90CB7
-:109C8000726E546A39578B70650F21BF52E43BAC3A
-:109C9000D7E8BB3B3B1C0B669F39AE7F9B4DAEC5E7
-:109CA0007C97D878467E02D897AD98BF3322A64CD1
-:109CB000A06D2C14CA88C709E7919F5E02F686340E
-:109CC0008161AA63029F575466DA1697635E83C662
-:109CD0006FF2A26032BFE9FA7E801F75BAC8EAA4AB
-:109CE000731640AF984FD8ADE169A01F1E8FD87092
-:109CF000537E677B921CEC0C155059AF9F8A7E5F98
-:109D0000D7E9B7F539DAEFBFA2DA3ADFE4CF41514C
-:109D1000CB3BEA5391CE63354CA6F3CEADC7493E5B
-:109D200065827C124A787808C72F8CA6DD8771DAA5
-:109D30008783399A3F2EA77DD3F7FF8F9EB781AFD8
-:109D40004E7E66B5DC8DE72A46801E52504E560385
-:109D5000EC95A8E71CB4EE0AE3EBA854B3784220D4
-:109D6000BC25D06F8ED9F8F98C238E2E95F48E23D6
-:109D700053C6FC93EEECC813C121F842F62815B87F
-:109D8000A8AF0457CDF4E6615E8E9C86E597A07C73
-:109D9000DB14CC13EA655AF936EFD42F1F7F7865B0
-:109DA000C78A23B84F7561503D8AF0005DBF827449
-:109DB000AD9E234B141F1EE6FE93CE9F03FC24573B
-:109DC000E8FCB4A89CE4E15BC1A4FDAC54F6CD2E44
-:109DD0004D7E7E121CDABED1E9FEACED1B0DDE37E6
-:109DE00035B9948AFF673EF1FC8E3D6C20FEE7CBCF
-:109DF0007FB14752D0DE9EC6DE9C8871AF1E4EF703
-:109E00008CC7F9548CFF011DB82B5DA6B8AD30434B
-:109E10008BBB0C19AFD5E3C97ABC4F8FEBA56B7424
-:109E2000851706A01E4F9F224B8BA9BF5E7615E6B5
-:109E300037E5D90C7C8D720BF7E75D6D59D2C8F20E
-:109E4000817E196B2239D5D9C0E4F64CBEFF9A0148
-:109E5000F2A5633D233F2FF68C48FD9F546DEF61C3
-:109E6000CEF7C94A4020CA059529728E760E8188A0
-:109E70005C267A7532D685FE36FB51C8E5C038F7C8
-:109E800067025301EE239F89F49430C20D8DAE0812
-:109E90005584B0716D467508F703C537A10C70D6AF
-:109EA00067546760F9C89189216611BFBB3AB2C88F
-:109EB000105F32E3A9BFDE77DA285F61E719F63F6A
-:109EC0002FCA73E876E7E43CDCFF5CD2D7EA5006A1
-:109ED000F63FF57DBDBCD2872EC57B76F25672FB70
-:109EE000339FC59B93EDA6A4FDC5DABC2ADC4FEFDA
-:109EF000DF5FEC1993BCBFB826FF163CBA7F4FFF5B
-:109F0000FE62A412EBABFEAE0AA44F3D1FF688839F
-:109F1000EF03B0894F05140BFA5850F17836D1A3EE
-:109F2000E64F0CFAAEC5CDCC7EF09C3C631CFF64C2
-:109F3000684E46023FA688E3EBF13CDD0FC6789DF4
-:109F40006CC97746FCEBE32F10B81FCBEC02C93B82
-:109F50005D6F823C598AF88666148F569D02E56BC8
-:109F60009D0C352AE417A5902FFDFB062C31DA6AEB
-:109F70009F75819677627EFFA33CAE9716D8799C39
-:109F800052B87E6904C75D90E7129C4976D28A3C3C
-:109F9000AEC7F5FD1747FEA92AC4B3C31151ACE6FD
-:109FA0006DDE475981B66015C753C842EFA5C2D3CD
-:109FB000517B07EDCB1D5D2AD279DD9391C974EFFA
-:109FC000432AB9F00AD2CF68C6E6E5733D34B08EB5
-:109FD000D678D3F364CCFB55FDDF17B9E9FC8D3996
-:109FE0005FE6210D6F4F6978F957E7CB3CA5E1EFAC
-:109FF000692D3EA3C7B3AE4821EF2FB0D53D90C722
-:10A00000E38C43C665CED3F37D34FCB00363E95ED5
-:10A010008E2D3DF6B85B40786CB47FD9F09F620816
-:10A02000ED2FBD9DD7242FF4FC1DBDEC3925B07854
-:10A03000D23E8247EAA238A9E79444EFCDFC775B91
-:10A040005EFFFE22F19FBE2EA9D6595F17F3FBFBE0
-:10A05000B47539BAE84F413CEFB2C5CD2CF38958FD
-:10A06000BE31FE6ECE0348B5CFFD9AD6FFC9C8D427
-:10A070005C94CB0D8ED8E8E1F0BD8E9F17BFF8A39E
-:10A080000BF96CCB29E70CABF57849D34FA04F37D0
-:10A0900025EF83FAE63FDF8ABD7A24E33EA8AE4F80
-:10A0A000F57D504FA5791FCD7A1F740BB3968FA9FC
-:10A0B000F64107ED7F6AFAF6B3BC14FB9FE5439FB8
-:10A0C000673F90C78695F771B5839F9735BFEFD1EE
-:10A0D000F8EE646473D15DC057372C7252965262A9
-:10A0E0009193F8B071919BE2B28D153CDEDB78A7BD
-:10A0F000A0EDD719E3B04F83BC5809E33FABE99D0E
-:10A1000037597812DAA3B32A05C33E79B8DA6D2835
-:10A11000CF5FFA93A7F1DE8467A6D8158A3F435F25
-:10A1200031B40BAA799E2253FA6EC338B71E7FD67C
-:10A13000D7FF99EA37E91EB418D8F9A343187F1658
-:10A1400089BF9E796122BF974E18D80F57C04ED84D
-:10A1500072C128CAF778B9FC5B14E7DD8271719887
-:10A16000E9962FFE3883E80894720CF9757C561C2A
-:10A17000E563E3B80939489707C67FE6C3B8E8EB5B
-:10A18000B79CCCC675EA5DD7447907E67537C799A1
-:10A19000CDF1E5B38D2757E71BE9E169533C5997AA
-:10A1A0005766F991144FAECF1F463C59975BBA9C46
-:10A1B000D0E5D7CBE5EDAFEE867FBE1C71124CAF7C
-:10A1C00068F3EEE74B8D2E5FD6F9F00B27D9230706
-:10A1D000C63F4CF9567ABDD6BC4CA2AF6F95C7EDC1
-:10A1E000B43F8B790A6503EB323FB2BCBF8CDD7E96
-:10A1F0007BD9F506FAE8975367946343CB29573E1A
-:10A20000B7C352E56BF6A4D43FA3C94EF5FCD51EE7
-:10A2100077957C793DD4B0E80F0AB683E70E6A3FA4
-:10A22000DE11895BE827333C9E53228B4F4C7EAF77
-:10A23000F0F7FD7AC041DF6375CAFAF5016E4FB7DA
-:10A24000107FC69CB8EE52B6DA8A749097ADB6E528
-:10A2500043BBDF06D40DF949F2B4C5CEF723451B45
-:10A260008B3C688197C7F235BCB07010FB6BAB3587
-:10A270009EE7D29FBFC997B4F3189382685FB7BCBB
-:10A28000511144FE39E89B44F676AA75DBA6F31318
-:10A29000CAAFD103FEC4566DBD814555DCC76DB351
-:10A2A0008783C9F1C6ADF99CAED2A73ED48376733D
-:10A2B0008B6CA33CC11699E75FB77AA5197BB4767E
-:10A2C00001433B493F4745F765485E637EF5636858
-:10A2D000EF54A59EE763F9DC3FB4B3C41DD5C2803B
-:10A2E0005EB11FAF75D1FD0F4C95797E53C8904F6D
-:10A2F0006DD7F44B9D295F4394BF9CDF569C1DE9AD
-:10A30000C6F534FB6D8702EA63F83E2AC59C481FF8
-:10A31000519735DF1FD6D6B5459BAFF95E55D17441
-:10A32000EF8368BAF72156D7F4CB5EA4B7F54EB9E0
-:10A330002540F73CD0BD0F51BC72099EFF70F37CE5
-:10A3400016F0FF26F3F306A15E94AF2CE8A2785432
-:10A3500047A1AA164259F4D976AF87FE5AD43A15C6
-:10A360008FAE74786D9DB8CF979317790DE731CD87
-:10A370002791DEE9B82C8DF4107C777339C26461C3
-:10A3800012F98374690AFAE078BECC1E74503CABB3
-:10A3900025C27A9DA3F8F97FA4F75A9638525D82B8
-:10A3A000F6B6AB12F17424343123622127F4A77975
-:10A3B000FFFFD5EFBD544CF9AA62E4A37CDAF76F36
-:10A3C000DC8AFBFA6BF68B21DC47F8CEF75F1EC305
-:10A3D000CF1B19F799EFF6D4F4A23E8B7A1D54AF38
-:10A3E000DB37A903F1D422F83AD0DF6D79E3FA9F85
-:10A3F000231E5B9A799CDB8CE783BEEFD3FD1A2783
-:10A400006139B1BEF97E0DD6713D5F27A78BF62D60
-:10A4100061BEF6822ABE8E141F3CE6A37BA04E1EB0
-:10A4200039E045F8BEC2BC65EC37F5BC0B65D257C8
-:10A430001AFD3029BC09E7F503D1D7D11EC07BD264
-:10A4400060BD11EE47ECE4EFDFED49A7758D027CAE
-:10A45000B8AEA2AF5E4597ECC3FD22AD73546AA2BD
-:10A4600079B198C4F6E2FB473EF9F18548076A16D0
-:10A47000ED6A89454D84970F012FEB2DF002F433DF
-:10A48000A600FDE5476EA07E3A1C2E192D9B16DF17
-:10A49000243AAF3CDCFB452A0A847E7F4BBB5FA499
-:10A4A00002FB1D545FF3B3D0DFC6EFB532FB38CEED
-:10A4B00006F09E2A7F452D30DACFC3C85F510B2CA2
-:10A4C000FCBBAFB0AE97170C49CFC6756D71FDDF01
-:10A4D000E96867A9627AC85D0C655C27C43FAE1362
-:10A4E000AE9716B72115A4201DC88902A4831BD2DC
-:10A4F00043489F67921B12E3EB6E97809EC1AE7339
-:10A50000CA91A37476518BF7E8F2C4CC672D2EA3C1
-:10A51000BC6AD1EFE53B363C7905F4B202F16096B6
-:10A520005BC3A593EF0FA693EF0F45276979E12849
-:10A530007E473C154CA078C5CD583E7244DCE718E8
-:10A5400089E3F1B8595F1E937727E565E9F06CC69A
-:10A55000CD6ED2CB3C6F4A6A600CF3E0FC652141C2
-:10A560002E1F161D6DFE9AE9E88EA1E48397F5D0A3
-:10A57000798D557A7ECEBEA1F373BEAAFE81F5BC5D
-:10A580000FE169F17D9FE87383DD25F37BD4CE6E07
-:10A590005D1F2C10CCF70B3D988CB7C1EB1AD987F7
-:10A5A000EBA8164CA27B8CD8944564377567ABC773
-:10A5B000305F8C4921835C1CC43F9ADCFEC1390AA0
-:10A5C000E5ABFEA5599373CD4E19EDF1C70337FCEA
-:10A5D0000EEBDFCE9430C6436B6C6B094F1FC2FC91
-:10A5E000768748AE96E1BE4F94A585343DFA1F08A4
-:10A5F000CF0CA559C882F781058A8DAE2155B63397
-:10A600005BF9F0F1F0DC603C3C37141E400EFEA715
-:10A6100046CF37223DEBE7ED53C9C137B4FECF42F9
-:10A620000EBE91CC5F5F03FDBE3FB47EFBDAE5CD8D
-:10A63000A7389E59DE78357EFE6E8885305E3EDC1A
-:10A640007C36B03715E4AFDA7417D14FCB8302E50F
-:10A650004B811D1EA1B2CF45C2E6A0CFC1F37FF74B
-:10A66000F1EF621DC7B3194F42213F9FB5AAEBFA24
-:10A67000B064C8938AF1F39AEA09B954C4FCFE6A3B
-:10A68000A267BF66CFE879FDE99AFCEFD7F3336D97
-:10A69000349EBF88CB773FD83B681731A997A11F5D
-:10A6A000FF83029EBF0FFC40F40DA384911F32A6CE
-:10A6B00048A63C2DCE2FD912B77732034C205D83AC
-:10A6C0007962F0FE13B027F07E824CD5D8EE076990
-:10A6D000DF15506FF52EF23609740E3EDCFD33287F
-:10A6E0006761BE17F08D7F86B17E364B2A5BF8E737
-:10A6F000B13A5686798B15855ABCCDC182A41F35D7
-:10A700003F5DBF2F503C73DED7D4C261F8E9171705
-:10A71000EA79C2467DDCE56696F1B523855C1FD5F6
-:10A72000F7D6D6A15DBDD6C7C8AE5A8BBA13CB99A2
-:10A730000EBAD726D45DE9B2BAAF2253B519EEE707
-:10A74000F5CF4833DC7B9B1DCE3294731BF20DF5A5
-:10A75000F322230DDF0B969D6BF85ED434C1501E9F
-:10A7600011BDC050BF04109C5C1EB5E93243FDD141
-:10A770001D5719CAE7ECF896A1FED8F862C3F7F3A3
-:10A780007E759DE1FBB8AEB586F2F9FB6F36D46FEE
-:10A7900061D6F777766878057E2739D6ECAD6BA061
-:10A7A000DFD1901D8638FF755ABDEECC4965180F74
-:10A7B00069395E5146FE70FA0543FAC366B9984A94
-:10A7C0001E9BDF6F2EE4F2F383C7DE9EB412E91CFA
-:10A7D000853CC8A50FBCAF6CC0396D2EE77909FA6E
-:10A7E000EF6298EFE5EFDFA794549ACF822C07B37E
-:10A7F0003A1F705DA162B9BFD02A845CB857940A31
-:10A800006F478689B7EDDA3CBE2ADE8E09C638105E
-:10A81000EA93072DE07A42E32BD057BF453E047DF3
-:10A820005599461E06BFC7E16CF5890E07E8937F70
-:10A830002FCC1E9C1FFE41C3F3D7DCAD60FD6B78AF
-:10A840007D5BA80CD725D5BED21385E67DA5AA656C
-:10A8500028E716F8D284E4FB9AF76BF5F478764B88
-:10A86000FA67B4AFD4E208950D675F697F21E3F71B
-:10A87000E0E2FA6627ADAB5D0DCA96FE9DD98E610A
-:10A880004FE03D1831AF4479C366FF2EAAC96DDD94
-:10A890009F930ED692BFDFE21D49791F2DEA5AD24F
-:10A8A000971D29FC5CD097BDB83ED37C371AFCB904
-:10A8B0008178804AE3415BB29B5A92FC7F6CA7DEB1
-:10A8C000CDEFD5FE1AFCE08F0ACFC2FF5718F783F1
-:10A8D0004F328EA793AA8DEC84936027A0FC6D93D2
-:10A8E00018ED7BC72A05C5CA2FEE58AFD987EB39BB
-:10A8F000DECCFBDD663BE38AD0F584B736A0275774
-:10A9000025CE9FDBBF6D767EFFA6EC0F0751DFF6ED
-:10A91000653BD86E80F660368FCFE978F9B2F228C1
-:10A92000A76890FF93533484FF738958DE85F7B688
-:10A930009E38C5E3220A1E450CE03DE47CFDD63E70
-:10A940003127B606F55489D484F9EB225332102FFF
-:10A950006B0E8B2C2EA01C33E6E7DB59D35D188FD2
-:10A960006301FE3EC65CCD6827654C31EAB14CD52B
-:10A97000A8C7FC33B24C7ACDA8C7721B8C7A2C2F97
-:10A9800062D46305CB2698F49A518F8D88D699F4BA
-:10A990009A518F8DDA749549AF19F5D8393B8C7A75
-:10A9A0006C6CDCA8C7CEFBD55A935E33EAB1F3F7E3
-:10A9B000AF377CAF48B41BBE4F3C7CBBA15CD573AA
-:10A9C000AFA1FEE4A3BB0DDFA7F6FEC6F01D10FD90
-:10A9D0001C9E67C07B6871112F7CF721E377A63A34
-:10A9E000301F7F059ECF8475BCA8EF61437FAC8389
-:10A9F0009F5B88C17FB85EEFB008DD030072EC504A
-:10AA000001B45B1D17420986FAE9C1B771DF6679A7
-:10AA100050243F6E0D065B911EEEF7C5911EAEDD14
-:10AA2000613CFFB03C6E2CC7807E148C2B00FD2057
-:10AA30007DAD30FD6E04D883446F2B14A909ED4A17
-:10AA4000337DBDA3D3574C7D0ECF73E8F3D5E767B5
-:10AA5000D7CF9F6AF4A76AF4C7C44708EE1505224A
-:10AA6000FDFE8E3E5F15FEE3DFDF77E03C3ED92F33
-:10AA7000303FC0710D8B1D2AB098CFEAFDDB1DC899
-:10AA80009FE67999E761B653DB8A8CFB489788DEAD
-:10AA900010F1DD0B22E9239A02F2D903FCBCDEDAC5
-:10AAA00027443A17837C88FE82186B20BCAC01BC1B
-:10AAB000E0BDE1BADD7A426B77E2A7229D6F3E13DB
-:10AAC0003F2A1A3E9C41233FBA9534133D19F1EBBE
-:10AAD0002933F2E78AD72E75A0FC3A04F816A6307F
-:10AAE000E60B19F97585B892F6F9743C2BF01F8EB8
-:10AAF0002B81A98BF35E0DF34E2883F1BBEC91ED16
-:10AB00001B0A2CE8E64CF87DB0C8B8DFAEEFCFD515
-:10AB100002761C1679A53AFEBAB3D53FA27C4CE565
-:10AB20000F1F283A6B7FF840D1D7EB0F3F5334A467
-:10AB30003FDC370BFD29274B0FB55BC4FD242627CF
-:10AB4000305E6B6FE271BF81F8DDD71EE7790BE1F4
-:10AB50009464AE27DD921EE7091D8DA07D92716E73
-:10AB600008F3A2861BE7F870B01EFB70283D06F6BE
-:10AB7000C5313C4FA866E4D7DB9099A45019DDEFAE
-:10AB80008C20F03CA4FF46F806E5EB966669F9C711
-:10AB9000CA90F9C75768FBBB1706D57F221CD0DFC8
-:10ABA00069ECAFFF3EB6CA6CEA27FD0CFDC4EAB8FB
-:10ABB000BD16B3F93A5AB8BD46FB4C5F431CC35FA0
-:10ABC0008C712D2FC77F8B83C76DCF36CE565C3CE3
-:10ABD00028BE545C3C447CE91FAFE6F273AB21B065
-:10ABE0000E2A52D3B77E0E532F6FCE34FACB1B26CC
-:10ABF00070B8CE2DE6EB1ED1CEE3D668653DEF12E0
-:10AC0000F316DD13A03C939F53D2CFB5EAFDD414C5
-:10AC1000FBA8FEA7C1BA1AC4C786127EFFCE864C17
-:10AC2000E33D3C278A6A6B705E53B4FE6B8A193F22
-:10AC30003731523BB7698A177CAED5FFBCA88E9ED0
-:10AC4000788E16FD1287285AE2735AB14DBBEF86F3
-:10AC5000D173BA7E7EEE4E7EBECE7CEF02F0C98B03
-:10AC6000F8FB506FDE66277F0FF4119D9F5B5AC083
-:10AC7000CF219AEF538894C98750BC7EC2CA2DEF6A
-:10AC8000E51994E770EC26CABF7B662A9385BC332E
-:10AC9000E73D7CBBB85F5F85BEE439BAC6E261E4DC
-:10ACA0006B2DD1CED1F5A6713DD697E78AEFB6F0E0
-:10ACB000776FD5E8F236CDAFC5FD69DC27C7FBBDA0
-:10ACC000ADF6CB6F2DE6FBC3C33D577DBB231241D1
-:10ACD000BE359FAB4E759EBAD7D1DB968BF08E6595
-:10ACE00021B4DF7317C8DDB9502FAD5EA1F38F1B00
-:10ACF0004A58FA14FC5E610BE1B98ECCB9F2063BFE
-:10AD000094334B599600E5DED81C1AFFB606268B05
-:10AD100000D77DC5FC3E8485B77C44E36557C3D42A
-:10AD2000143A773E1DFDB35803A37B0BCDF3BC5BF8
-:10AD3000A35F571BBF2727A3D43A0FFFEE62DDBFE7
-:10AD40000EDF85F45B5BCAF6F1F3B3FC9C025E4B4D
-:10AD50004FF99BA134DA17BC12D68DEF9FF7D0FACA
-:10AD6000DD149CF6536CA7F39B43CB53309F27BF56
-:10AD7000AFF8ECCE93A72DB08637A1ADF735D9E16A
-:10AD8000FB918ED2CA3AF8EF977E71FAB43849FB3C
-:10AD9000694705DB4722A8FFDCA0FF047C2A329D1F
-:10ADA000A3652E81CEC3BA9426A22BF794901F7F61
-:10ADB000178D2DB131BCC7659AD65E6D6002FE9EBF
-:10ADC00004E502929C36FDBE841A6A6D86F697E011
-:10ADD000BE5908F3BE43CBB0BF7A6F9A8CF14D7762
-:10ADE00069532DAED7E30B791FB7A7382FA19FB3B7
-:10ADF0001FB87F6ACDB3867B051CCB9F35DC2BC08B
-:10AE0000963FFB55EE1578AD78F9B3FF13F70AE8D6
-:10AE1000F20DD4901DEDFAA322BF47EFC347AFB6A2
-:10AE2000E33A6CA8655D88F7D8678067D7009EED28
-:10AE300075E1C777A25DB2363DC47F4F24F61D840D
-:10AE4000F3350F93B1BD9E6F28B032D2D7731B0478
-:10AE5000B21F98D4B71ACBF31FF1C8E83F7CF8E8CB
-:10AE60004B4531A0CF576F3DE9C3FCD4D7A53E1F5A
-:10AE7000C2F5EE2DCFFBF0FEAE576F11290F85CE38
-:10AE80007D27E5890923387D2D1A113E85F4B5709B
-:10AE9000DD3F2725DB672C9A4DFA7E791C204EB6C4
-:10AEA0007B7FE531FCAEE8AA2EBFA1ACEBF9554E95
-:10AEB000EB73F35347703E5C7E7FA7A340C1F12341
-:10AEC0006923A0FEBBDA39A077F7F9C88ED7E1591C
-:10AED0007C7F8503EDE1D71F71B204C5057BECCC07
-:10AEE000CBF507E65D44F8D083E03CF4970207F227
-:10AEF000D95281F53989B9D921C4F7DF34FFCF3C64
-:10AF00008FA5AFCA0E5CDFA5B5AC0FCF9D2DBE518E
-:10AF1000D8F003A8BF38E225BFDF3C4FB3BEB91657
-:10AF2000EFB311ACEE816B3AF467E86709F483F68E
-:10AF3000E7D20EE3F713876F38B413C6DDB7DF41EE
-:10AF4000F6E2B56788F78F1FA1E9A5496CF2E951D0
-:10AF5000A4FF32C629A9ED0E5D1FBDBB8E5192CA5A
-:10AF60007FE1EFFBC2F3FD75323D4F152BB41E2B75
-:10AF7000F6771FA2DF16967A26A1BC9BF944A3E7B9
-:10AF80005B6C20AF685267CB819D5455CF574D50B5
-:10AF90007C6F8A76FFCBB5DAF98FAAA3E67CD5EE73
-:10AFA000C7FF8C761BCCFF6CEEED5930CC7B7B4E13
-:10AFB0001C9EE6413A993D42F37F26035EC4AF8E64
-:10AFC0009754ED56A5F8DD169D9F4E697A66C99E89
-:10AFD000D91BF261FC9647DF29C6F8718C71FAAE75
-:10AFE000FA29FFFD9F2A6F0ED19B0BE9330F9B9827
-:10AFF000EE7988B11759127D5FFB8887E82408F63F
-:10B0000090730ABEE1F45A85F776227DBFC0DBBBA0
-:10B0100034FF36F2C8ADBCFE9F1DB233487C19B474
-:10B02000D13311B44DB1B867CB7CBF5887B1FC8127
-:10B03000BDB718E5CAB5263FF403C13A3FAD71C4A8
-:10B0400048C2C712459D8E79004B5978038FDFF2B5
-:10B050007B7BDE953A0EFD10F97D8FC06280A7558F
-:10B060007F7CE0DF518E5DF7BB3BD3518EBD2775F2
-:10B07000E4E0782BF7B6A5A31E78578AA563FBF703
-:10B08000E25C9E0DD29723044D0EABE902C8E4D5D5
-:10B09000446AF0FF257D1B6E8671FE1BF08C7CBF21
-:10B0A0007ADFA7543EA4BAFA5810FBED9D8E702C9F
-:10B0B0005FE46D6A0EA17F69E4CFEB7E79678E4213
-:10B0C000791EB1020D7F05D86EF51E3BE5F9A21F72
-:10B0D0008FC3AC617D343F73FB355D6F3A505ECBFF
-:10B0E00036D65778E1E0EF60213990DFD6ECDBF21D
-:10B0F00091988ECFF75EC1DF835A63B24F9769F2A2
-:10B10000DB4CFF5D26BA07FC507C210670F19F6383
-:10B11000E272BCE5D7778F7F03E07B7FCF53E9F8FE
-:10B120007B133AFDEBF73C9FE86A5CE818E21EA14E
-:10B130000F343EE9D70F9A7E52F60360B9507C84F3
-:10B140003F57DA13E917C27C5776DA4348F32B1FCF
-:10B1500010552FDA552F3BC91E59F9C049A2DB956E
-:10B1600082DA27909E63E928C7F5F55AF1C0DFA679
-:10B17000A39C5E9127B299C08AD7FDFE135E1FE89B
-:10B18000DC0DF5573CF8C6F41F6219E489CB62BDAB
-:10B19000A675753B7ABD16EBD5F5C6748CCFB7FC9A
-:10B1A000FA1FB41EEFFD4560B92583DB2FEBFC1BB6
-:10B1B000C5C1DE8785F167727CA1BE59D3252E7289
-:10B1C0006458AD5F62D6C395F49DF2C2CFB48E1DB4
-:10B1D0002318D78F7F7CE0DF1E063896BDE20CCDAA
-:10B1E000C471FFED86740674F08ED4C4E9FE676DF9
-:10B1F00039A8BF97D96339323DF9FB65BBBE47F427
-:10B2000078ED5FBF97A3ED37E4D9481EC4F2709E76
-:10B210004B7F3A8FE6790D8B103D2EFB19BF67F1FE
-:10B2200013F0B3ADFC84A90AE71B27BB7EFCCD015C
-:10B23000949B78670BC0E160FCBEAEE778FEBB93E1
-:10B240005D95916CE77A146ECFC558FC35B43BD749
-:10B25000805A46B9F6FF003503B31E008000000097
-:10B260001F8B080000000000000BE5BD0B7C54C5DF
-:10B27000F5383E77EFBE425E4B5E8457B8791224B4
-:10B28000C485249040D485400C0AB8404494884B2F
-:10B29000C010202101AD60A5CD860002C53628551D
-:10B2A00014B40B8245451B31086AC08D2886EA1705
-:10B2B000438D165BA18B2008045810EAFA2DCAEFC3
-:10B2C0009C33F766EFDD243C5ABF9F4FFF9F7FFA08
-:10B2D000A9C3B93377EECC79CF9999B3E2814BF911
-:10B2E000BF8C62ECE1787DA5C9C25805D33B3D66B1
-:10B2F000867FC215814A493F189FC35F0263790761
-:10B300004675F3A4316662178CF767327611EA9FAF
-:10B31000B36ADE6357E2193BB1D1D445B819CA18F4
-:10B32000565A07EDAFE0DF6DFEB25482CEA3A9F905
-:10B330005F18F43F97BE04FD6C3991BF0EFA65B1FA
-:10B34000220B8FE5F073303E4B71486578367CAF49
-:10B35000E5A8B107D43BA3742C19C7DBFC0DC1CC05
-:10B360001A2D617BA5FF8A9D26E656C603FFAFD83E
-:10B37000F48D91613F3AE6ED35AC7D3D6395E9880A
-:10B38000870A162EAD84F284D19BFF2E7E07BEBBAA
-:10B3900019BE53B206DAA7AAFAAB3FF937968EED7B
-:10B3A0008DFEE7F1F8DFC58C65412116853B42181B
-:10B3B0009B8938CC693FFF855F553FFE81AABF0C52
-:10B3C0002934EA7830FC63081B7245F4BFCFD603FA
-:10B3D00092BAB77FFFFB2AE7E31F18F06D27E1B1B0
-:10B3E000CCE07A09F154F6A5C9EA043C96BD76C9C9
-:10B3F000A88B422A326F7257C64E6FDDF3C57D307F
-:10B400009FD37586A831F4555B9810E3C77BE9B6E6
-:10B410006FF2D7417B03E03D08E839B7FE7BA30E0E
-:10B42000DAC7E631AF09C67F3ACACED800C49BE17D
-:10B430006B8F0A6F79F0DC1342E3E8A98BC5D2DD8C
-:10B44000934139378A59DDF0FEDC16D12A21BE98A6
-:10B45000779925A4FDFB15754703E8A2AD67CC6B72
-:10B46000B4E377EB7F735E0C53E35DFFB5478577FD
-:10B4700005CF81789D8A78EDEFC7EB2596160E9F54
-:10B4800061A75E99D3C791D61EBF0A5ECF563164BD
-:10B4900072FFF33E12E159DA091FEA06750D72C90F
-:10B4A000D8174C85C7D9AF9E21FEFD67779189C01B
-:10B4B000377337FDB00CF90AD0EA3501FFCE759D20
-:10B4C0002778A9CDEC650437160AE91DCD5B8BCF33
-:10B4D000C0FA78446AB49FFE86C5CC190AFD7A7713
-:10B4E00089AE8D30B47392372C02E6B734883D6054
-:10B4F00087F29C4586BB2A307B601A8CF39C33DD37
-:10B50000E2C4F782D8E43AA0CF39BB37AC6B887F6E
-:10B51000DE471AC43009DA7B5CACA02EA43D1F3292
-:10B520005643DFF7B0CEEAAB491E4689975FF7C0B6
-:10B53000F72E38F5CC04DFF3547FFFBA07CA637ADD
-:10B54000B305F134A3FA9E30A683EF3724DE351914
-:10B55000DA3DB80FF047D3B319BB037EA7F3A9B305
-:10B560006F99F3E95C989F189AB9F75D78BF04105A
-:10B570002B02BFCE58A5C5CF6C660F77C7A3DC1AC8
-:10B58000FC7C42FF7519DDF0DE4C4748E54AF86E59
-:10B59000E97A6DFDEC86D3C45FB303F8CB81FCD5AB
-:10B5A000BD3D7FBDA2C8ED403610F96B9418A24393
-:10B5B0007E3ED724BA4CF0CE852506B60CE00B5B58
-:10B5C0000517837E2E3440238477729839A3896FC0
-:10B5D000153E57F0D68AFCD7B73D3EDBEAB71F1AB7
-:10B5E000FC1834297BEBEFE9EBA06C7DEBCB947777
-:10B5F00011DEF1D7B8BFB3F6EDF376FF3095C6B5DF
-:10B60000DBC4705CE7767F14F718C2EF98ACC8B75C
-:10B61000E7169B6C0CF5DDEE505732D6F7067E0030
-:10B62000BAD7ECFA3E1DF53D634B888E9F4B462AF8
-:10B630002F34FCEBB080F3683049388F8ADD80040A
-:10B6400078BFE29D2017C3F7777D3FD811F2F3CD85
-:10B6500067AE9139883F43D9E46DC8BF5D990DE766
-:10B6600053F16ECE8BD5F0FDF2FA46E374A8CF7B92
-:10B67000EFC774D447E7B6351A515F9D35785E60E1
-:10B6800056E4DFFB6B0D80E7B3A1D0590FC61EDD7A
-:10B69000F0BCDD19D2115E381ECE011E705E80979F
-:10B6A00052575AE7F8F8FEBF161FE7A7E2F7CB1A82
-:10B6B0008630315E8D17C1C69F87BACC02CD9F3FC1
-:10B6C000DFFD7D3A0BB9F67CA3E38D24EFFF7F9974
-:10B6D0006F46FC7F2B7D39BFBF2B4934BE40BE6F08
-:10B6E000CFD73B1E21F8F5502B8DF73AE57DE27F51
-:10B6F000EDFCFF6FE83DEFBF76BED7A2F73E99DEC7
-:10B70000A11613EAAD5D3FC6B11B9877EDFF47E781
-:10B71000DDE6FFE8ACE64C18DFDF98EBEEE10279FE
-:10B72000251DFA23BBE2B5EB8E71B25F51C3BE1E7D
-:10B73000390DBEEB047F02FDFD9A90AFF52D003769
-:10B74000839F80FE0543E704F0D05C38D0B512ED4E
-:10B75000B6BE925900367C319DE0C9C53FE833A1A1
-:10B76000FDDDE0E761FBFDD59E19D550BFBFAB4EB7
-:10B77000AA01F82EDBC4E47A802D3D440BAE636A47
-:10B780006C19664935BEBBB2B5EB91FB02D615F715
-:10B790004CD6D64F621BA3F5D0DFA4520373C194DD
-:10B7A000EE0E68BF2EDE42F8BA87552EB584DC381F
-:10B7B0009E4ECB78AA61839A24C48B4DB46E66EDFD
-:10B7C000F1C6106F8897D80CB6D28A5FF1E85B009B
-:10B7D00036C9FE15FC913CDE1D657E09F16462F3FD
-:10B7E000D923D0DF25495F89ED4D0CD68D7CDCB4A3
-:10B7F000DE0CC41B93D79F26990477D91E628867F5
-:10B800007CDE2756F33ECD3B10CF378ED7C5C94FD0
-:10B81000235E0B43AD2EE40BDB8BD17AF85E0DE09B
-:10B820005910FCF854F0148877F43969FD27E35B6C
-:10B8300029D398772AFA9D612CCCBA12FA0F33F7E4
-:10B84000627A3E0FAFA93B161686EB357104AB5BEF
-:10B8500009EB3596AD6F6D9B5702D5BB1F83F76A19
-:10B86000E6C1FB88D75E4CB213FF1759707D2330B9
-:10B8700007BB12ECF73F3FCD06FF339E4AE2DB4F9A
-:10B8800037717FF352EE9BCB0682283198B3733029
-:10B89000FAB9F29FD35384EF894C67C5F52FB3D91A
-:10B8A00024CB60EC97D1BA263C5BA759FF76B575DF
-:10B8B000D1E02DB220420347DB7B68DA779B9CA066
-:10B8C000A9EFEEB84953DFB3749006EE5D3954D357
-:10B8D000BECFC2111A38DE7987A67DE2F2091A3886
-:10B8E000B9F63E4DFBBE6B8B35F5FD5CB335F5FD12
-:10B8F000B7CCD7C003EA7EA9697FF3CEC59AFA8197
-:10B90000EE959AFA8CA627357056F3739AF6430E85
-:10B910006ED4D4E7785ED1D40FFB769B06BEC5FB10
-:10B920008EA6FD6DBEF735F070F6B1A67D9EF9339B
-:10B930000D3CCAF2774DFBDB638F06C43B2CCE87F0
-:10B9400032518D013F819C8D964E6BDA83C75C84AA
-:10B950007C6390F9E1CED4EF34F563ADFFD2F467A8
-:10B960006495400464AB5A2ABBB03A2A43583395D5
-:10B97000BF1EE0B027A05CBCE05C864CB53FE7FB97
-:10B9800038B4239FE63EE444BEBB14CB2CE24018FF
-:10B990000FF3EA91AF75C1977B395471A3309FC8FB
-:10B9A000DC19C0873E814A8B2F98B923810F7D41D6
-:10B9B0005446F822E979A4AF2B9551BE9EF43CDAA7
-:10B9C000D79DCA185F2295DD7CF154C6FAFA53D987
-:10B9D000DDD78FCA1EBE0C7AAFA76F2095BD7CC382
-:10B9E000E8796F5F0E9571BE3C7ADEC7379C4AC915
-:10B9F000772795F1BED15426F82652BB44DF782A2A
-:10BA0000937C53E879B2EF5E2A537CD3A9ECEB9B8D
-:10BA10004665AA6F0E95FD7CB3A8BCC9F710BDD7CB
-:10BA2000DF378FCA34DF63F47C80EF512AD37D3552
-:10BA300054DEECABA6D2EAFB0DB51BE85B41E5207A
-:10BA4000DF53F43CC3B79ACA4CDF3A7A9EE57B9643
-:10BA5000CAC1BE17A91CE2DB4065B6EF552A737C4C
-:10BA60002F5339D4F726BD37CCF70695B9BE77E901
-:10BA7000F92DBEB7A9BCD5B7879EDFE66BA4D2E689
-:10BA8000FB989E0FF7EDA37284EF337A9EE73B405D
-:10BA9000E548DFDFE9F928DF9754E6FB8E5279BBF2
-:10BAA000EF089505BED3548EF69DA4F20EDF77F411
-:10BAB000DE9DBEF3548EF1FD8B9E8FF5FD40655BE0
-:10BAC0003C21D710A017DBF49FEE0AC67942223A38
-:10BAD0008CB7B5BD2FEBE3D5C12F308C7B8CAB146D
-:10BAE000689DFE4CF0D90F484FE69824849762D3A6
-:10BAF000EEFC3B9618C6EEC77F488C35E69868FD8D
-:10BB0000BEFF57FCBD65C38F7EF510DAC779268668
-:10BB1000F63150FF2ADFFD347B4F34FA61CB0679D2
-:10BB2000CA30FEF244BCA708CB860481ECC59B72E8
-:10BB3000F94E828ECA3503B8FD2E9A971C4E71AA13
-:10BB4000A8EB9BD7FFA2DD8FF6B77F2189F7C34211
-:10BB5000BC71642FAEB39FEB6DB7D4FCEB3F605C60
-:10BB6000C756A36741B702ACE7F6DEF955A86B33B9
-:10BB70004CC939A2F28F18E7712E36596AA210CF3C
-:10BB8000BFFE13B65FC898DD04E51F121C9F254059
-:10BB90003FDF07C5B9C038C25FE59009A13F6BFF21
-:10BBA000FFF83FEEFF34EAB5CEFAFF87CC476312C9
-:10BBB000EDE7701C4C6F4B473A8C58DC5D8C82F77C
-:10BBC000A7AD122CC847D3970CCC47FE18C46C14F1
-:10BBD00027BD3F923D60EFC02FEB96A893FD0BC9A8
-:10BBE000780F8CE70CB81CE84F144B8CF8B2B841B6
-:10BBF0007039290E6D0B1B0BF6BB54E6DBE2E5D565
-:10BC0000C605D0AEBC3B8F9731178F9799E17F283F
-:10BC100047736A37ECA570A37899E26397D0EF0574
-:10BC2000D699B3A57D3C7601C699771A2D6837CA97
-:10BC3000EB02E2B90171B3C0789925518EC75A99C8
-:10BC400095C7B9434AFE8ADF63619218756DBC28B7
-:10BC5000F1598949DD108FA3C4B4705CC75C684A90
-:10BC60000E67584A52376CE7005A344329E81D439F
-:10BC7000F039E0D38974F55607BB36C2B88E803DE3
-:10BC8000913270408E21468C47FEAD375B2910D52E
-:10BC9000C80FABD824925FEF59FCAF6518C79E154B
-:10BCA000AFA775C0348CB9E3F8DEEEEA720AD42F80
-:10BCB000E1DDFB9A407157279B1F8B71DDC07D141E
-:10BCC000FBD2E871D948A7E55D079990564EDB177E
-:10BCD00049312AFA2CA921BC16C74672FAEC3490D5
-:10BCE0005F0BF4A946FACC72198EA9F17C895D36F6
-:10BCF000E27E4CF1F2F344AFD97E7A69DA95D73619
-:10BD0000125D814E9AE71595279438FAB1ABD12B85
-:10BD10003F805E183FBF072B1745927E285AEC4E96
-:10BD2000AE54F169E0BE44D28CA1E1769087821EC8
-:10BD30009C1E4C6F8D417A7EB72A8BE81548A782EE
-:10BD40009FA6133DD8DF42D96618CFFD89EC810943
-:10BD5000F0FC0139FE7A7FCDE8028C974F4DE4EB81
-:10BD6000934F61FD6983F5E7812A33B3816AFEACA5
-:10BD7000CA42F0E755B104FFB54AA2F2CBAA542A51
-:10BD80008F1959699D4ABE80018C38BE192857D138
-:10BD9000582AEBC3876331EE5EF0D367593A52A954
-:10BDA0006F8E1FD51BD7178004157E261706932F7D
-:10BDB000ADC01E83253F16F5C70AC1BA19E96A1F2F
-:10BDC000A669CF5233FC30DA2F3DE727E08B8DC8D0
-:10BDD0007FF78E89D4B49FB4BCA7065E9428D1F8AF
-:10BDE000C617246A9EDF57D45F034FF3C17A1E3E05
-:10BDF000952415E89CD0FFC54F0CC4CF172B877432
-:10BE00005BC061E2BB40FC1F333A298EE0DC68B2C4
-:10BE1000A2FEFB3688F3F7B79F8BAE1A5AF73A2982
-:10BE2000EE72C96C91709DF2C874671CD63F120CFB
-:10BE30002EF940C497C8307EC05E3191FE9CBE563C
-:10BE4000604E94112FA3F5F2C32F9B689E33D68AC0
-:10BE5000CC91417C1287ED1F8E96A8BFFB13A53AAB
-:10BE6000E467EF66937523D44EF7C8EF0B83681F22
-:10BE7000A47CFE5F0FEB511E529AD371AD5514EFA7
-:10BE80008E463DD8BAC940FB5EE5E286921020D1CD
-:10BE90009C27DE0CCB9148FC08BFA70E446FC0F96D
-:10BEA000FBE7EBA2B8C8377DEC1B13419F9E2A71BC
-:10BEB000A5D33A79118FC7B7C70B233DE5D4854980
-:10BEC0009B71BED31D432C696A7BC8F7FDA61BACD2
-:10BED00031D634E4FECCEEA8078EAD321460DC051A
-:10BEE000F4FE38C4D3B1DA48DD4A5A546D23FE2A31
-:10BEF000D64B46F5778B5789366A0FFA7D3CDAEBDD
-:10BF0000D5A2830D41B896FA772E171CB8EF94C4CA
-:10BF1000B2BB21DF3E346F48379CC7D44EF619CFF1
-:10BF200082CC3854FB58B3778976177E2FD3A32F52
-:10BF30001CA01E3F8F03253996F79A8F747A23C869
-:10BF4000BA5242BD9A188EEBD4932D6037E01BB3E2
-:10BF50006A1AD32560BDB28776101D4AC7D5A5B829
-:10BF6000E1F901B3E313C4E3B7DDEB9E1E8671A2D2
-:10BF70008617E39C680717F2FDB5D9AFCCEAA3F6A4
-:10BF8000E7DBFB132C56978D853B4600BC38249687
-:10BF90008FF89DC2EAE4F8858BC627A1D2057C58AC
-:10BFA000CAF8FEDB749D75EA679988FE500BD2458E
-:10BFB000E9EFA881C7B9FE21CBB362877B24713F2B
-:10BFC0006BBA8ECB1DDB2D109F02C1BE4852D9CB60
-:10BFD0000AB68AEC656C4F91E1BEDDD9C408592FD1
-:10BFE00070FB3707ED1FEE0B5B04928FB22D269787
-:10BFF0000BF82B3589CBE76CE36B4F0FC2E6F1955D
-:10C0000046FCCEAC7A813D074D4F195C25CDB82F4B
-:10C0100065D9B02482DE33585DC8A7B27E3783422B
-:10C0200040BD3013FF09F5E56B04979BF8C54E76CC
-:10C030006806C64D70FD8F7A5EA547DAE9F700BD48
-:10C04000FE200BD8D7AFD5DA177B70A819C7397B7C
-:10C050000DF76BFDE311D915C05589C3B5771C8D5C
-:10C0600057A0B848E0F767E2F870BC303EB7F5C6B5
-:10C07000C75362E5725A562BB85C1D8C4FC16B7862
-:10C080002E93D03ECFD924B8901F4745CD23FCCE68
-:10C0900006FC46225E9DF6B07B002E014672517C66
-:10C0A00085E3BF623DC73FD0F92F6ABBFB4D94D7F4
-:10C0B0008878FD06ECA713F7032BBF27BAEF05FA24
-:10C0C000A2FCCE7AC365C48DC8D3AC362C04F97EED
-:10C0D000ED81BDB82CF866CD9B31B87E2D8A7027D6
-:10C0E000EB406F45B2E8270B6EF1F35FA0BD6E67C2
-:10C0F0009703F0E36476B243EDF0645ED58CFBDE2B
-:10C10000EDE827C7C51EC47F017E1EDC24DA82D27B
-:10C1100035EDE4F3084EC25BA9D34B7E4229CCB384
-:10C12000C6824F9DF9889707AD8CF4EE8D8E3770DF
-:10C130009C4C2C22FEC4B81EFA21FFEE7803FD8F22
-:10C14000494957F73F02F548A0FFF195C1A65B8C1E
-:10C150007EDF01BE2F7E51EFEE8DF27B312AC10AC8
-:10C160002DFC7A347A5037D4F38A1E2D91ED96D275
-:10C17000EF8368AF003EBEF6CD30A4BB42FF9968A6
-:10C1800027D2FC76E291E9D03F7CEF911D41D4FFAC
-:10C1900099B160A7A0CFA2E73F0A632AFDF7781FF5
-:10C1A000C7FC24D4278A5D1337C45980BF147D7916
-:10C1B000AD7557A7F30A099857A8765EC538AF0C36
-:10C1C0007F7FD3E5797DBD9CCFE7E82A3EBF19ED9F
-:10C1D000E6C5EDFE232F9AAC4EF20BDCD12887DFAB
-:10C1E000BE21B21AA22FF71B2E99819F0662FC6610
-:10C1F00015D9F593D14CC2B84EA7F67BB589FC8210
-:10C2000059DBF97EEB29617837DAF8FFC01DF62893
-:10C21000CAF53691A11DF28FA7CD6E3F9BA4B6DB68
-:10C22000D789378CB3A23D9B0BA843BE9FDBD08D33
-:10C23000E1399755C3599D48FBF01ED263C04214A3
-:10C240009F063F5C136F3031ABD98C74EA24FEFA41
-:10C25000CFE4F353E7133EBC29887FE5FB155DDC93
-:10C26000866EE8D7BC21905F53FEF0F0B0E10CBFC2
-:10C27000C3E3663B92B89D7A07F51CCC4BB0555290
-:10C280005C0C7C1ACBEF705CEB797C98BDCFEA102C
-:10C29000BF0853FC58C7E7214816563488C7E5CD78
-:10C2A00068D7427464D702F17042FE4EB9A823FFEA
-:10C2B000B7CCC8FDE073023FFFF1916C1F3F4AE22B
-:10C2C000EBCC4F92783CE11CFA81D0EFB95B4CAEDD
-:10C2D0006A01DD563DAD93F5B92617FA337A7388B6
-:10C2E0005B4C47F4EACFB6C933E06B2A6B36203D8E
-:10C2F000C765CFDB82F339DC8359C4AE546DC77D8B
-:10C300008429A41918DB6FF8EA438C473AA1AD08D9
-:10C310006B8529D9277A63FBF508C3FC0F07D57D08
-:10C32000887196C3F17A86FB02CE5D26B2FF861134
-:10C330009EDE14A7ECC258CD408CC7EC598A7CB461
-:10C34000373632D502ED1FD077B18A5CFF8C3C8F37
-:10C35000E32D15F8FECD124F16D2E766B6C472DC97
-:10C360004C5B0BF55722AFC63F7A765CE10318535E
-:10C37000D908F8C750C6192B9BF0A98101AF045FFB
-:10C38000DEF4C88435B9B869220D403A972578F5AE
-:10C39000B89FE215987723E0E1EE6CAFDE86F4B249
-:10C3A000B1BABB807FDDFB9880DF4111C0EFDEE3D7
-:10C3B0004E18857860A9120B87FABBF412C1BD0A2A
-:10C3C000588428EF1B601CEBE03081E8A0334B065B
-:10C3D0009CB7BD401884FBA2658BAF6F9C61C9D52B
-:10C3E00034CE329D8EAF671FE5EBD929CE23A3C88B
-:10C3F0004FCA6502F26145449D81D6D1202F38FE97
-:10C4000081D08D1A7F53F41E3EBE52185F0ECA456E
-:10C4100012F1F17D9502F99315C68EE31A3D9295BE
-:10C42000759745C2F673E05FC8D7731A7624E3F7B1
-:10C4300056099C0FE6287CB6552B97B9C9ECAA7C07
-:10C440009D93CCF93A2799F37572DBF7EAC8EECEE3
-:10C4500069F8E820AE2B3BEBBFDCC4DC84975D269B
-:10C460008A1F083A6F12D1051109749882FE24B808
-:10C4700088439223B89F2EF36709FA1F8958F2B8B0
-:10C48000880E9427DAC3D2DA178D88B4C0F347E058
-:10C49000F8D039A0D99B029FABE22AA246EF50DC2C
-:10C4A00053307A67E078845B83ACA88FA718EB6879
-:10C4B0005D1ED8CE50CBFD2CC372EE67D1BE1AC024
-:10C4C000A655DCCF9CD2CB3B80919EB3E40BF1AC64
-:10C4D000CD2F2EE19F86E7651ABFD88471048C7B2F
-:10C4E000ADE5FEA05EF65F8B5769FD85294B54FED6
-:10C4F0002275EB2DC7F11A160553DCC584FE84CADC
-:10C500000FF8876EBC13F5B033414FE72F0D2CD0D9
-:10C510009FB0331ECFE4CFF5B29F383AD9A0D97F70
-:10C52000738E60A9888722D44389A86AECCB319E98
-:10C53000778185D662DC6C94B888E27F45D5FC5C57
-:10C540005A60FCEF42E587CF637BACC7E70BBAFCD0
-:10C550001487FB9BB02CB50BB782BFD1E5F0250744
-:10C56000CA07282AC3508C03EEFF06614117CE8408
-:10C570006CFCBEFB79ECDF69345B506F3D131C46ED
-:10C58000FD2C5C28507C788985CBDBA1AF4237A29B
-:10C590009E52E2BDCB8667ACC5734B359B1B27987B
-:10C5A0007BA37A60746E8939F7FEC506F329BC0C4B
-:10C5B0007243F047136CE1C0E71F7AA79A014FCF8F
-:10C5C00026374DD0839C9CFBBDF705845F4D3EC054
-:10C5D000E127BC7141086FFE9CC3D54A7F9F4FC0C5
-:10C5E000FECE3DCBE1E550EF84EF17A17EC3790F7E
-:10C5F0001568DDFF8AEC7F2BF19E22DDFBBC1CC1A0
-:10C60000DC683FAFD5AE3ED9FE0AFA3B62E8B150D6
-:10C61000F42FDEEE6B7B05EDF78E44FB53C948AF7C
-:10C6200016574C34C6B174AC19E90276CCD6D1BEDB
-:10C63000F42B493C4EF3568A9DDE57F005FDACFFC6
-:10C6400077FA1999C2C7A5EA67F3BFD34F78DF76A7
-:10C65000E3793D39FAC6FB9917D08FE2B781032CF5
-:10C66000A19EF2A6DAF6E1F8E6FCDA36A21EF5CFD4
-:10C670007E91F8F4BBCA1D2968F7BFDB6A8A44FBC8
-:10C6800037E7F5B7E34A308E20FB45A71BBF344A96
-:10C69000F0FE5C9FC86CA0A72B7C029573EB1B8DF2
-:10C6A000F96978AEB6D198A71A57993C4EE074FD57
-:10C6B00004951FB33F5927EBCDD554CE79FDA41E69
-:10C6C000E9394757771CCF1FB3A13CEE1538BF1D82
-:10C6D000B2DE3D8CE70D3A8803B4C8FAB9777FDB48
-:10C6E0006788B7B7509F030CE6CAD111BE7AA5F090
-:10C6F000711475E17A3EABC55AF219ADFBD27522C1
-:10C7000094830F561A8BE1F9C1C41187105FEDE3D2
-:10C71000905E1E876CE071C8A288E687C198B16EF2
-:10C720002F5D7CD20CEBB83B9F91E503450FF44B9A
-:10C7300081499197E0892373799C0BE1FF4D363C49
-:10C7400085E7089BBA34FFE233B40F2B42D94690F9
-:10C75000B3FB8784C66D83714C77860B603BD970C1
-:10C760005368CA3468D79A30BC5B0AE92746FE6131
-:10C770006B82FD02CED7131FAC036784398C3C9EBD
-:10C78000E5F8B348F12C477AB0C3D501BEBC323EC0
-:10C79000BBA5F0FD9D261D8C73108E839FEF85BF7A
-:10C7A000B86D186F5ADC4740BE53BE3F2671788C77
-:10C7B000FAFB6312ED624AB4BA7D38C3F6D73B0E7A
-:10C7C00096C2C71193C2E965CF05FE52E9FD092360
-:10C7D000833570E198486653AFEF0A7B6AE0C9453C
-:10C7E000899AF6F7CDE8AFA91F6B6ACEACBC017F82
-:10C7F0005F0C4B0DA7F57F165F871C6AB8F4C51454
-:10C80000F46337895601E6356BD7E62F8651EF1270
-:10C81000C5B94E3589648FC0BD35AAF74FCEB06615
-:10C820003A77ACEFBA84ECDF9C587EBE7B964BBB6C
-:10C83000FFA1C4E53BDA37417B5686E7623ADA3737
-:10C84000F1C7E3AFBA7F929D22AF8707B1417C3D2C
-:10C85000DCBA1766CAF2763612BD6AF6895664D516
-:10C860009ADE0213609CB7D79B5C4130EE336F1F9A
-:10C87000314AAAFD930A5F35062DE0BD23463C4FA1
-:10C8800075305922FACD6D386F64C017B737CC2395
-:10C89000B96E6E744445A3FD027F757B26F2575D29
-:10C8A00026DABF269DC58EFB6173968FA63873B8B6
-:10C8B0006F0A9565B5A3A9DF72DF4482E7FA8209A2
-:10C8C000FE546CAE3F80FD3C136E417B5EAE776ED6
-:10C8D00045BA944BC119B85F35B7FEC0C55FA21DFC
-:10C8E000B5F07B1D63C5BF6462FDD83E165D4D5734
-:10C8F0001C6F10F5D33CE2EF9968970A705D00CF8A
-:10C90000CBB6E53850EE87D7845A50EE453C4FD62B
-:10C91000019FCE48E1FE9EC1C3C73BCA379EFA5372
-:10C92000EA67A72450BD021BA237E9517F28F330E4
-:10C9300080C1C7F20E5F7F2A2BEAC7EBF15CFC9F38
-:10C94000535F8C423C41FB102C93460E233DF35D1C
-:10C95000E59070D681DE524A93AC87A7A01E86FE72
-:10C96000EE4DB555A11C8E5BE4D19B518F86982D61
-:10C97000B8FF312E7BA054A29A8FF8FEBDB892006A
-:10C980005FC56B40BB3D054AB5DE7EA013FBB234EC
-:10C9900045D1DBD54467C50EB12D4F325C874DE5DF
-:10C9A00067B5DAE46ABE2CD7CAFBCD02F7079CDB79
-:10C9B000795C7F7EAA632DEA91E6E16CF236D2A71C
-:10C9C000CD71E3437FBEF187E99B89CE611649872C
-:10C9D000FB0A4AFDF36DF3E0F27DAD79AC94DB7FA9
-:10C9E0002AB285C8179FDE765BB30DFA6D7C2C23C7
-:10C9F0004354D9A9D753F8F94766F15E267DB13B78
-:10CA000058423D3016F71E32FD7E3F9E87C4B84621
-:10CA1000C56ED3463C0F561106EB7CF8FEF8FE8E31
-:10CA2000D7917E8DEFE55CC47B34365C98819CDBCE
-:10CA30001A865CC473F63633681B2BFA41B63F91F5
-:10CA4000BEED64BCD7D2674923E744A13FF11D0C7A
-:10CA500009ED2DD8FDCC160EDB115F8EE55CFE1CBA
-:10CA6000B21C4E93F9B75896C3697A2E870FAC095A
-:10CA7000B760BCB378913000CFCB3129D48A2AC0BB
-:10CA8000807C9981FCC9F9B2CCD75596E778B91F5B
-:10CA9000CEFF81F239D71749ED1439FD53AAE310BF
-:10CAA000B72BCD990B615C77805CA3DE732CEE9E77
-:10CAB0008972E2E713A305F909F824B644C50735DE
-:10CAC0008D3FE8914F0CB902F18909CA3C151FD975
-:10CAD000DBFC134B7E0CFA554BE2752B99BFFEEB3A
-:10CAE00014659FFCFAF8FD53B97D7108F81114FF25
-:10CAF0000963185FBB1025519C74FE0A1824A060BE
-:10CB0000BEC19D8C7198F9F382280E56D252B92C71
-:10CB1000546A4FAF7B7DE9B4BF3CD19744E5C14433
-:10CB20008717E5659A6F928CC7F4EBDA9FCBB2F169
-:10CB3000B89BC165B26E88C7B89B43A4FDB8DECC74
-:10CB4000F214D929653F8EC7DD309E87F1BDC0FD47
-:10CB5000358CC3E17ADA14A5D3EC13B68BC70DD7A5
-:10CB6000EEA79535FE65B00EEA4FC5DB282EF74DD2
-:10CB70001F47505F98C7EC09AED70DEA7D36198F75
-:10CB8000757A7732DAD1BA4A8E9FBA556201ED379B
-:10CB900031163C5E755EF75A7C3CDB9748F851ECE9
-:10CBA0008BA2B77754D1A1CF36FD7D2DBB532EF389
-:10CBB0007B39F2BBB5BD9D51F835909F15FD6C8852
-:10CBC0006E213D7407BC82FE83A2AF0BF286E5A204
-:10CBD0009D1FF67262FD3B30FFD854470EE2E5B66A
-:10CBE000577B67AE03F80EBD4B6F09B91E7DF88306
-:10CBF00081F4E1A2F18CF421946A7D68E8C40FBF4E
-:10CC0000B5EF8DF1779ADC1EFC58EE1F82BE56F709
-:10CC1000373F75C4F8BED074525F6E277FAE717710
-:10CC2000A6C727F5BD313D9E278FFF5A7A7C565FF8
-:10CC3000AEC703F5366863D2DBE776F5A338D96172
-:10CC4000067A1EED5943B0B4395E75CEBD4BB84B74
-:10CC5000ADD77BF79F3E0BE97A1D7A7D36B6FB7721
-:10CC6000F57AFEF837C8AF823FFB5DB7C2FAE3370B
-:10CC7000B0BE43F85358DFC5B79787403908E47B07
-:10CC8000588FD41F80F1353DDD87E20E2007C4F7B1
-:10CC9000E5C0F728078ABCCCAD1F188EFB06EC1345
-:10CCA00091A1FE0F948382BC57F518A7423D8EF8E0
-:10CCB000DA03328F7A26D04EFCD8D7F12CF28F22AD
-:10CCC0000F8A1C5C9B8FDE36E0BAD450769EEB79DF
-:10CCD00028D57ABE337FE6851BE4FF55D7C93F6F61
-:10CCE000FCFCFCF3C675F2CFB6FF847F9246BE4BC8
-:10CCF000FC83FA13D76F777E6C0D5FC0F987CE2562
-:10CD0000023F6462DCB969706F2BC669EEBCC2FD7C
-:10CD10007AD0E9E4D707FAD55364FDF7801C2738A9
-:10CD2000986AFFBC2F9757F2DB8727060F447B7565
-:10CD3000BDFEDE94A84A6683E70F40A9D61326A459
-:10CD40005B07FEFADF6E90BE4DD749DFD37DFF63F0
-:10CD50003FEF52DFEBF0F3926CE68988CFEFDC7A9D
-:10CD60008678BAD67AC0B096E3B9CD5F77EB15BBBB
-:10CD700019897613F8E39FFF097F8CCDABBB68065A
-:10CD8000BA466D3116EAA1FD243C6B41F10CD31A71
-:10CD90005B12EA1BA6EC0B50BCE35351869DE69652
-:10CDA00091308E3B9F62FE7D03A81F951BDE161FF0
-:10CDB0001198BF7DE41643CB2A8A3FF0F32ACCE1D9
-:10CDC000D1F37D3219CE043854056707C0EB79FBE7
-:10CDD00030BD87F1731FF27359FF8CB3F07D01FFF3
-:10CDE0007E9E37BF2BFA7FF58205F717EECB3D67A6
-:10CDF000C478CED83CCFDE9ED02E654B7861483FBC
-:10CE0000785E2FD07807A7765BE34CA2235B363C95
-:10CE10006F5896CDF74D4C758DF9B60EF87070AA17
-:10CE2000D64EE19F3E86E263F467AA13983193F7EA
-:10CE300093107F7DEF23FDE8FD047ADF6D8ABAFE53
-:10CE4000F7EFC9653657077C345269877161A57F52
-:10CE5000A0C9C43AC1D651DC664C2A9797669DAEEC
-:10CE60009C019E0A53FBAFC1B8D728C6F96252EAAB
-:10CE70004D854E1E4762B680F95E6DBC433B98AF50
-:10CE8000A47DDF7D357CD95215B957DE97E95FAABD
-:10CE9000E59370BDFD83EF601CE1518205FDD4B9BF
-:10CEA000F6A0552C1CE92EF335CB2AB4E5C2FC8242
-:10CEB00098268ED7C6D76C70E1C834F9DE3ED567A8
-:10CEC000AF41FADB756DED399F37086DEFA7EA19B1
-:10CED0007E82DEAF4C1DB206E37E400FAA2738E902
-:10CEE0002A7C5E1700E706C805E330C925EA65C05D
-:10CEF0004F7207FBB74FC8F83D23F0F34DCD23B871
-:10CF00003FD79CC0CBADA9DC7F5B23E371BDDCBE0A
-:10CF1000B98B0A0FBDFC74863F37AE0754F3263C2D
-:10CF2000DD1BA5CC7B52E118985773041B20009F92
-:10CF3000BC943A61CD92DEFEF7B7A44E223EF1F7E3
-:10CF400057D88276FC5E194F5B53EF6EC17A3C7204
-:10CF500082F2569ECDF75F4DF5073A94B705EDF98D
-:10CF6000C789F915CA8991F03DC166C8E4FD2474EA
-:10CF7000809F5FB57FDF16F03E3344DDC8FB327D16
-:10CF8000C604D0AF20807E2303E0222DECF783A1DE
-:10CF900067F09F8A77AE5E1A83F1B32D02DDB1028E
-:10CFA000FD6C14E079E396070A43703D2A4A869E99
-:10CFB000D0F6C32DD35ACCA0BFC6A3FE227D5C4CB5
-:10CFC000FA7A22CA39C1D30B6D3723DF542E8D85EF
-:10CFD000F61F6F99B106EFBDDEB764B50191FEE9AA
-:10CFE0009692357AE8F7DECC3FEDC5FEF4D5A52D57
-:10CFF0006384ABF0696DC03CD607C0CE80F66BAEE3
-:10D00000A1CF9704BCBF28A07E5500BC36005EAE01
-:10D010007D7FDA0CBE7F390DE88788BB96BC7C9398
-:10D02000DAE617B4D92F01EDD9C75A7EBFB386C34C
-:10D0300067531F295C1EA282B72C2854F3AF41B658
-:10D040001753A2ECB68EF8F75067FC931A68D79C7A
-:10D050009A73898719D3D8DF3DA2166E1495F12EE5
-:10D060006D79384DB51FC89614E23E51E7FB158B1C
-:10D070000B71BFE2CEDF29F58B0B6DAAF929EDF319
-:10D080007FBC22E2F7F42F57176EA2FD3F79FF2EE7
-:10D090008297B75DBE128674C9C7F3A358DFC59DDA
-:10D0A0003C5F6DE7595D0ACEAFF1317EDFD05903A9
-:10D0B000F400392F6656DAFF6E0C0F5FF812B4DFFA
-:10D0C000F398B810EDD7E1859174DEA8B01FF7C7CB
-:10D0D000F684F7897910E0C6E0078C18576D7C7CE0
-:10D0E0001495EF8BB6655E407EFCCBB564C71B83A1
-:10D0F000C3092FBDFBAD2AC42D59A99F44787444A0
-:10D10000586276A21FBAD2C070FF8931EB0BC427D8
-:10D110004F98C84F9D56DD9FF67B8A7F3F3EBF3BB1
-:10D12000B42B5E6AA0F83FFCD17D0CC7CA5146AC57
-:10D130009FB1442E9DB753F9DE4F6F7E9C4EFB3A54
-:10D14000229DDBD9ED8B380E92CCBE760EA0FB0A69
-:10D1500047E5FC2A6FF773A4F583797CDD9A44F9DF
-:10D160005298450A9B807EDB4DB601FDA2FDEDDEA7
-:10D17000FB49A4FDAA775B8B63906E43FA717ED95D
-:10D18000ED2B8E2956D9F592337AC2F37B46E961AD
-:10D19000D41BEF75E92D38496EEB2231CE3A43F6B8
-:10D1A0009B814F16BED9011F26F513A9DF63A68503
-:10D1B00078169635FE263A17C7A5BC97D5E2A8C1C2
-:10D1C0007C31865ED220B57F7C6BF2883C9C879F49
-:10D1D000BFFE48FA9CFC6380C7BDFCE21A27DABC9C
-:10D1E0003DE0D7E338A26CF958AF9CC763B175290D
-:10D1F000EAB882DF0F5D2CCB3F6F77080F07C3F7CC
-:10D200000F6D0DA2735F879C7F0F55FBC78A7CCC87
-:10D210000CFBD5E1665A17874B421CF08DBEEAF82D
-:10D22000A3F05EC9F306D29B25CF472FF2623DD013
-:10D2300013B70C03BFBBA51F3F0FD0B97CD407C8E1
-:10D2400047FD55E5A3F4E5370B378574241F5531A9
-:10D25000C847F9CF1BE87C755197CA4918472CD2AB
-:10D26000DDCC6A607C239EFF450CEEB3CC7CDE44B3
-:10D2700074F584861EE7F3EA138FF36AB33FFDB8B3
-:10D28000BEF254E790BD1075E09D81FE16971968B7
-:10D290003D22C61849EF8961565EDF85C52F06BB62
-:10D2A000BC34345B42FA6E4679C8A27A09F92C2F55
-:10D2B0007CF21D78AEE5F0C244DA073B99C9F7C1AC
-:10D2C000663DFA6218FA9F871EE6E7BB6763BE1DDC
-:10D2D0005CE7FE9BFB5E1572BE9DFFAB7DAF67FA00
-:10D2E00005EE7BF173A07B16666472BC30C984784E
-:10D2F0008A1B4878B9DDCCA420C08B18C15250FFDE
-:10D3000028FB5EE22FB97E127502ADD38F55392905
-:10D310007F415E98993FFF25BFB7273E3D9ED13E96
-:10D32000585425ED8345C8789D26303BCACFD1207F
-:10D330006BDCBC34E4BF20A2E7CC17667DF16C2621
-:10D34000D26D6C94269E80FC17ED7FFF44F52D3442
-:10D35000BE1302B3A0BDCFFB43DF91489F46D1F17E
-:10D36000F4BDA4378369FF9C593C4F0C01786635A6
-:10D37000ACB319F24DF7B884347F3F33173F968230
-:10D38000F4CEFB43901BCFDFCC5812B416CF619480
-:10D3900035F07BDED3567C47E77159BCBE12E39C67
-:10D3A0005F2F09E2E7D4EB8710FF4CD3F1732E2CEB
-:10D3B000CE48F1A5B21019EE954DB0EAFE9211E9F2
-:10D3C000A1DCBFF918F50A7CFFB4820FF41B51EF02
-:10D3D0002AE7E859A584F25FA4133A3CE7F5553FE4
-:10D3E000EE9F4E8BB3D279D1F2DF9AAC8BE3399DAD
-:10D3F00045559EB9729D377F2DF6AB63D2760BAE45
-:10D400001F9A4B70BDCDEAFB521E820A3DD31B23EF
-:10D41000E0B9C4F599329E0A69FCEDC44F7A7650A2
-:10D420001F81786CFEA219F96371A8847191F2AE24
-:10D430005607F51B6AB6703B217F17C79E887CE0B4
-:10D440003346201F7C21E84C3CFF804D07F5E71850
-:10D45000AF6FFBCE921569346FB34537A23BF2DD57
-:10D46000F9FCB5F0DEED4C4AE88EF7C456444E9A0E
-:10D470008CF5AF89A49740987E9B8DFEDE6B62068B
-:10D48000AE53A7ADD843F39BF3C640BC41C0A6BD85
-:10D49000FE19D9A739327F79E4736BC500BF01A5A6
-:10D4A000FE266E271C22ABAC2358D0EC572AF5E59C
-:10D4B0002B0C448FF2A526A27379F55FA9DFF2D079
-:10D4C000E618A447F97603E5EF08BD49A2F6C5D5ED
-:10D4D000BD730FC2B88B0DE116011E9539C71A1125
-:10D4E0002EAB150856BE57BEE2F3185D1AEF0F4B70
-:10D4F000938EEFB3FAFB8D8E437B767A6B64DC34CC
-:10D5000015DD4F2FD91186FBCE4783DCC978CED7E6
-:10D510003B2FC88AE70A9578DAE925C9FC3E90A531
-:10D520003914F7AB673C9C188176EEB0C56DC4FA30
-:10D53000C375F178648ED92C965C846DFA9B093E94
-:10D540002D9F23A13FCC1F2870BE29DBBAC79800AE
-:10D55000DF1B24E3E7CC6B47F70E457C001F5950D7
-:10D56000FFC435A7A01D2ED735A7F444FABC2290DE
-:10D57000BF00EB531BE61F998B7C3508F4A1CC57F9
-:10D5800073EB772C40F92C7FEB643EE2F5CC5866C8
-:10D59000C4F858B93C7F583F7EA087F6E5DB36E4F7
-:10D5A00033FEFE07C8778ABD07788901E026238706
-:10D5B000336EE2FCD364F450DEBBA6498CD1FE99F5
-:10D5C0009E8DC47640797E0F4014E5FB6995B113BA
-:10D5D00078DE3DA7FAFCDC5CAC4FF3D777C6378525
-:10D5E000325F14579BC82E15CA78F1ACD81E867CC2
-:10D5F00071E6B53D7B87A25C6C132C4C2D0F8A1C09
-:10D60000C679793DE0EF49C4DFB6F3F998876276D1
-:10D610006BA8843454F0A4C89B82970AC6F1A0E09A
-:10D62000A5422FE349AEBF5BC64319F3527FAC75E9
-:10D6300080B419FB7FEB07DA6F3B338D09FC9C301C
-:10D64000CF8BA6CCCF11A1DDDF5F26CF6FFA4DDCEB
-:10D650006E9659B85D2C8B6252F540E2339B51C9EE
-:10D660002F094DCEBC714433FEE7653968A337CE30
-:10D6700003C6E9D1F17B8281FAEB51197F47AAA752
-:10D68000B851AFCC76423F99280F96A9B8CFC95E62
-:10D690001765FD0D32A9FA6EDEAB47880F41774959
-:10D6A00011B066316C8171A0FFD5DA9BE28579DD1E
-:10D6B0003C34EFCD632C4C07FAE488E009DD89F6B1
-:10D6C000E05191F494324E9BF363A287AD8ECB2749
-:10D6D000F20BC60715390D1CEF3279BC269DD58398
-:10D6E000E782D96281EEAF898BCF841EE4F68E2269
-:10D6F00089FEFE6FF900F7236D17C324816AAC7AA7
-:10D700006C37F7625802DAEF2372DCE1C8D21D6190
-:10D71000C52A3AACEBEC3BCB864848FFBC90838FE4
-:10D72000A11C3D759320F3BF75E442D40797C22432
-:10D730003C2FD514E14C433FAA49C796B308CE8786
-:10D74000FA183FFE405E087F502F3D65F1CBA532B1
-:10D750006EA09B1BE906ED6D5C8EACB48F31378AF1
-:10D76000EF8B5E5B9E323CA49FAA056963A6BF9DBA
-:10D77000722FEF7179DE2423317E7B80FC89F6CE17
-:10D7800024E7310ACC837A7BAFAE7188BF8A10B3AD
-:10D790000E977081F581B07F3D55A9473F9F2D8938
-:10D7A000DDABBE977634C849F7CFBCDD45B611E88E
-:10D7B000513DEF237E9EB781DFDB52EC34FCAD6A36
-:10D7C000E33F78AF34F37C3EEAD73FE698E85E5318
-:10D7D0004C7F7EDEE514AB330E47FBFF6D737E9806
-:10D7E000E45F9FDC72D12D8693BF10AF591F94B5B3
-:10D7F0007E40F25CCE9AE93EF6B4159F8D1D82F410
-:10D800007ED940E70766D4C6939D3BB9697A06CEB8
-:10D8100077DAD26482676D7E90C32B78FEC3694B42
-:10D82000B35E42FFEB68902D1FF9D9BB5AB0E0FA06
-:10D830006AD8E6AC45F741FDB0D03E5D71DC873675
-:10D840001D1D8B743FB45024FD64DBF4D424ACB7AD
-:10D85000ED14F1C618AC672C8B30AF29D3875BD0A1
-:10D860002F50CE17D618B8BE3D2FEB87936D25E706
-:10D87000D3BC9A9A14F497BC1BC01EE1BEB7D15B0F
-:10D8800042E7BB058B7523F0CBB782936066B1246A
-:10D8900054E7E07D96F5941FE75CB2C9827EF2FD05
-:10D8A000266645BFF6FEF77A0FC2A5824D5E578DFC
-:10D8B0008DE4DF55F0A57CDF2BF33D135795D0BEEB
-:10D8C00043A49480FAAD493E377E541EEFC9252FFC
-:10D8D0004F42BFE0E496E408A6C2FB49394FD32C7F
-:10D8E000D083DB3A58EFFD7893127770D1774AE511
-:10D8F00078E03E436D2FCCFB1978BFEBC486203314
-:10D90000E6E70DBCE775C2C0ED47BBFB5E3BB570FB
-:10D91000609EDBC0F12865BBFBFFFD433AF4E315D5
-:10D92000390B7CBFDD7DF2A4EB3B5F8579C9F0BE8E
-:10D9300077D34D8CC63932F8C737515F97D49A2CBC
-:10D9400078FFFE589044EB2167169336A39D314B28
-:10D95000E1B89E3FB62F83CEFF957CC548AE4AEA1C
-:10D960004517A62AFE6075DFDFE502FC60BDC18AAF
-:10D97000EF9F5CB37A1217336D9E856CC6E57326F4
-:10D98000AC93DC16FFBA2870BD347BED1B748FF0AE
-:10D99000E75A2F2971A4407CDFDA5FCE4FDAC9FD48
-:10D9A000B9F7806DB207B5C7776B9583D64567AB7E
-:10D9B0004AA9CCA9DB90D753C2FB14477E3B0CE5A8
-:10D9C00026349CE221AD5595B489777667C665BC4F
-:10D9D0001FFA6E48B805F5C5D9AA85F2E502994F38
-:10D9E00064BEBCA5BE51ECC9A87DC33068BF3B2452
-:10D9F0009CEEBA24D9B2C3D1CE2B740DBCDFACCC13
-:10DA0000EFD4A39CAECA784F6D991E867E67E3BAA9
-:10DA1000C8869C283C9E1B6E417F7BA67CFEE5F859
-:10DA20005AAE6FBE3587BF3406CFCFAC9F1883EB9D
-:10DA3000BA070D5EA315FAB5EE1A1F8671BC6FF416
-:10DA40009E30BC6FFC0DB477A39DD0BB44D4734310
-:10DA50000B18EDE30D75EB99144F5BE6C41739AD68
-:10DA60007A17D2F5B4FBE29E2BC847AD3A8A77010C
-:10DA700066F65C81F6D6D03E14277CF06DBEDE647F
-:10DA80003F76E1F501F7169FE9CFFD9613EBDF1C1A
-:10DA900047EBF34D060B8EF3ECA6CF63F01CCE6C78
-:10DAA000C6CFD77FBB45A079CC067E0C8A47FDC088
-:10DAB000E3A0B341EF9B85F67C98B7A59AF8703642
-:10DAC000F021E6F59E6DE3F99867633E6689B5CB74
-:10DAD000FFD155E6BB39C077787FF7E7CEFBF13B46
-:10DAE000850F03E45EA1BB821785FE7E3E649AFC2F
-:10DAF0008211750387F7647E7DA0DCEF607ACF2A00
-:10DB0000BCA7B1400CADC57C55FBF5957FA0BC2DE5
-:10DB10004E3DDB4CF69CA562BEBC05E24D568C0723
-:10DB2000D6182BDBF2BA607D605E173184BF3F1ED2
-:10DB3000F313C37CBBA6C5D3F72658ACA310DD8670
-:10DB4000280FC505C43C9D8DEEE5D59868DD1CA861
-:10DB500087EA64FADE95C6F5D0FFF4E7E7B5957B72
-:10DB60007F4A099AB137F2FBF8E0884B1234D9D5D5
-:10DB7000FFD0DDB84F3B7E58C42F12E1FB7B5F3DE9
-:10DB8000CAE18C88ED090037F5FFFA6EBCC731FE9B
-:10DB9000E6882C03FA01D5C7EE1E09F0F1FEB67730
-:10DBA000FBABBEA3F40BCF77E3F37FC439DEEF4FBB
-:10DBB000CFBD2548EF734218CFF796E4A538A8F2F9
-:10DBC000DE01811D7E57F0C31E038BC3BC06FF839D
-:10DBD000BA3BBAF3B27B9AED63FE7DED73A4D077C6
-:10DBE000B8CE94F77F7466C988FE9FDD6AB4F2FCF4
-:10DBF0008ACC6E06BFEA2E997F8BCD974792FDADFA
-:10DC0000645613263059AEBD8FD5CF7F6F6FFD8D13
-:10DC1000DCDB634E9E87AF46CEC3D7D93D4AA1E138
-:10DC2000A31FD0BF0CBC3F95F149F35BC827E3802D
-:10DC3000AFD05E643673F82E994FCA778CA57CCF2F
-:10DC4000F30F185CE827CC92FDB12447172641BB9F
-:10DC50004B20BFA8175AC7B953507F9CA862B5493B
-:10DC6000A0B00ACC8E4BFD014F4DF11F515EB41395
-:10DC7000EB6BC2D0EF3903EB8931D04599ECDFB3C0
-:10DC8000CBA2FB36F483E3FB6D5CA9E2B79F643E55
-:10DC90006B8D77C7E1FAC6196FE2F91A2FEFA13C35
-:10DCA000CF0509A3B3308EB4BF6A273B9AEC7FAF90
-:10DCB000B3FB284375230C69AA7DC971FA8ECF691D
-:10DCC0009C51F2696EE2F6DBA4AFA53C5A40CACA89
-:10DCD0006A82ED14578A451EC5F8B0F410C1CB66B0
-:10DCE000310BDD63F5EFD3D17D5085FE36EB959199
-:10DCF000D86E1CD01FF58DCEECD5236C2FE0E753EA
-:10DD0000FA01E1509F28F41F252EFA2DD261BE7C26
-:10DD10008F6BBE50C9618399CEB906EA478C6B16EA
-:10DD200091DE74EECD417F0CF424E55590F5A2040C
-:10DD3000FFA3BC48D91B8CD4ECDA7991F6E6FC073A
-:10DD4000FA31234D9B475CA193E25F754627454F0F
-:10DD500002BD86A5455F3FBD943C65F39FE7F1CECC
-:10DD6000F9CF4F8F1D44780389437F28ED4F44C47A
-:10DD700099F21CD8FA48E263C308BB84FA76ECCE69
-:10DD80009E4C8247B3760A74BE75CCCE4882C37C63
-:10DD9000DD795E25D9DE8FFD63B711189F3CF9D27E
-:10DDA000DF1FC6BCF7637EC3287EAC0B0EA17C13BD
-:10DDB000E208398F8318F221DE63BD20F1DFA1B0C4
-:10DDC000B376F9037444FF267E4E1656794E4E27DD
-:10DDD0007EEF6FFE3E6EE7E70FE7FB8217F00D6800
-:10DDE0007FA150A43C4DCF04A793FF5673B781EE9B
-:10DDF0004730A7ED2FB8AE9A2CF383291616962A32
-:10DE00007A054920AF2AFA3C1EF4DB0F1DD0BF076C
-:10DE1000D65D420FC682532334F57A67D037983FD8
-:10DE2000D6102B5A5C30FE506B0F4D7F76B1CC80F4
-:10DE3000F114E6E07EB4C25F4C6CD5D3BDF95C9EB4
-:10DE4000BFE2EEC9DA7B9286DCF323C9DEE46AFD29
-:10DE50006FFB35F236FD4AE1A77EAC9F9C979EECA6
-:10DE6000FF85167E3F4462F6B58ABCA0FE07EFE64A
-:10DE700019C4CFA42603734984BFD7B0FE82D364EC
-:10DE8000C178409B1F9E04EF45A19134139F635EB0
-:10DE900050F53C312FA81A2F9817540D635E50751A
-:10DEA0007BCC0BAAAEC7BCA0EA7ACC0BAA86312FDA
-:10DEB000A8BA3DE60555C3981754DD1EF382AA6142
-:10DEC000CC0BAA6E8F7941D5F59817545D8F7941A7
-:10DED000D530E60555B7C7BCA0EA7ACC0BAAAEC7C9
-:10DEE000BCA06A18F382AADB635E50753DE6055557
-:10DEF000D7635E50358C7941D5ED312FA81AC6BC59
-:10DF0000A0EAF69817540D635E50757BCC0BAAAE51
-:10DF1000C73CA0EA7ACCFBA98631EFA7BA7D335B78
-:10DF2000928C766C77BCE37FD268DFE95BE2E783B3
-:10DF3000F7033FA31C364DB450FEC21B5C277E9EE8
-:10DF400026EFF7C8FC7B89854CC573E89DBDAFF013
-:10DF5000E7EBB2BF01F66039F12F0BAD457FEE71F3
-:10DF6000BD8DEE4339EBF8FD44A6E77EC00251F6C5
-:10DF70007FE4BC100B4489FC00CC1DAC578DA7ABD3
-:10DF8000CDCCF42A3C4416583470B43D56D3BEDB95
-:10DF9000644953DFDD91AAA9EF596AD5C0BD2BB3FF
-:10DFA00035EDFB2CB469E0786781A67DE272BB0693
-:10DFB0004EAE9DAC69DF77AD4353DFCF55AAA9EFD5
-:10DFC000BFA552030FA85BA8697FF34EA7A67EA04A
-:10DFD0007BB9A63EA3A956036735AFD5B41F72D04F
-:10DFE000A5A9CFF16CD1D40FFBB64E03DFE2DDA9BA
-:10DFF000697F9BCFAD8187B37D9AF679E6031A7866
-:10E0000094E54B4DFBDB638F68EA474B2735F5659D
-:10E01000A7B97FCF6A607D8071CA109E5F63AE9B97
-:10E02000D5A17F7167EA794D7B4314AC17807FCA15
-:10E03000411FA2DFF77D9738CAC7CC2AC3AC78EF5F
-:10E04000DB39A2F20FEA7BDE63AD3F68BEFF4C70A6
-:10E05000983B88D61766B2B7230624907D6CCB27F1
-:10E06000A2DC67675E161B4521212FFA4702FEC21C
-:10E0700012C061369E171AFC20F29F2CE017A1BF38
-:10E08000D9B62ED2C5C7A35D0EF6FBC5BDAEA8F2AC
-:10E09000BC5CCB2FA66F67519EDE5103301E5EF72E
-:10E0A000463EAEB36631E732DC4F54F22CEE0FD26F
-:10E0B000C6B79472B419F0ABFADEBEA0DA5E83AED6
-:10E0C00022EFA3CDADD4BEAD5F39FE25C064E7AB72
-:10E0D000FAFF2DACFFF420D7B555207FE00F3D5956
-:10E0E0006521784D552CC14F574954AEAD4AA5F224
-:10E0F000B92A2BD5AFAFCA26F8852A1BC1AEAA0212
-:10E100002A3756D9E9F9A6AAC904BF54E5A0724B2B
-:10E11000552995AF545552FDD6AA8504BF5EE5A496
-:10E12000B2AE6A393DDF56554B707DD55A82DFAAB3
-:10E130007251B9B36A0B95EF54D5517D03F86F084E
-:10E14000EFAE7213ECAE6A22F8FDAA66823FA83ADF
-:10E1500048F0DE2A0F954D55DF52F9E72A2FD57F7B
-:10E1600052E523B855DE87583440D0DCC753603DB4
-:10E170003BC6FD3DCC5B817918B20D67AF961F376A
-:10E18000900EA7E4FE0D23C05DC238728F948D35CA
-:10E19000AA75C5F201DC5FACD6F1FC2DD53D98A582
-:10E1A00086FC761BE3E7B4B8DF3E13FF25C1D3A896
-:10E1B000AABDB8DE28A9E479CAB3901F53891F3FCE
-:10E1C000B9A1759ABC2ED891687F6600AE43425CB7
-:10E1D0005FC467FAEFD11F4C743C877C7AA1F2C10F
-:10E1E000BDD87AA6C59A821F196B724763FE2FEFBE
-:10E1F0003ED1BA51EAFC7B15F2FD874EEB779FECDE
-:10E2000085F6AAE02791E2FAFB0DA193719F7FABFF
-:10E210008C8FAD03749AB228C9FE2A8EE74472E54A
-:10E220004B0F09FEFBFB77E1121FE47B3C93280FA9
-:10E23000CE4466FB105DF0BBC11144F81EE6A4B2EB
-:10E2400035C1518FEFDF0B0B10841D434D711DCD78
-:10E2500027703CBBE5F1EC96C7A1940B92ECBB1088
-:10E260006FC7926D9AF16C95F3338C63DE17705C17
-:10E27000FFDC75FEB890E8C7775B3C8555529E8CF5
-:10E2800022C6E3298F635E8C287F5E0C65FD50B447
-:10E290008FFFCE11FDA1FD5C104FEBDBC0BC19CB95
-:10E2A00086EFE17930603D86F77F8BE6FD82F42FC3
-:10E2B000FE1E14DEDB5DD0E530E599F1CC025EEDAB
-:10E2C00049793578DE1B0720B027E5D5A07AE1260D
-:10E2D000F87F771C9739554FE3EB42F94E9E09DEE4
-:10E2E0004F796930A660EA8A798F79BC66BFFD3CB8
-:10E2F000F7BBA3BC743F7547A2E3EB013C4EFE7431
-:10E3000006C689909FF03B16179D5F037E320A80F8
-:10E31000A29951C04F1DF81B0ADFCC95EFE128CF21
-:10E32000811F5B11DF67DF1E928A7C53B13B47423E
-:10E330007CD7E8F87D3AE79FE57D41F9F710C4F016
-:10E34000B40D74EF009D71A46F4E28DD3B6814D9A5
-:10E35000C2373AD0AFA1E95CDEF7C7F27C92350153
-:10E36000FB93C6744E77633AE787B1EFEFA33C6443
-:10E37000739B78BC9A657AD2EC1D9CCBAA58F89B0B
-:10E38000A79354F3A8D879849FE7629E34F539AEF9
-:10E3900064F9FB0AFF89C650C78610F5F878FC01BE
-:10E3A000E420243D8BE4E038DEEB1E6792C2EF11DF
-:10E3B000E8F7C1CE627E19C71F2C741E503917387A
-:10E3C00083D9A99C099613F9DEEE5C4DF7E767B394
-:10E3D0003A7A3E377B7A1CC215CC3B3216D747CBF4
-:10E3E000AB3FC470D0C4DAD5A3BAC3BC26B8A67DEF
-:10E3F00088E5F84DC271A74472D43B1DF7B785CAB2
-:10E40000A53DE07BF76D1DBE14E3D6E3444E07F651
-:10E4100031A74311F0B318D17E7E203749E95C6EF5
-:10E4200068FC8ADC142D66363C7FA0DC0F6993A360
-:10E43000EC39FFE8897B38E04F22BF56EC3645D0F7
-:10E44000FA14F3CCA0BE92E567A99EFB974E4C6DE3
-:10E450004AFA93FB1B069B9CCF8B717F648E93AF14
-:10E46000C74E19B8BC9D3A14EA42FE5ED0E5F538B5
-:10E47000920F83221F3F4DA5F33D0CFC8F5BDBFB0E
-:10E480001F6D79667A31F237589C237650A2DF9E51
-:10E490009FD2B90687F1BCFCA3105F7B63F9FA79C0
-:10E4A0000EE6A1C1FAAE7609E3A5A7A2CD745F2856
-:10E4B00030CF1963569A9F419E1F8C6C32FAD32637
-:10E4C00039AE561330DFEF83E268BED27056C7D044
-:10E4D000B1D05B9CD351EE1FE2766241975F3BF077
-:10E4E000FB9E20661186D17C281EEBD4317B0D8FDC
-:10E4F000CFD2FC16EACD163C97B36C9AE811C84E01
-:10E50000C038319E1765B6F2BCAA4AFEEDC0F1DAFA
-:10E51000B4E333C7319C9F4D64DEA0617CBC383EC0
-:10E5200027D083E803F034D5F8A05F17E5FF0996FC
-:10E530002CE88735FDF8108F2F5773FF11C6BF8564
-:10E54000E8D31DC6DFF3DAE337208BC2F817A4C780
-:10E5500013DFD5E00EA28876B62BE9DF0941F64736
-:10E56000900F931C2B7BCDC7B8468EC98AF13B76A2
-:10E57000B9A617EAA91026515EAD71369E570BBA9F
-:10E580005B82FC301EF3D659C80F6855E761630102
-:10E59000F135200BC55727607C8DDF25FA00E3B3EA
-:10E5A00013E5F3CDFDD8570AFE28BE26E2F8285E13
-:10E5B000EDA0719A90B25006619C87E8E0A27904C0
-:10E5C00033B71CCF6E26FF60B5CC87430F32B21332
-:10E5D0004343B89DD87D84B9F0DC57E30F93F242F2
-:10E5E000A17EF7793DE929C013E5037CE7736E57F7
-:10E5F000769F3CDE13F703AA7FD8DB13FDC4DD064C
-:10E60000875881EFE7982C8BADFEB846C3C1101E2A
-:10E61000D791E37CB7C8F36C60CD3515509FDD5DB5
-:10E62000641807CC6A7107A33C638EDA8EF61B73FD
-:10E630002F1A35BF6B61B068E16CA682E3F1E85137
-:10E64000C0EF7FDEE03A775BBAF6F729DB7EF7B3FF
-:10E6500035EABA7EF733539EC7AA74FBBBE964D789
-:10E66000268832DE05C417E88146C4F773E546FA0A
-:10E670005D83C67263778F6A7CB5B3FE49F87DEF20
-:10E68000C77F92DD7A2F4BC98F531784CF8DCE5021
-:10E690008ABB3D77594771B775A55FD3FAA4369BFE
-:10E6A000D1EF88D55E2E263FE05201C34D24567D22
-:10E6B000EBFF9622FCBB5BCCF4BDC0F1EF027FDE2A
-:10E6C0000D847A17FC79775FC6DE067F1E61BCCFAA
-:10E6D0008AE576F0E7B174813F8FE50BE0CF633BCD
-:10E6E000F4E7B17C0EFC792CD7823F8FE5D3E0CFE5
-:10E6F00063BB35E0CF63F924F8F3F81CC69547E314
-:10E700003AC8E8DEFEE2E0B015E86748CE50F237DE
-:10E710003EB50DEAE251D9D95B2FEA3474CE6DD5FE
-:10E72000FEBECDD063119ADF3FC9FEAA87A67E70D8
-:10E730004B82A63EDEA9FD7D9B3E0BAFFEFB363D28
-:10E740004B4704FC3ECE1D01BF9FA3FD7D9B68FB94
-:10E750007D01BFBFA3FD7D9BDFC9F932153AA648F5
-:10E76000AF05215FAC2B9D10CE3AF02F94F2499962
-:10E770001E0AFCD4A3E2E48EE2C85137737BFFFE8D
-:10E7800021D3BE4D80CFF758B81DE3EEEFD974A466
-:10E79000979E5B1B4271589367E849E49FF76C4C66
-:10E7A00042FE79EEF2882E389EE140467CDEB3943C
-:10E7B000DBA73E374BC4CF3D4BBD22DE17BDEDB2CC
-:10E7C000D78AFCF85418FF9D2DE8D7B518FA7B7F3F
-:10E7D000ECE07E18C7792E04F819E5CDED0D4E0258
-:10E7E00038FC8A8EA17E045B4979FE9DCF86C8E7FE
-:10E7F00051AFD07DB870D4E9A097DE2BE5DF4FF1A3
-:10E800005C0E56FB43BFFBE95A7861C4579DD6DFC7
-:10E81000313B01C7EBC73BA84628535829FB2DE2E3
-:10E82000A38CCB4F6DA98EE4E912C813E207664DA5
-:10E830007461CD5A797F12E5434D87B2841538CF84
-:10E84000E7D6E869B76C94B875DFCDF0CABA16910F
-:10E85000B6D9258B37B823FF4E19F73A1B9F5F8433
-:10E8600095E9D0CE45003E5DB49F6DAD56FF9ED577
-:10E87000B3B27CFE5E96CF67647EC0F536C2A3C499
-:10E88000F5A353701CD95C5F033D05BC8F75690609
-:10E89000A3DF11FD7D6142978EF27CAF91C7F182BB
-:10E8A0003CAFF5D82FC93397FB5162D170EC679D0F
-:10E8B0009D911E5F67FBBA1AE376970A79BF7D16B2
-:10E8C0007904C46FAF4AAF80FDF77ED84DA54B1ECB
-:10E8D000678FD266AA57FA93AC2ECEEF655FB32648
-:10E8E000982F1EB215C95EB4527ED4757A3D433B53
-:10E8F0008CFA0CE14B663D9E91603D661D63789FEE
-:10E90000B936444FFB14EBE69E2278B585C361CE41
-:10E91000CA343C7FF1B63C9F30A7936057C07C520D
-:10E92000A407C2D5BFE71A58EE90F1BC5DC6C7DB9D
-:10E930000687EE028C63C85F45FAFD8ECEDE53EC8F
-:10E940006CF657BA00FDD34523FFF81B7BB25DF888
-:10E95000F5CDB87E76DAC92E28EBB6ED63B87D5DCD
-:10E960001D3CF5635CF717CA7CF44CF0B80FB1FEA0
-:10E97000B3D1FC77701A47DFDE5BAD2777CAE3DEE1
-:10E9800021E33DC7693BF430B41F6F37E1C8C08C49
-:10E99000D97AFF02FAB38F11AD6EA05B4B96220FAE
-:10E9A000F66094BBF7C74C6707B1FF02BEEFB4BD7A
-:10E9B00060223D9798FDCE01F0DE5F9AF5E4CFC06E
-:10E9C000F3ABCAE37E19FF9FC8E3F8B38CFF269927
-:10E9D0004FF7A21DE98B7196542ADF97ED885BB63D
-:10E9E00023BB653BD220DB91B7D18EF4C5794DA610
-:10E9F00072BB6C4732473F457ED225CC8B2BA01D86
-:10EA000099CB96C138F361FC6207F6EDAE6C31E04C
-:10EA100077B2823574BA333552038F967A06FC4E3C
-:10EA20005762C0EF78F5D7D4E79933027E076C9828
-:10EA3000A6FD6DBE1101BF23A6B523438F4DD0FAAD
-:10EA4000335FDDA7A91FDC52ACA977E23F60BE5956
-:10EA5000C718CF2F1B9CFB04F24BD671BDF2FBCC29
-:10EA6000B48FA6F85B81FE4F166BDBC7D3D13E9EF9
-:10EA7000934978AE93B6961334F5E43FB518EC3D60
-:10EA8000F1FC61F578E03B3C87D8523286D13E3CC0
-:10EA9000F02FC85396FDC457946F542CCA203FE9F9
-:10EAA000A25EB39F9613B02F661FA9DD37CBBAC6FF
-:10EAB000BED9B19B3BF91DF6D688EBF2C7409E4408
-:10EAC0001CF733C153F720DEDEFE92DBA9C62F1FF1
-:10EAD000E989CF3FC0A6D0CF8E6F1E21BF6B479B69
-:10EAE0007C3882D5FED6760FB7176FB524ECC47587
-:10EAF0004666B4407A30F3C8FC29C48F2D3AFA7DBB
-:10EB0000CE94828A60C4CBF6838B83B5F7A754FA80
-:10EB10008108A5D20F22B232FFBDBEFF07E9D10F97
-:10EB200034008000000000001F8B0800000000007F
-:10EB3000000BED7D0B7C14D5B9F8999D7D25BB812B
-:10EB40000D09B08104260960AA3C36EF4D48C22465
-:10EB5000048C1AC8427804C1304978A48A9AAAB5AC
-:10EB6000D86233211062A4121F55B08A2BADDAF699
-:10EB7000F6B65425A0A22CCFAA5058306844D4052C
-:10EB800014ADA5F7A284D6F6CFFFE73DDF77CE24FC
-:10EB90003BC32640DB7B5B7B6FF8E9E4CC3973E653
-:10EBA0009CEFFD3A134208F94AA4FF8B1F4E0269FD
-:10EBB000047FBE4A81FFA7F4B6A19F5C4D02F6F028
-:10EBC0007686A19D6F185F62685F6F183FD3D0BED5
-:10EBD000D130BE56D7BF2D3473A0E2A4BFC3CFA49B
-:10EBE0008BAF5B1A09095CD53B2EDBEC133D632F21
-:10EBF0001E97D369EA9D97FEB7F3FD25A6F3F1842E
-:10EC000074748A7E5B32BD1E5F42D42C3A4FA7C912
-:10EC10004F04BC9A08EDDFD6C5DA36A23AC6D3FE59
-:10EC20002D9D664F9B44C80EFEDE31BE85037D31AF
-:10EC3000844C329F8DF85EF982A9777F04E69B3978
-:10EC4000904418A75D77F179038D76BC6E6F74914F
-:10EC500080ADB75F8CC9EEF4D17574844C1E7A9B7D
-:10EC6000AEBF248ED07DEF762E76C0BC74BD840CF2
-:10EC700023E4DACD23AA9A461122D1759BE83EB649
-:10EC8000844CA48DEE33EB287B7F96458E734580B4
-:10EC90002B21263DFC2F9A8FFE009C9CA2BF8DC28B
-:10ECA00065D7FB73E2C6D3F95FEA1409ACC7AAD4EF
-:10ECB0003B7CE368BB8BAD4B9B77B25DD4C1A19825
-:10ECC0003874F8283C3B48D7CE3A41D7499FB74AD9
-:10ECD000157100DF4BAD939068031D0D32B487E9C9
-:10ECE000C68F9128DEC6F58D8797381EB6001EE8C0
-:10ECF000C65E8AF254F922C06BCB07D67A7FD8FD64
-:10ED0000660F054A365C4D78CD3A61F204287CCE18
-:10ED1000779A3C00BC3C57BBD810619EFC8FF4F442
-:10ED200099D319AD83171117F4CB07CB8F37ADD912
-:10ED30001336FEFB9E98F8D3D7D05F72492EEEFFB4
-:10ED400012CFFFA9515DB3C742E99892EC663A8EA3
-:10ED5000B82A0949E87B3C212B717F1A1C892B8E2C
-:10ED60006EEE72F0D48ECF5D84AF3E9EEF9D472550
-:10ED700064308527052F8C5B3BDEF7B887B6496882
-:10ED80008608EF7FD0719B18A2EB7ECC71DB6EA062
-:10ED9000CF037FB64AC0D73BFFDC9108F7F7A76FD8
-:10EDA0004D04BADF4FDF1D84FD9929D668DBAADE4A
-:10EDB000E400FA7AB3F308F28F4482374CC882B683
-:10EDC000C9D34687BD9A563990F403B7D7399DEC1D
-:10EDD000E3FCBA87F3EBAE4637E76309AFAF35A67E
-:10EDE000E1FDED8D1E6CBFDCE8C5F6B64619DB1DF6
-:10EDF0008D65783DDCE8C3FB871AABB0FDDB46854B
-:10EE0000D161DA9DA5208FCE275200D07DAD744C04
-:10EE10003747C2E775929ECFAE75EBF96C0A8573E2
-:10EE2000787BB27DB8812F5375FD93BEBC5AD75FF6
-:10EE3000783643D79EF869BE6E7C5EA844D7CEED87
-:10EE4000BA5E377E6669A5AEDF57305FBF3ED189B7
-:10EE5000F265874B40B93C3DAB4ED7BF037E0139CD
-:10EE60006C17FC6A32C0A5B25F791A00FCD8008E1C
-:10EE70008C8F7FC3F1B317F06303BC30F8BF0AF087
-:10EE8000A7ED5700DEF49ADDADEC1E28811CA8C763
-:10EE9000B6356DA0D343E1FFAA5344F9BFB5B10124
-:10EEA0009FDB7FBEB65BC4F53A24C0CB0EBE9EFD91
-:10EEB00016A55B8C87B620AD142E5E5776979EDF25
-:10EEC000C7942D44B9B9A3F3A403E8EDB52F2F4F90
-:10EED000EF69E37E432A27037D1475525D957C69B3
-:10EEE000FDA7E9AD4BCDAF8D03BD1A495F18E7BD56
-:10EEF000FE4B4524741FAF76A90FC7403BF04D5120
-:10EF0000A2ED9C2E6532E06D4F9AE012051C375938
-:10EF100086755F387203DC7F2D6436C1BA0F5C18CA
-:10EF200044601F3BA8DEB5D1716F92D4B51328BCE5
-:10EF3000035D5FEC07BE549D16CF6872F13A52D361
-:10EF400045942B5BC6DA4CC204D0776612180B7C52
-:10EF5000AE203C3BBE4C71C2754B9AC8EF0791DFA7
-:10EF6000C7A7BBF0B9572F64C443DB4482280F0204
-:10EF7000DDA6327F84FD8E87F750B9937DE143870C
-:10EF80008B8EDFD75DEB00F9F25A179B3F7B45C8AC
-:10EF90000170DAFFE52627DCDF919689F3EE1CB7D6
-:10EFA00014ED8B1DDD26A4EB1D63D73833B2709FA3
-:10EFB0001E80DD8EEEDAB5E940D75D666C4B4421EC
-:10EFC00041A0B734A667B774D79223B4FFBC47F407
-:10EFD000039D6593F67D03E0FE90355692C2E06F87
-:10EFE0001E42C8ADEC6132D9A59703255D7A7D62DA
-:10EFF0000D2D983503EC08A067DA9E668ED3F5EFE9
-:10F000007F7765FC4CC00B8537DC7BADFB8EFDE369
-:10F0100040FEF859FB0FC77F621D48AF4DE3D60C89
-:10F02000BF0DC66D71786C12F428E40BDACEED36A4
-:10F03000FBC1DEC876EAD7B1FF1B9508F72DDDCC02
-:10F04000BE3A9FC6F6B3C353471EA0CFBDCAEDAFAD
-:10F05000C9274695C3FB0E50FB09EC8A573C2FC4C9
-:10F0600065823CF38A3A7AA3F0417A39DF49701E0F
-:10F07000FA33601A8543011B42F9D0D77C3BEDDFA0
-:10F080009F6773ADA4A8DE7161D7EE3B683B374143
-:10F090002422DDC937FDFAF5E5FDD4A16BDFFAA91D
-:10F0A000DE2EB11181EB7327CA81BEF867E259AB3E
-:10F0B000EEB969669B6EDE5C12D68FF8B4F6F62761
-:10F0C0005FDA3ED9CAE59A669F6CB528F37D40D7D2
-:10F0D000C15997D0A32BB9FE6D4079B18D104F5B0C
-:10F0E0003A95EBDF1065E0C3F3C7ED08C7DCC766F0
-:10F0F0004C24A8AF9589C00F488C61F680F7F8259D
-:10F10000EC15974AE273F8AB085CCDA743747C2BEF
-:10F1100055F35F810EE7FADC386F5F7AFF41C70075
-:10F1200094FB05A54C2F3CE638887ABEE37DAAE720
-:10F1300005F68E10C5FB6CF805F4FEFB561CFFCAE5
-:10F140007502CA11CD6EA824B285AA3832DDDB6DF6
-:10F15000FE01C59FCF5E3DEE567A7DE5DD8EE1C0B6
-:10F16000BFAF807D80F2A1C1C1EC8318358E2E71B6
-:10F170007B970DF970EB5913B183DFB0DD86744ACC
-:10F18000F9F4FE71F43DDB83CC5EE838CBEDBDEDE8
-:10F190000EE4939D7F60EBE858E1607EC619AB0CEE
-:10F1A000F6F8D6153108E731524CC00CF32D67F351
-:10F1B0007771BCBECDF1BA9FEBAB37B8BEFA0DD8B4
-:10F1C00013A8BF983DB11BEC097ADDC9ED891DA0DC
-:10F1D000CFE8F5C5B3CFBF077C797E7B14DA9D639A
-:10F1E00048DA6658D776A715D76984F33C45CF0728
-:10F1F00073ABF47643F958BDDD70FDA8E1BA7659DA
-:10F2000062AAEEF9A9F1D7E8FA4B9D997A79649E42
-:10F21000A86BCB17F4764385F7063D3DC9617603AD
-:10F22000CA3BBDDF383BDC6F4C063C313F676BD7D8
-:10F230001D88C7ADC753062A6176C2360EE7ADC733
-:10F2400099FEDC16FA22468960477CCAC77DC6F162
-:10F250007186E3E33F46C8BF4B1F0CFCF20593BF2A
-:10F260007DD0B1F6BCF6DCA7FE5303C2F5FA4851D7
-:10F270004226D1DA7FE8786F0CF45F2E5F503A6D4A
-:10F280000D513C7F478C696FA38FAC31373C056DC6
-:10F2900055359367B2101C6966ECBFDA03F2B839D2
-:10F2A000A6E139E8DFD264736D8A073EFAFEAFA0AB
-:10F2B000BD9CB2828D5EFF1435C24F28AB39324CF3
-:10F2C00038FFB316DF700FE84DC137FF563A5EDDE9
-:10F2D00060F53C235DBC9ED80C4163F66DA087446D
-:10F2E000CEF77F1194D80C7A5FFE8580723A4A225D
-:10F2F000A8176CC41700FE21F5F27CE00F62A2FC97
-:10F3000043AF8D99CA50184F6422B9E83CC8DAF46B
-:10F310007D4270DF9F05BA2E0B6950611E5B3D95E3
-:10F3200030949F1F4D5746E078F34C9CFFC569848D
-:10F33000803CA3DBC176D6DDC4D5164B286B2BA64B
-:10F340002F687B3EF5F7E1FD26C732D453EFFDCEA3
-:10F35000E41723D84B3D705E6639130A8B8F18E98A
-:10F36000A783D3C5B6641FCA5FE3F3B900170AC702
-:10F37000AD1F4E1781BEB2EC0364B02BE806C51971
-:10F3800054BE6F3B79BDA326C273D767D5E4660C24
-:10F39000EE6D6705378B354EF4E745D8D716FA3B47
-:10F3A000ECEBE54E5300F07BDE694579D2D73EF2B7
-:10F3B00042FA38442ED80361FC46C80217F88B0283
-:10F3C0006917BEBA269CBEE4FBC3E9EBC58BE90B0B
-:10F3D000E1FC9DB7D210AECD02A32F95D217F4ABAE
-:10F3E000250D485FAA89F89AB390DEF0F9E566BB6F
-:10F3F000CB4625E4B28C147C4F474CF97B0109DFE6
-:10F40000973A13FDB96AEECF55A39C7FE32893F397
-:10F41000C67DED3C3A677808EC89D17387039F7706
-:10F42000800218068BCA9B27EBDA248076E0140250
-:10F43000212B80C03CB03F3BAED3DA5ED62E66E3D4
-:10F440006F79FED10D2AB46FE2FDEA6CD6AFB549F3
-:10F45000FEBC62685B4CD83E09E3E9FB1EF3C8CBF7
-:10F46000006F8FA6CBB7025DE680D142AF9F4D9073
-:10F470006F87F6B20C82FBFDDE04F95B304E6B6FDA
-:10F480001B2FDF19DEDED2E3A7B6733FF556B44B70
-:10F49000DFE89A89F6AC447C3780DE7923C8E251F4
-:10F4A0005B46F5EF071DE4F6FC01EEA7BE09F2E8A6
-:10F4B0002AD027CC4FDDCBFDD4DD5CAFECE47EEA77
-:10F4C0000EAE575EE57ED22BDC4F7A09FCD4ABC082
-:10F4D0000EA9E27112E6A7668D9E5C8A76844BF3D4
-:10F4E000534744F4532BBC7A7D33CDA3D73737A48D
-:10F4F000C519F48B5EDF4C8DD7EB9B52E73506FDCB
-:10F5000092A91B2F5FD0FBA945DD25BAF10567F451
-:10F510007E6AFE473375E39765488847EFF11B75B0
-:10F52000E3723A6B75E37AF1E6433C59D5279D6067
-:10F53000C76D1955C7F1C6EC050D6F1D97C0DB6F80
-:10F5400038DEF672BCEDE678DBC9F1B683DB03AFDB
-:10F5500072BCBDC2ED819738DEB672BC6DE1F1853B
-:10F56000831C6F0738DEDEE4FE6ED6E8DDE89F9D83
-:10F570003F4B38DE368A91F05696281AF0E030E09C
-:10F58000418FB712F370031E520C78B85AD72E3839
-:10F590009361C043BEAEED3D5E6280FFF506BBA148
-:10F5A00052D7AFE16D9A67BE81BEEA74E32E9BDF4E
-:10F5B0009CCCCEFB6BF96D1FB7E3F670BCED02BCC3
-:10F5C000619CC8C3E3115E1EF76576DCCB1C6FDB64
-:10F5D000785CA803F006F61DC75BF3A87368C79FA5
-:10F5E000BFA0E1ED6044BC5D29BF5DEBD6C785A639
-:10F5F000B8F471A1C9763DBF1513BD7D37E94B3D08
-:10F60000BF159ED5DB77133FD5F35B5E68A6AE4D85
-:10F61000ED8084CC6CD05337EA9ECB0ED6EAC6512F
-:10F620003F89F92D1EAEF7FD95A88F5AA631FD48EA
-:10F63000F910EDEF67BF4DED80F45E78BC68F09F88
-:10F640005EEC437F5F93C9F477C77BD508D76CD056
-:10F65000DF91F20B7C5C4EA60BAF363351A33370B7
-:10F66000997B86D1F5984731BBC71CB316820CF045
-:10F670001334E5F4DA49A2D347607E6A2FE5648645
-:10F68000E97DB3AB8180DD20DA1E5A00FB22A2C9DE
-:10F69000837AD7601F917A977C07DCBF6380A78D40
-:10F6A000C2E296CC585C879B6CB6809DD198294F5E
-:10F6B00002788A93193CB62451DF9DC2634B146BC8
-:10F6C000AB145ECFD0B6387001C2AF83C24B4C874B
-:10F6D000F9E3C9DD745D55995606877984E953F5D8
-:10F6E00039A65F7BF421351868FBD968D6BEF18551
-:10F6F0009FCE53137BF56F5DE64BA84FC73887D578
-:10F7000091F174DEF5EA20B033C7D2F5817C34394B
-:10F71000B62745B2BFFBB2C3568F97E7C17EBEC7BF
-:10F72000F5EB180A117346DFCF3F1BEDBB05F09BCD
-:10F7300005F0088B7BCDCC64766B15CC3318ED4B84
-:10F7400039DCBE24C14A6CB7A433FAFAF1DA99481D
-:10F750006F4E0A2F3116D6CFE037FF2E465F57BACD
-:10F760000F6DFDFDD0892FDC9E0EA393EF45A213F4
-:10F7700052EE71A3BFDE973DA7B2F53673FB51B3CE
-:10F78000936D899ADDECC7F558287BE40FC22B995D
-:10F7900042E13AC845305E53ED32F9FD14645160E0
-:10F7A000F083DC2915882B19669709C363B9142ED9
-:10F7B0007F8CF141EFF168837C1F64D0C3C374ED8B
-:10F7C000A2EE14839F7875BF7ABED439D1A09F264C
-:10F7D000EBC69725DE60F0632B0D7EAE5E4F9889F9
-:10F7E00059E5F83261DC421524730EDC27889FB09E
-:10F7F0007EF43B7BE0FC845C85FCCAFD1A23BF36AB
-:10F80000664A0867C1C5FC1A8D1FB4E735F859DD93
-:10F810000CAFEB7234FDE441BD630B7C93405C950F
-:10F82000DAD0F2E6307ADBD4687FAF7434213F69F6
-:10F8300024EF9552E4F91B5D78DDD8E8C6EB138D13
-:10F84000125E1F6F4CC371EB1B3DD87EB4D18BD7BA
-:10F85000471A65BCFF506319B6DB1B7DD85EDB58C9
-:10F8600085D7B64605EF8F322BAA9DEE6B542BF150
-:10F87000A8742BA3DBE9FBC2E096DA4AD71106F79E
-:10F8800064D5A56B8F5CEED68D4F6A9074FDC3EB8B
-:10F89000D374FD098A47D71E5AE5D58D1FEC9375A1
-:10F8A000EDB8B232DDF858D9A76BC778AA74E31D5A
-:10F8B000698AAE7F5751FEC0503F7CFC506320C820
-:10F8C000E0120C3238BD1E64F0E9C2EBE75CFE0EBC
-:10F8D0003207515E0CCA7251D2A1F8B2B3FC5A9CE5
-:10F8E000D923C486CD1F5746E74B0B5F2F9D4FE7AB
-:10F8F0009FF9915E623C41DD7D475A97EEB929A29E
-:10F90000B304F211870B448C7B1D2E888B01FBE521
-:10F910007E8B6B5A16A5C7434745CF26780E1E88A7
-:10F92000202F4F70BDE8186F47B950B14AD8242234
-:10F93000D1B2E76B3B5323C63D0FDD4BAA605F8E10
-:10F940005D2F494017150535715161FE5A45E0CFCD
-:10F95000A56EB8BF2A3D278ACE56D19A6CAD1BDB67
-:10F96000BB2F6D5CED2ABD7DD94BF77E3BEC638CE4
-:10F970007AAF1DE45B5BE2266CB7A5F59F27F98C97
-:10F98000DB619F723BEC348FC37CC4EDB093DCEF42
-:10F9900009713BEC036E871DE7F6F3316E877571D5
-:10F9A000BFE76D6E3F7772FBF908B7C3DAD29E9F4F
-:10F9B0008AF2F017021123F8A9DAF5969FEAEDB062
-:10F9C0006FFAF576D8D2F57A3B6C71BBDE0EAB6B75
-:10F9D000D5DB6135AADE0E5BB85C6F87DDD4A097FE
-:10F9E00087F3EB27EBDAF3147D9C6D6E95DE7ED604
-:10F9F000F033DBA7978B95657AFBB9AFFDBE12B8E4
-:10FA00000EF33F80C453617AAF279F0B7A85D245AE
-:10FA1000D605AA57300EEE6B86FCC9361842F56F34
-:10FA2000A129F816E47DC8DB2281B8D3AEF339E50D
-:10FA30001511E82F47D5D3CD82E3FAF8C68D77E9C3
-:10FA4000E13A6399DE2FB196E9E12A27EAFD924A6D
-:10FA5000A39EF1E9E1AA1285005D1AF58DC9B14CAA
-:10FA600002F97DA57AC74AA85E616D9DDEB1C29D8F
-:10FA7000145D3FEA9D1F64B17A831CBA0E30169A5A
-:10FA8000A2720F7828DC76BD6BC63A11BAC023A3E8
-:10FA9000A8FE2982DF29FC5EB5286A03E4D9785ED6
-:10FAA00084886776DF4EC75B87B3BC08F9D2FC1148
-:10FAB000CCAFD07F80AF1C42DB617A2E3BC8FAC34B
-:10FAC000D6ABEBF703CE06F7B71EF9C8A89CFFC963
-:10FAD000F5C4C49F06A137814CC07A83D0A0CB8ADD
-:10FAE000AF1AEF6705981D9495C8EC206FD24C9122
-:10FAF000E79F08843CBC2662C778E608E27F06E2FE
-:10FB00009CD1071CD369B319A64C003F49CFFFB362
-:10FB1000CAFBCFCF1BFDB0EBA45483DF768DC1AF02
-:10FB2000D3F3BF8D18EC971091C09E441C9874FDC0
-:10FB300008A777381D359D68990FFB7A2989E75703
-:10FB400038FD4CE4F82264F3EE1ADAEF758B04FC0E
-:10FB50000D1B51E326407D51B04186BC43AED7E634
-:10FB600042BC892B3C68979E61F8F1D27F803F2F81
-:10FB700009C317E0EFB81E7F3643FFEF393D5DBC88
-:10FB80002E4647FFB87519E8CA39E8B2EA588CF72B
-:10FB90008B83B21843D7B7D725601E756FB0215835
-:10FBA0004CDBE7DCAC6E684DE24C33AE97C803A685
-:10FBB000503C4CE5FBF5F2BC56472341BBE3C54640
-:10FBC0003B5E096910411EB5B8EF8803FDD831428C
-:10FBD000190EF5691D836357417E7E8B25363152A0
-:10FBE0005DCB4E4B2EEAD38E9D0966893E5F6C76C7
-:10FBF00099E1B9E2C45A11FCBD6BBB08DA05C589AD
-:10FC000004F3592F36060EB3F729588743F73119F5
-:10FC1000ECD35257CDE4987888CF52DB46023B377D
-:10FC200016FDD73D836D88379B6B69E9B7E8FE0EFB
-:10FC3000268844F052FC788827007A20D1E9F1C365
-:10FC4000746ECB4980733DFD0778D1F402E5F393E0
-:10FC5000E1F8C825616DCC2BE8DB23B3F5F891887A
-:10FC60008275162D5DACBE8C8422E7593EE4768306
-:10FC700016DF3FCEED86633CEE7698DB0D2D86F8E1
-:10FC8000CD5BDC6ED8C3ED867DDC6E789DDB0D6FC1
-:10FC900072BBE100B71B7AFC05A236415E711EB152
-:10FCA00087C05F3858C3E0EC5E25F8CB201FAEB4A8
-:10FCB000FB4AE87DDB2A0BCACF91896A13C4C76D62
-:10FCC00055EA14D8877B417B135C9B8ADA12E0FEED
-:10FCD0003CE5F471F0B3815EA6E5707EA7785867C5
-:10FCE00065705EBF38C6B312E85959528EE31219D7
-:10FCF000DCECF41FC03B61912A001DB8158B0EDEB1
-:10FD00003506F8CE837698FC88067AA4F09C9ECDC2
-:10FD1000EBCF32492683BB1A05708FAAE1704F8B57
-:10FD20008FC827EB39DC35B8EC2CBAD9A4D2A16F37
-:10FD300025B2BA89B70A6E361DA4EBEF9445CCBF45
-:10FD40007626F23A41FE5EE37CEF707B765D49FFFA
-:10FD5000F1BA437C5C4FBB9548B68161F394DC6F8C
-:10FD600091E8F35581FB92802FD60DD0F2C41EB4DA
-:10FD7000AFA78805BF4DA6EB0CF23A484D5ECE21E9
-:10FD80001C3686F7BDC5F7D9D77ADE2AB9C122D18C
-:10FD9000796705EE21F03E9BB9C11D5E5FDAC9D7D8
-:10FDA000B766C69D04F83238E26C3DFAF13E9B041A
-:10FDB00076F7C844CF6AA00377A262F936BD3F9DAB
-:10FDC000CA43C905CB6ADF190FE3E8338F13A09745
-:10FDD000AB37033DBC956447B9D3D77A2ED2237E87
-:10FDE00082F6485F7A84CA1FB4876CE59F1C07BF00
-:10FDF000B692347802F4B960966730F031A9B2A0B7
-:10FE00007E4EA3FFC2F36ADAB5D2A0BF1D5E4BBF20
-:10FE10007278E485C656F03BDE02FEC13C2889813B
-:10FE2000FA9C60F99D76804F4552CA2EC00F29B6C4
-:10FE300087465338AC29587D13C06B4DF952970053
-:10FE40007455988AFDC162FB69A8C8E92A5E9324AB
-:10FE500085C17BCD7DA448017827DDED5E42F79515
-:10FE600092F8C74685F24D9785F93DEF94FC3E31F7
-:10FE7000396C7C4676F1BF67435CC7CDE87C8C5516
-:10FE80004989541FACD179535134C6654ED6B07AE6
-:10FE9000057A7FF572FAA842F5559BA7978F1773DD
-:10FEA0007A8A1ADD5D0FE395FB6C12FA67E282969F
-:10FEB000E5B45D05F612D84F8F58902F357E4E6A07
-:10FEC000D0CB4DC5C0B75506BED6F8E9379AFCEC85
-:10FED000E5E318C06B540DE3276D7FC67DCDFB9223
-:10FEE000DA39718418FDBB7717A546333D1666DFF6
-:10FEF0004E40D92459E9FE66717A9AC5E98992E49F
-:10FF00004E58CFA17B52A701BED426EA07C0DA56CD
-:10FF1000587AEDDF14D82719E0A5FB9FB55C4C0794
-:10FF2000FF94DC65E9A5C714DDFBB05E604E781B6D
-:10FF3000E85595DF013B02C299F0D23F9D38BCB72E
-:10FF400099BEAF73581C69F2E07C1F31F928E17C3F
-:10FF5000870AC4015EE8FFEEE87448E193707AA571
-:10FF6000F38754D65F7D4F6A069A9BBCFDE18AC138
-:10FF70005041467CE596DEF1F0BF5233E27FF60A4F
-:10FF80006113C4FFC6889F9FDD4DC7CFAAB4799A7D
-:10FF9000E9FCB31FACB580DD5FA92A7BEBE8B84A6A
-:10FFA0004A177E17EE43C72747CCC402F31C9105BE
-:10FFB000D24EDBB366E9F9A67A85BE6DB4478EC62C
-:10FFC00028234CF4F94F041BD944AF3B372CDD08F0
-:10FFD000F37DFCA00DEB0A09BC2B07F400E1F1490D
-:10FFE00079E33DB4BF76BD8D405E641EB7F7E37222
-:10FFF00092715E9363013E5FD316837EF1E90D43F8
-:020000022000DC
-:10000000C703FE5B0735DC06F5D41FC72AD580D7AA
-:10001000DA35D798203ED21ADD3E05C67F6222AE81
-:100020004DE9B42D3D6481F57451FB00E2ADDA3A3F
-:100030006B5AC3F00FFBCA6171DCE926A26C8E60BB
-:10004000D73C9A23703D4B545BD8FA37E448787F0D
-:100050007ACAA09687E13D14FB2E0F870BEC7B0A32
-:100060008B8BB6267AAA07D3F6470271AD8C87AB85
-:10007000FC01F0A7FA031B7906D14F70BC75F8B0EC
-:10008000A7DBC2FCFF4CFEDE53B1ACFFA43BDA0F92
-:10009000FB3C29B1B6EA76FA919ECD4ADA9C18B6B5
-:1000A0001F61089C8260EB3B1A235953101F447A4E
-:1000B0009EAEABF691C710BF5B287C803FBB5C5205
-:1000C000CB4EBA8ED35459ABD0EF7E7C0AC0F3CE60
-:1000D0000C4AA80917C3A9316710AEE7F4FAE6186D
-:1000E000AC337111C53AA4171E35ED5BBF238C47A5
-:1000F0003DAF32F9C1F84F2061F29DE2777ADE0F11
-:100100002DB5B0DF28D20E7831ED59658775CEABAD
-:10011000B1607ECC497C65204F6B1E11B04D7FD6FF
-:1001200082BEA8E5FCD52A0DDA07747C12EC71F4C6
-:10013000F79ED80BF501355C7E552DD2D3E962B719
-:1001400059C72F3396EBF987EE53D7DE98C3EA3AB7
-:10015000BBBC1FC7837E6EA5DB06B87CD222F837F6
-:10016000A17CF58D08AFAF1B9363D2E2F092250C12
-:10017000FEB594FE6A416FD8497B09D83579A3A7AB
-:1001800002BD5B8F46E33A8DF0FD6787C3A924A9C2
-:100190007A305DCF294AC750FF73724333DA2FF0AC
-:1001A00023EAF8DAD502F4BD84AEF27117D2A7754E
-:1001B000C6B85E7AD1E053B33E791F8C73FF678C6B
-:1001C000449D2752E3CE5F0AF6640F1D19E0037BBE
-:1001D000366BEF49EDA533EC8F406765742CC38B0C
-:1001E0008AFC5253DA93D71BD15FFD32E23B9FE288
-:1001F000B5237D3EE4A13439B7AEE84DA483732E18
-:10020000E217995FFB36C8FD18BE3695C881BA78EB
-:10021000502654EFBAF01EFACB717CBFB1CB856388
-:10022000A599840C5A2E1E2BA537634B8301D0133E
-:100230003637D7BBDB737F3566089C6E2018A7194D
-:10024000105DEE09E06E5C09784EC1E24A00FBE702
-:100250004141A882B8FD00A2B7ABE20CF02059E6FC
-:100260008FC2EDF2682EEF974E4915D0DF29D3FBF0
-:10027000A766835DF4AB1C93E65FE055825F291CA3
-:100280005BA8FF06726A50A0BD1DE8B39ADAAD7E86
-:10029000DCBF07F33AD652813C2EF4C6AFFE51F1D3
-:1002A0008B8BE2603C7ED1571C4C8B0754B25BD4E5
-:1002B000DF51DC90F7AB74533F6700D85937BBD19F
-:1002C0006F729F46BBD4CAEDD2A8D18B5C2C7FC67F
-:1002D000F8478B0718E9CA185732F29FD12EFDCF85
-:1002E0001C6E3F5D4DAEBE92F88016C75F93C6FC94
-:1002F0009E3569B52BA17EED3CF77B5CAA09F138F0
-:1003000067968078D4ECB539DEB3B380FFB4FA8356
-:100310004BF93D6D063F24DAFBB42C47D09F8E5C31
-:1003200046478E02D63FC74ECCF6B0FC813397E9E4
-:10033000DF39540FDAE916A7F3734415449F9F1A67
-:100340009ACBE4AC76A53FC18C1C5DBDE0D0DCB09F
-:100350007CA88DE743EDBC5EB038BD7BF757705F7E
-:100360006675C036B9E6C96F533844CF8AF19890A4
-:100370007E95677E087EF22C07CADBF83409EB5EB7
-:10038000AB12ED1EA47D557E1BFC32B43325D892F2
-:100390008CF2762EE5DF80AB1F7FC7DE7FDCCCA939
-:1003A000F93B058CAE7AE24B3E26BF4DF41FD0D30D
-:1003B000EC2A3DBDCC55FAA79FDC5CFD39AE31A1DE
-:1003C0000B3BBF42BA60FCBB6E04CB479F2FA763B9
-:1003D000207FDB873DAEF9B74E0BF58B285E82F2AE
-:1003E0006EA4F7601AB184E3DB5720EAEA1B827936
-:1003F00024DA45FD9EA085243D48C70D90E75EEFB9
-:1004000002DFB7D81653837AC3AFB3EF0FD1794F5A
-:1004100038FB5E8791CEEF1BBD04E3FF0F5C4741C5
-:1004200046D77F1F249CB15E6FCB7CF0DB1E8036ED
-:10043000D6DFFDFBFC62684769ED6D3F92C3EA0DB4
-:10044000EEC90DFC482DA07E8D9DEA5B3A9F4322AC
-:1004500098A7226433CA6711E281209FC786C1171B
-:10046000FD063DBC8D76BC58C0E228A281EF8DEF21
-:10047000BD3D97F339C7535FFB363E477FAAAED6E3
-:10048000D3FF7772FBA997353EEF84FA89982BAF9B
-:100490003BA08214F3D3223179C05F262504DF27E5
-:1004A000B8185D8184013D686918E041B8D17614BF
-:1004B000E805BF438BABE2A2A300FF22E41303A82D
-:1004C000CFE95242422A8CD7EA0F14F295E3F2E5C3
-:1004D0001E95C7388F54C6F2CBEFCA2404EF1BF326
-:1004E000F87A5F0EF8EB47A99E95408FDFAC42BCCF
-:1004F000AC7B05C1FC80C3A5609BBE2AD4EC82B84E
-:10050000156B575318815EB6B9F5F5AF3B8B1E2FAF
-:10051000B6D2FE9652166F3DD418787715A5B596CB
-:10052000827C9497AB6060D87A83BBA2AC10875171
-:10053000D46FD9C16EFE708568856B70658D0A9B1E
-:100540007E3741DD2C4810775008F8F9D615CD5389
-:1005500080AFDEB5A89E414ECCAB629EB875A57A41
-:100560002BF83DB2545E964CF96853AB19CF199DE8
-:1005700028F97DA214C6879FE732BFE1E0CEA80725
-:10058000000E6B047B280AAE1665D37DF1F03EABFE
-:10059000A7892EF1DDA68793E03D6B16AFF1EC82C3
-:1005A000FE261B9C40256B36D8AB60DE35494BDC04
-:1005B0004BC2E6B50FB736C0FDE0B016AC6B51CA02
-:1005C0003CD6A858D8D7E731909F6D5D911907B4F4
-:1005D000D892601D5107E396FCE9B7B98077C984CA
-:1005E000795BABBBDD02FB1EE95654C88F9B72944E
-:1005F0000340AFF3969F98827573A5B1ABE13AF2D1
-:10060000C2EDAD00FF77793C2694508BF9DA964520
-:100610007576586F4542CACAF0784C4BC162FB18D8
-:10062000FA5C8ADB54B374C0C5F4D102F19709B007
-:100630002EBA9F7130EE8F8D0A1D174AB256453A79
-:10064000A7F509D747F6E6A529101769D96087F4F9
-:100650000C691194F5901F50939D11EBD833BC0C8D
-:10066000EED58A6B8A5542FC20BF7DBEF5D88FD46B
-:1006700051605732FCD9CDC46E09D37F19D9C567F3
-:1006800072C3FCE88BDE9BD082FAA04560FC9BE144
-:10069000FDE247502FFC7CB6AF1BE0B7A655590FC3
-:1006A000F022AA9D0C28EA9B4F42F7911184CAE3DD
-:1006B00096265B55A43AB4D022713AF009E5A0130E
-:1006C000034684C9E5957529101F09355D85DCDD74
-:1006D000337E83FD03C04368435A2CE8C350526DF8
-:1006E0004A0AD02DA74BE3FC5BB81DF062A62FDAB7
-:1006F0000B76E55896F79C91EB73629BB4BBC1CE29
-:10070000FD1AD06D2AACF71F48B7A8E73ED9FA1FEB
-:100710004857C47579F9481F0999319F5AF4178CC5
-:10072000F7B68DD3CE3FB1F8A066F7468DFE6815BB
-:10073000F8ADBE3C2DDF55B017FCF5E95A3EB59C2F
-:10074000C5075DF45FA4F8A0CF101F9C6E686BF620
-:10075000E60D5EBD7D9B28B5FB4A40EE1E103DE0D8
-:100760004F2411A65766940B7EB0B39B8AA2EDB8B6
-:10077000EE3C1EE7E4FED73CBEEE638D7602F92424
-:1007800093A36035AC7F7A3E5BBFA33E3D3B2081A7
-:100790007C67716E526F93306E02C84F203D7E9A17
-:1007A0000F26A1FB9957BF14EDFD5EF835B1F81087
-:1007B000D1FB133E62F01F16317B4CF3B7E61BEC06
-:1007C00003A3BD6F8C53F7E60536DB819EBAC7667F
-:1007D0001C4A91B05B0D68F9003A6EA1B773752899
-:1007E0004CFE7472FD70A4513EB68AEE7FB5EFC721
-:1007F00076A0D336B3DF0EFAA4ADECCE18A0BFB608
-:10080000056219F07DB0B10CC71D6CF4E1759597C8
-:10081000C9BB60B6BCC21B1677AE2C2B3EB62ABC39
-:10082000EE41BEEED8AAB0F5577867E8DA1A9D55C2
-:1008300088A4617304F9F2BC97D9ED66AAF7B1CE2A
-:1008400050FC85A7BFFA1BEAAF7687C3EF41AFDE46
-:100850009EBD7F6CC9C0FEEC166D7F1A5CB47D6BCB
-:10086000FD7DADF37B7FE33A9FF5EAEDB94BADD368
-:10087000B83E6DDD7D8DAF0061350CD659BA00EA0A
-:100880006283D94A07C8A3CA526135E44B8FF07816
-:10089000E29182183CE7BE378DF97BD1F58C6FA2CF
-:1008A0004B6760DEEF4AF17BA397D995B30A04BF8B
-:1008B0004C7F9DCACFDB1F4B63F9DCA6A29FFF16BE
-:1008C000F2D0EF145A58BC97C8D3A785E5B1D659D2
-:1008D000FD01C8271DEBA9D358B6FA6EDA8ED6E40F
-:1008E0004A953EEF306B963E7F5861C833441BE417
-:1008F000CA518D3E7228DC537BE1DE973FD1177DD4
-:1009000010F3D92CD04346F8DC66808FD17FA9D86C
-:100910006EE087CBF46336B566ED85BC9A4AEDC9C7
-:10092000D1803FE8A2CF45CBBFC634C8803C468FBC
-:10093000634267D6825EECA42A00F4CBBA9977AE04
-:1009400087F679AAF7012F7DBD47F3DF9ECF96BFCB
-:10095000F446A81FE89123601F4C80BC6064FBA094
-:1009600073D1E46911ED83997529D9B0AE197AFB79
-:10097000A07343D99399701FEC03FAD39957A7B387
-:100980000F4859E625E0C3E46ED4E8AC88757AB325
-:10099000B395C17961FB71A43590F07AC6EE1C79EC
-:1009A00008F4CFE07104ED7DD4FEDA638950BFA86E
-:1009B000BD2FD7CBEAF049591CD30FFC7A293C6AEA
-:1009C00075D4F75B64FCDE8B16F7D2C665E731FBA6
-:1009D000B03545AE877EE2CCB8C4BC4D5A9C232DC1
-:1009E0007D08AF1B96488F3FF41741C2FE08FE1EDC
-:1009F00081BC6474E2D93D2E3AE433AF929F970DE7
-:100A0000E728FC2AE4436CE502DA4BB6448276CD53
-:100A1000E5FA57973BAE158A03C0DFAA65F1F2E20B
-:100A20007433B6A3157113C8854917060A20377C9D
-:100A30008AF834AC375AFEFCD31F83BEA67A1FE275
-:100A4000303ED280E7AC9D161FC627DACAE9CCE952
-:100A50001087596949C1787AF2AF63DCF0367F2B91
-:100A6000C4CB6D1E761EAACAABAE86EF6654148E3A
-:100A70001608ED9FEE63F19B3910BF8179679DDD0C
-:100A800009F19FD95E26BFC06F03BD39B7EE3BE3C6
-:100A90001E95FE9AB88DBF352E0BE34912C60B0C7E
-:100AA000F1215BC1548C0F69752ABE0211CF779377
-:100AB00044277E87C218DF31C6738CF11E637CE742
-:100AC000EE3C5627ACD953DFCED3DB532BE00CC220
-:100AD00060B097A8A8A47CDD662149ED943E0F156F
-:100AE0007F42EEA2EB70FED00435E0749C21CE78FC
-:100AF00099722B48E5CA29D8C8EE372CE0DF2E9032
-:100B00006B30BE67A4FBC7B8FCBA2FCFA9ABEB080C
-:100B1000362EE7CF47A980E705A3ACFEA8E4DE792F
-:100B20002E973F9ECA911FCE637EC50F81CE894707
-:100B3000C1F30433725D3ABA250D83C9A9B0F88DAB
-:100B4000F1BDDA7AB4F9AF741D0F71785F2E9FACE6
-:100B50002BCAB75BE9FBCF511C8BA82FA9411D16EF
-:100B60009FD6E2E7DA73D59037C8043B52C0FC81C8
-:100B7000763F2C8E6D06BA8D4E54E448DF9B7A3B4F
-:100B8000AF276E8A794CED3D4450502ED4F17C8DC8
-:100B9000369F99B89B900F80B6B5758911E2E6C46F
-:100BA00063B75192A95D2B1288FF3889DC0EF1677B
-:100BB0006BAB05DB44ADDA0776FA22CE17D682A9F5
-:100BC000FB20AEA6F185316F631513A7C2B475ED96
-:100BD000FAFC95313F65B4A7B5F8BA99BE04D6754D
-:100BE0000EF0C1F6EB172F6FBF4FE37EBEA6FBD50D
-:100BF000E8AA3CF31637D49FB44429EB6BE8BAD487
-:100C000027ED18AF70C0DA002601FA0FE4E493DE96
-:100C10001FE379F67CF65D9A1681D5A3EC49F8635B
-:100C20007CF8F905533EA39B9FE549388EEACF0037
-:100C30009C972263E3912FB4FA934309CC0EAC281E
-:100C40005C1CB893B6FF8DD74B5E53F88C96EF1FA4
-:100C5000509C43B0F403E0B2CECAEAD20E7DC38CFE
-:100C6000F564443CB0EBCEF8DEBADD6B36EBFDCA82
-:100C70001BD2F4F6A0D1FEB31ADA43F38D75648A61
-:100C80001DEBC812781D195FBF914F7EDAC8F21AAA
-:100C90003FE775FFBFE0E72F7FC9EBF736F3F39728
-:100CA000CFF373B31ADCEFB728188F3E711DB5E987
-:100CB000627BE380EB8ABEEBC6F3FBF9CCCF9A22D2
-:100CC0003A77819EEA3D67D1FF77C22ACBF479B3A8
-:100CD000D93E7DDE6C6E953E6FF6FF32E5ECFC6C26
-:100CE000388751BF12BE5330639588F9CA752DE716
-:100CF00050CF9E2F406BFBA2F71CE6E730B4731C6D
-:100D0000DAFD6BF3D9F7911CBB122C508F3F635562
-:100D1000EC54889F1357C665D96F15107387FCCFA5
-:100D20004A9705BE0731239080F1D09AD62B9BE7D6
-:100D3000BED143304EDD13E757C7DE04F2F9B016DB
-:100D4000E727D7DC0471FEC33CCE5FF3F2B827C1BE
-:100D50003FFA599E3C17E0D1942757C1B586AF871B
-:100D6000B66FCC1FDCDBA63FAFC7EABF3F5193DFB6
-:100D70004F3C5D9C2C3444AA17B939BF27CEB5141B
-:100D8000E627F69E38D737613E626FC77376F7E67F
-:100D900033F9D47C8CD4C33CCD2F93FAE723D8DD30
-:100DA00077E50BDA7CDFC2E7DD9A7EF3DDC9E6D7B3
-:100DB000CF27DA624780DF7F82D79719E7BB37DF1B
-:100DC0008AE3E87CDFC3F9127BD6776FF8FA7ACF33
-:100DD000CFB86280691DD58AA98BD2136911B1EE93
-:100DE000C4D1E19A067549646A2AD6B11C2EADFCBD
-:100DF000A7384F73B8F4857FC9F334DBF2932FEB38
-:100E00003C8D63265122C535029C2E7715640E0C4D
-:100E1000F58327EBF2FD41B0337ADA668540DECF09
-:100E2000BAFC20DEBF3FCA551DD1BEE0F2ADA574AD
-:100E3000910F52426B92A68AE1F6CBD92CE5CDFCFC
-:100E400008E713CF8DEADE0DAA6966A96016E2D124
-:100E5000DEF608547E66AD9821BA2542BC0D0F4ED1
-:100E60001E4AFB672552FF2E6CDFF9F5BFDE4DD918
-:100E70009514941E6E8EA7E376E4286F03FD16B9D1
-:100E8000A53DD09EE54BC7BAF7FB6309DA79274643
-:100E90005BFD9B922F5EF7EF7AE5F24AF315C8E50A
-:100EA00096467DFE7B4DD29895B0FE3125240412E6
-:100EB00036C57DB618F27F19D9CAEF605D296E225A
-:100EC000DBC6E37D9984E56F8CF30E98C8F0342679
-:100ED00094F80388271FD2FCFDA22BF6F7FF180E0B
-:100EE0006FE3F584E6EFAF8EECEF9F581417391FD0
-:100EF000D052570BF98013ABF5FEFE890DEE6A3820
-:100F0000E77782FBFB27A6507F7F6CDFF9006D9FA0
-:100F1000540E3927EAF201DC6EE771EDD9D9F2C03F
-:100F200089D9E8CFBBE0DA9829C7E278D575139E56
-:100F3000472691CFC992275C32F839DAB9F65CAF0F
-:100F4000320C9ED7CECB8E01D13608F2A2AEDB2278
-:100F5000D1F368BEBEBF3E4FDA93C734E139EACB66
-:100F60008CD35FEE38C9BB99D5E398599D61544243
-:100F7000891BF253E7C7DA51BFB7C2FFC2F46A6AEE
-:100F8000BE3271E2E0F0790CDF57952EEFBD5A9D2D
-:100F90003EE82BD02F9D849481BC7920B601E31EBE
-:100FA000D771B819AFE513395E892B1EE0999AEF16
-:100FB000BB01F0415EDC2CE17760F9FDBEEAFB8D00
-:100FC000EB78D6EA7B1FCFD7978812ABCB23C81715
-:100FD00057A5B9504F6BF6D7D2894C6EDA48689452
-:100FE00095EEB359DEEDCCA4E33E7CC29C0E8F3D62
-:100FF00017432CB06E5F1A9573741F256E65647F5E
-:10100000F211BE4864F2C2352098DC788D635755E2
-:1010100080FB17F1E313DD83C11E7FEE49969FBA73
-:10102000EAC945F6DAB0F99F98C8E566225B7FB554
-:101030002CF8A56458CF59CC43CD904C1E9940DE76
-:10104000F8FCD1B91027A4F6DB686C9FC376503248
-:1010500065425EFB43F7174761FC55F72E1E82F48D
-:10106000CFE1B17045E6B368E7E728DF05FC070B81
-:10107000CEC5A48E453B7E3DD0FF4281F822D909E2
-:101080000F71BC5D2F37DC087476BD6C23706E2D3C
-:10109000586C43B83F572848E0B75600CD433CE76B
-:1010A0000933C69B293C9641FF018F03BF1B5D227C
-:1010B000FFDA0CED3F8E13C8D07EF4F115C3B5E016
-:1010C000DC60E0C70F81FE22AC7F295FBFC64F14F2
-:1010D000EE25B82E99D58BF44557DD79F2934097DC
-:1010E000AD294A3D7E17D135F3B2BE8B58F1533F3F
-:1010F000D6EED97ED2308C44A8FF3AC4F9C478FF2A
-:101100009713997D770BE78FAB9EEC3E701DF0F542
-:101110000A8B0BF0FAB33CDF66584F8FDFF57796FA
-:101120002353C40588BF60395D3B7EC781C4407BC3
-:10113000FA2833E24F2DE1DFF9B89BB89A63F12921
-:101140006CDB5708C8670E677B1518CDE6BC86A315
-:10115000B3E1B96211CFF5879D73E9B78E2CC4CF87
-:101160009FB5C0F9336ACB075789DA77B7884065EE
-:101170005BB0D4CCEDFBCF9E94E9AFCFF2FACC9329
-:10118000AF5A36421DCB51136BBFFDAA65C44AFA54
-:101190009ED008B68EB607054F9304D7A7D743FE57
-:1011A000B26EB9E029A3EDEAC03D5D10E25AF288C3
-:1011B0008D80ABF0F10F974E85FD9C7313FCBEEC58
-:1011C000DC04C6374A90F84DC9BDFEED0749C4AFEF
-:1011D000E54BE11C9D97EB9987E01C1B5DF7B5EA99
-:1011E000B7D4EF40DE94FABD10571BE461F9CCE8A8
-:1011F000A0D9E327E0EFB2FAC8961F08E421984788
-:101200005CDB0CFEB98DD7EB46CB35E83F0EA2F484
-:101210002981060D9975E7D8EA8882F41B5746396B
-:10122000231DAE7AFF38EB12E7D9E6DE343816F824
-:10123000E52F13F5E732FA8AAF6B57F8DE0DE0A71A
-:1012400083E757B751BB1DF6FB32B5DBE1BA9DDA38
-:10125000ED701FBE530D5738CF06D75DD46E872B68
-:101260009C67832B9C67832B9C6783E7E03C1B5C1C
-:10127000E13C1B9E3F2C540303013EC5D104F243C5
-:101280002D1646676A9215FD8D4021C1FC7D30C93F
-:10129000BA6925C4EB0486273596F50763949BB19C
-:1012A0009D3C96E577CD9E11708E7095305602FB71
-:1012B000A9D5AA60FDF289956602F5CBA169C2FBAA
-:1012C00090772182C92352FB66C757B721FC17CB01
-:1012D000C40475E92BE1BBA1208F3F259B587C2ED0
-:1012E00028C2F7E59A6308A7C73ABF4C65F669417B
-:1012F0006B1F52C09F9D043101A4DF030AF42F5ECF
-:101300002EF076D02F8F82BA06DEAF1E7A0AFCD777
-:10131000558676A7497B3EE52998EF68CFFB465472
-:10132000CB40EF295A7FE242689F8AD29EFF7C2100
-:101330009EE7D2D6A37E8AF38592B4F1A9D5D01FB9
-:10134000EAA9935B82EB0D0D66E3FF6D57E7D3E0EF
-:101350002FFFBDE76B56548CE3ABB3087926F662DA
-:10136000FAFA7892A88F87CA822E1EAAC5DF4D8E00
-:101370000543F1FCD90336948BA79208FA217DC569
-:1013800045C3E2F51817FDD524AD9ED910FF240AF8
-:101390008179AB201EE8C1B72AE1E7D388D040A00D
-:1013A0004EDD772646023BD29A1816BFE332A0BF25
-:1013B000786173038B0F06150B51937BEBFAAD0528
-:1013C000BCAE9FC70BB53A066BC1A3BABC81315EF8
-:1013D00048C465988FF62DD2C7032B942B8B172EFC
-:1013E0002001CB50A07F59F080FFBEC0A57C300407
-:1013F000EDFDABD9F719A5D7316EAA9D1B833BF044
-:10140000DDA92ABEE7B65B4FBC3F848EF3AF8C925A
-:10141000E030FEFC65C5F87C1EDD21C4B76A0AF128
-:10142000F02DC9FED4F3BA04F2D46DF23033CD7787
-:101430006F02D80B8B62316F72D35DE91FC03C8B9A
-:1014400055073E47ED4A4EEF2F6D047A1221701971
-:10145000D6CE1AA1D15BD546E0AF49715A3BE629F9
-:10146000E08762ABF6BC17DBF3148DFFAE790AF4AC
-:10147000C7D1128DBE0F54C3F3B3537BE643FA9E1C
-:10148000E4D0DAD317427F6BCF7C4B36C27CEFC0FF
-:10149000978DB03DF529E0E7E2195C5FA91F6D84E7
-:1014A000F95B1668F34FF0C3771EE79BB4E7A3FC24
-:1014B000B07E85686D2ACF68FB3DCEFFC70A5EA867
-:1014C000067EB9B1A7FF05DCEF02DE3E5E50F714E1
-:1014D000F4FFCBEFEF7FF87DC6F64D2438656856F4
-:1014E0002F5F18E5D56F8B981CF1D6FF1AC8952C85
-:1014F00068781ABFEF06F10096CF4A98E503796144
-:10150000173D943388CFEDC238A7719E9B0B595C71
-:10151000FD4C813E2FD662C88BF9787EAAAF798EBA
-:1015200014B1795A4B22FBB119D9257F2A80FA01CF
-:10153000725684F95C1460F07DB2964CE5FFC37D71
-:10154000CABAF8DD4D2AB23C709FFAC52AD899D3A1
-:101550002938210FDB54F438C6E9437916DDF7400A
-:10156000B43CE73AAB8CF2F1635ED731BF449E7274
-:101570000FF0FF30916CC23A0F27E61BCCC3AD4F82
-:10158000A35CE7794FED7B1CD32F712EC2782EA57B
-:101590009BC3FF5C419B05E4B34AD429A55928AFFE
-:1015A00083506F6C72ACC53CB0ADC88279042DFF1E
-:1015B000ACF0EF7F6B79DF49170632FD9EA6C5754B
-:1015C000FBCFFF2ACB77FAD03E68178949B8381F7E
-:1015D000BCD8A726413DCBF4D2183C2F5055FB0672
-:1015E000CE7F7804C1EF0447CF6AC0F341666A1F1B
-:1015F000CA00179E2FD6EA63465EB81DCF8DD66906
-:10160000F5E662F941B0536D8F513F0BD997C14553
-:10161000CB17CF30C8FBC50595A86709B5E347C709
-:10162000C27BFA3FF7FCF0A458A49B8FDA593D7FA8
-:101630006121CF97F03CF0FD1616E76B4DD1D3D565
-:10164000CF27317F65FD244677BB8A7E5E85F633E2
-:101650003179202F469E60DF8583180B9EB7327E3E
-:101660008F396D0EDA754F8CA45BA4B6B679F97B11
-:10167000185714D6B3E73E1D4F1AC06F319B599BC4
-:101680005E54C8FFE77A9599855097B5FC031CDF37
-:10169000ACB27AEFBEE237D5859ABE67F19BF9EE20
-:1016A0007D5D70AEEC6F8EE318CEBDFA24565FD22E
-:1016B000562069F946FC2E21255C0BD88BA9F9BE72
-:1016C000FA428C6F6D96601D9ABCD957741BCA275D
-:1016D0002247CE4B6B7CDF62C84BFBDCECF923AFBF
-:1016E000DD530D7F17A2AF3CC4B3C53D7983E5F848
-:1016F000FE782D6F20DF03ED5E3D4A37E4D5E9D15A
-:1017000085F5FF0BF4688FDDAE76A11DFB755B3FA1
-:10171000A5AB1710AF652C7EF6755BBF3C517E13F1
-:10172000F8F9BFFB3DE9137D5D00A7FB04B9CAC909
-:10173000927B1E419FE7FBA0B09F3CDFA5E20FFF1D
-:10174000176FE83FDE602FD2E7E1FF59E20D0E3858
-:10175000433518F928B108F8A880F1D1BFBADCA345
-:10176000FBCD2F827CBAB0D91F9DFAF7F7F753F360
-:1017700095B222D4838A6917A59FFB8AEDCC9E0976
-:1017800030F8F6C633E8FABDBA78C653F5FF0DF166
-:101790000CBADF2AC46F297FFFD71F7F77207C65B3
-:1017A000664FFC0BD2E703B8BFCD6C7FFF80F76FAD
-:1017B000447AF905A3975EF8303B290C3E0BEBFF0A
-:1017C00031F0791EE1B38DADEF6B80CFD7119E1E46
-:1017D000B6DE4BF9D7270A044D2E1FC27D66313A7B
-:1017E00038C5ED6BEA774F1E2AF5FADD4FE5C86F75
-:1017F00015313BF76891AEFE537E1BEEF7E3171FE2
-:1018000083FE087E7108EE7FDDFCE2D8429647EC4D
-:10181000CDBBF8D9776F49D5F5DFA0EFF980C21BB2
-:10182000E26D6DCB45B42FCE2712FC1E80666F840F
-:101830006259FDDEC5E7C14A099C47B4E5B1EF8CAA
-:1018400068DF07308B0B0606A48BE17A7080628517
-:101850003AAF25727A0B9C6F9DBCF6733C77659509
-:101860006DF8773547BA3D96BBC08FA67EEEB510B2
-:101870004FAD77E1393AED5C9976FE634960DE3E23
-:101880003867DB46E92181BEA7A2D472327CFF46CD
-:101890007BC36C681BFFAE69C2247DDE83C21FED73
-:1018A0009FF3EB597D5C9B99EC82FA8F3A55F437A4
-:1018B000D1F6336B05FC1EE7220A27F0F727B7277E
-:1018C000633DB935917DEF4CFBBBA7940EDAF3C0B5
-:1018D000FE3B2A12FC3B76FC3C99F69DEFA869671B
-:1018E000F17B5BA7E8FEE1FB3DDA772666703AD133
-:1018F000E019D5148770394FE142002EFCBCCDF4BD
-:10190000E52C1FDCB2607110C8BBBAE0F35591EA58
-:1019100052E6B8F5DF4B37C6338CDF1B3713DF4099
-:101920003857575150AC82BD6AE3F59AD144C6EF9F
-:101930005A9C5AFB63F65D8B528BEE3B22C6F746F0
-:101940001BE8D466883B18E9D4889772035E9E3101
-:10195000B3EF0CB6748A1E95DE6E7964512B9CCB66
-:10196000571F31B1BA7922E3779F5AA8C58BE7CFC9
-:10197000E962215E3F97C353C30B210D16E0B70503
-:10198000DA397453C36A384F3A8F9F43BF916CC69C
-:10199000730637810541DFBB1042E4227C5746B213
-:1019A00032E7C045601D7555EC3B1926D803E409A4
-:1019B0001E3121BFB6B877E1DFFD0A0CB3C49E4EDD
-:1019C00063FE44247BB627AE4021713A2C8EFF7F04
-:1019D000F1ABBF2D7E35B17010AB9B880AB8F29287
-:1019E000D9F726A09E6962A1C4CE2758941178DE4B
-:1019F00061C3272AD08176DE81FEAC18A2FF6EC2B9
-:101A0000C649FDF87F258584D54727879240AE7D5E
-:101A1000D0475DE5E1E29EBACAE72661FE9DDABFE6
-:101A20005920F798FD3B23D7F7B3496817B373CE16
-:101A30005A1CE933AFF24B185F087F3F270BCFE703
-:101A4000F8E1FC4E8553D82B48BDEF27C63AF6FF88
-:101A5000A579AB7BB8DF168C22F81DA46032A97A79
-:101A60003E023E9E29617644303D32BEB47E6A67B6
-:101A70001C9FC4FDA1018C28CE58F5F18193809F55
-:101A80003EFF0E1DC7E3E829F2478877DE7E385710
-:101A90002132D4F72ABEF701AFA7555102BD420249
-:101AA0000A7ECF6FFAF74557A4BFA7F8CF7EFD2F68
-:101AB000E87FAE8400800000000000001F8B08005B
-:101AC00000000000000BED7D0D7854D5B5E83E73A5
-:101AD000CEFC24998409061C24E849001B6DC0E152
-:101AE000279000813393842490C0F0A741221E08E0
-:101AF000D0DC5EB44111634B9B0381102222BE8B6C
-:101B0000AFBCFEE824185AEFB37DD4CB6745D48E22
-:101B1000012D5AD4E0851A2BA54110B1CF7E8F5EDE
-:101B2000E5B5CFE7FB7C6BAD7DF6CC39930920C6DC
-:101B30005EFADD3B7E7E877DF6DFDA6BAFFFBDF6BA
-:101B4000492D8B3AAFCD628C6952A0131EB53EFD74
-:101B5000E4502CB39B59E74478A88723F224C65657
-:101B6000B2D84F7540B986FEC558DB5DA77E3F14DD
-:101B7000DA4536A6A86C3A634B5607A97F11F332B3
-:101B8000199E6DD372181BC258C1B9C06115CABA6B
-:101B9000DF11906898F0778741BFF08A4CB50DC689
-:101BA00059560CAF0A183BE984E714F8DF98B64C95
-:101BB000CB87FE58BE8E3A680CCA4B065BCAD9D09A
-:101BC000F4186F5FA8FD35628C82F199D9DF6CFF44
-:101BD000AEC4DB9F0F66470C2F63B79BF550D6B1A1
-:101BE0002CFA33969E1354A07FBD24CAED9A629DB1
-:101BF000EFDA766D1A63679CF6F16BCDF16669AE2C
-:101C0000761C2F1C9BDFD5AE41F97402FC77305E49
-:101C1000BE557350FB95B1F60E5AEF594994C7EA79
-:101C2000583EEE12FDF39769B0DEED39BC3E1C1A4A
-:101C30001B31B2AF3E78BEEAF1BF303CD354A2AB09
-:101C4000C2FA5F945C0BFFAC6D6897752FD259F8A0
-:101C5000F70CE8D17844523BA14F21DB2B3399C0DC
-:101C600076C94097533489B5C15CEB4212F50F7BBE
-:101C70001D7C1EA328A2019D2D992EE8745904E70E
-:101C8000ED8FEEFEF4D29AC70CEB3A8D354B6D70AA
-:101C90001B636D702FEA82F6505E72F73FF811CE2B
-:101CA00025B9627D2511A4BF964CD1EFC38BCE7BA5
-:101CB000EAA56AA2F725B179E653FB25A962BCDB48
-:101CC000A91CC7E79D767C1A372EC3F9045CA1D006
-:101CD0009D84CFB02FB219F93DEC670103F0797BF9
-:101CE000FD0659CFB7F09151A5121FF963E5889D04
-:101CF0008F0A888F061AAE9153C23FD440CEB0BC33
-:101D0000BD6A78CC57B16E9093B86E43A2750B3A0A
-:101D1000AAF559E8DD03EB564539B0ACDE3B10F3CC
-:101D20007697D1BC1F01BE599C9F98919BC03F974D
-:101D3000375EB377B90BE15EA5495A04DA7F8EBFEF
-:101D400019F1E7E9699CDE019F2F6BF0648580CF74
-:101D5000747CCF488EEF9B107E95F0ACEA8E2E807F
-:101D6000CBA579581BE060DEE4F06FA83DDBE147CE
-:101D7000FC0300D4BEE5285390CF80B7028EA95053
-:101D800076B29ABD49E6FD69C841F3363356B117BC
-:101D9000E09BB8D1B72AEC8DD7E79671B8547CC2D6
-:101DA000B8C7D37BEF1802F3F732E6DB08E3371B43
-:101DB000C0BCF07CBF5E8A48B0E6F7B3C3738AA0AC
-:101DC000DC9DE3086C84E9BB1F708F580BED7B72C0
-:101DD000BC0184AE277347BA0FC67F3F209BF8BA79
-:101DE000E73DE4EBE3E9317E3250BF749BF83DA759
-:101DF000853A908FDF5179F967A56BDF43FE6279F1
-:101E0000CCC786021EB007F0AA236D9AC70DF3BA9D
-:101E1000668238C1BE3EA6BBA0DE8DF5B0C4798F08
-:101E2000EE7E74018E61D4BC32CAA2475D4C317A19
-:101E30003D34AFF2395790CC39293EAE6B67F3CBC6
-:101E4000CDA88FFD320B216FF9797B3FEBDDF0B927
-:101E500003C787721E43127CE97358BF6496F1F77B
-:101E6000392CD1CBC2153908571E0BA0BE9DA73BFC
-:101E7000CFC4EAF9639B32C98413E191D75714C1E7
-:101E800033B5DEDE6E761E943DF1F2AC9D7521C455
-:101E9000FB2C0DBA8D63ECC8CEBA681DC079A4D0F6
-:101EA000ED9300D3AE6CC5D67E36DBBB09F10E7662
-:101EB000C52119F0B2D49CAFD937EFF70CFAADCAEF
-:101EC0008312ACFFF87782E90559C86F72C061B61A
-:101ED00071087C306AE77470391D90A07DF37362DD
-:101EE000DFB40EE403394DB295832E513FA903F9B7
-:101EF000E2784CAE8E598EE5452305DF0CED403D72
-:101F000039234D94072D47BEED559CA63CBBBE031F
-:101F1000E559AB18CFD8457CFD3613F5691D484708
-:101F2000E198FC9BDB8EE55B7D263CC60F491E36A7
-:101F30006B5C9F4C7DE9D55EE30ADA037F16059161
-:101F40000FC35CDE25D64F391669CE30EDBAD16AA3
-:101F50005F7EDB1694898FC2DA9F65DCBFD206C034
-:101F600019EC5F498D74AC00E953612390EF5B9AE3
-:101F700080F74743F9608A4B4D47B9EE9BA925E1AD
-:101F8000DF57830E1AAF2AE8CD3AFB75683F814DC3
-:101F900040BA6B696A14FD0DDC5F7D942B9292D37D
-:101FA000FF38A74AB81CE8967C0BB97E9619EAE779
-:101FB000E02323BD452CDEEEC5122E0F5A26688B7A
-:101FC00083F09C03E297C11E6E98FE837008E63989
-:101FD00053E40CB889CFB4B790CFE69B34F4B04B40
-:101FE000630FA0DC2872FB36A2EC96F39D8D505651
-:101FF0008603BF62B982D3B70EFF7D9E8BE32A7141
-:10200000FA0738E635DAF9416116FA86FAD5C1746D
-:10201000BEFE9BD9CDB8FE079DBEA528C75A737DCD
-:10202000775BE5D9FE122EC79E36D7DB35FD9F6B59
-:10203000103F1F334700E5C79ED430C9B353198CF6
-:1020400075A0CED798EA1B8A7CCDD721E5DDCAB032
-:10205000FD8F6E80250C03381ADFED2E9D00EF7783
-:10206000F17EE7C6B20686EF155E8687618CC37681
-:1020700027A9DDD6602ECDCF1E0B783C48FBD01CA7
-:10208000F7DBCBF63AF1E9487B7E849E647FC4930C
-:10209000AD767E14C303F21268425CB7C474C7E71E
-:1020A000B87E53FE039D6E273AADE17A64CAB9F358
-:1020B000367A2B0DAAD42E91EEA0DFA3D46FA1E81F
-:1020C000C79CBAC55EDF168C443628A48F7E48EDC7
-:1020D000BCA08FB26CFAE8C7F43E411F4DAAD41ED3
-:1020E0000F16C4CBD07F3795FBF6EF0C26D167D007
-:1020F000FEA734AE47277CCD9BAC3D89E589D70B45
-:1021000079020D0B417E5C23CAE977D64FB3CA9F93
-:10211000C2C751DE2CD625B3FEEB8F237F1F0F09DC
-:1021200079736429CA93983C62358FDBE4119B7301
-:1021300027D6C7E40F5BF5188E17933F6CE6E328AC
-:102140003F82F3845E3BF3188EDF522BC6BF25120D
-:1021500044BBC421FAA744900F7526CA763BF27798
-:10216000D3FE65A9D56F62EC5F1ED32C7EC689694C
-:10217000758F931E3486B0D3820F72FBF2BB90032F
-:10218000827E847D78EAE093BA01ED5654686F59F7
-:10219000F7256667F672BB276E5F9EE7F6F7C0DB32
-:1021A0008FA769FE7C4E6F5FC1F8FFCB3ABEB0A728
-:1021B000E0FDBF59DF5F6DFE1CC0E70A21BD4FE4A3
-:1021C000F05D41FF8C10AE2FC0F5D4DF00DE6C9ABD
-:1021D000CFF403AE427C064243AE6AF84A09BE2AF7
-:1021E000BEDF2F6A313A2D4F4E07974DFF73695F5F
-:1021F0004AF9BA2DE3CEA7F755822FD4A4FE3AB4FC
-:10220000BBCDDE2ED6FF7682CB1CF722FDEFB4B716
-:102210008BF55F6EA5CF01E0F3D5D6FDFD0AE4484E
-:10222000238D3F8A8FBF328EC7EF58DFFF67DCEC0C
-:102230009274DE4EFBDEC0E9E932ECED9F60FBAD4F
-:10224000D25E3D83E24486C0FB3F23DEE17DAF0BDF
-:10225000DEBF65EEC79345E19FE17B2CFAC75BFCCF
-:10226000136309AD2FEE9FC040F9567DAFB75BF504
-:10227000FDA1505D3BC22B97F0F6FBBBDE5C86EB0D
-:102280004F2C835D7280D6930576C918B24B9EC7DA
-:10229000F2A5C605F8BBA8DFB39C6E92D4BF42740A
-:1022A000F514AF6F75713BF6EDDA8FC98ED3D6A8F2
-:1022B0000EB4E3845E3F1AE27E00D82315116F5FEF
-:1022C000BBF1684812783B4AE3EEE5F83F1696D337
-:1022D000D1DE8CD92DEC55F283E276D55DEDB88F49
-:1022E00071BBAA81CAD3CD7D3E13BA779909EF0994
-:1022F0008E07733D976EFF1EC1E1E7ED93D49FA556
-:10230000F1B2399CCC7BF80CFAAD44AFFC37CA0172
-:10231000E5556621E85C549C05764BD74E4945321D
-:1023200059B94BECF3FA769BDF68F2E162938E9534
-:1023300092E665185F58FC89E0FF437CFD313FB5AC
-:1023400099E07FC78C4F3C8CED397C9F12FC2A872B
-:10235000EF2B18DF55427619C74F0D339C689789CC
-:10236000F382C4FDCD287188FD4D2F213B99C355C3
-:10237000A34B64BF87579C7222BD2F3DC6B464F443
-:1023800031A4C425E24F43A8BFD7F46F033C2E9479
-:10239000D87E78492C5E359CE0F4F1F936148547F7
-:1023A00060FF69FAD192A17C6B3C688F864BA5488F
-:1023B0005B0EFA37DEB25228CF73B05EF2FB18DB49
-:1023C0008C715FF7F30A6B0B506B55B1C475804B82
-:1023D0007F8B7EE422739FE7B1587CC581F11A4B55
-:1023E000FC86FC4077C9FD793B558ABB50DCC6E5CD
-:1023F00097C9AF083EB482E223A9856E9F1BE7917F
-:10240000B3C9CF75FDD08C172DE4FEA503FE433B69
-:102410003AB59191FF36679B1451A1DEADD9E32FF8
-:1024200075EBCF37937FB782F934F01395427BBDBC
-:102430002BC17F6D99A087104F6777D539101FC1C9
-:102440004AEE879DDD35D28BFC97E8479F453F9A42
-:10245000A4541F3FDA7800E36B163F7AED00FAD1FF
-:102460008B4AC08F465964FAD1238BC2B7113D28DD
-:102470001AC9B7AEE953E693BFBC4D666E687F7A62
-:10248000E7C4370AA16C6C5302186E78DFA92DC51A
-:102490007A03FC69F97ADA2686F1ADB926FCA78BB6
-:1024A000CE9722FCDABDD70790DE4F3FE4263C9F53
-:1024B0005E99194983F132B6FD65530AF47F2532DE
-:1024C0001C836C31FF3AD10F672C6220DD9C6623A0
-:1024D000581BEE83E26338AED290113002717F7BDD
-:1024E0006E9ECFC0F1F4481AC37D8FBECAA4B379E3
-:1024F0008C8E1C908EE731D58985054C7322FE1792
-:10250000319DCAB701BF492371BE3C83E800F80E74
-:10251000E3774D13F4EF10BDFF88D307DBAEB4E3D0
-:1025200079C569E39174E4B33DA9F6788378B698E8
-:10253000FCE9413F7FCC80FAF90F5AE5C465C895A4
-:1025400047F87E727E7595301A07F4643DF279B7CC
-:102550001907DE9EC9E3277BCC3849E213183E0BEE
-:10256000FB7F513D01FAB29DE08DFBF11D08CF6567
-:10257000E8CB9F12DCFBF83A7721DC5CFEFCF7121B
-:102580006E07A819144F01513C89EF2FFE3E95F4B8
-:102590005FE07CDA5312ED578ACA480EB95938CA3F
-:1025A0008989E3117EEB87DAFB3D7BB17E6B827C10
-:1025B000FE3F16EA2FE0FCC5E78142A19DBB8AC71A
-:1025C000C1E77AA5972535DEEE38C6A192ECF779FA
-:1025D000538E42B3A803EC958733600FF2717F02EC
-:1025E00083505EBFDDA49D441BEE7853053D7B9474
-:1025F00006921F3DBBE4C806E8FA4613EB2E1DDD2C
-:1026000077DC9ADAE0C933167934B7EC090F08455C
-:10261000D69CD77158C278BDE656DDD0BF3B3DBCD5
-:102620001DE3F5C651997502BCB72EAC3C79C622A4
-:102630001F12C785F998012CFB61894C701F0CBAD9
-:10264000A333308E60481194072B8C534E8C572E39
-:102650006D5CC674D82757E12905EDC29AA08FDAC0
-:10266000CF2D94996181EBF149DA7B8867A08B3398
-:10267000B4BF81981DF53E96834E2DC3971F8F439F
-:102680008A7381174B9E22FBB83B93D1FC613F8B31
-:102690006C80F94BB465AE5E3C67F187296E7AB207
-:1026A00044A57957EE6C277852A7FD99E001DB39F4
-:1026B000EA18DC17DF820F8E9A786F31F1DE1F9EE9
-:1026C00095521ECF13E5B9654A3AE2F92D45A57337
-:1026D0008EFEF87B7EA97D7FDCFE0A5BB959BBD7F5
-:1026E00081F47476A71CC17D82E7EBB86F9FC0BEF2
-:1026F000B19CF838DDE9ACC6AA9FC5FECC29B5EF80
-:10270000CFD26D7C7F966E0B125E969656BA86F18E
-:1027100073B5BD40DB4C2F5CC6102F2EED9482723A
-:10272000ACBFFD027E1B568AFC6BDA8F57103FCF81
-:1027300029B5D8B55F757C1FE6BBA534899DFDB76B
-:102740003A5F10F4740CE56A7E5CAEDE56CAE5684A
-:10275000E253C8558B3D49714D0B1CCBEBAF000EBE
-:10276000C127C8A728374A7648CEDE7CDC7FE0D771
-:1027700031689F7DB819F35156F919D14356A94ACA
-:1027800074ED9A36CF85F278E5AE3F2BA8AF009F67
-:102790008B4B2D72B8A494093D544BEFEB395DFC83
-:1027A0007B9FEB003C77D3BED77238AFB673A7756B
-:1027B000D5E18DA5740E0472C98BF1789FD04323A7
-:1027C00078DCFB8B9D6FBEBFF35E8676E0BC3FA5D9
-:1027D000AB6807DE5ED4A9E5A849CF3755C976BEF8
-:1027E000591762E45730161AC62E79BE99787EDAE8
-:1027F000F7BCD378B9392B6E77279E77269E6BB2BC
-:102800007ECE3FFB9E771EAC2A02386705649FAAE6
-:10281000C6CF335DD3CE9E6063FB9E770E32F52E1E
-:1028200043ED6D596FCF08756F14F3A38679021DC0
-:10283000BC399327C5F1087AC0E38679369501FC47
-:10284000682FE7743CBA80D9F0E8223C7C413CD246
-:10285000F936E265A714D988FD950603E5F94AE63D
-:10286000537F1088EF676CBCBC751ACAE7EFD47948
-:102870009903F87F73D63D6C19B44F3D92C26468DA
-:102880007F44BD87F6FBC847E92A9EF7BAFD967DCF
-:102890003071A908F8E4BE7ED2DF601F3DC8727DAA
-:1028A000F651ED28453D7BB9FBF76451F803E4632D
-:1028B0000FE86B657CFC7DCF088ECFDE9B58A44370
-:1028C000EABB8F806F8DFCCE3CD6BE91EA1B18C64A
-:1028D0000736498CE33B812E1C69EB0D3CD7762DE6
-:1028E000F7921FD5DCD040F83E0AF8367C9CBFF04A
-:1028F0009CEA22FC25E88249432F9F2E12F7FDC84F
-:10290000CE3AD67875EF6B3FFCB9BB14ED9ECBDDAC
-:10291000D77953B59CB202EB3E6B23CB8658F9D6E0
-:10292000E07E0938C0E44F2E64AC33B3AF1D956F21
-:10293000E6A5C0785FC7F1C69431330EA88DC1F209
-:10294000821B5843B2BC976BCBB93F560B2622C5AE
-:10295000558C54CABBACF5EDF83DE5611A37A9D6E4
-:102960003CCC3ABE0476FCE1F61EAC9F0B8B756442
-:10297000D12BCACB14F80995E5D0B845AB4FBDAE05
-:10298000527580C67781F0473FB5165F523E098B7E
-:1029900074921CD0D97C90F777AC95289FB3C64829
-:1029A00063E8D7C6F32AF626E455F0F2DC6CB3DE12
-:1029B00078B1C37E8EF9DA72DB39A6D19BA0DFFE37
-:1029C00048FACF665F58F4D9072F7FB2DC50ACE7E6
-:1029D000989FD2F8276BC57CC1DDC17CEB39A66B13
-:1029E00037C223E2D4F0DB6D3DA704C8A92CE2C8AE
-:1029F000A933B53A8C87ED9BA0AFC0FD914BA406DF
-:102A0000B48F40C16812C56B7C1DE84F83FDBF12B7
-:102A1000EBFFDED70976485399E5FCE3EF0DFED3D3
-:102A200022BE6F1C5F8EF05DEDF002BE7F46F8AEF9
-:102A3000E0F8FE3B80F7605952FFE4AA81EF6D8217
-:102A40002F760EF1EF0ECF876596F38BAF7A3E6D42
-:102A5000AAF6BF71FD5FC13A1C33711D66FEC165E8
-:102A6000B4F7507BF3BC34B1BE69A6E93F98E7C424
-:102A7000EFC4CEF1AEADC3F17AE3E77A74EE153F61
-:102A800047CC1B89E78871F8F3687E718E189E79B0
-:102A9000731DE545F7738E391FEB4759FBDFB41BF8
-:102AA000F9AC2D613E9759BF6AE6448237BEDE0914
-:102AB000345F7742FB1A737D6B674EDD6D58F00112
-:102AC0009DA87D4C2E31AD0EE78B9F3B4EAFB39E44
-:102AD000DF7E6FA6B65B9CFFCF443A36CF69FFA37B
-:102AE000E363C14C1EDF11E7E5820E474ED116228B
-:102AF0009EAE367861FFEAADF4FF37986FDD4C0B80
-:102B00003F7DD1FE317E34F5BEC89F00FC1A88DFC0
-:102B1000A6723569BE84F013C3BD2C827ECB5416D9
-:102B200091F15C221CD019C641637C6D54125FBBCD
-:102B300062F723E6ED46F917BF1FD1B61BED8BB840
-:102B4000FEFE559D3DCF616E9DF57CBEFD955F8976
-:102B5000753F6AE593811EFF7BE576BCC4CA267E7D
-:102B600096DCFDDF46D8EF5F2CA679DE89DDBFA8B5
-:102B7000DB6DBFC7D0B0DB9EDFF15D3B5CACD50E3B
-:102B8000176BB1ED574679EB6E03CA2E33EFCDB517
-:102B900042EAE77EC572920BE25C17CA36B940E59D
-:102BA000EC8187EBB7828E4C3E8DC1D9273FEF9BDE
-:102BB000BBEDF9790333BF452EBC8DFC30F078E7CF
-:102BC000F73B04DEFBBBDFB15815E5C6BAFAFC2FB4
-:102BD0003F2FE6FF59E5C9975F07BF2FE24ABC2F99
-:102BE000C236D6D9E5CF65C3E72A4F2A7F2EAFFF7D
-:102BF000A0F27EE58F0FC76DF63AE83E8AEE674990
-:102C0000EFA33495F373A9187F9AF751163C9CDC17
-:102C10009FFEAEE94F8B7877D0757E85F5BC6B74DF
-:102C2000398F6FE796C7F25072697D8D1CBE00CA5E
-:102C3000433CEF610AD380A7162E18918DF035FF23
-:102C40008E8FC7FCE027A7C7C7AB36E713F3BC34AA
-:102C50002FBDC69AD730D69C27109F2F40F3ADE7E3
-:102C6000EB9007ADA67B5E31BFDAF831E1B5C5293F
-:102C7000FCEC4EE2EF78DCB883E4CE22B7A0FF276D
-:102C8000775BFD89DB7EFD14C9370C5FE0395EBCE4
-:102C90005F7BDDE5F42B2B37F5F12673BF8CD87EF7
-:102CA000CD44B82FD5DFE24747A5ACB81FBD6F8232
-:102CB0003607FB833F3DB7BCE0D2E3009E16119E72
-:102CC000D6DAFD114BFDE2725B5ED2F9D517CB4B24
-:102CD0005A61EE7B7F79492BCA6379242BCA2DE791
-:102CE0004AC17925E905182719E6487A8FE21E734B
-:102CF0005FE3F95DBFA4F5B408BE33CBDB3379FDE8
-:102D0000B77EFD6C9DC9576BCA2DE717E2BC85E500
-:102D10001F8E629CC7925FA439AC719F92534EA4E0
-:102D200087A5DBA4A4F9337DF8A5D51C7F5B6C1FB8
-:102D30009BCA797C5FC7B8E36231EE3736D0B835CD
-:102D40002BF8B8897CB3D5C4DFD6389EB6129EB4B2
-:102D500058BECD8358C69401F7F8F8F8E27E4FD0FC
-:102D6000197E01CF755A0C4945F9AA372EA3734530
-:102D700056013C09FB141C96BB0D4587986F5C05FA
-:102D80009F0FFE598AEDFCC042C630B06B2B96D126
-:102D9000B9F3248DE7AD4CAEDA200F5129AFE547EA
-:102DA000B8AEA285EDCDB8BCDB6A7F2127CB67E941
-:102DB0008EE5B3B0B7460D05FE36E1C37B216B61EE
-:102DC0009E7762F92C5565EBACF92CE12F97CF2259
-:102DD000E27F4B428057CBBE8D34D739B282E33588
-:102DE0007E0ECCE8FCF6465633EB268C2FE3BD2D49
-:102DF00078DD6DDE73BB90CD2278FEBF617A2AC587
-:102E0000F17A33199DABC28664544FC23C12FE4B1B
-:102E1000195D4A715C37AC0BD781E7B2D1AFC1F015
-:102E200072EDA068127A7E234367012FC6FD8DCD17
-:102E30000CCFD5F447E87CEE86157FAEC77997EACC
-:102E40006E15496071BDAF8CF2B856079CEB300E21
-:102E5000E9979986F1EC2AE77BFC9CC643789A5B5C
-:102E6000CACB022F6EA6BC67C58B92506E3CB16177
-:102E7000CB214B7B5734251DCF05DF2E4FB7DD2BE4
-:102E800062B297E8E082DF11C173A86E85752900F0
-:102E9000479D2ED3F97BE7B635AFE3FDB1A57E257F
-:102EA000E0807596344A94FFB5D8C7F1F49726634D
-:102EB000CB21B0615386E5D239CC059F87A2F12D95
-:102EC000B59D14B7077AE95630AFE70199E1B9B774
-:102ED000C87F9A67D28BC063CAB28F092F17F03CA4
-:102EE0001CF1529849795073001FAA8FCEF93721EF
-:102EF0009E525943F41A98F756BF83452D7168586E
-:102F0000BF2D8F0CC6A6BC3385DED8EA093FA90FBA
-:102F100094F07C34B92A8AFB7AA190EF2B94034871
-:102F2000EFAC94D3A9C07F6A029DBA13F2C312E931
-:102F3000B40FFE2BEC78EF5458208AF4764C26FB25
-:102F4000A277A7924179573B1D9477C55884EE31FB
-:102F500075B2C18136949B5189CE096E33F126F04A
-:102F6000CE58C3E6E518E76EC80860FC9F391A36EC
-:102F7000637ED4E2481AE5DFDDCEF6521ED41DE8AA
-:102F800021C3BC77329F0BCBCB59809E12CBA7FBC2
-:102F900025B7EA12F185CEA2D53701FEA2D7393383
-:102FA000AD7955FDE635C1CACF5ACE23465598F2C4
-:102FB000D2A3FB799EA76EDEFBD1283F28B3ACD409
-:102FC000A32791B7A545FAD72B0A2C7918BE064638
-:102FD000E7D345E1311543E2FD9F9AA08DC5F2E4A8
-:102FE00042ED166CBF07ED3CD0078B0E8F7D02F5CE
-:102FF00059CB046D3CD627CAABD3FDE7DF451B8117
-:10300000EE7A505E511E613EF1E140E5DF9555F4E8
-:10301000C9BF2BA7F598F977279DFC5E19E5224FCC
-:10302000657DEFA735DE46F5E27E5AE2BD34F62334
-:103030005E8605196DE3F0FE6E03AD5BE03D113F6A
-:10304000CCBC97B6C4FF4A8F347600F2D67C60DCE5
-:103050000DBB187D18FCFE72F59A9E2CCA235428CD
-:103060008FB02587DF5FDE844D30116814B7070706
-:10307000557239BE25B3C11F80FA2D4E9E0FC3F283
-:1030800074B6604C7CDC4195B238176A403A00BB9C
-:103090008FEC2561AF8A76F7997AA1B14212F7CE0B
-:1030A000EEC7F696FCEE46DA0F6F34E210E776FCD8
-:1030B00047E740C27E383EBC81F269DC5A727BA190
-:1030C000B922A6CF9B69FC9D429F6B9B70FC19D7D0
-:1030D000F816229FB94A64D6817A6CEE5D24779FF8
-:1030E000C1BC51B06926EB1B4A86C27E3F52619E2D
-:1030F00037D56722BA58B7C6F349A3C50D7ED47732
-:103100005B8625BFF77DB282DBCF13AF3F2FE3B8DD
-:103110005B9681A7320EF167501E9BB1086409943B
-:10312000C1DD3F84E7321EB4038A502FF2F6BE7A27
-:103130006803FBD865E22B7823D00FDACFA3EDF933
-:1031400048E229DA25E65B81284FC77527E6B98969
-:103150007CAB1EC5480F24817F6ED95A0FE56B6585
-:103160002FF7A09E6CD14A68BCC4BCB72DD96C04A3
-:10317000C29598D726F2A644BE9418F7B90A4E27EE
-:10318000226FCAEDE77A0B9E942713AD50CDFBBB9F
-:10319000F6FC36915F83ED29BF269BF1FC1A7F0375
-:1031A000C37E6E2863FBB0997F9698570572E8201E
-:1031B000D1411FFB88919DD15264E60D306DF332F1
-:1031C000B48FF0FC3690C4BE0281807AD005FA0933
-:1031D000EB15797505A6F27C593BAAB428DC83F07F
-:1031E000B9FC3139FB3B82372E67DF35E5EC09ABA3
-:1031F0009C75BFBAF509B4BBB7489C0EB700DE9FFB
-:103200004E421F1F98FCB6253339FD7C6ED26BCB26
-:1032100084F08738BE96C5EF777C513BB3256E6747
-:10322000723C0E909D09F8F8CC2AA7011FFF2F19B8
-:103230001EE0B709E58625CFD45959D07F9E696233
-:10324000FF2BBD277C0DC80DE43FF0077D95E40FF3
-:10325000723A16F2387EDFF6CAE4F53107C85180BB
-:10326000076D026BFBDC4A2EE7C64DD5732B492F49
-:10327000F3FBBE5B83FCBE2F8B6AA4F78FA7EB35F5
-:10328000C8A72C6FFC25E6DB60E6D3EAF56192F374
-:10329000F32FD17EA339BFB9DEBCC1A43FB64ADA51
-:1032A000AE54395EBED4FAAEABD42623FCCD7A98A8
-:1032B000BE97B025CFA11AB0B47F9AAC17E3FB2D0F
-:1032C000791B69FFDA80E024909B731CE71FCA9585
-:1032D000281FF85969103C3DE0B125A1EB59959C98
-:1032E000EEC18AA57A7642F35BE31C6B4DFD16CFE7
-:1032F0000778FA09EB3DA61595FB5618163D86F1A1
-:1033000092A793D0C5C24ACE3FB27B8D4D4F26B611
-:10331000BBB5D245ED56569AF10853EF2D72733F67
-:103320008A1D01F82C7A75DCD4D0EDB4AF063324B5
-:103330008B3E14FA8F6A2CEFDD7E7EFF841DB38FE7
-:1033400023D6799F49A7625EA0D755C81FA077BF33
-:1033500081F388FA4532E3F18E6E3BBE009ED59C28
-:10336000CED88A587E96051ECDC1C78DC1D1638740
-:10337000E33E733FC64DD5EEC371401FAFC3676BCD
-:1033800008E82D095EC71784BE8DF50A335A73739A
-:103390002E6AAF6EC076A26CB1579B2BEDF6EA2673
-:1033A0005C2FC8D1CDF87E4F6AF2797798F81AB0C1
-:1033B000EF065C269F3F88FF4CC22F6DBDFBD2C637
-:1033C000028BB9DDC6BDC497F9E32FC1579C8FEFBF
-:1033D000BCBE81F4DB0BA6FDF1829329985703BC98
-:1033E000154896EF73B452D81B91E18897E7FAB16C
-:1033F0003762EDFAC9ABFF1ADB9176257647DBB46D
-:10340000E36964777CD29186FAFDB933A1A476C7CB
-:103410000BD93B8627B33BF6F76377BC6ADAA7077D
-:10342000DF77911D517C8EDB1DC5E776C8683FBCF8
-:1034300059A9D27A8ACE74CB3AC05D8C76078CB308
-:10344000DFB43BB03DD91D9FEC9011AEA273DDD42B
-:10345000AF18CA687714F56377001432E2E1D9E255
-:10346000B67FC5FD4B5CEFBC897A8F956E0B7BBB3D
-:1034700029BE23FAB5E56D4CD369BFEDF4535AA4C8
-:10348000DAF2E20B7B39BD27B6EB8FCECAE4AAD6BF
-:103490005E58D75696BE83F2319586C7B16C180A2E
-:1034A000FF3E1E7E5F039EF7CF051832B15DC34F0E
-:1034B0007A51AF186E1F7ED7E02FA94BB99FB396F4
-:1034C000F99C53E37288960EA01921733C97C7D7D5
-:1034D0000C76D2F7D332088F8D3E11CFD951910B94
-:1034E000FDEFFFDA28BAF7137A040682F2D46332CA
-:1034F000D58BF8CFEBC318E5E703FFCEA986F127FC
-:103500009BE3839ED3EE85F68B4C3B6CA6ECA5F635
-:103510000FE6F1F6538DF3F5582EEA75A978BF8CB6
-:10352000C9EBE5BB316E8BF608B47FF0F9709907F3
-:10353000EA538F032438DE0917C52F447CA1E0D855
-:103540005EC267DA19972DAE910A122F6AB15B5CE1
-:10355000096526D70E4A269FC433310E71ED2CD350
-:103560001F1DCB6EF91CECAC0B6C7D2BAED13D3A24
-:10357000747037EBDB5FC419CE4FD446CC827D1C10
-:10358000E5D4C96FD95F01B8867DDABF73E7ECB1C6
-:1035900088F71D0AC5754F7E3B8DF6E9C0234A3B6F
-:1035A000C6934E029FF2F8ADB112E9F5403A13E727
-:1035B00040518CCB1D88DD67CE5EA959CAE35E2BD6
-:1035C0007C1FF5E08121A2FD8F79BD281BFFB4127D
-:1035D000F3360E0CE3E525AF3DD369101DF72AE461
-:1035E00057379EF626939F9366DBE9784EE11A4E95
-:1035F000C797E807F27EC6AC24FD52AAB97F75A032
-:1036000016401A8778D24B67015FEFEFB9A7750CA8
-:103610004C3571DAB7BB498E5ED3BB3699DC5F306F
-:103620008BDB53D1E208F95BE0C3737F97298730C6
-:103630007F750E53C7A35FFFF0F4E77E3316E6797C
-:10364000A368F47839095FDF3D2B97C689C37754A7
-:103650005E8E72E9A3F716269303DFAFD417DBD78C
-:10366000C3CF479B772884FF0766FFDF2730EF2112
-:103670005ABC83E277FBFFE460E8AFEC1FC3ED7E4A
-:10368000BCA187DFA51C00F8764E4E427700DF5DB7
-:10369000B30AFAC2377936E3F9A113B56F617D2217
-:1036A000BC2AC6B9015E30AF022847523EFC2FDD6E
-:1036B00018CFDCDFEBA0A0CA85331D3292605B4FD0
-:1036C0006E299AAB33AA4EC94852C5BE4736E3D1DC
-:1036D000AFBE5EB6F1DFE49E545BF98E866B6CE59F
-:1036E00025F5C3E3FCC8F01ED0485BD9EDBFD95621
-:1036F0000EB209B6F2C2AAA9B6F1CA7C25B672B951
-:103700007FB6AD7DA5BAC0569E9DB7C4D6BE3A5011
-:1037100067AB0FE78F53F00A1FD0E5F771BFD38E69
-:1037200069C4E75B7AEEF1215D448BC3E44F1F4F20
-:10373000EFCEC678F5EBFD7C57EED42CAECFEEBCC9
-:103740001E4C239493A0CF3766C6DB07737B6DF1C5
-:10375000F8C3B3B87D7A7056623CBEBF7B705C3FE5
-:103760005FEEFDB7443D3CF7A67B482EB52D942374
-:10377000789FAA39EF2D2FDE1B7B7D218F23B46527
-:10378000C33ABD948F41FC7570D16D23F05C2D352B
-:103790004FBF06E5BFD0DF257911761AEA537D11B8
-:1037A0003612EF9741B9CEBC675692CFDFDF68BEC5
-:1037B0005F854FD0DB332DF84AD4C741CFB897C1CE
-:1037C0005D60D3FFEAA3EFF72DCCE7F19ED24F2245
-:1037D000A5789F7AB6F6D2217E6D9ACB9F378AFF65
-:1037E00098D58FDE7ED3CEAF47891FF69F997F5144
-:1037F000F9FF87261E5F7FA6C9C3A2B0BE134D3E48
-:103800007AFEAEC94FEF8F36A9F46C69CAA367B4CC
-:103810002940F5FFDA5448CF434D1A3D5F69AAA00D
-:10382000E7E1A630B57BADA9869E479A747AFFF191
-:103830002CCE97570B3C5A9E8827840F3A24C2EB14
-:10384000424CD59D724E93ADF21DF0FA6932BC5ECA
-:10385000A91E8916EF1D1EE67A2A291F0D9D2DEE41
-:1038600085713B798E4E323F069F0BE37359F1F819
-:103870009C1B4D9AC104E7A0D9050307E701337EDD
-:10388000732093D53CCDFDBA4D12E91BDF382ECF06
-:103890007F100E913C1F322EB93CCFE923CF979178
-:1038A000DE6287316E8A6945288CD7E1FCC9E32145
-:1038B000C6A09C8BE281CE2B051E2CFB15B8123CBA
-:1038C00024AEBFB4489B8CE3E03D14E7E0BE7AE44D
-:1038D000C6DECF348C493D9BCFE17DF8BDF983D066
-:1038E0005E7163308AEC1570F00A71BF99698FB40C
-:1038F00077D667F71DE70FC57B49AF3F18B3739EB7
-:10390000203B26B11DFC0E111E506F59F090440E45
-:103910008493ADBF4C7EBE7723F43FD0CB285EA608
-:10392000A24D0DF03FA7F0EF341C38E7203C5FF0CC
-:1039300048241FDD0FDCEBC1D8F6B3DFE5ED8C6A60
-:1039400089EE2FA475ED57D14E0DF6EAD7E0F7C6F4
-:103950000AA3954EFC3E6868DAB8408A850E428A12
-:103960005D4FA2A51AD33B140C1B9C50BE2EDE5EED
-:10397000C6FDCF8D9773E8DEF53FCE063A9D7FBE3C
-:1039800081A9F9667C35399E564B96789BC202AD6B
-:103990009373C8EE3C741D9EDB8C661199E8CA20B7
-:1039A000FF5BC02B7BC3742F4FF8E99F4ADAFDB34E
-:1039B00093D80FAC5EA37337E670D0B95BD304BD68
-:1039C00069369DCF279CCBF85EF93F12E8B45607C5
-:1039D0008BA27D6164B8087F89FB35B9B07213AEE4
-:1039E000CBFFA5FDFA1D92F53B0137AA33C89FBA5C
-:1039F00000FE14DE436956F8FD28E3447AA4938060
-:103A0000647968B7DD2FDF1CC0FDFF7EDAF7C83FA1
-:103A10006A047F0BFDAF6DA61CBE3F35A383818278
-:103A2000DAE66CF81F58DF22B17007FA5B29D74736
-:103A300058461CAECED95C9FBBD91D8390CFBCBE6F
-:103A40009927CF4C48E6EF71FFC419DBF76C1FF9DB
-:103A50001B66D9EBD2FD98F7D8326EF52EBC8F6578
-:103A60000CF1F0F34E25ACCE03FC3C64DEAB653EBE
-:103A7000836559EEEFCB4C398BF1D9563066F07C2B
-:103A8000F79709F038AF101E174A18F447B35C11C6
-:103A9000CCAF51511E015CAD7E07F1CD2695F3FDF3
-:103AA00026AFE6F125D9B72D884777FFFB29E76CCC
-:103AB000F2611C7B87D7417CD9AA2A5B73A0DCEA20
-:103AC00055F8F75A554745B27CAD8F6673BB099AD6
-:103AD000A4507E53703ED931FDCDD366EEA728A702
-:103AE000E6EB1AF18F1A08E37A9ABD5912C63745E8
-:103AF000FDAFCDF1459C78AB6917A5E6ED8D62BCB5
-:103B0000A665D8AA09882E0FD83967E1BD277F2F6F
-:103B1000D9452D433C35C9CEBFCECFE671B6ADCE2B
-:103B20004005E2736BBA831980BFAD39C9F5608F68
-:103B3000B97FCDEAF830D12DE063B4D4B7DD6F4C56
-:103B40007DB9D9B9C38FF7D0B68EBE95F2BCB68E0B
-:103B5000E072B7F1C889CE0DF9C80FDF62FF86FCAD
-:103B600090A5D0BEA92CE041FDD5E2537CE8EF4FF3
-:103B7000CC5AE7095AE497A0FFED6887C0D3396CA7
-:103B80007E0DD2E385C2D40022BD4C3E42DF0969DE
-:103B900009803CCDC13CA4069FF5FE3FD8D37215E9
-:103BA000C0951E70D8ECED4185767F4165BA87E8F7
-:103BB0007318A7A3FEF62F111E2F4A9CF117699FB9
-:103BC000A9D724FB2EC9B82A8E574137CE4BD0CD6A
-:103BD000A5E0B7E9BBECB8BECBA91AB10ACF2F1E3E
-:103BE00062BC7EE491F39DE8AF2796BF2C7F362B15
-:103BF0003B481E378F72113D25F6DF9AC3E1F9600D
-:103C0000F647341F861570DF323D3C8EB4BD7070B0
-:103C10004A32793B6BA25E5465B18B324BF7921EF0
-:103C20001D5CC5087F5E35EC1B05E3788FC940A39A
-:103C3000806FC7677F3DA55E391E951D0D2CCCC7D3
-:103C4000233983BFCF40BE6598FA64CB0D6F30CC6B
-:103C50009FD93E5209C89487702470313BDA5B6863
-:103C60008F137DD138504D95998F92C252781E5046
-:103C70005548A1FC1B07D79F1AFC3FD4BCC22E9904
-:103C8000FB3FD43C5A52F1158F7F65D5325A4F2CE9
-:103C90001F05BF2783E3E88CEC0CBC108BEDAE5BFB
-:103CA000CDEDA86CD62BE1F9DE0D98952323BD73DD
-:103CB000F97981653B281F07A6C17C12C97090BEA7
-:103CC000FBAF379C9482F0767BD1AA71B83F89EB29
-:103CD000585365C6B362EBB8381E049C034DA74227
-:103CE0002F377BB89ED54021A7A0119C10D72C93CD
-:103CF000D7535CB3C570FB500F372BA077B3A877B1
-:103D000098E2A00971CDBFA4F0B8A7B48EF9A4229F
-:103D10008A6BE6E13E35B2D400C61D0729BA07EB2F
-:103D2000D346298CD355C3643C3F89FBDBAA97E774
-:103D3000BF35529EE0AF50AF41BBAECF2E2E8FF6B7
-:103D40005D42AFB51D1BE5A5B8B9A72E0DFDEC670B
-:103D5000FCB947D06FB9E0E1F95BA25D57C2F74CFF
-:103D60005A4C39D75365C6C753FE2263FF197E5597
-:103D7000C13CB990671CC9F76629F93940AF29DF02
-:103D80006E54DFE474B65A7C876C35C9FF77D34D27
-:103D9000FAADD79750BCD8B4E398A6A9BE4971FB39
-:103DA0004DE84BBFE233EEC271CCFCA93EEBECFA1E
-:103DB0000786DF57617E4BDC3517E71F14CB9BC3AB
-:103DC000F913EDB6FEF0D966FABDCDFE10E55D5CE7
-:103DD000409995E45C443CC1FEEC463955D06D9762
-:103DE0002F697976F9D2EA68A03C2EE366E6C33CF7
-:103DF0000F5615F05BED5FB0438F571133DBEDC904
-:103E0000FBAAB9BCEBCA54158CBF9478820CCF1BAB
-:103E1000946C9DE17EB8FC818BEEC7CFABB8DE6FB2
-:103E2000C95B1E467FE5E1E9DF24BC4CACE079A527
-:103E3000A21DE8CB0FAA2C7E8BC83BB8ECEF23F970
-:103E40001C948F78B9F1A1B6692BF9F791FCCBE9F5
-:103E5000FB48CF78F8F791BAD2F534B4BFBEE8F793
-:103E600091EEAEE6F41AF27CE3E08C5C0B9E7A7481
-:103E7000CA0771F9CFD3B9CC0C337F24310EE47665
-:103E800037D0395AB4B86189350E2CF0F77393AE38
-:103E9000FF50AC539E4F7F7FDF41B4438CE1BADCCF
-:103EA000669C734BF1B709FFF32B3229CEA49871AE
-:103EB00026D7799DF27A3B27EAD7565BF49D3BDB08
-:103EC000207D97F63DC6EFAF7FCAEFAFA76D6421A7
-:103ED000BCAF1EFA6C3C9D3F85A229C467D33F0945
-:103EE000D0F7A7CBE4A75A73A1BEEB9842DF85EFCA
-:103EF0009A9E9A857AEDE363DCBE4DEBBAE9C82D54
-:103F0000502E3E5687BE3EC81D806570DF754CFF43
-:103F1000C4F1A5FCC702F41F2DE72062DC5F361D4B
-:103F200026FAD8D7D44DCFFD4D517AB635F5D0B35A
-:103F300050D14A703D85DD7426C9A69C817A0B1C40
-:103F40008527A0BF851E864CD4B56AE2BF6E5BBBD9
-:103F5000B4BC1E5B3BF05F4BAB0B308F87E3D3856C
-:103F6000DF0D83F1E7F6B0CD92FA1F4A5EADAA1ECF
-:103F70001879F58FD505179357FC9C34D4637E27A9
-:103F80002C811F1DD52AF90D31BE34CF4B859E6E75
-:103F9000C57F823E6DCEF826976FB17C0C7EFF50B8
-:103FA0007C677EE3EB1FEDA1BCD277CC7A83FD4426
-:103FB000B3D433F6C92ABC0FF2123AAF60879E7BA6
-:103FC000BD6B15DE9BBEB52653D100BE123C58CD4D
-:103FD0008CDF7F11798A8978FB9FD59CAF8FE7FAB8
-:103FE00028BEDE92CBFF5E4162BB37ABB9BC409AC4
-:103FF000B0FE1D8FD47EEEFDBC2AC635F1D6EAE2B6
-:10400000F907FDDDEF78ACFAE2F73BFE60D65FEA38
-:104010003EC72FCD795FC4790B282F720FD285F858
-:104020003B1B51F37DECEF6BF859D2717E6ECADD0C
-:104030001BE7F8CCFDD414F33BD47B893ECCBF877F
-:1040400020EAA79C8BD5EFA3F9627FF740A7F88FF2
-:10405000B85FF7F3EADFEED960F99E574BEC3B8986
-:104060003C6FE95313FEC4A7B85F12FB1E147B6BB1
-:104070008F66F91ED44FAADF396B7EAFEA10C16795
-:10408000DEAB79348E875FD3FB84EF0374BDFEDA39
-:104090001EF33ECE6FA8BE21F1BB5BEFEDB1DEEFAC
-:1040A00079B4FAD42AB3FD515AA7F99DAE247461AC
-:1040B000D2ED993D789FF032C67B97C633BFB3B53A
-:1040C000D9E4A3FEE819DA9FA2F6B1EF0FD7795031
-:1040D000AFC4EFF1BFBBC7F6FDACFEF1F5475AB771
-:1040E0002EE665667E13E717911F26E8C23B87EF31
-:1040F000C776931FF0FE1FF55F316078F88CD69578
-:1041000070AFE852EBD837212CCF4138FCB1FC62BC
-:1041100085CA5F121E711F2C913F86CF91445EF3BA
-:10412000609A273BF61DCE6B06625E1877048D13EE
-:10413000FFBEE7F57392CB9F2F342E532F2F6F4482
-:1041400094FF3F19A999BA607100000000000000B7
-:104150001F8B080000000000000BF3176060F8518F
-:104160008FC09C687C5AE3BF4C0C0CFACC0C0C97AB
-:10417000D818189C39191884F8C833E7229ABE7BDE
-:1041800040B366F030302C636560D809C47A5CD8DF
-:10419000F5D90822D847817E5F01C417E91C06A320
-:1041A00078F0E01A11068649A208BE9E18AA7CADD6
-:1041B0000882AD2345995D4E40FD008850BECB80FE
-:1041C00003000000000000001F8B0800000000003A
-:1041D000000BD57D0F7C54C5B5F0DCDDBB77FF2728
-:1041E00037C9029B10E24DF863D04037103058D4E5
-:1041F0004D041A90D7AE69ABB1A576A14A151156F8
-:104200006B9567D5DCFCDF841002A202455954107F
-:10421000ADB6A9A2B59FE5BD0D508A7D7E9FE8533E
-:10422000AB56FB62A5B45AA5F1594AFA7D086FCE88
-:1042300099B9D97B6FEE6E962A6DBFF86B87B9F38B
-:10424000EFCCF93767CE9C99956C6E52760E21A70C
-:10425000E1EF12421EF21242C6A4D2CAEF7DF986E5
-:1042600027AAE8BFBDCED04E9A54FE626E71B4222A
-:10427000557F1611B05EED2F96FC91D07AFF4EEC73
-:104280008A937EDAE71FF486685E15EC04DA394912
-:104290004DC1BF0468F9902DD445F3C993361FA1D1
-:1042A000FD4C2776E8842844F645A6D1EFE29773C3
-:1042B00089AE7F737AF16691240B08D97F27112389
-:1042C000B45E9BFF8225033E425E6C4CFEE5C864F3
-:1042D00042C2C9A9A242FB39D07808F3FFD678F8C8
-:1042E0002F471C8444491E8E533BF72371296DB719
-:1042F000DF411AFA68BBDAB0E058AA1B2FCAE7B34D
-:10430000DFCDCBE51AD1B2DC4FCBE9F7DAC0E596C9
-:10431000E5513A23AC97C7FB191AB0433D850C7A97
-:10432000719E27EB2DE7398EB7D3F255036CBEFB98
-:10433000DE3E7119D0214972234E484F96BD05F8D3
-:10434000EE77090A29A5F81D5884F84D027E6917F1
-:1043500027DE61F8DEFF892DD444F15DEB927D21EB
-:104360009A2722A5072DAFF59130C225D294C271AC
-:104370001987FB2A9ED6438A7451902EFD2E4A1728
-:10438000DFE8F05EB2594278B579F6C33CB368A76E
-:10439000D1957EF545FCB41DB1E68391F8A1E3CD3E
-:1043A0003C733835BC46E6F6FFE5888BE0DF69FAFA
-:1043B000BFF9F2F37F39529ECA5F3274D890A71CBE
-:1043C0004D5CB329BCF04F0552F1CF035A79292B2C
-:1043D0008771E28DCA9F2751FEEB6D247F9E44F9C1
-:1043E000AFA7D185F9EE4619F35D8D41CCC745DA0B
-:1043F00084D231DE4D122A6D9F17A6F575E3E5567E
-:10440000D3763AF8FC21D990F796070DF5DD8A624C
-:10441000288F2B37DB1294EE9D15B6845D0038A8EB
-:104420008C9C0B70B830A5E0BE16A4F399C49A908A
-:10443000750EE5576500CF4B76D24CF3394AD8B6A6
-:104440008CE64B82769208D1F1730609A1FDC5EF87
-:10445000246423EDAFBB72B66D19CD77CD71CA76EA
-:10446000999004ED3FEEA4FD9C4A2A2DD0CF34292B
-:1044700004FD905EF1B7802717FDEF741921131525
-:10448000E91D5B0E21A52AFDAE9F9F530D825CE7BF
-:10449000561BBF4F5496DF4868FD8944F7BD34452D
-:1044A0004F6D5C2D6F1ECF3CCE396B4CFD9BFA2DB2
-:1044B00051066AE48A54BFE790C126D9F7CFDC6F72
-:1044C000B856003A858892A83C7B70FBD67C9C77D6
-:1044D00064660ACFDD0EA607CDF236406CA83F8891
-:1044E000388684295C8A624B74D17EBA4A6DC83F93
-:1044F0004A1B4980DE5A37E1700CF25DA592D24C1E
-:10450000F3A5E5071B84E984AC9D2023DF75ED75D9
-:1045100092E610832340F9B444E3D353033565C0D6
-:104520008702096DA4E5A5CAD126A82FBFE6511CB4
-:10453000D523E747D6B0F9639ECE7F10FE316B647A
-:10454000BFBF9C258523C0B72A4938293C9D939A33
-:10455000EB543ACE03AA48407EBAEEEC7B1DF01C29
-:104560009FCCE035CFBB449196025F13FDF874BC3D
-:10457000924957DC00F332C3A1E98BEF37CA288F89
-:104580005B1ACB317DA051EE033DB1E513BB257E17
-:104590002F13987EDEEA88D8003E758E2DB113F574
-:1045A0004F74EBF5347FFF77C7CE8075E0E6393680
-:1045B000D42F7FEE66F8BE5FE8BD8A607D49C1FA00
-:1045C00026F97F400C377F8BD6BF3F5840542ACF07
-:1045D000258EC30BCF85FED69455AAB4BFFB6FD9E9
-:1045E000F80EB42F993345B1D3F613AB8FBE4517F0
-:1045F00071B2E5D44030E2833C93EB923563FB2605
-:10460000513E19AFF4DE04E397544B4AA234C597E8
-:10461000C52484E39CD3E025497974FE2C5E9999E6
-:104620003FCF9E1EF8FBC85511C855410AEEADDCC0
-:104630003E31D37DB160437E1996AB6A26574F5EFB
-:10464000C8E8ACC9D59609BDEFE5D27CCF37189F35
-:104650009AF9BCB4FA680DD0B59BCA4F7E909042CF
-:10466000A7F2B140F33D4BB91C561F1596D3F67F08
-:104670007AD5A31090A725D6FA3A1D3FA752E3B8E2
-:104680000FDC62AB8DD07ABFBC76CA1F9D30DE12C4
-:10469000490139EB11CB717CE5BB92A2EAE859B232
-:1046A00084CA13E5AF925BB8FC98E46AB4F1E38D79
-:1046B00009F22E95A30D8D4112A6745BDFA8A07C94
-:1046C000ADE37206B62829A4792E67A47C06E6D34A
-:1046D000D99F8434A1DCB994248952FA6CA07D93CB
-:1046E00022F89E0C87E712920FBAEA42042769A3C8
-:1046F0006BFBFAE17212A64C4F7A049E57FFA88614
-:10470000E9787288E59F6BFAA3DA428570839BE5AE
-:10471000F70AE535EA5C7DFB83D8BF569FE693B583
-:104720009374FD41FF157A786C35505FEBEF8DA6E1
-:10473000A21A958EBF9EE7A5E63C963FCBFD770B70
-:104740007D41CAF464ADA99F6E81E349FD8F70D8A5
-:10475000971AE73EE1BDB06A28FF4318F0A495FF21
-:10476000A0E93F5495D6FF8844B608940E33E64539
-:104770008B08A5BBB72E49C094DA60C2776A7E2F3A
-:10478000E1FC7C152CFF60D32761C0B756FE8CE09E
-:104790006F027C03DFF8C6121244212164F3CFBB01
-:1047A000AF7F01FE5D9E4FC81C3A8ED24B14DA8754
-:1047B0006D524C807D47708978D4200F9CEF287C07
-:1047C0004F08349D3137FA35580A2DE053F5F0691A
-:1047D000E38F06AF06477AFE64E39BF9A87641F5BE
-:1047E0008B73A97C790F3B424E05E6210BA0C7F3E2
-:1047F0000128AAD7F24EED473A11B12F0876B4B985
-:10480000DFFC794524A19BE7674DCF2D9067787B2E
-:10481000454F579A7F4D8FC727A0DEAC917CA7CD1F
-:10482000CF0DF3236007D3F955E9E7F75403CC2FF5
-:104830001DDECCF35BEFEE6D8858E8DF8B6D7CBF3F
-:104840007B71F597A07F3A1E01FDE5560651FFCA20
-:10485000301EDD6AE69EDADF005BDB74E3C973E9D4
-:1048600078E5670F9FA3F1B18FEA2F85D6B3853224
-:10487000F3B1599EB5797B61DE02F011DB0F98E749
-:104880004D08E523FFFFBFF3FE5864F4BC85F6AF87
-:10489000B27931F9F807CDEBE3170A505E011E3B00
-:1048A000E3E7A0157FBD2B28867DAE99AFD3CDEB76
-:1048B0001FC5A723E79519CF675B0F65AB5F9B5FAC
-:1048C000F3201E7BAE61FB849E43F3D1EFD0F3C295
-:1048D000A5E3008E9CF8F9244CEDDF29D03FEDAF25
-:1048E00047B32F36578DD23FB32FEE6B247DAD9358
-:1048F00009793A6700F7C3144E6CBF95DA9F09AA8D
-:10490000E0AA5EBAC5BD948EB7F5BA8D6EF02BF5F0
-:10491000707BB1EAA587372CA0F81C776D7EA59D2A
-:10492000B2428F5BFBBEE7F929F4FBE66BF877EE4A
-:10493000BFA2DF5F82FA415E3F1D5C85D2403482B8
-:10494000F242E1D2E15F2B7FCAC6ECD227C1CE3A58
-:1049500017F633CCCE2AF4F42E05FAE66C959407BC
-:104960008591FDFE6FAE4FEF033B8DCE77CBB5ED5E
-:10497000456057EDDB317BBF0FE0BA86A03E3F3785
-:10498000B1ABDFA1C0F8AA00787ED241343B0BD78F
-:10499000F9A26B34BAD60B974EC276DCCE62F9EF31
-:1049A0000FAFAB5F47BBA538CAF2CF347FB7A64580
-:1049B000D495ABDFAE0917A7CA5F6CBEB106D6DDD2
-:1049C00019AEE89B7329E96650BDD742E198212AC8
-:1049D000F618F0CBE680A5BDB8FB79574382E277A5
-:1049E000F78E2913AFB55847281591CE5A7EE62188
-:1049F000A39C3D09F873021E99DDDA4DD10BF583B6
-:104A000051A505F039F31009C17E349DBE4B47C74F
-:104A1000E036A3BE9B211AE775B6E6F31191D97E65
-:104A20009BF74FD7F5976D6C3E7690A3992293FF35
-:104A30004F3B9F24E089D911BFB1EAFFEF35DF1961
-:104A40003E3A4EE0B31F27681A275DBF667DA5D6A4
-:104A50001241047F7C1109013C79F36204FCF87671
-:104A6000DFE1A04AED3D511EC0D411180CAA54EF4D
-:104A70004A41A510526771A810BED3FD11978F8EC1
-:104A800026D4ABC3F9CE26D0A3EB218FF2B716CB39
-:104A9000370EE7D761FEEE094C3ECFB1DFD30F7A78
-:104AA000B80C940D856B5DFF1B0DE0072838E00BFB
-:104AB00081A951E00B11D0C35A794FFF7B4117D820
-:104AC00071077CC44DF93D5F0E137DFBF5FD7F0D35
-:104AD000CAB4DCC7CB7D8188A17C63FFD4C22045EA
-:104AE0009187977B82512CBFBB7F4EA10276CC0170
-:104AF0009F0CDFBDC5311CF7D25FACB4A13F76B1CE
-:104B00002DE1D4E9ABF8E219A8DF9708D1A9764ADC
-:104B10008F9A5F74BBC07E881FA81807DFD1E6415B
-:104B20007F92F87F613F0AD9D36807F9E4A3E7735E
-:104B30007AD953F4E886F30AF403B3738A383FA7AB
-:104B4000506B9349185FCD6174A21C9DF23F63FBCB
-:104B500043297F35E60F1BF27E3911867DB418A0FC
-:104B6000FA81B6F786D530D05D2A6679BB2F9404DA
-:104B7000FDB1F91B2404608B149F507FFD1C9A57D4
-:104B800080FE116CDF398BE5A56054857CBC92E515
-:104B90009DC5B124E4D74E65F9CD1A9DC9A3463E03
-:104BA000207F42BA770EE7DDCD501ED7F886789B7E
-:104BB000A17CED454CCF168935FB00FF9BFB3B0BE1
-:104BC00097D3FE73811F68FFB94B42482F8D2EF794
-:104BD00029365C6F35BADCA7CCC07382CA5C8A09FF
-:104BE0009C9082F4A83CE7669B0CE71DE7DB123B38
-:104BF00005389FEA760FD07A9BCB6760798968E7A2
-:104C0000FE01E60FDFC9FD0165D4BA00BB63275F73
-:104C1000AFF7DD332517DAEDDBFABF90DE17DBF3F4
-:104C2000B0DDDA72767EF32C5DA7C14FF74CA30B93
-:104C3000D31FD1FEA2545F3FD1E8C2F4078D32A644
-:104C40008F523D0E69372D4F82DF81962769BE6FE7
-:104C5000C05607F27F4F2335CD68FBBB1B5D1F8B12
-:104C600093C15F21637E7D6310F3DFB6D5AFB133AF
-:104C70007F8AB782CEEBE99727A17F2FF4862D920A
-:104C80008079CBA4607155EABB869F6FDB6AEF0425
-:104C90007EFDE18088E31071A0EB7CEB7ACD506F54
-:104CA000FA1B22EB2F30B0F1B28065BD0EA8F7F8E9
-:104CB00011063771253D69FAEB06782BDEE6F00523
-:104CC00093F969FADB00F51E3BC2E1F325BACEB3D6
-:104CD000AE772F8C7BDEDB1CBEE2C4C645D6E37EFE
-:104CE0001FFA73E5337BE573E0CFA8C2756087A038
-:104CF00093E74D4B55C146E9EC2A188841BD6955EB
-:104D000031A18C8E1FB83A26D8A6313BC346F36E2C
-:104D1000E887A6E797D3725A6F1394FB75E5D09E88
-:104D2000A6532B5879E09BC6F261BDDD40343B357C
-:104D300009CED6E0578CF92936A61F9FB3FFB606D9
-:104D4000F87D8AC4CAFF1BF260772D36D5F7B0FC18
-:104D50006FB5FA39ACBD4D6479573E9B77CE565747
-:104D600002ECAE0DF3DB83CB7CA9F9E62D889743EB
-:104D70005E9BDF86055B83CB74F3C9FBC2B6F2652D
-:104D800015E9D715B7622361DDBA3BA5B782840B5D
-:104D9000FEF9F5CB5775EB06AC2BE3F8BA30AE9ABB
-:104DA000AD2B146F2AB35719DED65F64C45BEEC512
-:104DB00046BCADBFD888B7DC4B32E3ED977CFC74C2
-:104DC000F8A3E387F5E36F5C681C3F7F9171FC8D6E
-:104DD0008B8CE3E75FF6A9C74FEAF9A6B7C638BEE2
-:104DE0005C6B1CBFB7D638BE7CE9A71B5FA34F67BF
-:104DF000FF16E3BA5E15217AFAC5FB3B8386753D43
-:104E0000C4D675AD7C6DFF4F83B0BEBB617D07FF1F
-:104E10004C395BDF2BDFFD28087EFBF5171D0CC22C
-:104E20003E633DAD7BB822B56EECBBE856DB63B4A8
-:104E3000DFEF4C65EB4CFF45CFB840FFAF2D67EB84
-:104E40004C9C9FE77635268FAF74A4E6E58FBB7147
-:104E5000BFA7E587ED25F2BB1AE0C378B98DDB4B20
-:104E600085CD616A8BBAA68A867C67052BBFBDB5E6
-:104E7000B059055F8AA816C23AE42D277FAEB0D894
-:104E80006F69E36BF0A41F9FED8B53E34F348D3FAD
-:104E9000D130BE96774F63E5AA38A916E0D9CCF792
-:104EA000CDB788BF43FD72F6E09BD61C9EA4878FCA
-:104EB000E553F0B1BC06DF5DE2F45A75D2DF13BEF4
-:104EC0000B4CF8BBC084BF0B0CF85B23569F11FE44
-:104ED000CCF5BA4DFC790309DF268E013922686FC3
-:104EE000C644999F07B1FEAA442E5F303EC4ED2C04
-:104EF0009512934B59793D5DD796887C1FC6EBD7A9
-:104F000099F29AFD0ACBD169F4C358DBAF12617AEA
-:104F10009BDA1DA19DA8D743284FA97D07F363887D
-:104F200062241CB1D007F78AEC7C5890430D00A78F
-:104F3000E893D08F9AAE7EAF2870FB5A359CEFE491
-:104F400092C1A41DE008128C4F2227BFAC5C3E6DBD
-:104F5000241C921889C2387659220FD2715AF3AEA6
-:104F600050F4714C8F6AF004C3088F2433782431D5
-:104F700014B6F2033F2832BF85D60F8590B71F24A1
-:104F800060276AF0B5B9230D4BC19ECF93104FAD8A
-:104F90007EE379F96FF8BC5EE4696B9A733F02D1E6
-:104FA0001810BF34B61AEDD096EA5A17F0A542424F
-:104FB0002EF0D7B7FAACE389B4D46C77C6A95D0AF2
-:104FC000F9766A9742DAEA7BB20ED69DE3C0C7163D
-:104FD000E7DAC37A2E642349DDFED35BEE214983F1
-:104FE000FF348170BA957CC37767B0C8D0CE315694
-:104FF000447BBED5674B40A8D168F0B773F8B57A4B
-:105000001D62CC2567B15F76068DF09E3DFCB1F642
-:105010005E479F6C05D76785378DAFCCFD4B05523A
-:105020000CED623112D4F3BFDDC1F8542A70C5987B
-:10503000BD9EAEDCC3DAFB6839D8C5BE8802E72F57
-:1050400054E4314ECC0572A0C3CF78DEAED5C1CFCB
-:10505000A3490CFDB582126B003E72154B783E6081
-:105060006EA7A51EDEBEE393EFBC8EF231C685F2BD
-:105070002128547E2CC6795C0C8F75D074B3181E11
-:1050800007A9E3943D6A2527631C4C8E5D9188E255
-:1050900062A12696F0CFE4FDF66AF0AB313CF7CA88
-:1050A00016FEB22CE19F99827FBA6316C2FF39487F
-:1050B000D3C13F8DC3534042FDB06F0706857E09C3
-:1050C000B95CD19FCBF5F07E0B387C84DC8474D343
-:1050D000CA3B391EB29DCFDC2CE7D3939A4F1D9F5C
-:1050E000CFC24CF3F9029F4F8F83AD57AEBA8812EF
-:1050F000A47C959F862ECB79FF5B87E972D319F14B
-:10510000D557B39CC7F2D43C9672BE5A96691E51CD
-:105110000E4FAF9DCC3902F13313F97A43EA0D7487
-:10512000D9AEF19593AD1B84DC6CA0CB3DBC9F6CDC
-:10513000E7B33ACBF96C4FCDE77B9C2E77649A8F1F
-:10514000AE7E13AFDFCCE50AED96ED8EBDCD607F70
-:105150003C2E46DA1DB352E3D17A1DFA7AE3DBBA6C
-:10516000B47A6BE1BBB078B85E371F9FDB450FE1C7
-:105170007EAC0D6C0C6ADF7CB1EDC55AB0C769BB63
-:105180008DD87F84AD9BB4DDDDFAFE67B6DDDBCC68
-:10519000EBDD07F59A2E3DA5F5BF59DFFF764752A7
-:1051A00083631BC25137DCDFFDFA7ACB1D7DCDEC6A
-:1051B0009CB0583EEAD5D935C1ECCE7D1C81687CC7
-:1051C00000FC95C4DF0B7647BB18DB3E00FC408D2E
-:1051D000BC9DF4FB6DCEB020D0F5530EC71E817A76
-:1051E000F9AA53B603DD6A633F82BC6A2311888B38
-:1051F000BCCF7BD776C8AF115DB23304F696824739
-:10520000433D0111E379DA84A80AEBE20931FAACF3
-:1052100003ED1EDA251DE7B60225D12580FF96088D
-:10522000CCEE60706DF05E1D07389C142E880F6EFA
-:1052300033C145C7C37D79E718166F4344522E42E8
-:105240007F764F08FAEB1F732BC21B6F72CAD03EDA
-:105250003EF95684979645303ECF1143783B1C2E3D
-:1052600019E2F1EEF3AEDA0CF1766BD45CAC8F7030
-:10527000C0FC279621FC6E124B2E2D05F5D51BB6D2
-:10528000013C8B258C4B8E0736E2FEB66B315DE41C
-:10529000E8B85DE51B5568777CB107E3EBDCBE5EE3
-:1052A00002F15605974904E280DC815EB433F317BE
-:1052B0007958BE98E038F99F67F1B20E322097D145
-:1052C000B420CEE28EBBCAEBD5A560C754B37854E8
-:1052D000A2865F86F8B63CC2FFECC5FDD0BF63BCBA
-:1052E0009DD84329FA16F40EB7CF8D5AC8CB70BD9E
-:1052F0004496F592D9D5CB8F8BD9D5EBCDB25E2222
-:10530000CB7A4956CF492ECFB58AF718E6FB7912EA
-:10531000DA1F5A7C5B0EB5FC87ED935266B7EBED56
-:1053200015079152F60AF0997D494638D6BCD51436
-:1053300038A0B36F02923F80FB8D0BC8052897A35E
-:10534000B43FD1A8060E38469F2F485852E7271F72
-:10535000ADFE5AB0F79CE9CBBDD3AF08A23E9BF699
-:10536000359E2E616925FD5E016903CF7F8DE7972C
-:1053700034842DC6AB91981E2E27918C747073F8CF
-:105380008FC2993F6D522ED2FA16E7E35AEAABB0BC
-:1053900099EC46A3BE73896A2D9E7394B3F8412796
-:1053A0000823C84D88A07E7190A45C86E78BE19CA1
-:1053B000A56353F2E3088E45F9F93F85762254231D
-:1053C0007D428047339F98F9C267E28B4FCB2757C6
-:1053D0009D253EF1C6ED59C98FB737CB7A892CEBA5
-:1053E00025B3ABE78B0BD9D5EBCDB25E22CB7A4997
-:1053F000566FEDBF48DCDF7A590BF861BC5F74195A
-:10540000F26BBFE831967FC967C8772F34B6F72DA6
-:1054100032B6EF5E646CEFBB8CB57FAAFDAB9782B2
-:105420009F275B39F9DDDF2827E5AECCF5F3178F31
-:1054300022572E15F7936E5121C900AC5F749D124F
-:10544000300D272CECBBE7B9FCBFE0607E9CB8A810
-:10545000E2BEF69F7D9E3F9098DF489BEF68F06A22
-:10546000FAF7F7766E6F99EDAF61BFCEC9D3A76734
-:10547000831E21102C4D64854E8DEA1B0FF1842074
-:1054800054C4539EC0F36973FF5D705EC7FC2EC1A8
-:105490007A1D1CCF3B995FE5E7A5ED413CAF9DBA76
-:1054A0002B08FBF4AE0982A59FE594C4CE05CBA2E0
-:1054B0005EB4333A1417EAC3AE09EC1E5397238146
-:1054C000FEE3AE52637B17B71F4E496CBCAE3B6325
-:1054D00004ECFFB6A9BB1A605C67F25F8942E1FE8B
-:1054E000EE8418C68FB63BD93EC0195609AC0B2EB8
-:1054F00045C5F377333C712D6E882482F5BA79D790
-:105500003B19DFFC9CCE279B79BD2B49585F0E339E
-:10551000FCA5C3D7DE33C4D7B54ED6AF127423BEB5
-:105520008E57135C4F8090F6D9048FC6D9DF20D1F7
-:10553000F387793D060A337E3B8D7945BC2A233FAC
-:1055400099FD30CAB6AF65E4E70EBE9E3BC9D7B140
-:105550005FA7120B83BEF35624C832C42F0993B140
-:105560009CEF14F8BF56D546E5977241682B6575D8
-:10557000EF98CE50D2227E6998FE1592515ECE7081
-:105580003D9BE9A4EB9937B59E1D27DDE884EDB678
-:1055900091EBACF0AEAD674AE0AA8CF3EE6A647EA4
-:1055A0002B42EE207D309F57EC481F5B395137501E
-:1055B0007A392B443CE7704E4A10A0B3AB9C24DDF3
-:1055C00039E9E7F51AE73B259879DC1E8EEF6E4E38
-:1055D000A774F5BAF9B9E76B1D0FB5C0FE2D6F1EA4
-:1055E000938361BE171306FE1C92985FA3CBAD3464
-:1055F000613C4B29F38F8C983787D32C57F134F7C4
-:105600006934B9FDABA4303DE44AA0DF41932F4596
-:10561000F957D4735D139A5DC0D471E541F4131F3B
-:105620002F9708DC8331EB032DD5ECC84B48B70B23
-:10563000EE2BAD7DC51EEAB280D70D44D0F9F5CC76
-:10564000FA7A347D72DFA7D4273FD1E47EA43E41AD
-:10565000FA5CDBD1BA1FE8D3E566FEEBFC3A952C89
-:10566000D5CDB79B8FBFC4C9D7856206479743AED8
-:10567000D1D3298F7EAFD1EBCD34F44947F72B211D
-:105680001870560A0EF3FC763959BD7C18BF627447
-:105690003C8CA403C3438BD39A0F3EABF9343BB38A
-:1056A000E3E36DBCDE368E576D5EA3C989D67F1FDE
-:1056B000C757DE3C93DE175503FDED1ADEEA4CF5C5
-:1056C0005CC67A1A7E4427B357B47562B4FEDF967F
-:1056D000187F98FB4F2787BF19964315FDB2DA381C
-:1056E0004EF21CFA0F8E53BDDC5549F7A3BE418C18
-:1056F0002FA07B7D8C6F82F82FBDDE35EB2F4DFF09
-:10570000A7D347E67DCB68F5A58094D14ED2EC9A1D
-:105710007C7E6FD2C5E381370AD6E73C435C8EA816
-:1057200062CF2AAE0FC244001F2442F8FDBF707F33
-:1057300013CD8F0D494A17F83FC4F9FD3B687ECC65
-:10574000CF9CA42B042E9779FDFD94DFD6865D11A6
-:10575000281FE72A1DBEA7D53B1BFC5ACCEE22F61C
-:105760003B5E877BC063AF1409E0D549E6609CF6D9
-:10577000F13594769523E1192B12323E9FA6DC3F3A
-:1057800080E787B0A5FC8A119F64B12E0F7E6097D9
-:1057900071DDCB76DE6678D2B51B159ED43EF4085B
-:1057A0008CEF2499D7B5339DDFB05D9BE5BCB4FB8E
-:1057B00068DAF7D2213B51E07EFB9080E939435E05
-:1057C0004C4B86DC984E182A200A255AF1501EA60A
-:1057D000E387C6E3F7A2A1424C0B8726621A1C2A74
-:1057E000C5346FE87C4CE5A1A9986EE072983B3413
-:1057F00013F3DAFDB79CA14ACCFB873E8FA96F68F3
-:105800000E2BE7E7A91BEE8C12F0574BB00E51F9A7
-:10581000689BBF1CD725F3BC36B8D83ADCCEEF095D
-:10582000B79BF4761F2F7FCCC5E47E03970B22C66F
-:1058300088DE6F7E3FAFB7A12C8AF677BBB61E1607
-:105840002E37AC87E6FAED69EE273FA395737848CB
-:1058500079FD28F461E7AFCE4014EF0D101245BD7D
-:1058600044C4A841EFB66BF067798F70C3FC6790B2
-:105870008FDD549021B4D0FD856D0D0F83DE5970FE
-:10588000EB7507A8DC7DE88CDEE68271BFB002997B
-:10589000EEFBAB6E0F82DF77C3FC7BF17E1398DFEC
-:1058A00010D7DCB1E08ED8C3C87551B4B369BBBBA7
-:1058B0005CBA73D0CEE5B737ECA2FD29AD36A2E8CD
-:1058C000F8B5E40E0F51F4FAEB644121B42FBE2574
-:1058D000DFF0BD686591A19D764F22784D99A19E1C
-:1058E0003CEF3C43BD9CB9338CEDF839B9AFEA428B
-:1058F000433BA74FC32B3B47A4F437AC1F1D823556
-:105900001D632EA62FD3F1CD152EB6AEA5FACF4C22
-:10591000B774FD677B2F24C51F69E781E710B1F8D5
-:10592000E279604F39E528DE5339F3FA67771ED9FB
-:10593000D633EBAB1CD05705A04F044C7DA0AF0A6B
-:10594000408FB831D5EA9DE97DDB75A06F7C3A7D4B
-:10595000338BCABD053FF8DC99F5CDF9BC7CB29B11
-:10596000E99B759CAFCC7C13E4F5D681BEA9185D8C
-:10597000DF04DD99F54D251FEF1FAD6F3A67DC1B86
-:10598000FD16CDB92FD8D6F0104D3B2A6FC53CD5AA
-:1059900017A29B9677CCBE23F6904E8F9093FFC9AB
-:1059A000F892F3436EB5517F68FDFB43263DA2C9D3
-:1059B000C3DF28D7A738BFA6A3CF914F29D7A7CE3B
-:1059C000925C9F7275CD83F3C56CE57A64FDB33B41
-:1059D0008F6CEBA9B5247909EC4BA678122DE0BFAA
-:1059E000B4F586D8BDBC28C6ED743EEFE07E1EE659
-:1059F000FF9BE10A2F02FE99E18A2C76D3F63797B6
-:105A00002AE3609DA6F92FC2775D3E62CAD79BEA62
-:105A10007FC594BFC254BF415F1E57947170BE18BA
-:105A20003FE4C0F3C1B862ABB3E2A7856EC62F876F
-:105A30005C9128F4776EE2BC7140179A5F86FDB9DD
-:105A4000597F347F8D29BF1CC74FE5AF3395AF30E9
-:105A500095AF34E557E9EB779E9A781FBEBFF14BBF
-:105A600007D969E14F7A95EB898EC9B7479B995C55
-:105A7000DE06ED3BA6DC115B46902F08C06DF79962
-:105A8000F67F94CFF4FC7288F7F3F309B7E2BEA96E
-:105A900083EE9F308E11FC7816F8F9B59BBFC3A535
-:105AA0005C8FF71FE28537A39FA3A3B819E3148E79
-:105AB0002B129ECFC64BADDB7736323F5347B1F545
-:105AC00039C2AF210857678F9049CCFF076270DA5F
-:105AD00006EF0931FDDE56DA8EFA554A5ECFFC1B21
-:105AE0008551F46F3CC8E927F962E8577016C72C56
-:105AF000F7F51DC3F830FA35F769F8E0FB481D3EAD
-:105B0000500E9B3B3F3C00EB6BDC6D2D673F7633CB
-:105B1000397304B31B7FE4FCD9FAB01D2EB558ECE1
-:105B20006BE30E1627AF4E607E00918EA3F72B9885
-:105B3000C71B9EA7699FFD00C753DCCDE2ECB5FEF5
-:105B4000CCF03CC2EB3DE2667E056D5EA2CCC61990
-:105B5000ADFFE7E0B216F80164B31FC2A8E7EEE0BC
-:105B6000F51D0163BD74F8B973183F2C1E4BE3DFBC
-:105B7000D1F85D1BE710C085FB59EB7DB872B21AF6
-:105B8000E3378E137F6F17EC9B45F97588E3B88D6B
-:105B90006E93C0CFDF22AAE85F501522EFC4F34F07
-:105BA00076FE709BFDBC10E83B178FAB20105711A1
-:105BB000D0C525829FF35C8CB37804CAD7A84E1950
-:105BC000DE3719724F6471AB27D7603C4527DDA9DA
-:105BD000C3B827DC250978CFCA9EDB8DF6BCDD5E15
-:105BE00019B38A33153D8C6F2F39B91EF56CBBC2C2
-:105BF000EEDDB48B51577E05B8AA5594D74E257368
-:105C0000FCA2390ED2219BE30F8DF89AE661F48D48
-:105C1000F3F537EE0E35E8E393821E37960FB98D14
-:105C2000F075007C3E802B86F1A4F1629B0DF0762E
-:105C3000B6E0D3C6954A6D11C04B8044315EC515A0
-:105C400014715C9B97E137DDB844113FD0BF1F73DF
-:105C5000B6F039BCFE46193F89C483FCA4CC73D589
-:105C6000EE86FCF3CC2F6F1EE788277A8147E71773
-:105C700016E528FAB7B4FE168E6171DE6231C1FBFB
-:105C80008A1289D495D2F9B714B3771645DF2871F3
-:105C900011C5667F45BA7339763E824554446BFE22
-:105CA000C0C6F5F078013F19C060D15C50E91321FE
-:105CB0005E4011D83B102181C595CFC538F280FBDD
-:105CC000B3EE7709F62B843790D3DE33E8571C40C8
-:105CD0003FD767DEEF28F0BAC936EC1742534F17AB
-:105CE000A4FA05FD8B4EA593A74FC3B9999D687F74
-:105CF000CC0E176DEC5E1529CAC1B8C3B6C0CD2E47
-:105D00003D5D9B3C6586F55592DB6F1272E0DEE7E8
-:105D1000CAF04006BE6C0339023F62F135E181F200
-:105D2000F4F53438453A7D2B7F68BB144D3481BD82
-:105D300058E263F1AA620CCF473A84FC195D553AE8
-:105D4000FE2D96920097BF2AAC423C6347812D04FA
-:105D5000715822E93E8CEF3BD9178732C9AB582CDA
-:105D6000BEAF9FCF568F310EA465147E6FE3FA3A13
-:105D70005DB9430A45ADF4F0131EBE8E79ACCB3F3E
-:105D8000F6D63EE6B15877F6723DD5914755E9E72C
-:105D900018FB001F88C5075F073CB48D5990593F19
-:105DA000C946FDF45FDEF04F609C0C703C67050750
-:105DB00081C714B2B0FBE579188C988A070A30BE07
-:105DC000863820612C9CD2B2BF75550F26C1EE7665
-:105DD0002CF585817EF6F06E02EBA81617640F7B1A
-:105DE000DEB1213DE7B2F8A072E6670DD3FF308E39
-:105DF0006C6EE6B831BB29FF2B339D1B9FC5F72284
-:105E000034F8B53875F3BC9EF2D6BEED9965858F32
-:105E1000ECF6419B28BF10CA2F1BE9FA4E91427A3B
-:105E20001B65CCF7340631DFDDA860DADA588EE97D
-:105E30005A683A07E23F62F152D88F041F0E5E4B58
-:105E4000AB6C029A605CCB8EF9B08FEC1ACE135516
-:105E5000807325B81F4FEDD0BF7A36CEE7E76C3C94
-:105E60006EB67D3E9EA30DE7B7B4815DD8C5E368ED
-:105E7000E5B50FCE87FDE3A609DA3E39ECFAAACEE6
-:105E8000FE9AEC75B073A652AD7D4B1BF4E7167904
-:105E90009EEC996FCC9330C0E376B1FC42EFD3080F
-:105EA0000FAA003ADEE5DE6730BF6932F73B54D413
-:105EB0008F8247E6C768F728CC0EAAC8473F8514EB
-:105EC0000AC1F502B2298FC39D653FB0FFC1F5EE4F
-:105ED00015EBF5322537A3AC6B1C8ED1E84FD18181
-:105EE000F605E86115C67DD58EF270B6C7DDE438DB
-:105EF00033BC48D5832A5CFDDAE7895EE4A5EDFD75
-:105F0000E1BE6429CDE72C4EAA28BE598E5BE8E598
-:105F1000F7C9E87C41FE353C6B76C74D40C731A9D7
-:105F2000FE1C8130BE23E1E6EF09670BEF728F6C38
-:105F3000E8873C5E5B98E9DC654CC4064146C3FAE1
-:105F4000A2A0CEC38335583E2F9C6FC8E7561719C1
-:105F5000EAFB43658672877C9EA1FC6FA5D3D73D83
-:105F6000B281AF23A679CD379567DBAF7B8D5D819D
-:105F7000F7204B45CD1EDD88F7928F038E413FF60B
-:105F800056E23D5D3249BB8740C210AFE256C2C8FF
-:105F90009F1E12C2755A2A36DAA962C068A7061B6C
-:105FA000D4A4D62FC425B8D74838EEF03AE563F12B
-:105FB00020DA3919EED72782AAFBDEA152D6CE32DB
-:105FC0009E414B457E5E8677EF4B473F4F358F13A3
-:105FD000FC4AE63835737DE21395A33AF94BDF4E60
-:105FE000244775EF6AEC00DACF4AE13FBC7B29FA1F
-:105FF0003D9C84DAD114CF2DC12B4894CEB31DAA79
-:1060000050FAC521A57CDE1E9C21631CBEC2E86A35
-:10601000733139F98E5731C473D87D4C4EB47AA39D
-:10602000D1FF363B8959AD67AF7AD93EF9C45DB12E
-:106030003FC1FE527D99E03BAE7D8D43F8CE655564
-:1060400072A11DFC26AF7BC7E27CAA0E84ED97EA05
-:10605000FAA922ECBD6FFA67D7FB5335FF3039E957
-:10606000C2B8E03D491617BC27F9DFFB4F43FE904D
-:106070000DDF15DD7338B37DD5C7ED2BAD5EDF21A8
-:10608000B65FED1389373F939DC3EFBF55264D7122
-:106090008722B103FD4FDCA9D8C1DEE96B7409B0DA
-:1060A000EECFE0F3AC4A86EDB09E8E36AF7D26FA99
-:1060B0006AF384FB8730CF561FBB0FD82AD3F9224F
-:1060C0005FB3F7B2D3C13BBCEF97ADF121F9D9BBB8
-:1060D0001792232A5BCD7BB47B8A1A7CED009F004C
-:1060E0002983AB3DC0E8D01ECC4C87160E9F56AF1F
-:1060F00035C0E8D04AED836CE0117D4678A88D2745
-:10610000805DE823893A7CD34C252FC33E08558512
-:106110000278D897BC1FE0857B1760CFE75509D779
-:10612000C2BD8F28B30FFD55C9E4DE009A2711B810
-:10613000975130D09F7C9B961F6CF0E2634FF2B575
-:106140004792D08F280FA2FC74C160681F4D6C0766
-:106150007BA70DFE4955FAB8EEE002B03F44C2F409
-:10616000029538451CCBED130B79D79DEF0BA79DFE
-:10617000A976E9F066B63B9DA43EB3BEE2E7FD2AF0
-:10618000FD0FF48D6CBA1F61B673CD71F017813EAF
-:106190001F93C53D8C4F394E2E79D005EF21D8CBBA
-:1061A0006D32BCC34C557A1EDCFFF1864502718D01
-:1061B000B9BE017C3A6B34BC53FD57C7E246FB883D
-:1061C000FE1E69BD8FF98102F55582C0EE1128F0DF
-:1061D000EE66A0FE50C88A4F35FE1CCEFB9E44FDE5
-:1061E000D8461271883B51EB6CB8AE759597E5E9CE
-:1061F000F74737F904BE0FD5E84F1471768AFE745D
-:106200007E61F7F4BF1FFDF3171BF17EA674B9D3AF
-:10621000C7F4D268F4FFB4E368741B291F4D9C6E69
-:106220009B50FF754ECA4EAFA4E8F620CAABB79C90
-:10623000841316ED9A39BDCCF7F65D2446E0F728B5
-:10624000ECAF307BDA3E6E76C30E92812E23E2AC49
-:10625000583F761FF3A7AD133C21186A5D1AFFF271
-:1062600024BFC0F5FF008BE79B733008E7C7DDB3A1
-:106270008E06E19CA3E713EB73C8857E7E2E127E0B
-:1062800003F7013DB3985F10FE40EFDCC6FE49CA3C
-:10629000D4F736C33B66EBDEF21AECA1F6C6CCFEB1
-:1062A00006A9E8BA28D81927DE1114586F84A23538
-:1062B000E7025CFD7396E3BB23ED55FBF01CA63BA8
-:1062C00094992E5A9C6FBB29DE36DDB9E1092EAFB9
-:1062D00065EA0D685FF614BE8CE3ACABCA3C0EBC3D
-:1062E0009795299ED7652351F4179BCE75DFE4E37C
-:1062F000BDE9E3E7138EC8972696C2EF72A8E81FA0
-:106300001B5B1EE9B751BCD5FBA3AFF9285D7BE64B
-:10631000DC5A0870C03B317ABA07A07F0BF8C6FA86
-:106320006D06BBE94459ECBFEEAC82DFA79882EF63
-:10633000D66BF5BAD3C4B19FA7D15971E3BEA71DDF
-:10634000E2FE297CDD85D9E15FA3F325E405D7448E
-:10635000680F71BE19F8D9BCDE8F8677331E7A1CA0
-:10636000031807D52358CF67A19FC95DCF9D4976F4
-:10637000AE36E7289EABF9926F60FCC477671DC606
-:1063800073B5123FA387DF378071A539D5EC3DC0C7
-:106390007472F400A79F281BEB1171C070EEB3DD7F
-:1063A000C7CFCB0299FBD3E024AE0176DE33522E69
-:1063B00071FDD9D9FDF0417C378524F15CA1FD55F3
-:1063C0003BDC4D1DC6C308B98AB3DF85E9818DC7A3
-:1063D0008530CE5DEDE027E9D1CED92AD9BE49ACD2
-:1063E0004AE2399BCBAF18E3AF43DABB88D9CDD3B0
-:1063F000076B11F30F8BB0AE823F1EE06BADBC029A
-:10640000FD69E9E8FA1D6F74A67F8CDEAFCFF65DFB
-:10641000FF6C7C78C2A718EC43333F3AC937CE688B
-:106420005F97CEBF7C82CB67002AEAF649DFF44B48
-:10643000D6F87DFBCAD1F0FB4D6BFC5EE501784FD1
-:10644000DC63FDFB445ABAC5A4EFB668F128F0231B
-:106450002185D85FE9E516F3D6D6D5137EEDFD9EEE
-:10646000A807D68D3275AE07C6DFD5BDCC03E3EEE7
-:10647000DA9C999EDAF8DBF9F96282DF77D1CA13E8
-:106480009C2F7798F4FC2B5CAEEFE7F2B5CB15F1BF
-:10649000E0EF55ECBF6AD1548ABF32CA17E05254BC
-:1064A0003A497EA6F14B55D3BEE40CEFB5F4F84D56
-:1064B000F1BD59DED3FCB478D901FC7321E0E1DFF2
-:1064C00051EEEDC95C94A7B2958C6FCAAE194CC25F
-:1064D000BE76E2265B42C1389628E2A570A5A86088
-:1064E0004C1BBFF77A2E5FDF89FD0E5B0994C3BD9D
-:1064F0007119DC2EF2D7301E669BF1F73F76B9C2D8
-:10650000CD12D8BF718C742465DDC6DFCB184F74F3
-:10651000BF5741C72D7CEB3DFCFD9442D3EF827CFD
-:106520005ABCEFFD07E13D21128F5E1F2B028958F7
-:10653000E9FDFFE47CA9341D60EF18C47CE45DDD57
-:106540003907A55F3ED805DBD58D35804F354E42E6
-:10655000932DF4D86FFD5EED777C0EC03B0B8E6201
-:1065600076FFAC6DE915037BA9CADA7E472DB13AF7
-:106570005FA17AE1B77E5C9F985E48A8F52C3D69E3
-:10658000473E99DC4D12F03B28F336C5FA1D20EA50
-:106590002BD93BD48571559068BE8C9AAFB47B32B1
-:1065A000F13AC2EA2F218930F211792D3836F57B84
-:1065B00027250337F5C3BEF820DD17C3EFA868BF52
-:1065C00057A2F1CBF898913F26C78DF971267E31FD
-:1065D000B72F53C822187F52B78DC0BE6E4C83AE02
-:1065E0003EF44706DF7B848E3FF9003CCC48D3DE87
-:1065F000CCFD8B24EAC8A1F87CFA2EDF2FCBE9046E
-:106600001FEAAE2D00BCEC721176EF22E2C27717C2
-:1066100048C4FA3C6904DF6A767F9AFA297DC9EAA0
-:1066200069EB5EC75B027BE7A2447EA714FC9CAFCC
-:10663000B1DFAD4BBD5B7121BE5B112431663F9272
-:1066400008A6AD9C3FE54B8B4BC11F1A7FDB2BC3CC
-:10665000FD2CB9C0E84F13F3EBF03DB061BB3B9F9D
-:10666000DADDB43C9E67D4A33539CC6E0DE5B07B42
-:10667000A1B297F5435C6AA15EEF6FCA118CE53E4B
-:10668000B5F0CBBAF25ADE3ECEDF2DBF24675107FC
-:10669000D833F2785ADF823FE7F171B57212081DE4
-:1066A00086F73F367FA37E967E3DDF94C3CE77E4A8
-:1066B00073F8B8C5D670C54BD9B877F37137E518FC
-:1066C000DF8D23324BB5EFF7FA6F158E507C9F703C
-:1066D000905A88576919634BC0BB69B78DD5E2C220
-:1066E00032EB098D0EC3F896593C52D175F20CBBB2
-:1066F000851C6BE9D63AE6A7327FBF9ACFA3F5BADD
-:10670000DADE4914AEF0012677CE00B13C07A2F2E2
-:106710007D75CE2C8B75BFB50EF77127F232AFFBAE
-:10672000E67DAEC8FD8BE67A4D9C4ECA2B417C8A35
-:10673000BB35C8FC895AFF270A995FD1DCAED3D498
-:10674000BF9BD48721CE18CE57E15C559A4412499D
-:10675000DA8F27D02B972A101F705885FD91422879
-:106760001EC1CF162268D7B506D97E540CF6D6D8EE
-:10677000209E84D4C97A3BAC88FFAEA29677F8A25B
-:106780004D39680F8505C48BC8CEF34F38120B0105
-:106790009F2DA53662F54E7F770EB373B72AF52F7E
-:1067A000965AD06F438E62B09F8B8698FD9DAE7EC9
-:1067B000AA1E836F981F832ADE3F200AE3C77A7FD1
-:1067C000F89E1CABF35B4DAF703FE4B26AAE7089CC
-:1067D00072E5AFE93CAE3FE4C0D8F44B4E6E3F08E3
-:1067E000FAD74EF56F17FE8E5CEF41F0435E03F76C
-:1067F0009F68FEFAB7A64925B4FCB5223B7F743EDC
-:106800009203E37E486CE82FF990BC9C335347BF5A
-:10681000A77224B6DEC41DA847357FDCB5BD0E8344
-:106820005EFDF666637E39A91F0B7E8AE59B1C24FC
-:1068300041F17BBD49EF3E94C3CE89BE4D62EDB0C0
-:106840007EB6F1F3BF1B7F324D02B9B97EA65C6AFA
-:10685000D7DDBB7A2E87D977EF533E527472B6C21A
-:106860009790601FF7EE9E99577C9E403F89F622D5
-:10687000F0A7E559C7017E2B6E8473B47998E1D6F1
-:10688000CEF3D2C121EE162CFD42CFE708067F7C65
-:106890008B8BBD87146E1189FB6288C3A3020B70BA
-:1068A000BFE5C7F7BBD5DA18C6D5A9CD4EB9258047
-:1068B0007176184FB786120CDE1F3ACAF94F8BABB0
-:1068C000A306C505B04FBBD13520815F79B518ABA4
-:1068D000839F4ED3CE659C8E68783C85DFF16C4DEE
-:1068E000723C31D48B6759EF90509655BD3A5B8618
-:1068F000FE8E713DF98BC71F9260FDF9F0B177BE36
-:10690000087278C373760257F38E3DEE2749DC3F59
-:10691000242490F3157BEC96EF48508C61FF37FCF4
-:10692000C88F7A71C593CEC462DA7EC533EF4E2725
-:10693000549E8E350F1E1C0FF87B4C60E785EAC015
-:1069400074589F5688E49B56EF8EB97399BC7FF0BC
-:10695000536F03D04FD8DD7F35F6DB77A543FF2E8D
-:106960003EC965EB0FADC7E2261F1512932DF487C4
-:10697000B61FFAE0511657B2E2594702428257EC6D
-:10698000DE2145291CAB777F84FC72E98F9EC8010C
-:106990003CAC7ED66EB0236EF8D127ED17523ADFAD
-:1069A0006027838B418EED27317F3CEC1AB4A35CCA
-:1069B000B3F89455A80268BDA77EBFE0D7B4FCFD2C
-:1069C000A09D4088EBFB877F273D07F9A88F5A6E73
-:1069D000D0BF91AF57EF7E57C2DF31B291C1E2CF46
-:1069E000C3F987D14E32D7276450023DB5BAAFF311
-:1069F000233BE5B7D57B3E7C13F86EB5493EDE8779
-:106A00007F148EB4CF2B734DF6F9EE82ACECA31B42
-:106A10009E38FE00F8233E78F28F0FC03DDA95A72E
-:106A20003E7EE07B1017F66F6E19E47BF563AFE6F0
-:106A3000109DFEBF2C97AD9BC71E7D64D7563AFFB5
-:106A4000636F38115BC7F6FEBE04FC3FC77EFCD700
-:106A5000B1E00FBA65EF7CFCDD9A5B9EBE745CA66C
-:106A60007511F835A1FF7D457E6EA43C2B80314920
-:106A7000C8CF786AA207E91D94605DFB8B4006BB16
-:106A8000F2E8F7BE4F24B0CF0E86C920E067FF9E24
-:106A9000770FDE4EF31F52FA382DE843E73FDE86CC
-:106AA000FA998A0D4D57EDF9F2972EAA82D4817684
-:106AB000F86A32887A73045D5FA174AD4AD1D55CFF
-:106AC0007E9C9C94E0DC60F5E3948ED3819E948E52
-:106AD000D347D2F143F8C79C91745C916B8C4B3ACD
-:106AE0004E566EDF0A857B0A2CCF79B57DD68D4F49
-:106AF0007F35A3FDA4E985D1F07C9DC0E09A9D1B64
-:106B0000BE3D17E4EBC91FECDA1A60745E4C1173DA
-:106B1000EC89E32584F2C91F1C8357031E06F73A4C
-:106B20006558DF57ECFD15CADBB1A75F92148C6F77
-:106B30002139C26C9A27C37F2F139A5F25B0CC8D61
-:106B40000FFFBF056FD2F637C2431E32D20FF307D5
-:106B5000A9FC213D1297D729A077136370DEAB12F1
-:106B60004C2E5625FABF02717D66BC3F956BD3F45F
-:106B7000FF305D216E6CD59E771600FFA5A3A7366A
-:106B80007F19E67F012D7FD828B769E594D3F7D820
-:106B90008E1312D807C9E724D946EDE1638E410967
-:106BA000D7C71FDBE59DA191744FE19FC71F9DE1F2
-:106BB0003EFC876639E7F8194DCE479FD799E16DBE
-:106BC0005BAEC2F65726FC7D70D25AFF3FCFF5C6AA
-:106BD0002A12AB2B9A3872FD1249441D5F9A82F734
-:106BE00003881FA3F07EF0981DF787ED7DFB518F82
-:106BF0009BF5C5AA3476F49BB9CC1E58F56CFF748E
-:106C0000D06B1FECFB29F2E5AAC7DF91C07F737040
-:106C1000F753D240454A0E607DD0FF0ECE073FECC1
-:106C20009F0EFA6B759A38C0DFF3F9ACFE99B1FF8D
-:106C3000D58F7F64E8FF06B54F423FD928E3BC2FCC
-:106C400086AF84F9BE7FD8012718E4FD3E7B9D9571
-:106C50009DF3025F1F353CB5FB67BF9E0BE75EF9F6
-:106C6000EC1DC6D6A6F0AFF0F77B5F72F0FD6DF8B5
-:106C700075B0675AF224BC8FD0EABF02FDF55A7F87
-:106C8000BD267CCA01B906F603F2BC48957E5FA515
-:106C9000C19F17B619E0BFC55F374EF1B1FD9942EC
-:106CA000F71FFF03B64D466E008000000000000095
-:106CB0001F8B080000000000000BD57C0B7C54D516
-:106CC000B5F73A73CE3CC24C2627AFC9D37892F0C1
-:106CD00094804312DEB40E0491226A505AA9F5AB97
-:106CE00003F28821C9A4F8E25ABFCB8444F4029F7E
-:106CF0008D95166A693B70A152217690A0B10DDC8A
-:106D0000012C06056F105F78B18D5A152B24631482
-:106D1000B4575BEF5A6B9FC3CC9C4C84DEFBFBBE2D
-:106D2000DFEF0BBF76BBCFD9679FB5D7FAAFD7DE02
-:106D3000EB0C28DEDCEA5400D93D6B366461AB5ABB
-:106D4000D41409E02BFABB2AD6028400C603585D8E
-:106D5000D5E07761AB5A407300FF7D45FFA7785BB4
-:106D60007BF0F97BE5D4D6B5348FB5F157D48726BF
-:106D700005B657F2B0914A25DDBFC2BBB61860A375
-:106D8000F39F1FA7FB2B8376D58E6D73EA3DBFA5BE
-:106D9000FE0609AA65EAD3F3383E6875A8DB55BC40
-:106DA0009E0E0BC265317AF25424321BA00CE9A06E
-:106DB00016FFFC3001DF2B488266A8031C0129590D
-:106DC000A120B5C6730FAAFE62757CAC2FBBBAC1F9
-:106DD0008FF35E2DBB2CB4FE07732D217B31B537AD
-:106DE000A641D9403E18ED03ABAA213262F0FBADBB
-:106DF000D98E855B80E90E5A681D9223B49D08F1F7
-:106E000081A67A8069030DFF873C74C4D18D037C11
-:106E1000B40E45BF6FC565D14D3B04B94D213960F6
-:106E2000EB84084029D2AD96B05C52A1479F240A5A
-:106E3000D563006E4CF57F93D6993BB451A2EB1EFF
-:106E4000A8E6B612FC12DDB738EBF2FC5FB33E5891
-:106E5000A09CE919A9CB175FB1C12AF8AF28A00CF3
-:106E600029273A36ABEF8FC679E87E268D0AB21C09
-:106E7000C6557D67740BC181888FE3F32333676444
-:106E8000126E8C71CD8EA29312F2DB27A7A8294532
-:106E9000D8579033C4A753A9CCA71F4DC399F1FE6F
-:106EA0008F4FA56E95511E8F48024F41C213E10AC4
-:106EB0001A1F277CB8113F6BE9B9198DBF65BC5803
-:106EC000A0BAB952E7A487F827FE106F8CA7958A5D
-:106ED00043B57B89B73E4DA1796C105A2B11BD7E0D
-:106EE000E6A7035AB91D02616E5DD0CDED5DC4E722
-:106EF0006C928397FB69D0D33A149F9BA356D7AA71
-:106F000078FDC7B333245A9F0B549DBF8579D41F96
-:106F100094BF3391BF8E187FEDC44FE7407E3A4057
-:106F2000653EA47BC1BB761CCF0B115CC723D3216C
-:106F30002433885450112F39FA3A33C127117D84F4
-:106F40001F5A5FF602B13EF3FB72A195C7E5439865
-:106F5000DB42E8E636C3A14A0AD3734A97EF3BF017
-:106F60009533468FD1DA09C138FFB9429CBF98B931
-:106F7000ED963CB47EE3AF9A71F887CA83BE2A1CB3
-:106F8000A7F85D3E3B2EE5FF54CE201082F572053A
-:106F900048AEAE9E8573C18DC3BD36888CA4D9839F
-:106FA0004C5FCA48D137EC8B1D051531E8C7E7ACFB
-:106FB000A73E3C45CF59216E1CD121DF9A467C7FEC
-:106FC000982E4C1EC8F795A79AB29E8B9B77AB9ACA
-:106FD0009A45EB848930F12B39F63C4CCA40233377
-:106FE000F0F9CF5605B39EB3C6F8D0E2F867C6A550
-:106FF0000F019CF24DEC138EB36238465CB29D0BD0
-:10700000AEB6ABCD598C43C6E94A64901DDBCF5276
-:107010008A42BC7E689C7823DA618BC3274978BD9D
-:107020004E7587883FF5AEF02CB61326BB317DBE7A
-:107030001AC9C7717D8DE025BE6EDC73C369E26B32
-:107040009F07347BBAC0856F02D909C38E8026A3FF
-:107050007CD748E31C12B6F5ED1FBFF47B1C9FD212
-:1070600029838CF7FB70CDDDB46EC5974E4274C298
-:10707000FA04FD6E7608FD31D669D6D77F749D2857
-:10708000799E9FE52093FD5DFF2FF47C3FA4B6D24F
-:10709000F84D0ABE9AE6EFB286B6231F561C911928
-:1070A0006F2BDAA410909C152D8DFAF7BE2883C0A3
-:1070B0001FF0FD7B7F55CA789461F48FA6E1F381C0
-:1070C000CD562F5A4C48F725FAABCCD943408BC349
-:1070D00001047D2FE722BF16EBFCDAE87C780BD1A8
-:1070E000B3A949F8A7ECEA8C84F19FA55C6F5B8A91
-:1070F000F36B7948D714C24DE7F035D85F5E20AB0B
-:10710000329A889C05F989FEB1D5FA0EE99F86FF6F
-:1071100008DF86FD5A4AF68BEC907C3FFBBF73205C
-:10712000FC9F02C2FF35A0BD8AE07CCB3689E78D8B
-:10713000F96A3A1F595380ED1DA1C4EBCB4189F583
-:10714000D9CFBA47921D580943BC766920FE2DE974
-:10715000887F02890B5C420E2E2FD997FE5764AFB1
-:107160005DB082F595F84E7644EE19B1711ACE17DE
-:10717000E8B24248237989FBFD9BE550B038A61F51
-:10718000FD5D7B981FCBF2901F884F7B6E22FF53D3
-:10719000B444FE3B47667CAD3C52BD267ECA739923
-:1071A000FFC86FA0F9D32695243EAFF37B24FE13CE
-:1071B000FCF6319D4B3B24784C223EAF3F5CA00D4A
-:1071C000E46B43C72336D2FF8BF1D5CCC7D1E9BAE4
-:1071D0001DD1F9780E3A0FE8A8AC7678D894F03A39
-:1071E00014B5753AE1B410F5967062D66B837FD60C
-:1071F0002CD567C37197D1385C5FBE232C94D10B1B
-:10720000CA09C2CB2261779B551FFB23C3DE3A2FED
-:10721000D8ED77E12B6CB3E6553E4438BA534A6D4E
-:10722000952B07EAEDBA31F7B0FD2A5C8DF698FD93
-:107230006A629C165EE5F02E467A9E5C05DEC5C34A
-:10724000009E5AA5726B8EDF0C7DDF8CF19B5DF882
-:10725000679E5741FCAE55C9FE7855A2F3611BB03D
-:107260009EF69541682BBE3F1CF9D4A391BD2E8F8D
-:107270005E5F8DF145600954539CF1AF1922AE7BDE
-:10728000466F6765D8B85D5B6D011FBEA7B7530E2B
-:1072900049485FAFEA3B7215D99D4EABC6F1951ACE
-:1072A0007DE97B7CBF425D8BFCCCB3B48EA3F7E25F
-:1072B000F8D9219CB7AFF35DF7ED717EB9B7E3D193
-:1072C000511407FDCC0235E124F1D0F2740BC73123
-:1072D000BD23DFF1E0B2A1DE11B501E2E9C19EC636
-:1072E0006A8AA7EE746A4C97AD7D7AA480F1338FD9
-:1072F000E3E3E7960E61BCED3D0321D2BB59F2AD4D
-:10730000D78EC1FEE45715AF9D95CA77FDC2093CE3
-:1073100084E5BEE1CB8A4DC4BF00F273355F6C3D9E
-:1073200041F27AF6CF0A90DE55363EFDAE1FD77990
-:107330003817D1300960822F5C11C151333BD3A77C
-:10734000937E074E01EBEBF86E2501B720D71D2A7F
-:1073500020BBF286080F27BE61BA0F4199E2FFC930
-:107360003D89D7A75E04EFFF62D80D377808EF8F0D
-:10737000ADEA8077C92FEAFE331F17988C9F06BEAF
-:10738000F738673C922EE2769970EB55928F7F2703
-:1073900043C4F91BBE9425C2655F14BCAB915F7DED
-:1073A0008BF379DD7D9F524086ED97F2EC709278F9
-:1073B000EBD7E93696DFCF6C02F73F5BEA0A35E19F
-:1073C0007A0E2EADBDBC07DF77FE9FFC97AB5F1733
-:1073D00007A369B14C6279A511DFEF9CD722B11EDA
-:1073E000426B1EF1CD3CDED013436F0C7DC95B3A7E
-:1073F000C41F4AF29EE1B43EA46FC6D291928D7032
-:10740000BB5F029263EF6AA4EB6BE2C720AC2E2055
-:107410007A021D9FD8C85F3B3A255F28C9F8C3E9A7
-:107420006EE65FEFEA60D354E4D73D8BF059D20BA0
-:107430005B6B71B2F983B0A1008343684BD704EE54
-:107440001D701BE92528AD79E4B77B3BAABE4576C4
-:10745000FD31D4438A1B7E66F532DDC17A80EDC4EE
-:10746000160A3CB15F783D6C591B974776A74F3F92
-:10747000958EF39D4A5779DE4CBF5722BABD7FFBEC
-:10748000CC4DF3F77D6E67F9E5930EC7C56D9FA6EA
-:107490000BFEACC9F0BDC678A9C96263EAF5BBBDF5
-:1074A0008B2B00AEEC407EC7E13226B720AF3BC34A
-:1074B0001F647A32BA3171E2FCCBA751BC1CD08D6B
-:1074C0003344245026C4EC73A5A3305220F28770B5
-:1074D0000EF237A3E6C76CAF53D00E53280EDD89EA
-:1074E00079115B647C9E749FEC42B32AE2AC967483
-:1074F00061E75A1E5142CDF8DECD4A4FCA306C8B3F
-:107500007DDA0C45237B5FC6F3E6DE05ACDF16476C
-:1075100048223BE42CFD45FA85B86B2AC0EEBFC972
-:10752000CC7FB39C46EB7AB126C3FF05F1756C574F
-:10753000F420856FDE14C824B9CE925DBCEEC96715
-:1075400085FD31DB1B39F2AB9F91BDE9D3F3A72455
-:10755000F6E676F2AF86BD01B9EC10E167EA8B7A08
-:107560009AA9DB19CC3E980F138FFA9B5D49ECCB9F
-:1075700024A84E43165FD4BE98E588C1FE857E21BF
-:1075800032A3A20BF528EE79B33D2AC8D0FDAF6E29
-:107590008FCEC1B49CABB5185ECA577A0FD9E3F051
-:1075A00061D8A1185E428C33F37B24705CE8ABA5F4
-:1075B000643F8ECA696477A6A3DC71FE2E5D4FD24C
-:1075C0003F0D7D8BE4BFA1F39A14C2F5535D550EB8
-:1075D000529B15B9B2F6678C9F9503F383A0C385C0
-:1075E000EC9DF15E2B3834D748E28785F920ABD883
-:1075F0008F7B7F7FAB349BEC220A2D6DFE98C1ED13
-:10760000C18A5C1BBFE7A9AE9234C2910B30BF4563
-:10761000F955764A1C2798716DC67133BEC0C27980
-:107620006335C713B214D6F71D12F3D2E2E064F645
-:107630005377611E4E716B7F17FA2D6C9F423F4F3F
-:10764000714AB36B16AFDB58AF41DF5DA93372A04F
-:107650006CE0FA8D36F0B90CA1CCB8BE12B5118E23
-:10766000039FDB12AE1BFC1C8C0F063FA7103FA52F
-:10767000FF3E3FA76608B99AF9FA3F5D7FE18A4964
-:10768000906C5FE0FF97F54F05FFEF7B44BEF55A26
-:10769000AE27664F0A57CC9697211F26503CEE8D99
-:1076A000D90707FE237C8DED68657B3309ED0DC599
-:1076B00099057561B62F137345BE64B61B5776C224
-:1076C0004D641F2747302EBD04FBF129FD471EEFF7
-:1076D000E3FC3203E91EF7FC82E5BBF0D2580D3221
-:1076E000E7E27BC6762B5EF27BD09D99745FC0EC9F
-:1076F000378CB8D48847CDE38C78D4F0270D3A1F67
-:10770000FE3DC3FF64065D57D520E91BEA55F831FD
-:107710002FC35EA378A13BBD7A37DF1F190E721EFF
-:1077200050022AEDEBA0BE721C56E97045E4B1038D
-:10773000F5D369D2C330F285F609822E4B689834AE
-:10774000900E0CB78314F7E103FCFEA5BABF28C462
-:10775000312CB406E0F8BF702CF8C9EF1696638B95
-:10776000EB3CA6C7232F995AA4FB79E2AB5581A025
-:10777000BDFC1FA797482C2827FEF8FE40EB77CCCE
-:10778000F631FD052A78298E2F50C29217DF9F51BE
-:10779000A7491736910C3F8DF315CCD5D85F160C41
-:1077A000C53E8DA77827895C7A32ACBCCE7A47CFAC
-:1077B000611BF22130B771B6DB128BD3ED56BFAF30
-:1077C00080F68F3A44BC0EB4DF379EED9244EB5105
-:1077D0006608FE0454915FB94065BB59A9CBB1D28C
-:1077E0003197F777C827DA270F5CB7A4F97870FECE
-:1077F0007CD082936376D5C87F701AA0F798ED6A23
-:10780000DFBED72F0BA23EBEF5BF3F4905BCFF2709
-:10781000259A4AFC387DFF89541FF2E3ADFB45FEF3
-:10782000F27D537CA4640AB92ECEACFE82F87ADBDA
-:10783000AABF4D88B72FB0329BF5E28E904CC9F0AD
-:1078400005FD59BEC3C97BCF46BF3E9C99D037F4D6
-:10785000A0DE0E8DC9E2EA6999222FBA63D7161B02
-:10786000E5D18B33FDA999D83FADC77FA7DB53790D
-:107870003FC0A067D1AE7136E2F79F3AED106103C9
-:10788000D96D1572F65D2F4DA0CD7BF167A6F3F093
-:10789000FE021BED9F2F91202AF6B5E0F0CFB1FF3D
-:1078A0005EAE0C6BBD03D7B1E42DD56641F92C99C2
-:1078B0000ED120EAD5A2BBA435F7E2F8457E1745E4
-:1078C0007003D6B9309898E72FD3E395DB1FB29AAF
-:1078D000F2A4C6C3B45FB618E7A17C76496BE2FD9B
-:1078E000FEAE3B0FFF9CFC40878DFDC0B28BE44F8A
-:1078F000E332F57865024CFCAA94E295B21F9569D3
-:1079000083DB25235E39BD0A083CF097550E6ECF08
-:10791000AC52B9FD42B7D7CB3B0E1C665C2BDD13D6
-:10792000C8CF3ED5F5AEF3162DE637BEB9E5934385
-:107930003FC77E05ADB398EC65C44A78BC4AF71BD7
-:10794000CBF438A4E273B3DF38F087DF539E8DEBBE
-:10795000DFCE19D7A5C523B782F2693C1F0C3F6261
-:10796000E6477F57A99370323F33713FF67FCA973E
-:10797000C19EAB9711D749EC87A14F5F64087C2F5C
-:10798000DE366F4D3EBEBF79DF07453DC22EBD06D8
-:107990009E185ED1D033DE960144D7223EFD9DFF76
-:1079A0007498F87498F03689FA97F1FDDC2AC42FA0
-:1079B000EAEDB2CE0FDF84B1AC5FB9965C6A23B951
-:1079C000945F9A7168C69F196FBDD69E22B20F66EA
-:1079D0009CF54A89E76446BB34539C5F2CD67CB344
-:1079E00028DF45B7B646E5F508FB775A693DFC4305
-:1079F000D2DB6D12E787F5CFB43D4DF6A8F6B73F61
-:107A000071933DFA5069F5D0FBEAB63FE0F6915D1F
-:107A100052826E7AFEC390B04BE6F775EA7C34CEA4
-:107A2000052EF8A587A26BEE437E9C477D26FD6D53
-:107A300068FFEB9AFB28CFF039A294779E567A66BE
-:107A4000111D772C7435367929BF4D5C77EDE33FF6
-:107A5000F168BC7F1C2CD0F9C7F96AC336AB3782FA
-:107A6000F336BC227BE9350188F2FACCCF07C2EFAE
-:107A7000DAC87EAB1688164E1D781FC56823BD096F
-:107A8000B4AFFB5876532BE415203EC79D33D4E8A2
-:107A900076D88CE35D99FABE888E5FE40FEFA70677
-:107AA000912EDA3F8290B0C7CDBFD938F66DA4EFE2
-:107AB000CCB617DD5259FCB9C26A96477FF8F65F1B
-:107AC000392C83E3B757C77B2C6E09F1735A87248F
-:107AD0000E833A455B678DB8296FABDB62F506F123
-:107AE000725D9B0C0EF25F27ED1C37D4B57DC2F89A
-:107AF000AC937C51691C2FC32DC5C511CBDBDE9B1C
-:107B000045F676799E0C7351A56AF79C13E37D10B8
-:107B10004DC1F1CB77BF3DEB87D447BC3B92C8AB9F
-:107B20002A7CC026F4C624AFF0DBB3281E6EFECD3F
-:107B3000672C8F0FF74B90533CF0F99A2DEFD9C873
-:107B40009F9C41C164A60B7E91DF0884E585B6B495
-:107B500064F28B5CFFBB4ABECFFB7F1793E37A3A9C
-:107B60006B1BCF787FF2774847CD9B76EF5C7AEF3F
-:107B70009377BA0171F081D22870FF8B073CE487BC
-:107B80006BAC418FCAADB85EF3CBBB198FCB8EDF28
-:107B9000ED11F98D2F4FEC1705F3689D4B367F9B48
-:107BA000D7B914FC8CC79A5FC8D5B44F734E81D92E
-:107BB000BB93E84D659688B7ECF083B1F789F30085
-:107BC000A0FCFC037DDF34F8B2CC719B1D6E4C9B96
-:107BD00017B7FF64CF12F62A08A13FD2B96A00DDB9
-:107BE0002B9F831C3F378BE6B9AB5869A473225C8B
-:107BF0007F50E797F415EF0B80A6C4C55955C7AF62
-:107C0000CEA17D313BF4DBFE5725C7D51AC53D71AA
-:107C1000CF31DF3ED86A1F225D89AD27F9BEE9ED7D
-:107C20005986FEC3CB1087A7C08E0F184F80FE3B2E
-:107C30002D57F41F237D5CE46A4C43BE7DFACABB1A
-:107C4000363AD70AE27A8611BDDDEF711FBCD91A28
-:107C50008D37E60F74D863E781A4D7DBDE33E9758F
-:107C6000E27DF4DFCCCF00A46994B77D608BCE2297
-:107C70007F1EC4F7527DC1D20DF684F3C6185E4C48
-:107C8000E78BBA7E1AFB9CCB4CF198D19AEDC2954A
-:107C9000598976013667273D5F34E72175D6D0AF25
-:107CA000893F7527ED9CBFD4B509FDC3803A3A0CD6
-:107CB000F5E1A35D875EBB05D7F151D89A3597DF13
-:107CC00096686F6B9E42FDC5F132F23B85EDED6724
-:107CD0001C4F19FEE823175E1C93446FF17A52BDC6
-:107CE0007501DBB3FF577676D92076F6BB5903E2F0
-:107CF00084347C0DFCE589E597537C61E6AF615FD8
-:107D0000CD76F3934C2DA9DD04DDCF1B7CACDD7962
-:107D100096717B3E4F9C37356CFB2BFB31646BD4EB
-:107D20008EB86D087DCCFD07C88F71FFC07C696C73
-:107D3000B27527F2D37CFF32922DE723D1EF139F48
-:107D4000658BDB2BF6E7543ECF6F26BF49765A533F
-:107D500081E40833204C7187D4F9FC5FE97DE6BCEF
-:107D60002238034636F2B92EAC8BAFCF092B7A3DC1
-:107D70004530797D4EB32D769E4BF7073BCF7D5F27
-:107D8000B7575E97CAE508D62C4D4E5657E2ADB2AE
-:107D900024CD237E9225CE774AB3C5BA8F65097963
-:107DA000B4C8D5FA46A3C897680F95ED5FBA9BCFC4
-:107DB00083AD7A7D06CE9CCBE7074ECB27C812D881
-:107DC000BDA17A8E42FBC315963B4BB1DFB5E1F600
-:107DD000390AE2C73BD5B2A704FB2F6C582CFA57DF
-:107DE0005A2AAC08FDC7834BE6CCA47D03CBDB3F0E
-:107DF000A5F529AB15A0FA91D296F7B87F97559CB7
-:107E00005F353CBBB786DEDF20A12090FF2DEE70F2
-:107E100023D731E482BA9A368FB53D7EBABF260F9A
-:107E2000F379944724CDFFDB2CF22B8E885B2BA1BA
-:107E3000BCD2B7F17B785F79D94A3921AE53EC8354
-:107E40008FDE333597ECEEFF85F7FF5B56F6E0EFFC
-:107E50003FF3D4B50B68FC68195419E72B57B42AC3
-:107E6000EADB31BFA6BCCD9043B922F85EE6B27121
-:107E70003ED792EECB253C1D239C665F7ADBACD7C8
-:107E80000FC94E810339CDD2B81BDB5774F9BFAA95
-:107E9000F383FE685FA06F5FCE56AE5B816811C949
-:107EA0005796B7B6113FA24D0A6CA5FDD77D8FB787
-:107EB000113E5FB73978FFE8E6B4F5D62B90E4724F
-:107EC00047D19D04FE37A55D7753BB2FDBDF93259C
-:107ED000E68DD0BCB77C5F16F3BA1A53C97F820F08
-:107EE000F54AECD370FC0E7ED42BA2F920EAD538EB
-:107EF000320589754E663AE4B45D4CC7CD7641C70C
-:107F0000825049730FD231CE1EBA8CF22B7C7F94F3
-:107F1000E4700B865B84E760217491DC5EBFEDCA80
-:107F20002D627D85ACAFACFF7CFE7EE6499A2F804A
-:107F3000F3D3396A40EAE1FE1EC5A1065561DF1799
-:107F4000C6EDBB3D0BAD27CAC4FE7E33E51D53F520
-:107F5000BCD8D87F33EA0D2676F9AB5C64B0E54E29
-:107F600099ECCA398CD7C88E99F7DD269BECEFD4F3
-:107F70008E8FD82E5FEC3CD099ADDBE37CC8A77523
-:107F800084E93C90025EDD4F7AE93C3089FEC79D72
-:107F90000766660B397DED79E09DBABDD1A84E0E1E
-:107FA000D7D18F1393DCFA8F2E82F24AAE476884C2
-:107FB000F4C1FD6ABBC9FE1B381FF38A7A3BD9B3F3
-:107FC00031AFC06DB4DEABF5F393FED3C0F580E303
-:107FD0007A1C5C1F68EDB28642525C3DCA490BD7E1
-:107FE000A3F48337C4F52B41BB1A647B3996EB4F5E
-:107FF0005A4EEAE7BD7A3D438560D93F5C0F61AEDA
-:108000007F98E29E242FACE4F31990260DAC7F9864
-:1080100022DF2A935D81A3429E17EA20E43299D69B
-:10802000752E024029DA8457E2E48DFF9B9815945F
-:10803000B9FCE954E2F529265C98E57F6DB61EDFB0
-:10804000E8F21FB48EE443B1AF360EC6721D89D577
-:108050005C47F286850B366375241521D2B7094D2E
-:1080600062DFF862753CE63A1D731D4E9E3F914FEC
-:1080700005355724DCBFACB13CA17FF9CA2909E31F
-:108080008BD1A1C6F74B1F9A93307E58EB8D09FD1B
-:10809000119B6E49183F2AB428E1FEE81DB549EB53
-:1080A0005E0C9C8C09AF48B8BFD1F9E4BB84AF9695
-:1080B0003C59A578FECA8EFB4C7531D31817538CEA
-:1080C0007D785DFE465D1D9581119FC7A3FC1F2B2A
-:1080D000A6B8E9FE2A491B88036F24C87EFC1FC589
-:1080E000C17A931D30F4FF62FB373FD6FD849C526A
-:1080F00024519CE3C3B82A652AD5118B737B784B36
-:10810000D4AB7C96F2778E8B34C9ED856FD25B55FC
-:1081100089E2A07BAB348E83EE1D527480F60F7A19
-:108120007EE0F64AF903EB42CD75A0190EDF64E05C
-:10813000AD115107D982869EEC7F708683E38C87D0
-:108140002D96DBAAE3E87F225BD89F27B245BEF5D8
-:10815000735B7837D901C5016A539E789E8A1F8068
-:108160002A7B502EEE4C10F561F0C6DA9985E43F7B
-:108170007B466AE9543F8BFD6FE06525C4FEE496BB
-:108180006685F3BCD5CE27D99F942BC29F8C93854F
-:10819000DF403FD241F6F14DE97EAB88B382569283
-:1081A0004F810382EE72F6AF7C4E9C0E59D28A321A
-:1081B000AA4FBDE0B7B4AF104C876AA75A884FFDED
-:1081C0008B653E0F7E8948427AFB6B46719D73FF3B
-:1081D00085FA3F2D8DF2EBFEC58F9EBDBB32A69773
-:1081E000276DC9F3BC8BEDBBD56C793495CE514E60
-:1081F0008E8484FA8C37B3457EF866B62CEA0C423E
-:10820000EF79884D7D4BBE184E4407A4EE352E1CE9
-:10821000F2E0A61F54935C6CEDF382B4AF69ECE31B
-:108220005FC8033BA773FDB6912FDDFCBAD8D7BB5F
-:10823000F98BC47DEB8FB2C5B9C047F43E6CCBBBA4
-:10824000FCE3496E379042F0BEB27F3CC507D52AA9
-:1082500068E4F717F817DE7D14FBF3D64B1CEFD359
-:108260007D1A7F23CA90EE9F00EFAB7B91BECFB308
-:10827000053DF3A1DA4A74BEF6FDFA54C2D3EBE928
-:10828000627C54026D6BDC7C37E8F3BDFEFDE57B60
-:10829000294FA7F7D1FB891E7AFF3C154AA8FF1A80
-:1082A000F8CFBE5A3CF0BD3781CFAAD77B59C94F12
-:1082B0009642A8ED69B2AB472CDEB5C06D2493FDA4
-:1082C000929DFD525F53F4C97B90CE3FD5FE75AFB2
-:1082D000847CFDE3C2E8AF9FC6EBDFDD248386B874
-:1082E000F838C32F7BE2EAB44F2EFE2495F889F1CB
-:1082F000CAF69F92DEEDB47BA9AEE3CDDA9DC3E36F
-:10830000E3FA54CF74073D07932EED3CADEA89C9DB
-:108310008CBF15DB05FE56FC66440EE16C45EA0594
-:10832000DC89FEF6523E279D2041D2FC783FE24D8B
-:108330001BC17535A021CEF67F2EEACAF71CCDA849
-:1083400020FA14F05F16BF9E3D2FDD329AEB79DFE5
-:10835000C8BA243A496783687F6F665389F181AE52
-:10836000270B3A332BF478729487E2B9DFFFE6ECFF
-:108370007F105FF6EDDCFE43D6914BE3C3C03A5A63
-:108380007527DB27230FA3BA57CAD30E59D84F5EE0
-:108390002DDFCF7918D56970DE35A488C7A3C15108
-:1083A000ADC2BE89EF24300E6EF672BD27EBEB4AEC
-:1083B00055C42D469E245BBCB98AF8C8E0C5A93CCB
-:1083C0007F09D0FE989B122BC35E611CE1962DBAEB
-:1083D000BD029F03F3D3D1BA3D9BE5F15EDB22CE14
-:1083E0006B12E24FEC57ED4A127756E33F8E3B3764
-:1083F000FB9B53D82F6D96CB28EEF03922E4C7CDE6
-:1084000071E75458CFFB0003E2CFE7FE7249F1E772
-:10841000F73CFF3DBFB3D4A3B1FD098F14762E1CEA
-:1084200019C2790EFE55907E0DA5BD003A07CD13F9
-:10843000AD4DEA1DE940FDACF594AF7B681AC2650D
-:10844000A8E00FF551A450AA7D72E82B8A03BB1552
-:10845000965FFF73577CED772495A887E4EC23871C
-:10846000A770BD735F97D08FB60CEDDFA7529E81CA
-:1084700071E656243145E9B1A52759CFD3647F5120
-:108480001FC21E9147393AC4B9A843F301D99714C2
-:10849000551D4789B9317EB147D8DDFAC36F16D96A
-:1084A000503E672D47DD74BE52B7F729372E179A15
-:1084B00033FD0F90FE2C3FF9F20495EBDCB614511E
-:1084C000FE1D8EBC3C83E3B3D9C8DA7183AF27B0FD
-:1084D000A9823E4280864D99DC8EA27D15BC14880F
-:1084E0008875F676346724DB1F08FCDB5B0769BD03
-:1084F0003B8FA570DCB233BB9BF520380F603BF29D
-:10850000FB89CF47F37C0830A6E38A6A4D227FFFC0
-:108510000B7D3D3BF5FCB2F77399C719F38EE998D3
-:108520002EAB88ABB248EB41AEE3EAB46B24DF94E8
-:108530006D20F8D399C2756181FDD788BC335D9CED
-:1085400047B70D89FE91DE13DD67D7A84E35456D1F
-:10855000850C9CBFCD26FCEC2804FE53AED875E3F9
-:108560007D299D1BF92308C405D7E3A528ADF00D8F
-:10857000573CFF5399DEFD1E11EFB40D89585CE4A2
-:10858000273057DACA74C5E8047EAF41E7288E8BDE
-:10859000DB6CD1F769BF1DE9520917A340D0099DD3
-:1085A00023348A57525471AE9EA26ADEA03490AE34
-:1085B000C058086170000FAF860B7ACE7584436295
-:1085C0007D07EA425B891EC70417AF9B392DAE4F6A
-:1085D000866C52ECF9139E65EB5A0A695DC20F2A4C
-:1085E0004A98CFC7DD0B40A5F3EF14C5C77952CA2F
-:1085F0007CD09A505E4E878FEF7B708EA6C9DC8F41
-:1086000010FD2ADDA77D9B34D53907E94EFB328D5D
-:108610009F6BE8B672DD79DDDF6F4A2BC3F59DB144
-:108620001CBC6717B61F2D0C0FA773DA0969FEB7BC
-:10863000C81E3F736AD1BA3138FE2F6D56EF5CB257
-:108640004B3DC11FD3B97DED13568DFCE2836FF412
-:1086500047BE22F93E2BB15DECB38AFBD8D79AF026
-:108660007E43E707363AD7BAA6E36D1BED7FAFCC62
-:10867000F1BF4F7A30A9A3A98AF836195A9B699F8E
-:1086800013ED21D74B847385BDE87F65F8D6A638F6
-:108690003EBB72F47DEFA8FF72D29B4E5D3FF75355
-:1086A0007C84ED5E3D4EDB7BE0BBA55ADCF96910B6
-:1086B0000EF27EE06A788EEB3A8DEB7D216536E135
-:1086C00068F46B8EDB7C7138B3E5087DB7E9EFFBAE
-:1086D000798EFF4BD6DB03EFD8DCB8FEC09FC345D5
-:1086E000E4AFC218CF7D5D1D69C0A42F17EA8E4E7E
-:1086F00003DB919DAF7570FCBDF33E359DF41EE923
-:108700008734ECEFC5F882F4686FB1D0BBA657CFC1
-:108710008FA5FDE2F3FB965F4EFCEAF5580D7CCF8A
-:1087200018427AB41BD88E197A58467A28D1F77B2A
-:1087300062BFA78CF04D7A67EB9EC37AB7D702A4CD
-:1087400077886FC63BE25BA538A44C45BCF3F323A6
-:10875000588FDBBA5FBE82EBD991BDC3C651DFC271
-:10876000F86A8BCC0949F87CA53572909EAFC4F7A6
-:10877000376931BDAC9412EB7A167B449DAC611F16
-:108780007FA0EB6778A496E6C5F14E594EC07F9C5A
-:108790009F147DDD8FDEBBF127EB36A0BE94FA2A55
-:1087A0002C1328DE3926B31FD8AFC7C92BFE30E5FE
-:1087B000865DE23AFBCF888E8B837ADCFCDCAA5C98
-:1087C000EE935FD0502EE3B1F55550BD7763156D34
-:1087D000C54D9ADD7A88DA29D5E12A3A2E9CB6A0D1
-:1087E000FB90F8C6CD379AF0D67EF05BA3B94EFA6F
-:1087F000A41DE83BCEF6FF8CFEF1095CFF3DFB912A
-:10880000DF90342E61BCA1C766FC0D86933EA9E7BC
-:10881000FAA96897AFDBF8EB6B1574E80D04045CFC
-:10882000FF9C8DDBD605D1079EC8F15D9783F8FBD1
-:1088300022D77F5D0EF2ADEFF87F7AC89FEC7DE521
-:108840001D37F9E1769B6F34E1AABD04F3882478E3
-:108850009C926365FF5A3948BD49638EC8B7860745
-:10886000611DE1A5A15D5643E4A77DDDD793DF78C7
-:108870001F5949FBDA4BA707DD942FD5EC3DC47592
-:10888000FA463EBD04F43FF9D659C4FF73B9223FFE
-:108890005EBAC19A90DF8E80888DCE91037E576339
-:1088A000044552638A3BEEE8D8C2DF8DD46E4B7C20
-:1088B000AE8EE2148450DD45F2E3C61C7D9FA41405
-:1088C0004A294E41DCF03E49F455D9BB15B8BEAA41
-:1088D0008BEAAB765A049F9C0E6849CB88C52B2344
-:1088E000F27C4BC8DE2D31FC875EAF146D93F87BB4
-:1088F0008A513B44BE3CE5B4B685BF930AFAB84EF4
-:10890000AF860840BAA728415EFF94DC5208E2FA1D
-:1089100027A179267D59DA2985989FFA772F0AFEB3
-:1089200013FB459B65FECE6FB30499C5346F94F974
-:1089300053ABEF1F2EDF91787E51B7E9F8610A95AE
-:10894000EAC3A6F3209D3FE6F39DA7E83F929CEF84
-:10895000FC24478FE78AA028E1BBBCAE4BFB2EEF7F
-:10896000238A075C74F8080971F91E1D470DFABACD
-:10897000EB42B258378A82EAA36FD76112002FF315
-:10898000A91E71423880F542DE463D632D54DBA8B6
-:108990008EACBEBDE9309DBF2DD5E35A339E90A16C
-:1089A000CCAF657ADD50CDE6C4FBB53A5F6A4D7C4D
-:1089B00069F04B26FA44DC7DA9F4A1E5FA0EE1A0AA
-:1089C000769795EBB9CFC1AD5C7F55DFBE85E95990
-:1089D000AACB6F20BD415ECF325C0FE9D3A5D26B2D
-:1089E00096DF3103E757C01509F29B9D7949F22BB9
-:1089F000057539ADAFBF4BE4B5FD5D25BC2F61E01A
-:108A0000C5FCFC2C3D8EBE66938837CF7654392941
-:108A10001EE83BAA7825C47DC5B14FDDF4FD4DF9B4
-:108A20003E19E89CB4AFB3625D10EDE59EAEA13790
-:108A300069E807CA8F29EC372A8E9587528AA95F81
-:108A4000EE2CE53A132D93F2009C87FD70DFD1A147
-:108A500027CA384E9F5949296AD3D17227C50B7B43
-:108A600040EC6F48C72A337BE2FCCA7B3962BF61A6
-:108A70004DEEBB0F939DBA66B795F783AFB1465FD6
-:108A8000A23C6C4F97E26DC27EDDB145AB5348DE30
-:108A9000BF91BC14761FEE5E9145E735F59D56D526
-:108AA000CEF4DE7D90EE077749DE61383EB0EFEA26
-:108AB000D16DB44FB4A5C24BEC35DE579EAE3D4AE6
-:108AC000F5AE90E7E4BCFD9ACBACEC5FCFE43BFFA6
-:108AD000752EAEABD6B76516D9E133BFDBC37515BE
-:108AE0007D6D12E44AB48F7CE849AAF739F3F4713A
-:108AF0001B9D0757B51FE7BA8DC1FCC1D910E28E87
-:108B0000F3F6561BE537F55B8C7E0F7F8F52ADC7B2
-:108B1000510DDBDEE67E2DE50184C7CD7248C3FF33
-:108B20003CB4EF193E1F6ED825EA3E2EDCDF26F15D
-:108B30007D03EF8B74BBB51C34C6FB7203EF7A7DEB
-:108B40009481F7733097EBB496EF7A84F1BD44C704
-:108B5000B7B96E0A2DB0AD2C4BE82BEDB799BFFF1E
-:108B6000BB43C7F71D17C1F7A85C1DDFA36014E165
-:108B7000FBFC74514F77FEF81027CD7FFE08EFBE47
-:108B80007E1DCED9EF1ED5E382FE88C567BB323687
-:108B9000AEB7E313FE0E3170B4DF467527B33A3F2C
-:108BA0006679CCED3C3093F87D1DF8EB887FD77566
-:108BB0003A558A83E7F6087B36A7D3CEE713D74129
-:108BC000B885E4DCB7FFF1960CC2CDAF056E0C3B67
-:108BD000B74CE7EBB5653F9845F97BADEE0FFBBBB6
-:108BE000EE9CC576671C1453BC3747FFCE7B4E58AE
-:108BF000B7439B13F94EE7D424B7864E3BD79B5C13
-:108C00000B3D36F267D7EAFED3EC27FBF29C2CE74C
-:108C100020FAAB6138BE6E97A98E52E9617AFA3BB1
-:108C20006C7CDED560F2BFD372AD09F51783E1D35A
-:108C30002CAFDB72757FA2CB6B6E54D431CC7945EF
-:108C4000F6D2F94357647519C50B06DFCCF2EAD2A8
-:108C50004AD3BEEEF7125ED2E37CA37F83FEFD5BB8
-:108C6000586D75C5E7EDCFE75AF473CED04F2B7032
-:108C70009D7749D04D38C4FCE6867229697EB332AF
-:108C800017C73F5F78FBFA71F1F98D6FCB708AF7E8
-:108C90001E44BB5251C9F53BDD7C5EA8B4CEA57322
-:108CA000B0C02EAB97F29A4087CCF14060973D64FC
-:108CB000C179AF211C215DD59DD2D58423CC1B5A0F
-:108CC00072D13ECDA32D651C37AF03E3117C6EDE60
-:108CD000CC8F197F47868A75F72B5A4EB23CC2C893
-:108CE0001F1A3E17F1AA71BD01ED008D6FD0BF4B69
-:108CF0006B3FF8D7A2E2543AB7FDAC6821C5A9B9D9
-:108D0000227F31E2D528C6AB257ABC4275174B8548
-:108D1000E860E973F7D9C87E1DA61FB6A0FA49D549
-:108D2000BF86F261D50F8D3FA240436A613D6A2044
-:108D30009D221CEE95C4FECDB356AA0D81A6978741
-:108D4000705D60EF6BE21CCAACEFBD8BBAD95E9C64
-:108D50005FE86A24BC2D2FDBB206230C18BDFF751B
-:108D6000B637A37F67532D6A6C5D4DF4DD1DE7694F
-:108D70002D09F1726F47B38DF7A1E3BF1B2E1918B0
-:108D80001FD55F641FEB79935D41FA39DEED3B221D
-:108D9000ABB42F847CFC657E3CBFF478A8FD600AF0
-:108DA000FBAFBEE3AE10C5FD7FD1F17846DF976F14
-:108DB0009A24333F2C93453B7AFF3325245F9287D7
-:108DC0001FEDFDCEFDCF5CE1E37DF490A823DE91A5
-:108DD00058875D1F4EACB336F81AD0F98A740DA7C8
-:108DE000EF950DBAF62A3D6E6F123D92A4832C2F9B
-:108DF0008B9498E7069E95ABE3EB48713DB791DD08
-:108E00003B69E88B12F5901F7E2B5763DC34750AA3
-:108E1000F95AF68916DFFF1DB15F63E5F70FB83F1A
-:108E2000235847F7CF173BB9BE013E0FCEA5FE3DF5
-:108E300025E2F703EE79B97644FC3E1D48221F0F68
-:108E400058A35CEF17386E61FA02C7FB3D435D64BF
-:108E500017B7CCA43ADA6B757B71B8C45943380F95
-:108E6000D27B7362F32CC915E71B40EBCD8D7D5F80
-:108E700069AC7735DCC87C58ADE3EA3FF4BC1EF33F
-:108E8000A8F3B949F2A8C1E2DF0B74EBF1D3F9E919
-:108E9000DA89EF210ECA8F2841CAD7F7BC91122276
-:108EA000FFDFB46FD99F281F0EBC69078A43EED934
-:108EB000BF6C04D7E1FBFD57923D39BFFF8E2BB944
-:108EC0008E5112DF970689BE5C8AA75EF5509C54CE
-:108ED000BFEF55AE73ACDF3BFE518A9F305EBA9652
-:108EE000AE631CC3F82B3F56C9F8DB73B432B3949E
-:108EF0000807AF93E6AD3FA270DD63FD91CA17E7A7
-:108F0000525C736C06C74F46BC5441F938C54F4795
-:108F10008626C44FA979827F7D075278FF4382124B
-:108F2000811F189A809FBAF63F709C5187F62E1EBB
-:108F300047C673C5790ACF332C4FC74F58F2313E1D
-:108F4000768BB6AE630FAF6FB935CCF26EDA6515BE
-:108F5000F7DB446BD44907212348FC78912EA11CF0
-:108F6000E6D84285946FBE502CF20DB33C9EC813D8
-:108F7000E7852F9C14DF19BF30DD3F22D9F7C641AA
-:108F80009821F27049E777BB7576B2EF7977E4897B
-:108F9000FD097726249C4B1AEDA379425FE6D8C4DD
-:108FA0003E95F9BE3FCFF03FB08ECE634ECCB5AA12
-:108FB000C6EFB7E4A1DDBD1E8C3FEFABF3B3E89C79
-:108FC0004BE4D5003D33C91E7E9BF6F929FE9A2459
-:108FD000FCBAB1CF3F6F333C20F6F96FB5925D30EC
-:108FE000EA4BE6F9CCF157F5D534CF8DE8DF699E31
-:108FF0009B6627DEFFF645E2AE0579BA1F1F0EC35A
-:10900000455EE172923F38D76555655E476868B244
-:10901000EF0B0DFB737895383FEA42BB486DD3A840
-:10902000D779DFEA8503279F4C67BB9A0225C8E200
-:10903000ABBEFC9327D93C4D17F4757E02FE0C792C
-:109040009DA53CA06CA0BCEECCB3E8DF259DB1F1A2
-:10905000F926343E649107FF2EA969D4672DA44FE9
-:1090600067F5EF5E90BE227B9CDD3F9BF731DFBF53
-:109070006706448378FFC0283BFBBFFA99129F1F05
-:10908000D447843FAC9F2FFCE1F0F6792C97EFA0FA
-:109090005C7C5E3613AF515DAE21EFABBEEC9B69DD
-:1090A000E493748ED34438673B9DC56D7DFBDB2D07
-:1090B0007C5E897E97E2C21B2625CA6D04F81FC814
-:1090C000C6FB37CF96BCE84106C8FDE65BE7B1DCDE
-:1090D0006FD2BF8FB998DC7F9BE7FF691EE97D7770
-:1090E000FF77C6208B5E18F54111F9D7864170BD18
-:1090F00055E72F0C8D3E4DE765DE0BE7E97F7F3AA4
-:10910000FE3CBDC4E3DF924776D5F2A5FB0AA0F989
-:109110007A7EB942223901EBC5607AB5439F7F4719
-:109120009E2ADE9325CE8746E9FD17ACA142FE9E1E
-:10913000A2ECD2CE019B9E7D7E2CD9B9DE0347C620
-:10914000DAE2E47A6605DA07F237FB0EF1F78731E7
-:10915000DC5974DC29DC4AD28DBA1F4DC4E119C236
-:1091600021D9E7DD87AEA7FCF16CFB4D599216E7DC
-:1091700067F79E700F8B9BF7ACFEBB1898B70DFF7F
-:10918000766A3C9D0F309D67C3623ED4FFE1378D08
-:1091900089BFDF6C7C67C7787E7064239FD31B78A0
-:1091A0005640E0D9F83D8C0BDF55DA80BF7B0CEEE2
-:1091B000B7737D459F355A941EA72F1F1A72449886
-:1091C0001566312BB9DE75226CA8E273024CDED72E
-:1091D0004DA6CFEFC2B2A80F6DE4BAC5698DE025E8
-:1091E000DC4AB099FB13668BF3F229D02D135DDFB7
-:1091F0008428B73E50156A67508519B6931C61994B
-:10920000C2ADB6F6834EC257C4A3A4BFEF10A5A744
-:10921000C9E4175BBF02EF1B78C5C1180425FD4EDA
-:109220003F2B5FD87FAF53E863F4ACF8DD936F401A
-:109230000FD33F55E9667A53352D83CE4B763FB732
-:1092400042A6FA97FDA04549CFBC998DBCFF169D5B
-:109250000EE1ADE9B1F54EA2F5AAB1FE940560A10B
-:10926000F54AB04BACBF1132E87C6C3244F83D5744
-:1092700011C1B8DEE9A029D4B7E517EB7C16F95B7C
-:10928000959EBF591C41AEFB49CD17B8762A2139AE
-:10929000AF92B7B6C38FD0F94CA958E744BCCEE71C
-:1092A000388D82EE0BFE3A5FD8BB29106639430D2C
-:1092B000A82FF28F2BCC54895F52C463A1DF13BB5C
-:1092C00054BEF67980E977DF1EEDFD6165ECDCCBFD
-:1092D000DB99C3F5D0EB254B5426BA1C85A21E3A68
-:1092E0000261FE2E3392F87B67C5F9375E9E4F7E92
-:1092F000CF2FBEC335D775EE086DE5BA9B05416427
-:109300000FCD530870DA13AB03B09684F8BE95CE38
-:10931000D955AE33ADA07C715FB6FFF2FC6CAE37B1
-:109320001DC69329A1F1D5A931BC2365FCFB3B4E99
-:10933000486D257BD4ACD7D30655B75ECF54C4EB6C
-:10934000D0D0CEF38F4828A2AEFBDE2A517F7AEF31
-:1093500090FD5CE7DB23812A15D0F9FF7EAE03A6E2
-:109360001F86B3167CCDF97F96FEBB0F25FE3726F0
-:1093700096EA461E9F6B3E95CAF5AFCA0C9F46758E
-:10938000BCE67AF1D296F10FF5705E6AD06BAA1343
-:1093900057BC7CFF5EDDBE363BC4EF0049ABEDAA97
-:1093A000348DBE7F5FC1BF63D54CA141257DF7BE23
-:1093B000829FA73A662A02ED4DF3DF44FC32FF2E6E
-:1093C00015C2ABFF059A376D38EFF72593C73443C5
-:1093D0001E9681755228875B49BE46DDAD516F4BA5
-:1093E00080A0753B7DE277F054C409FFEE1F42C9AF
-:1093F0004EB8F4997FCF43D4FFB6E8FC47BA7670F5
-:10940000DDA7437CA76D7CCF6BE69B81DFFF02B9B4
-:10941000D77EA250530000000000000000000000B2
-:109420001F8B080000000000000B9B25C3C0F0A3A9
-:109430001E8145A551F9E8F81C9A3C0B0303C34F64
-:10944000205ECC835F1F2E1CCB82607B893330185B
-:109450008B32309800F12C209E0DC43F81D8508C67
-:1094600081C108888B81EC1220F6056247A0DA2FB3
-:109470001C0C0C13851918E600F1726154735F30EF
-:109480004268252E060653206664C66E3FA73AD072
-:109490005E5D04FF23906D6F409E5F46F1D0C35523
-:1094A0004EA8FC7C6B54FE2C5B0606666704BFC0AE
-:1094B0009A34F3ED817A1D9C71CB77BAA3F21B3DF0
-:1094C00051F97FDC50F935E1101A008D579524B819
-:1094D00003000000000000001F8B080000000000D7
-:1094E000000BED7D7D9C14D595E8A9AEEAEAEACFA4
-:1094F000A9197AA04706A8611A19E3A0050C30281B
-:1095000048CDA0384693349890D1D5BC168821090F
-:10951000CFD7F1ED2A1AC9F47CCFC0800DB2067DF9
-:10952000515B0C89262621899B3559B3698DC92346
-:10953000D96C168D9B47B2B86F243C379F9B79EE50
-:1095400043FABD90B0F79C7B6BA6ABA6BF00DDE4F1
-:109550008F37FCCCCDA9BA1FE79C7BEEB9E79C7B8B
-:10956000EAB6EAF1437C1EC059FC5B03F0A6170083
-:10957000964D95E94E33076DACFC1C98FDECD1A5DA
-:109580007AAE5362E5A2D0B84732002E8F66003C17
-:1095900000F1C38F8287D51B695461671380DFD8C0
-:1095A0005003A1A97EDD657F0F406E61E9F7F20BE4
-:1095B000A33123CCFA7B6A79B7C5FA19F9727BB764
-:1095C000D53AF5BE010765F8CD07864D3DC0E09C54
-:1095D00007C113051866632F64FF69F72521C1DAF7
-:1095E000A9B951301661BD5AAAAF3D73D4731B7B24
-:1095F0003EEC85EEC3ACD49E4DE7820CEFCB9ED300
-:1096000097C88C1EBF62797EC5607FCC934D231DA9
-:10961000B17DD4EF2946170EF576D1B314E9617404
-:10962000ACAA929E55A5E8792E9D467A2E7FD658F3
-:109630005C488FD6C8E9D11AFB689E4EC5183D4DCF
-:109640001742CF3D44CFB0A067D845CFBB043D1BE8
-:109650006D7A1A86889EA1398C1EF6C8775F1A1219
-:10966000ACBE86F484B19E939E21A4A7B5083DDAD2
-:109670001F879E0F09794B213DCB2AD393427AEA6B
-:10968000ABA02794019D3DF783641D6E9D8E975F6F
-:10969000F071D13399589AF53BFA7B99E699ADC8A8
-:1096A000D8864553F5C6055EDF691A8A8DA37C2DE1
-:1096B000783006ACBFD13912D577F7FB10A8547FAC
-:1096C00066A3D58BFDBFE34967FFA37338BE76FD64
-:1096D000DF8879FC0DC8D46E5628318AF0E882AF55
-:1096E0004112C7F166623AB66BE2ED06172CEF1E27
-:1096F0000F156BCFE919DD912679D672F710BFFEF1
-:10970000624E060C06FB9F4C02F25F8D717CECF6FC
-:109710000C2F802B90ECBB2C8BE30770119BA7F4D4
-:109720005DB9341B2F9EB9434B307E8C36F46948AB
-:10973000F788B1AF1BF5D6A9B80A7213E2559C0F92
-:10974000B65CAC81316D3E9BCFFE576473274CAF46
-:109750009746E1AA9F82959007722D407F6701E9A5
-:1097600049D2FC0F2E7890E85691AE4548570A0C26
-:10977000F6FC1B427E7CCFA401E54A33D2B1F4A2B1
-:10978000E9E38C20FF5BB1D74C6C4301FD3FB5E7AB
-:1097900097CDAB6B7E892F0F81954B235FFCCE79E4
-:1097A000B3CBEF09BE5FDE9826FE561A7F3AFD7CEA
-:1097B000FCBF0683FA012D134B84A7F019F58EF731
-:1097C000A15CB335691E62552E63E37414F0DB3D72
-:1097D000DE249D4AC621C75F137C1AF54FBC50D8C2
-:1097E0009F1B9F6F897ADF029D4A9BAECB9EE5E36C
-:1097F00054EAFF47C8E27AACEF5A574ADAC1F77B1E
-:1098000045FDCB9F73D62BC59F8F4FF2271D437904
-:10981000B4D723FE59330184C8D05F6839C025F816
-:109820007F5893DFDE367E172EADE3D1E4296CBF7F
-:109830000D92F302CD6CBD78939FC5729D62BD49B8
-:10984000FD42487FFD52217732E9013E1EEB1E5852
-:10985000FF61D19F2275013079F6B543762743ED3C
-:109860001AF9784E62FCDC0760CED20BF6F5137C59
-:109870005F5FA967D7E27E7EA5C20861E3D580EE6F
-:10988000C712EBE758BDC8B290C946021FFC594D3C
-:10989000A288DCF8DB20EDAF61E3B7AB8E75E1B7F2
-:1098A00092807A211C839C3F02A04BE128E1BF02F9
-:1098B0005670FC0D09FBAB538C5E858D23C73DE6CE
-:1098C00041F6B46615ACDC54208786C4E5B737EEA4
-:1098D000F1205D434CFFFBD8928CCC61EB1DD7434C
-:1098E0008CD91B45E47652BFE765C8CD60FDE625FF
-:1098F000C82D657008562659BB8C0F569EA471C1A1
-:109900003C5844CE364A7C5EA5F8C4D9B3641740AF
-:10991000F65AB20B32B48ED578C6C27D40B322A6B9
-:109920000FA7FDCCFD5CAF2960A19CD4C633B91A4A
-:109930007C6F5CDC84F8CE8AA7E0B5565E9E28C0BA
-:10994000570BA563643F355D2CF515EC63CF33F9F8
-:109950003951206F233BB81D30D83424F4CC8749CB
-:109960007FDAEF3F20F8A48E3364902E43CDCE975C
-:10997000A6CBF588545C4F6C16F4E2DFD5CB9DF294
-:10998000AACC14F2CA86F02940F235FC1464115FA7
-:10999000C6C9176E63F0A52F6AB093C9572B1CF583
-:1099A000A0FC5C0613549AA0CB582E0193CA3648EB
-:1099B00050F9DB0E26F7ACDC6631799F4FF2FF3EA3
-:1099C000898DFF9B39C98511F6DC1F4F5F81FB0B29
-:1099D00093FF8DF89CC98984F2546741D1FDB2563A
-:1099E000E2EB75AFA2FBB1DE5E0B483FEE97FAD318
-:1099F000B84F8C083B69C40F8E75BC47D03D22CA56
-:109A0000DA7812C6717ED9BCA05E7FBEE9765AC7ED
-:109A10003E85C3436C5E48EE56F37DCC8D8786F35E
-:109A2000B2E8FCE761E31F7F1E86A4FAA2F3308C44
-:109A3000F3B051E2FA53FD391FBF0C7DB44F6FEE06
-:109A40007D9CF8AF9E3CB7FA36FDCB5D7A7385D02E
-:109A50007357C2C45C85E9913B7C39559108EF4747
-:109A600010EF377F72F403480F8C2717E23EC5F0E2
-:109A70007E54223D9982A36C7CE515398B7E8A2722
-:109A80007883962CE3A780CEF49926F4D97CFCDF6A
-:109A900046FDF5E074FD7BF1E10F1D237B03B4E48B
-:109AA0004ED44FAB531ACA457FE3060DE568B89113
-:109AB000C128373155932E676508BA50FE6CFB6399
-:109AC00028B669A4298A768FB91CBBB5C75F1B4B22
-:109AD0008244CF93337C4DCEE73FC3F5AF2763324B
-:109AE000A34FCD5EAB219D83FA06ADD0EF5243C9A3
-:109AF00098CAE47018C7C3F1BDA9234D6DA83F6192
-:109B0000691FEA733D054B51BE639D84E7DAC68445
-:109B100086EF7DB125E03390C509B2AB86A24E7FBA
-:109B20006EB8F14EB89DEAA7E0F5D074FBDA174A9B
-:109B3000815AB04FE03872C13CFB94540EE99263F5
-:109B4000C5F5EE3F09F9F71809DA6F20F3494B63C1
-:109B500072EF1532E08DC14FA4CB0AE6295AB0EF5F
-:109B6000B0791AF29BDDC5D625DB419CFD9A1268BF
-:109B7000CBABEF776ABF15F39E5931324EF31ECE51
-:109B8000E0BCF733BD4FFBEAF170F61023A1777507
-:109B9000EA317CEF4D2BD017A56E5A709FBB5B7ED0
-:109BA0008789F2B707F9C6368EB11E8DCA9D3D3A38
-:109BB00095233D312A3F19FCC467C759BBED699F06
-:109BC000EE4339C8DCFD25EC8F79DD899DD86F9493
-:109BD000F58FFD2A9A7E484798EF3BDE382F6FF1CC
-:109BE000703ED67802846F9B87DBE10658242F19DC
-:109BF000BDBC9F5ED3EEB473C366606A3DB0FF82A6
-:109C00002D750ED86F5CE4A8EF5E2F2F79B8DEF0CB
-:109C10002A09305BB12CAEC7CF4A32D593E5C513C4
-:109C2000687F28B354B20B0625A7DE7ED4C3F7BBEA
-:109C3000273C1AD11983896F9F65FCF0EA1EB27B1D
-:109C400022B5F30FE7903FF5AAB9801511EFB85E82
-:109C500057643C882ABF1E2F58E74F4956DCF3272C
-:109C6000C0A769F4F7763AE47A9787EF7767C57A01
-:109C7000917D5637EA9918134320F9301E473E78F4
-:109C800082ABCC16C687C15AD5407F68A0D7537423
-:109C9000DF71F341AEB92586FAD1CDF76F09397A74
-:109CA0005AF07DCD99F7909ED8AD7BBAB221E4DB16
-:109CB000D12ED4F3036D1E0FCAF99F0CFF5C746C98
-:109CC0009FE4DF241DC4B78128B79BC774263FB823
-:109CD0009EA35C7E0CC875D17B93D1254DA7CBCDBF
-:109CE000BFB79B3E9BEF35B59E44B615F19B481020
-:109CF0007EAB94A2F8FD47F1DDC62B3489578EE385
-:109D000065FE69E0F594943C88EB7B8F90D73DCA63
-:109D1000B8867A216ECB4D90AFA3E97A4972C83BE1
-:109D2000EBE7F3D8CFFDD80FAB7FBF32E1E8C7AE8A
-:109D300017463EF07591E0EB42F9A3AE0B1BAF9DC9
-:109D4000026F03B25CAE5B8ACBF5DB8D97BD9FF6ED
-:109D500005AF02D437B5A104D9DFB342891CF2ABF9
-:109D6000BF5E35D0FE618E12EDD7D4D428F093EAD1
-:109D700037C6B0FE607823D9E583DE04D9E947EA27
-:109D8000BF66DDC6E8EA3F53033E93F903C1AB8EDD
-:109D900018A8178FC8E4AFF59F699E952A32CF4166
-:109DA0008C8F31FC03881FD9D5EAA4118EF8F68771
-:109DB00098E263FDBCD10A59D4A7DE901543BBBB22
-:109DC0007F9166F651AD04207FFB821F684FB64E2F
-:109DD0006F1F0C0D7D4CBE6C6A1CF6279D45DB97F2
-:109DE000EDE1E8C7137D92E37D513C2AC1DE29589D
-:109DF000A7FE196C68D8B5649D6D9EE23BA3A5458E
-:109E0000C17D130226CE7F3CD1D5F73BE4D3F76466
-:109E1000D2836EFEFCB59C0CC8CBA6606F3449F3B0
-:109E200066F7775DBD427A546984AC4FC251135DC9
-:109E300068DFF6377A28BEA68436D494B5BB1BAB50
-:109E4000B3BB41C43D6C79E8F8391F376072FD1D22
-:109E50008671C0B84A0DF0B8462D1812507B534A8F
-:109E600050B06415C553A2FEB7BADF5BA85FC9DA6C
-:109E70000B6783E7D0AFC2FA6D7E1BFAAD80AF1FD0
-:109E80003E45FD32F5103D3B63AA5F6F2C450FE167
-:109E9000CCD9B3F272E04DE82F49F2AD784C5A9F1D
-:109EA0007051C43CC48AC1E89D0E7FEABDF27C4774
-:109EB000DC54D5873E264558D9B8CD1A2FD00FEEA1
-:109EC000F9EDC681D0BF6CDC628D57A137D0EC2E86
-:109ED00016971A5293D95EDCBFE786288E084A8A05
-:109EE000E2C2C352DD12B49FED7A4AA39A43BCC2C8
-:109EF0006D561AF5C5F00C8F299BD8EFD851F40791
-:109F000040BEC14C96892F298DCA2F0BE9F9CF721B
-:109F1000384A788A38577F05791FEA297F3EA1AAF7
-:109F200066B2983F9396B9FDA2068ABFBF5AEDDC90
-:109F3000212F9BCEB70CF28E3D1FAE652EF7E55C50
-:109F40007C500E94C6EF1E433E0C35AC8B95A31788
-:109F50007466E714F845A66AED94CBE3B1A7181E22
-:109F60001062C2B3B2CC38627EF5AB4D1EEF40A595
-:109F700088E771C23E637847A4995C4FE3DFEEB691
-:109F800083398CA3796F0B59387FB2F524C8ACFEA6
-:109F90000F1B6490DA110EBCE6A1F95C6592BE6AF3
-:109FA000E1FE9DC5FE211D9155AA63DF42FD39B931
-:109FB0006F35A1FC3BE1CFC9CE78667FCFB3F0B35C
-:109FC0000553F8B34756B178B1A2761E2ECE8FBA9C
-:109FD000AAF8B19FC90B3079D9C7FC46C614C8305E
-:109FE000BF11E13DCC6F04F2270D2A077A5AA8DC95
-:109FF000854D57E2F9596AA4A909E3A59F8E7D9082
-:10A0000055D98FBA83CE55029D183FDF69C3EC89BD
-:10A0100084B03867F941FFEF3A301EB3D3CF618087
-:10A02000890ECB01CB7D18EFDF19E6ED7F26873A4D
-:10A03000F13C62BF384702C5D2DE57E0FFE7652F2B
-:10A04000D18136106FFF9B5EECCFAF08383D87F0B3
-:10A050009984191F111FBFC6E1C681B9D43FA90059
-:10A06000365E7C601E1F6F01B7EFA17543053EF69B
-:10A0700091FCDF84877048736B1D1E2A836A9A8067
-:10A08000DBCDFE5A817795FD8092E4FB9D882B9570
-:10A090005E3715F6358147A5F907F44B317EC1F4DB
-:10A0A000701AC7FDC7E2FBF45B3DEE7EEFB9F145E8
-:10A0B0006D9F482B8CC57F29277585C161EB70AEDC
-:10A0C00089C1911B72695ABE558EFB6B5917F1D02D
-:10A0D00024AD7F9BCF8ACEED8EAB5DF3E88D5A74B5
-:10A0E0002EE90FF1F5572DBE2B719C827EE0E9CE53
-:10A0F0008644B874BBFA8467CADE62FFCDE80A4CB6
-:10A10000D96BECBF5AABCE01D7B45FE4A81F36E7DA
-:10A110003BDE7BF57738DE9FEF3C5DE6A2A3D9E618
-:10A120009F80636E3AAB963BC510FB5C9ADB8F93C6
-:10A13000B0D88F2BC167163A61DEAF0F6EAEE1F675
-:10A140000DB763FE13883A6E3CCC02FD2B633D0EC7
-:10A150001B1E096CFB36D732BDFF7EED131487B38F
-:10A16000FA15F05F353D4E97EE4C519C2DDDE7D34F
-:10A17000FBA31477A338DB7666C8FB58B9CD9BDC0C
-:10A180008AF27BDA3F370B11EC37B502E3D6FDAE2E
-:10A1900078825B9EE29FBAA9E879995D8EF4F0F827
-:10A1A0009F0D6B8DC5F300EE55F879FD77BDC97B2A
-:10A1B000110FD48D40715AA075E035F8FEF87CD3AC
-:10A1C0003AF805F9FFFC7C4C85F4B166464F86F9F8
-:10A1D0006B3B0DA49BAF9391A6755A9C3DDF5BEB47
-:10A1E0001136DD04D94F998E990DB89E6A94093ABB
-:10A1F000B7AB8917C7E77EC523E6EDD6B2F4B9E75A
-:10A20000E3560CB4B2767BE7481EE2FF1C4FF61013
-:10A21000C6A31A3DB4AE775BEAE378D4BEBBADEE1D
-:10A22000268AA75BAA47263A725AB1753828ECA647
-:10A230007E113FDDD3C8FDD6E73B5ED7F0BC668F0D
-:10A24000D949F9004AE687D47E58F03BB3F804C5F3
-:10A25000C9874B9CBFF429DCCFEF0F07BAB345DFAA
-:10A2600047E87DA6A9E38587900EA67F0F917F061C
-:10A270000D5B181DBAA52F417EEF9D63797E81721B
-:10A28000B5DA437216C1B89C8CE7A24EFF79EF6A2B
-:10A290000F9DB366F49089F6FB29EB0DA08D48D194
-:10A2A0001BF07CB1E6F8953AED95CCDE6928B0F369
-:10A2B0006B56A556E07CD974F9607DD1F990E66EB5
-:10A2C0004F223FEF5E0206FA63BEB95DB94758BF41
-:10A2D000A757FA7454055787AFCE7D13E5896D2BC8
-:10A2E000E827FBA2560EED267F77100CF63E123BB8
-:10A2F0004C76941693C142BBEAFFCA345F4C671098
-:10A300005DCAFE9547D7B0F6EA6ACF2CB2CB5AF9B0
-:10A310007EA3B37FB8DF6871A75D257B73D4DFFDB3
-:10A32000E38FD3B9B2EAB2AB1428A88F76D7EA0D7F
-:10A33000EF692EA20FEC521E8FD0B92EC8B794B57C
-:10A34000B343C73FFC0F2F16F0FD84E2B2D385FD67
-:10A3500066F753CA7E3BDDB3F51F5E64B29CF4F230
-:10A3600038A8A25ABFC47579429C2FEE75E5DD244A
-:10A37000BD7CBD9C16EB186716FD6DF48F915F03D5
-:10A38000D76CE47E16980E3F86ADF7D34A819F6D59
-:10A39000EF7719ABBC3F3195D712F2C7CBE4B5AC20
-:10A3A00057928AB74C5E8BBD5E47575B1063F33B99
-:10A3B000560BD93E9CDF35166C467995C0ECD379A7
-:10A3C000FD09FB1CA509E5F01AD882EBD7504C3CDF
-:10A3D000871C6C7E3773144BE3AB449DF251691EAE
-:10A3E000B7BBE671B6D769877B2151936BC23846FC
-:10A3F000EC26C463775435713D7A3DB76CDD644C0F
-:10A400009F4758C1F586379A8362E3DAFCBCC36B79
-:10A410002DF4629C5D358F2551FE3B55F27BDDF5B9
-:10A420006FF58A3C962650D03E4BE33AC1F5DB658A
-:10A43000F1BC31494F3D6C12FA09C7B956FC4DCAFF
-:10A4400067FB940CA919AB006EF436713DD3B19142
-:10A45000DB3DD78324D762FD24ED5F0D962EB1BE80
-:10A4600061D4B6CBF4DB62EB0BF4E48D423EA7DEA5
-:10A470002763EF73BCF7723CC3C26ED637C7D62FC3
-:10A480002AD2BEB6B89EBC5EC8F58D5E614FA437B9
-:10A49000535ED0A0714B02F93CB0C632B7A0D64291
-:10A4A00019C17C941038EC6326DF37223FEDF89118
-:10A4B000A227A8B4ED8152F3EFB603BC3167DE49A1
-:10A4C000B5E7B6F1FD37951DC7BD3FDBF96DA8F9BE
-:10A4D0000AF9E4157C6815EB65CA5ECA88F56E5208
-:10A4E0003E90AC5A498C4BCA1238ECADBD425EE48A
-:10A4F000007FEFC683F9CF77E13A952316F9D7109D
-:10A500006AE3769B621AEB8BE06F9F733E21F278D1
-:10A51000E39977D3FE3756DB49FBDE805E5E7FD85A
-:10A52000FBEA1AB841C3B8DD6069FD3156A83FD4D3
-:10A53000A8C7B98E857FCFE8378AF1D9E6534CC4D6
-:10A540004BFBC31B6365E382AEF31553B51E22BEFE
-:10A5500094E6DB23E7C3B7319157B763F0E51744BF
-:10A560001E82535F2F2EA9AFBFE0D0A7425FBF8DE1
-:10A57000FC7FEEADE07FB57118FF76D9383983A93D
-:10A5800078254DF48C1AFBD2148FC1F58D7640A638
-:10A5900083F215200EA417B121EA3BBF6111DF023F
-:10A5A00022CEA4363AF719391A70C0B1EE3460BE23
-:10A5B0001AF68B74FBB7AB34AECD6F66B3503E99D1
-:10A5C0006D5FE272427FA4547E9A5DDAF11B3CC655
-:10A5D000394BFBD4C78F207F4F8580F687D2F43B61
-:10A5E000C789BD37515E3FB9EA4348315E2F722EAD
-:10A5F00038BD9D02AF17E8B5FFE3D227D693B775F4
-:10A60000931E058F89F1CBFED8464832BC8780EB7C
-:10A6100093112C57623EC9121DFDDFEF7A0DDEDE6D
-:10A62000E0FE9D4713717AA33A7FEF6EB60F15B324
-:10A630007F2E56B97D7CFA13A9DF625E427AA76449
-:10A64000E0FE76B2274FF6D3A6DC252AE6A55DA26A
-:10A65000CEA47A9BF637A96B0BD6E726E0E7FE0C73
-:10A6600011B5508FDAEB4FCDF85E403A4F64785C0D
-:10A67000E344E6DFE85CFFC401398B4C3D31726393
-:10A68000D9F57352E86DBBDEC903B285FDA547A4B9
-:10A69000EC02D6FEA462458AE60140969F070BF8BD
-:10A6A0008319D92197A7772455D433277B34E967B9
-:10A6B0006C6E6E473A19FE9B324D2AFA6495E89A01
-:10A6C000A13AE7D3A67310F3159AA6F27706A36F03
-:10A6D00010BDA7D873B94C3C69A7D01383D1E2FA57
-:10A6E0002420CE5F03DE6CF1BC0717BDC116E7BAAC
-:10A6F000B4F11B16F914C33AC76B38E6A179186E8A
-:10A700002CAFC706C43CD8F50663FCBC755049683D
-:10A71000D5E0E3D59DF8941A475B75B80BB7F91AE5
-:10A7200048767536117B5FC63802850E0DF49F9E04
-:10A73000923EC4D6CB0F6F0B59520C1F4EE4BEC9CC
-:10A74000E898C5FC1DB44F752B2BCD6DC3BC4E19BD
-:10A75000306EFCC89FBF917B15FD51E6FF205C6BFE
-:10A76000A4D65F6B601E5C52C275B51B953F75FE2B
-:10A77000AEFE8E56B1FE18FCD1A1CEB5188754207E
-:10A7800021E2191E03F3F568E97B4AEB09D49E67C1
-:10A790007D53ED4AD2E9F28B7CB0A1BCFFBD95D7C9
-:10A7A0004FB37FA87766B9FCACDA6EA7DD5DE37ABC
-:10A7B000BF57C86B29BFF2AD1A6726BCACE1B9AC74
-:10A7C000D6E6D1B3581F52B5B8DF466E5100EDF84A
-:10A7D0009986DE8B21BE4A7CDF053CCF0DBF8828E1
-:10A7E0005C7F9F51B91DDB78E7A725DC9F4EA197C1
-:10A7F000BD18E1BC594C7EDD76DF887182E2894369
-:10A8000070B4AB19EDF92D1E3A4FDADDB6AFB6B024
-:10A81000FD77C43853F30F86B29C4E65C99F57DB52
-:10A820003C16EE5BE73BFF6E3FB9D2FC376C75DA46
-:10A83000C5E73A2F2F21E2CB2ACFFF858E63CFDBEE
-:10A84000F4F5C1F566E39D2F521C67CC2CAF6FA6C3
-:10A85000CFDBCB346F9136B08AC5717E2CF6317761
-:10A860005E9F062930313FF115BEFFC8CDCB63078F
-:10A87000CBE81F39EEF23F443FF90F021CC5FD56ED
-:10A88000312A7C0F7778BFC2F6CDE0F62BF72B4B41
-:10A89000313FCBA23CAFD11E8B9E4FCEBFCF23F01A
-:10A8A00095C0B35CE81583CE3FF72B646F78E02C3E
-:10A8B000C6414007C3963BC07A5DFB158AC7182284
-:10A8C0008F80559D89ED80F4D2624CF6ACA7737AE7
-:10A8D000EA073BE271986E0EB386344F5ECB22BC22
-:10A8E000948C7627E3E72EBF800D01D70A581770A6
-:10A8F0009380611FC14195C11897F7667482030266
-:10A900006E12709D806B053C5FC0D23E8277A9BC01
-:10A91000BF9D4A96F71F10B021E03A01EB029E2F2F
-:10A920006038C8C7F77118F7438283026E12F00CC3
-:10A9300001D70AB859C0D241824BCD5F206E117F3A
-:10A94000A7E6BF8BF30D40F89B0917DC3D55BFC050
-:10A950001F1DEC31A4C2F3436F89F8D3121FD73304
-:10A96000131D09CA5362FE42FA44E1B963ACB8BC94
-:10A970005BA2DDE4B97994D52B1ABFEE2DBA2EAACD
-:10A98000C56FDD79E2F7DEFF20FC6EF6D9EB9EFBAA
-:10A99000E7131D26E1E9EECFDD0EED2D2838A70FD8
-:10A9A00028D934C66B988D44FE8E5773E6B3DEED1E
-:10A9B000E3E79CBD3E9ECFDA2FF09BE8E0E70F83F4
-:10A9C0000B02D983D2F438E35FF8783CE1FB369E82
-:10A9D000DA61F27B8279B662C90FE27ED468BCB3D9
-:10A9E00042FEBAF2FF0AFD65771CE4DFF01D1B276B
-:10A9F000102ACEA7BB27F5CD2DE913ACAEE667CF65
-:10AA0000D19FD1A3B1C6C2BC69F11E248F4CFAE517
-:10AA10000CAB67E78BC8D43F8F1737F278B12CEABD
-:10AA2000D3384DFC3B066B09EE33EC798B18479A13
-:10AA3000DEAFBB5DCE57C7E74BE063E7A7C8F01CAE
-:10AA4000F533898F92207EB99F631EB21EBAF0E75C
-:10AA5000170A7B8D12E365F8F94BA5F69F15F232C4
-:10AA60004D3E4BCCEB7FF3D976CA610BF3816C3949
-:10AA7000B2E5EB7CE5E882E50437A4B6D2729286B3
-:10AA800014AD1B055DCEC5E72E2F45E4245758BFF6
-:10AA90005EAB15E7F926C90BC34721B9D5393EF599
-:10AAA0004BA2D49F846B7C21F62060E403A3F75271
-:10AAB000AD56F081C7290278CE58D09E1147F84A8A
-:10AAC000B224F43EAFB746E3EB7C756723C71F445F
-:10AAD000FF2E7C597F5A617F3234BAE49CE3FD7EBD
-:10AAE0008DCF2FAB4FDFF94D1B5F91085F191269B6
-:10AAF0000F6BF75151DFADBFEC7287C06FD4035BB2
-:10AB0000F977920928FCAE32A879C4778F7C9DB979
-:10AB1000F59317E56AE9F9CB55B57ABD5E2BBEEF23
-:10AB2000303DDF82F1BE52FBCE316D723F6811F3D2
-:10AB3000764EF3FE6BD443CBA6E6B35A7C2F15E3D7
-:10AB40009E2BBE27A7E35B959CBD21F444B5F8ADD1
-:10AB5000394FFC5E76E1F756C9F519B11F558BFFE9
-:10AB6000FBCF531E7E309DBF55AD238F766EFCFD0F
-:10AB7000E879E2F7CF6EFC4AAC5B55E3FC4A0397F9
-:10AB80000F459CBF548B5F4F65FC44BED8BA012B68
-:10AB90004EF61AF9E3BBB5750369650A3F0BB85E5B
-:10ABA0003FD7F1EFAF7AFC770F58CAD4F88F68EF30
-:10ABB000768CAF2826095BB5E33E5AEDB8E9F73944
-:10ABC000E87E7AE47D8E71CF97EF5FAC7AFC5B1DF7
-:10ABD000743F3772AB93EE9049F9C4D58EFBCDF339
-:10ABE0005CEFBF14F80635DDB10F94B2DFCF08BBC0
-:10ABF000F6839AEE90E352F5DF10F6CABBAAAC7F5B
-:10AC000052F4DF6CE353A1FE3D02FF7BAAACFF6B65
-:10AC100081CFCA2AF1F9BE5887A5F6CF80E07B1014
-:10AC20007564815F73A1794B5B7C49C98FE79CCFC9
-:10AC3000F4D077826F289A8EF14EE802B2C7FDC732
-:10AC4000C307795E495AF8FFC9B4C4F530C5B7BC2B
-:10AC500051D3711E67FB5D8A92B08A9DB7D5FAB950
-:10AC6000FE9374B39BAF7715300FA954FDA0BF7846
-:10AC7000FCA5062628FF0462E21CE9CC8D46D173B0
-:10AC8000022541792DB2AEC24136CE40ED46A33009
-:10AC90006F396EE313B3081F55E7F8A88A6915CB1F
-:10ACA000539EE3E7F36AF763FB87526C02F83D0EAD
-:10ACB0001CBF417FA21BF3C4D3B52AF16920EC3C31
-:10ACC0001FBF49F4F34E41DF80B77C9E58E7CC7636
-:10ACD000CA57EA6FE7F94A069894DF39102A7FAF1E
-:10ACE000C1580F8FFFEF14F94F23F8FD287E4F8CCA
-:10ACF000DF8F2EC4F65FA1EFF04EB57ACADE8F1358
-:10AD0000369D71F6608BF37B1E3B2EEF379CDFF593
-:10AD1000F862CEEF7ABC3315CAEB1A08F1F3814A18
-:10AD2000F8DB79EF76BD6125A5E945F994759C0BB3
-:10AD3000F8624E7CDF3EFEF1F641EF61BD185E6FBA
-:10AD400015DF4AC51B26E9AD515359AE371CF91919
-:10AD50003D42BE7C355A0AF532D3BB25DE0778FB6F
-:10AD60005082F243B458C2A078B4D807345C0F05BF
-:10AD70007CFAA4BD2E031E3BDF98F23A24C3A2F353
-:10AD8000470DD79134BDDDE4BCDA72FFFBB5315A13
-:10AD900027F51AAD13C998A0EFBADCE32CF45BFBDE
-:10ADA000FC783EE6B71EC0D2FB0739596CBDECF506
-:10ADB000733DAADD9030B4F9E4AA92DDE3C6E34B1B
-:10ADC00062FD856CFCD316E55F548BFFA355E26FE3
-:10ADD0008FC3F0FF1CEA5986FFE7B12C85FF534271
-:10ADE0001FD581D14B7BB6C1F52CC07AA330BE1ED6
-:10ADF00008F07EEB849E02E870E4F578055DD5D21C
-:10AE0000F3ACADD72AD0638FCBE87951CCC777CAE2
-:10AE1000CDC7B7053D8100DFB7B40309832D4DB819
-:10AE2000B8C4BC9C1078CC0C88B852BAE39CE4EA55
-:10AE3000A52AE93831352FAF8A79F9E772741C17E2
-:10AE400072959161E549DC4F9BEDFC850D8E7999FA
-:10AE50002DF893F1D9F3D2E99897DA739C975F555F
-:10AE600049CFECA979392DE6255F4ECE0AEAFF5E7F
-:10AE7000D4FF83A84F76E2ECC0EF06F0BC6CA13F94
-:10AE8000E109D44FED6FAC9E1C583655EF93A347A4
-:10AE9000EC7A3EAAD735594F0B14F407E9D706F0E0
-:10AEA000FC7B507CFFF1FDD1F035A25D84DADDC082
-:10AEB000E961ED6A0AFBFFD2E82B76FF33B05EEF63
-:10AEC000DA3FD8F5A285F56607FE60D78BE173E916
-:10AED000C0647F0D85789CF0FFEB00CFD771E57BD8
-:10AEE000E9D5E53B78A349BACFA10EC2199995439C
-:10AEF0000ABF5F21CD8CEA43983FEB4BE6A00ABB2B
-:10AF0000CBA3F1763E666FE1F9F10C1D9EF71BE8CD
-:10AF100082987080BDDF1355C81FB8D39F6C0BD4C7
-:10AF2000733C290FE0556E8FF586DA441C85E3B536
-:10AF300037F88111EC4F677861FF9F0C469EC7FA86
-:10AF4000FBE6A894CFFBFC9CBBC84EDCDBAB00BE91
-:10AF5000DF7B9D4A76E203AF86691F1E54CC9B2897
-:10AF6000FFC1520DB41BEF0EFCE118E6298FF7D696
-:10AF7000E8D255440FE19FF640A29FFAE776E776C4
-:10AF8000863FE603D3D685FD76713F06449EF3DD0A
-:10AF90006B0DCA9B3180DFDF34DCAE529ED2DEC641
-:10AFA000F91D38DE03ED1AD91D0FDC30BF97F2B959
-:10AFB000DB0394FB56173224CCEF89AC50013F04DD
-:10AFC000A98B1ABD6877869707F0CE2FA86BE4E3AC
-:10AFD000851702DDF3E7854C22CECAC8884AF738C8
-:10AFE0003D70C386DC66B46BDA79FE3223ECE5F89B
-:10AFF0007280906025C83F00C4C73B9B9FE7DBF38E
-:10B000001CC94CB62F7B8E18C956592F575DBDF001
-:10B010008842F9C915EB65AAAC97ADB25E8ED7AB85
-:10B02000787E2FF22935F60FE3707E773E76A8FC06
-:10B030007771E79AAFBB37E0CCBBAED4DECED3ADF1
-:10B04000442F1E664EE22957AE6FE7D9957AEF9DE1
-:10B0500079570CBF4B1BAEBF5794F7F1B2413C6F11
-:10B06000D81EA3FB221BC4FB86FBE8FE48773F7F6C
-:10B070002BF4710B24CACE439DC0FF75863BC6B32B
-:10B080005B940AF900EE7C3F97DED3947427ADDB26
-:10B090001B787ED1E4F7938DE2BB114825E214CFF3
-:10B0A000B2228B674EAD1FEFAAEFD2FAB1BF9B64FD
-:10B0B000F3C3BF9774C9895B2E7CAEFC940B959348
-:10B0C0001FBF4D72E21D91AB5A3FDE4C95F5B25554
-:10B0D000D6CB55574F1D91AAD22B6AA6CA7AD92A28
-:10B0E000EBE578BDC195AAD8D7470731BEE5BD428B
-:10B0F00073C08357049CEFAF0C39E0A165CEF6EA2C
-:10B100007267FBA1E5CEF6EA0ADEDE0CEEBF261D75
-:10B11000AF7E9DFCAFF35C272D5AF9FAE1F60AEBFE
-:10B120004AD3FDD8BE4E3100EF1762FB5556EC5B9B
-:10B1300045E33FEB827CFD5F17D01DF7D3FDA9D31C
-:10B14000D912E4F8DAF456C2D7D6BFFF220BBBAB54
-:10B1500044DE3D7E564079D830DE80FD3D7FCFCC49
-:10B1600006B4E7F6BEB682EEEFE87F979D376352EE
-:10B170003EA472EC9764BFECDDCEEF977EB4D6ECC4
-:10B180008AA3BD12F600DACBCC8DA27B3DF6C63C7D
-:10B19000648FF45F5DFEFE924FF5F03CA187D1EF26
-:10B1A00067FAFF80B877EB4171EFD6FD3D0695BB9E
-:10B1B0007B5AA8DCD5635239DAD3CEF3197B2CF154
-:10B1C000DD5917955FEA49D0F32FF47453F9F99ECE
-:10B1D000243D7FAA672B959FED49D1F3433DDBA921
-:10B1E0007CA2274DCF1FEF19A1F2B19E0C3D1FBAD3
-:10B1F0007A03DD9371EA3E0F7D1D520AFF392967FC
-:10B20000DC61F65667DCA121E98C37CCEA76C61BF7
-:10B21000F455F31DEF236DEF70C0A1D6258EFA8192
-:10B22000F8150E586BEC74C04AE89D0ED87C6E83FE
-:10B2300003BEEC999B1D70EBD39B1CF03B3EFD11B4
-:10B2400007DCF2A93B1DF0C5FBEF75E0171FEB73A0
-:10B25000C0EB83F3F97DE0033B1DCF8DFBF639E0B6
-:10B260008FCCB41E0B623C3413E1F6EC7189F6C14D
-:10B270001973CDDBF03B29F8B14CF204519E0F3F1E
-:10B28000637EEA72BCA70C94D48A1BC395EF91B677
-:10B29000E33D72A43D89F27AFA35C9407B578A6C46
-:10B2A0005F58E8CFD9E5D65329388C71499167A604
-:10B2B0005F0496C5DA05983EA1C34548E57650DCA3
-:10B2C000D243DF5165A424E59B309BD9FC2B1DF3B1
-:10B2D000E8DDFB6F90ECF253519ECFDED1A9350D26
-:10B2E000B0FABB17A926A6784DC3D775BFDDAF82CC
-:10B2F000DC0FDEB583C72BF517FC4D1A6B1F32939D
-:10B3000033D055B5DB8572DFA3EF944286B91CFDBF
-:10B310009A503C039B43588F7FD7C7EA7F3558200C
-:10B32000BFA164CE5259FDD89664B387D5DF2DFAFC
-:10B33000DFBDECC7748F6038F713B898FC9DCFD091
-:10B34000F8E1B6A3707B18F5D338AC2BB28E77FF3B
-:10B35000BEF8F748E34199DAEFEECD82C9DA05721B
-:10B360005FA77B38ED7909B61E8524F6BB6A82BEDD
-:10B37000A1DDBD43A27E764B2FC56282CE5E179DB6
-:10B380008817D2753BEB27D49D94D6B5F2E7CDE173
-:10B39000A97EF1FD667C7F4B4AC23CF76AF8A72282
-:10B3A0009F928C7FB8DEB664A4B2FC337216F25B57
-:10B3B0008B57E2DF839C7F8C6FB7B74EE7D764FD76
-:10B3C000F45158DE5AC06FD11EF9727B11BE4EF295
-:10B3D00089B54F52FB97606988B7433E8419DD9B5E
-:10B3E0008BB5935E12E3649DE3303EDE4ECFD322F5
-:10B3F000BEC8EFF5B4F344ECFAF8D7B55CE42932F3
-:10B40000BABDE3B59BF1FBEB8ED624DD033C18F20D
-:10B41000D0FD4283A1AFE4E89E7E1DE8FB5945B113
-:10B42000FA7E14E571E83EA9D83A75FA09F8654A3A
-:10B43000E1F76403213B0FBF82BD24EE1596C5BD25
-:10B44000C2AA92E86AE2EBD9EC85A9F8EAF4F1F72E
-:10B4500011DD72CCB9FF0E6C71EE7B71FD668A63F3
-:10B46000F747ABFB6EC897E7F6A52AF0F1E683FC39
-:10B47000BEE3BC9FF0B4F233A85C93AFA5F2AAFC84
-:10B480006C7ABF3ADF40F0AA7C33C157E69BA8BC78
-:10B49000227F293D5F99BF84E0F6FC522A57E417CA
-:10B4A000D3F3E5F92B095E965F49705B7E2D954BD2
-:10B4B000F31D542EC95F4FEF17E7AF23D8CCDF48F9
-:10B4C000E525F9F554B6E4FF8CDE2FCCDF44F0C55A
-:10B4D000F9CD042FC8DF46703CFF51829BF31FA6B5
-:10B4E000727EFEBF52D994FF18BD37F21F27785ED7
-:10B4F000FE1E82E7E6FB099E93EF25B831BF8BE085
-:10B50000D9F9512A2FCA3F4065437E2FBD9F957FB1
-:10B5100088CA99F927E8796DFE712AF5FCE7C57D9F
-:10B52000D14F5119C97F95CA70FECBF43E94FF1BD1
-:10B530008283F9AF5319C87F9B4A2DFF3C9595E64E
-:10B54000A9D2F74F6B6086432E56E72F72C0574E35
-:10B5500038F7EF953F77EEDF2BC69738E065C79C4D
-:10B56000FBF7D2A39D8EF78B8FBCD3015F9273EE56
-:10B57000DF0BB3CEFD7BC1814D8EFACD998F38E0C4
-:10B58000A611E7FE3D2FEDDCBFE76CEF73DA2FA9C4
-:10B590009D0EB861AB73DF9E050FBBF2C90F3AEA8F
-:10B5A000D7589F73D40FB77FC575BE92E5FADFFCFD
-:10B5B00086D38E6979A1E8394C7CFF75F4DDFEA94C
-:10B5C000468FB86748DCDB2AEE4773CF679DD00310
-:10B5D00033F2DC7F8A8A75578FEBAE20EF89D91959
-:10B5E000AFA17EB0ED8C19F38D2FBFC8E0D373559A
-:10B5F000B397C1B69D61D7AFF8BB15AA399E6678DF
-:10B600007A8FFBE8DE3929D26D615CEDEE1312DD35
-:10B610006F57371B449EC0755D3C3E01F67D3A7402
-:10B62000BFCFF01CFBFDE66B298ED1C4E123A11D29
-:10B63000EB308E3AECB5DF7FFE5A6AEFE7F0FF0899
-:10B640006D19C2F775358763681FED2A71BEF93F22
-:10B65000432AF1B33664FD30B46CEA9EE9E3D1E4E9
-:10B66000CB21F67C9B969C875776E33DF7788FF34A
-:10B670003AC5FA11D65BAF58AF84685F70FA0FEF26
-:10B68000C7DCD765742FE04FF0BD1C7996F6A3BADE
-:10B69000EBEFA3FBAA86C30C9F50697CFE3E244FB0
-:10B6A000EE3760EF37F3299E4AF6E05013D0BD190C
-:10B6B000C3B58934DEE797FE8E06874CA43BC3935F
-:10B6C00095447EE2F025862D178EFD092091C33822
-:10B6D0007E301932D05E0BC151CABF88C004953A82
-:10B6E000E892E3BE6D9BFE399C7EBCFF3F44E7F0D1
-:10B6F000D6B3E314674D81B8BFFA4D7CCEF8723AE9
-:10B70000B4AC345FAE91EF039D8DFF28B327918ECB
-:10B710004781E33B86FEA98478A6F466EAD7798F51
-:10B720008472FCEB243776BC47915769CD488FB8BB
-:10B73000C7A18BFD43FBB03E513EDEE3BEB7E15CEB
-:10B74000E33DD1B03BDE13A2F3E453ADE5BF83B3D9
-:10B75000E33E63ADE5CF7B9F157EDFD7C479EF3342
-:10B76000E2BCF72BC2EF3B2CFCBE2FA2DFC79E3FF3
-:10B770002DFCBECFA1DFC7E027D1EF2BF8BEE4C977
-:10B7800012F7BF2CAC95849C6D27FB3E28EE2B62F4
-:10B7900023903D1F10F6FC98D93713FD8E602D6461
-:10B7A000D14FD87ADD41FA7E969162E2FD0077FCB6
-:10B7B000E2F599FF85C1F11838EE770AB4BAEE4B7D
-:10B7C000A8348E92B5B0DF20F31B326669FE9C73FD
-:10B7D000BF5A16FCE7D52FBFE7C7BEB78D71328DB4
-:10B7E000F21744BA7594ABBFA1714E897140FEC186
-:10B7F00011BACFF07205CAC9C1B471CE51FEB68478
-:10B800005DBF4FE1923FC0840D46EF3CF1BDA611F4
-:10B810004A37EF61EF9FB84F757C9FED96C7DED733
-:10B820007C14871D5CCCEFE579B17EDD45E80F7EA9
-:10B830007AEF9B4D889FFDDD52BFE98C5BCCBB0F3F
-:10B84000A4C27C9603623FE8D7CBCBB97DAF78FF2B
-:10B8500058F97A0F8A7A5F0C5A7D61D22B13741FC4
-:10B8600064FB89AE9B11DFC77668745EE36EF7C533
-:10B8700060726778D9743C0BDBA3BC9569BFAF5C81
-:10B88000FBE53FEDFA29946FFF70B8BE74FBB697E5
-:10B89000BB1EAE80FFC1E2E3A71FC376F3623CCEBE
-:10B8A000D4DB3044F3BB6B07F79F5F5CB48EEE993B
-:10B8B0001DA8E5F356A4DF2F54E04B7705BAFEAA86
-:10B8C000527BA93C5DDF2CC717C6D76315F8F29DE4
-:10B8D0000A7C3D5001FFBF2FC1D77988F73CFC7D22
-:10B8E00038D6AE770EE32BFA6FC85798BE1E8AF48F
-:10B8F0007BAC1C5E55C8EBF805CAEBCF2BF0B592BC
-:10B90000BC4E5CA0BCE64BC92BE27D01F22A47CAC3
-:10B91000F3B592BC06231726AF33CAB5AF425E67B4
-:10B9200097C3BF0A796D2E36BE0F8216DAD5A75A95
-:10B93000F939D9D60E7E3F99B785EFC3C1E39F256C
-:10B940007B6980ED5733DA71DF3EF1E01D6D53FB0B
-:10B95000B47B1F72F7E7DE47EFF8DF9FA17D342449
-:10B96000F67D1B1FBFE1EEA7FCFD16E73A6E007FD8
-:10B9700097A9E0F72E1A926FF578CE7D3E60F2F12E
-:10B98000818DBF96CE159FA673C59AF60B1DB77C09
-:10B99000FD59DD1766177C28E2B40B666FFFEA637A
-:10B9A000741F89E867B662D1EFF8297035BFFF646C
-:10B9B0001BCF1F92B77FF9B1934B0BEE9982C35205
-:10B9C00061BE90BCEDF063270BF0CA63FC87C79B98
-:10B9D000298F31AE5F11A07BEBC6CA9F67FC40EC9C
-:10B9E000E3DF17E71947C479C677855DFBA2B06B23
-:10B9F0005F10766D4ED8B57F2BECDAE7845DFB0DDA
-:10BA0000719EF1A0388FC8F41C20784F4F56FC4E21
-:10BA1000C993E2774A0E8B7CC967F9B9454F8EDB33
-:10BA2000C78F7FAD19F93145873B8EC5E9B0EF4728
-:10BA300077D3F12ED379DFC6F52D41C7BC5D6738CA
-:10BA4000E322D7C6663BEA5FA3373BDEAFD52E7550
-:10BA5000BCEF80A5CE384BFE0A679C65C21917B9AA
-:10BA6000F2E7CE738D95E3CEB8C88A63373BE32CFB
-:10BA7000479DE71A4B8F38E3228B73773AE0CB9FD1
-:10BA8000BDD7517FD161E7B9C6A54F3AE322B3BA1A
-:10BA9000F739E05AEB61E777F5EDCEB848D874C6D0
-:10BAA00045822D5F71C0EF61FB3DEA4FBFE18C8B9A
-:10BAB000F862CEB8C84F43FC1CD0F6B359BBBF8B5D
-:10BAC00090BF19CA5DC9E4FD8928BFE7FD09485246
-:10BAD0009E2CC09F93DFA04CFA0D16AD7B59E81D3C
-:10BAE000B5E1E48FD1AF517673BFE70E69454E2BB8
-:10BAF000F47BBCFF2215CA87ACBBFD870AFD7B4DDA
-:10BB0000F277940A7EC9F47EB9BE9ABAE7BC2D8D4D
-:10BB1000F954CAA45F72BDCB2FD996A1DFB39A5155
-:10BB2000DE2F9936CE39EA9FD391127E49CC43FC61
-:10BB30003314EE97EC32855F02FC7B29BB3F5BFF41
-:10BB4000A80DE5F5887D5F8BBA88FB0D4AA8F879CA
-:10BB5000B67DDFA4BAB87C7FB65FF37711714F5C16
-:10BB60000D88B8FEFF978FB7523EAEAC29113779DA
-:10BB70009BE5A354BD73950F057506E5837C70188E
-:10BB8000F3417C2E581370CDFDDBD6E1F74DDB8100
-:10BB90009FEFC02BFCDED552FDDBF95DF155B7966A
-:10BBA000CD83B0E3AC522D3FFF8CB7DF4AF993A7AA
-:10BBB000D818E5EED576E75BC8D114FEE81E7ECF37
-:10BBC0005EF4DCE79FEA785C28DEFD81B2F68AFB52
-:10BBD00077C1E256F97B764705FEDF7E7516D9A957
-:10BBE000BBB6717DAC747FF37994C74FA33C9A14B4
-:10BBF00057D12E41BAB62974AF5AC8008A0FCE0D5C
-:10BC000041B6B709F96AA6F13E2FF647E7CB93F2A2
-:10BC1000B9CD79BFC9EF74BE9EE389F27CADF8BBA4
-:10BC2000062B0F77D0774206A4F45A5A3FF07A9445
-:10BC3000F023391D6E37F9EFDF317C747D7A7B3765
-:10BC40005EEEF5A96CB98AE24AB3257B7D064DCC40
-:10BC5000D739150A95BDEF6D5ABFE7B81EBF306DD5
-:10BC60003DDED0F78F38EE9888236D677F05E79D1E
-:10BC7000EEFEECF568C3DF7EF56EFABE6578EC4E3D
-:10BC80007E6F71A3B81F6C8CEBC752781D1272B413
-:10BC90005BD88587F677F6217F07D8BA29D4470B7A
-:10BCA000FEF2BD81243F5FACC3F23307F877DB17A8
-:10BCB0003FB4453CDF44CF1744F9FD470B983C6146
-:10BCC000CC3BBCEC158DBF7F59A7FAD1F1117C7F1D
-:10BCD000B178BFA7BDCDC2DFAA8CD4CEEFC4521EAF
-:10BCE0003B4A7A97CDB9B5C0C07115FA1D9DB923ED
-:10BCF000F038D231772CB1E13AF40FD2C07FAF2DBA
-:10BD00009ADC89F21AC900F597060E1BDB759ABFFB
-:10BD1000F858721FD56FE5F5D97B82E7A6F8FBE0EE
-:10BD200018C317C733D97B03DF73FC1BB7E814AF05
-:10BD30000B8D1D4DAC257FC46ECFE1865B787B6596
-:10BD40008CD183ED6376FBF10CBE9F15E5EDD5310B
-:10BD5000BE3FEE69DF44F7EAB1F1E9DE29AF78FED4
-:10BD600084E07FBCFB5F336BA35379196966FFAE38
-:10BD70002FB29EED756FFF0E60BFF80E49D3663F80
-:10BD800072B2E05E06FB77430363CEFDF94C0D5FB4
-:10BD900097FF1DF5CCB2CAF7B3FD3B5950D3F30062
-:10BDA000800000001F8B080000000000000BC57D14
-:10BDB0000B7854D5B5F03E67CEBC3293E4E43D79C0
-:10BDC0004D4E2040944007081810DB495444458DDF
-:10BDD00068DBE0B53A04E419202296A0D89C9004D0
-:10BDE000F20206EB2F111126281A2BE86041B15AF6
-:10BDF000EF80B9147B6D9B5A2FA2A28DA05114B86D
-:10BE00002915C9DF5FAFFF5A6B9F43E64C2609EA4D
-:10BE1000EDBDF93ED8D967BFD77BAFBDF60E6B102D
-:10BE200059C8C6E8E79B61F09F1A63CC5725B2500A
-:10BE30007E58BE32C3989F3BCC58FFF64B8D79D7C6
-:10BE400078633E798AA1FDF91B18EB744246F2D85B
-:10BE500018A4D2D1DB6CA56318AB4D5E4EF9DEBBE6
-:10BE6000F4726F0CE6F3E418912533B6AD400C3450
-:10BE7000E532F644D5F2C3C320BF3659A43ED7BA43
-:10BE800066C6FBA0DE37F8F3A3FE69433563212BBA
-:10BE900063DBABFD946EAB6EA5B43E79F0767BB5FB
-:10BEA00076CF57DB58681463C16A99F2CF56BB2826
-:10BEB000BFAB5AA1F457D5F9F4BDBDDA43F927ABAE
-:10BEC0008B287DA2DA4BDFDBAAA7537E6B7529E5B1
-:10BED000B7549751BEB5DA47E9C3D50B28F5575784
-:10BEE00052BAA1BA8AEAB554AB94365537D0F7C0E6
-:10BEF000B860596941FF79D6CA00871428BFDA9320
-:10BF0000510AEB79FC6A56168C5A4FA07A1B6500D1
-:10BF1000DA44C6DCCCCF1C85F07B2B633B15C6EC2A
-:10BF20009D7ED50970BD74177CC37CC8AF3A209F35
-:10BF3000FF04CF6FD2C6A962CCCBB05D150BEC0469
-:10BF40007CD8143F9B0DE379B35576732C63376926
-:10BF5000E3E07784AF9AAB32C4EF098BB7544EC19C
-:10BF60007EF8F8313E9F00CB63692B588D05D28453
-:10BF70008A2E668771E21F0A796D900E6BE864BEA7
-:10BF800002C4AF586282799CF38B011374AD4C6587
-:10BF9000A208E337BB383D44AED3DDBB8D852640D8
-:10BFA000BDE42E3B8EBBAE6A663C8B020F3D1DDDB1
-:10BFB0002EF6D127FCBB2410C60FF06F9D7FF0F644
-:10BFC0006965C6F609DE88F605D01EE0102806FC75
-:10BFD00045A1B7F82263FB584F447BD7E0E3C7F491
-:10BFE000DEC8424903D3F3294B790DC25DCF8FECF4
-:10BFF000FD21D57FD729131E12AF5FED4238C3CF85
-:10C00000550867298B059A04CC7AD902C89BE1B7F9
-:10C010002699E76D90374990F7403D55F1B2B198B8
-:10C020007ABC2C0E532FE50F997D1BE589982FE5DF
-:10C03000DF651FD141E012E82203E58DD2E0CD8219
-:10C04000FC8FE1F7298CDD2C8F9EAE42FEBCD927F8
-:10C050005641FFCDD9626007E075A57B7C0CAEFB35
-:10C06000F196C1F9B416F974545FDEE4F43201FAC2
-:10C07000C9AC90C79BD8C0ED1EAA10A707A2F4BBFD
-:10C080005BA3DFFA8A99F2085C7507CA30C6AC4E2A
-:10C090001695DE60BDBB71BDE664BECE945B4B29D8
-:10C0A000CDDB35D9560AFC703E7670FC3546CCDFC8
-:10C0B0000E4306A3E1519B57DE1B2F91BC3C3F86EC
-:10C0C000D3D540FD366BF2AB3720B24EC4AF544AE5
-:10C0D000F235E5561FCB83F5AC4B17034E58CFBA5C
-:10C0E000AF6F69C8057E5237892407F4F9478E6B14
-:10C0F0002AE8124C50BEEEC042A6C0F8665729533B
-:10C100000B30AFCBEB20C3FE1DCE90175390980C95
-:10C11000D7EFA8F2A998B7B854E2E775E917EADBB8
-:10C12000102ECD7E91E4FBDA2C31C0044A9913E63F
-:10C13000736E35A37C4EFA838C24FD57309F49D013
-:10C140000FFE6E42783355C475E4325A471E3BCC1D
-:10C150004CD0CE3686799AA04A7C1E3B80EDD6A57F
-:10C160007F79C08AEBBB97794628D8D847F2080870
-:10C1700094A11C595B2953FDCCD6B1C417FABA7FE0
-:10C1800062F17D1ACE3716179767EBBE364595AF2D
-:10C190008735F9183300FEE21378F97973F05A9471
-:10C1A0009FCD90DF11859EEC5ABD47E5997FCA5718
-:10C1B000FAF8532F7FD7A910DFEAF9CC5E0BCD3BFD
-:10C1C000EFD69FC5E3BA06A287B51A9DF9E3B9FC7D
-:10C1D000CD9B7A8517E17E0EE68AFC1E597F51BC05
-:10C1E00042F3D0F392D328A72E7E7E12C9E3BC532C
-:10C1F000AB383F640F4EB7FA3CCF671BED04316F8D
-:10C20000818A7C5DAF007E15B417D63091EC02E6D2
-:10C21000615C45B138C83FB15A935FF95DF64B2078
-:10C220006F7BCBC410BFDBAA4A4415E09E932B055D
-:10C230004C00F7F82CBF97813DE2286002CE1FF03A
-:10C240003D322105E96012C1337B754810A1D31E30
-:10C25000947D29B4EC3AD7243E0EFE077C3F26019C
-:10C26000D6E9DD2570F9E0E2F2C10CD3B191FCAC66
-:10C27000624118CFF19689BE033F841E807C8C2CCE
-:10C280007A509EB678D6A4221F3A1218E9B505D77F
-:10C29000EE20B905F2D6B30556B4F46477EA32C895
-:10C2A000E7B9F87A74F8C414580CFA61C871A4801C
-:10C2B00017FB7508CCE3F70CA247BE6DBFB600B301
-:10C2C0007FA77E4191A4129F683FEDAA80E3E0BA68
-:10C2D000A15F2B7B99C639A78DC34C6F1C467E8905
-:10C2E000F981C44C51F865C0714CB70FAA37AA8EBA
-:10C2F0002DFC5347183DDF95109BDC3D1A7EB98C11
-:10C300005DF60D2A0E13103CCE03EC4E13AD9FAD1F
-:10C31000413CE7C8DCEE509CEAF00D50FEF86A0B99
-:10C32000C90FBDDFF3D50BFED401486C29E072BF05
-:10C33000E6436B09F6533F4E0C58A15D47CAB48CD7
-:10C340002EF8FEC4A62F73717EBA7D5AEB31F245EA
-:10C35000CE6A4E977ABE55E38B5A79707DB241EF23
-:10C36000AF65F07A0F6BF59E75786B918E81D20573
-:10C37000E4CFA2E3D36FC3F96E7FC0C64C51E4C2D1
-:10C38000B30E5F73C2C4FEF30C6F8FF43648FB5FCD
-:10C390000ED67ED2BBD3DF6583B77F342165E0F64E
-:10C3A000856F4EDF32C4FC1F8F3EBEBA1DDBE5B881
-:10C3B0002C0CF15B93BE96F0DBFC80C563057EEF31
-:10C3C0001833CD8578AB4BE0788BD2EFB383CD0BB0
-:10C3D000E05236C4BA5E18AABD30F8BA5E1D02AE8D
-:10C3E000478780CBA1C1DA035C5B8798FF1FA3CF8F
-:10C3F0005FCDC179E7645948CFD464035C518E2383
-:10C400005C597F7E88D2EF3B43C065287AFDF07B84
-:10C41000D2EBC9C1C6BF087AFDDBF7A4D7FF3B103A
-:10C42000BDE2BCBF07BD4A89DF8F5E9D8983C375AE
-:10C43000287A4D1EACFD45D06BD660F3BF087ACD8F
-:10C440008B36BE9539BC2ADA45055C9F2F281649E4
-:10C45000BF9BF3B91E761C7BCA8BEBAA037D955458
-:10C46000847AFBF8C34B0BFBF474A41E8AEC2F52A6
-:10C470008F2EFDDB93A4479D9ADED7E7635722FBFF
-:10C48000F99741EDBB6F3B6E8C8B85EC63FBDAA7B4
-:10C49000FBFEBBC733EAF9180F1F9FC1F85716A15F
-:10C4A0007EDDE541BA8C2FFABEE30E5E3FADECFBBC
-:10C4B000D9050B12C12E70F4D9059955BFDEFE5176
-:10C4C000525F3F999297C9403712BB8AEC3756C1E9
-:10C4D0003C3BB1B86ACFF68F26F4D903007F01FD4B
-:10C4E00023FA38A68AE0F68FC2E6D53B9769FBB4FB
-:10C4F0004ADA17E5C95362908ED7B50C6E2FBFA1EB
-:10C50000E9F1DF6B7EAAC39A9FEA10FAA920ED40F9
-:10C510003F15A407D14F05E521F45341FE55CD4FFA
-:10C52000F58AE6A7FA8DE6A77A58F393F9D14F4634
-:10C53000FEA880E68F6AD7FC51414A1BAAF753BA7E
-:10C54000B63A44F5DADB5E188EF0E85B07B7DBF34A
-:10C5500064DDBFC7D7C158298B86AF1B3C26C3FEFD
-:10C56000E2FA7C87016FD72A4986FC35AE4C43FD41
-:10C57000ABE5E186F22B6DA30DE5C56C8221FFA32F
-:10C58000DE2986FA57F49418F2977F7A9DA1FEE48B
-:10C59000AE9986FC65476F33D49FD8596E289F703B
-:10C5A0007891A17C5C68B921FF83FDF719EA8F09B6
-:10C5B000AE31948F6E6F3294A7953D18E167DA62C1
-:10C5C000A81F5FB423C28FF42B43B923FF7943FE26
-:10C5D00026D0F728FFECCA6F0CEDACAE8386FCBF0B
-:10C5E000C531DAFFD89D41AF378A3DF9553CDFAF01
-:10C5F00082DD5E4CF632C8B1A671D8BAD28FFBF19B
-:10C600004CF81DED63C0AEC08643EA31CA1D5385A8
-:10C61000C538FE10FC8C1E00ACEF861FE4C7AFF4DB
-:10C62000FD6CBB5DFD218E9FC7E5B02AABE47F8822
-:10C630006CAFFB8BF2DA67C563799D5C2247930789
-:10C64000272CBE93E1FA2172FF9BE78D655E1CAF3C
-:10C6500042F797717967E25558E6B16B0E0BE8FF28
-:10C660002A7B3501D7A3FB79D6697C5AAFF991AD06
-:10C67000EC72F2639CD3E43F334DF50C269F22E12C
-:10C68000F56DE5999814B9CF9911FA18C7AF9002D2
-:10C69000D1F4A49EEA722CEFAD3B07C58F0E5F1D4F
-:10C6A0008F2639E845BD6A532A59B9B33F9C4C5986
-:10C6B000400F71FFFC75E72619E5F839F64AB177A6
-:10C6C000D845ACB7EC0E5A878ECFC87AFA7EAB0548
-:10C6D000F14AF291CBDF5A0DBF6291770DC2370E4E
-:10C6E000F6D1B8FF133D21D6F51DFCC08EFC4443A6
-:10C6F0005E726618EA9B3D952C88FE5B1887113D9B
-:10C70000FA18FA73F11FFA4B4C3287F3C07C773971
-:10C71000F909CE45D82103F11F0EF1CDF0A1F9F5AD
-:10C72000BBF277C7DC54EAFFBE78A6F95F549EAA35
-:10C73000EC4DA49FF2228D8098F2D3F760DE0B0FB0
-:10C740009B49CEFCE8ABED871E03BE341559E526A8
-:10C75000F20CF90FFD16CAE77A6DA5985F786C8C1C
-:10C76000C50DE5473280085C585E1A8772E03413C5
-:10C77000A7A3DFEE347B336E42989CBB27C942F2FD
-:10C780008535988F77D9707895CEB1EEF2F3BCBE2F
-:10C79000AEF9ADC6FC3C3633558271E63D646601A8
-:10C7A00000D642261DEFD2E10074302789FBDFE777
-:10C7B000B3CAB5328C5B6FE6E7364B5E1C63413C17
-:10C7C0002C9C20E79AC6F5CDE3FE2491EA7F06F47F
-:10C7D000A658FBBE2F72062C28974FEC9DF093CBEA
-:10C7E00019F613589B81FECE04B04394FEF09DD3FE
-:10C7F000609CE750EB889C37BA41069B87D42E7823
-:10C80000A3F9D51B9304031E6B6DBFD8DE05F3F4AB
-:10C81000D64ACCFE43C84BFC5C493D161BD889F276
-:10C82000BBA4F2A92E8083BAC62AD742BAD9F18B0B
-:10C83000E7B07E15200CFDB9CF2729348FF376772A
-:10C8400000CF1940DF5C3633F6FBF7FBE23FA9DF90
-:10C8500057B0DF94FEFD2EB17559D09FB84CAA9CFD
-:10C860002E88E857E4F5AC669F3713FD89FBC78532
-:10C87000321543BD868BAC7758187651F5A68B835D
-:10C88000F47746936FBFDBF5B805E5D6E95F7D78B1
-:10C8900023EE8716BF6C6236A87766572C0B91BDC6
-:10C8A00017B0A0DDBA68AFC91BA07C68D22DB1E17A
-:10C8B0007C5D4BFD2F7E2E96F6538B9EB706664011
-:10C8C000FB452F9C18CB401E9C59D3732813E1F7CE
-:10C8D0002B81EC67A6768DBD05BE2F92D89DD1CE5B
-:10C8E0003DFF9AC4ED8E532F39CA90DE84F603774C
-:10C8F00050BFC19F9AAD617AEC489299F009F5C892
-:10C90000DFAD3E2D0446087C7E378F099F5F0DAF5B
-:10C91000F734F7E72EDA6F0ED8717EED6D161FD45F
-:10C920005BD6FE37A2EF2B9FDB1D877058B6DF6802
-:10C93000AF2E7EEEEBB55300CF8B4DAC6706E9F121
-:10C94000AF287FCE6BEB31911CF2C60920B79692CF
-:10C95000C8827ABFFE64DA7B50FE99CBC4EC200A11
-:10C960003EEBFCD8F232E67DCE4AF4682FDB6FE472
-:10C97000C365ED272C382F59643D59C0E83FFC2290
-:10C980008C2F59FFFAB00FB6A09C5D166CFC9B096A
-:10C99000E86DD9DED3EF22DD2D8BE0E7CFF097F401
-:10C9A000FEFAD29A1CA92FDF9884FE72D60E9B9FA6
-:10C9B000C903EB4B9DBF17EF3EB74D85F14F3DFFD0
-:10C9C000F93615505EF15F7FDF763FEE8F5EB5CBB7
-:10C9D000289796FDEA3FE25818FC872573F970E620
-:10C9E000E9A79EDC027038F38E95A076E6B79FB873
-:10C9F0001580FB993DFF3715CF9D56FCF6EA34A410
-:10CA0000B315FBAE4C1B6C5F84741BB086E33740E0
-:10CA1000F855F6C33869907D454B23F0726ACF799B
-:10CA20000B9E0B7D29B01E94BF4B835F5BD03E3BBA
-:10CA3000E4653D08A7D7F69E38741FE44F039EAC0B
-:10CA400051F004EBCF1449AF843251BF2CDD7BCBC6
-:10CA50004D5714626AF6288827D643F2BE1F7EDF40
-:10CA600002FC16F6E137B2FC1CFBCA82F05FB60B83
-:10CA7000F03916F10AF81CDB1F9FA7F197C9FDF1E9
-:10CA8000599C6CB4FBCEB18AED5BB0706F12E17F44
-:10CA9000207C2ED9F7E341ED2C5D3E0C05E7050225
-:10CAA0009F576CB2F7E664E4DBE71DAA8BE33930ED
-:10CAB00003CACEEC3EE76640279F9A7BEE4038F4EF
-:10CAC000FCD62AEF80EF8B7EFB36F1DD997D7FB6B9
-:10CAD00020FEE1274E98047976E1E74D06F9A5DCC2
-:10CAE00006674B58CFB4770B31653DAA87F047F9FD
-:10CAF00043C087848FC0CDD31594BF81145AF7D219
-:10CB000000E78FA58103B70A63FBC3BD3959D4F58C
-:10CB1000D605BC0A4588CF0FA721FD0D844F7DFDAA
-:10CB200032AEFF32287FC2C8BF91F59702BFE2FE46
-:10CB3000A81F7E0307FE88E99936AB24802D740672
-:10CB4000ED04677FBCF7C19FEBE76F6B1FD747F022
-:10CB5000BBDE5E87D350FC3ED4FABE2DFCEE4956B8
-:10CB60000C74A4C3F1D457D1F5411BCA8F8908C7EF
-:10CB7000CAE919C3FBEB33132B553385BEF9AE0D50
-:10CB80009A48CE9F6A07BB5CE82F2F96E2396E94D5
-:10CB9000719ED3E4D4D2FD07C6A25C3B75F0258D0F
-:10CBA0002E39DD2FDDF5A145D5F443205C3E0F7015
-:10CBB0002EFC9236EF65AF44EF6FD9AEBF45EDEF77
-:10CBC00033C9FB539CFF679D66A642179F054D51D5
-:10CBD000E3191E4FE6FAEFC2BA63271D8DC77D41E8
-:10CBE0005C8C82EBAE5DE37D1BCF45D537CD74FE0B
-:10CBF000CF24CFA75628AF8D8D51D08F571B378F9D
-:10CC000029617ABC2E024E92AB94CEEFA4E4D242BC
-:10CC1000BEA70B18CE7FCD4010E1F306BD9B857AF1
-:10CC2000E983719F98719D7F8DB023FF2AB1B5690B
-:10CC3000D0DF5F55C153A344DB1F18FBF7AD36317E
-:10CC400025ACFFA5D69E0F703EEC5FED0CED32D308
-:10CC5000AB7601E5C9B26D66DA7F2D836D15C2ED45
-:10CC600093C7EC0115F29B7F5D7D07EAA5FFDC66AB
-:10CC700065781EF1DABE95DDAB502E3D2A30F4A367
-:10CC8000FFE74BD55FA25E5EB8155607F264BEA300
-:10CC9000E7496C3FFFB94C560BED3F178293703359
-:10CCA000DB9D129A84FB90EEDDE91E95FA797129DD
-:10CCB000F67BE63907F57BE65FDFA671CEFC6B2CD1
-:10CCC000E9357DFE606F2BE17A1CEC6DE5021F906B
-:10CCD000BD1D96877116639ED717BED1641ECABF4D
-:10CCE000C59802DD2FDE1FEF45FF4A583DEA6799E0
-:10CCF000B5E7E71EDA7FAB1922ED9D4219C88F8B8D
-:10CD0000DB8DE37FA3C9BB65969E79BCBE3F83F3F1
-:10CD10006D27B573A668F4AA9547B6D7EBC7A40CE0
-:10CD20008BE887B75F6A6595D1F8204DEB7771FB8B
-:10CD3000D7A38CFD71BAED3F0EFF7EAFC0E340D8A4
-:10CD40001E3BC5A35558422313816F5FB0B005C881
-:10CD5000BF1571A1910930DECB9ADCAC88813C7C97
-:10CD6000CFD0E681F531CF6C5D6710AF4B5EB4D3A9
-:10CD700079CA9217DEFE12F1790A610C183B95D23E
-:10CD8000F9E5FD4007A71E333115ECB525D690FB1C
-:10CD900051D4537BAC6C07F2F7ABAF93DE3AFDBCDA
-:10CDA000551CEC9C7A4910A8C1D67F1D6A09CBAFEF
-:10CDB00074621C8E576CC37DC36153A006C6AE92CD
-:10CDC000BC6B9EC3F51D36D33EE3EC5C968FFBCA6D
-:10CDD000B32CC3A312FE95B725285FF97BB3102DA2
-:10CDE0003EC9DC0B427D02F041EFF54C8154EA1D57
-:10CDF0004EE94A4BE52894BB26191657407E02B2ED
-:10CE0000DBCDC91E361FD29589CC87F063CEEB2EC1
-:10CE1000F0D79F00A5CB1F51D2B0DD8F52CC34EF9D
-:10CE200045A9DEEB53483F3A65B22F343A55F7F146
-:10CE3000799E17623C35189FD37BDF9D08DFE51F85
-:10CE40000A4A783C43643C6895A4BCAD14D27A4944
-:10CE50001EE5C9310CE17A563B773F3B57894F08B5
-:10CE600093CBCDD532C98FC66A17A5EBAAF39942E9
-:10CE7000FE350FE54DDAFAAD052AC507214FE38FE0
-:10CE8000D559EA453B0FE784714126A78FE8C8EAE8
-:10CE9000AA24DF94CDC9681F6B72AA6C3EA46627D2
-:10CEA000878FC9594AF0B16879A97506C113DAD3D9
-:10CEB000F7AB537D77233C6C59971AE4922579BCE4
-:10CEC00021DF0F5E3AFE77FF4FC18D119C1AAB6DCB
-:10CED00094AEAB2E2278D5577B29FFBF00B7D694EE
-:10CEE0008908B7294CB185C3ADC4901F106E8F005F
-:10CEF000DF2487F30DC011F986C5787646597F6423
-:10CF00008AF11028A81FAC6EA554FF9E3880DE3E23
-:10CF10009F2268F1B0BE1A338E23737F0B4B565994
-:10CF2000D6A43EFF2673A94CC13CF22AE2E5680C68
-:10CF3000C16EF9FB76F21B9B64A93B5CAE2DBF4131
-:10CF40004943F965AA7A9C9D088B4733CD28B52BB8
-:10CF500004570F9D53D66A7AB3FE02FE8C7CD05CD8
-:10CF6000AD50BA5EE3878D1A3F6C423C631C8987E3
-:10CF70009F6BB64C67A417FF0FE4F93E3EC4C2E3B3
-:10CF800046123CC19019F04D3252A13444F1BF47D2
-:10CF9000AD8111B9143FE545FA4838BA8AFCC78C0F
-:10CFA000055DE84F4BD0E0C65E1996302B9696672C
-:10CFB000E67A879978EA37A33D1E09D75ACF411BF5
-:10CFC000EEAF079A4FF1070B051CEFFC2C42134BF9
-:10CFD000BE3D78B41CCF4F5B1CA457533D9539E838
-:10CFE000DF63C7AC449F4E8F4F981F86BFD401ECC0
-:10CFF000BA55A9D77E8C7CDB8DB20CE8F0C1D6E1A6
-:10D00000768473B339E84279D79CC0F587520650CD
-:10D01000B8ACAFDD9F3439185768E4775DBECA53AA
-:10D02000C71BE85797AB895719E95C97AB2FA570D9
-:10D030007B6D516AE9799C4F52EF56E2C348BACFF3
-:10D0400093A794F992510F304F13DA6B6833A21DF6
-:10D05000F7A110E0F4CEFD5367BB7277A09D03BB30
-:10D0600002922B2AF203E1A9E7B56F9231DE95CB4C
-:10D070008735B699365C6F03D0111B85FE6C850031
-:10D08000BC01E887D179A047E38F224A75FA74A7DB
-:10D09000E61AE2044D798744C4573DD811144F0C69
-:10D0A000FB3B278C271D986C437B4F327B0EA39C48
-:10D0B000EA891583A837EB9D336D5EF4DF241412E3
-:10D0C000DEBF8C2DCF192C6E09EC16F2DBCA4E0F89
-:10D0D0003B8EE330467E5B933C9EE13E71B7B333BB
-:10D0E00006F72DB1A9A2615E8B527DC353C3F263D3
-:10D0F00070740D5FD8ED6EAD9FC8F17E90AAF92DCA
-:10D10000B354E60D3BB7A8D2E95B51D95561FCBDDC
-:10D1100066C434867117917C3DA0DCDAF9FDE456D3
-:10D120006D4E80F0658E9417C920C79D94AAA28C7D
-:10D13000F3569AFF2581E8EA4A840373EEB86087C4
-:10D14000FC685814FA3A7A691AC56B5ED033B06B32
-:10D150002E203DB3B988DB239A9EE1FAE96C8B83DC
-:10D16000F4D3D9B995144775B6254D41BA3BB0E112
-:10D17000F2B1088F79BD8D4C81F9CDEF9D4CE982DC
-:10D18000D65F525ADEDA0644CE58CDFAF91B664114
-:10D19000BB138F98282EA83B30E14C15E4BB5BAC49
-:10D1A0000CE38EBBB7DE93837EF16E1807EDABEE1A
-:10D1B000AD2388BEBA016E946F30D6C7786113E094
-:10D1C000A59C313D68D38BF5E7BD6E6A8B662795CC
-:10D1D0006FB47AA39DEF5C286F8D6EB7D5E2AFE98F
-:10D1E000F85FE5288457F107AB7270BD3AFFAF4C8A
-:10D1F000047984F0FAC0CAA2F9E3AF4EBDBA227531
-:10D2000022A6DE159832676254FF5A1FFDF3714F54
-:10D210008860DF125E7C71371BFCACDC8F7942B317
-:10D220007F996D80F238ADBD1CBD7C49CBE7871E70
-:10D2300060787FA1B214895EDF4F9B18ECA705DCF4
-:10D24000FFDE4CF1D0FA7CC04E253A66800F942F59
-:10D2500073357F0FC0FD260B7C3FF1BA4940FAE8D9
-:10D26000A3275F1CDA2D42F30D6B7643F9DF0FF332
-:10D27000FDD9C2DE4D24EF84E6319B27C3F77B5EE8
-:10D2800037939CAF69BA7CE3ED80DF2FDE30517EAF
-:10D2900041AF9DEA9D7CC0B3F976A8D7F30733D997
-:10D2A000E15F1CBE9AE21E4F9A8D7E82A9699C8F17
-:10D2B0005FD2F8795E6F33D91F7AF9BC863916854B
-:10D2C000E874037D9F878736785F8195FD7B711EAB
-:10D2D0009EE730BAAFF0D2C3B75EBF86F4DA78B259
-:10D2E000F7E7AFB77AA2C54FBF94AA18E4CFFCAE58
-:10D2F00016EA97815D949CAAF5172647E6F7261152
-:10D300001F30596518673C4F932717E6B7D56C90C7
-:10D310002727EDD1FD20AFA7F27DD4BCDECB89BF9E
-:10D32000FAAFEF87F47D9E3E6E17E7C7BEF56C9EA1
-:10D330001C6D3D7DEB984AF54F26441FBF471BBF30
-:10D34000BB7A01F3825C2AB7423D278E7FCFDAA2F7
-:10D35000425C4742A210B6AEF9AD8B99376C5DF3D3
-:10D36000B7CEB69487F5DB8787E5FF5E2CF5E1A1A4
-:10D37000277509E161556AE931E49BF2E62BC62283
-:10D380003DCE6F6D24389F307BDC285F3F69BD2721
-:10D39000CE17759E8AC18F30BF55C30FD8BB85612C
-:10D3A000F8D1F112D9BEFBFDF95F3E80F2E7116EB4
-:10D3B000DC0C04AF7E78CB8D0EB7188D3EBB41DF01
-:10D3C000FA086ECA0B4791AED73B3C48D703C36FF0
-:10D3D00034F30D06BF01EC57B0774C69785F017DDF
-:10D3E000B4780ED9CAE96028B8F58DABD14171F493
-:10D3F000F514A5E97450C55460D8E396A1E8E07E21
-:10D40000A6DA0659C7053A78D84007459BD7131DB9
-:10D410007C8AF6CAA8FEF83F6E51E3A6E0B94F93A6
-:10D4200089CE958EC7A8A9B7F1FC3894C7C7E3FC8D
-:10D4300037E2398D9E5FB87344DCECB0713F690010
-:10D440003844815F51DA00F493A7B28249FF3CFA75
-:10D4500039618E7EBFEFEAD4E2A969A83FFCD1FD15
-:10D46000B57AAACB6B53BCF3C23E13F5E771E7B0B4
-:10D470002F0350DA9CEA9B8E745197F0F33B511EB8
-:10D480001C3F2E90BEAD797FE528D46B917602ECDF
-:10D490003F1BF0DC73A529D64F76A854B99DCE4129
-:10D4A0005589ED2CC47D4AE5968F46A0DFB08A529F
-:10D4B000A6D9A12B4D977A9AC82F5BF9149E930297
-:10D4C00091C8585F6295746E0A82B014F39B1DFC7C
-:10D4D000DCB54AB2C9D6B0B884E51ABFD45797FEB6
-:10D4E000F223F443DB5426A7627B2E3725C6EDAF2B
-:10D4F0007FE03CC3F4BDC5EC933DB80F155829F24D
-:10D500008559F2D1FD27B32B799C1A8687CA347EC0
-:10D51000DE6EEFE868C885F6F6BBFE20A31EB4C237
-:10D5200038E867B3654967C3FDD5E6E420DD6F627F
-:10D530007961DFC1AE721640DEE00780F90E621736
-:10D54000BE2C785C5F223DD67078142188207D67E0
-:10D55000EEF03694CB45529D09E38E66DD3582F2BE
-:10D560009BE77C33B22B0A3DCC7A655D27DA33B377
-:10D570005E499F83E707B39C233FC614B60BB618DA
-:10D5800068FF9AC0824D905E657B9CE2195FD3FC78
-:10D59000631D980FD38B1D1ABD819D337D0FA4B3DE
-:10D5A0006C7EF3DD057DFEB4C871376B7CDF610EE8
-:10D5B000A65C8A7400E3E03A7EF64AE0C7A0FAD996
-:10D5C000EDC1C00D63003F77B01E33C2D1C7643ACE
-:10D5D000F7D0FDBAE5CCA3E519ED4FDFAB30EF4056
-:10D5E0003A89ECEFF610EFEF671DD01FA4771CEE21
-:10D5F000F93754CBBEA03CCDC1C2FADBEF39E460B1
-:10D60000FDFB8B84B347B299D430B8028AC470B89A
-:10D61000F7836F7CD9756CECC07CD6076F3E8F4862
-:10D620007C7C8145C0A76D69DE5F23BFA969DEBD33
-:10D63000C8BF15B61EB70474732CD9B71FBF2F35DA
-:10D64000F97252011EA7B37DA352102E9DD1CF5F58
-:10D6500023F93BAFECF463C83777D4480CF1BC76C0
-:10D66000DF278F215F9E36031FC17EE0B5559FC423
-:10D6700022DD2C01060C97271F548D20FBE9ECDEE0
-:10D680005183DE1FF940F397746A7CA2AFF34E64B6
-:10D690004018EFCEBD0EDACFDC5965BAB0CF427A72
-:10D6A000BFB38AC78730A973ECAD06BBB36EC07E2B
-:10D6B000701F11D94F77B56F3BF1BDE49B8476F7AE
-:10D6C00089EA05DB51BE44CE73A4CB77228DF4DB0F
-:10D6D0006C43BCEDDC9685DBC3F950AF5F3B807CCF
-:10D6E000F58CD2CE016D7C3CA6FCA0D83989EE6BBE
-:10D6F000D28F3D64FB5008A387A1C6637957792F69
-:10D70000C805DC7FF944E64CEDDF5F643DBD7F5723
-:10D71000D595ECC4045C9FF7FFA5A50C3D7F8B8BD2
-:10D72000CFDFAEB5D3BFDB7D7E8676A1FDAB78B211
-:10D73000133CA3B8FFE11F9A5DC09CB05E6430FF4C
-:10D7400066EFFFC67A61608A17B66FB5468D2BCA41
-:10D7500074491C2FC143C5B628F3EBD75F48621745
-:10D7600053CF338AAF1FDD64E4EF1A1943FB9AF2FB
-:10D77000AA5ADA673782FC407D10399FE34D8F2A21
-:10D78000A807EC16BF827ED1C691A9B96BA01D482F
-:10D7900035F2FBD863FC8A14FE5DF307D9D7F81580
-:10D7A000DCDF368EC8A0EF7A7F8D0297B33A5F3404
-:10D7B000C2BEEF79F28B795C3331AEF4ADC0F45870
-:10D7C00068B7632D0B99DC8C1D74678CC67DAEBF6A
-:10D7D000DE42E77B8DF962FA5CC8C765DBC83FD6DD
-:10D7E00096109A85F76B554122FDEA4F50AE8D4554
-:10D7F000FFEE9AB44E947F07EFB6D07A9B27F3FBE7
-:10D800006AD6291FF9AFC4FE57300FEAD51DBDBF38
-:10D810006EC57702D4A3B09F45BF21760AF268C7D0
-:10D82000F4B376DCCFB930AE0EF0B1D51CA4796D6F
-:10D83000A9B152BF5BDA2C65D1F0F779BA44EB0A93
-:10D84000085D141F9CC4827684EB83D3676ECE83FD
-:10D8500076B9794CC6FD7C73C1596DBFE935F1F3DA
-:10D8600028DD8FC8ECDA79964D3BA7B285C7173E05
-:10D87000EADF4BFE43C78C204FA78BE47F8E9CC70B
-:10D880000A17A77BC7D4CEE9A8271C852213D0BFCF
-:10D8900099C7045C973C7D075DD2C8CD6703B43758
-:10D8A000517BD90BED0B797BF409C917D9BEC2C5E1
-:10D8B000E30CD7A31F0ACA03668F702DCC23708395
-:10D8C0002CA84A5FBD7A17D7AFDBA1FF10C9D100E2
-:10D8D000ADCB9D1F0C21BDB92B44C2D3FAA2E3747A
-:10D8E0002EF060A1EE47F5D03CB6D61C3980F6D7B5
-:10D8F000D67B19D9495B518642BBAD37B0003F4F4B
-:10D90000621928DFB62CB45C4FE7F905007F81D29D
-:10D91000A8F39E9D6E237CBB573F18C2FBFB311EB4
-:10D9200020D45C4AA3D66F4CE770DA620EA4A37FC2
-:10D930006420BA287371BFAABB4AB3AB98DF85785D
-:10D94000DDA0C187DD3A9EFB1724AF121EC7D5A705
-:10D950004FB81F03D64771AD497516D247E28CD038
-:10D960002C5C5762BE855D938BFCC5E1A68E117958
-:10D97000DC190BB4227FB65D924AF1A4EBC4800B94
-:10D98000FDCD6A8985CE930F1689B3F05D848D75C0
-:10D9900016F243409EF8C5EF1DD686FCE6985A5213
-:10D9A000B6A010DFB9B0C808DFDA02D98E745CEB1C
-:10D9B000156501F21B4AF5FB118CDE37186732D969
-:10D9C000F3A17C7BBA883E5AB65D1088DFEBBD259B
-:10D9D000FEE1F0BD5E4E16C2FD002FBBB8DD7B77C9
-:10D9E0004EE9CB2E4803DE07FDC3158E4B6912E3CB
-:10D9F000572CE02796851660CC4D5BFD934771BD93
-:10DA0000EBC7D9E8FE6CF60A7F19CE37F6128B8287
-:10DA100078DDD19B349AD6576751909F3709816B37
-:10DA200091EFB7DE7D4845BFBAFD6327C60E336769
-:10DA3000D7DFAA317ECC59688938C76222CA717D86
-:10DA40005CE75B21A2A72EC1F79758F2FF1434E5DB
-:10DA500027533CF32484E78629EFE6CF8B4217D087
-:10DA6000DE993A1EED653134692CCA29AEC7982477
-:10DA7000A787E3775376C63BE867DA560CF3C7F11E
-:10DA8000AABA6FA779798FDC8F7695F3D8C9AFA33F
-:10DA9000CFF34DD223B1C71C21712CA64B66907DCC
-:10DAA000165E0FE4FEC61CEFC72EA09BDD355CEEB4
-:10DAB000B7DCC5E83D0AFCC90F836F4B014869FE1E
-:10DAC000048D42F50A64F2A3AF13956008E139D6DC
-:10DAD00046F494C67C24D722D7EB38D67837C61DB7
-:10DAE000393CC679F66AFC8D3F522A9D57A025CA5B
-:10DAF0002CE973ED28FFF68C57D271BFFD6042749C
-:10DB00003DFF5E3A6FBF5B886E9F9F4BB7737D0989
-:10DB1000B232348950C528AE0FF2622A9DDB909351
-:10DB2000DB2A72B9C0AE63A4F7E2C675D93D61E3E2
-:10DB3000ED49EF9B27C61FC46BED98DC13AA81F556
-:10DB4000B701D5E27DEEB86C0E47A7DA0747AC2FD8
-:10DB50006BEB023EA81955884094A93E2BB5D0B96D
-:10DB6000084843F51BB10F0EB15AFD2D459280EFC9
-:10DB7000900C036008503F61BAC5708E22D71D51CA
-:10DB8000B1FC7E1353128BFAC67F6C1C0BAC81F177
-:10DB9000E3BD4678C7AE786125DAE591748033B885
-:10DBA000D02F868ACF35B64BBDBD1F1F103C699E56
-:10DBB000009A96B7D80E0B00A5A55DD2E36349FE87
-:10DBC0004E3475AAE80FC580A47D30FF4B9F7ECBF5
-:10DBD000BB0BF22D3ECE67B1F92FAC44BA4CC8E076
-:10DBE000787A077DCB00E74799FC778CDB51AB4413
-:10DBF00005F1B12D348CF47823934A114F8D95475C
-:10DC00004494EBCD7B99471090FEFFCB1A3EBFDBCF
-:10DC1000D2F9390D9314927F929BDF1B6D2E101D4C
-:10DC2000285F0FDEFD02E9BDC70E880CF9BFE4775F
-:10DC3000C71EC1F7815ADEB152BEE5F54A921B3FBD
-:10DC400087766A14FFF9507A39B27EDE921D029E01
-:10DC50004FE42C08BE3E12E5B35FF25C83F858D067
-:10DC600049EF872885FC9CCD392344EF8728A8D528
-:10DC7000C02655FC5ADAC2CBD9AD89B48F1A63EDF0
-:10DC80006AB80EE6F7E8D312437D69B206D3E743DC
-:10DC9000BFA6179DA809FAED8F1E9D114A47391E90
-:10DCA000534961D0FDE677229DCB59F70CE5F72368
-:10DCB000A1DF84A91C96767FDA0194976833E3BDCF
-:10DCC0000A87CAF5DC0629E0C538EF0D2B7C161C47
-:10DCD0009F69FB97C625E54F229C4F6A7A8F552E88
-:10DCE000A0774CDC1ABF38AA5871B47D56AB2B868E
-:10DCF000C7B73C201E40FE707B19E90FB92A181ADD
-:10DD0000A5E9659CB8BCFAF946D42FCE0A91D6B1E4
-:10DD100041EAACC1772536AC60728DD2BFBFEFDA75
-:10DD2000BE2ADD4AF36F451CA7F4AD835C7220DF89
-:10DD3000DC0BA2AFE3611C7762DF3A62F475E47733
-:10DD4000515E9FC7766FF0A2E6B1595BC7A6749982
-:10DD5000524701681A677F79BFC6F101BD2B1300D6
-:10DD60005BDD44F7D182D7615E794E64FCBE96914B
-:10DD7000BFFBE535BA8AFCAEB0B0717291EE389E49
-:10DD800081EE34FB09F8CE86224054BE213F869FA7
-:10DD9000D61F498FFF74B9183E6FE83FB68109144A
-:10DDA0001757C19492F4FE72916972D1C6D410CA09
-:10DDB000BFFF69B9087290E4620BAC3409762AB1EE
-:10DDC0001D4D77A31ED7E5E144C4C914645FDB0D84
-:10DDD000254EDA1751FEB247FED082F191EB44EDA9
-:10DDE000BC4B830BBAA1102E5FBB14833E7D187F02
-:10DDF0008175ECE948BCBE00C6DB5C366C1CEE2FBE
-:10DE0000ECFE17C93E7017F0F81577153F3F77E421
-:10DE1000CD7B32FC5E5C653AB7D32B75FAABF2BBB7
-:10DE2000709C0DD82FCAE73C0BE9CB475990EB43C8
-:10DE3000CD3EDDE6D2FC241A5D45F249A47C9AF081
-:10DE400087E41294EFE98255C6FD1CEAE783A946F0
-:10DE50007D8DF4A2EBEBD6CE3509E80FCBD5FCFDDA
-:10DE6000B936639CC365195C9E99D3F93CD68995F4
-:10DE7000B4DF544B44DAC7E9F477418F47C031121D
-:10DE80007E48A86B27517C0CE5E38A7B18F2EF36BD
-:10DE900020597CE32D2E5DD1E2A6658273DBCFC4D1
-:10DEA000F1282FF77494DBD1BF2EB86DD7E2FE7046
-:10DEB000A3C04228373716BF4971254D55D0332CA2
-:10DEC000CA992FCEB68CED8F67E063DAAF3A546B08
-:10DED00027FAB582A11D14B7D01438348B713B9644
-:10DEE000615C4A53FE9A8C4528DFF34B0B11BF6DE2
-:10DEF000F5168A9B91F359543FC2E7B88F213AF93E
-:10DF0000767ACCA1EF2F2BA2EF2B4B33F8FE3628DD
-:10DF100081A882F964E58B1EE4FFAC3A4BD4795CAE
-:10DF2000A9E1293383DF0F6BAB3F944EEF668995F0
-:10DF3000013618BE60FA6B52C3F03179007CB874B8
-:10DF40007C483A3E1266131F76758A5CDE925EDB71
-:10DF5000C0E4DB503FAA9516B2631BCD7C5FBEA325
-:10DF600040E30BD9D686C4F66DE93A6E8948F7705E
-:10DF7000B28B44DA273A2A9EA7B8A64759CFEB2896
-:10DF8000EFD4027E7F3EB2FD1D19DC7F159414C1D3
-:10DF900043FB698E47C02BCD67EB88D4B6703E6DCE
-:10DFA000D5ECE8561787E3D6FA87894F2F769EBAC5
-:10DFB000DCAED5ECE8855E9F05D5812A944E4B47B3
-:10DFC000FDF9047F878A999C64977F8A4DC2FCB2D1
-:10DFD000ABB27C951961E743B2B752C47A57E3BB41
-:10DFE00042D0FE9320BF0FFA49F0D7C5F40E978FA9
-:10DFF00011332F649D023139C8D09D907749412A51
-:10E00000772D80B924D0ED48CADB6CA0176142A7F8
-:10E01000ABF9FD8B6E7C5F92DE9FE4EF4B7EAEBD75
-:10E020002739A6755DC9A3389E22F950667C86EF14
-:10E030004BE2FDE7A277292EFA14C8DAA6048C87F2
-:10E04000E1F7B7E5FB982C4EC6FCFA128C7BBEE7D5
-:10E0500055AB764FB2730DDE7B795C8475439B665E
-:10E0600009F4FD702C6A102AC3E878F7159D7178C1
-:10E07000CE773A78CBA0FE63BC3F48F3CDE078DAA8
-:10E08000E4584AF7CBE639436E6C7F60CF534F6E4E
-:10E0900081F13EDF67A3F74C363B96BAB1FCF347FC
-:10E0A000DE76A3BE38BDEF6D4BB4F3C92552701AAE
-:10E0B000DE23AB50E3D91A987F7170B685E24F76B4
-:10E0C0001DA0FB694B649F05FBAF68DD43F9AB7690
-:10E0D000FDD98DE5EF67703D713ADDE746BF445EDF
-:10E0E000AB352482FED93DCCBF28EA397B86A8CD4A
-:10E0F000FB55EA7FB3E3D5438897D38F58C9EF76B2
-:10E10000E091DF51BFA7F6BD48F3FD7CF7DB77A0B8
-:10E110003D5DC19807E5F969BBE6D7B375C685EFE4
-:10E120006F5FD5E0A1E74FC76AFBE0AC21EA69E782
-:10E1300031CC09F0A7FB039D7178BFF073B3CF8298
-:10E14000F0588CF080B418E080727F7150A0792E66
-:10E150006E6DA3FB568BF772FFE0628017C1A5F5C9
-:10E1600000CDFF5806971BA7F6FDC54DEF52ECB545
-:10E17000D2FE595FF762A7CF8DF0D1D70B70E0EBDD
-:10E18000DE7D71789AA7E3A9F5CF34AF8ABD7C5EB6
-:10E1900015BBF83CE6ED053C39114FB309FFA7F676
-:10E1A0003105EFC174EF79FB33B4674EEFB32968E3
-:10E1B00057E8F3CA02711B371EF988EB63B6572084
-:10E1C0007DCCA44E3ACF5922CB32BE4F70A13C60D9
-:10E1D000097079DA599209E5CF3C24D2FB964C0EAE
-:10E1E0005E8AFED53319FAF946A71BFD62BBAFF074
-:10E1F000137D9E8CD5E02D75BA317E6673A6EF4CEB
-:10E2000038BF9FFEF0C54B71DD2B4D95BFCBC6715E
-:10E210009EE2F1A1E78755FEF5019AF770C3796395
-:10E22000640A708BC3F3EF7C91F9E85EF2DED7628B
-:10E23000C2CFA14D99DCEFB6D9F101DD473C8DEF9E
-:10E240003CD27C8214A735D25BEEC673BE93CCE978
-:10E25000C373D9CF9F788DE26DBAD375FF5327D59D
-:10E260003BB5F7B5444CCBB5787816B885E418C003
-:10E27000B1C1363E9A7CD4EE1705F8BDB133020821
-:10E280004CD4138FE970AEB4CC349CEB70399AB592
-:10E2900035B783FC2D81E8F7CD22E56FDE4393E9A6
-:10E2A0005CF91C8B7EAECCB438B995A6188ABFD960
-:10E2B000ECF805DDBFAD52AD32DE5F39AEC9C58FBA
-:10E2C000B4F716CEC7C4A922D0CD4B99BEE199139D
-:10E2D000FBDFC32D6F5EE246F896E3B9076D6A7601
-:10E2E000DC807189140F3A85B46D88E067D6CB5B0A
-:10E2F000797902CF4FC9DCB31EDFC344F8723BF516
-:10E30000495E9ECBCB7FA295CFCF281D9F49FA8532
-:10E31000D13B4560912574DBB80A8F068F3EB84823
-:10E32000AC5BB7ABA1F2C24CC6E336324AA7E27A85
-:10E33000A058E07CFFFDFA03BCABB6C4FF867E6C40
-:10E34000FF5DFD04492F893E7CE30ABE79B8FE7B60
-:10E35000BC84C94D09DFBFFFEFDA7EA5C92B9E44FF
-:10E360003A8C1789EE75BEEE7E64D438DCFF5B1AFA
-:10E37000EE0EA1DAEC8E2DB1A4C3F7730A3F3FB9BC
-:10E38000EBA14D86F755F534F21D5BFD1CCF32DC59
-:10E39000783EDB92C9E5514B669FFF0DCFE546E223
-:10E3A0002F0ACFB7A452280CB7D359A588F187F903
-:10E3B0001D367AC7F712068202E63F9A8544D4DFFB
-:10E3C000635817E57F802080FC38A698303F81F5A0
-:10E3D000B8A5E178FE1C5A8B76DAB1645F13D2D906
-:10E3E000978F747E2040F9CF337CBFE982EFEB3307
-:10E3F000F93EC8096621D2B38C29D0A1E898E18AF8
-:10E4000026F72FC053964E859FB7DD2C791F223AF1
-:10E41000665972B7A30FCEBA3C58A4BDBBA4B7FFD0
-:10E42000ECE9A786D17B437DEF850F7A1F785ED517
-:10E43000C2879E983048B9266777D7046E0BD7F706
-:10E44000ED1A9C9FC9D4F5805FD70764C7FDEA66C3
-:10E450006E3FEDBEC2BBE67194B7AD26DA4F9F6C3E
-:10E46000FD0BBDFB78AE94915D37D0B82723F07ECD
-:10E4700072E75319FCBC2360D0EF0B9F7CE9D2F00C
-:10E48000784B00B3923C89BFC341783FE451AD263D
-:10E49000A4D252F2C75858258F53C1F90EC777B886
-:10E4A00082943A5927A571AC875299C9E49F4E646A
-:10E4B0001E4A935929A5A9AC52E0F69D9FD20C168D
-:10E4C000A4340BED53F4F7B01E4A15BCF11916BF76
-:10E4D000310C4F4C87E37BBCA5FC7B447C9084785B
-:10E4E0009C10459E47C40549ED5524CF312E684404
-:10E4F00072FFF71474F9BD39B3E43D94A72F657A20
-:10E500008F617AF8D9DFF3FB15EB05B2AF4FD8670F
-:10E51000581440DD33895E7A07441559E94ED0EF2F
-:10E520007375FF3FFEE871C208CC16F3A9F0F81D21
-:10E530006673E6E379F11CADEA1CED1C648EE60718
-:10E54000C1F7CDF83D3D0FDDB79FA39D3FCC89F0CE
-:10E55000BF30BFD5E04751F11758C71CBF40E70691
-:10E56000736266BCDAC506A693B0FEE8DE5F798406
-:10E570001F6A487F56447E6E647B9BC06CA9F89DE1
-:10E58000D3D3333F54C8AED3FD5940700AB56BB0F6
-:10E590007E487E21FFD5DE70382565F17DABDD7FBD
-:10E5A0004D5CB47797F4742ED867E6C4FEED6147EE
-:10E5B00098807CAFCB619DCE7371638B7C946F0927
-:10E5C0000C1697AABF77DDF4809FE1BCEDA155F44E
-:10E5D0004EF5BDD92AF96A6D0501BA1F10931F7057
-:10E5E000A951E6D784EF3A037F35C51ACF4D966718
-:10E5F00071FE5F9EC5CFB50F5D925A82E7D9EB14CD
-:10E6000091EE0DAF53F8DF2D589735D43BE536C367
-:10E610003DF9B549DBE81D20FB57DB19DA93762974
-:10E62000FABD94DBB4F13769F537276D233F49C351
-:10E63000087EBE1F59FFC08887E9DDC7C65CD8EFDA
-:10E6400062FA804AFDD78F78B80CDBDB428D86FBFF
-:10E65000BCB3B3F8BEDAB697D3A329CF121886F4A9
-:10E6600020F929BE40AFD738C079D28D595C2E36FB
-:10E670009903744FA649B3879667C56D407B675D64
-:10E68000D68EA3C8AFE7F2189D37DA434FD339824D
-:10E690002DDFC2EC82F6770230BEA32048F8416736
-:10E6A00053C840B7317DEF6C98FAF75FF78DDF857F
-:10E6B000EB6BCCF5D3F843ADF74A8D4E1B35FDDA45
-:10E6C00068379EA35568F0BE5E5B97ED1546F26411
-:10E6D00010B890BD77E3D61137A27FCAB67F48380D
-:10E6E0001AEAE7B2B2F868FC1229FF9D0562C43B42
-:10E6F0004A02CDEBDC5E417B6F91BF63D1670704BB
-:10E700002DD8EFBF6D2D3F782DCC6791CFE9C5F89F
-:10E71000C9A7B6EEA07BFA8B5F34537CC2C8AED9D2
-:10E720005C0EB6F27712F5F78D2E69B51ADE9B5A9C
-:10E73000C2C2DE5184F1161F3B798CD13D63E37771
-:10E74000FDDD8066FC10254E2DF2DD8187B222DFD3
-:10E7500023D3DE1D2888EEA7897C7760575024BD1F
-:10E76000B11CE358691FB0AD04F73D55C704F21B57
-:10E77000F4E743E5B13C73585EF0103DAAB131DED9
-:10E780009D51F8E9BD6C4E2FBBF1508DECFEEA0DAA
-:10E79000A12C4CEB189E37D5AE90643CD7AE0DC47F
-:10E7A000D0FD925A590C60DC48766C890DFD8F2C97
-:10E7B0004194F11EDA34D354BAF764B9579A40EF52
-:10E7C000B3EE58D489F7EA6A5D12433ECE4EE0714B
-:10E7D000042C5DA4F769EAE43713E6E03ECEC9EF06
-:10E7E000E9E5C82CA00868D779199E2FC366A53221
-:10E7F00004A657B6E00DE17B576CB255DEC9DF9930
-:10E80000B971DC24F203D3CF81B669A1DFE2385EAF
-:10E810005B29E2FFAA7B93C91E0CB84C0CE3003FB6
-:10E82000CDE2E78296D892D0FB38BF590EF2ED06C2
-:10E83000543111F1F07ADBDA99D7C0777340A278BE
-:10E8400087FCAF6B6FBB06DAF7B459E8BE850E27BD
-:10E85000A54E32BCDFE05E6DCC5B22DEAB9058583B
-:10E8600039E4DFC179905D55C642E171BCC95E7E75
-:10E87000E82E3B894EBA813FE9FC43CBBF8779A0A4
-:10E88000D776B39FF0DEFEBE40FED5836DF37248AF
-:10E890005E3A966EC7BF635275949F630E249F9F26
-:10E8A000CE52F47712ECDA3B1576F47B45D2535D09
-:10E8B00035F3609CA12DD011331AF17BD8ECC1B097
-:10E8C000E67A4D3E4A4E2EC775BA894CEB23E8AF27
-:10E8D000DEECC9F743FDFAAF4DDABEF1F48D485FC7
-:10E8E00092ACD0BEDA9CC53C680E9B933B336498D7
-:10E8F000C7E8172D1EFC7B07D39E2B8847393FFAAC
-:10E90000B55924DF104E882FA9CAE2413BD95A9548
-:10E91000EC9126603D27D1E559A785EC21A9CAE1F4
-:10E9200027FBAB6D924B09937B6BAB658F64C6BFC6
-:10E930008F63A374ED00F23E27412C45BFAB45B376
-:10E9400097D3B475A5653B284DCDE6F273BBA4CE35
-:10E95000A4F77B816E30EEE6C06A4EDFCBD36DA4A8
-:10E960003797BF3E3C6D30FFE093D52E4F1E0076AB
-:10E97000DBEA72F2DB16AFFAA811E96E79AC4D460C
-:10E980003A34C58DDC3C15E9FEF766BAE7591B3B06
-:10E99000499913D69F29AEC885F030896A06D2738B
-:10E9A000C163C11BA5C94827EA16BCCF5F98DD7AB1
-:10E9B000A304F2A53D56CDC0F3B2A9D95B793E457B
-:10E9C000DD22209F6407783E5BCD10213F23FB09A9
-:10E9D0009E1FA16EC1FCADD9ED3C3F86EBA3DBB31E
-:10E9E00077DD88FAA8D6EC2943FFF4B330FF821113
-:10E9F000F87783787A870617BDFC79FC6EC6BF333B
-:10EA0000C4D3C8F217B476FB0728FF8D56FECA00A0
-:10EA1000FDBFAAB50B0DD0FEA0D6AE6380F687B4BD
-:10EA200076870728FFBD56FEC600FDFF516BD7391C
-:10EA300040FB37B5766F0DD0FE88D6EEE800E5EFE7
-:10EA40006AE5C722FAFF40ABDFA57D77C736BC8BEE
-:10EA5000F69A1BE415CA93FCD806F2776DAB2A240C
-:10EA6000FAAF9DC8F5BF4EEF6EED5EC0916C7E6E45
-:10EA700073249BDB01551A9D17AFCADB3815E9F0EB
-:10EA80000FFC9E22E88FA3780F575D25927F6FF9C8
-:10EA9000EBFC5D99E5AB243ADFB8A0F7B4F6FAFCDD
-:10EAA00003DA3CEBB4B4329BBF9791ABBA3C33C2B0
-:10EAB000F4A35936E66DC04F18FF5F97CCF54CFEB6
-:10EAC000AA92063C37A9053D83EBAB775A42E8FF93
-:10EAD000AA97252AAF4B2EF1E379BF2A4BA487EAE8
-:10EAE000931343F84E735D5DA1E1BDCF3A59A2F790
-:10EAF00063A484AB6C739C283766C8283FEB989C52
-:10EB0000584CE76AB04F437D525522A3DCC94D48AB
-:10EB10004E44B93C3787AFAB23B6DB8EF728A4074A
-:10EB2000447A2B60A42C11BFE7D5890105E6D121D9
-:10EB30002F27FFEBCE16ED4C91F1F3445DCEB7FFDE
-:10EB4000621AE9B15AD0630AE931163F2EB5EFFED9
-:10EB5000A6746CB405F5969C61626690CBBFCB4EF3
-:10EB6000A471773EC4F5D608D05BF8CEDAF642C67B
-:10EB7000DF7973D9C8AF5B2E315752981FF377D91D
-:10EB8000DC8E67A6191EDC678FC0F710C3E03BDC84
-:10EB90006FD45BB943E8AD9C2A909761F5AD2ED94F
-:10EBA000900F666BEF2A799807ED9B69CF6D257DF5
-:10EBB0007216F50943FDF2C798D1A85F408F5859E6
-:10EBC0007F39A8CB63DD6ED1E574ADA6376A23F437
-:10EBD000C6D072F7EFAF8F22FA140DEFD00C247F5E
-:10EBE000AB304E00E8DFEC1348AF30C947F7FB8786
-:10EBF000829BD95C2ACBCEA1E1674EF92201E5B414
-:10EC0000D927793E8A724F6A28F8EAF52CB6CCC724
-:10EC100050AF7D716C653EFABDD69A3B67EF42BA44
-:10EC200015E2E97E87A2F91DB655EF672746603CDD
-:10EC3000FC7B5BEB26E0FD71AF4CFE92F41205DB32
-:10EC4000D9619F9E44761CDF6F32D9E75F84F6FC62
-:10EC50008B1605CF050E3FABBDDF90ED2478DEB3FC
-:10EC60006705B5330B952E7EDECF08DEEB3212F949
-:10EC7000DF0969B76976E3998DDE3CE857EC1250FD
-:10EC8000FFFC474EDB461BEA0F6D3FC058DB4DB81B
-:10EC9000FF09062C5A7DBCE8CED81E51D0FDCF5EB0
-:10ECA000C9156E875A6EBA2A0BCF43E5D112F49775
-:10ECB000B1CDBED17C05968B7A7B2F5E1E42F1A52D
-:10ECC000E725C0C3331D5AB99AB6F12A98CF1E8BD7
-:10ECD0003E3E18D445389EA8D193BC11FBDF5DA2FF
-:10ECE000B7EFD9E89D4AF3B9DE047BB07C77E646FE
-:10ECF000677ADF7C87E7E46EAC81B59F56BAE27035
-:10ED00001BB7A4EDA354D4DBEBCAF8FD616400F497
-:10ED10008FE8F7882FE06DEFCD2ABA62FFF3D03F7E
-:10ED2000E20AA06899A9EB9003E0B6647FA5CD2C18
-:10ED3000E2FB5DA52ABEDFA5B75BB27736D939CB3A
-:10ED40005E194769947687F1FECC776867B35CC437
-:10ED500078A7436F2EDDA5E0BD99CA06A789EA33DF
-:10ED6000EEFF8ABE3EBDFDE95D6FFE04C73BA374A6
-:10ED7000A55E07B5D785002E51DAE9F5F5FBD55329
-:10ED80005CDECBDCC07FFF70733E6452A507EB07EF
-:10ED90006D7EBAC76637FB4B519F002A0318A7A0A8
-:10EDA000A753DC79FC5DEC88EF91FC15B4B1A41994
-:10EDB000282F574874EE1EB4A98EB1906F817D4AFA
-:10EDC0000D4C69CDB823E3315EA0659F93E47AEDE5
-:10EDD0008A0E5701F295C7C2D0EE6DB9A2331DDF7E
-:10EDE000BFAFBBD752F604D26F68B9EBAE303B6C05
-:10EDF000780E8FABCF4EF097213FDA811F511F372E
-:10EE00009A7D367C37454D1729AEDA0EE56F50797D
-:10EE1000B656EE997E0DEDCB4419E7559F37777ABC
-:10EE200009EA355722FFFB8423AE2A9B0FE501D95F
-:10EE3000222379DD9D53EE43383D23792A91FF9EAD
-:10EE4000713A658CC7025949FA401A914CF15956EA
-:10EE5000EDBE53F638AEE7F57936B9B9FDD0E4B674
-:10EE6000101E5A623B6F2E867631F789B20AFD3743
-:10EE7000DEFB7029C6273E76EF913F637C6B53AA79
-:10EE800044EF0CECAE0979B15E8FC03A77801DB9C2
-:10EE9000BE6A6627EE47D73345417B7DB730D38FB7
-:10EEA000FAB92745623BA07E4C9E315ED559608CF5
-:10EEB00097CAAA30E637E6F8EEC7754DF8436131D8
-:10EEC0008E9322280A3E1D5CD8C9283E3F352F4F1D
-:10EED000C6B8EEB8C28838D8A9C67E12AF32962717
-:10EEE000CF8888DBBAD558EEBADD98CF986BCC7F47
-:10EEF000AED3A38B9F3FE87FE7E1B17B9F64A8A7D8
-:10EF00001BBF8AA778568423DAED3123250F9E8B09
-:10EF1000645B3A67611C1CBB3486ECA583EE18A6C3
-:10EF200040DEBA94913CB526060FE07ED52ACAA5EC
-:10EF30002A69A8E081F7A1DC01FB5594BF91F0CBD1
-:10EF4000CEE6FE416725FF7B7141294476847D55DD
-:10EF5000BC5CE3C1AD63841FB6222CCFE3BD1F7739
-:10EF6000F3F338BA774F477284575819E26D320B72
-:10EF7000E03B94D9F77EA486601EEB95BC4AB4337F
-:10EF8000D6895D348E5AEEF4E1BE3B05E3BC4D18E4
-:10EF9000EFAD521A898FE7DDDC4E52D85C3FE2D1EB
-:10EFA000355BA4F891FA43317578F852AFBDD7A01C
-:10EFB000C7B1E974F9B29BFBE7F67488A217FDE0CC
-:10EFC000B7E7ED407CEBF9565F721BC5F58FABECF4
-:10EFD00042BA6437703B14F400DDCBD6E3C4F4B816
-:10EFE000C2EE1C1EBF763A47BC80BF901E47141667
-:10EFF000074E4777263CBAF0CB78DE933DAE5446B9
-:10F0000039F34BFDFE05E3FDE2F385746E3043F406
-:10F010005EA2F9D3D1AE4BD2C64B4A96BCF4BE3BEE
-:10F02000CC4984FA0F315E3F296FEF4ABC77B507B0
-:10F030000907F9E72E0EE748BA4DEFF0978E4178B1
-:10F0400009A00FB3FAD3B1E06EA5F3C0FAFB58A242
-:10F05000755C7FBA9E68E2F64FCF4285E22C87A2AC
-:10F06000F393EE04EEC74ED922A37D9B91F7500D8A
-:10F07000DD83B98FC9A8EF323A3A6F46BF57243FB4
-:10F08000041C71E3799CDCB7F3C39B4C9C3F589AFA
-:10F0900044788B8C2F8D8C271D9E93A0F929400FCF
-:10F0A000C4E27D00F94A8C13EC59C5E89D809217A3
-:10F0B0005B6EFB77E8EFCB111619E575CE5BBEA74B
-:10F0C0001C30AF2F5FF2E5A09CDE2675D913C2FC81
-:10F0D0009E92C8EF9F45CAEBE139A246AFA0375CCC
-:10F0E000DF3DCD46FA06E20AE6A58E968108876FD7
-:10F0F000DFF4275BCAFFA0DDA2DAFCF8F746DD1DCE
-:10F100007A3E8BECB09CB778BE685BD6465542B869
-:10F110005590BFE860F63CF21749EF727FD1189323
-:10F12000378079F69E9DE2EEDAF7DDBE00E3D5EAA0
-:10F1300053AF53503F176AFB9FF139425478491639
-:10F14000AF0FF926F27B81065FC64A3F9D0DF81B83
-:10F15000F3B885E2EEF2C5F2865CE4874613E1B3CC
-:10F16000DCA42C6D0EDBA735A71697E44CA47D011B
-:10F17000F3C18641E915980FDF614A3E5E8CF49A2F
-:10F18000036C86F22547E506644E550CF385D1A93C
-:10F19000D22B51FDE6546F498E26F7F0DCC7ACB197
-:10F1A000F43389A56C36EA65F8867AD7BC2B869F3E
-:10F1B000F7241BEF479A4C3C5EE4266DDD663CD796
-:10F1C000198FEFBD8921EBD8FEF56FD5EA49366777
-:10F1D000C8148F7EB2378ED2BDCB887360DCDF520D
-:10F1E0005C4E05233F28C285F2F7C8FCDDEE2A1EDF
-:10F1F0000F50BB9A09781650ABDD5351EFE07F8F6B
-:10F200009879BD0ABEAF425B4C05FF0B11FFBA6C8B
-:10F210002C11EBA7B34E8A63641D4CE1F112C67347
-:10F22000A76D03BC03A5FB01A42A13ED5346BF66DB
-:10F23000E77F17AA8AD13BE1F46613EE7F57B380CC
-:10F2400024F4F9E18E642BD44E3F8FDDFDF50719D0
-:10F250002897F3C51DBE37C86E889577A07E8C3180
-:10F26000F2A17E7FAD56A3936DD532E15B2F77ABD4
-:10F27000C729DE3E87F5D4E03E2BA72AD180E70BD5
-:10F280007ED9DE4CE69B10DE6F80BFAB9B27D13B67
-:10F290005D4AAF9BCAB7552B43F43F6C80FED389C0
-:10F2A0009E06EE3F8BCAB787BE48B81140B1ADE7A6
-:10F2B000A38452A5CF6E8D84B37BB5517EFF607F52
-:10F2C000643C39878BDDEC4DBE19E0667F40F4B4B9
-:10F2D00031FC7B3CC67AD373CF25F0F372BD7E2818
-:10F2E000F916AC0FFBDE3605FFBE8FB17E69F1C7A4
-:10F2F00009FCDC5DAFCFE7F7A35E63BD48FC44CEFD
-:10F3000017E695F2E3B0795D69B31ACACB66F79B4D
-:10F3100057CA4FC3E6758DCB58DF57137D5ED7E7CD
-:10F320005B079D975EEFA6A28BAB17B98E5BA65BC2
-:10F3300007803BAFFFD3B28BEBF75F160C5EEFCECF
-:10F34000AAC871542E272CDE2328E7CA99B216DFEB
-:10F350000967CE98A871C1259A1D7316FD14180F60
-:10F3600097E97D1FE55A4F368F4B39FCEC223F9EC3
-:10F37000C32CDF6751F0BC235BF35B83E0598CFC4B
-:10F38000BBC72627603CA0CDAD68FBABCE5C8CE74D
-:10F39000DBD37EE436927BCC68CFC07EAD18F535EA
-:10F3A0008830BA97F126B64B098FA3F092FD572FFC
-:10F3B0007AFE42FBAA9FF07D951EBF1F6E67B14982
-:10F3C0007D76961EBFBD491BE7BF7286D17CC0CE3D
-:10F3D000A7BF7B9B9A27517CF32F6D9D9BF0FED19D
-:10F3E0002F939313703F73589BB76E37EAF71AD277
-:10F3F00066E78D334581D7FF0791B1925A008000AF
-:10F40000000000001F8B080000000000000BDD7DE5
-:10F410000B7C54D599F8B973EFBC9299C99D64F2ED
-:10F42000E211EEE4C5044298608801AD4C12A0A838
-:10F430002C3BC147412D0E893C227921A8A1B2F570
-:10F44000864484F8206840A0A043148A56ED6011D9
-:10F4500001C11DA2A6764B6DECF661A94B47602950
-:10F4600002C2A8BB487F7F2D7BBEEFDC9B99B99978
-:10F470005150B6DDDF9FFEECCDB9E79ED777BEF7E2
-:10F48000F79D33172FD27F93087928892C0C1413FA
-:10F49000FCC7951162CFCFEFE9741232BCD42B8E2A
-:10F4A000A3EFDFC9D111329E9087E983D07AB9509A
-:10F4B000F06FE3E8DF22212BCBE9F7D030979027DC
-:10F4C000C57EBB40EB9F7408A2CC413B09DBED7CC1
-:10F4D0004BA7F3380879EA8EFC1EDE19296FF03944
-:10F4E000B64279B88EF80216E8445C44E8FB9D26E3
-:10F4F000D1DE594A8B42BFB3C64ACB3B7E7F1B67E6
-:10F500002364C40882FDD5B55693635711B2DB104E
-:10F510007EF322CC673DE7DF46FB79ADBB74AA40A2
-:10F52000DBCF3B4988997E5AB7ECA6278FA71132CB
-:10F53000E1B85809EFEB36DBDD3C7DDFD4DF321577
-:10F54000C6212DC45DE0262493AFE4ADB49FCC4723
-:10F55000DE73B7D329AFEB95F6846839BC9573F7A2
-:10F560004850BFB87431C0C7E2912C74BD7361AA12
-:10F57000F8DE3E550FED6E32B83B683F67F4641617
-:10F58000C0F1A20257F539F70EA982D0F9CF0D2CA0
-:10F590009B8BE38A1464D9B46C12711E26494C6D9E
-:10F5A000A3E5CC2462328F23A47C85D8F7008C5F3E
-:10F5B0006F157B288C6D1562DF8F605D2D3922EF12
-:10F5C00086C1FD0807B5FF791EAF81D07147EF30C6
-:10F5D000D0CED83E5EA4FF8D09C496C7EE892D9784
-:10F5E0000663CB57BD135B7E5562F09E681ABAE581
-:10F5F000388577EF012381F92E3A9DE4375278EF71
-:10F60000D31302EB975F32223E542FB278003F4E65
-:10F610009F4ADA6AA4E5838793F0FBBB7F6266DFCB
-:10F62000EB022F43597E3999C0F78BD202E5A974BA
-:10F63000DEAF7FC9DFE92D66CBD243FF2F176DED1B
-:10F6400084FAAB02E5227DBF7B1421FD502FF84BDD
-:10F65000609DBBFFC663BFE1E78DFE1EDAEFE9BD2B
-:10F660003F7E19E075FAF9A1A91C9DF335BA9EAB4E
-:10F670003AA1BECD2AF5D0F7134FBF98E78BDA97A2
-:10F68000453B8C31EB5C2C71B8CE56C1B3E259D8F6
-:10F690009F437AC4A725F3FC7541DA7E0997E39668
-:10F6A000A11F03C5D36228BB33ED145F27DA18DE30
-:10F6B0002E31D3729C7D579FB51B78E2BB2A523EF8
-:10F6C000BAFAC7381FD7C9F711AFF7E9655D12C09D
-:10F6D0007135E7DE46E7BFCF6C2B2129F0CCF10373
-:10F6E000DEC81225BC745CD78F9A002F7EC5BB7B09
-:10F6F00048E2F15C597FDA3CF9AAAFA8A7E33A4B9C
-:10F700000839F751D29D1E3A8F911B62F7BDC81F71
-:10F710005B5EA5C0A79644BD77C27C725766219DEB
-:10F72000109C8FEBE407B739E97C8718490BC0457B
-:10F730003BEE5A651D2FBC40FB716137FC459EF5C1
-:10F740002765D07D51E8EA758ED111FDB77428A5E3
-:10F75000B7451CE32FEAFB459A79A8FD4F94189F03
-:10F760007218DC6B42B8FF4611F6FFD483D39E3C7F
-:10F77000AE1F3C9F130F7A3C93A3DECFDFB0B82FB0
-:10F780009BB66BD8993E8E8F826FC3F36F66DC4E4B
-:10F79000DF9FD921B8810536CCDEFEF844F8EE793A
-:10F7A0003E00F3857A0F5DEF99C0DB36F86EFE669A
-:10F7B000FB385E8AB45FB0618A67B22B02CFCBA5FB
-:10F7C000D3D72A189F5B14D0FB4D401781DF4D1D06
-:10F7D0000A78BA817317D071CA051F0F74672DF3A9
-:10F7E000E8E509844CFAE25FFB86D0FAE603E3CB56
-:10F7F0003B697DA7CE7BD33F01DD3DCDBBB7015D2E
-:10F80000FFF69E0C5FD4FEBC03FB4BF7A5F3D606B8
-:10F81000EC47A6B85140997AAFABB61ACA138B0918
-:10F8200067A4FCD8769278FC16188FBCAF4B25E401
-:10F83000E4FE874A041DF2A3DB814E4E139B1BE8B6
-:10F840006E9FB5E5DF71BC97F438DEA4600A07FC53
-:10F8500077DF739CBB93003C62E9EFE4C915B64ABD
-:10F8600046D7777A510EE88883F6B7F0D931C807C2
-:10F87000D4F7DAFDABF7C7F6A3C58B8F9475016A91
-:10F8800046E397F6BBB4E9B201E8B1A195CA8B286B
-:10F89000BA6938DE652096C1E3103280BF04F09764
-:10F8A000E2259170BD66E41BF41F67A2787B0AFE17
-:10F8B000CA636542C7BF9BC3A59145A30285C0E744
-:10F8C0003841ACEAC88EF05752E1473E7F86FED9F8
-:10F8D000E906BE103802F40EB2741BC817317876F0
-:10F8E00013D4CB233CC08F860092D227F96932F221
-:10F8F000DF3352683BB67F718C5BA6AFCF01BD583A
-:10F90000B09D2D358A3FB505DEB48568F9F4CEB4D7
-:10F910002ADE0678FB4B1BACF35420ADCA604BCCFF
-:10F9200037B47C93CE0CE1FB21FC49F14E747A9202
-:10F930009D00EF0E2A74419EA5B594B6C4D937B583
-:10F940009DC3D0522A01FFF8BEC5DDC3E0463CB4DA
-:10F95000FCE93B693DB0EFD7E8742817E672AC7F4D
-:10F96000B57D913311BF9666071D117EFD84228FF0
-:10F97000557EFD8495C1E372F9B5F639ADB328051E
-:10F98000E0F7299152403EA59AEA9E013D43AD7FA2
-:10F9900022811E50EA64FCE99D838529214BA4FD48
-:10F9A0009FF3BC6500B7ACAA7E0F4FE79F7503714C
-:10F9B000B7D3651DE3DDF789147FEE2254BEC3B3D0
-:10F9C000CC67003E483AD211BE84B8A7C2FE2F9839
-:10F9D0004EF1A59495411ED77B0DEE4EAA37D40962
-:10F9E0000C3FEA7670FE760AB2BB1E8DDDBFF9DDF4
-:10F9F000C6081EC3FF6D8EAAA7E3D40BFE95206731
-:10FA000087514D29AD82E2EF73B1DF2F22419C5720
-:10FA1000C38B178DF1F0E2BF15BCF8739E6706AC7F
-:10FA20008F9B69C2F92C7989437DC06108A0FE13C0
-:10FA30005E4CE5079D2FF92DC39BFFE4BDB8EEE6B4
-:10FA400065733D77D17D38D75AE7B98B56216B80E6
-:10FA5000FD0E307D6FD1E4401FF24122BE727B1655
-:10FA6000F4E74578501889DB101E028EF7DFBF657A
-:10FA7000F8749BA2375EA39B89EB0AD713B187F278
-:10FA8000B9892F1EC432FDD772FB4478B07EE6B729
-:10FA90001011E0BA80C8064269ED01A713F7AF9EC6
-:10FAA000F41B185DFBDB3368BB26AA6F025F8BA3D8
-:10FAB0003F7C3F1A1F0F6BF0F1F015C3C709884F49
-:10FAC0009F1137E2D36D1A7C3C9C001FDB07F0B11D
-:10FAD0001CF1596D4FF550624E1DFC3DE08B276ABD
-:10FAE0009F176E8E2D93E7A2CAB98017B41C852F7D
-:10FAF0004DBB2E1A3D71F064DD80BCF717D58C89A3
-:10FB0000E6136D38BF230A1EADBB657E36F0E935BE
-:10FB100060700C513AA800F946FFC27D234113EDF5
-:10FB20003FE9AA8132D697AF6065FFD65F7B375C2D
-:10FB30004BC87ABD2F5BA4F0AAE3BD7D3A902FF9A4
-:10FB4000BEE79C6057E83C3902EEABA7D03B0636D7
-:10FB500094E1E353E35A8A5AE2C04F9DFF7A2E1094
-:10FB6000D4019FDECBF4376B59581F2D5FDF703205
-:10FB70003994D21B427C0DBFCA11B02B36726BB3C5
-:10FB800001CF36664B5C3B5D53D9AEB64AC45FCA03
-:10FB9000EB0B28DE35EEFAB06F282D974DEB07F40E
-:10FBA000A3EBF62E7E1BF8E5F824669724B76CD5F8
-:10FBB000D1FE32EF748D6BA7F8F6A653C27192AEE8
-:10FBC000EA3A08FD84174B620FED276B85ECBCA762
-:10FBD00018C66F6943BCAF21F83EFD7BCBDBE0BBB1
-:10FBE000478690541EBE236D1C7CB7329DC3FD58C2
-:10FBF0003997CC7AA518A84844BD7ED82C916B9B28
-:10FC000000E5964AA41749B4FF321BA9AC2385DA54
-:10FC10002DEB6C04F975BA8EBFB3863ED78D63E5C4
-:10FC2000D4E59CA70789772DCE2FD348A671A9ECE0
-:10FC3000BDBF18598E6727D6FB71BF33AB5B4A61D6
-:10FC40001E9979ECE930F874F974FC43EFE9FD2B67
-:10FC5000E83A0F29F8B2746B5566B45C3B74C6245D
-:10FC6000E8A8DE7C284BB5178216B0179696566723
-:10FC700002F3C8CD9F9602FBEAC889AD3FA7F7A45F
-:10FC80005C05F2FB3D9EC0FEFD97C59302F4798DA5
-:10FC900081CD5FBBEF9F29FBD97C8123FE28BA6C05
-:10FCA0009E751EEDB0E60B42CCFB330F9A08A810F0
-:10FCB000037AC5C2DEA9F05D23E95F0978D8184848
-:10FCC00026FE28BAB82629FEB82A3D345FE0891CF2
-:10FCD000775C43ECFB0B69444E8BF75D46EC7BBADB
-:10FCE0008E98F29ECF07D601EF4945C8E6A576F873
-:10FCF00074D05368F99C5F27EBC7029B63FCEBACA5
-:10FD000018B201FFA2FA480BECCB592984FAC63984
-:10FD1000CA9AA01EE4780DECAF10B6CDB446C65119
-:10FD2000EBA17DF43E9E9D652041DC9F30CE03E03B
-:10FD3000278F2464D3FE4F0C12E869FB0F22FC547A
-:10FD40007C8986A31CC56F32DAFB833A4A5725B9F2
-:10FD5000196B8B8BE896F5AA7C216BAD87F2810C31
-:10FD60005E17C32792CB06F806B2A9753A5EE13357
-:10FD7000D96B275F1B5D66DF47DA0FA981FAB26294
-:10FD8000D6BE2277E87B2B40F6922E9C1F5D470E55
-:10FD9000C06FA06CD2942DB43C26AA2C6AEA1D9A9E
-:10FDA000FA2C4D7918FBFE8C359803FE81EADC11A4
-:10FDB0003502A5D333D9C1391C2D3FDAEEAC994CAD
-:10FDC000E9B4B18CE9174DFB39374722F06B723338
-:10FDD000BDDEE20E19EA8A010EFD7DC0571AF670EB
-:10FDE0002247E9C112D819C432B493A2DA05386C9B
-:10FDF000D710F810DB25ECDFA5433AEF741D65DF63
-:10FE000005FE827ACCC31D8BBDC0D8FAF48C6F512D
-:10FE100029E7194A1B36EDA9213E4B84BF9ECDF63A
-:10FE2000BC89FCF50027027D0EE029F46B89D085A2
-:10FE3000FAFD9FC6ECFF1DA849C94B3F6913E8F7BF
-:10FE4000FFD1F897F1A077FF499123EB397F118C0F
-:10FE5000BB89F88A408E7FBFB1E0A08E7E77441FB9
-:10FE6000DA02BCB73DF76A84DF116B683847F59258
-:10FE70008772AB6A040ABF23E9A12D00CFFFC8AD8A
-:10FE800066E5E1A1E13A5A5EDDD3C4CA05A12D5071
-:10FE90007EA567362B8F090DE769FB3CF93684FF99
-:10FEA00036313E5D2FCB65FAAC3ABF87CA3C4B7307
-:10FEB000418F6E60F267CEDD876703BF9DA323226B
-:10FEC000A17C7ADB99632F6DA3F0D8D69A4C7A186F
-:10FED0003A7A056A6F6432D4A772A20BF97AD8C94C
-:10FEE000F41BCAED42E0D74B1E6F923A9D917D51B3
-:10FEF000C7CF1CD5B213FACF9C538C72C4ECF41C40
-:10FF000081F1D5E7F451EC79245764FC9BD779F063
-:10FF1000FB07AC7EF87E8D99AD8BD20FEEB345D941
-:10FF20009735CABAD6E4323D63BA73CA91DCF1A000
-:10FF30009F28F6CEAA40FA283AAF6E8E04C06EA46F
-:10FF40007A8A6C063E5C9F84F64C37CC1DEAD766F5
-:10FF5000FB653ACEED1CF1027F51F949B7DD939D67
-:10FF60001A65377697D2B225E227E8AEF1642739D1
-:10FF7000E099A1031B4AE54FDD4ED64E954F99ED12
-:10FF80006C9CCC35453DB09E6481A0BC9B37ABB02A
-:10FF9000A70DF58399386FE2F16473B4BFE3F5B947
-:10FFA0003A80A3BA5FDBCB3C2FE0BA78E6F750F794
-:10FFB0004D85EF915CE6F7A8E3A97E41F1EEF17C77
-:10FFC0001FF647F58D1214EC8ABE710490767C04FE
-:10FFD000CE44088D87F7FF1FC2AB1FF0E9DBC2AB31
-:10FFE000B195F211DD25F011058EEBB9A03E93F12C
-:10FFF00011F44BC07B9047CF3B7DC773A3E861CE24
-:020000023000CC
-:10000000038DA867AAF34ABEFFB569DF234087A71F
-:1000100090EEE6FC2019FD085A3D50B503557D359C
-:10002000911DF8A9420F6ED5EFADCC23B938F4D2AB
-:1000300063145EA9C42A021F3D62088D71D3F6477E
-:1000400074BE675F83790FE145CA4306F5F7421E28
-:100050008FE39B553C2161DB2847044F56533C31CD
-:1000600041FB1A03DA25DD76FFC6F98027B70C734A
-:10007000CB12CA61A467B93519EBAFD11D25E0C712
-:100080000F4F1045D033295E617DF7EC42BFCCFCA9
-:1000900031B219FDD349FE1EC0BB520A00E86FF60B
-:1000A00028AC077F08FA91669BD87883F18AF92DEE
-:1000B000461256EF54F0B63E17F136A39D303F90EE
-:1000C000E029A989D217BE9FC7F022B92CF4EA1FF4
-:1000D00040FF7CD4EC2E20CC6405FF12E9CAC4FE9C
-:1000E00028BE8CC81BCFE438F47BD7E3D6AD8CEFA9
-:1000F000B9CB01CE0F5BBBC832F40FEA71FE9BCDCA
-:1001000041D4C37526C90E7EF8393C595F08FDB548
-:10011000EB45C0132DBC2BF312F91F42F746FB8BA6
-:10012000E71865630ED43F6846BB40B5FBE6A430D4
-:10013000BA52ED3ED5CFA11D47B5FBEED4D873031F
-:10014000F59D7F2DA8A5FDFD59C13377EF8582B9B7
-:1001500016B66EF03FD5C25F74DCDAE5E60FC1CFAC
-:100160005C2BEB83461BF091299E50949D4636B044
-:1001700075F87EA5F7039C5A05B27E3BEC8FCCD672
-:100180004FEDD8FAE8756D32B075C93FB0C6AC6BAB
-:10019000938DC591BEFDBA3E1A1FBBAE93E3957514
-:1001A0001153066DA7C8B93B5BAD1F7225F409EB6F
-:1001B000A24FB29CAECB1559D7B23CC64FE7287CB4
-:1001C0006C90DCCD637A7C1CBBFDFFC67ABB9EF2D3
-:1001D000C45BAF769D7FCEF3FC202F1DE9262896C9
-:1001E00045F0DAB791AEAB0CF635DDDF86FBCAF031
-:1001F00093109B1BF8D89279745DF06CCB447FE12F
-:100200001CA3B407FCE6E44729CA3A09F281251B7E
-:1002100087235D52BC6574FB14F3BF2C317BD17F07
-:10022000B364B1E8964558FF2B680787297F45BD21
-:10023000A43596AF7F3D1CCC39B5C5D17030E5CC27
-:100240002D8EB3EFB211F139D1BEFF990FDFCBE59F
-:1002500025F69790E5B17E0AF0E70E94F9C165ADF9
-:10026000DF8390BF1963BF9713E051E8FBD1787427
-:1002700044AFE0D13233CA1F158F8E5815BF900698
-:100280008F08D5A2818ED5756BE13807E018C72F8E
-:1002900044F1A900E07844B1CF283E15001C553A3E
-:1002A000B8B395F1032DDCFE9498AF7DBB7568F073
-:1002B000F8DBAE43AD4FB40E55BFDDC02DDE08F800
-:1002C000B9219B88EDA80787C6809DE430F88B6034
-:1002D0005E9B0C947E91AF303FE1678762FDCEDA82
-:1002E000F95CB8647EC1FA4DC42712E1E5E5FAF97C
-:1002F0006A35703BAAC06910BEE733B9A9F5F3357A
-:10030000DBC24F83DED49CC4E4F7D90356A47392B6
-:100310001F9A03F6C2B97D4602F2A0890B15C27777
-:100320006739CF5CFCAE2D590239AEFA738FED669A
-:10033000FE5C99507B9D961B7CCC1FDD2CFF7225AB
-:10034000C0E5629ED002F672F39E587F20DD0F1B3F
-:10035000ECCF591DE987EF9B787F3D98D8EB0D4C8A
-:100360007F59AF23018067C48F70B410ED9A6C91F0
-:1003700080FFAA49F761E13D517E8726A5BE298706
-:10038000F9D3203F01E32E309473305C9A1E3DFD7B
-:1003900025C4579B7669E93B96FE1B2265EE220732
-:1003A000FD45D53B23F48FFE03C08BC9C45FC081DC
-:1003B0001F909593A7F5FB21CFA159F13FA7F78691
-:1003C000A6827E632D0B10E0FBCD2799DD3471FFF3
-:1003D000D637C13F689FD63F1C54A866251EA5B5D9
-:1003E000D726EC5FCB833F4BB5B7A2FC67453363A1
-:1003F000FCA72BB01DF8E360BC10BC82B881C0F430
-:10040000F2F58A5E4EF577E4F3F3BA46A2FE0EFAF1
-:1004100035E849AA3F0FF426D09F77E757CDC8A704
-:10042000EB9C5D50757DFE78361EFA29C04934215B
-:1004300031DEAAF051BF03BFDE57C78514FD8FB070
-:1004400078D03DBF48FF4ABA5C949F307E7F7BB432
-:10045000FF7D9FC6FFBEEFCAC5833281AEEEE1A429
-:100460004CA0AB891AF9B62F811DB0247F201E94B1
-:100470000974ADB63FC1FB30FEA1C61DEA21CE8294
-:100480007226887189BB5B88BB13F3407C2BA1DC8F
-:10049000B890889D14DF1B26FB58FCA38588374E37
-:1004A000607156298ADE208E195D263B6839460E1A
-:1004B000F6631CA489F6B0C90D7E9AD8EF9B89BF5C
-:1004C0005A003CDE73D118D34F37DBD73B15FCDE27
-:1004D0006866F18389CBB7F224CA8F9332CEE37C6E
-:1004E00008E8F7177AF45FFFA7828F2A3CFE9C5733
-:1004F0007513E05512F8D5E0BB878CA8C71CD791BF
-:100500008580DF6BECE4CE99F479F641E2C9D7033C
-:100510001E8B39D1FE44F5D9B9CFBC10E8E219855C
-:10052000EFA9EF2BA051BA120F40FD3F19F3472856
-:10053000FB2F01BA29CF55ED0E520271880F157E9F
-:10054000DA74ABC507FD85748CAFBF98CFE4C08B60
-:10055000F906DC3FB53CE08F53E8828E83FD255DD4
-:100560004562E2D73F53F055F58713254EB7BE3E9F
-:1005700089D92903F4A943FE9B5CEC35F890FF551B
-:1005800021FF0D7F6491002ED34E37D4C33A3E9D98
-:10059000954420DFE62E254EFA6EBE1DFB55E38BFB
-:1005A000FF40BA8889935E2A5DFC3E421731715242
-:1005B0000AD764900BFB74CCAEDD47110BFD8201B2
-:1005C00025EE2E100FC8AD7DBB46A21D3357F15747
-:1005D00053BE81F66B98CA37B6DFBE8DF3E0BB40E1
-:1005E00001E6237CA8F73FBF1DF49903CC4E53F7D7
-:1005F00063DFBEA17EE03B134F7F9103F0DF77F214
-:1006000085A190E7B14F89AB37188285E84F31302B
-:10061000F9DE600B1602FC5E57F0A6218996E9FB15
-:10062000BC745F18F05ACD8B8176765C8F64037F43
-:10063000CE31C54E3F4AED769817A5967E88F7D302
-:10064000FDCE8672787526D3A7E9BC002F8E1D18C3
-:1006500083EB5BAF67782CEFE5D0FF73541F3ED17F
-:100660004ABF3F9A7D156913413E5FD8DE07FD3FC3
-:10067000CD13A30879479F9FDF43BF3F378417C13E
-:100680002F59A7F34ECD067EB19BF943B4FB00F280
-:100690003A3AAE7B968473D06FBA303700F87376EF
-:1006A0007F11E6D3118748645A6EDECBEC476D7E2E
-:1006B000C4717D2CFE6BFB857581FFB219FE067D32
-:1006C00024BA7D9CFEBEAE7C561F2A5C46E13145B5
-:1006D000F24905517E80E637B2518E1C7BEC73DC0B
-:1006E0004FD2C5E2E8C7F59E39303FFBE4A0A13602
-:1006F0000A1FAF2E50FC5046A65F50FE6B88E637AF
-:100700006A7D7915899B9F525EC0E8DCDACFE4F4FC
-:10071000E07A86E7F7926779E0175743320FED6F7B
-:10072000849267732FF9ECA011F4A94029E6F18CAB
-:10073000581E443E40E78BF8797C630AF247F22862
-:10074000C3D7F93F3222FF984FE507F367B0BC42A9
-:10075000F228CB1F3AF19013F1B97C45B01CE9C1E6
-:100760004EDCA047BDD6F1A1CCD3FAB93BB852C8F4
-:100770009B9CDBE1443BF0EE5D4EDCDF890A5FAF22
-:10078000337A304F923CC3E29C773D518FE334265D
-:10079000133B8FFAB5DF007AC4C21D1CC6C32706FF
-:1007A00018FF6F108207414FD7E6FD107F6CBE0126
-:1007B000C82312A5C783FC211ABB2B76DFE54BD2D9
-:1007C00017B472667141427DE1EFA4C77F337D614A
-:1007D0005981AAC7C7EA0B60FF17303C64726D27C6
-:1007E000C7F89CA22F3482BE00BAB022A75539BFE9
-:1007F0004091F32778A667CC37AEC5E79A0296E713
-:1008000070370929790E6103E87F89F0788D322FDE
-:10081000158FBB008FC747F0B8E164B0CF887E0763
-:10082000F76EC8D368584E82566AB7CF175A509E93
-:100830000D118988F9AFD53E9C57E6126AAF51BCBD
-:100840009C0FB1FC7197AFC70CD25B34FA8A3A6F38
-:1008500015AFB5FAF5C4E57E1EE28BBE9104DFABA1
-:100860004F91044A61BE352666DFD4982C411EFCA8
-:100870000F93F567A2EDCF1AC1F322E33BC3EC2738
-:1008800046234B23D0EF74A7E737A3D2237A7B729A
-:100890005978E563B43F3D29D1015F57C7373B2BFA
-:1008A0003F298638AFD08FF62BC962F92C478A19B9
-:1008B0005C93E93E6CA570D50B32C24F6F12ED6DA3
-:1008C00076D8FF7E8CD385D309FA6DD5FDDA622503
-:1008D00032E4151F2966787FA458C4276D8FF9006C
-:1008E0007A176D4FFBAFDA67463E727EAFD50FFACF
-:1008F00004959323ECB43EE34FD40EA4E5B3FBACD4
-:10090000A8579D55E49B43F5DF9395B8FFEF2A78F0
-:100910002393AAA160EF11EE86A174EE44B5431AA9
-:10092000ED89E2DA4ABDB3FF5686BF46D46FCEDB0F
-:1009300043F74199CE0773E0FA14BC6ADE555DFABD
-:1009400000C81BAFC5CDA0EE2B057DCDC82FBDD5F2
-:1009500044813D955F1E5E06783FDC221A6993C98B
-:10096000233EF8FD6C5AFE68979E18017FB6DD9411
-:100970001284668227CB3B66F07CEAFDFAA3A128AD
-:10098000BEB368476CB931105B6E26C2D15094BCBF
-:100990006AFDA0FED76F45E1DBB902AB03F08048EA
-:1009A000C47D91D2D3F107F7906320BBF93B52800D
-:1009B0009FDF45D9563C7AFFFCC185BF7E8B7E27E1
-:1009C00018AA3E2F40FD5232007DD5523D279E9DF4
-:1009D000BF4DE16B4663CBC9AD143EC6D78DEE3635
-:1009E000DAAAB7C0470AD3C13E0EF7C1BE1A479C68
-:1009F0002981F846D5882F30BFE4FCBF1037C0E905
-:100A0000BCB912F1E9FC46B3047E80EE1C0BF3CBBB
-:100A1000BFC1F9396617CE184FEDE9853815E0BB2F
-:100A2000E1951B41AE4C308A2B445CAE4987FB4DAF
-:100A3000AD63FAEC36C82BC1CFDE4D0DF43637D896
-:100A4000D1FD362086A98512CB9FE05F3498E89FC0
-:100A5000CE0E4F511BFD6E91378940DEACF0A5E004
-:100A6000053C7B18BA8AB22B8715323ED3680A1927
-:100A70002AE977CD5F2C9D96AE8BC47D8C7A9F67DB
-:100A8000289DB77E4F6970287DB5A0B51AED672AFD
-:100A90001F185F3CC0F8E2826595F89E9B390DD720
-:100AA0007B82AE17E0F2E64623AEF7C4700BFA3352
-:100AB0004E6CE1B0BC403460DE2DD5A7D22A1DF0CB
-:100AC0005E2F1AC96078346F7878E5465AFF6E3623
-:100AD0004F388AFF7FD9FC738C4FFD85B0F1E55DFF
-:100AE0003CEA697F11C3E54180A7D4628BB6D71772
-:100AF0006CE1BDC02F176CB9F7DD0900B799B79548
-:100B0000013C26D99766489648BDAA9F0AA915DBDD
-:100B1000812E277D59DD3F09F4C42D946EE8BC0574
-:100B20001DF181BDF4D696EFA27DB0A026C90EEBD3
-:100B300093366F9B0AF2F82F354374B8AE9738227C
-:100B4000023CECAD19F07E012778E3E1D5E1021E0D
-:100B5000F1AA7284C50DF271C1EF78C4174A67B764
-:100B6000425CA9718B1EED8FB7661EFEFD6C47843B
-:100B7000CEB8991B664C84EF7FACC7EF07F4BFCDAE
-:100B80001F7F007E17F84735119043083F2DDD1970
-:100B9000472C2F847969E96FC18A964296EF717963
-:100BA000744836333AF41572C8A7BF011D2E2CBC09
-:100BB0000C3A24C35263F48EC17C4F46BC55E3E526
-:100BC0002637F16CB3607E9487A3FC7A6DA180F523
-:100BD0006B0B999D29FCF59E1DBFA2704A2BF4FD5D
-:100BE000A010E42BF194827C96C26215B8E62D8A9F
-:100BF0009E4B36B3F318600FC1FEAF4F27DB3BA30C
-:100C0000FC5F8F417FE9C817DAA19FB37FFCA20F79
-:100C1000F6AB29E74C09D801CD17FE0BF36C2CFB82
-:100C2000597E96C51DC6BC35BDC38BF8A8F2FD66BE
-:100C3000379343DA755D28D4333EED08633F635C38
-:100C40008C3ED5F8F4A6D6248C136E72F8CDCC8FDA
-:100C500045F553DAFFF4321EF98CA9AC9D801C23B4
-:100C6000153CC6F7267DF16B02F1D077AFAD7683E8
-:100C70001E6C297B5348837556E895FA9FAECAA52A
-:100C8000F5BFBE760ADA73F764F112E853D3CBF2FC
-:100C900064949F1E96273FE98B14A4C319F5335023
-:100CA0000F56E7EB2526C942F1642625D6E8F30462
-:100CB00033AE354B9628FCFAB48B9BC6EC0029E585
-:100CC000E631CCEF162866F23C1A0EF7641970FC78
-:100CD000D905952F01BE4CBA8EEDC3A9978CFE1590
-:100CE00074DC53E6F8FADDFE42E647C815AE47BEAF
-:100CF000B4F42523E66B9CE6E27F7FF72A1EF3CC53
-:100D0000EA5771C44FC73BF5FC6B39C0D73FDAF6E1
-:100D10005A4E6DD47C12B5FF6361227F76F0AE68C7
-:100D2000FFC074038B139171C6187FFF749B721EF2
-:100D3000E612E35FFF9430EEF38B6130DF5F0DC4AA
-:100D40007DDE19161DFF1A8863BA59DC471BBFCC1C
-:100D5000AFF83765BEECFC41ABA0CCD76D6471AC8D
-:100D6000792C4F62C98134C4BBE986F0E318DF7C7B
-:100D70008317953897C784EDB3587D8275118F27F7
-:100D8000DF518EFE319C0FB7870B5A6DDF627D8479
-:100D9000C5B5B4EBABDDCFC78DD336BB585E48725B
-:100DA0007118EDC0A3EF3C0B991803F86EDEEFD479
-:100DB000459F5B19D06715FCBE09F09BAECFBC8A7E
-:100DC0009513E175227EF5A822B755FC3EBA2A2F6D
-:100DD00005F0ED215353A88FC2CFC3A710F3105ACB
-:100DE00056F241E40FACC88778052E4491835B3EF0
-:100DF000B0A27DD6AE6F7906CED9C96D02D946DFD5
-:100E00003B929AFC6DB42CE9AD9847777FD28CADBC
-:100E1000608786A882CBD1F2E74947B6829E404CD4
-:100E200029444FC791AB94F60693D84EF58BA79201
-:100E30006DC85F5AEF2228BF334990E32840DC2376
-:100E400073991F7CD16E0EF3E729C583DEE7CE8B45
-:100E5000AF8F168C64FCFB8F905045D7EBAE8EFFA6
-:100E60009D7BA4EAF7137CA128BBF461CE2D29F960
-:100E7000E404F265F5A47F36F265AAC7FF9ACA8337
-:100E8000A1FC2BE8FF3EF6A0EF9978E792D4E75D4E
-:100E9000D5F1FD0A1394715D5D9C5F6F43FAD56DCA
-:100EA0008DA15F25AE6BCD70530903F17C16B7CDD4
-:100EB00027EAF9940D10171952C1E668F38408E87F
-:100EC00017595DD7135F1AD0D3C44C906F4BE6C54A
-:100ED000DAB959B5ABB2D10F597BDF0C90DF1BF4F7
-:100EE00096555C0A3C63FD871B34FEC3AFE30B5988
-:100EF00009E9664216F8633644E2C1883FED73455E
-:100F00003FCFE12A48749E4346BBD4E7033DA8D2B5
-:100F1000E4EE710FA61F52E1CE8275BDA8EE9B4292
-:100F2000CFCD0A6A72FB39B44B07F343059E8DC3DC
-:100F3000109EE6AEFBD16E4A2E657EF7E4FA5A1F8C
-:100F4000F09F64CA7FC08E33185A38DCFF89CC6E9C
-:100F50005BC2B1F2924A5194E9F7069B923F7D033E
-:100F6000ADB7039C7CBE68BFC335BA7B2AA3F3B47C
-:100F70004542DB031F9EC5C69B6E5ACEF2C47D540C
-:100F800047CA8EC0B14A81637E45123B6771AF0983
-:100F9000FD719BCD5D385F9DC4ECECDA4E33F2BB46
-:100FA000A1BC0BE352BD7A861FB2D584F4EAEE7D74
-:100FB0001FF305875E9D25F1CE28FC59CAEA55BC72
-:100FC000209A3C138341EA037F239D881BF2949669
-:100FD00070525F15AE4B0CCB6E58B7C2974B9298C0
-:100FE0001CA1E66616832B8B3B6AF68BE20D8B0306
-:100FF0008CB1303F17F149A87769D63B186FF6BA24
-:1010000080DFF60EE0CD1E573C7EBBC62EF5F544C4
-:10101000E30B9156821FF8111D0977C6C31F77ACE9
-:101020009DAFCD9BD4DAFB4DADD55EC5FE904DB8DE
-:101030009F06B43F9A96557A99FDE16A037F59F36A
-:10104000722AA9689BEAFD9C09FA6B9E6543FBBB6B
-:1010500079CF4ECCA7689A46DC308D5AC59FADAE8D
-:10106000F3A89EC549A9CC0A403E47B73DF4349C3D
-:1010700083EDAE57F3BA589E93BC8753F2BAD43C73
-:10108000C0F011F0D7767312FA6D07CED3D2FD6798
-:10109000F95C979717682DF63AC112FF69C17FFC7A
-:1010A0002629FD32F2AAE582755F9D579D742BD4E7
-:1010B0009B602F947A4003AA2FAB658F59827CAE38
-:1010C00048BD40ED4ED31E8EB597D7DC3245C07378
-:1010D000704AF9F327E1BCEB1A3389192F7A7E8223
-:1010E000A67F302D2D92FAFD1F664EC9C73C48657C
-:1010F000FE154F7A86D1FEF4B1FD21CA28EDA1A0DC
-:101100008EF7C2E863DD8F0E8BE8ED548FFF6CE441
-:10111000F888FEFEF0E1E95D63E958C9E26778EE20
-:1011200050D5C39B1D2CCF5A8BE77F53E414B58752
-:10113000A7826AFDF0ACC55EE877200F72FF5C0FF6
-:10114000D8C16A1E64F3722F9E3FA47ABFCE057980
-:10115000D57F3C73E220013BF314FA039A2F08CCAD
-:101160004F4EED078EE28B69FF5AC41FB243EF0763
-:10117000D74EB75D26808FDD07B8F1805F84B4E479
-:10118000DC42617F9BCB9384FD25C83FC873313F10
-:1011900077B3AB6A6321C0FA398E803EDEE9FA1478
-:1011A000ED8AA6BD53C6479F97ADDFB38E9DBBDCCE
-:1011B000A18FBBEE3C17CB776CDAFB2AC67B4EF9CE
-:1011C00039A4B985827F35D89B0B17EAC0B2226556
-:1011D000FEB998374D661908CCDFACD821CD3B6EEF
-:1011E00092E1FC6E33FD8F9200D9E49D8FFAF6A652
-:1011F00059260BE40934BB6A1723BF13933C60CA1A
-:1012000069E739900FB92C09F3AA3AF7E8A7819D4D
-:10121000544EE9E26716E0ABEF39B702FF4C1BC74B
-:10122000B78B90771A5FFF2E1AC5E45007E795FF3A
-:10123000B90CE338243ABF7DC41E667F4D74196231
-:10124000FD932E66175E2BF75703AEBD218492C126
-:101250001E6E269E4FC0EF45BC1609E3582480FE43
-:1012600040C78312DA4D2647E891B1507FAD8076B2
-:1012700093EA4738BB3713F5B1975DBEEFC23E9690
-:10128000F3A127FF19E0F688A0C4C3185FC9B9C944
-:10129000320EEC2BBD83E93366AACFC0B9A1EB5661
-:1012A0001FFF6535F0568717F50842851CDCEF50A7
-:1012B0006DE2583C48A33713D13D19DA4F55FCD2A3
-:1012C0000574B74E9810353B2EA6813FC32103BC51
-:1012D000DFA10B48A3F55388A783ED0BDBBFF50611
-:1012E000A6AFAFD799505F57F5E164473FDA898DD4
-:1012F000010EC76974BD82E7471629E71406CE0BB5
-:1013000008213C3F51EB4A56E2B01D0C3F493FFAE1
-:10131000C3C88B6C1FA8E689E72A54B8ABE70CD486
-:10132000FE0C4A7CB751F1E75280317A74A9F1DDA5
-:1013300015CA533D07C2C62582541EED775C5F4334
-:10134000483FCE4BB2C17C1FC9F0DEE7A2DF1FA52C
-:10135000780C78767455B29F708047FD1E88D3C88C
-:10136000A52CFEA2C5A7475C9C72CE2C3C15F3F0C1
-:10137000F6263867B627F69C19E50F8BDFA6E394AF
-:10138000951D76037EAFB12BEDAF2778BE407BCEA7
-:10139000AC4BD987FF73E7CCDC9CA7873EB7BAEC90
-:1013A000B1E7CCDC6CBFD43C19EDF9B2B3D94181C3
-:1013B0009D07093DBD0DE5A511EDC2D73FEEEB0040
-:1013C0003FF3B952831BCED564DCF64E07E62B7192
-:1013D000420BC44FB5FAC0EF9CD53F01FA5977CB09
-:1013E0006E37E68F6BF481447E008CED46F9890EF2
-:1013F000B8AEAC1FC0DCF5B90DF0ED34177E1CF2B1
-:101400009AE5037CDCBCE60F5C89E2629E59D1FA66
-:1014100069879AFF674F8AC987ED4890FF9748EF21
-:101420001712E6FD5D8FFA5BC740DEDF34557F8B18
-:10143000CD6B1693BED25E56C79F1672C6E4117C62
-:1014400072C9EB54EC9804EB4B64B75D6E5E841686
-:101450000E1D09E4E85F5D03F13F4D5E8447843C67
-:10146000820EC823A04F812332FACF760EE44504C2
-:10147000D15FFCEA48F47B1913E645B0FC3EE1C0BD
-:101480004809BE7B58EFF5803D23EFD42B72C0FF97
-:101490003CF84D3A0E64A39F8DB84225C01F05FB52
-:1014A000D42CD0AB3A14FC6CB8F4BC88B4A2387914
-:1014B000115BFDE31ECF65F6737F32D5CBB61226E6
-:1014C000A7E4FDCCAF49E78D7EBDF063C3515FE576
-:1014D000669A701DC7DE30F618510F77639E436D14
-:1014E000162F827CE9AE293F01F2EB18555C818E04
-:1014F000EBEE5E8EF66BA2FDA95B151B7756DF5FE8
-:10150000EA3E8D2B62FB7414EC7B14B432FA8B1719
-:10151000AEE20E62FEB626EE5D56441439119BC74C
-:1015200070DE5C89F1D8FB9EA8C138EC7CD282CFFA
-:1015300085A44B89CBB2788BB44A403921EDE0FCCD
-:10154000929391890E6D7B5187F7F550F1B609445E
-:10155000A24CA9E66AFA9AD371A0A74A1DB49C4985
-:10156000D7B55A90B3E8775BDF4F46FFEBC30E4920
-:101570003957C3EC2FF9510EF53FDA2FDACF720746
-:10158000C51BDACFCD452C2ED050C4FCC91445FC68
-:10159000381FE5D9A1E47DA8E3B5115D109E3A8E10
-:1015A0003D1F168569F1F43BB5BF0E7D8B09E22D19
-:1015B000E1E13A8C679E377866613C30B59080BD3A
-:1015C000D8616D59358DD5230F3D6F0E7BB1FE3B34
-:1015D00002331488940AF3BD41D90FEDBECEEB8AD5
-:1015E0002D6BF313B4F77ED411DFC8ECBCC1F760E8
-:1015F000DC50C4E4E1F94EA7B22F6E8C9777E8A5D2
-:10160000DF38413EAE16500EB70D6370D30D67CF75
-:101610005CFBE4592887ED543FC5F9B2F9E77EC772
-:10162000C101FD75D8197E7DDB796BE7BBB4A810CD
-:10163000F7AD038C063A5EC76ACECFE0C5E67DA95A
-:10164000FEEA278AAEAC9C3AC6B9B70701CF2CFE9A
-:101650001F81DFAFAECD28023F3BCD29F4BF9A47B3
-:101660007EB669612A968FAE2A403FD000DD9E5C2F
-:10167000B918EE33B9D47C8AE714BC7857E387AB4A
-:10168000ADE0DE837EB47007841254F9439B56DFCD
-:10169000543C15F863938E4899A00FACD2E4B3681C
-:1016A000E8798AE47BA508EC0F437F1FE353A1424E
-:1016B00001F56FB31BE0B64E776CE7CF015F769A0A
-:1016C000313FB26979783BF82B3325DF5E68776666
-:1016D000D9E1A99C84DDA19E74EEC048BC1FA7B6C9
-:1016E00043738FC7A3B1793464552ACBFBE88E7D51
-:1016F0000FF737C4B41B945FC3F4D6F5065F11D857
-:101700001793AE6379891FD7EB08E0C5C766863F9C
-:10171000F2635645CEB80BA3F5DADF6BF1E3313354
-:10172000E2479D72EE4DBB1F8D801F74DF1A14FCC3
-:10173000F8F8D5AB0B013FCEECBCBA10F063BDBEE0
-:10174000CB03F4B53BDF7718E0717C8AB74FC7F85D
-:1017500052E1E5E0ED4757186F2F55BF328D4A141F
-:101760006F91EE888EB7F4EA999F4C36C79E1BEBBB
-:10177000BD4CBF6A62FF58517EAC7FCC951F57BFEE
-:101780003299BF52BFBAFC75103C37A8C6617AAD1A
-:10179000E1C7B747C16B8999E5A32C291245B91454
-:1017A000D6579B87E710FF6872F77057749D317E9C
-:1017B000C037BEC85BD905F3F030BFE51B82D477D4
-:1017C0000D1DF70DC2FC96DA75DFA8C46154BB5B32
-:1017D000B503B5E3978C627AE6A4519E52B00B260E
-:1017E0007D7111FD0827E11E2C3AAEC9FF33B4E725
-:1017F000C87E4EC4738C128B8336ED9DF72CF85D3A
-:10180000EBFD4AFC721787F67AFD739F60FDD93DA8
-:1018100075586FD9CF05210EDA3C4C87725BCD7FAE
-:1018200050FD3FCDFB4BD1EFA3FA7FE83CC6805D76
-:1018300099EC081B906F817D49DB35092CBEDBE4F8
-:10184000206E1958ED9E58BF899A1FB5C96B407A12
-:10185000DFB49FF3833D9E61F03987213C87892760
-:1018600092237C63FA28CF4AC87352F3EEE0FE9FBE
-:1018700051E3D10F9A83E710F4EA7D2FB1F7F324F7
-:10188000C2E70509E986CC89C6B790260E11BA626F
-:1018900079CCB351DFFE6FE2457DDBA7C1B75002C3
-:1018A000F9D23C4ACD63BE15F57DB5FDE0FC7E3F27
-:1018B000CBEF1FC8CF6379FC0DD309E9B4B332DC99
-:1018C000EBD408F73AB999BC0F6AE47D7419F2E1D8
-:1018D00082517CBE41E8C77302EA3D4E901F17FD5E
-:1018E0007D139CDBC963797231FD28FC3F93BF07F0
-:1018F000E35571E2C47744DB4B8754BBB0543D17CA
-:101900001636803F6A499B230C718F4356E5BCBA5B
-:1019100092AFBCC41C3E06FE9A25CF67E279A201B5
-:101920007BE425A3E2EF6774DAC0FE24CD0B8FA21F
-:101930005FA219EEA5E022FB363DA11DF98B7C8844
-:101940001F1D1AB023DFC987F363AA5C687033FEDA
-:10195000D6B08763E70803B1E7C85E1E7565E58406
-:10196000FA5DA2F6874625B24BBF0ECE0CDF0F25DF
-:101970003A7FA7F075158E5ABCBF5CF8A9F503F045
-:10198000A37C08E583067E5ABF9FEABF231D22FA87
-:10199000F7A80E1580FC53D57F77A9F2FB43054EBF
-:1019A0007F6FF94D4627E243DF6E7F12F1A3CBDD57
-:1019B0009741F21BF6A724B1FCCEAFF83765DEDA0B
-:1019C000BC0965DE9ABC8943FAF00C760F0B858F53
-:1019D0007370DE4442FCFB9ABC896FB04E4DDEC48E
-:1019E00057AF539B37F1CC81A76C105A84F38BE02F
-:1019F00027E9DDA6C77C81A9BCC5C3F2D97896FFCB
-:101A00004A3C785F6FB3C98CFE106DBE1FE5542B46
-:101A10005B401FAEA0760A9C97DAD28E7A4463367A
-:101A20008FBE55C86F14A538F9A4424D4A501A9C70
-:101A3000D706E70BF05E8BCBCC6BBB66B4D581F2DF
-:101A40005722CE6F985F5A3D1AFD0F5F9DD7F65C07
-:101A500001C3FF372D9FA545DFA75B552C13885386
-:101A6000253A0751339A1BC85BC6F38A824CA2E51C
-:101A700071A276B34733FBEC4D43F8FD00E881B427
-:101A80001B88D36619A8F55F16B9AFE13697F7F64C
-:101A9000D1E9A83FE1FE9EDDFB078C4F3C934D440E
-:101AA0003897F08C5EC67D96D309E2B59A7FA18EF9
-:101AB000734E89A35D2AFF593CFAEF2B171EFFBF17
-:101AC000CE7706E569317AFC06FC06E96F809FE86F
-:101AD00059FC4ABDAFE56BE5DC95E6339AFC9244D0
-:101AE000EB6A065AA4F8F3CA68EF8B8C8E3CE817B1
-:101AF000BD5CF9975C46F52180C72EA304A466520D
-:101B0000EE65218F66AB7E5C769FE79AE1A82F7F1A
-:101B10006C66F355EF9B51D7F3B6163FBFA5DDFDBD
-:101B200078BEF7E7405FC72B3D780EFC612BD3DB17
-:101B3000C2CFB33C7DEDFD29946ED87D32CABDE0A5
-:101B4000DA7B20FE38FA1F23BF2F8CFEDFD1AFFED9
-:101B500051F2FBF2D7116B7F1FB2B23CC888FDFD7A
-:101B6000BFB6AECB92D76A5E747955BF129FE008BC
-:101B7000C427D4719AFBD9B9A2A1CA7916F5FD8DF3
-:101B80008A5E7867B167189C9F292B0B3E0DE76B27
-:101B90009A880D7FD7A02970FF8E5F39D8F9662CFF
-:101BA000BB587C95782D785E3FADD057588CF41B90
-:101BB0005A09F439C241CA21CED1E99A49EA2C988E
-:101BC00037310AEA472C0F3DFDAB32CC1B6B017A53
-:101BD00055F3A6CB2F7EB6725A19CE17FDD50E63DC
-:101BE000ECBD333716337B507D4E53E64FB73D1B6C
-:101BF000E67366213BEFDBECF088E0F756E3F4C9CF
-:101C0000523FE63934ED62465139D88A50FFC03030
-:101C1000A4AFA65D95A510BF25017329DE07FE2799
-:101C2000760FFF996543D03FFAB2CB5709F3B696CA
-:101C3000F9AF07BB7F041D07E2BC67765E5FEA8BE6
-:101C4000C33733F95419E2E0993C093C2946F816A8
-:101C5000B5F767A37F7B6518FD6EA5C5EC7DB383E3
-:101C6000C9F5E6FD35649E2552B63862CF8B4D1A14
-:101C700035A514E6515A2C2879A42C6FD549D530B6
-:101C8000F0736AF1C9A9E4ADD62879D9443645F292
-:101C9000B173BF3E6F559D9F5A56F356932F30BF79
-:101CA00043AE68C03C17EB2AC657C97282718E6B6F
-:101CB000C3FDD529144EF9DDC16B014E290076BC58
-:101CC0006F39F4C858FADE91265C0BFE9BA75BC700
-:101CD000F582FE2BACEEFF0E6C89D42556814B3479
-:101CE000ADD0DB887824B4B8802F55FD4ECFCE55CB
-:101CF000AD4E46BDB23BA701CF559D3D6C8C7B2FB1
-:101D000085FA94C98A2C8893E4AEFA77CC63B0EE56
-:101D1000E2E29EBF7BB7D8A29CBB5A91057117EB3C
-:101D2000AA7EB982F69FFB184714333A9BCB027FF9
-:101D3000B6A003F95AB787DDCF58D765AF32A1BC3B
-:101D400061FE2572AD03E588B0FA461DF009A18D4C
-:101D50006AB1749D6F17B3787A41B7A80339F5AFAC
-:101D60005FF271E35E4F1447CEE700B81A8DE1BE13
-:101D70002C67242F493D97A3FAA706E4CFAEB9E814
-:101D80009FBAFC3CF4F0ED98E7F86506C683A6DB45
-:101D9000983D420591723F516CFB41F713297A8BB4
-:101DA0006A176BE9409BD79D5F3104E982F2D1C08D
-:101DB000263186EFC5CDEF6E1598DE4DD7615802FE
-:101DC000F3A8CC72833FF152F3E9B5F6F4809EA3F9
-:101DD000E825EABCBF69FEB95ADF0079E771FC1F4C
-:101DE000AA5ED3A19E33FF92DD1F3742B1278E76C4
-:101DF000FEBF12764FA79AE7E267E754F4947F227A
-:101E0000FE84AE93010F76D9754DC5180F6BC27E57
-:101E100056B3DFFF18B12A6F4545193C45C25178CA
-:101E20001FDDB76804C69B295D14C4A18BC5C5EC32
-:101E3000FE06617532E2B1B09660D6A660CF403C36
-:101E400016D6317C5DA4D0BD9A67A7C62DEF2CF6BF
-:101E50001D2B4E8FBAA7A53589DDD3A2E4AB5B5B02
-:101E60000FBF04F79F3CADC4AD7BDF183D13E38982
-:101E7000AB050EECC3F3F6B923C07F7756E1DF560E
-:101E8000A19F8896687AEDC5F38EB907D8392D41A0
-:101E9000C9AB15563BB6027E9A9D3E3CD7F99D8E46
-:101EA000208F795BE2F127A7496077840D906777EF
-:101EB000AA4D08AFB0A3FE14E327D3FABD8810C023
-:101EC0003C22DD982BAB47A9DF256A2F8D49A83F1F
-:101ED0007DABF322E46BFC53DF16AF13F9A72E7F23
-:101EE0001DDA7322CC3E216FB07CAC38EB8AF15FF7
-:101EF0005EF175A97E4B6D7EDD203A66FE0FD51E24
-:101F000052E325C423C7E4BFF7EAC520E83D904F5C
-:101F1000FCAA1BF4EA1F9BA3F3DFAE1FA38BBDB784
-:101F200092F8CD701F429D723E9A08EE5510B7BDD3
-:101F30009FB776817DD70EE71240BF04F87251E754
-:101F4000333EB0629E46ABC0CE6F10999DFF5832B3
-:101F5000AFE5C7D07E495BA608F097AB5A7E8AE70B
-:101F60003B74C4DB4E9F9F2BBF87A3CE473DAF90F2
-:101F7000487E0E3AAFF035E72DB2139CB758A0E07B
-:101F8000BDEB2E82E72DC82ACF569857779B40206D
-:101F90003E9D3A8D95470826FC7D2633E47DA7E1DA
-:101FA000F958CCCF0E5378429EB919F2BED3E03C1B
-:101FB0000CBBA7939B390DF12F95C207F482763D98
-:101FC000BB9753BEC582F8543D8DC55B53BD06E437
-:101FD0003FE7881BCF09C8707F9F03F06C05E2675D
-:101FE000D89A81F1E2D47CA6479ABD069DC9897929
-:101FF000DD88AF614ECDEB667CAF7BAE84F9F60336
-:10200000F774CE23B83FAB0BA666C3EF920CB9C9E9
-:10201000C0417C499533550A7E746F55DA37B2F664
-:10202000708F27CC8F2C61ED07EEF1FC3EAB6F1566
-:102030004278AF14D561947B2459FD92D919483F59
-:10204000BC722E97DCA69C2BE0D83D644B660F61DA
-:10205000F536C607C9DD498A3C57DADF9BEA57E205
-:1020600005EC7C40BD4EB9EFA08B44C79F553AD3D9
-:10207000FE3E4784CED8F9922722E704909EDBAF3C
-:1020800017310F52BD87B4CA6260E7CE4CB17435C8
-:10209000694C2AC3FB0AB709C65DEBF4FC644C5CCF
-:1020A0003F8D7F6E345F19A2F295BB0D1ABB2C9346
-:1020B000C1D5167E9A9D4F335E965D96380EFA7C9A
-:1020C000766C1C744776741C54DDDFAA8506E42BFD
-:1020D000DD76E92DC897DA44410BF73A6AD7BD6936
-:1020E000E07E76BF19F452AD3D7828415ED4E931E7
-:1020F0004C3F7427F0439C1E93C8CF9520AE5C6A7A
-:10210000FC5F8A8F33FEDB9BE03CE200BC54BDC920
-:10211000A48D7BC897E5F7E935FD10F9A0A75D20F0
-:10212000E6EB6859737E8EF241E48BF20AA3D8EE97
-:10213000003EFA43E48BADD4723546F1456A8E5EBB
-:102140000DFCB8F74117FEDED55B0FBAF179CECCA6
-:1021500005F8B1F00CCF018DE993970DDF83FBCD2E
-:10216000CF59C33970BF794A207516DC577E2E3D92
-:102170007C04CAB69FDEC1CA05E1A7E1BEF3FC9F9D
-:10218000FEF27B58061A1B42975B12FC9E5C0CF712
-:10219000EE8756F6837E5FA63977A0B97F19CEC742
-:1021A000C27A322D068C53672AE792C964C53F0470
-:1021B00099694077D9A598576821D2AE7EA81FC6E5
-:1021C000E42EAD6F83FB7DDB0B9C2C6E4E181F2025
-:1021D000C394BC131292C11FD5EEB463FB01FD6E14
-:1021E0009751C95B63E3BFF72ABB37493D6F4D8801
-:1021F000381CEC468B4462CAEA7DE6441087C3FD76
-:10220000C3ED6ABC5A291FC8F48D2A89B25FDE9BD0
-:10221000727F31ACF3E3DD0FE4833EF55DE577E2F9
-:10222000B478F5D7B14C8EAC48FEDB1CE0E3EFF39D
-:102230003637F80F9666FACAA0BF798EB6F1768A5D
-:102240003F93C54AFC3DAA89F26C0EF88AFD6636BA
-:102250003FFB642F37AF38F23B55E93E01FDF4C434
-:10226000D7CD83BE9D7EDC2B027C1A4CE11C81F60F
-:10227000F381C33709FA3D3FF7C3FB308F70C87B4A
-:1022800047E05ED4F7F45DD536C027A7720F36114C
-:10229000F01C50DFD0113DCAEF6DB1F340059C1228
-:1022A000870D4E06B9700361780B65A8BF51B987D9
-:1022B0006EAAC8EE8D9D5AE6C4DF4F9C41C202E073
-:1022C000C3D4F7BD3602F471B3AF2CDE3D1BEA93E5
-:1022D00064E9A568FAB95E8A2A13C8B7882DFF9306
-:1022E0003BB6FCCF155F8E8C2ED7089E3B60DDAFD2
-:1022F000734CFEC81398FC11496005C8C7175AC42F
-:102300007118577770329447BF3604F3A84816CB3C
-:10231000BF1865CBF53338E46D867585A99CEF71E0
-:10232000C0EFB0B1FBC532DE376C85FB2088246D71
-:10233000063ADCAD77619E6986A5F6676DA8CF5831
-:102340004901F2296933E2B5D524C1EF961CB4B234
-:10235000FC89F6B53A8C37713693CE43BFE37B04E4
-:1023600026FFAD0BABA19E2FA71B426575AF9DFD50
-:10237000AE5BFB78A25F510AFBE67E1FF522AB093C
-:10238000CF274CB6B9EE807ADE66C0FB2B0E5ACB57
-:102390007DCA7804FA7FCEBA10DB038FD653FAEDEC
-:1023A0003533FF3A4FEDE3156C7CFCFD46FE1EA273
-:1023B0008C6F220628D7123C6FD06B17D97CEFD5D3
-:1023C000613C04EAAFC3F999B05EBDCF3272BEB7CB
-:1023D00052C0DF21E088121F6BC3F2530A1F6CD773
-:1023E0008B07014FE58F0881FD986CBB8074C0EBB3
-:1023F0006C6EBC1FC843F21D1984F92CE8F77C866B
-:102400001884FC7BFE1E1BDACDA0F940FD50F813AA
-:10241000E95AF09072C53583E3798E021E8FE08809
-:1024200017F6E354492EF2A36775EF6DC0FC0A8BD3
-:10243000D7E8A6E3186E23B8BFEEE4F8E77AF7967C
-:10244000303A1DBC7FE55990C7C1D92A2478B65BC4
-:102450002B2438A7D46B776779A3CA71F6C50F7898
-:1024600013D91753505702FBE19640BFF8FAFE68A4
-:10247000BD05D623E1BCF8216E09ECD07C1BED87AD
-:10248000F27D775AFC759C52D61150EE2DD4D6FFB2
-:10249000BE4477A5D7A9C1BF6FB9CE8CD8755EC130
-:1024A0007986B82B304F3E87CECF12991FFD13EFA0
-:1024B00051BBC1A243FCBA41BD1FCA157B4E447B30
-:1024C0002E8490E51B81CF7C57C977AD4AFE17F467
-:1024D000E35F4FF57C906B7DC93FCC877CD3A92906
-:1024E0006D1D8C385ACECC037E6CE290EFDC4882B6
-:1024F0002BE1FDB94ADF33F63CE4FB7F2B190FF7E4
-:10250000E9FA46A6D2F2C7FAAEFCC54EE48B1781B3
-:102510002F5A4818E9EE06F8BD46A0BBE9FE0E2882
-:10252000D3315AF09E304A8740B72A1D0E9E3FA5F0
-:102530004BFAFDD0161B9EDFDA428278002F8B7497
-:1025400071CCDFD282728B48C323EBA4443BD5D439
-:1025500082EBF8799B8CF2E1BBF6270528DF5CEA79
-:10256000738CA5F39A35F613FCBD0792357724D802
-:102570009D74BEE963FF81F31D7CAEFEABF3C8FE24
-:102580005EF6E884B1B1F6A823E96F9807277136A3
-:1025900037A1FAE3807DAA37615E42E41C72B80E6F
-:1025A000CF3B73295E9067EA39642DDF9D741DE38C
-:1025B000BB1F2FB6B957E03D923BD02E6DBED9A2BE
-:1025C0009E5346FDAB79A14E39A7CCA15C6922266A
-:1025D000BC2769E0F72CE93F2E23F2BB34FBE0BCBB
-:1025E00072D9579D5796F03CB4BC9CC5E907ECBB2B
-:1025F0004691D9AFEAEF9BDC9BABFE0E05D3531699
-:10260000934BB26FE39C6346BD91A4E814FB95E93C
-:102610000BDD13245126185F657AF86C03D6AF4F93
-:10262000F2E3EF05D5F15D88240D63EDCAFD0F7E61
-:1026300033FEAE98C15D087C428DB3EECEF7358F88
-:10264000A5FB34AFD893C3D1A5D41958FC94D2C1FB
-:10265000E67EDA6A1A69790E7E6FEE7AD2F25B5DF7
-:102660001ED2C1BDF0FDACD19FB0DFA18BD0C17D2A
-:10267000400726C2FC01372871A2D73FDEDE01FBEE
-:102680007E8E23EC3C9A4B7B1ECDFBC3B12C9EA5CA
-:10269000FC9E542CDF899AC7713D9B8783E7711E8E
-:1026A0002BE3CD63101D123F8E4FF7B705CFCB6BD9
-:1026B000F0483B1F6EFFFD789E6FF3ED44E42780EA
-:1026C0001CEF37033C870146E4C13A7DEB609DD99E
-:1026D0009062099354ECEA41F3E62DB8AFB7CE1EF1
-:1026E000C8D399915D0E712236EE53C94DEBC0EF00
-:1026F000D17CBB1EF97BCDFE31A8A7F5C94611924E
-:1027000020C964965FE3A6FF8379CD229E2976DAFD
-:10271000CF4D620DDE0B77F3746D5E8EFC500B6D4A
-:102720007F8B92E773EBCDFAA3D1FAE639FDA37A5A
-:1027300080835C6769E127427F42A4BD73305C06F9
-:10274000DD4BD5C1F813A17A0EF4DF5E1140FE9483
-:10275000884FED1D3B709FDCC86F98EF73702CE2C3
-:10276000ED57E7FB6C57EEB17A4B1FC6FB51DF4EBE
-:102770005FB079315DE7C81F15E3EF1B4FC9A87F34
-:102780006E2D2DFF78D3282CBF9D71FBD2F7A0FEB4
-:10279000E9422C4FD67D3207E8C1553EFB06F85D75
-:1027A000E8B7CCAC9FAC245F770DFD2EAB24771C33
-:1027B0005C6033D910C6EF6E1CDB7815F8632627F2
-:1027C000B1F2A1D23F8CC372AE521EF7FA2828BFD5
-:1027D000C57D32271E5F1CEDE2824554DE4E4E65FC
-:1027E000DF4F1FF7FC10B0E32757B1F26877E5EA37
-:1027F0003CA8D77D3A279EBE7456E1AB93BE38D72E
-:1028000091E680B030FBBDE2D73C1FE2EFCB78A968
-:10281000BC85FB06BC152C0EE7F5940AF07B6655CB
-:102820001E56AEB6B465031F9CE1339441DC55B42B
-:10283000383B44DA2EA5A2723CEC7B3555B721CE4D
-:1028400049E9EB53A4AFAB3FC9B1A15EAAD297A8A7
-:10285000477A4F7CAFE4E76CDF62E981F6F705CA9F
-:10286000CF6B62E5E7207AD5E0E1FF008B7F42C5C0
-:1028700000800000000000001F8B08000000000026
-:10288000000BED7D0B785445D2769F3973CB7D429A
-:102890004248088409F74BC01912205C1D02645994
-:1028A000050C171514E1041002B98DE0EEA2EB9AA5
-:1028B0000901441777E38ACA2AE88080A0C80E0A73
-:1028C000C86A644764237EBA1AAFEBED631345E52B
-:1028D0004E0CA2B89FFFFAD75B7D0E99338405BFDB
-:1028E000CBF3ECF7FC3F3E3E9D3ADDE77475557542
-:1028F00055757575CF55CE4EE15FE60921FC891EF1
-:10290000473E95BD6D271A7B0BFEF74357592A6941
-:10291000427410FABF9521457413A2930870B95EF2
-:10292000D42A421562B2558BF70C12C26E6970E35D
-:102930007917C5D3D745CF45BEC759D41F2F764A7F
-:10294000FEA29F4053F1C395429CB67D922D5285C5
-:1029500008D00375383DF489EEA9D48F82A66ED9CC
-:102960009595E04CA35FA1B85C69E857D62B757FBD
-:10297000E5F7D739E8FD0CEEBF93A73DF093F8AC2F
-:1029800057FC5CBA84F6B8A0F155A40BD73D5EBCE9
-:10299000DCB8324CEFA5D388EFF110B8D73CDE9A03
-:1029A0007CCFA264F5427C2DCEE65961FACE3491FB
-:1029B000E851E9FDF79616B5F712B2D709BF0DE356
-:1029C0007D282E31904CCF2BE724041DF47C670723
-:1029D0006D00E8A15A022F36127CB3F0D9D16EB245
-:1029E000D577059EC70BF9BD0AFADE3D289D448FB9
-:1029F0003C898723A30D7A44E1193DFE56BE346419
-:102A0000A0CC107E86D3856795DAC67884D57F778B
-:102A100023BDFF0B35A1F61E2A1FB2FA2C1BA8FFFF
-:102A2000C0EBB6E06685C72380CFD24F12363AB2EC
-:102A3000A9B40A8685C7C1F54B6E26FCE9BD254AB7
-:102A4000962740CF6B12FC8FE17BCDD556B1311567
-:102A5000DFF76D00FC7A757781F1458F27BDF6A70A
-:102A6000424BA17AC5FF04DA05AA1DAECDD4EEDB38
-:102A7000D87FCCDDC874482AB265111C3369432362
-:102A8000C18ADDE9528869E973D2595ED7DE427C9A
-:102A900020FE050A42DDE603EF475551E38AA40311
-:102AA0006192DD2A9FEB3D44B4F69063831E0105DD
-:102AB0007269B728B38BE28926F877656BB9DE6354
-:102AC0001182F8D43DBFA30FE35EE2151EC80FD1FB
-:102AD0004101DDC55E45A703C913EA15973FE0BA7A
-:102AE000904F4B1BB36F45FD7E0BE14B6501F12B06
-:102AF00005EFC7A9F27DC5D32199FA2F4812FE1020
-:102B0000954B62DCB746D275B8C532BB28477ECF3D
-:102B100049F49BADCF0603CF396B55A1E50A31C609
-:102B200039F7B1C3B9C0775887A28488FA7BFAE431
-:102B3000CCA1F75FB689E9F8BE677FEF9CE21C1E67
-:102B4000872F94C37C5C1102FEA3D33D010FF06B71
-:102B50005EE1017EAA68DEEC011E014716F089C91C
-:102B6000F40404F0AC15B7E545E01F43F803BF3BA0
-:102B7000C6F922C76DE07D313CA3E97D313C2139A6
-:102B8000CEC154AFCBCD1C675C933200A51A7690B2
-:102B9000888A55D4AF33525F45C9B90830DF272E34
-:102BA0001D537498E42DD54E8F20A7B725043712F6
-:102BB000FE136F1BCDCF9529E7589EDBD17C745057
-:102BC0003966BC5B69243CDAE5BD6515FD21A78447
-:102BD00017F0B1360E9A4CF43DD6557B12FAC6C0AA
-:102BE000FF2F839EF06A547FC8224A4239178E6FA6
-:102BF000B72E4F2ED16887DC5538E3C3EA800BE54A
-:102C0000E562F8BFD8A1E839E88D934AC36054560D
-:102C1000F676F17321B46C7C2FD9953D3A197AE29E
-:102C20007BEA6F30F414FDA379D0B7BBF627BC77ED
-:102C3000BD281A67A5F1B61BAFD9341AD738359E0F
-:102C4000E773CB7685F5D5585F8C0574A93C680B86
-:102C500006095EFCAACA745ABC5E0D62D2B608CFE1
-:102C60005ACCC39680C305B97C286EC06F4750F913
-:102C7000D97A9BC7817E03BEB77B53BFF3743EF501
-:102C80005A6B116E832FF47F9F60AC70F76E85FBDB
-:102C90006D6D6782FB873A9ADA5FB1B7ABA9DE1B2D
-:102CA000EE6BAACF3D38D0040F6A18666A3FE48302
-:102CB00002133CB4F12A53FBE147A698E091CD37CB
-:102CC00098DA5F796E8EA9BE34B1B07E298DB73E99
-:102CD0005D150AD9C9D1A2D4D4BE542DB30B62B1AB
-:102CE000A8B57D0A79F4D37FCC4F75A615743EBB89
-:102CF000571129A48F16AC95F5C67B2575F7AD84C1
-:102D00008D5B18343F2F15D65618FAF793856F1E32
-:102D100088E8AF576AB12599CABF7B1252212F624A
-:102D20008818F283CA7CF540DFB4BCAB7A1C42370A
-:102D3000A5042F7E5A09DE437CEC297A3C04BE119F
-:102D40009F45D00DBECAFA96756A3040FD7C5B5532
-:102D5000F2E6011BC10773D7422F2F20BD0CBDE542
-:102D60004837F333C66DE6675C6F333F133C667ECE
-:102D700026E59BF999EC33F33365BC999FED8BCC39
-:102D8000FCEC30DDCCCF0CCDCCCFCC12333F3BFBB9
-:102D9000CDFCECB2D4CCCFECC022537DB4FC765B3E
-:102DA000B5D854FF50DCBE2F34A2436A47D5E5A006
-:102DB000A9D7A3F676D3F7843AC1BE82E8559AA97B
-:102DC0000AD5D52A0701FA4FCE6B3FCFAFF92407BA
-:102DD0000F131FCE8AD5F599EE0BE5A162EF7D7634
-:102DE000CCCF1F2B0FC3BD663920B94BD2DAB06BE5
-:102DF0004669F099FC91D15ED20FD3BCDA582FE925
-:102E000093E9BDBECAB292DE1045C5BD60472EC76C
-:102E10004FB10EFE117ECAA410DBE38BFA29EECE71
-:102E2000ADFA8F9DBF80057AF9C3793696DF65715B
-:102E300003B6432E3FA8917279064D860A71830826
-:102E4000B11FF661EC239DD15F01115C198ACADACA
-:102E50009B80FF4CE04FF6EC26D168C3C7C98EDAE1
-:102E600051160B37977375FFEC66115E89C17C9222
-:102E7000AACD075D2A54AD4B1AE8D1A9218BFDD804
-:102E8000D75380F445E96AE8EB77F027B57BC45B5C
-:102E90005481EF8C71BA6F7DC00D3F80EC03F1451A
-:102EA0004C4861BC85B5A8FF94FE6D7D6719DB8B2E
-:102EB00017144D03BD03194E0FECAD480F3DA3D0C1
-:102EC000F8FAB6730FBC27B9B5FDAFBC867D21C734
-:102ED00086DA3FB92B96E9D5AFC3867618D78FED42
-:102EE000F76EAF6F39F036DA5F6ABC76BB67D1CF69
-:102EF000A8DF6645F8371212EFEA7CC974483F3103
-:102F0000534DF4D4806F71B3EADB131D6EEDA0FD59
-:102F10000EDF9F7EFD4F570256F6A7B817137EA708
-:102F20008B1B07035FA2FF83A82F7312FD6968271D
-:102F30003B6BBD9220144592FEF447FFA236F197F9
-:102F4000F81CD0E9FF6207ED31C8F57E4B439607C8
-:102F50007CB4360C663EBAE4B84EDA255D2E468760
-:102F600082B8CE3341FF790E8747257A1628F2BB07
-:102F7000879366CFAA24BC6FB614A5855513DE4F80
-:102F8000A3BFB2F8E22E19C0DBA6E3ED6CAFD3DD30
-:102F90009D13E99F45E35D83EFC31FFE15F997D9A4
-:102FA000781EDE06F839E1E2F58BC322ED7273B5C7
-:102FB00012DC48F56FEA745E6FA37698974ED1AE37
-:102FC0009AF0BB66E48A0D68F76BCDC9786F169EE0
-:102FD000BE6BB2C10FC1FA3EF32E2558930DBFCA86
-:102FE000C3723F4F1465EDA276AF79B57AE0FFB7B3
-:102FF000B87F0CCAB6F0341EF42E7D67CFB20E9E99
-:103000007B008DB83CF9EF4D9A03FD4F9928EDCE2A
-:10301000CD3ADDA689229EA7C6BA8926FCC90A6ACE
-:10302000379DFEE2F59870F7077E33007B5BE7F58E
-:103030004CD1C0E52CE1E2F5D4DBD51D7E761BB585
-:10304000996269CEB2AB98A7346FB399FEFF0EB9FF
-:10305000F966DC5B8714D0FD0ED263E0F79AF69731
-:1030600025C79315494F9AB79FEBF3360F53EBFCE7
-:10307000FC19DB5ECA9FD5D5E39FCD1F528C891901
-:10308000E4AFFF44AA42F1D09944914AE36CE8AA24
-:1030900006B19E1AA7DE61DD45E36C207FC2817117
-:1030A000FB8A3B9EA6FAF1646FEF91FA352140F05E
-:1030B000249F2AEE6139685CBE909EBF9E4FF5D476
-:1030C000FE956A919047F02B5E9BA786E470DC39F1
-:1030D000ED4012959348EF87A9F555E9F78D857F67
-:1030E00030BE13D991083B715577334C13A113F8B7
-:1030F00074B54EEF093966BB330976C768DF86DDE4
-:1031000021FDAA82BE710375FBD357F485FD79B901
-:103110006AAFF88CEC8B6187C608B9DEB8981DB22F
-:10312000DA0B5206B23FEBB6637ECCC1FA04F476FA
-:10313000691D2747CC97D2210AF3C94D86C742E3C0
-:103140007FF3A01A047DACBEF070D06FF18B0ACB78
-:10315000E9D503B5AC81C48753B6C6F9909B8611F7
-:10316000B94982FAFFB48A10E945F3B7CA297C3419
-:1031700017BEA872317CA42A9DCB63556E2E4F5486
-:10318000F5E6FA53551E86CB0716F5027E73567D7B
-:1031900065859FEF167EF68F96D07A17FC5A92B00F
-:1031A00058C236A70B4AF8AECEF5963882EF0A2AF7
-:1031B0001ED8C585BB822BE308AFD23A9F3D9EE067
-:1031C000259DDB8D8947FB071496FAF907FDF51855
-:1031D000EEA9773FBD6EA2681D6FF93985D7C9EF9B
-:1031E0000FF20D46FF5F56E5335E47AB7C8C97AF21
-:1031F000AEA93E85BE77BC6A3CC3770D2C1A81719F
-:10320000FBC457EC474CDCDE64859F31CEA7F8C089
-:10321000E7513E110C12BDD6DAA45D594B76057A02
-:103220006074FF29EB6F15D0FB5A21DEBFB6DDDCE1
-:1032300071F05727E517B3FF7AFDF782FD5743FE7C
-:103240002F358FDCA2E15426F5773220E9D3B2EB9B
-:103250001D865BAC441F1AF1BE5DA5A582FC83965A
-:10326000736FCBE7D48EFDD4DDB2DD629B6CB77893
-:10327000F7AFDBF9002BA25944ACB78E131F85239F
-:10328000027EFA17E95A847C1D6F17FAE623E8C913
-:103290007FB77836B29C6A9F3D0F3DBADCC57AE6AF
-:1032A000942DF4C5C3D0B39DC9AE72BD3F6E0AC99B
-:1032B00059855D682C7742EB07F878ACE0F800FAA6
-:1032C00073F792CF218F3D773CD4F597EED6FEB6BB
-:1032D0003CFDFB96E7DDA80FF2FCDFB6637DC74738
-:1032E000082ADBB92216787D76EF7399185F2F557F
-:1032F000F8559A67737FF3C7CC3F52FF4F906E41EA
-:103300001CE3059BE7D45EE0B39EF0A1EF3C716F38
-:10331000F940E8B779BF5BD817EF07065A98AE4F68
-:103320003DB793ED3FC998670CE9A9FE6B5E5A96CD
-:1033300041EDAF58D764E948A577935283B274FB47
-:10334000CEB7ABA9BF5C97C50F7F74C54037BF3FF1
-:1033500030B461A302BDFEFDE31D31CF72D67C55B2
-:10336000D0515CDC6F782AEB8396621E572D8F6BF1
-:1033700077DDD4776E14F04BC82301BEC5760FDB22
-:10338000291AB60DFCDED56D03DEDF6309B0FD0939
-:10339000CC917ECBC9A2C0EF31FE726A1F20B8DC8F
-:1033A000DBD0741BD597277715883B1C092E998194
-:1033B0007A9ADE2ED0A762D703851D093E3942785E
-:1033C00014EABF64F79942B66F9DC9F7C6F776D580
-:1033D000A4DD00FB96533048A5FA2235C4FD894A86
-:1033E000D95F65DD4EA7E0F5BC68A792224CAE1B05
-:1033F000FD7266047F2C8DBFC9B6D2F7DA937D04C7
-:10340000BE6BB30319FEF8567BFA9AB7680BEB2331
-:10341000D7FDC5F8CEE78417FCADCBB57F768B7FA3
-:1034200021E3932E5C81A1ADDFED6C092FC43848F8
-:10343000DA5D01FACE6657C30C6E47F06FB95F6D67
-:103440000FE65FA64A544F95F6BA06FDBAA6668106
-:103450005F97DBFF4371FF60BFABD292E871E4B5C9
-:10346000FA2DD3536A5E6C247E6DE8A0EDC7F88C0C
-:10347000B8A4B07ADCD0E3810EBE97F1BCCC49761B
-:10348000D5C2F6F415C0861F7CDE0F735E9E3DDD4F
-:10349000D9C1F717A6E365B677EB7186F37AF5EC39
-:1034A00040935EAD49B00B2F3DAF59E3E0B884388F
-:1034B0006029ABA7F5C7487CC2D2FABD2509033BFA
-:1034C00040DFD708D126BDF6D17CD688B661B203DD
-:1034D0001ACDEB51E79A558DE77DC3CB4979D09F43
-:1034E000C297E0461CC022B4087B17FD1DE2D70935
-:1034F000F06BB488135A84DDF489643BE6AD886FC1
-:103500007799E30E3F6EB627FB1F8F1CF788960F47
-:10351000E2E052113D3AA0BCD8B85ED4C7F5278C82
-:103520008BCA79438AFE01FC467EEDB2627C23ADF4
-:1035300093B3BC5D196F6B2EF53BEA6B8B19EFEF04
-:10354000634DF0E5E2FF3385166A90E3AFEC1C179C
-:10355000AC83EDA771D42DCC0962BEEFB18B801383
-:10356000EB982976F66BEB1202097D51AFB84288D1
-:1035700027BD606B9821D739C2B5D90BF97DE3110E
-:10358000C8FF0D2D7605F1A98E0EF105FC25A126AB
-:1035900089CDA911DF6FEFE2B885EACC5C8FB86204
-:1035A000DD50FDF90C3B3FAFB109B67B8119B18C01
-:1035B000D79A64FF6BFDA97E4DB58C677E2082ABE8
-:1035C000BAA2FE0E95EDC070CBC6CD0F621D333989
-:1035D0009DEDC69AE4706625DA2FECEB09903CEC81
-:1035E000F987CAF6608DD797D12E1E7A50C605D7B7
-:1035F0004CF665C4A6A24CB360BC1D49CFF3F36C76
-:103600006A47E54736D9EE439D6F44E90CE8DB870E
-:10361000E7F510D03F57E7168CCC65FF47C63BAFA8
-:10362000952C10336E7E80E3AD0F6B6A50CD065D36
-:103630007E736F4F826F98A3BA1077BBB62486E370
-:10364000A1D76A7A3C749A390E7B75AE6F642EF1FD
-:10365000BF3CD4A7DBE108399E71738F9F433F7C49
-:103660002A645CFAD769DA38B4137BBDDC6E2F3973
-:103670002B3FC04E38DD03D87F9E67AC1BC3734120
-:10368000DF7DCD4EF64B2F260F42789C7DE9FB0F58
-:103690005A4408F2DC05FC4961B90DC06F0B846225
-:1036A000580EC64F71727CBD25DEC2FB0C8F11BF58
-:1036B00060DF02BBE53E03294AE6DF83FB3AB35DE8
-:1036C0009AADEBB19AE9B1FC5ECD4E5BD0023E2BD8
-:1036D000C16D5BF0DE8B316C3FCBF4386FD9F3FDFD
-:1036E000580EF6D87DD92BD0EF3E07F3B92CD19DDB
-:1036F000C4F5FF962250FF821E772E8B0DF7443CB7
-:10370000BB5B7B6D3EE84172C771F932BB7C7E28A2
-:1037100058C0FB1A82FC95B851040B1FEF4F04C828
-:10372000AFD9EC91FC035E5A4DE78DC057233CC0E6
-:103730006771BB8C971FA2B98CF11DF27766BC94A0
-:1037400029E3336EA6FACF16C7711CF55051FD5907
-:10375000F80187D2559EF7A4A1EE1D42F564731BB4
-:10376000EE21B872E1A76F0CA1A715351F66ED75A4
-:10377000B7D27DE6B2F20982E460E6A23B2689C4B4
-:103780008BCFD799650EAC115BE7B7B063B12661FB
-:10379000D2EB6B727D3590C350AEB612E3AFCC2145
-:1037A000FF99E4E894BDE151C4498EBAB5BB517F9D
-:1037B000FA8F5F6EC173616DEEC9F2E16C2C449CAF
-:1037C000A5CC22E344A3F3B4DFE6B29D4D64FE55DD
-:1037D000861CCCBFB89C06A917EFB83C7B70AC6EBA
-:1037E000F31E85FA298DADABE0520D0E80BD3AAEC9
-:1037F0008413956E4C5F0DF3EA842B9C08FE6816CB
-:10380000E9BF956E8D1EA7DC4F2CC51FBCEE0CD9F1
-:1038100087135E8B48F53EECC2737B6BFBEC563E28
-:10382000D277988F22FE9359BF44FB6D7D06DE430D
-:10383000742F4DDEFB9BE1D917D22F1A36C67321A8
-:103840003EFA3C290A27629E1C57E43C3921A4FE1B
-:103850000A6C8DD1D7FF128F537FECC078A4E9F3A7
-:10386000E894A2B7DBE690ED48F6E0CF94FE41CABB
-:10387000DD8336CF5AB9AF66657D599A22E152474A
-:10388000BA0BFE5647356089855C56099E2F841B0E
-:10389000CFCBE33B32F97D43AF892221A0D74A77D2
-:1038A000646C947E9DBE0EC600A8FDA2A7647F80B6
-:1038B000A1FF8F3D99A9F72FE753345FA3E9F07E6D
-:1038C000AE8C5BD5240CEEF0CFE295BDD33F5E0706
-:1038D00015F4A04DCEEB4082B423E4B7A44FEE8F95
-:1038E000FD06BBE9BBA712ECB37DF1D877303F37BB
-:1038F000BEF769AE5C477689E27B47B5F925F84BA0
-:10390000E271C17A221A8FA3788FF07DF2C9F37C1D
-:103910005625DF49900CF97233FD840DFCF9D06E09
-:10392000F0F1D64CD2EBA5A055D7563AEEF16A99F4
-:10393000B023A7F47DA33DC904E7C0DF92F6C3809E
-:103940000D7E44CBE9B20FE767629F2A2D4FAE0F81
-:103950006A6212078824945941E8816AA22BEAC955
-:103960000EF27EDCB1AAF1F71FB6B58EE78B2A9F67
-:103970008F4CD07978FE5AAF13F373C13AAF734EC0
-:10398000043F6AB6E61E7413DD4F6CB562274BD454
-:103990005883BF19968AE76A2820B8DE097A9F887B
-:1039A000DFFF06DACD5F973C508DD04F0BD68EF3FC
-:1039B000CD8BE043BFAD66BEF40F99E12BF69A6163
-:1039C000377832E8C7BFE70D9BE1DC8366F8B9FCC6
-:1039D00066F507D8A7784BD0A9A06C517F807E0FE1
-:1039E000AA41AC33BADC51347522C147D6CDF5803B
-:1039F000CD0BDE5B3618FC3BB9FBAE3DE5F4DE914A
-:103A000076160FD657C745E8FD89C48FF975F7D9E3
-:103A1000AD6E8CD72CE77B2CBADC3E29E37A0B8386
-:103A2000E6FA0BF543B51E4712BD23E52A9AFFD4EB
-:103A3000EF753E42AC6CE9D4FBE1FF944C2081274A
-:103A4000FC8686EEB38BF8CBE927C072634D14E198
-:103A500074C2AFE9AE048EA70C5B3A467C46DF2BFE
-:103A6000B7BA0663BF7D8E5371617FDB889337EDF4
-:103A7000CCA8803DDDECB278904CE1CAF7D767E680
-:103A8000613D21422E0FE2F477AEC43ABEC49FC816
-:103A9000F45928821C679FB3DCD1AA1FE9FF79ABD8
-:103AA000A3F05913514FE32859676EBF68D30F8EA7
-:103AB00048D858970EABDBA062BC37EB78AB0199C6
-:103AC00037304C8F3F1C4653B2377FEB56549C87A0
-:103AD000F66B46CB7AAB53B7B33E5EE795C7DBDDFB
-:103AE000ACCFAC6FADE4FD1A9A87B00F0713E6FFB9
-:103AF0001CFAEE8C53B81C9C47A231FC458A5C171B
-:103B0000F23E04B53FB34E61BB5E9E22E1F2C79523
-:103B10002062BAE508C2027E42C65DCB747A404E8E
-:103B20007C11E301BF2261516BC4BBC3BCFEADF08D
-:103B30000B0FFC00417CF499F6BDC3F623B0B30132
-:103B400025F4B017FE9EF93B957B7F7044C2E7E3F6
-:103B5000C5C4BA6AFE7E90E9A8DA850F7A5CBD33E7
-:103B600096FD763200B1B0EF36DDBF16AB82ED6167
-:103B7000AFD6C05E51B942F7C303F7497BB526D92A
-:103B8000D7D385FAFB323CA0C30D8ABEBE855F9FAA
-:103B90000CFF7A3FF7DBACB85C1B93D15E0462523A
-:103BA000D9BF96EB847FA86CEF9AC97FC7FEFC1A39
-:103BB0006F280C7CD63C90CDFEFA0B86DDBB3746D9
-:103BC000FAF317FADDEC5F89FBA5FFF891E0BEC5BB
-:103BD0009EEEDA863C92F3B96A116F2ECD5BE6CB8E
-:103BE000C077E74DB15BC00F517279FB1C9BF53C70
-:103BF00098661A2FE2EF8795A27A4B841FFC4C9EA1
-:103C0000B40F830B7C5BF4761EB49B67798BE93031
-:103C1000CF225C58CF6F3EA70A2BC19B6B1DC1659D
-:103C2000F4CABCAEBE9E8B73F09E8C371DF24A7DEB
-:103C30001F97277C41E87FFDBB2FE4594CA5182B2B
-:103C4000E32C8763A41CCE1445851CEF770B53FE31
-:103C50008551BE9227EDDE3C7B83199F4F5E66BE89
-:103C600090CD732D837C8F957EC7E15B14B6E734CE
-:103C70009E9E2E8207FF2E86E38587757B64D097F4
-:103C8000E487F3220CBD95ACCBCB9ABB83DB628877
-:103C9000DEF7D9486EC037921BE4F910DFD92F5CEC
-:103CA00033238DF97E83CE57716F02F36DB8C52231
-:103CB000E97C6F06D399DA8BBFE3BD716EE9CF5F04
-:103CC000E63A8CF8FE37F03D7A3D66F05B58838328
-:103CD000FED97E4CF9734FEF0990FC2FFAC303898C
-:103CE00082DA1DB5D6A679E8FDB2CD2B127D541E21
-:103CF000B106125DD4FFD1A03A3ED806BD3B0F52AB
-:103D0000F4F5902F11797415BA1E3FF6E47FACBC20
-:103D10009DF0FC4611CDD08F15BBBE5B793B8DAFBE
-:103D2000DEE76C863E3D626D2C84DE5D581CEFAF95
-:103D3000F660FE9AE3F28B9E7820CDCDF40E645AA5
-:103D4000D279FE67E2BD8A4D360FD67515EFAA1EF1
-:103D500037E6BD685E09FCA2DFAF0C7D6607FD5D3E
-:103D600016D1DC69781BF5A291F57CE5AE5F7FA5E5
-:103D700026A23CFA11D6179551FB0125FA7E49F48B
-:103D8000BE40C2A084D42F10F0D6F7A3893E9C97E2
-:103D90001020BC7AB0B8C83872CDB6870634C16F6F
-:103DA000D8F45AA292D3BA1F60ECA3B484E63E863C
-:103DB000B8EAC5E6E5A9A838B0A1C7DC7B1599B477
-:103DC0005827CB325B3811FE7ED9061BEB91B2A788
-:103DD0001FDFF230E4ED4387A7871BF0193BF44166
-:103DE00099E26B5658BF8B4465702BBF4A9FFEBC4F
-:103DF000F011F8D719AA9840FC5AF4EC59D9DE27EB
-:103E00009A63A87DE9CEA642AC0FCAB478BFB30DC1
-:103E10007E8D09BD646F8C6F835FA1A6428E536D4A
-:103E2000FB96F971749F223A645FF87EC986CFEDE4
-:103E300042AE0F9A539225BD60EF2A436AB13DE925
-:103E4000C2F6F4FD49CFE771BD0BEB954BF1F124C0
-:103E500068C1F29E2090C758F291233801FCDDB171
-:103E60002411F94F5F5AFD52EED7AF48839F576236
-:103E70000BA4B9B894CF4B1EFD19CBE302C59FE646
-:103E8000E2BC2DD2AFF93CDE0C8CF3E675D7F238EC
-:103E9000E70B8DE5B164BD5A14A4F2AC558CDFD9A3
-:103EA000C6BC796890D4770E71CB00CC93B3F4255F
-:103EB000D8F12FF5757DE06DB99E7688294991FB83
-:103EC000432583A45E0C88E021D881CA061BC7293C
-:103ED000D4B7CE16E23BB7665BFDC8DFA0F107742E
-:103EE0007A293FC8F58B1B790C95F88BECE998B7CC
-:103EF000C67568CCC1F75BEC3751BF5F639DE83195
-:103F0000BDC774FB72A32356B982CAB4B6F3BEEA26
-:103F1000CFCF7FF1B68890A7CAAD5FB23C89745508
-:103F200024A54B18FB11AE39F1FE24A2DBD7EF7E9E
-:103F30006647FC3B906A113D806FC3E70C0B4F7BDB
-:103F400037DA1BDFAFDCEB10E1C879BBE9F3A87906
-:103F50006DAE17C2CFF4AC14496ED8EF2FEDCD85FE
-:103F60002FA01FEA7733F5339FFCAFB0C9BF6A2E8D
-:103F70007C04FA64AFDDC5F107F23FC31172737EB2
-:103F8000BF53DFE75BA0EB83683A44EB87FBA2F407
-:103F900083F1BE58D7F6FE52AB5E08303DCB6C22A3
-:103FA000003FA3EC4307DB8FB2A7E57C14A44F7B53
-:103FB000D0FC38BEFDE5F76FC07A36644B9DC0BDBE
-:103FC0009AF56FC9339FF3B8E612FD633CD0BFDFAB
-:103FD000DAB1FE4D1F239A1D84FFF1D55E3BE4FE4E
-:103FE00082794CCFDB9CC7AB15D66FFF55BD4BF428
-:103FF000E6FCC04BCDD70517D1BB7551743D2B7274
-:1040000092905E2D5CC55D78FF208ABE065DA3F5AB
-:10401000E8B441EE36F528FD7B5F44D051884696E2
-:10402000E36F482F625FAD62D3776CD788ACCDC8A1
-:1040300027AF087EC5F00AD835865F9A8678E58571
-:10404000E336D333BAFE4EC818FD5FF4471BFB05B9
-:104050006575326F91DEE3754725E2F5DCBAB63E51
-:104060003335120E46C1A1A8F6BE28B828AABD163F
-:1040700005FB4DEDCBF6BECCEB2CC2DBD4CEB1F4C0
-:104080006A5E875CE85704791C95BBBEB207201FA7
-:104090009D9AEDD08BB665229040EF37BFA8B2DF76
-:1040A0007BDADD9C083F65458CF4E34EBB7438D960
-:1040B00080C5EC62C2E37460800B7902CD3132DEE0
-:1040C00072BAA839313962DDDE54A726BAA97D63F8
-:1040D000508C6F3BCFA586E753A3B858BDF4E7C615
-:1040E000A9DFEF90F99F5681FCD8C6EA6F77209E32
-:1040F0007498D64FF05FE6555F9F88FD97D375DDC6
-:10410000AE998E75E0ABAA9069D63E3BF220E64AA6
-:10411000568A2322F0E0081A9F9A9057FF02D6573A
-:104120002428D8FF9CB73ACABF11454961ACA7D72C
-:1041300044E72B04EDF06F16909D853E2A5967AE3B
-:104140005F54779CE7CBA2A8F9A2E971E3E8F9D222
-:1041500075B09EB7E0155E3D7F92F3F44E1F545943
-:10416000BE5A96DBC4CA5499278BFC92963A997F23
-:10417000D3B257C222A0E7F5E8F3D6A0DB09CCA75B
-:104180005E17F75B4EECFEF7C1BF84FCECF97800DC
-:10419000F6894FECF9B0E70B809FFB6BD6C7E2C204
-:1041A000F663F67D378BF1DAE710C0EBF4BE57B259
-:1041B000E06F9C7EDEC1F905A79739D85F0FEC4B05
-:1041C000E0B8C5E9CED21FAE79F1DB018D6C8F97D7
-:1041D000331F270EB64BBFAAEE3FD83EB6D439DC0C
-:1041E0001847E5BE389E5795CFC7F0BEDAE917BF2E
-:1041F0001D1C198FFBAF8EC7D8573F9D20A63F03CC
-:10420000F9D5FDFFCA17863E5E8DF5F2AE97EC73C9
-:104210009127F2A7FF3300FAF5F4332FB1FE3D6585
-:104220006B7C14B1CDE97B321EB10D455C8F3ED65F
-:104230005188AFF6CCB811F3E742BA483A9C263A17
-:10424000605C449712F8E517A347E5BF2C3DBE9A82
-:1042500025F5DC10817D9F56BA283EF93C81E35557
-:10426000347EF97CDFB703A0872E35DE7BFF1F1B72
-:10427000EF53186FFB7FC5F14A79CF1DEC66FCA2A6
-:10428000E5FE42B97EEEE70CEF48F030BE9739DF2D
-:104290005FFB971DFFFF0CBF8FFECB8EF752FC7E9E
-:1042A00055E777820BFBA0A75FFC3F59E2478CDB09
-:1042B00039E45F755EFFF3711BFE7C81EA39E8A586
-:1042C000F6AF89D0BB9E6CF64ADAF447060D518CE6
-:1042D000B838AFA7C6E02F37DA0F5C8E734C01F207
-:1042E00027B08EA9891F78E02D825F213F41E57DAF
-:1042F00059194F7A25DD1B94F15DBF403CABE0AF0F
-:1043000073197EDDFB9303C82B2954653CE6E56AEF
-:10431000CFA6061AC7CBC91637CE958DED34F7F068
-:104320004EAA7775545D589FD574CA75BA23F01B91
-:104330001B6F5E675D1DB54EFAA9DB5C3F5E3C936B
-:104340008AFDBAF1393681F33685681FB1AE4C1952
-:1043500022CFF7FC54D42E77C5FF783ACDD5E94467
-:1043600074E17D9B402755CF7333D34D806EA9A058
-:104370004B2EFBEF01E139F016C156DDBF12FAFEFC
-:1043800063A133610BD6D10E51100E127CD66DE5B0
-:10439000F3935641EB61394E5E4747D34DE8EB6AE4
-:1043A000ABCE82B19DC68441673CEF926E7A9FC7C7
-:1043B0001D4DE71F4FD7FD9D9680AEE9099E20E475
-:1043C000A2D3B3A988B3D6109D15A5959E069DA22C
-:1043D000E99E8FCDF541ADF4EE64F55A31CF46EA52
-:1043E000FEFC586BB2843B35A8F25C5E90DB8FF923
-:1043F000DA63853F323A3E99F343857E6E42D5F7C4
-:10440000C39161C778D0FA1479B693ADDA92219C42
-:104410005FEF120558B7168810E2B74ADD2BDF614F
-:104420007D84F32245BCAF59FF01E05E382F86FC46
-:104430008E75D613A6F36E51E72526E5EF1C0D7E8B
-:10444000CD594ACF10C772B9EB311F8BEF77B8C186
-:10445000BF4ED606AEA7B596AB7A2876AB430CC74F
-:10446000CE234F3F03ED5E19CDED970897928C74E4
-:10447000BB109F778C77C97C355ABC7E03D8BE3C75
-:10448000C15D23E32602F2D41D65577C5FB64F1F42
-:104490004BDF43BE9BD0D85F8EEDCE9120D1552906
-:1044A000E2FDF72EDD645E44F30A07AF778AEFEA98
-:1044B000DC137A694281396EFDC510B9AF69945336
-:1044C000F3DD729FC2E249C777E62CEFC3EB2F35CD
-:1044D000B6A87C37E8B8238EE5BC78E54D1307D144
-:1044E000F78B77A47880E6B1493B07CBF6337EF6AD
-:1044F0001E3DD7B6C6F0F39FE76B8F0F419E81E25A
-:104500009EB59B1ECCB9F6657B3A75A185269F4466
-:10451000DC715260E71BD8E79C344DE5F69384CC00
-:104520002B15CBE378DF7C62E02B6B3A7D6F222D7D
-:104530006A50DF14E3CABA85F02FD6E3CD7FD0E707
-:10454000A11A2BB467E28157E79E5DE9F94421F394
-:104550009BA3E7ED71BD7D97311E772AE8A3C4B810
-:10456000701ED6688FEFE0BB5FE9F4785E2F0D9880
-:10457000E8CA71F179AB1C4DDD1251DAC2BDA8EC6D
-:1045800033AC601FE46D425751B816DFBD4D151BAB
-:1045900019DFE6628EB327F476830F9AD0CF77AE19
-:1045A000E9C1FB394DA305CB4FD37DD906BF393FB8
-:1045B000C958CF358DF6D4237FAB79B4D3B3D1832B
-:1045C000FC9650187194436BE57E4D979A7077E88E
-:1045D000D966AFDC07F97C69AE1B7272F303531323
-:1045E000A13FE7AE51C30EC8FB6A73DE9270793803
-:1045F0000F7C6EED683BD6AFF3E27D768CEB4CBE64
-:10460000F611F8659C73EC0B9C708EA7B6F875AC30
-:10461000FBD4449ACF987F567722D6D5D1794F953F
-:104620007A7E9301FF3A4DFB0CDF9B93E4DE01F9A8
-:10463000F87469378EAB76CBD7CF575AC3DD419F1D
-:1046400047692E607E3E3844CADF8476AE9EF12CE8
-:10465000BF3102E36AB2B97A429E9B56C45840A762
-:1046600009CBA41CDF6D95F32BE8735B02F4FEB35A
-:10467000789FBE3BB3DA5AB481FAE9E414D6847663
-:10468000B4CE1DA63D0FFE4C0C541FC2FA7AAE6E7E
-:10469000AFE6AE96E7C1BA8C917C15D686B129F407
-:1046A000FCC8E6EC81C87337E466FEB082BF0F89B0
-:1046B000E0FF84025F617BFACE048BBB057A78DE73
-:1046C00034E5A56E520E7E18C2EBF93A9EE72DA492
-:1046D000271CC93807D82061E4AB426FD43EE4738D
-:1046E00046ACDBED6217D7DBE7C97CD42EF670351C
-:1046F000E75FDD225CCB08DE427E84D526C4D62A65
-:1047000027974F5691BEEB21C4F6AA74867754B909
-:10471000B90C55F5E6E7CF547918DE5595CFF09EE4
-:104720002A1FC37BABC673F97C55113F8FD63F73ED
-:10473000E3E7B33E71F5245E0FBD506E66B9092FF5
-:10474000E81FA770DD85F34742EABBE4DE52FF08AD
-:104750005D1F75ED23EF03E8962FF9615B35DAC233
-:10476000E737AD8D1990BB71EA89A79F43BCA3249D
-:104770009EF3B25A4423CF931661E173D9D03F0E12
-:1047800092BB2E778ECF8ECC3BBFB14411D608F9A9
-:10479000BAC91F23AC11F669F6D264133C73E93B26
-:1047A0007FEE40DFBFB1AB96974F781CBAF38BF525
-:1047B0007FA5E78FDD79AC873CA7FBFD86C8B84BAA
-:1047C0008B6896B0D5C9FBF18FDD9E9196A2DFD3A1
-:1047D000007E19E7A4BBD89B8F3E8179B842F52CA7
-:1047E00023F823F087E8F989CE9FE215DD56FE0213
-:1047F000F3DAE7F428F49D43B7F72BCCA7F68FE95B
-:10480000FB51179CAB4E97F6EB53D8AF6469CF0AB8
-:10481000A047C3D26E7DFAABB4C05DA8BF25D183DB
-:10482000130DDAAA0E810504AFF6DA3D2AE27A7595
-:1048300082EF5D201A4BBF226033DBB1C64EC988C0
-:104840005B1AE79EE3F2824E3E77451D613F664E5E
-:10485000EFFD22037AA9567161BF06E7349DEDA0F2
-:10486000DF14DE1F451ED034B29737E5AB3C3F7FE7
-:104870003FC4CAE559D873A26B8CF0707C66DE6ABF
-:104880006A0FFD58EBB5CF8FD0BF73F4E7737B5B36
-:10489000B8349E97E17BD83F5CE59D0EF9E888FA35
-:1048A0001C9403A703BF8EF185562562FF777EBE59
-:1048B00055EF5FF67B169392E07B7A77B5DF9CC36A
-:1048C000E7ADD86E19FDCCE93D706557D8EBD5A39F
-:1048D000411D5163F3A4A752BBCAF3DF71497FC4E2
-:1048E00029F3B3CB2E62378C38DD11FC29CF3DF292
-:1048F0007817ED786A07CE3D2CFAD8C1F66BD11542
-:10490000D22E899CE0E0A91CD034C7C5C73E75B241
-:10491000FE2EC2E724CE2521DEBFEB333BF24369F6
-:10492000DAF8933200AB4DC8338D8ECF1ED8F171BB
-:10493000629B71F15DEAE5C5C595EF1361178CF1D6
-:104940008C7BF16C1AFCAC4AE51CEF3355BEB822E7
-:10495000ADADFCB0E8B8F8F9F8B958FD15CED757A9
-:10496000DE71A4CDF879741CF0F1FCE8FD88F80242
-:10497000E889B307D520F6D35B823D92441BFD1B2B
-:10498000F1F3CAB5F4520AE6A53B09FB61A72FE291
-:10499000971FC997F6FDA41E6F3FBD5DE5F5D2E9EF
-:1049A000ED0941F8A715DBEFAFC73E65C52685DDEC
-:1049B000F372D1C0F4223A0A67A41D43BE5B0A9C7D
-:1049C0006B7712F495815FE953097EC8D5C290E2F6
-:1049D000DB4C78B438DD49ED23F03800B96A8F3C00
-:1049E000C0D060A6AB8EF7F3BA1E34DA2DACBB9FF5
-:1049F000E3D2D4EE14FB3B7F88139C27289ADF0078
-:104A00007EC7D7E57AB0AFB830B4B382F33BB6C750
-:104A1000B9108738A6E7391BDF69D0FB6BC897FE52
-:104A2000C9717DFFEEF80E79DE1C78623E1D53CC15
-:104A3000F982EFEBEFBD9F2FF7CFEEC05EE2A0D67D
-:104A4000F60B434D89DDA9FD977BDFE1B2516FBFC6
-:104A500030BE6100ECEE97BBE2783FFECB5D8F1479
-:104A600022CE7C32343A15F26F7CFF54BE8DDB9F30
-:104A70005CA78E07BD4450E6D99483AEB99178A661
-:104A80006C086447CE33996F747CD7B389969C5673
-:104A90003E963BFD4E9CF7ACDC754B11E4B8DE2630
-:104AA000E969DF35398063CC95755E01F9E5799662
-:104AB000C1ED575922DA396C1EF68B6D7B8B7D6800
-:104AC0006FC4A117EFB6F179C15957B8AFBF11F351
-:104AD000F0351BF361711FF7F59C8FD4A072FEF2C5
-:104AE000E26C1186FFB1E4B6840DD80F33F09D95CA
-:104AF0002BE77BD92A45F8685C6541790F4747E287
-:104B00007B00394AE98D83903FD9941DBCBB672A4D
-:104B10009FDF0DE3FE1623CF94E6714F9C73EC30BC
-:104B2000B41D8FFBC119856CEF0ED945007A21F0B9
-:104B30008CCCC329EB2AF3A31F86DCA3BF76E19EAE
-:104B40002934DE133A5FCBA6847B222FA3EC990C89
-:104B5000CECB386197FBA5788EFDE2B281F47E3C26
-:104B6000DFCFA119EF2747C851D91C8F1BEDD47691
-:104B70001EB7371EF8BA4EB1DFBA3B41C06FB53C25
-:104B800097A0E757C5701EB9F15EBFA152EE8C7BAE
-:104B90003FC40D321FF3419BCC577D707306DF7706
-:104BA00061B47FD0A6CD80FF8471C05F5F68AFED38
-:104BB000897D1703DF8589B58CE7095DCE17C6D6D9
-:104BC000CABC70FD1C31DA036ED2F3D89BB73938FA
-:104BD0007FE55846C337C0F7D8B63EC88101BDE768
-:104BE000EFE57AF21F899F8B9E7484517F749B8CB2
-:104BF0005B1FB505BF811E3EBA3E85CF471D6D1FA9
-:104C00001CCCF9018ACB02FFECA8A2C33617FB9596
-:104C10005DEC0453FBD4586141FECEF8296B67214B
-:104C2000BFA1659303E2298E6D79288DD735C29D8A
-:104C3000C47936075501BE1D7BF23FFA44FA2F4670
-:104C4000B9689339EFAE295B98EEC9B97AA89C97F9
-:104C500057EBF4BD66A8B453E571A107BBF2F82485
-:104C6000BD893FBCBEA3199AC0F9134FF750A037B6
-:104C70001E16C19F7F9CC7AB6C37F2E6CB9ED9F660
-:104C800006F66B8F594403FC0FE5CEAD3FC77D1B85
-:104C9000A9BF49623B24C4261EDF51973CA74A1393
-:104CA00096C7BFB08384174DDDDA13703DD91C85DC
-:104CB000E6D7228BC2FD2FDAD39FF3ED881F16DED5
-:104CC00027DBA9EAF8904F09FA6D91F9CA13DA05C2
-:104CD000B7C0DF6B5EDF4DE0FCFA3875DD00F0EF4A
-:104CE000CCA6380BE4A9FCAEE149C341B737550166
-:104CF000FFE38CD5D321328E104DAFE83CF0E0506D
-:104D0000A99FCA700F0ECDABD23DEBF9BE9052C831
-:104D100025E8F2A4C2FBD8A52B873FC472FA864DC2
-:104D2000F4A07E4F84EE4F8CE4CF3D43A55F70FE30
-:104D30003B760FB72FA5F6F2FDD71219CF2D36CE41
-:104D40006B89E6EB65BFFFA47A59EF9F1F7F88FC54
-:104D5000820117D2E18C68F8F9C7F4FDAFB7C7F04C
-:104D60007A9056007C8EEDB82D341FE33EFE740C15
-:104D7000EBAFE3C9524F7C49FA34D00B785CFD5B52
-:104D800096D3B7A7F279BF0541F3778D7E7F3B5469
-:104D9000EAF1F2144F12D69DE56F4A7D48FCBA86BF
-:104DA000DF7FD3C6EF478FA3427FEFFC3C7D3A8E77
-:104DB000E5E27847C98FE33B7AB17D6A4A76099686
-:104DC0009B6D36596F0B65C10F3EFE742F6F4DC43E
-:104DD000778F2787B25C11CF9B6CC19543A43E6D42
-:104DE000C6BA588449D50E467E91603D6FBC57EADD
-:104DF0005CDD003F05F9BD8307721976B4BB304F07
-:104E000077423BB99EFC529F779CB39AA6E793B337
-:104E1000DF13B2438F6BBA7F58B63D3ACF57D6D720
-:104E20001BEFD3BC4B35F28A2DC037644FE7788334
-:104E3000703F43F8962EBF6521F2C74BFDF7DD08A2
-:104E4000FFA9D42AC6DB09AF2645653C9A62C4ECAB
-:104E500029F02323FB89F0DFDE6AED47E0DEB6327E
-:104E6000FC41F3E0BDA16E293FB0A4F4BDB2E5CA98
-:104E70006A7CDFD02F1C284C6BA513F25A91DFD32C
-:104E8000345AAFBFC8B89B6CB23E7ADC063E478747
-:104E9000CABCA0A66CF76F47802F7F51F97CD799C9
-:104EA000EF7393DAB5E1A7B5DA7B7B6B9E2DE1FF5B
-:104EB0000D7C6BFACEF3BABE2B25FC8067CF75E66E
-:104EC000BCF2DE9BCC70DFED66386797191E506729
-:104ED000863D07CCF021BD5FACB3710E19EB6C942D
-:104EE0005867BB1D729D0D18EB6C945867E339D65B
-:104EF000D980B1CE068C75366083DE586F03C67AD2
-:104F00001BF5BD86497D2E7CE134E46B5658649ECA
-:104F10002FF1C3C7E79866D84DE7524EBF28CFA5FB
-:104F2000903C487DBF309EE7C9C36831147649CEB6
-:104F3000A7D4E71DC165F4DE38B7963C0C7662ED68
-:104F400057F32177155D1B39EFB569C52B3DEFA7E9
-:104F5000768D4A82805F51B1F6AB59F0A33AB8B56D
-:104F60000EC3089FCAD8869543386E1F66FDD15878
-:104F7000ED7EF34AC9478EBF14ABB8F982EA4BDA2B
-:104F8000B5993F149D772E569BF3CC2F95771E2D08
-:104F900007861FF898AD39C3C5EBF4118F22CEBB3D
-:104FA000584970619DFE598C5886FB8002AFCA3CFF
-:104FB000B59683369937B05AD92822FC93413ABD29
-:104FC0000D78EEB95CF6C7CFC3AB158BB84288EE4F
-:104FD0005A7313D6D7674A2CEC779F2929286C0F70
-:104FE000FF8FD6659813B86F2B125FDCB715293F7A
-:104FF000B86FCB7C6EA2A3A93DEEDB329F9BE86B22
-:10500000AA9FBA3AD7543FAF68B8A9BEBB90F82D53
-:105010005928F19B47F6C197027819E72D2E01EF29
-:10502000C84FC952022B592F6F50F8DCB87BE9AA40
-:1050300042D0E5048933E20886DCCCD5ED8BB0069E
-:10504000EC90BBB3A9B2FEA8D2F0C55DF4DE496F07
-:10505000ED165C8572D2B2EEC1116EE4D76FC872E4
-:10506000D13CBC5509A541F5140CD234C8D9616BAB
-:10507000E364DE4FDCD9BE5D35FCCE8383DEC847FA
-:105080007FDB55CE9B30E425CB26E3741B689D0166
-:10509000FF6A43ADCCE7DD509B12DB3D62FFC518D4
-:1050A000670BF820502E4B4BE5B89068C038C86F9E
-:1050B0005F06BFEDCC41E9B71BE3E9BE3CDC690903
-:1050C000D5DFBA3386E973585F379CE8F3D20037EF
-:1050D000CE6F54EDCD52E10F58B66FC13A22215533
-:1050E0005B0AB92FD9D0E3AFB8AF6BD17BAAC07937
-:1050F0009ACFD78C491C4ADF39F6B4CD3381E0BB57
-:105100006A1FB7639DBCC81AB4731EE6B60D76E479
-:1051100025FF64EB067E3E7F6B31E75D2E107E5EE1
-:10512000471ED1CF6519E32E2950D6B948BE3E1A85
-:1051300026F56349ACDCCF2379FE33C67566ABE256
-:1051400085FF38AD68A7BD989EDFA7B7734F9F3E18
-:105150000EF2D71292F76DB4BCAECA7BC4A6A932C8
-:105160002FE622F7F34C3D97CDF23DED5C3F5E67B5
-:105170005D1BEE23D7B139527FB4D4A9BC1FD7F23F
-:10518000FACBA953F1BD3A1BEFDE95D81BE4F97FAA
-:105190008BF0E31C817B7A8394AB6CE187FFB7E4EF
-:1051A0002FEFD463DE2DC976BA311F8A46A826F9BF
-:1051B000AC1C1B6792DFE9A29DE91CCD75482A89CA
-:1051C00080A74DE8666A7FFDB47E51FA60606B3D52
-:1051D000EB836151E7000B4C70399577403F89AB09
-:1051E0004CEF958B29ADEDB01EDE24FDD6F25DC9E6
-:1051F0001BB12F5E6291EBA1E99A7C5EB1573E171D
-:1052000022F6FCB9749CC7477CC0746E5BDFE74331
-:10521000BF1C0FECD6C0719DE60CD29744D1F2DED4
-:105220008D76C4D3C85D6E469CB43C4030FAF58997
-:10523000E61A9C1FB14AFAC67B5C5D9765B4CA4505
-:10524000C52E73BE55C5C177B89D91CF185D4F9ED1
-:10525000EFCA8EC07B82E2E57393DB9BEC88074D3F
-:10526000D33AF1BD14D1F79F95859A18CF6BF7A665
-:10527000B9B06F5B1175EF59A7E16E699FF4F83F04
-:10528000EE0D927E42835DC66DE3F75B78FEC97BCF
-:1052900076CECB658945DE1710459709DEF7B8BF96
-:1052A0008E19320F0D74B146D0255A8E40276B04EB
-:1052B0009DE60B49A7F9A44D820477849C45D2E76B
-:1052C00047D26B01FEA0FA057B9520F2DFA2E933FD
-:1052D0005F6B64FACDD7E2FD41D785E3A9B8E383DC
-:1052E0007AE8A71D19F29EC268FA2D100D2BB1EEB7
-:1052F0005D4076239CCC726177F23A4DF1C06EBB73
-:10530000F31BED36A9CF38CEDBF2FA3B3CEF5A3C2B
-:1053100034AB211782EAA97DBCCFDDBCAC8D3CDF6C
-:1053200029E764FCE4BA73562EA74D30CFBB6BCF90
-:10533000A5F1F31F4B970AD019728EB85E621BF766
-:10534000E621CE9778E1788DFD10430FB7FA75E628
-:10535000BCE58BF97FD171C2DEC3F538E12031C8DD
-:1053600094B77C11BF233A6FD9B0E32DF1D24E8EA2
-:105370005373DEC4D9C6E257555EA7BBA78FB7F0FB
-:10538000F9F157E57D77DA8AB34D904F2DC1C27A96
-:1053900070714257BED742D3E376463F59D529694B
-:1053A00088FF15C7B8381FBFB85A2D82FD2AA676C8
-:1053B000EE88762B9777CB825DF8F4EE5E8F0668E9
-:1053C000BE7C7A5B6A1AE2FE9FADB0A592E63CDF36
-:1053D000EED315E3B2909FF1D97D8EE9C136E85343
-:1053E000345CDA81F23B3F60BB75D2F27AE2747AC8
-:1053F000BF6CC5EE4484EA4A57BC33D8452EC5E19C
-:105400003CED9AE1BCBFBA610BDF07EDDAC0F709EA
-:1054100068484A6E8F7D8815CCF7458ADCAFBE554B
-:10542000097F7125B53B11735FE2F46CDC6E2A389D
-:105430004FE3ECA604FD3C5A35E70D9D88257F809F
-:10544000DA1F8991F43CB233C1C37762780259BC48
-:105450007E6B2FF7774A2D75D7019F6B52356DF80C
-:1054600020E011DC92AE723B3EB7AE55F7486A2B96
-:10547000FE61945B743B0D7F1B25FC6DE4CBC0DFAC
-:10548000060C7F1B25FC6D3CAF5C6BF6DF6ED7F71F
-:10549000FB8C7870979A662FFCDD4081E8ED673BC6
-:1054A0003BA1E0F7B05BAF4A7F6189E259D5C8FE06
-:1054B00052422DD69D3556E967073E91E7A22082DC
-:1054C000D04FBF50FB7AB09FFF50DC9D8FA1FD52A3
-:1054D000EC0FE5E11E53F2BD22E4F5CA734E1179DB
-:1054E000EE7634396191F0186786A9FD3857B6A970
-:1054F000FE27E97D4CF53F757B4DF0D5BD879ADAE7
-:105500004FF48C36C1D7E4FFD4D47EB26FB2099E7B
-:105510003A7E86A9FDB545C5A6FAEBA72F34D5CFAF
-:10552000D06E31C13796DC666A7F93BFDA542F8420
-:10553000FF09D0C71790F7AAD561FDE4C0FD2F4E33
-:105540002EA9FE0FC8631E4D22CDF7AEFCE5677C89
-:105550008FF57EE435D38C1B31C6E26F2B8EFF07AF
-:105560005DFE6347FAB60DE7756E03DF8B89D82DB4
-:10557000E46E1FECD4A0D6E79DAC46DCAA2143DE46
-:10558000876E6E7FB17623E2F69F7193C8F5AC3BD0
-:10559000739395F4D78821FB73BB21EF79C4E0594D
-:1055A00056D2372386EF7FB62BC1FEBA3B6771FD1B
-:1055B00015FBCFA0FE1F75C3243C55B06B72FB8852
-:1055C000BFDD84FC941157765DED91719136CFB7B4
-:1055D0001B25E88473E1A013CA30C93DCAFD24F736
-:1055E000280F90DCCF23BD564F728FF220AD33F1E0
-:1055F000FCDF689D89F2755A67A27C83D697281BC9
-:10560000687D89F2EDAAE95CBE5BA5F17BEF579559
-:1056100070F941959F9F7F54B594CB4FAA02FCFC33
-:10562000C3E1328E108F7B9313FEC9BDC97E17DF95
-:105630007F50A3DB2D51A7E7D5ECA7F52BE8D96860
-:105640004DFEC2D9BABF78F1F5BE557C11E1B74D18
-:10565000B6FA3E97FCEDE462BDAF3F2FF56AC7A0F6
-:105660004FDECB9EDA235785BDF3FF3989EADEB3DF
-:10567000B47D9FE43E5D5E3E1EE13B8DEF8D741E6A
-:10568000E2FD74770679ABC31956C07F65A08C5FC5
-:105690008EB436D4A0BEE63BE1C6BAF9A584F7794C
-:1056A0001FBC86DC659C3F56CEC9F5CA287DFFBE6F
-:1056B000E63BB97F3F0AB853FD4897ACAFB9992C88
-:1056C0009D17F521FEFE289C7696E7DB4C793B631F
-:1056D000CF358CE1FA78BB1BF9A6A39C61F93DA7F5
-:1056E0007021BEFC52C21ED9FF38D9FFA6EFC2FC02
-:1056F0007DAC3E91973DD2D98ACF32C6AF41DE37DD
-:105700009723DBD7E8ED4769D47F32F0F34BFC8A6F
-:10571000A9BDC49FF5DC287C3319AB6D591F9B2EA6
-:10572000CF278F3DA7D77BE4783B58258C3325A81E
-:10573000CF4CD1848FFACBCC141EC4DF46A536647F
-:10574000707B3D9F21C12ABF97E491F77175FFBB24
-:1057500026F7038800C0DFC84B32E66DE776E10C20
-:10576000F8799D17DBF97B99EA4E2FF4F5A75EAD2A
-:10577000EF08AAB73A2D3CBE1A9F3C2FFFD68BEEFE
-:10578000CEB85F74B2EEAFFF13FE5F81F7473AF712
-:1057900049FEE392B7CC5658994FFF0F6D93FF9295
-:1057A0005E242F183FF19FF9017EEAFC570CFAE8BE
-:1057B000FC3FCFAF6591F5BA7C5CC8FF90E4B72E93
-:1057C0004FA39C326F02EDC1FF9156290F35313244
-:1057D000DFE3A584C287714F16D1A608F1F991863F
-:1057E000BCF8E5F9E1FFADFCCFB3CA7BE41C654E24
-:1057F000BEA7EE52F230BB5914E2DECD8D03B57D6B
-:1058000098D7C5E7DCF580E78AD18570CF8DFAA7F8
-:105810002E52AF7DDD6C036C3C7F1BED06B5D65B75
-:105820009D6FC741EF19DF31DA7DA57FAFB5DD4050
-:10583000FE9D8D25E342EB60BFC6575B396E4D9EE2
-:1058400009C307C99EC97C4E5FA2372D32FFD373AF
-:1058500060711EEE0B95E7B744BCF4ABDDF41FF4AA
-:105860006AE1F745CBD19F50B75BB1EE388B7C5ADC
-:10587000FA4E61AAD93F1F1FB5BF7E55CE97EC8F58
-:105880005F75897BAB7F3742F7A7B345F67FF2DEC2
-:10589000D08747B07EBEBC7B437B8B3A9683B1C535
-:1058A000329F8BC66F1988B88D4FF801170ABF1544
-:1058B00072305ED45AE5BAD277A2228F57ED4C9F50
-:1058C000AB45989F4F24830263720D890FE097E3E5
-:1058D00026CDC47DC06372C774C7F388FBF3FE0096
-:1058E000FC2A54ED6FAE88FBF3F68F95F36DF1B59E
-:1058F00032DEB4DFD9AD4D3FF455B2B7DD7B802E3B
-:1059000082CB3F933DEE4EE37E85EC31E0AB7A57A0
-:105910000BBC57E836E71D19EF5FED1A23AC2917CA
-:10592000B777570FF86327D0F9B5E45E63C1AFD7F7
-:1059300092878C453CFEB5E40E16593AEC5CF67F36
-:10594000AE7B5BF819F3A3B5BF42EECFB8FF776C1F
-:105950007B79FF6F345DAF1221137D27E8F4FD11D1
-:1059600074FD087A349AAEFBF475C57EE73B7B8CF8
-:10597000BC29C493BB2F6F60F8569B9C07E5CF4DA5
-:105980002C405EF4E2F7647EC751A002BBBB7438C2
-:10599000E33F6AE95061CDE5FDA800E85DE6947457
-:1059A0003C19786900EE29AF4FD18E83AF5FAE53BB
-:1059B000F9BCFDC96762381E7724F86C22E869C813
-:1059C0007199EA5ECDBFA7F19A2AEF59FAFEE52C4C
-:1059D000DC2B7A31B92679FE7AC4A036E4399EE40C
-:1059E000B9FF85F22C36C97B0CCA9C856DF2D9585B
-:1059F00077BE30D0C7FAC225C2B740FE2B845C1FE9
-:105A000055385F97F754128C73AFD17ED5E0586A42
-:105A10004FF576A7CC1736F89DE990F75866C6097A
-:105A200017E22042CBED0B7CFB76F7C58DE4FCC280
-:105A30009CED91796BA3C2FD78DF79FC4195F3DD94
-:105A40005F8995F7B837123F14F24F7FD2CF1FDF2F
-:105A500095F8983C444B1B8971A9DFABE8F7F51E1C
-:105A60008A48E1F8796E3CAFB37FE47A3D6BA4AE2F
-:105A70005F068801FFF4F711DACB7B8417BF9A1B0E
-:105A800004DE8BABC9AAA5F2EF5CF03D7135589FDF
-:105A900067B7EA9D51A227FFFEC598541BE799FFFF
-:105AA0006FFB7D844CA1F1FCFBCFFE4EC278F9E880
-:105AB00082DF49C84C5C75404B6DFD9D8CE8DF4929
-:105AC000C8D4EFA7166E693F8CDF47B852F8382F5D
-:105AD0007F5CBAD9AE8C718D3EE0E2D21CEFC9BCBE
-:105AE000443ED74D23F5739D97E27BB9D0F92ECF75
-:105AF00075420EF4DF3B09423E8DDF3B31F86EFC10
-:105B0000EE494D7BF9BB27FF6ABF7312CD9FE8DFDB
-:105B10003D89E64FF4EFA08CD262994E63CAE259F8
-:105B2000AE0D3E4DA7FFD81FC0B95CE5BF9F5FF724
-:105B300047CDD3B362F520DC537ABA58EAF58BD956
-:105B4000FF695EDFEFA16FB6E97ABFC629E321BE28
-:105B50001AAB881925703F21E7CBFEA246DE03551C
-:105B60006395F18000F115F7E27D1BFB0F799F2310
-:105B7000F947B68E88CBF8F9FD80DDE9AAF144FC3F
-:105B80000ED652791EF89045FE9ED4EC1CBF82FDC5
-:105B9000CB4E5DB5A7A0AFD245D1CEF91C97F70F7C
-:105BA000817E9FF5274716EA677591F7478A1CF9AA
-:105BB000BB4106FEB332655ED6B323753DEE9179E7
-:105BC000587B46CAFDC0048F8BCF3514E7083DBF14
-:105BD0005564CDEA0F39FE84FDF816B7F4AB1B6DA2
-:105BE000F21ECBC0AB329F679DFF6DF6FB37935F14
-:105BF000AB4AFF66EDBD1C674814D8C77D2CA6399B
-:105C000019F8F75A2B4CFE429FA0D39497DC6FAB48
-:105C1000CB04F70FA59BDA5FB1D76DAAF7867B9B04
-:105C2000EA730F7A4CF0A0867C53FB211FF84CF0EE
-:105C3000D0C6F1A6F6C38F1499E05323BB4A3A416C
-:105C400026693CB396B882F25E7C1927E96297FE1A
-:105C500054CD6D723D61E4AF6BFA3C88CE5FEF6C62
-:105C600095F9EB76BFB46B5ABC5CDFBADA0997CA18
-:105C7000E7621A18C6DD109C371E30E7997772CAA2
-:105C8000F59565AC5C7FD8F53CF3D8DEF2DC8B9102
-:105C9000574EEB0A1FE8DD5D34CEE0DF2FD0EF1367
-:105CA0008D96E7BF8FD4EF738AC2BB8B5D9EA7AB87
-:105CB000B9CDCEFBE75ABCBD4949BC109F6E7A7E78
-:105CC000E46667DBF73E39474939BB21AF488CA210
-:105CD000768F92D962FFEB82FE3C8DD07735BFB2D2
-:105CE00073DEF8A5FA9B75851CCF4C8B65F6E41C1A
-:105CF0005E0FF23940A3DF74F44BEDFAF874398F7C
-:105D0000EA6F565233DFBB2692EC6EC8AF16BF92D5
-:105D10006157AC4856DBA07BEBB90C99A77FD3EA5F
-:105D2000D0BDBD08CF99F65A9BBC702068833C4C0F
-:105D300028203FD28BF8EB43EBE3891F8FE207EC7F
-:105D4000C8CFE8B2AFDDEC4077F899CD2C0F4844CE
-:105D5000C17E22FC4F75602BDE6BAE9479DFBE51A5
-:105D6000C2B8FF80F16AD1E3232D2274FEFC44A067
-:105D70000D79D3E2EBF91C826BB194A7CE11E7AC9D
-:105D8000B0FEFC9F3A2F21B0434AFDD86A853CE71C
-:105D90007809FA19E754DCB7D88A36C6E3BC881804
-:105DA000AF44D0E1892BA55C2E061DDACB76D04717
-:105DB000176B477E5F12F6175A843BC97589B8FA8C
-:105DC000FFC4F833AD32CE90E594E7453A5B35D663
-:105DD00017F6DEFA3D7717C8BBAE37F4385927AB54
-:105DE0009CF79D3C725E5FA8170EF0F7ED9ABC37EA
-:105DF0002D9ABEFC2F22AE629C5F891D2BF588A1D7
-:105E000017CE9F43E921D7A1365D3F04BB5B38EF36
-:105E1000E0AE04F33C7E7C94A46FA13E8FC9CE27F4
-:105E20007A079BF484C0BE5ECD0A95F504E9C97A71
-:105E30008DF02CC6BD2CAED6DF7BBBF90169C74601
-:105E4000F98A1EC4BEC99C3536B181F715E4FDB090
-:105E50000BF438797120EA7E16DD1F3FBB5A71E1E1
-:105E60007720E6AE32D72F88FFE213AC1F6F8EBECD
-:105E7000A7C6D8AFBB441CE0FE51BAFDF7088F9E01
-:105E80007FBF0CF89D0DCA7BAFCF9F57D2E33F2D4C
-:105E9000C167257C87E07851B45F60C06EEC9345A4
-:105EA000DCC342F48DED0DFBBEDCDA667EA341DF80
-:105EB000F3791EFA3E1D95CB56F07A46E637903EB2
-:105EC000E07DB913540F3FF044E00CB73FB12B868F
-:105ED000F34A4E7A1B0660FFD6D8A7EBAEC97DAC5D
-:105EE000965D0932BF21DE22E1ADF21EFB457F0F38
-:105EF0000EC03AB631F0ACE99C83D668DEE78B2E53
-:105F0000B5EADDBCDE3C9CA7D58D427EBDD5E3F471
-:105F1000107C77FC7EBEA76B02AD1FA1D79097B215
-:105F20002255E2CFFA2B7046D2CF2FE9770D397A7E
-:105F30009C9F27487B228E2968554B65717828F7EE
-:105F4000FF63F7C1A69EF3CAFDDF73C3F97D6DD56C
-:105F500050867B079B477F40FD5EA7C5BB1147BAB4
-:105F6000B6E617E362E9D38DBF8F5FC16567F3F9CA
-:105F700001A3FC58B7238DB6B6EB27E8FA67E19585
-:105F800086BE96F2BEB85AE17DB5C59071C0F7CA1B
-:105F9000FB390DF84CAD0E8F93F092151286698285
-:105FA0001F3C47FFDDB32D7AFC05E34789F1232E23
-:105FB000B05D8FCF60FC28317E3C87BE020C7D0532
-:105FC00018FA0A30F4154AE82B3CFF3C790CEF6BC9
-:105FD00063DF6E6CC47CC2BEDDD888F9817DBB48AE
-:105FE00018FB7691EDB16F17598F7DBBC87AECDB4A
-:105FF00045C2D8B78B6C8F7DBB4858E4FFB415867B
-:106000005EF34D36C153693D3036623E63DF2EF29A
-:10601000FBD8B7337D4FBBC5F4FE8D62A9E97DEC9B
-:10602000DB45B69FBD5431EDEB09D1CC767DEEDA80
-:106030001496A3D7BC451957B6E7DFA9FA99AD2B3B
-:10604000EB078E632C2E8FF5487ED78E97FCB7C852
-:10605000F3114A33FFBEC0993BEC121E67CEDF3608
-:106060004AEC7B8DB5C97D2F94D8F742897D2F945A
-:10607000D8F71ADB43EE7BA1C4BE179E63DF0B2566
-:10608000F6BD5062DF0B25F6BD5062DF0B25F6BD75
-:10609000F01EF6BD5062DF0BCFB1EF8512FB5E78CC
-:1060A0007E88F09817A1C7E0AF7737AD33490E4D22
-:1060B000EB4C970986BF1ED91EFE7A643DFCF5C8DD
-:1060C0007AF8EB9130FCF5C8F6F0D723E11B46B91E
-:1060D000799EC16F8F7C0F7E7B24DCBF36F067C456
-:1060E000D626AE3B7500656382F228CE1BDE70E5D6
-:1060F000B6D9D8BF6C8C51B29249A7DBAA77CC1E17
-:106100000B7BABE73F0E10CD16E81F0D8BC93C3E55
-:1061100067C879A5FDBFCBE0FADBF5FB11F81FF1ED
-:10612000DDBB4BF0EFCE18FBEDC6FB1E32DB288D3E
-:10613000F6AD70DBEDA2FB37DA716E55041E38D177
-:106140008CBC19EF1DF103B10ED9A2FF8EF096653C
-:10615000322F3A5AAE7EABEBA72D969DFB710EA661
-:10616000B958F1E0DC47F75A8DCF99F59F292CAA51
-:10617000B7753CBD1E4BE4BCDA5F5C29ED9181BF75
-:10618000111F257DC1E7074734378C49A2F65A60B5
-:1061900034FF0ECE04BBD07F2FD83F0CEBC97E015D
-:1061A000C5B73142CEABF5EF690189C7138F4D9268
-:1061B000EFC5CAF79E782C91FB9FB45CE13CB3110C
-:1061C000DB850FE794EFD1F1EFB73DACA2BFE2E57D
-:1061D000B23FE3BBC5EBB2EC38CF6DD0AB58348ED9
-:1061E000C57DD2224FC19DB2A2A75563BFB4C34C97
-:1061F00097057ED0E59E831A99973C0E7988A24E2A
-:10620000F0BDA113F3DE328D97C93518BF6B2A7824
-:106210006DA8056EB1A0DF49448014C49309C67807
-:10622000344DF8B389BED74D2F667AF79E2914D026
-:10623000BBCFCC0D96547AAF9FF69205FE5AFFDA8B
-:10624000462E8D71784624AB8027D85CE380FF848E
-:10625000710AEB8FE83C1EF8070C2FB7B13D37FCF5
-:1062600087C509E7F37CFE8A3C9F33076D9CE77383
-:1062700066F959AE2FDE1DC3793DDA5A85F59AE1EC
-:106280003718793B65B7BC3718F439961DDC92DCBA
-:106290008DEDFC1FAF441E4BD79D89381A7762F9EC
-:1062A000EEEBE0529E59BE5BFEFEACBEBF63FC8EC1
-:1062B000A9C8F1713E98E1070AB5CE1EB98F63FCFB
-:1062C0001E1AE94F6E7766AFDDC5BF47A7FF7EA9EF
-:1062D00011F729FE4B6E3DE85ABC5EFE9ED99C55D7
-:1062E000F7154E2778BECF19C6EFA147E7632D8C6F
-:1062F000F2032FF5FBA5C267F6FF2EE6EFFCFFF2D7
-:10630000BFB7FCBF73A5703700800000000000001D
-:106310001F8B080000000000000BED7D0B58556539
-:10632000BAF0B7F6DA37606F5C080AA8E002454DAC
-:10633000C936225EBA2EB9282AE206C4B441DC204E
-:106340002676AC21B3911ACA8D7B4348D6C04469E6
-:106350008ED5D6D433534DD1654A27EB6CB59A2EE2
-:106360009A263975A682ED25B53BE9F1D49CC799EB
-:10637000CEFBBEDF5AB2D776836633E73FFFFFFC22
-:106380007B9E66F1ADEFFE7EEFFD7DBF25136D06B2
-:10639000369EB1337B459F98C258C5BE3DA52C8E15
-:1063A000B1533526C6A05C562F322CB367992F4DBA
-:1063B000C0728E2102CA657F501C82CCD877ABAAEE
-:1063C000F7BF064DF7AF823616C68ABF1FCC5826D8
-:1063D000631DAB642A977E3F86B158C60A0211F44A
-:1063E0007EEEF789F4BCFEFBCBE87DB10DFAC1FC73
-:1063F000811DCCB71AE63BE5B650F9D44EE6C3F999
-:10640000F1173781B111F8070C99C1A43C368CB152
-:10641000D18AB007BAB359DF5F45E3CDFB3E83C6EF
-:10642000BB667C45C300E80FBD1D69D07ED6F8F77A
-:1064300072FAC17A5DEE295922948B8DFE39387E2D
-:10644000B1C3C4DC29F8FE564302D417325613EB0D
-:1064500080F650C6FDBA5CAC468861ECCE89D06946
-:10646000009459CDEB03100E5B98632BBC9AE7AAFE
-:10647000C8C67663CA9820C2D4E551ACA61DF7629F
-:106480000B64155DCED80FF8BB0EDEE322AFC4C59A
-:1064900027BA14A82FEF077F0EA26D29CCCA983D0A
-:1064A0009DD75FA924BABCC3E1EF96758A7520CE4B
-:1064B000C77F43CDD00EE611EF34FB5603FC5D36AB
-:1064C000EB61612C54B8F394C028DEE68754C6868D
-:1064D0004D823FB2E05C0C86854E9867C18A0C7392
-:1064E000657ACF3ACCD9D9F3A6C03EF2F0BC61BCF4
-:1064F000E56B4C3E4B0A3ED3E299ADA75DE87311C4
-:10650000C0578EC575076E17003EF314A6E4C25C33
-:10651000F399B62FE667B08E1BD4B2D7AF049A6C4E
-:10652000040F2ACFF18F70B9611D375B03530193BC
-:10653000D8CFD36BF2130D8CBD61E270B5985CCAF5
-:10654000605887697B867FB08CFB90E83D330612EC
-:106550009D76D8C7DAF6FB46C27BAF22F3FD995B86
-:106560004C0C07623E9313E0BC289D293E84BB91EE
-:10657000E3D191352F3DDD2CF4ACFF8889CD6B0F35
-:10658000B3BF3AC540F36C03BC954732F6DB5556B2
-:106590007A3EB14A6232A0E053AB12A8FC34E0313B
-:1065A0003EDB578DA2F7CFAD7250F9855593A8FC0D
-:1065B000E22A85CADB57E5D3F38FAB9CF4BE60B407
-:1065C000EB1605D6FB9041397C0FEC6F90D8C210CA
-:1065D0006FF1DCAD137ACE37A2E5BB0A3C8F2A9B64
-:1065E00059C6755701685CB08F4AC5EAA8075000C4
-:1065F0006C1B13A05C2EB2EE6647B873E7707C6C20
-:10660000FE7F2D3540BBC7EE8A24BAD5E057663EE3
-:10661000F0BA35A5077E1FD5FEDAC40C746C69325A
-:10662000CC7B434D84A33905F1C3E9C1F546A53BB5
-:10663000CC2E80D7BC298CC6BD32D5D988EF6F5EF1
-:10664000BBEBD10FF0FC76A6985D709E15DB331A7C
-:106650001364ECE7BA5781761536C98C78778B3797
-:10666000C62CE3F9C7033D206EB3EEE4627B0FDC7A
-:10667000B728028D7B7D361FFF1B3C1F6AD7622A1D
-:10668000D2B5E3E7733E3D1C9882F0F200FB581D43
-:1066900083F4F0E2143C77E94EA091C9B01EF63EB7
-:1066A000D59B1398E489391F5E83D90101EB13014F
-:1066B00096EEC93DF06B1E55497CCE043428C604C5
-:1066C000C38F113D85E2CFFBB80F804BE50A6175A2
-:1066D00003CC5FD526FA0401E9ABE00DA2AF564129
-:1066E00026FA7A70983991E84D90907F15F497A723
-:1066F000C643FBEEFB0469B38CF40A738DEB19B748
-:106700006AFD64A2B72A1F3C337BA7CB9FB5EE4935
-:10671000DA21E3312A665C6795A498FB07D1FBA2D6
-:106720001681E822B4FC9A22723A626F9A106E6562
-:10673000C365C19381FBE1F8B160458AB9D286F5A2
-:10674000CC6F807515A4B237B05D772BAC3785CF91
-:10675000332E68DC4A1C37685E68BFD009E57715C0
-:106760003BC1B54292CD8928572489D657B9629743
-:1067700009E1B308E02C64203C1C661B8EBF14C6E4
-:1067800007F8DD20F9F3B0FE867499D5C339547A41
-:1067900033CCC89F5C6BF93CAEA618F3E550AE3025
-:1067A0004AE624289745323A37589F0FFB57013C59
-:1067B000FADB705CB610654B285C2AD4F556B5C47C
-:1067C0009817EBDEB79AE474E26B4A387E214EE10B
-:1067D000785BE92D4A5E87E7EDB64B44B746C5ECDA
-:1067E000C075A9F09DDFB6CE9412D4FF5B158FC59E
-:1067F000291CCF0A52FD6902EEF7D60807AE77BE14
-:10680000D46242789E83F3831C0E8B257F1A8EBF41
-:10681000D8CAE1700E3FDAF4E7DAB33E0EEFAAB65B
-:106820000AA2BF1B8DCEE475D0FF4658A71B9EF36E
-:10683000D7EF4A13F009F42E207F905CC9CE207A5E
-:106840003BFEE0F5C9B47F583FC2DBEE90A722DFE4
-:1068500001BC21B9ABE14F7926A76BADDFE029463A
-:106860009A77F0944BA3D7AAB5EF51FD22A0579485
-:10687000B766F68280F5666084E1E837094786F6F8
-:1068800036C01F77620FFDCE6781F9C85F17AD2D47
-:1068900062AE20FE03F2B6E6B930F09A87EBCD2265
-:1068A000B945E70D74F81AEBDF539FAD9E7759AAEF
-:1068B0009EFE713C1CD7A1D567FBD36E4DEF69AF2F
-:1068C000CD5BD69FF7437A403C74A8F0C1F6CBA9C4
-:1068D0003D2F833C5EDD80FCE13ED16711F0F9780D
-:1068E000C3402C3F0BD216B6F6C5F297DE9D0BCFF8
-:1068F000CF1FDA548EFBD3D6B118F41DE41337AA98
-:10690000F2B9CA1F9E5FFC6292EBBA295941F8F3B3
-:10691000C0EF4720FFFEE2E977D210CE1FDB39BF80
-:10692000FBD9EF1F37B1D49EF55736BD67AAB00526
-:10693000C38BF3BBE65107E9FC168DE2FD1679BF68
-:1069400025F9C5407EA5A59C7FFE15DE6779FB5A1B
-:1069500007B577D9FECCCF7F1093C4C40B9FB77611
-:10696000BEA1E7FEA8C9E94F407D34B54547FFA168
-:10697000FBAF50D75D3585F3B71B543CBEA1BA952C
-:10698000FA5536553C8E7AEF7C8D7EABF4EFB5F33D
-:1069900039B5D644E7736A6D5A23EA8BA7DAF9F959
-:1069A000FC8BD83E7625B4FB62D9D65B1253492FB7
-:1069B0004946BD04CF07F5D21B55FD74099C0FEA6B
-:1069C000A761CEE736D4CBB4F292C7F8F92C7A7A25
-:1069D000DF277F9409FFF8FEEEB3F890FF56B63F2D
-:1069E0007BE84A783FBFA9D59402ED3C5352083E5C
-:1069F000E7F87C4D86C4A2617F4D9B4CC8073CDA0A
-:106A0000BE43F05C832B33723EF328E8F0CD315C5B
-:106A10001E09FD7BDACF674A3CF211E61EC2B6C6FC
-:106A20009DBFFEA7553A2A48759849AE3544B1CD69
-:106A300012AEA3E27E36B677F9753482D305485D8F
-:106A400005E9F3E8144732D285A6BF86B6DFAAD29D
-:106A5000D7E0A8F6F9B8DEC1B120DF01C4BF895480
-:106A6000B251EFF9CD9556C9E3C0FE2E19EB2D5664
-:106A700026A17CDF6C90C7117E827E7F4F22C232BE
-:106A800090857C6FF8B2C0B7B83E44A78871FC69A6
-:106A9000877DBFA3C20B55F181FCBD1F9F49C67600
-:106AA000E25391B51CFF42F50CAD5FA87E11AA57C9
-:106AB000F4B6BF3D17B9BFA3292E1FC98908266D9B
-:106AC0008EA1FD2DC7F2B9FD8D628A01FA97FFF202
-:106AD000F24DA84F1EAD57769BA1FEE81D36EAFF8A
-:106AE0008FDA6FE83EE75755E8F6798E6E5A44B272
-:106AF000334EB56426935D07360F83FAA3B7461865
-:106B000010FE4753B8BE0016A01DF5C46DAA1D891E
-:106B1000FA383E511F6723B93E8EE5A755BB12F5E3
-:106B2000717C7F5CC5BFB248251AE57277BD5DDA1E
-:106B30008CF0F073BAE9AC1D4670003D81F36355EB
-:106B40002FE89402F6FE417C1AE4C77D28EF58ED49
-:106B50003086F65D67CB51BB211DF192AF4F6BBF05
-:106B6000C2D4C2EEC0760F0BBEAD306ED48AF7F23F
-:106B7000E2514EB7A56408D06F41ED69E2870B6C16
-:106B800003658672DCE66A9C88F5EB53A4D5D02DAC
-:106B9000AA2DA3B316FA2FF68E24FB798520937EB7
-:106BA000CFEA05B22B996A1F2CC1BFA0BCC4F6C6A0
-:106BB00070955F1A905F2EBAFF8EC644281F36B0BC
-:106BC0006E11405360289A8AE5820D310E0FCA5B20
-:106BD0000FDF0FDB087CD4DAC3474F4F72B26CA4CF
-:106BE000F7B3806F30FE68581BDA512B4CED0AAEBC
-:106BF0009F81DEB195E17A9DA4C7AF52F1A2B3EDBA
-:106C0000B05D56CF07F5F3E1AEEEC3F7E0B9DA0CAD
-:106C10008E6619E5BBBC5F46B8BF2532D4678733A3
-:106C20005EBFDCCEEBE149FAF1F24DA28F917E5CC2
-:106C3000363080FAD77A91F8E2E24D250351DF58D9
-:106C40000C65945F1B702AC0A7C6B61CDEAE35EF7C
-:106C50002137F0D3648139911F1D33068A101E2716
-:106C600037C5F7AF477DEF66CF0806F5559BEE4970
-:106C7000C6E7C94D11F3908FE74A45B931A8FF6CBB
-:106C80008CC940BB5FA3B3F46C2E0F6EBA39271EBC
-:106C9000E5DDB2BFEF795402B9BA187054423F48EB
-:106CA0007B94CF0D4D96ADDA9E2C026AD9E35C231E
-:106CB000116EFF62D8397732CA61C1B72D91DACB34
-:106CC000F1521F76F371B42B014F6FBEFB431AE7ED
-:106CD0002BC3DEC2F9D07FD9CDCF47E338FFF260B6
-:106CE000C70409DE1F1BEFCAC4F13F17366D93D0EE
-:106CF000AE5DBF692CCA8FF1AA7D54D0DF39773ED3
-:106D000087AF63B3DCFB7CD5DB0582A7565EE0EB87
-:106D10006766A897FA9959C2A7C4480F3E29B25A84
-:106D200094EF9A5EA2BD9F96CDF9CFC97E2DC9780A
-:106D3000FE4BB7AD4B46F9F1999D975D5BFEB4F8FC
-:106D40004E5887ABCD2031C03B979191DEBBC8CD6B
-:106D5000F569560DCC24B167FEA2EC2882F3D2F57A
-:106D6000993AB9878E197CFF9991E5E33A867ABA08
-:106D700033507FFAC8E85F8CE7FA11E8A7E8974933
-:106D8000CFE6F8F7518B3815DFBB57080CFD4F1FC6
-:106D9000B53C6F1FCEFD28E4C7602F9B7C5BA1BD77
-:106DA0007D7CBB1FF9DECD2FC48C4330E689E9F131
-:106DB000883FCB7798A60EE6FA145AD36C99D16F18
-:106DC0000E776E37A97AD4B9F20BCF9A11EF973DAF
-:106DD000D54A7E0550537CA8DF2C6B7FF68D413061
-:106DE000DE2DDB2B32711EADFD2D2F703844B080AF
-:106DF000B92448AFAE18D5BF7130F0C8E5D9F9AEA7
-:106E000007511FC273BA12D424655245BD119F1297
-:106E1000ED9319BB491F07FD8AECEB9BBD7CBC9B26
-:106E2000471D6C4CA57D15C5B2A0F3BF2DDB44E713
-:106E3000A5F5877D533F8FF5EEC702B05EC563644D
-:106E400011D742D9C83EDE86F063D1D256DC879195
-:106E50001D7B039E2BC57EAC199E1B6B96FF2BB52D
-:106E6000AFB748223C3D37D73D1380F964913919BB
-:106E7000F47767D7D0786E33973FEBA29E7EF846C3
-:106E800028D7CEB13900BDA11C4DF0D9F90B03F1C3
-:106E9000F944D6BDC700CF78065404001A92EA6AB6
-:106EA00021BEC3383F5E799BEC437E0C1C5C403CAA
-:106EB000FFE6951399B8EE6B87064E235E99EAA715
-:106EC00057E402FDAFCF56E1921EC8C4760376ABFD
-:106ED0007CCD7880E4A32941EE8FFA8A1FC7C2F5E2
-:106EE000FDD54078B053F03F8EF36A70DAA7D2FB3D
-:106EF0007319AE4DD9F05404D3ED7E683F5B8876AC
-:106F0000E07E0FF417D3C60D433FC4C72938AE1B2C
-:106F1000D0561CDCA3C766AB4B370F9AB41EE132C8
-:106F20000500CAAE065B26BD3F3342F95E66E8B691
-:106F3000C03AB2BBFFB2A91ECAD2AFFB3111449511
-:106F400027229965C3F8C26ED828EC6777FAEE4518
-:106F5000B8CE7BBBAD0CE1C4AC7A3DD76C48F4FF36
-:106F600012F1B926DAC112500EB567203F62B7D8C8
-:106F7000C83FB3E06C20EDE72897FEBA97F4F49F82
-:106F8000A5BA5E46B80E1295C32EA8BF57F20FFBE6
-:106F9000158E5F1BE5A8E7728405AF7FE71D7F8D27
-:106FA0008E857EDF748F303E03EDBE51AC0EF4E76C
-:106FB00075DE39E6B5ABA07CB52A4F42D7F54D82D8
-:106FC0006C44BBE39B6EAB1FF5906F6C06F2736471
-:106FD000EFDCF321FA21B3AD36BF188DFD4C5F060F
-:106FE000CB1B762029E6F8181231EC0780E74055D4
-:106FF0002E5DDB4F6F3F7666733BA853E53F46D966
-:1070000041703EE536B266C44306659CD768959AE2
-:10701000617DAFDAB62D40FFD5A9EF53FBA1DC3877
-:10702000B573583F96DE3B5FEC407D02F484884C9C
-:10703000E5533C7F4DBE96AA708968B9DE84F0F0B6
-:10704000003CD0BF566A33F82DE85F9DA38703ABA1
-:10705000ED2E47BC61866807D20D9E2F9EBF2C186F
-:10706000BAD955E79FF7756725FF2FA1BC00CE134E
-:10707000E15A7EEAF8E5BF62746EDFE23AE01C1B7B
-:10708000AE603DE7F7BFEDBC98D1D184E7B052B414
-:10709000B7E039788C5CDF73036E6D8DA16EDBF029
-:1070A0005C567A86D3390DF4009F403B0598DAE6AA
-:1070B00038E42B07A9FD56CD9F36AA86F84CB9C7F0
-:1070C0002221FCBE8B8CA6FE0CCED534281C9FE161
-:1070D0007CA5B68A115F59985E23E0B927E00CB011
-:1070E0009F4E43C08EFB0C44801609CF6B725255E5
-:1070F000FD1B3882EA67C5FE8FDC61DF8CFC46B47D
-:107100000E7EE4188822D6D41D3D1AD6D526B07638
-:10711000DA9749E51F4B6DA4CFB5C5F888BFB59583
-:107120000E71E05EBF616A7D7524F197AB0C062A93
-:1071300077CF1F48F6585B0CB0561C6FFE68D21B09
-:107140005EFC3B8F9774A7315E9FC146ACC7FAA225
-:107150005134DECB1ABFBACF4EE3B515298991540D
-:107160003FD080FD5B535C137388AE793B503CA8E5
-:10717000DD860D4A229EE7866233B57B4870CE5F7E
-:107180008CE35C6E23BD31303FF2E96DFC38FDE8E5
-:107190005FEAACE5FBD6E840F3AB0F751F7E18F94C
-:1071A000873B1B4E04ED43EBD70B10AF1531DA01D3
-:1071B000287CDE397F770ECF59370097C545769208
-:1071C000BD2EA73104369C9FC4B2114FF6003CA1DE
-:1071D000BDDB04E71CC7CF79751C9E73E1A6E07385
-:1071E00086F1DC2BE1BDB03CDA214CA2731E85E3B5
-:1071F000D7B24807DAD7E7CEEF555F063E4583237F
-:10720000C102B0F83CD5353F27AB478E3CF209ECC4
-:107210000FE0526E0964B5A07E6E60D5ED61F8C0D6
-:10722000A21C6E1F48ACDB84F275A186FF7521F8A5
-:107230001F1812733C4AC57FE8F74ABC73319EC3DE
-:107240005742C7047CB9F76FE2BC70E3DF9CC3F917
-:10725000D68138E7325CDF70E3EE21B7A1BE7187DB
-:1072600085F45F7676CF109CF77729CE9FE378116F
-:10727000C3BBC9BFDE99D86DC2FD75CEFF3C09F511
-:10728000AC85B57F22FABCD8F5AD8E1A6B42B91920
-:10729000939F610A40FFF8FC8CD7F15C0ECEB2C818
-:1072A00096307E905DB32626A13ED4317D6212F2E7
-:1072B000CB8E245833C953871DF9A869FBE5765C4A
-:1072C00067477E26956526ABE5923EF9EB17C05FD2
-:1072D000FDA0087C06F61A3E4F80BDE6077EFB291E
-:1072E000D86BF83C0AF61ABE3F0CF61A3EBB56396C
-:1072F000E87D47FEB0ED8817675AB81F6591D11138
-:10730000562F5BF694C8FC1A7F83FF6EDA12A52B0A
-:10731000576F8CD5956F6C030CB2F694ABD60ED329
-:107320009535FDB3D23B46F7DE5597A92BFF3F03BA
-:10733000DF260E5FF497FF6F822FFED682BC2BC133
-:107340003F00BFF7654D233EDA21B09A5878C64812
-:107350009CFF199D02F9DDF0D70272BB18FF00BA3D
-:1073600031DAE406ACF742FB5F435BB47DD1FE60EB
-:10737000CC61AA80F7A5F91112CAF3B9AC86E86C02
-:107380001E6BA1E70DAC9D9E65EC003DCB19A7C31C
-:107390006F2A0213F0F9719CEB53A4D36556D7639F
-:1073A0007168B725B946C6223FB2F527BBB4B7739B
-:1073B000420D9BA97AAE6D82BA2FF8CDC1B543BFFD
-:1073C0008351636FBF5DEE99471B1FE63B8D7CE3E6
-:1073D0002B139F675FD6C424E40FCC3940674FF569
-:1073E000365FAB2A272BF2399CD0678BE563A50269
-:1073F000C58B77B55ACCE85F38B6C6A4EAEB77936D
-:107400009D7BF810F7CB1C6B98968CF857DF3A32BF
-:1074100019F1FC98496EA805F81F9B0CFCDB417E16
-:107420001C07CA8723F976EA0F92223A03CE6D91A0
-:10743000BABF23B2C37C07B42F4D1499DB81F1F49A
-:1074400094685CBFB6EFD07557AEB5E8F060F6242F
-:107450007DB994997BF02D05CFDBDC538F7A925860
-:10746000D6CFD587DD5DFBF1D2FDAF05E16B72AE06
-:107470003D0EF51A36914DFC41ECE9DF1B7CB57CE5
-:10748000060DBE1A5E7D9FE31C999B45AF29DE86E3
-:10749000717494C71DDB391C5BA3AEBDEF2A80431A
-:1074A000F1FB22E3702E777F84F8BC83FBF543E782
-:1074B00009205D8F447AE5745DE17D8FECB78575B9
-:1074C00045265C5FB1AD3B09FD4EBBEE1A9984E7E2
-:1074D0007270D6C824E41B7BA68F7C64058CDB55B8
-:1074E000203A2C804FBB0A4EDF87E58E3A51C27995
-:1074F000BBB69F56F94BF7BE89B0BEAFF34D24879C
-:10750000BAB6FF73F84CF10EE03330FF191FE733C2
-:107510004B8C4ED608F32E01B8A01DFFCFE63717CF
-:10752000E233074DCE3CCCDBE8AA171CE87FAB9FCB
-:107530006E21FDE120D08785E353C30AE49393C015
-:10754000FE9510DF9C596853766C1F3600E1C5DC50
-:10755000CAC151137AF07D51DD9202F4AFB3B5A6E2
-:1075600023A877A33304E57331331E0904E1A9EBA3
-:1075700005534F99F0DA78241084D7A1787A1BE26A
-:1075800069540F9E9E616793CDA9BCFEC0C01EBE0C
-:1075900087BF60FE728BE86FC478BF86B7FF39FD86
-:1075A000BD72541280AFDC9D0BF8FB8B7129AF04C8
-:1075B0008420BE72917CAC35EAEF24F7D645FD9D60
-:1075C000E4DEA1E95CEEED9A7EFDEEBF20DEDFC5D4
-:1075D000F1BEA37422E1658709E419C0EB605D6622
-:1075E00034968FAE2D213AD3E827749E2E15FFB521
-:1075F000760B8DDD264718FC74D589BAF34C7B6178
-:10760000413FE7E5BDAF5F1B576BA78DBB3024AE95
-:107610001B3AEE13B9DC0E4DDB52D6E7F86000F6EC
-:10762000F4A33C94C81E7C15510FB89EB9013E5D71
-:10763000F91C3E5D05D7133D1ECAD7E8D2C5301EE2
-:107640007B708EE843FDB52BFF34D1E919A0531AA6
-:10765000A397794FAAF4795CA5CF632A7D6AF5E2F6
-:10766000D607E7DE80E3D689C4A70FCEC91C80F316
-:107670007DB6258DE685F550DED15BAF2DACAC1F18
-:107680004EFCC18EFCEB10C001ED8492D212B2A769
-:107690004B4C8E01E1F484D07D878EB76B9685F2DA
-:1076A000C8603CE277C57795B046E40B0007C4CFCD
-:1076B00043D81EEA8BB7723FF01E6C1F170CA791C0
-:1076C000A4AF1CFAADE040D161DAFE373B9EC35255
-:1076D0009F9E5F2C591FA53BB7C52DB1BA72F1749F
-:1076E000BE8F4375C30684CB6BBAD0F969FD2FF604
-:1076F000FC6F52FBE39A7F203DA5BF6E3C04927E57
-:10770000BED490FAD121F5E374E50BE1E361152FC6
-:1077100034397238425E102EBED45568A90ECED3CD
-:1077200088CEE3764B749E1AB7FF917235224FCF05
-:10773000AF2ED45FE34F9FE738A53C94A3FE12CA57
-:10774000DFBA587E14248713F270BD01C18CFD5B33
-:1077500055395BDDCEF16E5DD4FD947FF395AAA71C
-:10776000035E12BFFF5AE5F75FFF412DFF5E20BCAD
-:10777000DCB3636534EAED27B68F8C463BEC48BB3F
-:10778000271AF9BECCDCD157023E7EE904F909D3B1
-:107790009D6CEF5B7E7EA6F29D13780E2437253A12
-:1077A0008FA3AAFC3C8CF293E4FD287A1E44F909CD
-:1077B000F5739E55F5F4DF0A44FF4B8D2DE1FDD3A3
-:1077C0005BF4FCAA7A6354889CD4CBCDAAB58375AC
-:1077D000E54AEF305DD955A7979B796219F1F5130A
-:1077E0003E0EC792FC4C5DFB13B21C2D117C381C65
-:1077F000BE36C9D18867477CB1D1C1F4A2F1DF831D
-:10780000217038867040FCF496F4892747D5FE5ADB
-:1078100019EC4213CE5B6275BC1E877E84B5820371
-:10782000E35498EF3709CEF1C09C8CC79B83F48C4E
-:10783000F7F344C297C3DE3DE5987775060C30F444
-:10784000F3FEA96E4F32FA572B9E8A22BD2974DEB1
-:10785000AA023D9FF9B2A128FB23E857F2BEE8B384
-:10786000223C0A62887FCD7956F48950EEAACB89F2
-:107870000EDEC709950E35B9B3C45813F61CAB37E5
-:10788000EACFB1A4A09EC6E978506817FAC173D7B1
-:107890006490A4E7F72B31F2FD2F794A24FFEE1212
-:1078A000EFB7FB30AEB804F4405413FED4E42944DF
-:1078B000BC3EEC3419889FB6C716227CDC7344CAE0
-:1078C00083DDDB348CF0FC4853CE409CAF4985D33C
-:1078D00089ED168370053C9D26E6277BD54FE7F999
-:1078E000A5B784E4C609840BEA414689E8E2813CF5
-:1078F000EE973F0CE360BD01E804F5E12E9F98EFA1
-:107900000B431F0FA8F31C3DFB2BC29F377C7BA2B0
-:1079100051AF38DCCEC73F5A2745637CEA1D6FA6BE
-:107920009DD65700E3A2DEBBE37A929327BC1C1FCF
-:10793000719D641F3671F9D1E15D74FF6480C75792
-:107940006B45D23BBF6A2A299C8CE7BDD644E59C97
-:10795000A2528A6F74F8B87C39E43B5A8EE777C23A
-:107960000BA70FE5FA1D13F78D8FC37336113E5425
-:107970003DA53F97D2B57AFA825F74C604CACFA4F8
-:10798000B82CA81353D14EAA4C00F909947BB8A087
-:1079900084F22A8BDD7A7964614526C43BD42FB109
-:1079A0005DE52325597EA43FB740F272E10B3CEF21
-:1079B000DAB4E56A9277152D16DDBCC5757AFBA899
-:1079C00032C41E0AB5977EB4BC30D5948793171D78
-:1079D0009A5C60D25484FB1130AC9B33E0FD0B22E7
-:1079E000E5239FF14610FFAC5878EA1A552FBD16D3
-:1079F000F18039DC6C9266A707D159A5570CD1D319
-:107A0000F5F005FDF938EAC74DB1AA1C759790BF8E
-:107A1000EEF31CE510F1FB8BB5BF2F5ABF2D57F5C8
-:107A2000DB72D26F3B4A2D94AF79109B04F5DF5582
-:107A30007A3DF9750ECDBA9EF4DC43E7FC3A4ED59B
-:107A4000AF730D9DDBA102C067921B0EADDCA71EBC
-:107A5000A1F18B4FD57338AAF2C9C32A9FEC52ED1E
-:107A6000AD46555E78557971A840B5B7E218C90B97
-:107A7000A3516117C3676E6C8B0A910FB12176D445
-:107A8000E090F3D1CB8B6545AEC8A940F79684D181
-:107A9000BAF726699CAE9CB66527F98FCFC83C9F84
-:107AA000E81EC4098C9794F2FC2C666D27FF71A91F
-:107AB00043A6FAC1182784F66852611E89869FDAA8
-:107AC0007B298EBFD7CAFD61D7F5D82EA59DCA9E4A
-:107AD00052C6300F66B8360E80A31EF484C1E8C7C4
-:107AE000867912C040C3F61ABE0F99D34AEDB2ABE5
-:107AF000992440BBF4A929C4CF129842FC65E03216
-:107B0000A660BE0BF33D4FED1EBF1BF601781FF0C4
-:107B10005C47767989359AC7BB413EF68D67F53C5F
-:107B20007E991F4B7ACB102347CD5EF1566D77219E
-:107B3000BC0DD283264F25FA34903FA2356AAC099A
-:107B4000F1B4D8E624BF01E0F582DBD15FF98A9970
-:107B5000FB094AB97FF2E0F4898FA0BD3BF6191BFF
-:107B6000F9920F2E067C26FEDECDED84BA1237CABE
-:107B7000BD3FE7733937E6992FE97E44D776E6C0F3
-:107B8000F29EBAE74FBD8DF43247203BA3A32E8768
-:107B9000F365C69C98BFD9919FB39ACA93C030CE63
-:107BA000407A50561B711D00D766AA5F745FD67865
-:107BB000BA6F42F89BA0E6194978AE893DE5384591
-:107BC0002DB3ED544E28E0F9817F54F58376F53CD2
-:107BD0007FA7DA41DB54BA6953E9E6D72ADDAC095D
-:107BE000F5876EE47433C2E8B82F0ACA23DC7692B4
-:107BF00033FB0B8ED2BA81FE258CE7A64C179BC7B0
-:107C000003DCC65802C4A74B40ECAD86FD4C29A846
-:107C1000A7FCC51217A37845F19C7A5A5F00634B05
-:107C200057A1DE542F886A3DF2C731B17E6A5F6C7E
-:107C30006512F62FC97F7617E6E196BA003450CE6A
-:107C40009D532F107C2A603C68BFABEE011AEF50A9
-:107C5000355FC7413BEFDF51C1243794D358FEEE67
-:107C6000157C9D4E8C871EAA7B7E17C17B0E87F7E5
-:107C700055270D3A7ACCF047EAE87AF496FEBAFA3C
-:107C800091EB07E9CA039CA9BAF6B1F97A7A8F1C7D
-:107C90003E4E57DF915F6240397B668E96DFC3FDB3
-:107CA000629A5D37E5199B01E1317796A8F9710D6C
-:107CB0006C205A5D8CFCBE4DAA9EC85A8631CCDF22
-:107CC00078FC4E03E507AC99E3B162DEC3997623F5
-:107CD0009D178C4B7CE4D04E238D6B4DF10AE8C789
-:107CE000BC17E02C06E97F4D9A7C53FDEAB81E6371
-:107CF000D07AFACB0C33C6CEB56F53F1E901751DBE
-:107D0000C0B7A798705E27C793D802663041FF01BD
-:107D100073B89C0EA5CB76B5FFEFD4FEDB547CEC9C
-:107D2000CA7F7C7524C2651E237D244F5CB63A024F
-:107D3000D751C0881EDBFDBB2383F5C73FF636CE87
-:107D40009CCC3C1AC7CDF9E8E8D9822702CF7563ED
-:107D5000E0F377E1F9F2578DABA361BD4F08AC1D9D
-:107D6000294AE39F9AFE7DD5D74D543F7A1C9868E7
-:107D700050FFF2D7CDBCFD0426A3BFEB8FAADC6970
-:107D800052E9276D4B3AF917CFAC3793DDB3AD709D
-:107D9000C9E63658EFC899773DF102E24BE15D7FC5
-:107DA0007941EED1F34B0A133B317F7FC42A3B4329
-:107DB000FEA0CD9BB6E5CB6C5AB7646488A74F6E26
-:107DC0007DB112C7FBDDB6488302E33FB9D948FC59
-:107DD000E5B27B1FD9BC9E9DEF8F29C9D7DBF9BFC8
-:107DE0005BB3EE89EDF8BEF6F9C78E05E5E974CC14
-:107DF000BA2709FDA6075755B7E5A6F5CE3F4BCCE8
-:107E0000CC85F1BBFC97BF7CEE1D98FF03D765E3E3
-:107E100082ED80CFA7727DE7E0AADAB65CB0534767
-:107E20008BEAFD15A37B35C263F44B0365D4DF8079
-:107E3000148C2E8065FE8C088302FBFBC067DC443B
-:107E40007C60C69A343CCFEC270B769FC4733EA46B
-:107E5000E27B2FFAC841F59CCE954D32C1DDFD8AFB
-:107E600095DB378A9C44F6B1434E2A0ED2E70EDEEC
-:107E7000A5C5971C9F201F2F2E8BA2B8B216771175
-:107E8000F3BF6D403EBF70524D9644EBD7C7F1072C
-:107E900021FC3231CECBE3F56EB791515E106C0D03
-:107EA000E964A5389AF24D3E5CFA0B8AD7BBEB2DFC
-:107EB000525A1CC50D9EC1722DF01DCB788AE3FA73
-:107EC0005068274DE37E84D3F33C8F98E5DEE1EFE5
-:107ED000BDC0F998D4F3097D9F348D9F8B07CF25C2
-:107EE0004D772EBBF19ED479E7126D25FCD2CE459D
-:107EF0008C6EA2736156DB28CCFB88E72885FBD902
-:107F00008772A8F310F7977D50765BFD4A289F3A59
-:107F1000DB8F215D687195F2049E7F4047027CCB28
-:107F2000A4F68F57F56EE463A87797AB7197CE05EB
-:107F30008CE22EDA78676AFB497CBC5B486F2EAF17
-:107F400001FA475912F52AE9170DC3787E44B9ADF5
-:107F50007B01E5AB0A0607C6CDE343F47A37ABA154
-:107F6000F5C6BF2F923FDF10B596FAC70378F0FE33
-:107F70002166E8B260BF1218AD984F42570DE52058
-:107F80003D4BCDD78DAF7D89EB4739D03351379FEE
-:107F9000F003ADDFF3A9887CA0D62223DFC3DC2C5D
-:107FA000E4DB04BF14C4A375D45FBA8949788F8316
-:107FB000294CC67B9A823A5FE8FA613CAE17827E12
-:107FC00086FB15EAF8FC1B67F27B206C279383ED98
-:107FD0001616BC9E61BAB2EA27D3974D09669D9CDE
-:107FE000FAE06C49BF9A3EFC35A1FD0DB2B36FBFFC
-:107FF0006F7590DD95DAD35ECB13D3E03CA8D672D3
-:108000005888EEBDDFB222E5E7D3804E6DCC99FDF6
-:1080100036C0C3F5BE48F2CE10B597E01188E0F047
-:1080200039A7CFCEE3FA2E68E7F5946F0DF20ECFA5
-:108030000FF3B44700BE33B73E4F409B578B2F75AD
-:10804000AAFC38901258E00C038F46A4DF2CE4E71A
-:10805000DF50BCBB1CF55BC0E5C0EA2F74F73F4E98
-:10806000164D69C47587E621687AA976AFB4D3CD79
-:10807000E56CA73B93F8CE19666F21FD3F94DF189E
-:1080800019E57DAC14231DCDE4B7BB9BF2466ADD38
-:1080900016C902CF590EBD3F66F624BD3C28526278
-:1080A00043E485DEDF55EAD4C78986B7DD41FCEBC2
-:1080B0000CEA4DC4EFF87A8C6A5E9909EF978868EC
-:1080C000AFBBE9B957E5CFEFAA7A6604F257781F3C
-:1080D0008589E5808F7616A0723F44F96198D22E8B
-:1080E00053BE632C53A83C80B9A8ACE54126321F8F
-:1080F0003DB5FC962416A0F250D487442429999EBD
-:10810000C3D00E19867A9EE35CBC87F22673522890
-:108110005E50C4944FB05D41E65724F70AAE67EA5B
-:108120003DDC138B14287796B29E7BB9986792C773
-:1081300054E4FC7411DE3FEE9CAE958FF3F214DE36
-:10814000FECD3F7DF138DED305FEA5D67FC6EBCF51
-:10815000954F2E9A82659381CAEF637B280FC8538F
-:10816000DE9A06E7FFC9344678E4C955DE092E0FCA
-:10817000CF55F621DE68E5095395FDC1E59539CA6D
-:108180007BC1E5C773948EE0FE5D79CA215ECFF3B3
-:1081900097DE37294968EFC2EFB7C2048E87F87BB4
-:1081A000C3E4FA04DB294F09042F0BF0ED66E2DB90
-:1081B0004E86740A6463C53C22E033E6DBA19E8DE3
-:1081C0003353BE9F21CA96DC973F3294BE0226B637
-:1081D0001DFD744546D717440F217C4F70FFE9AF52
-:1081E00098C703F4908D7A7E408D8704EAB83F40AB
-:1081F000A313ED7DE87C17C27BA604F979537BC6F7
-:10820000ED6DFDA1787C40D5F70EAAFADEFBAA5FE2
-:10821000FADC7E03C698E3D61EFAEE9D7F1AD9F1EA
-:1082200020FE79FE7E8F2E3071F921A1BCE88C08EA
-:108230007F0FBBB7F5EDCF991A974FF95E43248AAC
-:1082400033308DEF737ED3897F021F1CD34FB35F12
-:108250001D5684431A4B98310AE66DCD67A4BF7A48
-:10826000727717D3F70DCA4082C1BA8EAE38861422
-:10827000C78467B83DD192C468BDF6142902F5A53C
-:1082800006956F5A58CCF4E1B8FE214692B7A1EB9F
-:108290006E88F60918571CE48FE0FE8D38E68B8057
-:1082A0007106E53BF2296FC52D4AF9582E6385A367
-:1082B000A05CD926CAF930CE9EB6125605E3564DBB
-:1082C000023E4719E93C9FA2BF8AC7632C8CF22D5E
-:1082D000D60DB051BCDABB66E4AEC5C837134596BF
-:1082E00006EDD31BC6E5A3DFD363EBDF9F624EEA47
-:1082F0007A3C36C79B780FC32D19F83D1249B162FD
-:108300001EFAA615C67CE4E749CF8E8F1683E07F60
-:10831000D47B2A02F3DB1F930C54FF585DB6F5465D
-:108320001BDE23F42B9467201D516C30EF0668137D
-:108330000FE3DD5F7DA46504EB1D1FA2F3CD3A3C86
-:108340008D729843FCA07ABFA529443F28C957F3F2
-:108350003426B00978CE573C71D6847AEE429B4CD5
-:108360007EF4EC2681F25302BB1CC9784E47EF1B0A
-:10837000497E736F93A8FAAD1DE4B70E24B164BCB7
-:108380005F53D122905E2C7ABFADC77E4347C98927
-:1083900038CED0F1DD89C1FEB2C7EEFA4504F25104
-:1083A0006F9941F573331A4796156B0AECFF53AF7B
-:1083B000C0F3274C9280F798ED0F8A11B8AE2E13B8
-:1083C000F75334033FC5FBB9CD538AFBA443D3F71E
-:1083D000B0CE20BBA5212E3512E7EDC15F85FCEBA9
-:1083E000C75A32293EB2B9299BF24142C7B9771523
-:1083F0006B47FBA46195959EE7D5273B931DD0FF66
-:10840000D3D6298D20A4D8A7BB9626E0FDA0C52DE4
-:10841000161611068F8FB54EA4F916E33D669CB76C
-:10842000A5C88C72645ADB1433C2EDDE55CAB3C1E1
-:10843000F31416BBD6205D46B53C4B7862637E379D
-:10844000C2F3DFAE519251BF3896C6C2E6493E90A4
-:10845000CFED8477AE71D27D924F93C2B75B97CF49
-:10846000F335A3A7CBFCFEB891BDBB04E05C01F4DF
-:10847000540FAF8E36654623DE9AD83262521F946F
-:1084800095B8D19E3B8D7A3BF0F3C6BBE6AEAF828A
-:10849000760D778FD88FECE30A33D79BD99F45A20F
-:1084A0000BD00B2B903EFF638E55F204F15FD41F6F
-:1084B000155D7E1A971BA626D16F067E6EDA79FCB3
-:1084C0006F68EF20DE2A41784CBF09AA5DA0E66BF9
-:1084D000244C206D9C7E0D33E6FAFC0CE32E8BAC15
-:1084E000789EA17AFA797872DE3A82C6473D37974C
-:1084F000291141EB0096E0277FB98BCF7BAE9D5AC7
-:108500006F0406F34390FE1E5AAFED63E47A3DBD5F
-:10851000BE93CFF542806F9FF1BACB7CFA7E9FE588
-:10852000333AB7D1A2B2FB38CAD97522E5558F5973
-:10853000C7E3FF678630F213F5369EC67FF1671CEE
-:10854000A8C211E0DA18574CE7D95B3FB3EF80922D
-:1085500032B6C73EBC2C41BF2EADDD67E7F6751BBA
-:108560008BE4FA603BDA67161FF0BDB1F83CA0A0BF
-:10857000FC1EB56985D4D7BE43F919FE6458EF6275
-:10858000F5C864C035E40F9FAE17543D84250C9F99
-:1085900040571749FE607F2588FF015FE1797B3EE8
-:1085A00081E0D3DC7A74F3BDE487B13B782B7E5E47
-:1085B00063992607791E90764F9061686A604F7CB8
-:1085C0004A83E3C9DFAE7EFA097875E2A9E55FE385
-:1085D000D332A0321AE1794FDC9C6B13A1DD58B382
-:1085E0002F01F9E9129FE53CBCB36AF89282F7F3D8
-:1085F000F4F59684A0F5C37FCD3B9E585F89726ADF
-:1086000087D581A9E1885F6E1D7C02A9F85D9CAECB
-:10861000BBFE95EEE7474AA716507E7B9D85EE751B
-:1086200085C27789CA07987A5F43A3A78896910C79
-:10863000FD8B4754BBE9C85AB053A1DC586796F18B
-:10864000BB065D8E222521CC78E63A33FF6E4EB014
-:108650009D98DAB34F6DFC2E37F74336C2F84218B7
-:108660007FDF85C6DB53A48C990EF8BFB7C879F9B4
-:10867000F42CCC6F5A44FBADDD5ED7F536B4B97738
-:10868000A02B03EB8FAC1D36414047A451A6FB7EC7
-:108690005EEF73244F5AF03B3E60CFB7B41B2350BC
-:1086A000FF707B0D14BF6D698F8B1C8E72CA6608BC
-:1086B0001B675D349DC3AB479E38A383F5A1E65C81
-:1086C000AE0F09CF94DD9F0AF0F21EE2798A9AFE7E
-:1086D00021A97833C622117F96BC3CCFAD471FE25B
-:1086E0007AF519D4AB515FCAAA9282E5534334FF9D
-:1086F0000E4655AEC38DF730736C8CE4C750BCACDE
-:10870000807E0B1BF34D4BC1EF643818E6E7F6078C
-:10871000FD4706CC8E6FE3FA4EA4CDE650108F15C0
-:108720004E5756F81FC2337294C2701E63887E6122
-:108730000ED11FC490F282E97A7D42668E6884B3BE
-:10874000FDBEBEF338347F2EE84D74CFCCCD00FE95
-:1087500088A756379D4F34181244CF8A22C70DEC94
-:10876000D1FBF13E1BF7AF48142F129446F2DB6F9A
-:10877000CCE4FE8D44C6E35E83146ECF8F9DE4A6E9
-:1087800032D80F148762AFB248E4CBCB8A5CB723F0
-:108790007EA4001B40FBAF7F3A1388DC2F512F676C
-:1087A000B5171757FACD6EEEFFF31A221D9BC3E0E3
-:1087B000FDAF0BB81F2E720FEC0DF5DBEBAD74BFE8
-:1087C000254F7CAA89F069BC81FCDA5E7640427E46
-:1087D000F2ABE95CDE1F2A72DE3F9DE2B2CE14846A
-:1087E0007F82112C2A5076CDAA1F37E9F6D448D4BF
-:1087F0008B3F4C7C91E0E106D8A5C17F9B6AE3FAF0
-:108800008F82F78FD6AE26B8CA03B89F4CBB771EAF
-:108810002BF1FBFDCDCE536EBCDFBBA22095AFAFDD
-:10882000C8382315CA43EB0202D2DD3D76651EEA45
-:10883000254DF273741E2919B201FD65838DEC4D2F
-:10884000CB38C69E8EE1F5DAF7A31EB20FDC149C7E
-:108850004F52ADEEFB2121BCBE725501DF67E70E22
-:1088600000643FB48F996A7FDB16933D7EAE0C7037
-:1088700043B8B8B9FDFCC274DB62F770B28B78BD47
-:10888000FB2ADE1EE3A5502FBDFD7E15DAE38FA681
-:10889000849FF74B75DE47DFEA7E04E358FF59CF2C
-:1088A000E358BD9FB39F1980B76CB0B3647605F0F1
-:1088B000B9A5E679E1BE2373CD2CCE473A6DED0420
-:1088C0002F06F23CFA2ABA471FAAAF5A918E4E4B96
-:1088D0009BEB27CA9C8F644DA0ABFD1CF742C6BD25
-:1088E000B0DEEA4840FDD3B3B4BB01F98767D7D205
-:1088F0000FF15E7A799999F4D67263CDBFA31D64A6
-:10890000DCCBF35FF01B13880783801FE17DD36905
-:10891000D5FCFC164ADC5F2B3CF3B13307FDB18973
-:1089200046C24B4D8F1D6351DCE897DDA0E6B7339F
-:1089300071483DDEF7320E16C9EF1B55077A2DEE52
-:108940002F97E7EB2AF03FE4439A9E6B4B37EAF20E
-:108950007ACD2179BDC6903CE0AFA7AB79722A1FD2
-:10896000B2678DEF539F7A15EC605CE74EE043F8F9
-:10897000F4833D8CCFDD60AFE3F335B0D7D10FFE8C
-:10898000C6AA51F47C739583DEBFBD6A123DAF4B1E
-:108990000E98109FC91FCDBF33E717C8AFA7E19945
-:1089A00098966DC3EF76F0FA21331BFFD57D35D451
-:1089B000C7A9EDDDAEC5F49D3AADCCD62ECE4E277F
-:1089C0003F38959B67342F46BFCFE652C53A03F038
-:1089D0006480C15981DF7960775A286E11BA9F0788
-:1089E0006768723CBC1DCFF013067A3FCEC0197D7C
-:1089F000F8711E12F83AAEDAFBFE16A48F7E4546D9
-:108A000027E27172AA3E7EB07206D7F35E579FC905
-:108A10006FBB86F6755F5FA38FDEEA3D3B0005FA0C
-:108A2000F55EEFB5B36BB1DE13139EAE06AA74D537
-:108A3000EBF8366E4FB219406F83B11C6A1F0628DF
-:108A4000BFE4746D8E9FC8ED27D35B7712D25B575E
-:108A50008CAF1EEDC4AE5D4BD7E3774244A4372400
-:108A60000BA4378C7F68F456CBCF6321D21BFC3923
-:108A7000ADEE3D670ED26302A72FE1999DCB291F72
-:108A8000E32E9E47A3D15B8C9A2F1F25B593BD483B
-:108A90001FE6C07E407B1B04BCC773FC634AFE100C
-:108AA0000B1CAE7074F723E9AD6CC64FA3B77FBB48
-:108AB0002640F9139D294A02EA335EF5FB813F9671
-:108AC0000ECFCC3073B970B92F11C7D9A08E336DCA
-:108AD000C861F2FF15581D22CAB37C99C3356F7C5B
-:108AE000267D6FC8A7F6DBED5456CC80E780B9270A
-:108AF000C9CF3BC0C0E9F7C1B7CD8B11EF931A0EB8
-:108B0000164D437CB943247D3B745F1F14AA713317
-:108B100081CF0B9A5762701CF11E952EE53B3A38B7
-:108B20009F8F61521AAC27C12D15E7635CE86A0379
-:108B30007D4FA45FD1C11894CFDA78707009986F17
-:108B400082AAAF75DCF9F408BF76D3401D3DB7E0CB
-:108B50003E7AA3E70BF10FFB0C41E31394EFEB52CA
-:108B6000EF49FE58BF6DAF7EC4CBC3FB25AB66712A
-:108B7000BEE131F1FC0F682DE177019A8A5C4FE28A
-:108B80007ECED3FF764A7E17EE637934F995138C47
-:108B90005CDFC36F24F2EFE5B809CE5AFC4DD31762
-:108BA0006585E7172517BBFE80E36E62F22E94679A
-:108BB00036079B47F13590678817CB8A9417675023
-:108BC000FCE5D2F4C02F8B9457895FF7824F03AE38
-:108BD0005776F7856F538AFE63CF0F48FF65DC5FDA
-:108BE000BAB0AC8672B306819D84EB9DAAE6677825
-:108BF00086F07ACDBFEA1DA0C54F9542CC9F8C561A
-:108C0000E135C6E26415D0BF0BE530DEDFDB1BF0DB
-:108C1000E3BD600BDE2393D08FCAA87F4CADE093F9
-:108C2000B1BFF8E5EB182F32E5D0E744189BC4ED4F
-:108C300001EDFE8D94FBE3FC8D87353E318E8D4733
-:108C4000F8241BE40726C3FBCC87F33AF078B21E66
-:108C5000591C8BE272E2A68612FCDED6D2AD9F6E64
-:108C6000427FE8E47FB7303C0FD01FFDC6B0F95C0F
-:108C7000FF303942743570563CD71353C2E3E9E3F1
-:108C8000B354FD13F1344E87A76C66783C25FDE79D
-:108C900027E069E44C3D9E1684E06914CD7BE978B9
-:108CA0001A3B13F0F4559083B8AF17E72A0366F622
-:108CB0008197DF952A897DD507C507C8EE1BC12698
-:108CC0005983BF7BA83D5B515EF6919FD07FCD114C
-:108CD000CA8FF3D49EA63CE52EDB917D6807FD4745
-:108CE000AD450EF66781FEAED3D75B40AEB8C19EF0
-:108CF000DC304B247EB2E70E8BFF3AD46BEBF87D71
-:108D000084F2BA4D02E67B0FAAAE115CC0DFE21519
-:108D1000301DA17F8C62E8F19FC07F57980E903E76
-:108D2000BB0EE4B19BD817BF97A6C9FF31969AB77F
-:108D3000D04EF5FCCDE8588DE7CCA45DC88FA603D6
-:108D40003D617CF39A6E906F41E3BDB56312F9D536
-:108D5000AEFB1EE45F901F670A8C185CCEB126EA5A
-:108D6000FAE54929BAFA690997E9EA35BAEF8C5167
-:108D7000E32A595B72117FC40A9EA7305DCED0B53D
-:108D80005F57964DDF03B86232BF7F3773D464DD1F
-:108D9000F8A17AC1D5F03FA47731440F08D513422A
-:108DA000F5828533F5F740D71803D9C49F18CFABA8
-:108DB0001B7AF6DF880ED6C91CCFBD65A7281FC356
-:108DC00003F63FFA9B0607E597225D8C3507C83FFF
-:108DD000B761BE95CE63C38E27E8BB119AFF0BE83F
-:108DE00086E8686CB64479AEE9F65F537FB694CBFB
-:108DF000D950BA14EA5E22FD6FE36CD81B7E6F6D0A
-:108E0000760A977B3B03E48760779A19CA4DAF6473
-:108E1000A0BCB1DF08FE086118D2AF42F28925304C
-:108E2000C94BF992EFF1EF2932E6589388A6BF4279
-:108E3000798D80F6DD6FA979B488B711F9CCB17A54
-:108E4000327EEF97D377FFF1FC7C6C0E5E96AEE638
-:108E500065CDDE8E49602D98173B18C783B671B576
-:108E60004CF2905FC34FF543F2D9010FCDCFFBC752
-:108E70005731671394C51A45F537BBD4F87A37C50F
-:108E8000BD53054724FA3786894E8A7B473389E2EA
-:108E9000E283580D3DA3043F671E97C847AE00000C
-:108EA000A0BC603799E9FB19D94FDA187DDF68A9B2
-:108EB0007933E5650564F223DE7388DFC3DB60FF89
-:108EC00005C5099AF6F1FB04F724B93FC478E6A07A
-:108ED0003A81BE132E56F33882F8A6E89806F5625A
-:108EE0005D2B7D072EBEDA407EAD2BCC35BBE81C5A
-:108EF000EEB6D0F7E3BAA03FFAB9D6D90D8CE81593
-:108F000098C7397F2AFCBAAE7152DCA2EB6FFD48DC
-:108F1000DEB1103FA7C7C5F56F4F9C99E397EDD41D
-:108F200027C8B71BE322E97EDCBC6B6BF6211FD997
-:108F3000F09EE858ADFA9FD1FF3F14FFC0FC03B389
-:108F40003305F54E7375783FA59939F767A1BFF4DE
-:108F5000AE25097DE951BDC6456C06BF39FAE2E38D
-:108F6000220DE53C0EA2AD53DB67A36DB95029E39A
-:108F70005F3F312E52D64B5C24502320BF1F8AF511
-:108F800063113EDC6F7DA971919AC24B8B8B68FB9C
-:108F90009EA5FE5D0088ADE677505C80CECDD0B357
-:108FA000BE20386EC1F595E35F327F8F7186D96A36
-:108FB00079DF5307BF44BFFEDEDFEE7E0A9FD79DF9
-:108FC0007DAC6C39E045D1243BF97BF7FF32E641BB
-:108FD0003E9C3E7E30CB61D1F9EFF187F849EB1032
-:108FE000F8BDFCE0FAA29075651BF5F1805C9BBEB4
-:108FF000FDD4387D7DFE107DD9CC6A084F43F7BB88
-:109000003AEA6ECA936BBC8D39788678D079881726
-:109010002E9B8798C3EE4BC337E64821BA5FF73ED5
-:10902000A77BE72B2BDE5A4976AC81EECF9F9ED7EC
-:1090300070CF3B32E28799B9699C7C05F1E8BBDFD0
-:10904000A7BF4B311DC9E5BE11DA57E6F0EF459DCC
-:10905000174F50FDF9436B77B5E706C57BEF1DE869
-:10906000721400DE0CB59D12500F195AFB1AD5CFA1
-:109070009D9FD5271EA5D5EE69CF0DFAAE5F9AD17B
-:1090800069403F465AED1BF4BE37BDC720BB79FE91
-:109090005E9959267B4BCD534B53F126AD8CFB5B30
-:1090A000A5542E6F3698B87C7343B57815FC5F5B7A
-:1090B00068BE1BE7EB6726F17B1D0CB810F22B6D29
-:1090C000BC5079A6C9019BC2F5C8B4B287B85CD1BF
-:1090D000F205DB42F3E25C73113E427523B5DB9887
-:1090E000A3B6DBC9F5533683492897619F61F344E2
-:1090F00017A87EDADEF2D398663FCE79F343CCCF61
-:10910000FBD1F6632FE35E971C087BDFF636D56E46
-:10911000ED8C082439B81F38ACFE3EA374EAAD05C7
-:109120007DE8AF98578B30EDD55EB8C4BCDA8D6A58
-:10913000BC488B976AF9B5CCE81B87DFF91C65FB47
-:10914000F30D1407ED25AFF61EBB2380F7DCBD152C
-:10915000118ECDECD2FDEB5BA7737E5A5DC0E81992
-:109160001A5F085DF78602DEFE5091F3E1823EE26F
-:109170000A5AFB0F13C3FBE3BE2DE4FB3F775F29C5
-:109180009FEB7D8A4961E1F240B57CF7D0F7600F33
-:109190003D89EBD0CAAEFA34F2DB794C1C6FDD327C
-:1091A000FF9EA0A63FDA507F243DAA85EAA3ABB973
-:1091B0003EA9E959921AD708A527A08F3FE23C8221
-:1091C0008DD3ADA6279EA38FB9401F409743188F1C
-:1091D0002B19D4BCD121569E827EA97AD4F9F6D31C
-:1091E000F7F64BB29FEAB74690FD54BDF92DD4ABCC
-:1091F000D6D5723F61A7BDE62DFCFE81FB3D91F403
-:10920000A6DEFA6B76D447857A3B0AE38A888FF12B
-:10921000369F205F8E7654C0E482F595A31D65C30A
-:10922000BC555700E1166A4F75DDFD05E5BB82BDF3
-:1092300079B820EB1FC01F42FC4B8DD3393EEF1A8B
-:109240007E8AFC26622DB7F7C45A1E0F3596F1B8F8
-:109250008551E17E1433C82374056A7E940D0EBDDA
-:109260001FA52B89FB51E2736BFCA8079A26592492
-:1092700085E423F7AB6879ED632CBEB7F03E862713
-:10928000C3C8300F1D1455B2032D6A7C03FF410B78
-:1092900094579ADF24346FDA16E22709F5A358674A
-:1092A000E9FD268F0AF2BD93619EE7D7E7BD83688B
-:1092B000FB878D8BA3D06FF292AF61A6EA37791846
-:1092C000D7B3E343EE37E9DAC1ED22172A305785E9
-:1092D000C3BFF3E254E407B966DFE12AF483687E92
-:1092E000A8F86A151E6ADC07E18BF014F3393C63B9
-:1092F00042E0E91DA2C58554780EE0F02D2F709252
-:10930000DF4942784A3DF0D4FC54DEBDEDF47D6D7A
-:10931000CB1D16D94DF0FC92EC5513C213E1FF138F
-:10932000FD50E342E039EEE1CC07F03BC1E31F29F9
-:10933000E9C0E7844DB7C5DE00CF495B1F28C127D0
-:109340007B93C709FE7316E75798D91D4C8F636747
-:10935000C8BA3883064F0D0F7BFC778CFCB1E51241
-:10936000F7E797AB789886700BF6E739F470DBA0D7
-:10937000E64B1A736BDC68EF0E0D819B86871E84AB
-:109380001BF2BB18B3EC26FF5D9D80F6506F78385A
-:10939000B4EDC7E1E1FC59AA3DAFC2EDB9F599F7CB
-:1093A00022BC5ED858F20E3E5FF4DD1685F0DABEC0
-:1093B000E58199BDC02D3198CFEF991E1E6E5B8B54
-:1093C0005DD5B3E0FD750E9F91F82CE01BDABD9BD7
-:1093D0009BC659F5F1198D3FE65BC3C98F0BFB970F
-:1093E00096535EA1A76C39F1C7AE73FCB1DB8E79E1
-:1093F0008817CB1F2D85FCBE7D79ED77AF5F077099
-:10940000CDA93D4CF46704FAA373AB3B6C50F33128
-:109410005804C88BF832E6C7F8F12066F545099480
-:109420009F407CD38B79CEF881D2503F85F4C65FC4
-:1094300005220E261812808F63EED4152407EF9FA5
-:109440001586CFAE2B3390FF67B3EA1F944B9D2D4B
-:10945000D84E8B6F2D2B525A67FD347FE1C3D85FF6
-:10946000F31776C6B073FE35FC3E784EED2601F359
-:109470005006D5DD4AF221BE4C61281FB266CAFCF7
-:109480007BB3B912EDF77C7F5B770EDA099D78A389
-:109490003D83F0E077384F67EDE38407572CE5FE16
-:1094A00091CEDAD3B1E1F1A036E2D2FC8C9B757299
-:1094B000D25BCBBF63D26957DE4CFB11783042C51B
-:1094C000034D4EA2BC417C3296051E463FF620C09D
-:1094D00087881494979C1F8BA0FF44C17EC45EFCB8
-:1094E0008F1A3D74C1DA2CFDF09E70683E400DADC0
-:1094F000FB7459B67F621FEBBBE83C00352EE95187
-:10950000E3920B6B79FE6AE71DDFE5E17A4F978105
-:109510007D0070D95CE660787ED340B10AD882E7DE
-:10952000392F6F358074ACC521B578FED662E7114E
-:109530003CD7EB00A712FA635EAF1AEF19A27E07C1
-:109540003A04FF01CF3FC77130DE837240F3A3338B
-:10955000D41BED88DFCA17583FD65C9328117EBB19
-:10956000BA71FC753BEEA4FC851EFF20CF87FBC9BA
-:10957000FEAD6833E5576AFE2DAF9DFBB72A5880D4
-:10958000FE9D3C8A2320DF6EB5D0F71AAA04D98C41
-:10959000EFF717BB8C85A4F738291FD635C72A915A
-:1095A0001F6CE9B644E417E58D22C9EBDEEC92F3BB
-:1095B000E9EC47F21995EE2E81CF0C2EBC383E9384
-:1095C00054A8E733C9853F217EB67E969EBFA0DEB4
-:1095D000590FF3E4A8F4746EDF6A1C1FE3571119E6
-:1095E00041FAA8BADF503A3A4F2FFDBF8FAE66223C
-:1095F0009CC3D0D5ACC21F4757A58503FAA4ABB90D
-:10960000857ABAFA1996FF17D2D5CF691F17A02B02
-:109610006321D3E749C7F2EF3C8F8935F03CCBFF9C
-:10962000C379D25FCDE4FE8BD03C69C66AA85C00EA
-:109630006743E7A3960BC73319E34C964DAFAD1DB7
-:109640002DF3F182FD9D2CC4CFC942FC9AA1FA5D95
-:10965000183FA8CEEFB9F789BFEC1D0D7F3EF9F496
-:109660007F915EBB6FAA40F7C90B477EB71375D0D9
-:10967000A23595EA3C7DFB3DFFD97E4EFC05FB55AE
-:1096800043F7D51875B77A6FE0C7F93999E356FAF9
-:10969000BEF9BA1AE640B85FC8EFB9AE8EE74D6BB7
-:1096A00079CDCE57AA1E2C1DCFF3E9D0EF19EAEFE2
-:1096B000D4F2953DB64AD2F38F2856EE8F0DF1774E
-:1096C00056C6CAB7D03DC6F3FD9DEF16FE03FC9DFE
-:1096D000930A64FE5DC610BF677CBEF261611F7EA7
-:1096E000B3CE1807437E9763F30918AF656733C994
-:1096F000AF33C816A0EF6B95D74E213DF06491EBC8
-:10970000535CA731B7FBAB97C653BE8103870AE50D
-:10971000CBA0671E2FFC27FA09FE597E3E5F01F79A
-:10972000735DECFD791FC23BAB8F7BF472E0912837
-:1097300078FF68BD9DBEAFB552D5A33B4DDD492D29
-:1097400050BFFFAE13BBD13FE16B3330BCDF76B10E
-:10975000FEA3860BE8C5E610FB68C339BDD8F7D673
-:10976000C420BDB86155FE8E6361C6D1F4E29B662C
-:10977000EBF5E2721BD78BCB6DDD26B40FCAE3BECF
-:109780007F1DF34E8DD5AC1DE5E220A586F4E17872
-:1097900089513EF1FF8FCBB37F685CBE78B63E2E19
-:1097A0003F56CD47411E8FDFFFE9D2FCA893B8DEBC
-:1097B000B0C6C8ED15AF02EFC2C4D143E3F243CF48
-:1097C0003E4371F975DBAD748F6FC38E663EDE1458
-:1097D00026619E792253F5B502EE2F0DD53F1E3539
-:1097E00029D694F188EF06BA4F88F704C92FB2DD65
-:1097F000BA09FD4DE9769ECF6DDEFFF256B73148CE
-:109800003F043D94F4E2B2007D97A95C7230E23BE4
-:109810007193FC141FAF1308BF46CCE6F4B330D7E6
-:1098200047FAE1A03249E0F7C4DCDC8E4FE671E78D
-:1098300048C42F682A8EE2715FE980E8C0B8F37DE2
-:10984000D87432DE5F65FC7B15930DF4EF50AC13DA
-:10985000BA13902FB70A4A223E4167A27B8F4FC7A7
-:109860002803F1DF93F22419E8DF93DA93D7988085
-:10987000EB6BAA6F4D40BD70CD6C1E4769CD3B4E62
-:10988000F90FA674D00753E819F6DF1D9DEB14D429
-:10989000BCC0F604FA1E026BF990F06A9499F17F4D
-:1098A000E7C7E15F84F474CC46FAC2AF041FBF2758
-:1098B00064B7D27DBC96CBCC8955B09E66BB99B4BB
-:1098C00009EF65530FA4C0FBE6015234C601BC2961
-:1098D000A912FA8FBC318D6FA21FA439259561BEE4
-:1098E0007F53D9048A9F379D0506033D3DA347EC6E
-:1098F000CF82F76B84007D37C83DD9C0309FB0ED73
-:10990000B2A989C1F7324529544E3A482E88B2810E
-:10991000EEF9896A3C5B3C2F9EAD8F4F7F3F9BEFFA
-:109920005B662DF3E81E689C59C2FD965F56FC21CC
-:10993000DD738B33535E50B989F1EF7E5CC6E85C12
-:1099400042E1E759A58F2B186DFAF5ADC1C034E59A
-:10995000619F5D82F8D18030A53CEEAF96205F6AB2
-:1099600038577F92D747F0F2CED94797A01C941969
-:10997000FFF7491A46F1BCCBF201C5C487CB4D8134
-:10998000B0DFF9BDD07A64E653D4F1D8FFE4786B48
-:109990002E33CFF3A55F78BC9E7301F5F912C6D5BF
-:1099A000DA858E1BDAEF7FAA7D6FFBFC68F6B9FBC8
-:1099B000719407412AA27A9F0DF564A3CA0F3DD97D
-:1099C000137C7E19F9819BD3458C419767FBDFA6F9
-:1099D000F2D6B800800000001F8B080000000000D5
-:1099E000000BCD3B0D545CD599DF9BF7E6CD10669F
-:1099F000E00D0CC910093E082831045F1288A04907
-:109A000079046240A94EF809B825E944A346DBB3BE
-:109A10009DBAD6923DD932094320989009A9256E66
-:109A20006D8BA9D9B5B547A9DBEDAA47BB9398F5CE
-:109A3000F81FDA5AAB7B3C16539BDDF6B83DF42792
-:109A4000969ED336FB7DDF7D0F6626432069F69C0C
-:109A50009D1C72E7BE77EF77EFFDFE7FEE9C3B87A4
-:109A60009F5A8073562B6B2A9865C09F73607DD672
-:109A7000E0736AF93FD0FD0B0114FAE6C047DD4DF3
-:109A8000F1A24AF1BC25404370BE1B4003889F935E
-:109A9000F0A9050F5FBD74AE182014C4877902AC1D
-:109AA000B67006EE4FBB56C7EFF4039C4538B9C6F7
-:109AB0000C1CDE47113040B0C763FF5A35FCEE9DE9
-:109AC000B4EE35601CD367C62BD6BA571F51216E32
-:109AD000CFC7BFCF5AEBFEB4AB353BE499396F6AC1
-:109AE000BB6C3479DE8774065C27E283D163F83D72
-:109AF000FA6E4CE24D3C837FB8DFE84A6D74109FEC
-:109B00003F688FF3E2B822315FC7FD66C0CC47598A
-:109B1000C878B05E428903E7EFBBBAE2519AFFF022
-:109B2000E3C3DFFA363E3EF29D3DBFA4764149C510
-:109B30005035C2CB341C86403B044A900E4EFA8608
-:109B400078F47CEAC814A21FFBC978DA5B7E678CC4
-:109B5000C99748471C7FC77EC9D4703D97C77354C7
-:109B6000A6FDB92593F62B1F5EC4FB0F6C4FA6FB19
-:109B70008864BE1DC0F19103121CC37E8691B00E95
-:109B8000FEA905C9E39B09BF55D44B18871B3F2885
-:109B900041E7581A7C3F1874303D886E9184FD1F50
-:109BA00072EAB7105E0FED932182200FED74012C45
-:109BB00006F846F0DFEFDE5D02F0853E27E37D64C8
-:109BC0009D3A2AE1FB11AFB6B993FA4B1CC6511D61
-:109BD0000463E2B90EAEB88ACF65AF3778ABCEEB8F
-:109BE000C5D6A9F9E0A1719381A097F9E88D2AE281
-:109BF000A3B765E6A3D4FDA7F2DD5C7C5618CCB113
-:109C0000F0300AC115C89EB279E20CEE0FAE763084
-:109C1000FF2CBFDAC1FB3B5B8003A4D9F9B0AF07CF
-:109C200017B87A866F548BEE7BFD2DA708FC6CF37A
-:109C3000D4D171B3A882D685F05839F27320797FD8
-:109C4000F6B8926979F83B5850C9723726E3595DE6
-:109C5000A371132AA81D37256CCB1EBD5FBB90BC1A
-:109C6000B820017E11C1053E7FAAFC3A21C448DC20
-:109C70009359781B9DBF6FA30AB29406DF73F40F4C
-:109C8000EDBCDB24FA473E0F4629EA096720992FED
-:109C9000832F9430FFC80332B8A444FE6A34895E2F
-:109CA0005FBAD539AD7FDCB61E23BA1B45E0C07D57
-:109CB0001D7E4B66BE391CDCFB0B99E4BB51D525E0
-:109CC000DC7F46ECEE87DAF1FDA1D765631087777C
-:109CD0003FB3EB67AF627BBABA788D544C44322302
-:109CE000DB71FCE9F56E63D010F2378D97626E4C34
-:109CF000F79A99F50E5517F37A515C4FBA001F2861
-:109D00008DEA0744875478D3FABAFBF858C3EA04BB
-:109D1000B95A187A2188E71BF2E0263CF4FE24BFEA
-:109D2000874AE4CBFCD9D7418C325E7E465F71DC3A
-:109D30005F5ACD9304A7A9B42A9249E7826C207C8C
-:109D40007CE8356EF4E190F79D86DB289F99DF1B58
-:109D50007342BC9CF080EB62DB0C135B5A88EF4BC8
-:109D60009CAC3F64FF4A7EBEDD1B541CB8AFFF0CA9
-:109D700016F37AF6FC26F8B2721FBEBFD639DA4067
-:109D8000FC11DD0E5A04A76CF3C614EA6FA00DE2B5
-:109D9000C21BF53A7711C26D7C9E1602A8F50DFB29
-:109DA000C90E553C77A42044EB47CC1F95219E7DDE
-:109DB0000255B0DC351EACC7F9BD6FC8C61E7EA209
-:109DC0001D0FE17C252003D1497A6A6D6002F7A35B
-:109DD00078CEBC075900EB26011A12F8A976CA0DF5
-:109DE0000D097AAE0E2127F6EBDDF949E337684518
-:109DF00049EF65308D38D277636059D2386F55A5F9
-:109E000046FB6DD257263DBFB9AC26693E3428A724
-:109E100027B0BF16FF11DD65107D5BAE3CE5D84F66
-:109E200098AF40421FDFFF25E8F59FC9C4CE75708B
-:109E30001DC94F33189D241F68BC8D63889785CF3B
-:109E4000B92732C9909826DB75C9E2CFAA4D454C97
-:109E50001FC973C641F87F0461C8C81715DA848327
-:109E6000E804DA98C4CF516F0C22B2038AC9E3D058
-:109E7000C069511C77056A6F0DFBDE00C4A8BF04E2
-:109E8000623C1E3FB1C335C8166E313FAB058C83B3
-:109E9000F83EB33C2249D8CF69044346781E635C40
-:109EA000A27D6A385F5E492C19E77E41238CF73228
-:109EB0007C730FCDCFEF06AD2F9FF997DF8F7641E3
-:109EC00084F6F32818E092091FA890969216097359
-:109ED0007B25E839A487BE09C62AEA97C204EB2588
-:109EE00034EF12F517C19826947D9CF5374C28BEA7
-:109EF000336EA1FFD3C9CD8CFC2870C6A60B0EBE55
-:109F0000FF56B37C13EAC1CDB7555DD0DF50BA5FC1
-:109F10004C92DFBB37E98C77A57B23CB8BD2FD122C
-:109F2000BF1FD814BC6E133E2755E05E75F1F8AF25
-:109F300050053EA31218E8CB40F4D99B02DBC85F62
-:109F400079D66D94B2C8233E892FAADD93AFD48809
-:109F5000F9440F3FD283F09D530E12E16009D10105
-:109F60009FAB48877D4CC718C32D0C83B1DB5A9734
-:109F7000FAF94807A2CB28680B08AF72F8E2E8C0EC
-:109F80001F84B3E81937FB470AD165E965A1CBA760
-:109F9000098F174B97547AC0AE5C809AB9F5E95790
-:109FA000A57886B494C882F4C1F348481FC26700FC
-:109FB000043DD0AE1B84A774F8A77E4625E87BB885
-:109FC0002FC6133D233533FC9F8DFC2FFA42BE7CF8
-:109FD0004807D11774F293BC603F101CE3F939DBDA
-:109FE0002178209FE86132F26CBBEC8249F66B8BE2
-:109FF0002583E9B55446070DFB9952DC727E46D99C
-:10A00000AE6781C6F4590C616EFDCEC9E3E7485FC7
-:10A010007B1CA391226A9FAEA3757A9B51C390CA01
-:10A02000F70ED7315FDE035A29F25DA16AB2FE2E28
-:10A03000BC4631227A22BEF608BF49378F90BD292F
-:10A04000747861B07266DDA8D308C4905EA7BC675F
-:10A050004E84F0F9827CB4EFC60C9E4F3BC5F908E4
-:10A06000A67C05C983908F4035EEC577BE7E0B2850
-:10A07000826F3D3B107F888FADF402F1240DFC1BF5
-:10A080003F7FA45EE8BBCF6E0A3D4EFC42FA89F1E9
-:10A09000678246FA493380F5A6438FB09F7076C039
-:10A0A000A5139F426CC424BF629BB5CEB601D707EF
-:10A0B0005256C239A3AE243BEED083D9CCCF86040E
-:10A0C000E41FCC77DEA5F23F74E7CDCB0FA87B6A07
-:10A0D0006DF644F9ECE354928FDCC479824EAA3FCA
-:10A0E000C47E874A72923B371C678AFF62C371063F
-:10A0F000820CC769FB2F64B7909E77A1DD1A447C60
-:10A100007FDA448788F972F23FC89EDF1ECE62BFB5
-:10A110008B5184E3EE8849A383C88F774258253E4C
-:10A1200095A02442F4DB1A91D87F2BDEB73D8BFD3E
-:10A130000568D0083F52FC06F9DCF28BC0A385A766
-:10A14000ADF15F3A752FE1D50B3F4F88B7ECF7BF04
-:10A15000EB5A7AAA4A27A5ED2923FA665AF445B59F
-:10A160001D790DF7E9FC53360C6AE4177FE98D5A27
-:10A17000DC5FDF8F6583E2B34C10F1D50210763CD3
-:10A1800093E47429F1CB58FC33C46FDDD91A9DD701
-:10A190001E07D6B80884D83FCE443D40701D99FBB9
-:10A1A000993F33B354DDF6B721F11C6E89FD608F02
-:10A1B000A572F3D4789CE42B0FFDD8DDC9F02511EE
-:10A1C000CF03C7437C0EE9FCF55758FE3ABEAA3BC5
-:10A1D000370FFF3ED57F87C47890C663DC194FC028
-:10A1E000EBB4BC587266EFDBE35193E525659E4DF9
-:10A1F0008F72A7E08FC5187FEDC6FD0E0C1CAD2336
-:10A200007D3392073A469AD0BFF59F248AB3D693FE
-:10A210002E26FBD300A3144778401F2CC3BEB3C027
-:10A22000C3FCB3E8BF83F1CF209CBBAB5D9A8E38F3
-:10A2300059FC91A9D5E1FBBB0ADC8689F48D5AE370
-:10A24000230DE86789E5DF26BFF44E6BBF4C0B9406
-:10A2500043B3A588F95DF1B5ED7D8DE2DEC532C869
-:10A26000A4D7E42E83ECD39D1830E4A2EB0E5F76E6
-:10A27000B2DF87FE1D9FC7D590ECF7DDF58833A9C7
-:10A28000EF4CF1136B5B92FDC0A616E075693FB908
-:10A29000ABFE7AF8E0F1B3FE5CA18C3BB43476D52A
-:10A2A000C6BFF49487F1FF421EE295F32441F37395
-:10A2B000D877211E895F11235955882793BEEAE478
-:10A2C000277FEF3E1AEF3A8BFC4BE3654FC3E788DD
-:10A2D0000E57587802B12F13FFD1BE53FD61578A34
-:10A2E0003F9CBA6F9B0E77D8F859036B083FE89FE5
-:10A2F000B37F609F2BF53CCF637CDE80BCF4831E74
-:10A3000037B7F11E8DDB133D016E4FF6E8D0808E1E
-:10A31000D54B3D65DCBEDC63F0F3577BAAB9B5F1E4
-:10A32000319BBEF1E639D85F38B4CBC17902A55C68
-:10A330007BE56AE2DBB764561F1AE819CA52B643D6
-:10A34000A0E0B82B1B955193CE62C53F8B2C3E5B92
-:10A35000EE9A3CEEC279B17C30F6D044B4DBDB2B14
-:10A3600067E29F75938E1939018A771624E50BEA07
-:10A370002037A95FEFBE2269FC066D69D27B9BBEC8
-:10A38000DFA81372B331B03C69FCA186F5F1BBC9FB
-:10A39000AFAF7169946F68D25727BDBFB9EC8624FF
-:10A3A0007820371BA4A773BA12E8C6E74FA6ABBA4A
-:10A3B000E3C271904DE7D11439988DBEA97C6BE34F
-:10A3C00035671AAF22AE8C525CA9D3B9CBA56D0804
-:10A3D0006A68DA2F3181F24BF6BA4A35C69715977B
-:10A3E0003FBECCA2F8B2285D7CF921E76DE68C2F48
-:10A3F0001B93E3CBAC14BCCD155FBE7A89F8DC5A55
-:10A4000028F26E39AFCBEC07CA8D61B67FB9E3B2E3
-:10A41000B191424FCB1FF392CCE3B8AD552AFB97D5
-:10A420008760220022AF984FF630B7DCC8277DF353
-:10A43000A4CF5C781BC5F94D0EE3284E79B1EE2B05
-:10A4400001F23BF6ED7E34804609FEA7C5C1FA2E27
-:10A450005677660BC995A2A31F27716B8EA6F14F85
-:10A46000ECF176BEF1E016916F3C68E51B0F5AEBFC
-:10A470002042D8DE8E54897CE3AF5B742BFF17E15A
-:10A48000FCE2E12D6BAC7C23F657D07083EDF8A095
-:10A49000D730EF20FEF9850722F8E880A4654964EB
-:10A4A0002FB63834CA1F8F34AE7A97F249FB3CAAD4
-:10A4B00041021FF5ADC927FE92B7A2DB83FDE1C6BD
-:10A4C000E19769BE52EAE07E74CB559C171CC9D354
-:10A4D0009A8A29CEDB504C9806F9993FF5505E23B5
-:10A4E000EA3B13A0F9BDD78BF9B3D12735FF2F93E2
-:10A4F00026A6F8ADC41157118EFCFC993F13BCF38E
-:10A50000F2F3297EC5A04FE5BC6DFE8FF77E2B527E
-:10A5100042AADCE47CF308CA3CE169EB96966C8ABB
-:10A52000A7B63A27F2D2D90B3BFF39ED6FFA93FD6C
-:10A530008454F8FCB1F36B0ED1D5EDBC2D7EA2B7DF
-:10A54000DC381A27BC41ACB198E25E8FB0CBB3E1E6
-:10A5500041F15CB80E22776798190978B0EB1DD7E6
-:10A56000B68A3CB8D1AADB79C6A47A89D2E8E07968
-:10A57000B67EB0F3E3A975127B1F35AD224F7BFD8C
-:10A580000CBCA4BA89BC56B5E0191C17A7E6B3E702
-:10A59000AAA3CC95CF6EB6CE73B175937B5B81E7E2
-:10A5A000FD7FCD7FDFDBFA7F93FF3EBF5E34CAF2D3
-:10A5B00003CF4CFE9CE43BBA6CA13E28EA4349F52C
-:10A5C0009CD43ACE60868033BC52F8A9C3563FB2C1
-:10A5D00042C04DADEF6458799548EB521187812107
-:10A5E00088AC9885C4171EE5BB110DF96181E71091
-:10A5F000F8B075F9B745A8AD2DD487AA715FC3CB64
-:10A600001C6CC786BDA147FB480F2DF3A4958F8313
-:10A61000AD422F0E10DF72FC04A683E44EB2850417
-:10A62000420EA4D708733EC0D1569FC86769B1EAED
-:10A63000DB118F5F25BEC8E3F3F0FC54F85F3B1FCE
-:10A64000FE63C4AF510B38C1D98670BED93A5D479D
-:10A650008CD07BB7B59E5B8F5593BFF058AB26F47B
-:10A66000B0B2D2A0F30FFBD2AFF798B59EE9084B7A
-:10A67000346E5197980F6E31EFA034D9795AD09338
-:10A68000E589D6A7F79946B27E48859B5176E17A4F
-:10A69000D9D3D3FB4F8E870E48E9F7F9634B0E6B86
-:10A6A0000B81ED11F1C59E347C912AEF2AE53F1113
-:10A6B000EE098B0EB6DEF128E3EB332BC9BE83D156
-:10A6C000CB883DCEE7DD93790BC7C97D378B3C87BF
-:10A6D000AA08BD5DD089606AA8BED210E1BAE1FDCA
-:10A6E000A0B97CE7E3E162E33DB2379184F93FB181
-:10A6F000F823B52E18A3BA20F9B15417A4FE4E576B
-:10A70000673ABBFD6E8BD3B2BFE9EB3B47A8BE8374
-:10A71000F38F545BF59DA0A8EFD43DF508ECC4F78A
-:10A72000BF331DECB74ED7771A8AD7480E9623A0B1
-:10A73000FAF47CEB3BB18679D67782175DDFF9635B
-:10A740002BE2E79047D459A6EB3B6DFE79E5757493
-:10A7500088C5BB49AF7401E3C1DB340C3B299F10B2
-:10A760001071C6892A97E0AF9D92159F4103D87A50
-:10A770000A3FCD5DFAC3B9645FDE714129BE5FFF58
-:10A78000C4EB0AF587F31D6B287EBE569D78F05A00
-:10A790007ABFC6C9FAA30E29194FE28FB8CBC145BB
-:10A7A000F0886AB5B268E312B5F5EECC247DBD4100
-:10A7B0004B8E3F86A64EC8D9C49F1A1812E279A8BC
-:10A7C000CE30B349F71813BDF47C68836E0CEAE40D
-:10A7D0000F27C729434DAAD0A745C2EE0C1FD71F8C
-:10A7E00026FFAABF3B83FDCF03050E71EE1218258D
-:10A7F0007E68D293E39AE1B1E27D2524673127E7B1
-:10A80000CBBF3326C66FDFBD7294E252CDF257B78D
-:10A81000E7AF673F14FAC4B89BCB96A79C7F5C2335
-:10A82000BE88ED7402E1BFBFE0F601CA877E1075F5
-:10A83000AE2671196AD3997F6DBA6DEBBB93EB4469
-:10A840007D2A70DD74688BCAFC3F94F7C1913B4848
-:10A850004FE72D603C8F6C51F34309F270A2CDC5D8
-:10A86000F41ED922FC8B3C0784C6D2BC3FD126F40F
-:10A87000D027EF013E4F16DA651D1FE94A38EE2258
-:10A880007C1400FC231D27F0E1437CFE460794E284
-:10A890001687FD5DECBFA5F2D9785B69525CEBAA27
-:10A8A0007624E1D1E90A8639CF7D33E8A4AF1A1ABC
-:10A8B000B14FF17D970AC46FAEC0FD7CCE1CEC6732
-:10A8C00060DFDD188B28D87797845693DFFAE2CEC5
-:10A8D0008E01CAB3B8FC0E8DF8CDD57557B095C6AC
-:10A8E000573A2103DFF7812E05689F1109485FEB76
-:10A8F000106A247F7D38E0D0286FD31C6DDF41EBD8
-:10A9000037FB1700D1796B9383D73B6BAA9CB4CAF2
-:10A91000234783F25F0B3D6C77DF77861FEEC0F134
-:10A92000EF23BD223073AE5D6DC54CA70C3D397E63
-:10A9300076438CEDF05A73BC8BD6595BAD52450310
-:10A940004ED49C3942FEFA4895CB70E1BE466A244B
-:10A95000C6F7C755CE51BAE7F003755CA6757FF010
-:10A9600031F246513AF9BDB0DCA48E1FAA6E7113C4
-:10A970003FEC458A107E22530EB65FA9E3FE6CD1F0
-:10A980007F2FE285F01CC1FD96525C34897285D020
-:10A990007D53C1C7EFC076559BC2E3BE90EF885090
-:10A9A0005DA8BF496539E9F78606E8FE4F3FF23BEF
-:10A9B000C743FE10F3F370BE9FE5D05E67B86673C1
-:10A9C00019F1CB1B5519ECB757B535DE4B7EFB7A29
-:10A9D000F9A37F798AE2A70295E9D9EF0CC65F2532
-:10A9E000BE6E12FEE2C9250FB0DCF575DD0E8437B0
-:10A9F0008884DFA1BA555F650DC3B7F30DC34B441F
-:10AA00003EA9CF7F5F84F21BF16A915F30F38E72B3
-:10AA10003ECFCE2BD5597A6CB92BFC4A29CDBB47FA
-:10AA2000117561B9204AFAC04579259AA724E7BB78
-:10AA3000D64D26C7C18B53E2E0D43C13B8C74B5A5E
-:10AA4000D19E3ED986F1F17298CE2BD111588E2B22
-:10AA50005D1C2F8E548B3828E60CE76BE5E7CBF1B5
-:10AA60009B961F3CDEE3460E00F8518FC6FD2CF38B
-:10AA700037BB7311D45B3D017E7EEBDA47A5C47909
-:10AA80004395ED6E9DF5C64480E0A6EA8B543E5892
-:10AA9000DBB6C0B20F26107D872681F1EBAD5915CC
-:10AAA000273E3DFB7BE038F4130DE31E283E7F7EFE
-:10AAB0009CF6E9A2FC97D8E749DAA78BF25F627FA0
-:10AAC0002FF7E8DCBEDA53C6ED827610797E5B1F85
-:10AAD0005C89FA00F1D65020FA24FF648773FCB732
-:10AAE0000789BF5C014523F97617C4E252823E18FC
-:10AAF000F186DF25BBDC9FE761FE4BDDD7AFDA1CBB
-:10AB0000D6B9C2B711DC21844B787F71E77F3DB4A1
-:10AB100094D6794B66BECAE9DABC83F50EEA850C99
-:10AB2000F637843E8CE57938EF30B2B354A2FB504F
-:10AB30005B770B47774EB9C7754671DE09D4D7D41A
-:10AB4000EF4739A7F3F4D77CF0195AE7E33F2EE03B
-:10AB5000FB4D235BDE66B97F030390DCCB28F7B6A1
-:10AB60009CC5DE5AFC6D117F073B9E11E7673D389F
-:10AB7000E21D8FD1F9FB7F22433ABC5D2A5DC19C67
-:10AB80009F1F32AA4C1E3FE74F53373445DDB07745
-:10AB9000EC7BDC8F34039462FFEB4ED34D7CF0F5FD
-:10ABA000DD8E0BD60DBFBEFBC275C3D12F3BC0A53A
-:10ABB000CDECE30A98E03C2B85F05407ECA357D882
-:10ABC00066B787AE6E673F52D415F51ACA39505F23
-:10ABD0005B40FEF3C026B38CDFFB73D8EE0794B165
-:10ABE00038D9F500D5CB75BABF10E1BA27E567E9CA
-:10ABF000FE42EAF97B9D13EBF97C3884EA95A9F5CE
-:10AC000049C9F37D51DF5F2AEA90767DB2429D38D3
-:10AC1000FA20E1E93637E3A1F7D9EBDFA1FA975D36
-:10AC2000C70F5875606D0768BBC539CC76F2FB9FBE
-:10AC300017F550B81ECFB192169928DEB482EB9B5F
-:10AC40001BE81C73ED7FBE75C3664BBF2173F33DDC
-:10AC5000C89F59F8B4C7FD4DBB90C76B5591B786D7
-:10AC60002C95F5FCFA273C2093BFEC558F929C6CF9
-:10AC700083890D244FBD3EE1B7450F39D96FFB5491
-:10AC8000BBCE74CD534DBEBF90F7F719C66E0413FB
-:10AC90003DAE65511EE92FADE6A7DA791FB1B616B4
-:10ACA000DAC780CCFAEEFDD20D7C8FA949CA66794D
-:10ACB0005434B330515FEE6A4F7F1FA9B670B2852E
-:10ACC000D7F73A80E2AD6886F1B24EF87E4161B8BE
-:10ACD0004D20EE2BC1764D1AC073F67A4E337D6A45
-:10ACE0004B5D2B493FED6A17715BD49B3EAE7BA059
-:10ACF0005DC49F852DA12F101D6E82C97AD26F2849
-:10AD0000DA4684EFB588786D17E94B11EFEE72AC37
-:10AD100099C96BBDE40CEDA2F39ADF11FE842B20E0
-:10AD2000FC7A8CD4381F74ACC5FC0782DB4C7C5E8B
-:10AD3000C98A0A8EAD3C7F1F519B2EED662FC13B09
-:10AD40006CE9E70ACDE4BA6B05388C5E7F425D5D45
-:10AD50009F5F5D5DD2BE2FEAE937083E86E723821A
-:10AD60000FD78346F284FC7798D6B3EF97543CB75D
-:10AD7000A388EB2E9758DF3ED5627E95E0BDB829BB
-:10AD8000F8353AF7FB3B3B80E1CDF3BE466D6138C9
-:10AD900010443AF56708BFF9C93AA3339890FF7990
-:10ADA000D3A2D79B165D97233B8D8B7B6F6CC7AF70
-:10ADB000826A37D12B157E5F0F8C511D68B6F5D591
-:10ADC0007DF7B9294FDC5BB0DE4DF7D1A29EF5D9F6
-:10ADD000D4EF2F3003B47E5F4FE3B31F96121F09E9
-:10ADE000BE8F2C11F98818EAE748429EF4C576997F
-:10ADF000F7555F0071CAA7BB3CC22F7261BCA8AFF8
-:10AE000020BFB99AED393E1FA3D4C16B963CC9A6A9
-:10AE10000126DD172C0089F0853A727A3E99BCFA3A
-:10AE20008230D0BE66832337E07C8A470B34F643FA
-:10AE30007EDDAE313E7DA663268E87F9E3EBD01C26
-:10AE4000F8CA99035FD37C6DC95D2A9ECE109E8897
-:10AE50004F7C0FF0B9E04FF52C672E547854CFFF9C
-:10AE6000C8C68BC7849097C37F89F013A50B36E5BE
-:10AE700033F8455F91F12B6B619EE72A3020B48255
-:10AE8000F0A149848FD4F3573CF77803E1ED956D39
-:10AE900042AFD62A96FE08E359903F6FB2D605CB53
-:10AEA0002E356508BBD30C3FF488BCB6E0D30A74DA
-:10AEB000C7DD39E7EB57BB7D72967BD74F6ECE105F
-:10AEC000FE903EC6FABDB751C0F77A851F7A74600E
-:10AED00015FB0F37E6972E48D48F97BB4E985A171D
-:10AEE0009CAB0E38C337A69BF6F93BEDBE085D95CB
-:10AEF0009B8D3F1E24FE7192DCB8B93DEF7D613021
-:10AF000060905C2D31238074DBEB0B07887FFA8E19
-:10AF1000EF7C87EA24CAEBB241FEA6A20481C6DD1B
-:10AF2000981766F9D8586002D5951EEC31BF9B087A
-:10AF3000F7969650F966A45BA63666121C0FC423DA
-:10AF4000648F6ECA35C3C13474A8DE2CF4C7B196C1
-:10AF5000E02A9A574BBA7315C0C39BCCD5D49FAF88
-:10AF6000BE3A5F9E1ADDA4F72F5D9E5ADC74BEFECA
-:10AF70008220DFD3EAFFA14C1ED6F4B87E4B9EFAA6
-:10AF8000973C00A104B90A6E4ED13B7E4BEFF84DC1
-:10AF9000968BCD9B752B0F1C64F970923C9527E81E
-:10AFA00019BFAD674C9647C56FCB93257F244F1EC5
-:10AFB000BA1F3C594F7E4A1F887B8CA9F2156E0937
-:10AFC0006DD94C762CEFB7AD45FACCFD4F5D17F23D
-:10AFD000D45F60F1FB92A799FFCF22FFD365E15EBA
-:10AFE0004F7112BFDBEDDA2919E2488A755312B7A7
-:10AFF0009F98CAE4B6762A835B732A97DBBA291F27
-:10B00000B7EBA7AEE0B67E2A9FDB8629E4FBD5C866
-:10B01000FF5345DCDE38B59CDB8D53CBB86D9C5AB5
-:10B02000CDE39AA656727BD3D40DDCDE3C5523D6F5
-:10B03000A19A504E5AFEA772D665E07F2342F5D101
-:10B04000BEE3F7BC43F8716A2AE751A2BE355CEF54
-:10B05000712A61E6FFA30542BF6FF408FAA4F2FF6C
-:10B06000B196D0FE74FC0F4E716F4BA17B5B95ECDB
-:10B07000E70C337F9FE7EFBEF447CA83A2FF7198C6
-:10B08000DF5FA2FD9FF62B1726FB95FD79C97E6534
-:10B09000DF12DBAF748D521D6CBBA4F33DB1532D99
-:10B0A000A17FE6F521B88DDE87DADC1AF95351DF8E
-:10B0B0008D010FF6B7EE9581F27DE85F7C8BF80C81
-:10B0C000503F90DD98AFBC3EBCC9D2EFD6F80A38ED
-:10B0D000ED085F847FF23E7DAD395FEE679B67CB05
-:10B0E000FD55509691CECEE638EB85DC6B42EEA353
-:10B0F00005C101CAB74453E4DEB6A3888724B93F2B
-:10B1000065CBBD25C7397E71EF2387E41EF9EA2799
-:10B110009BC579D1DF4EB2A38A35DED928EA5BF52B
-:10B120007EA1579546A12F142DD98E22DFBC4B74DA
-:10B130004995F78822FCE3A6D27F9DB667645773D2
-:10B14000FC3E291B97D67E3F11A13CD6716529CBC9
-:10B1500077AA1C45B555CCE7C7957A4827FFF396E3
-:10B16000239F6D474CB623A9E36C79EA3BDEC47894
-:10B17000B1EDCA713CB799604F366A020F684F3E15
-:10B1800026FE4A95A7DA4233144CB34FB543F8A5CF
-:10B19000AFAD0B0A7F11FD44F253A2CEF47E80DAEC
-:10B1A00021FC9F9C46EBF7153A8473510F3636C647
-:10B1B000EBA98681F2AC7620BC75E6442FC960AF5E
-:10B1C00067D84FFB47F97475FC15F2F9D126E117E2
-:10B1D00042772EFB2D763B17DFDBFE8ECDFFA9E3FA
-:10B1E0009E2C323BD3E1E5F3165E8E0E3C9DC41FD0
-:10B1F00043CAD29B0C3DAD5E358DCBA257E7E757D6
-:10B200001C473BC77A7576BFE2BA8E347C309B5FB1
-:10B21000F1890E91CF45BF621DCDAB2D177EC5E7DD
-:10B220003BE0F2FA0B35F731BE2ED55FD86CF1DF7B
-:10B230006CFE425787AD37C2AC375C96DEB8587F9C
-:10B24000218D7F703BF32F4CCA54FF43541B221FA8
-:10B2500022F408EA99BBE83DC6F1EC2F1CF5087E04
-:10B26000312D3D736D7B7007E175A85AF80B974B34
-:10B270000ED0EFBBAF236FFEF230DF71A58FAD1D97
-:10B2800098203F07BC31BA37DD4BF795287E7CCF3D
-:10B290002BEE11009451DEFF8BF23506D9B991CC1B
-:10B2A0002F7D83C6774714A07B83433D22FFF7C5DC
-:10B2B000055947017967C8197E6AC2CFBF770D1E4D
-:10B2C000C5F60F1985A39070EFF6B0256F2ED8C282
-:10B2D000F774B3B45B9EFD3037DDFEC4FD5CBABAD3
-:10B2E000728E7FD751A0F13D320B3F596A10227EFA
-:10B2F000922307D747D0DB83EA84BC475F4D5727AB
-:10B30000C7C1F922EF25837286F2EF03B49638178E
-:10B310009FB37FB1FB513A970E218677D0EFE0BC07
-:10B320007BFF5A11EFF47BC26E2D8DDED8D7937C54
-:10B33000FF28B595973D16A33BC287038A4169CF85
-:10B34000C1B2CA26CA4F4635AE0083EA7304D3D5CC
-:10B35000A7C72DF9D4C1607BAC7CB2253B9DBDB0A5
-:10B36000DB010BFF76DF5D326612DFA94566907F59
-:10B3700087E3F34B9184BCF11316FCBD9211AF45EA
-:10B3800064EDF50AFDEFD66326FDDEB82FEF2EAE95
-:10B3900033BAF5089CA1E72531F839E9A77C77E7AE
-:10B3A000689A7DBCD521E294BDCE10AFB7375FE17E
-:10B3B000FAE3DEA2F4F9ACE73B441E49F5AD0F72A7
-:10B3C0005EDFA7709D3875DC53169FF4AB6640E3D3
-:10B3D000B8FA81323A577409708E72EC9D379FD853
-:10B3E0008DFDFD3D41CE7B0C51FE0385B5BFF05E6A
-:10B3F000C6FBFE6B1C1A9D6383FC11DF47385C0D96
-:10B4000006E98FEC6A1C9710471E86D101BA0F77A8
-:10B41000782D70BED46B0493DEF723038E93FFA5C3
-:10B420004CB03E734237D7010EF855BEA73354795E
-:10B430009AFD231DC6394F315429E865D793FC1670
-:10B440003FFAFD773527CAC1018B6E0F52DE9CEFA4
-:10B45000318D41A2FF75A0709CEDF38175E39D5481
-:10B4600017CCF2BB0D0A45F6D70481E474A8CA9143
-:10B47000F67ED450D569DE67EA7E9C277EC9FA2F16
-:10B480004B99E0FC4456D96FD9AE3C64ED63E35A66
-:10B49000E0CD66570B3D9BDD1606FA7D58DE5BF26C
-:10B4A000A88EFDDD85BF8A38493E6E0358A4D37E41
-:10B4B0002778BF879B9F8EF3FEACFBBA203FCFF768
-:10B4C000712128E4D7BE77BDB04D4D8ADFB352EE6F
-:10B4D0004565A6F441EEBAE07DB2EEF7EE3975327D
-:10B4E00001DEA2CEE4FBD973CDFF43CF8E5327916B
-:10B4F0005F0E575E58BE0E59758D584F35D3C9E64D
-:10B50000339BEFB2E88839B3CF1FF28D75A6B3C372
-:10B510001D9D420E52F93195FF34D718DBF143EBF4
-:10B5200092E1DCD029E4F8060B4E4EA19E4FEFEDE0
-:10B530007B4C747FEAE934EB7EBA53E5F1337C6DE2
-:10B54000DBF9772ECDCE2F6B1176DEBF2A83EC3C54
-:10B55000E2F365BAC7F67B940F4890EB3E6FB29F5B
-:10B5600069DBF9C73B457CF062DE5512D9E91CCF97
-:10B5700004FBBF59D5C97980543BAD3A431C37AA67
-:10B58000F9AAAD6FB89EF55AC7FB4F4410CEFEF82E
-:10B590003EAE0F6522FF66484CA7483A3A4179F221
-:10B5A000BD9AF24E10BF63D3855EC85AAB70BD63BF
-:10B5B000C8F15EF587D82AB130042DB883CCB7FB2B
-:10B5C000C7F97E8EC5F773D1933E7F5A63FD2E85F2
-:10B5D000EA88F56F56A78B2BEC96EE4F25DF77BFE9
-:10B5E00038B9F8FB4EABBE9C0119422E9A1D7D6402
-:10B5F000EF9B1D7C2F85AEEF2A6BACD201D5F56990
-:10B6000067F8DE4FF77F24AB5EB474465EE0567198
-:10B61000AFE5EC0E714F867F47B8947EF739C1BF16
-:10B620000FBC926EB1CAEC07B3DC9C850207D583D0
-:10B6300023272469DA0FBA82AE341A0E9A570241D0
-:10B640006E53F77D1584F97919C4B8BD06C6B82DB7
-:10B6500087716E2B60925B9326E07E8D93A2AEB1D4
-:10B660000A0C999E574290DB3510E6B61A62DC7ED2
-:10B67000A5FE6F7F733B4EF9DA797811784D23DFA1
-:10B6800071043A7D7E1BCFAD9D3AF3C95CF4EEF3B5
-:10B690004DB01F5F5F3DCE7EA8D71364FE76FA05DE
-:10B6A0007FDB709CB3E4836D3F49253F69751AFECB
-:10B6B0009DC34F4AFD1DC9FF0229F7D0B3D04500F5
-:10B6C0000000000000000000000000180000000062
-:10B6D000000000000000004000000000000000002A
-:10B6E0000000002800000000000000000000001022
-:10B6F000000000000000000000000020000000002A
-:10B700000000000000000010000000000000000029
-:10B710000000000800000000000000000000000021
-:10B7200000000000000000000000003900000000E0
-:10B7300000000000000000380000000000000000D1
-:10B7400000000000000000000000000000000008F1
-:10B7500000000000000000000000000000000000E9
-:10B76000000000000000000C0000000000000000CD
-:10B770000000000E000000000000000000000004B7
-:10B7800000000000000000000000001800000000A1
-:10B79000000000000000001C00000000000000008D
-:10B7A0000000001C0000000000000000000000136A
-:10B7B00000000000000000000000003A000000004F
-:10B7C0000000000000000001000000000000000078
-:10B7D0000000000200000000000000000000000166
-:10B7E0000000000000000000000000100000000049
-:10B7F00000000000000000500000000000000000F9
-:10B800000000000000000000000000000000000335
-:10B810000000000000000000000000AB000000007D
-:10B820000000000000000008000000000000000010
-:10B830000000C00000100000000000080000C00868
-:10B8400000100000000000020000C0000010000016
-:10B850000000001000009FB0000000000000000881
-:10B860000000C08000100000000000040000C0883C
-:10B8700000100000000000020000C0800010000066
-:10B8800000000010000091200000000000000008EF
-:10B8900000009340000100040000000100009348F4
-:10B8A00000000000000000020000935000000000B3
-:10B8B0000000000800009354000000000000000297
-:10B8C00000009418000000000000000800009358D9
-:10B8D000000800000000000800009AB000400000CE
-:10B8E00000000040000093980008000000000008DD
-:10B8F000000093D800080000000000080000942019
-:10B9000000C8000000000098000095B000980000FA
-:10B9100000000028000095F00098000000000028BA
-:10B920000000C480054000300000054000009D205C
-:10B93000000800000000000100009D210008000038
-:10B9400000000001000020080010000000000010AE
-:10B9500000002000000000000000000800009CD84B
-:10B96000000800000000000200009D180000000018
-:10B9700000000001000000010000000000000000C5
-:10B9800000000009000000000000000000000002AC
-:10B9900000000000000000000000CF2000000000B8
-:10B9A000000000200000CF46000000000000000161
-:10B9B0000000600000200000000000200000730074
-:10B9C000000800000000000800009FA00000000028
-:10B9D0000000000100009FA800000000000000011E
-:10B9E00000009F60000000000000001000009F6346
-:10B9F000000000000000000100009F610000000046
-:10BA00000000000100009F6600000000000000012F
-:10BA100000009F67000000000000000000009F6819
-:10BA2000000000000000000400009F6C0000000007
-:10BA300000000004000000520000000000000000B0
-:10BA400000000003000000000000000000000003F0
-:10BA500000000000000000000000000500000000E1
-:10BA600000000000000000020000000000000000D4
-:10BA700000060000000000000000002000009F7091
-:10BA8000000000000000000100009F900000000086
-:10BA9000000000080000005300000000000000004B
-:10BAA00000009F98000000000000000200009F9C22
-:10BAB000000000000000000100009F9D0000000049
-:10BAC000000000010000000900000000000000006C
-:10BAD0000000000100000000000000000000004421
-:10BAE0000000000000000000000000010000000055
-:10BAF00000000000000000500000000000000000F6
-:10BB0000000000890000000000000000000012C8D2
-:10BB10000080000000000080000000010000000024
-:10BB2000000000000000A000071000000000071047
-:10BB300000001AC800000000000000080000AEC0AD
-:10BB400000080000000000080000AE4000080000EF
-:10BB5000000000080000AE8000080000000000089F
-:10BB6000000020080010000000000010000020006D
-:10BB700000000000000000080000A01007100040B6
-:10BB80000000004000001BF8000800000000000159
-:10BB900000001BF9000800000000000100001AD09E
-:10BBA000000000000000000100001AD800000000A2
-:10BBB0000000000200001ADA00000000000000028D
-:10BBC0008000000000000000000000000000AF0046
-:10BBD000000000000000002000001B78002800008A
-:10BBE000000000040000E000002000000000002031
-:10BBF0000000F300000800000000000800001AF038
-:10BC0000000000000000010800001B3700000000D9
-:10BC10000000000100001B0F0000000000000001F8
-:10BC200000001B70000000000000000400001B74F6
-:10BC300000000000000000040000005000000000B0
-:10BC400000000000000000030000000000000000F1
-:10BC500000000005000000000000000000000006D9
-:10BC600000000000000000000000000700000000CD
-:10BC70000000000000001BC80000000000000001E0
-:10BC800000001BE800000000000000080000005158
-:10BC9000000000000000000000001BD000000000B9
-:10BCA0000000000400001BD400000000000000049D
-:10BCB00000001BD8000000000000000400001BDC96
-:10BCC00000000000000000080000B00000180000A4
-:10BCD000000000180000C00000400000000000400C
-:10BCE0000000C00000400002000000010000C00190
-:10BCF00000400002000000000000E2000020000000
-:10BD0000000000200000E204000200080020000201
-:10BD10008000000000000000000000000000E200C1
-:10BD200000080020000000040000F40000280000CB
-:10BD3000000000280000F540001000000000001086
-:10BD40000000F5C000200000000000200000F5C049
-:10BD500000020020000000020000F30000200000AC
-:10BD6000000000200000200800100000000000106B
-:10BD70000000200000000000000000080000110882
-:10BD80000008000000000008000011680008000022
-:10BD900000000008000011A80008000000000008D2
-:10BDA00000001240000800000000000100001241E5
-:10BDB0000008000000000001000040000020000416
-:10BDC00000000010000059000030001800000010B2
-:10BDD0000000590800300018000000020000570061
-:10BDE00000080000000000010000570100080000EA
-:10BDF00000000001000011E8000000000000000148
-:10BE0000000011F00000000000000001000011F827
-:10BE100000000000000000100000124400080000B4
-:10BE2000000000040000400000200000000000208E
-:10BE30000000530000100000000000100000153842
-:10BE400000000000000000010000000300000000EE
-:10BE500000000000000000000000000000000000E2
-:10BE600000000001000000000000000000000004CD
-:10BE700000000000000000000000150800000000A5
-:10BE8000000000010000152800000000000000086C
-:10BE900000000050000000000000000000008308C7
-:10BEA0000080000000000080000000010000000091
-:10BEB000000000000000200800100000000000103A
-:10BEC00000002000000000000000000800008410B6
-:10BED0000008000000000008000084700008000056
-:10BEE0000000000800060000046000280000046054
-:10BEF00000008520000800000000000100008521EE
-:10BF000000080000000000018000000000000000A8
-:10BF10000000000000008408000000000000000194
-:10BF2000000084F40008000000000002000084F615
-:10BF3000000800000000000200008504001000005E
-:10BF400000000004000087600000000000000020E6
-:10BF500000006000002000000000002000007300CE
-:10BF600000080000000000080000000300000000BE
-:10BF700000000000000000050000000000000000BC
-:10BF800000000006000000000000000000000007A4
-:10BF90000000000000000000000088080000000011
-:10BFA00000000001000088280000000000000008D8
-:10BFB0000000005000000000000000000000881099
-:10BFC00000000000000000040000881400000000D1
-:10BFD00000000004000088180000000000000004B9
-:10BFE0000000881C00000000000000080000300075
-:10BFF0000040000000000008000030080040000081
-:10C00000000000280000339001C00010000000086C
-:10C010000000320000200000000000200000372057
-:10C02000000000000000000800001020062000387A
-:10C03000000000080000A000000000000000200038
-:10C0400000003EA9000000000000000100003EC802
-:10C05000000000000000000280000000000000005E
-:10C060000000000000006000002000000000000848
-:10C070000000400000080000000000010000400136
-:10C08000000800000000000100004040000800041B
-:10C0900000000002000040600008000400000004EE
-:10C0A0000000400000080000000000040000400400
-:10C0B00000080000000000040000404000000000F4
-:10C0C00000000008000040480000000000000008D8
-:10C0D0000000800000000000000000100000504040
-:10C0E00000010004000000010000500000000000FA
-:10C0F00000000020000050080010000000000004B4
-:10C100000000500C0010000000000001000052C7A9
-:10C110000000000000000001000052C60000000006
-:10C120000000000100003000003000180000000492
-:10C130000000300400300018000000040000300847
-:10C1400000300018000000020000300A0030001823
-:10C15000000000020000300C003000180000000158
-:10C160000000300D00300018000000010000300E0B
-:10C1700000300018000000010000301000300018EE
-:10C18000000000040000301400300018000000041B
-:10C19000000050000100008000080004000050046E
-:10C1A00001000080000800040000000A00000000F8
-:10C1B0000000000000005068010000800000000145
-:10C1C0000000506901000080000000010000506C78
-:10C1D00001000080000000020000506E010000809D
-:10C1E0000000000200005070010000800000000408
-:10C1F0000000507401000080000000040000506640
-:10C200000100008000000002000050640100008076
-:10C2100000000001000050600100008000000002EA
-:10C220000000506201000080000000020000505039
-:10C230000100008000000004000050540100008054
-:10C2400000000004000050580100008000000004BD
-:10C250000000505C01000080000000040000507CE1
-:10C2600001000080000000010000507D01000080FE
-:10C270000000000100004018001000000000000451
-:10C2800000004090001000000000000400004098F2
-:10C290000010000000000004000041100000000039
-:10C2A0000000000200004112000000000000000237
-:10C2B00000004114000000000000000200004116D0
-:10C2C00000000000000000020000604000080000C4
-:10C2D00000000002000060420008000000000002B0
-:10C2E00000006044000800000000000400006080BE
-:10C2F0000008000000000008000060C000400008C6
-:10C3000000000008000060000008000000000002BB
-:10C31000000060020008000000000001000060044E
-:10C320000008000000000002000063400008000058
-:10C330000000000800006380000800000000000406
-:10C34000000063840008000000000001000063C0DA
-:10C350000008000000000002000063C400080000A4
-:10C36000000000020000640000080000000000045B
-:10C3700000007000001000000000000400007004C5
-:10C380000010000000000004000070080010000011
-:10C3900000000004000090000008000000000002FF
-:10C3A000000090020008000000000001000090045E
-:10C3B000000800000000000200009040000800009B
-:10C3C000000000020000904400080000000000028D
-:10C3D000000090460008000000000002000096489F
-:10C3E0000008000000000008000090800008000025
-:10C3F000000000020000908400080000000000021D
-:10C40000000096880008000000000008000080403E
-:10C41000000800000000000100008041000800004A
-:10C420000000000100008042000800000000000140
-:10C4300000008043000800000000000100008000B0
-:10C440000008000000000002000080020008000058
-:10C45000000000010000800400080000000000024D
-:10C46000000080C00008000000000002000080C240
-:10C470000008000000000002000080C40008000066
-:10C4800000000002000080800008000000000001A1
-:10C490000000808100080000000000010000808290
-:10C4A0000008000000000001000080830008000078
-:10C4B000000000010000808400080000000000016E
-:10C4C0000000808500080000000000010000808658
-:10C4D00000080000000000010000600000080000EB
-:10C4E00000000002000060020008000000000001DF
-:10C4F000000060040008000000000002000060422C
-:10C5000000C00018000000020000604000C00018D9
-:10C51000000000020000604C00C00018000000088D
-:10C520000000604400C000180000000800006057D0
-:10C5300000C00018000000010000605400C0001896
-:10C54000000000020000605600C00018000000015A
-:10C55000000066400008000000000008000066803F
-:10C560000008000000000008000066C0000800008D
-:10C57000000000080000DA4200180000000000027D
-:10C580000000DE4000000000000000000000E000AD
-:10C5900000000000000000040000D0C00000000007
-:10C5A000000000040000D0C40000000000000004EF
-:10C5B0000000D0C800000000000000040000D0CC43
-:10C5C00000000000000000040000D0D000000000C7
-:10C5D000000000040000D0D40000000000000004AF
-:10C5E0000000D0D800000000000000040000D0C00F
-:10C5F00000000000000000200000DB000000000040
-:10C60000000000040000DB000000000000000068E3
-:10C610000000B94800000000000000000000D00049
-:10C6200000000000000000040000B0C00000000096
-:10C63000000000040000B0C400000000000000047E
-:10C640000000B0C800000000000000040000B0C0FE
-:10C6500000000000000000100000D6B00000000044
-:10C66000000000040000D6B4000000000000000438
-:10C670000000D6B800000000000000040000D6BC96
-:10C6800000000000000000040000D6B00000000020
-:10C69000000000100000D348000000000000000867
-:10C6A0000000D358000000000000008000000010CF
-:10C6B00000000000000000000000D358000000004F
-:10C6C0000000000800000000060209000000000051
-:00000001FF
diff --git a/firmware/cis/.gitignore b/firmware/cis/.gitignore
deleted file mode 100644
index 1de39847f261..000000000000
--- a/firmware/cis/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.cis
diff --git a/firmware/cis/3CCFEM556.cis.ihex b/firmware/cis/3CCFEM556.cis.ihex
deleted file mode 100644
index e4d92b173e17..000000000000
--- a/firmware/cis/3CCFEM556.cis.ihex
+++ /dev/null
@@ -1,13 +0,0 @@
-:1000000001030000FF152D050033436F6D004D65A2
-:100010006761686572747A2033434346454D3535D0
-:1000200036004C414E202B2035366B204D6F6465D9
-:100030006D0000FF20040101560521020000060B9F
-:1000400002004D000000006B000000FF001303439E
-:100050004953210206001A060507001067021B0912
-:1000600087011901556430FFFFFF00130343495313
-:10007000210202001A060527001177021B09A701B9
-:090080001901552330FFFFFF00B8
-:00000001FF
-#
-# This card is MFC-compliant, but identifies itself as single function
-#
diff --git a/firmware/cis/3CXEM556.cis.ihex b/firmware/cis/3CXEM556.cis.ihex
deleted file mode 100644
index 895010b230ff..000000000000
--- a/firmware/cis/3CXEM556.cis.ihex
+++ /dev/null
@@ -1,13 +0,0 @@
-:1000000001030000FF152C050033436F6D004D65A3
-:100010006761686572747A20334358454D353536CB
-:10002000004C414E202B2035366B204D6F64656DA2
-:100030000000FF20040101350021020000060B0230
-:10004000004C0000000069000000FF00130343495A
-:1000500053210206001A0501070008631B098701E6
-:100060001901556430FFFFFF001303434953210278
-:1000700002001A0501270009631B09A70119015590
-:060080002330FFFFFF002A
-:00000001FF
-#
-# This card is MFC-compliant, but identifies itself as single function
-#
diff --git a/firmware/cis/COMpad2.cis.ihex b/firmware/cis/COMpad2.cis.ihex
deleted file mode 100644
index 1671c5e48caa..000000000000
--- a/firmware/cis/COMpad2.cis.ihex
+++ /dev/null
@@ -1,11 +0,0 @@
-:1000000001030000FF151F0401414456414E5445B1
-:10001000434800434F4D7061642D33322F38350013
-:10002000312E300000FF210202011A0501050001F6
-:10003000031B0EC18118AA61E80207E8030730B864
-:100040009E1B08820108AA6030030F1B0883010869
-:10005000AA6040030F1B08840108AA6050030F1B0D
-:0D00600008850108AA6060030F1400FF006E
-:00000001FF
-#
-# Replacement CIS for Advantech COMpad-32/85
-#
diff --git a/firmware/cis/COMpad4.cis.ihex b/firmware/cis/COMpad4.cis.ihex
deleted file mode 100644
index 27bbec1921b3..000000000000
--- a/firmware/cis/COMpad4.cis.ihex
+++ /dev/null
@@ -1,9 +0,0 @@
-:1000000001030000FF151F0401414456414E5445B1
-:10001000434800434F4D7061642D33322F383542D1
-:100020002D34000000FF210202011A050102000127
-:10003000011B0BC18118AA6040021F30B89E1B082B
-:0C004000820108AA6040031F1400FF00AA
-:00000001FF
-#
-# Replacement CIS for Advantech COMpad-32/85B-4
-#
diff --git a/firmware/cis/DP83903.cis.ihex b/firmware/cis/DP83903.cis.ihex
deleted file mode 100644
index 6d73ea3cf1b8..000000000000
--- a/firmware/cis/DP83903.cis.ihex
+++ /dev/null
@@ -1,14 +0,0 @@
-:1000000001030000FF152904014D756C74696675C4
-:100010006E6374696F6E20436172640000004E531A
-:1000200043204D46204C414E2F4D6F64656D00FFBF
-:1000300020047501000021020000060B02004900A7
-:100040000000006A000000FF00130343495321022F
-:1000500006001A060517201077021B0C970179017C
-:10006000556530FFFF284000FF001303434953212B
-:100070000202001A060507401077021B09870119C2
-:0800800001552330FFFFFF00D2
-:00000001FF
-#
-# This CIS is for cards based on the National Semiconductor
-# DP83903 Multiple Function Interface Chip
-#
diff --git a/firmware/cis/LA-PCM.cis.ihex b/firmware/cis/LA-PCM.cis.ihex
deleted file mode 100644
index a0ff0c7b393d..000000000000
--- a/firmware/cis/LA-PCM.cis.ihex
+++ /dev/null
@@ -1,20 +0,0 @@
-:100000000105D4F953E9FF17035338FF20040FC04B
-:1000100002002102060315390401416C6C69656414
-:100020002054656C657369732C4B2E4B00457468C6
-:1000300065726E6574204C414E20436172640043CA
-:10004000656E747265434F4D004C412D50434D0019
-:10005000FF1A0602100000020B1B08810108E06075
-:1000600000021F1B08820108E06020021F1B08839A
-:100070000108E06040021F1B08840108E060600284
-:100080001F1B08850108E06080021F1B088601080D
-:10009000E060A0021F1B08870108E060C0021F1B70
-:1000A00008880108E060E0021F1B08890108E06081
-:1000B00000031F1B088A0108E06020031F1B088B38
-:1000C0000108E06040031F1B088C0108E06060032A
-:1000D0001F1B088D0108E06080031F1B088E0108AC
-:1000E000E060A0031F1B088F0108E060C0031F1B16
-:0D00F00008900108E060E0031F1400FF000D
-:00000001FF
-#
-# Replacement CIS for Allied Telesis LA-PCM
-#
diff --git a/firmware/cis/MT5634ZLX.cis.ihex b/firmware/cis/MT5634ZLX.cis.ihex
deleted file mode 100644
index 72500b9d95d8..000000000000
--- a/firmware/cis/MT5634ZLX.cis.ihex
+++ /dev/null
@@ -1,11 +0,0 @@
-:100000000101FF152204014D756C74695465636824
-:100010000050434D4349412035364B2044617461C3
-:10002000466178000000FF20040002010021020266
-:10003000001A05012780FF671B0FCF418B01550177
-:10004000550155AA60F80307281B08970108AA6004
-:10005000F802071B089F0108AA60E803071B08A70E
-:0B0060000108AA60E802071400FF007E
-:00000001FF
-#
-# Replacement CIS for Multitech MT5634ZLX modems
-#
diff --git a/firmware/cis/NE2K.cis.ihex b/firmware/cis/NE2K.cis.ihex
deleted file mode 100644
index 1bb40fc4759f..000000000000
--- a/firmware/cis/NE2K.cis.ihex
+++ /dev/null
@@ -1,8 +0,0 @@
-:1000000001030000FF1515040150434D4349410011
-:1000100045746865726E6574000000FF2102060079
-:100020001A050120F803031B09E001190155653089
-:06003000FFFF1400FF00B9
-:00000001FF
-#
-# Replacement CIS for various busted NE2000-compatible cards
-#
diff --git a/firmware/cis/PCMLM28.cis.ihex b/firmware/cis/PCMLM28.cis.ihex
deleted file mode 100644
index ffdfe8522ef5..000000000000
--- a/firmware/cis/PCMLM28.cis.ihex
+++ /dev/null
@@ -1,18 +0,0 @@
-:1000000001030000FF151504014C494E4B53595391
-:100010000050434D4C4D3238000000FF2004430196
-:10002000ABC0210200001A05012FF803031B10E4E6
-:1000300001190155E06100031FF8020730FFFF1BA3
-:100040000BA50108E06120031FF802071B0BA601A6
-:1000500008E06140031FF802071B0BA70108E061DD
-:1000600060031FF802071B0BA80108E06100031FD3
-:10007000E803071B0BA90108E06120031FE8030741
-:100080001B0BAA0108E06140031FE803071B0BAB31
-:100090000108E06160031FE803071B0BAC0108E0E7
-:1000A0006100031FE802071B0BAD0108E06120039C
-:1000B0001FE802071B0BAE0108E06140031FE802C6
-:1000C000071B0BAF0108E06160031FE80207140083
-:0200D000FF002F
-:00000001FF
-#
-# The on-card CIS says it is MFC-compliant, but it is not
-#
diff --git a/firmware/cis/PE-200.cis.ihex b/firmware/cis/PE-200.cis.ihex
deleted file mode 100644
index e6dbdab6eb79..000000000000
--- a/firmware/cis/PE-200.cis.ihex
+++ /dev/null
@@ -1,9 +0,0 @@
-:1000000001030000FF151E0401504D582020200060
-:1000100050452D3230300045544845524E4554002D
-:1000200052303100FF210206031A050101000101CF
-:100030001B0EC181190155E051000F100F30FFFF59
-:040040001400FF00A9
-:00000001FF
-#
-# Replacement CIS for PE-200 ethernet card
-#
diff --git a/firmware/cis/PE520.cis.ihex b/firmware/cis/PE520.cis.ihex
deleted file mode 100644
index 97a745b5496e..000000000000
--- a/firmware/cis/PE520.cis.ihex
+++ /dev/null
@@ -1,9 +0,0 @@
-:1000000001030000FF152304014B544900504535FE
-:10001000323020504C55530050434D434941204508
-:10002000746865726E65740000FF20046101100041
-:10003000210206001A050101D00F0B1B09C101198D
-:0A00400001556530FFFF1400FF00BA
-:00000001FF
-#
-# Replacement CIS for PE520 ethernet card
-#
diff --git a/firmware/cis/RS-COM-2P.cis.ihex b/firmware/cis/RS-COM-2P.cis.ihex
deleted file mode 100644
index 0801ca5da80a..000000000000
--- a/firmware/cis/RS-COM-2P.cis.ihex
+++ /dev/null
@@ -1,10 +0,0 @@
-:1000000001030000FF1516040150434D4349410010
-:1000100052532D434F4D203250000000FF21020269
-:10002000011A0501030001011B0EC18118AA61E834
-:100030000307E8020730B89E1B0B820108AA615033
-:1000400002075802071B0B830108AA6160020768B8
-:0600500002071400FF008E
-:00000001FF
-#
-# Replacement CIS for dual-serial-port IO card
-#
diff --git a/firmware/cis/SW_555_SER.cis.ihex b/firmware/cis/SW_555_SER.cis.ihex
deleted file mode 100644
index 9b9348acee7b..000000000000
--- a/firmware/cis/SW_555_SER.cis.ihex
+++ /dev/null
@@ -1,12 +0,0 @@
-:100000000101FF17034100FF20043F0110072102F7
-:100010000200152A070053696572726120576972E0
-:10002000656C657373004169724361726420353594
-:1000300035004135353500526576203100FF1A050F
-:1000400001030007731B0BE00118A360F8030730DE
-:10005000BC3F1B08A10108A360F802071B08A2010E
-:1000600008A360E803071B08A30108A360E80207D0
-:0A0070001B04A40108231400FF0084
-:00000001FF
-#
-# Replacement CIS for AC555 provided by Sierra Wireless
-#
diff --git a/firmware/cis/SW_7xx_SER.cis.ihex b/firmware/cis/SW_7xx_SER.cis.ihex
deleted file mode 100644
index 11e44ad86437..000000000000
--- a/firmware/cis/SW_7xx_SER.cis.ihex
+++ /dev/null
@@ -1,13 +0,0 @@
-:100000000101FF17034100FF2004920110072102A4
-:1000100002001537070053696572726120576972D3
-:10002000656C6573730041433731302F4143373579
-:10003000300047505253204E6574776F726B2041E9
-:1000400064617074657200523100FF1A050103008B
-:1000500007731B10E00119784D555D25A360F80367
-:100060000730BC861B08A10108A360F802071B0823
-:10007000A20108A360E803071B08A30108A360E826
-:0C00800002071B04A40108231400FF0069
-:00000001FF
-#
-# Replacement CIS for AC7xx provided by Sierra Wireless
-#
diff --git a/firmware/cis/SW_8xx_SER.cis.ihex b/firmware/cis/SW_8xx_SER.cis.ihex
deleted file mode 100644
index bbcfe6348328..000000000000
--- a/firmware/cis/SW_8xx_SER.cis.ihex
+++ /dev/null
@@ -1,13 +0,0 @@
-:100000000101FF17034100FF2004920110072102A4
-:100010000200152F070053696572726120576972DB
-:10002000656C657373004143383530003347204EAB
-:100030006574776F726B20416461707465720052F1
-:100040003100FF1A0501030007731B10E001197846
-:100050004D555D25A360F8480730BC861B08A101FB
-:1000600008A360F847071B08A20108A360E8480737
-:100070001B08A30108A360E847071B04A401082389
-:040080001400FF0069
-:00000001FF
-#
-# Replacement CIS for AC8xx provided by Sierra Wireless
-#
diff --git a/firmware/cis/tamarack.cis.ihex b/firmware/cis/tamarack.cis.ihex
deleted file mode 100644
index 1e86547fb361..000000000000
--- a/firmware/cis/tamarack.cis.ihex
+++ /dev/null
@@ -1,10 +0,0 @@
-:100000000103D400FF17034100FF152404015441EC
-:100010004D415241434B0045746865726E657400F2
-:10002000410030303437343331313830303100FF33
-:10003000210206001A050120F803031B14E08119B0
-:100040003F554D5D06864626E551000F100F30FFE7
-:05005000FF1400FF0099
-:00000001FF
-#
-# Replacement CIS for Surecom, Tamarack NE2000 cards
-#
diff --git a/firmware/cpia2/stv0672_vp4.bin.ihex b/firmware/cpia2/stv0672_vp4.bin.ihex
deleted file mode 100644
index bd0b9cf65640..000000000000
--- a/firmware/cpia2/stv0672_vp4.bin.ihex
+++ /dev/null
@@ -1,73 +0,0 @@
-:1000000001BCE302E303E304E305E306E3079344EF
-:1000100056D4934E5651934E51D6934E4F54934EC1
-:10002000924F92A4930592F4931B929291E692368A
-:100030009274924A928C928EC8D00B4202A0CA92BD
-:100040000902C9100A0A0A81E3B8E3B0E3A8E3A0F1
-:10005000E398E390E100CFD70A12CC9508B20A18D2
-:10006000E10001EE0C084A12C818F09AC022F31CF5
-:100070004A13F314C8A0F214F21CEB13D3A26316B4
-:10008000489EF018A403F393C058F713519CE9203D
-:10009000CFEF63F9922ED35F63FA922ED36763FB9F
-:1000A000922ED36FE91A631648A7F020A406F394A2
-:1000B000C027F714F513519DF6136318C420CBEF36
-:1000C00063FC922ED37763FD922ED37F63FE922E34
-:1000D000D38763FF922ED38F6438922ED3976439DF
-:1000E000922ED39FE100F53AF43BF7BFF2BCF23D0C
-:1000F000E1008087908051D5022202324BD3F71164
-:100100000BDAE1000E0202400DB5E3024855E5129C
-:10011000A401E81BE390F018A401E8BF8DB84BD10F
-:100120004BD80BCB0BC2E100E302E30352D360597F
-:10013000E6930D2252D4E6930D2AE398E390E10072
-:10014000025D0263E302C81202CAC85202C2826898
-:10015000E302C81402CAC89002C20AD0C9930ADADC
-:10016000CCD20AE2631202DA0A980AA00AA8E39043
-:10017000E100E3020AD0C9930ADACCD20AE26312A0
-:1001800002DA0A980AA00AA84991E56AA404C812EA
-:1001900002CAC8528289C81402CAC89002C2E39037
-:1001A000E1000860E1004853E897085AE100E302E3
-:1001B000E30354D36059E6930D52E398E390E100D2
-:1001C000029CE3025513931755139317E390E10034
-:1001D0007530E302E30355556059E6930DB2E39899
-:1001E000E390E10002AEE792E918EA9AE898E81095
-:1001F000E811E851D2DAD2F3E813D2FAE850D2EAA1
-:10020000E8D0E8D1D30A03094823E52CA003482409
-:10021000EA1C0308D2E3D303D313E10002CB059316
-:100220005793F09AAC0BE30792EAE29FE506E3B03E
-:10023000A002EB1E82D7EA1EE23B859BE91EC89016
-:10024000859402DE05805793F0BAAC0692EAE2BFCD
-:10025000E506A001EBBF8588E93EC8908581E93EAF
-:10026000F0BAF339F03A6017F03AC090F0BAE10012
-:10027000003FE302E30358106059E6930DA25812C1
-:10028000E6930DAAE398E390E1000301E100030384
-:100290009B7D8B8BE302E30358566059E6930DBABE
-:1002A000E398E390E100030F9311E100E3024A11A8
-:1002B0000B4291AFE390E100F291F091A3FEE100D7
-:1002C0006092C05FF013F013595BE213F0115A19FA
-:1002D000E213E10000000327686176616E610006A9
-:1002E000032CE302E303E9385915595AF29ABC0B7F
-:1002F000A40A591EF311F01AE2BB5915F011192A7C
-:10030000E502A401EBBFE398E390E1000342192862
-:10031000E100E9306079E100E303E3076079934E9F
-:10032000E3B8E398E100E91AF01FE233F091E292BA
-:08033000E032F031E1000000B1
-:00000001FF
-
- Copyright 2001, STMicrolectronics, Inc.
- Contact: steve.miller@st.com
-
- Description:
- This file contains patch data for the CPiA2 (stv0672) VP4.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/firmware/cxgb3/ael2005_opt_edc.bin.ihex b/firmware/cxgb3/ael2005_opt_edc.bin.ihex
deleted file mode 100644
index c1d6e5d3bea7..000000000000
--- a/firmware/cxgb3/ael2005_opt_edc.bin.ihex
+++ /dev/null
@@ -1,69 +0,0 @@
-:10000000CC002FF4CC013CD4CC022015CC0331051C
-:10001000CC046524CC0527FFCC06300FCC072C8BF5
-:10002000CC08300BCC094009CC0A400ECC0B2F7207
-:10003000CC0C3002CC0D1002CC0E2172CC0F301241
-:10004000CC101002CC1125D2CC123012CC131002DD
-:10005000CC14D01ECC1527D2CC163012CC171002DF
-:10006000CC182004CC193C84CC1A6436CC1B200755
-:10007000CC1C3F87CC1D8676CC1E40B7CC1FA74634
-:10008000CC204047CC215673CC222982CC2330028D
-:10009000CC2413D2CC258BBDCC262862CC273012A1
-:1000A000CC281002CC292092CC2A3012CC2B100262
-:1000B000CC2C5CC3CC2D0314CC2E2942CC2F300287
-:1000C000CC301002CC31D019CC322032CC333012AB
-:1000D000CC341002CC352A04CC363C74CC37643591
-:1000E000CC382FA4CC393CD4CC3A6624CC3B5563D5
-:1000F000CC3C2D42CC3D3002CC3E13D2CC3F464DC1
-:10010000CC402862CC413012CC421002CC43203289
-:10011000CC443012CC451002CC462FB4CC473CD452
-:10012000CC486624CC495563CC4A2D42CC4B300296
-:10013000CC4C13D2CC4D2ED2CC4E3002CC4F100230
-:10014000CC502FD2CC513002CC521002CC530004F0
-:10015000CC542942CC553002CC561002CC572092B8
-:10016000CC583012CC591002CC5A5CC3CC5B03176C
-:10017000CC5C2F72CC5D3002CC5E1002CC5F294289
-:10018000CC603002CC611002CC6222CDCC63301D39
-:10019000CC642862CC653012CC661002CC672ED2BB
-:1001A000CC683002CC691002CC6A2D72CC6B300264
-:1001B000CC6C1002CC6D628FCC6E2112CC6F3012E1
-:1001C000CC701002CC715AA3CC722DC2CC73300209
-:1001D000CC741312CC756F72CC761002CC772807D2
-:1001E000CC7831A7CC7920C4CC7A3C24CC7B672452
-:1001F000CC7C1002CC7D2807CC7E3187CC7F20C4FC
-:10020000CC803C24CC816724CC821002CC83251482
-:10021000CC843C64CC856436CC86DFF4CC876436F1
-:10022000CC881002CC8940A4CC8A643CCC8B40168C
-:10023000CC8C8C6CCC8D2B24CC8E3C24CC8F643518
-:10024000CC901002CC912B24CC923C24CC93643AD9
-:10025000CC944025CC958A5ACC961002CC97273165
-:10026000CC983011CC991001CC9AC7A0CC9B01003E
-:10027000CC9CC502CC9D53ACCC9EC503CC9FD5D5A0
-:10028000CCA0C600CCA12A6DCCA2C601CCA32A4C1E
-:10029000CCA4C602CCA50111CCA6C60CCCA7590093
-:1002A000CCA8C710CCA90700CCAAC718CCAB0700B4
-:1002B000CCACC720CCAD4700CCAEC801CCAF7F5092
-:1002C000CCB0C802CCB17760CCB2C803CCB37FCE7F
-:1002D000CCB4C804CCB55700CCB6C805CCB75F11B8
-:1002E000CCB8C806CCB94751CCBAC807CCBB57E18B
-:1002F000CCBCC808CCBD2700CCBEC809CCBF000010
-:10030000CCC0C821CCC10002CCC2C822CCC30014CE
-:10031000CCC4C832CCC51186CCC6C847CCC71E02D7
-:10032000CCC8C013CCC9F341CCCAC01ACCCB04464C
-:10033000CCCCC024CCCD1000CCCEC025CCCF0A0074
-:10034000CCD0C026CCD10C0CCCD2C027CCD30C0C3A
-:10035000CCD4C029CCD500A0CCD6C030CCD70A0094
-:10036000CCD8C03CCCD9001CCCDAC005CCDB7A069A
-:10037000CCDC0000CCDD2731CCDE3011CCDF10012D
-:10038000CCE0C620CCE10000CCE2C621CCE3003FAB
-:10039000CCE4C622CCE50000CCE6C623CCE70000C6
-:1003A000CCE8C624CCE90000CCEAC625CCEB0000A2
-:1003B000CCECC627CCED0000CCEEC628CCEF00007C
-:1003C000CCF0C62CCCF10000CCF20000CCF3280617
-:1003D000CCF43CB6CCF5C161CCF66134CCF76135D8
-:1003E000CCF85443CCF90303CCFA6524CCFB000BC6
-:1003F000CCFC1002CCFD2104CCFE3C24CCFF21051A
-:10040000CD003805CD016524CD02DFF4CD034005D4
-:10041000CD046524CD051002CD065DD3CD070306BE
-:10042000CD082FF7CD0938F7CD0A60B7CD0BDFFD2A
-:10043000CD0C000ACD0D1002CD0E00007CC7AE59C8
-:00000001FF
diff --git a/firmware/cxgb3/ael2005_twx_edc.bin.ihex b/firmware/cxgb3/ael2005_twx_edc.bin.ihex
deleted file mode 100644
index 9b5e9e51fcb7..000000000000
--- a/firmware/cxgb3/ael2005_twx_edc.bin.ihex
+++ /dev/null
@@ -1,93 +0,0 @@
-:10000000CC004009CC0127FFCC02300FCC0340AA22
-:10001000CC04401CCC05401ECC062FF4CC073CD4AD
-:10002000CC082035CC093145CC0A6524CC0B26A25E
-:10003000CC0C3012CC0D1002CC0E29C2CC0F3002E9
-:10004000CC101002CC112072CC123012CC13100242
-:10005000CC1422CDCC15301DCC162E52CC1730121C
-:10006000CC181002CC1928E2CC1A3002CC1B10029A
-:10007000CC1C628FCC1D2AC2CC1E3012CC1F1002A9
-:10008000CC205553CC212AE2CC223002CC231302BF
-:10009000CC24401ECC252BE2CC263012CC271002DB
-:1000A000CC282DA2CC293012CC2A1002CC2B2BA28A
-:1000B000CC2C3002CC2D1002CC2E5EE3CC2F0305CD
-:1000C000CC30400ECC312BC2CC323002CC331002BB
-:1000D000CC342B82CC353012CC361002CC37566360
-:1000E000CC380302CC39401ECC3A6F72CC3B1002A4
-:1000F000CC3C628FCC3D2BE2CC3E3012CC3F100288
-:10010000CC4022CDCC41301DCC422E52CC433012BB
-:10011000CC441002CC452522CC463012CC471002EC
-:10012000CC482DA2CC493012CC4A1002CC4B2CA288
-:10013000CC4C3012CC4D1002CC4E2FA4CC4F3CD422
-:10014000CC506624CC51410BCC5256B3CC5303C493
-:10015000CC542FB2CC553002CC561002CC57220BC7
-:10016000CC58303BCC5956B3CC5A03C3CC5B866BCE
-:10017000CC5C400CCC5D23A2CC5E3012CC5F100274
-:10018000CC602DA2CC613012CC621002CC632CA2C8
-:10019000CC643012CC651002CC662FB4CC673CD452
-:1001A000CC686624CC6956B3CC6A03C3CC6B866B2F
-:1001B000CC6C401CCC6D2205CC6E3035CC6F5B53C3
-:1001C000CC702C52CC713002CC7213C2CC735CC395
-:1001D000CC740317CC752522CC763012CC77100264
-:1001E000CC782DA2CC793012CC7A1002CC7B2B8229
-:1001F000CC7C3012CC7D1002CC7E5663CC7F0303C6
-:10020000CC80401ECC810004CC822C42CC833012A6
-:10021000CC841002CC856F72CC861002CC87628FA2
-:10022000CC882304CC893C84CC8A6436CC8BDFF424
-:10023000CC8C6436CC8D2FF5CC8E3005CC8F865689
-:10024000CC90DFBACC9156A3CC92D05ACC9321C299
-:10025000CC943012CC951392CC96D05ACC9756A30E
-:10026000CC98DFBACC990383CC9A6F72CC9B1002E6
-:10027000CC9C28C5CC9D3005CC9E4178CC9F565354
-:10028000CCA00384CCA122B2CCA23012CCA3100209
-:10029000CCA42BE5CCA53005CCA641E8CCA7565381
-:1002A000CCA80382CCA90002CCAA4258CCAB2474BF
-:1002B000CCAC3C84CCAD6437CCAEDFF4CCAF64378F
-:1002C000CCB02FF5CCB13C05CCB28757CCB3B888B5
-:1002D000CCB49787CCB5DFF4CCB66724CCB7866AAC
-:1002E000CCB86F72CCB91002CCBA2D01CCBB301196
-:1002F000CCBC1001CCBDC620CCBE14E5CCBFC62101
-:10030000CCC0C53DCCC1C622CCC23CBECCC3C623EA
-:10031000CCC44452CCC5C624CCC6C5C5CCC7C625A2
-:10032000CCC8E01ECCC9C627CCCA0000CCCBC6289E
-:10033000CCCC0000CCCDC62BCCCE0000CCCFC62C74
-:10034000CCD00000CCD10000CCD22D01CCD33011C8
-:10035000CCD41001CCD5C620CCD60000CCD7C62139
-:10036000CCD80000CCD9C622CCDA00CECCDBC62358
-:10037000CCDC007FCCDDC624CCDE0032CCDFC62551
-:10038000CCE00000CCE1C627CCE20000CCE3C628DC
-:10039000CCE40000CCE5C62BCCE60000CCE7C62CB4
-:1003A000CCE80000CCE90000CCEA2D01CCEB301108
-:1003B000CCEC1001CCEDC502CCEE609FCCEFC600BA
-:1003C000CCF02A6ECCF1C601CCF22A2CCCF3C60CB0
-:1003D000CCF45400CCF5C710CCF60700CCF7C71806
-:1003E000CCF80700CCF9C720CCFA4700CCFBC728D3
-:1003F000CCFC0700CCFDC729CCFE1207CCFFC801FE
-:10040000CD007F50CD01C802CD027760CD03C80377
-:10041000CD047FCECD05C804CD06520ECD07C8054C
-:10042000CD085C11CD09C806CD0A3C51CD0BC807DB
-:10043000CD0C4061CD0DC808CD0E49C1CD0FC80906
-:10044000CD103840CD11C80ACD120000CD13C821FF
-:10045000CD140002CD15C822CD160046CD17C844D4
-:10046000CD18182FCD19C013CD1AF341CD1BC01ACA
-:10047000CD1C0446CD1DC024CD1E1000CD1FC025AF
-:10048000CD200A00CD21C026CD220C0CCD23C027C3
-:10049000CD240C0CCD25C029CD2600A0CD27C03001
-:1004A000CD280A00CD29C03CCD2A001CCD2B000050
-:1004B000CD2C2B84CD2D3C74CD2E6435CD2FDFF487
-:1004C000CD306435CD312806CD323006CD3385654B
-:1004D000CD342B24CD353C24CD366436CD371002B7
-:1004E000CD382B24CD393C24CD3A6436CD3B404524
-:1004F000CD3C8656CD3D1002CD3E2807CD3F31A7DD
-:10050000CD4020C4CD413C24CD426724CD431002D0
-:10051000CD442807CD453187CD4620C4CD473C2466
-:10052000CD486724CD491002CD4A2514CD4B3C64FB
-:10053000CD4C6436CD4DDFF4CD4E6436CD4F100238
-:10054000CD502806CD513CB6CD52C161CD5361345A
-:10055000CD546135CD555443CD560303CD57652455
-:10056000CD58000BCD591002CD5AD019CD5B2104C6
-:10057000CD5C3C24CD5D2105CD5E3805CD5F652485
-:10058000CD60DFF4CD614005CD626524CD632E8D55
-:10059000CD64303DCD655DD3CD660306CD672FF7C5
-:1005A000CD6838F7CD6960B7CD6ADFFDCD6B000A45
-:0C05B000CD6C1002CD6D000052A76B0E48
-:00000001FF
diff --git a/firmware/cxgb3/ael2020_twx_edc.bin.ihex b/firmware/cxgb3/ael2020_twx_edc.bin.ihex
deleted file mode 100644
index 8b1337f4c329..000000000000
--- a/firmware/cxgb3/ael2020_twx_edc.bin.ihex
+++ /dev/null
@@ -1,100 +0,0 @@
-:10000000D8004009D8012FFFD802300FD80340AAEA
-:10001000D804401CD805401ED8062FF4D8073DC48C
-:10002000D8082035D8093035D80A6524D80B2CB229
-:10003000D80C3012D80D1002D80E26E2D80F30227C
-:10004000D8101002D81127D2D8123022D81310029B
-:10005000D8142822D8153012D8161002D817249296
-:10006000D8183022D8191002D81A2772D81B30128B
-:10007000D81C1002D81D23D2D81E3022D81F10023F
-:10008000D82022CDD821301DD82227F2D8233022E3
-:10009000D8241002D8255553D8260307D82725225F
-:1000A000D8283022D8291002D82A2142D82B301241
-:1000B000D82C1002D82D4016D82E5E63D82F0344BA
-:1000C000D8302142D8313012D8321002D833400E05
-:1000D000D8342522D8353022D8361002D8372B52C2
-:1000E000D8383012D8391002D83A2742D83B3022BB
-:1000F000D83C1002D83D25E2D83E3022D83F10022D
-:10010000D8402FA4D8413DC4D8426624D843414B9F
-:10011000D84456B3D84503C6D846866BD847400C5A
-:10012000D8482712D8493012D84A1002D84B2C4B45
-:10013000D84C309BD84D56B3D84E03C3D84F866B9E
-:10014000D850400CD8512272D8523022D8531002C5
-:10015000D8542742D8553022D8561002D85725E215
-:10016000D8583022D8591002D85A2FB4D85B3DC481
-:10017000D85C6624D85D56B3D85E03C3D85F866B5F
-:10018000D860401CD8612C45D8623095D8635B5349
-:10019000D8642372D8653012D86613C2D8675CC39E
-:1001A000D8682712D8693012D86A1312D86B2B522C
-:1001B000D86C3012D86D1002D86E2742D86F30221A
-:1001C000D8701002D8712582D8723022D8731002EC
-:1001D000D8742142D8753012D8761002D877628F41
-:1001E000D8782985D87933A5D87A25E2D87B3022EA
-:1001F000D87C1002D87D5653D87E03D2D87F401EBB
-:10020000D8806F72D8811002D882628FD88323047D
-:10021000D8843C84D8856436D886DFF4D8876436A1
-:10022000D8882FF5D8893005D88A8656D88BDFBA7A
-:10023000D88C56A3D88DD05AD88E2972D88F301228
-:10024000D8901392D891D05AD89256A3D893DFBAA7
-:10025000D8940383D8956F72D8961002D8972B45FF
-:10026000D8983005D8994178D89A5653D89B0384AA
-:10027000D89C2A62D89D3012D89E1002D89F2F0594
-:10028000D8A03005D8A141C8D8A25653D8A303821C
-:10029000D8A40002D8A54218D8A62474D8A73C84B4
-:1002A000D8A86437D8A9DFF4D8AA6437D8AB2FF51B
-:1002B000D8AC3C05D8AD8757D8AEB888D8AF9787AB
-:1002C000D8B0DFF4D8B16724D8B2866AD8B36F72D9
-:1002D000D8B41002D8B52641D8B63021D8B710010D
-:1002E000D8B8C620D8B90000D8BAC621D8BB0000FB
-:1002F000D8BCC622D8BD00CED8BEC623D8BF007F8A
-:10030000D8C0C624D8C10032D8C2C625D8C3000080
-:10031000D8C4C627D8C50000D8C6C628D8C700008C
-:10032000D8C8C62CD8C90000D8CA0000D8CB2641EE
-:10033000D8CC3021D8CD1001D8CEC502D8CF53ACFF
-:10034000D8D0C503D8D12CD3D8D2C600D8D32A6EE2
-:10035000D8D4C601D8D52A2CD8D6C605D8D7555753
-:10036000D8D8C60CD8D95400D8DAC710D8DB0700C3
-:10037000D8DCC711D8DD0F06D8DEC718D8DF0700D4
-:10038000D8E0C719D8E10F06D8E2C720D8E3470064
-:10039000D8E4C721D8E50F06D8E6C728D8E7070074
-:1003A000D8E8C729D8E91207D8EAC801D8EB7F50A6
-:1003B000D8ECC802D8ED7760D8EEC803D8EF7FCE6E
-:1003C000D8F0C804D8F1520ED8F2C805D8F35C11A1
-:1003D000D8F4C806D8F53C51D8F6C807D8F740611C
-:1003E000D8F8C808D8F949C1D8FAC809D8FB3840A4
-:1003F000D8FCC80AD8FD0000D8FEC821D8FF0002EA
-:10040000D900C822D9010046D902C844D903182FFF
-:10041000D904C013D905F341D906C084D9070030E7
-:10042000D908C904D9091401D90ACB0CD90B000485
-:10043000D90CCB0ED90DA00AD90ECB0FD90FC0C045
-:10044000D910CB10D911C0C0D912CB11D91300A02B
-:10045000D914CB12D9150007D916C241D917A0005B
-:10046000D918C243D9197FE0D91AC604D91B000E86
-:10047000D91CC609D91D00F5D91EC611D91F000EF9
-:10048000D920C660D9219600D922C687D923000475
-:10049000D924C60AD92504F5D9260000D927264132
-:1004A000D9283021D9291001D92AC620D92B14E501
-:1004B000D92CC621D92DC53DD92EC622D92F3CBE57
-:1004C000D930C623D9314452D932C624D933C5C50F
-:1004D000D934C625D935E01ED936C627D93700000C
-:1004E000D938C628D9390000D93AC62CD93B0000E2
-:1004F000D93C0000D93D2B84D93E3C74D93F6435AA
-:10050000D940DFF4D9416435D9422806D9433006B1
-:10051000D9448565D9452B24D9463C24D94764362E
-:10052000D9481002D9492B24D94A3C24D94B6436E6
-:10053000D94C4045D94D8656D94E5663D94F030202
-:10054000D950401ED9511002D9522807D95331A78A
-:10055000D95420C4D9553C24D9566724D957100200
-:10056000D9582807D9593187D95A20C4D95B3C2496
-:10057000D95C6724D95D1002D95E24F4D95F3C644C
-:10058000D9606436D961DFF4D9626436D963100268
-:10059000D9642006D9653D76D966C161D9676134D1
-:1005A000D9686135D9695443D96A0303D96B652485
-:1005B000D96C00FBD96D1002D96E20D4D96F3C24C0
-:1005C000D9702025D9713005D9726524D9731002EC
-:1005D000D974D019D9752104D9763C24D97721054D
-:1005E000D9783805D9796524D97ADFF4D97B4005E3
-:1005F000D97C6524D97D2E8DD97E303DD97F2408C4
-:10060000D98035D8D9815DD3D9820307D98388872A
-:10061000D98463A7D9858887D98663A7D987DFFD61
-:10062000D98800F9D9891002D98A0000878C30D97D
-:00000001FF
diff --git a/firmware/cxgb3/t3b_psram-1.1.0.bin.ihex b/firmware/cxgb3/t3b_psram-1.1.0.bin.ihex
deleted file mode 100644
index 140893005171..000000000000
--- a/firmware/cxgb3/t3b_psram-1.1.0.bin.ihex
+++ /dev/null
@@ -1,162 +0,0 @@
-:10000000FFFFFFFC000000000000000300000000F4
-:1000100000010100FFFFFFFC0000000000000003E2
-:100020000000000000000000FFFFFFFC00000000D7
-:10003000000000030000000000000000FFFFFFFCC4
-:1000400000000000000000030000000000000000AD
-:10005000FFFFFFFC000000000000000300000000A4
-:1000600000000000FFFFFFFC000000000000000394
-:100070000000000000000000FFFFFFFC0000000087
-:10008000000000030000000000000000FFFFFFFC74
-:10009000000000000000000300000000000000005D
-:1000A000FFFFFFFC00000000000000030000000054
-:1000B00000000000FFFFFFFC000000000000000344
-:1000C0000000000000000000FFFFFFFC0000000037
-:1000D000000000030000000000000000FFFFFFFC24
-:1000E000000000000000000300000000000000000D
-:1000F000FFFFFFFC00000000000000030000000004
-:1001000000000000FFFFFFFC0000000000000003F3
-:100110000000000000000000FFFFFFFBD03403E6FA
-:1001200080262A430000000000000000FFFFFFF8C7
-:10013000007000000000000200000081C604000002
-:10014000FFFFFFFC000000000000000300000000B3
-:1001500000000000FFFFFFFC0000000000000003A3
-:100160000000000000000000FFFFFFFC0000000096
-:10017000000000030000000000000000FFFFFFFC83
-:10018000000000000000000300000000000000006C
-:10019000FFFFFFFC00000000000000030000000063
-:1001A00000000000FFFFFFFC000000000000000353
-:1001B0000000000000000000FFFFFFFBD03403E25E
-:1001C000802829230000000000000000FFFFFFF846
-:1001D0000600023701C5C00013940481C6057000F3
-:1001E000FFFFFFF88200020637030803000000004B
-:1001F00000000000FFFFFFFC000000000000000204
-:10020000208000818DF40000FFFFFFFC0000000053
-:10021000000000030000000000000000FFFFFFFCE2
-:1002200000000000000000030000000000000000CB
-:10023000FFFFFFFC000000000000000300000000C2
-:1002400000000000FFFFFFFC0000000000000003B2
-:100250000000000000000000FFFFFFF9C4310000B3
-:1002600000282C830000000000000000FFFFFFF0CA
-:100270004E70021D00C5C00000000001C118000042
-:10028000FFFFFFFC00000000000000030000000072
-:1002900000000000FFFFFFFC000000000000000362
-:1002A0000000000000000000FFFFFFFC0000000055
-:1002B000000000030000000000000000FFFFFFFC42
-:1002C000000000000000000300000000000000002B
-:1002D000FFFFFFFC00000000000000030000000022
-:1002E00000000000FFFFFFFC000000000000000312
-:1002F0000000000000000000FFFFFFF1C00003E667
-:10030000802828230000000000000000FFFFFFFC01
-:1003100000000000000000021394040000017000BF
-:10032000FFFFFFFC000000000000000300000000D1
-:1003300000000000FFFFFFFC0000000000000003C1
-:100340000000000000000000FFFFFFFC00000000B4
-:10035000000000030000000000000000FFFFFFFCA1
-:10036000000000000000000300000000000000008A
-:10037000FFFFFFFC00000000000000030000000081
-:1003800000000000FFFFFFFC000000000000000371
-:100390000000000000000000FFFFFFFA103400041E
-:1003A000000001030000000000000000FFFFFFF05C
-:1003B0006000000620030802700000F080259A907B
-:1003C000FFFFFFFC00000000000000030000000031
-:1003D00000000000FFFFFFFC000000000000000321
-:1003E0000000000000000000FFFFFFFC0000000014
-:1003F000000000030000000000000000FFFFFFFC01
-:1004000000000000000000030000000000000000E9
-:10041000FFFFFFF1C83102060A000242000000811E
-:1004200080000000FFFFFFF9C83103C60A962A4288
-:100430000000008180000000FFFFFFF00431000495
-:10044000000004030000000000000000FFFFFFF0B8
-:1004500020B000000000000213940401C1197000D4
-:10046000FFFFFFFC00000000000000000000000192
-:1004700000001000FFFFFFFC000000000000000370
-:100480000000000000000000FFFFFFFC0000000073
-:10049000000000030000000000000000FFFFFFFC60
-:1004A0000000000000000003000000000000000049
-:1004B000FFFFFFF00000000400004000680C200176
-:1004C00000001090FFFFFFF9C031C3E600266A402C
-:1004D0000000000100001000FFFFFFFA10F4000010
-:1004E000000002430000000000000000FFFFFFF8D2
-:1004F0006050080000000000700C20F080259A90E9
-:10050000FFFFFFF0060000000100400000000001B6
-:1005100000001000FFFFFFFC0000000000000002D0
-:10052000288C108085C01000FFFFFFFC0000000039
-:10053000000000030000000000000000FFFFFFFCBF
-:1005400000000000000000030000000000000000A8
-:10055000FFFFFFFC0000000000000003000000009F
-:1005600000000000FFFFFFFC00000000000000038F
-:100570000000000000000000FFFFFFF04E00000040
-:10058000000000030000000000000000FFFFFFF17A
-:10059000C00002DE00061A40000000829035C00054
-:1005A000FFFFFFFC0000000000000003000000004F
-:1005B00000000000FFFFFFFC00000000000000033F
-:1005C0000000000000000000FFFFFFFC0000000032
-:1005D000000000030000000000000000FFFFFFFC1F
-:1005E0000000000000000003000000000000000008
-:1005F000FFFFFFFC000000000000000300000000FF
-:1006000000000000FFFFFFF1CA31C3C20A966A432F
-:100610000000000000000000FFFFFFF84E501439FA
-:100620001CC5C0030000000000000000FFFFFFF039
-:100630000000000000000002288C108085C010001F
-:10064000FFFFFFFC000000000000000300000000AE
-:1006500000000000FFFFFFFC00000000000000039E
-:100660000000000000000000FFFFFFFC0000000091
-:10067000000000030000000000000000FFFFFFFC7E
-:100680000000000000000003000000000000000067
-:10069000FFFFFFFC0000000000000003000000005E
-:1006A00000000000FFFFFFF3CA3323D60E966A4313
-:1006B0000000000000000000FFFFFFF8000004063B
-:1006C00020D002430000000000000000FFFFFFF800
-:1006D00000D0000000000000000000839031C00046
-:1006E000FFFFFFFC0000000000000003000000000E
-:1006F00000000000FFFFFFFC0000000000000003FE
-:100700000000000000000000FFFFFFFC00000000F0
-:10071000000000030000000000000000FFFFFFFCDD
-:1007200000000000000000030000000000000000C6
-:10073000FFFFFFFC000000000000000300000000BD
-:1007400000000000FFFFFFF3CA33E3D60E966A43B2
-:100750000000000000000000FFFFFFF000501A1032
-:10076000003002430000000000000000FFFFFFF81F
-:100770000000020620030800700000F990118A9022
-:10078000FFFFFFFC0000000000000003000000006D
-:1007900000000000FFFFFFFC00000000000000035D
-:1007A0000000000000000000FFFFFFFC0000000050
-:1007B000000000030000000000000000FFFFFFFC3D
-:1007C0000000000000000003000000000000000026
-:1007D000FFFFFFFC0000000000000003000000001D
-:1007E00000000000FFFFFFFC00000000000000030D
-:1007F0000000000000000000FFFFFFF9C0501BA632
-:1008000000D202430000000000000000FFFFFFF0E4
-:100810004000020700100002700000E890344A9087
-:10082000FFFFFFFC000000000000000300000000CC
-:1008300000000000FFFFFFFC0000000000000003BC
-:100840000000000000000000FFFFFFFC00000000AF
-:10085000000000030000000000000000FFFFFFFC9C
-:100860000000000000000003000000000000000085
-:10087000FFFFFFFC0000000000000003000000007C
-:1008800000000000FFFFFFFC00000000000000036C
-:100890000000000000000000FFFFFFFA10F4020853
-:1008A00000C002430000000000000000FFFFFFF056
-:1008B0000000000000000000728CC8D893891090DE
-:1008C000FFFFFFF082900000030000030000000023
-:1008D00000000000FFFFFFFC00000000000000031C
-:1008E0000000000000000000FFFFFFFC000000000F
-:1008F000000000030000000000000000FFFFFFFCFC
-:1009000000000000000000030000000000000000E4
-:10091000FFFFFFFC000000000000000300000000DB
-:1009200000000000FFFFFFFC0000000000000003CB
-:100930000000000000000000FFFFFFF000000000CA
-:10094000000000030000000000000000FFFFFFF2B5
-:1009500000000320002612430000000000000000F9
-:10096000FFFFFFF040000203101000030000000032
-:1009700000000000FFFFFFFC00000000000000037B
-:100980000000000000000000FFFFFFFC000000006E
-:10099000000000030000000000000000FFFFFFFC5B
-:1009A0000000000000000003000000000000000044
-:1009B000FFFFFFFC0000000000000003000000003B
-:1009C00000000000FFFFFFFC00000000000000032B
-:1009D0000000000000000000FFFFFFF1D03403E63C
-:1009E00080262A430000000000000000FFFFFFF205
-:1009F0000834023000C005030000000000000000C1
-:040A000070EAA57F74
-:00000001FF
diff --git a/firmware/cxgb3/t3c_psram-1.1.0.bin.ihex b/firmware/cxgb3/t3c_psram-1.1.0.bin.ihex
deleted file mode 100644
index c6504803852f..000000000000
--- a/firmware/cxgb3/t3c_psram-1.1.0.bin.ihex
+++ /dev/null
@@ -1,162 +0,0 @@
-:10000000FFFFFFF4000000040000000100000001F9
-:1000100000010100FFFFFFF40000000400000001E8
-:100020000000000100000000FFFFFFF400000004DA
-:10003000000000010000000100000000FFFFFFF4CD
-:1000400000000004000000010000000100000000AA
-:10005000FFFFFFF4000000040000000100000001A9
-:1000600000000000FFFFFFF400000004000000019A
-:100070000000000100000000FFFFFFF4000000048A
-:10008000000000010000000100000000FFFFFFF47D
-:10009000000000040000000100000001000000005A
-:1000A000FFFFFFF400000004000000010000000159
-:1000B00000000000FFFFFFF400000004000000014A
-:1000C0000000000100000000FFFFFFF4000000043A
-:1000D000000000010000000100000000FFFFFFF42D
-:1000E000000000040000000100000001000000000A
-:1000F000FFFFFFF400000004000000010000000109
-:1001000000000000FFFFFFF40000000400000001F9
-:100110000000000100000000FFFFFFF3D03403E205
-:1001200080262A410000000100000000FFFFFFF8C8
-:10013000007000000000000000000080C604000005
-:10014000FFFFFFF4000000040000000100000001B8
-:1001500000000000FFFFFFF40000000400000001A9
-:100160000000000100000000FFFFFFF40000000499
-:10017000000000010000000100000000FFFFFFF48C
-:100180000000000400000001000000010000000069
-:10019000FFFFFFF400000004000000010000000168
-:1001A00000000000FFFFFFF4000000040000000159
-:1001B0000000000100000000FFFFFFFBD03403E25D
-:1001C000802829210000000100000000FFFFFFF847
-:1001D0000600023701C5C00213940480C6057000F2
-:1001E000FFFFFFF88200020637030801000000014C
-:1001F00000000000FFFFFFF400000004000000000A
-:10020000208000808DF40000FFFFFFF40000000458
-:10021000000000010000000100000000FFFFFFF4EB
-:1002200000000004000000010000000100000000C8
-:10023000FFFFFFF4000000040000000100000001C7
-:1002400000000000FFFFFFF40000000400000001B8
-:100250000000000100000000FFFFFFF9C4310000B2
-:1002600000282C810000000100000000FFFFFFF0CB
-:100270004E70021D00C5C00200000000C118000041
-:10028000FFFFFFF400000004000000010000000177
-:1002900000000000FFFFFFF4000000040000000168
-:1002A0000000000100000000FFFFFFF40000000458
-:1002B000000000010000000100000000FFFFFFF44B
-:1002C0000000000400000001000000010000000028
-:1002D000FFFFFFF400000004000000010000000127
-:1002E00000000000FFFFFFF4000000040000000118
-:1002F0000000000100000000FFFFFFF1C00003E666
-:10030000802828210000000100000000FFFFFFF40A
-:1003100000000004000000021394040000017000BB
-:10032000FFFFFFF4000000040000000100000001D6
-:1003300000000000FFFFFFF40000000400000001C7
-:100340000000000100000000FFFFFFF400000004B7
-:10035000000000010000000100000000FFFFFFF4AA
-:100360000000000400000001000000010000000087
-:10037000FFFFFFF400000004000000010000000186
-:1003800000000000FFFFFFF4000000040000000177
-:100390000000000100000000FFFFFFFA103400041D
-:1003A000000001010000000100000000FFFFFFF05D
-:1003B0006000000620030802700000F080259A907B
-:1003C000FFFFFFF400000004000000010000000136
-:1003D00000000000FFFFFFF4000000040000000127
-:1003E0000000000100000000FFFFFFF40000000417
-:1003F000000000010000000100000000FFFFFFF40A
-:1004000000000004000000010000000100000000E6
-:10041000FFFFFFF9C83102020A000242000000811A
-:1004200080000000FFFFFFF1C83103C20A962A4294
-:100430000000008180000000FFFFFFF00431000495
-:10044000000004010000000100000000FFFFFFF8B1
-:1004500020B000040000000013940400C1197000D3
-:10046000FFFFFFF400000004000000020000000095
-:1004700000001000FFFFFFF4000000040000000176
-:100480000000000100000000FFFFFFF40000000476
-:10049000000000010000000100000000FFFFFFF469
-:1004A0000000000400000001000000010000000046
-:1004B000FFFFFFF80000000000004000680C200172
-:1004C00000001090FFFFFFF9C031C3E600266A422A
-:1004D0000000000000001000FFFFFFF210F4000415
-:1004E000000002410000000100000000FFFFFFF0DB
-:1004F0006050080400000002700C20F180259A90E2
-:10050000FFFFFFF8060000040100400200000000A9
-:1005100000001000FFFFFFF40000000400000002D4
-:10052000288C108085C01000FFFFFFF4000000043D
-:10053000000000010000000100000000FFFFFFF4C8
-:1005400000000004000000010000000100000000A5
-:10055000FFFFFFF4000000040000000100000001A4
-:1005600000000000FFFFFFF4000000040000000195
-:100570000000000100000000FFFFFFF04E0000003F
-:10058000000000010000000100000000FFFFFFF973
-:10059000C00002DA00061A42000000839035C00055
-:1005A000FFFFFFF400000004000000010000000154
-:1005B00000000000FFFFFFF4000000040000000145
-:1005C0000000000100000000FFFFFFF40000000435
-:1005D000000000010000000100000000FFFFFFF428
-:1005E0000000000400000001000000010000000005
-:1005F000FFFFFFF400000004000000010000000104
-:1006000000000000FFFFFFF9CA31C3C60A966A4125
-:100610000000000100000000FFFFFFF84E501439F9
-:100620001CC5C0010000000100000000FFFFFFF03A
-:100630000000000000000002288C108085C010001F
-:10064000FFFFFFF4000000040000000100000001B3
-:1006500000000000FFFFFFF40000000400000001A4
-:100660000000000100000000FFFFFFF40000000494
-:10067000000000010000000100000000FFFFFFF487
-:100680000000000400000001000000010000000064
-:10069000FFFFFFF400000004000000010000000163
-:1006A00000000000FFFFFFF3CA3323D60E966A4115
-:1006B0000000000100000000FFFFFFF8000004063A
-:1006C00020D002410000000100000000FFFFFFF801
-:1006D00000D0000000000000000000839031C00046
-:1006E000FFFFFFF400000004000000010000000113
-:1006F00000000000FFFFFFF4000000040000000104
-:100700000000000100000000FFFFFFF400000004F3
-:10071000000000010000000100000000FFFFFFF4E6
-:1007200000000004000000010000000100000000C3
-:10073000FFFFFFF4000000040000000100000001C2
-:1007400000000000FFFFFFFBCA33E3D20E966A41B0
-:100750000000000100000000FFFFFFF000501A1031
-:10076000003002410000000100000000FFFFFFF028
-:100770000000020220030800700000F990118A9026
-:10078000FFFFFFF400000004000000010000000172
-:1007900000000000FFFFFFF4000000040000000163
-:1007A0000000000100000000FFFFFFF40000000453
-:1007B000000000010000000100000000FFFFFFF446
-:1007C0000000000400000001000000010000000023
-:1007D000FFFFFFF400000004000000010000000122
-:1007E00000000000FFFFFFF4000000040000000113
-:1007F0000000000100000000FFFFFFF1C0501BA23D
-:1008000000D202410000000100000000FFFFFFF8DD
-:100810004000020300100002700000E890344A908B
-:10082000FFFFFFF4000000040000000100000001D1
-:1008300000000000FFFFFFF40000000400000001C2
-:100840000000000100000000FFFFFFF400000004B2
-:10085000000000010000000100000000FFFFFFF4A5
-:100860000000000400000001000000010000000082
-:10087000FFFFFFF400000004000000010000000181
-:1008800000000000FFFFFFF4000000040000000172
-:100890000000000100000000FFFFFFFA10F4020852
-:1008A00000C002410000000100000000FFFFFFF057
-:1008B0000000000000000002728CC8D993891090DB
-:1008C000FFFFFFF082900000030000010000000124
-:1008D00000000000FFFFFFF4000000040000000122
-:1008E0000000000100000000FFFFFFF40000000412
-:1008F000000000010000000100000000FFFFFFF405
-:1009000000000004000000010000000100000000E1
-:10091000FFFFFFF4000000040000000100000001E0
-:1009200000000000FFFFFFF40000000400000001D1
-:100930000000000100000000FFFFFFF000000000C9
-:10094000000000010000000100000000FFFFFFF2B6
-:1009500000000320002612410000000100000000FA
-:10096000FFFFFFF040000203101000010000000133
-:1009700000000000FFFFFFF4000000040000000181
-:100980000000000100000000FFFFFFF40000000471
-:10099000000000010000000100000000FFFFFFF464
-:1009A0000000000400000001000000010000000041
-:1009B000FFFFFFF400000004000000010000000140
-:1009C00000000000FFFFFFF4000000040000000131
-:1009D0000000000100000000FFFFFFF9D03403E237
-:1009E00080262A410000000100000000FFFFFFF206
-:1009F0000834023000C005010000000100000000C2
-:040A000070EAA741B0
-:00000001FF
diff --git a/firmware/dsp56k/bootstrap.asm b/firmware/dsp56k/bootstrap.asm
deleted file mode 100644
index a411047e6db3..000000000000
--- a/firmware/dsp56k/bootstrap.asm
+++ /dev/null
@@ -1,98 +0,0 @@
-; Author: Frederik Noring <noring@nocrew.org>
-;
-; This file is subject to the terms and conditions of the GNU General Public
-; License. See the file COPYING in the main directory of this archive
-; for more details.
-
-; DSP56k loader
-
-; Host Interface
-M_BCR EQU $FFFE ; Port A Bus Control Register
-M_PBC EQU $FFE0 ; Port B Control Register
-M_PBDDR EQU $FFE2 ; Port B Data Direction Register
-M_PBD EQU $FFE4 ; Port B Data Register
-M_PCC EQU $FFE1 ; Port C Control Register
-M_PCDDR EQU $FFE3 ; Port C Data Direction Register
-M_PCD EQU $FFE5 ; Port C Data Register
-
-M_HCR EQU $FFE8 ; Host Control Register
-M_HSR EQU $FFE9 ; Host Status Register
-M_HRX EQU $FFEB ; Host Receive Data Register
-M_HTX EQU $FFEB ; Host Transmit Data Register
-
-; SSI, Synchronous Serial Interface
-M_RX EQU $FFEF ; Serial Receive Data Register
-M_TX EQU $FFEF ; Serial Transmit Data Register
-M_CRA EQU $FFEC ; SSI Control Register A
-M_CRB EQU $FFED ; SSI Control Register B
-M_SR EQU $FFEE ; SSI Status Register
-M_TSR EQU $FFEE ; SSI Time Slot Register
-
-; Exception Processing
-M_IPR EQU $FFFF ; Interrupt Priority Register
-
- org P:$0
-start jmp <$40
-
- org P:$40
-; ; Zero 16384 DSP X and Y words
-; clr A #0,r0
-; clr B #0,r4
-; do #64,<_block1
-; rep #256
-; move A,X:(r0)+ B,Y:(r4)+
-;_block1 ; Zero (32768-512) Program words
-; clr A #512,r0
-; do #126,<_block2
-; rep #256
-; move A,P:(r0)+
-;_block2
-
- ; Copy DSP program control
- move #real,r0
- move #upload,r1
- do #upload_end-upload,_copy
- movem P:(r0)+,x0
- movem x0,P:(r1)+
-_copy movep #4,X:<<M_HCR
- movep #$c00,X:<<M_IPR
- and #<$fe,mr
- jmp upload
-
-real
- org P:$7ea9
-upload
- movep #1,X:<<M_PBC
- movep #0,X:<<M_BCR
-
-next jclr #0,X:<<M_HSR,*
- movep X:<<M_HRX,A
- move #>3,x0
- cmp x0,A #>1,x0
- jeq <$0
-_get_address
- jclr #0,X:<<M_HSR,_get_address
- movep X:<<M_HRX,r0
-_get_length
- jclr #0,X:<<M_HSR,_get_length
- movep X:<<M_HRX,y0
- cmp x0,A #>2,x0
- jeq load_X
- cmp x0,A
- jeq load_Y
-
-load_P do y0,_load_P
- jclr #0,X:<<M_HSR,*
- movep X:<<M_HRX,P:(r0)+
-_load_P jmp next
-load_X do y0,_load_X
- jclr #0,X:<<M_HSR,*
- movep X:<<M_HRX,X:(r0)+
-_load_X jmp next
-load_Y do y0,_load_Y
- jclr #0,X:<<M_HSR,*
- movep X:<<M_HRX,Y:(r0)+
-_load_Y jmp next
-
-upload_end
- end
diff --git a/firmware/dsp56k/bootstrap.bin.ihex b/firmware/dsp56k/bootstrap.bin.ihex
deleted file mode 100644
index 233f21fe72b0..000000000000
--- a/firmware/dsp56k/bootstrap.bin.ihex
+++ /dev/null
@@ -1,26 +0,0 @@
-:100000000C004000000000000000000000000000A4
-:1000100000000000000000000000000000000000E0
-:1000200000000000000000000000000000000000D0
-:1000300000000000000000000000000000000000C0
-:1000400000000000000000000000000000000000B0
-:1000500000000000000000000000000000000000A0
-:100060000000000000000000000000000000000090
-:100070000000000000000000000000000000000080
-:100080000000000000000000000000000000000070
-:100090000000000000000000000000000000000060
-:1000A0000000000000000000000000000000000050
-:1000B0000000000000000000000000000000000040
-:1000C00060F40000004F61F400007EA9062E80005D
-:1000D000004707D88407598408F4A800000408F4EE
-:1000E000BF000C0000FEB80AF080007EA908F4A052
-:1000F00000000108F4BE0000000AA980007EAD08DF
-:100100004E2B44F40000000344F4450000010EA00F
-:10011000000AA980007EB508502B0AA980007EB88D
-:1001200008462B44F4450000020AF0AA007EC920CC
-:1001300000450AF0AA007ED006C600007EC60AA9C5
-:1001400080007EC408586B0AF080007EAD06C600B1
-:10015000007ECD0AA980007ECB0858AB0AF0800053
-:100160007EAD06C600007ED40AA980007ED2085863
-:07017000EB0AF080007EADF8
-:00000001FF
-/* DSP56001 bootstrap code */
diff --git a/firmware/e100/d101m_ucode.bin.ihex b/firmware/e100/d101m_ucode.bin.ihex
deleted file mode 100644
index 12971ed458a6..000000000000
--- a/firmware/e100/d101m_ucode.bin.ihex
+++ /dev/null
@@ -1,38 +0,0 @@
-:10000000150255003704FFFFFFFFFFFF8907A70612
-:10001000FFFFFFFFFFFF580501000C001213100047
-:1000200008000C00160238009C001000564020000A
-:10003000CC802300560038009C0010000B4C24009C
-:1000400000080000184812003804380000000000C2
-:1000500000001400550538000080300062061000D2
-:100060006105100008040E006148130002000C0036
-:10007000933010000080300024061000610510004D
-:1000800008040E00610810007E000C00212C2200E4
-:1000900002000C00933010007A0C380000000800B9
-:1000A000903010007A0C38000000000000000000C2
-:1000B00000000000000000009C0010002D4C2400F7
-:1000C000040001000010040037043A00104004004E
-:1000D0008A07380000000000990010007A6C2000A8
-:1000E0009C001000484C24002408130001000C0060
-:1000F00013121000750C260000100400040001000B
-:100100002608130006000C00A806220026C91300CA
-:1001100013131000A80638000000000000000000C3
-:1001200000000000000000000000000000000000CF
-:10013000000000000000000000060800101B100076
-:10014000040005002608100010121000340C3800BE
-:1001500000000000000000005B1521009900100065
-:10016000596520009C0010005945240036081300F2
-:1001700000000C00620C220001000C00131B100098
-:100180000E9C22000E0C21000E6C22000E6C210031
-:100190000EFC22000E5C21000E4C2100550538009B
-:1001A0000400010000100400678C27000008040010
-:1001B0000081010037043A002608130001000C00FA
-:1001C00059052200131310005905380000000000E3
-:1001D000000000000000000000000000000000001F
-:1001E00000000000000000000000000031081300C3
-:1001F0000B0910001348120080FF0C00AB0626000C
-:100200000010040004000100A806380000000000EF
-:0B02100000000000000000004E417ED6
-:00000001FF
-/********************************************************/
-/* Micro code for 8086:1229 Rev 8 */
-/********************************************************/
diff --git a/firmware/e100/d101s_ucode.bin.ihex b/firmware/e100/d101s_ucode.bin.ihex
deleted file mode 100644
index 102c7feb666e..000000000000
--- a/firmware/e100/d101s_ucode.bin.ihex
+++ /dev/null
@@ -1,38 +0,0 @@
-:10000000420255007E04FFFFFFFFFFFF1808FF06B6
-:10001000FFFFFFFFFFFFA60501000C0012131000F9
-:1000200008000C00430238009C00100056402000DD
-:10003000D0802300560038009C0010008B4F240015
-:1000400000080000184812007F043800000000007B
-:1000500000001400A30538000080300010061000D6
-:100060006105100008040E006148130002000C0036
-:10007000933010000080300024061000610510004D
-:1000800008040E00610810007E000C00A12F220061
-:1000900002000C0093301000900F380000000800A0
-:1000A00090301000900F38000000000000000000A9
-:1000B00000000000000000009C001000AD4F240074
-:1000C00004000100001004007E043A001040040007
-:1000D000190838000000000099001000FD6F200092
-:1000E0009A001000FDAF20009C001000C84F2400B3
-:1000F0002408130001000C0013121000F70F260053
-:1001000000100400040001002608130006000C0083
-:100110000007220026C9130013131000000738003F
-:1001200000000000000000000000000000000000CF
-:10013000000000000000000000060800101B100076
-:10014000040005002608100010121000B60F380039
-:100150000000000000000000A91521009900100017
-:10016000A76520009A001000A7A520009C001000A1
-:10017000A74524003608130000000C00E40F2200FD
-:1001800001000C00131B10008E9F22008E0F210017
-:100190008E6F22008E6F21008EFF22008E5F210065
-:1001A0008E4F2100A3053800040001000010040058
-:1001B000E98F270000080400008101007E043A0056
-:1001C0002608130001000C00A705220013131000DD
-:1001D000A70538000000000000000000000000003B
-:1001E000000000000000000000000000000000000F
-:1001F00000000000310813000B0910001348120022
-:1002000080FF0C000307260000100400040001001A
-:0B02100000073800000000004E438093
-:00000001FF
-/********************************************************/
-/* Micro code for 8086:1229 Rev 9 */
-/********************************************************/
diff --git a/firmware/e100/d102e_ucode.bin.ihex b/firmware/e100/d102e_ucode.bin.ihex
deleted file mode 100644
index 9e806da854de..000000000000
--- a/firmware/e100/d102e_ucode.bin.ihex
+++ /dev/null
@@ -1,38 +0,0 @@
-:100000008F027D00F904420E850CED14E914FA14F8
-:10001000360EF70EFF1FFF1FB914E00000000000AE
-:100020000000000000000000BD14E000000000001F
-:100030000000000000000000D514E00000000000F7
-:1000400000000000000000000000000000000000B0
-:100050000000000000000000C114E00000000000EB
-:100060000000000000000000000000000000000090
-:100070000000000000000000000000000000000080
-:100080000000000000000000000000000000000070
-:100090000000000000000000C814E00000000000A4
-:1000A000000000000000000000062000EE14E00048
-:1000B000000000000000000080FF3000460E9400A9
-:1000C0000082030000201000430EE000000000004A
-:1000D000000000000000000006003000FB14E000FB
-:1000E0000000000000000000000000000000000010
-:1000F0000000000000000000000000000000000000
-:1001000000000000000000000000000000000000EF
-:100110000000000000000000416E90003C0E8000D6
-:10012000390EE00000000000FD6E9000FD0E900012
-:10013000F80EE000000000000000000000000000D9
-:1001400000000000000000000000000000000000AF
-:10015000000000000000000000000000000000009F
-:10016000000000000000000000000000000000008F
-:10017000000000000000000000000000000000007F
-:10018000000000000000000000000000000000006F
-:10019000000000000000000000000000000000005F
-:1001A000000000000000000000000000000000004F
-:1001B000000000000000000000000000000000003F
-:1001C000000000000000000000000000000000002F
-:1001D000000000000000000000000000000000001F
-:1001E000000000000000000000000000000000000F
-:1001F00000000000000000000000000000000000FF
-:1002000000000000000000000000000000000000EE
-:0B02100000000000000000002A362E55
-:00000001FF
-/********************************************************/
-/* Micro code for the 8086:1229 Rev F/10 */
-/********************************************************/
diff --git a/firmware/edgeport/boot.H16 b/firmware/edgeport/boot.H16
deleted file mode 100644
index 4bf8e91a975a..000000000000
--- a/firmware/edgeport/boot.H16
+++ /dev/null
@@ -1,29 +0,0 @@
-:0004000000010C0002ED
-:000200000400FFFB
-:000600000002008002000373
-:0003000B0002000BE5
-:00030013000201B82F
-:0003001B0002001BC5
-:0003002300020023B5
-:0003002B0002002BA5
-:000300330002003395
-:0003003B0002003B85
-:00030043000201BDFA
-:0003004B000201D0DF
-:000300530002012186
-:0003007B0002007B05
-:01660080007EB0007AB33FF27EF800237E00017E100012075F6920000ABE240000780575900D800375901DD2B57E0000A5D8FD75A80075B100A9D587CA291209CC1209A0F5097AA1201201E6DA29A9D0C77E00057A01F175E110A9D7F4A9D7E4A5D8F175F10075E13F75A20375A30075C00075C100A9D1B1A9D0B1A9D5D3D2AFE47E0428008DEF1B0478FA04A934D30330E0EEBE240000780563903080E3B29580DFBEB00222C0D0A920DF0FA931DF030201B575080112083380FE7508FE12083375A8007EB33FF230E04B300146C2927E2480007E1109740819B20010740E19B200042E240100A5D9ED7E2480007E1109E4D5E0FD09B2000820E00A09B2000009B2001880EB2E240100A5D9E4439030D2AA8005D2AA439034D2AFA9D1870000000000A911DF03A9D2DF7508FF120833C0D1CA02FFCA06830032D0D032C28BC2AA32750808120833A9C0B1A9C5D3A9C6D3A9D2B132CAB8750802120833E5C0540368051201EE80F5DAB832AE
-:00011BCA00001A
-:064D01E600E47AB33FF1020263CA0BCA1BCA2BCA3BCA4BCA5BCA6BCA7BCAEBC0F17EB3012BB400028019B4011630C00875F10012024D801F30C11C75F1001202DE801430C10875F1001202DE800930C00675F10012024DD0F1DAEBDA7BDA6BDA5BDA4BDA3BDA2BDA1BDA0B22C2C07EB3012BB4020712026F02026322B401FC0202A97E00007A03012B7A03012C227EB3012354606005B4401580137EB30124B4050C7508711208337EB30126F58F2275F60022BE57012928047E5701297A0F012E7A5701320202A97EEF012E7EF701327E0701324D0068217E00007EEBB0F5F3A3A5081BF46804A5B808F07AEF012E7AF701327508061208337A01F622C2C1750803120833A936E216E5F554C06807A9D7F4A927F4FC53E13F43F2880203557EB3012CB4020FA9D4E47EB0007AB3012C7AB3012B22B401397E21E67C327E13012D2C217A23012D7E00002E040134E5E37A09B00B04A5DBF6A9D4E47508701208337EB3012D7EA3012ABCAB78031203EC22020755E5E6B40865A9C4E27E01E37E11E37E31E37E21E37E51E37E41E37E71E37E61E37A0F01237A1F01277508041208337A01081208337A11081208337A21081208337A31081208337A41081208337A51081208337A61081208337A7108120833A9D4E4A9D7F4A9C6E21203C0226D007E1401027A0701327A03012D7EB3012320E70F7A23012C7A33012BBE0701296809227A33012C7A23012B7EB3012354E3232330E002D2E530E702D2E430E50630E403020755543EF5F003541FC325F09004187584FF7302056C0204600206090206240205050204C602063D02063D0206400206400206400206400206400206400206400206400206460206FA0206430206430206430206430206430206437EB30124B4062A7EB3012560567C0B7E1301267E1701277508721208337A01081208337A110812083312075F4035020294B408107508741208337EB33FF1F5F375F60122B4001C7508751208337EB33FF230E00575F302800375F30075F30075F602220207557EB30124B400357508761208337EB30128540FF5F17EB3012820E709E5E130E70D7401800BE5E130E60474018002740053F180F5F375F30075F60222020755C0F17EB30128540F42F17EB30126B400457EB30124B401247508771208337EB30128540F780553E13F80377EB3012820E70553E17F802B53E1BF8026B403177508781208337EB3012820E70543E180801143E140800C43E1C0D0F175080712083322D0F10202907EB30124B409237508791208337EB30126BEB33FF16811CAB8C0F112011DD0F1DAB850767AB33FF1806DB4050875087A1208338062B4031975087B1208337EB30126B401557EB33FF244017AB33FF28046B4011975087C1208337EB30126B401397EB33FF254FE7AB33FF2802AB4072A7EB3012560247C0B7E1301267E1701277508731208337A01081208337A110812083312078B40030202900207557EB30124B40BF675087D1208337EB301267EA301284CAB78E480DF7EB30124B40ADB75087E1208337EB3012670CFF5F375F601220207550207550207557EB30124B404207508C31208337E0400017E1701257E1801347A1C00007E47012912083F0206F4B4063A7508C11208337E5800007A5C00FE7DCA7ED701257E7801347A7C00007E7701297508C1120833C0A8C087C2AFA9D5871208D6D087D0A8404F804AB4001CC2AFA9D587120290E48DEF8DEF8DEFD5E0F7C0D1CA02FFCA06000032B409127E5701254D556805A9D2B18003A9C2B18016B40716C2AF7E0701277E170125C0D1CA18CA38CA28320202900207557EB30124B403157508C21208337E0400017E1701257E570129020294B405397508C0120833C0A8C087C2AFA9D5877E0801347A0C00007E2400FE7E3701257E47012912083FD087D0A87E0801347A0C00007E57012902029402075575080712083343E1C022C0A8C087C2AFA9D5871207CA40197E0801347A0C0000CA0BCA4912083FDA59DA0BD087D0A8C322D087D0A822C0A8C087C2AFA9D5871207CA402B7E5800007A5C00FE7F617E7801347A7C00007E770129BD7478117508C11208331208D64006D087D0A8C322D087D0A8D3227E2400FE7E347FCA0B1A50C5F07D627D757D877E347F037E1BB0BC0B50493E003E000A502D750B3A3069530002BD3850022D38BC1B50303E103E100A512D35694100020B1A30BD3850022D38BE44FFFF78057E1B900A494D44680CBE4400FF28047E4400FFC322D32234
-:00407FC00040010200CA1B010C0200007C0000010000000000000000000000000000000000000000000000000000000000000000000000000000000000F17F0000000000005D
-:1397083300CA087E01087A033FF0DA082280500B1A600B350B1A700B350B1A800B350B1A900B350B1AA00B350B1AB00B350B1AC00B350B1AD00B351B0A600B151B0A700B151B0A800B151B0A900B151B0AA00B151B0AB00B151B0AC00B151B0AD00B159E44001050AA2E440010680E7E1BC07A0BC00B140B341B4478F2227F6F7FF01BFC7C547D328008CA1BCA1BCA1BCA1B9E44001050F22E4400106806CA481B4478FA7FF689E4CA6B5ED4003F68207E8400409D8DDA6BBD873816CA797D78120900DA7940089D7868028005C2D722DA6B43903074AA39B55555745539B52AAA74A039B555557E0400409D7050062D707D076D777C317E7B007A6B000B7C0B6CA5D9F37F161B1C7E5427107E1B10BC1068061B5478F5802C6D007C207F169F107F279F207E2B007E1B10BC0178160B2C0B1CA5DBEF7CB620E0036390304D777893C2D722D2D7220004000400000604020400020104010200000000000000000202020202040008100210040208000101087E187FBD7A1C00FF0B1A00BE1014381A0A51237E1809767A1C00FF2D350B1A506008A5B802034EA0082280FE7EE87FBF7AEC00FFE0F52254C068167EE87FBE7AEC00FFE0600C1209A0F5097AA120020F0A22C295D2941219FB5390CF1219FB80F10D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A45646765706F72742F34202D20486172647761726520446961676E6F73746963732C2052657620312E30303B20436F70797269676874203139393820496E73696465204F7574204E6574776F726B730D0A0050617373004641494C202121005061737320202020004641494C20212120000D0A4465746563742052616D3A2020202020202020202020202020202020202020000D0A52616D20546573743A20202020202020202020202020202020202020202020000D0A416464726573732062697420302D313420746573743A202020202020202020000D0A57726F746520416464726573733A2030303A0020207769746820646174613A20002C20616E6420726561643A20000D0A4F6E65206F7220626F7468206F662074686520666F6C6C6F77696E6720416464726573732062697473206C6973746564206172652073686F727465640D0A746F20736F6D657468696E673A200020616E6420000D0A44657465637420556172743A20202020202020202020202020202020202020000D0A53637261746368205061642C4669466F20456E61626C652026205253543A20000D0A0A202020556172742054657374732020202020202020202020202020202020202020506F727431202020506F727432202020506F727433202020506F7274340D0A2020202020202020202020202020202020202020202020202020202020202020202D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D000D0A506F7274204465636F6465723A2020202020202020202020202020202020202020000D0A4469676974616C204C6F6F706261636B3A20202020202020202020202020202020000D0A416E616C6F67204C6F6F706261636B3A2020202020202020202020202020202020000D0A5258442C54584420746F205254532C4354532C52492053686F72743A2020202020000D0A5258442C54584420746F204454522C4453522C43442053686F72743A2020202020000D0A5254535B4354532C52495D20746F204454522C4453522C43442053686F72743A20000D0A5254535B4354532C43445D20746F204453522C52492053686F72743A2020202020000D0A4454525B4453522C43445D20746F205254532C4354532C52492053686F72743A20000D0A44545220746F204354532C43442053686F72743A20202020202020202020202020000D0A52545320746F204354532C5249204C6F6F706261636B3A20202020202020202020000D0A52545320746F204354532C4344204C6F6F706261636B3A20202020202020202020000D0A44545220746F204453522C4344204C6F6F706261636B3A20202020202020202020000D0A0A2020204520522052204F2052202121212C204520522052204F205220212121202C204520522052204F2052202121210D0A0A446961676E6F7374696373206E6F772077696C6C20656E7465722061206465627567206C6F6F70206F6620746865206669727374206465746563746564206572726F722E000D0A0A4E6F204861726477617265206572726F72732064657465637465642E0D0A00436F7079696E6720636F64652066726F6D204D617374657220746F20536C617665277320454570726F6D202E2E2E00446F6E650D0A0A2D3E205475726E20756E6974206F66662C20646973636F6E6E656374206361626C6520616E642072756E207374616E64616C6F6E6520646961676E6F73746963732E00C2AFC209C20A75900D201702D2B54390306C007E1003120F387E680A017A6C00FF121A930B0030B4028024021B3C20091DC294D2951219FB5390CF1219FBC295D2941219FBA5D9E64390301219FB227E680A947A6C00FF121A937EE410007E40557AE9400BE47E50AA7AE9501BE4BEE94068197E680A7A7A6C00FF121A93121A083009137AE9407EE91080F87E680A757A6C00FF121A930B007E680AD87A6C00FF121A937E7800007E700E7EA4FFFF7EB4BFFF7DCB0EC47DDC5DDB6CBB7DFA5EF47FFF7A7BB00BB07DFB5EF47FFF7A7BB00BB07DFC5EF47FFF7A7BB00BB07DFD5EF47FFF7A7BB06CBB7DFA5EF47FFFBE7BB078410BB07DFB5EF47FFFBE7BB078340BB07DFC5EF47FFFBE7BB078270BB07DFD5EF47FFFBE7BB0781A0BB0BEC4FFFE78920EB4A5DF8B7E680A827A6C00FF121A938077CA5BCA6B7E680A8B7A6C00FF121A937E680B2A7A6C00FF121A930A47121AC97E680B797A6C00FF121A936C77DA6BCA6B0B700EC4BEC4FFFF78F61B700A47121AC9121A08300930DA6BDA5B6CBB7E7800007DFA5EF47FFF7A7BB07DFB5EF47FFF7A7BB07DFC5EF47FFF7A7BB07DFD5EF47FFF7A7BB080D47E680AB67A6C00FF121A9330170E7E7804207A7C00007E447BE0800C7E7800007A7C00017E4480000B007E403A7C547F577D846C667A5B500B5C0B50A5DE020B501B8478F07C547F577D846C66BE5B50781A0B5C0B50A5DE020B501B8478EE7E680A757A6C00FF121A93804B7F457E680A7A7A6C00FF121A937E680AFA7A6C00FF121A937D4B121AC97E680B0F7A6C00FF121A936C887C95121AC97E680B1D7A6C00FF121A937E4B90121AC9121A083009057E4B9080FB7E680B7F7A6C00FF121A930B00D2927E24800009B20008BEB001780B09B20014BEB060780280177E680A7A7A6C00FF121A93121A0830091109B2000880FA7E680A757A6C00FF121A937E680BA17A6C00FF121A930B00C2921219EE7E2480007EA05519A2001C7EB00119B2000809B2001CBCAB783709B200085EB0C0BEB0C0782B7EA0AA19A2001C6CBB19B2000809B2001CBCAB781609B200085EB0C0780D7E680A757A6C00FF121A93801B7E680A7A7A6C00FF121A93121A0830090A19A2001C09B2001C80F67E680BC37A6C00FF121A937E680C457A6C00FF121A937E2480007E11097EB00119B2001C2E2401000BB0A5D9F37E2480007E11097EB0010B0009A2001CBCAB78167E680A827A6C00FF121A932E2401000BB0A5D9E280257E680A8B7A6C00FF121A93121A083009E47E2480007E110909A2001C2E240100A5D9F580EC7E680C697A6C00FF121A9312138A7E2480007E11090B00741019B200101213032E240100A5D9EE7E680C8D7A6C00FF121A937E2480007E11090B00E419B200101213032E240100A5D9EF3000030218B70213BB740719B200081219FB09B2000009B2001409B2000009B2001409B2000009B2001409B2000009B20014C20B7EB0551213647EB0AA1213647EB0001213647EB0FF121364300B0F7E680A8B7A6C00FF121A93121A08227E680A827A6C00FF121A932219B200001219EE09A20000BCAB780122200903D20B22121A0819B200001219EE09A2000080F3D2921219EEC2921219EE7E2480007E1109748019B2000C7E54000219A2000419B20000740319B2000C2E240100A5D9E1227E680CB17A6C00FF121A937E2480007E11090B001219EE09B200187EA05519A200001219EE09B200185EB005780D7E680A827A6C00FF121A93801A7E680A8B7A6C00FF121A93121A0830090919A200001219EE80F72E240100A5D9B67E680CD57A6C00FF121A937E2480007E11090B001219EE09B200187EA05519A200001219EE09B200185EB00A780D7E680A827A6C00FF121A93801A7E680A8B7A6C00FF121A93121A0830090919A200001219EE80F72E240100A5D9B630040302168C7E680CF97A6C00FF121A937E2480007E11090B006CAA19A200101219EE09B200187EA00219A200106CAA19A200101219EE09B200185EB00A783C7EA00119A200101219EE09B200187EA00319A200107EA00119A200101219EE09B200185EB00A78147E680A827A6C00FF121A932E240100A5D99E80207E680A8B7A6C00FF121A93121A083009E67EA00219A200106CAA19A2001080F17E680D417A6C00FF121A937E2480007E11090B006CAA19A200101219EE09B200187EA00119A200106CAA19A200101219EE09B200185EB005783C7EA00219A200101219EE09B200187EA00319A200107EA00219A200101219EE09B200185EB00578147E680A827A6C00FF121A932E240100A5D99E80207E680A8B7A6C00FF121A93121A083009E67EA00119A200106CAA19A2001080F17E680D897A6C00FF121A937E2480007E11090B007EA00219A200101219EE09B200185EB050BEB050781F6CAA19A200101219EE09B200185EB050780D7E680A827A6C00FF121A9380207E680A8B7A6C00FF121A93121A0830090F7EA00219A200106CAA19A2001080F12E240100A5D9A27E680DD17A6C00FF121A937E2480007E11090B0009B200187EA00119A200101219EE09B200185EB0A0BEB0A0781F6CAA19A200101219EE09B200185EB0A0780D7E680A827A6C00FF121A9380207E680A8B7A6C00FF121A93121A0830090F7EA00119A200106CAA19A2001080F12E240100A5D99E02182B7E680D1D7A6C00FF121A937E2480007E11090B006CAA19A200101219EE09B200187EA00219A200106CAA19A200101219EE09B200185EB006783C7EA00119A200101219EE09B200187EA00319A200107EA00119A200101219EE09B200185EB00678147E680A827A6C00FF121A932E240100A5D99E80207E680A8B7A6C00FF121A93121A083009E67EA00219A200106CAA19A2001080F17E680D657A6C00FF121A937E2480007E11090B006CAA19A200101219EE09B200187EA00119A200106CAA19A200101219EE09B200185EB009783C7EA00219A200101219EE09B200187EA00319A200107EA00219A200101219EE09B200185EB00978147E680A827A6C00FF121A932E240100A5D99E80207E680A8B7A6C00FF121A93121A083009E67EA00119A200106CAA19A2001080F17E680DAD7A6C00FF121A937E2480007E11090B007EA00219A200101219EE09B200185EB090BEB090781F6CAA19A200101219EE09B200185EB090780D7E680A827A6C00FF121A9380207E680A8B7A6C00FF121A93121A0830090F7EA00219A200106CAA19A2001080F12E240100A5D9A20218B730170302193BC28A1219227E2480007E11096CAA19A200041219EE0B007EA00819A200101219EE208B3E20893B7EA00819A2000409A200104EA00219A200101219EE308B2330892009A200105EA0FD19A200101219EE7EA00019A200041219EE208B05208902801A121A083009147EA00219A2001000005EA0FD19A20010000080EC2E240100A5D98902193B2017FA12138A1219227E2480007E11090B002089267EA0FF19A200041219EE7EB05519B200001219EE30890F7EA00019A200041219EE2089028026121A083009207EA0FF19A200041219EE7EB05519B200001219EE7EA00019A200041219EE80E02E240100A5D9A802193B7E2480007E11097EA00819A200101219EE2E240100A5D9EF22300A197E680DF57A6C00FF121A93D2091219EE1219EE1219EE020F1030171C7E680E6F7A6C00FF121A937E680E917A6C00FF121A93121B3C0219E60B007E7819A07A7C00FF7F677A6C00007E703E7E7BB07A6BB00B7C0B6CA5DFF37E7819A07A7C000089787E7800007A7C00FE7E687FBF7A6C00FE74AA39B75555745539B72AAA74A039B755556C997A6B907E5427107E6B80BC8968081B5478F58AFF19DE8AFF19E6121A087E6B8080FB7E10FF121A8580F8CAF97EF400FF1BF478FCDAF922CAF97EF400001BF478FCDAF922200919D20A1219FBC295D2941219FB1219FB1219FB1219FB43903022CA0B7E10037C306C220B209E300A50F92E300B1B2068181219FB1219FB5390CF1219FB1219FB1219FB439030A5DAE81219FB1219FB1B3068191219FB1219FBC295D2941219FB1219FB1219FB439030A5DBE77E200A1219FBA5DAFAA5D9A7DA0B2220090A1219FBB2941219FBB2942230173220092FCA2BCA7B7E7880007A7C00FE121B1C7E6BA05CAA681029B70014546068F839A700000B6C80E91219EED2B5DA7BDA2B22121AD47E68000B121A9322CA59CA5B7EB4000B7CB8C4121B047CB8121B047CB9C4121B047CB9121B047EB0687AB9B00BB46CBB7AB9B0DA59DA5B225EB00F7CAB9EA00A40052EB03780032EB0307AB9B00BB422C2B5C2921219EE748039B7000C7E54000639A7000439B70000740339B7000C227E7800007A7C00FF7E5800007A5C00017F657E7420001208D640547E787C007A7C00FF7E5800007A5C00017E687C007A6C00017E7404001208D640337480121BB1402C5390CFD2087E0400087E14000084A5DBFCA5DAF9A5D9F67440121BB1400E7E680EC07A6C00FF121A930219E6C295D29480FEF50A7E78000A7A7C00007E687FBF7A6C00017E7400010208D6D2
-:0000000001FF
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//* This program is free software; you can redistribute it and/or modify
-//* it under the terms of the GNU General Public License as published by
-//* the Free Software Foundation; either version 2 of the License, or
-//* (at your option) any later version.
-//**************************************************************
diff --git a/firmware/edgeport/boot2.H16 b/firmware/edgeport/boot2.H16
deleted file mode 100644
index 8b14295e1f3e..000000000000
--- a/firmware/edgeport/boot2.H16
+++ /dev/null
@@ -1,28 +0,0 @@
-:000400000002000003F7
-:000200000400FFFB
-:000600000002008002000373
-:0003000B0002000BE5
-:000300130002025690
-:0003001B0002001BC5
-:0003002300020023B5
-:0003002B0002002BA5
-:000300330002003395
-:0003003B0002003B85
-:000300430002004375
-:0003004B0002004B65
-:00030053000201F5B2
-:0003007B0002007B05
-:02160080007EB3910120E30C7EB33FF254FE7AB33FF2800A7EB33FF244017AB33FF274007AB3910074017AB391127EF800247E00017E10001209D06920000A5E401FBE24000078097E00037A03900080077E00027A03900075B0DF7E00017A0394007A0301247E00017A0393007E0000A5D8FD75A80075B100CA29120C66120C37F5217AA120200908200A0A7EB00C80087EB00080037EB0087AB39200120296DA2974107AB391017E20047CB2C2D7131313137AB3910074007AB3911074607AB3911C74027AB39112A5DADF74007AB3910074607AB3911C74107AB3910674107AB3910774347AB39113743F7AB3911474027AB3910674017AB3910774037AB3910674447AB3910774EF7AB3910474077AB391067EB391077AB10A750901D2AAD2AFE47E60024D2278037E60037C767E0428008DEF1B0478FA047E20077A2391067E2391077E310ABC3268227A210A7E21096817CAB874037AB391067EB3910744027AB39107DAB875090030E0C16C677A63900080B9BEB00222C0D07508FE120AC074027AB3910674007AB3910774037AB3910674007AB3910774027AB391047EB33FF230E00874187AB39101800674107AB3910174107AB391040202367508FF120AC074017AB3910474037AB391067EB3910754FC7AB3910732CAB8750802120AC07EB3910320E50830E02B12029E80F17EB3910430E005DAB802023930E105DAB80201F530E60512040380D530E205DAB802008080CBDAB8326D
-:082A029600E47AB33FF1020341CA0BCA1BCA2BCA3BCA4BCA5BCA6BCA7BCAEB74007AB391007EB3012EB40002801CB401197EB391145414680512030580237EB3911430E51C12044380177EB3911430E505120443800B7EB3911454146803120305DAEBDA7BDA6BDA5BDA4BDA3BDA2BDA1BDA0B2220E41975080A120AC07EB3012D700A7EB3012EB4011F02039D02098B75080B120AC074147AB391147EB3012EB4020C12034D02034174047AB39114227E00007A03012E7A03012F227EB3012554606005B4401E801C7EB30126B40515750871120AC07EB301287EA0017AA391067AB391072274007AB3910074107AB3911222BE57012B28047E57012B7A0F01317A57013574107AB391122274007AB391007EB3911A70537EB3911420E44C7EEF01317EF701357E0701354D0068217E0000E07AB39117A3A5081BF46806A5B810F080197EB0007AB3012EBE0010680D7EB0007AB3012E74807AB3911E7AEF01317AF70135750806120AC074047AB3911422CA0BCA1BCA2BCA3BCA4BCA5BCA6BCA7BCAEB750803120AC074007AB3012D74007AB3910074017AB391121204B2DAEBDA7BDA6BDA5BDA4BDA3BDA2BDA1BDA0B22750803120AC07EB3012FB4021174007AB3012F7AB3012E74207AB3911422B401467EB3910420E6427E23911A7C327E1301302C217A2301307E00002E0401377EB391167A09B00B04A5DBF474207AB39114750870120AC07EB301307EA3012CBCAB78031205522202098BDA5902041574E07AB391007E0391107E1391117E3391127E2391137E5391147E4391157E7391167E6391177A0F01257A1F0129750804120AC07A0108120AC07A1108120AC07A2108120AC07A3108120AC07A4108120AC07A5108120AC07A6108120AC07A7108120AC074007AB3910074407AB39104120526226D007E1401027A0701357A0301307EB3012520E70F7A23012F7A33012EBE07012B6809227A33012F7A23012E7EB3012554E3232330E002D2E530E702D2E430E50630E40302098B543EF5F003541FC325F090057E7584FF730207390205C60207D20207ED0206D002065B02081E02081E0208210208210208210208210208210208210208210208210208270208F902082402082402082402082402082402082474007AB3910074607AB3911C7EB30126B4062A7EB3012760797C0B7E1301287E170129750872120AC07A0108120AC07A1108120AC01209D04058020384B4081C750874120AC07EB33FF17E0801377A0C00007A0BB07E540001020384B40033750875120AC07E0801377A0C0000CA0B7EB33FF230E00774027A0BB0800574007A0BB00B1474007A0BB07E540002DA0B02038402098B74007AB3910074607AB3911C7EB30126B4005F750876120AC07EB3012A540FB402057EB0608017B400057EB000800F7EB3012A20E7057EB04080037EB0207AB391007EB3911130E0047401800274007E0801377A0C0000CA0B7A0BB00B1474007A0BB074007AB391007E540002DA0B02038402098B7EB3012A540FB402057EB0608017B400057EB000800F7EB3012A20E7057EB04080037EB0207AB391007EB30128B400267EB30126B4010E750877120AC074017AB39112801BB4030E750878120AC074017AB39111800A74007AB3910012098B2274007AB391000203777EB30126B4091F750879120AC07EB30128BEB33FF1680DCAB81201F1DAB850767AB33FF1806DB4050875087A120AC08062B4031975087B120AC07EB30128B401557EB33FF244017AB33FF28046B4011975087C120AC07EB30128B401397EB33FF254FE7AB33FF2802AB4072A7EB3012760247C0B7E1301287E170129750873120AC07A0108120AC07A1108120AC0120A0A400302037702098B7EB30126B40BF675087D120AC07EB301287EA3012A4CAB78E480DF74007AB3910074607AB3911C7EB30126B40ACF75087E120AC07EB3012870C37E0801377A0C00007A0BB07E54000102038402098B02098B02098B7EB30126B404207508C3120AC07E0400017E1701277E1801377A1C00007E47012B120ACC0208F3B406427508C1120AC07E5800007A5C00FE7DCA7ED701277E7801377A7C00007E77012B7508C1120AC0C0A8C2AF7E40017A439400120B637E4301247A439400D0A840658060B40024C2AF7EB0017AB394007AB30124120377E48DEF8DEF8DEFD5E0F7C0D1CA02FFCA06000032B4092074037AB391067E2391077E5701274D5568054E200280035E20FD7A2391078016B40716C2AF7E0701297E170127C0D1CA18CA38CA283202037702098B74007AB3910074607AB3911C7EB30126B403157508C2120AC07E0400017E1701277E57012B020384B405417508C0120AC0C0A8C2AF7E40017A4394007E0801377A0C00007E2400FE7E3701277E47012B120ACC7E4301247A439400D0A87E0801377A0C00007E57012B020384B401207E00007E1001750872120AC07A0108120AC07A1108120AC01209D0400302038402098B750807120AC07EB0027AB3900074007AB3910074407AB3911574017AB391117EB391155460BEB040680874207AB3911580ED74017AB3911274047AB3911474FF7AB3012D22C0A8C2AF7E40017A439400120A57401F7E0801377A0C0000CA0BCA49120ACCDA59DA0B7E4301247A439400D0A8C3227E4301247A439400D0A822C0A8C2AF7E40017A439400120A5740317E5800007A5C00FE7F617E7801377A7C00007E77012BBD7478177508C1120AC0120B63400C7E4301247A439400D0A8C3227E4301247A439400D0A8D3227E2400FE7E347FCA0B1A50C5F07D627D757D877E347F037E1BB0BC0B50493E003E000A502D750B3A3069530002BD3850022D38BC1B50303E103E100A512D35694100020B1A30BD3850022D38BE44FFFF78057E1B900A494D44680CBE4400FF28047E4400FFC322D32248
-:00407FC00040010200D73102000300007C0000010000000000000000000000000000000000000000000000000000000000000000000000000000000000F17F00000000000044
-:10430AC000CA087E01087A033FF0DA082280500B1A600B350B1A700B350B1A800B350B1A900B350B1AA00B350B1AB00B350B1AC00B350B1AD00B351B0A600B151B0A700B151B0A800B151B0A900B151B0AA00B151B0AB00B151B0AC00B151B0AD00B159E44001050AA2E440010680E7E1BC07A0BC00B140B341B4478F2227F6F7FF01BFC7C547D328008CA1BCA1BCA1BCA1B9E44001050F22E4400106806CA481B4478FA7FF689E4CA6B5ED4003F68207E8400409D8DDA6BBD873816CA797D78120B8DDA7940089D7868028005C2D722DA6B7EC0037ED0007AD3900074AA39B55555745539B52AAA74A039B555557E0400409D7050062D707D076D777C317E7B007A6B000B7C0B6CA5D9F37F161B1C7E5427107E1B10BC1068061B5478F5802F6D007C207F169F107F279F207E2B007E1B10BC0178190B2C0B1CA5DBEF7CB620E0066CDC7AD390004D777890C2D722D2D7220004000400000604020400020104010200000000000000000202020202040008100210040208000101087E187FBD7A1C00FF0B1A005E101FBE1014381A0A51237E180C0D7A1C00FF2D350B1A506008A5B802034EA0082280FE7EE87FBF7AEC00FFE0F52354C068387EE87FBE7AEC00FFE0602E120C37F5217AA12020090C200A127EB00E7AB3920080107EB0027AB3920080077EB00A7AB392007AB10D020CC4227EB0027AB3900012190C7EB0037AB3900012190C80EAC2AFC211C21275B0DF7E00017A0393007E00007A0390006C007E1003120CF57E682C667A6C00FF1219C40B008032021A6E20112B7EB0017AB3900012190C7EB0037AB3900012190C7EB0027AB3900012190CA5D9DC7EB0007AB3900012190C227E682CF97A6C00FF1219C47EE410007E40557AE9400BE47E50AA7AE9501BE4BEE94068197E682CDF7A6C00FF1219C41219193011137AE9407EE91080F87E682CDA7A6C00FF1219C40B007E682D3D7A6C00FF1219C47E7800007E700E7EA4FFFF7EB4BFFF7DCB0EC47DDC5DDB6CBB7DFA5EF47FFF7A7BB00BB07DFB5EF47FFF7A7BB00BB07DFC5EF47FFF7A7BB00BB07DFD5EF47FFF7A7BB06CBB7DFA5EF47FFFBE7BB078410BB07DFB5EF47FFFBE7BB078340BB07DFC5EF47FFFBE7BB078270BB07DFD5EF47FFFBE7BB0781A0BB0BEC4FFFE78920EB4A5DF8B7E682CE77A6C00FF1219C48077CA5BCA6B7E682CF07A6C00FF1219C47E682D8F7A6C00FF1219C40A471219FA7E682DDE7A6C00FF1219C46C77DA6BCA6B0B700EC4BEC4FFFF78F61B700A471219FA121919301130DA6BDA5B6CBB7E7800007DFA5EF47FFF7A7BB07DFB5EF47FFF7A7BB07DFC5EF47FFF7A7BB07DFD5EF47FFF7A7BB080D47E682D1B7A6C00FF1219C4301F0E7E7804207A7C00007E447BE0800C7E7800007A7C00017E4480000B007E403A7C547F577D846C667A5B500B5C0B50A5DE020B501B8478F07C547F577D846C66BE5B50781A0B5C0B50A5DE020B501B8478EE7E682CDA7A6C00FF1219C4804B7F457E682CDF7A6C00FF1219C47E682D5F7A6C00FF1219C47D4B1219FA7E682D747A6C00FF1219C46C887C951219FA7E682D827A6C00FF1219C47E4B901219FA1219193011057E4B9080FB7E682E287A6C00FF1219C40B007EB0807AB391007EA0557AA391107EB391077EB39110BCAB78207EA0AA7AA391107EB391077EB39110BCAB780D7E682CDA7A6C00FF1219C4801B7E682CDF7A6C00FF1219C412191930110A7AA391107EB3911080F67E682E4A7A6C00FF1219C41212310B007EE410007EA0A5CAA87AE9A07EB0307AB395007EE9A07EB0007AB3950012190C0BE57EB0207AB395007EE9B07EB0007AB395007EE9B0DAA8BCAB780D7E682CDA7A6C00FF1219C4801D7E682CDF7A6C00FF1219C412191930110C7EB0387AB395007EE9B080FB80007E682DE47A6C00FF1219C40B0075B0DF7E24800009B20008BEB001780B09B20014BEB060780280177E682CDF7A6C00FF1219C412191930111109B2000880FA7E682CDA7A6C00FF1219C47E682E067A6C00FF1219C40B0075B0EF1218FF7E2480007EA05519A2001C7EB00119B2000809B2001CBCAB783709B200085EB0C0BEB0C0782B7EA0AA19A2001C6CBB19B2000809B2001CBCAB781609B200085EB0C0780D7E682CDA7A6C00FF1219C4801B7E682CDF7A6C00FF1219C412191930110A19A2001C09B2001C80F67E682E6C7A6C00FF1219C47E682EEE7A6C00FF1219C47E2480007E11217EB00119B2001C2E2401000BB0A5D9F37E2480007E11217EB0010B0009A2001CBCAB78167E682CE77A6C00FF1219C42E2401000BB0A5D9E280257E682CF07A6C00FF1219C41219193011E47E2480007E112109A2001C2E240100A5D9F580EC7E682F127A6C00FF1219C41212317E2480007E11210B00741019B200101211AA2E240100A5D9EE7E682F367A6C00FF1219C47E2480007E11210B00E419B200101211AA2E240100A5D9EF30000302173B02126A740719B2000812190C09B2000009B2001409B2000009B2001409B2000009B2001409B2000009B20014C2137EB05512120B7EB0AA12120B7EB00012120B7EB0FF12120B30130F7E682CF07A6C00FF1219C4121919227E682CE77A6C00FF1219C42219B200001218FF09A20000BCAB780122201103D2132212191919B200001218FF09A2000080F375B0DF1218FF75B0EF1218FF7E2480007E1121748019B2000C7E54000219A2000419B20000740319B2000C740619B200082E240100A5D9DB227E682F5A7A6C00FF1219C47E2480007E11210B001218FF09B200187EA05519A200001218FF09B200185EB005780D7E682CE77A6C00FF1219C4801A7E682CF07A6C00FF1219C412191930110919A200001218FF80F72E240100A5D9B67E682F7E7A6C00FF1219C47E2480007E11210B001218FF09B200187EA05519A200001218FF09B200185EB00A780D7E682CE77A6C00FF1219C4801A7E682CF07A6C00FF1219C412191930110919A200001218FF80F72E240100A5D9B630040302159F7E682FA27A6C00FF1219C47E2480007E11210B006CAA19A200101218FF09B200187EA00219A200106CAA19A200101218FF09B200185EB00A783C7EA00119A200101218FF09B200187EA00319A200107EA00119A200101218FF09B200185EB00A78147E682CE77A6C00FF1219C42E240100A5D99E80207E682CF07A6C00FF1219C41219193011E67EA00219A200106CAA19A2001080F17E682FEA7A6C00FF1219C47E2480007E11210B006CAA19A200101218FF09B200187EA00119A200106CAA19A200101218FF09B200185EB005783C7EA00219A200101218FF09B200187EA00319A200107EA00219A200101218FF09B200185EB00578147E682CE77A6C00FF1219C42E240100A5D99E80207E682CF07A6C00FF1219C41219193011E67EA00119A200106CAA19A2001080F17E6830327A6C00FF1219C47E2480007E11210B007EA00219A200101218FF09B200185EB050BEB050781F6CAA19A200101218FF09B200185EB050780D7E682CE77A6C00FF1219C480207E682CF07A6C00FF1219C412191930110F7EA00219A200106CAA19A2001080F12E240100A5D9A27E68307A7A6C00FF1219C47E2480007E11210B0009B200187EA00119A200101218FF09B200185EB0A0BEB0A0781F6CAA19A200101218FF09B200185EB0A0780D7E682CE77A6C00FF1219C480207E682CF07A6C00FF1219C412191930110F7EA00119A200106CAA19A2001080F12E240100A5D99E7E68309E7A6C00FF1219C47E2480007E11210B0020B1267EA00219A200101218FF30B1196CAA19A200101218FF20B10D7E682CE77A6C00FF1219C480207E682CF07A6C00FF1219C412191930110F7EA00219A200106CAA19A2001080F12E240100A5D9AE02173B7E682FC67A6C00FF1219C47E2480007E11210B006CAA19A200101218FF09B200187EA00219A200106CAA19A200101218FF09B200185EB006783C7EA00119A200101218FF09B200187EA00319A200107EA00119A200101218FF09B200185EB00678147E682CE77A6C00FF1219C42E240100A5D99E80207E682CF07A6C00FF1219C41219193011E67EA00219A200106CAA19A2001080F17E68300E7A6C00FF1219C47E2480007E11210B006CAA19A200101218FF09B200187EA00119A200106CAA19A200101218FF09B200185EB009783C7EA00219A200101218FF09B200187EA00319A200107EA00219A200101218FF09B200185EB00978147E682CE77A6C00FF1219C42E240100A5D99E80207E682CF07A6C00FF1219C41219193011E67EA00119A200106CAA19A2001080F17E6830567A6C00FF1219C47E2480007E11210B007EA00219A200101218FF09B200185EB090BEB090781F6CAA19A200101218FF09B200185EB090780D7E682CE77A6C00FF1219C480207E682CF07A6C00FF1219C412191930110F7EA00219A200106CAA19A2001080F12E240100A5D9A2201F681212311217A97E2480007E11210B002089267EA0FF19A200041218FF7EB05519B200001218FF30890F7EA00019A200041218FF20890280261219193011207EA0FF19A200041218FF7EB05519B200001218FF7EA00019A200041218FF80E02E240100A5D9A80217C202184C7E2480007E11217EA00819A200101218FF2E240100A5D9EF22301F0302184CC28A1217A90B00121816208B2474037AB3910674027AB39107740C7AB3910674007AB3910712190C308B06121816308BAD1219193011A712181674037AB3910674027AB3910712190C12181680E97EA00074027AB391067AA3910774037AB391067AA391071218FF74EF7AB3910474807AB39103740C7AB3910674087AB3910712190C223012197E6830C27A6C00FF1219C4D2111218FF1218FF1218FF020CCA301F1C7E68313C7A6C00FF1219C47E68315E7A6C00FF1219C4121A6E0218F70B007E7818B17A7C00FF7F677A6C00007E703E7E7BB07A6BB00B7C0B6CA5DFF37E7818B17A7C000089787E7800007A7C00FE7E687FBF7A6C00FE74AA39B75555745539B72AAA74A039B755556C997A6B907E5427107E6B80BC8968081B5478F58AFF18EF8AFF18F71219197E6B8080FB7E10FF1219AC80F8CAF97EF400FF1BF478FCDAF922CAF97EF400001BF478FCDAF922201120D21212190C7EB0027AB3900012190C12190C12190C12190C7EB0007AB3900022CA0B7E10037C306C220B209E300A50F92E300B1B20682012190C12190C7EB0037AB3900012190C12190C12190C7EB0007AB39000A5DAE012190C12190C1B30682012190C12190C7EB0027AB3900012190C12190C12190C7EB0007AB39000A5DBE07E200A12190CA5DAFAA5D998DA0B2220111412190C7EB0017AB3900012190C7EB0007AB3900022301F3220112FCA2BCA7B7E7880007A7C00FE121A4D7E6BA05CAA681029B70014546068F839A700000B6C80E91218FFD2B5DA7BDA2B22121A057E68000C1219C422CA59CA5B7EB4000C7CB8C4121A357CB8121A357CB9C4121A357CB9121A357EB0687AB9B00BB46CBB7AB9B0DA59DA5B225EB00F7CAB9EA00A40052EB03780032EB0307AB9B00BB422C2B575B0EF1218FF748039B7000C7E54000639A7000439B70000740339B7000C227E7800007A7C00FF7E5800007A5C00017F657E742000120B6340587E787C007A7C00FF7E5800007A5C00017E687C007A6C00017E740400120B6340377480121AEA40307E00037A039000D2107E0400087E14000084A5DBFCA5DAF9A5D9F67440121AEA400E7E68318D7A6C00FF1219C40218F77EB0027AB3900080FEF50B7E78000B7A7C00007E687FBF7A6C00017E740001020B6374
-:0000000001FF
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//* This program is free software; you can redistribute it and/or modify
-//* it under the terms of the GNU General Public License as published by
-//* the Free Software Foundation; either version 2 of the License, or
-//* (at your option) any later version.
-//**************************************************************
diff --git a/firmware/edgeport/down.H16 b/firmware/edgeport/down.H16
deleted file mode 100644
index 7e36fe1f2182..000000000000
--- a/firmware/edgeport/down.H16
+++ /dev/null
@@ -1,29 +0,0 @@
-:000400000001100004E7
-:000200000400FFFB
-:00060000000200800244B082
-:0003000B000244723A
-:0003001300020013D5
-:0003001B0002001BC5
-:0003002300020023B5
-:0003002B0002002BA5
-:000300330002003395
-:0003003B0002003B85
-:000300430002004375
-:0003004B00026EC47E
-:000300530002758DA6
-:0003007B0002007B05
-:00070080007E14000002405154
-:088230000012372812303E1230541230E51231681235201238581231151231401230A080E0E52360197E14000009B101CFB4000280051419B101CFA50BBE312F78EB22C2AF7EB33FF1B4010AC0F175F1021270EFD0F1D2AF22C2AFE52260437E0701E1BE04038038397E0480007E200013502109A000044EA00519A000040A320953678E5E5127680B09A000104EA00119A000102E040100A50ABE212F78D1752200D2AF22C2AF7E20007E30017CB2230A2B4932018FBE34000068127EB121A54B7AB121CA19492230D59924DA193E30A50ABE212F78D6D2AF22460F49674CBF5017536F56C75A1F5D77C2AFE53260147E2000135007CAB8123102DAB8A50ABE212F78EFD2AF22CA281267ABDA2840090A2209B2678EF4523222C2AFE53460147E2000135007CAB8123132DAB8A50ABE212F78EFD2AF22CA280A220942003E1269C2DA2822C2AFE53560147E2000135007CAB812315DDAB8A50ABE212F78EFD2AF22CA287E4000126C5BDA2822C2AFE52360147E2000135007CAB8123185DAB8A50ABE212F78EFD2AF227CB2230A2B49223190892431A03210328032F0336033D0344034B07E27018FBE24000078247E24800009B20014CAB85EB01EDAB8680BCA197D121249307D21DA1930E6187E6000801EBE27019F680D7A27019F7E609C7A6301CF802E7E6301CFA5BE00267E60017EB0007EA0C81262B640187531B3127C15C2186C007A0301CFC0F175F101126FD9D0F1227E270191BE24000078247E24810009B20014CAB85EB01EDAB8680BCA197D12124C887D21DA1930E6187E6000801EBE2701A1680D7A2701A17E609C7A6301D0802E7E6301D0A5BE00267E60017EB0007EA0C81262B640187531B3127C15C2196C007A0301D0C0F175F101126FD9D0F1227E270193BE24000078247E24820009B20014CAB85EB01EDAB8680BCA197D12124FE07D21DA1930E6187E6000801EBE2701A3680D7A2701A37E609C7A6301D1802E7E6301D1A5BE00267E60017EB0007EA0C81262B640187531B3127C15C21A6C007A0301D1C0F175F101126FD9D0F1227E270195BE24000078247E24830009B20014CAB85EB01EDAB8680BCA197D121253387D21DA1930E6187E6000801EBE2701A5680D7A2701A57E609C7A6301D2802E7E6301D2A5BE00267E60017EB0007EA0C81262B640187531B3127C15C21B6C007A0301D2C0F175F101126FD9D0F1227E270197BE24000078247E24840009B20014CAB85EB01EDAB8680BCA197D121256907D21DA1930E6187E6000801EBE2701A7680D7A2701A77E609C7A6301D3802E7E6301D3A5BE00267E60017EB0007EA0C81262B640187531B3127C15C21C6C007A0301D3C0F175F101126FD9D0F1227E270199BE24000078247E24850009B20014CAB85EB01EDAB8680BCA197D121259E87D21DA1930E6187E6000801EBE2701A9680D7A2701A97E609C7A6301D4802E7E6301D4A5BE00267E60017EB0007EA0C81262B640187531B3127C15C21D6C007A0301D4C0F175F101126FD9D0F1227E27019BBE24000078247E24860009B20014CAB85EB01EDAB8680BCA197D12125D407D21DA1930E6187E6000801EBE2701AB680D7A2701AB7E609C7A6301D5802E7E6301D5A5BE00267E60017EB0007EA0C81262B640187531B3127C15C21E6C007A0301D5C0F175F101126FD9D0F1227E27019DBE24000078247E24870009B20014CAB85EB01EDAB8680BCA197D121260987D21DA1930E6187E6000801EBE2701AD680D7A2701AD7E609C7A6301D6802E7E6301D6A5BE00267E60017EB0007EA0C81262B640187531B3127C15C21F6C007A0301D6C0F175F101126FD9D0F122C2AFE52460147E2000135007CAB812353DDAB8A50ABE212F78EFD2AF227CB2230A2B4922354889243558359235CC36063640367A36B436EE7E24800009B20014CAB85EB01EDAB8680BCA197D121249307D21DA195EB0017EA09012629340127531B8127C15C220C0F175F101126FD9D0F1227E24810009B20014CAB85EB01EDAB8680BCA197D12124C887D21DA195EB0017EA09012629340127531B8127C15C221C0F175F101126FD9D0F1227E24820009B20014CAB85EB01EDAB8680BCA197D12124FE07D21DA195EB0017EA09012629340127531B8127C15C222C0F175F101126FD9D0F1227E24830009B20014CAB85EB01EDAB8680BCA197D121253387D21DA195EB0017EA09012629340127531B8127C15C223C0F175F101126FD9D0F1227E24840009B20014CAB85EB01EDAB8680BCA197D121256907D21DA195EB0017EA09012629340127531B8127C15C224C0F175F101126FD9D0F1227E24850009B20014CAB85EB01EDAB8680BCA197D121259E87D21DA195EB0017EA09012629340127531B8127C15C225C0F175F101126FD9D0F1227E24860009B20014CAB85EB01EDAB8680BCA197D12125D407D21DA195EB0017EA09012629340127531B8127C15C226C0F175F101126FD9D0F1227E24870009B20014CAB85EB01EDAB8680BCA197D121260987D21DA195EB0017EA09012629340127531B8127C15C227C0F175F101126FD9D0F122C2AFE53360147E2000135007CAB8123745DAB8A50ABE212F78EFD2AF227CB2230A2B4922375089243760377F379E37BD37DC37FB381A38397E248000CA197D1212481BDA19100402800CD201C0F175F101126FD9D0F1227E248100CA197D12124B73DA19100402800CD201C0F175F101126FD9D0F1227E248200CA197D12124ECBDA19100402800CD201C0F175F101126FD9D0F1227E248300CA197D12125223DA19100402800CD201C0F175F101126FD9D0F1227E248400CA197D1212557BDA19100402800CD201C0F175F101126FD9D0F1227E248500CA197D121258D3DA19100402800CD201C0F175F101126FD9D0F1227E248600CA197D12125C2BDA19100402800CD201C0F175F101126FD9D0F1227E248700CA197D12125F83DA19100402800CD201C0F175F101126FD9D0F122C2AFC0F175F101A932F21A7E0701E1BE0400007810E5F53382E74009853131127C1575F600D0F1D2AF2247
-:3C154000007E0400017E147FF87E2400FE7D310B1A501B0A507E14401B02406A7EF8006FD204C294D2957EF4402C02407C127D30F52F7AA1307A116E1275CA1240DC7EB33FF160031243D475F10012766FD2AF0230007E0400FF7E18405F7A1C00018918A9258703A9D587D29389087E0400FF7E1840787A1C00018918C29389087E0800207E4404007E40007EE4408E027C307E08016F7E44287C7E40007EE440A0027C307E08006F7E4401007E40537EE440B2027C30756D20756C307E040008756A58756B08756708756901758901758A01758C00D28C7E0400027A055889F475B77F75B87F75B30775B207D2A922D292E4D5E0FDC2927E2480007E112F7EA00819A200102E240100A5D9F27E200012417E0B20BE212F78F6227E0480004C0274BF19B0000C741019B00008748019B0000C7E54000219A0000419B00000740319B0000C7407A920300BA9353005BE20012802740F19B00004A933301874BF19B0000C7428A9203002742019B00004740319B0000C74A719B00008740C19B00010227E0480004C02E419B0000409B00010540819B0001074A719B00008227CB2230A2B492241A5892441B541D441F3421242314250426F428EC210C218C220C2087E0409E37A07016F7A07017F6D007A07018F7A07019F22C211C219C221C2097E040DE37A0701717A0701816D007A0701917A0701A122C212C21AC222C20A7E0411E37A0701737A0701836D007A0701937A0701A322C213C21BC223C20B7E0415E37A0701757A0701856D007A0701957A0701A522C214C21CC224C20C7E0419E37A0701777A0701876D007A0701977A0701A722C215C21DC225C20D7E041DE37A0701797A0701896D007A0701997A0701A922C216C21EC226C20E7E0421E37A07017B7A07018B6D007A07019B7A0701AB22C217C21FC227C20F7E0425E37A07017D7A07018D6D007A07019D7A0701AD227CB2230A2B492242B8892442C842E9430A432B434C436D438E43AF305007206804C2288016304007206004C228800C304807205804C2288002D22822305107206904C2298016304107206104C229800C304907205904C2298002D22922305207206A04C22A8016304207206204C22A800C304A07205A04C22A8002D22A22305307206B04C22B8016304307206304C22B800C304B07205B04C22B8002D22B22305407206C04C22C8016304407206404C22C800C304C07205C04C22C8002D22C22305507206D04C22D8016304507206504C22D800C304D07205D04C22D8002D22D22305607206E04C22E8016304607206604C22E800C304E07205E04C22E8002D22E22305707206F04C22F8016304707206704C22F800C304F07205F04C22F8002D22F22443843E5BEB002400122230A5B495543D09954D322A9C5871244437E0405E37A0701D77A0701D97E0401E37A0701DD7A0701DF7E0474AD7A056175F10175E11F75E40475F40475F10275E10375E40475F40443A21C1240EB7E200012419A0B20BE212F78F6D2A822A9D587124443D292C2A82275A30053A20375C10053C0037E00057A01F143F48043E480E5F2547F4408F5F2E5E2547F4408F5E275E110A5D8E122CA09123020100112D5671E6369017E006A2E0169A5E6F567801220021E756900856A67D2027400800D30020FC2027E006C2E0169A5E65390CF4290DA0932C0D0C0D1C0E0C0F0CA0BCA1BCA2BD201753189127C157E14800009B1000820E00302454F20785AA50A09B1000820E00302456720794BA50A09B1000820E00302457FA50A09B1000820E003024597207A30A50A09B1000820E0030245AFA50A09B1000820E0030245C7A50A09B1000820E0030245DFA50A09B1000820E0030245F730040CC204C0F175F101126FD9D0F1DA2BDA1BDA0BD0F0D0E0D0D1D0D032753180127C15543E0A5B7E4400FF6952632BCA06C6448954753181127C15543E0A5B7E4400FF6952636BCA06C6448954753182127C15543E0A5B7E4400FF695263ABCA06C6448954753183127C15543E0A5B7E4400FF695263EBCA06C6448954753184127C15543E0A5B7E4400FF6952642BCA06C6448954753185127C15543E0A5B7E4400FF6952646BCA06C6448954753186127C15543E0A5B7E4400FF695264ABCA06C6448954753187127C15543E0A5B7E4400FF695264EBCA06C644895410080122202803D208227531A0127C157E1480008006202803D2082209B10014CAB85EB01EDAB8680312493020E603D20822303049D2707E37018F7E2701AF9D3240317D022E05487A05487A37018F7E37016F7D432D42BE440DE238687A47016F753194127C157A5131127C1512652B1070C422C2702D2368786D33801A7E27018FBE240000686ABE2701AF28047E2701AF7E37018F9D327D022E05487A05487A37018F7E37016F7D432D42BE440DE238137A47016F753194127C157A5131127C1502652B753194127C157A5131127C159E440DE39D2412652B7E3409E37D242D437A47016F12652BBE2520780302467F22D2087E0409E37A07016F7A07017F753194127C15753100127C1522753192127C15D20409B10014CAB85482DAB878707E3701E17E2701BF2E2400022D32BE340400383C7D022E05467A05467A3701E17E3701DF7D432D42BE4405E238447A4701DF7E2400002E2701BF1B38200B357A5131127C15BE503878030266160265FB753199127C1509B1000454FA19B1000430380A09B1001054FE19B10010D21022807D7A5131127C159E4405E39D247E6400002E6701BF9E24000240171B38600B351265FB7E3401E37D242D437A4701DF0265FB7A39C07E3401E37A39D00B341B4480E59D327CB6540F23232344007A69B07A79700B35753193127C157A7131127C15BD0468297A0701DF7E4701E12D437A4701E12E35467A35462209B1001420E013227E0401E3802A7E0401E3802C7E0401E380D1D2047E0701E17E2403FE9D2028407E0701DF7E4405E37D600B04BD0468D07D700B04BD0468CE7D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E70247E3753199127C1509B1000454FA19B1000430380A09B1001054FE19B10010D21022DAB830E0D8BD326807CAB81247E3DAB802493009B100187EA088753190127C15F531127C15A5FC5EB0F0A5FD09B100184C4B5EB0F0BCB578F15E400F4C547CB55E500B682AA5FD5E50106804D2688002C268A5FD5E50206804D2608002C260A5FD5E50806804D2588002C2581242C8026293753191127C1509B100147AB131127C1520E008D2047EA080026293D20430E1067EA080126293CAB85EB01CDAB868127EA0C0096100001262B609B1001420E0DB22024835753195127C1522753196127C152210090122202903D209227531A1127C157E1481008006202903D2092209B10014CAB85EB01EDAB86803124C8820E603D20922303149D2717E3701917E2701B19D3240317D022E054A7A054A7A3701917E3701717D432D42BE4411E238687A470171753194127C157A5131127C1512652B1071C422C2712D2368786D33801A7E270191BE240000686ABE2701B128047E2701B17E3701919D327D022E054A7A054A7A3701917E3701717D432D42BE4411E238137A470171753194127C157A5131127C1502652B753194127C157A5131127C159E4411E39D2412652B7E340DE37D242D437A47017112652BBE252078030249D722D2097E040DE37A0701717A070181753194127C15753100127C1522753192127C15D20409B10014CAB85482DAB878707E3701E17E2701C12E2400022D32BE340400383C7D022E05467A05467A3701E17E3701DF7D432D42BE4405E238447A4701DF7E2401002E2701C11B38200B357A5131127C15BE503878030266160265FB753199127C1509B1000454FA19B1000430390A09B1001054FE19B10010D21122807D7A5131127C159E4405E39D247E6401002E6701C19E24000240171B38600B351265FB7E3401E37D242D437A4701DF0265FB7A39C07E3401E37A39D00B341B4480E59D327CB6540F23232344017A69B07A79700B35753193127C157A7131127C15BD0468297A0701DF7E4701E12D437A4701E12E35467A35462209B1001420E013227E0401E3802A7E0401E3802C7E0401E380D1D2047E0701E17E2403FE9D2028407E0701DF7E4405E37D600B04BD0468D07D700B04BD0468CE7D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E7024B3B753199127C1509B1000454FA19B1000430390A09B1001054FE19B10010D21122DAB830E0D8BD326807CAB8124B3BDAB8024C8809B100187EA088753190127C15F531127C15A5FC5EB0F0A5FD09B100184C4B5EB0F0BCB578F15E400F4C547CB55E500B682AA5FD5E50106804D2698002C269A5FD5E50206804D2618002C261A5FD5E50806804D2598002C2591242E9026293753191127C1509B100147AB131127C1520E008D2047EA080026293D20430E1067EA080126293CAB85EB01CDAB868127EA0C0096100001262B609B1001420E0DB22024B8D753195127C1522753196127C1522100A0122202A03D20A227531A2127C157E1482008006202A03D20A2209B10014CAB85EB01EDAB86803124FE020E603D20A22303249D2727E3701937E2701B39D3240317D022E054C7A054C7A3701937E3701737D432D42BE4415E238687A470173753194127C157A5131127C1512652B1072C422C2722D2368786D33801A7E270193BE240000686ABE2701B328047E2701B37E3701939D327D022E054C7A054C7A3701937E3701737D432D42BE4415E238137A470173753194127C157A5131127C1502652B753194127C157A5131127C159E4415E39D2412652B7E3411E37D242D437A47017312652BBE25207803024D2F22D20A7E0411E37A0701737A070183753194127C15753100127C1522753192127C15D20409B10014CAB85482DAB878707E3701E17E2701C32E2400022D32BE340400383C7D022E05467A05467A3701E17E3701DF7D432D42BE4405E238447A4701DF7E2402002E2701C31B38200B357A5131127C15BE503878030266160265FB753199127C1509B1000454FA19B10004303A0A09B1001054FE19B10010D21222807D7A5131127C159E4405E39D247E6402002E6701C39E24000240171B38600B351265FB7E3401E37D242D437A4701DF0265FB7A39C07E3401E37A39D00B341B4480E59D327CB6540F23232344027A69B07A79700B35753193127C157A7131127C15BD0468297A0701DF7E4701E12D437A4701E12E35467A35462209B1001420E013227E0401E3802A7E0401E3802C7E0401E380D1D2047E0701E17E2403FE9D2028407E0701DF7E4405E37D600B04BD0468D07D700B04BD0468CE7D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E7024E93753199127C1509B1000454FA19B10004303A0A09B1001054FE19B10010D21222DAB830E0D8BD326807CAB8124E93DAB8024FE009B100187EA088753190127C15F531127C15A5FC5EB0F0A5FD09B100184C4B5EB0F0BCB578F15E400F4C547CB55E500B682AA5FD5E50106804D26A8002C26AA5FD5E50206804D2628002C262A5FD5E50806804D25A8002C25A12430A026293753191127C1509B100147AB131127C1520E008D2047EA080026293D20430E1067EA080126293CAB85EB01CDAB868127EA0C0096100001262B609B1001420E0DB22024EE5753195127C1522753196127C1522100B0122202B03D20B227531A3127C157E1483008006202B03D20B2209B10014CAB85EB01EDAB8680312533820E603D20B22303349D2737E3701957E2701B59D3240317D022E054E7A054E7A3701957E3701757D432D42BE4419E238687A470175753194127C157A5131127C1512652B1073C422C2732D2368786D33801A7E270195BE240000686ABE2701B528047E2701B57E3701959D327D022E054E7A054E7A3701957E3701757D432D42BE4419E238137A470175753194127C157A5131127C1502652B753194127C157A5131127C159E4419E39D2412652B7E3415E37D242D437A47017512652BBE2520780302508722D20B7E0415E37A0701757A070185753194127C15753100127C1522753192127C15D20409B10014CAB85482DAB878707E3701E17E2701C52E2400022D32BE340400383C7D022E05467A05467A3701E17E3701DF7D432D42BE4405E238447A4701DF7E2403002E2701C51B38200B357A5131127C15BE503878030266160265FB753199127C1509B1000454FA19B10004303B0A09B1001054FE19B10010D21322807D7A5131127C159E4405E39D247E6403002E6701C59E24000240171B38600B351265FB7E3401E37D242D437A4701DF0265FB7A39C07E3401E37A39D00B341B4480E59D327CB6540F23232344037A69B07A79700B35753193127C157A7131127C15BD0468297A0701DF7E4701E12D437A4701E12E35467A35462209B1001420E013227E0401E3802A7E0401E3802C7E0401E380D1D2047E0701E17E2403FE9D2028407E0701DF7E4405E37D600B04BD0468D07D700B04BD0468CE7D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E70251EB753199127C1509B1000454FA19B10004303B0A09B1001054FE19B10010D21322DAB830E0D8BD326807CAB81251EBDAB802533809B100187EA088753190127C15F531127C15A5FC5EB0F0A5FD09B100184C4B5EB0F0BCB578F15E400F4C547CB55E500B682AA5FD5E50106804D26B8002C26BA5FD5E50206804D2638002C263A5FD5E50806804D25B8002C25B12432B026293753191127C1509B100147AB131127C1520E008D2047EA080026293D20430E1067EA080126293CAB85EB01CDAB868127EA0C0096100001262B609B1001420E0DB2202523D753195127C1522753196127C1522100C0122202C03D20C227531A4127C157E1484008006202C03D20C2209B10014CAB85EB01EDAB8680312569020E603D20C22303449D2747E3701977E2701B79D3240317D022E05507A05507A3701977E3701777D432D42BE441DE238687A470177753194127C157A5131127C1512652B1074C422C2742D2368786D33801A7E270197BE240000686ABE2701B728047E2701B77E3701979D327D022E05507A05507A3701977E3701777D432D42BE441DE238137A470177753194127C157A5131127C1502652B753194127C157A5131127C159E441DE39D2412652B7E3419E37D242D437A47017712652BBE252078030253DF22D20C7E0419E37A0701777A070187753194127C15753100127C1522753192127C15D20409B10014CAB85482DAB878707E3701E17E2701C72E2400022D32BE340400383C7D022E05467A05467A3701E17E3701DF7D432D42BE4405E238447A4701DF7E2404002E2701C71B38200B357A5131127C15BE503878030266160265FB753199127C1509B1000454FA19B10004303C0A09B1001054FE19B10010D21422807D7A5131127C159E4405E39D247E6404002E6701C79E24000240171B38600B351265FB7E3401E37D242D437A4701DF0265FB7A39C07E3401E37A39D00B341B4480E59D327CB6540F23232344047A69B07A79700B35753193127C157A7131127C15BD0468297A0701DF7E4701E12D437A4701E12E35467A35462209B1001420E013227E0401E3802A7E0401E3802C7E0401E380D1D2047E0701E17E2403FE9D2028407E0701DF7E4405E37D600B04BD0468D07D700B04BD0468CE7D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E7025543753199127C1509B1000454FA19B10004303C0A09B1001054FE19B10010D21422DAB830E0D8BD326807CAB8125543DAB802569009B100187EA088753190127C15F531127C15A5FC5EB0F0A5FD09B100184C4B5EB0F0BCB578F15E400F4C547CB55E500B682AA5FD5E50106804D26C8002C26CA5FD5E50206804D2648002C264A5FD5E50806804D25C8002C25C12434C026293753191127C1509B100147AB131127C1520E008D2047EA080026293D20430E1067EA080126293CAB85EB01CDAB868127EA0C0096100001262B609B1001420E0DB22025595753195127C1522753196127C1522100D0122202D03D20D227531A5127C157E1485008006202D03D20D2209B10014CAB85EB01EDAB868031259E820E603D20D22303549D2757E3701997E2701B99D3240317D022E05527A05527A3701997E3701797D432D42BE4421E238687A470179753194127C157A5131127C1512652B1075C422C2752D2368786D33801A7E270199BE240000686ABE2701B928047E2701B97E3701999D327D022E05527A05527A3701997E3701797D432D42BE4421E238137A470179753194127C157A5131127C1502652B753194127C157A5131127C159E4421E39D2412652B7E341DE37D242D437A47017912652BBE2520780302573722D20D7E041DE37A0701797A070189753194127C15753100127C1522753192127C15D20409B10014CAB85482DAB878707E3701E17E2701C92E2400022D32BE340400383C7D022E05467A05467A3701E17E3701DF7D432D42BE4405E238447A4701DF7E2405002E2701C91B38200B357A5131127C15BE503878030266160265FB753199127C1509B1000454FA19B10004303D0A09B1001054FE19B10010D21522807D7A5131127C159E4405E39D247E6405002E6701C99E24000240171B38600B351265FB7E3401E37D242D437A4701DF0265FB7A39C07E3401E37A39D00B341B4480E59D327CB6540F23232344057A69B07A79700B35753193127C157A7131127C15BD0468297A0701DF7E4701E12D437A4701E12E35467A35462209B1001420E013227E0401E3802A7E0401E3802C7E0401E380D1D2047E0701E17E2403FE9D2028407E0701DF7E4405E37D600B04BD0468D07D700B04BD0468CE7D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E702589B753199127C1509B1000454FA19B10004303D0A09B1001054FE19B10010D21522DAB830E0D8BD326807CAB812589BDAB80259E809B100187EA088753190127C15F531127C15A5FC5EB0F0A5FD09B100184C4B5EB0F0BCB578F15E400F4C547CB55E500B682AA5FD5E50106804D26D8002C26DA5FD5E50206804D2658002C265A5FD5E50806804D25D8002C25D12436D026293753191127C1509B100147AB131127C1520E008D2047EA080026293D20430E1067EA080126293CAB85EB01CDAB868127EA0C0096100001262B609B1001420E0DB220258ED753195127C1522753196127C1522100E0122202E03D20E227531A6127C157E1486008006202E03D20E2209B10014CAB85EB01EDAB86803125D4020E603D20E22303649D2767E37019B7E2701BB9D3240317D022E05547A05547A37019B7E37017B7D432D42BE4425E238687A47017B753194127C157A5131127C1512652B1076C422C2762D2368786D33801A7E27019BBE240000686ABE2701BB28047E2701BB7E37019B9D327D022E05547A05547A37019B7E37017B7D432D42BE4425E238137A47017B753194127C157A5131127C1502652B753194127C157A5131127C159E4425E39D2412652B7E3421E37D242D437A47017B12652BBE25207803025A8F22D20E7E0421E37A07017B7A07018B753194127C15753100127C1522753192127C15D20409B10014CAB85482DAB878707E3701E17E2701CB2E2400022D32BE340400383C7D022E05467A05467A3701E17E3701DF7D432D42BE4405E238447A4701DF7E2406002E2701CB1B38200B357A5131127C15BE503878030266160265FB753199127C1509B1000454FA19B10004303E0A09B1001054FE19B10010D21622807D7A5131127C159E4405E39D247E6406002E6701CB9E24000240171B38600B351265FB7E3401E37D242D437A4701DF0265FB7A39C07E3401E37A39D00B341B4480E59D327CB6540F23232344067A69B07A79700B35753193127C157A7131127C15BD0468297A0701DF7E4701E12D437A4701E12E35467A35462209B1001420E013227E0401E3802A7E0401E3802C7E0401E380D1D2047E0701E17E2403FE9D2028407E0701DF7E4405E37D600B04BD0468D07D700B04BD0468CE7D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E7025BF3753199127C1509B1000454FA19B10004303E0A09B1001054FE19B10010D21622DAB830E0D8BD326807CAB8125BF3DAB8025D4009B100187EA088753190127C15F531127C15A5FC5EB0F0A5FD09B100184C4B5EB0F0BCB578F15E400F4C547CB55E500B682AA5FD5E50106804D26E8002C26EA5FD5E50206804D2668002C266A5FD5E50806804D25E8002C25E12438E026293753191127C1509B100147AB131127C1520E008D2047EA080026293D20430E1067EA080126293CAB85EB01CDAB868127EA0C0096100001262B609B1001420E0DB22025C45753195127C1522753196127C1522100F0122202F03D20F227531A7127C157E1487008006202F03D20F2209B10014CAB85EB01EDAB8680312609820E603D20F22303749D2777E37019D7E2701BD9D3240317D022E05567A05567A37019D7E37017D7D432D42BE4429E238687A47017D753194127C157A5131127C1512652B1077C422C2772D2368786D33801A7E27019DBE240000686ABE2701BD28047E2701BD7E37019D9D327D022E05567A05567A37019D7E37017D7D432D42BE4429E238137A47017D753194127C157A5131127C1502652B753194127C157A5131127C159E4429E39D2412652B7E3425E37D242D437A47017D12652BBE25207803025DE722D20F7E0425E37A07017D7A07018D753194127C15753100127C1522753192127C15D20409B10014CAB85482DAB878707E3701E17E2701CD2E2400022D32BE340400383C7D022E05467A05467A3701E17E3701DF7D432D42BE4405E238447A4701DF7E2407002E2701CD1B38200B357A5131127C15BE503878030266160265FB753199127C1509B1000454FA19B10004303F0A09B1001054FE19B10010D21722807D7A5131127C159E4405E39D247E6407002E6701CD9E24000240171B38600B351265FB7E3401E37D242D437A4701DF0265FB7A39C07E3401E37A39D00B341B4480E59D327CB6540F23232344077A69B07A79700B35753193127C157A7131127C15BD0468297A0701DF7E4701E12D437A4701E12E35467A35462209B1001420E013227E0401E3802A7E0401E3802C7E0401E380D1D2047E0701E17E2403FE9D2028407E0701DF7E4405E37D600B04BD0468D07D700B04BD0468CE7D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E7025F4B753199127C1509B1000454FA19B10004303F0A09B1001054FE19B10010D21722DAB830E0D8BD326807CAB8125F4BDAB802609809B100187EA088753190127C15F531127C15A5FC5EB0F0A5FD09B100184C4B5EB0F0BCB578F15E400F4C547CB55E500B682AA5FD5E50106804D26F8002C26FA5FD5E50206804D2678002C267A5FD5E50806804D25F8002C25F1243AF026293753191127C1509B100147AB131127C1520E008D2047EA080026293D20430E1067EA080126293CAB85EB01CDAB868127EA0C0096100001262B609B1001420E0DB22025F9D753195127C1522753196127C15227C027E1480004C2009B10018A5FD5E50106804D2688002C268A5FD5E50206804D2608002C260A5FD5E50806804D2588002C25802627F7C027E1480004C2009B10018A5FD5E50106804D2698002C269A5FD5E50206804D2618002C261A5FD5E50806804D2598002C25902627F7C027E1480004C2009B10018A5FD5E50106804D26A8002C26AA5FD5E50206804D2628002C262A5FD5E50806804D25A8002C25A02627F7C027E1480004C2009B10018A5FD5E50106804D26B8002C26BA5FD5E50206804D2638002C263A5FD5E50806804D25B8002C25B02627F7C027E1480004C2009B10018A5FD5E50106804D26C8002C26CA5FD5E50206804D2648002C264A5FD5E50806804D25C8002C25C02627F7C027E1480004C2009B10018A5FD5E50106804D26D8002C26DA5FD5E50206804D2658002C265A5FD5E50806804D25D8002C25D02627F7C027E1480004C2009B10018A5FD5E50106804D26E8002C26EA5FD5E50206804D2668002C266A5FD5E50806804D25E8002C25E02627F7C027E1480004C2009B10018A5FD5E50106804D26F8002C26FA5FD5E50206804D2678002C267A5FD5E50806804D25F8002C25F02627F54F0C4A5FFC4A54F753190127C15F531127C1522CA195E20074CA27E7429E3CA797A79A00B747A79B00B74DA797E30027E6400020262DECA195E20074CA27E7429E3CA797A79A00B747A79B00B747A79600B74DA797E30037E6400030262DED2047E2701E12D26BE240400382E7E0701DF7E4405E37E79A07A09A00B040B74BD046823A5DBEF7A2701E17E25462D267A25467A0701DFDA19C2D72275319A127C15DA19D2D7227E0401E380D748B64625471C491544C644C6481B44C6495944C644C644C644C644C644C644C6496044C644C644C644C644C644C644C644C644C644C644C644C644C644C644C64C0E497D4A744C6D44C644C64B7344C64CB144C644C644C644C644C644C644C64CB844C644C644C644C644C644C644C644C644C644C644C644C644C644C644C64F664CD54DCC4FC544C644C64ECB44C6500944C644C644C644C644C644C644C6501044C644C644C644C644C644C644C644C644C644C644C644C644C644C644C652BE502D5124531D44C644C6522344C6536144C644C644C644C644C644C644C6536844C644C644C644C644C644C644C644C644C644C644C644C644C644C644C656165385547C567544C644C6557B44C656B944C644C644C644C644C644C644C656C044C644C644C644C644C644C644C644C644C644C644C644C644C644C644C6596E56DD57D459CD44C644C658D344C65A1144C644C644C644C644C644C644C65A1844C644C644C644C644C644C644C644C644C644C644C644C644C644C644C65CC65A355B2C5D2544C644C65C2B44C65D6944C644C644C644C644C644C644C65D7044C644C644C644C644C644C644C644C644C644C644C644C644C644C644C6601E5D8D5E84607D44C644C65F8344C660C144C644C644C644C644C644C644C660C844C644C644C644C644C644C644C644C644C644C644C644C644C644C644C6CA291E50400D7E540B109CB5A42E54654889547E39007A19000B3480E90B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B350B38007A19007A19100B35DA29221E50400D7E540B1C9CB5A42E54661689547E19007A39000B3480E97E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B357E19007E19101B38000B352267966963697B6A496AE46B8E6BA96C3B6BC46C05699669AA7CB3BEB00B2814753109127C15756D10C0F175F10143E1C0D0F122C0A8C2AF236CAA2E54674B0B5850895401020408102040807531B0127C150A3209B3678E423219430036D0A8227CB2230A3B493367CB0A220932003609B2678EA5BB0005F4523380024233893467DB680968376865689368C168EF691D1241B5D228D208C240C248C238C2306D007A0301CF7E0400207A0701AF7E0400387A0701BF1241161260CF02694B1241D4D229D209C241C249C239C2316D007A0301D07E0400207A0701B17E0400387A0701C112411612610502694B1241F3D22AD20AC242C24AC23AC2326D007A0301D17E0400207A0701B37E0400387A0701C312411612613B02694B124212D22BD20BC243C24BC23BC2336D007A0301D27E0400207A0701B57E0400387A0701C512411612617102694B124231D22CD20CC244C24CC23CC2346D007A0301D37E0400207A0701B77E0400387A0701C71241161261A702694B124250D22DD20DC245C24DC23DC2356D007A0301D47E0400207A0701B97E0400387A0701C91241161261DD02694B12426FD22ED20EC246C24EC23EC2366D007A0301D57E0400207A0701BB7E0400387A0701CB12411612621302694B12428ED22FD20FC247C24FC23FC2376D007A0301D67E0400207A0701BD7E0400387A0701CD12411612624902694B7EA0D07E600F1262B6400CC0F175F101126FD9D0F1C2D7227531B1127C150A52236D005905004812417E12419AD0A8227531B2127C150A2209B2678E42237EB09C19B201CF123185D0A8227531B7127C150A2209B2678E422412353DD0A8227531B9127C150A3209B3678E42341943003E1269C2D0A8227CB2230A0B7CB420E0046D3380044930018F7EA0D8A5EFCA0BCA291262B6DA29DA0B40627531BA127C157CB430E01E6D335930018F7E3409E30A827E940400AD892D395930016F5930017F7CB430E1107E0480004C0209B00008440419B000080A0209B0678E4221F452347CB2230A0BCA19490030D59904DA19C0F175F101126FD9D0F1C2D7227E0480004C020930000C74BF19B0000C09B000081930000C7C745E700168124440CAB809B00010440219B00010DAB8800254BF7C745E700868044408800254F70930000CCAB874BF19B0000CDAB819B000081930000C0A6209B6678E3E200A627C745E700268204227CAB8746119B000087E440010594601BF09B00010440119B00010DAB88011F4522774A119B000087E440038594601BFD0A8227C747E0480004C020A6209B6678EA5FDF4A5FECA283E200A62A5EE52267E440020594601AFDA280930000C74BF19B0000C09B000087C745E7001680C4480CAB8A5ED422ADAB8800A547FCAB8A5EE522ADAB87C745E700868044402800254FD19B000081930000C7C745E70026810A5ED422842267E440008594601AF8004A5EE52287C745E70046810A5ED422942267E440008594601AF800BA5EE52297C745E700278001242ADD0A8227E0480004C020930000C74BF19B0000C194000101930000CD0A8227E0480004C020930000C74BF19B0000C194000181930000CD0A8227531B5127C157E0480004C0209B0000C444019B0000CE56EB4072309B000104EB00219B000100930000C74BF19B0000C09B0000454F719B000041930000CD0A8227531B6127C157E0480004C02E56EB407180930000C74BF19B0000C09B00004440819B000041930000C09B0000C54BF19B0000CD0A8227531B4127C157A2131127C157A4131127C150A3209B3678E4235126C5BD0A8227EB0017EA0C87C641262B640130A3209B3678EF45235C0F175F101126FD9D0F1226C8C6CD36D1A6D616DA86DEF6E366E7D753155127C15753100127C157A6131127C157A7131127C157E17017F7E27018F2D237E09B00B047A19B00B14BE140DE2380F1B3478EC7A17017F7A27018F02460F7E1409E380EB753155127C15753101127C157A6131127C157A7131127C157E1701817E2701912D237E09B00B047A19B00B14BE1411E2380F1B3478EC7A1701817A2701910249677E140DE380EB753155127C15753102127C157A6131127C157A7131127C157E1701837E2701932D237E09B00B047A19B00B14BE1415E2380F1B3478EC7A1701837A270193024CBF7E1411E380EB753155127C15753103127C157A6131127C157A7131127C157E1701857E2701952D237E09B00B047A19B00B14BE1419E2380F1B3478EC7A1701857A2701950250177E1415E380EB753155127C15753104127C157A6131127C157A7131127C157E1701877E2701972D237E09B00B047A19B00B14BE141DE2380F1B3478EC7A1701877A27019702536F7E1419E380EB753155127C15753105127C157A6131127C157A7131127C157E1701897E2701992D237E09B00B047A19B00B14BE1421E2380F1B3478EC7A1701897A2701990256C77E141DE380EB753155127C15753106127C157A6131127C157A7131127C157E17018B7E27019B2D237E09B00B047A19B00B14BE1425E2380F1B3478EC7A17018B7A27019B025A1F7E1421E380EB753155127C15753107127C157A6131127C157A7131127C157E17018D7E27019D2D237E09B00B047A19B00B14BE1429E2380F1B3478EC7A17018D7A27019D025D777E1425E380EBCAB8C0F1753102127C15E5C0540368051275CD80F530C20875F101126FD9801430C30875F101126EFD800930C40675F1021270E9D0F1DAB832753110127C15CA0BCA39CA59C2C3A921E25CE5E554C0684FE5E66CAA7E3701DB2D35BE340400384A7A3701DB7E3701D97D432D45BE4409E238407A4701D9753111127C157AB131127C151271B8A921E51FA9D4E4A924E4FCC2C3A921E23BE5E554C078B412745ADA59DA39DA0B2280298058753116127C1580ED753112127C157AB131127C159E4409E39D541271B87E3405E37D542D4380A1E5E554037812753113127C157E0F29FF0B0C7A0F29FF80A7753114127C157E0F2A030B0C7A0F2A03A9D7E4A927E4FC809D753115127C157E0F2A070B0C7A0F2A0780E5753118127C15CA09CA39CA2BC2C2A921F252E5F53382E740447E3701E17E5400409D3540437A3701E17E3701DD7D432D45BE4405E238527A4701DD7D45127316A920F522753119127C157A9131127C157A81F77A91F6E5F53382E750BCDA2BDA39DA0922804180642D536D3370B77E0401E37A0701DF7A0701DDA932F2DF853031127C1575F60080D4CA599E4405E39D541273167E3401E37D542D437A4701DD127316DA498099E5F55403781F7E0F29EF0B0C7A0F29EF809D7E0F29F70B0C7A0F29F7A9D7F4A927F4FC808A7E0F29F30B0C7A0F29F380EBE5F55403781F7E2F2A0F0B2C7A2F2A0F80347E2F2A170B2C7A2F2A17A9D7F4A927F4FC80217E2F2A130B2C7A2F2A1380EBDA2BDA1BDA0B22753128127C15CA0BCA1BCA2BC2C4A921F2B6E5F53372E740E07E0D467E1D4A7E2D4E7E3D527E85567D904D914D924D934D944D954D964D974D9868727A11F37A01F37A31F37A21F37A51F37A41F37A71F37A61F37A91F37A81F3307B1A7AB1F37AA1F37AD1F37AC1F37AF1F37AE1F37D787AF1F37AE1F3A930F5030270D6753129127C15207B0B75310A127C1575F60A8009753112127C1575F6126D007D107A0D467A0D4A7A0D4E7A0D527A0556DA2BDA1BDA0B221EB0400C7EA00AA47E0472FB9D0589047EA1E37A39A00B3480EAB440E37EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B357EA1E3E5E31B38500B35221EB0400C7EA00AA47E0474599D0589047E39A07AA1F30B3480EAB440E30B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B350B38507AA1F3F5F30B3522C2AF7E3701DB4D33683B7E0701D77E5409E39D50BD3540027D35CA397E65619964DA397E0701DB9D037A0701DB2E3701D77A3701D7BE3409E228C77E3405E37A3701D780BDD2AF22753153127C157E15638011753151127C150B08100B059E340002284D7CB220E7275407230A2B49226C7C7CB254780303037C2B9D13401A68127A15637A25657E6475377A656189240275457E6474AD80F22D139D31CA397D312D10CA19CA299924DA29DA09DA3980A27A15637E6475234D3378097CB220E72A7E6474A27A656122753152127C157E21637E09300B041B34788980D4753154127C157E15637E256580905E200754787E4475C130E6164D3368261B347E09400B047E44676320E3047E4475C9CA09CA399944DA39DA097E6474AD4D3368A689647A1563F5657E64758680997E1563E56580C4C0D0C0D1C0E0CA19A920DF12A921DF1B753101127C1553DFF71240DC800D7531FE127C157E140053024051DA19D0E0D0D1D0D03203A5CB19B180002222027642CA0BCA1BCA2BCA3BCA4BCA5BCA6BCA7BCAEBC0F17EB32A33B400028019B4011630C00875F10012762C801F30C11C75F1001276BD801430C10875F1001276BD800930C00675F10012762CD0F1DAEBDA7BDA6BDA5BDA4BDA3BDA2BDA1BDA0B22C2C07EB32A33B4020712764E02764222B401FC0276887E00007A032A337A032A34227EB32A2B54606005B4401580137EB32A2CB4050C753171127C157EB32A2EF58F2275F60022BE572A3128047E572A317A0F2A367A572A3A0276887EEF2A367EF72A3A7E072A3A4D0068217E00007EEBB0F5F3A3A5081BF46804A5B808F07AEF2A367AF72A3A753106127C157A01F622C2C1753103127C15A936E216E5F554C06807A9D7F4A927F4FC53E13F43F2880277297EB32A34B40204A9D4E422B401397E21E67C327E132A352C217A232A357E00002E042A3CE5E37A09B00B04A5DBF6A9D4E4753170127C157EB32A357EA32A32BCAB78031277C022027B29E5E6B40865A9C4E27E01E37E11E37E31E37E21E37E51E37E41E37E71E37E61E37A0F2A2B7A1F2A2F753104127C157A0131127C157A1131127C157A2131127C157A3131127C157A4131127C157A5131127C157A6131127C157A7131127C15A9D4E4A9D7F4A9C6E2127794226D007E1401027A072A3A7A032A357EB32A2B20E70F7A232A347A332A33BE072A316809227A332A347A232A337EB32A2B54E3232330E002D2E530E702D2E430E50630E403027B29543EF5F003541FC325F09077EC7584FF730279400278340279DD0279F80278D902789A027A11027A11027A14027A14027A14027A14027A14027A14027A14027A14027A1A027ACE027A17027A17027A17027A17027A17027A177EB32A2CB4062A7EB32A2D60567C0B7E132A2E7E172A2F753172127C157A0131127C157A1131127C15127B334035027673B40810753174127C157EB33FF1F5F375F60122B4001C753175127C157EB33FF230E00575F302800375F30075F30075F60222027B297EB32A2CB40035753176127C157EB32A30540FF5F17EB32A3020E709E5E130E70D7401800BE5E130E60474018002740053F180F5F375F30075F60222027B29C0F17EB32A30540F42F17EB32A2EB400457EB32A2CB40124753177127C157EB32A30540F780553E13F80377EB32A3020E70553E17F802B53E1BF8026B40317753178127C157EB32A3020E70543E180801143E140800C43E1C0D0F1753107127C1522D0F102766F7EB32A2CB40923753179127C157EB32A2EBEB33FF16811CAB8C0F11243D4D0F1DAB850767AB33FF1806DB4050875317A127C158062B4031975317B127C157EB32A2EB401557EB33FF244017AB33FF28046B4011975317C127C157EB32A2EB401397EB33FF254FE7AB33FF2802AB4072A7EB32A2D60247C0B7E132A2E7E172A2F753173127C157A0131127C157A1131127C15127B5F400302766F027B297EB32A2CB40BF675317D127C157EB32A2E7EA32A304CAB78E480DF7EB32A2CB40ADB75317E127C157EB32A2E70CFF5F375F60122027B29027B29027B297EB32A2CB404207531C3127C157E0400017E172A2D7E182A3C7A1C00007E472A31127C21027AC8B4063A7531C1127C157E5800007A5C00FE7DCA7ED72A2D7E782A3C7A7C00007E772A317531C1127C15C0A8C087C2AFA9D587127C5AD087D0A8404F804AB4001CC2AFA9D58712766FE48DEF8DEF8DEFD5E0F7C0D1CA02FFCA06000032B409127E572A2D4D556805A9D2B18003A9C2B18016B40716C2AF7E072A2F7E172A2DC0D1CA18CA38CA283202766F027B297EB32A2CB403157531C2127C157E0400017E172A2D7E572A31027673B405397531C0127C15C0A8C087C2AFA9D5877E082A3C7A0C00007E2400FE7E372A2D7E472A31127C21D087D0A87E082A3C7A0C00007E572A31027673027B29753107127C1543E1C022C0A8C087C2AFA9D587127B9E40197E082A3C7A0C0000CA0BCA49127C21DA59DA0BD087D0A8C322D087D0A822C0A8C087C2AFA9D587127B9E402B7E5800007A5C00FE7F617E782A3C7A7C00007E772A31BD7478117531C1127C15127C5A4006D087D0A8C322D087D0A8D3227E2400FE7E347FCA0B1A50C5F07D627D757D877E347FC27E1BB07E347F03B401047E347FCC7E1BB0BC0B50493E003E000A502D750B3A3069530002BD3850022D38BC1B50303E103E100A512D35694100020B1A30BD3850022D38BE44FFFF78057E1B900A494D44680CBE4400FF28047E4400FFC322D322FA
-:00047FC60001100400A2
-:014A7C1500CA087E01317A033FF0DA08227E1BC07A0BC00B140B341B4478F2227F6F7FF01BFC7C547D328008CA1BCA1BCA1BCA1B9E44001050F22E4400106806CA481B4478FA7FF689E4CA6B5ED4003F68207E8400409D8DDA6BBD873816CA797D78127C84DA7940089D7868028005C2D722DA6B43903074AA39B55555745539B52AAA74A039B555557E0400409D7050062D707D076D777C317E7B007A6B000B7C0B6CA5D9F37F161B1C7E5427107E1B10BC1068061B5478F5802C6D007C207F169F107F279F207E2B007E1B10BC0178160B2C0B1CA5DBEF7CB620E0036390304D777893C2D722D2D7220004000442080604020400020104010282080000000000000202020202040208100210040208000101080001000200020208020420047E187FBD7A1C00FE0B1A005E101FBE101A381A0A51237E187CFA7A1C00FF2D350B1A506008A5B802034EA0082280FE73
-:0000000001FF
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//* This program is free software; you can redistribute it and/or modify
-//* it under the terms of the GNU General Public License as published by
-//* the Free Software Foundation; either version 2 of the License, or
-//* (at your option) any later version.
-//**************************************************************
diff --git a/firmware/edgeport/down2.H16 b/firmware/edgeport/down2.H16
deleted file mode 100644
index 2f4b4ff3ab7b..000000000000
--- a/firmware/edgeport/down2.H16
+++ /dev/null
@@ -1,29 +0,0 @@
-:000400000002000003F7
-:000200000400FFFB
-:00060000000200800245141D
-:0003000B000244A507
-:00030013000263ABDA
-:0003001B0002001BC5
-:0003002300020023B5
-:0003002B0002002BA5
-:000300330002003395
-:0003003B0002003B85
-:000300430002004375
-:0003004B0002004B65
-:000300530002675FE2
-:0003007B0002007B05
-:00070080007E14000002405253
-:0B663000001230641230FF12312F1230B080F2E52360197E14000009B101B9B4000280051419B101B9A50ABE212E78EB22C2AF7EB33FF1B40103126567D2AF22C2AF7EB33FF1B4011D74407AB391007EB3911A6CAA600FCA0BCA39CA59126424DA59DA39DA0BD2AF22C2AFE52260437E0701CBBE04038038397E0480007E200013502109A000044EA00519A000040A32095335335E5127680B09A000104EA00119A000102E040100A50ABE212E78D1752200D2AF22C2AFE52660367E20007E3001E526A55B68217CB2230A2B49320179BE34000068127EB121A54B7AB121CA19492230EF9924DA193E30A50ABE212E78D0D2AF22464F497C4CA94FD653035630595D5C8AC2AFE52460147E2000135007CAB812311CDAB8A50ABE212E78EFD2AF22CA2812354CDA2840090A2209B23533F4522422C2AFE52360147E2000135007CAB812314CDAB8A50ABE212E78EFD2AF227CB2230A2B492231578924316731D0323932A2330B337433DD34467E270179BE24000078247E24800009B20014CAB85EB01EDAB8680BCA197D121249457D21DA1930E6187E6000801EBE270189680D7A2701897E609C7A6301B980277E6301B9A5BE001F7E60017EB0007EA0C81261364011752FB3127335C2186C007A0301B9126486227E27017BBE24000078247E24810009B20014CAB85EB01EDAB8680BCA197D12124C727D21DA1930E6187E6000801EBE27018B680D7A27018B7E609C7A6301BA80277E6301BAA5BE001F7E60017EB0007EA0C81261364011752FB3127335C2196C007A0301BA126486227E27017DBE24000078247E24820009B20014CAB85EB01EDAB8680BCA197D12124F9F7D21DA1930E6187E6000801EBE27018D680D7A27018D7E609C7A6301BB80277E6301BBA5BE001F7E60017EB0007EA0C81261364011752FB3127335C21A6C007A0301BB126486227E27017FBE24000078247E24830009B20014CAB85EB01EDAB8680BCA197D121252CC7D21DA1930E6187E6000801EBE27018F680D7A27018F7E609C7A6301BC80277E6301BCA5BE001F7E60017EB0007EA0C81261364011752FB3127335C21B6C007A0301BC126486227E270181BE24000078247E24840009B20014CAB85EB01EDAB8680BCA197D121255F97D21DA1930E6187E6000801EBE270191680D7A2701917E609C7A6301BD80277E6301BDA5BE001F7E60017EB0007EA0C81261364011752FB3127335C21C6C007A0301BD126486227E270183BE24000078247E24850009B20014CAB85EB01EDAB8680BCA197D121259267D21DA1930E6187E6000801EBE270193680D7A2701937E609C7A6301BE80277E6301BEA5BE001F7E60017EB0007EA0C81261364011752FB3127335C21D6C007A0301BE126486227E270185BE24000078247E24860009B20014CAB85EB01EDAB8680BCA197D12125C537D21DA1930E6187E6000801EBE270195680D7A2701957E609C7A6301BF80277E6301BFA5BE001F7E60017EB0007EA0C81261364011752FB3127335C21E6C007A0301BF126486227E270187BE24000078247E24870009B20014CAB85EB01EDAB8680BCA197D12125F807D21DA1930E6187E6000801EBE270197680D7A2701977E609C7A6301C080277E6301C0A5BE001F7E60017EB0007EA0C81261364011752FB3127335C21F6C007A0301C012648622C2AF7E0701CBBE040000782874207AB391007EB3911530E51B7EB3911ABEB03F380C85312F12733574807AB3911E74207AB39115D2AF22353B36E83700371B37B6384E386938FB388438C57CB3BEB0092822752F0912733575570274207AB3910074017AB3911174407AB3910074017AB3911122C0A8C2AF236CAA2E5434E60B585089540102040810204080752FB01273350A2209B235334224D0A8227CB2230A3B4933355789343567359535C335F1361F364D367B36A91241BAD228D208C240C248C238C2306D007A0301B97E0400207A0701997E0400387A0701A9124127125FB70236D71241D7D229D209C241C249C239C2316D007A0301BA7E0400207A07019B7E0400387A0701AB124127125FE00236D71241F4D22AD20AC242C24AC23AC2326D007A0301BB7E0400207A07019D7E0400387A0701AD1241271260090236D7124211D22BD20BC243C24BC23BC2336D007A0301BC7E0400207A07019F7E0400387A0701AF1241271260320236D712422ED22CD20CC244C24CC23CC2346D007A0301BD7E0400207A0701A17E0400387A0701B112412712605B0236D712424BD22DD20DC245C24DC23DC2356D007A0301BE7E0400207A0701A37E0400387A0701B31241271260840236D7124268D22ED20EC246C24EC23EC2366D007A0301BF7E0400207A0701A57E0400387A0701B51241271260AD0236D7124285D22FD20FC247C24FC23FC2376D007A0301C07E0400207A0701A77E0400387A0701B71241271260D60236D77EA0D07E600F1261364005126486C2D722752FB11273350A52236D005905003212418312419FD0A822752FB21273350A2209B2353342237EB09C19B201B912314CD0A8227E0480004C020930000C74BF19B0000C09B000081930000C7C745E700168124440CAB809B00010440219B00010DAB8800254BF7C745E700868044408800254F70930000CCAB874BF19B0000CDAB819B000081930000C0A6209B635333E200A627C745E700268204227CAB8746119B000087E440010594601A909B00010440119B00010DAB88011F4522774A119B000087E440038594601A9D0A8227C747E0480004C020930000C74BF19B0000C09B000087C745E7001680444808002547F7C745E700868044402800254FD19B000081930000C0A6209B63533A5FDF4A5FECA283E200A62DA287C745E70026810A5ED422842267E440008594601998004A5EE52287C745E70046810A5ED422942267E440008594601998015A5EE52297C745E7002780A52267E440020594601991242A2D0A8227E0480004C020930000C74BF19B0000C194000101930000CD0A8227E0480004C020930000C74BF19B0000C194000181930000CD0A822752FB51273357E0480004C0209B0000C444019B0000CE558B4072309B000104EB00219B000100930000C74BF19B0000C09B0000454F719B000041930000CD0A822752FB61273357E0480004C02E558B407180930000C74BF19B0000C09B00004440819B000041930000C09B0000C54BF19B0000CD0A822752FB41273357A212F1273357A412F1273357EB0017EA0C87C64126136126486D0A822392E397539BC3A033A4A3A913AD83B1F752F55127335752F001273357A612F1273357A712F1273357E1701697E2701792D237E09B00B047A19B00B14BE14082C380F1B3478EC7A1701697A27017902464F7E14042D80EB752F55127335752F011273357A612F1273357A712F1273357E17016B7E27017B2D237E09B00B047A19B00B14BE140C2C380F1B3478EC7A17016B7A27017B02497C7E14082D80EB752F55127335752F021273357A612F1273357A712F1273357E17016D7E27017D2D237E09B00B047A19B00B14BE14102C380F1B3478EC7A17016D7A27017D024CA97E140C2D80EB752F55127335752F031273357A612F1273357A712F1273357E17016F7E27017F2D237E09B00B047A19B00B14BE14142C380F1B3478EC7A17016F7A27017F024FD67E14102D80EB752F55127335752F041273357A612F1273357A712F1273357E1701717E2701812D237E09B00B047A19B00B14BE14182C380F1B3478EC7A1701717A2701810253037E14142D80EB752F55127335752F051273357A612F1273357A712F1273357E1701737E2701832D237E09B00B047A19B00B14BE141C2C380F1B3478EC7A1701737A2701830256307E14182D80EB752F55127335752F061273357A612F1273357A712F1273357E1701757E2701852D237E09B00B047A19B00B14BE14202C380F1B3478EC7A1701757A27018502595D7E141C2D80EB752F55127335752F071273357A612F1273357A712F1273357E1701777E2701872D237E09B00B047A19B00B14BE14242C380F1B3478EC7A1701777A270187025C8A7E14202D80EB64
-:33354000007E0400017E147FF87E2400FE7D310B1A501B0A507E14401B0240747EF8005975B0DF7EB0017AB390007EF4403002408B12744EF52E7AA12D7A1158126B021240EB7EB33FF16003124379126BDED2AF0230007E0400FF7E1840607A1C000189187EB0017AB394007AB32C357EB0017AB3930089087E0400FF7E1840827A1C000189187EB0007AB3930089087E0800207E4404007E40007EE4409D0273507E0801597E442ADD7E40007EE440AF0273507E0800597E4401007E40537EE440C10273507557017556007E040008755458755508755108755301758901758A01758C00D28C7E0400027A054289F475B77F75B87F75B30175B201D2A92275B0DFE4D5E0FD75B0EF7E2480007E112E7EA00819A200102E240100A5D9F27E20001241830B20BE212E78F6227E0480004C0274BF19B0000C741019B00008748019B0000C7E54000219A0000419B00000740319B0000C7407206802740F19B00004306B1774BF19B0000C7428206802742019B00004740319B0000C74A719B00008740C19B00010227E0480004C02E419B0000409B00010540819B0001074A719B00008227CB2230A2B492241AA892441BA41D741F44211422E424B42684285C210C218C2087E04042D7A0701597A0701696D007A0701797A07018922C211C219C2097E04082D7A07015B7A07016B6D007A07017B7A07018B22C212C21AC20A7E040C2D7A07015D7A07016D6D007A07017D7A07018D22C213C21BC20B7E04102D7A07015F7A07016F6D007A07017F7A07018F22C214C21CC20C7E04142D7A0701617A0701716D007A0701817A07019122C215C21DC20D7E04182D7A0701637A0701736D007A0701837A07019322C216C21EC20E7E041C2D7A0701657A0701756D007A0701857A07019522C217C21FC20F7E04202D7A0701677A0701776D007A0701877A070197227CB2230A2B492242AD892442BD42D442EB4302431943304347435E304007205804C228800C304807205004C2288002D22822304107205904C229800C304907205104C2298002D22922304207205A04C22A800C304A07205204C22A8002D22A22304307205B04C22B800C304B07205304C22B8002D22B22304407205C04C22C800C304C07205404C22C8002D22C22304507205D04C22D800C304D07205504C22D8002D22D22304607205E04C22E800C304E07205604C22E8002D22E22304707205F04C22F800C304F07205704C22F8002D22F224466438ABEB002400122230A5B495543759954D3227EB0007AB394007AB32C3512447A7E04282D7A0701C17A0701C37E04242D7A0701C77A0701C97E04667F7A054B74207AB3910074607AB3911C74127AB3910674407AB39107741E7AB3911074487AB3911274107AB39113743F7AB3911474407AB3910074607AB3911C74147AB3910674407AB3910774167AB3911074087AB3911174207AB39113743F7AB3911474607AB3910074607AB3911C74167AB3910674207AB39107742F7AB3911074487AB3911274107AB39113743F7AB3911474027AB39106740F7AB391071240FA7E200012419F0B20BE212E78F6D2A8227EB0017AB394007AB32C3512447A75B0DFC2A82274027AB3910674017AB391077E20047CB2C2D7131313137AB3910074607AB3911C74027AB39112A5DAE522CA0912300E100134D5514074007AB3910074027AB391067EB3910774037AB391067EB391077EB391147EB391046353017E00542E0153A5E6F551801220021D755300855451D2027403800D30020EC2027E00562E0153A5E67AB39000DA0932456F458B45A745C345DF45FB46174633C0D0C0D1C0E0C0F0CA0BCA1BCA2BD201752F891273357EB3900060287E1480007E0000135013CA0BCA597CB0230A2B492245049924DA59DA0BA50AA508BE012E78E180D2300405C204126486DA2BDA1BDA0BD0F0D0E0D0D1D0D03209B1000820E014752F80127335543E0A5B7E4400FF695261AB89542209B1000820E014752F81127335543E0A5B7E4400FF695261EB89542209B1000820E014752F82127335543E0A5B7E4400FF6952622B89542209B1000820E014752F83127335543E0A5B7E4400FF6952626B89542209B1000820E014752F84127335543E0A5B7E4400FF695262AB89542209B1000820E014752F85127335543E0A5B7E4400FF695262EB89542209B1000820E014752F86127335543E0A5B7E4400FF6952632B89542209B1000820E014752F87127335543E0A5B7E4400FF6952636B89542210080122202803D20822752FA01273357E1480008006202803D2082209B10014CAB85EB01EDAB8680312494530300620E64FD2082230E602D2607E3701797E2701999D3240317D022E05327A05327A3701797E3701597D432D42BE44082C38687A470159752F941273357A512F1273351269F01060C422C2602D2368786D33801A7E270179BE240000686ABE27019928047E2701997E3701799D327D022E05327A05327A3701797E3701597D432D42BE44082C38137A470159752F941273357A512F1273350269F0752F941273357A512F1273359E44082D9D241269F07E34042D7D242D437A4701591269F0BE252078030246C222D2087E04042D7A0701597A070169752F94127335752F0012733522752F92127335D20409B10014CAB85482DAB878687E3701CB7E2701A92E2400022D32BE34040038347D022E05307A05307A3701CB7E3701C97D432D42BE44282C383C7A4701C97E2400002E2701A91B38200B357A512F127335026A63752F9912733509B1000454FA19B1000430380A09B1001054FE19B10010D21022807F7A512F1273359E44282D9D247E6400002E6701A99E24000240171B38600B35126A637E34242D7D242D437A4701C9026A637A39C07E34242D7A39D00B341B4480E59D327CB6540F23232344007A69B07A79700B35752F931273357A712F127335BD04682B7A0701C97E4701CB2D437A4701CB2E35307A353022D20409B1001420E013227E04242D80287E04242D802A7E04242D80CF7E0701CB7E2403FE9D2028407E0701C97E44282D7D600B04BD0468D27D700B04BD0468D07D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E702481E752F9912733509B1000454FA19B1000430380A09B1001054FE19B10010D21022DAB830E0D8BD326807CAB812481EDAB802494509B100187EA088752F90127335F52F127335A5FD5E500A681DA5FD5E50206804D2588002C258A5FD5E50806804D2508002C2501242BD026113752F9112733509B100147AB12F12733520E008D2047EA080026113D20430E1067EA080126113CAB85EB01CDAB868127EA0C00961000012613609B1001420E0DB22024872752F9512733522752F961273352210090122202903D20922752FA11273357E1481008006202903D2092209B10014CAB85EB01EDAB86803124C7230310620E64FD2092230E602D2617E37017B7E27019B9D3240317D022E05347A05347A37017B7E37015B7D432D42BE440C2C38687A47015B752F941273357A512F1273351269F01061C422C2612D2368786D33801A7E27017BBE240000686ABE27019B28047E27019B7E37017B9D327D022E05347A05347A37017B7E37015B7D432D42BE440C2C38137A47015B752F941273357A512F1273350269F0752F941273357A512F1273359E440C2D9D241269F07E34082D7D242D437A47015B1269F0BE252078030249EF22D2097E04082D7A07015B7A07016B752F94127335752F0012733522752F92127335D20409B10014CAB85482DAB878687E3701CB7E2701AB2E2400022D32BE34040038347D022E05307A05307A3701CB7E3701C97D432D42BE44282C383C7A4701C97E2401002E2701AB1B38200B357A512F127335026A63752F9912733509B1000454FA19B1000430390A09B1001054FE19B10010D21122807F7A512F1273359E44282D9D247E6401002E6701AB9E24000240171B38600B35126A637E34242D7D242D437A4701C9026A637A39C07E34242D7A39D00B341B4480E59D327CB6540F23232344017A69B07A79700B35752F931273357A712F127335BD04682B7A0701C97E4701CB2D437A4701CB2E35307A353022D20409B1001420E013227E04242D80287E04242D802A7E04242D80CF7E0701CB7E2403FE9D2028407E0701C97E44282D7D600B04BD0468D27D700B04BD0468D07D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E7024B4B752F9912733509B1000454FA19B1000430390A09B1001054FE19B10010D21122DAB830E0D8BD326807CAB8124B4BDAB8024C7209B100187EA088752F90127335F52F127335A5FD5E500A681DA5FD5E50206804D2598002C259A5FD5E50806804D2518002C2511242D4026113752F9112733509B100147AB12F12733520E008D2047EA080026113D20430E1067EA080126113CAB85EB01CDAB868127EA0C00961000012613609B1001420E0DB22024B9F752F9512733522752F9612733522100A0122202A03D20A22752FA21273357E1482008006202A03D20A2209B10014CAB85EB01EDAB86803124F9F30320620E64FD20A2230E602D2627E37017D7E27019D9D3240317D022E05367A05367A37017D7E37015D7D432D42BE44102C38687A47015D752F941273357A512F1273351269F01062C422C2622D2368786D33801A7E27017DBE240000686ABE27019D28047E27019D7E37017D9D327D022E05367A05367A37017D7E37015D7D432D42BE44102C38137A47015D752F941273357A512F1273350269F0752F941273357A512F1273359E44102D9D241269F07E340C2D7D242D437A47015D1269F0BE25207803024D1C22D20A7E040C2D7A07015D7A07016D752F94127335752F0012733522752F92127335D20409B10014CAB85482DAB878687E3701CB7E2701AD2E2400022D32BE34040038347D022E05307A05307A3701CB7E3701C97D432D42BE44282C383C7A4701C97E2402002E2701AD1B38200B357A512F127335026A63752F9912733509B1000454FA19B10004303A0A09B1001054FE19B10010D21222807F7A512F1273359E44282D9D247E6402002E6701AD9E24000240171B38600B35126A637E34242D7D242D437A4701C9026A637A39C07E34242D7A39D00B341B4480E59D327CB6540F23232344027A69B07A79700B35752F931273357A712F127335BD04682B7A0701C97E4701CB2D437A4701CB2E35307A353022D20409B1001420E013227E04242D80287E04242D802A7E04242D80CF7E0701CB7E2403FE9D2028407E0701C97E44282D7D600B04BD0468D27D700B04BD0468D07D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E7024E78752F9912733509B1000454FA19B10004303A0A09B1001054FE19B10010D21222DAB830E0D8BD326807CAB8124E78DAB8024F9F09B100187EA088752F90127335F52F127335A5FD5E500A681DA5FD5E50206804D25A8002C25AA5FD5E50806804D2528002C2521242EB026113752F9112733509B100147AB12F12733520E008D2047EA080026113D20430E1067EA080126113CAB85EB01CDAB868127EA0C00961000012613609B1001420E0DB22024ECC752F9512733522752F9612733522100B0122202B03D20B22752FA31273357E1483008006202B03D20B2209B10014CAB85EB01EDAB868031252CC30330620E64FD20B2230E602D2637E37017F7E27019F9D3240317D022E05387A05387A37017F7E37015F7D432D42BE44142C38687A47015F752F941273357A512F1273351269F01063C422C2632D2368786D33801A7E27017FBE240000686ABE27019F28047E27019F7E37017F9D327D022E05387A05387A37017F7E37015F7D432D42BE44142C38137A47015F752F941273357A512F1273350269F0752F941273357A512F1273359E44142D9D241269F07E34102D7D242D437A47015F1269F0BE2520780302504922D20B7E04102D7A07015F7A07016F752F94127335752F0012733522752F92127335D20409B10014CAB85482DAB878687E3701CB7E2701AF2E2400022D32BE34040038347D022E05307A05307A3701CB7E3701C97D432D42BE44282C383C7A4701C97E2403002E2701AF1B38200B357A512F127335026A63752F9912733509B1000454FA19B10004303B0A09B1001054FE19B10010D21322807F7A512F1273359E44282D9D247E6403002E6701AF9E24000240171B38600B35126A637E34242D7D242D437A4701C9026A637A39C07E34242D7A39D00B341B4480E59D327CB6540F23232344037A69B07A79700B35752F931273357A712F127335BD04682B7A0701C97E4701CB2D437A4701CB2E35307A353022D20409B1001420E013227E04242D80287E04242D802A7E04242D80CF7E0701CB7E2403FE9D2028407E0701C97E44282D7D600B04BD0468D27D700B04BD0468D07D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E70251A5752F9912733509B1000454FA19B10004303B0A09B1001054FE19B10010D21322DAB830E0D8BD326807CAB81251A5DAB80252CC09B100187EA088752F90127335F52F127335A5FD5E500A681DA5FD5E50206804D25B8002C25BA5FD5E50806804D2538002C253124302026113752F9112733509B100147AB12F12733520E008D2047EA080026113D20430E1067EA080126113CAB85EB01CDAB868127EA0C00961000012613609B1001420E0DB220251F9752F9512733522752F9612733522100C0122202C03D20C22752FA41273357E1484008006202C03D20C2209B10014CAB85EB01EDAB868031255F930340620E64FD20C2230E602D2647E3701817E2701A19D3240317D022E053A7A053A7A3701817E3701617D432D42BE44182C38687A470161752F941273357A512F1273351269F01064C422C2642D2368786D33801A7E270181BE240000686ABE2701A128047E2701A17E3701819D327D022E053A7A053A7A3701817E3701617D432D42BE44182C38137A470161752F941273357A512F1273350269F0752F941273357A512F1273359E44182D9D241269F07E34142D7D242D437A4701611269F0BE2520780302537622D20C7E04142D7A0701617A070171752F94127335752F0012733522752F92127335D20409B10014CAB85482DAB878687E3701CB7E2701B12E2400022D32BE34040038347D022E05307A05307A3701CB7E3701C97D432D42BE44282C383C7A4701C97E2404002E2701B11B38200B357A512F127335026A63752F9912733509B1000454FA19B10004303C0A09B1001054FE19B10010D21422807F7A512F1273359E44282D9D247E6404002E6701B19E24000240171B38600B35126A637E34242D7D242D437A4701C9026A637A39C07E34242D7A39D00B341B4480E59D327CB6540F23232344047A69B07A79700B35752F931273357A712F127335BD04682B7A0701C97E4701CB2D437A4701CB2E35307A353022D20409B1001420E013227E04242D80287E04242D802A7E04242D80CF7E0701CB7E2403FE9D2028407E0701C97E44282D7D600B04BD0468D27D700B04BD0468D07D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E70254D2752F9912733509B1000454FA19B10004303C0A09B1001054FE19B10010D21422DAB830E0D8BD326807CAB81254D2DAB80255F909B100187EA088752F90127335F52F127335A5FD5E500A681DA5FD5E50206804D25C8002C25CA5FD5E50806804D2548002C254124319026113752F9112733509B100147AB12F12733520E008D2047EA080026113D20430E1067EA080126113CAB85EB01CDAB868127EA0C00961000012613609B1001420E0DB22025526752F9512733522752F9612733522100D0122202D03D20D22752FA51273357E1485008006202D03D20D2209B10014CAB85EB01EDAB8680312592630350620E64FD20D2230E602D2657E3701837E2701A39D3240317D022E053C7A053C7A3701837E3701637D432D42BE441C2C38687A470163752F941273357A512F1273351269F01065C422C2652D2368786D33801A7E270183BE240000686ABE2701A328047E2701A37E3701839D327D022E053C7A053C7A3701837E3701637D432D42BE441C2C38137A470163752F941273357A512F1273350269F0752F941273357A512F1273359E441C2D9D241269F07E34182D7D242D437A4701631269F0BE252078030256A322D20D7E04182D7A0701637A070173752F94127335752F0012733522752F92127335D20409B10014CAB85482DAB878687E3701CB7E2701B32E2400022D32BE34040038347D022E05307A05307A3701CB7E3701C97D432D42BE44282C383C7A4701C97E2405002E2701B31B38200B357A512F127335026A63752F9912733509B1000454FA19B10004303D0A09B1001054FE19B10010D21522807F7A512F1273359E44282D9D247E6405002E6701B39E24000240171B38600B35126A637E34242D7D242D437A4701C9026A637A39C07E34242D7A39D00B341B4480E59D327CB6540F23232344057A69B07A79700B35752F931273357A712F127335BD04682B7A0701C97E4701CB2D437A4701CB2E35307A353022D20409B1001420E013227E04242D80287E04242D802A7E04242D80CF7E0701CB7E2403FE9D2028407E0701C97E44282D7D600B04BD0468D27D700B04BD0468D07D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E70257FF752F9912733509B1000454FA19B10004303D0A09B1001054FE19B10010D21522DAB830E0D8BD326807CAB81257FFDAB802592609B100187EA088752F90127335F52F127335A5FD5E500A681DA5FD5E50206804D25D8002C25DA5FD5E50806804D2558002C255124330026113752F9112733509B100147AB12F12733520E008D2047EA080026113D20430E1067EA080126113CAB85EB01CDAB868127EA0C00961000012613609B1001420E0DB22025853752F9512733522752F9612733522100E0122202E03D20E22752FA61273357E1486008006202E03D20E2209B10014CAB85EB01EDAB86803125C5330360620E64FD20E2230E602D2667E3701857E2701A59D3240317D022E053E7A053E7A3701857E3701657D432D42BE44202C38687A470165752F941273357A512F1273351269F01066C422C2662D2368786D33801A7E270185BE240000686ABE2701A528047E2701A57E3701859D327D022E053E7A053E7A3701857E3701657D432D42BE44202C38137A470165752F941273357A512F1273350269F0752F941273357A512F1273359E44202D9D241269F07E341C2D7D242D437A4701651269F0BE252078030259D022D20E7E041C2D7A0701657A070175752F94127335752F0012733522752F92127335D20409B10014CAB85482DAB878687E3701CB7E2701B52E2400022D32BE34040038347D022E05307A05307A3701CB7E3701C97D432D42BE44282C383C7A4701C97E2406002E2701B51B38200B357A512F127335026A63752F9912733509B1000454FA19B10004303E0A09B1001054FE19B10010D21622807F7A512F1273359E44282D9D247E6406002E6701B59E24000240171B38600B35126A637E34242D7D242D437A4701C9026A637A39C07E34242D7A39D00B341B4480E59D327CB6540F23232344067A69B07A79700B35752F931273357A712F127335BD04682B7A0701C97E4701CB2D437A4701CB2E35307A353022D20409B1001420E013227E04242D80287E04242D802A7E04242D80CF7E0701CB7E2403FE9D2028407E0701C97E44282D7D600B04BD0468D27D700B04BD0468D07D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E7025B2C752F9912733509B1000454FA19B10004303E0A09B1001054FE19B10010D21622DAB830E0D8BD326807CAB8125B2CDAB8025C5309B100187EA088752F90127335F52F127335A5FD5E500A681DA5FD5E50206804D25E8002C25EA5FD5E50806804D2568002C256124347026113752F9112733509B100147AB12F12733520E008D2047EA080026113D20430E1067EA080126113CAB85EB01CDAB868127EA0C00961000012613609B1001420E0DB22025B80752F9512733522752F9612733522100F0122202F03D20F22752FA71273357E1487008006202F03D20F2209B10014CAB85EB01EDAB86803125F8030370620E64FD20F2230E602D2677E3701877E2701A79D3240317D022E05407A05407A3701877E3701677D432D42BE44242C38687A470167752F941273357A512F1273351269F01067C422C2672D2368786D33801A7E270187BE240000686ABE2701A728047E2701A77E3701879D327D022E05407A05407A3701877E3701677D432D42BE44242C38137A470167752F941273357A512F1273350269F0752F941273357A512F1273359E44242D9D241269F07E34202D7D242D437A4701671269F0BE25207803025CFD22D20F7E04202D7A0701677A070177752F94127335752F0012733522752F92127335D20409B10014CAB85482DAB878687E3701CB7E2701B72E2400022D32BE34040038347D022E05307A05307A3701CB7E3701C97D432D42BE44282C383C7A4701C97E2407002E2701B71B38200B357A512F127335026A63752F9912733509B1000454FA19B10004303F0A09B1001054FE19B10010D21722807F7A512F1273359E44282D9D247E6407002E6701B79E24000240171B38600B35126A637E34242D7D242D437A4701C9026A637A39C07E34242D7A39D00B341B4480E59D327CB6540F23232344077A69B07A79700B35752F931273357A712F127335BD04682B7A0701C97E4701CB2D437A4701CB2E35307A353022D20409B1001420E013227E04242D80287E04242D802A7E04242D80CF7E0701CB7E2403FE9D2028407E0701C97E44282D7D600B04BD0468D27D700B04BD0468D07D549D50BD2540027D257D3209B10014CAB8541FB40131DAB87E19B07A09B00B041B2478E7025E59752F9912733509B1000454FA19B10004303F0A09B1001054FE19B10010D21722DAB830E0D8BD326807CAB8125E59DAB8025F8009B100187EA088752F90127335F52F127335A5FD5E500A681DA5FD5E50206804D25F8002C25FA5FD5E50806804D2578002C25712435E026113752F9112733509B100147AB12F12733520E008D2047EA080026113D20430E1067EA080126113CAB85EB01CDAB868127EA0C00961000012613609B1001420E0DB22025EAD752F9512733522752F96127335227C027E1480004C2009B10018A5FD5E50206804D2588002C258A5FD5E50806804D2508002C2500260FF7C027E1480004C2009B10018A5FD5E50206804D2598002C259A5FD5E50806804D2518002C2510260FF7C027E1480004C2009B10018A5FD5E50206804D25A8002C25AA5FD5E50806804D2528002C2520260FF7C027E1480004C2009B10018A5FD5E50206804D25B8002C25BA5FD5E50806804D2538002C2530260FF7C027E1480004C2009B10018A5FD5E50206804D25C8002C25CA5FD5E50806804D2548002C2540260FF7C027E1480004C2009B10018A5FD5E50206804D25D8002C25DA5FD5E50806804D2558002C2550260FF7C027E1480004C2009B10018A5FD5E50206804D25E8002C25EA5FD5E50806804D2568002C2560260FF7C027E1480004C2009B10018A5FD5E50206804D25F8002C25FA5FD5E50806804D2578002C2570260FF54F0C4A5FFC4A54F752F90127335F52F12733522CA195E20074CA27E742C2DCA797A79A00B747A79B00B74DA797E30027E64000202615ECA195E20074CA27E742C2DCA797A79A00B747A79B00B747A79600B74DA797E30037E64000302615ED2047E2701CB2D26BE240400382E7E0701C97E44282D7E79A07A09A00B040B74BD046823A5DBEF7A2701CB7E25302D267A25307A0701C9DA19C2D722752F9A127335DA19D2D7227E04242D80D748F14665475F492A452A452A4856452A496E452A452A452A452A452A452A452A4975452A452A452A452A452A452A452A452A452A452A452A452A452A452A452A4C1E49924A8C4C57452A452A4B83452A4C9B452A452A452A452A452A452A452A4CA2452A452A452A452A452A452A452A452A452A452A452A452A452A452A452A4F4B4CBF4DB94F84452A452A4EB0452A4FC8452A452A452A452A452A452A452A4FCF452A452A452A452A452A452A452A452A452A452A452A452A452A452A452A52784FEC50E652B1452A452A51DD452A52F5452A452A452A452A452A452A452A52FC452A452A452A452A452A452A452A452A452A452A452A452A452A452A452A55A55319541355DE452A452A550A452A5622452A452A452A452A452A452A452A5629452A452A452A452A452A452A452A452A452A452A452A452A452A452A452A58D256465740590B452A452A5837452A594F452A452A452A452A452A452A452A5956452A452A452A452A452A452A452A452A452A452A452A452A452A452A452A5BFF59735A6D5C38452A452A5B64452A5C7C452A452A452A452A452A452A452A5C83452A452A452A452A452A452A452A452A452A452A452A452A452A452A452A5F2C5CA05D9A5F65452A452A5E91452A5FA9452A452A452A452A452A452A452A5FB0452A452A452A452A452A452A452A452A452A452A452A452A452A452A452ACAB8752F021273357EB3910320E52030E005126B05803030E105126486802830E2051263F5802030E31D12656180187EB3910430E10302675F30E605126C6A800620E203020080DAB832752F10127335CA0BCA39CA5974407AB391007EB3911A6CAABEB040280A126424DA59DA39DA0B2274207AB3911480F17E3701C52D35BE340400382F7A3701C57E3701C37D432D45BE442C2C38257A4701C3752F111273357AB12F12733512679F74207AB3911412663022752F1612733580F4752F121273357AB12F1273359E442C2D9D5412679F7E34282D7D542D4380BC752F18127335CA09CA39CA2B74207AB391007E63911A74107AB391147EB0809CB660386CAA7E3701CB9D3540377A3701CB7E3701C77D432D45BE44282C383B7A4701C77D451268D47EB3911E20E513752F191273357A912F127335DA2BDA39DA092280342D536D33600280C17E04242D7A0701C97A0701C780E1CA599E44282D9D541268D47E34242D7D542D437A4701C71268D4DA4980B07E0F2C3E0B0C7A0F2C3E74207AB3911E74607AB3911C74027AB3911280A57E2F2C5E0B2C7A2F2C5E74207AB3911E74607AB3911C74027AB39112801FDA2BDA1BDA0B22752F28127335CA0BCA1BCA2B74607AB3910074107AB391147EB3911A70DB7E0D307E1D347E2D387E3D3C7E85407D904D914D924D934D944D954D964D974D9868B87A1391177A0391177A3391177A2391177A5391177A4391177A7391177A6391177A9391177A8391173073227AB391177AA391177AD391177AC391177AF391177AE391177D787AF391177AE391177EB3911E30E50302653C752F29127335207308752F0A1273358006752F1212733574807AB3911E6D007D107A0D307A0D347A0D387A0D3C7A0540DA2BDA1BDA0B227E3701C54D33683B7E0701C17E542C2D9D50BD3540027D35CA397E654B9964DA397E0701C59D037A0701C52E3701C17A3701C1BE342C2C28C77E34282D7A3701C180BD22752F531273357E154D8011752F511273350B08100B059E340002284D7CB220E7275407230A2B4922391E7CB254780303037C2B9D13401A68127A154D7A254F7E6467097A654B89240267177E64667F80F22D139D31CA397D312D10CA19CA299924DA29DA09DA3980A27A154D7E6466F54D3378097CB220E72A7E6466747A654B22752F521273357E214D7E09300B041B34788980D4752F541273357E154D7E254F80905E200754787E44677D30E6164D3368261B347E09400B047E4434FA20E3047E446785CA09CA399944DA39DA097E64667F4D3368A689647A154DF54F7E64675880997E154DE54F80C4C0D0C0D1C0E0CA19752FFE1273357E140053024052DA19D0E0D0D1D0D03203A5CB19B1800022227E2400007FE17EA002A47E0468B19D057EB0287AB395008904CA29B480E27E2400007FE17E00287A039500E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A37E00007A039500DA29227E2400007FE17EA002A47E0469E69D057EB0387AB395008904CA29B480E27E2400007FE17E00387A039500E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A37E00007A039500DA2922CA29CA19CA587E2400007FE1DA587E5402209CB5A47E50305E20072C527A5395002E546A178954E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A37E00007A039500DA19DA2922CA19CA587E2400007FE1DA587E5402389CB5A47E50205E20072C527A5395002E546A888954E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A3E0A37E00007A039500DA1922026BA8CA0BCA1BCA2BCA3BCA4BCA5BCA6BCA7BCAEB74007AB391007EB32C7FB40002801CB401197EB3911454146805126B6C80237EB3911430E51C126CAA80177EB3911430E505126CAA800B7EB3911454146803126B6CDAEBDA7BDA6BDA5BDA4BDA3BDA2BDA1BDA0B2220E419752F0A1273357EB32C7E700A7EB32C7FB4011F026C040271F2752F0B12733574147AB391147EB32C7FB4020C126BB4026BA874047AB39114227E00007A032C7F7A032C80227EB32C7654606005B4401E801C7EB32C77B40515752F711273357EB32C797EA0017AA391067AB391072274007AB3910074107AB3911222BE572C7C28047E572C7C7A0F2C827A572C8674107AB391122274007AB391007EB3911A70537EB3911420E44C7EEF2C827EF72C867E072C864D0068217E0000E07AB39117A3A5081BF46806A5B810F080197EB0007AB32C7FBE0010680D7EB0007AB32C7F74807AB3911E7AEF2C827AF72C86752F0612733574047AB3911422CA0BCA1BCA2BCA3BCA4BCA5BCA6BCA7BCAEB752F0312733574007AB32C7E74007AB3910074017AB39112126D19DAEBDA7BDA6BDA5BDA4BDA3BDA2BDA1BDA0B22752F031273357EB32C80B4021174007AB32C807AB32C7F74207AB3911422B401467EB3910420E6427E23911A7C327E132C812C217A232C817E00002E042C887EB391167A09B00B04A5DBF474207AB39114752F701273357EB32C817EA32C7DBCAB7803126DB9220271F2DA59026C7C74E07AB391007E0391107E1391117E3391127E2391137E5391147E4391157E7391167E6391177A0F2C767A1F2C7A752F041273357A012F1273357A112F1273357A212F1273357A312F1273357A412F1273357A512F1273357A612F1273357A712F12733574007AB3910074407AB39104126D8D226D007E1401027A072C867A032C817EB32C7620E70F7A232C807A332C7FBE072C7C6809227A332C807A232C7F7EB32C7654E3232330E002D2E530E702D2E430E50630E4030271F2543EF5F003541FC325F0906DE57584FF73026FA0026E2D027039027054026F37026EC202708502708502708802708802708802708802708802708802708802708802708E02716002708B02708B02708B02708B02708B02708B74007AB3910074607AB3911C7EB32C77B4062A7EB32C7860797C0B7E132C797E172C7A752F721273357A012F1273357A112F1273351272374058026BEBB4081C752F741273357EB33FF17E082C887A0C00007A0BB07E540001026BEBB40033752F751273357E082C887A0C0000CA0B7EB33FF230E00774027A0BB0800574007A0BB00B1474007A0BB07E540002DA0B026BEB0271F274007AB3910074607AB3911C7EB32C77B4005F752F761273357EB32C7B540FB402057EB0608017B400057EB000800F7EB32C7B20E7057EB04080037EB0207AB391007EB3911130E0047401800274007E082C887A0C0000CA0B7A0BB00B1474007A0BB074007AB391007E540002DA0B026BEB0271F27EB32C7B540FB402057EB0608017B400057EB000800F7EB32C7B20E7057EB04080037EB0207AB391007EB32C79B400267EB32C77B4010E752F7712733574017AB39112801BB4030E752F7812733574017AB39111800A74007AB391001271F22274007AB39100026BDE7EB32C77B4091F752F791273357EB32C79BEB33FF1680DCAB8124379DAB850767AB33FF1806DB40508752F7A1273358062B40319752F7B1273357EB32C79B401557EB33FF244017AB33FF28046B40119752F7C1273357EB32C79B401397EB33FF254FE7AB33FF2802AB4072A7EB32C7860247C0B7E132C797E172C7A752F731273357A012F1273357A112F1273351272714003026BDE0271F27EB32C77B40BF6752F7D1273357EB32C797EA32C7B4CAB78E480DF74007AB3910074607AB3911C7EB32C77B40ACF752F7E1273357EB32C7970C37E082C887A0C00007A0BB07E540001026BEB0271F20271F20271F27EB32C77B40420752FC31273357E0400017E172C787E182C887A1C00007E472C7C12734102715AB40642752FC11273357E5800007A5C00FE7DCA7ED72C787E782C887A7C00007E772C7C752FC1127335C0A8C2AF7E40017A43940012737A7E432C357A439400D0A840658060B40024C2AF7EB0017AB394007AB32C35126BDEE48DEF8DEF8DEFD5E0F7C0D1CA02FFCA06000032B4092074037AB391067E2391077E572C784D5568054E200280035E20FD7A2391078016B40716C2AF7E072C7A7E172C78C0D1CA18CA38CA2832026BDE0271F274007AB3910074607AB3911C7EB32C77B40315752FC21273357E0400017E172C787E572C7C026BEBB40541752FC0127335C0A8C2AF7E40017A4394007E082C887A0C00007E2400FE7E372C787E472C7C1273417E432C357A439400D0A87E082C887A0C00007E572C7C026BEBB401207E00007E1001752F721273357A012F1273357A112F1273351272374003026BEB0271F2752F071273357EB0027AB3900074007AB3910074407AB3911574017AB391117EB391155460BEB040680874207AB3911580ED74017AB3911274047AB3911474FF7AB32C7E22C0A8C2AF7E40017A4394001272BE401F7E082C887A0C0000CA0BCA49127341DA59DA0B7E432C357A439400D0A8C3227E432C357A439400D0A822C0A8C2AF7E40017A4394001272BE40317E5800007A5C00FE7F617E782C887A7C00007E772C7CBD747817752FC112733512737A400C7E432C357A439400D0A8C3227E432C357A439400D0A8D3227E2400FE7E347FCA0B1A50C5F07D627D757D877E347FC27E1BB07E347F03B401047E347FCC7E1BB0BC0B50493E003E000A502D750B3A3069530002BD3850022D38BC1B50303E103E100A512D35694100020B1A30BD3850022D38BE44FFFF78057E1B900A494D44680CBE4400FF28047E4400FFC322D32274
-:00047FC60002000300B2
-:0148733500CA087E012F7A033FF0DA08227E1BC07A0BC00B140B341B4478F2227F6F7FF01BFC7C547D328008CA1BCA1BCA1BCA1B9E44001050F22E4400106806CA481B4478FA7FF689E4CA6B5ED4003F68207E8400409D8DDA6BBD873816CA797D781273A4DA7940089D7868028005C2D722DA6B7EC0037ED0007AD3900074AA39B55555745539B52AAA74A039B555557E0400409D7050062D707D076D777C317E7B007A6B000B7C0B6CA5D9F37F161B1C7E5427107E1B10BC1068061B5478F5802F6D007C207F169F107F279F207E2B007E1B10BC0178190B2C0B1CA5DBEF7CB620E0066CDC7AD390004D777890C2D722D2D7220004000400000604020400020104010200000000000000000202020202040008100210040208000101087E187FBD7A1C00FE0B1A005E101FBE1014381A0A51237E1874247A1C00FF2D350B1A506008A5B802034EA0082280FECB
-:0000000001FF
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//* This program is free software; you can redistribute it and/or modify
-//* it under the terms of the GNU General Public License as published by
-//* the Free Software Foundation; either version 2 of the License, or
-//* (at your option) any later version.
-//**************************************************************
diff --git a/firmware/edgeport/down3.bin.ihex b/firmware/edgeport/down3.bin.ihex
deleted file mode 100644
index 7935e520878a..000000000000
--- a/firmware/edgeport/down3.bin.ihex
+++ /dev/null
@@ -1,815 +0,0 @@
-:100000000450000087329A0227BF0221B20000008C
-:10001000000002001E0000000000000000000000C0
-:10002000000002011A853F8C85408AC0E0C0D0C024
-:10003000F0C082C083C000C001C002C003C004C0C1
-:1000400005C006C007E53E2408F8E6602BE53E241F
-:1000500010F8A681E53E75F021A42405F582E4346C
-:10006000F8F583788CE58104C398F9942240030263
-:1000700011DCE6F008A3D9FA7408253EF8053E081D
-:10008000E65480700CE53EB407F37808753E0080B6
-:10009000EFE53E2410F88681E53E75F021A42405A5
-:1000A000F582E434F8F583788CE58104C398F9E0AF
-:1000B000F608A3D9FAD007D006D005D004D003D0D3
-:1000C00002D001D000D083D082D0F0D0D0D0E032A6
-:1000D00030014D30B44810004590FF08E05420F83E
-:1000E00090FF48E05420F990FF10E05420FA90FF70
-:1000F00050E05420FB7400F58274F8F583E0C8F0FA
-:100100006860027E04A3E0C9F06960027E04A3E097
-:10011000CAF06A60027E04A3E0CBF06B60027E044A
-:1001200022C0E0C0D0C0F0C082C083C000C001C007
-:1001300002C003C004C005C006C0077415F5827470
-:10014000F9F583E060237466F58274F9F583E014B1
-:10015000F0701674FFF0741CF58274F9F583E0609A
-:100160000414F07004C29080FC90FF937481F0E559
-:100170008194FD40030211DC85418D85428B74B270
-:10018000F58274FAF583E0B4011BC082C08390FF4E
-:100190004AE030E72C90FF4EE030E725D083D08254
-:1001A0007402F08020B4021DC082C08390FF7AE008
-:1001B00030E70512284E8009D083D0827403F08086
-:1001C00004D083D082A3E0B4011BC082C08390FF1F
-:1001D00052E030E72C90FF56E030E725D083D08204
-:1001E0007402F08025B40222C082C08390FF7AE0BE
-:1001F00030E70512284E8009D083D0827403F08046
-:1002000009D083D08280030202907416F58274F9BB
-:10021000F583E02004F12002033001EB7419F5822C
-:1002200074F9F583E014FCF0A3E0FDA3E0FE6404A0
-:10023000700FEC70627E011200C97C0A7DFA020226
-:10024000611200C9EE6404601DEC704B7C0AED1471
-:10025000FD7015EE640260077E027D320202617E4F
-:10026000017DFA0202617C0A7419F58274F9F58342
-:10027000ECF0A3EDF0A3EEF014601820E10F2001E4
-:1002800006D2B1C2B08010C2B1D2B0800AC2B1C22F
-:10029000B08004D2B0D2B1781979097A07E7700436
-:1002A000A600800BE6600816E67004E74480F708B5
-:1002B00009DAEAE53D601314F53D700EE53E2408C9
-:1002C000F87600121157D28CD28DD007D006D00507
-:1002D000D004D003D002D001D000D083D082D0F09F
-:1002E000D0D0D0E03290FF04E090FAB9F090FF0651
-:1002F000E0FCA3E0FAECFFEAFEEFC39408EE940101
-:10030000500280047E017F088E3B8F3C90FF02E00C
-:10031000FCA3E0FAECFFEA90FABDF0EFA3F0121CA8
-:10032000E0E4F54DE54DC39402500F121CC1E412F8
-:100330001AE8054D04121CB280EA121CE090FF007E
-:10034000E0FF546024C070030208F32440600302FD
-:100350000F6E90FAB9E0FE540FF54DEE30E703D37F
-:100360008001C3920A90FF01E0121BFC0384000489
-:100370005701056A0306310506730607D508081DEF
-:100380000908790A08B90B00000F6EE53520E7036C
-:10039000020F6E90FABDE07002A3E06003020F6EE0
-:1003A000E53C6402453B6003020F6EEF541F14608E
-:1003B0002B14604724026003020F6EEE6003020FED
-:1003C0006E121CC17401121AE87867E630E0081258
-:1003D0001CC17402121AE87F0202326EE53520E178
-:1003E0000990FAB9E06003020F6E90FAB9E0D39475
-:1003F000014003020F6E7F0202326EE53520E10EEE
-:1004000090FAB9E0FF600764806003020F6E120F7C
-:10041000FA4003020F6EE54D7019300A0B90FF8011
-:10042000121CBE121AE8802490FF82121CBE121AFF
-:10043000E88019154D300A0B121D55121CBC121AFA
-:10044000E88009121D63121CBC121AE8121CC112AA
-:100450001AA260057401121AE87F0202326EE535B5
-:1004600030E703020F6EE53C453B6003020F6E125E
-:100470001D7914602D14605924026003020F6E90E0
-:10048000FABDE07004A3E064016003020F6E90FA0D
-:10049000B9E06003020F6E7867E654FEF6E4FF02EF
-:1004A000326EE53520E10620E003020F6EE53530BF
-:1004B000E00990FAB9E06003020F6EE53530E10C17
-:1004C00090FAB9E0D394014003020F6EE4FF0232C8
-:1004D0006E90FABDE07002A3E06003020F6E120F8F
-:1004E000FA4003020F6EE53520E10620E003020F1B
-:1004F0006EE53530E007E54D6003020F6EE54D70A7
-:100500000F90FF82E054F7F090FF80E054F7F02264
-:10051000E54D24FE602024FB603424067035300A4B
-:100520000CA20AE433FD7F03122E798026E4FD7FBE
-:1005300003122E79801D300A0CA20AE433FD7F04D9
-:10054000122E79800EE4FD7F04122E7980057F87BC
-:100550001231EF154D300A0B121D55F583E054F79B
-:10056000F08009121D63F583E054F7F0E4FF0232D6
-:100570006EE53530E703020F6EE53C453B60030254
-:100580000F6E121D7914602D146055240260030251
-:100590000F6E90FABDE07004A3E064016003020FE7
-:1005A0006E90FAB9E06003020F6E7867E64401F6D8
-:1005B000E4FF02326EE53520E10620E003020F6E13
-:1005C000E53530E007E54D6003020F6EE53530E1BB
-:1005D0000AE54DD394014003020F6EE4FF02326E30
-:1005E00090FABDE07002A3E06003020F6E90FAB9CA
-:1005F000E0FF12323F4003020F6EE53520E1062096
-:10060000E003020F6EE54D7009300A03021E14026A
-:100610001DDFE53520E103020F6E154D300A0B1288
-:100620001D55F583E04408F08009121D63F583E051
-:100630004408F0E4FF02326EE53530E703020F6E46
-:10064000E53C453B6003020F6E90FAB9E06003029F
-:100650000F6E121D796003020F6EE53530E1030263
-:100660000F6E90FABEE090FFFFF0E06005433501A9
-:1006700080035335FEE4FF02326EE53520E70302C6
-:100680000F6EE53C453B7003020F6E121D7960034F
-:10069000020F6E90FABDE0FCA3E0FDEC24FE603A90
-:1006A00014607524026003020F6EED6003020F6E8A
-:1006B000121CE0121E0D7D03120FB56003020F6EB7
-:1006C000120F7290FAB6E0FDA3121D2B120FD1503B
-:1006D000028004AE3BAF3C021002121CE090F916FF
-:1006E000E030E40D121E0D7D14120FB56010020FE4
-:1006F0006E121E0D7D041210096003020F6E120FA0
-:100700007290FAB6E0FDA3121D2B120FD150028099
-:1007100004AE3BAF3C021002121E0D7D0512100903
-:100720006003020F6E7B017AFA79B6121D287D01F3
-:1007300012269890FAB7E475F003121B1C90FABECB
-:10074000E090FAB5F0E4F54C90FAB5E0FFE54CC363
-:100750009F5024121D22121014FFFD90FAB7E48D51
-:10076000F0121B1C90FAB6E0C39FF0D39400500324
-:10077000020F6E054C80D1121D2212101424FEFFB0
-:1007800090FAB6F0FDA3E475F002121B1C7AF97919
-:10079000727B018B368A378938E92402F9E43AFA08
-:1007A000121D281226988F4C054C054C121CC1E5D1
-:1007B0004C121AE8121CC19000017403121AFAAF0D
-:1007C0004C7E00C3EF953CEE953B50028004AE3B5F
-:1007D000AF3C8E398F3A022CD8020F6EE53520E7F8
-:1007E00003020F6EE53C6401453B6003020F6E900F
-:1007F000FAB9E06003020F6E90FABDE07002A3E068
-:100800006003020F6E121D796003020F6EE5352042
-:10081000E00620E103020F6E75360075370075386B
-:1008200032020FF1E53530E703020F6EE53C453B40
-:100830006003020F6E90FAB9E06003020F6ED3906E
-:10084000FABEE0940190FABDE094004003020F6EFE
-:10085000121D796003020F6EE53520E00620E103EA
-:10086000020F6E90FABEE0F532E5327008433501B2
-:100870005335FD80065335FE433502E4FF02326EE8
-:10088000E53520E703020F6EE53C6401453B60035C
-:10089000020F6E90FAB9E06003020F6E90FABDE0AD
-:1008A0007002A3E06003020F6E121D796401600301
-:1008B000020F6EE53520E103020F6E7F0102326EFA
-:1008C000E53530E703020F6EE53C453B6003020F60
-:1008D0006ED390FABEE0940090FABDE0940040031D
-:1008E000020F6E121D7964016003020F6EE5352060
-:1008F000E103020F6EE4FF02326E90FF01121E242C
-:10090000EF121AE890FAB9121E24900001EF121AA1
-:10091000FA900002E4121AFA7403121CB290FABDA3
-:10092000E0FFA3E0853882853783CFF0A3EFF09016
-:10093000FF01E0121BFC097B02099D0409BF0509A8
-:10094000EB060A09070A27080A45090A630B0B1870
-:10095000800DB7810DE8820B5F830BA8840BC785E0
-:100960000C0C860C57870CE8880D73890A81920A53
-:1009700081930DA0B00E9BC00EC7C10ED8C200005F
-:100980000F5DE53520E7057F050231A9121D716075
-:1009900003047009EFFD7C007F0702115EE4FD7F18
-:1009A00007022FB4E53520E7057F050231A9121DA6
-:1009B000716003047009EFFD7C007F0C02115EE49E
-:1009C000FD7F07022FB4E53530E703020F71121ED9
-:1009D000425006E53C453B70057F020231A990FA82
-:1009E000B9E024FE24FD5002800302322C7F07026E
-:1009F00031A9E53530E703020F71121D7160030460
-:100A00007009EFFD7C007F0802115E7F070231A9AB
-:100A1000E53530E703020F71121D716003047009A0
-:100A2000EFFD7C007F0902115E7F070231A9E535E9
-:100A300030E703020F71121D716003047009EFFDAE
-:100A40007C007F0A02115E7F070231A9E53530E79D
-:100A500003020F71121D716003047009EFFD7C0029
-:100A60007F0B02115E7F070231A9E53530E70302F3
-:100A70000F71121D716003047009EFFD7C007F0E81
-:100A800002115E7F070231A9E53530E756121D7964
-:100A9000704A90FF02E0F54CE54CB48205754C615C
-:100AA0008012E54CB48305754C628008E54CC45453
-:100AB000F004F54C121C22121E3B1225FA121D895D
-:100AC000121ABB600512327A800685333985343AB2
-:100AD0007536017537F9753875022CD8E4FD7F0538
-:100AE000022FB4121D7960057F050231A9121E4242
-:100AF00040057F030231A990FF02E0F54CE54CB4BC
-:100B00008205754C618012E54CB48305754C62809A
-:100B100008E54CC454F004F54C121C2202322C128D
-:100B20001E4C122AC7121D33E0547FF0000000E073
-:100B300090FABAF07868121BD8900002121ABB30F3
-:100B4000E7F2900002E4121AFA90FABAE04480FF49
-:100B5000F0787CE6FC08E68C83121D3BEFF0123245
-:100B600084E4FF0231A990FAB9E06401701F90FAA1
-:100B7000BDE0FF7E007006A3E0F590802DC2AFEFD0
-:100B8000F4529090FABEE04290D2AF801D90FABD30
-:100B9000E0FF7E007006A3E0F5B0800EC2AFEFF478
-:100BA00052B090FABEE042B0D2AFE4FF0231A912D7
-:100BB0001CE090FAB9E0B4010A121CC1E590121AC7
-:100BC000E88008121CC1E5B0121AE8020FF190FA91
-:100BD000B9E0FF2413121CF120E133121D80EF2431
-:100BE000FC601804702890FABAE0600990FFA4E055
-:100BF0004410F08019121E56F0801390FABAE0608B
-:100C00000990FFB4E04410F08004121E5DF0E4FF90
-:100C10000231A990FAB9E0FF2413121CF120E13946
-:100C2000121D80EF24FC601B04702E90FABAE06065
-:100C30000990FFA4E04420F0801F90FFA4E054DF5F
-:100C4000F0801690FABAE0600990FFB4E04420F01A
-:100C5000800790FFB4E054DFF0E4FF0231A9121DD9
-:100C600080121D71604D046003020CE390FABAE03B
-:100C7000600F90FFA4121CEA30E16F121E2C020CD0
-:100C8000E390FFA4E054FB121CEDFE30E15C30E287
-:100C90001130B405121E2C805190FFA4E054FDF0D9
-:100CA0008048309505121E2C804090FFA4E054FD32
-:100CB000F0803790FABAE0601290FFB4121CEA306C
-:100CC000E12890FFB4E04402F0801F90FFB4E054AC
-:100CD000FB121CED30E11330930990FFB4E04402A5
-:100CE000F0800790FFB4E054FDF0E4FF0231A91258
-:100CF0001D8090FAB9E024FC604004707890FABA44
-:100D0000E0601D90FFA2E04440F0A3E0FF30E76503
-:100D1000D203A3E054DFF090FFA3EF547FF080559F
-:100D200030030E90FFA3E04480F0C203A3E0442010
-:100D3000F090FFA2E054BFF0803B90FABAE0601D53
-:100D400090FFB2E04440F0A3E0FF30E728D204A3D4
-:100D5000E054DFF090FFB3EF547FF0801830040EC2
-:100D600090FFB3E04480F0C204A3E04420F090FF81
-:100D7000B2E054BFF0E4FF0231A9121CE090FAB9CE
-:100D8000E024FC600F04701690FFA6E0121CC11254
-:100D90001AE8800A90FFB6E0121CC1121AE87539F1
-:100DA00000753A01022CD890F9157401F090F91CE5
-:100DB0007419F090F96674FFF0E4FF0231A9E4FFC2
-:100DC0001231A9121DE77F0312126190F916E0306B
-:100DD000E40890FF937480F0801090FFFCE0547F53
-:100DE000F07FFF7E001230D3C290C2AF0080FDE4DE
-:100DF000F54EF54F90FABF743EF0A3E4F090FAB7C9
-:100E0000F0A37415F0E0543FFFC374409F90FABC08
-:100E1000F0D39400E4943E400890FAC0E090FABC0D
-:100E2000F0120F98E53145307073121CFA90FABF3A
-:100E3000121E066027D3EF9440EE9400400890FA0B
-:100E4000BC7440F0800890FAC0E090FABCF0120F39
-:100E500098E53145307046121CFA80D1754C0290ED
-:100E6000FABFE4F0A304F090FAB7E4F0A3740FF033
-:100E70007B007A00794C90FAC0E0F54A7D0F7C0047
-:100E80001229607530008F317B007A00794CE4F5CF
-:100E90002DF52E7D01122698E4F530F531AF3102A3
-:100EA00031A9121D8030E710E0540F90F967F0D39C
-:100EB00094004015C295801190FABAE0540F90F951
-:100EC00065F0D394004002C294E4FF0231A9121EDF
-:100ED0004CBF0104D2938002C293E4FF0231A912F5
-:100EE0001D80540314600A14600F146008240370FA
-:100EF0002BD2918027C2918023121E56120FC06000
-:100F000004D291801790FFA4E04410120FC0FFBFDD
-:100F1000A004C2918002D291121E56F090FABAE05B
-:100F2000540CFF1313543F14600A14600F1460082C
-:100F30002403702BD2928027C2928023121E5D124E
-:100F40000FE06004D292801790FFB4E04410120FBB
-:100F5000E0FFBFA004C2928002D292121E5DF0E4B4
-:100F6000FF0231A9E53530E707E4FD7F05022FB424
-:100F70007F050231A912327A227B017AFA79B69082
-:100F8000FAB7E0F52DA3E0F52E7D0112269890FA30
-:100F9000B7E475F003121B1CAB36AA37A93822AA96
-:100FA0004EA94F7BFF90FAB7E0FCA3E0FD90FABC9E
-:100FB000E0F54A1229607530008F31221223617EDC
-:100FC000008E308F31EF22F07F0112126190FFA668
-:100FD000E090FABBF054A0221226988F4C7E00C3FA
-:100FE000EF953CEE953B22F07F0112126190FFB627
-:100FF000E090FABBF054A022753900753A01022C3A
-:10100000D890FAB9E0FF02323F8E398F3A022CD8DD
-:101010001223617E008E308F31EF227D01122698DF
-:1010200090FAB4E022EF90F804F022C0A8C2AFEE2C
-:10103000600AC0057D7FDDFEDEFAD005EFC39415A2
-:101040005003D0A822137003D0A822FFD507FDD0EB
-:10105000A822C000C001C002C004C005E53E2408AB
-:10106000F8860553057F7CFF1210C07F007E00E5E7
-:10107000436046FC90F91DE0547F6D700FC083C043
-:1010800082A3E0FEA3E0FFA315438007A3A3A3DC94
-:10109000E68026DC06D082D083801EE0F8A3E0F94B
-:1010A000A3E0FAD082D083E8F0A3E9F0A3EAF0A3AA
-:1010B000C083C082A3A3A380DA121157D005D00445
-:1010C000D002D001D0002285A84475A888EC700217
-:1010D0007C3F8C3D22E53E2408F876001211AE805C
-:1010E000FBC000C001C002C004C0067CFF1210C0DB
-:1010F000E5436042FE90F91DE0547F6F700BC083A2
-:10110000C082A3A3A315438007A3A3A3DEEA80267E
-:10111000DE06D082D08380D8E0F8A3E0F9A3E0FA1D
-:10112000D082D083E8F0A3E9F0A3EAF0A3C083C0A3
-:1011300082A3A3A380DA7808087918097C01E65411
-:101140007F6F700676007700800608090CBC08EEF9
-:10115000121157D006D004D002D001D00022753D24
-:10116000008544A822C0F0C082C083C3E54324E8C0
-:1011700050051211AE80F4EF6031903111E493C349
-:101180009F402FC0047CFF1210C0D004430780E5AD
-:101190004375F003A4241DF582E434F9F583EFF0E0
-:1011A000ECA3F0EDA3F00543121157D083D082D009
-:1011B000F0220211DCC0047C20D28CD28DD504FD3B
-:1011C000D0042275A80075880075B80075F0007508
-:1011D000D000E4F890F804F0900000F608B800FBA6
-:1011E000020000C2AFE490FF48F090FF50F090FF83
-:1011F00008F090FF10F090FF80F0A3A3F0D2B1C2EE
-:10120000B07EFF7FFF1210247EFF7FFF1210247E2E
-:10121000FF7FFF121024D2B0D2B17EFF7FFF1210E9
-:10122000247EFF7FFF1210247EFF7FFF1210248098
-:10123000CCC3EE940250047E037FE8EFF4FFEEF49B
-:10124000FE0FBF00010E8F428E4122C3EF94BCEE11
-:10125000940250047E077FD0EFF4FFEEF4FE0FBF40
-:1012600000010E8F408E3F22EF700122C000C0A807
-:10127000C2AFE53E2418F8A607E53E2408F8C65498
-:101280007FF6D0A8E630E703D000221211AE80F43A
-:10129000C0007F01EF2408F8E660090FBF08F512CF
-:1012A00011AE80EED00022C0F0C082C083C000C06A
-:1012B00006C004ED2410F8769AED75F021A42405FB
-:1012C000F582E434F8F583C082C083A3A3E4780DEB
-:1012D000F0A3D8FCEF547F75F002A424F3F582E567
-:1012E000F03430F583E493FE740193FCD083D08214
-:1012F000ECF0A3EEF0ED2408F8EF4480F6D004D033
-:1013000006D000D083D082D0F022753E0075430015
-:101310007A0879187808760077000809DAF890F8E2
-:1013200004E0FC903111E493C39C5005E490F80470
-:10133000F078087480447FF674014410F58975B81C
-:1013400000D2ABD2A92275818BD28ED28CD2AFE5DE
-:10135000436036FF90F91DE05480602878087908D2
-:10136000E0547FFA7B00E6547FB502027BFF08D988
-:10137000F5EB7010EAF0C007121289AD07AF021248
-:1013800012A0D007A3A3A3DFCE1211AE80C18F2479
-:10139000122AC71222B5A3A3E0A330E728787E1251
-:1013A0002299E04401F01222FA12229DE020E0F698
-:1013B0001223507402F01222DAE0A330E507122360
-:1013C00050E04401F07880E6FE08E6FF8E832408B2
-:1013D0001222A1E0FD1223398A83240A1222A1EDF0
-:1013E000F012230624071222A1E0FF12235A240937
-:1013F0001222A1EFF090F916E030E420081222B793
-:10140000C083C082A3E025E0FF0582D58202158358
-:101410001582E033D082D083F0A3EFF01222B5E042
-:10142000FCA3E0FDECFF1223398A8324081222A1D9
-:10143000EFF0ED12235A24071222A1EDF01222A997
-:10144000E030E60A12234124091222A1E4F012221C
-:10145000A9E0FF30E71B12231E24091222A1E0603D
-:10146000091222A9EF4402F080071222A9EF54FDCD
-:10147000F0787E1222B7A3A3E0FF5307C708E6FC6B
-:1014800008E6FD1222E0A3E030E3128D828C83E5B2
-:101490008224051222A1E09032519342075307FBA8
-:1014A00012231E24061222A1E060034307045307FF
-:1014B000FC788012232924041222A1E0420743076A
-:1014C00080122339F5828A83A3A3EFF012235A24D2
-:1014D000041222A1E0FF8D828C83A3A3E0FCA3E091
-:1014E000FD30E1055307DF8003430720EC30E405BE
-:1014F0005307EF80034307101222A9E0FE54036054
-:10150000735307DFEE30E16912231E24091222A172
-:10151000E0121BFC152C0015600115650315600514
-:1015200015650715600915650B15600D15650F002C
-:1015300000156DE5246403702190F916E030E20D8A
-:1015400030B405430702802C5307FD8027309505F2
-:10155000430702801F5307FD801A3093054307029B
-:1015600080125307FD800D43070280085307FD805A
-:10157000035307FD12232724041222A1EFF08D82CA
-:101580008C83A3A3A3E0FF1222A9E0FE54037003FF
-:10159000021660EE20E10302165D081223202409E2
-:1015A0001222A1E0121BFC15BF0015F50115F50371
-:1015B000162905162907160F09160F0B16430D16C7
-:1015C000430F00001660E5246403702390F916E0D1
-:1015D00030E20F30B10653077F02166043078002E6
-:1015E000166030940553077F807D430780807830F4
-:1015F000920553077F8070430780806BE524B40316
-:101600000990FF9EE054EFF0800790FF9EE054DFCA
-:10161000F053077F8051E524B4030990FF9EE04416
-:1016200010F0800790FF9EE04420F053077F803742
-:10163000E524B4030990FF9EE054EFF0800790FF8B
-:101640009EE054DFF0430780801DE524B403099039
-:10165000FF9EE04410F0800790FF9EE04420F0439E
-:101660000780800353077F1222DAE0FCA3E0FD30FD
-:10167000E00543072080035307DFEC30E305430711
-:101680004080035307BFEC30E0054307108003534D
-:1016900007EFED30E40543070880035307F7ED300B
-:1016A000E50543070480035307FBED30E6054307D8
-:1016B0000180035307FEED30E70543070280035323
-:1016C00007FD787E1222DCA3EFF01232847F002225
-:1016D00090FFFA7408F0A37416F090FFF97402F00A
-:1016E0007B017AFA79CFE4FD12236190FACFE47599
-:1016F000F003121B1C121992E52330E702D2027B81
-:10170000007A00792490FACFE0F52DA3E0F52E7D44
-:101710000112269890FACFE4F0A3740BF07B007AC4
-:10172000007923752D00F52E7D01122698E52324DE
-:101730008090FFF8F0E5236407601EE523640660EF
-:1017400018E52364146012E5236441600CE523640A
-:101750001A7046E52464027040E523B40716D2945B
-:10176000D295D292D29390F916E04402F0A3E044CD
-:1017700002F0801EE523B4411290F916E04406F011
-:10178000A3E04406F0D2B1D2B4800790F916E04449
-:1017900001F090F917E04401F0E5236442600CE5A4
-:1017A0002364436006E5236444702E90F916E0FF3D
-:1017B000E523B444047E4080027E00EE24804F90F6
-:1017C000F916F0A3E0FFE523B444047E4080027ED6
-:1017D00000EE24804F90F917F090FACFE4F0A37454
-:1017E0000DF012199290FFF5E523F0E4F535F5338D
-:1017F000F534F532121E34121CE0121E3B90F96AC9
-:10180000121BF390F96F121BF390FFFFE4F090FFAF
-:1018100083E0E4F090FF817480F0A37484F090FF83
-:1018200080F0E4F523E523121D57F583E4F0E5236A
-:10183000121D65F583E4F00523E523B407E7787A04
-:1018400076FE0876F090320AE493FF7878F6FDADE4
-:1018500007903217E493FF08F6FFED540FFD121DB9
-:10186000477484F0ED75F008A42447F582E434FF52
-:10187000F583EFF0C374F09F787BF674FE94001844
-:10188000121CD8CEC313CE13D8F9FFED121DA8EF4A
-:10189000F0ED121DCEE4F523E52390320493FF789A
-:1018A00078F6FDE52325E0240BF582E43432F58358
-:1018B000E49308F6ED30E75318E6540FF9121D478C
-:1018C000121DB62447F582E434FF121CC8CEC313A0
-:1018D000CE13D8F9FFE9121DA8EFF0121CCFCEC32A
-:1018E00013CE13D8F9121DBB2445F582E434FFF55D
-:1018F00083EFF0E9121DCEE975F008A42446F582C5
-:10190000E434FFF5837480F00219677878E6540FA9
-:10191000F9121D9A121DB62407F582E434FF121C39
-:10192000C8CEC313CE13D8F9121DBB2401F582E42F
-:1019300034FFF583EFF0121CCFCEC313CE13D8F9CA
-:10194000121DBB2405F582E434FFF583EFF0E97541
-:10195000F008A42402F582E434FFF583E4F0E9758D
-:10196000F008A42406F582E434FFF583E4F00523AF
-:10197000E52364046003021891903209E493FF7830
-:1019800078F6121D98E4F090320893FFF6121D4588
-:10199000E4F090FFFD7405F0227B007A007923903B
-:1019A000FACFE475F001121B3285F02EF52D7D0182
-:1019B000022698E709F608DFFA8046E709F208DF11
-:1019C000FA803E88828C83E709F0A3DFFA8032E355
-:1019D00009F608DFFA8078E309F208DFFA807088F8
-:1019E000828C83E309F0A3DFFA806489828A83E032
-:1019F000A3F608DFFA805889828A83E0A3F208DF21
-:101A0000FA804C80D280FA80C680D4806980F280CF
-:101A100033801080A680EA809A80A880DA80E280F5
-:101A2000CA803389828A83ECFAE493A3C8C582C84A
-:101A3000CCC583CCF0A3C8C582C8CCC583CCDFE9B4
-:101A4000DEE7800D89828A83E493A3F608DFF9EC50
-:101A5000FAA9F0EDFB2289828A83ECFAE0A3C8C5DB
-:101A600082C8CCC583CCF0A3C8C582C8CCC583CC02
-:101A7000DFEADEE880DB89828A83E493A3F208DF71
-:101A8000F980CC88F0EF60010E4E60C388F0ED2441
-:101A900002B4040050B9F582EB2402B4040050AF44
-:101AA00023234582239019FC73BB010689828A8314
-:101AB000E0225002E722BBFE02E32289828A83E40D
-:101AC0009322BB010CE58229F582E5833AF583E098
-:101AD000225006E92582F8E622BBFE06E92582F8B7
-:101AE000E222E58229F582E5833AF583E49322BB7D
-:101AF000010689828A83F0225002F722BBFE01F39D
-:101B000022F8BB010DE58229F582E5833AF583E8E9
-:101B1000F0225006E92582C8F622BBFE05E925829F
-:101B2000C8F222C5F0F8A3E028F0C5F0F8E5821568
-:101B30008270021583E038F022A3F8E0C5F025F0AA
-:101B4000F0E582158270021583E0C838F0E822BB08
-:101B50000110E58229F582E5833AF583E0F5F0A3EB
-:101B6000E0225009E92582F886F008E622BBFE0A49
-:101B7000E92582F8E2F5F008E222E5832AF583E917
-:101B800093F5F0A3E99322BB010A89828A83F0E5E9
-:101B9000F0A3F0225006F709A7F01922BBFE06F3C6
-:101BA000E5F009F31922F8BB0111E58229F582E578
-:101BB000833AF583E8F0E5F0A3F0225009E92582A5
-:101BC000C8F608A6F022BBFE09E92582C8F2E5F0B6
-:101BD00008F222A42582F582E5F03583F58322E61A
-:101BE000FB08E6FA08E6F922EBF608EAF608E9F659
-:101BF00022E0FBA3E0FAA3E0F922EBF0A3EAF0A3D2
-:101C0000E9F022D083D082F8E493701274019370CB
-:101C10000DA3A393F8740193F5828883E47374028F
-:101C2000936860EFA3A3A380DFAB36AA37A938E59A
-:101C30004C121AE874012538F538E43537F537AB1E
-:101C400036FAA9387411121AE874012538F538E407
-:101C50003537F53790FF06E0AB36AA37A938121AA8
-:101C6000E874012538F538E43537F537AB36FAA98D
-:101C700038E4121AE8042538F538E43537F537AB7F
-:101C800036FAA938E4121AE8042538F538E435376D
-:101C9000F53790FF04E0AB36AA37A938121AE8747A
-:101CA000012538F538E43537F53790FF05E0AB36D8
-:101CB000AA37A938121AE874012538F538E43537FF
-:101CC000F53722F583E05408AB36AA37A93822F558
-:101CD00083EFF0FD7C00C3787BE69DF618E69CF66A
-:101CE000E6FE08E67803227536017537F975387215
-:101CF00022E04404F074132FF582E434F9F583E014
-:101D00002290FABCE0FF7E00C390FAC0E09FF09002
-:101D1000FABFE09EF090FAB7EE8FF0121B1CEF2591
-:101D20004FF54FEE354EF54E227B017AFA79B4909D
-:101D3000FAB7E0F52DA3E0F52E22787CE6FE08E662
-:101D40008E832404F582E43583F58322540F75F0E5
-:101D500008A42440F582E434FFF58322E54D75F0B4
-:101D600008A42448F582E434FF22E54D75F008A468
-:101D70002408F582E434FF2290FAB9E0FF24FC2223
-:101D800090FF00E0541F2290FABEE090FABAF022D1
-:101D90007533008F3490F96F121BEA9000022254C1
-:101DA0000F75F008A42400F582E434FFF583227552
-:101DB000F008A42441F582E434FFF583227480F016
-:101DC00008E6FFE975F008A42274B22522F582E442
-:101DD00034FAF5832275F008A42442F582E434FF36
-:101DE000F5837480F02290FF82E04408F02290FF97
-:101DF000FEE04403F090FFFCE054FDF0227867E63B
-:101E000054FDF690FFFD7465F022121BCCE0FEA39A
-:101E1000E0FF4E227B017AFA79B72290FF80E044FE
-:101E200008F02290FF83E0547FF022E0FF90F96AEF
-:101E3000021BEA90FFA4E04402F022753901753AD2
-:101E400009227B017AF9797222D3E53C9408E53BBB
-:101E500094012290FABEE0FF90FABAF02290FFA41B
-:101E6000E054EF2290FFB4E054EF2212104B788838
-:101E7000EFF6122AC71222FA8E8324091222A1E059
-:101E8000FD1222E890000A122302240A1222A1E085
-:101E900090000B121AFA1222FAF5828E83A3A3A3E2
-:101EA000E0F55312230624041222A1E0F5548F8298
-:101EB0008E83A3A3E0F555E553C41313135401789F
-:101EC00088F6D394004006E55430E101067888E6B0
-:101ED0001222E790000CEF121AFA1222B5A3A3E027
-:101EE000FEA3E0FF53070C5306E6E55330E503433A
-:101EF0000701E55420E50EE553547F7008E55320B3
-:101F0000E703430702E55330E303430710E553308B
-:101F1000E203430720E55354036003430740E553BE
-:101F200030E103430780E55330E403430601E55302
-:101F300030E603430608E55420E40EE553547F7071
-:101F400008E55320E7034306105307FB5306799037
-:101F50000005EE8FF0121B9FE55530E3125430FF61
-:101F6000C4540F1222E7900008EF121AFA800A12E6
-:101F700022E8900008E4121AFAE55554031222E709
-:101F8000900007EF121AFAE5555404FFC3139000AE
-:101F900009121AFA900007121ABB70131222E8E90C
-:101FA0002409F9E43AFA121AA2FFC313121AE8122A
-:101FB000232724081222A1E0FE8D828C83E582244F
-:101FC000071222A1E0FDEEED1222E7900003EE8F52
-:101FD000F0121B9F1232847D0AE4FF122FB402100C
-:101FE000CE90FAE6E0B403067E007F4080047E00D7
-:101FF0007F0890FADAEEF0A3EFF0900005121ABB1A
-:10200000FF7E0090FAD6EEF0A3EFF070037F082277
-:10201000900008121B48FF90FAD8E5F0F0A3EFF00B
-:10202000AE02AF018E508F51740A2551F551E4353F
-:1020300050F55090FADBE0FF14FE90FAD9E05EFE16
-:10204000C3EF9EFF90FADDF0C390FAD7E09F90FABD
-:10205000D6E094005006A3E090FADDF01220A960CB
-:1020600003E0FF22122E2B90FAD6E0FEA3E0FF4EF3
-:10207000602B90FADAE0FCA3E0FDD3EF9DEE9C40EC
-:1020800007E090FADDF0800890FAD7E090FADDF0F2
-:102090001220A96003E0FF22122E2B80CA7B007A57
-:1020A000007952E4F52DF52E7D011226987F00224D
-:1020B000AA50A9517B0190FAD8E0FCA3E0FD90FA68
-:1020C000DDE0F54A12296090FADCEFF022EF24AE51
-:1020D000605224FE602E24FE7003022169240660F3
-:1020E000030221B17871E654FBF690FFA5E0F522DA
-:1020F000440FF0743390FA94F0E522A3F090FAB212
-:102100007401F0227872E654FBF690FFB5E0F522F8
-:10211000440FF0744390FA96F0E522A3F090FAB3DE
-:102120007401F02290FAA0E0A320E5030221B1900F
-:10213000FFA6E090FACDF0A3F090FACDE0FF540FA7
-:10214000FE601090FFA612230D90FFA6E090FACD3E
-:10215000F080E690FACEE0FF7434FE122D85EF7029
-:102160005790FACEE0FF743490FA98F0EFA3F02283
-:1021700090FAAAE0A330E54090FFB6E090FACDF0E7
-:10218000A3F090FACDE0FF540FFE601090FFB6125E
-:10219000230D90FFB6E090FACDF080E690FACEE005
-:1021A000FF7444FE122D85EF700E90FACEE0FF749E
-:1021B0004490FA9AF0EFA3F022C0E0C0F0C083C0D0
-:1021C00082C0D075D000C000C001C002C003C004EE
-:1021D000C005C006C00790FF92E0FF90FACCF090D7
-:1021E000FF92E4F0EF121BFC22692622692E220CDA
-:1021F00030220C32221A38222C3A225E3E224944E6
-:10220000223E462254502254522254542254560004
-:1022100000226E90FACCE0FD7C007F0112115E80FE
-:10222000627C007D017F0312115E90FFFEE044207E
-:10223000F080507C007D017F0212115E90FFFEE075
-:102240004440F0803E7C007D017F0512115E8033AA
-:102250007C007D017F0612115E802890FACCE0FFA1
-:102260001220C6801E7C007D017F0412115E801347
-:1022700012284E800E90FACCE02400FFE434FFFEDA
-:10228000122D85D007D006D005D004D003D002D0BF
-:1022900001D000D0D0D082D083D0F0D0E032787C92
-:1022A000E6FE08E624048E83F582E43583F5832276
-:1022B00074132524F582E434F9F583227880E6FE50
-:1022C00008E6F5828E83227880E6FE08E6AA06F804
-:1022D000AC027D017BFF7A3279567E007F0A021ABA
-:1022E0007C7880E6FC08E6F5828C83A3A322FF902D
-:1022F000F96F021BEA90F96A121BEA900004021AB5
-:10230000BB787EE6FE08E6FF22ED121AFA8F828E77
-:1023100083E58222EFF090FACEE0540F4EFEF0EF0C
-:1023200054F04EF0227880E6FC08E68C8322787E1A
-:10233000E6FC08E6FD8C8322A607E6246EF8E6227A
-:10234000787EE6FA08E6FB2208E6FE08E68E83229F
-:1023500026F618EE36F622EF240BF582E43EF583DE
-:10236000228B828A83E582228B258A2689278D28E3
-:1023700090FAD2E4F0A37402F07B017AFA79D1905A
-:10238000FAD2E0F52DA3E0F52E7D0112269890FA01
-:10239000D1E065286046A3E0FFA3E0A3CFF0A3EF60
-:1023A000F01223F090FAD1E0FF90FAD4E48FF0120B
-:1023B0001B1C1223F090FAD4E0FFA3E090FAD2CFD6
-:1023C000F0A3EFF090FAD1E0A375F000121B1C907F
-:1023D000FAD2E475F004121B1C02237290FAD3E0C7
-:1023E0002401FF90FAD2E03400AB25AA26A9278F5A
-:1023F000F0121B807F00227B017AFA79D190FAD209
-:10240000E475F001121B1C85F02EF52D7D010226CE
-:10241000988F62122AC71222FA8E83240B1222A1ED
-:10242000E054FBF04402F0081222DCE0A330E50C9B
-:10243000122306240B1222A1E04401F0787CE6FE70
-:1024400008E6FFF5828E83E054B8FDF0E56224FED5
-:102450004420FC4DF0E58224041222A1E054B8F09F
-:102460004CF08F828E83A37403F018E6FE08E6FF1B
-:102470008E8324051222A1C083C082E0FD749925B9
-:1024800062F582E434FAF583E054FC4403FCED4C3D
-:10249000D082D083F08F828E83E04480F0E5822466
-:1024A000041222A1E04480F0123284746E2562F896
-:1024B000740446F67F002212104B7F0212126178DC
-:1024C00067E64402F6D2B0D2B190F916E030E707E1
-:1024D00090FF9EE4F08036D2B390FFA4E090FA7EA5
-:1024E000F090FFB4E090FA7FF090FFA2E090FA7CC9
-:1024F000F090FFB2E090FA7DF090FFA47430F0907D
-:10250000FFB4F090FFA27440F090FFB2F090FAE7B1
-:10251000E5A8F075A88190FF92E06004E4F080F6F1
-:1025200090FFFD743AF043870100000090FA7EE0CE
-:1025300090FFA4F090FA7FE090FFB4F090FA7CE076
-:1025400090FFA2F090FA7DE090FFB2F090F918E0D1
-:102550006002C2B390FAE7E0F5A80210CE8B5C8A65
-:102560005D895E122E0D90FAC3121BF3AA5DA95E5F
-:1025700090FAC6121BF390FAC7E475F00A121B1CFE
-:1025800090FAC6121BEAE92401F9E43AFA90FAC972
-:10259000121BF3AB5CAA5DA95E122E19E0FFC313F8
-:1025A000F0E47882F690FAC1E0FF7882E6C39F50AB
-:1025B0004A90FAC3122DEEFF7883F690FAC6122DD8
-:1025C000EEFEF45FFF7883F6122DEB5E4FFF78830B
-:1025D000F6122DF475F002121B1C90FAC7E475F088
-:1025E00002121B1CAB5CAA5DA95E900004121ABB10
-:1025F00030E403122E0378820680AAE490FAC2F037
-:10260000228B568A57895890FAC27406F0E490FAE1
-:10261000C1F0121AA2246E6026147070122DDA60B6
-:1026200009243070121225568062122E24121FDAED
-:1026300090FAC2EFF0805590FAC27481F0804D128A
-:102640002DDA60092430703E122D30803FE5582489
-:1026500003F9E43557FA7B01C003C002C001122E12
-:1026600024900005121ABBFD900008121B48F52E9D
-:1026700085F02DD001D002D00312269890FAC1EF38
-:10268000F0E4A3F0800690FAC27481F090FAC2E000
-:10269000122E24900002121AFA90FAC1E0FF228B47
-:1026A000298A2A892B8D2CE52C7003AF2C22122E1F
-:1026B000537016122E72E52D90FFF1F01231D850A2
-:1026C000F2122725400B7F0022122E72122725506E
-:1026D000F890FFF374A1F0E52CB4010790FFF0E04F
-:1026E0004402F090FFF1E4F0F52FE52C14FFE52F04
-:1026F000C39F502A1231C14003AF2F22C3E52C954E
-:102700002FFFBF020790FFF0E04402F0122E650594
-:102710002F7401252BF52BE4352AF52A80CC1231B4
-:10272000C140037F1822122E65AF2C2290FFF1E5E5
-:102730002EF00231D812104B788412233130E10888
-:102740007F131231A90227BC7884E6F924131222E0
-:10275000ADE0FF30E7405403601EE9B4030D90FF85
-:102760009EE054FEF0E04404F0804690FF9EE0546A
-:10277000FDF0E04408F08039E9B4030D90FF9EE0DD
-:1027800054FBF0E04401F0802890FF9EE054F7F005
-:10279000E04402F0801BEF54036014E9B403099095
-:1027A000FFA4E054DFF0800790FFB4E054DFF0C2F4
-:1027B000B390F918E004F0AF011222EEFD122FE5FC
-:1027C0001231A90210CE75A840787FE4F6D8FD75C5
-:1027D000818B02280902318CE493A3F8E493A3408F
-:1027E00003F68001F208DFF48029E493A3F854078C
-:1027F000240CC8C333C4540F4420C8834004F45687
-:10280000800146F6DFE4800B0102040810204080BE
-:10281000902BA9E47E019360BCA3FF543F30E509EF
-:10282000541FFEE493A360010ECF54C025E060A8BE
-:1028300040B8E493A3FAE493A3F8E493A3C8C58251
-:10284000C8CAC583CAF0A3C8C582C8CAC583CADFBF
-:10285000E9DEE780BEE4F522121DC2E0B4040DE516
-:10286000222403FF123013121DC2E4F00522E522D8
-:10287000C3940240E3E4F52275F002E52290FA9455
-:10288000121E03602C122D85EF605275F002E522B6
-:1028900090FA94121BCCE4F0A3F075F00AE52290B4
-:1028A000FAA0121BCCE0A330E633121DC27404F070
-:1028B0002275F002E52290FA98121E036016122D7E
-:1028C00085EF601975F002E52290FA98121BCCE4AE
-:1028D000F0A3F0220522E522C39402409B22E4FFEC
-:1028E00090FF83E0540FFEEFC39E501774F02FF556
-:1028F00082E434FEF583E0121CC1121AE80F121CA8
-:10290000B080DDEFFDC3E53A9DF53AE5399400F579
-:1029100039D3E53A9400E53994004006E490FF830A
-:10292000F022121DDF121E34121E26121AA2246E6D
-:10293000601E14601B248E702D900001121ABBFFC4
-:1029400024FC600304701FEFFD7C007F0D02115E0C
-:10295000121E3B1225FA121D89121ABB60030232A5
-:102960007AE4FF12326E228B458A4689478C488D65
-:1029700049D200122E537016122E72E54890FFF1C4
-:10298000F01231D850F21229D5400B7F1822122EA6
-:10299000721229D550F8E4F54BE54A14FFE54BC314
-:1029A0009F50171229C540037F1822054B7401253B
-:1029B00047F547E43546F54680DF90FFF0E04401F7
-:1029C000F01229C540037F18227F0022AB45AA469A
-:1029D000A947121AA290FFF1F00231D890FFF1E559
-:1029E00049F00231D87B017AFA79CFE4FD122361F4
-:1029F00090FACFE475F009121B1C7B007A00792352
-:102A000090FACFE475F001121B3285F02EF52D7D82
-:102A10000112269890FFF7E523122A3990FFF6E578
-:102A200023F090FACFE4F0A37406122A39E523309C
-:102A3000E00790FFFC7494F02290FFFC7490F02269
-:102A4000F07B007A00792390FACFE475F001121B35
-:102A50003285F02EF52D7D0102269890FF9374812A
-:102A6000F090FFFFE0600690FFFC7410F090FF9183
-:102A7000E04490F0E490F916F0A3F0122B3912160E
-:102A8000C91230697E077FD012122A7E0F7FA012F2
-:102A90001244E47877F67877E6FFC39406500B7417
-:102AA0006E2FF8E4F678770680EC7F031230B29050
-:102AB000F916E020E4057F041230B290FF9BE4F0A9
-:102AC00090FF9AF090FFE8E0541FF0D2A82215651D
-:102AD000A865A6073008051211AE80F8D208A865CF
-:102AE000E6FFB4030F787C76FF0876E00876FF08EF
-:102AF00076A0800D787C76FF0876E20876FF08766F
-:102B0000B0788076FA08769EEF24FD75F00AA4AEC0
-:102B1000F01223497B017AFF79487868121BE1A8FB
-:102B200065E624FD75F008A4FFAEF0786A1223492B
-:102B30007908786B121BE1786DEF12234905652245
-:102B400090FFF0E054ABF0E04420F090FAE674021D
-:102B5000F07B017AFA79CFE4F52DF52E7D0112266E
-:102B6000987E0090FAE4EEF0A3EFF064017010900C
-:102B7000FACFE0B4520990F916E054EFF0802990B2
-:102B8000FAE4E07004A3E06401701090FACFE0B4BE
-:102B9000100990F916E04410F0800D90FAE67403E5
-:102BA000F090F916E054EFF090FFF0E04420F022AE
-:102BB000036801FF48036B01FF080266000044FA46
-:102BC000980000000044FA940000000042FAB200AD
-:102BD0000042FA7E000042FA7C000042F96DFFFFDD
-:102BE00042FA7A000041F966FF41F91C1941F915D2
-:102BF0000043F9190A320241F9682041F96920417C
-:102C0000F9650041F9670044F8000000000042F94E
-:102C100016000041F9180001200041F804000012DC
-:102C2000104B788AEFF6122AC71222EE30E029788C
-:102C30007C1222B7E0547FF0786B121BD890000210
-:102C4000121ABB30E709900002E4121AFA80E97800
-:102C50007C1222B7E04480F01222EE30E11E1222F4
-:102C600097E0547FF01232197868121BD890000256
-:102C70007480121AFA122297E04480F0123284E42F
-:102C8000FF1231A90210CE12104B7885EFF61231E7
-:102C9000501231A97885E6FF24131222ADE0FE30F0
-:102CA000E716EFB4030990FF9EE054FAF0802290FB
-:102CB000FF9EE054F5F08019EE54036014EFB40366
-:102CC0000990FFA4E04420F0800790FFB4E0442086
-:102CD000F090F918E014F0E07002D2B30210CE12B6
-:102CE0001E1CE53A64097004E53964016048C3E5D7
-:102CF0003A9408E539940040117F08EFE53A9408CA
-:102D0000F53AE5399400F5398005AF3A121E34E4FE
-:102D1000FEEEC39F5019121CC1121AA2FD74F82EA8
-:102D2000F582E434FEF583EDF00E121CB080E2EF84
-:102D3000547F90FF81F0228B598A5A895B122E1999
-:102D40007005A37408F022AB59AA5AA95B122E0D84
-:102D500090FAC9121BF3E55B2403F9E4355AFA90A3
-:102D6000FAC3121BF3E490FAC2F0788BF690FAC122
-:102D7000E0FF788BE6C39F5012122DEBFF122DF46B
-:102D8000122E07788B06122E0380E222AD07AC06C6
-:102D900090320AE493FF7874F6540F121DA8E008ED
-:102DA000760008F618121CD9C333CE33CED8F9FFFB
-:102DB0007875EEF608EFF6EE44F818F6EF08F690A0
-:102DC000FF7AE020E7037F00227875E6FE08E6F54B
-:102DD000828E83ECF0A3EDF090FF7A7402F07F0115
-:102DE00022AB56AA57A958900003121ABB54F024DC
-:102DF000A02290FAC9121BEA021AA290FAC3121B6F
-:102E0000EAEF121AE890FACAE42290FAC4E475F0E4
-:102E100001021B1C900008121B48AAF0F97B01223A
-:102E2000900005121ABB90FAC1F022AB56AA57A91E
-:102E3000582290FADDE0FF7E00C390FAD7E09FF0C1
-:102E400090FAD6E09EF090FAD8EE8FF0121B1CEFAD
-:102E50002551F551EE3550F5502290FFF0E054FE2B
-:102E6000F0E054FDF090FAE6E064032290FFF2E017
-:102E7000AB29AA2AA92B021AE890FFF374A0F0222A
-:102E80008F64ED700FE564B403057F010231EF7FBD
-:102E9000020231EFAF64122AC7746E2564F8E6307F
-:102EA000E20BD209121D33E0547FF08002C209E523
-:102EB00064B403077F811231EF80057F821231EF06
-:102EC000300907121D33E04480F0123284221210C0
-:102ED0004B90FFFDE04460F0D20190FFFCE0440223
-:102EE000F090FF00E030E71390FF83E04480F04370
-:102EF000358090FFFCE04401F0800D121DDF53355A
-:102F00007F90FFFCE054FEF090FF81E04480F012DF
-:102F100002DE121DE70210CE12104B7889EFF6D2B6
-:102F200000122AC790F96A121BEAE92403F9E43A6D
-:102F3000FAC0027880E6FE08E6AA06F8AC027D0137
-:102F4000D0021222D31232847889E6FF121387123C
-:102F500031A90210CE8F63122AC7787C1222B7E003
-:102F6000543FF0E58224041222A1E0543FF01223E2
-:102F700041240B1222A1E054F8F0123284746E2521
-:102F800063F874FB56F67F002212104B122AC71208
-:102F900022FA240612229FE0FD1222E8900003127A
-:102FA000230224051222A1E0900004121AFA123220
-:102FB000847D02E4FF122FB40210CEAE05121D8EE6
-:102FC000EF121AFA0E0E0EEED3953CE4953B40023A
-:102FD000AE3CEED3940874809481400A7E03900046
-:102FE000027402121AFAAF0612326E22AE07ED54C4
-:102FF00003640160037F1022ED547CC394045003EA
-:103000007F0B22746E2EF8740246F674992EF582A8
-:10301000E434FAF583EDF07F0022BF03067CFF7DE8
-:10302000E080047CFF7DE28D828C83E04480F0E5CB
-:103030008224041222A1E04480F0746E2FF87404FC
-:1030400046F67F002212104BE53A64097004E53918
-:103050006401601690FF83E0540FFFC3E53A9FE5DB
-:1030600039940040051228D7800312327A0210CE1C
-:1030700090FFFCE020E71FC2AF7DFFAC051DEC60B8
-:10308000157E047F00EF1FAA0670011E4A60EC90B7
-:10309000FF92E4F080EF2212104B7866E6FE08E61D
-:1030A000FF30E01230E10F90FFFCE04420F07F049D
-:1030B000121261121DF60210CE8F23C208122AC707
-:1030C0001222C0787E122342240B1222A1E054F86F
-:1030D000F0123284AF23121387228E5F8F60E56077
-:1030E0001560AE5F7002155FD39400EE9400400946
-:1030F0007E077FD012102480E52211DC2EC724B079
-:1031000032603090303E316F2F82272E2C8031126A
-:1031100031311E642F112C180E12104B7886122399
-:103120003120E1077F121231A9800A7886E6FF126A
-:10313000240A1231A90210CE12104B7887122331C3
-:1031400020E2077F111231A9800A7887E6FF122F4B
-:103150004E1231A90210CE8F61122F4EAF61122A8A
-:10316000C71222C0123284746E2561F874FD56F6BF
-:10317000AF611213872212104BE53A64097004E51F
-:103180003964016005122CD88006121E14121E1C10
-:103190000210CE122A5412130390F804E0FF6005C7
-:1031A0007D011212A01229DE12133F1211BC80E31E
-:1031B000121D8EEF121AFAE4F533F534EF600302B4
-:1031C000327AE4FF12326E2290FFF0E0FF54A060EA
-:1031D000F7EF30E50890FFF04420F0C322D32290AF
-:1031E000FFF0E0FF542860F7EF30E50890FFF0446F
-:1031F00020F0C322D322EF30E708121D45E054DF50
-:10320000F022EF121D98E054DFF022810182028348
-:10321000038740004000400040004000400008009C
-:10322000787E1222B7A3A3E0FF30E706547FF04474
-:1032300080F022853B39853C3A90FF82E054F7F0DC
-:10324000A3E0547FF022E4FEEE90320493B507022F
-:10325000D3220EBE07F2C32200081828380181903D
-:103260000A02000011130012104B7F021210DA1232
-:103270001DF60210CE7539008F3A121CE0122CD8C0
-:0E32800022121E1C121DDF121E1422C2082272
-:00000001FF
-//**************************************************************
-//* Edgeport Binary Image (for TI based products)
-//* Generated by TIBin2C v2.00 (watchport)
-//* Copyright (C) 2001 Inside Out Networks, All rights reserved.
-//**************************************************************
diff --git a/firmware/emi26/bitstream.HEX b/firmware/emi26/bitstream.HEX
deleted file mode 100644
index 044d3f664385..000000000000
--- a/firmware/emi26/bitstream.HEX
+++ /dev/null
@@ -1,4391 +0,0 @@
-:10801000FFFFFFFFAA9955663000800100000007AE
-:10802000300160010000000B3001200100803F2D75
-:108030003000C00100000000300080010000000995
-:10804000300020010000000030008001000000012D
-:108050003000400050003E040812100000000000F4
-:108060000000000000000000000000000000000010
-:1080700000000000000000000000000000004004BC
-:10808000800000000000000000121000000000004E
-:1080900000000000000000000000000000000000E0
-:1080A000000000000000000000000000000040840C
-:1080B000800000000000000000020000000000003E
-:1080C00000000000000000000000000000000000B0
-:1080D0000000000000000000000000000000080098
-:1080E000C0000000000000000002000000000000CE
-:1080F0000000000000000000000000000000000080
-:10810000000000000000000000000000000000006F
-:1081100080000000000000000012000000000000CD
-:10812000000000000000000000000000000000004F
-:10813000000000000000000000000000000000043B
-:108140008000000000000000081300000000000094
-:10815000000000000000000000000000000000001F
-:10816000000000000000000000000000000000000F
-:10817000900000000000000000120000000000005D
-:1081800000000000000000000000000000000000EF
-:10819000000000000000000000000000000000845B
-:1081A0009000000000000000F710011400250005F9
-:1081B0004001500094001500074001D000940025B4
-:1081C00080016002D800F6002F8002E004D8374416
-:1081D0009000000000000000C005F200CC903920A3
-:1081E0000D9803D200E78037040EF1837E00DF9004
-:1081F00031E48F79037C20DF2233C00CF022300081
-:108200007000000000000000801062008024222026
-:10821000089812E2008B8120940874022E008A01D3
-:1082200022C80892023D808B60228008B0022004A0
-:1082300030000000000000008805C800A0002000F9
-:108240000B1002C000A10024094A32024800B1000C
-:1082500062C009A046CC2493492A8048302262019A
-:108260007000000000000000C015A812A800220045
-:10827000089002E0008980224408B012A800A940BA
-:1082800022C0089082AC009B042AC408B00270048B
-:10829000600000000000000000148400E980B26467
-:1082A0004DA003EA20E9C036400EB0034400FB9025
-:1082B000B2880DBC03EC085B0038602CB06340044E
-:1082C0007000000000000000E001B426DD9037409F
-:1082D0004FE013F280FD003DA00D700375005E00BD
-:1082E0003FA40DF9035C10EB0037200F3003B800FA
-:1082F00060000000000000004010AC00E980324047
-:108300000CA183E800E90032420EB003AC48E9005A
-:108310003A800EA403EC00EB00B2030EB00B100485
-:108320002000000000000000C8052E8089D12040F8
-:1083300008A002C0008180225808F5022F408B005F
-:1083400020C00830437C008700224008F002320041
-:108350004000000000000000E00542019A4428A20D
-:10836000081802C080A180A0000830028E00AB0077
-:108370002C400A30020C00A30020440A30023800CE
-:1083800050000000000000006001320096822BA225
-:10839000885A02F200058029A0087842BE008E8427
-:1083A0002F610AD8024E10A78020280878021800F2
-:1083B000400000000000000048080800F224388057
-:1083C0002C1A03C400E058A0802E30038841E30239
-:1083D0003C400620038C00E30010000E31431202E3
-:1083E0000000000000000000401D9800EE013784EE
-:1083F0009FD903F048FD1037C007B0035C00F610AA
-:1084000033C00DE103ED20DF103F480FF023D0060D
-:108410006000000000000000A805E402CB8030C02E
-:108420000CA003E202C9003A400DB6036400EB0061
-:108430003EC00FB003ED00FB013EE00CB002EA00CD
-:10844000700000000000000048119400870021C067
-:10845000286002D00085002D8048F0821C00B70003
-:108460002D000B5002DC00B7A02F80287A02D20426
-:108470006000000000000000C100BE00878021E015
-:10848000286802D70084802DE04979065309B58019
-:108490002DE20B7802DE80B7902DB0087902F00053
-:1084A00020000000000000004814CC10830128C800
-:1084B000082002C20681002CC88830620E21B3A0B9
-:1084C0002CC10BB602CC00B3002CE0083002D20461
-:1084D0003000000000000000E815A800CA40B0808D
-:1084E0000C2C02F800C6203F900DA0037B01EEE0AB
-:1084F0003FB40FEC03E800FA003FA00CA003FA041D
-:1085000060000000000000004800E300F8092600B9
-:108510000FC183E010F8403C000F8003E001F80039
-:108520003E000F8103E004F8003E100F8003D200EC
-:1085300030000000000000000810E402C9003E40C6
-:108540004F906326843902B2400C91032400F90055
-:108550003E400F90032400F1003A440F9003C20400
-:1085600030000000000000008004450089402E40DB
-:1085700008920A2400B931226088948A2420B90024
-:108580002E400B90022400B90022680B9002E000FC
-:108590001000000000000000180524A08D842F406A
-:1085A0000BD1022400B900224A0810022C40B90065
-:1085B0002E400B90022400B9002A400B9002C60006
-:1085C00040000000000000000804140085802D40D9
-:1085D000085002040CB900A0500814220400B10095
-:1085E0002C400B10020400B128204A0B1302C201D8
-:1085F0000000000000000000B80D6000C0503E8088
-:108600000FC0432000F80030002C80232000F851D8
-:108610003E148F850B2140F8703A080F8483EE03D7
-:108620005000000000000000981DC400F9043E4006
-:108630000F9023D400FD003F500F9403F404FD007D
-:108640003F418FD043E50CF9023F4A0F9203E60207
-:1086500070000000000000008805D401FD003D40CE
-:108660000CD013F400D500336A1CDC833400D10431
-:108670003E500C9103E6C0DDB0336A2C9C83E600CB
-:1086800070000000000000003810E009F8802E00A3
-:10869000888000E800BA0022B0088E02280088A86E
-:1086A0002628088A22E20088E42230088C02CE04C0
-:1086B00030000000000000000805C400B1282E4072
-:1086C000081002C400990020424810026401918001
-:1086D0002C48081002C4C08140204A081202C2017E
-:1086E00070000000000000001815A494A9022E409C
-:1086F0000A90026400B90082600890026600891046
-:108700002462089002E40089022240189002C60404
-:108710006000000000000000A015E600B9043E4023
-:108720000C9013E400D1C012502890034400D900EB
-:108730003E40289203E402D90032428C9012E804B1
-:1087400070000000000000002801A620F9003E4152
-:108750002D9003E400F9203E404F9001A400F90061
-:1087600036408F9207E400F100BE400F9003CA002C
-:1087700060000000000000002810A000C8003E209B
-:108780000C8003E040F80036122C0003E0C0F80033
-:1087900032100D8403A000F8023E080F8000CA04C6
-:1087A000200000000000000028053A908E002DA057
-:1087B00080E802FA00BE40238008E802FA008A003E
-:1087C000368008A002E800BA002F800BA0038A00C0
-:1087D00040000000000000002805460283002C80B5
-:1087E000082242C680B1602EF4083822CE00A300D1
-:1087F00020C0083002AC00B1002E400B3002CA008D
-:108800005000000000000000A0011E0285012DC2E2
-:10881000A84402D400BD0129401868D2DC008F8032
-:1088200025CC287342DC80B5302DC01B7202E800D5
-:108830004000000000000000A8081E04C6823DE0C1
-:108840000C4812D610F5803CA00C7003DE00E790B7
-:1088500023EA047A039E00F5803DE00F7A03EA02E2
-:108860000000000000000000080DAC009C003EC0AD
-:108870000F8003E410F90036010FA003C000EB00E5
-:108880003ED84EB083EC00F9003EC00FB4438206E0
-:108890006000000000000000C005DE00CF8431E071
-:1088A0000EC843D600CD8033E0CDD9033A00FF880F
-:1088B00033E00FF913FE24FD803F200CF6831000F7
-:1088C0007000000000000000A8119C00850021C479
-:1088D000284082D000D500238048C9021C00B70080
-:1088E00021C00B7102DE80B5102DC028F0022A04D1
-:1088F000600000000000000010009C00960021C0F5
-:108900000A4102F5408D0021400952029820B7002B
-:1089100021C00B7006DC80B5002DC0087002040079
-:1089200020000000000000006014CC10980000C07F
-:10893000880482C000910420030900028A00B30A5F
-:1089400020C48B3402CC00B9002CC00030021804C3
-:108950003000000000000000F815AC00DB00B0C0E3
-:108960000E9C02C500C110B2C00DB00BA708FF00DD
-:10897000B3C00FFA03FC00FD003ED40CF00B2E0434
-:1089800060000000000000008000EC04ED003E40AC
-:108990000F8403E540F9403E60CEB4436400FB80A1
-:1089A0003EC20FB013EC00F9023EC04FB003E1002D
-:1089B00030000000000000009010FF00CE0033C027
-:1089C0000EC0077404EC0011800CCA03FE60FF00A7
-:1089D0003FC00FF0833C00DD00B3502CF0032004B7
-:1089E000300000000000000081004C048B0B22705E
-:1089F00008080367208A88A200288402E700BB00D9
-:108A00003EC00BB0022C00B900226108B0036040E8
-:108A1000100000000000000080052C008B2022E2E6
-:108A20000A8C022600A9802AC008B442ED00BB00CF
-:108A30002EC00B30022C00B90020800830026000EC
-:108A4000400000000000000008040E018100A0C0EA
-:108A5000088102440081002881083202CC00B30062
-:108A600028C00B30020C80B10020C0083012420137
-:108A70000000000000000000800D6C00C20132C048
-:108A80002E80162C08E9003A400C8003EC00F70019
-:108A90002FC00FF00B2C00D90030400CF003600306
-:108AA0005000000000000000A00DF808FF003FC0CB
-:108AB0000FC217FC00F70037000F8403FC00FF0013
-:108AC0003FC00FF003ED00FD003F400FF003E8064C
-:108AD0007000000000000000C005FC00CF30174807
-:108AE0000C5903B900DF2835240D82A37C80FF00D8
-:108AF0003FC80FF203E4A0EF803FE18CD843300081
-:108B000070000000000000008010ED488934A37060
-:108B100028B02360008BC0224008B4822F40BFD110
-:108B20006FF48EBD02E700BB803AE008980A280483
-:108B300030000000000000008805C4B09100A8507B
-:108B400008B202C884930024490B02024C00B3040B
-:108B50002CC00B30428400B3002E000AB012220158
-:108B60007000000000000000C011AC0299182A44F7
-:108B700008B882A201BB0028600AA0126C00BB00EA
-:108B80006EC00AB002E400BB002A002AB00238041A
-:108B900060000000000000004011E408DAC03A6004
-:108BA0000C180AEB04DB0036E00785836C00FB0041
-:108BB0002EC00FB043E400EB003E880E18031004F3
-:108BC0007000000000000000E0419C10E9003760E8
-:108BD00087F0177000CF0137C04C9803BC00FB0032
-:108BE0003FC20FF003E400FF403FE40DD903F00063
-:108BF00060000000000000004010A400F4003040BD
-:108C00000FB4039900FB003EC00D04232C08FB8821
-:108C100032C00FB003E600DB103E020FB083D00479
-:108C20002000000000000000C8052C00B950A24838
-:108C30008BB0032000D7802ED80080023C00BF807C
-:108C400023E88BF002F4408B400C4203B602F200A2
-:108C50004000000000000000E0054C00B24400C8E5
-:108C60000B30128C00A38024C80B000ACC00B34444
-:108C700004C01B3602C501830C2CA00B3002F80087
-:108C8000500000000000000020011E08B790216481
-:108C90000BF8024A0497812FE40A78029E00B780FD
-:108CA00021E08B7882D68687842DA00B7802C000C5
-:108CB000400000000000000048080400F20030C03E
-:108CC0000F30038C00E30A3CC00F18038C00F30242
-:108CD00030C01F3001C680C3003CC00F1203DA024F
-:108CE0000000000000000000400DBC00FF003F41FC
-:108CF0000FF003B808FF083FC00DF0033C20FF0849
-:108D00003BD20FF003F440EF003FC40FD003D00676
-:108D10006000000000000000A805E400FE0032C270
-:108D20000C300B2600FB8036C00DA003EC00FBE0EE
-:108D300032D00FB8436444DB043E800FB003E2003E
-:108D4000700000000000000048119C00B700A1C0A6
-:108D50008870031000B72021C0087002DC80B33097
-:108D600031C80B7402140087402DC04B7002D20032
-:108D70006000000000000000C0009620B68020E0E7
-:108D800028F8029410B78127E2097802DE00B7A024
-:108D9000A9E80B3802760087802DA00B5802F0005E
-:108DA00020000000000000004814CE10B30020C4D2
-:108DB0000820028010B30022C808B002CC11B30210
-:108DC00028C00B3002040093802CD20B1002D20476
-:108DD0003000000000000000E815A800FE4032A0AE
-:108DE0000CE4039880FA0037A00DE083E800FE0051
-:108DF0003A800BA0036800D8A03F900FA003FA04AC
-:108E000060000000000000004800E008F8083E0094
-:108E10000F80032000F8403E000F8003E000F804BC
-:108E200030100F8003E002E8003E000F8003D20004
-:108E300030000000000000000810E400F1003240A3
-:108E40000E9083A400C9803E400E9003A400F90058
-:108E50003E400C9003E400C8003E408F90030204A3
-:108E6000300000000000000080046400B940A062EF
-:108E7000081002241089002E400890022400B90036
-:108E80002E52089402C40089402E400B100360103B
-:108E9000100000000000000018052400B91822444A
-:108EA0000A9002AC0089102EC00A9002A400B9807A
-:108EB0002E60089802E60289082E400B90020600F8
-:108EC000400000000000000008040480B120A04819
-:108ED000089002240881232C500810020480B1203D
-:108EE0002C48281202E48081202C400B9802420575
-:108EF0000000000000000000B80D6140F850320092
-:108F00000E8503A1E0CA003E000E8503A000F80014
-:108F10002E009CA003E000C8283E000F80032E0115
-:108F20005000000000000000981DF440F5103F4480
-:108F30000FD003F400F1103D408FD403E450F9103A
-:108F40003E450F9103D440FC003FC08FD023E60480
-:108F500070000000000000001805E620CDA8334096
-:108F60008DD0032680CD003D500C9A036400F9A0FB
-:108F70007A6A0F9A63E680C9803E400F900306002C
-:108F800070000000000000003810E10088E03600AA
-:108F900008800A2142C8002E290CA4422000B840B3
-:108FA0002E000B8102E10088023A010BC0020E0480
-:108FB00030000000000000000805C40281082440C1
-:108FC000091002040091002C404B14024400B5101B
-:108FD00029400B5002F500B5002D400BD0020201D4
-:108FE00070000000000000001811A6018900264052
-:108FF000089402240189002E401A90026C00BF02DE
-:109000002F400BD002F402BD802B408BD83A0604CF
-:109010006000000000000000A015E400C905364112
-:109020000D1C032400D9003E422F94036400F90074
-:109030003A400F9003C400F9003E700F100328045B
-:10904000700000000000000028018408F9243E4060
-:109050000F9103E400F9003E410D1003A400F90054
-:109060003E400F9003E400C9003E640F9003CA0025
-:1090700060000000000000002810A008C880320234
-:109080000F80030000C8083A10CE8403E000FC0003
-:109090003F008FC003F080FC003F180FC043CA049C
-:1090A0002000000000000000280528008E00A1809C
-:1090B0000BE0022800DEC2239000A002E800BA0004
-:1090C0002E800BA002E800FA002E800BA002CA003E
-:1090D000400000000000000028054C00998160C09D
-:1090E0000B10020C0090102AFC0B3002CC00B300D5
-:1090F0002CC00B3002CC00B3002CC00B3002CA00D5
-:109100005000000000000000A0011C82954021C01A
-:109110000B50021C8090802301097212DC00B60003
-:109120002D000B4002D000B4092D004B4082E80016
-:109130004000000000000000A8083E80DD80B1E093
-:109140000FDA030F80D48039E00B7A03DE00F5805C
-:109150003D200F4803D610F6813DE08F6803EA02F8
-:109160000000000000000000081DAC00ED003E0003
-:109170000F910BEC10F8003E000EB003EC00F8006D
-:109180003EC04FB003E800E9013E000F9003C20665
-:1091900060000000000000000005FE20BF8133A435
-:1091A0008C19033E00CD803FE00FF8833E00EF8036
-:1091B0003FE00FF913FA10FD803FA40FD803C00061
-:1091C0007000000000000000A8119C00BF2031C208
-:1091D000085A023C0287002D940B700A1C4086102E
-:1091E0002D000B4002D400F6002D404B6002EA0433
-:1091F000600000000000000000009C00B701238018
-:109200002850021C0084002DC00B30021C00B50049
-:109210002D000B4006D040B4082D800B4802C00042
-:1092200020000000000000002014CC00B308A020A3
-:1092300008118A0E0080002C900B37020C00900061
-:109240002CC00B3042CC04A3802C500B3002C8043D
-:109250003000000000000000A815BC00F98032605A
-:109260000CD4033C8088003ED00FF8032800FA009D
-:109270003EC00FB007EC01BB803E540FB006EA04BD
-:1092800060000000000000008000EE08F9803AC095
-:109290000F9003EC00F8403E580FB043E900EB4458
-:1092A0003E000F8003E00DF8003E800F8003E000D9
-:1092B00030000000000000000110DC00CF0033404F
-:1092C0000CD0033C30CC003BC02DF003D802CC00C6
-:1092D0003D000CC003F400EE0237400CE003C04434
-:1092E000300000000000000081046C18838420001E
-:1092F0004A10020C00A8482E6008B002E90089401C
-:109300002EC008B002E810B10120800A9003A040EE
-:10931000100000000000000080052C008B82220855
-:109320000890022C1488042C0808B012E8008A0067
-:109330002EC00AB002E801B9002604089002E0003D
-:10934000400000000000000008040C008380A2C060
-:109350000A92022C00A2002C00083402C8008300EC
-:109360002C00280002C401BA0022C0022006C2015B
-:109370000000000000000000000D6C00CA00B200F8
-:109380000C920B2C04C8043A000CB403E800C8008B
-:109390002E000C8033E140E80036000C8003C0034F
-:1093A0005000000000000000A01DFC00FF003D0078
-:1093B0000FD10BFC01FC003F000FF003D800FD00B3
-:1093C0003FC00FF003FC80FF003FC00FF007A8066E
-:1093D0007000000000000000C015F300CF80356071
-:1093E0004E68435C00E78039C00CC1037E00CF3477
-:1093F00035E14DF2037C00DF383FC80FF803F00081
-:109400007000000000000000C018C800DB8422606B
-:1094100008AC0A2C008B8022300891222C90276106
-:1094200022CA88FC22BF008B622FD009B803B00487
-:109430003000000000000000C805E280A9022440BE
-:109440008234420400A90028C54832024C208330EF
-:1094500020C00831020D00B3202CC40B3002F201F1
-:109460007000000000000000C005AA02B9042260DC
-:1094700028B2022600898802C0083112EC008B0055
-:109480002AD008B002AC002B002EC00BB002B004F2
-:109490006000000000000000C005E200E30036208C
-:1094A0000EA4636E00E1C01AC10C80036870CB008B
-:1094B00036800DB0034C00FB043EC10FB003D00456
-:1094C0007000000000000000E001B804DF003F0071
-:1094D0000FE803FC00FD003F002B98033A007700E3
-:1094E00027E40FF003FC00DF003EC00DF043F8005E
-:1094F00060000000000000005000A468CB203A90FB
-:109500000F24A3AC00E9503AC00EB4832C08EB0042
-:109510003A900EB08BEC80FB003EC00EB00390047E
-:109520002000000000000000C8010A008BA020807D
-:109530000DA8022C04894028E808B2022C00AF00D4
-:109540000280087C033D803F002FC008B002360037
-:109550004000000000000000E0054900034028C072
-:109560002B284A2800A10068D20A2042A401A300A7
-:1095700002400A34020D0033002CC00A3000B8004B
-:109580005000000000000000B8011A00879021E49C
-:109590002BC8123A0085C02B21286802B600A78488
-:1095A00023600838801E00B7802DE00878022E0066
-:1095B000400000000000000048080800C1003854C6
-:1095C0000F26838000E03428C80E2C0B8C00E300AB
-:1095D00078450E30038E80F3003CC80E30039202B3
-:1095E0000000000000000000401DB800F5023F44EC
-:1095F0000D9003F800BD141FC00FE1235C449F428F
-:109600003FC00FF4827D40FF103FC04F7007D0066F
-:109610006000000000000000A805E802CB0038C090
-:109620003CA003EC00E9003EC00CB0032004FB2189
-:109630003E804FB403CF00CB003ECC4FB043EA0096
-:109640007000000000000000C8919800870021C051
-:10965000084002DC04B5002D002D70021C1CB7026E
-:109660002DC00B7202DC0087402DCA8B7002F20401
-:1096700060000000000000008000BA0087882BE036
-:10968000187822D611A4822FE00878021200B7942D
-:109690006D604B7A02DE40B7A02DE00B7806E0004B
-:1096A00020000000000000004814C912838228D462
-:1096B000980006EF05B1902CC109B4020C04B30167
-:1096C0006CF00B3002CC00BB002EC00B3002D20479
-:1096D0003000000000000000E815B840CA803BA040
-:1096E0004CE502F880EE003D802CE00F3880FA0057
-:1096F0003FA90FA003E800BA023E808BA003FA0442
-:1097000060000000000000004800E010F8002602A1
-:109710000F8403E024F8003E004F80A3E030F800FF
-:1097200036020F8023E00408003E000F8003D200C1
-:1097300030000000000000000810E400D900B6412D
-:109740004E990BA40069103E400C9003A410C90070
-:109750003E400D9203E600F9003A400E9003C20429
-:1097600030000000000000008004640081002042FE
-:1097700008149A240089006E500090022410D90227
-:109780006E400B9403A700B9002240089003E0004C
-:109790001000000000000000180506009900A64116
-:1097A0000A90062C00A9096E5008910284048900D1
-:1097B0000E400B9402E549B9000A400A9002C60027
-:1097C0004000000000000000080406008100224064
-:1097D0000812220481A1002C4008160204009120E6
-:1097E0002C400B12428489B1202048081002C2018B
-:1097F0000000000000000000B80D6140D8003600F5
-:109800000A8003A140E8002E000C0023A140C850AC
-:109810002E140D8003E000F8503A000E8003EE0392
-:109820005000000000000000881DD400F500BF407B
-:109830000FD103F444DD023D502BD123F400F91085
-:109840003F400D9103A448F9123E4E1F9003A6021B
-:1098500070000000000000001815F400C5043B4033
-:109860000FD803A780FD00B3680DD843A510C9A089
-:1098700032514F5A433600C9A07A680BD003C60153
-:1098800070000000000000007818CA8888020200FA
-:109890008D84222342F8002204288AA2AA9488E90F
-:1098A00020A80A800A214080E22E280B8002CE04E4
-:1098B00030000000000000004805C420A104A8C03A
-:1098C0000B1C2A2400390420402A1E02E480B11017
-:1098D0002A48091446040081382C5B0B1002D20080
-:1098E00030000000000000001805A412A924224046
-:1098F000299002240039000258081810E601B90026
-:10990000AA44089002240089000E410B9002C6046C
-:109910006000000000000000A005E400E1012A64EE
-:109920002F94132402716012604D9000C502F9005B
-:109930003A400F90232402C9023A400F9002E804F3
-:1099400050000000000000006801A400D9003E6043
-:10995000AF90836488F9203E62039083A400C9001D
-:1099600036600F1003C400F9007E400F9003DA0048
-:1099700060000000000000002800A100C882320042
-:109980006F0003A000D84030000E80036004F8018F
-:109990003E104F808B2200F80032010E8003CA0473
-:1099A0002000000000000000280138000E00A990EF
-:1099B0002FE62088009E8023800AE8032800BA0052
-:1099C00018800DEC023880BA00A28008A0038A003B
-:1099D000400000000000000028056C02838020C8C1
-:1099E0000B20020C01921068C03A3C02CC103B02E2
-:1099F0000CC0283C024E00B30028C0283002CA0028
-:109A00005000000000000000A001140087422BC09D
-:109A10002970229C00B6002BC20A60861C00B72168
-:109A200029C00074025C00379101E0087402A800AC
-:109A30004000000000000000A8081E00C78021E0D0
-:109A40002F78029E00968039E02EF803DE30F7D0A2
-:109A50002DF20078035200F7A23BE00E7807EA02ED
-:109A60000000000000000000081DB400FB000CC056
-:109A70000F3003EC10D300B4C02F80036C48FB0000
-:109A80003EC84D9003A400FB201EC00FB003C206C9
-:109A900060000000000000000005FE00CC802B2CC0
-:109AA0002FF8037E006E803BA10DD8433E00FF904F
-:109AB00033E00FE933FE00CFC03FE20FD803C00010
-:109AC0007000000000000000A811B44087002104CD
-:109AD0000878021C00860021C0289002DC00B71024
-:109AE00021C00F7302CC0087002DC00B5002EA008A
-:109AF000600000000000000000009D00A400294854
-:109B00006AF0824C00AE00A1C42974025C40A3102C
-:109B100061C20B6006C80087002DC00B5002C00454
-:109B200020000000000000002014E601A3022040F5
-:109B3000283C020C00834220C8081002CD00B3006C
-:109B400028F00B3002CC0183042CC0831002C8041F
-:109B50003000000000000000A815AA80EB0038C00B
-:109B60000A90037C22A24032480DB00B3E00FF0059
-:109B700033F40F9003EC008F023FC00F9003EA0410
-:109B800060000000000000008000E000D9023EC03C
-:109B90000EB603EC00FA203EC04F2423AC60FB005D
-:109BA000A6C00E9003E400FB003CC10F9003E00050
-:109BB00030000000000000000110F802CF0033E088
-:109BC0002CF013BC002E10B1642EF0023C00FF02FA
-:109BD0003FC14DEC63FE00B7003BC00CD803C0444E
-:109BE000300000000000000080046C28818122E029
-:109BF0000A38023C04BAC932E02084022C00BB00BF
-:109C00002EC00B9C02E781BB0422C00A9902E0002F
-:109C10001000000000000000800528408880228895
-:109C200028BC42AC00BA002A80088402AC00BB0009
-:109C30002EC00BB082E890AB0062C008B012E0000A
-:109C400040000000000000000804000089002A8095
-:109C500028B2020C00BA0020C00800028C00B30039
-:109C60002CC00B30204C14B30020C0083002C201BD
-:109C70000000000000000000000D6800C800B2C035
-:109C80002CB203AC00FA003AC04EA503BC00FF00A2
-:109C90003FC009A003E904EF00BAC00CB001C00145
-:109CA0001000000000000000A019FC00F50035C005
-:109CB000AF3403FC00F40039C00FC2037C00FF0185
-:109CC0003FC00FF003FCA0FF003FC00FF003E8050A
-:109CD0006000000000000000C005FC00FF293D20DE
-:109CE0008EC1033248DC8023250EF2033CC0DF84A2
-:109CF00033C90FF203FC00CF8033400CF203300075
-:109D000070000000000000008010ECC0BB602E0856
-:109D100008810220048820204808F1822DC0830099
-:109D200022D409F502FC088B01224028B402200449
-:109D300030000000000000008805CC20B3092C8210
-:109D4000081016A010900828480A32020C00BB0028
-:109D50002CC00B3002CC02930120008A3122E20198
-:109D60007000000000000000C015AC04BB002C8097
-:109D7000088602A020A0002A600AB0102C00AB0CBC
-:109D80006EC009B002CC009B0022600AB002F00451
-:109D900060000000000000000015EC00BB003E3435
-:109DA00008A00B8300D9023AE02EB00B2C00F880FB
-:109DB0003EC04FB003EC00CA40B2720EB00BC004FC
-:109DC0007000000000000000E001BC10FB003F003C
-:109DD0000DF8137048DD4037C28DF003DC00DDC89C
-:109DE00013C00FF003FC00EE407F400D70033800FD
-:109DF00060000000000000004010AC00FB0132C019
-:109E00000410032040E8103AC00DB003AC08F8403D
-:109E1000B2C02CB033A482DA40BA400FB003D004F1
-:109E20002000000000000000C8053C08BF8022C8D8
-:109E300008B700234488D022D0087082FC00B2E02A
-:109E400003F408F50237048BD122604BFD02F200C7
-:109E50004000000000000000E0054C00B310A440EA
-:109E60000800024800A0422AD00130028C00B380D2
-:109E70002CC0093102CC00890022E8033802F80026
-:109E8000500000000000000060011E00B780276441
-:109E9000684A0252008C8021E0087802DE00B78018
-:109EA0002DE21939025E30859821E40B7902D80041
-:109EB000400000000000000048080C00F3203400BF
-:109EC0000CB8034880E22238C00D30038C00F30048
-:109ED0003EC00D3103EC00CB0038060F3083D202B8
-:109EE0000000000000000000401DBC00FF003B011E
-:109EF0000FD0039000F6003FC00FF401FC00FF01FB
-:109F000033C20EF513BC00ED003FC40FF003D006C2
-:109F10006000000000000000A805EC00FB003CC051
-:109F20000EA0016401D80032E02CB5032C00F20031
-:109F30007AC00DB4032D80C90232C00CB0032A00D0
-:109F4000700000000000000048119C80B7002DC088
-:109F50000D6002D001840021C00830021D00B7004E
-:109F600021C80BF4031EC0860021C0087C035204E4
-:109F70006000000000000000C0009EC0B7902DE00F
-:109F8000087806D601B48221E008780A1E00B5C020
-:109F900029E809780236C1978028B00A7A02300091
-:109FA00020000000000000004814CC00BB002CE0A2
-:109FB000093582C0C1A05120E40830028C00BBC426
-:109FC00020C00B300206009318AAB02A300A5204AF
-:109FD0003000000000000000E815A800FA013DACC8
-:109FE0004CEC137810F680B3900CA0032800FE0010
-:109FF0003A810DA00F2A80DE043BA00EA0033A0494
-:10A0000060000000000000004800E000F8003E0092
-:10A010000D8002E100D8483E120F80136000F86006
-:10A020003E00078003A002E8042608058003920092
-:10A0300030000000000000000810E400F9043A407D
-:10A040000C12032482C90036440F10032400F900C7
-:10A0500036400490030400C90012400C900302042F
-:10A06000300000000000000080046400B98122403C
-:10A0700008901A2400890022680B99022400B90074
-:10A08000224068900A24008900A24008900A20001B
-:10A09000100000000000000018052400B91022E0A4
-:10A0A00008940004048B0826C00B90022404B90C09
-:10A0B00024400A1002240023022A40A810020600AD
-:10A0C000400000000000000008040490B12022407D
-:10A0D0000812020C108102A0500B12020480B1057C
-:10A0E00000480A100204A0A100284A081200020138
-:10A0F0000000000000000000B80D6140F850BA14E4
-:10A100000C85030142C85034000F85032140F8003C
-:10A1100036000E80132080E0001A080C00032E0386
-:10A120005000000000000000981DE444F9103F407A
-:10A130002FD113F404F5003F400F910BE440FF28AA
-:10A14000BE4E0D9683D4A2DD28374A0F9383E606D0
-:10A1500070000000000000009805E410CD003F40B2
-:10A160000FD00335025D0131440FD0032400F90004
-:10A1700032600C9883E640D900366A0C9E83260133
-:10A1800060000000000000003810E00088002E0091
-:10A190000B804202808A0022208880032008B88237
-:10A1A0002221088882E24288A8222008CE020E04DA
-:10A1B00030000000000000000805C4028100684073
-:10A1C0000B10028401B900204049100A0400B508B0
-:10A1D0002146085002D4008D20254A0B500242012E
-:10A1E00030000000000000001811A40089046E5423
-:10A1F0000B1012A401A900A2401890162400B90067
-:10A20000234018D002F4008D40214A0BD0024604AE
-:10A210006000000000000000A015E400C9003A50F2
-:10A220008F960B8402F10130488D90032410F900C1
-:10A23000B2402C9003E640D1C036502F900B6804FA
-:10A2400070000000000000002801A400F9003E603A
-:10A250000F99C36400D9283E400D9003A400F94033
-:10A260003E400F9003E420F9403E400C90038A00EA
-:10A2700060000000000000002810A000F801360077
-:10A280008F8003E002F80432000D80432002CC00EE
-:10A290003F000FC0139002DC403F104CC0230A0463
-:10A2A000200000000000000028052800BA002280DD
-:10A2B0000BE820F8004EC023A008A00368008A0025
-:10A2C0002E801FA0022A068A002EA00260030A0028
-:10A2D000400000000000000028056C00B30020C012
-:10A2E0000B3D02C003230020E001B0064C008B00B0
-:10A2F0002EC04B30028E0883802CC400348E4A005E
-:10A300005000000000000000A0011C80B58061C06A
-:10A310000B4002D400840823C20850025EC08401AE
-:10A320002D008A0802102484086D000A03122800F8
-:10A330004000000000000000A8081E00F582216017
-:10A340000F7803D604AE8031E00D58237E00C6801E
-:10A350002DE00B78038E00D7823DF00C7A036A0261
-:10A360000000000000000000081DAC00F100BAD899
-:10A370000F8003E412F800BE800E1003EC00F90019
-:10A380003E005F8003E008F8043C000F8003C20633
-:10A3900060000000000000004005FE20FF803FF04C
-:10A3A0000FF803D200EF84B3610CB903FE00FF8005
-:10A3B00033E00CF8132211CD903F600CE80310003D
-:10A3C0007000000000000000A8119C00F5002DC0E6
-:10A3D0000B0002D40484202340085A02DC00B4009D
-:10A3E000210028C2021E0486042D8808D0022A04F7
-:10A3F000600000000000000010009C00B5002D402F
-:10A400000B7002F420A70421C00A5002DC00BE0039
-:10A4100021C0087012000085002D4088680A0400E1
-:10A4200020000000000000006014CC00A1002EC03D
-:10A430001B0806C420800020981A1002CC00B10826
-:10A4400020000800020C0182C02CAC2890221804C5
-:10A450003000000000000000A815BC00B3003E4022
-:10A460000FBA03E502E9043290AEB003FC10FB40E2
-:10A47000B2000C800B2C0282183FA00CD0032E04DB
-:10A4800060000000000000009000EC04FB013E4072
-:10A490000FB643E400F8003E80019003EC00F88121
-:10A4A0003ED00DB453E000F9403E400FA003E00061
-:10A4B00030000000000000008010DC02CD8033601E
-:10A4C0002CDA03FC00EC0033400FF2037C04FE00A6
-:10A4D00032000CC8033C00CE0031800CD1032404B0
-:10A4E000300000000000000091046C0009002A64A4
-:10A4F000088E02C210A0103E100B9802EC00B900AA
-:10A5000002D808BE2220008900225008A002204064
-:10A51000100000000000000080052C000B202240ED
-:10A5200008A002E542AB0422180BB0026C00B30095
-:10A5300020040801020004A8402210088002200024
-:10A54000400000000000000008040C0883002840C0
-:10A55000080402C402A8002C000B1202CC00B000B8
-:10A5600020C04030020C008B00A8C008300202114D
-:10A570000000000000000000800D6C00C9003340A6
-:10A580000CB003EC02EB0032400FB0036C00FA0099
-:10A5900032000C80032080C80030000C80032003B0
-:10A5A0005000000000000000A019FC00FD003F402A
-:10A5B0000FC213F000F4003F004FD403FC00F5007D
-:10A5C0003FC08FF003FC40FF0037C02FF003E806C8
-:10A5D0007000000000000000C005F000CC00330057
-:10A5E0000ED00B3300CC0033E00FC0837C00CF20B3
-:10A5F0007B098CF803FE50CF383FE10DC203F00019
-:10A6000070000000000000008010E2009808208028
-:10A61000089802200088D022E00EB4227D199F699C
-:10A620002E900830922881DB642EE18816A2E00487
-:10A6300030000000000000008805C80090242001C0
-:10A640000810160082830128C10B02820CE0A310BF
-:10A65000280E1B9202848493202EC0083102E2014E
-:10A660007000000000000000C015A81098002280B3
-:10A6700008900200608A102AC00A20026C18BB00F1
-:10A680006E602B900246208B002EC208B182F0042F
-:10A6900060000000000000004011E402CB00B24066
-:10A6A0002C920327008800BAC00F88032C00EB040B
-:10A6B0003AA0CF2CA3ED009B003CF02D8C33D004AE
-:10A6C0007000000000000000E001B404EF003FC093
-:10A6D0000D5103F000F18137C00EF4039C10CF0040
-:10A6E0003D800CEC07B808FF021FC40FC803F80038
-:10A6F000600000000000000040109E00C3003840D1
-:10A700000C9203A480FB203AC00D94032C40FB0064
-:10A710003E010F8003E500EB003AC00D840B1004EE
-:10A720002000000000000000C8052C088B0222C099
-:10A7300008920321008B4822C00BB7023D403F0125
-:10A7400022740B90022804BF00B2C00B85023200B5
-:10A750004000000000000000E005400180002800EB
-:10A76000082C128840B04008C00B18020E00B3003D
-:10A7700028201130020C00B3002400090006380024
-:10A78000500000000000000020011200848021A081
-:10A790002868123A00848025E08B58021E40B78258
-:10A7A00021A60B78021A00B78021200B580208005E
-:10A7B000400000000000000048080800C8213809D7
-:10A7C0000C28038001F10038C00D85020C00FB004D
-:10A7D00038850F10038C00EB103CC80D30031202BB
-:10A7E0000000000000000000401D9800FC013F80B8
-:10A7F0000F6803D040FC003BC00DC003FC20FF00ED
-:10A800003BC50FF00BB440FF183F000FF103D0061B
-:10A810006000000000000000A805E400EB00B0416B
-:10A820000CA003E004CA04B0E00EB003EC80CB201F
-:10A8300032810CA003EE00DB003E000EB0032A00C4
-:10A84000700000000000000048119404870021C03F
-:10A85000486002F000870021C0087002FCA0832835
-:10A86000A380086002DC0087202DC00B7002120458
-:10A870006000000000000000C0009C02A380216076
-:10A88000086802D200878021E0297802DE80879064
-:10A8900021A0194802FE0097802DE00A388230007E
-:10A8A00020000000000000004814CC01838020C07C
-:10A8B000082042C0308370A0C0893402CC028300DB
-:10A8C00060C0290002CE0083002CC80BBC02120419
-:10A8D0003000000000000000E815A900EAE2329014
-:10A8E0002CE003FB02CEC032800FE403E8008A00B4
-:10A8F00033880D64C3FA00DA003D900EE00B3A0491
-:10A9000060000000000000004800C024F8083E126B
-:10A910000FC003E048F0003E000E8093C000F80036
-:10A920007E010E80C2E040F8007E008F8403D200DA
-:10A9300030000000000000000810E500C1013248AE
-:10A940000C9803E640C90032400F90036600C9002E
-:10A9500018610C90036420F9053E400C90830204BA
-:10A9600030000000000000008004662089002052B2
-:10A970002810C22602A90022400B900A2700A90035
-:10A9800022700890022408B9002E400A900A200084
-:10A990001000000000000000180524028D00234074
-:10A9A00008D1028420890022600B11F224B08100BA
-:10A9B0002A460890426408B9002E40089202060018
-:10A9C0004000000000000000080414808520234897
-:10A9D0000852028408810020400B12020480A1204A
-:10A9E0002849289002040031202E4008320202013A
-:10A9F0000000000000000000B80D6000C850B21454
-:10AA00000CC003A140C800B2000785032140C85014
-:10AA10003A150C85036140F8513E002C85032E0346
-:10AA20005000000000000000981DC448F9103E448A
-:10AA30004F91037400F5443E400FD103E440F910F8
-:10AA400037440FD003D400F9103FC00FD103E606FE
-:10AA500070000000000000001815F6A0DD8C3378AF
-:10AA60000EDA033500CDA033400DF80B3681E980B6
-:10AA700033700C9103E440F9C03EC00FDC03C60004
-:10AA800070000000000000003810E104B840203CD5
-:10AA90000C850202848A402200088F822300B8E8D5
-:10AAA0002220088802E200B8D02E000B8C02CE04CF
-:10AAB00030000000000000000805C400910060485C
-:10AAC0004B1002048A814060404910028DA0A141D0
-:10AAD0002050091222C480B1202C404B3E02C201FA
-:10AAE00070000000000000001815A408B904A04080
-:10AAF00048B0022400890082400890A6A400B9044E
-:10AB00002254299502E540B9006E400B9202C6041A
-:10AB10006000000000000000A005E4009100324049
-:10AB20000F90092400899032400D9403A400E9029B
-:10AB300072600D9403E401F9013E600F9003E80494
-:10AB400070000000000000002801A440F9003E4011
-:10AB50004F9003E710F9803E400F10136400F1009E
-:10AB6000BE400E9003E608F9013E640F9003CA0050
-:10AB700060000000000000002800A000F80032087B
-:10AB80000C010B2040C84032000E84832000F804E2
-:10AB90003E040F80032100E8003E100F8803CA0422
-:10ABA0002000000000000000280538003E0423803B
-:10ABB00008EC123944A600288108E0003808BA00E1
-:10ABC0003F800BA002A8008A022E800BE002CA0080
-:10ABD000400000000000000028054800310024D09B
-:10ABE000083E12AE0881A02CC00A38004C00B30009
-:10ABF0006EC00A30020C00A3006CC00B3002CA0009
-:10AC00005000000000000000A0011800B51025C091
-:10AC10002860129010A5082DC20864225818B700A9
-:10AC20002D800B7902BEC087016DC00B6002E80069
-:10AC30004000000000000000A8081E00F584352038
-:10AC40008C18029210C5803D600EC80B5A0877F32D
-:10AC50003DA00FF8031EB0E7853DE00F7803EA0240
-:10AC60000000000000000000081DAC00F104BA0163
-:10AC70000FA0436009E10038400EA003A814FB2098
-:10AC80003A800FB41B4C80FB293EC00FB023C20694
-:10AC900060000000000000000005FA00CD803BE0ED
-:10ACA0004EF803F202D4813BE08E98073E44EF91C8
-:10ACB0003FE04FFC07EED0CF9833E40FF803C0001D
-:10ACC0007000000000000000A801980085102DC44D
-:10ACD0000D1102F000852031C40B7B003840D710E5
-:10ACE0002D800B7062FEE1871439C00B6002EA040C
-:10ACF00060000000000000000010BC40A5002940DA
-:10AD00000B5082DC4084042DC00B10065844A71061
-:10AD10002D800B7102DC00870421C20B5002C01091
-:10AD200020000000000000002014CC0AA1012C40EB
-:10AD3000891802C100A10820C00B34064000930509
-:10AD40002C140B3C86CE10830128F10B1402C8048E
-:10AD50003000000000000000A815A000ED003AC07F
-:10AD600007BC63ED0081403EC00E88036400EF0025
-:10AD70007E500FF002FD42CF0072C01FB403EA0400
-:10AD800060000000000000008000E80099003EE044
-:10AD90004FB483ED9009403EC00FA183A801EB01A1
-:10ADA0003E000FB113EC0CFB003AC05F2023E00023
-:10ADB00030000000000000000110F800FD043FB06A
-:10ADC0000D60033E00CD0033F00FF201F000FF03F1
-:10ADD0003F030FF001FC00FB0233C20FF0E300441D
-:10ADE000300000000000000081046A00B9022EA0BB
-:10ADF0004AAC020E80F9C036E10BA0022A08BB0063
-:10AE00002E200EB002EC00EB0022C08BB0022040DE
-:10AE1000100000000000000080012300A90028C0ED
-:10AE200009B2226C4089892AC00B14062600AB02A5
-:10AE30006EE009B0066C00B30222C00BB002200025
-:10AE4000400000000000000008040800B1002CC011
-:10AE50000A30022C00BB0064C00B320A0800330029
-:10AE60006C80023046CC18A30020C00B28020211CF
-:10AE7000000000000000000000056800E90038C183
-:10AE80000DB10B2C0089003AC00B90036000FF024B
-:10AE90003E800FF003FC80FF0032C08F800B000368
-:10AEA0005000000000000000A011D800FD043FC0C9
-:10AEB0002FF203FC11EF003FC00FF4437000FF00BE
-:10AEC0003F0046F003FD00EF003FC00FC003E8065F
-:10AED0007000000000000000C005FE00FF803DE0A3
-:10AEE0000CF913DE007F80B3E00FFC03BE40CF807F
-:10AEF00033F00FF8037C04CC8033A00CF00B30014E
-:10AF000070000000000000008010E02088002E206B
-:10AF1000088212E080A88122020B80022080A88093
-:10AF200022080B80022C028804AA2008B002200408
-:10AF300020000000000000008805EC00A3082C8021
-:10AF4000083202C420A30028400B92028400A90109
-:10AF500028C81B1282CC40A80024E00A30422201FB
-:10AF60003000000000000000C011A880A8022E40A0
-:10AF7000688010C800B8402A900BA0002800AA08DA
-:10AF80002A020320028C00A8882E200AB002300476
-:10AF900060000000000000004015E804FA003C409A
-:10AFA0000CA003E800EB003AC00F2053A800E340D8
-:10AFB0002A400FA0036C00A88034201EB0031004A8
-:10AFC0007000000000000000E001B4009D913F808F
-:10AFD0000FDA23F400CC20370007D0137400BC0034
-:10AFE000B7800BD0437C00DC043B006DF003F8001D
-:10AFF00060000000000000004010A800FA803A0045
-:10B000002CA00B2002CB623E500E88032000D910EA
-:10B010003E708C8033EC80D8403A020DB0031004AF
-:10B020002000000000000000C8010C00398022C090
-:10B030000C9D822C10D0402EA008B8034E028A40EE
-:10B040000EA00DB0033D00D09036100BF002B20000
-:10B050004000000000000000E0054C00B10060C0AE
-:10B060008A18028C0880400CA0023002CE00824870
-:10B070002C802B30068C008102209009B002380011
-:10B08000500000000000000020011200B690A33024
-:10B0900008E822B21487802D600849121261959049
-:10B0A0002D610A48161E80958025200B78028800A5
-:10B0B000400000000000000048080C00F100288C4F
-:10B0C0008E1003848080002C020A9A02E400D000D3
-:10B0D0003E800B91038E80C20838800DB0031202AF
-:10B0E0000000000000000000401DB000F6003F44DA
-:10B0F0000F21137800FF003DC00FE0037800EF043C
-:10B100003F408DE803DC04F6003F000FF083D006DB
-:10B110006000000000000000A805E800E880324060
-:10B120000F880B280078023E800E28032800CA8072
-:10B1300032000FA003EC00C98032800FB0032A0058
-:10B14000700000000000000048118C008F00A180FA
-:10B150000B70421400B7002D410B50421400A500A3
-:10B16000A1C00B5002FC80A50021000BF2021204CA
-:10B170006000000000000000C000BA00A480293078
-:10B180004B48065208B4802D200B48423200848080
-:10B1900021200B4812DE40868129A00B780A30005E
-:10B1A00020000000000000004814CC00830520E0CF
-:10B1B0000B34026C10B3002CC00B364A0D0DA300EB
-:10B1C00020C00B3482CC02A20028000B30021204F3
-:10B1D0003000000000000000E815A920EA4030A07F
-:10B1E00007A0436940FA003C800FA0030840CA0052
-:10B1F00030A00FA403E800CE003B980FA0033A0450
-:10B2000060000000000000004800D200FC083F0081
-:10B210000BC203B000FC003F000FC003F000FC00B5
-:10B220003F040FC003E000F800B6020F8003D20015
-:10B2300030000000000000000810E400D9003E6863
-:10B240004C9101E408C9003E402C9203E402C9A0DD
-:10B250003E700E9003C642C9003E400F1003020428
-:10B2600030000000000000008004640089860E6049
-:10B27000089802E40889102E60089002E400890C06
-:10B280002E60089002E68889002E400B9002A000F4
-:10B290001000000000000000180524009D102F4041
-:10B2A00028D006F402AD002F6008D002F4008D0013
-:10B2B0002F400AD002E40089002E600B90020600A5
-:10B2C00040000000000000000804340085002D400C
-:10B2D000085802D400A5022D40085000D400850073
-:10B2E0002D40085402C48081002C600B140282019E
-:10B2F0000000000000000000B80D6140D8523E0080
-:10B300000C0503E140E8043E140C8503E140C8004D
-:10B310003E140EC003E000C0023E004F80232E0307
-:10B320005000000000000000981DF400F9013E40AC
-:10B330004F9013E400D9001E400F9003C410F10099
-:10B340001E400F9003E4E0FD283F400F9403E60603
-:10B3500070000000000000001805A400FD003F4040
-:10B360004D5002E4009504334028D003F400FD0062
-:10B3700033400F91033400CD4033400F98810600D5
-:10B3800070000000000000003810E010B8002E002F
-:10B390000B8002E010B8002200088002E000B80034
-:10B3A00022000B8803C280888022000B8C020E04CE
-:10B3B00030000000000000000804C400B1002CC0F0
-:10B3C0000B1002C400BB002240081002C401B900E7
-:10B3D00020401B90020422890020600B128202018F
-:10B3E00070000000000000001815A444B9002EC031
-:10B3F0004B9002E410B9020240089142E400B98087
-:10B4000022400B9202C400994022404B9012060445
-:10B410006000000000000000A015E600B9013E58E1
-:10B420000D9003E600D10032600C9802E640F9006E
-:10B43000B2400F18032400C98032500F9023280413
-:10B4400070000000000000002801A400F9003E4246
-:10B450000B9003E708F900BE480F9003E400F900E1
-:10B460003E400F9803A400E9A0BE400F100B4A0015
-:10B4700060000000000000002810A000D8013E007D
-:10B480000F808B2000F8203E010F8103E000F808B8
-:10B490003A000C8003E000D84032000F80130A0409
-:10B4A0002000000000000000280528008A802F915D
-:10B4B0000BEE022801BE0020800BA002EA80B648F5
-:10B4C00022800DA002FA028641A3A60BA0030A0067
-:10B4D000400000000000000028054C0093802CC0B4
-:10B4E0000B30020C10B30028C00B3802CC00B300A4
-:10B4F00028C0093002C601836020700B300A4A0060
-:10B500005000000000000000A0012E8885082D805A
-:10B510004BF8061C80B70021C00B5002D400B600C7
-:10B520002960097002D0A08D0021400B3202280052
-:10B530004000000000000000A8081E00D5803DE08B
-:10B540008F78031E84B7823D600F5903DE00F780B9
-:10B550002960157803DE00C78031600F7C036A0222
-:10B560000000000000000000081DAC40E9003E8023
-:10B570000FA003ED30FB0036C10F9603E400B300CB
-:10B5800034400FB783EC4021003E400FB003C206A9
-:10B5900060000000000000000005FE00FF8133E0B5
-:10B5A0000FF903DE20CF813FE00778033E00FF80E4
-:10B5B0003FE004F813FE02DE8033600FF803000062
-:10B5C0007000000000000000A8119C00B70021C41A
-:10B5D0000B5A02DC4886502DC00B31029460B4181F
-:10B5E0002D40487002E800A51021400B71022A048A
-:10B5F000600000000000000000009C00BD0021422F
-:10B600000B7002FC02850025400B50029C00B70025
-:10B610002F40287102DC00A60021C00B7002000040
-:10B62000200000000000000020146D80B120A05018
-:10B630000BB206CE00A0342EF00B18028520B34AC0
-:10B640002C54883802CC10A10020B00B3002080422
-:10B650003000000000000000A815BE80F308105460
-:10B660000B8813FF00C0803E640FB4830700F9C04D
-:10B670003EF00CFC13F400EA0032700FF00B2A04C9
-:10B6800060000000000000008000EC00F9003E10A7
-:10B69000079103ECC058003E440F9203E400F90008
-:10B6A0003EC08FB303E000BB00BE440FB003E00018
-:10B6B00030000000000000000110FC02CD0433E067
-:10B6C0000CC0033C08FE0033602CD002B480CF00D5
-:10B6D0003F5207F013FC00CE1033420CB003C044BD
-:10B6E000300000000000000081046C0089002AB0D6
-:10B6F0000888022C00BA0036440890002600DBC0FF
-:10B700002E400BB002EC0083C028400AB002E0409B
-:10B71000100000000000000080052C008B002208B3
-:10B720001AA2022C10B92022400830022C04AA547C
-:10B730002EC00BB012CC008B08224008B002E000F3
-:10B74000400000000000000008040C0083042A00F0
-:10B750000A08820C00B8006440083002A400B0005F
-:10B760002CC08B3010C8028B002A400A3002C20164
-:10B770000000000000000000000D6C00C900320055
-:10B780001A82033C00F90032400CD103AC00EB00FC
-:10B790003E400FF003ED00C30032C08CB003C00385
-:10B7A0005000000000000000A019FC00F5003F0060
-:10B7B0000D804BFC007C003F400FD20B7400DF007B
-:10B7C0001D408FF003FCA0FF003F800FF003E80650
-:10B7D0007000000000000000C005FC00DF843BE0BA
-:10B7E0000FF80B3E00EC8033E10C30033C80CF4877
-:10B7F00037C00E4003E0C0C791B3040CF003300023
-:10B8000070000000000000008010EF048B802241D7
-:10B810000BB0822E008880A2E00AA292AD808742FF
-:10B8200023D88AAD02E0C08B00204C48A40220043B
-:10B8300030000000000000008805CC58BB002880C4
-:10B840000BB2422400A8002AC00A10020460A32000
-:10B8500024D20800428C839B0120490833C2220174
-:10B860007000000000000000C015AC00AB8822A0F2
-:10B870000BB802260CA8002AC00A9202A400AB064C
-:10B8800022C00AB002E8009B00024008A042300437
-:10B8900060000000000000004015EC00D3803AE09A
-:10B8A0000F18010600E83038660EB8032A40EB0096
-:10B8B00036C10E9603E280DA0832802CBB031004F6
-:10B8C0007000000000000000E0019C00DF003FC0AD
-:10B8D0000FD003F400DC8037600FE803FA00DF01CB
-:10B8E0003FC00FC043E64CEFA03F440FA003F80059
-:10B8F00060000000000000004010AC40DB0036801B
-:10B900000C98032600F8003EC00E18038402E301E1
-:10B9100038C10EB403AC80CA183AD02C30031004DE
-:10B920002000000000000000C8053F40B9882E80BC
-:10B9300008BC02A300B0000EC008B00620008F04AF
-:10B9400023C108B9122F008380364008AD023200AF
-:10B950004000000000000000E0054C00B2002CC0D8
-:10B96000093202840033002CB20A36128C08930587
-:10B9700020C00B1802ED0091806A00081002380008
-:10B98000500000000000000020011E00B7802DE0E4
-:10B990000978029740B4802FA008E8020E409782F1
-:10B9A00021E09868821A189D902DA118580208006D
-:10B9B000400000000000000048080CC0F3003EC03A
-:10B9C0000DB0438440F0003C820E38128C44F330BA
-:10B9D000BAC11E10478E22D11038180C30831202C3
-:10B9E0000000000000000000401DBC40FF003FC000
-:10B9F0000EE003F440FC003DC40FD001F441EF1809
-:10BA00003FC41FF003F848EF1433800FC103D00682
-:10BA10006000000000000000A805FC40FB003EC0E4
-:10BA20000F98032400CB003E400FB003A800DB2892
-:10BA30003EC41F9023EC00CA0032E00C9003EA00E1
-:10BA4000700000000000000048119C80B7002DC06D
-:10BA50004B50521400D4012D800B6002D800A72057
-:10BA60002DC50B4016DC00840023C0084002D20420
-:10BA70006000000000000000C0009E80B7802DE044
-:10BA80000B780A960094802D601B7806D200A78060
-:10BA90002DE00B7822DE00878221E0085802F000BA
-:10BAA00020000000000000004814CC00B3E42CC0CB
-:10BAB0001B2102810090002CC80B3902CE00A3008C
-:10BAC0002CC00B3002CD008B2020F008B202D20433
-:10BAD0003000000000000000E815A800FEA03F8232
-:10BAE0000FE8039830D6003FA00FE003BAC0FA0079
-:10BAF0003E800FEC33F802CE00B3B82CEC83FA048E
-:10BB000060000000000000004800E018F8403E001F
-:10BB10000F80026084F8052E048F8041E0007802D7
-:10BB20003E000F8183E020F800BE020F8003D200A8
-:10BB300030000000000000000810E618F9203E4028
-:10BB40000F9C03E440C90032610C9013C408C90182
-:10BB50003E410F18032400C9A032400F984302044D
-:10BB6000300000000000000080046500B1C02240E9
-:10BB70000B9C02E71089002844089422E4108900F5
-:10BB80002E400B9F222660898022400B910A2000C4
-:10BB9000100000000000000018052480B9002EC02D
-:10BBA0004BB402E42089202240089402EC00890072
-:10BBB0002E410B90020400894022400B90020600A7
-:10BBC000400000000000000008040400B104204010
-:10BBD0008B1002E40581002840281212C4828120C3
-:10BBE0002C480B120A0482810020480B1202020129
-:10BBF0000000000000000000B80D68A0FA023E142A
-:10BC00000F8503E000C80032000C8503C140C85313
-:10BC10003E140F80030148C050B2140F85032E0359
-:10BC20005000000000000000981DE400FD00BF402F
-:10BC30000F5013D402FD002FC00FD103F440F910B0
-:10BC40003E440FD103F440FF00BF440FD103E6068A
-:10BC500070000000000000001805E6A0FD013E4451
-:10BC60000FD103D400C50033410FDB032720D9E0F7
-:10BC7000B2700DDA83F640CF1032782DDA03060069
-:10BC800070000000000000003810E100B8002E280D
-:10BC90000B8842E010D80022000B8C0A230088C0D9
-:10BCA0002228088402C28080A0223048AA820E0482
-:10BCB00030000000000000000805C400B1002C4066
-:10BCC0008B1202C400990228408B160284819130A5
-:10BCD0002058091002C5008100644D083402020199
-:10BCE00070000000000000001815AC0CB9042E48CC
-:10BCF0000B9406E4009940AA400B9222A40089000C
-:10BD00006040089402E4008980A65008920206046C
-:10BD10006000000000000000A015E400F9983E4813
-:10BD20000F9803E520D9003A640F9483A4C0D90288
-:10BD300072404D9042E482C94036400C900B28047A
-:10BD400070000000000000002801AC28F9883E4087
-:10BD50000F9913E700F9C036600F90036600F100F9
-:10BD60007E400F9907E460F90038400F9803CA003D
-:10BD700060000000000000002810A000F810320051
-:10BD80000F820B2100E80036040C8603E100D80086
-:10BD900032000F80036100C80032000F00030A0464
-:10BDA000200000000000000028052820BE0022809E
-:10BDB00028EC021904820003800DE482E8008A0165
-:10BDC000AA808BED823B808E9036800BE0034A0088
-:10BDD000400000000000000028054200B38020C0A1
-:10BDE0006B341640C08310247288B002EC008300CC
-:10BDF00024C00B04026F099B0024C00B30020A0010
-:10BE00005000000000000000A0011400B78023E4EF
-:10BE100028788274148F0061E0095012DC048722B4
-:10BE200025C81B780214009440A5C00B602268004E
-:10BE30004000000000000000A8081220B780B1E018
-:10BE40008FF8031202E78035E00C6806CFC2CFB04E
-:10BE500025F40F58035A02D58075FA4FF8032A02C9
-:10BE60000000000000000000081DA590F3003DC088
-:10BE70004FB013A804FB003CC00F8043EC80EB6084
-:10BE80003AC90F3003EC00E9003EC80FA003C20618
-:10BE900060000000000000000005F600EE803FE0BA
-:10BEA0000D8903D240E58139E03CF907FE00CF88D7
-:10BEB0003FE00FE803F208CE8033E00CF803000007
-:10BEC0007000000000000000A8119444C6002FC0BC
-:10BED000085802D0C485242190085412DC8207003F
-:10BEE0002DC00B7006D4008E4821C00A60022A04BF
-:10BEF000600000000000000000009C00A7402DC072
-:10BF0000084202D000AD0029C0087022DC2887005A
-:10BF10002DC00B400298009700A0C40870020000DA
-:10BF200020000000000000002014CC0893002CE04A
-:10BF3000083C22C10081002080881502CE30830099
-:10BF40002CC00B3C02CC0493C020F44A0C820804A1
-:10BF50003000000000000000A815A000E3C01FE0B2
-:10BF60006C1083E004EB003A524CB403FE02CF00A5
-:10BF70003FC00F8443E102D8C233C00C840B2A04B3
-:10BF800060000000000000008000E900EB103EC4EB
-:10BF90000E9403E400FB183EC20FB603EC00FB0155
-:10BFA0003EC00F3503C428EA423EC00F8103E000C3
-:10BFB00030000000000000000110FC40FF0033C012
-:10BFC0000CC0A33028CDA033C00CE8030C00EF0553
-:10BFD0003DC00CCA833C00CD083FC20CA003C04446
-:10BFE000300000000000000081046700BB8020C01A
-:10BFF00008AA020800A10134D108A4122C008B0069
-:10C000006EC088B2022C0889802EC00AA803A04006
-:10C01000100000000000000080052C00BA80A2C0C3
-:10C0200008A80AA0008B00A2C0481102AC048B0033
-:10C030002EC00080122A088B142CC0088802E00051
-:10C04000400000000000000008040C00B20022C004
-:10C0500008B2128000AB0124C00800020C04830067
-:10C060002CC00830020700820024C00808028201A8
-:10C070000000000000000000000D6C00FB0032C05A
-:10C080000CA203A000C90032C02494033C02CF00DC
-:10C090002FC004800B0902CB013FC02CA003C003BA
-:10C0A0005000000000000000A019DC00FD023FC0AD
-:10C0B0004FE4137000FD003FC00FC283FC00FF007F
-:10C0C0003FC00FF003FC00FF003FC00FC003A806F5
-:10C0D0007000000000000000C005FC20EF303F04AD
-:10C0E0006C88033A42E4913F0D0D48033CC0FF02C7
-:10C0F00033440CF403FC82DF3033600DF103300075
-:10C100007000000000000000A010ED008B702E18E1
-:10C1100088224A2C82EA262E0C0BB8423D80BF9022
-:10C120002A5428B402CD00DB402A4A483002A00439
-:10C1300030000000000000008805CCB0A3006C10A7
-:10C140000900822082A0202C884B80000C40B30183
-:10C1500020480B36028CE0836424402832022201FE
-:10C160007000000000000000E011AC008B002E0009
-:10C17000098080A600BA112E880BB0002C00BB02EB
-:10C18000024009B002EC008B002CC808B882B00451
-:10C1900060000000000000004015EC00EB003E9243
-:10C1A0000D80030A20E9003E504580012C04F30075
-:10C1B000906009B003EC008B0226508DBC03100484
-:10C1C0007000000000000000C001BC00FF023F80C2
-:10C1D0000EF9027C22AF003F6003C00BFC10FF0091
-:10C1E0003F4A4EF003FC00F7002B600F7003F8008D
-:10C1F00060000000000000004010AC00FB00B00038
-:10C200000F820BA900C90032D20FA083AC00CB1063
-:10C210003E400CB003EC00DB0032502C95031004C0
-:10C220002000000000000000C8053C04BF0222807E
-:10C230000B98002900CB4022C00B24023C088F50F1
-:10C240002E500DF002FD428F5822E048B502320018
-:10C250004000000000000000E0056C00B300244036
-:10C260004B940049009080043009000E4C008380FC
-:10C270002CC00930226E42838020480838023800E2
-:10C28000500000000000000020011E00B780652063
-:10C290000B78827A088CC025A34B78025E048784D1
-:10C2A0002D61897802DE048780E96208780208003F
-:10C2B000400000000000000048080C00FB0034486B
-:10C2C0000F3B034800934834500D00036C00C3102B
-:10C2D0001CC2053003CC40CB0032400C20031202BC
-:10C2E0000000000000000000401DBC20FF010340D2
-:10C2F0000FF0231C00FF003B800FB0233C02FF50D7
-:10C300003DC40FF103EC00EF00B7C00FE103D0060E
-:10C3100060000000000000008805EC00FB023EE029
-:10C320000C80034802C88132000F9042ECA0FB1041
-:10C330003EE00CB103EC40FB1032401FF0032A003A
-:10C34000700000000000000048119C00B7242D8000
-:10C35000087042D8108C0221400B5002DD00E7200B
-:10C360002F40087002DC05B70021C00BF002120458
-:10C370006000000000000000C0009E00B7902F4049
-:10C380000A68027A00978021E00B7802DE00B7800D
-:10C390002DE0087806DE00B7A021600B784230005F
-:10C3A00020000000000000004814CC00B3002CC0A6
-:10C3B0000A3402C800834A20F80B3102CC00A300E3
-:10C3C0002CC0083002CC00B30020B20B2042120473
-:10C3D0003000000000000000E815A800BA003F8807
-:10C3E0002EE0435988DE0033B00F6C03E800FA00FA
-:10C3F0003E802CA003E804FA0023B80FE08B3A0437
-:10C4000060000000000000004800E004F8013E0069
-:10C41000098221E000F840BE140F8481E000E800AA
-:10C420003E001F8003E000F800BE000F8803D2002A
-:10C4300030000000000000000810E400E10032407D
-:10C440000C9043E420D9003C440890032400F901F7
-:10C450003E480F10432500C900B2400C900302046F
-:10C46000300000000000000080046400B900A0401B
-:10C47000089802E608A9602E490894022400B90031
-:10C480002E700B900226028900A0400A900A20001C
-:10C49000100000000000000018052400B900224030
-:10C4A000089804E60099802E400AB1022400B900E1
-:10C4B0000E400B900A0400810122C0081002060001
-:10C4C000400000000000000008040480B120224861
-:10C4D000081806C400A1002C482A30020480B122AA
-:10C4E0002C480B12020580816022500A14020201BE
-:10C4F0000000000000000000B80D6140F850321448
-:10C500000C8503E140D8503E140E800B2140FA0008
-:10C510003E940F85032000C00032000C80032E03E0
-:10C520005000000000000000981DE441F9103D4556
-:10C530000FD003F400FF003F450DD003E440F91095
-:10C540003F440F9103E442F9103F400FD403E60645
-:10C5500070000000000000001805E400F9003E40F3
-:10C560000CD003F4088D023F400FD003E400CD004F
-:10C5700033400C90032400F90032404C982306000D
-:10C5800070000000000000003810E000E8002E00FD
-:10C59000488002E800D0002E800B8012E002880064
-:10C5A000A2000A80122200B881222808CF020E04BD
-:10C5B00030000000000000000805C400B1002C405D
-:10C5C000281002C40081002C400B1002C40091000E
-:10C5D000264009100254A0B52CA542085082020141
-:10C5E00070000000000000001815A400A9002E50E3
-:10C5F000589002E4809B002E458B9202E400990043
-:10C6000026440B90026408B500254A08510206042E
-:10C610006000000000000000A015E400F9003E5496
-:10C620000C9043C400C9903E700F9803E400D900F9
-:10C6300034604D900A6400F90036402C9E032804B3
-:10C6400070000000000000002801A400F9003C4038
-:10C650000F9C03E630F9003E620F9003E400E9000E
-:10C660003A404E9003A400790C3A400F901BCA0048
-:10C6700060000000000000002810A000F8003E004C
-:10C680000C8113E108C84832003C8003C000F01060
-:10C690003E060C8003F008CC0033040CC0030A04EF
-:10C6A000200000000000000028052800BA002E80AD
-:10C6B00008EC42FA208E0023A008E842E800BE8081
-:10C6C0002F8008A002E800DA00228048E0020A0079
-:10C6D000400000000000000028054C00B3002CC002
-:10C6E000093482C900838020F0083082CC00B380F6
-:10C6F0002CF008B002C1208000A0320800020A001D
-:10C700005000000000000000A0011CC0B7012FC8AD
-:10C71000895002D80287C421E2487082DC00B70049
-:10C720002C40087202CE00970823C008700228002F
-:10C730004000000000000000A8081E00F7E13DE8EE
-:10C740002D6803F200C780B0E0086803DF80F68040
-:10C750003DE08C7E03DA00CC8031200CC80B2A022D
-:10C760000000000000000000081DAC08FB003CC0F9
-:10C770000E8003E008F9003E400FB002EC00FA0022
-:10C780003E402FB003E400FB003CC02FB003C206C4
-:10C7900060000000000000000005FE00FF927FEA3C
-:10C7A0000CF803FE00CCA03F200DF9033E00CF8023
-:10C7B00033600FF803F600EF8433E02CC803000069
-:10C7C0007000000000000000A8119C00B7002FC8F6
-:10C7D000085402D800D6042D010869021C00850007
-:10C7E00021430B70039AC08C00A30208F1022A04B3
-:10C7F000600000000000000000009C00B7012DCC8C
-:10C80000087002D40094282DC208C2025C00860081
-:10C8100021800B7102DC00A71021C00848024000F3
-:10C8200020000000000000002014CC08B3002CF011
-:10C83000080502C02090802E000800824C02800073
-:10C84000A0610B3002A0008000A03088B10A48042B
-:10C850003000000000000000A815BC00FF002DC83B
-:10C860000C3D03E400DB023EF02C904B7C00C10049
-:10C8700032204FF013E000E80132008CAC036A0470
-:10C8800060000000000000008000EC00FB043EC2DD
-:10C890004FB003E004FA403EC24E9823AC10F800BB
-:10C8A0003E5007B013AC00FB003EC20F9203A00045
-:10C8B00030000000000000000110DC00CF003FC08D
-:10C8C0000CC8233682CF803F800CE003EC00F920B7
-:10C8D00033C00EF003F810DC0033004CE8210044B4
-:10C8E000300000000000000081046C00AB002EC08E
-:10C8F0004A8D4221008B422ED208B003EC00B8884A
-:10C9000034620DB002E4008B0022C008900A20407F
-:10C91000100000000000000080052C008B002EC0DD
-:10C9200008A0020D0089102E08289202EC04BB001A
-:10C9300022A008B0026402B30220C008A202A00034
-:10C94000400000000000000008040C00A3002EC0FE
-:10C950000A90220C1080002C00180282CC00B0003B
-:10C960002640093002C820800020000810068201FD
-:10C970000000000000000000000D6C00CB002EC085
-:10C980000CA102240088003C000C8003EC00FB009A
-:10C9900032800EB003CC80DB0032C00CA0038003D9
-:10C9A0005000000000000000A01DFC00FF003FC080
-:10C9B0004FC213D410FC003F000F0003BC00FC006A
-:10C9C0003F400FF023E012FC01BF000FD0036802CC
-:10C9D0007000000000000000C005FC00C78033C0EC
-:10C9E0008BB403B0C0CF2E1F0C4FC3033080FF01A8
-:10C9F0003F080FF0007C00FF2133E40CE00330001F
-:10CA000070000000000000008010EE008B8223F018
-:10CA10000BB5120D8888C00E980B86022100BBC092
-:10CA20002EE44BF7832F44BF9022C848A6822004EF
-:10CA300030000000000000008805CC098A0020506A
-:10CA40004BB20A80CC83010C8C0B230A0460B31414
-:10CA500024404B3002CC10B30020C8E9110662011B
-:10CA60007000000000000000C015AC018A80A244E4
-:10CA70000BB002A10488402EA00B20022820BB404E
-:10CA80002E400BB0022C08BB0022C009B00270047B
-:10CA900060000000000000004015EC00C38332E09D
-:10CAA0008F0003A002CBC43E28078B032100F9C0EE
-:10CAB0003E100FB003EC007B0032C00DA003500409
-:10CAC0007000000000000000E0019C02FF003FE059
-:10CAD0000FF4435E80FC943F000FC02BF250FD2109
-:10CAE0007E848FF0036C0CFF003FC00E6203B80021
-:10CAF00060000000000000004010AC00EB0032407D
-:10CB00002C80036900CB30B2004FB343E500CB402B
-:10CB100072182CB003EC28C3213AC10F94031004FF
-:10CB20002000000000000000C8053C008B202250BF
-:10CB300008B002280088C02A008BB402E800DB009D
-:10CB4000623008F002FC008F8022C00B9547320053
-:10CB50004000000000000000E0054C00B10020C2D1
-:10CB60004830024980834260120B3002C8008202C2
-:10CB70002C3009B002CF0183502AC00B2002B8002C
-:10CB8000500000000000000020011E009D80A0E079
-:10CB90000879225E60879029A00B7802C6009281F6
-:10CBA00005E0097802DE40878021E00B29020800B9
-:10CBB000400000000000000048080C40F20030C0B7
-:10CBC000083A034404C31430C00F2203CC80C200CF
-:10CBD000A4D20D3013CC20C30038C44F044312023A
-:10CBE0000000000000000000401D9C00EE003FE03F
-:10CBF0000F7003B402F4103FC08FA003FC007E004E
-:10CC00003BC00EF083EC00F7003FC00FC003D0061E
-:10CC10006000000000000000A805FC00F9003EC014
-:10CC20000FA003AA12CB0132800FB0132814F98091
-:10CC30003A4003B403EC42CB183EC00FB0032A00C5
-:10CC4000700000000000000048119D00B5002DC4D8
-:10CC50000B704B7C00840021800B70029410B2009A
-:10CC600029C00B7282DC0087202DC10E70021204D5
-:10CC70006000000000000000C0009E00B7802DE0B2
-:10CC80000B68029E00838021E05B38021E00B4C066
-:10CC900025E0097832CE0097802DE00B5C4E300005
-:10CCA00020000000000000004814CC00B3442CC059
-:10CCB0000B3C02CC40930820E00B30028C10B3C038
-:10CCC00028D81B3002CC0893016CC00AB882120429
-:10CCD0003000000000000000E815A800F6103E80BB
-:10CCE0004BED83B800CEE4B3A30FE0033800FE00A1
-:10CCF0003B800DA002E800DA003E800FE8023A0413
-:10CD000060000000000000004800E010F8403E0015
-:10CD10000F80136000E0003E00430803E000F808C5
-:10CD20003A000F8003E000E8403E000E8023D2006E
-:10CD300030000000000000000810C400D9C0BE4050
-:10CD40000F9003E600F9003240019A032400F90035
-:10CD50003E400F9003C44009100E400F9A03020496
-:10CD60003000000000000000800464048904A26018
-:10CD70008B9D80A600B98022404898022400B9000B
-:10CD80002E408B9002E49489602E400B940B20007F
-:10CD90001000000000000000180524009908AE48AB
-:10CDA0004B1002E581B91020441B94022410B900F5
-:10CDB0006E600B9002E40089002E400B9402060086
-:10CDC0004000000000000000080404808900A06802
-:10CDD0000B12028489B12020481A12120480B12259
-:10CDE0000C480B1202C481A1202C400B120202013C
-:10CDF0000000000000000000B80D6000D800BE0078
-:10CE00000F050BE140F80032140F85032140F800B4
-:10CE10002E800F8513E002C8003E140F05012E037B
-:10CE20005000000000000000981DE440FD00BF44D9
-:10CE30000FD103F4407D10BF4445F12BF440FD10A9
-:10CE40003F440F9103E440D9103E400FD103A606A2
-:10CE500070000000000000001805F600FD001F62D1
-:10CE60000FD8823600BDA03B680CDC8326C8D9A051
-:10CE700033600D99835620D5A82E440CD8838604A0
-:10CE800070000000000000003810E148B8002E00DB
-:10CE90000B0A822220B85022BA088A2222808800F7
-:10CEA0002201080C02200088002E28888802CE0467
-:10CEB00030000000000000000805C400B1002C4054
-:10CEC0001B100A8440B10028580A3202050099401C
-:10CED0002065091042C40091002C400A3082C20132
-:10CEE00070000000000000001811A400B9002E40DE
-:10CEF0001B9002A580B910224808104204100900B6
-:10CF00002240089002E4009B002C400A9422C604B0
-:10CF10006000000000000000A015E400F9203E4081
-:10CF20000F9013A710F960BA502E9C0A2584D1F0F7
-:10CF3000B2600D9003E400D9003E400E9003A800BB
-:10CF400070000000000000002801A40CF9903E6A67
-:10CF50008F90236600F1083C400F9C43E440F98029
-:10CF60003A440F90032404E9023E402D9113CA0075
-:10CF700060000000000000002810A000E8203E0132
-:10CF80000C0003A120E85032102C8C032100E80093
-:10CF900032020F00132088C80832000F8C03CA0029
-:10CFA0002000000000000000280528208EE32F90BC
-:10CFB0000AE0063B00EE04239008E00228088A02FB
-:10CFC00075908BA04158908E802A810BE0038A10C7
-:10CFD000400000000000000028054E00A3006C6027
-:10CFE00008381A8E40A08020CC0930020C05A3041A
-:10CFF00028C40B30020D0183C020C00B3002CA00D0
-:10D000005000000000000000A0011E0887002D62F3
-:10D010000B70921C08A00061C00960061C80A7006C
-:10D0200021C00B72025801878829C00B6012A8002A
-:10D030004000000000000000A8081E00E6803D60DF
-:10D040000C78429600E480A3600D78033F00E380F3
-:10D0500021E00F7B031608C78031E24F7843EA02D4
-:10D060000000000000000000081D8C01F8003C409A
-:10D070000EB002EC00F8013E404E3033ED20DB01F3
-:10D08000BEC00FB403EC00FB003ED80FA003C206E5
-:10D0900060000000000000000005FE00C78423605F
-:10D0A0000C780BBE00FD803FE00FEB033E00CF800D
-:10D0B0003B250CF8837E40CD8033E20BF903000062
-:10D0C0007000000000000000A8119C0287001548B5
-:10D0D0000870021420B600359A49C8039C84A70042
-:10D0E00039D00A70021A08A40021C00961422A043A
-:10D0F000600000000000000000009C00870021404C
-:10D100000871029400B5002D400BF1225C02070863
-:10D110002C50087002500087002DC40B50420000B4
-:10D1200020000000000000002014CC0083022440F6
-:10D13000183D0A0100B05824200930028F4083E0D6
-:10D140002CC10A30420800B3016CC009081608045B
-:10D150003000000000000000A8158C008B00324059
-:10D160000C2503A848F8813E800F80637C00CB80AB
-:10D170003AC00CF0036C00CA02BFC00F988B2A049F
-:10D1800060000000000000008000EC00F9003E504C
-:10D190002FA40BC800F0403ED00FA033EC20FB04BE
-:10D1A0007AE00FB003ED08E90332C00D9003E00010
-:10D1B00030000000000000000110EC40EE003EC016
-:10D1C0000CDA037004CC02B1A00EF023EC00FF00D7
-:10D1D0003720CDB073EC88FB803FC00F3003004494
-:10D1E000300000000000000081046E0088802CE107
-:10D1F00008940AA902884022D008B942EC04BB0076
-:10D200002CD40DB002ED20BBD02EC00BB002A0403C
-:10D21000100000000000000080052400AB802EF00C
-:10D2200029A0826D0088082204089042EC00BB000F
-:10D230002A8108B002E409BA042EC14B988220006A
-:10D2400040000000000000000804040083002CC01F
-:10D250000A210284108200E000180A12CC00B300F8
-:10D260000CC0093002CC90B0002CC00B100282011F
-:10D270000000000000000000000D6400EB003E0014
-:10D280002CB40364088800B2000CB243FC00FB001D
-:10D2900056000CF001E400FB003FC00F800B0003C0
-:10D2A0005000000000000000A01DF400FF003F40FF
-:10D2B0002DF061F000F40027010DB111FC00FF0218
-:10D2C00007C00FF003EC40FF003FC00FC00368062B
-:10D2D0007000000000000000C005F600EF903D4C1B
-:10D2E0002CC013F408FD20374C8E82837484DCC27A
-:10D2F0003FD80DF203ECC0FF813F000CF803F000B3
-:10D3000070000000000000008010E6008B242E5CFE
-:10D31000088D02FF48B9902F540B84823E40A080B4
-:10D320002EC40AFC42ED80B9802E600A9812E004F7
-:10D3300030000000000000008805E401A300284838
-:10D340000A0042C400B1002C490B0A4204A29121F8
-:10D350002CC90831028CC1A3002C40081802A2017C
-:10D360007000000000000000C015A0208B822E4439
-:10D37000588002E400BB102E400BA1120C01891052
-:10D380002EC00AB002EC01B8802EE20AA102F0041D
-:10D3900060000000000000004015EB40EB403E60E4
-:10D3A0000E8733E400B9A136C00EA80B2600DAC000
-:10D3B0003EC08DB003EC00FB853EE108B80390054C
-:10D3C0002000000000000000E001B800FF022F6014
-:10D3D00003E883FC10FD801F401FD013BE40EE0405
-:10D3E0003FC00FF043FC08FD003CC00FD011F80017
-:10D3F00060000000000000004010A400DB00B2400C
-:10D400000E94032400D900BAC00C2003E490FB0062
-:10D410003AC00CB003EC01FA003ED02C9803900403
-:10D420002000000000000000C80503008B00224817
-:10D430000884222C00B90022C008A002ED008BA0B5
-:10D4400021C008F002FC00B9802EC008A002320002
-:10D450004000000000000000E0054520930022F895
-:10D460000B300A8440B2002040081002C4008080C3
-:10D4700028C02839024C00B1002CC0083002B80086
-:10D480005000000000000000200136009F80216055
-:10D490000938029E00B2C02060484812D6C686D025
-:10D4A00021E0087800DE80B7822DE008F80208004D
-:10D4B000400000000000000048080C20D31030C8D5
-:10D4C0000F30038400F1003040241903E4C0E04031
-:10D4D0003AC00C3203CE80B1283CC00C301392020B
-:10D4E0000000000000000000401D9C00E6007FC01E
-:10D4F0000EF0237440FF103F404FD003FCD2CE0407
-:10D500003FC00FF403FC00FE003FC00F7103D012B8
-:10D510006000000000000000A805EE00CB0016C06F
-:10D520000D80032720CB003EC20AB053E428C181FE
-:10D5300032C10EB9032C00F18035E00CB8032A0487
-:10D54000700000000000000048119C0287102D4070
-:10D550000870035C00A7002D40287002D4048704E3
-:10D56000A1D00B72021D00F70021C00D5002120461
-:10D570006000000000000000C0009E00858025E0E3
-:10D58000097802370387802FE0087812C6108D8053
-:10D5900025E80B38021E80BC8425E0085802700084
-:10D5A00020000000000000004814CD8083882CC0BB
-:10D5B000083C024E01A3D22EC408B102CC008380E5
-:10D5C00024C10B30020C00B340A0D209301252002B
-:10D5D0003000000000000000E815BA00CAC0368024
-:10D5E0000D67132800CE003EA00CED03E800CEE04E
-:10D5F00036801EA00B2804FE00B7B20CE00B7A00A8
-:10D6000060000000000000004800E040F8102E100C
-:10D610000F8003E001D80A3E000F8003C002F80823
-:10D620003A000F8003E010E820BE000F8013920044
-:10D6300020000000000000000810E500FB003E4054
-:10D640000C91032600618032400C90032400C90035
-:10D650001E400C9C03E401F9003E400F9003C20001
-:10D66000300000000000000080046700B9002C407A
-:10D67000009C02A600790022402890022400890024
-:10D680002C44089802E400B9802E400B9002E0017F
-:10D69000000000000000000018012400BB0026501C
-:10D6A00028908224849920224049900224008900F5
-:10D6B0002E40089002E400B9602E400B9002C60490
-:10D6C000400000000000000008040600B1002E48E1
-:10D6D0000812028480B120A04809120A0480810047
-:10D6E0002C48281242C48831002C400B1802C20179
-:10D6F0000000000000000000B80D6000F850361473
-:10D700000C80032000E80032140C85032140C8502F
-:10D710003E140C8003E14038003E008F8003EE038E
-:10D720005000000000000000981DD400FB043D44A0
-:10D730000F5123D448ED103D444ED123F442FD0057
-:10D740003E448F9103E458FD003F500F5003E6061E
-:10D7500070000000000000001805F400F9003D40D2
-:10D760000CD003F400DD023E400C9003E440C910ED
-:10D77000374007D0072400E5002F6A0F700306002A
-:10D7800070000000000000003810E000B8003A000F
-:10D79000808002E00088002E000A8053A2802CA026
-:10D7A00022000B800A2000B8002E100980030E040E
-:10D7B00030000000000000000805C400B1006C400B
-:10D7C0002A1002840181802E40091002F4008D0489
-:10D7D00020400B10028400B1002C400B9802420143
-:10D7E00070000000000000001811A420B9002A40B9
-:10D7F00088B402E601A9202E480A9000A440AD405A
-:10D8000022400B9012A404B9012E410B9002060491
-:10D810006000000000000000A015E400F9C03E60B8
-:10D820000C9413A602D9421C600C9E01C604C100D0
-:10D83000B2401F9002A400E9083E684F980B6804AC
-:10D8400070000000000000002801A640F920387098
-:10D850000F9103E400D9803E400F9C13A400F9000F
-:10D860003E400F10036410F90A3E500D9A03CA009F
-:10D8700060000000000000002810A100D8043E0055
-:10D880000C8113C002D8203E002D8403E000CC0898
-:10D890003A000F8043E000F841320007818B0A0410
-:10D8A000200000000000000028053A608A002FA830
-:10D8B0000AE022E8027E482E8008A042E8048E009A
-:10D8C00023A80BA882E800EE00A2804B60020A00A9
-:10D8D000400000000000000028054C0093006CC0D0
-:10D8E000083002CC0013812CC0083002CE408240A8
-:10D8F00028E00B3802CC00B31024C08B38020A0099
-:10D900005000000000000000A0011E0087202FC072
-:10D910000A7002DC0AB6002CC8887206D80086009D
-:10D9200021C00B7002DC84AF80A5C00BD0022800A0
-:10D930004000000000000000A8081E00D7803DA0A5
-:10D940001C7813D602D7803DEC087E23FE00CE80E3
-:10D9500039600F7803DF00F68075E00F78032A0244
-:10D960000000000000000000081D8C00FB103E803D
-:10D970001FA021CC00FA003EC00EB003E802FA005E
-:10D980003E400FB013EC00EA013AC00F9003C2060C
-:10D9900060000000000000000005FC00FF803F6008
-:10D9A0000899077E00DD803FE20CF803F602DF8075
-:10D9B000B3E00CF8033E41CC8033E40FF803C00021
-:10D9C0007000000000000000A8119C40B7002DC0AE
-:10D9D0000D5A22DC8075002DC0087102F0208700EE
-:10D9E00021C00A70021C00D42821C00B7202EA0474
-:10D9F000600000000000000000009C40B7002D0007
-:10DA0000087222F40087002DC2087002D4008780BB
-:10DA100025400930025C01AD0029D04B7002C000E6
-:10DA200020000000000000002014CC00BBC82CA087
-:10DA3000092002CE00A3002CE0A83D42C2008B804A
-:10DA400024400B300A6C08A340A8E00B3402C80441
-:10DA50003000000000000000A815AD00FF483C2881
-:10DA60000CA9236C808B003FC00CFC03EC00D88019
-:10DA700034400D30037C02A34038680F2403EA04CD
-:10DA800060000000000000008000ED88FB003E50B8
-:10DA90000FA103EC043AC03EC00FB083E802F810B7
-:10DAA0003A410E9003AC009B08B6400F8103E000A2
-:10DAB00030000000000000000110FC00FF00B32057
-:10DAC0000C50131C09CD8333C08370003C00DC1064
-:10DAD00032600EF1432C00CE043B700CF083004406
-:10DAE000300000000000000081046780BB0162215B
-:10DAF0008A89202C0080E022C00BB003D8108C044F
-:10DB00002240059002AC00D88036400A90022040A6
-:10DB1000100000000000000080052600BB00220667
-:10DB20000880022E00882022C009B002A4009900BB
-:10DB300062C408B0062C008880224108A0022000A0
-:10DB4000400000000000000008040C00B30020406A
-:10DB50000A00820C00800020C00B3022A00081004F
-:10DB6000A0C00930028C00900024400A2802020163
-:10DB70000000000000000000000D6000FB0220001B
-:10DB80002C92032C02880031C00BB502A400D104F2
-:10DB900032400E90032C40C9003A408CA003000391
-:10DBA0005000000000000000A01DF400FF002F0046
-:10DBB0000FC003DC00FC003FC10FF043F000FD008C
-:10DBC0003F404FD003FC00F5003F400FE003E80664
-:10DBD0007000000000000000C005D880CC00B70431
-:10DBE0004EE1033C20DF10318006F0037F00FFC0D0
-:10DBF0003BC00EF2035E00EF1033D02CF203300076
-:10DC00007000000000000000C010E90088C6205C21
-:10DC100008A45765008F522AF009FC020400BB00DB
-:10DC20002DD90974836428834422848806823004B1
-:10DC30003000000000000000C805C9008010200866
-:10DC400008311204B2A30020841B34020C80B320DC
-:10DC50002CC70936028C809340ACC80831283201A9
-:10DC60007000000000000000C015A9008800A2504C
-:10DC700008350224008B042EC109B0022494BB0095
-:10DC80002EC00BB002CC608B002E800880003004C8
-:10DC900060000000000000000015E702CB18B28011
-:10DCA0002CAC0A2E08EB0032124EB0032B80FB0086
-:10DCB0003AC00AB003AB08EB042E480CB88300044A
-:10DCC0007000000000000000E001B680FF8039CA4B
-:10DCD0000DE803D640E7043B664E7003B800FF0131
-:10DCE0003FC06CF0037006E70031040FC143F80039
-:10DCF000600000000000000040108500CB40329022
-:10DD00002FB00B6480FB08BA100DB0A72D00FB04E8
-:10DD10003EC08EB0036D00DB0132408C33039004B3
-:10DD20002000000000000000C005240083E0A2D015
-:10DD300040B0022504BF80A05008F80220008B02EA
-:10DD40002FD008F00224008F80360108844236006C
-:10DD50004000000000000000E8054400834820C4A3
-:10DD60000900024600B301A8901930128C00A304E8
-:10DD70002EE20AB0020C00834928C0093C02380098
-:10DD80005000000000000000F0013604838021E113
-:10DD90000838121E28B39821A0193882960087836C
-:10DDA0002DE2087822368C87802DE00979023E002A
-:10DDB000400000000000000048080400C33030C8E4
-:10DDC0004D000B4C80F31238C00D3A028C80F300EA
-:10DDD0003CC00E300B0E00C30C3AC00D30031202D3
-:10DDE0000000000000000000401DB406FF103FC00E
-:10DDF0000FB013BC00FF107FC00EF1A37C00FF1218
-:10DE00003FC20FF523BC41EF183780AEC003500668
-:10DE10006000000000000000A805E400DB003EDA1E
-:10DE20000C800366108B0032808CB6034A004B8056
-:10DE300032C80CB4030A10DB003EC10CB0432A0008
-:10DE40007000000000000000C811B40087042CC05E
-:10DE50000D70031C08874820810D72825C00D7007A
-:10DE600021CC28F0021C1087202C0008400A320424
-:10DE7000600000000000000080009600B7812DE0E7
-:10DE80000848020E04878021E00878023E0187805E
-:10DE900021E01879023A0197A02D6008380220008D
-:10DEA00020000000000000004814C600A3C62CC0DB
-:10DEB0000930020C01830020E00930024E0093007B
-:10DEC00020C04930220F6483026CD428300212042F
-:10DED0003000000000000000E811AB80FAE03C8850
-:10DEE0000CE0022802CA00B3A90CA0033B10CA0030
-:10DEF000A2800CA00B3800DA003FB00CE6033A0415
-:10DF000060000000000000004800C02098083E00AB
-:10DF10000F800BE100F8013C104F0003A040F80017
-:10DF20003E100E8003E000F8003C022F0493D20064
-:10DF300030000000000000000810E400C1C13240C1
-:10DF40000C98032640F90032400C98032424F90071
-:10DF50003C600C1003A400F98232400C90030204D0
-:10DF6000300000000000000080046400890022509E
-:10DF70000D98022580B90022520D9C022400B900A0
-:10DF80002E600890422400B940364008900A2000D4
-:10DF90001000000000000000180524008D00234040
-:10DFA0000812022400A110A26008928A2400B9017C
-:10DFB0002E46089002A400B150224028908206000C
-:10DFC0004000000000000000080404848520A1D85F
-:10DFD0000910020480B32020402912060400B10178
-:10DFE0002C482812020400B1202448081202020121
-:10DFF0000000000000000000B80D61428A00B3007C
-:10E000000C05032140E050B2002C80022140F0506A
-:10E010003C140C8513A150F85032140C85232E03A8
-:10E020005000000000000000981DF440F9103E442C
-:10E030000FD40BF444F9103F504F1103F400F900D2
-:10E040003E440F9153F414F9103F440FD103E602FC
-:10E0500070000000000000009805E6A0DD88B366AF
-:10E060000CDC833688BDA0376A0CDA0B2502C94068
-:10E070003F784F98B3E504CDA072780CD88B261466
-:10E0800070000000000000003810E30088422231D8
-:10E09000080A0222A0B8F922100D84126A80888032
-:10E0A0002E200B0802E280A8A8A23848A8020E0081
-:10E0B00030000000000000004805C4A28100204894
-:10E0C0000812424500B100244009140224008120B6
-:10E0D0002C580B1082C4049140646C0830821205E5
-:10E0E00070000000000000001815A4008900224103
-:10E0F00008908A6480B9002250099006640899004B
-:10E100002E400B9006C401B90226618890020604D5
-:10E110006000000000000000A015E400C9002240DB
-:10E120002C94236400B90036400990130500C900FF
-:10E130003E404F9013E5C0D90026402C94032800A0
-:10E1400070000000000000006801A402E9083C40E3
-:10E150000F900BA400F1003E410F9043A488E90406
-:10E160003E400F9003E600E1003A409F9263DA00E0
-:10E17000600000000000000028108010E001320064
-:10E180008F80032000D80830018C0003E102C8040E
-:10E190003E000C800B2100C80078000F86030A00A7
-:10E1A0002000000000000000280528008E402B827F
-:10E1B0000BA0023A008E80238208E20228108A0017
-:10E1C0002F9828A01228008E202E804BE4020A00EF
-:10E1D000400000000000000028054C02A240208002
-:10E1E0000BB0024E4093C0A0200836028C00930072
-:10E1F0002CE20830064C12930828C00BB0020A002B
-:10E200005000000000000000A0011C0882402940CE
-:10E210000B70025E08840823400870061C8087008B
-:10E220002D200879125C0094002DC00B304228008C
-:10E230004000000000000000A8083E00E48031A17A
-:10E240000F58137600D08031C00C3803BE80D781C0
-:10E250003F208C79037F01D68039E84F68032A007C
-:10E260000000000000000000081DBE00FA003E0093
-:10E270008F960BA400EA003CC00F9003AC20FB403B
-:10E280002E000FB203ADA0EA003EC00FA01BC204D7
-:10E2900060000000000000004005FE08DE8133A49D
-:10E2A0000EFC133E00FC8013200C68033E20FFC8C8
-:10E2B0003F601DF8037E00C78033E20CD8031000D6
-:10E2C0007000000000000000A8119C00864131C4CD
-:10E2D0000879429C00BC1021408535035C00B700E2
-:10E2E0002DC00872022C00A70137C00851422A0035
-:10E2F000600000000000000010008C4082002481BB
-:10E3000008D8021420B50020400960021C40B70064
-:10E310002C400B3022DC00970021C408400244004E
-:10E3200020000000000000006014EC009206209025
-:10E330003815028600B80060500930024E01BB005B
-:10E340002E400B3002CE20B30024F048020A5804BD
-:10E350003000000000000000A815BC00CA00A69410
-:10E360002C90032E00FB05B2850D90033F90FF001B
-:10E370007E801FF043FC219A0033C83CB2036A043C
-:10E3800060000000000000009000EC02EA403D80C8
-:10E390000F1093ED00FB403E908F3003EC80FB00AC
-:10E3A0003E911CB0032C10E8003EC81F9003A5103E
-:10E3B00030000000000000008010FC02E40073A0A8
-:10E3C0000CFC037C02FF1013C41CC0033C00FF00C4
-:10E3D00037E00DF003FC00ED8031C00C3263200407
-:10E3E000300000000000000084006C008AC022B1F0
-:10E3F0008AB8434A10DB2020F00A94036C00BB0764
-:10E4000022B808B002EC11E8C0B2C02A921A20006B
-:10E41000100000000000000080012C00AA8022985B
-:10E420000890022F03BB012A8308B24E2C04AB02D2
-:10E4300022C428B022EC09B35062C008B002200008
-:10E44000400000000000000008040C018300608010
-:10E4500008120A440093002A804A30020C00B300DC
-:10E4600060C0083002CC00B30260C0080046020160
-:10E470000000000000000000800D6C00E802228017
-:10E480002CF2432C00FB00BAC008A5023C00EF00B0
-:10E4900036C04DF013FD51FB0032C00CB00320011B
-:10E4A0005000000000000000A01DFC007E043F8022
-:10E4B0000F3143F002FF0037C00FF003FC08FF00EC
-:10E4C0003FC00FF003FC00EF003BC00FC003E81695
-:10E4D0007000000000000000C005F240FC803F24F6
-:10E4E0000DD853D604DF323FCC4CC043FC00DF6074
-:10E4F00037C00FC4037CD0DF2033D80DF843F000C1
-:10E5000070000000000000008018E880B0012E08B4
-:10E51000889002EC208B702FCC08B382FDE0BF40C6
-:10E5200022D80B9302FDC0AF1028F008BC12F004F3
-:10E5300030000000000000008805C400B0002E017B
-:10E540000A1282EC80B3002CC80A00328C00A3307F
-:10E5500020D20900028C80830028D80B3412F201EB
-:10E560007000000000000000C005AC01B8022E00E1
-:10E570000A9012EC108B002EC00AB000EC00B30021
-:10E5800022C10B9202CC01AB002AC002B002F004FF
-:10E5900060000000000000004015E000FA0C3EC0E2
-:10E5A0000FA013EE20DB003EC02E8853EC00FB00D2
-:10E5B000B2C08FAC83AC08DB001AC04FB003C004FC
-:10E5C0007000000000000000E001B800FE003FC045
-:10E5D0002DE003FE807F003FC00DD203FC00BF0191
-:10E5E0003EC00DC803FC0CFF003FC009F023F8003B
-:10E5F00060000000000000004010A400FA4032C19A
-:10E600000FA0032908DB003EC00E8503EC20CB00E1
-:10E610003AC00EA403EC00FB003AC20EB003100493
-:10E620002000000000000000C8052C00BA6020C0D7
-:10E630000BA0020800AF002FD00BB502FE028F0026
-:10E640002FC00D800A3C00B70023C205F02236001F
-:10E650004000000000000000C0044000B18820001D
-:10E660000B10020C0083002EC80B08064D408300DF
-:10E6700020C00830060C0893200AE04A3002380017
-:10E68000500000000000000020105A00B59021202A
-:10E690000B58423E00A7802DE00B6902DE408792B6
-:10E6A0002DE00918029E01B78029E00370023E00A8
-:10E6B000400000000000000048084400F101300064
-:10E6C0005F18030C1083003CC40E0403EC008300AD
-:10E6D00030C40C31038C00F30038C80E3103120231
-:10E6E00000000000000000004015BC00FD04BF0455
-:10E6F0004F5803F808EF083FC00FF001FC00FF4C33
-:10E700003FC10FD0033C00F70037C20D7203D006A3
-:10E7100060000000000000000805E200DB0032C0DD
-:10E720004DA8032C08FB007EC88FB00B6F45EBC2D1
-:10E7300036C007A003EF20CB50B2C00C79032A00EB
-:10E740007000000000000000481998008F0021C0F0
-:10E750000B60035C0037002DD20B30020CA887241D
-:10E7600021D0097002DD88872A23E808700232046C
-:10E7700060000000000000002000B600978021E04B
-:10E780000B68021E00B7802DE88B48821E80A38490
-:10E7900025E80B6802CE02878021E0087A0220007B
-:10E7A00020000000000000006804CC08838220E004
-:10E7B0008B2A024840B3002CC00B30820C0083002F
-:10E7C00000C1093102CC00830020C008300A1204C5
-:10E7D0003000000000000000E815E800DAA032A8D0
-:10E7E0008DA8033B00FA003E800FE4036800EA02B4
-:10E7F00036800FE403E800CA0032802CA0033A04FC
-:10E8000060000000000000004801A010F800BE20D9
-:10E810008FC103E024F8003E100F8403E000F801EC
-:10E820003E000F8003E000F801BE100F8003D2000D
-:10E8300030000000000000000810A400F940324041
-:10E84000CF9003E400C9000E500F1A032600F90010
-:10E850003E400F9081E400F98032400C9003C204E6
-:10E86000300000000000000080046404B104224075
-:10E870000B9002E400A9002E530B920A2648B9041B
-:10E880002E400B9002E400B9800250089002E00094
-:10E89000100000000000000038052400BD002340E7
-:10E8A0000BD012C40089022E400B90222400B90024
-:10E8B0002E400B9002E400B1202040689022C60058
-:10E8C000400000000000000028141400BF12A14006
-:10E8D0000B5002C400A1202C480B12020410B111ED
-:10E8E0002C480B1322C400B140205A081002C20168
-:10E8F0000000000000000000B80D6140F840321434
-:10E900000F4503E140C8503E158F850321E8F868A4
-:10E910003E140F8403E1E0F02832A8CC8023EE03FC
-:10E9200050000000000000009815C410F9203E407F
-:10E930000F9003F400F9103E440FD103E400F920D6
-:10E940003E440FD303E400F900BE400F9403E606F3
-:10E9500070000000000000001815E400FD103340B6
-:10E960000CD0032400D9003F404CD003F600FD90AA
-:10E970003A400C9003E6A0FDA837680CD883260027
-:10E9800070000000000000003810E008C8A022005D
-:10E99000088002200088002E000C8012E000B88061
-:10E9A00022000D0A02E380B0C020340884034E0424
-:10E9B000300000000000000048008409A100204150
-:10E9C000089002240091002C40081002C500B1609C
-:10E9D00020400810A2C420B128244A081002520185
-:10E9E00070000000000000001814A4018100A24083
-:10E9F000A89000254089012C40089402E400B90049
-:10EA00002A40099002E401B90422414890024604D8
-:10EA10006000000000000000A014A520E9003240C2
-:10EA20004C100B2600D9003E402C9803E400F9005E
-:10EA3000B2400C9003E400F90036402C90036804C7
-:10EA400070000000000000004801A400E9003E4002
-:10EA50000F9003E600F9003E400E9A03E400F9002F
-:10EA600036400F9003E400F9003C400F9003DA00B9
-:10EA700060000000000000000810A100F800320053
-:10EA80000F8013A000C80032048C8003A0C0F800DF
-:10EA90003A000F80032000C00932004C80010A04B4
-:10EAA000200000000000000028052800BE00208093
-:10EAB0000BE0028800AA0003A00AE602FA008A001E
-:10EAC00032800BA00228008E80A3802820028A00BA
-:10EAD000400000000000000028056C00B348204002
-:10EAE0000B10020C00830020C00834828E049900B1
-:10EAF0000AC01B30020C02905020600830020A004D
-:10EB0000500000000000000080111C80BD0A214858
-:10EB10000B52029C40A3A020800A6002CE008520F8
-:10EB200021C40B7A061E80952021900870022800CF
-:10EB3000400000000000000088081E80F780B179C6
-:10EB40000FDB023E20C7A0B160CC78139600F1F035
-:10EB500039E20F7B130F00D4A031602C70032A021E
-:10EB600000000000000000000815AC00F7003E4067
-:10EB70000F9003ED80FB103E400BB023EC00F9201A
-:10EB80003AD80FB00BED81ED103E800F3003C20676
-:10EB900060000000000000000004BE20EE80336032
-:10EBA0000CD8831E006F8033E00FB8113204F5805B
-:10EBB00033E00FF8832F40FE80B3E00CF803100021
-:10EBC0007000000000000000A8189C00BC00A144D8
-:10EBD0000810035C008F0021800BEA221C80B50125
-:10EBE00021C00BF0021E80BE0023802A70022A047E
-:10EBF000600000000000000000009C20A7002340EF
-:10EC00000B500A3C00A70025C00A43021000B500C3
-:10EC100021C00B70821C80B40021C0087002040067
-:10EC2000200000000000000020048E04B3002240F9
-:10EC30000914024C00830020C00B24820400B100A0
-:10EC400020C08B3A022C01B00020800A30021A0446
-:10EC50003000000000000000A8159E00EB043340C7
-:10EC60002DDC031D60EF003200CF9A032800FD0069
-:10EC700033C18BFC0B3C00FC0032800C90032A0457
-:10EC800060000000000000008000AC10F8003E4072
-:10EC90000E9823AC04FB003C000F8420ED00F9002B
-:10ECA0003EC04FB003EC00FD003E800F9003E40037
-:10ECB00030000000000000002110FC00CF80334035
-:10ECC0000CD083FC00EF003F400CF1413010CD0030
-:10ECD0003FC00070133C00E400B1D00C10032004CE
-:10ECE0003000000000000000A1042C008AE42A404B
-:10ECF000289002EC008B003E020A80022C828904DC
-:10ED00002EC10AB00A2C00890222F22A98022000A1
-:10ED1000100000000000000080052C0280142A4032
-:10ED2000089002EC08AB042E84081082801089033E
-:10ED30002CC04AB0222C00AA002280089102200098
-:10ED4000400000000000000008142C008000284053
-:10ED5000081102EC0083002C810A005A880001008F
-:10ED60002CC00A30020C00820020800A100202012E
-:10ED70000000000000000000000D6C00C9003A40D7
-:10ED80000CD403FC00EB003E400C9203A0004D00AD
-:10ED90003FC00EF0333C80E80032C00C90032003EB
-:10EDA0005000000000000000A011FC00FC003D40ED
-:10EDB0000F5003FC023F043B014FC4137000FD00E1
-:10EDC0003FC01FF001FC40FC003FC00FD013E8061D
-:10EDD0007000000000000000C005F8E0FF803DC0AA
-:10EDE0000DF382F080FF4031CB0CF303FD04EFC143
-:10EDF00033E00F7903FE00CF4233F04CF8033000CC
-:10EE00007000000000000000E010E908B9812FF058
-:10EE100008F452E920BF4023F00AF302FD088B00FA
-:10EE200036E00B8022E8808F4022C008B082300498
-:10EE30003000000000000000C805CC00B1802CC5E7
-:10EE4000093242C8C0B33120C1083202CCD4BB2041
-:10EE500068C00B3002CC2093602088083202320157
-:10EE60007000000000000000E015A000BB802EC074
-:10EE700008B002EA00BB0062C10AB002CC00AB00DD
-:10EE80002EC00BA000E800830022C108300230042D
-:10EE900060000000000000000015E890FB803EC00C
-:10EEA0000DB003E210FB0032C04CB013EC00E9548B
-:10EEB0003AC00FB003E600CB00B2400CB00304042C
-:10EEC0007000000000000000E001B800FF003FC03B
-:10EED0008FF003F000F702BFC10FF023FC00DF0644
-:10EEE00037C08FC907FA92FF043F502FF003F80094
-:10EEF00060000000000000005010AC00C9003EC2DD
-:10EF00000EB023E400EB003AC80EB003EC00F900A9
-:10EF10003EC00FB403A400FB003E800FB083D004BA
-:10EF20002000000000000000C80528008B742DC0E0
-:10EF300008F002E4008F0021F008F002FC10D3007A
-:10EF40002EC00B90122C00EF002EC00BB602F60064
-:10EF50004000000000000000E8054800A3002CC4A9
-:10EF60000A3002C000A30068F00A3012CC04A200EC
-:10EF70002CC00B3002EC00B3012EC00B3402F800A1
-:10EF80005000000000000000B0010C0087802DE858
-:10EF9000087842DA00878025E0087902CE00968062
-:10EFA0002DE00BD902DE00A7802DE00B7802FC00DB
-:10EFB000400000000000000048080C40E3103CC086
-:10EFC0000A3803E800EB0038C20A3003CC00E34003
-:10EFD0003CC00F3403CD00F3203C880F3003D20235
-:10EFE0000000000000000000401DB480FF043FC886
-:10EFF0000FF083F840FF183BC00FF483FC00EE02D3
-:10F000003FC00FF0033C00EF083F800FF013D00625
-:10F0100060000000000000008805E800CB003EF220
-:10F020004DB213E804CB0132F84DB2136D20F80055
-:10F030003EC00F30032400FB003E408FB8032A007F
-:10F040007000000000000000C8118C0086002CC079
-:10F05000087302D812873020CB08F2021D05B500D4
-:10F060002DC00B60035010B7092DC00BF002320405
-:10F07000600000000000000080009E0087802DE4FA
-:10F08000097A02CE01878021EC0978025E80B7C040
-:10F090002DE00BF8021E00B7A02D600B78022000B7
-:10F0A00020000000000000004814EE0082802CC008
-:10F0B000083002EC008300A0C00830020C00B380CE
-:10F0C0002CC10B30024E00B3002CF10B300A12049D
-:10F0D0003000000000000000E815BA80C6003E8045
-:10F0E0000DA003F840CA0032800DA0136800FE0294
-:10F0F0007E800FED833910FA003F8C0FA0033A0495
-:10F1000060000000000000004800E012F8903E009F
-:10F110000F8003E000F8053E000E0003E000F880D9
-:10F120003E000F8003E060F8007E000F8003D200F5
-:10F1300030000000000000000810E400C9803264C4
-:10F140000F9043E406C1043A400F9003E400E90045
-:10F1500032400F90032400C10132400C9003C204DE
-:10F1600030000000000000008004640089C02240DC
-:10F170000B90022400890022501B90222400810061
-:10F1800022400B90222408C9002040089402E0008D
-:10F190001000000000000000180524009920224003
-:10F1A0000B1002A40089002A580B90028400A900C9
-:10F1B00022400B100A0400990222C1089082C60066
-:10F1C0004000000000000000080404009102A0C8F4
-:10F1D0000B12020480812220489B120204908901B4
-:10F1E00020400B1002040281222240081002C201BA
-:10F1F0000000000000000000B80D6142DA01320199
-:10F200000F8503A140C0503A018B8523A144E850EB
-:10F21000B2000F85032148D85132142C8503EE0328
-:10F220005000000000000000981DF500ED023E4473
-:10F230000F9103F440F9103E440F9103E440FD00A8
-:10F240003E400FD003F400E910BF400F9003660664
-:10F2500070000000000000001805E621C5003368BA
-:10F260000F9A036F88C9C033680C9E032780D9406A
-:10F270003E400F9003C510D9E836500CD003E6008D
-:10F2800070000000000000003810E10888008200D3
-:10F290000B8E82EBC888E02200288842A2808A80F8
-:10F2A00022000BAA02E20088C022A9088A038E0469
-:10F2B00030000000000000004805C400810020D09C
-:10F2C0000B1132848481606050081606050091207D
-:10F2D00020400B1082E409912024400810C2D20182
-:10F2E00070000000000000001815A40489042240EA
-:10F2F0000B9002C400A9002241009002A4008100EA
-:10F3000022400B9222E58099012261089002860436
-:10F310006000000000000000A014A582819032402F
-:10F320000F90136702C90032400C90232404D9C007
-:10F33000B2400F9C03E600D90036500C9003E8045D
-:10F3400070000000000000006800A680F9003E4048
-:10F350000F9003E700D900BC420F9053E404F9106A
-:10F360003E400F9803E604E1003E402F9003DA0090
-:10F3700060000000000000002810811048103208D2
-:10F380000C800F2102C8003A040F80076000F8408B
-:10F39000B2000F840B2000D80036100C8003CA0482
-:10F3A0002000000000000000280428048E80238034
-:10F3B00008A04228008A0023A04BA002E800BA005F
-:10F3C00076800BA00208008A00328008E003CA00A1
-:10F3D000400000000000000028054C00820020D002
-:10F3E0000830020C009B0028C01AB0026C00B30267
-:10F3F00020C00B30020C00A30022C0283482CA00B7
-:10F40000500000000000000020011C00870020E0E8
-:10F410000878020C00972025C00B7102DC81B72010
-:10F4200021C00B7A423C80872021C0087002E8008E
-:10F43000400000000000000028080E82C780B1E0F4
-:10F440002CFA061E08D3B139604E78125EA0FFF088
-:10F4500021E00FF8031F08E3A033E00C6803EA0281
-:10F460000000000000000000081DAC40FB003EC092
-:10F470000FB203EDA8EB103A800FB0C3EC40FB00D5
-:10F480003EC00FB083EC80EB70BEC40FB0038206A9
-:10F4900060000000000000004005FE00CE80B36068
-:10F4A0000FFC837E20EFB03BE00FB8033E00CF811E
-:10F4B0003FE08FF883EF40FFC233E10CF803D00048
-:10F4C0007000000000000000A8119C8287182180B5
-:10F4D0000B30021C60D71021D00B7B023C00D70000
-:10F4E0002DC00B7002DE00BF00A3C4087003AA0485
-:10F4F00060000000000000000000BC11870021C077
-:10F500000B30021C00932069C00B70021C008700A6
-:10F510002DC00B7102DC20B71021C00860028400EE
-:10F5200020000000000000006014CD00834020C0D7
-:10F530004B30020C01830020C00B30020C00938082
-:10F540002CC00B3002CC01B30020C008302298043C
-:10F550003000000000000000A815BF20CAC03280A3
-:10F560000FF0033E009F003A800FF00B3C00CF9855
-:10F570003EC00FF603FF00FF0031E02CB003AE04E5
-:10F5800060000000000000008000CC80FB003E50C6
-:10F590000FB003AC02FB007E500FB003EC00FB0089
-:10F5A0003EC00FB203EC20F3003EC60F9003A00054
-:10F5B00030000000000000000110FC02CF9873C86A
-:10F5C0000F70033C00FF0033280FB0021C004F00F7
-:10F5D0003FC00FF003FC00FF0133C00CE403E40460
-:10F5E000300000000000000080046C008380A2F85E
-:10F5F0000BB0422C00BB0032100FB0036C04AB0008
-:10F600002EC00BB012EC04EB0022C04A9482E00042
-:10F61000100000000000000080056C008A0022003D
-:10F620000BB0022C00B300A2C00B3002AC00AB0444
-:10F630002EC00BB042EC00BB0022C008B022E0009C
-:10F64000400000000000000008000C008B012000BA
-:10F650000B30060C00B30020C00A320ACC00A30015
-:10F660002CC00B3002CC00A30022C04A0012C20101
-:10F67000000000000000000000086C008B0422C0A5
-:10F680000FF1031C00FF0432C00BF203BC00EF00BB
-:10F690003EC007F003FC80FF00B2C00CA003E003F3
-:10F6A0005000000000000000A019DC00F5003FC081
-:10F6B0000FF003FC01FF023BC00FF1037C00FF00D1
-:10F6C0003FC00FF013FC40EF003FC00FC003E8063F
-:10F6D0007000000000000000C015F240CC80372010
-:10F6E0000CD803B044FC083F0E0FC103FC00CC94BF
-:10F6F0003F0A2EC4037D80CF103FC00FC08330006F
-:10F7000070000000000000008008E0908802228164
-:10F71000089213A4403B6022180B8102FCD48100A4
-:10F720003AB00A94023D40AF632FDF0B98002004EB
-:10F7300030000000000000008805E0008800204044
-:10F74000883082C000B00828800A1002CC208001D6
-:10F750002C401B06028C90936068C04A0042220134
-:10F760007000000000000000C005A002880022C058
-:10F7700008B002E420BB8826980B8042CC188A008F
-:10F780002EC21B9802AC00AB002EC00B9882300436
-:10F7900060000000000000000011E3C0CB02320056
-:10F7A0002C8003AE08B9003E700FB903EC02484844
-:10F7B0003CC00F8C93EC00DB001AC00EAC031004AD
-:10F7C0007000000000000000E001B200FF00BB80FC
-:10F7D0000FC043B640BD003B600FE803FC00FF9440
-:10F7E0003BE40E600F6C08EF013FC00F6003F800B0
-:10F7F00060000000000000004010A100FB003E601F
-:10F800000FA003ED00F9403A000F9003EC02C90489
-:10F8100032D00F90032C08DB00B6C00DB403D00427
-:10F820002000000000000000C8050000B3892EE0A1
-:10F830000BA403A401B9002E010B9042FC108950C7
-:10F84000A2C08DB4023C448F0023C008B002F20075
-:10F850004000000000000000C0040C00B0802E003A
-:10F860000B1202C800BA002CC00B2002CC00A20070
-:10F8700020002B2D9A2E42830028C0082002F80079
-:10F88000500000000000000020001E04B4802DA0E5
-:10F890000B58029200B6802DE00B6802DE40A68075
-:10F8A00021242948021E80878069E0086102C8007F
-:10F8B000400000000000000048180C00F0303C4CF4
-:10F8C0000F3203C880B20038800F1B03EC00E03019
-:10F8D00030040FB1030E85CB003AC00C3103D202C5
-:10F8E0000000000000000000401CBC00FC113FC4F0
-:10F8F0000FB813B004FE023F800FC003FD00DF12FB
-:10F900001D040FD043BC01EF1033C40EF303D00627
-:10F9100060000000000000000805EE00CB003E0083
-:10F920000F80032800F8003E403DB003EF08C900F7
-:10F930003A000CA003EC98FB2032D20CA8032A0258
-:10F94000700000000000000048119C0087012D801D
-:10F950000B40421C043700A140086002CC808700A5
-:10F960002D802E7002DCA9B72821D0087002120069
-:10F9700060000000000000002000BE0287802D60B3
-:10F980004BE8025A01B48828E08878C2DE5286C06B
-:10F990002960086802DE40B392E1E828280270007E
-:10F9A00020000000000000006814CC008B802EC0F6
-:10F9B0000B20024D809B2020E0083802CC00838081
-:10F9C0002CC00AB002CC08B30020C0083102520497
-:10F9D0003000000000000000E805A800CAE03E80FA
-:10F9E0001FA40B7900FE003F821DE003E800CE401B
-:10F9F0003B882CE403E801FA0032800CE8037A0427
-:10FA000060000000000000004811A000F8093E005E
-:10FA10008FC083A018F8003C200F8803E000F8088E
-:10FA20003E200E8083E101F0003C000F800B92002D
-:10FA300030000000000000000810A400F94232402D
-:10FA40004C98030400C9003A400F90232400B98168
-:10FA50003C400C92032400F90532406C90C3C20470
-:10FA6000300000000000000080042414B900A254FB
-:10FA7000089B1A240289002240289002A400B99011
-:10FA80002E40289C822504B9002240089812E000EC
-:10FA9000100000000000000018052400AD00234005
-:10FAA000085002640089002A400810026400B9006E
-:10FAB0006E400890022500A9002240089106C60069
-:10FAC000400000000000000008041400B510A1442C
-:10FAD0002850024480813020480812028440B180BE
-:10FAE0006CC80812020480B1342048081202C20116
-:10FAF0000000000000000000B80D6140E8403290B6
-:10FB00000CC5036140C0403A140F850321B0F85082
-:10FB10003E000C85032140F840B0140C8003EE0138
-:10FB20005000000000000000B81DC404F9220E4877
-:10FB30000F1013B440FD303F444FD100E484FF0167
-:10FB40003D440FD10BE440F9303E440FD103E604AD
-:10FB500070000000000000003805E400DD403F5068
-:10FB60000CD0032C00C90036400F90132704F50178
-:10FB700037400CF003F620F9A832680CD003C60019
-:10FB800070000000000000001800E00088A02E288F
-:10FB9000288002200088A022000B800A6280B80022
-:10FBA0002200088002E100B8E0223A08A002CE0458
-:10FBB00030000000000000004800840281002E4058
-:10FBC00008100A4402810824400A10024580B90046
-:10FBD0002440291002C400B1082444081002C201C4
-:10FBE00070000000000000001814A40489012E50C9
-:10FBF00048B2026400910022460B90026400B901F1
-:10FC000026C009B012E400B1002640089002C604E4
-:10FC10006000000000000000A004E400C9003C40B7
-:10FC20000C90036400C90236500E93032400F9902F
-:10FC300036480D9483E408F900B6400C9403E804B8
-:10FC400070000000000000006810A400E9003E40C1
-:10FC50000F9013A400E9022E61059003A400F9009F
-:10FC60003A400E9043E410F90038402F9003CA0048
-:10FC700060000000000000002810A000D80132043D
-:10FC80000F8043C001C800B2010C80032000C840AF
-:10FC900030008C8483E000C80032006C8403CA0406
-:10FCA000200000000000000008042800BA002380A3
-:10FCB0000BEA02E800AA00228008A00228008620A1
-:10FCC00037A08DE402F800DA00228008A002CA0002
-:10FCD000400000000000000008056C00B30020C0D8
-:10FCE0000BB8024C04830020C008B0020C02830051
-:10FCF0002040283402CE908300A0C0083002CA0001
-:10FD0000500000000000000020011CC0B588214008
-:10FD10000B7002DC80A32021E04832420E908E015D
-:10FD20006550097002DE20932121C0087002E800AE
-:10FD3000400000000000000028181E00FF80B1A055
-:10FD40000F48027E0087A033E0287A0B1F00C48092
-:10FD500031608C5803FE00C7C833E80C5803EA0230
-:10FD60000000000000000000081DAC00FF003E0085
-:10FD70000F9023ECA0FB403EC08FB503ED80F80050
-:10FD80003C400FB003E800FB023ED00F9003C206D8
-:10FD900060000000000000006004BE00FF803FE043
-:10FDA0000FD903FE20CFC833EA8FFC033F00FD804C
-:10FDB0003F600EE803F200CF802FFE0C78030000B6
-:10FDC0007000000000000000A8009C00B5022DC0DB
-:10FDD0000B5842DC80CF0021C10B30121C40B40212
-:10FDE0002D46087112C800E7002DC40870036A048C
-:10FDF000600000000000000000009C00B7002D0221
-:10FE00000B4602DC08970021C90A30221C00B4000E
-:10FE10002D400A5082C400B7002CC8285002401060
-:10FE2000200000000000000040148C18B3002E20B9
-:10FE30000B1802CF4A83C220C10B34220C04B858DD
-:10FE40002C400B2802C800A3002CC0081402480450
-:10FE50003000000000000000A805BC00FB003E8050
-:10FE60000FA002FC00DFA0B3C00EF00B3C00FBC0F3
-:10FE70003CA00EBD03EC00FF003FC00C30036A0441
-:10FE80006000000000000000A010EC00F9003E013E
-:10FE90008FB143EC00F3003EC04FB013EC00FB0009
-:10FEA0003E800C8403E10073003EC10FB243E000CA
-:10FEB00030000000000000000150FC10FF8037C03F
-:10FEC0000CE003FC20FF0833C00FF083BC00FF00F0
-:10FED00033C02E40031C01CF0011C04CD00300449E
-:10FEE000300000000000000081046C04B3022272A4
-:10FEF00008A116EC00BB0422C00BB042EC00BA19FA
-:10FF0000B6D0089C4A2680DB0022C00890036040DF
-:10FF1000100000000000000080052C00B9106220D5
-:10FF200048A002EC00BB0022C00BB002EC10BB00EA
-:10FF300066080AA81226109B002AC028B0262000B6
-:10FF4000400000000000000008000C00B900200084
-:10FF5000083202CC04B30020C04B3002CC00B30006
-:10FF600020000800020100930028C008300642115A
-:10FF70000000000000000000001C6C00F900B2400E
-:10FF80000C8202DC01FF00B2C00BF103BC00F900DF
-:10FF900026402E80032104CF00BBC00C9003000339
-:10FFA0005000000000000000A01DFC00FD003F40CC
-:10FFB0000F8103FC00FF003FC00FF023FC00FC009A
-:10FFC0002D402FC003F088FF0037C08FD003E80218
-:10FFD0007000000000000000C005FE40FF8033C23A
-:10FFE0000CF8037CA0FF903FC42CB403BC80CF402E
-:10FFF00037E00FF1936E44BF303F202CF863F004DC
-:1080100070000000000000008010EC00EB2023F056
-:1080200008B8523D00B3002EDC08F4421C428B40DD
-:1080300022C80BF6036C88BB302E0008B202E004A5
-:1080400030000000000000008805CC00BB0820C004
-:108050000830024CA0B3202680883602CCA0936062
-:10806000A4C20A32424C90B3202C0B883082E20129
-:108070007000000000000000C015AC08BB22A2C0C8
-:1080800008B0022C00BB002E9008B002EC009B0050
-:1080900022C00BB0026C00BB022E2008B002F00020
-:1080A00060000000000000004015EC00B18332C009
-:1080B0000C1A036C10FB0034C00CB003EC08DA009F
-:1080C00036C00EB00B6C00FB003E280CB002D00096
-:1080D0007000000000000000E001BC00ED803FC027
-:1080E0000FD403EC00FF003FC80FB0033C00EE408C
-:1080F0003FC00F7003FC00FF003F800FF003F8004B
-:1081000060000000000000004010AC00FB20B0C088
-:108110000FB403AC02CB0032900EB0036C00EB0046
-:108120003AC00CB002EC00FB003E910FB00390008F
-:108130002000000000000000C8052C00BB8023D7F1
-:108140000B90023C148B006A0828F000BC008300EE
-:10815000BEC088F0132C00EF002E800BB007B200D9
-:108160004000000000000000E0054C00B34020D0BB
-:108170000B28028C00830120C01AB8006C10A100EB
-:1081800068C02A30028C00B3022E004B3002F80483
-:10819000500000000000000020011E00B7A021E0F8
-:1081A0000BECC21E04878029E40879829E40AF90C0
-:1081B00029E00A38001E00A7902D240B78028800C1
-:1081C000400000000000000048080C50FB0930C0CF
-:1081D0000F20028C40C30020C00A38034C44E10049
-:1081E000AAC00E31438E00F3003C000F3003D202D0
-:1081F0000000000000000000404DBC00FF203FD008
-:108200004F7003FC00FF003DC00FF343FC40D7005C
-:10821000BFC00DF4C3FC40FF003F400FF003D00689
-:108220006000000000000000A805EC00FB0032D058
-:108230000D9001EDC0FB003EC01FBA03ACC0C800EA
-:1082400032E08DB443EC00FB0036A00CB0036A00B2
-:10825000700000000000000048119C00B70021C819
-:10826000086002DC20B7002DC00F74A21C28D600C5
-:1082700035C00872025C08B744A180487002120041
-:108280006000000000000000C0009E00B78020E4F5
-:10829000097826DE00B7802DE20A70128C88818072
-:1082A00021E0097802DE00B3A025A028780270043E
-:1082B00020000000000000004814CC01BB8020C05A
-:1082C000083042EC00B3002CC00A30220C009300AE
-:1082D00024C1083002CC00B30020E008B002120430
-:1082E0003000000000000000E815A800FA08B28085
-:1082F0000DE203E800FA003F800AA003A800CE5078
-:10830000328005A003E800FA0037A80CA0037A0425
-:10831000600000000000000048006008F8003C0019
-:108320000F8801E000F8043C004F0013C000F80083
-:108330003E000F80036000F8023E010F8003D20070
-:1083400030000000000000000810E400F990124026
-:108350000C9003A400C9003E700E94332408C90099
-:108360002A400B9003E400F9003A400F9003020406
-:10837000300000000000000080046400B942226068
-:10838000081002240089032E40089002A4018104F1
-:108390003E400B9002E400B90222400E9002200001
-:1083A000100000000000000018052400B9402A4A0F
-:1083B000089102A40089002E401A900A2404890022
-:1083C0002A400B9002E400B1002A400B9002060004
-:1083D000400000000000000008040400B101A848AB
-:1083E000889002048081402C5018140A841089401F
-:1083F0002C400B1002C400312020400A100A020158
-:108400000000000000000000B80D6140F0503A008C
-:108410002CA002A142C8003E00DE002321428800B9
-:1084200038140F8503E140F85038140F05032E016E
-:108430005000000000000000981DE408FD003644D4
-:108440000FD0036440F9003D500F9403E5007D40D8
-:108450003E400F9403E400F9103F400E9003E60401
-:1084600070000000000000001805E400FD403368C3
-:108470000CD003E781F90033780DD81326A0CDA0E6
-:1084800032400D9B032400F9A03C442C9007860049
-:1084900070000000000000003810E000B8A0A2103A
-:1084A0001880038284B880362C2E0F02A3A0D8E057
-:1084B00036228B080342A0F8E02E28088802CE045A
-:1084C00030000000000000000805C400B100A0500A
-:1084D000283002C580B10820400910A24408814814
-:1084E00020400B14020480B1382C4808128282010B
-:1084F00070000000000000001811A400B10022402C
-:10850000089202E400B90226584A9002E408994011
-:1085100026400B90026408B9012C48089012C6044A
-:108520006000000000000000A015E400F980324067
-:10853000089883E404B90130400D900B6402C9002F
-:1085400032400F90032400F9001E580C9003A80439
-:1085500070000000000000002801A400F9203C4049
-:108560000F9803A400B9003E428E104B8404F9001A
-:108570003E408F9003E400E9003E400F9003CA00A4
-:1085800060000000000000002810A000D8003208A1
-:108590000F8483A004C8043E008380012000C00033
-:1085A00032000F0003A000C80032104E8013CA042E
-:1085B0002000000000000000280528008E90A38005
-:1085C0000BE4022800CA002F804AA013A800AA00CA
-:1085D00036810BA00228008A00228008A0038A00AE
-:1085E000400000000000000028054C0093C020D08F
-:1085F0000B34028C008B002CF08B18024C00830093
-:1086000060C00B30028C02830028C10A3002CA000D
-:108610005000000000000000A0011E00B40B69C063
-:108620000958061E8097102FC24870829C80A708A8
-:1086300025CC0B70021E8187A2ABC4087302E80030
-:108640004000000000000000A8083E10DC8421E08B
-:108650000F78429F02C7883DE02F71034E00CF8004
-:1086600021E20F78839E49CFD039E80E7803EA02E1
-:108670000000000000000000084DAC40CA003600B9
-:108680008F3023ECA8EB403CC00F9643ED80FB00FD
-:108690003ED88FB143ED80FB2036CA0FB0A38206CF
-:1086A00060000000000000000005FE80FC8031E05A
-:1086B00005AA10FE44FF903FE1CFF9173F20D78075
-:1086C0008BE40FF8033E30FF8037E00FF8004000E6
-:1086D0007000000000000000A8119C00BD1021C027
-:1086E000084A02DCC0B7002DC20CD3021C808700F0
-:1086F00029C04B72021C00B70121C00BF0122A04E2
-:10870000600000000000000000009C903400218008
-:108710000970005C0CB7002DC408501A0C009700BB
-:1087200021C04B30021C00B70025C00B7002400076
-:1087300020000000000000002014CC00B000600009
-:10874000083E02CC00B3020CE02BB0020C009300F8
-:1087500028C00BB0022C10B30020D603300208044E
-:108760003000000000000000A815BC00FB00B200B3
-:1087700005BE037C00FF003E200CB0033C00D98006
-:1087800033C08BF0033C00FF0037E00FF0036A04B6
-:1087900060000000000000008000EC00FB043E00D0
-:1087A0000FA423CC00FB003E81089003EC00E914E9
-:1087B0003EC00FB003EC10FB003EC00FB003E00062
-:1087C00030000000000000000110FC00FF003780B6
-:1087D0000FFA03FC00CF003F9006DC233C00FD10A5
-:1087E00033C00FF00B3C00430033C00FF003C04414
-:1087F000300000000000000081006C09BB1922322B
-:108800000BBE036C008B002C900DB802AC00B100C5
-:10881000F2C00BB012AC008B0022C00BB003A04022
-:10882000100000000000000080052C10B30026207E
-:108830000B9012EC018B002AC20A90022C00BB00A4
-:10884000A2C00BB0022C00AB002AC00BB002E000AB
-:10885000400000000000000008040C01B3002000EC
-:108860000B00028C0083002EC00B34028C00BB0076
-:1088700020C00B30020D00A300A0C00B300282010B
-:108880000000000000000000000D6C00BB043680FA
-:108890000FB202FC02CF0238C00EF0033C00FB0016
-:1088A00023C00FF0033D02EF0033C00FF043C003BD
-:1088B0005000000000000000A01DFC00FF003F0071
-:1088C0000FF4237C00FF003FC00DD003FC00FF002D
-:1088D0003BC00FF003FC88DF003FC00FF003A80689
-:1088E0007000000000000000C005F050CE1233D030
-:1088F0004C868330805F6833C40FF3833CC0CC3830
-:10890000B3080CC603F1A0FF0033240CC203F0002F
-:1089100070000000000000008010EC80D22023D8FE
-:108920000D96028860AF4023DC0BF6023CC28860E3
-:108930002252089122E100B724A2488A848260046E
-:1089400030000000000000008805C4008100E0C481
-:108950000A00020480A320A8C01B300A0C00A0005B
-:10896000280C090202C480B31C2208190302E21178
-:108970007000000000000000C015A400998062C0D3
-:108980000BA032A451AB002AC08BB0000C00A9C0D0
-:108990002A2108B822E200BB0022841BA8427004EE
-:1089A00060000000000000004015E200CBC932C0AA
-:1089B0000E8B132210DB0132C00FB00B2C0068812C
-:1089C0003A222C8823E300FB0030308D9C83D004B6
-:1089D0007000000000000000E001BA40F7043EC251
-:1089E0000DD823D8007B0037C00F7033FC10D200A5
-:1089F00035C08FC003F400F7023FE00E8003F8009B
-:108A0000600000000000000040108120C80830C055
-:108A10000C00832440C3893AC00EB00B2C08C9480F
-:108A200072540F9103ED02EB8A3A628C800B1004B2
-:108A30002000000000000000C8052B048840A3C2ED
-:108A400002AE1227428F4423C20BF4023D000A40BB
-:108A500022E00BB502EC208F44A2408DBD233200F2
-:108A60004000000000000000E0054940838124C16F
-:108A700008280201009300A0E80A30828F60B390BA
-:108A800060B80B28124A0093002090092002780059
-:108A9000500000000000000020011E0287A825E011
-:108AA0000A7B021A04878021E40B78828E02969159
-:108AB00021210B6940DB40979223A089588208004E
-:108AC000400000000000000048082582C30034C0B8
-:108AD0000C9B4308D0D32038C00EB0038C00B300E9
-:108AE0002080071003E000D31038180D3003520225
-:108AF0000000000000000000401DB4007F201BD0DB
-:108B00000FF103F840EF003FC00FB4037C20CF0407
-:108B1000BF400FF003E410EF183DC00FE003D00694
-:108B20006000000000000000A805E800E300B2C4F7
-:108B30000CA0032400DB6832C80CB403EC80C880AE
-:108B4000B6E00CA0032E00CBE0B2600CB80B2A00FC
-:108B5000700000000000000048119C028700A1C8BE
-:108B60000870021C08970221D4087402DCC00700B8
-:108B700021C08870021800830821C0085002120426
-:108B80006000000000000000C0009E20AD8029E0D1
-:108B90000858021E0097B021E8087802DE10158000
-:108BA00021A10848025E0087A465A0087802300071
-:108BB00020000000000000004814CF108170A8C001
-:108BC00038300A0D009300A0C1283002CC028388FF
-:108BD00020E038340A4D72830024E82834821204DD
-:108BE0003000000000000000E815BA40EEC0BA8076
-:108BF0000CE0033910DA0032800CA003E800DEC874
-:108C000033A00CE0037B00CA0037B10CE4233A0424
-:108C100060000000000000004800C100F8003600BD
-:108C20000F8003C02038003E000F0003E000F80270
-:108C30003A240F8083A001F8043A040D8013D20077
-:108C400030000000000000000810E444C100324081
-:108C50000C9032240CC10638400D90090400D90054
-:108C60003E400F18032400F9013E400F9003C20458
-:108C700030000000000000008004640689002A50D3
-:108C800008940A2400894222500A90122500890083
-:108C90002E500B9C0A2510B9002E500B9002E000BC
-:108CA0001000000000000000180524208900204268
-:108CB0000810C2AC1089082A4209900224209900A9
-:108CC0002E420AB1822C20B9006E420B9002C600DF
-:108CD0004000000000000000080404008300284851
-:108CE0000812628C80810020400210028480812062
-:108CF0002C490B12060484B3026C400B1202C20111
-:108D00000000000000000000B80D41E0C8783014F9
-:108D10004C0513A142C078381E0D87830140D05006
-:108D20003C140E05030140F8783C140F0503EE03D4
-:108D30005000000000000000981DFC00FF000E44E1
-:108D40002FF1037440F9003E400D90036440FD1084
-:108D50003F440FD101F440F9013FC00FD103E606B3
-:108D600070000000000000001805E622E988B2400B
-:108D70000F90032416C98C367B8F9C83A790C90063
-:108D80003E500494132450C9E03E500F9003060057
-:108D900070000000000000003810E28088A0222847
-:108DA0000B8A022A8088A42230088E0A220288A018
-:108DB0002E2888AA12229088F42E200BC8020E04B6
-:108DC00030000000000000000805D420A508214262
-:108DD0000B50821431850825400A502294408508A2
-:108DE0006D40085002540295002D480B50824201FC
-:108DF0007000000000000000181584008D10234052
-:108E00000BD00034018D00234158D00234008D086E
-:108E10002F5008D20274809D002F480BDC024604BC
-:108E20006000000000000000A015E740E9C03240EB
-:108E30000F90092600C90436401F9023A408C9409A
-:108E40003E400C940B6420D9023E410F9403680409
-:108E500070000000000000002801A400F9803E40DE
-:108E60000F1403C508F9003E401F9023E400F900E9
-:108E70003C40AF98038600E9003E400F100B8A008B
-:108E800060000000000000002810B000DC40B300CB
-:108E90000FC0033102C404B1003C40031000FC4089
-:108EA00033000CC403B100CC00B3000CC403CA04EB
-:108EB0002000000000000000280528008A8022A071
-:108EC0000BA0022A008A8422A108A0022808BA0165
-:108ED000228008A02B28008A802A8008E002CA008D
-:108EE000400000000000000028054C029B8120E0AB
-:108EF0008B3806CE00938020C00838020C00B38067
-:108F00006CE00AB0024C00930020E0083002CA0076
-:108F10005000000000000000A001100480082102A1
-:108F20004B4406D020900821028044021000B4C0B7
-:108F30002D10484002000094892930084002E800C2
-:108F40004000000000000000A8083200D68031A0D8
-:108F50000FE80BCA00D68023A004F80B1A00FF808C
-:108F6000BFA02EC813DA025E8073A02C7803EA0239
-:108F70000000000000000000081DAC00F9003E40A9
-:108F80000F90032400E9003E400E8003E400F80047
-:108F900032400FB003E401E90436400F8003C206FB
-:108FA00060000000000000000005FE00CD8033607E
-:108FB0000CD8433600CD8033600CD923BE004D80E1
-:108FC000336008F80B3E00FD843F600FF903C000DA
-:108FD0007000000000000000A8119004DE00238053
-:108FE000086002B8208E04238008680210008E20DA
-:108FF00023820840021200F6002D800B41A0EA04F3
-:1090000060000000000000000000900084002100CB
-:109010000841025040940021000A5202D800850203
-:1090200025040840221808B4002D100B7840C00019
-:1090300020000000000000002014EE22930020C059
-:10904000083802EC00930020C12A2002640282103A
-:1090500024F00A3C422428B3002CE00B8882C80488
-:109060003000000000000000A815AD00CB00B2C029
-:10907000ACBE036E02DB00B2C01EA003E400CA1146
-:10908000B6D0ACBC032400FB003EC0CF8403EA048E
-:1090900060000000000000008000E040F8003C009C
-:1090A0002F8203A000E8003E001D9013A800F900E5
-:1090B0003A00818343E800E8033E040FB003E00078
-:1090C00030000000000000000110E000D6003780F2
-:1090D0000CA003F800CE0033800DA0132008CE00B2
-:1090E00033820C40733018CE001F804FC1430044C0
-:1090F000300000000000000081047C008D0023404F
-:109100000AD002F4008D00234008D4803E428D40F6
-:10911000234008F0023E408D000F400BF402204037
-:10912000100000000000000080052C009900A640FF
-:10913000089006E400910020408800022408804046
-:1091400020400AB002240089000E400B8402200057
-:1091500040000000000000000804000082002080A1
-:109160000A2106C801820020800832820808830094
-:1091700060800A0012088082002C800B300A0201F5
-:109180000000000000000000000D6000D800360064
-:109190000C8423E000C80032000D820B2002C800BE
-:1091A00032000E00032002C8003E000F80030003BF
-:1091B0005000000000000000A01DFC00BF003FC0E8
-:1091C0000FF003FC00FF00BFC08FB003FC08FF02DC
-:1091D0003FC00DF003ED00FF023FC00FF003E806B3
-:1091E0007000000000000000C001F08CFF003D6036
-:1091F0002CB2837C90DF3831E00FF8033C00FF2075
-:109200003FC40EF4037C00F48033000DF803F0003B
-:1092100070000000000000008010E120BB622E42C0
-:1092200028F4423E408F4422E00BB0837F44BFC10C
-:109230002DDC2AF6023F45B880226188B802E0049E
-:1092400030000000000000008805C580B2182EC85C
-:109250002930320C08B32020C04B92020C00B340DE
-:109260002CC08934124C00B00024C1493002E20104
-:109270007000000000000000C011A400BA0C2EE035
-:10928000A9B0062C008B00A2C00B90006C00BB00A4
-:109290002EC00B30026C00BA8026F008B002F00439
-:1092A00060000000000000004011EE00FBC43E78AA
-:1092B0002DB0036C08FB0032C08B24832C00FB0014
-:1092C0003EC08FB00B6C08B2E016608DB023D004A6
-:1092D0007000000000000000E001BE98FF403FC0A9
-:1092E0000E7003DC00FF003FC00FE003FC00FF0036
-:1092F0003FC00EF003AC00FE00B9C00FF003F80051
-:1093000060000000000000004010AD00FA403ED0B8
-:109310000EB203EC00C3003EC00CA0032C01FB0006
-:109320003CC00EB803EC00DA003AD04FB023D004B2
-:109330002000000000000000C8052C00BA002CC06E
-:1093400008F407BC14DF003EC01AA052BC00BF04E2
-:109350003FC08AF003BC00FA0022C80FB003F2003D
-:109360004000000000000000E0054801B1006CC2B0
-:109370000A3042CC0083052CC00830028C01B304B3
-:109380002CC00A30228C00808028C00B3022F800CC
-:10939000500000000000000020011E08B7806FE0B0
-:1093A0001878028E40B7802DE00A78029E00B780C0
-:1093B00029E10A78029E01BC8029E40B7802C800EA
-:1093C000400000000000000048080940F1203CC4B3
-:1093D0000E3902CC00C3002CC40892038C88B31051
-:1093E0002CC40EB0078C00C20838C00F3043D20224
-:1093F0000000000000000000401DBC10FC007FC009
-:109400000FF083FC21DF083BC08F9001FC21FF0C93
-:109410003FC20FF103EC00EF0077C01EF00390068F
-:109420006000000000000000A805E801F90032C05B
-:109430000FB203EE90DBE13AC04D38132D30FB0044
-:109440003EE04FBA432C40FA003FC08CB003EA0024
-:10945000700000000000000048119C00B10021C015
-:109460000B7102CC20A72821C00B70135C08B71029
-:109470002DC44B34831CC1B7022DC01A7002D20414
-:109480006000000000000000C0009A20B4C425A2C3
-:109490000B7806DE00838029E01BF8025E80A7A01F
-:1094A0002DC80A72021E00A68028E0087802F0008B
-:1094B00020000000000000004814ED00B34024C369
-:1094C0000B3042CC00A30020C01B34024C00B30080
-:1094D0002CC04B30020C00B3882CD40A3002D204CA
-:1094E0003000000000000000E815B800FE40B7A002
-:1094F0000FA003E800DA003A800FE2036800FA00E8
-:109500003E800FA00B2800EEE03FB004A003FA0459
-:1095100060000000000000004800E004F0083A107D
-:109520000F8403E010F8003E004F8083E000F80055
-:109530003C000F80038000F8403E090F8003D200FA
-:1095400030000000000000000810E420E900324470
-:109550000C90032400F9003E400F9013E400B90082
-:109560001E400C10032400C9A03C640C900382042C
-:1095700030000000000000008004640089002268C0
-:109580000813022408F9002E481B9002E400B900D9
-:109590003E400C90022408F9402E600A9006E0003C
-:1095A000100000000000000018012400A900204065
-:1095B0000890022400B9012E400B9002E400B9008B
-:1095C0002E40089222240089002E40089002C600F6
-:1095D0004000000000000000080404808121E050E9
-:1095E00028160A0480A1402C404B1422C400B1006C
-:1095F0002C500914020404B1002C400A1002C201CC
-:109600000000000000000000B80D6140E85032008A
-:109610008C80022000B8003E000B8033E010F80080
-:109620003E000C80032008CA003E000C8003AE03FD
-:109630005000000000000000981DFC40FD102F416C
-:109640004F9103E440F9403E404FD063E500F940BC
-:109650003A502E94036500ED003F500F9003E6064C
-:1096600070000000000000001815E600F9E033501B
-:109670000CDA03A600D9803F400F9103A600F988B9
-:109680003E680CDE036600ED003B690C9003C600EB
-:1096900070000000000000003810E108B8E0202051
-:1096A000188E26E10080A02E004B8842E150B84081
-:1096B0002E2A0D0A022008B8002E140D8002CE04B6
-:1096C00030000000000000000805C500B160204027
-:1096D0000831A2C50091482C401B12028400B10041
-:1096E0002C500916020500A3042840081002C201EC
-:1096F00070000000000000001805A400B9082070E8
-:10970000289002E40089002E400B9002E408B9037F
-:109710002C402990026400B9002E62099002C60410
-:109720006000000000000000A005E500F9D0B27064
-:10973000089003E400D9043E400F9003A410F902FE
-:109740003E400D902B6400E98D3A600C9003E804D4
-:1097500070000000000000002801A400F9803E42D3
-:109760000F9003E400F9003E400F9A03E400F90073
-:109770003E402F1003A400F9223C404F9003CA0042
-:1097800060000000000000002800A000F04032004F
-:109790000C8003C000F80032201F8003E000C800E6
-:1097A00032000C80022000C8C03E000C8003CA04B6
-:1097B000200000000000000028152810BA0023A097
-:1097C0000AE402E800BA002BA10BA002E800AA00FC
-:1097D0002A810AA003E808DE002E800AA002CA003F
-:1097E000400000000000000028054C00B304A0B1B8
-:1097F000083622CC00B30020E40B3002CC008300FA
-:1098000020C00818020C0091012CC0083006CA00C4
-:109810005000000000000000A0011CC8B32121C2BC
-:109820002A7002DC00B7A029C00B7202CE00A7810B
-:1098300029C04A7402FE0097012CC00A7012E80089
-:109840004000000000000000A8081E80F7C031E0C2
-:109850000C4803DE11F78021E00B7A03DE00C380A1
-:1098600033D86C78033E00D6803DE00C7803EA02E2
-:109870000000000000000000080DAC08FB803EC0A6
-:109880000FD003EC04FB3C3EC00FB6076C01FB009D
-:109890003ED00F9407EC01EA003EC00FB003C206B1
-:1098A00060000000000000000001FE00CFA43B604B
-:1098B00008D9037E00CF803F254FFC87BE00CF80B4
-:1098C0007FFC0CFC037C00F69033E00FF803C00033
-:1098D0007000000000000000A8119C088F282140A3
-:1098E00008D0021C40A72031041B7802DC80D7007E
-:1098F0002FC41AD0021E48B60061C00B7006EA04DD
-:10990000600000000000000000008C008730694407
-:109910000850220C0087012D448B70068C108700A4
-:1099200029C90850021C44A60061C00B7002C00087
-:1099300020000000000000002014CD00838860405B
-:109940000010024C002B002C411B3002CC00930075
-:109950002CC00A30420C00B24020F10B3002C80487
-:109960003000000000000000A815BD41CFC0BAF0D3
-:1099700028901B6C08CF002CC00FF003AC008B00AC
-:109980003FC06CB04B2C01FB4022C80FB003EA046F
-:1099900060000000000000008000EC04FB043FD4E5
-:1099A0000F1003AC00FB0032C05FB003EC00FB04FF
-:1099B0003EC04F1013EC00FB883EC04FB003E000E8
-:1099C00030000000000000000110DC00C70033621E
-:1099D0000CC00B3C00EF0033E01CF0133C08F70018
-:1099E00031C00ED803BC00FE003DC60CF003C044DD
-:1099F000300000000000000081046C00CB0322470F
-:109A00000898422C009B002AC00AB0022C00BB041C
-:109A10002AC00AB002AC08FA002E6008B002E0408A
-:109A2000100000000000000080052C009B0020407A
-:109A30000898022C00BB0022880830022C00BB00D2
-:109A400022C08A9202AC00AA802EC008B006E000B4
-:109A5000400000000000000008040C008300A0404B
-:109A60000810020C00B30028800A32120C00B30464
-:109A700028C00A30228C20B2002CC0083002C2015B
-:109A80000000000000000000000D6C02CB00304020
-:109A90001C94032C00EF0032C088F08B2C00FB00DC
-:109AA00033C0AEF003AC80EA013EC02CB003C0036B
-:109AB0005000000000000000A01DFC00FF002F402F
-:109AC00007D283FC00DF043FC00FB003FC00FF009F
-:109AD0003FC00FD00BEC00EE003F400FF003E80654
-:109AE0007000000000000000C005F500CF083F48EE
-:109AF0000FC39370D0DC303FD80CB2033CC0FF40A2
-:109B000033C42CF1036250FC3433000F5C03F000CB
-:109B100070000000000000008010C4808B002F5AED
-:109B20000BA61221C089702FDC08F2C23DD0BF40C5
-:109B300037DC88F50A2080E8102A160B9002E00432
-:109B400030000000000000008805C00083082C449D
-:109B50000B02020C0080002CC80833428C90B330FA
-:109B600028C84A3212800CB0A028280B1202E20149
-:109B70007000000000000000C015A2008B002E48FD
-:109B80000BA022202088802EC028B00AAC00BB0089
-:109B90002EC00AB002A000AB822AA00BB202F004D1
-:109BA00060000000000000004015E700CB003EC050
-:109BB000CF9C0B2100D8883EC00CB003AC00FB004A
-:109BC0003AC00EB043E840F8803A600F9803D004E2
-:109BD0007000000000000000E001B400FF000FE092
-:109BE00007A103E802FB003FC00F70237C00FF02C7
-:109BF00035C04DB0037420FC013F000FF803F8009E
-:109C000060000000000000004010A500CB00BA403A
-:109C10000C140B2F22C94032C08EB003AC00FB00E5
-:109C20003EC00EB003E400C90032002C90031004C3
-:109C30002000000000000000C80124008F00224026
-:109C40002CA54229008B04A3C10DF00A3C00BF00E3
-:109C50003FC008F0016900DA0522D00894037200C1
-:109C60004000000000000000E0056040830120C0CB
-:109C70000900022000826022C00830424C10BB0262
-:109C80002CC008B01205009B002082093202380067
-:109C9000500000000000000020011690878020E0A6
-:109CA0000858021614848121E02939025E00B78029
-:109CB00028E00878027A80968121E009F8024800BD
-:109CC0004000000000000000480808098B103844DC
-:109CD0004D25120C00C21022C80A3803CC00F31024
-:109CE0002CC00C30038AC0D91032402D1003120250
-:109CF0000000000000000000401DBC80FF003F404D
-:109D00000FF003F440ED003FC00EF303BC04FF006E
-:109D10003FC20FF00BD400FF10BF800EF003D0063F
-:109D20006000000000000000A805FA00CB023EC061
-:109D30000F9003A000CB003ACA0CB313AF24CB485A
-:109D40001EC80FB6032C00FA003EC00F9003EA00B5
-:109D5000700000000000000048119C0887202DC4FE
-:109D60000B5012DC0487002CC00870A21D00A74015
-:109D700025CB8B74821C00B7002DC10B7002D2045E
-:109D80006000000000000000C0009A0187902DE0F4
-:109D90000B7802CE0086802DE4297A029E8087A06F
-:109DA0006DE80B78021E00B5802D600B7802F00084
-:109DB00020000000000000004814CD0083022CE0C9
-:109DC0000B3002CC0083E02CC00830020C00A30052
-:109DD00024C00BB0020E20B3082CC00B3002D204FA
-:109DE0003000000000000000E815B882CA003EA85C
-:109DF0000FE003F8028E803E800DA05BA800CA0031
-:109E00003E800FA0033B80FE422F800FA803FA0480
-:109E100060000000000000004800E020F8003E0064
-:109E20000F0603C000F8113E000F0003E000F80029
-:109E300036000F800BE000F8043E200F8103D200B3
-:109E400030000000000000000810E400F9003E406F
-:109E50000C9A032440C9C03E404C90032400F900F2
-:109E600036400790032400C90432600F9003C204F7
-:109E7000300000000000000080046400B9022E40A1
-:109E80000A9202250289E02E409890022400B9002F
-:109E900022400990020400D90022440B9C02E000F9
-:109EA000100000000000000018052C00B9002C4034
-:109EB000089002242889002C40689042240CB104A8
-:109EC00026400B900A2C8081002240CB9282C60053
-:109ED000400000000000000008040400B1202C48ED
-:109EE0000A1202048081212C4C0811020408B110CE
-:109EF000204C09120224019120A0480B1002C2013B
-:109F00000000000000000000B80D41E0F8503E14D1
-:109F10000C85032140C8503E1008068301F0F86804
-:109F200036100F05032940C85032940F8503EE0305
-:109F30005000000000000000981DF400F9103F449C
-:109F40000FD10BF440FD122E4C03920BE400F920CC
-:109F50003E4C0F9103FC00FD103F440FD003E6067A
-:109F600070000000000000001805F620C9013E4006
-:109F70000FD0033C00BD0032630C9E432700E9C0B4
-:109F80003E680C98033400F9103F400FD003C60020
-:109F900070000000000000003810C220D8002E0021
-:109FA0000B80522804B8002238088803620088F029
-:109FB0002E3A488F0A2000B0802E000B8002CE047B
-:109FC00030000000000000000805C48081002C4023
-:109FD0000B10020400B10020424814420580A12069
-:109FE0002C440810820400B1202C400B1002C20146
-:109FF00070000000000000001815A50199002E4017
-:10A000000B90022440BB0122410890122400A900B9
-:10A010002C400810402408B9406E500B9202C60430
-:10A020006000000000000000A015E714C9053E41D3
-:10A030000F900B2404F908B2402C900A2400E90088
-:10A040003E402C90032700F9803E600F9003E80407
-:10A05000700000000000000028018488F9003E48DC
-:10A060000F9903E600F9023C40AF1003E412D90453
-:10A070003E400F9003E500F9C03E640F9083CA0094
-:10A0800060000000000000002810A100C8003E0091
-:10A090000F80032100C840B2000C80032010C800CC
-:10A0A00032000C8003E080F80432002C800B0A049C
-:10A0B000200000000000000028052800CA002E80B3
-:10A0C0000BE80A38108EC022800DA00228000A0476
-:10A0D000028028A002FB00BA0037B048EA020A005A
-:10A0E000400000000000000028054C0093012CC037
-:10A0F0008BB0420C909B2020C04830422C00830043
-:10A1000020C0083002CD40B30024C80838020A003D
-:10A110005000000000000000A001140087002DC0C6
-:10A120000B24061600930821C80931020C8087A071
-:10A1300021C0187202DC00B7B424E30878022800BA
-:10A140004000000000000000A8081E0297A03DF09B
-:10A150000F48033E00D68030E02C7A021E82C3F006
-:10A1600033EC0C7C03D600F78035E00CD8032A02D0
-:10A1700000000000000000000819A5A0FB003ECA76
-:10A180000F8003EC02EA003EC60FB40BED40FB006B
-:10A19000BEC00FB643E000FB023E800F9003C20634
-:10A1A00060000000000000000005FE02CF883FE0D4
-:10A1B0000CB903FE00DD8133E08CFC033F04CF804B
-:10A1C00033E24FFC033E00CFC033640CF803C00001
-:10A1D0007000000000000000A811944087002FC10B
-:10A1E0000D69A2D040BC0023C008F0029C0087008B
-:10A1F00021C00B700A3C048710214C086002EA045D
-:10A20000600000000000000000009E0087002DC0DC
-:10A21000096202D800970021C40870020C40970020
-:10A2200021C40B30025800A7082180086082C000BA
-:10A2300020000000000000002014E42583002CC052
-:10A24000092202CC20B20020C028B0028C0093006A
-:10A2500020C00B30426C20830820E208B802C804FA
-:10A260003000000000000000A815A400CF003FC08F
-:10A270000D9C03E800DB8033C00CF00B3C06DF00D4
-:10A28000B3C00BF0076800EF4032A80CA803EA0443
-:10A2900060000000000000008000EC00FB002EC009
-:10A2A0000F9403C540FA303EC00FB0036C00EB00C2
-:10A2B0003EC00F3013AD40FB023ED00FB403E000B0
-:10A2C00030000000000000000110E400C70031C1B0
-:10A2D0008CD0033400CD003DC00CF0017C00DB01CC
-:10A2E0003DC04CF00B3002C30032000FD0030044DD
-:10A2F000300000000000000081046E408B002AC086
-:10A30000288442228088803AC00DB002AC088B00BD
-:10A310002EC008B00223208B0022308B8C022040FC
-:10A320001000000000000000800524008B0022C007
-:10A330000838862A0089802AC008B002CC009B0019
-:10A340002EC008B04226008B0022710B8C02200028
-:10A35000400000000000000008040C00830028C03A
-:10A360000832420000810028C00930528C08830066
-:10A370002CC018300600008300A0000B0002020170
-:10A380000000000000000000000D74028B0033C0CC
-:10A390000C920B2002C8003BC00CF503FC00DF014F
-:10A3A0003FC104F0332140CF0032000F800B000387
-:10A3B0005000000000000000A019FC00FF003FC09A
-:10A3C0000FC403F0009C003BC00FF003FC00FF0033
-:10A3D0002FC00FF003F080FF003F000FC003E8061E
-:10A3E0007000000000000000C005F0C0FFA0312494
-:10A3F0000EF0631004EF643FC04CF3031C80DF08D1
-:10A4000037C00FF003F0A0FC0031082CD203F0009D
-:10A4100070000000000000008010E100BBC1224875
-:10A4200008FD022E0097002FC24871237E40BF0016
-:10A4300021C54BF502EF00BB4036E008A802E0045E
-:10A4400030000000000000008805C584B311A2C9D7
-:10A450000A30020001B33028C40832420C00A308BD
-:10A46000A0CA0A32828010B0412411083102E201F0
-:10A470007000000000000000C015A500BB0022E134
-:10A4800028B0022C809B002EC008B0026C00B300E4
-:10A4900022C00BB000EC20BB0026C0088002F004F4
-:10A4A00060000000000000004015E340F70432C0E7
-:10A4B0004EB0232E20EB001EC00CB0012C00FB0080
-:10A4C00036C01FB003E140FB0036980C9003D00467
-:10A4D0007000000000000000E001B604FF023FC071
-:10A4E0000FF003FE00EF023DC00FF023FC00FF0061
-:10A4F0003FC04FF003FC00F4003B400FA013F800F6
-:10A5000060000000000000004010AA20EB1036C0E0
-:10A510000DB007EC20DB0032C00CB0026C20EB0069
-:10A520003EC10DB003E020DBA032904CB00B100414
-:10A530002000000000000000C8052D008F8020C111
-:10A54000087012CF008F00A3C00DF0023C008F00F6
-:10A5500037C088F002EC00880020400880023200FA
-:10A560004000000000000000E0054C00A3802481B2
-:10A57000093006CC40930028C108B002CF40A300A8
-:10A580002CC0093002CD00904060402810023800F5
-:10A59000500000000000000020010E00878023E032
-:10A5A000487902DE41978029E01978069E0087806D
-:10A5B00025E0087802D203838021A0086802080001
-:10A5C000400000000000000048080C00A30034C058
-:10A5D0000D3042CC01D3103AC50C3903CC00E30452
-:10A5E0003CC40D3003CE00D00030400C30031202CA
-:10A5F0000000000000000000401DBC00F7003FC04C
-:10A600001FF053FC00EF0837D10FF0837C00F740B8
-:10A610003FC10FF103D000FF00BF840FC803D00675
-:10A620006000000000000000A805E000FB003EE024
-:10A630002CBE83EC00EB403EC00FB403ED20FB10BA
-:10A64000B6D20FB483EC00DB8036C10C90212A0017
-:10A65000700000000000000048119400B7002FC0F7
-:10A660000836020C0887302DD98B7286DD00B320A6
-:10A6700021C80B7402D0028400A00028200212041A
-:10A680006000000000000000C0009A00B7802DE0CC
-:10A69000087A029D00A7A02DE00B78029E80A7807B
-:10A6A00021E4087A269E18830421E008780A7000C5
-:10A6B00020000000000000004814CC00B3002CE093
-:10A6C0005830120E8283002CC00B3002CC01B30034
-:10A6D00020C10B3002C00888D2202008000252049A
-:10A6E0003000000000000000E815B860FA003F826A
-:10A6F0000CA003FA00AA001E808FA003E800F2005D
-:10A7000032801FA003E800DA003688ACE0037A0448
-:10A7100060000000000000004800E100F8003E205A
-:10A720004F8003E100F0003C000B8003E000F802E2
-:10A730003A000F8043F100FC0A3D000FC003920075
-:10A7400030000000000000000810E600C9903E4004
-:10A750000F9203E400D9003240049007E700F9109B
-:10A7600030400C9043E409D98022402C100B0204A5
-:10A7700030000000000000008004646089C02E40AA
-:10A780000B9826C58089002240289012E710B90056
-:10A790003640289012C583C980B640089002200038
-:10A7A00010000000000000001805040089402E4140
-:10A7B0004B9002E4009900A2400A9002E500B90023
-:10A7C000E241089042E4009D50AB4A08D0260600C2
-:10A7D00040000000000000000804048281202C508A
-:10A7E0000B1002E400814020504A1432C400B140F2
-:10A7F0002451181412D40085402D4008500602013F
-:10A800000000000000000000B80D6140C8003E00DC
-:10A810000F8002E000D80032000A8002E010F80049
-:10A820003200048003E000D8003A000CC0032E037D
-:10A830005000000000000000981DF440F9103F4156
-:10A840000F9403F500F9403E500D9403E510F940D4
-:10A850003E504F9403C500E94136500F9403E6067D
-:10A8600070000000000000001805F600FDA83A4046
-:10A870000CD8233600E9A03E780F9E03B680CDE2C7
-:10A8800032680C9B0336824DA037688C9803060013
-:10A8900070000000000000003810EBA0B84020203D
-:10A8A000088502215188C02E290B8E02E100D8E0D4
-:10A8B00022320D8D23614898D4A2102884020E0400
-:10A8C00030000000000000000805C500B3002A4A5F
-:10A8D00028104EA408A16828440B1402C50081402A
-:10A8E000A0500810020402912A204428144A0201B0
-:10A8F00070000000000000001815AC80B900224074
-:10A90000489006A400A9002E400B9022E400990074
-:10A9100022400910026402990022400890020604B5
-:10A920006000000000000000A015E400F9003858A5
-:10A930000C90538414A9043E400F9003E400C90016
-:10A9400032400C90032404D900B6404C900B2804EC
-:10A9500070000000000000002801A400F9023E4938
-:10A960000F10436400D9003E400F9003C400F10271
-:10A970003E400F9003C402E9043C400F1C03CA0090
-:10A9800060000000000000002810A180C8203E00E8
-:10A990008C800B2000E8023E000F8003A082C800DC
-:10A9A0006C000F80032010C80032020C80030A04E0
-:10A9B00020000000000000002805380086002E80DE
-:10A9C00068A8803A008A002E800BA002F8008A0056
-:10A9D0002E800BA00A3A008E10238008A0030A00E4
-:10A9E000400000000000000028054D0083002CC03E
-:10A9F0000838000C6023002CC00B3002CC408300D0
-:10AA00002CC00B30020C028A80A0E028300A4A00D9
-:10AA10005000000000000000A001162087022DC198
-:10AA20004870127C00A7202DC90B7200DC0087083B
-:10AA30002DC41B32021D01874221C208700228006A
-:10AA40004000000000000000A8083E02C7803DEC66
-:10AA50000C58031E00E7803DEC0F7F039600C78073
-:10AA60002DE20779030A06C38030208C38036A027E
-:10AA70000000000000000000081DAC00FB003EC00C
-:10AA80000F10438C00DB383ED80FB003CC04FB44DE
-:10AA90003EC08FB613EC02FF023E000FB003C206A9
-:10AAA00060000000000000000005FA00FF8031E3B4
-:10AAB0000EF823FE02DF80B7E20EF8037E006DD0B1
-:10AAC00033E00CF89B76C0DF84B3E004F803C000E9
-:10AAD0007000000000000000A8119040B70221C4DF
-:10AAE000087B42DC00870021C40B300010808D0001
-:10AAF00023C00DF20204428F0029C8287002EA0424
-:10AB0000600000000000000000009400B60023C0B8
-:10AB10000A72028C00870021C00A30020401A702D9
-:10AB200021C0087042008A870021C0287002C0003E
-:10AB300020000000000000002014C500B000A0D0DC
-:10AB400008B002C9428B0020C00B302204008300F1
-:10AB5000A0C0493002454093C0A8D4003502C804C3
-:10AB60003000000000000000A815AC00BB0031C0A0
-:10AB70000EB023CD00DF0037C00EF0016800E30007
-:10AB800033C01CF0034500DAC892D42CB403EA04A5
-:10AB900060000000000000008000E520FB003EC0D7
-:10ABA0000FB003EC00FB003EC04FB003AD00FB0054
-:10ABB0007EC01F3003A480E9203CC00F3203E000B8
-:10ABC00030000000000000000110DC00C70033C2AC
-:10ABD0002CF0033E20DB0013C00C70033C80EF041C
-:10ABE00073C10FF0223000C600B2C00CF003004465
-:10ABF0003000000000000000810069008B44A2C109
-:10AC000088B0036C008B0022C028B00A2D00BB0066
-:10AC100062C00BB00226028B8022C008B003204025
-:10AC20001000000000000000800528018A0822C0F2
-:10AC300008B2026C409B0028C048B0162904B90134
-:10AC400022C049B006AE098B8022E048B002200045
-:10AC5000400000000000000008040002820022C042
-:10AC600088B0024400830028C00830020800B10008
-:10AC700020C00B30028C00838020E008300A0201E3
-:10AC80000000000000000000000D6400CA0033C096
-:10AC90000CB2032C00DF003BC04CF5132C04EF007A
-:10ACA000A3C00DF003A840CB00B2002CB0030003FA
-:10ACB0005000000000000000A01DF000F4003FC0A4
-:10ACC0000FB103F000FF0037C00FF003FC00FF00DE
-:10ACD0003FC007F00B7C08FF013F000FF003A80600
-:10ACE0007000000000000000C005F0C5ED333BCC53
-:10ACF0000CF0033040FF253FCC0CF3833CD0DF4801
-:10AD000037304CF303FD80CF2833D80CF1033000EB
-:10AD100070000000000000008010ECD0BB3120CC9F
-:10AD200088F3422050BF902FC40AF6027DC08F40A6
-:10AD300026408FF602FD00FF0839C808F602A0047D
-:10AD400030000000000000008805C480A12028C950
-:10AD500008309A0009B3002CC02030024C908320A8
-:10AD600002080B3312CD80932024D808342222010C
-:10AD70007000000000000000C011AE00BB1022C037
-:10AD800008B00226013B016EC008B0024C088B00DF
-:10AD9000A2890BB002EC00AB006AC128B002B0047B
-:10ADA000600000000000000040156E00E8C13AC0DD
-:10ADB0002CB0432600FB063EC10CB00B2C02CB008E
-:10ADC00034229FB043EC009B0236C18CB0031004C8
-:10ADD0007000000000000000E001BC00FC803DD0DD
-:10ADE0002FF003FC00FB003DC0073003BC00EF0464
-:10ADF0003FE05EB001FC00FF001BC00FF003F80055
-:10AE000060000000000000004010AC00CB013EC913
-:10AE10000CB0172084EB00B2C10DB0036C00C3006E
-:10AE200032500FB0030C40C3007EC00C300310043E
-:10AE30002000000000000000C8052C008A582EE009
-:10AE400048F0022D00EF0123C008F0223C048F607F
-:10AE500036540BF00A3D408F002FC008F0037200FB
-:10AE60004000000000000000E005400089802C1038
-:10AE700008B0024900A3A024C00930024C0083C9D5
-:10AE800020904230124D0083006AC0093002380021
-:10AE900050000000000000002001160085806D6257
-:10AEA000087E025640278025E01978060E00838030
-:10AEB00061A00B78024E0087826DE009790248009C
-:10AEC000400000000000000048082C02C3613C88DC
-:10AED0002CBA124910E32C36C00D30534C44C30039
-:10AEE00020010F31034C00C3013CC02DB1031202FD
-:10AEF0000000000000000000401DBC00FF003F00FB
-:10AF00004FF109B000FF003BC00EF401FD24FF40EB
-:10AF1000BFC007F003BC006F103FC41EF183D00612
-:10AF20006000000000000000A805C400E804320032
-:10AF30000CB603E802CB0036CA0FB503AD00FB2008
-:10AF40003E400FB303EC80FBA832C68CB6032A0048
-:10AF5000700000000000000048119402E60020008C
-:10AF6000087302DC0087702DD00BF0021C84B72020
-:10AF70002DC00B7082DD24B74034C9287282920440
-:10AF80006000000000000000C000BE02AC80A120F4
-:10AF9000087900CE04878065E00B7A029E00B790A6
-:10AFA0006DA00B7802DE00B78021E0087802300047
-:10AFB00020000000000000004814ED82ABE020E417
-:10AFC000083002EE0483002CC11B30020C08B300D1
-:10AFD00064F60BB002CC04B30026C0083002920421
-:10AFE0003000000000000000E815BB80EE4931A0F1
-:10AFF0002CA003FA00CA0236800FA003A800FA02B0
-:10B000003F900FA063E800FA0032800CA0233A04BE
-:10B0100060000000000000004800E00AE8003E0870
-:10B020000F8003E350F0003E000F8013E000F800B3
-:10B030003E000F8003E001F8017E000F8003D20084
-:10B0400030000000000000000810E440C9A13240B8
-:10B05000201101A640C98436400D900344004100F0
-:10B0600032400F900B2400F9003E404C10030204C4
-:10B070003000000000000000800464008982A240CB
-:10B08000089C02250089C82240089042240089209B
-:10B0900022600B90022410B9002E4008900360003B
-:10B0A000100000000000000018052400890422CAD6
-:10B0B0000A900A2502892020402810026401A90074
-:10B0C000224B0B90022401B9002E41289002060069
-:10B0D00040000000000000000804049081A0204807
-:10B0E0000A320204808100204408110204D0A12009
-:10B0F00020400B11020600B1312C48081402420115
-:10B100000000000000000000B80D6142C854321475
-:10B110000E85032144C828B21A4C86936114E85066
-:10B1200022140F86832140F0401E140C00032E03CE
-:10B130005000000000000000981D7444F5103F44CA
-:10B140000D91037440F9003E480B9203E4C2D910FC
-:10B15000BF400F9203E504F9303E440F9443E606E6
-:10B1600070000000000000001805F622CDA1336138
-:10B170000CD8D33410CDA83E608E9C93A708CD8008
-:10B1800033400E9AD336A0C98032600C9903060072
-:10B1900070000000000000003810E3888AA020281A
-:10B1A000088022201288402C28088A022200880069
-:10B1B00022000B8C03210088D0A23E288D020E04B1
-:10B1C00030000000000000000805CE20A1482052F9
-:10B1D000291002240381002C520A1012851091407C
-:10B1E000A4400A128244009128244028120202013D
-:10B1F00070000000000000001815A400A9142240EF
-:10B20000099002A40189042C4008900224009900AE
-:10B2100022444B10422414990026400810020604D0
-:10B220006000000000000000A015E440E940B27892
-:10B230000D900B2422C9033E410E9003A402D900B5
-:10B24000165806900B6402D90036400C900B280467
-:10B25000700000000000000028018400D9803E4AF0
-:10B260000E90036420F9083E410F9003E400E108CA
-:10B270003E400F9003C400E10038400F9003CA0025
-:10B2800060000000000000002810A009F040B0108D
-:10B290004C000B2000F8003A001C0003E000C8003E
-:10B2A00036000C80032000C80032000F80030A041F
-:10B2B0002000000000000000280528003E8823A28E
-:10B2C00048E0001980BE882E800DA042E8008E0064
-:10B2D000239008A00A3A00DA0036800BA00A0A0080
-:10B2E000400000000000000028054C00B38020E072
-:10B2F0002830C20F10B34028C00B3002EC1183403D
-:10B3000028D20A30020CC0830020C00B30020A0091
-:10B310005000000000000000A0011C00B60021C089
-:10B320000820C21C10B5002DC80A7202DC40850836
-:10B3300029A21A72220C00933005C40B3222280075
-:10B340004000000000000000A8081600B280312074
-:10B350000C58031E00F78039F80B7C22CE40CF80BA
-:10B360009B602E3B031A00C7A811E00F78032A0246
-:10B370000000000000000000081DA400FA003EC00C
-:10B380000F9023E800FB003ED02DB603ED02F9003C
-:10B3900032400DB007EC00FB603EC80FB503C2069B
-:10B3A00060000000000000000005FE00FF8033A0E8
-:10B3B0000CF80B3240CE8137F00CBC03FE00FF844A
-:10B3C00033E02CF883E602CF8533F00CFC03001445
-:10B3D0007000000000000000A8119C00BE0035C6EF
-:10B3E0002830023040870023C0087A02DC00BE000B
-:10B3F00023C0087012FE00870021C008F0022A0452
-:10B40000600000000000000000009520B6002080D1
-:10B410000831025C01870025C0087202DC00B6001A
-:10B4200021D0097002D408930020C00870020000E7
-:10B4300020000000000000002014C400B0E02460E0
-:10B440000820064801800020C0083002CC04B30068
-:10B4500020840B3002E8009B0020C0083002080462
-:10B460003000000000000000A815AC00B9E03280F8
-:10B470006CB0236F00C30037C13CF003FC00FA003E
-:10B48000B0C009F003EC10DF0073C00CF00B2A0011
-:10B4900060000000000000008000EC10F8003E4258
-:10B4A0000F2403A860F8003CC10FB003EC00F94082
-:10B4B0003E8004B023E100EB003EC00FB003E0008B
-:10B4C00030000000000000000110F400EE003D30EC
-:10B4D0000CC0031400CCA0B3C04C70035C10DF00A0
-:10B4E0003F000CF003F800CF0023C00CF003004035
-:10B4F000300000000000000081046400BA812E5872
-:10B500000888022780892022C028B0022C00888366
-:10B510002E2005B062E3008B002AC008B003604013
-:10B52000100000000000000080052600B9812E40B8
-:10B53000088C062600880022C008B0166C00988887
-:10B540002E2008B004E3010B0028C00830022000C0
-:10B55000400000000000000008040400B0002CC0FF
-:10B5600028000E0010800020C00832020C00800469
-:10B570002E20093002C412830028C0083002420184
-:10B580000000000000000000000D6C00FA003E000A
-:10B590002C910320008A0033C00CF0037C00D800FB
-:10B5A0002E400CF003E080CF003BC00CF003000302
-:10B5B0005000000000000000A01DFC00FC013F4006
-:10B5C0000FC013F000F4003FC10FF423FC08FC008F
-:10B5D0003F000FF003F040FF003FC00FF003E8060C
-:10B5E0007000000000000000C005FC20CD1039C82C
-:10B5F0000DC1033C80EF9023D80FF800FE00CF80F0
-:10B600001FD00FF903FF00E7C033C40FF003B000F1
-:10B610007000000000000000C010FE02894023F00E
-:10B620000885103C008B00A3DC4BB282EC208B0021
-:10B6300026C04BB002EC10B9042AC90BB580F00447
-:10B640003000000000000000C805CC00816428C460
-:10B6500009B20A0CF0A32020C80B3202EC028308C6
-:10B660002CC8093202CC80ABA020C80B3200B2013A
-:10B670007000000000000000C015AC10890022C05E
-:10B6800008B2122C020B0022C00BB802EC008B0097
-:10B6900026C04BB046EC00B9000AC00BB002F00463
-:10B6A0006000000000000000D015EC10C9E03AC0B6
-:10B6B0000D28032C00EB1032C00F8203C400CB0016
-:10B6C0003EC10FB006EC08E900B2C00FB013900401
-:10B6D0007000000000000000E0019C00F5A03FC0E9
-:10B6E0000FE803FC08FF003FC08FC003FC00FF0011
-:10B6F00037C00FF003FC00FF043EC00FF003F8005A
-:10B7000060000000000000005010AC00F94034C0A0
-:10B710000DB4032C00DB403EC02C80036408FB10FA
-:10B720003EC68FB003EC00F98032C00CB00B14049D
-:10B730002000000000000000C8053E20E9C837D402
-:10B7400048AA221C008B006FE0088582ED40BB8474
-:10B750002FC04BB803AD40B30023D408F70232002A
-:10B760004000000000000000E0014C00B164A4C0F3
-:10B7700009200A0C04B8006CC0083802C840B38025
-:10B780002CD10B3002CC04B30028C00830023A00A0
-:10B790005000000000000000B0011E00A58025E060
-:10B7A000883A121E00A6902DE2087902DA00B782CC
-:10B7B0002DE00378829E00BCC129E00878022C109D
-:10B7C000400000000000000049080C00F30034C0F5
-:10B7D0000D3E030C00F0402EC00C3043C800F300B7
-:10B7E0003CC0073003CC80F20038C00C300312029A
-:10B7F00000000000000000004019BD20F7003FC21B
-:10B800000FF10BDC20DE043FD207F013F840FF00FD
-:10B810003FC007F003FC00FD0037C00F7003D006E7
-:10B820006000000000000000AA05CF00DC003ECA56
-:10B830000FA000AC92C90032C00FB011A408FB00E9
-:10B840002EC04FB023EC00F9003EC40FB003EA0055
-:10B850007000000000000000C8919C00840001C03E
-:10B860004B70221CC0870021C04B70021C00B70126
-:10B8700025D80B7022DC00B6002DC00B7222F2041A
-:10B88000600000000000000080009E809780A9E01A
-:10B890000BF802CE08858029E80BFC021700B78060
-:10B8A0002DE08B7802DE00B4C02DE80B7902E000B9
-:10B8B00020000000000000004814CC008308A0C055
-:10B8C0008B3C024C008300A0C01B3C0A0F29B30034
-:10B8D00024C00B3002CC00B3802CC00B3002D20449
-:10B8E0003000000000000000E815A800DE003A80EB
-:10B8F0000FEA02E800CE003A800FE0033800FA00B9
-:10B900003E800FA003E800FE003E800BA003FA0477
-:10B9100060000000000000004800E000F804BA01E8
-:10B920000F820B8004F8803E000F86036000F80051
-:10B9300036000F8023E100F8003E000F8003D200A4
-:10B9400030000000000000000810E401F90032405F
-:10B950000F9003E400490032400B9003240049009B
-:10B960003C400D9003E408C9003E600C90030204C3
-:10B97000300000000000000080046400B940A264B0
-:10B980000B18022500D15036504E900A24028940EF
-:10B990003A51089402E52289442E6028900A20003A
-:10B9A000100000000000000018012400B10822402F
-:10B9B0004B9282A500A90822500A10020C00A9404F
-:10B9C0006E500B9402C40489446C488810024600EF
-:10B9D000400000000000000000040400B140E0400E
-:10B9E0001B140A0400B90024401A10220400A1000C
-:10B9F00028400A1012C40081026C40081202420161
-:10BA00000000000000000000B80D6008B000320027
-:10BA10004F8002A150E05032140EA5232140E8507F
-:10BA20003E140F8503E140C8501E140C85436E037D
-:10BA30005000000000000000D819E500FD403E5015
-:10BA40000F7403A5005D003E500A5013F400D900A6
-:10BA50003A500D9013E400FF003E500F9103A606EC
-:10BA600070000000000000001805F690BDE8236B90
-:10BA70000BDA0B3680C9003268469043E400490077
-:10BA800032680C90032440F90032600C9C03C6011C
-:10BA900060000000000000007810E100B8E0A21192
-:10BAA0000B8E0A232288802A31288802620088802F
-:10BAB000A23028888A2200B8A8A23908CA02CE0477
-:10BAC00030000000000000004805C50821000040CB
-:10BAD0000314828580AD0821529850823423850852
-:10BAE00021520850065400B520215A095402D201AF
-:10BAF00030000000000000001811A400B9612240CD
-:10BB00000B90060400AD00694008D0027400850067
-:10BB100001400070067404B500234009D002C60439
-:10BB20006000000000000000A014A400E900324002
-:10BB30004F950BA400E90032408C90032400C9000B
-:10BB400032400C90036408F90032403D9003E80451
-:10BB500070000000000000006801A408F9003E40E9
-:10BB60004F908BE404D9013E400D90036400D9014D
-:10BB70003E400F9003A400F9003C400E9003DA0011
-:10BB800060000000000000002810A000F8403620EF
-:10BB90001784032021C8007E022C80432000E80285
-:10BBA0003E010F8003E000C8401E000F8003CA045E
-:10BBB000200000000000000028052A88B60223A00B
-:10BBC0000BEC422B00D2806EB108A0220800EA04E0
-:10BBD0003A809FA003A8008A042E800BA802CA0006
-:10BBE000400000000000000028054C00B200A4E165
-:10BBF0008BB432474583902CF44B38120E44A3018A
-:10BC00002CC04B3002CE0093006CC00B3802CA002F
-:10BC10005000000000000000A0011C00B74421C239
-:10BC20000B5402540587002C409B6C021810A7048B
-:10BC300029C00A70029B0097040D800B6082E80007
-:10BC40004000000000000000A8081E00F38035E05E
-:10BC50000B3802521084802DA00FF80B1E00E680D6
-:10BC60001DA00B6803FE02D6803DE00F7803EA02B8
-:10BC700000000000000000000A1DAC00FB003EC1F7
-:10BC80008B900B800AB8012E000CB003E800FA007C
-:10BC90003EC00FA043EC00EB003E800FA623C20283
-:10BCA00060000000000000000005FE00FE80332060
-:10BCB0004EC912F650EF903FE00C1900B642CF216A
-:10BCC0003FE00EF902E6C0FF803FE04CDC0340009D
-:10BCD0007000000000000000AA119400B70081402D
-:10BCE00008030214C487012DC8086A12384087026D
-:10BCF0002DC0087112D280B7002D800860022A047E
-:10BD0000600000000000000000009C00B7102180CF
-:10BD100008F4129404A6002CC018D202144886100D
-:10BD20002D800A6132D400B6182DC40858020010C4
-:10BD300020000000000000002014C400B30020C058
-:10BD400040B022040082810CC008300A0A008A0038
-:10BD50002EC008A002C400BB002E800820020804E8
-:10BD60003000000000000000A815AC00FB00A0C0DF
-:10BD7000249423AC10EBA00EC00CB0022E20C900FE
-:10BD80002E400E9003EC00F9803E406CA00B2A047C
-:10BD900060000000000000008000CC00FB003EC0FE
-:10BDA0008990032C00FB023E404FA0036D01FB4134
-:10BDB0003EC08FB403E800FB203E500FA403E00018
-:10BDC00030000000000000000110FC00C320B2C0E1
-:10BDD0000DD0033800CD003F800DF003FC00FD02C4
-:10BDE00036000CD0033F08FC0412C00CA003C04472
-:10BDF000300000000000000080046C028BC822C0EC
-:10BE000008980A2A4089202E018EB012EC80BBF0DF
-:10BE100022E508BD022E00BB9022ED08A202E00040
-:10BE2000100000000000000080052C008B012200A3
-:10BE300049A81E04008B012EC0499002E400B900FD
-:10BE400022400A90022C00B9002A40088002E0003B
-:10BE500040000000000000000804040081002040B1
-:10BE6000082002040083002CC00A2042CC00B3004A
-:10BE700020C00230020884B3040840082002C21126
-:10BE80000000000000000000000D6C008B00B2807C
-:10BE90000DB1032402CB013EC04D9043E400F900F4
-:10BEA000B2002E900B2C80F800BAC02C8003C00387
-:10BEB0005000000000000000A01DF4007D003FC005
-:10BEC0000F7203D400FF003FC00EF147FC00FF00DB
-:10BED0003BC00DF013FC50FF0037C00FE003E80635
-:10BEE0007000000000000000C005F0C4CC333F0427
-:10BEF0002CF6033860CC90B3200FF123F060FF01E3
-:10BF000023C80CF28A3C81DF303F640CD803300434
-:10BF100070000000000000008010E0C28A302E187F
-:10BF200008F530A594582222214BF302E1009F70BE
-:10BF30002BE40AF4121D40AF722C492F3082A00668
-:10BF400030000000000000008805C48080A02C980C
-:10BF5000083222080082002800033202C084B30C99
-:10BF600020C05832928C30A3202EC0481242620169
-:10BF70007000000000000000C015A8008B002E20FB
-:10BF800008B00A200198002A220BB002E6009B00AC
-:10BF900022C00AB012AC04AB002EC003B002F00005
-:10BFA00060000000000000000015E500C8003EB081
-:10BFB0000CB0032900C8003A204FB003E220FB0177
-:10BFC000B0C00CB0032C00FB023C410C9043480471
-:10BFD0007000000000000000E001A280FE403E0072
-:10BFE0000FF063EC00BFC417420FF003EC00FF003A
-:10BFF0001FC10FB0035C00FB003F404FF000B800D2
-:10C0000060000000000000004010A502C8003E9043
-:10C010002CB00B0106CB013E505FB0132110CB00BA
-:10C020007EC00CB00B2C00CB0032C00C900310046F
-:10C030002000000000000000C80528018BD02C342F
-:10C0400048FF023000AA042E690FF0036810DF00D9
-:10C050002FD40DF0023E005F04B6C008B00372009A
-:10C060004000000000000000E005699081802C0085
-:10C0700048B802080999004CB00B30020C008B0044
-:10C080002CC009B0400C40830000400A90023000F0
-:10C0900050000000000000002001160084882DE4FC
-:10C0A0004839021600B4802DE00A7B065E009780B6
-:10C0B0002DE20978021E90978025648A7802480054
-:10C0C000400000000000000048080D0081102C9680
-:10C0D0000831230C0090203CC41BB8020840C30068
-:10C0E0002CC40D30030E40C31030C04E10071A127E
-:10C0F0000000000000000000401DBC007D053FC5A1
-:10C100000FB10BF400EF001F450FF043FC01FF409F
-:10C110003DC41FF006FC10FF003BC12DF103D0060B
-:10C120006000000000000000A805EC04CB043EA065
-:10C1300044B6032804CB8032800FB3936008FB2001
-:10C140003ED21FB3032D80FB617E408C98032A00F2
-:10C1500070000000000000004811840C86052DC00E
-:10C1600008F4828C908500A1C00BF0025C003700BF
-:10C170002DD00B71021CC8B7482D400A7002120462
-:10C180006000000000000000C0009E0087802DA11C
-:10C1900060784A16D0A78029E00B78529601B790B4
-:10C1A0002DE80B7A225E40B7A02FE14850223000E4
-:10C1B00020000000000000004814CC1083842CC034
-:10C1C000083002A41083CB28E00B302A4F409300A4
-:10C1D0002CC00B30024C10B3022CC0AA3002120447
-:10C1E0003000000000000000E815B800CEA03F803D
-:10C1F0004CA02B3A00CE403BB80FA003B900BA00C8
-:10C200003E800FA0036800FA007E801CA00B3A0459
-:10C2100060000000000000004800E002F8003E045A
-:10C220008F0003E04AF81026180F8003A080F80260
-:10C230003E008F000BA000F8023E000F8013D200DA
-:10C2400030000000000000000810E420C900324067
-:10C250004D99032400C9023E680F90022400E900B2
-:10C2600030408C90030440C9003E400C900302040F
-:10C270003000000000000000800464208906225085
-:10C280008B9CC22400D9012E400B90422408B90196
-:10C2900022460D900A260289002C400A1002200036
-:10C2A00010000000000000001801060091404270DC
-:10C2B0000B90122C028B002E400B1022E410B100C8
-:10C2C000A240489012240899022E400890020600CD
-:10C2D0004000000000000000080404929120E048A3
-:10C2E0000B1202040291102CC00B100684C0B11076
-:10C2F0002048891102058091402E442A94020201AF
-:10C300000000000000000000B80D6140D85030145B
-:10C310000F850B21E080403E000F878BE10CF86C0D
-:10C3200032008406832004D8283E100C00032E031C
-:10C330005000000000000000981DF440AD103F4583
-:10C340000F9103FC187D201F410F900374C0F92149
-:10C350003E440F9201E440E9003D484FD003E60619
-:10C3600070000000000000001805F780FDE0337049
-:10C370000CDA032620C94031400E9A032400F980CC
-:10C380003B600F9C8336A0F9A1B0400F9103C6001B
-:10C3900070000000000000003810E290B8A02228D1
-:10C3A00028880A220288A02200088802C280B88851
-:10C3B00022040B8E032280B8D02A200B8802CE04E0
-:10C3C00030000000000000000805C580B161005881
-:10C3D00048168A04A0890122401A14880420B1401A
-:10C3E00028400B100A0420B12C204A0B1202C20173
-:10C3F00070000000000000001815A590BB40204010
-:10C40000089002244089426258081002E500B903EE
-:10C4100022C00B9002A41431002A440B9002C604DF
-:10C420006000000000000000A010A500F9013240EB
-:10C430008C90032700C19430400E90032400F90033
-:10C440003A400F90032400F9003260079027E80576
-:10C4500020000000000000002800A418F900BE44DD
-:10C460000F9003C400F900BE618F9003A400F10097
-:10C470001E400F10032408F9007E400F9003CA00ED
-:10C4800020000000000000002810A181F800320404
-:10C490000C00D32100D8043A149C80032101C80069
-:10C4A00036000C80132010C80032002C8003CA0410
-:10C4B000200000000000000028043A00BE8423850C
-:10C4C00008EC8368048A002F904DA0022801DA004E
-:10C4D00023B00AA0022A08DA0122800FA002CA00B3
-:10C4E000000000000000000028054C00BBF020C048
-:10C4F000083C0A0C00930128C88930064C008302CE
-:10C500002CF60830020400A30020C00A3002CA0042
-:10C51000500000000000000020011D11B300A0C069
-:10C520000850025C1087016D814932521EC387009A
-:10C5300028E00A32261F00370023E00B7202C800F1
-:10C54000400000000000000028081200B7823120DF
-:10C550000808370F08D7E03960197A0B5E0C83B2F0
-:10C560007DE00C7A0B3E02AFA0B1E00E7A03CA0266
-:10C570000000000000000000081DA010FB003EC0ED
-:10C580006FB043EC11FB003E400FB503EC20FB50B5
-:10C5900036000FB543E5A1DB783EC00FB403C206F9
-:10C5A00060000000000000004005FE00FFA03FA06A
-:10C5B0000DC9133E00CFD03DE802FF133E00CF82ED
-:10C5C0003F600CFC233E10EF8033F20CFC83100024
-:10C5D0007000000000000000A8119C40B5012DD0A3
-:10C5E0000858021C4057102D5A283102BC019710E0
-:10C5F0002D000A70028404CF0029C00AF0022A0428
-:10C60000600000000000000000009000B72A2D82AA
-:10C610000842223C0087110DCC8832021D00970091
-:10C620002CC40830021400A70023C0097082000047
-:10C6300020000000000000006014C020B0202C503A
-:10C640000810022DC093E22C210830020E0893003E
-:10C650002C400A30028C0093002AC00B30021804D0
-:10C660003000000000000000A815AC00F8C03E80BB
-:10C670002CA00B3F00C7603ED00CF00B3C00CF005D
-:10C680003E800CF00B2C00EF0033C10DF00B2A04A0
-:10C6900060000000000000008000EC40F3403E50CD
-:10C6A0008EB403EC10FB003E090FB013EC42EB001C
-:10C6B0003C008FB013C411E3003EC00EB003E00095
-:10C6C00030000000000000000110FC00FC8031225E
-:10C6D0000CA8033C00CF0033A00EF003DC00CF0019
-:10C6E0001FF00CF003F400CF0233C00CF002005432
-:10C6F000300000000000000081046F00BBC0227009
-:10C700000AB9422C108B00761183B002EC10AB00FA
-:10C710002EB00AB003EC048B00A2C028B002204067
-:10C72000100000000000000080056540B820224491
-:10C7300058340A2C008B0022844BB002EC008B0092
-:10C740006EC008B042E6048B0002C0083002A001AF
-:10C7500040000000000000000C000000B10020C0FC
-:10C760000A300A0C008B0324800B3002CC00A3009B
-:10C770006C000A30028D00830020C0183002820055
-:10C78000000000000000000000086400F800300015
-:10C790004CA00B2C02CF0022400EF503FC00CF0171
-:10C7A0003E000CF012DD02CF0233C04CF00B8003D0
-:10C7B0001000000000000000A419F000FC003F4041
-:10C7C0000FB103DC00BF013F000FF223FC10FF009C
-:10C7D0003F000FF001F484FF003DC04FF0136806E6
-:10C7E0007000000000000000C005FE40DF8033C87C
-:10C7F0000CF8033C0A9FC03FF008B8023E00FF80DF
-:10C800003FD80CF9612E406F903FE48FF1833000E8
-:10C8100070000000000000008010EC048B8023F00A
-:10C8200008B8023D40AB000E084822826C20BB00D5
-:10C830002FD048B0022C00BB002EC10BB002300438
-:10C8400030000000000000008805CC028301A0C574
-:10C8500008B04A4CA0802428C80932024C00B30812
-:10C860002ED129B23A0C84A3212CC84BB20A320132
-:10C870007000000000000000C015AC088B0022C052
-:10C8800008B0024C008821242109B0466C00BB0688
-:10C890002EC009B0022C10BB002EC00BB002300419
-:10C8A00060000000000000004015EC00CB0032C02A
-:10C8B0000CB9026C00CBC83AC02D900B2C08FB00C1
-:10C8C0003EC00D30422C00EB003EC00FB013000400
-:10C8D0007000000000000000E001BC00EF003DC05F
-:10C8E0000FF003BC06EF823F404EC983BC00FF003F
-:10C8F0007FC01CF0137C00FF043FC00FF003F80062
-:10C9000060000000000000004010AC00FB023EC0D0
-:10C910000EB003AC20D8403EC08C900B2C00FB0026
-:10C920003EC90DB033EC08FB023EC00FB00B5404FF
-:10C930002000000000000000C8052C00B3002FC03C
-:10C940000B3012FC0088A02E402894022C10BB044F
-:10C950002DC028B002EC00BB002EC00B72063200C6
-:10C960004000000000000000E0056C00B3002CE077
-:10C970000A1002CD0093002CC008B0024C00B30096
-:10C9800028C0083002CC00B3002CC00B30023A00A3
-:10C99000500000000000000020011E40B7802DE282
-:10C9A0000B5802DE0297812FA00868025E00B78153
-:10C9B0002FE0087902DE00B7812DE00B78023C0001
-:10C9C000400000000000000048080C00F3003CC0DC
-:10C9D0000E3203CC80D3003CC40C39034C08F31A4C
-:10C9E0003CC60D3003CE20F3083CC00F300352028A
-:10C9F0000000000000000000401DAC00FB002EC045
-:10CA00000BB003CC20EB003C800FB041AC00FB002E
-:10CA10003CC20FB003EC40FB003EC00F3003D00619
-:10CA20006000000000000000A805EE02C38030CEC8
-:10CA30000D9803ACA0C380B2C00FB003EC00FB00A4
-:10CA40003ED24FB0092E084B013EC024B003EA008D
-:10CA5000700000000000000048119C00870121C008
-:10CA60004850124C00870035C04B6002DC04B7010F
-:10CA70002DC00B70021C0087002DC10C7202F20445
-:10CA80006000000000000000C0009E00878023E0DE
-:10CA900008F802DE808F8121E04B7812DE043780B7
-:10CAA0002DE80BF8023E1887802FE0097902E0009C
-:10CAB00020000000000000004814CC008300A0C04B
-:10CAC0002830424C00830024C00B3806CC04B3004D
-:10CAD0002CC00B30020C0283002CC0083002D204A0
-:10CAE0003000000000000000E815A800CA003180F6
-:10CAF00008E0029802CE0033840BEA03E800BA0093
-:10CB00003F810FA0032800CA003E800DE003FA0415
-:10CB100060000000000000004800E000F8003E0057
-:10CB20000E8423A000F8003A100F8003E000F80004
-:10CB30003E100F8013E000F8003E000D8003D2008D
-:10CB400030000000000000000810E401F9003E4041
-:10CB50000C9A13E400C9003E400C9823E480F900CD
-:10CB60003E402C98036400F9003E400C9003C20440
-:10CB7000300000000000000080046404B9002E4072
-:10CB8000689C22E40289017C508D9822E480B920BF
-:10CB90002E5048100B2500B9442C40289000E0008E
-:10CBA000100000000000000018052400B9002E50FD
-:10CBB000089002E40489002E500A9202E400B900B1
-:10CBC0002C400891022400B9002E40089002C600B3
-:10CBD000400000000000000008040500B1012C40E6
-:10CBE000483002E40081002A404B1002C400B1002A
-:10CBF0000CC00890020C00B3002E40481202C20183
-:10CC00000000000000000000B80D6000B8013E0008
-:10CC10001C8007E150C8502E141E8503E141F850D6
-:10CC20003E140C85132148F8503E140C8543EE0346
-:10CC300050000000000000009819C400F9003E51A7
-:10CC40000F5003E500FD003F401DD003F410F90034
-:10CC50003E500F50009400F9003D400F9103E6064E
-:10CC600070000000000000001801E450CD003160A9
-:10CC700004D0033680C1422E501F9403E500E90220
-:10CC80002E720A90220508E9403E50409C0326007F
-:10CC900070000000000000003810C28288002215D9
-:10CCA000088002235888A02E280BAA42E28288809E
-:10CCB0002E382888022280B8A03A2808CD020E0417
-:10CCC00030000000000000000805C4008100A640FC
-:10CCD00028100A242695000D400B50027400850888
-:10CCE0002F4079D2AA1400A5012F4038500212011A
-:10CCF00070000000000000001815A4048900264000
-:10CD000008910224109D082F400BD002F4008D02E0
-:10CD10002F4009D0003400BD000B401870020604FB
-:10CD20006000000000000000A015C400C9053641E5
-:10CD30004C90632400D9003E400B90034408C90086
-:10CD40003E401510032400E9003C400C90032804E9
-:10CD500070000000000000002801A404F9003A401F
-:10CD60004F9803E400E9993E404F9003E420F90A0C
-:10CD70003E400E90436424F9083A420F908BDA004B
-:10CD800060000000000000002810A000C800120091
-:10CD90000C8043E000C84032000F8453E010F800DC
-:10CDA0003E000D80232000D8003E000F80030A04BF
-:10CDB0002000000000000000280538028200A18841
-:10CDC000086022C8008A4036A10BA002E910BA44CC
-:10CDD0002C800CA41229028A442E980BA4020A006B
-:10CDE000400000000000000028054C10830020E0F7
-:10CDF000183092C408934020E00B3002CD00B340BD
-:10CE00002CC00B3A42CD0083402CD00B38024A0094
-:10CE10005000000000000000A0411C00870021C05D
-:10CE2000287002D1009D8025C24B6002DC08B70249
-:10CE30002CC00A7402FE0087002DC00B340268006B
-:10CE40004000000000000000A8081E00C78431E078
-:10CE50000C6803D600978031A00F5813DE08F782C4
-:10CE60003DA00FF80BDE00C7803DE00F788B6A0213
-:10CE70000000000000000000081DAD80F3003EC16E
-:10CE80000FA023C002E9003E810F8003EC00FB00ED
-:10CE90003EC00DB0132C00EB003EC00FB003820269
-:10CEA00060000000000000000005FF32C780336012
-:10CEB0000F78033EC84E8023640CF8033A00CE80FE
-:10CEC00013EC06D8033A00DE8033A40CC803D0006C
-:10CED0007000000000000000A8119C00871001C035
-:10CEE0000B7002185084002B4408601298008613BF
-:10CEF00021C4885002188086002180086102EA045B
-:10CF0000600000000000000000009C00870021403D
-:10CF10000BF1025C800600210088D0025C008700D3
-:10CF200020898AF1021C0887102181884802C600E6
-:10CF300020000000000000002014CC108304A0C1D9
-:10CF40000B300A480C88066038080442EC018B0458
-:10CF500022C108300A2C008B002280002002D80455
-:10CF60003000000000000000A815BC00C3002280B3
-:10CF70008F9003640ACB02B2F2203512640AC90012
-:10CF8000B2400EA003240AC900A2402CA003EE0464
-:10CF900060000000000000008000EC00FB003C800E
-:10CFA0000F9003A500DB403ED04DB413A408FB0155
-:10CFB0003EC01CA0036C00FB043E504FA403E000E5
-:10CFC00030000000000000000110FC00FF0033C032
-:10CFD0000CE8432600DF80B3E00FF8037C00CD00AF
-:10CFE00033040CE0233440CD0023400CE003E00484
-:10CFF000300000000000000081046C10BB00A2D2D1
-:10D0000008280204608B1922C60EB18A2E408B902C
-:10D0100022C108A4822C008B90226448A402E00064
-:10D02000100000000000000080052C00BB00220062
-:10D0300008912E24009B0022C08BB012200488008F
-:10D040002240081022200088012AD0088042E000F7
-:10D05000400000000000000008040C00B304208021
-:10D060000810060410830020C08BB012000082005C
-:10D0700020C02810420906820028C0082002C201F0
-:10D080000000000000000000000D7C00BB003240EA
-:10D090002CB0032400D30032C05FB5030C02C100E2
-:10D0A000B2000CB00B0500C100B8C02C8013E00327
-:10D0B0005000000000000000A01DDC00FF001FC0A9
-:10D0C00087F001F400FF003FC00E7043FC107F00AA
-:10D0D0003FC00F7003FC00FF0037C00FE003E806FD
-:10D0E0007000000000000000C005F184FE6131D82E
-:10D0F0000CB2C3FCE0CC807BC00EF1037CE0CC839F
-:10D100003F200FF0CB3244DC843F254CF24330000B
-:10D1100070000000000000008010E448B01022DC25
-:10D1200008B602FD92888523F440F102ED00882DB7
-:10D130000E600BBC122C10A8822E000AFC22A00448
-:10D1400030000000000000008805C080B32228C025
-:10D15000083082CC0188002CC04A3202CC00010188
-:10D1600028004BB002A00080002C090834026201A4
-:10D170007000000000000000C015AC04B2102AC10D
-:10D1800008B002EC10898022C008B002EC088800C8
-:10D190002E4083B002A040B9802C210AB002F004D6
-:10D1A00060000000000000004015EC00FA00BAC06A
-:10D1B0002CB043EC00C0803EC08EB0034C0CC810B5
-:10D1C0003E808FB0038210D8823E280CB00B5004F2
-:10D1D0007000000000000000E001B680FD0237C1D1
-:10D1E0000FB003FC00FD003EC00FB053FC02FF0176
-:10D1F0002FA48BF0837C00AD022F40037003B80096
-:10D2000060000000000000004010AC00FB0432C0D1
-:10D210004CB0232C00F8403EC20CB0032C00FB4164
-:10D2200032C20FB0432D00C8503E400CB00B10046A
-:10D230002000000000000000C8052F90B95003C076
-:10D2400018F01A3C00B9322DE038F0603C04F900C7
-:10D250003EF00B7C802C00D9C02E400DF002320035
-:10D260004000000000000000E0054B24B21002C1A5
-:10D270002830026C04B2C12CC00830000C00B2008F
-:10D280002824033C0A000082C82CA0083002380081
-:10D29000500000000000000020011600B48021E4CE
-:10D2A000487B025E00B6806DE24879221E40AC8465
-:10D2B0002DE00BFA00524096802DE8193802080044
-:10D2C000400000000000000048080840F310B0C40F
-:10D2D000083A024C90F3103CCC0831030C49B040A2
-:10D2E00030050F3007214043013EC21C304312027B
-:10D2F0000000000000000000400DBC10FC103FC505
-:10D300000FF101BC04FF043FC40FB14BFC64F700F4
-:10D3100037C00F7253AC44FF013FC90FF403D0066E
-:10D320006000000000000000A805EC08FA003EE0E4
-:10D330000CB0032C00CB023ECA0FB2072E00DB025A
-:10D3400032080F31032C00CB043E800C35032A0039
-:10D35000700000000000000048119400B5002DC8C6
-:10D3600008700A1C2287002DC90BF2829C80A6003F
-:10D37000098B0B700A1C0285002D40087002920474
-:10D380006000000000000000C0009E00B7802CEC90
-:10D39000087B025E4085892DEC8B7B024E848F805A
-:10D3A00025640BFA02120897806FE1087A023000B8
-:10D3B00020000000000000004814CC20B3642CC002
-:10D3C0000830060C10838A6CC05B3042CC00AB1076
-:10D3D0002CF20B30020D0093042CD508300A920475
-:10D3E0003000000000000000E815BB00FEC03E80D9
-:10D3F0002CA0036800C6403F800FA0026800CE4406
-:10D4000036904F60031B70DED83FA00C20033A0417
-:10D4100060000000000000004800E040F8103E00FE
-:10D420000F8003A010F8423E101F8003A000E80CFC
-:10D430003A041F8003E000E8457E022F8003D200FB
-:10D44000300000000000000008106400E980324055
-:10D450000F900B0408D98036400F10132408F900F0
-:10D4600072700F91132410C9103E690C90030204CE
-:10D47000300000000000000080046408B9802240F1
-:10D480000B1002240089C422520B90422400B900E0
-:10D4900022E00B90122404D94A2E60089003600009
-:10D4A000100000000000000018052400B118224000
-:10D4B0000B900224008B2026490B90026400B900D7
-:10D4C000A2400B908A24008B002C40A890020600FA
-:10D4D000400000000000000008040484B120A048BF
-:10D4E0000B11060400830000404B11020449B110E7
-:10D4F00028400B1002244191002C500810024201D8
-:10D500000000000000000000B80D6940E85032142F
-:10D510000F869321E2C800360A0B868B61A8F8407B
-:10D5200022800F82A32108C8023E000C80432E03F4
-:10D530005000000000000000981DF448FD123E4419
-:10D540000F1203C4007D011E400B9203E480F520FE
-:10D5500036400F9003D4907D003D400F9403E606C3
-:10D5600070000000000000001801F6C1DD88327272
-:10D570000C98032622DD003F622C998346A0C94007
-:10D58000B2400FD8032400FD0033512CD88306008D
-:10D5900070000000000000003810E3C288C0223094
-:10D5A000088C4222118A012E00088852230080A391
-:10D5B0002A004B804222A0B80022280884028E0450
-:10D5C00030000000000000000805C400812D204844
-:10D5D000681480042081002E400B12120424812044
-:10D5E00020400B94320490B900204048104A0201B8
-:10D5F00070000000000000001815A40089202240DF
-:10D60000089012240089002E4008900224088940C6
-:10D6100022500BB0022420B909A2440890028604CB
-:10D620006000000000000000A015E400D908B2402E
-:10D630004C10230404D9C13E408F900B0408C14014
-:10D6400012400F90432404F14130780C90032804D9
-:10D65000700000000000000028018664F9803E4050
-:10D660000F900BE400F9983E402F1003A402F9102C
-:10D670003E400F900BE640F9903E600F9003CA00C9
-:10D6800060000000000000002810A000C841320027
-:10D690000C80072010C8103E0C0E8003E004C80068
-:10D6A000BA000F81432000F8703E000F000B0A04FF
-:10D6B0002000000000000000280539028E20A38011
-:10D6C00028E00A3810AE043DA18EE002F8008E007A
-:10D6D00076800B60037800BE402F820BA003CA0047
-:10D6E000400000000000000028054D008B8822C08B
-:10D6F0001830020C0083442CD01B3012CC0683005F
-:10D7000020C10B30820C01B3002C400B30020A0008
-:10D710005000000000000000A0011C00850020CC8B
-:10D720000870061C84A70129C00B7222DC80873494
-:10D7300061800B10025C00B7002DC00B7002E80086
-:10D740004000000000000000A8080E008C8031E0BE
-:10D750000CFE023F00C5802DE00E7803DFA0C7A0BD
-:10D7600021600F78031E80F7803DE00F78032A02C6
-:10D770000000000000000000081DAC00F9003EC0E1
-:10D780000FB003EC00FA003EC006B003EC80FB28AB
-:10D7900036D84FA003EC10FA003E500F3003C206FB
-:10D7A00060000000000000000005FA00CC80B3E03B
-:10D7B0000FF8033E00CF903F604FF8C33E00EF806C
-:10D7C00033F00C7A033E70C59033F10C78030000FF
-:10D7D0007000000000000000A811B800870021C000
-:10D7E0000B704A1C0087102DC04B710A3C448F12ED
-:10D7F00021860D72021E008700234008700A2A0449
-:10D80000600000000000000000009C00840025C0B3
-:10D810000B710A0C00A7122D840B700A1C00B708AC
-:10D82000234009F31A5C869708254008700200001F
-:10D8300020000000000000002014CC20812026C021
-:10D840000B30022C0082422C800B30220C089B8073
-:10D8500020E00920024D08920024E508300A08045F
-:10D860003000000000000000A815AE82CAE0B7C07A
-:10D870000FF0133C0AC9C83E400FF0033C04FF847C
-:10D8800032C00D90137C00D900F6C02C10032A047E
-:10D8900060000000000000008000E400F3003AC1D6
-:10D8A0004FB003EC00F9083C000F3013EC00EB0420
-:10D8B000BE180F9023AC60E9023A404F9003E0009D
-:10D8C00030000000000000000110FC00CA0033C05E
-:10D8D0000CF003FC00CD027F400CF0423C00CF086E
-:10D8E00037100FD003FC10CD083F662CD90300443D
-:10D8F0003000000000000000810463808BE022C043
-:10D9000008B022EC00D8806E2068B01A2C01FB0011
-:10D9100022180B88434C0088A02CC01D9002204088
-:10D920001000000000000000800108808B2022C051
-:10D9300008B022EC0088882E6248B01ACC008B0018
-:10D9400026C04A8802EC0008842E4009900220007C
-:10D95000400000000000000008040000830060C0D8
-:10D96000083002CC0090066C000830028C00A30442
-:10D9700020008B00064C2180006CC049100A020177
-:10D980000000000000000000000D6C00CA00B2C1E1
-:10D9900088B403EC10C8002E000CB00BBC088F003C
-:10D9A0003600068003EC80C8023FC10C90030003E0
-:10D9B0005000000000000000A01DF000FF003FC06C
-:10D9C0000F7283FC18FC033F008F70037C00FF0084
-:10D9D0003D000FC0238C06FC003F400ED003E8063C
-:10D9E000700000000000000000C541037040DC1022
-:10D9F00037040DC1037040DC1037040DC1017040C5
-:10DA00009C10171405C1037040DC1017040DC031C1
-:10DA1000000000000000000000C5440571015C40EA
-:10DA2000571015C40521015C40571015C401710140
-:10DA30005C40171005C40571055C41571015C011F5
-:10DA400050000000000000000080020120804820FB
-:10DA500012080482012080482012080482012080DC
-:10DA600048201208048201208048201208048020E7
-:10DA7000000000000000000000800000600058006E
-:10DA80001600058001600058001600058005600042
-:10DA900058001618018001600058005600058020CB
-:10DAA000000000000000000000C5480522011C80A5
-:10DAB000472011C80472015C80572011C8047241CC
-:10DAC0005C80572011C80472011C80472015C031AA
-:10DAD000500000000000000000C540006000180079
-:10DAE0000600018000600018000600018000600050
-:10DAF0001800060001800060001800060001803157
-:10DB0000000000000000000000C548042201088059
-:10DB10004220108804220108804220108004230142
-:10DB20000880422010880422010800422010802131
-:10DB3000000000000000000000C54A05428150A01E
-:10DB4000442C110B04428110E05428110200428140
-:10DB500010A04438110B0542811021142815003102
-:10DB6000500000000000000000800C01570054C06D
-:10DB70001530044C01130054C01570054C015300BE
-:10DB800054C01530854C01130054C0153005402198
-:10DB90004000000000000000008000004000100075
-:10DBA000040000400010001062040001080441005D
-:10DBB0001000441811000010001080040001012022
-:10DBC0000000000000000000004560020800820024
-:10DBD00020800860021800820020800820000820B1
-:10DBE000820000808020021800820020800801311D
-:10DBF000500000000000000000C54005640158000E
-:10DC000056001580056001580056401580056001DA
-:10DC100058005600158005600158007600158031C7
-:10DC2000000000000000000000C540036000D800B4
-:10DC300036000D80036000980036001D88056000E6
-:10DC4000D80016000D80036000D88046000D80319A
-:10DC5000000000000000000000C5420430810C20DC
-:10DC6000430810C20430810C22410818C2043089D4
-:10DC70000C20030810C20430810C20430810C0108F
-:10DC800050000000000000000080000030000C0088
-:10DC9000030000C00030000C00030000C000300092
-:10DCA0000C00030000C00030000C00030000C001A5
-:10DCB00000000000000000000080020130804C20C5
-:10DCC000130804C20130804C20130804C3013080C3
-:10DCD0004C20130804C20130804C30130804C021CA
-:10DCE000000000000000000000C5420560815820CF
-:10DCF0005608118205608158205608118300608102
-:10DD0000582046081182046081183056081580306A
-:10DD1000500000000000000000C5420020800820E4
-:10DD20000208008200208008200208008200308063
-:10DD300008200200008200208008200308008031B3
-:10DD4000000000000000000000C5420460811820AF
-:10DD500046481192046081192046281182003481BE
-:10DD60001820464811920460811820430811801140
-:10DD7000000000000000000000C5600458015600CB
-:10DD80005580156004580116005580016004180183
-:10DD90005600458011600458011600418011403141
-:10DDA000500000000000000000800601418050602B
-:10DDB00014180506014180506004180506004180D2
-:10DDC00010601418050601418050601418050020E9
-:10DDD0000000000000000000000002010080402060
-:10DDE0001048041201008041201008040201048040
-:10DDF00040205048041201008440201008040020F4
-:10DE0000000000000000000000C546035180D460FF
-:10DE100030180D46035180D56035180D4603058036
-:10DE2000D46015180D46031180D46035180D4031AB
-:10DE3000500000000000000000C5460571805C60D5
-:10DE4000971815C60571815C20571815C603708197
-:10DE50005C60571811C60531815C60771815C031B8
-:10DE60000000000000000000004546037180DC60F7
-:10DE700037180DC6037180DD60371805C60175813E
-:10DE8000DC6037180DC60371845C60171819C01167
-:10DE900000000000000000000045460571815C6044
-:10DEA000571814860571815C60571805C6043181C6
-:10DEB0005C60571815C60571805C60431815C01169
-:10DEC00050000000000000000000020120804820F7
-:10DED0001208048201208048201208048201708008
-:10DEE000482012080482012080482017080480007E
-:10DEF0000000000000000000000006016180586082
-:10DF0000161841860161801860063C058604618010
-:10DF10001860161801860061805860561815801028
-:10DF200000000000000000000045400570015C009A
-:10DF3000570015C00470015C00570010C004700049
-:10DF40001C00470011C00470015C00470001C011B3
-:10DF500050000000000000000045420060801820D2
-:10DF60000608018200608018200608008200608098
-:10DF70001820060801820060801820060801801120
-:10DF8000400000000000000000054204208108203D
-:10DF90004208108204208108204208118204208057
-:10DFA00008204208108204208108204208008011C5
-:10DFB00000000000000000000045420540815020A4
-:10DFC000540815020540811020540C154200408170
-:10DFD000502044081102054081102014080500114A
-:10DFE00050000000000000000001030150C0543048
-:10DFF000150805420150C05430150C05430150C0AE
-:10E000005430150C05420150C05430150C05401019
-:10E010000000000000000000000008004200108026
-:10E0200004200188006200108004001108004200F2
-:10E03000108004200108004201108004200100002B
-:10E040000000000000000000004542020080802027
-:10E050002008080202208080202028000202008080
-:10E060008020200A080202008000202008080011F9
-:10E07000500000000000000000454005600158000D
-:10E08000560005800560015808560015800760029B
-:10E090005800564015800560031800760015801161
-:10E0A000000000000000000000C540036000D80030
-:10E0B00036000D80016000D80A36000D8005700919
-:10E0C000D80136000D80036000D80057000D800095
-:10E0D00000000000000000000000000430010C00FF
-:10E0E000430010C00030010C00432010C004600148
-:10E0F0000C00434050C10430010C00460010C00029
-:10E1000000000000000000000000000030000C00D3
-:10E11000010000C00030000C00030000D00020000F
-:10E120000C00034000C00030000D00020000C000E1
-:10E1300000000000000000000000050131404C50CC
-:10E14000131004C40131404C50131404C511314163
-:10E150004C50131404C50131404C50131404C0003A
-:10E1600000000000000000000000230568C15A30D4
-:10E17000568C11A30468C11A30568C11A30568C0CF
-:10E180005A30468C11A30468C15A30168C15800091
-:10E190000000000000000000000000002000080057
-:10E1A00002000080002000080002200090002000F3
-:10E1B00008000240008000200009000200008000EA
-:10E1C0000000000000000000000008446201188404
-:10E1D0004621118844621118844601118844621056
-:10E1E0001884462111884462111884062111800088
-:10E1F0000000000000000000000000455011540421
-:10E200005501114045501114004501114044500082
-:10E2100014044500154044501114045501114000E8
-:10E2200000000000000000000000082142085082A9
-:10E2300014208508214208508204208508214208C4
-:10E2400050821420050821420850821420850000C5
-:10E25000000000000000000000000A01028040A051
-:10E260001028040A01028040A01028400A01028000
-:10E2700040A01028440A01028040A0102804000099
-:10E28000000000000000000000000C035300D4C098
-:10E2900035300D4C015300D4C035100C4C035300E5
-:10E2A000D4C035300D4C035300D4C035300D400080
-:10E2B00000000000000000000000080572015C8002
-:10E2C000172005C80672015C80572015C80272012C
-:10E2D0005C80572015C80572015C80372011C00092
-:10E2E00000000000000000000000231840C61231AA
-:10E2F000848C21230848C61230840C61231048C244
-:10E300001231848C01230848C61231048C6100004C
-:10E31000000000000000000000003FFF4FFFD3FF9F
-:10E32000F4FFFD3FFF4FFFD3FFF4FFFD3FFF4FFF23
-:10E33000D3FFF4FFFD3FFF4FFFD3FFF4FFFD0000CD
-:10E3400000000000000000000000000000000000CD
-:10E3500000000000000000000000000000000000BD
-:10E3600000000000000000000000000000000000AD
-:10E37000000000000000000000002CDB0FB6C2CD42
-:10E38000B0B36C2CDB0B36C2DFB0B36C2CDB0B7E76
-:10E39000C2CDB0B7FD2CDB0B36C2CDB0B36C0000E4
-:10E3A00000000000000000000000333C4FCF13339A
-:10E3B000C4CCF1333C4CCF133FC4CCF1333C4CFFC5
-:10E3C0001333C4CFFD333C4CCF1333C4CCF1000026
-:10E3D000000000000000000000003B7E4EDF93B70D
-:10E3E000E4EC793B1E4EDF93BFE48DF93B784EFFA2
-:10E3F00093B7E4EDFD3B1E4EDF93B784EDF90000CB
-:10E4000000000000000000000000010270409C10AD
-:10E41000271C09C10130401C10670409C10270416A
-:10E420009C11071401C10270409C50071C01C000E0
-:10E4300000000000000000000000040571015C40C5
-:10E44000571055C40131005C40571015C4057101C7
-:10E45000DC4017181DC40571055C4057101DC00035
-:10E4600000000000000000000000020120804820A1
-:10E4700012000482012080482012080482012080BA
-:10E48000482012080482012080486012080480009D
-:10E490000000000000000000000000006000180004
-:10E4A0000600418000600018004600018000600006
-:10E4B0001000061001800060001820461001800046
-:10E4C00000000000000000000000080472011C8031
-:10E4D000472011C80472011C80072011C804730072
-:10E4E0001C80472011CC0472011C80472011C00001
-:10E4F00000000000000000000000000060001800A4
-:10E5000006000184006000180006000180006040E1
-:10E510001800060401810060001800061401800044
-:10E520000000000000000000000008042201088034
-:10E530004270108C04220108C002201088042200BE
-:10E540000880425010080422010900424010800057
-:10E55000000000000000000000002E044A8112A00C
-:10E5600044A8112A044A8112A004A8112A044B804D
-:10E5700012A04488012E044A811220049801000050
-:10E58000000000000000000008C00E00530014C08E
-:10E590000530014C00530014E00530014C005300DD
-:10E5A00004C00530004C00030014C00530004010CA
-:10E5B000000000000000000008C00400400010003F
-:10E5C0000458010400400010000400010000410054
-:10E5D00004004458104400000011800450104030E2
-:10E5E000000000000000000008C0400200008000A1
-:10E5F0002000080040000000002000080002000089
-:10E600008400000008400200008000200008403024
-:10E61000000000000000000008C040006001180079
-:10E6200046000180066001980046001180046001E8
-:10E630001800460011800420011800660011803087
-:10E640000000000000000000100140006000980081
-:10E6500026000980026001980006000C800260001C
-:10E660001800060001800260009880060001820008
-:10E6700000000000000000004045420030810C20F6
-:10E68000430810C22430818C20030810C20420806B
-:10E690000C20030818C20430810C20430818C01154
-:10E6A00050000000000000004000000030000C009E
-:10E6B000030000C04030000C000300008000300068
-:10E6C0000C00032000C00030000C00032000C0003C
-:10E6D00000000000000000004001021030800C200B
-:10E6E000030800C20030800C20030800C201208013
-:10E6F0000C20032C00C20030800C30432C00C000E2
-:10E7000040000000000000004045420460811820E5
-:10E710004608118204608018204608118204608136
-:10E720001820460C11C20460811830460C11C0112B
-:10E73000500000000000000040014200208008203E
-:10E740000228008200208008200208008200208029
-:10E7500008200208018200208008200308018000B0
-:10E7600000000000000000005001420460811820F9
-:10E7700046281182046080182046081182046081B6
-:10E780001820460810820460811820430810800079
-:10E79000000000000000000040454004500114004B
-:10E7A00045001140250000140045001140045001AF
-:10E7B00014004500004004500140000100004211D7
-:10E7C000500000000000000048000600418010607A
-:10E7D0000418010600418010600418010600418001
-:10E7E0001060041801060041801060041801000048
-:10E7F00000000000000000004800020500804021E9
-:10E80000100804000100804020100804020100806C
-:10E810004020500814021100844020100814000009
-:10E820000000000000000000404546015180D46017
-:10E8300035180D46035180D46015180D46035180DC
-:10E84000546015180D46035180D46035180D4011E1
-:10E8500050000000000000000001460471811C60AF
-:10E86000451811D60471811C60671811C6047181A6
-:10E870009C60471811C60471811C60671811C000A4
-:10E8800000000000000000004005460271809C600E
-:10E89000271809C60071809C60671809C60271803C
-:10E8A0009C61271801C60271809C60071801C00096
-:10E8B00000000000000000005045460571815C60CA
-:10E8C000571855D60171815C60571815C6057181BE
-:10E8D0005C60571818C60571815C60431818821176
-:10E8E0005000000000000000400452012080482039
-:10E8F00012480490012080492012080482012480DB
-:10E9000048201248009201208048201748048001C6
-:10E910000000000000000000400006006180186058
-:10E92000063C0186006180186046180186006180FF
-:10E930001860061801860061801860461801800181
-:10E9400000000000000000000041600478011E008B
-:10E95000478011E02478011E00078011E00478014F
-:10E960001E00478011E00438011E00478011C011CD
-:10E9700050000000000000004001120060801820DC
-:10E980000648019200608019200608018200648018
-:10E9900018200648019300208018200648018000B6
-:10E9A0000000000000000000400142042081082017
-:10E9B000420810820420810820020810820420816D
-:10E9C00008204208108A0460810820420810800054
-:10E9D000000000000000000040454204408110207B
-:10E9E00044081102044081102004081102044081EF
-:10E9F0001021440801020450811020040801001174
-:10EA000050000000000000004000030050C014301F
-:10EA1000050C01430050C01430050C014300508028
-:10EA200014300508014A0050C014300508014000A8
-:10EA300000000000000000004000080042001080BC
-:10EA40000420010800420010800420010800420058
-:10EA500010800420110000420010800420110010DA
-:10EA6000400000000000000040454202008080207D
-:10EA70002008080200008080202008080202008090
-:10EA80008020200808020200808020200808001151
-:10EA9000500000000000000040014000600118002C
-:10EAA00046001180066001180046001180046001D4
-:10EAB00018004600118004600118006600118010E3
-:10EAC00000000000000000004001400264009800C7
-:10EAD0002600099006600198002640098002600027
-:10EAE0009800260000900260009800070001800056
-:10EAF00000000000000000004045600438050E00E2
-:10EB0000438010E04438010E00438010E0043801D7
-:10EB10000E00438018A00438010E004680188011B2
-:10EB200050000000000000005000010030400C10B8
-:10EB3000030400C50030400C10031400C100304035
-:10EB40000C10030400874030400C100204008000C9
-:10EB500000000000000000004004050035400C509B
-:10EB6000031400D50431410C50035C00C500310092
-:10EB70000C50031000940031400C50431000C200B0
-:10EB800000000000000000004045430520C118308F
-:10EB9000460C11970060C01830461C11830460C1F8
-:10EBA0001830520C11870460C11830460C118011C6
-:10EBB000500000000000000040010000214008005B
-:10EBC00002000080002000080002000080002000F9
-:10EBD0000800020000800020000800020000800001
-:10EBE0000000000000000000400148442201188499
-:10EBF0004621119800621018844420118844621143
-:10EC00001884422111804462111884462111800029
-:10EC100000000000000000004045400450111404B2
-:10EC2000450011410050101400450111404450119D
-:10EC30001404450101404450111404050101401120
-:10EC40005000000000000000400008204208108230
-:10EC50000420010820420810820420810820420874
-:10EC6000108204228108205208108A0422810000A8
-:10EC7000000000000000000000040A01028440A11E
-:10EC80001028000A01028040A01028040A01028016
-:10EC900040A0102C140A00028040B0102C14000078
-:10ECA000000000000000000040454D035340D4D058
-:10ECB00035300C4D035340D4D035340D4D03534003
-:10ECC000D4D035340D4D021340D4D035340D40111D
-:10ECD00050000000000000004001080472011C8088
-:10ECE000472015C80472011C80472011C804721106
-:10ECF0001C80472611C84472011C90672611C00071
-:10ED000000000000000000000000230840C612318F
-:10ED1000848C01030848C61230840C61231848C251
-:10ED20001231848C01030848C61231048C010000A2
-:10ED3000000000000000000000003FFF4FFFD3FF75
-:10ED4000F4FFFD3FFF4FFFD3FFF4FFFD3FFF4FFFF9
-:10ED5000D3FFF4FFFD3FFF4FFFD3FFF4FFFD0000A3
-:10ED600000000000000000000000000000000000A3
-:10ED70000000000000000000000000000000000093
-:10ED80000000000000000000000000000000000083
-:10ED9000000000000000000000002DFB0FB6C2CDF7
-:10EDA000B0B7FD3FFB0B36C2DFB0FB6C2CDB0B7E3C
-:10EDB000C2CDB0B7FD3FFB0B36C2CDF4B7FD0000AE
-:10EDC0000000000000000000000033FC4FCF1333B0
-:10EDD000C4CFFD3FFC4CCF133FC4FCF1333C4CFF90
-:10EDE0001333C4CFFD3FFC4CCF1333F4CFFD0000F1
-:10EDF000000000000000000000003B7E4EDF93B7E3
-:10EE0000E4EDF93FFE4EDF93B7E4EDF93B7E4EC7EC
-:10EE100093B7E4EC61231E4EDF93B784EC610000EE
-:10EE20000000000000000000000000C524A14A24EA
-:10EE3000630114024400810B2871021082403811D2
-:10EE4000410450081882873831C32C520A10000040
-:10EE5000000000000000000000000845128144800E
-:10EE600071211C0A071A8102A0522014480712813E
-:10EE7000C680602008884702014A80702010000088
-:10EE80000000000000000000000002C52C014A0044
-:10EE900052091C800724210808710210804520A116
-:10EEA0004928520114C0450091C4007202100000AC
-:10EEB0000000000000000000000002072001C10067
-:10EEC0007109108007000101007008188007000117
-:10EED000892052010C8046308145046000100000FA
-:10EEE0000000000000000000000008C202200088AE
-:10EEF00020220008C22280408802220008820AA044
-:10EF00000CA802220008800A00808C022200000067
-:10EF10000000000000000000080002430000402044
-:10EF200030080440413010C8000000000203001007
-:10EF3000C000110800C2431080C020010800020078
-:10EF40000000000000000000080008C30A20C18C77
-:10EF500012220488013620C3081228040801040084
-:10EF60004AA8220104C8412630C0880221000200BC
-:10EF70000000000000000000080008000A10C18026
-:10EF800032210C88430280448012290408420A90EE
-:10EF90008A8000200448030A1082800020000200BA
-:10EFA000000000000000000000000A8702A180AC01
-:10EFB0004329148A8402A100AC412010080626319E
-:10EFC00080A46020144A44328181AC602A18020077
-:10EFD0000000000000000000080008072201C580B2
-:10EFE00073211CC8072A010C807220104847261183
-:10EFF000C58073201C88072A1149807020140200E4
-:10F000000000000000000000080000451031C90C9D
-:10F0100073021CC04704010A0C510A1082472031B8
-:10F02000C80072021C40053011C4007201180200B1
-:10F030000000000000000000081010062401450434
-:10F04000518118904714010404718810120534018D
-:10F050004404514018D0073801C404520114C204BA
-:10F060000000000000000000000000870021890C63
-:10F0700060011CD0452401C10C42010000C52031B3
-:10F08000410840001880450021410C70421CC2001C
-:10F090000000000000000000000002011C80C420ED
-:10F0A00031081042420880C62031090020031C901C
-:10F0B000C42001490C424310804420310810000054
-:10F0C0000000000000000000000030832030480CE9
-:10F0D00032401090812420C80432401020C3208088
-:10F0E000C800024A0CA0012410C8083241100000D8
-:10F0F0000000000000000000001090030000C904A0
-:10F10000304000900020008000104010004020108F
-:10F11000C20000800820430810810032400CC00467
-:10F12000200000000000000000003000400000004F
-:10F13000100000F01020000000100000F0108040CF
-:10F140000000004000F01090800000000000C000AF
-:10F1500000000000000000003C3C108090400000D7
-:10F1600000801090A09000000000001090808000AF
-:10F1700000000000109080900000000040108F0FF1
-:10F180000000000000000000000024C6BA06C01CF9
-:10F19000492861142B1C0E403FD9BFD9AABC1A5F65
-:10F1A0000010A6503B61B325BC4019BFFFE98000A9
-:10F1B0000000000000000000000010921494800C79
-:10F1C000073F2B948614848028000049140486127B
-:10F1D0008000412734D0908492002D8A211E800027
-:10F1E000000000000000000000000000000008A275
-:10F1F000B10101000000000884B17828000000007F
-:10F2000008B13214140000000008A8235421400063
-:10F21000000000000000000000003FFFFFFFC000F2
-:10F220000000002FFFFEF7C0000000002FD7FEEF08
-:10F23000C0000000003FFF7FFFC000000000000092
-:10F24000000000000000000000003FFFFFFFC000C2
-:10F250000000000FEF77FFC0000000003EFFFEEF50
-:10F2600040000000003FFFBFFF4000000000000022
-:10F27000000000000000000000003FFFFFFFC00092
-:10F280000000003FFFDFFFC0000000003FFFFFFF66
-:10F29000C0000000003F7F2FFFC000000000000002
-:10F2A000000000000000000000003FFFFFFFC00062
-:10F2B0000000001FFFFFEFC0000000001FEFEFEF96
-:10F2C000C0000000002FFFFFFFC000000000000092
-:10F2D000000000000000000000003FFFFFFFC00032
-:10F2E0000000003FFFEFFFC0000000002FAFDFFF76
-:10F2F000C0000000003FEFFFF7C00000000000006A
-:10F30000000000000000000000003FFFFFFFC00001
-:10F310000000003FDFDFFFC0000000003FFFFFFFF5
-:10F32000C0000000001FFFDFFFC000000000000061
-:10F330000000000000000000000002C424A1002C16
-:10F34000520B18C2862CA18038620A0840C42CA136
-:10F350000828420B14008514A10828430A10000055
-:10F3600000000000000000000000080412010380FB
-:10F3700061201008071241428070201C08041A0105
-:10F3800084814020180846368105806320100001E2
-:10F390008000000000000000000000842421000C18
-:10F3A00052021400872821810872061C82842021C1
-:10F3B0004818420354804530254A18530210000172
-:10F3C000200000000000000000000804220101806D
-:10F3D000422018C8442201808442201C8804220153
-:10F3E0000080402010884436014080410010000019
-:10F3F0000000000000000000000000C00820000C19
-:10F4000022030440810020840803000080C2002001
-:10F41000C408000308888216A040883222800000B9
-:10F42000000000000000000008000201008004202D
-:10F4300010080CC2121084C82212080402030088AB
-:10F440000021000C0C404130008420100800020014
-:10F450000000000000000000080008820620088C60
-:10F4600032220C888126204D882322808883062022
-:10F4700008880023048A8136204B8832220000004D
-:10F4800000000000000000000800080202000980DF
-:10F49000322004886022008984002008980002003D
-:10F4A000008000200008023A8048803020000200DE
-:10F4B000000000000000000008000AC41AA180A893
-:10F4C000412A10CAC71AA104AD712A184AD406B13C
-:10F4D00000A8712A100884262906AC522A100200BE
-:10F4E0000000000000000000080008042A0141801C
-:10F4F00042201C00040A01098451201C8844020196
-:10F5000008804020104A4702014880632010020012
-:10F510008000000000000000080000C41021810CE1
-:10F5200041020C00C020610D0E72021C40C4083163
-:10F530000418420210808720B1C40C53021000004E
-:10F540000000000000000000081020072401CC008B
-:10F55000724014000424010800734110C0073011E8
-:10F56000CC007101100204208146104240100204B8
-:10F570000000000000000000080000C51021000885
-:10F5800062021C90C52421000C70821C10C4203122
-:10F59000880240061C008500A1000C4042000200C9
-:10F5A000000000000000000000002205148001207F
-:10F5B00030080C42060080012451080C02410080F2
-:10F5C0004C2000080C304204000420000800000019
-:10F5D0000000000000000000000010C62420000C05
-:10F5E00032C20480C73020000C53C20410C22870FD
-:10F5F0000C0902024C80810430090C024210000008
-:10F60000000000000000000000108001380002002F
-:10F6100012400C200734040200630108100024107B
-:10F620000400020104820108800910024010000455
-:10F6300030000000000000000000302010800000BA
-:10F64000208000F02010800000208000D08000008A
-:10F650004000000000301000800000000000CC409E
-:10F6600000000000000000003C3C10808000000012
-:10F67000000010908080000000000010908000903A
-:10F68000800010000010A0800000002000108C08F6
-:10F6900000000000000000000000341ABE178000C7
-:10F6A0003E40266FBAE32480001659BD828182D87D
-:10F6B000800000199986806480C03FD9998000013C
-:10F6C000F000000000000000000006160294001682
-:10F6D000C01694829016108021182828020A020869
-:10F6E00080000000000282801400011411A040007C
-:10F6F000000000000000000000000000000008847E
-:10F700000284A8800000000891228441A2082401FC
-:10F7100030000000000000000008840144010000E7
-:10F72000000000000000000000003FFFFFFFC000DD
-:10F730000000003EF7FFF7C0000000002FE7B7FF12
-:10F74000C0000000002FFE7FF7C000000000000096
-:10F75000000000000000000000003FFFFFFFC000AD
-:10F7600000000036BFFEDFC0000000000FF7DFFF23
-:10F77000C0000000003DB7B7EFC00000000000006F
-:10F78000000000000000000000003FFFFFFFC0007D
-:10F790000000001FDFDFFFC0000000000FDFDFFF01
-:10F7A000C0000000003FEFFFFFC0000000000000AD
-:10F7B000000000000000000000003FFFFFFFC0004D
-:10F7C0000000003FBF7FFFC0000000003FFF7FF749
-:10F7D000C0000000003FDFFFFFC00000000000008D
-:10F7E000000000000000000000003FFFFFFFC0001D
-:10F7F0000000003F7EFFFF40000000003FFEFFFFD3
-:10F80000C0000000003FFFFFFFC00000000000003C
-:10F81000000000000000000000003FFFFFFFC000EC
-:10F8200000000037FF6FFFC0000000003FFFFFFF38
-:10F83000C0000000003FFFFFFFC00000000000000C
-:10F8400000000000000000000000000000000000B8
-:10F8500000000000000000000000000000000000A8
-:10F860000000000000000000000000000000000098
-:10F870000000000000000000300020010200000035
-:10F880003000430C000000000000000000000000F9
-:10F890000000000000000000000000000000000068
-:10F8A0000000000000000000000000000000000058
-:10F8B0000000000000000000000000000000000048
-:10F8C0000000000000000000000000000000000038
-:10F8D0000000000000000000000000000000000028
-:10F8E0000000000000000000000000000000000018
-:10F8F00000000000000000000030C00000000030E8
-:10F90000C000000000000000000000000000000037
-:10F9100000000000000000000000000000000000E7
-:10F9200000000000000000000000000000000000D7
-:10F9300000000000000000000000000000000000C7
-:10F9400000000000000000000000000000000000B7
-:10F95000000000000000000000000030C030C000C7
-:10F960000000000000000000000000000000000097
-:10F970000000000000000000000000000000000087
-:10F980000000000000000000000000000000000077
-:10F990000000000000000000000000000000000067
-:10F9A0000000000000000000000000000000000057
-:10F9B00000000000000000000030C030C030C03047
-:10F9C000C000000000000000000000000000000077
-:10F9D0000000000000000000000000000000000027
-:10F9E0000000000000000000000000000000000017
-:10F9F0000000000000000000000000000000000007
-:10FA000000000000000000000000000000000000F6
-:10FA10000000000000000000000F00000000000FC8
-:10FA200000000000000000000000000000000000D6
-:10FA300000000000000000000000000000000000C6
-:10FA400000000000000000000000000000000000B6
-:10FA500000000000000000000000000000000000A6
-:10FA60000000000000000000000000000000000096
-:10FA70000000000000000000003FC0000000003F48
-:10FA8000C0000000000000000000000000000000B6
-:10FA90000000000000000000000000000000000066
-:10FAA0000000000000000000000000000000000056
-:10FAB0000000000000000000000000000000000046
-:10FAC0000000000000000000000000000000000036
-:10FAD0000000000000000000000F0030C030C00F28
-:10FAE0000000000000000000000000000000000016
-:10FAF0000000000000000000000000000000000006
-:10FB000000000000000000000000000000000000F5
-:10FB100000000000000000000000000000000000E5
-:10FB200000000000000000000000000000000000D5
-:10FB3000000000000000000000136B00C000CF2C8C
-:10FB40004000000000000000000000000000000075
-:10FB500000000000000000000000000000000000A5
-:10FB60000000000000000000000000000000000095
-:10FB70000000000000000000000000000000000085
-:10FB80000000000000000000000000000000000075
-:10FB900000000000000000000000000F000F000047
-:10FBA0000000000000000000000000000000000055
-:10FBB0000000000000000000000000000000000045
-:10FBC0000000000000000000000000000000000035
-:10FBD0000000000000000000000000000000000025
-:10FBE0000000000000000000000000000000000015
-:10FBF00000000000000000000030C00F000F0030C7
-:10FC0000C000000000000000000000000000000034
-:10FC100000000000000000000000000000000000E4
-:10FC200000000000000000000000000000000000D4
-:10FC300000000000000000000000000000000000C4
-:10FC400000000000000000000000000000000000B4
-:10FC500000000000000000000000003FC03FC000A6
-:10FC60000000000000000000000000000000000094
-:10FC70000000000000000000000000000000000084
-:10FC80000000000000000000000000000000000074
-:10FC90000000000000000000000000000000000064
-:10FCA0000000000000000000000000000000000054
-:10FCB00000000000000000000030C03FC03FC03026
-:10FCC000C000000000000000000000000000000074
-:10FCD0000000000000000000000000000000000024
-:10FCE0000000000000000000000000000000000014
-:10FCF0000000000000000000000000000000000004
-:10FD000000000000000000000000000000000000F3
-:10FD10000000000000000000000F000F000F000FA7
-:10FD200000000000000000000000000000000000D3
-:10FD300000000000000000000000000000000000C3
-:10FD400000000000000000000000000000000000B3
-:10FD500000000000000000000000000000000000A3
-:10FD60000000000000000000000000000000000093
-:10FD70000000000000000000003FC00F000F003F27
-:10FD8000C0000000000000000000000000000000B3
-:10FD90000000000000000000000000000000000063
-:10FDA0000000000000000000000000000000000053
-:10FDB0000000000000000000000000000000000043
-:10FDC0000000000000000000000000000000000033
-:10FDD0000000000000000000000F003FC03FC00F07
-:10FDE0000000000000000000000000000000000013
-:10FDF0000000000000000000000000000000000003
-:10FE000000000000000000000000000000000000F2
-:10FE100000000000000000000000000000000000E2
-:10FE200000000000000000000000000000000000D2
-:10FE3000000000000000000006335D80C000FDAC43
-:10FE400002000000000000000000000000000000B0
-:10FE500000000000000000000000000000000000A2
-:10FE60000000000000000000000000000000000092
-:10FE70000000000000000000000000000000000082
-:10FE80000000000000000000000000000000000072
-:10FE90000000000000000000000000000000000062
-:10FEA0000000000000000000000000000000000052
-:10FEB0000000000000000000000000000000000042
-:10FEC0000000000000000000000000000000000032
-:10FED0000000000000000000000000000000000022
-:10FEE0000000000000000000000000000000000012
-:10FEF00000000000000000000030C00000000030E2
-:10FF0000C000000000000000000000000000000031
-:10FF100000000000000000000000000000000000E1
-:10FF200000000000000000000000000000000000D1
-:10FF300000000000000000000000000000000000C1
-:10FF400000000000000000000000000000000000B1
-:10FF5000000000000000000000000030C030C000C1
-:10FF60000000000000000000000000000000000091
-:10FF70000000000000000000000000000000000081
-:10FF80000000000000000000000000000000000071
-:10FF90000000000000000000000000000000000061
-:10FFA0000000000000000000000000000000000051
-:10FFB00000000000000000000030C030C030C03041
-:10FFC000C000000000000000000000000000000071
-:10FFD0000000000000000000000000000000000021
-:10FFE0000000000000000000000000000000000011
-:10FFF0000000000000000000000000000000000001
-:108010000000000000000000000000000000000060
-:108020000000000000000000000F00000000000F32
-:108030000000000000000000000000000000000040
-:108040000000000000000000000000000000000030
-:108050000000000000000000000000000000000020
-:108060000000000000000000000000000000000010
-:108070000000000000000000000000000000000000
-:108080000000000000000000003FC0000000003FB2
-:10809000C000000000000000000000000000000020
-:1080A00000000000000000000000000000000000D0
-:1080B00000000000000000000000000000000000C0
-:1080C00000000000000000000000000000000000B0
-:1080D00000000000000000000000000000000000A0
-:1080E0000000000000000000000F0030C030C00F92
-:1080F0000000000000000000000000000000000080
-:10810000000000000000000000000000000000006F
-:10811000000000000000000000000000000000005F
-:10812000000000000000000000000000000000004F
-:10813000000000000000000000000000000000003F
-:108140000000000000000000001374C0C000F0EC4C
-:1081500040000000000000000000000000000000DF
-:10816000000000000000000000000000000000000F
-:1081700000000000000000000000000000000000FF
-:1081800000000000000000000000000000000000EF
-:1081900000000000000000000000000000000000DF
-:1081A00000000000000000000000000F000F0000B1
-:1081B00000000000000000000000000000000000BF
-:1081C00000000000000000000000000000000000AF
-:1081D000000000000000000000000000000000009F
-:1081E000000000000000000000000000000000008F
-:1081F000000000000000000000000000000000007F
-:1082000000000000000000000030C00F000F003030
-:10821000C00000000000000000000000000000009E
-:10822000000000000000000000000000000000004E
-:10823000000000000000000000000000000000003E
-:10824000000000000000000000000000000000002E
-:10825000000000000000000000000000000000001E
-:1082600000000000000000000000003FC03FC00010
-:1082700000000000000000000000000000000000FE
-:1082800000000000000000000000000000000000EE
-:1082900000000000000000000000000000000000DE
-:1082A00000000000000000000000000000000000CE
-:1082B00000000000000000000000000000000000BE
-:1082C0000000000000000000001986108030823D90
-:1082D000800000000000000000000000000000001E
-:1082E000000000000000000000000000000000008E
-:1082F000000000000000000000000000000000007E
-:10830000000000000000000000000000000000006D
-:10831000000000000000000000000000000000005D
-:108320000000000000000000000F000F000F000F11
-:10833000000000000000000000000000000000003D
-:10834000000000000000000000000000000000002D
-:10835000000000000000000000000000000000001D
-:10836000000000000000000000000000000000000D
-:1083700000000000000000000000000000000000FD
-:108380000000000000000000003FC00F000F003F91
-:10839000C00000000000000000000000000000001D
-:1083A00000000000000000000000000000000000CD
-:1083B00000000000000000000000000000000000BD
-:1083C00000000000000000000000000000000000AD
-:1083D000000000000000000000000000000000009D
-:1083E0000000000000000000000F003FC03FC00F71
-:1083F000000000000000000000000000000000007D
-:10840000000000000000000000000000000000006C
-:10841000000000000000000000000000000000005C
-:10842000000000000000000000000000000000004C
-:10843000000000000000000000000000000000003C
-:108440000000000000000000376525E48000B088CF
-:10845000AB40000000000000000000000000000031
-:10846000000000000000000000000000000000000C
-:1084700000000000000000000000000000000000FC
-:1084800000000000000000000000000000000000EC
-:1084900000000000000000000000000000000000DC
-:1084A00000000000000000000000000000000000CC
-:1084B00000000000000000000000000000000000BC
-:1084C00000000000300020010202000030004300E4
-:1084D000000000000000000000000000000000009C
-:1084E000000000000000000000000000000000008C
-:1084F000000000000000000000000000000000007C
-:10850000000000000000000000000000000000006B
-:10851000000000000000000000000000000000005B
-:10852000000000000000000000000000000000004B
-:10853000000000000000000000000000000000003B
-:10854000000000000000000000000000000000002B
-:10855000000000000000000000000000000000001B
-:10856000000000000000000000000000000000000B
-:1085700000000000000000000000000000000000FB
-:1085800000000000000000000000000000000000EB
-:1085900000000000000000000000000000000000DB
-:1085A00000000000000000000000000000000000CB
-:1085B00000000000000000000000000000000000BB
-:1085C00000000000000000000000000000000000AB
-:1085D000000000000000000000000000000000009B
-:1085E000000000000000000000000000000000008B
-:1085F000000000000000000000000000000000007B
-:10860000000000000000000000000000000000006A
-:10861000000000000000000000000000000000005A
-:10862000000000000000000000000000000000004A
-:10863000000000000000000000000000000000003A
-:10864000000000000000000000000000000000002A
-:10865000000000000000000000000000000000001A
-:10866000000000000000000000000000000000000A
-:1086700000000000000000000000000000000000FA
-:1086800000000000000000000000000000000000EA
-:1086900000000000000000000000000000000000DA
-:1086A00000000000000000000000000000000000CA
-:1086B00000000000000000000000000000000000BA
-:1086C00000000000000000000000000000000000AA
-:1086D000000000000000000000000000000000009A
-:1086E000000000000000000000000000000000008A
-:1086F000000000000000000000000000000000007A
-:108700000000000000000000000000000000000069
-:108710000000000000000000000000000000000059
-:108720000000000000000000000000000000000049
-:108730000000000000000000000000000000000039
-:108740000000000000000000000000000000000029
-:108750000000000000000000000000000000000019
-:108760000000000000000000000000000000000009
-:1087700000000000000000000000000000000000F9
-:1087800000000000000000000000000000000000E9
-:1087900000000000000000000000000000000000D9
-:1087A00000000000000000000000000000000000C9
-:1087B00000000000000000000000000000000000B9
-:1087C00000000000000000000000000000000000A9
-:1087D0000000000000000000000000000000000099
-:1087E0000000000000000000000000000000000089
-:1087F0000000000000000000000000000000000079
-:108800000000000000000000000000000000000068
-:108810000000000000000000000000000000000058
-:108820000000000000000000000000000000000048
-:108830000000000000000000000000000000000038
-:108840000000000000000000000000000000000028
-:108850000000000000000000000000000000000018
-:108860000000000000000000000000000000000008
-:1088700000000000000000000000000000000000F8
-:1088800000000000000000000000000000000000E8
-:1088900000000000000000000000000000000000D8
-:1088A00000000000000000000000000000000000C8
-:1088B00000000000000000000000000000000000B8
-:1088C00000000000000000000000000000000000A8
-:1088D0000000000000000000000000000000000098
-:1088E0000000000000000000000000000000000088
-:1088F0000000000000000000000000000000000078
-:108900000000000000000000000000000000000067
-:108910000000000000000000000000000000000057
-:108920000000000000000000000000000000000047
-:108930000000000000000000000000000000000037
-:108940000000000000000000000000000000000027
-:108950000000000000000000000000000000000017
-:108960000000000000000000000000000000000007
-:1089700000000000000000000000000000000000F7
-:1089800000000000000000000000000000000000E7
-:1089900000000000000000000000000000000000D7
-:1089A00000000000000000000000000000000000C7
-:1089B00000000000000000000000000000000000B7
-:1089C00000000000000000000000000000000000A7
-:1089D0000000000000000000000000000000000097
-:1089E0000000000000000000000000000000000087
-:1089F0000000000000000000000000000000000077
-:108A00000000000000000000000000000000000066
-:108A10000000000000000000000000000000000056
-:108A20000000000000000000000000000000000046
-:108A30000000000000000000000000000000000036
-:108A40000000000000000000000000000000000026
-:108A50000000000000000000000000000000000016
-:108A60000000000000000000000000000000000006
-:108A700000000000000000000000000000000000F6
-:108A800000000000000000000000000000000000E6
-:108A900000000000000000000000000000000000D6
-:108AA00000000000000000000000000000000000C6
-:108AB00000000000000000000000000000000000B6
-:108AC00000000000000000000000000000000000A6
-:108AD0000000000000000000000000000000000096
-:108AE0000000000000000000000000000000000086
-:108AF0000000000000000000000000000000000076
-:108B00000000000000000000000000000000000065
-:108B10000000000000000000000000000000000055
-:108B20000000000000000000000000000000000045
-:108B30000000000000000000000000000000000035
-:108B40000000000000000000000000000000000025
-:108B50000000000000000000000000000000000015
-:108B60000000000000000000000000000000000005
-:108B700000000000000000000000000000000000F5
-:108B800000000000000000000000000000000000E5
-:108B900000000000000000000000000000000000D5
-:108BA00000000000000000000000000000000000C5
-:108BB00000000000000000000000000000000000B5
-:108BC00000000000000000000000000000000000A5
-:108BD0000000000000000000000000000000000095
-:108BE0000000000000000000000000000000000085
-:108BF0000000000000000000000000000000000075
-:108C00000000000000000000000000000000000064
-:108C10000000000000000000000000000000000054
-:108C20000000000000000000000000000000000044
-:108C30000000000000000000000000000000000034
-:108C40000000000000000000000000000000000024
-:108C50000000000000000000000000000000000014
-:108C60000000000000000000000000000000000004
-:108C700000000000000000000000000000000000F4
-:108C800000000000000000000000000000000000E4
-:108C900000000000000000000000000000000000D4
-:108CA00000000000000000000000000000000000C4
-:108CB00000000000000000000000000000000000B4
-:108CC00000000000000000000000000000000000A4
-:108CD0000000000000000000000000000000000094
-:108CE0000000000000000000000000000000000084
-:108CF0000000000000000000000000000000000074
-:108D00000000000000000000000000000000000063
-:108D10000000000000000000000000000000000053
-:108D20000000000000000000000000000000000043
-:108D30000000000000000000000000000000000033
-:108D40000000000000000000000000000000000023
-:108D50000000000000000000000000000000000013
-:108D60000000000000000000000000000000000003
-:108D700000000000000000000000000000000000F3
-:108D800000000000000000000000000000000000E3
-:108D900000000000000000000000000000000000D3
-:108DA00000000000000000000000000000000000C3
-:108DB00000000000000000000000000000000000B3
-:108DC00000000000000000000000000000000000A3
-:108DD0000000000000000000000000000000000093
-:108DE0000000000000000000000000000000000083
-:108DF0000000000000000000000000000000000073
-:108E00000000000000000000000000000000000062
-:108E10000000000000000000000000000000000052
-:108E20000000000000000000000000000000000042
-:108E30000000000000000000000000000000000032
-:108E40000000000000000000000000000000000022
-:108E50000000000000000000000000000000000012
-:108E60000000000000000000000000000000000002
-:108E700000000000000000000000000000000000F2
-:108E800000000000000000000000000000000000E2
-:108E900000000000000000000000000000000000D2
-:108EA00000000000000000000000000000000000C2
-:108EB00000000000000000000000000000000000B2
-:108EC00000000000000000000000000000000000A2
-:108ED0000000000000000000000000000000000092
-:108EE0000000000000000000000000000000000082
-:108EF0000000000000000000000000000000000072
-:108F00000000000000000000000000000000000061
-:108F10000000000000000000000000000000000051
-:108F20000000000000000000000000000000000041
-:108F30000000000000000000000000000000000031
-:108F40000000000000000000000000000000000021
-:108F50000000000000000000000000000000000011
-:108F60000000000000000000000000000000000001
-:108F700000000000000000000000000000000000F1
-:108F800000000000000000000000000000000000E1
-:108F900000000000000000000000000000000000D1
-:108FA00000000000000000000000000000000000C1
-:108FB00000000000000000000000000000000000B1
-:108FC00000000000000000000000000000000000A1
-:108FD0000000000000000000000000000000000091
-:108FE0000000000000000000000000000000000081
-:108FF0000000000000000000000000000000000071
-:109000000000000000000000000000000000000060
-:109010000000000000000000000000000000000050
-:109020000000000000000000000000000000000040
-:109030000000000000000000000000000000000030
-:109040000000000000000000000000000000000020
-:109050000000000000000000000000000000000010
-:109060000000000000000000000000000000000000
-:1090700000000000000000000000000000000000F0
-:1090800000000000000000000000000000000000E0
-:1090900000000000000000000000000000000000D0
-:1090A00000000000000000000000000000000000C0
-:1090B00000000000000000000000000000000000B0
-:1090C00000000000000000000000000000000000A0
-:1090D00030000001000044723000800100000003F5
-:1090E0003000400C00000000000000000000000004
-:1090F0000000000000000000000000000000000070
-:10910000000000000000000000000000000000005F
-:109110000000000030008001000000053000A001C8
-:1091200000000000300000010000E15A00000000D3
-:0C91300000000000000000000000000033
-:00000001FF
-/*
- * This firmware is for the Emagic EMI 2|6 Audio Interface
- *
- * The firmware contained herein is Copyright (c) 1999-2002 Emagic
- * as an unpublished work. This notice does not imply unrestricted
- * or public access to this firmware which is a trade secret of Emagic,
- * and which may not be reproduced, used, sold or transferred to
- * any third party without Emagic's written consent. All Rights Reserved.
- *
- * Permission is hereby granted for the distribution of this firmware
- * image as part of a Linux or other Open Source operating system kernel
- * in text or binary form as required.
- *
- * This firmware may not be modified and may only be used with the
- * Emagic EMI 2|6 Audio Interface. Distribution and/or Modification of
- * any driver which includes this firmware, in whole or in part,
- * requires the inclusion of this statement.
- *
-/// VERSION=1.1.1.131
-// DATE=2001dec06
-// PRODUCT=EMI 2|6
diff --git a/firmware/emi26/firmware.HEX b/firmware/emi26/firmware.HEX
deleted file mode 100644
index 1ca400eb1413..000000000000
--- a/firmware/emi26/firmware.HEX
+++ /dev/null
@@ -1,1261 +0,0 @@
-:0300000002435662
-:03000300024BCDE0
-:03000B00024BD2D3
-:03001300024B920B
-:03001B00024BD5C0
-:03002300021B3984
-:03002B000243E2AB
-:03003300023FF396
-:03003B00024BC0B5
-:0300430002470071
-:03004B00023FFC75
-:030053000237FA77
-:03005B00024BC78E
-:030063000246FC56
-:1005000012011001000000406A080101000101020F
-:1005100000010902B80103010080A00904000000E5
-:10052000010100000A2401000156000201020C240E
-:100530000201010100060000000015240605010269
-:10054000030000000000000000000000000000099F
-:1005500024030204030005000C240203010200022C
-:10056000000000000D240606030203000000000046
-:100570000009240304010100060009040100000130
-:100580000200000904010102010200000724010128
-:10059000000100112402010202100344AC0080BBE0
-:1005A0000000770109050A05840101008F07250174
-:1005B0000100000009058F01030001060009040184
-:1005C000020201020000072401010001000E2402C2
-:1005D000010602100244AC0080BB0009050A054C6C
-:1005E0000201008F0725010100000009058F0103AA
-:1005F00000010600090401030201020000072401B2
-:10060000010001000E2402010603180244AC008020
-:10061000BB0009050A05720301008F0725010100CF
-:10062000000009058F01030001060009040104020E
-:1006300001020000072401010001000B2402010255
-:1006400003180100770109050A05460201008F071A
-:1006500025010100000009058F01030001060009C2
-:10066000040200000102000009040201010102006D
-:1006700000072401040001001124020102021003FA
-:1006800044AC0080BB0000770109058C05840101A2
-:100690000000072501010200000904020201010215
-:1006A00000000724010400010011240201020318C4
-:1006B0000344AC0080BB0000770109058C054602AD
-:1006C00001000007250101020000050C0901A1013C
-:1006D000050C09E9050C09EA1500250195027501CB
-:1006E0008142950175068101050C0900050C090080
-:1006F0001500250195027501910695017506910376
-:10070000C004030904180345004D00410047004997
-:10071000004300200047006D00620048001E0345B2
-:10072000006D006100670069006300200045004D16
-:10073000004900200032007C0036002A0343006F8D
-:10074000006E006600690067007500720061007449
-:100750000069006F006E0020005300740072006991
-:10076000006E006700220349006E0074006500728D
-:100770000066006100630065002000530074007291
-:090780000069006E006700000032
-:100789007400F58690FDA57C05A3E582458370F983
-:01079900223D
-:10079A00907FD6E04480F0438701000000000022E9
-:1007AA00C0D0C0E08FE0C0E08EE0C0E08DE0C0E0E5
-:1007BA008CE0C0E0C082C0830586C084C085E5188D
-:1007CA00B402030207D9B401030207DE0207FA7D65
-:1007DA0001020816E51914F519C3B513030207F542
-:1007EA005009B400EA75190A0207D97D00020816F1
-:1007FA00E51914F519C3B514030208115009B40018
-:10080A00CE75190A0207D97D020208167C05907F67
-:10081A0099E05440DC03020843B4001D907FE3745E
-:10082A007BF0A37480F0907FE27440F0907FE5F053
-:10083A00907FE27400F00208180586907FE27480C7
-:10084A00F0907965E0B4010302089EB4020302083D
-:10085A0096B4030302088EB40403020886B405039F
-:10086A0002087EB406030208760208F40586907F21
-:10087A006C0208E90586907F6C0208DD0586907F88
-:10088A006C0208CF0586907F6C0208C00586907FAF
-:10089A006C0208B20586907F6CF000F000F000F060
-:1008AA000DEDB42DF40208F4F0F0F0F0F0F00DEDD7
-:1008BA00B42DF50208F4F000F000F000F00DEDB4EC
-:1008CA0031F40208F4F0F0F0F0F0F00DEDB431F587
-:1008DA000208F4F0F0F0F00DEDB461F70208F4F05C
-:1008EA00F0F0F0F0F00DEDB461F5907FE27400F0F5
-:1008FA00D085D0840586D083D082D0E0FCD0E0FDBC
-:05090A00D0E0FED0E08A
-:06090F00FFD0E0D0D02271
-:10091500C0D0C0E0C082C083907F6FE50CF0E50DCC
-:0D092500F0E50EF0D083D082D0E0D0D022DB
-:10093200C0D0C0E08FE0C0E08EE0C0E0C082C083E3
-:100942000586C084C085907970E0FFBF0003020A6B
-:10095200B8907F96E04480F0907FE27480F0907FC0
-:1009620062E00586907FE27400F0907F96E0547F0B
-:10097200F0907FE27480F0907988E0B4010302097C
-:10098200BEB402030209C3B403030209ACB40403F4
-:1009920002099A0586020AB2EF5403FEEF030354DA
-:1009A2003FFF907F6305860209C9EF5403FEEF0300
-:1009B20003543FFF907F630586020A360586020ACA
-:1009C200A50586020A8EE0E0E0E0E0E00586E0E0D0
-:1009D200E00586E0E0E0E0E0E00586E0E0E00586B4
-:1009E200E0E0E0E0E0E00586E0E0E00586E0E0E06F
-:1009F200E0E0E00586E0E0E00586DFCAEEB4000351
-:100A0200020AB2B40103020A25E0E0E0E0E0E005F8
-:100A120086E0E0E00586E0E0E0E0E0E00586E0E098
-:100A2200E00586E0E0E0E0E0E00586E0E0E0058663
-:100A3200020AB2E0E0E0E00586E0E00586E0E0E000
-:0D0A4200E00586E0E00586E0E0E0E00586E6
-:100A4F00E0E00586E0E0E0E00586E0E00586DFD641
-:100A5F00EEB40003020AB2B40103020A80E0E0E040
-:100A6F00E00586E0E00586E0E0E0E00586E0E005F1
-:100A7F0086E0E0E0E00586E0E00586020AB2E0E00D
-:100A8F00E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E057
-:100A9F00DFEC020AB2E0E0E0E0E0E0E0E0E0E0E01E
-:100AAF00E0DFF2907FE27400F0D085D0840586D02D
-:0E0ABF0083D082D0E0FED0E0FFD0E0D0D02285
-:100ACD00C082C083C0E0E8C0E078D1E814F870FBC4
-:0A0ADD00D0E0F8D0E0D083D08222F0
-:100AE700C0D0C0E08FE0C0E08EE0C0E08DE0C0E0A5
-:100AF7008CE0C0E0758600C082C0830586C084C0D4
-:100B0700857E0090798EE0B400167401F09006CAD5
-:100B1700A3A3A3A3A3A3A3E0FF90798DF0020B39AE
-:100B270090798DE0FF90798FE0FD907990E0FC025D
-:100B37000B469006CA0586907F000586020B518DED
-:100B4700848C850586907F000586E0A30586F0A343
-:100B57000EEEB44003020B6C0586DFEE90798E74BF
-:100B670000F0020B820586AD84AC8590798FEDF09D
-:100B7700907990ECF090798D1FEFF0907FB5EEF0C3
-:100B8700D085D0840586D083D082D0E0FCD0E0FD2C
-:0B0B9700D0E0FED0E0FFD0E0D0D02284
-:100BA200C0D0C0E0C082C083907FAEE054E0F0903D
-:100BB2007F96E0440854FBF0907F97E054BFF0909A
-:100BC2007FE3747BF0907FE47440F0907978E0905A
-:100BD2007B40F0907FE27448F0907FE5E0907FE206
-:100BE2007400F0907F96E054F74404F0907FE37431
-:100BF2007BF0907FE47440F0907979E0907B40F054
-:100C0200907FE27448F0907FE5E0907FE27400F01C
-:100C1200907F96E054F3F0907FAEE0441FF0D083D3
-:070C2200D082D0E0D0D02207
-:100C2900C0D0C0E0C083C08290792FE064FFC324A4
-:0B0C390001F0D082D083D0E0D0D022A8
-:100C4400BB010689828A83E0225002E722BBFE02AE
-:090C5400E32289828A83E49322E1
-:100C5D00BB010CE58229F582E5833AF583E022504C
-:100C6D0006E92582F8E622BBFE06E92582F8E22296
-:0D0C7D00E58229F582E5833AF583E49322B0
-:100C8A00BB010689828A83F0225002F722BBFE0149
-:020C9A00F32243
-:100C9C00F8BB010DE58229F582E5833AF583E8F08E
-:100CAC00225006E92582C8F622BBFE05E92582C83A
-:020CBC00F22222
-:100CBE00C2D5EC30E709B2D5E4C39DFDE49CFCEE51
-:100CCE0030E715B2D5E4C39FFFE49EFE120E40C37B
-:100CDE00E49DFDE49CFC8003120E4030D507C3E476
-:060CEE009FFFE49EFE22C0
-:100CF400C5F0F8A3E028F0C5F0F8E582158270028B
-:060D04001583E038F02227
-:100D0A00BB0110E58229F582E5833AF583E0F5F027
-:100D1A00A3E0225009E92582F886F008E622BBFE04
-:100D2A000AE92582F8E2F5F008E222E5832AF5834A
-:080D3A00E993F5F0A3E993220F
-:100D4200E88FF0A4CC8BF0A42CFCE98EF0A42CFC50
-:100D52008AF0EDA42CFCEA8EF0A4CDA8F08BF0A4CE
-:100D62002DCC3825F0FDE98FF0A42CCD35F0FCEB2D
-:100D72008EF0A4FEA9F0EB8FF0A4CFC5F02ECD39F2
-:0F0D8200FEE43CFCEAA42DCE35F0FDE43CFC225F
-:100D9100EB9FF5F0EA9E42F0E99D42F0E89C45F0B8
-:010DA100222F
-:100DA200BB010DE58229F582E5833AF583020EA1A6
-:100DB2005007E92582F8020E95BBFE07E92582F865
-:100DC200020EADE58229F582E5833AF583020EB97A
-:100DD200BB010DE58229F582E5833AF583020ED542
-:100DE2005007E92582F8020EC9BBFE07E92582F801
-:040DF200020EE122EA
-:100DF600BB010DE58229F582E5833AF583020F06EC
-:100E06005007E92582F8020EEDBBFE07E92582F8B8
-:040E1600020F37226E
-:100E1A00D083D082F8E4937012740193700DA3A367
-:100E2A0093F8740193F5828883E47374029368607B
-:060E3A00EFA3A3A380DF7B
-:100E4000BC000BBE0029EF8DF084FFADF022E4CC96
-:100E5000F875F008EF2FFFEE33FEEC33FCEE9DEC5F
-:100E6000984005FCEE9DFE0FD5F0E9E4CEFD22EDA5
-:100E7000F8F5F0EE8420D21CFEADF075F008EF2FEF
-:100E8000FFED33FD4007985006D5F0F222C398FDE0
-:050E90000FD5F0EA227D
-:0C0E9500E6FC08E6FD08E6FE08E6FF2289
-:0C0EA100E0FCA3E0FDA3E0FEA3E0FF22C4
-:0C0EAD00E2FC08E2FD08E2FE08E2FF2281
-:100EB900E493FCA3E493FDA3E493FEA3E493FF224C
-:0C0EC900ECF608EDF608EEF608EFF62255
-:0C0ED500ECF0A3EDF0A3EEF0A3EFF02290
-:0C0EE100ECF208EDF208EEF208EFF2224D
-:100EED00D083D082E493F608740193F608740293CC
-:090EFD00F608740393F674047303
-:100F0600A8828583F0D083D082120F1D120F1D1286
-:100F16000F1D120F1DE473E493A3C583C5F0C583AB
-:100F2600C8C582C8F0A3C583C5F0C583C8C582C835
-:010F36002298
-:100F3700D083D082E493F208740193F20874029389
-:090F4700F208740393F2740473C0
-:100F5000C2AFD22C907F937430F0907F9C74BFF01E
-:100F6000907F96E05430F0907F947430F0907F9DA5
-:100F700074CFF0907F9774A0F0907F9574CCF0E4DC
-:100F8000907F9EF0C22DC22AC22BC22E907974048B
-:100F9000F0122E941249E2124BE612320D123B0D62
-:100FA0001241FD123E99E51F7018751F011217FFBF
-:100FB000122FFF1249C8124BD8124BDA12496F1286
-:100FC0001B4012398D907FAFE04401F0907FAEE07E
-:100FD000441FF0907FAC74FFF0907FADF0907FDE07
-:100FE000F0907FDFF0907FABF0907FA9F0907FAA28
-:100FF000F05391EF43D820D2E843D82043A8802271
-:10100000907963E014604414700221D0147002419E
-:10101000D914700261D7240460028156E490797873
-:10102000F090797BE0907979F04401F054FDF090F4
-:10103000797BF0E4907988F0A2AF33F512C2AF1259
-:101040000BA2E51270028156D2AF2290792DE06496
-:10105000017079907FF2F0907FF37430F0907FFF11
-:1010600074FCF0E4907978F090797BE0907979F0F5
-:101070004401F04402F090797BF0A2AFE433F51222
-:10108000C2AF120BA29079787402F0907984E0904C
-:101090007979F090797FE0B40109907979E054FE94
-:1010A000F08007907979E04401F0907979E054FD7F
-:1010B000F054FBF0907984F0120BA29079827404C2
-:1010C000F090798814F0E5126002D2AF90792DE0AB
-:1010D00064027079907FF2F0907FF37434F0907F27
-:1010E000FF74FCF0E4907978F090797BE090797966
-:1010F000F04401F04402F090797BF0A2AFE433F5C4
-:1011000012C2AF120BA29079787402F0907984E049
-:10111000907979F090797FE0B40109907979E05481
-:10112000FEF08007907979E04401F0907979E0440D
-:1011300002F054FBF0907984F0120BA29079827443
-:1011400004F090798814F0E5126002D2AF90792D06
-:10115000E0640360028156907FF2F0907FF3746444
-:10116000F0907FFF74FCF0E4907978F090797BE068
-:10117000907979F04401F04402F090797BF0A2AFCD
-:10118000E433F512C2AF120BA29079787402F0909A
-:101190007984E0907979F090797FE0B401099079D1
-:1011A00079E054FEF08007907979E04401F090797D
-:1011B00079E04404F0907984F0120BA29079827463
-:1011C00004F090798814F0E51270028156D2AF22B3
-:1011D00090792DE06401707A907FF2F0907FF37443
-:1011E00088F0907FFF74FCF0E4907978F090797B40
-:1011F000E0907979F04401F054FDF090797BF0A211
-:10120000AFE433F512C2AF120BA29079787402F0FA
-:10121000907984E0907979F090797FE0B401099039
-:101220007979E054FEF08007907979E04401F090FC
-:101230007979E054FDF054FBF0907984F0120BA220
-:10124000907982740CF09079887401F0E512600254
-:10125000D2AF90792DE0640260028156907FF2F067
-:10126000907FF37494F0907FFF74FCF0E4907978B1
-:10127000F090797BE0907979F04401F054FDF090A2
-:10128000797BF0A2AFE433F512C2AF120BA29079D2
-:10129000787402F0907984E0907979F090797FE029
-:1012A000B40109907979E054FEF08007907979E0F3
-:1012B0004401F0907979E04402F054FBF090798495
-:1012C000F0120BA2907982740CF09079887401F07E
-:1012D000E51270028156D2AF2290792DE064017040
-:1012E00077907FF2F0907FF374CCF0907FFF74FCE6
-:1012F000F0E4907978F090797BE0907979F054FC83
-:10130000F090797BF0A2AFE433F512C2AF120BA2DA
-:101310009079787402F0907984E0907979F09079FE
-:101320007FE0B40109907979E054FEF0800790796C
-:1013300079E04401F0907979E054FDF054FBF090AD
-:101340007984F0120BA29079827412F090798874EB
-:1013500002F0E5126002D2AF90792DE0640270775E
-:10136000907FF2F0907FF374E0F0907FFF74FCF0D8
-:10137000E4907978F090797BE0907979F054FCF002
-:1013800090797BF0A2AFE433F512C2AF120BA290BA
-:1013900079787402F0907984E0907979F090797F8F
-:1013A000E0B40109907979E054FEF08007907979F2
-:1013B000E04401F0907979E04402F054FBF0907938
-:1013C00084F0120BA29079827412F09079887402E2
-:1013D000F0E5126002D2AF90792DE064037077904F
-:1013E0007FF2F0907FF37494F0907FFF74FCF0E450
-:1013F000907978F090797BE0907979F054FEF04420
-:1014000002F090797BF0A2AFE433F512C2AF120B79
-:10141000A29079787402F0907984E0907979F090D4
-:10142000797FE0B40109907979E054FEF08007906B
-:101430007979E04401F0907979E04404F09079847E
-:10144000F0120BA29079827406F09079887404F0FF
-:07145000E5126002D2AF2299
-:10145700C228C229907FE8E0120E1A14840014E013
-:101467000114F602167C2116BE2215918015D18132
-:10147700162E8216CFA11705A20000170A907FE942
-:10148700E014601124FE602824FE603B24FC7040B9
-:10149700124A2AE116124BE04002E116907FEAE079
-:1014A700B40104C22AE116907FB4E04401F0E116CA
-:1014B700124BE2907FEAE0B40104D22AE116907F52
-:1014C700B4E04401F0E116907FB4E04401F0E11686
-:1014D700907FB4E04401F0E116907FE9E024F570D5
-:1014E7000512479CE116907FB4E04401F0E11690A5
-:1014F7007FE9E024FD605424026002A188124BE0DA
-:101507004002E116907FEAE07038907FECE0F454F7
-:1015170080FFC4540FFFE054072F25E024B4F58261
-:10152700E4347FF583E4F0907FECE05480FF1313FD
-:1015370013541FFFE054072F907FD7F0E04420F0AB
-:10154700E116907FB4E04401F0E116124BE240024D
-:10155700E116907FEAE07020907FECE0F45480FF82
-:10156700C4540FFFE054072F25E024B4F582E43478
-:101577007FF5837401F0E116907FB4E04401F0E158
-:1015870016907FB4E04401F0E116907FE9E0601225
-:1015970024F860092402702912171EE116124BA0C5
-:1015A700E116124BDEA22AE433FF25E0FFA22BE46B
-:1015B700334F907F00F0E4A3F0907FB57402F0E121
-:1015C70016907FB4E04401F0E116907FE9E06037C0
-:1015D70024F6602E24047041907FEBE024DE600E39
-:1015E700047016D229907FB4E04401F0E116D229A5
-:1015F700907FB4E04401F0E116907FB4E04401F03D
-:10160700E116124463E116124BDEE4907F00F0A36B
-:10161700F0907FB57402F0E116202907907FB4E0BF
-:101627004401F0C229E116907FE9E024F4603424F4
-:101637000C7039124BDE907FECE0F45480FFC454F9
-:101647000FFFE054072F25E024B4F582E4347FF53B
-:1016570083E054FD907F00F0E4A3F0907FB574021F
-:10166700F0E116907FB4E04401F0E116907FB4E01A
-:101677004401F0E116907FE9E024F6601214601A45
-:101687002402701DD228907FB4E04401F08012D26A
-:1016970028907FB4E04401F08007907FB4E04401D4
-:1016A700F020280F9079857401F012496F907FC55B
-:1016B7007402F0C22880589079867401F012496F3D
-:1016C700907FC57402F08047907FE9E024FE6012A6
-:1016D70014601A2402701DD228907FB4E04401F0F0
-:1016E7008012D228907FB4E04401F08007907FB445
-:1016F700E04401F0202803121A7BC2288011122C23
-:101707002B800C124BE45007907FB4E04401F0901B
-:071717007FB4E04402F02260
-:10171E00124BDC4002E1E3907FEBE024FE601E14EE
-:10172E00604614606E147002E1D424046002E1DCA1
-:10173E007405907FD4F07400907FD5F022907FEAEC
-:10174E00E0FF123FA28B338A348935EA496011CE0D
-:10175E00EACEEE907FD4F0CFE9CFEF907FD5F02296
-:10176E00907FB4E04401F022907FEAE0FF1248003F
-:10177E008B338A348935EA496011CEEACEEE907FFA
-:10178E00D4F0CFE9CFEF907FD5F022907FB4E04434
-:10179E0001F022907FEAE0FF907EC0E0FDA3E0FB27
-:1017AE001244D28B338A348935EA496011CEEACE9F
-:1017BE00EE907FD4F0CFE9CFEF907FD5F022907FDF
-:1017CE00B4E04401F022907FB4E04401F022907F17
-:0517DE00B4E04401F03D
-:0117E30022E3
-:1017E400C0E0C083C082907FC4E4F05391EF907F47
-:0B17F400AB7404F0D082D083D0E03250
-:0117FF0022C7
-:10180000E4907815F07B0190781204F0A37478F0DE
-:10181000A37458F0907812E0FBA3E0FAA3E0F990EB
-:101820000001120C5DFF90799AE06F6018907815B6
-:10183000E0C39406500FE004F0907813E475F00FC5
-:10184000120CF480CF907815E0B40608907FB4E0D5
-:101850004401F022907812E0FBA3E0FAA3E0F91231
-:101860000C44FF24BF7002417A24E07002414C24F2
-:101870002160024173907997E024FE7002219A144E
-:10188000700221EF24026002414490792DE0A3F020
-:10189000907923E0FFE4FCFDFEFBFA7901F8120DDC
-:1018A00042C8ECC8C9EDC9CAEECACBEFCB907922C9
-:1018B000E0FEE4FCFD2BFBEA3EFAED39F9EC38F8EA
-:1018C000907921E0FFE4FEEB2FFFEE3AFEED39FDCB
-:1018D000EC38FC907812E0FBA3E0FAA3E0F990006A
-:1018E00002120DD2900002120DA27B447AAC790054
-:1018F0007800C3120D91700590792D04F090781244
-:10190000E0FBA3E0FAA3E0F9900002120DA27B80B5
-:101910007ABB79007800C3120D91700690792D740E
-:1019200002F0907812E0FBA3E0FAA3E0F990000245
-:10193000120DA27B007A7779017800C3120D9170A5
-:101940000690792D7403F090792DE0FFB4010975AC
-:101950000C67750D06750E0BEFB40208E4F50CF577
-:101960000D750E0CEFB40308E4F50CF50D750E18AB
-:10197000EFB4030D90792EE064036005D22F123D81
-:101980007990792DE06403600AA3E0B40305C22FC7
-:10199000123D7912100012280122907923E0FFE411
-:1019A000FCFDFEFBFA7901F8120D42C8ECC8C9ED46
-:1019B000C9CAEECACBEFCB907922E0FEE4FCFD2B46
-:1019C000FBEA3EFAED39F9EC38F8907921E0FFE4D2
-:1019D000FEEB2FFFEE3AFEED39FDEC38FC9078126D
-:1019E000E0FBA3E0FAA3E0F9900006120DD22290EA
-:1019F0007923E0FFE4FCFDFEFBFA7901F8120D42C9
-:101A0000C8ECC8C9EDC9CAEECACBEFCB907922E0C9
-:101A1000FEE4FCFD2BFBEA3EFAED39F9EC38F890D8
-:101A20007921E0FFE4FEEB2FFFEE3AFEED39FDEC0D
-:101A300038FC907812E0FBA3E0FAA3E0F990000AEA
-:101A4000120DD222907FB4E04401F022907997E009
-:101A5000147018907921E0FF907812E0FBA3E0FA6F
-:101A6000A3E0F990000EEF120C9C22907FB4E044AA
-:0A1A700001F022907FB4E04401F081
-:011A7A002249
-:101A7B00E4FFFE7B0190780F04F0A37478F0A3745D
-:101A8B002BF090780FE0FBA3E0FAA3E0F9900002B3
-:101A9B00120C5DFD907FECE06D6013EFC39405506D
-:101AAB000D0F907810E475F003120CF480D48D3385
-:101ABB0090780FE0FBA3E0FAA3E0F9900001120C81
-:101ACB005DFD907FEDE06D6013EEC3940B500D0E3A
-:101ADB00907810E475F003120CF480D4907FEDE055
-:101AEB00F534EF64056003BE0B08907FB4E044014E
-:101AFB00F02290780FE0FBA3E0FAA3E0F9120C447C
-:101B0B00FF24F06008240F700E12492A22124B8317
-:0E1B1B00907920E534F022907FB4E04401F090
-:011B29002299
-:0F1B2A00907FEAE0B4FF04123416221238002232
-:071B39005398FE5398FD32A2
-:101B40000000000000000000000000000000000095
-:101B50000000000000000000000000000000000085
-:101B60000000000000000000000000000000000075
-:101B70000000000000000000000000000000000065
-:101B80000000000000000000000000000000000055
-:101B90000000000000000000000000000000000045
-:101BA0000000000000000000000000000000000035
-:101BB0000000000000000000000000000000000025
-:101BC0000000000000000000000000000000000015
-:101BD0000000000000000000000000000000000005
-:101BE00000000000000000000000000000000000F5
-:101BF00000000000000000000000000000000000E5
-:101C000000000000000000000000000000000000D4
-:101C100000000000000000000000000000000000C4
-:101C200000000000000000000000000000000000B4
-:101C300000000000000000000000000000000000A4
-:101C40000000000000000000000000000000000094
-:101C50000000000000000000000000000000000084
-:101C60000000000000000000000000000000000074
-:101C70000000000000000000000000000000000064
-:101C80000000000000000000000000000000000054
-:101C90000000000000000000000000000000000044
-:101CA0000000000000000000000000000000000034
-:101CB0000000000000000000000000000000000024
-:101CC0000000000000000000000000000000000014
-:101CD0000000000000000000000000000000000004
-:101CE00000000000000000000000000000000000F4
-:101CF00000000000000000000000000000000000E4
-:101D000000000000000000000000000000000000D3
-:101D100000000000000000000000000000000000C3
-:101D200000000000000000000000000000000000B3
-:101D300000000000000000000000000000000000A3
-:101D40000000000000000000000000000000000093
-:101D50000000000000000000000000000000000083
-:101D60000000000000000000000000000000000073
-:101D70000000000000000000000000000000000063
-:101D80000000000000000000000000000000000053
-:101D90000000000000000000000000000000000043
-:101DA0000000000000000000000000000000000033
-:101DB0000000000000000000000000000000000023
-:101DC0000000000000000000000000000000000013
-:101DD0000000000000000000000000000000000003
-:101DE00000000000000000000000000000000000F3
-:101DF00000000000000000000000000000000000E3
-:101E000000000000000000000000000000000000D2
-:101E100000000000000000000000000000000000C2
-:101E200000000000000000000000000000000000B2
-:101E300000000000000000000000000000000000A2
-:101E40000000000000000000000000000000000092
-:101E50000000000000000000000000000000000082
-:101E60000000000000000000000000000000000072
-:101E70000000000000000000000000000000000062
-:101E80000000000000000000000000000000000052
-:101E90000000000000000000000000000000000042
-:101EA0000000000000000000000000000000000032
-:0E1EB000000000000000000000000000000024
-:101EBE000000000000000000000000000000000014
-:101ECE000000000000000000000000000000000004
-:101EDE0000000000000000000000000000000000F4
-:101EEE0000000000000000000000000000000000E4
-:101EFE0000000000000000000000000000000000D4
-:101F0E0000000000000000000000000000000000C3
-:101F1E0000000000000000000000000000000000B3
-:101F2E0000000000000000000000000000000000A3
-:021F3E000000A1
-:101F40000000000000000000000000000000000091
-:101F50000000000000000000000000000000000081
-:101F60000000000000000000000000000000000071
-:101F70000000000000000000000000000000000061
-:101F80000000000000000000000000000000000051
-:101F90000000000000000000000000000000000041
-:101FA0000000000000000000000000000000000031
-:101FB0000000000000000000000000000000000021
-:101FC0000000000000000000000000000000000011
-:101FD0000000000000000000000000000000000001
-:101FE00000000000000000000000000000000000F1
-:101FF00000000000000000000000000000000000E1
-:1020000000000000000000000000000000000000D0
-:1020100000000000000000000000000000000000C0
-:1020200000000000000000000000000000000000B0
-:1020300000000000000000000000000000000000A0
-:102040000000000000000000000000000000000090
-:102050000000000000000000000000000000000080
-:102060000000000000000000000000000000000070
-:102070000000000000000000000000000000000060
-:102080000000000000000000000000000000000050
-:102090000000000000000000000000000000000040
-:1020A0000000000000000000000000000000000030
-:1020B0000000000000000000000000000000000020
-:1020C0000000000000000000000000000000000010
-:1020D0000000000000000000000000000000000000
-:1020E00000000000000000000000000000000000F0
-:1020F00000000000000000000000000000000000E0
-:1021000000000000000000000000000000000000CF
-:1021100000000000000000000000000000000000BF
-:1021200000000000000000000000000000000000AF
-:10213000000000000000000000000000000000009F
-:10214000000000000000000000000000000000008F
-:10215000000000000000000000000000000000007F
-:10216000000000000000000000000000000000006F
-:10217000000000000000000000000000000000005F
-:10218000000000000000000000000000000000004F
-:10219000000000000000000000000000000000003F
-:1021A000000000000000000000000000000000002F
-:1021B000000000000000000000000000000000001F
-:1021C000000000000000000000000000000000000F
-:1021D00000000000000000000000000000000000FF
-:1021E00000000000000000000000000000000000EF
-:1021F00000000000000000000000000000000000DF
-:1022000000000000000000000000000000000000CE
-:1022100000000000000000000000000000000000BE
-:1022200000000000000000000000000000000000AE
-:10223000000000000000000000000000000000009E
-:10224000000000000000000000000000000000008E
-:10225000000000000000000000000000000000007E
-:10226000000000000000000000000000000000006E
-:10227000000000000000000000000000000000005E
-:10228000000000000000000000000000000000004E
-:10229000000000000000000000000000000000003E
-:1022A000000000000000000000000000000000002E
-:1022B000000000000000000000000000000000001E
-:1022C000000000000000000000000000000000000E
-:1022D00000000000000000000000000000000000FE
-:1022E00000000000000000000000000000000000EE
-:1022F00000000000000000000000000000000000DE
-:1023000000000000000000000000000000000000CD
-:1023100000000000000000000000000000000000BD
-:1023200000000000000000000000000000000000AD
-:10233000000000000000000000000000000000009D
-:10234000000000000000000000000000000000008D
-:10235000000000000000000000000000000000007D
-:10236000000000000000000000000000000000006D
-:0E23700000000000000000000000000000005F
-:10237E00000000000000000000000000000000004F
-:10238E00000000000000000000000000000000003F
-:10239E00000000000000000000000000000000002F
-:1023AE00000000000000000000000000000000001F
-:1023BE00000000000000000000000000000000000F
-:1023CE0000000000000000000000000000000000FF
-:1023DE0000000000000000000000000000000000EF
-:1023EE0000000000000000000000000000000000DF
-:1023FE0000000000000000000000000000000000CF
-:10240E0000000000000000000000000000000000BE
-:10241E0000000000000000000000000000000000AE
-:10242E00000000000000000000000000000000009E
-:10243E00000000000000000000000000000000008E
-:10244E00000000000000000000000000000000007E
-:10245E00000000000000000000000000000000006E
-:10246E00000000000000000000000000000000005E
-:10247E00000000000000000000000000000000004E
-:10248E00000000000000000000000000000000003E
-:10249E00000000000000000000000000000000002E
-:1024AE00000000000000000000000000000000001E
-:1024BE00000000000000000000000000000000000E
-:1024CE0000000000000000000000000000000000FE
-:1024DE0000000000000000000000000000000000EE
-:1024EE0000000000000000000000000000000000DE
-:1024FE0000000000000000000000000000000000CE
-:10250E0000000000000000000000000000000000BD
-:10251E0000000000000000000000000000000000AD
-:10252E00000000000000000000000000000000009D
-:10253E00000000000000000000000000000000008D
-:10254E00000000000000000000000000000000007D
-:10255E00000000000000000000000000000000006D
-:10256E00000000000000000000000000000000005D
-:10257E00000000000000000000000000000000004D
-:10258E00000000000000000000000000000000003D
-:10259E00000000000000000000000000000000002D
-:1025AE00000000000000000000000000000000001D
-:1025BE00000000000000000000000000000000000D
-:1025CE0000000000000000000000000000000000FD
-:1025DE0000000000000000000000000000000000ED
-:1025EE0000000000000000000000000000000000DD
-:1025FE0000000000000000000000000000000000CD
-:10260E0000000000000000000000000000000000BC
-:10261E0000000000000000000000000000000000AC
-:10262E00000000000000000000000000000000009C
-:10263E00000000000000000000000000000000008C
-:10264E00000000000000000000000000000000007C
-:10265E00000000000000000000000000000000006C
-:10266E00000000000000000000000000000000005C
-:10267E00000000000000000000000000000000004C
-:10268E00000000000000000000000000000000003C
-:10269E00000000000000000000000000000000002C
-:1026AE00000000000000000000000000000000001C
-:1026BE00000000000000000000000000000000000C
-:1026CE0000000000000000000000000000000000FC
-:1026DE0000000000000000000000000000000000EC
-:0E26EE000000000000000000000000000000DE
-:1026FC0000000000000000000000000000000000CE
-:10270C0000000000000000000000000000000000BD
-:10271C0000000000000000000000000000000000AD
-:10272C00000000000000000000000000000000009D
-:10273C00000000000000000000000000000000008D
-:10274C00000000000000000000000000000000007D
-:10275C00000000000000000000000000000000006D
-:10276C00000000000000000000000000000000005D
-:10277C00000000000000000000000000000000004D
-:10278C00000000000000000000000000000000003D
-:10279C00000000000000000000000000000000002D
-:1027AC00000000000000000000000000000000001D
-:1027BC00000000000000000000000000000000000D
-:1027CC0000000000000000000000000000000000FD
-:1027DC0000000000000000000000000000000000ED
-:1027EC0000000000000000000000000000000000DD
-:0527FC000000000022B6
-:10280100907964E0146046147002413C2402600235
-:10281100812A907FFC74CCF0907FFF74FCF090795A
-:10282100787401F090797CE0907979F054FDF0446E
-:1028310001F090797CF0A2AFE433F512C2AF120B34
-:10284100A2E5126002D2AFE490797AF02290792D5C
-:10285100E06401600201F1907FFC74CCF0907FFF95
-:1028610074FCF09079787401F090797CE09079793A
-:10287100F04401F04402F090797EE0B401099079CE
-:1028810079E04404F08007907979E054FBF0907985
-:1028910079E090797CF0A2AFE433F512C2AF120B6C
-:1028A100A29079787402F0907984E0907979F0902F
-:1028B100797FE0B40109907979E054FEF0800790C6
-:1028C1007979E04401F0907979E054FDF054FBF01E
-:1028D100907984F0120BA290797A7401F090796565
-:1028E100F0E5126002D2AFE490798CF090798BF030
-:1028F10090792DE0640260022196907FFC74C8F00B
-:10290100907FFF74FCF09079787401F090797CE00D
-:10291100907979F04401F04402F090797EE0B401BD
-:1029210009907979E04404F08007907979E054FBCB
-:10293100F0907979E090797CF0A2AFE433F512C29E
-:10294100AF120BA29079787402F0907984E09079BB
-:1029510079F090797FE0B40109907979E054FEF043
-:102961008007907979E04401F0907979E04402F0B0
-:1029710054FBF0907984F0120BA290797A7401F0F3
-:102981009079657403F0E5126002D2AFE490798C1E
-:10299100F090798BF090792DE064036002812A90A8
-:1029A1007FFC7498F0907FFF74FCF090797874014B
-:1029B100F090797CE0907979F04401F04402F09054
-:1029C100797EE0B40109907979E04404F0800790C0
-:1029D1007979E054FBF0907979E090797CF0A2AFBD
-:1029E100E433F512C2AF120BA29079787402F09021
-:1029F1007984E0907979F090797FE0B40109907958
-:102A010079E054FEF08007907979E04401F0907903
-:102A110079E054FDF04404F0907984F0120BA29017
-:102A2100797A7401F09079657405F0E5126002D24B
-:102A3100AFE490798CF090798BF02290792DE0645D
-:102A410001600241E0907FFC74B4F0907FFF74FC60
-:102A5100F09079787401F090797CE0907979F05474
-:102A6100FEF04402F090797EE0B40109907979E0BA
-:102A71004404F08007907979E054FBF0907979E093
-:102A810090797CF0A2AFE433F512C2AF120BA290A1
-:102A910079787402F0907984E0907979F090797F77
-:102AA100E0B40109907979E054FEF08007907979DA
-:102AB100E04401F0907979E054FDF054FBF0907915
-:102AC10084F0120BA290797A7401F090796504F088
-:102AD100E5126002D2AFE490798CF090798BF0909E
-:102AE100792DE0640260026185907FFC74B0F09002
-:102AF1007FFF74FCF09079787401F090797CE0901C
-:102B01007979F054FEF04402F090797EE0B4010945
-:102B1100907979E04404F08007907979E054FBF0F2
-:102B2100907979E090797CF0A2AFE433F512C2AFED
-:102B3100120BA29079787402F0907984E0907979FF
-:102B4100F090797FE0B40109907979E054FEF0804A
-:102B510007907979E04401F0907979E04402F054EA
-:102B6100FBF0907984F0120BA290797A7401F090C5
-:102B710079657404F0E5126002D2AFE490798CF0CB
-:102B810090798BF090792DE064036002812A907F27
-:102B9100FC7468F0907FFF74FCF09079787401F018
-:102BA10090797CE0907979F054FEF04402F09079CC
-:102BB1007EE0B40109907979E04404F080079079CE
-:102BC10079E054FBF0907979E090797CF0A2AFE460
-:102BD10033F512C2AF120BA29079787402F090799A
-:102BE10084E0907979F090797FE0B4010990797966
-:102BF100E054FEF08007907979E04401F090797912
-:102C0100E054FDF04404F0907984F0120BA2907925
-:102C11007A7401F09079657406F0E5126002D2AF22
-:0A2C2100E490798CF090798BF0229A
-:102C2B00E4FF7B0190781604F0A37478F0A374583A
-:102C3B00F0907816E0FBA3E0FAA3E0F99000011204
-:102C4B000C5DFE907FECE06E6013EFC39406500DAD
-:102C5B000F907817E475F00F120CF480D4BF0608B0
-:102C6B00907FB4E04401F022907816E0FBA3E0FAE9
-:102C7B00A3E0F9120C44FF249F7002C1662421606B
-:102C8B0002C18C907FE9E0247E7002A130147002A7
-:102C9B00A1C824026002C15E900002120DA27B4407
-:102CAB007AAC79007800C3120D917013907F007489
-:102CBB0044F0A374ACF0E4A3F0907FB57403F090F0
-:102CCB007816E0FBA3E0FAA3E0F9900002120DA244
-:102CDB007B807ABB79007800C3120D917013907FC3
-:102CEB00007480F0A374BBF0E4A3F0907FB5740381
-:102CFB00F0907816E0FBA3E0FAA3E0F99000021243
-:102D0B000DA27B007A7779017800C3120D916002D6
-:102D1B00C193907F00F0A37477F0A37401F0907FC0
-:102D2B00B57403F022907816E0FBA3E0FAA3E0F968
-:102D3B00900006120DA27B447AAC79007800C31286
-:102D4B000D917013907F007444F0A374ACF0E4A366
-:102D5B00F0907FB57403F0907816E0FBA3E0FAA334
-:102D6B00E0F9900006120DA27B807ABB7900780007
-:102D7B00C3120D917013907F007480F0A374BBF09D
-:102D8B00E4A3F0907FB57403F0907816E0FBA3E01A
-:102D9B00FAA3E0F9900006120DA27B007A77790175
-:102DAB007800C3120D916002C193907F00F0A37461
-:102DBB0077F0A37401F0907FB57403F0229078162E
-:102DCB00E0FBA3E0FAA3E0F990000A120DA27B440A
-:102DDB007AAC79007800C3120D917013907F007458
-:102DEB0044F0A374ACF0E4A3F0907FB57403F090BF
-:102DFB007816E0FBA3E0FAA3E0F990000A120DA20B
-:102E0B007B807ABB79007800C3120D917013907F91
-:102E1B00007480F0A374BBF0E4A3F0907FB574034F
-:102E2B00F0907816E0FBA3E0FAA3E0F990000A1209
-:102E3B000DA27B007A7779017800C3120D9170484F
-:102E4B00907F00F0A37477F0A37401F0907FB574BA
-:102E5B0003F022907FB4E04401F022907FE9E0245C
-:102E6B007F7016907816E0FBA3E0FAA3E0F99000D0
-:102E7B000E120C5D907F00F022907FB4E04401F0C5
-:082E8B0022907FB4E04401F045
-:012E9300221C
-:102E9400753625753724907974E064017054F0F523
-:102EA40035752201E52264017048907FA5E04480D5
-:102EB400F0907FA6E536F01246C0744F2535F582B2
-:102EC400E43479F583E0907FA6F01246C07435258A
-:102ED40035F582E43479F583E0907FA6F01246C09C
-:102EE400907FA57440F0120ACD0535E535C3940DE5
-:102EF40040B2907975E064016002E1DEF0907920DF
-:102F0400E064056002E18D7B0190795C04F0A374B8
-:102F140078F0A374B2F075330790795CE0FBA3E01A
-:102F2400FAA3E0F9900001120C5D700F90000412F6
-:102F34000C5D90792FF0120C29800690792F74FF84
-:102F4400F0E4F535752201753402E5226401703927
-:102F5400907FA5E04480F0907FA6E536F01246C04D
-:102F6400AF340534907FA6EFF01246C090792FE07D
-:102F7400907FA6F01246C0907FA57440F0120ACD4F
-:102F84000535E535C3940640C1907920E0640670A8
-:102F9400497B0190795F04F0A37478F0A374FFF087
-:102FA40075330390795FE0FBA3E0FAA3E0F99000A6
-:102FB40001120C5D701C900004120C5D907933F0CA
-:102FC400700374FFF0907933E0547FFFF025E0F054
-:0A2FD4008005E4907933F01247DF26
-:012FDE0022D0
-:102FDF009079787403F0907983E0907979F0A2AFCB
-:102FEF00E433F512C2AF120BA2E5126002D2AF2288
-:012FFF0022AF
-:10300000E4FE907920E0FDB405119078257401F07C
-:10301000A37478F0A374B2F0753507EDB40611907F
-:1030200078257401F0A37478F0A374FFF07535036C
-:10303000907FEBE014601114605B24026002410594
-:10304000907FB4E04401F022907FE9E0247F703D5E
-:10305000E4FFEFC39535502F907825E0FBA3E0FA0D
-:10306000A3E0F9900001120C5DFDCCEECC0E7400D3
-:103070002CF582E4347FF583EDF0907826E475F04A
-:103080000B120CF40F80CB907FB5EEF022907FB442
-:10309000E04401F022907FE9E0247E606414700235
-:1030A000215514700221A92403600221FDE4FFEFE1
-:1030B000C395355046907825E0FBA3E0FAA3E0F9EC
-:1030C000900003120C5DFDCCEECC0E74002CF5824A
-:1030D000E4347FF583EDF0900004120C5DFDCCEE3E
-:1030E000CC0E74002CF582E4347FF583EDF09078FB
-:1030F00026E475F00B120CF40F80B4907FB5EEF05F
-:1031000022E4FFEFC395355046907825E0FBA3E01D
-:10311000FAA3E0F9900005120C5DFDCCEECC0E7424
-:10312000002CF582E4347FF583EDF0900006120C5C
-:103130005DFDCCEECC0E74002CF582E4347FF5837B
-:10314000EDF0907826E475F00B120CF40F80B4903B
-:103150007FB5EEF022E4FFEFC39535504690782519
-:10316000E0FBA3E0FAA3E0F9900007120C5DFDCCB0
-:10317000EECC0E74002CF582E4347FF583EDF090F4
-:103180000008120C5DFDCCEECC0E74002CF582E430
-:10319000347FF583EDF0907826E475F00B120CF493
-:1031A0000F80B4907FB5EEF022E4FFEFC395355069
-:1031B00046907825E0FBA3E0FAA3E0F9900009121D
-:1031C0000C5DFDCCEECC0E74002CF582E4347FF562
-:1031D00083EDF090000A120C5DFDCCEECC0E740075
-:1031E0002CF582E4347FF583EDF0907826E475F0D9
-:1031F0000B120CF40F80B4907FB5EEF022907FB4E8
-:0C320000E04401F022907FB4E04401F0B3
-:01320C00229F
-:10320D007B017A78792B907800EBF0A3EAF0A3E9B3
-:10321D00F07401120C8A907800E0FBA3E0FAA3E0B1
-:10322D00F99000017401120C9C900002E4120C9CA8
-:10323D00907801E475F003120CF4907800E0FBA394
-:10324D00E0FAA3E0F97410120C8A907800E0FBA369
-:10325D00E0FAA3E0F99000017405120C9C900002B5
-:10326D00E4120C9C907801E475F003120CF4907844
-:10327D0000E0FBA3E0FAA3E0F97402120C8A907847
-:10328D0000E0FBA3E0FAA3E0F99000017402120C38
-:10329D009C900002E4120C9C907801E475F00312EE
-:1032AD000CF4907800E0FBA3E0FAA3E0F9740112AE
-:1032BD000C8A907800E0FBA3E0FAA3E0F9900001FE
-:1032CD007403120C9C900002E4120C9C907801E4A3
-:1032DD0075F003120CF4907800E0FBA3E0FAA3E084
-:1032ED00F97410120C8A907800E0FBA3E0FAA3E0C9
-:1032FD00F99000017406120C9C900002E4120C9CD3
-:10330D00907801E475F003120CF4907800E0FBA3C3
-:10331D00E0FAA3E0F97402120C8A907800E0FBA3A6
-:10332D00E0FAA3E0F99000017404120C9C900002E5
-:10333D00E4120C9C907801E475F003120CF4907873
-:10334D0000E0FBA3E0FAA3E0F97402120C8A907876
-:10335D0000E0FBA3E0FAA3E0F99000017404120C65
-:10336D009C9000027404120C9C907801E475F0039B
-:10337D00120CF4907800E0FBA3E0FAA3E0F97402DC
-:10338D00120C8A907800E0FBA3E0FAA3E0F990001C
-:10339D00017403120C9C9000027404120C9C907822
-:1033AD0001E475F003120CF4907800E0FBA3E0FA51
-:1033BD00A3E0F97402120C8A907800E0FBA3E0FA06
-:1033CD00A3E0F99000017402120C9C9000027404A9
-:1033DD00120C9C907801E475F003120CF4907800B7
-:1033ED00E0FBA3E0FAA3E0F97402120C8A907800D6
-:1033FD00E0FBA3E0FAA3E0F99000017401120C9C2C
-:08340D009000027404120C9CF3
-:013415002294
-:10341600E4FE907920E0FDB4051190781F7401F068
-:10342600A37478F0A374B2F0753507EDB406119065
-:10343600781F7401F0A37478F0A374FFF075350358
-:10344600907999E014601114605B24026002C10651
-:10345600907FB4E04401F022907997E014703EE446
-:10346600FFEFC39535502FCDEECD0E74212DF5828D
-:10347600E43479F583E0FD90781FE0FBA3E0FAA33E
-:10348600E0F9900001ED120C9C907820E475F00BA9
-:10349600120CF40F80CB9079757401F022907FB4F2
-:1034A600E04401F022907997E024FE6063147002F4
-:1034B600A164147002A1B224036002A1FEE4FFEF2E
-:1034C600C395355044CDEECD0E74212DF582E434EE
-:1034D60079F583E0FD90781FE0FBA3E0FAA3E0F91D
-:1034E600900003ED120C9CCDEECD0E74212DF582CD
-:1034F600E43479F583E0900004120C9C907820E483
-:1035060075F00B120CF40F80B69079757401F022E9
-:10351600E4FFEFC395354002C10DCDEECD0E74210B
-:103526002DF582E43479F583E0FD90781FE0FBA366
-:10353600E0FAA3E0F9900005ED120C9CCDEECD0E5D
-:1035460074212DF582E43479F583E0900006120C9F
-:103556009C907820E475F00B120CF40F80B4E4FF15
-:10356600EFC395354002C10DCDEECD0E74212DF57C
-:1035760082E43479F583E0FD90781FE0FBA3E0FA5E
-:10358600A3E0F9900007ED120C9CCDEECD0E742150
-:103596002DF582E43479F583E0900008120C9C90B6
-:1035A6007820E475F00B120CF40F80B4E4FFEFC33F
-:1035B60095355053CDEECD0E74212DF582E4347938
-:1035C600F583E0FD90781FE0FBA3E0FAA3E0F99015
-:1035D6000009ED120C9CCDEECD0E74212DF582E482
-:1035E6003479F583E090000A120C9C907820E475FB
-:1035F600F00B120CF40F80B6907FB4E04401F02279
-:07360600907FB4E04401F0E5
-:01360D00229A
-:10360E00E4FE907920E0FDB405109078287401F066
-:10361E00A37478F0A374B2F07F07EDB4061090781F
-:10362E00287401F0A37478F0A374FFF07F039078F0
-:10363E0028E0FBA3E0FAA3E0F9120C44FD907FEA28
-:10364E00E06D6012EEC39F500D907829E475F00B7B
-:10365E00120CF40E80D8907FEBE0146011146046CB
-:10366E0024026002E19A907FB4E04401F022907F40
-:10367E00E9E0247F7028EE6F7008907FB4E044017B
-:10368E00F022907828E0FBA3E0FAA3E0F990000185
-:10369E00120C5D907F00F0907FB57401F022907F48
-:1036AE00B4E04401F022907FE9E0247E6040146093
-:1036BE006F147002E16024036002E192EE6F7008F5
-:1036CE00907FB4E04401F022907828E0FBA3E0FA6A
-:1036DE00A3E0F9900003120C5D907F00F0900004BF
-:1036EE00120C5D907F01F0907FB57402F022EE6FA8
-:1036FE007008907FB4E04401F022907828E0FBA39C
-:10370E00E0FAA3E0F9900005120C5D907F00F090B6
-:10371E000006120C5D907F01F0907FB57402F022CE
-:10372E00EE6F7008907FB4E04401F022907828E0AC
-:10373E00FBA3E0FAA3E0F9900007120C5D907F0066
-:10374E00F0900008120C5D907F01F0907FB574022E
-:10375E00F022EE6F7008907FB4E04401F022907872
-:10376E0028E0FBA3E0FAA3E0F9900009120C5D90AB
-:10377E007F00F090000A120C5D907F01F0907FB5F3
-:10378E007402F022907FB4E04401F022907FB4E006
-:03379E004401F0F3
-:0137A1002205
-:1037A200C0E0C0F0C083C082C0D0E8C0E0E9C0E0A1
-:1037B200EAC0E0EBC0E0ECC0E0EDC0E0EEC0E0EF5C
-:1037C200C0E05391EF907FAB7410F0907983E05496
-:1037D200FDF0122FDFD0E0FFD0E0FED0E0FDD0E020
-:1037E200FCD0E0FBD0E0FAD0E0F9D0E0F8D0D0D0C5
-:0837F20082D083D0F0D0E03258
-:0637FA005391BFD22632FC
-:10380000E4FE907920E0FDB405109078227401F078
-:10381000A37478F0A374B2F07F07EDB4061090782B
-:10382000227401F0A37478F0A374FFF07F03907802
-:1038300022E0FBA3E0FAA3E0F9120C44FD90799892
-:10384000E06D6012EEC39F500D907823E475F00B8D
-:10385000120CF40E80D8907999E01460111460482D
-:10386000240260022185907FB4E04401F022907927
-:1038700097E014702BEE6F7009907FB4E04401F074
-:103880008017907921E0FD907822E0FBA3E0FAA375
-:10389000E0F9900001ED120C9C9079757401F02212
-:1038A000907FB4E04401F022907997E024FE6043D9
-:1038B00014606E147002214F24036002217DEE6FAC
-:1038C0007009907FB4E04401F08021907921E0FDFF
-:1038D000907822E0FBA3E0FAA3E0F9900003ED1258
-:1038E0000C9C907922E0900004120C9C90797574E5
-:1038F00001F022EE6F7008907FB4E04401F0229056
-:103900007921E0FD907822E0FBA3E0FAA3E0F990B2
-:103910000005ED120C9C907922E0900006120C9CA0
-:1039200022EE6F7008907FB4E04401F0229079217C
-:10393000E0FD907822E0FBA3E0FAA3E0F990000715
-:10394000ED120C9C907922E0900008120C9C22EE63
-:103950006F7008907FB4E04401F022907921E0FE7E
-:10396000907822E0FBA3E0FAA3E0F9900009EE12C0
-:103970000C9C907922E090000A120C9C22907FB45B
-:0C398000E04401F022907FB4E04401F02C
-:01398C002218
-:10398D00A2AFE433F512E4907983F0122FDF907F2C
-:10399D00E07490F0907FE17404F0E4907FDDF0909E
-:1039AD007FA1F0538EF875880575B82075F8014321
-:1039BD008E30F5C875CA7F75CBF843A82090797401
-:1039CD0004F0C222E4F50F907978F0A3F0907962BB
-:1039DD00F0A3F0A3F0907966F0A3F090797BF0A3BB
-:1039ED00F0907984F090797DF0907975F0A3F0A343
-:1039FD00F0C223C224C225C226C220907F9BE0F5CF
-:103A0D000A5420F50A700690797EF0800690797E32
-:103A1D007401F0907F9BE0F50A5402F50A70069050
-:103A2D00797FF0800690797F7401F0907978740237
-:103A3D00F0907984E0907979F090797FE0B4010984
-:103A4D00907979E054FEF08007907979E04401F0A7
-:103A5D00907979E0907984F0120BA29079787401C5
-:103A6D00F090797CE0907979F090797EE0B401095D
-:103A7D00907979E04404F08007907979E054FBF077
-:103A8D00907979E090797CF0120BA2E4907978F03E
-:103A9D00A304F0E4907988F0120BA2907FFC74DD02
-:103AAD00F0907FFF74FFF09079787401F0A3F0121D
-:103ABD000BA2E490797AF090798304F0122FDFE471
-:103ACD00907930F0907985F0A3F0A3F0122E9490B8
-:103ADD00792D7402F090798814F0C22FE4907968F2
-:103AED00F090798AF090796AF0A3F0751308751447
-:103AFD0008F516F515F51790798CF090798BF02265
-:103B0D007B017A787958907803EBF0A3EAF0A3E97A
-:103B1D00F07440120C8A907803E0FBA3E0FAA3E066
-:103B2D00F9900001740A120C9C900002120DF6001F
-:103B3D0000BB80900006120DF60000AC4490000A08
-:103B4D00120DF600017700907804E475F00F120C59
-:103B5D00F4907803E0FBA3E0FAA3E0F97440120CB3
-:103B6D008A907803E0FBA3E0FAA3E0F990000174DA
-:103B7D008C120C9C900002120DF60000BB80900080
-:103B8D0006120DF60000AC4490000A120DF600016D
-:103B9D007700907804E475F00F120CF4907803E040
-:103BAD00FBA3E0FAA3E0F97440120C8A907803E0CD
-:103BBD00FBA3E0FAA3E0F9900001748F120C9C9026
-:103BCD007804E475F00F120CF4907803E0FBA3E099
-:103BDD00FAA3E0F97441120C8A907803E0FBA3E09C
-:103BED00FAA3E0F99000017484120C9C907804E41F
-:103BFD0075F00F120CF4907803E0FBA3E0FAA3E04C
-:103C0D00F97461120C8A907803E0FBA3E0FAA3E04B
-:103C1D00F99000017481120C9C907804E475F00FFA
-:103C2D00120CF4907803E0FBA3E0FAA3E0F97461C1
-:103C3D00120C8A907803E0FBA3E0FAA3E0F9900060
-:063C4D00017401120C9C41
-:013C5300224E
-:103C5400C0E0C0F0C083C082C0D0E8C0E0E9C0E0EA
-:103C6400EAC0E0EBC0E0ECC0E0EDC0E0EEC0E0EFA5
-:023C7400C0E0AE
-:103C7600907FA2E0F50B907F74E0907970F0907FD2
-:103C860075E0907971F0907983E0FFFE5402FE7042
-:103C96000DEF4402F0122FDF9079747401F0E50BFA
-:103CA60020E228907970E0FEA3E07C002400F51164
-:103CB600EC3EF510907982E0FDAE10AF11120CBE0D
-:103CC600907970EFF09079897401F01248431248A8
-:103CD60076907989E064017032124108907989E41E
-:103CE600F0907F98E04440F0907F9EE04440F09052
-:103CF6007F957480F075E80112093275E80D907FA2
-:103D06009574C0F075E80DD220800575E801C220D3
-:103D160020202B90792DE0FFB40109750C67750DF5
-:103D260006750E0BEFB40209750C00750D00750EC5
-:103D36000CEFB40309750C00750D00750E1875CAE5
-:103D46006F75CBFED2CA5391EF907FAB7402F0F041
-:103D5600D0E0FFD0E0FED0E0FDD0E0FCD0E0FBD02C
-:103D6600E0FAD0E0F9D0E0F8D0D0D082D083D0F01D
-:033D7600D0E03268
-:103D790075332575342490795C7401F0A37478F057
-:103D8900A374B2F0202F02C117E4F5357522019012
-:103D9900795CE0FBA3E0FAA3E0F9900004120C5D62
-:103DA900F53675350674422535F582E43479F5839F
-:103DB900E536F00535E535B40CEBE535C3940D4032
-:103DC90002C198E52264016002C198907FA5E04490
-:103DD90080F0907FA6E533F01246C0744F2535F583
-:103DE90082E43479F583E0907FA6F01246C07442EC
-:103DF9002535F582E43479F583E0907FA6F0124603
-:103E0900C0907FA57440F0120ACD053580ACE4F569
-:103E19003575220190795CE0FBA3E0FAA3E0F99003
-:103E29000004120C5DF53675350674352535F582B5
-:103E3900E43479F583E536F00535E535B40CEBE581
-:103E490035C3940D5049E52264017043907FA5E084
-:103E59004480F0907FA6E533F01246C0744F2535B3
-:103E6900F582E43479F583E0907FA6F01246C074B8
-:103E7900352535F582E43479F583E0907FA6F01293
-:0F3E890046C0907FA57440F0120ACD053580B079
-:013E98002207
-:103E99009078097401F0A37478F0A374B2F0E4FF88
-:103EA900FE907809E0FBA3E0FAA3E0F9EF120C8A8F
-:103EB900907809E0FBA3E0FAA3E0F9900001E4128D
-:103EC9000C9C9000027415120C9C900003E4120CD7
-:103ED9009C90000474FF120C9C900005E4120C9C49
-:103EE90090000674C3120C9C900007E4120C9C907D
-:103EF9000008E4120C9C900009E4120C9C90000A42
-:103F09007401120C9C90780AE475F00B120CF40FF2
-:103F19000EBE078D9078097401F0A37478F0A3742C
-:103F2900FFF0E4FFFE907809E0FBA3E0FAA3E0F9D3
-:103F3900EF120C8A907809E0FBA3E0FAA3E0F9906C
-:103F49000001E4120C9C9000027415120C9C900064
-:103F590003E4120C9C9000047480120C9C900005E0
-:103F6900E4120C9C90000674C3120C9C900007E4A8
-:103F7900120C9C900008E4120C9C900009E4120CAD
-:103F89009C90000A7401120C9C90780AE475F00B5D
-:083F9900120CF40F0EBE038DA3
-:013FA10022FD
-:103FA200E4FE753DFF753E05753F12AB3DAA3EA985
-:103FB2003F900001120C5D6402702FCDEECD0EED2C
-:103FC2006F700122900002120D0A85F03BF53C62EF
-:103FD2003BE53B623CE53C623B29FDE53B3AC9EDF2
-:103FE200C9753DFFF53E893F80C17B007A007900AB
-:013FF20022AC
-:093FF30053D8EF43D820C22D324F
-:043FFC005391DF32CC
-:10400000907987E0B4011D907985E0B401031242F4
-:10401000AA907986E0B40103121800E4907985F043
-:10402000A3F0A3F0122E94907F9BE0F50A5402F5C2
-:104030000A700490797FF0907F9BE0F50A5402FFAC
-:10404000F50ABF020690797F7401F0907F9BE0F53E
-:104050000A5420F50A700490797EF0907F9BE0F579
-:104060000A5420FFF50ABF200690797E7401F09073
-:10407000797FE0FF907981E06F6038907978740201
-:10408000F0907984E0907979F0EFB40106E054FE85
-:10409000F08007907979E04401F0907979E09079A7
-:1040A00084F0A2AFE433F512C2AF120BA2E51260A6
-:1040B00002D2AF90797EE0FF907980E06F60389017
-:1040C00079787401F090797CE0907979F0EFB4011F
-:1040D00006E04404F08007907979E054FBF0907991
-:1040E00079E090797CF0A2AFE433F512C2AF120B05
-:1040F000A2E5126002D2AF90797FE0907981F090D2
-:08410000797EE0907980F02245
-:1041080090792DE064017035907970E0FFD3942D9B
-:10411800402B9079697401F0907968E004F0E0D35D
-:10412800940F4019E4F0EFD39431400890792D743E
-:1041380003F0800690792D7402F012100090792D0A
-:10414800E0B4022C907970E0FFC3942F5022EFD393
-:10415800942A401C9079697401F0907968E004F021
-:10416800E0D3940F400AE4F090792D04F012100087
-:1041780090792DE0B40226907970E0D39431401DF7
-:104188009079697401F0907968E004F0E0D3940FB5
-:10419800400BE4F090792D7403F012100090792D03
-:1041A800E06403703F907970E0FFC3945F503590EE
-:1041B80079697401F0907968E004F0E0D3940F40D5
-:1041C80023E4F0EFC3942F500CEFD3942A400690C9
-:1041D800792D7401F0EFD3942F400690792D740255
-:1041E800F0121000907969E07005907968F022E487
-:0541F800907969F0223E
-:1041FD007B017A78794C907806EBF0A3EAF0A3E98D
-:10420D00F0E4120C8A907806E0FBA3E0FAA3E0F943
-:10421D009000017401120C9C907807E475F0031264
-:10422D000CF4907806E0FBA3E0FAA3E0F9E4120C9D
-:10423D008A907806E0FBA3E0FAA3E0F99000017400
-:10424D0002120C9C907807E475F003120CF4907830
-:10425D0006E0FBA3E0FAA3E0F9E4120C8A907806DD
-:10426D00E0FBA3E0FAA3E0F99000017403120C9CAB
-:10427D00907807E475F003120CF4907806E0FBA338
-:10428D00E0FAA3E0F9E4120C8A907806E0FBA3E0D3
-:0C429D00FAA3E0F99000017404120C9CDC
-:0142A90022F2
-:1042AA00E4FFFE7B0190780C04F0A37478F0A37409
-:1042BA002BF090780CE0FBA3E0FAA3E0F99000025F
-:1042CA00120C5DFD90799AE06D6013EFC39405506E
-:1042DA000D0F90780DE475F003120CF480D48D3331
-:1042EA0090780CE0FBA3E0FAA3E0F9900001120C2D
-:1042FA005DFD90799BE0FC6D6013EEC3940B500D4D
-:10430A000E90780DE475F003120CF480D38C34EF20
-:10431A0064056003BE0B08907FB4E04401F022906C
-:10432A00780CE0FBA3E0FAA3E0F9120C44FF24F0B6
-:10433A006008240E700E12494D22907920E534F05F
-:0B434A00121B2A22907FB4E04401F017
-:014355002245
-:0C435600787FE4F6D8FD75813F02439D9E
-:104362000248A9E493A3F8E493A34003F68001F280
-:1043720008DFF48029E493A3F85407240CC8C3335C
-:10438200C4540F4420C8834004F456800146F6DF2B
-:10439200E4800B0102040810204080904661E47E14
-:1043A200019360BCA3FF543F30E509541FFEE49320
-:1043B200A360010ECF54C025E060A840B8E493A3E7
-:1043C200FAE493A3F8E493A3C8C582C8CAC583CA12
-:1043D200F0A3C8C582C8CAC583CADFE9DEE780BECA
-:1043E200C0E0C0F0C083C082C0D0E8C0E0E9C0E055
-:1043F200EAC0E0EBC0E0ECC0E0EDC0E0EEC0E0EF10
-:10440200C0E0C2CAC2CF90797AE0B4011F124BAEAB
-:1044120012475853A8A0907FAEE4F01207AA124B9D
-:10442200B7907FAE741FF043A805800353A8A05332
-:10443200A8FA75E80112091575E80D43A805D0E040
-:10444200FFD0E0FED0E0FDD0E0FCD0E0FBD0E0FA0F
-:10445200D0E0F9D0E0F8D0D0D082D083D0F0D0E054
-:014462003227
-:10446300907FECE0F50914601D14602A1460371482
-:10447300604424047050907962E0907F00F0907F54
-:10448300B57401F08047907963E0907F00F0907FEE
-:10449300B57401F08037907964E0907F00F0907FED
-:1044A300B57401F08027907966E0907F00F0907FEB
-:1044B300B57401F08017907967E0907F00F0907FEA
-:0F44C300B57401F08007907FB4E04401F0D3227C
-:0444D2008D368B3761
-:1044D600123FA2EA496057120C447E0029FFEE3AC9
-:1044E600C9EFC97538FFF539893AAB38AA39A93AFF
-:1044F600900001120C5DFF64046005EF6405702EE8
-:10450600EFB40415900002120C5D6536700B900036
-:1045160003120C5D6537700122120C447E0029FFE0
-:10452600EE3AC9EFC97538FFF539893A80BC7B0088
-:044536007A0079008E
-:01453A00225E
-:10453B00E4FF7B0190781C04F0A37478F0A3744C17
-:10454B00F090781CE0FBA3E0FAA3E0F990000212D4
-:10455B000C5DFE907FECE06E6013EFC39404500D86
-:10456B0090781DE475F003120CF40F80D4BF04098E
-:10457B00907FB4E04401F08014907921E0FF9078B3
-:10458B001CE0FBA3E0FAA3E0F9EF120C8A907FC5C5
-:03459B007401F0B8
-:01459E0022FA
-:0E459F00C0E0C083C082C0D0EEC0E0EFC0E03C
-:1045AD00907985E064016005A3E0B4012D907987D1
-:1045BD007401F0E4FF907FC5E0FEEFC39E501B74C5
-:1045CD00C02FF582E4347EF583E0FE74212FF58251
-:1045DD00E43479F583EEF00F80DB5391EF907FAAF1
-:0445ED00E04401F0B5
-:0F45F100D0E0FFD0E0FED0D0D082D083D0E03237
-:10460000E4FF7B0190781904F0A37478F0A3744C54
-:10461000F0907819E0FBA3E0FAA3E0F99000021211
-:104620000C5DFE907FECE06E6013EFC39404500DC0
-:1046300090781AE475F003120CF40F80D4BF0408CC
-:10464000907FB4E04401F022907819E0FBA3E0FAF7
-:10465000A3E0F9120C44907F00F0907FB57401F054
-:014660002237
-:1046610001180201190A011C00C128C129011F01F9
-:0F46710044799F000000004179A3004179A40023
-:0446800041798900F3
-:10468400012201417931FF417934004D79353F3FB1
-:1046940000080001000000000000154D79423F3F72
-:1046A40006080407000000000000154D794F0A0AAF
-:0B46B4000900010902030405060708C5
-:0146BF0000FA
-:1046C000120ACD907FA5E0F521E5215401F5216482
-:1046D000016028E52264017022907FA5E0F5215455
-:1046E00002F5217003752201907FA5E0F5215404A5
-:0C46F000FFF521BF04D375220180CE220B
-:0446FC0053D8F73266
-:104700000249FA00023C54000217E400024A120077
-:104710000237A2000247FF00024A410002459F0003
-:1047200002498E000249AB00024A5800024A6F005B
-:10473000024A8600024A9D00024AB400024ACB00A7
-:10474000024AE200024AF900024B1000024B270025
-:08475000024B3E00024B550034
-:10475800E518701490798CE004F090798BE0C3949C
-:10476800004015E014F0801090798BE004F0A3E08D
-:10477800C394004003E014F090798BE0D394144084
-:1047880004E4F518F090798CE0D39414400575187A
-:0447980001E4F02226
-:10479C00907FD7E0F533907FECE0F50914601114AD
-:1047AC00601B24027024907FEAE0907962F08021F3
-:1047BC00907FEAE0907963F01210008014907FEA09
-:1047CC00E0907964F01228018007907FB4E04401F6
-:0247DC00F0D318
-:0147DE0022B8
-:1047DF009079787404F0907933E0907979F0A2AF02
-:1047EF00E433F512C2AF120BA2E5126002D2AF2270
-:0147FF003287
-:024800008F36F1
-:10480200E4F5377538FF753907753A01AB38AA39BF
-:10481200A93A900001120C5DB4031FAF370537EFC0
-:104822006536700122120C447E0029FFEE3AC9EF70
-:10483200C97538FFF539893A80D27B007A00790050
-:014842002253
-:1048430030262FC22690792DE0FFB40109E4F50C40
-:10485300750DF8750E0AEFB40209E4F50C750DF049
-:10486300750E0BEFB40309E4F50C750DF8750E170F
-:03487300D222222C
-:1048760030252FC22590792DE0FFB40109750CC0B3
-:10488600750D14750E0BEFB40209E4F50C750D10D9
-:10489600750E0CEFB40309E4F50C750D18750E18BA
-:0348A600D22222F9
-:1048A900E4F532120F50202E10E532C3940250095C
-:1048B9000532D23012490580ED302E05121457C247
-:0F48C9002E302D0612079A1248D912400080EAAD
-:0148D80022BD
-:1048D900907FD6E0F51D5480F51D6480701DC2AF30
-:1048E900E04480F0E04401F07F0C7E00124B6C90B4
-:0C48F9007FD6E054FEF05387FED2AF22C1
-:10490500907FD6E054FBF0E04408F0303004E044FA
-:1049150002F07FDC7E05124B6C907FD6E054F7F0F9
-:05492500E04404F02253
-:10492A00907FEBE0147014907FE9E0247F7004120A
-:10493A00460022907FB4E04401F022907FB4E04424
-:03494A0001F02257
-:10494D00907FEBE0147013907FE9E0147004124532
-:10495D003B22907FB4E04401F022907FB4E044010B
-:02496D00F02236
-:10496F00E4FF74E82FF582E4347FF583E0FE74965C
-:0E497F002FF582E43479F583EEF00FBF08E4E3
-:01498D002207
-:10498E00C0E0C083C0825391EF907FA9E04402F053
-:0D499E00907FB77403F0D082D083D0E03258
-:1049AB00C0E0C083C0825391EF907FAAE04402F035
-:0D49BB00907FC77403F0D082D083D0E0322B
-:1049C800907FD6E030E712E04401F07F147E0012B9
-:0A49D8004B6C907FD6E054FEF022F5
-:1049E200E4F51A751B0190799104F0A3F0E4A3F0A9
-:0849F200A3740AF0E4A3F02213
-:1049FA00C0E0C083C082D22E5391EF907FAB740186
-:084A0A00F0D082D083D0E0322D
-:104A1200C0E0C083C082D22D5391EF907FAB740867
-:084A2200F0D082D083D0E03215
-:104A2A00907FEAE0F508E4907962F0A3F0A3F090B1
-:074A3A007966F0A3F0D3221E
-:104A4100C0E0C083C0825391EF907FA9E04401F0A0
-:074A5100D082D083D0E032D7
-:104A5800C0E0C083C0825391EF907FA9E04404F086
-:074A6800D082D083D0E032C0
-:104A6F00C0E0C083C0825391EF907FAAE04404F06E
-:074A7F00D082D083D0E032A9
-:104A8600C0E0C083C0825391EF907FA9E04408F054
-:074A9600D082D083D0E03292
-:104A9D00C0E0C083C0825391EF907FAAE04408F03C
-:074AAD00D082D083D0E0327B
-:104AB400C0E0C083C0825391EF907FA9E04410F01E
-:074AC400D082D083D0E03264
-:104ACB00C0E0C083C0825391EF907FAAE04410F006
-:074ADB00D082D083D0E0324D
-:104AE200C0E0C083C0825391EF907FA9E04420F0E0
-:074AF200D082D083D0E03236
-:104AF900C0E0C083C0825391EF907FAAE04420F0C8
-:074B0900D082D083D0E0321E
-:104B1000C0E0C083C0825391EF907FA9E04440F091
-:074B2000D082D083D0E03207
-:104B2700C0E0C083C0825391EF907FAAE04440F079
-:074B3700D082D083D0E032F0
-:104B3E00C0E0C083C0825391EF907FA9E04480F023
-:074B4E00D082D083D0E032D9
-:104B5500C0E0C083C0825391EF907FAAE04480F00B
-:074B6500D082D083D0E032C2
-:104B6C008E338F34E5341534AE33700215334E600A
-:074B7C000512078980EE22FB
-:0F4B8300907FEAE0B4FF041230002212360E22B7
-:0E4B9200C0E0C28BD224302302C223D0E03216
-:0E4BA000907F00E508F0907FB57401F0D322FD
-:094BAE00302405C224751801220F
-:094BB700302305C223E4F51822A5
-:074BC00053C0FE53C0FD329B
-:064BC70053917FD225325C
-:054BCD00C289D2233271
-:034BD200C28D325F
-:034BD500C28F325A
-:024BD800D322E6
-:024BDA00D322E4
-:024BDC00D322E2
-:024BDE00D322E0
-:024BE000D322DE
-:024BE200D322DC
-:024BE400C322EA
-:014BE60022AC
-:00000001FF
-/*
- * This firmware is for the Emagic EMI 2|6 Audio Interface
- *
- * The firmware contained herein is Copyright (c) 1999-2002 Emagic
- * as an unpublished work. This notice does not imply unrestricted
- * or public access to this firmware which is a trade secret of Emagic,
- * and which may not be reproduced, used, sold or transferred to
- * any third party without Emagic's written consent. All Rights Reserved.
- *
- * This firmware may not be modified and may only be used with the
- * Emagic EMI 2|6 Audio Interface. Distribution and/or Modification of
- * any driver which includes this firmware, in whole or in part,
- * requires the inclusion of this statement.
- */
-/*
-VERSION=1.0.2.916
-DATE=12.02.2002
-*/
diff --git a/firmware/emi26/loader.HEX b/firmware/emi26/loader.HEX
deleted file mode 100644
index 77c439f6565b..000000000000
--- a/firmware/emi26/loader.HEX
+++ /dev/null
@@ -1,116 +0,0 @@
-:0300000002031CDC
-:03004300020400B4
-:10010000907FE9E0245B6060240260030201BE90FE
-:100110007FEAE0750A00F50BA3E0FEE4EE420A90E8
-:100120007FEEE0751500F516A3E0FEE4EE4215E55E
-:1001300016451570030201BEE4907FC5F0907FB4B0
-:10014000E020E3F9907FC5E0F50C120277AF0C7E5A
-:1001500000EF250BF50BEE350AF50AC3E5169FF502
-:1001600016E5159EF51580C7907FEAE0750A00F543
-:100170000BA3E0FEE4EE420A907FEEE0751500F579
-:1001800016A3E0FEE4EE4215E51645156030E49056
-:100190007FC5F0907FB4E020E3F9907FC5E0F50CD7
-:1001A00012028FAF0C7E00EF250BF50BEE350AF532
-:0F01B0000AC3E5169FF516E5159EF51580CAC31F
-:0101BF00221D
-:1001C000C220D2E843D820907FAB74FFF0907FA983
-:1001D000F0907FAAF05391EF907F95E044C0F090AB
-:1001E0007F98E044C0F0907F9EE044C0F0E4907FB0
-:1001F00094F0907F9DE0440FF0907F97E054F0F0F2
-:10020000907FAFE04401F0907FAEE0440DF0D2AFBC
-:10021000907F97E054F0F020204275140075130091
-:100220007512007511007F487E927D007C00AB1432
-:10023000AA13A912A811C312049A50DB2020D87A5D
-:100240000079007800E5142401F514EA3513F5135C
-:10025000E93512F512E83511F51180CA3020FD128A
-:1002600001005007907FB4E04401F0907FB4E04477
-:0602700002F0C22080E64E
-:010276002265
-:10027700E50CFFE50BF582E50AF58375927E74C000
-:08028700F8E208F0A3DFFA22FF
-:10028F00907F96858392A8827902900000E0B40057
-:10029F00377401F0907F93E054FCF0907F96E05418
-:1002AF00FCF0907F9CE04403F0907F94E0547FF04B
-:1002BF00907F97E04480F0907F9DE04480F0907FA6
-:1002CF0097E0547FF04480F0E50CFF907EC0E0F59E
-:1002DF0028E4A24733F269F2E4A24633F269F2E46A
-:1002EF00A24533F269F2E4A24433F269F2E4A24385
-:1002FF0033F269F2E4A24233F269F2E4A24133F23B
-:0D030F0069F2E4A24033F269F2A3DFC222DA
-:0C031C00787FE4F6D8FD758129020363A8
-:100328000201C0E493A3F8E493A34003F68001F22A
-:1003380008DFF48029E493A3F85407240CC8C333D6
-:10034800C4540F4420C8834004F456800146F6DFA5
-:10035800E4800B0102040810204080900484E47EAD
-:10036800019360BCA3FF543F30E509541FFEE4939A
-:10037800A360010ECF54C025E060A840B8E493A361
-:10038800FAE493A3F8E493A3C8C582C8CAC583CA8C
-:10039800F0A3C8C582C8CAC583CADFE9DEE780BE44
-:1003A800C0E0C083C082907FC4E4F05391EF907F97
-:0B03B800AB7404F0D082D083D0E032A0
-:1003C300C0E0C083C082D2205391EF907FAB740111
-:0803D300F0D082D083D0E032AB
-:1003DB00C0E0C083C0825391EF907FAB7402F0D02A
-:0603EB0082D083D0E03255
-:0103F10032D9
-:0103F20032D8
-:0103F30032D7
-:0103F40032D6
-:0103F50032D5
-:0103F60032D4
-:0103F70032D3
-:0103F80032D2
-:0103F90032D1
-:0103FA0032D0
-:0103FB0032CF
-:0103FC0032CE
-:0103FD0032CD
-:0103FE0032CC
-:0103FF0032CB
-:100400000203C3000203DB000203A80002046E0023
-:10041000020458000203F1000203F2000203F30099
-:100420000203F4000203F5000203F6000203F700E2
-:100430000203F8000203F9000203FA000203FB00C2
-:100440000203FC000203FD000203FE000203FF00A2
-:080450000204AB000204AC0041
-:10045800C0E0C083C0825391EF907FAB7410F0D09E
-:0604680082D083D0E032D7
-:10046E00C0E0C083C0825391EF907FAB7408F0D090
-:06047E0082D083D0E032C1
-:10048400020A000F010C11040D00000000410000DD
-:010494000067
-:04049500021700004A
-:010499000062
-:10049A00EB9FF5F0EA9E42F0E99D42F0E89C45F0B8
-:0104AA00222F
-:0104AB00321E
-:0104AC00321D
-:1011000012011001000000406A0801010001010203
-:10111000000109022000010103A0000904000002EF
-:10112000FF0000040705820240000007050202409C
-:10113000000004030904260341006E0063006800F8
-:101140006F007200200043006800690070007300A7
-:101150002C00200049006E0063002E00280346008A
-:10116000690072006D007700610072006500200068
-:101170004600720061006D00650057006F0072004C
-:101180006B0073002A0343006F006E006600690065
-:101190006700750072006100740069006F006E00E6
-:1011A000200053007400720069006E006700220383
-:1011B00049006E0074006500720066006100630003
-:1011C0006500200053007400720069006E00670023
-:0211D00000001D
-:00000001FF
-/*
- * This firmware is for the Emagic EMI 2|6 Audio Interface
- *
- * The firmware contained herein is Copyright (c) 1999-2002 Emagic
- * as an unpublished work. This notice does not imply unrestricted
- * or public access to this firmware which is a trade secret of Emagic,
- * and which may not be reproduced, used, sold or transferred to
- * any third party without Emagic's written consent. All Rights Reserved.
- *
- * This firmware may not be modified and may only be used with the
- * Emagic EMI 2|6 Audio Interface. Distribution and/or Modification of
- * any driver which includes this firmware, in whole or in part,
- * requires the inclusion of this statement.
- */
diff --git a/firmware/emi62/bitstream.HEX b/firmware/emi62/bitstream.HEX
deleted file mode 100644
index a0f4f570f076..000000000000
--- a/firmware/emi62/bitstream.HEX
+++ /dev/null
@@ -1,6107 +0,0 @@
-:10801000FFFFFFFFAA9955663000800100000007AE
-:10802000300160010000000D3001200100803F2D73
-:108030003000C00100000000300080010000000995
-:10804000300020010000000030008001000000012D
-:10805000300040005000581A80121000000000004C
-:108060000000000000000000000000000000000010
-:108070000000000000000000000000000000000000
-:10808000000000000000014004800000000000002B
-:1080900000121000000000000000000000000000BE
-:1080A00000000000000000000000000000000000D0
-:1080B0000000000000000000000000000000014877
-:1080C000048000000000000000020000000000002A
-:1080D00000000000000000000000000000000000A0
-:1080E0000000000000000000000000000000000090
-:1080F000000000000000000000C0000000000000C0
-:10810000000200000000000000000000000000006D
-:10811000000000000000000000000000000000005F
-:10812000000000000000000000000000000000004F
-:1081300000800000000000000012000000000000AD
-:10814000000000000000000000000000000000002F
-:10815000000000000000000000000000000000001F
-:10816000000000000000000004800000000000008B
-:10817000801200000000000000000000000000006D
-:1081800000000000000000000000000000000000EF
-:1081900000000000000000000000000000000000DF
-:1081A000009000000000000000120000000000002D
-:1081B00000000000000000000000000000000000BF
-:1081C00000000000000000000000000000000000AF
-:1081D0000000000000000008049000000000000003
-:1081E0007F100034000D00034000D0003400050073
-:1081F000074001D00074001D00074001D00074004A
-:108200001D8007E001B8006E001B8006E0013837D2
-:10821000C490000000000000C001FC80FB3036C8A4
-:108220004E0903FC84FF103BC00EC8072280FF22CA
-:1082300033C00FC8336E00FB803F200DC253D48083
-:10824000CC3A3F000CF103F0007000000000000089
-:108250008000ED60BF6023F00D82123C608F7023C0
-:10826000F0088802A540BFD063D60B88022E0CBB55
-:10827000802E20888D02E64080602E300AB11220C8
-:1082800004300000000000008805CC80A3402CC40E
-:108290004A00128C88A32220C40A904204A9A30099
-:1082A00024C88B8002CC00B3002E01090802840090
-:1082B00080202C100A3242220170000000000000D1
-:1082C000C015AC04B3002AC00808A28C008B00A221
-:1082D000C1109842A700BB0166C10B8002AC04BB71
-:1082E000002E000BB812E40289080E400AB00230DA
-:1082F00004600000000000000010AC00EB003EC075
-:108300004AB823EC18EB0032C00E2C122210EB00FE
-:1083100026C04F0043ED00FB002E240D8013E40027
-:10832000C8D07C120EB003400470000000000000B2
-:10833000E100BC00FF0035C04FE0037C08FF0117DF
-:10834000C24DC003F408F7003BC007C0037C80FFA8
-:10835000243F400CF001F404BC083F280FF00378E0
-:1083600000600000000000004010AC08FB043AC8A8
-:108370000F9403EC10F30034C00EB0036104FB0053
-:1083800036C00EA3032C80FB723E020F8A03E40268
-:10839000C9802A500FB003D0042000000000000064
-:1083A000CA443C00BF0003C00880037C00BF003FFC
-:1083B000E20890436000BF0037C00890016D00BB29
-:1083C000402C100BB042D7C089002A7C0BF002F27F
-:1083D0000040000000000000E2054C00B30020D582
-:1083E0004A00000C0493000CF00B09020801B320B2
-:1083F00028C00A0C0A0E00B3002430090002C6107F
-:10840000804220008BB002F8005000000000000005
-:1084100022011E00B79421E448D9125E40B790298A
-:10842000E08B6912D68037822CE8084A025E00B7DA
-:10843000A42D200B7902D608869029A00B7902D8AA
-:10844000004000000000000048000C00FBA028E8ED
-:108450000E2A028C00D30064C00F00430EC4F30048
-:1084600078EC0E0A430E2073E03C024F0003C44038
-:10847000C30038C00F3003D202000000000000002B
-:10848000401DBC00FF00BCCC0EB003EC20FB003C48
-:10849000C20C20036C50F30036C40F4003FC08FFED
-:1084A0001A3F800FF001E430FF023FC00FF063D0AD
-:1084B0000660000000000000A815EC40FB00B2D8E8
-:1084C0000CB0012D20DB013AC88C3803A800FB4812
-:1084D0003EC90F8003EC40FB013E000F0803A408D7
-:1084E000FA80B2800FB1026A007000000000000044
-:1084F00048191C80BF3021CA08F00A0C808F502117
-:10850000C20870509C00B70039C40B40029C04B7ED
-:108510002025400B70021480B60021800BF8021257
-:108520000460000000000000C0009E00B7B021EC15
-:108530000B7812DE8497800DE028F802DE00B790F9
-:108540002DE40B68825E80B7A029200B48029600BC
-:10855000B78021E10B7A027040200000000000008B
-:108560004804CC00B30020C00B38028C04830028E0
-:10857000C08839024C40B30428C01B10028C01B3E0
-:108580000424884B31020400B38020F20B30020235
-:108590002430000000000000E805A800FA00328046
-:1085A0000FE803E800DA013A808CED03FB04FA00DF
-:1085B0003E800F6C03FBC8BEC21F800FE503A800FE
-:1085C000FE4833804FA0037A0460000000000000E2
-:1085D0004800E000F8003C000C81936000F8013690
-:1085E000100F8003A020F8002A018F8413E100F807
-:1085F0001836000F8013E000F8203E140F8003D2DD
-:1086000080300000000000000800E400F100AA40F3
-:108610000C90032400E10038401C9003E400F9A012
-:108620003A40479A93A280F8103E400B9403E640EC
-:10863000F9C03E680B100302843000000000000007
-:108640008004E404B9002240089002240489003622
-:1086500040089002E404B9802E404F94036110E872
-:10866000402E400B9042E604B9002E400B900220B1
-:10867000001000000000000018042400B90022408F
-:108680000A10520404A9042A4008B002E401B90007
-:108690002E400B9002A80DB8402E40099402E50030
-:1086A000B9042E400B9002060040000000000000BC
-:1086B00008040480B12020C80A10420490812004DC
-:1086C000C8083026C400B1202C480B90024501B1E7
-:1086D000402C400B1282C400B12B2C4A0B12820298
-:1086E0000100000000000000B8082148F8503200E6
-:1086F0004E850B2140A8522A00088023E140F80053
-:108700003A140FA043A800F8003E000F8203E000D7
-:10871000F0203E884F820B2E035000000000000026
-:108720009819E440F91134442DD003E450791038FD
-:10873000442FD003F510F9103E45065003E500E93B
-:10874000403F400FD043F500FD283F400F9283E6A5
-:1087500006700000000000000801E600D9903769AB
-:108760004D90236780D9E037680ED007A4000586B6
-:108770003E660D50232600C9823D400DD8073602C3
-:10878000CDC033600C9C03060070000000000000A8
-:108790003810E28088A22210288A82238488A022AE
-:1087A00014488042820088402E30088002A200D8FF
-:1087B00090260008840A2100C8A0A214288C020E6A
-:1087C00004300000000000000805C52091402C4442
-:1087D0001810028504B1400C400A10068430814014
-:1087E0002C4859101A046081092E401B14022500E0
-:1087F00091E02060081602000170000000000000F7
-:108800001815A40081002A41089002A400A1002AA2
-:108810004108B08224118B002E40189102A00498C8
-:10882000202E541B90822C0089102244889002062E
-:108830000460000000000000A015E400D9003E40E4
-:108840004C9003A410F9003E408E1002A4C2C9004F
-:108850003E400D16130184C8203C600F90120400A6
-:10886000D94032500C9003288470000000000000B2
-:1088700028018400F90036404F994A44009900B419
-:10888000400F9013E600F9003C400F9003E300F81E
-:108890000136400C9903E402F9803E604F900BCA08
-:1088A00000600000000000002810A000D8003C007C
-:1088B0001D80032000E80032000C8483E010E820D3
-:1088C00032008E84032180C8003A190F0403E0248B
-:1088D000F0023C000F80138A04200000000000001A
-:1088E000280528028A010FA268A00028008A0077C4
-:1088F0008068E012E800DE00368108E0037A08AE06
-:10890000C42F8008ED02FA00BEA03B800BA0420AF3
-:10891000004000000000000028854C0093002CC09F
-:1089200088B0020C14A30420C4183802EC1093542D
-:1089300028C00A00024E00834968C0023942CE4076
-:10894000B3002CE60BB0028B0050000000000000CA
-:1089500020011C0887202C8018F2221C008710217F
-:10896000C0087082DC8096802DC00A40027D4027BE
-:10897000646DD0486042D805B60429C04B72022805
-:10898000004000000000000028083E88D7E03DE0DD
-:10899000087C423E00E38220E00C6803DF04D780BD
-:1089A0003BE04E480A5E80C7C219E00E7803D60845
-:1089B000F7803DE00FF803AA02000000000000006D
-:1089C000081DAC40FB407E800E3683ED40DB603EF0
-:1089D000800FA003ED28DA0032C40CB00BCC00FBF2
-:1089E000003EC00E8013E010F8003E000FB153C2ED
-:1089F00006600000000000004005FE00FFC033E0FC
-:108A00000CF9037F04CFD03FE40FB803FE00FF94BE
-:108A10003FE00FC8037E10F3803BE00FF803FE48F1
-:108A2000ED80332404F803300070000000000000E3
-:108A3000A8119C80BF04212808F8021EC0CF9021F5
-:108A40004C0B5A42DE00B7802CE80B04021C00B726
-:108A5000A035108F7113DEC0841021800D71022AA1
-:108A6000046000000000000080409C08B70025C89A
-:108A7000087102CC80970029C08B7206DC08B50013
-:108A80002DC80B40021C40BF1021C00B7402D480C3
-:108A9000A7402141087002040020000000000000EF
-:108AA0006014CC00B3002400083482AC1183002091
-:108AB000004B1826CF20B1062CC10B32020E08B392
-:108AC0008824320A301284088000A034283002182A
-:108AD0000430000000000000A811BC00FF00B640F8
-:108AE0002CF443FC01DF003A00039203FF88F900F5
-:108AF0002FC01B0E4B2E90FBE030320B9802EC087F
-:108B00006BC032C008F0093E0460000000000000A5
-:108B10008000EC00F3003AC00FB0016C00FB003A9B
-:108B2000100FB403EC00F0003CC00F800BAD20FB35
-:108B3000403E1007A863E000FB803ED80FB003E082
-:108B400000300000000000000110FC00FF00720077
-:108B50000FF023FC00DF003F400FC003DC008F005C
-:108B600033C10CC003BE00FF903B280E59032E00FA
-:108B70007B0032C40FB003D00430000000000000BE
-:108B8000C1046C00BB0062A00FB002EC098B002E88
-:108B9000300BA803AC00FAC122C1088C022C00B330
-:108BA000812A000D88B22200B3C022C80BB04261F6
-:108BB000401000000000000080056C00BB01226234
-:108BC0000BB002EC048B002EA2498826EC00A88092
-:108BD00022C028820AACA0BB0822C008800A2884D0
-:108BE000B9C0A2000BB002E000400000000000008D
-:108BF00008040C00B31020480A3202CC8083012400
-:108C0000000B02068C60A02020C80801020C00B3F3
-:108C10000028000920020880B100A0800B30024229
-:108C2000010000000000000000096C00FF00A20E1F
-:108C30000BF103FC08CF203EC00F8003FC84A8206A
-:108C4000B2C88C8003AC44FB703AC00E90032CA4D5
-:108C5000FB00B2400FB003C0035000000000000052
-:108C6000A01DFC00FF263E000FB613ED00FB103FD9
-:108C7000000FC113AC80F8123EC64F4243FC04FF04
-:108C8000313F000FF003EC00FF00BFC08FF003E89E
-:108C90000670000000000000C001FC40FC8036C8E7
-:108CA0000F0903C200F8C033CC2C4C036390E09052
-:108CB0003AC00D500B3C04DF643FC88DF1432C00DB
-:108CC000D50033C045F223700070000000000000A2
-:108CD0008010ED80BA0221DE8B8222E020B0002BD2
-:108CE000EC098002E340BA202FDC0898122C008B9C
-:108CF000512AD00872222E008D8021D008B6822001
-:108D000004300000000000008805CC40B92824C0D1
-:108D10004A12128885A82020C00B2202C091A1000F
-:108D200028C20B00128C40A32020C40B300A0C1167
-:108D3000990020C5090102620170000000000000D6
-:108D4000C011AC00B88022C00B8802EE01B8C12A65
-:108D5000C01BA806E200BB802EC08A8002AC00AB1C
-:108D6000002EC00AB0022C00990024C008800230F6
-:108D700004600000000000004015EC00B08036C028
-:108D80000EA813E285F3C032C00E9C23E724E882CC
-:108D90003AC10F9403AC02EB003EC00FB0032E109B
-:108DA0005100B2C00DB0035004700000000000007C
-:108DB000E001BC00FF003FC08FD003F004FD043F82
-:108DC000C04CC003F010FC001FC00DD1231C00C715
-:108DD0000039C00DF083FE44ED003BC00F7403F872
-:108DE00000600000000000004010AC00F901BAC1B2
-:108DF0000CB003A108FA0030C88F94032500F900D5
-:108E00003CC00F0483EC00FB003EE00F710B2C40D4
-:108E1000FD0837C04E9103900420000000000000C0
-:108E2000C8053C00B90023C00890022400C80037E0
-:108E3000F00B80016400490233C0849C033C00BFF6
-:108E4000020FD008F4020E10BD8033E008900A3201
-:108E50000040000000000000E0054C00B00620C00B
-:108E60000800428400A00020F00B0022CC009000FB
-:108E700028C0023D028C00B3002CC29A38020604BE
-:108E8000B11220E00830023800500000000000005D
-:108E900020011E00B68021E028EA02368086906517
-:108EA000E01BDA065E019E8425EC0A78025E00B7BC
-:108EB000802DE008794A1640BD8025E00838020878
-:108EC000004000000000000048080C00FB0028E003
-:108ED0000818028A88A1A020C21F2A23E6C8F0C071
-:108EE0003AED4E34028C08F3811EC00E30030EC0E2
-:108EF000F100B0CA0E210392020000000000000041
-:108F0000401DBC08FE103FD20FE003EC04FF147EAE
-:108F1000C00FB123FC01EE003AC40DB013BC00FF3A
-:108F2000003FC00EF083FC0CFD103BC02FE103D0CE
-:108F30000660000000000000A805EC40F08032D080
-:108F40000CA0036C00F38032DA0FB003EC00FB00DE
-:108F50003ECC4C98132C10FB043EC40CF283A6109C
-:108F6000DD203FD10CB003EA0070000000000000DB
-:108F700048119C80B70021C80C7002DC08B70021A2
-:108F8000C80E7022D800B7002CC20A700A1F08B79A
-:108F90000039C80A70021400C5692CCA2A7002D2AE
-:108FA0000460000000000000C0009E00BF8164E17A
-:108FB0000878025A01BF8021EC4B78469F08378021
-:108FC0002DE88818021E81B7B02DE0097A028E00C4
-:108FD00095A02DE4087802F00020000000000000B9
-:108FE0004814EC00B36020C008B602CC00B30120E6
-:108FF000C08AB086CF00BB106CC10A38020C01B326
-:109000000228C00BB00A0C0081002EC00AB482D224
-:109010000430000000000000E815A800FE40B68003
-:109020000CE4037880FE7432800BE603F900FE0046
-:109030003E800CE0032800FA003E804DA003A8000B
-:10904000DA043E800CE403FA046000000000000033
-:109050004800E000F8003E002E8023E000F8013CCC
-:10906000000E8003E020F8203E018F8903E000F825
-:10907000003A100E8001E000E8407E004F8003D2ED
-:1090800000300000000000000810E402C9017E402A
-:109090002C900B2400F9003E68059013A404D9001D
-:1090A00032410E9103E400F9003E600E900324006B
-:1090B000F10032406890438204300000000000005C
-:1090C0008004640089006E400890422400B9002E9C
-:1090D000708890032400B9002240089812E400B977
-:1090E000002E400A900A2600B980A2400890122063
-:1090F00000100000000000001805240089042C4026
-:109100000890022401B9002A400BB002A401B90062
-:10911000E0400A9082A400B9002C480A98022480FA
-:10912000392022402A900286004000000000000002
-:109130000804048081002C480810120410B1042C8B
-:10914000D80A10020400B1002048081002C480B1FF
-:10915000222C508A328205A0B12A204A0A128202A9
-:109160000100000000000000B80D6150C8522E142C
-:109170000C85032140F8503A001F8503A140F850A8
-:1091800032140E8003A140F8503C800E0203208070
-:10919000FA2032080E8213AE0350000000000000D7
-:1091A000981DE450FD003E440FD003F400FD003E46
-:1091B000448DD001BD00FD023E440FD400E4487947
-:1091C000143E500F92A2F408FD003E4A0DD283E6F1
-:1091D00006700000000000001805E700F9103A6E64
-:1091E0000CB103E440F9443B618E9403E400E94090
-:1091F00032660FDA0BA728C9E03F680CDA83B32088
-:10920000EDA0337908D8034600700000000000008C
-:109210003810E200B8A02E38088A02E288E8812ED1
-:1092200014090A03E280B88032300B85022101A8BC
-:10923000F4382A080ECA2390C8543438088A920E8B
-:1092400004300000000000000805C500B1002840FF
-:10925000191002C400B12028400B1006C420A1A29E
-:109260006C480B1002840881202C50091002C404A1
-:10927000B1002458083C02420170000000000000C8
-:109280001815A401B9202C40099002E410A9402E21
-:10929000400B9002A400B1012A400B94022400A9C3
-:1092A000002A4001105264008900264000980246BE
-:1092B0000460000000000000A015E400F9613A40DD
-:1092C0000D9083E520F9013A402E9002E440E90137
-:1092D0009E400F9403A40089003E402D9002E608B2
-:1092E000B90136402C9001680470000000000000B5
-:1092F0002801A400F9003E402E9003E480F9003CD0
-:10930000400C9C23E400F90036400F10438400F920
-:10931000023E400E90038080F9003C402F90038A6B
-:1093200000600000000000002810A000C8403601C6
-:109330000D8403E100E8403E080C8003E100F800E2
-:1093400032008F8003A010F80032040E808360008A
-:10935000F8003E000C00030A04200000000000009A
-:10936000280528008A01228008A024E8000A002F8E
-:10937000801AA0022800BA0016800BE0032808EA31
-:1093800000339008EC1B2280C6142F9108A0434A9A
-:10939000004000000000000028054C00930024C09D
-:1093A000093012CC04A3046CC00930028C00B30055
-:1093B0002CC01330028C00B300E6B80A380244080F
-:1093C00082502CD23A30028A005000000000000087
-:1093D000A0010E8097B421C4497102DE8187212D3E
-:1093E000D00B7B021C01BF2029C40B30025C00A7FC
-:1093F000A121C04A708A0C8184002DD00A5002E855
-:109400000040000000000000A8081E82DFA034EC2D
-:109410000D7902FE80E7E82FA0097A029E00F7A2EC
-:1094200025EA0B48039E04FFC065E40E68035F0055
-:10943000E4803DE00EF803AA0200000000000000F6
-:10944000081DAC48EB053ED90EB203EC00FB603EB4
-:10945000C00EB283AC00F350A6C04FB003AC00FB0B
-:10946000803FD80DA003EC0AF9003EC00D900342E6
-:1094700006600000000000000005FE00BB903EE01A
-:109480000839039E20CF8277E01FF803EE00FFC06B
-:109490003FE50DF903EE00FB9037A008F80F1E0022
-:1094A000CC9433600DF803C0007000000000000091
-:1094B000A8119C00B7902FE4087A021E008F122595
-:1094C000D80BBB021E00B7002DE8087D82DE40BB32
-:1094D000A027900A76025C80850037C44D7103EAAC
-:1094E000046000000000000000009C00B7202DC0B8
-:1094F00029F222BC80970025410B70129C00B7080E
-:1095000029C0084212DC40B70029C0096022DC10E3
-:1095100080002140097002C000200000000000000F
-:109520002014CC00B3C02EC00834822D0093002438
-:10953000C00B30020F8013002CC00A34A2EC00B321
-:109540000028C00B0002CC00810020C00930028935
-:109550000430000000000000A811BC00FFE03FC084
-:109560000CF483BD00DF0836400B7542FC20FF8001
-:109570003BC02C3C03FC00BF00BEC08D900BAC0276
-:10958000CA0022800DB002EA046000000000000062
-:109590008000EC00FB081EC00FB013EC00EB003A9B
-:1095A000100FB023AC01FB003EC03C8403EC00FB79
-:1095B0000026400E940B2C00F9403E900E9013E0D4
-:1095C00000300000000000000110DC02CF003FC0AE
-:1095D0000DF00B3C20CF003D000EF0079C01CF02A8
-:1095E0003EC00FC4033C00CF000FC00E44031F0257
-:1095F000CC003F802C7003004430000000000000CD
-:1096000081046C008B022EC00DB0022C00AB000652
-:109610002008B003FC00AB002EC00F8006BC00ABDE
-:10962000043AF00C88022C00C9803A9208900AA0F3
-:10963000401000000000000080052C00AB002EC090
-:109640000930022C008B0026600BB002AC008B00AE
-:109650006EC00BB0422C009B004CE00A90222C0004
-:109660008AC22C4008B042200040000000000000E8
-:1096700008040C00830D2CC60931020D81A31124AE
-:10968000008AB1E24C80A3002CCC0B02028C80A398
-:109690004808C008000A0D00810028C00830028276
-:1096A0000100000000000000000D6C00CB202FC85E
-:1096B0008DF6132DB08F0036400FF002ADA88F103D
-:1096C0003FCA0B80922C10DB403FC00E00032D04DC
-:1096D000C8023E400CB00300035000000000000030
-:1096E000A01DFC00FF003FC80EF103EC84FF2037F3
-:1096F000000DB203BCA0FF003EC90E8003FD11FFA8
-:10970000003BC00EC003FC80ED003BC00FF043687F
-:109710000670000000000000C001FC90CC923BC825
-:109720000DF0837310FF2837CA4FB203FC00DF200F
-:10973000B3C40D6843FE14CB8433E00D7803BE0040
-:10974000FF8037A00CF30330007000000000000021
-:109750008000FC48822103F40FF64220048A602B2B
-:10976000DA0BF9023F048F5223D54D8802AE00DB9D
-:109770008036C00880022004B80022600D7403E027
-:1097800000300000000000008805CCA0800108C067
-:109790004B30824290A3082CC81A30228D009300CF
-:1097A00024C809A0120C04AB0062C009B002CC00AE
-:1097B000B3002880083606A20170000000000000F7
-:1097C000C015AC00880822C00A301A001182000AB5
-:1097D000C00BB0422C008B0026C0099102EC20BBCC
-:1097E0002866C00880026000B8002A4081B006F8F0
-:1097F00004600000000000000015EC02C8043AC03C
-:1098000089B0036800E9C11EC10E3003EC00DB0023
-:1098100036C10D00230E00EB8032C8CD3032EC088B
-:10982000F3003C800CB006800470000000000000D3
-:10983000E0019C007C003FC00BB043FD00BEC4377C
-:10984000C01FF0035C00FF013BC00EC803BF20DF58
-:10985000003FD00FC013B0007C00B7400FF01BB02A
-:1098600000600000000000004010AC0CD84132C085
-:109870000EB007A8016940B2C08DB0A3EC08F30098
-:1098800032C00F8003ED00FB483AC00DB0832C00BE
-:10989000FB203E800F7023D0042000000000000059
-:1098A000C8053C00880023C008F0062C10885137FA
-:1098B000C008F0077D608F0237C00B8C002D00B30D
-:1098C0000038C00880822000B8002E500BF0003213
-:1098D0000040000000000000E0054C00980028C097
-:1098E0000A30028404A30000C06839060C109320DB
-:1098F00022C09B01A08F14331428C0093C020C0124
-:1099000093402C880B3002B800500000000000008B
-:1099100060011E10878029E00878023E00839024B1
-:10992000E0087810CE04079125E083C9021E04B731
-:10993000842BA408484212CCB4802D640B78021901
-:10994000004000000000000048002C00D01028C893
-:109950000E3B028400E34030C80C38628C00530098
-:1099600030C41F00238C3CF38018C00D30030E80E0
-:10997000D3103C800F300392000000000000000074
-:10998000401DBD00F912B4C007B003CC004A0077F7
-:10999000C00E71436C00F3003FD01FD053AC68FB86
-:1099A000183DC00FC013F050FC043F400FF403906B
-:1099B0000660000000000000A805ED40F8043ED25B
-:1099C0000FB313E010F900B2CC0EBA036D80DB02C6
-:1099D00032DC4F00036C04F30236400EB003CC00BF
-:1099E0004B003C800CF1036200700000000000009E
-:1099F00048119C00B4002DC90B7082DC00BC04210E
-:109A0000C44B37020CA08F7421C00B40021C81B7DD
-:109A1000202BC0084002D00284002D400AF202121E
-:109A20000460000000000000C0009E80B4C02DE46F
-:109A30000B7A02D200B58821E80A7802DE4097004E
-:109A400021E80BCC465E28B7C421F00A7802FE0854
-:109A500097842DA00878027000200000000000000C
-:109A60000814CC00B0C02CC09BB002CC20B3602244
-:109A7000C00B30028C00830120C01B06164F00B3C0
-:109A8000A02AF0080002E00090002C400A300202F8
-:109A90000430000000000000E815A810FEC03E8061
-:109AA0000FA003F908FE4022800EA003E800D200B8
-:109AB00032808FE0035800F60033B00E2002E80C2D
-:109AC000D2023C800CA0037A046000000000000079
-:109AD0004800E000F8203E010B8003E000F0403E2B
-:109AE000005780230000F8003E000F8403A03038A8
-:109AF000003A080FC403F000EC003F100F8003D2BF
-:109B000000300000000000000810E400D9013C48CB
-:109B10004C900B2401C9C03240AC9003E400D94002
-:109B200030400D9A032284C81432400E9003240062
-:109B3000C90082682C90030204300000000000007D
-:109B40008004640089002E4008902224008902824B
-:109B500040089002E740898036418D1802A024A871
-:109B600004624008948324008901227208900B202B
-:109B700000100000000000001805040099002A40B1
-:109B8000289012040089002240089002A420990025
-:109B900022401890062001880862400A9002341082
-:109BA0008D812341081002060040000000000000E3
-:109BB0000804048081042C48081202040283202037
-:109BC00048081202C48083602448193462A504A1A5
-:109BD00002604008D00254008D0029400812820221
-:109BE0000100000000000000B80D6140D8503A802C
-:109BF0000C85022144885032144C8043E000D80088
-:109C000022140C80032000C800A2000E8003200054
-:109C1000C80033000C82032E035000000000000037
-:109C2000981DE444FD003E440F9103F410FF103EE4
-:109C3000440F9103E440F9103E440BF013E510F992
-:109C4000403F4A2F928AA4A2F92836400F9283A659
-:109C500006700000000000001811E6C0C1003F6956
-:109C60000C9A436C00FDA03E782CD807D602D596FE
-:109C700032780D90032700FDA0355006D403E5008F
-:109C8000FD40B3400F98A3460070000000000000A4
-:109C90003810E3C288882E14A88AC222A0B8C02C2B
-:109CA00024488402E10098C4203C088A822380B8BA
-:109CB000042220088803A200B8A022000B88020E0C
-:109CC00004300000000000000805C480A1206C40A2
-:109CD0000A14024404A1682C48081402C5008160DB
-:109CE00020481990028581B14024680A1242C4803C
-:109CF000B92020408B10824201700000000000005B
-:109D00001805A410A9006EC00A10022414B9002E70
-:109D100040089012E40099002240088006A060B933
-:109D2000092260089002A400B90002400B10060648
-:109D30000460000000000000A005E400E9803E414E
-:109D40000E90036400E9C03E400C9002E400C9009C
-:109D500022410D8002A304F14036400E9002E4003F
-:109D6000F10012400F900368047000000000000032
-:109D70002801A400D9223E420D9003E400B9C43C5E
-:109D8000400F9003E400E902AE400F804B6210F9EF
-:109D9000203E400F9003E400F9027E410F9013CA69
-:109DA000006000000000000028008000C8003800AB
-:109DB0000F8020E000A82032000C8007E080C8005F
-:109DC00038000D80832110F86032008E80B32008A7
-:109DD000F8003E000C8003CA0420000000000000D0
-:109DE000280528048A00339043A02228008E80761C
-:109DF0008008E1031900868022800D60017800BE92
-:109E00000036800CE402A810BEA02F800DA0020A2C
-:109E1000004000000000000028114C0403042CD472
-:109E20000B30024C01A3C420C02835028600838079
-:109E300028C00838060E9430C0A2C00B3C020C00AB
-:109E4000B3802C480830028A005000000000000057
-:109E5000A0010C048F8021C11B72421EC083882187
-:109E6000C01828061021863821C019F7025DC0B439
-:109E70004127D00878C69C00B7002F6009720228DD
-:109E80000040000000000000A8081E02C7802DA0AE
-:109E90000F3E03FE80A780A1E00C7802940085A00D
-:109EA00039E40C78131E90B58431E00FF8871E0456
-:109EB000F7803D600C3B03AA020000000000000098
-:109EC000081DADE4FB543E800FB423EC32FB003E92
-:109ED000D84FA003E400F9003EC00F3033EC04F289
-:109EE000013EC00FB203FE10FB683C410FF04382FD
-:109EF00006600000000000004005FE00CFE43FE4E3
-:109F00000CFC037E80CF8133FA0FF803F600FF804C
-:109F10003FE20F79033E40F48033600CE8033E00DB
-:109F2000FF8033600CF883500070000000000000D8
-:109F3000A8119C00D7A02DC408BA023CA0872021FC
-:109F4000C00F5203D400B6102DC08B73035C40B415
-:109F5000B02B482841020C00BF1835462872422A0F
-:109F6000046000000000000018009C0087412D44A0
-:109F70000A73029CC481006DC88B7002D400B700C4
-:109F80002DC00BF0469C55B42025401860821C0063
-:109F9000B700234008704644002000000000000085
-:109FA0006014CC0093002C400BB0020C8280C020C7
-:109FB000C00A10020400B3002CC01B3000CD01B059
-:109FC00040AC78888C060D60B34C241208300A1817
-:109FD0000430000000000000B815BC00C7002E408F
-:109FE0000EF02ABF00C8C8BFC00B9002E404BF0037
-:109FF0003FC00FB20AAC00F88034490CB90B3F00E7
-:10A00000FBC030F00CF0036E0460000000000000A4
-:10A010008000CC00FB803E412CB013AC00F8003E29
-:10A02000C10FA003E800FA403EC00FB00B6D40F82E
-:10A03000103A400FB003EC10FE403EC00FF003E1B9
-:10A0400000300000000000000010EC0CDF003B803E
-:10A050000FF00B3C08E70833C00BD023740054000A
-:10A0600033C00FF083BE20FD0C3B602CE0033C00AE
-:10A07000CF1233500C300380043000000000000089
-:10A0800081046C04AB0022A00BB0060C00AB403680
-:10A09000C00BA8026600B80036C10B3443EE00B214
-:10A0A00000226008B4828C048A21224008B0022079
-:10A0B000401000000000000080052C009B002A20BA
-:10A0C0000BB0022C0088C522C00B8882E601BB08B9
-:10A0D00022C00AB282AC60B8024AC408B1022C00A5
-:10A0E000830022C008B002A0004000000000000071
-:10A0F00008040C00AB2020010B32062C00A000202D
-:10A10000C0090422C400B20024C18BB0024C00B0CC
-:10A110000062C0483002AC10820020C00830020249
-:10A120000100000000000000000D7C08DF2A3A005A
-:10A130000FF5123C10C900A3C00F8053EC01DA00E8
-:10A1400033C00EB003AC04F8703AC00C60432C422C
-:10A15000CD00B2402CF0038003500000000000004E
-:10A16000A019FC00FB013D000FB417FC003C003FB0
-:10A17000C04FC0037408FE003FC04FF003FC08F856
-:10A18000303FC00FF003FC04FC003D000FF003E87B
-:10A190000670000000000000C005F490EF003FD8FA
-:10A1A0000EF3032C01D48037CC0D89431250EC2CD4
-:10A1B00032050DB0533CD4C5947FA08FF0433000DE
-:10A1C000DC0033000C4807F00050000000000000E5
-:10A1D0008010E6408B702FDC08F7020C808A20008C
-:10A1E000C84A2202A0008A48225888FD02AD02A96E
-:10A1F000201EA00380022C048B0022C04C88076024
-:10A2000004300000000000008805C000232C2CC989
-:10A210000230020C68A0282CD00912028400A02170
-:10A22000201819302280D083060CA00BB006001233
-:10A23000A000200029000EA2017000000000000014
-:10A24000C011A8308B002EC04A300A2C14A0800AFE
-:10A25000C108888687008300224908B006A040AB69
-:10A260002022200B800A0C04AB0222C0888002F05E
-:10A2700004600000000000004015EF40EB063EC007
-:10A280000EB0032C02F9A03EC00D8C03AA10E940C9
-:10A29000B2480DB043AD00CB862E200F3003240012
-:10A2A000F98032C00D0CC290047000000000000064
-:10A2B000E0019400FF003DC00DF0037C00DF00379B
-:10A2C000C00FE003F000FE203F400F7003FE00FFD0
-:10A2D000827F000FC003F904DE20BD000FD90B7C84
-:10A2E00000600000000000004010AC01CB003EC048
-:10A2F0002CB00B2C00E8403EC00F94072900C94049
-:10A30000B2C00FB0030102CB0032044FF04334C09F
-:10A31000B51A3FC10F8093D0042000000000000058
-:10A32000C80528008F002FC008F0023C04D8002B7D
-:10A33000C00C804560007B5822C80BFA0161408B3D
-:10A340000032044BCE0228003A402E070B90022622
-:10A350000040000000000000E0054C0083014CC0FC
-:10A360000B3002EC1090002AC00A8006C00483045F
-:10A37000A289193006CC00830020900B30C248001F
-:10A38000B24024200B0900B800500000000000007B
-:10A390002001060487A42DE0093802DE009E8129F1
-:10A3A000E0087852FAC0968001A08B3A22CE408F06
-:10A3B000B025A00B08025608B5902DE44BD8220C0E
-:10A3C00000400000000000004808080283802EE8DA
-:10A3D0000B3813CE41D31028C00E3A02C6084B40AA
-:10A3E00030600D3B27CFC4C3A030000F304348403E
-:10A3F000F2003C040F020392020000000000000083
-:10A40000401DB800FF003FC40EF1033C00FF0133C4
-:10A41000C04DB1077C90FF003F4003F1037000FB8B
-:10A42000103B000FC00BB400FD003FC40FD00390E1
-:10A430000260000000000000A805EC04FB843AC2A2
-:10A440004CB4932C04E9003AC48D08032E00CB01D0
-:10A4500032808FB283EC00CB8032000FF9033C10C6
-:10A46000DF81B3E08CA003EA007000000000000070
-:10A4700048119408B70424C81A304A1D00B7012DAA
-:10A48000C08870061C00820021804B7612DC008799
-:10A490000029408B40021000BC002001287003B24C
-:10A4A0000460000000000000C0009A00B3902DE49A
-:10A4B0000979021E80A7802CE819F8125E018780B6
-:10A4C00025E04B7806D200978021620B3A021E00ED
-:10A4D000B78629F0086806E00020000000000000B0
-:10A4E0004814CFC0B30024C08A30320C00B3082C0B
-:10A4F000C00830120E20830024F10B3006CE0083FA
-:10A500009028600B002A2180B008280008370292AA
-:10A510000430000000000000E815B900FA003E8099
-:10A520004DA0032800EE413E800DE00378008E40F0
-:10A5300027A80BA003FB02CA8233A00FA013290097
-:10A54000FA403A800C6C03FA04600000000000003E
-:10A550004800C000F8003A000C8003E008F8003E14
-:10A56000008F8023A042F809BA104F8003E060F802
-:10A57000003E200FC003F000FC0027008F800392F4
-:10A5800000300000000000000810E50089003E4097
-:10A590006E9003A408C9003C400D90032410F9A05C
-:10A5A00032420C9013C400C9003E400F9003E440B7
-:10A5B000C9203E52CF900902043000000000000084
-:10A5C0008004660089042E400890022400D9003AD5
-:10A5D00041089005A400B940A2400D9002E54689CB
-:10A5E000002E400B9012E500A9C82E618B944220EA
-:10A5F000001000000000000018012400A9006C40B9
-:10A600004810228403A9002E40099002E404B108F6
-:10A610002840189802E50089002E400B9002F42093
-:10A620008D002F400B944286004000000000000087
-:10A6300008040480A1242C481812020480A10028D8
-:10A6400048081002840091202048091202C4948115
-:10A65000002C610B5A82D4A0A5282D4A0B900282AF
-:10A660000100000000000000B80D6002E8502E1448
-:10A670000E8503A140A8503E140D85018140F8527B
-:10A6800032940C8013C142C0513E008F8203E0809F
-:10A69000C8203F080F8003AE0350000000000000F8
-:10A6A0009819F450D9113E448F9143E440DD003AAB
-:10A6B000444FD027B400FD123F444F9143F440FD76
-:10A6C000003F410F9283E4A0F9283E4A0FD0036671
-:10A6D00006700000000000001811F680E9C03E7806
-:10A6E0008F9B03A780C94036780F1023E504DDA4B3
-:10A6F00033620FDA03F660C91033400E9893E630E8
-:10A70000C9C932788CD00B06007000000000000030
-:10A710003810E00088E22E300B88422340A0A122AE
-:10A72000380B8A02E280AAE022300B8023AB028839
-:10A73000A02A000B8C02E30088E023380880020E78
-:10A7400004300000000000000805C500A14428589E
-:10A75000431622848181202C58491080C48191485D
-:10A760006C4A0B14024484810160400A5286D4A0D2
-:10A770008500A150689006D2017000000000000022
-:10A780001805A60089002E400B90020400A9602243
-:10A79000400B9502E410B1004E400B9066AC8089EE
-:10A7A000002A600B9052F40085002140089002C6F8
-:10A7B0000460000000000000A005E620E9003E4023
-:10A7C0000F9003A410C90036400F9401E520D94032
-:10A7D000BA688F9007E600C91032620E9002E41842
-:10A7E000C90032400C9003E8047000000000000033
-:10A7F0002801A400F9043E400B90036400F9003ED8
-:10A80000408F9003E400E90272680F9003E600F9BC
-:10A81000013E420F9003C402F9043E404F90031AD8
-:10A82000006000000000000028008002C800320024
-:10A830000C80036000C84036000F8403A000D8508D
-:10A84000B2108C8103C120C8003E000FC013F00479
-:10A850004C003F000F80030A0420000000000000AD
-:10A8600028152A008A04228128A01228008A01368D
-:10A87000800BA0102810CE0123810CA812FB008AA7
-:10A88000013B8083A042E8108A002F800B60420ABF
-:10A89000004000000000000028054C008300A0C01C
-:10A8A00018B000CC009B0024C00B30066C00A3083D
-:10A8B00028C8093002CC438B002C800B3002CC021C
-:10A8C00083012CC04B30004A005000000000000003
-:10A8D000A0010C24879421E4183102DC8097102514
-:10A8E000CD0BF2027C00A00028E0187002DC01878A
-:10A8F000342940094002D00484042D004BD0226842
-:10A900000040000000000000A8081600CFA070E979
-:10A91000187B03FF4097A035E80F74025E20E480A7
-:10A9200039A02D7803FE00C7803DE05F6843C20078
-:10A93000C4841D600F78036A02000000000000005C
-:10A94000080DA4003B002ED80FB4032D8AEB623A09
-:10A95000D00FB2870CD0D80032C04F9043EC00FB30
-:10A96000083E408F9003FC00FF043F800F002B82C5
-:10A9700006600000000000000005F600FFA03EF4A5
-:10A980000EB803EE084BF07FF40CF923EE487890F4
-:10A9900032E40CF903FE00FF803FE41C79032E40F3
-:10A9A000FF8033E02C7807000070000000000000FA
-:10A9B000A8119400B3000CE50B3802FE808F806173
-:10A9C000C42878004E00F48425A80C7002CC04B38F
-:10A9D0009025400C41835240B410A3000C52036AEE
-:10A9E000046000000000000000009400B7216DC862
-:10A9F0004B7002DC42A73129C4087202DC00B72880
-:10AA00002480087006D420B7012DC1086002508050
-:10AA1000B4082162097406800020000000000000D4
-:10AA20002014C704B3002CC00BB002CC00A30260FA
-:10AA3000C00838024E44A0C02491083002C000B3C0
-:10AA4000002460081C024C88B3C020A008000A88BB
-:10AA50000430000000000000A815AC00FF002FC06B
-:10AA60004FF013FC08E78A3FC00CF5C2FE10BBC0D4
-:10AA700032D40C3013E304BF002E6208B9026E001A
-:10AA8000FB0132A44D9402AB046000000000000002
-:10AA90008000EC60FB001EC00FB013EC005B003ABE
-:10AAA000C00FB041EC007B45BA402EB015E001FB71
-:10AAB000003E500EC003F040FC203F508F900160DC
-:10AAC00000300000000000000110F400FF003FC053
-:10AAD0008FF0031C02CF0036C00DF0037C007F2AEC
-:10AAE0003F800FF8139021CF003F620CE00330004D
-:10AAF000F8003F000FD00380443000000000000049
-:10AB000081046411BB002EC00BB0022C00DB0432A8
-:10AB1000C00EB002EC00BB842E400BB94222428B27
-:10AB2000012C720A90422C00BB002EC28F8806E0D6
-:10AB3000001000000000000080012400BB006EC077
-:10AB400048B0422C008B0026C00AB012EC00BB407B
-:10AB50002EC80BB0122C008B002E480A30026C005D
-:10AB6000BB002E804B9802E0004000000000000077
-:10AB700008040400B3006CC24B31020C509B20202F
-:10AB8000C00A3212CC80B3006C0C0B31020C428331
-:10AB9000082E400A00020080B0002C410B10024237
-:10ABA0000100000000000000000D6400BB403FCC2D
-:10ABB0000EF0833DA0CF2037C00CF7C3FD48F30053
-:10ABC0003E880FB413A5008F303E400CA003608078
-:10ABD000F8003E000F9023C003500000000000006A
-:10ABE000A019F400FF293FC90FF013FC94EF123BAA
-:10ABF000C08EB207FD04FF103F0C0FF003F000FB06
-:10AC0000203D400FD043FC40FF043FC00EC043E84E
-:10AC10000670000000000000C005FCA2C7203F2411
-:10AC20000CF0033C80CC0933D10CF123FC20DF363F
-:10AC30003FC00E4803FE00FF8037E40D780311A0EB
-:10AC4000CF0037C80CF00330017000000000000096
-:10AC50008010FF008FD12E080DB6123D45F96427F4
-:10AC6000D088BA14CC048F4023F00B88022E04BB8A
-:10AC700080AEC008B80A210088D0222028B0022067
-:10AC800004200000000000008805CC0093002E0086
-:10AC90000A34828CA0A00824D8093102CC20B33217
-:10ACA00028D04A8002CC0CBB00224089B0026080D0
-:10ACB000930024D00B3002A20130000000000000FD
-:10ACC000C011AC009B002E2009B04A2C02A0000647
-:10ACD000C009B000EC00AB002AC00B88026C00BBBE
-:10ACE000202AE241B82A600A980026000BB002B878
-:10ACF00004600000000000004015EC08DB023E206C
-:10AD00004CB0032C028B2012C029B012EC00FB00C7
-:10AD10003AC00E8803ED20FBC834F00DBA0347603B
-:10AD2000C90036400FB00B90047000000000000016
-:10AD3000E0019C00EF000F000F3000FC00DF90BB33
-:10AD4000C0CEF003FC04CB0017C00FC003BC84FFCF
-:10AD50000037C00ED063B800EA003A800C300370B0
-:10AD600000600000000000004010AC00FB02320058
-:10AD70000FB0532C00FA0032C08FB0072C00FB003C
-:10AD8000B2C00F8007AC80DB247ED00EB0237404E9
-:10AD9000DD08B5400CB003100420000000000000E6
-:10ADA000C8053C00BFC0A0001BF0023F60EA502372
-:10ADB000C008FA07FC00DF0063C04818022D00B38A
-:10ADC000006EC00D3A032400828032800DF0033201
-:10ADD0000040000000000000E0054C14B359208042
-:10ADE0000930022E05B0442EC0093482EC00AB04B9
-:10ADF00020C00921B28E0493C024C00A18064C005A
-:10AE0000925020C008300270005000000000000086
-:10AE100020011E00B78061E00B780A5E01B1A02D11
-:10AE2000E00A78025E00079021E018C8021E00B711
-:10AE3000802DE08AD8023EC085802120197822002A
-:10AE4000004000000000000048080C00F3942010AF
-:10AE50004B30070C00F3003EC80F3003CC0023102A
-:10AE600000CB0520028C60930A2EC40A01074C8097
-:10AE7000D20130C02C300B5A02000000000000004C
-:10AE8000401DBC00FF010F400FF013BC00EF267304
-:10AE9000C20CB083BC40FF183DC04AC103FC00FB9C
-:10AEA000123FC44DC10BFC81FD003F200FF003D0C9
-:10AEB0000660000000000000A805EC20CB483E0022
-:10AEC0000CB0032D20E980FAC80DB003EE00DB249E
-:10AED00076F38E8033EC44EB103EC00F9003E80411
-:10AEE000DC00B3610CB0032A007000000000000019
-:10AEF00048118D0087202F012870020C848D0431A9
-:10AF0000CCC97202DD00373321D8084002DC00B71B
-:10AF1000203DC0095022F000970021800AFC0292D7
-:10AF20000460000000000000C0001E8287B02D20D9
-:10AF30000839021E41A78024E0097A328E8207A0D8
-:10AF400025E08B48021E00A7E12DE04B5800DA00F7
-:10AF5000A0802460087A0230002000000000000079
-:10AF60004814CC0083002C000830028C009300228F
-:10AF7000C1093042CC00830060C0081A02CE04B37D
-:10AF8000E028A0091C824B08A38024A02A30029A42
-:10AF90000410000000000000E815A800CA002F8877
-:10AFA0000CA0132800EE002E802DA003E800DA008C
-:10AFB00076800EE803BB80EE402FA28FE603EB867F
-:10AFC000FA8037820C20073A04600000000000007D
-:10AFD0004800E000F8401E000F800B6100E8C03A16
-:10AFE000000E8003E001F8007E101E8103E008F8E7
-:10AFF000003E000D8003C028DC503B000F8003D2D0
-:10B0000000300000000000000810C402C9003E42E9
-:10B010000F1003A600C9013A400E9401E410F10498
-:10B0200032400F9A232060F8040A420E9013240045
-:10B03000C10032400F900302043000000000000005
-:10B0400080046708A9006E400890022782890026C4
-:10B0500040089C03A410B90036409B1C1A2304B876
-:10B06000003A400E10022402C9A0A2400B900A2010
-:10B0700000100000000000001805258089042C4005
-:10B08000089002848199402E401A9006E401B9008C
-:10B09000A6411B90822100B8102E400A920AA401FA
-:10B0A0008F2223400B9002060040000000000000A9
-:10B0B00008040480A3202C4109120204808120246A
-:10B0C000480A3602C480B12004C84B14020500B1FE
-:10B0D0000528500A90020502850021400B12020249
-:10B0E0000100000000000000B80D6000C8006E14F0
-:10B0F0002C8502A140C8503A140E8002E140B050A5
-:10B1000032000B80032000FA003E000E8003A002F4
-:10B11000C80013000F82032E03500000000000003F
-:10B12000981DE448F9143F400C9103E442FD1036A9
-:10B13000440D9123A448F91138440FD003E5143984
-:10B14000427B408ED001F500A9403E50079683E631
-:10B1500006700000000000001801F680DDAE3A50D5
-:10B160000D9A0B7680CF8832702DDA03A701E99211
-:10B1700037680D9403E700EDA03A500FD003E702C3
-:10B18000CD8033680CD883060070000000000000FA
-:10B190003810E100884020200C8C02230088E02237
-:10B1A00030088402E300B8E022148D8802E300B87E
-:10B1B000502EA88B8022E34888502200088C020E73
-:10B1C00004300000000000000805C44091002A4837
-:10B1D0000914820520810820580911028588B14090
-:10B1E000A040081202C580A10028400B1802C484A8
-:10B1F000A10024500810920301700000000000001C
-:10B200001815AC109B002240089002040689042007
-:10B2100040099002E401B902224189A082E0A0B96C
-:10B22000282E440BB002E402B90026402810020682
-:10B230000460000000000000A015E400D9003840C0
-:10B240000D90032400C9A0A2408D9003A400F90032
-:10B2500036400C8413E200E9003A500F9C02E68469
-:10B26000E900B6400C9003280470000000000000C4
-:10B270002801A400E1003E680E1003A400F1283A62
-:10B28000400E9003E400F9003E420F8023E200F9F3
-:10B29000003E400F9123E440C1003A400F900BCA9A
-:10B2A000006000000000000028108000C80032008C
-:10B2B0000C8003A020C8403E000E81636000F004B3
-:10B2C0003C010C8403E000C8003E000E8003C10076
-:10B2D000D81032000C80230A042000000000000077
-:10B2E000280538608E0022800AA0023880BE003A0D
-:10B2F0008008E0022800BA00239818EC02F820AE7B
-:10B300000022800BE482E802CE4428800DA00A0AC5
-:10B310000040000000000000280540008204A0C09A
-:10B320000930028E0483506CC00A30860C00B300D2
-:10B3300028300A3612CC80810024C00B3206CC00A3
-:10B3400080886460281002020050000000000000A5
-:10B35000A0011012844021C80A72021000B7002D0B
-:10B36000CC0838121C00B3302000087182FE00A403
-:10B370008021C80B7002DC0187002C420951022099
-:10B380000040000000000000A8081200C28031F850
-:10B390004CFC139209C7803CED1E78271E00F78CE9
-:10B3A0007920087A03DE8184803DE00E7803FE2058
-:10B3B000C58135602C58032A0200000000000000FF
-:10B3C000081D8000F8043ED00FB013E000FB023AE5
-:10B3D000D00FA00BAC40FB003A002FB003CC00F024
-:10B3E000003AC40FB003FC41F3003A400F5093C23F
-:10B3F00006600000000000000005F600CC813FFC64
-:10B400001CF8037640EF923FE48CF803BF10FF80F6
-:10B41000B3200EF913FE24FD9437E01CF903EE006F
-:10B42000CD80B3E00C580200007000000000000066
-:10B43000A811944080002FC4087202DD08D7002DA7
-:10B44000CC08DE035C00B7042180C87083DC00B444
-:10B45000A02FC00C7002DE80870021C20A51422A50
-:10B4600004600000000000000000900084002DC86F
-:10B47000487002540CA7002CC08972025C00B31003
-:10B4800020000A7006DC00B4202DC0087002DC80A9
-:10B49000930020C0085002000020000000000000BF
-:10B4A0002014C00080002EC0083002C408A2422C24
-:10B4B000C10920024C00B3002080083C228C20B03F
-:10B4C000082EE0083810CF0A9340A0F00A100208B6
-:10B4D0000430000000000000A815A800C1003FC013
-:10B4E0002CF0036800AA003FC02D80037C00FF0001
-:10B4F00032000EB012ED24FA0827C810B8A2FF607F
-:10B5000098A0A2E00C50032A046000000000000094
-:10B510008000C906F8413EC00FB003E9105A203E32
-:10B52000C00E8003EC00F3007E010FB093ED00F835
-:10B53000403EC00EB003FC00E3083CC20FD013E055
-:10B5400000300000000000000110F302CC003BC2FC
-:10B550000CF023AE40DF8139C006D003FC00FF04AD
-:10B5600031410CF003FC00CCA037C20CF0037C048A
-:10B57000CD0033F00CD00308443000000000000080
-:10B5800081046000888022C00AB002E900AB442E2A
-:10B59000C0088802EC00BB00A2700AB402CC00A074
-:10B5A0002022C00FBC02CC0A8B80A2C00D900220CA
-:10B5B00040100000000000008005200089802AC0A3
-:10B5C00008B002CC0688602EC00A9806EC01BB00C9
-:10B5D000223102B202ECA08A0026C048A802EC0484
-:10B5E000A9802240089002200040000000000000D6
-:10B5F00008040000800020C00A3042CC0080012CEA
-:10B60000C01A1202CC00B30020004A3002CC00A0C5
-:10B610000008C00B2006ECA0A300A04029100002E7
-:10B620000100000000000000000D6000C8503BC099
-:10B630000CB003AC00C9003BC00E9283FC00BF00FD
-:10B6400012000CB003EC00882616C00C80175C803A
-:10B65000E90132402CD0030003500000000000003C
-:10B66000A01DD000FC203FC00FF003FC00FC003FF9
-:10B67000C00D8003FC08FF003F000FF003FC10F832
-:10B680004037C00EE021FC08DF003F400FD003E050
-:10B690000670000000000000C005FCC0FF217124FE
-:10B6A0000FF183F240FF0037C49FF2473D04C720EB
-:10B6B00033C00C7823FE40E81027C40FF2133C84FB
-:10B6C000C48133204CF023700070000000000000A3
-:10B6D0008010ED40BF5462C80BF602E000BBD022E0
-:10B6E000F01FF9123D809F812BE00AB812E8008F0D
-:10B6F0000422D008B38ABF428B8222E0288C022029
-:10B7000004300000000000008805CC00B3282808A1
-:10B710000B30068080B30224D10B30028D80931051
-:10B7200020CE8B3002CC84A1212CCC0A300A4C00D4
-:10B73000930028C0083C02220170000000000000B5
-:10B74000C015AC10BB026AE00BB002E108BB042AD2
-:10B75000C00AB0128C009B002AC00BB106C8808BB7
-:10B76000826AC10A3002AC1888102A480880023068
-:10B7700004600000000000004015EC00FB00AA304F
-:10B780000FB003A800F301B6C10BB002AC084B0028
-:10B79000B2C00FB802EC10A9813EC00FB0030C007C
-:10B7A000CBA018D00CB00310047000000000000003
-:10B7B000E001BC08F70037000FF003FD00FF003781
-:10B7C000C00FB0077C00E7003EC00AF003FE00F7A0
-:10B7D0000036C00CF003FC00FF8037E00FA003B878
-:10B7E00000600000000000004010AC00DB003600EC
-:10B7F0000EB0036900DB093AC01F3023EC08CB20F0
-:10B8000034C02FB003EC40EB483EC44DB08B6C000D
-:10B81000CB0032900F3003900420000000000000A5
-:10B82000C8053C008F00220048F0222C008F002326
-:10B83000E08BF5103C008F8023F08098032D44DBD3
-:10B840000023D408F8023C00830022C00BA48232FB
-:10B850000040000000000000E0054C0093002400C0
-:10B860000B30028400B30128F60934328C01B3D0C6
-:10B8700024E80A310A860083002AE00030028C00A6
-:10B88000830028C08938A278005000000000000022
-:10B8900020011E00979423E0093802320097A1216D
-:10B8A000E40B78021E40B7A025EC08FC023A009396
-:10B8B000B821E00878829E4087C029A00B58024832
-:10B8C000004000000000000048082C00DB0034208D
-:10B8D0000F3A038E00F3B028C40B3A03AE40F3A036
-:10B8E00034EE0F30238400E3F038C00CB00B8E42EE
-:10B8F000C30038C00F3063D2020000000000000017
-:10B90000401DBC00EB423AC41EB10788D1E3003FA2
-:10B91000C58FF163AC10CB503BC30FD103C800BB44
-:10B92000203BC02EF1031C00FF0037C04FD1039015
-:10B930000660000000000000A805EC40FB44B2C017
-:10B940004FB3432400DB1036C04CBE226D20CB50D9
-:10B950003EC94CB0132400CF2033C03DF0232CC08F
-:10B96000D8003E408F30032A007000000000000025
-:10B9700048119C04B76021C18BF0A2141087000FFE
-:10B98000C80D710A1D0087002CCC48702A9C0087C6
-:10B990000C21C00C72020CA287002DC00B70021289
-:10B9A0000460000000000000C0009E00B38021E0A1
-:10B9B0000B7A02DE00B78105E40879025C8087A07B
-:10B9C0002DE008F806B600878020E40A7B121E905E
-:10B9D00097882DE00B780E3000200000000000005A
-:10B9E0004814CC00B30020D00BB0026E34A3002C5E
-:10B9F000C10930024C0083002CC04810028D8083A6
-:10BA0000C000C08A30120C0080002C160B380212C5
-:10BA10000430000000000000E815A800FA00338898
-:10BA20000FA0037990FA0136801CA0036800CA00B9
-:10BA30003E812CA00BB90CCEE2B2808EA00B280068
-:10BA4000DA803CB00FE0833A0460000000000000A0
-:10BA50004800E000F0003E000F8003A000C8002E68
-:10BA6000000F8423A000F0403E100F8403E102F891
-:10BA7000483E100C8003C010F8803E000F0003D237
-:10BA800000300000000000000810E400D900364239
-:10BA90000F90032418F9103C48689213E400A91190
-:10BAA000B2600E91032600C90032600C1003240816
-:10BAB000C9003E400C90230204300000000000004A
-:10BAC00080046400890022400B9002A40889002EA3
-:10BAD00042489402E40089802270081422A402895A
-:10BAE000422A7028900A2400A9002E40289002A023
-:10BAF000001000000000000018050400990026C096
-:10BB00000390022401A9000E400A9046C40A89004D
-:10BB100020480A900205808141A05888900224089C
-:10BB20008D802FC008980206004000000000000031
-:10BB300008040480812020400B1202840081242C00
-:10BB4000580A3222C584A100205008B0028508811D
-:10BB500040205A0816820400A5002D400812828257
-:10BB60000100000000000000B80D6140D8503614FC
-:10BB70000F85230140E8003E000E8043C008CA0044
-:10BB800032800E80032000C00032082C02032008FF
-:10BB9000C8003F000C82032E03500000000000008C
-:10BBA000981DE440F9103F400F9143F404F9103E12
-:10BBB000440D1103E44459403E504F5043D402FD1C
-:10BBC000403E400F900BE500F9003E404FD003E6A9
-:10BBD000067000000000000018056660C9E03244ED
-:10BBE0000F9C03E400DD843F688FD842E6A0DDA40B
-:10BBF00033680D70032500C9E0B2680C9AC32600B3
-:10BC000099003E400F9A03060070000000000000FB
-:10BC10003810E3008880AA208B8802E288B8012EC1
-:10BC2000000B8402E2B088502214088002828088CF
-:10BC3000E0B63A08CEA2210888002E000BC4020EFE
-:10BC400004300000000000000805C48081606848DE
-:10BC50005B1602C420A1406C500B1402C400A1006A
-:10BC600024400B90221490854221505B501A1500FD
-:10BC700095002D400B510A82017000000000000069
-:10BC80001815A40189002A400B9046E400B9012E42
-:10BC9000400B9020E400B900264018B802A4028DA1
-:10BCA000082F408BD00224008D202F480BD0028615
-:10BCB0000460000000000000A015E400C90032404C
-:10BCC0000F9002E41049003E400F9002E400E901A9
-:10BCD00036400F18132410C98232407F902324006D
-:10BCE000D9203E720F9003A80470000000000000ED
-:10BCF00028018402F10116404F9003E510F9082E47
-:10BD0000400F9013E400C9013A401F9003E400F98A
-:10BD10002034408C9003C408F9003E600F10034AA1
-:10BD200000600000000000002810A008F8003E009D
-:10BD30000C80036000E8003E024F8013E000D0005A
-:10BD40003E000E81033000CC4033000CC00B20209D
-:10BD5000E8003E100FC003CA0420000000000000ED
-:10BD600028052804BA00228008A0022800BEC86F57
-:10BD7000800BE122A8008E202F800BE02368008A30
-:10BD800000228008E00229008A002EA80BA000CA29
-:10BD9000004000000000000028054C00B30024C053
-:10BDA0000930020C00B3C12CE00B38562C101300E4
-:10BDB0002EC00A386A2000880020000980224C42E8
-:10BDC000A3002CE00B2480CA0050000000000000FB
-:10BDD000A0011C08B7242FE00939021C01B6002D70
-:10BDE000900B60928E0086822DC20BF0025C06875B
-:10BDF0000060C02970025C0086002DC00B6002E864
-:10BE00000040000000000000A8081F40F3E43DE8E7
-:10BE10000D790B1EC067802DE00F70431D80D5008B
-:10BE20003D600E78031E00CD8031E00DC8034E004A
-:10BE3000E5803DE00F4803EA02000000000000003A
-:10BE4000081DAC80FB0070C06EB613AD40FA003E1A
-:10BE5000C00F20432D1859003E0003B00BE000FA3C
-:10BE600000BE000EB013AC00F8003EC00F8003C24D
-:10BE700006600000000000000005FE40FF803FE675
-:10BE80000FF8232E04FF903FE40DBA03FF40CF804C
-:10BE900022E10C39433210EC9033208EC803F200BB
-:10BEA000DF803F600FF803C000700000000000005A
-:10BEB000A8119C40B7903CE00B3A034E80F3B12DA3
-:10BEC000044C3823AE00808034E84D78023E8087F1
-:10BED000A029C0087002C08086022D410B7002EAC2
-:10BEE000046000000000000000009C4837012DC9DC
-:10BEF0000B72221C84B5160DC4194042DC808700E9
-:10BF000020C888730A9C80B50029C00A4802C00274
-:10BF100095002D420B5802C00020000000000000D8
-:10BF20002014CC00B3002AE00B30024C20A10124E5
-:10BF3000C10800028C008100248009380A608092C8
-:10BF4000402A000A3002C00080C82C720B1402C8BC
-:10BF50000430000000000000A815BC00FF002FF412
-:10BF60008FF0033C00B9003E40099003FC02C3017E
-:10BF700032C048B813A100BA002A000AA007EC009A
-:10BF8000DBC83E900FA202EA04600000000000003F
-:10BF90008000EC00FB023EC40FB063EC01F8403EB1
-:10BFA000400B8003CC00FA423EC00FB500AC58E90C
-:10BFB000823EC01D9003EC04FA003E800FA003E017
-:10BFC00000300000000000000110FC0CDF007FC00A
-:10BFD0002CF0037C01C70033408FD003FC00D80055
-:10BFE00015440CE01B3C00CB0E33C05C62021C020B
-:10BFF000C5002B800FC08780443000000000000087
-:10C0000081446C10BB002EC008B0520C01FAC4224F
-:10C01000610B88036C0088472A000E1C02200288EE
-:10C0200000AA0028900A2C04A80022900B8002E0AD
-:10C03000401000000000000080012C00BB002EC159
-:10C040000830126C0088882A300BB802EC009B087C
-:10C050002A4008B80220008210220008A022A00076
-:10C060008B002A020BB002E000400000000000003C
-:10C0700008000C00B3202CC20836022CC0A00820F7
-:10C08000000B3346CD28802028C00B32020C2081C3
-:10C090003028C00810028100AA002800033002C224
-:10C0A0000100000000000000000C7C00FB282ECCEA
-:10C0B0000C70537D098800BA000F8003FD80DA60A0
-:10C0C0003A508CA2832C804B2030C028A003A100C2
-:10C0D000C9003A000F9003C00310000000000000E8
-:10C0E000A01DFC04FB007EC90BB603FCC0F80C3F8E
-:10C0F000004FC3432C00B8383F8E5EF043E010F889
-:10C10000303F010FD0037000FC0037000DD007E96D
-:10C110000360000000000000C005FCE0CC8033C0DC
-:10C120000DF083FC80DC9433C01CF1037D8CFF3068
-:10C130003F308FC8037E10CF9039A08DF803AE003A
-:10C14000D58013E00C5803F00160000000000000EF
-:10C150008010DD08880023C408FC02ECA8CB202155
-:10C16000C20DF7121C40DF3022A00B88022E04DB28
-:10C170002122C008B8222E00B9802A600A8802E075
-:10C1800004300000000000008845CC10802C28CA34
-:10C190006830028D009B2028C4083202CC10B30006
-:10C1A00024080B80426C0083002ACA3AB0028C0437
-:10C1B000B00428C0081002E30130000000000000B5
-:10C1C000C0158C028040AAC008B002EC009B202A57
-:10C1D000C088B002AC009B0026E00380822C289B24
-:10C1E0002022E10BB202AC80B8802AC10A9802F08A
-:10C1F00004600000000000004015EC00C8503AC088
-:10C200000DB003EC00DB88BAC008B0036C08FB007B
-:10C2100036600F8C636C00CBC03A800EBE03AF84D7
-:10C2200079803A88049801D0047000000000000072
-:10C23000E001BC00FC8035C04FF003DC00EF0037AC
-:10C24000C0AFF0031C016F0013000FC123FCB8FF47
-:10C250000437C00CF8437E04FD003F040FD003F800
-:10C2600000600000000000004010AC00C8403AC070
-:10C270000CB003EC00FB4038C10EB0432C08C300E7
-:10C280003E400E82036D00DB4032C15FB4A3ED205F
-:10C29000C94032E08F984390042000000000000065
-:10C2A000C8053C00880023C028F5C2FC00B3042365
-:10C2B000C148F022BC06AF000E40080002CD00BB12
-:10C2C0000120C0083002EE0081E034A00B90023261
-:10C2D0000040000000000000E0054C02800028C083
-:10C2E000093C024C00B3002CC00AB0020C008301D0
-:10C2F0002C000A0502CD58BB0020000A3D02CF40A9
-:10C30000212060C0091002F8005000000000000069
-:10C3100020011E00848028E4887842DE00B7906502
-:10C32000E4887A429E40A7902DA00A4822DE04B7F6
-:10C33000802360487842FE80AF9065E00BE802C839
-:10C34000004000000000000048080C00C80038C091
-:10C350000C3003CC00FB003CC00EBA030C00C30041
-:10C360003E004E2202CCC0FB4030C00A3003CE80DB
-:10C37000E14130C90F3003D202000000000000008C
-:10C38000401DBC20FC0037C20EF123EC40FF043AF4
-:10C39000C00FB023FC00FF043EC00DA003FC58FFFB
-:10C3A00000BFC006F083DC62DF003FC00FF0031067
-:10C3B0000660000000000000A805ED80C9013EC035
-:10C3C0008CB207AE04CB803AC84CB2032C84CB307D
-:10C3D000B0E00D880B2C00EB0030000CBC832D80EE
-:10C3E000FB0032C00C9003EA047000000000000063
-:10C3F00048119C4087002CCC0876823C8287002123
-:10C40000C28D32820D4CA72821800840021D80BFBA
-:10C410002035400972435CA0B70029C0087002D2E1
-:10C420000460000000000000C0008E0084802DE049
-:10C43000087802DEC08F8028EC287B0A9E948384D3
-:10C4400023E00958509E10A7B023E00B78021E206D
-:10C45000B78021E0097802F0002000000000000011
-:10C460004814CC02821C2CC02830024C0083C0200F
-:10C47000C00830020C00A30060D2081D020F20BBD0
-:10C480002424C00B3C024F00B38028D8093202D2CA
-:10C490000430000000000000E811A800CE843E80B7
-:10C4A0000CA003E800CEC03A8008A003A800CA0090
-:10C4B00033800DEC033B80EE8233800AC08710404E
-:10C4C000F6C03390AD6403FA006000000000000085
-:10C4D0004800C002F8003C001F0403A004F8303EEE
-:10C4E000000F8003E000F8003E040F8093E000F8A6
-:10C4F000103E002C8403E000F8183E100E8003D29A
-:10C5000000300000000000000810E400D9003E40A8
-:10C510000E9003A410F9003E400490032400410053
-:10C520003E400F9113E108F8003240088983A200D1
-:10C53000C98032400C900B02003000000000000067
-:10C540008004640289002E400D90022400B9002E60
-:10C5500040489002A400890022408B9442E220B817
-:10C5600000A240089402E504A990346008900220DB
-:10C5700000100000000000001805241099002E4053
-:10C580000A9002E400B90024400A10020400A90045
-:10C590002A400B9082E001B80020403A9002A44467
-:10C5A0008904226208980206004000000000000092
-:10C5B0000804048A81002C480932064480B1002C0A
-:10C5C000480A12028480A12020500B1402C500B139
-:10C5D0004020500A2402C900A3002440081102028E
-:10C5E0000100000000000000B80D6140D8503E146A
-:10C5F0000E8003E140F85136142E85432142E85065
-:10C600003A000F8012E000F80032001E8043A000C4
-:10C61000C80132000C80032E03500000000000000F
-:10C62000981DE440FD003E444E1103A440B5003E79
-:10C63000440D9103E440D9103F400F5003E500F949
-:10C64000403F400D4403F100F5023DC02FD203E608
-:10C6500006700000000000001805E700E9003660E1
-:10C660000DDA03E640F9403E680C9A03662089A083
-:10C6700033400E9007A600F9803E500CCA03F380A9
-:10C68000C50233400CC003C600700000000000006B
-:10C690003810E30488A22038088002E340B0802EDE
-:10C6A00028088A82238088802200DB88026204B8FE
-:10C6B000B02EA8888EA2EA8088002A002888038EDF
-:10C6C00004300000000000000805C582A9082C52B3
-:10C6D0000B1402C480B1210C5288140244209169C9
-:10C6E00020400A1082C6E0B10C2C48080102E193F8
-:10C6F000A10124410A1002C20170000000000000E4
-:10C700001815A40089042240089000E40039020EA4
-:10C71000400810622400910062408B8002E054B90E
-:10C720000C2E4009B652EC00A9002A400A928086DD
-:10C730000460000000000000A011E400E160364049
-:10C740000D9023E400F9303E402C90436406C9006C
-:10C7500032490E8D93E000F9002E402C9403C7401F
-:10C76000E92030550E9003E804700000000000003E
-:10C770002801A400F9001E400F9003E400F9803C5A
-:10C78000404F9003E400E904BE400F88336200F993
-:10C79000C23E482E8833E200D9003E600D8003CAB5
-:10C7A00000600000000000002810A000C8003E004B
-:10C7B0000D8003A004E840BA000C8003E004C80028
-:10C7C0003A000E8C03E000F80232000E8003612074
-:10C7D000F80032160F8003CA042000000000000099
-:10C7E000280528008A002E8008E20328008A0022FB
-:10C7F0008008A002E8048A002EA209E802FA04BE1A
-:10C8000000A28008CD823320B6C037A04BC882CAB0
-:10C81000004000000000000028056C00830026C0D6
-:10C820000938024C00B30024C0083002EC00830039
-:10C8300028E00B3002CE81B30062C0083C024F00FA
-:10C84000B3A020B0033002CA005000000000000076
-:10C85000A0010C4187342DC00860029E40B7A02D76
-:10C86000C0087302DC0087202DC00B7082DD85BFFD
-:10C870008163C8887B021C00B74065001B7202E818
-:10C880000040000000000000A8081E00C7813DE035
-:10C89000DD7003FE80F7903FE02C7903FE80C7A097
-:10C8A00039E00F7A02DE84F7C231F20C79035E04BC
-:10C8B000F78431600F7E03EA0200000000000000F0
-:10C8C000081DAD0AFB607ED40F30036C00CB003234
-:10C8D000DE2FB203ED421B603EC10DB103EC50F7F9
-:10C8E000803DD82E3203EC30FB003E400FB003C237
-:10C8F00006600000000000000005FF00CBD03FF004
-:10C900004CF813FE00CF883FE00CF8433F00CFC83F
-:10C9100033E00CF803FE00FF803FE02CF803BE205C
-:10C92000C78033E00CF80100007000000000000038
-:10C93000A801BC4087903DC0084002DC80D7002D94
-:10C94000C00C30037C00871021C41E7020DC44B76B
-:10C950000039C00C71021C40D70229400870022A1D
-:10C96000046000000000000000009C0087322DC021
-:10C97000087002DC0187002CC02B700A5C00830069
-:10C9800023C0087002DD00B7002DC40BF0029C200C
-:10C990008718294008708200002000000000000075
-:10C9A0002014CC00830228C0081002CC0883402E3B
-:10C9B000C02A30020C008B0020F20A3002CE00B3F5
-:10C9C000882AD00A30060C0092002878083C4208D9
-:10C9D0000430000000000000A815BC02C7002FC0F2
-:10C9E0002C9002FC028FD83FC04BF0027C02CF009B
-:10C9F00020F208B013EE80FF003FD42EBD83AC00C0
-:10CA0000CB803AA0ACB8032A04600000000000000C
-:10CA10008000EC00FB103EC00F8403EC10FB003ED6
-:10CA2000C001B003EC00FB00BEC00EB023EC08FB5D
-:10CA3000103FC00DB403ED04F9001E14CFB083E025
-:10CA400000300000000000000110FC00CF0030C0EA
-:10CA50000C4003AC00FF003FC02CB003BC00FF0043
-:10CA6000B3E00DFA037E80CF0033C00CFC43FF20FF
-:10CA7000FF003F4008F803C0443000000000000001
-:10CA800081046C10AB002AC00A8E422C04BB002E1D
-:10CA9000C008B0026C00BB003AC00E30020D088323
-:10CAA0000222C00ABC02EF00BBC02C680AB902E037
-:10CAB000401000000000000080050C008B0022C028
-:10CAC00008B802AC00BB022EC008B002EC00BB00EC
-:10CAD000264819B0026D008B0022C00AB002EC0497
-:10CAE000BB1C2E200AB002E0004000000000000045
-:10CAF00008140C00AB2028C00A00020C0093042C80
-:10CB0000C10830024C00B300244109B8020C028372
-:10CB100001A0C00A3002CC1093002C000A3002C2DF
-:10CB2000010000000000000000057C00CF2833C099
-:10CB30000CA046AC11BF003FC05CF043FC00FF04FA
-:10CB400032400DB0036C08CB0431C00CB033ED4063
-:10CB5000FB043E400EB003C0035000000000000084
-:10CB6000A015FC00FF003FC00FC023FC01FF003FE9
-:10CB7000C04FF0877C00FF0039400EF003FC00FF3F
-:10CB8000003FC00F7003DC80FF003D400F7003E8E2
-:10CB90000670000000000000C005FC40EB483EC2EB
-:10CBA0000E0903BC60C02035240ED2132C60FB6A32
-:10CBB00033C00FCA032220C08037C00DF0037C00B1
-:10CBC000EF0033240FC803300070000000000000A5
-:10CBD0008010DD008F602FD808A202FD80C870226F
-:10CBE000002CFD07DC84BF6023D20BBD022300882C
-:10CBF00080A22088B0223400BB5022C80BB0022093
-:10CC000004300000000000008805CC40A3032CC2C3
-:10CC10000A00428C82A30A24800B3002CC90B3001D
-:10CC200028D80B10028C02900020C00B10424C0040
-:10CC3000B30424C00B300EA20170000000000000FD
-:10CC4000C015AC109B042CC0F89806EC00AB8026F5
-:10CC50002008902AAC10BB000AC01BB022AD00987F
-:10CC6000402A704BB0022C00B300A6861BB082B0E5
-:10CC700004600000000000004015EC00EB003EC026
-:10CC80008E9803AC08E8C036304FB042EC00F98013
-:10CC90003AC08F88422010C81030F00F30136C104B
-:10CCA000EB0036F00FBD03900470000000000000A0
-:10CCB000E001BC00EF047FC00FF043DC00C4003B88
-:10CCC000408BDC037C10F99036C24FF9236241ACF3
-:10CCD00001134004B003E400FF003BC00FC0037821
-:10CCE000006000000000000040108C12CB00F2C079
-:10CCF0000F8003AC08D9003A800F1203AC00E100AA
-:10CD000032C00C9003ED02C8403ED00F90132C02AD
-:10CD1000DB003E500CB403100420000000000000B3
-:10CD2000C8053C008F0017C00890023C088D002207
-:10CD30005408B4033C00890023C0403502CC248051
-:10CD40000022744CB0022C008F002ED40AB00A329C
-:10CD50000040000000000000E0014C02830024C0FD
-:10CD60000900028C0190006A410A30204E10310205
-:10CD70002CC0092006CE00800060E00A30820C083A
-:10CD800083082CD009B00278005000000000000099
-:10CD900020011E0487B020EC09E9028E589DB02BBB
-:10CDA000A5405B06DE4095942DE4197B06DE0084E9
-:10CDB0008060E00A780A161087802D680B79024897
-:10CDC000004000000000000048080C00CBA024E058
-:10CDD0000F2A038E00D2D038FA0F18C3CE2431B0F8
-:10CDE0003CE50C3B17CE04C08238C29E10030C00F9
-:10CDF000C3013EC00D81035202000000000000008C
-:10CE0000401DBC00EF103EC20EB1232CC1AB013659
-:10CE1000800FB0232D90E98472C862F117FC00FCEA
-:10CE2000003BC41DF003EC00EF083FC80EF1039077
-:10CE30000660000000000000A805EC80FBA43AC8D2
-:10CE40000E90032C04CA0030602D1A276C84CB602E
-:10CE500032D20CA0132D84CB023EC00DB803AC809F
-:10CE6000CB8132800CB003AA0070000000000000EB
-:10CE700048119CA4B72873C208F0023CC08F00314F
-:10CE8000C00970829C80870C20D80970221C3084D5
-:10CE9000003DC0087002142487A021C0087012123F
-:10CEA0000460000000000000C0009E40B39529E926
-:10CEB0000A68029ED086F0A3E00878129E44A382FE
-:10CEC00021E80B38020E1087802FE00B18028E022B
-:10CED000870021E0087802300020000000000000F8
-:10CEE0004814CC00B30024C04830020C04838020D6
-:10CEF000D00910028C06A38020C00B30020C0280E7
-:10CF00004028D20A30020C018300223C088702121A
-:10CF10000430000000000000E815A818FA003A806C
-:10CF20008EE4422802CE8033804DA083E800EAA040
-:10CF3000B2800AA00A2800CE182F800FA013A800E4
-:10CF4000CA0032902CAC0B3A0460000000000000D4
-:10CF50004800E000F8043A000F8083C008E8033A74
-:10CF6000000E8022C000D0007E10A48003C000F814
-:10CF7000003E100D8403C000F800BE000F80015277
-:10CF800000300000000000000810C402C900364054
-:10CF90000C90036402890432420D9203E642C900F8
-:10CFA00032700E120B2408C9003E450E9903E402AC
-:10CFB000C10032500494030204300000000000005D
-:10CFC0008004640089006E400890022400890022D9
-:10CFD000540B9003E6008900224008900A2400893F
-:10CFE000003848089082E404D900224008900220CA
-:10CFF00000100000000000001805240089012C40EA
-:10D000002810426400A1042250019042E4008904E7
-:10D0100020420A9042340089006E400A9000E400E9
-:10D02000890023400AD002060040000000000000F2
-:10D030000804048081242C480810020480A12028C0
-:10D04000400B100285808120204808506214028124
-:10D05000032E40881682C4A0912821402A50020243
-:10D060000100000000000000B80D6140C8502E14FF
-:10D070000C85036140E850B2154D8002C000485055
-:10D08000B2151A80133008C8003E000E8203E080FB
-:10D09000C02030000E400B2E0350000000000000A6
-:10D0A000981DE440F9103E440FD003E448DD1037EA
-:10D0B000400FD407E440FD103E450F9403E508FD02
-:10D0C0000239D00FD043F4A0F9283E4B0D9283E6ED
-:10D0D00006700000000000001805E680C9A632684E
-:10D0E0000C9003A681E9E93B400E58033620C9A005
-:10D0F00037780DDA033626C50037690EDE03A682BF
-:10D10000CDC033500FD003060070000000000000B7
-:10D110003810E3A488A9223A08080022A0B8E53014
-:10D120002028802243A008E82A3D08A46220008825
-:10D13000002E10088E0323A088A020280B8A820EC0
-:10D1400004300000000000000805C4409140204465
-:10D150000890A28510A1202C420B14128C01911072
-:10D160002C4809110AC40081002C500B1112C50172
-:10D17000B14024480B180E020170000000000000AE
-:10D180001815A400910022410894422400B14020C7
-:10D190004049B262240099000A40089002E5808963
-:10D1A000002E4009B0022480B90026504B900206A0
-:10D1B0000460000000000000A015E402D900B240A5
-:10D1C0002C9513A410E900BE608F900BA410590099
-:10D1D0001E409D9423E402890034400F9003E6082A
-:10D1E0007900B64007980328047000000000000092
-:10D1F00028018400E9023C402F9802E400F9423AF9
-:10D20000680A1003E410E9003E400E900F2600F972
-:10D21000043E400E1C03E600C1003A500F9983CA39
-:10D2200000600000000000002810A000E8003A00A4
-:10D230000C84032000D84232040C8813E000C8009C
-:10D2400030000C040B0000D80036000E80230000D4
-:10D25000C88032000C80010A042000000000000099
-:10D26000280528108A002E8028202228008A0023E2
-:10D27000B088E0022810DA00A3B408E81028008E75
-:10D280002023A048ED1A2800DE0023900AE0020ABD
-:10D29000004000000000000028054C00A30028C04A
-:10D2A00008300A0C00930020C22A3022A400BB00E0
-:10D2B00008E018090A4C00930224E80208064C0012
-:10D2C000930020D80A90024A00500000000000009D
-:10D2D000A0011C8087042DC00870020E0087102555
-:10D2E000000A60025E009700298208501254008FE5
-:10D2F0008061D00804025C01B708A9A00A508268C6
-:10D300000040000000000000A8083E80E78038E4EC
-:10D31000087E031F00DF80B1211E7803DC04F38048
-:10D320005BE10828035E00D78035600E68034E007D
-:10D33000DF8031E00EF80B6A020000000000000000
-:10D34000081DAD02FB743ED04FB283ED007B683AFE
-:10D35000008D8003A420DB0136806FB0418400EB98
-:10D36000003CC00FE683BC40DB00B6800FB00382F8
-:10D3700006600000000000000005FF20DFC03BE663
-:10D380000EF813FF44C7823BE00FF903BE10CFC86D
-:10D3900033608DEB033E00DB823FE00CD8033E4060
-:10D3A000CE8033E40FF8030000700000000000009E
-:10D3B000A811BC40870021E40B78A2CE90C7B02012
-:10D3C000E80B2892B68887A020640B3503140087E9
-:10D3D000B239C02CC0035E02CF0031CE0B76122AC8
-:10D3E000046000000000000000009C00A31029C899
-:10D3F0000B7402DC808F0029CC0A30061480871061
-:10D4000021C00B66025C0087002DC00B51021C80FE
-:10D41000960021C05B748200002000000000000024
-:10D420002014CC08A30020C00BB802CC008B40A86D
-:10D43000C08B08228C02830060C00B304204008342
-:10D440004028FC8A00026E008300A0D08B380208BE
-:10D450000430000000000000A811BC02EF003BC037
-:10D460004FF802FC02CF0038120E98022C00CF00B9
-:10D4700032C0099003640281C03ED00F90073C0384
-:10D48000D90032600F88032A046000000000000009
-:10D490008000CC00DB003EC08FB003EC00FB023606
-:10D4A000C04F9002E400FB00BE900F9C13EC00E91B
-:10D4B000183AD004D503EC40E9003A008F8003E02D
-:10D4C00000300000000000000110FC00CF003DC152
-:10D4D0008CF0032C00EF0AB3122C7023140A4F00B7
-:10D4E00035600DB0030400CD8007E80CC4032C00A8
-:10D4F000CD0031E22CE003004430000000000000C9
-:10D5000081046C02AB022EC00EB0022C008B0032E4
-:10D5100030009C036C008B04223608344A2C0889A6
-:10D520009020B80F8400AC02890036A008A4022025
-:10D53000401000000000000080052C008B002EC071
-:10D5400008B0020C008B0022D10888122600A3002C
-:10D5500026400BB00226008B0026C05810122C0467
-:10D5600082802A49083002200040000000000000AC
-:10D5700008040C00A3142CC81A348A0C848340229B
-:10D58000C80803624CC0A36020400A30020C008B24
-:10D590004508C00B10028CA08300264008300A0208
-:10D5A0000100000000000000000D7C00CF402FD2E1
-:10D5B0008CF6033C22CF4032D64CA6C13DA0874812
-:10D5C000360D0FB1022442CB6016C00CD0032C8064
-:10D5D000CA0032C00C3003000350000000000000FD
-:10D5E000A019FC00FF203ECA0EB003EC20DB343A49
-:10D5F000C80F8003E410DB213E180DF203FC80FF0E
-:10D600003035C00FC013EC00FF003BC00FF003E843
-:10D610000670000000000000C011FC00FB0B2FCAC8
-:10D620008DF203FA0096803BC40DF1037C80EC8000
-:10D630003B080CC2037402CC803F480EF00330A0BC
-:10D64000D5803F400CF803F000700000000000009F
-:10D650008008EE40BF802FF00BF722EE208A802357
-:10D66000FC8875123D00880022002880022408886A
-:10D67000006F5000F502290089002E540D9011A072
-:10D6800004100000000000008805CC00B3002CC18D
-:10D69000093082CC82BB0028C0493202CD00B800DC
-:10D6A0002C500901020C4080006C4409300220001B
-:10D6B000B0002C40183006E20170000000000000AD
-:10D6C000C001AC00BB012EC00BB002EE00AA004AA4
-:10D6D000C008B052EC00980226400980026C01AAF2
-:10D6E000042E4009B0022200A9802E41099002F0C8
-:10D6F00004600000000000004005EC00FB003EC09C
-:10D700000DB003CE84FA001AC08DB043EC00F002D5
-:10D710003F000DD1033500CB482E402FB0092280A9
-:10D72000F9C81EE008B1E2D004700000000000005B
-:10D73000E001BC007B003FC00FF023FC00DE0024B2
-:10D74000C04FF0032C00EC203B000E98039402DD48
-:10D75000003F404EF001F800DD003CE40FD803B874
-:10D7600000600000000000004000ACC0FB2032C898
-:10D770008DB003EC00F9003AC22C30036C04D802DF
-:10D780003C448D1003AD03EA003C400C7023E400E0
-:10D79000C8403AC00DBC0350042000000000000047
-:10D7A000C8013D00BF4223F00DF002E500E2013761
-:10D7B000F108F00E3DC0A8002E542890022C008ADB
-:10D7C000053B4148F5038C00890022D40E9502F2F6
-:10D7D0000040000000000000E0054C00B30420C041
-:10D7E000893002CC40B2002CC44830022C02A20086
-:10D7F0002C2019201A8008B0006C40083002C400A8
-:10D8000081002C40083002F80050000000000000A9
-:10D8100020011E00B7A0E1E0097802DF04AE802DF0
-:10D82000E00879021E1087902C282968028281B4B2
-:10D83000802D60087810BC008F802D600B6802C8B6
-:10D84000004000000000000048000C05F39230CAC0
-:10D850000D3003CC00F3003CC00C30020C80700093
-:10D860002C400D20038900B1003E402C3003EC50C9
-:10D87000C3203C400C3003D2020000000000000036
-:10D88000401DBC00FF003CC00EB083EC40EA0036F7
-:10D89000C20FB083AC00F8003E480EE00B7A80CF98
-:10D8A000003B440FF003ECC0FF0003440EE003D044
-:10D8B0000660000000000000A805EC00FB233EC845
-:10D8C0001DB003EE00CA003EC80CB2032D90C88400
-:10D8D00036002DB00360189B8033500CF203E20039
-:10D8E000C98032400CB8032A00700000000000001C
-:10D8F00048119C00B7280CD2287302FC0086042C27
-:10D90000CC2870830C20950120000930121004856A
-:10D91000002152087502D8008700214008600212D9
-:10D920000460000000000000C0009ED4B7B109E10F
-:10D93000087822DE0095802DE008780A5E4294C0C7
-:10D9400021600878025A0087802D68087A02D70083
-:10D95000978020600978023000200000000000005D
-:10D960004810CC00B3002CC008B002CD8092002C2F
-:10D97000C008B002CC009080A04009360248028363
-:10D98000A0AC402A3006CE029304A04009200A121F
-:10D990000430000000000000E815A800FA003A80FA
-:10D9A0000DA003FB02DE803E800CA0032800CE8089
-:10D9B00032800CA4037800CEA43F800CA007F900AD
-:10D9C000DE0032802DE0023A04600000000000001A
-:10D9D0004800E100F8007C000F8003E040E8103CC4
-:10D9E00001CF800F2000E8003E000E04039000E805
-:10D9F0000020000D8007E000E8003E040E8003D206
-:10DA000000300000000000000810E400F9107E4122
-:10DA10000E90032400F90036680E900FA408C90088
-:10DA20003A400C900B2412E9003E442C90036424ED
-:10DA3000F9022E400C9003C20430000000000000E8
-:10DA400080046510B9803E4008900A2600B1102A73
-:10DA500072089007640289402E40289012250089A0
-:10DA6000453E500D900A2500B9402E40289403E011
-:10DA7000001000000000000018052400B9002E402E
-:10DA80004890422601B94026400A904284018B0802
-:10DA90002C4009D0823432A9086E4208100224209A
-:10DAA000B9082C40189082C6004000000000000019
-:10DAB00008040480B32028480812020401B1002899
-:10DAC00058081202058981402C5808560615808195
-:10DAD0004028500914020580B1402C5A081402C293
-:10DAE0000100000000000000B80D6800F8002E00E2
-:10DAF0002E85032148F80036008E0502A00880001C
-:10DB00003E000D800B1004E0002C004C8003400010
-:10DB1000F0003E080C0003EE03500000000000007F
-:10DB2000981DE440F9103E440F9103F400FD003EBF
-:10DB3000440F9103E440FD033F441F911BE440FD6B
-:10DB4000013F500E9403F440FD003F400FD003A668
-:10DB500006700000000000001815F400CDA07168E8
-:10DB60008D9803D400CD0033600C988F2720C940D6
-:10DB70003E780C9E8B2720D11130608C9C032500B1
-:10DB8000F9403E780F90034600700000000000004E
-:10DB90003810E01088012201088C22E80088022A4F
-:10DBA00014088C0B239088A02EB0088C4223008888
-:10DBB000A0362A188A022200B8A02E340BCA820E80
-:10DBC00000300000000000000805C400814024501F
-:10DBD000091682C400A9002040081292540885004A
-:10DBE0002F4C09521214809D002150085422148099
-:10DBF000B5002D480BD00242057000000000000067
-:10DC00001805A4028901A240489002E402A9002A52
-:10DC1000406890026410AD002F4128500234008DFE
-:10DC200044274039D0023500BD142F400BD00246A6
-:10DC30000460000000000000A005C400C9003640D8
-:10DC40002D9003E700E1E032400C900B6402C9081C
-:10DC50003C500C90022602D9C032400C9013270091
-:10DC6000F9203E400F90036804700000000000009F
-:10DC70002801A402F90038400F9003E680D9A03CA7
-:10DC8000400F1003A400D9103E400F9003C492F936
-:10DC9000213C402E900FE680F9803E400F90038A91
-:10DCA00000600000000000002800A040E8103E04D2
-:10DCB0004E80032080D8603A020C80132000F84088
-:10DCC00036102D8003A008E84032000D0003210229
-:10DCD000C840B2000FC003CA0420000000000000CA
-:10DCE00028113B1086012FA00DA00238008EE023E2
-:10DCF000A208A0022800BA80228008A00228008280
-:10DD0000002A8028A0022A048A8022A00B6002CA6E
-:10DD1000004000000000000028054380A2002CA065
-:10DD20000830022E00920028C02830022C00B38058
-:10DD300024C009300A8C00A30060C008300A4C00DF
-:10DD4000830020E00B2002CA005000000000000009
-:10DD5000A001100086002DC0093A0235008600217E
-:10DD6000C00873021000BF8821000870021C088FD1
-:10DD7000002BC00820125E20878821830B6002E8F8
-:10DD80000040000000000000A8081200E5813DA04E
-:10DD90002C7A0B1E00D48038E00CFA0B1E00F680A3
-:10DDA00034E00D28038A00E68031200C78037A04E1
-:10DDB000CE8431E04F7843EA00000000000000000C
-:10DDC000080D8000F8003EC00FB523E400F00436D3
-:10DDD000400FB687E000F2003E001FA00BE800FAFB
-:10DDE000003E000EA003A800FA003E800FB003C260
-:10DDF00004600000000000000005F600CC8033A0A5
-:10DE00000CFC033E00FC8037E00FB9213E00FD8290
-:10DE100033E02CF8037E10DF843DE00CF803F600BD
-:10DE2000FD803F600CE8230000700000000000004F
-:10DE3000A8119840841021C00870021080B40021FD
-:10DE4000C80B7A021000FD0021040870021C4287F2
-:10DE5000002DC4486102D680B5002F040861822AD3
-:10DE6000046000000000000000009000810021809C
-:10DE70000830021C10BC0825804B300E1C00B4007A
-:10DE800020C0082002580096002F000A7002D0809F
-:10DE9000B4182D4009F80200002000000000000026
-:10DEA0002014C8028000A0C00830220BC0B0C022DD
-:10DEB000800B30020000A004220028A0022B008A60
-:10DEC000002C0008A006C000B0C22C0009BC1A0833
-:10DED0000430000000000000A815A000C80032C0F7
-:10DEE0000CF00B2600F9C036000FF0132C10BB40CD
-:10DEF000F2C00890036700D9803EC0089002EC0091
-:10DF0000FBD03EC0298C002A046000000000000005
-:10DF10008000E000F8443CD02FB003E400F9203E3C
-:10DF2000400F3003E000FB083E000F9013E442F97D
-:10DF3000103EC00F8003EE00FB003E800E8203E027
-:10DF400000300000000000000110E008FC8032E416
-:10DF50000EF0037400FC003F400CF00B3C00FE0090
-:10DF60003FC00DC1032020CC1033000CD10358005A
-:10DF7000CE002FC00FD1030044300000000000008D
-:10DF800081446200B0402AF108B0122608B8C82EB9
-:10DF9000700AB0022000BA002E00288003224088B8
-:10DFA0000120000A800228008A012E808B90022026
-:10DFB000401000000000000080052600B828224222
-:10DFC0000830026600B8802E3088B0022C00B901FB
-:10DFD0002EC0889002A400890022C0089002240C60
-:10DFE00089012E401B8002600040000000000000FC
-:10DFF00008040000B00028C02830020000B0002C47
-:10E00000400A30020000B1002C0008100A04008110
-:10E0100001A2C008000A048081002C001B000A0233
-:10E020000100000000000000000D6000F800324018
-:10E030000EF0236408F8002E000CF0032C00F8000A
-:10E040003EC00C80032002C80432001C9003200054
-:10E05000C8013E419F904340035000000000000073
-:10E06000A01DF000FC0C3FC00FF003F010F4003FC7
-:10E07000000FF423F000FC003F000EC003B000FCD2
-:10E08000003F000FC003E100FC003F011F5003E808
-:10E090000670000000000000C00DF0D0FF203ED050
-:10E0A0008EB003ECA0DB283ECC0CB303AD08F83CEB
-:10E0B00032230E48237A00FD943FE00F7833EE08B8
-:10E0C000BF803FE40FF90330007000000000000043
-:10E0D000A000ECC8BFD10FC80C2682FD248F002EF3
-:10E0E000990AF2621DD099612271888802AC00B849
-:10E0F000222E204B8803A00080002E080B80236076
-:10E1000004300000000000008805CC04B3030CCCF0
-:10E110000A1312CC14A30E0C580A33028C10A3203D
-:10E12000A00A18900248A0B02024800A2002CC093E
-:10E13000A1002C800B3242A2017000000000000000
-:10E14000E011AC20BB002EC04B80A2EC00AB004E17
-:10E15000462AB0022C049B802A608A9C02AC00B93B
-:10E16000812E400B9802A3008A002E400B8004F001
-:10E1700004600000000000004015E100FB043EC008
-:10E180000EB403EC0ADB022ED10EB003AC00FB820E
-:10E1900032281E0C036800B9003E404FB043ED002A
-:10E1A000EA003E400F800390047000000000000071
-:10E1B000C001B818FF021FC00CE203FC00DF032FF0
-:10E1C000A10F7003FC04AB0437422DD0027C00FC8D
-:10E1D000003F800FC003B000FD003F800FF00378C8
-:10E1E00000600000000000004010A900DB003CC0FF
-:10E1F0002E94016C11CB00B8C00CB0036C00EB0185
-:10E200003210079203A800F8003E0C07A203AD00ED
-:10E21000D80032000C8003D0042000000000000071
-:10E22000C8052808BF002FC08880023C08EF0322E1
-:10E23000000DF5003C008B822260039C022C10B97B
-:10E24000B022F00B90022000BB0022E20DB002F2DF
-:10E250000040000000000000E0054000B3022CC0B8
-:10E260000830026C00830020C0093404EC00A800D0
-:10E2700022F00B00028800B30028E00B1402A0007B
-:10E28000930020C008B002F8005000000000000019
-:10E2900020011E04B7802DE80878020EC8A790213F
-:10E2A000A81938529EC1878021E20BD9829E00B600
-:10E2B000A02D200B68021E00B4C12120094802C80D
-:10E2C000004000000000000048000C80B3103EE059
-:10E2D0000E3A074E00CB903A610D3803CED1E1984B
-:10E2E00030A48F10038800BAA13C8407000382D4B5
-:10E2F000D10072800C3003D2020000000000000048
-:10E300004015BC04FF003FC00FC223ECB0FF003239
-:10E310000406B4237C10BF003E840FB0037C40FF92
-:10E320000033400FF003FC00FE00BF400FC803D0D5
-:10E3300006600000000000008805E400CB333EC802
-:10E340004CB003AC90DBA036C00EBA436C00C900E1
-:10E350003E400F000F2800FB003E400F18436000B6
-:10E36000FA003E404F080B2A007000000000000039
-:10E3700048119C1007082CCA0820021C2087283F3F
-:10E38000808AF0021D4087042DC00B70021C00B66D
-:10E39000002D800B60031C00B5002D800B70021255
-:10E3A0000460000000000000C0008E0087A02DE483
-:10E3B0000A58021E01839021700B79029E0185C0CC
-:10E3C0002DE04B58121A00B6802D200B4802520047
-:10E3D000B4802D200B480230002000000000000017
-:10E3E0004814EC0083002CC08836020C0283006CB9
-:10E3F000C00B300AAC009BE06CC80B32020C01B3BE
-:10E40000002CC00B30020C10B3402CC00B3C82120D
-:10E410000430000000000000E815B802CA003E8089
-:10E420000EE48B2800CA0033950FA007A802CE4047
-:10E430003FB00FE4822800FA003E800FA02368005E
-:10E44000FA403E814FA4E33A04600000000000005F
-:10E450004800E080F0003C002F00026000E8003C33
-:10E46000000E80012000E8045E040F8003E000FC41
-:10E47000013F100FC403B000FC093F000FC003D2DE
-:10E4800000300000000000000810E400A920364021
-:10E490000E90034404D9003E400D9003E404C900EB
-:10E4A00032408F900BE408F9003E440E9803E600DA
-:10E4B000F9003E400F9003C204300000000000004D
-:10E4C0008004640089002240189002240089002EF4
-:10E4D00040089402E400D90422400B1C0B6400B9EC
-:10E4E000942C50089C02E414B9900E400B9002E06A
-:10E4F00000100000000000001805240289002640DA
-:10E500004A9002640099042E40089882E400890031
-:10E510006A400A9282E400BD012F5012D602F440F4
-:10E52000BD000F400BD002C60040000000000000FC
-:10E530000804048081202048081202048081222CD3
-:10E5400048A81206C490912028500B90024500B5AF
-:10E55000406D40085012D404B5022D400B5002C249
-:10E560000100000000000000B80D6140C800361432
-:10E570000A85034140D8502E140C8503C140C85071
-:10E58000BA000E8023E00078003E000E8003E00415
-:10E59000F8003E000FC003EE035000000000000032
-:10E5A000981DF440D9103E4407F103E440F9103FB0
-:10E5B00044AF9103E440FD1037500FD003E400F95D
-:10E5C000003E400F9003E4A0F9283E4A0F9283E6F4
-:10E5D00006700000000000001805E6D4FDA23A70A5
-:10E5E0008C9E032680C9A032680CDB4327809DA245
-:10E5F000B7400F50036500FD003FC107D003F5048D
-:10E60000FD402FC00CD003C60070000000000000C9
-:10E610003810E388B8502238088E00A2A088E8227B
-:10E62000384888036210A8E83C000B80036280B879
-:10E63000012E800B8021A200B0842E2A288A82CE4F
-:10E6400000300000000000000805C440B100285858
-:10E6500080134005008140205228160285809BC20D
-:10E6600064418B98020400B1092C401B1020C400A7
-:10E67000B1002C40481002C20570000000000000EC
-:10E680001815A584B900204008900224000100203C
-:10E69000500890426400A910AE580398026400B973
-:10E6A000002E400B9046A410B9002E41089002C6DF
-:10E6B0000460000000000000A011E700F9002A40FB
-:10E6C0002C940B2402C900B2440C90032404D9807A
-:10E6D000B6418F18032400F9603E400F9603E40012
-:10E6E000F9803E428C9003E80470000000000000B6
-:10E6F0002801A600F1003E400F1C03C400F9003EB3
-:10E70000408F9023C410F900BE400F900BE400F935
-:10E71000003E40079023E400F9203E408F9003CA5A
-:10E7200000600000000000002810A100F800BE00FA
-:10E730000E84032000C80032000C00832000F80083
-:10E740003E000C8003A000F80036100F8043E00864
-:10E75000F80032000F8003CA04000000000000002F
-:10E7600028052800BA00228048A0036800AA002AD1
-:10E770008008E003680082002F8008E6022804BEBB
-:10E780004023800BE802EA00BE0122800BE002CAAF
-:10E79000004000000000000028054C01930120C14A
-:10E7A0000A30020C00A30020C08838420C00A300ED
-:10E7B00024C00A3E428C00B24C24E04B3802C441D3
-:10E7C000B30022C00B1002CA00500000000000007D
-:10E7D000A0011C00B70020C9487002DC40A7142C1F
-:10E7E000C82830825CC185002DE02AF0121C80B759
-:10E7F000A021820B7082D411B68021404B5002E8D8
-:10E800000040000000000000A8081E80D58029EA12
-:10E810004E3A070E80E3B031FC0C48030E41E7800E
-:10E820003DE00E78039E80F4C435E00F7827DE00CB
-:10E83000F580B1E00F5803EA00000000000000007E
-:10E84000081DAC0031043AC40FB5936D08FB403A83
-:10E85000C8638023EC98E9003EC00DB043EC00F3A0
-:10E86000803E404FA003EC00F8683E408F9803C202
-:10E8700004600000000000000005FE60EB903EE434
-:10E880000FB8003F40CB807FE00EFB032E40CB80D3
-:10E890003FE00F79432E60CA8133648FD903FE00B5
-:10E8A000FF8133E00FD98B000070000000000000F2
-:10E8B000A8019C00878119E40BFA135E8087B22DB2
-:10E8C000EC0D79019E00D5902DF80B78037E08ABF6
-:10E8D0009129850B5102DC48B64021400B50022A99
-:10E8E000046000000000000000008C14B5206DC81A
-:10E8F0000B72025C80872069C0885302CC819750DC
-:10E900002DC80BF70ADCC0840121441B7022DC00F7
-:10E91000B50021C40B50860000200000000000005C
-:10E920002014CF3091002CC00B34024C0083002CFB
-:10E93000F20B10220C0091002CC80B180ACD01A379
-:10E940000028600B2102CE20B840A0540B1802080A
-:10E950000430000000000000A811BD00F9002FC025
-:10E960000FF4027C12CF033FC20EB003FC049B02E3
-:10E970002EF20FA40BDC00CE00B0C88FA403EF0072
-:10E98000F88032F51FDD032A04600000000000005B
-:10E990008000EC40E9003AC00FB103CC00F3003E28
-:10E9A000C00DB409EC18F9103E104FB10A6C80F993
-:10E9B0008936820BA603EC50F9503EC01F900360CD
-:10E9C00000300000000000000110FC00FDA03DC070
-:10E9D0000C70832C00EF0235C00DE203FC04FF0233
-:10E9E0002DE08EF0033C10DC003F800CD803FC00CF
-:10E9F000DE1833F04FD003C04430000000000000A8
-:10EA000081006C00B9002EC04CB0036C008B023644
-:10EA1000C00DAC12EC0079002E300D3D42AC0089E7
-:10EA2000881A100D8602EE04BB4022E00B9002E033
-:10EA3000401000000000000080052C01B9002EC02D
-:10EA400008B042AC000B0526C0099420EC00B98048
-:10EA50006EC488B0822C009B822E42088102E48022
-:10EA6000B80022C10B9002E000400000000000004E
-:10EA700008040C10B1252CCA083446CC08830024A5
-:10EA8000C20B0252CC8183002C0019B242AC8081AF
-:10EA9000082880090002C440B10020C00B1002C247
-:10EAA000010000000000000000056C00B9003FD02C
-:10EAB00008F607BCC2AF3075DC0D1602FCE0B95099
-:10EAC0003ECC0CB0232C10D9003E000C9003EC007F
-:10EAD000DE0132C00F9003C00350000000000000B0
-:10EAE000A019FC00FD103FCA2EF6036D949F303A2A
-:10EAF000C90C8393FC80FF117E190BB103FC40FD10
-:10EB0000083B000FC003FC807700BFC00F5003E834
-:10EB10000670000000000000C001FC00F49437C83B
-:10EB20000D69637C10FF6237C00DB4037C60D48034
-:10EB30003F400F48233200CE00BF408FD10330E06A
-:10EB4000FF303B600FD803B00070000000000000F1
-:10EB50008010ED20B82423F449A2023F408F5123B6
-:10EB6000DA08F6123D809B802E494B80034000D985
-:10EB70000122740BD5022100BF422E490B9C02E0FA
-:10EB800004300000000000008805CD80B82028C1B6
-:10EB90001BA0024C0093202CD80B3402CC00900117
-:10EBA0002CC61AA00268088300A4400B10020000C3
-:10EBB000B31028420B1402A20170000000000000F4
-:10EBC000C015AC00B8602AC01BA08EAC019B052606
-:10EBD000C003B0426C009B802EC003A00669009960
-:10EBE00080AAC00B900263003B002E584B9002F0AD
-:10EBF00004600000000000004011EC04F880BAC07E
-:10EC00000F30036C10DB0336C08FB003EC08D880E4
-:10EC10007EE00688034108CBA03E640F900B2A00DB
-:10EC20007B003A010F900390047000000000000088
-:10EC3000E001BC00FC8432C00CF9035C10EF003B27
-:10EC4000C00C70039C00EC013FE44FD103F100F3D2
-:10EC50000533600FD003BC04FF003F210FD003F841
-:10EC600000600000000000004010AC00C8403AC640
-:10EC70000DB4036C00F30034C00EB0036C00E91057
-:10EC80003AC00F84032C60CB0032600C500361004B
-:10EC9000CB003E900E90A3900420000000000000E6
-:10ECA000C8053C02880101F020B0013E003F00335E
-:10ECB000C00BF0323C08898022C0011512AC008BD9
-:10ECC0000022C048DB022F408F002E0108D4803282
-:10ECD0000040000000000000E0054C00080008F0C3
-:10ECE0000800124C00330124C04A30024C00A0201E
-:10ECF00028C00B10024604830420C02918020440D7
-:10ED0000B3002C400A1C42B100500000000000007B
-:10ED100020011E018D8021E018C8021E00B3A02131
-:10ED2000E01B38020E01A78021E009D840D64087B9
-:10ED30008001E0095902160097842D6008584000B0
-:10ED4000004000000000000048082C40C00038C40B
-:10ED50000C30274C20F30134C10E3A034CC4E000C0
-:10ED600018C80F34034440C30030C00D90032E0078
-:10ED7000F3003E400E10019A020000000000000067
-:10ED8000401DBC00F9000ED40EB003EC20FB203F68
-:10ED9000C40FF103EC60DB103FC04FF003A446FB4F
-:10EDA00000BDC00ED00BB400EF483F400F5003D061
-:10EDB0000660000000000000A805EC00F80032D456
-:10EDC0000F8003AD00EB0822D20CB6036C00F2807A
-:10EDD00036C00EA0032810CB00B2C00FD6032810F7
-:10EDE000FB203E404F99132B0070000000000000F4
-:10EDF00048119D10B40121C18BC0021CA0BF042783
-:10EE0000C80875021CC0B60021C008F04218108F57
-:10EE10000021C00B54A21C00B7042D410B5202125A
-:10EE20000460000000000000C0009E80B688A5E0DD
-:10EE30000B78129E81A79025E48878021E80BF80FF
-:10EE400024600B68021E00878461E00A1A0A1A0017
-:10EE5000B7A02DE00BDA0230002000000000000017
-:10EE60004814CC00BAC0A4C00B34020C00B3002478
-:10EE7000C008B00E2C00B39820600933022C00A308
-:10EE8000C820C00B10020C00B3002CF00B100212B3
-:10EE90000430000000000000E815A800FE80368164
-:10EEA0000BE003A800EA00B28008A0036800FE009F
-:10EEB00036A01FE8133B82CEE022808EA0033800EC
-:10EEC000BA003FA20FA0033A046000000000000057
-:10EED0004800E000F8203A10078003C100F800382D
-:10EEE000002F8003A001F8423E050E800BE080D881
-:10EEF000003E000F8403E100F8003E000F840BD2B7
-:10EF000000300000000000000810E400C9003A5082
-:10EF10008F9083A402D100B2404C90232408C901F1
-:10EF20003E400C90032400C10032400F140A2520FB
-:10EF3000E9003E420F9003C20430000000000000D0
-:10EF40008004640A890022700B90122580C9002277
-:10EF5000400A9003640089202C400A900A2400890A
-:10EF6000C132400B9802060089902E400B9412E0AB
-:10EF700000100000000000001801040089006A422F
-:10EF80000A1002A4008900A2400A9002240009008D
-:10EF90002E4058100224008980AA600B9002A4041D
-:10EFA000A9002E400B9402C60040000000000000A3
-:10EFB00008040480810060480B10020481812060F5
-:10EFC000480A1202448881000E590A140205008181
-:10EFD000C028504930028C8401602C500B1002C2B2
-:10EFE0000100000000000000B80D6140C0542A007C
-:10EFF0000E8503A000C85032151E05222142C8000C
-:10F000003E000C80030004C8003A004F8503A14075
-:10F0100068003E000F8003EE035000000000000077
-:10F02000981DE440FD033E440FD003E448E9103E40
-:10F03000450F9113E440FD003F440FD003F402FD5F
-:10F040004033500FD4237440F9103F400F5403E66F
-:10F0500002700000000000001805E400F901336AA6
-:10F06000099003B634F9C832640C9A03E6A0DD00B7
-:10F070003C700F9003A500898033320FD8133C00F9
-:10F08000FD0070500FD0030600700000000000006B
-:10F090003810E280B8A822100888022100B8C020E9
-:10F0A000300D8E87838888002E340B8A822280DC84
-:10F0B000E022380B80022000F8A82A280B80020EDC
-:10F0C00000300000000000000805C420B10020400E
-:10F0D0000A92928411B1246858091102C420910146
-:10F0E0002C481B500274849548AC480B94020404CD
-:10F0F000B10224480B10020205700000000000005D
-:10F100001811A400B12022400A90062C01B9002A4F
-:10F1100040099002A4009B082E480B121A74009517
-:10F12000452E600390022400B9002E400B90020689
-:10F130000460000000000000A015E400F9803040E9
-:10F140000E1603A400B90432400D9002E400D94029
-:10F150002E401F9803E580D900AE6007100B2601F2
-:10F16000B900A6400F900B280470000000000000BA
-:10F170002801A400F900BE40AC9203E400F900B4F9
-:10F18000400F9003E400E9003E600F9003A480F973
-:10F190000032000F9083E685E10032440F1003CA6D
-:10F1A00000600000000000002810A000F8003200FD
-:10F1B0000F8013E094E00032000C80036000C80070
-:10F1C0003E000D80432008F80032000F8003E0402D
-:10F1D000F80032004C8023CA042000000000000028
-:10F1E00028052800BA0023800BA002FB046A002235
-:10F1F000800AA003680A8E883A8008A0020800BA34
-:10F2000000B72203E402FA008A00228008E802CA5A
-:10F21000004000000000000028054C00B3006041E1
-:10F22000033002CC41A30004C00B30022C00A380A9
-:10F230002CC00938020C00B300A0C00B3402CC80F3
-:10F24000A10020C0083802CA0050000000000000E1
-:10F25000A0011C40B70061000B7102DC00A3002577
-:10F26000C81938025C80A7000FE80964221000B3B7
-:10F270000025C80B6002F200850123E8087082E8CF
-:10F280000040000000000000A8081E20FF80A1A090
-:10F290000F7A42DA00E7E835F02F7B621E82E680C3
-:10F2A0001DE00DF80B1E00F78031F00F7803DE0C27
-:10F2B000EF8031F82C7803EA000000000000000025
-:10F2C000081DAD84FB683E000FB003E800FB00FAA8
-:10F2D000D80EB503ED00DB003AC08EA003E000FBC2
-:10F2E000403EC00BB043C404EF02BFC00FB003C226
-:10F2F00004600000000000000005FE42C7383364CF
-:10F300000E7C035E00DFA037F00DF803FF20CF81F5
-:10F3100033E20CD803BE007FC033E00CF9037E005B
-:10F32000FD803FE00FF803C0007000000000000007
-:10F33000A8119C0087A021140871021410D7203551
-:10F34000C00C7003BC0085082BC04D4602D100B72D
-:10F350000021C00860020880F5203DCA0F5403EA6E
-:10F36000046000000000000000009C118F01208458
-:10F370001AF0021800A73465C0097102DC008E0083
-:10F3800029C00850069C00BF882DC40A6026582456
-:10F3900097006DC09B7002C00020000000000000BC
-:10F3A0002014CC008B4020001830020000BB022447
-:10F3B000C0083020CC0081C028C00B0482E010BB04
-:10F3C000A02CE00A20060000B30028C00A10028822
-:10F3D0000430000000000000A815BC00CF1032006F
-:10F3E0000EF00B2400EF0037C00DF003FC06C150F7
-:10F3F0003BC00CB403AC00F8C0BEC82EB0036E0115
-:10F40000FB002DC04B9002EA0460000000000000E9
-:10F410008000EC04FB003E000FB003AD009B003EFB
-:10F42000C00F3003AC00F8002EC005B403ED00F8A7
-:10F430004032C0090003E091E3003EC00F9011E0AC
-:10F4400000300000000000000110EC00EF0033204D
-:10F450004FF003B400EF033AC00FF0033C00DC00B0
-:10F4600031C08DF803FE04CF0032C80CF00B1C0035
-:10F47000CF9333C08C4002004430000000000000F5
-:10F4800081046C00BB00A2040B30020E00AB002A0A
-:10F49000C009B0036C08A8C036C008BC02EF02ABBC
-:10F4A000D020E008B82226108B0022C0209C022029
-:10F4B000401000000000000080052C00BB0026006A
-:10F4C0000AB002A208AB006AC00BB00A0C008B8025
-:10F4D00022C009B102EC40880822C008B802260008
-:10F4E0008B0022C0089802A000400000000000002D
-:10F4F00008040C00B30024000BB0020001830020BC
-:10F50000C00930024C00000424C00830064C0080C2
-:10F51000002CC008000200418300A2C008100A822B
-:10F520000100000000000000000D7C00EF08260034
-:10F530000EF002A000E7003BC00FF5433C02DA00EA
-:10F5400032C00DB003EC00CB00B2C00CA0032810F9
-:10F55000CB0032C00C80038003500000000000008C
-:10F56000A00DFC00FB003B000FF003F000FF023F8A
-:10F57000C00DF203BC00F4003FC00FF003FC00F725
-:10F580000033C00F6003F088FF003FC04FD0036816
-:10F590000670000000000000C005FC40FC313B0884
-:10F5A0004FF943EF00DF3032210F94077D80EF38B1
-:10F5B00032091C3803F221FD0033C40CF002FC00B8
-:10F5C000DF0033C00FF003300070000000000000C7
-:10F5D0008010EC888B6022E50EB222EC80AF112AFD
-:10F5E000200BB113AC488B4534CC48B0026B00BA49
-:10F5F000823600088822C0048800A2088B88622016
-:10F6000004300000000000008805CC00A130280074
-:10F610000B3202CC00A3222C008B1206C880A30060
-:10F620002002CA3006C401B10068800920028800A7
-:10F63000830020C20B000AA201700000000000003D
-:10F64000C015AC008B6162C00BB202E800AB022AAD
-:10F65000611B9002A800AB0020C00AB0026C04BA83
-:10F66000002E40899002E608980022000BB002B0FC
-:10F6700004600000000000004015EE00F8013A04AC
-:10F680000FAC03EC90FB023EE00B90426780A8C4F5
-:10F690002248228603E140B8022A40299003EC0266
-:10F6A000C94832400FB01390047000000000000001
-:10F6B000E001AC40FB001FA20EF882FC08FF003FF7
-:10F6C000C00FFA439644D4913F400DC003FA00FFA7
-:10F6D0000825800EE003D000EA003F800FC00378C9
-:10F6E00000600000000000004010AC00E1203A5033
-:10F6F0000F90032C00EB0876050EB027E010EA40CF
-:10F70000B2C00CA4432500F80032080F8043E80083
-:10F71000D108EE400F0003D00420000000000000DC
-:10F72000C8052C008B0022D00B90822C0087402231
-:10F73000608BB002E000D85022D00CA0036C00B364
-:10F74000C83ED00BB80225088A202A808BB882F2E6
-:10F750000040000000000000E0056400A0C024C0DC
-:10F760000938022C0083032000103022CC008300D3
-:10F7700060080A30824C00B1C000D10B380284808E
-:10F7800082012080033802F80050000000000000D1
-:10F7900020011640849825E00B7A02FA48A32061E4
-:10F7A000240B7900CEC093A421A60B7812DE80B67C
-:10F7B000802D240B4B021A40858121600B4802C822
-:10F7C000004000000000000048080C00E2A0B4FE69
-:10F7D0004BB80B0E00A3B024A80E1B02CEC1C3C0B1
-:10F7E00030682E3A474E80F18030800F22838000AF
-:10F7F000C21038804F0007D2020000000000000055
-:10F80000400DBC10FE043BC107F0031CC8DF2A0BEF
-:10F81000C48FD143F8027F003FC00CF10F3C00F2CF
-:10F82000113F411F5203BC0EED143F400FF803D0AF
-:10F830000660000000000000A805E400E900328036
-:10F840000EBE4B6F00CB827AC02CB0032C00C900D7
-:10F8500032002C10032C08C00026406C9013241298
-:10F86000C8013E000FB80B2A007000000000000025
-:10F87000481194008D0021800B70823C2083322936
-:10F88000C008F0201400800023000850069C04D714
-:10F89000022880086002081087002DC00B40021269
-:10F8A0000460000000000000C0009E00A78021E06E
-:10F8B0000B5C121E0487820DA00978160200B4802A
-:10F8C00025E00B78029E00848021220808021201A4
-:10F8D00084C02D200B080230002000000000000032
-:10F8E0004814CC008342A0D80B34820C00A3022021
-:10F8F000E008B0020C88B32124D80B3E028C0093A0
-:10F900000828C00838022C058B012CE00B300212AD
-:10F910000430000000000000E815A800EE0033905D
-:10F920000FA00B6800CA017FA80CAA033A12FEE2DE
-:10F9300037B00FEE021800CA4036A008A08B28008E
-:10F94000CA812EA00FE0033A04600000000000000E
-:10F950004800E000F8083E000F8003A202D8403EB5
-:10F96000080F8013E0404840B8040884036100FC9D
-:10F97000003F004FC003F100FC003F040FC003D262
-:10F9800000300000000000000810C400F9003050F2
-:10F990004CB9036C18F90036400E9C23A4024100B8
-:10F9A000B2440E9A03A680C9003A600A9003A4806C
-:10F9B000C90034400C9003C2043000000000000075
-:10F9C0008004640089402278089402E410B9003C65
-:10F9D00062189482A40089C82270481E016780D1F1
-:10F9E00000BC42081002252089022240089002E053
-:10F9F000001000000000000018052400B12822407B
-:10FA000008B082640439412E480A90020418A920E3
-:10FA100022424A90022C0489042B4802D002B40AE4
-:10FA20008D8023C048D002C60040000000000000C6
-:10FA3000080404808120A048281002C400B1242AB0
-:10FA4000400812428580A120A048089002440095F9
-:10FA50002C2D5A0A728214A085A8214A085282C20B
-:10FA60000100000000000000B80D4140F8503200D5
-:10FA70008C05036140F8512E000A85022000E850F1
-:10FA80003214068517A000C8203A080E8203A08011
-:10FA9000C82032082CC203EE035000000000000012
-:10FAA0009819F440FF103F440BB003E400F9103DF7
-:10FAB000400FD103F4589D103F444FD003D500F9B7
-:10FAC000003E408D9003E4B8F928BA6A0F9003E62F
-:10FAD00006700000000000001801E700FD883E608D
-:10FAE0008FD0032401DD8073400FD803A604CDA27C
-:10FAF00033781CD0033401F5883B680CDA47378033
-:10FB0000CD8832620CDA03060070000000000000AD
-:10FB10003810E380B8802E140B0A822280B8F8A235
-:10FB2000000B8FA383E088EB22A9088812A005B8F8
-:10FB3000002AAA88801362828880222888A4020E64
-:10FB400004300000000000000805C500B10A2C4187
-:10FB50000B10060420A10000408B1046C401911137
-:10FB600024586890C20400B100A85009140A0595F1
-:10FB7000A108A04228110A02017000000000000044
-:10FB80001815A418B9202E500B90062409B900228C
-:10FB9000408B9102840099642440589002A420BBB9
-:10FBA000002A4009B0020501A900224088920206FD
-:10FBB0000460000000000000A015E600F9403E408F
-:10FBC0004F980B2480D90022720B9803E484D9004B
-:10FBD000B6700899022400B9002A400D94C225008D
-:10FBE000A90022400C9403280470000000000000CB
-:10FBF0002801A680F9083EC00F9143E400F9003EB9
-:10FC0000500F9803A500E9003A640F9003E400F94F
-:10FC1000003C406E9003E420D9003C400F9082CA23
-:10FC200000600000000000002810A000E8003E0076
-:10FC30004F840B2000F80036010E8003E000C8401E
-:10FC400032102D8003E054C80036100F0483E050BA
-:10FC5000D80412000C000B0A042000000000000071
-:10FC6000280528008E422EA28BEA022808BE89377A
-:10FC70008448E01228028EC023B04D6062F80086EE
-:10FC80000023800BE002F8000E00228008E4020A44
-:10FC9000004000000000000028054C00A3002C805C
-:10FCA0001BB09A4C109B8024C00A30000C049B208F
-:10FCB00020D60830028E08A30424C0193402C707D6
-:10FCC000AAA4A0C04834020A0050000000000000AE
-:10FCD000A0010E0087002DC00B40025C40B314252C
-:10FCE000E0087A029EC09240A000496002CE028ED7
-:10FCF0000121C08B5402C408864021C88810022804
-:10FD00000040000000000000A8081EC0E4803DE2A2
-:10FD10000F58035E90B6A235E00E7C231C00D680FF
-:10FD200031E0847803DE00C78035E00F6803DE0031
-:10FD3000E38033E82C78032A020000000000000072
-:10FD4000081DAC90FA007E400F9003AC01FB003C14
-:10FD5000410F300B2D04EB013EC00EB003EC00FA56
-:10FD6000003FC00F8003EC00E9603EE40F9003C247
-:10FD700006600000000000000005FE20FF903E200D
-:10FD80000CA9072E44C99130A00CB8632F44CBA115
-:10FD900036208CF8033600CF8233E00CF8232E0097
-:10FDA000CEC03BE00C6803000070000000000000C3
-:10FDB000A8119C84B3542CF428BA8A3E4081A0290F
-:10FDC000B00F7842AE00839033E80DE100854082A9
-:10FDD0002423C60D71035EE087002BC10D44022A67
-:10FDE000046000000000000000009C0835146DC095
-:10FDF0008872325C8084302B880A70425CA891083B
-:10FE000025C80970024C22830A61C009200204003F
-:10FE1000870021C0086002000020000000000000F0
-:10FE20002014CC10B3856CDC0834024D21810028ED
-:10FE3000024A3112EF0C91C220F00830428E00824B
-:10FE40004020C8192802228183C028D409000A084A
-:10FE50000430000000000000A815BC00FBA03EC05C
-:10FE60008C04127D10CF023A5008C0427D525801D6
-:10FE7000362269D0132A00888232F009B8822F0016
-:10FE8000C9C823C00C8A032A0460000000000000D7
-:10FE90008000EC00B9403C504F8023AC12FB002A9C
-:10FEA000C06D8013AC00E804BA100F8003E800F3C3
-:10FEB000083C800F9083EC04F9602CC20F8083E033
-:10FEC00000300000000000000110DC00EC2C3FF0CE
-:10FED0008CFA8BBC00FE003F000F79033C00CE087B
-:10FEE0000BC20CF003BC00FC0033408C7A033A00D8
-:10FEF000C50033C04CC803004430000000000000BF
-:10FF000081046C0088C02EE00894022C00BB80663F
-:10FF10003016B0022C00DA4C22F008F003EC00EBB3
-:10FF2000C022680094022C02A98022C0080C02A002
-:10FF3000401000000000000080052C00AB042EC023
-:10FF400008A4062C04AB102E604380826C018180D3
-:10FF5000280A089100E000B88002E00880022D80A5
-:10FF600088C022C00882022000400000000000007B
-:10FF700008040C0080442CC828A0220C04B3262CB2
-:10FF8000C88801060CE09120200C380422C048A348
-:10FF900042A0810800020C80810020C0280002825B
-:10FFA0000100000000000000000D7C00A9403E445C
-:10FFB00008B1032C40EA492E0D0BB6137D80C940D1
-:10FFC000BAD00CB403AC00F80032400C800B200017
-:10FFD000C500B2C00C800300035000000000000008
-:10FFE000A01DFC04FC003DC50BF100FCD0772937B7
-:10FFF0000C8E7403FC08FD693FD80FF003BC00EFC2
-:10801000003F4007C003F040FD003FC00FC003E831
-:108020000670000000000000C00DFCC0DC803FC8EE
-:108030000F48037C20FF6837E00EF1039C00BF204F
-:1080400037E00CC8133C40ED60BBE42C434B70A000
-:10805000CC2C3F090FD843700070000000000000D6
-:108060008000EDC0B8802FF40F98023F00BF42227D
-:10807000CA08F4023E00BFD0226028880A3D808DE5
-:108080004022C80881022180DBC02EA50B98422027
-:1080900004300000000000008805CC10B0002CC0A7
-:1080A0000B2002CC00B32026C08A36128C41B300CC
-:1080B0002E400800020D81A13022C889A24208206A
-:1080C000B0002C400B902662017000000000000000
-:1080D000C015AC00B8502EC00A9002AC00BB002204
-:1080E000C008B0622C10BB042AF04A88020C008140
-:1080F0000022C009B8802600B8802E210B900230E3
-:1081000004600000000000008015EC00D8C03EC0F4
-:108110000B8003EC00FB0036800EB003AC00FB00CC
-:108120003CE00C0C032C00E90010C00C8C03060092
-:10813000F8CD3E220F18034004700000000000003C
-:10814000E001BC00FF003EC00FF0037C00F7023FDF
-:10815000E40F70037C04B70037400DC003FC00FD42
-:108160000037D00EC043F400DF003F808FDA03F801
-:1081700000600000000000004010AC00F8103AC0A1
-:108180006DA613EC00CB003AD00FB0032C10DB101F
-:1081900036D80D8403EC06C9083AC00E8603A860E1
-:1081A000F8203A400C900354042000000000000026
-:1081B00098053C00BB4023D00830023E10AF0020A1
-:1081C000C00BF0023C008F502EC8068A02FC008DC6
-:1081D0002482D60832022D083A4022800D90036294
-:1081E0000040000000000000E8054C00B02028C25C
-:1081F0000804028C00130228C00B30020C3093805C
-:1082000024D0092002CC00914008C02A1402810029
-:10821000900068000818023A0050000000000000BA
-:1082200070011E00B4A021E008C8129E00B3822194
-:10823000E00B7A0A1E0097802DE10A4802CE409595
-:108240009029E40858029A00B78821E00958025C96
-:1082500000400000000000004A000C00F08038C41C
-:108260000C25038C20930038C40FB0030C80D3007E
-:1082700034C00D0413CC0899002AC00E21038804D1
-:10828000F30038C00C11831202000000000000004F
-:108290004215BC00F4003FC30EC0031C00AF4A7F70
-:1082A000C40FB203FD01EF103F840FC003FC00E9CF
-:1082B0000037C20EF1477C00F7003DC00F5003D0DD
-:1082C0000660000000000000AA15EC08F8003ECA95
-:1082D0000F9003EF21FB807A408FB2A12F00CB607B
-:1082E0003EC00FB003EDA0E93032C02DB003E40072
-:1082F000F8003E000FB003EA00700000000000002C
-:10830000C8919D00B4012DC80B7002CC808F202134
-:10831000C08B76035D00870A2DC00B4022FD008DC7
-:108320001023C8085012D400B7002DC00B7002F201
-:10833000046000000000000081009E00B4802DE079
-:108340000B7C02DE40A7822DE00B3A028E00879064
-:108350002DE00B58025E00A5A265E0086882DA00F5
-:1083600095802D600B7802E00020000000000000E6
-:108370000884CC00B0092CC00B3802CC0083002E3E
-:10838000C00B30424C0083002CA00B0402CC0081B7
-:1083900000A0C008B006CF80B3102CC40B3102C3BC
-:1083A0000430000000000000E805A800FE803E80C8
-:1083B0000FE813E800EA003FB00FA003A802C200D4
-:1083C0002F880FE003E800EA0036000CE003F920F4
-:1083D000DE803FA04FA803FA046000000000000008
-:1083E0004800E000F8103C100F8083E100E8002214
-:1083F000060F0013E001F8003E000F8083E000F854
-:10840000003E000F8423E000F8003E100F8003D2EE
-:1084100000300000000000000800E400F9103E44B5
-:108420000D9003E400F9003E400C90122400F91076
-:1084300032408F9003C400C90032100C9C0124000C
-:10844000F9103E700F9002C20430000000000000DE
-:1084500080146400B9C02E48089102E400B9002ECF
-:10846000400D90036700B9802A600B9902E40081F7
-:108470000022402C90122520B9482E520B9402E085
-:10848000001000000000000018052400B9002E4074
-:10849000689046E400B9002EC0089002A460B900BC
-:1084A00022480B9006E4028900A040089002A61022
-:1084B000B9000E400B9002C6004000000000000012
-:1084C00008040480B1002C48081002C484B1202C98
-:1084D00040091202C480B12028400B1002C48089D8
-:1084E0002020404B120A8484B1202C488B1002C2F9
-:1084F0001100000000000000B80D6140BA002E001D
-:108500000C8003E808F8503E140C85032000B800E6
-:1085100032000FA003E140C85032140CA503A14063
-:10852000F8003E000FA003EE035000000000000022
-:10853000880DE440FD003E440FD003E440B9113FF4
-:10854000400F91036444F9103F400FD003E440FD15
-:10855000103F108CD1037440FF103F440FD003E64E
-:10856000067000000000000008056620ED00336979
-:108570004D50435600F9A034400F9A0B3400DD8073
-:108580003B400B5003E400F90032E00ED003F4004E
-:10859000FD003F400CD003C600700000000000004A
-:1085A0007810E280880422100B80022009B8F022A3
-:1085B000000B8E12A000B8522E000B8002E005B80E
-:1085C000AA233E0D8002E000B8003A00088002CEE7
-:1085D00004300000000000004805C420A900A444A5
-:1085E000099002C500A1082C400B11820400B100C3
-:1085F00028400A1042C400B500A140081002C4007F
-:10860000B1012C40081020D20170000000000000D1
-:108610001815A400890422400B9000AC0039002AF0
-:10862000400B1002A400B9002E480B9012E400B9D0
-:10863000002160099222E428B9000A50089006C679
-:108640000460000000000000A015E400E9003640CE
-:108650000D9003E400F9003E480F90032400D90078
-:108660003A780E9803E400B900B2400E9223E60077
-:10867000B9503E702C9003E8047000000000000028
-:1086800068018400F9003E404F9C236400F90436E1
-:10869000480F9003E400F9003E600F9203E400F9F4
-:1086A000003E408F9083E444F90078640F9003DA31
-:1086B00000600000000000002810A000F8003E004C
-:1086C0000F8203A040E8003E000D800320C0C88058
-:1086D0003E120F800360007C0033000D8013E01019
-:1086E000C8643E080C8203CA042000000000000099
-:1086F00028052800B6E00FA00B60823800AA002EE3
-:108700008008A042BA00AE202F880BE5022800BAEC
-:10871000D8378008EC02F8048E002F900DE002CAD2
-:10872000004000000000000028054C00B0242C6030
-:108730000B38028E80AB002CC00930020D0800807F
-:108740006CD00B3402CC00B8C02000483412CC40AE
-:1087500083002CE00A3502CA00500000000000002F
-:10876000A0011C40B7002D028B60029E0087202FC5
-:10877000E00872029E00A4002DC00BF8029CC0B35A
-:1087800002A5C0085086FE0087002FD0097002E8BD
-:108790000040000000000000A8081E00F4803D20FA
-:1087A0000F58039E0067803DF80D38021A10448070
-:1087B0003DE00F5803DE20B48033A02C6803D600C0
-:1087C000C7813DE00C7803EA0200000000000000D1
-:1087D000081DAC08F8003E008F80036C003B123E81
-:1087E000CA0FB503C800F8047EC00F90036C80FB6D
-:1087F000043A400F9023C800F9013CC00FB003C2F7
-:108800000660000000000000C005FE00AC9031488A
-:1088100008F803FA00CF803FE00CFC133E04FC8014
-:1088200035A00C7803BE00DF803B2024F8032E40E7
-:10883000CF8033E003F903D0007000000000000097
-:10884000A811BC0080000100087202D00087002D32
-:10885000C80AF0029840F50061410074021C00B49F
-:108860000021C80860023E20860821D80F5002EA85
-:10887000046000000000000018009C00A40021001B
-:10888000085002D80097002DC08871021400B00073
-:10889000259008C0829C40930029A1886002141290
-:1088A000874029400B6002C4002000000000000047
-:1088B0006014CC0080D0A000081C02C00093002CE3
-:1088C000D00AB0268000B30024E40808028C00B06F
-:1088D0000202410808020301810028421A0042D81E
-:1088E0000430000000000000F815BC00E8C0328031
-:1088F0000CB503E4009F003DE00CF00B2400F800F1
-:1089000036E00C2503BC05D8022A0008BA022A006A
-:10891000C1023A508B9003EE04600000000000009A
-:108920008000EC00FB083E800FA103EC04EB022E5C
-:10893000C60FB0174400E8003A400F80026C00FBFD
-:10894000003EE00F9093E100D90026708F9001E186
-:1089500000300000000000000010FC00FC03372481
-:108960000DF803E000FF003FC18DF00B3800CC0094
-:108970003FC00FFA033C0CFC043B800CA003942086
-:1089800089053B004FD023C00430000000000000E8
-:1089900080046C00B006201388A802EB00BB002EF8
-:1089A000C008B0022A00A8802EE00B941A2C00BB4D
-:1089B00000A240299802E200A98422200B9802E03C
-:1089C000001000000000000080052C00B80022000C
-:1089D000098202E600BB002EC00BB0022600888090
-:1089E0002EA00BA0022C00B3002A00099802EA2056
-:1089F000A9802A609B9882E00040000000000000EF
-:108A000008040C00B8002000090802C400B30026C6
-:108A1000C0003002000081002C410B00020C00B0AD
-:108A20000020C00B0002C880A80020410B1002C229
-:108A30000100000000000000000D6C10F850B200B2
-:108A40000D8003E000FB003DC00DF0132402C806BA
-:108A50003E800FA0033C04FB0078800CA003E400E0
-:108A6000E9001A400F9003C003500000000000000E
-:108A7000A01DFC00F4203F000EC002F001FF003FEB
-:108A8000C00FF023F000FD003FC00FC003FC00FC4E
-:108A9000003F409CC003F040FD003F400FD043E842
-:108AA0000670000000000000C005F000ED23B7488C
-:108AB0000CE1C37CC0DD8037E00FCB03FE08FC284F
-:108AC0003FF01CFB237C01FF1477E24FE8237C007E
-:108AD000C48033482CF822300070000000000000F1
-:108AE0008010E0E0C9C0225B8896222D00892222F6
-:108AF000CA0B9E22E2A0B9612CE0889F023D85BF8F
-:108B000060265048A0023C008800225008B0022095
-:108B100004300000000000008805C080B11020442F
-:108B20000BB202CED081082CC00B01028C08B30816
-:108B30002CC90810628C60B33224800AA0026C0336
-:108B40009A01264448B04262017000000000000013
-:108B5000C015A4A08B0222E00BB062AC9899002A49
-:108B6000C20B9806E400BB022EC00891422C10BB39
-:108B7000006E800A80026C001B00064048B80A7034
-:108B800004600000000000000011E700A1007678FA
-:108B90000FB003E810D9003ED04B9E13AC08B8A02C
-:108BA0007EC608A8022C01BB0026304E20034C18BC
-:108BB0009980B4404C3A034004700000000000006B
-:108BC000E001B200FDC53BC04CD0036A02ED0633A4
-:108BD000C40FD053F800FC907FC10F7803BC04FF92
-:108BE0000037640CF103A400EDA13B400BF083B807
-:108BF000006000000000000040108C00CB203E719F
-:108C00000FB3039802FB0236480F9003EC20F800E4
-:108C10003ECC0484032C00DB043C100FA003EC00CA
-:108C20009B0032400C9003D00420000000000000A4
-:108C300088052C028B482EE00B34036B008BF52249
-:108C4000F20B9C03AF00B8502EC008B0027C008F1E
-:108C5000000E5D0B8002F54083502354089C02E611
-:108C60000040000000000000E0044C0081812E4024
-:108C7000032C020433990020F04A2880CC40B00035
-:108C800026100820024C0083002CC0092002CC00D2
-:108C9000A00228400808027A0050000000000000EE
-:108CA00020010A0085802DF80BDA02D64085A0212C
-:108CB000E00B48069204B5802D210800024E008783
-:108CC000A42D600B6802DEC2AD902B60285882DCB8
-:108CD000004000000000000048084C40C3102C6C0D
-:108CE0000F300386A2F9B0B0E00F2983CE44F380A1
-:108CF0003CAC0C30030C00C3003CD50F2003CEC1AC
-:108D0000E010B8400C0003D2020000000000000098
-:108D1000C01DBC00EB003ECC0F32036408F9003BE1
-:108D2000900FF043E440FB343F8107D103AD20EBCB
-:108D3000207FC40FE103FC50CD1035400FD003D08D
-:108D40000260000000000000A805E404FD043D40AE
-:108D50002D30023C00C9013EC04FB843EC10FB006F
-:108D600032400FA023EC80CB3632804DA8032C106C
-:108D7000CB0032400C90036A00700000000000003D
-:108D8000C8119008B5002DC0085002BC0285042D02
-:108D9000C08E6006D804B70421400B7002FC80AF7F
-:108DA0002821C00B70020640870021500850023273
-:108DB000046000000000000080009E20B7802B703F
-:108DC00008F8061E0087802DE00B7032DE04378421
-:108DD00025E00B6806DE80878021A11B68021E400B
-:108DE0009F80206008580220002000000000000042
-:108DF0004814CC20B3002C8088B4228D0083902CA2
-:108E0000C00A3802CE08BB2024D00BB302CC00A38A
-:108E10000060D20B202A04089350204008170A0251
-:108E20000430000000000000E815BA00BAA03F843A
-:108E30001CE00B38408E062E800BE303F880FEE426
-:108E4000B7900FEC02E8008A00A3A009E4032A020D
-:108E5000DEC0F3800C6C033A0460000000000000E8
-:108E60004801E000F8403E000F8413E000F8002EB7
-:108E7000300A8403E004F8003A020F8013E000F89F
-:108E8000003E040D8083E040E8203E002F8003D2A6
-:108E900010300000000000000810A400F9003C643D
-:108EA0004E90832480C90032E00F10032500F900A2
-:108EB00032440F92236400C10032400C9013E4004E
-:108EC000C90022400C9003020430000000000000A2
-:108ED00080046400B9202E404896222500D9C0A203
-:108EE000700B98022400B940A2704B90022400D964
-:108EF00000A2402C9422E4028900A240289413206E
-:108F0000001000000000000018012400B9002E40ED
-:108F10000A900204008180A2440B910225001940AE
-:108F200062400BB402440089002040089082C401D2
-:108F300083022840489082060040000000000000A4
-:108F400000040580B1006C5108141A05009300203C
-:108F5000408B14020500B12020500B1406048091B0
-:108F6000202040091002C4A88100284A08904A42E3
-:108F70000100000000000000B80D6000F8003E0095
-:108F80000E80032801C85032948BA0032000B050FB
-:108F900032800F80076151C85022000C0003E0842A
-:108FA000C8043A080C00032E035000000000000023
-:108FB000989DF440BD413F500FF403F510FD003E75
-:108FC000400FD403F400FF102F404FD440A448F9C1
-:108FD000123F5A8ED283F4A8F52C374A0FD283A6BB
-:108FE00012700000000000001805E680FD283F4CCC
-:108FF0000F50033C44CD403FD00DD0021401FDA0E2
-:10900000314003D003E789F9907E500C9403E6C009
-:10901000C910326D0F9102C6007000000000000000
-:109020003810E080B8012E0C8B8482204288A06E1C
-:1090300020088003600098E82200098002E3C0E86D
-:10904000D02E28088A23E284D8A0223D0BC802CE65
-:1090500000300000000000004805C5B0B1002C48F9
-:109060000B13020402B1202E40881022C400B11458
-:1090700024400B1052C400B1212D480A5202D500E1
-:10908000BD00AD400B5202D2017000000000000094
-:109090001855A500B9822E498BB012241099022EC2
-:1090A0004008B200650099802644099102E409A9AC
-:1090B000042E460AD402B400BD402F400BD002C695
-:1090C0000460000000000000A015E740F9802E6257
-:1090D0000F9C42240099012E682C92026400B94032
-:1090E000B6600F9A03E400B9002E703E9906E402C0
-:1090F000F9003E400F9803E80470000000000000F3
-:109100006801A600F9003E401F12ABE400E9903E62
-:10911000490E9803E400F1003A400D9803E400F989
-:10912000013E60059013E400592032408F9103DA2C
-:1091300000600000000000006810A000C8083E01A8
-:109140000F84630022E8203E130F8403E1C0D84C53
-:1091500032000C8443E000F80022100F840300006A
-:10916000C800B2000CC0030A042000000000000088
-:10917000280528008E002F864BE00239088E202D0E
-:10918000900BED92F8028EE0A39808E002E808BA8E
-:1091900000628008A00228000280028048E0034AA2
-:1091A000004000000000000068054C0083102CF017
-:1091B0000A142A0D1AB30124D00BBC32CC080300C8
-:1091C00020C80B3002CC00B30222C00930020C11BF
-:1091D000830020C02820020A005000000000000088
-:1091E00020011E0185002D000B7002183286002D13
-:1091F000C00B6016FE04860027A08B7042DC80B78F
-:1092000080210108F80A1800860820A008E80A68EA
-:10921000004000000000000028083E02C6803DE03B
-:109220000F48030604F58235E00F7803DA00D38097
-:109230003160077803DE20F3B081E04F68070E024B
-:10924000CF8031E00C78132A0000000000000000FD
-:10925000081DADA0F9003F000FB053F810A9003E63
-:10926000000F8001EC00FB023AC00CB003EC00FBE5
-:10927000743C000F2003E800FA003E800F3003C268
-:1092800006600000000000004005FE028F8035E00F
-:109290008DD9032EC4F68032A40CB803DE00CF9023
-:1092A0003CE40CB803FE65FF800FEC8FF803FE0072
-:1092B000C58033E00F68031000700000000000005C
-:1092C000AA119C8084B0202029730A0E82A2A0A239
-:1092D000A04F3B038784B2802CA00A7D02DE80F77A
-:1092E000202506087002C840840035800B60036AA0
-:1092F000006000000000000000009C10863827C0BD
-:1093000049540654401D2021CA096140F880B72005
-:109310002F00897012DC81B7042DC90A6002CC00CD
-:109320008D002DC00BF8020400200000000000009A
-:109330006014CD288000240009B0224C02A1012035
-:10934000301B2302AF20B3082C801B3000CC04A3B9
-:1093500001263008AC22E80280082E804BB4025867
-:109360000430000000000000A815BC108B8036F00F
-:109370002DBC0B6C01DA0422407D9422E400AB4446
-:109380002EC009B802FC00BF003EF0CA9202E402FF
-:10939000CB006E400F84012E04600000000000002E
-:1093A0008000EC00FB003AE02EBC039808EA40364F
-:1093B000438C9003A4442A403E100EB583EC14FB6A
-:1093C0000026000E9203E040FA0016000F8013E022
-:1093D00000300000000000000110EC02FA803FE2C3
-:1093E0000FB00B2400EF92BBE01CD0037400CF053C
-:1093F0003B400FC8035C00CF0032C24DC123344054
-:10940000CF0017440CD1830004300000000000009E
-:1094100081046C008B842E540BBC0A29808B803213
-:1094200000089C03A700AB842E7C0B80022C10DB71
-:1094300001360008800220008200220008900224E9
-:10944000001000000000000080050C0089106690EC
-:109450000BB8026E12A34120040A9822E200891977
-:109460002EC04B31226C08830022C00990022400D8
-:1094700089002A400880022000400000000000000F
-:1094800008100C0080202C0E1B300204418020208C
-:10949000121816420050A0402C881B30020C8193F9
-:1094A00000240008102A000A8800280028000A0268
-:1094B0000100000000000000000C7C11E80026986C
-:1094C0000FB013210CEB603AD82884A2E180C820A9
-:1094D0003E5E1F82037C00CF0032C04D8007250016
-:1094E000C90032400C900300015000000000000051
-:1094F000A111FC00F8131E000BF001F0D0F9191FA8
-:10950000084FC013A100F8623FC00BC407ED00FF75
-:10951000003F000FC023F0A0FC0033000FD003E891
-:109520000670000000000000C005FC00FF0C3F209A
-:109530000CC9033200CF383FD00F4803FCA0CE2225
-:1095400033000FC1033C00FF003DC44CC0238CE43A
-:10955000FF10372008F103F0007000000000000049
-:109560008010FE00BF802E74052202A210DF612F42
-:10957000D08B90023DA4AA9022F40B07121D20BBB1
-:10958000C02FD8889782FD80EF72220828F623E04A
-:1095900004300000000000008805CC40B3002C001F
-:1095A0000882022200830108CC8B2082CC0090002C
-:1095B00020004B12020D80B3402CD80820428C8032
-:1095C000B3202602183326E20170000000000000DC
-:1095D000C015AC09BB002E60088002A2009B002EC3
-:1095E000C00BAC022C00BA0622C20B9402AC10BB1A
-:1095F000002EC108A802EC00AB00220008B006F063
-:1096000004600000000000009015EC00FB043E60C8
-:109610002882130E08CB003AC00F8C03EC11DB201C
-:10962000B2904BA80B2C00BB002CC00C8813AC00D4
-:10963000F300360648B012C40470000000000000B9
-:10964000E001BC00FB083D408FEA01F400FF012F60
-:10965000C00FD022FC04AF003FC08FE9037C00FFA5
-:10966000003FC00F9043FC20EF023F008FF003B893
-:1096700000600000000000005010AC08EB00124039
-:109680000F90032820AB003AC08F8583AC10F350B5
-:1096900032904C34136C00FB003EC00C98032C40FD
-:1096A000EB8032120DB00B500420000000000000CF
-:1096B00088013C100F05A2500C100222108F0023CD
-:1096C000C00B88123C009B8222C008B0023C008F75
-:1096D000A02FC008B0023C088F02200008F003262B
-:1096E0000040000000000000E0054D20930020B283
-:1096F0000B10020100A30068C00B8402AC00B38011
-:1097000020400A30024C00A3042CC00800020D00C7
-:10971000A3002024083002380050000000000000A0
-:1097200070011C20978023600878123A00839129E9
-:10973000E40B59021E00979020FC0A78021E008755
-:10974000902DE01959021E80838061A008780218CC
-:10975000004000000000000048080C40D3323006F2
-:109760000F30030464E30138C41F30078C18F10084
-:10977000304C0E30034C00E3002CC00C20030E00D4
-:10978000E30032080CB103120200000000000000E8
-:10979000401D9C80EF103D444FF107CC00FF083680
-:1097A000C6CFB003FC009700BECC0DB103FD04FF93
-:1097B0000C3FD29EE04BFD20FF023F800EF013D005
-:1097C0000660000000000000A815ECC0CB283EC0D9
-:1097D0000F8003EC00FB0132E90C28032C00FB0096
-:1097E00032C00CB4832C01EF00B2C80C20036D0012
-:1097F000CB103E000FB203EA007000000000000032
-:10980000C8919CC487602DC00B6002DC00B7122099
-:10981000CC0A70021CC0B300A0C0C870221C80B764
-:109820002421C84850020C8087102D400B7282F210
-:10983000046000000000000081008E0287802DE09F
-:109840000B7812DE00B7A021E008F88E1E40B78822
-:1098500021E00838021E40B3A120E848F8825E02E9
-:1098600087802D220B7902E000200000000000001C
-:109870000804CC0483022CD40B3002CC00B300A02B
-:10988000C08A38060C00B38020E14839122C00B39E
-:109890000022C008B0826C0083002C480B3002C24A
-:1098A0000430000000000000E805A800CA003FA046
-:1098B0000FE403D800FA0032800CE8032800FA40D5
-:1098C00032A82CA0092808F20032800CE4036800BA
-:1098D000CA003F800FA003FB0460000000000000EE
-:1098E0004800C000F8013E120B8003E040F8003E43
-:1098F000004F8403E004F0083E004F0003E000F84E
-:10990000413E002F8403A000F8003E000F8003D2E8
-:1099100000300000000000000800E600C9123E50C0
-:109920008F9083E420C1003A410F9003E400F900D6
-:1099300030680C90032400D9003A400E98032400AC
-:10994000C9903E690C1003020430000000000000C2
-:109950008004674A89802E500B9002E480A900227F
-:10996000400B9002E400B9012240089002241089C3
-:10997000002240089302242289422C604890022051
-:1099800000100000000000001815240099002E406F
-:109990000B9002E40089002A400B9002E400B90019
-:1099A000234008D002240099002A400A900624404F
-:1099B00089412E400890020600400000000000008F
-:1099C00008040C8091202C480B1002C400A1202018
-:1099D000480B1002C480B120A14908524A0480817A
-:1099E00000204848120A048081202C4028120202DC
-:1099F0000100000000000000B80D6008D8043E809F
-:109A00000F8503E000C0503A140FA503E140F802AF
-:109A100032802CC5032140DA003A140E85432140E0
-:109A2000C8523E140C850B2E0350000000000000AD
-:109A3000881DE444E9103F444FD002FC00F9123E77
-:109A4000440FD003E440FD103E444F9103E440E94D
-:109A5000403E440FD103E440F9123F400F9103E62A
-:109A600006700000000000000805F6A0FD80B3406D
-:109A70000C10031400FDA032400FD103E400F58662
-:109A800033602C9A832404FDA822400D5043F40037
-:109A9000FD0033400F90030600700000000000003E
-:109AA0007810E100B80022002880022000B800A24F
-:109AB000000B8A12E000B80422140884022000B8C7
-:109AC000402000888002E000B800A2000B80020E57
-:109AD00004300000000000004805C400B1422040EE
-:109AE0000810020400B14020400B1006C400B14031
-:109AF00024400810024404B1006040091002C40070
-:109B0000B10020400B1002120170000000000000A4
-:109B10001815A400B90222600894022400B9012299
-:109B2000400B9006E400B92026400894026408B96E
-:109B3000002240089202EC08B90422410B100206F0
-:109B40000460000000000000A015E410F100326085
-:109B50000C940B2500F90032408F94D3E400F900F7
-:109B600036404C900B6400F10032400D9212E4003C
-:109B7000F90032400F900B28047000000000000034
-:109B80006841A400F9003C408F9203E400F9003ED4
-:109B9000400F9C03E400F900BA402F9023A400F981
-:109BA00008BE40CF9003E410F1013E410F9003DA6C
-:109BB00000600000000000002810A0C8F8003E036C
-:109BC0000C8403A110E80032008C8583E000C00003
-:109BD000380C2C00036000C8003C000D80022010EF
-:109BE000C820B2020F8003CA042000000000000059
-:109BF00028053910BE046FA008A0023A008200A216
-:109C0000808DEC03A8008A00238008A02228008E03
-:109C1000CC2F8008E8C2B8008E6023900BA002CA47
-:109C2000004000000000000028054E08B0722CD053
-:109C300028B0068C01A10220C0083802CC008300A5
-:109C400020C02930024C0081002CC00832020C4098
-:109C5000830020F40B3002CA005000000000000016
-:109C6000A0011C00B4002DD048F2021E2185202046
-:109C7000E80972028E808F0120C00972020E80876F
-:109C8000002DCC1858028E00850021C00B7202E80E
-:109C90000040000000000000A8081E00B4802DE075
-:109CA0000C78839A00EDD031F40C6A03DE82C78011
-:109CB00039E00DF8835EC2C5803DE80C68031200F0
-:109CC000CF8031E00F7E83EA020000000000000038
-:109CD000080DAC08F8003CC00FB303EC00F9023EDD
-:109CE000C80FB003ED40FB00BE800EB303EDC0FB18
-:109CF000003ED22E8003EC02F9003EC00FB003C23A
-:109D00000660000000000000C005FE00F09133E096
-:109D10008FF803FE00FD803FE00C78833F00CF808A
-:109D20003FA00CF8033E00CD803FE00FF813FE107B
-:109D3000FF803F200FF943D00070000000000000BA
-:109D4000A8119C00B4C131C00B7002D410E5202FC3
-:109D5000C80F40035C0087002D800870021C4087FC
-:109D6000102DC00B7602DC80B7002DC00B7002EA0C
-:109D7000046000000000000010009C00B62221D00A
-:109D80000B7082D840B5022DC08865020C00871880
-:109D90002C040830028C0285002DC00B70469010F8
-:109DA000B6002D000B7022C400200000000000004F
-:109DB0006014CC08B200A4C00B3042C610A1002C25
-:109DC000C00A00024C0083002C080830028C00837B
-:109DD000002CC00B1882C400B0002C400B3012D8ED
-:109DE0000430000000000000F815AC0038003250CC
-:109DF0000FF003E620FD003FC008D0023C02CB80FC
-:109E00003C502CF00ABC00C9003FC00FBE03AC00A0
-:109E1000FA022EF74FF003EE04600000000000008D
-:109E20008000EC00F1003AF00FB003E900F9013EC8
-:109E3000C00F9013EC00F9003E550FB0016C00FB11
-:109E4000023EC00F9073E000F8413E000F3001E089
-:109E500000300000000000000010FC00FC0033C0D7
-:109E60001FF013F008FD023FC08DC0033C00CFA0DF
-:109E70003F800C70033C10FC0037C00FE003B000C3
-:109E8000FE003FC00CF0030404300000000000009E
-:109E900084046E00B9C2A2F00BB042EB00B9002EF0
-:109EA000C00F18036C00D9812EB00AB0422C00BA42
-:109EB000C62EC00B8C02E300B8C03CA00DB002203F
-:109EC000001000000000000080052F00B88022E292
-:109ED0000BB002E620B9002CC008B8020C008B00C1
-:109EE0002E3048B0022C00B9C02EC10B8802EE10F3
-:109EF000B9C02E2019B00220004000000000000070
-:109F000008040C00B00020C00B3006C00091002CEB
-:109F1000C04980024C0491002C008A300A0C04B124
-:109F2000002CC01B00124910B1002E200930020283
-:109F30000100000000000000000D6C00B82022C0ED
-:109F40008BF003E008FD003FC00CA0033C00CB00F9
-:109F50003E004CF00A3C00B90037C10FA003E000FE
-:109F6000FA003E000DF00B0003500000000000005E
-:109F7000A01DF001FC403F804FF002F000FD003FCB
-:109F8000C10FC003FC00FD003F004FF063FC00FD6B
-:109F9000043FC00FC003F080FC007B000FF043E8DB
-:109FA0000670000000000000C005F800C81033046F
-:109FB0000C40023400C8851FC02DD903FCC0DB282B
-:109FC00037640FDB033E00FF253FC80EF203FE207F
-:109FD000FFA437C40CC80330047000000000000068
-:109FE0008010E80088202200088812260489822E2A
-:109FF000F448B802FCC498C2227C4B9D422608BF9C
-:10A000001877E408F182EF00BBD022D80890836073
-:10A0100002300000000000008845C804A0002400B1
-:10A020000A00020C0082042CE0081002CC8083009D
-:10A0300024000B1006C801B3202CC0293202C80826
-:10A04000B10024D00882026201700000000000000C
-:10A05000C015A800A80C26000A80022C148A026EE3
-:10A06000E008B0024C08A80026200B9C02E400BBCC
-:10A070000422C019B002E801BB1102C0889002F0AE
-:10A0800000600000000000000015EC02EA40B6602D
-:10A090002E980B2002C8023EC00D9803EC02DB880C
-:10A0A000B6210F8803AC08FB002CC00EB043E5803E
-:10A0B000F06036C00C01434804700000000000004E
-:10A0C000E001BC00D6013B6485D903F00CFF003EE3
-:10A0D000C10FFC21EC00D7903B400F50033C00FF28
-:10A0E000003FC08EF003F440FD883FC02FD00278BF
-:10A0F000006000000000000040108C00DA403C408E
-:10A100000F10034800F9223CC20E9083EC02DB04DE
-:10A110003A080F8487E800CB003EC40EB003ED0080
-:10A12000E8423AC00F800B1004200000000000003D
-:10A1300088052C088A002E428B90022818BB4922E1
-:10A14000D038BC82FC00E8022262CB9C00EF60DFCA
-:10A15000002FC00BF002EC00094037C00B90023218
-:10A160000040000000000000E005481011002CA095
-:10A170000B2002440090C06434283402CC00938445
-:10A1800028400B0800CE0093002CC20A3002C00009
-:10A19000B24022C00B20023000000000000000008E
-:10A1A00070011A4085802DA00B68061680BD902591
-:10A1B00024187B42DE40A08021E00B6802D6009785
-:10A1C000902DE00B7802CE4092806DE40B7802086F
-:10A1D000000000000000000048082800D1803C88F2
-:10A1E0000B22034E80F2A13C242A3903CC40D3AC8D
-:10A1F00038C50F3082C800D3003CC00E3013C000F9
-:10A20000F10038C00FA0031A060000000000000093
-:10A21000401DB810FD343E800FE003EE0072003A9E
-:10A22000000FB063EC40F8223EC00FF003D440FFB3
-:10A23000003FD20FF003EC00CF0037C00FF003D087
-:10A240000620000000000000A805EE00EB0036E04C
-:10A250000DB0032000F08033C008B8032C80CB0081
-:10A2600032800FA0136E08CB2832E00DB483E200D9
-:10A27000CA003EE00CA803020070000000000000CD
-:10A28000C8118C04830021C04870021000B702215D
-:10A29000C04A70020D48D40035C00E6002DC00A731
-:10A2A0004029C0097202D410A6022FC808700212F9
-:10A2B000006000000000000080009E00A78020E0F9
-:10A2C0000A38021A00B58021E008F8225C818380F8
-:10A2D00021A10B78825A1083A020E80A7B02DA00C1
-:10A2E00097C02DE408E802080020000000000000EC
-:10A2F0000814CC00831020C00A30020808B3702074
-:10A30000F80A30424C04931426C40A3802CC00A345
-:10A310000028C0AA3002CE40B3882CC028300A12D0
-:10A320000430000000000000E815A900EA80B690A3
-:10A330002F240B3904BEC033920CA00B6818CEC07A
-:10A3400033800FE9437800CA0032800FA013F84829
-:10A35000DE003E800CE0023A002000000000000019
-:10A360004800E024F8003E120D8093B028F800BCAD
-:10A37000000F8403A000F0003E020E8000E000F811
-:10A38000013E000D8003E000E8003E000F8003D294
-:10A3900004200000000000000810E400F900B27082
-:10A3A0000F90010400C9003E400C9803E404E90842
-:10A3B0003A480C9A03E400F90036400B100B268053
-:10A3C000F18032400F9003C2042000000000000022
-:10A3D00080046400B90022610B9002240889002ED9
-:10A3E000400D9A02E408A90022780D9406E410B901
-:10A3F0000022500B90022580B98036400B9002E07D
-:10A40000000000000000000018052400B5002342F1
-:10A410000BD00EB40089042E60089102C404B90464
-:10A420002AC0089402E410B10026420A90022400D7
-:10A43000B92162400B9002C60040000000000000FD
-:10A4400008040500B54021504B5006940281002CB1
-:10A4500060291406C500A1222051891402C400B14C
-:10A460002020480B14020401B10004500B1002C25A
-:10A470000100000000000000B80D6008B8003200C4
-:10A480008F8003B00088003E000C8003E000E804E9
-:10A490003A000C8002E000F85036000F80032004E0
-:10A4A000F80112004F8007EE075000000000000086
-:10A4B000981DE510F9403E500F94026501FD013DE5
-:10A4C000504F5013E500FD101F5007D443D400F93E
-:10A4D000101E440F9403D500FD403E500F5283EEF2
-:10A4E00006700000000000001815E440F9603F44C9
-:10A4F0000FD0C3E430F9013E420CD003E780DDA069
-:10A5000033400CD003FC00C9903F681E9103340017
-:10A51000FD003E680C94030E007000000000000077
-:10A520003910E000B8422E090B8402E104BE002E6F
-:10A5300010088022C280884022000A8002E000A821
-:10A54000D02E104B8A036000BA002E30088A028693
-:10A5500000300000000000004005C580B1606CD0F4
-:10A560000B1000DC0CB5002C41081002C5809110C6
-:10A5700068C0083002E40C81222C5008104204000C
-:10A58000A1002C5A28900252102000000000000068
-:10A590001815A400B9002E410B9012F480BF002EB4
-:10A5A00040089002E400A96060420A9412E500A904
-:10A5B000002E400B90026420B9000E40099002C6A4
-:10A5C0000420000000000000A005E400F9003E4166
-:10A5D0000F9023E400F9003E400C9003E404D1C046
-:10A5E000BA700C9803C400C9003E400E9003254089
-:10A5F000E9403E400C10036800200000000000000D
-:10A600006801A414F9003E400F9023E408F9A03C2F
-:10A61000C22F9003C400D9803E700F9143E400F92B
-:10A62000003E401F9013E620F9A03C404E90039A54
-:10A6300004200000000000002800A000F8003E02F6
-:10A640000F8013200CFC013E000C8003E000C8507A
-:10A6500032000F800B2008F80032002C8043E040CD
-:10A66000F8023A008F80030A042000000000000076
-:10A67000A88528083A000F804BA1022800BA822E34
-:10A680008848E402E800AE90A3900BE0003800BADE
-:10A690000037A008A002F8009EE022800BA0234211
-:10A6A000000000000000000028054C1033002CD0F2
-:10A6B0000B14020C00B2912CD0083E024C008340D7
-:10A6C00024C20B36008C00B30020C009B002CE00BB
-:10A6D000B3CC68C00B300202005000000000000044
-:10A6E000E0011C88B7252DC08B581A1C08B6002D18
-:10A6F000C0087402DC40A50025C01B78029408B78E
-:10A700008025E30A7102DC00978321C88BF102489F
-:10A710000060000000000000A8081F00F7E27DE0D4
-:10A720000F58431E18F6807CE02C68025E90C380B0
-:10A7300035E00FF8039E04FFA120A10D7803D60099
-:10A74000F78039F80F78030A0600000000000000C7
-:10A75000481DAC00FB407F410F1003EC04FA003EA3
-:10A76000D00FA003ED00E9002A000FB0036400FB46
-:10A77000403EC00DB003E400D30036C00F3803C222
-:10A7800006600000000000004005FE48CFC03360B6
-:10A790008CC843D600CC943FB00DF8037F00DF8017
-:10A7A0003F600FD803DE00CFCA3D600CF8133A4477
-:10A7B000DD803FE00FF8431800200000000000009B
-:10A7C000A8119C008F1133C0484112C44884112C39
-:10A7D000EC2ABA033C40D7482D410B6002D400D785
-:10A7E000013DC00DF0035A0084182DC00B70036AA0
-:10A7F000002000000000000000408C08870021407D
-:10A80000094002D400A4922DC80962825C0087002E
-:10A810002DC00B5002FC0087002D040870021C8024
-:10A82000B5002DC00BF00200002000000000000069
-:10A830006010CC0083002040090022C700A0412CFA
-:10A84000C14B08022C0093402C7C0B3802C720938C
-:10A85000002CC00930024F84B0802CC00B32105045
-:10A860000420000000000000AA15BC02CF00B24086
-:10A870000D1003E824EBC13EC02D98137C0AC2439F
-:10A880003EB00FA903E920CF003EC08CF0030D209D
-:10A89000FAC03FC00F74012A0060000000000000F1
-:10A8A0008000EC00FB023A408E9003E8145B503CC1
-:10A8B000504E8403EC00F8403E80078103EC08F31F
-:10A8C000003AC09F3003EC00CB203EC00FB023E81D
-:10A8D00004300000000000000190FC00FF003F4039
-:10A8E0000FD0033820CF0832C10ED003FC00FE0881
-:10A8F00031E50EE4033A00FF0033800FF02B240013
-:10A90000CCA03FC00FF00300443000000000000066
-:10A9100080046C00BB003A690B906E0800834136DE
-:10A9200040C888C6EC00884036800DA8036E50BB36
-:10A930000036C00BB0022400D9082EC00BB003E0D3
-:10A94000401000000000000080052C00BB002E60BD
-:10A95000038002200089012258089822EC01AB00F4
-:10A9600022000A10022800BB0022400BB00228007F
-:10A970008A002EC00BB042200050000000000000F2
-:10A9800008040C00B30028408B0002024089012417
-:10A99000D2281002CC00831024200808024E00B3F5
-:10A9A00004A0C00B3002088892002CC00BB002C279
-:10A9B0000000000000000000000D6C00FF003E00E1
-:10A9C0000F80022010895022D82E9622FC00EB40E6
-:10A9D00032C00A90032800FF0022000FB0032CA011
-:10A9E000C8003EC00FB003000610000000000000C9
-:10A9F000A019FC00FF0C3B000FC0027090FD003E50
-:10AA0000C90F96C3FC00FF003FC00FF003FC04FF1A
-:10AA1000043FC00FF003EC00FC003FC00F7003E8E0
-:10AA20000670000000000000C005DC80FB283F002D
-:10AA30000CC10BF102ED0037302CF103B240FF00E6
-:10AA4000BBC00F4806B200FC803BCC0CF00370800A
-:10AA5000DF2833040FF40330007000000000000012
-:10AA60008010FF40BF602E210882022000A9282A02
-:10AA70000009FA022000BF5123D8099802E430B03F
-:10AA80000023D008F5A225A48F423C100BB00A2069
-:10AA900004300000000000008805CC00B3082C0042
-:10AAA00028001AC084200024C84B3142C000930201
-:10AAB00020C6080006C081B3002CD8093202A0408D
-:10AAC0009301244C0B3202220170000000000000B0
-:10AAD000C011AC00BB022E0A0880826000A8002EC4
-:10AAE000E01BB00262013B0022C1099002E200BB00
-:10AAF0006026C108B02A26009B042E210BB002302C
-:10AB000004600000000000004011EC10FB003E104B
-:10AB1000088413EC02A90436200FB003EE80FB007A
-:10AB20003AC00CA003A28079401EC08CB0636A10AA
-:10AB3000D30036A207B0030004700000000000003C
-:10AB4000E001BC00FF003E204D41039C00FD20AB16
-:10AB5000000CF003B800F7003FC04DC903F400FF3C
-:10AB6000003BC02EF000F000EF003F004B7003F8F8
-:10AB700000600000000000004010AC80EB007E1080
-:10AB80002E8403EC00E00032500FB0862500DB205D
-:10AB90003AC00DB063E110FB4838C10F30032C04FC
-:10ABA000FB0832C00CB00B90042000000000000035
-:10ABB000C8053C008F006429288003EC02E804A843
-:10ABC0005608FC07E0000FA0BFC00B9502A000BB19
-:10ABD0000537C089F00A0DC8BF082A8008F0023284
-:10ABE0000040000000000000E0054C01B30224E03A
-:10ABF0000A30128003A300A80002B822C000B300EC
-:10AC000028C10B04020800B94028C00B300203041D
-:10AC1000B34420004A300238005000000000000019
-:10AC200020011E2017A065EC083802C241B3922B08
-:10AC3000640A38023601B7902DE003F8009A00B597
-:10AC4000802DE08978121E00B78029E00A7802087A
-:10AC5000004000000000000048080C0073B024C849
-:10AC60004E300A8002E20038940E31A2C800730010
-:10AC700018C40500030000F30038C007B10300004A
-:10AC8000F30130410EB0039202000000000000000A
-:10AC9000401DBD00EF1026C803B103E000EA817833
-:10ACA000C50CB5E3DC00C3003EC10FF083B000FF6C
-:10ACB0000037C00DF403E400F7003F400DF003D06F
-:10ACC0000660000000000000A805ED10CB283EC083
-:10ACD0000DB013AC10FB003A8004B403AC00FB04CD
-:10ACE0003EC00FA4B3E000FB8032C00FB003E80009
-:10ACF000FB48B2800FB043EA007000000000000083
-:10AD000048119C02874438C08D30024C00FF00215E
-:10AD1000C00870039C00B35021D44E6202D000BF23
-:10AD20000035D4097022D800BF2221C00B7202D294
-:10AD30000460000000000000C0009E4087802DE0FD
-:10AD4000097802DE00B68029A1287A32DE0037A019
-:10AD500025E0097806D200B78021E80B7902DE00F1
-:10AD6000B79021E00B7902F0002000000000000005
-:10AD70004814CC04830128C089B00A4F00B20020D7
-:10AD8000C4883016CF00BB0420C10A3206C200B30B
-:10AD90000024C0093042EF10B30020C00B3002D2B3
-:10ADA0000430000000000000E815A8004A003E80C2
-:10ADB0002DA00BAA80FE002B800CA043FB30FA00D4
-:10ADC0003E800FA083FA04FE1822800FA003FA84AD
-:10ADD000F20033A20FA003F20460000000000000A4
-:10ADE0004800E000F0003E002F8003A020FC023E5F
-:10ADF000001F8403A000F8403E004F8001E040F8AF
-:10AE0000403E000D8013E000F8003E000F8003D2AA
-:10AE100000300000000000000810C600D9003640D5
-:10AE20000F900B0400C90036686C9403E420B990BD
-:10AE300036400C9403E40029803E400F9003242008
-:10AE4000C90036400F9003C204300000000000002B
-:10AE500080046650890020500890022409D90020FF
-:10AE600048489006E40499A022400DB822640009E5
-:10AE70005032400B9002279089402A400B9002E00C
-:10AE80000010000000000000180124009900664234
-:10AE90000AD0123400850026404A9002E401B9012C
-:10AEA0002440589012C40029402E400B100A2480E0
-:10AEB000890526410B9002C60040000000000000FA
-:10AEC00008040480812061480852021481952020E2
-:10AED000400A3602C400B12000484110424401A19A
-:10AEE0000024480B12120480812028480B1202CA49
-:10AEF0000100000000000000B80D6000D8503600CE
-:10AF00000E852321428C5434140E8002E140F85007
-:10AF10003614048003E144E8507E150F8503214276
-:10AF20004A0036140F8003EE0350000000000000BA
-:10AF3000981DC440F9101E444E9103E440F9103F9F
-:10AF4000C00D9103F400D9143E440F90037400DD4A
-:10AF5000007A440F9103F440F9383F440F9383E79C
-:10AF600006700000000000001801F680F9A43F6898
-:10AF70000E9E436780D9E43F410FD8430400EDC0E3
-:10AF800036400C9003E400D54032400C9003F400AE
-:10AF9000DD0032402C9A03C60130000000000000A2
-:10AFA0003810E000E8C02E144D8F2223C0F8F0AA1C
-:10AFB000000C8003A2A0D8822200088002E800D8FA
-:10AFC000802A00088002E80888A83600488A82CED5
-:10AFD00004300000000000000805C500B1482E4004
-:10AFE0000A122244009104A4410A940624009142CA
-:10AFF0002441091002E40191202440091002C401F7
-:10B0000091002C40091402C2013000000000000031
-:10B010001815A400A9002E404810022400B940AA27
-:10B020004018B002E40899002240199046E4809943
-:10B03000042E40099002E40199042650099002C6AA
-:10B040000460000000000000A011E400F9063C408C
-:10B050000A90036402D900B6500E90232601F9002D
-:10B060003640299483E400D94836400D9003C70048
-:10B07000D1073A50CD9003E8042000000000000002
-:10B080002801A408E9003E408F9003C408F1003A6B
-:10B09000688F9003A441F900BE400E9003E400F9CC
-:10B0A000C038402E9003E640E9003E68069003CA8F
-:10B0B00000200000000000002810A000D8053E007D
-:10B0C00007800B2000E8403E100D82036000C8009E
-:10B0D000B2008D8303E000D8503A001E8003E124C3
-:10B0E000F800B2000F8003020420000000000000FE
-:10B0F000280538008A042F846AA00BE8088E003DDA
-:10B100008088EC036810A601368008A800C8108E5D
-:10B1100010228008A002FB20BE512A800BA00282D0
-:10B1200000000000000000002805412193002CF0E1
-:10B130003930060C00A300280828BC022C008380AC
-:10B140002AC0083000CC009A8028C00A3002CD0006
-:10B15000B30462C10B30020A00500000000000007E
-:10B16000A0011E0407112CD00A3222DCC187006D19
-:10B17000D00834027C00A70824C8087002DC800FC5
-:10B180000021C4087306DC00B20061C80B3A0288D3
-:10B190000440000000000000A8080A0057812DA00C
-:10B1A0002D7C023E82E3E03BE00C78031E20C7804A
-:10B1B000B9E82C7803FF80D6803BEC027A03DE00EE
-:10B1C000F78131EC8F7C030A0200000000000000D0
-:10B1D000081DAC00FB001E8023B683EDA0DB643E9F
-:10B1E000C00EB003EDC0F2003ED40AB003EC30EE66
-:10B1F000643EC007B0C3E800FB013EC80FB803C2FD
-:10B2000004600000000000000005F600EF803BE055
-:10B210000FF8637E04CFC0B7200EF803FC00C78090
-:10B2200033F00CCC03FE08F7C133E04FF803B24013
-:10B23000FFA031E60CF803100470000000000000CD
-:10B24000A8119C00EF0221402D70021C00F710296C
-:10B2500040087022FCC0A7003DC0084002DC00B7D7
-:10B260004021C00B7002DA80B72429C648F0022AB8
-:10B27000066000000000000000009C00A700288479
-:10B280000B30020C00930025800A6102DC01A7103C
-:10B2900024C0084082DC009F0025C40B7002942566
-:10B2A000B73223C41B700200002000000000000021
-:10B2B0002014CC0CA300200029300A0C00A3006C41
-:10B2C00000081042CD10AA00ACC0000402CD00BBA3
-:10B2D0001024C0033042C309B3002CD00A30021836
-:10B2E0000030000000000000A8158000EF003A4088
-:10B2F00007F0433C009FC0B6140E8006FC01CB0152
-:10B3000037C0ACB402FC00D90137C04BF013AE0813
-:10B31000FB0033D02EF00B2A00600000000000007C
-:10B320008000EC00FB053E400F3003AC14FBA03A5C
-:10B33000C00F8443EC01F9403EC00FA203EC21F999
-:10B34000003AC00FB003E420F000BAC00DB003E033
-:10B3500000300000000000000110F800D70135683F
-:10B360006DF0033C01E70033C00DC003FC24CF02A5
-:10B3700037C00DD202FC00DF0133C05E70331C18F1
-:10B38000CF4131C20CF0034040300000000000000B
-:10B3900081006C008B0022522AB0036C00AB0028A5
-:10B3A000C00A8C02EC108BE022C00F8002CC008B14
-:10B3B0008022C008B0022A10D98022C0C8B002E0A2
-:10B3C0004010000000000000800524019B00268042
-:10B3D00029B0620C00AB016A00089802CC009B8384
-:10B3E0002EC0CBB412EC038B8028C00AB006A2009A
-:10B3F0008B0262C008B002E00050000000000000B4
-:10B4000008040C01831420000A30024C0083002A37
-:10B41000400A1000CC02930028C00A2002EC00036E
-:10B420000020C00830160080910060C0083002C2C1
-:10B430000100000000000000000D6C00DB00368001
-:10B440002DF0033C00AF003A800D8003FC005B0050
-:10B4500037C0099003FC00DF0033C00AF003A420CA
-:10B46000CB00B3C08CB0034002100000000000000D
-:10B47000A01DFC04FF200F0027F003FC00FF002D9F
-:10B48000000BD027FC00EF0037C00FC043FC00FFCB
-:10B49000003FC00DF00BE000F5003FC01FF003E8D7
-:10B4A0000730000000000000C001F4C0FC227FC093
-:10B4B0000CD0433600C48134C01C8907F280CF8091
-:10B4C00033600F79033CE0CF0833480DC403F050DC
-:10B4D000DC9037CC0FF803F0007000000000000093
-:10B4E0008010E990B8807EE488990A2608A9802215
-:10B4F000F42C9903A702898022340B9A037D00DF84
-:10B50000482B60080502E500822022C48BB002E0CF
-:10B5100006300000000000008805C500B0102CC0F7
-:10B520002A0002A408A804E0800B0002C441B2046F
-:10B53000A40A0BB0028C81832060509812128B8079
-:10B5400089002CC80B3002E20170000000000000EE
-:10B55000C011AC20BB022AC00A8802A408A980A29C
-:10B56000E11B9C22E600B84026300B9002CC0193F0
-:10B57000042A40399882EC148B652AC00BB202F879
-:10B5800000600000000000004015E700B8482E00F1
-:10B590000E88438400E3C136E80F9C12E280F3C0BA
-:10B5A00036705FA823AC01CB0422404D8403E20037
-:10B5B000D8003EC00F9003D00470000000000000CF
-:10B5C000E001B309FE103E810DC003740CFF003D85
-:10B5D000C18CD0831400CD203A400DCA017C00FFFD
-:10B5E000001F400EC023F246FE8437C00FD803F878
-:10B5F00000600000000000004010AC00DD023D4093
-:10B600000E9003AC00EB483ED00C8063A208CA0049
-:10B6100032080CB003AC08EB003E400CD483582039
-:10B62000F94232C00CB003D004200000000000003A
-:10B63000C8052802DB002EE0283A022E00DB6076E7
-:10B64000E00D8C02E000880236586815837C08BF44
-:10B65000002D60089002A900B30523C008B002F2D3
-:10B660000040000000000000E0054C1080000CC10C
-:10B67000081C82060093C020F60A200208009300EE
-:10B680002460093C020C0083002C60090112004078
-:10B69000B000E0C0083002700010000000000000A0
-:10B6A00020410A4086812DE058180A16A09780256F
-:10B6B000E9197882D600978025A019F8025E00B7B4
-:10B6C000802D602848129600B48021E0287802C8B6
-:10B6D000041000000000000048080C0081303CC24B
-:10B6E0000E00028400E34028E84C29030C00D3003C
-:10B6F00034C40D31038C08E3003C460C2003008069
-:10B70000F20032C00C3003D2021000000000000032
-:10B710004019B800FF102FC00FC023C4807F103E17
-:10B72000C00FB103DC00E7003F8006F143FC00FFDF
-:10B73000087D500EE123B408FE103FC40FF003D083
-:10B740000460000000000000A805E402CC003E00F8
-:10B750002CC0030401CB0033602C9013E80073006D
-:10B76000B2C10FA003EC80FB283E541FD003FE02A1
-:10B77000C98032C00FB003CA007000000000000092
-:10B780004811800086002D800820021408870029B7
-:10B7900040087002DC00B70021C00B60025CA0977B
-:10B7A000202D480B5002DC108D0021C80B7002D2F6
-:10B7B0000660000000000000C0009F0085812C6032
-:10B7C000185802DE20B78228605A7852DE10BF80F7
-:10B7D00021E04B7806DE40B7A02D699B7812CE00A1
-:10B7E0008780E1E40B7802C0002000000000000028
-:10B7F0004814EE0083002CC20836028C0883F068DF
-:10B80000400A3E02CD40B30020E00B32064C009BC4
-:10B81000000C400B3002CD80830820C00BB102DA4F
-:10B820000030000000000000E815B800CE083FB06E
-:10B830000CE423DA02DE40BBB20EE243FA00FE0063
-:10B8400033900BE003E800FA003E810BE013F908A7
-:10B85000CE4032800FA803FA047000000000000000
-:10B860004800E02498083C040F000B6000F8402ECC
-:10B87000030D8003E000F8003E060B8003E000D8D3
-:10B88000003C00038C23E100F8007E000F8003D20F
-:10B8900000600000000000000810E402C9003E4003
-:10B8A0008C90032500E98032440F9402E420F900D3
-:10B8B00032700F9A43E400F90032400C1033241028
-:10B8C000F9013E400F900302042000000000000038
-:10B8D0008004640089822E40289002248281C0A2C4
-:10B8E000700B9C02E4003142A2600B9482E400B928
-:10B8F000002A400894A22500B9002E400B900A208F
-:10B9000000100000000000001805240089642E408B
-:10B91000089042A400896022420B9002E600B980A0
-:10B9200022400B9002A404B9002240289002240473
-:10B93000B9002E400B90020E0040000000000000F5
-:10B940000804058081002CC1481002A40281002057
-:10B9500040833402C400BB0020D00B1402C480B169
-:10B9600020A06818141A0D00B1402C500B10020AC8
-:10B970000500000000000000B80D6000C8003E0097
-:10B980008C800BA004E8003200078003E000F80080
-:10B9900032001F8003A140F85032000C80032000C9
-:10B9A000F8003E000F80032E03500000000000004E
-:10B9B000981DF446FD403F5023D4137404F5023F14
-:10B9C000500FD403FD00BD002F500FD003E440F909
-:10B9D000103F440FD403F508FD063E500FD283E616
-:10B9E00004700000000000001805E640ED043E4829
-:10B9F0000CB283F400C10032408CD0033400FD004F
-:10BA000037400FD003E620F9883D620CD803FE24AE
-:10BA1000C1003E780FD00306007000000000000057
-:10BA20003810E10088402E1008C423A00888062A98
-:10BA3000140880036004B80022000B8002E200B802
-:10BA4000802E00088C02E38088022E380B88020EBC
-:10BA500006300000000000000805C580A1C02D7060
-:10BA6000085042C400A90020E02A100A0410B100C6
-:10BA700024404B1006C420B1086E400B1682C4202F
-:10BA800081002C500B928252002000000000000028
-:10BA90001811A400A9012E4028D020A404A9002A2E
-:10BAA000401AB0122400B90C22420B9402E400B9EF
-:10BAB000006E400B9602E41189206E400B90024606
-:10BAC0000020000000000000A015E4C0A9C03E5006
-:10BAD000089C83E402E900B2402A92122640F94011
-:10BAE00036700F9403E404F9013C400F9803E6021A
-:10BAF000C9223E400F1002680470000000000000E0
-:10BB000028018604D9401C400F9223A4B0DB043CDA
-:10BB1000C00D9A03E400F9003E440F9003E400F9DD
-:10BB2000003E422C9023E480F9003E408F92039225
-:10BB300000600000000000002810A100C8203200B2
-:10BB40004CC08B2002C83132202D8403E104F84818
-:10BB5000BA000F8903E000C80032000D81132010E5
-:10BB6000F8003A000F8123020420000000000000CA
-:10BB7000280528000E40228028A40219005280A225
-:10BB8000804DED82E800B64223BD0BE802E804DAFE
-:10BB900000378008E0023A20BA0022800BA80A0A87
-:10BBA000004000000000000028054C00838060C0B9
-:10BBB0000829020D00924024C008B402CC00B30052
-:10BBC00068E01B3002CC00930124C06938026C008D
-:10BBD000B3002CC00B30020A00500000000000002F
-:10BBE000A0011C4083C020400828069C189C022409
-:10BBF000C0097002D400B70021C00B7002CE40977C
-:10BC0000B0254008781A5800BFA265C80B780220FA
-:10BC10000440000000000000A8080E028780B1A0C8
-:10BC20000C68031A08D69235E4287842D610F580BD
-:10BC300039A00F7823DE30D3A235A04DE8035E0093
-:10BC4000F7D03DF80FF003220200000000000000D2
-:10BC5000081DAC00FB043E000BA0034804FA413A67
-:10BC6000500FB003E400F1003EC00FB003ED88FBBD
-:10BC70004D3E000FF003BC08FB203AC00FB003C2DA
-:10BC800004600000000000000005FE00DC80B3E05E
-:10BC90000CD803CE00C8A031A08DE903BE00B2804D
-:10BCA00033E00CE8437E040F8131E40CD803F60046
-:10BCB000FF803FE00FF803000420000000000000B8
-:10BCC000A8119C00B4403540085082DE80D49021F9
-:10BCD000E00D5102D440B6B02B900EE5029C40D747
-:10BCE00022195C0D7002D800B7202DC00BF0036A3A
-:10BCF000042000000000000000009C009310218040
-:10BD0000085802DCC0940023D00870A0D420B502EB
-:10BD100029800960820C00870225C0194002D400E6
-:10BD2000B7006DC00B700200002000000000000092
-:10BD30002014EC00B3C02001481802CC028144A0BA
-:10BD4000C0893802C780B1002C094A0062AC09934F
-:10BD5000012840193002CD10B3902CC00B3002C81E
-:10BD60000420000000000000A815BC20DB6222E0D7
-:10BD70006CA003E400980032C0EC9823AE08FB08E6
-:10BD80003A780990037C10CF0026400CB003EC00F9
-:10BD9000FF803FC00F90032A0460000000000000F5
-:10BDA0008000EC20FB483C610FA043ED00F8243EEE
-:10BDB000500F9083E400FB003A500F8043EC08FBE7
-:10BDC000003E400F4003F000FB003EC10F900360B7
-:10BDD00000300000000000000110FC00DDA03280F7
-:10BDE0000CE001FC00DC9139C03C40033400FF80D2
-:10BDF0003F000FD007FC00CB003D400CE003382093
-:10BE0000CF023DC00CD00308443000000000000009
-:10BE100081046C000140220028A002CE86836422A7
-:10BE2000F4088C0F6400BB102E600B9C03AC01DB8C
-:10BE3000003E60088F0223408B003AC00D1043681B
-:10BE4000401000000000000080052C009900A2C0F6
-:10BE5000089002A607980002C24888022C00BA0285
-:10BE60006E600A9802EC008B012E600890020500BB
-:10BE70008B002EC008B1022000400000000000002E
-:10BE800008040C1081002040281026CC808020A0BF
-:10BE9000CC1814420400B2206C400B00028C0083CA
-:10BEA0000028402800020000830028C009B0024298
-:10BEB0000500000000000000000D6C00D900228089
-:10BEC0000C9003AC80DA292AD22880022400FB20BF
-:10BED0003E000F9002FC008F002E400C800B2002D1
-:10BEE000CF003EC00CB00300035000000000000073
-:10BEF000A01DFC00FD003F000FD063FC49F5003E93
-:10BF0000C00BC001F4007F403F401FD003BC00FFC6
-:10BF1000003F400FC003F000FF003BC00FF003E8FC
-:10BF20000470000000000000C001F240ECA03FE0FF
-:10BF30000D48037D80F480336C0EC8033200DD9021
-:10BF40003BA02DF003FCC0FF003BE08EF0033C045F
-:10BF5000EC6031000CF003B0007000000000000045
-:10BF60008010EC00D9C12EE10D88023C80F88036AB
-:10BF70007D18A00228B0EA202220087702FD50BBDD
-:10BF80008022400BF4423D808831221208F602E004
-:10BF900004300000000000008805CC0080112EC194
-:10BFA0000800024D80B80020000A0282000099209B
-:10BFB00022C0093082CC00B30028CA0B34820D2085
-:10BFC0008000A08C083482A20170000000000000F4
-:10BFD000C015AC4099802EC20994022C00A980267D
-:10BFE000600838422220BA4162463BB002EC01BBF5
-:10BFF0008022400BB0460C1888C0222208B006F000
-:10C0000004600000000000004015CC00C9813CC164
-:10C010000CA9236C00B28032780A8A0B26009901A1
-:10C0200030E00DB003EC00B9003AC01EB0032C00A4
-:10C03000CB8032610CB0139004700000000000004F
-:10C04000E001BC10DD003FC20FE803AC00FE003D84
-:10C05000400FC043F810EF14B7E00CF003FC00F5FC
-:10C06000023F444FB04BFC02D4043D402FF003F894
-:10C0700000600000000000004010AC00F9083E60C5
-:10C080000DA003AC00E85032000C8403A500E900C9
-:10C090003AD80FB0032C00F9003AC00F30032C003F
-:10C0A000CB443ED40EB003D00420000000000000BA
-:10C0B000C8052C08B9802EC00A30423C008904769D
-:10C0C000600890622000820422D008F0437C00BB0C
-:10C0D0008222400BF0423C008AC02EC108F002F2DE
-:10C0E0000040000000000000E0054C10B2D02CC061
-:10C0F0002918028C04A100249C0810028000A101D0
-:10C100000CC12B30528C04B30128404B30024C0040
-:10C1100090202C200A3002F800500000000000009F
-:10C1200020411E00B7A225E88A68021E00858025EE
-:10C130008088E8023E0085802FE4287802DE00B780
-:10C140008061E00378025E82B7822DE0087802C841
-:10C15000004000000000000048080D00F0103C8086
-:10C160000D10838C00E25026040C11038840EB0074
-:10C170003CC40F30038C00F30838400730036E4096
-:10C18000D0083C880E3043D20200000000000000BE
-:10C19000401DBC00FB343CC94EB023ED20FB043FE6
-:10C1A000C88F70534C00EB1031C50EF4036D00F3D3
-:10C1B000003FC00FF40BBC00CD003FC00FF483D094
-:10C1C0000660000000000000A805CE04C904B0C14C
-:10C1D0000F98136C90CB023EC04FB063E400F18027
-:10C1E00012C00CB503ECC0CF8332400FB3232DA493
-:10C1F000FB003E000FB4032A0070000000000000A6
-:10C2000048119C00870021C02D60021C00D7003916
-:10C21000C00B6002DC00B50021C02A7012CC808700
-:10C220000035C00B72521C00B7002D410B320212B8
-:10C230000460000000000000C000BE0081C0232098
-:10C240000BD8025E0006C02DA00B7C12DE08BF805A
-:10C25000A1E22A7A02DE00938025600B781E5E50F0
-:10C26000B7802DA00B7802300020000000000000F5
-:10C270004814CE00836020C00931022C00930028AE
-:10C28000C01BB006CC80B34820F00A3002EC00930B
-:10C290008024C00BB0024C10B3C82CD28B300212D9
-:10C2A0000430000000000000E815BB00C6C4318166
-:10C2B0000FE0036800CE803FA20BE803F900FE40C8
-:10C2C00031806EA007E800DA0026810FA002680125
-:10C2D000F6E03D920FA0033A046000000000000069
-:10C2E0004800E0C2F8043E140F8013E010F8013E4D
-:10C2F000100F8043E000B8003E00478003E002E8F2
-:10C30000103E000F8007A000F8002E000F800BD217
-:10C3100000300000000000000810E400F901324085
-:10C320008C9003E400C90036420F9003A400C900BA
-:10C330003E420D90036400D9003E400F900B640014
-:10C34000F99032410C90030204300000000000001C
-:10C3500080046400B9C8A2600A9202E40089402EF9
-:10C36000580B90020400D9002E42089002E4048980
-:10C37000002E400B90062404B9082A404890122051
-:10C38000001000000000000018052400B91022442D
-:10C39000089002E400890022458B9002A4008900E5
-:10C3A0002A40099002E40099802E400B9026240038
-:10C3B000B9012270091002060040000000000000D0
-:10C3C00008040408B12020400A1002C48083002C15
-:10C3D000504B1002240091002E40081202C48181AB
-:10C3E000A26C400B12020480B9202A4829120202D2
-:10C3F0000100000000000000B80D6140F80032802C
-:10C40000088003E142C80032001F8503A140C850E4
-:10C410003A008D85036140D8003E000F050321409E
-:10C42000F85032140D850B2E035000000000000060
-:10C43000981DF404FD103F400F5003C440FD003F21
-:10C44000510FD003F400FF013D400F9103E440FD84
-:10C45000103F4A0F9103E440FD103F440E9103E664
-:10C4600002700000000000001805C500CD0031403A
-:10C470000DD043E400CD0033404F1102E404C1006D
-:10C480003D400C9003E400EDA432500F9003E40013
-:10C49000FD003F400F9003C6007000000000000048
-:10C4A0003810E208D8003201008012C0004800367F
-:10C4B000800B8A02E000A8002E000F8002E00088B6
-:10C4C0005034280B8002E000B8002E000B8002CE12
-:10C4D00004300000000000000805C48081002640F0
-:10C4E000091802C408210028408B1002C400B101C1
-:10C4F0002E40181002C400A10120481B1002C400E5
-:10C50000B1006C400B1012C201700000000000006E
-:10C510001811A4009980A242489002E400A92A269A
-:10C52000440B9082C481B9002E400B9042C4008914
-:10C530000026400B9002E400B9012E410B9002C688
-:10C540000460000000000000A015C520C984307000
-:10C550000D9013E402E90032700F9403E400F940F7
-:10C560003C480C9003E400E10032400F9001E400ED
-:10C57000F9903E600F9026E8047000000000000073
-:10C580002801A500F1043A448F9003E410C9043E49
-:10C59000600F9003E400E9203E400F9003E410F99F
-:10C5A000903E400F9003E400F9803E640F9007CA6C
-:10C5B00000600000000000002810A100C8043A003C
-:10C5C0001E80038003C8402A041F800320008800C7
-:10C5D00032300C80032000F8003E000C8003E000A5
-:10C5E000C8803E200F8003CA042000000000000025
-:10C5F00028053800AED0378008EC463800D6042332
-:10C60000A00BA0417804FA0037800DA002A810EE1C
-:10C61000212E8008A002E8088E802FA08BA002CADD
-:10C62000004000000000000028014C0283C0A8E880
-:10C630004A36028C0013A028C20B30060C00B3004F
-:10C6400024840930020C00B32028C0093002CC0039
-:10C6500083802CC00B3002CA0100000000000000E3
-:10C66000A0013C44AF4025C248F8821CC89F082165
-:10C67000C08BF8025C00BFB02780093A029C00A57D
-:10C68000022DE8097002CE8085082DC20B7302E8E6
-:10C690000040000000000000A8081E00C782A9E0BA
-:10C6A0000A78029E40978439A00B7A833F80D79105
-:10C6B00035A00D7A091E44F7803DE82D7A03DE820D
-:10C6C000C6803D204B7B23EA0200000000000000F2
-:10C6D000081DAC00D3003EC10F3003ED80E3003EE7
-:10C6E000800FB621EC08DB213E800FB5036C40F9CA
-:10C6F000003EDC0EB203ED40F9023E800FB003C2F3
-:10C7000006600000000000000005FE00CF803DE054
-:10C710000FC843FE00FE843FE00DF8C3FF10AF904A
-:10C7200035A00CFC033E14EC843FF00EFCC3FF0864
-:10C730004F8033E40CF8030000700000000000009C
-:10C74000A8119C00D7A22DC40C41C2DC00740025A6
-:10C75000800F7242DC90D7382D980A70021C048634
-:10C76000003FC00D7002CC00860837C62870022A30
-:10C77000006000000000000000009C0087602DC2E7
-:10C780000A5002DC00B61025C2097086DC30970022
-:10C7900025800830025C0087082DC0087002CC405C
-:10C7A0008600210009700A0004200000000000003B
-:10C7B0002014ED8093000CE1281802CC08A000247E
-:10C7C000121A3402CF0493402C800AB0224C02810A
-:10C7D0008028E0283002CC008882242008B002089B
-:10C7E0000430000000000000A815BF20C9E02CF1B3
-:10C7F0000EBD03FC00B940364009F502FD40FF8044
-:10C8000036A208F00B7C00EB802FE00AF043FC021C
-:10C810008BD032F00DF0032A04600000000000000D
-:10C820008000EC10FB003EC80F9413EC00F940367A
-:10C83000401FB003EC10FB013ED00FB003AC00F979
-:10C84000003EC40FB001EC00F9043E480FB003E015
-:10C8500000300000000000000110FC00DF003FC0BD
-:10C860000CE007FC00FC0A27004FF003FC00FF0867
-:10C8700033800CF0002C005F0033C00CF001FC0092
-:10C88000FE0023400FB00300443000000000000011
-:10C8900081046C008B862EE0488F02EC08B8A0362D
-:10C8A000304BB003AC0C9B023CA00CB0436C00B10D
-:10C8B0000028C00DB012EC10B980A2610BB00220AC
-:10C8C000401000000000000080052C009B882EE036
-:10C8D00008A002EC01BB8026620BB002EC00B301A1
-:10C8E0002A2108B0122C00B80022C008B012EC14A3
-:10C8F000B98422A20BB002A000400000000000009A
-:10C9000008040C0493002CE0080002CC09910020DC
-:10C91000400B30064C0413002600083002CC04B251
-:10C92000002AC0013000CD00B00020800B300A0288
-:10C930000100000000000000000D6C00DB246EC050
-:10C940002CA002FC00BA0426404FF057FC003F0127
-:10C950003A002CF0013C00DB0033C084F003FD08FA
-:10C96000FA0032000FF00300015000000000000048
-:10C97000A019DC00EA403F0007C003FC04FC003FB4
-:10C98000400FF0039C00FF003F000EF0037C00FD11
-:10C99000003FC10FF003FC84F4003F000FF003E8F8
-:10C9A0000470000000000000C001F080FF0003C21E
-:10C9B0000FC2033E00DFC03EC04DDB02B0C0DC3022
-:10C9C0003FE00FDB23F620FF2633E00F52035E002B
-:10C9D000FF8033C04C4903300070000000000000AD
-:10C9E0008010E1E0B70823F00BAD0A2E009A042E68
-:10C9F000B0098F03A040B9302EA00B9F03A700BB46
-:10CA00008026E00BDD022E00BB8022F40A9202A0F9
-:10CA100004300000000000008805C880B31024C066
-:10CA20000B8002AC00A3242CD0081006C080B201F9
-:10CA30002CEA4B0012C204B31008C00A90020C008A
-:10CA4000930424C0098202A20170000000000000CB
-:10CA5000C015A500BB0022C00B8002AC08BB182E7D
-:10CA6000E0188802EC01BA002E800B9886E200BB29
-:10CA70000022C40B90026C00BB00A6C00B9000B05B
-:10CA800004600000000000004011E700FB00B2C09D
-:10CA90000FA803AC02EB003E600D9E03EC00D840F3
-:10CAA0003E400F8843E200FB2032C00F100B6F9016
-:10CAB0005B8236C02D080190047000000000000069
-:10CAC000E001B708F7003FC00FF9037C08CF823CB4
-:10CAD00000AFD021BC08FD103F808FC003A400F739
-:10CAE00001BFC007D003BD30FFA438C00EDA03F881
-:10CAF00000600000000000004010A800FB00B2C170
-:10CB00000E8103EC40FB443AC10E9503E000CB419B
-:10CB1000324D0F8103E020C90072E84491036D009B
-:10CB2000CB023EC00C8003900420000000000000F7
-:10CB3000C8052400BF0033C4081D038C00BB983611
-:10CB4000484D9822ED40DB0036B00B9802E300DB45
-:10CB50000032E088D8022C02C3802FC008900372F4
-:10CB60000040000000000000E0014400B30020F09D
-:10CB70001808024F84B1C024C0890602C400910085
-:10CB800020F01B1882C60093002CD1081E020E4410
-:10CB900093942CC0082002B8005000000000000050
-:10CBA00020011E04B78020E20868069E80BF84250D
-:10CBB000A8096802C60093A065E40B7812DE009312
-:10CBC00000A1E008D8021ED0A7802DE008F8024896
-:10CBD000104000000000000048080800B32030C0EA
-:10CBE0000A2202CE40F3A03CE80B3002C100D0C1C3
-:10CBF00030C00B2113CC21D3002CC02C100B0C8087
-:10CC0000D3613CC82C200392020000000000000009
-:10CC1000401DBC00FF403BC00FE003FC00F7507F0D
-:10CC2000C42EF003FC40FE003FC00FF047FC00FFA5
-:10CC3000007DC20FD001BC805F003FC00FF003D069
-:10CC40000260000000000000A805E400FBC032C83C
-:10CC50000EE003ACA0EB2032408CA0132C00D900D6
-:10CC60003E600CB003E800FA8030C03C9203EF60F5
-:10CC7000C32031C40CA0032A007000000000000093
-:10CC800048119C00332021DA0B70439C01B5002130
-:10CC9000000AE0021C00B7002FC00D70039C00B614
-:10CCA0000031C8085702DC00875021C00A70429248
-:10CCB0000460000000000000C0009A11B79021E05D
-:10CCC0000B6882DE08A78024600870121208958025
-:10CCD0002D60096C02DE00B18023E00A5862FE007C
-:10CCE00097A021E809E802301020000000000000B1
-:10CCF0004814CD00B30020C08B3C028C00BB002444
-:10CD0000C41A3D022F88B3482CE0893E028D8093DF
-:10CD1000D9A440881002CC0493C820C00B300292E2
-:10CD20000430000000000000E815B940FA00B280AD
-:10CD30000FE003E800EA8037A00CE8133B08DE01AF
-:10CD40003F820CE043FA80FE8031280CA003F00201
-:10CD5000C4C0B2800DE0033A04600000000000008F
-:10CD60004800E000F8003E100B8083E000F8303A05
-:10CD7000006D8083E144B8043E100F8013E000F89A
-:10CD8000003A104F0403E300E8103E000E8003D287
-:10CD900000300000000000000810E400C900384026
-:10CDA0000F1A032E00FBA036600C9803E604D10096
-:10CDB00036480E9102E600F9003E000C99036240ED
-:10CDC000F800A0680C90030204300000000000008E
-:10CDD0008004640289042E64889402A500B980202E
-:10CDE000640D9C02E642890022600B9C02E410B9AB
-:10CDF000403A50089C022720B900224008100360E6
-:10CE00000010000000000000180504008900224006
-:10CE10000A9082254CB9000240089602E41089006D
-:10CE20002650139402E440B9082E4008908A24004A
-:10CE3000B9012A40089002060040000000000000EE
-:10CE40000804058081402CC80810068400B1042025
-:10CE500049091442CC89812020500B1446C400B1EA
-:10CE6000002AC02814020101B0042840389402426C
-:10CE70001100000000000000B80D600088003A00BA
-:10CE80000E80232000F850B2000C8012E140D850F0
-:10CE900036000E8003E000F8002E000C8053600482
-:10CEA000F8003A000C80032E035000000000000040
-:10CEB000981DF440F9443E440FD403E400F1003FD0
-:10CEC000440FD453F444FD102F400FF403FD00FD34
-:10CED000403B100FD423D1047C4336500F5003E65F
-:10CEE00006700000000000001805A600F9102E6270
-:10CEF0000FD283E400BD423E610FD003F6C0C9A249
-:10CF00002B400CD0033400F9813E6808C143FA007D
-:10CF1000F5803F620C140306007000000000000062
-:10CF20003810E12088112E100B8002E000B8822E0C
-:10CF3000100B8000E3C488F022000B800A2000E878
-:10CF4000402F14088802E200B8002E000888028EE4
-:10CF500004300000000000000804C500A1002C40BF
-:10CF60000B1002C418B1226CD10B1026C40081082A
-:10CF70002A408810020404B5C00F400B020241A0F1
-:10CF8000B1402C40081202021170000000000000A5
-:10CF90001815A40089062E400B9012E400B9402E0B
-:10CFA000400BB082C402894422400A90022400A9A6
-:10CFB00000274809B012EC18B9012E4040900286B3
-:10CFC0000460000000000000A015E784E9013E4075
-:10CFD0000F9003E400F9003E720F9003E7608910A0
-:10CFE0003A400C90032400F9443C402D9003E76044
-:10CFF000F9713E40289003280470000000000000F2
-:10D000002801A448A9003EC00F9A43EC00F9207EF5
-:10D01000C80F9A07660079807E400F1C03E700E97D
-:10D02000A03E40468003E020F9003C400F9003CA38
-:10D03000006000000000000028108000F8003A00A6
-:10D040000F8003A008E8403A100C8303A1C0F04011
-:10D050003E060F8403E100F8003B000F810320002F
-:10D06000F810B2004C800B0A042000000000000001
-:10D0700028052800BA002EB00BE802E9003E900215
-:10D080008108E4127800BA002DB089E822F80CBAC1
-:10D09000006E8003C5033000BA0022A808A0228ACF
-:10D0A000004000000000000028054C00B30028E804
-:10D0B0001B31128CC4A3922C408834068E0093003E
-:10D0C0002CF01931A2CC04B30028800138024C00A6
-:10D0D000B38020E00AB012020050000000000000FF
-:10D0E000A0011C00B7142D420B6002DC00B78127A1
-:10D0F000E01860025818B7222D80097022DC00B7B2
-:10D10000002D800B3B021DD0BF8028C08AF202A0F8
-:10D110000040000000000000A8081F80F7A039E2CE
-:10D120000F68039E00ED843DE24478039E00F7B44F
-:10D130002DE00D6803D600F68039E00F79035E908C
-:10D14000F78131602E7C032A0200000000000000FD
-:10D15000081DAD00FB423EC80FA003EDA0BB003888
-:10D16000C80FB0036800FB113E4009B041EC00FA63
-:10D17000023EC00FB20BED803B0036400DB02342A3
-:10D1800006600000000000000005FF00CFD033E47F
-:10D190004FF903DE40DC8036E40CB913FE00CF907B
-:10D1A00037E50FF843FE00CF923FA40F78031F002E
-:10D1B000C58033600CF82000007000000000000003
-:10D1C000A811BC000F1021810B600384008B082183
-:10D1D000600A7B0398008B1029840E6422DC40D700
-:10D1E000022D840B70021C00851821400AF022AA2F
-:10D1F000046000000000000000009C00A71469C04B
-:10D200001A6012FC01A4102DC00A52024540870C7E
-:10D2100021801B6082D400860325E01B70025C40E5
-:10D220009D0029400870020000200000000000005E
-:10D230002014CD00A30028C01B20228C11A300685D
-:10D24000F60A3C068200838028840A8C82CC4492B1
-:10D25000002CC00B30024E00910028400A3002889A
-:10D260000430000000000000A815BE22EF04BAC080
-:10D270000F1493EC02F1C33EF00E90836600CFD200
-:10D2800032500F9C03CB00C9803E280FB0034F00E3
-:10D29000D1C0AAC00C71032A046000000000000085
-:10D2A0008000EC20DB0026800FA003EC081B00367A
-:10D2B000C00F8601E540FB023A480E9403EC80F172
-:10D2C000843E004FB003ADC0EB2036C00FB023E06A
-:10D2D00000300000000000000110DC00CF003F60C3
-:10D2E0000CE0833E80ED0833D08F50039E00DF00BA
-:10D2F00033400CC0033000CC1033680CF0033C8486
-:10D300008D9030400CF00308443000000000000015
-:10D3100081046C008B022CF408A8620C808B802A9C
-:10D32000600F9C022E008B0020600D98022C80D88C
-:10D330000014400834122E008B8232400DB003607E
-:10D34000401000000000000080052C008B002ED053
-:10D3500008B8022C008A8422C00B8802E4A0830053
-:10D3600022620A98022800890022000AB1062C00D5
-:10D37000AB00224008B00260004000000000000046
-:10D3800008040C02A3002CC10820020C028B002808
-:10D39000C20A00024410831022400B10060C0091B8
-:10D3A00004AA002830022C00A101204009B002424A
-:10D3B0001100000000000000000D7C008F003EC046
-:10D3C0002CA0032940A84032CC8B8002E000CF4043
-:10D3D00032000E800A2000880022400CB0032C048A
-:10D3E000EB00B2408CB0034003500000000000008E
-:10D3F000A01DFC00DF003F400FE003FC80FF283D44
-:10D40000C00BC103B014FF003F000DD003DC00FCD3
-:10D410000037400FF021FC001D007B408FF003E03F
-:10D420000670000000000000C005D200DF0031A03F
-:10D430004DF0433200CE141B680EDA23B2C02F0029
-:10D440003FC22CE8033C40FD083BC84CF0833CA0A5
-:10D45000CF0033C40CF307F00070000000000000A0
-:10D460008010E2008FC022A008FD422F008B7022A6
-:10D470001E48890227C08F5A2E50483002BDC0BDB9
-:10D480004023C548F4823D2C877022C008F103E098
-:10D4900004300000000000008805E00093102681A1
-:10D4A0004930028040832028400A10028000A324D3
-:10D4B0002CCA0832820C00912820CA1B32020C8828
-:10D4C000830920C8093202E2017000000000000058
-:10D4D000C015A3148B04268908B002AC228B882ABD
-:10D4E00020089882A610AB002ECA08B082AC00B902
-:10D4F0000022C029B00A2C018B0022C009B022F002
-:10D5000004600000000000004015E300DB0034E28E
-:10D510000DB003A300CA80BA700E8803A600EB000A
-:10D520003E900CB5032C00FB10BAC00EB0032C02C9
-:10D53000CB0232C009B002D004700000000000002D
-:10D54000E001B008FF00BBE00F70036500F4003598
-:10D55000400F40035400DF003E400FF803EC00F79B
-:10D56000013DC10E3003EC00FF003FC08EF003B858
-:10D5700000600000000000004010A040EB083E806A
-:10D580000DB003E000C8003A510F82036420DB00B5
-:10D590003D820CBC032C10DB0072C00DB1030C20CB
-:10D5A000D30032C00FB00B50042000000000000078
-:10D5B000C805010087C02EA808F112C540880022C6
-:10D5C000400B84022700AF002EC008BC123C008B29
-:10D5D0000123C028F54A3D28DF0033C04BF0033259
-:10D5E0000040000000000000E0054880A3902C00EF
-:10D5F000083002C100920428000B14124300B30447
-:10D600002C300AB00A8C00930060C0083C060E0162
-:10D61000B3002EC08B300638005000000000000020
-:10D620002001120087802D24087802D200958021E5
-:10D63000A00B68025A2087802D661A7C029E008704
-:10D640008021E11879029E40B780A1E00B78024862
-:10D65000004000000000000048080000E3A03C403B
-:10D660000C3003C422D90038D40F30836840F30053
-:10D670003C800A32028C00DB00A2C40C30030C0098
-:10D68000F3003CC00FB103120200000000000000D4
-:10D69000400DB000FF103F400EF003FC00ED003FD6
-:10D6A000C00F3013BC407F103FC12DF0037C00FB46
-:10D6B000403FC20EF4837C00DF003FC20FF00390B6
-:10D6C0000660000000000000A805EC00DBA032C0EE
-:10D6D0000DB703E000CA043E800FB8032C10FB0016
-:10D6E00033008DB0032C80E9403ED20FB4032D806F
-:10D6F000EB20B2C00FB203EA00700000000000008F
-:10D7000048119000B71011C0087082D80A87012D07
-:10D7100080897003D808B70A21402C70020DC0859B
-:10D720000179C80B32020D208F2821C00B7282D2E2
-:10D730000460000000000000C0409610979023E0B5
-:10D74000097A02D60097802DF00B78821E00B3B0C4
-:10D7500021A00878021E00A5802DE00B7A021E8011
-:10D76000A7B021E80B7902F00020000000000000C3
-:10D770004814C000B30020E2083002C64093702C69
-:10D78000C0093C028E00B30020D80818020C0081AA
-:10D79000902EC00B302A2C108300A0C00B3002D278
-:10D7A0000430000000000000E811B900DA0233B8CC
-:10D7B0000DA003F800DEC03FB04FEC063840FA0081
-:10D7C000B3900C6C0B2808EA017E800FA0032800A0
-:10D7D000EA0032800FA003FA04600000000000009D
-:10D7E0004800E000F8403A000F8403E100E8023E00
-:10D7F000000F8403E140F8003E000F8103E000F8D1
-:10D80000003A000F8003E000F8003E000F8003D2D2
-:10D8100000300000000000000810E420F9C03E7055
-:10D820000E9002E480C90032420C9883A484F9006F
-:10D83000B2600C90832400C9003E400C1A02240000
-:10D84000C100B2400F9001C204300000000000008F
-:10D8500080046500B9812C600D94C2C7088900223C
-:10D86000400895C7A400B9002870A8940A2400892C
-:10D87000042E4028902A2600890022400B9002E0C6
-:10D88000001000000000000018052400B9402E40E0
-:10D890000A9002E5008100A040099042EC00B1002E
-:10D8A00022580890A2040289002E40089002A4A0E9
-:10D8B000890022400B9002C60040000000000000DA
-:10D8C00008040400B1202EC0891202C480812020E7
-:10D8D00040611042C500B120284818904204808160
-:10D8E000282C4808128284A0812020480B1282C272
-:10D8F0000100000000000000B80D6800F8002E00D4
-:10D900000E8003E008C85032140D8017E804F85068
-:10D9100032144C050B2140C8203E000C8703A1C2E5
-:10D92000C80032148F8203EE035000000000000094
-:10D93000981DF400F1103D400F9102D442FD103FBC
-:10D94000510E5413B500F91035442FD003E450FDA7
-:10D95000283E4E0F90036400F9383E440F9283E650
-:10D9600006700000000000001815F400FD003D40A6
-:10D970002CD003B600F9823E400CD003F400F980AD
-:10D9800033700C50033400C9C03E400CDA031680DB
-:10D99000C9403E622C988306007000000000000021
-:10D9A0003810E000B8002E000880022800B8502689
-:10D9B0000008A002E800B8002A342AAA0A20008839
-:10D9C000C02E2A0880222100A8802E000880020E86
-:10D9D00004300000000000000805C400B1002E4023
-:10D9E0004810068D00B1002C40281002C400B14040
-:10D9F0002C48081082440081602C4028140A0440FE
-:10DA000081202C400810020201700000000000007C
-:10DA10001805A440B9002E4008B0022400B9282EF1
-:10DA200050089022E400B9002E600B124264008975
-:10DA3000002C400990022400A9002C400810024646
-:10DA40000460000000000000A005E600F9003C4270
-:10DA50000C9003A740F9403E700C9802E540F90095
-:10DA60003E400C98036406C9012E400C9003240428
-:10DA7000C9003E400C900B2804700000000000001C
-:10DA80002801A400F9003E400F9083E610F900360B
-:10DA9000680F9C03E600F9003A400E9893A400F941
-:10DAA000003E400E9083C400F9003E400F90038A70
-:10DAB00000600000000000002800A000F8003E0404
-:10DAC0000C80032102C84032000F8003E100F00007
-:10DAD0003E020C80032000F8003E000C00032000F2
-:10DAE000C80032000F80030A04200000000000007C
-:10DAF00028153A00BE022FB008681238008A042A9E
-:10DB0000800BE042FB20BA002F9108E0022800BA07
-:10DB100000268008EE0A38008A0022800BA0028AC4
-:10DB2000004000000000000028054200B3002CC2A5
-:10DB300028380A4800830422C00B1002CD80B300AD
-:10DB40002EC0081C022400B3002CC00834120E4062
-:10DB5000830020C00B30120A0050000000000000BB
-:10DB6000A0011100B7002FC00870A24E008FB02195
-:10DB7000CC0B6012DC10B7302DC008D0821480B7F7
-:10DB80001225C8286002140087B221CC0B3102A8EC
-:10DB90000040000000000000A8081200F7803DE0EF
-:10DBA0000C38035600C790B1E40F7803DE00F790FD
-:10DBB0001F602C480B16A0F7803CF40C38031E00A5
-:10DBC000CFA0B1E80F7B032A020000000000000094
-:10DBD000080DA000F8003EC00BB003AC00F3213EDE
-:10DBE000C807B002E400FB203F400F8003E480FB45
-:10DBF0000036D00FA003E008FB423ED80FB003C2AE
-:10DC000006600000000000000005F080CF8031E1D8
-:10DC10000CF803DA10EF803FE40FD803FE10FF8208
-:10DC20003FE04CD81B1620CF803FE04CD830EE4070
-:10DC3000FFC0B3F40FF803C0007000000000000044
-:10DC4000A8019820834021C0087102DC8487202D20
-:10DC5000C00B6002D960F7002DC008F08214048761
-:10DC6000002DC008F0031E00B72021C08B7002EA0F
-:10DC700004600000000000000000B0008700218068
-:10DC8000087002F50427002DC08B7002DC00B7007D
-:10DC90002C50084002140087002DC00850025C047C
-:10DCA000B700A1C08B7002C000200000000000007F
-:10DCB0002014C80080000080083002CE0083C02CF1
-:10DCC000D04B3002CE00AB022C4048BC0204008393
-:10DCD000002CC00810020008B30020C0093002C8A0
-:10DCE0000430000000000000A8158340C80030C0C8
-:10DCF0002CB003EC00EF883FE607B183E100BF00E2
-:10DD00003EE00CB8033400CF003FC02CB0036810D5
-:10DD1000FF0033C00FF003EA0460000000000000C1
-:10DD20008000E400F1403EC00FB403ED40FB083E2C
-:10DD3000C00FA003E520FB003EE00DB083E400F33C
-:10DD4000003EC00F8003C400FB003EC00F3003E064
-:10DD500000300000000000000110F000CA0033E0B5
-:10DD60004EF0033400FF003FC08FE803F000FF00D7
-:10DD7000B1400CE0033400EF00B3C00CF0033800F6
-:10DD8000CF003DC00AF00300443000000000000056
-:10DD900081046222889022E0083C022E08BB012EFA
-:10DDA000C00BA0026600BB0022A008A9022400BB91
-:10DDB0000022C0282C02A200DB002EC00AB002A064
-:10DDC000401000000000000080052200980022C8DA
-:10DDD0000A98022704BB002EC00BB102E200BB0070
-:10DDE00022E208B002A400AB0020C00A888223000F
-:10DDF0008B002EC008B002A0004000000000000010
-:10DE000008140400914022C00810020C00B3002C3A
-:10DE1000C04B28224004B30020C028300A0404B3B9
-:10DE20000060C0080002842093002CC00A300282E7
-:10DE3000010000000000000000056000DA40B28030
-:10DE40000E90032400FF003FC08FA003E009FF00F5
-:10DE5000324008A00B3400EB0031C00C8003288056
-:10DE6000C7003FC00CF0030003500000000000009A
-:10DE7000A015D000EC203F000FC00BFC10FF013FAD
-:10DE8000C00FE003F400FF003FC00FF003F400FFF9
-:10DE9000003FC04FC001F008FF003FC00FF003E893
-:10DEA0000670000000000000C005FC00CC90372088
-:10DEB0000EF013BD04D4C1332C4CD9233260FF20A3
-:10DEC0003DE04FC103B640CD0037E00CE28B10C0FF
-:10DED000CD0033C60FD803300070000000000000F2
-:10DEE0008010EE088A20220008B7022D008A00B6B2
-:10DEF0003C0899022784BF682E820B01022440D976
-:10DF00004220C08AAC022DC28248A2D00B820220DD
-:10DF100006300000000000008805CC008804268040
-:10DF20002A30C2A580A92128008A00020000A3107F
-:10DF30002CC80B0002C490834224C1080002408810
-:10DF4000A360A8C00B00C222017000000000000006
-:10DF5000C015AC068A0022E048B0022E02AB802E2B
-:10DF6000204A8C022620BB006E800B30C246049BE8
-:10DF70000AA2C00A80126C40A8002AC00B8C023092
-:10DF800000600000000000004015EC00C10936618F
-:10DF90000E3203AB20F8843A782E98032600EB006B
-:10DFA0003E404F9003E200C94036E00CB4036E00DF
-:10DFB000EB003AC00F88031004700000000000005E
-:10DFC000E001BC00FD003F400FFA13F810DC04270D
-:10DFD000400D5043F400FF003F400FD903B000F95B
-:10DFE000013FF00FF023B200D4A037C00FC00BF8F0
-:10DFF00000600000000000004010AC20EB10F200B8
-:10E000000EB4032180C9403A480F9013E120FB0071
-:10E010003EC00C84032400FB0136E00C740B9C0012
-:10E02000CF0032E00F8403D0042000000000000085
-:10E03000C8051E008B80204008B802838081A02282
-:10E04000780B9183E300BF000EC10AB4036404B9E6
-:10E050005032C00AB2022000880023D40B8802F29A
-:10E060000040000000000000E0054C42A0802000BD
-:10E070004800020D0680802AD0030002C800B300C9
-:10E080002CC00836024000B90222C28B26020C10B6
-:10E09000010224C04BA102F80010000000000000A3
-:10E0A00020011E088E8021210828C29E008E80211A
-:10E0B000600B78029E20B7822FA10A78025E00B51D
-:10E0C00091A1E00B290232448680A5E00B4C02C8E6
-:10E0D000001000000000000048080C00E100228051
-:10E0E0000E000B2400C04428AD0F2002C800F3002E
-:10E0F0001CC00C0103484CF20430C00F15038040D3
-:10E10000C10014C80F0003DA021000000000000074
-:10E11000401D9C40F7003FC08FC003E400FA013F60
-:10E12000C00FF023FC08FB003F800FF001FC10FF44
-:10E13000003FC00ED103FC42FE803BC00FC003D0A5
-:10E140000660000000000000A805EC40C8003EC0CA
-:10E150000F9003EE08CB0032C00FA023E603CB4C98
-:10E1600032400FB007E800F90016400CA00B6C001D
-:10E17000CF0232C50C8003020070000000000000D6
-:10E1800048119C8084042DC10B4040DC0087042191
-:10E19000C04B7012FC018F6029400B70139C00B5BE
-:10E1A00000A3400A60020000840021C0084002125F
-:10E1B0000660000000000000C0008E0087802DA2D5
-:10E1C0000B4C16D608978821A04B6802DE04A78066
-:10E1D00021E00B4802DA04B68225600AE8621E00DC
-:10E1E000878020E8084802080020000000000000A6
-:10E1F0004814CC008B806CF00B3C02CE469BC020B8
-:10E20000E40B3C02CC20A30028E00B30028D80B14F
-:10E210008022440A210A03828080A0C008060A12D4
-:10E220000030000000000000E815A802CE803FA0EA
-:10E230000FE003FA40DEC0B3900FEA13F908EA04D6
-:10E2400033828FE403FB08FEA036A00CAC0B6B827C
-:10E25000C6A032802CE4033A0470000000000000E5
-:10E260004800E000F8903E020F8083E100E8203E85
-:10E27000030F8203E140D8003E200F0093A040F836
-:10E28000003E108F080BF000FC003E000F8003D210
-:10E2900000600000000000000810E400E9003640C3
-:10E2A0000F9407E600F980B0400C9403E440F900B5
-:10E2B00032400F940BA40071C032402C94232402EE
-:10E2C000C90032400C90030204200000000000004E
-:10E2D00080044400890022400B9802E660B90022C5
-:10E2E000600A9C02E624B90436400B98002400B969
-:10E2F00080A25208900224008940224068940220A3
-:10E30000001000000000000018052400A9002640AD
-:10E31000039402E401B9102255089022E400B100F0
-:10E3200026400B90002C09B900226008900A1C04BA
-:10E330008D08A0400810820E004000000000000080
-:10E3400008040600810020500B1242C480B1042052
-:10E35000500A1402C500B12224400B12220401B15C
-:10E3600040205008100A15008540285008140A0A59
-:10E370000500000000000000B80D6000E850360005
-:10E380000F8502E140F85032000CA023E010F85055
-:10E39000B2140FA503A148FA00B2000C80032004B8
-:10E3A000C40232000C00032E0350000000000000E5
-:10E3B000981DE500FD003F400FD103D444F5003F18
-:10E3C000510FD403F500F9103B400FD100F510F5C3
-:10E3D000407F400F542BE500F94036500FD003E644
-:10E3E00004700000000000001805F610BD40334026
-:10E3F0000FDA033780CD003F400FD003F400E9A0CF
-:10E400003E400CDE17A408FDC033418DDA1326A070
-:10E41000F9A832780CB40B06007000000000000070
-:10E420003810E100B8A036200B8A82A2802AA82EDC
-:10E43000000B8012E004B8A12E284A8E022AA0BA4E
-:10E44000C022280885022108B8E8A23C08C8020EAC
-:10E4500006300000000000000805C500B900204A91
-:10E460000B1402058001002C410B1002C404A14AC8
-:10E470002E420814028410B160A04A091002440020
-:10E48000B501294018D2021200200000000000004F
-:10E490001815A400B92126400B9602A410A9002E3D
-:10E4A000400B9612E420B9002E410A90422400B994
-:10E4B0000022410898226400B9202B4128D402068A
-:10E4C0000020000000000000A011E400F9E0325834
-:10E4D0000F98032640C9403E580F9C03E400E90012
-:10E4E0006E400C9A02A600F94432400D9A0B6484E7
-:10E4F000F900BA400C180328047000000000000066
-:10E500002801A400F9003E500F9003E600F9043EF4
-:10E51000480F9003E440F9003E650F9981E450F9FB
-:10E52000203E408F9003A480F90034400F9203D224
-:10E5300000600000000000002810A000F8403E101D
-:10E540000E84036008C8003E080F8083E028E804BA
-:10E550003E000C8403211CF04832000B0003E00253
-:10E56000C00032000CC00B020420000000000000BC
-:10E5700028053800B2882E8008E0037A808E002FAC
-:10E58000A00BE802F910BA002C8028E4022800BE93
-:10E590004023B808E802E804CA20A28008E8020A7A
-:10E5A000004000000000000028054C01B3002C4092
-:10E5B00008B8426C0283002CE00B3800CF40B30057
-:10E5C0002CC008B40A0C00B340A2820A3902CC0065
-:10E5D0009380A0C02920020A005000000000000023
-:10E5E000A0011D00B7002D64287402400087052D8E
-:10E5F000900B7402DC10B7302DC80834061C80B7AD
-:10E6000000A1C00A7002DE80830001000960822040
-:10E610000440000000000000A8081A00F7803D60D8
-:10E620000ED80B5E00C7803DE00F6803DE10F7A92F
-:10E630007FE84878031F30FF9433A00E7803CF247F
-:10E64000D680B1E00DF84322020000000000000077
-:10E65000081DAC00BB000C400FB003EC08F9003EF5
-:10E66000000F9041EC00FB617ED00FB003EC80FB0B
-:10E67000403F9B0CB003ED90FA003C000EB003C28B
-:10E6800004600000000000000005DE00EF80336041
-:10E690000DD8033640EF903EE00FF903FE00FF80F7
-:10E6A00033FE0CFA03FE00CF80B3E00FF803FE0048
-:10E6B000CD8033E00FC843C0002000000000000000
-:10E6C000A8119C0085083540087003522087112C42
-:10E6D000EC0B7102D000E70035C4087402DC4087FF
-:10E6E0001021C00B7002FC80850821000B4182EADA
-:10E6F000062000000000000000009800AF0023503A
-:10E700000950021C80A70129C01B6006DC40B7101D
-:10E7100021C84A5202DC00830021C00B7002DC13C6
-:10E72000840025C00B5802C000200000000000003B
-:10E730002014CC0081802440083E026E0089002C09
-:10E74000C00BB402CA80A30024C00A0402EC4082B9
-:10E750000A20C00B3002CD1080C0A4000B1C02C8E0
-:10E760000020000000000000A8158400EB8033406A
-:10E770000D8C832600E9A03E788F9083E100FF0096
-:10E7800031D10E8423FC00CB8232C08FB002FD4019
-:10E79000CB80B6C00FA403EA0460000000000000B4
-:10E7A0008000EC00FB003E400FA003E000F9013EBA
-:10E7B000420F9003E554E3003EC8059303EC80FB51
-:10E7C000C13EC00F2003CC48F3083A000FA043E03D
-:10E7D00000300000000000000110F000CF003F40BA
-:10E7E0000F30012C0ACD1033000FD0831400CB0260
-:10E7F00033C00CE103EC10CD0033C00CF0333C000F
-:10E80000EA0033C00CF083C8443000000000000070
-:10E8100081046E008B002E400BBC022E000B0022E8
-:10E82000300B9C022780AB002AC008B802EC00899C
-:10E83000C020E008AE022C088A00220008B042E89E
-:10E84000401000000000000080052E008B042E40C8
-:10E850008B8C02AE10890022700B8C02A2008B01FF
-:10E8600022C0088002EC108288A27009B8022C082D
-:10E87000890020C0288022E0104000000000000035
-:10E8800008040C0481002C400B200280008104A0AD
-:10E89000504B000A8000A3012AC1201002CC14832F
-:10E8A0000022C00820020C008100E000080002C223
-:10E8B0000500000000000000000D6800CB003E4095
-:10E8C0000F900BAC80C90032100F8003A400CF0260
-:10E8D00031C00C8013FC02CD0033C02C90033C02ED
-:10E8E000E800B2C00C9003C003500000000000001C
-:10E8F000A01DFC02F5003D408FF0236D00FF003F9E
-:10E90000040FC003701CFF013FC04FC003FC00FD9B
-:10E91000003FC00FE00FFC18FC003F000FD003E8E1
-:10E920000470000000000000C005FE00D7020F3098
-:10E930000CF2017E0644303F200EF0027C84FD2064
-:10E9400027080CD0013600FF6033CC0BF1132CC428
-:10E95000FF300FCD0CF403F0007000000000000049
-:10E960008010EE008FC02E0008FC022E008A302896
-:10E970005208F6823C68BD903234489C122600CF83
-:10E980004023CC0BF6023D00BF102FCC88F602E0EE
-:10E9900004300000000000008805CC0093102C0813
-:10E9A0000931024C009B2064580331624C81A10064
-:10E9B00020004814024400933024C00B33028D849D
-:10E9C000B3206CC02A3602E2017000000000000093
-:10E9D000C015AC109B022E410BB002A4009A004A55
-:10E9E0006088B0526C01B9002600089122EC08BB87
-:10E9F0000026C00BB002AC00BB056EC10AB002F02D
-:10EA000004600000000000004015EC00DB013E3017
-:10EA10002D30034760D8A016388FB0036C00790200
-:10EA200031600CC80A6600BB00B6C00FB00BAC006A
-:10EA3000FB013EC10EB003D00470000000000000D6
-:10EA4000E001BC10EF083F240CF0037620EE903577
-:10EA5000400E7003AC00FD00BB640F88133480CB04
-:10EA6000003BC00FB0036C08FF003EC00DF003F880
-:10EA700000600000000000004010AC01FB8032107C
-:10EA80000EB003ED00CB503E408CB0432C10F9008B
-:10EA900032600C400B2600C30436C00C30032C003F
-:10EAA0009B00B0C00CB003D00420000000000000A8
-:10EAB000C8050E80BF042A4000F500E60082D2227D
-:10EAC000400DF0223C00950236400A80022E008F55
-:10EAD0000037C00AF0423C008F0023C028F002F249
-:10EAE0000040000000000000E0054E00B3002220BE
-:10EAF0004A3000CC0081C028000830020C10A10070
-:10EB000028801830220404830024C0083002CC0876
-:10EB1000930020C0083006F80050000000000000FC
-:10EB200020011E00B78029A0087802FE208D8029D0
-:10EB3000E55B38421E40A18125A80879023700878D
-:10EB40008025E00A780ADE81878025E5487802C8BA
-:10EB5000004000000000000048080C00B310301214
-:10EB60000E3012CCC0C30038800C31060C40F100CE
-:10EB700038800C30430442C30036C00C3203CEC090
-:10EB8000DB0030C00C3003D20200000000000000A7
-:10EB9000401DBC00FF103D844FF103D040FC1033FA
-:10EBA000805DB183FC50DD0A25890FB803D400FFD6
-:10EBB000103FC00FF4033C40FF003BC00FF003D0F8
-:10EBC0000660000000000000A805EC00FB203E00ED
-:10EBD0000FB5032920F90032A00CB083EC0049C81E
-:10EBE000B2C08CA0036400FB0812EA0CB00B2C80AE
-:10EBF000FB202ED26CB643EA047000000000000037
-:10EC000048119C00B7492D000B30821001B50283DA
-:10EC1000C01A7222DD41850061C01820201400BF97
-:10EC20004035D00D34021D20B72825C1087482D28A
-:10EC30000660000000000000C0009E0437A02D20E8
-:10EC40000B7A121601B38021E20878429E0085807B
-:10EC500020E11868025600B7A025E0087A021E00DD
-:10EC6000B7902CE5887A02F0002000000000000038
-:10EC70004814CC00B3006C241B30020000B000200C
-:10EC8000F80A3002CC00810020D81820020400B31A
-:10EC90000024C00930020C00B30026C0083002D2A4
-:10ECA0000030000000000000E815A800FA003D80D8
-:10ECB0000F200B2880FE0033A00CA003E802CA023C
-:10ECC00032902CE4037800FA0032800CA003280074
-:10ECD000FA003E800CA003FA006000000000000073
-:10ECE0004800E100F0003E004F8003E080F8003E65
-:10ECF000000F8023C000F8023C000FC0836000B802
-:10ED0000003E000F8023E018F80136000F8003D288
-:10ED100000300000000000000810E600F921326019
-:10ED20000C90032C44F900B2400F901B2400E90022
-:10ED30003E400C1003A400F90032400F10332410A1
-:10ED4000F10032400C90030200300000000000008F
-:10ED500080046400B940A2410890022480E90022A6
-:10ED6000400B9012240089006E411890422400B993
-:10ED7000042A410B90036400F9002A400A900A20FB
-:10ED8000001000000000000018012480B942624811
-:10ED900028900A2400B10022400B10022410B9026E
-:10EDA0002E4008D002A400B10022400B900224049F
-:10EDB000B9002240081002060040000000000000D8
-:10EDC00008040C00B12060400812020400A12020B9
-:10EDD000400B1202048091202D680852120400B1E9
-:10EDE00028284A09128244A0B12C284A0A12820219
-:10EDF0000100000000000000B80D6000F8003214AF
-:10EE00000C80032000F85032140F85030140F800F5
-:10EE10002E0028C003A000F82430080F8223208091
-:10EE2000F82032080C82032E03500000000000007E
-:10EE3000981DE408F9103F408F9113E400ED103F56
-:10EE4000500F9103E440A5103E440F9103F404F9E0
-:10EE5000283E4B0B92A3E4A0E9283E4A0F9283E69A
-:10EE600006700000000000001805F400CD003340DB
-:10EE700080D001F400A50026400F90032600F18801
-:10EE80003E680D98834400C9C03A400C980324089A
-:10EE9000F9A032780F9A030600700000000000000D
-:10EEA0003810E0028800A200088002E0000A002278
-:10EEB000000B80022000B8402E14088043300088E8
-:10EEC000A0222A0A8A42A005B84232380B80020EDC
-:10EED00004300000000000000805C4039100244035
-:10EEE0000B1002C411B10420411B10224500B500D3
-:10EEF0002540095002540181402C400914924400DD
-:10EF0000B140244C0B140A420170000000000000C4
-:10EF10001815A400990024420B9002E401992026C0
-:10EF200040CB90026400BB002F410AD0023400891C
-:10EF30000026400B1002E400310062400B900246B4
-:10EF40000460000000000000A015C400D901365084
-:10EF50002F9003E660F98036520B900A6400F900A6
-:10EF600036400D9003640209003E400D900364009A
-:10EF7000B900B6400F900368047000000000000064
-:10EF80002801A400E1003A410C9023E620E900BAF0
-:10EF9000700F9003A400F9003E400D1013A700F974
-:10EFA000003A400E9043A408F9003A400F90038ABB
-:10EFB00000600000000000002810A020F8003200CF
-:10EFC0000F80832100F0003A11098003E000C8019E
-:10EFD00030010C8003B000D00034000D800320000D
-:10EFE000C80032000C80030A04200000000000006A
-:10EFF00028053800BE00228003E8021A08BE482215
-:10F00000800AA003B800CA0822800FA40208008A60
-:10F010000022808DA0022800DA002A8108A0028A3E
-:10F02000004000000000000028054400B30020401C
-:10F030000B30020800B06468C108B022CC0C938089
-:10F0400000C04836028800B30024C00830060C0116
-:10F05000A3022CC008B0020A00500000000000000B
-:10F06000A0011408B50021400B38821C21B70023F1
-:10F07000E84A72269E408F81AB404270523800A30E
-:10F080002220C44931021E0AB7222DE8087202A8C4
-:10F090000040000000000000A8081200F68021E0F7
-:10F0A0000B780B1E00B4823BE84C7C13FE02978069
-:10F0B00033A00838039A00F78835E20C78E30E0095
-:10F0C000E3E834F80C3C232A0200000000000000B2
-:10F0D000081DA804F1003E420FB013EC00FB00BE77
-:10F0E000CC1EB607ED80FB0036000FB0436800CBA6
-:10F0F000303ED80FB60BED40CB003AC02FB603C25E
-:10F1000006600000000000000005F240FB913D4C4D
-:10F1100080F803DE40C6801BF04FFD07FF00CD8066
-:10F1200033E00C6803BA00FF8033E007F8033F10B8
-:10F13000CF803FE00CFC03000070000000000000E6
-:10F14000A8119000B5C02D40086202DC20D6022133
-:10F15000C88F7002DC81B50081440D61221804B7AC
-:10F160000035C00B7002BC00A7012DC0087003EA77
-:10F17000046000000000000000009001B6012FC0F4
-:10F18000187002DC0A961029C14B7006DC1085004D
-:10F1900025800860821A20A30025C00B31025C4044
-:10F1A00087002DC008700200002000000000000051
-:10F1B0002014C800B1002C40882002ED008A602095
-:10F1C000C00A3002CC04B10024002824020A003313
-:10F1D0000024C00BB002CC00A3002CC088300288F1
-:10F1E0000430000000000000A815A000FB003EC68F
-:10F1F0000C8003E50009C8ABE20BF002FC004A00FA
-:10F2000036C0089003A600FF0033C00FF0037C0057
-:10F210008F002FC028F0022A0460000000000000C8
-:10F220008000E100FA013EC00F8003EC00F9403E8F
-:10F23000C007B003EC00FA003A400F9023E500FB52
-:10F24000003EC00FB003AC00FB003CC00FB023E099
-:10F2500000300000000000000110F000FC203FC062
-:10F260000CC803FC20CD81B3C24FF003FC00CA00E0
-:10F270003C800CD0823601FF003FC00FF0033C08F9
-:10F28000CF043AC05CB003C044300000000000006E
-:10F2900081046204B8402C60088902EE80A9602ACB
-:10F2A000C00BB0038C00AA402E000810022681EB90
-:10F2B0000026C08BB0136C00DB002EC03DB002E016
-:10F2C000401000000000000080052300BB032EC892
-:10F2D00009B002EE008B1026C00BB002EC00A800B3
-:10F2E0002EC0088822A480BB002EC04BB0220C0088
-:10F2F0008B002EC00BB002E00040000000000000B8
-:10F3000008040000B2002EC0292802EC01A002204F
-:10F31000C0093002CC00A0002C40080042840093B9
-:10F32000006CC00B30064D0093002CC0083002C2A8
-:10F330001100000000000000000D6000F8202FC048
-:10F340000DB003EC00CB0033C00BF003FC18E80059
-:10F350002E80088003A400BF003FC00FF0433D1182
-:10F36000CF033EC15DF023C0035000000000000049
-:10F37000A01DF000FC103F400EE003FC00FC003F2D
-:10F38000C00FF003BC00FC003F002FC0037400EF6F
-:10F390000027C00FF003FC18FF003FC00FF003E888
-:10F3A0000670000000000000C015FC889C293F0882
-:10F3B0000FD283EC00FF083F280FCA033C41CF2047
-:10F3C000732C0CC0033020CF6033D80F78033F80FC
-:10F3D000DD9233C80F5003300070000000000000C1
-:10F3E0008010E54088402E048B9402E400B9000EA2
-:10F3F0007F8F9E836582CF683E508D04922F04D309
-:10F400004074DC0DA2022040890022F00B980220FB
-:10F4100004300000000000008805C809A0852C0108
-:10F420000B0010CC40A2082C00DB110289009330A5
-:10F4300020050813028008A36060C00AB082088417
-:10F44000812020D00B1002A20170000000000000FB
-:10F45000C015A41288806E200B8882EE00BA812E1F
-:10F46000605A9802A2008B002A6008111A2C00BB77
-:10F470000022C008B80A2800812002C00B9002B008
-:10F4800004600000000000004005ED00D9803E202F
-:10F490004F9800EB20FBE02E600B8C62AE208B00BF
-:10F4A000226008BC03A020EB0022C10A180B250033
-:10F4B000D900B2C00F900B90047000000000000053
-:10F4C000E0019488FF003F010FD001F008DD013F0B
-:10F4D000420740035C00AF003F400FF800F000DF40
-:10F4E000003FC00FC023F450FD803FC00FD0037811
-:10F4F00000600000000000004000AC00D9003E4069
-:10F500000F9403A820CA403A400F9403EA08FB0076
-:10F510003A004CF6232C30CB0036C00D9003A102EC
-:10F52000D900BAC00F9803100420000000000000AA
-:10F53000C80524008A002E400B9502E0088880222E
-:10F54000708F8C02E000BF02200008B8020E00DFBE
-:10F550000023DD0898822A00898023C00B501A32CC
-:10F560000040000000000000E00544008305244145
-:10F57000091002CE0083902C801B2482CC00BB009B
-:10F580002C8008040804018B0022C02812026C8021
-:10F59000814824C40B100238005000000000000015
-:10F5A00020013E4286802D600B6802F6908D8021FE
-:10F5B000220B5802D740B79021E00849921E53977A
-:10F5C0008121E048C80A5222858825E00B580208AC
-:10F5D000004000000000000048080C00830034C018
-:10F5E0000F0003CE20C3307C940B3483CC14F30281
-:10F5F0003C800C04030460C300B0C00C1003EC009A
-:10F60000C9003CC40F1103120200000000000000FA
-:10F61000401D9C00EE013FC04FE103D440F5167A37
-:10F62000C04EF003F41037053DC00FC00BDC40FFA7
-:10F63000003BC20ED007BC02EF003BC60FD003D088
-:10F640000660000000000000A805F400DD8433809F
-:10F6500004F0036C02CB027EC01FA053EC00CB2051
-:10F6600034400CD00B2010EB001EE00F300B2C00B0
-:10F67000C10032C00F9103EA0070000000000000DA
-:10F6800048119C0087002180086000140085002D2F
-:10F69000800B7052D404832829C02850035000875F
-:10F6A0004025C80F60020400A7003DC80B5202D2DB
-:10F6B0000460000000000000C0008E00958021E082
-:10F6C0000938021E11A7802DF00B7852CE0A9795AB
-:10F6D00021E0195C020E00A78029C80BF8021E2049
-:10F6E0008D8021E00B5802F0002000000000000097
-:10F6F0004814CC0082E0A0E82930060E50AB802CE4
-:10F70000F00B3142CC00930028C40998024C2883A6
-:10F710000024C00AB0020D00A25828C00B1002D26B
-:10F720000430000000000000E815B900DE8031A0C0
-:10F7300009E20B7804EEA42FA48BEC02D800DA00C7
-:10F7400027810DEC061B00EA043E800BE0033B0022
-:10F75000CEC022800FA003FA046000000000000069
-:10F760004800E080F8103E050E8803E00898403E0F
-:10F77000000F8483E140E8003A020E8043E140F844
-:10F780000036000F8003E020F8003E000F8003D217
-:10F7900000300000000000000810C400E9003E40F6
-:10F7A0000C90030420E99032680E9803A400C10075
-:10F7B00030400C94832408C9003E400C9003A40000
-:10F7C000C90030500C1A0302043000000000000091
-:10F7D0008004640089402E5028900A240889061667
-:10F7E000610B9C02E420A90036400D90022760A91D
-:10F7F000002E4028901A24008900364028980220C4
-:10F80000001000000000000018052C00A9082EC2FE
-:10F810000910002400A9000640899606E600890028
-:10F8200022C00890022402890024400890020C069D
-:10F830008300224008900206004000000000000003
-:10F840000804050081442C500814020580812064BE
-:10F85000701B1402E480A120644019120A0480A1E4
-:10F86000002C5018140285008140244040100202F0
-:10F870000100000000000000B80D6000E0003C0046
-:10F880000D80020000AA5036000F8003E140C852EC
-:10F8900072140C05162008C8503E010C8003A00409
-:10F8A000C800B2000C800B2E0350000000000000C6
-:10F8B0009819F502FD403FD00FD423F444FD147F86
-:10F8C000500FD407F440F9103F5007D123F440F90A
-:10F8D000401E5007D00B7500FD023E500FD403E6CA
-:10F8E00006700000000000001805F600C9A83E726E
-:10F8F0000F9803E6C0FDA0B3400FD0037780CD90F2
-:10F900007F400FDAA31690A9C032604CB1032400E7
-:10F91000C100336A0BDA030600700000000000002B
-:10F920003810E34088E02E300B8D02F340B8E876C3
-:10F93000004F800A228088906E288F8A036144F8E5
-:10F94000E13E2A08880342A0DCA03E100B850A0E87
-:10F9500004300000000000000805C4A085082D4800
-:10F960001B5282D480B11420400B18020582810002
-:10F970006C420B12820400A16021500B50021490C3
-:10F98000952C28400B1002020170000000000000BE
-:10F990001815A4018D442F400BD402F404B9082299
-:10F9A000400A92022C8489002E400A14026C80A91D
-:10F9B000012A4009500A5C028D602A400B904206E1
-:10F9C0000460000000000000A015E662C9023E5479
-:10F9D0000F9003E400F94022460B98036720C90109
-:10F9E0002E690B940B2520A90022402D920A262275
-:10F9F00099002A408F900328047000000000000046
-:10FA000028018602F9003E400F9003E680F1A03EF7
-:10FA1000620F9883C620F9003E490F9083E400717D
-:10FA2000023E400E900BE680F9803E400F9003CAE4
-:10FA300000600000000000002810A010C8003E0078
-:10FA40004F8043B000C84132000F80032102C8023A
-:10FA50003E104C80030120C8003B000CC003B000E6
-:10FA6000CC0432000F80030A0420000000000000D4
-:10FA7000280528008A802E800BA002F8048E00231F
-:10FA8000B20EE082F9048A002E810CE00A3A80DA94
-:10FA90000022B608A00228008E002A800B600B0A04
-:10FAA00000400000000000002805440293812CC0A3
-:10FAB0004B3002C80083CA20E019B0068C008104D4
-:10FAC00044400834020D0083002A0008000A8040E8
-:10FAD000880020C00B30024B0050000000000000E6
-:10FAE000A001040297082DC00B6006CA00830921FB
-:10FAF000C00A7002DC0085312D680930021C1493A5
-:10FB00002020C008F0429C028F0029400370122878
-:10FB10000040000000000000A808160096843DA0E8
-:10FB20000F78039A028780B1E00B7803B600C5A076
-:10FB300035610C78131E02C78029000C4803900021
-:10FB4000C48031600F58036A02000000000000000A
-:10FB5000081DA400EA003E800FA003E808FB003E59
-:10FB6000800F9013E408F9003C502EF003E808FBE6
-:10FB7000403EC00B30136C00FB003E400F3003C210
-:10FB800006600000000000000005D600CD8033E0D4
-:10FB90000CF803FA00FD803FA00DF803FA40CDD029
-:10FBA000777E0CE8431E00CFD83FE00CC8033AC470
-:10FBB000CC8033E00CF8030000700000000000006F
-:10FBC000A81194028D0021C0086003D81035208B45
-:10FBD000D40D6403D8C085002F4E0764029C02D761
-:10FBE000302F040DF10B5440AF0035400870022A4D
-:10FBF0000060000000000000000094408418218094
-:10FC0000087002DA20B5000900087002D4048500EB
-:10FC10006D4C8960025C4097006DC00940025880BD
-:10FC20008488254008D00200002000000000000069
-:10FC30002014C6488000208008AC02A800B100A8AB
-:10FC400088092202864281006C520B2002C752832F
-:10FC5000002C000834826700A3802040083002088E
-:10FC60000430000000000000A815A300CBC0B24083
-:10FC70002C9082E600BB80BE78088E02EE008D00DC
-:10FC800027600D900A6F009F022E0009B403678061
-:10FC9000CA40E4C00C30032A0460000000000000E9
-:10FCA0008000E080FB223E400F8013E400FB803E9A
-:10FCB000400F9003E500F9003E400E7023AC20FB9E
-:10FCC000003EC08F8003E920F9083E400FB013E0EA
-:10FCD00000300000000000000110F000C6003200FB
-:10FCE0000FD1833440CF003D400CD003DE500D00D7
-:10FCF00073400CD1037C408702B3000DF403240051
-:10FD0000CE2032400CD00300443000000000000040
-:10FD1000810461228A0022000B8040250089C32EC5
-:10FD2000200A9803A100890036408894020F01AB95
-:10FD30000032C008040A2900A902A2400DB00A201E
-:10FD400040100000000000008005000089002261D2
-:10FD50000B900225019B882E60088802E800B10202
-:10FD600024401890022C00AB0120C108B4422C00A2
-:10FD7000820022C008B00220004000000000000005
-:10FD800008040000010020400B000A044683012CF7
-:10FD9000401A000680008100244008200A0C01A3BC
-:10FDA0000024000880020000A10020400930020267
-:10FDB0000100000000000000000D6002C8002200E9
-:10FDC0000F90022500DA003E400C9002CC00FD00AE
-:10FDD00037400C10132C02AF0032C00DB0032C00C2
-:10FDE000CA0032404C900B0001500000000000009F
-:10FDF000A01DF000FC003F0007C003F41CF4003F0E
-:10FE0000001FC023B0029D013F408FC007FC02FFCE
-:10FE1000007B000FC003F000FD003F400F7003E8BF
-:10FE20000670000000000000C005FA00CB803F24EF
-:10FE30000AC103FC24CD20370A0CC2833080DC02C7
-:10FE40003FCC0DD9033C58DF3033C80DF4233C4080
-:10FE5000FF003FC54FF023B000700000000000001D
-:10FE60008000EC020B822E080DB702FD0083180AF9
-:10FE7000580A84A2A5A089302255081262BD908F2D
-:10FE80006221D648F3023CC5BF482FD84BB702E0E9
-:10FE900004300000000000008805EC0083002E897B
-:10FEA000280002ECA08922288208120228409A0821
-:10FEB00028C888B20A0D109310A0C82830024C0040
-:10FEC000B3602CC40B30C2E20170000000000000DF
-:10FED000C015AC408B002E8008B102EC028B0020D4
-:10FEE000D00A9002AC000B0126400894028C008BD3
-:10FEF0000022C008B0022C10BB002EC00BB002F0D4
-:10FF0000046000000000000000148C20CB023E2D95
-:10FF1000088003EC08C9801E040CB00301085018C7
-:10FF20003E400C04032C00DB0132C00CB00B2C084B
-:10FF3000BB003EC00FB00380047000000000000052
-:10FF4000E100BC00FF003F600FC023EC00FFC0BE1B
-:10FF5000608FC923F650ED80B850AFC003FC00FF9E
-:10FF6000003FC10EB003FC04FF023FC00FF003F8D6
-:10FF700000600000000000004010AC00EB00328088
-:10FF80000D90032C0089003E988C30036180FA406C
-:10FF90003E402CA5032C00FB013CC02C30032C0060
-:10FFA000DB0232C00FB003D00420000000000000CC
-:10FFB000CA002E808B82A0C08C90023C008BF02265
-:10FFC000C20D800227008B1022400880223C00BF17
-:10FFD000002FC008F0023C00BF01A3C00BF012F2DA
-:10FFE0000040000000000000E0054C00B31C204071
-:10FFF0000800062C009B0020D00820024C00A30023
-:108010002CC008100A0C00BB0028C00930020C005C
-:10802000B30020C00B3002F8005000000000000038
-:1080300022111E0097A021A00879021E009790210E
-:108040006009E8223E00AF8421E4485C021E00B7CC
-:10805000902DE00978001E09B39021E40B7802D836
-:10806000004000000000000048182C40B3B032402F
-:108070002C81130C42D100B0C08C30034820E301A6
-:108080003CC00C30030C00F3103CC0CD320B0C4054
-:10809000D30030C00F3003D2020000000000000007
-:1080A0004015BC00E7003F800BF103FD006D00327E
-:1080B000401F7007D841C3103BC00FD103FD00FF24
-:1080C000103FC00EF003EC10FF083FC30FF003D0C9
-:1080D0000660000000000000A815EC04FB023E4012
-:1080E0000BA003AC00DB0036800DB003AC00E80051
-:1080F00036C12E90032C00CBA036DC0FB0032D68C8
-:10810000FBA092C20CB103EA007000000000000066
-:1081100048119C0837002DC00BE0021D80B70423D6
-:10812000000A40021C18840025C01850320D80A39C
-:108130003021CC0B34821C10B73021C8087002D219
-:108140000460000000000000C0009E20B7802D6089
-:108150000BFC229E008D8025A008F8229200B4809E
-:1081600025E008F8021E0087B021E0097A021E18F7
-:10817000B38021E0087802F0002000000000000039
-:108180004804C520B3012CD80B3C022C08B90020B0
-:10819000030A00822208900D26E40810020C00A3B6
-:1081A0000022C00B30026C00B30022C0283002C293
-:1081B0000430000000000000E8059900FA023F903A
-:1081C0000FEC23A800DA0035800DE002BA02FEC2EF
-:1081D000B6A00EE40B2800CA00B2800FA00B280046
-:1081E000FA0032800CA003FA0460000000000000D6
-:1081F0004800E000F8003E000F8203E000F8003E77
-:10820000000F8103E040E8103A004F8483E000F85B
-:10821000003A000F0003A000F8003E000F8003D2D8
-:1082200000300000000000000800E500C9023E40E8
-:108230000F90232400C90032682F10032400E91492
-:1082400032400D900B0400D9001E400C9003240016
-:10825000C90036400C90030204300000000000000A
-:108260008014640089012E404B9012240089C2A220
-:1082700060889003640089C1A240481603640289A3
-:10828000002E40089022240089003E4028900A20B9
-:1082900000100000000000001804240089022E4095
-:1082A0000B1002240089102240899002AC00A10822
-:1082B0002240099802A40089002A40089002240064
-:1082C000890026400810020600400000000000005F
-:1082D0000800240081002C410B120204818120221D
-:1082E00048081202C481812402480A900284A081B5
-:1082F000286C4A0812D204A181282C4A0812820252
-:108300000100000000000000B8086140C8002E1401
-:108310000F850B2142CA5022140D8543A140E8501D
-:1083200030000D8502A1C0D8203A082C820B208293
-:10833000C82034098C82032E035000000000000086
-:10834000980DFC02F9003F404FD103E440F514BF03
-:10835000440D51235C40F5101F4E4D50036408F945
-:10836000283E4A8F9283E4A0F9283A4B0F9283E685
-:1083700006700000000000000805F440FD003040D9
-:108380000C90032400DD003B400E900374005D0060
-:1083900036640DD000A600F94032780C99032440D1
-:1083A000C99032500F9B03060070000000000000CF
-:1083B0003810E280B800220108800A200088002AD4
-:1083C00000088002200088002220088A8BE100B883
-:1083D000802230280D022200D8E422280B8F0A0EBA
-:1083E00004300000000000000805C480B100A04077
-:1083F0000810020400890008400A904244009100DD
-:10840000205828900285008120A04C09120A04807F
-:108410009140A0400B10020201700000000000001B
-:108420001815A400B9022040089002040089012216
-:1084300040289022040089102240089002E400B1F4
-:108440000022408190020400910022400B9002061D
-:108450000460000000000000A015E500F10032609B
-:108460002C92132402D1103A400E12036604D90054
-:10847000B6400D1903A400F9003240099001240010
-:10848000D90222400F900328047000000000000071
-:108490002A01A500F9003E640F1003E400F9813EB3
-:1084A000668F9023E480F9043E408F9003E404F942
-:1084B000003C400E9003E400F9003E400F1003CA58
-:1084C00000600000000000002A10A000F8243E0018
-:1084D0002C84032000B8203E008C8003A000708212
-:1084E00032000F80032008F80032002C800B200897
-:1084F000C8003E000C8003CA0420000000000000F9
-:1085000028052804BE803A8008A00228048E006D49
-:10851000900DA0023A008E80A2800EE00B6800BA97
-:1085200000228008A0022800DA002E8008A002CADB
-:10853000004000000000000028814C00B1002CC069
-:108540000830020C18A3022C108830068281A0008B
-:108550002AC00B300A4C00B30020C01AB0028C01B4
-:1085600083002CC0083002CA005000000000000048
-:1085700020011C10B40A2BC80831261C0086002DCF
-:10858000C00972021D00A54029C00A60025C88B3C0
-:108590002025C80A72029C8097202CE8807202E88D
-:1085A000004000000000000028081600B5803DE2F1
-:1085B0000C7A8B0EC0A7812C200CFC039202EF805A
-:1085C00039E40BD8011F00F780B3F48E79038E00D5
-:1085D000C7C43DE82C7B03EA020000000000000055
-:1085E000081DAC00F8003EDD87B603EDCCE9003E87
-:1085F000400FB007CC100B0036D80F8043AD80FB86
-:10860000283AC00DB4036CE2EB603ED40FB003C255
-:1086100006600000000000004005FE00FE903FE5FF
-:108620000EF8033E10FF9017600FFC037A00EE80F7
-:1086300037E20E780FFF40EF881FE00CF883FE80D2
-:10864000CFD0B3F00CF8C3100070000000000000A1
-:10865000A8119C40B4100FCC0072021C00B6020995
-:10866000C028F0029800A60021C00B6003FC02871E
-:10867000002DC0087002DE008F1021C008F0036AD0
-:10868000046000000000000080009400B6022FC2C9
-:108690001A30801C00B60801400AF002180087005A
-:1086A00021C00BD0029C10870029C0087002DC4456
-:1086B000871064C00870020600200000000000005F
-:1086C0006014CE60B0002CC008340A0C08B004005E
-:1086D000400830A28980A26220E00B000ACC088307
-:1086E000006CC0083052CC00830024C0083002580F
-:1086F0000430000000000000A815AE00F8003FD0D4
-:108700000EFC033C00F90092840FFC03640080001F
-:10871000B7C30FB883BC04EF003FC03CF003FC02BA
-:10872000CF0037C028F0132A0460000000000000CA
-:108730008000EC00F8413EC80F3203EC00F8003A2C
-:10874000C40FB103C400F90036C00FE40BEC04FB06
-:10875000003EC10FB043EC04FB003AC00FB003E48D
-:1087600000300000000000000110F400FC803FC059
-:108770001FF0033C08FB0033802EF013A404CB0051
-:10878000B9C02CD80B3C00FF003FC00970002C047E
-:10879000FF003FC00FF003C00430000000000000E5
-:1087A000C1006C00B8802EC00BB0036C00B9162855
-:1087B0007208B0222740DB0022C008BD822C08BB13
-:1087C000002EC048B0022C00BB002EC10BB002E04E
-:1087D000401000000000000080052C00B8602EC092
-:1087E0000BB0022C00B1002A844A3022AC209880C1
-:1087F0002AC0083002AC003B002CC00AB002AC0812
-:10880000BB002EC00BB042E00040000000000000A2
-:1088100008040C01B0002CC00B30024C04B0002A3C
-:10882000800830020000100428C00820428C00B3E9
-:10883000002CC042300A8C00B3002CC08B3002C226
-:108840000100000000000000000D6400F8503FC06F
-:108850000BF0033C00FA0432800EF023AC00D90088
-:108860003BC00C9003BC04FF003DC02EF00B3C004D
-:10887000FF043FC00FF003C00350000000000000E1
-:10888000A01DFC00FC003FC007F003FC047C02B507
-:10889000000FF003F000FC0037C00FF0137C00FF66
-:1088A000003FC00DF0036D00FF003FC01FF003E864
-:1088B0000670000000000000C005D200D580330A19
-:1088C0004CF803F200FC0037261FCA03BCC4CF20BB
-:1088D00033E40F78033E44CF003BCE9F6813D000B3
-:1088E000CD80B3600FFA83F0047000000000000038
-:1088F0008010E080C928223008B222EA01B8822024
-:10890000504F9C00A8D1DB10A6E017B803EC80DB29
-:10891000081FD00BB802F600FB8022400BB00260AB
-:1089200004300000000000008805C4208180200081
-:108930008B3082C000B01028088B1130C48490287E
-:1089400024C80B30024C00831004C80B3002CC004A
-:10895000B30024400B3002E2017000000000000070
-:10896000C015A600810022100BB012EA20BB002A1D
-:10897000700A9C026200988826C802B2028E088B98
-:108980001822C00BA002EE203B0026400BB0027064
-:1089900004600000000000004015E000CB003280C1
-:1089A0000FB003E700B8523E204B0C43EF829BC050
-:1089B00032C00BB0026C018B802EC00BA083E6008E
-:1089C000FB0036400FF003D00470000000000000F0
-:1089D000E001B002FF043F900CF101F4087D803704
-:1089E000000FC0239800F7002BE00FF823FC06FBD4
-:1089F00083BFC087D003DC00EF003BC00FB001F89D
-:108A000000600000000000004010A600CB00338092
-:108A10000FB003E110F240B2003D94172D44FA412B
-:108A200032C09FB0232C02CB4032C04F90033D0098
-:108A3000CB003E400FB003100420000000000000F7
-:108A4000880526008B7120D5039902E000BB8022A7
-:108A5000601C80036000B80222C20B32022C018F1E
-:108A600002D7C00BA0036D4053802EC00EF043729E
-:108A70000040000000000000E005680280002400C3
-:108A80000B3526C200B09020C08800024F20B302F0
-:108A900060E21B38020C00880060C00B34824C027C
-:108AA000A1902C400B30023001500000000000006B
-:108AB00020013A088CA02D204B7802DA00B29021D8
-:108AC00066487902DE40B791A1E0DBF8021E4084DF
-:108AD0009001E08BF9025E0197802D600A780048D2
-:108AE000041000000000000048080C00800024046E
-:108AF0000F3203C4A0F14230C42C31024400F11102
-:108B0000A0C00B300B0C42830000C00F30034C029E
-:108B1000E3003C400B3001120200000000000000A6
-:108B2000C01DBC00FCA533C00FD003FC01BF003F3B
-:108B3000C40E7103740075103FC005F003DC40FFE4
-:108B4000043FC00FF043FC007F003F400EF003D015
-:108B50000460000000000000A804E800F204B380F4
-:108B60000FB80B2C00EB8032C00C20132E08CB0169
-:108B700032C50FB103EC48C81032FA8C38033C9070
-:108B8000CB003E400FB013C2047000000000000094
-:108B9000C8109800F60061810BF0021C00D700B7E6
-:108BA000800C7002BC108F0021C88B7243FC88DCE3
-:108BB0000037C80D50021C2287002DC00B7002D355
-:108BC000046000000000000080009E00B680A9A0A4
-:108BD0004B7C025E30A38821F00878021600858065
-:108BE00021E00B7802DE008780A1E408D8024E0065
-:108BF00097802D700B7802C8002000000000000054
-:108C00004814EC00B20028C00B10024E90930222D0
-:108C1000F00838428C42830422E44B38028E4083B1
-:108C20000020C00938224E2193002EE00B3002DBD9
-:108C30000430000000000000E815A801FA003B899C
-:108C40000FA0027808AE4023802C6C0B3A008E8C6B
-:108C5000B2000B8082E0028E0022800CE8027B8052
-:108C60009A803E800FA003FA04700000000000000C
-:108C70004800E009EC0036210B8013A100F8603EAB
-:108C8000000F8103E000F8003E000F8043E010F881
-:108C900000BE000F850B8000E8103E000F8003D25D
-:108CA00000600000000000000810E402C902304823
-:108CB0000C9913A402C9003E420C908F2400F900C5
-:108CC00032280C8803E000C900B2400F9003E7008F
-:108CD000C9103E400C1003020420000000000000F8
-:108CE000800464018980A248289242C50089402EF0
-:108CF000402C90062500B9002250089802C4008933
-:108D00000176404B9202E50289002E400D900360EF
-:108D100000100000000000001805240C8520A2406F
-:108D2000089006E50089402E40099042A4A0310039
-:108D30002250189102E400810022400B9006E400CA
-:108D400089002E400990020E004000000000000043
-:108D50000004150085402040081426E40081002C02
-:108D6000401810028480B120A050081402E502814E
-:108D70004020480B1006CC0081012C500914024AF7
-:108D80000500000000000000B80D60008C003200FB
-:108D90000C8023E000C8003E140D8012A144F8515D
-:108DA00032002C8003E000880422140F8007E000CA
-:108DB000C8003E000D80032E03500000000000009C
-:108DC000989DE400F9003F500FD003DC01BD423F05
-:108DD000504FD4437441FD103F101FC413F100FDE8
-:108DE000407E440FD043F501FD003F400F9403E661
-:108DF00004700000000000001805F400DF05336176
-:108E00000F50533410FD0433444F500376C1CDE06E
-:108E100033600CCE03F6C0E1C0B6648F500B3682CF
-:108E2000CD003E444C9EC3C601700000000000000F
-:108E30003810EA2880A0B2040B8A836000FA00365A
-:108E4000288B8003E3C8C8842214088A02E280D8F1
-:108E50008234341B8003600488002E200A8E42CEA8
-:108E600006300000000000004805C480810804416D
-:108E70000B92020400B1002C400B18022400B160D8
-:108E800026400A1602C500A1C020480B90024700E8
-:108E900091012C48181202D201600000000000006D
-:108EA0001815A40C8B04A2500B91022404A9012EC6
-:108EB000420B9002A400A90026600A9002E60081FD
-:108EC0000022408BB002240899102E401A9002C64E
-:108ED0000020000000000000A015E500C900364099
-:108EE0000F10022500B1002E600F10122402B9A04D
-:108EF000A4402E9103E600A90022400B19806404CF
-:108F0000D9812E404C9003E814700000000000004E
-:108F10006801A40AE900BE480F980BE400F9C436C2
-:108F2000701F9203E690C1903A408D8803E400F9E7
-:108F3000903E400B9803E640E9003E400F9003D27C
-:108F400000600000000000006810A102D820B210EC
-:108F50000C80832140C858B2104C800B2000F8428E
-:108F600032000F8003E002D80072001C8000200055
-:108F7000F8043E000F8003020420000000000000FF
-:108F800028053804CE41238008E0023910AE402283
-:108F90008008E0021A00BA002BAD038002E800CA84
-:108FA000002A800AE0021800BA001A800BA0034AC7
-:108FB000004000000000000068056C128900A0E07D
-:108FC0000838020D88830004E00838320E2531018C
-:108FD00024E08B3802E401830020C00830028C00BA
-:108FE000B3002EC00B30020A005000000000000049
-:108FF000A0011420862029B008F0823E04A7002199
-:10900000708870921C20BD0069C00B7602D4808FDE
-:109010002129E00A60869801B7002DC80B3B026049
-:109020000440000000000000A8083E00C7A0B0E017
-:109030002C780B1A00C38037E02878031A08F590C3
-:1090400035E00F7C12D682C79021E40878039E0099
-:10905000F5803DF10F7803220200000000000000BF
-:109060000819A400EE8036C14FD003C800FB003EB3
-:10907000510FB003E408F1603EC00FB003C500EB30
-:10908000103EC00FB0096C00FB003AC00FB003C225
-:1090900004600000000000000001FE00FD88336055
-:1090A0000FF903CE40D78437700CD8233600C5881B
-:1090B00033E04FF813F728DF8037E20C58033E0007
-:1090C000FF903FE00CF803000020000000000000CB
-:1090D000A9119C08F600A1000B6302D6308541312E
-:1090E000C80850231C00D520B1800F7003B400C7FE
-:1090F0000021C00F40A35840B7003FC40AF0022A25
-:10910000062000000000000000009C40B71021D2A3
-:109110000B7002DC42860025610851025000950068
-:1091200025C0097082D400870024C00850025C006A
-:1091300095042DC00870020000200000000000000F
-:109140002014CC08B2D020E04B0802C4008080205C
-:10915000F0081A028548811020400A3002C6109398
-:109160000020C00A1C020D40B30068C40AB0020906
-:109170000030000000000000A815AC01FE0032F035
-:109180000F8803E600C8C836F628A60A6D009D00C1
-:1091900032000BB003F603C70037C0089C0A6E000C
-:1091A000BB002FC00CF0032A046000000000000088
-:1091B0008000E401EB403E804FC103E400B8083A70
-:1091C000408FA4136C20F9003E700FB003A440EB55
-:1091D000003EC00F9223E800F9803EC00FB063E06C
-:1091E00000300000000000000110FC08CE0833C071
-:1091F0000FDA033000E40435C00DA0032800C500D9
-:1092000033000BFA03F403CB0031C00CD403142059
-:10921000CD8023C10CF002084430000000000000A3
-:1092200081044410CBD022C00B94022284B8C60221
-:1092300040082802A580890022600BB80264008BD8
-:10924000002AC0C800036600810000C00DB00AA853
-:10925000401000000000000080052C001300224098
-:109260008B24022A00BB82224000AC0284008900C9
-:1092700022220BB002C4009B002AC008B0022E00BC
-:109280008B102AC008B002A01040000000000000AF
-:1092900008040C10830020010B20020080B1002084
-:1092A000C108200288018100A0000B300244019B0C
-:1092B0000028C008B002480689002AC0093002828E
-:1092C0000500000000000000008D6C00C300B2C06B
-:1092D0000FB0032820FA00B1400DA007A000CD0078
-:1092E00022000FB003F4009F003BC02CB00B240001
-:1092F000C900BAC00CB00380035000000000000099
-:10930000A01DFC06FF02AFC00FC003F010FC003F21
-:10931000C09FE013F000FD043F404FF0037400EFE6
-:10932000003FC08FE002B401FD0437C00FF0436876
-:109330000470000000000000C005FC00C720B3C896
-:109340001CF1037C20CF0A3FD00DF0037C808F32CC
-:1093500033C40FF1833CE0CF1033C40DF2833CE201
-:10936000C78017CC4CF38330007000000000000071
-:109370008010E3408868223008060201A188C40EEC
-:109380001408878001C0285002048B8602A19888A7
-:10939000412A040A8482BD808B082BC488F40360B0
-:1093A00004300000000000008805CC088240201036
-:1093B000082112440482042C0889900244218B0065
-:1093C00024888BA00040848930224888B002CC08D1
-:1093D0008820A4C800320A220170000000000000AA
-:1093E000C015A000890022C1889062280889082E33
-:1093F000C008A0022808A80026420B9002CC508A80
-:10940000222A860A8002EC0088842AC108B026300D
-:1094100004600000000000004015F002CF0033C0DF
-:1094200048F84379008DC03F308D60837860C45820
-:1094300037200F58137B02CCC431200C4403EC02BC
-:109440008B8036C024B012100470000000000000B1
-:10945000E0019C00F4103D006FC913D412FE903F50
-:10946000F00FDA23F414FF023BF00FEA23B600FFFB
-:10947000823FE18FF403BC00FF003FC0AF7003F8F0
-:1094800000600000000000004010A000CA00320888
-:109490001CA003A520CB40BA101FB003AC00EB000A
-:1094A00072900CB4032904C95232500CB4030C005E
-:1094B000F84032C10EB00B50042000000000000044
-:1094C000C8052D80898022D90890222A008854223C
-:1094D000C08B80222019C80022408D801A2410D20F
-:1094E0004422810D80037C00B00037C088F0023236
-:1094F0001040000000000000E0054E008100A0F0D8
-:109500000890028902800022C00B0022A000B00057
-:1095100020400800020400826020800800020C083D
-:10952000B20022C0083002380050000000000000E5
-:10953000200103108E902324086B0216608F802177
-:10954000280BF9061E408F8023A44979023A409DDA
-:1095500090236409F8025E40BE9024E42879020852
-:10956000004000000000000048080C42C009300024
-:1095700028020384008A2030C48B11038450B30076
-:1095800020C00CA4220400CB4030C50C30030E4098
-:10959000F31030C40CB00312020000000000000001
-:1095A000401DB004FB043DC00FF243F804FD013F31
-:1095B0000C0F6103F848F4003D010FD003C800FC14
-:1095C00004BD040B4803FC18FF143FD50DF00390B5
-:1095D0000660000000000000A805E000F90132C0AC
-:1095E0008E90032802D10032C00DA80B0800E800BD
-:1095F0002E400C980B2E02CA00B2A06C80232D8046
-:10960000CA8032D00CBA032A0070000000000000AB
-:1096100048119C00B600A3000860020400860429DB
-:10962000000850421404A7000D804A600200008127
-:109630000021400870029D42860120C0083282123B
-:109640000460000000000000C0009200BC806320A5
-:10965000820802520084C22320880C0233008480D6
-:109660002F21894C02121494C56421084C020E80EB
-:109670009782A1EC08790230002000000000000071
-:109680004814CD44B30020C00830024D8003882820
-:10969000C0083C060F00A3432CC21B38020F009BDE
-:1096A0008864D008B8028C10930020C008300A12D9
-:1096B0000430000000000000E815AA00FA0532801E
-:1096C0008EA00B6900CA4032A03CA8032A00EA26FB
-:1096D0003EB00DA1632820CA4036A00CE013280933
-:1096E000DE0032802CA0033A04600000000000007D
-:1096F0004800F020F4003F000F4023B000EC003F92
-:10970000061EC213F088FC203F048EC003F080ECDC
-:10971000403B0C0FC0A3E000E8003E004F8003D2A6
-:1097200000300000000000000810E400F9003240A2
-:109730000C90032400C98032400F9053E410C900FC
-:1097400032400D9003E400F90036408F900324105E
-:10975000C9013C400C9003C204300000000000002E
-:109760008004474489002040089002250A81102285
-:1097700040489003C40089007640289002E410B964
-:1097800040B2400B9003640089002E41089042E0F3
-:10979000001000000000000018052402BD0023484E
-:1097A00008D0061D048D0029C04AD022F40085008F
-:1097B000614018D012FC00BD40A3404BF0020401F0
-:1097C0008B002E40089002C6004000000000000000
-:1097D000080436808520A34808520A148185202970
-:1097E00048085202B48085202548885202D480B5AA
-:1097F0002021480B520244A281002C4A081282C246
-:109800000100000000000000B80D6000F8512200C7
-:109810002C85022148C800BA140F8512E142C850B5
-:1098200022000C0003E000F85032000745032080BE
-:10983000C0013E082C8203EE03500000000000002F
-:10984000980DE440F1103E44079143E458F9113477
-:10985000444F9102E450F9103C4F0F9383E4F0F928
-:10986000113A4F0F9103E4A0FD283E4A0F9283E680
-:1098700006700000000000001805F6A0CDA0B36837
-:109880008C9A033680C5A022600C9A232604F9A086
-:1098900032660C9A830620C5A022600C9B032648E2
-:1098A000C9003E780C9A030600700000000000001A
-:1098B0003800E10088442295088512A142884002C0
-:1098C0009008840223A0BA4022A0088E92A3A0A8E8
-:1098D000402A1008AE02234088002E380884120E59
-:1098E00004300000000000000815C4008B12224064
-:1098F00008900244008140A05008110A0500B110F0
-:10990000A04808900204008140205028110244829F
-:1099100081002C50081102020170000000000000BC
-:109920001815A40289402240089412A50089282213
-:10993000490894022448B9142240089402A440A182
-:10994000502A50089142640089402E4008100206B7
-:109950000460000000000000A015E400C9003070A1
-:109960002C100B6600C94032500C90032620F9C021
-:1099700032700C90032620C90032400C9C03640016
-:10998000C9413E402C900B280470000000000000EC
-:109990002801A400F9043E480F9003E488F900343C
-:1099A000412F9C03E410F9003E442F9903E410F981
-:1099B000003E500F104BA410F9203C400F90034A7A
-:1099C00000600000000000002810A000C8003E1049
-:1099D0002C80032002C04032001C040F2100C00470
-:1099E00038000F80032108C86030100F800220006B
-:1099F000F80032000C8003CA0420000000000000C0
-:109A000028051A2082042F8008A00238008E8022A8
-:109A10008008E00228008A0022810B20022800DE54
-:109A2000E436800BA0422800BA04228008A002CAB3
-:109A3000004000000000000028054C0083012C803D
-:109A40000830022E608290A0C04830020C028300D1
-:109A500028C00B300A2C0083C220C00B302A2C00F7
-:109A6000B300A0C0083002CA00500000000000008F
-:109A7000A0013C0087012DC208F3123C008F012198
-:109A8000C86872221E04872021C40B70023C849F88
-:109A90000025C44B70021C04B78121C8087202E87B
-:109AA0000040000000000000A8001E00C7813CA08C
-:109AB0004C7A0B1A00C68030E008F8820E40CFF0D6
-:109AC00039E80F3A031E20C78031E30F38231F08FF
-:109AD000FFC033F20C7E03EA020000000000000029
-:109AE0000815880A7B003EC10B3423C810FB023ED8
-:109AF000CA0FB743EC80FB002EC20BB483EDD0FA43
-:109B0000003ED90FB383EC80BB203ED82FB403C2F4
-:109B100006600000000000000005FE00F59131A085
-:109B20000CFC03FE00C48131EE8DF80A3E30CF8478
-:109B300033E02CF883FE10FE8033E00CF9193F4827
-:109B4000CFC033E004FC03C0007000000000000040
-:109B5000A8119C08B7A121C8087102F0A085202196
-:109B6000CE0870023C808F002BC5087102DC10B457
-:109B70000021C10AF3820C00870129C00871026A22
-:109B8000046000000000000000009D00BD2127824D
-:109B9000007002FC048C00A7CCA870023C08AF0047
-:109BA00021C0087002DC00B70021C40870161C0A2E
-:109BB0008F0021C0087002C00020000000000000DB
-:109BC0002010C800BB4424E208B102C280018024F6
-:109BD000D08830020F52839128E4883D02CED0B065
-:109BE000B2A2C00A34120C02830028C00830024816
-:109BF0000430000000000000A815AC00FB01E440A8
-:109C00002CF043E5008A8837E000FA023D00EF00BF
-:109C100033D10CF403FD00F94033E80CFC013C04A3
-:109C2000CF0233C02CF003EA046000000000000003
-:109C30008000EE08F9103AD00FB093EC00FB0B3A1D
-:109C4000C08EB083EC80FB097EC80FB213EC00F924
-:109C5000003EC28FB24BCC04FB003EC00FB003608D
-:109C600000300000000000000110FC00FF0833C0BD
-:109C70001CF0037040C4C033C20FF0031C10C700B7
-:109C800031C00C70031C00C54133C00CF0232C0004
-:109C9000CF00B3C06CF0038044300000000000002F
-:109CA00081046A00B99032F108B0020A10D900228A
-:109CB000C10BB0022C00CB0622C088B0122C008849
-:109CC0008022C10DB0022C00830022C108B046E002
-:109CD000401000000000000080012E00B90022F0BA
-:109CE00008B01264008A0022C00B30422C008B00A6
-:109CF00022C008B0022C008A0022C088300A2C0042
-:109D00008B0020C008B002E000400000000000000E
-:109D100008040C04B102E4C108B022200293002020
-:109D2000C00B30120C028302A0C028300E0C02803F
-:109D300000A0C049300A0C028B0020C0083002C2CB
-:109D40000100000000000000000D6C00F92432C08A
-:109D500008F0036400C800B3C01FF00B3C008F0084
-:109D600033C04CF0433C08C30031C00CF0033D4805
-:109D7000CF0031C00CF00380035000000000000051
-:109D8000A01DF004F9413BC04FF003F011FD003F6E
-:109D9000C0877027FC00EF063FC00FF002FC08FCF4
-:109DA000003FC047F043FC0077003FC00FF003E8DE
-:109DB0000670000000000000C005D200C701370C8B
-:109DC0000FE823104AC4C031300CC9033446CF1009
-:109DD00033D00CF4033C58CF0033C02DF1033E02C6
-:109DE000CF213FE40FF203300070000000000000BC
-:109DF0008010E4840B40224C0BA8022CC08B202244
-:109E0000C84A32022480832020C008300220008B00
-:109E10002132CA4832022C308F902E880BBD12207E
-:109E200004300000000000008805CE20A340E04878
-:109E30004B20220C0282002A00082002048080208D
-:109E400020C80802020C00800C60000820122C8838
-:109E500083002CE80B30026201700000000000005B
-:109E6000C015AE00AB01A2600BA002200181002250
-:109E7000C00A901204208A0822C108A00228008883
-:109E800000244408A202AC008B042E8803B00270A8
-:109E900004600000000000004015EC00EA90322849
-:109EA0000FB6032008C9043AC04C90222400CB40CE
-:109EB00032A80CB2032C00CB80B2E00CB00B040033
-:109EC000CB003EC04FB00B500470000000000000FB
-:109ED000E001BC00DF803B810FF0C3FC00BE011F2E
-:109EE000000FE023F400FF003FB04FF043D402FF27
-:109EF000913AE04EF0037C0CFF002F800F3003B846
-:109F000000600000000000004010AC01CA00725068
-:109F100004B4032C82CB0032E00CB8032704C8C879
-:109F2000B2A20C88032C00C1003E002C301B2C0474
-:109F3000FB103EC00FB00310042000000000000022
-:109F4000C8052C040350A2E00834423300880020E6
-:109F5000100D840325008A40229008A5022C008958
-:109F6000A43A4008B0022C00BF842E800BF052327D
-:109F70000040000000000000E0056C808180248823
-:109F8000893C2621009000200208808200209B004E
-:109F9000224088B0120C0883802CC00810020C00EC
-:109FA000B3802C400B30023800500000000000004D
-:109FB00020013E0A85A0A56008FB823E849F816344
-:109FC000E089791252809782216C187802120087FA
-:109FD000A129E0085B021E00B7C02D600B780208C3
-:109FE000004000000000000048080C00810826C264
-:109FF0002C32130EA4D200B0001C21122402D12056
-:10A0000030C80C10030C00C2103C800C23030C4021
-:10A01000F3003C480F300B1202000000000000006B
-:10A02000401DBC00FD20BB40077202F010ED103F48
-:10A03000C40FD163B480EF003FC80FF003D800FE17
-:10A04000343FC40FEB43FC00FF087F400FF183D087
-:10A050000660000000000000A805EC00C800338086
-:10A060008F28032000490232C00F90032000CB004C
-:10A0700032404CB00B2C00CB8032C00E9E0324002B
-:10A08000FB203EC00FB0032A00700000000000005B
-:10A0900048119C008D0121C00B60021D00D60021DB
-:10A0A000000BE00200008304204008704234028765
-:10A0B0000123C028510A1C04B7302DC00B72039233
-:10A0C0000460000000000000C0009E00A64021A027
-:10A0D0000B68020E008F8021E00B78021610A5801D
-:10A0E00021E00818021E00838021A00878021F00CA
-:10A0F000B7802DE00B380230002000000000000087
-:10A100004814EC12A16420E60B20020010904A20B3
-:10A11000204B00420400830020C20830028C0083E0
-:10A120000420C00830020E00B3002CE04B30029235
-:10A130000430000000000000E815B800EEC03390C5
-:10A140000FA01B0800CA40B2820FA00B2802CA0051
-:10A15000B290ACA0032900CA40B2808EA4032A00AA
-:10A16000FA003FA80FA00B3A0460000000000000B6
-:10A170004800E20290003E000F8803F100FC023F1D
-:10A18000200FC803C100F0003E008F00016002F8FC
-:10A19000083E000F8083E000F8002E008F801392AD
-:10A1A00000300000000000000810E402C900B264A2
-:10A1B0000F9103E404C90032406C90032502C9905A
-:10A1C000B0400C90032420C9A03E404C9023E400F2
-:10A1D000F10092400C100302043000000000000067
-:10A1E000800464008980A2400B9642E50489002225
-:10A1F00040089002240809412240489042240489E2
-:10A20000802640089002E400B90022400894022011
-:10A2100000100000000000001805250089202240E1
-:10A220000B9002F4848500214048500224208D08C0
-:10A23000234008D00294008D0029400AD002A408CF
-:10A24000B90028401890C20600400000000000003D
-:10A2500008040500810020510B1002F58085C1A182
-:10A260005008540A050685402150885402950085FF
-:10A27000442D502A5412C501B100085008100202A2
-:10A280000100000000000000B80D6000CA503280DC
-:10A290000F8003E802C80132002CC0032000C8026E
-:10A2A00032002C800BA000C8003A004E4023A008CA
-:10A2B000F8003A002C800B2E035000000000000034
-:10A2C000981DDC04FD403F504F9063E440F1023E96
-:10A2D000410F9013F504F9413E500F94436502F984
-:10A2E0004136504D9403F400F94137404F9403E652
-:10A2F00006700000000000001801FC00CDA83370BB
-:10A300000FD013F688CD0032504F142307A0C9C0D8
-:10A3100032780C9E033702CDC032640F98032400BC
-:10A32000CD0032402CDA030600700000000000006F
-:10A330003810E20888EB22300B8012E804A0A02A33
-:10A34000200B8A0A23008880222800C842238080AC
-:10A35000D420280980022294A8002A008885020EB1
-:10A3600004300000000000000805C4A0830024D8C9
-:10A370008B1002E514890A21480B52025480854053
-:10A3800025580956024502812020500B1402043042
-:10A39000810020400810024201700000000000000F
-:10A3A0001815A4128900A6400B9042E498A9802BAE
-:10A3B000400B510255009D08274809F602440081D0
-:10A3C00004224019918A2480A9002A40089002465C
-:10A3D0000460000000000000A015E702C904365820
-:10A3E0000F9003C500C90032400F90136402C900EA
-:10A3F00036402D900B6604C9E0B2488F9847240080
-:10A40000C90072400C1003680470000000000000D6
-:10A410002801A508F9213A400F9003E604F9003E0F
-:10A42000404F9883A400E940BA600E9003A480F9DD
-:10A43000A33E480F980BE400F9001E400F90038ADA
-:10A4400000600000000000002810A248C820320868
-:10A450001F8083E122C80133002CC0033004CC40AC
-:10A46000B1000C44032012C84132002D840B60005F
-:10A47000F800B2004C800B0A04200000000000002D
-:10A4800028053A00A600239003E492F800820036E3
-:10A490008008A0036800CA00228308A00228038A5B
-:10A4A00000228008A0022800B68022800DE8020A5F
-:10A4B000004000000000000028056E00824220C01D
-:10A4C0000B3402CD09800020000800020002980031
-:10A4D000202028000A0410818020C008B0022C002F
-:10A4E000B30022C01831020A005000000000000032
-:10A4F000A0013802A30021401B7002DC2084056506
-:10A50000E008F0027C10970024C0083002548887CD
-:10A510000921E80933021C80B60863C809381228EB
-:10A520000040000000000000A8081E00C7A0A1E035
-:10A530000B7803FE00C58233200C48031E01DF8028
-:10A5400031200C48030640878231F80D7B035F0001
-:10A55000F38031F20C60032A0200000000000000CA
-:10A56000081D9C00FB012F4007B003E804F9003EE2
-:10A57000C10FB003E006E8023AC00FB001A410F921
-:10A5800040BED006B003EE00FA003CD80FA003C2D4
-:10A5900006600000000000000005F600CF8833646C
-:10A5A0002CF803FE02C4B033208CD8033200CCB4A4
-:10A5B00033A00CC8031620CFC033F00CF803FE0004
-:10A5C000CD803FE00FD803000070000000000000C5
-:10A5D000A811B5048712A1500A7412C44084112333
-:10A5E000C028E0021C02A711215848700A14008DEF
-:10A5F0000023C00B7002FC4086002DC00B50022AC5
-:10A600000460000000000000000095008740210069
-:10A61000187102DC009528E1020850023C42A72292
-:10A62000218088410214008500A1C0097102DC006C
-:10A63000B5102DC00B4002000020000000000000FB
-:10A640002014C41083842011083002C310912020EC
-:10A65000C00828120000A08420400830020426838D
-:10A660000020D00B3002CC00B2002CC00B0002083E
-:10A670000430000000000000A815AD00CF88B2E84B
-:10A680000C3013CEC2D08232000C0E0B2000C888D2
-:10A69000B2402CBA433702CB00B3C02CF003FC12FB
-:10A6A000FB007FD10F300B2B046000000000000086
-:10A6B0008000ED02F1403E410FB023ED00E8013E85
-:10A6C000C80FB013EC04DB003C800F0403E440F936
-:10A6D000003CC20EB003EE004B413EC00FB003E0A1
-:10A6E00000300000000000000110FC004B0032426E
-:10A6F0000CF0033680CD0033004CC0833C04F700DF
-:10A7000032400CB1431400CD8033C00CF003FC0088
-:10A71000FF00B3C20CA003004430000000000000A2
-:10A7200081044F028B80203008BC02201089002257
-:10A73000C000B0036004B800A290288C1A24028BD9
-:10A740008322C108B002FC00B36020C00DA003E06A
-:10A75000401000000000000080052E00ABC0226009
-:10A7600008B8022900880120000890022000B800E3
-:10A7700022C008B002E4008124A2C009B046EC0067
-:10A78000B90022C008900220004000000000000034
-:10A7900008042C00A100A04108B00A205388002022
-:10A7A000C028A0024C00B30020008800028400836F
-:10A7B0000420C0283002CC00B30262C0091002C2DB
-:10A7C0000100000000000000000D6C00E900220004
-:10A7D0000CB0030004C900B2000C90032C00F3007D
-:10A7E000B2C08CB003B4028F0023C004F003EC08A5
-:10A7F000F90033C00C80030003500000000000008B
-:10A80000A01DFC10DD043F000FC023F090FD002FC1
-:10A81000C00FE043D000FC003F008FC0227400FD59
-:10A82000043FC00FF003FC00FF063FC00FC043E829
-:10A830000670000000000000C005FC80EF2011C081
-:10A840000E7203BDB0CF31BFCC02F003FCC6CF0106
-:10A850000BC50FF1033C04EF6133D807F0033480DC
-:10A86000CD3073CC0FE80330007000000000000012
-:10A870008018E90088692210088C00218488412210
-:10A88000108886920100886222104B870221A088DE
-:10A890006020100B86A235A0AB60A1C40BB80220CB
-:10A8A00004300000000000008805CDA8334120C618
-:10A8B0004A31008C10933328CC2934128C50931CCD
-:10A8C000288401204A4C41831024CC4B31424C4017
-:10A8D000911024C00B8002220170000000000000D3
-:10A8E000C005A820900222000880002030B8082669
-:10A8F0000001808220201808424003910260000875
-:10A9000001A6000B80006C10BB0126C04B900A30E2
-:10A9100004600000000000000011FD00FD4133A1B3
-:10A920000ED203B502DF423B010FD443B500CD4048
-:10A930001BC40D78037002EC0017A10FE80B2C026A
-:10A94000D99026C00FAC0300047000000000000086
-:10A95000E001B800EE001F644FE003D810C41833C4
-:10A96000C00CA0A1B809E60936220F8823BC00FB61
-:10A97000003B640FD9039C00E3043BC00FF403F8D1
-:10A98000006000000000000040108D00C940B6804B
-:10A990000F1003A720FB50B6084C14036522D940C2
-:10A9A000B6800EA00B0000D800768228A023640099
-:10A9B000C90412C08E800390042000000000000033
-:10A9C000C8052B608A09205008A023E900B8C022DE
-:10A9D000F008AC0228048AC222500890062C008B92
-:10A9E000042251089402E4048B0437C0081842265C
-:10A9F0000040000000000000C0044B0082C8244357
-:10AA00000B260A8800B08022E40B20426900A29045
-:10AA10002840E810020C00BB002850889082C40136
-:10AA2000830020C00A1002BA00500000000000009D
-:10AA300020104E80810021A8085802D601B79068E6
-:10AA4000200359825600A5842DA2186922020034E1
-:10AA50008029A8086806C614858225E00858821C4B
-:10AA6000004000000000000048084800C2F03440E8
-:10AA70000F20038880F81030C027210B4880EA207F
-:10AA800038000C00120C087300B8400C12234C0262
-:10AA9000433430C00E110392020000000000000099
-:10AAA0004015AC90F9012E884B90116400FB1032D8
-:10AAB00000009103A400C90032C44DB043E004C8B3
-:10AAC0000036890FA803ED00F9143EC00F1043D0E3
-:10AAD00006600000000000000805E800C8003A0019
-:10AAE0000C0053A000E80132010E80532010C80072
-:10AAF0003A400C90032010E804B6008480032D1225
-:10AB0000CB002ECA049003EA007000000000000091
-:10AB10004C198C00870221C00870020C00830021B0
-:10AB2000C00830624C048300218048E0123C00875A
-:10AB30000021C00870021C00850124D00A5002F2D6
-:10AB4000046000000000000020009A00808028209F
-:10AB5000084C22D200A48024300B4802520084C04A
-:10AB600021200948681300A48060200908025600CB
-:10AB700097802DE0885802E01020000000000000BF
-:10AB80006C04CC00838020D80830024C4083002421
-:10AB9000D109B9424E00830020C18930420C0083A4
-:10ABA000F0A0D9193622660691000CC10A1002C223
-:10ABB0000430000000000000E815E802CAA52A9150
-:10ABC00028A803EA02AA00B6A00FA00A2A92CA8304
-:10ABD000BA8029A0032B00EA4066902DE40B6A801E
-:10ABE000DA003E800CE003FA046000000000000080
-:10ABF00048018000FC003D000FC003B014FC003B86
-:10AC0000120EC043B114FC003D000EC003F020F44E
-:10AC10000031000E4413A000E80636004F8013D226
-:10AC200000300000000000000810A400D1003660D1
-:10AC30001C180B4600D98030402C98058600C18036
-:10AC400092400D10034402890032700C98012400D8
-:10AC5000C90430400C9003C2043000000000000022
-:10AC60008004640089002240089402248089012223
-:10AC7000404891022400D990224108901224108962
-:10AC800000324008951224028100A2410D9042E05A
-:10AC90000010000000000000380524029D0023443D
-:10ACA00008D2067480B52023401AD00635908D0254
-:10ACB0002F4419D00274008D00634018D402A411EF
-:10ACC0008900224008B002C60040000000000000D9
-:10ACD00028140480852021680852021480A520A130
-:10ACE000480A7238148095242D4828520214808511
-:10ACF00020214808520684808120204A091002C27F
-:10AD00000100000000000000380D6140D850B2146E
-:10AD100028A0036140F85032944E85042142C85067
-:10AD20003C140D800361408850B2142CC509A14029
-:10AD3000C850321C0C8003EE0350000000000000DD
-:10AD40009815E440F9103A440F9103E440D9143EB9
-:10AD5000440D91436440E91032440793C3E450D159
-:10AD6000107E440391015444FD143E400FD003E68D
-:10AD700006700000000000001805F680DDA03368B2
-:10AD80001EDA033690CDA03B680AD823760CED80FE
-:10AD90002B620B9902A780F9E137680CDA03278050
-:10ADA000C9A222684C5003C60070000000000000D9
-:10ADB0003818E1408850221408802260008804225C
-:10ADC0000008042601008850221008AF02230088E2
-:10ADD000C0A0108884022380A0402A100880124E50
-:10ADE0000430000000000000480084008101204081
-:10ADF0000A1402450081412C500B14020504A100E5
-:10AE000028408210028440A132805009140204C4F8
-:10AE100091106444281002D201700000000000006C
-:10AE20001804AC02810022C1089002440289022663
-:10AE30004109900A240C8904225008902624008994
-:10AE40000022410910222440B9012E4008900246F8
-:10AE50000460000000000000A015E41089003240EA
-:10AE60000A900B241089001E409B90022410290098
-:10AE70001A400E9441A4002900124005904126007A
-:10AE8000D90024400C9003E804700000000000008A
-:10AE90004801A402A900BC400F9003A404F9003AA1
-:10AEA000410E90838400F9003C400E9002C408E9F2
-:10AEB000003A402E900BE600E1043A400F92035A0C
-:10AEC00000600000000000000810A020D80036023A
-:10AED0000E00A3E018C00030030F803320004000B4
-:10AEE000320D0F040BA002C80232028C8203200232
-:10AEF000C80416004E80010A042000000000000073
-:10AF000028053B008ED8238008E002F8808E1023AD
-:10AF1000A20BE0827A208E3023A10BE00228008E63
-:10AF2000002B8808E44238008E04238008A0020A1F
-:10AF3000004000000000000028056F4093C6244038
-:10AF40000A3802CC008301ACF00BB4024C04A3809D
-:10AF500028D04B30024C00AB042AC02A300AAC1077
-:10AF6000930020C10A31020A0050000000000000D6
-:10AF700080111C0082002142887406DC0B86022DA1
-:10AF8000800B702A5800A600A9C00B70025C88A72D
-:10AF90002029C00A70029C109720A1C808D8022856
-:10AFA000004000000000000088080E00D7803760D5
-:10AFB0000E6813FE00CF803DE00F78231E00EF8265
-:10AFC00031E00F3CC37E04EF80B1E00EE803BE80A9
-:10AFD000D7E033EA0E78032A0200000000000000E8
-:10AFE0000815AC00FA013E000FB003E004F800328F
-:10AFF000800F8043AC0AD80036400FB0032C0CDB26
-:10B000000026C109A0136C40EB403ADC0F900BC244
-:10B0100006600000000000004004BE00CF8133E95C
-:10B020001FF913B650EF801FE404C8037E006D8142
-:10B0300033640CF81B3E202F8893E80FFB032E800F
-:10B04000CFC073E02CD903D00070000000000000D6
-:10B05000A8189042891821C01F710214C0F7202738
-:10B06000404071121800872021804871023C0887F7
-:10B070002021820B61A21E44DF0131C8087302EA5D
-:10B08000046000000000000010008C00870021C850
-:10B090000B70029C0987022D829940020400A509C9
-:10B0A00021401970021C00870525484B72020C4094
-:10B0B0008700A1C0485002C400200000000000002A
-:10B0C0006804C120894CA0B40A38022200A1D0240F
-:10B0D00030098002274481C62214093D2A0F028BC1
-:10B0E000C0A6200B24000C10938120C0483006D845
-:10B0F0000430000000000000B815A10089C132D161
-:10B1000003BC03A92089413E6085BC8B2540EB41EF
-:10B11000A2A00DF0133E20CF9036304FBC0B3C0068
-:10B12000CF8033C10CB103EA0460000000000000CE
-:10B130008000ED00F8013CD00FB303E882D8203640
-:10B14000802EB213E100FA007EC82EB003EC80DB43
-:10B15000103A084FB223CC02FB103AC00F9003E420
-:10B160000030000000000000A010F000CD103342BD
-:10B170000CCA237C00CF00336206F0013A00CF08EE
-:10B1800033801CF0813C00FF0033A00CCA01FC049A
-:10B19000CF003FC00FF003C00430000000000000EB
-:10B1A000A1046D408848A231081002201088B42202
-:10B1B000A00880006A848820225208B00A2C10BBA4
-:10B1C0000032B3888002EC00DB002EC00B9012E14D
-:10B1D0000010000000000000000500108A0122A0FD
-:10B1E00008B0426020800020441A801AE442A00681
-:10B1F0002200783002AC00BB00A24408B012EC0080
-:10B200008B000EC00B9002E0004000000000000028
-:10B21000081400088000208108300240128000A03D
-:10B220004008B002C000820000800830028C00BBE1
-:10B23000002000082002CC8093002CC00B3002C2FA
-:10B240000100000000000000000D6000CA14320080
-:10B250000CB0034C00CA0032000E0012A000C00067
-:10B26000700028F013AC00FB0032402C1043EC00BF
-:10B27000CF003FC00F9003C003500000000000004B
-:10B280002015F002FC001F00677003B000FC003FB7
-:10B29000002DC0033010FC01BF000F70037C00F7CD
-:10B2A000043B000FC013FD10FF003DC00FF003E88A
-:10B2B0001270000000000000C005F4C0CF803360B1
-:10B2C0000EC9133650CE863F080CC0033E02D7800D
-:10B2D00039E00FF8133E40C7303BCE0DF6033D88F2
-:10B2E000CF3133E40F78033000700000000000001D
-:10B2F0008010E5D0DB807260889202E4108A802E94
-:10B30000344A8C032E00AB8002E00BB8022C808FF5
-:10B310006013D84A76029D84AF3022480B8812A071
-:10B3200004300000000000008805C4008B002400E9
-:10B330004A0002AC8083002C01280402AC008B017F
-:10B3400020C003B0020C80834020C1A834228D139A
-:10B350008320ACC80BB00262017000000000000046
-:10B36000C01586009B04AE000A9002EC000B142E60
-:10B37000C602B1126C00AB202AC10BB0422C008B6C
-:10B380000226C10AB002AC00AB042A400B9002F0C6
-:10B3900004600000000000000011E700C301364017
-:10B3A0000E88132402CA001E202C8E0B2C00CB000A
-:10B3B0002AC00FB8032E06CB003AC04CB013AC0C19
-:10B3C000CB003EC80FB043500470000000000000E6
-:10B3D000E001B408FF91334009DC01F4207E022E25
-:10B3E000400D9801BC80EF80B7E48FF40BFE407FE6
-:10B3F00000B9C04EF003FC08F70037C00FE002B8F8
-:10B4000000600000000000004010A144CB023200A8
-:10B410000D800A6D00EB04109028220B2CC2CB206B
-:10B4200076C00EB103EC01CB0632C10C30032C0206
-:10B43000CB003ED00CB00310042000000000000040
-:10B44000C8052148AB0020000095234C08BB012211
-:10B45000C008B2020C08838892D5283402EC028F0F
-:10B460002023C04DF0017C00DF002EC00D300372A0
-:10B470000040000000000000E00544008310206050
-:10B480000925020008A0004C000B0C224F1293402B
-:10B4900000C0093E02EC00AB80A4C00930222C0899
-:10B4A000B3010C8108300238005000000000000099
-:10B4B00060011609B78021640878061200B4822D55
-:10B4C000A41B69067E04179225E6097806DE80A78C
-:10B4D0009025E00979505E04B7922F6109C80248AF
-:10B4E000004000000000000048082500C300B00331
-:10B4F0000DA3420940E100BC400F11034C001300B2
-:10B5000020C0093203CC10A30026C48D302B0C8040
-:10B51000F3007C800C3001120200000000000000EB
-:10B52000401DBC00E7103D012FF142E800F59003FB
-:10B53000C10CF1439C04EF083BC20CF081DCA0DF9E
-:10B54000003BC33FF083FC05DF0C3D400FD103D02F
-:10B550000660000000000000A805F400CB80304029
-:10B560002CA003E000F88032C02EB80B2C46D3008C
-:10B5700030C00C30030C00DB4832C01FB4032C88F1
-:10B58000CB4832800C30132A00700000000000000D
-:10B590004811B40087012140087042D008B4002946
-:10B5A000C00870021C00870021C80C720A1C848F1E
-:10B5B0004009C48F73129C40832021C0086002920E
-:10B5C0000460000000000000C0009601AF80212050
-:10B5D000086802DA00BD8021E00978021E008F8829
-:10B5E00083E229F8825F8087A025E00B3A120E5093
-:10B5F00097A421A02978023000200000000000005C
-:10B600000814CC02A1810000487002C800B1002CCF
-:10B61000F80931420C10830020E00838124E0083F4
-:10B62000006AC00B30028C04930020E009380292BB
-:10B630000430000000000000E815B940EE20308022
-:10B640000CA003E800FA0033B00DE4033288CC808C
-:10B6500023000DC0036202CA0036800FA0432806F3
-:10B66000DA0033A00D6A033A046000000000000015
-:10B670004800E0009801BE000F8003F000BC0038D5
-:10B68000040880A3E000F8003E000F8013A000E053
-:10B69000003E000E0003C000E800BE044E8007D24A
-:10B6A00000300000000000000810E480C9003E687F
-:10B6B0000C90036400C9003E400C9043E000C800B9
-:10B6C00032000C80132000C90036400C9003640047
-:10B6D000810032400490130204300000000000009A
-:10B6E0008004650689402E601A142A052089002EE0
-:10B6F00040089002C408C102204008101A240089A2
-:10B7000010324108901224008904364088940A209F
-:10B7100000100000000000001805042089552E408C
-:10B7200008D50234008D002E40189002E4009900E4
-:10B730002640089002040A8900264038900A240016
-:10B74000A90020400A90820600400000000000008E
-:10B750000804050081002F400AD402340085012C22
-:10B7600040081042E40699002240081002050081BA
-:10B770004028500814120500A14024505A1002021B
-:10B780000100000000000000B80D6000C8043E0089
-:10B790000880032142CC003E002C8002E000D8004B
-:10B7A000B6002C80022002C80036000C8003600224
-:10B7B000E80032008E80032E0350000000000000DD
-:10B7C000981DF500F5003E40879003E400F1003D30
-:10B7D000500F5403D100EC403F100BC443F100F96B
-:10B7E0004036500F9413E510D9443D402DD003E668
-:10B7F00006700000000000001805F660CD023B4016
-:10B800000CD003B440FD063E400C90036604C98290
-:10B81000B6620F180B3600CD4032610C9023240A1B
-:10B82000C90032404CD04306007000000000000008
-:10B830003910E380D80022000D80022294B8002E37
-:10B84000000D80032100884022000BC42221508873
-:10B85000802222088002201080012A000A80034EE4
-:10B8600004300000000000000005C60089002A40E6
-:10B8700088100A8408B10029400A700AB5008F4078
-:10B8800029C00BF4022400812028448910020404FA
-:10B8900081022A400810020201700000000000002E
-:10B8A0001815A600992022400990122480B9002F73
-:10B8B0004403D002F4008D002B410BD002261089E6
-:10B8C000042A4009906E240089002A400A94024606
-:10B8D0000460000000000000A215E600C900384224
-:10B8E0000C1013A60479083A78069203A408C9003C
-:10B8F0003A608F98230602C9023A400D9003040073
-:10B90000C90038400C9003280470000000000000BB
-:10B9100028018410F980BE404F9002E400F9003CF9
-:10B92000608D92032442E91032500F9403E400F931
-:10B9300000B6412E1003E400F9002E400F9003CA18
-:10B9400000600000000000002810A008C8003E10A1
-:10B950000F88032008F8C01E102C4003F200CC0012
-:10B960003F000CC0132002C00030000C802B2010C0
-:10B97000C00432000F80030A042000000000000011
-:10B98000A8053A8086E02FA01BE0023A80BA042E78
-:10B990008008A0038808C2002E8108600228108E4B
-:10B9A00081038008E00178008E040380096803CADF
-:10B9B000004000000000000028054C0083602C447B
-:10B9C0000B38020F80B1002CE5033010CC1083003F
-:10B9D0000CC02930220409911024C0C830004C0446
-:10B9E000930224C00B31020A005000000000000046
-:10B9F000E001188087002D400B74421C01B5012C1A
-:10BA0000C00B6002B00094042F2009C0021490976C
-:10BA10000025C80870024C80972025C0097002E8F4
-:10BA20000040000000000000A8083A82C6802D6097
-:10BA30000BF80B1A00F5803DE08F7803DE02C7801B
-:10BA40002DE00D780B1702DF8024F82CFD035E0C2F
-:10BA5000D7E035E00F68032A020000000000000074
-:10BA6000481DAE40FA043E400F8013EC04F9003E3E
-:10BA7000C10CA013C010E8003C004E8043C42089D4
-:10BA800000BAC007B621ED06EB68BACC0F2013C28E
-:10BA900006600000000000004005BE00C680316066
-:10BAA0002D780B3E48EC923D600C58035A40D580EF
-:10BAB00031610C58233600CF823FE00CF803FF6061
-:10BAC000CF9033F00C520300007000000000000023
-:10BAD000A811B8848614B5C00870021EC0C4002D19
-:10BAE0004008400214D0861021804C62423440A5A8
-:10BAF0000035C0287042DCC28F3023C00850022AB3
-:10BB00000460000000000000020098288E00A5409C
-:10BB100008F1021864B4006D42085002180185084B
-:10BB20002140095822540085102DC4097002DC04FC
-:10BB3000970025C00844020010200000000000000B
-:10BB400060148C00828024C00880022D00804A2C62
-:10BB500042080A420600928420A08828424400A39A
-:10BB60000624C00B3002CC10930424C10900020843
-:10BB70000430000000000000A815BC00CB003640D7
-:10BB80000CB4132C00F9003EA00CA2030408C280E0
-:10BB900030A80D2A035400CB003FC00DF003FC0871
-:10BBA000DF0037D00CB0032A046000000000000062
-:10BBB0008000E000FB103A400EB003ED90F9117EDA
-:10BBC000804FB053E840E9003E400F9003A608F9CB
-:10BBD000013AC00CB013CC00EB023AC68EB803E0B9
-:10BBE00000300000000000000110F00CCE003FE02B
-:10BBF0002CF0833A48CD0135800C6012340ACE0017
-:10BC0000B3802CE00B7400C910B3C10FF01B3C00D3
-:10BC1000CF00B7C02CE0030044300000000000005B
-:10BC200081046E1088802CC01898022D8081003607
-:10BC30009108B0036800C9002240089002240083E4
-:10BC40008036C00B30022C02830020C00820036025
-:10BC50004010000000000000800506008A802E458C
-:10BC6000288802240288020202088002A2009800AA
-:10BC700022000880122400890122C10AB0026C004F
-:10BC8000AB0022C1089012600040000000000000DC
-:10BC90000804000080002CC04808120080800224A4
-:10BCA00000081842AC028B8022E008B8120402831C
-:10BCB0000020C00B30420C00A30160C048100242BB
-:10BCC0000100000000000000000D6808CA002E40BE
-:10BCD0000880030000C80632000C8002A000D800D3
-:10BCE00032000C80037400CB0022C00FF0033C0034
-:10BCF000EF0037C00C80014003500000000000003E
-:10BD0000A019FC00FC043FC00FC003E100FC003B95
-:10BD1000000FD0037C00EF002FC00FF011F410FDD6
-:10BD2000023DC04FF003DC00DF043FC00FC043E919
-:10BD3000067000000000000000C541027020DC1009
-:10BD400067040DC10270209C1037040DC1067040BD
-:10BD50004C10371415C1037040DC1013040DC107DB
-:10BD60007040DC1037040DC03100000000000000FE
-:10BD700000C5440571215C40571015C40571055C70
-:10BD800040571015C40671014C4057100DC4057181
-:10BD9000055C40531015C40771015C40571015C075
-:10BDA00011500000000000000080020120804820A7
-:10BDB0001208048201208048201208048201208099
-:10BDC00048201208048201208048201208048201C1
-:10BDD000208048201208048020000000000000009D
-:10BDE000008400016000580056000580016004587E
-:10BDF0000016000580012001580016000580016032
-:10BE000000580056000580016000580016000180AF
-:10BE1000200000000000000000C5480572115C8091
-:10BE2000172015D80532111C804720148800720194
-:10BE30001C80572005C80472015C80572015C8017A
-:10BE400072015C80572415C01150000000000000F2
-:10BE500000C140006000180006000180402000186A
-:10BE6000000600019000600018000600418000609C
-:10BE70000018000600018000600018100600018014
-:10BE8000310000000000000000C5480422010880C5
-:10BE900002201088046201088042201088002001DE
-:10BEA00008804220008804220108004220108800F7
-:10BEB00022010880423010803100000000000000A4
-:10BEC00000C54A05428150A00428150A0552811078
-:10BED000A04428111A00408010A05428050A0542E9
-:10BEE0008151201428150A01428150A054281500C0
-:10BEF000315000000000000000800C01534054C08D
-:10BF00001530055C01574054C01530055C015300E5
-:10BF100055C01574054C01530055C01574054C01EE
-:10BF2000530054C0113001402110000000000000F7
-:10BF300000800000400010000400010000400010DC
-:10BF40000004000100004200100004001100004045
-:10BF50000010C104000100004000100001100101A8
-:10BF6000200000000000000000C560020800820000
-:10BF7000208008200208008200208008200208009B
-:10BF80008200208400200208008200208408200211
-:10BF9000080082002180080111500000000000000C
-:10BFA00000C54005600158009600159005640258D0
-:10BFB0000056005590056001D900164015800560B7
-:10BFC0000159007640158005600158005600158023
-:10BFD000310000000000000000C440036000D800F1
-:10BFE00036004D80036000D80036000D80076200E7
-:10BFF000580036000D80076000D88016000D8003C1
-:10C000006000D80036001D803100000000000000F4
-:10C0100000C5420430810C20430810C20430810C5A
-:10C0200020430810C20430C10C20430810C206305F
-:10C03000810C20430810C20430810C20430818C032
-:10C04000115000000000000000C0000030000C0093
-:10C05000030000C00030000C00030000C0403000AE
-:10C060000C00030000C00030000C00030000C00002
-:10C0700030000C00030000C00000000000000000C1
-:10C080000080020130804C20130804C20130804C33
-:10C0900020130804C22530814C20130804C201304B
-:10C0A000804C32530804C20130804C20130804C075
-:10C0B000204000000000000000C5420562815820B9
-:10C0C000560815820460815820460815820160C117
-:10C0D000582046081582016081583056081582059F
-:10C0E00060815820560805801150000000000000B3
-:10C0F00000C542002080082002080082002080083D
-:10C1000020020800820020800C200208008200200B
-:10C110008008200308008200208008200208008098
-:10C12000210000000000000000C5420466811820C4
-:10C13000460811820464811820460811820060813B
-:10C140000C204608118200608119204308118204E6
-:10C1500060811920464801801100000000000000A5
-:10C1600000C56005580156005580156004580156F9
-:10C170000045801160005800060045801560015898
-:10C1800001160001801560055801560055800540D4
-:10C19000115000000000000000800601498010607E
-:10C1A00014180506017980506014180106014180B9
-:10C1B000506004180506014180106014180506013E
-:10C1C00041805060141805002000000000000000AD
-:10C1D0000080020104804020100804020004044092
-:10C1E000201008040201008440201008040201000D
-:10C1F00080412010080402110080412010480400F2
-:10C20000000000000000000000C546035180D4601B
-:10C2100035180D46021180D46035180D4603118083
-:10C22000D46035180D46035180D46035180D46038F
-:10C230005180D46035180D403150000000000000DE
-:10C2400000C5460570815C60071815C60471811C25
-:10C2500060171815C6053181DC60571815C60571C1
-:10C26000801C60771815CE0571815C60571815C069
-:10C2700011000000000000000005460271809C6172
-:10C2800077180DC60271809C6037180DC20331808B
-:10C290005C6027180DC60371809C6017180DCE03D3
-:10C2A0007180DC6037180DC0110000000000000034
-:10C2B0000045460575815C60771815C60575815C7B
-:10C2C00060571815C60531810C60571815C60571E1
-:10C2D000815C60431815C60571815C60571815C0F4
-:10C2E00011500000000000000040020120804820A2
-:10C2F0001208048201208048201208048201208054
-:10C300005C20120804820120804800170804820182
-:10C310002080482012080480000000000000000077
-:10C320000000060163805860161805860161805878
-:10C33000601618058601618158601618058601612E
-:10C34000805860561805860161805860161805806F
-:10C3500000000000000000000045400570015C0086
-:10C36000170015C08574011C00470011C00570013D
-:10C370005C00530010C00570015C00570014C90434
-:10C3800070011C00570015C0115000000000000093
-:10C390000045420060C01820060801820060801835
-:10C3A00020060801820020801830020800821060F8
-:10C3B000801820060800820060801820060801808E
-:10C3C0001100000000000000004442042081082009
-:10C3D0000208108204208108204208108204208173
-:10C3E0000820460811820420810820420811820496
-:10C3F0002081082042081080110000000000000089
-:10C400000045420540C550201408150004408150E5
-:10C4100020540811020500801020450C11420440F0
-:10C42000815020140C15420440811020540815003E
-:10C4300011500000000000000040030150C04430D3
-:10C44000150C05430150C04C30150C05432150C05C
-:10C450005430150C05430150C05430150C054301F0
-:10C4600050C05420150C05400000000000000000E2
-:10C47000000008004200048004200108004200047B
-:10C48000800420010800020010000400010800429E
-:10C490000010800400010800420010800420010008
-:10C4A00000000000000000000045420200808420DF
-:10C4B0002008080202008084202008080202008070
-:10C4C00080A0202808020200808020202808020284
-:10C4D00000808020200808001150000000000000AB
-:10C4E0000045400560415800560015800560015820
-:10C4F0000056001580052001D80056001580056003
-:10C50000015800760015800560015800560015801E
-:10C51000110000000000000000C540036000D800CA
-:10C5200026000D80026000D80036000D80076001F3
-:10C530005C0036000D80036000D80057000D8002BB
-:10C540006000980036000D80000000000000000030
-:10C550000000000430210C00430010C00430010C26
-:10C5600000430010C00430011800430010C0043024
-:10C57000010C00460010C00430010C00430010C044
-:10C5800000000000000000000000000030000C006F
-:10C59000030000C00035080C00030000C6001400B2
-:10C5A0000800034000C00030000D40020000C00041
-:10C5B00030000C00030000C000000000000000007C
-:10C5C0000000050131404C50131404C50131C04C2A
-:10C5D00050131404C50531414C50131404C50131E6
-:10C5E000404C70531404C50131404C40131404C036
-:10C5F00000000000000000000000230568C15A3060
-:10C60000568C15A30569C15A30468C11A70168C024
-:10C610001A30568C11A30468C11A30168C15A30465
-:10C6200068C15A30568C11800000000000000000E4
-:10C630000000000020000800020000800024000824
-:10C6400001020000800024000880026000800020B9
-:10C650000009400220008000200008000200008045
-:10C66000000000000000000000000844621118846F
-:10C67000462111884462091884462111886062109D
-:10C68000180446011188446211188006011188447B
-:10C690006211188446211180000000000000000093
-:10C6A00000000045501154045501154044501154E8
-:10C6B00004450111404050105404450115404450B8
-:10C6C0001114001501154044501154045500114037
-:10C6D0000000000000000000000008214208508215
-:10C6E0001420850821420050821420850820420829
-:10C6F0005082152005482142085082142081402193
-:10C700004208508214208500000000000000000054
-:10C7100000000A01028040A01028040A010284409F
-:10C72000A11028040A01028040A00028000A01028A
-:10C730008040B01028000A01028040A010280400A8
-:10C74000000000000000000000000C035300D4C0F3
-:10C7500035300D4C035300D4C035300D4C0353001D
-:10C76000D4C02130084C035300D4C03530084C03EA
-:10C770005300D4C035300D40000000000000000020
-:10C780000000080470015C80072025C90472015C68
-:10C7900080472015C8007205DC80572015C8057237
-:10C7A000011C90672015C80572011C80572015C018
-:10C7B00000000000000000000000231848C21231F1
-:10C7C000848C61031840C81231848C61031848C4FA
-:10C7D0001031840C41231848C61030040C61231812
-:10C7E00048C61230848C21000000000000000000C8
-:10C7F00000003FFF4FFFD3FFF4FFFD3FFF4FFFD38C
-:10C80000FFF4FFFD3FFF4FFFD3FFF4FFFD3FFF4F5E
-:10C81000FFD3FFF4FFFD3FFF4FFFD3FFF4FFBD0049
-:10C820000000000000000000000000000000000008
-:10C8300000000000000000000000000000000000F8
-:10C8400000000000000000000000000000000000E8
-:10C8500000000000000000000000000000000000D8
-:10C8600000002CDB0B36C2CDB0B36C2CDB0936C21A
-:10C87000CDB0B36C2CDB0B36C2CDB0B36C2CDB0B64
-:10C8800036C2CDB0B36C2CDB0B36C2CDB0B32C00AE
-:10C8900000000000000000000000333C4CCF1333C8
-:10C8A000C4CCF1333C4D4E9333C4CCF12B3C4CCF34
-:10C8B0001333C4CCE9333C4CCF12B5C4CCF1333C78
-:10C8C0004CCF1333C4CD3100000000000000000045
-:10C8D00000003B7E4EC793B7E4EDF9237E4E4793AD
-:10C8E000B7E4EDF93F7E4EDE1237E48DF93B7E4E24
-:10C8F000DF93F7848DF93B7E4EDF93B1E4EDB90011
-:10C9000000000000000000000000010270409C11C7
-:10C91000670419C30270409C10270409C1027040CB
-:10C920001C10271401C10270409C50070409C10269
-:10C9300070409C10671411C000000000000000004F
-:10C940000000040571015C40571015C40571015CBD
-:10C9500040571015C60571015C40571010C4057191
-:10C96000015C64031055C40571015C40571015C08B
-:10C9700000000000000000000000020120804820AC
-:10C9800012080482012180482012080480012080BE
-:10C990004820120805C2012080482417080482019B
-:10C9A00020804820120804800000000000000000E1
-:10C9B00000000000600018004600118400600018AC
-:10C9C00000060001800060011800061091800060E0
-:10C9D000001846461801800060001800061001800B
-:10C9E00000000000000000000000080473011C802B
-:10C9F000072001C80472011C80472011C80472017D
-:10CA00001C80472211C80472011C80072011C80431
-:10CA100072011C80072811C0000000000000000007
-:10CA2000000000006000180006000180006000188F
-:10CA30000006000180006000180006000180006010
-:10CA40000018004604018000600018000600018004
-:10CA5000000000000000000000000D04220108801A
-:10CA600002200090042781088042201098042401AD
-:10CA7000088042481088042201094042601088045E
-:10CA8000220108C0024010800000000000000000E9
-:10CA900000002A044B8112A004A8012A044A811232
-:10CAA000A044A8112A04488012A04488012A044AFC
-:10CAB00081122004AC112A044A8112B0449C110056
-:10CAC000000000000000000008C00C00530014C06B
-:10CAD0000530014400530014C00530040C0053001D
-:10CAE00014C005B0014C00530016C00130014C00C9
-:10CAF000530014C001380040100000000000000086
-:10CB000008C0001040001000040001100044801014
-:10CB10000004000110004600000004600100004015
-:10CB200000116002400100104000106001501040F0
-:10CB3000300000000000000008C04002000080003B
-:10CB40002000080802000080002000080002000009
-:10CB500080002000080002000080000000080002A1
-:10CB600000008000210008403000000000000000AC
-:10CB700008C04004600118004600118004600118DC
-:10CB80000046001180046001C80046001980006062
-:10CB90000018006600118004600118000600118072
-:10CBA000300000000000000010010002600098004A
-:10CBB00026000981026001980026000980066200B3
-:10CBC0004800262001C00260019800070009800289
-:10CBD0006000980026001182100000000000000094
-:10CBE0004045420430810C20430810C20430858C3B
-:10CBF00020430810C20430810C20434811820430C5
-:10CC0000818D20460810C20430810C20430C10C0D6
-:10CC100011500000000000004004000030000C0033
-:10CC2000030000C00010000C00030000C000300032
-:10CC30000800030000800030000C80020000C000EB
-:10CC400030000C00032000C0104000000000000075
-:10CC50004000020030800C21030800C20030800C2C
-:10CC600020030800C20430C10C20030C10C20030A5
-:10CC7000800CB0430800C20030800C20032810C094
-:10CC800000000000000000004045420460811820C0
-:10CC900046081182046080182046081182006081D5
-:10CCA00018204608118204608018200608118204AA
-:10CCB00060811820460C11C01150000000000000D7
-:10CCC00040014200208008200208008200208008E5
-:10CCD00020020800820020800C20020800C20020F0
-:10CCE000800820420800820020800820020801807D
-:10CCF0000000000000000000500142046081182084
-:10CD0000460811820460801820460811820060C124
-:10CD10000C20460C10C204608018304208118204B6
-:10CD200060811820460810800040000000000000CC
-:10CD300040454004500114004500114004500014C7
-:10CD40000045001140005000040045000040045020
-:10CD5000001400010011400450011400450000427D
-:10CD600001500000000000004800060041801060F3
-:10CD7000041801060041801060041801060041807B
-:10CD800010600418010600418010600418010600BC
-:10CD90004180106004180100100000000000000035
-:10CDA0004800020100804021100804020100804078
-:10CDB0002010080402010080402110080402010034
-:10CDC0008040301008040211008440201008140034
-:10CDD0000000000000000000404546035180D46080
-:10CDE00035180D46035180D46035180D4603518027
-:10CDF000D46035100D46035180D44035180D4603DC
-:10CE00005180D46035180D40115000000000000022
-:10CE10000001460471811C60071811CE0471811C49
-:10CE200060471801C60471819C60471819C60471D7
-:10CE3000801C60671811C60471811C60471811C0FE
-:10CE400000000000000000004000460271809C606D
-:10CE5000271809C60671801C60271809C601318091
-:10CE60001C60071809C60271809C60071809C61269
-:10CE700071809C60331801C00000000000000000B9
-:10CE80005045460571815C60571815C60571805C78
-:10CE900060571815C60131810C60171810C605714E
-:10CEA000815C60031815C60571815C605318188297
-:10CEB0001050000000000000404012012480482073
-:10CEC0001208048201248048201208048201208074
-:10CED0005820520C0582012080492002080482015A
-:10CEE000208049201248048001000000000000005A
-:10CEF00040040600618018600618018604618018ED
-:10CF00006006180186006181486006181486006179
-:10CF10008018604218018600618018600618008041
-:10CF200001000000000000000045600478011E00C0
-:10CF3000478011E80078011E00478011E004780165
-:10CF40001E00438011E00478011E00038015E004F8
-:10CF500078011E00478011C0105000000000000042
-:10CF600040011200648018200608018200648018C5
-:10CF700020060801820060801830020801820060EB
-:10CF80008019304208008200608019200648018024
-:10CF90000000000000000000400142042081082041
-:10CFA000420810820020810820420810820420815B
-:10CFB00008204608108204208108204208118204BB
-:10CFC00020810820420810800000000000000000BE
-:10CFD0004045420440811020440811020040811065
-:10CFE000204408110204408010204508010204403A
-:10CFF000811021000C11020440811020440801001E
-:10D0000011500000000000004000030050C0143028
-:10D01000050C01430050C01430050C01430050C002
-:10D020001430050C01430050C01430050C014300BE
-:10D0300050C01430050C014000000000000000004A
-:10D040004000080042041080042001090042011041
-:10D050008004200108004200100004200108004262
-:10D06000001000040001080042001080042011009C
-:10D0700000000000000000004045420200808020C7
-:10D08000200808020200800020200808020000801A
-:10D0900080A0000A08020200808034622808020290
-:10D0A00000808030200C08001150000000000000BB
-:10D0B000400140046001180046001180046003181C
-:10D0C000004600118006600198004600118004604F
-:10D0D00001180066001180046001180046001180EC
-:10D0E0000000000000000000400100026000980005
-:10D0F0002600098002640098002600199002600052
-:10D100001D00260001C0026000990006401980023F
-:10D110006000980066000180000000000000000030
-:10D120004045600438010E00438010E00438010ED1
-:10D1300000438010E00438011A00438011A0043835
-:10D14000010E00028040E00438010E004380188088
-:10D1500011500000000000005004010030400C108D
-:10D16000030400C90030400C10030400C10030402B
-:10D170000810030400810030400C78021400C10044
-:10D1800030400C100304008000000000000000008C
-:10D190004000050031400C50031400C50035400C20
-:10D1A00050031410D50031410D50031410C5003147
-:10D1B000400D48435410C50031400C40431000C29C
-:10D1C00001000000000000004045430460C1183029
-:10D1D000460C11830461C11830460C01870460C1FC
-:10D1E0001830460811830460C11820060C0183041E
-:10D1F00060C11830460C1180105000000000000083
-:10D2000040014000200008000200008000200008CB
-:10D2100000020000810020000880020000C0002001
-:10D220000008404330008000200008000200008019
-:10D230000000000000000000400148446211188412
-:10D240004621118844630118844621018804621133
-:10D250001804462110C8446211180543018188440E
-:10D2600062111884462111800000000000000000B7
-:10D27000404540045001140445011140445001143C
-:10D28000044501014045001014044503004044508A
-:10D2900011140401054140445011140405010140DA
-:10D2A00011500000000000004000082042081082D9
-:10D2B00004208108004200108204208108004208F6
-:10D2C000108205208108204208108A0520050820C8
-:10D2D00042081082042281000000000000000000CB
-:10D2E00000000A01028040A01028040201028040D0
-:10D2F000A01028040A01028040A00029040A0102AB
-:10D300008040A40028040A01028040A8102B1400C9
-:10D31000004000000000000040454D035340D4D0C1
-:10D3200035340D4D035340D4D035340D4D035340A7
-:10D33000D4D021344D4D035340D4D96134040D036E
-:10D340005340C0D835370D40115000000000000098
-:10D350004001480472001C80472011C80472011C5F
-:10D3600080472011C80472009C80472019C80072B1
-:10D37000011C88672011C80472015C82472211C019
-:10D3800000000000000000000000230848C2123125
-:10D39000848C61231040C01231848C61031048C416
-:10D3A0001031848C41231848C61030040C412318D6
-:10D3B00048C61230848C010000000000000000000C
-:10D3C00000003FFF4FFFD3FFF4FFFD3FFF4FFFD3B0
-:10D3D000FFF4FFFD3FFF4FFFD3FFF4FFFD3FFF4F83
-:10D3E000FFD3FFF4FFDD3FFF4FFFD3FFF4FFFD004E
-:10D3F000000000000000000000000000000000002D
-:10D40000000000000000000000000000000000001C
-:10D41000000000000000000000000000000000000C
-:10D4200000000000000000000000000000000000FC
-:10D4300000002CDB0B36C2CDB0B36C2CDB0B36C23C
-:10D44000CDB0B36C2CDB0B36C2CDB0B36C2CDB0B88
-:10D4500036C2CDB0B34C2CDB0B36C2CDB0B36C00B2
-:10D4600000000000000000000000335C4CD71333C4
-:10D47000C4CCF1333A4AD69333C4CCF12B3A4CCFD7
-:10D480001333C4CCE9333C4CCF12B5A4ACC9333C04
-:10D490004CCF1335C4CD690000000000000000002F
-:10D4A00000003B7E4EDF93B7E4EDF93B7E4EDF9309
-:10D4B000B7E4EDF93B7E4EDE1237E4EDE13B7E4E04
-:10D4C000DF9231848DD93B7E4EDF93B1E4EC610075
-:10D4D00000000000000000000000008404A1832C74
-:10D4E000030A1082C134108F004009140203149102
-:10D4F0000008420B1882C40031CA0C520210808509
-:10D5000000218228400A10000000000000000000F6
-:10D5100000000A0402014080732810480706010435
-:10D52000A44121140844061140807020140A04020A
-:10D5300000C88441211C08061201C080602014002C
-:10D5400000000000000000000000028404218208A6
-:10D5500053021080C500814A0442021400042021B5
-:10D5600080A872221C88C406A1428C52221C888585
-:10D570002621C08850221800000000000000000092
-:10D5800000000244000101006200100004000101DB
-:10D590002040001C00440401022062001C8004049E
-:10D5A00080892050081480042401C1005000180014
-:10D5B0000000000000000000000002803820040C81
-:10D5C000310A00000218208CA810280888C1141005
-:10D5D000C600220308020108B0000C21020082806C
-:10D5E00008004908000200000000000000000000E0
-:10D5F00000000001008008200300040243200040D6
-:10D600000020000442011080842011080400000062
-:10D6100000442420090840030090C42020080C0284
-:10D6200000000000000000000800088108200488B5
-:10D6300002220808C32A90408410200480C22620B9
-:10D64000498822220C08C126A0C98C122A048843CA
-:10D650000EA0CB8810220C02000000000000000089
-:10D6600008000A4032000180312800000112808D3C
-:10D670008400280C080132008C8002200C08012E46
-:10D6800000C38002200408430200408010200402EE
-:10D690000000000000000000080008870A2104883C
-:10D6A000112A1C0A06222140A0422A1088850AA1BC
-:10D6B00006A462221C0AC40221808C5222144886CD
-:10D6C000222008A8602A14020000000000000000C8
-:10D6D000000008450601898063201C884034110140
-:10D6E000A450281848040E014B8073281C8A040695
-:10D6F00091490463201C8A06260185807020180247
-:10D7000000000000000000000800008500B1452C6A
-:10D71000700214C00708214900420114820500115B
-:10D72000840052021C00C40021C42C53021C02813C
-:10D7300004A1CD0850021402000000000000000007
-:10D74000081012043401CC0073401C9045040148B9
-:10D7500004604118C0440401050473481450473460
-:10D7600001452062081CC2040C81C700738018C2E6
-:10D770000400000000000000080010841021CC28E4
-:10D7800042021412C51021840440001C80840091C0
-:10D79000000873821C90050C01CF0C400214304528
-:10D7A00020A1C0085002100200000000000000008C
-:10D7B000000000450C8100000108080005189105D3
-:10D7C00004000104400618000224704004004000D8
-:10D7D00001C4240088040043100040200088000099
-:10D7E0000000000000000000000012852431020C3F
-:10D7F00002C20410C42821490C02C004B2061C2035
-:10D80000030850420C800104A1490C00C20C1043D3
-:10D8100024A0C10810420000000000000000000029
-:10D820000010A2002000CD000040042001100009DB
-:10D830000402490C92073000000033080C924100AA
-:10D8400080CC0000000C00432880C20010000000C3
-:10D850000420000000000000000030105080000094
-:10D86000100000F00010800000008000D0808000D8
-:10D8700000000080109080800000000080109080E8
-:10D880000000000000C01080000000000000000048
-:10D890003C3C10808000000000001090A080000040
-:10D8A000000040109080A000000000C0109080A0F8
-:10D8B00000000020801090A0A00000000080108FC9
-:10D8C0000F0000000000000000002CC2E481803F37
-:10D8D000D9BFD998719D428000267FE672AB7C3A11
-:10D8E000400019802648DD3C91C026402640383152
-:10D8F000DB61C01999BFC980000000000000000072
-:10D90000000010801014800684979686960690007A
-:10D910003FA1280102901200801788169E90900463
-:10D92000100036BEBE9E861612848013BE97AE804F
-:10D93000000000000000000000000000000008825D
-:10D940008184214000000008A13801780000000017
-:10D9500008B8217268800000000898448868800038
-:10D96000000008B80178014000000000000000003D
-:10D9700000003FFFFFFFC0000000003FF7AFFFC007
-:10D98000000000003FFFFFFFC0000000003FFFFF5E
-:10D99000FFC0000000003FFFBFFFC000000000000C
-:10D9A000000000000000000000003FFFFFFFC0007B
-:10D9B0000000003FFFFF7F40000000003FFFFFFF2F
-:10D9C000C0000000003FFFFFFFC0000000003FFF5D
-:10D9D0002FFFC00000000000000000000000000059
-:10D9E00000003FFFFFFFC0000000003FFFFF7FC0BF
-:10D9F000000000003FFFFFFFC0000000003FFFFFEE
-:10DA0000FFC0000000003FFFFF7F8000000000001B
-:10DA1000000000000000000000003FFFFFFFC0000A
-:10DA20000000003FFFBFBFC0000000003FDFBFDFBE
-:10DA3000C0000000003FEFFFFF80000000003FDF5C
-:10DA4000FFFFC00000000000000000000000000018
-:10DA500000003FFFFFFFC0000000003F3EAFFFC0DF
-:10DA6000000000001FFFDFFFC0000000003FE7FED6
-:10DA7000EFC0000000003FFFFFDFC000000000001B
-:10DA8000000000000000000000003FFFFFFFC0009A
-:10DA90000000003FFFFFFFC0000000002FF7FFFF66
-:10DAA000C0000000002FFFFFDFC0000000003FF7B4
-:10DAB000DFF7C000000000000000000000000000D0
-:10DAC000000002C400B1C32C50091482C43091C7B5
-:10DAD0002460081C820734914C04430A10C2840459
-:10DAE000918424520B1802C424B1C32C400A108024
-:10DAF0000000000000000000000008050201C480D2
-:10DB000060201C08442201C08450019C08070A01BF
-:10DB1000C08472201CC8041211448041011C80077B
-:10DB20000811C4007000100000C0000000000000D8
-:10DB3000000000862C214A0C52021C80042021CABD
-:10DB40001062021C81470421C32051011C80042C57
-:10DB500001CB0452031440C72031C80C502210805E
-:10DB600001200000000000000000000620018900E4
-:10DB700052001480042801450462001080463011D0
-:10DB80000D00420114C0440011050050001C004467
-:10DB90002801490070001080000000000000000013
-:10DBA000000008C002300C8C30220888C226000811
-:10DBB0008020220C88810210C48010220C084002B0
-:10DBC000104888012304C8420210468C122200002B
-:10DBD0000010000000000000080002000080C820C3
-:10DBE000110900804110900824300804424100903F
-:10DBF000C420000804420010804C20230904C243C2
-:10DC000030804020110800020000000000000000E9
-:10DC1000080008810220C98C122004484122000912
-:10DC20008830200C88030E00498C10220C88402E6E
-:10DC300000C984132104C8C32200CB8C3222000007
-:10DC400004000000000000000800080102004B80F2
-:10DC5000322108884102100F8010218C08410200F7
-:10DC6000878410200488000200478010210C88411E
-:10DC70001610468030200002000000000000000066
-:10DC800000000AC422A108A4722A140A8502818411
-:10DC9000A042281C0AC5029140B8732910CAC402C8
-:10DCA000A180A4422A14CA85229180A8702A180251
-:10DCB0000080000000000000080008041E01C88069
-:10DCC00043201808453E010C8061209C48061281C3
-:10DCD000C08073001088060201C800422010C807E7
-:10DCE0000211CD80512014820000000000000000CD
-:10DCF000080000C42421C80C420114000028104C64
-:10DD000008520214804524294004720010C00524E2
-:10DD1000114408430114C04724204808720210002F
-:10DD200000000000000000000810000710110600AD
-:10DD3000720018D04620014D00714010500730117C
-:10DD4000C300714110B0052C01490043001C50452F
-:10DD500030018C0061401842040000000000000007
-:10DD6000000030C50021C00C40011412440431846D
-:10DD700024408014A1C70001400840011420052060
-:10DD800011C002608218008724114008404210022E
-:10DD90000000000000000000000002000C80C4240D
-:10DDA00031480C000108C14100004900420308103D
-:10DDB000802021090C02021880C12430080C420185
-:10DDC0001080832011080000000000000000000007
-:10DDD000000010C10420480C1242040083003148A6
-:10DDE00000024104A0070C20400012C20C80C12098
-:10DDF00020C80012C10CB0412000490802420000B6
-:10DE000000000000000000000010800100108100F0
-:10DE100030400820030010C12002000480403090F0
-:10DE20000114024004804020000904320108A003CC
-:10DE30000410080022400000043000000000000030
-:10DE40000000300010800000004000F000000000E2
-:10DE500000108000F00080800000200000F010A082
-:10DE6000000000200000F00010000000208000CC26
-:10DE700040000000000000003C3C10A080000000BA
-:10DE80000000109080C040000000001090808000D2
-:10DE900000000000109080800000000000109080C2
-:10DEA000E00000000000108C0800000000000000EE
-:10DEB0000000094DB1E90026402A7FE3F25498C0E2
-:10DEC0003FE64000014291D0C013E5876383B8CD9F
-:10DED000F900267F0000352ED503403FD9BFB18021
-:10DEE00001F0000000000000000004021614001CF5
-:10DEF000A83F881600808480379EBAA05010021276
-:10DF0000001796972650101082801E80DEBE941453
-:10DF100002108017BE819400000000000000000085
-:10DF200000000000000008A84494288000000008B9
-:10DF30009421445100000000088442410100000087
-:10DF40000008A17223414000000008B80178324067
-:10DF5000000000000000000000003FFFFFFFC000C5
-:10DF60000000003FF7FED7C0000000003FFFD7DFF2
-:10DF7000C0000000003FFF7FFFC000000000377FAF
-:10DF8000FFFFC000000000000000000000000000D3
-:10DF900000003FFFFFFFC0000000001EFFDE77C053
-:10DFA000000000001FEFFFFFC0000000003FFFFF68
-:10DFB000FFC0000000003FFFFF7FC0000000000026
-:10DFC000000000000000000000003FFFFFFFC00055
-:10DFD0000000001FCFDFFFC0000000003FFFFFBFB9
-:10DFE000C0000000003FFFFFBFC0000000003FFF77
-:10DFF000FFBFC000000000000000000000000000A3
-:10E0000000003FFFFFFFC0000000003FFFFFFFC018
-:10E01000000000003FFFFFFFC0000000001FFF1FC7
-:10E020007FC0000000002FDFFFCFC0000000000015
-:10E03000000000000000000000003FFFFFFFC000E4
-:10E040000000003FBFAFFFC0000000003FFFFFFF28
-:10E05000C0000000003EDE7FFFC0000000003FFF68
-:10E06000FFF7C000000000000000000000000000FA
-:10E0700000003FFFFFFFC0000000003F7FFFFFC028
-:10E08000000000003FFFFFFFC0000000003FFEBE99
-:10E090007FC0000000003EFFD77FC00000000000EE
-:10E0A0000000000000000000000000000000000070
-:10E0B0000000000000000000000000000000000060
-:10E0C0000000000000000000000000000000000050
-:10E0D0000000000000000000000000000000000040
-:10E0E00030002001020000003000438E00000000DC
-:10E0F0000000000000000000000000000000000020
-:10E10000000000000000000000000000000000000F
-:10E1100000000000000000000000000000000000FF
-:10E1200000000000000000000000000000000000EF
-:10E1300000000000000000000000000000000000DF
-:10E1400000000000000000000000000000000000CF
-:10E1500000000000000000000000000000000000BF
-:10E1600000000000000000000000000000000000AF
-:10E17000000000000000000000000000000000009F
-:10E18000000000000000000000000000000000008F
-:10E19000000000000000000000000000000000007F
-:10E1A000000000000000000000000000000000006F
-:10E1B000000000000000000000000000000000005F
-:10E1C000000000000000000000000000000000004F
-:10E1D000000000000000000000000000000000003F
-:10E1E000000000000000000000000000000000002F
-:10E1F000000000000000000000000000000000001F
-:10E20000000000000000000000000000000000000E
-:10E2100000000000000000000000000000000000FE
-:10E2200000000000000000000000000000000000EE
-:10E2300000000000000000000000000000000000DE
-:10E2400000000000000000000000000000000000CE
-:10E2500000000000000000000000000000000000BE
-:10E2600000000000000000000000000000000000AE
-:10E27000000000000000000000000000000000009E
-:10E28000000000000000000000000000000000008E
-:10E29000000000000000000000000000000000007E
-:10E2A000000000000000000000000000000000006E
-:10E2B000000000000000000000000000000000005E
-:10E2C000000000000000000000000000000000004E
-:10E2D000000000000000000000000000000000003E
-:10E2E000000000000000000000000000000000002E
-:10E2F000000000000000000000000000000000001E
-:10E30000000000000000000000000000000000000D
-:10E3100000000000000000000000000000000000FD
-:10E3200000000000000000000000000000000000ED
-:10E3300000000000000000000000000000000000DD
-:10E3400000000000000000000000000000000000CD
-:10E3500000000000000000000000000000000000BD
-:10E3600000000000000000000000000000000000AD
-:10E37000000000000000000000000000000000009D
-:10E38000000000000000000000000000000000008D
-:10E39000000000000000000000000000000000007D
-:10E3A000000000000000000000000000000000006D
-:10E3B000000000000000000000000000000000005D
-:10E3C000000000000000000000000000000000004D
-:10E3D000000000000000000000000000000000003D
-:10E3E000000000000000000000000000000000002D
-:10E3F000000000000000000000000000000000001D
-:10E40000000000000000000000000000000000000C
-:10E4100000000000000000000000000000000000FC
-:10E4200000000000000000000000000000000000EC
-:10E4300000000000000000000000000000000000DC
-:10E4400000000000000000000000000000000000CC
-:10E4500000000000000000000000000000000000BC
-:10E4600000000000000000000000000000000000AC
-:10E47000000000000000000000000000000000009C
-:10E48000000000000000000000000000000000008C
-:10E49000000000000000000000000000000000007C
-:10E4A000000000000000000000000000000000006C
-:10E4B000000000000000000000000000000000005C
-:10E4C000000000000000000000000000000000004C
-:10E4D000000000000000000000000000000000003C
-:10E4E000000000000000000000000000000000002C
-:10E4F000000000000000000000000000000000001C
-:10E50000000000000000000000000000000000000B
-:10E5100000000000000000000000000000000000FB
-:10E5200000000000000000000000000000000000EB
-:10E5300000000000000000000000000000000000DB
-:10E5400000000000000000000000000000000000CB
-:10E5500000000000000000000000000000000000BB
-:10E5600000000000000000000000000000000000AB
-:10E57000000000000000000000000000000000009B
-:10E58000000000000000000000000000000000008B
-:10E59000000000000000000000000000000000007B
-:10E5A000000000000000000000000000000000006B
-:10E5B000000000000000000000000000000000005B
-:10E5C000000000000000000000000000000000004B
-:10E5D000000000000000000000000000000000003B
-:10E5E000000000000000000000000000000000002B
-:10E5F000000000000000000000000000000000001B
-:10E60000000000000000000000000000000000000A
-:10E6100000000000000000000000000000000000FA
-:10E6200000000000000000000000000000000000EA
-:10E6300000000000000000000000000000000000DA
-:10E6400000000000000000000000000000000000CA
-:10E6500000000000000000000000000000000000BA
-:10E6600000000000000000000000000000000000AA
-:10E67000000000000000000000000000000000009A
-:10E68000000000000000000000000000000000008A
-:10E69000000000000000000000000000000000007A
-:10E6A000000000000000000000000000000000006A
-:10E6B000000000000000000000000000000000005A
-:10E6C000000000000000000000000000000000004A
-:10E6D000000000000000000000000000000000003A
-:10E6E000000000000000000000000000000000002A
-:10E6F000000000000000000000000000000000001A
-:10E700000000000000000000000000000000000009
-:10E7100000000000000000000000000000000000F9
-:10E7200000000000000000000000000000000000E9
-:10E7300000000000000000000000000000000000D9
-:10E7400000000000000000000000000000000000C9
-:10E7500000000000000000000000000000000000B9
-:10E7600000000000000000000000000000000000A9
-:10E770000000000000000000000000000000000099
-:10E780000000000000000000000000000000000089
-:10E790000000000000000000000000000000000079
-:10E7A0000000000000000000000000000000000069
-:10E7B0000000000000000000000000000000000059
-:10E7C0000000000000000000000000000000000049
-:10E7D0000000000000000000000000000000000039
-:10E7E0000000000000000000000000000000000029
-:10E7F0000000000000000000000000000000000019
-:10E800000000000000000000000000000000000008
-:10E8100000000000000000000000000000000000F8
-:10E8200000000000000000000000000000000000E8
-:10E8300000000000000000000000000000000000D8
-:10E8400000000000000000000000000000000000C8
-:10E8500000000000000000000000000000000000B8
-:10E8600000000000000000000000000000000000A8
-:10E870000000000000000000000000000000000098
-:10E880000000000000000000000000000000000088
-:10E890000000000000000000000000000000000078
-:10E8A0000000000000000000000000000000000068
-:10E8B0000000000000000000000000000000000058
-:10E8C0000000000000000000000000000000000048
-:10E8D0000000000000000000000000000000000038
-:10E8E0000000000000000000000000000000000028
-:10E8F0000000000000000000000000000000000018
-:10E900000000000000000000000000000000000007
-:10E9100000000000000000000000000000000000F7
-:10E9200000000000000000000000000000000000E7
-:10E9300000000000000000000000000000000000D7
-:10E9400000000000000000000000000000000000C7
-:10E9500000000000000000000000000000000000B7
-:10E9600000000000000000000000000000000000A7
-:10E970000000000000000000000000000000000097
-:10E980000000000000000000000000000000000087
-:10E990000000000000000000000000000000000077
-:10E9A0000000000000000000000000000000000067
-:10E9B0000000000000000000000000000000000057
-:10E9C0000000000000000000000000000000000047
-:10E9D0000000000000000000000000000000000037
-:10E9E0000000000000000000000000000000000027
-:10E9F0000000000000000000000000000000000017
-:10EA00000000000000000000000000000000000006
-:10EA100000000000000000000000000000000000F6
-:10EA200000000000000000000000000000000000E6
-:10EA300000000000000000000000000000000000D6
-:10EA400000000000000000000000000000000000C6
-:10EA500000000000000000000000000000000000B6
-:10EA600000000000000000000000000000000000A6
-:10EA70000000000000000000000000000000000096
-:10EA80000000000000000000000000000000000086
-:10EA90000000000000000000000000000000000076
-:10EAA0000000000000000000000000000000000066
-:10EAB0000000000000000000000000000000000056
-:10EAC0000000000000000000000000000000000046
-:10EAD0000000000000000000000000000000000036
-:10EAE0000000000000000000000000000000000026
-:10EAF0000000000000000000000000000000000016
-:10EB00000000000000000000000000000000000005
-:10EB100000000000000000000000000000000000F5
-:10EB200000000000000000000000000000000000E5
-:10EB300000000000000000000000000000000000D5
-:10EB400000000000000000000000000000000000C5
-:10EB500000000000000000000000000000000000B5
-:10EB600000000000000000000000000000000000A5
-:10EB70000000000000000000000000000000000095
-:10EB80000000000000000000000000000000000085
-:10EB90000000000000000000000000000000000075
-:10EBA0000000000000000000000000000000000065
-:10EBB0000000000000000000000000000000000055
-:10EBC0000000000000000000000000000000000045
-:10EBD0000000000000000000000000000000000035
-:10EBE0000000000000000000000000000000000025
-:10EBF0000000000000000000000000000000000015
-:10EC00000000000000000000000000000000000004
-:10EC100000000000000000000000000000000000F4
-:10EC200000000000000000000000000000000000E4
-:10EC300000000000000000000000000000000000D4
-:10EC400000000000000000000000000000000000C4
-:10EC500000000000000000000000000000000000B4
-:10EC600000000000000000000000000000000000A4
-:10EC70000000000000000000000000000000000094
-:10EC80000000000000000000000000000000000084
-:10EC90000000000000000000000000000000000074
-:10ECA0000000000000000000000000000000000064
-:10ECB0000000000000000000000000000000000054
-:10ECC0000000000000000000000000000000000044
-:10ECD0000000000000000000000000000000000034
-:10ECE0000000000000000000000000000000000024
-:10ECF0000000000000000000000000000000000014
-:10ED00000000000000000000000000000000000003
-:10ED100000000000000000000000000000000000F3
-:10ED200000000000000000000000000000000000E3
-:10ED300000000000000000000000000000000000D3
-:10ED400000000000000000000000000000000000C3
-:10ED500000000000000000000000000000000000B3
-:10ED600000000000000000000000000000000000A3
-:10ED70000000000000000000000000000000000093
-:10ED80000000000000000000000000000000000083
-:10ED90000000000000000000000000000000000073
-:10EDA0000000000000000000000000000000000063
-:10EDB0000000000000000000000000000000000053
-:10EDC0000000000000000000000000000000000043
-:10EDD0000000000000000000000000000000000033
-:10EDE0000000000000000000000000000000000023
-:10EDF0000000000000000000000000000000000013
-:10EE00000000000000000000000000000000000002
-:10EE100000000000000000000000000000000000F2
-:10EE200000000000000000000000000000000000E2
-:10EE300000000000000000000000000000000000D2
-:10EE400000000000000000000000000000000000C2
-:10EE500000000000000000000000000000000000B2
-:10EE600000000000000000000000000000000000A2
-:10EE70000000000000000000000000000000000092
-:10EE80000000000000000000000000000000000082
-:10EE90000000000000000000000000000000000072
-:10EEA0000000000000000000000000000000000062
-:10EEB0000000000000000000000000000000000052
-:10EEC0000000000000000000000000000000000042
-:10EED0000000000000000000000000000000000032
-:10EEE0000000000000000000000000000000000022
-:10EEF0000000000000000000000000000000000012
-:10EF00000000000000000000000000000000000001
-:10EF100000000000000000000000000000000000F1
-:10EF20000000000030002001020200003000438099
-:10EF300000000000000000000000000000000000D1
-:10EF400000000000000000000000000000000000C1
-:10EF500000000000000000000000000000000000B1
-:10EF600000000000000000000000000000000000A1
-:10EF70000000000000000000000000000000000091
-:10EF80000000000000000000000000000000000081
-:10EF90000000000000000000000000000000000071
-:10EFA0000000000000000000000000000000000061
-:10EFB0000000000000000000000000000000000051
-:10EFC0000000000000000000000000000000000041
-:10EFD0000000000000000000000000000000000031
-:10EFE0000000000000000000000000000000000021
-:10EFF0000000000000000000000000000000000011
-:10F000000000000000000000000000000000000000
-:10F0100000000000000000000000000000000000F0
-:10F0200000000000000000000000000000000000E0
-:10F0300000000000000000000000000000000000D0
-:10F0400000000000000000000000000000000000C0
-:10F0500000000000000000000000000000000000B0
-:10F0600000000000000000000000000000000000A0
-:10F070000000000000000000000000000000000090
-:10F080000000000000000000000000000000000080
-:10F090000000000000000000000000000000000070
-:10F0A0000000000000000000000000000000000060
-:10F0B0000000000000000000000000000000000050
-:10F0C0000000000000000000000000000000000040
-:10F0D0000000000000000000000000000000000030
-:10F0E0000000000000000000000000000000000020
-:10F0F0000000000000000000000000000000000010
-:10F1000000000000000000000000000000000000FF
-:10F1100000000000000000000000000000000000EF
-:10F1200000000000000000000000000000000000DF
-:10F1300000000000000000000000000000000000CF
-:10F1400000000000000000000000000000000000BF
-:10F1500000000000000000000000000000000000AF
-:10F16000000000000000000000000000000000009F
-:10F17000000000000000000000000000000000008F
-:10F18000000000000000000000000000000000007F
-:10F19000000000000000000000000000000000006F
-:10F1A000000000000000000000000000000000005F
-:10F1B000000000000000000000000000000000004F
-:10F1C000000000000000000000000000000000003F
-:10F1D000000000000000000000000000000000002F
-:10F1E000000000000000000000000000000000001F
-:10F1F000000000000000000000000000000000000F
-:10F2000000000000000000000000000000000000FE
-:10F2100000000000000000000000000000000000EE
-:10F2200000000000000000000000000000000000DE
-:10F2300000000000000000000000000000000000CE
-:10F2400000000000000000000000000000000000BE
-:10F2500000000000000000000000000000000000AE
-:10F26000000000000000000000000000000000009E
-:10F27000000000000000000000000000000000008E
-:10F28000000000000000000000000000000000007E
-:10F29000000000000000000000000000000000006E
-:10F2A000000000000000000000000000000000005E
-:10F2B000000000000000000000000000000000004E
-:10F2C000000000000000000000000000000000003E
-:10F2D000000000000000000000000000000000002E
-:10F2E000000000000000000000000000000000001E
-:10F2F000000000000000000000000000000000000E
-:10F3000000000000000000000000000000000000FD
-:10F3100000000000000000000000000000000000ED
-:10F3200000000000000000000000000000000000DD
-:10F3300000000000000000000000000000000000CD
-:10F3400000000000000000000000000000000000BD
-:10F3500000000000000000000000000000000000AD
-:10F36000000000000000000000000000000000009D
-:10F37000000000000000000000000000000000008D
-:10F38000000000000000000000000000000000007D
-:10F39000000000000000000000000000000000006D
-:10F3A000000000000000000000000000000000005D
-:10F3B000000000000000000000000000000000004D
-:10F3C000000000000000000000000000000000003D
-:10F3D000000000000000000000000000000000002D
-:10F3E000000000000000000000000000000000001D
-:10F3F000000000000000000000000000000000000D
-:10F4000000000000000000000000000000000000FC
-:10F4100000000000000000000000000000000000EC
-:10F4200000000000000000000000000000000000DC
-:10F4300000000000000000000000000000000000CC
-:10F4400000000000000000000000000000000000BC
-:10F4500000000000000000000000000000000000AC
-:10F46000000000000000000000000000000000009C
-:10F47000000000000000000000000000000000008C
-:10F48000000000000000000000000000000000007C
-:10F49000000000000000000000000000000000006C
-:10F4A000000000000000000000000000000000005C
-:10F4B000000000000000000000000000000000004C
-:10F4C000000000000000000000000000000000003C
-:10F4D000000000000000000000000000000000002C
-:10F4E000000000000000000000000000000000001C
-:10F4F000000000000000000000000000000000000C
-:10F5000000000000000000000000000000000000FB
-:10F5100000000000000000000000000000000000EB
-:10F5200000000000000000000000000000000000DB
-:10F5300000000000000000000000000000000000CB
-:10F5400000000000000000000000000000000000BB
-:10F5500000000000000000000000000000000000AB
-:10F56000000000000000000000000000000000009B
-:10F57000000000000000000000000000000000008B
-:10F58000000000000000000000000000000000007B
-:10F59000000000000000000000000000000000006B
-:10F5A000000000000000000000000000000000005B
-:10F5B000000000000000000000000000000000004B
-:10F5C000000000000000000000000000000000003B
-:10F5D000000000000000000000000000000000002B
-:10F5E000000000000000000000000000000000001B
-:10F5F000000000000000000000000000000000000B
-:10F6000000000000000000000000000000000000FA
-:10F6100000000000000000000000000000000000EA
-:10F6200000000000000000000000000000000000DA
-:10F6300000000000000000000000000000000000CA
-:10F6400000000000000000000000000000000000BA
-:10F6500000000000000000000000000000000000AA
-:10F66000000000000000000000000000000000009A
-:10F67000000000000000000000000000000000008A
-:10F68000000000000000000000000000000000007A
-:10F69000000000000000000000000000000000006A
-:10F6A000000000000000000000000000000000005A
-:10F6B000000000000000000000000000000000004A
-:10F6C000000000000000000000000000000000003A
-:10F6D000000000000000000000000000000000002A
-:10F6E000000000000000000000000000000000001A
-:10F6F000000000000000000000000000000000000A
-:10F7000000000000000000000000000000000000F9
-:10F7100000000000000000000000000000000000E9
-:10F7200000000000000000000000000000000000D9
-:10F7300000000000000000000000000000000000C9
-:10F7400000000000000000000000000000000000B9
-:10F7500000000000000000000000000000000000A9
-:10F760000000000000000000000000000000000099
-:10F770000000000000000000000000000000000089
-:10F780000000000000000000000000000000000079
-:10F790000000000000000000000000000000000069
-:10F7A0000000000000000000000000000000000059
-:10F7B0000000000000000000000000000000000049
-:10F7C0000000000000000000000000000000000039
-:10F7D0000000000000000000000000000000000029
-:10F7E0000000000000000000000000000000000019
-:10F7F0000000000000000000000000000000000009
-:10F8000000000000000000000000000000000000F8
-:10F8100000000000000000000000000000000000E8
-:10F8200000000000000000000000000000000000D8
-:10F8300000000000000000000000000000000000C8
-:10F8400000000000000000000000000000000000B8
-:10F8500000000000000000000000000000000000A8
-:10F860000000000000000000000000000000000098
-:10F870000000000000000000000000000000000088
-:10F880000000000000000000000000000000000078
-:10F890000000000000000000000000000000000068
-:10F8A0000000000000000000000000000000000058
-:10F8B0000000000000000000000000000000000048
-:10F8C0000000000000000000000000000000000038
-:10F8D0000000000000000000000000000000000028
-:10F8E0000000000000000000000000000000000018
-:10F8F0000000000000000000000000000000000008
-:10F9000000000000000000000000000000000000F7
-:10F9100000000000000000000000000000000000E7
-:10F9200000000000000000000000000000000000D7
-:10F9300000000000000000000000000000000000C7
-:10F9400000000000000000000000000000000000B7
-:10F9500000000000000000000000000000000000A7
-:10F960000000000000000000000000000000000097
-:10F970000000000000000000000000000000000087
-:10F980000000000000000000000000000000000077
-:10F990000000000000000000000000000000000067
-:10F9A0000000000000000000000000000000000057
-:10F9B0000000000000000000000000000000000047
-:10F9C0000000000000000000000000000000000037
-:10F9D0000000000000000000000000000000000027
-:10F9E0000000000000000000000000000000000017
-:10F9F0000000000000000000000000000000000007
-:10FA000000000000000000000000000000000000F6
-:10FA100000000000000000000000000000000000E6
-:10FA200000000000000000000000000000000000D6
-:10FA300000000000000000000000000000000000C6
-:10FA400000000000000000000000000000000000B6
-:10FA500000000000000000000000000000000000A6
-:10FA60000000000000000000000000000000000096
-:10FA70000000000000000000000000000000000086
-:10FA80000000000000000000000000000000000076
-:10FA90000000000000000000000000000000000066
-:10FAA0000000000000000000000000000000000056
-:10FAB0000000000000000000000000000000000046
-:10FAC0000000000000000000000000000000000036
-:10FAD0000000000000000000000000000000000026
-:10FAE0000000000000000000000000000000000016
-:10FAF0000000000000000000000000000000000006
-:10FB000000000000000000000000000000000000F5
-:10FB100000000000000000000000000000000000E5
-:10FB200000000000000000000000000000000000D5
-:10FB300000000000000000000000000000000000C5
-:10FB400000000000000000000000000000000000B5
-:10FB500000000000000000000000000000000000A5
-:10FB60000000000000000000000000000000000095
-:10FB70000000000000000000000000000000000085
-:10FB80000000000000000000000000000000000075
-:10FB90000000000000000000000000000000000065
-:10FBA0000000000000000000000000000000000055
-:10FBB0000000000000000000000000000000000045
-:10FBC0000000000000000000000000000000000035
-:10FBD0000000000000000000000000000000000025
-:10FBE0000000000000000000000000000000000015
-:10FBF0000000000000000000000000000000000005
-:10FC000000000000000000000000000000000000F4
-:10FC100000000000000000000000000000000000E4
-:10FC200000000000000000000000000000000000D4
-:10FC300000000000000000000000000000000000C4
-:10FC400000000000000000000000000000000000B4
-:10FC500000000000000000000000000000000000A4
-:10FC60000000000000000000000000000000000094
-:10FC70000000000000000000000000000000000084
-:10FC80000000000000000000000000000000000074
-:10FC90000000000000000000000000000000000064
-:10FCA0000000000000000000000000000000000054
-:10FCB0000000000000000000000000000000000044
-:10FCC0000000000000000000000000000000000034
-:10FCD0000000000000000000000000000000000024
-:10FCE0000000000000000000000000000000000014
-:10FCF0000000000000000000000000000000000004
-:10FD000000000000000000000000000000000000F3
-:10FD100000000000000000000000000000000000E3
-:10FD200000000000000000000000000000000000D3
-:10FD30003000000100005FA73000800100000003D8
-:10FD40003000400E00000000000000000000000035
-:10FD500000000000000000000000000000000000A3
-:10FD60000000000000000000000000000000000093
-:10FD700000000000000000000000000030008001D2
-:10FD8000000000053000A00100000000300000016C
-:10FD900000006B9700000000000000000000000061
-:04FDA000000000005F
-:00000001FF
-// VERSION= 1.0.0.191
-// DATE= 2002oct28
diff --git a/firmware/emi62/loader.HEX b/firmware/emi62/loader.HEX
deleted file mode 100644
index 0edb2dc310eb..000000000000
--- a/firmware/emi62/loader.HEX
+++ /dev/null
@@ -1,107 +0,0 @@
-:0300000002028772
-:03004300020400B4
-:10010000E4FFFEC220D2E843D820907FAB74FFF01A
-:10011000907FA9F0907FAAF05391EF907F9574C0E3
-:10012000F0907F9EF0907F98F0E4907F94F0907F25
-:100130009D74FFF0907F9774A0F0907F93E054FC43
-:10014000F0907F9C7403F0E4907F96F0907FAFE096
-:100150004401F0907FAEE0440DF0D2AF0FBF00013C
-:100160000EBE07F8BF08F520204275140075130075
-:100170007512007511007F487E927D007C00AB14E3
-:10018000AA13A912A811C31203ED50DB2020D87ABC
-:100190000079007800E5142401F514EA3513F5130D
-:1001A000E93512F512E83511F51180CA3020FD123B
-:1001B00001C75007907FB4E04401F0907FB4E04461
-:0601C00002F0C22080E6FF
-:0101C6002216
-:1001C700907FE9E0245B606024026003020285906F
-:1001D7007FEAE0750A00F50BA3E0FEE4EE420A9021
-:1001E7007FEEE0751500F516A3E0FEE4EE4215E597
-:1001F7001645157003020285E4907FC5F0907FB421
-:10020700E020E3F9907FC5E0F50C120313AF0C7EF5
-:1002170000EF250BF50BEE350AF50AC3E5169FF53A
-:1002270016E5159EF51580C7907FEAE0750A00F57B
-:100237000BA3E0FEE4EE420A907FEEE0751500F5B1
-:1002470016A3E0FEE4EE4215E51645156030E4908E
-:100257007FC5F0907FB4E020E3F9907FC5E0F50C0F
-:1002670012032BAF0C7E00EF250BF50BEE350AF5CD
-:0F0277000AC3E5169FF516E5159EF51580CAC357
-:010286002255
-:0C028700787FE4F6D8FD7581290202CED4
-:10029300020100E493A3F8E493A34003F68001F280
-:1002A30008DFF48029E493A3F85407240CC8C3336C
-:1002B300C4540F4420C8834004F456800146F6DF3B
-:1002C300E4800B010204081020408090046EE47E59
-:1002D300019360BCA3FF543F30E509541FFEE49330
-:1002E300A360010ECF54C025E060A840B8E493A3F7
-:1002F300FAE493A3F8E493A3C8C582C8CAC583CA22
-:10030300F0A3C8C582C8CAC583CADFE9DEE780BED9
-:10031300E50CFFE50BF582E50AF58375927E74C063
-:08032300F8E208F0A3DFFA2262
-:10032B00907F96858392A8827902900000E0B400BA
-:10033B000D7401F0907F97E0547FF04480F0E50C52
-:10034B00FF907EC0E0F528E4A24733F269F2E4A205
-:10035B004633F269F2E4A24533F269F2E4A2443384
-:10036B00F269F2E4A24333F269F2E4A24233F26996
-:10037B00F2E4A24133F269F2E4A24033F269F2A350
-:03038B00DFC222AC
-:10038E00C0E0C083C082907FC4E4F05391EF907FB1
-:0B039E00AB7404F0D082D083D0E032BA
-:1003A900C0E0C083C082D2205391EF907FAB74012B
-:0803B900F0D082D083D0E032C5
-:1003C100C0E0C083C0825391EF907FAB7402F0D044
-:0603D10082D083D0E0326F
-:1003D700C0E0C083C0825391EF907FAB7410F0D020
-:0603E70082D083D0E03259
-:1003ED00EB9FF5F0EA9E42F0E99D42F0E89C45F066
-:0103FD0022DD
-:0103FE0032CC
-:0103FF0032CB
-:100400000203A9000203C10002038E000204580087
-:100410000203D7000203FE000203FF00020484006F
-:10042000020485000204860002048700020488009A
-:100430000204890002048A0002048B0002048C007A
-:1004400002048D0002048E0002048F00020490005A
-:08045000020491000204920075
-:10045800C0E0C083C0825391EF907FAB7408F0D0A6
-:0604680082D083D0E032D7
-:10046E00020A000F010C11040D00000000410000F3
-:01047E00007D
-:04047F000217000060
-:010483000078
-:010484003245
-:010485003244
-:010486003243
-:010487003242
-:010488003241
-:010489003240
-:01048A00323F
-:01048B00323E
-:01048C00323D
-:01048D00323C
-:01048E00323B
-:01048F00323A
-:010490003239
-:010491003238
-:010492003237
-:1011000012011001000000406A0801010001010203
-:10111000000109022000010103A0000904000002EF
-:10112000FF0000040705820240000007050202409C
-:10113000000004030904260341006E0063006800F8
-:101140006F007200200043006800690070007300A7
-:101150002C00200049006E0063002E00280346008A
-:10116000690072006D007700610072006500200068
-:101170004600720061006D00650057006F0072004C
-:101180006B0073002A0343006F006E006600690065
-:101190006700750072006100740069006F006E00E6
-:1011A000200053007400720069006E006700220383
-:1011B00049006E0074006500720066006100630003
-:1011C0006500200053007400720069006E00670023
-:0211D00000001D
-:00000001FF
-/*
-Source: EMILOAD.HEX
-VERSION=1.0.2.002
-DATE=10.01.2002
-EMI26_62
-*/
diff --git a/firmware/emi62/midi.HEX b/firmware/emi62/midi.HEX
deleted file mode 100644
index 32a0d65176ba..000000000000
--- a/firmware/emi62/midi.HEX
+++ /dev/null
@@ -1,1266 +0,0 @@
-:030000000246B9FC
-:03000300020FFDEC
-:03000B00024E0F93
-:030013000217FDD4
-:03001B00024E1280
-:03002300024DEF9C
-:03002B0002480088
-:03003300024DE695
-:03003B00024DF67D
-:030043000249006F
-:03004B00024E035F
-:030053000248FA66
-:03005B00024DFD56
-:03006300024E0743
-:1005000012011001000000406A08110100010102FF
-:100510000001090208020501008032090400000000
-:10052000010100000A2401000156000201020C240E
-:10053000020101010002000000000D240605010275
-:10054000030000000000000924030204030005006A
-:100550000C24020305020006000000001524060614
-:100560000302000003000300030003000300030074
-:100570000009240304010100060009040100000130
-:100580000200000904010102010200000724010128
-:10059000000100112402010202100344AC0080BBE0
-:1005A0000000770109050A05840101008F07250174
-:1005B0000100000009058F01030001050009040185
-:1005C00002020102000007240101000100112402BF
-:1005D000010203180344AC0080BB00007701090549
-:1005E0000A05460201008F072501010000000905E8
-:1005F0008F01030001050009040200000102000050
-:1006000009040201010102000007240104000100A5
-:100610000E2402010602100244AC0080BB00090552
-:100620008C054C02010000072501000200000904AE
-:1006300002020101020000072401040001000E244F
-:1006400002010603180244AC0080BB0009058C05BA
-:1006500072030100000725010002000009040203E3
-:10066000010102000007240104000100112402011D
-:100670000202100344AC0080BB0000770109058C26
-:1006800005840101000007250100020000090402A1
-:1006900004010102000007240104000100112402EA
-:1006A000010203180344AC0080BB00007701090578
-:1006B0008C05460201000007250100020000090424
-:1006C00003000001010000092401000109000104E8
-:1006D00009040400020103000007240100012400B2
-:1006E000062402010700092403020801070100068D
-:1006F0002402020900092403010A01090100090575
-:10070000010204000000000525010107090581021E
-:100710000400000000052501010A04030904180370
-:1007200045006D006100670069006300200047001C
-:100730006D0062004800220345006D006100670003
-:1007400069006300200045004D004900200036008C
-:100750007C00320020006D002A0343006F006E0011
-:10076000660069006700750072006100740069002E
-:100770006F006E00200053007400720069006E006C
-:100780006700220349006E00740065007200660075
-:10079000610063006500200053007400720069006E
-:0607A0006E00670000007E
-:1007A600E4907666F01244AD202613907666E0C398
-:1007B6009402500AE004F0D242124B7F80EA3026BF
-:1007C60005122801C22630252B907696E054FCF0BF
-:1007D600908003F0121496907696E04403F0908091
-:1007E60003F0E4907667F0907667E004F0E0B44BAF
-:0A07F600F61247FA12411B80C522DB
-:10080000E4907631F0907631E0FF75F003A4240F88
-:10081000F582E43475F583E0FE907FEDE0FDEE6D4A
-:10082000600EEFC3940B5008907631E004F080D551
-:10083000EFB40B08907FB4E04401F022EF75F003B1
-:10084000A4240EF582E43475F583E0907633F02429
-:10085000F0600A240E60028187124BC722907FED60
-:10086000E0640570519076187405F0907637740145
-:10087000F09076397403F0907621F0E4907620F0D1
-:10088000907FEAE0F4602F907620E0FF75F00AA4F4
-:1008900024AAF582E43475F583E0FE907FEAE0FD5A
-:1008A000EE6D6012907621E0FEEFC39E50089076C8
-:1008B00020E004F080D1907FEDE0640670529076E5
-:1008C000187406F09076377404F0907639740AF054
-:1008D000907621F09076207403F0907FEAE0F46047
-:1008E0002F907620E0FF75F00AA424AAF582E43464
-:1008F00075F583E0FE907FEAE0FDEE6D6012907684
-:1009000021E0FEEFC39E5008907620E004F080D1F5
-:10091000907620E0FF75F00AA424AAF582E43475ED
-:10092000F583E0907229F0E490763BF0907621E038
-:10093000FEEF6E7008907FB4E04401F022907FEBF0
-:10094000E014601314700221E224026002817F909F
-:100950007FB4E04401F022907FE9E014707C907F46
-:10096000EAE0F47048907637E0907620F09076399F
-:10097000E0FE907620E0FDC39E502B90763BE0FE9B
-:1009800004F074C02EF582E4347EF583E0FEED754C
-:10099000F00AA424ABF582E43475F583EEF090768A
-:1009A00020E004F080C790763F7401F022907EC072
-:1009B000E0FEEF75F00AA424ABF582E43475F5830C
-:1009C000EEF0E0B4010890763E7401F08005E4900A
-:1009D000763EF090763F7401F022907FB4E04401BF
-:1009E000F022907FE9E024FE700241A314700261BE
-:1009F0003F14700261DB240360028177907FEAE09C
-:100A0000F4706B907637E0907620F0907639E0FFC6
-:100A1000907620E0FEC39F504E90763BE0FF04F0BE
-:100A200074C02FF582E4347EF583E0FFEE75F00AA2
-:100A3000A424ACF582E43475F583EFF090763BE0C6
-:100A4000FF04F074C02FF582E4347EF583E0FFEEFE
-:100A500075F00AA424ADF582E43475F583EFF090C7
-:100A60007620E004F080A49076407401F022907E1D
-:100A7000C0E0FF907620E0FE75F00AA424ACF58279
-:100A8000E43475F583EFF0907EC1E0FFEE75F00A77
-:100A9000A424ADF582E43475F583EFF090764174CB
-:100AA00001F022907FEAE0F47066907637E090766D
-:100AB00020F0907639E0FF907620E0FEC39F400260
-:100AC000818E90763BE0FF04F074C02FF582E43411
-:100AD0007EF583E0FFEE75F00AA424AEF582E434DF
-:100AE00075F583EFF090763BE0FF04F074C02FF5CE
-:100AF00082E4347EF583E0FFEE75F00AA424AFF5BE
-:100B000082E43475F583EFF0907620E004F080A263
-:100B1000907EC0E0FF907620E0FE75F00AA424AE3F
-:100B2000F582E43475F583EFF0907EC1E0FFEE7559
-:100B3000F00AA424AFF582E43475F583EFF0229037
-:100B40007FEAE0F47066907637E0907620F0907659
-:100B500039E0FF907620E0FEC39F4002818E9076C0
-:100B60003BE0FF04F074C02FF582E4347EF583E0AF
-:100B7000FFEE75F00AA424B0F582E43475F583EF36
-:100B8000F090763BE0FF04F074C02FF582E4347EF1
-:100B9000F583E0FFEE75F00AA424B1F582E4347524
-:100BA000F583EFF0907620E004F080A2907EC0E024
-:100BB000FF907620E0FE75F00AA424B0F582E434BC
-:100BC00075F583EFF0907EC1E0FFEE75F00AA42486
-:100BD000B1F582E43475F583EFF022907FEAE0F41A
-:100BE0007066907637E0907620F0907639E0FF904E
-:100BF0007620E0FEC39F4002818E90763BE0FF04AA
-:100C0000F074C02FF582E4347EF583E0FFEE75F0DA
-:100C10000AA424B2F582E43475F583EFF090763BB4
-:100C2000E0FF04F074C02FF582E4347EF583E0FF2A
-:100C3000EE75F00AA424B3F582E43475F583EFF081
-:100C4000907620E004F080A2907EC0E0FF907620B5
-:100C5000E0FE75F00AA424B2F582E43475F583EF62
-:100C6000F0907EC1E0FFEE75F00AA424B3F582E4B3
-:100C70003475F583EFF022907FB4E04401F02290C8
-:0F0C80007FB4E04401F022907FB4E04401F02201
-:100C8F004176680141766A0241766B0AC120C12123
-:020C9F00C12F63
-:040CA1004176230075
-:100CA500417201014572050002C9000045720A0042
-:100CB500010203044D720FD100D1000000000000B5
-:100CC500282809004D721C010001020304050607CE
-:100CD50008090A0B41722E2241722F2341723020DE
-:100CE5004172312162D2723A00000000000000001A
-:100CF50000000000000000000000000000000000EF
-:100D050000000000000000000000000000000000DE
-:100D150000000000000000000000000000000000CE
-:100D250000000000000000000000000000000000BE
-:100D350000000000000000000000000000000000AE
-:100D4500000000000000000000000000000000009E
-:100D5500000000000000000000000000000000008E
-:100D6500000000000000000000000000000000007E
-:100D75000000000000000000000001010101010168
-:100D8500010101010101010101010101010101014E
-:100D9500010101010101010101010101010101013E
-:100DA500010101010101010101010101010101012E
-:100DB5000101010101010101020202020202020216
-:100DC50002020202020202020202020202020202FE
-:100DD50002020202020202020202020202020202EE
-:100DE50002020202020202020202020202020202DE
-:100DF50002020202020303030303030303030303C3
-:100E050003030303030303030303030303030303AD
-:100E1500030303030303030303030303030303039D
-:100E2500030303030303030303030303030303038D
-:100E3500030304040404040404040404040404046F
-:100E4500040404040404040404040404040404045D
-:100E5500040404040404040404040404040404044D
-:100E6500040404040404040404040404040404043D
-:100E7500050505050505050505050505050505051D
-:100E8500050505050505050505050505050505050D
-:100E950005050505050505050505050505050505FD
-:100EA50005050505050505050505050505050606EB
-:100EB50006060606060606060606060606060606CD
-:100EC50006060606060606060606060606060606BD
-:100ED50006060606060606060606060606060606AD
-:100EE5000606060606060606060606070707080896
-:100EF500080909090A0A0A0B0B0B0C0C0C0D0D0D40
-:100F05000E0E0E0F0F0F10101011111112121213D9
-:100F15001313141414151515161616171717181874
-:100F250018191919191A1A1A1A1B1B1B1B1C1C1C18
-:100F35001C1D1D1D1D1E1E1E1E1F1F1F1F202020C8
-:100F45002121212222222323242425252626272761
-:100F5500282829292A2A2B2B2C2C2D2D2E2E2F2FD4
-:100F65003030313132323333343435353636373744
-:100F7500383839393A3A3B3C3D3E3F40414243449B
-:100F85004546474849494A4B4B4C4D4E4F505152A7
-:100F95005354555556565757585A5B5D5E5F6162B7
-:100FA500636465666768696A6B6C6D6F717273748B
-:100FB50075767778797A7B7C7E80013701013800F8
-:010FC500002B
-:100FC600E4FF74462FF582E43476F583E0FE742060
-:100FD6002FF582E43480F583EEF0744E2FF582E42B
-:100FE6003476F583E0FE74302FF582E43480F583A1
-:060FF600EEF00FBF08CC75
-:010FFC0022D2
-:030FFD00C2893274
-:10100000E490762CF090762CE0FF75F003A4240F8A
-:10101000F582E43475F583E0FE907FEDE0FDEE6D42
-:10102000600EEFC3940B500890762CE004F080D54E
-:10103000EFB40B08907FB4E04401F022EF75F003A9
-:10104000A4240EF582E43475F583E090762EF02426
-:10105000F0600A240F6002817D124BA422907FED84
-:10106000E0640570519076187405F090763874013C
-:10107000F090763A7403F090761CF0E490761BF0D2
-:10108000907FEAE0F4602F90761BE0FF75F00AA4F1
-:1010900024AAF582E43475F583E0FE907FEAE0FD52
-:1010A000EE6D601290761CE0FEEFC39E50089076C5
-:1010B0001BE004F080D1907FEDE0640670529076E2
-:1010C000187406F09076387404F090763A740AF04A
-:1010D00090761CF090761B7403F0907FEAE0F46049
-:1010E0002F90761BE0FF75F00AA424AAF582E43461
-:1010F00075F583E0FE907FEAE0FDEE6D601290767C
-:101100001CE0FEEFC39E500890761BE004F080D1F7
-:10111000E490761EF090761CE0FF90761BE0FE6F68
-:101120007008907FB4E04401F022907FEBE01460FF
-:101130001314700221BF240260028175907FB4E015
-:101140004401F022907FE9E0247F706B907FEAE019
-:10115000F4704A907638E090761BF090763AE0FF93
-:1011600090761BE0FDC39F502BED75F00AA424ABD5
-:10117000F582E43475F583E0FF90761EE0FD04F01F
-:1011800074002DF582E4347FF583EFF090761BE058
-:1011900004F080C790761EE0907FB5F022EE75F0E7
-:1011A0000AA424ABF582E43475F583E0907F00F067
-:1011B000907FB57401F022907FB4E04401F022905A
-:1011C0007FE9E0247E7002417E1470026123147076
-:1011D0000261C824036002816D907FEAE0F4706DC3
-:1011E000907638E090761BF090763AE0FF90761B90
-:1011F000E0C39F504FE0FF75F00AA424ACF582E4F1
-:101200003475F583E0FE90761EE0FD04F074002D49
-:10121000F582E4347FF583EEF0EF75F00AA424AD97
-:10122000F582E43475F583E0FF90761EE0FE04F06D
-:1012300074002EF582E4347FF583EFF090761BE0A6
-:1012400004F080A490761EE0907FB5F02290761B8B
-:10125000E0FF75F00AA424ACF582E43475F583E070
-:10126000907F00F0EF75F00AA424ADF582E43475A8
-:10127000F583E0907F01F0907FB57402F022907FBB
-:10128000EAE0F4706D907638E090761BF090763A54
-:10129000E0FF90761BE0C39F504FE0FF75F00AA47B
-:1012A00024AEF582E43475F583E0FE90761EE0FD11
-:1012B00004F074002DF582E4347FF583EEF0EF75D1
-:1012C000F00AA424AFF582E43475F583E0FF90764C
-:1012D0001EE0FE04F074002EF582E4347FF583EF07
-:1012E000F090761BE004F080A490761EE0907FB52D
-:1012F000F02290761BE0FF75F00AA424AEF582E49C
-:101300003475F583E0907F00F0EF75F00AA424AF08
-:10131000F582E43475F583E0907F01F0907FB57439
-:1013200002F022907FEAE0F4706D907638E09076DB
-:101330001BF090763AE0FF90761BE0C39F504FE0A1
-:10134000FF75F00AA424B0F582E43475F583E0FE5D
-:1013500090761EE0FD04F074002DF582E4347FF5F4
-:1013600083EEF0EF75F00AA424B1F582E43475F54C
-:1013700083E0FF90761EE0FE04F074002EF582E418
-:10138000347FF583EFF090761BE004F080A4907634
-:101390001EE0907FB5F02290761BE0FF75F00AA466
-:1013A00024B0F582E43475F583E0907F00F0EF75AA
-:1013B000F00AA424B1F582E43475F583E0907F014E
-:1013C000F0907FB57402F022907FEAE0F4706D90A7
-:1013D0007638E090761BF090763AE0FF90761BE04E
-:1013E000C39F504FE0FF75F00AA424B2F582E434A5
-:1013F00075F583E0FE90761EE0FD04F074002DF597
-:1014000082E4347FF583EEF0EF75F00AA424B3F59F
-:1014100082E43475F583E0FF90761EE0FE04F074FC
-:10142000002EF582E4347FF583EFF090761BE00424
-:10143000F080A490761EE0907FB5F02290761BE0BD
-:10144000FF75F00AA424B2F582E43475F583E090C8
-:101450007F00F0EF75F00AA424B3F582E43475F54B
-:1014600083E0907F01F0907FB57402F022907FB40A
-:10147000E04401F022907FB4E04401F022907FB478
-:05148000E04401F02230
-:101485007400F58690FDA57C05A3E582458370F97A
-:011495002234
-:10149600907FD6E04480F0438701000000000022E0
-:1014A600C0D0C0E08FE0C0E08EE0C0E08DE0C0E0DC
-:1014B6008CE0C0E0C082C0830586C084C0857D0004
-:1014C600907FE3747BF0A37480F07C11907F99E0A9
-:1014D6005440DC030214F3B40013907FE27440F02E
-:1014E600907FE5F0907FE27400F00214D29076903F
-:1014F600E0B4011290768FE02DFD907FE27480F0CB
-:10150600907F6C021557B4021290768FE02DFD90F5
-:101516007FE27480F0907F6C021596B40312907689
-:101526008FE02DFD907FE27480F0907F6C0215E1D4
-:10153600B4041290768FE02DFD907FE27480F090D7
-:101546007F6C021610907FE27480F0907F6C02161A
-:1015560040F0F0F0F0F0F0F0F0F0F0F0F0DDF27DB9
-:10156600020586907FE27400F0907F9BE05404B4FD
-:1015760000050586021640907FE27480F00586F02D
-:10158600F0F0F0F0F0F0F0F0F0F0F0DDD4021640FC
-:10159600F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F045
-:1015A600F0F0DDEC7D020586907FE27400F0907F1E
-:1015B6009BE05404B400050586021640907FE27451
-:1015C60080F00586F0F0F0F0F0F0F0F0F0F0F0F0DA
-:0615D600F0F0F0F0F0F06F
-:1015DC00DDCE021640F0F0F0F0DDFA7D02058690CB
-:1015EC007FE27400F0907F9BE05404B40005058604
-:1015FC00021640907FE27480F00586F0F0F0F0DD8A
-:10160C00DC021640F0F0F0F0F0F0DDF87D0205861B
-:10161C00907FE27400F0907F9BE05404B4000505C9
-:10162C0086021640907FE27480F00586F0F0F0F0B0
-:10163C00F0F0DDDA907FE27400F0D085D08405867E
-:10164C00D083D082D0E0FCD0E0FDD0E0FED0E0FF33
-:05165C00D0E0D0D02217
-:10166100C0D0C0E0C082C08390767CE0907F6FF0F4
-:1016710090767DE0907F6FF090767EE0907F6FF0C6
-:09168100D083D082D0E0D0D02249
-:10168A00C0D0C0E08FE0C0E08EE0C0E0C082C0837E
-:10169A000586C084C085907687E0FFBF00030217E5
-:1016AA0001907F96E04480F0907FE27480F0907F12
-:1016BA0062E00586907FE27400F0907F96E0547FA6
-:1016CA00F0907FE27480F090768EE0B40105058692
-:1016DA000216F6B4020505860216EB05860216FB0B
-:1016EA00E0E0E0E0E0E0DFF80216FBE0E0E0E0DF67
-:1016FA00FA907FE27400F0D085D0840586D083D03A
-:0C170A0082D0E0FED0E0FFD0E0D0D02282
-:10171600C082C083C0E0E8C0E078D1E814F870FB6E
-:0A172600D0E0F8D0E0D083D082229A
-:10173000C082C083C0E0E8C0E07878E814F870FBAD
-:0A174000D0E0F8D0E0D083D0822280
-:07174A00907FC57402F0223C
-:10175100907EC0E0907645F0907EC1E0907644F0B6
-:10176100907EC2E0907643F0B40003021778907641
-:10177100197403F002178E907644E0B4BB09907699
-:10178100197402F002178E9076197401F090764266
-:03179100E4F0225F
-:041794008D298B2AE6
-:10179800124A55EA4960571236927E0029FFEE3AFE
-:1017A800C9EFC9752BFFF52C892DAB2BAA2CA92DB8
-:1017B8009000011236ABFF64046005EF6405702EDB
-:1017C800EFB404159000021236AB6529700B900037
-:1017D800031236AB652A7001221236927E0029FF69
-:1017E800EE3AC9EFC9752BFFF52C892D80BC7B001B
-:0417F8007A007900FA
-:0117FC0022CA
-:0317FD00C28B326A
-:10180000907690E014603714700201D814700221B1
-:1018100072147002413B240460026103907FFC74E7
-:10182000CCF0907FFF74FCF0907695E04401F0548A
-:1018300005F0908001F0E490761AF0C22E229076A6
-:1018400095E04401F04402F0303E06E04404F080AC
-:1018500007907695E054FBF090761AE0B40108907A
-:101860007695E0908001F0907619E0FFB401229027
-:101870007FFC7474F0907FFF74FCF090768F742B73
-:10188000F0907697E054FDF0E4907681F0907680C9
-:10189000F0EFB40222907FFC7468F0907FFF74FC3C
-:1018A000F090768F742FF0907697E04402F0E490F9
-:1018B0007681F0907680F0303F09907697E054FE84
-:1018C000F08007907697E04401F0907697E054FB23
-:1018D000F0908002F0D22E22907695E054FEF044F3
-:1018E00002F0303E06E04404F08007907695E05424
-:1018F000FBF090761AE0B40108907695E0908001B4
-:10190000F0907619E0FFB40122907FFC7430F090E3
-:101910007FFF74FCF090768F742BF0907697E054F4
-:10192000FDF0E4907681F0907680F0EFB4022290A2
-:101930007FFC741CF0907FFF74FCF090768F742F06
-:10194000F0907697E04402F0E4907681F090768013
-:10195000F0303F09907697E054FEF080079076973C
-:10196000E04401F0907697E054FBF0908002F0D2D2
-:101970002E22907695E04401F04402F04408F030C5
-:101980003E06E04404F08007907695E054FBF0902A
-:10199000761AE0B40108907695E0908001F0907698
-:1019A00019E0FFB40125907FFC74CCF0907FFF74A8
-:1019B000FCF090768F742BF0907697E054FDF05405
-:1019C000FBF0E4907681F0907680F0EFB402259001
-:1019D0007FFC74C8F0907FFF74FCF090768F742FBA
-:1019E000F0907697E04402F054FBF0E4907681F0BA
-:1019F000907680F0EFB40325907FFC7498F0907F90
-:101A0000FF74FCF090768F745FF0907697E054FD51
-:101A1000F04404F0E4907681F0907680F0303F0955
-:101A2000907697E054FEF08007907697E04401F0BE
-:101A3000907697E0908002F0D22E22907695E05436
-:101A4000FEF04402F04408F0303E06E04404F0802A
-:101A500007907695E054FBF090761AE0B401089078
-:101A60007695E0908001F0907619E0FFB401259022
-:101A70007FFC74B4F0907FFF74FCF090768F742B31
-:101A8000F0907697E054FDF054FBF0E4907681F00E
-:101A9000907680F0EFB40225907FFC74B0F0907FD8
-:101AA000FF74FCF090768F742FF0907697E04402EC
-:101AB000F054FBF0E4907681F0907680F0EFB40380
-:101AC00025907FFC7468F0907FFF74FCF090768F17
-:101AD000745FF0907697E054FDF04404F0E4907663
-:101AE00081F0907680F0303F09907697E054FEF0D8
-:101AF0008007907697E04401F0907697E09080021E
-:041B0000F0D22E22CF
-:101B0400302C38C22C907619E0FFB4010E90767C0C
-:101B140074C0F0A37414F0A3740BF0EFB4020DE4DA
-:101B240090767CF0A37410F0A3740CF0EFB4030B64
-:0C1B3400E490767CF0A37418F0A3F0227B
-:101B40000000000000000000000000000000000095
-:101B50000000000000000000000000000000000085
-:101B60000000000000000000000000000000000075
-:101B70000000000000000000000000000000000065
-:101B80000000000000000000000000000000000055
-:101B90000000000000000000000000000000000045
-:101BA0000000000000000000000000000000000035
-:101BB0000000000000000000000000000000000025
-:101BC0000000000000000000000000000000000015
-:101BD0000000000000000000000000000000000005
-:101BE00000000000000000000000000000000000F5
-:101BF00000000000000000000000000000000000E5
-:101C000000000000000000000000000000000000D4
-:101C100000000000000000000000000000000000C4
-:101C200000000000000000000000000000000000B4
-:101C300000000000000000000000000000000000A4
-:101C40000000000000000000000000000000000094
-:101C50000000000000000000000000000000000084
-:101C60000000000000000000000000000000000074
-:101C70000000000000000000000000000000000064
-:101C80000000000000000000000000000000000054
-:101C90000000000000000000000000000000000044
-:101CA0000000000000000000000000000000000034
-:101CB0000000000000000000000000000000000024
-:101CC0000000000000000000000000000000000014
-:101CD0000000000000000000000000000000000004
-:101CE00000000000000000000000000000000000F4
-:101CF00000000000000000000000000000000000E4
-:101D000000000000000000000000000000000000D3
-:101D100000000000000000000000000000000000C3
-:101D200000000000000000000000000000000000B3
-:101D300000000000000000000000000000000000A3
-:101D40000000000000000000000000000000000093
-:101D50000000000000000000000000000000000083
-:101D60000000000000000000000000000000000073
-:101D70000000000000000000000000000000000063
-:101D80000000000000000000000000000000000053
-:101D90000000000000000000000000000000000043
-:101DA0000000000000000000000000000000000033
-:101DB0000000000000000000000000000000000023
-:101DC0000000000000000000000000000000000013
-:101DD0000000000000000000000000000000000003
-:101DE00000000000000000000000000000000000F3
-:101DF00000000000000000000000000000000000E3
-:101E000000000000000000000000000000000000D2
-:101E100000000000000000000000000000000000C2
-:101E200000000000000000000000000000000000B2
-:101E300000000000000000000000000000000000A2
-:101E40000000000000000000000000000000000092
-:101E50000000000000000000000000000000000082
-:101E60000000000000000000000000000000000072
-:101E70000000000000000000000000000000000062
-:101E80000000000000000000000000000000000052
-:101E90000000000000000000000000000000000042
-:101EA0000000000000000000000000000000000032
-:0E1EB000000000000000000000000000000024
-:101EBE000000000000000000000000000000000014
-:101ECE000000000000000000000000000000000004
-:101EDE0000000000000000000000000000000000F4
-:101EEE0000000000000000000000000000000000E4
-:101EFE0000000000000000000000000000000000D4
-:101F0E0000000000000000000000000000000000C3
-:101F1E0000000000000000000000000000000000B3
-:101F2E0000000000000000000000000000000000A3
-:021F3E000000A1
-:101F40000000000000000000000000000000000091
-:101F50000000000000000000000000000000000081
-:101F60000000000000000000000000000000000071
-:101F70000000000000000000000000000000000061
-:101F80000000000000000000000000000000000051
-:101F90000000000000000000000000000000000041
-:101FA0000000000000000000000000000000000031
-:101FB0000000000000000000000000000000000021
-:101FC0000000000000000000000000000000000011
-:101FD0000000000000000000000000000000000001
-:101FE00000000000000000000000000000000000F1
-:101FF00000000000000000000000000000000000E1
-:1020000000000000000000000000000000000000D0
-:1020100000000000000000000000000000000000C0
-:1020200000000000000000000000000000000000B0
-:1020300000000000000000000000000000000000A0
-:102040000000000000000000000000000000000090
-:102050000000000000000000000000000000000080
-:102060000000000000000000000000000000000070
-:102070000000000000000000000000000000000060
-:102080000000000000000000000000000000000050
-:102090000000000000000000000000000000000040
-:1020A0000000000000000000000000000000000030
-:1020B0000000000000000000000000000000000020
-:1020C0000000000000000000000000000000000010
-:1020D0000000000000000000000000000000000000
-:1020E00000000000000000000000000000000000F0
-:1020F00000000000000000000000000000000000E0
-:1021000000000000000000000000000000000000CF
-:1021100000000000000000000000000000000000BF
-:1021200000000000000000000000000000000000AF
-:10213000000000000000000000000000000000009F
-:10214000000000000000000000000000000000008F
-:10215000000000000000000000000000000000007F
-:10216000000000000000000000000000000000006F
-:10217000000000000000000000000000000000005F
-:10218000000000000000000000000000000000004F
-:10219000000000000000000000000000000000003F
-:1021A000000000000000000000000000000000002F
-:1021B000000000000000000000000000000000001F
-:1021C000000000000000000000000000000000000F
-:1021D00000000000000000000000000000000000FF
-:1021E00000000000000000000000000000000000EF
-:1021F00000000000000000000000000000000000DF
-:1022000000000000000000000000000000000000CE
-:1022100000000000000000000000000000000000BE
-:1022200000000000000000000000000000000000AE
-:10223000000000000000000000000000000000009E
-:10224000000000000000000000000000000000008E
-:10225000000000000000000000000000000000007E
-:10226000000000000000000000000000000000006E
-:10227000000000000000000000000000000000005E
-:10228000000000000000000000000000000000004E
-:10229000000000000000000000000000000000003E
-:1022A000000000000000000000000000000000002E
-:1022B000000000000000000000000000000000001E
-:1022C000000000000000000000000000000000000E
-:1022D00000000000000000000000000000000000FE
-:1022E00000000000000000000000000000000000EE
-:1022F00000000000000000000000000000000000DE
-:1023000000000000000000000000000000000000CD
-:1023100000000000000000000000000000000000BD
-:1023200000000000000000000000000000000000AD
-:10233000000000000000000000000000000000009D
-:10234000000000000000000000000000000000008D
-:10235000000000000000000000000000000000007D
-:10236000000000000000000000000000000000006D
-:0E23700000000000000000000000000000005F
-:10237E00000000000000000000000000000000004F
-:10238E00000000000000000000000000000000003F
-:10239E00000000000000000000000000000000002F
-:1023AE00000000000000000000000000000000001F
-:1023BE00000000000000000000000000000000000F
-:1023CE0000000000000000000000000000000000FF
-:1023DE0000000000000000000000000000000000EF
-:1023EE0000000000000000000000000000000000DF
-:1023FE0000000000000000000000000000000000CF
-:10240E0000000000000000000000000000000000BE
-:10241E0000000000000000000000000000000000AE
-:10242E00000000000000000000000000000000009E
-:10243E00000000000000000000000000000000008E
-:10244E00000000000000000000000000000000007E
-:10245E00000000000000000000000000000000006E
-:10246E00000000000000000000000000000000005E
-:10247E00000000000000000000000000000000004E
-:10248E00000000000000000000000000000000003E
-:10249E00000000000000000000000000000000002E
-:1024AE00000000000000000000000000000000001E
-:1024BE00000000000000000000000000000000000E
-:1024CE0000000000000000000000000000000000FE
-:1024DE0000000000000000000000000000000000EE
-:1024EE0000000000000000000000000000000000DE
-:1024FE0000000000000000000000000000000000CE
-:10250E0000000000000000000000000000000000BD
-:10251E0000000000000000000000000000000000AD
-:10252E00000000000000000000000000000000009D
-:10253E00000000000000000000000000000000008D
-:10254E00000000000000000000000000000000007D
-:10255E00000000000000000000000000000000006D
-:10256E00000000000000000000000000000000005D
-:10257E00000000000000000000000000000000004D
-:10258E00000000000000000000000000000000003D
-:10259E00000000000000000000000000000000002D
-:1025AE00000000000000000000000000000000001D
-:1025BE00000000000000000000000000000000000D
-:1025CE0000000000000000000000000000000000FD
-:1025DE0000000000000000000000000000000000ED
-:1025EE0000000000000000000000000000000000DD
-:1025FE0000000000000000000000000000000000CD
-:10260E0000000000000000000000000000000000BC
-:10261E0000000000000000000000000000000000AC
-:10262E00000000000000000000000000000000009C
-:10263E00000000000000000000000000000000008C
-:10264E00000000000000000000000000000000007C
-:10265E00000000000000000000000000000000006C
-:10266E00000000000000000000000000000000005C
-:10267E00000000000000000000000000000000004C
-:10268E00000000000000000000000000000000003C
-:10269E00000000000000000000000000000000002C
-:1026AE00000000000000000000000000000000001C
-:1026BE00000000000000000000000000000000000C
-:1026CE0000000000000000000000000000000000FC
-:1026DE0000000000000000000000000000000000EC
-:0E26EE000000000000000000000000000000DE
-:1026FC0000000000000000000000000000000000CE
-:10270C0000000000000000000000000000000000BD
-:10271C0000000000000000000000000000000000AD
-:10272C00000000000000000000000000000000009D
-:10273C00000000000000000000000000000000008D
-:10274C00000000000000000000000000000000007D
-:10275C00000000000000000000000000000000006D
-:10276C00000000000000000000000000000000005D
-:10277C00000000000000000000000000000000004D
-:10278C00000000000000000000000000000000003D
-:10279C00000000000000000000000000000000002D
-:1027AC00000000000000000000000000000000001D
-:1027BC00000000000000000000000000000000000D
-:1027CC0000000000000000000000000000000000FD
-:1027DC0000000000000000000000000000000000ED
-:1027EC0000000000000000000000000000000000DD
-:0527FC000000000022B6
-:10280100C220C221C22A907FE8E01237F9283000A5
-:10281100288C0128A2022A1F212A6A22293D802907
-:102821007D8129D1822A84A12ABAA200002ABF90DF
-:102831007FE9E014601124FE602824FE603B24FC43
-:102841007040123FE541CB124E1D400241CB907FBB
-:10285100EAE0B40104C22241CB907FB4E04401F02C
-:1028610041CB124E1F907FEAE0B40104D22241CB4A
-:10287100907FB4E04401F041CB907FB4E04401F09B
-:1028810041CB907FB4E04401F041CB907FE9E0245B
-:10289100F5700512486341CB907FB4E04401F041EB
-:1028A100CB907FE9E024FD605424026002213412C0
-:1028B1004E1D400241CB907FEAE07038907FECE002
-:1028C100F45480FFC4540FFFE054072F25E024B4D3
-:1028D100F582E4347FF583E4F0907FECE05480FFEF
-:1028E100131313541FFFE054072F907FD7F0E044D8
-:1028F10020F041CB907FB4E04401F041CB124E1F58
-:10290100400241CB907FEAE07020907FECE0F454EC
-:1029110080FFC4540FFFE054072F25E024B4F58253
-:10292100E4347FF5837401F041CB907FB4E044013E
-:10293100F041CB907FB4E04401F041CB907FE9E0DE
-:10294100601224F86009240270291243E741CB1276
-:102951004DCA41CB124E1BA222E433FF25E0FFA258
-:1029610023E4334F907F00F0E4A3F0907FB574022D
-:10297100F041CB907FB4E04401F041CB907FE9E09E
-:10298100603324F6602A2404703D907FEBE024DE5E
-:10299100600C047012907FB4E04401F041CB907F51
-:1029A100B4E04401F041CB907FB4E04401F041CB6D
-:1029B10012474541CB124E1BE4907F00F0A3F090EB
-:1029C1007FB57402F041CB907FB4E04401F041CB7C
-:1029D100907FE9E024F46034240C7039124E1B908E
-:1029E1007FECE0F45480FFC4540FFFE054072F251F
-:1029F100E024B4F582E4347FF583E054FD907F0058
-:102A0100F0E4A3F0907FB57402F041CB907FB4E085
-:102A11004401F041CB907FB4E04401F041CB907F81
-:102A2100E9E024F6601214601A2402701DD220908D
-:102A31007FB4E04401F08012D220907FB4E04401E1
-:102A4100F08007907FB4E04401F0202018907FEEE1
-:102A5100E07004A3E0600BD229D22712174AD22AD0
-:102A61008003120800C2208061907FEEE07004A311
-:102A7100E0600BD229D22812174AD22A804C123890
-:102A8100748047907FE9E024FE601214601A2402EA
-:102A9100701DD221907FB4E04401F08012D22190C8
-:102AA1007FB4E04401F08007907FB4E04401F0205E
-:102AB1002103121000C2218011122AD6800C124E5D
-:102AC100215007907FB4E04401F0202A07907FB4A1
-:052AD100E04402F022C8
-:102AD600E4907627F0907627E0FF75F00FA4244265
-:102AE600F582E43475F583E0FE907FECE0FDEE6D53
-:102AF600600EEFC394065008907627E004F080D568
-:102B0600EFB40608907FB4E04401F022EF75F00FB1
-:102B1600A42441F582E43475F583E0907628F02408
-:102B26009F7002A17424216002A1A1907FE9E02494
-:102B36007E700261FC14700281B524026002A16CF1
-:102B4600EF75F00FA42443F582E43475F583E0FCB9
-:102B5600A3E0FDA3E0FEA3E0FF7B447AAC79007816
-:102B660000C31237AB7013907F007444F0A374ACAB
-:102B7600F0E4A3F0907FB57403F0907627E075F04B
-:102B86000FA42443F582E43475F583E0FCA3E0FD4D
-:102B9600A3E0FEA3E0FF7B807ABB79007800C31236
-:102BA60037AB7013907F007480F0A374BBF0E4A37E
-:102BB600F0907FB57403F0907627E075F00FA424AB
-:102BC60043F582E43475F583E0FCA3E0FDA3E0FE63
-:102BD600A3E0FF7B007A7779017800C31237AB60F8
-:102BE60002A1A8907F00F0A37477F0A37401F0907F
-:102BF6007FB57403F022907627E075F00FA4244782
-:102C0600F582E43475F583E0FCA3E0FDA3E0FEA3C2
-:102C1600E0FF7B447AAC79007800C31237AB7013BF
-:102C2600907F007444F0A374ACF0E4A3F0907FB5F9
-:102C36007403F0907627E075F00FA42447F582E43C
-:102C46003475F583E0FCA3E0FDA3E0FEA3E0FF7B83
-:102C5600807ABB79007800C31237AB7013907F007F
-:102C66007480F0A374BBF0E4A3F0907FB57403F016
-:102C7600907627E075F00FA42447F582E43475F5C5
-:102C860083E0FCA3E0FDA3E0FEA3E0FF7B007A77F0
-:102C960079017800C31237AB6002A1A8907F00F0DB
-:102CA600A37477F0A37401F0907FB57403F02290BB
-:102CB6007627E075F00FA4244BF582E43475F5838E
-:102CC600E0FCA3E0FDA3E0FEA3E0FF7B447AAC7941
-:102CD600007800C31237AB7013907F007444F0A3E2
-:102CE60074ACF0E4A3F0907FB57403F0907627E01F
-:102CF60075F00FA4244BF582E43475F583E0FCA34C
-:102D0600E0FDA3E0FEA3E0FF7B807ABB79007800BC
-:102D1600C31237AB7013907F007480F0A374BBF0BE
-:102D2600E4A3F0907FB57403F0907627E075F00F7A
-:102D3600A4244BF582E43475F583E0FCA3E0FDA3FF
-:102D4600E0FEA3E0FF7B007A7779017800C31237B3
-:102D5600AB704F907F00F0A37477F0A37401F090EE
-:102D66007FB57403F022907FB4E04401F022907F97
-:102D7600E9E0247F701E907627E075F00FA4244FBB
-:102D8600F582E43475F583E0907F00F0907FB574AA
-:102D960001F08007907FB4E04401F0907FB4E044F6
-:032DA60001F02217
-:102DA900E4907636F0E0FF75F003A4240EF582E492
-:102DB9003475F5837401F0EF75F003A4240FF582DF
-:102DC900E43475F5837401F0EF75F003A42410F56C
-:102DD90082E43475F583E4F0907636E004F0E0FFA0
-:102DE90075F003A4240EF582E43475F5837410F0AC
-:102DF900EF75F003A4240FF582E43475F5837405A7
-:102E0900F0EF75F003A42410F582E43475F583E43A
-:102E1900F0907636E004F0E0FF75F003A4240EF597
-:102E290082E43475F5837402F0EF75F003A4240F7E
-:102E3900F582E43475F5837402F0EF75F003A42488
-:102E490010F582E43475F583E4F0907636E004F009
-:102E5900E0FF75F003A4240EF582E43475F583745C
-:102E690001F0EF75F003A4240FF582E43475F583BE
-:102E79007403F0EF75F003A42410F582E43475F5BA
-:102E890083E4F0907636E004F0E0FF75F003A424C3
-:102E99000EF582E43475F5837410F0EF75F003A430
-:102EA900240FF582E43475F5837406F0EF75F003A9
-:102EB900A42410F582E43475F583E4F0907636E0C5
-:102EC90004F0E0FF75F003A4240EF582E43475F5EF
-:102ED900837402F0EF75F003A4240FF582E43475CE
-:102EE900F5837404F0EF75F003A42410F582E4343B
-:102EF90075F583E4F0907636E004F0E0FF75F003B1
-:102F0900A4240EF582E43475F5837402F0EF75F0AC
-:102F190003A4240FF582E43475F5837408F0EF7582
-:102F2900F003A42410F582E43475F5837404F09059
-:102F39007636E004F0E0FF75F003A4240EF582E490
-:102F49003475F5837402F0EF75F003A4240FF5824C
-:102F5900E43475F583740AF0EF75F003A42410F5D1
-:102F690082E43475F5837404F0907636E004F0E079
-:102F7900FF75F003A4240EF582E43475F583740219
-:102F8900F0EF75F003A4240FF582E43475F583742A
-:102F990009F0EF75F003A42410F582E43475F58384
-:102FA9007404F0907636E004F0E0FF75F003A42491
-:102FB9000EF582E43475F5837402F0EF75F003A41D
-:102FC900240FF582E43475F5837407F0EF75F00387
-:0E2FD900A42410F582E43475F5837404F0220C
-:102FE700C0E0C083C082D2265391EF907FAB7401BB
-:082FF700F0D082D083D0E0325B
-:012FFF00329F
-:10300000907FB6E020E102C23DD236203602416E0A
-:10301000303D02416E908007E06004D2368002C2EB
-:1030200036203602412ED235E4F51A908004E0F5C0
-:10303000197408250EF8A619851918E51820E70453
-:10304000D2388002C23830380221D4E4F516E519AE
-:10305000B4F00CD2397508047509F0050E8002052C
-:1030600016E51964F7703DC239E50E24FE601714A9
-:103070006022240370297508057509F7E4F50AF53F
-:103080000B750E048020750806750AF7E4F50B75BC
-:103090000E048012750807750BF7750E0480071271
-:1030A0004DDA80020516E51954F864F8703BC23514
-:1030B000E5192407600C24FC6008240524F8500658
-:1030C0008008D23A8006C23A8002D23A751A0120AC
-:1030D0003A19907E80740FF0A3E519F0E4A3F0A3F1
-:1030E000F0907FB77404F08002051620396DE51961
-:1030F00064F76067E51A7063E51854F064F070597E
-:10310000851819F50EE519240F601B24FE6017249D
-:10311000FD602214601F2405702F750803050E85BD
-:103120001809D2378028750802050E85180975140C
-:1031300001D2378019750805050E851809E4F50ACE
-:10314000F50B750E03D2378005124DDAC2353035D6
-:103150000A85081385181280020516851819E516C8
-:1031600064047062F50EE51954F0F519F51585182B
-:1031700019E5152470601824F0601424F060102400
-:10318000F0601E24F0601A24F0600424607027E5CB
-:1031900015C4540FF519F508050E851809D23780A6
-:1031A0001AE515C4540FF519F508050E85180975AB
-:1031B0001401D2378005124DDAC23530350A85192F
-:1031C0001385181280020516E516D3940540571290
-:1031D0004DDA8052303917E50E700A8508097508F6
-:1031E00004050E80417408250EF8A6198038203792
-:1031F0002AE50EB4010F85080A85090B8513088599
-:103200001209750E04E514B4011C85080AE4F50BD7
-:10321000851308851209750E04800BE514B40106A8
-:10322000E4F50B750E04E4F51A303502050EE50ED3
-:10323000D394035002010BC237E4F50EF510C236E9
-:10324000D23DF51474082510F8E6FF74802510F5BA
-:1032500082E4347EF583EFF074082510F8E4F60577
-:0F32600010E510B404DE907FB77404F0010B2268
-:10326F00907618E0FF640570429075ABE0B40119D9
-:10327F009072377401F0E4908020F0908031F090DC
-:10328F008028F0908039F08022E4907237F09075AA
-:10329F00ADE090722BF0E02480F0E0908020F09071
-:1032AF008031F0908028F0908039F0EF6406600252
-:1032BF0081999072397404F0907239E0FF24FE9076
-:1032CF007204F0EF75F00AA424ABF582E43475F5BF
-:1032DF0083E06401705490723604F0907204E0FF42
-:1032EF0024FD602824FE6024240324FB5004601C6A
-:1032FF00818C74202FF582E43480F583E4F07428F8
-:10330F002FF582E43480F583E4F0818C907204E031
-:10331F00FF2430F582E43480F583E4F074382FF520
-:10332F0082E43480F583E4F0818CE4907236F0907F
-:10333F007239E075F00AA424ADF582E43475F58393
-:10334F00E0FF7E0090750CEEF0A3EFF07006907228
-:10335F0002743BF090750CE0FEA3E0FF64804E70AA
-:10336F0004907202F0EF4E70028135EF64804E7060
-:10337F00028135EFF8E490750DF0E890750CF09040
-:10338F007234E075F00AA424ACF582E43475F58349
-:10339F00E0FF907202F090750DE02FF090750CE049
-:1033AF003400F0E0FEA3E0FFE4FCFD7BD67AA5F944
-:1033BF00F8D3123795400A90750C74A5F0A374D604
-:1033CF00F090750DE0242AF090750CE0345AF0E07F
-:1033DF00FEA3E07805CEA2E713CE13D8F8FF9075C1
-:1033EF000CEEF0A3EFF090722CEEF0A3EFF0D3946D
-:1033FF00D2EE64809482400A90722C7402F0A3740F
-:10340F00D2F0C390722CE0648094805004E4F0A357
-:10341F00F090722CE0FEA3E0243AF582EE3472F5C0
-:10342F0083E0907202F0907204E0FF24FD602D247F
-:10343F00FE6029240324FB50046021804090720217
-:10344F00E0FE74202FF582E43480F583EEF07428CB
-:10345F002FF582E43480F583EEF08021907202E044
-:10346F00FF907204E0FE2430F582E43480F583EFA0
-:10347F00F074382EF582E43480F583EFF0907239D2
-:0B348F00E004F0E0640A600241C72284
-:10349A00907618E0FFB40523907237E0701D90759E
-:1034AA00ADE090722BF0E02480F0E0908020F09064
-:1034BA008031F0908028F0908039F0EF6406600245
-:1034CA00C191907236E06002C191907640E070310D
-:1034DA009072037403F0907203E0FF75F00AA4245B
-:1034EA00AAF582E43475F583E0FE907229E0FDEED8
-:1034FA006D600EEFC3940A5008907203E004F080E6
-:10350A00D59072397404F0907640E0700890720396
-:10351A00E0907239F0907239E0FD24FE90722AF040
-:10352A00ED75F00AA424ADF582E43475F583E0FF65
-:10353A007E0090750CEEF0A3EFF0700690720274A4
-:10354A0080F090750CE0FEA3E0FF64804E7004905A
-:10355A007202F0EF4E7002C11BEF64804E7002C11E
-:10356A001BEFF8E490750DF0E890750CF0ED75F02E
-:10357A000AA424ACF582E43475F583E0FF90720264
-:10358A00F090750DE02FF090750CE03400F0E0FE3D
-:10359A00A3E0FFE4FCFD7BD67AA5F9F8D3123795B0
-:1035AA00400A90750C74A5F0A374D6F090750DE0DE
-:1035BA00242AF090750CE0345AF0E0FEA3E0780576
-:1035CA00CEA2E713CE13D8F8FF90750CEEF0A3EF56
-:1035DA00F090722CEEF0A3EFF0D394D2EE648094C4
-:1035EA0082400A90722C7402F0A374D2F0C39072D3
-:1035FA002CE0648094805004E4F0A3F090722CE0F4
-:10360A00FEA3E0243AF582EE3472F583E09072026A
-:10361A00F090722AE0FF24FD602D24FE6029240325
-:10362A0024FB500460218040907202E0FE74202F37
-:10363A00F582E43480F583EEF074282FF582E434C1
-:10364A0080F583EEF08021907202E0FF90722AE00A
-:10365A00FE2430F582E43480F583EFF074382EF5D9
-:10366A0082E43480F583EFF0907640E07006907241
-:10367A0039740AF0907239E004F0E0C3940A5002F7
-:08368A00A111E4907640F0224A
-:10369200BB010689828A83E0225002E722BBFE0236
-:0936A200E32289828A83E4932269
-:1036AB00BB010CE58229F582E5833AF583E02250D4
-:1036BB0006E92582F8E622BBFE06E92582F8E2221E
-:0D36CB00E58229F582E5833AF583E4932238
-:1036D800C2D5EC30E709B2D5E4C39DFDE49CFCEE0D
-:1036E80030E715B2D5E4C39FFFE49EFE12381FC32E
-:1036F800E49DFDE49CFC800312381F30D507C3E429
-:063708009FFFE49EFE227B
-:10370E00BB0110E58229F582E5833AF583E0F5F0F9
-:10371E00A3E0225009E92582F886F008E622BBFED6
-:10372E000AE92582F8E2F5F008E222E5832AF5831C
-:08373E00E993F5F0A3E99322E1
-:10374600E88FF0A4CC8BF0A42CFCE98EF0A42CFC22
-:103756008AF0EDA42CFCEA8EF0A4CDA8F08BF0A4A0
-:103766002DCC3825F0FDE98FF0A42CCD35F0FCEBFF
-:103776008EF0A4FEA9F0EB8FF0A4CFC5F02ECD39C4
-:0F378600FEE43CFCEAA42DCE35F0FDE43CFC2231
-:10379500EB9FF5F0EA9E42F0E99D42F0EC6480C8AB
-:0637A50064809845F0224B
-:1037AB00EB9FF5F0EA9E42F0E99D42F0E89C45F074
-:0137BB0022EB
-:0C37BC00ECF0A3EDF0A3EEF0A3EFF02280
-:1037C800A8828583F0D083D0821237DF1237DF12C8
-:1037D80037DF1237DFE473E493A3C583C5F0C583ED
-:1037E800C8C582C8F0A3C583C5F0C583C8C582C84B
-:0137F80022AE
-:1037F900D083D082F8E4937012740193700DA3A35F
-:1038090093F8740193F5828883E473740293686072
-:06381900EFA3A3A380DF72
-:10381F00BC000BBE0029EF8DF084FFADF022E4CC8D
-:10382F00F875F008EF2FFFEE33FEEC33FCEE9DEC56
-:10383F00984005FCEE9DFE0FD5F0E9E4CEFD22ED9C
-:10384F00F8F5F0EE8420D21CFEADF075F008EF2FE6
-:10385F00FFED33FD4007985006D5F0F222C398FDD7
-:05386F000FD5F0EA2274
-:10387400E4907629F0907629E0FF75F00FA42442B5
-:10388400F582E43475F583E0FE907FECE0FDEE6DA7
-:10389400600EEFC394065008907629E004F080D5BA
-:1038A400EFB40608907FB4E04401F022EF75F00F06
-:1038B400A42441F582E43475F583E090762AF0245B
-:1038C400BF7002414124E070024112242160024190
-:1038D4003A907FE9E024FE607D14700221B2240254
-:1038E4006002410A121751907642E0FCA3E0FDA366
-:1038F400E0FEA3E0FF907629E075F00FA42443F5E1
-:1039040082E43475F5831237BC907619E0FFB40174
-:103914001290767C7467F090767D7406F090767ED3
-:10392400740BF0EFB4020FE490767CF090767DF0A7
-:1039340090767E740CF0EFB4030FE490767CF090F4
-:10394400767DF090767E7418F090761A7401F012F9
-:103954003E9F12180022907EC2E0FFE4FCFDFEFBB5
-:10396400FA7901F8123746C8ECC8C9EDC9CAEECADB
-:10397400CBEFCB907EC1E0FEE4FCFD2BFBEA3EFAEC
-:10398400ED39F9EC38F8907EC0E0FFE4FEEB2FFF50
-:10399400EE3AFEED39FDEC38FC907629E075F00F37
-:1039A400A42447F582E43475F5831237BC22907E53
-:1039B400C2E0FFE4FCFDFEFBFA7901F8123746C8C9
-:1039C400ECC8C9EDC9CAEECACBEFCB907EC1E0FE0C
-:1039D400E4FCFD2BFBEA3EFAED39F9EC38F8907E75
-:1039E400C0E0FFE4FEEB2FFFEE3AFEED39FDEC38CC
-:1039F400FC907629E075F00FA4244BF582E434752D
-:103A0400F5831237BC22907FB4E04401F022907F0A
-:103A1400E9E0147019907EC0E0FF907629E075F01B
-:103A24000FA4244FF582E43475F583EFF022907FE0
-:0E3A3400B4E04401F022907FB4E04401F0229F
-:103A4200E4907635F0907635E0FFC394034002416E
-:103A5200FFEF75F00AA424AAF582E43475F583EF2A
-:103A6200F0EF75F00AA424ABF582E43475F583E433
-:103A7200F0EF75F00AA424ACF582E43475F5837492
-:103A8200F0F0EF75F00AA424ADF582E43475F58305
-:103A920074FFF0EF75F00AA424AEF582E43475F5F4
-:103AA20083E4F0EF75F00AA424AFF582E43475F5EF
-:103AB200837480F0EF75F00AA424B0F582E43475C3
-:103AC200F583E4F0EF75F00AA424B1F582E43475CD
-:103AD200F583E4F0EF75F00AA424B2F582E43475BC
-:103AE200F583E4F0EF75F00AA424B3F582E43475AB
-:103AF200F5837401F0907635E004F0414790763C0E
-:103B0200740AF0E4A3F09076357403F090763CE00A
-:103B1200FF907635E0FEC39F400261D290763DE091
-:103B2200FF04F0EE75F00AA424AAF582E43475F5D8
-:103B320083EFF0EE75F00AA424ABF582E43475F558
-:103B420083E4F0EE75F00AA424ACF582E43475F552
-:103B520083745EF0EE75F00AA424ADF582E4347548
-:103B6200F58374BAF0EE75F00AA424AEF582E4345B
-:103B720075F5837405F0EE75F00AA424AFF582E4BE
-:103B82003475F5837480F0EE75F00AA424B0F582E2
-:103B9200E43475F583E4F0EE75F00AA424B1F582FD
-:103BA200E43475F583E4F0EE75F00AA424B2F582EC
-:103BB200E43475F5837415F0EE75F00AA424B3F5B8
-:103BC20082E43475F583E4F0907635E004F0610E1A
-:013BD20022D0
-:103BD300E4907636F0E0FB75F00FA42441F582E41F
-:103BE3003475F5837440F0EB75F00FA42442F5822D
-:103BF300E43475F583740AF0EB75F00FA42443F5F0
-:103C030082E43475F5831237C80000AC44EB75F0D9
-:103C13000FA42447F582E43475F5831237C80000F6
-:103C2300AC44EB75F00FA4244BF582E43475F583B3
-:103C33001237C800017700907636E004F0E0FB7598
-:103C4300F00FA42441F582E43475F5837440F0EB5E
-:103C530075F00FA42442F582E43475F583748CF077
-:103C6300EB75F00FA42443F582E43475F583123722
-:103C7300C80000AC44EB75F00FA42447F582E4348C
-:103C830075F5831237C80000AC44EB75F00FA4241C
-:103C93004BF582E43475F5831237C8000177009041
-:103CA3007636E004F0E0FF75F00FA42441F582E4DA
-:103CB3003475F5837440F0EF75F00FA42442F58258
-:103CC300E43475F583748FF0907636E004F0E0FF0A
-:103CD30075F00FA42441F582E43475F5837441F043
-:103CE300EF75F00FA42442F582E43475F5837484F0
-:103CF300F0907636E004F0E0FF75F00FA42441F570
-:103D030082E43475F5837461F0EF75F00FA42442F7
-:103D1300F582E43475F5837481F0907636E004F02F
-:103D2300E0FF75F00FA42441F582E43475F5837444
-:103D330061F0EF75F00FA42442F582E43475F58346
-:043D43007401F022F5
-:103D4700C0E0C0F0C083C082C0D0E8C0E0E9C0E0F6
-:103D5700EAC0E0EBC0E0ECC0E0EDC0E0EEC0E0EFB1
-:103D6700C0E0907FA2E090767FF0907F74E090763D
-:103D770087F0907F75E0907688F0907F98E0440216
-:103D8700F0907696E0FF20E10C4402F0908003F07B
-:103D9700D232124B2890767FE020E250907687E06F
-:103DA700FEA3E07C002400F534EC3EF533907698D2
-:103DB700E0FDAE33AF341236D8907687EFF0D22FCE
-:103DC700303129203F26C231907F94E054CFF090C4
-:103DD7007F9AE030E404D22DC22C907F9AE020E550
-:103DE70004C22DD22C907F94E04430F01248BD12CB
-:103DF7001B04302F1212421FC22F75E80112168AB8
-:103E070075E80DD22B800575E801C22B202B349065
-:103E17007619E0FFB4010E90767C7467F0A3740600
-:103E2700F0A3740BF0EFB4020B90767CE4F0A3F0F0
-:103E3700A3740CF0EFB4030B90767CE4F0A3F0A32B
-:103E47007418F075CAD375CBFED2CA303404C234A5
-:103E57008002D23430340D907689E0C39403400455
-:103E6700E024FDF05391EF907FAB7402F0F0907F68
-:103E770098E054FDF0D0E0FFD0E0FED0E0FDD0E0C8
-:103E8700FCD0E0FBD0E0FAD0E0F9D0E0F8D0D0D019
-:083E970082D083D0F0D0E032AC
-:103E9F00907692E014601D147002E15424026002C7
-:103EAF00E1E49076947401F0908000F0E490768EC7
-:103EBF00F0D23122907619E0FFB4011BE4907FF22B
-:103ECF00F0907FF37430F0907FFF74FCF090769752
-:103EDF00E054FDF054FBF0EFB4021BE4907FF2F0DE
-:103EEF00907FF37434F0907FFF74FCF0907697E03E
-:103EFF004402F054FBF0EFB40318E4907FF2F0901B
-:103F0F007FF37464F0907FFF74FCF0907697E04439
-:103F1F0004F0907694E04401F0908000F0303F0977
-:103F2F00907697E054FEF08007907697E04401F08A
-:103F3F00907697E0908002F09076987404F09076E7
-:103F4F008E7401F022907619E0FFB4011BE4907F8C
-:103F5F00F2F0907FF37444F0907FFF74FCF0907652
-:103F6F0097E054FDF054FBF0EFB4021BE4907FF2A6
-:103F7F00F0907FF3744CF0907FFF74FCF090769785
-:103F8F00E04402F054FBF0EFB40318E4907FF2F03A
-:103F9F00907FF37494F0907FFF74FCF0907697E02D
-:103FAF004404F0907694E054FEF0908000F0303F9F
-:103FBF0009907697E054FEF08007907697E04401E1
-:103FCF00F0907697E0908002F09076987406F090DB
-:063FDF00768E7402F02250
-:103FE500907FEAE0907682F0E4907691F090769278
-:0B3FF500F0907690F0907693F0D322CD
-:10400000E511D3940050022106907689E0C394080C
-:10401000400221067440250FF582E4347EF583E0EA
-:10402000F517E50D600E908005E517F0907689E0B4
-:1040300004F001DAE5171237F940C1024067054084
-:104040007A0640980740C10C40C10D40C70F40CBD5
-:10405000F640CBF840CBFA40CBFB40CBFC40CBFE4C
-:1040600040CBFF000040DA907E41E0908005F09068
-:104070007689E004F07511018060907E41E09080C7
-:1040800005F0907E42E0908005F0907689E004F0A3
-:10409000E004F07511018042907E41E0908005F0CF
-:1040A000907E42E0908005F0907E43E0908005F0A5
-:1040B000907689E004F0E004F0E004F075110180EE
-:1040C00019D23BD23C8013D23B800F908005E5177C
-:1040D000F0907689E004F0751101203B04050D8015
-:1040E0001F303C1C907E41E0908005F0907E42E0C5
-:1040F000908005F0907689E004F0E004F0751101FD
-:10410000050F15110100E5117010C233F50DF50F03
-:0B411000907FC77404F0C23BC23C2249
-:10411B0090768DE064017027302708C227120800C3
-:10412B0012174A302808C22812387412174A302A3C
-:10413B000EE490768DF0C22A907FB4E04402F090AA
-:10414B00763FE0B40105E4F012326F907641E0B4B3
-:10415B000105E4F012349A907640E0B40103123476
-:10416B009A123000303303124000907F9BE020E422
-:10417B0002C23F907F9BE030E402D23F907F9BE0F6
-:10418B0020E502C23E907F9BE030E502D23EA24189
-:10419B00303F01B3501FA23F9241303F09907697B9
-:1041AB00E054FEF08007907697E04401F09076970C
-:1041BB00E0908002F0303F34907619E0FFB4010EAE
-:1041CB0090767C7467F0A37406F0A3740BF0EFB4D5
-:1041DB00020BE490767CF0A3F0A3740CF0EFB40325
-:1041EB000BE490767CF0A3F0A37418F0A240303E61
-:1041FB0001B3501FA23E9240303E09907695E044A9
-:10420B0004F08007907695E054FBF0907695E09063
-:04421B008001F0220C
-:10421F00907619E064017035907687E0FFD3942D86
-:10422F00402B9076867401F0907685E004F0E0D311
-:10423F00940F4019E4F0EFD394314008907619743D
-:10424F0003F080069076197402F0123E9F90761953
-:10425F00E0B4022C907687E0FFC3942F5022EFD367
-:10426F00942A401C9076867401F0907685E004F0D5
-:10427F00E0D3940F400AE4F090761904F0123E9FB9
-:10428F00907619E0B40226907687E0D39431401DE2
-:10429F009076867401F0907685E004F0E0D3940F69
-:1042AF00400BE4F09076197403F0123E9F9076194C
-:1042BF00E06403703F907687E0FFC3945F503590C2
-:1042CF0076867401F0907685E004F0E0D3940F4089
-:1042DF0023E4F0EFC3942F500CEFD3942A400690B1
-:1042EF0076197401F0EFD3942F400690761974026B
-:1042FF00F0123E9F907686E07005907685F022E46E
-:05430F00907686F0220B
-:10431400E4907696F0908003F0907FE07490F090B3
-:104324007FE17404F0E4907FDDF0907FA1F0538E80
-:10433400F875880575B82075F801438E30F5C87591
-:10434400CA7F75CBF843A820124565C22CC22DC282
-:104354002BC22F907FFC74DDF0907FFF74FFF090F0
-:104364007F97E04401F09076197401F0E49076852B
-:10437400F0A3F0907681F0907680F01249AE120F9F
-:10438400C6124AF1907F97E04408F0E054B9F0D2A5
-:1043940030203018124AA612300012400012421F78
-:1043A4001248BD121B0412166112421F124AA6C201
-:1043B4002FC231C232C234C233C229C227C228E456
-:1043C400F511907689F090763FF0907641F09076F2
-:1043D40040F090768AF0A3F0A304F0E4A3F0907682
-:0343E40099F0222B
-:1043E700124E19400281AC907FEBE024FE601E1450
-:1043F700604614606E147002819D2404600281A5DA
-:104407007405907FD4F07400907FD5F022907FEAF6
-:10441700E0FF124A558B208A218922EA496011CE92
-:10442700EACEEE907FD4F0CFE9CFEF907FD5F022A0
-:10443700907FB4E04401F022907FEAE0FF1247B793
-:104447008B208A218922EA496011CEEACEEE907F3D
-:10445700D4F0CFE9CFEF907FD5F022907FB4E0443E
-:1044670001F022907FEAE0FF907EC0E0FDA3E0FB31
-:104477001217948B208A218922EA496011CEEACE4D
-:10448700EE907FD4F0CFE9CFEF907FD5F022907FE9
-:10449700B4E04401F022907FB4E04401F022907F21
-:0544A700B4E04401F047
-:0144AC0022ED
-:1044AD00C2AFD224907F937430F0907F9C74BBF098
-:1044BD00907F96E04430F0E05430F0907F9474306B
-:1044CD00F0907F9D74CFF0907F9774A0F0907F95C2
-:1044DD0074C0F0907F9E7403F0907F99E030E209F4
-:1044ED0090051974A0F0E4A3F0C225C222C223C224
-:1044FD0026124B28122DA9123BD3124619123A42FD
-:10450D009076687401F0700F124C29124E15124EF0
-:10451D0017121B40121496124314907FAFE0440102
-:10452D00F0907FAEE0441FF0907FAC74FFF0907F71
-:10453D00ADF0907FDEF0907FDFF0907FABF0907F5D
-:10454D00A9F0907FAAF05391EF43D820D2E843D839
-:08455D002053A8A043A880220E
-:1045650090769A7402F0E4907691F0A3F0907690AC
-:10457500F0907693F09076967403F0908003F0E4D3
-:10458500907697F0908002F090769404F0908000F9
-:10459500F0E490768EF090761AF090769504F0C25D
-:1045A5002E907F9BE0FF5410FF7002C23F907F9BCF
-:1045B500E0FF5410FEFFBE1002D23F907F9BE0FF4C
-:1045C5005420FF7002C23E907F9BE0FF5420FEFF07
-:1045D500BE2002D23E303F09907697E054FEF0802F
-:1045E50007907697E04401F0907697E0908002F08E
-:1045F500303E09907695E04404F08007907695E08A
-:1046050054FBF0907695E0908001F0A23E9240A296
-:034615003F924190
-:01461800227F
-:10461900E4907636F0E0FF75F003A42432F582E4E5
-:104629003475F583E4F0EF75F003A42433F582E4DF
-:104639003475F5837401F0907636E004F0E0FF7587
-:10464900F003A42432F582E43475F583E4F0EF75C0
-:10465900F003A42433F582E43475F5837402F090F1
-:104669007636E004F0E0FF75F003A42432F582E425
-:104679003475F583E4F0EF75F003A42433F582E48F
-:104689003475F5837403F0907636E004F0E0FF7535
-:10469900F003A42432F582E43475F583E4F0EF7570
-:1046A900F003A42433F582E43475F5837404F0220D
-:0C46B900787FE4F6D8FD758138024700D8
-:1046C5000207A6E493A3F8E493A34003F68001F25E
-:1046D50008DFF48029E493A3F85407240CC8C333F6
-:1046E500C4540F4420C8834004F456800146F6DFC5
-:1046F500E4800B0102040810204080900C8FE47EBA
-:10470500019360BCA3FF543F30E509541FFEE493B9
-:10471500A360010ECF54C025E060A840B8E493A380
-:10472500FAE493A3F8E493A3C8C582C8CAC583CAAB
-:10473500F0A3C8C582C8CAC583CADFE9DEE780BE63
-:10474500907FECE0907683F0E014601D14602A14ED
-:10475500603714604424047050907691E0907F0097
-:10476500F0907FB57401F08047907692E0907F00DD
-:10477500F0907FB57401F08037907690E0907F00DF
-:10478500F0907FB57401F08027907684E0907F00EB
-:10479500F0907FB57401F08017907693E0907F00DC
-:1047A500F0907FB57401F08007907FB4E04401F08C
-:0247B500D3220D
-:0247B7008F2E43
-:1047B900E4F52F7530FF75310775321AAB30AA3120
-:1047C900A9329000011236ABB4031FAF2F052FEFAA
-:1047D900652E7001221236927E0029FFEE3AC9EF4A
-:1047E900C97530FFF531893280D27B007A007900B2
-:0147F900229D
-:0647FA00124B28C231221F
-:10480000C0E0C0F0C083C082C0D0E8C0E0E9C0E032
-:10481000EAC0E0EBC0E0ECC0E0EDC0E0EEC0E0EFED
-:10482000C0E0C2CAC2CF907F98E04401F0302E03AE
-:104830001214A6907F98E054FEF053A8FA12166165
-:10484000D0E0FFD0E0FED0E0FDD0E0FCD0E0FBD037
-:10485000E0FAD0E0F9D0E0F8D0D0D082D083D0F028
-:03486000D0E03273
-:10486300907FECE0907683F0E014601714602114DD
-:10487300602B14603224047038907FEAE0907691C4
-:10488300F08035907FEAE0907692F0123E9F802888
-:10489300907FEAE0907690F0121800801B907FEAF8
-:1048A300E0907684F08011907FEAE0907693F08038
-:0A48B30007907FB4E04401F0D32227
-:1048BD00302D39C22D907619E0FFB4010DE49076BC
-:1048CD007CF0A374F8F0A3740AF0EFB4020DE49039
-:1048DD00767CF0A374F0F0A3740BF0EFB4030DE449
-:0D48ED0090767CF0A374F8F0A37417F0220D
-:0648FA005391BFD22D32E4
-:10490000022FE700023D4700024DB400024C430075
-:10491000024BE900022FFF00024C5B00024C0A0030
-:10492000024C7200024B5A00024C8900024CA0005B
-:10493000024CB700024CCE00024CE500024CFC00D9
-:10494000024D1300024D2A00024D4100024D580055
-:08495000024D6F00024D8600CC
-:10495800E4907626F0907626E0FF75F003A42434E0
-:10496800F582E43475F583E0FE907FECE0FDEE6DB2
-:10497800600EEFC394045008907626E004F080D5CA
-:10498800EFB40408907FB4E04401F022EF75F0031F
-:10499800A42432F582E43475F583E0907F00F0902A
-:0649A8007FB57401F0224E
-:1049AE009076467480F0E4A3F0A3F0A3F0A3F0A3F6
-:1049BE00F0A3F0A3F0A3F0A37480F0E4A3F0A3F0AF
-:1049CE00A3F0A3F0A3F0A3F0A37440F0E4A3F0A32C
-:1049DE007440F0E4A3F0A3F0A3F0A3F0A3F0A3F0CF
-:1049EE00A37440F0E4A3F0A37440F0E4A3F0A3F0AA
-:0549FE00A3F0A3F0226C
-:104A0300E4907625F0907625E0FF75F003A4243436
-:104A1300F582E43475F583E0FE907FECE0FDEE6D06
-:104A2300600EEFC394045008907625E004F080D51F
-:104A3300EFB40408907FB4E04401F022907EC0E01C
-:104A4300FEEF75F003A42432F582E43475F583EEAA
-:024A5300F0224F
-:104A5500E4FE751DFF751E05751F12AB1DAA1EA967
-:104A65001F9000011236AB6402702FCDEECD0EED16
-:104A75006F70012290000212370E85F01BF51C6243
-:104A85001BE51B621CE51C621B29FDE51B3AC9EDF4
-:104A9500C9751DFFF51E891F80C17B007A0079004D
-:014AA50022EE
-:104AA600E490769BF090769BE0FF04F0EF6008E0E0
-:104AB6002408F8E4F680EE907696E04404F0440884
-:104AC600F0908003F0E4F518D235F50EF510D236E5
-:104AD600751211751322C237C239C238F516F5148C
-:0B4AE600F51AF50DC23BC23CC23D2298
-:104AF100E4FF74562FF582E43476F583E0FE7428E2
-:104B01002FF582E43480F583EEF0745E2FF582E4B4
-:104B11003476F583E0FE74382FF582E43480F58332
-:064B2100EEF00FBF08CC0E
-:014B2700226B
-:104B2800E4907236F0A3F0907F97E054FBF0E490A5
-:104B38007233F0907232F090720104F0E4907233A4
-:104B4800F0907232F090720104F0907F97E0440484
-:024B5800F02249
-:104B5A00C0E0C083C0825391EF907FAAE04402F084
-:104B6A00907FC7E0F511750F00750D00D233D08222
-:054B7A00D083D0E03201
-:104B7F00907FD6E054FBF0E04408F0304204E0446C
-:104B8F0002F07FDC7E05124D9D907FD6E054F7F04A
-:054B9F00E04404F022D7
-:104BA400907FEBE0147014907FE9E0247F7004128E
-:104BB400495822907FB4E04401F022907FB4E0444D
-:034BC40001F022DB
-:104BC700907FEBE0147013907FE9E0147004124AB1
-:104BD7000322907FB4E04401F022907FB4E04401C7
-:024BE700F022BA
-:104BE900C0E0C083C0825391EF907FAB7410F09006
-:104BF9007696E054FDF0908003F0D082D083D0E027
-:014C09003278
-:104C0A00C0E0C083C0825391EF907FAAE04401F0D4
-:0F4C1A00C22990768D7401F0D082D083D0E03221
-:104C2900907FD6E030E712E04401F07F147E001255
-:0A4C39004D9D907FD6E054FEF0225E
-:104C4300C0E0C083C082D2255391EF907FAB74083C
-:084C5300F0D082D083D0E032E2
-:104C5B00C0E0C083C0825391EF907FA9E04401F084
-:074C6B00D082D083D0E032BB
-:104C7200C0E0C083C0825391EF907FA9E04402F06C
-:074C8200D082D083D0E032A4
-:104C8900C0E0C083C0825391EF907FA9E04404F053
-:074C9900D082D083D0E0328D
-:104CA000C0E0C083C0825391EF907FAAE04404F03B
-:074CB000D082D083D0E03276
-:104CB700C0E0C083C0825391EF907FA9E04408F021
-:074CC700D082D083D0E0325F
-:104CCE00C0E0C083C0825391EF907FAAE04408F009
-:074CDE00D082D083D0E03248
-:104CE500C0E0C083C0825391EF907FA9E04410F0EB
-:074CF500D082D083D0E03231
-:104CFC00C0E0C083C0825391EF907FAAE04410F0D3
-:074D0C00D082D083D0E03219
-:104D1300C0E0C083C0825391EF907FA9E04420F0AC
-:074D2300D082D083D0E03202
-:104D2A00C0E0C083C0825391EF907FAAE04420F094
-:074D3A00D082D083D0E032EB
-:104D4100C0E0C083C0825391EF907FA9E04440F05E
-:074D5100D082D083D0E032D4
-:104D5800C0E0C083C0825391EF907FAAE04440F046
-:074D6800D082D083D0E032BD
-:104D6F00C0E0C083C0825391EF907FA9E04480F0F0
-:074D7F00D082D083D0E032A6
-:104D8600C0E0C083C0825391EF907FAAE04480F0D8
-:074D9600D082D083D0E0328F
-:104D9D008E358F36E5361536AE35700215354E60CB
-:074DAD000512148580EE22BF
-:104DB400C0E0C083C0825391EF907FAB7404F0D005
-:064DC40082D083D0E03232
-:104DCA00907682E0907F00F0907FB57401F0D32254
-:0C4DDA00C237E4F50EF510C236F51422C5
-:094DE600C22553D8EF43D8203256
-:074DEF005398FE5398FD32BA
-:074DF60053C0FE53C0FD3263
-:064DFD0053917FD22C321D
-:044E03005391DF32B6
-:044E070053D8F73253
-:044E0B001217302228
-:034E0F00C28D321F
-:034E1200C28F321A
-:024E1500D322A6
-:024E1700D322A4
-:024E1900D322A2
-:024E1B00D322A0
-:024E1D00D3229E
-:024E1F00D3229C
-:024E2100C322AA
-:00000001FF
-/*
-Source: EMI62MFW.HEX
-VERSION=1.04.062
-DATE=16.10.2002
-*/
diff --git a/firmware/emi62/spdif.HEX b/firmware/emi62/spdif.HEX
deleted file mode 100644
index 322d50c9cf4d..000000000000
--- a/firmware/emi62/spdif.HEX
+++ /dev/null
@@ -1,1257 +0,0 @@
-:030000000245F9BD
-:03000300020FFDEC
-:03000B00024D9B08
-:030013000217FDD4
-:03001B00024D9EF5
-:03002300024D7516
-:03002B000246F793
-:03003300024D6C0F
-:03003B00024D7CF7
-:030043000249006F
-:03004B00024D8FD4
-:03005300024D83D8
-:03005B00024D89CA
-:03006300024D93B8
-:1005000012011001000000406A08110100010102FF
-:1005100000010902AC01030100803209040000005F
-:10052000010100000A2401000156000201020C240E
-:10053000020101010002000000000D240605010275
-:10054000030000000000000924030204030005006A
-:100550000C24020305020006000000001524060614
-:100560000302000003000300030003000300030074
-:100570000009240304010100060009040100000130
-:100580000200000904010102010200000724010128
-:10059000000100112402010202100344AC0080BBE0
-:1005A0000000770109050A05840101008F07250174
-:1005B0000100000009058F01030001050009040185
-:1005C00002020102000007240101000100112402BF
-:1005D000010203180344AC0080BB00007701090549
-:1005E0000A05460201008F072501010000000905E8
-:1005F0008F01030001050009040200000102000050
-:1006000009040201010102000007240104000100A5
-:100610000E2402010602100244AC0080BB00090552
-:100620008C054C02010000072501000200000904AE
-:1006300002020101020000072401040001000E244F
-:1006400002010603180244AC0080BB0009058C05BA
-:1006500072030100000725010002000009040203E3
-:10066000010102000007240104000100112402011D
-:100670000202100344AC0080BB0000770109058C26
-:1006800005840101000007250100020000090402A1
-:1006900004010102000007240104000100112402EA
-:1006A000010203180344AC0080BB00007701090578
-:1006B0008C0546020100000725010002000004032A
-:1006C0000904180345006D006100670069006300BC
-:1006D000200047006D0062004800220345006D00C5
-:1006E0006100670069006300200045004D0049007B
-:1006F000200036007C00320020006D002A034300F9
-:100700006F006E006600690067007500720061008E
-:10071000740069006F006E002000530074007200C6
-:1007200069006E006700220349006E0074006500D6
-:1007300072006600610063006500200053007400D1
-:0A074000720069006E0067000000FF
-:10074A0090769A7402F0E4907691F0A3F090769005
-:10075A00F0907693F09076967403F0908003F0E42C
-:10076A00907697F0908002F090769404F090800052
-:10077A00F0E490768EF090761AF090769504F0C2B6
-:10078A002E907F9BE0FF5410FF7002C23F907F9B28
-:10079A00E0FF5410FEFFBE1002D23F907F9BE0FFA5
-:1007AA005420FF7002C23E907F9BE0FF5420FEFF60
-:1007BA00BE2002D23E303F09907697E054FEF08088
-:1007CA0007907697E04401F0907697E0908002F0E7
-:1007DA00303E09907695E04404F08007907695E0E3
-:1007EA0054FBF0907695E0908001F0A23E9240A2F0
-:0307FA003F9241EA
-:0107FD0022D9
-:0207FE00D32204
-:10080000E4907631F0907631E0FF75F003A4240F88
-:10081000F582E43475F583E0FE907FEDE0FDEE6D4A
-:10082000600EEFC3940B5008907631E004F080D551
-:10083000EFB40B08907FB4E04401F022EF75F003B1
-:10084000A4240EF582E43475F583E0907633F02429
-:10085000F0600A240E60028187124B3E22907FEDE9
-:10086000E0640570519076187405F0907637740145
-:10087000F09076397403F0907621F0E4907620F0D1
-:10088000907FEAE0F4602F907620E0FF75F00AA4F4
-:1008900024AAF582E43475F583E0FE907FEAE0FD5A
-:1008A000EE6D6012907621E0FEEFC39E50089076C8
-:1008B00020E004F080D1907FEDE0640670529076E5
-:1008C000187406F09076377404F0907639740AF054
-:1008D000907621F09076207403F0907FEAE0F46047
-:1008E0002F907620E0FF75F00AA424AAF582E43464
-:1008F00075F583E0FE907FEAE0FDEE6D6012907684
-:1009000021E0FEEFC39E5008907620E004F080D1F5
-:10091000907620E0FF75F00AA424AAF582E43475ED
-:10092000F583E0907229F0E490763BF0907621E038
-:10093000FEEF6E7008907FB4E04401F022907FEBF0
-:10094000E014601314700221E224026002817F909F
-:100950007FB4E04401F022907FE9E014707C907F46
-:10096000EAE0F47048907637E0907620F09076399F
-:10097000E0FE907620E0FDC39E502B90763BE0FE9B
-:1009800004F074C02EF582E4347EF583E0FEED754C
-:10099000F00AA424ABF582E43475F583EEF090768A
-:1009A00020E004F080C790763F7401F022907EC072
-:1009B000E0FEEF75F00AA424ABF582E43475F5830C
-:1009C000EEF0E0B4010890763E7401F08005E4900A
-:1009D000763EF090763F7401F022907FB4E04401BF
-:1009E000F022907FE9E024FE700241A314700261BE
-:1009F0003F14700261DB240360028177907FEAE09C
-:100A0000F4706B907637E0907620F0907639E0FFC6
-:100A1000907620E0FEC39F504E90763BE0FF04F0BE
-:100A200074C02FF582E4347EF583E0FFEE75F00AA2
-:100A3000A424ACF582E43475F583EFF090763BE0C6
-:100A4000FF04F074C02FF582E4347EF583E0FFEEFE
-:100A500075F00AA424ADF582E43475F583EFF090C7
-:100A60007620E004F080A49076407401F022907E1D
-:100A7000C0E0FF907620E0FE75F00AA424ACF58279
-:100A8000E43475F583EFF0907EC1E0FFEE75F00A77
-:100A9000A424ADF582E43475F583EFF090764174CB
-:100AA00001F022907FEAE0F47066907637E090766D
-:100AB00020F0907639E0FF907620E0FEC39F400260
-:100AC000818E90763BE0FF04F074C02FF582E43411
-:100AD0007EF583E0FFEE75F00AA424AEF582E434DF
-:100AE00075F583EFF090763BE0FF04F074C02FF5CE
-:100AF00082E4347EF583E0FFEE75F00AA424AFF5BE
-:100B000082E43475F583EFF0907620E004F080A263
-:100B1000907EC0E0FF907620E0FE75F00AA424AE3F
-:100B2000F582E43475F583EFF0907EC1E0FFEE7559
-:100B3000F00AA424AFF582E43475F583EFF0229037
-:100B40007FEAE0F47066907637E0907620F0907659
-:100B500039E0FF907620E0FEC39F4002818E9076C0
-:100B60003BE0FF04F074C02FF582E4347EF583E0AF
-:100B7000FFEE75F00AA424B0F582E43475F583EF36
-:100B8000F090763BE0FF04F074C02FF582E4347EF1
-:100B9000F583E0FFEE75F00AA424B1F582E4347524
-:100BA000F583EFF0907620E004F080A2907EC0E024
-:100BB000FF907620E0FE75F00AA424B0F582E434BC
-:100BC00075F583EFF0907EC1E0FFEE75F00AA42486
-:100BD000B1F582E43475F583EFF022907FEAE0F41A
-:100BE0007066907637E0907620F0907639E0FF904E
-:100BF0007620E0FEC39F4002818E90763BE0FF04AA
-:100C0000F074C02FF582E4347EF583E0FFEE75F0DA
-:100C10000AA424B2F582E43475F583EFF090763BB4
-:100C2000E0FF04F074C02FF582E4347EF583E0FF2A
-:100C3000EE75F00AA424B3F582E43475F583EFF081
-:100C4000907620E004F080A2907EC0E0FF907620B5
-:100C5000E0FE75F00AA424B2F582E43475F583EF62
-:100C6000F0907EC1E0FFEE75F00AA424B3F582E4B3
-:100C70003475F583EFF022907FB4E04401F02290C8
-:0F0C80007FB4E04401F022907FB4E04401F02201
-:100C8F004176680141766A0241766B0AC120C12123
-:020C9F00C12F63
-:040CA1004176230075
-:100CA500417201014572050002C9000045720A0042
-:100CB500010203044D720FD100D1000000000000B5
-:100CC500282809004D721C010001020304050607CE
-:100CD50008090A0B41722E2241722F2341723020DE
-:100CE5004172312162D2723A00000000000000001A
-:100CF50000000000000000000000000000000000EF
-:100D050000000000000000000000000000000000DE
-:100D150000000000000000000000000000000000CE
-:100D250000000000000000000000000000000000BE
-:100D350000000000000000000000000000000000AE
-:100D4500000000000000000000000000000000009E
-:100D5500000000000000000000000000000000008E
-:100D6500000000000000000000000000000000007E
-:100D75000000000000000000000001010101010168
-:100D8500010101010101010101010101010101014E
-:100D9500010101010101010101010101010101013E
-:100DA500010101010101010101010101010101012E
-:100DB5000101010101010101020202020202020216
-:100DC50002020202020202020202020202020202FE
-:100DD50002020202020202020202020202020202EE
-:100DE50002020202020202020202020202020202DE
-:100DF50002020202020303030303030303030303C3
-:100E050003030303030303030303030303030303AD
-:100E1500030303030303030303030303030303039D
-:100E2500030303030303030303030303030303038D
-:100E3500030304040404040404040404040404046F
-:100E4500040404040404040404040404040404045D
-:100E5500040404040404040404040404040404044D
-:100E6500040404040404040404040404040404043D
-:100E7500050505050505050505050505050505051D
-:100E8500050505050505050505050505050505050D
-:100E950005050505050505050505050505050505FD
-:100EA50005050505050505050505050505050606EB
-:100EB50006060606060606060606060606060606CD
-:100EC50006060606060606060606060606060606BD
-:100ED50006060606060606060606060606060606AD
-:100EE5000606060606060606060606070707080896
-:100EF500080909090A0A0A0B0B0B0C0C0C0D0D0D40
-:100F05000E0E0E0F0F0F10101011111112121213D9
-:100F15001313141414151515161616171717181874
-:100F250018191919191A1A1A1A1B1B1B1B1C1C1C18
-:100F35001C1D1D1D1D1E1E1E1E1F1F1F1F202020C8
-:100F45002121212222222323242425252626272761
-:100F5500282829292A2A2B2B2C2C2D2D2E2E2F2FD4
-:100F65003030313132323333343435353636373744
-:100F7500383839393A3A3B3C3D3E3F40414243449B
-:100F85004546474849494A4B4B4C4D4E4F505152A7
-:100F95005354555556565757585A5B5D5E5F6162B7
-:100FA500636465666768696A6B6C6D6F717273748B
-:100FB50075767778797A7B7C7E80013701013800F8
-:010FC500002B
-:100FC600E4FF74462FF582E43476F583E0FE742060
-:100FD6002FF582E43480F583EEF0744E2FF582E42B
-:100FE6003476F583E0FE74302FF582E43480F583A1
-:060FF600EEF00FBF08CC75
-:010FFC0022D2
-:030FFD00C2893274
-:10100000E490762CF090762CE0FF75F003A4240F8A
-:10101000F582E43475F583E0FE907FEDE0FDEE6D42
-:10102000600EEFC3940B500890762CE004F080D54E
-:10103000EFB40B08907FB4E04401F022EF75F003A9
-:10104000A4240EF582E43475F583E090762EF02426
-:10105000F0600A240F6002817D124B1B22907FED0D
-:10106000E0640570519076187405F090763874013C
-:10107000F090763A7403F090761CF0E490761BF0D2
-:10108000907FEAE0F4602F90761BE0FF75F00AA4F1
-:1010900024AAF582E43475F583E0FE907FEAE0FD52
-:1010A000EE6D601290761CE0FEEFC39E50089076C5
-:1010B0001BE004F080D1907FEDE0640670529076E2
-:1010C000187406F09076387404F090763A740AF04A
-:1010D00090761CF090761B7403F0907FEAE0F46049
-:1010E0002F90761BE0FF75F00AA424AAF582E43461
-:1010F00075F583E0FE907FEAE0FDEE6D601290767C
-:101100001CE0FEEFC39E500890761BE004F080D1F7
-:10111000E490761EF090761CE0FF90761BE0FE6F68
-:101120007008907FB4E04401F022907FEBE01460FF
-:101130001314700221BF240260028175907FB4E015
-:101140004401F022907FE9E0247F706B907FEAE019
-:10115000F4704A907638E090761BF090763AE0FF93
-:1011600090761BE0FDC39F502BED75F00AA424ABD5
-:10117000F582E43475F583E0FF90761EE0FD04F01F
-:1011800074002DF582E4347FF583EFF090761BE058
-:1011900004F080C790761EE0907FB5F022EE75F0E7
-:1011A0000AA424ABF582E43475F583E0907F00F067
-:1011B000907FB57401F022907FB4E04401F022905A
-:1011C0007FE9E0247E7002417E1470026123147076
-:1011D0000261C824036002816D907FEAE0F4706DC3
-:1011E000907638E090761BF090763AE0FF90761B90
-:1011F000E0C39F504FE0FF75F00AA424ACF582E4F1
-:101200003475F583E0FE90761EE0FD04F074002D49
-:10121000F582E4347FF583EEF0EF75F00AA424AD97
-:10122000F582E43475F583E0FF90761EE0FE04F06D
-:1012300074002EF582E4347FF583EFF090761BE0A6
-:1012400004F080A490761EE0907FB5F02290761B8B
-:10125000E0FF75F00AA424ACF582E43475F583E070
-:10126000907F00F0EF75F00AA424ADF582E43475A8
-:10127000F583E0907F01F0907FB57402F022907FBB
-:10128000EAE0F4706D907638E090761BF090763A54
-:10129000E0FF90761BE0C39F504FE0FF75F00AA47B
-:1012A00024AEF582E43475F583E0FE90761EE0FD11
-:1012B00004F074002DF582E4347FF583EEF0EF75D1
-:1012C000F00AA424AFF582E43475F583E0FF90764C
-:1012D0001EE0FE04F074002EF582E4347FF583EF07
-:1012E000F090761BE004F080A490761EE0907FB52D
-:1012F000F02290761BE0FF75F00AA424AEF582E49C
-:101300003475F583E0907F00F0EF75F00AA424AF08
-:10131000F582E43475F583E0907F01F0907FB57439
-:1013200002F022907FEAE0F4706D907638E09076DB
-:101330001BF090763AE0FF90761BE0C39F504FE0A1
-:10134000FF75F00AA424B0F582E43475F583E0FE5D
-:1013500090761EE0FD04F074002DF582E4347FF5F4
-:1013600083EEF0EF75F00AA424B1F582E43475F54C
-:1013700083E0FF90761EE0FE04F074002EF582E418
-:10138000347FF583EFF090761BE004F080A4907634
-:101390001EE0907FB5F02290761BE0FF75F00AA466
-:1013A00024B0F582E43475F583E0907F00F0EF75AA
-:1013B000F00AA424B1F582E43475F583E0907F014E
-:1013C000F0907FB57402F022907FEAE0F4706D90A7
-:1013D0007638E090761BF090763AE0FF90761BE04E
-:1013E000C39F504FE0FF75F00AA424B2F582E434A5
-:1013F00075F583E0FE90761EE0FD04F074002DF597
-:1014000082E4347FF583EEF0EF75F00AA424B3F59F
-:1014100082E43475F583E0FF90761EE0FE04F074FC
-:10142000002EF582E4347FF583EFF090761BE00424
-:10143000F080A490761EE0907FB5F02290761BE0BD
-:10144000FF75F00AA424B2F582E43475F583E090C8
-:101450007F00F0EF75F00AA424B3F582E43475F54B
-:1014600083E0907F01F0907FB57402F022907FB40A
-:10147000E04401F022907FB4E04401F022907FB478
-:05148000E04401F02230
-:101485007400F58690FDA57C05A3E582458370F97A
-:011495002234
-:10149600907FD6E04480F0438701000000000022E0
-:1014A600C0D0C0E08FE0C0E08EE0C0E08DE0C0E0DC
-:1014B6008CE0C0E0C082C0830586C084C0857D0004
-:1014C600907FE3747BF0A37480F07C11907F99E0A9
-:1014D6005440DC030214F3B40013907FE27440F02E
-:1014E600907FE5F0907FE27400F00214D29076903F
-:1014F600E0B4011290768FE02DFD907FE27480F0CB
-:10150600907F6C021557B4021290768FE02DFD90F5
-:101516007FE27480F0907F6C021596B40312907689
-:101526008FE02DFD907FE27480F0907F6C0215E1D4
-:10153600B4041290768FE02DFD907FE27480F090D7
-:101546007F6C021610907FE27480F0907F6C02161A
-:1015560040F0F0F0F0F0F0F0F0F0F0F0F0DDF27DB9
-:10156600020586907FE27400F0907F9BE05404B4FD
-:1015760000050586021640907FE27480F00586F02D
-:10158600F0F0F0F0F0F0F0F0F0F0F0DDD4021640FC
-:10159600F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F045
-:1015A600F0F0DDEC7D020586907FE27400F0907F1E
-:1015B6009BE05404B400050586021640907FE27451
-:1015C60080F00586F0F0F0F0F0F0F0F0F0F0F0F0DA
-:0615D600F0F0F0F0F0F06F
-:1015DC00DDCE021640F0F0F0F0DDFA7D02058690CB
-:1015EC007FE27400F0907F9BE05404B40005058604
-:1015FC00021640907FE27480F00586F0F0F0F0DD8A
-:10160C00DC021640F0F0F0F0F0F0DDF87D0205861B
-:10161C00907FE27400F0907F9BE05404B4000505C9
-:10162C0086021640907FE27480F00586F0F0F0F0B0
-:10163C00F0F0DDDA907FE27400F0D085D08405867E
-:10164C00D083D082D0E0FCD0E0FDD0E0FED0E0FF33
-:05165C00D0E0D0D02217
-:10166100C0D0C0E0C082C08390767CE0907F6FF0F4
-:1016710090767DE0907F6FF090767EE0907F6FF0C6
-:09168100D083D082D0E0D0D02249
-:10168A00C0D0C0E08FE0C0E08EE0C0E0C082C0837E
-:10169A000586C084C085907687E0FFBF00030217E5
-:1016AA0001907F96E04480F0907FE27480F0907F12
-:1016BA0062E00586907FE27400F0907F96E0547FA6
-:1016CA00F0907FE27480F090768EE0B40105058692
-:1016DA000216F6B4020505860216EB05860216FB0B
-:1016EA00E0E0E0E0E0E0DFF80216FBE0E0E0E0DF67
-:1016FA00FA907FE27400F0D085D0840586D083D03A
-:0C170A0082D0E0FED0E0FFD0E0D0D02282
-:10171600C082C083C0E0E8C0E078D1E814F870FB6E
-:0A172600D0E0F8D0E0D083D082229A
-:10173000C082C083C0E0E8C0E07878E814F870FBAD
-:0A174000D0E0F8D0E0D083D0822280
-:07174A00907FC57402F0223C
-:10175100907EC0E0907645F0907EC1E0907644F0B6
-:10176100907EC2E0907643F0B40003021778907641
-:10177100197403F002178E907644E0B4BB09907699
-:10178100197402F002178E9076197401F090764266
-:03179100E4F0225F
-:041794008D298B2AE6
-:101798001249FFEA4960571236927E0029FFEE3A55
-:1017A800C9EFC9752BFFF52C892DAB2BAA2CA92DB8
-:1017B8009000011236ABFF64046005EF6405702EDB
-:1017C800EFB404159000021236AB6529700B900037
-:1017D800031236AB652A7001221236927E0029FF69
-:1017E800EE3AC9EFC9752BFFF52C892D80BC7B001B
-:0417F8007A007900FA
-:0117FC0022CA
-:0317FD00C28B326A
-:10180000907690E014603714700201D814700221B1
-:1018100072147002413B240460026103907FFC74E7
-:10182000CCF0907FFF74FCF0907695E04401F0548A
-:1018300005F0908001F0E490761AF0C22E229076A6
-:1018400095E04401F04402F0303E06E04404F080AC
-:1018500007907695E054FBF090761AE0B40108907A
-:101860007695E0908001F0907619E0FFB401229027
-:101870007FFC7474F0907FFF74FCF090768F742B73
-:10188000F0907697E054FDF0E4907681F0907680C9
-:10189000F0EFB40222907FFC7468F0907FFF74FC3C
-:1018A000F090768F742FF0907697E04402F0E490F9
-:1018B0007681F0907680F0303F09907697E054FE84
-:1018C000F08007907697E04401F0907697E054FB23
-:1018D000F0908002F0D22E22907695E054FEF044F3
-:1018E00002F0303E06E04404F08007907695E05424
-:1018F000FBF090761AE0B40108907695E0908001B4
-:10190000F0907619E0FFB40122907FFC7430F090E3
-:101910007FFF74FCF090768F742BF0907697E054F4
-:10192000FDF0E4907681F0907680F0EFB4022290A2
-:101930007FFC741CF0907FFF74FCF090768F742F06
-:10194000F0907697E04402F0E4907681F090768013
-:10195000F0303F09907697E054FEF080079076973C
-:10196000E04401F0907697E054FBF0908002F0D2D2
-:101970002E22907695E04401F04402F04408F030C5
-:101980003E06E04404F08007907695E054FBF0902A
-:10199000761AE0B40108907695E0908001F0907698
-:1019A00019E0FFB40125907FFC74CCF0907FFF74A8
-:1019B000FCF090768F742BF0907697E054FDF05405
-:1019C000FBF0E4907681F0907680F0EFB402259001
-:1019D0007FFC74C8F0907FFF74FCF090768F742FBA
-:1019E000F0907697E04402F054FBF0E4907681F0BA
-:1019F000907680F0EFB40325907FFC7498F0907F90
-:101A0000FF74FCF090768F745FF0907697E054FD51
-:101A1000F04404F0E4907681F0907680F0303F0955
-:101A2000907697E054FEF08007907697E04401F0BE
-:101A3000907697E0908002F0D22E22907695E05436
-:101A4000FEF04402F04408F0303E06E04404F0802A
-:101A500007907695E054FBF090761AE0B401089078
-:101A60007695E0908001F0907619E0FFB401259022
-:101A70007FFC74B4F0907FFF74FCF090768F742B31
-:101A8000F0907697E054FDF054FBF0E4907681F00E
-:101A9000907680F0EFB40225907FFC74B0F0907FD8
-:101AA000FF74FCF090768F742FF0907697E04402EC
-:101AB000F054FBF0E4907681F0907680F0EFB40380
-:101AC00025907FFC7468F0907FFF74FCF090768F17
-:101AD000745FF0907697E054FDF04404F0E4907663
-:101AE00081F0907680F0303F09907697E054FEF0D8
-:101AF0008007907697E04401F0907697E09080021E
-:041B0000F0D22E22CF
-:101B0400302C38C22C907619E0FFB4010E90767C0C
-:101B140074C0F0A37414F0A3740BF0EFB4020DE4DA
-:101B240090767CF0A37410F0A3740CF0EFB4030B64
-:0C1B3400E490767CF0A37418F0A3F0227B
-:101B40000000000000000000000000000000000095
-:101B50000000000000000000000000000000000085
-:101B60000000000000000000000000000000000075
-:101B70000000000000000000000000000000000065
-:101B80000000000000000000000000000000000055
-:101B90000000000000000000000000000000000045
-:101BA0000000000000000000000000000000000035
-:101BB0000000000000000000000000000000000025
-:101BC0000000000000000000000000000000000015
-:101BD0000000000000000000000000000000000005
-:101BE00000000000000000000000000000000000F5
-:101BF00000000000000000000000000000000000E5
-:101C000000000000000000000000000000000000D4
-:101C100000000000000000000000000000000000C4
-:101C200000000000000000000000000000000000B4
-:101C300000000000000000000000000000000000A4
-:101C40000000000000000000000000000000000094
-:101C50000000000000000000000000000000000084
-:101C60000000000000000000000000000000000074
-:101C70000000000000000000000000000000000064
-:101C80000000000000000000000000000000000054
-:101C90000000000000000000000000000000000044
-:101CA0000000000000000000000000000000000034
-:101CB0000000000000000000000000000000000024
-:101CC0000000000000000000000000000000000014
-:101CD0000000000000000000000000000000000004
-:101CE00000000000000000000000000000000000F4
-:101CF00000000000000000000000000000000000E4
-:101D000000000000000000000000000000000000D3
-:101D100000000000000000000000000000000000C3
-:101D200000000000000000000000000000000000B3
-:101D300000000000000000000000000000000000A3
-:101D40000000000000000000000000000000000093
-:101D50000000000000000000000000000000000083
-:101D60000000000000000000000000000000000073
-:101D70000000000000000000000000000000000063
-:101D80000000000000000000000000000000000053
-:101D90000000000000000000000000000000000043
-:101DA0000000000000000000000000000000000033
-:101DB0000000000000000000000000000000000023
-:101DC0000000000000000000000000000000000013
-:101DD0000000000000000000000000000000000003
-:101DE00000000000000000000000000000000000F3
-:101DF00000000000000000000000000000000000E3
-:101E000000000000000000000000000000000000D2
-:101E100000000000000000000000000000000000C2
-:101E200000000000000000000000000000000000B2
-:101E300000000000000000000000000000000000A2
-:101E40000000000000000000000000000000000092
-:101E50000000000000000000000000000000000082
-:101E60000000000000000000000000000000000072
-:101E70000000000000000000000000000000000062
-:101E80000000000000000000000000000000000052
-:101E90000000000000000000000000000000000042
-:101EA0000000000000000000000000000000000032
-:0E1EB000000000000000000000000000000024
-:101EBE000000000000000000000000000000000014
-:101ECE000000000000000000000000000000000004
-:101EDE0000000000000000000000000000000000F4
-:101EEE0000000000000000000000000000000000E4
-:101EFE0000000000000000000000000000000000D4
-:101F0E0000000000000000000000000000000000C3
-:101F1E0000000000000000000000000000000000B3
-:101F2E0000000000000000000000000000000000A3
-:021F3E000000A1
-:101F40000000000000000000000000000000000091
-:101F50000000000000000000000000000000000081
-:101F60000000000000000000000000000000000071
-:101F70000000000000000000000000000000000061
-:101F80000000000000000000000000000000000051
-:101F90000000000000000000000000000000000041
-:101FA0000000000000000000000000000000000031
-:101FB0000000000000000000000000000000000021
-:101FC0000000000000000000000000000000000011
-:101FD0000000000000000000000000000000000001
-:101FE00000000000000000000000000000000000F1
-:101FF00000000000000000000000000000000000E1
-:1020000000000000000000000000000000000000D0
-:1020100000000000000000000000000000000000C0
-:1020200000000000000000000000000000000000B0
-:1020300000000000000000000000000000000000A0
-:102040000000000000000000000000000000000090
-:102050000000000000000000000000000000000080
-:102060000000000000000000000000000000000070
-:102070000000000000000000000000000000000060
-:102080000000000000000000000000000000000050
-:102090000000000000000000000000000000000040
-:1020A0000000000000000000000000000000000030
-:1020B0000000000000000000000000000000000020
-:1020C0000000000000000000000000000000000010
-:1020D0000000000000000000000000000000000000
-:1020E00000000000000000000000000000000000F0
-:1020F00000000000000000000000000000000000E0
-:1021000000000000000000000000000000000000CF
-:1021100000000000000000000000000000000000BF
-:1021200000000000000000000000000000000000AF
-:10213000000000000000000000000000000000009F
-:10214000000000000000000000000000000000008F
-:10215000000000000000000000000000000000007F
-:10216000000000000000000000000000000000006F
-:10217000000000000000000000000000000000005F
-:10218000000000000000000000000000000000004F
-:10219000000000000000000000000000000000003F
-:1021A000000000000000000000000000000000002F
-:1021B000000000000000000000000000000000001F
-:1021C000000000000000000000000000000000000F
-:1021D00000000000000000000000000000000000FF
-:1021E00000000000000000000000000000000000EF
-:1021F00000000000000000000000000000000000DF
-:1022000000000000000000000000000000000000CE
-:1022100000000000000000000000000000000000BE
-:1022200000000000000000000000000000000000AE
-:10223000000000000000000000000000000000009E
-:10224000000000000000000000000000000000008E
-:10225000000000000000000000000000000000007E
-:10226000000000000000000000000000000000006E
-:10227000000000000000000000000000000000005E
-:10228000000000000000000000000000000000004E
-:10229000000000000000000000000000000000003E
-:1022A000000000000000000000000000000000002E
-:1022B000000000000000000000000000000000001E
-:1022C000000000000000000000000000000000000E
-:1022D00000000000000000000000000000000000FE
-:1022E00000000000000000000000000000000000EE
-:1022F00000000000000000000000000000000000DE
-:1023000000000000000000000000000000000000CD
-:1023100000000000000000000000000000000000BD
-:1023200000000000000000000000000000000000AD
-:10233000000000000000000000000000000000009D
-:10234000000000000000000000000000000000008D
-:10235000000000000000000000000000000000007D
-:10236000000000000000000000000000000000006D
-:0E23700000000000000000000000000000005F
-:10237E00000000000000000000000000000000004F
-:10238E00000000000000000000000000000000003F
-:10239E00000000000000000000000000000000002F
-:1023AE00000000000000000000000000000000001F
-:1023BE00000000000000000000000000000000000F
-:1023CE0000000000000000000000000000000000FF
-:1023DE0000000000000000000000000000000000EF
-:1023EE0000000000000000000000000000000000DF
-:1023FE0000000000000000000000000000000000CF
-:10240E0000000000000000000000000000000000BE
-:10241E0000000000000000000000000000000000AE
-:10242E00000000000000000000000000000000009E
-:10243E00000000000000000000000000000000008E
-:10244E00000000000000000000000000000000007E
-:10245E00000000000000000000000000000000006E
-:10246E00000000000000000000000000000000005E
-:10247E00000000000000000000000000000000004E
-:10248E00000000000000000000000000000000003E
-:10249E00000000000000000000000000000000002E
-:1024AE00000000000000000000000000000000001E
-:1024BE00000000000000000000000000000000000E
-:1024CE0000000000000000000000000000000000FE
-:1024DE0000000000000000000000000000000000EE
-:1024EE0000000000000000000000000000000000DE
-:1024FE0000000000000000000000000000000000CE
-:10250E0000000000000000000000000000000000BD
-:10251E0000000000000000000000000000000000AD
-:10252E00000000000000000000000000000000009D
-:10253E00000000000000000000000000000000008D
-:10254E00000000000000000000000000000000007D
-:10255E00000000000000000000000000000000006D
-:10256E00000000000000000000000000000000005D
-:10257E00000000000000000000000000000000004D
-:10258E00000000000000000000000000000000003D
-:10259E00000000000000000000000000000000002D
-:1025AE00000000000000000000000000000000001D
-:1025BE00000000000000000000000000000000000D
-:1025CE0000000000000000000000000000000000FD
-:1025DE0000000000000000000000000000000000ED
-:1025EE0000000000000000000000000000000000DD
-:1025FE0000000000000000000000000000000000CD
-:10260E0000000000000000000000000000000000BC
-:10261E0000000000000000000000000000000000AC
-:10262E00000000000000000000000000000000009C
-:10263E00000000000000000000000000000000008C
-:10264E00000000000000000000000000000000007C
-:10265E00000000000000000000000000000000006C
-:10266E00000000000000000000000000000000005C
-:10267E00000000000000000000000000000000004C
-:10268E00000000000000000000000000000000003C
-:10269E00000000000000000000000000000000002C
-:1026AE00000000000000000000000000000000001C
-:1026BE00000000000000000000000000000000000C
-:1026CE0000000000000000000000000000000000FC
-:1026DE0000000000000000000000000000000000EC
-:0E26EE000000000000000000000000000000DE
-:1026FC0000000000000000000000000000000000CE
-:10270C0000000000000000000000000000000000BD
-:10271C0000000000000000000000000000000000AD
-:10272C00000000000000000000000000000000009D
-:10273C00000000000000000000000000000000008D
-:10274C00000000000000000000000000000000007D
-:10275C00000000000000000000000000000000006D
-:10276C00000000000000000000000000000000005D
-:10277C00000000000000000000000000000000004D
-:10278C00000000000000000000000000000000003D
-:10279C00000000000000000000000000000000002D
-:1027AC00000000000000000000000000000000001D
-:1027BC00000000000000000000000000000000000D
-:1027CC0000000000000000000000000000000000FD
-:1027DC0000000000000000000000000000000000ED
-:1027EC0000000000000000000000000000000000DD
-:0527FC000000000022B6
-:10280100C220C221C22A907FE8E01237F9283000A5
-:10281100288C0128A2022A1F212A6A22293D802907
-:102821007D8129D1822A84A12ABAA200002ABF90DF
-:102831007FE9E014601124FE602824FE603B24FC43
-:102841007040124BA041CB124DA7400241CB907F6B
-:10285100EAE0B40104C22241CB907FB4E04401F02C
-:1028610041CB124DA9907FEAE0B40104D22241CBC1
-:10287100907FB4E04401F041CB907FB4E04401F09B
-:1028810041CB907FB4E04401F041CB907FE9E0245B
-:10289100F5700512480041CB907FB4E04401F0414E
-:1028A100CB907FE9E024FD605424026002213412C0
-:1028B1004DA7400241CB907FEAE07038907FECE079
-:1028C100F45480FFC4540FFFE054072F25E024B4D3
-:1028D100F582E4347FF583E4F0907FECE05480FFEF
-:1028E100131313541FFFE054072F907FD7F0E044D8
-:1028F10020F041CB907FB4E04401F041CB124DA9CF
-:10290100400241CB907FEAE07020907FECE0F454EC
-:1029110080FFC4540FFFE054072F25E024B4F58253
-:10292100E4347FF5837401F041CB907FB4E044013E
-:10293100F041CB907FB4E04401F041CB907FE9E0DE
-:10294100601224F86009240270291243DB41CB1282
-:102951004D5C41CB124DA5A222E433FF25E0FFA23D
-:1029610023E4334F907F00F0E4A3F0907FB574022D
-:10297100F041CB907FB4E04401F041CB907FE9E09E
-:10298100603324F6602A2404703D907FEBE024DE5E
-:10299100600C047012907FB4E04401F041CB907F51
-:1029A100B4E04401F041CB907FB4E04401F041CB6D
-:1029B10012468541CB124DA5E4907F00F0A3F09023
-:1029C1007FB57402F041CB907FB4E04401F041CB7C
-:1029D100907FE9E024F46034240C7039124DA59005
-:1029E1007FECE0F45480FFC4540FFFE054072F251F
-:1029F100E024B4F582E4347FF583E054FD907F0058
-:102A0100F0E4A3F0907FB57402F041CB907FB4E085
-:102A11004401F041CB907FB4E04401F041CB907F81
-:102A2100E9E024F6601214601A2402701DD220908D
-:102A31007FB4E04401F08012D220907FB4E04401E1
-:102A4100F08007907FB4E04401F0202018907FEEE1
-:102A5100E07004A3E0600BD229D22712174AD22AD0
-:102A61008003120800C2208061907FEEE07004A311
-:102A7100E0600BD229D22812174AD22A804C123890
-:102A8100748047907FE9E024FE601214601A2402EA
-:102A9100701DD221907FB4E04401F08012D22190C8
-:102AA1007FB4E04401F08007907FB4E04401F0205E
-:102AB1002103121000C2218011122AD6800C124D5E
-:102AC100AB5007907FB4E04401F0202A07907FB417
-:052AD100E04402F022C8
-:102AD600E4907627F0907627E0FF75F00FA4244265
-:102AE600F582E43475F583E0FE907FECE0FDEE6D53
-:102AF600600EEFC394065008907627E004F080D568
-:102B0600EFB40608907FB4E04401F022EF75F00FB1
-:102B1600A42441F582E43475F583E0907628F02408
-:102B26009F7002A17424216002A1A1907FE9E02494
-:102B36007E700261FC14700281B524026002A16CF1
-:102B4600EF75F00FA42443F582E43475F583E0FCB9
-:102B5600A3E0FDA3E0FEA3E0FF7B447AAC79007816
-:102B660000C31237AB7013907F007444F0A374ACAB
-:102B7600F0E4A3F0907FB57403F0907627E075F04B
-:102B86000FA42443F582E43475F583E0FCA3E0FD4D
-:102B9600A3E0FEA3E0FF7B807ABB79007800C31236
-:102BA60037AB7013907F007480F0A374BBF0E4A37E
-:102BB600F0907FB57403F0907627E075F00FA424AB
-:102BC60043F582E43475F583E0FCA3E0FDA3E0FE63
-:102BD600A3E0FF7B007A7779017800C31237AB60F8
-:102BE60002A1A8907F00F0A37477F0A37401F0907F
-:102BF6007FB57403F022907627E075F00FA4244782
-:102C0600F582E43475F583E0FCA3E0FDA3E0FEA3C2
-:102C1600E0FF7B447AAC79007800C31237AB7013BF
-:102C2600907F007444F0A374ACF0E4A3F0907FB5F9
-:102C36007403F0907627E075F00FA42447F582E43C
-:102C46003475F583E0FCA3E0FDA3E0FEA3E0FF7B83
-:102C5600807ABB79007800C31237AB7013907F007F
-:102C66007480F0A374BBF0E4A3F0907FB57403F016
-:102C7600907627E075F00FA42447F582E43475F5C5
-:102C860083E0FCA3E0FDA3E0FEA3E0FF7B007A77F0
-:102C960079017800C31237AB6002A1A8907F00F0DB
-:102CA600A37477F0A37401F0907FB57403F02290BB
-:102CB6007627E075F00FA4244BF582E43475F5838E
-:102CC600E0FCA3E0FDA3E0FEA3E0FF7B447AAC7941
-:102CD600007800C31237AB7013907F007444F0A3E2
-:102CE60074ACF0E4A3F0907FB57403F0907627E01F
-:102CF60075F00FA4244BF582E43475F583E0FCA34C
-:102D0600E0FDA3E0FEA3E0FF7B807ABB79007800BC
-:102D1600C31237AB7013907F007480F0A374BBF0BE
-:102D2600E4A3F0907FB57403F0907627E075F00F7A
-:102D3600A4244BF582E43475F583E0FCA3E0FDA3FF
-:102D4600E0FEA3E0FF7B007A7779017800C31237B3
-:102D5600AB704F907F00F0A37477F0A37401F090EE
-:102D66007FB57403F022907FB4E04401F022907F97
-:102D7600E9E0247F701E907627E075F00FA4244FBB
-:102D8600F582E43475F583E0907F00F0907FB574AA
-:102D960001F08007907FB4E04401F0907FB4E044F6
-:032DA60001F02217
-:102DA900E4907636F0E0FF75F003A4240EF582E492
-:102DB9003475F5837401F0EF75F003A4240FF582DF
-:102DC900E43475F5837401F0EF75F003A42410F56C
-:102DD90082E43475F583E4F0907636E004F0E0FFA0
-:102DE90075F003A4240EF582E43475F5837410F0AC
-:102DF900EF75F003A4240FF582E43475F5837405A7
-:102E0900F0EF75F003A42410F582E43475F583E43A
-:102E1900F0907636E004F0E0FF75F003A4240EF597
-:102E290082E43475F5837402F0EF75F003A4240F7E
-:102E3900F582E43475F5837402F0EF75F003A42488
-:102E490010F582E43475F583E4F0907636E004F009
-:102E5900E0FF75F003A4240EF582E43475F583745C
-:102E690001F0EF75F003A4240FF582E43475F583BE
-:102E79007403F0EF75F003A42410F582E43475F5BA
-:102E890083E4F0907636E004F0E0FF75F003A424C3
-:102E99000EF582E43475F5837410F0EF75F003A430
-:102EA900240FF582E43475F5837406F0EF75F003A9
-:102EB900A42410F582E43475F583E4F0907636E0C5
-:102EC90004F0E0FF75F003A4240EF582E43475F5EF
-:102ED900837402F0EF75F003A4240FF582E43475CE
-:102EE900F5837404F0EF75F003A42410F582E4343B
-:102EF90075F583E4F0907636E004F0E0FF75F003B1
-:102F0900A4240EF582E43475F5837402F0EF75F0AC
-:102F190003A4240FF582E43475F5837408F0EF7582
-:102F2900F003A42410F582E43475F5837404F09059
-:102F39007636E004F0E0FF75F003A4240EF582E490
-:102F49003475F5837402F0EF75F003A4240FF5824C
-:102F5900E43475F583740AF0EF75F003A42410F5D1
-:102F690082E43475F5837404F0907636E004F0E079
-:102F7900FF75F003A4240EF582E43475F583740219
-:102F8900F0EF75F003A4240FF582E43475F583742A
-:102F990009F0EF75F003A42410F582E43475F58384
-:102FA9007404F0907636E004F0E0FF75F003A42491
-:102FB9000EF582E43475F5837402F0EF75F003A41D
-:102FC900240FF582E43475F5837407F0EF75F00387
-:0E2FD900A42410F582E43475F5837404F0220C
-:102FE700C0E0C083C082D2265391EF907FAB7401BB
-:082FF700F0D082D083D0E0325B
-:012FFF00329F
-:10300000907FB6E020E102C23DD236203602416E0A
-:10301000303D02416E908007E06004D2368002C2EB
-:1030200036203602412ED235E4F51A908004E0F5C0
-:10303000197408250EF8A619851918E51820E70453
-:10304000D2388002C23830380221D4E4F516E519AE
-:10305000B4F00CD2397508047509F0050E8002052C
-:1030600016E51964F7703DC239E50E24FE601714A9
-:103070006022240370297508057509F7E4F50AF53F
-:103080000B750E048020750806750AF7E4F50B75BC
-:103090000E048012750807750BF7750E0480071271
-:1030A00048F380020516E51954F864F8703BC23500
-:1030B000E5192407600C24FC6008240524F8500658
-:1030C0008008D23A8006C23A8002D23A751A0120AC
-:1030D0003A19907E80740FF0A3E519F0E4A3F0A3F1
-:1030E000F0907FB77404F08002051620396DE51961
-:1030F00064F76067E51A7063E51854F064F070597E
-:10310000851819F50EE519240F601B24FE6017249D
-:10311000FD602214601F2405702F750803050E85BD
-:103120001809D2378028750802050E85180975140C
-:1031300001D2378019750805050E851809E4F50ACE
-:10314000F50B750E03D23780051248F3C2353035C2
-:103150000A85081385181280020516851819E516C8
-:1031600064047062F50EE51954F0F519F51585182B
-:1031700019E5152470601824F0601424F060102400
-:10318000F0601E24F0601A24F0600424607027E5CB
-:1031900015C4540FF519F508050E851809D23780A6
-:1031A0001AE515C4540FF519F508050E85180975AB
-:1031B0001401D23780051248F3C23530350A85191B
-:1031C0001385181280020516E516D3940540571290
-:1031D00048F38052303917E50E700A8508097508E2
-:1031E00004050E80417408250EF8A6198038203792
-:1031F0002AE50EB4010F85080A85090B8513088599
-:103200001209750E04E514B4011C85080AE4F50BD7
-:10321000851308851209750E04800BE514B40106A8
-:10322000E4F50B750E04E4F51A303502050EE50ED3
-:10323000D394035002010BC237E4F50EF510C236E9
-:10324000D23DF51474082510F8E6FF74802510F5BA
-:1032500082E4347EF583EFF074082510F8E4F60577
-:0F32600010E510B404DE907FB77404F0010B2268
-:10326F00907618E0FF640570429075ABE0B40119D9
-:10327F009072377401F0E4908020F0908031F090DC
-:10328F008028F0908039F08022E4907237F09075AA
-:10329F00ADE090722BF0E02480F0E0908020F09071
-:1032AF008031F0908028F0908039F0EF6406600252
-:1032BF0081999072397404F0907239E0FF24FE9076
-:1032CF007204F0EF75F00AA424ABF582E43475F5BF
-:1032DF0083E06401705490723604F0907204E0FF42
-:1032EF0024FD602824FE6024240324FB5004601C6A
-:1032FF00818C74202FF582E43480F583E4F07428F8
-:10330F002FF582E43480F583E4F0818C907204E031
-:10331F00FF2430F582E43480F583E4F074382FF520
-:10332F0082E43480F583E4F0818CE4907236F0907F
-:10333F007239E075F00AA424ADF582E43475F58393
-:10334F00E0FF7E0090750CEEF0A3EFF07006907228
-:10335F0002743BF090750CE0FEA3E0FF64804E70AA
-:10336F0004907202F0EF4E70028135EF64804E7060
-:10337F00028135EFF8E490750DF0E890750CF09040
-:10338F007234E075F00AA424ACF582E43475F58349
-:10339F00E0FF907202F090750DE02FF090750CE049
-:1033AF003400F0E0FEA3E0FFE4FCFD7BD67AA5F944
-:1033BF00F8D3123795400A90750C74A5F0A374D604
-:1033CF00F090750DE0242AF090750CE0345AF0E07F
-:1033DF00FEA3E07805CEA2E713CE13D8F8FF9075C1
-:1033EF000CEEF0A3EFF090722CEEF0A3EFF0D3946D
-:1033FF00D2EE64809482400A90722C7402F0A3740F
-:10340F00D2F0C390722CE0648094805004E4F0A357
-:10341F00F090722CE0FEA3E0243AF582EE3472F5C0
-:10342F0083E0907202F0907204E0FF24FD602D247F
-:10343F00FE6029240324FB50046021804090720217
-:10344F00E0FE74202FF582E43480F583EEF07428CB
-:10345F002FF582E43480F583EEF08021907202E044
-:10346F00FF907204E0FE2430F582E43480F583EFA0
-:10347F00F074382EF582E43480F583EFF0907239D2
-:0B348F00E004F0E0640A600241C72284
-:10349A00907618E0FFB40523907237E0701D90759E
-:1034AA00ADE090722BF0E02480F0E0908020F09064
-:1034BA008031F0908028F0908039F0EF6406600245
-:1034CA00C191907236E06002C191907640E070310D
-:1034DA009072037403F0907203E0FF75F00AA4245B
-:1034EA00AAF582E43475F583E0FE907229E0FDEED8
-:1034FA006D600EEFC3940A5008907203E004F080E6
-:10350A00D59072397404F0907640E0700890720396
-:10351A00E0907239F0907239E0FD24FE90722AF040
-:10352A00ED75F00AA424ADF582E43475F583E0FF65
-:10353A007E0090750CEEF0A3EFF0700690720274A4
-:10354A0080F090750CE0FEA3E0FF64804E7004905A
-:10355A007202F0EF4E7002C11BEF64804E7002C11E
-:10356A001BEFF8E490750DF0E890750CF0ED75F02E
-:10357A000AA424ACF582E43475F583E0FF90720264
-:10358A00F090750DE02FF090750CE03400F0E0FE3D
-:10359A00A3E0FFE4FCFD7BD67AA5F9F8D3123795B0
-:1035AA00400A90750C74A5F0A374D6F090750DE0DE
-:1035BA00242AF090750CE0345AF0E0FEA3E0780576
-:1035CA00CEA2E713CE13D8F8FF90750CEEF0A3EF56
-:1035DA00F090722CEEF0A3EFF0D394D2EE648094C4
-:1035EA0082400A90722C7402F0A374D2F0C39072D3
-:1035FA002CE0648094805004E4F0A3F090722CE0F4
-:10360A00FEA3E0243AF582EE3472F583E09072026A
-:10361A00F090722AE0FF24FD602D24FE6029240325
-:10362A0024FB500460218040907202E0FE74202F37
-:10363A00F582E43480F583EEF074282FF582E434C1
-:10364A0080F583EEF08021907202E0FF90722AE00A
-:10365A00FE2430F582E43480F583EFF074382EF5D9
-:10366A0082E43480F583EFF0907640E07006907241
-:10367A0039740AF0907239E004F0E0C3940A5002F7
-:08368A00A111E4907640F0224A
-:10369200BB010689828A83E0225002E722BBFE0236
-:0936A200E32289828A83E4932269
-:1036AB00BB010CE58229F582E5833AF583E02250D4
-:1036BB0006E92582F8E622BBFE06E92582F8E2221E
-:0D36CB00E58229F582E5833AF583E4932238
-:1036D800C2D5EC30E709B2D5E4C39DFDE49CFCEE0D
-:1036E80030E715B2D5E4C39FFFE49EFE12381FC32E
-:1036F800E49DFDE49CFC800312381F30D507C3E429
-:063708009FFFE49EFE227B
-:10370E00BB0110E58229F582E5833AF583E0F5F0F9
-:10371E00A3E0225009E92582F886F008E622BBFED6
-:10372E000AE92582F8E2F5F008E222E5832AF5831C
-:08373E00E993F5F0A3E99322E1
-:10374600E88FF0A4CC8BF0A42CFCE98EF0A42CFC22
-:103756008AF0EDA42CFCEA8EF0A4CDA8F08BF0A4A0
-:103766002DCC3825F0FDE98FF0A42CCD35F0FCEBFF
-:103776008EF0A4FEA9F0EB8FF0A4CFC5F02ECD39C4
-:0F378600FEE43CFCEAA42DCE35F0FDE43CFC2231
-:10379500EB9FF5F0EA9E42F0E99D42F0EC6480C8AB
-:0637A50064809845F0224B
-:1037AB00EB9FF5F0EA9E42F0E99D42F0E89C45F074
-:0137BB0022EB
-:0C37BC00ECF0A3EDF0A3EEF0A3EFF02280
-:1037C800A8828583F0D083D0821237DF1237DF12C8
-:1037D80037DF1237DFE473E493A3C583C5F0C583ED
-:1037E800C8C582C8F0A3C583C5F0C583C8C582C84B
-:0137F80022AE
-:1037F900D083D082F8E4937012740193700DA3A35F
-:1038090093F8740193F5828883E473740293686072
-:06381900EFA3A3A380DF72
-:10381F00BC000BBE0029EF8DF084FFADF022E4CC8D
-:10382F00F875F008EF2FFFEE33FEEC33FCEE9DEC56
-:10383F00984005FCEE9DFE0FD5F0E9E4CEFD22ED9C
-:10384F00F8F5F0EE8420D21CFEADF075F008EF2FE6
-:10385F00FFED33FD4007985006D5F0F222C398FDD7
-:05386F000FD5F0EA2274
-:10387400E4907629F0907629E0FF75F00FA42442B5
-:10388400F582E43475F583E0FE907FECE0FDEE6DA7
-:10389400600EEFC394065008907629E004F080D5BA
-:1038A400EFB40608907FB4E04401F022EF75F00F06
-:1038B400A42441F582E43475F583E090762AF0245B
-:1038C400BF7002414124E070024112242160024190
-:1038D4003A907FE9E024FE607D14700221B2240254
-:1038E4006002410A121751907642E0FCA3E0FDA366
-:1038F400E0FEA3E0FF907629E075F00FA42443F5E1
-:1039040082E43475F5831237BC907619E0FFB40174
-:103914001290767C7467F090767D7406F090767ED3
-:10392400740BF0EFB4020FE490767CF090767DF0A7
-:1039340090767E740CF0EFB4030FE490767CF090F4
-:10394400767DF090767E7418F090761A7401F012F9
-:103954003E8F12180022907EC2E0FFE4FCFDFEFBC5
-:10396400FA7901F8123746C8ECC8C9EDC9CAEECADB
-:10397400CBEFCB907EC1E0FEE4FCFD2BFBEA3EFAEC
-:10398400ED39F9EC38F8907EC0E0FFE4FEEB2FFF50
-:10399400EE3AFEED39FDEC38FC907629E075F00F37
-:1039A400A42447F582E43475F5831237BC22907E53
-:1039B400C2E0FFE4FCFDFEFBFA7901F8123746C8C9
-:1039C400ECC8C9EDC9CAEECACBEFCB907EC1E0FE0C
-:1039D400E4FCFD2BFBEA3EFAED39F9EC38F8907E75
-:1039E400C0E0FFE4FEEB2FFFEE3AFEED39FDEC38CC
-:1039F400FC907629E075F00FA4244BF582E434752D
-:103A0400F5831237BC22907FB4E04401F022907F0A
-:103A1400E9E0147019907EC0E0FF907629E075F01B
-:103A24000FA4244FF582E43475F583EFF022907FE0
-:0E3A3400B4E04401F022907FB4E04401F0229F
-:103A4200E4907635F0907635E0FFC394034002416E
-:103A5200FFEF75F00AA424AAF582E43475F583EF2A
-:103A6200F0EF75F00AA424ABF582E43475F583E433
-:103A7200F0EF75F00AA424ACF582E43475F5837492
-:103A8200F0F0EF75F00AA424ADF582E43475F58305
-:103A920074FFF0EF75F00AA424AEF582E43475F5F4
-:103AA20083E4F0EF75F00AA424AFF582E43475F5EF
-:103AB200837480F0EF75F00AA424B0F582E43475C3
-:103AC200F583E4F0EF75F00AA424B1F582E43475CD
-:103AD200F583E4F0EF75F00AA424B2F582E43475BC
-:103AE200F583E4F0EF75F00AA424B3F582E43475AB
-:103AF200F5837401F0907635E004F0414790763C0E
-:103B0200740AF0E4A3F09076357403F090763CE00A
-:103B1200FF907635E0FEC39F400261D290763DE091
-:103B2200FF04F0EE75F00AA424AAF582E43475F5D8
-:103B320083EFF0EE75F00AA424ABF582E43475F558
-:103B420083E4F0EE75F00AA424ACF582E43475F552
-:103B520083745EF0EE75F00AA424ADF582E4347548
-:103B6200F58374BAF0EE75F00AA424AEF582E4345B
-:103B720075F5837405F0EE75F00AA424AFF582E4BE
-:103B82003475F5837480F0EE75F00AA424B0F582E2
-:103B9200E43475F583E4F0EE75F00AA424B1F582FD
-:103BA200E43475F583E4F0EE75F00AA424B2F582EC
-:103BB200E43475F5837415F0EE75F00AA424B3F5B8
-:103BC20082E43475F583E4F0907635E004F0610E1A
-:013BD20022D0
-:103BD300E4907636F0E0FB75F00FA42441F582E41F
-:103BE3003475F5837440F0EB75F00FA42442F5822D
-:103BF300E43475F583740AF0EB75F00FA42443F5F0
-:103C030082E43475F5831237C80000AC44EB75F0D9
-:103C13000FA42447F582E43475F5831237C80000F6
-:103C2300AC44EB75F00FA4244BF582E43475F583B3
-:103C33001237C800017700907636E004F0E0FB7598
-:103C4300F00FA42441F582E43475F5837440F0EB5E
-:103C530075F00FA42442F582E43475F583748CF077
-:103C6300EB75F00FA42443F582E43475F583123722
-:103C7300C80000AC44EB75F00FA42447F582E4348C
-:103C830075F5831237C80000AC44EB75F00FA4241C
-:103C93004BF582E43475F5831237C8000177009041
-:103CA3007636E004F0E0FF75F00FA42441F582E4DA
-:103CB3003475F5837440F0EF75F00FA42442F58258
-:103CC300E43475F583748FF0907636E004F0E0FF0A
-:103CD30075F00FA42441F582E43475F5837441F043
-:103CE300EF75F00FA42442F582E43475F5837484F0
-:103CF300F0907636E004F0E0FF75F00FA42441F570
-:103D030082E43475F5837461F0EF75F00FA42442F7
-:103D1300F582E43475F5837481F0907636E004F02F
-:103D2300E0FF75F00FA42441F582E43475F5837444
-:103D330061F0EF75F00FA42442F582E43475F58346
-:043D43007401F022F5
-:103D4700C0E0C0F0C083C082C0D0E8C0E0E9C0E0F6
-:103D5700EAC0E0EBC0E0ECC0E0EDC0E0EEC0E0EFB1
-:103D6700C0E0907FA2E090767FF0907F74E090763D
-:103D770087F0907F75E0907688F0907F98E0440216
-:103D8700F0907696E0FF20E10C4402F0908003F07B
-:103D9700D232124AC490767FE020E250907687E0D4
-:103DA700FEA3E07C002400F534EC3EF533907698D2
-:103DB700E0FDAE33AF341236D8907687EFF0D22FCE
-:103DC700303129203F26C231907F94E054CFF090C4
-:103DD7007F9AE030E404D22DC22C907F9AE020E550
-:103DE70004C22DD22C907F94E04430F0124A501236
-:103DF7001B04302F12124216C22F75E80112168AC1
-:103E070075E80DD22B800575E801C22B202B349065
-:103E17007619E0FFB4010E90767C7467F0A3740600
-:103E2700F0A3740BF0EFB4020B90767CE4F0A3F0F0
-:103E3700A3740CF0EFB4030B90767CE4F0A3F0A32B
-:103E47007418F075CAD375CBFED2CA303404C234A5
-:103E57008002D2345391EF907FAB7402F0F0907FE1
-:103E670098E054FDF0D0E0FFD0E0FED0E0FDD0E0D8
-:103E7700FCD0E0FBD0E0FAD0E0F9D0E0F8D0D0D029
-:083E870082D083D0F0D0E032BC
-:103E8F00907692E014601D147002E14424026002E7
-:103E9F00E1D49076947401F0908000F0E490768EE7
-:103EAF00F0D23122907619E0FFB4011BE4907FF23B
-:103EBF00F0907FF37430F0907FFF74FCF090769762
-:103ECF00E054FDF054FBF0EFB4021BE4907FF2F0EE
-:103EDF00907FF37434F0907FFF74FCF0907697E04E
-:103EEF004402F054FBF0EFB40318E4907FF2F0902B
-:103EFF007FF37464F0907FFF74FCF0907697E0444A
-:103F0F0004F0907694E04401F0908000F0303F0987
-:103F1F00907697E054FEF08007907697E04401F09A
-:103F2F00907697E0908002F09076987404F09076F7
-:103F3F008E7401F022907619E0FFB4011BE4907F9C
-:103F4F00F2F0907FF37444F0907FFF74FCF0907662
-:103F5F0097E054FDF054FBF0EFB4021BE4907FF2B6
-:103F6F00F0907FF3744CF0907FFF74FCF090769795
-:103F7F00E04402F054FBF0EFB40318E4907FF2F04A
-:103F8F00907FF37494F0907FFF74FCF0907697E03D
-:103F9F004404F0907694E054FEF0908000F0303FAF
-:103FAF0009907697E054FEF08007907697E04401F1
-:103FBF00F0907697E0908002F09076987406F090EB
-:063FCF00768E7402F02260
-:103FD500C0E0C083C0825391EF907FAAE04402F015
-:103FE500907FC7E0F511750F00750D00D233D082B3
-:053FF500D083D0E03292
-:063FFA00124AC4C231228C
-:10400000E511D3940050022106907689E0C394080C
-:10401000400221067440250FF582E4347EF583E0EA
-:10402000F517E50D600E908005E517F0907689E0B4
-:1040300004F001DAE5171237F940C1024067054084
-:104040007A0640980740C10C40C10D40C70F40CBD5
-:10405000F640CBF840CBFA40CBFB40CBFC40CBFE4C
-:1040600040CBFF000040DA907E41E0908005F09068
-:104070007689E004F07511018060907E41E09080C7
-:1040800005F0907E42E0908005F0907689E004F0A3
-:10409000E004F07511018042907E41E0908005F0CF
-:1040A000907E42E0908005F0907E43E0908005F0A5
-:1040B000907689E004F0E004F0E004F075110180EE
-:1040C00019D23BD23C8013D23B800F908005E5177C
-:1040D000F0907689E004F0751101203B04050D8015
-:1040E0001F303C1C907E41E0908005F0907E42E0C5
-:1040F000908005F0907689E004F0E004F0751101FD
-:10410000050F15110100E5117010C233F50DF50F03
-:0B411000907FC77404F0C23BC23C2249
-:10411B0090768DE064017027302708C227120800C3
-:10412B0012174A302808C22812387412174A302A3C
-:10413B000EE490768DF0C22A907FB4E04402F090AA
-:10414B00763FE0B40105E4F012326F907641E0B4B3
-:10415B000105E4F012349A907640E0B40103123476
-:10416B009A907F9BE020E402C23F907F9BE030E47B
-:10417B0002D23F907F9BE020E502C23E907F9BE006
-:10418B0030E502D23EA241303F01B3501FA23F9215
-:10419B0041303F09907697E054FEF0800790769778
-:1041AB00E04401F0907697E0908002F0303F34903D
-:1041BB007619E0FFB4010E90767C7467F0A3740659
-:1041CB00F0A3740BF0EFB4020BE490767CF0A3F049
-:1041DB00A3740CF0EFB4030BE490767CF0A3F0A384
-:1041EB007418F0A240303E01B3501FA23E924030F3
-:1041FB003E09907695E04404F08007907695E05464
-:0B420B00FBF0907695E0908001F0221F
-:10421600907619E064017035907687E0FFD3942D8F
-:10422600402B9076867401F0907685E004F0E0D31A
-:10423600940F4019E4F0EFD3943140089076197446
-:1042460003F080069076197402F0123E8F9076196C
-:10425600E0B4022C907687E0FFC3942F5022EFD370
-:10426600942A401C9076867401F0907685E004F0DE
-:10427600E0D3940F400AE4F090761904F0123E8FD2
-:10428600907619E0B40226907687E0D39431401DEB
-:104296009076867401F0907685E004F0E0D3940F72
-:1042A600400BE4F09076197403F0123E8F90761965
-:1042B600E06403703F907687E0FFC3945F503590CB
-:1042C60076867401F0907685E004F0E0D3940F4092
-:1042D60023E4F0EFC3942F500CEFD3942A400690BA
-:1042E60076197401F0EFD3942F4006907619740274
-:1042F600F0123E8F907686E07005907685F022E487
-:05430600907686F02214
-:10430B00E4907696F0908003F0907FE07490F090BC
-:10431B007FE17404F0E4907FDDF0907FA1F0538E89
-:10432B00F875880575B82075F801438E30F5C8759A
-:10433B00CA7F75CBF843A82012074AC22CC22DC2E4
-:10434B002BC22F907FFC74DDF0907FFF74FFF090F9
-:10435B007F97E04401F09076197401F0E490768534
-:10436B00F0A3F0907681F0907680F0124958120FFE
-:10437B00C6124A8D907F97E04408F0E054B9F0D212
-:10438B00302030181247B41230001240001242167F
-:10439B00124A50121B04121661124216C22FC2315E
-:1043AB00C232C234C233C229C227C228E4F51190EB
-:1043BB007689F090763FF0907641F0907640F090D1
-:1043CB00768AF0A3F0A304F0E4A3F0907699F022A0
-:1043DB00124DA3400281A0907FEBE024FE601E14DF
-:1043EB00604614606E1470028191240460028199FE
-:1043FB007405907FD4F07400907FD5F022907FEA03
-:10440B00E0FF1249FF8B208A218922EA496011CEF5
-:10441B00EACEEE907FD4F0CFE9CFEF907FD5F022AC
-:10442B00907FB4E04401F022907FEAE0FF1248B0A5
-:10443B008B208A218922EA496011CEEACEEE907F49
-:10444B00D4F0CFE9CFEF907FD5F022907FB4E0444A
-:10445B0001F022907FEAE0FF907EC0E0FDA3E0FB3D
-:10446B001217948B208A218922EA496011CEEACE59
-:10447B00EE907FD4F0CFE9CFEF907FD5F022907FF5
-:10448B00B4E04401F022907FB4E04401F022907F2D
-:05449B00B4E04401F053
-:0144A00022F9
-:1044A100C2AFD224907F937430F0907F9C74BBF0A4
-:1044B100907F96E04430F0E05430F0907F94743077
-:1044C100F0907F9D74CFF0907F9774A0F0907F95CE
-:1044D10074C0F0907F9E7403F0907F99E030E20900
-:1044E10090051974A0F0E4A3F0C225C222C223C230
-:1044F10026124AC4122DA9123BD3124559123A422F
-:104501009076687401F0700F124BBB1207FE124DCA
-:10451100A1121B4012149612430B907FAFE044018D
-:10452100F0907FAEE0441FF0907FAC74FFF0907F7D
-:10453100ADF0907FDEF0907FDFF0907FABF0907F69
-:10454100A9F0907FAAF05391EF43D820D2E843D845
-:084551002053A8A043A880221A
-:10455900E4907636F0E0FF75F003A42432F582E4A6
-:104569003475F583E4F0EF75F003A42433F582E4A0
-:104579003475F5837401F0907636E004F0E0FF7548
-:10458900F003A42432F582E43475F583E4F0EF7581
-:10459900F003A42433F582E43475F5837402F090B2
-:1045A9007636E004F0E0FF75F003A42432F582E4E6
-:1045B9003475F583E4F0EF75F003A42433F582E450
-:1045C9003475F5837403F0907636E004F0E0FF75F6
-:1045D900F003A42432F582E43475F583E4F0EF7531
-:1045E900F003A42433F582E43475F5837404F022CE
-:0C45F900787FE4F6D8FD7581380246405A
-:1046050002475AE493A3F8E493A34003F68001F22A
-:1046150008DFF48029E493A3F85407240CC8C333B6
-:10462500C4540F4420C8834004F456800146F6DF85
-:10463500E4800B0102040810204080900C8FE47E7A
-:10464500019360BCA3FF543F30E509541FFEE4937A
-:10465500A360010ECF54C025E060A840B8E493A341
-:10466500FAE493A3F8E493A3C8C582C8CAC583CA6C
-:10467500F0A3C8C582C8CAC583CADFE9DEE780BE24
-:10468500907FECE0907683F0E014601D14602A14AE
-:10469500603714604424047050907691E0907F0058
-:1046A500F0907FB57401F08047907692E0907F009E
-:1046B500F0907FB57401F08037907690E0907F00A0
-:1046C500F0907FB57401F08027907684E0907F00AC
-:1046D500F0907FB57401F08017907693E0907F009D
-:1046E500F0907FB57401F08007907FB4E04401F04D
-:0246F500D322CE
-:1046F700C0E0C0F0C083C082C0D0E8C0E0E9C0E03D
-:10470700EAC0E0EBC0E0ECC0E0EDC0E0EEC0E0EFF7
-:10471700C0E0C2CAC2CF907F98E04401F0302E03B8
-:104727001214A6907F98E054FEF053A8FA1216616F
-:10473700D0E0FFD0E0FED0E0FDD0E0FCD0E0FBD041
-:10474700E0FAD0E0F9D0E0F8D0D0D082D083D0F032
-:03475700D0E0327D
-:10475A00E4907666F01244A1202613907666E0C3B0
-:10476A009402500AE004F0D242124AF680EA302655
-:10477A0005122801C22630252B907696E054FCF0CB
-:10478A00908003F0121496907696E04403F090809D
-:10479A0003F0E4907667F0907667E004F0E0B44BBB
-:0A47AA00F6123FFA12411B80C522EF
-:1047B400E490769BF090769BE0FF04F0EF6008E0D5
-:1047C4002408F8E4F680EE907696E054FBF054F773
-:1047D400F0908003F0E4F518D235F50EF510D236DA
-:1047E400751211751322C237C239C238F516F51481
-:0B47F400F51AF50DC23BC23CC23D228D
-:10480000907FECE0907683F0E01460171460211440
-:10481000602B14603224047038907FEAE090769127
-:10482000F08035907FEAE0907692F0123E8F8028FB
-:10483000907FEAE0907690F0121800801B907FEA5B
-:10484000E0907684F08011907FEAE0907693F0809B
-:0A48500007907FB4E04401F0D3228A
-:10485A00E4907626F0907626E0FF75F003A42434DF
-:10486A00F582E43475F583E0FE907FECE0FDEE6DB1
-:10487A00600EEFC394045008907626E004F080D5C9
-:10488A00EFB40408907FB4E04401F022EF75F0031E
-:10489A00A42432F582E43475F583E0907F00F09029
-:0648AA007FB57401F0224D
-:0248B0008F2E49
-:1048B200E4F52F7530FF7531067532BEAB30AA3183
-:1048C200A9329000011236ABB4031FAF2F052FEFB0
-:1048D200652E7001221236927E0029FFEE3AC9EF50
-:1048E200C97530FFF531893280D27B007A007900B8
-:0148F20022A3
-:0C48F300C237E4F50EF510C236F51422B1
-:10490000022FE700023D4700024D4600024BD50052
-:10491000024B6000022FFF00024BED00024B8100B2
-:10492000024C0400023FD500024C1B00024C320036
-:10493000024C4900024C6000024C7700024C8E0091
-:10494000024CA500024CBC00024CD300024CEA0011
-:08495000024D0100024D1800A8
-:104958009076467480F0E4A3F0A3F0A3F0A3F0A34C
-:10496800F0A3F0A3F0A3F0A37480F0E4A3F0A3F005
-:10497800A3F0A3F0A3F0A3F0A37440F0E4A3F0A382
-:104988007440F0E4A3F0A3F0A3F0A3F0A3F0A3F025
-:10499800A37440F0E4A3F0A37440F0E4A3F0A3F000
-:0549A800A3F0A3F022C2
-:1049AD00E4907625F0907625E0FF75F003A424348D
-:1049BD00F582E43475F583E0FE907FECE0FDEE6D5D
-:1049CD00600EEFC394045008907625E004F080D576
-:1049DD00EFB40408907FB4E04401F022907EC0E073
-:1049ED00FEEF75F003A42432F582E43475F583EE01
-:0249FD00F022A6
-:1049FF00E4FE751DFF751E05751F12AB1DAA1EA9BE
-:104A0F001F9000011236AB6402702FCDEECD0EED6C
-:104A1F006F70012290000212370E85F01BF51C6299
-:104A2F001BE51B621CE51C621B29FDE51B3AC9ED4A
-:104A3F00C9751DFFF51E891F80C17B007A007900A3
-:014A4F002244
-:104A5000302D39C22D907619E0FFB4010DE4907627
-:104A60007CF0A374F8F0A3740AF0EFB4020DE490A4
-:104A7000767CF0A374F0F0A3740BF0EFB4030DE4B4
-:0D4A800090767CF0A374F8F0A37417F02278
-:104A8D00E4FF74562FF582E43476F583E0FE742846
-:104A9D002FF582E43480F583EEF0745E2FF582E419
-:104AAD003476F583E0FE74382FF582E43480F58397
-:064ABD00EEF00FBF08CC73
-:014AC30022D0
-:104AC400E4907236F0A3F0907F97E054FBF0E4900A
-:104AD4007233F0907232F090720104F0E490723309
-:104AE400F0907232F090720104F0907F97E04404E9
-:024AF400F022AE
-:104AF600907FD6E054FBF0E04408F0304204E044F6
-:104B060002F07FDC7E05124D2F907FD6E054F7F041
-:054B1600E04404F02260
-:104B1B00907FEBE0147014907FE9E0247F70041217
-:104B2B00485A22907FB4E04401F022907FB4E044D5
-:034B3B0001F02264
-:104B3E00907FEBE0147013907FE9E014700412493B
-:104B4E00AD22907FB4E04401F022907FB4E04401A6
-:024B5E00F02243
-:104B6000C0E0C083C0825391EF907FAB7410F0908F
-:104B70007696E054FDF0908003F0D082D083D0E0B0
-:014B80003202
-:104B8100C0E0C083C0825391EF907FAAE04401F05E
-:0F4B9100C22990768D7401F0D082D083D0E032AB
-:104BA000907FEAE0907682F0E4907691F0907692B1
-:0B4BB000F0907690F0907693F0D32206
-:104BBB00907FD6E030E712E04401F07F147E0012C4
-:0A4BCB004D2F907FD6E054FEF0223B
-:104BD500C0E0C083C082D2255391EF907FAB7408AB
-:084BE500F0D082D083D0E03251
-:104BED00C0E0C083C0825391EF907FA9E04401F0F3
-:074BFD00D082D083D0E0322A
-:104C0400C0E0C083C0825391EF907FA9E04402F0DA
-:074C1400D082D083D0E03212
-:104C1B00C0E0C083C0825391EF907FA9E04404F0C1
-:074C2B00D082D083D0E032FB
-:104C3200C0E0C083C0825391EF907FAAE04404F0A9
-:074C4200D082D083D0E032E4
-:104C4900C0E0C083C0825391EF907FA9E04408F08F
-:074C5900D082D083D0E032CD
-:104C6000C0E0C083C0825391EF907FAAE04408F077
-:074C7000D082D083D0E032B6
-:104C7700C0E0C083C0825391EF907FA9E04410F059
-:074C8700D082D083D0E0329F
-:104C8E00C0E0C083C0825391EF907FAAE04410F041
-:074C9E00D082D083D0E03288
-:104CA500C0E0C083C0825391EF907FA9E04420F01B
-:074CB500D082D083D0E03271
-:104CBC00C0E0C083C0825391EF907FAAE04420F003
-:074CCC00D082D083D0E0325A
-:104CD300C0E0C083C0825391EF907FA9E04440F0CD
-:074CE300D082D083D0E03243
-:104CEA00C0E0C083C0825391EF907FAAE04440F0B5
-:074CFA00D082D083D0E0322C
-:104D0100C0E0C083C0825391EF907FA9E04480F05E
-:074D1100D082D083D0E03214
-:104D1800C0E0C083C0825391EF907FAAE04480F046
-:074D2800D082D083D0E032FD
-:104D2F008E358F36E5361536AE35700215354E6039
-:074D3F000512148580EE222D
-:104D4600C0E0C083C0825391EF907FAB7404F0D073
-:064D560082D083D0E032A0
-:104D5C00907682E0907F00F0907FB57401F0D322C2
-:094D6C00C22553D8EF43D82032D0
-:074D75005398FE5398FD3234
-:074D7C0053C0FE53C0FD32DD
-:064D83005391BFD22D3256
-:064D890053917FD22C3291
-:044D8F005391DF322B
-:044D930053D8F732C8
-:044D9700121730229D
-:034D9B00C28D3294
-:034D9E00C28F328F
-:024DA100D3221B
-:024DA300D32219
-:024DA500D32217
-:024DA700D32215
-:024DA900D32213
-:024DAB00C32221
-:00000001FF
-/*
-Source: EMI62SFW.HEX
-VERSION=1.04.062
-DATE=16.10.2002
-*/
diff --git a/firmware/ess/maestro3_assp_kernel.fw.ihex b/firmware/ess/maestro3_assp_kernel.fw.ihex
deleted file mode 100644
index 933c4c375c2f..000000000000
--- a/firmware/ess/maestro3_assp_kernel.fw.ihex
+++ /dev/null
@@ -1,120 +0,0 @@
-:10000000807930008079B4038079B4038079FB0073
-:100010008079DD008079B4038079320380798702AA
-:100020008079B4038079B4038079B4038079B40310
-:1000300080791A038079B40380792F028079B40320
-:100040008079B4038079B4038079B4038079B403F0
-:100050008079630080796B008079B4038079B40380
-:1000600080BF7C2C0688048840BE20BC09AE0010EE
-:100070000AAE0100386908EB53005A6908EBD60054
-:100080000900888B806988E3360030BE20BC09698E
-:1000900001B8099041BE41BE286988EB780041BE95
-:1000A00040BE8079380041BE41BE3A90386908E3CD
-:1000B00056003A9041BE40BE00EF3A90396908E3DD
-:1000C0005E003A9000EF0B690C668CEF0A690C66D3
-:1000D0000B62096600EF10690F6604EF88E3750094
-:1000E0000E690F6610620D6600EF0E690D6600EF77
-:1000F00070AE010020BC27AE0100396908EB5D003D
-:10010000266901B826902600888B806988E3CB0099
-:100110002890280D114200E17A00114700E1A0006B
-:10012000807A630011B80A66096204E37A000B0C56
-:1001300005400A1001BA1290120C02408079AF00FB
-:10014000807A6B0002BE0E620D6610BA44E37A003C
-:10015000100C05400E1001BA1290120C0240031050
-:1001600002BA1290120C0040031088E3BA00041087
-:100170008079BC00041001BA1290120C0140050CE9
-:100180000340060C04401110B0BFFF011290120C86
-:10019000064020BC00EF26AE28107069D0BF0100D9
-:1001A000709088E37A0028AE000000EF70AE000384
-:1001B000700C0CB05AAE000000EF807A8A037F69A1
-:1001C00001B87F905600888BA00C08B071AF00B0CA
-:1001D000714E00E2F30056AE57105600A00C08B066
-:1001E00056808079A1031008A0BF591004E3A10331
-:1001F00056808079A103807A8A0301BF43BE59BE2D
-:100200007C90376988E30D0101BA08E30C0171AEF7
-:100210000400710C0050366937900ABF9E108A8B1B
-:1002200080AF1480804C0ABF600500F50ABF20052E
-:1002300000B917BBA090176988E34801170D00E1CA
-:1002400027010CBF78050DBF7C0580792B010CBF01
-:1002500038050DBF3C05006908E335018C8B59BE9C
-:1002600007BBA09020BC807957010C038B8B03B98E
-:100270000988C6BE3E01AC69AB90AD69AB9013086E
-:100280000A6644E3440109030C8320BC80795701CA
-:10029000556988E35701387C0BBF780500F50BBF23
-:1002A000380507B90988C6BE5601AB10AA90746913
-:1002B00088E3630172AE400500F572AE000561AEE1
-:1002C0003B10807AF602786988E382018C8B0CBF40
-:1002D000600500E5407C140820BA12883D73807ADE
-:1002E00080033E73807A80038C8B0CBF6C0500E525
-:1002F000407C14082CBA12883F73807A80034073C4
-:10030000807A8003756988E38E0172AE480500F536
-:1003100072AE080561AE4110807AF602796988E311
-:10032000AD018C8B0CBF600500E5407C140818BA49
-:1003300012884373807A80034473807A80038C8BA5
-:100340000CBF6C0500E5407C140824BA1288457384
-:10035000807A80034673807A8003766988E3B901E6
-:1003600072AE580500F572AE180561AE4710807A7E
-:10037000F6027A6988E3D8018C8B0CBF600500E532
-:10038000407C140808BA12884973807A80034A7343
-:10039000807A80038C8B0CBF6C0500E5407C1408D0
-:1003A00014BA12884B73807A80034C73807A80036E
-:1003B00021BC1CAE90108A8B0ABF600500E5407C12
-:1003C000120804B813888D8B0DBF6C0500E5407CC6
-:1003D000150804B81188807A4A038A8B0ABF600521
-:1003E00000E5407C1F7303B90988C6BEF9018A5431
-:1003F00003BEA098207303B90988C6BE01028A54BF
-:1004000003BEA098201F1F2F269820BC356988E3C3
-:10041000A103336901B83390A0BFEE0208E3A10342
-:10042000339000BF516988E31F02347380BE605768
-:1004300003BE7E9F59BE34907E69510D139020BC3F
-:100440005C6988E3A1035E7380BE605703BE7E9F34
-:1004500059BE5E907E695C0D13908079A103807A0D
-:100460008A0301BF43BE776988E34E0261AE4D1037
-:100470006100888B806988E34E027190710D0B00DA
-:10048000A0AF1080A0AF108010080A6608E34902F0
-:10049000090010080C6688E34E020B8020BC7B69C3
-:1004A00088E3A1030ABF9E108A8B80AF1480804C22
-:1004B00000E166027C6990BF6005729072037C69FE
-:1004C00090BF640573907304807970027C6990BF5B
-:1004D0002005729072037C6990BF240573907304A9
-:1004E0007C6901B87C900ABFFD108A8B80AF1080B8
-:1004F0004F738A5403BE809821BC26738B5403BE6D
-:100500008B618C9803BE806180988079A103807A8A
-:100510008A03280D114700E1BE0212AF064012699E
-:10052000B0BF000C88E3B602A0BF000888E3B202A7
-:100530001269B0BF000CA0BF000488E3A3020969E0
-:100540000B908079A5020BAF054001690590026907
-:100550000690114300E1ED021169C0BF0020119027
-:100560008079ED0209690B908079B8020BAF0540E4
-:1005700005AF034006AF04408079ED0212AF06409C
-:100580001269B0BF000C88E3E702A0BF000888E34F
-:10059000E3021269B0BF000CA0BF000488E3D402DC
-:1005A0000D6910908079D60210AF05400169059061
-:1005B00002690690114300E1ED021169C0BF0020FD
-:1005C00011908079ED020D6910908079E90210AFE9
-:1005D000054005AF034006AF044020BC7069719030
-:1005E000807A7800716970908079A10320BC6103E2
-:1005F0008B8B806988EF7202720304787190710DA1
-:100600008A8B0B0003B90988C6BE0903A869AB90A1
-:10061000A869AA9010080A6644E30F0309001008AD
-:100620000C6688E314030B8020BC616901B86190FB
-:100630008079F702807A8A03355D0100346901B858
-:1006400034900ABF9E108A8B80AF1480804872AEAF
-:10065000500500F572AE100561AE5110807AF602B9
-:100660008079A103807A8A03355D02005E6901B852
-:100670005E900ABF9E108A8B80AF1480804772AE56
-:10068000580500F572AE180561AE5C10807AF6026E
-:100690008079A1031C00888B806988EF1D901D0D57
-:1006A0000F1010668CE358030E6910660F620D661A
-:1006B0000FBA01E37A0310048A8B03B90988C6BE16
-:1006C0006C038C6AAA61AB988C6AAB61AD988C6A3A
-:1006D000AD61A9988C6AA961AA98047C8B8B047C73
-:1006E0008D8B047C898B047C14080E6608E37903E7
-:1006F0000D04108421BC1C6901B81C9080794A0348
-:1007000003B909888A8BC6BE8803AC5403BE8C61CA
-:10071000AA9800EF20BC46BE09086B900A086C90AE
-:100720000B086D901A0862901B0863901E08649075
-:1007300059BE1E88658066816782688369846A8580
-:1007400000EF20BC6B6909886C690A886D690B88A9
-:1007500062691A8863691B8864691E88650066017E
-:0A0760006702680369046A053ABEE7
-:00000001FF
diff --git a/firmware/ess/maestro3_assp_minisrc.fw.ihex b/firmware/ess/maestro3_assp_minisrc.fw.ihex
deleted file mode 100644
index d2c0031dadf2..000000000000
--- a/firmware/ess/maestro3_assp_minisrc.fw.ihex
+++ /dev/null
@@ -1,51 +0,0 @@
-:1000000080BF1E106E906E00888B806988EF6F90A5
-:100010006F0D006908EB120420BC6E6901B86E9088
-:10002000807903040EB9078843BE01BF47BE41BEB5
-:10003000807A2A0040BE2930CCEF41BE807A280069
-:1000400040BE2830CCEF076908E32A0409692C90E8
-:1000500080792C040D692C9009101A880A1001BAB5
-:100060001B880D101C880E1001BA1D8880BFED0082
-:100070001E880C05240104B92790186908E3B3040D
-:100080002D901369A0BF987504F72DAEFF008D8BDE
-:10009000196908E363041A6908E3560407B9098873
-:1000A000C6BE5304A910AD9080797C0403B90988B9
-:1000B000C6BE60048918226CAD90A910236E226C14
-:1000C000AD9080797C041A1008E36F0403B90988A5
-:1000D000C6BE6C04A910A090AD9080797C0401B9D3
-:1000E0000988C6BE7B048918226CA090AD90A91027
-:1000F000236E226CA090AD902D6908E39C0424012E
-:1001000003B702B91888898B2C028A10047CA0904E
-:100110002B691F88807E5B052A690988898BA099D5
-:100120008A10A0902B691F88807E5B052A69098848
-:10013000898BAF99997B840424010F061B1013202F
-:100140001B90A0BFFF7F44E3AC041B90898B807A97
-:100150001A05276901BA2790807A2305276908E3E1
-:100160009E0480790F052406261013202690A0BF38
-:10017000FF7F04E3C0048D8B807A1A058079B40474
-:100180002690131026301B908D8B807A1A05807A6A
-:100190002305271001BA279008E3B40424010F06B1
-:1001A000898B1A6908E3EA04196988E3E00403B952
-:1001B0000988C6BEDD04A01FAE2FA99880790F055F
-:1001C00001B9188807B90988C6BEE704EE10A990DE
-:1001D00080790F05196908E3FE0403B9098846BE52
-:1001E000C6BEFA04A0171EBEAE1FBFBF00FF13BEDF
-:1001F000DFBF8080A99947BE80790F0501B90988C2
-:10020000C6BE0E05A016A026B7BF00FF1EBEA01ECC
-:10021000AE2EBFBF00FF13BEDFBF8080A9990C8543
-:100220000F86076988E31605070D108559BE1E88DD
-:100230004ABE00EF1E101C901F101D90A0101E90B3
-:10024000A0101F9000EF1E101C3020901B73205434
-:1002500003BE259825101C2025902573145403BE39
-:100260008E8B80982F6988E3390559BE07BB806162
-:100270008098A08B1F101D3021901B73215403BE4A
-:100280002E982E101D202E902E73155403BE80988C
-:100290002F6988E34F0559BE07BB80618098A08B0A
-:1002A000186908EF2573165403BEA0982E731754CF
-:1002B00003BEA09800EFA08BC6BE6B0559BE04BB61
-:1002C00090AA04BE1EBEE099E08BA069D090A06900
-:1002D000D0901F0805B81F88908BA069D090A069A6
-:1002E0009090D08BD88B1FBE00EF00000000000064
-:1002F00000000000000000000000000000000000FE
-:1003000000000000000000000000000000000000ED
-:020310000000EB
-:00000001FF
diff --git a/firmware/ihex2fw.c b/firmware/ihex2fw.c
deleted file mode 100644
index 08d90e25abf0..000000000000
--- a/firmware/ihex2fw.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * Parser/loader for IHEX formatted data.
- *
- * Copyright © 2008 David Woodhouse <dwmw2@infradead.org>
- * Copyright © 2005 Jan Harkes <jaharkes@cs.cmu.edu>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <stdint.h>
-#include <arpa/inet.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdlib.h>
-#define _GNU_SOURCE
-#include <getopt.h>
-
-
-struct ihex_binrec {
- struct ihex_binrec *next; /* not part of the real data structure */
- uint32_t addr;
- uint16_t len;
- uint8_t data[];
-};
-
-/**
- * nybble/hex are little helpers to parse hexadecimal numbers to a byte value
- **/
-static uint8_t nybble(const uint8_t n)
-{
- if (n >= '0' && n <= '9') return n - '0';
- else if (n >= 'A' && n <= 'F') return n - ('A' - 10);
- else if (n >= 'a' && n <= 'f') return n - ('a' - 10);
- return 0;
-}
-
-static uint8_t hex(const uint8_t *data, uint8_t *crc)
-{
- uint8_t val = (nybble(data[0]) << 4) | nybble(data[1]);
- *crc += val;
- return val;
-}
-
-static int process_ihex(uint8_t *data, ssize_t size);
-static void file_record(struct ihex_binrec *record);
-static int output_records(int outfd);
-
-static int sort_records = 0;
-static int wide_records = 0;
-static int include_jump = 0;
-
-static int usage(void)
-{
- fprintf(stderr, "ihex2fw: Convert ihex files into binary "
- "representation for use by Linux kernel\n");
- fprintf(stderr, "usage: ihex2fw [<options>] <src.HEX> <dst.fw>\n");
- fprintf(stderr, " -w: wide records (16-bit length)\n");
- fprintf(stderr, " -s: sort records by address\n");
- fprintf(stderr, " -j: include records for CS:IP/EIP address\n");
- return 1;
-}
-
-int main(int argc, char **argv)
-{
- int infd, outfd;
- struct stat st;
- uint8_t *data;
- int opt;
-
- while ((opt = getopt(argc, argv, "wsj")) != -1) {
- switch (opt) {
- case 'w':
- wide_records = 1;
- break;
- case 's':
- sort_records = 1;
- break;
- case 'j':
- include_jump = 1;
- break;
- default:
- return usage();
- }
- }
-
- if (optind + 2 != argc)
- return usage();
-
- if (!strcmp(argv[optind], "-"))
- infd = 0;
- else
- infd = open(argv[optind], O_RDONLY);
- if (infd == -1) {
- fprintf(stderr, "Failed to open source file: %s",
- strerror(errno));
- return usage();
- }
- if (fstat(infd, &st)) {
- perror("stat");
- return 1;
- }
- data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, infd, 0);
- if (data == MAP_FAILED) {
- perror("mmap");
- return 1;
- }
-
- if (!strcmp(argv[optind+1], "-"))
- outfd = 1;
- else
- outfd = open(argv[optind+1], O_TRUNC|O_CREAT|O_WRONLY, 0644);
- if (outfd == -1) {
- fprintf(stderr, "Failed to open destination file: %s",
- strerror(errno));
- return usage();
- }
- if (process_ihex(data, st.st_size))
- return 1;
-
- return output_records(outfd);
-}
-
-static int process_ihex(uint8_t *data, ssize_t size)
-{
- struct ihex_binrec *record;
- uint32_t offset = 0;
- uint32_t data32;
- uint8_t type, crc = 0, crcbyte = 0;
- int i, j;
- int line = 1;
- int len;
-
- i = 0;
-next_record:
- /* search for the start of record character */
- while (i < size) {
- if (data[i] == '\n') line++;
- if (data[i++] == ':') break;
- }
-
- /* Minimum record length would be about 10 characters */
- if (i + 10 > size) {
- fprintf(stderr, "Can't find valid record at line %d\n", line);
- return -EINVAL;
- }
-
- len = hex(data + i, &crc); i += 2;
- if (wide_records) {
- len <<= 8;
- len += hex(data + i, &crc); i += 2;
- }
- record = malloc((sizeof (*record) + len + 3) & ~3);
- if (!record) {
- fprintf(stderr, "out of memory for records\n");
- return -ENOMEM;
- }
- memset(record, 0, (sizeof(*record) + len + 3) & ~3);
- record->len = len;
-
- /* now check if we have enough data to read everything */
- if (i + 8 + (record->len * 2) > size) {
- fprintf(stderr, "Not enough data to read complete record at line %d\n",
- line);
- return -EINVAL;
- }
-
- record->addr = hex(data + i, &crc) << 8; i += 2;
- record->addr |= hex(data + i, &crc); i += 2;
- type = hex(data + i, &crc); i += 2;
-
- for (j = 0; j < record->len; j++, i += 2)
- record->data[j] = hex(data + i, &crc);
-
- /* check CRC */
- crcbyte = hex(data + i, &crc); i += 2;
- if (crc != 0) {
- fprintf(stderr, "CRC failure at line %d: got 0x%X, expected 0x%X\n",
- line, crcbyte, (unsigned char)(crcbyte-crc));
- return -EINVAL;
- }
-
- /* Done reading the record */
- switch (type) {
- case 0:
- /* old style EOF record? */
- if (!record->len)
- break;
-
- record->addr += offset;
- file_record(record);
- goto next_record;
-
- case 1: /* End-Of-File Record */
- if (record->addr || record->len) {
- fprintf(stderr, "Bad EOF record (type 01) format at line %d",
- line);
- return -EINVAL;
- }
- break;
-
- case 2: /* Extended Segment Address Record (HEX86) */
- case 4: /* Extended Linear Address Record (HEX386) */
- if (record->addr || record->len != 2) {
- fprintf(stderr, "Bad HEX86/HEX386 record (type %02X) at line %d\n",
- type, line);
- return -EINVAL;
- }
-
- /* We shouldn't really be using the offset for HEX86 because
- * the wraparound case is specified quite differently. */
- offset = record->data[0] << 8 | record->data[1];
- offset <<= (type == 2 ? 4 : 16);
- goto next_record;
-
- case 3: /* Start Segment Address Record */
- case 5: /* Start Linear Address Record */
- if (record->addr || record->len != 4) {
- fprintf(stderr, "Bad Start Address record (type %02X) at line %d\n",
- type, line);
- return -EINVAL;
- }
-
- memcpy(&data32, &record->data[0], sizeof(data32));
- data32 = htonl(data32);
- memcpy(&record->data[0], &data32, sizeof(data32));
-
- /* These records contain the CS/IP or EIP where execution
- * starts. If requested output this as a record. */
- if (include_jump)
- file_record(record);
- goto next_record;
-
- default:
- fprintf(stderr, "Unknown record (type %02X)\n", type);
- return -EINVAL;
- }
-
- return 0;
-}
-
-static struct ihex_binrec *records;
-
-static void file_record(struct ihex_binrec *record)
-{
- struct ihex_binrec **p = &records;
-
- while ((*p) && (!sort_records || (*p)->addr < record->addr))
- p = &((*p)->next);
-
- record->next = *p;
- *p = record;
-}
-
-static int output_records(int outfd)
-{
- unsigned char zeroes[6] = {0, 0, 0, 0, 0, 0};
- struct ihex_binrec *p = records;
-
- while (p) {
- uint16_t writelen = (p->len + 9) & ~3;
-
- p->addr = htonl(p->addr);
- p->len = htons(p->len);
- if (write(outfd, &p->addr, writelen) != writelen)
- return 1;
- p = p->next;
- }
- /* EOF record is zero length, since we don't bother to represent
- the type field in the binary version */
- if (write(outfd, zeroes, 6) != 6)
- return 1;
- return 0;
-}
diff --git a/firmware/kaweth/new_code.bin.ihex b/firmware/kaweth/new_code.bin.ihex
deleted file mode 100644
index 292d40f4f334..000000000000
--- a/firmware/kaweth/new_code.bin.ihex
+++ /dev/null
@@ -1,206 +0,0 @@
-:10000000B6C3AABBCCDD9FCFDE06E7570000C4060F
-:1000100097C1E767FF1F28C0E787000424C0E76790
-:10002000FFF922C097CFD70900C0E709A2C0BE06DA
-:100030009FAF3600E70500C0A7CFBC0697CFE757B4
-:100040000000B806A7A1B80697CFE757000014082C
-:100050000AC0E7570000A4C0A7C07A069FAF920766
-:10006000E70700001408E757FFFFBA069FA0380013
-:10007000E759BA06BE069FA03800C809CA0608623A
-:100080009FA13608C00976060060A7C07A069FAF18
-:10009000CC02E7570000B806A7C17A069FAF04005C
-:1000A000E75700008E060AC1E70920C01008E7D014
-:1000B0001008E767400010089FAF920CC009D006F7
-:1000C000006005C4C059BE0602C09FAFEC009FAFE0
-:1000D0003402E7570000A6069FA07A02A7CF7A064F
-:1000E0004802E709BE06D006C83704009FAF0803E0
-:1000F00097CFE7570000CE0697C0D70900C0C1DFF1
-:10010000C809C606086214C02704C6061094F00782
-:1001100010080200C107010070000400F007300160
-:10012000060050AFE707FFFFD006E7070000CE0646
-:10013000E70500C097CFD70900C0C1DF4802D0094A
-:10014000C6062702C606E70500C097CF4802C83793
-:100150000400000C0C00006021C0C0373E0023C921
-:10016000C057B4051BC8C0173F00C067C0FF3000B0
-:100170000800F007000004000002C0174C00300027
-:100180000600F007A0010A004802C1070200D709D3
-:1001900000C0C1DF51AFE70500C097CF9FAF080394
-:1001A0009FAF7A0297CF9FAF7A02C9370400C1DFB1
-:1001B000C809A20650026702A206D107000027D88C
-:1001C000AA06C0DF9FAFC40197CFE7570000D20651
-:1001D00097C1E7570100A80697C0C809A0060862A2
-:1001E00097C00002C0170E0027003401270C0C0036
-:1001F0003601E70750C312C0E707CC0B0200E70740
-:100200000100A806E707050090C097CFC809A4061B
-:10021000086202C0106407C1E70700009E06E707F6
-:100220007204240097CF2704A406C8170E002702E3
-:100230009E06E7078004240097CFD70900C0C1DFDE
-:10024000E7570000900613C19FAF0602E757000072
-:100250009E0613C0E7099E063001E707F20532014A
-:10026000E707100096C0E7099E06900604CFE757FF
-:1002700000009E0602C19FAF0602E70500C097CFAF
-:10028000D70900C0C1DF0892E7570200AA0602C3DF
-:10029000C809A4062702A606086203C1E70500C034
-:1002A00097CF2704A406E70500C0F0074000080028
-:1002B000F007000004000002C0170C003000060028
-:1002C000F00746010A00C8170400C107020051AF39
-:1002D00097CFE7570000960697C0C1DFC80996067A
-:1002E000270496062752980603C1E7079606980644
-:1002F000C0DF1702C8170E009FAFBA03C805006021
-:1003000003C09FAF240397CF9FAF080397CF570237
-:10031000C907A406D70900C0C1DF08621BC050048A
-:100320001102E70500C0C90597CF9702CA09D60692
-:10033000F21701000400F22700000600CA172C0083
-:10034000F87701000E0006C0CAD9F857FF000E006A
-:1003500001C1CAD9221C0C00E2270000E2170100EB
-:10036000E2270000CA05000C0C00C0174100C0675E
-:10037000C0FF300008000002C0170C00300006006B
-:10038000F007DA000A00F00700000400000C080083
-:1003900040D10100C019CE06C059C20604C949AFF8
-:1003A0009FAFEC004AAF6710CE06C8170400C10724
-:1003B0000100D70900C0C1DF50AFE70500C097CFEB
-:1003C000C0070100C109AC06C177010097C1D87709
-:1003D000010012C0C9076A069FAF080404C1C177B3
-:1003E000080013C097CFC177020097C1C1771000F2
-:1003F0000CC09FAF2C0497CFC177040006C0C9077B
-:1004000070069FAF080497C000CF009097CF50545C
-:1004100097C1705C0200020097C1705C0400040088
-:1004200097CF8001C0006000300018000C0006006B
-:100430000000CB09B206CC09B4060B5311C0C902A7
-:10044000CA071C049FAF080497C00AC882080ACFD5
-:1004500082089FAF080497C005C28930826078C1C6
-:10046000009097CF8910095379C2893082087ACFDA
-:10047000C0DF97CFC0DF97CFE70996C09206E709A4
-:1004800098C094060FCFE70996C09206E70998C076
-:100490009406E7099E063001E707F2053201E707F7
-:1004A000100096C0D70900C01702C8099006C837C7
-:1004B0000E00E7772A00920630C09702CA09D606D6
-:1004C000E777200092060EC0F21701001000F22715
-:1004D00000001200E7770A009206CA051EC09702C4
-:1004E000CA09D606F21701000C00F22700000E0020
-:1004F000E7770200920607C0F21701004400F227D6
-:100500000000460006CFF21701006000F22700004D
-:100510006200CA059FAF08030FCF57020902F10915
-:1005200094060C00F1DA0C00C80998065002670224
-:100530009806D1070000C905E7099E069006E7570F
-:100540000000900602C09FAF0602C805E70500C084
-:10055000C0DF97CFD70900C0170017029702C00964
-:1005600092C0E707040090C0CA09D606E70700005A
-:10057000A806E7076A040200C077020008C0F21765
-:1005800001005000F227000052009FCF2406C077E0
-:10059000100006C0F21701005800F22700005A00B0
-:1005A000C077800006C0F21701007000F22700003B
-:1005B0007200C07708001DC1F21701000800F22781
-:1005C00000000A00C077000206C0F21701006400B4
-:1005D000F22700006600C077400006C0F217010055
-:1005E0005C00F22700005E00C077010001C01BCF55
-:1005F0001ACFF21701000000F22700000200C8091C
-:100600003401CA171400D877010005C0CAD9D857D9
-:10061000FF0001C0CAD9E21994C0E2270000E21726
-:100620000100E22700009FAF40069FAFC401E757DB
-:100630000000D2069FA10E0ACA05C805C005E7053D
-:1006400000C0C0DF97CFC809A006086297C0270482
-:10065000A0062752A20603C1E707A006A2069FAF85
-:100660000803E7570000AA0602C027DAAA0697CFB8
-:10067000FFFFFFFFFFFF0000000000000000000080
-:10068000000000000000000000000000000000006A
-:10069000000000000000000000000000000000005A
-:1006A000000000000000000000000000000000004A
-:1006B000000000000000000000000000000000003A
-:1006C00000000000000000003F00000000000000EB
-:1006D000000000000000FFFF01000000000000001B
-:1006E000FFFFFB13E7570080B20006C2E707EE0BDF
-:1006F0001200E707340CB200E707C607F202C80988
-:10070000B400F80702000D00D7090EC0E70700008B
-:100710000EC0C809DE00C8170900C907DA06C007FD
-:100720000400680A00DA7DC1E709C0007C06E70919
-:10073000BE007806E7091000BC06C807D6079FAFC1
-:10074000AE079FAF000AC809DE00000E0F004190FF
-:100750009FDE060044AF2700B2062700B40627003C
-:10076000B606C007740044AF2700D6060800009004
-:10077000C1073A00200001DA7DC19FAFBA09C00766
-:10078000440048AF27007A069FAF960AE7070100AA
-:10079000C006E7050EC097CF49AFE78743000EC0FC
-:1007A000E707FFFFBE069FAFAE0AC007010060AFBC
-:1007B0004AAF97CF00080908110800DA7CC197CF2B
-:1007C0006704CC02C0DF5194B1AF0600C1DFC90994
-:1007D000CC02496275C1C0DFA7CFD6020E0024004B
-:1007E000800422004E05D0000E0AAA003008BE0088
-:1007F0004A0A1000200004006E0402006A04060089
-:10080000000024C0040428C0FEFB1EC0000422C057
-:10081000FFF4C000900900000000FFFF56086008C8
-:10082000D008DA0800090409080932094209500908
-:1008300052095A095A092702CA0697CFE70700004A
-:10084000CA060A0E0100CA570E009FC35A09CA37CA
-:1008500000009FC25A090AD2B2CF1608C809DE00AA
-:1008600007069FCF6C091702C809DE00000E0F00B3
-:1008700041909FDE0600C805305006009FC85A0907
-:10088000270C0200B006C009B2062700B406E7072D
-:100890000000AE0627008006001C06002700B606F2
-:1008A00041906750B0060DC067007E06270C060019
-:1008B0008206E707BC088406C8077E06419051AF50
-:1008C00097CF9FAF480CE709B606B406E709B00614
-:1008D000AE0659AF97CF270C0200AC0659AF97CFA1
-:1008E000090C020009DA49D2C919D606C8077E06E2
-:1008F000E00700006002E0070400D007CC0848DBF6
-:10090000419050AF97CF59AF97CF59AF97CFF0578E
-:100910000600060025C1E7077006800641906700C3
-:100920007E06270C06008206E7078C098406C807A6
-:100930007E06419051AF97CF070C0600C7570600BF
-:100940000FC1C807700615CF000C020000DA40D1B5
-:100950002700C2061ECF1DCF270C0200CC0619CFE0
-:1009600027022001E70708002201E7071300B0C0B3
-:1009700097CF419067007E06E70182062702800636
-:10098000E7078C098406C8077E06C107008050AFC0
-:1009900097CF59AF97CF006005C0E7070000C406A6
-:1009A000A7CF7C069FAF000AE7070100C40649AF46
-:1009B000D70900C007AFE70500C04AAFA7CF7C0644
-:1009C000C007FE7F44AF4000C03700014190C037F0
-:1009D0000800DFDE5006C057100002C2C00710003A
-:1009E00027009A0641909FDE400644AF27009C06F0
-:1009F000C0099A06419000D200D89FDE080044AF9B
-:100A00002700C80697CFE787008428C0E767FFFB69
-:100A100024C097CFE7870100D206E7570000A80659
-:100A200097C19FAF000AE787000622C0E7070000D2
-:100A300090C0E767FEFF3EC0E70726000AC0E787D1
-:100A400001003EC0E707FFFFBE069FAF100B97CF28
-:100A50001700A7AF7806C00527007606E7870100D4
-:100A6000D2069FAF000AE7070C0040C09FAF100BF3
-:100A700000902700A6062700AA06E709B206B406DA
-:100A80002700AE062700AC069FAFAE0AC0070000E5
-:100A90002700B2022700B40227008E06C007060016
-:100AA000C809DE00C8170300C9077006290A00DA62
-:100AB0007DC197CFD70900C0C1DF009027009606FF
-:100AC000E707960698062700A006E707A006A206F5
-:100AD0002700A6062700900627009E06C8099C0648
-:100AE000C1099A06C907A40611020902C8174006DF
-:100AF00001DA7AC15194C809C806C907C606C109F6
-:100B00009A0611020902C817080001DA7AC1519445
-:100B1000E70500C097CFE7570000760697C09FAF64
-:100B20000400E709BE06BA06E757FFFFBA0604C18C
-:100B3000E707100BB80697CFE7173200BA06E7674A
-:100B4000FF07BA06E707460BB80697CFE75700003E
-:100B5000C00623C0E707040090C0E707008080C0FC
-:100B6000E707000080C0E707008080C0C0070000E2
-:100B7000C0070000C0070000E707000080C0E707CB
-:100B8000008080C0E707008040C0C0070000E70782
-:100B9000000040C0E707000080C0E707040090C0E5
-:100BA000E707000240C0E7070C0240C0E70700006B
-:100BB000C006E7070000B806E7070000D206D7091D
-:100BC00000C0C1DF9FAF3402E70500C09FAFC40182
-:100BD00097CFD70900C0170017029702E757000008
-:100BE000A80606C0C00992C0C07709029FC15C0573
-:100BF0009FCF3206D7090EC0E70700000EC09FAF97
-:100C0000020CE7050EC097CFD70900C01702C8092C
-:100C1000B0C0E767FE7FB0C0C87700209FC164EB1B
-:100C2000E7570000C8029FC180EBC899CA02C86795
-:100C300004009FC196EB9FCF4CEBE7070000A6C0D6
-:100C4000E709B0C0C802E7070300B0C097CFC009EA
-:100C5000B006C037010097C9C909B2060200419029
-:100C60004802C91706009FAF08049FA2720C02DA5F
-:100C700077C1416071C197CF170257024304210425
-:100C8000E00043042104E00043042104E000C10724
-:100C90000100C905C80597CFE70701008E06C80700
-:100CA0008606E70700008606E70710088806E707BC
-:100CB00004008A06E707BC0C8C06C107038050AF0E
-:0C0CC00097CFE70700008E0697CF0000DA
-:00000001FF
diff --git a/firmware/kaweth/new_code_fix.bin.ihex b/firmware/kaweth/new_code_fix.bin.ihex
deleted file mode 100644
index fb35d3d0c924..000000000000
--- a/firmware/kaweth/new_code_fix.bin.ihex
+++ /dev/null
@@ -1,40 +0,0 @@
-:10000000B6C3AABBCCDD0200080028002C003400D7
-:100010003C0040004800540058005E006400680046
-:100020006E006C00720076007C00800086008A0002
-:100030009000940098009E00A600AA00B000B400B2
-:10004000B800C000C600CA00D000D400D800E0004C
-:10005000DE00E800F000FC0004010A0118012201A2
-:1000600028013A013E017E0198019C01A201AC01E8
-:10007000B201BA01C001C801D001D601F401FC01EE
-:10008000080216021A0222022A022E023E0244022C
-:100090004A025002640262026C02720286028C0200
-:1000A00090029E02BC02D002D802DC02E002E8020A
-:1000B000E602F402FE0204030C0328037C0390030F
-:1000C00094039C03A203C003D003D403EE03FA03FA
-:1000D000FE032E0432043C0440044E0476047C04E7
-:1000E00084048A048E04A604B004B804BE04D204B6
-:1000F000DC04EE0410051A0524052A05360534052E
-:100100003C05420564056A056E058605220626063D
-:100110002C06300642064A064E06560654065A0675
-:1001200060066606E806EE06F406160726072C07A4
-:10013000320736073A073E07520756075A07640741
-:1001400076077A07800784078A079E07A207DA07DF
-:10015000DE07E207E607EA07EE07F207F6070E08F2
-:10016000160818081A081C081E0820082208240867
-:10017000260828082A082C082E0832083A084608BB
-:100180004E0854085E0878087E08820886088C08A5
-:10019000900898089E08A408AA08B008AE08B408F9
-:1001A000BE08C408C208CA08C808D408E408E80899
-:1001B000F608140912091A092009260924092A092E
-:1001C0003E094C0956097009740978097E097C09B1
-:1001D000820998099C09A009A609B809DC09E8095F
-:1001E000EC09FC09120A180A1E0A420A460A4E0ABB
-:1001F000540A5A0A5E0A680A6E0A720A780A760A6D
-:100200007C0A800A840A940AA40AB80ABE0ABC0AB4
-:10021000C20AC80AC60ACC0AD00AD40AD80ADC0A1A
-:10022000E00AF20AF60AFA0A140B1A0B200B1E0B4C
-:10023000260B2E0B2C0B360B3C0B420B400B4A0BA8
-:10024000AA0BB00BB60BC00BC80BDA0BE80BEC0B10
-:10025000FA0B4A0C540C620C660C960C9A0CA00C0F
-:0E026000A60CA40CAC0CB20CB00CC00C000030
-:00000001FF
diff --git a/firmware/kaweth/trigger_code.bin.ihex b/firmware/kaweth/trigger_code.bin.ihex
deleted file mode 100644
index c3e1658c2803..000000000000
--- a/firmware/kaweth/trigger_code.bin.ihex
+++ /dev/null
@@ -1,13 +0,0 @@
-:10000000B6C3AABBCCDDC807A000F0075E0006009F
-:10001000F0070A000800F00900000200E7073600B8
-:100020000000F00700000400E70750C310C0F0090B
-:100030000EC00000E78701000EC097CFD70900C0AF
-:100040001702C807A000E71750C310C030D804003B
-:10005000305C08000400B0C00600C805E70500C019
-:10006000C0DF97CF49AFC007000060AF4AAF000CB8
-:100070000C0040D2001C0C0040D230000800F007F9
-:1000800000000400F0078600060067CF270C02007E
-:100090000000270C00000EC049AF64AFC00700008D
-:1000A0004BAF4AAF5ACF0000000000000000000034
-:0600B000940005000000B1
-:00000001FF
diff --git a/firmware/kaweth/trigger_code_fix.bin.ihex b/firmware/kaweth/trigger_code_fix.bin.ihex
deleted file mode 100644
index 7712f73faeda..000000000000
--- a/firmware/kaweth/trigger_code_fix.bin.ihex
+++ /dev/null
@@ -1,3 +0,0 @@
-:10000000B6C3AABBCCDD0200060018003E0080008B
-:060010009800AA000000A8
-:00000001FF
diff --git a/firmware/keyspan/mpr.HEX b/firmware/keyspan/mpr.HEX
deleted file mode 100644
index a53ba10b2358..000000000000
--- a/firmware/keyspan/mpr.HEX
+++ /dev/null
@@ -1,104 +0,0 @@
-:0300330002001AAE
-:04001A0053D8EF3296
-:100003008E568F57E5571557AE56700215564E60EC
-:0700130005120FA280EE228E
-:0300230002004692
-:10004600C0E0C083C082C086758600C0D075D00867
-:1000560030990E300B07A20E929B853699C299D223
-:10006600122012030202F9C2123003197E7E7F406B
-:10007600751A7E751B407517007E7D7FC075187DCD
-:100086007519C080177E7D7FC0751A7D751BC0757A
-:1000960017017E7E7F4075187E751940200B03027E
-:1000A6000184E53AC39553503C200C342009319025
-:1000B6007F9BE055387029301012AF3A053AE51BA0
-:1000C6002FF582E4351AF583E013920EAF3A053A1E
-:1000D600E51B2FF582E4351AF583E0F5360202F7C3
-:1000E600C20B0202F7300311907FC7E4F0A3E0547D
-:1000F60002F51DA3E0F51C8011907FC9E4F0907F06
-:03004300020F00A9
-:03000000020026D5
-:0C002600787FE4F6D8FD75815A020A3399
-:40010600C6E05402F51DA3E0F51CE51724FF9203300D0DC20D907FBB7401F0C20B0202F7E51D6005C20B0202F7851C53851982851883E013920D7512FF200C3A2009379082
-:400146007F9BE05538702F30101C851982851883A3E013920E851982851883A3A3E0F536753A030202F7753A02851982851883A3E0F5360202F7753A01C20B0202F73003FE
-:400186000E907FC6E05402F51DA3E0F51C800C907FC8E05402F51DA3E0F51CE53AC395535003020268E51D6007C214C2050202F7851C53851B82851A83E013920D7512FF61
-:4001C600300C03020260300903020260907F9BE05538600302026030101B851B82851A83A3E013929B851B82851A83A3A3E0F599753A03800D851B82851A83A3E0F5997575
-:400206003A02E53AC395534026300307907FC7E4F08005907FC9E4F0E51724FF9203200D030202F7C20D907FBB7401F00202F7301012AF3A053AE51B2FF582E4351AF58394
-:40024600E013920EAF3A053AE51B2FF582E4351AF583E0F536D20B0202F7753A01C2140202F7300C030202F53009030202F5907F9BE055387079301012AF3A053AE51B2FF2
-:40028600F582E4351AF583E013929BAF3A053AE51B2FF582E4351AF583E0F599E53AC395534022300307907FC7E4F08005907FC9E4F0E51724FF9203300D36C20D907FBB0E
-:4002C6007401F0802C301012AF3A053AE51B2FF582E4351AF583E013920EAF3A053AE51B2FF582E4351AF583E0F536D20B8002C214D201209803020435C298200203020383
-:40030600A2201527AF39053974802FF582E4347EF583E599F030104DAF39053974802FF582E4347EF583E598F0803A859955E555B54704D209802EE555B54604C20980251C
-:40034600AF39053974802FF582E4347EF583E555F0301011AF39053974802FF582E4347EF583E598F0D20FE539C395435003020433907FB8E030E116E539C39440500302F5
-:40038600043315391539052B433401020433907FB7E539F0753900C202020433201527AF39053974002FF582E4347EF583E599F030104DAF39053974002FF582E4347EF594
-:4003C60083E598F0803A859955E555B54704D209802EE555B54604C2098025AF39053974002FF582E4347EF583E555F0301011AF39053974002FF582E4347EF583E598F0EA
-:40040600D20FE539C395434024907FB6E030E112E539C39440401615391539052B433401800B907FB9E539F0753900D202D201300105C201020056D0D0D086D082D083D02F
-:40044600E032907FBCE020E154E5346050E531704CE53430E10BE4F52F753401753102800EA208E433F52FC208E4F534753110E4F5567E007B0074242556F9EE3400FA12D8
-:400486000C79FF74002556F582E4347DF583EFF00556E556B40CDB907FBD740CF0907FCAE030E1030205D1E4F55674402556F582E4347DF583E0FFE5567C007B00243BF903
-:4004C600EC3400FAEF120C920556E556B418DBE53B601175C92075C836853CCA853DCBE4907F9FF0E53E139210929F853F38E540139215E5416009907F98E054FBF0800744
-:40050600907F98E04404F0E5426009907F98E0547FF08007907F98E04480F0E548600BC20CC209907F95E04402F0E549600CD209433401907F95E04402F0E54A600DC2AFBB
-:40054600C20BD200E4F553F53AD2AFE54B6005301502D209E54C6015907F95E054FDF0907F9EE04402F0907F98E054FDF0E54D600AD29CC298752C0175311EE54E6007C227
-:400586009CE4F539F52CE54F6003E4F539E5506002D207E551600AE54D7002F531E5514234E552601F907FD77411F07431F07412F07432F07413F07433F07414F07434F067
-:4005C600D203D202D208E4907FCBF0A20CE433FF652960058F29433401A209E433FF652A60058F2A433401907F9BE0FF54086408F55765256006855725433401EF5410643A
-:4006060010F55765266006855726433401EF54406440F55765276006855727433401EF54206420F55765286006855728433401907F9AE054406440F557652E600685572E5B
-:40064600433401300735C2AF300218907FB8E020E127E5396009907FB7F0E4F539C202C2078016907FB6E020E10FE5396009907FB9F0E4F539D202C207D2AF20053D3003DB
-:400686001E907FC6E020E133907E40E013920D753A01907FC7E0F553D2057512FF801C907FC8E020E115907DC0E013920D753A01907FC9E0F553D2057512FF2014332000E6
-:4006C60006E53A6553702A30051A300309E4907FC7F0C2038007E4907FC9F0D203C205E4F553F53A300D0AC20DC200907FBB7401F03014030207BF2005030207BF300C0314
-:400706000207BF3009030207BF907F9BE0553860030207BF30030C7E7E7F4075587E755940800A7E7D7FC075587D7559C0301012AF3A053AE5592FF582E43558F583E0137C
-:40074600921AAF3A053AE5592FF582E43558F583E0F557E53AC39553502A301012AF3A053AE5592FF582E43558F583E013920EAF3A053AE5592FF582E43558F583E0F53688
-:40078600D20B8015C20B300309E4907FC7F0C2038007E4907FC9F0D203301004A21A929BD214C2AF855799200B0D300D0AC20DC200907FBB7401F0D2AF22907FE9E0120C70
-:4007C600A4091C0009890109E60307E306090D0809010908E90A08F80B00000A24907FEBE024FE601C14700302087924026003020A24740D907FD4F07487907FD5F0020AE6
-:400806002B907FEAE0B401047F0280027F037582D875830DEFF07582D175830DF07582CA75830DF07582C375830DF0907FEAE00475829E75830DF0907FEFE0FE907FEEE07B
-:400846007C002400F55AEC3EF55975150D75169975829B75830DE0751300F514D3E514955AE51395594006855913855A14120BBA020A2B907FEAE0700B7556FF75570D7503
-:4008860058DC802D907FEAE0B4010B7556FF75570D7558E0801B907FEAE0B4020B7556FF75570D7558F080097556FF75570E75581E907FEEE0755900F55AAE57AF588E1512
-:4008C6008F168F828E83E0FEA3E08E13F514D3955AE51395594006855913855A14120BBA020A2B907F00E511F0907FB57401F0020A2B907FEAE0F511020A2B120C24907F84
-:40090600EAE0F510020A2B907F00E510F0907FB57401F0020A2B907FE8E0247F602714603424026003020A24A216E433FF25E0FFA218E4334F907F00F0E4A3F0907FB57455
-:4009460002F0020A2BE4907F00F0A3F0907FB57402F0020A2B907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F00B
-:40098600020A2B907FE8E024FE601724026003020A2B907FEAE064016003020A24C216020A2B907FEAE07076907FECE0F45480FFC4540FFFE054072F25E024B4F582E4348D
-:4009C6007FF583E4F0907FECE05480FF131313541FFFE054072F907FD7F0E04420F08045907FE8E024FE601024027039907FEAE06401702AD216802D907FEAE07020907F77
-:400A0600ECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF5837401F08007907FB4E04401F0907FB4E04402F022C210E4F510F534C209C20CC20BC214C20DC215A5
-:400A4600C211C207C212C20FC208F535F539F553F53AF533F530F52FF52EF52DF52CF52BF52AF529F528F527F526F525F524C205C217C219C216C218C204D213C206C20178
-:400A8600907F92E054FDF0D2E843D820907FDE7401F0907FDFF0907FAB74FFF0907FA9F0907FAAF05391EF907FAFE04401F0907FAEE0440FF0907FAC740EF0D2AFD2BCD247
-:400AC6001A120F7DC21730040312044830042A300627C206E51260161512907FD8E030E6047F0080027F20907F96EFF08006907F967420F0120B1480CD301707C217120741
-:400B0600C080C33019C0C219120EDC80B922E53160021531E53960556535704BE533F460020533E533C395444043C2AF30021B907FB8E020E12D907FB7E539F0C202E4F5AA
-:400B460039F533F5357512FF8019907FB6E020E112907FB9E539F0D202E4F539F533F5357512FFD2AF8006853935E4F533E52C6030200F07907F9BE030E00FE52D6006E497
-:400B8600F52D433401E4F5308014E530D39545500DE530B54506752D014334010530C20F22907FD9E030E2047F0080027F20907F96EFF022E51445136057AE13AF14D3EF0F
-:400BC6009440EE940040047E007F40C3E5149FF514E5139EF513E4FDEDC39FE49E501F851682851583E0FC74002DF582E4347FF583ECF00D0516E5167002051580DA907FC4
-:400C0600A97401F0907FACE04401F0907FB5EFF022907FACE054FEF0E4907FB5F022E4907F93F0907F9C7430F0907F967420F0907F947401F0907F9D74FFF0907F977486DF
-:400C4600F0907F957403F0907F9E7484F0907F98F0E4907FC7F0907FC9F0907FCBF075984043A810907FDE741FF0907FDF740FF0D20422BB010689828A83E0225002E722C3
-:400C8600BBFE02E32289828A83E49322BB010689828A83F0225002F722BBFE01F322D083D082F8E4937012740193700DA3A393F8740193F5828883E4737402936860EFA367
-:400CC600A3A380DFE4907F95F0907F94F0907F93F0907F9DE04402F0907F97E04442F0907F9C7410F0E4907F96F0907F9D74BEF03016047F8080027F00907F97EFF0E49045
-:400D06007F95F0907F9EF0907F98F022C0E0C0F0C083C082C085C084C086758600C0D075D0085391EF907FA97401F0120BBAD0D0D086D084D085D082D083D0F0D0E032C06A
-:400D4600E0C083C082C085C084C086758600907FC4E4F05391EF907FAB7404F0D086D084D085D082D083D0E03200000000000000000000000000000000000000000000001C
-:400D86000012011001FFFFFF40CD061C010100010200020902430001010080320904000007FF00000007050102400000070502024000000705030240000007058102400002
-:400DC600010705820240000107058302400001070584024000010403090410034B00650079007300700061006E002E034B00650079007300700061006E00200055005000A3
-:400E0600530048003100310032002D00530065007200690061006C0022035500530041002D003500330020003200300030003200610070007200320036000000C0E0C083DB
-:400E4600C082C085C084C0867586005391EF907FAB7402F0D206D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D2175391EF907FAB7401F0D086D01F
-:400E860084D085D082D083D0E032C0E0C083C082C085C084C086758600D2195391EF907FAB7408F0D086D084D085D082D083D0E032C0E0C083C082C085C084C08675860084
-:400EC6005391EF907FA97402F0D086D084D085D082D083D0E032120CCA120FB3907FD6E030E712E04401F07F0D7E00120003907FD6E054FEF0120C242200020E6900020EA3
-:400F06004200020D4500020E9000020F1000020F1400020D1200020F1C00020EB700020F2400020F3300020F2C00020F58C0E0C083C082C085C084C0867586005391EF90A9
-:400F46007FA97404F0D086D084D085D082D083D0E032C0E0C083C082C085C084C0867586005391EF907FA97408F0D086D084D085D082D083D0E032907FD6E054FBF0E044C1
-:3D0F860008F0301A04E04402F07FF47E01120003907FD6E054F7F0E04404F0227400F58690FDA57C05A3E582458370F922907FD6E04480F04387010000000000222C
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
-
-static char theFirmwareDate53[] =
- "04/26/2002 02:47p 11,570 USA53";
-
diff --git a/firmware/keyspan/usa18x.HEX b/firmware/keyspan/usa18x.HEX
deleted file mode 100644
index a9ff70eadfe7..000000000000
--- a/firmware/keyspan/usa18x.HEX
+++ /dev/null
@@ -1,141 +0,0 @@
-:030033000212F7BF
-:10000300E4907F93F0907F9C7430F0E4907F96F0BF
-:10001300907F94F0907F9D74FFF0E4907F97F09031
-:0F0023007F95F0907F9E7407F0E4907F98F02215
-:1000460030091812131BEFC3953C40030200D890E9
-:100056007FBF7401F0C209C200807730033B907FF6
-:10006600C6E020E16D12131BEFC394405064907EEE
-:1000760040E0139209907FC7E014F5192000116043
-:100086000FF5087E7E7F41750C7E750D41120CBA08
-:10009600C203E4907FC7F08039907FC8E020E13248
-:1000A60012131BEFC394405029907DC0E0139209B0
-:1000B600907FC9E014F519200011600FF5087E7DC8
-:1000C6007FC1750C7D750DC1120CBAD203E4907F09
-:1000D600C9F0907FB6E030E1030201601211D68FBD
-:1000E600191213278F36E519C3953A500F1212EBE2
-:1000F600EF30E008E53620E703300B5EC20BE5196A
-:0C003600907F987410F090C000E0FF2252
-:03004300021300A5
-:03000000020E00ED
-:400106006058B48003433602E53630E726E519D3942040037519208519087E7E7F80750C7E750D80AF36120F4BE51925E0907FB7F08027E519D3943F400375193F851908D4
-:40014600907E80E536F07E7E7F81750C7E750D81120CDFE51904907FB7F0907FCEE030E1062005030203C1C205E4F51874402518F582E4347CF583E0FFE5187C007B017AF1
-:400186007E79002400F9EC347EFAEF120ED20518E518B420D7907E00E06068907E03E060247F01E4FD1211B17F037DCD1211B1434680907F987414F090C000E546F0E490E0
-:4001C6007E13F08030907E01E0FF121035907E02E0FF12105B7F01907E11E0FD1211B17F037D071211B1434680907F987414F090C000E546F0907F987412F0E5404406903E
-:40020600C000F0907E03E07006907E13E07008E4907E13F07525FF907E05E06012A3E0543FF544907F987413F090C000E544F0907E07E0602BA3E0600543428080035342DA
-:400246007F5342FC907E09E06011434202A3E0FF1210A7907E0BE0FF1210CDAF42121081907E03E0600853427FAF42121081907E0CE06018A3E0600543460280035346FDB4
-:40028600907F987414F090C000E546F0907E0EE06018A3E0600543460180035346FE907F987414F090C000E546F0907E12E0F53AA3E013920DA3E0F53CA3E060054346108B
-:4002C60080035346EF907F987414F090C000E546F0907E16E060325344BF907F987413F0E544547F90C000F0907F987411F01212DFEF54FE90C000F0533EFDE4FFAD3E120F
-:4003060011B1E4F52AF529D207907E17E0600F433E02E4FFAD3E1211B1752901D207907E18E06010907F987412F0E540440490C000F0D200907E19E06011434440907F98F2
-:400346007413F0E544547F90C000F0907E1AE0600F533EFEE4FFAD3E1211B1752B01D207907E1BE0600F433E01E4FFAD3E1211B1E4F52BD207907E1CE0600E907F98741284
-:40038600F0E540440290C000F0907E1DE06002D20B907E1EE06008752C01E4F538D207907E1FE06011907FD77411F07431F07415F07435F0D203E4907FCFF0301A52E53892
-:4003C60060021538201349E513D3940040041513803E75130A301B02D2131212DFEF5401F519652A600585192AD207121333EF5480F51965266005851926D207300D11127F
-:400406001333EF5410F51965256005851925D207201B030207EC300A1812136FEFC3953D40030204AE907FC17401F0C20AC200807730043B907FCAE020E16D12136FEFC35A
-:4004460094405064907D40E013920A907FCBE014F519200011600FF5087E7D7F41750C7D750D41120D04C204E4907FCBF08039907FCCE020E13212136FEFC39440502990BC
-:400486007CC0E013920A907FCDE014F519200011600FF5087E7C7FC1750C7C750DC1120D04D204E4907FCDF0907FBAE030E1030205361212208F1912137B8F37E519C3952B
-:4004C6003B500F121357EF30E008E53720E703300C5EC20CE5196058B48003433702E53730E726E519D3942040037519208519087E7D7F80750C7D750D80AF37120F84E503
-:400506001925E0907FBBF08027E519D3943F400375193F851908907D80E537F07E7D7F81750C7D750D81120D29E51904907FBBF0907FD0E030E106200603020797C206E4F8
-:40054600F51874C02518F582E4347BF583E0FFE5187C007B017A7E79202420F9EC347EFAEF120ED20518E518B420D7907E20E06068907E23E060247F01E4FD1211FB7F0329
-:400586007DCD1211FB434780907F98740CF090C000E547F0E4907E33F08030907E21E0FF121119907E22E0FF12113F7F01907E31E0FD1211FB7F037D071211FB4347809048
-:4005C6007F98740CF090C000E547F0907F98740AF0E541440690C000F0907E23E07006907E33E07008E4907E33F0752EFF907E25E06012A3E0543FF545907F98740BF090EB
-:40060600C000E545F0907E27E0602BA3E06005434380800353437F5343FC907E29E06011434302A3E0FF121165907E2BE0FF12118BAF431210F3907E23E0600853437FAFFE
-:40064600431210F3907E2CE06018A3E0600543470280035347FD907F98740CF090C000E547F0907E2EE06018A3E0600543470180035347FE907F98740CF090C000E547F0D4
-:40068600907E32E0F53BA3E013920EA3E0F53DA3E0600543471080035347EF907F98740CF090C000E547F0907E36E060325345BF907F98740BF0E545547F90C000F0907F79
-:4006C600987409F012134BEF54FE90C000F0533FFDE4FFAD3F1211FBE4F533F532D208907E37E0600F433F02E4FFAD3F1211FB753201D208907E38E06010907F98740AF043
-:40070600E541440490C000F0D200907E39E06011434540907F98740BF0E545547F90C000F0907E3AE0600F533FFEE4FFAD3F1211FB753401D208907E3BE0600F433F01E4E9
-:40074600FFAD3F1211FBE4F534D208907E3CE0600E907F98740AF0E541440290C000F0907E3DE06002D20C907E3EE06008753501E4F539D208907E3FE06011907FD7741389
-:40078600F07433F07416F07436F0D204E4907FD1F0301A52E53960021539301349E513D3940040041513803E75130A301B02C21312134BEF5401F51965336005851933D279
-:4007C60008121387EF5480F519652F600585192FD208300E11121387EF5410F519652E600585192ED208301A2A907FD2E020E123907B40E06009E0F515907B42E0F5169035
-:400806007B41E06009907FD77417F07437F0E4907FD3F0907FC2E030E103020920E50A7040300739E5387035C207F5187E007B0074242518F9EE3400FA120E8CFF748025BD
-:4008460018F582E4347BF583EFF00518E518B409DB907FC37409F0753810E4F52C750A0122E50A64017040300839E5397035C208F5187E007B00742D2518F9EE3400FA1297
-:400886000E8CFF74802518F582E4347BF583EFF00518E518B409DB907FC37409F0753910E4F535750A0222E50A6402703630142FC214F5187E007B00740E2518F9EE340083
-:4008C600FA120E8CFF74802518F582E4347BF583EFF00518E518B405DB907FC37405F0750A0322E51560301515E4F5187E007B0074142518F9EE3400FA120E8CFF748025F2
-:4009060018F582E4347BF583EFF00518E518B403DB907FC37403F0E4F50A22907FE9E0120EE40A08000A7C010AE80309440609FB0809F50909DD0A09EC0B00000B37907F3D
-:40094600EBE024FE6019146061240260030209D37419907FD4F07400907FD5F0020B3E907FEAE070047F0280027F03758282758319EFF075827B758319F0758274758319B2
-:40098600F0758266758319F0758258758319F0907FEAE004758217758319F07419907FD4F07412907FD5F0020B3E907FEAE0FF120F0AEA49600DEA907FD4F0E9907FD5F085
-:4009C600020B3E907FB4E04401F0020B3E907FB4E04401F0020B3E907F00E509F0907FB57401F0020B3E907FEAE0F509020B3E120B46020B3E907F007401F0907FB5F00205
-:400A06000B3E907FE8E0247F60241460312402705BA210E433FF25E0FFA216E4334F907F00F0E4A3F0907FB57402F0020B3EE4907F00F0A3F0907FB57402F0020B3E907F04
-:400A4600ECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F0020B3E907FB4E04401F0020B3E907FE8E024FE601D24020F
-:400A86006003020B3E907FEAE0B40105C210020B3E907FB4E04401F0020B3E907FEAE07038907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E4F0907FB6
-:400AC600ECE05480FF131313541FFFE054072F907FD7F0E04420F0805F907FB4E04401F08056907FE8E024FE60182402704A907FEAE0B40104D210803F907FB4E04401F049
-:400B06008036907FEAE07020907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF5837401F08010907FB4E04401F08007907FB4E04401F0907FB4E04402F022D4
-:400B4600E4907F93F0907F9C7430F0E4907F96F0907F9574C0F0907F9E743FF0907F987418F0E4F58E907FDF74FFF0907FDEF0E4F5247518017B0074242518F9E43400FA8B
-:400B8600E4120ED20518E518B409EA753A01E4F538F513F536C207C20BC205C200C209C213907F987413F075440390C0007403F07F0CE4FD1211B17F108F42121081907F02
-:400BC600987412F07F018F40EF440690C000F0907F987414F075468090C0007480F00FE4FD1211B1E4FF7EA3AD068D3E1211B1907F987411F090C000E4F07F057D7F12118E
-:400C0600B17F0112126A7F037D071211B1201B03020CB7752D017518017B00742D2518F9E43400FAE4120ED20518E518B409EA753B01E4F539F513F537C208C20CC206C2CD
-:400C460000C20AC213907F98740BF075450390C0007403F07F0CE4FD1211FB7F108F431210F3907F98740AF07F018F41EF440690C000F0907F98740CF075478090C000744E
-:400C860080F00FE4FD1211FBE4FF7EA3AD068D3F1211FB907F987409F090C000E4F07F057D7F1211FB7F0112128B7F037D071211FBD21222907F987410F0AF08E50DF582A5
-:400CC600E50CF583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987410F0AF08E50DF582E50CF583C2AF058690C000E00586F0A30586DFF70586D2AF22907F20
-:400D0600987408F0AF08E50DF582E50CF583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987408F0AF08E50DF582E50CF583C2AF058690C000E00586F0A3055C
-:400D460086DFF70586D2AF227400F58690FDA57C05A3E582458370F922907FD6E04480F0438701000000000022D219907F92E04402F0907FAEE0FFD39210E433FEEF4EF089
-:400D8600D2E843D820907FDE7401F0907FDFF0907FAB74FFF0907FA9F0907FAAF05391EF907FAFE04401F0907FAEE0440DF0D2AFD21A121245C211E4F50BF513C217C212D4
-:400DC600907FA104F0907FD8E065176010301205D21A120046907FD8E0F5178008301205C21A120046301107C21112092180D63018D3C21812139380CC22787FE4F6D8FDC7
-:400E0600758147020E47020D6FE493A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F4420C8834004F456800146F6DFE4800B01020408102040F5
-:400E4600809012ACE47E019360BCA3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE493A3F8E493A3C8C582C8CAC583CAF0A3C8C582C8CAC583CA1E
-:400E8600DFE9DEE780BEBB010689828A83E0225002E722BBFE02E32289828A83E49322BB010CE58229F582E5833AF583E0225006E92582F8E622BBFE06E92582F8E222E5B8
-:400EC6008229F582E5833AF583E49322BB010689828A83F0225002F722BBFE01F322D083D082F8E4937012740193700DA3A393F8740193F5828883E4737402936860EFA3C1
-:400F0600A3A380DF8F18E4F519751AFF751B19751C86AB1AAA1BA91C900001120EA5B4031DAF190519EFB5180122120E8C7E0029FFEE3AA907751AFFF51B891C80D47B00A5
-:400F46007A007900228F1A050DE50DAE0C7002050C14F5828E83E51AF0120036050DE50DAC0C7002050C14F5828C83EFF01508E508600A1213278F1AEF423680CA228F1AFC
-:400F8600050DE50DAE0C7002050C14F5828E83E51AF012133F050DE50DAC0C7002050C14F5828C83EFF01508E508600A12137B8F1AEF423780CA22C0E0C083C082C085C088
-:400FC60084C086758600907FC4E4F05391EF907FAB7404F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D2115391EF907FAB7401F0D086D084D0C6
-:4010060085D082D083D0E032C0E0C083C082C085C084C086758600D2185391EF907FAB7408F0D086D084D085D082D083D0E032907F987413F090C00074BFF0907F9874108A
-:40104600F090C000EFF0907F987413F0E544547F90C000F022907F987413F090C00074BFF0907F987411F090C000EFF0907F987413F0E544547F90C000F022907F98741349
-:40108600F090C00074BFF0907F987412F090C000EFF0907F987413F0E544547F90C000F022907F987413F090C00074BFF0907F987414F090C000EFF0907F987413F0E544D9
-:4010C600547F90C000F022907F987413F090C00074BFF0907F987416F090C000EFF0907F987413F0E544547F90C000F022907F98740BF090C00074BFF0907F98740AF0902A
-:40110600C000EFF0907F98740BF0E545547F90C000F022907F98740BF090C00074BFF0907F987408F090C000EFF0907F98740BF0E545547F90C000F022907F98740BF090AF
-:40114600C00074BFF0907F987409F090C000EFF0907F98740BF0E545547F90C000F022907F98740BF090C00074BFF0907F98740CF090C000EFF0907F98740BF0E545547FEC
-:4011860090C000F022907F98740BF090C00074BFF0907F98740EF090C000EFF0907F98740BF0E545547F90C000F022907F987413F0E544547F90C000F0907F987417F09075
-:4011C600C000EFF0907F987415F090C000EDF02212130F8F1A12130F8F1BE51A651B601212130F8F1AE51A651B600712130F8F1B80E8AF1A22907F98740BF0E545547F9098
-:40120600C000F0907F98740FF090C000EFF0907F98740DF090C000EDF0221213638F1A1213638F1BE51A651B60121213638F1AE51A651B60071213638F1B80E8AF1A2290C8
-:401246007FD6E054FBF0E04408F0301A04E04402F07FF47E011212C8907FD6E054F7F0E04404F022AE07E4FFE53E547FFD1211B1907F987411F090C000EEF0E4E53E4480E8
-:40128600FD1211B122AE07E4FFE53F547FFD1211FB907F987409F090C000EEF0E4E53F4480FD1211FB22050E02000000000314030000C111C118C195C110C116010A00C19C
-:4012C6001B008E188F19E5191519AE18700215184E6005120D4E80EE22907F987411F090C000E0FF22907F987412F090C000E0FF2253D8EF320000000000020FE70002130A
-:401306000400020FBD0002100E907F987413F090C000E0FF22907F987414F090C000E0FF22907F987415F090C000E0FF22907F987416F090C000E0FF22907F987408F09050
-:40134600C000E0FF22907F987409F090C000E0FF22907F98740AF090C000E0FF22907F98740BF090C000E0FF22907F98740CF090C000E0FF22907F98740DF090C000E0FFC5
-:4013860022907F98740EF090C000E0FF22120003120D5F120B4622000000000000000000000000000000000000000000000000000000000000000000000000000000000083
-:4013C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7
-:4014060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6
-:401446000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066
-:401486000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026
-:4014C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6
-:4015060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5
-:401546000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065
-:401586000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025
-:4015C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5
-:4016060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4
-:401646000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064
-:401686000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024
-:4016C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4
-:4017060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3
-:401746000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063
-:401786000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023
-:4017C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3
-:4018060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2
-:401846000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062
-:401886000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022
-:4018C6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012011001FF00BF
-:401906000040CD06120100000102000209027400010100A032090400000EFF0000000705010240000007050202400000070503024000000705040240000007050502400074
-:4019460000070506024000000705070240000007058102400001070582024000010705830240000107058402400001070585024000010705860240000107058702400001F3
-:401986000403090448034B00650079007300700061006E002C002000610020006400690076006900730069006F006E0020006F006600200049006E006E006F005300790040
-:4019C6007300200049006E0063002E0036034B00650079007300700061006E0020005500530042002000530065007200690061006C002000410064006100700074006500F9
-:141A06007200100330003000300030003000300030000000F7
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
diff --git a/firmware/keyspan/usa19.HEX b/firmware/keyspan/usa19.HEX
deleted file mode 100644
index c5d1496e8714..000000000000
--- a/firmware/keyspan/usa19.HEX
+++ /dev/null
@@ -1,101 +0,0 @@
-:0A002600120DBF120F47120D6B22DE
-:0300330002001AAE
-:04001A0053D8EF3296
-:100003008E138F14E5141514AE13700215134E607E
-:0700130005120F3680EE22FA
-:0300230002004692
-:10004600C0E0C083C082C086758600C0D075D00867
-:1000560030990E300807A20B929B853599C299D22A
-:100066000F200F03020431C20F20020302025620A2
-:100076000803020127E537C39550503E2009362074
-:100086000633907F9BE030E303200E29300D12AF3C
-:1000960037053774402FF582E4347EF583E01392FA
-:1000A6000BAF37053774402FF582E4347EF583E0D5
-:1000B600F53502042FC20802042F907FC7E4F0C270
-:1000C60002300A0CC20A907FBB04F0C20802042F59
-:1000D600907FC8E030E105C20802042F907FC9E096
-:1000E600F550907DC0E013920A20092D20062A9033
-:1000F6007F9BE030E303200E20300D11907DC1E0A0
-:03004300020F00A9
-:03000000020C618E
-:4001060013920BA3E0F53575370302042F753702907DC1E0F53502042F753701C20802042FE537C3955050030201CF907FC6E030E107C210C20302042F907FC7E0F5509004
-:400146007E40E013920A3009030201C720067220006F907F9BE030E303200E65300D10907E41E013929BA3E0F5997537038009907E41E0F599753702E537C39550401790B1
-:400186007FC7E4F0C202200A0302042FC20A907FBB04F002042F300D12AF37053774402FF582E4347EF583E013920BAF37053774402FF582E4347EF583E0F535D20802045D
-:4001C6002F753701C21002042F300903020251200679907F9BE030E303200E6F300D12AF37053774402FF582E4347EF583E013929BAF37053774402FF582E4347EF583E046
-:40020600F599E537C395504017907FC7E4F0C202200A0302042FC20A907FBB04F002042F300D12AF37053774402FF582E4347EF583E013920BAF37053774402FF582E43483
-:400246007EF583E0F535D20802042FC21002042F200803020308E537C39550503E200936200633907F9BE030E303200E29300D12AF37053774C02FF582E4347DF583E013DE
-:40028600920BAF37053774C02FF582E4347DF583E0F53502042FC20802042F907FC9E4F0D202300A0CC20A907FBB04F0C20802042F907FC6E030E105C20802042F907FC765
-:4002C600E0F550907E40E013920A20092D20062A907F9BE030E303200E20300D11907E41E013920BA3E0F53575370302042F753702907E41E0F53502042F753701C20802EF
-:40030600042FE537C3955050030203B0907FC8E030E107C210C20302042F907FC9E0F550907DC0E013920A3009030203A820067220006F907F9BE030E303200E65300D1034
-:40034600907DC1E013929BA3E0F5997537038009907DC1E0F599753702E537C395504017907FC9E4F0D202200A0302042FC20A907FBB04F002042F300D12AF37053774C0F5
-:400386002FF582E4347DF583E013920BAF37053774C02FF582E4347DF583E0F535D20802042F753701C21002042F30090302042D200674907F9BE030E303200E6A300D128E
-:4003C600AF37053774C02FF582E4347DF583E013929BAF37053774C02FF582E4347DF583E0F599E537C395504013907FC9E4F0D202300A35C20A907FBB04F0802C300D12CC
-:40040600AF37053774C02FF582E4347DF583E013920BAF37053774C02FF582E4347DF583E0F535D2088002C210D21220980302056DC2982001030204DA201127AF360536F3
-:4004460074802FF582E4347EF583E599F0300D4DAF36053674802FF582E4347EF583E598F0803A859910E510B54404D206802EE510B54304C2068025AF36053674802FF5AB
-:4004860082E4347EF583E510F0300D11AF36053674802FF582E4347EF583E598F0D20CE536C39540500302056B907FB8E030E116E536C39440500302056B15361536052BDD
-:4004C60043330102056B907FB7E536F0753600C20102056B201127AF36053674002FF582E4347EF583E599F0300D4DAF36053674002FF582E4347EF583E598F0803A859937
-:4005060010E510B54404D206802EE510B54304C2068025AF36053674002FF582E4347EF583E510F0300D11AF36053674002FF582E4347EF583E598F0D20CE536C3954040CE
-:4005460024907FB6E030E112E536C39440401615361536052B433301800B907FB9E536F0753600D201D212301205C212020056D0D0D086D082D083D0E032907FCAE030E1CA
-:40058600030206ABE4F51374402513F582E4347DF583E0FFE5137C007B002438F9EC3400FAEF120D330513E513B418DBE538600C75C92075C8348539CA853ACBE53B1392BF
-:4005C6000D929FE53C13920EE53D139211E53E6009907F98E054FBF08007907F98E04404F0E53F6009907F98E0547FF08007907F98E04480F0E545600BC209C206907F950E
-:40060600E04402F0E546600CD206433301907F95E04402F0E547600DC2AFC208D200E4F550F537D2AFE5486005301102D206E5496015907F95E054FDF0907F9EE04402F0AA
-:40064600907F98E054FDF0E54A600AD29CC298752C0175311EE54B6007C29CE4F536F52CE54C6003E4F536E54D6002D204E54E600AE54A7002F531E54E4233E54F601F9064
-:400686007FD77411F07431F07412F07432F07413F07433F07414F07434F0D202D201D205E4907FCBF0A209E433FF652960058F29433301A206E433FF652A60058F2A4333BA
-:4006C60001907F9BE05408B5250AE054086408F525433301907F9BE05410B5260AE054106410F526433301907F9BE05440B5270AE054406440F527433301907F9BE0542026
-:40070600B5280AE054206420F528433301300435C2AF300118907FB8E020E127E5366009907FB7F0E4F536C201C2048016907FB6E020E10FE5366009907FB9F0E4F536D234
-:4007460001C204D2AF20033730021B907FC6E020E12D907E40E013920A753701907FC7E0F550D2038019907FC8E020E112907DC0E013920A753701907FC9E0F550D20320E9
-:400786001033200006E5376550702A30031A300209E4907FC7F0C2028007E4907FC9F0D202C203E4F550F537300A0AC20AC200907FBB7401F03010030208C5200303020805
-:4007C600C5300E0A907F9BE030E3030208C53006030208C53009030208C5300262300D12AF37053774402FF582E4347EF583E0139219AF37053774402FF582E4347EF583CF
-:40080600E0F514E537C39550502A300D12AF37053774402FF582E4347EF583E013920BAF37053774402FF582E4347EF583E0F535D208806BC208E4907FC7F0C20280603081
-:400846000D12AF37053774C02FF582E4347DF583E0139219AF37053774C02FF582E4347DF583E0F514E537C39550502A300D12AF37053774C02FF582E4347DF583E013929F
-:400886000BAF37053774C02FF582E4347DF583E0F535D2088009C208E4907FC9F0D202300D04A219929BD210C2AF85149920080D300A0AC20AC200907FBB7401F0D2AF9072
-:4008C6007FBCE020E151E533604DE5317049E53330E108E4F52F753301800BA205E433F52FC205E4F533E4F5137E007B0074242513F9EE3400FA120CEDFF74002513F582D8
-:40090600E4347DF583EFF00513E513B40CDB907FBD740CF075311022907FE9E0120D450A03000A77010AE30309410609F40809E80909D00A09DF0B00000B32907FEBE024EB
-:40094600FE601614605724027076740F907FD4F07464907FD5F0020B39907FEAE070047F0280027F037582B575830FEFF07582AE75830FF07582A775830FF07582A07583BA
-:400986000FF0907FEAE00475827B75830FF0740F907FD4F07476907FD5F0020B39907FEAE0FF120E48EA49600DEA907FD4F0E9907FD5F0020B39907FB4E04401F0020B39D4
-:4009C600907FB4E04401F0020B39907F00E519F0907FB57401F0020B39907FEAE0F519020B39907FEAE0F518120D6B020B39907F00E518F0907FB57401F0020B39907FE822
-:400A0600E0247F60241460312402705BA213E433FF25E0FFA217E4334F907F00F0E4A3F0907FB57402F0020B39E4907F00F0A3F0907FB57402F0020B39907FECE0F45480B6
-:400A4600FFC4540FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F0020B39907FB4E04401F0020B39907FE8E024FE601D24026003020B3904
-:400A8600907FEAE0B40105C213020B39907FB4E04401F0020B39907FEAE07038907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E4F0907FECE05480FFCC
-:400AC600131313541FFFE054072F907FD7F0E04420F0805F907FB4E04401F08056907FE8E024FE60182402704A907FEAE0B40104D213803F907FB4E04401F08036907FEA36
-:400B0600E07020907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF5837401F08010907FB4E04401F08007907FB4E04401F0907FB4E04402F022201503020B3E
-:400B4600D3E53160021531E536604F65347045E532F460020532E532C39541403DC2AF300118907FB8E020E127907FB7E536F0C201E4F536F532F5348016907FB6E020E13D
-:400B86000F907FB9E536F0D201E4F536F532F534D2AF8006853634E4F532E52C602F200C07907F9BE030E00FE52D6006E4F52D433301E4F5308014E530D39542500DE530DB
-:400BC600B54206752D014333010530C20C22751201C214C218C213C217C215C212D216E4F518907F92E054FDF0907FAEE0FFD39213E433FEEF4EF0D2E843D820907FDE74DB
-:400C060001F0907FDFF0907FAB74FFF0907FA9F0907FAAF05391EF907FAFE04401F0907FAEE0440DF0D2AFD2BCD219120EDAC214301503120580907FD8E065116008E0F5CA
-:400C460011120B4180EA301407C21412091E80E03018DDC21812002680D622787FE4F6D8FD758150020CA8020BD4E493A3F8E493A34003F68001F208DFF48029E493A3F83B
-:400C86005407240CC8C333C4540F4420C8834004F456800146F6DFE4800B0102040810204080900E04E47E019360BCA3FF543F30E509541FFEE493A360010ECF54C025E08E
-:400CC60060A840B8E493A3FAE493A3F8E493A3C8C582C8CAC583CAF0A3C8C582C8CAC583CADFE9DEE780BEBB010689828A83E0225002E722BBFE02E32289828A83E4932242
-:400D0600BB010CE58229F582E5833AF583E0225006E92582F8E622BBFE06E92582F8E222E58229F582E5833AF583E49322BB010689828A83F0225002F722BBFE01F322D0E1
-:400D460083D082F8E4937012740193700DA3A393F8740193F5828883E4737402936860EFA3A3A380DFE4907F93F0907F9C7430F0907F967410F0907F947401F0907F9D04E2
-:400D8600F0907F977420F0907F957403F0907F9E7484F0E4907F98F0907FC7F0907FC9F0907FCBF075984043A810907FDE741FF0907FDF740FF0D21522E4907F95F0907FF7
-:400DC60094F0907F93F0907F9DE04402F0907F97E04402F0907F9DE054FDF0907F9C7420F0E4907F96F0907F9DE044FDF0E4907F97F0907F9E74FFF0E4907F98F0220C24D0
-:400E0600000000000000000000000000013000013301013200013700015000013600013400C105C10CC103C10FC104C10EC111C10AC110C108C109C106C100C10DC181C109
-:400E460082008F13E4F5147515FF75160F7517B9AB15AA16A917900001120D06B4031DAF140514EFB5130122120CED7E0029FFEE3AA9077515FFF516891780D47B007A006D
-:400E8600790022C0E0C083C082C085C084C086758600907FC4E4F05391EF907FAB7404F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D2145391C7
-:400EC600EF907FAB7401F0D086D084D085D082D083D0E032907FD6E054FBF0E04408F0301904E04402F07FF47E01120003907FD6E054F7F0E04404F02200020EB300020FC0
-:400F06000400020E8900020F0FC0E0C083C082C085C084C086758600D2185391EF907FAB7408F0D086D084D085D082D083D0E0327400F58690FDA57C05A3E582458370F9B9
-:400F460022907FD6E04480F04387010000000000220000000000000000000000000012011001FF000040CD0607010100010200020902430001010080320904000007FF008A
-:400F86000000070501024000000705020240000007050302400000070581024000010705820240000107058302400001070584024000010403090410034B00650079007332
-:170FC60000700061006E000E03530065007200690061006C00000064
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
diff --git a/firmware/keyspan/usa19qi.HEX b/firmware/keyspan/usa19qi.HEX
deleted file mode 100644
index 353bfcfefb9c..000000000000
--- a/firmware/keyspan/usa19qi.HEX
+++ /dev/null
@@ -1,101 +0,0 @@
-:0300330002001AAE
-:04001A0053D8EF3296
-:100003008E118F12E5121512AE11700215114E608A
-:0700130005120F8480EE22AC
-:0300230002004692
-:10004600C0E0C083C082C086758600C0D075D00867
-:1000560030990E300B07A20E929B853699C299D223
-:100066001220120302041EC21220030302024E20B3
-:100076000B03020126E53AC39553503C200C34206D
-:100086000931907F9BE055387029301012AF3A0540
-:100096003A74402FF582E4347EF583E013920EAF76
-:1000A6003A053A74402FF582E4347EF583E0F5365E
-:1000B60002041CC20B02041C907FC7E4F0C203308A
-:1000C6000D0CC20D907FBB04F0C20B02041C907F86
-:1000D600C8E030E105C20B02041C907FC9E0F5536D
-:1000E600907DC0E013920D7516FF200C2B20092879
-:1000F600907F9BE055387020301011907DC1E01341
-:03004300020E00AA
-:03000000020026D5
-:0C002600787FE4F6D8FD758154020B28A9
-:40010600920EA3E0F536753A0302041C753A02907DC1E0F53602041C753A01C20B02041CE53AC3955350030201C9907FC6E030E107C214C20502041C907FC7E0F553907ECB
-:4001460040E013920D7516FF200C7020096D907F9BE055387065301010907E41E013929BA3E0F599753A038009907E41E0F599753A02E53AC395534017907FC7E4F0C203F6
-:40018600200D0302041CC20D907FBB04F002041C301012AF3A053A74402FF582E4347EF583E013920EAF3A053A74402FF582E4347EF583E0F536D20B02041C753A01C214A3
-:4001C60002041C300C03020249200977907F9BE05538706F301012AF3A053A74402FF582E4347EF583E013929BAF3A053A74402FF582E4347EF583E0F599E53AC3955340AB
-:4002060017907FC7E4F0C203200D0302041CC20D907FBB04F002041C301012AF3A053A74402FF582E4347EF583E013920EAF3A053A74402FF582E4347EF583E0F536D20B44
-:4002460002041CC21402041C200B030202FFE53AC39553503C200C34200931907F9BE055387029301012AF3A053A74C02FF582E4347DF583E013920EAF3A053A74C02FF5F9
-:4002860082E4347DF583E0F53602041CC20B02041C907FC9E4F0D203300D0CC20D907FBB04F0C20B02041C907FC6E030E105C20B02041C907FC7E0F553907E40E013920DAF
-:4002C6007516FF200C2B200928907F9BE055387020301011907E41E013920EA3E0F536753A0302041C753A02907E41E0F53602041C753A01C20B02041CE53AC39553500381
-:400306000203A2907FC8E030E107C214C20502041C907FC9E0F553907DC0E013920D7516FF200C7020096D907F9BE055387065301010907DC1E013929BA3E0F599753A037A
-:400346008009907DC1E0F599753A02E53AC395534017907FC9E4F0D203200D0302041CC20D907FBB04F002041C301012AF3A053A74C02FF582E4347DF583E013920EAF3A81
-:40038600053A74C02FF582E4347DF583E0F536D20B02041C753A01C21402041C200C75200972907F9BE05538706A301012AF3A053A74C02FF582E4347DF583E013929BAF02
-:4003C6003A053A74C02FF582E4347DF583E0F599E53AC395534013907FC9E4F0D203300D35C20D907FBB04F0802C301012AF3A053A74C02FF582E4347DF583E013920EAF3D
-:400406003A053A74C02FF582E4347DF583E0F536D20B8002C214D20120980302055AC2982002030204C7201627AF39053974802FF582E4347EF583E599F030104DAF3905C8
-:400446003974802FF582E4347EF583E598F0803A859910E510B54704D209802EE510B54604C2098025AF39053974802FF582E4347EF583E510F0301011AF39053974802F11
-:40048600F582E4347EF583E598F0D20FE539C395435003020558907FB8E030E116E539C39440500302055815391539052B433401020558907FB7E539F0753900C2020205D3
-:4004C60058201627AF39053974002FF582E4347EF583E599F030104DAF39053974002FF582E4347EF583E598F0803A859910E510B54704D209802EE510B54604C209802573
-:40050600AF39053974002FF582E4347EF583E510F0301011AF39053974002FF582E4347EF583E598F0D20FE539C395434024907FB6E030E112E539C3944040161539153909
-:40054600052B433401800B907FB9E539F0753900D202D201300105C201020056D0D0D086D082D083D0E032907FBCE020E151E534604DE5317049E53430E108E4F52F7534D4
-:4005860001800BA208E433F52FC208E4F534E4F5117E007B0074242511F9EE3400FA120D06FF74002511F582E4347DF583EFF00511E511B40CDB907FBD740CF075311090CD
-:4005C6007FCAE030E1030206F3E4F51174402511F582E4347DF583E0FFE5117C007B00243BF9EC3400FAEF120D1F0511E511B418DBE53B601175C92075C836853CCA853D98
-:40060600CBE4907F9FF0E53E139210929F853F38E540139216E5416009907F98E054FBF08007907F98E04404F0E5426009907F98E0547FF08007907F98E04480F0E54860BE
-:400646000BC20CC209907F95E04402F0E549600CD209433401907F95E04402F0E54A600DC2AFC20BD200E4F553F53AD2AFE54B6005301602D209E54C6015907F95E054FDB4
-:40068600F0907F9EE04402F0907F98E054FDF0E54D600AD29CC298752C0175311EE54E6007C29CE4F539F52CE54F6003E4F539E5506002D207E551600AE54D7002F531E55C
-:4006C600514234E552601F907FD77411F07431F07412F07432F07413F07433F07414F07434F0D203D202D208E4907FCBF0A20CE433FF652960058F29433401A209E433FF84
-:40070600652A60058F2A433401907F9BE0FF54086408FE652560058E25433401EF54106410FE652660058E26433401EF54406440FE652760058E27433401EF54206420FE1C
-:40074600652860058E28433401907F9AE054406440FE652E60058E2E433401300735C2AF300218907FB8E020E127E5396009907FB7F0E4F539C202C2078016907FB6E0203B
-:40078600E10FE5396009907FB9F0E4F539D202C207D2AF20053D30031E907FC6E020E133907E40E013920D753A01907FC7E0F553D2057516FF801C907FC8E020E115907DD3
-:4007C600C0E013920D753A01907FC9E0F553D2057516FF201433200006E53A6553702A30051A300309E4907FC7F0C2038007E4907FC9F0D203C205E4F553F53A300D0AC265
-:400806000DC200907FBB7401F0301403020914200503020914300C03020914300903020914907F9BE055386003020914300361301012AF3A053A74402FF582E4347EF5833F
-:40084600E013921BAF3A053A74402FF582E4347EF583E0FEE53AC39553502A301012AF3A053A74402FF582E4347EF583E013920EAF3A053A74402FF582E4347EF583E0F546
-:4008860036D20B806AC20BE4907FC7F0C203805F301012AF3A053A74C02FF582E4347DF583E013921BAF3A053A74C02FF582E4347DF583E0FEE53AC39553502A301012AFE7
-:4008C6003A053A74C02FF582E4347DF583E013920EAF3A053A74C02FF582E4347DF583E0F536D20B8009C20BE4907FC9F0D203301004A21B929BD214C2AF8E99200B0D301D
-:400906000D0AC20DC200907FBB7401F0D2AF22907FE9E0120D310A11000A7E010ADB030938060A020809F60909DE0A09ED0B00000B19907FEBE024FE601914605A24026041
-:4009460003020B19740D907FD4F07487907FD5F0020B20907FEAE070047F0280027F037582D875830DEFF07582D175830DF07582CA75830DF07582C375830DF0907FEAE078
-:400986000475829E75830DF0740D907FD4F07499907FD5F0020B20907FEAE0700B7511FF75120D7513DC801B907FEAE0B4010B7511FF75120D7513E080097511FF75120D19
-:4009C6007513F0AA12A913AE02EE907FD4F0AF01EF907FD5F0020B20907F00E515F0907FB57401F0020B20907FEAE0F515020B20120CB1907FEAE0F514020B20907F00E5BF
-:400A060014F0907FB57401F0020B20907FE8E0247F602714603424026003020B19A217E433FF25E0FFA219E4334F907F00F0E4A3F0907FB57402F0020B20E4907F00F0A3B7
-:400A4600F0907FB57402F0020B20907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F0020B20907FE8E024FE601726
-:400A860024026003020B20907FEAE064016003020B19C217020B20907FEAE07076907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E4F0907FECE05480D6
-:400AC600FF131313541FFFE054072F907FD7F0E04420F08045907FE8E024FE601024027039907FEAE06401702AD217802D907FEAE07020907FECE0F45480FFC4540FFFE056
-:400B060054072F25E024B4F582E4347FF5837401F08007907FB4E04401F0907FB4E04402F022C210E4F514F534C209C20CC20BC214C20DC216C211C207C212C20FC208F538
-:400B460035F539F553F53AF533F530F52FF52EF52DF52CF52BF52AF529F528F527F526F525F524C205C218C21AC217C219C215C204D213C206C201907F92E054FDF0D2E820
-:400B860043D820907FDE7401F0907FDFF0907FAB74FFF0907FA9F0907FAAF05391EF907FAFE04401F0907FAEE0440FF0907FAC740EF0D2AFD2BCD21B120F5FC21830040316
-:400BC60012056D30042A300627C206E51660161516907FD8E030E6047F0080027F20907F96EFF08006907F967420F0120C0B80CD301807C21812091580C3301AC0C21A128E
-:400C06000FBB80B922E53160021531E53960556535704BE533F460020533E533C395444043C2AF30021B907FB8E020E12D907FB7E539F0C202E4F539F533F5357516FF802D
-:400C460019907FB6E020E112907FB9E539F0D202E4F539F533F5357516FFD2AF8006853935E4F533E52C6030200F07907F9BE030E00FE52D6006E4F52D433401E4F5308000
-:400C860014E530D39545500DE530B54506752D014334010530C20F22907FD9E030E2047F0080027F20907F96EFF022E4907F93F0907F9C7430F0907F967420F0907F94748A
-:400CC60001F0907F9D74BFF0907F977486F0907F957403F0907F9E7484F0907F98F0E4907FC7F0907FC9F0907FCBF075984043A810907FDE741FF0907FDF740FF0D204221A
-:400D0600BB010689828A83E0225002E722BBFE02E32289828A83E49322BB010689828A83F0225002F722BBFE01F322D083D082F8E4937012740193700DA3A393F8740193EB
-:400D4600F5828883E4737402936860EFA3A3A380DFC0E0C083C082C085C084C086758600907FC4E4F05391EF907FAB7404F0D086D084D085D082D083D0E03200000000007B
-:400D86000012011001FF000040CD060C010100010200020902430001010080320904000007FF00000007050102400000070502024000000705030240000007058102400010
-:400DC600010705820240000107058302400001070584024000010403090410034B00650079007300700061006E000E03530065007200690061006C000000020EA200020E41
-:400E06007B00020D5700020EC900020E1000020E1400020E1800020E1C00020EF000020E2400020F1500020E2C00020F3AE4907F95F0907F94F0907F93F0907F9DE044020A
-:400E4600F0907F97E04402F0907F9C7410F0E4907F96F0907F9D74FEF03017047F8080027F00907F97EFF0E4907F95F0907F9EF0907F98F022C0E0C083C082C085C084C00E
-:400E8600867586005391EF907FAB7402F0D206D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D2185391EF907FAB7401F0D086D084D085D082D083EB
-:400EC600D0E032C0E0C083C082C085C084C086758600D21A5391EF907FAB7408F0D086D084D085D082D083D0E032C0E0C083C082C085C084C0867586005391EF907FA974C2
-:400F060002F0D086D084D085D082D083D0E032C0E0C083C082C085C084C0867586005391EF907FA97404F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086D7
-:400F46007586005391EF907FA97408F0D086D084D085D082D083D0E032907FD6E054FBF0E04408F0301B04E04402F07FF47E01120003907FD6E054F7F0E04404F0227400B9
-:400F8600F58690FDA57C05A3E582458370F922907FD6E04480F0438701000000000022907FD6E04401F07F0D7E00120003907FD6E054FEF022120E33120F95907FD6E030FA
-:090FC600E703120FA5120CB12281
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
diff --git a/firmware/keyspan/usa19qw.HEX b/firmware/keyspan/usa19qw.HEX
deleted file mode 100644
index 8a891023bf51..000000000000
--- a/firmware/keyspan/usa19qw.HEX
+++ /dev/null
@@ -1,142 +0,0 @@
-:0300330002002D9B
-:04002D0053D8EF3283
-:10004600301019120E0FEFC3951440030200DF9013
-:100056007FBF7401F0C210C20B0200DF300D3E906C
-:100066007FC6E020E173120E0FEFC39440506A90F2
-:100076007E40E0139210907FC7E014F536200B11F6
-:10008600600FF5247E7E7F4175297E752A4112090F
-:1000960010C20DE4907FC7F07526FF803C907FC8A4
-:1000A600E020E135120E0FEFC39440502C907DC036
-:1000B600E0139210907FC9E014F536200B11600F03
-:1000C600F5247E7D7FC175297D752AC1120910D25E
-:1000D6000DE4907FC9F07526FF907FB6E030E1030E
-:1000E600020168120CFF8F36120E1B8F11E536C304
-:1000F6009513500F120DDEEF30E008E51120E703EF
-:0C003600907F987410F090C000E0FF2252
-:03004300020E00AA
-:10000300C0E0C083C082C085C084C086758600906E
-:100013007FC4E4F05391EF907FAB7404F0D086D0AB
-:0A00230084D085D082D083D0E03273
-:030000000209C52D
-:4001060030135FC213E5366059B48003431102E51130E724E536D3942040037536208536247E7E7F8075297E752A80120B9AE53625E0907FB7F0802AE536D3943F4003753B
-:40014600363F853624907E80E511F07E7E7F8175297E752A81120935E53604907FB7F07526FF907FCEE030E106200E030203C4E4F53574402535F582E4347CF583E0FFE589
-:40018600357C007B017A7E79002400F9EC347EFAEF120A970535E535B420D7907E00E0606E7F01907E11E0FD120CDA907E01E0FF120C1C907E02E0FF120C42D211D2127562
-:4001C6003604907E03E06005C2124336C0907E04E0B40107C21243360B8010907E04E06007C21143360980034336027F03AD36120CDA431A80907F987414F090C000E51A72
-:40020600F0907F987412F0E517440690C000F0907E05E06012A3E0543FF519907F987413F090C000E519F0907E07E06042907E13E0600543160480035316FBE4FFAD161247
-:400246000CDA907E08E06005431880800353187F5318FC907E09E06011431802A3E0FF120C8E907E0BE0FF120CB4AF18120C68907E0EE06018A3E06005431A018003531AD4
-:40028600FE907F987414F090C000E51AF0907E0CE06018A3E06005431A028003531AFD907F987414F090C000E51AF0907E12E0F513A3E0139214A3E0F514A3E06005431AC3
-:4002C600108003531AEF907F987414F090C000E51AF0907E16E060325319BF907F987413F0E519547F90C000F0907F987411F0120DD2EF54FE90C000F05316FDE4FFAD1621
-:40030600120CDAE4F50EF50DD20F907E17E0600F431602E4FFAD16120CDA750D01D20F907E18E06010907F987412F0E517440490C000F0D20B907E19E06011431940907F0D
-:40034600987413F0E519547F90C000F0907E1AE0600F5316FEE4FFAD16120CDA750F01D20F907E1BE0600F431601E4FFAD16120CDAE4F50FD20F907E1CE0600E907F9874A9
-:4003860012F0E517440290C000F0907E1DE06002D213907E1EE06008751001E4F512D20F907E1FE06011907FD77411F07431F07415F07435F0D20DC20EE4907FCFF0301674
-:4003C60071E51260021512E530D3940040041530806075300A120DD2EF5401F536650E600785360ED20F8011120E27EF5410F53665096005853609D20F120E27EF5480F5C1
-:4004060036650A600585360AD20F120E27EF5420F536650B600885360B301102D20F120E27EF5440F536650C600885360C301202D20F30162A907FD2E020E123907B40E035
-:400446006009E0F532907B42E0F533907B41E06009907FD77417F07437F0E4907FD3F0907FC2E030E103020529E5277040300F39E5127035C20FF5357E007B0074082535DB
-:40048600F9EE3400FA120A51FF74802535F582E4347BF583EFF00535E535B409DB907FC37409F0751210E4F51075270222E5276402703630052FC205F5357E007B00742B96
-:4004C6002535F9EE3400FA120A51FF74802535F582E4347BF583EFF00535E535B405DB907FC37405F075270322E53260337531031532E4F5357E007B0074312535F9EE34CD
-:4005060000FA120A51FF74802535F582E4347BF583EFF00535E535B403DB907FC37403F0E4F52722907FE9E0120AA9060800067C0106E903054D0605F90805ED0905D50A02
-:4005460005E40B00000739907FEBE024FE60161460502402706F7419907FD4F07400907FD5F0020740907FEAE070047F0280027F03758282758319EFF0758274758319F06E
-:40058600758258758319F0907FEAE004758217758319F07419907FD4F07412907FD5F0020740907FEAE0FF120B1CEA49600DEA907FD4F0E9907FD5F0020740907FB4E0449B
-:4005C60001F0020740907FB4E04401F0020740907F00E525F0907FB57401F0020740907FEAE0F525020740120748907FEAE0F523020740907F00E523F0907FB57401F00216
-:400606000740907FE8E0247F60241460312402705BA201E433FF25E0FFA207E4334F907F00F0E4A3F0907FB57402F0020740E4907F00F0A3F0907FB57402F0020740907F2C
-:40064600ECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F0020740907FB4E04401F0020740907FE8E024FE601E240216
-:400686006003020740907FEAE0B40106120DF9020740907FB4E04401F0020740907FEAE07038907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E4F090F8
-:4006C6007FECE05480FF131313541FFFE054072F907FD7F0E04420F08060907FB4E04401F08057907FE8E024FE60192402704B907FEAE0B40105120DF6803F907FB4E04487
-:4007060001F08036907FEAE07020907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF5837401F08010907FB4E04401F08007907FB4E04401F0907FB4E04402F9
-:40074600F022E4907F93F0907F9C7430F0907F967420F0907F9574C0F0907F9E743FF0907F987410F0E4F58E907FDF74FFF0907FDEF0E4F5087F017B0074082FF9E4340023
-:40078600FAE4120A970FBF09EE751301E4F512F530F511C20FC213C20EC20BC210C204907F987413F075190390C0007403F07F0CE4FD120CDA7F108F18120C68907F9874C2
-:4007C60012F07F018F17EF440690C000F00FE4FD120CDAE4FF7EA3AD068D16120CDA907F987411F090C000E4F07F057D7F120CDA7F01120D6A7F037D07120CDAE4FFE5167B
-:40080600547FFD120CDA120E0F8F15E4FFE5164480FD120CDAE51530E704C2088002D208907F987414F0751A8090C0007480F0D20322D215907F92E04402F0120DF9D2E87C
-:4008460043D820907FDE7401F0907FDFF0907FAB74FFF0907FA9F0907FAAF05391EF907FAFE04401F0907FAE740DF0D2AFD216120D24C202E4F528F530C209F523C20390F7
-:400886007FA104F0907FD8E065346048300305D216120046E50F6022E52660161526907FD8E030E6047F2080027F30907F96EFF0801A907F967430F08012907FD9E030E2F8
-:4008C600047F3080027F20907F96EFF0907FD8E0F5348020300307C2161200468016E50F7012907FD9E030E2047F3080027F20907F96EFF0300207C20212052A8086300AE4
-:4009060083C20A120B5D02088A22907F987410F0AF24E52AF582E529F583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987410F0AF24E52AF582E529F583C2A3
-:40094600AF058690C000E00586F0A30586DFF70586D2AF22907F987408F0AF24E52AF582E529F583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987408F0AFCD
-:4009860024E52AF582E529F583C2AF058690C000E00586F0A30586DFF70586D2AF227400F58690FDA57C05A3E582458370F922907FD6E04480F0438701000000000022784B
-:4009C6007FE4F6D8FD758139020A0C020838E493A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F4420C8834004F456800146F6DFE4800B010211
-:400A0600040810204080900D8BE47E019360BCA3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE493A3F8E493A3C8C582C8CAC583CAF0A3C8C582B0
-:400A4600C8CAC583CADFE9DEE780BEBB010689828A83E0225002E722BBFE02E32289828A83E49322BB010CE58229F582E5833AF583E0225006E92582F8E622BBFE06E925BB
-:400A860082F8E222E58229F582E5833AF583E49322BB010689828A83F0225002F722BBFE01F322D083D082F8E4937012740193700DA3A393F8740193F5828883E47374028F
-:400AC600936860EFA3A3A380DFE4907F93F0907F9C7420F0300103FF80027F00907F96EFF0E4907F94F0907F9D74FFF0E4907F97F0300811907F95F0907F9E74FFF0907F05
-:400B0600987420F022E4907F95F0907F9E74DFF0E4907F98F0228F35E4F5367537FF753819753986AB37AA38A939900001120A6AB4031DAF360536EFB5350122120A517E5C
-:400B46000029FFEE3AA9077537FFF538893980D47B007A00790022907FD8E0F535120ACF200807907F92E054FDF0907FD6E04480F01209B5907FD6E030E70E300105120D9C
-:400B8600BC8006120D49EF60E1907F92E04402F012074822052AE52AAE297002052914F5828E83E511F0120036052AE52AAC297002052914F5828C83EFF01524E5246007C7
-:400BC600120E1B8F1180CD22C0E0C083C082C085C084C086758600D2025391EF907FAB7401F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D20A9F
-:400C06005391EF907FAB7408F0D086D084D085D082D083D0E032907F987413F090C00074BFF0907F987410F090C000EFF0907F987413F0E519547F90C000F022907F9874E8
-:400C460013F090C00074BFF0907F987411F090C000EFF0907F987413F0E519547F90C000F022907F987413F090C00074BFF0907F987412F090C000EFF0907F987413F0E57C
-:400C860019547F90C000F022907F987413F090C00074BFF0907F987414F090C000EFF0907F987413F0E519547F90C000F022907F987413F090C00074BFF0907F987416F0FE
-:400CC60090C000EFF0907F987413F0E519547F90C000F022907F987413F0E519547F90C000F0907F987417F090C000EFF0907F987415F090C000EDF022120DEA8F37120D91
-:400D0600EA8F38E53765386012120DEA8F37E53765386007120DEA8F3880E8AF3722907FD6E054FBF0E04408F0301604E04402F07FF47E01120DA5907FD6E054F7F0E04448
-:400D460004F022907FD8E0F536120748120E27EF30E60B907FD8E0653660F17F0122120ACF7F0022AE07E4FFE516547FFD120CDA907F987411F090C000EEF0E4E516448084
-:400D8600FD120CDA22052B02000000000331030000C186C102C10AC101C107012700008E368F37E5371537AE36700215364E60051209A480EE22907FD6E04401F07F0D7E8D
-:400DC60000120DA5907FD6E054FEF022907F987411F090C000E0FF22907F987412F090C000E0FF22907F987413F090C000E0FF22D20122C2012200000000020BCE00020EF1
-:400E0600040002000300020BF5907F987414F090C000E0FF22907F987415F090C000E0FF22907F987416F090C000E0FF22000000000000000000000000000000000000004E
-:400E4600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C
-:400E8600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002C
-:400EC60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC
-:400F060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB
-:400F4600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B
-:400F8600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B
-:400FC60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EB
-:4010060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA
-:40104600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006A
-:40108600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A
-:4010C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EA
-:4011060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9
-:401146000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069
-:401186000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029
-:4011C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E9
-:4012060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8
-:401246000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068
-:401286000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028
-:4012C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E8
-:4013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7
-:401346000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067
-:401386000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027
-:4013C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7
-:4014060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6
-:401446000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066
-:401486000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026
-:4014C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6
-:4015060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5
-:401546000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065
-:401586000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025
-:4015C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5
-:4016060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4
-:401646000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064
-:401686000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024
-:4016C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4
-:4017060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3
-:401746000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063
-:401786000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023
-:4017C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3
-:4018060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2
-:401846000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062
-:401886000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022
-:4018C6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012011001FF00BF
-:401906000040CD06190100000102000209027400010100A032090400000EFF000000070501024000000705020240000007050302400000070504024000000705050240006D
-:4019460000070506024000000705070240000007058102400001070582024000010705830240000107058402400001070585024000010705860240000107058702400001F3
-:401986000403090448034B00650079007300700061006E002C002000610020006400690076006900730069006F006E0020006F006600200049006E006E006F005300790040
-:4019C6007300200049006E0063002E0036034B00650079007300700061006E0020005500530042002000530065007200690061006C002000410064006100700074006500F9
-:041A0600720000006A
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
diff --git a/firmware/keyspan/usa19w.HEX b/firmware/keyspan/usa19w.HEX
deleted file mode 100644
index a3b84313f2ca..000000000000
--- a/firmware/keyspan/usa19w.HEX
+++ /dev/null
@@ -1,141 +0,0 @@
-:03003300020D5C5F
-:10000300E4907F93F0907F9C7430F0E4907F96F0BF
-:10001300907F94F0907F9D74FFF0E4907F97F09031
-:0F0023007F95F0907F9E7417F0E4907F98F02205
-:10004600300F18120D38EFC3951440030200D890F4
-:100056007FBF7401F0C20FC20A8077300C3B907FDD
-:10006600C6E020E16D120D38EFC394405064907ED7
-:1000760040E013920F907FC7E014F51C200A116030
-:100086000FF5237E7E7F4175277E75284112080174
-:10009600C20CE4907FC7F08039907FC8E020E1323F
-:1000A600120D38EFC394405029907DC0E013920F93
-:1000B600907FC9E014F51C200A11600FF5237E7DA0
-:1000C6007FC175277D7528C1120801D20CE4907F87
-:1000D600C9F0907FB6E030E10302015E120C418F59
-:1000E6001C120D448F11E51CC39513500F120D20E1
-:1000F600EF30E008E51120E70330125CC212E51C80
-:0C003600907F987410F090C000E0FF2252
-:03004300020E00AA
-:030000000208B63D
-:400106006056B48003431102E51130E724E51CD394204003751C20851C237E7E7F8075277E752880120A86E51C251C907FB7F08027E51CD3943F4003751C3F851C23907E06
-:4001460080E511F07E7E7F8175277E752881120826E51C04907FB7F0907FCEE030E106200D030203BAE4F51B7440251BF582E4347CF583E0FFE51B7C007B017A7E7900244A
-:4001860000F9EC347EFAEF120A0D051BE51BB420D7907E00E0606E7F01907E11E0FD120C1C907E01E0FF120B5E907E02E0FF120B84D210D211751C04907E03E06005C211D7
-:4001C600431CC0907E04E0B40107C211431C0B8010907E04E06007C210431C098003431C027F03AD1C120C1C431980907F987414F090C000E519F0907F987412F0E51644CE
-:400206000690C000F0907E05E06012A3E0543FF518907F987413F090C000E518F0907E07E06042907E13E0600543150480035315FBE4FFAD15120C1C907E08E060054317BC
-:4002460080800353177F5317FC907E09E06011431702A3E0FF120BD0907E0BE0FF120BF6AF17120BAA907E0EE06018A3E0600543190180035319FE907F987414F090C00046
-:40028600E519F0907E0CE06018A3E0600543190280035319FD907F987414F090C000E519F0907E12E0F513A3E0139213A3E0F514A3E0600543191080035319EF907F98742D
-:4002C60014F090C000E519F0907E16E060325318BF907F987413F0E518547F90C000F0907F987411F0120D14EF54FE90C000F05315FDE4FFAD15120C1CE4F50EF50DD20EEB
-:40030600907E17E0600F431502E4FFAD15120C1C750D01D20E907E18E06010907F987412F0E516440490C000F0D20A907E19E06011431840907F987413F0E518547F90C064
-:4003460000F0907E1AE0600F5315FEE4FFAD15120C1C750F01D20E907E1BE0600F431501E4FFAD15120C1CE4F50FD20E907E1CE0600E907F987412F0E516440290C000F0D8
-:40038600907E1DE06002D212907E1EE06008751001E4F512D20E907E1FE06011907FD77411F07431F07415F07435F0D20CC20DE4907FCFF0301571E51260021512E52ED326
-:4003C60094004004152E8060752E0A120D14EF5401F51C650E6007851C0ED20E8011120D50EF5410F51C65096005851C09D20E120D50EF5480F51C650A6005851C0AD20EFB
-:40040600120D50EF5420F51C650B6008851C0B301002D20E120D50EF5440F51C650C6008851C0C301102D20E30152A907FD2E020E123907B40E06009E0F530907B42E0F572
-:4004460031907B41E06009907FD77417F07437F0E4907FD3F0907FC2E030E10302051FE5257040300E39E5127035C20EF51B7E007B007408251BF9EE3400FA1209C7FF7447
-:4004860080251BF582E4347BF583EFF0051BE51BB409DB907FC37409F0751210E4F51075250222E5256402703630052FC205F51B7E007B007429251BF9EE3400FA1209C7C2
-:4004C600FF7480251BF582E4347BF583EFF0051BE51BB405DB907FC37405F075250322E5306033752F031530E4F51B7E007B00742F251BF9EE3400FA1209C7FF7480251B26
-:40050600F582E4347BF583EFF0051BE51BB403DB907FC37403F0E4F52522907FE9E0120A1F05F600066A0106D70305430605E90805E30905CB0A05DA0B00000727907FEBC9
-:40054600E024FE60161460502402706F7419907FD4F07400907FD5F002072E907FEAE070047F0280027F03758282758319EFF0758274758319F0758258758319F0907FEA65
-:40058600E004758217758319F07419907FD4F07412907FD5F002072E907FEAE0FF120A45EA49600DEA907FD4F0E9907FD5F002072E907FB4E04401F002072E907FB4E044D1
-:4005C60001F002072E907F00E524F0907FB57401F002072E907FEAE0F52402072E12073602072E907F007401F0907FB5F002072E907FE8E0247F60241460312402705BA221
-:4006060001E433FF25E0FFA207E4334F907F00F0E4A3F0907FB57402F002072EE4907F00F0A3F0907FB57402F002072E907FECE0F45480FFC4540FFFE054072F25E024B4CD
-:40064600F582E4347FF583E054FD907F00F0E4A3F0907FB57402F002072E907FB4E04401F002072E907FE8E024FE601E2402600302072E907FEAE0B40106120D6302072E53
-:40068600907FB4E04401F002072E907FEAE07038907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E4F0907FECE05480FF131313541FFFE054072F907F69
-:4006C600D7F0E04420F08060907FB4E04401F08057907FE8E024FE60192402704B907FEAE0B40105120D60803F907FB4E04401F08036907FEAE07020907FECE0F45480FFAD
-:40070600C4540FFFE054072F25E024B4F582E4347FF5837401F08010907FB4E04401F08007907FB4E04401F0907FB4E04402F022E4907F93F0907F9C7430F0E4907F96F06B
-:40074600907F9574C0F0907F9E743FF0907F987418F0E4F58E907FDF74FFF0907FDEF0E4F5087F017B0074082FF9E43400FAE4120A0D0FBF09EE751301E4F512F52EF511A2
-:40078600C20EC212C20DC20AC20FC204907F987413F075180390C0007403F07F0CE4FD120C1C7F108F17120BAA907F987412F07F018F16EF440690C000F00FE4FD120C1C71
-:4007C600E4FF7EA3AD068D15120C1C907F987411F090C000E4F07F057D7F120C1C7F01120CAC7F037D07120C1C907F987414F075198090C0007480F0D20322907F98741059
-:40080600F0AF23E528F582E527F583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987410F0AF23E528F582E527F583C2AF058690C000E00586F0A30586DFF76F
-:400846000586D2AF22907F987408F0AF23E528F582E527F583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987408F0AF23E528F582E527F583C2AF058690C045
-:4008860000E00586F0A30586DFF70586D2AF227400F58690FDA57C05A3E582458370F922907FD6E04480F0438701000000000022787FE4F6D8FD7581310208FD020942E43B
-:4008C60093A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F4420C8834004F456800146F6DFE4800B0102040810204080900CCDE47E019360BC36
-:40090600A3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE493A3F8E493A3C8C582C8CAC583CAF0A3C8C582C8CAC583CADFE9DEE780BED214907F83
-:4009460092E04402F0120D63D2E843D820907FDE7401F0907FDFF0907FAB74FFF0907FA9F0907FAAF05391EF907FAFE04401F0907FAE740DF0D2AFD215120C66C202E4F557
-:4009860026F52EC208C203907FA104F0907FD8E0651A6010300305D215120046907FD8E0F51A8008300305C215120046300207C20212052080D63009D3C209120ABA80CC40
-:4009C60022BB010689828A83E0225002E722BBFE02E32289828A83E49322BB010CE58229F582E5833AF583E0225006E92582F8E622BBFE06E92582F8E222E58229F582E51F
-:400A0600833AF583E49322BB010689828A83F0225002F722BBFE01F322D083D082F8E4937012740193700DA3A393F8740193F5828883E4737402936860EFA3A3A380DF8F58
-:400A46001BE4F51C751DFF751E19751F86AB1DAA1EA91F9000011209E0B4031DAF1C051CEFB51B01221209C77E0029FFEE3AA907751DFFF51E891F80D47B007A00790022F3
-:400A86000528E528AE277002052714F5828E83E511F01200360528E528AC277002052714F5828C83EFF01523E5236007120D448F1180CD22907FD8E0F51B120003907FD6AB
-:400AC600E04480F01208A6907FD6E030E70E300105120CFE8006120C8BEF60E112073622C0E0C083C082C085C084C086758600907FC4E4F05391EF907FAB7404F0D086D0DF
-:400B060084D085D082D083D0E032C0E0C083C082C085C084C086758600D2025391EF907FAB7401F0D086D084D085D082D083D0E032C0E0C083C082C085C084C08675860025
-:400B4600D2095391EF907FAB7408F0D086D084D085D082D083D0E032907F987413F090C00074BFF0907F987410F090C000EFF0907F987413F0E518547F90C000F022907FDB
-:400B8600987413F090C00074BFF0907F987411F090C000EFF0907F987413F0E518547F90C000F022907F987413F090C00074BFF0907F987412F090C000EFF0907F98741307
-:400BC600F0E518547F90C000F022907F987413F090C00074BFF0907F987414F090C000EFF0907F987413F0E518547F90C000F022907F987413F090C00074BFF0907F9874F2
-:400C060016F090C000EFF0907F987413F0E518547F90C000F022907F987413F0E518547F90C000F0907F987417F090C000EFF0907F987415F090C000EDF022120D2C8F1D44
-:400C4600120D2C8F1EE51D651E6012120D2C8F1DE51D651E6007120D2C8F1E80E8AF1D22907FD6E054FBF0E04408F0301504E04402F07FF47E01120CE7907FD6E054F7F0D8
-:400C8600E04404F022907FD8E0F51C120736120D50EF30E60B907FD8E0651C60F17F01221200037F0022AE07E4FFE515547FFD120C1C907F987411F090C000EEF0E4E51599
-:400CC6004480FD120C1C2205290200000000032F030000C186C102C109C101C107012500008E1C8F1DE51D151DAE1C7002151C4E600512089580EE22907FD6E04401F07F86
-:400D06000D7E00120CE7907FD6E054FEF022907F987411F090C000E0FF22907F987412F090C000E0FF22907F987413F090C000E0FF22907F987414F090C000E0FF22907F2B
-:400D4600987415F090C000E0FF22907F987416F090C000E0FF2253D8EF32D20122C20122000000000000000000000000000000000000000000000000000000000000000073
-:400D8600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D
-:400DC60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020B1000020EC0
-:400E06000400020AE600020B370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072
-:400E4600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C
-:400E8600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002C
-:400EC60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC
-:400F060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB
-:400F4600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B
-:400F8600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B
-:400FC60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EB
-:4010060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA
-:40104600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006A
-:40108600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A
-:4010C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EA
-:4011060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9
-:401146000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069
-:401186000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029
-:4011C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E9
-:4012060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8
-:401246000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068
-:401286000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028
-:4012C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E8
-:4013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7
-:401346000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067
-:401386000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027
-:4013C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7
-:4014060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6
-:401446000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066
-:401486000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026
-:4014C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6
-:4015060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5
-:401546000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065
-:401586000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025
-:4015C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5
-:4016060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4
-:401646000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064
-:401686000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024
-:4016C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4
-:4017060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3
-:401746000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063
-:401786000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023
-:4017C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3
-:4018060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2
-:401846000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062
-:401886000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022
-:4018C6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012011001FF00BF
-:401906000040CD06080100000102000209027400010100A032090400000EFF000000070501024000000705020240000007050302400000070504024000000705050240007E
-:4019460000070506024000000705070240000007058102400001070582024000010705830240000107058402400001070585024000010705860240000107058702400001F3
-:401986000403090448034B00650079007300700061006E002C002000610020006400690076006900730069006F006E0020006F006600200049006E006E006F005300790040
-:4019C6007300200049006E0063002E0036034B00650079007300700061006E0020005500530042002000530065007200690061006C002000410064006100700074006500F9
-:041A0600720000006A
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
diff --git a/firmware/keyspan/usa28.HEX b/firmware/keyspan/usa28.HEX
deleted file mode 100644
index 000c97863c01..000000000000
--- a/firmware/keyspan/usa28.HEX
+++ /dev/null
@@ -1,148 +0,0 @@
-:0A0026001217DB1218B51214C322E2
-:0300330002001DAB
-:04001D0053D8EF3293
-:100006008E128F13E5131513AE12700215124E6081
-:07001600051218A480EE2280
-:03000300020046B2
-:10004600C0E0C083C082C086758600C0D075D00867
-:1000560030990E301107A217929B854699C299D204
-:100066001F30C10E301207A21892C38547C1C2C104
-:10007600D220201F03020442C21F2003030202678C
-:10008600201103020138E54AC3957C503E20133601
-:10009600200B33907F9BE020E303201C29301B12AA
-:1000A600AE4A054A74402EF582E4347EF583E013A9
-:1000B6009217AE4A054A74402EF582E4347EF583E3
-:1000C600E0F546020440C211020440907FC7E4F006
-:1000D600C20330150CC215907FBF04F0C211020492
-:1000E60040907FC8E030E105C211020440907FC90C
-:1000F600E0F57C907DC0E013921520132D200B2A8D
-:03004300021B009D
-:0300230002004692
-:03003B000200467A
-:0300000002163DA8
-:40010600907F9BE020E303201C20301B11907DC1E0139217A3E0F546754A03020440754A02907DC1E0F546020440754A01C211020440E54AC3957C50030201E0907FC6E08A
-:4001460030E107C221C205020440907FC7E0F57C907E40E01392153013030201D8200B7220006F907F9BE020E303201C65301B10907E41E013929BA3E0F599754A038009BE
-:40018600907E41E0F599754A02E54AC3957C4017907FC7E4F0C203201503020440C215907FBF04F0020440301B12AE4A054A74402EF582E4347EF583E0139217AE4A054AA7
-:4001C60074402EF582E4347EF583E0F546D211020440754A01C221020440301303020262200B79907F9BE020E303201C6F301B12AE4A054A74402EF582E4347EF583E013DC
-:40020600929BAE4A054A74402EF582E4347EF583E0F599E54AC3957C4017907FC7E4F0C203201503020440C215907FBF04F0020440301B12AE4A054A74402EF582E4347EB6
-:40024600F583E0139217AE4A054A74402EF582E4347EF583E0F546D211020440C221020440201103020319E54AC3957C503E201336200B33907F9BE020E303201C29301B5F
-:4002860012AE4A054A74C02EF582E4347DF583E0139217AE4A054A74C02EF582E4347DF583E0F546020440C211020440907FC9E4F0D20330150CC215907FBF04F0C2110276
-:4002C6000440907FC6E030E105C211020440907FC7E0F57C907E40E013921520132D200B2A907F9BE020E303201C20301B11907E41E0139217A3E0F546754A03020440759E
-:400306004A02907E41E0F546020440754A01C211020440E54AC3957C50030203C1907FC8E030E107C221C205020440907FC9E0F57C907DC0E01392153013030203B9200B48
-:400346007220006F907F9BE020E303201C65301B10907DC1E013929BA3E0F599754A038009907DC1E0F599754A02E54AC3957C4017907FC9E4F0D203201503020440C21573
-:40038600907FBF04F0020440301B12AE4A054A74C02EF582E4347DF583E0139217AE4A054A74C02EF582E4347DF583E0F546D211020440754A01C221020440301303020463
-:4003C6003E200B74907F9BE020E303201C6A301B12AE4A054A74C02EF582E4347DF583E013929BAE4A054A74C02EF582E4347DF583E0F599E54AC3957C4013907FC9E4F09D
-:40040600D203301535C215907FBF04F0802C301B12AE4A054A74C02EF582E4347DF583E0139217AE4A054A74C02EF582E4347DF583E0F546D2118002C221D2252020030230
-:40044600080CC220200403020631201203020502E54BC3957D503E201436200D33907F9AE020E503201E29301D12AE4B054B74402EF582E4347DF583E0139218AE4B054B99
-:4004860074402EF582E4347DF583E0F54702080AC21202080A907FCBE4F0C20430160CC216907FC104F0C21202080A907FCCE030E105C21202080A907FCDE0F57D907CC0BB
-:4004C600E013921620142D200D2A907F9AE020E503201E20301D11907CC1E0139218A3E0F547754B0302080A754B02907CC1E0F54702080A754B01C21202080AE54BC39566
-:400506007D50030205AA907FCAE030E107C222C20602080A907FCBE0F57D907D40E01392163014030205A2200D7220006F907F9AE020E503201E65301D10907D41E013920D
-:40054600C3A3E0F5C1754B038009907D41E0F5C1754B02E54BC3957D4017907FCBE4F0C20420160302080AC216907FC104F002080A301D12AE4B054B74402EF582E4347D24
-:40058600F583E0139218AE4B054B74402EF582E4347DF583E0F547D21202080A754B01C22202080A30140302062C200D79907F9AE020E503201E6F301D12AE4B054B7440E9
-:4005C6002EF582E4347DF583E01392C3AE4B054B74402EF582E4347DF583E0F5C1E54BC3957D4017907FCBE4F0C20420160302080AC216907FC104F002080A301D12AE4B91
-:40060600054B74402EF582E4347DF583E0139218AE4B054B74402EF582E4347DF583E0F547D21202080AC22202080A2012030206E3E54BC3957D503E201436200D33907F1A
-:400646009AE020E503201E29301D12AE4B054B74C02EF582E4347CF583E0139218AE4B054B74C02EF582E4347CF583E0F54702080AC21202080A907FCDE4F0D20430160C43
-:40068600C216907FC104F0C21202080A907FCAE030E105C21202080A907FCBE0F57D907D40E013921620142D200D2A907F9AE020E503201E20301D11907D41E0139218A352
-:4006C600E0F547754B0302080A754B02907D41E0F54702080A754B01C21202080AE54BC3957D500302078B907FCCE030E107C222C20602080A907FCDE0F57D907CC0E013AC
-:400706009216301403020783200D7220006F907F9AE020E503201E65301D10907CC1E01392C3A3E0F5C1754B038009907CC1E0F5C1754B02E54BC3957D4017907FCDE4F0AE
-:40074600D20420160302080AC216907FC104F002080A301D12AE4B054B74C02EF582E4347CF583E0139218AE4B054B74C02EF582E4347CF583E0F547D21202080A754B0173
-:40078600C22202080A301403020808200D74907F9AE020E503201E6A301D12AE4B054B74C02EF582E4347CF583E01392C3AE4B054B74C02EF582E4347CF583E0F5C1E54B3F
-:4007C600C3957D4013907FCDE4F0D204301635C216907FC104F0802C301D12AE4B054B74C02EF582E4347CF583E0139218AE4B054B74C02EF582E4347CF583E0F547D2122A
-:400806008002C222D22520980302093EC2982001030208B0202327AE48054874802EF582E4347EF583E599F0301B49AE48054874802EF582E4347EF583E598F08036AF996E
-:40084600EFB55804D20B802CEFB55704C20B8024AE48054874802EF582E4347EF583EFF0301B11AE48054874802EF582E4347EF583E598F0D219E548C39554500302093C9F
-:40088600907FB8E030E115E548C39440500302093C15481548052DD20C02093C907FB7E548F0754800C20102093C202327AE48054874002EF582E4347EF583E599F0301BBF
-:4008C60049AE48054874002EF582E4347EF583E598F08036AF99EFB55804D20B802CEFB55704C20B8024AE48054874002EF582E4347EF583EFF0301B11AE48054874002E51
-:40090600F582E4347EF583E598F0D219E548C395544023907FB6E030E111E548C39440401515481548052DD20C800B907FB9E548F0754800D201D22520C003020A70C2C016
-:400946002002030209E2202427AE49054974802EF582E4347DF583E5C1F0301D49AE49054974802EF582E4347DF583E5C0F08036AFC1EFB57004D20D802CEFB56F04C20DAE
-:400986008024AE49054974802EF582E4347DF583EFF0301D11AE49054974802EF582E4347DF583E5C0F0D21AE549C3956C5003020A6E907FBCE030E115E549C39440500351
-:4009C600020A6E154915490539D20E020A6E907FBBE549F0754900C202020A6E202427AE49054974002EF582E4347DF583E5C1F0301D49AE49054974002EF582E4347DF555
-:400A060083E5C0F08036AFC1EFB57004D20D802CEFB56F04C20D8024AE49054974002EF582E4347DF583EFF0301D11AE49054974002EF582E4347DF583E5C0F0D21AE54983
-:400A4600C3956C4023907FBAE030E111E549C394404015154915490539D20E800B907FBDE549F0754900D202D225302505C225020056D0D0D086D082D083D0E032907FCE99
-:400A8600E030E103020BA5E4F51274402512F582E4347CF583E0FFE5127C007B00244CF9EC3400FAEF1215CD0512E512B418DBE54C600C75C92075C836854DCA854ECBE5BC
-:400AC6004F13921B929FE55013921CE551139223E5526009907F98E054FBF08007907F98E04404F0E5536009907F98E0547FF08007907F98E04480F0E559600BC213C20B18
-:400B0600907F95E04402F0E55A600BD20BD20C907F95E04402F0E55B600DC2AFC211D200E4F57CF54AD2AFE55C6005302302D20BE55D6015907F95E054FDF0907F9EE044D9
-:400B460002F0907F98E054FDF0E55E600AD29CC298752E01754028E55F6007C29CE4F548F52EE5606003E4F548E5616002D207E5626008E55E7002F540D20CE56360199060
-:400B86007FD77411F07431F07412F07432F07415F07435F0D203D201D209E4907FCFF0A213E433FF652B60048F2BD20CA20BE433FF652C60048F2CD20C907F9BE054086589
-:400BC600276007E05408F527D20C907F9BE05440B52909E054406440F529D20C300735C2AF300118907FB8E020E127E5486009907FB7F0E4F548C201C2078016907FB6E0E9
-:400C060020E10FE5486009907FB9F0E4F548D201C207D2AF20053730031B907FC6E020E12D907E40E0139215754A01907FC7E0F57CD2058019907FC8E020E112907DC0E0CF
-:400C4600139215754A01907FC9E0F57CD205202133200006E54A657C702A30051A300309E4907FC7F0C2038007E4907FC9F0D203C205E4F57CF54A30150AC215C200907F5C
-:400C8600BF7401F0302103020D94200503020D94301C0A907F9BE020E303020D94300B03020D94301303020D94300362301B12AF4A054A74402FF582E4347EF583E01392CE
-:400CC6002DAF4A054A74402FF582E4347EF583E0F513E54AC3957C502A301B12AF4A054A74402FF582E4347EF583E0139217AF4A054A74402FF582E4347EF583E0F546D266
-:400D060011806BC211E4907FC7F0C2038060301B12AF4A054A74C02FF582E4347DF583E013922DAF4A054A74C02FF582E4347DF583E0F513E54AC3957C502A301B12AF4A67
-:400D4600054A74C02FF582E4347DF583E0139217AF4A054A74C02FF582E4347DF583E0F546D2118009C211E4907FC9F0D203301B04A22D929BD221C2AF85139920110D3043
-:400D8600150AC215C200907FBF7401F0D2AF907FD0E030E103020EB5E4F51274C02512F582E4347BF583E0FFE5127C007B002464F9EC3400FAEF1215CD0512E512B418DB51
-:400DC600E564600B758960758840D2DF85658DE56713921D92C7E56813921EE569139224E56A6009907F97E054EFF08007907F97E04410F0E56B6009907F97E0547FF080A4
-:400E060007907F97E04480F0E571600BC214C20D907F94E04408F0E572600BD20DD20E907F94E04408F0E573600DC2AFC212D200E4F57DF54BD2AFE5746005302402D20D20
-:400E4600E5756015907F94E054F7F0907F9DE04408F0907F97E054F7F0E576600AD2C4C2C0753A01754128E5776007C2C4E4F549F53AE5786003E4F549E5796002D208E5F0
-:400E86007A6008E5767002F541D20EE57B6019907FD77413F07433F07414F07434F07416F07436F0D204D202D20AE4907FD1F0A214E433FF653760048F37D20EA20DE43304
-:400EC600FF653860048F38D20E907F9AE0542065336007E05420F533D20E907F9AE05440B53509E054406440F535D20E300835C2AF300218907FBCE020E127E54960099099
-:400F06007FBBF0E4F549C202C2088016907FBAE020E10FE5496009907FBDF0E4F549D202C208D2AF20063730041B907FCAE020E12D907D40E0139216754B01907FCBE0F503
-:400F46007DD2068019907FCCE020E112907CC0E0139216754B01907FCDE0F57DD206202233200006E54B657D702A30061A300409E4907FCBF0C2048007E4907FCDF0D2042C
-:400F8600C206E4F57DF54B30160AC216C200907FC17401F03022030210A42006030210A4301E0A907F9AE020E5030210A4300D030210A43014030210A4300462301D12AF8E
-:400FC6004B054B74402FF582E4347DF583E013922DAF4B054B74402FF582E4347DF583E0F513E54BC3957D502A301D12AF4B054B74402FF582E4347DF583E0139218AF4B78
-:40100600054B74402FF582E4347DF583E0F547D212806BC212E4907FCBF0C2048060301D12AF4B054B74C02FF582E4347CF583E013922DAF4B054B74C02FF582E4347CF5F2
-:4010460083E0F513E54BC3957D502A301D12AF4B054B74C02FF582E4347CF583E0139218AF4B054B74C02FF582E4347CF583E0F547D2128009C212E4907FCDF0D204301DF4
-:4010860004A22D92C3D222C2AF8513C120120D30160AC216C200907FC17401F0D2AF907FC2E030E10302117AE51A7046300C3FE540703BA20933F531C209C20CE4F5127E0D
-:4010C600007B0074262512F9EE3400FA121587FF74802512F582E4347BF583EFF00512E512B40CDB907FC3740CF075401022751A0122E51A64017045300E3EE541703AA2C5
-:401106000A33F53DC20AC20EE4F5127E007B0074322512F9EE3400FA121587FF74802512F582E4347BF583EFF00512E512B40CDB907FC3740CF0754110751A0222E51C60CA
-:4011460030151CE4F5127E007B00741B2512F9EE3400FA121587FF74802512F582E4347BF583EFF00512E512B403DB907FC37403F0E4F51A22907FE9E012161712400012A7
-:40118600B401132003119E06123308122D0912200A13760B0000136F907FEBE024FE6016146040240270697419907FD4F07400907FD5F0021376907FEAE0FF12174B8B1261
-:4011C6008A138914EA496011AE02EE907FD4F0AF01EF907FD5F0021376907FB4E04401F0021376907FEAE0FF12179A8B128A138914EA496011AE02EE907FD4F0AF01EF9083
-:401206007FD5F0021376907FB4E04401F0021376907FB4E04401F0021376907F007401F0907FB5F00213761214C3021376907F007401F0907FB5F0021376907FE8E0247FBF
-:4012460060241460312402705BA226E433FF25E0FFA22BE4334F907F00F0E4A3F0907FB57402F0021376E4907F00F0A3F0907FB57402F0021376907FECE0F45480FFC45429
-:401286000FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F0021376907FB4E04401F0021376907FE8E024FE601D24026003021376907FEA0B
-:4012C600E0B40105C226021376907FB4E04401F0021376907FEAE07038907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E4F0907FECE05480FF131313A7
-:40130600541FFFE054072F907FD7F0E04420F0805F907FB4E04401F08056907FE8E024FE60182402704A907FEAE0B40104D226803F907FB4E04401F08036907FEAE07020A3
-:40134600907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF5837401F08010907FB4E04401F08007907FB4E04401F0907FB4E04402F0222028030214C2E54063
-:4013860060021540E548604F65447045E542F460020542E542C39555403DC2AF300118907FB8E020E127907FB7E548F0C201E4F548F542F5448016907FB6E020E10F907F07
-:4013C600B9E548F0D201E4F548F542F544D2AF8006854844E4F542E52E602D201907907F9BE030E00EE52F6005E4F52FD20CE4F53E8013E53ED39556500CE53EB556057504
-:401406002F01D20C053EC219E54160021541E549604F65457045E543F460020543E543C3956D403DC2AF300218907FBCE020E127907FBBE549F0C202E4F549F543F54580E2
-:4014460016907FBAE020E10F907FBDE549F0D202E4F549F543F545D2AF8006854945E4F543E53A602D201A07907F9AE030E20EE53B6005E4F53BD20EE4F53F8013E53FD35E
-:40148600956E500CE53FB56E05753B01D20E053FC21A907FD2E020E123907B40E06009E0F51C907B42E0F51D907B41E06009907FD77417F07437F0E4907FD3F022E4907FC5
-:4014C60093F0907F9C7430F0907F96E04410F0907F94740DF0907F9D749AF0907F97E054FDF0907F957423F0907F9E7484F0E4907FC7F0907FC9F0907FCFF075984043A89E
-:4015060010C21BC205C221C20BC213F57CF54AC211C215F542C219F544F548C223C21CF52DF52FC207C200C21FF53EC209D20CF526907FCBF0907FCDF0907FD1F075C04043
-:4015460043A840C21DC206C222C20DC214F57DF54BC212C216F543C21AF545F549C224C21EF539F53BC208C200C220F53FC20AD20E753201907FDF74FFF0907FDEF0D228DE
-:4015860022BB010689828A83E0225002E722BBFE02E32289828A83E49322BB010CE58229F582E5833AF583E0225006E92582F8E622BBFE06E92582F8E222E58229F582E553
-:4015C600833AF583E49322BB010689828A83F0225002F722BBFE01F322BB0110E58229F582E5833AF583E0F5F0A3E0225009E92582F886F008E622BBFE0AE92582F8E2F511
-:40160600F008E222E5832AF583E993F5F0A3E99322D083D082F8E4937012740193700DA3A393F8740193F5828883E4737402936860EFA3A3A380DF787FE4F6D8FD75817D0E
-:401646000216840216C9E493A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F4420C8834004F456800146F6DFE4800B010204081020408090181A
-:40168600C5E47E019360BCA3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE493A3F8E493A3C8C582C8CAC583CAF0A3C8C582C8CAC583CADFE9DE39
-:4016C600E780BE751101907F92E054FDF0907FAEE0FFD39226E433FEEF4EF0D2E843D820907FDE7401F0907FDFF0907FAB74FFF0907FA9F0907FAAF05391EF907FAFE044C5
-:4017060001F0907FAEE0440DF0D2AFD2BCD2BED22D12187FC227C225C228302803120A83907FD8E065106008E0F51012137E80EA302707C22712117B80E0302CDDC22C12C5
-:40174600002680D622E4FE7517FF751819751912AB17AA18A9199000011215A06402702DAD060EEDB50701229000021215DF85F015F5166215E5156216E516621529FDE551
-:40178600153AA9057517FFF518891980C37B007A007900228F15E4F5167517FF751819751986AB17AA18A9199000011215A0B4031DAF160516EFB51501221215877E0029BE
-:4017C600FFEE3AA9077517FFF518891980D47B007A00790022E4907F93F0907F9CF0907F94F0907F9D7402F0907F97F0E4907F95F0907F9E74FFF0E4907F98F0907F9DF003
-:4018060022C0E0C083C082C085C084C086758600907FC4E4F05391EF907FAB7404F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D2275391EF9024
-:401846007FAB7401F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D22C5391EF907FAB7408F0D086D084D085D082D083D0E032907FD6E054FBF0DD
-:40188600E04408F0302D04E04402F07FF47E01120006907FD6E054F7F0E04404F0227400F58690FDA57C05A3E582458370F922907FD6E04480F0438701000000000022C125
-:4018C600AA011A00031B030000C127C12CC126C12B000000000000000000000000000000000000000000000000000000000000000000000000000000000012011001FF0031
-:401906000040CD060F0100000102000109027400010100A032090400000EFF0000000705010240000007050202400000070503024000000705040240000007050502400078
-:4019460000070506024000000705070240000007058102400001070582024000010705830240000107058402400001070585024000010705860240000107058702400001F3
-:401986000403090448034B00650079007300700061006E002C002000610020006400690076006900730069006F006E0020006F006600200049006E006E006F005300790040
-:4019C6007300200049006E0063002E0036034B00650079007300700061006E0020005500530042002000530065007200690061006C002000410064006100700074006500F9
-:401A0600720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E
-:401A46000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060
-:401A86000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020
-:401AC6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002183100021B78
-:091B06000400021807000218583F
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
diff --git a/firmware/keyspan/usa28x.HEX b/firmware/keyspan/usa28x.HEX
deleted file mode 100644
index 9f0f7fac7609..000000000000
--- a/firmware/keyspan/usa28x.HEX
+++ /dev/null
@@ -1,141 +0,0 @@
-:030033000212F7BF
-:10000300E4907F93F0907F9C7430F0E4907F96F0BF
-:10001300907F94F0907F9D74FFF0E4907F97F09031
-:0F0023007F95F0907F9E7407F0E4907F98F02215
-:1000460030091812131BEFC3953C40030200D890E9
-:100056007FBF7401F0C209C200807730033B907FF6
-:10006600C6E020E16D12131BEFC394405064907EEE
-:1000760040E0139209907FC7E014F5192000116043
-:100086000FF5087E7E7F41750C7E750D41120CBA08
-:10009600C203E4907FC7F08039907FC8E020E13248
-:1000A60012131BEFC394405029907DC0E0139209B0
-:1000B600907FC9E014F519200011600FF5087E7DC8
-:1000C6007FC1750C7D750DC1120CBAD203E4907F09
-:1000D600C9F0907FB6E030E1030201601211D68FBD
-:1000E600191213278F36E519C3953A500F1212EBE2
-:1000F600EF30E008E53620E703300B5EC20BE5196A
-:0C003600907F987410F090C000E0FF2252
-:03004300021300A5
-:03000000020E00ED
-:400106006058B48003433602E53630E726E519D3942040037519208519087E7E7F80750C7E750D80AF36120F4BE51925E0907FB7F08027E519D3943F400375193F851908D4
-:40014600907E80E536F07E7E7F81750C7E750D81120CDFE51904907FB7F0907FCEE030E1062005030203C1C205E4F51874402518F582E4347CF583E0FFE5187C007B017AF1
-:400186007E79002400F9EC347EFAEF120ED20518E518B420D7907E00E06068907E03E060247F01E4FD1211B17F037DCD1211B1434680907F987414F090C000E546F0E490E0
-:4001C6007E13F08030907E01E0FF121035907E02E0FF12105B7F01907E11E0FD1211B17F037D071211B1434680907F987414F090C000E546F0907F987412F0E5404406903E
-:40020600C000F0907E03E07006907E13E07008E4907E13F07525FF907E05E06012A3E0543FF544907F987413F090C000E544F0907E07E0602BA3E0600543428080035342DA
-:400246007F5342FC907E09E06011434202A3E0FF1210A7907E0BE0FF1210CDAF42121081907E03E0600853427FAF42121081907E0CE06018A3E0600543460280035346FDB4
-:40028600907F987414F090C000E546F0907E0EE06018A3E0600543460180035346FE907F987414F090C000E546F0907E12E0F53AA3E013920DA3E0F53CA3E060054346108B
-:4002C60080035346EF907F987414F090C000E546F0907E16E060325344BF907F987413F0E544547F90C000F0907F987411F01212DFEF54FE90C000F0533EFDE4FFAD3E120F
-:4003060011B1E4F52AF529D207907E17E0600F433E02E4FFAD3E1211B1752901D207907E18E06010907F987412F0E540440490C000F0D200907E19E06011434440907F98F2
-:400346007413F0E544547F90C000F0907E1AE0600F533EFEE4FFAD3E1211B1752B01D207907E1BE0600F433E01E4FFAD3E1211B1E4F52BD207907E1CE0600E907F98741284
-:40038600F0E540440290C000F0907E1DE06002D20B907E1EE06008752C01E4F538D207907E1FE06011907FD77411F07431F07415F07435F0D203E4907FCFF0301A52E53892
-:4003C60060021538201349E513D3940040041513803E75130A301B02D2131212DFEF5401F519652A600585192AD207121333EF5480F51965266005851926D207300D11127F
-:400406001333EF5410F51965256005851925D207201B030207EC300A1812136FEFC3953D40030204AE907FC17401F0C20AC200807730043B907FCAE020E16D12136FEFC35A
-:4004460094405064907D40E013920A907FCBE014F519200011600FF5087E7D7F41750C7D750D41120D04C204E4907FCBF08039907FCCE020E13212136FEFC39440502990BC
-:400486007CC0E013920A907FCDE014F519200011600FF5087E7C7FC1750C7C750DC1120D04D204E4907FCDF0907FBAE030E1030205361212208F1912137B8F37E519C3952B
-:4004C6003B500F121357EF30E008E53720E703300C5EC20CE5196058B48003433702E53730E726E519D3942040037519208519087E7D7F80750C7D750D80AF37120F84E503
-:400506001925E0907FBBF08027E519D3943F400375193F851908907D80E537F07E7D7F81750C7D750D81120D29E51904907FBBF0907FD0E030E106200603020797C206E4F8
-:40054600F51874C02518F582E4347BF583E0FFE5187C007B017A7E79202420F9EC347EFAEF120ED20518E518B420D7907E20E06068907E23E060247F01E4FD1211FB7F0329
-:400586007DCD1211FB434780907F98740CF090C000E547F0E4907E33F08030907E21E0FF121119907E22E0FF12113F7F01907E31E0FD1211FB7F037D071211FB4347809048
-:4005C6007F98740CF090C000E547F0907F98740AF0E541440690C000F0907E23E07006907E33E07008E4907E33F0752EFF907E25E06012A3E0543FF545907F98740BF090EB
-:40060600C000E545F0907E27E0602BA3E06005434380800353437F5343FC907E29E06011434302A3E0FF121165907E2BE0FF12118BAF431210F3907E23E0600853437FAFFE
-:40064600431210F3907E2CE06018A3E0600543470280035347FD907F98740CF090C000E547F0907E2EE06018A3E0600543470180035347FE907F98740CF090C000E547F0D4
-:40068600907E32E0F53BA3E013920EA3E0F53DA3E0600543471080035347EF907F98740CF090C000E547F0907E36E060325345BF907F98740BF0E545547F90C000F0907F79
-:4006C600987409F012134BEF54FE90C000F0533FFDE4FFAD3F1211FBE4F533F532D208907E37E0600F433F02E4FFAD3F1211FB753201D208907E38E06010907F98740AF043
-:40070600E541440490C000F0D200907E39E06011434540907F98740BF0E545547F90C000F0907E3AE0600F533FFEE4FFAD3F1211FB753401D208907E3BE0600F433F01E4E9
-:40074600FFAD3F1211FBE4F534D208907E3CE0600E907F98740AF0E541440290C000F0907E3DE06002D20C907E3EE06008753501E4F539D208907E3FE06011907FD7741389
-:40078600F07433F07416F07436F0D204E4907FD1F0301A52E53960021539301349E513D3940040041513803E75130A301B02C21312134BEF5401F51965336005851933D279
-:4007C60008121387EF5480F519652F600585192FD208300E11121387EF5410F519652E600585192ED208301A2A907FD2E020E123907B40E06009E0F515907B42E0F5169035
-:400806007B41E06009907FD77417F07437F0E4907FD3F0907FC2E030E103020920E50A7040300739E5387035C207F5187E007B0074242518F9EE3400FA120E8CFF748025BD
-:4008460018F582E4347BF583EFF00518E518B409DB907FC37409F0753810E4F52C750A0122E50A64017040300839E5397035C208F5187E007B00742D2518F9EE3400FA1297
-:400886000E8CFF74802518F582E4347BF583EFF00518E518B409DB907FC37409F0753910E4F535750A0222E50A6402703630142FC214F5187E007B00740E2518F9EE340083
-:4008C600FA120E8CFF74802518F582E4347BF583EFF00518E518B405DB907FC37405F0750A0322E51560301515E4F5187E007B0074142518F9EE3400FA120E8CFF748025F2
-:4009060018F582E4347BF583EFF00518E518B403DB907FC37403F0E4F50A22907FE9E0120EE40A08000A7C010AE80309440609FB0809F50909DD0A09EC0B00000B37907F3D
-:40094600EBE024FE6019146061240260030209D37419907FD4F07400907FD5F0020B3E907FEAE070047F0280027F03758282758319EFF075827B758319F0758274758319B2
-:40098600F0758266758319F0758258758319F0907FEAE004758217758319F07419907FD4F07412907FD5F0020B3E907FEAE0FF120F0AEA49600DEA907FD4F0E9907FD5F085
-:4009C600020B3E907FB4E04401F0020B3E907FB4E04401F0020B3E907F00E509F0907FB57401F0020B3E907FEAE0F509020B3E120B46020B3E907F007401F0907FB5F00205
-:400A06000B3E907FE8E0247F60241460312402705BA210E433FF25E0FFA216E4334F907F00F0E4A3F0907FB57402F0020B3EE4907F00F0A3F0907FB57402F0020B3E907F04
-:400A4600ECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F0020B3E907FB4E04401F0020B3E907FE8E024FE601D24020F
-:400A86006003020B3E907FEAE0B40105C210020B3E907FB4E04401F0020B3E907FEAE07038907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E4F0907FB6
-:400AC600ECE05480FF131313541FFFE054072F907FD7F0E04420F0805F907FB4E04401F08056907FE8E024FE60182402704A907FEAE0B40104D210803F907FB4E04401F049
-:400B06008036907FEAE07020907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF5837401F08010907FB4E04401F08007907FB4E04401F0907FB4E04402F022D4
-:400B4600E4907F93F0907F9C7430F0E4907F96F0907F9574C0F0907F9E743FF0907F987418F0E4F58E907FDF74FFF0907FDEF0E4F5247518017B0074242518F9E43400FA8B
-:400B8600E4120ED20518E518B409EA753A01E4F538F513F536C207C20BC205C200C209C213907F987413F075440390C0007403F07F0CE4FD1211B17F108F42121081907F02
-:400BC600987412F07F018F40EF440690C000F0907F987414F075468090C0007480F00FE4FD1211B1E4FF7EA3AD068D3E1211B1907F987411F090C000E4F07F057D7F12118E
-:400C0600B17F0112126A7F037D071211B1201B03020CB7752D017518017B00742D2518F9E43400FAE4120ED20518E518B409EA753B01E4F539F513F537C208C20CC206C2CD
-:400C460000C20AC213907F98740BF075450390C0007403F07F0CE4FD1211FB7F108F431210F3907F98740AF07F018F41EF440690C000F0907F98740CF075478090C000744E
-:400C860080F00FE4FD1211FBE4FF7EA3AD068D3F1211FB907F987409F090C000E4F07F057D7F1211FB7F0112128B7F037D071211FBD21222907F987410F0AF08E50DF582A5
-:400CC600E50CF583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987410F0AF08E50DF582E50CF583C2AF058690C000E00586F0A30586DFF70586D2AF22907F20
-:400D0600987408F0AF08E50DF582E50CF583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987408F0AF08E50DF582E50CF583C2AF058690C000E00586F0A3055C
-:400D460086DFF70586D2AF227400F58690FDA57C05A3E582458370F922907FD6E04480F0438701000000000022D219907F92E04402F0907FAEE0FFD39210E433FEEF4EF089
-:400D8600D2E843D820907FDE7401F0907FDFF0907FAB74FFF0907FA9F0907FAAF05391EF907FAFE04401F0907FAEE0440DF0D2AFD21A121245C211E4F50BF513C217C212D4
-:400DC600907FA104F0907FD8E065176010301205D21A120046907FD8E0F5178008301205C21A120046301107C21112092180D63018D3C21812139380CC22787FE4F6D8FDC7
-:400E0600758147020E47020D6FE493A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F4420C8834004F456800146F6DFE4800B01020408102040F5
-:400E4600809012ACE47E019360BCA3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE493A3F8E493A3C8C582C8CAC583CAF0A3C8C582C8CAC583CA1E
-:400E8600DFE9DEE780BEBB010689828A83E0225002E722BBFE02E32289828A83E49322BB010CE58229F582E5833AF583E0225006E92582F8E622BBFE06E92582F8E222E5B8
-:400EC6008229F582E5833AF583E49322BB010689828A83F0225002F722BBFE01F322D083D082F8E4937012740193700DA3A393F8740193F5828883E4737402936860EFA3C1
-:400F0600A3A380DF8F18E4F519751AFF751B19751C86AB1AAA1BA91C900001120EA5B4031DAF190519EFB5180122120E8C7E0029FFEE3AA907751AFFF51B891C80D47B00A5
-:400F46007A007900228F1A050DE50DAE0C7002050C14F5828E83E51AF0120036050DE50DAC0C7002050C14F5828C83EFF01508E508600A1213278F1AEF423680CA228F1AFC
-:400F8600050DE50DAE0C7002050C14F5828E83E51AF012133F050DE50DAC0C7002050C14F5828C83EFF01508E508600A12137B8F1AEF423780CA22C0E0C083C082C085C088
-:400FC60084C086758600907FC4E4F05391EF907FAB7404F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D2115391EF907FAB7401F0D086D084D0C6
-:4010060085D082D083D0E032C0E0C083C082C085C084C086758600D2185391EF907FAB7408F0D086D084D085D082D083D0E032907F987413F090C00074BFF0907F9874108A
-:40104600F090C000EFF0907F987413F0E544547F90C000F022907F987413F090C00074BFF0907F987411F090C000EFF0907F987413F0E544547F90C000F022907F98741349
-:40108600F090C00074BFF0907F987412F090C000EFF0907F987413F0E544547F90C000F022907F987413F090C00074BFF0907F987414F090C000EFF0907F987413F0E544D9
-:4010C600547F90C000F022907F987413F090C00074BFF0907F987416F090C000EFF0907F987413F0E544547F90C000F022907F98740BF090C00074BFF0907F98740AF0902A
-:40110600C000EFF0907F98740BF0E545547F90C000F022907F98740BF090C00074BFF0907F987408F090C000EFF0907F98740BF0E545547F90C000F022907F98740BF090AF
-:40114600C00074BFF0907F987409F090C000EFF0907F98740BF0E545547F90C000F022907F98740BF090C00074BFF0907F98740CF090C000EFF0907F98740BF0E545547FEC
-:4011860090C000F022907F98740BF090C00074BFF0907F98740EF090C000EFF0907F98740BF0E545547F90C000F022907F987413F0E544547F90C000F0907F987417F09075
-:4011C600C000EFF0907F987415F090C000EDF02212130F8F1A12130F8F1BE51A651B601212130F8F1AE51A651B600712130F8F1B80E8AF1A22907F98740BF0E545547F9098
-:40120600C000F0907F98740FF090C000EFF0907F98740DF090C000EDF0221213638F1A1213638F1BE51A651B60121213638F1AE51A651B60071213638F1B80E8AF1A2290C8
-:401246007FD6E054FBF0E04408F0301A04E04402F07FF47E011212C8907FD6E054F7F0E04404F022AE07E4FFE53E547FFD1211B1907F987411F090C000EEF0E4E53E4480E8
-:40128600FD1211B122AE07E4FFE53F547FFD1211FB907F987409F090C000EEF0E4E53F4480FD1211FB22050E02000000000314030000C111C118C195C110C116010A00C19C
-:4012C6009B008E188F19E5191519AE18700215184E6005120D4E80EE22907F987411F090C000E0FF22907F987412F090C000E0FF2253D8EF320000000000020FE70002138A
-:401306000400020FBD0002100E907F987413F090C000E0FF22907F987414F090C000E0FF22907F987415F090C000E0FF22907F987416F090C000E0FF22907F987408F09050
-:40134600C000E0FF22907F987409F090C000E0FF22907F98740AF090C000E0FF22907F98740BF090C000E0FF22907F98740CF090C000E0FF22907F98740DF090C000E0FFC5
-:4013860022907F98740EF090C000E0FF22120003120D5F120B4622000000000000000000000000000000000000000000000000000000000000000000000000000000000083
-:4013C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7
-:4014060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6
-:401446000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066
-:401486000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026
-:4014C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6
-:4015060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5
-:401546000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065
-:401586000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025
-:4015C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5
-:4016060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4
-:401646000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064
-:401686000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024
-:4016C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4
-:4017060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3
-:401746000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063
-:401786000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023
-:4017C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3
-:4018060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2
-:401846000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062
-:401886000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022
-:4018C6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012011001FF00BF
-:401906000040CD06100100000102000209027400010100A032090400000EFF0000000705010240000007050202400000070503024000000705040240000007050502400076
-:4019460000070506024000000705070240000007058102400001070582024000000705830240000107058402400001070585024000010705860240000107058702400001F4
-:401986000403090448034B00650079007300700061006E002C002000610020006400690076006900730069006F006E0020006F006600200049006E006E006F005300790040
-:4019C6007300200049006E0063002E0036034B00650079007300700061006E0020005500530042002000530065007200690061006C002000410064006100700074006500F9
-:041A0600720000006A
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
diff --git a/firmware/keyspan/usa28xa.HEX b/firmware/keyspan/usa28xa.HEX
deleted file mode 100644
index f14932efbafb..000000000000
--- a/firmware/keyspan/usa28xa.HEX
+++ /dev/null
@@ -1,141 +0,0 @@
-:030033000212F9BD
-:10000300E4907F93F0907F9C7430F0E4907F96F0BF
-:10001300907F94F0907F9D74FFF0E4907F97F09031
-:0F0023007F95F0907F9E7407F0E4907F98F02215
-:10004600300918121327EFC3953C40030200D890DD
-:100056007FBF7401F0C209C200807730033B907FF6
-:10006600C6E020E16D121327EFC394405064907EE2
-:1000760040E0139209907FC7E014F5192000116043
-:100086000FF5087E7E7F41750C7E750D41120CC8FA
-:10009600C203E4907FC7F08039907FC8E020E13248
-:1000A600121327EFC394405029907DC0E0139209A4
-:1000B600907FC9E014F519200011600FF5087E7DC8
-:1000C6007FC1750C7D750DC1120CC8D203E4907FFB
-:1000D600C9F0907FB6E030E1030201601211E48FAF
-:1000E600191213338F36E519C3953A500F12130FB1
-:1000F600EF30E008E53620E703300B5EC20BE5196A
-:0C003600907F987410F090C000E0FF2252
-:03004300021300A5
-:03000000020E0EDF
-:400106006058B48003433602E53630E726E519D3942040037519208519087E7E7F80750C7E750D80AF36120F59E51925E0907FB7F08027E519D3943F400375193F851908C6
-:40014600907E80E536F07E7E7F81750C7E750D81120CEDE51904907FB7F0907FCEE030E1062005030203C1C205E4F51874402518F582E4347CF583E0FFE5187C007B017AE3
-:400186007E79002400F9EC347EFAEF120EE00518E518B420D7907E00E06068907E03E060247F01E4FD1211BF7F037DCD1211BF434680907F987414F090C000E546F0E490B6
-:4001C6007E13F08030907E01E0FF121043907E02E0FF1210697F01907E11E0FD1211BF7F037D071211BF434680907F987414F090C000E546F0907F987412F0E54044069006
-:40020600C000F0907E03E07006907E13E07008E4907E13F07525FF907E05E06012A3E0543FF544907F987413F090C000E544F0907E07E0602BA3E0600543428080035342DA
-:400246007F5342FC907E09E06011434202A3E0FF1210B5907E0BE0FF1210DBAF4212108F907E03E0600853427FAF4212108F907E0CE06018A3E0600543460280035346FD7C
-:40028600907F987414F090C000E546F0907E0EE06018A3E0600543460180035346FE907F987414F090C000E546F0907E12E0F53AA3E013920DA3E0F53CA3E060054346108B
-:4002C60080035346EF907F987414F090C000E546F0907E16E060325344BF907F987413F0E544547F90C000F0907F987411F01212EDEF54FE90C000F0533EFDE4FFAD3E1201
-:4003060011BFE4F52AF529D207907E17E0600F433E02E4FFAD3E1211BF752901D207907E18E06010907F987412F0E540440490C000F0D200907E19E06011434440907F98D6
-:400346007413F0E544547F90C000F0907E1AE0600F533EFEE4FFAD3E1211BF752B01D207907E1BE0600F433E01E4FFAD3E1211BFE4F52BD207907E1CE0600E907F98741268
-:40038600F0E540440290C000F0907E1DE06002D20B907E1EE06008752C01E4F538D207907E1FE06011907FD77411F07431F07415F07435F0D203E4907FCFF0301A52E53892
-:4003C60060021538201349E513D3940040041513803E75130A301B02D2131212EDEF5401F519652A600585192AD20712133FEF5480F51965266005851926D207300D111265
-:40040600133FEF5410F51965256005851925D207201B030207EC300A1812137BEFC3953D40030204AE907FC17401F0C20AC200807730043B907FCAE020E16D12137BEFC336
-:4004460094405064907D40E013920A907FCBE014F519200011600FF5087E7D7F41750C7D750D41120D12C204E4907FCBF08039907FCCE020E13212137BEFC39440502990A2
-:400486007CC0E013920A907FCDE014F519200011600FF5087E7C7FC1750C7C750DC1120D12D204E4907FCDF0907FBAE030E10302053612122E8F191213878F37E519C39503
-:4004C6003B500F121363EF30E008E53720E703300C5EC20CE5196058B48003433702E53730E726E519D3942040037519208519087E7D7F80750C7D750D80AF37120F92E5E9
-:400506001925E0907FBBF08027E519D3943F400375193F851908907D80E537F07E7D7F81750C7D750D81120D37E51904907FBBF0907FD0E030E106200603020797C206E4EA
-:40054600F51874C02518F582E4347BF583E0FFE5187C007B017A7E79202420F9EC347EFAEF120EE00518E518B420D7907E20E06068907E23E060247F01E4FD1212097F030C
-:400586007DCD121209434780907F98740CF090C000E547F0E4907E33F08030907E21E0FF121127907E22E0FF12114D7F01907E31E0FD1212097F037D0712120943478090FF
-:4005C6007F98740CF090C000E547F0907F98740AF0E541440690C000F0907E23E07006907E33E07008E4907E33F0752EFF907E25E06012A3E0543FF545907F98740BF090EB
-:40060600C000E545F0907E27E0602BA3E06005434380800353437F5343FC907E29E06011434302A3E0FF121173907E2BE0FF121199AF43121101907E23E0600853437FAFD3
-:4006460043121101907E2CE06018A3E0600543470280035347FD907F98740CF090C000E547F0907E2EE06018A3E0600543470180035347FE907F98740CF090C000E547F0C5
-:40068600907E32E0F53BA3E013920EA3E0F53DA3E0600543471080035347EF907F98740CF090C000E547F0907E36E060325345BF907F98740BF0E545547F90C000F0907F79
-:4006C600987409F0121357EF54FE90C000F0533FFDE4FFAD3F121209E4F533F532D208907E37E0600F433F02E4FFAD3F121209753201D208907E38E06010907F98740AF019
-:40070600E541440490C000F0D200907E39E06011434540907F98740BF0E545547F90C000F0907E3AE0600F533FFEE4FFAD3F121209753401D208907E3BE0600F433F01E4DA
-:40074600FFAD3F121209E4F534D208907E3CE0600E907F98740AF0E541440290C000F0907E3DE06002D20C907E3EE06008753501E4F539D208907E3FE06011907FD774137A
-:40078600F07433F07416F07436F0D204E4907FD1F0301A52E53960021539301349E513D3940040041513803E75130A301B02C213121357EF5401F51965336005851933D26D
-:4007C60008121393EF5480F519652F600585192FD208300E11121393EF5410F519652E600585192ED208301A2A907FD2E020E123907B40E06009E0F515907B42E0F516901D
-:400806007B41E06009907FD77417F07437F0E4907FD3F0907FC2E030E103020920E50A7040300739E5387035C207F5187E007B0074242518F9EE3400FA120E9AFF748025AF
-:4008460018F582E4347BF583EFF00518E518B409DB907FC37409F0753810E4F52C750A0122E50A64017040300839E5397035C208F5187E007B00742D2518F9EE3400FA1297
-:400886000E9AFF74802518F582E4347BF583EFF00518E518B409DB907FC37409F0753910E4F535750A0222E50A6402703630142FC214F5187E007B00740E2518F9EE340075
-:4008C600FA120E9AFF74802518F582E4347BF583EFF00518E518B405DB907FC37405F0750A0322E51560301515E4F5187E007B0074142518F9EE3400FA120E9AFF748025D6
-:4009060018F582E4347BF583EFF00518E518B403DB907FC37403F0E4F50A22907FE9E0120EF20A08000A7C010AE80309440609FB0809F50909DD0A09EC0B00000B37907F2F
-:40094600EBE024FE6019146061240260030209D37419907FD4F07400907FD5F0020B3E907FEAE070047F0280027F03758282758319EFF075827B758319F0758274758319B2
-:40098600F0758266758319F0758258758319F0907FEAE004758217758319F07419907FD4F07412907FD5F0020B3E907FEAE0FF120F18EA49600DEA907FD4F0E9907FD5F077
-:4009C600020B3E907FB4E04401F0020B3E907FB4E04401F0020B3E907F00E509F0907FB57401F0020B3E907FEAE0F509020B3E120B46020B3E907F007401F0907FB5F00205
-:400A06000B3E907FE8E0247F60241460312402705BA210E433FF25E0FFA216E4334F907F00F0E4A3F0907FB57402F0020B3EE4907F00F0A3F0907FB57402F0020B3E907F04
-:400A4600ECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F0020B3E907FB4E04401F0020B3E907FE8E024FE601D24020F
-:400A86006003020B3E907FEAE0B40105C210020B3E907FB4E04401F0020B3E907FEAE07038907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E4F0907FB6
-:400AC600ECE05480FF131313541FFFE054072F907FD7F0E04420F0805F907FB4E04401F08056907FE8E024FE60182402704A907FEAE0B40104D210803F907FB4E04401F049
-:400B06008036907FEAE07020907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF5837401F08010907FB4E04401F08007907FB4E04401F0907FB4E04402F022D4
-:400B4600E4907F93F0907F9C7430F0E4907F96F0907F9574C0F0907F9E743FF0907F987418F0E4F58E907FDF74FFF0907FDEF0E4F5247518017B0074242518F9E43400FA8B
-:400B8600E4120EE00518E518B409EA753A01E4F538F513F536C207C20BC205C200C209C213907F987413F075440390C0007403F07F0CE4FD1211BF7F108F4212108F907FD8
-:400BC600987412F07F018F40EF440690C000F0907F987414F075468090C0007480F00FE4FD1211BFE4FF7EA3AD068D3E1211BF907F987411F090C000E4F07F057D7F121172
-:400C0600BF7F011212787F037D071211BF7F137D011211BF201B03020CC5752D017518017B00742D2518F9E43400FAE4120EE00518E518B409EA753B01E4F539F513F537B7
-:400C4600C208C20CC206C200C20AC213907F98740BF075450390C0007403F07F0CE4FD1212097F108F43121101907F98740AF07F018F41EF440690C000F0907F98740CF00E
-:400C860075478090C0007480F00FE4FD121209E4FF7EA3AD068D3F121209907F987409F090C000E4F07F057D7F1212097F011212997F037D071212097F137D01121209D28D
-:400CC6001222907F987410F0AF08E50DF582E50CF583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987410F0AF08E50DF582E50CF583C2AF058690C000E00568
-:400D060086F0A30586DFF70586D2AF22907F987408F0AF08E50DF582E50CF583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987408F0AF08E50DF582E50CF577
-:400D460083C2AF058690C000E00586F0A30586DFF70586D2AF227400F58690FDA57C05A3E582458370F922907FD6E04480F0438701000000000022D219907F92E04402F00A
-:400D8600907FAEE0FFD39210E433FEEF4EF0D2E843D820907FDE7401F0907FDFF0907FAB74FFF0907FA9F0907FAAF05391EF907FAFE04401F0907FAEE0440DF0D2AFD21A56
-:400DC600121253C211E4F50BF513C217C212907FA104F0907FD8E065176010301205D21A120046907FD8E0F5178008301205C21A120046301107C21112092180D63018D38A
-:400E0600C21812139F80CC22787FE4F6D8FD758147020E55020D7DE493A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F4420C8834004F4568031
-:400E46000146F6DFE4800B01020408102040809012BAE47E019360BCA3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE493A3F8E493A3C8C582C828
-:400E8600CAC583CAF0A3C8C582C8CAC583CADFE9DEE780BEBB010689828A83E0225002E722BBFE02E32289828A83E49322BB010CE58229F582E5833AF583E0225006E92548
-:400EC60082F8E622BBFE06E92582F8E222E58229F582E5833AF583E49322BB010689828A83F0225002F722BBFE01F322D083D082F8E4937012740193700DA3A393F87401DE
-:400F060093F5828883E4737402936860EFA3A3A380DF8F18E4F519751AFF751B19751C86AB1AAA1BA91C900001120EB3B4031DAF190519EFB5180122120E9A7E0029FFEEB6
-:400F46003AA907751AFFF51B891C80D47B007A007900228F1A050DE50DAE0C7002050C14F5828E83E51AF0120036050DE50DAC0C7002050C14F5828C83EFF01508E508607B
-:400F86000A1213338F1AEF423680CA228F1A050DE50DAE0C7002050C14F5828E83E51AF012134B050DE50DAC0C7002050C14F5828C83EFF01508E508600A1213878F1AEFF8
-:400FC600423780CA22C0E0C083C082C085C084C086758600907FC4E4F05391EF907FAB7404F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D21123
-:401006005391EF907FAB7401F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D2185391EF907FAB7408F0D086D084D085D082D083D0E032907F9833
-:401046007413F090C00074BFF0907F987410F090C000EFF0907F987413F0E544547F90C000F022907F987413F090C00074BFF0907F987411F090C000EFF0907F987413F0C0
-:40108600E544547F90C000F022907F987413F090C00074BFF0907F987412F090C000EFF0907F987413F0E544547F90C000F022907F987413F090C00074BFF0907F987414B3
-:4010C600F090C000EFF0907F987413F0E544547F90C000F022907F987413F090C00074BFF0907F987416F090C000EFF0907F987413F0E544547F90C000F022907F98740BCC
-:40110600F090C00074BFF0907F98740AF090C000EFF0907F98740BF0E545547F90C000F022907F98740BF090C00074BFF0907F987408F090C000EFF0907F98740BF0E54582
-:40114600547F90C000F022907F98740BF090C00074BFF0907F987409F090C000EFF0907F98740BF0E545547F90C000F022907F98740BF090C00074BFF0907F98740CF090C3
-:40118600C000EFF0907F98740BF0E545547F90C000F022907F98740BF090C00074BFF0907F98740EF090C000EFF0907F98740BF0E545547F90C000F022907F987413F0E5CC
-:4011C60044547F90C000F0907F987417F090C000EFF0907F987415F090C000EDF02212131B8F1A12131B8F1BE51A651B601212131B8F1AE51A651B600712131B8F1B80E8ED
-:40120600AF1A22907F98740BF0E545547F90C000F0907F98740FF090C000EFF0907F98740DF090C000EDF02212136F8F1A12136F8F1BE51A651B601212136F8F1AE51A65AD
-:401246001B600712136F8F1B80E8AF1A22907FD6E054FBF0E04408F0301A04E04402F07FF47E011212D6907FD6E054F7F0E04404F022AE07E4FFE53E547FFD1211BF907F2F
-:40128600987411F090C000EEF0E4E53E4480FD1211BF22AE07E4FFE53F547FFD121209907F987409F090C000EEF0E4E53F4480FD12120922050E02000000000314030000DF
-:4012C600C111C118C195C110C116010A00C19B008E188F19E5191519AE18700215184E6005120D5C80EE22907F987411F090C000E0FF2253D8EF32000000020FF500021367
-:401306000400020FCB0002101C907F987412F090C000E0FF22907F987413F090C000E0FF22907F987414F090C000E0FF22907F987415F090C000E0FF22907F987416F0902A
-:40134600C000E0FF22907F987408F090C000E0FF22907F987409F090C000E0FF22907F98740AF090C000E0FF22907F98740BF090C000E0FF22907F98740CF090C000E0FFCA
-:4013860022907F98740DF090C000E0FF22907F98740EF090C000E0FF22120003120D6D120B462200000000000000000000000000000000000000000000000000000000000C
-:4013C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7
-:4014060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6
-:401446000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066
-:401486000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026
-:4014C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6
-:4015060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5
-:401546000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065
-:401586000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025
-:4015C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5
-:4016060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4
-:401646000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064
-:401686000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024
-:4016C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4
-:4017060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3
-:401746000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063
-:401786000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023
-:4017C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3
-:4018060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2
-:401846000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062
-:401886000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022
-:4018C6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012011001FF00BF
-:401906000040CD06150100000102000209027400010100A032090400000EFF0000000705010240000007050202400000070503024000000705040240000007050502400071
-:4019460000070506024000000705070240000007058102400001070582024000010705830240000107058402400001070585024000010705860240000107058702400001F3
-:401986000403090448034B00650079007300700061006E002C002000610020006400690076006900730069006F006E0020006F006600200049006E006E006F005300790040
-:4019C6007300200049006E0063002E0036034B00650079007300700061006E0020005500530042002000530065007200690061006C002000410064006100700074006500F9
-:041A0600720000006A
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
diff --git a/firmware/keyspan/usa28xb.HEX b/firmware/keyspan/usa28xb.HEX
deleted file mode 100644
index 07cb708f1956..000000000000
--- a/firmware/keyspan/usa28xb.HEX
+++ /dev/null
@@ -1,142 +0,0 @@
-:0300330002002D9B
-:04002D0053D8EF3283
-:10004600300918121333EFC3953C40030200D890D1
-:100056007FBF7401F0C209C200807730033B907FF6
-:10006600C6E020E16D121333EFC394405064907ED6
-:1000760040E0139209907FC7E014F5192000116043
-:100086000FF5087E7E7F41750C7E750D41120CCCF6
-:10009600C203E4907FC7F08039907FC8E020E13248
-:1000A600121333EFC394405029907DC0E013920998
-:1000B600907FC9E014F519200011600FF5087E7DC8
-:1000C6007FC1750C7D750DC1120CCCD203E4907FF7
-:1000D600C9F0907FB6E030E1030201601211F58F9E
-:1000E6001912133F8F36E519C3953A500F12131B99
-:1000F600EF30E008E53620E703300B5EC20BE5196A
-:0C003600907F987410F090C000E0FF2252
-:03004300021300A5
-:10000300C0E0C083C082C085C084C086758600906E
-:100013007FC4E4F05391EF907FAB7404F0D086D0AB
-:0A00230084D085D082D083D0E03273
-:03000000020E12DB
-:400106006058B48003433602E53630E726E519D3942040037519208519087E7E7F80750C7E750D80AF36120F5DE51925E0907FB7F08027E519D3943F400375193F851908C2
-:40014600907E80E536F07E7E7F81750C7E750D81120CF1E51904907FB7F0907FCEE030E1062005030203C1E4F51874402518F582E4347CF583E0FFE5187C007B017A7E79AF
-:40018600002400F9EC347EFAEF120EE40518E518B420D7907E00E06068907E03E060247F01E4FD1211D07F037DCD1211D0434680907F987414F090C000E546F0E4907E13F6
-:4001C600F08030907E01E0FF121054907E02E0FF12107A7F01907E11E0FD1211D07F037D071211D0434680907F987414F090C000E546F0907F987412F0E540440690C00093
-:40020600F0907E03E07006907E13E07008E4907E13F07525FF907E05E06012A3E0543FF544907F987413F090C000E544F0907E07E0602BA3E06005434280800353427F53C8
-:4002460042FC907E09E06011434202A3E0FF1210C6907E0BE0FF1210ECAF421210A0907E03E0600853427FAF421210A0907E0CE06018A3E0600543460280035346FD907FFB
-:40028600987414F090C000E546F0907E0EE06018A3E0600543460180035346FE907F987414F090C000E546F0907E12E0F53AA3E013920DA3E0F53CA3E06005434610800317
-:4002C6005346EF907F987414F090C000E546F0907E16E060325344BF907F987413F0E544547F90C000F0907F987411F012130FEF54FE90C000F0533EFDE4FFAD3E1211D080
-:40030600E4F52AF529D207907E17E0600F433E02E4FFAD3E1211D0752901D207907E18E06010907F987412F0E540440490C000F0D200907E19E06011434440907F9874130E
-:40034600F0E544547F90C000F0907E1AE0600F533EFEE4FFAD3E1211D0752B01D207907E1BE0600F433E01E4FFAD3E1211D0E4F52BD207907E1CE0600E907F987412F0E5F8
-:4003860040440290C000F0907E1DE06002D20B907E1EE06008752C01E4F538D207907E1FE06011907FD77411F07431F07415F07435F0D203C205E4907FCFF0301A54E5389E
-:4003C6006002153820134BE513D3940040041513804075130A301B02D21312130FEF5401F519652A600585192AD20712134BEF54806480F51965266005851926D207300D71
-:400406001112134BEF5410F51965256005851925D207201B030207F0300A18121387EFC3953D40030204B0907FC17401F0C20AC200807730043B907FCAE020E16D1213879B
-:40044600EFC394405064907D40E013920A907FCBE014F519200011600FF5087E7D7F41750C7D750D41120D16C204E4907FCBF08039907FCCE020E132121387EFC394405099
-:4004860029907CC0E013920A907FCDE014F519200011600FF5087E7C7FC1750C7C750DC1120D16D204E4907FCDF0907FBAE030E10302053812123F8F191213938F37E5197F
-:4004C600C3953B500F12136FEF30E008E53720E703300C5EC20CE5196058B48003433702E53730E726E519D3942040037519208519087E7D7F80750C7D750D80AF37120FFC
-:4005060096E51925E0907FBBF08027E519D3943F400375193F851908907D80E537F07E7D7F81750C7D750D81120D3BE51904907FBBF0907FD0E030E106200603020799E431
-:40054600F51874C02518F582E4347BF583E0FFE5187C007B017A7E79202420F9EC347EFAEF120EE40518E518B420D7907E20E06068907E23E060247F01E4FD12121A7F03F7
-:400586007DCD12121A434780907F98740CF090C000E547F0E4907E33F08030907E21E0FF121138907E22E0FF12115E7F01907E31E0FD12121A7F037D0712121A43478090AA
-:4005C6007F98740CF090C000E547F0907F98740AF0E541440690C000F0907E23E07006907E33E07008E4907E33F0752EFF907E25E06012A3E0543FF545907F98740BF090EB
-:40060600C000E545F0907E27E0602BA3E06005434380800353437F5343FC907E29E06011434302A3E0FF121184907E2BE0FF1211AAAF43121112907E23E0600853437FAFA0
-:4006460043121112907E2CE06018A3E0600543470280035347FD907F98740CF090C000E547F0907E2EE06018A3E0600543470180035347FE907F98740CF090C000E547F0B4
-:40068600907E32E0F53BA3E013920EA3E0F53DA3E0600543471080035347EF907F98740CF090C000E547F0907E36E060325345BF907F98740BF0E545547F90C000F0907F79
-:4006C600987409F0121363EF54FE90C000F0533FFDE4FFAD3F12121AE4F533F532D208907E37E0600F433F02E4FFAD3F12121A753201D208907E38E06010907F98740AF0EB
-:40070600E541440490C000F0D200907E39E06011434540907F98740BF0E545547F90C000F0907E3AE0600F533FFEE4FFAD3F12121A753401D208907E3BE0600F433F01E4C9
-:40074600FFAD3F12121AE4F534D208907E3CE0600E907F98740AF0E541440290C000F0907E3DE06002D20C907E3EE06008753501E4F539D208907E3FE06011907FD7741369
-:40078600F07433F07416F07436F0D204C206E4907FD1F0301A54E5396002153930134BE513D3940040041513804075130A301B02C213121363EF5401F51965336005851998
-:4007C60033D20812139FEF54806480F519652F600585192FD208300E1112139FEF5410F519652E600585192ED208301A2A907FD2E020E123907B40E06009E0F515907B4297
-:40080600E0F516907B41E06009907FD77417F07437F0E4907FD3F0907FC2E030E103020924E50A7040300739E5387035C207F5187E007B0074242518F9EE3400FA120E9E44
-:40084600FF74802518F582E4347BF583EFF00518E518B409DB907FC37409F0753810E4F52C750A0122E50A64017040300839E5397035C208F5187E007B00742D2518F9EEBF
-:400886003400FA120E9EFF74802518F582E4347BF583EFF00518E518B409DB907FC37409F0753910E4F535750A0222E50A6402703630142FC214F5187E007B00740E25184C
-:4008C600F9EE3400FA120E9EFF74802518F582E4347BF583EFF00518E518B405DB907FC37405F0750A0322E51560301515E4F5187E007B0074142518F9EE3400FA120E9ECB
-:40090600FF74802518F582E4347BF583EFF00518E518B403DB907FC37403F0E4F50A22907FE9E0120EF60A0C000A80010AEC0309480609FF0809F90909E10A09F00B000044
-:400946000B3B907FEBE024FE6019146061240260030209D77419907FD4F07400907FD5F0020B42907FEAE070047F0280027F03758282758319EFF075827B758319F07582DA
-:4009860074758319F0758266758319F0758258758319F0907FEAE004758217758319F07419907FD4F07412907FD5F0020B42907FEAE0FF120F1CEA49600DEA907FD4F0E9BE
-:4009C600907FD5F0020B42907FB4E04401F0020B42907FB4E04401F0020B42907F00E509F0907FB57401F0020B42907FEAE0F509020B42120B4A020B42907F007401F0903B
-:400A06007FB5F0020B42907FE8E0247F60241460312402705BA210E433FF25E0FFA216E4334F907F00F0E4A3F0907FB57402F0020B42E4907F00F0A3F0907FB57402F0022E
-:400A46000B42907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F0020B42907FB4E04401F0020B42907FE8E024FE4E
-:400A8600601D24026003020B42907FEAE0B40105C210020B42907FB4E04401F0020B42907FEAE07038907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583EA
-:400AC600E4F0907FECE05480FF131313541FFFE054072F907FD7F0E04420F0805F907FB4E04401F08056907FE8E024FE60182402704A907FEAE0B40104D210803F907FB47B
-:400B0600E04401F08036907FEAE07020907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF5837401F08010907FB4E04401F08007907FB4E04401F0907FB4E017
-:400B46004402F022E4907F93F0907F9C7430F0E4907F96F0907F9574C0F0907F9E743FF0907F987418F0E4F58E907FDF74FFF0907FDEF0E4F5247518017B0074242518F945
-:400B8600E43400FAE4120EE40518E518B409EA753A01E4F538F513F536C207C20BC205C200C209C213907F987413F075440390C0007403F07F0CE4FD1211D07F108F42125F
-:400BC60010A0907F987412F07F018F40EF440690C000F0907F987414F075468090C0007480F00FE4FD1211D0E4FF7EA3AD068D3E1211D0907F987411F090C000E4F07F05B0
-:400C06007D7F1211D07F011212897F037D071211D07F137D091211D0201B03020CC9752D017518017B00742D2518F9E43400FAE4120EE40518E518B409EA753B01E4F53978
-:400C4600F513F537C208C20CC206C200C20AC213907F98740BF075450390C0007403F07F0CE4FD12121A7F108F43121112907F98740AF07F018F41EF440690C000F0907FC0
-:400C860098740CF075478090C0007480F00FE4FD12121AE4FF7EA3AD068D3F12121A907F987409F090C000E4F07F057D7F12121A7F011212AA7F037D0712121A7F137D0927
-:400CC60012121AD21222907F987410F0AF08E50DF582E50CF583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987410F0AF08E50DF582E50CF583C2AF058690FD
-:400D0600C000E00586F0A30586DFF70586D2AF22907F987408F0AF08E50DF582E50CF583C2AF058690C0000586E0A30586F00586DFF7D2AF22907F987408F0AF08E50DF53A
-:400D460082E50CF583C2AF058690C000E00586F0A30586DFF70586D2AF227400F58690FDA57C05A3E582458370F922907FD6E04480F0438701000000000022D219907F92B8
-:400D8600E04402F0907FAEE0FFD39210E433FEEF4EF0D2E843D820907FDE7401F0907FDFF0907FAB74FFF0907FA9F0907FAAF05391EF907FAFE04401F0907FAEE0440DF0AD
-:400DC600D2AFD21A121264C211E4F50BF513C217C212907FA104F0907FD8E065176010301205D21A120046907FD8E0F5178008301205C21A120046301107C21112092580F9
-:400E0600D63018D3C2181213AB80CC22787FE4F6D8FD758147020E59020D81E493A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F4420C88340FA
-:400E460004F456800146F6DFE4800B01020408102040809012CBE47E019360BCA3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE493A3F8E493A320
-:400E8600C8C582C8CAC583CAF0A3C8C582C8CAC583CADFE9DEE780BEBB010689828A83E0225002E722BBFE02E32289828A83E49322BB010CE58229F582E5833AF583E022D5
-:400EC6005006E92582F8E622BBFE06E92582F8E222E58229F582E5833AF583E49322BB010689828A83F0225002F722BBFE01F322D083D082F8E4937012740193700DA3A37A
-:400F060093F8740193F5828883E4737402936860EFA3A3A380DF8F18E4F519751AFF751B19751C86AB1AAA1BA91C900001120EB7B4031DAF190519EFB5180122120E9E7EC4
-:400F46000029FFEE3AA907751AFFF51B891C80D47B007A007900228F1A050DE50DAE0C7002050C14F5828E83E51AF0120036050DE50DAC0C7002050C14F5828C83EFF015BA
-:400F860008E508600A12133F8F1AEF423680CA228F1A050DE50DAE0C7002050C14F5828E83E51AF0121357050DE50DAC0C7002050C14F5828C83EFF01508E508600A1213AA
-:400FC600938F1AEF423780CA22E4907F93F0907F9C7430F0E4907F96F0907F95F0907F9E7427F0907F987420F0907F9E7407F0E4907F94F0907F9D74FFF0E4907F97F0227C
-:40100600C0E0C083C082C085C084C086758600D2115391EF907FAB7401F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D2185391EF907FAB74087E
-:40104600F0D086D084D085D082D083D0E032907F987413F090C00074BFF0907F987410F090C000EFF0907F987413F0E544547F90C000F022907F987413F090C00074BFF00C
-:40108600907F987411F090C000EFF0907F987413F0E544547F90C000F022907F987413F090C00074BFF0907F987412F090C000EFF0907F987413F0E544547F90C000F0220A
-:4010C600907F987413F090C00074BFF0907F987414F090C000EFF0907F987413F0E544547F90C000F022907F987413F090C00074BFF0907F987416F090C000EFF0907F9807
-:401106007413F0E544547F90C000F022907F98740BF090C00074BFF0907F98740AF090C000EFF0907F98740BF0E545547F90C000F022907F98740BF090C00074BFF0907FFA
-:40114600987408F090C000EFF0907F98740BF0E545547F90C000F022907F98740BF090C00074BFF0907F987409F090C000EFF0907F98740BF0E545547F90C000F022907F71
-:4011860098740BF090C00074BFF0907F98740CF090C000EFF0907F98740BF0E545547F90C000F022907F98740BF090C00074BFF0907F98740EF090C000EFF0907F98740BFD
-:4011C600F0E545547F90C000F022907F987413F0E544547F90C000F0907F987417F090C000EFF0907F987415F090C000EDF0221213278F1A1213278F1BE51A651B60121292
-:4012060013278F1AE51A651B60071213278F1B80E8AF1A22907F98740BF0E545547F90C000F0907F98740FF090C000EFF0907F98740DF090C000EDF02212137B8F1A121325
-:401246007B8F1BE51A651B601212137B8F1AE51A651B600712137B8F1B80E8AF1A22907FD6E054FBF0E04408F0301A04E04402F07FF47E011212E7907FD6E054F7F0E044E1
-:4012860004F022AE07E4FFE53E547FFD1211D0907F987411F090C000EEF0E4E53E4480FD1211D022AE07E4FFE53F547FFD12121A907F987409F090C000EEF0E4E53F448095
-:4012C600FD12121A22050E02000000000314030000C111C118C195C110C116010A00C19B008E188F19E5191519AE18700215184E6005120D6080EE2200000210060002137E
-:4013060004000200030002102D907F987411F090C000E0FF22907F987412F090C000E0FF22907F987413F090C000E0FF22907F987414F090C000E0FF22907F987415F090F5
-:40134600C000E0FF22907F987416F090C000E0FF22907F987408F090C000E0FF22907F987409F090C000E0FF22907F98740AF090C000E0FF22907F98740BF090C000E0FFC0
-:4013860022907F98740CF090C000E0FF22907F98740DF090C000E0FF22907F98740EF090C000E0FF22120FCF120D71120B4A220000000000000000000000000000000000C1
-:4013C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7
-:4014060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6
-:401446000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066
-:401486000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026
-:4014C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6
-:4015060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5
-:401546000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065
-:401586000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025
-:4015C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5
-:4016060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4
-:401646000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064
-:401686000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024
-:4016C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4
-:4017060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3
-:401746000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063
-:401786000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023
-:4017C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3
-:4018060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2
-:401846000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062
-:401886000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022
-:4018C6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012011001FF00BF
-:401906000040CD06100100000102000209027400010100A032090400000EFF0000000705010240000007050202400000070503024000000705040240000007050502400076
-:4019460000070506024000000705070240000007058102400001070582024000000705830240000107058402400001070585024000010705860240000107058702400001F4
-:401986000403090448034B00650079007300700061006E002C002000610020006400690076006900730069006F006E0020006F006600200049006E006E006F005300790040
-:4019C6007300200049006E0063002E0036034B00650079007300700061006E0020005500530042002000530065007200690061006C002000410064006100700074006500F9
-:041A0600720000006A
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
diff --git a/firmware/keyspan/usa49w.HEX b/firmware/keyspan/usa49w.HEX
deleted file mode 100644
index 5e5b3d13dd5f..000000000000
--- a/firmware/keyspan/usa49w.HEX
+++ /dev/null
@@ -1,145 +0,0 @@
-:030033000218FBB5
-:0C0036009078417401F090C000E0FF22BF
-:10004600E4FF74402FF582E4347BF583E0FEE5158A
-:100056002404FDE43514FAA9057B01EF7C0029F997
-:10006600EC3AFAEE1211F10FBF22D7E5152405F589
-:1000760082E43514F583E07003020134E5152409A2
-:10008600F582E43514F583E0700EE515240AF58251
-:10009600E43514F583E060187F01E4FD121647E5A8
-:1000A600152431F582E43514F583E054CFF0804110
-:1000B600E5152406F582E43514F583E0FF1216767D
-:1000C600E5152407F582E43514F583E0FF120003F5
-:1000D6007F01E5152408F582E43514F583E0FD1269
-:1000E6001647E5152431F582E43514F583E04430EE
-:1000F600F0E5152439F582E43514F583E04480F003
-:100003009078417403F090C00074BFF0907841740D
-:1000130001F090C000EFF09078417403F0E51524EF
-:1000230037F582E43514F583E0547F90C000F02265
-:03004300021B009D
-:0300000002109556
-:400106009078417404F0E5152439F582E43514F583E090C000F09078417402F0E5152436F582E43514F583E0440690C000F0E515240BF582E43514F583E06032E515240C0B
-:40014600F582E43514F583E0543FFFE5152437F582E43514F583EFF09078417403F0E5152437F582E43514F583E090C000F0E515240DF582E43514F583E0700302024FE588
-:40018600152417F582E43514F583E06011E5152432F582E43514F583E04404F0800FE5152432F582E43514F583E054FBF0E4FFE5152432F582E43514F583E0FD121647E55E
-:4001C60015240EF582E43514F583E06011E5152433F582E43514F583E04480F0800FE5152433F582E43514F583E0547FF0E5152433F582E43514F583E054FCF0E515240FEB
-:40020600F582E43514F583E0602FE5152433F582E43514F583E04402F0E5152410F582E43514F583E0FF1215E7E5152411F582E43514F583E0FF121617E5152433F582E45E
-:400246003514F583E0FF1215B7E5152414F582E43514F583E06044E5152415F582E43514F583E06011E5152439F582E43514F583E04401F0800FE5152439F582E43514F581
-:4002860083E054FEF09078417404F0E5152439F582E43514F583E090C000F0E5152412F582E43514F583E06044E5152413F582E43514F583E06011E5152439F582E43514E6
-:4002C600F583E04402F0800FE5152439F582E43514F583E054FDF09078417404F0E5152439F582E43514F583E090C000F0E5152416F582E43514F583E0FFE5152435F5820A
-:40030600E43514F583EFF0E5152417F582E43514F583E030E011E5152431F582E43514F583E04440F0800FE5152431F582E43514F583E054BFF0E5152418F582E43514F576
-:4003460083E0FFE515243BF582E43514F583EFF0E5152419F582E43514F583E06011E5152439F582E43514F583E04410F0800FE5152439F582E43514F583E054EFF0907869
-:40038600417404F0E5152439F582E43514F583E090C000F0E515241AF582E43514F583E0606BE5152437F582E43514F583E054BFF09078417403F0E5152437F582E43514FF
-:4003C600F583E0547F90C000F09078417401F0120036EF54FE90C000F0E5152432F582E43514F583E054FDFFF0FDE4FF121647E515242CF582E43514F583E4F0E515242BB7
-:40040600F582E43514F583E4F0E5164213E515241BF582E43514F583E0700EE5152425F582E43514F583E06028E5152432F582E43514F583E04402FFF0FDE4FF121647E547
-:4004460015242BF582E43514F5837401F0E5164213E515241CF582E43514F583E0FF700EE5152425F582E43514F583E0602A9078417402F0E5152436F582E43514F583E0C6
-:40048600440490C000F0EF600FE5152431F582E43514F583E04404F0E515241DF582E43514F583E06027E5152437F582E43514F583E04440F09078417403F0E5152437F550
-:4004C60082E43514F583E0547F90C000F0E515241EF582E43514F583E06028E5152432F582E43514F583E054FEFFF0FDE4FF121647E515242DF582E43514F5837401F0E58F
-:40050600164213E515241FF582E43514F583E0700EE5152425F582E43514F583E06027E5152432F582E43514F583E04401FFF0FDE4FF121647E515242DF582E43514F58397
-:40054600E4F0E5164213E5152420F582E43514F583E0700EE5152425F582E43514F583E060189078417402F0E5152436F582E43514F583E0440290C000F0E5152421F582A7
-:40058600E43514F583E0600FE5152431F582E43514F583E04402F0E5152422F582E43514F583E0601FE515242EF582E43514F5837401F0E515243AF582E43514F583E4F0F0
-:4005C600E5164213E5152423F582E43514F583E06003121885E5152424F582E43514F583E0601BE5152431F582E43514F583E04408F0907F98E0FFE516F4FEEF5EF0E5156C
-:400606002425F582E43514F583E06016E5152431F582E43514F583E054F7F0907F98E04516F022907FE9E012120307830007F701086303064C0607740807680907500A07CE
-:400646005F0B000008B2907FEBE024FE601C1470030206FE240260030207467419907FD4F07400907FD5F00208B9907FEAE004758217758319F0907FEAE030E0047F03802D
-:40068600027F02758282758319EFF075826D758319F0758266758319F075825F758319F0758258758319F0907FEAE030E1047F6480027F3275821A758319EFF0907FEFE0FB
-:4006C600FE907FEEE07C002400F519EC3EF518753319753412758214758319E0752700F528D3E5289519E527951840068518278519281213120208B9907FEAE0FF12142BC9
-:40070600EA496032907FEEE0751800F519AE02AF018E338F348F828E83E0FEA3E08E27F528D39519E527951840068518278519281213120208B9907FB4E04401F00208B99E
-:40074600907FB4E04401F00208B9907F00E525F0907FB57401F00208B9907FEAE0F5250208B9907FEAE0F522120AB80208B9907F00E522F0907FB57401F00208B9907FE8BD
-:40078600E0247F60241460312402705BA200E433FF25E0FFA206E4334F907F00F0E4A3F0907FB57402F00208B9E4907F00F0A3F0907FB57402F00208B9907FECE0F4548063
-:4007C600FFC4540FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F00208B9907FB4E04401F00208B9907FE8E024FE601D240260030208B910
-:40080600907FEAE0B40105C2000208B9907FB4E04401F00208B9907FEAE07038907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E4F0907FECE05480FF67
-:40084600131313541FFFE054072F907FD7F0E04420F0805F907FB4E04401F08056907FE8E024FE60182402704A907FEAE0B40104D200803F907FB4E04401F08036907FEACB
-:40088600E07020907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF5837401F08010907FB4E04401F08007907FB4E04401F0907FB4E04402F022E511540F703D
-:4008C600030209B21216A5EF20E175121703EF14F5191218CCEF2519FFE433FEC3EF9480EE648094805059851582851483E0FEA3E0FFF5828E83E030E011E5152431F58250
-:40090600E43514F583E04480F0800FE5152431F582E43514F583E0547FF0E5152431F582E43514F583E020E212E519600EF523EF2401F52DE43EF52C1214ADE4FF1214E3C0
-:40094600E5152431F582E43514F583E030E75D1218CCE515243BF582E43514F583E0FEEFC39E5048E515242FF582E43514F5837401F0E5152431F582E43514F583E0547B99
-:40098600F0E515243AF582E43514F583E4F0E5164213907FC2E030E110E5152426F582E43514F583E0F52480031212A11216D4EF30E103020AB71217D28F191218D8E515D5
-:4009C6002438F582E43514F583EFF0E5152435F582E43514F583E0FFE519C39F50281218B4EF30E021E5152438F582E43514F583E020E712E5152431F582E43514F583E0C0
-:400A060020E103020AB7E5152431F582E43514F583E054FDF0E5197003020AB7B4800FE5152438F582E43514F583E04402F0E5152438F582E43514F583E0FF30E729E519CF
-:400A4600D394204003751920851923851582851483A3A3E0FCA3E08C2CF52D1213DDE51925E0FF12151922E519D3943F400375193F851923E5152438F582E43514F583E053
-:400A8600FF851582851483A3A3E0FCA3E0F5828C83EFF0851582851483A3A3E0FEA3E02401F52DE43EF52C12146CE51904FF12151922E4907F93F0907F9C74F0F0907F9677
-:400AC600F0E4907F94F090784A04F0F58E907F9574C0F0907F9E743FF0907F98741FF090784374FFF0E4907841F0907FDF749FF0907FDEF0907F92E04402F07E7B7FC07581
-:400B0600147B7515C0907F9674EFF0751601120F127E7B7FC075147B7515C0907F9674EFF0751601E5152426F582E43514F583E4F07E7E7F40851582851483747EF0A374F5
-:400B460040F07E7E7F80851582851483A3A3747EF0A37480F07E7C7F0075147C751500907F9674DFF0751602120F127E7C7F0075147C751500907F9674DFF0751602E51536
-:400B86002426F582E43514F5837401F07E7D7FC0851582851483747DF0A374C0F07E7E7F00851582851483A3A3747EF0A37400F07E7C7F4075147C751540907F9674BFF018
-:400BC600751604120F127E7C7F4075147C751540907F9674BFF0751604E5152426F582E43514F5837402F07E7D7F40851582851483747DF0A37440F07E7D7F8085158285D3
-:400C06001483A3A3747DF0A37480F07E7C7F8075147C751580907F96747FF0751608120F127E7C7F8075147C751580907F96747FF0751608E5152426F582E43514F583741C
-:400C460003F07E7C7FC0851582851483747CF0A374C0F07E7D7F00851582851483A3A3747DF0A37400F0C20AC209D20222E510045403F51014601F1460311460432403701B
-:400C8600527E7B7FC075147B7515C0907F9674EFF0751601803D7E7C7F0075147C751500907F9674DFF075160280287E7C7F4075147C751540907F9674BFF075160480137E
-:400CC6007E7C7F8075147C751580907F96747FF0751608E53255167003020E11E516F4FF5232E526547FFE700FE52A55166024907F98E04516F0801BBE2018E5152431F543
-:400D060082E43514F583E030E309E4F52A907F98E05FF0E515243AF582E43514F583E06003E014F0E5152434F582E43514F583E06003E014F0E06003020E11740AF012009D
-:400D460036EF5401FFF519E515242CF582E43514F583E06F6007E519F0E51642131218E48F19E5152427F582E43514F583E0FFE5195410FE6F6006EEF0E5164213E5152415
-:400D860028F582E43514F583E0FFE5195480FE6F6006EEF0E5164213E5152429F582E43514F583E0FFE5195420FE6F6015EEF0E5152431F582E43514F583E030E404E51665
-:400DC6004213E5125516FFF519E515242AF582E43514F583E06F6016E519F0E5152431F582E43514F583E030E504E5164213E5175516FFF519E5152430F582E43514F58380
-:400E0600E06F6007E519F0E516421322300903020F11E52414602A14604114605814606F24046003020ECF7E7B7FC075147B7515C0907F9674EFF07516011212A17524015A
-:400E4600227E7C7F0075147C751500907F9674DFF07516021212A1752402227E7C7F4075147C751540907F9674BFF07516041212A1752403227E7C7F8075147C7515809051
-:400E86007F96747FF07516081212A175240422300433C2045313DFE4F5197E007B00742E2519F9EE3400FA1211ABFF74802519F582E4347BF583EFF00519E519B403DB902D
-:400EC6007FC37403F075240522E536603BD5360A5313EF300A04D209C20AE4F5197E007B0074352519F9EE3400FA1211ABFF74802519F582E4347BF583EFF00519E519B467
-:400F060003DB907FC37403F0E4F52422E4F51A7E007B01E515251AF9EE3514FAE41211F1051AE51AB43CE8E5152435F582E43514F5837401F09078417403F0E5152437F569
-:400F460082E43514F5837403F090C000F07F0CE4FD1216477F10E5152433F582E43514F583EFF01215B79078417402F07F01E5152436F582E43514F583EFF0440690C000F1
-:400F8600F09078417404F0E5152439F582E43514F5837480F090C000F00FE4FD121647E4FF7EA3E5152432F582E43514F583EEF0FD1216479078417401F090C000E4F07F89
-:400FC600057D7F1216477F0112154F7F037D071216472253133F907BF1E030E3167E7B7FC075147B7515C0907F9674EFF07516011208C1907C31E030E3167E7C7F00751417
-:401006007C751500907F9674DFF07516021208C1907C71E030E3167E7C7F4075147C751540907F9674BFF07516041208C1907CB1E030E3167E7C7F8075147C751580907F37
-:4010460096747FF07516081208C10511E511540FF518701F907841E054F7F0907F99E0F517907841E04408F0907F99E0F4F51212112122E518B40104120C7322907FC2E018
-:4010860020E108E5136004120E1222120C7322787FE4F6D8FD7581370210DC021229E493A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F44207E
-:4010C600C8834004F456800146F6DFE4800B0102040810204080901850E47E019360BCA3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE493A3F8A2
-:40110600E493A3C8C582C8CAC583CAF0A3C8C582C8CAC583CADFE9DEE780BE907FD2E030E1030211AAC209907B40E014602614603B14605024836064248070637E7B7FC01C
-:4011460075147B7515C0907F9674EFF0751601120046804B7E7C7F0075147C751500907F9674DFF075160212004680337E7C7F4075147C751540907F9674BFF075160412FB
-:401186000046801B7E7C7F8075147C751580907F96747FF0751608120046800312175CE4907FD3F022BB010689828A83E0225002E722BBFE02E32289828A83E49322BB0189
-:4011C6000CE58229F582E5833AF583E0225006E92582F8E622BBFE06E92582F8E222E58229F582E5833AF583E49322BB010689828A83F0225002F722BBFE01F322D083D086
-:4012060082F8E4937012740193700DA3A393F8740193F5828883E4737402936860EFA3A3A380DF907FAEE0FFD39200E433FEEF4EF0D2E843D820907FDE7401F0907FDFF08E
-:40124600907FAB74FFF0907FA9F0907FAAF05391EF907FAF7401F0907FAE740DF0D2AFD20B121814C201E4F52BF531C207C2027529F0907FD8E06526600675320FE0F526C9
-:40128600300203120FD9300107C20112062980E23008DFC20812183580D822E5135516606AE515243AF582E43514F583E0705CE516F45213E5152426FFE43514FEE4FD0FA2
-:4012C600EFAA0670010E14F5828A83E0FC74802DF582E4347BF583ECF00DBD0BE2907FC3740BF0E515243AF582E43514F5837410F0E515242EF582E43514F583E4F0E515C1
-:40130600242FF582E43514F583E4F022E52845276057AE27AF28D3EF9440EE940040047E007F40C3E5289FF528E5279EF527E4FDEDC39FE49E501F853482853383E0FC7494
-:40134600002DF582E4347FF583ECF00D0534E5347002053380DA907FA97401F0907FACE04401F0907FB5EFF022907FACE054FEF0E4907FB5F022E4907F93F0907F9C74F0A7
-:40138600F0907F96F0E490784AF0907F94F0907F9D74FFF0E4907F97F0300007E52954F0FF80027F00EF4408907841F0E4907F98F0907F95F0907F9E74FFF0E4907F98F0C9
-:4013C600907F93F0907F9C74F0F0E4907F96F0907F92E054FDF0228F1A052DE52DAE2C7002052C14F5828E83E51AF01218F0052DE52DAC2C7002052C14F5828C83EFF0159D
-:4014060023E523601FE5152438F582E43514F583C083C082E0FE1218D88F1AEE4FD082D083F080B5228F1AE4F51B751CFF751D19751E86AB1CAA1DA91E9000011211C4B4E1
-:40144600031DAF1B051BEFB51A01221211AB7E0029FFEE3AA907751CFFF51D891E80D47B007A00790022E4907841F090784F74C0F0E4907850F0E52C907851F0AE2CE52DF8
-:40148600907852F0907854E523F09078577404F0907FE2E04410F0E054F7F0E4907855F0907855E060FA22E4907841F0E52C90784FF0AE2CE52D907850F090785174C0F081
-:4014C600E4907852F0907854E523F09078577404F0E4907855F0907855E060FA22E5152404F582E43514F583E014600F1460131460178000907FC7EFF08013907FC9EFF081
-:40150600800C907FCBEFF08005907FCDEFF0E516422A22E5152404F582E43514F583E014600F1460131460178000907FB7EFF08013907FB9EFF0800C907FBBEFF08005903B
-:401546007FBDEFF0E516422A22AE07E4FFE5152432F582E43514F583E0547FFD1216479078417401F090C000EEF0E4E5152432F582E43514F583E04480FD12164722C0E0A0
-:40158600C0F0C083C082C085C084C086758600C0D075D0085391EF907FA97401F0121312D0D0D086D084D085D082D083D0F0D0E0329078417403F090C00074BFF0907841D0
-:4015C6007402F090C000EFF09078417403F0E5152437F582E43514F583E0547F90C000F0229078417403F090C00074BFF09078417404F090C000EFF09078417403F0E5156D
-:401606002437F582E43514F583E0547F90C000F0229078417403F090C00074BFF09078417406F090C000EFF09078417403F0E5152437F582E43514F583E0547F90C000F0FF
-:40164600229078417403F0E5152437F582E43514F583E0547F90C000F09078417407F090C000EFF09078417405F090C000EDF0229078417403F090C00074BFF0E4907841FA
-:40168600F090C000EFF09078417403F0E5152437F582E43514F583E0547F90C000F022E5152404F582E43514F583E014600E1460111460148000907FC6E0FF22907FC8E015
-:4016C600FF22907FCAE0FF22907FCCE0FF22E5152404F582E43514F583E014600E1460111460148000907FB6E0FF22907FB8E0FF22907FBAE0FF22907FBCE0FF22E515249E
-:4017060004F582E43514F583E014600E1460111460148000907FC7E0FF22907FC9E0FF22907FCBE0FF22907FCDE0FF22C0E0C083C082C085C084C086758600907FC4E4F096
-:401746005391EF907FAB7404F0D086D084D085D082D083D0E032907B41E0F536431310A3E06009907FD77417F07437F0907B43E0F537A3E054F0F529E06002D20A22C0E024
-:40178600C083C082C085C084C086758600D2015391EF907FAB7401F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D2085391EF907FAB7408F0D0F7
-:4017C60086D084D085D082D083D0E0321218C0AE071218C0AD07EE6D60101218C0AE07EE6D60071218C0AD0780ECAF06227400F58690FDA57C05A3E582458370F922907FD5
-:40180600D6E04480F0438701000000000022907FD6E04404F0E04408F0300B04E04402F07FF47E0112186B907FD6E054F7F02212137C121804907FD6E030E70A7F057E007D
-:4018460012186B12189E120AB8220335800000032E810000C185C181C108C100C106012200012400008E188F19E5191519AE18700215184E60081217F31217F380EB22E545
-:40188600152404F582E43514F583E004FF4410907FD7F0EF4430F022907FD6E04401F07F0D7E0012186B907FD6E054FEF0229078417402F090C000E0FF229078417403F0D5
-:4018C60090C000E0FF229078417404F090C000E0FF229078417405F090C000E0FF229078417406F090C000E0FF22E4907841F090C000E0FF2253D8EF320012011001FF00AB
-:401906000040CD060A0100000102000409027400010100A032090400000EFF000000070501024000000705020240000007050302400000070504024000000705050240007A
-:4019460000070506024000000705070240000007058102400001070582024000010705830240000107058402400001070585024000010705860240000107058702400001F3
-:401986000403090448034B00650079007300700061006E002C002000610020006400690076006900730069006F006E0020006F006600200049006E006E006F005300790040
-:4019C6007300200049006E0063002E003603550053004200200034002D0070006F00720074002000530065007200690061006C00200041006400610070007400650072003C
-:401A060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0
-:401A46000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060
-:401A86000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020
-:401AC6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002178400021B26
-:151B06000400021732000217AB00021B1000021B1400021584BE
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2001
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
diff --git a/firmware/keyspan/usa49wlc.HEX b/firmware/keyspan/usa49wlc.HEX
deleted file mode 100644
index 8406eb1bf373..000000000000
--- a/firmware/keyspan/usa49wlc.HEX
+++ /dev/null
@@ -1,153 +0,0 @@
-:017F920001ED
-:030033000218FBB5
-:0D003600E51104907841F090C000E0FF2239
-:10004600E4FF74402FF582E4347BF583E0FEE5158A
-:100056002404FDE43514FAA9057B01EF7C0029F997
-:10006600EC3AFAEE1211EC0FBF22D7E5152405F58E
-:1000760082E43514F583E07003020134E5152409A2
-:10008600F582E43514F583E0700EE515240AF58251
-:10009600E43514F583E060187F01E4FD12166BE584
-:1000A600152431F582E43514F583E054CFF0804110
-:1000B600E5152406F582E43514F583E0FF12000306
-:1000C600E5152407F582E43514F583E0FF1215AB38
-:1000D6007F01E5152408F582E43514F583E0FD1269
-:1000E600166BE5152431F582E43514F583E04430CA
-:1000F600F0E5152439F582E43514F583E04480F003
-:1000030090784174F3F090C00074BFF0907841741D
-:10001300F0F090C000EFF090784174F3F0E5152410
-:1000230037F582E43514F583E0547F90C000F02265
-:03004300021B009D
-:030000000210905B
-:4001060090784174F4F0E5152439F582E43514F583E090C000F090784174F2F0E5152436F582E43514F583E0440690C000F0E515240BF582E43514F583E06032E515240C2B
-:40014600F582E43514F583E0543FFFE5152437F582E43514F583EFF090784174F3F0E5152437F582E43514F583E090C000F0E515240DF582E43514F583E0700302024FE598
-:40018600152417F582E43514F583E06011E5152432F582E43514F583E04404F0800FE5152432F582E43514F583E054FBF0E4FFE5152432F582E43514F583E0FD12166BE53A
-:4001C60015240EF582E43514F583E06011E5152433F582E43514F583E04480F0800FE5152433F582E43514F583E0547FF0E5152433F582E43514F583E054FCF0E515240FEB
-:40020600F582E43514F583E0602FE5152433F582E43514F583E04402F0E5152410F582E43514F583E0FF12160BE5152411F582E43514F583E0FF12163BE5152433F582E415
-:400246003514F583E0FF1215DBE5152414F582E43514F583E06044E5152415F582E43514F583E06011E5152439F582E43514F583E04401F0800FE5152439F582E43514F55D
-:4002860083E054FEF090784174F4F0E5152439F582E43514F583E090C000F0E5152412F582E43514F583E06044E5152413F582E43514F583E06011E5152439F582E43514F6
-:4002C600F583E04402F0800FE5152439F582E43514F583E054FDF090784174F4F0E5152439F582E43514F583E090C000F0E5152416F582E43514F583E0FFE5152435F5821A
-:40030600E43514F583EFF0E5152417F582E43514F583E030E011E5152431F582E43514F583E04440F0800FE5152431F582E43514F583E054BFF0E5152418F582E43514F576
-:4003460083E0FFE515243BF582E43514F583EFF0E5152419F582E43514F583E06011E5152439F582E43514F583E04410F0800FE5152439F582E43514F583E054EFF0907869
-:400386004174F4F0E5152439F582E43514F583E090C000F0E515241AF582E43514F583E0606BE5152437F582E43514F583E054BFF090784174F3F0E5152437F582E435141F
-:4003C600F583E0547F90C000F090784174F1F0120036EF54FE90C000F0E5152432F582E43514F583E054FDFFF0FDE4FF12166BE515242CF582E43514F583E4F0E515242BA3
-:40040600F582E43514F583E4F0E5164213E515241BF582E43514F583E0700EE5152425F582E43514F583E06028E5152432F582E43514F583E04402FFF0FDE4FF12166BE523
-:4004460015242BF582E43514F5837401F0E5164213E515241CF582E43514F583E0FF700EE5152425F582E43514F583E0602A90784174F2F0E5152436F582E43514F583E0D6
-:40048600440490C000F0EF600FE5152431F582E43514F583E04404F0E515241DF582E43514F583E06027E5152437F582E43514F583E04440F090784174F3F0E5152437F560
-:4004C60082E43514F583E0547F90C000F0E515241EF582E43514F583E06028E5152432F582E43514F583E054FEFFF0FDE4FF12166BE515242DF582E43514F5837401F0E56B
-:40050600164213E515241FF582E43514F583E0700EE5152425F582E43514F583E06027E5152432F582E43514F583E04401FFF0FDE4FF12166BE515242DF582E43514F58373
-:40054600E4F0E5164213E5152420F582E43514F583E0700EE5152425F582E43514F583E0601890784174F2F0E5152436F582E43514F583E0440290C000F0E5152421F582B7
-:40058600E43514F583E0600FE5152431F582E43514F583E04402F0E5152422F582E43514F583E0601FE515242EF582E43514F5837401F0E515243AF582E43514F583E4F0F0
-:4005C600E5164213E5152423F582E43514F583E0600312187AE5152424F582E43514F583E06023E5152431F582E43514F583E04408F0E516C454F0FF4211907F96E04FF000
-:40060600907841E04FF0E5152425F582E43514F583E06024E5152431F582E43514F583E054F7F0E516C454F0F4FF5211907F96E05FF0907841E05FF022907FE9E01211FE43
-:40064600079900080D01087903066206078A08077E0907660A07750B000008C8907FEBE024FE601C1470030207142402600302075C7419907FD4F07400907FD5F00208CF4C
-:40068600907FEAE004758217758319F0907FEAE030E0047F0280027F03758282758319EFF075826D758319F0758266758319F075825F758319F0758258758319F0907FEA0A
-:4006C600E030E1047F6480027F3275821A758319EFF0907FEFE0FE907FEEE07C002400F518EC3EF517753319753412758214758319E0752700F528D3E5289518E5279517D6
-:40070600400685172785182812130D0208CF907FEAE0FF12145FEA496032907FEEE0751700F518AE02AF018E338F348F828E83E0FEA3E08E27F528D39518E527951740068B
-:4007460085172785182812130D0208CF907FB4E04401F00208CF907FB4E04401F00208CF907F00E525F0907FB57401F00208CF907FEAE0F5250208CF907FEAE0F522120A9B
-:40078600CE0208CF907F00E522F0907FB57401F00208CF907FE8E0247F60241460312402705BA200E433FF25E0FFA206E4334F907F00F0E4A3F0907FB57402F00208CFE4C9
-:4007C600907F00F0A3F0907FB57402F00208CF907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF583E054FD907F00F0E4A3F0907FB57402F00208CF907FB45C
-:40080600E04401F00208CF907FE8E024FE601D240260030208CF907FEAE0B40105C2000208CF907FB4E04401F00208CF907FEAE07038907FECE0F45480FFC4540FFFE05490
-:40084600072F25E024B4F582E4347FF583E4F0907FECE05480FF131313541FFFE054072F907FD7F0E04420F0805F907FB4E04401F08056907FE8E024FE60182402704A90CA
-:400886007FEAE0B40104D200803F907FB4E04401F08036907FEAE07020907FECE0F45480FFC4540FFFE054072F25E024B4F582E4347FF5837401F08010907FB4E04401F046
-:4008C6008007907FB4E04401F0907FB4E04402F022E512540F70030209C812169AEF20E1751216F8EF14F5181218C5EF2518FFE433FEC3EF9480EE64809480505985158201
-:40090600851483E0FEA3E0FFF5828E83E030E011E5152431F582E43514F583E04480F0800FE5152431F582E43514F583E0547FF0E5152431F582E43514F583E020E212E5CC
-:4009460018600EF523EF2401F52DE43EF52C1214A0E4FF1214D7E5152431F582E43514F583E030E75D1218C5E515243BF582E43514F583E0FEEFC39E5048E515242FF58207
-:40098600E43514F5837401F0E5152431F582E43514F583E0547BF0E515243AF582E43514F583E4F0E5164213907FC2E030E110E5152426F582E43514F583E0F524800312C5
-:4009C600129C1216C9EF30E103020ACD1217C78F181218D3E5152438F582E43514F583EFF0E5152435F582E43514F583E0FFE518C39F50281218A9EF30E021E5152438F52E
-:400A060082E43514F583E020E712E5152431F582E43514F583E020E103020ACDE5152431F582E43514F583E054FDF0E5187003020ACDB4800FE5152438F582E43514F583DE
-:400A4600E04402F0E5152438F582E43514F583E0FF30E729E518D394204003751820851823851582851483A3A3E0FCA3E08C2CF52D1213CFE51825E0FF12150D22E518D3C3
-:400A8600943F400375183F851823E5152438F582E43514F583E0FF851582851483A3A3E0FCA3E0F5828C83EFF0851582851483A3A3E0FEA3E02401F52DE43EF52C12141D4F
-:400AC600E51804FF12150D22E4907F93F0907F9C74FFF0E4907F96F0907F94F090784A04F0F58E907F9574C0F0907F9E743FF0907F98742FF090784374F7F0E4907841F02C
-:400B0600907FDF749FF0907FDEF0907F92E04402F07E7B7FC075147B7515C0907F98742EF0751601120F287E7B7FC075147B7515C0907F98742EF0751601E5152426F58290
-:400B4600E43514F583E4F07E7E7F40851582851483747EF0A37440F07E7E7F80851582851483A3A3747EF0A37480F07E7C7F0075147C751500907F98742DF0751602120F0A
-:400B8600287E7C7F0075147C751500907F98742DF0751602E5152426F582E43514F5837401F07E7D7FC0851582851483747DF0A374C0F07E7E7F00851582851483A3A374EE
-:400BC6007EF0A37400F07E7C7F4075147C751540907F98742BF0751604120F287E7C7F4075147C751540907F98742BF0751604E5152426F582E43514F5837402F07E7D7F57
-:400C060040851582851483747DF0A37440F07E7D7F80851582851483A3A3747DF0A37480F07E7C7F8075147C751580907F987427F0751608120F287E7C7F8075147C751590
-:400C460080907F987427F0751608E5152426F582E43514F5837403F07E7C7FC0851582851483747CF0A374C0F07E7D7F00851582851483A3A3747DF0A37400F0C20AC209D3
-:400C8600E4F511D20222E510045403F51014601F146031146043240370527E7B7FC075147B7515C0907F98742EF0751601803D7E7C7F0075147C751500907F98742DF07564
-:400CC600160280287E7C7F4075147C751540907F98742BF075160480137E7C7F8075147C751580907F987427F0751608E53255167003020E27E516F45232E526547FFF7095
-:400D060017E52A55166034907F96E0FEE516C454F0F4FDEE5DF08023BF2020E5152431F582E43514F583E030E311E4F52A907F96E0FFE516C454F0FEEF4EF0E515243AF5C3
-:400D460082E43514F583E06003E014F0E5152434F582E43514F583E06003E014F0E06003020E27740AF0120036EF5401FFF518E515242CF582E43514F583E06F6007E518F1
-:400D8600F0E51642131218E18F18E5152427F582E43514F583E0FFE5185410FE6F6006EEF0E5164213E5152428F582E43514F583E0FFE5185480FE6F6006EEF0E516421386
-:400DC600E5152429F582E43514F583E0FFE5185420FE6F6015EEF0E5152431F582E43514F583E030E404E5164213E515242AF582E43514F583E0FFE5185440FE6F6015EE23
-:400E0600F0E5152431F582E43514F583E030E504E5164213E5152430F582E43514F583E4F022300903020F27E52414602A14604114605814606F24046003020EE57E7B7F31
-:400E4600C075147B7515C0907F98742EF075160112129C752401227E7C7F0075147C751500907F98742DF075160212129C752402227E7C7F4075147C751540907F98742B05
-:400E8600F075160412129C752403227E7C7F8075147C751580907F987427F075160812129C75240422300433C2045313DFE4F5187E007B00742E2518F9EE3400FA1211A6CA
-:400EC600FF74802518F582E4347BF583EFF00518E518B403DB907FC37403F075240522E536603BD5360A5313EF300A04D209C20AE4F5187E007B0074352518F9EE3400FACC
-:400F06001211A6FF74802518F582E4347BF583EFF00518E518B403DB907FC37403F0E4F52422E4F5197E007B01E5152519F9EE3514FAE41211EC0519E519B43CE8E51524FA
-:400F460035F582E43514F5837401F090784174F3F0E5152437F582E43514F5837403F090C000F07F0CE4FD12166B7F10E5152433F582E43514F583EFF01215DB9078417464
-:400F8600F2F07F01E5152436F582E43514F583EFF0440690C000F090784174F4F0E5152439F582E43514F5837480F090C000F00FE4FD12166BE4FF7EA3E5152432F582E486
-:400FC6003514F583EEF0FD12166B90784174F1F090C000E4F07F057D7F12166B7F011215437F037D0712166B2253133F907BF1E030E3167E7B7FC075147B7515C0907F986B
-:40100600742EF07516011208D7907C31E030E3167E7C7F0075147C751500907F98742DF07516021208D7907C71E030E3167E7C7F4075147C751540907F98742BF0751604C4
-:401046001208D7907CB1E030E3167E7C7F8075147C751580907F987427F07516081208D70512E512540FF517700412111C22E517B40104120C8C22907FC2E020E108E51370
-:401086006004120E2822120C8C22787FE4F6D8FD7581370210D7021224E493A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F4420C8834004F4D7
-:4010C60056800146F6DFE4800B0102040810204080901845E47E019360BCA3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE493A3F8E493A3C8C589
-:4011060082C8CAC583CAF0A3C8C582C8CAC583CADFE9DEE780BE907FD2E030E1030211A5C209907B40E014602614603B14605024836064248070637E7B7FC075147B75153A
-:40114600C0907F98742EF0751601120046804B7E7C7F0075147C751500907F98742DF075160212004680337E7C7F4075147C751540907F98742BF0751604120046801B7E2B
-:401186007C7F8075147C751580907F987427F07516081200468003121751E4907FD3F022BB010689828A83E0225002E722BBFE02E32289828A83E49322BB010CE58229F5B8
-:4011C60082E5833AF583E0225006E92582F8E622BBFE06E92582F8E222E58229F582E5833AF583E49322BB010689828A83F0225002F722BBFE01F322D083D082F8E49370B6
-:4012060012740193700DA3A393F8740193F5828883E4737402936860EFA3A3A380DF907FAEE0FFD39200E433FEEF4EF0D2E843D820907FDE7401F0907FDFF0907FAB74FFC2
-:40124600F0907FA9F0907FAAF05391EF907FAF7401F0907FAE740DF0D2AFD20B121809C201E4F52BF531C207C20275290F907FD8E06526600675320FE0F526300203120F8C
-:40128600EF300107C20112063F80E23008DFC20812182A80D822E5135516606AE515243AF582E43514F583E0705CE516F45213E5152426FFE43514FEE4FD0FEFAA067001C7
-:4012C6000E14F5828A83E0FC74802DF582E4347BF583ECF00DBD0BE2907FC3740BF0E515243AF582E43514F5837410F0E515242EF582E43514F583E4F0E515242FF582E423
-:401306003514F583E4F022E52845276057AE27AF28D3EF9440EE940040047E007F40C3E5289FF528E5279EF527E4FDEDC39FE49E501F853482853383E0FC74002DF582E4BA
-:40134600347FF583ECF00D0534E5347002053380DA907FA97401F0907FACE04401F0907FB5EFF022907FACE054FEF0E4907FB5F022907F98740FF0E490784AF0907F94F0E1
-:40138600907F9D74FFF0E4907F97F0907841F0907F93F0907F9C74FFF0300007E529540FFF80027F00907F96EFF0907F98741FF0E4907F95F0907F9E743FF0907F9874DFAD
-:4013C600F0907F92E054FDF0228F19052DE52DAE2C7002052C14F5828E83E519F01218EF052DE52DAC2C7002052C14F5828C83EFF01523E523601FE5152438F582E4351416
-:40140600F583C083C082E0FE1218D38F19EE4FD082D083F080B522907841E511F090784F74C0F0E4907850F0E52C907851F0AE2CE52D907852F0907854E523F09078577470
-:4014460004F0907FE2E04410F0E054F7F0E4907855F0907855E060FA228F19E4F51A751BFF751C19751D86AB1BAA1CA91D9000011211BFB4031DAF1A051AEFB519012212F9
-:4014860011A67E0029FFEE3AA907751BFFF51C891D80D47B007A00790022907841E511F0E52C90784FF0AE2CE52D907850F090785174C0F0E4907852F0907854E523F0907D
-:4014C60078577404F0E4907855F0907855E060FA22E5152404F582E43514F583E014600F1460131460178000907FC7EFF08013907FC9EFF0800C907FCBEFF08005907FCDED
-:40150600EFF0E516422A22E5152404F582E43514F583E014600F1460131460178000907FB7EFF08013907FB9EFF0800C907FBBEFF08005907FBDEFF0E516422A22AE07E4A4
-:40154600FFE5152432F582E43514F583E0547FFD12166B90784174F1F090C000EEF0E4E5152432F582E43514F583E04480FD12166B22C0E0C0F0C083C082C085C084C086A1
-:40158600758600C0D075D0085391EF907FA97401F012130DD0D0D086D084D085D082D083D0F0D0E03290784174F3F090C00074BFF090784174F1F090C000EFF090784174A8
-:4015C600F3F0E5152437F582E43514F583E0547F90C000F02290784174F3F090C00074BFF090784174F2F090C000EFF090784174F3F0E5152437F582E43514F583E0547FD7
-:4016060090C000F02290784174F3F090C00074BFF090784174F4F090C000EFF090784174F3F0E5152437F582E43514F583E0547F90C000F02290784174F3F090C00074BF16
-:40164600F090784174F6F090C000EFF090784174F3F0E5152437F582E43514F583E0547F90C000F02290784174F3F0E5152437F582E43514F583E0547F90C000F09078412F
-:4016860074F7F090C000EFF090784174F5F090C000EDF022E5152404F582E43514F583E014600E1460111460148000907FC6E0FF22907FC8E0FF22907FCAE0FF22907FCC19
-:4016C600E0FF22E5152404F582E43514F583E014600E1460111460148000907FB6E0FF22907FB8E0FF22907FBAE0FF22907FBCE0FF22E5152404F582E43514F583E0146000
-:401706000E1460111460148000907FC7E0FF22907FC9E0FF22907FCBE0FF22907FCDE0FF22C0E0C083C082C085C084C086758600907FC4E4F05391EF907FAB7404F0D086BF
-:40174600D084D085D082D083D0E032907B41E0F536431310A3E06009907FD77417F07437F0907B43E0F537A3E054F0F529E06002D20A22C0E0C083C082C085C084C08675A6
-:401786008600D2015391EF907FAB7401F0D086D084D085D082D083D0E032C0E0C083C082C085C084C086758600D2085391EF907FAB7408F0D086D084D085D082D083D0E03C
-:4017C600321218B7AE071218B7AD07EE6D60101218B7AE07EE6D60071218B7AD0780ECAF06227400F58690FDA57C05A3E582458370F922907FD6E04480F043870100000048
-:40180600000022907FD6E04404F0E04408F0300B04E04402F07FF47E01121860907FD6E054F7F0221213771217F9907FD6E030E70A7F057E00121860121893120ACE220378
-:4018460035800000032E810000C185C181C108C100C106012200012400008E178F18E5181518AE17700215174E60081217E81217E880EB22E5152404F582E43514F583E07E
-:4018860004FF4410907FD7F0EF4430F022907FD6E04401F07F0D7E00121860907FD6E054FEF022E5112402907841F090C000E0FF22E5112403907841F090C000E0FF22E597
-:4018C600112404907841F090C000E0FF22E5112405907841F090C000E0FF22E5112406907841F090C000E0FF22907841E511F090C000E0FF2253D8EF320012011001FFFFDE
-:40190600FF40CD062A0100000102000409027400010100A032090400000EFF000000070501024000000705020240000007050302400000070504024000000705050240005B
-:4019460000070506024000000705070240000007058102400001070582024000010705830240000107058402400001070585024000010705860240000107058702400001F3
-:401986000403090448034B00650079007300700061006E002C002000610020006400690076006900730069006F006E0020006F006600200049006E006E006F005300790040
-:4019C6007300200049006E0063002E0024034B00650079007300700061006E0020005500530041002D003400390057004C00430022035500530041002D00360035002000B5
-:401A060032003000300033006A0061006E0033003100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E
-:401A46000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060
-:401A86000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020
-:401AC6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002177900021B31
-:151B06000400021727000217A000021B1000021B1400021578E0
-:00000001FF
-
- The firmware contained herein is
-
- Copyright (C) 1999-2003
- Keyspan, A division of InnoSys Incorporated ("Keyspan")
-
- as an unpublished work. This notice does not imply unrestricted or
- public access to the source code from which this firmware image is
- derived. Except as noted below this firmware image may not be
- reproduced, used, sold or transferred to any third party without
- Keyspan's prior written consent. All Rights Reserved.
-
- Permission is hereby granted for the distribution of this firmware
- image as part of a Linux or other Open Source operating system kernel
- in text or binary form as required.
-
- This firmware may not be modified and may only be used with
- Keyspan hardware. Distribution and/or Modification of the
- keyspan.c driver which includes this firmware, in whole or in
- part, requires the inclusion of this statement."
-
-static char theFirmwareDate49[] =
- "02/14/2002 02:37p 19,347 USA49";
-
-static char theFirmwareDate65[] =
- "01/31/2003 09:34a 19,331 USA65";
-
diff --git a/firmware/keyspan_pda/keyspan_pda.HEX b/firmware/keyspan_pda/keyspan_pda.HEX
deleted file mode 100644
index 6fcf02bb4b2d..000000000000
--- a/firmware/keyspan_pda/keyspan_pda.HEX
+++ /dev/null
@@ -1,83 +0,0 @@
-:03000000020200F9
-:0400230002055F0073
-:0400430002010000B6
-:050030000000000000CB
-:10010000020296000200000002000000020000004F
-:1001100002000000020000000200000002000000D7
-:1001200002000000020000000204610002048900D5
-:1002000075815EE4F532F533F530F531F534C20031
-:10021000C201A90074FE901000F0A3D9FC74FD90F7
-:100220001100F0A3D9FC7402907F9DF07400907FC0
-:1002300097F07486907F9EF0907F957403F0907F86
-:10024000AFE0D2E0F07401907FABF0907FAEF09021
-:100250007FAC7404F0907FAD7404F0907FC9F074AB
-:1002600084907F98F07400F59875C8307B059120D4
-:10027000D2CA759850D2E8D2AFD2AC7400F586904D
-:100280007FD67402F0792E7A007B00DBFEDAFAD991
-:10029000F67406F080FEC086C082C083C084C0852C
-:1002A000C0E0E591C2E4F591907FAB7401F0907FDE
-:1002B000E8E0F9A3E0FAA3E0FBA3E0FCE95460B4B2
-:1002C0000003020339B4406EBA000B12042040034D
-:1002D00002040202040ABA010302040ABA02030277
-:1002E000040ABA0303020444BA041EBB000A907F46
-:1002F00095E04402F0020402907F98E054FDF090F3
-:100300007F95E054FDF0020402BA050302040ABA24
-:100310000619BB0008E533D395320203DEBB0108A2
-:10032000E532C395330203DE02040ABA07058B34B3
-:1003300002040202040A02040ABA0020B9801090E2
-:100340007F00E4F0A3F0907FB57402F0020402B9DC
-:10035000820280EBB9810280E602040ABA010FBB77
-:10036000000302040ABB010302040202040ABA03E6
-:100370000FBB000302040ABB010302040202040AC9
-:10038000BA0656BC010F907FD47406F0907FD574E6
-:1003900012F0020402BC0212BB006F907FD47406FC
-:1003A000F0907FD57424F0020402BC03297404C3C6
-:1003B0009B40576055EB2B9006442582F5827400D4
-:1003C0003583F583E0F9A3E0FA907FD4E9F0907FDC
-:1003D000D5EAF002040202040ABA080F7401907F01
-:1003E00000F07401907FB5F0020402BA0903020420
-:1003F00002BA0A0574000203DEBA0B030204020209
-:10040000040A907FB47402F08009907FB4E0440144
-:10041000F08000D0E0D085D084D083D082D08632E6
-:10042000EB20E71EC3940A5019EB2324FEF58274D7
-:10043000053400F583E0F5CBF5CDA3E0F5CAF5CCA6
-:10044000C322D322B94111EB64FF5484FB907F98FF
-:10045000E0547B4BF0020402907F9BE064FF0203B8
-:10046000DEC086C082C083C084C085C0E0E591C282
-:10047000E4F591907FA97404F01205A0D0E0D08536
-:10048000D084D083D082D08632C086C082C083C060
-:1004900084C085C0E0E591C2E4F591907FAA740420
-:1004A000F0907FC9E0F9E4F586907DC075851085F0
-:1004B0003284E005860584F0E584B53302800905C1
-:1004C000320586A3D9EC8000907FC9F0B131D0E02D
-:1004D000D085D084D083D082D08632E4F586907FD8
-:1004E000BCE020E14B907D00E532F0A3E533F0A3C2
-:1004F000E530F0A3E531F0A3E430000104F0A305FA
-:10050000869010007910E0A30586F0A30586D9F641
-:10051000058674FCF0A305869011007910E0A30510
-:1005200086F0A30586D9F6E4F586907FBD7426F0A3
-:1005300022200013E532B53301220533758310857F
-:100540003382E0F599D2007400B5340122E533D34B
-:100550009532C3953440F5753400D2010205A0C030
-:1005600086C082C083C084C085C0E0309907C2992C
-:10057000C20012053430980512058AC298D0E0D026
-:1005800085D084D083D082D0863275831185308225
-:100590000582E599F0E582B53101220530B1A0224E
-:1005A000907FB8E020E138200136E530B5310122F6
-:1005B000E4F5867583110586907E00F0A3058679A3
-:1005C00001E530B5310280100531853182E00586C4
-:1005D000F0A3058609B940E9907FB9E96001F022EE
-:1005E000C201E4F586907E007401F0A37402F090DD
-:1005F0007FB9F022C299F5993099FDC29922E55E42
-:10060000F63CFD8FFEC8FF64FFB2FFD9FFEDFFF39C
-:10061000FFFA12010001FFFFFF40CD06040189AB84
-:1006200001020301090220000101008032090400D7
-:100630000002FFFFFF0007058203400001070502DB
-:1006400002400000064C0650067206A0040300009B
-:100650002203410043004D00450020007500730057
-:100660006200200077006900640067006500740084
-:1006700073002E03410043004D004500200055004B
-:1006800053004200200073006500720069006100A1
-:100690006C0020007700690064006700650074004A
-:0606A000060334003700E0
-:00000001FF
diff --git a/firmware/keyspan_pda/keyspan_pda.S b/firmware/keyspan_pda/keyspan_pda.S
deleted file mode 100644
index f3acc197a5ef..000000000000
--- a/firmware/keyspan_pda/keyspan_pda.S
+++ /dev/null
@@ -1,1124 +0,0 @@
-/* $Id: loop.s,v 1.23 2000/03/20 09:49:06 warner Exp $
- *
- * Firmware for the Keyspan PDA Serial Adapter, a USB serial port based on
- * the EzUSB microcontroller.
- *
- * (C) Copyright 2000 Brian Warner <warner@lothar.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * "Keyspan PDA Serial Adapter" is probably a copyright of Keyspan, the
- * company.
- *
- * This serial adapter is basically an EzUSB chip and an RS-232 line driver
- * in a little widget that has a DB-9 on one end and a USB plug on the other.
- * It uses the EzUSB's internal UART0 (using the pins from Port C) and timer2
- * as a baud-rate generator. The wiring is:
- * PC0/RxD0 <- rxd (DB9 pin 2) PC4 <- dsr pin 6
- * PC1/TxD0 -> txd pin 3 PC5 <- ri pin 9
- * PC2 -> rts pin 7 PC6 <- dcd pin 1
- * PC3 <- cts pin 8 PC7 -> dtr pin 4
- * PB1 -> line driver standby
- *
- * The EzUSB register constants below come from their excellent documentation
- * and sample code (which used to be available at www.anchorchips.com, but
- * that has now been absorbed into Cypress' site and the CD-ROM contents
- * don't appear to be available online anymore). If we get multiple
- * EzUSB-based drivers into the kernel, it might be useful to pull them out
- * into a separate .h file.
- *
- * THEORY OF OPERATION:
- *
- * There are two 256-byte ring buffers, one for tx, one for rx.
- *
- * EP2out is pure tx data. When it appears, the data is copied into the tx
- * ring and serial transmission is started if it wasn't already running. The
- * "tx buffer empty" interrupt may kick off another character if the ring
- * still has data. If the host is tx-blocked because the ring filled up,
- * it will request a "tx unthrottle" interrupt. If sending a serial character
- * empties the ring below the desired threshold, we set a bit that will send
- * up the tx unthrottle message as soon as the rx buffer becomes free.
- *
- * EP2in (interrupt) is used to send both rx chars and rx status messages
- * (only "tx unthrottle" at this time) back up to the host. The first byte
- * of the rx message indicates data (0) or status msg (1). Status messages
- * are sent before any data.
- *
- * Incoming serial characters are put into the rx ring by the serial
- * interrupt, and the EP2in buffer sent if it wasn't already in transit.
- * When the EP2in buffer returns, the interrupt prompts us to send more
- * rx chars (or status messages) if they are pending.
- *
- * Device control happens through "vendor specific" control messages on EP0.
- * All messages are destined for the "Interface" (with the index always 0,
- * so that if their two-port device might someday use similar firmware, we
- * can use index=1 to refer to the second port). The messages defined are:
- *
- * bRequest = 0 : set baud/bits/parity
- * 1 : unused
- * 2 : reserved for setting HW flow control (CTSRTS)
- * 3 : get/set "modem info" (pin states: DTR, RTS, DCD, RI, etc)
- * 4 : set break (on/off)
- * 5 : reserved for requesting interrupts on pin state change
- * 6 : query buffer room or chars in tx buffer
- * 7 : request tx unthrottle interrupt
- *
- * The host-side driver is set to recognize the device ID values stashed in
- * serial EEPROM (0x06cd, 0x0103), program this firmware into place, then
- * start it running. This firmware will use EzUSB's "renumeration" trick by
- * simulating a bus disconnect, then reconnect with a different device ID
- * (encoded in the desc_device descriptor below). The host driver then
- * recognizes the new device ID and glues it to the real serial driver code.
- *
- * USEFUL DOCS:
- * EzUSB Technical Reference Manual: <http://www.cypress.com/>
- * 8051 manuals: everywhere, but try www.dalsemi.com because the EzUSB is
- * basically the Dallas enhanced 8051 code. Remember that the EzUSB IO ports
- * use totally different registers!
- * USB 1.1 spec: www.usb.org
- *
- * HOW TO BUILD:
- * gcc -x assembler-with-cpp -P -E -o keyspan_pda.asm keyspan_pda.s
- * as31 -l keyspan_pda.asm
- * mv keyspan_pda.obj keyspan_pda.hex
- * perl ezusb_convert.pl keyspan_pda < keyspan_pda.hex > keyspan_pda_fw.h
- * Get as31 from <http://www.pjrc.com/tech/8051/index.html>, and hack on it
- * a bit to make it build.
- *
- * THANKS:
- * Greg Kroah-Hartman, for coordinating the whole usb-serial thing.
- * AnchorChips, for making such an incredibly useful little microcontroller.
- * KeySpan, for making a handy, cheap ($40) widget that was so easy to take
- * apart and trace with an ohmmeter.
- *
- * TODO:
- * lots. grep for TODO. Interrupt safety needs stress-testing. Better flow
- * control. Interrupting host upon change in DCD, etc, counting transitions.
- * Need to find a safe device id to use (the one used by the Keyspan firmware
- * under Windows would be ideal.. can anyone figure out what it is?). Parity.
- * More baud rates. Oh, and the string-descriptor-length silicon bug
- * workaround should be implemented, but I'm lazy, and the consequence is
- * that the device name strings that show up in your kernel log will have
- * lots of trailing binary garbage in them (appears as ????). Device strings
- * should be made more accurate.
- *
- * Questions, bugs, patches to Brian.
- *
- * -Brian Warner <warner@lothar.com>
- *
- */
-
-#define HIGH(x) (((x) & 0xff00) / 256)
-#define LOW(x) ((x) & 0xff)
-
-#define dpl1 0x84
-#define dph1 0x85
-#define dps 0x86
-
-;;; our bit assignments
-#define TX_RUNNING 0
-#define DO_TX_UNTHROTTLE 1
-
- ;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
-#define STACK #0x60-1
-
-#define EXIF 0x91
-#define EIE 0xe8
- .flag EUSB, EIE.0
- .flag ES0, IE.4
-
-#define EP0CS #0x7fb4
-#define EP0STALLbit #0x01
-#define IN0BUF #0x7f00
-#define IN0BC #0x7fb5
-#define OUT0BUF #0x7ec0
-#define OUT0BC #0x7fc5
-#define IN2BUF #0x7e00
-#define IN2BC #0x7fb9
-#define IN2CS #0x7fb8
-#define OUT2BC #0x7fc9
-#define OUT2CS #0x7fc8
-#define OUT2BUF #0x7dc0
-#define IN4BUF #0x7d00
-#define IN4BC #0x7fbd
-#define IN4CS #0x7fbc
-#define OEB #0x7f9d
-#define OUTB #0x7f97
-#define OEC #0x7f9e
-#define OUTC #0x7f98
-#define PINSC #0x7f9b
-#define PORTCCFG #0x7f95
-#define IN07IRQ #0x7fa9
-#define OUT07IRQ #0x7faa
-#define IN07IEN #0x7fac
-#define OUT07IEN #0x7fad
-#define USBIRQ #0x7fab
-#define USBIEN #0x7fae
-#define USBBAV #0x7faf
-#define USBCS #0x7fd6
-#define SUDPTRH #0x7fd4
-#define SUDPTRL #0x7fd5
-#define SETUPDAT #0x7fe8
-
- ;; usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
-
- .org 0
- ljmp start
- ;; interrupt vectors
- .org 23H
- ljmp serial_int
- .byte 0
-
- .org 43H
- ljmp USB_Jump_Table
- .byte 0 ; filled in by the USB core
-
-;;; local variables. These are not initialized properly: do it by hand.
- .org 30H
-rx_ring_in: .byte 0
-rx_ring_out: .byte 0
-tx_ring_in: .byte 0
-tx_ring_out: .byte 0
-tx_unthrottle_threshold: .byte 0
-
- .org 0x100H ; wants to be on a page boundary
-USB_Jump_Table:
- ljmp ISR_Sudav ; Setup Data Available
- .byte 0
- ljmp 0 ; Start of Frame
- .byte 0
- ljmp 0 ; Setup Data Loading
- .byte 0
- ljmp 0 ; Global Suspend
- .byte 0
- ljmp 0 ; USB Reset
- .byte 0
- ljmp 0 ; Reserved
- .byte 0
- ljmp 0 ; End Point 0 In
- .byte 0
- ljmp 0 ; End Point 0 Out
- .byte 0
- ljmp 0 ; End Point 1 In
- .byte 0
- ljmp 0 ; End Point 1 Out
- .byte 0
- ljmp ISR_Ep2in
- .byte 0
- ljmp ISR_Ep2out
- .byte 0
-
-
- .org 0x200
-
-start: mov SP,STACK-1 ; set stack
- ;; clear local variables
- clr a
- mov tx_ring_in, a
- mov tx_ring_out, a
- mov rx_ring_in, a
- mov rx_ring_out, a
- mov tx_unthrottle_threshold, a
- clr TX_RUNNING
- clr DO_TX_UNTHROTTLE
-
- ;; clear fifo with "fe"
- mov r1, 0
- mov a, #0xfe
- mov dptr, #tx_ring
-clear_tx_ring_loop:
- movx @dptr, a
- inc dptr
- djnz r1, clear_tx_ring_loop
-
- mov a, #0xfd
- mov dptr, #rx_ring
-clear_rx_ring_loop:
- movx @dptr, a
- inc dptr
- djnz r1, clear_rx_ring_loop
-
-;;; turn on the RS-232 driver chip (bring the STANDBY pin low)
- ;; set OEB.1
- mov a, #02H
- mov dptr,OEB
- movx @dptr,a
- ;; clear PB1
- mov a, #00H
- mov dptr,OUTB
- movx @dptr,a
- ;; set OEC.[127]
- mov a, #0x86
- mov dptr,OEC
- movx @dptr,a
- ;; set PORTCCFG.[01] to route TxD0,RxD0 to serial port
- mov dptr, PORTCCFG
- mov a, #0x03
- movx @dptr, a
-
- ;; set up interrupts, autovectoring
- mov dptr, USBBAV
- movx a,@dptr
- setb acc.0 ; AVEN bit to 0
- movx @dptr, a
-
- mov a,#0x01 ; enable SUDAV: setup data available (for ep0)
- mov dptr, USBIRQ
- movx @dptr, a ; clear SUDAVI
- mov dptr, USBIEN
- movx @dptr, a
-
- mov dptr, IN07IEN
- mov a,#0x04 ; enable IN2 int
- movx @dptr, a
-
- mov dptr, OUT07IEN
- mov a,#0x04 ; enable OUT2 int
- movx @dptr, a
- mov dptr, OUT2BC
- movx @dptr, a ; arm OUT2
-
- mov a, #0x84 ; turn on RTS, DTR
- mov dptr,OUTC
- movx @dptr, a
- ;; setup the serial port. 9600 8N1.
- mov a,#01010011 ; mode 1, enable rx, clear int
- mov SCON, a
- ;; using timer2, in 16-bit baud-rate-generator mode
- ;; (xtal 12MHz, internal fosc 24MHz)
- ;; RCAP2H,RCAP2L = 65536 - fosc/(32*baud)
- ;; 57600: 0xFFF2.F, say 0xFFF3
- ;; 9600: 0xFFB1.E, say 0xFFB2
- ;; 300: 0xF63C
-#define BAUD 9600
-#define BAUD_TIMEOUT(rate) (65536 - (24 * 1000 * 1000) / (32 * rate))
-#define BAUD_HIGH(rate) HIGH(BAUD_TIMEOUT(rate))
-#define BAUD_LOW(rate) LOW(BAUD_TIMEOUT(rate))
-
- mov T2CON, #030h ; rclk=1,tclk=1,cp=0,tr2=0(enable later)
- mov r3, #5
- acall set_baud
- setb TR2
- mov SCON, #050h
-
-#if 0
- mov r1, #0x40
- mov a, #0x41
-send:
- mov SBUF, a
- inc a
- anl a, #0x3F
- orl a, #0x40
-; xrl a, #0x02
-wait1:
- jnb TI, wait1
- clr TI
- djnz r1, send
-;done: sjmp done
-
-#endif
-
- setb EUSB
- setb EA
- setb ES0
- ;acall dump_stat
-
- ;; hey, what say we RENUMERATE! (TRM p.62)
- mov a, #0
- mov dps, a
- mov dptr, USBCS
- mov a, #0x02 ; DISCON=0, DISCOE=0, RENUM=1
- movx @dptr, a
- ;; now presence pin is floating, simulating disconnect. wait 0.5s
- mov r1, #46
-renum_wait1:
- mov r2, #0
-renum_wait2:
- mov r3, #0
-renum_wait3:
- djnz r3, renum_wait3
- djnz r2, renum_wait2
- djnz r1, renum_wait1 ; wait about n*(256^2) 6MHz clocks
- mov a, #0x06 ; DISCON=0, DISCOE=1, RENUM=1
- movx @dptr, a
- ;; we are back online. the host device will now re-query us
-
-
-main: sjmp main
-
-
-
-ISR_Sudav:
- push dps
- push dpl
- push dph
- push dpl1
- push dph1
- push acc
- mov a,EXIF
- clr acc.4
- mov EXIF,a ; clear INT2 first
- mov dptr, USBIRQ ; clear USB int
- mov a,#01h
- movx @dptr,a
-
- ;; get request type
- mov dptr, SETUPDAT
- movx a, @dptr
- mov r1, a ; r1 = bmRequestType
- inc dptr
- movx a, @dptr
- mov r2, a ; r2 = bRequest
- inc dptr
- movx a, @dptr
- mov r3, a ; r3 = wValueL
- inc dptr
- movx a, @dptr
- mov r4, a ; r4 = wValueH
-
- ;; main switch on bmRequest.type: standard or vendor
- mov a, r1
- anl a, #0x60
- cjne a, #0x00, setup_bmreq_type_not_standard
- ;; standard request: now main switch is on bRequest
- ljmp setup_bmreq_is_standard
-
-setup_bmreq_type_not_standard:
- ;; a still has bmreq&0x60
- cjne a, #0x40, setup_bmreq_type_not_vendor
- ;; Anchor reserves bRequest 0xa0-0xaf, we use small ones
- ;; switch on bRequest. bmRequest will always be 0x41 or 0xc1
- cjne r2, #0x00, setup_ctrl_not_00
- ;; 00 is set baud, wValue[0] has baud rate index
- lcall set_baud ; index in r3, carry set if error
- jc setup_bmreq_type_not_standard__do_stall
- ljmp setup_done_ack
-setup_bmreq_type_not_standard__do_stall:
- ljmp setup_stall
-setup_ctrl_not_00:
- cjne r2, #0x01, setup_ctrl_not_01
- ;; 01 is reserved for set bits (parity). TODO
- ljmp setup_stall
-setup_ctrl_not_01:
- cjne r2, #0x02, setup_ctrl_not_02
- ;; 02 is set HW flow control. TODO
- ljmp setup_stall
-setup_ctrl_not_02:
- cjne r2, #0x03, setup_ctrl_not_03
- ;; 03 is control pins (RTS, DTR).
- ljmp control_pins ; will jump to setup_done_ack,
- ; or setup_return_one_byte
-setup_ctrl_not_03:
- cjne r2, #0x04, setup_ctrl_not_04
- ;; 04 is send break (really "turn break on/off"). TODO
- cjne r3, #0x00, setup_ctrl_do_break_on
- ;; do break off: restore PORTCCFG.1 to reconnect TxD0 to serial port
- mov dptr, PORTCCFG
- movx a, @dptr
- orl a, #0x02
- movx @dptr, a
- ljmp setup_done_ack
-setup_ctrl_do_break_on:
- ;; do break on: clear PORTCCFG.0, set TxD high(?) (b1 low)
- mov dptr, OUTC
- movx a, @dptr
- anl a, #0xfd ; ~0x02
- movx @dptr, a
- mov dptr, PORTCCFG
- movx a, @dptr
- anl a, #0xfd ; ~0x02
- movx @dptr, a
- ljmp setup_done_ack
-setup_ctrl_not_04:
- cjne r2, #0x05, setup_ctrl_not_05
- ;; 05 is set desired interrupt bitmap. TODO
- ljmp setup_stall
-setup_ctrl_not_05:
- cjne r2, #0x06, setup_ctrl_not_06
- ;; 06 is query room
- cjne r3, #0x00, setup_ctrl_06_not_00
- ;; 06, wValue[0]=0 is query write_room
- mov a, tx_ring_out
- setb c
- subb a, tx_ring_in ; out-1-in = 255 - (in-out)
- ljmp setup_return_one_byte
-setup_ctrl_06_not_00:
- cjne r3, #0x01, setup_ctrl_06_not_01
- ;; 06, wValue[0]=1 is query chars_in_buffer
- mov a, tx_ring_in
- clr c
- subb a, tx_ring_out ; in-out
- ljmp setup_return_one_byte
-setup_ctrl_06_not_01:
- ljmp setup_stall
-setup_ctrl_not_06:
- cjne r2, #0x07, setup_ctrl_not_07
- ;; 07 is request tx unthrottle interrupt
- mov tx_unthrottle_threshold, r3; wValue[0] is threshold value
- ljmp setup_done_ack
-setup_ctrl_not_07:
- ljmp setup_stall
-
-setup_bmreq_type_not_vendor:
- ljmp setup_stall
-
-
-setup_bmreq_is_standard:
- cjne r2, #0x00, setup_breq_not_00
- ;; 00: Get_Status (sub-switch on bmRequestType: device, ep, int)
- cjne r1, #0x80, setup_Get_Status_not_device
- ;; Get_Status(device)
- ;; are we self-powered? no. can we do remote wakeup? no
- ;; so return two zero bytes. This is reusable
-setup_return_two_zero_bytes:
- mov dptr, IN0BUF
- clr a
- movx @dptr, a
- inc dptr
- movx @dptr, a
- mov dptr, IN0BC
- mov a, #2
- movx @dptr, a
- ljmp setup_done_ack
-setup_Get_Status_not_device:
- cjne r1, #0x82, setup_Get_Status_not_endpoint
- ;; Get_Status(endpoint)
- ;; must get stall bit for ep[wIndexL], return two bytes, bit in lsb 0
- ;; for now: cheat. TODO
- sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_endpoint:
- cjne r1, #0x81, setup_Get_Status_not_interface
- ;; Get_Status(interface): return two zeros
- sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_interface:
- ljmp setup_stall
-
-setup_breq_not_00:
- cjne r2, #0x01, setup_breq_not_01
- ;; 01: Clear_Feature (sub-switch on wValueL: stall, remote wakeup)
- cjne r3, #0x00, setup_Clear_Feature_not_stall
- ;; Clear_Feature(stall). should clear a stall bit. TODO
- ljmp setup_stall
-setup_Clear_Feature_not_stall:
- cjne r3, #0x01, setup_Clear_Feature_not_rwake
- ;; Clear_Feature(remote wakeup). ignored.
- ljmp setup_done_ack
-setup_Clear_Feature_not_rwake:
- ljmp setup_stall
-
-setup_breq_not_01:
- cjne r2, #0x03, setup_breq_not_03
- ;; 03: Set_Feature (sub-switch on wValueL: stall, remote wakeup)
- cjne r3, #0x00, setup_Set_Feature_not_stall
- ;; Set_Feature(stall). Should set a stall bit. TODO
- ljmp setup_stall
-setup_Set_Feature_not_stall:
- cjne r3, #0x01, setup_Set_Feature_not_rwake
- ;; Set_Feature(remote wakeup). ignored.
- ljmp setup_done_ack
-setup_Set_Feature_not_rwake:
- ljmp setup_stall
-
-setup_breq_not_03:
- cjne r2, #0x06, setup_breq_not_06
- ;; 06: Get_Descriptor (s-switch on wValueH: dev, config[n], string[n])
- cjne r4, #0x01, setup_Get_Descriptor_not_device
- ;; Get_Descriptor(device)
- mov dptr, SUDPTRH
- mov a, #HIGH(desc_device)
- movx @dptr, a
- mov dptr, SUDPTRL
- mov a, #LOW(desc_device)
- movx @dptr, a
- ljmp setup_done_ack
-setup_Get_Descriptor_not_device:
- cjne r4, #0x02, setup_Get_Descriptor_not_config
- ;; Get_Descriptor(config[n])
- cjne r3, #0x00, setup_stall; only handle n==0
- ;; Get_Descriptor(config[0])
- mov dptr, SUDPTRH
- mov a, #HIGH(desc_config1)
- movx @dptr, a
- mov dptr, SUDPTRL
- mov a, #LOW(desc_config1)
- movx @dptr, a
- ljmp setup_done_ack
-setup_Get_Descriptor_not_config:
- cjne r4, #0x03, setup_Get_Descriptor_not_string
- ;; Get_Descriptor(string[wValueL])
- ;; if (wValueL >= maxstrings) stall
- mov a, #((desc_strings_end-desc_strings)/2)
- clr c
- subb a,r3 ; a=4, r3 = 0..3 . if a<=0 then stall
- jc setup_stall
- jz setup_stall
- mov a, r3
- add a, r3 ; a = 2*wValueL
- mov dptr, #desc_strings
- add a, dpl
- mov dpl, a
- mov a, #0
- addc a, dph
- mov dph, a ; dph = desc_strings[a]. big endian! (handy)
- ;; it looks like my adapter uses a revision of the EZUSB that
- ;; contains "rev D errata number 8", as hinted in the EzUSB example
- ;; code. I cannot find an actual errata description on the Cypress
- ;; web site, but from the example code it looks like this bug causes
- ;; the length of string descriptors to be read incorrectly, possibly
- ;; sending back more characters than the descriptor has. The workaround
- ;; is to manually send out all of the data. The consequence of not
- ;; using the workaround is that the strings gathered by the kernel
- ;; driver are too long and are filled with trailing garbage (including
- ;; leftover strings). Writing this out by hand is a nuisance, so for
- ;; now I will just live with the bug.
- movx a, @dptr
- mov r1, a
- inc dptr
- movx a, @dptr
- mov r2, a
- mov dptr, SUDPTRH
- mov a, r1
- movx @dptr, a
- mov dptr, SUDPTRL
- mov a, r2
- movx @dptr, a
- ;; done
- ljmp setup_done_ack
-
-setup_Get_Descriptor_not_string:
- ljmp setup_stall
-
-setup_breq_not_06:
- cjne r2, #0x08, setup_breq_not_08
- ;; Get_Configuration. always 1. return one byte.
- ;; this is reusable
- mov a, #1
-setup_return_one_byte:
- mov dptr, IN0BUF
- movx @dptr, a
- mov a, #1
- mov dptr, IN0BC
- movx @dptr, a
- ljmp setup_done_ack
-setup_breq_not_08:
- cjne r2, #0x09, setup_breq_not_09
- ;; 09: Set_Configuration. ignored.
- ljmp setup_done_ack
-setup_breq_not_09:
- cjne r2, #0x0a, setup_breq_not_0a
- ;; 0a: Get_Interface. get the current altsetting for int[wIndexL]
- ;; since we only have one interface, ignore wIndexL, return a 0
- mov a, #0
- ljmp setup_return_one_byte
-setup_breq_not_0a:
- cjne r2, #0x0b, setup_breq_not_0b
- ;; 0b: Set_Interface. set altsetting for interface[wIndexL]. ignored
- ljmp setup_done_ack
-setup_breq_not_0b:
- ljmp setup_stall
-
-
-setup_done_ack:
- ;; now clear HSNAK
- mov dptr, EP0CS
- mov a, #0x02
- movx @dptr, a
- sjmp setup_done
-setup_stall:
- ;; unhandled. STALL
- ;EP0CS |= bmEPSTALL
- mov dptr, EP0CS
- movx a, @dptr
- orl a, EP0STALLbit
- movx @dptr, a
- sjmp setup_done
-
-setup_done:
- pop acc
- pop dph1
- pop dpl1
- pop dph
- pop dpl
- pop dps
- reti
-
-;;; ==============================================================
-
-set_baud: ; baud index in r3
- ;; verify a < 10
- mov a, r3
- jb ACC.7, set_baud__badbaud
- clr c
- subb a, #10
- jnc set_baud__badbaud
- mov a, r3
- rl a ; a = index*2
- add a, #LOW(baud_table)
- mov dpl, a
- mov a, #HIGH(baud_table)
- addc a, #0
- mov dph, a
- ;; TODO: shut down xmit/receive
- ;; TODO: wait for current xmit char to leave
- ;; TODO: shut down timer to avoid partial-char glitch
- movx a,@dptr ; BAUD_HIGH
- mov RCAP2H, a
- mov TH2, a
- inc dptr
- movx a,@dptr ; BAUD_LOW
- mov RCAP2L, a
- mov TL2, a
- ;; TODO: restart xmit/receive
- ;; TODO: reenable interrupts, resume tx if pending
- clr c ; c=0: success
- ret
-set_baud__badbaud:
- setb c ; c=1: failure
- ret
-
-;;; ==================================================
-control_pins:
- cjne r1, #0x41, control_pins_in
-control_pins_out:
- mov a, r3 ; wValue[0] holds new bits: b7 is new DTR, b2 is new RTS
- xrl a, #0xff ; 1 means active, 0V, +12V ?
- anl a, #0x84
- mov r3, a
- mov dptr, OUTC
- movx a, @dptr ; only change bits 7 and 2
- anl a, #0x7b ; ~0x84
- orl a, r3
- movx @dptr, a ; other pins are inputs, bits ignored
- ljmp setup_done_ack
-control_pins_in:
- mov dptr, PINSC
- movx a, @dptr
- xrl a, #0xff
- ljmp setup_return_one_byte
-
-;;; ========================================
-
-ISR_Ep2in:
- push dps
- push dpl
- push dph
- push dpl1
- push dph1
- push acc
- mov a,EXIF
- clr acc.4
- mov EXIF,a ; clear INT2 first
- mov dptr, IN07IRQ ; clear USB int
- mov a,#04h
- movx @dptr,a
-
- ;; do stuff
- lcall start_in
-
- pop acc
- pop dph1
- pop dpl1
- pop dph
- pop dpl
- pop dps
- reti
-
-ISR_Ep2out:
- push dps
- push dpl
- push dph
- push dpl1
- push dph1
- push acc
- mov a,EXIF
- clr acc.4
- mov EXIF,a ; clear INT2 first
- mov dptr, OUT07IRQ ; clear USB int
- mov a,#04h
- movx @dptr,a
-
- ;; do stuff
-
- ;; copy data into buffer. for now, assume we will have enough space
- mov dptr, OUT2BC ; get byte count
- movx a,@dptr
- mov r1, a
- clr a
- mov dps, a
- mov dptr, OUT2BUF ; load DPTR0 with source
- mov dph1, #HIGH(tx_ring) ; load DPTR1 with target
- mov dpl1, tx_ring_in
-OUT_loop:
- movx a,@dptr ; read
- inc dps ; switch to DPTR1: target
- inc dpl1 ; target = tx_ring_in+1
- movx @dptr,a ; store
- mov a,dpl1
- cjne a, tx_ring_out, OUT_no_overflow
- sjmp OUT_overflow
-OUT_no_overflow:
- inc tx_ring_in ; tx_ring_in++
- inc dps ; switch to DPTR0: source
- inc dptr
- djnz r1, OUT_loop
- sjmp OUT_done
-OUT_overflow:
- ;; signal overflow
- ;; fall through
-OUT_done:
- ;; ack
- mov dptr,OUT2BC
- movx @dptr,a
-
- ;; start tx
- acall maybe_start_tx
- ;acall dump_stat
-
- pop acc
- pop dph1
- pop dpl1
- pop dph
- pop dpl
- pop dps
- reti
-
-dump_stat:
- ;; fill in EP4in with a debugging message:
- ;; tx_ring_in, tx_ring_out, rx_ring_in, rx_ring_out
- ;; tx_active
- ;; tx_ring[0..15]
- ;; 0xfc
- ;; rx_ring[0..15]
- clr a
- mov dps, a
-
- mov dptr, IN4CS
- movx a, @dptr
- jb acc.1, dump_stat__done; busy: cannot dump, old one still pending
- mov dptr, IN4BUF
-
- mov a, tx_ring_in
- movx @dptr, a
- inc dptr
- mov a, tx_ring_out
- movx @dptr, a
- inc dptr
-
- mov a, rx_ring_in
- movx @dptr, a
- inc dptr
- mov a, rx_ring_out
- movx @dptr, a
- inc dptr
-
- clr a
- jnb TX_RUNNING, dump_stat__no_tx_running
- inc a
-dump_stat__no_tx_running:
- movx @dptr, a
- inc dptr
- ;; tx_ring[0..15]
- inc dps
- mov dptr, #tx_ring ; DPTR1: source
- mov r1, #16
-dump_stat__tx_ring_loop:
- movx a, @dptr
- inc dptr
- inc dps
- movx @dptr, a
- inc dptr
- inc dps
- djnz r1, dump_stat__tx_ring_loop
- inc dps
-
- mov a, #0xfc
- movx @dptr, a
- inc dptr
-
- ;; rx_ring[0..15]
- inc dps
- mov dptr, #rx_ring ; DPTR1: source
- mov r1, #16
-dump_stat__rx_ring_loop:
- movx a, @dptr
- inc dptr
- inc dps
- movx @dptr, a
- inc dptr
- inc dps
- djnz r1, dump_stat__rx_ring_loop
-
- ;; now send it
- clr a
- mov dps, a
- mov dptr, IN4BC
- mov a, #38
- movx @dptr, a
-dump_stat__done:
- ret
-
-;;; ============================================================
-
-maybe_start_tx:
- ;; make sure the tx process is running.
- jb TX_RUNNING, start_tx_done
-start_tx:
- ;; is there work to be done?
- mov a, tx_ring_in
- cjne a,tx_ring_out, start_tx__work
- ret ; no work
-start_tx__work:
- ;; tx was not running. send the first character, setup the TI int
- inc tx_ring_out ; [++tx_ring_out]
- mov dph, #HIGH(tx_ring)
- mov dpl, tx_ring_out
- movx a, @dptr
- mov sbuf, a
- setb TX_RUNNING
-start_tx_done:
- ;; can we unthrottle the host tx process?
- ;; step 1: do we care?
- mov a, #0
- cjne a, tx_unthrottle_threshold, start_tx__maybe_unthrottle_tx
- ;; nope
-start_tx_really_done:
- ret
-start_tx__maybe_unthrottle_tx:
- ;; step 2: is there now room?
- mov a, tx_ring_out
- setb c
- subb a, tx_ring_in
- ;; a is now write_room. If thresh >= a, we can unthrottle
- clr c
- subb a, tx_unthrottle_threshold
- jc start_tx_really_done ; nope
- ;; yes, we can unthrottle. remove the threshold and mark a request
- mov tx_unthrottle_threshold, #0
- setb DO_TX_UNTHROTTLE
- ;; prod rx, which will actually send the message when in2 becomes free
- ljmp start_in
-
-
-serial_int:
- push dps
- push dpl
- push dph
- push dpl1
- push dph1
- push acc
- jnb TI, serial_int__not_tx
- ;; tx finished. send another character if we have one
- clr TI ; clear int
- clr TX_RUNNING
- lcall start_tx
-serial_int__not_tx:
- jnb RI, serial_int__not_rx
- lcall get_rx_char
- clr RI ; clear int
-serial_int__not_rx:
- ;; return
- pop acc
- pop dph1
- pop dpl1
- pop dph
- pop dpl
- pop dps
- reti
-
-get_rx_char:
- mov dph, #HIGH(rx_ring)
- mov dpl, rx_ring_in
- inc dpl ; target = rx_ring_in+1
- mov a, sbuf
- movx @dptr, a
- ;; check for overflow before incrementing rx_ring_in
- mov a, dpl
- cjne a, rx_ring_out, get_rx_char__no_overflow
- ;; signal overflow
- ret
-get_rx_char__no_overflow:
- inc rx_ring_in
- ;; kick off USB INpipe
- acall start_in
- ret
-
-start_in:
- ;; check if the inpipe is already running.
- mov dptr, IN2CS
- movx a, @dptr
- jb acc.1, start_in__done; int will handle it
- jb DO_TX_UNTHROTTLE, start_in__do_tx_unthrottle
- ;; see if there is any work to do. a serial interrupt might occur
- ;; during this sequence?
- mov a, rx_ring_in
- cjne a, rx_ring_out, start_in__have_work
- ret ; nope
-start_in__have_work:
- ;; now copy as much data as possible into the pipe. 63 bytes max.
- clr a
- mov dps, a
- mov dph, #HIGH(rx_ring) ; load DPTR0 with source
- inc dps
- mov dptr, IN2BUF ; load DPTR1 with target
- movx @dptr, a ; in[0] signals that rest of IN is rx data
- inc dptr
- inc dps
- ;; loop until we run out of data, or we have copied 64 bytes
- mov r1, #1 ; INbuf size counter
-start_in__loop:
- mov a, rx_ring_in
- cjne a, rx_ring_out, start_inlocal_irq_enablell_copying
- sjmp start_in__kick
-start_inlocal_irq_enablell_copying:
- inc rx_ring_out
- mov dpl, rx_ring_out
- movx a, @dptr
- inc dps
- movx @dptr, a ; write into IN buffer
- inc dptr
- inc dps
- inc r1
- cjne r1, #64, start_in__loop; loop
-start_in__kick:
- ;; either we ran out of data, or we copied 64 bytes. r1 has byte count
- ;; kick off IN
- mov dptr, IN2BC
- mov a, r1
- jz start_in__done
- movx @dptr, a
- ;; done
-start_in__done:
- ;acall dump_stat
- ret
-start_in__do_tx_unthrottle:
- ;; special sequence: send a tx unthrottle message
- clr DO_TX_UNTHROTTLE
- clr a
- mov dps, a
- mov dptr, IN2BUF
- mov a, #1
- movx @dptr, a
- inc dptr
- mov a, #2
- movx @dptr, a
- mov dptr, IN2BC
- movx @dptr, a
- ret
-
-putchar:
- clr TI
- mov SBUF, a
-putchar_wait:
- jnb TI, putchar_wait
- clr TI
- ret
-
-
-baud_table: ; baud_high, then baud_low
- ;; baud[0]: 110
- .byte BAUD_HIGH(110)
- .byte BAUD_LOW(110)
- ;; baud[1]: 300
- .byte BAUD_HIGH(300)
- .byte BAUD_LOW(300)
- ;; baud[2]: 1200
- .byte BAUD_HIGH(1200)
- .byte BAUD_LOW(1200)
- ;; baud[3]: 2400
- .byte BAUD_HIGH(2400)
- .byte BAUD_LOW(2400)
- ;; baud[4]: 4800
- .byte BAUD_HIGH(4800)
- .byte BAUD_LOW(4800)
- ;; baud[5]: 9600
- .byte BAUD_HIGH(9600)
- .byte BAUD_LOW(9600)
- ;; baud[6]: 19200
- .byte BAUD_HIGH(19200)
- .byte BAUD_LOW(19200)
- ;; baud[7]: 38400
- .byte BAUD_HIGH(38400)
- .byte BAUD_LOW(38400)
- ;; baud[8]: 57600
- .byte BAUD_HIGH(57600)
- .byte BAUD_LOW(57600)
- ;; baud[9]: 115200
- .byte BAUD_HIGH(115200)
- .byte BAUD_LOW(115200)
-
-desc_device:
- .byte 0x12, 0x01, 0x00, 0x01, 0xff, 0xff, 0xff, 0x40
- .byte 0xcd, 0x06, 0x04, 0x01, 0x89, 0xab, 1, 2, 3, 0x01
-;;; The "real" device id, which must match the host driver, is that
-;;; "0xcd 0x06 0x04 0x01" sequence, which is 0x06cd, 0x0104
-
-desc_config1:
- .byte 0x09, 0x02, 0x20, 0x00, 0x01, 0x01, 0x00, 0x80, 0x32
- .byte 0x09, 0x04, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff, 0x00
- .byte 0x07, 0x05, 0x82, 0x03, 0x40, 0x00, 0x01
- .byte 0x07, 0x05, 0x02, 0x02, 0x40, 0x00, 0x00
-
-desc_strings:
- .word string_langids, string_mfg, string_product, string_serial
-desc_strings_end:
-
-string_langids: .byte string_langids_end-string_langids
- .byte 3
- .word 0
-string_langids_end:
-
- ;; sigh. These strings are Unicode, meaning UTF16? 2 bytes each. Now
- ;; *that* is a pain in the ass to encode. And they are little-endian
- ;; too. Use this perl snippet to get the bytecodes:
- /* while (<>) {
- @c = split(//);
- foreach $c (@c) {
- printf("0x%02x, 0x00, ", ord($c));
- }
- }
- */
-
-string_mfg: .byte string_mfg_end-string_mfg
- .byte 3
-; .byte "ACME usb widgets"
- .byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x62, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00, 0x73, 0x00
-string_mfg_end:
-
-string_product: .byte string_product_end-string_product
- .byte 3
-; .byte "ACME USB serial widget"
- .byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x20, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00
-string_product_end:
-
-string_serial: .byte string_serial_end-string_serial
- .byte 3
-; .byte "47"
- .byte 0x34, 0x00, 0x37, 0x00
-string_serial_end:
-
-;;; ring buffer memory
- ;; tx_ring_in+1 is where the next input byte will go
- ;; [tx_ring_out] has been sent
- ;; if tx_ring_in == tx_ring_out, theres no work to do
- ;; there are (tx_ring_in - tx_ring_out) chars to be written
- ;; dont let _in lap _out
- ;; cannot inc if tx_ring_in+1 == tx_ring_out
- ;; write [tx_ring_in+1] then tx_ring_in++
- ;; if (tx_ring_in+1 == tx_ring_out), overflow
- ;; else tx_ring_in++
- ;; read/send [tx_ring_out+1], then tx_ring_out++
-
- ;; rx_ring_in works the same way
-
- .org 0x1000
-tx_ring:
- .skip 0x100 ; 256 bytes
-rx_ring:
- .skip 0x100 ; 256 bytes
-
-
- .END
-
diff --git a/firmware/keyspan_pda/xircom_pgs.HEX b/firmware/keyspan_pda/xircom_pgs.HEX
deleted file mode 100644
index e9b00d70282f..000000000000
--- a/firmware/keyspan_pda/xircom_pgs.HEX
+++ /dev/null
@@ -1,87 +0,0 @@
-:03000000020200F9
-:0400230002059B0037
-:050030000000000000CB
-:0400430002010000B6
-:100100000202BA000200000002000000020000002B
-:1001100002000000020000000200000002000000D7
-:100120000200000002000000020485000204B90081
-:1002000075815EE4F532F533F530F531F534C20031
-:10021000C201A90074FE901000F0A3D9FC74FD90F7
-:100220001100F0A3D9FC907F9474BFF0907F957477
-:10023000EFF07410907F9EF07400907F98F07440FF
-:10024000907F9DF07400907F97F07482907F9EF075
-:10025000907F957403F0907FAFE0D2E0F07401904E
-:100260007FABF0907FAEF0907FAC7404F0907FADE8
-:100270007404F0907FC9F07407907FAFF074209001
-:100280007F9CF07480907F98F07453F59875C83017
-:100290007B059144D2CA759850D2E8D2AFD2AC74E3
-:1002A00000F586907FD67402F0792E7A007B00DB11
-:1002B000FEDAFAD9F67406F080FEC086C082C083EA
-:1002C000C084C085C0E0E591C2E4F591907FAB7435
-:1002D00001F0907FE8E0F9A3E0FAA3E0FBA3E0FCE3
-:1002E000E95460B4000302035DB4406EBA000B121F
-:1002F0000444400302042602042EBA010302042E21
-:10030000BA020302042EBA0303020468BA041EBB35
-:10031000000A907F95E04402F0020426907F98E066
-:1003200054FDF0907F95E054FDF0020426BA0503D9
-:1003300002042EBA0619BB0008E533D39532020435
-:1003400002BB0108E532C3953302040202042EBA4F
-:1003500007058B3402042602042E02042EBA002064
-:10036000B98010907F00E4F0A3F0907FB57402F0A4
-:10037000020426B9820280EBB9810280E602042ED3
-:10038000BA010FBB000302042EBB010302042602C4
-:10039000042EBA030FBB000302042EBB01030204A8
-:1003A0002602042EBA0656BC010F907FD47406F0C4
-:1003B000907FD5745AF0020426BC0212BB006F90E5
-:1003C0007FD47406F0907FD5746CF0020426BC03D1
-:1003D000297404C39B40576055EB2B90068C2582F3
-:1003E000F58274003583F583E0F9A3E0FA907FD4B9
-:1003F000E9F0907FD5EAF002042602042EBA080F35
-:100400007401907F00F07401907FB5F0020426BA69
-:100410000903020426BA0A057400020402BA0B0397
-:1004200002042602042E907FB47402F08009907FAB
-:10043000B4E04401F08000D0E0D085D084D083D0F7
-:1004400082D08632EB20E71EC3940A5019EB232496
-:1004500046F58274063400F583E0F5CBF5CDA3E0D4
-:10046000F5CAF5CCC322D322B94111EB64FF548005
-:10047000FB907F98E0547F4BF0020426907F9BE036
-:1004800064FF020402C086C082C083C084C085C0ED
-:10049000E0E591C2E4F591907FA97404F074209096
-:1004A0007F9CF01205DC7420907F9CF0D0E0D0851A
-:1004B000D084D083D082D08632C086C082C083C030
-:1004C00084C085C0E07410907F9CF0E591C2E4F593
-:1004D00091907FAA7404F0907FC9E0F9E4F58690CA
-:1004E0007DC0758510853284E005860584F0E5843D
-:1004F000B53302800905320586A3D9EC8000907FD0
-:10050000C9F0B16D7420907F9CF0D0E0D085D0848C
-:10051000D083D082D08632E4F586907FBCE020E1A3
-:100520004B907D00E532F0A3E533F0A3E530F0A376
-:10053000E531F0A3E430000104F0A305869010003B
-:100540007910E0A30586F0A30586D9F6058674FC2C
-:10055000F0A305869011007910E0A30586F0A305AD
-:1005600086D9F6E4F586907FBD7426F0222000132C
-:10057000E532B53301220533758310853382E0F50A
-:1005800099D2007400B5340122E533D39532C39576
-:100590003440F5753400D2010205DCC086C082C04B
-:1005A00083C084C085C0E0309907C299C20012059B
-:1005B000703098051205C6C298D0E0D085D084D09E
-:1005C00083D082D086327583118530820582E59989
-:1005D000F0E582B53101220530B1DC227410907F44
-:1005E0009CF0907FB8E020E13E20013CE530B53141
-:1005F0000122E4F5867583110586907E00F0A3053F
-:10060000867901E530B5310280100531853182E00F
-:100610000586F0A3058609B940E97410907F9CF027
-:10062000907FB9E96001F022C201E4F586907E0076
-:100630007401F0A37402F0907FB9F022C299F59989
-:100640003099FDC29922E55EF63CFD8FFEC8FF643D
-:10065000FFB2FFD9FFEDFFF3FFFA12010001FFFF28
-:10066000FF40CD06040189AB01020301090220000D
-:1006700001010080320904000002FFFFFF000705AE
-:10068000820340000107050202400000069406981C
-:1006900006BA06E8040300002203410043004D00AF
-:1006A000450020007500730062002000770069009B
-:1006B000640067006500740073002E03410043006E
-:1006C0004D004500200055005300420020007300FB
-:1006D00065007200690061006C002000770069000D
-:0E06E0006400670065007400060334003700F4
-:00000001FF
diff --git a/firmware/keyspan_pda/xircom_pgs.S b/firmware/keyspan_pda/xircom_pgs.S
deleted file mode 100644
index 0b79bbf0ae15..000000000000
--- a/firmware/keyspan_pda/xircom_pgs.S
+++ /dev/null
@@ -1,1192 +0,0 @@
-/* $Id: loop.s,v 1.23 2000/03/20 09:49:06 warner Exp $
- *
- * Firmware for the Keyspan PDA Serial Adapter, a USB serial port based on
- * the EzUSB microcontroller.
- *
- * (C) Copyright 2000 Brian Warner <warner@lothar.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * "Keyspan PDA Serial Adapter" is probably a copyright of Keyspan, the
- * company.
- *
- * This serial adapter is basically an EzUSB chip and an RS-232 line driver
- * in a little widget that has a DB-9 on one end and a USB plug on the other.
- * It uses the EzUSB's internal UART0 (using the pins from Port C) and timer2
- * as a baud-rate generator. The wiring is:
- * PC0/RxD0 <- rxd (DB9 pin 2) PC4 <- dsr pin 6
- * PC1/TxD0 -> txd pin 3 PC5 <- ri pin 9
- * PC2 -> rts pin 7 PC6 <- dcd pin 1
- * PC3 <- cts pin 8 PC7 -> dtr pin 4
- * PB1 -> line driver standby
- *
- * The EzUSB register constants below come from their excellent documentation
- * and sample code (which used to be available at www.anchorchips.com, but
- * that has now been absorbed into Cypress' site and the CD-ROM contents
- * don't appear to be available online anymore). If we get multiple
- * EzUSB-based drivers into the kernel, it might be useful to pull them out
- * into a separate .h file.
- *
- * THEORY OF OPERATION:
- *
- * There are two 256-byte ring buffers, one for tx, one for rx.
- *
- * EP2out is pure tx data. When it appears, the data is copied into the tx
- * ring and serial transmission is started if it wasn't already running. The
- * "tx buffer empty" interrupt may kick off another character if the ring
- * still has data. If the host is tx-blocked because the ring filled up,
- * it will request a "tx unthrottle" interrupt. If sending a serial character
- * empties the ring below the desired threshold, we set a bit that will send
- * up the tx unthrottle message as soon as the rx buffer becomes free.
- *
- * EP2in (interrupt) is used to send both rx chars and rx status messages
- * (only "tx unthrottle" at this time) back up to the host. The first byte
- * of the rx message indicates data (0) or status msg (1). Status messages
- * are sent before any data.
- *
- * Incoming serial characters are put into the rx ring by the serial
- * interrupt, and the EP2in buffer sent if it wasn't already in transit.
- * When the EP2in buffer returns, the interrupt prompts us to send more
- * rx chars (or status messages) if they are pending.
- *
- * Device control happens through "vendor specific" control messages on EP0.
- * All messages are destined for the "Interface" (with the index always 0,
- * so that if their two-port device might someday use similar firmware, we
- * can use index=1 to refer to the second port). The messages defined are:
- *
- * bRequest = 0 : set baud/bits/parity
- * 1 : unused
- * 2 : reserved for setting HW flow control (CTSRTS)
- * 3 : get/set "modem info" (pin states: DTR, RTS, DCD, RI, etc)
- * 4 : set break (on/off)
- * 5 : reserved for requesting interrupts on pin state change
- * 6 : query buffer room or chars in tx buffer
- * 7 : request tx unthrottle interrupt
- *
- * The host-side driver is set to recognize the device ID values stashed in
- * serial EEPROM (0x06cd, 0x0103), program this firmware into place, then
- * start it running. This firmware will use EzUSB's "renumeration" trick by
- * simulating a bus disconnect, then reconnect with a different device ID
- * (encoded in the desc_device descriptor below). The host driver then
- * recognizes the new device ID and glues it to the real serial driver code.
- *
- * USEFUL DOCS:
- * EzUSB Technical Reference Manual: <http://www.cypress.com/>
- * 8051 manuals: everywhere, but try www.dalsemi.com because the EzUSB is
- * basically the Dallas enhanced 8051 code. Remember that the EzUSB IO ports
- * use totally different registers!
- * USB 1.1 spec: www.usb.org
- *
- * HOW TO BUILD:
- * gcc -x assembler-with-cpp -P -E -o keyspan_pda.asm keyspan_pda.s
- * as31 -l keyspan_pda.asm
- * mv keyspan_pda.obj keyspan_pda.hex
- * perl ezusb_convert.pl keyspan_pda < keyspan_pda.hex > keyspan_pda_fw.h
- * Get as31 from <http://www.pjrc.com/tech/8051/index.html>, and hack on it
- * a bit to make it build.
- *
- * THANKS:
- * Greg Kroah-Hartman, for coordinating the whole usb-serial thing.
- * AnchorChips, for making such an incredibly useful little microcontroller.
- * KeySpan, for making a handy, cheap ($40) widget that was so easy to take
- * apart and trace with an ohmmeter.
- *
- * TODO:
- * lots. grep for TODO. Interrupt safety needs stress-testing. Better flow
- * control. Interrupting host upon change in DCD, etc, counting transitions.
- * Need to find a safe device id to use (the one used by the Keyspan firmware
- * under Windows would be ideal.. can anyone figure out what it is?). Parity.
- * More baud rates. Oh, and the string-descriptor-length silicon bug
- * workaround should be implemented, but I'm lazy, and the consequence is
- * that the device name strings that show up in your kernel log will have
- * lots of trailing binary garbage in them (appears as ????). Device strings
- * should be made more accurate.
- *
- * Questions, bugs, patches to Brian.
- *
- * -Brian Warner <warner@lothar.com>
- *
- */
-
-#define HIGH(x) (((x) & 0xff00) / 256)
-#define LOW(x) ((x) & 0xff)
-
-#define dpl1 0x84
-#define dph1 0x85
-#define dps 0x86
-
-;;; our bit assignments
-#define TX_RUNNING 0
-#define DO_TX_UNTHROTTLE 1
-
- ;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
-#define STACK #0x60-1
-
-#define EXIF 0x91
-#define EIE 0xe8
- .flag EUSB, EIE.0
- .flag ES0, IE.4
-
-#define EP0CS #0x7fb4
-#define EP0STALLbit #0x01
-#define IN0BUF #0x7f00
-#define IN0BC #0x7fb5
-#define OUT0BUF #0x7ec0
-#define OUT0BC #0x7fc5
-#define IN2BUF #0x7e00
-#define IN2BC #0x7fb9
-#define IN2CS #0x7fb8
-#define OUT2BC #0x7fc9
-#define OUT2CS #0x7fc8
-#define OUT2BUF #0x7dc0
-#define IN4BUF #0x7d00
-#define IN4BC #0x7fbd
-#define IN4CS #0x7fbc
-#define OEB #0x7f9d
-#define OUTB #0x7f97
-#define OEC #0x7f9e
-#define OUTC #0x7f98
-#define PINSC #0x7f9b
-#define PORTBCFG #0x7f94
-#define PORTCCFG #0x7f95
-#define OEA #0x7f9c
-#define IN07IRQ #0x7fa9
-#define OUT07IRQ #0x7faa
-#define IN07IEN #0x7fac
-#define OUT07IEN #0x7fad
-#define USBIRQ #0x7fab
-#define USBIEN #0x7fae
-#define USBBAV #0x7faf
-#define USBCS #0x7fd6
-#define SUDPTRH #0x7fd4
-#define SUDPTRL #0x7fd5
-#define SETUPDAT #0x7fe8
-
- ;; usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
-
- .org 0
- ljmp start
- ;; interrupt vectors
- .org 23H
- ljmp serial_int
- .byte 0
-
- .org 43H
- ljmp USB_Jump_Table
- .byte 0 ; filled in by the USB core
-
-;;; local variables. These are not initialized properly: do it by hand.
- .org 30H
-rx_ring_in: .byte 0
-rx_ring_out: .byte 0
-tx_ring_in: .byte 0
-tx_ring_out: .byte 0
-tx_unthrottle_threshold: .byte 0
-
- .org 0x100H ; wants to be on a page boundary
-USB_Jump_Table:
- ljmp ISR_Sudav ; Setup Data Available
- .byte 0
- ljmp 0 ; Start of Frame
- .byte 0
- ljmp 0 ; Setup Data Loading
- .byte 0
- ljmp 0 ; Global Suspend
- .byte 0
- ljmp 0 ; USB Reset
- .byte 0
- ljmp 0 ; Reserved
- .byte 0
- ljmp 0 ; End Point 0 In
- .byte 0
- ljmp 0 ; End Point 0 Out
- .byte 0
- ljmp 0 ; End Point 1 In
- .byte 0
- ljmp 0 ; End Point 1 Out
- .byte 0
- ljmp ISR_Ep2in
- .byte 0
- ljmp ISR_Ep2out
- .byte 0
-
-
- .org 0x200
-
-start: mov SP,STACK-1 ; set stack
- ;; clear local variables
- clr a
- mov tx_ring_in, a
- mov tx_ring_out, a
- mov rx_ring_in, a
- mov rx_ring_out, a
- mov tx_unthrottle_threshold, a
- clr TX_RUNNING
- clr DO_TX_UNTHROTTLE
-
- ;; clear fifo with "fe"
- mov r1, 0
- mov a, #0xfe
- mov dptr, #tx_ring
-clear_tx_ring_loop:
- movx @dptr, a
- inc dptr
- djnz r1, clear_tx_ring_loop
-
- mov a, #0xfd
- mov dptr, #rx_ring
-clear_rx_ring_loop:
- movx @dptr, a
- inc dptr
- djnz r1, clear_rx_ring_loop
-
-;;; turn on the RS-232 driver chip (bring the STANDBY pin low)
-;;; on Xircom the STANDBY is wired to PB6 and PC4
- mov dptr, PORTBCFG
- mov a, #0xBf
- movx @dptr, a
- mov dptr, PORTCCFG
- mov a, #0xef
- movx @dptr, a
-
- ;; set OEC.4
- mov a, #0x10
- mov dptr,OEC
- movx @dptr,a
-
- ;; clear PC4
- mov a, #0x00
- mov dptr,OUTC
- movx @dptr,a
-
- ;; set OEB.6
- mov a, #0x40
- mov dptr,OEB
- movx @dptr,a
-
- ;; clear PB6
- mov a, #0x00
- mov dptr,OUTB
- movx @dptr,a
-
- ;; set OEC.[17]
- mov a, #0x82
- mov dptr,OEC
- movx @dptr,a
-
-
- ;; set PORTCCFG.[01] to route TxD0,RxD0 to serial port
- mov dptr, PORTCCFG
- mov a, #0x03
- movx @dptr, a
-
- ;; set up interrupts, autovectoring
- ;; set BKPT
- mov dptr, USBBAV
- movx a,@dptr
- setb acc.0 ; AVEN bit to 0
- movx @dptr, a
-
- mov a,#0x01 ; enable SUDAV: setup data available (for ep0)
- mov dptr, USBIRQ
- movx @dptr, a ; clear SUDAVI
- mov dptr, USBIEN
- movx @dptr, a
-
- mov dptr, IN07IEN
- mov a,#0x04 ; enable IN2 int
- movx @dptr, a
-
- mov dptr, OUT07IEN
- mov a,#0x04 ; enable OUT2 int
- movx @dptr, a
- mov dptr, OUT2BC
- movx @dptr, a ; arm OUT2
-
-;; mov a, #0x84 ; turn on RTS, DTR
-;; mov dptr,OUTC
-;; movx @dptr, a
-
- mov a, #0x7 ; turn on DTR
- mov dptr,USBBAV
- movx @dptr, a
-
- mov a, #0x20 ; turn on the RED led
- mov dptr,OEA
- movx @dptr, a
-
- mov a, #0x80 ; turn on RTS
- mov dptr,OUTC
- movx @dptr, a
-
- ;; setup the serial port. 9600 8N1.
- mov a,#0x53 ; mode 1, enable rx, clear int
- mov SCON, a
- ;; using timer2, in 16-bit baud-rate-generator mode
- ;; (xtal 12MHz, internal fosc 24MHz)
- ;; RCAP2H,RCAP2L = 65536 - fosc/(32*baud)
- ;; 57600: 0xFFF2.F, say 0xFFF3
- ;; 9600: 0xFFB1.E, say 0xFFB2
- ;; 300: 0xF63C
-#define BAUD 9600
-#define BAUD_TIMEOUT(rate) (65536 - (24 * 1000 * 1000) / (32 * rate))
-#define BAUD_HIGH(rate) HIGH(BAUD_TIMEOUT(rate))
-#define BAUD_LOW(rate) LOW(BAUD_TIMEOUT(rate))
-
- mov T2CON, #030h ; rclk=1,tclk=1,cp=0,tr2=0(enable later)
- mov r3, #5
- acall set_baud
- setb TR2
- mov SCON, #050h
-
-#if 0
- mov r1, #0x40
- mov a, #0x41
-send:
- mov SBUF, a
- inc a
- anl a, #0x3F
- orl a, #0x40
-; xrl a, #0x02
-wait1:
- jnb TI, wait1
- clr TI
- djnz r1, send
-;done: sjmp done
-
-#endif
-
- setb EUSB
- setb EA
- setb ES0
- ;acall dump_stat
-
- ;; hey, what say we RENUMERATE! (TRM p.62)
- mov a, #0
- mov dps, a
- mov dptr, USBCS
- mov a, #0x02 ; DISCON=0, DISCOE=0, RENUM=1
- movx @dptr, a
- ;; now presence pin is floating, simulating disconnect. wait 0.5s
- mov r1, #46
-renum_wait1:
- mov r2, #0
-renum_wait2:
- mov r3, #0
-renum_wait3:
- djnz r3, renum_wait3
- djnz r2, renum_wait2
- djnz r1, renum_wait1 ; wait about n*(256^2) 6MHz clocks
- mov a, #0x06 ; DISCON=0, DISCOE=1, RENUM=1
- movx @dptr, a
- ;; we are back online. the host device will now re-query us
-
-
-main: sjmp main
-
-
-
-ISR_Sudav:
- push dps
- push dpl
- push dph
- push dpl1
- push dph1
- push acc
- mov a,EXIF
- clr acc.4
- mov EXIF,a ; clear INT2 first
- mov dptr, USBIRQ ; clear USB int
- mov a,#01h
- movx @dptr,a
-
- ;; get request type
- mov dptr, SETUPDAT
- movx a, @dptr
- mov r1, a ; r1 = bmRequestType
- inc dptr
- movx a, @dptr
- mov r2, a ; r2 = bRequest
- inc dptr
- movx a, @dptr
- mov r3, a ; r3 = wValueL
- inc dptr
- movx a, @dptr
- mov r4, a ; r4 = wValueH
-
- ;; main switch on bmRequest.type: standard or vendor
- mov a, r1
- anl a, #0x60
- cjne a, #0x00, setup_bmreq_type_not_standard
- ;; standard request: now main switch is on bRequest
- ljmp setup_bmreq_is_standard
-
-setup_bmreq_type_not_standard:
- ;; a still has bmreq&0x60
- cjne a, #0x40, setup_bmreq_type_not_vendor
- ;; Anchor reserves bRequest 0xa0-0xaf, we use small ones
- ;; switch on bRequest. bmRequest will always be 0x41 or 0xc1
- cjne r2, #0x00, setup_ctrl_not_00
- ;; 00 is set baud, wValue[0] has baud rate index
- lcall set_baud ; index in r3, carry set if error
- jc setup_bmreq_type_not_standard__do_stall
- ljmp setup_done_ack
-setup_bmreq_type_not_standard__do_stall:
- ljmp setup_stall
-setup_ctrl_not_00:
- cjne r2, #0x01, setup_ctrl_not_01
- ;; 01 is reserved for set bits (parity). TODO
- ljmp setup_stall
-setup_ctrl_not_01:
- cjne r2, #0x02, setup_ctrl_not_02
- ;; 02 is set HW flow control. TODO
- ljmp setup_stall
-setup_ctrl_not_02:
- cjne r2, #0x03, setup_ctrl_not_03
- ;; 03 is control pins (RTS, DTR).
- ljmp control_pins ; will jump to setup_done_ack,
- ; or setup_return_one_byte
-setup_ctrl_not_03:
- cjne r2, #0x04, setup_ctrl_not_04
- ;; 04 is send break (really "turn break on/off"). TODO
- cjne r3, #0x00, setup_ctrl_do_break_on
- ;; do break off: restore PORTCCFG.1 to reconnect TxD0 to serial port
- mov dptr, PORTCCFG
- movx a, @dptr
- orl a, #0x02
- movx @dptr, a
- ljmp setup_done_ack
-setup_ctrl_do_break_on:
- ;; do break on: clear PORTCCFG.0, set TxD high(?) (b1 low)
- mov dptr, OUTC
- movx a, @dptr
- anl a, #0xfd ; ~0x02
- movx @dptr, a
- mov dptr, PORTCCFG
- movx a, @dptr
- anl a, #0xfd ; ~0x02
- movx @dptr, a
- ljmp setup_done_ack
-setup_ctrl_not_04:
- cjne r2, #0x05, setup_ctrl_not_05
- ;; 05 is set desired interrupt bitmap. TODO
- ljmp setup_stall
-setup_ctrl_not_05:
- cjne r2, #0x06, setup_ctrl_not_06
- ;; 06 is query room
- cjne r3, #0x00, setup_ctrl_06_not_00
- ;; 06, wValue[0]=0 is query write_room
- mov a, tx_ring_out
- setb c
- subb a, tx_ring_in ; out-1-in = 255 - (in-out)
- ljmp setup_return_one_byte
-setup_ctrl_06_not_00:
- cjne r3, #0x01, setup_ctrl_06_not_01
- ;; 06, wValue[0]=1 is query chars_in_buffer
- mov a, tx_ring_in
- clr c
- subb a, tx_ring_out ; in-out
- ljmp setup_return_one_byte
-setup_ctrl_06_not_01:
- ljmp setup_stall
-setup_ctrl_not_06:
- cjne r2, #0x07, setup_ctrl_not_07
- ;; 07 is request tx unthrottle interrupt
- mov tx_unthrottle_threshold, r3; wValue[0] is threshold value
- ljmp setup_done_ack
-setup_ctrl_not_07:
- ljmp setup_stall
-
-setup_bmreq_type_not_vendor:
- ljmp setup_stall
-
-
-setup_bmreq_is_standard:
- cjne r2, #0x00, setup_breq_not_00
- ;; 00: Get_Status (sub-switch on bmRequestType: device, ep, int)
- cjne r1, #0x80, setup_Get_Status_not_device
- ;; Get_Status(device)
- ;; are we self-powered? no. can we do remote wakeup? no
- ;; so return two zero bytes. This is reusable
-setup_return_two_zero_bytes:
- mov dptr, IN0BUF
- clr a
- movx @dptr, a
- inc dptr
- movx @dptr, a
- mov dptr, IN0BC
- mov a, #2
- movx @dptr, a
- ljmp setup_done_ack
-setup_Get_Status_not_device:
- cjne r1, #0x82, setup_Get_Status_not_endpoint
- ;; Get_Status(endpoint)
- ;; must get stall bit for ep[wIndexL], return two bytes, bit in lsb 0
- ;; for now: cheat. TODO
- sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_endpoint:
- cjne r1, #0x81, setup_Get_Status_not_interface
- ;; Get_Status(interface): return two zeros
- sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_interface:
- ljmp setup_stall
-
-setup_breq_not_00:
- cjne r2, #0x01, setup_breq_not_01
- ;; 01: Clear_Feature (sub-switch on wValueL: stall, remote wakeup)
- cjne r3, #0x00, setup_Clear_Feature_not_stall
- ;; Clear_Feature(stall). should clear a stall bit. TODO
- ljmp setup_stall
-setup_Clear_Feature_not_stall:
- cjne r3, #0x01, setup_Clear_Feature_not_rwake
- ;; Clear_Feature(remote wakeup). ignored.
- ljmp setup_done_ack
-setup_Clear_Feature_not_rwake:
- ljmp setup_stall
-
-setup_breq_not_01:
- cjne r2, #0x03, setup_breq_not_03
- ;; 03: Set_Feature (sub-switch on wValueL: stall, remote wakeup)
- cjne r3, #0x00, setup_Set_Feature_not_stall
- ;; Set_Feature(stall). Should set a stall bit. TODO
- ljmp setup_stall
-setup_Set_Feature_not_stall:
- cjne r3, #0x01, setup_Set_Feature_not_rwake
- ;; Set_Feature(remote wakeup). ignored.
- ljmp setup_done_ack
-setup_Set_Feature_not_rwake:
- ljmp setup_stall
-
-setup_breq_not_03:
- cjne r2, #0x06, setup_breq_not_06
- ;; 06: Get_Descriptor (s-switch on wValueH: dev, config[n], string[n])
- cjne r4, #0x01, setup_Get_Descriptor_not_device
- ;; Get_Descriptor(device)
- mov dptr, SUDPTRH
- mov a, #HIGH(desc_device)
- movx @dptr, a
- mov dptr, SUDPTRL
- mov a, #LOW(desc_device)
- movx @dptr, a
- ljmp setup_done_ack
-setup_Get_Descriptor_not_device:
- cjne r4, #0x02, setup_Get_Descriptor_not_config
- ;; Get_Descriptor(config[n])
- cjne r3, #0x00, setup_stall; only handle n==0
- ;; Get_Descriptor(config[0])
- mov dptr, SUDPTRH
- mov a, #HIGH(desc_config1)
- movx @dptr, a
- mov dptr, SUDPTRL
- mov a, #LOW(desc_config1)
- movx @dptr, a
- ljmp setup_done_ack
-setup_Get_Descriptor_not_config:
- cjne r4, #0x03, setup_Get_Descriptor_not_string
- ;; Get_Descriptor(string[wValueL])
- ;; if (wValueL >= maxstrings) stall
- mov a, #((desc_strings_end-desc_strings)/2)
- clr c
- subb a,r3 ; a=4, r3 = 0..3 . if a<=0 then stall
- jc setup_stall
- jz setup_stall
- mov a, r3
- add a, r3 ; a = 2*wValueL
- mov dptr, #desc_strings
- add a, dpl
- mov dpl, a
- mov a, #0
- addc a, dph
- mov dph, a ; dph = desc_strings[a]. big endian! (handy)
- ;; it looks like my adapter uses a revision of the EZUSB that
- ;; contains "rev D errata number 8", as hinted in the EzUSB example
- ;; code. I cannot find an actual errata description on the Cypress
- ;; web site, but from the example code it looks like this bug causes
- ;; the length of string descriptors to be read incorrectly, possibly
- ;; sending back more characters than the descriptor has. The workaround
- ;; is to manually send out all of the data. The consequence of not
- ;; using the workaround is that the strings gathered by the kernel
- ;; driver are too long and are filled with trailing garbage (including
- ;; leftover strings). Writing this out by hand is a nuisance, so for
- ;; now I will just live with the bug.
- movx a, @dptr
- mov r1, a
- inc dptr
- movx a, @dptr
- mov r2, a
- mov dptr, SUDPTRH
- mov a, r1
- movx @dptr, a
- mov dptr, SUDPTRL
- mov a, r2
- movx @dptr, a
- ;; done
- ljmp setup_done_ack
-
-setup_Get_Descriptor_not_string:
- ljmp setup_stall
-
-setup_breq_not_06:
- cjne r2, #0x08, setup_breq_not_08
- ;; Get_Configuration. always 1. return one byte.
- ;; this is reusable
- mov a, #1
-setup_return_one_byte:
- mov dptr, IN0BUF
- movx @dptr, a
- mov a, #1
- mov dptr, IN0BC
- movx @dptr, a
- ljmp setup_done_ack
-setup_breq_not_08:
- cjne r2, #0x09, setup_breq_not_09
- ;; 09: Set_Configuration. ignored.
- ljmp setup_done_ack
-setup_breq_not_09:
- cjne r2, #0x0a, setup_breq_not_0a
- ;; 0a: Get_Interface. get the current altsetting for int[wIndexL]
- ;; since we only have one interface, ignore wIndexL, return a 0
- mov a, #0
- ljmp setup_return_one_byte
-setup_breq_not_0a:
- cjne r2, #0x0b, setup_breq_not_0b
- ;; 0b: Set_Interface. set altsetting for interface[wIndexL]. ignored
- ljmp setup_done_ack
-setup_breq_not_0b:
- ljmp setup_stall
-
-
-setup_done_ack:
- ;; now clear HSNAK
- mov dptr, EP0CS
- mov a, #0x02
- movx @dptr, a
- sjmp setup_done
-setup_stall:
- ;; unhandled. STALL
- ;EP0CS |= bmEPSTALL
- mov dptr, EP0CS
- movx a, @dptr
- orl a, EP0STALLbit
- movx @dptr, a
- sjmp setup_done
-
-setup_done:
- pop acc
- pop dph1
- pop dpl1
- pop dph
- pop dpl
- pop dps
- reti
-
-;;; ==============================================================
-
-set_baud: ; baud index in r3
- ;; verify a < 10
- mov a, r3
- jb ACC.7, set_baud__badbaud
- clr c
- subb a, #10
- jnc set_baud__badbaud
- mov a, r3
- rl a ; a = index*2
- add a, #LOW(baud_table)
- mov dpl, a
- mov a, #HIGH(baud_table)
- addc a, #0
- mov dph, a
- ;; TODO: shut down xmit/receive
- ;; TODO: wait for current xmit char to leave
- ;; TODO: shut down timer to avoid partial-char glitch
- movx a,@dptr ; BAUD_HIGH
- mov RCAP2H, a
- mov TH2, a
- inc dptr
- movx a,@dptr ; BAUD_LOW
- mov RCAP2L, a
- mov TL2, a
- ;; TODO: restart xmit/receive
- ;; TODO: reenable interrupts, resume tx if pending
- clr c ; c=0: success
- ret
-set_baud__badbaud:
- setb c ; c=1: failure
- ret
-
-;;; ==================================================
-control_pins:
- cjne r1, #0x41, control_pins_in
-control_pins_out:
- ;TODO BKPT is DTR
- mov a, r3 ; wValue[0] holds new bits: b7 is new RTS
- xrl a, #0xff ; 1 means active, 0V, +12V ?
- anl a, #0x80
- mov r3, a
- mov dptr, OUTC
- movx a, @dptr ; only change bit 7
- anl a, #0x7F ; ~0x84
- orl a, r3
- movx @dptr, a ; other pins are inputs, bits ignored
- ljmp setup_done_ack
-control_pins_in:
- mov dptr, PINSC
- movx a, @dptr
- xrl a, #0xff
- ljmp setup_return_one_byte
-
-;;; ========================================
-
-ISR_Ep2in:
- push dps
- push dpl
- push dph
- push dpl1
- push dph1
- push acc
- mov a,EXIF
- clr acc.4
- mov EXIF,a ; clear INT2 first
- mov dptr, IN07IRQ ; clear USB int
- mov a,#04h
- movx @dptr,a
-
- mov a, #0x20 ; Turn off the green LED
- mov dptr,OEA
- movx @dptr, a
-
-
- ;; do stuff
- lcall start_in
-
- mov a, #0x20 ; Turn off the green LED
- mov dptr,OEA
- movx @dptr, a
-
-
-
- pop acc
- pop dph1
- pop dpl1
- pop dph
- pop dpl
- pop dps
- reti
-
-ISR_Ep2out:
- push dps
- push dpl
- push dph
- push dpl1
- push dph1
- push acc
-
- mov a, #0x10 ; Turn the green LED
- mov dptr,OEA
- movx @dptr, a
-
-
-
- mov a,EXIF
- clr acc.4
- mov EXIF,a ; clear INT2 first
- mov dptr, OUT07IRQ ; clear USB int
- mov a,#04h
- movx @dptr,a
-
- ;; do stuff
-
- ;; copy data into buffer. for now, assume we will have enough space
- mov dptr, OUT2BC ; get byte count
- movx a,@dptr
- mov r1, a
- clr a
- mov dps, a
- mov dptr, OUT2BUF ; load DPTR0 with source
- mov dph1, #HIGH(tx_ring) ; load DPTR1 with target
- mov dpl1, tx_ring_in
-OUT_loop:
- movx a,@dptr ; read
- inc dps ; switch to DPTR1: target
- inc dpl1 ; target = tx_ring_in+1
- movx @dptr,a ; store
- mov a,dpl1
- cjne a, tx_ring_out, OUT_no_overflow
- sjmp OUT_overflow
-OUT_no_overflow:
- inc tx_ring_in ; tx_ring_in++
- inc dps ; switch to DPTR0: source
- inc dptr
- djnz r1, OUT_loop
- sjmp OUT_done
-OUT_overflow:
- ;; signal overflow
- ;; fall through
-OUT_done:
- ;; ack
- mov dptr,OUT2BC
- movx @dptr,a
-
- ;; start tx
- acall maybe_start_tx
- ;acall dump_stat
-
- mov a, #0x20 ; Turn off the green LED
- mov dptr,OEA
- movx @dptr, a
-
- pop acc
- pop dph1
- pop dpl1
- pop dph
- pop dpl
- pop dps
- reti
-
-dump_stat:
- ;; fill in EP4in with a debugging message:
- ;; tx_ring_in, tx_ring_out, rx_ring_in, rx_ring_out
- ;; tx_active
- ;; tx_ring[0..15]
- ;; 0xfc
- ;; rx_ring[0..15]
- clr a
- mov dps, a
-
- mov dptr, IN4CS
- movx a, @dptr
- jb acc.1, dump_stat__done; busy: cannot dump, old one still pending
- mov dptr, IN4BUF
-
- mov a, tx_ring_in
- movx @dptr, a
- inc dptr
- mov a, tx_ring_out
- movx @dptr, a
- inc dptr
-
- mov a, rx_ring_in
- movx @dptr, a
- inc dptr
- mov a, rx_ring_out
- movx @dptr, a
- inc dptr
-
- clr a
- jnb TX_RUNNING, dump_stat__no_tx_running
- inc a
-dump_stat__no_tx_running:
- movx @dptr, a
- inc dptr
- ;; tx_ring[0..15]
- inc dps
- mov dptr, #tx_ring ; DPTR1: source
- mov r1, #16
-dump_stat__tx_ring_loop:
- movx a, @dptr
- inc dptr
- inc dps
- movx @dptr, a
- inc dptr
- inc dps
- djnz r1, dump_stat__tx_ring_loop
- inc dps
-
- mov a, #0xfc
- movx @dptr, a
- inc dptr
-
- ;; rx_ring[0..15]
- inc dps
- mov dptr, #rx_ring ; DPTR1: source
- mov r1, #16
-dump_stat__rx_ring_loop:
- movx a, @dptr
- inc dptr
- inc dps
- movx @dptr, a
- inc dptr
- inc dps
- djnz r1, dump_stat__rx_ring_loop
-
- ;; now send it
- clr a
- mov dps, a
- mov dptr, IN4BC
- mov a, #38
- movx @dptr, a
-dump_stat__done:
- ret
-
-;;; ============================================================
-
-maybe_start_tx:
- ;; make sure the tx process is running.
- jb TX_RUNNING, start_tx_done
-start_tx:
- ;; is there work to be done?
- mov a, tx_ring_in
- cjne a,tx_ring_out, start_tx__work
- ret ; no work
-start_tx__work:
- ;; tx was not running. send the first character, setup the TI int
- inc tx_ring_out ; [++tx_ring_out]
- mov dph, #HIGH(tx_ring)
- mov dpl, tx_ring_out
- movx a, @dptr
- mov sbuf, a
- setb TX_RUNNING
-start_tx_done:
- ;; can we unthrottle the host tx process?
- ;; step 1: do we care?
- mov a, #0
- cjne a, tx_unthrottle_threshold, start_tx__maybe_unthrottle_tx
- ;; nope
-start_tx_really_done:
- ret
-start_tx__maybe_unthrottle_tx:
- ;; step 2: is there now room?
- mov a, tx_ring_out
- setb c
- subb a, tx_ring_in
- ;; a is now write_room. If thresh >= a, we can unthrottle
- clr c
- subb a, tx_unthrottle_threshold
- jc start_tx_really_done ; nope
- ;; yes, we can unthrottle. remove the threshold and mark a request
- mov tx_unthrottle_threshold, #0
- setb DO_TX_UNTHROTTLE
- ;; prod rx, which will actually send the message when in2 becomes free
- ljmp start_in
-
-
-serial_int:
- push dps
- push dpl
- push dph
- push dpl1
- push dph1
- push acc
- jnb TI, serial_int__not_tx
- ;; tx finished. send another character if we have one
- clr TI ; clear int
- clr TX_RUNNING
- lcall start_tx
-serial_int__not_tx:
- jnb RI, serial_int__not_rx
- lcall get_rx_char
- clr RI ; clear int
-serial_int__not_rx:
- ;; return
- pop acc
- pop dph1
- pop dpl1
- pop dph
- pop dpl
- pop dps
- reti
-
-get_rx_char:
- mov dph, #HIGH(rx_ring)
- mov dpl, rx_ring_in
- inc dpl ; target = rx_ring_in+1
- mov a, sbuf
- movx @dptr, a
- ;; check for overflow before incrementing rx_ring_in
- mov a, dpl
- cjne a, rx_ring_out, get_rx_char__no_overflow
- ;; signal overflow
- ret
-get_rx_char__no_overflow:
- inc rx_ring_in
- ;; kick off USB INpipe
- acall start_in
- ret
-
-start_in:
- ;; check if the inpipe is already running.
- mov a,#0x10
- mov dptr, OEA
- movx @dptr,a
-
- mov dptr, IN2CS
- movx a, @dptr
- jb acc.1, start_in__done; int will handle it
- jb DO_TX_UNTHROTTLE, start_in__do_tx_unthrottle
- ;; see if there is any work to do. a serial interrupt might occur
- ;; during this sequence?
- mov a, rx_ring_in
- cjne a, rx_ring_out, start_in__have_work
- ret ; nope
-start_in__have_work:
- ;; now copy as much data as possible into the pipe. 63 bytes max.
- clr a
- mov dps, a
- mov dph, #HIGH(rx_ring) ; load DPTR0 with source
- inc dps
- mov dptr, IN2BUF ; load DPTR1 with target
- movx @dptr, a ; in[0] signals that rest of IN is rx data
- inc dptr
- inc dps
- ;; loop until we run out of data, or we have copied 64 bytes
- mov r1, #1 ; INbuf size counter
-start_in__loop:
- mov a, rx_ring_in
- cjne a, rx_ring_out, start_inlocal_irq_enablell_copying
- sjmp start_in__kick
-start_inlocal_irq_enablell_copying:
- inc rx_ring_out
- mov dpl, rx_ring_out
- movx a, @dptr
- inc dps
- movx @dptr, a ; write into IN buffer
- inc dptr
- inc dps
- inc r1
- cjne r1, #64, start_in__loop; loop
-start_in__kick:
- ;; either we ran out of data, or we copied 64 bytes. r1 has byte count
- ;; kick off IN
- mov a, #0x10 ; Turn the green LED
- mov dptr,OEA
- movx @dptr, a
- mov dptr, IN2BC
- mov a, r1
- jz start_in__done
- movx @dptr, a
- ;; done
-start_in__done:
- ;acall dump_stat
- ret
-start_in__do_tx_unthrottle:
- ;; special sequence: send a tx unthrottle message
- clr DO_TX_UNTHROTTLE
- clr a
- mov dps, a
- mov dptr, IN2BUF
- mov a, #1
- movx @dptr, a
- inc dptr
- mov a, #2
- movx @dptr, a
- mov dptr, IN2BC
- movx @dptr, a
- ret
-
-putchar:
- clr TI
- mov SBUF, a
-putchar_wait:
- jnb TI, putchar_wait
- clr TI
- ret
-
-
-baud_table: ; baud_high, then baud_low
- ;; baud[0]: 110
- .byte BAUD_HIGH(110)
- .byte BAUD_LOW(110)
- ;; baud[1]: 300
- .byte BAUD_HIGH(300)
- .byte BAUD_LOW(300)
- ;; baud[2]: 1200
- .byte BAUD_HIGH(1200)
- .byte BAUD_LOW(1200)
- ;; baud[3]: 2400
- .byte BAUD_HIGH(2400)
- .byte BAUD_LOW(2400)
- ;; baud[4]: 4800
- .byte BAUD_HIGH(4800)
- .byte BAUD_LOW(4800)
- ;; baud[5]: 9600
- .byte BAUD_HIGH(9600)
- .byte BAUD_LOW(9600)
- ;; baud[6]: 19200
- .byte BAUD_HIGH(19200)
- .byte BAUD_LOW(19200)
- ;; baud[7]: 38400
- .byte BAUD_HIGH(38400)
- .byte BAUD_LOW(38400)
- ;; baud[8]: 57600
- .byte BAUD_HIGH(57600)
- .byte BAUD_LOW(57600)
- ;; baud[9]: 115200
- .byte BAUD_HIGH(115200)
- .byte BAUD_LOW(115200)
-
-desc_device:
- .byte 0x12, 0x01, 0x00, 0x01, 0xff, 0xff, 0xff, 0x40
- .byte 0xcd, 0x06, 0x04, 0x01, 0x89, 0xab, 1, 2, 3, 0x01
-;;; The "real" device id, which must match the host driver, is that
-;;; "0xcd 0x06 0x04 0x01" sequence, which is 0x06cd, 0x0104
-
-desc_config1:
- .byte 0x09, 0x02, 0x20, 0x00, 0x01, 0x01, 0x00, 0x80, 0x32
- .byte 0x09, 0x04, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff, 0x00
- .byte 0x07, 0x05, 0x82, 0x03, 0x40, 0x00, 0x01
- .byte 0x07, 0x05, 0x02, 0x02, 0x40, 0x00, 0x00
-
-desc_strings:
- .word string_langids, string_mfg, string_product, string_serial
-desc_strings_end:
-
-string_langids: .byte string_langids_end-string_langids
- .byte 3
- .word 0
-string_langids_end:
-
- ;; sigh. These strings are Unicode, meaning UTF16? 2 bytes each. Now
- ;; *that* is a pain in the ass to encode. And they are little-endian
- ;; too. Use this perl snippet to get the bytecodes:
- /* while (<>) {
- @c = split(//);
- foreach $c (@c) {
- printf("0x%02x, 0x00, ", ord($c));
- }
- }
- */
-
-string_mfg: .byte string_mfg_end-string_mfg
- .byte 3
-; .byte "ACME usb widgets"
- .byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x62, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00, 0x73, 0x00
-string_mfg_end:
-
-string_product: .byte string_product_end-string_product
- .byte 3
-; .byte "ACME USB serial widget"
- .byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x20, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00
-string_product_end:
-
-string_serial: .byte string_serial_end-string_serial
- .byte 3
-; .byte "47"
- .byte 0x34, 0x00, 0x37, 0x00
-string_serial_end:
-
-;;; ring buffer memory
- ;; tx_ring_in+1 is where the next input byte will go
- ;; [tx_ring_out] has been sent
- ;; if tx_ring_in == tx_ring_out, theres no work to do
- ;; there are (tx_ring_in - tx_ring_out) chars to be written
- ;; dont let _in lap _out
- ;; cannot inc if tx_ring_in+1 == tx_ring_out
- ;; write [tx_ring_in+1] then tx_ring_in++
- ;; if (tx_ring_in+1 == tx_ring_out), overflow
- ;; else tx_ring_in++
- ;; read/send [tx_ring_out+1], then tx_ring_out++
-
- ;; rx_ring_in works the same way
-
- .org 0x1000
-tx_ring:
- .skip 0x100 ; 256 bytes
-rx_ring:
- .skip 0x100 ; 256 bytes
-
-
- .END
-
diff --git a/firmware/korg/k1212.dsp.ihex b/firmware/korg/k1212.dsp.ihex
deleted file mode 100644
index b151997b380c..000000000000
--- a/firmware/korg/k1212.dsp.ihex
+++ /dev/null
@@ -1,987 +0,0 @@
-:1000000001FF18FFF5FFCFFF00FF00FFFFFF00FF1C
-:1000100000FF00FFFFFF00FF00FF00FFFFFF00FFEA
-:1000200026FF18FFFFFF0FFF00FF00FFFFFF00FF8D
-:1000300000FF00FFFFFF00FF00FF00FFFFFF00FFCA
-:1000400000FF0AFFFFFF1FFF00FF00FFFFFF00FF91
-:1000500000FF00FFFFFF00FF00FF00FFFFFF00FFAA
-:1000600000FF0AFFFFFF1FFF00FF00FFFFFF00FF71
-:1000700000FF00FFFFFF00FF00FF00FFFFFF00FF8A
-:1000800000FF0AFFFFFF1FFF00FF00FFFFFF00FF51
-:1000900000FF00FFFFFF00FF00FF00FFFFFF00FF6A
-:1000A00038FF18FFFFFFDFFF00FF00FFFFFF00FF2B
-:1000B00000FF00FFFFFF00FF00FF00FFFFFF00FF4A
-:1000C00000FF0AFFFFFF1FFF00FF00FFFFFF00FF11
-:1000D00000FF00FFFFFF00FF00FF00FFFFFF00FF2A
-:1000E00003FF3CFFFFFFFCFF67FF40FFFFFFC0FF78
-:1000F000FFFF93FFFFFFE0FF00FF0CFFFFFF0CFF80
-:100100000CFF0CFFFFFF00FF30FF0CFFFFFF00FFA5
-:100110000FFF40FFFFFFF4FF47FF80FFFFFF0AFFD5
-:1001200082FF23FFFFFF0FFF8DFF93FFFFFF7AFF8B
-:100130008DFF83FFFFFF70FF47FF90FFFFFF00FF72
-:1001400000FF48FFFFFF04FFA0FF23FFFFFF0FFF9B
-:1001500046FF90FFFFFF6AFF00FF0CFFFFFF20FF3D
-:1001600000FF04FFFFFF1CFF00FF04FFFFFF1CFF59
-:1001700000FF04FFFFFF1CFF00FF04FFFFFF1CFF49
-:1001800000FF04FFFFFF10FF00FF04FFFFFF10FF51
-:1001900000FF04FFFFFF10FF00FF04FFFFFF10FF41
-:1001A00000FF04FFFFFF10FF00FF04FFFFFF10FF31
-:1001B00000FF04FFFFFF10FF00FF04FFFFFF10FF21
-:1001C00000FF04FFFFFF10FF00FF04FFFFFF10FF11
-:1001D00000FF04FFFFFF10FF00FF04FFFFFF10FF01
-:1001E00072FF1CFFFFFF5FFF02FF40FFFFFF40FFAA
-:1001F00011FF90FFFFFF20FF00FF48FFFFFF00FF00
-:100200008BFF93FFFFFF20FF00FF40FFFFFF00FF7A
-:1002100086FF93FFFFFF70FF8BFF93FFFFFF30FF11
-:100220008DFF93FFFFFF40FF02FF91FFFFFF80FF65
-:1002300002FF91FFFFFF90FF8DFF93FFFFFFC0FFC5
-:1002400046FF90FFFFFF20FF8DFF93FFFFFFD0FFD2
-:1002500000FF48FFFFFF00FF8BFF93FFFFFF40FF02
-:10026000FFFF47FFFFFFF0FF8DFF93FFFFFFE0FF62
-:1002700000FF34FFFFFF17FF00FF38FFFFFF17FFEE
-:1002800080FF37FFFFFF02FF84FF3BFFFFFF02FFFE
-:1002900002FF34FFFFFF4AFF02FF38FFFFFF4AFF64
-:1002A00001FF34FFFFFF2BFF01FF38FFFFFF2BFF94
-:1002B00080FF43FFFFFF00FF82FF93FFFFFF50FF20
-:1002C00081FF43FFFFFF20FF82FF93FFFFFF60FFDF
-:1002D00084FF43FFFFFF00FF82FF93FFFFFF70FFDC
-:1002E00085FF43FFFFFF20FF83FF93FFFFFFC0FF5A
-:1002F00082FF37FFFFFF81FF00FF34FFFFFF89FF11
-:1003000088FF43FFFFFF00FF00FF68FFFFFF07FFBD
-:1003100082FF83FFFFFF60FF00FF68FFFFFF07FF13
-:100320008CFF43FFFFFF00FF00FF68FFFFFF07FF99
-:1003300083FF83FFFFFFC0FF00FF68FFFFFF07FF92
-:100340008AFF43FFFFFF00FF00FF68FFFFFF07FF7B
-:1003500082FF83FFFFFF50FF00FF68FFFFFF07FFE3
-:100360008EFF43FFFFFF00FF00FF68FFFFFF07FF57
-:1003700082FF83FFFFFF70FF00FF68FFFFFF07FFA3
-:1003800083FF37FFFFFF01FF00FF34FFFFFF89FFFF
-:1003900000FF34FFFFFF26FF30FF0CFFFFFF00FFD1
-:1003A00000FF40FFFFFF26FF20FF40FFFFFF04FF8D
-:1003B00080FF41FFFFFF02FFE0FF20FFFFFF0FFF75
-:1003C00000FF68FFFFFFB6FF63FF22FFFFFF0FFF85
-:1003D00062FF6AFFFFFFA6FF62FF6AFFFFFFA6FF43
-:1003E00000FF68FFFFFFA6FF00FF09FFFFFF07FFF9
-:1003F00040FF41FFFFFF02FFE0FF20FFFFFF0FFF75
-:1004000000FF68FFFFFFB6FF63FF22FFFFFF0FFF44
-:1004100062FF6AFFFFFFA6FF62FF6AFFFFFFA6FF02
-:1004200000FF68FFFFFFA6FF05FF41FFFFFF02FF80
-:10043000E0FF20FFFFFF0FFF8BFF93FFFFFFBBFFDE
-:1004400002FF41FFFFFF82FFE0FF20FFFFFF0FFFE2
-:100450008BFF93FFFFFFCBFF05FF41FFFFFFE2FF95
-:10046000E0FF20FFFFFF0FFF8BFF93FFFFFFDBFF8E
-:1004700020FF0CFFFFFF00FF30FF0CFFFFFF00FF1E
-:1004800000FF40FFFFFF26FF00FF41FFFFFF02FFCD
-:10049000E0FF20FFFFFF0FFF83FF93FFFFFF82FFBF
-:1004A00083FF93FFFFFF9BFF03FF41FFFFFF02FF5F
-:1004B000E0FF20FFFFFF0FFF83FF93FFFFFFA2FF7F
-:1004C00083FF93FFFFFFBBFF20FF0CFFFFFF00FF39
-:1004D00000FF40FFFFFF00FF44FF90FFFFFF60FFB2
-:1004E00000FF00FFFFFF00FF00FF00FFFFFF00FF16
-:1004F00000FF00FFFFFF00FF00FF00FFFFFF00FF06
-:1005000000FF00FFFFFF00FF00FF00FFFFFF00FFF5
-:1005100000FF00FFFFFF00FF00FF00FFFFFF00FFE5
-:1005200021FF40FFFFFF60FF40FF90FFFFFF20FF24
-:1005300002FF35FFFFFF00FF00FF34FFFFFF08FF52
-:1005400000FF3CFFFFFF85FF0AFF14FFFFFFAEFF28
-:1005500000FFA0FFFFFF03FF00FF35FFFFFF00FFCD
-:1005600000FF34FFFFFF08FF02FF3CFFFFFF05FF16
-:100570000AFF14FFFFFFFEFF00FFA0FFFFFF03FFC6
-:1005800003FF35FFFFFF00FF00FF34FFFFFF08FF01
-:1005900002FF3CFFFFFF05FF0BFF14FFFFFF4EFFB5
-:1005A00000FFA0FFFFFF03FF00FF35FFFFFF01FF7C
-:1005B00078FF1CFFFFFF5FFF03FF35FFFFFF01FF19
-:1005C00078FF1CFFFFFF5FFF5BFF40FFFFFFF0FFB7
-:1005D000FFFF93FFFFFF30FF80FF42FFFFFF70FF31
-:1005E000FFFF93FFFFFF60FFDFFF40FFFFFFF0FF14
-:1005F000FEFF93FFFFFFF0FF80FF42FFFFFF70FF52
-:10060000FFFF93FFFFFF20FFC1FF41FFFFFF80FFC0
-:10061000FFFF93FFFFFFF0FF03FF3CFFFFFFFCFF27
-:1006200000FF3CFFFFFF04FF02FF3CFFFFFF23FF33
-:1006300000FF48FFFFFF00FF8BFF93FFFFFF20FF3E
-:1006400059FF18FFFFFFDFFF00FF48FFFFFF00FF1C
-:100650008BFF93FFFFFF20FF18FF23FFFFFF0FFF1C
-:100660000CFF14FFFFFFE4FF8BFF83FFFFFF24FF5E
-:1006700000FF22FFFFFF0FFF0DFF18FFFFFF0FFF1F
-:100680008BFF83FFFFFF20FF00FF40FFFFFF14FFF2
-:10069000E0FF22FFFFFF0FFF10FF18FFFFFFD0FF5B
-:1006A0008BFF83FFFFFF20FF00FF40FFFFFF24FFC2
-:1006B000E0FF22FFFFFF0FFF10FF18FFFFFF30FFDB
-:1006C0008BFF83FFFFFF20FF00FF40FFFFFF44FF82
-:1006D000E0FF22FFFFFF0FFF22FF18FFFFFF90FF49
-:1006E0008BFF83FFFFFF20FF00FF40FFFFFF84FF22
-:1006F000E0FF22FFFFFF0FFF22FF18FFFFFF90FF29
-:100700000CFF18FFFFFF6FFF00FF40FFFFFF00FF20
-:1007100086FF93FFFFFF70FF76FF1CFFFFFF9FFF29
-:1007200086FF83FFFFFF50FF86FF83FFFFFF64FF0D
-:1007300060FF22FFFFFF0FFF74FF18FFFFFF81FF25
-:1007400000FF35FFFFFF00FF60FF1CFFFFFF7FFF83
-:1007500061FF1CFFFFFFAFFF77FF1CFFFFFFAFFF35
-:1007600063FF1CFFFFFF4FFF05FF35FFFFFF00FF8B
-:1007700092FF3BFFFFFF00FF00FF34FFFFFF08FF7A
-:1007800000FF38FFFFFF08FF00FF3CFFFFFF65FF92
-:100790000FFF14FFFFFF6EFF00FF60FFFFFF03FF6F
-:1007A00000FF60FFFFFF13FF00FF78FFFFFF13FF55
-:1007B00000FF78FFFFFF03FF05FF35FFFFFFE0FFAE
-:1007C0007FFF38FFFFFF00FF00FF34FFFFFF08FF40
-:1007D00000FF38FFFFFF08FF00FF3CFFFFFF65FF42
-:1007E00010FF14FFFFFF0EFF00FF60FFFFFF03FF7E
-:1007F00000FF60FFFFFF13FF00FF58FFFFFF13FF25
-:1008000000FF58FFFFFF03FF79FF1CFFFFFFFFFF03
-:1008100000FF0AFFFFFF0FFF0EFF1CFFFFFF1FFF80
-:100820008DFF83FFFFFFE0FF78FF22FFFFFF0FFF39
-:1008300015FF1CFFFFFF85FF75FF1CFFFFFF8FFFEC
-:1008400000FF40FFFFFF40FF8BFF93FFFFFF80FF94
-:1008500002FF40FFFFFF60FF11FF90FFFFFF20FF3F
-:1008600016FF18FFFFFF1FFF0EFF1CFFFFFF1FFFFC
-:1008700075FF1CFFFFFF8FFF80FF35FFFFFF00FFAD
-:1008800000FF34FFFFFF08FF00FF40FFFFFF00FFF6
-:1008900040FF3CFFFFFF05FF11FF14FFFFFF4EFF6E
-:1008A00000FF68FFFFFF03FF87FF83FFFFFFF0FFED
-:1008B00086FF93FFFFFF80FF90FF37FFFFFF00FFE2
-:1008C00002FF34FFFFFF08FF00FF60FFFFFF03FF91
-:1008D00089FF93FFFFFF20FF00FF60FFFFFF03FF83
-:1008E00089FF93FFFFFF30FF00FF60FFFFFF03FF63
-:1008F00089FF93FFFFFF40FF00FF60FFFFFF03FF43
-:1009000089FF93FFFFFF50FF86FF97FFFFFF90FFD8
-:1009100003FF35FFFFFF00FF60FF1CFFFFFF7FFFAE
-:1009200063FF1CFFFFFF7FFF00FF40FFFFFF00FF93
-:100930008DFF93FFFFFF60FF82FF93FFFFFF40FFEC
-:1009400086FF93FFFFFFA0FF83FF37FFFFFF80FFBE
-:1009500075FF1CFFFFFF1FFF83FF43FFFFFF00FF2B
-:1009600087FF93FFFFFFE0FF6AFF1CFFFFFF0FFF02
-:1009700040FF41FFFFFF00FF8BFF93FFFFFF90FF52
-:1009800080FF41FFFFFF00FF8BFF93FFFFFFA0FFF2
-:100990008BFF87FFFFFF90FF7EFF38FFFFFF00FF09
-:1009A00040FF34FFFFFF08FF00FF38FFFFFF08FF95
-:1009B00000FF3CFFFFFF55FF13FF14FFFFFFBEFFCB
-:1009C00000FF60FFFFFF03FF00FF60FFFFFF13FF5B
-:1009D00000FF58FFFFFF13FF00FF58FFFFFF03FF5B
-:1009E00000FF60FFFFFF03FF00FF60FFFFFF13FF3B
-:1009F00000FF58FFFFFF13FF00FF58FFFFFF03FF3B
-:100A000000FF60FFFFFF03FF00FF60FFFFFF13FF1A
-:100A100000FF58FFFFFF13FF00FF58FFFFFF03FF1A
-:100A200000FF60FFFFFF03FF00FF60FFFFFF03FF0A
-:100A30008BFF97FFFFFF90FF05FF41FFFFFF00FFC8
-:100A400092FF43FFFFFF01FF86FF93FFFFFFF0FFD1
-:100A500086FF93FFFFFFE1FF8DFF83FFFFFFE0FFB6
-:100A600078FF22FFFFFF0FFF15FF1CFFFFFF85FF31
-:100A700075FF1CFFFFFF8FFF8DFF83FFFFFF40FF10
-:100A800078FF22FFFFFF0FFF53FF18FFFFFFB4FFA8
-:100A900072FF1CFFFFFF0FFF00FF40FFFFFF00FF83
-:100AA0008BFF93FFFFFF30FF02FF40FFFFFF60FF60
-:100AB00011FF90FFFFFF20FF16FF18FFFFFF4FFF02
-:100AC00038FF42FFFFFF50FF48FF90FFFFFFA0FFEE
-:100AD00000FF00FFFFFF00FF00FF00FFFFFF00FF20
-:100AE00000FF00FFFFFF00FF00FF00FFFFFF00FF10
-:100AF00030FF40FFFFFF00FF47FF90FFFFFF50FF69
-:100B000000FF0AFFFFFF0FFF1EFF1CFFFFFF0FFF8D
-:100B100020FF1CFFFFFFCFFF16FF18FFFFFF1FFF87
-:100B200000FF40FFFFFF00FF46FF90FFFFFF70FF49
-:100B300018FF1CFFFFFFEFFF6AFF1CFFFFFFBFFF57
-:100B40005CFF1CFFFFFF7FFF18FF1CFFFFFFEFFF95
-:100B500067FF1CFFFFFF3FFF5CFF1CFFFFFF7FFFE6
-:100B600008FF40FFFFFF00FF46FF90FFFFFF70FF01
-:100B700018FF1CFFFFFFEFFF69FF1CFFFFFF0FFFC8
-:100B80005DFF1CFFFFFF2FFF18FF1CFFFFFFEFFFA4
-:100B900079FF1CFFFFFF1FFF5CFF1CFFFFFF7FFFB4
-:100BA00018FF1CFFFFFFEFFF5CFF1CFFFFFF7FFF35
-:100BB00018FF1CFFFFFFEFFF5CFF1CFFFFFF7FFF25
-:100BC00018FF1CFFFFFFEFFF5DFF1CFFFFFF2FFF64
-:100BD00018FF1CFFFFFFEFFF5CFF1CFFFFFF7FFF05
-:100BE00018FF1CFFFFFFEFFF5CFF1CFFFFFF7FFFF5
-:100BF00018FF1CFFFFFFEFFF5CFF1CFFFFFF7FFFE5
-:100C000018FF1CFFFFFFEFFF5DFF1CFFFFFF2FFF23
-:100C100018FF1CFFFFFFEFFF5CFF1CFFFFFF7FFFC4
-:100C200018FF1CFFFFFFEFFF5CFF1CFFFFFF7FFFB4
-:100C300018FF1CFFFFFFEFFF5CFF1CFFFFFF7FFFA4
-:100C400018FF1CFFFFFFEFFF5DFF1CFFFFFF2FFFE3
-:100C500018FF1CFFFFFFEFFF66FF1CFFFFFF1FFFDA
-:100C60005CFF1CFFFFFF7FFF16FF18FFFFFF4FFF1A
-:100C70008BFF87FFFFFF61FF00FF34FFFFFF89FF4E
-:100C800000FF34FFFFFF26FF00FF60FFFFFF06FFAE
-:100C900083FF93FFFFFFD0FF00FF60FFFFFF06FF12
-:100CA00083FF93FFFFFFE0FF38FF22FFFFFF0FFFEF
-:100CB00019FF14FFFFFF85FF8BFF83FFFFFF50FF2E
-:100CC00078FF22FFFFFF0FFF00FF60FFFFFF07FF1E
-:100CD00004FF0DFFFFFF30FF00FF60FFFFFF07FF76
-:100CE00083FF93FFFFFFF0FF00FF60FFFFFF07FFA1
-:100CF00008FF0DFFFFFF30FF00FF60FFFFFF07FF52
-:100D000086FF93FFFFFF40FF00FF40FFFFFF01FF53
-:100D10008BFF93FFFFFF51FF00FF34FFFFFF46FFF4
-:100D200000FF09FFFFFF06FF8BFF97FFFFFF61FF3B
-:100D300083FF8BFFFFFFD0FF83FF8BFFFFFFE1FFF0
-:100D400087FF37FFFFFF01FF6EFF1CFFFFFFBFFFA5
-:100D500087FF37FFFFFF00FF92FF37FFFFFF01FF15
-:100D60007FFF38FFFFFF00FF7EFF38FFFFFF01FF1F
-:100D700023FF1CFFFFFFFFFF7EFF38FFFFFF00FF89
-:100D800083FF87FFFFFFF1FF86FF8BFFFFFF41FF20
-:100D90006CFF1CFFFFFF2FFF87FF37FFFFFF00FFE8
-:100DA0008BFF8BFFFFFFA0FF00FF34FFFFFF08FF5B
-:100DB00040FF38FFFFFF08FF00FF3CFFFFFF55FF2C
-:100DC0001BFF14FFFFFFCEFF00FF60FFFFFF03FFCD
-:100DD00000FF60FFFFFF13FF00FF78FFFFFF13FF1F
-:100DE00000FF78FFFFFF03FF00FF60FFFFFF03FF2F
-:100DF00000FF60FFFFFF13FF00FF78FFFFFF13FFFF
-:100E000000FF78FFFFFF03FF00FF60FFFFFF03FF0E
-:100E100000FF60FFFFFF13FF00FF78FFFFFF13FFDE
-:100E200000FF78FFFFFF03FF8BFF83FFFFFFE1FF62
-:100E30008BFF83FFFFFFF0FF00FF78FFFFFF13FF33
-:100E400000FF78FFFFFF03FF8BFF9BFFFFFFA0FF6B
-:100E50008BFF87FFFFFF90FF7EFF38FFFFFF00FF44
-:100E600040FF34FFFFFF08FF00FF38FFFFFF08FFD0
-:100E700000FF3CFFFFFF55FF1DFF14FFFFFF3EFF7C
-:100E800000FF60FFFFFF03FF00FF60FFFFFF13FF96
-:100E900000FF58FFFFFF13FF00FF58FFFFFF03FF96
-:100EA00000FF60FFFFFF03FF00FF60FFFFFF13FF76
-:100EB00000FF58FFFFFF13FF00FF58FFFFFF03FF76
-:100EC00000FF60FFFFFF03FF00FF60FFFFFF13FF56
-:100ED00000FF58FFFFFF13FF00FF58FFFFFF03FF56
-:100EE00000FF60FFFFFF03FF00FF60FFFFFF03FF46
-:100EF0008BFF97FFFFFF90FF00FF0AFFFFFF0FFF31
-:100F00008BFF87FFFFFF61FF00FF34FFFFFF89FFBB
-:100F100000FF34FFFFFF26FF00FF60FFFFFF06FF1B
-:100F200083FF93FFFFFFD0FF00FF60FFFFFF06FF7F
-:100F300083FF93FFFFFFE0FF8BFF83FFFFFF51FF66
-:100F400079FF22FFFFFF0FFF74FF18FFFFFFB4FFC1
-:100F500038FF22FFFFFF0FFF1EFF14FFFFFFD5FF2B
-:100F60008BFF83FFFFFF50FF78FF22FFFFFF0FFF84
-:100F700000FF60FFFFFF07FF04FF0DFFFFFF30FFD3
-:100F800000FF60FFFFFF07FF83FF93FFFFFFF0FFFE
-:100F900000FF60FFFFFF07FF08FF0DFFFFFF30FFAF
-:100FA00000FF60FFFFFF07FF86FF93FFFFFF40FF8B
-:100FB00000FF40FFFFFF01FF8BFF93FFFFFF51FF8B
-:100FC00000FF34FFFFFF46FF00FF09FFFFFF06FFA2
-:100FD0008BFF97FFFFFF61FF83FF8BFFFFFFD0FFBA
-:100FE00083FF8BFFFFFFE1FF87FF37FFFFFF01FF5D
-:100FF0006EFF1CFFFFFFBFFF87FF37FFFFFF00FFF4
-:1010000092FF37FFFFFF01FF7FFF38FFFFFF00FF69
-:1010100023FF1CFFFFFFFFFF7EFF38FFFFFF00FFE6
-:1010200083FF87FFFFFFF1FF86FF8BFFFFFF41FF7D
-:101030006CFF1CFFFFFF2FFF00FF0AFFFFFF0FFFEA
-:101040008DFF8FFFFFFFC5FF20FF14FFFFFFAEFFE7
-:1010500000FF00FFFFFF00FF00FF0AFFFFFF0FFF81
-:101060008BFF83FFFFFF84FF00FF23FFFFFF0FFFC6
-:101070008BFF93FFFFFF8AFF64FF1CFFFFFFE0FF72
-:101080007EFF38FFFFFF00FF00FF38FFFFFF08FF74
-:1010900000FF3CFFFFFFE5FF21FF14FFFFFF5EFFA6
-:1010A00000FF40FFFFFF00FF00FF58FFFFFF03FFAF
-:1010B00000FF0AFFFFFF0FFF08FF40FFFFFF10FFC9
-:1010C00047FF90FFFFFF20FF00FF04FFFFFF1CFF13
-:1010D00000FF04FFFFFF1CFF00FF04FFFFFF1CFFDA
-:1010E00000FF04FFFFFF1CFF00FF04FFFFFF10FFD6
-:1010F00000FF04FFFFFF10FF00FF04FFFFFF10FFD2
-:1011000000FF04FFFFFF10FF00FF04FFFFFF10FFC1
-:1011100000FF04FFFFFF10FF00FF04FFFFFF10FFB1
-:1011200000FF04FFFFFF10FF00FF04FFFFFF10FFA1
-:1011300000FF04FFFFFF10FF00FF04FFFFFF10FF91
-:1011400000FF04FFFFFF10FF02FF40FFFFFF40FF13
-:1011500011FF90FFFFFF20FF78FF42FFFFFF50FFCE
-:1011600048FF90FFFFFFA0FF00FF00FFFFFF00FF11
-:1011700000FF00FFFFFF00FF00FF00FFFFFF00FF79
-:1011800000FF00FFFFFF00FF00FF00FFFFFF00FF69
-:10119000B0FF40FFFFFF00FF47FF90FFFFFF50FF42
-:1011A00000FF40FFFFFF00FF8DFF93FFFFFF40FFA9
-:1011B0008DFF93FFFFFF50FF00FF40FFFFFF01FF88
-:1011C0008BFF93FFFFFF51FF00FF40FFFFFF00FF7A
-:1011D00046FF90FFFFFF70FF8DFF83FFFFFFD0FFF3
-:1011E00078FF22FFFFFF0FFF0CFF18FFFFFF90FFAC
-:1011F0000CFF18FFFFFF6FFF20FF0CFFFFFF00FF3A
-:1012000000FF34FFFFFF09FF00FF34FFFFFF08FF6F
-:1012100000FF38FFFFFF08FF00FF38FFFFFF09FF57
-:1012200000FF38FFFFFF06FF00FF34FFFFFF26FF30
-:1012300098FFCCFFFFFF37FF00FF3CFFFFFFA5FF3C
-:1012400024FF14FFFFFFFEFF00FF60FFFFFF73FF9F
-:1012500008FF0DFFFFFF14FF98FF20FFFFFF0FFFA8
-:1012600000FF50FFFFFFC6FF69FFCCFFFFFF37FF06
-:1012700000FF05FFFFFF00FF00FF58FFFFFFC6FF55
-:1012800098FF20FFFFFF0FFF00FF60FFFFFF72FFCF
-:1012900008FF0DFFFFFF14FF00FF50FFFFFFC6FF19
-:1012A00069FFCCFFFFFF37FF00FF05FFFFFF00FFD7
-:1012B00000FF58FFFFFFC6FF98FF20FFFFFF0FFF53
-:1012C00000FF60FFFFFF73FF08FF0DFFFFFF14FF2C
-:1012D00000FF50FFFFFFC6FF69FF20FFFFFF0FFF6A
-:1012E00000FF05FFFFFF00FF00FF58FFFFFFC6FFE5
-:1012F00030FF0CFFFFFF00FF00FF0AFFFFFF0FFFA3
-:1013000000FF0CFFFFFF30FF47FF80FFFFFF58FF8C
-:1013100010FF0FFFFFFF01FF66FF23FFFFFF0FFF1F
-:1013200026FF18FFFFFF94FF00FF48FFFFFF00FFAD
-:101330008BFF93FFFFFF40FF80FF40FFFFFF00FF99
-:1013400049FF90FFFFFF40FF16FF0FFFFFFF02FF67
-:1013500066FF23FFFFFF0FFF38FF18FFFFFFB4FFFB
-:101360000FFF40FFFFFFF4FF47FF80FFFFFF0AFF73
-:1013700082FF23FFFFFF0FFF8DFF93FFFFFF7AFF29
-:101380007AFF26FFFFFF0FFF10FF27FFFFFF0FFF72
-:1013900038FF18FFFFFFB4FF27FF18FFFFFFD2FF42
-:1013A00000FF48FFFFFF00FF8BFF93FFFFFF30FFB1
-:1013B0008DFF83FFFFFF70FF47FF90FFFFFF00FFE0
-:1013C00000FF48FFFFFF04FFA0FF23FFFFFF0FFF09
-:1013D00046FF90FFFFFF6AFF00FF0CFFFFFF20FFAB
-:1013E00000FF0AFFFFFF1FFF10FF27FFFFFF0FFF98
-:1013F00029FF18FFFFFF92FF46FF80FFFFFF00FF5E
-:101400008BFF93FFFFFF20FF8DFF83FFFFFF70FF28
-:1014100047FF90FFFFFF00FF00FF48FFFFFF04FFB3
-:10142000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFB4
-:1014300000FF0CFFFFFF20FF00FF04FFFFFF1CFF6A
-:1014400000FF04FFFFFF1CFF00FF04FFFFFF1CFF66
-:1014500000FF04FFFFFF1CFF00FF04FFFFFF10FF62
-:1014600000FF04FFFFFF10FF00FF04FFFFFF10FF5E
-:1014700000FF04FFFFFF10FF00FF04FFFFFF10FF4E
-:1014800000FF04FFFFFF10FF00FF04FFFFFF10FF3E
-:1014900000FF04FFFFFF10FF00FF04FFFFFF10FF2E
-:1014A00000FF04FFFFFF10FF00FF04FFFFFF10FF1E
-:1014B00000FF04FFFFFF10FF00FF04FFFFFF03FF1B
-:1014C0000DFF18FFFFFF0FFF10FF27FFFFFF0FFFAC
-:1014D00031FF18FFFFFF12FF30FF0CFFFFFF00FF7F
-:1014E00008FF0CFFFFFF00FFFFFF4FFFFFFF89FF1B
-:1014F00090FF37FFFFFF00FF02FF34FFFFFF08FFF1
-:1015000000FF34FFFFFF34FF00FF34FFFFFF55FFF4
-:1015100046FF80FFFFFF08FF00FF0EFFFFFF0FFFEA
-:1015200000FF0DFFFFFF4EFFA7FF23FFFFFF0FFF91
-:1015300000FF68FFFFFFA3FF00FF0DFFFFFF4AFF53
-:1015400046FF80FFFFFF18FF00FF0EFFFFFF0FFFAA
-:1015500000FF0DFFFFFF5EFFAFFF23FFFFFF0FFF49
-:1015600000FF68FFFFFFA0FF00FF0DFFFFFF5AFF16
-:1015700046FF80FFFFFF48FF10FF0FFFFFFFFEFF4A
-:1015800087FF93FFFFFFFEFF00FF0DFFFFFF2EFF12
-:1015900002FF40FFFFFF06FFE0FF20FFFFFF0FFFFE
-:1015A00000FF40FFFFFF01FF63FF22FFFFFF0FFF70
-:1015B00000FF0DFFFFFF4AFF49FF6AFFFFFFA3FF88
-:1015C00000FF0DFFFFFF5AFF00FF68FFFFFFA0FFB6
-:1015D00000FF0DFFFFFF5AFF63FF22FFFFFF0FFF1A
-:1015E00000FF0DFFFFFF4AFF49FF6AFFFFFFA3FF58
-:1015F00000FF0DFFFFFF5AFF00FF68FFFFFFA0FF86
-:1016000063FF22FFFFFF0FFF00FF0DFFFFFF4AFFF9
-:1016100049FF6AFFFFFFA3FF00FF0DFFFFFF5AFF17
-:1016200000FF68FFFFFFA0FF63FF22FFFFFF0FFF28
-:1016300000FF0DFFFFFF4AFF49FF6AFFFFFFA3FF07
-:1016400000FF0DFFFFFF5AFF00FF68FFFFFFA0FF35
-:1016500063FF22FFFFFF0FFF00FF0DFFFFFF4AFFA9
-:1016600049FF6AFFFFFFA3FF00FF0DFFFFFF5AFFC7
-:1016700000FF68FFFFFFA0FF63FF22FFFFFF0FFFD8
-:1016800000FF0DFFFFFF4AFF49FF6AFFFFFFA3FFB7
-:1016900000FF0DFFFFFF5AFF00FF68FFFFFFA0FFE5
-:1016A00063FF22FFFFFF0FFF00FF0DFFFFFF4AFF59
-:1016B00049FF6AFFFFFFA3FF00FF0DFFFFFF5AFF77
-:1016C00000FF68FFFFFFA1FF46FF80FFFFFF28FF2D
-:1016D00000FF0EFFFFFF0FFF00FF0DFFFFFF4EFF9C
-:1016E000A7FF23FFFFFF0FFF00FF68FFFFFFA3FF20
-:1016F00000FF0DFFFFFF4AFF46FF80FFFFFF38FF9F
-:1017000000FF0EFFFFFF0FFF00FF0DFFFFFF5EFF5B
-:10171000AFFF23FFFFFF0FFF00FF68FFFFFFA0FFEA
-:1017200000FF0DFFFFFF5AFF63FF22FFFFFF0FFFC8
-:1017300000FF0DFFFFFF4AFF49FF6AFFFFFFA3FF06
-:1017400000FF0DFFFFFF5AFF00FF68FFFFFFA0FF34
-:1017500063FF22FFFFFF0FFF00FF0DFFFFFF4AFFA8
-:1017600049FF6AFFFFFFA3FF00FF0DFFFFFF5AFFC6
-:1017700000FF68FFFFFFA0FF63FF22FFFFFF0FFFD7
-:1017800000FF0DFFFFFF4AFF49FF6AFFFFFFA3FFB6
-:1017900000FF0DFFFFFF5AFF00FF68FFFFFFA0FFE4
-:1017A00063FF22FFFFFF0FFF00FF0DFFFFFF4AFF58
-:1017B00049FF6AFFFFFFA3FF00FF0DFFFFFF5AFF76
-:1017C00000FF68FFFFFFA0FF63FF22FFFFFF0FFF87
-:1017D00000FF0DFFFFFF4AFF49FF6AFFFFFFA3FF66
-:1017E00000FF0DFFFFFF5AFF00FF68FFFFFFA0FF94
-:1017F00063FF22FFFFFF0FFF00FF0DFFFFFF4AFF08
-:1018000049FF6AFFFFFFA3FF00FF0DFFFFFF5AFF25
-:1018100000FF68FFFFFFA0FF63FF22FFFFFF0FFF36
-:1018200000FF0DFFFFFF4AFF49FF6AFFFFFFA3FF15
-:1018300000FF0DFFFFFF5AFF00FF68FFFFFFA3FF40
-:10184000FFFF4FFFFFFFF0FF86FF93FFFFFF50FFFB
-:101850008DFF83FFFFFF70FF47FF90FFFFFF00FF3B
-:1018600000FF48FFFFFF04FFA0FF23FFFFFF0FFF64
-:1018700046FF90FFFFFF6AFF00FF0CFFFFFF20FF06
-:1018800000FF0AFFFFFF1FFF10FF27FFFFFF0FFFF3
-:1018900032FF18FFFFFF42FF8BFF83FFFFFFE4FFD4
-:1018A0008BFF83FFFFFFF5FF46FF90FFFFFF44FF25
-:1018B00008FF22FFFFFF0FFFFFFF4FFFFFFF89FF22
-:1018C00000FF0DFFFFFF8AFF00FF0EFFFFFF0FFF6E
-:1018D00000FF0DFFFFFF4EFFA7FF23FFFFFF0FFFDE
-:1018E00046FF90FFFFFF5AFF8DFF83FFFFFF70FF52
-:1018F00047FF90FFFFFF00FF00FF48FFFFFF04FFCF
-:10190000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFCF
-:1019100000FF0CFFFFFF20FF00FF0AFFFFFF1FFF7C
-:1019200010FF27FFFFFF0FFF35FF18FFFFFFD2FF5C
-:1019300000FF4CFFFFFF00FF00FF93FFFFFF00FFD2
-:101940000BFF40FFFFFF80FF11FF90FFFFFFF0FF45
-:1019500000FF40FFFFFF10FF11FF90FFFFFFE0FFC0
-:1019600046FF80FFFFFF0AFF7AFF26FFFFFF0FFF02
-:1019700035FF1CFFFFFF24FF10FF27FFFFFF0FFFB6
-:1019800033FF18FFFFFFC5FF00FF40FFFFFFC0FF51
-:1019900011FF90FFFFFF60FF8DFF93FFFFFFD0FF60
-:1019A00000FF48FFFFFF00FF8DFF83FFFFFF70FF79
-:1019B00047FF90FFFFFF00FF00FF48FFFFFF04FF0E
-:1019C000A0FF23FFFFFF0FFF46FF90FFFFFF6AFF0F
-:1019D00000FF0CFFFFFF20FF00FF0AFFFFFF1FFFBC
-:1019E00010FF27FFFFFF0FFF34FF18FFFFFF85FFEA
-:1019F00000FF40FFFFFF40FF11FF90FFFFFF60FF70
-:101A00008DFF93FFFFFFD0FF8DFF83FFFFFF70FF70
-:101A100047FF90FFFFFF00FF00FF48FFFFFF04FFAD
-:101A2000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFAE
-:101A300000FF0CFFFFFF20FF00FF0AFFFFFF1FFF5B
-:101A400000FF40FFFFFF00FF11FF90FFFFFF60FF5F
-:101A50008DFF93FFFFFFD0FF8DFF83FFFFFF70FF20
-:101A600047FF90FFFFFF00FF00FF48FFFFFF04FF5D
-:101A7000A0FF23FFFFFF0FFF46FF90FFFFFF6AFF5E
-:101A800000FF0CFFFFFF20FF00FF0AFFFFFF1FFF0B
-:101A900000FF48FFFFFF00FF8DFF93FFFFFF80FF68
-:101AA00000FF48FFFFFF00FF00FF93FFFFFF00FF65
-:101AB0000DFF40FFFFFFF0FF11FF90FFFFFFF0FF62
-:101AC00000FF40FFFFFF10FF11FF90FFFFFFE0FF4F
-:101AD000FFFF40FFFFFFF0FF90FF27FFFFFF0FFF1B
-:101AE00000FF0AFFFFFF0FFF10FF27FFFFFF0FFFA1
-:101AF00037FF18FFFFFF42FF46FF80FFFFFF00FF99
-:101B000089FF93FFFFFFA0FF46FF80FFFFFF10FF4D
-:101B100089FF93FFFFFFB0FF46FF80FFFFFF20FF1D
-:101B200089FF93FFFFFFC0FF46FF80FFFFFF30FFED
-:101B300089FF93FFFFFFD0FF46FF80FFFFFF40FFBD
-:101B400089FF93FFFFFFE0FF46FF80FFFFFF50FF8D
-:101B500089FF93FFFFFFF0FF00FF40FFFFFF10FF33
-:101B600086FF93FFFFFF60FF8DFF83FFFFFF70FF86
-:101B700047FF90FFFFFF00FF00FF48FFFFFF04FF4C
-:101B8000A0FF23FFFFFF0FFF46FF90FFFFFF6AFF4D
-:101B900000FF0CFFFFFF20FF00FF0AFFFFFF1FFFFA
-:101BA00010FF27FFFFFF0FFF39FF18FFFFFF22FF86
-:101BB00046FF80FFFFFF00FF8DFF93FFFFFF20FF29
-:101BC00046FF80FFFFFF10FF8DFF93FFFFFF30FFF9
-:101BD00046FF80FFFFFF20FF78FF22FFFFFF0FFF80
-:101BE00038FF1CFFFFFF84FF00FF40FFFFFF00FFE7
-:101BF00046FF90FFFFFF20FF00FF48FFFFFF00FFB1
-:101C00008DFF93FFFFFF40FF8DFF83FFFFFF70FFFE
-:101C100047FF90FFFFFF00FF00FF48FFFFFF04FFAB
-:101C2000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFAC
-:101C300000FF0CFFFFFF20FF00FF0AFFFFFF1FFF59
-:101C400000FF48FFFFFF00FF8DFF93FFFFFF50FFE6
-:101C500000FF0AFFFFFF0FFF00FF0CFFFFFF20FF49
-:101C600000FF0AFFFFFF1FFF00FF0CFFFFFF30FF19
-:101C700000FF48FFFFFF00FF8BFF93FFFFFF50FFB8
-:101C800000FF0CFFFFFF20FF00FF0AFFFFFF1FFF09
-:101C90008DFF83FFFFFF70FF0FFF40FFFFFFF4FF8B
-:101CA000E0FF22FFFFFF0FFF41FF18FFFFFF30FFA4
-:101CB0008DFF83FFFFFF70FF0FFF40FFFFFFE4FF7B
-:101CC000E0FF22FFFFFF0FFF42FF18FFFFFF40FF73
-:101CD0008DFF83FFFFFF70FF0FFF40FFFFFFD4FF6B
-:101CE000E0FF22FFFFFF0FFF47FF18FFFFFFA0FFEE
-:101CF0008DFF83FFFFFF70FF0FFF40FFFFFFC4FF5B
-:101D0000E0FF22FFFFFF0FFF46FF18FFFFFFD0FF9E
-:101D10008DFF83FFFFFF70FF0FFF40FFFFFFB4FF4A
-:101D2000E0FF22FFFFFF0FFF48FF18FFFFFFE0FF6C
-:101D30008DFF83FFFFFF70FF0FFF40FFFFFFA4FF3A
-:101D4000E0FF22FFFFFF0FFF4AFF18FFFFFF60FFCA
-:101D50008DFF83FFFFFF70FF0FFF40FFFFFF94FF2A
-:101D6000E0FF22FFFFFF0FFF4CFF18FFFFFF00FF08
-:101D70008DFF83FFFFFF70FF0FFF40FFFFFF84FF1A
-:101D8000E0FF22FFFFFF0FFF4DFF18FFFFFFE0FF07
-:101D90008DFF83FFFFFF70FF0FFF40FFFFFF74FF0A
-:101DA000E0FF22FFFFFF0FFF4FFF18FFFFFF20FFA5
-:101DB0008DFF83FFFFFF70FF0FFF40FFFFFF64FFFA
-:101DC000E0FF22FFFFFF0FFF4FFF18FFFFFFF0FFB5
-:101DD0008DFF83FFFFFF70FF0EFF40FFFFFFF4FF4B
-:101DE000E0FF22FFFFFF0FFF44FF18FFFFFF40FF50
-:101DF0008DFF83FFFFFF70FF0EFF40FFFFFFE4FF3B
-:101E0000E0FF22FFFFFF0FFF45FF18FFFFFF50FF1E
-:101E10008DFF83FFFFFF70FF0AFF40FFFFFF04FFFE
-:101E2000E0FF22FFFFFF0FFF3DFF18FFFFFFD0FF86
-:101E30008DFF83FFFFFF70FF0AFF40FFFFFF14FFCE
-:101E4000E0FF22FFFFFF0FFF3FFF18FFFFFF10FF24
-:101E50008DFF83FFFFFF70FF0AFF40FFFFFF24FF9E
-:101E6000E0FF22FFFFFF0FFF3FFF18FFFFFF80FF94
-:101E70008DFF83FFFFFF70FF0AFF40FFFFFF34FF6E
-:101E8000E0FF22FFFFFF0FFF3FFF18FFFFFFF0FF04
-:101E90008DFF83FFFFFF70FF0AFF40FFFFFF44FF3E
-:101EA000E0FF22FFFFFF0FFF40FF18FFFFFF60FF73
-:101EB0008DFF83FFFFFF70FF47FF90FFFFFF00FFD5
-:101EC00000FF48FFFFFF04FFA0FF23FFFFFF0FFFFE
-:101ED00046FF90FFFFFF6AFF00FF0CFFFFFF20FFA0
-:101EE00000FF0AFFFFFF1FFF8DFF83FFFFFF70FF53
-:101EF00047FF90FFFFFF00FF00FF48FFFFFF04FFC9
-:101F0000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFC9
-:101F100000FF0CFFFFFF08FF00FF40FFFFFF00FF77
-:101F2000FFFF93FFFFFFF0FF00FF40FFFFFF00FFF9
-:101F300044FF90FFFFFF60FF00FF00FFFFFF00FF77
-:101F400000FF00FFFFFF00FF00FF00FFFFFF00FF9B
-:101F500000FF00FFFFFF00FF00FF00FFFFFF00FF8B
-:101F600000FF00FFFFFF00FF00FF00FFFFFF00FF7B
-:101F700000FF00FFFFFF00FF21FF40FFFFFF80FF8A
-:101F8000FFFF93FFFFFFF0FF8DFF83FFFFFF70FF59
-:101F900047FF90FFFFFF00FF00FF48FFFFFF04FF28
-:101FA000A0FF23FFFFFF0FFF46FF90FFFFFF6AFF29
-:101FB00025FF40FFFFFF80FFFFFF93FFFFFFF0FFC4
-:101FC0008DFF83FFFFFF70FF47FF90FFFFFF00FFC4
-:101FD00000FF48FFFFFF04FFA0FF23FFFFFF0FFFED
-:101FE00046FF90FFFFFF6AFFE9FF41FFFFFF80FF11
-:101FF000FFFF93FFFFFFF0FF8DFF83FFFFFF70FFE9
-:1020000047FF90FFFFFF00FF00FF48FFFFFF04FFB7
-:10201000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFB8
-:10202000EDFF41FFFFFF80FFFFFF93FFFFFFF0FF8A
-:102030008DFF83FFFFFF70FF47FF90FFFFFF00FF53
-:1020400000FF48FFFFFF04FFA0FF23FFFFFF0FFF7C
-:1020500046FF90FFFFFF6AFF00FF40FFFFFF00FF0A
-:1020600044FF90FFFFFF60FF00FF00FFFFFF00FF46
-:1020700000FF00FFFFFF00FF00FF00FFFFFF00FF6A
-:1020800000FF00FFFFFF00FFF1FF41FFFFFF80FFA8
-:10209000FFFF93FFFFFFF0FF46FF84FFFFFF00FFFE
-:1020A00000FF34FFFFFF08FF00FF60FFFFFF03FF9B
-:1020B00000FF00FFFFFF00FF00FF00FFFFFF00FF2A
-:1020C00000FF00FFFFFF00FF00FF00FFFFFF00FF1A
-:1020D00046FF90FFFFFF60FFF7FF4FFFFFFFF4FF9A
-:1020E00046FF90FFFFFF74FF8DFF83FFFFFF70FF30
-:1020F00047FF90FFFFFF00FF00FF48FFFFFF04FFC7
-:10210000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFC7
-:1021100000FF0CFFFFFF20FF00FF0AFFFFFF1FFF74
-:1021200046FF84FFFFFF00FF00FF34FFFFFF08FFB3
-:1021300000FF34FFFFFF06FF00FF00FFFFFF00FF6F
-:1021400000FF00FFFFFF00FF00FF00FFFFFF00FF99
-:1021500000FF00FFFFFF00FF46FF80FFFFFF10FFB3
-:1021600000FF00FFFFFF00FF00FF00FFFFFF00FF79
-:1021700000FF00FFFFFF00FF00FF00FFFFFF00FF69
-:1021800000FF68FFFFFF02FF00FF00FFFFFF00FFEF
-:1021900000FF00FFFFFF00FF00FF00FFFFFF00FF49
-:1021A00000FF00FFFFFF00FF00FF60FFFFFF22FFB7
-:1021B00000FF00FFFFFF00FF00FF00FFFFFF00FF29
-:1021C00000FF00FFFFFF00FF00FF00FFFFFF00FF19
-:1021D00046FF90FFFFFF62FFF7FF4FFFFFFFF4FF97
-:1021E00046FF90FFFFFF74FF8DFF83FFFFFF70FF2F
-:1021F00047FF90FFFFFF00FF00FF48FFFFFF04FFC6
-:10220000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFC6
-:1022100000FF0CFFFFFF20FF00FF0AFFFFFF1FFF73
-:1022200046FF88FFFFFF00FF00FF38FFFFFF08FFAA
-:1022300000FF50FFFFFF03FF00FF00FFFFFF00FF55
-:1022400000FF00FFFFFF00FF00FF00FFFFFF00FF98
-:1022500000FF00FFFFFF00FF46FF90FFFFFF60FF52
-:10226000F7FF4FFFFFFFF4FF46FF90FFFFFF74FFF4
-:102270008DFF83FFFFFF70FF47FF90FFFFFF00FF11
-:1022800000FF48FFFFFF04FFA0FF23FFFFFF0FFF3A
-:1022900046FF90FFFFFF6AFF00FF0CFFFFFF20FFDC
-:1022A00000FF0AFFFFFF1FFF46FF88FFFFFF00FF41
-:1022B00000FF38FFFFFF08FF00FF38FFFFFF04FFAC
-:1022C00000FF00FFFFFF00FF00FF00FFFFFF00FF18
-:1022D00000FF00FFFFFF00FF00FF00FFFFFF00FF08
-:1022E00046FF80FFFFFF10FF00FF58FFFFFF03FFC7
-:1022F00000FF50FFFFFF23FF00FF00FFFFFF00FF75
-:1023000000FF00FFFFFF00FF00FF00FFFFFF00FFD7
-:1023100000FF00FFFFFF00FF46FF90FFFFFF62FF8F
-:10232000F7FF4FFFFFFFF4FF46FF90FFFFFF74FF33
-:102330008DFF83FFFFFF70FF47FF90FFFFFF00FF50
-:1023400000FF48FFFFFF04FFA0FF23FFFFFF0FFF79
-:1023500046FF90FFFFFF6AFF00FF0CFFFFFF20FF1B
-:1023600000FF0AFFFFFF1FFF46FF80FFFFFF00FF88
-:10237000FFFF93FFFFFFE0FFFFFF83FFFFFFE2FF91
-:1023800046FF90FFFFFF62FFF7FF4FFFFFFFF4FFE5
-:1023900046FF90FFFFFF74FF8DFF83FFFFFF70FF7D
-:1023A00047FF90FFFFFF00FF00FF48FFFFFF04FF14
-:1023B000A0FF23FFFFFF0FFF46FF90FFFFFF6AFF15
-:1023C00000FF0CFFFFFF20FF00FF0AFFFFFF1FFFC2
-:1023D00003FF0DFFFFFF0FFF00FF00FFFFFF00FFE8
-:1023E00000FF00FFFFFF00FF00FF00FFFFFF00FFF7
-:1023F00000FF00FFFFFF00FF46FF90FFFFFF60FFB1
-:102400000CFF0DFFFFFFF0FF00FF00FFFFFF00FFCD
-:1024100000FF00FFFFFF00FF00FF00FFFFFF00FFC6
-:1024200000FF00FFFFFF00FFF7FF4FFFFFFFF4FF7C
-:1024300046FF90FFFFFF74FF8DFF83FFFFFF70FFDC
-:1024400047FF90FFFFFF00FF00FF48FFFFFF04FF73
-:10245000A0FF23FFFFFF0FFF46FF90FFFFFF6AFF74
-:1024600000FF0CFFFFFF20FF00FF0AFFFFFF1FFF21
-:1024700046FF80FFFFFF02FF00FF00FFFFFF00FF9E
-:1024800000FF00FFFFFF00FF00FF00FFFFFF00FF56
-:1024900000FF00FFFFFF00FF00FF00FFFFFF00FF46
-:1024A00000FF00FFFFFF00FF00FF00FFFFFF00FF36
-:1024B00000FF00FFFFFF00FF46FF80FFFFFF13FF4D
-:1024C00000FF40FFFFFF00FF11FF90FFFFFF60FFD5
-:1024D0008DFF93FFFFFFD0FF11FF90FFFFFFF2FF83
-:1024E00011FF90FFFFFFE3FFF7FF4FFFFFFFF4FF38
-:1024F00046FF90FFFFFF74FF8DFF83FFFFFF70FF1C
-:1025000047FF90FFFFFF00FF00FF48FFFFFF04FFB2
-:10251000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFB3
-:1025200000FF0CFFFFFF20FF00FF0AFFFFFF1FFF60
-:1025300046FF84FFFFFF00FF00FF34FFFFFF08FF9F
-:1025400000FF34FFFFFF06FF00FF00FFFFFF00FF5B
-:1025500000FF00FFFFFF00FF00FF00FFFFFF00FF85
-:1025600000FF00FFFFFF00FF46FF80FFFFFF10FF9F
-:10257000FFFF93FFFFFFE0FF00FF60FFFFFF22FF71
-:1025800067FF40FFFFFF40FFFFFF93FFFFFFE0FFFC
-:1025900000FF00FFFFFF00FF00FF00FFFFFF00FF45
-:1025A00000FF00FFFFFF00FF00FF00FFFFFF00FF35
-:1025B00046FF90FFFFFF62FFF7FF4FFFFFFFF4FFB3
-:1025C00046FF90FFFFFF74FF8DFF83FFFFFF70FF4B
-:1025D00047FF90FFFFFF00FF00FF48FFFFFF04FFE2
-:1025E000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFE3
-:1025F00000FF0CFFFFFF20FF00FF0AFFFFFF1FFF90
-:1026000046FF84FFFFFF00FF00FF34FFFFFF08FFCE
-:1026100000FF34FFFFFF06FF00FF00FFFFFF00FF8A
-:1026200000FF00FFFFFF00FF46FF80FFFFFF10FFDE
-:1026300000FF00FFFFFF00FF00FF00FFFFFF00FFA4
-:1026400000FF00FFFFFF00FF00FF00FFFFFF00FF94
-:1026500046FF80FFFFFF23FFFFFF93FFFFFFE0FF29
-:1026600000FF68FFFFFF32FF00FF60FFFFFF72FF08
-:1026700067FF40FFFFFF40FFFFFF93FFFFFFE0FF0B
-:1026800000FF00FFFFFF00FF00FF00FFFFFF00FF54
-:1026900000FF00FFFFFF00FF00FF00FFFFFF00FF44
-:1026A00046FF90FFFFFF67FFF7FF4FFFFFFFF4FFBD
-:1026B00046FF90FFFFFF74FF8DFF83FFFFFF70FF5A
-:1026C00047FF90FFFFFF00FF00FF48FFFFFF04FFF1
-:1026D000A0FF23FFFFFF0FFF46FF90FFFFFF6AFFF2
-:1026E00000FF0CFFFFFF20FF00FF0AFFFFFF1FFF9F
-:1026F00046FF80FFFFFF05FF03FF0DFFFFFF0FFFFA
-:1027000000FF00FFFFFF00FF00FF00FFFFFF00FFD3
-:1027100000FF00FFFFFF00FF00FF00FFFFFF00FFC3
-:102720000CFF0DFFFFFFF5FF00FF00FFFFFF00FFA5
-:1027300000FF00FFFFFF00FF00FF00FFFFFF00FFA3
-:1027400000FF00FFFFFF00FFF7FF4FFFFFFFF4FF59
-:1027500046FF90FFFFFF74FF8DFF83FFFFFF70FFB9
-:1027600047FF90FFFFFF00FF00FF48FFFFFF04FF50
-:10277000A0FF23FFFFFF0FFF46FF90FFFFFF6AFF51
-:1027800000FF0CFFFFFF20FF00FF0AFFFFFF1FFFFE
-:1027900046FF80FFFFFF00FF8DFF93FFFFFFC0FF9D
-:1027A0008DFF83FFFFFFC7FF46FF90FFFFFF67FF1F
-:1027B000F7FF4FFFFFFFF4FF46FF90FFFFFF74FF9F
-:1027C0008DFF83FFFFFF70FF47FF90FFFFFF00FFBC
-:1027D00000FF48FFFFFF04FFA0FF23FFFFFF0FFFE5
-:1027E00046FF90FFFFFF6AFF00FF0CFFFFFF20FF87
-:1027F00000FF0AFFFFFF1FFF46FF80FFFFFF00FFF4
-:102800008DFF93FFFFFFE0FF8DFF83FFFFFFE7FFDB
-:1028100000FF00FFFFFF00FF00FF00FFFFFF00FFC2
-:1028200000FF00FFFFFF00FF00FF00FFFFFF00FFB2
-:1028300046FF90FFFFFF67FFF7FF4FFFFFFFF4FF2B
-:1028400046FF90FFFFFF74FF8DFF83FFFFFF70FFC8
-:1028500047FF90FFFFFF00FF00FF48FFFFFF04FF5F
-:10286000A0FF23FFFFFF0FFF46FF90FFFFFF6AFF60
-:1028700000FF0CFFFFFF20FF00FF0AFFFFFF1FFF0D
-:102880008DFF83FFFFFFD0FF00FF40FFFFFF24FF0E
-:10289000A0FF23FFFFFF0FFF11FF90FFFFFF6AFF65
-:1028A00000FF40FFFFFF14FF18FF23FFFFFF0FFF94
-:1028B00051FF14FFFFFF81FF90FF80FFFFFF60FFCC
-:1028C00080FF23FFFFFF0FFF8DFF83FFFFFFD0FF80
-:1028D00000FF40FFFFFF14FFA0FF23FFFFFF0FFFDC
-:1028E00011FF90FFFFFF6AFF30FF0CFFFFFF00FFAB
-:1028F00000FF40FFFFFF16FF10FF40FFFFFF07FF35
-:1029000090FF34FFFFFF71FF00FF34FFFFFF09FF5F
-:102910000FFF40FFFFFFF5FF00FF60FFFFFF07FF16
-:1029200088FF63FFFFFF27FFE8FF60FFFFFF07FF50
-:1029300062FF61FFFFFF27FF88FF2BFFFFFF8BFF79
-:10294000E8FF60FFFFFF07FF62FF61FFFFFF17FF68
-:1029500088FF2FFFFFFFFBFF89FF23FFFFFF0FFF14
-:1029600098FF20FFFFFF0FFFEAFF20FFFFFF0FFF91
-:1029700000FF0DFFFFFFABFF00FF0DFFFFFFB8FFE4
-:1029800000FF0DFFFFFFCFFF62FF21FFFFFF0FFFE3
-:1029900010FF22FFFFFF0FFF62FF21FFFFFF0FFF6E
-:1029A00000FF40FFFFFF24FF90FF80FFFFFF60FF5D
-:1029B00080FF23FFFFFF0FFF51FF18FFFFFF00FF06
-:1029C0008BFF93FFFFFFEBFF8BFF93FFFFFFFCFFEE
-:1029D00000FF0AFFFFFF0FFF51FF1CFFFFFF0FFF6C
-:1029E0008DFF93FFFFFFACFF82FF3CFFFFFF45FF22
-:1029F00054FF14FFFFFF2EFFFFFF3FFFFFFFF5FF18
-:102A000054FF14FFFFFF1EFF00FF00FFFFFF00FF4A
-:102A100000FF00FFFFFF00FF51FF1CFFFFFF0FFF44
-:102A200000FF0DFFFFFF0CFF8DFF83FFFFFFA4FFE3
-:102A3000E0FF22FFFFFF0FFF53FF18FFFFFFB3FF71
-:102A40008DFF83FFFFFFD0FF00FF40FFFFFF24FF4C
-:102A5000A0FF23FFFFFF0FFF00FF0DFFFFFFBAFFE7
-:102A60008BFF83FFFFFFF5FF11FF90FFFFFF6BFF61
-:102A700000FF40FFFFFF14FF18FF23FFFFFF0FFFC2
-:102A800055FF14FFFFFF21FF90FF80FFFFFF60FF56
-:102A900080FF23FFFFFF0FFF00FF40FFFFFF20FF2E
-:102AA00000FF40FFFFFF01FF8BFF83FFFFFFE4FFFD
-:102AB0008BFF83FFFFFFF5FF08FF0CFFFFFF00FF09
-:102AC00060FF22FFFFFF0FFF49FF2AFFFFFFEAFF22
-:102AD00000FF0DFFFFFF4EFF8BFF93FFFFFFEEFF99
-:102AE00000FF0DFFFFFF5AFF8BFF93FFFFFFFAFF71
-:102AF0008DFF83FFFFFF20FF8DFF83FFFFFF31FF6F
-:102B0000E0FF22FFFFFF0FFFC9FF2AFFFFFFEAFFE1
-:102B100054FF18FFFFFFD5FF00FF0DFFFFFF4EFF23
-:102B200000FF0DFFFFFF5AFF82FF4FFFFFFFF0FF87
-:102B3000FFFF4FFFFFFFF1FFE0FF22FFFFFF0FFF4F
-:102B4000C9FF2AFFFFFFEAFF56FF18FFFFFFB4FF90
-:102B500054FF18FFFFFFDFFF00FF40FFFFFF20FFD4
-:102B600047FF90FFFFFF20FF0CFF0CFFFFFF00FF60
-:102B700002FF40FFFFFF60FF11FF90FFFFFF20FFFC
-:102B800016FF18FFFFFF4FFF8DFF83FFFFFFD0FFF2
-:102B900000FF40FFFFFF24FFA0FF23FFFFFF0FFF09
-:102BA00011FF90FFFFFF6AFF00FF40FFFFFF14FFD0
-:102BB00018FF23FFFFFF0FFF57FF14FFFFFF91FFD9
-:102BC00090FF80FFFFFF60FF80FF23FFFFFF0FFFED
-:102BD0008DFF83FFFFFFD0FF00FF40FFFFFF14FFCB
-:102BE000A0FF23FFFFFF0FFF11FF90FFFFFF6AFF12
-:102BF00030FF0CFFFFFF00FF00FF40FFFFFF16FF4D
-:102C000010FF40FFFFFF07FF90FF34FFFFFF71FF42
-:102C100000FF34FFFFFF09FF0FFF40FFFFFFF5FF3D
-:102C200000FF60FFFFFF07FF88FF63FFFFFF27FF35
-:102C3000E8FF60FFFFFF07FF62FF61FFFFFF27FF65
-:102C400088FF2BFFFFFF8BFFE8FF60FFFFFF07FF01
-:102C500062FF61FFFFFF17FF88FF2FFFFFFFFBFFF2
-:102C600089FF23FFFFFF0FFF98FF20FFFFFF0FFFEC
-:102C7000EAFF20FFFFFF0FFF00FF0DFFFFFFABFF8D
-:102C800000FF0DFFFFFFB8FF00FF0DFFFFFFCFFFAD
-:102C900062FF21FFFFFF0FFF10FF22FFFFFF0FFF6B
-:102CA00062FF21FFFFFF0FFF00FF40FFFFFF24FF38
-:102CB00090FF80FFFFFF60FF80FF23FFFFFF0FFFFC
-:102CC00057FF18FFFFFF10FF8BFF93FFFFFFEBFF86
-:102CD0008BFF93FFFFFFFCFF5CFF1CFFFFFF3FFF2D
-:102CE00000FF0AFFFFFF0FFF57FF1CFFFFFF1FFF43
-:102CF0008DFF93FFFFFFACFF82FF3CFFFFFF45FF0F
-:102D00005AFF14FFFFFF4EFFFFFF3FFFFFFFF5FFDE
-:102D10005AFF14FFFFFF3EFF00FF00FFFFFF00FF11
-:102D200000FF00FFFFFF00FF57FF1CFFFFFF1FFF1B
-:102D300000FF0DFFFFFF0CFF8DFF83FFFFFFA4FFD0
-:102D4000E0FF22FFFFFF0FFF59FF18FFFFFFD3FF38
-:102D50005CFF1CFFFFFF3FFF8DFF83FFFFFFD0FFE6
-:102D600000FF40FFFFFF24FFA0FF23FFFFFF0FFF37
-:102D700000FF0DFFFFFFBAFF8BFF83FFFFFFF5FF93
-:102D80005CFF1CFFFFFF3FFF11FF90FFFFFF6BFF8A
-:102D900000FF40FFFFFF14FF18FF23FFFFFF0FFF9F
-:102DA0005BFF14FFFFFF61FF90FF80FFFFFF60FFED
-:102DB00080FF23FFFFFF0FFF00FF40FFFFFF20FF0B
-:102DC00000FF40FFFFFF01FF8BFF83FFFFFFE4FFDA
-:102DD0008BFF83FFFFFFF5FF08FF0CFFFFFF00FFE6
-:102DE00060FF22FFFFFF0FFF49FF2AFFFFFFEAFFFF
-:102DF00000FF0DFFFFFF4EFF8BFF93FFFFFFEEFF76
-:102E00008BFF93FFFFFFFAFF5EFF1CFFFFFF0FFF2B
-:102E10005BFF18FFFFFF0FFF8BFF83FFFFFF20FF0C
-:102E200078FF22FFFFFF0FFF0DFF18FFFFFF05FFD9
-:102E300000FF0AFFFFFF0FFF08FF0CFFFFFF00FF6F
-:102E400000FF40FFFFFF14FF00FF40FFFFFF05FFF3
-:102E50008BFF83FFFFFFE0FF8BFF83FFFFFFF1FF8F
-:102E600060FF22FFFFFF0FFF49FF2AFFFFFFEAFF7E
-:102E70008BFF93FFFFFFFAFF8BFF93FFFFFFEEFF38
-:102E80000CFF0CFFFFFF00FF00FF0AFFFFFF0FFF1B
-:102E900008FF0CFFFFFF00FF00FF40FFFFFF14FFD4
-:102EA00000FF40FFFFFF05FF8BFF83FFFFFFE0FFF9
-:102EB0008BFF83FFFFFFF1FF60FF22FFFFFF0FFF8C
-:102EC00049FF2AFFFFFFEAFF8BFF93FFFFFFFAFF97
-:102ED0008BFF93FFFFFFEEFF0CFF0CFFFFFF00FFD8
-:102EE0008DFF83FFFFFF40FF78FF22FFFFFF0FFFF3
-:102EF0005EFF1CFFFFFF04FF00FF0AFFFFFF0FFF45
-:102F000008FF0CFFFFFF00FF8DFF83FFFFFF50FF57
-:102F100078FF22FFFFFF0FFF5FFF1CFFFFFF54FF43
-:102F20000FFF40FFFFFFF5FF90FF80FFFFFFA8FFAF
-:102F300010FF0FFFFFFF08FF90FF80FFFFFF90FFD4
-:102F400088FF27FFFFFF0FFFB6FF27FFFFFF0FFFE1
-:102F50008BFF83FFFFFFFAFFF2FF22FFFFFF0FFF50
-:102F600000FF0DFFFFFF0AFF00FF40FFFFFF14FF00
-:102F7000E2FF22FFFFFF0FFF74FF18FFFFFFE2FFDA
-:102F800038FF23FFFFFF0FFF00FF40FFFFFF24FF7D
-:102F9000E2FF22FFFFFF0FFF74FF18FFFFFFE2FFBA
-:102FA00000FF0AFFFFFF0FFF0FFF40FFFFFFF5FFCE
-:102FB00090FF80FFFFFF80FF8BFF83FFFFFFE2FF9B
-:102FC00088FF27FFFFFF0FFF98FF20FFFFFF0FFF86
-:102FD00010FF40FFFFFF07FFE8FF20FFFFFF0FFF8D
-:102FE00000FF0DFFFFFFACFFF2FF22FFFFFF0FFF0F
-:102FF00000FF0DFFFFFF0AFF01FF40FFFFFF04FF7F
-:10300000E2FF22FFFFFF0FFF74FF18FFFFFFE2FF49
-:1030100038FF23FFFFFF0FFF02FF40FFFFFF04FF0A
-:10302000E2FF22FFFFFF0FFF74FF18FFFFFFE2FF29
-:1030300000FF0AFFFFFF0FFF00FF34FFFFFF08FF45
-:1030400000FF34FFFFFFD4FF00FF34FFFFFF85FFC9
-:10305000FFFF4FFFFFFF89FF00FF09FFFFFF01FF99
-:1030600089FF83FFFFFFB8FF00FF0EFFFFFF0FFF89
-:1030700000FF0DFFFFFF4EFFA7FF23FFFFFF0FFF26
-:1030800000FF68FFFFFFA3FF89FF83FFFFFFA8FF8B
-:1030900000FF0EFFFFFF0FFF00FF0DFFFFFF4EFFC2
-:1030A000A7FF23FFFFFF0FFF00FF68FFFFFFA3FF46
-:1030B00000FF09FFFFFF03FF8BFF83FFFFFFB0FF50
-:1030C00000FF68FFFFFF00FF00FF0AFFFFFF0FFF89
-:1030D00002FF35FFFFFF00FF00FF34FFFFFF08FF87
-:1030E00000FF34FFFFFF26FF89FF83FFFFFFD8FFAC
-:1030F00000FF0EFFFFFF0FFF00FF0DFFFFFF4EFF62
-:10310000A7FF23FFFFFF0FFF00FF68FFFFFFA3FFE5
-:1031100089FF83FFFFFFC8FF00FF0EFFFFFF0FFFC8
-:1031200000FF0DFFFFFF4EFFA7FF23FFFFFF0FFF75
-:1031300000FF68FFFFFFA3FF00FF09FFFFFF03FF82
-:103140008BFF83FFFFFFD0FF00FF68FFFFFF02FF41
-:1031500001FF40FFFFFF80FF00FF68FFFFFF02FF4E
-:1031600000FF40FFFFFF20FF00FF68FFFFFF03FF9E
-:1031700000FF0AFFFFFF0FFF00FF40FFFFFF10FFF0
-:103180008BFF93FFFFFF40FF30FF40FFFFFF00FF7B
-:1031900049FF90FFFFFF40FF00FF0AFFFFFF0FFF07
-:1031A00000FF40FFFFFF60FF00FF91FFFFFFF0FF08
-:1031B00000FF0AFFFFFF0FFF01FF42FFFFFF80FF3D
-:1031C00000FF91FFFFFF70FF07FF42FFFFFF80FF3F
-:1031D00003FF91FFFFFF70FF02FF42FFFFFF00FFB1
-:1031E00000FF91FFFFFFF0FF08FF42FFFFFF00FF1E
-:1031F00003FF91FFFFFFF0FF00FF40FFFFFF20FFF5
-:1032000001FF91FFFFFF70FF00FF40FFFFFF20FF66
-:1032100004FF91FFFFFF70FF00FF0AFFFFFF0FFF9A
-:1032200004FF42FFFFFF00FF49FF90FFFFFF20FF69
-:1032300062FF1CFFFFFFFFFF00FF0AFFFFFF0FFF02
-:1032400000FF40FFFFFF20FF00FF91FFFFFFF0FFA7
-:1032500001FF42FFFFFF00FF49FF90FFFFFF20FF3C
-:1032600062FF1CFFFFFFFFFF00FF0AFFFFFF0FFFD2
-:1032700000FF40FFFFFF40FF8BFF93FFFFFF80FF3A
-:1032800005FF35FFFFFF00FF92FF3BFFFFFF00FF41
-:1032900000FF34FFFFFF08FF00FF38FFFFFF08FFBC
-:1032A00000FF3CFFFFFF65FF65FF14FFFFFF9EFF70
-:1032B00000FF60FFFFFF03FF00FF60FFFFFF13FF42
-:1032C00000FF78FFFFFF13FF00FF78FFFFFF03FF02
-:1032D00001FF42FFFFFF00FF49FF90FFFFFF20FFBC
-:1032E00062FF1CFFFFFFFFFF05FF81FFFFFFC0FF25
-:1032F00078FF22FFFFFF0FFF21FF18FFFFFF71FF85
-:1033000000FF0AFFFFFF0FFF49FF80FFFFFF48FF9D
-:1033100010FF0FFFFFFF03FF66FF23FFFFFF0FFFFD
-:1033200074FF18FFFFFF54FF86FF83FFFFFFC0FFFE
-:1033300049FF90FFFFFF20FF62FF1CFFFFFFFFFF21
-:1033400086FF83FFFFFF80FF01FF40FFFFFF04FFB9
-:10335000E0FF22FFFFFF0FFF86FF93FFFFFF8AFFC3
-:1033600067FF1CFFFFFF00FF86FF87FFFFFFD0FF07
-:1033700075FF1CFFFFFF1FFF00FF0AFFFFFF0FFF8E
-:1033800000FF48FFFFFF00FF82FF93FFFFFF40FFAA
-:1033900000FF0AFFFFFF0FFF08FF0CFFFFFF00FF0A
-:1033A00086FF8BFFFFFFB0FF00FF38FFFFFF08FF26
-:1033B00000FF38FFFFFFF4FFFFFF4FFFFFFF89FF14
-:1033C0008DFF83FFFFFF60FF89FF83FFFFFF44FF47
-:1033D00000FF40FFFFFF01FF89FF83FFFFFF55FF55
-:1033E00060FF26FFFFFF0FFF49FF22FFFFFF0FFFD8
-:1033F00000FF78FFFFFFA3FF10FF22FFFFFF0FFF7B
-:1034000000FF78FFFFFFA0FF8DFF83FFFFFF60FF3E
-:1034100089FF83FFFFFF24FF00FF40FFFFFF01FF45
-:1034200089FF83FFFFFF35FF60FF26FFFFFF0FFFD0
-:1034300049FF22FFFFFF0FFF00FF78FFFFFFA3FF01
-:1034400010FF22FFFFFF0FFF00FF78FFFFFFA3FF2A
-:103450008DFF83FFFFFF60FF20FF40FFFFFF04FFA2
-:1034600060FF22FFFFFF0FFF8DFF93FFFFFF6AFF4B
-:103470000CFF0CFFFFFF00FF00FF0AFFFFFF0FFF25
-:1034800008FF0CFFFFFF00FF86FF87FFFFFFB0FF75
-:1034900000FF34FFFFFF08FF01FF34FFFFFF04FFC1
-:1034A00000FF34FFFFFF35FFFFFF4FFFFFFF89FFE6
-:1034B00000FF09FFFFFF01FF87FF8BFFFFFFE0FF1A
-:1034C00000FF38FFFFFF88FF00FF70FFFFFF03FFD3
-:1034D00000FF68FFFFFF00FF00FF70FFFFFF03FF1B
-:1034E00000FF68FFFFFF03FF87FF9BFFFFFFE0FF79
-:1034F0000CFF0CFFFFFF00FF00FF0AFFFFFF0FFFA5
-:1035000001FF3CFFFFFF05FF6AFF14FFFFFF9EFF67
-:1035100067FF1CFFFFFF3FFF69FF1CFFFFFF0FFF5F
-:1035200066FF1CFFFFFF1FFF38FF22FFFFFF0FFF9B
-:103530006AFF14FFFFFF85FF8BFF83FFFFFF40FF44
-:1035400078FF22FFFFFF0FFF00FF00FFFFFF00FFDC
-:1035500000FF0AFFFFFF0FFF82FF83FFFFFF40FF17
-:1035600078FF22FFFFFF0FFF6AFF1CFFFFFFF4FF42
-:1035700000FF0AFFFFFF0FFF00FF40FFFFFF10FFEC
-:1035800047FF90FFFFFF20FF87FF83FFFFFFF0FF54
-:1035900086FF93FFFFFF80FF00FF40FFFFFF00FF5C
-:1035A0008DFF93FFFFFF60FF82FF93FFFFFF40FF50
-:1035B00086FF87FFFFFF90FF02FF34FFFFFF08FF3A
-:1035C00000FF60FFFFFF03FF89FF93FFFFFF20FF66
-:1035D00000FF60FFFFFF03FF89FF93FFFFFF30FF46
-:1035E00000FF60FFFFFF03FF89FF93FFFFFF40FF26
-:1035F00000FF60FFFFFF03FF89FF93FFFFFF50FF06
-:1036000086FF97FFFFFF90FF00FF0AFFFFFF0FFFFE
-:1036100000FF34FFFFFF64FF00FF34FFFFFF35FFB3
-:1036200001FF34FFFFFF96FF00FF38FFFFFF34FF6D
-:1036300000FF38FFFFFF65FF01FF38FFFFFF96FF28
-:1036400000FF38FFFFFF08FF02FF34FFFFFF49FFC5
-:1036500002FF38FFFFFF49FF10FF40FFFFFF06FF9B
-:1036600010FF40FFFFFF02FF30FF0CFFFFFF00FFD6
-:1036700000FF3CFFFFFF25FF6DFF14FFFFFFBEFFB4
-:1036800098FF50FFFFFF73FF88FF50FFFFFF73FF9E
-:1036900083FF68FFFFFFC5FF88FF68FFFFFFC4FFD0
-:1036A00083FF68FFFFFFC5FF00FF68FFFFFFC6FF46
-:1036B00098FF50FFFFFF73FF88FF50FFFFFF73FF6E
-:1036C00083FF78FFFFFFC4FF88FF78FFFFFFC5FF80
-:1036D00083FF78FFFFFFC4FF00FF78FFFFFFC6FFF7
-:1036E00098FF50FFFFFF73FF88FF50FFFFFF73FF3E
-:1036F00083FF68FFFFFFC5FF88FF68FFFFFFC4FF70
-:1037000083FF68FFFFFFC5FF00FF68FFFFFFC6FFE5
-:1037100000FF3CFFFFFF25FF6EFF14FFFFFF8EFF42
-:1037200098FF50FFFFFF73FF88FF50FFFFFF73FFFD
-:1037300083FF78FFFFFFC4FF88FF78FFFFFFC4FF10
-:1037400000FF78FFFFFFC4FF20FF0CFFFFFF00FF1B
-:1037500000FF0AFFFFFF0FFF00FF34FFFFFFE9FF3D
-:1037600001FF38FFFFFF28FF01FF38FFFFFF29FFA0
-:1037700000FF38FFFFFF66FF00FF38FFFFFF34FF49
-:1037800000FF38FFFFFF75FF10FF40FFFFFF06FF40
-:1037900000FF41FFFFFF07FF30FF0CFFFFFF00FFAF
-:1037A00098FF70FFFFFF20FF00FF3CFFFFFF25FF9A
-:1037B00070FF14FFFFFF2EFF80FF70FFFFFF42FF2F
-:1037C00063FF72FFFFFF20FF80FF68FFFFFFA7FF7F
-:1037D00000FF70FFFFFF41FF63FF72FFFFFF24FF49
-:1037E00080FF68FFFFFFA7FF00FF70FFFFFF46FF9E
-:1037F00063FF72FFFFFF24FF80FF68FFFFFFA7FF4B
-:1038000000FF70FFFFFF45FF63FF72FFFFFF20FF18
-:1038100000FF68FFFFFFA7FF80FF70FFFFFF42FF71
-:1038200063FF72FFFFFF20FF80FF70FFFFFF41FF7C
-:1038300063FF6AFFFFFFA7FF00FF70FFFFFF24FF8A
-:1038400080FF68FFFFFFA7FF00FF70FFFFFF44FF3F
-:1038500063FF72FFFFFF24FF80FF68FFFFFFA7FFEA
-:10386000F0FF40FFFFFF05FF00FF4FFFFFFF04FFDA
-:1038700000FF0DFFFFFF0BFF80FF27FFFFFF0FFF84
-:1038800088FF23FFFFFF0FFFEAFF20FFFFFF0FFF6F
-:1038900074FF22FFFFFF0FFF00FF68FFFFFFA7FF7E
-:1038A00000FF70FFFFFF24FF80FF70FFFFFF44FF5A
-:1038B00063FF72FFFFFF24FF80FF68FFFFFFA7FF8A
-:1038C00000FF4FFFFFFF04FF00FF0DFFFFFF0BFF97
-:1038D00080FF27FFFFFF0FFF88FF23FFFFFF0FFF82
-:1038E000EAFF20FFFFFF0FFF74FF22FFFFFF0FFF24
-:1038F00000FF68FFFFFFA7FF00FF0AFFFFFF0FFFAA
-:1039000038FF22FFFFFF0FFF72FF14FFFFFF35FF9D
-:103910008BFF83FFFFFF30FF78FF22FFFFFF0FFFCA
-:1039200000FF0AFFFFFF0FFF0EFF40FFFFFF00FF3A
-:1039300010FF90FFFFFF10FF08FF40FFFFFF00FF99
-:1039400010FF90FFFFFF90FF02FF40FFFFFF40FFCF
-:1039500011FF90FFFFFF20FF00FF40FFFFFF00FF70
-:1039600010FF90FFFFFFB0FFB0FF40FFFFFF00FF21
-:1039700047FF90FFFFFF50FF30FF40FFFFFF00FFBA
-:1039800047FF90FFFFFF40FF78FF42FFFFFF50FF20
-:1039900048FF90FFFFFFA0FF40FF40FFFFFF00FF39
-:1039A00049FF90FFFFFF70FF18FF40FFFFFF00FF80
-:1039B00047FF90FFFFFF70FF18FF40FFFFFF10FF62
-:1039C00047FF90FFFFFF70FF18FF40FFFFFF00FF62
-:1039D00047FF90FFFFFF70FF00FF40FFFFFF00FF6A
-:1039E00011FF90FFFFFF60FF8DFF93FFFFFFD0FFF0
-:1039F0000BFF40FFFFFF80FF11FF90FFFFFFF0FF75
-:103A000000FF40FFFFFF10FF11FF90FFFFFFE0FFEF
-:103A100000FF48FFFFFF00FF00FF93FFFFFF00FFD5
-:103A200000FF0AFFFFFF0FFF08FF40FFFFFF00FF3F
-:103A300047FF90FFFFFF20FF22FF18FFFFFF9FFFC0
-:103A400000FF48FFFFFF10FF86FF93FFFFFF70FF9F
-:103A500022FF18FFFFFF9FFF00FF48FFFFFF00FF4F
-:103A600086FF93FFFFFF70FF22FF18FFFFFF9FFFFE
-:103A700000FF48FFFFFF20FF86FF93FFFFFF70FF5F
-:103A800022FF18FFFFFF9FFF00FF34FFFFFF48FFEB
-:103A900000FF60FFFFFF03FF86FF93FFFFFFB0FF04
-:103AA00000FF60FFFFFF03FF86FF93FFFFFFC0FFE4
-:103AB00086FF97FFFFFFD0FF00FF0AFFFFFF0FFF0A
-:103AC00080FF37FFFFFF02FF84FF3BFFFFFF02FF86
-:103AD00000FF60FFFFFF0BFF0CFF0DFFFFFF90FFDC
-:103AE00000FF70FFFFFF0BFF0CFF0DFFFFFFB0FF9C
-:103AF00088FF37FFFFFF03FF8CFF3BFFFFFF03FF44
-:103B000000FF40FFFFFF01FF8BFF93FFFFFF51FF0F
-:103B100082FF43FFFFFF80FF8BFF93FFFFFF60FFEC
-:103B200000FF34FFFFFF89FF00FF40FFFFFF00FFA2
-:103B30000CFF0DFFFFFF80FF0CFF0DFFFFFFA0FF3D
-:103B400000FF0AFFFFFF0FFF80FF37FFFFFF00FFAF
-:103B500000FF34FFFFFF08FF02FF3CFFFFFF45FFB0
-:103B600076FF14FFFFFFDEFF00FFA0FFFFFF03FF54
-:103B700084FF37FFFFFF00FF00FF34FFFFFF08FF58
-:103B800002FF3CFFFFFF45FF77FF14FFFFFF2EFF03
-:103B900000FFA0FFFFFF03FF7EFF38FFFFFF00FFD6
-:103BA00000FF38FFFFFF08FF00FF3CFFFFFFE5FFBE
-:103BB00077FF14FFFFFF8EFF00FF40FFFFFF00FFB6
-:103BC00000FF58FFFFFF03FF00FF0AFFFFFF0FFF8B
-:103BD00064FF1CFFFFFF4FFF38FF22FFFFFF0FFFB7
-:103BE00077FF14FFFFFFE5FF8BFF83FFFFFF40FF21
-:103BF00078FF22FFFFFF0FFF64FF1CFFFFFF8FFF17
-:103C000038FF22FFFFFF0FFF78FF14FFFFFF35FF94
-:103C10008BFF83FFFFFF40FF78FF22FFFFFF0FFFB7
-:103C200000FF0AFFFFFF0FFF00FF34FFFFFF09FF48
-:103C300000FF34FFFFFF85FF00FF34FFFFFF56FF4B
-:103C400000FF09FFFFFF06FF20FF40FFFFFF00FF0F
-:103C500001FF40FFFFFFC1FF00FF40FFFFFF44FFE8
-:103C600000FF68FFFFFF05FF00FF68FFFFFF15FF74
-:103C700000FF68FFFFFF05FF00FF68FFFFFF45FF34
-:103C800000FF0AFFFFFF0FFF86FF87FFFFFFF0FF28
-:103C900086FF8BFFFFFFE0FF00FF34FFFFFFC8FF41
-:103CA00000FF38FFFFFFC8FF00FF60FFFFFF03FFBB
-:103CB00000FF60FFFFFF13FF00FF78FFFFFF13FF10
-:103CC00000FF78FFFFFF03FF86FF97FFFFFFF0FF76
-:103CD00086FF9BFFFFFFE0FF05FF81FFFFFFC0FFA7
-:103CE00078FF22FFFFFF0FFF21FF18FFFFFF71FF8B
-:103CF00000FF0AFFFFFF0FFF7FFF38FFFFFF01FFFD
-:103D000000FF38FFFFFF09FF00FF38FFFFFF06FF3E
-:103D10007EFF40FFFFFF00FF00FF40FFFFFFB1FFFE
-:103D200008FF0CFFFFFF00FF00FF3CFFFFFFC5FF88
-:103D30007AFF14FFFFFFBEFF00FF50FFFFFF46FFAB
-:103D4000E1FF22FFFFFF0FFF7AFF1CFFFFFFE0FFF5
-:103D500060FF22FFFFFF0FFF00FF58FFFFFFA7FFDD
-:103D60000CFF0CFFFFFF00FF00FF0AFFFFFF0FFF2C
-:103D700000FF40FFFFFFC4FF00FF0AFFFFFF0FFF30
-:103D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
-:043D9000FFFFFFFF33
-:00000001FF
diff --git a/firmware/matrox/g200_warp.H16 b/firmware/matrox/g200_warp.H16
deleted file mode 100644
index 5064b6f01bb4..000000000000
--- a/firmware/matrox/g200_warp.H16
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * WARP pipes are named according to the functions they perform, where
- *
- * - T stands for computation of texture stage 0
- * - T2 stands for computation of both texture stage 0 and texture stage 1
- * - G stands for computation of triangle intensity (Gouraud interpolation)
- * - Z stands for computation of Z buffer interpolation
- * - S stands for computation of specular highlight
- * - A stands for computation of the alpha channel
- * - F stands for computation of vertex fog interpolation
- */
-/* TGZ */
-:04B8000000008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E80098A0E94040D8ECFF80C0E9008000E81FD718BD3FD722BD8104890401040904C941C0EC110400E041CC41CD49CC49CDD141C0EC51CC51CD80041004080400E000CCC0CDD149C0EC8A1F20E98B3F20E9413C41AD493C49AD10CC10CD08CC08CDB94149BB1FF041CD513C51AD009880E9728007EA241F20E9154149BD1D4151BD2E412AB83453A0E815301D3058E300E0B54048BD3D4050BD2443A0E82C4BA0E8157209E300E01D723530B530BD303D309C97579F008000E86C64C8EC98E1B505BD052E3032C0A0E833C0A0E87464C8EC403C40AD326A2A302073336A00E028731C7283E2608015EAB83D28DF303520DF403000E0CCE26472254252BF2D424ABF302E30DF382E38DF181D45E91E1545E92B4951BD00E01F73383840AF303040AF241F24DF1D3220E92C1F2CDF1A3320E9B01008E34010B81026F030CD2FF038CD2B8020E92A8020E9A62088E200E0AF20282A26AF202AC0AF341F34DF462446DF283080BF203880BF472447DF4E2C4EDF4F2C4FDF563456DF281528DF201D20DF573457DF00E01D05048010EA89E22B303FC11DBD008000E8008000E8008000E8A068BF25008000E820C020AF2805977400E02A1016C020E9048010EA8CE2950528C128AD1FC115BD008000E8008000E8A8679F6B008000E828C028AD1D252005283280AD402A40BD1C8020E9203320AD207300E0B64951BB262FB0E8192020E9352035DF3D203DDF152015DF1D201DDF26D026CD29492AB8264080BD3B4850BD3E54579F00E082E11EAF599F008000E826302930483C48AD2B72C2E12CC044C2052434BF0D242CBF2D464EBF254656BF201D6F8F323E5FE93E50569F00E03B301E8F519F331E5FE9054454B20D444CB219C0B0E834C044C4337300E03E62579F1EAF599F00E00D20843E58E9281D6F8F052000E0851E58E99B3B33DF202042AF3042569F803E57E93F8F519F30805FE9282824AF811E57E9054757BF0D474FBF888058E91B291BDF301D6F8F3A304FE91C3026DF09E33B053E50569F3B3F4FE91E8F519F00E0AC202D444CB42C1CC0AF254454B400E0C830304630AF1B1B48AF00E02520382C4FE9868057E9381D6F8F287400E00D444CB0054454B02D209B10823E57E932F01BCD1EBD599F831E57E9384738AF34202A3000E00D2032200520878057E91F54579F1742569F00E03B6A3F8F519F371E4FE937322AAF00E03200008000E827C044C0361F4FE91F1F26DF371B37BF172617DF3E174FE93F3F4FE9341F34AF2B05A720332B37DF2717C0AF34804FE9008000E803800AEA17C12BBD008000E8008000E8B3689725008000E833C033AF3C274FE9573920E9281960EC2B3220E91D3B20E9B30500E0162820E9233B33AD1E2B20E91C8020E9573620E90080A0E94040D8ECFF80C0E990E200E085FF20EA19C8C1CD1FD718BD3FD722BD9F4149BD008000E8254149BD2D4151BD0D8007EA008000E8354048BD3D4050BD008000E825302D303530B530BD303D309CA75B9F008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E884FF0AEA008000E8C941C8EC42E100E082FF20EA008000E8008000E8008000E8C840C0EC008000E87FFF20EA008000E8008000E8008000E871
-/* TGZF */
-:0548000000008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E80098A0E94040D8ECFF80C0E9008000E81FD718BD3FD722BD8104890401040904C941C0EC110400E041CC41CD49CC49CDD141C0EC51CC51CD80041004080400E000CCC0CDD149C0EC8A1F20E98B3F20E9413C41AD493C49AD10CC10CD08CC08CDB94149BB1FF041CD513C51AD009880E97F8007EA241F20E9214580E81A4D80E8315580E8008000E8154149BD1D4151BD2E412AB83453A0E815301D3058E300E0B54048BD3D4050BD2443A0E82C4BA0E8157209E300E01D723530B530BD303D309C97579F008000E86C64C8EC98E1B505BD052E3032C0A0E833C0A0E87464C8EC403C40AD326A2A302073336A00E028731C7283E26B8015EAB83D28DF303520DF403000E0CCE26472254252BF2D424ABF302E30DF382E38DF181D45E91E1545E92B4951BD00E01F73383840AF303040AF241F24DF1D3220E92C1F2CDF1A3320E9B01008E34010B81026F030CD2FF038CD2B8020E92A8020E9A62088E200E0AF20282A26AF202AC0AF341F34DF462446DF283080BF203880BF472447DF4E2C4EDF4F2C4FDF563456DF281528DF201D20DF573457DF00E01D05048010EA89E22B303FC11DBD008000E8008000E8008000E8A068BF25008000E820C020AF2805977400E02A1016C020E9048010EA8CE2950528C128AD1FC115BD008000E8008000E8A8679F6B008000E828C028AD1D252005283280AD402A40BD1C8020E9203320AD207300E0B64951BB262FB0E8192020E9352035DF3D203DDF152015DF1D201DDF26D026CD29492AB8264080BD3B4850BD3E54579F00E082E11EAF599F008000E826302930483C48AD2B72C2E12CC044C2052434BF0D242CBF2D464EBF254656BF201D6F8F323E5FE93E50569F00E03B301E8F519F331E5FE9054454B20D444CB219C0B0E834C044C4337300E03E62579F1EAF599F00E00D20843E58E9281D6F8F052000E0851E58E99B3B33DF202042AF3042569F803E57E93F8F519F30805FE9282824AF811E57E9054757BF0D474FBF888058E91B291BDF301D6F8F3A304FE91C3026DF09E33B053E50569F3B3F4FE91E8F519F00E0AC202D444CB42C1CC0AF254454B400E0C830304630AF1B1B48AF00E02520382C4FE9868057E9381D6F8F287400E00D444CB0054454B02D209B10823E57E932F01BCD1EBD599F831E57E9384738AF34202A3000E00D2032200520878057E91F54579F1742569F00E03B6A3F8F519F371E4FE937322AAF00E03200008000E827C044C0361F4FE91F1F26DF371B37BF172617DF3E174FE93F3F4FE9341F34AF2B05A720332B37DF2717C0AF34804FE9008000E80D211AB6052131B603802AEA17C12BBD0D2005202FC021C6B3689725008000E833C033AF3C274FE91750569F008000E8370F5C9F00E02F20008000E8281960ECB30500E0008000E8233B33AD008000E8172617DF35174FE9008000E8008000E8008000E839374FE92F2F17AF008000E8008000E8008000E831804FE9008000E8008000E8573920E9162820E91D3B20E91E2B20E92B3220E91C2320E9573620E90080A0E94040D8ECFF80C0E990E200E078FF20EA19C8C1CD1FD718BD3FD722BD9F4149BD008000E8254149BD2D4151BD0D8007EA008000E8354048BD3D4050BD008000E825302D303530B530BD303D309CA75B9F008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E877FF0AEA008000E8C941C8EC42E100E075FF20EA008000E8008000E8008000E8C840C0EC008000E872FF20EA008000E8008000E8008000E8BB
-/* TGZA */
-:04E80000000098A0E94040D8ECFF80C0E9008000E81FD718BD3FD722BD8104890401040904C941C0EC110400E041CC41CD49CC49CDD141C0EC51CC51CD80041004080400E000CCC0CDD149C0EC8A1F20E98B3F20E9413C41AD493C49AD10CC10CD08CC08CDB94149BB1FF041CD513C51AD009880E97D8007EA241F20E9154149BD1D4151BD2E412AB83453A0E815301D3058E300E0B54048BD3D4050BD2443A0E82C4BA0E8157209E300E01D723530B530BD303D309C97579F008000E86C64C8EC98E1B505BD052E3032C0A0E833C0A0E87464C8EC403C40AD326A2A302073336A00E028731C7283E26B8015EAB83D28DF303520DF403000E0CCE26472254252BF2D424ABF302E30DF382E38DF181D45E91E1545E92B4951BD00E01F73383840AF303040AF241F24DF1D3220E92C1F2CDF1A3320E9B01008E34010B81026F030CD2FF038CD2B8020E92A8020E9A62088E200E0AF20282A26AF202AC0AF341F34DF462446DF283080BF203880BF472447DF4E2C4EDF4F2C4FDF563456DF281528DF201D20DF573457DF00E01D05048010EA89E22B303FC11DBD008000E8008000E8008000E8A068BF25008000E820C020AF2805977400E02A1016C020E9048010EA8CE2950528C128AD1FC115BD008000E8008000E8A8679F6B008000E828C028AD1D252005283280AD402A40BD1C8020E9203320AD207300E0B64951BB262FB0E8192020E9352035DF3D203DDF152015DF1D201DDF26D026CD29492AB8264080BD3B4850BD3E54579F00E082E11EAF599F008000E826302930483C48AD2B72C2E12CC044C2052434BF0D242CBF2D464EBF254656BF201D6F8F323E5FE93E50569F00E03B301E8F519F331E5FE9054454B20D444CB219C0B0E834C044C4337300E03E62579F1EAF599F00E00D20843E58E9281D6F8F052000E0851E58E99B3B33DF202042AF3042569F803E57E93F8F519F30805FE9282824AF811E57E9054757BF0D474FBF888058E91B291BDF301D6F8F3A304FE91C3026DF09E33B053E50569F3B3F4FE91E8F519F00E0AC202D444CB42C1CC0AF254454B400E0C830304630AF1B1B48AF00E02520382C4FE9868057E9381D6F8F287400E00D444CB0054454B02D209B10823E57E932F01BCD1EBD599F831E57E9384738AF34202A3000E00D2032200520878057E91F54579F1742569F00E03B6A3F8F519F371E4FE937322AAF00E03200008000E827C044C0361F4FE91F1F26DF371B37BF172617DF3E174FE93F3F4FE9341F34AF2B05A720332B37DF2717C0AF34804FE9008000E82D444CB6254454B603802AEA17C12BBD2D20252007C044C6B3689725008000E833C033AF3C274FE91F62579F008000E83F3D5D9F00E00720008000E8281960ECB30500E0008000E8233B33AD008000E81F261FDF9D1F4FE9008000E8008000E8008000E89E3F4FE907071FAF008000E8008000E8008000E89C804FE9008000E8008000E8573920E9162820E91D3B20E91E2B20E92B3220E91C2320E9573620E90080A0E94040D8ECFF80C0E990E200E07AFF20EA19C8C1CD1FD718BD3FD722BD9F4149BD008000E8254149BD2D4151BD0D8007EA008000E8354048BD3D4050BD008000E825302D303530B530BD303D309CA75B9F008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E879FF0AEA008000E8C941C8EC42E100E077FF20EA008000E8008000E8008000E8C840C0EC008000E874FF20EA008000E8008000E8008000E8D9
-/* TGZAF */
-:0568000000008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E80098A0E94040D8ECFF80C0E9008000E81FD718BD3FD722BD8104890401040904C941C0EC110400E041CC41CD49CC49CDD141C0EC51CC51CD80041004080400E000CCC0CDD149C0EC8A1F20E98B3F20E9413C41AD493C49AD10CC10CD08CC08CDB94149BB1FF041CD513C51AD009880E9838007EA241F20E9214580E81A4D80E8315580E8008000E8154149BD1D4151BD2E412AB83453A0E815301D3058E300E0B54048BD3D4050BD2443A0E82C4BA0E8157209E300E01D723530B530BD303D309C97579F008000E86C64C8EC98E1B505BD052E3032C0A0E833C0A0E87464C8EC403C40AD326A2A302073336A00E028731C7283E26F8015EAB83D28DF303520DF403000E0CCE26472254252BF2D424ABF302E30DF382E38DF181D45E91E1545E92B4951BD00E01F73383840AF303040AF241F24DF1D3220E92C1F2CDF1A3320E9B01008E34010B81026F030CD2FF038CD2B8020E92A8020E9A62088E200E0AF20282A26AF202AC0AF341F34DF462446DF283080BF203880BF472447DF4E2C4EDF4F2C4FDF563456DF281528DF201D20DF573457DF00E01D05048010EA89E22B303FC11DBD008000E8008000E8008000E8A068BF25008000E820C020AF2805977400E02A1016C020E9048010EA8CE2950528C128AD1FC115BD008000E8008000E8A8679F6B008000E828C028AD1D252005283280AD402A40BD1C8020E9203320AD207300E0B64951BB262FB0E8192020E9352035DF3D203DDF152015DF1D201DDF26D026CD29492AB8264080BD3B4850BD3E54579F00E082E11EAF599F008000E826302930483C48AD2B72C2E12CC044C2052434BF0D242CBF2D464EBF254656BF201D6F8F323E5FE93E50569F00E03B301E8F519F331E5FE9054454B20D444CB219C0B0E834C044C4337300E03E62579F1EAF599F00E00D20843E58E9281D6F8F052000E0851E58E99B3B33DF202042AF3042569F803E57E93F8F519F30805FE9282824AF811E57E9054757BF0D474FBF888058E91B291BDF301D6F8F3A304FE91C3026DF09E33B053E50569F3B3F4FE91E8F519F00E0AC202D444CB42C1CC0AF254454B400E0C830304630AF1B1B48AF00E02520382C4FE9868057E9381D6F8F287400E00D444CB0054454B02D209B10823E57E932F01BCD1EBD599F831E57E9384738AF34202A3000E00D2032200520878057E91F54579F1742569F00E03B6A3F8F519F371E4FE937322AAF00E03200008000E827C044C0361F4FE91F1F26DF371B37BF172617DF3E174FE93F3F4FE9341F34AF2B05A720332B37DF2717C0AF34804FE9008000E80D211AB6052131B62D444CB6254454B603802AEA17C12BBD0D2005202FC021C6B3689725008000E833C033AF3C274FE900E0252007C044C61750569F00E02D20370F5C9F00E02F201F62579F00E007203F3D5D9F008000E8008000E8281960ECB30500E0172617DF233B33AD35174FE91F261FDF9D1F4FE99E3F4FE939374FE92F2F17AF008000E807071FAF008000E831804FE9008000E89C804FE9008000E8008000E8573920E9162820E91D3B20E91E2B20E92B3220E91C2320E9573620E90080A0E94040D8ECFF80C0E990E200E074FF20EA19C8C1CD1FD718BD3FD722BD9F4149BD008000E8254149BD2D4151BD0D8007EA008000E8354048BD3D4050BD008000E825302D303530B530BD303D309CA75B9F008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E873FF0AEA008000E8C941C8EC42E100E071FF20EA008000E8008000E8008000E8C840C0EC008000E86EFF20EA008000E8008000E8008000E830
-/* TGZS */
-:05C0000000008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E80098A0E94040D8ECFF80C0E9008000E81FD718BD3FD722BD8104890401040904C941C0EC110400E041CC41CD49CC49CDD141C0EC51CC51CD80041004080400E000CCC0CDD149C0EC8A1F20E98B3F20E9413C41AD493C49AD10CC10CD08CC08CDB94149BB1FF041CD513C51AD009880E98B8007EA241F20E9214580E81A4D80E8315580E8008000E8154149BD1D4151BD2E412AB83453A0E815301D3058E300E0B54048BD3D4050BD2443A0E82C4BA0E8157209E300E01D723530B530BD303D309C97579F008000E86C64C8EC98E1B505BD052E3032C0A0E833C0A0E87464C8EC403C40AD326A2A302073336A00E028731C7283E2778015EAB83D28DF303520DF403000E0CCE26472254252BF2D424ABF302E30DF382E38DF181D45E91E1545E92B4951BD00E01F73383840AF303040AF241F24DF1D3220E92C1F2CDF1A3320E9B01008E34010B81026F030CD2FF038CD2B8020E92A8020E9A62088E200E0AF20282A26AF202AC0AF341F34DF462446DF283080BF203880BF472447DF4E2C4EDF4F2C4FDF563456DF281528DF201D20DF573457DF00E01D05048010EA89E22B303FC11DBD008000E8008000E8008000E8A068BF25008000E820C020AF2805977400E02A1016C020E9048010EA8CE2950528C128AD1FC115BD008000E8008000E8A8679F6B008000E828C028AD1D252005283280AD402A40BD1C8020E9203320AD207300E0B64951BB262FB0E8192020E9352035DF3D203DDF152015DF1D201DDF26D026CD29492AB8264080BD3B4850BD3E54579F00E082E11EAF599F008000E826302930483C48AD2B72C2E12CC044C2052434BF0D242CBF2D464EBF254656BF201D6F8F323E5FE93E50569F00E03B301E8F519F331E5FE9054454B20D444CB219C0B0E834C044C4337300E03E62579F1EAF599F00E00D20843E58E9281D6F8F052000E0851E58E99B3B33DF202042AF3042569F803E57E93F8F519F30805FE9282824AF811E57E9054757BF0D474FBF888058E91B291BDF301D6F8F3A304FE91C3026DF09E33B053E50569F3B3F4FE91E8F519F00E0AC202D444CB42C1CC0AF254454B400E0C830304630AF1B1B48AF00E02520382C4FE9868057E9381D6F8F287400E00D444CB0054454B02D209B10823E57E932F01BCD1EBD599F831E57E9384738AF34202A3000E00D2032200520878057E91F54579F1742569F00E03B6A3F8F519F371E4FE937322AAF00E03200008000E827C044C0361F4FE91F1F26DF371B37BF172617DF3E174FE93F3F4FE9341F34AF2B05A720332B37DF2717C0AF34804FE9008000E82D211AB0252131B00D211AB2052131B203802AEA17C12BBD2D20252005200D20B3689725008000E833C033AF2FC021C01642569F3C274FE91E62579F008000E8252131B42D211AB43F2F5D9F008000E8330500E0281960EC370F5C9F00E02F20233B33AD1E261EDFA71E4FE9172616DF2D2000E0A83F4FE92F2F1EAF252000E0A4164FE90FC021C2A6804FE91F62579F3F2F5D9F00E08F20A5374FE90F170FAF06C021C4008000E8008000E8A3804FE9062000E01F261FDFA11F4FE9A23F4FE9008000E8008000E806061FAF008000E8008000E8008000E8A0804FE9008000E8008000E8573920E9162820E91D3B20E91E2B20E92B3220E91C2320E9573620E90080A0E94040D8ECFF80C0E990E200E06CFF20EA19C8C1CD1FD718BD3FD722BD9F4149BD008000E8254149BD2D4151BD0D8007EA008000E8354048BD3D4050BD008000E825302D303530B530BD303D309CA75B9F008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E86BFF0AEA008000E8C941C8EC42E100E069FF20EA008000E8008000E8008000E8C840C0EC008000E866FF20EA008000E8008000E8008000E85C
-/* TGZSF */
-:05E0000000008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E80098A0E94040D8ECFF80C0E9008000E81FD718BD3FD722BD8104890401040904C941C0EC110400E041CC41CD49CC49CDD141C0EC51CC51CD80041004080400E000CCC0CDD149C0EC8A1F20E98B3F20E9413C41AD493C49AD10CC10CD08CC08CDB94149BB1FF041CD513C51AD009880E98F8007EA241F20E9214580E81A4D80E8315580E8008000E8154149BD1D4151BD2E412AB83453A0E815301D3058E300E0B54048BD3D4050BD2443A0E82C4BA0E8157209E300E01D723530B530BD303D309C97579F008000E86C64C8EC98E1B505BD052E3032C0A0E833C0A0E87464C8EC403C40AD326A2A302073336A00E028731C7283E27B8015EAB83D28DF303520DF403000E0CCE26472254252BF2D424ABF302E30DF382E38DF181D45E91E1545E92B4951BD00E01F73383840AF303040AF241F24DF1D3220E92C1F2CDF1A3320E9B01008E34010B81026F030CD2FF038CD2B8020E92A8020E9A62088E200E0AF20282A26AF202AC0AF341F34DF462446DF283080BF203880BF472447DF4E2C4EDF4F2C4FDF563456DF281528DF201D20DF573457DF00E01D05048010EA89E22B303FC11DBD008000E8008000E8008000E8A068BF25008000E820C020AF2805977400E02A1016C020E9048010EA8CE2950528C128AD1FC115BD008000E8008000E8A8679F6B008000E828C028AD1D252005283280AD402A40BD1C8020E9203320AD207300E0B64951BB262FB0E8192020E9352035DF3D203DDF152015DF1D201DDF26D026CD29492AB8264080BD3B4850BD3E54579F00E082E11EAF599F008000E826302930483C48AD2B72C2E12CC044C2052434BF0D242CBF2D464EBF254656BF201D6F8F323E5FE93E50569F00E03B301E8F519F331E5FE9054454B20D444CB219C0B0E834C044C4337300E03E62579F1EAF599F00E00D20843E58E9281D6F8F052000E0851E58E99B3B33DF202042AF3042569F803E57E93F8F519F30805FE9282824AF811E57E9054757BF0D474FBF888058E91B291BDF301D6F8F3A304FE91C3026DF09E33B053E50569F3B3F4FE91E8F519F00E0AC202D444CB42C1CC0AF254454B400E0C830304630AF1B1B48AF00E02520382C4FE9868057E9381D6F8F287400E00D444CB0054454B02D209B10823E57E932F01BCD1EBD599F831E57E9384738AF34202A3000E00D2032200520878057E91F54579F1742569F00E03B6A3F8F519F371E4FE937322AAF00E03200008000E827C044C0361F4FE91F1F26DF371B37BF172617DF3E174FE93F3F4FE9341F34AF2B05A720332B37DF2717C0AF34804FE9008000E82D211AB0252131B00D211AB2052131B203802AEA17C12BBD2D20252005200D20B3689725008000E833C033AF2FC021C01642569F3C274FE91E62579F008000E8252131B42D211AB43F2F5D9F008000E8330500E0281960EC0D211AB6052131B6370F5C9F00E02F20233B33AD1E261EDFA71E4FE9172616DF2D2000E0A83F4FE92F2F1EAF252000E0A4164FE90FC021C2A6804FE91F62579F0D2005202FC021C63F2F5D9F00E00F201750569FA5374FE906C021C40F170FAF370F5C9F008000E82F2000E0A3804FE9062000E01F261FDF172617DF35174FE9A11F4FE9A23F4FE906061FAF39374FE92F2F17AF008000E8A0804FE9008000E831804FE9008000E8008000E8573920E9162820E91D3B20E91E2B20E92B3220E91C2320E9573620E90080A0E94040D8ECFF80C0E990E200E068FF20EA19C8C1CD1FD718BD3FD722BD9F4149BD008000E8254149BD2D4151BD0D8007EA008000E8354048BD3D4050BD008000E825302D303530B530BD303D309CA75B9F008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E867FF0AEA008000E8C941C8EC42E100E065FF20EA008000E8008000E8008000E8C840C0EC008000E862FF20EA008000E8008000E8008000E8F9
-/* TGZSA */
-:05E0000000008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E80098A0E94040D8ECFF80C0E9008000E81FD718BD3FD722BD8104890401040904C941C0EC110400E041CC41CD49CC49CDD141C0EC51CC51CD80041004080400E000CCC0CDD149C0EC8A1F20E98B3F20E9413C41AD493C49AD10CC10CD08CC08CDB94149BB1FF041CD513C51AD009880E98F8007EA241F20E9214580E81A4D80E8315580E8008000E8154149BD1D4151BD2E412AB83453A0E815301D3058E300E0B54048BD3D4050BD2443A0E82C4BA0E8157209E300E01D723530B530BD303D309C97579F008000E86C64C8EC98E1B505BD052E3032C0A0E833C0A0E87464C8EC403C40AD326A2A302073336A00E028731C7283E27B8015EAB83D28DF303520DF403000E0CCE26472254252BF2D424ABF302E30DF382E38DF181D45E91E1545E92B4951BD00E01F73383840AF303040AF241F24DF1D3220E92C1F2CDF1A3320E9B01008E34010B81026F030CD2FF038CD2B8020E92A8020E9A62088E200E0AF20282A26AF202AC0AF341F34DF462446DF283080BF203880BF472447DF4E2C4EDF4F2C4FDF563456DF281528DF201D20DF573457DF00E01D05048010EA89E22B303FC11DBD008000E8008000E8008000E8A068BF25008000E820C020AF2805977400E02A1016C020E9048010EA8CE2950528C128AD1FC115BD008000E8008000E8A8679F6B008000E828C028AD1D252005283280AD402A40BD1C8020E9203320AD207300E0B64951BB262FB0E8192020E9352035DF3D203DDF152015DF1D201DDF26D026CD29492AB8264080BD3B4850BD3E54579F00E082E11EAF599F008000E826302930483C48AD2B72C2E12CC044C2052434BF0D242CBF2D464EBF254656BF201D6F8F323E5FE93E50569F00E03B301E8F519F331E5FE9054454B20D444CB219C0B0E834C044C4337300E03E62579F1EAF599F00E00D20843E58E9281D6F8F052000E0851E58E99B3B33DF202042AF3042569F803E57E93F8F519F30805FE9282824AF811E57E9054757BF0D474FBF888058E91B291BDF301D6F8F3A304FE91C3026DF09E33B053E50569F3B3F4FE91E8F519F00E0AC202D444CB42C1CC0AF254454B400E0C830304630AF1B1B48AF00E02520382C4FE9868057E9381D6F8F287400E00D444CB0054454B02D209B10823E57E932F01BCD1EBD599F831E57E9384738AF34202A3000E00D2032200520878057E91F54579F1742569F00E03B6A3F8F519F371E4FE937322AAF00E03200008000E827C044C0361F4FE91F1F26DF371B37BF172617DF3E174FE93F3F4FE9341F34AF2B05A720332B37DF2717C0AF34804FE9008000E82D211AB0252131B00D211AB2052131B203802AEA17C12BBD2D20252005200D20B3689725008000E833C033AF2FC021C01642569F3C274FE91E62579F008000E8252131B42D211AB43F2F5D9F008000E8330500E0281960EC0D444CB6054454B6370F5C9F00E02F20233B33AD1E261EDFA71E4FE9172616DF2D2000E0A83F4FE92F2F1EAF252000E0A4164FE90FC021C2A6804FE91F62579F0D200520008000E83F2F5D9F00E00F201750569FA5374FE906C021C40F170FAF370F5C9F008000E82FC044C6A3804FE9062000E01F261FDF172617DF9D174FE9A11F4FE9A23F4FE906061FAF00E0AF209E374FE92F172FAFA0804FE9008000E8008000E89C804FE9008000E8573920E9162820E91D3B20E91E2B20E92B3220E91C2320E9573620E90080A0E94040D8ECFF80C0E990E200E068FF20EA19C8C1CD1FD718BD3FD722BD9F4149BD008000E8254149BD2D4151BD0D8007EA008000E8354048BD3D4050BD008000E825302D303530B530BD303D309CA75B9F008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E867FF0AEA008000E8C941C8EC42E100E065FF20EA008000E8008000E8008000E8C840C0EC008000E862FF20EA008000E8008000E8008000E883
-/* TGZAF */
-:05B8000000008000E8008000E8008000E8008000E8008000E8008000E80098A0E94040D8ECFF80C0E9008000E81FD718BD3FD722BD8104890401040904C941C0EC110400E041CC41CD49CC49CDD141C0EC51CC51CD80041004080400E000CCC0CDD149C0EC8A1F20E98B3F20E9413C41AD493C49AD10CC10CD08CC08CDB94149BB1FF041CD513C51AD009880E9948007EA241F20E9214580E81A4D80E8315580E8008000E8154149BD1D4151BD2E412AB83453A0E815301D3058E300E0B54048BD3D4050BD2443A0E82C4BA0E8157209E300E01D723530B530BD303D309C97579F008000E86C64C8EC98E1B505BD052E3032C0A0E833C0A0E87464C8EC403C40AD326A2A302073336A00E028731C7283E2808015EAB83D28DF303520DF403000E0CCE26472254252BF2D424ABF302E30DF382E38DF181D45E91E1545E92B4951BD00E01F73383840AF303040AF241F24DF1D3220E92C1F2CDF1A3320E9B01008E34010B81026F030CD2FF038CD2B8020E92A8020E9A62088E200E0AF20282A26AF202AC0AF341F34DF462446DF283080BF203880BF472447DF4E2C4EDF4F2C4FDF563456DF281528DF201D20DF573457DF00E01D05048010EA89E22B303FC11DBD008000E8008000E8008000E8A068BF25008000E820C020AF2805977400E02A1016C020E9048010EA8CE2950528C128AD1FC115BD008000E8008000E8A8679F6B008000E828C028AD1D252005283280AD402A40BD1C8020E9203320AD207300E0B64951BB262FB0E8192020E9352035DF3D203DDF152015DF1D201DDF26D026CD29492AB8264080BD3B4850BD3E54579F00E082E11EAF599F008000E826302930483C48AD2B72C2E12CC044C2052434BF0D242CBF2D464EBF254656BF201D6F8F323E5FE93E50569F00E03B301E8F519F331E5FE9054454B20D444CB219C0B0E834C044C4337300E03E62579F1EAF599F00E00D20843E58E9281D6F8F052000E0851E58E99B3B33DF202042AF3042569F803E57E93F8F519F30805FE9282824AF811E57E9054757BF0D474FBF888058E91B291BDF301D6F8F3A304FE91C3026DF09E33B053E50569F3B3F4FE91E8F519F00E0AC202D444CB42C1CC0AF254454B400E0C830304630AF1B1B48AF00E02520382C4FE9868057E9381D6F8F287400E00D444CB0054454B02D209B10823E57E932F01BCD1EBD599F831E57E9384738AF34202A3000E00D2032200520878057E91F54579F1742569F00E03B6A3F8F519F371E4FE937322AAF00E03200008000E827C044C0361F4FE91F1F26DF371B37BF172617DF3E174FE93F3F4FE9341F34AF2B05A720332B37DF2717C0AF34804FE9008000E82D211AB0252131B00D211AB2052131B203802AEA17C12BBD2D20252005200D20B3689725008000E833C033AF2FC021C01642569F3C274FE91E62579F008000E8252131B42D211AB43F2F5D9F008000E8330500E0281960EC0D211AB6052131B6370F5C9F00E02F20233B33AD1E261EDFA71E4FE9172616DF2D2000E0A83F4FE92F2F1EAF252000E0A4164FE90FC021C2A6804FE91F62579F0D2005202FC021C62D444CB6254454B63F2F5D9F00E00F202D20252007C044C61750569FA5374FE906C021C40F170FAF370F5C9F008000E81E62579F008000E83E3D5D9F00E007202F2000E0A30F4FE9062000E01F261FDF172617DFA11F4FE91E261EDF9D1E4FE935174FE9A23F4FE906061FAF39374FE92F2F17AF07071EAFA0804FE99E3E4FE931804FE99C804FE9008000E8573920E9162820E91D3B20E91E2B20E92B3220E91C2320E9573620E90080A0E94040D8ECFF80C0E990E200E063FF20EA19C8C1CD1FD718BD3FD722BD9F4149BD008000E8254149BD2D4151BD0D8007EA008000E8354048BD3D4050BD008000E825302D303530B530BD303D309CA75B9F008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E8008000E862FF0AEA008000E8C941C8EC42E100E060FF20EA008000E8008000E8008000E8C840C0EC008000E85DFF20EA008000E8008000E8008000E8D8
-:0000000001FF
diff --git a/firmware/matrox/g400_warp.H16 b/firmware/matrox/g400_warp.H16
deleted file mode 100644
index b432d1074d8d..000000000000
--- a/firmware/matrox/g400_warp.H16
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * WARP pipes are named according to the functions they perform, where
- *
- * - T stands for computation of texture stage 0
- * - T2 stands for computation of both texture stage 0 and texture stage 1
- * - G stands for computation of triangle intensity (Gouraud interpolation)
- * - Z stands for computation of Z buffer interpolation
- * - S stands for computation of specular highlight
- * - A stands for computation of the alpha channel
- * - F stands for computation of vertex fog interpolation
- */
-/* TGZ */
-:0338000000008898E9008000E80080A0E90000D8ECFF80C0E9008000E8224048BF2A4050BF324149BF3A4151BFC36BCB6B008898E9737BC8EC96E241047B43A0E8734BA0E8ADEE299F00E0490490E251043146B1E84941C0EC3957B1E8000446E27353A0E85141C0EC31003900588015EA080410045149C0EC2F4160EA312039201F42A0E82A424ABF274AA0E81A4252BF1E4960EA737BC8EC265160EA324048BD224050BD124149BD3A4151BDBF2F26BD00E07B723220222012203A20463146BF4E314EBFB3E22D9F008000E8563156BF473947BF4F394FBF573957BF4A8007EA244120E94273F8EC00E02D7333720CE3A52F1EBD43432DDF4B4B2DDFAE1E26BD58E3336653532DDF008000E8B83833BF00E059E31E1241E91A2241E92B403DE93F4BA0E82D73307605803DEA3743A0E83D53A0E84870F8EC2B483CE91F27BCE8008000E8008000E8008000E815C020E915C020E915C020E915C020E9183A41E91D3241E92A4020E9563D56DF463746DF4E3F4EDF163020E94F3F4FDF32322DDF22222DDF12122DDF3A3A2DDF473747DF573D57DF3DCF74C037CF74C431532F9F348020E939E52C9F3C3D20E90A444CB0024454B02A444CB21A4454B21D803AEA0A2002203DCF74C22A201A2030502E9F32315FE938212C9F33395FE931532F9F008000E82A444CB41A4454B439E52C9F383D20E988735EE92A201A202A464EBF1A4656BF31532F9F3E304FE939E52C9F3F384FE90A474FBF024757BF31532F9F3A314FE939E52C9F3B394FE92A434BBF1A4353BF30502E9F36314FE938212C9F37394FE931532F9F803157E939E52C9F813957E9374850BD8A3620E9867657E98B3E20E9823057E9877757E9833857E9354951BD84315EE9301F5FE985395EE9572520E92B4820E91D37E1EA1E35E1EA00E02677244920E9AFFF20EA162620E9572EBFEA1C46A0E8234EA0E82B56A0E81D47A0E8244FA0E82C57A0E81C0023002B0000E01D0024002C0000E01C6523652B6500E01D6524652C6500E01C2360EC36D736AD2B8060EC1D2460EC3ED73EAD2C8060EC1C2BDEE82380DEE8368036BD3E803EBD33D71CBD3BD723BD468046CF4F804FCF563356CF473B47CFD6FF20EA008000E84E334ECF573B57CF9DFF20EA57C0BFEA0080A0E90000D8EC59
-/* TGZF */
-:0360000000008898E9008000E80080A0E90000D8ECFF80C0E9008000E8224048BF2A4050BF324149BF3A4151BFC36BCB6B008898E9737BC8EC96E241047B43A0E8734BA0E8ADEE299F00E0490490E251043146B1E84941C0EC3957B1E8000446E27353A0E85141C0EC310039005D8015EA080410045149C0EC2F4160EA312039201F42A0E82A424ABF274AA0E81A4252BF1E4960EA737BC8EC265160EA324048BD224050BD124149BD3A4151BDBF2F26BD00E07B723220222012203A20463146BF4E314EBFB3E22D9F008000E8563156BF473947BF4F394FBF573957BF4F8007EA244120E94273F8EC00E02D7333720CE3A52F1EBD43432DDF4B4B2DDFAE1E26BD58E3336653532DDF008000E8B83833BF00E059E31E1241E91A2241E92B403DE93F4BA0E82D73307605803DEA3743A0E83D53A0E84870F8EC2B483CE91F27BCE8008000E8008000E8008000E815C020E915C020E915C020E915C020E9183A41E91D3241E92A4020E9563D56DF463746DF4E3F4EDF163020E94F3F4FDF32322DDF22222DDF12122DDF3A3A2DDF473747DF573D57DF3DCF74C037CF74C439E52C9F348020E931532F9F008000E888735EE9008000E827CF75C63C3D20E90A444CB0024454B02A444CB21A4454B220803AEA0A2002203DCF74C22A201A2030502E9F32315FE938212C9F33395FE931532F9F312720E90A444CB4024454B42A454DB61A4555B639E52C9F383D20E90A2002202A201A200A474FBF024757BF30502E9F3E304FE938212C9F3F384FE92A464EBF1A4656BF31532F9F3A314FE939E52C9F3B394FE931532F9F36304FE939E52C9F37384FE92A434BBF1A4353BF30502E9F35314FE938212C9F39394FE931532F9F803157E939E52C9F813957E9374850BD8A3620E9867657E98B3E20E9823057E9877757E9833857E9354951BD84315EE9301F5FE985395EE9572520E92B4820E91D37E1EA1E35E1EA00E02677244920E9AAFF20EA162620E9572EBFEA1C46A0E8234EA0E82B56A0E81D47A0E8244FA0E82C57A0E81C0023002B0000E01D0024002C0000E01C6523652B6500E01D6524652C6500E01C2360EC36D736AD2B8060EC1D2460EC3ED73EAD2C8060EC1C2BDEE82380DEE8368036BD3E803EBD33D71CBD3BD723BD468046CF4F804FCF563356CF473B47CFD3FF20EA008000E84E334ECF573B57CF98FF20EA57C0BFEA0080A0E90000D8EC90
-/* TGZA */
-:0358000000008898E9008000E80080A0E90000D8ECFF80C0E9008000E8224048BF2A4050BF324149BF3A4151BFC36BCB6B008898E9737BC8EC96E241047B43A0E8734BA0E8ADEE299F00E0490490E251043146B1E84941C0EC3957B1E8000446E27353A0E85141C0EC310039005C8015EA080410045149C0EC2F4160EA312039201F42A0E82A424ABF274AA0E81A4252BF1E4960EA737BC8EC265160EA324048BD224050BD124149BD3A4151BDBF2F26BD00E07B723220222012203A20463146BF4E314EBFB3E22D9F008000E8563156BF473947BF4F394FBF573957BF4E8007EA244120E94273F8EC00E02D7333720CE3A52F1EBD43432DDF4B4B2DDFAE1E26BD58E3336653532DDF008000E8B83833BF00E059E31E1241E91A2241E92B403DE93F4BA0E82D73307605803DEA3743A0E83D53A0E84870F8EC2B483CE91F27BCE8008000E8008000E8008000E815C020E915C020E915C020E915C020E9183A41E91D3241E92A4020E9563D56DF463746DF4E3F4EDF163020E94F3F4FDF32322DDF22222DDF12122DDF3A3A2DDF473747DF573D57DF3DCF74C037CF74C431532F9F348020E939E52C9F3C3D20E927CF74C63DCF74C20A444CB0024454B02A444CB21A4454B220803AEA0A20022088735EE92A201A2030502E9F32315FE938212C9F33395FE931532F9F9C2720E90A444CB4024454B42A444CB61A4454B639E52C9F383D20E90A2002202A201A200A474FBF024757BF30502E9F3E304FE938212C9F3F384FE92A464EBF1A4656BF31532F9F3A314FE939E52C9F3B394FE931532F9F36304FE939E52C9F37384FE92A434BBF1A4353BF30502E9F9D314FE938212C9F9E394FE931532F9F803157E939E52C9F813957E9374850BD8A3620E9867657E98B3E20E9823057E9877757E9833857E9354951BD84315EE9301F5FE985395EE9572520E92B4820E91D37E1EA1E35E1EA00E02677244920E9ABFF20EA162620E9572EBFEA1C46A0E8234EA0E82B56A0E81D47A0E8244FA0E82C57A0E81C0023002B0000E01D0024002C0000E01C6523652B6500E01D6524652C6500E01C2360EC36D736AD2B8060EC1D2460EC3ED73EAD2C8060EC1C2BDEE82380DEE8368036BD3E803EBD33D71CBD3BD723BD468046CF4F804FCF563356CF473B47CFD3FF20EA008000E84E334ECF573B57CF99FF20EA57C0BFEA0080A0E90000D8EC35
-/* TGZAF */
-:0380000000008898E9008000E80080A0E90000D8ECFF80C0E9008000E8224048BF2A4050BF324149BF3A4151BFC36BCB6B008898E9737BC8EC96E241047B43A0E8734BA0E8ADEE299F00E0490490E251043146B1E84941C0EC3957B1E8000446E27353A0E85141C0EC31003900618015EA080410045149C0EC2F4160EA312039201F42A0E82A424ABF274AA0E81A4252BF1E4960EA737BC8EC265160EA324048BD224050BD124149BD3A4151BDBF2F26BD00E07B723220222012203A20463146BF4E314EBFB3E22D9F008000E8563156BF473947BF4F394FBF573957BF538007EA244120E94273F8EC00E02D7333720CE3A52F1EBD43432DDF4B4B2DDFAE1E26BD58E3336653532DDF008000E8B83833BF00E059E31E1241E91A2241E92B403DE93F4BA0E82D73307605803DEA3743A0E83D53A0E84870F8EC2B483CE91F27BCE8008000E8008000E8008000E815C020E915C020E915C020E915C020E9183A41E91D3241E92A4020E9563D56DF463746DF4E3F4EDF163020E94F3F4FDF32322DDF22222DDF12122DDF3A3A2DDF473747DF573D57DF3DCF74C037CF74C40A444CB0024454B031532F9F343720E939E52C9F3C3D20E92A444CB21A4454B226803AEA0A20022088735EE92A201A203DCF74C227CF74C630502E9F32315FE938212C9F33395FE931532F9F9C2720E90A444CB4024454B42A444CB61A4454B639E52C9F383D20E90A2002202A201A203DCF75C6008000E830502E9F3E304FE938212C9F3F384FE90A454DB6024555B631532F9F3A314FE939E52C9F3B394FE9313D20E90A2002202A464EBF1A4656BF0A474FBF024757BF30502E9F36304FE938212C9F37384FE931532F9F9D314FE939E52C9F9E394FE92A434BBF1A4353BF30502E9F35304FE938212C9F39384FE931532F9F803157E939E52C9F813957E9374850BD8A3620E9867657E98B3E20E9823057E9877757E9833857E9354951BD84315EE9301F5FE985395EE9572520E92B4820E91D37E1EA1E35E1EA00E02677244920E9A6FF20EA162620E9572EBFEA1C46A0E8234EA0E82B56A0E81D47A0E8244FA0E82C57A0E81C0023002B0000E01D0024002C0000E01C6523652B6500E01D6524652C6500E01C2360EC36D736AD2B8060EC1D2460EC3ED73EAD2C8060EC1C2BDEE82380DEE8368036BD3E803EBD33D71CBD3BD723BD468046CF4F804FCF563356CF473B47CFCDFF20EA008000E84E334ECF573B57CF94FF20EA57C0BFEA0080A0E90000D8EC89
-/* TGZS */
-:03A0000000008898E9008000E80080A0E90000D8ECFF80C0E9008000E8224048BF2A4050BF324149BF3A4151BFC36BCB6B008898E9737BC8EC96E241047B43A0E8734BA0E8ADEE299F00E0490490E251043146B1E84941C0EC3957B1E8000446E27353A0E85141C0EC31003900658015EA080410045149C0EC2F4160EA312039201F42A0E82A424ABF274AA0E81A4252BF1E4960EA737BC8EC265160EA324048BD224050BD124149BD3A4151BDBF2F26BD00E07B723220222012203A20463146BF4E314EBFB3E22D9F008000E8563156BF473947BF4F394FBF573957BF578007EA244120E94273F8EC00E02D7333720CE3A52F1EBD43432DDF4B4B2DDFAE1E26BD58E3336653532DDF008000E8B83833BF00E059E31E1241E91A2241E92B403DE93F4BA0E82D73307605803DEA3743A0E83D53A0E84870F8EC2B483CE91F27BCE8008000E8008000E8008000E815C020E915C020E915C020E915C020E9183A41E91D3241E92A4020E9563D56DF463746DF4E3F4EDF163020E94F3F4FDF473747DF573D57DF32322DDF22222DDF12122DDF3A3A2DDF27CF74C237CF74C40A444CB0024454B03DCF74C0343720E931532F9F382720E939E52C9F3C3D20E92A444CB21A4454B229803AEA0A20022027CF75C02A201A2030502E9F32315FE938212C9F33395FE93DCF75C237CF75C431532F9FA62720E939E52C9FA33D20E92A444CB41A4454B40A454DB0024555B088735EE92A201A20A03720E90A20022031532F9F3E304FE939E52C9F3F384FE930502E9F3A314FE92A454DB21A4555B20A454DB4024555B438212C9F3B394FE90A2002202A201A202A464EBF1A4656BF31532F9F36314FE939E52C9F37394FE930502E9FA7304FE938212C9FA8384FE90A474FBF024757BF31532F9FA4314FE939E52C9FA5394FE92A434BBF1A4353BF30502E9FA1304FE938212C9FA2384FE931532F9F803157E939E52C9F813957E9374850BD8A3620E9867657E98B3E20E9823057E9877757E9833857E9354951BD84315EE9301F5FE985395EE9572520E92B4820E91D37E1EA1E35E1EA00E02677244920E9A2FF20EA162620E9572EBFEA1C46A0E8234EA0E82B56A0E81D47A0E8244FA0E82C57A0E81C0023002B0000E01D0024002C0000E01C6523652B6500E01D6524652C6500E01C2360EC36D736AD2B8060EC1D2460EC3ED73EAD2C8060EC1C2BDEE82380DEE8368036BD3E803EBD33D71CBD3BD723BD468046CF4F804FCF563356CF473B47CFCAFF20EA008000E84E334ECF573B57CF90FF20EA57C0BFEA0080A0E90000D8ECD8
-/* TGZSF */
-:03C8000000008898E9008000E80080A0E90000D8ECFF80C0E9008000E8224048BF2A4050BF324149BF3A4151BFC36BCB6B008898E9737BC8EC96E241047B43A0E8734BA0E8ADEE299F00E0490490E251043146B1E84941C0EC3957B1E8000446E27353A0E85141C0EC310039006A8015EA080410045149C0EC2F4160EA312039201F42A0E82A424ABF274AA0E81A4252BF1E4960EA737BC8EC265160EA324048BD224050BD124149BD3A4151BDBF2F26BD00E07B723220222012203A20463146BF4E314EBFB3E22D9F008000E8563156BF473947BF4F394FBF573957BF5C8007EA244120E94273F8EC00E02D7333720CE3A52F1EBD43432DDF4B4B2DDFAE1E26BD58E3336653532DDF008000E8B83833BF00E059E31E1241E91A2241E92B403DE93F4BA0E82D73307605803DEA3743A0E83D53A0E84870F8EC2B483CE91F27BCE8008000E8008000E8008000E815C020E915C020E915C020E915C020E9183A41E91D3241E92A4020E9563D56DF463746DF4E3F4EDF163020E94F3F4FDF473747DF573D57DF32322DDF22222DDF12122DDF3A3A2DDF27CF74C237CF74C40A444CB0024454B03DCF74C0343720E931532F9F382720E939E52C9F3C3D20E92A444CB21A4454B22E803AEA0A20022027CF75C02A201A2030502E9F32315FE938212C9F33395FE93DCF75C237CF75C431532F9FA62720E939E52C9FA33D20E92A444CB41A4454B40A454DB0024555B088735EE92A201A20A03720E90A20022031532F9F3E304FE939E52C9F3F384FE930502E9F3A314FE938212C9F3B394FE92A454DB21A4555B20A454DB4024555B427CF75C62A201A20A7304FE90A20022031532F9F312720E939E52C9FA8384FE92A454DB61A4555B630502E9F36314FE938212C9F37394FE9008000E82A201A202A464EBF1A4656BF31532F9FA4314FE939E52C9FA5394FE90A474FBF024757BF31532F9FA1304FE939E52C9FA2384FE92A434BBF1A4353BF30502E9F35314FE938212C9F39394FE931532F9F803157E939E52C9F813957E9374850BD8A3620E9867657E98B3E20E9823057E9877757E9833857E9354951BD84315EE9301F5FE985395EE9572520E92B4820E91D37E1EA1E35E1EA00E02677244920E99DFF20EA162620E9572EBFEA1C46A0E8234EA0E82B56A0E81D47A0E8244FA0E82C57A0E81C0023002B0000E01D0024002C0000E01C6523652B6500E01D6524652C6500E01C2360EC36D736AD2B8060EC1D2460EC3ED73EAD2C8060EC1C2BDEE82380DEE8368036BD3E803EBD33D71CBD3BD723BD468046CF4F804FCF563356CF473B47CFC5FF20EA008000E84E334ECF573B57CF8BFF20EA57C0BFEA0080A0E90000D8ECD3
-/* TGZSA */
-:03C8000000008898E9008000E80080A0E90000D8ECFF80C0E9008000E8224048BF2A4050BF324149BF3A4151BFC36BCB6B008898E9737BC8EC96E241047B43A0E8734BA0E8ADEE299F00E0490490E251043146B1E84941C0EC3957B1E8000446E27353A0E85141C0EC310039006A8015EA080410045149C0EC2F4160EA312039201F42A0E82A424ABF274AA0E81A4252BF1E4960EA737BC8EC265160EA324048BD224050BD124149BD3A4151BDBF2F26BD00E07B723220222012203A20463146BF4E314EBFB3E22D9F008000E8563156BF473947BF4F394FBF573957BF5C8007EA244120E94273F8EC00E02D7333720CE3A52F1EBD43432DDF4B4B2DDFAE1E26BD58E3336653532DDF008000E8B83833BF00E059E31E1241E91A2241E92B403DE93F4BA0E82D73307605803DEA3743A0E83D53A0E84870F8EC2B483CE91F27BCE8008000E8008000E8008000E815C020E915C020E915C020E915C020E9183A41E91D3241E92A4020E9563D56DF463746DF4E3F4EDF163020E94F3F4FDF473747DF573D57DF32322DDF22222DDF12122DDF3A3A2DDF27CF74C237CF74C40A444CB0024454B03DCF74C0343720E931532F9F382720E939E52C9F3C3D20E92A444CB21A4454B22E803AEA0A20022027CF75C02A201A2030502E9F32315FE938212C9F33395FE93DCF75C237CF75C431532F9FA62720E939E52C9FA33D20E92A444CB41A4454B40A454DB0024555B088735EE92A201A20A03720E90A20022031532F9F3E304FE939E52C9F3F384FE930502E9F3A314FE938212C9F3B394FE92A454DB21A4555B20A454DB4024555B427CF74C62A201A20A7304FE90A20022031532F9F9C2720E939E52C9FA8384FE92A444CB61A4454B630502E9F36314FE938212C9F37394FE9008000E82A201A202A464EBF1A4656BF31532F9FA4314FE939E52C9FA5394FE90A474FBF024757BF31532F9FA1304FE939E52C9FA2384FE92A434BBF1A4353BF30502E9F9D314FE938212C9F9E394FE931532F9F803157E939E52C9F813957E9374850BD8A3620E9867657E98B3E20E9823057E9877757E9833857E9354951BD84315EE9301F5FE985395EE9572520E92B4820E91D37E1EA1E35E1EA00E02677244920E99DFF20EA162620E9572EBFEA1C46A0E8234EA0E82B56A0E81D47A0E8244FA0E82C57A0E81C0023002B0000E01D0024002C0000E01C6523652B6500E01D6524652C6500E01C2360EC36D736AD2B8060EC1D2460EC3ED73EAD2C8060EC1C2BDEE82380DEE8368036BD3E803EBD33D71CBD3BD723BD468046CF4F804FCF563356CF473B47CFC5FF20EA008000E84E334ECF573B57CF8BFF20EA57C0BFEA0080A0E90000D8ECA0
-/* TGZSAF */
-:03E8000000008898E9008000E80080A0E90000D8ECFF80C0E9008000E8224048BF2A4050BF324149BF3A4151BFC36BCB6B008898E9737BC8EC96E241047B43A0E8734BA0E8ADEE299F00E0490490E251043146B1E84941C0EC3957B1E8000446E27353A0E85141C0EC310039006E8015EA080410045149C0EC2F4160EA312039201F42A0E82A424ABF274AA0E81A4252BF1E4960EA737BC8EC265160EA324048BD224050BD124149BD3A4151BDBF2F26BD00E07B723220222012203A20463146BF4E314EBFB3E22D9F008000E8563156BF473947BF4F394FBF573957BF608007EA244120E94273F8EC00E02D7333720CE3A52F1EBD43432DDF4B4B2DDFAE1E26BD58E3336653532DDF008000E8B83833BF00E059E31E1241E91A2241E92B403DE93F4BA0E82D73307605803DEA3743A0E83D53A0E84870F8EC2B483CE91F27BCE8008000E8008000E8008000E815C020E915C020E915C020E915C020E9183A41E91D3241E92A4020E9563D56DF463746DF4E3F4EDF163020E94F3F4FDF473747DF573D57DF32322DDF22222DDF12122DDF3A3A2DDF27CF74C237CF74C40A444CB0024454B03DCF74C0343720E931532F9F382720E939E52C9F3C3D20E92A444CB21A4454B232803AEA0A20022027CF75C02A201A2030502E9F32315FE938212C9F33395FE93DCF75C237CF75C431532F9FA62720E939E52C9FA33D20E92A444CB41A4454B40A454DB0024555B088735EE92A201A20A03720E90A20022031532F9F3E304FE939E52C9F3F384FE930502E9F3A314FE938212C9F3B394FE92A454DB21A4555B20A454DB4024555B427CF74C62A201A20A7304FE90A20022031532F9F9C2720E939E52C9FA8384FE92A444CB61A4454B630502E9F36314FE938212C9F37394FE90A454DB6024555B63DCF75C62A201A202A464EBF1A4656BF31532F9FA4314FE939E52C9FA5394FE9313D20E90A2002200A474FBF024757BF30502E9FA1304FE938212C9FA2384FE931532F9F9D314FE939E52C9F9E394FE92A434BBF1A4353BF30502E9F35304FE938212C9F39384FE931532F9F803157E939E52C9F813957E9374850BD8A3620E9867657E98B3E20E9823057E9877757E9833857E9354951BD84315EE9301F5FE985395EE9572520E92B4820E91D37E1EA1E35E1EA00E02677244920E999FF20EA162620E9572EBFEA1C46A0E8234EA0E82B56A0E81D47A0E8244FA0E82C57A0E81C0023002B0000E01D0024002C0000E01C6523652B6500E01D6524652C6500E01C2360EC36D736AD2B8060EC1D2460EC3ED73EAD2C8060EC1C2BDEE82380DEE8368036BD3E803EBD33D71CBD3BD723BD468046CF4F804FCF563356CF473B47CFC1FF20EA008000E84E334ECF573B57CF87FF20EA57C0BFEA0080A0E90000D8EC83
-/* T2GZ */
-:0438000000008A98E9008000E80080A0E90000D8ECFF80C0E9008000E80A4050BF2A4060BF324151BF3A4161BFC36BD36B008A98E9737BC8EC96E241047B43A0E87353A0E8ADEE239F00E0510490E261043146B1E85141E0EC3967B1E8000446E27363A0E86141E0EC31003900788015EA100420046151E0EC2F4160EA312039201F42A0E82A4252BF0F52A0E81A4262BF1E5160EA737BC8EC0E6160EA324050BD224060BD124151BD3A4161BDBF2F0EBD97E27B723220222012203A203548B1E83D59B1E8463146BF563156BFB3E22D9F008000E8663166BF473947BF573957BF673967BF698007EA244120E935003D0000E02D7333720CE38D2F1EBD4375F8EC35203D2043432DDF53532DDFAE1E0EBD58E33366483548BF583558BF683568BF493D49BF593D59BF693D69BF63632DDF4D7DF8EC59E300E0B83833BF2D733076183A41E93F53A0E805803DEA3743A0E83D63A0E85070F8EC2B503CE91F0FBCE8008000E85978F8EC008000E815C020E915C020E915C020E915C020E91E1241E91A2241E9463746DF563F56DF2B403DE9663D66DF1D3241E9673D67DF473747DF573F57DF2A4020E9593F59DF163020E9693D69DF483748DF583F58DF12122DDF22222DDF32322DDF3A3A2DDF683D68DF493749DF3DCF74C037CF74C431532F9F348020E939E52C9F3C3D20E90A4454B0024464B02A4454B21A4464B225803AEA0A2002203DCF74C22A201A2030502E9F32315FE938212C9F33395FE931532F9F008000E82A4454B41A4464B439E52C9F383D20E988735EE92A201A202A4656BF1A4666BF31532F9F3E304FE939E52C9F3F384FE90A4757BF024767BF31532F9F3A314FE939E52C9F3B394FE92A4353BF1A4363BF30502E9F36314FE938212C9F37394FE90A4858BF024868BF31532F9F803157E939E52C9F813957E92A4959BF1A4969BF30502E9F823057E938212C9F833857E931532F9F84315EE939E52C9F85395EE9867657E98A3620E9877757E98B3EBFEA803057E9813857E9823157E9867857E9833957E9877957E9301F5FE98A3420E98B3C20E9375060BD570D20E9355161BD2B5020E91D37E1EA1E35E1EA00E00E77245120E99FFF20EA160E20E9572EBFEA0B46A0E81B56A0E82B66A0E80C47A0E81C57A0E82C67A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC36D736AD2B8060EC0C1C60EC3ED73EAD2C8060EC0B2BDEE81B80DEE8368036BD3E803EBD33D70BBD3BD71BBD468046CF578057CF663366CF473B47CF563356CF673B67CF0B48A0E81B58A0E82B68A0E80C49A0E81C59A0E82C69A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC34D734AD2B8060EC0C1C60EC3CD73CAD2C8060EC0B2BDEE81B80DEE8348034BD3C803CBD33D70BBD3BD71BBD488048CF598059CF683368CF493B49CFBEFF20EA008000E8583358CF693B69CF7DFF20EA57C0BFEA0080A0E90000D8ECAC
-/* T2GZF */
-:0460000000008A98E9008000E80080A0E90000D8ECFF80C0E9008000E80A4050BF2A4060BF324151BF3A4161BFC36BD36B008A98E9737BC8EC96E241047B43A0E87353A0E8ADEE239F00E0510490E261043146B1E85141E0EC3967B1E8000446E27363A0E86141E0EC310039007D8015EA100420046151E0EC2F4160EA312039201F42A0E82A4252BF0F52A0E81A4262BF1E5160EA737BC8EC0E6160EA324050BD224060BD124151BD3A4161BDBF2F0EBD97E27B723220222012203A203548B1E83D59B1E8463146BF563156BFB3E22D9F008000E8663166BF473947BF573957BF673967BF6E8007EA244120E935003D0000E02D7333720CE38D2F1EBD4375F8EC35203D2043432DDF53532DDFAE1E0EBD58E33366483548BF583558BF683568BF493D49BF593D59BF693D69BF63632DDF4D7DF8EC59E300E0B83833BF2D733076183A41E93F53A0E805803DEA3743A0E83D63A0E85070F8EC2B503CE91F0FBCE8008000E85978F8EC008000E815C020E915C020E915C020E915C020E91E1241E91A2241E9463746DF563F56DF2B403DE9663D66DF1D3241E9673D67DF473747DF573F57DF2A4020E9593F59DF163020E9693D69DF483748DF583F58DF12122DDF22222DDF32322DDF3A3A2DDF683D68DF493749DF3DCF74C037CF74C439E52C9F348020E931532F9F008000E888735EE9008000E80FCF75C63C3D20E90A4454B0024464B02A4454B21A4464B228803AEA0A2002203DCF74C22A201A2030502E9F32315FE938212C9F33395FE931532F9F310F20E90A4454B4024464B42A4555B61A4565B639E52C9F383D20E90A2002202A201A200A4757BF024767BF30502E9F3E304FE938212C9F3F384FE92A4656BF1A4666BF31532F9F3A314FE939E52C9F3B394FE931532F9F36304FE939E52C9F37384FE92A4353BF1A4363BF30502E9F35314FE938212C9F39394FE90A4858BF024868BF31532F9F803157E939E52C9F813957E92A4959BF1A4969BF30502E9F823057E938212C9F833857E931532F9F84315EE939E52C9F85395EE9867657E98A3620E9877757E98B3EBFEA803057E9813857E9823157E9867857E9833957E9877957E9301F5FE98A3420E98B3C20E9375060BD570D20E9355161BD2B5020E91D37E1EA1E35E1EA00E00E77245120E99AFF20EA160E20E9572EBFEA0B46A0E81B56A0E82B66A0E80C47A0E81C57A0E82C67A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC36D736AD2B8060EC0C1C60EC3ED73EAD2C8060EC0B2BDEE81B80DEE8368036BD3E803EBD33D70BBD3BD71BBD468046CF578057CF663366CF473B47CF563356CF673B67CF0B48A0E81B58A0E82B68A0E80C49A0E81C59A0E82C69A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC34D734AD2B8060EC0C1C60EC3CD73CAD2C8060EC0B2BDEE81B80DEE8348034BD3C803CBD33D70BBD3BD71BBD488048CF598059CF683368CF493B49CFBBFF20EA008000E8583358CF693B69CF78FF20EA57C0BFEA0080A0E90000D8ECFB
-/* T2GZA */
-:0458000000008A98E9008000E80080A0E90000D8ECFF80C0E9008000E80A4050BF2A4060BF324151BF3A4161BFC36BD36B008A98E9737BC8EC96E241047B43A0E87353A0E8ADEE239F00E0510490E261043146B1E85141E0EC3967B1E8000446E27363A0E86141E0EC310039007C8015EA100420046151E0EC2F4160EA312039201F42A0E82A4252BF0F52A0E81A4262BF1E5160EA737BC8EC0E6160EA324050BD224060BD124151BD3A4161BDBF2F0EBD97E27B723220222012203A203548B1E83D59B1E8463146BF563156BFB3E22D9F008000E8663166BF473947BF573957BF673967BF6D8007EA244120E935003D0000E02D7333720CE38D2F1EBD4375F8EC35203D2043432DDF53532DDFAE1E0EBD58E33366483548BF583558BF683568BF493D49BF593D59BF693D69BF63632DDF4D7DF8EC59E300E0B83833BF2D733076183A41E93F53A0E805803DEA3743A0E83D63A0E85070F8EC2B503CE91F0FBCE8008000E85978F8EC008000E815C020E915C020E915C020E915C020E91E1241E91A2241E9463746DF563F56DF2B403DE9663D66DF1D3241E9673D67DF473747DF573F57DF2A4020E9593F59DF163020E9693D69DF483748DF583F58DF12122DDF22222DDF32322DDF3A3A2DDF683D68DF493749DF3DCF74C037CF74C431532F9F348020E939E52C9F3C3D20E90A4454B0024464B02A4454B21A4464B229803AEA0A2002200FCF74C63DCF74C288735EE92A201A2030502E9F32315FE938212C9F33395FE931532F9F9C0F20E90A4454B4024464B42A4454B61A4464B639E52C9F383D20E90A2002202A201A200A4757BF024767BF30502E9F3E304FE938212C9F3F384FE92A4656BF1A4666BF31532F9F3A314FE939E52C9F3B394FE931532F9F36304FE939E52C9F37384FE92A4353BF1A4363BF30502E9F9D314FE938212C9F9E394FE90A4858BF024868BF31532F9F803157E939E52C9F813957E92A4959BF1A4969BF30502E9F823057E938212C9F833857E931532F9F84315EE939E52C9F85395EE9867657E98A3620E9877757E98B3EBFEA803057E9813857E9823157E9867857E9833957E9877957E9301F5FE98A3420E98B3C20E9375060BD570D20E9355161BD2B5020E91D37E1EA1E35E1EA00E00E77245120E99BFF20EA160E20E9572EBFEA0B46A0E81B56A0E82B66A0E80C47A0E81C57A0E82C67A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC36D736AD2B8060EC0C1C60EC3ED73EAD2C8060EC0B2BDEE81B80DEE8368036BD3E803EBD33D70BBD3BD71BBD468046CF578057CF663366CF473B47CF563356CF673B67CF0B48A0E81B58A0E82B68A0E80C49A0E81C59A0E82C69A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC34D734AD2B8060EC0C1C60EC3CD73CAD2C8060EC0B2BDEE81B80DEE8348034BD3C803CBD33D70BBD3BD71BBD488048CF598059CF683368CF493B49CFBAFF20EA008000E8583358CF693B69CF79FF20EA57C0BFEA0080A0E90000D8ECA0
-/* T2GZAF */
-:0480000000008A98E9008000E80080A0E90000D8ECFF80C0E9008000E80A4050BF2A4060BF324151BF3A4161BFC36BD36B008A98E9737BC8EC96E241047B43A0E87353A0E8ADEE239F00E0510490E261043146B1E85141E0EC3967B1E8000446E27363A0E86141E0EC31003900818015EA100420046151E0EC2F4160EA312039201F42A0E82A4252BF0F52A0E81A4262BF1E5160EA737BC8EC0E6160EA324050BD224060BD124151BD3A4161BDBF2F0EBD97E27B723220222012203A203548B1E83D59B1E8463146BF563156BFB3E22D9F008000E8663166BF473947BF573957BF673967BF728007EA244120E935003D0000E02D7333720CE38D2F1EBD4375F8EC35203D2043432DDF53532DDFAE1E0EBD58E33366483548BF583558BF683568BF493D49BF593D59BF693D69BF63632DDF4D7DF8EC59E300E0B83833BF2D733076183A41E93F53A0E805803DEA3743A0E83D63A0E85070F8EC2B503CE91F0FBCE8008000E85978F8EC008000E815C020E915C020E915C020E915C020E91E1241E91A2241E9463746DF563F56DF2B403DE9663D66DF1D3241E9673D67DF473747DF573F57DF2A4020E9593F59DF163020E9693D69DF483748DF583F58DF12122DDF22222DDF32322DDF3A3A2DDF683D68DF493749DF3DCF74C037CF74C40A4454B0024464B031532F9F343720E939E52C9F3C3D20E92A4454B21A4464B22E803AEA0A20022088735EE92A201A203DCF74C20FCF74C630502E9F32315FE938212C9F33395FE931532F9F9C0F20E90A4454B4024464B42A4454B61A4464B639E52C9F383D20E90A2002202A201A203DCF75C6008000E830502E9F3E304FE938212C9F3F384FE90A4555B6024565B631532F9F3A314FE939E52C9F3B394FE9313D20E90A2002202A4656BF1A4666BF0A4757BF024767BF30502E9F36304FE938212C9F37384FE931532F9F9D314FE939E52C9F9E394FE92A4353BF1A4363BF30502E9F35304FE938212C9F39384FE90A4858BF024868BF31532F9F803157E939E52C9F813957E92A4959BF1A4969BF30502E9F823057E938212C9F833857E931532F9F84315EE939E52C9F85395EE9867657E98A3620E9877757E98B3EBFEA803057E9813857E9823157E9867857E9833957E9877957E9301F5FE98A3420E98B3C20E9375060BD570D20E9355161BD2B5020E91D37E1EA1E35E1EA00E00E77245120E996FF20EA160E20E9572EBFEA0B46A0E81B56A0E82B66A0E80C47A0E81C57A0E82C67A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC36D736AD2B8060EC0C1C60EC3ED73EAD2C8060EC0B2BDEE81B80DEE8368036BD3E803EBD33D70BBD3BD71BBD468046CF578057CF663366CF473B47CF563356CF673B67CF0B48A0E81B58A0E82B68A0E80C49A0E81C59A0E82C69A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC34D734AD2B8060EC0C1C60EC3CD73CAD2C8060EC0B2BDEE81B80DEE8348034BD3C803CBD33D70BBD3BD71BBD488048CF598059CF683368CF493B49CFB5FF20EA008000E8583358CF693B69CF74FF20EA57C0BFEA0080A0E90000D8ECDC
-/* T2GZS */
-:04A0000000008A98E9008000E80080A0E90000D8ECFF80C0E9008000E80A4050BF2A4060BF324151BF3A4161BFC36BD36B008A98E9737BC8EC96E241047B43A0E87353A0E8ADEE239F00E0510490E261043146B1E85141E0EC3967B1E8000446E27363A0E86141E0EC31003900858015EA100420046151E0EC2F4160EA312039201F42A0E82A4252BF0F52A0E81A4262BF1E5160EA737BC8EC0E6160EA324050BD224060BD124151BD3A4161BDBF2F0EBD97E27B723220222012203A203548B1E83D59B1E8463146BF563156BFB3E22D9F008000E8663166BF473947BF573957BF673967BF768007EA244120E935003D0000E02D7333720CE38D2F1EBD4375F8EC35203D2043432DDF53532DDFAE1E0EBD58E33366483548BF583558BF683568BF493D49BF593D59BF693D69BF63632DDF4D7DF8EC59E300E0B83833BF2D733076183A41E93F53A0E805803DEA3743A0E83D63A0E85070F8EC2B503CE91F0FBCE8008000E85978F8EC008000E815C020E915C020E915C020E915C020E91E1241E91A2241E9463746DF563F56DF2B403DE9663D66DF1D3241E9673D67DF473747DF573F57DF2A4020E9593F59DF163020E9693D69DF483748DF583F58DF683D68DF493749DF32322DDF22222DDF12122DDF3A3A2DDF0FCF74C237CF74C40A4454B0024464B03DCF74C0343720E931532F9F380F20E939E52C9F3C3D20E92A4454B21A4464B231803AEA0A2002200FCF75C02A201A2030502E9F32315FE938212C9F33395FE93DCF75C237CF75C431532F9FA60F20E939E52C9FA33D20E92A4454B41A4464B40A4555B0024565B088735EE92A201A20A03720E90A20022031532F9F3E304FE939E52C9F3F384FE930502E9F3A314FE92A4555B21A4565B20A4555B4024565B438212C9F3B394FE92A201A200A2002202A4656BF1A4666BF31532F9F36314FE939E52C9F37394FE930502E9FA7304FE938212C9FA8384FE90A4757BF024767BF31532F9FA4314FE939E52C9FA5394FE92A4353BF1A4363BF30502E9FA1304FE938212C9FA2384FE90A4858BF024868BF31532F9F803157E939E52C9F813957E92A4959BF1A4969BF30502E9F823057E938212C9F833857E931532F9F84315EE939E52C9F85395EE9867657E98A3620E9877757E98B3EBFEA803057E9813857E9823157E9867857E9833957E9877957E9301F5FE98A3420E98B3C20E9375060BD570D20E9355161BD2B5020E91D37E1EA1E35E1EA00E00E77245120E992FF20EA160E20E9572EBFEA0B46A0E81B56A0E82B66A0E80C47A0E81C57A0E82C67A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC36D736AD2B8060EC0C1C60EC3ED73EAD2C8060EC0B2BDEE81B80DEE8368036BD3E803EBD33D70BBD3BD71BBD468046CF578057CF663366CF473B47CF563356CF673B67CF0B48A0E81B58A0E82B68A0E80C49A0E81C59A0E82C69A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC34D734AD2B8060EC0C1C60EC3CD73CAD2C8060EC0B2BDEE81B80DEE8348034BD3C803CBD33D70BBD3BD71BBD488048CF598059CF683368CF493B49CFB2FF20EA008000E8583358CF693B69CF70FF20EA57C0BFEA0080A0E90000D8EC43
-/* T2GZSF */
-:04C8000000008A98E9008000E80080A0E90000D8ECFF80C0E9008000E80A4050BF2A4060BF324151BF3A4161BFC36BD36B008A98E9737BC8EC96E241047B43A0E87353A0E8ADEE239F00E0510490E261043146B1E85141E0EC3967B1E8000446E27363A0E86141E0EC310039008A8015EA100420046151E0EC2F4160EA312039201F42A0E82A4252BF0F52A0E81A4262BF1E5160EA737BC8EC0E6160EA324050BD224060BD124151BD3A4161BDBF2F0EBD97E27B723220222012203A203548B1E83D59B1E8463146BF563156BFB3E22D9F008000E8663166BF473947BF573957BF673967BF7B8007EA244120E935003D0000E02D7333720CE38D2F1EBD4375F8EC35203D2043432DDF53532DDFAE1E0EBD58E33366483548BF583558BF683568BF493D49BF593D59BF693D69BF63632DDF4D7DF8EC59E300E0B83833BF2D733076183A41E93F53A0E805803DEA3743A0E83D63A0E85070F8EC2B503CE91F0FBCE8008000E85978F8EC008000E815C020E915C020E915C020E915C020E91E1241E91A2241E9463746DF563F56DF2B403DE9663D66DF1D3241E9673D67DF473747DF573F57DF2A4020E9593F59DF163020E9693D69DF483748DF583F58DF683D68DF493749DF32322DDF22222DDF12122DDF3A3A2DDF0FCF74C237CF74C40A4454B0024464B03DCF74C0343720E931532F9F380F20E939E52C9F3C3D20E92A4454B21A4464B236803AEA0A2002200FCF75C02A201A2030502E9F32315FE938212C9F33395FE93DCF75C237CF75C431532F9FA60F20E939E52C9FA33D20E92A4454B41A4464B40A4555B0024565B088735EE92A201A20A03720E90A20022031532F9F3E304FE939E52C9F3F384FE930502E9F3A314FE938212C9F3B394FE92A4555B21A4565B20A4555B4024565B40FCF75C62A201A20A7304FE90A20022031532F9F310F20E939E52C9FA8384FE92A4555B61A4565B630502E9F36314FE938212C9F37394FE9008000E82A201A202A4656BF1A4666BF31532F9FA4314FE939E52C9FA5394FE90A4757BF024767BF31532F9FA1304FE939E52C9FA2384FE92A4353BF1A4363BF30502E9F35314FE938212C9F39394FE90A4858BF024868BF31532F9F803157E939E52C9F813957E92A4959BF1A4969BF30502E9F823057E938212C9F833857E931532F9F84315EE939E52C9F85395EE9867657E98A3620E9877757E98B3EBFEA803057E9813857E9823157E9867857E9833957E9877957E9301F5FE98A3420E98B3C20E9375060BD570D20E9355161BD2B5020E91D37E1EA1E35E1EA00E00E77245120E98DFF20EA160E20E9572EBFEA0B46A0E81B56A0E82B66A0E80C47A0E81C57A0E82C67A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC36D736AD2B8060EC0C1C60EC3ED73EAD2C8060EC0B2BDEE81B80DEE8368036BD3E803EBD33D70BBD3BD71BBD468046CF578057CF663366CF473B47CF563356CF673B67CF0B48A0E81B58A0E82B68A0E80C49A0E81C59A0E82C69A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC34D734AD2B8060EC0C1C60EC3CD73CAD2C8060EC0B2BDEE81B80DEE8348034BD3C803CBD33D70BBD3BD71BBD488048CF598059CF683368CF493B49CFADFF20EA008000E8583358CF693B69CF6BFF20EA57C0BFEA0080A0E90000D8EC56
-/* T2GZSA */
-:04C8000000008A98E9008000E80080A0E90000D8ECFF80C0E9008000E80A4050BF2A4060BF324151BF3A4161BFC36BD36B008A98E9737BC8EC96E241047B43A0E87353A0E8ADEE239F00E0510490E261043146B1E85141E0EC3967B1E8000446E27363A0E86141E0EC310039008A8015EA100420046151E0EC2F4160EA312039201F42A0E82A4252BF0F52A0E81A4262BF1E5160EA737BC8EC0E6160EA324050BD224060BD124151BD3A4161BDBF2F0EBD97E27B723220222012203A203548B1E83D59B1E8463146BF563156BFB3E22D9F008000E8663166BF473947BF573957BF673967BF7B8007EA244120E935003D0000E02D7333720CE38D2F1EBD4375F8EC35203D2043432DDF53532DDFAE1E0EBD58E33366483548BF583558BF683568BF493D49BF593D59BF693D69BF63632DDF4D7DF8EC59E300E0B83833BF2D733076183A41E93F53A0E805803DEA3743A0E83D63A0E85070F8EC2B503CE91F0FBCE8008000E85978F8EC008000E815C020E915C020E915C020E915C020E91E1241E91A2241E9463746DF563F56DF2B403DE9663D66DF1D3241E9673D67DF473747DF573F57DF2A4020E9593F59DF163020E9693D69DF483748DF583F58DF683D68DF493749DF32322DDF22222DDF12122DDF3A3A2DDF0FCF74C237CF74C40A4454B0024464B03DCF74C0343720E931532F9F380F20E939E52C9F3C3D20E92A4454B21A4464B236803AEA0A2002200FCF75C02A201A2030502E9F32315FE938212C9F33395FE93DCF75C237CF75C431532F9FA60F20E939E52C9FA33D20E92A4454B41A4464B40A4555B0024565B088735EE92A201A20A03720E90A20022031532F9F3E304FE939E52C9F3F384FE930502E9F3A314FE938212C9F3B394FE92A4555B21A4565B20A4555B4024565B40FCF74C62A201A20A7304FE90A20022031532F9F9C0F20E939E52C9FA8384FE92A4454B61A4464B630502E9F36314FE938212C9F37394FE9008000E82A201A202A4656BF1A4666BF31532F9FA4314FE939E52C9FA5394FE90A4757BF024767BF31532F9FA1304FE939E52C9FA2384FE92A4353BF1A4363BF30502E9F9D314FE938212C9F9E394FE90A4858BF024868BF31532F9F803157E939E52C9F813957E92A4959BF1A4969BF30502E9F823057E938212C9F833857E931532F9F84315EE939E52C9F85395EE9867657E98A3620E9877757E98B3EBFEA803057E9813857E9823157E9867857E9833957E9877957E9301F5FE98A3420E98B3C20E9375060BD570D20E9355161BD2B5020E91D37E1EA1E35E1EA00E00E77245120E98DFF20EA160E20E9572EBFEA0B46A0E81B56A0E82B66A0E80C47A0E81C57A0E82C67A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC36D736AD2B8060EC0C1C60EC3ED73EAD2C8060EC0B2BDEE81B80DEE8368036BD3E803EBD33D70BBD3BD71BBD468046CF578057CF663366CF473B47CF563356CF673B67CF0B48A0E81B58A0E82B68A0E80C49A0E81C59A0E82C69A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC34D734AD2B8060EC0C1C60EC3CD73CAD2C8060EC0B2BDEE81B80DEE8348034BD3C803CBD33D70BBD3BD71BBD488048CF598059CF683368CF493B49CFADFF20EA008000E8583358CF693B69CF6BFF20EA57C0BFEA0080A0E90000D8EC23
-/* T2GZSAF */
-:04E8000000008A98E9008000E80080A0E90000D8ECFF80C0E9008000E80A4050BF2A4060BF324151BF3A4161BFC36BD36B008A98E9737BC8EC96E241047B43A0E87353A0E8ADEE239F00E0510490E261043146B1E85141E0EC3967B1E8000446E27363A0E86141E0EC310039008E8015EA100420046151E0EC2F4160EA312039201F42A0E82A4252BF0F52A0E81A4262BF1E5160EA737BC8EC0E6160EA324050BD224060BD124151BD3A4161BDBF2F0EBD97E27B723220222012203A203548B1E83D59B1E8463146BF563156BFB3E22D9F008000E8663166BF473947BF573957BF673967BF7F8007EA244120E935003D0000E02D7333720CE38D2F1EBD4375F8EC35203D2043432DDF53532DDFAE1E0EBD58E33366483548BF583558BF683568BF493D49BF593D59BF693D69BF63632DDF4D7DF8EC59E300E0B83833BF2D733076183A41E93F53A0E805803DEA3743A0E83D63A0E85070F8EC2B503CE91F0FBCE8008000E85978F8EC008000E815C020E915C020E915C020E915C020E91E1241E91A2241E9463746DF563F56DF2B403DE9663D66DF1D3241E9673D67DF473747DF573F57DF2A4020E9593F59DF163020E9693D69DF483748DF583F58DF683D68DF493749DF32322DDF22222DDF12122DDF3A3A2DDF0FCF74C237CF74C40A4454B0024464B03DCF74C0343720E931532F9F380F20E939E52C9F3C3D20E92A4454B21A4464B23A803AEA0A2002200FCF75C02A201A2030502E9F32315FE938212C9F33395FE93DCF75C237CF75C431532F9FA60F20E939E52C9FA33D20E92A4454B41A4464B40A4555B0024565B088735EE92A201A20A03720E90A20022031532F9F3E304FE939E52C9F3F384FE930502E9F3A314FE938212C9F3B394FE92A4555B21A4565B20A4555B4024565B40FCF74C62A201A20A7304FE90A20022031532F9F9C0F20E939E52C9FA8384FE92A4454B61A4464B630502E9F36314FE938212C9F37394FE90A4555B6024565B63DCF75C62A201A202A4656BF1A4666BF31532F9FA4314FE939E52C9FA5394FE9313D20E90A2002200A4757BF024767BF30502E9FA1304FE938212C9FA2384FE931532F9F9D314FE939E52C9F9E394FE92A4353BF1A4363BF30502E9F35304FE938212C9F39384FE90A4858BF024868BF31532F9F803157E939E52C9F813957E92A4959BF1A4969BF30502E9F823057E938212C9F833857E931532F9F84315EE939E52C9F85395EE9867657E98A3620E9877757E98B3EBFEA803057E9813857E9823157E9867857E9833957E9877957E9301F5FE98A3420E98B3C20E9375060BD570D20E9355161BD2B5020E91D37E1EA1E35E1EA00E00E77245120E989FF20EA160E20E9572EBFEA0B46A0E81B56A0E82B66A0E80C47A0E81C57A0E82C67A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC36D736AD2B8060EC0C1C60EC3ED73EAD2C8060EC0B2BDEE81B80DEE8368036BD3E803EBD33D70BBD3BD71BBD468046CF578057CF663366CF473B47CF563356CF673B67CF0B48A0E81B58A0E82B68A0E80C49A0E81C59A0E82C69A0E80B001B002B0000E00C001C002C0000E00B651B652B6500E00C651C652C6500E00B1B60EC34D734AD2B8060EC0C1C60EC3CD73CAD2C8060EC0B2BDEE81B80DEE8348034BD3C803CBD33D70BBD3BD71BBD488048CF598059CF683368CF493B49CFA9FF20EA008000E8583358CF693B69CF67FF20EA57C0BFEA0080A0E90000D8ECEE
-:0000000001FF
diff --git a/firmware/mts_cdma.fw.ihex b/firmware/mts_cdma.fw.ihex
deleted file mode 100644
index f6ad0cbd30cb..000000000000
--- a/firmware/mts_cdma.fw.ihex
+++ /dev/null
@@ -1,867 +0,0 @@
-:1000000014360002001E021AF9FFFFFFFFFF023341
-:100010001DFFFFFFFFFFFFFFFFFFFFFFFFFF02339B
-:10002000C87581CE90FDE88583A012353CEC4D600B
-:100030007378AB8003760018B89CFA787F800376DB
-:100040000018B865FA78208003760018B820FA788E
-:10005000208003760018B81FFA90FDDDAE83AF82D2
-:1000600090FBF81200AA6005E4F0A380F690FDE88A
-:10007000A88290FDE8A982E8696005E4F20880F7AB
-:100080009001081200B390010C1200B390011012FD
-:1000900000B39001141200D190011A1200D1900106
-:1000A000201200D175D00012341A020126EF6582A9
-:1000B0007003EE658322E493F8740193F97402935C
-:1000C000FE740393F5828E83E869700122E493F64F
-:1000D000A30880F4E493FC740193FD740293FE740E
-:1000E0000393FF740493F8740593F58288831200D8
-:1000F000AA700122E493A3A883A9828C838D82F045
-:10010000A3AC83AD828883898280E32121049B8014
-:1001100080049BACAE049BFDE8049D049DFBF304AE
-:10012000A2049DFBF30502050280FED0F030F00929
-:1001300020F303F68010F7800D30F10920F303F26D
-:100140008004F38001F020F404FCD0E0CC22CCC089
-:10015000E0120163020154BC0005D0F0ACF022C3F0
-:1001600013DCFC02012ABF0009ED258275F001F8BD
-:10017000E622BF010FED2582F582EE3583F583750A
-:10018000F004E022ED258275F002F8E222D083D05F
-:1001900082F5F0C3E493A3C5F095F0C0E0C3D0F0BE
-:1001A000E493A395F04012A3A3C3E5F033500205F6
-:1001B000832582F58250020583740193C0E0E493A5
-:1001C000C0E022D083D082F5F0E4937009740193EB
-:1001D0007004A3A3800C74029365F06005A3A3A32D
-:1001E00080E7740193C0E0E493C0E022120264024D
-:1001F00001FB1202B80201FB1202DC0201FB30E03B
-:100200000720E302E622E72230E10720E302E222B0
-:10021000E32230E202E022E493221202DC02022313
-:100220001202B8020223ABF012022DCBC5F0CB2292
-:1002300030E01020E306E6F5F008E622E7F5F009E5
-:10024000E7192230E11020E306E2F5F008E222E3AC
-:10025000F5F009E3192230E206E0F5F0A3E022E42C
-:1002600093F5F074019322BB0003740922BB0107CC
-:1002700089828A83740422BB020789828A8374106C
-:1002800022740A22020284BB0007E92582F8740165
-:1002900022BB010DE92582F582EA3583F5837404DA
-:1002A00022BB020DE92582F582EA3583F5837410BD
-:1002B00022E92582F87402220202B8BF0005EDF897
-:1002C000740122BF01078D828E83740422BF02074E
-:1002D0008D828E83741022EDF87402220202DCBF3C
-:1002E0000007ED2582F8740122BF010DED2582F58E
-:1002F00082EE3583F583740422BF020DED2582F56D
-:1003000082EE3583F583741022ED2582F874022283
-:10031000020310C0E0120264020328C0E01202B817
-:10032000020328C0E01202DC02032830E00B20E3C5
-:1003300004D0E0F622D0E0F72230E10B20E304D035
-:10034000E0F222D0E0F322D0E0F022C9CDC9CACE3B
-:10035000CACBCFCB12035BEDF9EEFAEFFB22BB0069
-:100360002FBF000AFAEDF8E7F60809DAFA22BF0112
-:10037000128D828E83F802037809A3E7F0D8FA225F
-:10038000020383FAEDF8E7F20809DAFA2202038D94
-:10039000BB014DBF001489828A83F9EDF802039FE7
-:1003A00008A3E0F6D9FA220203B0BF01228D828EA3
-:1003B00083FB08C9C582C9CAC583CAE0A3C9C5826F
-:1003C000C9CAC583CAF0A3DBEAD8E8220203D38DE9
-:1003D000828E83F9EDF8E0F208A3D9FA220203DD58
-:1003E000BB024DBF001289828A83F9EDF80203EF48
-:1003F00008A3E493F6D9F922BF01238D828E83FBF3
-:1004000008C9C582C9CAC583CAE493A3C9C582C93C
-:10041000CAC583CAF0A3DBE9D8E722020422898295
-:100420008A83F9EDF8E493F208A3D9F922020433A0
-:10043000BF000DFAEDF8E3F60809DAFA2202043DEE
-:10044000BF01128D828E83F802044A09A3E3F0D81B
-:10045000FA22020455FAEDF8E3F20809DAFA220268
-:10046000045FE6FB08E6FA08E6F904F618700106F0
-:1004700022E6FF08E6FE08E6FD22EFF0A3EEF0A379
-:10048000EDF022EBF0A3EAF0A3E9F022E0FFA3E015
-:10049000FEA3E0FD22E0FBA3E0FAA3E0F9220000C6
-:1004A00000000000000502006105710026059800AB
-:1004B000330A0900610A750066154400610CF900F1
-:1004C0006109A9006109E000610DC000610BF10044
-:1004D000610A1C00610A510061173C0033174F008C
-:1004E000341E1400431EBF0044202C0044201A0078
-:1004F000471EE600471F8B004D1FDC004F1F080002
-:100500005832A800617CCC7DFF121CC52290FFFCF4
-:10051000E020E72DC2AFAE59AF58755A20E55A1406
-:10052000C55A6019E4FE7F05EE4FCE24FFCECF34CE
-:10053000FFCF6007E490FF92F080ED80E08E598F4E
-:10054000582212050A7D077CB71232C47D0F7C6EDB
-:100550001232DE789D7A06E4F608DAFC7A06120595
-:10056000CD7C03120E55122168E4FEFF7C0F12327F
-:100570004DD2A822123138E490FC38F090FFF0E020
-:1005800030E408740190FC39F08005E490FC39F007
-:100590007D0A7C001225461231BB2212313890FCB4
-:1005A00039E014700E90FFF0E04410F07C0012254A
-:1005B000DF801990FC39E0700E90FFF0E054EFF00E
-:1005C0007C001225DF80057C171225DF1231BB224B
-:1005D00090FFF0E054ABF090FFF0E04420F0228C6C
-:1005E000378D367882EDF608ECF6EDFEECFD7F01F6
-:1005F0009000051201F57880F67882E6FD08E6FCA9
-:10060000EDFEECFD7F019000041201F5540FFC7D1E
-:100610008012176D7880E6700DAD3AAE39AF38E4D0
-:100620001203187C082290FFF0E054FEF090FFF0D7
-:10063000E054FDF0801E7882E6FD08E6FCEDFEEC5D
-:10064000FD7F0190000812021725E0440190FFF39E
-:10065000F00206D97882E6FD08E6FCEDFEECFD7FAF
-:100660000190000612021754FE90FFF3F0802B78E1
-:1006700082E6FD08E6FCEDFEECFD7F01900008122D
-:100680000217FAEB90FFF1F01208C8400DAD3AAE38
-:1006900039AF38E41203187C18227882E6FD08E6A8
-:1006A000FCEDFEECFD7F0190000812021790FFF1B7
-:1006B000F01208C8400DAD3AAE39AF38E412031855
-:1006C0007C18227882E6FD08E6FCEDFEECFD7F0159
-:1006D000900006120217440190FFF3F07883E6249D
-:1006E00003F618E63400F67880E624FE500990FF01
-:1006F000F0E054FDF0800790FFF0E04402F0E49059
-:10070000FFF1F0788176007880E624FFFCE434FF86
-:10071000FD7881E67F00FEECD39EEF6480CD64809F
-:100720009D402F1208AD400F7881E6AD3AAE39AF4B
-:10073000381203187C182290FFF2E0FC788286833E
-:10074000088682ECF0788106A37882A68308A682C8
-:1007500080B51208AD400F7881E6AD3AAE39AF38BA
-:100760001203187C182290FFF2E0FC78828683083E
-:100770008682ECF07880E6AD3AAE39AF38120318D5
-:100780007C00228C378D367882EDF608ECF6EDFE93
-:10079000ECFD7F019000051201F57881F67882E684
-:1007A000FD08E6FCEDFEECFD7F019000041201F572
-:1007B000540FFC7D8112176D7881E670037C08224E
-:1007C00090FFF0E054FEF090FFF0E054FDF0801B4D
-:1007D0007882E6FD08E6FCEDFEECFD7F0190000866
-:1007E00012021725E090FFF3F0805B7882E6FD08A7
-:1007F000E6FCEDFEECFD7F0190000612021754FEB0
-:1008000090FFF3F080217882E6FD08E6FCEDFEEC37
-:10081000FD7F01900008120217FAEB90FFF1F01231
-:1008200008C840037C18227882E6FD08E6FCEDFE4D
-:10083000ECFD7F0190000812021790FFF1F0120802
-:10084000C840037C18227883E6240AF618E63400B0
-:10085000F6788076007881E624FFFCE434FFFD78AA
-:1008600080E67F00FEECD39EEF6480CD64809D40E7
-:100870002178828683088682E090FFF1F01208C812
-:1008800040037C1822788006788306E618700106FB
-:1008900080C390FFF0E04401F0788286830886826E
-:1008A000E090FFF1F01208C840037C18227C00227F
-:1008B00090FFF0E020E71290FFF0E030E50990FFB4
-:1008C000F0E04420F0C32280E7D32290FFF0E02044
-:1008D000E31290FFF0E030E50990FFF0E04420F0F3
-:1008E000C32280E7D3228C428D417C00ED54F0FD81
-:1008F000EC7003ED64307005753E038003753E04B3
-:10090000AC3E120F72758300858340E541540FF5AC
-:100910003FE5407004E53F64037035E53E24FD7516
-:10092000F00AA42402F582E434FCF583E030E60505
-:100930001210598019E53E249DF8E654FBF678A97B
-:10094000E62405F58218E63400F583740FF080592B
-:10095000E5407004E53F64047048E53E24FD75F011
-:100960000AA42402F582E434FCF583E030E507AC08
-:1009700042AD41121C5AE54230E21578ADE630E056
-:100980000F78ADE630E109E4FF04FE7C0412324D3D
-:1009900078A9E62406F58218E63400F583740FF092
-:1009A0008007E4FC7DEE121C5AC203221231381279
-:1009B0000F7278A9E62406F58218E63400F583E084
-:1009C00090FC38F078A9E62405F58218E63400F5A5
-:1009D00083E090FC39F0C2037D027C0012254612B0
-:1009E00031BB221231387895ECF6EC249DF8E630D4
-:1009F000E1077C131225DF800F90FC39E0FD78952C
-:100A0000E6FC1213EF1225DF1231BB2212313878C7
-:100A100095ECF67D00120F121225DF1231BB221267
-:100A200031387895ECF6EC249DF8E630E2077C133B
-:100A30001225DF801B7895E6249DF8E620E1077CEF
-:100A4000121225DF800A7895E6FC1214131225DFB6
-:100A50001231BB221231387895ECF6EC249DF8E681
-:100A600020E2077C111225DF800A7895E6FC12153A
-:100A7000141225DF1231BB221231387895ECF612B0
-:100A80000F7278A9E62409F58218E63400F583E0B0
-:100A900090FC3FF078A9E6240AF58218E63400F5C8
-:100AA00083E090FC40F078A9E62403F58218E63450
-:100AB00000F583E0FC78A9E62404F58218E634000A
-:100AC000F583E0F56278A9E62402F58218E63400A1
-:100AD000F583E0F5638C61E4EC333354017895F6EB
-:100AE0006008E56230E1037895067895E690FC4170
-:100AF000F078A7E62402F58218E63400F583E0FDDD
-:100B0000A3E0540CFCED54E68C65F564E56130E53A
-:100B100003436501E56220E50EE561547F7008E559
-:100B20006120E703436502E56130E303436510E5B7
-:100B30006130E203436520E561540360034365408F
-:100B4000E56130E103436580E56130E4034364011E
-:100B5000E56130E603436408E56220E40EE5615494
-:100B60007F7008E56120E7034364105365FB53641D
-:100B7000F9AD64E56590FC3ACDF0A3CDF0E56330C6
-:100B8000E30DE5635430C4540F90FC3DF08005E460
-:100B900090FC3DF0E563540390FC3CF0E5635404A5
-:100BA000C31390FC3EF090FC3CE0700E7D357EFC63
-:100BB0007F01740190000912014B78A9E62408F521
-:100BC0008218E63400F583E07C00FD78A9E624076E
-:100BD000F58218E63400F583E07F004CFEEF4D907F
-:100BE000FC38F0A3CEF0CEC2037D0A7C001225466D
-:100BF0001231BB221231387895ECF6789A760108DA
-:100C000076FC0876387897760C789A12046E120281
-:100C10001D7898CBF6CB08F67F00EF24EA401FE45E
-:100C2000EF25E090357EFD93CD04937899667003AF
-:100C3000ED186670067897760080030F80DC789652
-:100C4000EFF6789A12046E9000021202177898CB91
-:100C5000F6CB08F65404CB54064B60047897760B19
-:100C60007899E630E313789A12046E900005120129
-:100C7000F524FB50047897760D7899E654C07D00F2
-:100C800064C04D70047897760B789A12046E9000C9
-:100C9000041201F524FC50047897760F789A120418
-:100CA0006E9000061201F524FD50047897760E78B8
-:100CB0009A12046E9000091201F524FD50047897F1
-:100CC000760A7897E6702A7895E6FC120F72789A81
-:100CD00012046E78A7E6F978A6E6FA7B01740A7822
-:100CE00000120348C2037895E6FC1211157897ECC0
-:100CF000F67897E6FC1225DF1231BB2212313878E4
-:100D000095ECF6120F727895E624FD75F00AA4248E
-:100D100014F582E434FCF583AC82AD8378A6868337
-:100D2000088682ECF9EDFA7B0A78011203B0C2035F
-:100D30007895E6FC1211151231BB228D2B8C2AED11
-:100D400060407527017529487528FFE52A24FDFCB8
-:100D5000E434FFFDEC7C0325E0CD33CDDCF9FCE58C
-:100D6000292CF529E5283DF528AD29AE28AF2774B3
-:100D7000809000061203207480900002120320125B
-:100D80000FC5E52B14603B7527017529087528FFF1
-:100D9000E52A24FDFCE434FFFDEC7C0325E0CD33A3
-:100DA000CDDCF9FCE5292CF529E5283DF528AD2910
-:100DB000AE28AF27E4900006120320E49000021250
-:100DC0000320221231387895ECF6EC249DF8E630B9
-:100DD000E2097895E6FC121514D2007895E6FC122B
-:100DE0000F727896760090FC39E030E704789676BA
-:100DF000017896E6FD7895E6FC120D38C2033000C6
-:100E0000077895E6FC1214137C001225DF1231BB23
-:100E10002278A9E62404F58218E63400F583E0443C
-:100E200001F078A9E62404F58218E63400F583E0A1
-:100E300030E00280ED78A9E6240BF58218E6340054
-:100E4000F583E054F8F078A9E62402F58218E63438
-:100E500000F583E04480F022C2038C58120F7278B0
-:100E6000A6868308868279AF7A357B0A78011203D9
-:100E7000FE120E0EAC587D02120D38C203AC581291
-:100E80001115228D538E528F518C50120F72754F47
-:100E90000078A9E62405F58218E63400F583E02001
-:100EA000E41FE54F24F64019054FC2037C181232A7
-:100EB000FB90FF93E04401F0B2B3AC50120F72808C
-:100EC000D078A9E62405F58218E63400F583E02001
-:100ED000E405C2037C022278A9E62405F58218E61F
-:100EE0003400F583E0540F601678A9E62405F582F6
-:100EF00018E63400F583E0540FF0C2037C01227839
-:100F0000A88683088682E0AD53AE52AF5112031813
-:100F1000C2037C00228D318C30121514E531600F34
-:100F2000E530B4030A7C0112250E7C8112250EAC3B
-:100F300030120F72E531601A78AA8683088682E043
-:100F400054E7F0A3A3A3A3E054E7F0AC307D021272
-:100F50000D3878A6868308868279B97A357B0A7837
-:100F6000011203FEC203E530249DF8E654FDF6AC01
-:100F700030121115228C2630030512329A80F87C2B
-:100F80000A1231ADD203E52624FD78A3F670077866
-:100F9000AA76FF0876E078A3E67D007C0425E0CD04
-:100FA00033CDDCF9FC24A078A9F6ED34FF18F678EF
-:100FB000A3E675F00AA42400FCE434FCFD78A6ED59
-:100FC000F608ECF61232462278A9E62402F58218D9
-:100FD000E63400F583E030E72278A9E62402F582C2
-:100FE00018E63400F583E0547FF078A9E62402F592
-:100FF0008218E63400F583E04480F02278AA8683E4
-:10100000088682E0547FF0AD83E5822404FCE43D51
-:101010008C82F583E0547FF078A9E6240BF58218E2
-:10102000E63400F583E054F8F078ABE62401F5826D
-:1010300018E63400F583E04403F078ABE62405F5C8
-:101040008218E63400F583E04403F078A9E624052D
-:10105000F58218E63400F583740FF02278AA8683AF
-:10106000088682E0543FF0AD83E5822404FCE43D31
-:101070008C82F583E0543FF078A3E624A4F8E6FCE4
-:1010800078ABE62401F58218E63400F583ECF078BD
-:10109000A3E624A4F8E6FC78ABE62405F58218E67E
-:1010A0003400F583ECF078A9E6240BF58218E634D9
-:1010B00000F583E054FB4402F52678A7E62402F508
-:1010C0008218E63400F583E030E50343260178A971
-:1010D000E62405F58218E63400F583E030E00312DB
-:1010E0000FC5E526FC78A9E6240BF58218E6340046
-:1010F000F583ECF078A9E62405F58218E63400F5CE
-:1011000083740FF078AA8683088682E04480F0A377
-:10111000A3A3A3E04480F0228C2A120F7278A7E6E2
-:101120002408F58218E63400F583E0FC78A9E6246B
-:101130000AF58218E63400F583ECF078A7E6240778
-:10114000F58218E63400F583E0FC78A9E62409F579
-:101150008218E63400F583ECF078A6868308868250
-:10116000E0FDA3E0FCEDFE78A9E62408F58218E690
-:101170003400F583EEF0ECFE78A9E62407F582183A
-:10118000E63400F583EEF08C298D28C3EC9405ED50
-:10119000940C400575277C8033D3E5299401E5281C
-:1011A0009403400575273C8023D3E5299481E528E5
-:1011B000940140057527188013D3E5299460E5282C
-:1011C0009400400575270C8003752708AF27E4EFCE
-:1011D000547C4483FF8F27E527FC78ABE62401F598
-:1011E0008218E63400F583ECF0E527FC78ABE624C2
-:1011F00005F58218E63400F583ECF0E527FC78A3CA
-:10120000E624A4F8ECF678A9E62402F58218E63480
-:1012100000F583E0F52778A7E62402F58218E63486
-:1012200000F583A3E030E3175327C778A7E624052A
-:10123000F58218E63400F583E09035AA93422778CA
-:10124000A7E62402F58218E63400F583E030E705CE
-:1012500043274080035327BF5327FB78A7E6240684
-:10126000F58218E63400F583E06003432704532732
-:10127000FC78A7E62404F58218E63400F583E04202
-:1012800027432780E527FC78A9E62402F58218E6A3
-:101290003400F583ECF078A9E62404F58218E634EE
-:1012A00000F583E0F52778A7E62402F58218E634F6
-:1012B00000F583A3E030E1055327DF8003432720B7
-:1012C00078A7E62402F58218E63400F583E030E4DE
-:1012D000055327EF800343271078A7E62409F582FA
-:1012E00018E63400F583E0B40203432702E527FC47
-:1012F00078A9E62404F58218E63400F583ECF0784A
-:10130000A9E62403F58218E63400F583E0F5277892
-:10131000A7E62409F58218E63400F583E07005534A
-:10132000277F800343278078A7E62402F58218E60A
-:101330003400F583A3E030E00543272080035327E2
-:10134000DF78A7E62402F58218E63400F583E03062
-:10135000E30543274080035327BF78A7E62402F51F
-:101360008218E63400F583E030E00543271080035F
-:101370005327EF78A7E62402F58218E63400F583B8
-:10138000A3E030E40543270880035327F778A7E656
-:101390002402F58218E63400F583A3E030E5054326
-:1013A000270480035327FB78A7E62402F58218E67A
-:1013B0003400F583A3E030E605432701800353277B
-:1013C000FE78A7E62402F58218E63400F583A3E050
-:1013D00030E70543270280035327FDE527FC78A962
-:1013E000E62403F58218E63400F583ECF0C2037CB2
-:1013F00000228D278C26ED54031460037C1022E517
-:1014000027547C24FC40037C0B22E526249DF8E62F
-:101410004402F67C00228C30120F72E530249DF8D5
-:10142000E620E24FAC307D02120D38E53024FE4458
-:1014300028FC78AA8683088682ECF0AF83E58224B4
-:1014400004FEE43FFFEC8E828F83F07C038C2CE55E
-:101450002CFC78ABE62401F58218E63400F583EC29
-:10146000F0E52CFC78ABE62405F58218E63400F5AF
-:1014700083ECF0752D01752F48752EFFE53024FDA6
-:10148000FCE434FFFDEC7C0325E0CD33CDDCF9FC3E
-:10149000E52F2CF52FE52E3DF52E78ABE62404F54F
-:1014A0008218E63400F583E054E7F52CAD2FAE2E1C
-:1014B000AF2DE4900002120320E4900006120320F6
-:1014C0001201EF30E503432C10E52CFC78ABE62449
-:1014D00004F58218E63400F583ECF012105978A96F
-:1014E000E62406F58218E63400F583E0C203FCE545
-:1014F00030249DF8E64404F68C2CE530540FC45497
-:10150000F07E00FFEEEF44047D00FFEC4EFCED4F5B
-:10151000FD121CC57C00228C2F120F72120FF9785D
-:10152000AA8683088682E05408F0A3A3A3A3E0540C
-:1015300008F0AC2F7D02120D38C203E52F249DF870
-:10154000E654FBF67C00221231387896ECF6EC2457
-:101550009DF8E630E10A7D007C131225461231BB6E
-:101560007896E6249DF8E64401F67896E6FC120F9C
-:10157000727896E624FD75F00AA42414F582E4340A
-:10158000FCF58378A6E6FA08E6F97B0A78011203EF
-:10159000B078A6868308868279B97A357B0A780185
-:1015A0001203FE120FC5C2037896E6FC12111578DD
-:1015B00095ECF6EC600A7D007C081225461231BBE2
-:1015C0007896E6FC120F7278A9E62404F58218E6F4
-:1015D0003400F583E0441054DFFC78A9E62404F5D8
-:1015E0008218E63400F583ECF07895ECF6C2037CC3
-:1015F000C81232FB7896E6FC120F7278A9E6240432
-:10160000F58218E63400F583E054EFF0C2037CC89D
-:101610001232FB7896E6FC120F7278A9E62404F5E4
-:101620008218E63400F583E04410F0C2037CC8124F
-:1016300032FB7896E6FC120F7278A9E62404F58254
-:1016400018E63400F583E04420F0C2037CF0123247
-:10165000FB7896E6FC120F7278A9E62405F582184D
-:10166000E63400F583E030E415C2037896E64410D2
-:101670007F00FE7C0712324D1231BB02173B78A966
-:10168000E62404F58218E63400F583E054CFF0C276
-:10169000037CC81232FB7896E6FC120F7278A9E63A
-:1016A0002404F58218E63400F583E04430F0C203E8
-:1016B0007CF01232FB7896E6FC120F7278A9E624D1
-:1016C00005F58218E63400F583E030E414C20378AF
-:1016D00096E644107F00FE7C0712324D1231BB802B
-:1016E0005D78A9E62404F58218E63400F583E05419
-:1016F000EFF078A9E62404F58218E63400F583E0DB
-:1017000054DFF07896E624FD75F00AA42414F582DF
-:10171000E434FCF583AC82AD8378A68683088682A8
-:10172000ECF9EDFA7B0A78011203B0C2037896E671
-:10173000FC1211157D007C0B1225461231BB2212C2
-:101740003138E490FC39F07D027C001225461231DC
-:10175000BB221231387C001225DF1231BB22743CCF
-:1017600090FBE0F0743E90FBE0F0E490FC28F02267
-:101770008D358C34ECB401028003D340028028B450
-:1017800002028003D34008A835E625E0F68018B4AD
-:1017900004028003D3400AA835E625E025E0F68060
-:1017A00006A83576008000228C3C8D3BEDFEECFDDA
-:1017B0007F0175660675670090FC29120477120197
-:1017C000EFB480028006D3500302186E90FC2912F9
-:1017D00004899000031201F554F0B430028003D361
-:1017E000405F90FC29120489900008120217FAFD4C
-:1017F000EBFE7F0190FC2C120477EECD9035C3FCFC
-:10180000E493FF740193FEF9EFFA7B01EAFFE9FE2E
-:10181000ECC39EED9F40259035C5E493FD74019384
-:10182000FCEDFEECFD7F01EECDFC90FC2EE0D39CA8
-:1018300090FC2DE09D5005756680803312198C80D8
-:101840002EB460028003D3400BAC3CAD3B1207804A
-:101850008C66801BB41003B34010C3B42003B340A4
-:1018600009C3B440028003D34000756681800080C4
-:1018700075B481028003D3406B90FC2912048990D7
-:1018800000031201F554F0B430028003D3401D90E0
-:10189000FC29120489900008120217FAFDEBFE7F62
-:1018A0000190FC2F1204771218F68036B460028083
-:1018B00003D34013753A67E4F539F538AC3CAD3BDA
-:1018C0001205DC8C66801BB41003B34010C3B42037
-:1018D00003B34009C3B440028003D340007566815E
-:1018E000800080028000E566FC90FC29120489ECEF
-:1018F000900002120320AC672290FC291204899008
-:1019000000041201F5600474018001E4A2E0920178
-:1019100090FC29120489ED2403FD50010E90FC2C4B
-:1019200012047790FC291204899000051201F5F544
-:10193000679000041201F5540FFC7D6712176DE5E6
-:10194000677004756608227566007884760078846E
-:10195000E6C39567503890FC2F1204891201EFFC02
-:1019600090FC2C120489EC12031830010E90FC310B
-:10197000E004F090FC307003E004F078840690FC02
-:101980002EE004F090FC2D7003E004F080C0229063
-:10199000FC2AE0FDA3E0FCEDFEECFD7F01ED240A56
-:1019A000FD50010E90FC3212047790FC291204893C
-:1019B0009000041201F5540FB401028003D34017C4
-:1019C00090FC321204890DED70010E90FC2F120470
-:1019D0007778887601804EB402028003D340199054
-:1019E000FC32120489ED2402FD50010E90FC2F12EE
-:1019F000047778887602802DB404028003D34019DE
-:101A000090FC32120489ED2404FD50010E90FC2F4D
-:101A100012047778887604800CB400028003D340E7
-:101A2000007566082290FC291204899000051201B5
-:101A3000F5F567788576007885E6C39567400302FB
-:101A40001AF4788676007886E6C378889650769081
-:101A5000FC2C1204891201EFFC90FC321204921249
-:101A600001E9F45CFC1201E9F890FC2F120489E80A
-:101A7000C0E01201EFC8D0E0C8584CFC90FC2C121A
-:101A80000489EC1203187887ECF690FC31E004F03E
-:101A900090FC307003E004F009E970010A90FC3218
-:101AA00012048090FC291204899000041201F53080
-:101AB000E40E90FC2EE004F090FC2D7003E004F0A6
-:101AC00078860680817888E6FDE4FEFFEECDFC9006
-:101AD000FC31E02CF090FC30E03DF07888E6FDE44D
-:101AE000FEFFEECDFC90FC34E02CF090FC33E03DAA
-:101AF000F0788506021A347566002222C0E0C0F034
-:101B0000C082C083C0D0E8C0E0E9C0E0EAC0E0EB3A
-:101B1000C0E0ECC0E0EDC0E0EEC0E0EFC0E090FF60
-:101B200092E01201C01B47301B47321B56381B681E
-:101B30003A1B7A3E1B92441B86461B9E501BE0526A
-:101B40001BBF541C015600001C2290FF92E07F0036
-:101B5000FE7C0112324D021C32E4FF04FE7C0312B3
-:101B6000324D742090FFFEF0021C32E4FF04FE7C34
-:101B70000212324D744090FFFEF0021C32E4FF046A
-:101B8000FE7C0412324D021C32E4FF04FE7C05127E
-:101B9000324D021C32E4FF04FE7C0612324D021C60
-:101BA0003290FFA5E07D0090FBF8CDF0A3CDF09042
-:101BB000FBF9E0FCF58390FBF8E04433FD121CC513
-:101BC000807390FFB5E07D0090FBFACDF0A3CDF0DF
-:101BD00090FBFBE0FCF58390FBFAE04443FD121C14
-:101BE000C5805290FFA6E07D0090FBFCCDF0A3CD18
-:101BF000F090FBFDE0FCF58390FBFCE04434FD122B
-:101C00001CC5803190FFB6E07D0090FBFECDF0A3B7
-:101C1000CDF090FBFFE0FCF58390FBFEE04444FD3B
-:101C2000121CC5801090FF92E07D00FCED44AAFDDF
-:101C3000121CC58000E490FF92F0D0E0FFD0E0FEDF
-:101C4000D0E0FDD0E0FCD0E0FBD0E0FAD0E0F9D06D
-:101C5000E0F8D0D0D083D082D0F0D0E0320581053A
-:101C60008105810581A881181818EDF608ECF69019
-:101C7000FF5AE020E70280F790FF59E07D00A8813D
-:101C800018CDF6CD08F67D03A881E618FCE6CC2534
-:101C9000E0CC33CCDDF9CCF6CC08F6A88118E644CC
-:101CA000F8F6A881181818E6FD08E6FCA881188641
-:101CB00083088682EDF0A3ECF0740290FF5AF015D1
-:101CC0008115811581158122E5812405F581E4A81E
-:101CD0008118F6A88118181818EDF608ECF690FB94
-:101CE000F5E024F85003021DE6E4A8811818F6A8D0
-:101CF0008118E6FEA88118181818E6FD08E6FC7F92
-:101D000000EF24F8404DE4EF25E0247DF582E43433
-:101D1000FCF583E0FBA3E06C7003FAEB6D700974D3
-:101D200001A8811818F6802BE4EF25E0247DF582C8
-:101D3000E434FCF5837A00E054F0CCF8CCCDF9CD56
-:101D4000FB7800E954F0F9EA687002EB6970010E63
-:101D50000F80AEA88118EEF6A88118181818EDF6B5
-:101D600008ECF6A881EFF6A8811818E67079A8812A
-:101D700018E624F74071A88118181818E6540FA81F
-:101D800081F664046017A881E664036010A88118D6
-:101D9000181818E6FD08E6FC121C5A804A7C0A1244
-:101DA00031ADA88118181818E6FD08E6FC90FBF480
-:101DB000E025E0247DF582E434FCF583EDF0A3EC2E
-:101DC000F090FBF4E0FFE4EF045407FF90FBF4F025
-:101DD00090FBF5E004F012324690FBF6E07008E468
-:101DE000FEFF7C0F12324D802790FBF7E004F05489
-:101DF0003F701D90FBF7E044FE7D00FC90FBF4E09B
-:101E000025E0247DF582E434FCF583EDF0A3ECF0CD
-:101E1000E58124FBF58122788B7600788C7600743E
-:101E20000190FBF6F012313890FBF5E060577C0A28
-:101E30001231AD90FBF3E025E0247DF582E434FC23
-:101E4000F583E0FDA3E0FC90FBF3E025E0247DF5C5
-:101E500082E434FCF583E4F0A3F090FBF3E0FFE4CC
-:101E6000EF045407FF90FBF3F090FBF5E014F078DB
-:101E700089EDF608ECF61232467889E6FD08E6FCB4
-:101E80001208E380A312329A90FF93E04401F0B26B
-:101E9000B3788B06B60011788B7600788CE6F40464
-:101EA00004A2E092B4788CF6021E25E490FBF6F0D2
-:101EB00090FBF5E07D00FCED44CFFD121C5A123181
-:101EC000BB22123138E5706449456F601590FF837D
-:101ED000E0540F7D00D39570ED956F5005122F8162
-:101EE00080031230511231BB22123138E57064493F
-:101EF000456F600512308B800E90FF80E04408F043
-:101F000090FF83E0547FF01231BB221231388C54A1
-:101F1000EC54F0B41015756A357569FC756801E507
-:101F20006A2403F56AE5693400F569E4F557F55666
-:101F3000E556C394015027E554540FFCAD6AAE69D1
-:101F4000AF68120E808C55EC60028012056AE56A5B
-:101F5000700205690557E5577002055680D2E554B1
-:101F6000540F249DF8E654FEF6E554540F7F00FE0E
-:101F70007C1212324DE5551470097D007C09122542
-:101F8000468007AD577C001225461231BB22123124
-:101F90003890FFFCE04402F090FF00E030E713903F
-:101FA000FF83E04480F0436D8090FFFCE04401F04B
-:101FB000801190FF82E04408F0536D7F90FFFCE0B9
-:101FC00054FEF090FF81E04480F01225F990FFFE6E
-:101FD000E04405F090FFFCE054FDF01231BB22120A
-:101FE00031387C011232FB78ADE64402F674FEFC17
-:101FF00004FD121CC590FF5AE030E70280F7E4F5BB
-:102000004E754D10AC4EAD4DE54E154E7002154D52
-:10201000EC4D600280EE4387011231BB2212313851
-:102020007C021231C778ADE654FDF61231BB2212A4
-:10203000313878ADE630E02C78ADE630E12678AD89
-:10204000E6FCF58318E644F0FD121C5A90FFFCE014
-:102050004420F07C021232FB78ADE654FDF6741A8F
-:1020600090FFFEF078ADE6FCF58318E644F1FD1232
-:102070001C5A1231BB22756D0090FFFFE0600343D4
-:102080006D01756E00E4F56CF56BE4F56F757049E4
-:10209000748490FF82F0748490FF80F0748090FFCD
-:1020A00058F0748090FF5AF0AD46AF457E00EE24A4
-:1020B000FE5003022142E4EE75F007A4247FF5826E
-:1020C000E434F8F583E0FFE4EF5480FDE4EF540FCF
-:1020D00014FFED6038E4EF75F008A42448F582E4BD
-:1020E00034FFF5837490F0E4EF75F008A4244AF50A
-:1020F00082E434FFF5837480F0E4EF75F008A424E3
-:102100004EF582E434FFF5837480F08034E4EF759B
-:10211000F008A42408F582E434FFF5837490F0E419
-:10212000EF75F008A4240AF582E434FFF583E4F0A7
-:10213000E4EF75F008A4240EF582E434FFF583E49F
-:10214000F00E0220AB8D468E448F45747F90FFFDCC
-:10215000F0749090FFFCF0228C58EC24F65006E5C9
-:10216000582437FC22E5582430FC22D2B0122543F3
-:10217000EC700302227E755C03AE5B7F00E55C15AC
-:102180005C6480247F5035EF2400F582E434FBF555
-:1021900083E0FE24FE501EEF7D00FCE4FB7474C35C
-:1021A0009CFAEB9DFBEE7D00FCEAC39CED6480CBCA
-:1021B00064809B50028005EF2EFF80C18E5B8F5A9A
-:1021C000E55C6480247F500302227EE55A248E5011
-:1021D0000302227E855A5D755B00AE5AAF5B903577
-:1021E000EEE493F55CE55C155C6480247F5018EEAA
-:1021F0002400F582E434FBF583E0FCEF9035EE93A8
-:102200006C70040E0F80DE8E5A8F5BE55C64802458
-:102210007F406E755E017560E8755FFFE55D2402C5
-:10222000F55A755C07E55C334057AD60AE5FAF5E55
-:10223000E55CF5823395E0F5831201F5C4540FFC9B
-:10224000122155E55A2400F582E434FBF583ECF0C5
-:10225000055A055AAD60AE5FAF5EE55CF582339519
-:10226000E0F5831201F5540FFC122155E55A2400C4
-:10227000F582E434FBF583ECF0055A055A155C80D1
-:10228000A4740290F851F090F86B79C77A357B27E7
-:1022900078011203FE756A357569FC756801E49072
-:1022A000FF83F0748090FF81F0755902E55975F055
-:1022B00007A4247FF582E434F8F583E0788FF6FCF8
-:1022C000540F14FC788FECF6E55975F007A42481BF
-:1022D000F582E434F8F583E0789276FD0876E8FC40
-:1022E000788FE675F008A42448F582E434FFF5837E
-:1022F000E4F0788FE675F008A4244FF582E434FF0B
-:10230000F583ECF07892E6FF08E67E03CFC313CFA7
-:1023100013DEF9FE788FE675F008A42449F582E40F
-:1023200034FFF583EEF0788FE675F008A4244AF5C3
-:1023300082E434FFF5837480F07890ECF67D0078C9
-:1023400093E62CF618E63DF67892E6FD08E67C0367
-:10235000CDC313CD13DCF9FC788FE675F008A42407
-:102360004DF582E434FFF583ECF0788FE675F008E4
-:10237000A4244EF582E434FFF583E4F07892E6FD80
-:1023800008E6FC788FE6FF7E00EE24FE5003022470
-:10239000FDE4EE75F007A4247FF582E434F8F583BC
-:1023A000E0FFE4EF5480FAE4EF540F14FFE4EE751D
-:1023B000F007A42481F582E434F8F583E07890F600
-:1023C000E4EE1313548024F0F8E434FDF9E8FCE95A
-:1023D000FD8A5AEA700302246AE4EF75F008A42427
-:1023E00048F582E434FFF583E4F07890E6FAE4EF10
-:1023F00075F008A4244FF582E434FFF583EAF0ED8C
-:10240000FBEC7A03CBC313CB13DAF9FAE4EF75F0E4
-:1024100008A42449F582E434FFF583EAF07890E6D5
-:102420007B00FAEC2AFCED3BFDFBEC7A03CBC313FB
-:10243000CB13DAF9FAE4EF75F008A4244DF582E441
-:1024400034FFF583EAF0E4EF75F008A4244AF5823E
-:10245000E434FFF5837480F0E4EF75F008A4244EB3
-:10246000F582E434FFF5837480F00224F9E4EF751B
-:10247000F008A42408F582E434FFF583E4F07890B2
-:10248000E6FAE4EF75F008A4240FF582E434FFF5D2
-:1024900083EAF0EDFBEC7A03CBC313CB13DAF9FA42
-:1024A000E4EF75F008A42409F582E434FFF583EA2B
-:1024B000F07890E67B00FAEC2AFCED3BFDFBEC7A31
-:1024C00003CBC313CB13DAF9FAE4EF75F008A424B5
-:1024D0000DF582E434FFF583EAF0E4EF75F008A42B
-:1024E000240AF582E434FFF583E4F0E4EF75F008A4
-:1024F000A4240EF582E434FFF583E4F00E02238673
-:102500008E597892EDF608ECF6788FEFF61220737C
-:10251000228C26EC30E718E526540F1475F008A439
-:102520002448F582E434FFF583E054DFF08016E5BB
-:1025300026540F1475F008A42408F582E434FFF53E
-:1025400083E054DFF0227C0022EC90FC37F08C24F6
-:10255000ED2403F5257D00D39572ED95714003853B
-:102560007225E52524B75009752503740290FC37C0
-:10257000F0AC2512307622E4F56CF56B12257D2245
-:1025800090FC35E06573600E740490FC37F0E4F560
-:102590006B756C0380467D73E4FEFF79357AFC7BB6
-:1025A0000174057800120348E56C2403F56CE56BB3
-:1025B0003400F56BE56CD39572E56B95714006853B
-:1025C000726C85716BD3E56C9448E56B9400400C9C
-:1025D000740290FC37F0E4F56B756C03AC6C123050
-:1025E0007622EC90FC37F0E4F56CF56B8C32EC6005
-:1025F0000512306780057C001230762290FF93E050
-:102600004401F0B2B390FF04E0F54A90FF06E0FD0C
-:10261000A3E0ED7D00FC7D00FC90FF06E0FFA3E061
-:102620007E00FFE4FEEC4EFCED4FFDC3EC9448ED64
-:102630009400502290FF06E0FDA3E0ED7D00FC7DBC
-:1026400000FC90FF06E0FFA3E07E00FFE4FEEC4EFE
-:10265000FCED4FFD8004E4FD7C488C728D7190FF91
-:1026600002E0FDA3E0ED7D00FC7D00FC90FF02E0B8
-:10267000FFA3E07E00FFE4FEEC4EF54CED4FF54B82
-:10268000756A357569FC7568017D357EFC7F017959
-:1026900073E4FAFB74057800120348754900E549B4
-:1026A00024FE4019AD6AAE69AF68E412031805490B
-:1026B0000DED70010E8D6A8E698F6880E1756A3547
-:1026C0007569FC75680190FF00E05460B4000280F9
-:1026D00006D35003022CBFE54A540FF549E54A548E
-:1026E00080A2E0920290FF01E012018A000B2CBA56
-:1026F000270528232CBA292F2CBA2A122A462BADBB
-:102700002BB02BF02C632C91E56D30E70EE54C459A
-:102710004B7008E572640245716003022CBC90FFA7
-:1027200000E0541FB400028003D34029E54A60034F
-:10273000022820AD6AAE69AF68740112031878AD43
-:10274000E630E00BAD6AAE69AF6874021203187C24
-:102750000212307622B401028003D3401BE56D20C3
-:10276000E107E54A6003022820E54A24FE500302FF
-:1027700028207C0212307622B402028006D3500355
-:1027800002281EE56D20E10DE54A6009E54A6480F6
-:102790006003022820AC4A1230FD4003022820E5E5
-:1027A00049702530021190FF80E05408AD6AAE698F
-:1027B000AF68120318800F90FF82E05408AD6AAE34
-:1027C00069AF68120318803D154930021DE549754F
-:1027D000F008A42448F582E434FFF583E05408AD02
-:1027E0006AAE69AF68120318801BE54975F008A44A
-:1027F0002408F582E434FFF583E05408AD6AAE693D
-:10280000AF68120318AD6AAE69AF681201EF600BD2
-:10281000AD6AAE69AF6874011203187C021230769B
-:10282000228000022CBCE56D20E706E57245716050
-:1028300003022CBC90FF00E0541FB400028003D3BD
-:10284000401AE54C14454B7004E54A600302292CFC
-:1028500078ADE654FEF67C0012307622B401028098
-:1028600003D3402AE56D20E108E56D20E00302294D
-:102870002CE56D30E004E54A700BE56D30E109E5CB
-:102880004A24FE500302292C7C0012307622B40226
-:10289000028006D3500302292AE54C454B6003020F
-:1028A000292CAC4A1230FD400302292CE56D20E1B1
-:1028B00007E56D20E0028077E56D30E006E54960D0
-:1028C00002806CE549700F90FF82E054F7F090FFB2
-:1028D00080E054F7F022E549B401028003D34009B7
-:1028E0007D017C03120F128011B402028003D340D9
-:1028F000097D017C04120F1280001549300215E594
-:102900004975F008A42448F582E434FFF583E054C7
-:10291000F7F08013E54975F008A42408F582E43443
-:10292000FFF583E054F7F07C00123076228000023D
-:102930002CBCE56D20E706E57245716003022CBCF6
-:1029400090FF00E0541FB400028003D3401AE54C0E
-:1029500014454B7004E54A6003022A0F78ADE64443
-:1029600001F67C0012307622B401028003D34029A4
-:10297000E56D20E108E56D20E003022A0FE56D30EA
-:10298000E004E549700BE56D30E108E54924FE50AF
-:1029900002807F7C0012307622B402028003D34092
-:1029A0006FE54C454B60028069AC4A1230FD400235
-:1029B0008060E56D20E107E56D20E0028054E54987
-:1029C000701430020990FF80E04408F0800790FF07
-:1029D00082E04408F022E56D30E1331549300215FC
-:1029E000E54975F008A42448F582E434FFF583E056
-:1029F0004408F08013E54975F008A42408F582E442
-:102A000034FFF583E04408F07C0012307622800227
-:102A10008000022CBCE56D20E712E5724571700C58
-:102A2000E54A700890FF00E0541F6003022CBCE5EB
-:102A30004C90FFFFF090FFFFE06005436D018003C5
-:102A4000536DFE7C0012307622E56D30E70EE572A4
-:102A50004571600890FF00E0541F6003022CBCAD7C
-:102A60004BE54CED7D00FC7D00FCBD0002800302C7
-:102A70002BA8B401028003D34032E54A7005E54C2F
-:102A8000FC6003022BAA756A407569F8756801D36A
-:102A9000E5729412E57194004006E4FD7C12800416
-:102AA000AC72AD718C708D6F12308B22B4020280CB
-:102AB00003D34059E54A6003022BAAE54CFC70277A
-:102AC000756A527569F8756801D3E5729419E571F4
-:102AD00094004006E4FD7C198004AC72AD718C70EA
-:102AE0008D6F12308B8025756A6B7569F87568017A
-:102AF000D3E5729427E57194004006E4FD7C2780BD
-:102B000004AC72AD718C708D6F12308B22B40302E5
-:102B10008006D35003022BA8E54CF549700F90FFB7
-:102B200004E0FDA3E04D6003022BAA801890FB0295
-:102B3000E0FDA3E0FC90FF05E06C700790FF04E06F
-:102B40006D60028068E4F570F56F7F00E54914C59B
-:102B500049600FEF2400F582E434FBF583E02FFF9A
-:102B600080EA8F4AE54A2400F582E434FBF583E0ED
-:102B70007D00D39572ED95714006AC72AD71800FFA
-:102B8000E54A2400F582E434FBF583E07D00FC8C0B
-:102B9000708D6FE54A2400FCE434FBFDFEECFD7F04
-:102BA000018D6A8E698F6812308B228000022CBCE6
-:102BB000022CBCE56D30E719E5721445717012E521
-:102BC0004A700EE54C454B700890FF00E0541F60C2
-:102BD00003022CBCE56D20E008E56D20E103022C2A
-:102BE000BC756A6EE4F569F568E4F56F04F570127A
-:102BF000308B22E56D20E727E57245717021E54AAB
-:102C0000701DE54C6402454B600DE54C14454B606E
-:102C100006E54C454B700890FF00E0541F6003022E
-:102C20002CBCE56D20E008E56D20E103022CBC859D
-:102C30004C6EE56E700A436D01536DFDD2B080207D
-:102C4000E56E64026007E56E1460028072536DFEEB
-:102C5000436D02E56E64026005E56E147002C2B059
-:102C60007C0012307622E56D30E71AE5721445716A
-:102C70007013E54A700FE54C454B700990FF00E07A
-:102C8000541F1460028038E56D20E10280317C0120
-:102C900012307622E56D20E715E5724571700FE57B
-:102CA0004C454B700990FF00E0541F146002800FE8
-:102CB000E56D20E10280087C00123076228000025F
-:102CC0002F7DB440028006D35003022F7390FF0182
-:102CD000E090FC35F0E54A90FC36F0E490FC37F0EB
-:102CE000E56A2403F56AE5693400F569AD4BE54C06
-:102CF000856A82856983CDF0A3CDF090FF01E01253
-:102D000001C02D2A012D50022D7A032DA4042DF28D
-:102D1000052E2F062E55072E7B082EA7092ECD0B2C
-:102D20002EF30C2F02802F028100002F60E56D2012
-:102D3000E7067C051225DF227D767E357F02793815
-:102D40007AFC7B01740878001203487D087C00122D
-:102D5000254622E56D20E7067C051225DF22E54A9F
-:102D6000B403004010B40500500BE54A7F00FE7C20
-:102D70001012324D227D007C0712254622E56D207F
-:102D8000E7067C051225DF22E54AB403004010B4B3
-:102D90000500500BE54A7F00FE7C1112324D227D6A
-:102DA000007C0712254622E56D20E7067C051225EA
-:102DB000DF22E54AB405028003D3400AE4FF04FEA3
-:102DC0007C0A12324D22B401028003D3400AE4FF90
-:102DD00004FE7C0812324D22B403004010B40500FA
-:102DE000500BE54A7F00FE7C1312324D227D007CA1
-:102DF0000712254622E56D20E734D3E5729448E5B5
-:102E00007194005006E572457170067C021225DF50
-:102E100022E54AB40103B3400BC3B403004009B434
-:102E200006005004123123227C071225DF221225CE
-:102E30007D22E56D20E71DE54AB403004010B4058E
-:102E400000500BE54A7F00FE7C1612324D227C07B3
-:102E50001225DF2212257D22E56D20E71DE54AB40B
-:102E600003004010B40500500BE54A7F00FE7C19BA
-:102E700012324D227C071225DF2212257D22E56DBC
-:102E800020E723748190FF93F0E54AB403004010DB
-:102E9000B40500500BE54A7F00FE7C1712324D222C
-:102EA0007C071225DF2212257D22E56D20E71DE536
-:102EB0004AB403004010B40500500BE54A7F00FE01
-:102EC0007C1812324D227C071225DF2212257D222A
-:102ED000E56D20E71DE54AB403004010B40500503D
-:102EE0000BE54A7F00FE7C1512324D227C0712252D
-:102EF000DF2212257D22E56D20E7067C071225DF03
-:102F00002212257D22E56D30E72090FF00E0541F5E
-:102F1000701090FF01E0B480051225748003122523
-:102F20007D227D007C051225462290FF00E0541F83
-:102F300060067C051225DF22D3E5729448E5719482
-:102F400000500BC3E5729407E571940050067C03B2
-:102F50001225DF22E54AB40504123123227C071230
-:102F600025DF22E56D30E7087D007C05122546222D
-:102F70007C051225DF22B420028003D340008000AC
-:102F80001230512275430090FF83E0540FD39543D4
-:102F90004024E54324F0F582E434FEF583E0AD6A95
-:102FA000AE69AF6812031805430DED70010E8D6A0E
-:102FB0008E698F6880D1E5437D00FCC3E5709CF588
-:102FC00070E56F9DF56FE570456F6006E490FF83D7
-:102FD000F02290FF82E04408F0E4F56F75704990AC
-:102FE000FC35E0B405028003D3404090FC36E0F5A8
-:102FF00043B405028003D3400AE4FF04FE7C0B12B5
-:10300000324D22B401028003D3400AE4FF04FE7C67
-:103010000912324D22B403004010B40500500BE5F4
-:10302000437F00FE7C1412324D2222B480004023E4
-:10303000B48200501E7C357DFC1217A57D008C6C7F
-:103040008D6B90FC37E0600512305180057C0012DA
-:103050003076222290FF83E0547FF090FF82E0449C
-:1030600008F090FF80E04408F02290FF82E04408DE
-:10307000F090FF80E04408F0228C237D008C708D5E
-:103080006F756A357569FC75680112308B2290FF87
-:1030900083E0547FF0E5706449456F700122C3E519
-:1030A000709408E56F94004015752108E5217D00B6
-:1030B000FCC3E5709CF570E56F9DF56F8009857028
-:1030C00021E4F56F757049752200E522C395215002
-:1030D00026AD6AAE69AF681201EFFCE52224F8F56F
-:1030E00082E434FEF583ECF005220DED70010E8DC7
-:1030F0006A8E698F6880D3E521547F90FF81F0222A
-:103100008C487F00EF24FD4019E4EF75F007A424FC
-:103110007FF582E434F8F583E065487002D3220F2E
-:1031200080E28F47C32285727085716F90FF82E0C5
-:1031300054F7F090FF83E0547FF022C000C001C03C
-:1031400002C006C007E5782408F8860653067F7C8F
-:10315000FF1231AD7C007D00E57B6046FF90FD9560
-:10316000E0547F6E700FC083C082A3E0FDA3E0FC3B
-:10317000A3157B8007A3A3A3DFE68026DF06D0820A
-:10318000D083801EE0F8A3E0F9A3E0FAD082D083D8
-:10319000E8F0A3E9F0A3EAF0A3C083C082A3A3A34D
-:1031A00080DA123246D007D006D002D001D00022F9
-:1031B00085A87A75A888EC70027C3F8C7922E57826
-:1031C0002408F8760012329A80FBC000C001C002C9
-:1031D000C006C007AE047CFF1231ADE57B6042FF44
-:1031E00090FD95E0547F6E700BC083C082A3A3A3B3
-:1031F000157B8007A3A3A3DFEA8026DF06D082D059
-:103200008380D8E0F8A3E0F9A3E0FAD082D083E885
-:10321000F0A3E9F0A3EAF0A3C083C082A3A3A38034
-:10322000DA7808087918097C01E6547F6E70067612
-:10323000007700800608090CBC08EE123246D00761
-:10324000D006D002D001D00022757900857AA8225C
-:10325000C0F0C082C083C3E57B24E8500512329AD7
-:1032600080F4EC6031903575E493C39C4028C00431
-:103270007CFF1231ADD004430480E57B75F003A4DC
-:103280002495F582E434FDF583ECF0EFA3F0EEA392
-:10329000F0057B123246D083D082D0F022C0047C6D
-:1032A00020D28CD28DD504FDD0042275A80075885B
-:1032B0000075B80075F00075D000E4F8900000F6D5
-:1032C00008B800FB020000C3ED940250047D037CAB
-:1032D000E8ECF4FCEDF4FD0CBC00010D8C7F8D7E60
-:1032E00022C3EC94BCED940250047D077CD0ECF436
-:1032F000FCEDF4FD0CBC00010D8C7D8D7C22EC708E
-:103300000122C000E5782418F8A604E5782408F81E
-:10331000C6547FF6E630E703D0002212329A80F4DA
-:10332000C28C857C8C857D8AD28CC0E0C0D0C0F0F8
-:10333000C082C083C000C001C002C003C004C00579
-:10334000C006C007121AF8E5782408F8E66024E5FC
-:10335000782410F8A681E57875F021A4248DF582F3
-:10336000E434FCF58378AEE58104C398F9E6F0080F
-:10337000A3D9FA74082578F8057808E65480700C0B
-:10338000E578B407F3780875780080EFE5782410C5
-:10339000F88681E57875F021A4248DF582E434FC6B
-:1033A000F58378AEE58104C398F9E0F608A3D9FA6D
-:1033B000D007D006D005D004D003D002D001D00071
-:1033C000D083D082D0F0D0D0D0E032C0E0C0D0C026
-:1033D00000C001C002C28E857E8D857F8BD28E7823
-:1033E0001979097A07E77004A600800BE6600816D1
-:1033F000E67004E74480F70809DAEAE57960131417
-:10340000F579700EE5782408F87600123246D28CF1
-:10341000D28DD002D001D000D0D0D0E0327581ADB5
-:10342000742A90FF93F0757F30757EF8757D607516
-:103430007CF012053F1234CE12175B90FF93E044EC
-:1034400001F0B2B31234F81232A880DA22C0007C44
-:1034500001EC2408F8E660090CBC08F512329A80E9
-:10346000EED00022C0F0C082C083C000C006C007FA
-:10347000ED2410F876BCED75F021A4248DF582E4DE
-:1034800034FCF583C082C083A3A3E4780DF0A3D8F5
-:10349000FCEC547F75F002A42441F582E5F034354C
-:1034A000F583E493FE740193F5828E83E493FE74B6
-:1034B0000193FFD083D082EFF0A3EEF0ED2408F863
-:1034C000EC4480F6D007D006D000D083D082D0F074
-:1034D00022757800757B007A08791878087600776D
-:1034E000000809DAF8E478087480447FF67401442F
-:1034F00010F58975B808D2ABD2A9227581ADD28EEC
-:10350000D28CD2AFE57B6032FF90FD95E0548060B5
-:103510002478087908E0547FFA7B00E6547FB502EE
-:10352000027BFF08D9F5EB700CEAF012344AAD04C7
-:10353000AC02123461A3A3A3DFD212329A80C57CFD
-:10354000017D002204FE04F204F604EA04E604E22B
-:1035500004EE04FA04A604AA04D604DA04A204A21F
-:1035600004A204DE04BE04B604BA04B204CA04C64B
-:1035700004C204CE04D204AE1901030022004802A2
-:1035800000480E301420C81AD0180A0C0506020391
-:1035900001020001CE0181010000C0008000600036
-:1035A0003000180010000800040002000100081894
-:1035B00028380C05100A0200000000000301100A60
-:1035C000020000000000FBE0FBF2090227000102FC
-:1035D00000A0FA0904000003FF00000007058102B3
-:1035E00040000007050102400000070583030200B8
-:1035F00001220354005500530042003300340031CF
-:1036000000300020002000200020002000200020AA
-:073610000020000000000093
-:00000001FF
diff --git a/firmware/mts_edge.fw.ihex b/firmware/mts_edge.fw.ihex
deleted file mode 100644
index d14ebd647846..000000000000
--- a/firmware/mts_edge.fw.ihex
+++ /dev/null
@@ -1,881 +0,0 @@
-:10000000F0360002001E021AFBFFFFFFFFFF023363
-:10001000F9FFFFFFFFFFFFFFFFFFFFFFFFFF0234BE
-:10002000A47581D490FDE88583A0123618EC4D604C
-:100030007378AF8003760018B8A0FA787F800376D3
-:100040000018B865FA78208003760018B820FA788E
-:10005000208003760018B81FFA90FDDDAE83AF82D2
-:1000600090FBF81200AA6005E4F0A380F690FDE88A
-:10007000A88290FDE8A982E8696005E4F20880F7AB
-:100080009001081200B390010C1200B390011012FD
-:1000900000B39001141200D190011A1200D1900106
-:1000A000201200D175D0001234F6020126EF6582CD
-:1000B0007003EE658322E493F8740193F97402935C
-:1000C000FE740393F5828E83E869700122E493F64F
-:1000D000A30880F4E493FC740193FD740293FE740E
-:1000E0000393FF740493F8740593F58288831200D8
-:1000F000AA700122E493A3A883A9828C838D82F045
-:10010000A3AC83AD828883898280E32121049B8014
-:1001100080049BB0B4049BFDE8049F049FFBF304A0
-:10012000A4049FFBF30504050480FED0F030F00921
-:1001300020F303F68010F7800D30F10920F303F26D
-:100140008004F38001F020F404FCD0E0CC22CCC089
-:10015000E0120163020154BC0005D0F0ACF022C3F0
-:1001600013DCFC02012ABF0009ED258275F001F8BD
-:10017000E622BF010FED2582F582EE3583F583750A
-:10018000F004E022ED258275F002F8E222D083D05F
-:1001900082F5F0C3E493A3C5F095F0C0E0C3D0F0BE
-:1001A000E493A395F04012A3A3C3E5F033500205F6
-:1001B000832582F58250020583740193C0E0E493A5
-:1001C000C0E022D083D082F5F0E4937009740193EB
-:1001D0007004A3A3800C74029365F06005A3A3A32D
-:1001E00080E7740193C0E0E493C0E022120264024D
-:1001F00001FB1202B80201FB1202DC0201FB30E03B
-:100200000720E302E622E72230E10720E302E222B0
-:10021000E32230E202E022E493221202DC02022313
-:100220001202B8020223ABF012022DCBC5F0CB2292
-:1002300030E01020E306E6F5F008E622E7F5F009E5
-:10024000E7192230E11020E306E2F5F008E222E3AC
-:10025000F5F009E3192230E206E0F5F0A3E022E42C
-:1002600093F5F074019322BB0003740922BB0107CC
-:1002700089828A83740422BB020789828A8374106C
-:1002800022740A22020284BB0007E92582F8740165
-:1002900022BB010DE92582F582EA3583F5837404DA
-:1002A00022BB020DE92582F582EA3583F5837410BD
-:1002B00022E92582F87402220202B8BF0005EDF897
-:1002C000740122BF01078D828E83740422BF02074E
-:1002D0008D828E83741022EDF87402220202DCBF3C
-:1002E0000007ED2582F8740122BF010DED2582F58E
-:1002F00082EE3583F583740422BF020DED2582F56D
-:1003000082EE3583F583741022ED2582F874022283
-:10031000020310C0E0120264020328C0E01202B817
-:10032000020328C0E01202DC02032830E00B20E3C5
-:1003300004D0E0F622D0E0F72230E10B20E304D035
-:10034000E0F222D0E0F322D0E0F022C9CDC9CACE3B
-:10035000CACBCFCB12035BEDF9EEFAEFFB22BB0069
-:100360002FBF000AFAEDF8E7F60809DAFA22BF0112
-:10037000128D828E83F802037809A3E7F0D8FA225F
-:10038000020383FAEDF8E7F20809DAFA2202038D94
-:10039000BB014DBF001489828A83F9EDF802039FE7
-:1003A00008A3E0F6D9FA220203B0BF01228D828EA3
-:1003B00083FB08C9C582C9CAC583CAE0A3C9C5826F
-:1003C000C9CAC583CAF0A3DBEAD8E8220203D38DE9
-:1003D000828E83F9EDF8E0F208A3D9FA220203DD58
-:1003E000BB024DBF001289828A83F9EDF80203EF48
-:1003F00008A3E493F6D9F922BF01238D828E83FBF3
-:1004000008C9C582C9CAC583CAE493A3C9C582C93C
-:10041000CAC583CAF0A3DBE9D8E722020422898295
-:100420008A83F9EDF8E493F208A3D9F922020433A0
-:10043000BF000DFAEDF8E3F60809DAFA2202043DEE
-:10044000BF01128D828E83F802044A09A3E3F0D81B
-:10045000FA22020455FAEDF8E3F20809DAFA220268
-:10046000045FE6FB08E6FA08E6F904F618700106F0
-:1004700022E6FF08E6FE08E6FD22EFF0A3EEF0A379
-:10048000EDF022EBF0A3EAF0A3E9F022E0FFA3E015
-:10049000FEA3E0FD22E0FBA3E0FAA3E0F9220000C6
-:1004A000000000000000000504006105730026053F
-:1004B0009A00330A0B00610A770066154600610C4A
-:1004C000FB006109AB006109E200610DC200610B34
-:1004D000F300610A1E00610A530061173E003317E2
-:1004E0005100341E1600431EBC0044202900442045
-:1004F0001700471EE300471F88004D1FD9004F1FFC
-:10050000050058338400617CCC7DFF121CC722900B
-:10051000FFFCE020E72DC2AFAE59AF58755A20E579
-:100520005A14C55A6019E4FE7F05EE4FCE24FFCE63
-:10053000CF34FFCF6007E490FF92F080ED80E08E33
-:10054000598F582212050C7D077CB71233A07D0FFE
-:100550007C6E1233BA78A17A06E4F608DAFC7A06E1
-:100560001205CF7C03120E57122165E4FEFF7C0FAB
-:10057000123329D2A822123214E490FC38F090FFF2
-:10058000F0E030E408740190FC39F08005E490FC60
-:1005900039F07D0A7C00122547123297221232145C
-:1005A00090FC39E014700E90FFF0E04410F07C00F5
-:1005B0001225E0801990FC39E0700E90FFF0E054B5
-:1005C000EFF07C001225E080057C171225E0123246
-:1005D000972290FFF0E054ABF090FFF0E04420F061
-:1005E000228C378D367882EDF608ECF6EDFEECFDC8
-:1005F0007F019000051201F57880F67882E6FD080B
-:10060000E6FCEDFEECFD7F019000041201F5540FB5
-:10061000FC7D8012176F7880E6700DAD3AAE39AF71
-:1006200038E41203187C082290FFF0E054FEF090AA
-:10063000FFF0E054FDF0801E7882E6FD08E6FCED58
-:10064000FEECFD7F0190000812021725E0440190A6
-:10065000FFF3F00206DB7882E6FD08E6FCEDFEEC37
-:10066000FD7F0190000612021754FE90FFF3F08008
-:100670002B7882E6FD08E6FCEDFEECFD7F019000A4
-:1006800008120217FAEB90FFF1F01208CA400DAD04
-:100690003AAE39AF38E41203187C18227882E6FDAE
-:1006A00008E6FCEDFEECFD7F0190000812021790B9
-:1006B000FFF1F01208CA400DAD3AAE39AF38E4127E
-:1006C00003187C18227882E6FD08E6FCEDFEECFDBE
-:1006D0007F01900006120217440190FFF3F0788327
-:1006E000E62403F618E63400F67880E624FE500986
-:1006F00090FFF0E054FDF0800790FFF0E04402F03E
-:10070000E490FFF1F0788176007880E624FFFCE445
-:1007100034FFFD7881E67F00FEECD39EEF6480CD50
-:1007200064809D402F1208AF400F7881E6AD3AAE4D
-:1007300039AF381203187C182290FFF2E0FC78825F
-:100740008683088682ECF0788106A37882A68308E7
-:10075000A68280B51208AF400F7881E6AD3AAE3977
-:10076000AF381203187C182290FFF2E0FC788286E2
-:1007700083088682ECF07880E6AD3AAE39AF381265
-:1007800003187C00228C378D367882EDF608ECF663
-:10079000EDFEECFD7F019000051201F57881F67801
-:1007A00082E6FD08E6FCEDFEECFD7F019000041200
-:1007B00001F5540FFC7D8112176F7881E670037C80
-:1007C000082290FFF0E054FEF090FFF0E054FDF0BE
-:1007D000801B7882E6FD08E6FCEDFEECFD7F0190D3
-:1007E000000812021725E090FFF3F0805B7882E6A4
-:1007F000FD08E6FCEDFEECFD7F01900006120217FD
-:1008000054FE90FFF3F080217882E6FD08E6FCEDCF
-:10081000FEECFD7F01900008120217FAEB90FFF149
-:10082000F01208CA40037C18227882E6FD08E6FC34
-:10083000EDFEECFD7F0190000812021790FFF1F031
-:100840001208CA40037C18227883E6240AF618E6C8
-:100850003400F6788076007881E624FFFCE434FFEB
-:10086000FD7880E67F00FEECD39EEF6480CD64804F
-:100870009D402178828683088682E090FFF1F01205
-:1008800008CA40037C1822788006788306E6187030
-:10089000010680C390FFF0E04401F078828683086F
-:1008A0008682E090FFF1F01208CA40037C18227C97
-:1008B000002290FFF0E020E71290FFF0E030E50921
-:1008C00090FFF0E04420F0C32280E7D32290FFF0B5
-:1008D000E020E31290FFF0E030E50990FFF0E04403
-:1008E00020F0C32280E7D3228C428D417C00ED545E
-:1008F000F0FDEC7003ED64307005753E0380037508
-:100900003E04AC3E120F74758300858340E541546C
-:100910000FF53FE5407004E53F64037035E53E2484
-:10092000FD75F00AA42402F582E434FCF583E0307E
-:10093000E60512105B8019E53E24A1F8E654FBF6AB
-:1009400078ADE62405F58218E63400F583740FF0DF
-:100950008059E5407004E53F64047048E53E24FD9D
-:1009600075F00AA42402F582E434FCF583E030E556
-:1009700007AC42AD41121C5CE54230E21578B1E6AD
-:1009800030E00F78B1E630E109E4FF04FE7C0412A8
-:10099000332978ADE62406F58218E63400F5837431
-:1009A0000FF08007E4FC7DEE121C5CC203221232C1
-:1009B00014120F7478ADE62406F58218E63400F5BB
-:1009C00083E090FC38F078ADE62405F58218E63433
-:1009D00000F583E090FC39F0C2037D027C00122513
-:1009E00047123297221232147899ECF6EC24A1F8CF
-:1009F000E630E1077C131225E0800F90FC39E0FD22
-:100A00007899E6FC1213F11225E012329722123285
-:100A1000147899ECF67D00120F141225E01232972B
-:100A2000221232147899ECF6EC24A1F8E630E207B1
-:100A30007C131225E0801B7899E624A1F8E620E1DA
-:100A4000077C121225E0800A7899E6FC1214151230
-:100A500025E0123297221232147899ECF6EC24A198
-:100A6000F8E620E2077C111225E0800A7899E6FC7E
-:100A70001215161225E0123297221232147899ECD0
-:100A8000F6120F7478ADE62409F58218E63400F505
-:100A900083E090FC3FF078ADE6240AF58218E63456
-:100AA00000F583E090FC40F078ADE62403F5821871
-:100AB000E63400F583E0FC78ADE62404F58218E620
-:100AC0003400F583E0F56278ADE62402F58218E69D
-:100AD0003400F583E0F5638C61E4EC333354017842
-:100AE00099F66008E56230E1037899067899E69016
-:100AF000FC41F078ABE62402F58218E63400F58379
-:100B0000E0FDA3E0540CFCED54E68C65F564E56172
-:100B100030E503436501E56220E50EE561547F7031
-:100B200008E56120E703436502E56130E3034365BF
-:100B300010E56130E203436520E56154036003433F
-:100B40006540E56130E103436580E56130E40343DE
-:100B50006401E56130E603436408E56220E40EE5E4
-:100B600061547F7008E56120E7034364105365FB1F
-:100B70005364F9AD64E56590FC3ACDF0A3CDF0E5A2
-:100B80006330E30DE5635430C4540F90FC3DF080B6
-:100B900005E490FC3DF0E563540390FC3CF0E56314
-:100BA0005404C31390FC3EF090FC3CE0700E7D3585
-:100BB0007EFC7F01740190000912014B78ADE624A0
-:100BC00008F58218E63400F583E07C00FD78ADE698
-:100BD0002407F58218E63400F583E07F004CFEEF31
-:100BE0004D90FC38F0A3CEF0CEC2037D0A7C0012FB
-:100BF0002547123297221232147899ECF6789E76B5
-:100C0000010876FC087638789B760C789E12046E84
-:100C100012021D789CCBF6CB08F67F00EF24EA4049
-:100C20001FE4EF25E090365AFD93CD0493789D663E
-:100C30007003ED18667006789B760080030F80DCE9
-:100C4000789AEFF6789E12046E90000212021778DE
-:100C50009CCBF6CB08F65404CB54064B6004789B2F
-:100C6000760B789DE630E313789E12046E900005B3
-:100C70001201F524FB5004789B760D789DE654C054
-:100C80007D0064C04D7004789B760B789E12046ED4
-:100C90009000041201F524FC5004789B760F789E96
-:100CA00012046E9000061201F524FD5004789B7624
-:100CB0000E789E12046E9000091201F524FD500476
-:100CC000789B760A789BE6702A7899E6FC120F7476
-:100CD000789E12046E78ABE6F978AAE6FA7B017486
-:100CE0000A7800120348C2037899E6FC12111778BB
-:100CF0009BECF6789BE6FC1225E01232972212322A
-:100D0000147899ECF6120F747899E624FD75F00AC0
-:100D1000A42414F582E434FCF583AC82AD8378AA74
-:100D20008683088682ECF9EDFA7B0A78011203B01B
-:100D3000C2037899E6FC121117123297228D2B8C80
-:100D40002AED60407527017529487528FFE52A249A
-:100D5000FDFCE434FFFDEC7C0325E0CD33CDDCF974
-:100D6000FCE5292CF529E5283DF528AD29AE28AF6D
-:100D700027748090000612032074809000021203F2
-:100D800020120FC7E52B14603B75270175290875E4
-:100D900028FFE52A24FDFCE434FFFDEC7C0325E07C
-:100DA000CD33CDDCF9FCE5292CF529E5283DF528E6
-:100DB000AD29AE28AF27E4900006120320E490008E
-:100DC00002120320221232147899ECF6EC24A1F8D6
-:100DD000E630E2097899E6FC121516D2007899E619
-:100DE000FC120F74789A760090FC39E030E70478B2
-:100DF0009A7601789AE6FD7899E6FC120D3AC203DC
-:100E00003000077899E6FC1214157C001225E012D8
-:100E100032972278ADE62404F58218E63400F58393
-:100E2000E04401F078ADE62404F58218E63400F5DC
-:100E300083E030E00280ED78ADE6240BF58218E621
-:100E40003400F583E054F8F078ADE62402F582181A
-:100E5000E63400F583E04480F022C2038C58120F80
-:100E60007478AA8683088682798B7A367B0A780121
-:100E70001203FE120E10AC587D02120D3AC203ACE2
-:100E800058121117228D538E528F518C50120F749D
-:100E9000754F0078ADE62405F58218E63400F58339
-:100EA000E020E41FE54F24F64019054FC2037C18EB
-:100EB0001233D790FF93E04401F0B2B3AC50120F5D
-:100EC0007480D078ADE62405F58218E63400F58309
-:100ED000E020E405C2037C022278ADE62405F58219
-:100EE00018E63400F583E0540F601678ADE624056B
-:100EF000F58218E63400F583E0540FF0C2037C015C
-:100F00002278AC8683088682E0AD53AE52AF511290
-:100F10000318C2037C00228D318C30121516E53186
-:100F2000600FE530B4030A7C0112250F7C81122585
-:100F30000FAC30120F74E531601A78AE86830886E4
-:100F400082E054E7F0A3A3A3A3E054E7F0AC307D24
-:100F500002120D3A78AA868308868279957A367BC2
-:100F60000A78011203FEC203E53024A1F8E654FD1D
-:100F7000F6AC30121117228C26300305123376801E
-:100F8000F87C0A123289D203E52624FD78A7F67090
-:100F90000778AE76FF0876E078A7E67D007C04252A
-:100FA000E0CD33CDDCF9FC24A078ADF6ED34FF18AC
-:100FB000F678A7E675F00AA42400FCE434FCFD787A
-:100FC000AAEDF608ECF61233222278ADE62402F5FB
-:100FD0008218E63400F583E030E72278ADE624029B
-:100FE000F58218E63400F583E0547FF078ADE6240E
-:100FF00002F58218E63400F583E04480F02278AEF2
-:101000008683088682E0547FF0AD83E5822404FC69
-:10101000E43D8C82F583E0547FF078ADE6240BF557
-:101020008218E63400F583E054F8F078AFE6240146
-:10103000F58218E63400F583E04403F078AFE62447
-:1010400005F58218E63400F583E04403F078ADE658
-:101050002405F58218E63400F583740FF02278AE8B
-:101060008683088682E0543FF0AD83E5822404FC49
-:10107000E43D8C82F583E0543FF078A7E624A8F89D
-:10108000E6FC78AFE62401F58218E63400F583EC3F
-:10109000F078A7E624A8F8E6FC78AFE62405F58208
-:1010A00018E63400F583ECF078ADE6240BF58218F1
-:1010B000E63400F583E054FB4402F52678ABE624E1
-:1010C00002F58218E63400F583E030E5034326019B
-:1010D00078ADE62405F58218E63400F583E030E0CB
-:1010E00003120FC7E526FC78ADE6240BF58218E65F
-:1010F0003400F583ECF078ADE62405F58218E6348B
-:1011000000F583740FF078AE8683088682E0448011
-:10111000F0A3A3A3A3E04480F0228C2A120F7478DA
-:10112000ABE62408F58218E63400F583E0FC78ADE0
-:10113000E6240AF58218E63400F583ECF078ABE695
-:101140002407F58218E63400F583E0FC78ADE62448
-:1011500009F58218E63400F583ECF078AA86830856
-:101160008682E0FDA3E0FCEDFE78ADE62408F58282
-:1011700018E63400F583EEF0ECFE78ADE62407F5D2
-:101180008218E63400F583EEF08C298D28C3EC94A8
-:1011900005ED940C400575277C8033D3E529940137
-:1011A000E5289403400575273C8023D3E5299481E5
-:1011B000E528940140057527188013D3E52994602C
-:1011C000E5289400400575270C8003752708AF2794
-:1011D000E4EF547C4483FF8F27E527FC78AFE624B7
-:1011E00001F58218E63400F583ECF0E527FC78AFD2
-:1011F000E62405F58218E63400F583ECF0E527FCDB
-:1012000078A7E624A8F8ECF678ADE62402F5821873
-:10121000E63400F583E0F52778ABE62402F5821882
-:10122000E63400F583A3E030E3175327C778ABE635
-:101230002405F58218E63400F583E0903686934263
-:101240002778ABE62402F58218E63400F583E03017
-:10125000E70543274080035327BF5327FB78ABE6BE
-:101260002406F58218E63400F583E0600343270482
-:101270005327FC78ABE62404F58218E63400F583A6
-:10128000E04227432780E527FC78ADE62402F5827B
-:1012900018E63400F583ECF078ADE62404F5821806
-:1012A000E63400F583E0F52778ABE62402F58218F2
-:1012B000E63400F583A3E030E1055327DF800343E4
-:1012C000272078ABE62402F58218E63400F583E0A7
-:1012D00030E4055327EF800343271078ABE6240959
-:1012E000F58218E63400F583E0B40203432702E5F3
-:1012F00027FC78ADE62404F58218E63400F583EC8B
-:10130000F078ADE62403F58218E63400F583E0F5C5
-:101310002778ABE62409F58218E63400F583E070FF
-:101320000553277F800343278078ABE62402F582AC
-:1013300018E63400F583A3E030E00543272080035E
-:101340005327DF78ABE62402F58218E63400F583F4
-:10135000E030E30543274080035327BF78ABE62402
-:1013600002F58218E63400F583E030E005432710EB
-:1013700080035327EF78ABE62402F58218E63400A9
-:10138000F583A3E030E40543270880035327F7786B
-:10139000ABE62402F58218E63400F583A3E030E5DD
-:1013A0000543270480035327FB78ABE62402F5822C
-:1013B00018E63400F583A3E030E6054327018003F7
-:1013C0005327FE78ABE62402F58218E63400F58355
-:1013D000A3E030E70543270280035327FDE527FC00
-:1013E00078ADE62403F58218E63400F583ECF0C20C
-:1013F000037C00228D278C26ED54031460037C109F
-:1014000022E527547C24FC40037C0B22E52624A102
-:10141000F8E64402F67C00228C30120F74E530248A
-:10142000A1F8E620E24FAC307D02120D3AE53024FF
-:10143000FE4428FC78AE8683088682ECF0AF83E514
-:10144000822404FEE43FFFEC8E828F83F07C038CC9
-:101450002CE52CFC78AFE62401F58218E63400F583
-:1014600083ECF0E52CFC78AFE62405F58218E63431
-:1014700000F583ECF0752D01752F48752EFFE530D2
-:1014800024FDFCE434FFFDEC7C0325E0CD33CDDC12
-:10149000F9FCE52F2CF52FE52E3DF52E78AFE6244F
-:1014A00004F58218E63400F583E054E7F52CAD2FFF
-:1014B000AE2EAF2DE4900002120320E4900006123D
-:1014C00003201201EF30E503432C10E52CFC78AF2C
-:1014D000E62404F58218E63400F583ECF012105B84
-:1014E00078ADE62406F58218E63400F583E0C20301
-:1014F000FCE53024A1F8E64404F68C2CE530540FCA
-:10150000C454F07E00FFEEEF44047D00FFEC4EFC7F
-:10151000ED4FFD121CC77C00228C2F120F74120F8E
-:10152000FB78AE8683088682E05408F0A3A3A3A3C9
-:10153000E05408F0AC2F7D02120D3AC203E52F24CF
-:10154000A1F8E654FBF67C0022123214789AECF6ED
-:10155000EC24A1F8E630E10A7D007C131225471245
-:101560003297789AE624A1F8E64401F6789AE6FCE8
-:10157000120F74789AE624FD75F00AA42414F582FB
-:10158000E434FCF58378AAE6FA08E6F97B0A7801E8
-:101590001203B078AA868308868279957A367B0A08
-:1015A00078011203FE120FC7C203789AE6FC1211EB
-:1015B000177899ECF6EC600A7D007C08122547123A
-:1015C0003297789AE6FC120F7478ADE62404F5821F
-:1015D00018E63400F583E0441054DFFC78ADE624CF
-:1015E00004F58218E63400F583ECF07899ECF6C245
-:1015F000037CC81233D7789AE6FC120F7478ADE6F4
-:101600002404F58218E63400F583E054EFF0C203B9
-:101610007CC81233D7789AE6FC120F7478ADE624B2
-:1016200004F58218E63400F583E04410F0C2037C30
-:10163000C81233D7789AE6FC120F7478ADE624040A
-:10164000F58218E63400F583E04420F0C2037CF014
-:101650001233D7789AE6FC120F7478ADE62405F5BC
-:101660008218E63400F583E030E415C203789AE688
-:1016700044107F00FE7C0712332912329702173D77
-:1016800078ADE62404F58218E63400F583E054CF03
-:10169000F0C2037CC81233D7789AE6FC120F747834
-:1016A000ADE62404F58218E63400F583E04430F01A
-:1016B000C2037CF01233D7789AE6FC120F7478AD2F
-:1016C000E62405F58218E63400F583E030E414C220
-:1016D00003789AE644107F00FE7C07123329123209
-:1016E00097805D78ADE62404F58218E63400F58332
-:1016F000E054EFF078ADE62404F58218E63400F506
-:1017000083E054DFF0789AE624FD75F00AA42414EF
-:10171000F582E434FCF583AC82AD8378AA86830835
-:101720008682ECF9EDFA7B0A78011203B0C20378E5
-:101730009AE6FC1211177D007C0B12254712329796
-:1017400022123214E490FC39F07D027C001225470D
-:10175000123297221232147C001225E012329722A4
-:10176000743C90FBE0F0743E90FBE0F0E490FC28C9
-:10177000F0228D358C34ECB401028003D34002801A
-:1017800028B402028003D34008A835E625E0F6809D
-:1017900018B404028003D3400AA835E625E025E00A
-:1017A000F68006A83576008000228C3C8D3BEDFE4D
-:1017B000ECFD7F0175660675670090FC29120477C1
-:1017C0001201EFB480028006D3500302187090FC1F
-:1017D000291204899000031201F554F0B4300280FC
-:1017E00003D3405F90FC291204899000081202176D
-:1017F000FAFDEBFE7F0190FC2C120477EECD9036C3
-:101800009FFCE493FF740193FEF9EFFA7B01EAFF7A
-:10181000E9FEECC39EED9F40259036A1E493FD7454
-:101820000193FCEDFEECFD7F01EECDFC90FC2EE083
-:10183000D39C90FC2DE09D50057566808033121975
-:101840008E802EB460028003D3400BAC3CAD3B12C3
-:1018500007828C66801BB41003B34010C3B420030E
-:10186000B34009C3B440028003D340007566818051
-:10187000008075B481028003D3406B90FC29120470
-:10188000899000031201F554F0B430028003D34074
-:101890001D90FC29120489900008120217FAFDEB32
-:1018A000FE7F0190FC2F1204771218F88036B46086
-:1018B000028003D34013753A67E4F539F538AC3C40
-:1018C000AD3B1205DE8C66801BB41003B34010C321
-:1018D000B42003B34009C3B440028003D340007571
-:1018E0006681800080028000E566FC90FC2912047D
-:1018F00089EC900002120320AC672290FC291204AC
-:10190000899000041201F5600474018001E4A2E0F2
-:10191000920190FC29120489ED2403FD50010E90E0
-:10192000FC2C12047790FC29120489900005120106
-:10193000F5F5679000041201F5540FFC7D6712174E
-:101940006FE5677004756608227566007884760016
-:101950007884E6C39567503890FC2F1204891201F1
-:10196000EFFC90FC2C120489EC12031830010E904D
-:10197000FC31E004F090FC307003E004F078840661
-:1019800090FC2EE004F090FC2D7003E004F080C089
-:101990002290FC2AE0FDA3E0FCEDFEECFD7F01EDD2
-:1019A000240AFD50010E90FC3212047790FC29129B
-:1019B00004899000041201F5540FB401028003D38E
-:1019C000401790FC321204890DED70010E90FC2F2F
-:1019D00012047778887601804EB402028003D340E7
-:1019E0001990FC32120489ED2402FD50010E90FC86
-:1019F0002F12047778887602802DB404028003D3F6
-:101A0000401990FC32120489ED2404FD50010E901F
-:101A1000FC2F12047778887604800CB400028003CF
-:101A2000D340007566082290FC29120489900005B5
-:101A30001201F5F567788576007885E6C3956740ED
-:101A400003021AF6788676007886E6C37888965080
-:101A50007690FC2C1204891201EFFC90FC321204E7
-:101A6000921201E9F45CFC1201E9F890FC2F1204D7
-:101A700089E8C0E01201EFC8D0E0C8584CFC90FCE7
-:101A80002C120489EC1203187887ECF690FC31E0F4
-:101A900004F090FC307003E004F009E970010A9052
-:101AA000FC3212048090FC29120489900004120177
-:101AB000F530E40E90FC2EE004F090FC2D7003E075
-:101AC00004F078860680817888E6FDE4FEFFEECD9E
-:101AD000FC90FC31E02CF090FC30E03DF07888E6A2
-:101AE000FDE4FEFFEECDFC90FC34E02CF090FC33E6
-:101AF000E03DF0788506021A367566002222C0E0C5
-:101B0000C0F0C082C083C0D0E8C0E0E9C0E0EAC055
-:101B1000E0EBC0E0ECC0E0EDC0E0EEC0E0EFC0E024
-:101B200090FF92E01201C01B49301B49321B58380C
-:101B30001B6A3A1B7C3E1B94441B88461BA0501B0F
-:101B4000E2521BC1541C035600001C2490FF92E07B
-:101B50007F00FE7C01123329021C34E4FF04FE7C6A
-:101B600003123329742090FFFEF0021C34E4FF04BA
-:101B7000FE7C02123329744090FFFEF0021C34E414
-:101B8000FF04FE7C04123329021C34E4FF04FE7CB3
-:101B900005123329021C34E4FF04FE7C06123329AB
-:101BA000021C3490FFA5E07D0090FBF8CDF0A3CDA2
-:101BB000F090FBF9E0FCF58390FBF8E04433FD1274
-:101BC0001CC7807390FFB5E07D0090FBFACDF0A3B9
-:101BD000CDF090FBFBE0FCF58390FBFAE04443FD85
-:101BE000121CC7805290FFA6E07D0090FBFCCDF058
-:101BF000A3CDF090FBFDE0FCF58390FBFCE04434CA
-:101C0000FD121CC7803190FFB6E07D0090FBFECD39
-:101C1000F0A3CDF090FBFFE0FCF58390FBFEE044E9
-:101C200044FD121CC7801090FF92E07D00FCED4443
-:101C3000AAFD121CC78000E490FF92F0D0E0FFD014
-:101C4000E0FED0E0FDD0E0FCD0E0FBD0E0FAD0E058
-:101C5000F9D0E0F8D0D0D083D082D0F0D0E03205F7
-:101C600081058105810581A881181818EDF608EC19
-:101C7000F690FF5AE020E70280F790FF59E07D00E0
-:101C8000A88118CDF6CD08F67D03A881E618FCE6FC
-:101C9000CC25E0CC33CCDDF9CCF6CC08F6A8811805
-:101CA000E644F8F6A881181818E6FD08E6FCA881B5
-:101CB000188683088682EDF0A3ECF0740290FF5A38
-:101CC000F0158115811581158122E5812405F581A5
-:101CD000E4A88118F6A88118181818EDF608ECF693
-:101CE00090FBF5E024F85003021DE8E4A8811818E1
-:101CF000F6A88118E6FEA88118181818E6FD08E66F
-:101D0000FC7F00EF24F8404DE4EF25E0247DF582D0
-:101D1000E434FCF583E0FBA3E06C7003FAEB6D7038
-:101D2000097401A8811818F6802BE4EF25E0247DC2
-:101D3000F582E434FCF5837A00E054F0CCF8CCCDA5
-:101D4000F9CDFB7800E954F0F9EA687002EB6970AC
-:101D5000010E0F80AEA88118EEF6A8811818181889
-:101D6000EDF608ECF6A881EFF6A8811818E6707970
-:101D7000A88118E624F74071A88118181818E654AD
-:101D80000FA881F664046017A881E664036010A8B8
-:101D90008118181818E6FD08E6FC121C5C804A7CC5
-:101DA0000A123289A88118181818E6FD08E6FC9076
-:101DB000FBF4E025E0247DF582E434FCF583EDF0CE
-:101DC000A3ECF090FBF4E0FFE4EF045407FF90FB7A
-:101DD000F4F090FBF5E004F012332290FBF6E07093
-:101DE00008E4FEFF7C0F123329802790FBF7E00404
-:101DF000F0543F701D90FBF7E044FE7D00FC90FB2B
-:101E0000F4E025E0247DF582E434FCF583EDF0A3D5
-:101E1000ECF0E58124FBF58122788B7600788C76D6
-:101E200000740190FBF6F012321490FBF5E060575D
-:101E30007C0A12328990FBF3E025E0247DF582E4F0
-:101E400034FCF583E0FDA3E0FC90FBF3E025E02407
-:101E50007DF582E434FCF583E4F0A3F090FBF3E03D
-:101E6000FFE4EF045407FF90FBF3F090FBF5E01460
-:101E7000F07889EDF608ECF61233227889E6FD0851
-:101E8000E6FC1208E580A312337690FF93E044014C
-:101E9000F0B2B3788B06B6000D788B7600788CE6BE
-:101EA000F40404788CF68082E490FBF6F090FBF565
-:101EB000E07D00FCED44CFFD121C5C123297221233
-:101EC0003214E5706449456F601590FF83E0540F4C
-:101ED0007D00D39570ED956F500512305D80031233
-:101EE000312D12329722123214E5706449456F6029
-:101EF00005123167800E90FF80E04408F090FF8368
-:101F0000E0547FF0123297221232148C54EC54F0C9
-:101F1000B41015756A357569FC756801E56A2403A6
-:101F2000F56AE5693400F569E4F557F556E556C3F9
-:101F300094015027E554540FFCAD6AAE69AF6812A6
-:101F40000E828C55EC60028012056AE56A7002050B
-:101F5000690557E5577002055680D2E554540F24A1
-:101F6000A1F8E654FEF6E554540F7F00FE7C1212F1
-:101F70003329E5551470097D007C09122547800737
-:101F8000AD577C001225471232972212321490FF6F
-:101F9000FCE04402F090FF00E030E71390FF83E0A4
-:101FA0004480F0436D8090FFFCE04401F08011908C
-:101FB000FF82E04408F0536D7F90FFFCE054FEF098
-:101FC00090FF81E04480F01225FA90FFFEE0440586
-:101FD000F090FFFCE054FDF0123297221232147C94
-:101FE000011233D778B1E64402F674FEFC04FD1208
-:101FF0001CC790FF5AE030E70280F7E4F54E754DBC
-:1020000010AC4EAD4DE54E154E7002154DEC4D60C9
-:102010000280EE438701123297221232147C0212A0
-:1020200032A378B1E654FDF61232972212321478B8
-:10203000B1E630E02C78B1E630E12678B1E6FCF587
-:102040008318E644F0FD121C5C90FFFCE04420F095
-:102050007C021233D778B1E654FDF6741A90FFFE75
-:10206000F078B1E6FCF58318E644F1FD121C5C1231
-:10207000329722756D0090FFFFE06003436D01759C
-:102080006E00E4F56CF56BE4F56F7570497484903F
-:10209000FF82F0748490FF80F0748090FF58F07499
-:1020A0008090FF5AF0AD46AF457E00EE24FE50030F
-:1020B00002213FE4EE75F007A4247FF582E434F8B2
-:1020C000F583E0FFE4EF5480FDE4EF540F14FFEDDF
-:1020D0006038E4EF75F008A42448F582E434FFF595
-:1020E000837490F0E4EF75F008A4244AF582E43498
-:1020F000FFF5837480F0E4EF75F008A4244EF582B8
-:10210000E434FFF5837480F08034E4EF75F008A4C4
-:102110002408F582E434FFF5837490F0E4EF75F061
-:1021200008A4240AF582E434FFF583E4F0E4EF75B3
-:10213000F008A4240EF582E434FFF583E4F00E02E7
-:1021400020A88D468E448F45747F90FFFDF07490DB
-:1021500090FFFCF0228C58EC24F65006E55824370A
-:10216000FC22E5582430FC22D2B0D2B1C2B41225F0
-:1021700044EC700302227F755C03AE5B7F00E55C7C
-:10218000155C6480247F5035EF2400F582E434FB35
-:10219000F583E0FE24FE501EEF7D00FCE4FB74742A
-:1021A000C39CFAEB9DFBEE7D00FCEAC39CED6480D2
-:1021B000CB64809B50028005EF2EFF80C18E5B8F29
-:1021C0005AE55C6480247F500302227FE55A248E06
-:1021D000500302227F855A5D755B00AE5AAF5B905B
-:1021E00036CAE493F55CE55C155C6480247F501886
-:1021F000EE2400F582E434FBF583E0FCEF9036CA70
-:10220000936C70040E0F80DE8E5A8F5BE55C6480E9
-:10221000247F406E755E017560E8755FFFE55D24A3
-:1022200002F55A755C07E55C334057AD60AE5FAFB1
-:102230005EE55CF5823395E0F5831201F5C4540F39
-:10224000FC122152E55A2400F582E434FBF583ECBC
-:10225000F0055A055AAD60AE5FAF5EE55CF58233BE
-:1022600095E0F5831201F5540FFC122152E55A2432
-:1022700000F582E434FBF583ECF0055A055A155C51
-:1022800080A4740290F851F090F86B79A37A367BB1
-:102290002778011203FE756A357569FC756801E4DB
-:1022A00090FF83F0748090FF81F0755902E55975B5
-:1022B000F007A4247FF582E434F8F583E07893F600
-:1022C000FC540F14FC7893ECF6E55975F007A42440
-:1022D00081F582E434F8F583E0789676FD0876E8B7
-:1022E000FC7893E675F008A42448F582E434FFF501
-:1022F00083E4F07893E675F008A4244FF582E43483
-:10230000FFF583ECF07896E6FF08E67E03CFC31373
-:10231000CF13DEF9FE7893E675F008A42449F58220
-:10232000E434FFF583EEF07893E675F008A4244AD0
-:10233000F582E434FFF5837480F07894ECF67D0048
-:102340007897E62CF618E63DF67896E6FD08E67CEA
-:1023500003CDC313CD13DCF9FC7893E675F008A424
-:10236000244DF582E434FFF583ECF07893E675F0C4
-:1023700008A4244EF582E434FFF583E4F07896E671
-:10238000FD08E6FC7893E6FF7E00EE24FE50030293
-:1023900024FEE4EE75F007A4247FF582E434F8F51A
-:1023A00083E0FFE4EF5480FAE4EF540F14FFE4EE0F
-:1023B00075F007A42481F582E434F8F583E078947D
-:1023C000F6E4EE1313548024F0F8E434FDF9E8FC4D
-:1023D000E9FD8A5AEA700302246BE4EF75F008A461
-:1023E0002448F582E434FFF583E4F07894E6FAE4D7
-:1023F000EF75F008A4244FF582E434FFF583EAF08A
-:10240000EDFBEC7A03CBC313CB13DAF9FAE4EF75E7
-:10241000F008A42449F582E434FFF583EAF07894C7
-:10242000E67B00FAEC2AFCED3BFDFBEC7A03CBC328
-:1024300013CB13DAF9FAE4EF75F008A4244DF58212
-:10244000E434FFF583EAF0E4EF75F008A4244AF5DC
-:1024500082E434FFF5837480F0E4EF75F008A4247F
-:102460004EF582E434FFF5837480F00224FAE4EF41
-:1024700075F008A42408F582E434FFF583E4F078CD
-:1024800094E6FAE4EF75F008A4240FF582E434FF33
-:10249000F583EAF0EDFBEC7A03CBC313CB13DAF947
-:1024A000FAE4EF75F008A42409F582E434FFF5831B
-:1024B000EAF07894E67B00FAEC2AFCED3BFDFBECBD
-:1024C0007A03CBC313CB13DAF9FAE4EF75F008A45F
-:1024D000240DF582E434FFF583EAF0E4EF75F008AB
-:1024E000A4240AF582E434FFF583E4F0E4EF75F008
-:1024F00008A4240EF582E434FFF583E4F00E0223F1
-:10250000878E597896EDF608ECF67893EFF6122060
-:1025100070228C26EC30E718E526540F1475F0086D
-:10252000A42448F582E434FFF583E054DFF08016FC
-:10253000E526540F1475F008A42408F582E434FF4E
-:10254000F583E054DFF0227C0022EC90FC37F08C25
-:1025500024ED2403F5257D00D39572ED957140039C
-:10256000857225E52524B75009752503740290FC72
-:1025700037F0AC2512315222E4F56CF56B12257E52
-:102580002290FC35E06573600E740490FC37F0E433
-:10259000F56B756C0380467D73E4FEFF79357AFC3C
-:1025A0007B0174057800120348E56C2403F56CE5A3
-:1025B0006B3400F56BE56CD39572E56B9571400655
-:1025C00085726C85716BD3E56C9448E56B94004023
-:1025D0000C740290FC37F0E4F56B756C03AC6C1274
-:1025E000315222EC90FC37F0E4F56CF56B8C32EC58
-:1025F000600512314380057C001231522290FF9316
-:10260000E04401F0B2B390FF04E0F54A90FF06E029
-:10261000FDA3E0ED7D00FC7D00FC90FF06E0FFA344
-:10262000E07E00FFE4FEEC4EFCED4FFDC3EC944871
-:10263000ED9400502290FF06E0FDA3E0ED7D00FC4C
-:102640007D00FC90FF06E0FFA3E07E00FFE4FEECCF
-:102650004EFCED4FFD8004E4FD7C488C728D719042
-:10266000FF02E0FDA3E0ED7D00FC7D00FC90FF0299
-:10267000E0FFA3E07E00FFE4FEEC4EF54CED4FF5ED
-:102680004B756A357569FC7568017D357EFC7F0187
-:102690007973E4FAFB74057800120348754900E584
-:1026A0004924FE4019AD6AAE69AF68E4120318050B
-:1026B000490DED70010E8D6A8E698F6880E1756A33
-:1026C000357569FC75680178B3E614184660030235
-:1026D00027927890E6FF08E6FE788EE4F608F6C3C7
-:1026E000788FE6940218E69400501DE4FEFFC3EED6
-:1026F00094E8EF940350070EBE00010F80F0788F2E
-:1027000006E61870010680D77890EFF608EEF6D24C
-:10271000B47890E6FF08E6FE788EE4F608F6C37813
-:102720008FE6941E18E69400501DE4FEFFC3EE945D
-:10273000E8EF940350070EBE00010F80F0788F067B
-:10274000E61870010680D77890EFF608EEF6C2B171
-:102750007890E6FF08E6FE788EE4F608F6C3788FF8
-:10276000E6943A18E69400501DE4FEFFC3EE94E8A8
-:10277000EF940350070EBE00010F80F0788F06E63D
-:102780001870010680D77890EFF608EEF6D2B1788F
-:10279000B2E4F608F690FF00E05460B40002800650
-:1027A000D35003022D9BE54A540FF549E54A548066
-:1027B000A2E0920290FF01E012018A000B2D962701
-:1027C000D428F22D9629FE2D962AE12B152C7C2C4F
-:1027D0007F2CBF2D3F2D6DE56D30E70EE54C454B51
-:1027E0007008E572640245716003022D9890FF0045
-:1027F000E0541FB400028003D34029E54A6003027D
-:1028000028EFAD6AAE69AF68740112031878B1E6BB
-:1028100030E00BAD6AAE69AF6874021203187C0237
-:1028200012315222B401028003D3401BE56D20E136
-:1028300007E54A60030228EFE54A24FE5003022818
-:10284000EF7C0212315222B402028006D3500302FE
-:1028500028EDE56D20E10DE54A6009E54A648060F8
-:10286000030228EFAC4A1231D940030228EFE549B0
-:10287000702530021190FF80E05408AD6AAE69AF58
-:1028800068120318800F90FF82E05408AD6AAE69A9
-:10289000AF68120318803D154930021DE54975F0F7
-:1028A00008A42448F582E434FFF583E05408AD6AB7
-:1028B000AE69AF68120318801BE54975F008A424BF
-:1028C00008F582E434FFF583E05408AD6AAE69AFE1
-:1028D00068120318AD6AAE69AF681201EF600BAD04
-:1028E0006AAE69AF6874011203187C021231522279
-:1028F0008000022D98E56D20E706E57245716003C2
-:10290000022D9890FF00E0541FB400028003D340D2
-:102910001AE54C14454B7004E54A60030229FB7824
-:10292000B1E654FEF67C0012315222B4010280035B
-:10293000D3402AE56D20E108E56D20E0030229FB84
-:10294000E56D30E004E54A700BE56D30E109E54ADC
-:1029500024FE50030229FB7C0012315222B40202F1
-:102960008006D350030229F9E54C454B6003022948
-:10297000FBAC4A1231D940030229FBE56D20E10787
-:10298000E56D20E0028077E56D30E006E549600204
-:10299000806CE549700F90FF82E054F7F090FF8063
-:1029A000E054F7F022E549B401028003D340097DE9
-:1029B000017C03120F148011B402028003D340097A
-:1029C0007D017C04120F1480001549300215E54981
-:1029D00075F008A42448F582E434FFF583E054F749
-:1029E000F08013E54975F008A42408F582E434FF6B
-:1029F000F583E054F7F07C00123152228000022D62
-:102A000098E56D20E706E57245716003022D989008
-:102A1000FF00E0541FB400028003D3401AE54C14B9
-:102A2000454B7004E54A6003022ADE78B1E64401B2
-:102A3000F67C0012315222B401028003D34029E512
-:102A40006D20E108E56D20E003022ADEE56D30E04F
-:102A500004E549700BE56D30E108E54924FE5002BC
-:102A6000807F7C0012315222B402028003D3406F77
-:102A7000E54C454B60028069AC4A1231D940028076
-:102A800060E56D20E107E56D20E0028054E54970C6
-:102A90001430020990FF80E04408F0800790FF8224
-:102AA000E04408F022E56D30E1331549300215E5C8
-:102AB0004975F008A42448F582E434FFF583E04426
-:102AC00008F08013E54975F008A42408F582E43481
-:102AD000FFF583E04408F07C00123152228002802E
-:102AE00000022D98E56D20E712E5724571700CE546
-:102AF0004A700890FF00E0541F6003022D98E54CD7
-:102B000090FFFFF090FFFFE06005436D01800353ED
-:102B10006DFE7C0012315222E56D30E70EE5724504
-:102B200071600890FF00E0541F6003022D98AD4BC8
-:102B3000E54CED7D00FC7D00FCBD00028003022C15
-:102B400077B401028003D34032E54A7005E54CFCBE
-:102B50006003022C79756A407569F8756801D3E5E0
-:102B6000729412E57194004006E4FD7C128004AC7E
-:102B700072AD718C708D6F12316722B402028003C6
-:102B8000D34059E54A6003022C79E54CFC70277567
-:102B90006A527569F8756801D3E5729419E5719404
-:102BA000004006E4FD7C198004AC72AD718C708D20
-:102BB0006F1231678025756A6B7569F8756801D386
-:102BC000E5729427E57194004006E4FD7C278004BB
-:102BD000AC72AD718C708D6F12316722B4030280BC
-:102BE00006D35003022C77E54CF549700F90FF0493
-:102BF000E0FDA3E04D6003022C79801890FB02E019
-:102C0000FDA3E0FC90FF05E06C700790FF04E06D11
-:102C100060028068E4F570F56F7F00E54914C549EE
-:102C2000600FEF2400F582E434FBF583E02FFF8092
-:102C3000EA8F4AE54A2400F582E434FBF583E07D1F
-:102C400000D39572ED95714006AC72AD71800FE5C1
-:102C50004A2400F582E434FBF583E07D00FC8C70AF
-:102C60008D6FE54A2400FCE434FBFDFEECFD7F01A2
-:102C70008D6A8E698F68123167228000022D98025A
-:102C80002D98E56D30E719E5721445717012E54A2B
-:102C9000700EE54C454B700890FF00E0541F600338
-:102CA000022D98E56D20E008E56D20E103022D98E6
-:102CB000756A6EE4F569F568E4F56F04F570123134
-:102CC0006722E56D20E727E57245717021E54A70BE
-:102CD0001DE54C6402454B600DE54C14454B600608
-:102CE000E54C454B700890FF00E0541F6003022D37
-:102CF00098E56D20E008E56D20E103022D98854CF4
-:102D00006EE56E7010436D01536DFDD2B078B2E484
-:102D1000F608F68027E56E64026007E56E1460022F
-:102D20008079536DFE436D02E56E64026005E56EC9
-:102D300014700978B2E4F60804F6C2B07C001231CF
-:102D40005222E56D30E71AE5721445717013E54AB9
-:102D5000700FE54C454B700990FF00E0541F146064
-:102D6000028038E56D20E10280317C01123152226F
-:102D7000E56D20E715E5724571700FE54C454B7028
-:102D80000990FF00E0541F146002800FE56D20E100
-:102D90000280087C00123152228000023059B44077
-:102DA000028006D3500302304F90FF01E090FC35C3
-:102DB000F0E54A90FC36F0E490FC37F0E56A240335
-:102DC000F56AE5693400F569AD4BE54C856A8285A5
-:102DD0006983CDF0A3CDF090FF01E01201C02E0673
-:102DE000012E2C022E56032E80042ECE052F0B060C
-:102DF0002F31072F57082F83092FA90B2FCF0C2F07
-:102E0000DE802FDE810000303CE56D20E7067C058A
-:102E10001225E0227D527E367F0279387AFC7B01D2
-:102E2000740878001203487D087C0012254722E5CB
-:102E30006D20E7067C051225E022E54AB403004038
-:102E400010B40500500BE54A7F00FE7C10123329B8
-:102E5000227D007C0712254722E56D20E7067C05D0
-:102E60001225E022E54AB403004010B40500500BDF
-:102E7000E54A7F00FE7C11123329227D007C071277
-:102E8000254722E56D20E7067C051225E022E54A6C
-:102E9000B405028003D3400AE4FF04FE7C0A123327
-:102EA0002922B401028003D3400AE4FF04FE7C0817
-:102EB00012332922B403004010B40500500BE54A38
-:102EC0007F00FE7C13123329227D007C07122547E8
-:102ED00022E56D20E734D3E5729448E57194005003
-:102EE00006E572457170067C021225E022E54AB4BF
-:102EF0000103B3400BC3B403004009B406005004FF
-:102F00001231FF227C071225E02212257E22E56D78
-:102F100020E71DE54AB403004010B40500500BE55E
-:102F20004A7F00FE7C16123329227C071225E022FC
-:102F300012257E22E56D20E71DE54AB4030040100E
-:102F4000B40500500BE54A7F00FE7C19123329229C
-:102F50007C071225E02212257E22E56D20E72374EE
-:102F60008190FF93F0E54AB403004010B40500508F
-:102F70000BE54A7F00FE7C17123329227C071225BD
-:102F8000E02212257E22E56D20E71DE54AB403000C
-:102F90004010B40500500BE54A7F00FE7C18123348
-:102FA00029227C071225E02212257E22E56D20E7EA
-:102FB0001DE54AB403004010B40500500BE54A7FFC
-:102FC00000FE7C15123329227C071225E0221225EF
-:102FD0007E22E56D20E7067C071225E02212257E81
-:102FE00022E56D30E72090FF00E0541F701090FF45
-:102FF00001E0B48005122575800312257E227D0034
-:103000007C051225472290FF00E0541F60067C05D6
-:103010001225E022D3E5729448E5719400500BC369
-:10302000E5729407E571940050067C031225E022B6
-:10303000E54AB405041231FF227C071225E022E59F
-:103040006D30E7087D007C05122547227C0512259E
-:10305000E022B420028003D34000800012312D22F0
-:1030600075430090FF83E0540FD395434024E5431C
-:1030700024F0F582E434FEF583E0AD6AAE69AF6812
-:1030800012031805430DED70010E8D6A8E698F686D
-:1030900080D1E5437D00FCC3E5709CF570E56F9D34
-:1030A000F56FE570456F6006E490FF83F02290FFB6
-:1030B00082E04408F0E4F56F75704990FC35E0B4A7
-:1030C00005028003D3404090FC36E0F543B405028E
-:1030D0008003D3400AE4FF04FE7C0B12332922B4A0
-:1030E00001028003D3400AE4FF04FE7C0912332965
-:1030F00022B403004010B40500500BE5437F00FEEE
-:103100007C141233292222B480004023B482005060
-:103110001E7C357DFC1217A77D008C6C8D6B90FC9E
-:1031200037E0600512312D80057C001231522222D9
-:1031300090FF83E0547FF090FF82E04408F090FF1E
-:1031400080E04408F02290FF82E04408F090FF8085
-:10315000E04408F0228C237D008C708D6F756A35F9
-:103160007569FC7568011231672290FF83E0547F16
-:10317000F0E5706449456F700122C3E5709408E57D
-:103180006F94004015752108E5217D00FCC3E570B2
-:103190009CF570E56F9DF56F8009857021E4F56FF2
-:1031A000757049752200E522C395215026AD6AAE9F
-:1031B00069AF681201EFFCE52224F8F582E434FEE1
-:1031C000F583ECF005220DED70010E8D6A8E698F8E
-:1031D0006880D3E521547F90FF81F0228C487F00E6
-:1031E000EF24FD4019E4EF75F007A4247FF582E495
-:1031F00034F8F583E065487002D3220F80E28F47F0
-:10320000C32285727085716F90FF82E054F7F09051
-:10321000FF83E0547FF022C000C001C002C006C09E
-:1032200007E5782408F8860653067F7CFF1232896A
-:103230007C007D00E57B6046FF90FD95E0547F6E4D
-:10324000700FC083C082A3E0FDA3E0FCA3157B80C8
-:1032500007A3A3A3DFE68026DF06D082D083801EEB
-:10326000E0F8A3E0F9A3E0FAD082D083E8F0A3E984
-:10327000F0A3EAF0A3C083C082A3A3A380DA123331
-:1032800022D007D006D002D001D0002285A87A75BE
-:10329000A888EC70027C3F8C7922E5782408F876C7
-:1032A0000012337680FBC000C001C002C006C00718
-:1032B000AE047CFF123289E57B6042FF90FD95E011
-:1032C000547F6E700BC083C082A3A3A3157B8007BD
-:1032D000A3A3A3DFEA8026DF06D082D08380D8E0D4
-:1032E000F8A3E0F9A3E0FAD082D083E8F0A3E9F0F4
-:1032F000A3EAF0A3C083C082A3A3A380DA7808085E
-:103300007918097C01E6547F6E700676007700809C
-:103310000608090CBC08EE123322D007D006D002F2
-:10332000D001D00022757900857AA822C0F0C08231
-:10333000C083C3E57B24E8500512337680F4EC604B
-:1033400031903651E493C39C4028C0047CFF123274
-:1033500089D004430480E57B75F003A42495F582AD
-:10336000E434FDF583ECF0EFA3F0EEA3F0057B125F
-:103370003322D083D082D0F022C0047C20D28CD2E1
-:103380008DD504FDD0042275A80075880075B8009D
-:1033900075F00075D000E4F8900000F608B800FB66
-:1033A000020000C3ED940250047D037CE8ECF4FCC1
-:1033B000EDF4FD0CBC00010D8C7F8D7E22C3EC94DE
-:1033C000BCED940250047D077CD0ECF4FCEDF4FDE0
-:1033D0000CBC00010D8C7D8D7C22EC700122C000A4
-:1033E000E5782418F8A604E5782408F8C6547FF692
-:1033F000E630E703D0002212337680F4C28C857C5D
-:103400008C857D8AD28CC0E0C0D0C0F0C082C083E1
-:10341000C000C001C002C003C004C005C006C00790
-:10342000121AFAE5782408F8E66024E5782410F802
-:10343000A681E57875F021A4248DF582E434FCF5AD
-:103440008378B4E58104C398F9E6F008A3D9FA7447
-:10345000082578F8057808E65480700CE578B407FC
-:10346000F3780875780080EFE5782410F88681E518
-:103470007875F021A4248DF582E434FCF58378B4CA
-:10348000E58104C398F9E0F608A3D9FAD007D0067D
-:10349000D005D004D003D002D001D000D083D08298
-:1034A000D0F0D0D0D0E032C0E0C0D0C000C001C069
-:1034B00002C28E857E8D857F8BD28E781979097AAE
-:1034C00007E77004A600800BE6600816E67004E7C4
-:1034D0004480F70809DAEAE579601314F579700E8B
-:1034E000E5782408F87600123322D28CD28DD002EF
-:1034F000D001D000D0D0D0E0327581B3742A90FFD3
-:1035000093F0757F30757EF8757D60757CF01205DF
-:10351000411235AA12175D90FF93E04401F0B2B357
-:103520001235D412338480DA22C0007C01EC2408E6
-:10353000F8E660090CBC08F512337680EED0002264
-:10354000C0F0C082C083C000C006C007ED2410F8E0
-:1035500076C2ED75F021A4248DF582E434FCF58368
-:10356000C082C083A3A3E4780DF0A3D8FCEC547F01
-:1035700075F002A4241DF582E5F03436F583E4935A
-:10358000FE740193F5828E83E493FE740193FFD061
-:1035900083D082EFF0A3EEF0ED2408F8EC4480F63F
-:1035A000D007D006D000D083D082D0F0227578002A
-:1035B000757B007A0879187808760077000809DAB0
-:1035C000F8E478087480447FF674014410F5897536
-:1035D000B808D2ABD2A9227581B3D28ED28CD2AF29
-:1035E000E57B6032FF90FD95E05480602478087997
-:1035F00008E0547FFA7B00E6547FB502027BFF08A7
-:10360000D9F5EB700CEAF0123526AD04AC02123598
-:103610003DA3A3A3DFD212337680C57C017D0022B7
-:10362000050004F404F804EC04E804E404F004FCE9
-:1036300004A804AC04D804DC04A404A404A404E096
-:1036400004C004B804BC04B404CC04C804C404D04A
-:1036500004D404B0190103002200480200480E30CF
-:103660001420C81AD0180A0C050602030102000132
-:10367000CE0181010000C000800060003000180011
-:1036800010000800040002000100081828380C058A
-:10369000100A0200000000000301100A02000000EE
-:1036A0000000FBE0FBF209022700010200A0FA097A
-:1036B00004000003FF00000007058102400000072E
-:1036C00005010240000007058303020001220354A4
-:1036D0000055005300420033003400310030002018
-:1036E00000200020002000200020002000200000FA
-:0336F000000000D7
-:00000001FF
diff --git a/firmware/mts_gsm.fw.ihex b/firmware/mts_gsm.fw.ihex
deleted file mode 100644
index f6ad0cbd30cb..000000000000
--- a/firmware/mts_gsm.fw.ihex
+++ /dev/null
@@ -1,867 +0,0 @@
-:1000000014360002001E021AF9FFFFFFFFFF023341
-:100010001DFFFFFFFFFFFFFFFFFFFFFFFFFF02339B
-:10002000C87581CE90FDE88583A012353CEC4D600B
-:100030007378AB8003760018B89CFA787F800376DB
-:100040000018B865FA78208003760018B820FA788E
-:10005000208003760018B81FFA90FDDDAE83AF82D2
-:1000600090FBF81200AA6005E4F0A380F690FDE88A
-:10007000A88290FDE8A982E8696005E4F20880F7AB
-:100080009001081200B390010C1200B390011012FD
-:1000900000B39001141200D190011A1200D1900106
-:1000A000201200D175D00012341A020126EF6582A9
-:1000B0007003EE658322E493F8740193F97402935C
-:1000C000FE740393F5828E83E869700122E493F64F
-:1000D000A30880F4E493FC740193FD740293FE740E
-:1000E0000393FF740493F8740593F58288831200D8
-:1000F000AA700122E493A3A883A9828C838D82F045
-:10010000A3AC83AD828883898280E32121049B8014
-:1001100080049BACAE049BFDE8049D049DFBF304AE
-:10012000A2049DFBF30502050280FED0F030F00929
-:1001300020F303F68010F7800D30F10920F303F26D
-:100140008004F38001F020F404FCD0E0CC22CCC089
-:10015000E0120163020154BC0005D0F0ACF022C3F0
-:1001600013DCFC02012ABF0009ED258275F001F8BD
-:10017000E622BF010FED2582F582EE3583F583750A
-:10018000F004E022ED258275F002F8E222D083D05F
-:1001900082F5F0C3E493A3C5F095F0C0E0C3D0F0BE
-:1001A000E493A395F04012A3A3C3E5F033500205F6
-:1001B000832582F58250020583740193C0E0E493A5
-:1001C000C0E022D083D082F5F0E4937009740193EB
-:1001D0007004A3A3800C74029365F06005A3A3A32D
-:1001E00080E7740193C0E0E493C0E022120264024D
-:1001F00001FB1202B80201FB1202DC0201FB30E03B
-:100200000720E302E622E72230E10720E302E222B0
-:10021000E32230E202E022E493221202DC02022313
-:100220001202B8020223ABF012022DCBC5F0CB2292
-:1002300030E01020E306E6F5F008E622E7F5F009E5
-:10024000E7192230E11020E306E2F5F008E222E3AC
-:10025000F5F009E3192230E206E0F5F0A3E022E42C
-:1002600093F5F074019322BB0003740922BB0107CC
-:1002700089828A83740422BB020789828A8374106C
-:1002800022740A22020284BB0007E92582F8740165
-:1002900022BB010DE92582F582EA3583F5837404DA
-:1002A00022BB020DE92582F582EA3583F5837410BD
-:1002B00022E92582F87402220202B8BF0005EDF897
-:1002C000740122BF01078D828E83740422BF02074E
-:1002D0008D828E83741022EDF87402220202DCBF3C
-:1002E0000007ED2582F8740122BF010DED2582F58E
-:1002F00082EE3583F583740422BF020DED2582F56D
-:1003000082EE3583F583741022ED2582F874022283
-:10031000020310C0E0120264020328C0E01202B817
-:10032000020328C0E01202DC02032830E00B20E3C5
-:1003300004D0E0F622D0E0F72230E10B20E304D035
-:10034000E0F222D0E0F322D0E0F022C9CDC9CACE3B
-:10035000CACBCFCB12035BEDF9EEFAEFFB22BB0069
-:100360002FBF000AFAEDF8E7F60809DAFA22BF0112
-:10037000128D828E83F802037809A3E7F0D8FA225F
-:10038000020383FAEDF8E7F20809DAFA2202038D94
-:10039000BB014DBF001489828A83F9EDF802039FE7
-:1003A00008A3E0F6D9FA220203B0BF01228D828EA3
-:1003B00083FB08C9C582C9CAC583CAE0A3C9C5826F
-:1003C000C9CAC583CAF0A3DBEAD8E8220203D38DE9
-:1003D000828E83F9EDF8E0F208A3D9FA220203DD58
-:1003E000BB024DBF001289828A83F9EDF80203EF48
-:1003F00008A3E493F6D9F922BF01238D828E83FBF3
-:1004000008C9C582C9CAC583CAE493A3C9C582C93C
-:10041000CAC583CAF0A3DBE9D8E722020422898295
-:100420008A83F9EDF8E493F208A3D9F922020433A0
-:10043000BF000DFAEDF8E3F60809DAFA2202043DEE
-:10044000BF01128D828E83F802044A09A3E3F0D81B
-:10045000FA22020455FAEDF8E3F20809DAFA220268
-:10046000045FE6FB08E6FA08E6F904F618700106F0
-:1004700022E6FF08E6FE08E6FD22EFF0A3EEF0A379
-:10048000EDF022EBF0A3EAF0A3E9F022E0FFA3E015
-:10049000FEA3E0FD22E0FBA3E0FAA3E0F9220000C6
-:1004A00000000000000502006105710026059800AB
-:1004B000330A0900610A750066154400610CF900F1
-:1004C0006109A9006109E000610DC000610BF10044
-:1004D000610A1C00610A510061173C0033174F008C
-:1004E000341E1400431EBF0044202C0044201A0078
-:1004F000471EE600471F8B004D1FDC004F1F080002
-:100500005832A800617CCC7DFF121CC52290FFFCF4
-:10051000E020E72DC2AFAE59AF58755A20E55A1406
-:10052000C55A6019E4FE7F05EE4FCE24FFCECF34CE
-:10053000FFCF6007E490FF92F080ED80E08E598F4E
-:10054000582212050A7D077CB71232C47D0F7C6EDB
-:100550001232DE789D7A06E4F608DAFC7A06120595
-:10056000CD7C03120E55122168E4FEFF7C0F12327F
-:100570004DD2A822123138E490FC38F090FFF0E020
-:1005800030E408740190FC39F08005E490FC39F007
-:100590007D0A7C001225461231BB2212313890FCB4
-:1005A00039E014700E90FFF0E04410F07C0012254A
-:1005B000DF801990FC39E0700E90FFF0E054EFF00E
-:1005C0007C001225DF80057C171225DF1231BB224B
-:1005D00090FFF0E054ABF090FFF0E04420F0228C6C
-:1005E000378D367882EDF608ECF6EDFEECFD7F01F6
-:1005F0009000051201F57880F67882E6FD08E6FCA9
-:10060000EDFEECFD7F019000041201F5540FFC7D1E
-:100610008012176D7880E6700DAD3AAE39AF38E4D0
-:100620001203187C082290FFF0E054FEF090FFF0D7
-:10063000E054FDF0801E7882E6FD08E6FCEDFEEC5D
-:10064000FD7F0190000812021725E0440190FFF39E
-:10065000F00206D97882E6FD08E6FCEDFEECFD7FAF
-:100660000190000612021754FE90FFF3F0802B78E1
-:1006700082E6FD08E6FCEDFEECFD7F01900008122D
-:100680000217FAEB90FFF1F01208C8400DAD3AAE38
-:1006900039AF38E41203187C18227882E6FD08E6A8
-:1006A000FCEDFEECFD7F0190000812021790FFF1B7
-:1006B000F01208C8400DAD3AAE39AF38E412031855
-:1006C0007C18227882E6FD08E6FCEDFEECFD7F0159
-:1006D000900006120217440190FFF3F07883E6249D
-:1006E00003F618E63400F67880E624FE500990FF01
-:1006F000F0E054FDF0800790FFF0E04402F0E49059
-:10070000FFF1F0788176007880E624FFFCE434FF86
-:10071000FD7881E67F00FEECD39EEF6480CD64809F
-:100720009D402F1208AD400F7881E6AD3AAE39AF4B
-:10073000381203187C182290FFF2E0FC788286833E
-:10074000088682ECF0788106A37882A68308A682C8
-:1007500080B51208AD400F7881E6AD3AAE39AF38BA
-:100760001203187C182290FFF2E0FC78828683083E
-:100770008682ECF07880E6AD3AAE39AF38120318D5
-:100780007C00228C378D367882EDF608ECF6EDFE93
-:10079000ECFD7F019000051201F57881F67882E684
-:1007A000FD08E6FCEDFEECFD7F019000041201F572
-:1007B000540FFC7D8112176D7881E670037C08224E
-:1007C00090FFF0E054FEF090FFF0E054FDF0801B4D
-:1007D0007882E6FD08E6FCEDFEECFD7F0190000866
-:1007E00012021725E090FFF3F0805B7882E6FD08A7
-:1007F000E6FCEDFEECFD7F0190000612021754FEB0
-:1008000090FFF3F080217882E6FD08E6FCEDFEEC37
-:10081000FD7F01900008120217FAEB90FFF1F01231
-:1008200008C840037C18227882E6FD08E6FCEDFE4D
-:10083000ECFD7F0190000812021790FFF1F0120802
-:10084000C840037C18227883E6240AF618E63400B0
-:10085000F6788076007881E624FFFCE434FFFD78AA
-:1008600080E67F00FEECD39EEF6480CD64809D40E7
-:100870002178828683088682E090FFF1F01208C812
-:1008800040037C1822788006788306E618700106FB
-:1008900080C390FFF0E04401F0788286830886826E
-:1008A000E090FFF1F01208C840037C18227C00227F
-:1008B00090FFF0E020E71290FFF0E030E50990FFB4
-:1008C000F0E04420F0C32280E7D32290FFF0E02044
-:1008D000E31290FFF0E030E50990FFF0E04420F0F3
-:1008E000C32280E7D3228C428D417C00ED54F0FD81
-:1008F000EC7003ED64307005753E038003753E04B3
-:10090000AC3E120F72758300858340E541540FF5AC
-:100910003FE5407004E53F64037035E53E24FD7516
-:10092000F00AA42402F582E434FCF583E030E60505
-:100930001210598019E53E249DF8E654FBF678A97B
-:10094000E62405F58218E63400F583740FF080592B
-:10095000E5407004E53F64047048E53E24FD75F011
-:100960000AA42402F582E434FCF583E030E507AC08
-:1009700042AD41121C5AE54230E21578ADE630E056
-:100980000F78ADE630E109E4FF04FE7C0412324D3D
-:1009900078A9E62406F58218E63400F583740FF092
-:1009A0008007E4FC7DEE121C5AC203221231381279
-:1009B0000F7278A9E62406F58218E63400F583E084
-:1009C00090FC38F078A9E62405F58218E63400F5A5
-:1009D00083E090FC39F0C2037D027C0012254612B0
-:1009E00031BB221231387895ECF6EC249DF8E630D4
-:1009F000E1077C131225DF800F90FC39E0FD78952C
-:100A0000E6FC1213EF1225DF1231BB2212313878C7
-:100A100095ECF67D00120F121225DF1231BB221267
-:100A200031387895ECF6EC249DF8E630E2077C133B
-:100A30001225DF801B7895E6249DF8E620E1077CEF
-:100A4000121225DF800A7895E6FC1214131225DFB6
-:100A50001231BB221231387895ECF6EC249DF8E681
-:100A600020E2077C111225DF800A7895E6FC12153A
-:100A7000141225DF1231BB221231387895ECF612B0
-:100A80000F7278A9E62409F58218E63400F583E0B0
-:100A900090FC3FF078A9E6240AF58218E63400F5C8
-:100AA00083E090FC40F078A9E62403F58218E63450
-:100AB00000F583E0FC78A9E62404F58218E634000A
-:100AC000F583E0F56278A9E62402F58218E63400A1
-:100AD000F583E0F5638C61E4EC333354017895F6EB
-:100AE0006008E56230E1037895067895E690FC4170
-:100AF000F078A7E62402F58218E63400F583E0FDDD
-:100B0000A3E0540CFCED54E68C65F564E56130E53A
-:100B100003436501E56220E50EE561547F7008E559
-:100B20006120E703436502E56130E303436510E5B7
-:100B30006130E203436520E561540360034365408F
-:100B4000E56130E103436580E56130E4034364011E
-:100B5000E56130E603436408E56220E40EE5615494
-:100B60007F7008E56120E7034364105365FB53641D
-:100B7000F9AD64E56590FC3ACDF0A3CDF0E56330C6
-:100B8000E30DE5635430C4540F90FC3DF08005E460
-:100B900090FC3DF0E563540390FC3CF0E5635404A5
-:100BA000C31390FC3EF090FC3CE0700E7D357EFC63
-:100BB0007F01740190000912014B78A9E62408F521
-:100BC0008218E63400F583E07C00FD78A9E624076E
-:100BD000F58218E63400F583E07F004CFEEF4D907F
-:100BE000FC38F0A3CEF0CEC2037D0A7C001225466D
-:100BF0001231BB221231387895ECF6789A760108DA
-:100C000076FC0876387897760C789A12046E120281
-:100C10001D7898CBF6CB08F67F00EF24EA401FE45E
-:100C2000EF25E090357EFD93CD04937899667003AF
-:100C3000ED186670067897760080030F80DC789652
-:100C4000EFF6789A12046E9000021202177898CB91
-:100C5000F6CB08F65404CB54064B60047897760B19
-:100C60007899E630E313789A12046E900005120129
-:100C7000F524FB50047897760D7899E654C07D00F2
-:100C800064C04D70047897760B789A12046E9000C9
-:100C9000041201F524FC50047897760F789A120418
-:100CA0006E9000061201F524FD50047897760E78B8
-:100CB0009A12046E9000091201F524FD50047897F1
-:100CC000760A7897E6702A7895E6FC120F72789A81
-:100CD00012046E78A7E6F978A6E6FA7B01740A7822
-:100CE00000120348C2037895E6FC1211157897ECC0
-:100CF000F67897E6FC1225DF1231BB2212313878E4
-:100D000095ECF6120F727895E624FD75F00AA4248E
-:100D100014F582E434FCF583AC82AD8378A6868337
-:100D2000088682ECF9EDFA7B0A78011203B0C2035F
-:100D30007895E6FC1211151231BB228D2B8C2AED11
-:100D400060407527017529487528FFE52A24FDFCB8
-:100D5000E434FFFDEC7C0325E0CD33CDDCF9FCE58C
-:100D6000292CF529E5283DF528AD29AE28AF2774B3
-:100D7000809000061203207480900002120320125B
-:100D80000FC5E52B14603B7527017529087528FFF1
-:100D9000E52A24FDFCE434FFFDEC7C0325E0CD33A3
-:100DA000CDDCF9FCE5292CF529E5283DF528AD2910
-:100DB000AE28AF27E4900006120320E49000021250
-:100DC0000320221231387895ECF6EC249DF8E630B9
-:100DD000E2097895E6FC121514D2007895E6FC122B
-:100DE0000F727896760090FC39E030E704789676BA
-:100DF000017896E6FD7895E6FC120D38C2033000C6
-:100E0000077895E6FC1214137C001225DF1231BB23
-:100E10002278A9E62404F58218E63400F583E0443C
-:100E200001F078A9E62404F58218E63400F583E0A1
-:100E300030E00280ED78A9E6240BF58218E6340054
-:100E4000F583E054F8F078A9E62402F58218E63438
-:100E500000F583E04480F022C2038C58120F7278B0
-:100E6000A6868308868279AF7A357B0A78011203D9
-:100E7000FE120E0EAC587D02120D38C203AC581291
-:100E80001115228D538E528F518C50120F72754F47
-:100E90000078A9E62405F58218E63400F583E02001
-:100EA000E41FE54F24F64019054FC2037C181232A7
-:100EB000FB90FF93E04401F0B2B3AC50120F72808C
-:100EC000D078A9E62405F58218E63400F583E02001
-:100ED000E405C2037C022278A9E62405F58218E61F
-:100EE0003400F583E0540F601678A9E62405F582F6
-:100EF00018E63400F583E0540FF0C2037C01227839
-:100F0000A88683088682E0AD53AE52AF5112031813
-:100F1000C2037C00228D318C30121514E531600F34
-:100F2000E530B4030A7C0112250E7C8112250EAC3B
-:100F300030120F72E531601A78AA8683088682E043
-:100F400054E7F0A3A3A3A3E054E7F0AC307D021272
-:100F50000D3878A6868308868279B97A357B0A7837
-:100F6000011203FEC203E530249DF8E654FDF6AC01
-:100F700030121115228C2630030512329A80F87C2B
-:100F80000A1231ADD203E52624FD78A3F670077866
-:100F9000AA76FF0876E078A3E67D007C0425E0CD04
-:100FA00033CDDCF9FC24A078A9F6ED34FF18F678EF
-:100FB000A3E675F00AA42400FCE434FCFD78A6ED59
-:100FC000F608ECF61232462278A9E62402F58218D9
-:100FD000E63400F583E030E72278A9E62402F582C2
-:100FE00018E63400F583E0547FF078A9E62402F592
-:100FF0008218E63400F583E04480F02278AA8683E4
-:10100000088682E0547FF0AD83E5822404FCE43D51
-:101010008C82F583E0547FF078A9E6240BF58218E2
-:10102000E63400F583E054F8F078ABE62401F5826D
-:1010300018E63400F583E04403F078ABE62405F5C8
-:101040008218E63400F583E04403F078A9E624052D
-:10105000F58218E63400F583740FF02278AA8683AF
-:10106000088682E0543FF0AD83E5822404FCE43D31
-:101070008C82F583E0543FF078A3E624A4F8E6FCE4
-:1010800078ABE62401F58218E63400F583ECF078BD
-:10109000A3E624A4F8E6FC78ABE62405F58218E67E
-:1010A0003400F583ECF078A9E6240BF58218E634D9
-:1010B00000F583E054FB4402F52678A7E62402F508
-:1010C0008218E63400F583E030E50343260178A971
-:1010D000E62405F58218E63400F583E030E00312DB
-:1010E0000FC5E526FC78A9E6240BF58218E6340046
-:1010F000F583ECF078A9E62405F58218E63400F5CE
-:1011000083740FF078AA8683088682E04480F0A377
-:10111000A3A3A3E04480F0228C2A120F7278A7E6E2
-:101120002408F58218E63400F583E0FC78A9E6246B
-:101130000AF58218E63400F583ECF078A7E6240778
-:10114000F58218E63400F583E0FC78A9E62409F579
-:101150008218E63400F583ECF078A6868308868250
-:10116000E0FDA3E0FCEDFE78A9E62408F58218E690
-:101170003400F583EEF0ECFE78A9E62407F582183A
-:10118000E63400F583EEF08C298D28C3EC9405ED50
-:10119000940C400575277C8033D3E5299401E5281C
-:1011A0009403400575273C8023D3E5299481E528E5
-:1011B000940140057527188013D3E5299460E5282C
-:1011C0009400400575270C8003752708AF27E4EFCE
-:1011D000547C4483FF8F27E527FC78ABE62401F598
-:1011E0008218E63400F583ECF0E527FC78ABE624C2
-:1011F00005F58218E63400F583ECF0E527FC78A3CA
-:10120000E624A4F8ECF678A9E62402F58218E63480
-:1012100000F583E0F52778A7E62402F58218E63486
-:1012200000F583A3E030E3175327C778A7E624052A
-:10123000F58218E63400F583E09035AA93422778CA
-:10124000A7E62402F58218E63400F583E030E705CE
-:1012500043274080035327BF5327FB78A7E6240684
-:10126000F58218E63400F583E06003432704532732
-:10127000FC78A7E62404F58218E63400F583E04202
-:1012800027432780E527FC78A9E62402F58218E6A3
-:101290003400F583ECF078A9E62404F58218E634EE
-:1012A00000F583E0F52778A7E62402F58218E634F6
-:1012B00000F583A3E030E1055327DF8003432720B7
-:1012C00078A7E62402F58218E63400F583E030E4DE
-:1012D000055327EF800343271078A7E62409F582FA
-:1012E00018E63400F583E0B40203432702E527FC47
-:1012F00078A9E62404F58218E63400F583ECF0784A
-:10130000A9E62403F58218E63400F583E0F5277892
-:10131000A7E62409F58218E63400F583E07005534A
-:10132000277F800343278078A7E62402F58218E60A
-:101330003400F583A3E030E00543272080035327E2
-:10134000DF78A7E62402F58218E63400F583E03062
-:10135000E30543274080035327BF78A7E62402F51F
-:101360008218E63400F583E030E00543271080035F
-:101370005327EF78A7E62402F58218E63400F583B8
-:10138000A3E030E40543270880035327F778A7E656
-:101390002402F58218E63400F583A3E030E5054326
-:1013A000270480035327FB78A7E62402F58218E67A
-:1013B0003400F583A3E030E605432701800353277B
-:1013C000FE78A7E62402F58218E63400F583A3E050
-:1013D00030E70543270280035327FDE527FC78A962
-:1013E000E62403F58218E63400F583ECF0C2037CB2
-:1013F00000228D278C26ED54031460037C1022E517
-:1014000027547C24FC40037C0B22E526249DF8E62F
-:101410004402F67C00228C30120F72E530249DF8D5
-:10142000E620E24FAC307D02120D38E53024FE4458
-:1014300028FC78AA8683088682ECF0AF83E58224B4
-:1014400004FEE43FFFEC8E828F83F07C038C2CE55E
-:101450002CFC78ABE62401F58218E63400F583EC29
-:10146000F0E52CFC78ABE62405F58218E63400F5AF
-:1014700083ECF0752D01752F48752EFFE53024FDA6
-:10148000FCE434FFFDEC7C0325E0CD33CDDCF9FC3E
-:10149000E52F2CF52FE52E3DF52E78ABE62404F54F
-:1014A0008218E63400F583E054E7F52CAD2FAE2E1C
-:1014B000AF2DE4900002120320E4900006120320F6
-:1014C0001201EF30E503432C10E52CFC78ABE62449
-:1014D00004F58218E63400F583ECF012105978A96F
-:1014E000E62406F58218E63400F583E0C203FCE545
-:1014F00030249DF8E64404F68C2CE530540FC45497
-:10150000F07E00FFEEEF44047D00FFEC4EFCED4F5B
-:10151000FD121CC57C00228C2F120F72120FF9785D
-:10152000AA8683088682E05408F0A3A3A3A3E0540C
-:1015300008F0AC2F7D02120D38C203E52F249DF870
-:10154000E654FBF67C00221231387896ECF6EC2457
-:101550009DF8E630E10A7D007C131225461231BB6E
-:101560007896E6249DF8E64401F67896E6FC120F9C
-:10157000727896E624FD75F00AA42414F582E4340A
-:10158000FCF58378A6E6FA08E6F97B0A78011203EF
-:10159000B078A6868308868279B97A357B0A780185
-:1015A0001203FE120FC5C2037896E6FC12111578DD
-:1015B00095ECF6EC600A7D007C081225461231BBE2
-:1015C0007896E6FC120F7278A9E62404F58218E6F4
-:1015D0003400F583E0441054DFFC78A9E62404F5D8
-:1015E0008218E63400F583ECF07895ECF6C2037CC3
-:1015F000C81232FB7896E6FC120F7278A9E6240432
-:10160000F58218E63400F583E054EFF0C2037CC89D
-:101610001232FB7896E6FC120F7278A9E62404F5E4
-:101620008218E63400F583E04410F0C2037CC8124F
-:1016300032FB7896E6FC120F7278A9E62404F58254
-:1016400018E63400F583E04420F0C2037CF0123247
-:10165000FB7896E6FC120F7278A9E62405F582184D
-:10166000E63400F583E030E415C2037896E64410D2
-:101670007F00FE7C0712324D1231BB02173B78A966
-:10168000E62404F58218E63400F583E054CFF0C276
-:10169000037CC81232FB7896E6FC120F7278A9E63A
-:1016A0002404F58218E63400F583E04430F0C203E8
-:1016B0007CF01232FB7896E6FC120F7278A9E624D1
-:1016C00005F58218E63400F583E030E414C20378AF
-:1016D00096E644107F00FE7C0712324D1231BB802B
-:1016E0005D78A9E62404F58218E63400F583E05419
-:1016F000EFF078A9E62404F58218E63400F583E0DB
-:1017000054DFF07896E624FD75F00AA42414F582DF
-:10171000E434FCF583AC82AD8378A68683088682A8
-:10172000ECF9EDFA7B0A78011203B0C2037896E671
-:10173000FC1211157D007C0B1225461231BB2212C2
-:101740003138E490FC39F07D027C001225461231DC
-:10175000BB221231387C001225DF1231BB22743CCF
-:1017600090FBE0F0743E90FBE0F0E490FC28F02267
-:101770008D358C34ECB401028003D340028028B450
-:1017800002028003D34008A835E625E0F68018B4AD
-:1017900004028003D3400AA835E625E025E0F68060
-:1017A00006A83576008000228C3C8D3BEDFEECFDDA
-:1017B0007F0175660675670090FC29120477120197
-:1017C000EFB480028006D3500302186E90FC2912F9
-:1017D00004899000031201F554F0B430028003D361
-:1017E000405F90FC29120489900008120217FAFD4C
-:1017F000EBFE7F0190FC2C120477EECD9035C3FCFC
-:10180000E493FF740193FEF9EFFA7B01EAFFE9FE2E
-:10181000ECC39EED9F40259035C5E493FD74019384
-:10182000FCEDFEECFD7F01EECDFC90FC2EE0D39CA8
-:1018300090FC2DE09D5005756680803312198C80D8
-:101840002EB460028003D3400BAC3CAD3B1207804A
-:101850008C66801BB41003B34010C3B42003B340A4
-:1018600009C3B440028003D34000756681800080C4
-:1018700075B481028003D3406B90FC2912048990D7
-:1018800000031201F554F0B430028003D3401D90E0
-:10189000FC29120489900008120217FAFDEBFE7F62
-:1018A0000190FC2F1204771218F68036B460028083
-:1018B00003D34013753A67E4F539F538AC3CAD3BDA
-:1018C0001205DC8C66801BB41003B34010C3B42037
-:1018D00003B34009C3B440028003D340007566815E
-:1018E000800080028000E566FC90FC29120489ECEF
-:1018F000900002120320AC672290FC291204899008
-:1019000000041201F5600474018001E4A2E0920178
-:1019100090FC29120489ED2403FD50010E90FC2C4B
-:1019200012047790FC291204899000051201F5F544
-:10193000679000041201F5540FFC7D6712176DE5E6
-:10194000677004756608227566007884760078846E
-:10195000E6C39567503890FC2F1204891201EFFC02
-:1019600090FC2C120489EC12031830010E90FC310B
-:10197000E004F090FC307003E004F078840690FC02
-:101980002EE004F090FC2D7003E004F080C0229063
-:10199000FC2AE0FDA3E0FCEDFEECFD7F01ED240A56
-:1019A000FD50010E90FC3212047790FC291204893C
-:1019B0009000041201F5540FB401028003D34017C4
-:1019C00090FC321204890DED70010E90FC2F120470
-:1019D0007778887601804EB402028003D340199054
-:1019E000FC32120489ED2402FD50010E90FC2F12EE
-:1019F000047778887602802DB404028003D34019DE
-:101A000090FC32120489ED2404FD50010E90FC2F4D
-:101A100012047778887604800CB400028003D340E7
-:101A2000007566082290FC291204899000051201B5
-:101A3000F5F567788576007885E6C39567400302FB
-:101A40001AF4788676007886E6C378889650769081
-:101A5000FC2C1204891201EFFC90FC321204921249
-:101A600001E9F45CFC1201E9F890FC2F120489E80A
-:101A7000C0E01201EFC8D0E0C8584CFC90FC2C121A
-:101A80000489EC1203187887ECF690FC31E004F03E
-:101A900090FC307003E004F009E970010A90FC3218
-:101AA00012048090FC291204899000041201F53080
-:101AB000E40E90FC2EE004F090FC2D7003E004F0A6
-:101AC00078860680817888E6FDE4FEFFEECDFC9006
-:101AD000FC31E02CF090FC30E03DF07888E6FDE44D
-:101AE000FEFFEECDFC90FC34E02CF090FC33E03DAA
-:101AF000F0788506021A347566002222C0E0C0F034
-:101B0000C082C083C0D0E8C0E0E9C0E0EAC0E0EB3A
-:101B1000C0E0ECC0E0EDC0E0EEC0E0EFC0E090FF60
-:101B200092E01201C01B47301B47321B56381B681E
-:101B30003A1B7A3E1B92441B86461B9E501BE0526A
-:101B40001BBF541C015600001C2290FF92E07F0036
-:101B5000FE7C0112324D021C32E4FF04FE7C0312B3
-:101B6000324D742090FFFEF0021C32E4FF04FE7C34
-:101B70000212324D744090FFFEF0021C32E4FF046A
-:101B8000FE7C0412324D021C32E4FF04FE7C05127E
-:101B9000324D021C32E4FF04FE7C0612324D021C60
-:101BA0003290FFA5E07D0090FBF8CDF0A3CDF09042
-:101BB000FBF9E0FCF58390FBF8E04433FD121CC513
-:101BC000807390FFB5E07D0090FBFACDF0A3CDF0DF
-:101BD00090FBFBE0FCF58390FBFAE04443FD121C14
-:101BE000C5805290FFA6E07D0090FBFCCDF0A3CD18
-:101BF000F090FBFDE0FCF58390FBFCE04434FD122B
-:101C00001CC5803190FFB6E07D0090FBFECDF0A3B7
-:101C1000CDF090FBFFE0FCF58390FBFEE04444FD3B
-:101C2000121CC5801090FF92E07D00FCED44AAFDDF
-:101C3000121CC58000E490FF92F0D0E0FFD0E0FEDF
-:101C4000D0E0FDD0E0FCD0E0FBD0E0FAD0E0F9D06D
-:101C5000E0F8D0D0D083D082D0F0D0E0320581053A
-:101C60008105810581A881181818EDF608ECF69019
-:101C7000FF5AE020E70280F790FF59E07D00A8813D
-:101C800018CDF6CD08F67D03A881E618FCE6CC2534
-:101C9000E0CC33CCDDF9CCF6CC08F6A88118E644CC
-:101CA000F8F6A881181818E6FD08E6FCA881188641
-:101CB00083088682EDF0A3ECF0740290FF5AF015D1
-:101CC0008115811581158122E5812405F581E4A81E
-:101CD0008118F6A88118181818EDF608ECF690FB94
-:101CE000F5E024F85003021DE6E4A8811818F6A8D0
-:101CF0008118E6FEA88118181818E6FD08E6FC7F92
-:101D000000EF24F8404DE4EF25E0247DF582E43433
-:101D1000FCF583E0FBA3E06C7003FAEB6D700974D3
-:101D200001A8811818F6802BE4EF25E0247DF582C8
-:101D3000E434FCF5837A00E054F0CCF8CCCDF9CD56
-:101D4000FB7800E954F0F9EA687002EB6970010E63
-:101D50000F80AEA88118EEF6A88118181818EDF6B5
-:101D600008ECF6A881EFF6A8811818E67079A8812A
-:101D700018E624F74071A88118181818E6540FA81F
-:101D800081F664046017A881E664036010A88118D6
-:101D9000181818E6FD08E6FC121C5A804A7C0A1244
-:101DA00031ADA88118181818E6FD08E6FC90FBF480
-:101DB000E025E0247DF582E434FCF583EDF0A3EC2E
-:101DC000F090FBF4E0FFE4EF045407FF90FBF4F025
-:101DD00090FBF5E004F012324690FBF6E07008E468
-:101DE000FEFF7C0F12324D802790FBF7E004F05489
-:101DF0003F701D90FBF7E044FE7D00FC90FBF4E09B
-:101E000025E0247DF582E434FCF583EDF0A3ECF0CD
-:101E1000E58124FBF58122788B7600788C7600743E
-:101E20000190FBF6F012313890FBF5E060577C0A28
-:101E30001231AD90FBF3E025E0247DF582E434FC23
-:101E4000F583E0FDA3E0FC90FBF3E025E0247DF5C5
-:101E500082E434FCF583E4F0A3F090FBF3E0FFE4CC
-:101E6000EF045407FF90FBF3F090FBF5E014F078DB
-:101E700089EDF608ECF61232467889E6FD08E6FCB4
-:101E80001208E380A312329A90FF93E04401F0B26B
-:101E9000B3788B06B60011788B7600788CE6F40464
-:101EA00004A2E092B4788CF6021E25E490FBF6F0D2
-:101EB00090FBF5E07D00FCED44CFFD121C5A123181
-:101EC000BB22123138E5706449456F601590FF837D
-:101ED000E0540F7D00D39570ED956F5005122F8162
-:101EE00080031230511231BB22123138E57064493F
-:101EF000456F600512308B800E90FF80E04408F043
-:101F000090FF83E0547FF01231BB221231388C54A1
-:101F1000EC54F0B41015756A357569FC756801E507
-:101F20006A2403F56AE5693400F569E4F557F55666
-:101F3000E556C394015027E554540FFCAD6AAE69D1
-:101F4000AF68120E808C55EC60028012056AE56A5B
-:101F5000700205690557E5577002055680D2E554B1
-:101F6000540F249DF8E654FEF6E554540F7F00FE0E
-:101F70007C1212324DE5551470097D007C09122542
-:101F8000468007AD577C001225461231BB22123124
-:101F90003890FFFCE04402F090FF00E030E713903F
-:101FA000FF83E04480F0436D8090FFFCE04401F04B
-:101FB000801190FF82E04408F0536D7F90FFFCE0B9
-:101FC00054FEF090FF81E04480F01225F990FFFE6E
-:101FD000E04405F090FFFCE054FDF01231BB22120A
-:101FE00031387C011232FB78ADE64402F674FEFC17
-:101FF00004FD121CC590FF5AE030E70280F7E4F5BB
-:102000004E754D10AC4EAD4DE54E154E7002154D52
-:10201000EC4D600280EE4387011231BB2212313851
-:102020007C021231C778ADE654FDF61231BB2212A4
-:10203000313878ADE630E02C78ADE630E12678AD89
-:10204000E6FCF58318E644F0FD121C5A90FFFCE014
-:102050004420F07C021232FB78ADE654FDF6741A8F
-:1020600090FFFEF078ADE6FCF58318E644F1FD1232
-:102070001C5A1231BB22756D0090FFFFE0600343D4
-:102080006D01756E00E4F56CF56BE4F56F757049E4
-:10209000748490FF82F0748490FF80F0748090FFCD
-:1020A00058F0748090FF5AF0AD46AF457E00EE24A4
-:1020B000FE5003022142E4EE75F007A4247FF5826E
-:1020C000E434F8F583E0FFE4EF5480FDE4EF540FCF
-:1020D00014FFED6038E4EF75F008A42448F582E4BD
-:1020E00034FFF5837490F0E4EF75F008A4244AF50A
-:1020F00082E434FFF5837480F0E4EF75F008A424E3
-:102100004EF582E434FFF5837480F08034E4EF759B
-:10211000F008A42408F582E434FFF5837490F0E419
-:10212000EF75F008A4240AF582E434FFF583E4F0A7
-:10213000E4EF75F008A4240EF582E434FFF583E49F
-:10214000F00E0220AB8D468E448F45747F90FFFDCC
-:10215000F0749090FFFCF0228C58EC24F65006E5C9
-:10216000582437FC22E5582430FC22D2B0122543F3
-:10217000EC700302227E755C03AE5B7F00E55C15AC
-:102180005C6480247F5035EF2400F582E434FBF555
-:1021900083E0FE24FE501EEF7D00FCE4FB7474C35C
-:1021A0009CFAEB9DFBEE7D00FCEAC39CED6480CBCA
-:1021B00064809B50028005EF2EFF80C18E5B8F5A9A
-:1021C000E55C6480247F500302227EE55A248E5011
-:1021D0000302227E855A5D755B00AE5AAF5B903577
-:1021E000EEE493F55CE55C155C6480247F5018EEAA
-:1021F0002400F582E434FBF583E0FCEF9035EE93A8
-:102200006C70040E0F80DE8E5A8F5BE55C64802458
-:102210007F406E755E017560E8755FFFE55D2402C5
-:10222000F55A755C07E55C334057AD60AE5FAF5E55
-:10223000E55CF5823395E0F5831201F5C4540FFC9B
-:10224000122155E55A2400F582E434FBF583ECF0C5
-:10225000055A055AAD60AE5FAF5EE55CF582339519
-:10226000E0F5831201F5540FFC122155E55A2400C4
-:10227000F582E434FBF583ECF0055A055A155C80D1
-:10228000A4740290F851F090F86B79C77A357B27E7
-:1022900078011203FE756A357569FC756801E49072
-:1022A000FF83F0748090FF81F0755902E55975F055
-:1022B00007A4247FF582E434F8F583E0788FF6FCF8
-:1022C000540F14FC788FECF6E55975F007A42481BF
-:1022D000F582E434F8F583E0789276FD0876E8FC40
-:1022E000788FE675F008A42448F582E434FFF5837E
-:1022F000E4F0788FE675F008A4244FF582E434FF0B
-:10230000F583ECF07892E6FF08E67E03CFC313CFA7
-:1023100013DEF9FE788FE675F008A42449F582E40F
-:1023200034FFF583EEF0788FE675F008A4244AF5C3
-:1023300082E434FFF5837480F07890ECF67D0078C9
-:1023400093E62CF618E63DF67892E6FD08E67C0367
-:10235000CDC313CD13DCF9FC788FE675F008A42407
-:102360004DF582E434FFF583ECF0788FE675F008E4
-:10237000A4244EF582E434FFF583E4F07892E6FD80
-:1023800008E6FC788FE6FF7E00EE24FE5003022470
-:10239000FDE4EE75F007A4247FF582E434F8F583BC
-:1023A000E0FFE4EF5480FAE4EF540F14FFE4EE751D
-:1023B000F007A42481F582E434F8F583E07890F600
-:1023C000E4EE1313548024F0F8E434FDF9E8FCE95A
-:1023D000FD8A5AEA700302246AE4EF75F008A42427
-:1023E00048F582E434FFF583E4F07890E6FAE4EF10
-:1023F00075F008A4244FF582E434FFF583EAF0ED8C
-:10240000FBEC7A03CBC313CB13DAF9FAE4EF75F0E4
-:1024100008A42449F582E434FFF583EAF07890E6D5
-:102420007B00FAEC2AFCED3BFDFBEC7A03CBC313FB
-:10243000CB13DAF9FAE4EF75F008A4244DF582E441
-:1024400034FFF583EAF0E4EF75F008A4244AF5823E
-:10245000E434FFF5837480F0E4EF75F008A4244EB3
-:10246000F582E434FFF5837480F00224F9E4EF751B
-:10247000F008A42408F582E434FFF583E4F07890B2
-:10248000E6FAE4EF75F008A4240FF582E434FFF5D2
-:1024900083EAF0EDFBEC7A03CBC313CB13DAF9FA42
-:1024A000E4EF75F008A42409F582E434FFF583EA2B
-:1024B000F07890E67B00FAEC2AFCED3BFDFBEC7A31
-:1024C00003CBC313CB13DAF9FAE4EF75F008A424B5
-:1024D0000DF582E434FFF583EAF0E4EF75F008A42B
-:1024E000240AF582E434FFF583E4F0E4EF75F008A4
-:1024F000A4240EF582E434FFF583E4F00E02238673
-:102500008E597892EDF608ECF6788FEFF61220737C
-:10251000228C26EC30E718E526540F1475F008A439
-:102520002448F582E434FFF583E054DFF08016E5BB
-:1025300026540F1475F008A42408F582E434FFF53E
-:1025400083E054DFF0227C0022EC90FC37F08C24F6
-:10255000ED2403F5257D00D39572ED95714003853B
-:102560007225E52524B75009752503740290FC37C0
-:10257000F0AC2512307622E4F56CF56B12257D2245
-:1025800090FC35E06573600E740490FC37F0E4F560
-:102590006B756C0380467D73E4FEFF79357AFC7BB6
-:1025A0000174057800120348E56C2403F56CE56BB3
-:1025B0003400F56BE56CD39572E56B95714006853B
-:1025C000726C85716BD3E56C9448E56B9400400C9C
-:1025D000740290FC37F0E4F56B756C03AC6C123050
-:1025E0007622EC90FC37F0E4F56CF56B8C32EC6005
-:1025F0000512306780057C001230762290FF93E050
-:102600004401F0B2B390FF04E0F54A90FF06E0FD0C
-:10261000A3E0ED7D00FC7D00FC90FF06E0FFA3E061
-:102620007E00FFE4FEEC4EFCED4FFDC3EC9448ED64
-:102630009400502290FF06E0FDA3E0ED7D00FC7DBC
-:1026400000FC90FF06E0FFA3E07E00FFE4FEEC4EFE
-:10265000FCED4FFD8004E4FD7C488C728D7190FF91
-:1026600002E0FDA3E0ED7D00FC7D00FC90FF02E0B8
-:10267000FFA3E07E00FFE4FEEC4EF54CED4FF54B82
-:10268000756A357569FC7568017D357EFC7F017959
-:1026900073E4FAFB74057800120348754900E549B4
-:1026A00024FE4019AD6AAE69AF68E412031805490B
-:1026B0000DED70010E8D6A8E698F6880E1756A3547
-:1026C0007569FC75680190FF00E05460B4000280F9
-:1026D00006D35003022CBFE54A540FF549E54A548E
-:1026E00080A2E0920290FF01E012018A000B2CBA56
-:1026F000270528232CBA292F2CBA2A122A462BADBB
-:102700002BB02BF02C632C91E56D30E70EE54C459A
-:102710004B7008E572640245716003022CBC90FFA7
-:1027200000E0541FB400028003D34029E54A60034F
-:10273000022820AD6AAE69AF68740112031878AD43
-:10274000E630E00BAD6AAE69AF6874021203187C24
-:102750000212307622B401028003D3401BE56D20C3
-:10276000E107E54A6003022820E54A24FE500302FF
-:1027700028207C0212307622B402028006D3500355
-:1027800002281EE56D20E10DE54A6009E54A6480F6
-:102790006003022820AC4A1230FD4003022820E5E5
-:1027A00049702530021190FF80E05408AD6AAE698F
-:1027B000AF68120318800F90FF82E05408AD6AAE34
-:1027C00069AF68120318803D154930021DE549754F
-:1027D000F008A42448F582E434FFF583E05408AD02
-:1027E0006AAE69AF68120318801BE54975F008A44A
-:1027F0002408F582E434FFF583E05408AD6AAE693D
-:10280000AF68120318AD6AAE69AF681201EF600BD2
-:10281000AD6AAE69AF6874011203187C021230769B
-:10282000228000022CBCE56D20E706E57245716050
-:1028300003022CBC90FF00E0541FB400028003D3BD
-:10284000401AE54C14454B7004E54A600302292CFC
-:1028500078ADE654FEF67C0012307622B401028098
-:1028600003D3402AE56D20E108E56D20E00302294D
-:102870002CE56D30E004E54A700BE56D30E109E5CB
-:102880004A24FE500302292C7C0012307622B40226
-:10289000028006D3500302292AE54C454B6003020F
-:1028A000292CAC4A1230FD400302292CE56D20E1B1
-:1028B00007E56D20E0028077E56D30E006E54960D0
-:1028C00002806CE549700F90FF82E054F7F090FFB2
-:1028D00080E054F7F022E549B401028003D34009B7
-:1028E0007D017C03120F128011B402028003D340D9
-:1028F000097D017C04120F1280001549300215E594
-:102900004975F008A42448F582E434FFF583E054C7
-:10291000F7F08013E54975F008A42408F582E43443
-:10292000FFF583E054F7F07C00123076228000023D
-:102930002CBCE56D20E706E57245716003022CBCF6
-:1029400090FF00E0541FB400028003D3401AE54C0E
-:1029500014454B7004E54A6003022A0F78ADE64443
-:1029600001F67C0012307622B401028003D34029A4
-:10297000E56D20E108E56D20E003022A0FE56D30EA
-:10298000E004E549700BE56D30E108E54924FE50AF
-:1029900002807F7C0012307622B402028003D34092
-:1029A0006FE54C454B60028069AC4A1230FD400235
-:1029B0008060E56D20E107E56D20E0028054E54987
-:1029C000701430020990FF80E04408F0800790FF07
-:1029D00082E04408F022E56D30E1331549300215FC
-:1029E000E54975F008A42448F582E434FFF583E056
-:1029F0004408F08013E54975F008A42408F582E442
-:102A000034FFF583E04408F07C0012307622800227
-:102A10008000022CBCE56D20E712E5724571700C58
-:102A2000E54A700890FF00E0541F6003022CBCE5EB
-:102A30004C90FFFFF090FFFFE06005436D018003C5
-:102A4000536DFE7C0012307622E56D30E70EE572A4
-:102A50004571600890FF00E0541F6003022CBCAD7C
-:102A60004BE54CED7D00FC7D00FCBD0002800302C7
-:102A70002BA8B401028003D34032E54A7005E54C2F
-:102A8000FC6003022BAA756A407569F8756801D36A
-:102A9000E5729412E57194004006E4FD7C12800416
-:102AA000AC72AD718C708D6F12308B22B4020280CB
-:102AB00003D34059E54A6003022BAAE54CFC70277A
-:102AC000756A527569F8756801D3E5729419E571F4
-:102AD00094004006E4FD7C198004AC72AD718C70EA
-:102AE0008D6F12308B8025756A6B7569F87568017A
-:102AF000D3E5729427E57194004006E4FD7C2780BD
-:102B000004AC72AD718C708D6F12308B22B40302E5
-:102B10008006D35003022BA8E54CF549700F90FFB7
-:102B200004E0FDA3E04D6003022BAA801890FB0295
-:102B3000E0FDA3E0FC90FF05E06C700790FF04E06F
-:102B40006D60028068E4F570F56F7F00E54914C59B
-:102B500049600FEF2400F582E434FBF583E02FFF9A
-:102B600080EA8F4AE54A2400F582E434FBF583E0ED
-:102B70007D00D39572ED95714006AC72AD71800FFA
-:102B8000E54A2400F582E434FBF583E07D00FC8C0B
-:102B9000708D6FE54A2400FCE434FBFDFEECFD7F04
-:102BA000018D6A8E698F6812308B228000022CBCE6
-:102BB000022CBCE56D30E719E5721445717012E521
-:102BC0004A700EE54C454B700890FF00E0541F60C2
-:102BD00003022CBCE56D20E008E56D20E103022C2A
-:102BE000BC756A6EE4F569F568E4F56F04F570127A
-:102BF000308B22E56D20E727E57245717021E54AAB
-:102C0000701DE54C6402454B600DE54C14454B606E
-:102C100006E54C454B700890FF00E0541F6003022E
-:102C20002CBCE56D20E008E56D20E103022CBC859D
-:102C30004C6EE56E700A436D01536DFDD2B080207D
-:102C4000E56E64026007E56E1460028072536DFEEB
-:102C5000436D02E56E64026005E56E147002C2B059
-:102C60007C0012307622E56D30E71AE5721445716A
-:102C70007013E54A700FE54C454B700990FF00E07A
-:102C8000541F1460028038E56D20E10280317C0120
-:102C900012307622E56D20E715E5724571700FE57B
-:102CA0004C454B700990FF00E0541F146002800FE8
-:102CB000E56D20E10280087C00123076228000025F
-:102CC0002F7DB440028006D35003022F7390FF0182
-:102CD000E090FC35F0E54A90FC36F0E490FC37F0EB
-:102CE000E56A2403F56AE5693400F569AD4BE54C06
-:102CF000856A82856983CDF0A3CDF090FF01E01253
-:102D000001C02D2A012D50022D7A032DA4042DF28D
-:102D1000052E2F062E55072E7B082EA7092ECD0B2C
-:102D20002EF30C2F02802F028100002F60E56D2012
-:102D3000E7067C051225DF227D767E357F02793815
-:102D40007AFC7B01740878001203487D087C00122D
-:102D5000254622E56D20E7067C051225DF22E54A9F
-:102D6000B403004010B40500500BE54A7F00FE7C20
-:102D70001012324D227D007C0712254622E56D207F
-:102D8000E7067C051225DF22E54AB403004010B4B3
-:102D90000500500BE54A7F00FE7C1112324D227D6A
-:102DA000007C0712254622E56D20E7067C051225EA
-:102DB000DF22E54AB405028003D3400AE4FF04FEA3
-:102DC0007C0A12324D22B401028003D3400AE4FF90
-:102DD00004FE7C0812324D22B403004010B40500FA
-:102DE000500BE54A7F00FE7C1312324D227D007CA1
-:102DF0000712254622E56D20E734D3E5729448E5B5
-:102E00007194005006E572457170067C021225DF50
-:102E100022E54AB40103B3400BC3B403004009B434
-:102E200006005004123123227C071225DF221225CE
-:102E30007D22E56D20E71DE54AB403004010B4058E
-:102E400000500BE54A7F00FE7C1612324D227C07B3
-:102E50001225DF2212257D22E56D20E71DE54AB40B
-:102E600003004010B40500500BE54A7F00FE7C19BA
-:102E700012324D227C071225DF2212257D22E56DBC
-:102E800020E723748190FF93F0E54AB403004010DB
-:102E9000B40500500BE54A7F00FE7C1712324D222C
-:102EA0007C071225DF2212257D22E56D20E71DE536
-:102EB0004AB403004010B40500500BE54A7F00FE01
-:102EC0007C1812324D227C071225DF2212257D222A
-:102ED000E56D20E71DE54AB403004010B40500503D
-:102EE0000BE54A7F00FE7C1512324D227C0712252D
-:102EF000DF2212257D22E56D20E7067C071225DF03
-:102F00002212257D22E56D30E72090FF00E0541F5E
-:102F1000701090FF01E0B480051225748003122523
-:102F20007D227D007C051225462290FF00E0541F83
-:102F300060067C051225DF22D3E5729448E5719482
-:102F400000500BC3E5729407E571940050067C03B2
-:102F50001225DF22E54AB40504123123227C071230
-:102F600025DF22E56D30E7087D007C05122546222D
-:102F70007C051225DF22B420028003D340008000AC
-:102F80001230512275430090FF83E0540FD39543D4
-:102F90004024E54324F0F582E434FEF583E0AD6A95
-:102FA000AE69AF6812031805430DED70010E8D6A0E
-:102FB0008E698F6880D1E5437D00FCC3E5709CF588
-:102FC00070E56F9DF56FE570456F6006E490FF83D7
-:102FD000F02290FF82E04408F0E4F56F75704990AC
-:102FE000FC35E0B405028003D3404090FC36E0F5A8
-:102FF00043B405028003D3400AE4FF04FE7C0B12B5
-:10300000324D22B401028003D3400AE4FF04FE7C67
-:103010000912324D22B403004010B40500500BE5F4
-:10302000437F00FE7C1412324D2222B480004023E4
-:10303000B48200501E7C357DFC1217A57D008C6C7F
-:103040008D6B90FC37E0600512305180057C0012DA
-:103050003076222290FF83E0547FF090FF82E0449C
-:1030600008F090FF80E04408F02290FF82E04408DE
-:10307000F090FF80E04408F0228C237D008C708D5E
-:103080006F756A357569FC75680112308B2290FF87
-:1030900083E0547FF0E5706449456F700122C3E519
-:1030A000709408E56F94004015752108E5217D00B6
-:1030B000FCC3E5709CF570E56F9DF56F8009857028
-:1030C00021E4F56F757049752200E522C395215002
-:1030D00026AD6AAE69AF681201EFFCE52224F8F56F
-:1030E00082E434FEF583ECF005220DED70010E8DC7
-:1030F0006A8E698F6880D3E521547F90FF81F0222A
-:103100008C487F00EF24FD4019E4EF75F007A424FC
-:103110007FF582E434F8F583E065487002D3220F2E
-:1031200080E28F47C32285727085716F90FF82E0C5
-:1031300054F7F090FF83E0547FF022C000C001C03C
-:1031400002C006C007E5782408F8860653067F7C8F
-:10315000FF1231AD7C007D00E57B6046FF90FD9560
-:10316000E0547F6E700FC083C082A3E0FDA3E0FC3B
-:10317000A3157B8007A3A3A3DFE68026DF06D0820A
-:10318000D083801EE0F8A3E0F9A3E0FAD082D083D8
-:10319000E8F0A3E9F0A3EAF0A3C083C082A3A3A34D
-:1031A00080DA123246D007D006D002D001D00022F9
-:1031B00085A87A75A888EC70027C3F8C7922E57826
-:1031C0002408F8760012329A80FBC000C001C002C9
-:1031D000C006C007AE047CFF1231ADE57B6042FF44
-:1031E00090FD95E0547F6E700BC083C082A3A3A3B3
-:1031F000157B8007A3A3A3DFEA8026DF06D082D059
-:103200008380D8E0F8A3E0F9A3E0FAD082D083E885
-:10321000F0A3E9F0A3EAF0A3C083C082A3A3A38034
-:10322000DA7808087918097C01E6547F6E70067612
-:10323000007700800608090CBC08EE123246D00761
-:10324000D006D002D001D00022757900857AA8225C
-:10325000C0F0C082C083C3E57B24E8500512329AD7
-:1032600080F4EC6031903575E493C39C4028C00431
-:103270007CFF1231ADD004430480E57B75F003A4DC
-:103280002495F582E434FDF583ECF0EFA3F0EEA392
-:10329000F0057B123246D083D082D0F022C0047C6D
-:1032A00020D28CD28DD504FDD0042275A80075885B
-:1032B0000075B80075F00075D000E4F8900000F6D5
-:1032C00008B800FB020000C3ED940250047D037CAB
-:1032D000E8ECF4FCEDF4FD0CBC00010D8C7F8D7E60
-:1032E00022C3EC94BCED940250047D077CD0ECF436
-:1032F000FCEDF4FD0CBC00010D8C7D8D7C22EC708E
-:103300000122C000E5782418F8A604E5782408F81E
-:10331000C6547FF6E630E703D0002212329A80F4DA
-:10332000C28C857C8C857D8AD28CC0E0C0D0C0F0F8
-:10333000C082C083C000C001C002C003C004C00579
-:10334000C006C007121AF8E5782408F8E66024E5FC
-:10335000782410F8A681E57875F021A4248DF582F3
-:10336000E434FCF58378AEE58104C398F9E6F0080F
-:10337000A3D9FA74082578F8057808E65480700C0B
-:10338000E578B407F3780875780080EFE5782410C5
-:10339000F88681E57875F021A4248DF582E434FC6B
-:1033A000F58378AEE58104C398F9E0F608A3D9FA6D
-:1033B000D007D006D005D004D003D002D001D00071
-:1033C000D083D082D0F0D0D0D0E032C0E0C0D0C026
-:1033D00000C001C002C28E857E8D857F8BD28E7823
-:1033E0001979097A07E77004A600800BE6600816D1
-:1033F000E67004E74480F70809DAEAE57960131417
-:10340000F579700EE5782408F87600123246D28CF1
-:10341000D28DD002D001D000D0D0D0E0327581ADB5
-:10342000742A90FF93F0757F30757EF8757D607516
-:103430007CF012053F1234CE12175B90FF93E044EC
-:1034400001F0B2B31234F81232A880DA22C0007C44
-:1034500001EC2408F8E660090CBC08F512329A80E9
-:10346000EED00022C0F0C082C083C000C006C007FA
-:10347000ED2410F876BCED75F021A4248DF582E4DE
-:1034800034FCF583C082C083A3A3E4780DF0A3D8F5
-:10349000FCEC547F75F002A42441F582E5F034354C
-:1034A000F583E493FE740193F5828E83E493FE74B6
-:1034B0000193FFD083D082EFF0A3EEF0ED2408F863
-:1034C000EC4480F6D007D006D000D083D082D0F074
-:1034D00022757800757B007A08791878087600776D
-:1034E000000809DAF8E478087480447FF67401442F
-:1034F00010F58975B808D2ABD2A9227581ADD28EEC
-:10350000D28CD2AFE57B6032FF90FD95E0548060B5
-:103510002478087908E0547FFA7B00E6547FB502EE
-:10352000027BFF08D9F5EB700CEAF012344AAD04C7
-:10353000AC02123461A3A3A3DFD212329A80C57CFD
-:10354000017D002204FE04F204F604EA04E604E22B
-:1035500004EE04FA04A604AA04D604DA04A204A21F
-:1035600004A204DE04BE04B604BA04B204CA04C64B
-:1035700004C204CE04D204AE1901030022004802A2
-:1035800000480E301420C81AD0180A0C0506020391
-:1035900001020001CE0181010000C0008000600036
-:1035A0003000180010000800040002000100081894
-:1035B00028380C05100A0200000000000301100A60
-:1035C000020000000000FBE0FBF2090227000102FC
-:1035D00000A0FA0904000003FF00000007058102B3
-:1035E00040000007050102400000070583030200B8
-:1035F00001220354005500530042003300340031CF
-:1036000000300020002000200020002000200020AA
-:073610000020000000000093
-:00000001FF
diff --git a/firmware/myricom/lanai.bin.ihex b/firmware/myricom/lanai.bin.ihex
deleted file mode 100644
index bf47f4c74940..000000000000
--- a/firmware/myricom/lanai.bin.ihex
+++ /dev/null
@@ -1,4771 +0,0 @@
-:100000004FF8F20EFE00C290000007880008E001E1
-:10001000014C9793FFFCE000001400000001000079
-:1000200000009293FFFC02900008F7062A6C9713D9
-:10003000FFFCF7062C109713FFFC07880008E00070
-:1000400015489793FFFCF702053C9713FFFCF70256
-:1000500000039713FFFCF70629E09713FFFC0788BE
-:100060000008E000161C9793FFFCF7062B849713FB
-:10007000FFFCF7062C1C9713FFFC07880008E00024
-:1000800015489793FFFCF7020ABC9713FFFCF70291
-:1000900000029713FFFCF7062AF89713FFFC078866
-:1000A0000008E000161C9793FFFC8796FFFC8296E1
-:1000B000FFF802140000013C0000000000019293D0
-:1000C000FFFC02900008F7044A9C85160000203AC5
-:1000D0000001EE00010100000001F70475EC0000D2
-:1000E0000001203A0000E600010000000001F704D2
-:1000F00075F000000001203A0000E600012D00002C
-:100100000001F7042D38F6862C2806380001F60584
-:100110002D3877390002F482001220320044E600C4
-:1001200001E0B4BA6802E00001E0F0052D38F70400
-:100130003B64F5844F54F7057A10202E0000E6004A
-:100140000199972A002095AA001CF6064A9826AC29
-:10015000000177350001C738680077390002073899
-:10016000000CA4BA60020000000194AA0010C73875
-:100170006000873A000400000001972A0014F70489
-:100180004A9C0000000127380001C02E7200D700F1
-:100190000A01E00001D0F7057A1895AA001CF606BE
-:1001A0004A9806AC000177350001C73868007739F6
-:1001B00000020738000CA4BA60020000000194AAF3
-:1001C0000010C7386000873A0004F0057A18972AB3
-:1001D0000014F50579D807880008E00001F497932A
-:1001E000FFFC8796FFFC8296FFF802140004013C96
-:1001F0000000000000019293FFFC02900008221012
-:100200000038F7047A10F6843B6400000001C03A1D
-:100210006A00470C0001D7000A70203A0000E6008F
-:10022000024C00000001F70475EC00000001203AC8
-:100230000000E600024C00000001F70475F0000029
-:100240000001203A0000E6000285F4820000F70475
-:100250002D38F6862C2806380001F6052D3877391A
-:100260000002F302001220320044E6000274B33AA6
-:100270006802F0052D38F3062A6CF3052C10E00017
-:100280000528F0057A18F38479D8F6844AA0231457
-:1002900000209316FFC4841E00109696FFD4F70426
-:1002A0004A9C9416FFE0851E0014C0367200EC00D4
-:1002B000036C9516FFE477350001C738680077397D
-:1002C0000002F3064A98C6B8300006B4000CC58494
-:1002D00000008736000000000001C03A4200E6003E
-:1002E00002FCC62400008736000400000001C03A6A
-:1002F0005200E600030020320000F6020001203226
-:100300000000E600030D00000001F58200008636C3
-:1003100000008716FFE000000001C0327200E2001A
-:100320000348F5020000C0327200E6000350202AA4
-:10033000000086B600048716FFE400000001C03606
-:100340007200E2000351202A0000F5020001202A79
-:100350000000E6000361202E0000F5820001202E3F
-:100360000000E600037020260000F4820001202631
-:100370000000E60003A5F60200018716FFD4F3068D
-:100380004A9876B90001C6B4700076B50002C6B4CA
-:10039000300006B4001486B600009716FFD8E000BF
-:1003A00004189696FFDC2714002C9713FFFC831685
-:1003B000FFC4000000019313FFFCF3064A98931357
-:1003C000FFFC9396FFCC07880008E001256897930F
-:1003D000FFFC8396FFCC20220000E6000415F60205
-:1003E00000018716FFD4F3064A9876B90001C6B417
-:1003F000700076B50002C6B4300006B4001486B6AC
-:1004000000009716FFD89696FFDCF7054AA0E0009B
-:10041000041C20320000F602000020320000E6003A
-:10042000042CF4820001E0000484F482000086962B
-:10043000FFD80000000177350002C738680077391F
-:100440000002F68642C8A63A6802C73868007539C5
-:10045000001E7528FFE505B8000286AE00000738CB
-:1004600000049716FFECC63057C07630FFF09616A2
-:10047000FFF475AD001E75ACFFE5C6B45FC076B481
-:10048000FFF09696FFF020260000E6000525F30613
-:1004900029E08696FFF0F5820000C7346800C49C0E
-:1004A0007200C02E6A00EC0004F0C5240000C62CC7
-:1004B00000008716FFEC00000001A6B2700205AC38
-:1004C0000001C73070007739001E7738FFE5C6B4E9
-:1004D00077C076B4FFF0F6AB280005280002871637
-:1004E000FFF000000001C02E7200EC0004B10630E5
-:1004F0000002F3020003F30576F48716FFF0869EF0
-:100500000004C7387000C7384800C6B470008716AA
-:10051000FFF406B400209702FF6C9482FF5096828D
-:10052000FF58F30629E0F3052C108796FFFC82960E
-:10053000FFF802140000013C00000000000192934B
-:10054000FFFC02900008F7047A1800000001203A2E
-:100550000000E60005CD00000001F7047A10F684E3
-:100560003B6400000001C03A6A00470C0001203AD9
-:100570000000E60005CDF5864A98F60479D8F684A1
-:100580004F540000000196B2001C06B400017735FC
-:100590000001C7386800773900020738000CA53A17
-:1005A00058020000000195320010C7385800873A01
-:1005B0000004F0057A189732001407880008E0005C
-:1005C00001F49793FFFCE00005FC00000001F70434
-:1005D0002D38F6862C2806380001F6052D38773997
-:1005E0000002F502001220320044E60005F4B53A9C
-:1005F0006802F0052D38F5062A6CF5052C10879653
-:10060000FFFC8296FFF802140000013C000000008D
-:1006100000019293FFFC0290000885960000F70409
-:1006200075EC852E0020203A0000E60006CCF5058A
-:100630007A08F70475F000000001203A0000E60097
-:1006400006CC00000001F7047A08F6843B64000041
-:100650000001C03A6A00470C0001D7000A70203A36
-:100660000000E60006CC00000001872E001CF68486
-:100670004F54F7057A00C7347200203A0000EE00AC
-:10068000068DF5020001E0000690F50579F8F08589
-:1006900079F8F6847A00C7387000C6B47000F704A1
-:1006A00079F8F68579E8C7387000C6347000F70429
-:1006B0004A9C00000001C0367200EC0006CCF60532
-:1006C00079F020360000EC0006F800000001F70485
-:1006D0002D38F6862C2806380001F6052D38773996
-:1006E0000002F502001320320044E6000738B53A54
-:1006F0006802E0000738F0052D38F7044A9C000036
-:100700000001C0327200EE00071900000001F7047A
-:100710004A9CE0000728F70579F020320000EC0041
-:10072000072800000001F08579F0F58579E0078859
-:100730000008E000074C9793FFFC8796FFFC829629
-:10074000FFF802140004013C000000000001929335
-:10075000FFFC0290000822100038F70475EC00003E
-:100760000001203A0000E60007A400000001F704A1
-:1007700075F000000001203A0000E60007A4000028
-:100780000001F7047A08F6843B6400000001C03AD7
-:100790006A00470C0001D7000A70203A0000E6000A
-:1007A00007D5F4020000F7042D38F6862C28063809
-:1007B0000001F6052D3877390002F30200132032CC
-:1007C0000044E60007CCB33A6802F0052D38E0009B
-:1007D0000AA4F3062B84F68479E8F6064A9877355E
-:1007E0000001C738680077390002F68479E00738DD
-:1007F000000CA33A6002C3B4000093360010C7385F
-:100800006000873A0004231400209316FFC4973633
-:100810000014849E0010F6844AA09496FFE09696F9
-:10082000FFD4851E0014F7044A9C00000001C03666
-:100830007200EC0008EC9516FFE477350001C7382C
-:10084000680077390002C6B8600006B4000CC584A1
-:1008500000008736000000000001C03A4A00E600B0
-:10086000087CC62000008736000400000001C03A62
-:100870005200E600088020320000F602000120321B
-:100880000000E600088D00000001F58200008636B9
-:1008900000008716FFE000000001C0327200E20095
-:1008A00008C8F5020000C0327200E60008D0202A15
-:1008B000000086B600048716FFE400000001C03681
-:1008C0007200E20008D1202A0000F5020001202A6F
-:1008D0000000E60008E1202E0000F5820001202E35
-:1008E0000000E60008F020220000F40200012022AF
-:1008F0000000E6000925F60200018716FFD4F30682
-:100900004A9876B90001C6B4700076B50002C6B444
-:10091000300006B4001486B600009716FFD8E00039
-:1009200009989696FFDC2714002C9713FFFC83167A
-:10093000FFC4000000019313FFFCF3064A989313D1
-:10094000FFFC9396FFCC07880008E0012568979389
-:10095000FFFC8396FFCC20220000E6000995F602FA
-:1009600000018716FFD4F3064A9876B90001C6B491
-:10097000700076B50002C6B4300006B4001486B626
-:1009800000009716FFD89696FFDCF7054AA0E00016
-:10099000099C20320000F602000020320000E60030
-:1009A00009ACF4820001E0000A04F482000086969B
-:1009B000FFD80000000177350002C738680077399A
-:1009C0000002F68642C8A63A6802C7386800753940
-:1009D000001E7528FFE505B8000286AE0000073846
-:1009E00000049716FFECC63057C07630FFF096161D
-:1009F000FFF475AD001E75ACFFE5C6B45FC076B4FC
-:100A0000FFF09696FFF020260000E6000AA5F30608
-:100A10002AF88696FFF0F5820000C7346800C49C6F
-:100A20007200C02E6A00EC000A70C5240000C62CBB
-:100A300000008716FFEC00000001A6B2700205ACB2
-:100A40000001C73070007739001E7738FFE5C6B463
-:100A500077C076B4FFF0F6AB2800052800028716B1
-:100A6000FFF000000001C02E7200EC000A310630D9
-:100A70000002F3020002F30576F48716FFF0869E6B
-:100A80000004C7387000C7384800C6B47000871625
-:100A9000FFF406B400209702FF6C9482FF50968208
-:100AA000FF58F3062AF8F3052C1C8796FFFC829664
-:100AB000FFF802140000013C0000000000019293C6
-:100AC000FFFC02900008F68479E8F70479F800004A
-:100AD0000001C6B47000F7047A20F68579E807387B
-:100AE0000001F7057A20F70479F0F6047A20C03681
-:100AF0007200E6000B2CF6862C28F7042D38000037
-:100B0000000106380001F6052D3877390002F5821C
-:100B1000001320320044E6000B20B5BA6802F0054D
-:100B20002D38F5862B84E0000B38F5852C1C0788C2
-:100B30000008E000074C9793FFFC8796FFFC829625
-:100B4000FFF802140000013C000000000001929335
-:100B5000FFFC02900008F7062C109713FFFCF70625
-:100B600029E09713FFFC07880008E00014F497932E
-:100B7000FFFCF7062C109713FFFCF7062A6C97135F
-:100B8000FFFC07880008E00014F49793FFFCF706C9
-:100B90002C1C9713FFFCF7062AF89713FFFC078815
-:100BA0000008E00014F49793FFFCF7062C1C971341
-:100BB000FFFCF7062B849713FFFC07880008E00072
-:100BC00014F49793FFFC8796FFFC8296FFF80214BB
-:100BD0000000013C0000000000019293FFFC029025
-:100BE0000008F0052D38F0052D3C8796FFFC829615
-:100BF000FFF802140000013C000000000001929385
-:100C0000FFFC0290000822100018FF852EDCF7067A
-:100C10000C3EC77C7400203A0000E60014299716A9
-:100C2000FFF44738FFFBF6846F50CFB8000083967F
-:100C3000FFF4F702003FC39C6D80C71C7400203A8C
-:100C4000003FE20012609396FFF477390002F682CB
-:100C50000C5CA6B6700200000001C1340000000068
-:100C600012600000126000000D6800000D680000B6
-:100C70000D5C00000D5C00000D6800000D680000B8
-:100C80001250000012500000123C0000123C000004
-:100C90000DE000000DE00000123C0000123C0000DE
-:100CA0000DE800000DF400000E0000000E20000012
-:100CB0000E4000000E6000000E8000000EA000003C
-:100CC0000EC000000EC800000ED000001228000068
-:100CD0000ED800000EF400000F10000012280000D3
-:100CE0000F1800000F1800000F2400000F24000050
-:100CF0000F4400000F4400000F6400000F64000068
-:100D00000F8400000F8400000F8C00000F8C000087
-:100D10000F9400000F9400000FB000000FB000000F
-:100D20000FB800000FD800000FF80000102C0000D2
-:100D3000106000001094000010C8000010FC0000BB
-:100D400011300000114C0000116800001214000066
-:100D50001184000011B4000011E400001214F382A9
-:100D60000006E00012549393FFFCF60200052032C7
-:100D70000014E6000DB527000010203A0001E20043
-:100D80000DB5F7062DCCF6842ECC0000000175B50C
-:100D90000002B62E700206B40001F6852ECC860243
-:100DA000FF34F7062E4C2036001FE2000DB5B62E9C
-:100DB0007002F0052ECCF7042D5800000001873A90
-:100DC000000000000001873A0018000000010788B9
-:100DD0000008C13800009793FFFCE000126000009B
-:100DE0000001E0001240F3820006F382000BE000F5
-:100DF00012549393FFFCF3820007E0001254939384
-:100E0000FFFCF382000B9393FFFC07880008E000CF
-:100E100015849793FFFCF3820005E000125493932E
-:100E2000FFFCF38200079393FFFC07880008E000B3
-:100E300015849793FFFCF3820005E000125493930E
-:100E4000FFFCF382000B9393FFFC07880008E0008F
-:100E500015849793FFFCF3820006E00012549393ED
-:100E6000FFFCF38200079393FFFC07880008E00073
-:100E700015849793FFFCF3820006E00012549393CD
-:100E8000FFFCF382000B9393FFFC07880008E0004F
-:100E900015849793FFFCF3820005E00012549393AE
-:100EA000FFFCF38200079393FFFC07880008E00033
-:100EB00015849793FFFCF3820005E000125493938E
-:100EC000FFFCE0001240F382000BE0001240F382CE
-:100ED0000007E000122CF382000BF382000B9393C7
-:100EE000FFFC07880008E00015849793FFFCE000F2
-:100EF0001240F3820006F38200079393FFFC0788F9
-:100F00000008E00015849793FFFCE0001240F38294
-:100F10000006E000122CF382000BF3820014E000C4
-:100F200012549393FFFCF38200149393FFFC078801
-:100F30000008E00015849793FFFCF3820005E000B1
-:100F400012549393FFFCF38200149393FFFC0788E1
-:100F50000008E00015849793FFFCF3820006E00090
-:100F600012549393FFFCF38200149393FFFC0788C1
-:100F70000008E00015849793FFFCF3820005E00071
-:100F800012549393FFFCE0001240F3820014E0003F
-:100F9000122CF3820014F38200149393FFFC078851
-:100FA0000008E00015849793FFFCE0001240F382F4
-:100FB0000006E000122CF3820014F38200149393D5
-:100FC000FFFC07880008E00015849793FFFCF3827C
-:100FD000000BE00012549393FFFCF38200149393F0
-:100FE000FFFC07880008E00015849793FFFCF3825C
-:100FF0000007E00012549393FFFCF38200149393D4
-:10100000FFFC07880008E00015849793FFFCF3823B
-:10101000000B9393FFFC07880008E000158497936A
-:10102000FFFCF3820005E00012549393FFFCF3826F
-:1010300000149393FFFC07880008E0001584979341
-:10104000FFFCF38200079393FFFC07880008E00091
-:1010500015849793FFFCF3820005E00012549393EC
-:10106000FFFCF38200149393FFFC07880008E00064
-:1010700015849793FFFCF382000B9393FFFC078882
-:101080000008E00015849793FFFCF3820006E0005F
-:1010900012549393FFFCF38200149393FFFC078890
-:1010A0000008E00015849793FFFCF38200079393F8
-:1010B000FFFC07880008E00015849793FFFCF3828B
-:1010C0000006E00012549393FFFCF3820014939304
-:1010D000FFFC07880008E00015849793FFFCF3826B
-:1010E000000B9393FFFC07880008E000158497939A
-:1010F000FFFCF3820005E00012549393FFFCF3829F
-:1011000000149393FFFC07880008E0001584979370
-:10111000FFFCF38200079393FFFC07880008E000C0
-:1011200015849793FFFCF3820005E000125493931B
-:10113000FFFCF38200149393FFFC07880008E00093
-:1011400015849793FFFCE0001240F382000BF382BA
-:1011500000149393FFFC07880008E0001584979320
-:10116000FFFCE0001240F3820007F3820014939327
-:10117000FFFC07880008E00015849793FFFCE0005F
-:10118000122CF382000BF38200149393FFFC078868
-:101190000008E00015849793FFFCF382000B939303
-:1011A000FFFC07880008E00015849793FFFCE0002F
-:1011B0001240F3820006F38200149393FFFC078829
-:1011C0000008E00015849793FFFCF38200079393D7
-:1011D000FFFC07880008E00015849793FFFCE000FF
-:1011E0001240F3820006F38200149393FFFC0788F9
-:1011F0000008E00015849793FFFCE000122CF382B6
-:10120000000BF7043528F682000107380008E000DB
-:1012100013CCF7053544F38200149393FFFC078841
-:101220000008E00015849793FFFCF3820007939376
-:10123000FFFC07880008E00015849793FFFCF38209
-:1012400000059393FFFC07880008E000158497933E
-:10125000FFFC9013FFFC07880008E00015849793BB
-:10126000FFFC8396FFF400000001779C0014703EA1
-:10127000FFE1E600129DF7060400F7046F5C000032
-:10128000000107380001F7056F5CF7046F5CE000B0
-:101290000000000000018396FFF4F7060400C01E62
-:1012A0007400E600142900000001F7042ED0F68433
-:1012B00035240738000120360000E6001405F70544
-:1012C0002ED0F704E01400000001203A0000E600F0
-:1012D0001405F6820000F685E014F7042ED8C53414
-:1012E000000007380001F7052ED8202A0002EE0082
-:1012F00013CCF6820000F684352800000001873602
-:10130000000000000001203A0002E60013A005B42E
-:1013100000089593FFFC9516FFE89596FFE49696D6
-:10132000FFE007880008E00016649793FFFC85162D
-:10133000FFE88596FFE48696FFE020220000E600A5
-:101340001390F70200008636000C000000012032E6
-:10135000000FE20013750000000187360014000042
-:101360000001073800019736001487360014E000AA
-:101370001390F702000076B10002C6B46000773522
-:101380000005C7386A00C738600007380010C72C4E
-:101390007000203A0000E6001200F705352CF684B4
-:1013A0003528F7046F4C00000001C0367200E600DB
-:1013B00013C007341494F3846F44E00013C4F3851E
-:1013C0003528F7053528E00012E805280001203609
-:1013D0000000E6001429F6862C28F7042D38F005C5
-:1013E000352406380001F6052D3877390002F382DE
-:1013F000000D20320044E6001428B3BA6802E00071
-:101400001428F0052D38F704E01000000001203A00
-:101410000000E6001429F7020000F705E010078835
-:101420000008E00102989793FFFCF4842D38F7043C
-:101430002D3C00000001C03A4A00E6000C09F68687
-:101440002C2877390002A53A680200000001202A02
-:101450000014E600149127280015203A0001E2004C
-:101460001491F7062DCCF6842ECC8602FF3475B588
-:101470000002B52E700206B40001F6852ECCF706E8
-:101480002E4C2036001FE2001491B62E7002F0059B
-:101490002ECCF7062D4476A90002A7367002000074
-:1014A0000001873A000000000001C6B470008736D2
-:1014B00000049496FFEC07880008C1380000979359
-:1014C000FFFCF7042D3C8496FFEC07380001203A1E
-:1014D0000044E600142CF7052D3CE000142CF00528
-:1014E0002D3C8796FFFC8296FFF802140000013C19
-:1014F0000000000000019293FFFC02900008841697
-:101500000000F702000085960004203A0021EE005A
-:10151000153495A20000F606233807200084C6A0E3
-:101520000000963A000427380004C03A6A00EC0034
-:101530001520000000018796FFFC8296FFF8021438
-:101540000008013C0000000000019293FFFC0290A3
-:1015500000088696000087160004F6042D40973692
-:1015600000009736000407300001F7052D4096363D
-:1015700000088796FFFC8296FFF802140008013CE1
-:101580000000000000019293FFFC02900008851605
-:10159000000000000001202A0014E60015D92728C9
-:1015A0000015203A0001E20015D9F7062DCCF6848B
-:1015B0002ECC8602FF3475B50002B52E700206B43B
-:1015C0000001F6852ECCF7062E4C2036001FE200D7
-:1015D00015D9B62E7002F0052ECCF6862D4477294B
-:1015E0000002A6BA68020000000186B600000000F2
-:1015F0000001C7386800873A00040000000107882E
-:101600000008C13800009793FFFC8796FFFC829684
-:10161000FFF802140004013C000000000001929356
-:10162000FFFC029000088716000086960004F6066C
-:101630002D4476B5000285BA000000000001B5B661
-:101640006002C6B47000859600080000000195B6DF
-:1016500000048796FFFC8296FFF80214000C013C00
-:101660000000000000019293FFFC02900008861623
-:101670000000000000018732000400000001203A51
-:10168000000F86B20000C5380000EE0016B4C5B4E5
-:1016900000002036000FEE0016B400000001203AD2
-:1016A0000000EC0016B50000000120360000EC0040
-:1016B00016D0000000018732000C0000000107383E
-:1016C00000019732000C8732000CE00016D8F402BB
-:1016D0000000C02A5A00440C00018796FFFC829645
-:1016E000FFF802140004013C0000000000010000AB
-:1016F00000009293FFFC02900008F7062EE097137B
-:10170000FFFCF70632D49713FFFC07880008E000BF
-:1017100015489793FFFCF702182C9713FFFCF782EC
-:1017200000099793FFFCF7062EE09713FFFC07884C
-:101730000008E000161C9793FFFCF702345897133B
-:10174000FFFCF702000C9713FFFCF7062F6C9713B2
-:10175000FFFC07880008E000161C9793FFFCF702C7
-:101760003F949713FFFCF782000B9793FFFCF7065B
-:101770002FF89713FFFC07880008E000161C9793CA
-:10178000FFFCF7023B849713FFFCF782000B979353
-:10179000FFFCF70632289713FFFC07880008E000DB
-:1017A000161C9793FFFCF70226E49713FFFCF70241
-:1017B00000139713FFFCF70630849713FFFC07888C
-:1017C0000008E000161C9793FFFCF70226A0971371
-:1017D000FFFCF70200119713FFFCF7063110971377
-:1017E000FFFC07880008E000161C9793FFFCF70237
-:1017F000182C9713FFFCF78200099793FFFCF7065C
-:10180000319C9713FFFC07880008E000161C979393
-:10181000FFFCF0057A78F00532E88796FFFC8296A7
-:10182000FFF802140000013C000000000001929348
-:10183000FFFC0290000822100050F70471C800005D
-:101840000001203A0000E6001855F68671C4E00059
-:10185000186CF6020000F70471D40000000177391B
-:101860000002C7386800863A001800000001F6053B
-:1018700032C486B2000807018000C5B47400F58543
-:1018800032D087320018F6866F4477390002A73AC3
-:101890006802202E0000F70532C0073809D886B24A
-:1018A0000004F70532CCE6001941F68532C8F7048A
-:1018B0007198F6847A782738000120360000E60017
-:1018C0001910F7057198F70476FC00000001203A22
-:1018D0000000E60018E8F3020011F30632D4F30525
-:1018E00076FCE00018F8F7020001F30576F8F3063D
-:1018F00032D4F3057700F7020000203A0000E6003A
-:101900001914F3020001F3063110E000268CF305F0
-:1019100032D4F3020001F3057A78F3063084F3053C
-:1019200032D4F30432C4000000019313FFFC078893
-:101930000008E00006109793FFFCE000268C0000F2
-:101940000001F3020000202E0000E6001CB99316EF
-:10195000FFE4873200088696FFE4C3040000C03A23
-:101960003200E6001984203600008732000C0000A7
-:101970000001C03A3200E600198420360000F682E9
-:10198000000120360000E6001CB8F3020000F70456
-:1019900032C09316FFACF58432C4863A142803B8DB
-:1019A0001420042C000886BA142400000001C03260
-:1019B0006A00EC001A709616FFEC77310001C73808
-:1019C000600077390002C63838000630000C86B255
-:1019D0000000872E00088516FFACC0367200E600B6
-:1019E0001A00C484000086B20004872E000C000098
-:1019F0000001C0367200E6001A04202A0000F50239
-:101A00000001202A0000E6001A1100000001F48203
-:101A1000000086B200008722000000000001C036EE
-:101A20007200E2001A4CF5820000C0367200E60037
-:101A30001A54202E000086B2000487220004000001
-:101A40000001C0367200E2001A55202E0000F58217
-:101A50000001202E0000E6001A6520260000F48216
-:101A6000000120260000E6001A70F3020001931620
-:101A7000FFAC8316FFAC00000001201A0000E60056
-:101A80001AB1F60200018716FFEC0000000176B9DA
-:101A90000001C6B4700076B50002C6B4380006B4C2
-:101AA000001486B600009716FFF0E0001B1896960B
-:101AB000FFF4271400149713FFFC9413FFFC939377
-:101AC000FFFC9396FFBC07880008E0012568979308
-:101AD000FFFC8396FFBC20220000E6001B15F602E7
-:101AE00000018716FFEC0000000176B90001C6B4C2
-:101AF000700076B50002C6B4380006B4001486B68D
-:101B000000009716FFF09696FFF4971E0008E0007D
-:101B10001B1C20320000F602000020320000E6000C
-:101B20001CB8F3020000F60432C09316FFAC86B274
-:101B3000142803B014200430148C873214240000BD
-:101B40000001C0367200EC001C049696FFEC77355D
-:101B50000001C738680077390002C5B8380005AC05
-:101B6000000C86AE00008732148C8516FFACC036A0
-:101B70007200E6001B94C484000086AE0004873225
-:101B8000149000000001C0367200E6001B98202A65
-:101B90000000F5020001202A0000E6001BA500005D
-:101BA0000001F482000086AE0000872200000000E1
-:101BB0000001C0367200E2001BE0F6020000C036F1
-:101BC0007200E6001BE82032000086AE0004872287
-:101BD000000400000001C0367200E2001BE9203260
-:101BE0000000F602000120320000E6001BF920266A
-:101BF0000000F482000120260000E6001C04F3022D
-:101C000000019316FFAC8316FFAC00000001201A00
-:101C10000000E6001C45F60200018716FFEC0000FC
-:101C2000000176B90001C6B4700076B50002C6B4F2
-:101C3000380006B4001486B600009716FFF0E000E6
-:101C40001CAC9696FFF4271400149713FFFC941312
-:101C5000FFFC9393FFFC9396FFBC07880008E0010C
-:101C600025689793FFFC8396FFBC20220000E600C6
-:101C70001CA9F60200018716FFEC0000000176B9EE
-:101C80000001C6B4700076B50002C6B4380006B4D0
-:101C9000001486B600009716FFF09696FFF4971E84
-:101CA0000008E0001CB020320000F60200002032E4
-:101CB0000000E6001E15F3020001F68432C00000A9
-:101CC000000185B60EF486360EF8202E0010E200D4
-:101CD0001CDC20320010E2001CF9000000018736F5
-:101CE0000F00000000010738000197360F0087360B
-:101CF0000F00E0001D24F702000007300001C03A89
-:101D00005A00E6001D1DF682000020320010E60099
-:101D10001D20202E0000E6001D24C7340000F6829E
-:101D20000001C7340000203A0000E6001E14F30250
-:101D30000001F30432CC000000019316FFDC931382
-:101D4000FFFC07880008E00043689793FFFC20220F
-:101D50000000E6001DFCF30200008316FFDC00001B
-:101D60000001861A00000000000120320010E2008D
-:101D70001D9176B10002871A000C0000000107389F
-:101D80000001971A000C871A000CE0001DFCF302FA
-:101D90000000F302004C9313FFFCC6B460007735DB
-:101DA0000004C7386A008316FFDCC7386000C738F4
-:101DB0003000073800109713FFFCF3067A289313BE
-:101DC000FFFC9616FFB407880008E00126F89793F9
-:101DD000FFFC8616FFB4000000010630000120322F
-:101DE0000011E6001DEC00000001F6020000831661
-:101DF000FFDC00000001961A0000F30200019316B8
-:101E0000FFD48316FFD400000001201A0000E60072
-:101E10001E18F30200019316FFE48316FFE400008E
-:101E20000001201A0000E6001F35F6820CABF70413
-:101E300032B48316FFD407380001F70532B4F70433
-:101E400032B4201A0000E6001E7000000001F70402
-:101E500032C0F306E030C03A3200E6001E700000E7
-:101E60000001F70432E80000000107380001F7051F
-:101E700032E8F70471C400000001203A0000E600D7
-:101E80001EADF6862C28F7042D3800000001063818
-:101E90000001F6052D3877390002F302000A2032DE
-:101EA0000044E6001EACB33A6802F0052D38F70492
-:101EB00071D4F68471CC07380001C03A6A00E6009C
-:101EC0001EC8F70571D4F00571D4F68471D4F704F7
-:101ED00071D0F00571C4C0367200470C0001F68461
-:101EE00032D00000000120360000E60025D9F705B9
-:101EF00071C8F704719800000001203A0000E60064
-:101F0000257900000001F70475EC00000001203A7B
-:101F10000000E600257800000001F70475F00000DD
-:101F20000001203A0000E600257800000001E000F2
-:101F300025DCF306319CF00532E8F70432C0F604E4
-:101F40006F5496BA000420320000E6001F60F302CE
-:101F5000000CF3020001F3056F54E0001F68F70264
-:101F60000001F3056F58F7020000203A0000E60078
-:101F70001F7CF3062F6CE000268CF30532D4F58429
-:101F80007A7024940010202E0001E6002284F5854A
-:101F90007AA0F7020001F60432C8F7057A70F70458
-:101FA00032C4F68432C0F6057A2C9002FF8090028B
-:101FB000FF38F5847A28073800249582FF3C970281
-:101FC000FF409602FF448736141000000001C73816
-:101FD0006000973614108736141800000001073887
-:101FE00000019736141887361418F0056F50F7045F
-:101FF00032B89596FFECC7386000F70532B8F704A1
-:1020000032BCF3062FF807380001F70532BCF7049D
-:1020100032BCF30532D4F7060C3EC07E7400E600F5
-:10202000203400000001C07E7400E600202500007E
-:102030000001F7060C3EC77C7400203A0010E60051
-:10204000268C00000001F70432E4FF820010F584C2
-:102050006F5807380001202E0021E2002090F7057C
-:1020600032E4F7042D38F6862C2806380001F605F0
-:102070002D387739000220320044E6002084B5BABA
-:102080006802F0052D38F3020022E0002094F305E9
-:102090006F58F0056F54F58432C000000001902E97
-:1020A0000004872E000000000001203A0002E60034
-:1020B00021C0000000018702FF38032C0EF49316A4
-:1020C000FFCCF7057A689313FFFC9596FFB8078855
-:1020D0000008E00043A09793FFFC8596FFB82022FC
-:1020E0000000E600217C00000001862E0EF80000B2
-:1020F000000120320010E2002119F302004C872E6B
-:102100000F000000000107380001972E0F00872EF6
-:102110000F00E000217C000000019313FFFCF30698
-:102120007A289313FFFC76B10002C6B460007735BD
-:102130000004C7386A008316FFCCC7386000C73870
-:102140003000073800109713FFFC9596FFB89616DD
-:10215000FFB407880008E00126F89793FFFC861675
-:10216000FFB48596FFB80630000120320011E6006A
-:10217000217800000001F6020000962E0EF8F70408
-:1021800032C0F306E030C03A3200E60021C0000061
-:102190000001F704E0180000000177B8001E703E4F
-:1021A000FFE1E60021C1000000010F814000F704BB
-:1021B00079C80000000107380001F70579C8F70465
-:1021C00079C8F70471C400000001203A0000E6005D
-:1021D00021FDF6862C28F7042D3800000001063872
-:1021E0000001F6052D3877390002F302000A20328B
-:1021F0000044E60021FCB33A6802F0052D38F704EC
-:1022000071D4F68471CC07380001C03A6A00E60048
-:102210002218F70571D4F00571D4F68471D4F7044F
-:1022200071D0F00571C4C0367200470C0001F6840D
-:1022300032D00000000120360000E60025D9F70565
-:1022400071C8F704719800000001203A0000E60010
-:10225000257900000001F70475EC00000001203A28
-:102260000000E600257800000001F70475F000008A
-:102270000001203A0000E600257800000001E0009F
-:1022800025DCF306319CF0057A889002FF38F005D2
-:102290006F509002FF80F70432C4F3063228F30532
-:1022A00032D4F60432C8F6847A2CF50200000738DE
-:1022B0000024F7057A9820320000E60022D5F605C2
-:1022C0007A90C02A5A00E6002620C0326A00EE004A
-:1022D000262100000001F68432C00000000187368C
-:1022E000141000000001C7386000973614108736BC
-:1022F00014180000000107380001973614188736BB
-:102300001418F70432B800000001C7386000F70560
-:1023100032B8F70432BC0000000107380001F705AD
-:1023200032BCF70432BC20320000E6002345000036
-:102330000001F70432E0F5057A7007380001E0008B
-:102340002348F70532E0F5057A70F5846F580000F0
-:102350000001202E0021E200238CF6862C28F704B1
-:102360002D380000000106380001F6052D387739B8
-:10237000000220320044E6002380B5BA6802F0056E
-:102380002D38F3020022E0002390F3056F58F0058A
-:102390006F54F58432C000000001902E0004872E97
-:1023A000000000000001203A0002E60024BC00000A
-:1023B00000018702FF38032C0EF49316FFC4F705C3
-:1023C0007A689313FFFC9596FFB807880008E00031
-:1023D00043A09793FFFC8596FFB820220000E600FB
-:1023E000247800000001862E0EF800000001203243
-:1023F0000010E2002415F302004C872E0F000000AD
-:10240000000107380001972E0F00872E0F00E00013
-:102410002478000000019313FFFCF3067A2893133D
-:10242000FFFC76B10002C6B4600077350004C738FF
-:102430006A008316FFC4C7386000C7383000073809
-:1024400000109713FFFC9596FFB89616FFB4078807
-:102450000008E00126F89793FFFC8616FFB48596E6
-:10246000FFB80630000120320011E600247400009D
-:102470000001F6020000962E0EF8F70432C0F306B3
-:10248000E030C03A3200E60024BC00000001F7044E
-:10249000E0180000000177B8001E703EFFE1E60082
-:1024A00024BD000000010F814000F70479C800003E
-:1024B000000107380001F70579C8F70479C8F70467
-:1024C00071C400000001203A0000E60024F9F686FD
-:1024D0002C28F7042D380000000106380001F6050D
-:1024E0002D3877390002F302000A20320044E6005A
-:1024F00024F8B33A6802F0052D38F70471D4F68455
-:1025000071CC07380001C03A6A00E6002514F705CF
-:1025100071D4F00571D4F68471D4F70471D0F0054C
-:1025200071C4C0367200470C0001F68432D000003E
-:10253000000120360000E60025D9F70571C8F70430
-:10254000719800000001203A0000E60025790000A3
-:102550000001F70475EC00000001203A0000E600DD
-:10256000257800000001F70475F000000001203A12
-:102570000000E60025D100000001F58476F8000097
-:102580000001202E0021E20025C4F6862C28F70445
-:102590002D380000000106380001F6052D38773986
-:1025A000000220320044E60025B0B5BA6802F0050A
-:1025B0002D38F3020022F30576F8F3047700E000EB
-:1025C00025C8F30576FCF00576FCE00025D8F0057B
-:1025D0007A78E00025DCF306319CF3062EE0F30563
-:1025E00032D4F70471C800000001203A0000E60070
-:1025F000268CF6862C28F7042D38000000010638BA
-:102600000001F6052D3877390002F3020009203267
-:102610000044E600268CB33A6802E000268CF00500
-:102620002D38F7047A9000000001C03A6A00EE00ED
-:102630002641C5B40000C7385A00E0002648F70517
-:102640007A90C5B80000F0057A90F6847A88F7068B
-:102650007A2876350003A732700206B40001971677
-:10266000FFEC84A6FFFCF7067A2CF3047A98948298
-:10267000FF3C9302FF409582FF44B5B27002F7041D
-:102680007A98F6857A88C7385800F7057A98879639
-:10269000FFFC8296FFF802140000013C00000000DD
-:1026A00000019293FFFC02900008F7020001F70579
-:1026B0007A78F7063084F70532D4F70432C4000084
-:1026C00000019713FFFC07880008E00006109793AD
-:1026D000FFFC8796FFFC8296FFF802140000013C85
-:1026E0000000000000019293FFFC029000082210FD
-:1026F0000050F70432D0F3020000203A0000E60058
-:102700002A719316FFE4F68432C48616FFE48736F6
-:102710000008C3040000C03A3200E600273C203223
-:1027200000008736000C00000001C03A3200E600CD
-:10273000273C20320000F602000120320000E600B3
-:102740002A70F3020000F70432C09316FFACF58440
-:1027500032C4863A142803B81420042C000886BA20
-:10276000142400000001C0326A00EC0028289616EC
-:10277000FFEC77310001C738600077390002C638B6
-:1027800038000630000C86B20000872E000885163F
-:10279000FFACC0367200E60027B8C484000086B2E1
-:1027A0000004872E000C00000001C0367200E60015
-:1027B00027BC202A0000F5020001202A0000E600C4
-:1027C00027C900000001F482000086B200008722C1
-:1027D000000000000001C0367200E2002804F5820B
-:1027E0000000C0367200E600280C202E000086B2E1
-:1027F00000048722000400000001C0367200E200DD
-:10280000280D202E0000F5820001202E0000E60099
-:10281000281D20260000F482000120260000E6008A
-:102820002828F30200019316FFAC8316FFAC0000CA
-:102830000001201A0000E6002869F6020001871650
-:10284000FFEC0000000176B90001C6B4700076B557
-:102850000002C6B4380006B4001486B6000097160D
-:10286000FFF0E00028D09696FFF427140014971389
-:10287000FFFC9413FFFC9393FFFC9396FFBC078827
-:102880000008E00125689793FFFC8396FFBC202297
-:102890000000E60028CDF60200018716FFEC0000DC
-:1028A000000176B90001C6B4700076B50002C6B466
-:1028B000380006B4001486B600009716FFF096960E
-:1028C000FFF4971E0008E00028D420320000F60232
-:1028D000000020320000E6002A70F3020000F60437
-:1028E00032C09316FFAC86B2142803B01420043013
-:1028F000148C8732142400000001C0367200EC00F2
-:1029000029BC9696FFEC77350001C7386800773907
-:102910000002C5B8380005AC000C86AE0000873256
-:10292000148C8516FFACC0367200E600294CC484B6
-:10293000000086AE00048732149000000001C0360B
-:102940007200E6002950202A0000F5020001202A2A
-:102950000000E600295D00000001F482000086AE60
-:1029600000008722000000000001C0367200E20073
-:102970002998F6020000C0367200E60029A0203235
-:10298000000086AE00048722000400000001C0366B
-:102990007200E20029A120320000F602000120327C
-:1029A0000000E60029B120260000F4820001202664
-:1029B0000000E60029BCF30200019316FFAC831669
-:1029C000FFAC00000001201A0000E60029FDF6021D
-:1029D00000018716FFEC0000000176B90001C6B4C3
-:1029E000700076B50002C6B4380006B4001486B68E
-:1029F00000009716FFF0E0002A649696FFF4271473
-:102A000000149713FFFC9413FFFC9393FFFC939621
-:102A1000FFBC07880008E00125689793FFFC8396B8
-:102A2000FFBC20220000E6002A61F60200018716A2
-:102A3000FFEC0000000176B90001C6B4700076B565
-:102A40000002C6B4380006B4001486B6000097161B
-:102A5000FFF09696FFF4971E0008E0002A682032E7
-:102A60000000F602000020320000E6002BCDF30249
-:102A70000001F68432C00000000185B60EF48636EF
-:102A80000EF8202E0010E2002A9420320010E200FE
-:102A90002AB10000000187360F000000000107384E
-:102AA000000197360F0087360F00E0002ADCF7029E
-:102AB000000007300001C03A5A00E6002AD5F6822D
-:102AC000000020320010E6002AD8202E0000E60088
-:102AD0002ADCC7340000F6820001C7340000203A27
-:102AE0000000E6002BCCF3020001F30432CC00001E
-:102AF00000019316FFDC9313FFFC07880008E00039
-:102B000043689793FFFC20220000E6002BB4F302F9
-:102B100000008316FFDC00000001861A00000000A0
-:102B2000000120320010E2002B4976B10002871A22
-:102B3000000C0000000107380001971A000C871AEA
-:102B4000000CE0002BB4F3020000F302004C9313DE
-:102B5000FFFCC6B4600077350004C7386A008316EE
-:102B6000FFDCC7386000C738300007380010971303
-:102B7000FFFCF3067A289313FFFC9616FFB4078830
-:102B80000008E00126F89793FFFC8616FFB40000CA
-:102B900000010630000120320011E6002BA40000E5
-:102BA0000001F60200008316FFDC00000001961A07
-:102BB0000000F30200019316FFD48316FFD4000037
-:102BC0000001201A0000E6002BD0F302000193164A
-:102BD000FFE48316FFE400000001201A0000E60075
-:102BE0002CEDF6820CABF70432B48316FFD4073811
-:102BF0000001F70532B4F70432B4201A0000E600F1
-:102C00002C2800000001F70432C0F306E030C03A7F
-:102C10003200E6002C2800000001F70432E8000032
-:102C2000000107380001F70532E8F70471C400001D
-:102C30000001203A0000E6002C65F6862C28F704F7
-:102C40002D380000000106380001F6052D387739CF
-:102C50000002F302000A20320044E6002C64B33A7A
-:102C60006802F0052D38F70471D4F68471CC07386A
-:102C70000001C03A6A00E6002C80F70571D4F00527
-:102C800071D4F68471D4F70471D0F00571C4C036E4
-:102C90007200470C0001F68432D00000000120369B
-:102CA0000000E6003391F70571C8F7047198000041
-:102CB0000001203A0000E600333100000001F70473
-:102CC00075EC00000001203A0000E60033300000FF
-:102CD0000001F70475F000000001203A0000E60052
-:102CE000333000000001E0003394F306319CF0051E
-:102CF00032E8F70432C0F6046F5496BA000420326A
-:102D00000000E6002D18F302000CF3020001F305A9
-:102D10006F54E0002D20F7020001F3056F58F70211
-:102D20000000203A0000E6002D34F3062F6CE0008E
-:102D30003444F30532D4F5847A7024940010202EA4
-:102D40000001E600303CF5857AA0F7020001F604A8
-:102D500032C8F7057A70F70432C4F68432C0F6053B
-:102D60007A2C9002FF809002FF38F5847A28073889
-:102D700000249582FF3C9702FF409602FF4487366D
-:102D8000141000000001C738600097361410873611
-:102D90001418000000010738000197361418873610
-:102DA0001418F0056F50F70432B89596FFECC73849
-:102DB0006000F70532B8F70432BCF3062FF8073885
-:102DC0000001F70532BCF70432BCF30532D4F70634
-:102DD0000C3EC07E7400E6002DEC00000001C07EB9
-:102DE0007400E6002DDD00000001F7060C3EC77CF4
-:102DF0007400203A0010E600344400000001F7049B
-:102E000032E4FF820010F5846F5807380001202E4D
-:102E10000021E2002E48F70532E4F7042D38F6864B
-:102E20002C2806380001F6052D38773900022032AB
-:102E30000044E6002E3CB5BA6802F0052D38F302D6
-:102E40000022E0002E4CF3056F58F0056F54F58416
-:102E500032C000000001902E0004872E0000000008
-:102E60000001203A0002E6002F78000000018702EE
-:102E7000FF38032C0EF49316FFCCF7057A689313F2
-:102E8000FFFC9596FFB807880008E00043A09793E1
-:102E9000FFFC8596FFB820220000E6002F340000DA
-:102EA0000001862E0EF80000000120320010E20022
-:102EB0002ED1F302004C872E0F00000000010738CE
-:102EC0000001972E0F00872E0F00E0002F34000026
-:102ED00000019313FFFCF3067A289313FFFC76B1ED
-:102EE0000002C6B4600077350004C7386A00831654
-:102EF000FFCCC7386000C738300007380010971380
-:102F0000FFFC9596FFB89616FFB407880008E0010D
-:102F100026F89793FFFC8616FFB48596FFB8063017
-:102F2000000120320011E6002F3000000001F602FF
-:102F30000000962E0EF8F70432C0F306E030C03AD7
-:102F40003200E6002F7800000001F704E0180000CE
-:102F5000000177B8001E703EFFE1E6002F79000007
-:102F600000010F814000F70479C800000001073814
-:102F70000001F70579C8F70479C8F70471C40000A7
-:102F80000001203A0000E6002FB5F6862C28F70451
-:102F90002D380000000106380001F6052D3877397C
-:102FA0000002F302000A20320044E6002FB4B33AD4
-:102FB0006802F0052D38F70471D4F68471CC073817
-:102FC0000001C03A6A00E6002FD0F70571D4F00581
-:102FD00071D4F68471D4F70471D0F00571C4C03691
-:102FE0007200470C0001F68432D000000001203648
-:102FF0000000E6003391F70571C8F70471980000EE
-:103000000001203A0000E600333100000001F7041F
-:1030100075EC00000001203A0000E60033300000AB
-:103020000001F70475F000000001203A0000E600FE
-:10303000333000000001E0003394F306319CF005CA
-:103040007A889002FF38F0056F509002FF80F704F5
-:1030500032C4F3063228F30532D4F60432C8F684BB
-:103060007A2CF502000007380024F7057A98203200
-:103070000000E600308DF6057A90C02A5A00E6007E
-:1030800033D8C0326A00EE0033D900000001F68464
-:1030900032C0000000018736141000000001C7385C
-:1030A00060009736141087361418000000010738A6
-:1030B00000019736141887361418F70432B8000048
-:1030C0000001C7386000F70532B8F70432BC0000D1
-:1030D000000107380001F70532BCF70432BC20328A
-:1030E0000000E60030FD00000001F70432E0F505C5
-:1030F0007A7007380001E0003100F70532E0F5058D
-:103100007A70F5846F5800000001202E0021E20043
-:103110003144F6862C28F7042D38000000010638CB
-:103120000001F6052D387739000220320044E60010
-:103130003138B5BA6802F0052D38F3020022E000FC
-:103140003148F3056F58F0056F54F58432C0000024
-:103150000001902E0004872E000000000001203A9C
-:103160000002E6003274000000018702FF38032CE1
-:103170000EF49316FFC4F7057A689313FFFC959637
-:10318000FFB807880008E00043A09793FFFC8596EE
-:10319000FFB820220000E600323000000001862E39
-:1031A0000EF80000000120320010E20031CDF302E1
-:1031B000004C872E0F000000000107380001972EF9
-:1031C0000F00872E0F00E000323000000001931343
-:1031D000FFFCF3067A289313FFFC76B10002C6B415
-:1031E000600077350004C7386A008316FFC4C7380B
-:1031F0006000C7383000073800109713FFFC959621
-:10320000FFB89616FFB407880008E00126F89793E8
-:10321000FFFC8616FFB48596FFB806300001203209
-:103220000011E600322C00000001F6020000962E8C
-:103230000EF8F70432C0F306E030C03A3200E60080
-:10324000327400000001F704E0180000000177B8B4
-:10325000001E703EFFE1E6003275000000010F81A4
-:103260004000F70479C80000000107380001F705A5
-:1032700079C8F70479C8F70471C400000001203A46
-:103280000000E60032B1F6862C28F7042D38000045
-:10329000000106380001F6052D3877390002F302E7
-:1032A000000A20320044E60032B0B33A6802F0056A
-:1032B0002D38F70471D4F68471CC07380001C03A78
-:1032C0006A00E60032CCF70571D4F00571D4F684BB
-:1032D00071D4F70471D0F00571C4C0367200470C88
-:1032E0000001F68432D00000000120360000E60024
-:1032F0003391F70571C8F704719800000001203A76
-:103300000000E600333100000001F70475EC000016
-:103310000001203A0000E600333000000001F7040D
-:1033200075F000000001203A0000E600338900003B
-:103330000001F58476F800000001202E0021E20053
-:10334000337CF6862C28F7042D380000000106385F
-:103350000001F6052D387739000220320044E600DE
-:103360003368B5BA6802F0052D38F3020022F30580
-:1033700076F8F3047700E0003380F30576FCF0057F
-:1033800076FCE0003390F0057A78E0003394F306A1
-:10339000319CF3062EE0F30532D4F70471C8000027
-:1033A0000001203A0000E6003444F6862C28F70499
-:1033B0002D380000000106380001F6052D38773958
-:1033C0000002F302000920320044E6003444B33A1C
-:1033D0006802E0003444F0052D38F7047A900000CC
-:1033E0000001C03A6A00EE0033F9C5B40000C738E6
-:1033F0005A00E0003400F7057A90C5B80000F005E7
-:103400007A90F6847A88F7067A2876350003A73210
-:10341000700206B400019716FFEC84A6FFFCF706C5
-:103420007A2CF3047A989482FF3C9302FF409582B1
-:10343000FF44B5B27002F7047A98F6857A88C738E7
-:103440005800F7057A988796FFFC8296FFF80214D9
-:103450000000013C0000000000019293FFFC02907C
-:10346000000822100020F5847A7000000001202E50
-:103470000001E600376CF5857AA0F7020001F6043A
-:1034800032C8F7057A70F70432C4F68432C0F60504
-:103490007A2C9002FF809002FF38F5847A28073852
-:1034A00000249582FF3C9702FF409602FF44873636
-:1034B000141000000001C7386000973614108736DA
-:1034C00014180000000107380001973614188736D9
-:1034D0001418F0056F50F70432B89596FFF4C7380A
-:1034E0006000F70532B8F70432BCF4862FF80738CD
-:1034F0000001F70532BCF70432BCF48532D4F7067C
-:103500000C3EC07E7400E600351C00000001C07E49
-:103510007400E600350D00000001F7060C3EC77C84
-:103520007400203A0010E6003B7000000001F70430
-:1035300032E4FF820010F5846F5807380001202E16
-:103540000021E2003578F70532E4F7042D38F686DD
-:103550002C2806380001F6052D3877390002203274
-:103560000044E600356CB5BA6802F0052D38F482E7
-:103570000022E000357CF4856F58F0056F54F58427
-:1035800032C000000001902E0004872E00000000D1
-:103590000001203A0002E60036A800000001870280
-:1035A000FF3804AC0EF49496FFECF7057A68949318
-:1035B000FFFC9596FFDC07880008E00043A0979386
-:1035C000FFFC8596FFDC20220000E6003664000048
-:1035D0000001862E0EF80000000120320010E200EB
-:1035E0003601F482004C872E0F00000000010738DE
-:1035F0000001972E0F00872E0F00E00036640000B8
-:1036000000019493FFFCF4867A289493FFFC76B132
-:103610000002C6B4600077350004C7386A0084969B
-:10362000FFECC7386000C738480007380010971310
-:10363000FFFC9596FFDC9616FFD807880008E0018E
-:1036400026F89793FFFC8616FFD88596FFDC063098
-:10365000000120320011E600366000000001F60291
-:103660000000962E0EF8F70432C0F486E030C03A1F
-:103670004A00E60036A800000001F704E018000048
-:10368000000177B8001E703EFFE1E60036A9000099
-:1036900000010F814000F70479C8000000010738DD
-:1036A0000001F70579C8F70479C8F70471C4000070
-:1036B0000001203A0000E60036E5F6862C28F704E3
-:1036C0002D380000000106380001F6052D38773945
-:1036D0000002F482000A20320044E60036E4B4BA64
-:1036E0006802F0052D38F70471D4F68471CC0738E0
-:1036F0000001C03A6A00E6003700F70571D4F00512
-:1037000071D4F68471D4F70471D0F00571C4C03659
-:103710007200470C0001F68432D000000001203610
-:103720000000E6003AC1F70571C8F704719800007F
-:103730000001203A0000E6003A6100000001F704B1
-:1037400075EC00000001203A0000E6003A6000003D
-:103750000001F70475F000000001203A0000E600C7
-:103760003A6000000001E0003AC4F486319CF005A4
-:103770007A889002FF38F0056F509002FF80F704BE
-:1037800032C4F4863228F48532D4F60432C8F68482
-:103790007A2CF502000007380024F7057A982032C9
-:1037A0000000E60037BDF6057A90C02A5A00E60010
-:1037B0003B08C0326A00EE003B0900000001F684BD
-:1037C00032C0000000018736141000000001C73825
-:1037D000600097361410873614180000000107386F
-:1037E00000019736141887361418F70432B8000011
-:1037F0000001C7386000F70532B8F70432BC00009A
-:10380000000107380001F70532BCF70432BC203252
-:103810000000E600382D00000001F70432E0F50555
-:103820007A7007380001E0003830F70532E0F5051E
-:103830007A70F5846F5800000001202E0021E2000C
-:103840003874F6862C28F7042D380000000106385D
-:103850000001F6052D387739000220320044E600D9
-:103860003868B5BA6802F0052D38F4820022E0000D
-:103870003878F4856F58F0056F54F58432C0000035
-:103880000001902E0004872E000000000001203A65
-:103890000002E60039A4000000018702FF3804ACF2
-:1038A0000EF49496FFE4F7057A689493FFFC9596DE
-:1038B000FFDC07880008E00043A09793FFFC859693
-:1038C000FFDC20220000E600396000000001862EA7
-:1038D0000EF80000000120320010E20038FDF482F2
-:1038E000004C872E0F000000000107380001972EC2
-:1038F0000F00872E0F00E000396000000001949354
-:10390000FFFCF4867A289493FFFC76B10002C6B4DB
-:10391000600077350004C7386A008496FFE4C73832
-:103920006000C7384800073800109713FFFC9596D1
-:10393000FFDC9616FFD807880008E00126F8979369
-:10394000FFFC8616FFD88596FFDC0630000120328A
-:103950000011E600395C00000001F6020000962E1E
-:103960000EF8F70432C0F486E030C03A4A00E600B0
-:1039700039A400000001F704E0180000000177B846
-:10398000001E703EFFE1E60039A5000000010F8136
-:103990004000F70479C80000000107380001F7056E
-:1039A00079C8F70479C8F70471C400000001203A0F
-:1039B0000000E60039E1F6862C28F7042D380000D7
-:1039C000000106380001F6052D3877390002F4822F
-:1039D000000A20320044E60039E0B4BA6802F0057B
-:1039E0002D38F70471D4F68471CC07380001C03A41
-:1039F0006A00E60039FCF70571D4F00571D4F6844D
-:103A000071D4F70471D0F00571C4C0367200470C50
-:103A10000001F68432D00000000120360000E600EC
-:103A20003AC1F70571C8F704719800000001203A07
-:103A30000000E6003A6100000001F70475EC0000A8
-:103A40000001203A0000E6003A6000000001F7049F
-:103A500075F000000001203A0000E6003AB90000CD
-:103A60000001F58476F800000001202E0021E2001C
-:103A70003AACF6862C28F7042D38000000010638F1
-:103A80000001F6052D387739000220320044E600A7
-:103A90003A98B5BA6802F0052D38F4820022F48510
-:103AA00076F8F4847700E0003AB0F48576FCF0050F
-:103AB00076FCE0003AC0F0057A78E0003AC4F4867B
-:103AC000319CF4862EE0F48532D4F70471C80000EE
-:103AD0000001203A0000E6003B70F6862C28F7042F
-:103AE0002D380000000106380001F6052D38773921
-:103AF0000002F482000920320044E6003B70B4BAB0
-:103B00006802E0003B70F0052D38F7047A90000061
-:103B10000001C03A6A00EE003B29C5B40000C73876
-:103B20005A00E0003B30F7057A90C5B80000F00578
-:103B30007A90F7047A88F6867A2876390003A6B256
-:103B4000680207380001F7057A88F7047A98969694
-:103B5000FFF49682FF3CF4847A98F6867A2CC73874
-:103B600058009482FF409582FF44B5B26802F70581
-:103B70007A988796FFFC8296FFF802140000013CB9
-:103B80000000000000019293FFFC02900008221048
-:103B90000018F5047A88F7067A2CF5847A9076A9CD
-:103BA0000003A6B67002202E0000E6003BCD000008
-:103BB0000001F7047AA000000001C02A7200E600AC
-:103BC0003F18C02E6A00EE003F1900000001F68485
-:103BD00032C0F60432C88736141000000001C7381E
-:103BE000600097361410873614180000000107385B
-:103BF00000019736141887361418F70432B80000FD
-:103C00000001C7386000F70532B8F70432BC000085
-:103C1000000107380001F70532BCF70432BC202E42
-:103C20000000E6003C3DF6820000F70432E0F68535
-:103C30007A7007380001E0003C40F70532E0F505F6
-:103C40007A70F5846F5800000001202E0021E200F8
-:103C50003C84F6862C28F7042D3800000001063835
-:103C60000001F6052D387739000220320044E600C5
-:103C70003C78B5BA6802F0052D38F4820022E000E5
-:103C80003C88F4856F58F0056F54F58432C000000D
-:103C90000001902E0004872E000000000001203A51
-:103CA0000002E6003DB4000000018702FF3804ACCA
-:103CB0000EF49496FFECF7057A689493FFFC9596C2
-:103CC000FFE407880008E00043A09793FFFC859677
-:103CD000FFE420220000E6003D7000000001862E77
-:103CE0000EF80000000120320010E2003D0DF482C9
-:103CF000004C872E0F000000000107380001972EAE
-:103D00000F00872E0F00E0003D700000000194932B
-:103D1000FFFCF4867A289493FFFC76B10002C6B4C7
-:103D2000600077350004C7386A008496FFECC73816
-:103D30006000C7384800073800109713FFFC9596BD
-:103D4000FFE49616FFE007880008E00126F8979345
-:103D5000FFFC8616FFE08596FFE406300001203266
-:103D60000011E6003D6C00000001F6020000962EF6
-:103D70000EF8F70432C0F486E030C03A4A00E6009C
-:103D80003DB400000001F704E0180000000177B81E
-:103D9000001E703EFFE1E6003DB5000000010F810E
-:103DA0004000F70479C80000000107380001F7055A
-:103DB00079C8F70479C8F70471C400000001203AFB
-:103DC0000000E6003DF1F6862C28F7042D380000AF
-:103DD000000106380001F6052D3877390002F4821B
-:103DE000000A20320044E6003DF0B4BA6802F00553
-:103DF0002D38F70471D4F68471CC07380001C03A2D
-:103E00006A00E6003E0CF70571D4F00571D4F68423
-:103E100071D4F70471D0F00571C4C0367200470C3C
-:103E20000001F68432D00000000120360000E600D8
-:103E30003ED1F70571C8F704719800000001203ADF
-:103E40000000E6003E7100000001F70475EC000080
-:103E50000001203A0000E6003E7000000001F70477
-:103E600075F000000001203A0000E6003EC90000A5
-:103E70000001F58476F800000001202E0021E20008
-:103E80003EBCF6862C28F7042D38000000010638C9
-:103E90000001F6052D387739000220320044E60093
-:103EA0003EA8B5BA6802F0052D38F4820022F485E8
-:103EB00076F8F4847700E0003EC0F48576FCF005E7
-:103EC00076FCE0003ED0F0057A78E0003ED4F4863F
-:103ED000319CF4862EE0F48532D4F70471C80000DA
-:103EE0000001203A0000E6003F80F6862C28F70407
-:103EF0002D380000000106380001F6052D3877390D
-:103F00000002F482000920320044E6003F80B4BA87
-:103F10006802E0003F80F0052D38F7047A90000039
-:103F20000001C03A6A00EE003F39C5B40000C7384E
-:103F30005A00E0003F40F7057A90C5B80000F00550
-:103F40007A90F7047A88F6867A2876390003A6B242
-:103F5000680207380001F7057A88F7047A98969680
-:103F6000FFF49682FF3CF4847A98F6867A2CC73860
-:103F700058009482FF409582FF44B5B26802F7056D
-:103F80007A988796FFFC8296FFF802140000013CA5
-:103F90000000000000019293FFFC02900008221034
-:103FA0000010F5846F5800000001202E0021E2006F
-:103FB0003FE4F6862C28F7042D380000000106386F
-:103FC0000001F6052D387739000220320044E60062
-:103FD0003FD8B5BA6802F0052D38F5020022E0009E
-:103FE0003FE8F5056F58F0056F54F58432C00000C6
-:103FF0000001902E0004872E000000000001203AEE
-:104000000002E6004114000000018702FF38052C81
-:104010000EF49516FFF4F7057A689513FFFC959654
-:10402000FFEC07880008E00043A09793FFFC85960B
-:10403000FFEC20220000E60040D000000001862EA8
-:104040000EF80000000120320010E200406DF50281
-:10405000004C872E0F000000000107380001972E4A
-:104060000F00872E0F00E00040D0000000019513E4
-:10407000FFFCF5067A289513FFFC76B10002C6B462
-:10408000600077350004C7386A008516FFF4C7382A
-:104090006000C7385000073800109713FFFC959652
-:1040A000FFEC9616FFE807880008E00126F89793D2
-:1040B000FFFC8616FFE88596FFEC063000012032F3
-:1040C0000011E60040CC00000001F6020000962E30
-:1040D0000EF8F70432C0F506E030C03A5200E600B0
-:1040E000411400000001F704E0180000000177B857
-:1040F000001E703EFFE1E6004115000000010F8147
-:104100004000F70479C80000000107380001F705F6
-:1041100079C8F70479C8F70471C400000001203A97
-:104120000000E6004151F6862C28F7042D380000E7
-:10413000000106380001F6052D3877390002F50236
-:10414000000A20320044E6004150B53A6802F0050A
-:104150002D38F70471D4F68471CC07380001C03AC9
-:104160006A00E600416CF70571D4F00571D4F6845D
-:1041700071D4F70471D0F00571C4C0367200470CD9
-:104180000001F68432D00000000120360000E60075
-:104190004231F70571C8F704719800000001203A18
-:1041A0000000E60041D100000001F70475EC0000BA
-:1041B0000001203A0000E60041D000000001F704B1
-:1041C00075F000000001203A0000E60042290000DE
-:1041D0000001F58476F800000001202E0021E200A5
-:1041E000421CF6862C28F7042D3800000001063802
-:1041F0000001F6052D387739000220320044E60030
-:104200004208B5BA6802F0052D38F5020022F5051E
-:1042100076F8F5047700E0004220F50576FCF0051D
-:1042200076FCE0004230F0057A78E0004234F50692
-:10423000319CF5062EE0F50532D4F70471C8000074
-:104240000001203A0000E6004274F6862C28F704AC
-:104250002D380000000106380001F6052D387739A9
-:104260000002F502000920320044E6004274B53A2B
-:104270006802F0052D388796FFFC8296FFF802143D
-:104280000000013C0000000000019293FFFC02903E
-:104290000008F70632D49713FFFCF7062EE09713B9
-:1042A000FFFC07880008E00014F49793FFFCF70672
-:1042B00032D49713FFFCF7062F6C9713FFFC078887
-:1042C0000008E00014F49793FFFCF70632D497132C
-:1042D000FFFCF7062FF89713FFFC07880008E000A3
-:1042E00014F49793FFFCF70632D49713FFFCF706FC
-:1042F00030849713FFFC07880008E00014F49793BC
-:10430000FFFCF70632D49713FFFCF7063110971322
-:10431000FFFC07880008E00014F49793FFFCF70601
-:1043200032D49713FFFCF706319C9713FFFC0788E4
-:104330000008E00014F49793FFFCF70632D49713BB
-:10434000FFFCF70632289713FFFC07880008E000FF
-:1043500014F49793FFFC8796FFFC8296FFF80214F3
-:104360000000013C0000000000019293FFFC02905D
-:104370000008871600000000000186BA0000873A96
-:10438000000400000001C0367200440C0001879652
-:10439000FFFC8296FFF802140004013C00000000BC
-:1043A00000019293FFFC0290000885960000000037
-:1043B0000001862E000086AE000420320010E200CC
-:1043C00043D00000000120360010E20043ED073426
-:1043D0000001872E000C0000000107380001972E15
-:1043E000000C872E000CE0004414F4020000C03AD8
-:1043F0006200E6004411F402000020360010E600DE
-:1044000044140000000120320000E60044140000C3
-:104410000001F40200018796FFFC8296FFF8021467
-:104420000004013C0000000000019293FFFC029098
-:104430000008F7020001F7053524F7046F44000077
-:104440000001F7053528F70632F49713FFFCF7064D
-:1044500035309713FFFC07880008E0001548979354
-:10446000FFFCF70245049713FFFCF702000D9713BA
-:10447000FFFCF70632F49713FFFC07880008E00002
-:10448000161C9793FFFCF7024A049713FFFCF702F0
-:10449000000F9713FFFCF70633809713FFFC078884
-:1044A0000008E000161C9793FFFCF7024EEC9713F0
-:1044B000FFFCF70200089713FFFCF706340C971374
-:1044C000FFFC07880008E000161C9793FFFCF7022A
-:1044D00057649713FFFCF70200079713FFFCF706DA
-:1044E00034989713FFFC07880008E000161C979388
-:1044F000FFFC8796FFFC8296FFF802140000013C47
-:104500000000000000019293FFFC029000082210BE
-:104510000014F70475F800000001203A0000E600DE
-:10452000452DF68675F8E0004544F7020000F704D3
-:1045300076040000000177390002C7386800873A26
-:10454000001800000001203A0000E600455CF70575
-:104550003548F4863380E00049F0F4853530F704BF
-:104560006F5400000001203A0000E6004580F4820C
-:104570000008F4820001F4856F54E0004588F702DA
-:104580000001F4856F58F7020000203A0000E600B1
-:1045900045A0F4820004F486340CE00049F0F48570
-:1045A0003530F6843548F604352CF4B72800073446
-:1045B0000002F4820001F4BB28008732008CF482F0
-:1045C00000019736001887320090F4856F509736B7
-:1045D000000484B200840000000194B6001084B28C
-:1045E00000880000000194B6001484B6001000009A
-:1045F000000194B6000884B600140000000194B6CF
-:10460000000C84B2009800000001F4853554F48257
-:1046100000019482FF80F5043554F4863498F485C3
-:1046200035309502FF3885B2000006B4002495822B
-:10463000FF3C9682FF4087320004F6853550970292
-:10464000FF4486B20004F005354CF704354095165A
-:10465000FFF49596FFF4C7386800F7053540F584F8
-:10466000352886B20004872E141400000001C738D4
-:104670006800972E14148732008000000001203A51
-:104680000001EE0049F0F7060C3EC07E7400E60023
-:1046900046A400000001C07E7400E60046950000BC
-:1046A0000001F7060C3EC77C7400203A0010E600BB
-:1046B00049F000000001FF8200108682FF38F704F5
-:1046C0003558F5846F58F685355407380001202E8B
-:1046D0000021E2004708F7053558F7042D38F68623
-:1046E0002C2806380001F6052D38773900022032D3
-:1046F0000044E60046FCB5BA6802F0052D38F482A5
-:104700000022E000470CF4856F58F0056F54F684E2
-:10471000352C0000000187360094C4840000C03AA4
-:104720004A00E60047710000000186360094F684D6
-:1047300035540000000176B4FFF0F7043554969626
-:10474000FFF4473900009716FFF0C6B47000F70475
-:10475000354877B4000F703EFFE107380024E600CB
-:104760004769C638600006B40001C7046E00F7331D
-:104770002800F6843544000000018736000400005C
-:104780000001203A000FE20047BD073800018736DC
-:10479000000C00000001073800019736000C873636
-:1047A000000CE00047D000000001F7043528F68235
-:1047B000000107380008E0004968F7053544203A51
-:1047C0000010E60047CC00000001F7020000973619
-:1047D0000004F704353CF684352807380001F70556
-:1047E000353CF704353C8736141C000000010738BF
-:1047F00000019736141CF704760486B6141CF604E0
-:1048000075FC07380001F684760000000001C03A0C
-:104810006A00E600481CF7057604F0057604F68485
-:104820007604F7047608F00575FCC0367200470C74
-:10483000000120320000E6004881F70575F8F70412
-:104840007648F4867218C03A4A00470C0001203AB4
-:104850000000E6004881F6862C28F7042D38000079
-:10486000000106380001F6052D3877390002F48280
-:10487000000E20320044E6004880B4BA6802F00519
-:104880002D38F5020000202A0002EE004968F68269
-:104890000000F68435280000000187360000000083
-:1048A0000001203A0002E600493C05B40008959357
-:1048B000FFFC9516FFEC9596FFE89696FFE40788B7
-:1048C0000008E0005EDC9793FFFC8516FFEC859600
-:1048D000FFE88696FFE420220000E600492CF7025C
-:1048E00000008636000C000000012032000FE200BC
-:1048F000491100000001873600140000000107384C
-:1049000000019736001487360014E000492CF702A6
-:10491000000076B10002C6B4600077350005C738E4
-:104920006A00C738600007380010C72C7000203AB2
-:104930000000E60047A8F705352CF6843528F70473
-:104940006F4C00000001C0367200E600495C07347D
-:104950001494F4846F44E0004960F4853528F70529
-:104960003528E00048840528000120360000E600D4
-:1049700049A1F6862C28F7042D38000000010638DE
-:104980000001F6052D3877390002F482000D20323F
-:104990000044E60049A8B4BA6802E00049A8F0055E
-:1049A0002D38F4820001F4853524F6843528F70487
-:1049B0006F44F48632F4C0367200E60049F0F485A4
-:1049C0003530F704E0180000000177B8001F703E92
-:1049D000FFE1E60049F1000000010F814000F7040B
-:1049E00079C80000000107380001F70579C8F7040D
-:1049F00079C88796FFFC8296FFF802140000013CFC
-:104A00000000000000019293FFFC029000082210B9
-:104A10000014F70475F800000001203A0000E600D9
-:104A20004A2DF68675F8E0004A40F6820000F70449
-:104A300076040000000177390002C738680086BAA2
-:104A40000018F7046F5400000001203A0000E6004F
-:104A50004A64F6853548F4820001F4856F54E0001D
-:104A60004A70F7020001F4820008F4856F58F702DB
-:104A70000000203A0000E6004A88F4820004F48630
-:104A8000340CE0004ED8F4853530F6843548F60411
-:104A9000352CF4B7280007340002F4820001F4BB7F
-:104AA00028008732008CF482000197360018873284
-:104AB0000090F4856F509736000484B200840000A3
-:104AC000000194B6001084B200880000000194B682
-:104AD000001484B600100000000194B6000884B6EB
-:104AE00000140000000194B6000C84B2009800008D
-:104AF0000001F4853554F48200019482FF80F504AE
-:104B00003554F4863498F48535309502FF3885B2F3
-:104B1000000006B400249582FF3C9682FF40873255
-:104B20000004F68535509702FF4486B20004F00574
-:104B3000354CF70435409516FFF49596FFF4C738C9
-:104B40006800F7053540F584352886B20004872EC5
-:104B5000141400000001C7386800972E141487321F
-:104B6000008000000001203A0001EE004ED8F70658
-:104B70000C3EC07E7400E6004B8C00000001C07E3D
-:104B80007400E6004B7D00000001F7060C3EC77C78
-:104B90007400203A0010E6004ED800000001FF82A9
-:104BA00000108682FF38F7043558F5846F58F68573
-:104BB000355407380001202E0021E2004BF0F705A4
-:104BC0003558F7042D38F6862C2806380001F605EE
-:104BD0002D387739000220320044E6004BE4B5BAA4
-:104BE0006802F0052D38F4820022E0004BF4F485D1
-:104BF0006F58F0056F54F684352C0000000187369D
-:104C00000094C4840000C03A4A00E6004C590000F9
-:104C1000000186360094F68435540000000176B415
-:104C2000FFF0F70435549696FFF4473900009716C5
-:104C3000FFF0C6B47000F704354877B4000F703E3B
-:104C4000FFE107380024E6004C51C638600006B486
-:104C50000001C7046E00F7332800F68435440000D5
-:104C600000018736000400000001203A000FE20036
-:104C70004CA5073800018736000C000000010738FA
-:104C800000019736000C8736000CE0004CB800009D
-:104C90000001F7043528F682000107380008E0001B
-:104CA0004E50F7053544203A0010E6004CB40000A1
-:104CB0000001F702000097360004F704353CF68443
-:104CC000352807380001F705353CF704353C8736B1
-:104CD000141C00000001073800019736141CF7046B
-:104CE000760486B6141CF60475FC07380001F684B9
-:104CF000760000000001C03A6A00E6004D04F705A6
-:104D00007604F0057604F6847604F7047608F00558
-:104D100075FCC0367200470C000120320000E6002E
-:104D20004D69F70575F8F7047648F4867218C03AAD
-:104D30004A00470C0001203A0000E6004D69F68663
-:104D40002C28F7042D380000000106380001F60574
-:104D50002D3877390002F482000E20320044E6003C
-:104D60004D68B4BA6802F0052D38F5020000202A1B
-:104D70000002EE004E50F6820000F6843528000056
-:104D800000018736000000000001203A0002E60022
-:104D90004E2405B400089593FFFC9516FFEC9596FC
-:104DA000FFE89696FFE407880008E0005EDC979332
-:104DB000FFFC8516FFEC8596FFE88696FFE420222F
-:104DC0000000E6004E14F70200008636000C0000DA
-:104DD00000012032000FE2004DF90000000187368B
-:104DE00000140000000107380001973600148736D0
-:104DF0000014E0004E14F702000076B10002C6B4C1
-:104E0000600077350005C7386A00C738600007388A
-:104E10000010C72C7000203A0000E6004C90F70507
-:104E2000352CF6843528F7046F4C00000001C0369D
-:104E30007200E6004E4407341494F4846F44E0009A
-:104E40004E48F4853528F7053528E0004D6C0528D7
-:104E5000000120360000E6004E89F6862C28F70473
-:104E60002D380000000106380001F6052D3877398D
-:104E70000002F482000D20320044E6004E90B4BAE5
-:104E80006802E0004E90F0052D38F4820001F485B0
-:104E90003524F6843528F7046F44F48632F4C0369E
-:104EA0007200E6004ED8F4853530F704E0180000B3
-:104EB000000177B8001F703EFFE1E6004ED9000008
-:104EC00000010F814000F70479C800000001073895
-:104ED0000001F70579C8F70479C88796FFFC829628
-:104EE000FFF802140000013C000000000001929352
-:104EF000FFFC0290000822100014F6843548F604E6
-:104F0000352CF4820004F4B7280007340002F48240
-:104F10000001F4BB28008732008CF4820001973630
-:104F2000001887320090F4856F509736000484B2E1
-:104F300000840000000194B6001084B200880000D4
-:104F4000000194B6001484B600100000000194B66D
-:104F5000000884B600140000000194B6000C84B26E
-:104F6000009800000001F4853554F4820001948219
-:104F7000FF80F5043554F4863498F4853530950275
-:104F8000FF3885B2000006B400249582FF3C96826B
-:104F9000FF4087320004F68535509702FF4486B201
-:104FA0000004F005354CF70435409516FFF495964E
-:104FB000FFF4C7386800F7053540F584352886B218
-:104FC0000004872E141400000001C7386800972ED3
-:104FD00014148732008000000001203A0001EE0026
-:104FE000534CF7060C3EC07E7400E60050000000F3
-:104FF0000001C07E7400E6004FF100000001F706DA
-:105000000C3EC77C7400203A0010E600534C0000B0
-:105010000001FF8200108682FF38F7043558F584BE
-:105020006F58F685355407380001202E0021E20024
-:105030005064F7053558F7042D38F6862C280638C5
-:105040000001F6052D387739000220320044E600D1
-:105050005058B5BA6802F0052D38F4820022E000FD
-:105060005068F4856F58F0056F54F684352C0000B5
-:10507000000187360094C4840000C03A4A00E6006C
-:1050800050CD0000000186360094F68435540000AF
-:10509000000176B4FFF0F70435549696FFF44739D3
-:1050A00000009716FFF0C6B47000F704354877B4D7
-:1050B000000F703EFFE107380024E60050C5C638F7
-:1050C000600006B40001C7046E00F7332800F684C0
-:1050D0003544000000018736000400000001203A3A
-:1050E000000FE2005119073800018736000C00005C
-:1050F0000001073800019736000C8736000CE000ED
-:10510000512C00000001F7043528F6820001073811
-:105110000008E00052C4F7053544203A0010E600CC
-:10512000512800000001F702000097360004F70440
-:10513000353CF684352807380001F705353CF7047F
-:10514000353C8736141C00000001073800019736F3
-:10515000141CF704760486B6141CF60475FC073894
-:105160000001F684760000000001C03A6A00E60003
-:105170005178F7057604F0057604F6847604F70492
-:105180007608F00575FCC0367200470C000120322D
-:105190000000E60051DDF70575F8F7047648F4865F
-:1051A0007218C03A4A00470C0001203A0000E6009D
-:1051B00051DDF6862C28F7042D3800000001063852
-:1051C0000001F6052D3877390002F482000E2032F6
-:1051D0000044E60051DCB4BA6802F0052D38F5024F
-:1051E0000000202A0002EE0052C4F6820000F6847D
-:1051F0003528000000018736000000000001203A39
-:105200000002E600529805B400089593FFFC95163D
-:10521000FFEC9596FFE89696FFE407880008E0000B
-:105220005EDC9793FFFC8516FFEC8596FFE886967B
-:10523000FFE420220000E6005288F70200008636D4
-:10524000000C000000012032000FE200526D00004F
-:10525000000187360014000000010738000197366E
-:10526000001487360014E0005288F702000076B17F
-:105270000002C6B4600077350005C7386A00C73839
-:10528000600007380010C72C7000203A0000E600CC
-:105290005104F705352CF6843528F7046F4C0000CF
-:1052A0000001C0367200E60052B807341494F4844A
-:1052B0006F44E00052BCF4853528F7053528E0003E
-:1052C00051E00528000120360000E60052FDF68678
-:1052D0002C28F7042D380000000106380001F605DF
-:1052E0002D3877390002F482000D20320044E600A8
-:1052F0005304B4BA6802E0005304F0052D38F48278
-:105300000001F4853524F6843528F7046F44F486CB
-:1053100032F4C0367200E600534CF4853530F704A1
-:10532000E0180000000177B8001F703EFFE1E600C2
-:10533000534D000000010F814000F70479C80000C0
-:10534000000107380001F70579C8F70479C8879686
-:10535000FFFC8296FFF802140000013C00000000F0
-:1053600000019293FFFC0290000822100014F484C4
-:105370003554F684354CF584352C9482FF3876B557
-:105380000003A52E6802000000019502FF3CF38493
-:105390003550C6AC68009382FF4087360004000099
-:1053A00000019702FF4486360004F70435400000F0
-:1053B0000001C7386000F7053540F604352886B689
-:1053C0000004873214149496FFF4C73868009732AB
-:1053D0001414872E008000000001203A0001EE0026
-:1053E00057509516FFF4F7060C3EC07E7400E60099
-:1053F000540400000001C07E7400E60053F5000074
-:105400000001F7060C3EC77C7400203A0010E6004D
-:10541000575000000001FF8200108682FF38F70419
-:105420003558F5846F58F685355407380001202E1D
-:105430000021E2005468F7053558F7042D38F68648
-:105440002C2806380001F6052D3877390002203265
-:105450000044E600545CB5BA6802F0052D38F382CA
-:105460000022E000546CF3856F58F0056F54F68409
-:10547000352C0000000187360094C3840000C03A38
-:105480003A00E60054D10000000186360094F6840C
-:1054900035540000000176B4FFF0F70435549696B9
-:1054A000FFF4473900009716FFF0C6B47000F70408
-:1054B000354877B4000F703EFFE107380024E6005E
-:1054C00054C9C638600006B40001C7046E00F73343
-:1054D0002800F684354400000001873600040000EF
-:1054E0000001203A000FE200551D07380001873601
-:1054F000000C00000001073800019736000C8736C9
-:10550000000CE000553000000001F7043528F68259
-:10551000000107380008E00056C8F7053544203A76
-:105520000010E600552C00000001F702000097363D
-:105530000004F704353CF684352807380001F705E8
-:10554000353CF704353C8736141C00000001073851
-:1055500000019736141CF704760486B6141CF60472
-:1055600075FC07380001F684760000000001C03A9F
-:105570006A00E600557CF7057604F0057604F684AB
-:105580007604F7047608F00575FCC0367200470C07
-:10559000000120320000E60055E1F70575F8F70438
-:1055A0007648F3867218C03A3A00470C0001203A58
-:1055B0000000E60055E1F6862C28F7042D3800009F
-:1055C000000106380001F6052D3877390002F38214
-:1055D000000E20320044E60055E0B3BA6802F00540
-:1055E0002D38F5020000202A0002EE0056C8F6828F
-:1055F0000000F68435280000000187360000000016
-:105600000001203A0002E600569C05B4000895937C
-:10561000FFFC9516FFEC9596FFE89696FFE4078849
-:105620000008E0005EDC9793FFFC8516FFEC859692
-:10563000FFE88696FFE420220000E600568CF70281
-:1056400000008636000C000000012032000FE2004E
-:105650005671000000018736001400000001073871
-:1056600000019736001487360014E000568CF702CC
-:10567000000076B10002C6B4600077350005C73877
-:105680006A00C738600007380010C72C7000203A45
-:105690000000E6005508F705352CF6843528F70498
-:1056A0006F4C00000001C0367200E60056BC0734A3
-:1056B0001494F3846F44E00056C0F3853528F70551
-:1056C0003528E00055E40528000120360000E600FA
-:1056D0005701F6862C28F7042D3800000001063803
-:1056E0000001F6052D3877390002F382000D2032D3
-:1056F0000044E6005708B3BA6802E0005708F00516
-:105700002D38F3820001F3853524F6843528F7041B
-:105710006F44F38632F4C0367200E6005750F385CA
-:105720003530F704E0180000000177B8001F703E24
-:10573000FFE1E6005751000000010F814000F7042F
-:1057400079C80000000107380001F70579C8F7049F
-:1057500079C88796FFFC8296FFF802140000013C8E
-:105760000000000000019293FFFC0290000822104C
-:1057700000148702FF38F384352CF7053554871E53
-:105780000080F504354C27380001C02A7200E6007D
-:105790005A4C00000001F5846F5800000001202ED3
-:1057A0000021E20057D8F6862C28F7042D38000097
-:1057B000000106380001F6052D3877390002203245
-:1057C0000044E60057CCB5BA6802F0052D38F30264
-:1057D0000022E00057DCF3056F58F0056F54F684A3
-:1057E000352C0000000187360094C3040000C03A45
-:1057F0003200E60058410000000186360094F6842D
-:1058000035540000000176B4FFF0F7043554969645
-:10581000FFF4473900009716FFF0C6B47000F70494
-:10582000354877B4000F703EFFE107380024E600EA
-:105830005839C638600006B40001C7046E00F7335B
-:105840002800F6843544000000018736000400007B
-:105850000001203A000FE200588D0738000187361A
-:10586000000C00000001073800019736000C873655
-:10587000000CE00058A000000001F7043528F68273
-:10588000000107380008E0005A38F7053544203A8F
-:105890000010E600589C00000001F7020000973657
-:1058A0000004F704353CF684352807380001F70575
-:1058B000353CF704353C8736141C000000010738DE
-:1058C00000019736141CF704760486B6141CF604FF
-:1058D00075FC07380001F684760000000001C03A2C
-:1058E0006A00E60058ECF7057604F0057604F684C5
-:1058F0007604F7047608F00575FCC0367200470C94
-:10590000000120320000E6005951F70575F8F70450
-:105910007648F3067218C03A3200470C0001203A6C
-:105920000000E6005951F6862C28F7042D380000B7
-:10593000000106380001F6052D3877390002F30220
-:10594000000E20320044E6005950B33A6802F005D8
-:105950002D38F5020000202A0002EE005A38F682A7
-:105960000000F684352800000001873600000000A2
-:105970000001203A0002E6005A0C05B40008959395
-:10598000FFFC9516FFEC9596FFE89696FFE40788D6
-:105990000008E0005EDC9793FFFC8516FFEC85961F
-:1059A000FFE88696FFE420220000E60059FCF7029B
-:1059B00000008636000C000000012032000FE200DB
-:1059C00059E100000001873600140000000107388B
-:1059D00000019736001487360014E00059FCF702E6
-:1059E000000076B10002C6B4600077350005C73804
-:1059F0006A00C738600007380010C72C7000203AD2
-:105A00000000E6005878F705352CF6843528F704B1
-:105A10006F4C00000001C0367200E6005A2C0734BB
-:105A20001494F3046F44E0005A30F3053528F70569
-:105A30003528E00059540528000120360000E60012
-:105A40005DC4F3020001E0005DF000000001772971
-:105A50000003C71C7000873A00040528000176A9DE
-:105A60000003F4843554F60435509482FF38A41EA4
-:105A70006802C63070009402FF3C9602FF40C69C4C
-:105A8000680087360004000000019702FF4485B6D5
-:105A90000004F704354000000001C7385800F7053E
-:105AA000354085B60004F505354CF6843528F605F5
-:105AB0003550873614149496FFF4C738580097363B
-:105AC0001414871E008000000001203A0001EE003F
-:105AD0005E3C9416FFF4F7060C3EC07E7400E600B0
-:105AE0005AF400000001C07E7400E6005AE5000090
-:105AF0000001F7060C3EC77C7400203A0010E60057
-:105B00005E3C00000001FF8200108682FF38F7042F
-:105B10003558F5846F58F685355407380001202E26
-:105B20000021E2005B58F7053558F7042D38F6865A
-:105B30002C2806380001F6052D387739000220326E
-:105B40000044E6005B4CB5BA6802F0052D38F3025C
-:105B50000022E0005B5CF3056F58F0056F54F6849B
-:105B6000352C0000000187360094C3040000C03AC1
-:105B70003200E6005BC10000000186360094F68426
-:105B800035540000000176B4FFF0F70435549696C2
-:105B9000FFF4473900009716FFF0C6B47000F70411
-:105BA000354877B4000F703EFFE107380024E60067
-:105BB0005BB9C638600006B40001C7046E00F73355
-:105BC0002800F684354400000001873600040000F8
-:105BD0000001203A000FE2005C0D07380001873613
-:105BE000000C00000001073800019736000C8736D2
-:105BF000000CE0005C2000000001F7043528F6826C
-:105C0000000107380008E0005DB8F7053544203A88
-:105C10000010E6005C1C00000001F702000097364F
-:105C20000004F704353CF684352807380001F705F1
-:105C3000353CF704353C8736141C0000000107385A
-:105C400000019736141CF704760486B6141CF6047B
-:105C500075FC07380001F684760000000001C03AA8
-:105C60006A00E6005C6CF7057604F0057604F684BD
-:105C70007604F7047608F00575FCC0367200470C10
-:105C8000000120320000E6005CD1F70575F8F7044A
-:105C90007648F3067218C03A3200470C0001203AE9
-:105CA0000000E6005CD1F6862C28F7042D380000B1
-:105CB000000106380001F6052D3877390002F3029D
-:105CC000000E20320044E6005CD0B33A6802F005D2
-:105CD0002D38F5020000202A0002EE005DB8F682A1
-:105CE0000000F6843528000000018736000000001F
-:105CF0000001203A0002E6005D8C05B4000895938F
-:105D0000FFFC9516FFEC9596FFE89696FFE4078852
-:105D10000008E0005EDC9793FFFC8516FFEC85969B
-:105D2000FFE88696FFE420220000E6005D7CF70293
-:105D300000008636000C000000012032000FE20057
-:105D40005D61000000018736001400000001073883
-:105D500000019736001487360014E0005D7CF702DE
-:105D6000000076B10002C6B4600077350005C73880
-:105D70006A00C738600007380010C72C7000203A4E
-:105D80000000E6005BF8F705352CF6843528F704AB
-:105D90006F4C00000001C0367200E6005DAC0734B5
-:105DA0001494F3046F44E0005DB0F3053528F70563
-:105DB0003528E0005CD40528000120360000E6000C
-:105DC0005DF1F3020001F7042D38F6862C28063821
-:105DD0000001F6052D3877390002F302000D20325C
-:105DE0000044E6005DF4B33A6802E0005DF4F005BB
-:105DF0002D38F3053524F6843528F7046F44F3066F
-:105E000032F4C0367200E6005E3CF3053530F7042C
-:105E1000E0180000000177B8001F703EFFE1E600C7
-:105E20005E3D000000010F814000F70479C80000CA
-:105E3000000107380001F70579C8F70479C887968B
-:105E4000FFFC8296FFF802140000013C00000000F5
-:105E500000019293FFFC02900008F706353097137B
-:105E6000FFFCF70632F49713FFFC07880008E000F8
-:105E700014F49793FFFCF70635309713FFFCF706F1
-:105E800033809713FFFC07880008E00014F4979311
-:105E9000FFFCF70635309713FFFCF706340C971319
-:105EA000FFFC07880008E00014F49793FFFCF70656
-:105EB00035309713FFFCF70634989713FFFC0788DB
-:105EC0000008E00014F49793FFFC8796FFFC82968D
-:105ED000FFF802140000013C000000000001929352
-:105EE000FFFC0290000886160000000000018732C7
-:105EF000000400000001203A000F86B20000C538FF
-:105F00000000EE005F2CC5B400002036000FEE004C
-:105F10005F2C00000001203A0000EC005F2D000023
-:105F2000000120360000EC005F48000000018732CD
-:105F3000000C00000001073800019732000C873286
-:105F4000000CE0005F50F4020000C02A5A00440C2C
-:105F500000018796FFFC8296FFF802140004013CC2
-:105F6000000000000001000000009293FFFC02907E
-:105F70000008F68635609693FFFCF68642309693CD
-:105F8000FFFC07880008E00015489793FFFCF682A5
-:105F900066F89693FFFCF78200179793FFFCF6864E
-:105FA00035609693FFFC07880008E000161C979365
-:105FB000FFFCF68269809693FFFCF78200189793A6
-:105FC000FFFCF68635609693FFFC07880008E0002A
-:105FD000161C9793FFFCF6826B509693FFFCF7829A
-:105FE00000169793FFFCF68635609693FFFC0788B2
-:105FF0000008E000161C9793FFFCF68261789693E8
-:10600000FFFCF782001F9793FFFCF686356096939E
-:10601000FFFC07880008E000161C9793FFFCF6823F
-:10602000627C9693FFFCF78200209793FFFCF68634
-:1060300035609693FFFC07880008E000161C9793D4
-:10604000FFFCF68266F89693FFFCF78200179793A1
-:10605000FFFCF68635EC9693FFFC07880008E0000D
-:10606000161C9793FFFCF68269809693FFFCF782DB
-:1060700000189793FFFCF68635EC9693FFFC078893
-:106080000008E000161C9793FFFCF6826B50969375
-:10609000FFFCF78200169793FFFCF68635EC96938B
-:1060A000FFFC07880008E000161C9793FFFCF682AF
-:1060B00061789693FFFCF782001F9793FFFCF686AA
-:1060C00035EC9693FFFC07880008E000161C9793B8
-:1060D000FFFCF682627C9693FFFCF7820020979388
-:1060E000FFFCF68635EC9693FFFC07880008E0007D
-:1060F000161C9793FFFCF704E02800000001203AEB
-:106100000000E600611500000001F704E028E0004F
-:10611000611877390002F70200F0F7054228F70608
-:10612000408AF03B2800F706408CF03B2800F7023D
-:106130000000F7057AC0F7057AB8F7057AB0F705D9
-:106140007AC8F682C3509693FFFCF68200169693A7
-:10615000FFFCF68642309693FFFC07880008E001BA
-:106160001EC09793FFFC8796FFFC8296FFF80214EF
-:106170000000013C0000000000019293FFFC02902F
-:106180000008F6046F340000000120320000E60031
-:1061900061ED76B1001E8732000076B4FFE5C738A6
-:1061A0006FC07739FFF0203A0007E60061EC06B0D7
-:1061B00000028736000076B5001E76B4FFE5C738CA
-:1061C0006FC07739FFF0203A0001E60061ECF50678
-:1061D00035ECF704423000000001C03A5200470C91
-:1061E0000001203A0000E6006211F5820000F70489
-:1061F00042A0F60642A276B1001E76B4FFE5C7388B
-:106200006FC07739FFF007380001E0006268F733AC
-:1062100028008732000400000001F705E00086B284
-:106220000008203A0000E600623CF685E0042036D3
-:106230000000E6006240202E0000F5820001202EC2
-:106240000000E6006265F60642A2F70442A076B1BD
-:10625000001E76B4FFE5C7386FC07739FFF0073806
-:106260000001F7332800F00542288796FFFC82964C
-:10627000FFF802140000013C0000000000019293AE
-:10628000FFFC02900008F704423CF6846F340738A4
-:10629000000120360000E60062B1F705423C873677
-:1062A0000000F59E0002C03A5A00E60062BDF58685
-:1062B00035ECF70442A0E00062DCF60642A2F704E7
-:1062C000423000000001C03A5A00470C0001203A59
-:1062D0000000E60062F9F60642A4F70442A476B193
-:1062E000001E76B4FFE5C7386FC07739FFF0073876
-:1062F0000001E000630CF73328009693FFFC078849
-:106300000008E00063209793FFFCF0054228879681
-:10631000FFFC8296FFF802140000013C0000000020
-:1063200000019293FFFC02900008221000208316C7
-:10633000000000000001871A001800000001203A48
-:106340000000E600636CF7020000839A001C000066
-:106350000001F3857AC0849A0014F7057AC8F485A1
-:106360007AB0F7057AB88316000000000001869A1B
-:106370000014F7047AB000000001C0367200E60095
-:1063800063D0F6020000869A001CF7047AC0000071
-:106390000001C0367200E60063D000000001869A5A
-:1063A0000018F7047AB800000001C0367200E60059
-:1063B00063D000000001869A0020F7047AC800002C
-:1063C0000001C7386800203A0064EE0063D920322B
-:1063D0000000F602000120320000E60064580000D0
-:1063E00000018396000000000001871E00180000D5
-:1063F0000001203A0000E600643CF7020000F705C7
-:106400004080F7054084F6846E50F482FFFF831EBF
-:10641000000CF4854F5493360010839E0010849630
-:10642000000093B6001484A600080000000194B692
-:106430001DDCF6820064F6854A98F7054A9C8316AF
-:10644000000000000001871A002000000001203A2F
-:106450000000EE00647CF3820000F70442A4F6061C
-:1064600042A676B1001E76B4FFE5C7386FC0773913
-:10647000FFF007380001E00066E4F7332800939648
-:10648000FFF484160000F48642C89496FFECF302F1
-:10649000000C9316FFE4839600008496FFF4871E99
-:1064A000002000000001C0267200EC006648F38660
-:1064B0004A9884A200248316FFE4C5040000B49A1D
-:1064C0003802C7183800832200288396FFF4849688
-:1064D000FFE4933A000493BA0008F604E000F306E0
-:1064E0004A98A6A63002F5820000C0326A00E60093
-:1064F0006510C6380000F684E0048732000400000E
-:106500000001C0367200E6006514202E0000F582FE
-:106510000001202E0000E600652100000001F502C8
-:106520000000F684E0008732000000000001C03661
-:106530007200E200655CF5820000C0367200E60081
-:106540006564202E0000F684E00487320004000019
-:106550000001C0367200E2006565202E0000F58261
-:106560000001202E0000E6006575202A0000F502DB
-:106570000001202A0000E6006588000000018396E3
-:10658000FFF400000001F3854F548722002C76A110
-:10659000001E76B4FFE505A0002E762D001E763095
-:1065A000FFE5F48200009496FFDC8316FFEC2026C2
-:1065B0000007C7386FC07738FFF0F71B2800872E19
-:1065C000000006980002C73867C07738FFF0E20085
-:1065D000661CF73728008516FFEC8596FFDC000067
-:1065E0000001C72C400086BA0030062800040528A8
-:1065F000000205AC00028396FFDC7739001E773875
-:10660000FFE5039C00019396FFDC201E0007C6B443
-:1066100077C076B4FFF0E20065E1F6B3280004200D
-:10662000001C8496FFEC8316FFE48396FFF404A419
-:1066300000149496FFEC0318000C9316FFE4039CDF
-:106640000001E00064949396FFF48496000000003B
-:1066500000018726002000000001F7054A9C85A65E
-:106660000020F7047AB80000000107380001F705A0
-:106670007AB8F7047AB8F6847AC886260018C6B4C1
-:1066800058008726001C0000000127380001C03296
-:106690007200470C0001203A0000E60066E5F6852E
-:1066A0007AC883260008F7046E50F3053B6483A67E
-:1066B0000008F682000093BA1DDC84A6000C831645
-:1066C000000094BA0010831A0010F6857AC8933A35
-:1066D0000014F7020001F7054084F6857AC0F685BC
-:1066E0007AB8F6857AB08796FFFC8296FFF8021496
-:1066F0000004013C0000000000019293FFFC0290A6
-:10670000000822100008F3846F3400000001871E87
-:106710000018F684E01C00000001C0367200EC0096
-:106720006729F7020001F7020000203A0000E600A6
-:1067300067E8F5820001F704E01C869E001800005F
-:106740000001C03A6A00470C0001203A0000E60050
-:1067500067E9C5840000869E0010F704E000F60299
-:106760000000C0367200E6006788051C0010869E97
-:106770000014F704E00400000001C0367200E600D7
-:10678000678C20320000F602000120320000E60093
-:10679000679900000001F582000086AA0000F70456
-:1067A000E00000000001C0367200E20067D4F6028B
-:1067B0000000C0367200E60067DC2032000086AAC6
-:1067C0000004F704E00400000001C0367200E2009B
-:1067D00067DD20320000F602000120320000E600F2
-:1067E00067ED202E0000F5820001202E0000E6005B
-:1067F0006810F606429CF704429C76B1001E76B4FF
-:10680000FFE5C7386FC07739FFF007380001F7336D
-:106810002800F70475F475ACFFE1203A0000E600AB
-:1068200068459596FFF4F7044298F606429876B1CB
-:10683000001E76B4FFE5C7386FC07739FFF0073820
-:106840000001F7332800871E0020041C002076A1D9
-:10685000001E76B4FFE5C7386FC07739FFF0203AE5
-:106860000008EE0068C4F3061554F5020000059C0C
-:106870000022C4AC0000F60200018722000076A1CD
-:10688000001E76B4FFE5C7386FC07739FFF0C02A25
-:106890007200EC0068C0C6A46000A726600276B54E
-:1068A000001E76B4FFE505280001C7386FC07739B0
-:1068B000FFE8F72F680005AC0001E00068780630BB
-:1068C0000002F30615549313FFFCF704E0240000C4
-:1068D00000019713FFFCF704E01C00000001971370
-:1068E000FFFCF306E0009313FFFC9393FFFCF3021D
-:1068F00000019313FFFC07880008E000EE64979303
-:10690000FFFC20220000E6006928F606429EF704FC
-:10691000429C76B1001E76B4FFE5C7386FC0773968
-:10692000FFF007380001F73328008316FFF400005A
-:106930000001201A0000E600696CF30635ECF7044C
-:10694000423000000001C03A3200470C0001203AFA
-:106950000000E600696DF0054228F3063560F30596
-:10696000423007880008E000789C9793FFFC8796E8
-:10697000FFFC8296FFF802140000013C00000000BA
-:1069800000019293FFFC0290000822100004F5041D
-:106990006F34F7044240862A001807380001F68455
-:1069A000E01CF7054240C0366200EC0069B5F70212
-:1069B0000001F7020000203A0000E6006A80F702BA
-:1069C0000001F704E01C86AA001800000001C03A8C
-:1069D0006A00470C0001203A0000E6006A7DC58489
-:1069E000000086AA0010F704E000F6020000C0369E
-:1069F0007200E6006A1404A8001086AA0014F704C6
-:106A0000E00400000001C0367200E6006A1820327F
-:106A10000000F602000120320000E6006A250000B6
-:106A20000001F582000086A60000F704E0000000E7
-:106A30000001C0367200E2006A60F6020000C03653
-:106A40007200E6006A682032000086A60004F7049F
-:106A5000E00400000001C0367200E2006A692032E2
-:106A60000000F602000120320000E6006A81C72C17
-:106A70000000F5820001E0006A80C72C0000C70416
-:106A80000000203A0000EE006B3DF686408AF704D5
-:106A9000408876B5001E76B4FFE5C7386FC07738FA
-:106AA000FFF0203A0000E6006B3CF6820000F6851D
-:106AB0004080F68540849693FFFC9693FFFCF70494
-:106AC000E01C000000019713FFFCF386E0009393A5
-:106AD000FFFC9513FFFCF38200029393FFFC969654
-:106AE000FFF407880008E000EE649793FFFCF405CC
-:106AF00040848696FFF4F7046E50F38635ECF685F5
-:106B00004090F6854094873A1DDCF6854228F705CB
-:106B10003B64F7044230F4054080C03A3A00470C29
-:106B20000001203A0000E6006B3DF3863560F385F6
-:106B3000423007880008E000789C9793FFFC879616
-:106B4000FFFC8296FFF802140000013C00000000E8
-:106B500000019293FFFC02900008F4864230949367
-:106B6000FFFC07880008E00120E49793FFFC202247
-:106B70000000E6006DD9F5820000F704408CF606AF
-:106B8000408C7631001EF68442287630FFE506B44C
-:106B90000001C73867C07738FFF0203A0000E600F0
-:106BA0006BC8F6854228F7044088F686408A76B599
-:106BB000001E76B4FFE5C7386FC07738FFF0203A83
-:106BC0000000E6006D0D00000001F704408CF68621
-:106BD000408C76B5001E76B4FFE5C7386FC07738B5
-:106BE000FFF0203A0000E6006C35F606408AF70414
-:106BF000408876B1001E76B4FFE5C7386FC077389D
-:106C0000FFF0203A0000E6006C34F4863678F70492
-:106C1000424400000001C03A4A00470C0001203AFB
-:106C20000000E6006C35F4820001F4B32800E000B7
-:106C30006D10F005422CF704408CF506408C76A9C7
-:106C4000001E76B4FFE5C7386FC07738FFF0203AF2
-:106C50000000E6006CC1F606408AF704408876B171
-:106C6000001E76B4FFE5C7386FC07738FFF0203AD2
-:106C70000000E6006CC100000001F704422C000097
-:106C8000000107380001203A0009EE006D11F705F8
-:106C9000422CF02B2800F0332800F5820001F70485
-:106CA0004294F606429476B1001E76B4FFE5C738EA
-:106CB0006FC07739FFF007380001E0006D10F7333F
-:106CC0002800F704408CF686408C76B5001E76B41A
-:106CD000FFE5C7386FC07738FFF0203A0000E600C4
-:106CE0006D14202E0000F7044088F606408A76B125
-:106CF000001E76B4FFE5C7386FC07738FFF0203A42
-:106D00000000E6006D15202E0000F0332800F5820B
-:106D10000001202E0000E6006DB5F48635ECF70486
-:106D2000423000000001C03A4A00470C0001203AFE
-:106D30000000E6006D5900000001F704E0280000A3
-:106D40000001203A0000E6006D79F682003CF684EE
-:106D5000E028E0006D7800000001F704E028000062
-:106D60000001203A0000E6006D79F68200F0F70499
-:106D7000E0280000000176B90002F7044228000074
-:106D80000001C03A6A00EC006DB5F6862C28F704C5
-:106D90002D38F005422806380001F6052D387739E0
-:106DA0000002F482001920320044E6006DB4B4BA47
-:106DB0006802F0052D38F482C3509493FFFCF482EE
-:106DC00000169493FFFCF48642309493FFFC0788EE
-:106DD0000008E0011EC09793FFFC8796FFFC829697
-:106DE000FFF802140000013C000000000001929333
-:106DF000FFFC0290000822100004F5863678959377
-:106E0000FFFCF58642449593FFFC07880008E000EC
-:106E100015489793FFFCF58274189593FFFCF58253
-:106E200000199593FFFCF58636789593FFFC07884B
-:106E30000008E000161C9793FFFCF58274AC959354
-:106E4000FFFCF782001D9793FFFCF58637049593AE
-:106E5000FFFC07880008E000161C9793FFFCF582F2
-:106E600078009593FFFCF782001B9793FFFCF58653
-:106E700037049593FFFC07880008E000161C9793E1
-:106E8000FFFCF58278FC9593FFFCF782001A97933C
-:106E9000FFFCF58637909593FFFC07880008E0001B
-:106EA000161C9793FFFCF58280D89593FFFCF78220
-:106EB000001B9793FFFCF58637909593FFFC07889E
-:106EC0000008E000161C9793FFFCF58281749593EF
-:106ED000FFFCF782001D9793FFFCF586381C959305
-:106EE000FFFC07880008E000161C9793FFFCF58262
-:106EF00087749593FFFCF782001B9793FFFCF58640
-:106F0000381C9593FFFC07880008E000161C979337
-:106F1000FFFCF58294F89593FFFCF782001B979392
-:106F2000FFFCF58639349593FFFC07880008E000E4
-:106F3000161C9793FFFCF5828A009593FFFCF7825D
-:106F4000001C9793FFFCF58639349593FFFC078866
-:106F50000008E000161C9793FFFCF5828E089593BD
-:106F6000FFFCF782001A9793FFFCF586393495935E
-:106F7000FFFC07880008E000161C9793FFFCF582D1
-:106F8000969C9593FFFCF782001E9793FFFCF58675
-:106F900038A89593FFFC07880008E000161C97931B
-:106FA000FFFCF5829B2C9593FFFCF782001B9793C7
-:106FB000FFFCF58638A89593FFFC07880008E000E1
-:106FC000161C9793FFFCF582A2DC9593FFFCF782D9
-:106FD000001E9793FFFCF5863AD89593FFFC07882F
-:106FE0000008E000161C9793FFFCF5829E549593D1
-:106FF000FFFCF782001B9793FFFCF5863AD8959328
-:10700000FFFC07880008E000161C9793FFFCF58240
-:10701000A3C09593FFFCF782001C9793FFFCF586B5
-:1070200039C09593FFFC07880008E000161C979371
-:10703000FFFCF582A7649593FFFCF782001E9793EF
-:10704000FFFCF58639C09593FFFC07880008E00037
-:10705000161C9793FFFCF582AA049593FFFCF78218
-:10706000001B9793FFFCF58639C09593FFFC0788BA
-:107070000008E000161C9793FFFCF582AEF895938C
-:10708000FFFCF782001C9793FFFCF5863A4C959322
-:10709000FFFC07880008E000161C9793FFFCF7062A
-:1070A0004250F03B2800F7064088F03B2800F602EB
-:1070B0000000F6054080F6054084F7063B70F63B7D
-:1070C0002800F7063B72F0BB2800F582CA20F58540
-:1070D0003B74F7063B78F03B2800F7063B7AF0BBA1
-:1070E0002800F582B194F5853B7CF7063B80F03BA8
-:1070F0002800F7063B82F0BB2800F582C754F585CF
-:107100003B84F7063B88F03B2800F7063B8AF0BB40
-:107110002800F582BEF8F5853B8CF7063B90F03BE6
-:107120002800F7063B92F0BB2800F582C8F8F585E9
-:107130003B94F7063B98F03B2800F7063B9AF0BBE0
-:107140002800F582C5D8F5853B9CF7063BA0F03BAF
-:107150002800F7063BA2F0BB2800F582C770F58532
-:107160003BA4F7063BA8F03B2800F7063BAAF0BB80
-:107170002800F582C1B4F5853BAC9616FFF407886C
-:107180000008E000D5409793FFFCF6846E50861609
-:10719000FFF40000000196361DDCF6053B6487967F
-:1071A000FFFC8296FFF802140000013C0000000082
-:1071B00000019293FFFC02900008221000302594F9
-:1071C0000020F02F280026140038F03328009013F8
-:1071D000FFFCF7044250F686425076B5001E76B4A6
-:1071E000FFE5C7386FC07739FFF09713FFFC9613A0
-:1071F000FFFC9593FFFC07880008E000F5F49793E7
-:10720000FFFC20220000E600721DF5021770F70453
-:1072100042540000000127380001F705425495133D
-:10722000FFFCF502001B9513FFFCF5064244951385
-:10723000FFFC07880008E0011EC09793FFFC8796BB
-:10724000FFFC8296FFF802140000013C00000000E1
-:1072500000019293FFFC02900008F704E0048616F8
-:107260000000F68200FF7739FFF0C7386C00F73373
-:107270002800F706E006873A000006B00002F7375C
-:107280002800F6843B6407300004F6BB2800870220
-:10729000FF3406300006F73328008796FFFC8296FD
-:1072A000FFF802140004013C00000000000192936A
-:1072B000FFFC029000082210003026140020F0335A
-:1072C000280027140038F03B28009713FFFC909308
-:1072D000FFFCF7044250F686425076B5001E76B4A5
-:1072E000FFE5C7386FC07739FFF09713FFFC96139F
-:1072F000FFFC07880008E000F3389793FFFC20228A
-:107300000000E6007319F5821770F704425400007C
-:10731000000127380001F70542549593FFFCF582E0
-:10732000001B9593FFFCF58642449593FFFC07886C
-:107330000008E0011EC09793FFFC8796FFFC829631
-:10734000FFF802140000013C0000000000019293CD
-:10735000FFFC029000082210004026140020961620
-:10736000FFC4F03328009013FFFC9613FFFC261493
-:1073700000389616FFBC9613FFFC07880008E00053
-:10738000D0DC9793FFFC9013FFFCF7044250F68685
-:10739000425076B5001E76B4FFE5C7386FC0773926
-:1073A000FFF09713FFFC8616FFBC00000001961348
-:1073B000FFFC8616FFC4000000019613FFFC07883F
-:1073C0000008E000F5F49793FFFC20220000E6009F
-:1073D00073E5F6021770F7044254000000012738E5
-:1073E0000001F70542549613FFFCF602001B9613AA
-:1073F000FFFCF60642449613FFFC07880008E001F4
-:107400001EC09793FFFC8796FFFC8296FFF802143C
-:107410000000013C0000000000019293FFFC02907C
-:10742000000822100004F5820000F5854080959642
-:10743000FFF407880008E000CB509793FFFC859687
-:10744000FFF4F5020064F5053BB4F7044250F486FE
-:10745000425076A5001E76B4FFE5F6044F5CF402B8
-:107460000006F4054254F5853B6CF5853BB8953232
-:10747000000095B20004C7386FC07739FFF00738B5
-:107480000001F727280007880008E00071B09793F3
-:10749000FFFCF4063704F40542448796FFFC82960D
-:1074A000FFF802140000013C00000000000192936C
-:1074B000FFFC0290000822100050F7044250F686AC
-:1074C000425076B5001E76B4FFE5F6046F34C73837
-:1074D0006FC086B2000C7739FFF0C0367200E6004C
-:1074E00077ECC504000086B20010F704E000F30258
-:1074F0000000C0367200E600751804B0001086B2B5
-:107500000014F704E00400000001C0367200E60039
-:10751000751C201A0000F3020001201A0000E6008A
-:10752000752900000001F502000086A60000F7049E
-:10753000E00000000001C0367200E2007564F6024F
-:107540000000C0367200E600756C2032000086A68E
-:107550000004F704E00400000001C0367200E200FD
-:10756000756D20320000F602000120320000E600B6
-:10757000757D202A0000F5020001202A0000E600A7
-:1075800077EC0000000107880008E000CBCC97935F
-:10759000FFFC26140020F033280004A00002F0278E
-:1075A0002800F582000023940022F59F280003A004
-:1075B000001A9396FFD42594002285AE000077AD83
-:1075C000001E77BCFFE5C5AC7FC075ADFFF076311E
-:1075D000001E7630FFE506A400022314001E751578
-:1075E000001EF59F2800F384E0007528FFE593A2B4
-:1075F000001CF584E0047399001E739CFFE59396CC
-:10760000FFAC7395001E739CFFE59396FFCC23940B
-:10761000004295A200208716FFE07595001E75AC0C
-:10762000FFE59596FFB47595001E75ACFFE5959640
-:10763000FFC4C73867C07738FFF0F7272800F48405
-:107640004F58871A0000C4A04A0074A4FFFAC5A4CA
-:107650000000F59F28008396FFAC2314001A7619CA
-:10766000001E7630FFE58596FFB4C7383FC07738F7
-:10767000FFF0F737280006B400028716FFE4839670
-:10768000FFCCC73857C07738FFF0F7372800871A84
-:10769000000006B40002C73867C07738FFF0F7373C
-:1076A000280006B400028716FFE823140016761996
-:1076B000001E7630FFE5C7385FC07738FFF0F73738
-:1076C0002800871A000006B40002C73867C0773860
-:1076D000FFF0F737280006B400028716FFEC2314EA
-:1076E00000127619001E7630FFE5C7383FC07738A4
-:1076F000FFF0F7372800871A000006B400028596CD
-:10770000FFC4C73867C07738FFF0F73728008716FF
-:10771000FFF006B40002C7385FC07738FFF0F737D4
-:107720002800F3820002F3A3280004200018259407
-:10773000002285AE000077AD001E77BCFFE5C5AC2A
-:107740007FC075ADFFF08396FFD4F5A32800F49FAA
-:1077500028002594004285AE000077AD001E77BC5E
-:10776000FFE5C5AC7FC075ADFFF044AD000094935C
-:10777000FFFCF786E0009793FFFCF3844F5C00006A
-:1077800000019393FFFC07880008E00123409793D2
-:10779000FFFC07880008E00078D89793FFFCF0050D
-:1077A0004084F786E0009793FFFC07880008E0001C
-:1077B000D5A09793FFFCF7046E50F4054084873AF8
-:1077C0001DDC00000001F7053B64F5863678F58581
-:1077D0004244F3863560F3854230F5864244959302
-:1077E000FFFC07880008E0011F489793FFFC87967D
-:1077F000FFFC8296FFF802140000013C000000002C
-:1078000000019293FFFC02900008F5864244959394
-:10781000FFFC07880008E00120E49793FFFC20228A
-:107820000000E600788900000001F70442540000DF
-:107830000001203A0000EE007851F6064250078819
-:107840000008E00071B09793FFFCE000788800002A
-:107850000001F704425076B1001E76B4FFE5F582D0
-:107860000006F5854254C7386FC07739FFF00738F6
-:107870000001F733280007880008E00072AC9793F6
-:10788000FFFCF5863790F58542448796FFFC82968B
-:10789000FFF802140000013C000000000001929378
-:1078A000FFFC02900008F6063678F6054244F7021F
-:1078B0000000F7054080F7054094F6846E50F70508
-:1078C000409097361DDC8796FFFC8296FFF80214E5
-:1078D0000000013C0000000000019293FFFC0290B8
-:1078E0000008F7020001F70540808796FFFC8296AA
-:1078F000FFF802140000013C000000000001929318
-:10790000FFFC02900008221000A8F7044250F58600
-:10791000425076AD001EF4846F3476B4FFE5949641
-:10792000FFC4C7386FC086A6000C7739FFF0C03699
-:107930007200E6007955F606429AF704429876B14D
-:10794000001E76B4FFE5C7386FC07739FFF00738FF
-:107950000001F7332800F704425076AD001E76B4DC
-:10796000FFE58516FFC4C7386FC086AA000C7739BB
-:10797000FFF0C0367200E60080A8F606429A872A19
-:107980000010862A001C203A0000E60079A8F68242
-:107990000000872A001400000001203A0000E600E1
-:1079A00079AC20360000F682000120360000E600A7
-:1079B0007A05249400209496FFBC8516FFC4F02716
-:1079C0002800052800109516FFB49513FFFC0788C2
-:1079D0000008E00072509793FFFC8496FFB400000B
-:1079E00000019493FFFC8516FFBC00000001951375
-:1079F000FFFC07880008E000F9349793FFFCE000E3
-:107A000080C40000000120320000E600806C00000D
-:107A1000000107880008E000CBCC9793FFFC259479
-:107A20000020F02F280004A000029496FF5CF027AD
-:107A30002800F48200002514005AF4AB2800072027
-:107A4000001A2514005A852A000077A9001E77BC69
-:107A5000FFE5C5287FC07529FFF075AD001E75AC28
-:107A6000FFE52314001E7619001EF53B2800F48460
-:107A7000E0007630FFE594A2001CF504E004849653
-:107A8000FF5C952200208716FFE006A40002751512
-:107A9000001E7528FFE59516FF547495001E74A40A
-:107AA000FFE59496FF9C7515001E7528FFE5951659
-:107AB000FF947495001E8516FF5C74A4FFE59496F0
-:107AC000FF8C8496FF54C7385FC07738FFF0F72BE0
-:107AD0002800871A00008516FF9CC73867C07738D2
-:107AE000FFF0F737280006B400028716FFE42314DE
-:107AF000001A7619001E7630FFE5C7384FC0773878
-:107B0000FFF0F7372800871A000006B400028496B9
-:107B1000FF94C73867C07738FFF0F737280006B4FE
-:107B200000028716FFE8231400167619001E76302F
-:107B3000FFE5C73857C07738FFF0F7372800871AB6
-:107B4000000006B40002C73867C07738FFF0F73787
-:107B5000280006B400028716FFEC231400127619E1
-:107B6000001E7630FFE5C7384FC07738FFF0F73793
-:107B70002800871A000006B400028516FF8CC7385B
-:107B800067C07738FFF0F73728008716FFF006B494
-:107B90000002C73857C07738FFF0F7372800F48263
-:107BA0000002F4A328002514005A852A000077A9B2
-:107BB000001E77BCFFE5C5287FC07529FFF00720B0
-:107BC0000018F53B28009416FFAC07880008E00079
-:107BD000CBCC9793FFFC261400382494005A84A63B
-:107BE000000077A5001E77BCFFE5C4A47FC074A584
-:107BF000FFF005A0000206AC000223940036751DBC
-:107C0000001E7528FFE50720001AF4B3280076311E
-:107C1000001E7630FFE59516FF547495001E74A47F
-:107C2000FFE59496FF5C7515001E7528FFE5951617
-:107C3000FF7C7495001E8516FFC474A4FFE594961E
-:107C4000FF74852A00342494005A9516FF8484A674
-:107C5000000077A5001E77BCFFE5C4A47FC074A513
-:107C6000FFF02514005AF4AF2800852A000077A9F8
-:107C7000001E77BCFFE5C5287FC07529FFF08496FC
-:107C8000FFC4F53B280084A600108516FFC494A20B
-:107C9000001C852A00147495001E74A4FFE59496B8
-:107CA000FF6C952200208716FFC88516FF54C73841
-:107CB00067C07738FFF0F72F2800871E00008496F2
-:107CC000FF5CC73857C07738FFF0F737280006B495
-:107CD00000028716FFCC23940032761D001E7630FA
-:107CE000FFE58516FF7CC7384FC07738FFF0F737C0
-:107CF0002800871E000006B40002C73867C0773826
-:107D0000FFF0F737280006B400028716FFD023944F
-:107D1000002E761D001E7630FFE5C73857C0773835
-:107D2000FFF0F7372800871E000006B40002849693
-:107D3000FF748516FF6CC73867C07738FFF0F737D8
-:107D4000280006B400028716FFD42394002A761D6B
-:107D5000001E7630FFE5C7384FC07738FFF0F737A1
-:107D60002800871E000006B40002C73867C07738B5
-:107D7000FFF0F73728008716FFD806B40002C7388F
-:107D800057C07738FFF0F7372800F4820002F4A3D9
-:107D90002800072000182514007A852A000077A9FA
-:107DA000001E77BCFFE5C5287FC07529FFF08496CB
-:107DB000FFC4F53B28008726000400000001203A9C
-:107DC0000024F7044F58E6007EF99416FF54C720AC
-:107DD0007200F6846E508626002C7738FFFA251440
-:107DE000005A842A000077A9001E77BCFFE5C42052
-:107DF0007FC07421FFF04739000086B61DDC77395B
-:107E00000002C0326A00468C0001D6800A68203623
-:107E10000000F6864098E6007EC0C3B86800C584BE
-:107E2000000086A60024F704E000F6020000C03639
-:107E30007200E6007E540324002486A60028F7047E
-:107E4000E00400000001C0367200E6007E582032D7
-:107E50000000F602000120320000E6007E6500000E
-:107E60000001F5820000869A0000F704E00000009F
-:107E70000001C0367200E2007EA0F6020000C036AB
-:107E80007200E6007EA820320000869A0004F70403
-:107E9000E00400000001C0367200E2007EA920323A
-:107EA0000000F602000120320000E6007EB9202E1C
-:107EB0000000F5820001202E0000E6007EC50000D3
-:107EC0000001F4020001F7044F58F41F28008496C3
-:107ED000FF548516FFC4F686409AC724720077388F
-:107EE000FFFA862A00304739000077390002C73888
-:107EF0006800E0007F4CF63B28008496FF54F606AD
-:107F00004098C72472007738FFFAC6B8000046B51B
-:107F1000000076B50002C6B46000F5020001F53736
-:107F200028004739000077390002C73860002494E0
-:107F3000005A84A6000077A5001E77BCFFE5C4A404
-:107F40007FC074A5FFF007380002F4BB2800F704D7
-:107F50004F588516FF548496FFACC6A8720076B4BD
-:107F6000FFFA0624001AF6B32800C72472007738F7
-:107F7000FFFA06A8001AF7372800473900009713C0
-:107F8000FFFC0724001C9713FFFCF5044F5C000066
-:107F900000019513FFFC07880008E0012340979338
-:107FA000FFFCF7044F588496FF5400000001C724DB
-:107FB00072007738FFFA473900009713FFFC072457
-:107FC000001C9713FFFCF5044F5C000000019513A3
-:107FD000FFFC07880008E00123409793FFFC078817
-:107FE0000008E00078D89793FFFCF6846E500000FC
-:107FF000000187361DDC00000001073800019736BC
-:108000001DDC87361DDCF0054084F486E000949387
-:10801000FFFC07880008E000D5A09793FFFCF4055B
-:108020004084F7046E50F005425C873A1DDCF6860A
-:108030002C28F7053B64F7042D38F5063A4CF50576
-:10804000424406380001F6052D3877390002F482E3
-:10805000001C20320044E6008060B4BA6802F005DB
-:108060002D38F50635ECE000808CF50542302032E5
-:108070000001E60080C40000000107880008E0005D
-:10808000789C9793FFFCF4863560F4854230F506C2
-:1080900042449513FFFC07880008E0011F489793AE
-:1080A000FFFCE00080C400000001F704429876B1B4
-:1080B000001E76B4FFE5C7386FC07739FFF0073888
-:1080C0000001F73328008796FFFC8296FFF8021420
-:1080D0000000013C0000000000019293FFFC0290B0
-:1080E0000008F58642449593FFFC07880008E001EC
-:1080F00020E49793FFFC20220000E600816100004D
-:108100000001F704425400000001203A0000EE0094
-:108110008129F606425007880008E00072AC979368
-:10812000FFFCE000816000000001F704425076B1DE
-:10813000001E76B4FFE5F5820006F5854254C73887
-:108140006FC07739FFF007380001F7332800078840
-:108150000008E000734C9793FFFCF586381CF5850A
-:1081600042448796FFFC8296FFF802140000013C0F
-:108170000000000000019293FFFC02900008221012
-:108180000058F7044250F686425076B5001E76B489
-:10819000FFE5F6046F34C7386FC086B2000C77393C
-:1081A000FFF0C0367200E6008250F4820000C50481
-:1081B000000086B20010F704E000C5A40000C0363D
-:1081C0007200E60081E40430001086B20014F70467
-:1081D000E00400000001C0367200E60081E8202EB5
-:1081E0000000F5820001202E0000E60081F500006D
-:1081F0000001F502000086A20000F704E000000084
-:108200000001C0367200E2008230F6020000C03683
-:108210007200E60082382032000086A20004F704D3
-:10822000E00400000001C0367200E2008239203212
-:108230000000F602000120320000E6008249202AF8
-:108240000000F5020001202A0000E60082592026E5
-:108250000000F482000120260000E6008760000094
-:10826000000107880008E000CBCC9793FFFC0720B3
-:108270000002F03B2800F7044F58F4053BB006A07D
-:108280000014C72072007738FFFAF737280006A0DD
-:108290000016F7372800F3020001F32328000788AF
-:1082A0000008E000CBCC9793FFFC26140020F033AD
-:1082B000280004A00002F0272800F3020000239405
-:1082C000002AF31F28000720001A2394002A839E07
-:1082D0000000779D001E77BCFFE5C39C7FC0739DA7
-:1082E000FFF07631001E7630FFE506A4000275151A
-:1082F000001EF3BB2800F304E0007528FFE593227D
-:10830000001CF384E0042314001E9316FFA4759947
-:10831000001E75ACFFE57315001E7318FFE593167C
-:10832000FFCC8316FFA493A200208716FFE073956D
-:10833000001E739CFFE59396FFAC7395001E739C23
-:10834000FFE5C73867C07738FFF0F7272800871A9E
-:1083500000009396FFC4C7385FC07738FFF0F73747
-:10836000280006B400028716FFE42394001A9396AF
-:10837000FFA4761D001E7630FFE5C73857C077385A
-:10838000FFF0F7372800871E000006B40002C73848
-:1083900067C07738FFF0F737280006B40002871669
-:1083A000FFE8231400169316FFA47619001E839687
-:1083B000FFAC7630FFE5C7383FC07738FFF0F737BE
-:1083C0002800871A000006B40002C73867C0773853
-:1083D000FFF0F737280006B400028716FFEC2314DD
-:1083E00000129316FFA47619001E8396FFCC7630F8
-:1083F000FFE5C7383FC07738FFF0F7372800871A06
-:10840000000006B40002C73867C07738FFF0F737BE
-:1084100028008716FFF08316FFC406B40002C73891
-:1084200037C07738FFF0F7372800F3820002F3A354
-:1084300028002314002A831A00007799001E77BCB5
-:10844000FFE5C3187FC07319FFF007200018F33B46
-:1084500028009416FFDC07880008E000CBCC979337
-:10846000FFFC072000022394002A839E0000779DD2
-:10847000001E77BCFFE5C39C7FC0739DFFF0248086
-:1084800000070520000AF3BB280020260007EE00A5
-:1084900084E00628000E86B200007731001E77388F
-:1084A000FFE575B1001E75ACFFE50528000204A4C8
-:1084B0000001C6B477C076B5FFF0F702FF00C6B47E
-:1084C0007400F6B3280087320000F30200FFC738BB
-:1084D0005FC07739FFF0C7383400E0008488F73395
-:1084E000280005200026862A000076A9001EF584B3
-:1084F0004F5876B4FFE58396FFDCF30200FF941635
-:10850000FFBCC71C5A007738FFFAC6306FC07631FF
-:10851000FFF047390000C7383400F682FF00C6304C
-:108520006C00C7386000F6843B6CF72B2800C5A0B0
-:108530005A0075ACFFFA8316FFDC07340001F7051B
-:108540003B6C0720003AF6BB280007200036F03BC2
-:108550002800F3820003F3A328000718001AF5BBD4
-:10856000280007880008E000CBCC9793FFFC072089
-:108570000002F03B2800248000070520000A202686
-:108580000007EE0085D40628000E86B20000773181
-:10859000001E7738FFE575B1001E75ACFFE50528B4
-:1085A000000204A40001C6B477C076B5FFF0F7025C
-:1085B000FF00C6B47400F6B3280087320000F382CF
-:1085C00000FFC7385FC07739FFF0C7383C00E000D4
-:1085D000857CF733280005A00026862E000076ADA6
-:1085E000001E76B4FFE5C520000024000007F3025A
-:1085F00000019316FFA4F7044F588396FFBC248014
-:10860000000EC71C72007738FFFAC6306FC0763193
-:10861000FFF047390000F68200FFC7386C00F68291
-:10862000FF00C6306C00C7386000F6843B6CF72F43
-:10863000280007340001F7053B6C0728003AF6BB19
-:10864000280007280036F03B2800F3020003F32B34
-:10865000280020220007EE008694C6284800063035
-:1086600000268732000076B1001E76B4FFE504A430
-:108670000002042000018396FFA4C7386FC0773939
-:10868000FFF0F682FF00C7386C00C71C7000E000E6
-:108690008650F73328000628002686B2000077317E
-:1086A000001E7738FFE5C6B477C076B5FFF0F70255
-:1086B000FF00C6B47400F6B328009513FFFCF30462
-:1086C0003BB0000000019313FFFC9516FFB4078830
-:1086D0000008E000D42C9793FFFC8516FFB4F0054A
-:1086E000407C8396FFBC23000007F3054258F70443
-:1086F0004250F606425076B1001E76B4FFE5F3060E
-:108700003934F3054244F5054074F3854260F38241
-:108710000006F3854254C7386FC07739FFF0F684FE
-:108720002D3807380001F733280006340001F6051C
-:108730002D38F7062C2876B50002F382001C203273
-:108740000044E600874CB3B67002F0052D38F306FE
-:1087500042449313FFFC07880008E0011F489793E9
-:10876000FFFC8796FFFC8296FFF802140000013C94
-:108770000000000000019293FFFC0290000822100C
-:108780000048F38642449393FFFC07880008E00109
-:1087900020E49793FFFC20220000E60089ED000012
-:1087A0000001F704425400000001203A0000EE00EE
-:1087B00087C90000000107880008E000734C979308
-:1087C000FFFCE00089EC0000000107880008E000E1
-:1087D000CBCC9793FFFC26140020F033280005A093
-:1087E0000002F02F2800F382000024940022F3A757
-:1087F000280004A0001A9496FFD423940022839E9C
-:108800000000779D001E77BCFFE5C39C7FC0739D71
-:10881000FFF07631001E7630FFE506AC000223142F
-:10882000001E7519001EF3A72800F484E0007528C7
-:10883000FFE594A2001CF384E0047495001E74A468
-:10884000FFE59496FFB47495001E74A4FFE594961A
-:10885000FFCC8496FFB493A200208716FFE07395A7
-:10886000001E739CFFE59396FFBC7395001E739CDE
-:10887000FFE59396FFC48396FFBCC73867C077387F
-:10888000FFF0F72F2800F5844F58871A0000C5A085
-:108890005A0075ACFFFAC73857C07738FFF0F73782
-:1088A000280006B400028716FFE42314001A761984
-:1088B000001E7630FFE545AD0000C7384FC0773861
-:1088C000FFF0F7372800871A000006B400028496EC
-:1088D000FFCCC73867C07738FFF0F737280006B4F9
-:1088E00000028716FFE8231400167619001E763062
-:1088F000FFE5C7383FC07738FFF0F7372800871A01
-:10890000000006B40002C73867C07738FFF0F737B9
-:10891000280006B400028716FFEC23140012761913
-:10892000001E7630FFE5C7384FC07738FFF0F737C5
-:108930002800871A000006B400028396FFC4C738D7
-:1089400067C07738FFF0F73728008716FFF006B4C6
-:108950000002C7383FC07738FFF0F7372800F482AD
-:108960000002F4A328000420001823940022839E10
-:108970000000779D001E77BCFFE5C39C7FC0739D00
-:10898000FFF08496FFD4F3A32800F3820001F3A73D
-:1089900028009593FFFCF486E0009493FFFCF38499
-:1089A0004F5C000000019393FFFC07880008E00182
-:1089B00023409793FFFC07880008E00078D897933E
-:1089C000FFFCF4863678F4854244F0054084F68452
-:1089D0004F5CF70200649736000090360004F702FF
-:1089E0000001F7054084F38635ECF3854230879625
-:1089F000FFFC8296FFF802140000013C000000001A
-:108A000000019293FFFC0290000822100090F704EE
-:108A10004260F502000005B80018F6044258000054
-:108A2000000120320007EE008A70C7306000C738AE
-:108A300058000738000E86BA00007739001E7738D4
-:108A4000FFE5C6B477C076B5FFF0F70200FFC6B405
-:108A50007400C0365200470C0001D7000A70203A5B
-:108A60000000E6008A7107300001E0008A18F7056F
-:108A70004258F40442580000000120220007EE0092
-:108A80008D9424940036F604426025140038239413
-:108A90000020063000028732000076B1001E76B456
-:108AA000FFE50630000275B1001EC7386FC0773889
-:108AB000FFF0F72B28008732000075ACFFE5C738C0
-:108AC0005FC07738FFF0F727280024940034063081
-:108AD00000028732000076B1001E76B4FFE5C73889
-:108AE0006FC07738FFF0F727280024940032063053
-:108AF00000028732000076B1001E76B4FFE5C73869
-:108B00006FC07738FFF0F727280024940030063034
-:108B100000028732000076B1001E76B4FFE5C73848
-:108B20006FC07738FFF0F72728002494002E063016
-:108B300000028732000076B1001E76B4FFE5C73828
-:108B40006FC07738FFF0F72728002494002C0630F8
-:108B500000028732000076B1001E76B4FFE5C73808
-:108B60006FC07738FFF0F72728002494002A0630DA
-:108B700000028732000076B1001E76B4FFE5C738E8
-:108B80006FC07738FFF0F7272800063000028732E1
-:108B90000000249400287631001E7630FFE5C738A7
-:108BA00067C07738FFF0F72728009413FFFC951370
-:108BB000FFFC9396FF7C9393FFFC07880008E0007E
-:108BC000D0DC9793FFFCF60442602494007E2514C9
-:108BD000008023940068063000028732000076B1DE
-:108BE000001E76B4FFE50630000275B1001EC738DE
-:108BF0006FC07738FFF0F72B28008732000075AC84
-:108C0000FFE5C7385FC07738FFF0F72728002494C6
-:108C1000007C063000028732000076B1001E76B478
-:108C2000FFE5C7386FC07738FFF0F7272800249496
-:108C3000007A063000028732000076B1001E76B45A
-:108C4000FFE5C7386FC07738FFF0F7272800249476
-:108C50000078063000028732000076B1001E76B43C
-:108C6000FFE5C7386FC07738FFF0F7272800249456
-:108C70000076063000028732000076B1001E76B41E
-:108C8000FFE5C7386FC07738FFF0F7272800249436
-:108C90000074063000028732000076B1001E76B400
-:108CA000FFE5C7386FC07738FFF0F7272800249416
-:108CB0000072063000028732000076B1001E76B4E2
-:108CC000FFE5C7386FC07738FFF0F7272800063078
-:108CD000000287320000249400707631001E763046
-:108CE000FFE5C73867C07738FFF0F72728009513EE
-:108CF000FFFC9396FF749393FFFC07880008E00045
-:108D0000D2589793FFFC8396FF7400000001939361
-:108D1000FFFCF704425823940050C70072009713D9
-:108D2000FFFC9396FF6C9393FFFC07880008E0001C
-:108D3000CF249793FFFC8396FF6CF6864250939363
-:108D4000FFFCF384425876B5001E9393FFFCF704B2
-:108D5000425076B4FFE5C7386FC07739FFF09713FC
-:108D6000FFFC8396FF7C000000019393FFFC0788C3
-:108D70000008E000F3389793FFFC20220000E60093
-:108D80008D9500000001F7044258000000010738EB
-:108D90000001F7054258F704425800000001203A4C
-:108DA0000007EE008DD4F3821770F7042D38F68695
-:108DB0002C2806380001F6052D3877390002F38299
-:108DC000001C20320044E6008DF4B3BA6802E000D3
-:108DD0008DF4F0052D389393FFFCF382001B9393E1
-:108DE000FFFCF38642449393FFFC07880008E001F0
-:108DF0001EC09793FFFC8796FFFC8296FFF8021433
-:108E00000000013C0000000000019293FFFC029072
-:108E1000000822100088F7044250F686425076B5CA
-:108E2000001EF3846F3476B4FFE59396FFC4C73811
-:108E30006FC0869E000C7739FFF0C0367200E600E6
-:108E40008E65F60642A0F70442A076B1001E76B405
-:108E5000FFE5C7386FC07739FFF007380001E00041
-:108E600094E4F7332800F604426024940036851613
-:108E7000FFC423940038063000028732000076B128
-:108E8000001E76B4FFE5852A001C0630000275B18D
-:108E9000001EC7386FC07738FFF09516FFBCF71F6C
-:108EA00028008732000075ACFFE58516FFC4C7387F
-:108EB0005FC07738FFF0F72728002494003406308D
-:108EC00000028732000076B1001E76B4FFE5C73895
-:108ED0006FC07738FFF0F72728002494003206305F
-:108EE00000028732000076B1001E76B4FFE5C73875
-:108EF0006FC07738FFF0F727280024940030063041
-:108F000000028732000076B1001E76B4FFE5C73854
-:108F10006FC07738FFF0F72728002494002E063022
-:108F200000028732000076B1001E76B4FFE5C73834
-:108F30006FC07738FFF0F72728002494002C063004
-:108F400000028732000076B1001E76B4FFE5C73814
-:108F50006FC07738FFF0F72728002494002A0630E6
-:108F600000028732000076B1001E76B4FFE5C738F4
-:108F70006FC07738FFF0F7272800063000028732ED
-:108F80000000249400287631001E7630FFE5C738B3
-:108F900067C07738FFF0F7272800872A00200000F5
-:108FA00000019713FFFC9393FFFC271400209713F5
-:108FB000FFFC07880008E000D0DC9793FFFC839655
-:108FC000FFC400000001871E001000000001203ACD
-:108FD0000000E6008FF0F6820000871E00140000FB
-:108FE0000001203A0000E6008FF420360000F682EF
-:108FF000000120360000E6009041000000018516C7
-:10900000FFC400000001052800109516FFB4951359
-:10901000FFFC07880008E00072509793FFFC8396DE
-:10902000FFB4271400209393FFFC9713FFFC0788DD
-:109030000008E000F9349793FFFCE00094E400009E
-:1090400000018516FFBC00000001202A0000E60098
-:1090500094BC0000000107880008E000CBCC979387
-:10906000FFFCF502000023940062F51F28007595AF
-:10907000001E75ACFFE50620000206B000022314B6
-:10908000001E7399001E739CFFE59396FF7475157F
-:10909000001E7528FFE59516FF7C7395001E739CD6
-:1090A000FFE59396FF8C8516FFC47395001E93967B
-:1090B000FF84852A0034239400629516FFACF033B8
-:1090C00028000520001A9516FF94839E0000779DC6
-:1090D000001E77BCFFE5C39C7FC0739DFFF07495B5
-:1090E000001EF3AB28008516FFC474A4FFE5852A93
-:1090F00000108396FFC49522001C839E00148516E1
-:10910000FF8493A200208716FFE07528FFE59516DF
-:10911000FF84F3844F588516FF74C7385FC07738D3
-:10912000FFF0F7332800871A00009396FFA4C022AF
-:109130003A008396FF7CC73857C07738FFF0F7377F
-:10914000280006B400028716FFE42314001A7619DB
-:10915000001E7630FFE5C7384FC07738FFF0F7378D
-:109160002800871A000006B40002C73867C07738A5
-:10917000FFF0F737280006B400028716FFE8231433
-:1091800000167619001E7630FFE5C7383FC07738E5
-:10919000FFF0F7372800871A000006B40002851692
-:1091A000FF8C8396FF84C73867C07738FFF0F737A6
-:1091B000280006B400028716FFEC2314001276196B
-:1091C000001E7630FFE5C73857C07738FFF0F73715
-:1091D0002800871A000006B40002C73867C0773835
-:1091E000FFF0F73728008716FFF006B40002C738F3
-:1091F0003FC07738FFF0F7372800F5020002F5236B
-:10920000280023940052839E0000779D001E77BCA7
-:10921000FFE5C39C7FC0739DFFF003200018E600AC
-:109220009230F39B2800F7044270E000929CF6060F
-:1092300042728516FFC40000000186AA00200000CB
-:10924000000107340007203A000EE2009294C73470
-:109250006800F5844260F38200FFC72C7000073875
-:10926000002686BA00009716FF747739001E7738FB
-:10927000FFE5C6B477C076B5FFF0C6B43C00203633
-:109280000000470C0001D7000A70203A0000E600F9
-:1092900092C900000001F7044274F606427476B1E8
-:1092A000001E76B4FFE5C7386FC07739FFF0073886
-:1092B0000001F733280007880008E000789C9793A6
-:1092C000FFFCE00094E4000000018516FFA48396F3
-:1092D000FF74C720520074B8FFFAC6240000871E2E
-:1092E0000000769D001E76B4FFE5C5AC520075AC5B
-:1092F000FFFA46310000F50200FFC6305400C738BF
-:109300006FC07739FFF0F682FF00C7386C00C630B7
-:109310007000F61F28008396FF948516FFC4F59F02
-:109320002800872A000400000001203A0024E600FB
-:109330009469F6864098F7046E50862A002CC6A4DD
-:10934000000023940062849E0000779D001E77BC7D
-:10935000FFE5C4A47FC074A5FFF046B50000873ABE
-:109360001DDC76B50002C0327200470C0001D70048
-:109370000A70203A0000F7064098E6009434C3349F
-:109380007000C584000086AA0024F704E000F602FD
-:109390000000C036720005280024E60093C495162C
-:1093A000FF748396FFC400000001869E0028F70426
-:1093B000E00400000001C0367200E60093C82032CD
-:1093C0000000F602000120320000E60093D5000004
-:1093D0000001F58200008516FF74F704E00086AAFC
-:1093E000000000000001C0367200E2009414F60292
-:1093F0000000C0367200E600941C2032000086AAED
-:109400000004F704E00400000001C0367200E2002E
-:10941000941D20320000F602000120320000E60018
-:10942000942D202E0000F5820001202E0000E60081
-:10943000943900000001F4820001F7044F58F49BB6
-:1094400028008396FFC4F686409AC72072007738BA
-:10945000FFFA861E00304739000077390002C7380E
-:109460006800E00094E4F63B2800472500007739C7
-:109470000002C7386800F5020001F53B28000738F4
-:10948000000223940062839E0000779D001E77BC3B
-:10949000FFE5C39C7FC0739DFFF025140062F3BB02
-:1094A0002800852A000077A9001E77BCFFE5C528A3
-:1094B0007FC07529FFF0E00094E4F51B2800839637
-:1094C000FFBC00000001201E0001E60094E4000043
-:1094D000000107880008E000789C9793FFFCF506E0
-:1094E0003560F50542308796FFFC8296FFF802143E
-:1094F0000000013C0000000000019293FFFC02907C
-:109500000008F50642449513FFFC07880008E001B7
-:1095100020E49793FFFC20220000E60096890000DB
-:109520000001F68442540000000120360000EE00E5
-:10953000958DF5864250F7044250762D001E763008
-:10954000FFE526B40001F685425425000007F50525
-:109550004258F6842D38C73867C07739FFF007388E
-:109560000001F72F280006340001F6052D38F70614
-:109570002C2876B50002F502001C20320044E600DB
-:109580009688B5367002E0009688F0052D38F5040F
-:109590004260000000019513FFFC07880008E0000E
-:1095A000B2849793FFFCF6844F5800000001073403
-:1095B0000040C0227200E60095ECF6064276F70401
-:1095C000427476B1001E76B4FFE5C7386FC07739B4
-:1095D000FFF007380001F733280007880008E00093
-:1095E000789C9793FFFCE000968800000001F70448
-:1095F000426000000001C0227200E60096240000D4
-:1096000000019713FFFCF5043BB000000001951327
-:10961000FFFC07880008E000D42C9793FFFCE000D3
-:10962000964000000001C0226A00E600967100002A
-:1096300000019713FFFC07880008E000CC609793B7
-:10964000FFFCF704407C000000010738000197137D
-:10965000FFFCF5044074000000019513FFFC07882F
-:109660000008E000BEF89793FFFCE0009688000039
-:109670000001F5044074000000019513FFFC078809
-:109680000008E000C1B49793FFFC8796FFFC829628
-:10969000FFF802140000013C00000000000192935A
-:1096A000FFFC0290000822100070F6046F34F704EB
-:1096B000426486B2000400000001C0367200E60079
-:1096C0009B1806B0000287360000F404407C76B593
-:1096D000001E76B4FFE5C7386FC07739FFF0C03A97
-:1096E0004200E6009B1824940036F604407423944C
-:1096F0000038063000028732000076B1001E76B4D2
-:10970000FFE50630000275B1001EC7386FC077381C
-:10971000FFF0F71F28008732000075ACFFE5C7385F
-:109720005FC07738FFF0F727280024940034063014
-:1097300000028732000076B1001E76B4FFE5C7381C
-:109740006FC07738FFF0F7272800249400320630E6
-:1097500000028732000076B1001E76B4FFE5C738FC
-:109760006FC07738FFF0F7272800249400300630C8
-:1097700000028732000076B1001E76B4FFE5C738DC
-:109780006FC07738FFF0F72728002494002E0630AA
-:1097900000028732000076B1001E76B4FFE5C738BC
-:1097A0006FC07738FFF0F72728002494002C06308C
-:1097B00000028732000076B1001E76B4FFE5C7389C
-:1097C0006FC07738FFF0F72728002494002A06306E
-:1097D00000028732000076B1001E76B4FFE5C7387C
-:1097E0006FC07738FFF0F727280006300002873275
-:1097F0000000249400287631001E7630FFE5C7383B
-:1098000067C07738FFF0F72728009413FFFC939385
-:10981000FFFC271400209713FFFC07880008E000D6
-:10982000D0DC9793FFFC07880008E000CBCC97932F
-:10983000FFFCF50440749416FFC407200002F03BBF
-:10984000280024800007F40200FF8396FFC49516C9
-:10985000FFBC031C000A20260007EE0098A806188B
-:10986000000E86B200007731001E7738FFE575B133
-:10987000001E75ACFFE503180002C6B477C076B5CC
-:10988000FFF0F702FF00C6B47400F6B32800873279
-:10989000000004A40001C7385FC07739FFF0C73863
-:1098A0004400E0009854F73328008516FFC47495EF
-:1098B000001E74A4FFE58396FFC42314001E7419D0
-:1098C000001E7420FFE5052800269516FF8C85AA4A
-:1098D000000076A9001E76B4FFE5039C0002939673
-:1098E000FFB4061C00027395001E739CFFE593965F
-:1098F000FFAC7395001E739CFFE59396FF9C8396C7
-:10990000FFBC7515001E7528FFE59516FF947515AB
-:10991000001E7528FFE59516FFA48516FFC4C5AC8B
-:109920006FC075ADFFF0F5054260F5044F58F68243
-:1099300000FFC71C52007738FFFA47390000C738CC
-:109940006C00F682FF00C5AC6C00C73858008396E7
-:10995000FF8CF5843B6C8516FFB4F71F2800871633
-:10996000FFE006AC0001F6853B6C8396FFC4C73868
-:109970004FC07738FFF0F72B2800F5044F58871AAF
-:109980000000C01E5200C73847C07738FFF0F733D9
-:109990002800063000028716FFE42314001A769987
-:1099A000001E8396FF9476B4FFE5C7383FC0773832
-:1099B000FFF0F7332800871A000006300002C7388E
-:1099C0006FC07738FFF0F7332800063000028716A3
-:1099D000FFE8231400167699001E76B4FFE585167D
-:1099E000FFAC8396FFA4C73857C07738FFF0F73332
-:1099F0002800871A0000063000028516FF9CC73831
-:109A00006FC07738FFF0F733280006300002871662
-:109A1000FFEC231400127699001E76B4FFE5C738D8
-:109A20003FC07738FFF0F7332800871A0000063070
-:109A300000028396FFC4C7386FC07738FFF0F73352
-:109A400028008716FFF006300002C73857C0773865
-:109A5000FFF0F7332800071C003AF5BB2800071C6D
-:109A60000036F03B2800F5020003E6009AA4F51F3B
-:109A70002800F7044278F606427876B1001E76B4E4
-:109A8000FFE5C7386FC07739FFF007380001F733BB
-:109A9000280007880008E000789C9793FFFCE0000E
-:109AA0009B1800000001F38642449393FFFC078853
-:109AB0000008E0011F489793FFFC25000007F5050B
-:109AC0004258F7044250F606425076B1001E76B472
-:109AD000FFE5F3820006F3854254F5063934F505B7
-:109AE0004244C7386FC07739FFF0F6842D38073805
-:109AF0000001F733280006340001F6052D38F7067B
-:109B00002C2876B50002F382001C20320044E600C7
-:109B10009B18B3B67002F0052D388796FFFC82962D
-:109B2000FFF802140000013C0000000000019293C5
-:109B3000FFFC0290000822100078F38642449393C1
-:109B4000FFFC07880008E00120E49793FFFC202237
-:109B50000000E6009E4100000001F70442540000AE
-:109B60000001203A0000EE009D8524940036F604A2
-:109B7000407425140038063000028732000076B1A8
-:109B8000001E76B4FFE50630000275B1001EC7382E
-:109B90006FC07738FFF0F72B28008732000075ACD4
-:109BA000FFE5C7385FC07738FFF0F7272800249417
-:109BB0000034063000028732000076B1001E76B411
-:109BC000FFE5C7386FC07738FFF0F72728002494E7
-:109BD0000032063000028732000076B1001E76B4F3
-:109BE000FFE5C7386FC07738FFF0F72728002494C7
-:109BF0000030063000028732000076B1001E76B4D5
-:109C0000FFE5C7386FC07738FFF0F72728002494A6
-:109C1000002E063000028732000076B1001E76B4B6
-:109C2000FFE5C7386FC07738FFF0F7272800249486
-:109C3000002C063000028732000076B1001E76B498
-:109C4000FFE5C7386FC07738FFF0F7272800249466
-:109C5000002A063000028732000076B1001E76B47A
-:109C6000FFE5C7386FC07738FFF0F72728000630C8
-:109C7000000287320000249400287631001E7630DE
-:109C8000FFE5C73867C07738FFF0F7272800F3846F
-:109C9000407C000000019393FFFC9513FFFC23948C
-:109CA00000209396FF949393FFFC07880008E00040
-:109CB000D0DC9793FFFC8396FF9400000001939300
-:109CC000FFFC239400689396FF8C9393FFFC078816
-:109CD0000008E000D2589793FFFC8396FF8C0000A9
-:109CE00000019393FFFC9013FFFC23940050939684
-:109CF000FF849393FFFC07880008E000CF2497932C
-:109D0000FFFC8702FF3400000001F7054264F38482
-:109D1000407C000000019393FFFC9713FFFC8396A7
-:109D2000FF84000000019393FFFC8396FF940000E2
-:109D300000019393FFFC07880008E000F7C89793A1
-:109D4000FFFC20220000E6009D5DF3821770F704FF
-:109D500042540000000127380001F7054254939354
-:109D6000FFFCF382001B9393FFFCF3864244939322
-:109D7000FFFC07880008E0011EC09793FFFCE0008D
-:109D80009E4000000001F504407CF4844074C72824
-:109D90005000C724700005B8002686AE0000772D5D
-:109DA000001E7738FFE5C6B477C077B40008703E70
-:109DB000FFE8470C0001D7000A70203A0000F704C2
-:109DC0004F58E6009DFDF60200FFF7044278F606C4
-:109DD000427A76B1001E76B4FFE5C7386FC0773996
-:109DE000FFF007380001F733280007880008E0007B
-:109DF000789C9793FFFCE0009E400000000186AE37
-:109E00000000772D001E7738FFE5C6B477C076B521
-:109E1000FFF0F7020001C7386400F602FF00C6B485
-:109E20006400C7386800F72F28000728000197133F
-:109E3000FFFC9493FFFC07880008E000BEF89793AE
-:109E4000FFFC8796FFFC8296FFF802140000013C9D
-:109E50000000000000019293FFFC02900008221015
-:109E600000D8F38642449393FFFC07880008E00182
-:109E700020E49793FFFC20220000E600A2C9000026
-:109E80000001F704425400000001203A0000EE00F7
-:109E9000A03524940036F6044074251400380630AA
-:109EA00000028732000076B1001E76B4FFE506306E
-:109EB000000275B1001EC7386FC07738FFF0F72B6E
-:109EC00028008732000075ACFFE5C7385FC07738DF
-:109ED000FFF0F72728002494003406300002873270
-:109EE000000076B1001E76B4FFE5C7386FC0773842
-:109EF000FFF0F72728002494003206300002873252
-:109F0000000076B1001E76B4FFE5C7386FC0773821
-:109F1000FFF0F72728002494003006300002873233
-:109F2000000076B1001E76B4FFE5C7386FC0773801
-:109F3000FFF0F72728002494002E06300002873215
-:109F4000000076B1001E76B4FFE5C7386FC07738E1
-:109F5000FFF0F72728002494002C063000028732F7
-:109F6000000076B1001E76B4FFE5C7386FC07738C1
-:109F7000FFF0F72728002494002A063000028732D9
-:109F8000000076B1001E76B4FFE5C7386FC07738A1
-:109F9000FFF0F727280006300002873200002494E3
-:109FA00000287631001E7630FFE5C73867C0773865
-:109FB000FFF0F7272800F384407C00000001939312
-:109FC000FFFC9513FFFC239400209396FF4C939382
-:109FD000FFFC07880008E000D0DC9793FFFC839625
-:109FE000FF4C000000019393FFFC239400509396D4
-:109FF000FF449393FFFC07880008E000D258979332
-:10A00000FFFC8702FF3400000001F7054264F3847F
-:10A01000407C000000019393FFFC9713FFFC8396A4
-:10A02000FF44000000019393FFFC8396FF4CE00087
-:10A03000A2809393FFFCF404407CF6044074F38206
-:10A040000000C7204000C73070000738002686BADD
-:10A0500000007739001E7738FFE5C6B477C077B4C3
-:10A060000008703EFFE8470C0001D7000A70203A54
-:10A070000000E600A0AD9396FF3CF70442A0F60670
-:10A0800042A076B1001E76B4FFE5C7386FC07739BD
-:10A09000FFF007380001F733280007880008E000C8
-:10A0A000789C9793FFFCE000A2C8000000010630F6
-:10A0B00000028732000076B1001E76B4FFE52494DA
-:10A0C000007E25140080239400680630000275B1DC
-:10A0D000001EC7386FC07738FFF0F72B2800873293
-:10A0E000000075ACFFE5C7385FC07738FFF0F72791
-:10A0F00028002494007C063000028732000076B1EC
-:10A10000001E76B4FFE5C7386FC07738FFF0F72739
-:10A1100028002494007A063000028732000076B1CD
-:10A12000001E76B4FFE5C7386FC07738FFF0F72719
-:10A13000280024940078063000028732000076B1AF
-:10A14000001E76B4FFE5C7386FC07738FFF0F727F9
-:10A15000280024940076063000028732000076B191
-:10A16000001E76B4FFE5C7386FC07738FFF0F727D9
-:10A17000280024940074063000028732000076B173
-:10A18000001E76B4FFE5C7386FC07738FFF0F727B9
-:10A19000280024940072063000028732000076B155
-:10A1A000001E76B4FFE5C7386FC07738FFF0F72799
-:10A1B00028000630000287320000249400707631B7
-:10A1C000001E7630FFE5C73867C07738FFF0F72705
-:10A1D00028009413FFFC9513FFFC9396FF34939390
-:10A1E000FFFC07880008E000D0DC9793FFFC839613
-:10A1F000FF34000000019393FFFC239400B093967A
-:10A20000FF2C9393FFFC07880008E000D258979337
-:10A21000FFFC8396FF2C000000019393FFFC8396C4
-:10A22000FF3C000000019393FFFC23940098939659
-:10A23000FF249393FFFC07880008E000CF24979346
-:10A24000FFFCF3820006F38542548702FF34F38655
-:10A2500038A8F3854244F7054264F384407C00004B
-:10A2600000019393FFFC9713FFFC8396FF240000EB
-:10A2700000019393FFFC8396FF3400000001939349
-:10A28000FFFC07880008E000F7C89793FFFC202236
-:10A290000000E600A2A9F3821770F7044254000000
-:10A2A000000127380001F70542549393FFFCF38225
-:10A2B000001B9393FFFCF38642449393FFFC0788B3
-:10A2C0000008E0011EC09793FFFC8796FFFC829672
-:10A2D000FFF802140000013C00000000000192930E
-:10A2E000FFFC02900008F6046F34F704426486B263
-:10A2F000000400000001C0367200E600A3AC06B006
-:10A3000000028736000076B5001E76B4FFE5C73838
-:10A310006FC0F684407C7739FFF0C03A6A00E600EF
-:10A32000A3ACC7346800F5844074F6044F580000AD
-:10A330000001C62C62007630FFFAC5AC700005AC97
-:10A34000002686AE0000772D001E7738FFE54631E7
-:10A350000000C6B477C076B5FFF0F70200FFC63044
-:10A360007400F702FF00C6B47400C6306800F62F10
-:10A370002800F50642449513FFFC07880008E00119
-:10A380001F489793FFFCF704407C0000000107384A
-:10A3900000019713FFFCF5044074000000019513C1
-:10A3A000FFFC07880008E000BEF89793FFFC879643
-:10A3B000FFFC8296FFF802140000013C0000000040
-:10A3C00000019293FFFC0290000822100080F70425
-:10A3D000425800000001203A0000E600A3F4203AB1
-:10A3E0000007F5020001F5054258F7044258000045
-:10A3F0000001203A0007EE00A6F02394001EF604A8
-:10A40000426023140066F4844078063000028732EC
-:10A41000000076B1001E76B4FFE504A400027425A6
-:10A42000001E7420FFE5063000027531001E7528FD
-:10A43000FFE59516FF7CC7386FC07738FFF025140D
-:10A4400000209516FF94F72B280087320000851610
-:10A45000FF7C05A40002C73857C07738FFF0F71F0C
-:10A4600028002394001C063000028732000076B1D9
-:10A47000001E76B4FFE525140050C7386FC077384A
-:10A48000FFF0F71F28002394001A063000028732DD
-:10A49000000076B1001E76B4FFE5C7386FC077388C
-:10A4A000FFF0F71F280023940018063000028732BF
-:10A4B000000076B1001E76B4FFE5C7386FC077386C
-:10A4C000FFF0F71F280023940016063000028732A1
-:10A4D000000076B1001E76B4FFE5C7386FC077384C
-:10A4E000FFF0F71F28002394001406300002873283
-:10A4F000000076B1001E76B4FFE5C7386FC077382C
-:10A50000FFF0F71F28002394001206300002873264
-:10A51000000076B1001E76B4FFE5C7386FC077380B
-:10A52000FFF0F71F28002394001006300002873246
-:10A53000000076AD001E7631001E7630FFE5C7388C
-:10A5400067C07738FFF0F71F280087260000261421
-:10A550000068C73847C07738FFF0F7332800872EE8
-:10A56000000076B4FFE5C7386FC07738FFF0F71BFF
-:10A5700028002314006405AC0002872E000076AD8D
-:10A58000001E76B4FFE5C7386FC07738FFF0F71BC1
-:10A5900028002314006205AC0002872E000076AD6F
-:10A5A000001E76B4FFE5C7386FC07738FFF0F71BA1
-:10A5B00028002314006005AC0002872E000076AD51
-:10A5C000001E76B4FFE5C7386FC07738FFF0F71B81
-:10A5D00028002314005E05AC0002872E000076AD33
-:10A5E000001E76B4FFE5C7386FC07738FFF0F71B61
-:10A5F00028002314005C05AC0002872E000076AD15
-:10A60000001E76B4FFE5C7386FC07738FFF0F71B40
-:10A6100028002314005A05AC0002872E000076ADF6
-:10A62000001E76B4FFE5C7386FC07738FFF0F71B20
-:10A63000280005AC0002872E00002314005875ADD9
-:10A64000001E75ACFFE5C7385FC07738FFF0F71B19
-:10A6500028009613FFFC9516FF8C9513FFFC0788C6
-:10A660000008E000D2589793FFFC8516FF8C00008D
-:10A6700000019513FFFCF5044258000000019513FA
-:10A68000FFFC251400389516FF849513FFFC0788FE
-:10A690000008E000CF249793FFFCF5044258000027
-:10A6A00000019513FFFCF5044264000000019513BE
-:10A6B000FFFC8516FF84000000019513FFFC851642
-:10A6C000FF94000000019513FFFC07880008E000DC
-:10A6D000F7C89793FFFC20220000E600A6F10000D7
-:10A6E0000001F70442580000000107380001F70597
-:10A6F0004258F704425800000001203A0007EE00DB
-:10A70000A730F5021770F7042D38F6862C28063886
-:10A710000001F6052D3877390002F502001C2032C1
-:10A720000044E600A750B53A6802E000A750F005E3
-:10A730002D389513FFFCF502001B9513FFFCF50661
-:10A7400042449513FFFC07880008E0011EC0979360
-:10A75000FFFC8796FFFC8296FFF802140000013C84
-:10A760000000000000019293FFFC029000082210FC
-:10A770000030F6046F34F704426486B2000400002F
-:10A780000001C0367200E600A9F007300002863AE8
-:10A790000000F5820000F684407C7739001E77388F
-:10A7A000FFE5C63077C0F7044074C6B46800763160
-:10A7B000FFF0C60062009616FFF4C738680007383D
-:10A7C000002686BA00007739001E7738FFE5C6B448
-:10A7D00077C077B40008703EFFE8470C0001D7004F
-:10A7E0000A70203A0000E600A834F60200FF831643
-:10A7F000FFF48396FFF4F7044078C6983800C73812
-:10A8000068000738002686BA00007739001E7738BE
-:10A81000FFE5C6B477C076B5FFF0C6B46400C036B5
-:10A820005A00470C0001D7000A70203A0000E600E9
-:10A83000A83D202E0000F5820001202E0000E60039
-:10A84000A875F606427CF704427C76B1001E76B409
-:10A85000FFE5C7386FC07739FFF007380001F733DD
-:10A86000280007880008E000789C9793FFFCE00030
-:10A87000A9F000000001F3044260000000019313FE
-:10A88000FFFC07880008E000CC609793FFFCF4040D
-:10A890004078F7044F58F5044074F384407CF30487
-:10A8A000407CC62072007630FFFAC59C3000C5A8F7
-:10A8B000580005AC002686AE000074AD001E74A4DE
-:10A8C000FFE573AD001E739CFFE59396FFD4C5288A
-:10A8D00072007528FFFA8316FFF48396FFF4463161
-:10A8E000000045290000C7183800C420700004206B
-:10A8F00000267321001EC6B44FC076B5FFF0F48267
-:10A9000000FFC6304C00F382FF00C6B43C00C630E6
-:10A910006800F62F2800872E00007318FFE59316B5
-:10A92000FFCC8316FFD48396FFF4C5284C00C738AC
-:10A9300037C07739FFF0769D001076B5FFF8C7383D
-:10A940004C00C6B47000F6AF28008722000076A144
-:10A95000001E8316FFCCF382FF0076B4FFE5C738F4
-:10A9600037C07739FFF0C7383C00C5287000F523A1
-:10A97000280087220000F304407CC7386FC0773975
-:10A98000FFF0731900109316FFEC7399FFF8C738A6
-:10A990004C00C71C70009716FFDC23140022831A9A
-:10A9A00000007799001E77BCFFE5C3187FC07319BC
-:10A9B000FFF0F3232800F38642449393FFFC0788BB
-:10A9C0000008E0011F489793FFFCF704407C00005B
-:10A9D0000001073800019713FFFCF30440740000E6
-:10A9E00000019313FFFC07880008E000BEF897936E
-:10A9F000FFFC8796FFFC8296FFF802140000013CE2
-:10AA00000000000000019293FFFC02900008221059
-:10AA10000098F30642449313FFFC07880008E00106
-:10AA200020E49793FFFC20220000E600AEE5000042
-:10AA30000001F704425400000001203A0000EE003B
-:10AA4000AD8927380001F70542542394001EF6040F
-:10AA50004260249400669496FF64F3044078249442
-:10AA600000209496FF94063000028732000076B1F1
-:10AA7000001E76B4FFE5031800029316FF747419E4
-:10AA8000001E7420FFE505980002063000027531B3
-:10AA9000001EC7386FC07738FFF0F72728008732CD
-:10AAA00000007528FFE5C73857C07738FFF0F71F5B
-:10AAB00028002394001C063000028732000076B183
-:10AAC000001E76B4FFE58516FF64C7386FC077387F
-:10AAD000FFF0F71F28002394001A06300002873287
-:10AAE000000076B1001E76B4FFE5C7386FC0773836
-:10AAF000FFF0F71F28002394001806300002873269
-:10AB0000000076B1001E76B4FFE5C7386FC0773815
-:10AB1000FFF0F71F2800239400160630000287324A
-:10AB2000000076B1001E76B4FFE5C7386FC07738F5
-:10AB3000FFF0F71F2800239400140630000287322C
-:10AB4000000076B1001E76B4FFE5C7386FC07738D5
-:10AB5000FFF0F71F2800239400120630000287320E
-:10AB6000000076B1001E76B4FFE5C7386FC07738B5
-:10AB7000FFF0F71F280023940010063000028732F0
-:10AB8000000076AD001E7631001E7630FFE5C73836
-:10AB900067C07738FFF0F71F2800871A00002614D7
-:10ABA0000068C73847C07738FFF0F7332800872E92
-:10ABB000000076B4FFE5C7386FC07738FFF0F72B99
-:10ABC0002800231400649316FF6405AC0002872E4E
-:10ABD000000076AD001E76B4FFE5C7386FC0773849
-:10ABE000FFF0F71B2800249400629496FF6405ACE4
-:10ABF0000002872E000076AD001E76B4FFE5C73850
-:10AC00006FC07738FFF0F7272800251400609516ED
-:10AC1000FF6405AC0002872E000076AD001E76B4FE
-:10AC2000FFE5C7386FC07738FFF0F72B28002314F3
-:10AC3000005E9316FF6405AC0002872E000076AD1F
-:10AC4000001E76B4FFE5C7386FC07738FFF0F71BFA
-:10AC500028002494005C9496FF6405AC0002872EC3
-:10AC6000000076AD001E76B4FFE5C7386FC07738B8
-:10AC7000FFF0F72728002514005A9516FF6405AC4D
-:10AC80000002872E000076AD001E76B4FFE5249406
-:10AC90000050C7386FC07738FFF0F72B2800231417
-:10ACA000005805AC0002872E00009316FF6475ADB6
-:10ACB000001E75ACFFE5C7385FC07738FFF0F71BA3
-:10ACC00028009613FFFC9496FF8C9493FFFC078852
-:10ACD0000008E000D2589793FFFC8516FF8C2314E0
-:10ACE00000389513FFFC278000079793FFFC93160D
-:10ACF000FF849313FFFC07880008E000CF2497939C
-:10AD0000FFFC27800007F7854258278000079793AC
-:10AD1000FFFCF4844264000000019493FFFC85165C
-:10AD2000FF84000000019513FFFC8316FF940000D0
-:10AD300000019313FFFC07880008E000F7C8979311
-:10AD4000FFFC20220000E600AD5D00000001F704DA
-:10AD500042580000000107380001F7054258F70487
-:10AD60002D38F6862C2806380001F6052D3877395F
-:10AD70000002F482001C20320044E600AEE4B4BAC3
-:10AD80006802E000AEE4F0052D38F7044078F58461
-:10AD90004F580738001686BA0000F4063B90773902
-:10ADA000001E7738FFE5C6B477C076B4FFF076357D
-:10ADB0000006A72E6002C52C600076A9001E76B49E
-:10ADC000FFE5C7386FC07739FFF077390003C73820
-:10ADD00040000738000286BA00007739001E773835
-:10ADE000FFE5C6B477C073B7FFF0EE00AE55951619
-:10ADF000FF64A72E600276A9001E76B4FFE5C7386F
-:10AE00006FC07739FFF077390003C738400086BA42
-:10AE10000004231400887739001E7738FFE5C6B494
-:10AE200077C076B5FFF0A6AA6802771D0003C73881
-:10AE3000680027380008853A000484BA0000000042
-:10AE40000001951A0004949A00008596FF7CE000AA
-:10AE5000AE78000000018496FF64A72E600276A5FC
-:10AE6000001E76B4FFE5C7386FC07739FFF0773939
-:10AE70000003C738400085BA00048516FF64F60653
-:10AE80003B90872A000076A9001E76B4FFE5C738FC
-:10AE90006FC07739FFF077390003A6BA6002201E31
-:10AEA0000000C73860007739001E7738FFE5C6B468
-:10AEB00077C0EE00AEC976B5FFF08316FF780000CC
-:10AEC00000017719FFF0C6B868008496FF6400009F
-:10AED0000001C72468009713FFFC07880008C12CF5
-:10AEE00000009793FFFC8796FFFC8296FFF8021400
-:10AEF0000000013C0000000000019293FFFC029062
-:10AF0000000822100010F704408400000001203ADD
-:10AF10000000E600AF3CF60642B8F70442B876B14E
-:10AF2000001E76B4FFE5F3063678F3054244C738D1
-:10AF30006FC07739FFF007380001F7332800F704B6
-:10AF40004F5CF384425C833A0004C43800009316DB
-:10AF5000FFEC771D0001C73838007739000204B8CC
-:10AF6000000C8316FFEC00000001C01E3200EC0054
-:10AF7000B070C5040000A6A24802F704E000F58204
-:10AF80000000C0367200E600AFA8C620480086B2B6
-:10AF90000004F704E00400000001C0367200E6007F
-:10AFA000AFAC202E0000F5820001202E0000E6004C
-:10AFB000AFB900000001F502000086B20000F704FE
-:10AFC000E00000000001C0367200E200AFF4F5823C
-:10AFD0000000C0367200E600AFFC202E000086B2F2
-:10AFE0000004F704E00400000001C0367200E20033
-:10AFF000AFFD202E0000F5820001202E0000E600AB
-:10B00000B00D202A0000F5020001202A0000E60011
-:10B01000B05900000001F7047AD000000001203A86
-:10B020000000E600B064C7204800873A0008F60632
-:10B03000409877390002A6BA6002C73860007739B5
-:10B04000001E7738FFE5C6B477C076B5FFF020362E
-:10B050000000E600B0640000000104A4000CE00061
-:10B06000AF60039C00018316FFEC00000001C01ECE
-:10B070003200EC00B104F3063678F6844F5C771D9D
-:10B080000001C7383800773900020738000CC6B411
-:10B09000700087360008F6844F5877390006C6B42A
-:10B0A00070009693FFFC9396FFF407880008E00079
-:10B0B000FA989793FFFC20220000F684426C839656
-:10B0C000FFF4470C0001D7000A70C71C7000F70599
-:10B0D000425C06B40001F7042D38F685426CF68612
-:10B0E0002C2806380001F6052D3877390002F302C6
-:10B0F000001C20320044E600B108B33A6802E000C8
-:10B10000B108F0052D38F30542448796FFFC82967E
-:10B11000FFF802140000013C0000000000019293BF
-:10B12000FFFC02900008F4020000C5A00000F682B7
-:10B130000770F7046E5020360000E600B16D063847
-:10B14000001C8732000000000001C4207000C022F3
-:10B150007200E400B15D0000000105AC000126B4FE
-:10B16000000120360000E600B14006300004C42093
-:10B170005800C0225A00E400B18100000001042000
-:10B1800000018796FFFC8296FFF802140000013C44
-:10B190000000000000019293FFFC02900008078865
-:10B1A0000008E00078D89793FFFC07880008E000CB
-:10B1B000B11C9793FFFCF704409400000001C022EB
-:10B1C0007200E600B1EDF4054090F7046E50000007
-:10B1D000000186BA1DDCF582000106B4000196BAB2
-:10B1E0001DDC873A1DDCE000B1F0F5857AD0F00572
-:10B1F0007AD0F5844090F0054084F5854094F5863A
-:10B20000E0009593FFFC07880008E000D5A0979325
-:10B21000FFFCF7046E50F405408485BA1DDC000085
-:10B220000001F5853B64F584E000F005425C95BAC9
-:10B230000010F584E004F6862C2895BA0014F70473
-:10B240002D38F5863A4CF585424406380001F6055E
-:10B250002D3877390002F582001C20320044E600C8
-:10B26000B268B5BA6802F0052D38F58635ECF5857B
-:10B2700042308796FFFC8296FFF802140008013CDA
-:10B280000000000000019293FFFC029000082210D1
-:10B2900000C8F30200009316FF94248000089496DF
-:10B2A000FF84238000078316FF940000000193169B
-:10B2B000FF54201E0007EE00B564C71C38008496BA
-:10B2C000000000000001C72470000738002686BA7D
-:10B2D0000000F5844F587739001E7738FFE5C6B473
-:10B2E00077C076B5FFF0F70200FFC6B67400E6003F
-:10B2F000B32D20360001E600B32D77350006A6BA3F
-:10B300005802C73858007639001E7630FFE5C6B4BB
-:10B3100067C076B5FFF020360002E600B331C6B84C
-:10B320000000C72C0000E000B330C6B80000F6846F
-:10B330004F58F7044F58C5340000C02A7200E60089
-:10B34000B55D00000001F6843BBCF30200009316DB
-:10B35000FF3C0428001CF7043BB800000001C03685
-:10B360007200EC00B4409696FFAC77350001C73808
-:10B37000680077390002F4863BB4C63848000630CE
-:10B38000000CC30400009316FF3486B20000872A25
-:10B39000001C8596FF3CC0367200E600B3C0202E2C
-:10B3A000000086B20004872A002000000001C03699
-:10B3B0007200E600B3C0202E0000F5820001202EAE
-:10B3C0000000E600B3D100000001F4820000949672
-:10B3D000FF3486B200008722000000000001C03662
-:10B3E0007200E200B40CF5820000C0367200E60084
-:10B3F000B414202E000086B200048722000400004E
-:10B400000001C0367200E200B415202E0000F58263
-:10B410000001202E0000E600B42500000001F30228
-:10B4200000019316FF348496FF34000000012026AB
-:10B430000000E600B44000000001F3020001931692
-:10B44000FF3C8496FF3C0000000120260000E6003F
-:10B45000B481F60200018716FFACF3063BB476B95F
-:10B460000001C6B4700076B50002C6B4300006B460
-:10B47000001486B600009716FFB0E000B4F496966C
-:10B48000FFB4271400549713FFFC9413FFFCF486B9
-:10B490003BB49493FFFC9396FF4C9516FF440788AA
-:10B4A0000008E00125689793FFFC8396FF4C851602
-:10B4B000FF4420220000E600B4F1F60200018716E6
-:10B4C000FFACF3063BB476B90001C6B4700076B5A4
-:10B4D0000002C6B4300006B4001486B60000971609
-:10B4E000FFB09696FFB4F7053BBCE000B4F82032FD
-:10B4F0000000F602000020320000E600B52D2714FF
-:10B5000000088496FF5400000001C72470008316D1
-:10B51000FFB404A400049496FF548496FF94933AD5
-:10B52000FFC004A40001E000B5549496FF94831674
-:10B53000FF5400000001C7187000F4844F5803182E
-:10B5400000049316FF548316FF9494BAFFC00318A7
-:10B5500000019316FF949516FF3C9396FF8CE00034
-:10B56000B2B0039C00018496FF94000000012026E5
-:10B570000000E600B584F3820001F4044F58E000B7
-:10B58000BEE4000000018316FFB88496FF9400001B
-:10B590000001C01E4A00EC00B5CC9316FF7C269437
-:10B5A00000048736FFC08316FF7C00000001C03A0C
-:10B5B0003200E600BB98039C00018496FF940000D3
-:10B5C0000001C01E4A00EC00B5A106B40004F4045A
-:10B5D0004F588316FF7C00000001C01A4200E600AD
-:10B5E000BA2DF48200009496FF7423800007201E79
-:10B5F0000007EE00B748C71C38008316FF7C000028
-:10B600000001C71870000738002686BA0000F584CC
-:10B610004F587739001E7738FFE5C6B477C076B546
-:10B62000FFF0F70200FFC6B67400E600B6692036E8
-:10B630000001E600B66977350006A6BA5802C73899
-:10B6400058007639001E7630FFE5C6B467C076B57F
-:10B65000FFF020360002E600B66DC6B80000C72C29
-:10B660000000E000B66CC6B80000F6844F58F7043E
-:10B670004F58C5340000C02A7200E600B741C584A7
-:10B6800000008496FF7486AA001C8316FF3CF60215
-:10B69000000004A400019496FF74871A001C04A8FB
-:10B6A000001C9496FF34C0367200E600B6CC041835
-:10B6B000001C86AA0020871A002000000001C03666
-:10B6C0007200E600B6D020320000F60200012032FF
-:10B6D0000000E600B6DD00000001F58200008316E0
-:10B6E000FF3487220000869A000000000001C03667
-:10B6F0007200E200B71CF6020000C0367200E600DD
-:10B70000B72420320000869A00048722000400003B
-:10B710000001C0367200E200B72520320000F602B8
-:10B72000000120320000E600B735202E0000F5822F
-:10B730000001202E0000E600B740000000019396B3
-:10B74000FF84E000B5EC039C00018496FF7483162F
-:10B75000FF9400000001C0263200E600BB982300E1
-:10B7600000088496FF8400000001C0263200E60035
-:10B77000BB99F6020000F684407CF7044074C6B41E
-:10B780006800C73868000738002686BA0000773995
-:10B79000001E7738FFE5C6B477C077B40008703E66
-:10B7A000FFE8470C0001D7000A70203A0000E600CD
-:10B7B000B804F58200FF8496FF848316FF8C000096
-:10B7C0000001C72432008496FF7CC7387000C7246C
-:10B7D00070000738002686BA00007739001E7738D7
-:10B7E000FFE5C6B477C076B5FFF0C6B45C00C036DE
-:10B7F0006200470C0001D7000A70203A0000E60002
-:10B80000B80D20320000F602000120320000E600F0
-:10B81000BB9823800007201E0007EE00B8C8C71C95
-:10B8200038008316000000000001C71870000738B8
-:10B83000002686BA0000F5844F587739001E773805
-:10B84000FFE5C6B477C076B5FFF0F70200FFC6B6D5
-:10B850007400E600B89120360001E600B891773513
-:10B860000006A6BA5802C73858007639001E76304E
-:10B87000FFE5C6B467C076B5FFF020360002E600EB
-:10B88000B895C6B80000C72C0000E000B894C6B850
-:10B890000000F6844F58F7044F58C5340000C02A02
-:10B8A0007200E600B8C1000000019513FFFC9396FA
-:10B8B000FF4C07880008E000CC609793FFFC83965C
-:10B8C000FF4CE000B814039C00018496FF848316AB
-:10B8D000FF8CF384407CF5044074C4A43200949639
-:10B8E000FF348316FF34C59C3800C5A8580005AC4A
-:10B8F000002686AE0000772D001E7738FFE5742DF8
-:10B90000001E7420FFE5739D0010739DFFF8C4A412
-:10B9100030009496FF3C8316FF7CC6B477C0C49871
-:10B9200048009496FF3C04A400269496FF3C73259F
-:10B93000001E7318FFE59316FF6C74A5001E949605
-:10B94000FF6474A4FFE59496FF648316FF7CF4847F
-:10B950004F5876B5FFF0C6184A007630FFFA4631E8
-:10B960000000F30200FFC6303400F482FF00C6B4CA
-:10B970004C00C6306800F62F2800872E0000831682
-:10B98000FF34C73847C07739FFF07319001093169A
-:10B99000FF347499FFF8F30200FFC7383400C7245E
-:10B9A00070009716FF34249400CA84A6000077A57F
-:10B9B000001E77BCFFE5C4A47FC074A5FFF083160A
-:10B9C000FF3CF4AF2800F4844F58871A0000C528C4
-:10B9D0004A007528FFFA8316FF6C45290000F4829F
-:10B9E00000FFC5284C008496FF3CC73837C0773924
-:10B9F000FFF0F302FF00C7383400C5287000F527B8
-:10BA00002800872600008316FF648416FF7CC73851
-:10BA100037C07739FFF0F48200FFC7384C00831637
-:10BA2000FF3CC39C7000E000BEE4F39B2800F704D9
-:10BA3000407CF6044074C7387000C7307000073887
-:10BA4000002686BA00007739001E7738FFE5C6B4B5
-:10BA500077C077B40008703EFFE8470C0001D700BC
-:10BA60000A70203A0000E600BA7D25800007E00059
-:10BA7000BEE404200040E000BAD8C42C0000C73067
-:10BA80004200849600007538FFFA0624000A202E32
-:10BA90000007EE00BAD40730000E86BA00007739EE
-:10BAA000001E7738FFE5C6B477C076B5FFF0F70221
-:10BAB00000FFC6B4740047290000C0367200470C6E
-:10BAC0000001203A0000E600BA7406300002E000EF
-:10BAD000BA8C05AC0001F402000807200007203AE8
-:10BAE000000EE200BBA4C5A0400083160000F504D0
-:10BAF000407CF48200FFF6044F58C598580005AC0E
-:10BB0000002686AE0000772D001E7738FFE5C618A8
-:10BB100062007630FFFA46310000C6304C00C6B4F1
-:10BB200077C076B5FFF0772900107739FFF8C6B4F3
-:10BB30004C00C7386800F72F2800F5844074C528EA
-:10BB40005000C5AC500005AC002686AE0000772D35
-:10BB5000001E7738FFE5752D001E7528FFE5C6B479
-:10BB600077C076B5FFF0F702FF00C6B47400C630A8
-:10BB70006800F62F2800872E000076A1001076B509
-:10BB8000FFF8C73857C07739FFF0C7384C00C6B444
-:10BB90007000E000BBF8F6AF2800F4044F58E00056
-:10BBA000BEE404200040F6044F5883160000F7045A
-:10BBB000407CF5844074C61862007630FFFAC738BE
-:10BBC0007000C5AC700005AC002686AE0000772D75
-:10BBD000001E7738FFE546310000C6B477C076B561
-:10BBE000FFF0F70200FFC6307400F702FF00C6B492
-:10BBF0007400C6306800F62F280023800007201E3E
-:10BC00000007EE00BEE0C71C38008496000000006C
-:10BC10000001C72470000738002686BA0000F584AA
-:10BC20004F587739001E7738FFE5C6B477C076B530
-:10BC3000FFF0F70200FFC6B67400E600BC792036BC
-:10BC40000001E600BC7977350006A6BA5802C7386D
-:10BC500058007639001E7630FFE5C6B467C076B569
-:10BC6000FFF020360002E600BC7DC6B80000C72CFD
-:10BC70000000E000BC7CC6B80000F6844F58F70412
-:10BC80004F58C5340000C02A7200E600BED906A88D
-:10BC9000001C83160000000000019313FFFC969324
-:10BCA000FFFCF4863BB49493FFFC9396FF4C9516EF
-:10BCB000FF449696FF4007880008E00123409793D1
-:10BCC000FFFCF3044F5CF48200009496FF5C8696C0
-:10BCD000FF408396FF4C8516FF449316FF34861A67
-:10BCE00000089696FF3C871A000400000001C0324D
-:10BCF0007200EC00BDB89616FF9C77310001C73882
-:10BD0000600077390002C63830000630000C86B279
-:10BD10000000872A001C8596FF5CC0367200E60092
-:10BD2000BD40C404000086B20004872A0020000041
-:10BD30000001C0367200E600BD44202E0000F582EE
-:10BD40000001202E0000E600BD5100000001F402B9
-:10BD500000008316FF3C86B20000871A0000000036
-:10BD60000001C0367200E200BD90F5820000C036CE
-:10BD70007200E600BD98202E000086B20004871AEB
-:10BD8000000400000001C0367200E200BD99202EC0
-:10BD90000000F5820001202E0000E600BDA920224F
-:10BDA0000000F402000120220000E600BDB80000FF
-:10BDB0000001F48200019496FF5C8316FF5C000092
-:10BDC0000001201A0000E600BDF9F6020001871606
-:10BDD000FF9C8496FF3476B90001C6B4700076B536
-:10BDE0000002C6B4480006B4001486B600009716D8
-:10BDF000FFA0E000BE709696FFA42714006497137E
-:10BE0000FFFC8316FF3C000000019313FFFC8496A7
-:10BE1000FF34000000019493FFFC9396FF4C9516AD
-:10BE2000FF4407880008E00125689793FFFC83968C
-:10BE3000FF4C8516FF4420220000E600BE71F6028A
-:10BE400000008716FF9C8316FF3476B90001C6B444
-:10BE5000700076B50002C6B4300006B4001486B691
-:10BE600000009716FFA09696FFA4971A0008F60206
-:10BE7000000120320000E600BE99F606429CF7045D
-:10BE8000429C76B1001E76B4FFE5C7386FC07739A3
-:10BE9000FFF007380001F7332800F7044F5800007F
-:10BEA0000001C72872007738FFFA4739000097135E
-:10BEB000FFFC0728001C9713FFFCF4844F5C000074
-:10BEC00000019493FFFC9396FF4C07880008E00163
-:10BED00023409793FFFC8396FF4CE000BBFC039C40
-:10BEE0000001841600008796FFFC8296FFF802147A
-:10BEF0000004013C0000000000019293FFFC02904E
-:10BF0000000822100060851600008616000406A8AE
-:10BF10000018C7306000C5B8680020320007EE0086
-:10BF2000BF64072C000E86BA00007739001E7738F0
-:10BF3000FFE5C6B477C076B5FFF0F70200FFC6B4E0
-:10BF4000740020360000470C0001D7000A70203A28
-:10BF50000000E600BF6105AC0002E000BF1806303B
-:10BF6000000120320007EE00C04C06A80016F505BF
-:10BF70004074F605407CF3020006F3054254961324
-:10BF8000FFFC052800029516FFC49513FFFC2394BF
-:10BF900000209396FFBC9393FFFC9616FFAC078896
-:10BFA0000008E000D0DC9793FFFC8496FFC42314C4
-:10BFB00000389493FFFC9316FFB49313FFFC07889B
-:10BFC0000008E000D2589793FFFC8702FF348616E2
-:10BFD000FFACF70542649613FFFC9713FFFC8396B2
-:10BFE000FFB4000000019393FFFC8496FFBC0000A7
-:10BFF00000019493FFFC07880008E000F7C89793BE
-:10C00000FFFC20220000E600C01DF3063AD8F7042A
-:10C0100042540000000127380001F7054254F3059F
-:10C020004244F38217709393FFFCF482001B9493B5
-:10C03000FFFCF30642449313FFFC07880008E0016D
-:10C040001EC09793FFFCE000C1A0000000018736EE
-:10C050000000F5844F58F4063B7076B5001E76B4A8
-:10C06000FFE5C7386FC07738FFF076390006A72E96
-:10C070006002C52C600076A9001E76B4FFE5C738C3
-:10C080006FC07739FFF077390003C73840000738B1
-:10C09000000286BA00007739001E7738FFE5C6B483
-:10C0A00077C076B7FFF0EE00C1159696FF9CA72EDD
-:10C0B000600276A9001E76B4FFE58396FF9CC73820
-:10C0C0006FC07739FFF077390003C738400086BA70
-:10C0D0000004249400607739001E7738FFE5C6B469
-:10C0E00077C076B5FFF0A6AA6802771D0003C738AF
-:10C0F00068002738000883BA0004833A0000000073
-:10C10000000193A60004932600008596FFA4E0009A
-:10C11000C13823000007A72E600276A9001E76B45E
-:10C12000FFE5C7386FC07739FFF077390003C738AC
-:10C13000400085BA0004230000079313FFFC872A00
-:10C14000000076A9001E76B4FFE58396FF9CF606F4
-:10C150003B70C7386FC07739FFF077390003A6BA54
-:10C160006002201E0000C73860007739001E773853
-:10C17000FFE5C6B477C0EE00C18D76B5FFF08496BA
-:10C18000FFA0000000017725FFF0C6B86800C728AF
-:10C1900068009713FFFC07880008C12C00009793E4
-:10C1A000FFFC8796FFFC8296FFF802140008013C12
-:10C1B0000000000000019293FFFC02900008221092
-:10C1C000007025000007202A0007EE00C3B8C7282A
-:10C1D00050008316000000000001C71870000738E7
-:10C1E000002686BA0000F5844F587739001E77384C
-:10C1F000FFE5C6B477C076B5FFF0F70200FFC6B61C
-:10C200007400E600C23D20360001E600C23D7735ED
-:10C210000006A6BA5802C73858007639001E763094
-:10C22000FFE5C6B467C076B5FFF020360002E60031
-:10C23000C24DC03A5A00E000C248C72C0000F704C3
-:10C240004F58F5844F5800000001C03A5A00E600EC
-:10C25000C3B1F4863B908396000000000001069C69
-:10C2600000168736000076B5001E76B4FFE5C738A5
-:10C270006FC07738FFF076390006A72E6002C52C14
-:10C28000600076A9001E76B4FFE5C7386FC0773925
-:10C29000FFF077390003C73848000738000286BA34
-:10C2A00000007739001E7738FFE5C6B477C076B74F
-:10C2B000FFF0EE00C3219696FF8CA72E600276A9B0
-:10C2C000001E76B4FFE58316FF8CC7386FC0773940
-:10C2D000FFF077390003C738480086BA0004249479
-:10C2E00000707739001E7738FFE5C6B477C076B5A1
-:10C2F000FFF0A6AA680277190003C738680027383C
-:10C30000000883BA0004833A00000000000193A6ED
-:10C310000004932600008616FF94E000C34400004A
-:10C320000001A72E600276A9001E76B4FFE5F30691
-:10C330003B90C7386FC07739FFF077390003C738B3
-:10C340003000863A0004872A000076A9001E76B4E1
-:10C35000FFE58396FF8CF4863B90C7386FC0773932
-:10C36000FFF077390003A6BA4802201E0000C73844
-:10C3700048007739001E7738FFE5C6B477C0EE0075
-:10C38000C39576B5FFF08316FF9000000001771982
-:10C39000FFF0C6B86800C72868009713FFFC07883D
-:10C3A0000008C13000009793FFFCE000C5C4000006
-:10C3B0000001E000C1C40528000183960000F4825A
-:10C3C0000006F4854254F60442602514001E23142E
-:10C3D00000209316FFACF3854078063000028732C8
-:10C3E000000076B1001E76B4FFE50630000275B19C
-:10C3F000001EC7386FC07738FFF0F71B2800873260
-:10C40000000075ACFFE5C7385FC07738FFF0F72B49
-:10C4100028002514001C063000028732000076B187
-:10C42000001E76B4FFE5C7386FC07738FFF0F72BF2
-:10C4300028002514001A063000028732000076B169
-:10C44000001E76B4FFE5C7386FC07738FFF0F72BD2
-:10C45000280025140018063000028732000076B14B
-:10C46000001E76B4FFE5C7386FC07738FFF0F72BB2
-:10C47000280025140016063000028732000076B12D
-:10C48000001E76B4FFE5C7386FC07738FFF0F72B92
-:10C49000280025140014063000028732000076B10F
-:10C4A000001E76B4FFE5C7386FC07738FFF0F72B72
-:10C4B000280025140012063000028732000076B1F1
-:10C4C000001E76B4FFE5C7386FC07738FFF0F72B52
-:10C4D0002800063000028732000025140010763153
-:10C4E000001E7630FFE5C73867C07738FFF0F72BBE
-:10C4F0002800071C00029713FFFC2394005093961A
-:10C50000FFA49393FFFC07880008E000D25897939C
-:10C51000FFFC8496FFA4231400389493FFFC27802B
-:10C5200000079793FFFC9316FF9C9313FFFC07886B
-:10C530000008E000CF249793FFFC8702FF34278098
-:10C540000007F7854258F705426427800007979354
-:10C55000FFFC9713FFFC8396FF9C00000001939360
-:10C56000FFFC8496FFAC000000019493FFFC078859
-:10C570000008E000F5F49793FFFC20220000E6009D
-:10C58000C59500000001F70442580000000107387B
-:10C590000001F7054258F7042D38F30639C0F305BA
-:10C5A0004244F6862C2806380001F6052D387739E6
-:10C5B0000002F382001C20320044E600C5C4B3BA76
-:10C5C0006802F0052D388796FFFC8296FFF802146A
-:10C5D0000004013C0000000000019293FFFC029067
-:10C5E000000825000007F7044074F6844F58F6044D
-:10C5F0004260C7386A0075B8FFFA0630000A202A80
-:10C600000007EE00C6480730000E86BA00007739F2
-:10C61000001E7738FFE5C6B477C076B5FFF0F702A5
-:10C6200000FFC6B47400472D0000C0367200470CEE
-:10C630000001203A0000E600C64CC3280000063086
-:10C640000002E000C5FC05280001F3020008C5183F
-:10C650003000F3844260F6044F58F704407CF484C1
-:10C660004074C51C50000528002685AA00007429C6
-:10C67000001E7420FFE5C61C62007630FFFAC6B8C3
-:10C680007000C4A4680004A4002676A5001E76B439
-:10C69000FFE5773900107739FFF846310000C5AC67
-:10C6A00047C075ADFFF0F40200FFC5AC4400C738C9
-:10C6B0005800F72B28008726000075A5001EC630FD
-:10C6C000440075ACFFE5C7386FC07739FFF0F682DC
-:10C6D000FF00C7386C00C6307000F6272800872698
-:10C6E00000007699001076B5FFF8C7385FC077393B
-:10C6F000FFF0C7384400C6B47000F6A72800939333
-:10C70000FFFCF3843BB0000000019393FFFC07881B
-:10C710000008E000D42C9793FFFCF704407C000055
-:10C720000001073800019713FFFCF38440740000F8
-:10C7300000019393FFFC07880008E000BEF8979380
-:10C74000FFFC8796FFFC8296FFF802140004013C70
-:10C750000000000000019293FFFC02900008879601
-:10C76000FFFC8296FFF802140008013C0000000064
-:10C7700000019293FFFC029000088796FFFC8296CE
-:10C78000FFF802140004013C000000000001929335
-:10C79000FFFC029000088796FFFC8296FFF80214C7
-:10C7A0000000013C0000000000019293FFFC029099
-:10C7B0000008F70642309713FFFCF7063560971321
-:10C7C000FFFC07880008E00014F49793FFFCF706CD
-:10C7D00042309713FFFCF70635EC9713FFFC0788F0
-:10C7E0000008E00014F49793FFFCF7064244971307
-:10C7F000FFFCF70636789713FFFC07880008E00077
-:10C8000014F49793FFFCF70642449713FFFCF706D6
-:10C8100037049713FFFC07880008E00014F497938F
-:10C82000FFFCF70642449713FFFCF7063790971377
-:10C83000FFFC07880008E00014F49793FFFCF7065C
-:10C8400042449713FFFCF706381C9713FFFC078838
-:10C850000008E00014F49793FFFCF7064244971396
-:10C86000FFFCF70638A89713FFFC07880008E000D4
-:10C8700014F49793FFFCF70642449713FFFCF70666
-:10C8800039349713FFFC07880008E00014F49793ED
-:10C89000FFFCF70642449713FFFCF70639C09713D5
-:10C8A000FFFC07880008E00014F49793FFFCF706EC
-:10C8B00042449713FFFCF7063A4C9713FFFC078896
-:10C8C0000008E00014F49793FFFCF7064244971326
-:10C8D000FFFCF7063AD89713FFFC07880008E00032
-:10C8E00014F49793FFFC8796FFFC8296FFF80214DE
-:10C8F0000000013C0000000000019293FFFC029048
-:10C90000000885960000F5063B90872E000076AD66
-:10C91000001E76B4FFE5C7386FC07739FFF077396E
-:10C920000003C73850000738000286BA0000773984
-:10C93000001E7738FFE5C6B477C07637FFF0EE000B
-:10C94000C99500000001872E000076AD001E76B468
-:10C95000FFE5C7386FC07739FFF077390003C73874
-:10C96000500086BA00047739001E7738FFE5C6B458
-:10C9700077C076B5FFF0A6AE680277310003C738FE
-:10C9800068002738000884BA0004843A0000E000F8
-:10C99000C9B4C5240000872E000076AD001E76B411
-:10C9A000FFE5C7386FC07739FFF077390003C73824
-:10C9B0005000853A0004872E000076AD001E76B444
-:10C9C000FFE520320000F6063B90C7386FC077398C
-:10C9D000FFF077390003A6BA6002C73860007739E4
-:10C9E000001E7738FFE5C6B477C0EE00C9F976B50A
-:10C9F000FFF07721FFF0C6B86800C72C68009713D6
-:10CA0000FFFC07880008C12800009793FFFC879669
-:10CA1000FFFC8296FFF802140004013C00000000B5
-:10CA200000019293FFFC0290000885960000F50635
-:10CA30003B70872E000076AD001E76B4FFE5C73848
-:10CA40006FC07739FFF077390003C73850000738D7
-:10CA5000000286BA00007739001E7738FFE5C6B4B9
-:10CA600077C07637FFF0EE00CABD00000001872EC8
-:10CA7000000076AD001E76B4FFE5C7386FC0773989
-:10CA8000FFF077390003C738500086BA00047739C1
-:10CA9000001E7738FFE5C6B477C076B5FFF0A6AEC6
-:10CAA000680277310003C73868002738000884BA65
-:10CAB0000004843A0000E000CADCC5240000872E90
-:10CAC000000076AD001E76B4FFE5C7386FC0773939
-:10CAD000FFF077390003C7385000853A0004839689
-:10CAE000000476AD001E76B4FFE52032000093937B
-:10CAF000FFFC872E0000F6063B70C7386FC0773901
-:10CB0000FFF077390003A6BA6002C73860007739B2
-:10CB1000001E7738FFE5C6B477C0EE00CB2976B5A6
-:10CB2000FFF07721FFF0C6B86800C72C68009713A4
-:10CB3000FFFC07880008C12800009793FFFC879638
-:10CB4000FFFC8296FFF802140008013C0000000080
-:10CB500000019293FFFC02900008F5044F58F58203
-:10CB6000000206280080202E0062EE00CB900730E5
-:10CB70000040F0332800C6B8520076B4FFFA063001
-:10CB80000014F6B32800C6380000E000CB6405AC02
-:10CB90000001F7044F580000000106B818D4F482D1
-:10CBA0000001F4B72800073818C0F03B2800F7064A
-:10CBB00042C0F4820002F4BB28008796FFFC8296F4
-:10CBC000FFF802140000013C0000000000019293F5
-:10CBD000FFFC02900008F68442C0F60642C077319E
-:10CBE000001E7738FFE575B1001EC6B477C076B475
-:10CBF000FFF0F7044F5876B50006C4386800872266
-:10CC0000001476A1001E76B4FFE5C7386FC07738F0
-:10CC1000FFF0F7332800F70442C075ACFFE5C738D2
-:10CC20005FC07738FFF0203A0001E600CC4CF606F2
-:10CC30004290F704429076B1001E76B4FFE5C73803
-:10CC40006FC07739FFF007380001F7332800879667
-:10CC5000FFFC8296FFF802140000013C0000000077
-:10CC600000019293FFFC0290000822100004851638
-:10CC70000000000000019513FFFC9516FFF40788E3
-:10CC80000008E000CD009793FFFC8516FFF42022FA
-:10CC90000000E600CCBCF58642C0F7044290F606E0
-:10CCA000429276B1001E76B4FFE5C7386FC077397F
-:10CCB000FFF007380001E000CCECF7332800F02B40
-:10CCC0002800F68442C0772D001E7738FFE506283D
-:10CCD0000014C6B477C076B4FFF0F7044F58F6B32B
-:10CCE0002800C72872007738FFFAF72F28008796A8
-:10CCF000FFFC8296FFF802140004013C00000000D3
-:10CD000000019293FFFC0290000886960000F70451
-:10CD10004F58F4020000C6B472007734FFFA273887
-:10CD20000002203A0061F702003FE200CD40C6B4A5
-:10CD3000740020360000E600CD4000000001F4023F
-:10CD400000018796FFFC8296FFF802140004013C64
-:10CD50000000000000019293FFFC0290000886167C
-:10CD600000008716000885960004C5307000C032A8
-:10CD70005200E600CDA10000000186B2000077312C
-:10CD8000001E7738FFE5C6B477C076B5FFE8F6AF8A
-:10CD9000680006300001C0325200E600CD7805ACD4
-:10CDA00000018796FFFC8296FFF80214000C013CFC
-:10CDB000000000000001000000009293FFFC0290C0
-:10CDC000000884960000841600048596000886A654
-:10CDD00000007725001E7738FFE5C6B477C07535AB
-:10CDE000FFF0202A0010E200CE0DF606428EF5027A
-:10CDF0000010F704428C76B1001E76B4FFE5C73808
-:10CE00006FC07739FFF007380001F7332800202E74
-:10CE10000001E600CE70202A0000EE00CE7107244B
-:10CE2000000225280001A5BA50028622000076A142
-:10CE3000001E76B4FFE5C73850007739001E7738FA
-:10CE4000FFE5C5AC77C0C6306FC07631FFF075AD79
-:10CE5000FFE8F68200FFF702F15475AD0002A72E3D
-:10CE60007002C6306C00C6307580F623280024207E
-:10CE7000000225A80001F302F24603A40002C4AC9C
-:10CE80003800252C0001202E0000EC00CF110000FE
-:10CE90000001E600CEA0C71C5000E000CEB4F602B0
-:10CEA0000000A69E50027739001E7738FFE5C6B411
-:10CEB00077C07635FFE886A600007725001E773814
-:10CEC000FFE52528000225AC0002C6B477C076B580
-:10CED000FFE877310004C738620077390001C738AE
-:10CEE0003000C6B46800C6B4700006B4000E8736C1
-:10CEF000000024A4000276B5001E76B4FFE5C73812
-:10CF00006FC07738FFF0F7232800E000CE8424209C
-:10CF100000028796FFFC8296FFF80214000C013C89
-:10CF20000000000000019293FFFC029000088616AA
-:10CF3000000883160004839600008732000076B153
-:10CF4000001E76B4FFE5059C0002749D001E74A4CB
-:10CF5000FFE5741D001E063000027531001EC73843
-:10CF60006FC07738FFF0F71F280087320000752860
-:10CF7000FFE5C73857C07738FFF0F72F280005AC1A
-:10CF80000002063000028732000076B1001E76B43F
-:10CF9000FFE5C7386FC07738FFF0F72F280005ACE2
-:10CFA0000002063000028732000076B1001E76B41F
-:10CFB000FFE5C7386FC07738FFF0F72F280005ACC2
-:10CFC0000002063000028732000076B1001E76B4FF
-:10CFD000FFE5C7386FC07738FFF0F72F280005ACA2
-:10CFE0000002063000028732000076B1001E76B4DF
-:10CFF000FFE5C7386FC07738FFF0F72F280005AC82
-:10D000000002063000028732000076B1001E76B4BE
-:10D01000FFE5C7386FC07738FFF0F72F280005AC61
-:10D020000002063000028732000076B1001E76B49E
-:10D03000FFE5C7386FC07738FFF0F72F28000630BC
-:10D0400000028732000005AC00027631001E763007
-:10D05000FFE5C73867C07738FFF0F72F2800871E35
-:10D0600000007420FFE5C7384FC07739FFF007385C
-:10D070000001F71F2800871E0000049C0002C7382B
-:10D0800047C07739FFF025380001202A0000EE0064
-:10D09000D0BD26280001A7266002C6A4600076B590
-:10D0A000001E76B4FFE5C5A45000C5300000C738A7
-:10D0B0006FC07739FFE8E000D088F72F6800071CC1
-:10D0C0000002F33B6800C41C00008796FFFC8296B8
-:10D0D000FFF80214000C013C0000000000019293D4
-:10D0E000FFFC0290000886160004841600008732B8
-:10D0F000000076B1001E76B4FFE505A0000274A121
-:10D10000001E74A4FFE5063000027531001EC7380A
-:10D110006FC07738FFF0F7232800873200007528AA
-:10D12000FFE5C73857C07738FFF0F72F280005AC68
-:10D130000002063000028732000076B1001E76B48D
-:10D14000FFE5C7386FC07738FFF0F72F280005AC30
-:10D150000002063000028732000076B1001E76B46D
-:10D16000FFE5C7386FC07738FFF0F72F280005AC10
-:10D170000002063000028732000076B1001E76B44D
-:10D18000FFE5C7386FC07738FFF0F72F280005ACF0
-:10D190000002063000028732000076B1001E76B42D
-:10D1A000FFE5C7386FC07738FFF0F72F280005ACD0
-:10D1B0000002063000028732000076B1001E76B40D
-:10D1C000FFE5C7386FC07738FFF0F72F280005ACB0
-:10D1D0000002063000028732000076B1001E76B4ED
-:10D1E000FFE5C7386FC07738FFF0F72F280005AC90
-:10D1F0000002063000028732000006A000027631ED
-:10D20000001E7630FFE5C73867C07738FFF0F72F8C
-:10D210002800872200007621001E85960008C73866
-:10D220004FC07739FFF0C6B47000F5B768008722A9
-:10D2300000007630FFE5C73867C07739FFF0073860
-:10D240000001F72328008796FFFC8296FFF802145E
-:10D25000000C013C0000000000019293FFFC0290D2
-:10D2600000082210002027140020F03B280084969C
-:10D270000004F502000086A600007625001E763028
-:10D28000FFE504240002C6B467C076B4FFF0F6BB25
-:10D2900028008726000076A5001E76B4FFE5C73873
-:10D2A0006FC07739FFF0C02A7200EC00D2F876A583
-:10D2B000001E8726000076B4FFE5062800012594AD
-:10D2C000001EC5AC5000C5300000C7386FC07739AC
-:10D2D000FFF0C7385200A6A27002C720700077394D
-:10D2E000001E7738FFE5C6B477C076B5FFE8C68084
-:10D2F0006A00E000D290F6AF68008716FFE076156E
-:10D30000001E7630FFE5839600002314001E7599F9
-:10D31000001E75ACFFE57515001E7528FFE57495B8
-:10D32000001E74A4FFE57415001E7420FFE5069C22
-:10D3300000027395001E9396FFDCC73867C0839682
-:10D3400000007738FFF0F71F28008396FFDC871A6C
-:10D350000000739CFFE59396FFDCC7385FC0773809
-:10D36000FFF0F737280006B400028716FFE4231405
-:10D37000001A7619001E7630FFE5C73857C0773897
-:10D38000FFF0F7372800871A000006B40002C738FC
-:10D3900067C07738FFF0F737280006B40002871619
-:10D3A000FFE8231400167619001E7630FFE5C73813
-:10D3B0004FC07738FFF0F7372800871A000006B40F
-:10D3C0000002C73867C07738FFF0F737280006B487
-:10D3D00000028716FFEC231400127619001E763027
-:10D3E000FFE5C73847C07738FFF0F7372800871ABE
-:10D3F000000006B4000284160000C73867C0773802
-:10D40000FFF0F73728008716FFF006B40002C73890
-:10D410003FC07738FFF0F73728008796FFFC8296E9
-:10D42000FFF802140008013C000000000001929384
-:10D43000FFFC029000088616000084160004F684A3
-:10D440004F5887320014033000147519001E7528D8
-:10D45000FFE5C3A06A00739CFFFA04A0001475A541
-:10D46000001EC6306A007630FFFAC73857C07738DA
-:10D47000FFF0F7272800F39B280007200016F63B53
-:10D4800028008722001475ACFFE5C7385FC07738E5
-:10D49000FFF077390006C6B4700006B40016F3B783
-:10D4A00028008796FFFC8296FFF802140008013CD2
-:10D4B0000000000000019293FFFC02900008861615
-:10D4C0000000F5844F5805300016872A000076A921
-:10D4D000001E76B4FFE5C7386FC07738FFF07739A4
-:10D4E0000006C42C7000C0226200E600D52906A008
-:10D4F000001687360000C6305A007630FFFA76B53F
-:10D50000001E76B4FFE5C7386FC07738FFF0773973
-:10D51000000676B8FFFAF6AB2800C72C7000073873
-:10D520000014E000D52CF63B2800C42C00008796A0
-:10D53000FFFC8296FFF802140004013C000000008A
-:10D5400000019293FFFC02900008F7064F844738D1
-:10D55000FFFCF7056F30F686505C46B4FFFCF6859D
-:10D560006E50F7066E7C4738FFFCF7056E540734A3
-:10D57000191CF7054F5CF70200649736191CF70277
-:10D5800000009736192006B4001CF6854F58879680
-:10D59000FFFC8296FFF802140000013C000000002E
-:10D5A00000019293FFFC0290000822100090F30209
-:10D5B000FFFFF3054F54F38200009396FFAC231452
-:10D5C00000209316FF9C239400389396FF948316B3
-:10D5D000FFACF7044F5CF382000C9396FF74931634
-:10D5E000FF8C873A0004000000019716FFA4831601
-:10D5F000FFAC8396FFA400000001C01A3A00EC00C3
-:10D60000DB78F30204BCF7044F5C8316FF74000060
-:10D610000001C7383000873A0008F6844F58773940
-:10D620000006C4B470009493FFFC9496FF7C0788B6
-:10D630000008E000CD009793FFFC8496FF7C202239
-:10D640000000E600D654C5040000F7044288E0005C
-:10D65000D87CF6064288F6044F5C83960000831659
-:10D66000FF74869E0000A7323002F5820000C036AB
-:10D670007200E600D694C6303000869E00048732E1
-:10D68000000400000001C0367200E600D698202E8B
-:10D690000000F5820001202E0000E600D6A5000063
-:10D6A0000001F50200008396000087320000869E8C
-:10D6B000000000000001C0367200E200D6E4F582EE
-:10D6C0000000C0367200E600D6EC202E0000869ED8
-:10D6D00000048732000400000001C0367200E2003E
-:10D6E000D6ED202E0000F5820001202E0000E6007D
-:10D6F000D6FD202A0000F5020001202A0000E600E5
-:10D70000D72804A400028316FFACF70642C883960C
-:10D71000FF8CF3054F54C71C7000F03B28000738FE
-:10D720000002E000DB50F03B28009496FF6C872657
-:10D73000000076A5001E76B4FFE58316FF6C839685
-:10D74000FF9C2494001E0618000275B1001E75ACE3
-:10D75000FFE5C7386FC07738FFF0F71F2800873222
-:10D760000000751D001E7528FFE5C7385FC07738BB
-:10D77000FFF0F72728002494001C063000028732AF
-:10D78000000076B1001E76B4FFE5C7386FC0773869
-:10D79000FFF0F72728002494001A06300002873291
-:10D7A000000076B1001E76B4FFE5C7386FC0773849
-:10D7B000FFF0F72728002494001806300002873273
-:10D7C000000076B1001E76B4FFE5C7386FC0773829
-:10D7D000FFF0F72728002494001606300002873255
-:10D7E000000076B1001E76B4FFE5C7386FC0773809
-:10D7F000FFF0F72728002494001406300002873237
-:10D80000000076B1001E76B4FFE5C7386FC07738E8
-:10D81000FFF0F72728002494001206300002873218
-:10D82000000076B1001E76B4FFE5C7386FC07738C8
-:10D83000FFF0F7272800063000028732000024940A
-:10D8400000107631001E7630FFE5C73867C07738A4
-:10D85000FFF0F72728008716FFE0F682FFFCC738A5
-:10D8600057C07739FFF007380003C4B86C00202692
-:10D870000010E200D89DF606428AF704428876B18D
-:10D88000001E76B4FFE5F4020000C7386FC0773998
-:10D89000FFF007380001E000DBA0F7332800831613
-:10D8A000FF6C251400368396FF94871A0000769942
-:10D8B000001E76B4FFE50618000275B1001EC738D9
-:10D8C0006FC07738FFF0F71F28008732000075AC73
-:10D8D000FFE5C7385FC07738FFF0F72B2800251425
-:10D8E0000034063000028732000076B1001E76B4A4
-:10D8F000FFE5C7386FC07738FFF0F72B28002514F5
-:10D900000032063000028732000076B1001E76B485
-:10D91000FFE5C7386FC07738FFF0F72B28002514D4
-:10D920000030063000028732000076B1001E76B467
-:10D93000FFE5C7386FC07738FFF0F72B28002514B4
-:10D94000002E063000028732000076B1001E76B449
-:10D95000FFE5C7386FC07738FFF0F72B2800251494
-:10D96000002C063000028732000076B1001E76B42B
-:10D97000FFE5C7386FC07738FFF0F72B2800251474
-:10D98000002A063000028732000076B1001E76B40D
-:10D99000FFE5C7386FC07738FFF0F72B2800251454
-:10D9A0000028063000028732000026A4000274A47A
-:10D9B000FFFF7631001E7630FFE5C73867C0773845
-:10D9C000FFF0F72B28009013FFFC8316FF8CF7065F
-:10D9D00042CCC7187000C73868009713FFFC9393B8
-:10D9E000FFFC9496FF7C07880008E000CDB8979371
-:10D9F000FFFC8396FF6C2414004E25140050831600
-:10DA0000FF8C8496FF7C871E0000769D001E76B4F6
-:10DA1000FFE5061C000275B1001E75ACFFE5C738B6
-:10DA20006FC07738FFF0F72B280087320000752988
-:10DA3000001E7528FFE5C7385FC07738FFF0F72371
-:10DA400028002414004C063000028732000076B112
-:10DA5000001E76B4FFE5C7386FC07738FFF0F723B4
-:10DA600028002414004A063000028732000076B1F4
-:10DA7000001E76B4FFE5C7386FC07738FFF0F72394
-:10DA8000280024140048063000028732000076B1D6
-:10DA9000001E76B4FFE5C7386FC07738FFF0F72374
-:10DAA000280024140046063000028732000076B1B8
-:10DAB000001E76B4FFE5C7386FC07738FFF0F72354
-:10DAC000280024140044063000028732000076B19A
-:10DAD000001E76B4FFE5C7386FC07738FFF0F72334
-:10DAE000280024140042063000028732000076B17C
-:10DAF000001E76B4FFE5C7386FC07738FFF0F72314
-:10DB000028000630000287320000241400407631DD
-:10DB1000001E7630FFE5C73867C07738FFF0F7237F
-:10DB200028008696FFB0F60642C8C6186000F702C5
-:10DB30000003C6B457C076B5FFF0C6B47400F70250
-:10DB40000004C7386A00F733280006300002F4B337
-:10DB500028008396FF8C8316FF74039C0014939611
-:10DB6000FF8C0318000C8396FFAC9316FF74039C84
-:10DB70000001E000D5EC9396FFAC9313FFFCF38417
-:10DB80004F5C000000019393FFFCF3064A98931347
-:10DB9000FFFC07880008E00126F89793FFFCF402D9
-:10DBA00000018796FFFC8296FFF802140004013CF6
-:10DBB0000000000000019293FFFC02900008221078
-:10DBC00001A0F5020000F3846E50F602001C202A2A
-:10DBD0000063EE00DC08C59C6000A69E6002772D05
-:10DBE000001E7738FFE5C6B477C076B5FFF0203663
-:10DBF0000003E600DBFC072C0036F03B2800063073
-:10DC00000040E000DBCC05280001F5844F5C0000FB
-:10DC1000000186AE0008F4020000872E0004000018
-:10DC20000001C0367200EC00DCF09696FFEC773510
-:10DC30000001C738680077390002C638580006303E
-:10DC4000000CC38400008316000086B20000871A0F
-:10DC5000000000000001C0367200E600DC7CC52038
-:10DC6000000086B20004871A000400000001C036DC
-:10DC70007200E600DC80202A0000F5020001202A64
-:10DC80000000E600DC8D00000001F38200008496B5
-:10DC9000000086B200008726000000000001C036A8
-:10DCA0007200E200DCCCF5020000C0367200E60033
-:10DCB000DCD4202A000086B200048726000400007D
-:10DCC0000001C0367200E200DCD5202A0000F50217
-:10DCD0000001202A0000E600DCE5201E0000F3829F
-:10DCE0000001201E0000E600DCF420220000F40207
-:10DCF000000120220000E600DD29F602000187165F
-:10DD0000FFEC0000000176B90001C6B4700076B5E2
-:10DD10000002C6B4580006B4001486B60000971678
-:10DD2000FFF0E000DD989696FFF427140014971397
-:10DD3000FFFC83160000000000019313FFFC959385
-:10DD4000FFFC9596FE7007880008E0012568979310
-:10DD5000FFFC8596FE7020220000E600DD95F602AD
-:10DD600000018716FFEC0000000176B90001C6B47F
-:10DD7000700076B50002C6B4580006B4001486B62A
-:10DD800000009716FFF09696FFF4972E0008E0002B
-:10DD9000DD9C20320000F602000020320000E60088
-:10DDA000DDB0F4820000F704427CE000E09CF6065F
-:10DDB000427E9496FF448716FFF4F6044F58773955
-:10DDC0000006C73070009716FF5406B8001A873651
-:10DDD00000008316FF5476B5001E76B4FFE5C73801
-:10DDE0006FC09313FFFC7738FFF077390006C63019
-:10DDF00070009616FF4C07880008E000CD0097934E
-:10DE0000FFFC20220000E600DE35F30200018496CC
-:10DE1000FF4C000000019493FFFC07880008E0001D
-:10DE2000CD009793FFFC20220000E600DE380000C2
-:10DE30000001F30200019316FF448496FF440000A2
-:10DE4000000120260000E600DE59F60642A4F70491
-:10DE500042A4E000E0A076B1001E8316FF4C8616B7
-:10DE6000FF4C871A00007699001E76B4FFE5C7388C
-:10DE70006FC07739FFF0203A0002E600DE8500002F
-:10DE80000001F6044F58F5844F5800000001C032DD
-:10DE90005A00E600E025000000018496FF4C0000D7
-:10DEA000000106A4001A873600008316FF5476B5D9
-:10DEB000001E76B4FFE5C7386FC07738FFF07739BA
-:10DEC0000006C72C7000C03A3200E600DEDDF60620
-:10DED0004280F7044280E000E0A076B1001E2614E4
-:10DEE0000030F03328008716FFD07631001E7630E0
-:10DEF000FFE58496FF4C2314002E9316FE6475995B
-:10DF0000001E75ACFFE57515001E7528FFE573153D
-:10DF1000001E7318FFE59316FF348316FE64042475
-:10DF2000000206A000027495001E74A4FFE59496FA
-:10DF3000FF3C7495001EC73867C07738FFF0F723A1
-:10DF40002800871A000074A4FFE59496FF2CC738B8
-:10DF50005FC07738FFF0F737280006B40002871655
-:10DF6000FFD42494002A9496FE647625001E763011
-:10DF7000FFE5C73857C07738FFF0F7372800872606
-:10DF8000000006B40002C73867C07738FFF0F737E3
-:10DF9000280006B400028716FFD823140026931623
-:10DFA000FE647619001E8496FF3C7630FFE5C73884
-:10DFB0004FC07738FFF0F7372800871A000006B403
-:10DFC00000028496FF34C73867C07738FFF0F73710
-:10DFD000280006B400028716FFDC231400229316E3
-:10DFE000FE647619001E7630FFE5C7384FC07738DB
-:10DFF000FFF0F7372800871A000006B40002C73880
-:10E0000067C07738FFF0F73728008716FFE08316E0
-:10E01000FF2C06B40002C73837C07738FFF0E000A5
-:10E02000EAA0F737280007880008E000CBCC9793D8
-:10E03000FFFC06A00002F7044F58F037280006A0A6
-:10E0400000149416FF24C72072007738FFFAF737C0
-:10E05000280006A00016F7372800F4820001F4A378
-:10E0600028009413FFFC07880008E000CD00979378
-:10E07000FFFC20220000E600E0BC26940048F704E4
-:10E080004280E000E09CF60642828696FEF4E000C4
-:10E09000E29400000001F7044284F606428476B15F
-:10E0A000001E76B4FFE5F4020000C7386FC0773970
-:10E0B000FFF007380001E000EAA4F73328008316D8
-:10E0C000FF4C7515001E7528FFE59316FF1C0718F9
-:10E0D0000036F4820001F4BB2800F03728008716D0
-:10E0E000FFB876B5001E76B4FFE5041800020620DE
-:10E0F0000002231400469316FF147599001E75AC98
-:10E10000FFE57495001E74A4FFE59496FF0C73154B
-:10E11000001E7318FFE59316FF047495001E74A487
-:10E12000FFE59496FEFC230000079316FEF4849608
-:10E13000FF1C8316FF1404A4000A9496FE7CC738C3
-:10E140006FC07738FFF0F7232800F6844F58849685
-:10E15000FF54871A0000C6A46A007434FFFAC73857
-:10E160005FC07738FFF0F7332800063000028716CB
-:10E17000FFBC231400429316FF147699001E76B458
-:10E18000FFE5C73857C07738FFF0F7332800871A04
-:10E19000000006300002C7386FC07738FFF0F73351
-:10E1A0002800063000028716FFC02494003E949693
-:10E1B000FF1476A5001E8316FF0C76B4FFE5C73862
-:10E1C00037C07738FFF0F733280087260000063085
-:10E1D0000002C7386FC07738FFF0F73328000630E9
-:10E1E00000028716FFC42494003A9496FF1476A583
-:10E1F000001E8316FF0476B4FFE5C73837C07738B2
-:10E20000FFF0F73328008726000006300002C738E9
-:10E210006FC07738FFF0F73328008716FFC8849661
-:10E22000FEFC06300002C7384FC07738FFF0F733E6
-:10E2300028008316FEF400000001201A0007EE00FB
-:10E24000E294F68200088496FE7C00000001072418
-:10E25000000E86BA00007739001E7738FFE5C6B495
-:10E2600077C076B5FFF0F70200FFC6B4740047210F
-:10E270000000C0367200470C0001203A0000E600A2
-:10E28000E08804A400029496FE7C03180001E000DC
-:10E29000E2309316FEF48316FF1C000000010718FD
-:10E2A0000038F6BB28009313FFFC8496FF2400007F
-:10E2B00000019493FFFC07880008E000D42C97939A
-:10E2C000FFFC231400789316FEBC849600002314F0
-:10E2D00000A886A60004872600009316FE9CC6B4FC
-:10E2E00070009696FEECF7020001C7347400971692
-:10E2F000FEE48496FF24000000019493FFFC07884D
-:10E300000008E000D4B49793FFFCF7044F580000D6
-:10E310000001C0227200E600EAA19416FF1C86A24A
-:10E3200000387721001E7738FFE5F30200009316CE
-:10E33000FED4C6B477C076B5FFF09696FEDC849620
-:10E34000FED4000000012026000EEE00E2F0F302F1
-:10E35000000F9313FFFC8316FEEC00000001C718AA
-:10E3600048009713FFFC07880008E00127E897930F
-:10E37000FFFCC3A000008496FEE4000000012026FC
-:10E380000000E600E38D239C0007C3803A00C71C11
-:10E3900038008316FF1CF48200FFF6044F58C7189C
-:10E3A00070000738002686BA00009716FEC4773939
-:10E3B000001E7738FFE5C6B477C076B5FFF0C6B467
-:10E3C0004C0076B50006C330680007300040C01A24
-:10E3D0007200E600E40D9316FECC9313FFFC9396B7
-:10E3E000FE749616FE6C9696FE6807880008E0009C
-:10E3F000CD009793FFFC8396FE748616FE6C86967E
-:10E40000FE6820220000E600E09500000001F5848F
-:10E410004F588496FECC072C0040C0267200E600C0
-:10E42000EA8D00000001A732680276A5001E76B4CE
-:10E43000FFE58616FECCC7386FC07739FFF0203A6B
-:10E440000002E600E451C0325A00C62C0000C0327F
-:10E450005A00E600E6E5251400768316FF1C849634
-:10E46000FEBC061800028732000076B1001E76B4AA
-:10E47000FFE58316FEDC0630000275B1001EC738CA
-:10E480006FC07738FFF0F72728008732000075AC9F
-:10E49000FFE5C7385FC07738FFF0F72B2800251459
-:10E4A0000074063000028732000076B1001E76B498
-:10E4B000FFE5C7386FC07738FFF0F72B2800251429
-:10E4C0000072063000028732000076B1001E76B47A
-:10E4D000FFE5C7386FC07738FFF0F72B2800251409
-:10E4E0000070063000028732000076B1001E76B45C
-:10E4F000FFE5C7386FC07738FFF0F72B28002514E9
-:10E50000006E063000028732000076B1001E76B43D
-:10E51000FFE5C7386FC07738FFF0F72B28002514C8
-:10E52000006C063000028732000076B1001E76B41F
-:10E53000FFE5C7386FC07738FFF0F72B28002514A8
-:10E54000006A063000028732000076B1001E76B401
-:10E55000FFE5C7386FC07738FFF0F72B280006308B
-:10E56000000287320000251400687631001E7630E4
-:10E57000FFE5C73867C07738FFF0F72B2800C71CC6
-:10E5800032009713FFFC9493FFFC2614006096134F
-:10E59000FFFC9616FE6C07880008E000D0DC97931D
-:10E5A000FFFC8716FFA08616FE6C8496FECC231413
-:10E5B000005E9316FE5C7599001E75ACFFE5741540
-:10E5C000001E7420FFE57315001E7318FFE59316F7
-:10E5D000FEAC8316FE5C7631001E7630FFE5052426
-:10E5E000000206A800027495001E74A4FFE594962C
-:10E5F000FEB47495001EC73867C07738FFF0F72B5C
-:10E600002800871A000074A4FFE59496FEA4C7387A
-:10E610005FC07738FFF0F737280006B4000287168E
-:10E62000FFA42494005A9496FE5C7625001E83165F
-:10E63000FEB47630FFE5C73837C07738FFF0F737DC
-:10E6400028008726000006B40002C73867C0773864
-:10E65000FFF0F737280006B400028716FFA82494BD
-:10E6600000569496FE5C7625001E7630FFE5C7388E
-:10E6700047C07738FFF0F73728008726000006B438
-:10E680000002C73867C07738FFF0F737280006B4B4
-:10E6900000028716FFAC231400529316FE5C761915
-:10E6A000001E8496FEAC7630FFE5C7384FC0773841
-:10E6B000FFF0F7372800871A000006B40002C738B9
-:10E6C00067C07738FFF0F73728008716FFB083164A
-:10E6D000FEA406B40002C73837C07738FFF0E00068
-:10E6E000EA8CF73728008496FECC0000000104A4D1
-:10E6F00000369496FE5C8726000076A5001E76B450
-:10E70000FFE5C7386FC07739FFF0203A0000470CAB
-:10E710000001203A0000E600EA8D000000018316A7
-:10E72000FECC8496FF1C0618003A85B20000072430
-:10E73000003A86BA00007631001E7630FFE5773960
-:10E74000001E7738FFE5C5AC67C0C6B477C075ADAD
-:10E75000FFF076B5FFF0C02E6A00EC00E764F5022A
-:10E760000002F50200018316FF1C000000010718DB
-:10E77000003686BA00007739001E7738FFE5C6B448
-:10E7800077C076B5FFF020360002E600E79C000077
-:10E790000001202A0001E600EA8D000000018496B5
-:10E7A000FE5C8316FF1CF52728000618000287323E
-:10E7B000000076B1001E76B4FFE5251400A684960D
-:10E7C000FE9C8316FEDC0630000275B1001EC738C1
-:10E7D0006FC07738FFF0F72728008732000075AC4C
-:10E7E000FFE5C7385FC07738FFF0F72B2800251406
-:10E7F00000A4063000028732000076B1001E76B415
-:10E80000FFE5C7386FC07738FFF0F72B28002514D5
-:10E8100000A2063000028732000076B1001E76B4F6
-:10E82000FFE5C7386FC07738FFF0F72B28002514B5
-:10E8300000A0063000028732000076B1001E76B4D8
-:10E84000FFE5C7386FC07738FFF0F72B2800251495
-:10E85000009E063000028732000076B1001E76B4BA
-:10E86000FFE5C7386FC07738FFF0F72B2800251475
-:10E87000009C063000028732000076B1001E76B49C
-:10E88000FFE5C7386FC07738FFF0F72B2800251455
-:10E89000009A063000028732000076B1001E76B47E
-:10E8A000FFE5C7386FC07738FFF0F72B2800063038
-:10E8B000000287320000251400987631001E763061
-:10E8C000FFE5C73867C07738FFF0F72B2800C71C73
-:10E8D00032009713FFFC9493FFFC261400909613CC
-:10E8E000FFFC9616FE6C07880008E000D0DC9793CA
-:10E8F000FFFC8716FF708616FE6C8496FECC239470
-:10E90000008E759D001E75ACFFE57315001E731813
-:10E91000FFE59316FE947415001E7420FFE5731531
-:10E92000001E7318FFE59316FE848316FE9476315D
-:10E93000001E7630FFE50524000206A8000274954B
-:10E94000001E74A4FFE59496FE8CC73867C0773824
-:10E95000FFF0F72B28008496FEC4871E0000752563
-:10E96000001EC7385FC07738FFF0F737280006B4BD
-:10E9700000028716FF742394008A761D001E7630ED
-:10E98000FFE58496FE8C7528FFE5C73837C07738D9
-:10E99000FFF0F7372800871E000006B40002831638
-:10E9A000FE84C73867C07738FFF0F737280006B411
-:10E9B00000028716FF7823940086761D001E7630AD
-:10E9C000FFE5C73847C07738FFF0F7372800871EC4
-:10E9D000000006B40002C73867C07738FFF0F73789
-:10E9E000280006B400028716FF7C23940082761D5F
-:10E9F000001E7630FFE5C7384FC07738FFF0F73795
-:10EA00002800871E000006B400028496FEC4C738A2
-:10EA100067C07738FFF0F73728008716FF8006B405
-:10EA20000002C73837C07738FFF0F737280087264D
-:10EA30000000F30200FFC73857C07738FFE8C6B8B8
-:10EA40003400F7020080C73474007739001077393A
-:10EA5000FFF0203A0000E600EA6127000100C6B49A
-:10EA600075808496FECC0000000107240038F6BBB8
-:10EA700028009493FFFC8316FF24000000019313E9
-:10EA8000FFFC07880008E000D42C9793FFFC8496D5
-:10EA9000FED40000000104A40001E000E33C9496D1
-:10EAA000FED4F40200018796FFFC8296FFF8021460
-:10EAB0000004013C0000000000019293FFFC029062
-:10EAC0000008861600088696000CF502FFFC859665
-:10EAD000000484160010F484E0000730000294B2B1
-:10EAE0000010F484E00406B4000394B20014F4842B
-:10EAF000E01CC6B4540094B20018F4820005F4B3CC
-:10EB00002800F4820001F4BB280027340008973263
-:10EB1000000486160000072C0003C7385400C6B84E
-:10EB200068009693FFFCC63072009613FFFCF70254
-:10EB30000003C5AC7400F7020004C7385A009713ED
-:10EB4000FFFC07880008C12000009793FFFC879610
-:10EB5000FFFC8296FFF802140014013C0000000044
-:10EB600000019293FFFC0290000822100018871603
-:10EB700000040000000183BA000084960000939610
-:10EB8000FFF0F3846E54873A00049396FFEC9716D7
-:10EB9000FFF49013FFFC271C00029713FFFC0724CF
-:10EBA00000209713FFFC9496FFE407880008E0001C
-:10EBB000CDB89793FFFC8496FFE4839600088726E0
-:10EBC00000188516FFECC03A3A00EE00EC7CF582A6
-:10EBD0000001872600188396000800000001C01E6F
-:10EBE0007200E600EC7CC584000086A60010871643
-:10EBF000FFF0F6020000C0367200E600EC1C0424B0
-:10EC0000001086A600148716FFF400000001C0362D
-:10EC10007200E600EC2020320000F60200012032F3
-:10EC20000000E600EC2D00000001F582000086A245
-:10EC300000008716FFF000000001C0367200E200FD
-:10EC4000EC68F6020000C0367200E600EC7020327C
-:10EC5000000086A200048716FFF400000001C03601
-:10EC60007200E200EC7120320000F6020001203256
-:10EC70000000E600EC81202E0000F5820001202E2D
-:10EC80000000E600ECACF7020001F704429CF60637
-:10EC9000429C76B1001E76B4FFE5C7386FC0773965
-:10ECA000FFF007380001F7332800F7020001972A28
-:10ECB000000883A6000C772CFFE193AA000C972A8A
-:10ECC000001C83A6001CF7046E5093AA002083BA90
-:10ECD0001DDCF682000093AA002C8396000CC5B4BC
-:10ECE000000093AA003083BA0010C634000093AA33
-:10ECF0000024873A001400000001972A00282036DB
-:10ED0000001FEE00ED1CC73050000738003495BAE4
-:10ED1000000006300004E000ECFC06B4000183961D
-:10ED2000001076A5001E9393FFFCF38200B493932A
-:10ED3000FFFC9513FFFC8726002076B4FFE5C7385B
-:10ED40006FC07739FFF09713FFFC8396FFEC00004C
-:10ED500000019393FFFC07880008E000EAB897934E
-:10ED6000FFFC8796FFFC8296FFF802140014013C1A
-:10ED70000000000000019293FFFC029000082210A6
-:10ED800000188716000400000001863A0000000009
-:10ED900000019616FFF0873A000400000001971664
-:10EDA000FFF4F6021DE09613FFFC8616000000003B
-:10EDB00000019613FFFCF6046E500000000196134C
-:10EDC000FFFC261400109616FFEC07880008E001EF
-:10EDD00026F89793FFFCF6846E50F6020000873603
-:10EDE0001DD89616FFE476B5001E76B4FFE5C73849
-:10EDF0006FC07738FFF0F68642C0F73728008616D6
-:10EE0000FFEC000000019613FFFC07880008E000FB
-:10EE1000DBB49793FFFC20220000E600EE4D0000DB
-:10EE200000018616FFEC000000019613FFFC078826
-:10EE30000008E000D5A09793FFFC20220000E60028
-:10EE4000EE4D00000001F60200019616FFE4841664
-:10EE5000FFE48796FFFC8296FFF802140008013C4D
-:10EE60000000000000019293FFFC029000088696CB
-:10EE70000004861600008736000885960008203AB0
-:10EE80000000E600EE99203A0003E600EEE9F40205
-:10EE90000000E000EF0C0000000177B0001F703EA2
-:10EEA000FFE1E600EF0DF4020000851600140000FB
-:10EEB00000019513FFFC851600100000000195135A
-:10EEC000FFFC8516000C000000019513FFFC9593D4
-:10EED000FFFC9693FFFC07880008E000EB60979327
-:10EEE000FFFCE000EF0C0000000177B0001E703E58
-:10EEF000FFE1E600EF0D000000019593FFFC969303
-:10EF0000FFFC07880008E000ED749793FFFC8796EC
-:10EF1000FFFC8296FFF802140018013C000000007C
-:10EF200000019293FFFC0290000822100018F48266
-:10EF3000000086960000F6044AA023940010843650
-:10EF400000009616FFE4F7044A9C9416FFF08536FD
-:10EF50000004C0327200EC00F0149516FFF4773113
-:10EF60000001C738600077390002F3064A98C6B836
-:10EF7000300006B4000CC584000087360000000095
-:10EF80000001C03A4200E600EFA4C6240000873624
-:10EF9000000400000001C03A5200E600EFA8203251
-:10EFA0000000F602000120320000E600EFB500008C
-:10EFB0000001F5820000863600008716FFF0000091
-:10EFC0000001C0327200E200EFF0F5020000C03232
-:10EFD0007200E600EFF8202A000086B600048716CB
-:10EFE000FFF400000001C0367200E200EFF9202AB1
-:10EFF0000000F5020001202A0000E600F009202EA2
-:10F000000000F5820001202E0000E600F018202606
-:10F010000000F482000120260000E600F04DF60218
-:10F0200000018716FFE4F3064A9876B90001C6B4DA
-:10F03000700076B50002C6B4300006B4001486B67F
-:10F0400000009716FFE8E000F0B09696FFEC27145A
-:10F05000001C9713FFFC9393FFFCF3064A9893134D
-:10F06000FFFC07880008E00125689793FFFC202239
-:10F070000000E600F0ADF60200018716FFE4F3069B
-:10F080004A9876B90001C6B4700076B50002C6B4DD
-:10F09000300006B4001486B600009716FFE8969676
-:10F0A000FFECF7054AA0E000F0B420320000F602C1
-:10F0B000000020320000E600F121F4020001871672
-:10F0C000FFE8F60642C876B90002C6B4700076B50D
-:10F0D0000002A736600283160004C6B460007635CD
-:10F0E000001E7630FFE50534000275A9001EC73802
-:10F0F00067C07738FFF0971A0000872A000075ACC8
-:10F10000FFE583160008C7385FC07738FFF0971A0D
-:10F1100000008316000C06B40004E000F124969A67
-:10F120000000F40200008796FFFC8296FFF80214AC
-:10F130000010013C0000000000010000B9000000C8
-:10F14000BA000000BB000000BC000000BD000000D1
-:10F15000BE000000BF000000800000008100000031
-:10F160008200000083000000840000008500000091
-:10F17000860000008700B9B9B9BAB9BBB9BCB9BD3E
-:10F18000B9BEB9BFB980B981B982B983B984B9852B
-:10F19000B986B987BAB9BABABABBBABCBABDBABE2F
-:10F1A000BABFBA80BA81BA82BA83BA84BA85BA863B
-:10F1B000BA87BBB9BBBABBBBBBBCBBBDBBBEBBBFCD
-:10F1C000BB80BB81BB82BB83BB84BB85BB86BB874B
-:10F1D000BCB9BCBABCBBBCBCBCBDBCBEBCBFBC80AB
-:10F1E000BC81BC82BC83BC84BC85BC86BC87BDB9E9
-:10F1F000BDBABDBBBDBCBDBDBDBEBDBFBD80BD81BB
-:10F20000BD82BD83BD84BD85BD86BD87BEB9BEBA86
-:10F21000BEBBBEBCBEBDBEBEBEBFBE80BE81BE82CA
-:10F22000BE83BE84BE85BE86BE87BFB9BFBABFBB24
-:10F23000BFBCBFBDBFBEBFBFBF80BF81BF82BF83DA
-:10F24000BF84BF85BF86BF8780B980BA80BB80BCC2
-:10F2500080BD80BE80BF80808081808280838084EA
-:10F2600080858086808781B981BA81BB81BC81BD60
-:10F2700081BE81BF818081818182818381848185FA
-:10F280008186818782B982BA82BB82BC82BD82BEFE
-:10F2900082BF82808281828282838284828582860A
-:10F2A000828783B983BA83BB83BC83BD83BE83BF9C
-:10F2B000838083818382838383848385838683871A
-:10F2C00084B984BA84BB84BC84BD84BE84BF84807A
-:10F2D000848184828483848484858486848785B9B8
-:10F2E00085BA85BB85BC85BD85BE85BF858085818A
-:10F2F00085828583858485858586858786B986BA56
-:10F3000086BB86BC86BD86BE86BF86808681868299
-:10F310008683868486858686868787B987BA87BBF3
-:10F3200087BC87BD87BE87BF8780878187828783A9
-:10F33000878487858786878700009293FFFC0290E9
-:10F34000000822100018F70475EC00000001203AB4
-:10F350000000E600F37DF6064296F704429476B18B
-:10F36000001E76B4FFE5F4020000C7386FC077399D
-:10F37000FFF007380001E000F5E0F7332800F384E0
-:10F380006F309013FFFC271C00029713FFFC8316BD
-:10F390000000000000019313FFFC9396FFEC078828
-:10F3A0000008E000CDB89793FFFC8396FFECF702CE
-:10F3B0000000971E00088316000400000001931E41
-:10F3C000000C83160008049C0022931E001C831668
-:10F3D000000C9396FFF4871A00007699001E76B40D
-:10F3E000FFE50618000275B1001E75ACFFE5C738D1
-:10F3F0006FC07738FFF0069C0020F737280087326F
-:10F4000000009696FFE47535001EC7385FC0773858
-:10F41000FFF0F7272800049C002406300002873202
-:10F42000000076B1001E76B4FFE5C7386FC07738AC
-:10F43000FFF0F7272800049C0026063000028732E0
-:10F44000000076B1001E76B4FFE5C7386FC077388C
-:10F45000FFF0F7272800049C0028063000028732BE
-:10F46000000076B1001E76B4FFE5C7386FC077386C
-:10F47000FFF0F7272800049C002A0630000287329C
-:10F48000000076B1001E76B4FFE5C7386FC077384C
-:10F49000FFF0F7272800049C002C0630000287327A
-:10F4A000000076B1001E76B4FFE5C7386FC077382C
-:10F4B000FFF0F7272800049C002E06300002873258
-:10F4C000000076B1001E76B4FFE5C7386FC077380C
-:10F4D000FFF0F72728000630000287320000049C66
-:10F4E00000307631001E7630FFE5C73867C07738C8
-:10F4F000FFF0F7272800871E00207528FFE5C73892
-:10F5000057C07739FFF0203A0008EE00F598F3066F
-:10F5100014D88316FFE4871E00207699001E76B467
-:10F52000FFE5C7386FC07739FFF025B80001C4ACDC
-:10F53000580004240001202E0000EC00F595F5028F
-:10F5400000008316FFE40000000106180002A73245
-:10F550005802C6B0580076B5001E76B4FFE5C7382D
-:10F560006FC07739FFE8C6B0400077B80018703E2A
-:10F57000FFE1E600F57DF7376800F502FFFFC730D1
-:10F580004800F53B680024A4000224200002E000AB
-:10F59000F53425AC0001F30614D89313FFFCF302F5
-:10F5A00000349313FFFC8316FFF400000001931353
-:10F5B000FFFC8316000000000001871A0000769906
-:10F5C000001E76B4FFE5C7386FC07739FFF0971398
-:10F5D000FFFC9393FFFC07880008E000EAB89793CC
-:10F5E000FFFC8796FFFC8296FFF802140010013C96
-:10F5F0000000000000019293FFFC0290000822101E
-:10F600000010F70475EC00000001203A0000E6004D
-:10F61000F639F6064296F704429476B1001E76B4A7
-:10F62000FFE5F4020000C7386FC07739FFF00738F4
-:10F630000001E000F748F7332800F5046F300000C0
-:10F6400000019516FFF49013FFFC27280002971382
-:10F65000FFFC85960004000000019593FFFC0788DD
-:10F660000008E000CDB89793FFFC85160004F60271
-:10F67000000086AA00007729001E7738FFE5C6B48F
-:10F6800077C076B5FFF0F7020001C0367400E600DF
-:10F69000F6999696FFECC63800009613FFFC859607
-:10F6A000FFEC8516FFF4472CFFFE07380002C72841
-:10F6B00072009713FFFC85960000000000019593EF
-:10F6C000FFFC07880008E000CDB89793FFFC851683
-:10F6D000FFF4F7020002972A000885960008000050
-:10F6E000000195AA000C8596000C0000000195AA67
-:10F6F000001CF50614D89513FFFCF58200209593A5
-:10F70000FFFC8516FFF4000000019513FFFC8596B1
-:10F7100000008516FFEC872E000076AD001E76B443
-:10F72000FFE5C7386FC07739FFF0C738500097132F
-:10F73000FFFC8596FFF4000000019593FFFC07880D
-:10F740000008E000EAB89793FFFC8796FFFC8296DA
-:10F75000FFF802140010013C000000000001929329
-:10F76000FFFC0290000885960000851600048716AD
-:10F770000008F602FFFC06A80003C6B464000738C0
-:10F780000003C7386400C73470009713FFFCC5AC92
-:10F790006A009593FFFCF7020003C5287400F70286
-:10F7A0000004C73852009713FFFC07880008E001E7
-:10F7B00014D89793FFFC8796FFFC8296FFF80214FB
-:10F7C0000010013C0000000000019293FFFC029039
-:10F7D000000822100010F70475EC00000001203A28
-:10F7E0000000E600F80DF6064296F704429476B162
-:10F7F000001E76B4FFE5F4020000C7386FC0773909
-:10F80000FFF007380001E000F920F7332800F50485
-:10F810006F30000000019516FFF49013FFFC2728BD
-:10F8200000029713FFFC85960004000000019593E9
-:10F83000FFFC07880008E000CDB89793FFFC851611
-:10F840000004F602000086AA00007729001E77381F
-:10F85000FFE5C6B477C076B5FFF0F7020001C03609
-:10F860007400E600F86D9696FFECC638000096131B
-:10F87000FFFC8596FFEC8516FFF4472CFFFE07384A
-:10F880000002C72872009713FFFC85960000000055
-:10F8900000019593FFFC07880008E000CDB897931E
-:10F8A000FFFC8516FFF4F5820006F5AB280085966F
-:10F8B00000080728000295AA00040514000E852AF6
-:10F8C000000077A9001E77BCFFE5C5287FC0752919
-:10F8D000FFF0F53B2800F58614D89593FFFCF50260
-:10F8E00000089513FFFC859600008516FFEC872E17
-:10F8F000000076AD001E76B4FFE5C7386FC07739DB
-:10F90000FFF0C73850009713FFFC8596FFF4000006
-:10F9100000019593FFFC07880008E000F75C9793CF
-:10F92000FFFC8796FFFC8296FFF802140010013C52
-:10F930000000000000019293FFFC029000082210DA
-:10F940000008F70475EC83960004203A0000E600F6
-:10F95000FA64F6064296F5046F309013FFFC2728F0
-:10F9600000029713FFFC83160000000000019313B0
-:10F97000FFFC9396FFF49516FFF007880008E0005F
-:10F98000CDB89793FFFC8516FFF0F302000783962E
-:10F99000FFF4F32B280007280002F3020001F33BD9
-:10F9A0002800871E0000769D001E76B4FFE5059CAA
-:10F9B0000002762D001E7630FFE5749D001E74A4B3
-:10F9C000FFE5041C000683160000C7386FC07738B7
-:10F9D000FFF006A80004F7372800872E000006A8CD
-:10F9E000000675A1001EC73867C07738FFF0F737EB
-:10F9F0002800871E000475ACFFE506A800087619EC
-:10FA0000001EC7384FC07738FFF0F737280087222D
-:10FA1000000006A8000AC7385FC07738FFF0F73744
-:10FA20002800F30614D89313FFFCF302000C931381
-:10FA3000FFFC8316000000000001871A00007630EA
-:10FA4000FFE5C73867C07739FFF09713FFFC9513C0
-:10FA5000FFFC07880008E000F75C9793FFFCE000DC
-:10FA6000FA8400000001F704429476B1001E76B4D7
-:10FA7000FFE5F4020000C7386FC07739FFF00738A0
-:10FA80000001F73328008796FFFC8296FFF80214E6
-:10FA90000008013C0000000000019293FFFC02906E
-:10FAA000000822100048F70475EC85960000203A03
-:10FAB0000000E600FD98F606429605AC0002872E8F
-:10FAC000000076AD001E76B4FFE52414001E062C5F
-:10FAD00000027531001E249400207528FFE5F38490
-:10FAE0006E50C7386FC07738FFF0F727280087328D
-:10FAF00000009396FFC4C73857C07738FFF0F7234C
-:10FB000028002414001C063000028732000076B161
-:10FB1000001E76B4FFE5C7386FC07738FFF0F723D3
-:10FB200028002414001A063000028732000076B143
-:10FB3000001E76B4FFE5C7386FC07738FFF0F723B3
-:10FB4000280024140018063000028732000076B125
-:10FB5000001E76B4FFE5C7386FC07738FFF0F72393
-:10FB6000280024140016063000028732000076B107
-:10FB7000001E76B4FFE5C7386FC07738FFF0F72373
-:10FB8000280024140014063000028732000076B1E9
-:10FB9000001E76B4FFE5C7386FC07738FFF0F72353
-:10FBA000280024140012063000028732000076B1CB
-:10FBB000001E76B4FFE5C7386FC07738FFF0F72333
-:10FBC000280006300002873200002414001076312D
-:10FBD000001E7630FFE5C73867C07738FFF0F7239F
-:10FBE00028009013FFFC271C00029713FFFC94933E
-:10FBF000FFFC9596FFBC07880008E000CDB89793FE
-:10FC0000FFFC8596FFBC231400362494003873A5AE
-:10FC1000001E739CFFE5F40442C0F68642C076B530
-:10FC2000001E76B4FFE5872E0000762D001E76308C
-:10FC3000FFE5C4206FC07420FFF005AC0002752DF5
-:10FC4000001E7528FFE5C73867C07738FFF0F72733
-:10FC50002800872E0000F6046E50C73857C077384A
-:10FC6000FFF0F71B28002314003405AC0002872E98
-:10FC7000000076AD001E76B4FFE5C7386FC0773858
-:10FC8000FFF0F71B28002314003205AC0002872E7A
-:10FC9000000076AD001E76B4FFE5C7386FC0773838
-:10FCA000FFF0F71B28002314003005AC0002872E5C
-:10FCB000000076AD001E76B4FFE5C7386FC0773818
-:10FCC000FFF0F71B28002314002E05AC0002872E3E
-:10FCD000000076AD001E76B4FFE5C7386FC07738F8
-:10FCE000FFF0F71B28002314002C05AC0002872E20
-:10FCF000000076AD001E76B4FFE5C7386FC07738D8
-:10FD0000FFF0F71B28002314002A05AC0002872E01
-:10FD1000000076AD001E76B4FFE5C7386FC07738B7
-:10FD2000FFF0F71B280005AC0002872E000023140B
-:10FD3000002875AD001E75ACFFE5C7385FC0773889
-:10FD4000FFF0F71B28008716FFC8F6820003C738AC
-:10FD50003FC096B2000806B01DD8F4372800F386DD
-:10FD600014D89393FFFCF3821DE09393FFFC96134A
-:10FD7000FFFC7739FFF09713FFFC8396FFC4000068
-:10FD800000019393FFFC07880008E000EAB897930E
-:10FD9000FFFCE000FDB800000001F704429476B1DA
-:10FDA000001E76B4FFE5F4020000C7386FC0773953
-:10FDB000FFF007380001F73328008796FFFC829692
-:10FDC000FFF802140004013C0000000000019293BF
-:10FDD000FFFC029000088616000000000001873238
-:10FDE000000076B1001E76B4FFE5C7386FC07739E2
-:10FDF000FFF0203A0006E600FE21F582001EF7041F
-:10FE000042A8F60642A876B1001E76B4FFE5C738D0
-:10FE10006FC07739FFF007380001E000FE34F73398
-:10FE20002800F6056F349593FFFC07880008E00072
-:10FE300015849793FFFC8796FFFC8296FFF80214C7
-:10FE40000004013C0000000000019293FFFC0290BE
-:10FE5000000886160000859600048732000076B1FF
-:10FE6000001E76B4FFE5C7386FC07739FFF0203A3F
-:10FE70000007E600FE9DF4020000F70442A8F60623
-:10FE800042AA76B1001E76B4FFE5C7386FC0773955
-:10FE9000FFF007380001E000FF1CF73328000730AF
-:10FEA000000286BA00007739001E7738FFE5C6B435
-:10FEB00077C076B5FFF020360001E600FED5F605E6
-:10FEC0006F3420360002E600FEE5F5020020E00077
-:10FED000FEFCF60642AC202E000CE600FF1CF402ED
-:10FEE0000000F502001F9513FFFC07880008E000E2
-:10FEF00015849793FFFCE000FF1CF4020001F70457
-:10FF000042AC76B1001E76B4FFE5C7386FC07739D2
-:10FF1000FFF007380001F7332800F402000187964C
-:10FF2000FFFC8296FFF802140008013C000000006C
-:10FF300000019293FFFC02900008869600000000EA
-:10FF4000000187360004F6020000073800089736E3
-:10FF500000048736000800000001203A0000EC0091
-:10FF6000FF7DF6856F348736000800000001203AD7
-:10FF70000003EE00FF8020320000F6020001203274
-:10FF80000000E600FFBDF60642AEF7046F34000045
-:10FF90000001873A0008F682FFEC77390002A73AA1
-:10FFA0006802000000019713FFFC07880008E000CA
-:10FFB00015849793FFFCE000FFD800000001F704D0
-:10FFC00042AC76B1001E76B4FFE5C7386FC0773912
-:10FFD000FFF007380001F73328008796FFFC829670
-:10FFE000FFF802140004013C0000000000010000C2
-:10FFF00000170000001A0000001D0000001800009B
-:020000021000EC
-:10000000000056657273696F6E537472696E673A59
-:10001000206D63702D6C34763320332E303863209E
-:1000200044656320313120313939362031333A305B
-:10003000363A313600009293FFFC02900008F70434
-:10004000E00CFF0200009702FF84F7060C3ECFFC95
-:100050007580F60200029602FF8C9002FF88F7047A
-:10006000E02000000001203A0000E6010074F68262
-:100070000000F68200039682FF988796FFFC829626
-:10008000FFF802140000013C000000000001929300
-:10009000FFFC029000082210000CF5021494F505F4
-:1000A0007B00F50EF014F5057B08F706E000F686F8
-:1000B0007B68C7386A00F7057AF0F502004CF682D3
-:1000C000000020360002EE010124F5057AF8C5B4DF
-:1000D0000000C6340000F706E030C72C7000F506BB
-:1000E0006F44B73250029013FFFC9713FFFC9596B4
-:1000F000FFF49616FFF09696FFEC07880008E001E3
-:10010000031C9793FFFC8596FFF48616FFF08696F6
-:10011000FFEC05AC149406B4000120360002EE0199
-:1001200000D506300004F5020022F5056F58F005F1
-:100130006F54F0056F50F0052D408796FFFC8296B6
-:10014000FFF802140000013C00000000000192933F
-:10015000FFFC0290000807880008E00129589793E7
-:10016000FFFCF7020003F705E008F7047AD8F6026F
-:1001700000019602FF94203A0000E6010191F70683
-:100180007AE807880008E00103DC9793FFFCF70694
-:100190007AE8F6020005F63B2800F7067AE0868248
-:1001A000FF44F602000320360000E60101C9F63BD9
-:1001B0002800F7046F648682FF4407380001203668
-:1001C0000000E60101B0F7056F6407880008E00150
-:1001D00000349793FFFC07880008E001008C979398
-:1001E000FFFC07880008E00044289793FFFC07887D
-:1001F0000008E00016F09793FFFC07880008E00174
-:100200000C609793FFFC07880008E00104089793AF
-:10021000FFFC07880008E00000209793FFFC078898
-:100220000008E0000BD89793FFFC07880008E00166
-:100230001D689793FFFC07880008E0011E50979304
-:10024000FFFC07880008E0005F689793FFFC0788C1
-:100250000008E0006DEC9793FFFC07880008E001C0
-:1002600021D09793FFFC07880008E001222C979388
-:10027000FFFC9002FF9407880008E0000BFC9793B6
-:10028000FFFCF40200008796FFFC8296FFF8021440
-:100290000000013C0000000000019293FFFC02906E
-:1002A000000822100008F6020000C5B0000020324D
-:1002B0000002EE010308F5066F44A6AE50020000EE
-:1002C00000018736000000000001203A0001E6012D
-:1002D00002FCF50200029513FFFC9693FFFC959635
-:1002E000FFF49616FFF007880008E001031C9793BF
-:1002F000FFFC8616FFF08596FFF40000000105ACB8
-:100300000004E00102AC063000018796FFFC8296F3
-:10031000FFF802140000013C00000000000192936D
-:10032000FFFC0290000887160000F6020000F6822B
-:100330000008963A0008963A000C963A09D8963A80
-:1003400009DC963A0EF4963A0EF896BA1420963ACC
-:10035000142490BA148C8696000490BA149096BA1D
-:100360000000963A00048796FFFC8296FFF802147C
-:100370000008013C0000000000019293FFFC029085
-:100380000008859600008716000886160004773856
-:10039000FFFFC5307000C0325200E40103C9000005
-:1003A0000001872E000076AD001E76B4FFE5C73849
-:1003B0006FC07738FFF0F733280006300002C032F4
-:1003C0005200E40103A005AC00028796FFFC829670
-:1003D000FFF80214000C013C0000000000019293A1
-:1003E000FFFC02900008F7020001E00103E8F705B6
-:1003F0007AD88796FFFC8296FFF802140000013C31
-:10040000000000000001000000009293FFFC029039
-:100410000008F502000AF50571CCF00571D4F0056D
-:1004200071D0F00571C4F5020001F682000020369B
-:10043000000AEC010464F50571C8F58A1E00F60691
-:1004400071C4472CFFFC973200180630000406B434
-:100450000001F70471CC00000001C0367200EC010D
-:10046000044105AC214CF0057198F5066F689513B1
-:10047000FFFCF5067B189513FFFC07880008E000D9
-:1004800015489793FFFCF50605D49513FFFCF782FA
-:1004900000059793FFFCF5066F689513FFFC07882E
-:1004A0000008E000161C9793FFFCF5060B709513EF
-:1004B000FFFCF78200069793FFFCF5066F68951323
-:1004C000FFFC07880008E000161C9793FFFCF50668
-:1004D0000BA09513FFFCF78200059793FFFCF50630
-:1004E00070809513FFFC07880008E000161C9793A6
-:1004F000FFFCF5060B709513FFFCF782000697933F
-:10050000FFFCF50670809513FFFC07880008E000EB
-:10051000161C9793FFFCF50605589513FFFCF50292
-:10052000000A9513FFFCF506710C9513FFFC078874
-:100530000008E000161C9793FFFC07880008E00104
-:1005400005589793FFFC8796FFFC8296FFF80214EC
-:100550000000013C0000000000019293FFFC0290AB
-:100560000008F70471C400000001203A0000E60111
-:10057000057DF68671C4E0010594F7020000F704DA
-:1005800071D00000000177390002C7386800873A4F
-:10059000001800000001203A0000E60105ACF70554
-:1005A0007B10F606710CE00105C0F6057B18F60617
-:1005B0006F68F6057B189702FF48073821289702D5
-:1005C000FF4C8796FFFC8296FFF802140000013C66
-:1005D0000000000000019293FFFC0290000822102E
-:1005E00000108682FF48F4866F68F4857B18F50456
-:1005F0007B1026B4000285B60000872A0000762909
-:10060000001E7630FFE576B5001E76B4FFE5C5AC7A
-:100610006FC0C73867C07739FFF077B80010703EF9
-:10062000FFE1E601064575ACFFF0F70471AC000090
-:10063000000107380001F70571ACF70471ACE00167
-:1006400008C4F7020001772CFFF8203A0000E60109
-:10065000067176A9001EF70471A800000001073892
-:100660000001F70571A8F70471A8E00108C4F702BA
-:100670000001872A000076B4FFE5C7386FC07739DC
-:10068000FFF027380004203A0003E20108A400002C
-:10069000000177390002F68606A4A6B670020000B3
-:1006A0000001C1340000000106B40001077C000114
-:1006B00007EC00010844872A0004C4840000C03A03
-:1006C0004A00E60106D8000000018702FF4800004A
-:1006D0000001C7385200972A0004872A000400004E
-:1006E0000001203A2100EE01073CF602000086AA34
-:1006F00000048702FF4800000001C7385200273875
-:100700000028C0367200E601073C0000000177FCBB
-:10071000001D703EFFE1E601073C0000000177FC90
-:100720000017703EFFE1E601073D0000000177FC85
-:100730000016703EFFE1E601074420320000F60299
-:10074000000120320000E601088800000001872A2D
-:10075000001800000001203A0002EE0108C100006C
-:100760000001F70471A40000000107380001F7053B
-:1007700071A4F70471A4E00108C4F7020001872AFC
-:10078000000400000001203A2100EE0107E0F6021B
-:10079000000086AA00048702FF4800000001C73855
-:1007A00052002738000CC0367200E60107E0000056
-:1007B000000177FC001D703EFFE1E60107E000004C
-:1007C000000177FC0017703EFFE1E60107E1000041
-:1007D000000177FC0016703EFFE1E6010880203240
-:1007E0000000F6020001E0010880203200008702CC
-:1007F000FF4800000001C738520027380004203AA3
-:100800000008E6010838F682000077FC001D703E03
-:10081000FFE1E60108380000000177FC0017703E98
-:10082000FFE1E60108390000000177FC0016703E88
-:10083000FFE1E601088020360000F6820001E001B9
-:10084000088020360000F702000077FC001D703E93
-:10085000FFE1E60108780000000177FC0017703E18
-:10086000FFE1E60108790000000177FC0016703E08
-:10087000FFE1E6010880203A0000F7020001203A7B
-:100880000000E60108C100000001F70471A00000AB
-:10089000000107380001F70571A0F70471A0E0011D
-:1008A00008C4F7020001F704719C0000000107383A
-:1008B0000001F705719CF704719CE00108C4F70280
-:1008C0000001F7020000203A0000E601096800007C
-:1008D0000001F6847B10000000018736000076B529
-:1008E000001E76B4FFE5C7386FC07739FFF02738B0
-:1008F0000004203A0003E2010B5077390002F6862B
-:10090000090CA6B6700200000001C134000000010D
-:10091000091C00010AE000010AAC00010B14F704F5
-:1009200071D0F60471CC06B80001C0366200E60151
-:100930000938C7340000F7020000F58471D40000C4
-:100940000001C03A5A00470C0001203A0000E601BD
-:10095000098500000001F70471B0000000010738AC
-:100960000001F70571B0F70471B0F70471B400002D
-:10097000000107380001F70571B4F70471B4E00114
-:100980000B5000000001F48471C8F68571D0949674
-:10099000FFF4F4847B10C0366200E60109A494964B
-:1009A000FFECF00571D0F70471D0F00571C88496A2
-:1009B000FFECC03A5A00470C0001F70571C48726C6
-:1009C000000800000001703AFFE1E60109E10000C3
-:1009D0000001F70471980000000107380001F705D5
-:1009E00071988496FFF40000000120260000E601C3
-:1009F0000A710000000107880008E001055897937C
-:100A0000FFFCF602000920320014E6010A4D27001F
-:100A1000000C203A0001E2010A4DF7062DCCF684C5
-:100A20002ECC0000000175B50002B62E700206B48F
-:100A30000001F6852ECC8602FF34F7062E4C2036B8
-:100A4000001FE2010A4DB62E7002F0052ECCF7040D
-:100A50002D6800000001873A000000000001873A7D
-:100A600000280000000107880008C13800009793A3
-:100A7000FFFCF70471BC8496FFEC07380001F70512
-:100A800071BCF70471BC86A600048496FFF4F704D9
-:100A900071B820260000C7386800F70571B8E60174
-:100AA0000B5100000001E0010B5C00000001F704A5
-:100AB00071C00000000107380001F70571C0F7049C
-:100AC00071C0F4847B10000000019493FFFC078840
-:100AD0000008E000FDCC9793FFFCE0010B50000004
-:100AE0000001F70471C00000000107380001F7059C
-:100AF00071C0F70471C0F4847B100000000194936E
-:100B0000FFFC07880008E000FF309793FFFCE0013E
-:100B10000B5000000001F70471C00000000107380D
-:100B20000001F70571C0F70471C0F6847B108702DD
-:100B3000FF4800000001C7386A00273800049713F7
-:100B4000FFFC9693FFFC07880008E000FE4897939F
-:100B5000FFFC07880008E00105589793FFFC879683
-:100B6000FFFC8296FFF802140000013C0000000028
-:100B700000019293FFFC02900008F7067080F705D1
-:100B80007B1807880008E00105589793FFFC8796BB
-:100B9000FFFC8296FFF802140000013C00000000F8
-:100BA00000019293FFFC02900008F7066F68F705BA
-:100BB0007B1807880008E00105589793FFFC87968B
-:100BC000FFFC8296FFF802140000013C00000000C8
-:100BD00000019293FFFC02900008F7067B18971320
-:100BE000FFFCF7066F689713FFFC07880008E0001A
-:100BF00014F49793FFFCF7067B189713FFFCF70696
-:100C00006FF49713FFFC07880008E00014F4979333
-:100C1000FFFCF7067B189713FFFCF706708097130D
-:100C2000FFFC07880008E00014F49793FFFCF70628
-:100C30007B189713FFFCF706710C9713FFFC0788CE
-:100C40000008E00014F49793FFFC8796FFFC82965F
-:100C5000FFF802140000013C000000000001000049
-:100C600000009293FFFC02900008F5020004F505D5
-:100C70007600F0057608F0057604F00575F8F502C3
-:100C80000001F682000020360004EC010CBCF505E2
-:100C900075FCF58E6AF8F60675F8472CFFFC97325E
-:100CA00000180630000406B40001F70476000000C6
-:100CB0000001C0367200EC010C9905AC214CF50620
-:100CC00072189513FFFCF50676489513FFFC07880C
-:100CD0000008E00015489793FFFCF5060DF4951306
-:100CE000FFFCF782000E9793FFFCF5067218951330
-:100CF000FFFC07880008E000161C9793FFFCF50630
-:100D00000DF49513FFFCF782000E9793FFFCF50698
-:100D100072A49513FFFC07880008E000161C979347
-:100D2000FFFCF506132C9513FFFCF7820001979347
-:100D3000FFFCF50673309513FFFC07880008E00000
-:100D4000161C9793FFFCF50616C89513FFFCF78257
-:100D500000019793FFFCF50673BC9513FFFC078811
-:100D60000008E000161C9793FFFCF5061800951389
-:100D7000FFFCF78200109793FFFCF506744895136B
-:100D8000FFFC07880008E000161C9793FFFCF5069F
-:100D900016409513FFFCF78200109793FFFCF506B1
-:100DA00074D49513FFFC07880008E000161C979385
-:100DB000FFFCF506132C9513FFFCF50200129513AA
-:100DC000FFFCF50675609513FFFC07880008E0003E
-:100DD000161C9793FFFCF00575F0F00575ECF00517
-:100DE00075F48796FFFC8296FFF802140000013C20
-:100DF0000000000000019293FFFC02900008221006
-:100E00000038F70475EC00000001203A0000E6010C
-:100E10000E2800000001F70475F000000001203AE0
-:100E20000000E6010E3D0000000107880008E00117
-:100E300015D09793FFFCE001131800000001F704A0
-:100E400075FC00000001203A0000E6010E59F6860C
-:100E500075F8E0010E6CF6820000F70476080000D9
-:100E6000000177390002C738680086BA0018F70415
-:100E700076FC00000001203A0000E6010E90F685A5
-:100E80007660F3067648F30576FCE0010EA4F702DF
-:100E90000001F3020010F30576F8F3067648F30537
-:100EA0007700F7020000203A0000E6011315F30670
-:100EB0007448F70475EC00000001203A0000E601D8
-:100EC0000ED800000001F70475F000000001203A80
-:100ED0000000E6010EED0000000107880008E001B7
-:100EE00016409793FFFCE001131800000001F68400
-:100EF0007660000000018736000800000001703AAB
-:100F0000FFE1E6010F21F48200009693FFFC0788C1
-:100F10000008E00000BC9793FFFCE0011314F30607
-:100F20007560C3B40000841E0010F6844AA0231428
-:100F300000209316FFC49416FFE09696FFD4851EFA
-:100F40000014F7044A9C00000001C0367200EC0156
-:100F5000100C9516FFE477350001C7386800773923
-:100F60000002F3064A98C6B8300006B4000CC584E7
-:100F700000008736000000000001C03A4200E60190
-:100F80000F9CC62400008736000400000001C03A10
-:100F90005200E6010FA020320000F60200012032CC
-:100FA0000000E6010FAD00000001F582000086366A
-:100FB00000008716FFE000000001C0327200E2016D
-:100FC0000FE8F5020000C0327200E6010FF0202A9F
-:100FD000000086B600048716FFE400000001C0365A
-:100FE0007200E2010FF1202A0000F5020001202A20
-:100FF0000000E6011001202E0000F5820001202EE5
-:101000000000E601101020260000F48200012026D6
-:101010000000E6011045F60200018716FFD4F30632
-:101020004A9876B90001C6B4700076B50002C6B41D
-:10103000300006B4001486B600009716FFD8E00111
-:1010400010B89696FFDC2714002C9713FFFC83162C
-:10105000FFC4000000019313FFFCF3064A989313AA
-:10106000FFFC9396FFCC07880008E0012568979362
-:10107000FFFC8396FFCC20220000E60110B5F602AB
-:1010800000018716FFD4F3064A9876B90001C6B46A
-:10109000700076B50002C6B4300006B4001486B6FF
-:1010A00000009716FFD89696FFDCF7054AA0E001EE
-:1010B00010BC20320000F602000020320000E601E1
-:1010C00010CCF4820001E0011124F4820000869625
-:1010D000FFD80000000177350002C7386800773973
-:1010E0000002F68642C8A63A6802C7386800753919
-:1010F000001E7528FFE505B8000286AE000007381F
-:1011000000049716FFECC63057C07630FFF09616F5
-:10111000FFF475AD001E75ACFFE5C6B45FC076B4D4
-:10112000FFF09696FFF020260000E6011138F582C8
-:101130000000E00111CCF60200008696FFF00000EE
-:101140000001C7346800C49C7200C02E6A00EC0124
-:101150001198C5240000C62C00008716FFEC000083
-:101160000001A6B2700205AC0001C73070007739EB
-:10117000001E7738FFE5C6B477C076B4FFF0F6AB53
-:101180002800052800028716FFF000000001C02E8D
-:101190007200EC01115906300002F3020001F30560
-:1011A00076F4F60200018716FFF0869E0004C73829
-:1011B0007000C7384800C6B470008716FFF406B444
-:1011C00000209702FF6C9482FF509682FF582032D5
-:1011D0000000E601131000000001F704765CF584BE
-:1011E00076F807380001F705765CF704765C202E68
-:1011F0000021E2011230F6862C28F7042D38000079
-:10120000000106380001F6052D387739000220323A
-:101210000044E601121CB5BA6802F0052D38F3024D
-:101220000022F30576F8F3047700E0011234F305A9
-:1012300076FCF00576FCF70475F800000001203A12
-:101240000000E6011271F6862C28F7042D38000004
-:10125000000106380001F6052D3877390002F30247
-:10126000000F20320044E6011270B33A6802F00524
-:101270002D38F7047608F684760007380001C03A66
-:101280006A00E601128CF7057608F0057608F68408
-:101290007608F7047604F00575F8F60675F8C0369A
-:1012A0007200470C0001203A0000E60112B9F70570
-:1012B00075FCE00112C8F702000077350002C7385C
-:1012C0006000873A001800000001203A0000E601A3
-:1012D0001309F7057660F7042D38F30672A4F305B9
-:1012E0007648F6862C2806380001F6052D38773921
-:1012F0000002F302000E20320044E6011318B33A54
-:101300006802E0011318F0052D38E0011314F3060C
-:101310007218F3067330F30576488796FFFC8296C1
-:10132000FFF802140000013C00000000000192934D
-:10133000FFFC02900008F70476600000000186BA06
-:101340000004F704765400000001C7386800F70570
-:101350007654F70476580000000107380001F705BD
-:101360007658F70475F8F6847658203A0000E601BE
-:10137000139DF6862C28F7042D380000000106384E
-:101380000001F6052D3877390002F502000F2032F2
-:101390000044E601139CB53A6802F0052D38F704C5
-:1013A0007608F684760007380001C03A6A00E60144
-:1013B00013B8F7057608F0057608F7047608F68482
-:1013C0007604F00575F8F58476F8C03A6A00470CA3
-:1013D0000001202E0021E2011414F70575FCF7042A
-:1013E0002D38F6862C2806380001F6052D38773979
-:1013F000000220320044E6011400B5BA6802F0058C
-:101400002D38F5020022F50576F8F5047700E001A5
-:101410001418F50576FCF00576FCF70475ECF50676
-:101420007218203A0000E6011440F5057648F704EA
-:1014300075F000000001203A0000E601145500009C
-:10144000000107880008E00115D09793FFFCE00138
-:1014500014C400000001F70475FC00000001203AEC
-:101460000000E6011471F68675F8E0011488F702B1
-:101470000000F70476080000000177390002C73841
-:101480006800873A001800000001203A0000E601D9
-:1014900014C5F7057660F7042D38F6862C28063833
-:1014A0000001F6052D3877390002F502000E2032D2
-:1014B0000044E60114BCB53A6802F0052D38F50683
-:1014C00072A4F50576488796FFFC8296FFF8021411
-:1014D0000000013C0000000000019293FFFC02901C
-:1014E0000008F70475EC00000001203A0000E60156
-:1014F0001540F40200008696000400000001F68505
-:1015000075EC8696000800000001F6857B3886960B
-:101510000000F7047648F6857B30F6867218C03AEC
-:101520006A00470C0001203A0000E6011541F40270
-:10153000000107880008E00115D09793FFFCF40232
-:1015400000018796FFFC8296FFF80214000C013C14
-:101550000000000000019293FFFC02900008F704D5
-:1015600075F400000001203A0000E60115BCF40209
-:1015700000008696000400000001F68575F086964E
-:10158000000800000001F6857B4886960000F704FD
-:101590007648F6857B40F6867218C03A6A00470C9A
-:1015A0000001203A0000E60115BDF40200010788A1
-:1015B0000008E00115D09793FFFCF4020001879624
-:1015C000FFFC8296FFF80214000C013C00000000B2
-:1015D00000019293FFFC02900008F70476FC0000E3
-:1015E0000001203A0000E60115FCF6820010F686A4
-:1015F0007648F68576FCE001160CF7020001F685C8
-:1016000076F8F6867648F6857700F7020000203AED
-:101610000000E6011620F68674D4E001162CF6854B
-:10162000764807880008E00116409793FFFC8796EC
-:10163000FFFC8296FFF802140000013C000000004D
-:1016400000019293FFFC02900008F60475F0000080
-:10165000000120320000E6011685F7020001F705BF
-:1016600075F4F6847B48F70576F4F7047B40C6B042
-:10167000680026B400049702FF6C9602FF50E00158
-:1016800016A800000001F70475ECF6847B38F5829B
-:101690000001F58576F4F6047B30C6B8680026B400
-:1016A00000049602FF6C9702FF509682FF58F58661
-:1016B00073BCF58576488796FFFC8296FFF8021486
-:1016C0000000013C0000000000019293FFFC02902A
-:1016D0000008F7047B280000000107380001F70527
-:1016E0007B28F70475F4F6847B28203A0000E60195
-:1016F000172100000001F00575F4F70475EC0000F7
-:101700000001203A0000E6011725F00575F0078872
-:101710000008E00116409793FFFCE00117EC000081
-:101720000001F00575ECF70475FC00000001203A9B
-:101730000000E6011741F68675F8E0011758F70238
-:101740000000F70476080000000177390002C7386E
-:101750006800873A001800000001203A0000E60106
-:101760001795F7057660F7042D38F6862C2806388D
-:101770000001F6052D3877390002F502000E2032FF
-:101780000044E601178CB53A6802F0052D38E001F7
-:101790001798F50672A4F5067218F5057648F584D3
-:1017A00076F800000001202E0021E20117E8F686FD
-:1017B0002C28F7042D380000000106380001F6053A
-:1017C0002D387739000220320044E60117D4B5BA2B
-:1017D0006802F0052D38F5020022F50576F8F504CB
-:1017E0007700E00117ECF50576FCF00576FC8796AE
-:1017F000FFFC8296FFF802140000013C000000008C
-:1018000000019293FFFC0290000822100038F704B8
-:1018100075EC00000001203A0000E60118340000D9
-:101820000001F70475F000000001203A0000E60115
-:1018300018490000000107880008E001164097934E
-:10184000FFFCE0011C7400000001F68476600000DB
-:1018500000018736000800000001703AFFE1E60150
-:10186000187DF48200009693FFFC07880008E000D2
-:1018700000BC9793FFFCE0011C70F3067560C3B4D5
-:101880000000841E0010F6844AA023140020931642
-:10189000FFC49416FFE09696FFD4851E0014F7044B
-:1018A0004A9C00000001C0367200EC0119689516D0
-:1018B000FFE477350001C738680077390002F30686
-:1018C0004A98C6B8300006B4000CC58400008736BC
-:1018D000000000000001C03A4200E60118F8C624EA
-:1018E00000008736000400000001C03A5200E60103
-:1018F00018FC20320000F602000120320000E60150
-:10190000190900000001F5820000863600008716E4
-:10191000FFE000000001C0327200E2011944F5024C
-:101920000000C0327200E601194C202A000086B681
-:1019300000048716FFE400000001C0367200E201D7
-:10194000194D202A0000F5020001202A0000E601BE
-:10195000195D202E0000F5820001202E0000E60116
-:10196000196C20260000F482000120260000E60108
-:1019700019A1F60200018716FFD4F3064A9876B93A
-:101980000001C6B4700076B50002C6B4300006B4DB
-:10199000001486B600009716FFD8E0011A14969638
-:1019A000FFDC2714002C9713FFFC8316FFC40000F4
-:1019B00000019313FFFCF3064A989313FFFC9396E0
-:1019C000FFCC07880008E00125689793FFFC839609
-:1019D000FFCC20220000E6011A11F6020001871652
-:1019E000FFD4F3064A9876B90001C6B4700076B504
-:1019F0000002C6B4300006B4001486B60000971684
-:101A0000FFD89696FFDCF7054AA0E0011A182032AD
-:101A10000000F602000020320000E6011A28F482DD
-:101A20000001E0011A80F48200008696FFD80000D1
-:101A3000000177350002C738680077390002F68662
-:101A400042C8A63A6802C73868007539001E752872
-:101A5000FFE505B8000286AE0000073800049716BF
-:101A6000FFECC63057C07630FFF09616FFF475AD28
-:101A7000001E75ACFFE5C6B45FC076B4FFF0969665
-:101A8000FFF020260000E6011A94F5820000E00134
-:101A90001B28F60200008696FFF000000001C73404
-:101AA0006800C49C7200C02E6A00EC011AF4C524C0
-:101AB0000000C62C00008716FFEC00000001A6B253
-:101AC000700205AC0001C73070007739001E77380E
-:101AD000FFE5C6B477C076B4FFF0F6AB2800052862
-:101AE00000028716FFF000000001C02E7200EC011A
-:101AF0001AB506300002F3020001F30576F4F6028F
-:101B000000018716FFF0869E0004C7387000C738B2
-:101B10004800C6B470008716FFF406B40020970290
-:101B2000FF6C9482FF509682FF5820320000E6013D
-:101B30001C6C00000001F704765CF58476F8073829
-:101B40000001F705765CF704765C202E0021E201A7
-:101B50001B8CF6862C28F7042D380000000106386F
-:101B60000001F6052D387739000220320044E601E5
-:101B70001B78B5BA6802F0052D38F3020022F30590
-:101B800076F8F3047700E0011B90F30576FCF0058E
-:101B900076FCF70475F800000001203A0000E60129
-:101BA0001BCDF6862C28F7042D38000000010638DE
-:101BB0000001F6052D3877390002F302000F2032BC
-:101BC0000044E6011BCCB33A6802F0052D38F70457
-:101BD0007608F684760007380001C03A6A00E6010C
-:101BE0001BE8F7057608F0057608F6847608F70412
-:101BF0007604F00575F8F60675F8C0367200470CE5
-:101C00000001203A0000E6011C15F70575FCE00113
-:101C10001C24F702000077350002C7386000873ABD
-:101C2000001800000001203A0000E6011C65F705DD
-:101C30007660F7042D38F30672A4F3057648F6862D
-:101C40002C2806380001F6052D3877390002F302FA
-:101C5000000E20320044E6011C74B33A6802E00131
-:101C60001C74F0052D38E0011C70F3067218F306A1
-:101C70007330F30576488796FFFC8296FFF80214CE
-:101C80000000013C0000000000019293FFFC029064
-:101C90000008F70676489713FFFCF70672189713AB
-:101CA000FFFC07880008E00014F49793FFFCF70698
-:101CB00076489713FFFCF70672A49713FFFC07887A
-:101CC0000008E00014F49793FFFCF706764897139A
-:101CD000FFFCF70673309713FFFC07880008E0004D
-:101CE00014F49793FFFCF70676489713FFFCF7066A
-:101CF00073BC9713FFFC07880008E00014F4979367
-:101D0000FFFCF70676489713FFFCF7067448971315
-:101D1000FFFC07880008E00014F49793FFFCF70627
-:101D200076489713FFFCF70674D49713FFFC0788D7
-:101D30000008E00014F49793FFFCF7067648971329
-:101D4000FFFCF70675609713FFFC07880008E000AA
-:101D500014F49793FFFC8796FFFC8296FFF8021419
-:101D60000000013C0000000000019293FFFC029083
-:101D70000008F68676689693FFFCF68677049693BD
-:101D8000FFFC07880008E00015489793FFFCF686E3
-:101D90001DD49693FFFC9013FFFCF686766896930D
-:101DA000FFFC07880008E000161C9793FFFCF70271
-:101DB0000022F70576F4F70576F8F00576FCF005D5
-:101DC00077008796FFFC8296FFF802140000013C22
-:101DD0000000000000019293FFFC02900008F7044D
-:101DE00076F400000001203A0022E6011E01000006
-:101DF00000019713FFFC07880008E0001584979303
-:101E0000FFFC8796FFFC8296FFF802140000013C5D
-:101E10000000000000019293FFFC02900008F7060A
-:101E200077049713FFFCF70676689713FFFC078883
-:101E30000008E00014F49793FFFC8796FFFC82965D
-:101E4000FFF802140000013C000000000001000047
-:101E500000009293FFFC02900008F686781096939B
-:101E6000FFFCF68678A49693FFFC07880008E00044
-:101E700015489793FFFCF6861FBC9693FFFCF682ED
-:101E800000149693FFFCF68678109693FFFC078863
-:101E90000008E000161C9793FFFCF005789C900268
-:101EA000FF34F7027FFFF70578A09702FF3087968F
-:101EB000FFFC8296FFF802140000013C00000000C5
-:101EC00000019293FFFC02900008F604789C8716AC
-:101ED000000084960008F5867710873A0008F68699
-:101EE000218C7539000477390002A73A6802203244
-:101EF0000000C6A8580084160004C63075809436C9
-:101F00000004B4AA580287360008F605789C073802
-:101F10000001E6011F2D973600088702FF30000000
-:101F20000001C03A4A00EE011F3500000001F485AF
-:101F300078A09482FF308796FFFC8296FFF8021407
-:101F4000000C013C0000000000019293FFFC029095
-:101F500000088596000000000001872E0008F68624
-:101F6000218C77390002A73A6802F604789CC704EE
-:101F7000760086AE0008C6307400F7067710F605C6
-:101F8000789C76B50004C6B470008736000820320D
-:101F9000000007380001E6011FA897360008F70285
-:101FA0007FFFF70578A09702FF308796FFFC8296A7
-:101FB000FFF802140004013C0000000000019293AD
-:101FC000FFFC0290000822100008F704789C000033
-:101FD0000001203A0000E60120D1F6027FFF9616AC
-:101FE000FFF4F6842D40F606771026B4000177350D
-:101FF0000004C4B86000C338000074350002F6065F
-:102000007710C0266200EC0120C1F606218CF38413
-:10201000789CA722600200000001C01E7400E60147
-:1020200020B10000000186A60000F70478A000009F
-:102030000001C6B4720020360000EE01209896A67A
-:102040000000F7042D38F6067710C5186000F686F4
-:102050002C28862A000405B80001F5852D3877392B
-:102060000002202E0044E6012070B63A6802F00516
-:102070002D38862A000800000001962A000CF6067A
-:10208000218CA722600200000001C7047600C71C53
-:102090007400E00120B0F705789C8616FFF400007C
-:1020A0000001C0366200EC0120B0000000019696ED
-:1020B000FFF424A4001023180010E0011FFC2420CA
-:1020C00000048616FFF400000001F60578A09602D1
-:1020D000FF308796FFFC8296FFF802140000013C57
-:1020E0000000000000019293FFFC02900008871698
-:1020F000000000000001873A0008F6867710773963
-:102100000004C738680086BA000C873A000800004F
-:102110000001C0367200440C00018796FFFC8296D5
-:10212000FFF802140004013C00000000000192933B
-:10213000FFFC02900008F702000F203A0000EC01BB
-:10214000215DF68677189036000027380001C60416
-:102150000000C03A6200E601214406B40010F60611
-:1021600078A49613FFFCF60678109613FFFC0788F8
-:102170000008E00014F49793FFFC8796FFFC82961A
-:10218000FFF802140000013C000000000001000004
-:102190000001000000020000000400000008000030
-:1021A000001000000020000000400000008000003F
-:1021B0000100000002000000040000000800000010
-:1021C000100000002000000040000000800000001F
-:1021D00000009293FFFC02900008F70678B0971376
-:1021E000FFFCF70679CC9713FFFC07880008E00096
-:1021F00015489793FFFCF706222C9713FFFCF70274
-:1022000000159713FFFCF70678B09713FFFC0788BB
-:102210000008E000161C9793FFFC8796FFFC82964F
-:10222000FFF802140000013C00000000000192933E
-:10223000FFFC02900008F6846F440000000187361E
-:10224000000000000001203A0002E6012270F602C0
-:10225000000087360EF486B60EF800000001C03A82
-:102260006A00470C0001203A0000E6012278203283
-:102270000000F602000120320000E6012294000076
-:102280000001F70432E800000001203A0000E601F6
-:1022900022B1F58203E80F814000F70479C80000FD
-:1022A000000107380001F70579C8F70479C8F582FD
-:1022B00003E89593FFFCF58200159593FFFCF586E6
-:1022C00079CC9593FFFC07880008E0011EC0979326
-:1022D000FFFC8796FFFC8296FFF802140000013C89
-:1022E0000000000000019293FFFC02900008F70636
-:1022F00079CC9713FFFCF70678B09713FFFC07889B
-:102300000008E00014F49793FFFCF70679CC9713CC
-:10231000FFFCF706793C9713FFFC07880008E000F4
-:1023200014F49793FFFC8796FFFC8296FFF8021443
-:102330000000013C000000000001C13C0000021050
-:1023400000049293FFFC029000082210000C859676
-:1023500000000000000186AE0004000000012036ED
-:102360000000E60123842714000C872E00040000DF
-:10237000000107380001972E0004872E0004E001B9
-:1023800024349696FFF49713FFFC85160004000092
-:1023900000019513FFFC9593FFFC9596FFEC0788D1
-:1023A0000008E00125689793FFFC8596FFEC20224A
-:1023B0000000E60124340000000186AE0004861609
-:1023C000FFF400000001C0366200EE0124217735E1
-:1023D0000001C738680077390002C6B85800773165
-:1023E0000001C738600077390002C73858008536C9
-:1023F0000000000000019536000C85360004000046
-:102400000001953600108536000800000001953661
-:10241000001426B4000CC0367200EE0123EC00005C
-:102420000001872E00040000000107380001972EEC
-:102430000004872E00048696FFF485160004773585
-:102440000001C738680077390002C72C7000852A60
-:10245000000000000001953A000C85160004000001
-:102460000001852A000400000001953A001085163D
-:102470000008F4020001953A001496AE0008879611
-:10248000FFFC8296FFF80214000C013C00000000E3
-:1024900000019293FFFC029000082210000C859628
-:1024A000000000000001842E000400000001202232
-:1024B0000000E60125552714000C9713FFFC851634
-:1024C0000004000000019513FFFC9593FFFC959616
-:1024D000FFEC07880008E00125689793FFFC8596CC
-:1024E000FFEC20220000E6012555000000018616C1
-:1024F000FFF40000000120320000EE012545773195
-:102500000001C6AC0000C738600077390002C73848
-:10251000580085360018000000019536000C8536FD
-:10252000001C0000000195360010853600200000D8
-:1025300000019536001406B4000CC0367200EC01A0
-:10254000251100000001872E0004F4020001273845
-:102550000001972E00048796FFFC8296FFF8021474
-:102560000008013C0000000000019293FFFC029073
-:102570000008221000088396000483160000C5009E
-:102580000000841A0004C4A800009416FFF4C026BA
-:102590004200E60126D1000000018316FFF400008E
-:1025A0000001C02A3200E60126D1C7204A00951654
-:1025B000FFF476B8FFE1C73868007739FFFFC5241C
-:1025C000700077290001C738500077390002831660
-:1025D0000000869E0000C5B8300005AC000C872EB8
-:1025E0000000C6000000C0367200E601261020324E
-:1025F0000000869E0004872E000400000001C03603
-:102600007200E601261020320000F602000120329E
-:102610000000E601262500000001C7000000E001DF
-:102620002678203A0000869E0000872E00000000D9
-:102630000001C0367200E201265C00000001E601E4
-:10264000266420320000869E0004872E00040000CD
-:102650000001C0367200E201266520320000F60259
-:102660000001203200004704FFFFE6012679203AEE
-:102670000000F7020001203A0000E60126B1203AEE
-:102680000000EE0126A0203A00014304FFFFC03AFB
-:102690003200E60126C9C0264200E0012590000074
-:1026A0000001E60126C1C0264200E001259000009D
-:1026B000000183160008F4020001E00126E0951AEB
-:1026C0000000E001258CC4A80000E001258CC4288E
-:1026D00000008316000800000001941A0000C400E6
-:1026E00000008796FFFC8296FFF80214000C013C64
-:1026F000000000000001000000009293FFFC029027
-:102700000008859600048416000084960008F702ED
-:102710000003C6A04D80C6B67400E6012771C6202E
-:10272000000020360002E60127A0C5204800C7208F
-:10273000480027380002C0227200E201279CC538F9
-:102740000000872E000076AD001E76B4FFE5C73886
-:102750006FC07738FFF0F733280006300002C03230
-:102760005200E201274105AC0002E00127A0C5208C
-:102770004800C720480027380004C0227200E20148
-:1027800027A0C520480083AD00040000000193B1DC
-:102790000004C0327200E201278500000001C5205C
-:1027A0004800C0325200E40127D50000000186AE87
-:1027B0000000772D001E7738FFE5C6B477C076B5E8
-:1027C000FFE8F6B3680006300001C0325200E401B1
-:1027D00027AC05AC00018796FFFC8296FFF8021437
-:1027E000000C013C0000000000019293FFFC0290ED
-:1027F0000008841600008696000400000001C7222D
-:102800006D80E601281020360000E0012874C438ED
-:102810000000F7020001EE012841F602000076B543
-:10282000000120360000EE01281C77390001E0018C
-:10283000284420220000742100017738FFFF063071
-:10284000000120220000EE012834203A0000E601B9
-:10285000287100000001C0226A00E4012864000021
-:102860000001C4206A00773AFFFFE601285476B4DD
-:10287000FFFFD42007628796FFFC8296FFF80214C0
-:102880000008013C0000000000019293FFFC029050
-:10289000000822100004E00128CCF70629DC86BAE3
-:1028A00000000000000120360000E60128C90000F9
-:1028B00000019716FFF407880008C13400009793C1
-:1028C000FFFC8716FFF40000000127380004F6061D
-:1028D00029E0C03A6200E401289D000000018796CB
-:1028E000FFFC8296FFF802140000013C000000008B
-:1028F00000019293FFFC0290000822100004E00106
-:102900002934F706299886BA000000000001203615
-:102910000000E6012931000000019716FFF4078846
-:102920000008C13400009793FFFC8716FFF40000F5
-:10293000000107380004F60629E0C03A6200E4010D
-:102940002904000000018796FFFC8296FFF802141C
-:102950000000013C0000000000019293FFFC029087
-:102960000008F7047B5000000001203A0000E60157
-:102970002984F6820001F6857B5007880008E00173
-:1029800028F09793FFFC8796FFFC8296FFF80214CD
-:102990000000013C00000000000100000B4C0000A2
-:1029A0000000000042880000000000005E500000AF
-:1029B00000000000C7A80000000000010BD00000CC
-:1029C000000000011C880000000000011E1400002F
-:1029D00000000001212C00000000000122E40000A2
-:0229E0000000F5
-:00000001FF
-/* This is the Myrinet MCP code for LANai4.x */
-/* Generated by cat $MYRI_HOME/lib/lanai/mcp4.dat > myri_code4.h */
diff --git a/firmware/ositech/Xilinx7OD.bin.ihex b/firmware/ositech/Xilinx7OD.bin.ihex
deleted file mode 100644
index 03e80857a549..000000000000
--- a/firmware/ositech/Xilinx7OD.bin.ihex
+++ /dev/null
@@ -1,177 +0,0 @@
-:10000000FF04A036F3ECFFFFFFDFFBFFF3FFFFFF72
-:10001000EF3FFFF7FFFFFFFFEF7FFEFFCEFEFEFE8D
-:10002000FEDEBDDDFDFFFDCFF7BF7FFF7F3FFEBFE3
-:10003000FFFFFFBCFFFFBDB57F7FBFBF7FFFEFFFAF
-:10004000FFFFFBFFF7F7FFFFFFFFFEDEFEFEFADE1E
-:10005000BDFDEDFDFDCFEFEFEFEFC7DFDFDFDFDF52
-:10006000FF7EFEFD7D6DEEFE7CFBF4FBCFDBDFFF54
-:10007000FFBB7FFF7FFFF7FF9EBF3BBFBF7F7F7F41
-:100080007E6FDFEFF5F6FDF6F5EDEBFFEFEFEF7EC0
-:100090007F7F6F7FFFFEFEFEFEFEEFBFFFFFFFFFD5
-:1000A000FFFFFFFFFFFFBC1F1FEEFFBCB7FFDFFF1F
-:1000B000DFEF3BE3D3FFFBFFFFDFFFFFFFBABF2D07
-:1000C000DBBDFDDBDFFAFBFFEFFBDBF3FFDFFD7FDB
-:1000D000EFFBFFFFBEBF27BAFEFBDFFFF6FFFFEF20
-:1000E000FBDBF3D99A3FFFAFBFFFFFBE3F37BD96A3
-:1000F000FFFFFFFFFFFFAEFBF3F3EBFFFFFFFFFF91
-:10010000FFF7FABCAEFEBEFEBB7FFDFF7FEFF7FB45
-:10011000BBD7F77FFFF7FFFFF7BCEDFDBD9D7D7BF4
-:10012000FB7B7BFBAFFFFEFDFDFEFEFFFFFFFFF74E
-:10013000AAB9BF8FBFDFFF7FFFFF7FCFFBEBCBEB0A
-:10014000EEFFFFD7FFFFFF3E333F1C7CFCFFFFFFAE
-:10015000FFFFCFD3F3E3F3FBFFFFFFFFFFEBFE3522
-:100160003F3DFDFDFFFFFFBFFFEF6FE3E3E3EFFF69
-:10017000FFDFFFFFF7FE3E5EFEFFFFFFFFFDFFFF1D
-:10018000AFCFF2CBCF8EFFFFFFFFFFFDFC3E1F9EE8
-:10019000ADFDFFFFBFFFFFEFFFB3F7E7F7FAFFFF8C
-:1001A000FFFFFFEEEBABAF9FE37FFFDEFF7FEEFFD6
-:1001B000FFFB3AFAFFF277FFFFF7FEFFFEBDAEDE70
-:1001C0007D7DFDFFBFEEFFFDFFDBFBFFF7EFFBFFDC
-:1001D000FFFEFF2DAFB9FD79FBFAFFBFEFFFFF91E7
-:1001E000FAFBDFF7F7FFFFFFFCCF37BFBFFF7F7FD3
-:1001F000FFFFFFAFFFFFF3FBFBFFF5EFFFFFF7FA9A
-:10020000FFFFEEFAFEFB55DDFF7FAFFEFFFBFBF5C8
-:10021000FFF7EFFFFFFFBEBDBDBDBD7D7B7B7B7BE1
-:10022000FBAEFFFDFEFFFFFFFFFFFFFFF7DAB76149
-:10023000FFB959F373F3DF7F6FDFEFF7EBEBD7FF16
-:10024000D7FFFFF7FE7FFB3E3873F67FFCFFFFCF43
-:10025000FFB7FBB3B367FFE7FDFFEFF67FB7BCF572
-:100260007BF6F7F5FFFFEFFFF7FFF7CEE7FF9FFF06
-:10027000FFF5FE7DFF5FFFFFFFFFFFFFFFEFFFF6D4
-:10028000CBDBEEFEFFDFFFFFFFFE7FBE1E3EFEFF6D
-:100290007DFEFFFFEFBFE7FFE3E3FFDFE7FFFFFFC9
-:1002A000B8EFB72FEEFFDFFFBFFF7FEFEBBFA3D3AA
-:1002B000FF7FFFFFFFFFF7BEFD3FCFFDFBFFFFFF0F
-:1002C000FFFFAFFBBFBBBFDBFDFBFFFFFFFF3EFE42
-:1002D0003FBABAFEFFFFFFEFFFEFC37FB29BFFFF06
-:1002E000FFFFFEFFFF3CFF3F3CFFFEFFFFFFFFFF66
-:1002F000AFF3FEF3E3EBFFFFFFFBFFF79AFEAF9ECA
-:10030000BEFEFFDFFFFF7BEFF7BFFBFBFBFFFF7FC7
-:10031000FFFFFFBCBDFDBDDD7D7B7B7B7BFBAEFFBF
-:10032000FFFFFEFEFFFDFFFFFFF79AFF9FFFAFEF0E
-:10033000FFFFFFFF7FCFF3FFEBFFEBFFFFBFFFFFF1
-:10034000EFFEFF37FCBFFFFFFFFFFFFFCFEFFDF327
-:10035000FFEEFEFFFFFFFFFF6EFD2FFDFFFDFFFF26
-:10036000FFFFFFEFCFFFF3BF69FFFFFFFFFFFFFEC0
-:10037000FB9FFFBFFDFFFFFFFFFFEF87FEDAEFCF21
-:10038000FFFFFFFFFFFFFEEFBFEFEFFDFFFFFFFFF0
-:10039000FFEFFDFF7BFFEBFEFFFFFFFFEBF8FFEF43
-:1003A000AFFFFFBDFFFFFF7FEE7FEFFFBBFFBFFB98
-:1003B000FFFFFFF7F6FBBDFDDDF5FFFFFFFFFFAF22
-:1003C000FF5FF5DFFF7FFFFFFFFFFFF6F3FFDEFEBE
-:1003D000EFFDFFFFFFFFEFFFDEDF5FDFFDFFFFFF52
-:1003E000FFFFFEFFFFFEFEFFFDFFFFFFFFAFFFFF72
-:1003F000EFEDFFDFFFFFFBFFFFDABDBEAEFE7FFDCF
-:10040000DFFFFF7FEFFFFBFBFB7FF7FFFFFFFFF748
-:10041000BCFDBDBDBDFD7B7B7B7BFBAEFFFFFDFF60
-:10042000FFFFFDFFFFFFFFFA9FBFBFCF7FFFFFFF73
-:10043000FFFFAFFFEBEBEBFFD7FEFFFFBFE7FEBF1A
-:100440007FFCFFFFEDFFFFFFFF4FFFFBFBFFFFDD2B
-:10045000FFFFFFFFFFFEBDDF9DFDDFB9FFFFFFFFD9
-:10046000EFFFFBEFEBFFDEFFFFFFFFFFF69FFFFC61
-:10047000FEFBFDFFFFFFFFEFDFFACDCFBF9FFFFFCA
-:10048000FFFFF7FEBFFFDFEF5FFFFFFFFF7F6FFFA5
-:10049000BBFDFFFFFFFFFFFFFFFF7EFF5FFFBFBF53
-:1004A000F9FFFFFF7F6E7BFFEFFDEBDFFFFFFFFF3D
-:1004B000F7B63EFCFDBF7EFBFFFFFFF7EFF7F3F75C
-:1004C000FFFBFFFFFFFFFFFF6E3579FFBFFCFFFF64
-:1004D000FFFFFFEFFB53DFFFEBBFFFFFFFFFFFBCA3
-:1004E000FFFFFFBFFFFDFFFFFFFFAFF5FFF7FFFBC4
-:1004F000FFFFFFFFFFFFBAAAEEFE3F7DFDFFFFFFFC
-:100500007FAF77FBFBFFFBF7FFFFFFFFF7BEBDBD34
-:10051000BDBDFD7B7B7B7BFBAEFFEFFFFFFFFFFCE9
-:10052000FFFFFFFF9AD9B8FFFF79FFFFFFFFFFCF63
-:10053000FBFFEBFFEBD7FFFFFFFFE7DEF8FBFE3F24
-:10054000FBFDFFFFFFFFCFADBFFAFF73DFFFFFFF34
-:10055000FFFF3AF5B7FC3FF9FDFFFFFF7FEFF3FF29
-:10056000BFFEF39FFEFFFFFFF73EFFFFFFBFFFFF52
-:10057000FFFFFFFFAFD3FEDBFFDBDFFFFFFFFFFF70
-:100580003EFFBFFF7FFFFDFFFFFFFF8FF3FFEDFF8C
-:10059000F7FBFFFFFFFFEFF63CFEFFFFFFFFFFFF54
-:1005A000FF9FEFEFD1FFFFFFFFFFFFFFFFFF7EBFCA
-:1005B000FDFFFFFFFFFFFFFFBBEFDFF1FFFFFFFFCF
-:1005C000FFFFFFFFFFEE3EFEFFFFFFFFFFFFFFBF4E
-:1005D000EFFDC3FFFFFFFFFFFFFFBFFFFC3EFEFF7E
-:1005E000FFFFFFFFFFFFFF2EEFF3FFFFFFFFFFFF08
-:1005F000FFFFF7BABEFEFFFFFFFFFFFFFF7FAFFB6E
-:10060000FBFDFFFFFFFEFFFFFFF2D6EDBDBDBD7D91
-:100610007B7B7B7BFBAFDFFFFFFFFFFFFFFFFFFF6E
-:10062000FF92BFFFFFFFFFFFFFFFFF7FAFEBEBFF7F
-:10063000FFFFFFFFFFFFFFE7FE2EFEFFFFFFFFFFB5
-:10064000FFFFFF4FEFF3FFFFFFFFFFFFFFFFFFFE87
-:100650003CFEFFFFFFFFFFFFFFFFEFCEC3FDFFFFED
-:10066000FFFFFFFFFFFFFE5DFFFFFFFFFFFFFFFF3D
-:10067000FFEFCFEBFFFFFFFFFFFFFFFFF7EE3EFFB8
-:10068000FFFFFFFFFFFFFF7FEFDFE2FFFFFFFBFF4B
-:10069000FFFFFFFFF6BEFCFFFFFFFFFFFFFF7FEE48
-:1006A0005FE6FFFFFFFFFFFFFFFFFF3E7DFFFFFF56
-:1006B000FFFFFFFFFFFFEFF3FBFFFFFFFFFFFFFF6A
-:1006C000BFF736BEFEFFFFFFFFFFFFFFFFEFD3F6D2
-:1006D000FEFFFFFFFFFFFFFFFFFC7FEEFFFFFFFFBF
-:1006E000FFFFFFFFAFEFEBFFFFFFFFFFFFFFFFFF8E
-:1006F000BABEFEFFFFFFFFFFFFFFFFEEFBFAFFFFAB
-:10070000FFFFFFFFFFFFF7D6FDBDBDBD7D7B7B7B00
-:100710007BFBAEFF7EFFFFFFFFFFFFFFFFF7BABFD0
-:10072000FFFFFFFFFFFFFFFF7FEFEB6BFFFFFFFF11
-:10073000FFFFFFFFF7FEBEFEFFFFFFFFFFFFFFFF14
-:100740004FEFF7FFFFFFFFFFFFFFFFEF3E6EFCFFE6
-:10075000FFFFFFFFFFFFFFEFC3C9FFFFFFFFFFFF2B
-:10076000FFFFFF3EBFFFFFFFFFFFFFFFFFFFEFFBAE
-:10077000D5FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFB6
-:10078000FFFFFFFFFF6FEFFBFFFFFFFBFFFFFFFF21
-:10079000FFF6DFFFFFFFFFFFFFFF7FFEEFFFFFFF23
-:1007A000FFFFFFFFFFFFE7FFFEFFF7FFFFFFFFFF7A
-:1007B000FF7FFAEFBFFFFFFFFFFFFFFFFFE7FFFE37
-:1007C000FFFFFFFFFFFFFFFF7FFEEFBFFFFFFFFF0A
-:1007D000FFFFFFFFA7FFFCF7FFFFFFFFFFFFFF7F0C
-:1007E000FEAEFFFFFDFFFFFFFFFFFFE7F7FAFFFD94
-:1007F000FFFFFFFFFFFFFF7FAFFFFFFFFFFFFFFFD9
-:10080000FFFFFFF7BEBDBDBDBD7D7B7B7B7BFBAF2F
-:100810007FFFFFFFFFFFFFFFFFFFFFCAFFFFFFFF9D
-:10082000FFFFFFFFFF7F6FFFFFFFFFFFFFFFFFFFE8
-:10083000FFE7FEFFFFFFFFFFFFFFFFFFFFCFFEFF12
-:10084000FFFFFFFFFFFFFFFFFFFEDFFFFFFFFFFFD9
-:10085000FFFFFFFFEFFFFEFFFFFFFFFFFFFFFFFFB9
-:10086000FEFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFA9
-:10087000FFFFFFFFFFFFF7FEFFFFFFFFFFFFFFFF91
-:10088000FFFFEFFFFEFFFFFFFBFFFFFFFFE7F2FCB5
-:10089000EFFFFFFFFFFFFFFF7FAEEFFFFFFFFFFF59
-:1008A000FFFFFFFFF77EFDFFFFFFFFFFFFFFFFFFE3
-:1008B000EFFFFEFFFFFFBFFFFFFFBFFFFEFEFFFFDB
-:1008C000FFFFFFFFFFFFDFEFDDFEFFFFFFFFFFFF8B
-:1008D000FFFFFFFEFEFFFFFFFFFFFFFFFFFFAFEF8A
-:1008E000FFFFFFFFFFFFFFFFFFFFBAFEFFFFFFFF5E
-:1008F000FFFFFFFFFFEFFAFEFFFFFFFFFFFFFFFF1E
-:10090000F69CBDBDBDBD7D7B7B7B7BFBAEFFFFFF52
-:10091000FFFFFFFFFFFFFFF77AFFFFFFFFDFFFFF94
-:10092000FFFF6FEFF7FFFFFFDFFFFFFFFFFFF7FEA8
-:10093000FEFFFFFFDFFFFFFFFFFFCFEBFFFFFFFF2C
-:10094000FFFFFFFFFFEF9EFCFFFFFFFFFFFFFFFF2B
-:10095000FFEFEFFFFFFFFFFFFFFFFFFFFFFEFFFFC8
-:10096000FFFFFFFFFFFFFF7FEFCBFFFFFFFFFFFD5D
-:10097000FFFFFFFFBEFDFFFFFFFFFFFFFFFFFFEFDA
-:10098000EFFFFFFFDFFFFFFFFFFFFFF8FFFFFFFFAE
-:10099000BFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFB7
-:1009A000FFFFFEFFFFFFFFFFFFFFFFFFFBAF7FFF2C
-:1009B000FFFFDFFFFFFFFFFFFFFEEFFFFFFFFFFF78
-:1009C000FFFFFFFFEFFFFFFFFFFFFFFFFFFFBFFF87
-:1009D000FEFFFFFFFFFFFFFFFFFFFFAEFFFFFFFF79
-:1009E000FFFFFFFFFFFFF7FAFFFFFFFFFFFFFFFF24
-:1009F000FF7FEFFFFFFFFFFFFFFFFFFFFFF7BCBD24
-:100A0000BDBDBD7D7B7B7B7BFBAFFFFFFFFFFFFFA2
-:100A1000FFFFFFFFF7FAFFFFFFFFFFFFFFFFFF7F73
-:100A2000AF7FFFFFFFFFFFFFFFFFFFEFFEFFFFFFB7
-:100A3000FFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFF6
-:100A4000FFFFFFFEFFFFFFFFFFFFFBFFFFFFEFFFCB
-:100A5000FFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFA7
-:100A6000FFFFFFFFFFEFFFFFFFFFFFFFBFFFFFFFE6
-:100A7000FFFCFFFFFFFFFFFFFFFFFFFFEFFFFFFF99
-:100A8000FFFFFBFFFFFFFFEFFEFF9F9F9F3F3F3FEB
-:100A90003F3FFFEFDFDFDFDFCFB7BFBFBFBFFFBC31
-:100AA000B99DBDBD7D7B7B7B7BFBEFD7F5F3F1D1A2
-:100AB00065E3E3E3A3FFFE7FFEDEDEFFBDBDBDBD5C
-:100AC000DFEFFBF7F3F3F3E7E7E7E7E7FBFEFFFF13
-:0A0AD000FFFFFFFFFFFFFFFFFFFF26
-:00000001FF
-This file contains the firmware of Seven of Diamonds from OSITECH.
-(Special thanks to Kevin MacPherson of OSITECH)
diff --git a/firmware/qlogic/1040.bin.ihex b/firmware/qlogic/1040.bin.ihex
deleted file mode 100644
index d1213307f713..000000000000
--- a/firmware/qlogic/1040.bin.ihex
+++ /dev/null
@@ -1,2111 +0,0 @@
-:1000000007410600001078003A1000005841000037
-:100010004320504F525947495448312039392035EF
-:100020004C51474F43494320524F4F50415249543E
-:100030004E4F49205053303130324920542F462002
-:100040007269776D726120655620726569736E6F93
-:1000500030202E3735362020432073756F74656D40
-:1000600020726F4E202E303050206F727564746392
-:100070004E202E6F2020313024200120FD0404204A
-:1000800082A005004800451038004B10780047104A
-:1000900028004B10B920121278004D10B9202222EE
-:1000A000C120080071201000C3700400C920FF782F
-:1000B00089208611C7705349CB702050CF70202003
-:1000C000D3700700003FD670C1200800192000003F
-:1000D0000920FFFE00210B20A5A5ECA1FF7F642DC8
-:1000E0006B200A0ADCADFF3F542B5B2050501421DB
-:1000F00086A2A5A54000BF1086A30F004000851072
-:100100006A2C5A2AC120000019200F0078006510BF
-:100110006A2C5A2AC12008000920FF7F482144295F
-:100120004B200A0ABCA9FF3F34273B205050142122
-:1001300086A20A0A4000A9104A283A26C1200400D3
-:100140000920FF3F34210B205050142186A250502B
-:100150004000AA1078008E114A283A26C09888A13B
-:1001600000102C210B20A5A5142186A2A5A54000D6
-:10017000BC100A258AA10010C1987800C1100A2578
-:100180007800C1106A2C5A2A30218AA14000282107
-:10019000A2A10052248424842484248424842484DA
-:1001A00092A1007909200000012031007810261D5D
-:1001B000182279200052A02F082411200000A92025
-:1001C0004000A4420981C000DC10F27E2885E67D53
-:1001D000EA7CEE7B8378000031203000CF7801018B
-:1001E0000B7802000F7802004F780300692040521C
-:1001F0000120FD04042082A00500480004113800FD
-:100200000011780008111B683C0078000A11A80052
-:1002100008111B683C001B682800076807000B6872
-:10022000FA000F68080013680500236800002768BB
-:100230000600176808002B6800001F681900692075
-:10024000805411202000092010000B680C080F6852
-:100250001900036800FD076818001A6A002DE8A05D
-:10026000080090A204000981C000221169200055F5
-:1002700009200200A9200001376800000B68400037
-:10028000F07B86A3FFFEC0004811176800011F68BD
-:10029000640078004C11176864001F680200E8AD24
-:1002A000100070005211780039110981C000371117
-:1002B0007810A72278103D497810B5197810334E80
-:1002C000003285A00D009020C370000090006C11DA
-:1002D000C07086A00200C0006C11781084127810E3
-:1002E0009611CC7805A0C0007A1178104F1D10002F
-:1002F000801168008011781086211000801168003C
-:1003000080117810B91AE0006C117810BA4C78009E
-:100310006C118E119011AC24AC24BE49BE49AC24A2
-:10032000AC2478008E11780090117800921178003A
-:1003300094116800011261200000186084A001007F
-:10034000C0000112147805A0C000A711100002120D
-:100350007800011209205B52042105A0C00001129F
-:10036000092064520B200000147986A14200C000CD
-:10037000CC1116780920625264210B20000018600D
-:10038000C6701460CA701C618CA100FF206084A03C
-:10039000FF0005A1CE7078109A197800FF1114782B
-:1003A00086A01800C000D3117810781617780000C6
-:1003B00009206252042165A04000EF117E0C9C6070
-:1003C00060207810171A7F0C9F60000078104E177D
-:1003D00009200C000760030178107619C000FB119A
-:1003E00078109A19092062520B20000009205C52F3
-:1003F00004210B20000005A04000FF110120054052
-:1004000078008612780084127C00C3700000C770E8
-:100410000000CB700000CF700000C070BCA0C0FF17
-:10042000C00052123820790012128412E512A9126B
-:10043000FE120D131313A012661717139812AD12A4
-:10044000AF12B112B3126B179812291365139016DD
-:100450006017B512AF15CB15E7151216681576158E
-:100460008A159E15E913981297139D13A213A713CB
-:10047000AD13B213B713BC13C113C513DA13E613CC
-:100480009812981298129812F513FE130D14511425
-:100490005B146214A814B714C614D8144815581560
-:1004A00098129812981298125D15BCA0A0FFC00077
-:1004B0009812382084A01F0079005B12A417A71798
-:1004C000B7179812981231194E199812981298125B
-:1004D00052195A199812981298129812DB12F412A3
-:1004E0001F135B1386168217961798124718601908
-:1004F0000D1917191B19291998129812CA72C67169
-:100500000120064078008612CE73CA72C67101209F
-:100510000040C27068008712612000001B6001006B
-:1005200091200050E0008F12E000911268009112BB
-:10053000912080407C00C370014078008712C37016
-:1005400006407800871299204100A1204100A9208F
-:100550000500A35378008412C470C37004007A00AD
-:100560007800841278008412780084127800841253
-:1005700091200080C3700000C7705349CB70205099
-:10058000CF702020D3700700003FD6707920000084
-:100590001B78010031203000592000102920570419
-:1005A0005120700461207204B920FFFFC1200000B7
-:1005B0009120005091208040780055047810C41B91
-:1005C000C0009C12D875DC74DA75DE747800E8120D
-:1005D000292000002025D071C873CC72C470781017
-:1005E000FE1A40008412C370024078008412781012
-:1005F000C41BC0009C12D875DC74DA75DE747800F8
-:100600000113292000002025D071C873CC72C4705A
-:1006100078105E1B40008412C37002407800841280
-:10062000C471C87014210A2078008212C471142188
-:1006300078008212C7700700CB704100CF700600AF
-:10064000780084127810C41BC0009C12D875DC7628
-:10065000DA75DE7678002C13292000003025C4706E
-:10066000C872CC73D074C670CA72CE73D27405A02F
-:10067000400055130AA440003C13C80046130180F3
-:10068000927884A000FC40004A13CC7885A0010039
-:10069000CE7801200540780086129A7A9E7BA27D52
-:1006A000A67E967CCC7884A0FCFFCE787800591387
-:1006B000CC7885A00100CE78780084127810C41B15
-:1006C000C0009C12D875DC76DA75DE767800681387
-:1006D000292000003025C470C872CC73D474C67051
-:1006E000CA72CE73D67405A0400091130AA44000CC
-:1006F0007813C80082130180AE7884A000FC40000B
-:100700008613CC7885A00001CE78012005407800C2
-:100710008612B67ABA7BBE7DC27EB27CCC7884A0CB
-:10072000FFFCCE7878009513CC7885A00001CE78B8
-:1007300078008412092061520C21EC7A7800821230
-:10074000092041520C2178008312092042520C21C9
-:1007500078008312612040520C611062780082128E
-:10076000092045520C2178008312092046520C21A1
-:1007700078008312092048520C2178008312092046
-:1007800049520C217800831208790C7A7800821281
-:10079000C471078184A00F00038003800380E8A058
-:1007A0008054006A046884A008004000D713086BD6
-:1007B0007800D8130C6B78008112C4777810C519B3
-:1007C000912000801C6B146A91200180082778001A
-:1007D00081124C7978008312C4777810C519912062
-:1007E00000800869186A106B9120018078008112DE
-:1007F000C47182A11000C8007C1278107F23780099
-:100800008112C47182A11000C8007C1211204152D3
-:1008100004227E001221781038237F017800831291
-:10082000C47119200001042382A0060048001B1493
-:1008300011204914A920080078001F141120411428
-:10084000A9200800042206A140002A14108270008A
-:10085000281478001F1478007C12042382A006005C
-:100860004800331492A249147800351492A241141E
-:100870007E0211204252042212217F017E00781054
-:1008800044237F0178008312E803FA00F401EE02AA
-:100890006400190032004B00E803FA00F401EE0294
-:1008A0000400010002000300612040520C6110624C
-:1008B000C4700E60C87012607800821261204052CD
-:1008C0001461C47016607800831261204052C471B4
-:1008D000112004001F6019001920121286A128009F
-:1008E00040008314112005001F6019001920121206
-:1008F00086A1320040008314112006001F600C0006
-:100900001920222286A13C00C0007C1218607E00C3
-:100910001A61007884A00100C0009E140120FD042B
-:10092000042082A005004800961438009A1478002C
-:100930009E1428009A1478009E1419202222780010
-:10094000A01419201212B823781055237810334EB2
-:100950007F0178008312C47184A1CFFFC0007C1294
-:1009600011204852042212217E00781077237F0143
-:1009700078008312C47182A11000C8007C1211207B
-:10098000495204227E001221781066237F017800EC
-:100990008312C471C87284A1FDFFC0007B1284A2BF
-:1009A000FDFFC0007B12002108790A7800220C7A32
-:1009B0000E7878008212C471078184A00F00038032
-:1009C00003800380E8A0805419200000C872BCD2C4
-:1009D0004000E9149DA31000B4D24000EE149DA382
-:1009E000080000687E0026A240001115026A84A457
-:1009F00000204000FA149DA3100084A400104000C1
-:100A000000159DA3080084A40040400011150F812B
-:100A100084A2004040000D1578109923780011152C
-:100A200078108B2378001115CC72086806A240005C
-:100A30004015A4A2FF0061204052186186A1280041
-:100A40004000271586A1320040002D1586A13C00EC
-:100A50004000331582A4640048003D157800371526
-:100A600082A4500048003D157800371582A4430049
-:100A700048003D15C471C6717F02CA7278007D12AC
-:100A80000A6A9DA30A00046805A306687F020C6B2E
-:100A9000C47178008112C4777810C5199120008044
-:100AA000146A1C6B91200180C8701668CC701E6897
-:100AB000082778008112C4704C794E787800831230
-:100AC000C471C872CC7382A11000C8007C12781067
-:100AD000A72378008112C4777810C519912000806F
-:100AE000086A95A202000A6A91200180082778000E
-:100AF0008212C4777810C51991200080086A94A2E8
-:100B0000F9FF0A6A046805A04000851578106F2275
-:100B100091200180082778008212C4777810C519C7
-:100B200091200080086A95A204000A6A046805A062
-:100B30004000991578106F229120018008277800D5
-:100B40008212C47741200100492005005120200075
-:100B5000912000807810D219912001800827086A1E
-:100B600078008212C477C872CC73C677CA72CE730B
-:100B70007810521AC000C715186805A04000C715A4
-:100B800008277810B723C000C715177815009120E3
-:100B900001807C009120018078008412C477C677A0
-:100BA0004120210049200500512020009120008093
-:100BB0007810D219612040526F6003008267936001
-:100BC0000F00736000001778160078106F229120D4
-:100BD00001807C00C877CA77C477C677BCA700FFBE
-:100BE00091200080612040526F600200736000001D
-:100BF000826793600F001778170078106F2291209A
-:100C00000180412021004920040051201000912042
-:100C100000807810D219C8703668388784A71F0002
-:100C2000C0000616912001807C00CC7884A00300CF
-:100C3000C000361639200000412021004920040060
-:100C4000512008007810C5199120008008680DA86F
-:100C50000A6991200180388784A71F00C0001F16F1
-:100C6000BCA700FF3F8738873F8784A7000FC000DD
-:100C70001F169120008069200001306884A0400088
-:100C800040005F164B680400A9201400486884A047
-:100C9000040040004C1670004C16780043164B6858
-:100CA0000900A9201400486884A0010040005916DA
-:100CB0007000591678005016A920FA0070005F16CF
-:100CC00078005B1679200052177818006120405296
-:100CD0006F6001007360000093600F00CC7885A006
-:100CE0000200CE78086884A0FDFF0A681B684800EF
-:100CF000912001807C00CC7884A0FDFFCE7884A078
-:100D00000100C000821678109C1AC471C6714A791D
-:100D10007C007810C41BC0009C12D875DC74DA7596
-:100D2000DE7478009316292000002025C471C87352
-:100D3000CC72C671CA73CE727920005291200080A5
-:100D4000781080199120018040004A17A9200500E1
-:100D5000A120185291200080A141912001800920FA
-:100D6000200078107B194000B61678109A19780088
-:100D70004A17046084A000FF07800980400019170B
-:100D80007E0C682C912000807810801991200180C1
-:100D90004000EA16002C9E680981C000BE169F60C4
-:100DA00000007F0C7E0C18721C7320742475682C54
-:100DB0009C6865A0400018170920200078107B1956
-:100DC000C0000117046084A0FF0086A00200C000DC
-:100DD000EA16002D02607800D0167F0C7E0C9C6015
-:100DE00060207810171A7F0C9F60000078104E1753
-:100DF00009200C00086085A000020A6078107619AE
-:100E000078109A1978004A177F0C7E0C9C6060203D
-:100E10007810171A7F0C9F60000078104E17092079
-:100E20000C00076003011B6003007810761978102E
-:100E30009A1978004A177F0CC474C873CC72146076
-:100E400091200080177812007E0E712040526F7042
-:100E500005007370000076737A727E7482708770FA
-:100E60000000002C8A708F7000002EA030251C61BD
-:100E7000A26184A1600040003C177810D3487F0E27
-:100E80009665A6659A66AA66AF600000B36000002A
-:100E900078106F22912001807C00C370054078009B
-:100EA0008712A920050099201852912000800A532A
-:100EB00091200180002110A299A30000A1A40000AC
-:100EC000A9A500007C00C471C770000006797800F5
-:100ED0008412C471C671682178006D1769200010F2
-:100EE0000C6916A0042D10A2688D0981C0006F172F
-:100EF00085A20000C0007D17C370004078007F17F6
-:100F0000C3700340CA7078008712112067520C2208
-:100F1000C470038048008F177810513C84A1FF7F74
-:100F2000780093177810443C85A100801220780047
-:100F30008312C47178103B3C006101206752042089
-:100F400084A000800DA10462086378008112E47916
-:100F500078008312C471C6719821A1204200A92093
-:100F60000400A353A02199204200A9200400A35308
-:100F700078008412C470682079200052912000808B
-:100F8000781080199120018040004318076001000B
-:100F90000B6000002B6000001B600600106A8CA232
-:100FA0000F0084A2F000038003800380038005A16A
-:100FB000166084A200084000DE171B600A0078005B
-:100FC000E41784A200104000E4171B600C0084A208
-:100FD00000034000ED172B600100048004800480B2
-:100FE00085A001001E60236000002760000084A22D
-:100FF00000044000FA172B600000A920060080AC16
-:101000000B00A02080AD05009820A35384A200030C
-:10101000C0000F1846604A604E60526096609A6049
-:10102000780019180068466004684A60086E4E66C9
-:101030000C6D526596659A66146091200080177851
-:101040004200082C612040526F6005007360000070
-:10105000776000007B6000007F60000082608A6132
-:1010600084A200048E60912001807E0E71202000F9
-:1010700007700A0007700200037000007F0E9120C5
-:10108000008078106F22912001807C00C3700540A1
-:10109000780087127E0C7E0D7E0E7E0F91200080E0
-:1010A000712040527920000161201000A0706DA0D5
-:1010B00040000319046A94A2FF0086A207004000C2
-:1010C000621886A20F00C00003191C6984A1C00029
-:1010D0004000031984A18000C000D318246884A0B4
-:1010E00000FF85A019002668B071FF8140008918B3
-:1010F0007E0D69202000076810000869086806A1B5
-:10110000C0007A180C690C6806A1C0007F1884A181
-:10111000FF00C0007F187F0DB87884A01F80C0003A
-:101120008918487885A00C004A78B071FF8140008A
-:10113000AC18B37000007E0D69202000076818000D
-:10114000046884A00800C0009D18076808000468AF
-:1011500084A00800C000A418076802007F0DC461C5
-:10116000C862CC63C661CA62CE637E0E7120005233
-:1011700066726A7380AE19007F0E487884A00C00F6
-:10118000C000BA187810E147A3780000587884A00E
-:10119000FFED5A78B47080A0DA001A787F0F7F0EC6
-:1011A0007F0D7F0C9120018078008412246884A038
-:1011B00000FF85A019002668B87884A01F80C000B1
-:1011C000D918487885A00C004A78487884A00C008B
-:1011D000C000E218B071FF8140000119B370000037
-:1011E0007E0D6920200007681800046884A00800AC
-:1011F000C000F21807680800046884A00800C00056
-:10120000F918076802007F0D7800CB187F0F7F0E5A
-:101210007F0D7F0C9120018001200540780086120F
-:101220008079C671C47182A10300C8007C128279E2
-:10123000780084128079C671780084127479C6713E
-:10124000C47176797879CA71C8717A797C79CE71EE
-:10125000CC717E79780084127479C6717879CA71FC
-:101260007C79CE71780084120079C671C4710279DC
-:101270000120FD04042082A0050048004019380028
-:10128000421978004C19A8004C198CA10100C0002B
-:101290004A19B920222278004C19B920121278007C
-:1012A00084120079C67178008412092074520421D6
-:1012B000C670C4700A207800841209207452042178
-:1012C000C67078008412C471078184A00F00038067
-:1012D00003800380E8A08054146AB4D240007119DE
-:1012E0001120010078007319112000000C6B7800A8
-:1012F000811280AC01007810801B7C0080AC010062
-:101300007810201B7C00507865A040008819042CC0
-:101310005278632000007C007E0F792000525078C4
-:101320006DA040009819042D5278036800000768EA
-:1013300000000B6800007F0F7C00912000807E0F72
-:101340007920005250786220002C05A0C000A71917
-:1013500078108C2452787F0F912001807C007E0FC2
-:101360007920005250786A20002D52787F0F7C003F
-:1013700011200079527AEC7B19834000C21980A2B7
-:101380003100122010207800B919132000007C00D1
-:1013900084A7000F0B8084A71F00038003800380B5
-:1013A000038005A1E8A000557C007810C51900292C
-:1013B0002A68002A2E68086884A0EFFF0DA80A6931
-:1013C000092052520C21046805A04000041A16A1FD
-:1013D000C000EF196020006006687E010B2000004D
-:1013E0007800F219092000007E01046865A0400021
-:1013F000011A006006687810311A7810CB1C10684A
-:1014000001801268C000F2197F01026906697C0040
-:1014100065A04000161A08209C6005A04000131A21
-:1014200062209F60000065A07800091A5078527908
-:1014300062207C0065A04000301A08209C6005A056
-:101440004000251A62209F60000065A078001B1AEA
-:101450007E0F7920005291200080507852797F0FC2
-:101460006220912001807C00076003018F600000F2
-:10147000A9201C0080AC0500A02001200000A44091
-:1014800028681A602C6822607C007E0E7120405211
-:101490004C708CA00002C000501A88A080520A2D07
-:1014A00000804E7006A07F0E7C007810C519912038
-:1014B000008004681E7865A040009B1A7800631ABB
-:1014C000002C1E78006065A040009B1A0C6006A3EB
-:1014D000C0005D1A106006A2C0005D1A282C012011
-:1014E0005252042006ACC000741A7800991A04689D
-:1014F00006ACC000811A006065A00668C0008B1AA7
-:101500000368000078008B1A00641C786020026475
-:1015100086A40000C0008B1A002C02686025781099
-:10152000311A1B600500236020007810CB1C106866
-:10153000018050108C24126885A0FFFF7C003920A8
-:101540000000412021004920040051200800912082
-:1015500000807810D219388784A71F00C000A61A0F
-:10156000BCA700FF3F8738873F8784A7000FC000D4
-:10157000A61A912001807C0061200000186084A0E0
-:101580000100C000CA1A91200080E078E3780000D2
-:101590009120018005A0C000CB1A7C008CA0F0FF38
-:1015A0004000D11A78108C247900D31AE31AE61A75
-:1015B000EC1AF01AE41AF41AFA1AE41AE41A951C4E
-:1015C000B91CBD1CE41AE41AE41AE41A7C00781071
-:1015D0008C2478109C1A012001807800C31C012003
-:1015E00003807800C31C012004807800C31C78109D
-:1015F0009C1A012006807800C31C01200780780017
-:10160000C31C3020382182A721004800061B092076
-:10161000200000267810201BC0001F1BBAA7200046
-:1016200048001E1B40001E1B0827B0A6200090A2E9
-:10163000400099A30000A1A40000A9A50000780023
-:10164000001B06A07C00FF8140005B1B992030003E
-:10165000A0200C7084A0FF004000321B0770040023
-:10166000047084A00400C0002D1BA8211770000086
-:101670000B8112711A721E73227426750C7885A064
-:1016800001000270077001000120FD04042082A007
-:101690000500C8004F1B09202200042184A000403F
-:1016A000C000411B08700B80C800411B077002007E
-:1016B0008CA0E001C0005B1BA55306A003700000D6
-:1016C0007C003020382182A721004800661B0920B9
-:1016D000200000267810801BC0007F1BBAA72000C6
-:1016E00048007E1B40007E1B0827B0A6200090A269
-:1016F000400099A30000A1A40000A9A50000780063
-:10170000601B06A07C00FF814000C11B9820A12027
-:1017100030000C7084A0FF004000921B0770040092
-:10172000047084A00400C0008D1BA8211770000065
-:101730000B8112711A721E73227426750C7885A0A3
-:1017400000000270A653077001000120FD04042070
-:1017500082A00500C800B01B09202200042184A03B
-:101760000040C000A21B107084A000F04000B91B14
-:10177000077008007800BD1B08710381C800A21B18
-:101780000770020084A1E001037000007C000120CA
-:10179000FD04042082A00400C800CD1B7800D01BEB
-:1017A00006A07800D21B85A001007C007E0E71206F
-:1017B0000052082D5870026805A0C000DD1B5E7144
-:1017C0005A717F0E7C00082C5878026005A0C0007A
-:1017D000E71B5E795A797C009120008014617810B3
-:1017E0008021006984A10001C000352084A100028D
-:1017F000C00031201C6805A0C0003D20036000002F
-:10180000082C5C7865A0C000051C5A797800061C7D
-:1018100002615E799120018078108C227C007E0E1E
-:101820007120005258706DA040001A1C00685A7058
-:1018300005A0C000191C5E70FF8D7F0E7C007E0D20
-:101840007E0C7E0F7920005280AF16006020006071
-:1018500005A04000431C6820146806A3C000331C88
-:10186000286884A0FF0006A44000361C602D780084
-:10187000241C006805A00260C000421C80AF160056
-:1018800006AC4000411C002C5E78002D7F0F7F0CC1
-:101890007F0D05A07C007E0D7E0C7E0F792000520E
-:1018A00080AF16006020006005A040006B1C68201F
-:1018B000146884A0FF0006A340005E1C602D780021
-:1018C000501C006805A00260C0006A1C80AF1600B2
-:1018D00006AC4000691C002C5E78002D7F0F7F0C49
-:1018E0007F0D05A07C007E0D7E0C7E0F79200052BE
-:1018F00080AF1600602000606DA04000901C14684E
-:1019000006A34000831C602D7800781C006805A0A9
-:101910000260C0008F1C80AF160006AC40008E1C19
-:10192000002C5E78002D7F0F7F0C7F0D05A07C00C2
-:101930009120008069204052006886A0000040008D
-:10194000A31C91200180E37809007C008068BCA082
-:1019500000FF412021004920040051201000781090
-:10196000D219388784A71F00C000AC1C91200180C9
-:1019700001200A807800C31C01200C807800C31C61
-:1019800078109C1A01200D807800C31CC270612061
-:1019900000001B600100912080407C000460082C46
-:1019A00063200000847800808678887805A08A7992
-:1019B0004000DA1C022C7800DB1C8E797C00076862
-:1019C00003017E0C61200052082D6B200000846012
-:1019D00000808660886005A08A614000EF1C022DAF
-:1019E0007800F01C8E617F0C7C007810031D400095
-:1019F000021D7E0C9C6065A04000FD1C7810171A2B
-:101A00007F0C9F60000078109A197C008C7865A08C
-:101A10004000151D91200080847801808678042C78
-:101A20008E7805A0C000131D8A7800809120018067
-:101A30007C00A920100006A0048086808E81C8004A
-:101A40001F1D00A27000231D78001A1D86808E8144
-:101A50007C007E15A920100005A04000491D1AA198
-:101A6000C800491D13828D8148003A1D1AA1C80083
-:101A70003B1D7000411D78002F1D1AA10823108204
-:101A80007000411D78002F1D7E00003284A0FFF7FA
-:101A900080207F007F157C007E00003285A000083A
-:101AA0007800451D9479D07006A14000BD1D91209D
-:101AB000008071202000047005A0C000BD1D0870CA
-:101AC000087206A2C000BD1D86A20800C000BD1D90
-:101AD00071201000781080194000BD1D9C7A987B01
-:101AE000A47CA07D84A100FF40008B1D312000005C
-:101AF0000B81B5860B81B5860B81B5860B81B586CA
-:101B00000B81B5860B81B586002110A2002619A392
-:101B1000A1A40000A9A500007800951D07810480FC
-:101B2000048010A299A30000A1A40000A9A50000B0
-:101B30000920200078107B19912001804000B41DFD
-:101B400078109A19A8780080AA7886A00200C000B0
-:101B5000BD1D91200080E3780200AB780000CC78B6
-:101B600085A00300CE78912001807800BD1DAB7860
-:101B7000000078104921046084A00F007900C21D84
-:101B800071201000912001807C00D21DF41D1A1ECE
-:101B9000D21D371EE11DC91FE41FD21DEE1D141EEC
-:101BA0007F1EEE1E571F691FE01F39200004DC78DE
-:101BB00005A7DE78086005A70A60781064209C609D
-:101BC000DA78781031217C00DC7884A000014000B4
-:101BD000E81D7800D21D1C6085A080001E60780082
-:101BE000FB1D7810C41BC000D21D78106321DC7867
-:101BF00084A000014000FB1D7800D21DDF780000AA
-:101C00000460078084A0FF00D27801809F600000FC
-:101C10004000111E781064204000111EDC7885A061
-:101C20000001DE787800131E781088207C00781080
-:101C3000C41BC000D21D78105F21DC788CA0000E80
-:101C4000C000231E84A00001C000251E7800D21D04
-:101C500078106420C000361E04618CA1FF0086A1AC
-:101C600007004000212086A10F00400021207810AD
-:101C700088207C00DC7884A0000140003E1E7800B3
-:101C8000D21DDF780000146711200100A920010097
-:101C9000186084A0FF0005A04000611E1120010013
-:101CA000BCA700FFA92020008EA001004000611EFB
-:101CB0003920000011200200A92000018EA002009E
-:101CC0004000611E78007C1E7810C51991200080AC
-:101CD0002B6800002F680000086884A0DEFF0A68F7
-:101CE000E8AD1000912001807000751E7800631E21
-:101CF000118240007C1EA92000017800631E78102C
-:101D00009A197C0001206752042084A000804000C2
-:101D10004920146178108021006984A101004000ED
-:101D2000A01E286084A0FF00C0004120006884A09D
-:101D3000010040004920036800000B6800000768AC
-:101D4000000078005120112001002060F4D04000F4
-:101D5000A81E95A20200C4D04000AD1E95A20800A6
-:101D6000CCD04000B21E95A200041C6084A00200EA
-:101D70004000B91E95A204002C608CA0FF0082A137
-:101D8000020048004D2082A11B00C8004D204000E9
-:101D90004D200E692C6007808CA0FF0082A10200FC
-:101DA00048004D2082A11B00C8004D2040004D205E
-:101DB0001269306005A0C000DC1E01201E000080FA
-:101DC0001668286084A0FF0040004920066828604B
-:101DD000078084A0FF00400049200A68026A78005A
-:101DE000512001204052042086A00700C000531F4C
-:101DF00001206752042084A0008040004920146123
-:101E0000781080210120525204201020FF824000CF
-:101E10000E1F80A00500042084A0FF0006A1C000C2
-:101E2000531F91200080046A086B186484A4030087
-:101E300040002D1F28618CA1FF000180C000231FDE
-:101E4000002110A24800531F78002D1F0180C00000
-:101E5000531F002112A24800531FFF824000531F4E
-:101E600084A40C004000471F28610F818CA1FF0053
-:101E700082A00400C0003F1F002118A34800531F88
-:101E80007800471F82A00400C000531F00211AA33E
-:101E90004800531F306005A040004D1F00801668A9
-:101EA000066A0A6B91200180780051209120018000
-:101EB00078004D2014617810802191200080086BFB
-:101EC00018834800651F0A6B91200180780060200C
-:101ED0009120018078004D202460078084A0FF00BD
-:101EE0004000871F86A08000C000C71FA9200800EF
-:101EF0006920107691200080006884A0FFFC0268B1
-:101F0000E8AD08007000831F7800791F91200180E0
-:101F100078005120286015A04000C71F1461781078
-:101F200080217E0C7E0DE8AD0700912000800068C6
-:101F30000DA04000C31F06A240009E1F682178002C
-:101F4000941F602100600268682C7810AC197F0D26
-:101F500018680DA04000BB1F602000621A6A1C6A4E
-:101F600002621E6878108919A02D9821A9203100DD
-:101F7000A353602D7810CB1C7800BE1F086800802A
-:101F80000A68912001807F0C7800602091200180F8
-:101F90007F0D7F0C78004920146178108021006843
-:101FA00084A001004000392091200080046A108242
-:101FB0004800DC1F066A9120018078006020912093
-:101FC000018078004D207810C41BC000D21D146120
-:101FD00078108021BE60BB600000006984A1080009
-:101FE0004000F31F206085A00001226084A1010051
-:101FF0004000492084A10001C000352084A10002D6
-:10200000C00031201C6805A0C0003D20046084A0F1
-:10201000FF0086A00F00C0000C2078106321DF783D
-:1020200000000460078084A0FF00D27801809F60D8
-:102030000000400021207810642040002120DC783E
-:1020400085A00001DE787C00D7780000DB780000F6
-:10205000246084A000FF26607810AC3A40004F1D39
-:102060007810E91B78004F1D0920170078005320D5
-:1020700009200E0078005320092007007800532023
-:10208000092035007800532009203E0078005320B5
-:10209000092004007800532009200600780053200E
-:1020A000092016007800532009200100246084A034
-:1020B00000FF05A12660912000807810CB1C9120A4
-:1020C000018078004F1D78109A1978004F1DD47840
-:1020D0006DA0C0006F20002CD678DA789F600000D9
-:1020E00078007B20002C9E689F600000D678002D31
-:1020F0000260D87806ADC0007B200260D0780180F5
-:10210000D278C0008720DC7884A0FFFEDE78D87803
-:10211000602006A07C002EA030251C61A26184A155
-:10212000FFE11E6084A16000400097207E0E7810C1
-:10213000D3487F0E9665A6659A66AA66AF600000D2
-:10214000B360000014677810C51991200080A0606A
-:1021500084A00080C000BE20086884A00100400068
-:10216000BE20912001807810311A912000807810D3
-:10217000CB1C91200180D7780000DB78000078002C
-:102180003021246096A00100C000C5200080266098
-:10219000106A14689120018002A24800D4204000F7
-:1021A000D420392000027810312178003021082C09
-:1021B00091200080A06084A0008040000121006880
-:1021C00065A040000621046A7E0E71204052007016
-:1021D00084A001004000FB20487006A2C000FB2044
-:1021E000046B1C2360210263002305A0C000F620BD
-:1021F0000269602202617F0E78000D216021026277
-:1022000006697F0E78000D21006865A04000062158
-:1022100002610269C0000A210669602103600000B2
-:102220006021A06084A0008040001721086884A07D
-:10223000FCFF0A681068008012689120018008681D
-:102240008CA040004000262186A040000A6878103B
-:10225000421A9120008078106F2291200180DB7853
-:102260000000D77800007C00086005A70A60912074
-:1022700000807810CB1C91200180D87865A04000A8
-:1022800044219C60DA789F60000078003421D77880
-:102290000000DB7800007C009079947800800AA12F
-:1022A000C800502106A09678D270047805A040009E
-:1022B0005E2101800678C0005E2168005E219120C9
-:1022C00080407C00392077217800652139207D21EC
-:1022D000042705A04000762100AC6820086B0C6C38
-:1022E0001069146A0A690E6A126B166C38877800D6
-:1022F00065217C00030009000F0015001B00000091
-:1023000015001B0000007E0C78103B3C682C7F0CF5
-:102310007C001000F7216800F72129200000CB780D
-:1023200000008C7865A04000F0210920745204213F
-:1023300084A001004000BE21046086A00301C0000B
-:10234000BE21186005A0C000BE21146005A0C00019
-:10235000BE217E0D69200000186884A00100C00025
-:10236000BD210C60C6701060CA70C37020801B68ED
-:102370000100912080407F0D7810F21C7800F5213B
-:102380007F0D7810F8214000F021046294A2FF0034
-:1023900096A203004000D021046296A21001C00062
-:1023A000DE21CB780100046294A200FF1782118223
-:1023B0004000DE21FF85C000F021108202A2C8008B
-:1023C000F0217E05781007227F054000EB21E078A0
-:1023D00086A003004000F0217800DE212885C8781F
-:1023E00005A040008E21FF854000F721912080400C
-:1023F000B078D6707C00AC7BB079D47002A1C000FC
-:102400000122002305A07C004800052202A37C00D5
-:1024100002807C000120FD04042082A00500C80089
-:1024200021229120008071202000047005A0C000AE
-:1024300056220870087206A2C000562286A2080022
-:10244000C00056227120100078105B220920200065
-:10245000046086A00301C0003022286005A0C000EF
-:10246000302209200C007810761940004922C478E7
-:102470000080C67886A00200C0005622912000800D
-:10248000E3780300C7780000CC7885A00003CE78FD
-:102490009120018078005622C77800007810F21C45
-:1024A000AC79B07800800AA1C800542206A0B278A6
-:1024B00006A071201000912001807C00078104801B
-:1024C0000480B87AB47BC07CBC7D10A299A30000C4
-:1024D000A1A40000A9A500007C0009205B52912066
-:1024E00000800A207E0F7E0E71204052007086A070
-:1024F0000000C000892209201252042105A0C0005A
-:10250000892279200001307884A0C000C00089228F
-:10251000180089221B784B007F0E7F0F7C007E0FF6
-:102520007E0E7120405291200080007086A0000035
-:10253000C000A22279200001307884A0C000C00031
-:10254000A2221800A2221B784D00912001807F0E4C
-:102550007F0F7C007E129120002371204052792051
-:1025600000014B780F009800B52238787800AE2231
-:10257000A9204000007882A004004800BE22A920C3
-:1025800060009B780000AF780000AF78000070001A
-:10259000C8227800C022007882A004004800D72218
-:1025A000B77093001920F04F781013232F7001801B
-:1025B0007800E322B77000001920704E78101323C2
-:1025C0001920AF4E781013232F7000800370000085
-:1025D00078102024047084A00F007E010920FD04DF
-:1025E0000C218AA105004800F8223800FE2285A0AF
-:1025F0008062780000232800FE2285A08062780097
-:10260000002385A0C0627F0106780F7804B243786A
-:10261000D800537880000B7808004770080053708A
-:102620007F524F7000007F1200207C007E137E14CA
-:102630007E157E04A1202B01042305A09A7840007A
-:1026400033231883242318839823A82484A400FF09
-:1026500040002B2382A40001A92000012020A653C2
-:1026600005A0C00022231833780019237F047F15AA
-:102670007F147F137C008CA10F0011200101042224
-:1026800084A0F0FF05A11220781020247C001120E6
-:102690000101A92009000B8170004D237800482317
-:1026A0008CA1000E042284A0FFF105A112207C0061
-:1026B00009200101A9200500138270005E23780023
-:1026C000592394A2E000042184A01FFF05A20A2040
-:1026D0007C0011200101A9200C000B8170006F23E8
-:1026E00078006A238CA100F0042284A0FF0F05A1CA
-:1026F00012207C0011200201042284A0CFFF05A13A
-:1027000012207C000381038080A020007E0C6120C9
-:1027100000019A60AC62AC637F0C7C000381038093
-:1027200080A022007E0C612000019A60A46084A039
-:10273000DFFFAE607F0C7C000381038080A022005D
-:102740007E0C612000019A60A46085A02000AE602C
-:102750007F0C7C000381038080A020007E0C612020
-:1027600000019A60A460AE621020A460AE631820DD
-:102770007F0C7C00912000807E0C7E0E186805A0E6
-:102780004000FE2361200076781006244000E823F4
-:10279000A9200000612000757E0C781006244000FE
-:1027A000D6237F0C608C7000D4237800C923780076
-:1027B000FE237F0082A000757120405286708271D6
-:1027C000012004006E7093700F0073700000781089
-:1027D0006A227800FA23C06005A0C000FE237120A1
-:1027E00040528271002C8A70012006006E70937036
-:1027F0000F007370000078106A220120000078003A
-:102800000024012001009120018005A07F0E7F0C93
-:102810007C00042C05A040001D2460200C6006A351
-:10282000C0001A24106006A2C0001A24146006A179
-:10283000C0001A2406A078001F2400607800072436
-:1028400085A001007C00112041520C228CA10F00B8
-:1028500011203B01042284A00001400036242120E5
-:1028600004FF22210B810B810B810B818DA1000FB5
-:1028700004217C007E0EE4688CA0200040008A24A5
-:1028800084A00600C0008A241460078084A00F0082
-:10289000038003800380F0A08054047084A00A00A9
-:1028A000C0008A24087194A100FF40008A248CA1F2
-:1028B000FF0001200C0006A140007124012012003D
-:1028C00006A1400075240120140006A140007924CF
-:1028D0000120190006A140007D240120320006A13C
-:1028E0004000812478008524092012007800872484
-:1028F0000920140078008724092019007800872413
-:10290000092020007800872409203F0078008724D0
-:1029100011200000002105A20A707F0E7C006800D3
-:102920008C2491200080712000007E00187084A00B
-:102930000100C00093247F0071201000CA707F0046
-:10294000C670C3700280DB704107DF700600712023
-:1029500000001B700100912080407800AA247E10A6
-:102960007E007E12912000233C7F587E307C387D93
-:10297000C277C674CA76CE7594A53F009CA40300A6
-:1029800084A40F007900C124D324D324D3240D2898
-:10299000093AD12402250C25D124D124D124D124D3
-:1029A000D124D124D124D12478108C24078584A06B
-:1029B0001F007900D82416250D28C729C42AEC2A1F
-:1029C0008C2D37309A30FB3080313832D6320225A8
-:1029D000E9280C30F824AC3DCC3D8F3F9B3F744040
-:1029E000F824F82449414D41AA3DF824FA3EF82440
-:1029F0005E3C0C25F82478108C241800B1247F123A
-:102A0000912001807F007F107C001920494F7810B1
-:102A100013232F7001001B784F007800FA2419202F
-:102A2000AF4E781013232F7000801B78CD007800F4
-:102A3000FA24427209200F520B20000084A50100E5
-:102A4000C000723C4000332578108C2403700000D5
-:102A50004B70000043700000377000007810E039C0
-:102A60001800B12409200F520B200000687005A047
-:102A7000C000FE256C7084A0070079003C25352637
-:102A8000442550256D258F25DC25B5254425781056
-:102A9000C839092048007810D82EC0004E25037090
-:102AA00004007800FA247810C839C0006B258070C3
-:102AB000078082789B781000AB780C009B786000D0
-:102AC000AB7801005B7804000920DD007810CC2E83
-:102AD000C0006B250370040093700F007800FA2487
-:102AE0007810C839C0008D258071078182789B7865
-:102AF00010008CA11F008DA1C000AA79AB78060040
-:102B00009B786000AB7802005B7804000920DD0050
-:102B10007810CC2EC0008D250370040093700F0038
-:102B20007800FA247810C839C000B3258071078175
-:102B300082789B7810008CA11F008DA1C000AA791B
-:102B4000AB7820008471AA79AB780D009B78600087
-:102B5000AB7804005B7804000920DD007810CC2EEF
-:102B6000C000B3250370040093700F007800FA24AE
-:102B70007810C839C000DA258071078182789B7887
-:102B800010008CA11F008DA1C000AA79AB780600AF
-:102B90009B786000AB7802005B7804000920DD00C0
-:102BA0007810CC2EC000DA2588708B700000682069
-:102BB0004A700370020093700F007800FA247810B6
-:102BC000C839C000FA2488706820146F7810BD38A6
-:102BD000502C78107A3A9B781000146884A01F005B
-:102BE00085A08000AA781C6E412001008C7084A012
-:102BF0000004012004004000FC25012006007800AC
-:102C00001D277810C839C000FA249B78100068701E
-:102C10006820146F7810BD38502C78107A3A08600C
-:102C200085A010000A60246805A040001C2682A030
-:102C3000060048001A2678001C2627680500146B39
-:102C40009CA31F009DA3C000587084A0008040007A
-:102C50002A2684A6010040002C269CA3BFFFAA7B45
-:102C600031202000412001000120030078001D27B1
-:102C70001800B1244C7485A4000040004F2680A0A9
-:102C800080523020507108812AA148004626092030
-:102C9000805264210465FF85C00060262184C00045
-:102CA00040265271037000004B700000407005A078
-:102CB0004000723C7800FA244C76B0A680525071E5
-:102CC000002678004B265271682558254A75502CED
-:102CD000346085A00000C0005D2608673A7784A7AD
-:102CE0003F034000962684A72100C0005D2684A7EC
-:102CF000020040007F2684A7040040005D26BCA798
-:102D0000FBFF0A6784A70800C0005D2684A71000A7
-:102D1000C0005D2684A70002C0005D2684A70001D4
-:102D200040009626186005A0C0005D26BCA7FFFEE7
-:102D30000A67236800001C6E84A60E00186140001C
-:102D4000A6261C6002A14800A9264000A9267800FA
-:102D50005926FF81C0005926C368000084A780005F
-:102D6000C000B1260C702260BCA77FFF0A677810F4
-:102D70007A3A1800B1249B78100046A07810C83920
-:102D8000C000FA24146B9CA31F009DA3C0005870C0
-:102D900084A000804000CD2684A601004000CF26FC
-:102DA0009CA3BFFF84A610004000D5269DA3200051
-:102DB000AA7B408884A60E00C000E026BDA71000B4
-:102DC0000A6778001B2758718CA100084000CB349B
-:102DD0001120200084A60800C000F126108284A6DD
-:102DE0000200C000F1261082AA7A40887810E039EB
-:102DF000146A0C6108818CA1FF00E0A10075642CAD
-:102E0000FF8C40001227146006A2C000FC26B860A8
-:102E10000180BA60C000F7267E0C602A086085A099
-:102E200000010A607F0C780035267810C839C00090
-:102E3000FA24602A0E61AA794088327101200100CB
-:102E40007E005C7184A118004000382784A1100026
-:102E500040002B277810D036C0005B2784A10800E3
-:102E600040003827A06984A10006C00038277810E8
-:102E7000BB3578005B27A06984A1000840004F277C
-:102E80007E0C7E026029006085A000200260046143
-:102E90008DA1100006617F027F0C7810D036C00033
-:102EA0005B27A06984A100024000572778100C36E8
-:102EB00078005B2784A10004C0003427A06984A1A6
-:102EC00000104000662714698CA100FF0F81781064
-:102ED0008B237F0002708CA6E00084A66000400077
-:102EE000742786A06000C00074278DA10040FF8871
-:102EF000400079278DA104005A79B6699B7860005B
-:102F00000028AA789B78610018688DA0008084A0B2
-:102F1000FF7F1A698CA680004000982797700000F8
-:102F20008AA00D00500096278AA00C0096710120FF
-:102F30000C000C809A71AA7808800C814000D13472
-:102F40008CA1F800C000D1347E157E137E14A12020
-:102F50002B019B7800000080AC8080AD0B00982096
-:102F6000A6537F147F137F15146807808278946DB1
-:102F7000D67DDE7D986ED27EDA7E7810C839C000AC
-:102F8000CF272C7003804800C8271920AF4E781037
-:102F900013232F700080307884A0C000C000CF279A
-:102FA0009800D727086084A0EFFF0A607810E03906
-:102FB00078002325007284A2070086A00100C000CB
-:102FC000E4271B784F007810E0397800F527B46AC1
-:102FD00095A200205A7A1B784F007810E0390072D1
-:102FE000002505A64000F52784A2070079100328D4
-:102FF00080AD0900367084A2070086A00100C000E1
-:10300000FA24186000801A607800FA240B284B4BD1
-:103010004B4B3A4B4B4B0B283A4B0B2878108C24DC
-:103020007810C8397E0F79200052CC787F0F84A0A9
-:103030000100400031286C7086A00100C0002028EB
-:103040006E707800C4286C7086A00500C0002F2820
-:10305000887068201B68040017680000206885A03D
-:10306000080022686F700000112004006C7186A1B6
-:1030700001004000522886A10700C0004228092014
-:1030800038520B20050078005228092013520421E1
-:10309000092012520A20092038520B2001006F70BB
-:1030A000000073700100780054286F7000007810E1
-:1030B00087487E15A9201000392000007810B0370D
-:1030C000B8A700017000632878005B287F150070A6
-:1030D0007900672895287C287C286F2895289528D2
-:1030E0009528952821205A52042405A040009528AF
-:1030F00006ADC0007C280068222078008C2820685B
-:1031000084A00100C0008828146F7810BD387810A2
-:10311000A23478008C2860706020006802601A6A0F
-:1031200017680000206885A0080022687810DC1C61
-:10313000212000767810D12821205A527810D128E9
-:103140007E15A9200000212000757810D128208448
-:103150007000A9287800A2286120005521200200D3
-:10316000A920000118601061FF814000B82802A169
-:103170005000B82812601B600000E0AC1000700026
-:10318000C0287800AF282184C000AD287F159C702E
-:1031900084A000804000CB287810CE3A0370000055
-:1031A0004B7000007800FA247E04042405A040003F
-:1031B000E528682000687E001A6A17680000206809
-:1031C00085A0080022687810DC1C7F007800D328D6
-:1031D0007F04232000007C0082A203005000EF281F
-:1031E00078108C2400237900F228F5286829852995
-:1031F00082A202004000FB2878108C246C706F7053
-:10320000000093700000790002290A290A290C297C
-:103210004029D7340A2940290A2978108C2480773C
-:103220007810B0378077BCA7000F7810BD381860D1
-:1032300005A0400037292120007609200400112034
-:1032400010007810A029400037297E15A920000021
-:10325000212000757E040920040011201000781040
-:10326000A0297F0440003629208470003629780088
-:1032700027297F15388784A71F00C00012297800EE
-:1032800023257800232580777810BD38186005A0A5
-:103290004000662921200076092005001120200029
-:1032A0007810A029400066297E15A9200000212061
-:1032B00000757E0409200500112020007810A02947
-:1032C0007F04400065292084700065297800562914
-:1032D0007F1578002325002279006B296E2970293B
-:1032E000702978108C24092012006C7086A00200CE
-:1032F0004000792909200E00186884A00080400051
-:103300007F291A696F7000007370010078005639C8
-:103310000022790088298D2970298B2978108C2426
-:1033200078108748007086A00100C00067347810CC
-:10333000B834086084A0EFFF0A6078105A34400067
-:10334000673478003526042405A04000C32968208E
-:10335000042D7E00146806A74000AF29202D7F00B1
-:103360007800A1297F0022201A69176800002068D0
-:1033700005A222687810DC1C1060018012600860D1
-:1033800084A0EFFF0A607810B8347C0085A00100AB
-:103390007800C22900237900CA29CF29CD29682ABB
-:1033A00078108C24EC7884A00100C000E329007020
-:1033B00086A00400C000DB297800062A7810B83403
-:1033C000086084A0EFFF0A6078006734E47805A005
-:1033D000D000062A1800FA24082084A03000C0007B
-:1033E000F2291B784F007800FA24EC7884A00300BF
-:1033F0004000EE29002184A007007900FC293F2A23
-:103400004A2A302A042ABB39BB39042A592A78109F
-:103410008C24007086A00400C000202A6C7086A056
-:103420000200C000162A11200200192000007800B6
-:10343000E9286C7086A006004000102A6C7086A0F7
-:1034400004004000102AE47984A1300040002A2AB8
-:10345000EC7884A00300C0002C2A78000C300120F6
-:1034600003007800A02D186884A000804000372A4F
-:103470001B681D0078108F372B7808301B7856009A
-:103480007800FA24186884A000804000462A1B684F
-:103490001D0078108F3778008639186884A0008066
-:1034A0004000512A1B681D0078108F372B78083098
-:1034B0001B78CA007800FA24186884A000804000B5
-:1034C000602A1B681D0078108F372B7808301B7816
-:1034D0008F007800FA2484A50F00C000852A0070B0
-:1034E00079006F2A2325792A772A6734673467346D
-:1034F0006734772A78108C247810B834086084A058
-:10350000EFFF0A6078105A3440006734780035269F
-:10351000E47805A0D000062A1800062A082084A016
-:103520003000C000942A1B784F007800FA24EC7811
-:1035300084A003004000902A002184A107007900A4
-:103540009E2AB02AB42AA82AA62ABB39BB39A62AA1
-:10355000B13978108C24781097372B7808301B7885
-:1035600056007800FA24781097377800863978105A
-:1035700097372B7808301B78CA007800FA24781027
-:1035800097372B7808301B788F007800FA240023B7
-:103590007900C72ACC2ACA2ACE2A78108C2478002F
-:1035A00080311B680800A3780000E47984A1300012
-:1035B00040008031EC7884A003004000803184A179
-:1035C00007007900E02AE82AB42A302A5639BB39A4
-:1035D000BB39E82AB13978106A397800FA2482A216
-:1035E00005005000F22A78108C2400237900F52A77
-:1035F000F82A4D2D5B2D00227900FB2A152B022B7A
-:10360000152B002B322D78108C249B781800A8786D
-:1036100084A0FF0082A0200048006B378AA004002D
-:10362000C8006B377900112B6B376B376B37193745
-:103630009B781800A87984A180004000262B780090
-:103640006B37007005A0C0001C2B1120040078000F
-:10365000E93284A1FF008AA01000C8006B3779000E
-:103660002E2B402B3E2B582B5C2B172C6B376B379C
-:10367000192C6B376B372E2D2E2D6B376B376B3725
-:10368000302D78108C2484A6001040004D2B012092
-:103690000005008000803A781B788D007800FA24BD
-:1036A000186884A000804000562B1B681D0078001D
-:1036B000442B780056391B681D0078007B37206941
-:1036C000226984A60018C0009D2B206884A00100F8
-:1036D000C000A52B186886A00800C0006E2B1B68D0
-:1036E000000084A600044000132C84A68000400043
-:1036F000992B97700000186884A03F008AA00D00E5
-:103700005000992B8AA00C00967101200C000C80AF
-:103710009A719B786100AA787E157E137E14A12091
-:103720002B019B7800000080AC8080AD0B009820BE
-:10373000A6537F147F137F151B7858007800FA2456
-:1037400084A600104000A52B1B7865007800FA24A1
-:1037500084A6600040000F2C84A6000840000F2CB7
-:1037600084A60080C000B32B7800CB2BB4A6FF7FCB
-:103770005A7EB66EDC7AD879D0781B80C800BE2B12
-:10378000008084A03F0008A191A20000986B002156
-:1037900002A3B268946B002203A3AE6884A6004023
-:1037A0004000D32BB4A6FFBF5A7EB66E007086A031
-:1037B0000300C000E02B78103D4978103A4B1B788D
-:1037C00064007800FA2406A07810414CB06AAC6915
-:1037D000986C946B002205A14000EF2B002222A4DC
-:1037E00000211BA3AA6CD27CDA7CA66BD67BDE7B85
-:1037F000002305A4C000012CB5A600405A7EB66E79
-:103800001B7864007800FA241B786400002215A15C
-:10381000C0000B2C78104B4B7800FA247810964B94
-:103820007800FA241B7865007800FA241B78580089
-:103830007800FA2478108C2478007A2C206984A1EE
-:1038400000014000312C8CA1FFFE22697E0C5470D7
-:103850006020006084A0FFEF0260046084A0F5FF98
-:1038600006607F0C7800692C84A100024000692C5E
-:103870008CA1FFFD22697E0C54706020006084A042
-:10388000FFDF0260046084A0EFFF06600820482C80
-:103890007F0C84A108004000692C7810B93878109A
-:1038A000BB35FF884000692C9B7860000028AA780F
-:1038B000587EB5A604005A7E84A60004C000632C7E
-:1038C0002B7808301B7856007800FA242B780830C3
-:1038D0001B7865007800FA24587E84A60004C00096
-:1038E000722C1B7858007800FA241B786500780049
-:1038F000FA24780073377800733719200000907924
-:103900008CA10700C000882C206884A00001400022
-:10391000782C092008009B781000A87894A0FF005C
-:1039200086A20100C000BF2C0023A87C00A41820A0
-:1039300002A14000B72C48009C2C7800B92C80A331
-:10394000020002A1C800B72C20698CA1FFFC2269EB
-:103950007E0C54706020006084A0EFEF0260046071
-:1039600084A0E5FF06607F0C587EB4A6FBFF5A7E5C
-:1039700078006A2C78001B2CA824A87AF000B92CB7
-:1039800078008A2C84A2F00086A02000C0001F2DA1
-:1039900018831883002302A14000CF2C4800CF2CAD
-:1039A00078001C2D86A223004000782C1C6884A07F
-:1039B000F1FF1E68587E84A6F1FF85A0100030201C
-:1039C0005A7E086085A010000A607E0C547060204A
-:1039D00004600820482C7F0C84A110004000F32CC8
-:1039E0007810B9387810D0367800022D7E0C5470DB
-:1039F000602004600820482C7F0C84A1080040004F
-:103A0000692C7810B9387810BB35FF884000692CD4
-:103A10009B7860000028AA78B5A604005A7E84A688
-:103A20000004C000162D2B7808301B785600780053
-:103A3000FA242B7808301B7865007800FA24A87ADD
-:103A400078008A2C1883002302A14000282D48000A
-:103A5000282D78008A2C84A28000C0007B37780053
-:103A6000733778007B3778006B379B781800A8781D
-:103A700084A0FF008EA0010040003D2D78108C2412
-:103A8000A87A94A2FF00A87884A0FF008AA004006E
-:103A9000C8006B377900492D6B3708356B376536B1
-:103AA00082A20000C000532D78108C2478108F372C
-:103AB0002B7808301B7865007800FA2482A2030076
-:103AC000C000612D78108C2484A40080C000842D57
-:103AD0006C7005A040006B2D78108C24146F8277D9
-:103AE000BCA7000F7810BD38086085A021000A60CF
-:103AF000388784A71F00C0006F2D781093376F7030
-:103B00000200092038520B2009007800862D781019
-:103B10009F372B7808301B7865007800FA2482A242
-:103B200004005000922D78108C2400237900952DEC
-:103B3000982D812EB42E86A2030040009E2D781071
-:103B40008C24012000007E00C06805A04000A72D45
-:103B500003700300A06884A000204000B02D08601E
-:103B600085A002000A607F003E70007084A00700FC
-:103B70007900B72D2325C12DC12DB62FF22F232576
-:103B8000F22FBF2D78108C2484A60010C000C92D00
-:103B90007810874840005B2E68788CA0FF004000BA
-:103BA000112E86A10800C000E02D7810B8340860FE
-:103BB00084A0EFFF0A6078105A344000112E78106C
-:103BC00087487800F82D86A12800C000112E7810B3
-:103BD0008748086084A0EFFF0A60186005A04000D5
-:103BE000F82D01801A6005A04000F82D018005A085
-:103BF0004000F82D1E60206884A0010040002325AD
-:103C0000206884A0FEFF226860707E0C602000683F
-:103C100002607F0C0460026805A0002DC0000E2E1B
-:103C200002600660780023257E017810E52E7F0172
-:103C300084A600DF1E682B680000146FFF8140001F
-:103C40005B2E86A10200C0005B2E84A60008C00087
-:103C50002E2E84A6600040002E2ED878DC7A2E68A6
-:103C6000326A206884A00008C0005B2E178794A2E7
-:103C70000F0013821382138290A2805490A200003E
-:103C80001C2284A30001C000442E78004A2E10821A
-:103C9000042285A018001220118284A30004400091
-:103CA000572EA06884A00001C000572E7810692FFD
-:103CB00078002325086085A002000A60166918684C
-:103CC00084A000804000632E3C701A688CA600DF40
-:103CD0001E697810A9347810B834C000702E0860BE
-:103CE00084A0EFFF0A60206884A00100C000792E44
-:103CF0007810A23478007D2E607060200068026029
-:103D00007810DC1C7800232582A204004800872E4E
-:103D100078108C24002279008A2E852E8E2E9B2EE0
-:103D20008E2E007086A005004000972E78108F37E9
-:103D30002B7808301B7865007800FA24907807808B
-:103D4000018084A0070080A018009A78A8798CA12F
-:103D5000FF0086A103004000B02E86A100004000B5
-:103D6000B02E78006B371B7865007800FA24206845
-:103D700085A004002268FF82C000BF2E78108F3714
-:103D80007800C62E11824000C42E78108C24781042
-:103D90009F372B7808301B7865007800FA242C7048
-:103DA00003804800D62E1920AF4E781013232F70B1
-:103DB00000807810E039307884A0C000C000E22E86
-:103DC0001800E22E1A7906A07C0085A001007C0074
-:103DD00084A66000C000EF2E2F680000336800004A
-:103DE0007800682F84A60008C000112FB46884A052
-:103DF000004835A684A60008C000112F9869946A6F
-:103E00002E69326A3C7005A0C000092F002205A16E
-:103E10004000102F3F701500007086A00600400083
-:103E2000102F781087487C0084A620004000332F94
-:103E300084A6004040001F2F2F6800003368000058
-:103E40007800092FB46884A0004835A684A60040F5
-:103E5000C000192F3C7005A0C0002D2F3F70150029
-:103E6000D879DC7A2E69326A7800092F84A600405E
-:103E700040003D2F2F680000336800007800092FB4
-:103E8000B46884A0004835A684A60040C000372F3F
-:103E90003C7005A0C0004B2F3F701500D879DC7A2C
-:103EA000D078FB80C800522F008084A03F0008A17A
-:103EB00091A200002E69326A002105A2C0005F2F86
-:103EC0007800092F007086A006004000682F781047
-:103ED000414C7800092F7C00086085A000020A6030
-:103EE00084A300024000752F086085A002000A60CC
-:103EF0001B6806008F68000093680000306A2C6918
-:103F00003E6A42692F68030033680000376820006A
-:103F1000976800009B682000B3680000AF6800004D
-:103F200000707900902F23259A2FA32F982F982F78
-:103F3000982F982F982F78108C24206884A0010047
-:103F4000C000A32F7810A2347800A92F6070502CE5
-:103F5000602000680260602A21205A52042405A0D3
-:103F60004000B22F20207800AB2F222D6B200000C4
-:103F70007C007810A9347810B834086084A0FFFD64
-:103F80000A602B6800009B780E00146F176802000F
-:103F90007810894C84A600084000CF2F1C698DA1A1
-:103FA00000201E69186884A000804000DF2F687818
-:103FB0008CA0FF004000DD2F1B681E007800DF2F63
-:103FC0001B68000021205A52042406AD4000E62F51
-:103FD000607400682220C36800003C6A4069326A4D
-:103FE0002E697810DC1C780023257810E52E2B68CC
-:103FF000000001200E00146F7810E6398CA0FF003D
-:104000001669186884A00080400005303C701A686A
-:104010008CA600DF1E696F700000780023250070F9
-:1040200005A0C00012307800232506A0781087482C
-:10403000176800001B6814008CA600DF1E692B683F
-:104040000000206885A0FF002268007079002530FC
-:1040500023252F302F3031303130313031302D3079
-:1040600078108C247810B834086084A0EFFF0A60C0
-:1040700078007234002379003A303D303F30983078
-:1040800078108C2484A60080C0007D3000707900F8
-:1040900046302325503050306C30503079306C3001
-:1040A0004E3078108C2484A6600086A06000C0008A
-:1040B0006830B4A6DFFFB4A6FFBFB5A600205A7EC5
-:1040C000B66E1C6884A0DFFF1E68781087487810E1
-:1040D0004B4B7800563984A6002040005A301868AF
-:1040E00084A00080400079301B68150084A6004041
-:1040F000400079301B68070078106A397800FA248C
-:10410000B4A6FF7F5A7EDC7AD879D078D2791B802A
-:10411000C8008830008084A03F0008A191A2000060
-:10412000986B002102A3B268946B002203A3AE68CF
-:104130001B7865007C0078108C24002379009D306A
-:10414000A030A230EB3078108C2484A60080C00010
-:10415000DA3000707900A9302325B330B330CF3086
-:10416000B330D630CF30B13078108C2484A66000C4
-:1041700086A06000C000CB30B4A6BFFFB4A6FFBFCE
-:10418000B5A600205A7EB66E1C6884A0BFFF1E68CC
-:104190007810874878104B4B7800563984A6002059
-:1041A0004000BD30186884A000804000D6301B68F5
-:1041B00007001B78CA007800FA24B4A6FF7F5A7E55
-:1041C000DC7AD879986B002102A3B268946B002244
-:1041D00003A3AE68D2791B7865007C00206885A0B7
-:1041E0000400226878102139B5A6000878108F37AE
-:1041F0002B7808301B7865007800FA2400237900BA
-:10420000FE3001310331053178108C2478007B3782
-:1042100084A60004C0002E31E47984A1200040006F
-:104220001531EC7884A00300400015312B7809305B
-:104230009B786000AB78000084A6FBFF5A78E47995
-:1042400084A1200040002631EC7884A00300C00047
-:104250002A31012014007800A02D84A107007900E4
-:104260006631907A94A207009B786000A879FF815C
-:10427000400064319B781000A87B84A30100C0003B
-:104280005531A87BA87B86A30100C00048310920D6
-:10429000F7FF78004E3186A30300C0005531092096
-:1042A000EFFF7E0C54706020046004A106607F0C58
-:1042B0009B786000AB78000084A6FBFF5A782B78CF
-:1042C000093020698CA1FFFD8CA1FFFE22697800D6
-:1042D00056393F2A4A2A703178316E316E3156395B
-:1042E000563978108C2420698CA1FFFD8CA1FFFE2B
-:1042F00022697800603920698CA1FFFD8CA1FFFE46
-:10430000226978005639E47984A1300040008A316E
-:10431000EC7884A00300C000B131007086A00400D6
-:10432000C000A4316C7086A00200C0009A31112038
-:104330000200192000007800E9286C7086A00600B1
-:10434000400094316C7086A00400400094310070ED
-:1043500086A000004000FA24186885A000801A6832
-:10436000012014007800A02D84A107007900B53148
-:1043700056395639BD315639BB39BB39563956399C
-:1043800084A680004000EC319471FF814000EC3144
-:1043900082A10D00D000CD31977000007800D2319D
-:1043A00082A10C00967009200C009B786100AA790C
-:1043B0007E157E137E149870148110A29A7280A0CC
-:1043C0000B0000AD9820A1202B019B7800000881F4
-:1043D000AC81A6537F147F137F157800603984A6C3
-:1043E0000004C0002D32206884A001004000603924
-:1043F0008CA6600084A660004000013286A06000A8
-:10440000C00001328DA100408CA1FBFF5A79B66932
-:104410009B786000AB7800009B786100186885A0ED
-:1044200000801A68AA7808800C814000D1348CA1E1
-:10443000F800C000D1347E157E137E14A1202B011C
-:104440009B7800000080AC8080AD0B009820A653C4
-:104450007F147F137F151468078082787800603995
-:10446000186884A00080400034321B6808001B7864
-:10447000C0007800FA24002379003B324032D43265
-:104480003E3278108C24007084A0070079004532F9
-:1044900023254F3284325A324D3223254D324D324C
-:1044A00078108C241C6884A00020400068320860CA
-:1044B00085A002000A6078006832C06805A0C000CC
-:1044C000843220698DA101002269C368010000685F
-:1044D0006A7078007E3220698DA10100226900682F
-:1044E000066005A0C000723202601C6884A00E0045
-:1044F00040007E321470BA68307188A1007578006F
-:10450000803209200076042102680A2D6271B66E9D
-:1045100084A660004000D23284A60008C000983211
-:1045200084A6FF7FB6689468A6689868AA68781021
-:1045300087487800D23284A620004000AD32C0689F
-:1045400005A04000A4327810894C7800A73206A05C
-:104550007810414CD879DC7AAA69A66A7800B3321F
-:104560007810CA38AA69A66A7810414C84A60080DF
-:104570004000D23284A6FF7FB668DC7AD87984A660
-:104580002000C000CA32D0781B80C800C53200802D
-:1045900084A03F0008A191A20000986B002102A313
-:1045A000B268946B002203A3AE68780023257800DC
-:1045B0007B373770000082A206005000DE32781090
-:1045C0008C24007084A00700C0108C3A002379006E
-:1045D000E632E9321233263300227900EC3210330E
-:1045E0007B37F232103342338433037005000120ED
-:1045F000107768204A707E15A92031000320000042
-:104600000080700002337800FB327F1580AD090016
-:10461000367017680000B76800072368000827682D
-:10462000030078006B3778108C240370050001209C
-:10463000107768204A7080AD09003670002279003A
-:104640001E337B3724332433423324337B377810B3
-:104650008C24037005000120107768204A7080AD1B
-:10466000090036700022790032333A333833383358
-:104670003A3338333A3378108C2478109F372B78BC
-:1046800008301B7865007800FA2403700200807AF5
-:1046900094A2000F9B781800A87C84A41F0015A288
-:1046A00069200076042D082D6271682005A0400065
-:1046B0005D33146806A240007933006878005033F7
-:1046C000037005000120107768204A7036707E154F
-:1046D000A920310003200000008070006E337800B4
-:1046E00067337F1580AD09003670166AB76800071A
-:1046F0002368000827680300B46E5A7E206884A0EF
-:10470000000C4000D333781097377800D333037010
-:104710000200807A94A2000F9B781800A87C84A4E1
-:104720001F0015A2A879A8798CA1FF00E8A1007547
-:10473000042D082D6271682005A04000A333146881
-:1047400006A24000BE33006878009633037005006F
-:104750000120107768204A707E15A92031000320BF
-:10476000000000807000B3337800AC337F1580AD5B
-:1047700009003670166AB7680007236800082768C2
-:104780000300B46E5A7E206884A0000C4000D3332E
-:1047900084A000084000CD3378109B377800D333D5
-:1047A000781097378B7000007800D3337E02078231
-:1047B00084A00F0003800380038080A080546020C9
-:1047C000567000605A7004605E7084A660004000FD
-:1047D0002B34986B946CAC69B06805A1C0000D34A3
-:1047E000D27BDA7BD67CDE7CB4A6FFB75A7E84A669
-:1047F000600086A0600040002B34C06805A0400027
-:104800000634037003002B68000078103A4B7800E0
-:10481000083478104B4BB5A600205A7E78002B3414
-:10482000B0681AA3002123A4002405A340002B3460
-:10483000D27BDA7BD67CDE7CB068B4A6FFBF5A7E22
-:104840007E00C06805A07F0040002934037003008B
-:1048500078103A4B78002B347810964B7F077810FD
-:10486000BD380920650084A6040040004C34E4787B
-:1048700084A0300040004434EC7884A00300400061
-:1048800044342B7808300920650078004C347E0FC2
-:1048900079200052781087487F0F400023251A792D
-:1048A000002D4A70078284A00F00038003800380DC
-:1048B00080A0805448207800FA24206005A04000A1
-:1048C000663401802260086085A008000A601070CC
-:1048D00026607C0006A078108748176800001B68D7
-:1048E0000100236840001F680001007084A00700D9
-:1048F000790077342325813481349E348934873498
-:1049000089347F3478108C247810A9347810A2343C
-:104910007810DC1C780023256C706F700000937099
-:104920000000790090349A349A349834983498344A
-:104930009A3498349A34790002296F700000780014
-:1049400023251B6800007800B62F006805A0C00072
-:10495000A734026006607C00106005A04000B234FD
-:104960000180D000B23478108C241260086084A0DA
-:10497000EFFF0A607C00186005A04000BE34018093
-:104980001A607C007810E0391B6818007800F53454
-:104990007810E0391B6819007800F5347810E03998
-:1049A0001B681A007800F5347810E0391B680300A2
-:1049B0007800F53480777810BD3884718CA1FF00C1
-:1049C000E8A10075042D082D682005A0C000E7347B
-:1049D000780023251468807206A24000EF34006836
-:1049E0007800E03400680A201B6805008B70000026
-:1049F0007810A934206884A00100C000FE3478102B
-:104A0000A2347810B8341F680000236820007810A2
-:104A1000DC1C7800232582A20300C0006B37A87D30
-:104A2000ACA5FF00A87CA4A4FF0020698DA1800094
-:104A3000226984A1000140006C358CA1FFFE22692F
-:104A4000A4A4FF004000563582A40C00480029357C
-:104A50004000293521200C002B852B8578102E381D
-:104A6000400033357810273678005F357810E93705
-:104A70007E0C6029046084A0F5FF06607810523631
-:104A80007F0C20698DA100012269587EB5A6040023
-:104A90005A7E84A60004C00050352B7808301B785D
-:104AA00056007800FA242B7808301B7865007800CF
-:104AB000FA247E0C6029046084A0F5FF066078105B
-:104AC00052367F0C587E84A60004C00068351B78DF
-:104AD00058007800FA241B7865007800FA247E0CD0
-:104AE0005470602000618CA100104000AC35086259
-:104AF000178294A2FF0082A20C004800803540007B
-:104B0000803511200C00002402A2C8008535202227
-:104B1000086294A2FF00187086A02800C000953596
-:104B200082A21900C8009B351120190078009B351E
-:104B300082A20C00C8009B3511200C00002202A5A7
-:104B4000C800A03528227810ED372B852B857810EA
-:104B50002E384000AC35781027367800B035781004
-:104B6000E93778105236587885A004005A787F0CBF
-:104B70002B7808301B7865007800FA247E0C6029B9
-:104B80000060E4D0C000D535B4D0C000CF3510608F
-:104B900084A00F00C000CF3504618CA1F5FF066131
-:104BA0007F0C7C0011203200192000007800FC35B9
-:104BB000A06884A00002C000CF35086294A2FF0064
-:104BC000187086A02800C000EA3582A21900C8002B
-:104BD000F035112019007800F03582A20C00C800D1
-:104BE000F03511200C0008631F839CA3FF0082A3F3
-:104BF0000C004800FC354000FC3519200C00AB7857
-:104C00000100AB780300AB780100AA7AAA7BC0A8A8
-:104C10000500206885A0000122687F0C7C007E0CC6
-:104C200060298CA1F5FF06611120320019200000D7
-:104C300078001736AB780100AB780300AB78010041
-:104C4000AA7AAA7BC0A80500206885A00001226876
-:104C50007F0C7C007E0C5471602178102E367F0C06
-:104C60007C00082084A0F0FF25A4867C18609A7838
-:104C7000AE7C1264A47884A0F8FF8CA1070005A183
-:104C8000A67816608A78A4A40F0027840482048082
-:104C900084A0FF0005A40E60EC788CD0C0005136D3
-:104CA000046084A0F5FF06607C007E0C54706020D8
-:104CB000781059367F0C7C0018609A78A47884A00C
-:104CC000F0FFA6781260847884A0F0FF86787C00DC
-:104CD00082A20200C0006B37A87A20698DA18000F3
-:104CE000226984A100024000AE368CA1FFFD22693A
-:104CF00094A2FF0082A20200C8006B377810F93638
-:104D00007810523680A901000C207810B93878103C
-:104D1000BB35FF884000A1369B7860000028AA7848
-:104D2000587EB5A604005A7E84A60004C0009B36B7
-:104D30002B7808301B7856007800FA242B7808303E
-:104D40001B7865007800FA24587E84A60004C00011
-:104D5000AA361B7858007800FA241B786500780082
-:104D6000FA2482A20200C800B63684A201004000E4
-:104D7000C036547188A100000C218CA10020C00015
-:104D8000C036112000007810DB377810F936781023
-:104D90005236587885A004005A782B7808301B7852
-:104DA00065007800FA247E0C7E02602900601120E4
-:104DB0000100ECD0C000E936BCD0C000E73614607A
-:104DC00084A04000C000E7368CA1EFFF066106A07A
-:104DD0007800F63611200000AB780100AB780200B5
-:104DE000AB780300AA7AC0A80400206885A000025E
-:104DF00022687F027F0C7C007E0C5470602078104B
-:104E000000377F0C7C00FF824000053711204000F6
-:104E1000186080A002009A78A47884A0BFFF05A241
-:104E2000A6788A781660EC788CD0C00018370460B9
-:104E300084A0EFFF06607C007E00007086A0030067
-:104E4000400022377F00780025377F0078006737E1
-:104E500084A6200040006737887884A04000400086
-:104E60006737B87B84A33F001B83C80035370080B9
-:104E700005A040004B371B83C8003E37018040002F
-:104E8000633784A6004040004B37B8781B80C800C9
-:104E90004737008084A03F00C0006337B4A6FFBF3F
-:104EA0005A7ED879DC7A0120010008A1C800573762
-:104EB00091A20000D279DA79D67ADE7A7810414C64
-:104EC0001B7864007810C64A7800FA241B786400C6
-:104ED0007800FA241B7865007800FA247810A3374C
-:104EE0002B7808301B7865007800FA2478108F370B
-:104EF0002B7808301B7865007800FA2427680200B8
-:104F000078109737E47884A0300040002325EC78AF
-:104F100084A00300400023252B7808301B7865000F
-:104F20007800FA24012005007800A53701200C0044
-:104F30007800A537012006007800A53701200D0074
-:104F40007800A537012009007800A5370120070067
-:104F50009B781000AA789B786000AB780100B5A61A
-:104F600004005A7E7C007E073F87BCA70F003B876A
-:104F70003B870387E0A08054B8A720009A7FA479DC
-:104F800084A10F004000C93784A1F0FFA678126009
-:104F9000046085A008000660388738879A7FA47966
-:104FA00084A140004000D93784A1BFFFA6781660D5
-:104FB000046085A0100006607F077C009B781000CD
-:104FC000AB780100AB780200AB780300AA7A9B783B
-:104FD0006000AB7804007C00212000002920320012
-:104FE0009B781000AB780100AB780300AB78010030
-:104FF000AA7DAA7C9B786000AB7805007C007E15BA
-:10500000078084A0FF000380038080A020009A789E
-:10501000A4798CA1F0FF01204652042082A0280030
-:10502000400017382120A03819201400A9200C00B6
-:1050300078001D382120AC3819201900A9200D0056
-:1050400011206400042484A0F0FF06A140002C3845
-:105050002084002310A270002C3878001F387F15A0
-:105060007C007E15092046520C2182A132004800A6
-:105070004238400046380920923819201100A920F2
-:105080000E00112032007800583882A1280040001C
-:1050900050380920A03819201400A9200C00112034
-:1050A0006400780058380920AC3819201900A9206C
-:1050B0000D0011206400002202A54000683848005D
-:1050C00068380881002310A27000653878005838CD
-:1050D0007F1506A07C007F1582A56400C800773884
-:1050E000087885A070000A78447085A0700046702A
-:1050F00078007738EC7884A0000340007F380421E2
-:105100007800903804219EA00211C0009038012040
-:10511000FD04042082A0050048008F380120011200
-:1051200078009038042105A07C0002110230023280
-:105130000342034404540456056605680678067A5B
-:10514000070C070C070E0232024202520262027280
-:10515000056605760578057A057C057E057F0222C1
-:105160000232024202520454046404740476047845
-:10517000047A047C047E047F9B78100046A07C00A7
-:1051800084A7000F0B8084A71F0003800380038087
-:10519000038005A1E0A000557C00D879DC7AD078A6
-:1051A0001B80C800D138008084A03F0008A191A2D4
-:1051B00000007C007E0F79200001092040529120E0
-:1051C000008004217900E1381739EB38EB38EB38EF
-:1051D000EB38EB38EB381B3978108C244B78040013
-:1051E000487884A00400C000ED384B780800487867
-:1051F00084A00800C000F438B46885A00040B668F8
-:10520000587885A000405A78307884A08000C0008B
-:105210001739180017391C6884A02000C000153900
-:105220007E0E7120405278106A397F0E780017394F
-:105230001B78CA00912001807F0F7C00B3700000B2
-:105240007810443B780017397E0C1468078084A0DE
-:105250000F00038003800380E0A08054046084A0DA
-:105260000A00C0005439086194A100FF400054397D
-:105270008CA1FF000120190006A140004339012044
-:10528000320006A14000473978004B390920200040
-:1052900078004D3909203F0078004D391120000079
-:1052A000002105A20A60046085A0020006607F0C50
-:1052B0007C001B7865007800FA242B7808301B7876
-:1052C00065007800FA241B7858007800FA242B78BF
-:1052D00008301B7856007800FA24092020520C214F
-:1052E00086A1000040007E3986A10100400081397E
-:1052F000092038520B200B006F7001001B7848000A
-:105300007C001B78C4007C00092038520B200A0066
-:105310007C00092020520C2186A100004000A13908
-:1053200086A1010040009B39092038520B200B0058
-:105330006F7001001B7848007800FA240920385269
-:105340000B200A007800FA242B7808301B78C40060
-:105350007800FA241B78CA007800FA242B780830E9
-:105360001B78CA007800FA241B788F007800FA2492
-:105370002B7808301B788F007800FA24186884A0F6
-:1053800000804000C2391B681D006F7001001B784F
-:1053900048007800FA247E00307884A0C000C00065
-:1053A000DE39087884A0FCFF0A78050005000500B6
-:1053B0000500EC7884A021004000DE3944700A78B2
-:1053C00005A07F007C00447085A0020046700A782A
-:1053D0007C007E00307884A04000C000E73998004F
-:1053E000F2397F009A78AC787C00087884A0FDFFC1
-:1053F0000A780500050005000500EC7884A021006E
-:105400004000013A9800FF397F009A78AC787E001E
-:1054100044700A787F007C00EC7884A00200C00011
-:10542000714884A77D00C000153A002778108C24AD
-:1054300084A70100C0000C3084A770004000253A0A
-:105440007E0C602D682F78103724782D682C7F0C07
-:1054500084A708004000323A4B780800EC7884A01A
-:105460000300400023257800563984A7040040003B
-:10547000653AB87884A001404000653A4B7808004E
-:10548000EC7884A0030040002325E47884A0070082
-:1054900086A00100C000653AC07885A00048302091
-:1054A0005A7E1B78CA007800FA244B7808001868E6
-:1054B00084A000804000613A1B68150084A600406B
-:1054C0004000613A1B68070078106A397800FA24B6
-:1054D0001B680300587884A0003F1E682F680000F6
-:1054E000336800004B780800EC7884A0030040008B
-:1054F000062A1800FA2478007337146B078384A0F7
-:105500000F0003800380038080A080546020482027
-:10551000567000605A7004605E70602A7C007900EA
-:105520008E3A963A973A963A993A963A963A963AFF
-:105530009E3A7C007810B8347810874838700A603A
-:105540007C00A07005A04000AB3A68207810D31B07
-:105550007810FE4778100548A37000007C007E0E8E
-:105560009120008071204052007086A00700C0008A
-:10557000C23A1061BC7006A1C000C23A7F0E78101A
-:10558000E01B7810C83A06A07C00912001807F0EB5
-:1055900085A001007C007E0F7E0E712040527800B5
-:1055A00097225B780000AF700E00092000017E0199
-:1055B000A0706DA04000DD3AA37000007800E33ACF
-:1055C000B370000078100C1C4000E93AAC702668FB
-:1055D0007810C63B7800DD3A7F017E157E0C7E0D8B
-:1055E000A920080061201076006005A102601C60FF
-:1055F0006DA04000013B00681E607810AC19086087
-:1056000000800A607800F43A18606DA040000B3BFF
-:1056100000681A607810AC197800013BE0AC080013
-:105620007000113B7800F13A9C7084A0008040002B
-:10563000183B7810443C7F0D7F0C7F157C007E1258
-:1056400091200023046884A00F007900243B343BA0
-:10565000343B343B343B343B343B363B3C3B343BC8
-:10566000343B343B343B343B3E3B343B363B78109D
-:105670008C247810D3457810AC197800423B276809
-:105680000B007810D3457810C63B7F127C007E1249
-:10569000912000239800603B307884A0C000C000B7
-:1056A000603B7E0D78101248002D2E680920040002
-:1056B00001200000276884007810C7477810C63B97
-:1056C0007F0D7800943B487985A100404A78980086
-:1056D000693B4A7978004E3B287886A03418C00090
-:1056E000723B85A104007800793B287886A01418C5
-:1056F000C000663B85A10C004A789B780E00AB7811
-:105700000200587884A0FF0085A000045A78B47085
-:1057100080A091001A78276884022C683668306867
-:105720003A6809200400012000007810C7477F1262
-:105730007C007E0D146B7810701C4000A33B682029
-:10574000276802007810C63B7800983B7F0D7C00EC
-:105750007E0D146B286CA4A4FF0078101C1C400064
-:10576000B33B6820276802007810C63B7F0D7C00A1
-:105770007E0D146B9CA3FF007810481C4000C43BB6
-:105780006820276802007810C63B7800B93B7F0D7F
-:105790007C007E0C146978103B3C04698CA1FF00EE
-:1057A00086A106004000E13B86A10D004000003CC0
-:1057B00086A11700C000DD3B7810AC197800DF3BF4
-:1057C0007810DE1C7F0C7C00046001804800FE3BEA
-:1057D00006600920000084A60100C000EE3B8DA1F8
-:1057E000008084A604004000F43B8DA102001E69E5
-:1057F0002368000004710F81186805A11A687800F9
-:10580000DD3B78108C24186005A0C0000F3C0860B8
-:10581000018048000F3C0A601C600268002D1E6079
-:105820007800253C88AC0600042105A04000183C07
-:1058300008207800113C02680A2D086001804800A9
-:10584000DF3B0A601860682000681A607800093C35
-:105850007E157E137E147E0C7E0D78108919C00093
-:10586000303C78108C24A02D7F13A9203100A35345
-:105870007F0C7F147F137F157800DD3B84A11F0010
-:1058800003800380038080A0107660207C001920B4
-:105890005152042385A001001A201920020104237B
-:1058A00085A001001A207C0019205152042384A0F5
-:1058B000FEFF1A2019200201042384A0FEFF1A20F3
-:1058C0007C0090798CA1F8FF9279B47080A0D80008
-:1058D0001A787800FA24A370000003700000437067
-:1058E0000100377000001800B12478100C1C400033
-:1058F000993C09200F520B200000BC686020006119
-:1059000084A1000340008D3C27680E0084A00002A3
-:105910004000893C276817007810C63B7800683C37
-:10592000007086A00700C0000D3D002DA27080AD64
-:105930000F0036707800A03C407086A00100400047
-:1059400033257800FA24312000001C6984A102006C
-:105950004000A93CB5A6040084A1C00003800380D8
-:10596000078080A0A63D042035A6206884A00004FE
-:105970004000C13C9B781800AB7803009B78810005
-:10598000AB780100B5A60050206884A000804000DC
-:10599000CF3CB5A600049B780E0024680780AA7847
-:1059A0007800EF3C1C68FCD0C000DD3CB5A60008C8
-:1059B0002068C4D04000EF3CB5A600407800EF3C22
-:1059C0002068C4D04000E53CB5A600407800EF3C1C
-:1059D0009B781800AB7802009B788100AB780100BF
-:1059E000B5A6001084A600024000093D2C68D278BC
-:1059F0003068D67884A600014000073D2C6884A05A
-:105A000001004000073D887884A040004000073D29
-:105A1000B5A600807810F6475A7EB66E78003548F5
-:105A20007810C839C000A03D2C70048048001B3D90
-:105A30001920494F781013232F70010041200100D5
-:105A4000312000109B781800146884A01F0085A0E6
-:105A50008000AA781C6984A102004000343DB5A6EC
-:105A60000400AB7820002868AA78C0A802001C684F
-:105A7000F4D040003D3D502C78107A3A781002471F
-:105A8000206884A0008040004B3DB5A600049B78B0
-:105A90000E0024680780AA787800523D1C6884A014
-:105AA0000080C000523DB5A60008206884A0000117
-:105AB0004000593DB5A600401C6884A0C00003808A
-:105AC0000380078080A0A63D042035A684A600019F
-:105AD0004000733D2C6884A001004000733D88782D
-:105AE00084A040004000733DB5A600809B787E00F6
-:105AF000AE7EB66E14680780AA7882781028AA7ADB
-:105B0000307884A0C000C000A03D1800A03DB47053
-:105B100080A0DD001A787810E03984A600024000E9
-:105B2000943D2C68D2783068D6787810F647002DEE
-:105B3000A2704A701068BE700370070080AD0F003D
-:105B400036707800FA247810D31B7810E03978008A
-:105B5000FA24000000030002000078108C240023C7
-:105B60007900AF3DB23DB23DB43D78108C24781041
-:105B70000548246984A1FF0086A00A004000C63DB4
-:105B800084A100FF85A00A0026687810D31B780046
-:105B9000683C01200A00781097477800683C82A290
-:105BA00005005000D23D78108C24007084A00700BE
-:105BB000C0108C3A78108919C000F43D6920FFFFAD
-:105BC00084A604004000E53D012000287800E73D60
-:105BD00001200008B47188A191009B780E00078015
-:105BE000AA78312000045A7E1A797800FA240768CE
-:105BF00006010B6800009F6800002768000086A36C
-:105C00000200C000153E86A20200C000153EA0782A
-:105C100005A0C000153E84A40080C000153EE478B5
-:105C200084A008004000153EB5A608001920000019
-:105C300078101742002DA2704A7003700700377069
-:105C40000000246884A080004000273E7810CD42E8
-:105C50007800FA24002379002A3E2D3EAE3EC73E4E
-:105C600000227900303E353E453E6B3E773E9A3EFF
-:105C70002920010026A0112000007810F3437900AC
-:105C80003E3E433EFA24683C433E433E78108C241B
-:105C900090798CA10700C0004C3E0920080011201B
-:105CA000010084A604004000543E1120030020227D
-:105CB0002AA1112001007810F34379005C3E613E77
-:105CC000FA24683C693E633E78003B48AB70673E0F
-:105CD0007800FA247800613E78108C2484A61000A5
-:105CE0004000753E78109C424000753E7800FA24D2
-:105CF00078000D43006084A002004000943EB47020
-:105D000080A0CD001A787E0D78101248002D2E68E4
-:105D1000276800007810C63B7F0D7810AC1903701F
-:105D20000000377000004B7000007800683C84A6CB
-:105D30000400C0009A3E78003B48006084A0040044
-:105D4000C000AC3E006084A001004000AC3EAB70DF
-:105D5000AC3E0120070078108F477800414878005A
-:105D60003B4800227900B13EB63EB83EB63EB63E54
-:105D7000B63E78108C24A770BC3E78004748E47883
-:105D800084A00800C000B83E78108147AB70C53EC3
-:105D900078003B4800227900CA3ECF3ED13ED13E3A
-:105DA000CF3ECF3E78108C24E47884A008004000D9
-:105DB000E63EA770DA3E78004748112004007810CC
-:105DC000ED437900E03EE63EFA24683CE63EF03ED4
-:105DD000F43EAB70EE3E0120030078108F47780050
-:105DE000414878003B48AB70E63E7800FA24AB703F
-:105DF000F83E7800FA247800EE3E82A203005000BC
-:105E0000003F78108C2486A30200C000193F86A2B0
-:105E10000200C0001F3FA07805A0C0001F3F84A45F
-:105E20000080C0001F3FE47884A008004000193FB4
-:105E3000B5A608001920000084A6080040001F3FF6
-:105E4000781079421068BE70037007000023790053
-:105E5000263F293F563F5E3F002279002C3F313FCD
-:105E60002F3F4A3F78108C249079ACA1070026A0E0
-:105E7000112001007810F34379003B3F403FFA24A2
-:105E8000683C483F423F78003B48AB70463F780053
-:105E9000FA247800403F78108C2484A6100040003B
-:105EA000543F78109C424000543F7800FA24780018
-:105EB0000D4300227900593F5C3F5C3F5C3F781006
-:105EC0008C2400227900613F643F663F663F781072
-:105ED0008C24E47884A0080040007B3FA7706F3FCB
-:105EE00078004748112004007810ED437900753F91
-:105EF0007B3FFA24683C7B3F853F893FAB70833F03
-:105F00000120030078108F477800414878003B4813
-:105F1000AB707B3F7800FA24AB708D3F7800FA2499
-:105F20007800833F00237900923F973F993F953F48
-:105F300078108C24A4707A00A4707A0082A20200E7
-:105F40005000A13F78108C2484A600024000AB3F93
-:105F50007810FE477810D543781005480023790063
-:105F6000AE3FB13FD93F3F4086ADFFFF4000683CA8
-:105F700086A201004000BB3F78108C2484A600025A
-:105F80004000C33F7810FE4778100548012001000B
-:105F900078109747B87884A001C04000D53F487872
-:105FA00085A008004A78487884A00800C000D03F47
-:105FB000037000007800683C00227900DC3FDE3F7F
-:105FC0000F40A770E23F7800474811200D0078107D
-:105FD000ED437900E83FEF3FFA24683CF73FFF3F8D
-:105FE00005400740B4A6FF00B5A60004B66E5A7E71
-:105FF00078003548B4A6FF00B5A60004B66E5A7EF8
-:1060000078003548AB7003407800FA247800EF3F01
-:1060100078108C24AB700B407800FA2478104D482F
-:106020007800FA24A7701340780047481120120026
-:106030007810ED43790019401F40FA24683C2B404A
-:1060400033403940B4A6FF00B5A60004B66E5A7EB0
-:10605000B47080A0AA001A787800FA24B4A6FF00D1
-:10606000B5A60004B66E5A7E78003548AB7037404E
-:106070007800FA2478001F40AB703D407800FA2485
-:1060800078002B4086A201004000454078108C2407
-:10609000A770494078004748112015007810ED435B
-:1060A00079004F405440FA24683C62406E40B4A6E8
-:1060B000FF00B5A60004B66E5A7E3B780113B4709B
-:1060C00080A0B5001A787800FA24B4A6FF00B5A61F
-:1060D0000004B66E5A7EB47080A0AA001A787800C8
-:1060E000FA24AB7072407800FA247800544082A2FF
-:1060F000030050007A4078108C24002379007D4002
-:106100008040B740144186A20100400086407810CC
-:106110008C24046884A0FF0086A00600C000934081
-:106120007810C63B037000007800683C3B680000B4
-:106130003768000084A600024000A1407810FE47A6
-:106140007810D54378100548012001007810974752
-:10615000B87884A001C04000B340487885A008000A
-:106160004A78487884A00800C000AE400370000060
-:106170007800683C00227900BA40BC40EF40A7702C
-:10618000C0407800474811200D007810ED43790099
-:10619000C640CD40FA24683CD540DD40E340E540B0
-:1061A000B4A6FF00B5A60008B66E5A7E7800354842
-:1061B000B4A6FF00B5A60008B66E5A7E7800354832
-:1061C000AB70E1407800FA247800CD4078108C2440
-:1061D000AB70EB40781005487800FA2478104D48F1
-:1061E0007800FA24A770F340780047481120050092
-:1061F0007810ED437900F940FE40FA24683C0641EE
-:106200000E41B4A6FF00B5A60008B66E5A7E78000F
-:106210003548B4A6FF00B5A60008B66E5A7E7800D1
-:106220003548AB7012417800FA247800FE4086A20F
-:10623000010040001A4178108C24A7701E4178009C
-:106240004748112006007810ED4379002441294188
-:10625000FA24683C2F413941B5A60008B66E5A7E33
-:1062600078003548B4A6FF00B5A60008B66EB5A6FE
-:1062700000405A7E78003548AB703D417800FA24E2
-:106280007800294100237900424147414541454179
-:1062900078108C2478108C240023A87105A07A0132
-:1062A0001068BE7082A203005000554178108C2403
-:1062B0000023790058415B4169418B4184A600026B
-:1062C000400063417810FE47781005480120010026
-:1062D000781097477800FA2496A202004000724195
-:1062E000FF824000724178108C24A77076417800BC
-:1062F0004748112018007810ED4379007C41814116
-:10630000FA24683C83418541780035487800354857
-:10631000AB7089417800FA2478008141002279002D
-:106320008E419041A941A7709441780047481120BF
-:1063300017007810ED4379009A419F41FA24683C98
-:10634000A141A3417800354878003548AB70A7419A
-:106350007800FA2478009F4184A40080C0000542A0
-:1063600084A600014000B5417810FE477810D5435F
-:10637000D878D278DC78D678B4A6FFEF5A7EA770AA
-:10638000C0417800474811200D007810ED43790096
-:10639000C641CD41FA24683CCD41F341F941FB416E
-:1063A000D878DC7905A1C000DF41B87884A01F004F
-:1063B000C000DF41B3700000587884A0FFFD5A7818
-:1063C0007800354884A600014000F141487885A056
-:1063D00008004A787810BC472C68D2783068D678A4
-:1063E000B37000007810F64778003548AB70F7417D
-:1063F0007800FA247800CD4178108C24AB700142EB
-:10640000781005487800FA2478104D487800FA246E
-:1064100078100548AB700F420120030078108F47B9
-:10642000780041487810F6472C68D2783068D678E2
-:1064300078003548B8701268BE700080BA701B686A
-:10644000000084A6080040003A427E157E137E14A8
-:106450009078048004800480048084A00F001A686F
-:10646000AC809B78000080AF2B00982080AD0B00A3
-:10647000A020A5537F147F137F15C4A6000F84A608
-:106480000200C00049422C690D810D810D8184A15B
-:106490000700082078005C429B781000AC7984A14A
-:1064A000200040005C427E01092005000120003DE3
-:1064B0007810C747246885A03B0026687F0184A127
-:1064C0001F0005A8166878103B3CBE6884A604002F
-:1064D00040006D428CA100FFA87884A0FF0005A1B8
-:1064E0002A68B4A6FF00006084A00800400077423C
-:1064F000B5A60040B66E7C007E157E137E1418692A
-:106500009078048004800480048084A00F007E00C2
-:1065100000A11A687F000080048040009842A820F3
-:10652000048180A00B0000ADA0209B78000080AF0C
-:106530002B009820A5537F147F137F157C002C68B7
-:1065400084A02000C000A4420C627800A542106222
-:10655000186B002302A24000C542182082A30E003F
-:106560004800B5424000B54219200E007800B942FB
-:10657000587884A0EFFF5A783B78011B937800008D
-:10658000A27BB47080A08E001A7885A001007C00E8
-:10659000587884A0EFFF5A789378000006A07C001A
-:1065A00004698CA1FF0096A107004000DA4296A181
-:1065B0000F004000DA4207681701146978103B3C6D
-:1065C00000610481C800F5421C6005A04000E9425A
-:1065D000012000087800F7427E0D24687E007810C4
-:1065E00012487F002668002D2E687810C63B7F0D6C
-:1065F0000120000224698CA1FF000DA126690780FB
-:106600009B780E00AA78206885A00080226831203F
-:106610000004B66E5A7EB47188A191001A797C008C
-:10662000C4A6000F84A60200C00021432C690D817E
-:106630000D810D8184A10700082005A81668781037
-:106640003B3CBE6878002443146978103B3C0061F1
-:106650000481C800824384A10003400030430768DE
-:10666000170178004E43046005A0C0005743076837
-:1066700017011C6005A0C00044437E0D781012482D
-:1066800027683400002D2E687810C63B7F0D84A645
-:10669000040040004E43312000040120002878000F
-:1066A00052433120000401200008B47188A19100F8
-:1066B0007800B043186005A0C00044431C6005A0EA
-:1066C000C00044439F68000027683D0084A6010085
-:1066D0004000BE4394D6C0007B430061D4D140004B
-:1066E0007B432C698CA1FF004000BE4386A10300C0
-:1066F0004000BE4386A112004000BE43B5A600087C
-:10670000B47188A1AE007800B94307681701312041
-:1067100000042C698CA1FF0086A11200C0009343E5
-:106720000120CB43092001007800A44386A1030087
-:10673000C0009D430120CC43092012007800A443EF
-:1067400001200002B47188A191007800B043781054
-:10675000E147A37800001C6885A040001E68B47162
-:1067600088A1DA0006A0266807809B780E00AA7828
-:10677000206885A000802268B66E5A7E1A7978005B
-:10678000FA24B66E7810C63B1068BE70037007001E
-:10679000A37000004B7000007800FA242300700002
-:1067A00005000000000A00000000250000000000B5
-:1067B0003B6800003768000084A600024000EC43FC
-:1067C000B8788CA01F0084A000804000E5430881B9
-:1067D000D87800A13668DC7881A000003A687C0097
-:1067E00090790F81ACA507002120000080A4100043
-:1067F0009A78A8798CA1FF0084A18000C0001B4476
-:1068000082A12000C800394482A11200C80081473B
-:106810000021791009447C008147EB45814781477D
-:10682000464449448344B944ED44F0448147814798
-:10683000A44414454E4581478147744584A12000F6
-:10684000C000A8458CA11F00146884A01F0006A1E9
-:1068500040003644B47080A0CD001A7801201400A6
-:106860007810974778100548037000000120020057
-:106870007C00012000007C0082A12400C800814728
-:1068800084A10300791009447C0081478147814736
-:106890008147781081477C00002279004C4477457D
-:1068A0007745704470447044704470447044704440
-:1068B00070446E4470446544704470447044704445
-:1068C000704478447B4477457B4470447044704402
-:1068D0007E0C7E07146F7810B0377F077F0C78002E
-:1068E000704478108E462768B30209200B000120FF
-:1068F00000487800AB45781073477C002768930008
-:1069000009200B000120004878009345582D0468A9
-:1069100084A0FF0086A00600C0008D440768170110
-:106920002768020078101248276836003269002D67
-:106930002E687E0D7810963B7810D345682B781022
-:10694000C63B7F0D7810C63B012002007C0078100A
-:10695000D3450120170078109747A3700000092045
-:1069600038520B200600AF70170009200002781083
-:10697000D43A012001007C0000227900BC44774514
-:10698000A845A845A845DD44BA45E544BA45BA45F9
-:10699000BD45BD45C245C245D544D544A845A845D9
-:1069A000BA45A845E5447745E544E544E544E54472
-:1069B0002768840009200B00012000437800CC45A3
-:1069C00027680D0009200B00012000437800AB452B
-:1069D0002768930009200B000120004378009345AD
-:1069E000012000007C0000227900F34477450C452B
-:1069F0000C450C450C45BA45BA45BA45BA45BA45A9
-:106A0000BA45BA45BA450C450C450C450C45BA4546
-:106A10000C450C45BA45BA45BA45BA45774527688D
-:106A2000930009200B00012000437800934584A6C1
-:106A30000400C0002845046884A0FF0086A006006A
-:106A4000C00081477810D345076817017810C63B0E
-:106A5000012002007C00006084A004004000814707
-:106A6000582D046884A0FF0086A00600C0003745AA
-:106A70000768170127680200781012482768360057
-:106A80003269002D2E687E0D7810A53B7810D34515
-:106A9000682B7810C63B7F0D7810C63B01200200A2
-:106AA0007C00006084A0040040008147046A94A236
-:106AB000FF0086A20600C0005C4507681701276832
-:106AC0000200582D78101248276836003269002DD0
-:106AD0002E687E0D7810B53B7810D345682B781062
-:106AE000C63B7F0D7810C63B012002007C00781069
-:106AF00081477C00B47080A0CD001A78012001008D
-:106B000078109747781005480370000001200200B4
-:106B10007C007810C7477810FE477810D54378106E
-:106B2000CD4278100548012001007C007810C7474D
-:106B30007810FE477810D543B47080A0CD001A7845
-:106B40000120130078109747781005480370000063
-:106B5000012002007C00781081477C007810C74734
-:106B60007810FE477810D5437810CD42781005484C
-:106B700078104D48012001007C00012003007C00BA
-:106B800078108E46012000007C007E0C7E07146F7A
-:106B90007810B0377F077F0C012000007C00781050
-:106BA000C74778108147012006007C0004698CA14A
-:106BB000FF0086A107004000DE4586A10F00C0004F
-:106BC000E2457810FE477810D543B47080A0CD0020
-:106BD0001A7878100548037000007C00A87A94A207
-:106BE000FF00A87884A0FF008AA00400C8008147A5
-:106BF0007910F8457C008147FC458147954682A283
-:106C0000030040000346781081477C00A87DACA5B6
-:106C1000FF00A87CA4A4FF00B86984A10001400083
-:106C200042468CA1FFFEBA69A07805A0C00042468A
-:106C3000A4A4FF004000364682A40C0040001F467A
-:106C4000C80029462B852B8578102E384000294610
-:106C5000781027367800384678106047781052361A
-:106C6000B8698DA10001BA69B5A600105A7E7800F6
-:106C70003B4678105236B4A6FFEF5A7EB47080A01F
-:106C800091001A78012001007C007E0C7810824669
-:106C90000062E4D2400073460862178294A2FF00AB
-:106CA00082A20C00480055464000554611200C00B9
-:106CB000002402A2C8005A462022086294A2FF00C3
-:106CC0001C7002A2C80062461C72002202A5C80005
-:106CD00067462822781064472B852B8578102E383C
-:106CE0004000734678102E3678007746781060475B
-:106CF00078105936B5A600105A7EB47080A0B9003D
-:106D00001A78012004007F0C7C007E001468078044
-:106D100084A00F00038003800380E0A080547F00E4
-:106D20007C007E0C78108246781059367F0C7C00EF
-:106D300082A20200C0008147A87A94A2FF00B8692D
-:106D400084A100024000CC468CA1FFFDBA69A07866
-:106D500005A0C000CC4682A20200C8006B377810A4
-:106D60002A477810F9367810523684A60001400080
-:106D7000C2462C6884A001004000C246FCC6887848
-:106D800084A040004000C246FDC6B5A600105A7E51
-:106D9000B47080A091001A78012001007C007E0C64
-:106DA0007810824684A2FEFF4000D74611200100E1
-:106DB0007800DB4684A201004000E1460061ECD18E
-:106DC000C000E1461120000078101C477810003701
-:106DD0007810593684A600014000F7462C6884A03C
-:106DE00001004000F746FCC6887884A040004000BF
-:106DF000F746FDC6B5A600105A7EB47080A0B90053
-:106E00001A78012004007F0C7C007E0C6029006051
-:106E10001120010084A00020C0000D4711200000B7
-:106E2000AB780100AB780200AB780300AA7AC0A867
-:106E30000400B86885A00002BA687F0C7C009B78CB
-:106E40001800AB780100AB780200AB780300AA7A97
-:106E50009B788100AB7804007C007E0C547060202D
-:106E6000006084A00010C000384729203200212093
-:106E70000000780058470865ACA5FF00187086A090
-:106E80002800C000484782A51900C8004E472920A5
-:106E9000190078004E4782A50C00C8004E472920F3
-:106EA0000C0008642784A4A4FF0082A40C004800FE
-:106EB000584721200C0078106447B86885A000016D
-:106EC000BA687F0C7C0021200000292032009B78CA
-:106ED0001800AB780100AB780300AB780100AA7D05
-:106EE000AA7C9B788100AB7805007C000120030020
-:106EF00078108F47B5A600105A7EB47080A0B900F4
-:106F00001A78012005007C000120070078108F47C7
-:106F1000B5A600105A7EB47080A0B9001A7801207E
-:106F200004007C009B781800AA789B788100AB78DD
-:106F300001007C0004698CA1FF0096A107004000BD
-:106F4000A54796A10F004000A5477810AC197C001A
-:106F5000246994A13F00C000AE478CA1C0FF05A1E9
-:106F600026687810C63B1C6984A100014000BB471D
-:106F7000146978103B3C0462108206627C002C6924
-:106F800034682E6812A13069386832681BA100A2EB
-:106F900001A37C007E0CE0AD180003607000066168
-:106FA0000B6000000F60000A136000001760000013
-:106FB00007801A601F600000236000007F0C2468B7
-:106FC00085A0800026687C007E157E137E149820A4
-:106FD00080AF2D00A020AC814000EC47A65384A1D7
-:106FE00001004000F2470433BE787F147F137F1501
-:106FF0007C00B07005A0C0108C24B37000807800B5
-:107000004B4BB071FF81400004487810414C7C002C
-:10701000B071FF8140001148487885A008004A7887
-:10702000B3700000781087487C007E0C7E0D7810CD
-:107030008919C0001A4878108C247F0C7E157E13A5
-:107040007E14A02D982CA9203100A3537F147F1308
-:107050007F1507680D010B680000047007801A682F
-:10706000236800001F6800009F6800007F0C7C0000
-:10707000B47080A091001A787800FA24B47080A0CF
-:1070800081001A787800FA24B47080A0B9001A78C8
-:107090007800FA24B47080A0C3001A787800FA242B
-:1070A00004698CA1FF0096A1070040005A4896A1F0
-:1070B0000F0040005A4807681701246884A0FF00A9
-:1070C00085A00002266807809B780E00AA782068B9
-:1070D00085A00080226831200004B66E5A7EB4710B
-:1070E00088A191001A797C0078100548487885A01D
-:1070F0000C004A78B47080A0CD001A7809200B00EB
-:10710000012000447810C7470120130078109747EA
-:107110007800683C7E129120002249208748007048
-:10712000047205A20C7215A2087084A0F7FF05A2D4
-:107130004000994878009E48037000007F120020AC
-:107140007C00007084A00100C000CC48087103815D
-:10715000C800AB487810CE497800A3480C708CA0CA
-:10716000FF004000CC4804700480C800C34814707D
-:1071700005A0C000BF48107005A04000C34802A190
-:10718000C800A348077010007800CC48FF8A400070
-:10719000CC487810184CC000C6484000A34878106E
-:1071A0005749037000007F1200207C007E010461BB
-:1071B0008CA1FF0086A107004000DF488EA10F00D0
-:1071C000C000E24840607800E34828647F01FF8403
-:1071D00040000D49702C0470BCA00F00B8A71D49D9
-:1071E0003C27FB87C000FB484800F54878108C24FA
-:1071F0009C6075A040000D497800E848042768AEFF
-:10720000086830A60C6829A5218440000D493887FC
-:10721000042705A0C000FC489C7075A0C000E84889
-:107220007C000000050009000D0011001500190088
-:107230001D000000030009000F0015001B000000E6
-:10724000000012490F4900000000008000001249B0
-:1072500000001A49174900000000000000001A4908
-:107260000000154915490000000000800000154984
-:1072700000001B491B4900000000000000001B49E2
-:107280007E12912000227920005271201000077098
-:107290000A000770020003700000712020000770D0
-:1072A0000A000770020003700000492000007F12EE
-:1072B00000207C00492057491920000004700480F8
-:1072C000C800AA49077012000871087006A1C00022
-:1072D000614984A1E00140006C4978108C240120B0
-:1072E000FD04042082A00500C800774984A1004065
-:1072F000C00061499CA10C3086A304204000854950
-:1073000086A308004000904986A30C20C000614974
-:1073100000720482480090490C7384A3FF0040006F
-:10732000904978108C2407701200007084A001002E
-:10733000C000AA49087084A0E001C000AA491073E7
-:10734000147005A34000AA490C7184A10003C00079
-:10735000AA4984A1FF00C0005749077012000770B6
-:107360000800047084A00800C000AE490770120035
-:10737000087103814800B3490370000049200000F0
-:107380007C007E107E007E127E1591200022087106
-:107390007810CE497F157F12912001807F007F10E9
-:1073A0007C00047200750C7384A30003C000F549CF
-:1073B00084A1E001C000194A087184A1E001C00065
-:1073C000194A0120FD04042082A00500C800E949F3
-:1073D00084A10040C000D94984A107007900ED498B
-:1073E000F749094AF549094AF549554AF549534AC1
-:1073F00078108C24047084A0100085A00200067010
-:10740000FF8AC000044A492000007800084A78102A
-:10741000184CC000044A7C00047084A0100085A0B1
-:1074200002000670FF8AC000144A7800184A7810DB
-:10743000184CC000144A7C00077012000871E0006C
-:107440001C4A91200060E000204A912000600770F3
-:10745000120007700800047084A00800C000284AC9
-:10746000077012000871038148002D4A0370000064
-:10747000007005A0C000414A047005A0C000414A48
-:107480000C7005A04000434A7800244A49200000BF
-:107490007810D738186884A0008040004E4A1B68D6
-:1074A00002007C0078108C2478108C247810B14A6B
-:1074B000107214710C709CA0FF00002800A311A290
-:1074C00089A100007810B14A0427582C60AC0863E9
-:1074D000002222A30C6300211BA3002405A340006B
-:1074E000784AC800784A128410820A8389A1000071
-:1074F000602B78005F4A602B078A7E00046084A0BE
-:1075000008004000844ABAA717497800864ABAA7FB
-:107510000F497F003DA7002C86688A6F926C8E6BA6
-:1075200007701200781057497C003887042705A09F
-:10753000C000A54A9C6005A04000AE4A60200460DF
-:1075400084A00F0080A01D493C20FB8740108C24A4
-:10755000518A4000AD4A087084A0030086A0030051
-:107560007C00512000007C00508A3987042704A049
-:10757000C000C54A006064A0C000BC4A602D046021
-:1075800084A00F0080A02D493C20FB8740108C2454
-:107590007C007E127E0D912000227F0D8468602089
-:1075A00088688C6B906C5780D4AAFF0084A0FF0081
-:1075B0007E00046884A008007F004000E04AB8A074
-:1075C00017497800E24AB8A00F49087EB5A60C001A
-:1075D00004698CA1FF0086A107004000F04A8EA13B
-:1075E0000F00C000F94A1C6884A040004000004B16
-:1075F000B5A601007800004B1C6884A04000400044
-:10760000004BB5A6010007700400047084A00400BC
-:10761000C000024B002405A3C0000D4B7800334B83
-:10762000582C0427046160AC006000A41A70046048
-:1076300001A31E7084A108004000234B106081A0AC
-:1076400000002270146081A00000267008620024EF
-:1076500002A212700C62002303A216700276077059
-:107660000100602B7810924A7800354B7810184C46
-:10767000C000334B7F1200207C007E127E0D9120D3
-:1076800000227F0D07700400047084A00400C00075
-:10769000414B037008007F1200207C007E127E0D9B
-:1076A000912000227F0D49204B4B0770040004708D
-:1076B00084A00400C000544B087EB5A60C000469E9
-:1076C0008CA1FF0086A107004000674B8EA10F0030
-:1076D000C000724B1C6884A0400040006E4BB5A6F1
-:1076E00001004068502078007B4B1C6884A020007B
-:1076F000C000794BB5A6010028685020602D0460B9
-:10770000BCA00F00B8A71D493C27FB87C0008F4BCA
-:107710004800894B78108C249C6865A04000934BEE
-:1077200078007C4B7810184CC0008F4B7F120020E3
-:107730007C007E127E007E017E0D912000227F0D56
-:107740007F037F04087EB5A60C0004698CA1FF00AE
-:1077500086A107004000AD4B8EA10F00C000B64BC4
-:107760001C6884A040004000BD4BB5A60100780015
-:10777000BD4B1C6884A040004000BD4BB5A6010075
-:107780004920964B7E0104698CA1FF0086A1070069
-:107790004000CB4B8EA10F00C000CE4B406878005C
-:1077A000CF4B28687F0155A04000154C702D602EEE
-:1077B0000470BCA00F00B8A71D493C27FB87C00080
-:1077C000E94B4800E24B78108C249C7075A0602037
-:1077D0004000154C7800D54B042768AE086822A4F9
-:1077E0000C681BA34800024C518AC000F64B78106D
-:1077F0008C243887042705A0C000EA4B9C7075A034
-:1078000060204000154C7800D54B228420841A83D8
-:1078100099A300000869002422A10C6900231BA180
-:10782000C800114C78108C24712020007800004B87
-:107830007F1200207C00087084A0030086A0030053
-:107840004000404C042708AC04211A700881042130
-:107850001E700881042112700881042116700460D2
-:1078600084A008004000374C088104212270088160
-:10787000042126700276047084A0100085A0010007
-:1078800006707810924A7C007E127E007E0D912058
-:1078900000224920414C7F0D7F08087184A103001C
-:1078A000C0006B4C7E0104698CA1FF0086A107001B
-:1078B00040005B4C8EA10F00C0005E4C4068780019
-:1078C0005F4C28687F0105A04000794C78009E48F5
-:1078D00020006B4C7810554A7800794CA000724C0F
-:1078E00008717810CE4978004A4C07701000A0004B
-:1078F000744C08717810CE49087086A00800C0004A
-:107900004A4C007005A0C0004A4C0370000049209A
-:1079100000007F1200207C007E127E147E137E15F4
-:107920007E0C7E0D912000227F0D4920894C80AD78
-:107930001100A020992031000C7084A0FF002A685B
-:107940000770080007700200037001004000A84C97
-:107950000080AC80A55307700400047084A004006C
-:10796000C000AA4C7F0C49200000037000007F1566
-:107970007F137F147F1200207C00912000609120F3
-:107980000080CC7805A04000D14C9479D07006A13D
-:10799000C000D14C047805A04000D14C077800000D
-:1079A0006800D14C91208040207801802278C0006E
-:1079B0002C4D2478227869204052006884A007006A
-:1079C0004000EF4C86A002004000EF4C34680DA050
-:1079D0004000EF4C042105A04000EF4C01800A203C
-:1079E0004000D44D487805A04000FD4C01804A7805
-:1079F000C000FD4C0920020144680A2078106F2263
-:107A0000906805A04000094D01809268C000094DB2
-:107A10006F6800007368010061200055A920000113
-:107A200009200200346005A040001F4D018036602F
-:107A3000C0001F4D106005A040001F4D7E01781052
-:107A40006F227F01E0AC10007000254D78000F4DD3
-:107A5000098140002C4DA920000178000F4D7810BD
-:107A6000394D78105E4D0920515204210920020140
-:107A70000A20912001807C00347801803678C00093
-:107A80005D4D3878367891200080447805A0C0009C
-:107A9000484D012001010180467880A000754020FA
-:107AA000042065A040005D4D246005A04000594DB4
-:107AB0000180266040008D4D0060402C78004E4DC6
-:107AC0007C00287801802A78C0008C4D2C782A7898
-:107AD000307805A0C0006B4D012000020180327893
-:107AE000038003800380038090A0005598A20200C9
-:107AF000042384A0080040008C4D90A209000422B9
-:107B000005A04000844D01801220C0008C4D04234C
-:107B100084A0F7FF85A080001A2078106F227C00D7
-:107B200069204052006805A04000974D486806ACA7
-:107B30004000D44D1B600600B46084A0003F1E606E
-:107B4000206084A0FF0085A06000226000604220C9
-:107B50001467826F7810C519186805A04000AF4DF2
-:107B600001801A68086884A0EFFF0A681068018025
-:107B7000D000B94D78108C2412682F60000033605B
-:107B80000000682C7810DC1C69204052447984A1E4
-:107B90000001012006006E68C000CF4D86690120FB
-:107BA00004006E6878106A22912001807C006920B0
-:107BB000000109204052042184A007004000304EFB
-:107BC00086A00700C000EA4D7E0D092052526C21AC
-:107BD00078101C3B7F0D7800304E092052526421F2
-:107BE000781037241B600600586884A0003F1E6090
-:107BF000206084A0FF0085A0480022602F60000064
-:107C000033600000306884A040004000244E4B6880
-:107C10000400A9201400486884A004004000114E0C
-:107C20007000114E7800084E4B680900A92014001E
-:107C3000486884A0010040001E4E70001E4E78006F
-:107C4000154EA920FA007000244E7800204E0868D6
-:107C500084A0FDFF0A681B68480009205B520B20C6
-:107C600007004C784A78912001807C0079200052EE
-:107C700078105E4E7810424E7810504E33780000E7
-:107C8000477800004B7800007C0019200300112089
-:107C90004652042286A03C0040004D4E19200200AE
-:107CA0002A7B2E7B7C0019203900112046520422A9
-:107CB00086A03C0040005B4E19202700367B3A7BB3
-:107CC0007C001920713911204652042286A03C0004
-:107CD0004000694E19202626227B267B3F78000033
-:107CE00043780A007C0020002B00000020000000E8
-:107CF0002000000020000000200000002000000004
-:107D000020000000200000002000000020000000F3
-:107D100020000000200000002000000020000000E3
-:107D200020000000200000002000000014001400CB
-:107D300049981400140014001400140014001400D6
-:107D400080000F00000001020406080C20212240E0
-:107D500080F818000B3001A2140000A2140000A249
-:107D6000140200006C0002001400CD989E009300E5
-:107D700002A2388806383988C32064088598C1284B
-:107D8000AE9C03A20C30462861816A840083561899
-:107D90003A886598F228919C58980C30E128919C7B
-:107DA000022806A2C3642E2807A2A064E06DA06783
-:107DB000C06F14183B882478C16864783E8879982D
-:107DC000768577866B20C128AE9C44200321A220B3
-:107DD0008120659809A201298D98140005A200A3AD
-:107DE00072189A873C88E21F01C60AA26E850407B2
-:107DF000919C140004A200A30930E21964F86E8576
-:107E00003F88E608919881F88C9801C81400C1F861
-:107E10001600B285F080329502FBE21D1400328517
-:107E200041F21400E21DA884A0D7E61F140008A2A6
-:107E300043600880C11D1600008360812A8441F0E0
-:107E40000830A884D6114270DD201100D520228888
-:107E50001600008047281110C098008000A002285A
-:107E60001110C69865983E281110CA980BA21700E9
-:107E70000C3000A3E21D81DB14001002D79814001F
-:107E8000E0263A8702FBF219E21F14000DA2063821
-:107E90001002B39C040700006C0002004F9814000D
-:107EA0009E00A0001700FF600C30208711A2D09C1C
-:107EB0007287378801217A98D210E278D39C59983A
-:107EC00084D9E2F0A1F0CD981400318866D13088D1
-:107ED0000F80019420B502C820887A9801237A98EF
-:107EE000D210E478D39C21882088599823F142F15C
-:107EF00001F1C698D210F670328803820C879ED9A1
-:107F000001601400456814021BA2D09C0120C59892
-:107F10000182521884D163D1348801808D98273032
-:107F2000A884561A3388140018A28169BC9C26695B
-:107F30000269341A9998141A2170140000A341613F
-:107F40006469108092852680B984E4692380E116F3
-:107F50000180F110466913A2621413A20080E11699
-:107F6000B598696914A2C2610280E1140480E11627
-:107F700001010A302788140017A2BC9C140000A33A
-:107F800081812A84A884E61C2C88160012A2D09C29
-:107F9000D210E4700400078024941ACCD39CC598B6
-:107FA00027880A3013000080A4841600C2111E2105
-:107FB0000E871DA214008E8716001CA23510919802
-:107FC00010A200A0108092853B8544D02280073803
-:107FD000BB84EA9821800738B9840C307E812B87D6
-:107FE00072879198000020002B0000002000000004
-:107FF0002000000020000000200000002000000001
-:1080000020000000200000002000000020000000F0
-:1080100020000000200000002000000020000000E0
-:1080200020000000200000002000000014001400C8
-:10803000499814001400E298CD981400140014001C
-:1080400080003701000001020406080C20212240B4
-:1080500080F818000B3001A2140000A2140000A246
-:10806000140202A2388806383988C32064082FA871
-:10807000C128AE9C03A20C30462861816A8400832B
-:1080800056183A8804A8F228919CF4A80C30E128EC
-:10809000919C022806A2C3642E2807A2A064E06D6A
-:1080A000A067C06F14183B882478C16864783E8844
-:1080B00002A8768577866B20C128AE9C44200321D8
-:1080C000A2208120E4A809A2012909A8140005A280
-:1080D00000A372189A873C88E21F01C60AA26E8527
-:1080E0000407919C140004A200A30930E21964F86B
-:1080F0006E853F88E608F7A881F8F0A801C814004B
-:10810000C1F81600B285F080329502FBE21D140022
-:10811000328541F21400E21DA884A0D7E61F1400A6
-:1081200008A243600880C11D1600008360812A8474
-:1081300041F00830A884D6114270DD201100D5200E
-:1081400022881600008047281110FCA8008000A09B
-:1081500002281110FDA89BA83E281110FDA80BA213
-:1081600017000C3000A3E21D81DB1400100201A8EF
-:108170001400E0263A8702FBF219E21F14000DA258
-:1081800006381002B39C04071700FF600C302087EC
-:1081900011A2639D72873788012121A8D210E2784D
-:1081A000669DFCA884D9E2F0A1F06CA81400318887
-:1081B00066D130880F80019420B502C820880FA8AE
-:1081C00001230DA8D210E478669D21882088E6A8B6
-:1081D00023F142F101F14FA8D210F67032880382E8
-:1081E0000C879ED901601400456814021BA2639D90
-:1081F000012040A80182521884D163D134880180C3
-:1082000001A82730A884561A3388140018A281695F
-:108210004F9D26690269341A01A8141A21701400AE
-:1082200000A341616469108092852680B984E46965
-:108230002380E1160180F110466913A2621413A293
-:108240000080E11607A8696914A2C2610280E114E6
-:108250000480E11601010A302788140017A24F9DFF
-:10826000140000A381812A84A884E61C2C881600AF
-:1082700012A2639DD210E4700400078024941ACCEB
-:10828000669DF8A827880A3013000080A484160091
-:10829000C2111E210E871DA214008E8716001CA27B
-:1082A0003510B4A810A207380C307E812B87728756
-:0682B000ADA800000C0D5A
-:00000001FF
-/**************************************************************************
- * QLOGIC LINUX SOFTWARE
- *
- * Copyright (C) 2004 QLogic Corporation
- * (www.qlogic.com)
- *
- *************************************************************************/
-
-/************************************************************************
- * *
- * --- ISP1040 Initiator/Target Firmware --- *
- * 32 LUN Support *
- * *
- ************************************************************************/
-
-/*
- * Firmware Version 7.65.06 (14:38 Jan 07, 2002)
- */
diff --git a/firmware/qlogic/12160.bin.ihex b/firmware/qlogic/12160.bin.ihex
deleted file mode 100644
index dc800ecdaf3a..000000000000
--- a/firmware/qlogic/12160.bin.ihex
+++ /dev/null
@@ -1,1771 +0,0 @@
-:100000000A042A000010040841100000C93600004C
-:100010004320504F525947495448312039392C31E7
-:1000200039313239312C39392C3339313439512085
-:100030004F4C494720434F435052524F54414F4930
-:10004000004E492050533231363146207269776D67
-:10005000726120655620726569736E6F31202E3093
-:1000600034302020432073756F74656D20726F4E9D
-:10007000202E303050206F72756474634E202E6FC6
-:100080002020303020200024C920FF907120000261
-:10009000A070A2700120FF010420FCD0201171206B
-:1000A0000001A070A270C1202000892021127120BF
-:1000B0001000C3700400C7705349CB702050CF703C
-:1000C0002020D3700A000120FD040420D6700920EE
-:1000D000FFFE30212821A2A1004724842484248407
-:1000E00024842484248492A100910920000001200A
-:1000F00032000C08051E182279200047A02F082482
-:1001000011200000A9204000A4420981D81D092027
-:1001100000FF003402A118021001A820A4421B789D
-:1001200064001478CDC0D5C0167871200002D600C6
-:10013000692040470C085C460120FF010420FCD0E8
-:10014000301169208047712000010C085C4614784A
-:10015000D4C01678DE00CA7EC27CC67B67780000F9
-:1001600000788DC0027831203000AF78010123780B
-:1001700002002778020009200200692040471B681E
-:100180000300236807002768FA002B6808002F681F
-:10019000280037680600336808003B6800000981C2
-:1001A0000005CF680A00BF68C04779200047D368C0
-:1001B0002D76C368C04CC768C04BCB68C08CA7689D
-:1001C000448FAB68498FAF68448FB368448FA3688E
-:1001D00001000120FF010420FCD0C81169208047E4
-:1001E0007008CF680A00BF68C049D3683978C3680F
-:1001F000C06CC768404CCB68D08DA768498FAB688E
-:100200004E8FAF68498FB368498FA3680100E6003D
-:100210006920C04B71200002EC70E4D0192009184D
-:1002200021200900201119200C1821200C000C0895
-:10023000751D0120FF010420FCD088116920404C6D
-:1002400071200001EC70E4D0192009182120090068
-:10025000201119200C1821200C000C08751DEE002F
-:10026000112002006920C04C09200200A9200001D1
-:10027000376800000B684000C87B86A3FFFE28118A
-:10028000176800011F6864002000176864001F6879
-:100290000200E8AD1000041F35110981381D01204E
-:1002A000FF010420FCD02811118218016920C06CC4
-:1002B000D8080C08F6220C083D400C088C1B0C08D2
-:1002C000154691200022792000477120500091208E
-:1002D00000247920004771202000912000267920F9
-:1002E00000027120404791200028792000017120F0
-:1002F00080479120002079200047712010000032B3
-:1003000085A03D30902071201000C37000000410C3
-:100310008C11C07086A0020010110C08BA1339208D
-:1003200000000C08AB12AC7805A08011040E9A11E5
-:100330006C7865A010010C08A1200C08261E040E84
-:10034000AF116C7865A010010C08A120040EAF114C
-:10035000092047471120874704210C2205A11001DD
-:100360000C089B1C71204047A07005A0E8014C744C
-:1003700085A40000C8017920000291200080D0727D
-:100380008CA23D3090210C084C27912000809120B8
-:100390003D30040ED111792000476C7865A0200112
-:1003A000712010000C08A120041DD91179200047EC
-:1003B000712010000C08294471208047A07005A00E
-:1003C00088014C7025A070017920000191200080E7
-:1003D000D0728CA23D3090210C084C2791200080D7
-:1003E00091203D307920004771201000040EFA1151
-:1003F0006C7865A010010C08A120041D8E110C085A
-:10040000294404088E11003C84A0070002000C124D
-:100410000C120E120E1213121312181218120C08CC
-:100420007525912000240C08D5400500912000225C
-:100430000C08D5400500912000220C08D5409120E1
-:1004400000240C08D540050041124112421242120C
-:100450004D124D124D124D1256125612611261126A
-:100460004D124D124D124D12701270127012701208
-:10047000701270127012701270127012701270126C
-:100480007012701270127012F80C0600060126012C
-:10049000912000280C0892252E010E010E000D005F
-:1004A0000600060126010C0800122E010E010E00A6
-:1004B0000D00060006012601912000260C08922559
-:1004C0002E010E010E000D000600060126019120EE
-:1004D00000260C089225912000280C0892252E0158
-:1004E0000E010E000D00060006012601D600E600F2
-:1004F000F600792000477120000269204047003D46
-:100500008CD03001EC7084A0001CE2780C085C46B2
-:10051000003D84D050016920804771200001EC70BB
-:1005200084A0001CE6780C085C460C082625FE001A
-:10053000EE00DE002E010E010E000D0008700B8093
-:100540004012077002008CA0E00120119CD008012D
-:1005500087089708C37002400408BD13040E1E13D9
-:1005600061200000186084D004191E13287805A0AB
-:10057000201104001F1304081E13FCD030010600D4
-:100580000C08291B0E005001280006000C081E1B39
-:100590000E002001012007400408BC131079FCD094
-:1005A0002811612040479CC1FCC720006120804782
-:1005B0009DC1FDC7606005A004191E1312797E60FD
-:1005C0002878FCC086A018002011C6000C08261947
-:1005D000CE002B780000786065A0E001C6009C602A
-:1005E0000C08F31BCE009F6000000C08601A092065
-:1005F00018008760030110780600FF841011FF8542
-:100600001001C5C012780C08341B0E001278981126
-:100610000C087F1B10789CD01811612040472000E7
-:10062000612080479CC012787B600000D060C4D0FD
-:100630003001C4C0D260012005400408BC13040886
-:10064000BA13050006A0C270C670CA70CE70DA7008
-:10065000C0703DA08AA04000041A6C130200BA13B7
-:100660000814D6133C1470147014CE13781A7A142C
-:10067000C813DA13DB13DC13DD137C1AC8138714D9
-:10068000DB144119721ADE13C817FE1730187618DA
-:1006900085179217A517B717BF15C8130D1518158D
-:1006A000261534154B1559155C156E157C158615D8
-:1006B000A515B115C813C813C813C813CC15DD157B
-:1006C000F7152B165416661669169316CC16DE16F9
-:1006D00053176317C813C813C813C813751700211D
-:1006E0008AA04000041AC8130200C813C813C81314
-:1006F000C813C8139E1AA41AC813C813C813A81A7B
-:10070000E81AC813C813C813C81303146B1482144F
-:10071000D6143C19C813C8130B19C813EC1A901A35
-:100720009A1AC813C813C813C813C813C813C81318
-:10073000C813C813C813C813C813C813C813C813E1
-:10074000C813C813C813C813C813C813C813C813D1
-:10075000C813C813C813C813C813C813C813C813C1
-:10076000C813C813C813C813C813CA72C6710120AE
-:1007700006402800CE73CA72C67101200040C270C4
-:10078000040EBD13612000001B6001009120005089
-:10079000912080400500C3700140900CC37006405A
-:1007A000780C99204100A1204100A9200500A35305
-:1007B000200CC470C37004000708F808F008E808AB
-:1007C000E00891200080C3700400C7705349CB70CB
-:1007D0002050CF702020D3700A0001200400D67072
-:1007E000792000001B7801003120300059200010D2
-:1007F00029201A045120450461204704C12020000B
-:10080000912000509120804004081804D875DC74B1
-:10081000DA75DE741800292000002025D071C87216
-:10082000CC73C470A02099203000037001000770C1
-:1008300006001A731E722274267521204000FF8163
-:100840000409BA1382A140001012202106A008203A
-:100850000384127007700400077001000870FCD058
-:10086000E80D0770020084A0E0012001C37002407F
-:100870000408BD13A824A553100C0408BA1329209A
-:1008800000002025D071C872CC73C4709820A120BC
-:10089000300003700000077006001A731E72227485
-:1008A00026752120400007700600FF810409BA1355
-:1008B00082A140001012202106A00820038412709B
-:1008C000A824A653077001000870FCD0E80D84A08E
-:1008D000E001480DC37002400408BD13D875DC74F4
-:1008E000DA75DE747808C471C87014219EA70400FC
-:1008F00008110A20CA720408B913C7700A00CB7025
-:100900000400CF702A000408BA13D875DC76DA75B3
-:10091000DE761800292000003025C470C872CC7320
-:10092000D074C670CA72CE73D27405A0E8050AA44A
-:10093000080140120180727884A000FC3801AC7874
-:1009400085C0AE78012005400408BC137E7B7A7A0E
-:10095000867E827D767C8CA400FF700107840480F3
-:1009600004800C810C810F8118A191A20000B1A616
-:10097000000081A50000500007840480048018A3B3
-:1009800091A20000B1A6000081A500001A731E729A
-:100990002276267005A61801107AC5C2127AAC78A4
-:1009A00084A0FCFFAE781800AC7885C0AE7804084F
-:1009B000BA13D875DC76DA75DE76180029200000C7
-:1009C0003025C470C872CC73D474C670CA72CE732A
-:1009D000D67405A000050AA41001041ABC130180F6
-:1009E000927884A000FC3801AC78C5C0AE780120B4
-:1009F00005400408BC139A7A9E7BA27DA67E002641
-:100A000005A51801107AC5C2127A967CAC7884A02C
-:100A1000FFFCAE781800AC78C5C0AE780408BA13F5
-:100A2000092000006C7865A0180108810060D80CCE
-:100A3000C47A0408B813092048470C210120FF019B
-:100A40000420FCD00419B91311208847142204088B
-:100A5000B813092049470C210120FF010420FCD0D4
-:100A60000419B9131120894714220408B81361200E
-:100A7000404728612C621482148214820120FF01F5
-:100A80000420FCD04811612080472863DA732C636E
-:100A90001C831C831C83DE730408B81309204C4795
-:100AA0000C210120FF010420FCD00419B9131120EE
-:100AB0008C4714220408B81318790408B9130920C4
-:100AC00002020C218CA1300F0120FF010420FCD078
-:100AD0000419B91311200201142294A2300F040842
-:100AE000B81309204D470C210120FF010420FCD040
-:100AF0000419B91311208D4714220408B813207962
-:100B00000120FF010420FCD00419B913247A040841
-:100B1000B8131120404CC471FCD110111120C04BEE
-:100B2000078184A00F0003800380038068A2006A0D
-:100B3000086B1C6CDA74FCD1181121203B021000E8
-:100B400021203B012424A4A4001CDE740408B71354
-:100B5000C4770C089A1B912000801C6B146A9120AA
-:100B6000018008270408B71361204047186101205D
-:100B7000FF010420FCD00419B913612080471862DA
-:100B80000408B813C4770C089A1B912000800869E8
-:100B9000186A106BDA77912001800408B713C471CA
-:100BA000102194A20F0082A21000041AB3130C08A3
-:100BB000B42384A30040100195A220000408B713B9
-:100BC000C4710021BCC082A01000041AB313BCD1B0
-:100BD00020111120484704222000112088470422B8
-:100BE000BDC006000021BCC012200C0858231E0006
-:100BF0000408B913C471212049470424C670192080
-:100C000000003000C871212089470424CA70FDC348
-:100C100011202316A9200800042206A13801108201
-:100C2000041F0916C471C8720408B21392A22316D5
-:100C3000260022211E000C086A230120FF01042047
-:100C4000FCD01011FCD3F0090408BA13E803FA0031
-:100C5000F401EE020400010002000300612040479D
-:100C600028612C62148214821482C4702A60C870B5
-:100C70000380038003802E600120FF010420FCD04C
-:100C8000A011260016006120804728612C62148282
-:100C900014821482D8702A60DC7003800380038081
-:100CA0002E60DA71DE721E002E000408B813612077
-:100CB00040473061C47032600120FF010420FCD045
-:100CC0000419B913612080473062C870326004088B
-:100CD000B81318790408B913C47184A1CFF048017E
-:100CE0000120FF010420FCD00419B313C8720408CA
-:100CF000B213192000000C08A62336000120FF01C2
-:100D00000420FCD018011E000408B913C87184A186
-:100D1000CFF028010E001021C4710408B213FDC3E6
-:100D20000C08A62310231E000408B813C47182A166
-:100D3000100048020120FF010420FCD00419B31365
-:100D4000C8720408B21311204D4704220600048122
-:100D5000081208811221192000000C089323012099
-:100D6000FF010420FCD018011E000408B913C8714B
-:100D700082A11000280206001021C4710408B213D9
-:100D800011208D47042206000481081208811221D7
-:100D9000FDC30C0893232E001E000408B813C47171
-:100DA000C87284A1FDFF0419B21384A2FDFF0419C7
-:100DB000B2130021207922780022247A26780408B0
-:100DC000B8131120404CC471FCD110111120C04B3C
-:100DD000078184A00F0003800380038068A2C8728B
-:100DE000CC73D874C6710068CA70CE73DA7491205F
-:100DF0000080026AACD2181121200000900084A467
-:100E0000FF0082A00200041A4F173F84BCA7FF0016
-:100E1000400186A7020004194F1784A4FF000409AB
-:100E20004F1761200002FCD1100161200001292030
-:100E30000900312062003F84BCA7FF003001078316
-:100E400084A0FF0010113DA738114120190084A390
-:100E5000FF0082A01A001002A4A4FF00078384A050
-:100E6000FF00880142A8F00286A0100020119CA378
-:100E7000FF009DA3000FBCA3FF00002502A7900266
-:100E8000002602A7781239203A00046805A70668F0
-:100E90000A6B0C6BCE731C68DA701E6C912001809B
-:100EA0000408BA13912001800408B413C4770C0815
-:100EB0009A1B91200080146A1C6B91200180C870DD
-:100EC0001668CC701E6808270408B713C470612028
-:100ED000404718611A600120FF010420FCD004196A
-:100EE000B913C8706120804718621A600408B813EB
-:100EF000C471C872CC7382A11000041AB3130C0819
-:100F0000D82384A30040100195A220000408B71341
-:100F1000C4770C089A1B91200080086A8DC20A6A67
-:100F20009120018008270408B813C4770C089A1B85
-:100F300091200080086A94A2F9FF0A6A046805A05B
-:100F400010010C08D5229120018008270408B8134D
-:100F5000C4770C089A1B91200080086A95C20A6A1F
-:100F6000046805A010010C08D522912001800827F3
-:100F70000408B813C477412001004920050051201E
-:100F80002000912000800C08B21B912001800827CE
-:100F9000086A0408B813C477FCD728010C08291B79
-:100FA00038010408BC130C081E1B10010408BC13F4
-:100FB000C873CC72C677CA73CE720C082A1CE811AB
-:100FC000186805A0A001082776000C08F7237E000A
-:100FD000701101201500FCD718116120404718003E
-:100FE000FDC0612080472A78912001800500912072
-:100FF0000180012005400408BC13912001800408F1
-:10100000BA13C477FCD728010C08291B380104083F
-:10101000BC130C081E1B10010408BC13C67741202A
-:1010200021004920050051202000912000800C085B
-:10103000B21B09201600FCD7181161204047180088
-:1010400061208047FDC1636003007B600000726720
-:101050007F600F002A79D061C4C1D2610C08D5220B
-:10106000912001800500C877CA77C477C677FCD77E
-:1010700028010C08291B38010408BC130C081E1B8E
-:1010800010010408BC13BCA700FF912000800920B8
-:101090001700FCD7181161204047180061208047D5
-:1010A000FDC17B6000006360020072677F600F001B
-:1010B0002A79D061C4C1D2610C08D5229120018067
-:1010C000412021004920050051201000912000807E
-:1010D000C87005A01801D060FDC0D2600C08B21B1A
-:1010E000C8703668388784A71F00C01D9120018012
-:1010F000050019200000C87284D228010C08291BA1
-:1011000038010408BC130C081E1B10010408BC1392
-:10111000C872CA72AC7884A0030018153920000088
-:1011200084D20801FDC7412021004920040051203C
-:1011300008000C089A1B912000800868D4C00DA8F4
-:101140000A693768000091200180388784A71F0052
-:10115000801DBCA700FF3F8738873F8784A7000F0B
-:10116000401D91200080C8726920000184D21011B6
-:1011700069200002086884A0FDFF0A683068B4D0C6
-:10118000B0014B680400A9201400486894D01001F5
-:10119000041FC2184B680900A9201400486884D0B5
-:1011A0001001041FCB18A920FA00041FD2187920BF
-:1011B000004709201800C87284D2181161204047E6
-:1011C000180061208047FDC17B6000002A796360C0
-:1011D00001007F600F00A3600000A460AE60B260F9
-:1011E000D060B4D06001B4C0D260C600B46065A065
-:1011F0000860D4C00A60186001801A60CE00D06018
-:1012000084A0FF7ED260AC788DC0AE78FF830801E9
-:1012100005001B685400912001800500CC730C0868
-:101220007818EC69486A85A100184A6885A14000D1
-:10123000EE68CC7321200400A920FF09041F1B19AC
-:101240002184D01D1983B01DEE694A6A9120018066
-:101250000500FCD71811692040471000692080471D
-:10126000C471C6711669FF811011A3680100AC78C2
-:101270008CC0AE7884D010110C087A1C0500D8758B
-:10128000DC74DA75DE7410002EA02025C471C873DA
-:10129000CC72C671CA73CE7279200047DE7DDA7CCB
-:1012A000D67BD27A0C08771B04095C1AA9200500AA
-:1012B000A120144791200080A141912001800920A4
-:1012C00040000C08411D20010C087F1B04085C1A1B
-:1012D00004608CA0FF008EA10900201106000C08FC
-:1012E00086200E0084A000FF078009800409F11900
-:1012F000C600682C0C08771BA805002C9E68098185
-:10130000C01D9F600000CE00C600DC7DD87CD47B71
-:10131000D07A90A2400099A30000A1A40000A9A542
-:101320000000DE7DDA7CD67BD27A682C9C6865A0D2
-:101330000409F019092040000C08411DA0150460A3
-:1013400084A0FF0086A002005001046084A0FF007A
-:1013500086A00A00381116000C0883201E00002DFC
-:1013600002609808CE00C6009C600C08F31BCE00FB
-:101370009F6000000C08601A092018000860CDC0AA
-:101380000A600460866010780600FF841011FF85F3
-:101390001001C5C012780C08341B0E0012780C081E
-:1013A0007F1B04085C1ACE00C6009C600C08F31B6F
-:1013B000CE009F6000000C08601A092018008760AA
-:1013C00003011B60030010780600FF841011FF85E5
-:1013D0001001C5C012780C08341B0E0012780C08DE
-:1013E0007F1B04085C1ACE001461FCD120010C089C
-:1013F000291BF00118000C081E1BD0010C08601AF4
-:1014000009201800876003011B6021001078060086
-:10141000FF841011FF851001C5C012780C08341B21
-:101420000E0012780C087F1B012007400408BC1333
-:1014300004618CA1FF0086A1050018111C60BDC0CD
-:101440001E60C474C873CC72146091200080E600E2
-:1014500009201200FCD0181171204047180071209B
-:101460008047FDC12A7963700500D071C4C1D27173
-:1014700066736A726E74727077700000002C7A70F6
-:101480002EA030251C6184A1600010010C08E93FEA
-:10149000EE009665A6659A66AA66AF600000B36026
-:1014A0000000146723600000246096A00100101162
-:1014B000008026600C08D522912001800500C370B1
-:1014C00005400408BD13A920050099201447912068
-:1014D00000800A5391200180002110A299A30000EE
-:1014E000A1A40000A9A500000500C471C7700000F8
-:1014F0001E790408BA13C471C671682110006920EE
-:1015000000100C6916A0042D10A2688D0981D81D49
-:1015100085A200001811C37000401000C370034082
-:10152000CA700408BD136479C671C47182A1030036
-:10153000041AB31366790408BA136479C6710408EF
-:10154000BA130079C671C47102790408BA1300791C
-:10155000C6710408BA13C470112000008CA00D00DD
-:1015600060010C81300210820C810C81100210820B
-:101570000C81FF810419B41310820E7A8CD23805C5
-:101580001079CDC11279092021001920030084D2DD
-:10159000C00108811920410011204E8F122319200B
-:1015A00042001082122319204300108212231920B6
-:1015B000460010821223192047001082122319209E
-:1015C00006001120538F12211120738F12230479EA
-:1015D00006780408B9130478C6700408BA13C471F5
-:1015E000FCD118111120C04B10001120404C078174
-:1015F00084A00F0003800380038068A211200000F4
-:101600001468FCD0100195A20002B4D0100195A27C
-:1016100001000C6B0068DA700408B7131478F4D07A
-:10162000300101200740DB70000005A04800FCD01D
-:10163000300101200740DB70010005A0080006A072
-:1016400005001478F4D0300101200740DB70000061
-:1016500005A0080006A005001478FCD03001012088
-:101660000740DB70010005A0080006A0050012710C
-:101670001A721E731078C4D010012274267580ACC3
-:10168000010008810C81A9819880A120300003709D
-:1016900000008460A220A65307700100747984A121
-:1016A00000FF40010F810C810C81048004800780C1
-:1016B00000A118000781048004807C7908A1787A51
-:1016C00006A011A2107DC4D52001847B19A3807CC3
-:1016D00021A40870FCD0E80D03700100077006001B
-:1016E0001A711E72107DC4D510012273267484A055
-:1016F000E0010500487865A02001042C4A786320A9
-:1017000000000500F6007920004748786220002C90
-:1017100005A010110C0875254A78FE00050011205F
-:1017200000914A7AC47B1983280180A232001220DA
-:101730001020C80C13200000050016002600FCD75E
-:1017400018111120C04C10001120C06C84A7000F8C
-:101750000B8084A71F002001038003800380038087
-:1017600005A168A22E001E000500390C00292A6878
-:10177000002A2E68086884A0EFF90DA80A69E6001F
-:10178000FCD728110920524771204047200009202A
-:101790009247712080470C21046805A0480116A1DA
-:1017A000381160200060066816000B200000180049
-:1017B000092000001600046865A078010060066832
-:1017C00021040C08B21D1068087909810A7901808A
-:1017D0001268881D1079A5C112791E000269066978
-:1017E000002D60200C08BF26EE00050065A06001FA
-:1017F00008209C6005A0280162209F60000065A071
-:10180000C00C48784A7962200500076003018F60A8
-:101810000000A9201C0080AC0500A02001200000D1
-:10182000A44028681A602C6822600500E600FCD7F6
-:101830002811712040473120C04720007120804787
-:101840003120C0494C708CA00002281108A60A2D36
-:1018500000804E7006A0EE000500F600FCD71811BF
-:10186000792040471000792080470C089A1B91206E
-:10187000008004680A7865A0F0053000002C0A7822
-:101880006020006065A0B805106006A3B81D0C605C
-:1018900006A2A01D282C487806AC0811480404684C
-:1018A00006AC401100606020066805A018110368AE
-:1018B00000004800006408786020026486A40000EC
-:1018C0001011002C026860250C08021C1B6005002A
-:1018D00023602000FE000C08B21DF6000879098183
-:1018E0000A7910680180126818111078A5C0127862
-:1018F0000120FFFF05A0FE0005007600002739202B
-:101900000000FCD00801FDC741202100492004004F
-:1019100051200800912000800C08B21B388784A752
-:101920001F00D01DBCA700FF3F8738873F8784A7D3
-:10193000000F901D912001807E0005006C78092029
-:10194000748F0C210DA1180165A00408A12061204D
-:101950000000186084D0B81110788CD030018CC091
-:101960001278FCC76920404728008DC01278692092
-:101970008047FDC7912000801C681F6800009120EF
-:10198000018005A0081105008CA0F0FF10010C08D3
-:1019900075250200D71CDA1CE01CE41CD81CE81CCE
-:1019A000D81CD81CD81CEE1C181D1B1D201D291D61
-:1019B000D81CD81C05000C0875250C087A1C0120C1
-:1019C00001800408321D012003800408321D01201B
-:1019D00004800408321D0C087A1C012006800408CB
-:1019E000321D11200A8091200080FCD71811692037
-:1019F00040471000692080473820006886A000001A
-:101A000020011E6F91200180050026007068BCA097
-:101A100000FF4120210049200400512010000C0843
-:101A2000B21B388784A71F00D01D912001800E00B3
-:101A30007069C671D00001200C80B8000C087A1CB7
-:101A400001200D809000FCD71001E4780800E078B8
-:101A5000C67001200E804800FCD71001EC78080009
-:101A6000E878C67001200F800000C270FCD7181102
-:101A7000DB7000001000DB700100612000001B60C3
-:101A8000010091208040050080AC0100FF81180515
-:101A900099203000A0200C7084A0FF07000118706E
-:101AA00006001C70060020700600247006001271EB
-:101AB000AC811A721E7322742675037001000770C0
-:101AC000010008700B80E81E077002008CA0E00186
-:101AD0001011A55306A003700000077004000E004B
-:101AE00026700E0022700E001E700E001A70050087
-:101AF00011202000092010000A6B0E6C1F680102E3
-:101B0000036820FD076838001A6A002DE8A0080065
-:101B100090A204000981801D0500EC70DCD0201526
-:101B2000292001001478CCD06011EC70E4D0192089
-:101B30000A0C21200A00201119200C0C21200C0075
-:101B40007000EC70E4D0281119200C1821200C0032
-:101B500030001920091821200900ADA500020A6BE8
-:101B60000E6C1E6D07683800050004608660082C46
-:101B700063200000687805A06A791001022C080033
-:101B80006E790500C6006120004787680301082DB3
-:101B90006B200000686005A06A611001022D08003A
-:101BA0006E61CE00050091200080042C6E7805A0A7
-:101BB00008116A78912001809C6005A08801C60008
-:101BC000602008209C6005A0380162209F60000012
-:101BD00065A09C6005A0C81D48784A796220CE00A7
-:101BE000487862209F60000085AC000010110C084E
-:101BF00075254A780500A920100006A0048086807B
-:101C00008E81081200A2041FFC1D86808E810500B3
-:101C10005601A920100005A0B8011AA1A81213822C
-:101C20008D8128021AA12012041F0C1E28001AA15F
-:101C300008231082041F0C1E0600003284A0FFEF50
-:101C400080200E005E0105000600003285A0001015
-:101C5000B80C747DD07006A50409DA1E10785020E7
-:101C60000C08771B0409DA1E46A070790025008055
-:101C700012A10920400008123000D07206A21801FB
-:101C8000408809208000C600127107700100992069
-:101C90003000A920200080AC0100A02061200000BD
-:101CA000FF8810010C08771B0870FCD0E80D077046
-:101CB0000200912001808CA0E0013815A553FF8C13
-:101CC0002011FF880409C71E5000002C8E78A9201F
-:101CD000200080AC0100A020A5530408C71E46A028
-:101CE00018721C73C4DA10012074247592A240008B
-:101CF0009BA30000A3A40000ABA500001A721E73F2
-:101D0000C4DA18012274267506A0077004000409BD
-:101D1000C71EFF8C10010C087F1BCE000C087F1B18
-:101D200046A0887800808A7886A00200C0017C7A6C
-:101D3000787BC4DA1001847C807D7479078104800B
-:101D4000048010A299A30000A1A40000A9A500008E
-:101D50001A721E73C4DA8805227426757004146022
-:101D6000FCD018116920404710006920804791205D
-:101D700000801F680200FF88200146A08C78602048
-:101D8000700C8B780000AC7885A00300AE789120B1
-:101D900001809800CE008B7800000C085C20046065
-:101DA00084A00F005900FF8830018C786020046007
-:101DB00084A00F0019000408261E05000200EC1E76
-:101DC000071F201FEC1E2D1FFD1EEC1EEC1EEC1E1F
-:101DD000051F1E1FEC1EEC1EEC1EEC1EEC1E392017
-:101DE0000004BC7805A7BE78086005A70A600C0847
-:101DF000691F9C60BA789F6000000C0848200500AD
-:101E0000BC78C4D00801580C1C60BDC01E603000F6
-:101E10000C088620BC78C4D00801080CBF780000EC
-:101E20000460078084A0FF00B278018038010C08AC
-:101E3000691F2001BC78C5C0BE7810000408841F4B
-:101E400005000C088320BC788CA0000E1011C4D0B3
-:101E5000081128080C08691F10110408841F0500C8
-:101E6000BC78C4D010010408EC1EBF7800001467D1
-:101E700011200100A822186084A0FF0005A088019D
-:101E8000BCA700FFA92020008EA001005001BCA724
-:101E9000008011200200A92000018EA0020008018C
-:101EA000C0000C089A1B002D912000802B680000B8
-:101EB0002F680000086884A0DEFF0A68E8AD100003
-:101EC00091200180041F511F11821801A9200001D7
-:101ED000580C0C087F1B05009F600000B4786DA0B3
-:101EE000002CB6781011BA7838009E68002D026078
-:101EF000B87806AD08110260B0780180B278301170
-:101F0000BC78C4C0BE78B878602006A00500E600A2
-:101F10002EA03025BA7DB67DAE65B2651C60A2608C
-:101F2000482084A9FFE11E6084A9600060010C08BC
-:101F3000E93FFF864011FF853011392000080C0869
-:101F40004820040846209665A6659A66AA66146726
-:101F500071208047FCD710117120404784A7000FE3
-:101F60000B8084A71F00200103800380038003806F
-:101F700005A1C07168A10027078084A00F0003801D
-:101F800003800380C47100A1C26091200080147896
-:101F9000C4D03801FCD71811F4D040111000FCD087
-:101FA0002811086E84D6F001FCD9E011912001803F
-:101FB0000C08021C912000800C08B21D91200180A9
-:101FC0001478C4D004094620FCD72011F4D0301175
-:101FD00004084620FCD01011040846201B60210094
-:101FE00004084620246096A001001011008026609D
-:101FF000106A146802A268026001912001803920F1
-:1020000000029C60BA789F6000000C084820040819
-:102010004620082CFCD9F001006865A0D801046AAC
-:10202000007084A002006801487006A25011046B81
-:1020300060210423026005A0081102696022026188
-:102040009800002D60200C08BF26086E60210262F7
-:10205000066950000068026965A01001026108006D
-:1020600006696021036000006021FCD91801B4A654
-:10207000FCFF0A6E1068087D28850A7D00801268C2
-:1020800091200180B4D62801B6A640000A6E0C0843
-:10209000131CEE000500086005A70A60912000806F
-:1020A0000C08B21D91200180B87865A028019C60C1
-:1020B000BA789F600000780CB678BA78050070791D
-:1020C0007478182884D31801008012A1200200809F
-:1020D00012A1781284C37C7A1A72787A1E72C4DADA
-:1020E0002001847A2272807A267206A084D30801A5
-:1020F00000807678D2701C7805A0380101801E78A7
-:102100002011040E82209120804005003920982063
-:10211000100039209E20042705A0600100AC682033
-:102120000869106812690A680C69146816690E68F3
-:102130003887880C0500030009000F0015001B00FC
-:10214000000015001B000000412000000C78020078
-:102150004A222522A92019213920748F3427107D85
-:10216000C000846086A00301041903211461186073
-:1021700005A12001FF86D81104080321038680A051
-:10218000558F0C6202220080106202220C08D01DC2
-:1021900030868EA60F00040984216C7865A0081D86
-:1021A000087802A62012ACD510113A26050082A6A6
-:1021B0000300041A8421912000806920000018681F
-:1021C00084D0F8111120558F0422C6701082042289
-:1021D000CA7084D6301110820422DA701082042270
-:1021E000DE7085A62080C2701B68010091208040AF
-:1021F000107884A0CFFF1278912001803B2000004E
-:1022000005001078ADC01278040884213A260C0825
-:10221000502204196C226C7865A00419AE2091201C
-:102220000080107884A0CFFFFF860801ADC012782F
-:102230009120018004086C223920748F3427107D8E
-:10224000A000846086A0030104196E211461186047
-:1022500005A12001FF86B81104086E2180A6558FC4
-:102260000C6202220C08D01D30868EA61E000409C6
-:1022700084216C7865A0281D087802A62012ACD5B0
-:1022800010113A26050082A60600041A8421912026
-:10229000008069200000186884D0F8111120558F43
-:1022A00009204E8FA8261C2104221A2008811082A2
-:1022B000041F502185A63080C2701B680100912048
-:1022C0008040107884A0CFFF12789120018006A072
-:1022D0000920758F0A203A2005001078ADC01278C9
-:1022E000B0003A260C08502204196C226C7865A0C4
-:1022F00004191E2191200080107884A0CFFFFF8652
-:102300000801ADC012789120018004086C22912050
-:102310000080077004009479D47002A1280268013B
-:10232000907B02A350111000028038113A261078D9
-:10233000ADC0127891200180050084A100FF40010A
-:102340000F810C810C8104800480078000A118009B
-:102350000781048004809C7A10A21A72987A06A0E1
-:1023600011A21E72C4D43001A47A11A22272A07AE2
-:1023700011A22672A1203000037000000920548FA2
-:102380000A2609819821042184D008013386B0A649
-:102390000200A826A65303861270077001009079E8
-:1023A000947800800AA1081206A02820747984A1DC
-:1023B00000FF40010F810C810C81048004800780A4
-:1023C00000A118000781048004807C7908A1787A34
-:1023D00006A011A2C4D42001847B19A3807C21A46F
-:1023E0000870FCD0E80D84A0E001D001107D312000
-:1023F000548F3426A8780080AA788CD038110770C2
-:102400000600047094D0E81D04088621692047471F
-:102410006B200300AC7885A00003AE7806A04800CE
-:102420003020D67591208040967D107DACA5CFFFE1
-:10243000127D91200180AA78077006003A26037069
-:1024400001001A711E72C4D5100122732674050092
-:10245000846086A00301D8111461186005A1B81129
-:1024600069200000186884D090110C60C67010605C
-:10247000CA70C37020801B680100912080400C0846
-:10248000D01D040E43226C7865A0101D0500590074
-:1024900030156C7865A0E0191004290000156C78DF
-:1024A00065A0D81DE000846086A003016811186053
-:1024B000FCC01A6086A0040038110478A4D0200162
-:1024C0000C08D01D06A005007900181185A0010098
-:1024D0000500B900101141200100107D0500FF88A2
-:1024E0001001912080400500907B9479D47002A166
-:1024F000181185A300000500100202A30500028048
-:10250000050084A100FF40010F810C810C81048033
-:102510000480078000A118000781048004809C7A51
-:10252000987BA47CA07D10A206A019A321A429A5B4
-:1025300009201800286005A01001092040000C089F
-:10254000341BD001A8780080AA788CD010151460B4
-:10255000FCD0181169204047100069208047912065
-:1025600000801F680300AB780000AC7885A00003F2
-:10257000AE78912001806800AB7800000C08D01D77
-:102580009079947800800AA1081206A09678D670F7
-:1025900006A071201000912001800500FCD71811C1
-:1025A00009205847100009209847912000800A20F0
-:1025B000F6000920804779200001FCD7201109206E
-:1025C000404779200002042186A000008011FCD73A
-:1025D000181109204547100009208547042105A04E
-:1025E0003011307884A0C00010111B785200FE001A
-:1025F000050009200200692000470120FF01042096
-:10260000FCD004194B237120804779200001212040
-:10261000BF494B780F000120FF010420FCD01801B6
-:102620001920373E3000A1202B011920373E84D1DC
-:102630001001A1202B02042305A040019A781883E1
-:10264000AC2318839823A6531833A80C9B7800005A
-:102650009B782000A9201000AF780000AF782020E0
-:10266000041F29230370000016008CD109200000EC
-:102670000801BDC10C086C241E00207084A00F004E
-:1026800085A0006306780F7800904378D8005378CF
-:1026900090000B78082F52744F70000009814001A0
-:1026A00071204047792000022120BF4704080623FB
-:1026B0000C0826250500160011200101BCD11011BF
-:1026C000112001028CA10F00042284A0F0FF05A1BB
-:1026D00012201E000C086C24050011200101FCD3FF
-:1026E000101111200102A92009000B81041F72237F
-:1026F0008CA1000E042284A0FFF105A11220050088
-:102700001920020009200101A92005001382041FDD
-:10271000832394A2E000042184A01FFF05A20A20C5
-:102720001983180109200102780C0500112001010C
-:10273000FCD3101111200102A9200C000B81041FF1
-:102740009B238CA100F0042284A0FF0F05A112207E
-:10275000050011200201FCD31011112002020422F5
-:102760009CA0300F84A0CFF005A112200500C60068
-:1027700061200001BCD1101161200002BCC10381A5
-:10278000038080A020009A60AC62AC63CE0005009C
-:10279000C60061200001BCD1101161200002BCC143
-:1027A0000381038080A022009A60A46084A0DFFFE0
-:1027B000AE60CE000500C60061200001BCD1101142
-:1027C00061200002BCC10381038080A020009A60C8
-:1027D000A4608CA220001801ACC29DA30040ECC3F1
-:1027E000B4D30811EDC3AE621020A460AE6318200C
-:1027F000CE00050091200080C600E600186805A004
-:1028000004095024FCD118016120D08E10006120F1
-:10281000C08D0C0858246005A9200101FCD11801C5
-:102820006120D08D10006120C08CC6000C08582497
-:102830002801CE00608C041F1224A8040E00FCD1D5
-:10284000280182A0D08D71208047200082A0C08CFA
-:102850007120404776707271382101200400627047
-:102860007F700F00D071C4C1D2710C08CB22C000A0
-:10287000FCD1181171204047100071208047206062
-:10288000DDC0226072713821002C7A7001200600B0
-:1028900062707F700F00D071C4C1D2710C08CB225E
-:1028A000012000001000012001009120018005A0FE
-:1028B000EE00CE000500042C05A070016020106021
-:1028C00006A340110C6006A22811146006A1101185
-:1028D00006A020000060800C85A001000500F60025
-:1028E000E60016007920804771200001BCD120113C
-:1028F000792040477120000220798CA10F00EC70F4
-:10290000C4D010111E0060000B810B810B810B8164
-:102910000E008DA10008BCD010118DA1000F042164
-:10292000EE00FE000500012001470420ACD0381164
-:10293000E468ACD0200184A006000811090005005D
-:102940001460E600360018207120404CFCD01011B5
-:102950007120C04B078084A00F0003800380038098
-:1029600070AE047084A00A0004192325087194A194
-:1029700000FF040923258CA1FF001C7084A000FF28
-:10298000C001047085A03A0006700120090002A170
-:10299000D81601200A0002A1D01601200C0002A1C5
-:1029A000C8161C7084A0FF001E70047084A0DFFF96
-:1029B000067001200A0006A1A80101200C0006A152
-:1029C000A0010120120006A198010120140006A117
-:1029D00090010120190006A188010120320006A102
-:1029E0008001D80009200C00D00009201200B80096
-:1029F00009201400A00009201900880009202000E7
-:102A0000700009203F00580009200A0040000920FA
-:102A10000C002800092019001000112000000021DE
-:102A200005A20A70047085A00A0006707120004794
-:102A30000470BCD05801FCD32011EA7371204047C8
-:102A40001800EE73712080471F700D003E00EE00ED
-:102A500005000120FF010420FCD0D0110120FD045D
-:102A6000042082A00500A01271200002EC718CA14C
-:102A7000001C0F810C810C8179200001EC7884A06E
-:102A8000001C07800480048005A18AA007000802BA
-:102A90000500020074255B2574255B254E256825FD
-:102AA0004E25087084A0FFC385A000300A70087806
-:102AB00084A0FFC385A000300A780500087084A0B8
-:102AC000FFC385A000200A70087884A0FFC385A0FA
-:102AD00000200A780500087084A0FFC385A0000CC0
-:102AE0000A70087884A0FFC385A0000C0A7805004E
-:102AF000040E7525912000807120000006001870DA
-:102B000084D0E81D0E0071201000CA700E00C6703F
-:102B1000C3700280DB70040ADF702A00712000009D
-:102B20001B70010091208040F80C3C7F587E307C67
-:102B3000387DA0788A708E75927496769A7794A56F
-:102B40003F00F4D43801BCD7281184A77D000419B4
-:102B50009C3C71089CA40F0082A304002003A6A340
-:102B6000070030191824078584A00F0002006C2B81
-:102B7000572C952CFB2E7932D03276330534D9344C
-:102B8000AB35C725C4259E29852A4D32C4250C089E
-:102B90007525050006A0380008788DC00A7806A0C3
-:102BA00002704A704270CE705C7005A0041918273C
-:102BB000607084A007000200E12552265A26632691
-:102BC0006C26FE26752652263078BCD0101DD0719A
-:102BD000BCD1F819B4D104192F26A07086A0010029
-:102BE000C009147005A0A819B0706DA0006865A098
-:102BF00055A09B7880000C6BAA7B086845A0106DDF
-:102C000004686DA05DA086A801001801BC69AA7DBA
-:102C1000AA79C0684DA01C6E0120100004084B2842
-:102C20005C7005A00419C625C600D600B0706DA062
-:102C3000006865A055A09B7880000C6BAA7B086893
-:102C400045A0106D04686DA05DA086A80100180164
-:102C5000BC69AA7DAA79C0684DA01C6E0120200025
-:102C600004084B280C085B3C0419C6251B78680037
-:102C7000B8706DA0B4685A789468D678DE78986891
-:102C8000D278DA7808788DC00A78BC683E70B4C112
-:102C9000D271B47065A0C068567003700200002D38
-:102CA0004A7080AD0900427005000C085B3C2011A1
-:102CB0001B7854000370040005000C085B3C2811CD
-:102CC00011200C0019040370040005000C085B3C83
-:102CD000281111200600D1000370040005000C0823
-:102CE0005B3C281111200D008900037004000500D1
-:102CF0000C085B3C501111200600410078707B707D
-:102D0000000068204A700370040005007071FCC167
-:102D1000078182789B78800086A20C002011AA7A15
-:102D20000120010098008CA11F008DA1C000AA798C
-:102D300086A20D002001AA7A012002003800AB789B
-:102D400020007471AA79AA7A012004009B7860009F
-:102D5000AA785B7804001B7813010C086E3C7F7026
-:102D60000F00D070B4D06801B4C0D270C600B47087
-:102D700065A0086084A0EFFB0A60186001801A60FB
-:102D8000CE000500147005A03811D070B4D0280111
-:102D9000B47006AC1011290C05001600A07186A1B4
-:102DA00001002805D600260000211120010012A2F2
-:102DB000B0706820006806AC20011182B001C90023
-:102DC000C80CC60000211120010012A2B0706820BA
-:102DD00000686020086084A0EFFB0A601182100187
-:102DE0004100B00CA3700100CE002E00DE001E00DA
-:102DF0000500E8AD0500A87006AD1011A4706820AC
-:102E000005000C085B3C0419C625787068207077B3
-:102E10000C08953B502C0C08F63C9B7880001468FD
-:102E200084A01F00BDC0AA781C6E412001000120B3
-:102E30000400040850280C085B3C0419C6259B7844
-:102E400080005C706820146FD070B4D06801B4C08A
-:102E5000D270C600B47065A0086084A0EFFB0A6061
-:102E6000186001801A60CE000C08953B502C0C08AD
-:102E7000F63C246805A0300182A00600080210007C
-:102E800027680500146884A01F00BDC0AA783120FF
-:102E900020004120010001200300040850288DC2B9
-:102EA000D272BC7200A215A0507108812AA108023A
-:102EB000BC7164210465FF85701152712184A81DC5
-:102EC000D0708CD02801CC7005A01011CF700A00F2
-:102ED00005000022900CD0708CC0D270CF70000022
-:102EE000346005A0B01D086784A73F07D001D4D780
-:102EF000801D84A72100681D84A70200300184A7DB
-:102F00000400380DBCA7FBFF0A6784A71802081D40
-:102F100084A700013001186005A0D819BCA7FFFEE6
-:102F20000A676825236800001C6E84A60E001863DB
-:102F300028011C6002A3200218015808FF834819C9
-:102F4000582D502C5271BCD72011287022603A6045
-:102F50001000BCC70A67C06865A04DA00061602A68
-:102F600041200100146B9CA31F009DA3C000FCD155
-:102F7000100184D610019CA3BFFFA4D610019DA30D
-:102F8000200084A60E0004190228A5C70A67002C99
-:102F9000C668A07786A701007811D070B4D0601100
-:102FA000007082A0020040123078BCD028119B78BB
-:102FB0008000AA7B040849283987A2775027AC777C
-:102FC000B0A70500A87006A60811A476AE763A2C24
-:102FD00038873A2D38873A2838873A2338873A2570
-:102FE0003078BCD050019120008091203D30D070CD
-:102FF00084A03D30912000809020D5AA00002001BF
-:1030000021840022041951270500DCD10409F1377D
-:10301000292020009CD6201128858CD608112885CF
-:103020004088146F0C6108818CA1FF00C87060A1FA
-:10303000642CFF8C8801146006A7D01DB860018045
-:10304000BA60881D602A086085A000010A6000221D
-:103050002184041951270500602A0E61BE69002CE5
-:10306000C66840880860D5C00A60A07786A70100BE
-:103070000419D927D070B4D00419D927007082A0C0
-:103080000200041AD9273078BCD00419D9279B78BC
-:103090008000AA7BAA7DAA790120020006001860A0
-:1030A00000801A600800060060290461602A0C088C
-:1030B000093D901584A11800800184A11000180119
-:1030C0000C089A39481584A108003801A06984A128
-:1030D000000618110C08B838F800A06984A1001E79
-:1030E000280584A100087801C6006029006085A039
-:1030F0000020026004618DA110000661CE000C0862
-:103100009A395011A06984A1000218010C08FD38F9
-:10311000180084A10004F019A06984A100103001F6
-:1031200014698CA100FF0F810C08C5232E008CA60A
-:10313000E00084A66000280186A0600010118DA127
-:1031400000408DA10401B6699B7860000028AA7830
-:103150001868FDC01A68BCD66801FCC08370000006
-:103160008AA00D0028038AA00C00827101200C00A7
-:103170000C808671AA781835403328340080AC80E2
-:1031800080AF2B00A0209B78000080AD0B00982022
-:10319000A653A8239828A02586A220000815D07041
-:1031A000B5C0D270002CB670002DBA701468FCC087
-:1031B0000780827886A2020004092129A07000807D
-:1031C000A270B07498A40500A87006A30811A47397
-:1031D000B27386A210000409C625DE00CE000500E9
-:1031E000007005A0E01986A20200041938290C0815
-:1031F0005B3CA8191468FCC007808278912000808D
-:103200001B786800B4685A789468D678DE78986835
-:10321000D278DA789120018008788DC00A7826016A
-:10322000D600C600D07084A0002E9020CE00DE0014
-:103230002E0100295670BC683E7003700200002DFC
-:103240004A7080AD090042703078BCD040019120B6
-:103250003D30D07084A03D30912000809020A0703F
-:1032600005A0081105002184E80D4C72BC7000A275
-:1032700015A00408512786A2100060150C085B3CBD
-:103280000419CC281468FCC0078082781B78680079
-:10329000B4685A789468D678DE789868D278DA7804
-:1032A00008788DC00A78A0700080A270B07490A4D5
-:1032B0000500A87006A20811A472B2720029567007
-:1032C000BC683E7003700200002D4A7080AD09009A
-:1032D00042700500B46B9DA300205A7B1468FCC0AB
-:1032E00007808278946BD67BDE7B986ED27EDA7E06
-:1032F0001B78680000295670027208788DC00A7821
-:10330000002305A67001D07084A0002E86A00026A0
-:1033100018110920000010000920010084A20F00EC
-:10332000330080AD09004270002D4A7005009C29D1
-:1033300008420842F64108429C299C299C290C0815
-:103340007525087884A0FDFF0A78F60079200047EB
-:10335000AC78FE0084D0C001607186A10100040930
-:10336000612A86A10700700186A1050058117870B6
-:1033700068201B68040017680000206884A0FF0014
-:103380009DC0226863700000A3700000A470AE703E
-:10339000B2700C08AE26560111200400607186A19F
-:1033A0000100580186A1070018111F7005001000C8
-:1033B0001F700100D070C5C0D27001200A470420E0
-:1033C00084A0FF0086A0180030011870167005A0B8
-:1033D0001011A370010066000C084E3FA9201000D8
-:1033E000392000000C088B3AB8A70001041FEF2910
-:1033F0006E00007002002C2A0A2A0A2A022A2C2AAD
-:103400002C2A2C2A002A0C0875255C7005A038058A
-:1034100006AD181100685E708000206884D04811E5
-:10342000146F0C08953B0860D4C00A600C08C737BD
-:103430002000587060200068026084A6005F1E684B
-:103440001868FCD008011A6A176800002B68000091
-:10345000206884A0FF009DC022680C08BF1D1120B9
-:103460000400C874A0A40001B104A0AE1700990420
-:10347000A9200101C87479042084041F382AC0706F
-:10348000602021200200A92000011061FF81980125
-:10349000186016000600112002470C2202A112201B
-:1034A0000E001E0002A138031260281111200447EB
-:1034B0000422A5C012201B600000E0AC1000041F15
-:1034C000422A2184001D5E01637000000370000029
-:1034D0004B70000005004600042405A0A8016820E8
-:1034E000006806001A6A176800002B680000B468BC
-:1034F00084A0005F1E68206884A0FF009DC0226831
-:103500000C08BF1D0E00480C4E00232000000500D3
-:1035100082A2030010030C087525002302008F2AE5
-:103520000C2B1A2B82A2020010010C08752560706A
-:10353000637000007F7000002200D077C5C7D2778B
-:103540000200A62AA62AA82AE02AFB37A62AE02AF1
-:10355000A62A0C08752570770C088B3A7077BCA7E3
-:10356000008F0C08953B186005A02805FCD71811A2
-:103570002120C08D10002120D08E092005001120AF
-:1035800010000C08342BB8015601A9200101FCD70A
-:1035900018112120C08C10002120D08D4600092058
-:1035A0000500112010000C08342B4E001801208457
-:1035B000041FCB2A5E01388784A71F0090190408D6
-:1035C000C9250408C92570770C08953B186005A02B
-:1035D0002005FCD718112120C08D10002120D08E8D
-:1035E00009200500112020000C08342BB0015601E1
-:1035F000A9200101FCD718112120C08C1000212026
-:10360000D08D4600092005001120200081044E00C5
-:1036100018012084041FFE2A5E010408C925002227
-:103620000200112B132B132B0C087525637000005F
-:10363000D070C5C0D2700408C92500220200212B19
-:10364000132B1F2B0C0875250C084E3F007086A00D
-:103650000200041980370C08E137086084A0EFFBF2
-:103660000A600C087237040980370408C92504244D
-:1036700005A090056820042D0600146806A718010F
-:10368000202D0E00A80C0E0022201A6917680000D9
-:103690002B680000B46884A0005F1E68206884A0C6
-:1036A000FF0005A222680C08BF1D212002471C2430
-:1036B0001983222310600180126028112120044701
-:1036C0000424A5C02220086084A0EFF90A600C0839
-:1036D000CA260C08E137050085A00100E00C002394
-:1036E0000200732B712BEE2B0C087525E47805A0D6
-:1036F000B01708328CA1000818010401C62510007B
-:103700000403C625082084A03000101104084D329F
-:10371000EC7884A00300D00D8478FCD0181184A12B
-:103720000700900084A1070086A004001811012062
-:103730000000500084A1070086A00500180184A1A4
-:1037400007001000012001000200D12BDA2BC72B4B
-:10375000AA2B4F3C4F3CAA2BE42B0C08752500707C
-:1037600086A004009011607086A002003011112024
-:103770000200192000000408852A607086A0060057
-:10378000B00D607086A00400900DE4790120030064
-:1037900004083B2F1868FCD010011B681D000C08A2
-:1037A000613A1B786E0005001868FCD010011B6898
-:1037B0001D000C08613A04082D3C1868FCD010016B
-:1037C0001B681D000C08613A1B78FA000500186898
-:1037D000FCD010011B681D000C08613A1B78CB005F
-:1037E000050084A50F00C01100700200C925FB2B45
-:1037F000FD2B803780378037FB2BFB2B0C08752582
-:103800000C08E137086084A0EFFB0A600C087237EF
-:10381000040980370408C925E47805A0041BAC2BF3
-:1038200008328CA1000818010401AC2B100004031D
-:10383000AC2B082084A0300018111B78680005000C
-:10384000EC7884A00300C80D8478FCD0181184A102
-:103850000700900084A1070086A004001811012031
-:103860000000500084A1070086A00500180184A173
-:1038700007001000012001000200492C4D2C442CAF
-:10388000422C4F3C4F3C422C493C0C0875250C08FF
-:10389000673A1B786E0005000C08673A04082D3C57
-:1038A0000C08673A1B78FA0005000C08673A1B7889
-:1038B000CB000500002302005E2C5C2C602C0C0861
-:1038C0007525040805341B681600A3780000E47908
-:1038D00084A1300004090534EC7884A003000409B5
-:1038E000053484A10001980D8478FCD0181184A1BE
-:1038F0000700900084A1070086A004001811012091
-:103900000000500084A1070086A00500180184A1D2
-:1039100007001000012001000200922C4D2CC72B43
-:103920000B3C4F3C4F3C0B3C493C0C08173C050002
-:1039300082A2050010030C0875259878402000230A
-:103940000200A12CCB2ED52E00220200BD2CAA2CC9
-:10395000BD2CA82CAD2E0C0875259B781800A878D6
-:10396000102084A0FF0082A02000040A303A8AA020
-:103970000400041A303A0200303A303A303AE4395E
-:103980009B781800A87984A1800048010408303A87
-:10399000007005A0D81D112004000408B73584A1CB
-:1039A000FF008AA01000041A303A0200E52CE32C34
-:1039B000F72CFB2CA92D303A303AAB2D303A303A67
-:1039C000A92EA92E303A303A303AAB2E0C08752584
-:1039D000E4D6400101200003008000803A781B7883
-:1039E000C70005001868FCD018011B681D00900C6A
-:1039F00004080B3C1B681D0004085B3A206922691F
-:103A000084A6001804194C2D206884D00419542D64
-:103A1000186886A0080010111B680000D4D668053D
-:103A2000BCD6580583700000186884A03F008AA0A7
-:103A30000D0018078AA00C00827101200C000C8078
-:103A400086719B786100AA785601360146011600FE
-:103A500008328CA100061801A1202B021000A12021
-:103A60002B011E009B7800000080AC8080AD0B0015
-:103A70009820A6534E013E015E01386005A050110A
-:103A80001C6884A00E0004095B3A0C086D3A2B7880
-:103A90000830100001803A601B7871000500E4D600
-:103AA00030011B78830005001B788300050084A685
-:103AB0006000D00DDCD6C00DFCD6A001FCC65A7E3D
-:103AC000B66EDC7AD879D078078084A07F0008A110
-:103AD00091A20000986B002102A3B268946B0022AF
-:103AE00003A3AE68F4D61801F4C65A7EB66E007011
-:103AF00086A00300481106000C084E3F0C0808423F
-:103B00000E001B788000050006A00C08E842B06A91
-:103B1000AC69986C946B002205A12001002222A4BC
-:103B200000211BA3AA6CD27CDA7CA66BD67BDE7B41
-:103B3000002305A43011F5C65A7EB66E1B788000AE
-:103B400005001B788000002215A118110C080842FE
-:103B500005000C08354205000C08752504083F2EA9
-:103B6000C6005470602020698CA1FFEC22690060BF
-:103B700084A0DFCF02600C08173906A0402038204F
-:103B80000C08BF390408332EC60054706020482C3E
-:103B9000A87A94A2FF0086A20400D8112069E4D17B
-:103BA000701139200000412000003120000006A0E3
-:103BB00010200C081A390C08BF390408332E8CA1C8
-:103BC000FFEC226904618CA1DDFF06610060ACC0DE
-:103BD000026086A20300D001046184A110004805A0
-:103BE0000C08913B0C089A39FF881805CE009B7889
-:103BF00060000028AA78587E95C65A7ED4D618113F
-:103C00001B786E0005001B78820005002069CCD16E
-:103C100030018CA1FFFD22690060ECC002603920F8
-:103C20000000412000003120000006A010200C08F8
-:103C3000BF3986A201005801046184A10800B001C7
-:103C40000C08913B0C08B838FF888019780020696F
-:103C5000C4D130018CA1FFFE22690060E4C0026083
-:103C60003120000006A010200C081A39CE00587E22
-:103C7000D4D618111B78710005001B78830005004D
-:103C80000408573A08289B78800019208000A878FB
-:103C900094A0FF0086A20100B811002302A186A013
-:103CA00001000409AD2DA87CA4A4FF0080A402009B
-:103CB00000A3182002A1040AC12D0409C12DA824C3
-:103CC000A87A041F5D2E180C84A2F00082A02000A8
-:103CD000B806002282A021009816A87A18831883BB
-:103CE000002102A3A00A86A2230050091C6884A018
-:103CF000F1FF1E68587E84A6F1FFA5C030205A7ED1
-:103D00000860A5C00A60A07805A00409342EA82088
-:103D100098799B786000AA78112080009A79A87819
-:103D200098799A7AAA78987A041F8B2E95C65A7E2B
-:103D3000D4D618111B786E0005001B788200050090
-:103D40001883002102A3040A442E84A280000419CF
-:103D50005B3AA07805A0C80804085B3A0408303A2A
-:103D600054704DA09B781800A87884A0FF008EA006
-:103D7000010010010C087525A87A94A2FF004B7869
-:103D80000800A87884A0FF008AA00500041A303A31
-:103D90000200303A2F38303A4A39593D82A20000A9
-:103DA00010110C0875250C08613A1B78820005007B
-:103DB00082A2030010110C087525FCD4D01160708C
-:103DC00005A010010C087525146F7277BCA7008F31
-:103DD0000C08953B086085A021000A60388784A7FD
-:103DE0001F00B01D0C08643A637002001F700900C8
-:103DF00010000C08703A1B788200050082A20400B3
-:103E000010030C08752500230200052F9B30D730C6
-:103E100086A2030098050072D87CDC7DD07FD0712B
-:103E2000B4D12805BCD11815012001470420C4D005
-:103E3000F011687884A0FF00D01182A20200B812AD
-:103E4000D6003B7800831B785900B8706DA0B46829
-:103E50005A789468D678DE789868D278DA78B4C1DF
-:103E6000D27103703000DE000120000058003B7862
-:103E700000131B7857000120000020000072D87C3E
-:103E8000DC7DD07F4670A068ECD0180108608DC042
-:103E90000A6084A20F0002007C30562F532FA731F6
-:103EA0003232C925512F512F0C0875250860D4C016
-:103EB0000A60E4D62001447086A01400E8110C08C2
-:103EC0004E3F092000001868FCD00801447086A00D
-:103ED00014006801186886A0080004193E3058785C
-:103EE0009CD004093E302068ACD004093E301B68E9
-:103EF000140009200200A80468788CA0FF0088053F
-:103F000086A1080058110860A4C00A600C08723726
-:103F100040050C08E1370C084E3F600086A12800E0
-:103F20000015186005A0780D0180680D0180580DFE
-:103F30001E60480C206884D00409C92584C022680A
-:103F40000C08BF265870C600602000680260CE00D2
-:103F50000460026805A0002D0811026006600408D4
-:103F6000C9251600FF81F015007086A03000D0052D
-:103F7000D071BCD1B815B4D1E8115C7005A0901512
-:103F8000A07086A001007005037000004600560076
-:103F900076006600C600D6000C08F125DE00CE00D3
-:103FA0006E007E005E004E00D071B4D1D811037057
-:103FB0004000C0000C085B3CA8111B786800D600CC
-:103FC000B8706DA0B4685A789468D678DE7898682E
-:103FD000D278DA78B4C1D2710370300008788DC01D
-:103FE0000A78DE000C08FF301E00FF8104093E3015
-:103FF00084A600DF1E682B680000146F86A10200F3
-:1040000004193F30186886A0140030110820E4D647
-:10401000180168788CA0FF000C087A3A0C08CA26B0
-:104020002068DCD07815178794A20F0013821382C2
-:10403000138284B20006180190A2C04B100090A217
-:10404000404C90A200001C22C4D370012068E4D030
-:10405000280184A0FFEF2268ACC31223108204223F
-:1040600085A0380012201182D4D33801A068C4D0B2
-:1040700020110C0867310408C92508608DC00A604A
-:1040800008002A6916691868FCD0100144701A6883
-:104090008CA600DF1E691064FF84680109200247B6
-:1040A000042101800A202184126428112120044760
-:1040B0000424A5C02220186005A0180101801A6000
-:1040C00018110860A4C00A60206884D0301100680C
-:1040D00005A008110260066020005870602000688A
-:1040E00002606120004787680301082D6B200000F3
-:1040F000686005A06A611001022D08006E610072FF
-:1041000086A23000580186A240000419C925037018
-:10411000020048706820C468602005000370020037
-:10412000B8706DA0BC683E70B47065A0C068567071
-:10413000002D4A7080AD09004270050082A2040083
-:1041400010020C08752500220200A630B530C130DF
-:10415000B53086A50013600186A50083901D03700D
-:104160000000186001801A60086084A0EFFB0A60FC
-:10417000007086A0050028010C08613A1B788200B7
-:1041800005001B788300050090780780018084A0DB
-:10419000070080A018009A78A8798CA1FF0086A15A
-:1041A0000300280186A1000010010408303A1B78A2
-:1041B00083000500206895C02268FF8218110C0852
-:1041C000613A3000118210010C0875250C08703A14
-:1041D0001B78820005000C086E3C307884A0C0007B
-:1041E0007011160008328CA100081E00180104018D
-:1041F000FC3010000403FC301A7906A0050085A0ED
-:104200000100050084A6600030112F6800003368AB
-:10421000000004086631DCD69811B468DCD0801147
-:104220009869946A2E69326A447005A030110022A0
-:1042300005A104094E3F4770150004084E3F0500D4
-:10424000ACD6F001F4D630012F68000033680000CE
-:1042500004084E3FB46884A0004035A6F4D6A01DE3
-:10426000447005A0101147701500DCD62811B46801
-:10427000DCD01001A86CA46D2E6C326D04084E3F8A
-:10428000F4D630012F6800003368000004084E3F68
-:10429000B46884A0004835A6F4D6A01D447005A0DB
-:1042A000101147701500082410250027078084A0EE
-:1042B0007F0008A191A200002E69326A002105A2A8
-:1042C000101104084E3F007086A00600100104087B
-:1042D0004E3F050046690860CDC0CCD308018DC0B3
-:1042E0000A6018683A681B6806008F6800009368C7
-:1042F0000000306A2C693E6A42692F680300336807
-:10430000000037682000976800009B68200000705C
-:104310000200C925963190318E318E318E318E3129
-:104320008E310C087525206884D018110C08C73709
-:1043300030005870502C602000680260602AA0AEE7
-:104340001700042405A010012020D80C222D6B207A
-:10435000000005000C08CD370C08E1370860CCC020
-:104360000A602B6800009B780E00146F38691A6988
-:10437000446916690920000086AE404710010920F3
-:1043800001000C081F43DCD6C8011C69EDC11E6981
-:10439000286882A00E009002486884A00F0086A0C2
-:1043A0000B0060115C6886A04700401101200147A6
-:1043B0000420ACD0181100270C089E241868FCD0EB
-:1043C00040011B68000068788CA0FF0010011B688A
-:1043D0001E00A0AE1700006822203C6A4069326AC5
-:1043E0002E69C06860200060A4D0800541202100B3
-:1043F0004920050051202000D600F6005601460154
-:10440000792000470C08B21B4E015E01FE00C87007
-:10441000102009200101260004226DA0400114682B
-:1044200006A710010068C80C2068D5C022682E00BD
-:1044300010820981801DDE00637003007B70000024
-:1044400072777F700F00D071C4C1D271186886A0D6
-:1044500002003811176800002B6800001C68ECC0CF
-:104460001E680C08BF1D0408C925D87CDC7DD07FE0
-:104470000C08FF302B6800009B780E00146F0C08AE
-:10448000723C8CA0FF0016691868FCD010014470C3
-:104490001A688CA600DF1E69637000000408C92535
-:1044A000007005A010110408C92506A00C084E3F95
-:1044B0002069ACD110111B6814008CA600DF1E69A6
-:1044C0002B680000206884A0FF00226800700200B2
-:1044D000C9256F326F327232723272326D326D3282
-:1044E0000C087525186804083B2F0860A4C00A60F2
-:1044F0001768000004089537002302007E328032DE
-:10450000CE320C087525FCD604195B2D00700DA069
-:104510000200C92590329032BA329032CB328E32BC
-:104520008E320C08752584A66000380586A06000D0
-:104530001015ACC6F4C6EDC65A7EB66E1C68ACC08B
-:104540001E6886A1020048010C084E3FAC69B068A5
-:1045500015A118010C08354210000C0808421B7800
-:104560008300D071B4D10419C625A07086A00100C3
-:1045700004190D260500ECD6F0091868FCD070016E
-:10458000F4D630111B6815001B7883000408C6257B
-:104590001B6807002F680000336800000C08173CF8
-:1045A00005000C08752500230200D732F93251337B
-:1045B0000C08752500700200E132E332EA32E13284
-:1045C000E132E132E132E1320C087525AC69B068C4
-:1045D00015A118010C08354210000C0808421C688F
-:1045E000B4C01E68D070B4D00419C625A07086A0CF
-:1045F000010004190D260500FCD604194133007092
-:104600000DA00200C9250F33093339330F333E3370
-:10461000073307330C0875259468D678DE789868D8
-:10462000D278DA7884A66000380586A0600010157C
-:10463000B4A6BFBFEDC65A7EB66E86A10200480181
-:104640000C084E3FAC69B06815A118010C08354242
-:1046500010000C0808421B7883001C68B4C01E6858
-:10466000D071B4D10419C625A07086A00100041928
-:104670000D260500ECD6F0091868FCD010011B6867
-:1046800007001B78FB000500FCC65A7EDC7AD8794F
-:10469000986B002102A3B268946B002203A3AE685A
-:1046A000D2791B7883000500DCD630012B780930E5
-:1046B0001B7883000408C6258478ACC08678E4782B
-:1046C00084A00800501184A400020801F5C6DDC6CC
-:1046D0005A7E1B7883000408C625206895C022688E
-:1046E0000C08023CDDC60C08613A1B788200040805
-:1046F000C625002302007B337D337F330C087525EC
-:1047000004085B3A987DD4D6A815E479ACD1300181
-:10471000EC7884A0030010012B7809309B786000AE
-:10472000AB78000084A6FBFF5A789A7DE479ACD17F
-:104730002001EC7884A0030020110120140004085B
-:104740003B2F8478FCD0181184A10700900084A12D
-:10475000070086A00400181101200000500084A169
-:10476000070086A00500180184A1070010000120A1
-:104770000100C204907A94A207009B786000A87997
-:10478000FF8168059B788000A87B84A30100D0117D
-:10479000A87BA87B86A3040018110920DFFF58001E
-:1047A00086A3010018110920F7FF280086A3030043
-:1047B00048110920EFFFC60054706020046004A176
-:1047C0000660CE009B786000AB78000084A6FBFFFB
-:1047D0005A782B78093020698CA1FFEC22699A7DE8
-:1047E00004080B3CD12BDA2BF933FF33F733F733C3
-:1047F0000B3C0B3C0C08752520698CA1FFFC226941
-:104800000408113C20698CA1FFFC226904080B3CC0
-:10481000E47984A130002001EC7884A003007015B5
-:10482000007086A004009011607086A00200301114
-:1048300011200200192000000408852A607086A05B
-:104840000600B00D607086A00400900D007086A078
-:1048500000000409C625206984A120042801D4C1D0
-:104860002269186804083B2F18688EA002002001F6
-:10487000FDC01A680120140004083B2F8478FCD086
-:10488000181184A10700900084A1070086A00400ED
-:10489000181101200000500084A1070086A0050027
-:1048A000180184A1070010000120010002000B3C48
-:1048B0000B3C5C340B3C4F3C4F3C0B3C0B3CBCD6A4
-:1048C00070058071FF81580582A10D001813837057
-:1048D0000000280082A10C00827009200C009B7847
-:1048E0006100AA795601360146018470148110A234
-:1048F000867280A00B0000AD982084B200061801DB
-:10490000A1202B021000A1202B019B780000088120
-:10491000AC81A6534E013E015E010408113CD4D681
-:104920000419CF34206884D00409113C8CA660009F
-:1049300084A66000200186A060000811F5C194C122
-:104940005A79B6699B786000AB7800009B7861006B
-:104950001868FDC01A68AA7808800C810409F63727
-:104960008CA1F8000419F6375601360146011600ED
-:10497000A1202B0108328CA100061001A1202B02DE
-:104980001E009B7800000080AC8080AD0B0098205A
-:10499000A6534E013E015E011468FCC00780827878
-:1049A0000408113C1868FCD010011B6808000C08B2
-:1049B000613A1B78ED00050000230200E0349D35CC
-:1049C000DE340C087525D87CDC7DD07FFF8228156D
-:1049D000007286A203000409092FD071BCD1F8111E
-:1049E000B4D1E801012001470420C4D0C011D60091
-:1049F0003B7800881B785900B8706DA0B468A5C0DA
-:104A00005A789468D678DE789868D278DA78B4C123
-:104A1000D27103703000DE003000007220003B785D
-:104A200000181B78570084A20F0002008835453516
-:104A30001D35382F1B3588351B351B350C08752562
-:104A40001C68ECD0180108608DC00A60206985C11F
-:104A500022690068066005A0081102600860D4C0E1
-:104A60000A601C6884A00E002011C87188A1000192
-:104A700028003070BA683C71C87008A1042102682F
-:104A80000A2D5A71DCD62011FCC6B66E0408883592
-:104A9000B66E84A66000201184A6FF7FB668D80495
-:104AA000DCD6501184A6FF7FB6689468A668986823
-:104AB000AA680C084E3F7804ACD6400106A00C084A
-:104AC0004E3F08241025AA69A66A6800082410250C
-:104AD0000027078084A07F0008A191A20000AA6996
-:104AE000A66A0C084E3FFCD6B00184A6FF7FB668CC
-:104AF00010250824ACD638110027078084A07F0039
-:104B000008A191A20000986B002102A3B268946BE7
-:104B1000002203A3AE68007086A030000419C925E6
-:104B200003700200B8706DA0BC683E70B47065A0E0
-:104B3000C0685670002D4A7080AD090042700500B3
-:104B400086A50088481103700000186001801A6073
-:104B5000086084A0EFFB0A6004085B3A4370000021
-:104B600082A2060010030C08752500230200B73549
-:104B7000C835D23500220200BF355B3AC135BF359A
-:104B8000033651360C087525807A94A2000F0C0864
-:104B9000A5360408303AC10002005B3AD035D03562
-:104BA0000336D0355B3A0C08752571000200DC3500
-:104BB000DA35DA35DC35DA35DC350C0875250C08E4
-:104BC000703A1B7882000500007086A00200501128
-:104BD0000C08E13710000C084E3F086084A0EFFB82
-:104BE0000A602000007086A00300A80D0370050075
-:104BF0000120E08E8EAE404710010120128F682008
-:104C00004A7080AD0900427000220500007086A045
-:104C100002005811D070B5C0D270002CB670002DB3
-:104C2000BA7038000C084E3F2000007086A00300C8
-:104C3000C80D03700100807A94A2000F9B781800C1
-:104C4000A87C84A41F0015A26920C08D84B2000630
-:104C50001811FDC26920D08E042D082D5A716DA047
-:104C60002801146806A220010068B80C0C08A536BB
-:104C7000B46E5A7E206984A1000C0409CB366070A2
-:104C800086A006002811707006A2101162707A705A
-:104C90001B680500ADC11B680500ADC1D4C1226908
-:104CA0000C08673A0408CB36007286A2020058113D
-:104CB000D070B5C0D270002CB670002DBA70300024
-:104CC0000C084E3F180086A20300D00D03700100AF
-:104CD000807A94A2000F9B781800A87C84A41F00FF
-:104CE00015A286AE40470801FDC2A879A8798CA11B
-:104CF000FF001821C87068A1042D082D5A716DA0FD
-:104D00002801146806A218010068B80C0904B46EE2
-:104D1000206984A1000C0409CB36DCD078016070D6
-:104D200086A004004011707006A22811747006A3BA
-:104D3000101162707A700C086D3A80041B680500CF
-:104D4000ADC1D4C122690C08673A7B700000300401
-:104D50000370050084B2000618010120E08E1000E7
-:104D60000120128F68204A705601A92032000320CA
-:104D700000000080041FB4365E0184B200061001FA
-:104D8000FCC20800FDC2166A80AD09004270B76817
-:104D9000000723680008276803000500ECC6ACA6DE
-:104DA000600004091237986B946CAC69B06805A177
-:104DB000E011D27BDA7BD67CDE7C86A56000C8055C
-:104DC000F4D60811EDC6B4A6FFB75A7E09208300B9
-:104DD0009CD62801092082001920000020231A797E
-:104DE000ECD688050C0808427004B0681AA30021AC
-:104DF00023A4002405A3F801D27BDA7BD67CDE7CD9
-:104E0000B068F4D60811EDC6F4C65A7E11208300AE
-:104E10009CD62801112082001920000020231A7A34
-:104E2000ECD688010C0835427000192000002023C0
-:104E30001000B4A6FFB75A7E092083009CD610014B
-:104E4000092082001A79C0685670002D4A70C46823
-:104E50006020D071012001470420C4D0C815D4704F
-:104E60002DA0B801BCD14805807A94A2000FD8705B
-:104E700006A21801E07804A55815D670BCC1D271FD
-:104E80003804312001002C85180233861082D80C9A
-:104E90000500E07D94A500FF3001112008002F855A
-:104EA000810C37860800690C1782807884A0000F77
-:104EB00006A27001DA72D6765800807A94A2000FAA
-:104EC000D87036A2C00DE07834A5A80DBDC1D2714E
-:104ED000B4D10419C625002305A40409C625A07071
-:104EE00086A0010004190D260500206005A05001D0
-:104EF00001802260086085A008000A600F70000130
-:104F00002C702660050006A00C084E3F007086A09D
-:104F100002002001607086A0050050112B6800007F
-:104F2000176800001B680100236840001F6800012B
-:104F3000007084A00F000200C925A637A337C3372D
-:104F4000AF37C925A137A1370C08752549041104CD
-:104F50002800310458706020006802600C08BF1DF2
-:104F60000408C9256070637000007F7000000200B3
-:104F7000BF37BF37BD37BD37BD37BF37BD37BF3789
-:104F800004089A2A637000000408C9251B68000001
-:104F90000408A731006805A008110260066005003A
-:104FA0001064FF84680109200247042101800A205F
-:104FB000218412642811212004470424A5C0222042
-:104FC0000860A4C00A600500186005A010010180F7
-:104FD0001A6005000C086E3C1B68180090040C0851
-:104FE0006E3C1B68190068040C086E3C1B681A00B4
-:104FF00040040C086E3C1B680300180470770C0812
-:10500000953B74718CA1FF00103294A20006180128
-:10501000E8A1C08C1000E8A1D08D042D082D6820D7
-:1050200005A018117A700408C9251468707206A2C8
-:1050300010010068980C00680A201B6805007B704E
-:1050400000000C08CD37206884D010110C08C73739
-:105050000C08E1371F680000236820000C08BF1D02
-:105060000408C92582A203000419353AA87DACA51D
-:10507000FF00A87EB4A6FF002069BDC12269C4D18B
-:10508000B005C4C12269B4A6FF00300582A618008D
-:10509000180210013120180086A610000811308671
-:1050A0002B852B85412000000C08EE3A18010C08D6
-:1050B0001A39A0000C08BA3A0C0817392069C5C182
-:1050C0002269587E95C65A7ED4D618111B786E0078
-:1050D00005001B78820005000C081739587ED4D6CD
-:1050E00018111B78710005001B7883000500C600AD
-:1050F000547060200061E4D198050862178294A280
-:10510000FF0082A2180018021001112018000026CA
-:1051100002A20812302286A610000811308608620A
-:1051200094A2FF00EC78E4D0300182A20A00401281
-:1051300011200A00280082A20C00101211200C007D
-:10514000002202A5081228220C08BE3A2B852B85C6
-:10515000412000000C08EE3A18010C081A39200012
-:105160000C08BA3A0C081739587895C05A78CE000E
-:105170001B7882000500C60060290060E4D0881119
-:10518000B4D05011106084A00F00301104618CA1C4
-:10519000F5FF0661CE000500112032001920000045
-:1051A000F000A068CCD0C01D086294A2FF00EC788B
-:1051B000E4D0300182A20B00181211200A0028004E
-:1051C00082A20C00101211200C0008631F839CA304
-:1051D000FF0082A318001802100119201800AB78F4
-:1051E0000100AB780300AB780100AA7AAA7BC0A8C3
-:1051F00005002068C5C022680C087A3ACE00050078
-:10520000C600602904618CA1F5FF066111203200FF
-:10521000192000000000AB780100AB780300AB78E8
-:105220000100AA7AAA7BC0A805002068C5C0226830
-:10523000CE00050006A030201020C6005471602169
-:105240001820082084A0E0FF35A6867E18609A7892
-:10525000AE7E1266A47884A070778CA10F0005A1A1
-:10526000292005472C25CCD54001A4D3100185A0C9
-:105270000008FCD3100185A08080A67816608A788B
-:10528000B4A61F0037860482048005A60E60046061
-:1052900084A0D5FF0660CE00050082A2020004199A
-:1052A0003F3AA87A2069BDC12269CCD16805CCC13A
-:1052B000226994A2FF0082A20200041A303A0C086C
-:1052C000C1390C08173980A901000C200C08913B4A
-:1052D0000C08B838FF8878019B7860000028AA780D
-:1052E000587E95C65A7ED4D618111B786E000500DC
-:1052F0001B7882000500587ED4D618111B787100E7
-:1053000005001B788300050082A20200181284A207
-:1053100001004001547188A100000C21ECD1101152
-:10532000112000000C08AC3A79040C0817395878A1
-:1053300095C05A781B7882000500C60026006029B7
-:10534000006011200100ECD05811BCD0381114605D
-:10535000B4D02011A4C1066106A08800112000006D
-:10536000AB780100AB780200AB780300AA7AC0A842
-:1053700004000C087A3A206885A0000222682E00FA
-:10538000CE000500078815A7C6000920000054704C
-:105390006020FF82100109204000186080A00200F8
-:1053A0009A78A47884A09FFF05A1ECC0B4D008111E
-:1053B000EDC00061F4D1100185A02000A678166030
-:1053C0008A78046084A0EFFF0660CE000500060026
-:1053D000007086A0030010010E0010000E0098045B
-:1053E000ACD68805887884A040006805B87B078320
-:1053F00084A07F001815078284A0FF000409573A93
-:105400009AA00400041A573AF4D6D011D879DC7A5D
-:1054100008A191A20000D279DA79D67ADE7A0C0856
-:10542000E8421B78800084B20006180101200000C9
-:105430001000012001000C089A4105000C08752598
-:105440001B78800005001B788300050039200000D0
-:10545000412000003120000006A010200C081A395D
-:105460000C08BF39587E0C08733A1B78820005007F
-:10547000D10C2068C4C02268C600547060200C089B
-:105480004439B000810C2068CCC02268C60054703A
-:1054900060200C08DE396000310C206884A0FFEC2D
-:1054A0002268C60054706020046084A0C5FF0660B6
-:1054B000CE00050049001B78820005002768020025
-:1054C00049001B78820005000120050088000120AA
-:1054D0000C0070002068D5C0226801200600400042
-:1054E00001200D0028000120090010000120070004
-:1054F0009B787E00AA789DC65A7ED070B4D0680191
-:10550000B4C0D270C600B47065A0086084A0EFFB80
-:105510000A60186001801A60CE00050076003F879F
-:10552000BCA70F003B873B870387E0A0C04B8EAE34
-:1055300040471001E0A0404CB8A720009A7FA47912
-:1055400084A1E07FAE781260A47984A13F77A67829
-:105550001660046085A0380006607E0005009B7818
-:105560008000AB780100AB780200AB780300AA7A28
-:105570009B786000AB7804000008312000002920EF
-:1055800032009B788000AB780100AB780300AB78E9
-:105590000100AA7DAA7E9B786000AB780500040814
-:1055A0007A3A5601078084A0FF000380038080A020
-:1055B00020009A78A4798CA1E0FF21207A3B192061
-:1055C0001100A9200E0011203200042484A0E0FF65
-:1055D00006A128012084002310A2041FE23A5E01E4
-:1055E000050056010408303B2120883BA920090012
-:1055F0001120290082A5280050052084A99511209A
-:10560000330082A5330018062084A99519200A00CA
-:1056100011206500002202A5D0022084002310A2E0
-:10562000041F073B5E01880021207A3B19201100EE
-:10563000A9200E0011203300002202A54002208480
-:10564000002310A2041F193B5E0106A00500118271
-:105650005E0182A564002012087885A070000A7897
-:10566000042405A0050086A80200E8012120663B6D
-:10567000A9200D001120280082A52800480D2084B3
-:105680001920190011203300002202A5000E2084E9
-:10569000002310A2041F413B5E011120840182A55A
-:1056A0008501B00A90082120753BA9200300112034
-:1056B000240086A52400600920841120280086A5E6
-:1056C0002800300920841920190011203300040813
-:1056D000193B21100222033404460558066A077C50
-:1056E000104612461258125A146A146C146E177E21
-:1056F000219002B004E210E210E2091202300232FC
-:105700000342034404540456056605680678067A85
-:10571000070C070C070EE1100A330558055A066AF4
-:10572000066C077C077E000E9B78800046A0050073
-:1057300084A7000F0B8084A71F00038003800380D1
-:10574000038005A1FCD71801E0A0C06C1000E0A008
-:10575000C04C0500E600F60084D038017920000135
-:105760000920804771208047300009204047792078
-:1057700000027120404791200080042184A00F0086
-:105780000200C83BC83BC83BC83BC83BC83BC63B04
-:10579000C63B0C087525B469F5C18CA19FFFB6699D
-:1057A00005A08005587884A09FFF85A000605A78E6
-:1057B000287886A0141830154B780400487884A007
-:1057C0000400E01D4B780800487884A00800E01D24
-:1057D0003078BCD0B81184B2000818010401FF3B36
-:1057E00010000403FF3BE47984A130005801EC78F9
-:1057F00084A0030038011C68ACD01011D90010003F
-:105800001B78FB00FE00EE0005000120014704208C
-:10581000ACD0181114680C089E2405001B78830076
-:1058200005001B78820005001B78710005001B78BD
-:105830006E000500092019470C2186A100005001C7
-:1058400086A1010050011F700B00637001001B78DE
-:10585000540005001B78F30005001F700A000500C6
-:10586000092019470C2186A10000680186A10100CA
-:1058700038011F700B00637001001B785400050095
-:105880001F700A0005001B78F20005001B78FB0062
-:1058900005001B78FA0005001B78CC0005001B787A
-:1058A000CB0005001868FCD010011B681D001F709C
-:1058B0000B00637001001B7854000500307884A051
-:1058C000C000701108788CC00A7800E000E000E0A9
-:1058D00000E0EC7884A02100180108788DC00A78D7
-:1058E000050008788DC00A780500307884A0400053
-:1058F000E01D84B2000818010411803C100004135C
-:10590000803CAC780500087884A0FDFF0A7800E0B0
-:1059100000E000E000E0EC7884A02100400184B2C7
-:105920000008180104118F3C10000413923CAC785D
-:105930000600087885A002000A780E00050084A7FA
-:10594000010004194D3284A770004001C600602D8B
-:10595000682F0C089024782D682CCE0084A70800AE
-:1059600048014B780800EC7884A0030004094D320C
-:1059700004080B3C84A70400C801B87884A0008008
-:10598000A8014B780800EC7884A0030004094D328C
-:10599000E47884A0070086A001004011C07885A6A5
-:1059A000004830205A7E1B78FB00050084A7800049
-:1059B00040018478FCD028010C08573A1B6822006B
-:1059C00005001B680300587884A0005F1E682F68DC
-:1059D0000000336800004B780800EC7884A00300D6
-:1059E0000409AC2B84B2000810010401C62504038D
-:1059F000C625146B078384A00F00038003800380F7
-:105A0000FCD3180180A0404C100080A0C04B602047
-:105A100048205670602A0500C60060290060ACD09E
-:105A20000409573DA068ACD1201184A0000E0409E0
-:105A3000553D086117818CA1FF001C632F83DCD0CA
-:105A400010019DA30100CCD0C81184A5FF0038012E
-:105A5000EC78E4D010011382B8002920000082A164
-:105A60000C009012EC78E4D0181109200C006000B2
-:105A700082A10B00481209200A00300009203200E0
-:105A80001120000029200000AB780100AB7806004F
-:105A9000AB780400AA79AB780000AA7AAA7BAA7D29
-:105AA000C0A80800206885A0001022680C087A3A77
-:105AB00085A00100CE00050082A206000419493A23
-:105AC000A87DAC7E3786ACA5FF00B4A6FF00AC7FF6
-:105AD0004787BCA7FF00C4A8FF002069BDC1226999
-:105AE000E4D10409CB3D8CA1FFEC226982A702001E
-:105AF000041A233AB4A6FF000409C83D82A6310067
-:105B0000041A233A82A50900040A233A82A8030052
-:105B1000041A233A86A80200D00186A800000419BE
-:105B2000233A01200C00EC79E4D1100101200A0095
-:105B300002A590120C08233AC6006029046085A0D3
-:105B40001A0006600060ACC00260CE00050086A7A7
-:105B500000000409233A348682A618002802200196
-:105B6000312018000408193E86A61000081130865E
-:105B70002B852B850C08EE3A0409233A0C081A39B8
-:105B80000C08BF39587ED4D618111B787100050057
-:105B90001B78830005000C081739900C86A80200BA
-:105BA00008113486547188A100000C21ACD104097D
-:105BB000233AECD120113920000041200000E4D12B
-:105BC0002011312000004120000082A70200C812ED
-:105BD0001C6284A2FF0006A710013920000005A660
-:105BE000900108611F819CA3FF00680102A30812B5
-:105BF0003023078805A786A00102600186A800005F
-:105C0000680139200000412000003120000006A07A
-:105C10001020700084A200FF0811402084A1FF0022
-:105C200002A5080128212B852B850C08EE3A580D7A
-:105C30000C081A390C08BF399B788000AB7801003A
-:105C4000AB780600AB780400AA7DAB780000AA7E92
-:105C5000AA7F0028AA789B786000AB7808002068AB
-:105C6000E5C022680C087A3A587895C05A781B78B3
-:105C7000820005002000200000002000000020001D
-:105C80000000200000002000000020000000200094
-:105C90000000200000002000000020000000200084
-:105CA0000000200000002000000020000000200074
-:105CB0000000200000002000620009001400140011
-:105CC00055984D9814001199FF98140014009000F5
-:105CD000E70000010204082080F8180017000F8474
-:105CE000C1D8140016000AA214000B300CA2140034
-:105CF00000251300002510001000100010001000F7
-:105D00001000100010001000100010001000100013
-:105D1000100000A206383988C420640850A8083052
-:105D2000C128189D01A20C30472861816A84008037
-:105D3000A48456183A8808A8E228CE9CF3A86408E0
-:105D40003EA80C3001A80830E128CE9CA22863713F
-:105D500031A8212018A805A20C87DED8A064E06D28
-:105D6000C06FA467806C120205A23D882B881418AE
-:105D70003B882770F28537A732A503F076857786B2
-:105D800013A83E8811A88228627114A80A2804A2C8
-:105D9000C064E06DA067C06F14183B8823707685DF
-:105DA000778602A861783E886A20C128189D422023
-:105DB0000121CAA802290EA20BA807A2140003A25F
-:105DC0000080A48572189A873C88E21F01F608A219
-:105DD0006E852171140004070830CE9C140002A2C5
-:105DE0000080A4850930A884E21944F86E853F88B4
-:105DF000E608F5A861F8EBA801F8140081F8160090
-:105E0000B285F0803295A2FAE21D1400328521F2AB
-:105E10001400E21DA884E0D6E61F140008300080BC
-:105E200049281110FCA80830008000A08120022819
-:105E30001110FCA889A80830A1203C281110FCA84A
-:105E400009A217000C300080A485E21DC1DA1400FD
-:105E5000100201A81400E0263A87A3FAF219E026FE
-:105E6000F21814000BA214000DA206381002229D95
-:105E7000040706A265687E812A84C11D2388160056
-:105E800042600880FAA860812A84808121F008306D
-:105E9000A884D7114270DD201100D5202288160079
-:105EA00000002601D07084A0004C04809020047271
-:105EB00008709CC005A2A0110C72FF822801FF8A05
-:105EC0007811007284D260110478CCD010010C08D3
-:105ED0005B4307700800037008002E0100200500D6
-:105EE000007084A0030002709CC684D088050871ED
-:105EF00000E0087006A1D81D84A103000409CA3F70
-:105F000084A1E0010419CA3FF4D1881D84A10030A6
-:105F100086A00010600D112080010C7111823001EB
-:105F20000870F4D0201D0C7006A1C00D077012007F
-:105F3000087100E0087006A1D81D84A1030068055F
-:105F400094D1B00DF4D148050770020080082804F0
-:105F50000871FCD130010C08D640FF8A0409543F77
-:105F6000B80C0C708CA0FF07E801047084D0780195
-:105F7000147005A048111070107306A3E01D0023D3
-:105F800005A0280102A1201E077010003000FF8A22
-:105F900048010C089A42E81DD8090C085C402E0103
-:105FA00000200500047208719CC10381181207705B
-:105FB0000200C00C05A2881D0770080003700800CD
-:105FC0000600012001470420CCD010010C085B43DF
-:105FD0000E002E01002005002864FF840805702CA7
-:105FE0000470BCA00F00B8A71D403C27FB874811D8
-:105FF00010020C0875259C6075A09001880C392052
-:106000001240042768AE086830A60C6829A52184D0
-:1060100038013887042705A0A81D9C7075A0001DB5
-:1060200005000000050009000D0011001500190011
-:106030001D000000030009000F0015001B000000F8
-:10604000000012400F4000000000008000001240DD
-:1060500000001A40174000000000000000001A4035
-:1060600000001540154000000000008000001540B1
-:1060700000001B401B4000000000000000001B400F
-:10608000792000477120100007700A000770020095
-:1060900003700100092002007120500007700A00FF
-:1060A00007700200037000000120FF010420FCD0F3
-:1060B00028110981180171202000800C050004704E
-:1060C0000480041AB2400871087006A1E01D84A182
-:1060D000E00120010C080E410408D24007701200B4
-:1060E000192000000871087006A1E01D84A1E001DC
-:1060F00020010C080E410408D2409CA10C3086A35C
-:106100000420900186A30800C001047084D04811C7
-:106110000871087006A1E01D84A1030010010408A5
-:106120000E4186A30C20F0190072048230020C7319
-:1061300084A3FF0710010C0875250871087006A1DB
-:10614000E01D84A1E00118010C080E4170040770E5
-:106150001200007084D048111073147005A3280138
-:106160000C7184A1FF0704195C400871087006A136
-:10617000E01D84A1E00118010C080E41B000077079
-:1061800012000770080004709CD0E81D08710870A8
-:1061900006A1E01D84A1E00118010C080E412800B1
-:1061A0000770120008710381880E03700800050053
-:1061B000087184A1E001A815087184A1E001881587
-:1061C00084A107000200EA40F840E840F840E840B7
-:1061D0004841E84046410C087525047084A0100031
-:1061E0008DC00670FF8A18114920000005000C08B8
-:1061F0009A42E81D0500047084A010008DC006704E
-:10620000047084D040110871087006A1E01D84A1BB
-:10621000030008013000FF8A18010C089A42E81DAB
-:106220000500077012000871041D114191200060E3
-:10623000041D1541912000600770120007700800CE
-:1062400004709CD0E81D077012000871FCD1D81DA5
-:1062500003700000007005A03011047005A0181133
-:106260000C7005A00801400C4920000084B2000217
-:106270001801012000001000012001000C08A73BBC
-:106280001B6802005120000005000C0875250C0851
-:1062900075250C088741107214710C709CA0FF07C3
-:1062A000002800A311A289A10000A1040427582CF2
-:1062B00060AC0863002222A30C6300211BA300240E
-:1062C00005A340013812128410820A8389A10000BC
-:1062D000602B580C602B078A060004609CD01801C4
-:1062E000BAA717401000BAA70F400E003DA7002C18
-:1062F00086688A6F926C8E6B0871087006A1E01D2B
-:1063000084A1E00110010C080E41077012000C0876
-:106310005C400500508A3987042704A0681100609A
-:1063200064A00811602D046084A00F0080A02D409F
-:106330003C20FB870C09752505002601D600D0708E
-:1063400084A0004C04809020DE008468602088686F
-:106350008C6B906C5780D4AAFF0084A0FF000600CD
-:10636000046884A008000E001801B8A017401000AF
-:10637000B8A00F4084B200021001207E0800247EE5
-:10638000B5A60C001C68B4D0080185C6002405A37E
-:106390005005582C0427046160AC006000A448201C
-:1063A000CCA9040018010C08A34300041A7004606F
-:1063B00001A31E709CD14001106081A000002270DA
-:1063C000146081A0000026700862002402A21270EE
-:1063D0000C62002303A21670027607700100602B86
-:1063E0000C08C54210000C089A42E81D2E0100203E
-:1063F00005002601D600D07084A0004C04809020B7
-:10640000DE0007700400047094D0E81D03700800DB
-:106410002E01002005002601D600D07084A0004C7B
-:1064200004809020DE00207E84B200020811247EC9
-:10643000B5A60C001C68ACD0181185C6037000000E
-:1064400028685020602D0460BCA00F00B8A71D4034
-:106450003C27FB87381110020C0875259C6865A045
-:106460002001880C0C089A42E81D2E01002005002E
-:10647000260106001600D600D07084A0004C0480CF
-:106480009020207E84B200020811247EDE003E00AF
-:106490004E00B5A60C001C68B4D0280185C6037058
-:1064A00000000770040049203542286855A0D60036
-:1064B00004099642702D602E0470BCA00F00B8A78E
-:1064C0001D403C27FB87401110020C0875259C706D
-:1064D00075A060207005800C042768AE086822A4AF
-:1064E0000C681BA36802518A10110C0875253887A7
-:1064F000042705A0901D9C7075A06020D001E008C5
-:10650000228420841A8399A300000869002422A110
-:106510000C6900231BA110120C08752584B200021F
-:10652000180171205000100071202000DE000408C6
-:10653000C341DE002E01002005000870060084A083
-:10654000E0010E00100106A0050084A0030086A053
-:10655000030008110500042778AC0078082F94D0B8
-:106560000419A6431A7004781E70087812700C780B
-:10657000167004609CD02001107822701478267068
-:106580000276047084A0100085C006707920004750
-:10659000518AE8013887042705A068119C6005A08E
-:1065A000B8016020046084A00F0080A01D403C2042
-:1065B000FB870C0975250870060084A0E0010E0019
-:1065C000100106A0280084A0030086A00300050097
-:1065D00051200000050026010600D600D07084A0DE
-:1065E000004C04809020DE008E00087184A103001E
-:1065F0002811286805A0780104086D3F0871FCD1B6
-:1066000018010C08D640880C077010000871FCD1E6
-:10661000E80D0C08D640087086A00800301D0070F8
-:1066200005A0181D0370000049200000060001208D
-:1066300001470420CCD010010C085B430E002E0152
-:10664000002005002601460136015601C600D6008D
-:10665000D07084A0004C04809020DE0049201F43AD
-:1066600080AD1100A02084B20002180199203200F0
-:106670001000992031000C7084A0FF072A68077071
-:106680000800077002000370010018010080AC8050
-:10669000A5530C7084A0FF0730010770040004703C
-:1066A00084A00400E01DCE0049200000037000001B
-:1066B0005E013E014E012E01002005001468FCD051
-:1066C00004099E43007084D0E005247EB5A6040032
-:1066D00007700400047084A00400E01D1871160007
-:1066E0001C71160020711600247116001B7000002A
-:1066F0001F70FF3F2370000027700000137004001C
-:10670000177000000276077001000120FFFF0920CA
-:1067100031000A200A200871087006A1E01DFCD192
-:10672000D00D2E0026722E0022722E001E722E0018
-:106730001A7207700200087086A008001001040891
-:106740000E41077004000370000005004920C3419A
-:106750006800087084A00300100106A0050006A0D0
-:1067600020201820582C602149200000588B0061FF
-:10677000002108A41A71046001A31E700600042BF6
-:1067800084A008005001106081A000002270060063
-:10679000146081A000002670060084A1070011206B
-:1067A00008002AA20862002412A226000C624022DD
-:1067B000002343A82E00FF887011002502A20801C3
-:1067C0005012202241200000042B9CD010010E000A
-:1067D0000E000E005004127517700000027686A994
-:1067E000C3411811077001002800047084A0100034
-:1067F00085C00670002500A11A70042B84A0080033
-:1068000010010E004E001E0089A100001E710C2B0D
-:106810008CA108003001A1A40000227481A0000016
-:106820002670002522A2C3A8000012742028167426
-:10683000027686A9C3411811077001002800047070
-:1068400084A0100085C00670598B602B792000470A
-:106850000C08C54206A00500912000809120006030
-:10686000AC7805A068117479D07006A148111C7825
-:1068700005A030011F780000040E3D4491208040A7
-:1068800069208047FDC7006884A00F009811D06878
-:10689000B4D08001BCD07011F60079200001FCD783
-:1068A000101179200002307884A0C00010110C086B
-:1068B000D522FE00FCD7200169204047FCC7180CF8
-:1068C0003078018032780419C744347832786120F6
-:1068D000C06C69208047FDC7CC6805A028010180F5
-:1068E000CE6810110C083946006884A00F006801BA
-:1068F00086A00100500140680DA03801042105A0C8
-:10690000200101800A200409D645146805A0A801C9
-:10691000018016689011A3680100F600FCD71811D9
-:10692000792000021000792000010C086E3CFE0066
-:10693000606805A010010C08D5227C6805A0400104
-:1069400001807E68281163680000D068C5C0D268E5
-:10695000D068FCD0B001FCC0D268A920000234602D
-:1069600005A0580101803660D068FDC0D2682811AA
-:10697000106005A010010C08D522E0AC1000041F27
-:10698000AC44FCD738016120C04C69204047FCC7AB
-:10699000040869445904387801803A78A0113C7899
-:1069A0003A786120C04C69204047FCC70C6805A0BC
-:1069B00010010C084345FCD730116120C06C6920E0
-:1069C0008047FDC7980C1078CCD06801ACD020115E
-:1069D000A4D04801ADC0127891200180040EEF448C
-:1069E0000C08A1200500912001800500407801805D
-:1069F0004278041942454478427869204047FCC7F0
-:106A000079200002D46805A03801E07D04A520119A
-:106A1000D668D068BCC0D26879200047106805A04D
-:106A200010110120010101801268FCD7180180A01B
-:106A3000D08D100080A0C08C4020042065A0E00113
-:106A4000246005A0B001018026609811006805A0AF
-:106A50003001486806AC18110C08D645680060681B
-:106A600005A018012760010020000C0884450428B7
-:106A7000280C0060402C100CFCD73811692080478E
-:106A8000FDC7792000010408FF440500092000002B
-:106A9000A920000208609CD05805246005A01801B8
-:106AA00001802660180408609CC084D01011ACD00E
-:106AB000C0010A60046005A0D801D600C600160017
-:106AC00068201060018012600C08C737002D682C08
-:106AD00060200C08021C0C08B21D1E00CE00DE0057
-:106AE0003800BDC00A608DA1010010008DA1000119
-:106AF000E0AC1000041F474584A1010030018CA1C7
-:106B0000FEFF0E690C08D52208000E690500002C56
-:106B10007A681467726F176000002B6000001B60BA
-:106B20000600B46084A0005F1E60206084A0FF00A7
-:106B300085A0600022600060422069208047FCD769
-:106B4000101169204047586806AC101100285A6897
-:106B50000C089A1B186805A0100101801A680868C3
-:106B6000A4C00A681068087909810A7901801013A5
-:106B70000C087525126818111079A5C112792F60BB
-:106B8000000033600000682C0C08BF1DFCD71811F2
-:106B900069204047100069208047106984A10001E6
-:106BA0000120060018117669012004000C08CB2290
-:106BB0000500D60048696021FCD718116920000241
-:106BC0001000692000010C0890241B600600586822
-:106BD00084A0005F1E60206084A0FF0085A04800A4
-:106BE00022602F60000033600000086884A0FDFF71
-:106BF0000A683068B4D0B0014B680400A9201400C2
-:106C0000486894D01001041FFD454B680900A92075
-:106C10001400486884D01001041F0646A920FA0019
-:106C2000041F0D461B685400DE0063680700050062
-:106C300079200047E1008900A900092002006920AD
-:106C400080470F6800001368000017680000098182
-:106C5000180169204047A80C05001920A3003A7BC1
-:106C60003E7B050019203300427B467B050019203E
-:106C7000DD32327B367B05004C6A85A20000F001D4
-:106C80005069BC6B00A3C60064210463FF83381104
-:106C90001182480108811AA1B80EBC69A80CCF68FE
-:106CA0000A00CE0005004C69BC6A64220860B5C0C9
-:106CB0000A6010820981C81D4E69CE0005001600C9
-:106CC000041D5D4691200060041D61469120006016
-:106CD000EC70DCD01811D4D09001A0008EAE000171
-:106CE00038011478F5C0C5C01678D4D0801560047A
-:106CF0001478FDC0C5C01678D4D048152804E4D057
-:106D00000409C446041D7F469120006009200C0040
-:106D1000041D8546912000600981D01DE47084A087
-:106D2000FF0186A0FF011011EC70C0088EAE0001BB
-:106D300028011478F4C0FCD0301120001478FCC075
-:106D4000F4D00811C4C0167804788CD00005C600B1
-:106D500061200000186084D0B81186AE0002E60001
-:106D6000712010002001DB700100E4781800DB7056
-:106D70000000E078C670C3700E801B600100912097
-:106D80008040EE00CE001800CE001F680C001E00F0
-:086D9000A070A2700500260CA2
-:00000001FF
-/*****************************************************************************
- * QLOGIC LINUX SOFTWARE
- *
- * QLogic ISP12160 device driver for Linux 2.2.x and 2.4.x
- * Copyright (C) 2002 Qlogic Corporation (www.qlogic.com)
- *
- *****************************************************************************/
-
-/************************************************************************
- * --- ISP12160A Initiator Firmware --- *
- * 32 LUN Support *
- ************************************************************************/
-
-/*
- * Firmware Version 10.04.42 (15:44 Apr 18, 2003)
- */
diff --git a/firmware/qlogic/1280.bin.ihex b/firmware/qlogic/1280.bin.ihex
deleted file mode 100644
index 612c2633f8cd..000000000000
--- a/firmware/qlogic/1280.bin.ihex
+++ /dev/null
@@ -1,2008 +0,0 @@
-:10000000080F0B0000107800411000002E3E000089
-:100010004320504F525947495448312039392C31E7
-:1000200039313239312C39392C3339313439512085
-:100030004F4C494720434F435052524F54414F4930
-:10004000004E492050533231303446207269776D6A
-:10005000726120655620726569736E6F30202E388C
-:1000600035312020432073756F74656D20726F4E9B
-:10007000202E303050206F72756474634E202E6FC6
-:100080002020303020200024C920FF980120FC04CB
-:10009000042086A08010C000541071200001A070C0
-:1000A000A270C12010008920741378006D10012007
-:1000B000FC04042086A08012C00069107120000298
-:1000C000A070A27071200001A070A270C120100069
-:1000D0008920F81378006D10C120200089201C139E
-:1000E00071201000C3700400C7705349CB702050BA
-:1000F000CF702020D37008000120FE04D670C120EC
-:100100002100192000000920FFFE00210B20A5A5D9
-:10011000ECA1FF7F642D6B200A0ADCADFF3F542B5E
-:100120005B205050142186A2A5A54000A41086A3F0
-:100130000F004000A0106A2C5A2AC120200019206C
-:100140000F00780080106A2C5A2A7800A2106A2CBE
-:100150005A2A30212821A2A1004F248424842484F7
-:1001600024842484248492A1009909200000012081
-:1001700032007810C12018227920004FA02F0824C7
-:1001800011200000A9204000A4420981C000BF1036
-:10019000092000FF003402A14800CF104000CF101A
-:1001A000A820A4420120FC04042086A08010C000E6
-:1001B000E510712000017E0D6920404F7810B04D90
-:1001C0007F0D1078EDC012781B78640078000A115A
-:1001D0000120FC04042086A08012C00005111478C0
-:1001E000EDC0D5C016781B786400712000027E0D2A
-:1001F0006920404F7810B04D6920804F7120000178
-:100200007810B04D1478D4C016787F0D78000A119C
-:100210001478E5C016781B783C00CA7EC27CC67B89
-:100220006778000000788DC0027831203000AF7808
-:1002300001012378020027780200092002006920CA
-:10024000404F1B680300236807002768FA002B68EB
-:1002500008002F682800376800003B6806003368F4
-:1002600008003F680000098140005E11D3680A0061
-:10027000C368C04F7920004F1478E4D0C000441107
-:10028000ECD0C0004811D768297378004A11D768AC
-:100290000D7378004A11D7682D73C768C054CB68B6
-:1002A000C053CF68C094AB684497AF684997B368B0
-:1002B0004497B7684497A76801006920804F780089
-:1002C0001E11D3680A00C368C0511478E4D0C0007E
-:1002D0006A11D768397478006C11D7681974C768C7
-:1002E000C074CB684054CF68D095AB684997AF686D
-:1002F0004E97B3684997B7684997A7680100107887
-:10030000ECD0C000C2111478E4D0C000B4117E0E4D
-:100310006920C05371200002EC70E4D0C000951138
-:1003200019200C0C21200C007810502078009B1113
-:1003300019200A0C21200A0078105020692040540E
-:1003400071200001EC70E4D0C000AB1119200C0C3E
-:1003500021200C00781050207800B11119200A0CCF
-:1003600021200A00781050207F0E7800DB11192020
-:100370000C0C21200C006920C053781050206920FB
-:100380004054781050207800DB116920C0537E0E55
-:1003900071200001EC70E4D0C000D41119200C0CC5
-:1003A00021200C00781050207F0E7800DB111920DE
-:1003B0000A0C21200A00781050207F0E1120020024
-:1003C0006920C05409200200A920000137680000FC
-:1003D0000B684000C87B86A3FFFEC000F2111768BF
-:1003E00000011F6864007800F611176864001F6838
-:1003F0000200E8AD1000F000E3110981C000E11136
-:100400001182400004126920C0747800DF11781056
-:10041000A2267810124778101B1E7810424D9120AA
-:1004200000217920004F1078ECD040001812712084
-:10043000200078001A1271205000912000227920AB
-:10044000004F71202000912000237920004F107868
-:10045000ECD040002C127920000178002E12792077
-:1004600000027120404F912000247920000171206A
-:10047000804F912000207920004F71201000003221
-:1004800085A03D30902071201000C37000009000C6
-:100490004D12C07086A00200C0004D127810C11528
-:1004A000392000001078ECD0C000CF1278108E14E4
-:1004B000AC7805A0C0006B12680061126C7865A072
-:1004C000400061127810DC237810E8206800781270
-:1004D0006C7865A040006B127810DC2368007812FD
-:1004E0000920474F1120874F04210C2205A140000D
-:1004F00078127810511F7120404FA47005A0400061
-:100500009D12507485A4000040009D1279200002C5
-:1005100091200080D4728CA23D3090217810B12BB4
-:100520009120008091203D3068009D127920004F7D
-:100530006C7865A040009D12712010007810DC23BB
-:10054000E000A5127920004F712010007810164BA2
-:100550007120804FA47005A04000BD12507025A0EE
-:100560004000BD127920000191200080D4728CA23D
-:100570003D3090217810B12B9120008091203D30AA
-:100580007920004F712010006800C9126C7865A0B6
-:100590004000C9127810DC23E00053127810164B8B
-:1005A0007800531278108E14AC7805A0C000E712C2
-:1005B0006800DD126C7865A04000DD127810DC2345
-:1005C0007810E8206800F1126C7865A04000E7120E
-:1005D0007810DC236800F1120920474F042105A0A0
-:1005E0004000F1127810511F7120404FA47005A0F7
-:1005F00040000C13507485A4000040000C137920B7
-:10060000000191200080D4728CA23D30902178109E
-:10061000B12B9120008091203D307920004F712036
-:100620001000680016136C7865A04000161378104F
-:10063000DC23E000CF127810164B7800CF123C1369
-:100640003C133E133E134B134B134B134B135613D8
-:100650005613631363134B134B134B134B133C137E
-:100660003C133E133E134B134B134B134B135613B8
-:100670005613631363134B134B134B134B13780035
-:100680003C137E007E107E12912000247810D12928
-:100690007F127F107F00912001807C007E007E1001
-:1006A0007E127810C8137F127F107F009120018086
-:1006B0007C007E007E107E12912000237810D129CC
-:1006C0007F127F107F00912001807C007E007E10D1
-:1006D0007E12912000237810D129912000247810D7
-:1006E000D1297F127F107F00912001807C0094131C
-:1006F000941396139613A313A313A313A313AE1368
-:10070000AE1396139613A313A313A313A313AF133C
-:10071000AF13AF13AF13AF13AF13AF13AF13AF13C9
-:10072000AF13AF13AF13AF13AF13AF13AF13780003
-:1007300094137E007E107E12912000237810D12920
-:100740007F127F107F00912001807C007E007E1050
-:100750007E127810D5137F127F107F0091200180C8
-:100760007C007C007E107E127E0D7E0E7E0F7E0051
-:10077000712000016920404F7920004FEC7084A067
-:10078000001CE2787810B04D7F007F0F7F0E7F0D48
-:100790007F127F107C00003C84A007007900CD13FD
-:1007A000DE13DE13E013E013E513E513EA13EA1397
-:1007B000003C84A003007900DA13DE13DE13F31388
-:1007C000F3137810B229912000227810EC477C00B6
-:1007D000912000217810EC477C00912000217810B6
-:1007E000EC47912000227810EC477C0091200021FA
-:1007F0007810EC477C00181418141A141A142714D3
-:10080000271427142714321432143F143F142714CA
-:100810002714271427145014501450145014501433
-:1008200050145014501450145014501450145014A8
-:10083000501450145014780018147E007E107E124C
-:10084000912000247810D1297F127F107F00912001
-:1008500001807C007E007E107E127810C8137F120B
-:100860007F107F00912001807C007E007E107E1230
-:10087000912000237810D1297F127F107F009120D2
-:1008800001807C007E007E107E1291200023781073
-:10089000D129912000247810D1297F127F107F0068
-:1008A000912001807C007E007E107E127E0D7E0EE7
-:1008B0007E0F7920004F712000026920404F003DDB
-:1008C0008CD040006614EC7084A0001CE278781094
-:1008D000B04D003D84D0400074146920804F7120D9
-:1008E0000001EC7084A0001CE6787810B04D7F0FFA
-:1008F0007F0E7F0D7F127F107F007C0008700B80C1
-:10090000C8008914077002008CA0E001C0008A149E
-:100910009CD0400089147A087A09C370024078009C
-:10092000C41568001A1561200000186084D0C0004A
-:100930001A15287805A0C0009E1410001B15780019
-:100940001A151079F4D14000A4147800B914147960
-:10095000ECD14000BD14FCD04000B3147E007810F0
-:10096000AE1D7F004000BD147800B9147E007810E1
-:10097000A11D7F004000BD14012007407800C31571
-:100980001079FCD0C000C7146120404F9CC1FCC747
-:100990007800CB146120804F9DC1FDC7646005A025
-:1009A000C0001A15127982602878FCC086A0180051
-:1009B000C000DB147E0C7810851B7F0C2B780000A8
-:1009C0007C6065A0400000157E0C9C607810901E35
-:1009D0007F0C9F6000007810D51C092018008760EC
-:1009E000030110787E00FF84C000F614FF854000EC
-:1009F000F814C5C012787810BB1D7F001278C000B3
-:100A0000141578100D1E10789CD0C00008156120B8
-:100A1000404F78000C156120804F9CC012787F6099
-:100A20000000D460DCD040001815DCC0D660012086
-:100A300005407800C3157800C1157C001078F4D00B
-:100A400040002315012007407800C31506A0C2709E
-:100A5000C670CA70CE70DA70C0703DA08AA0400027
-:100A6000C80031157900381500218AA04000C8005F
-:100A7000CF1579007815C1151716E0154F16871692
-:100A80008716D715ED1C9216CF15E415E615E81557
-:100A9000EA15F21CCF15A016FD16A51BE71CEC15D8
-:100AA000EA192C1A671AB81AA519B219C619D91950
-:100AB000EB17CF15341741174D1759176F177B17C1
-:100AC0007E178A1796179E17D317DF17CF15CF15E6
-:100AD000CF15CF15F8170A1826185C188418941823
-:100AE0009718C818F9180B1974198419CF15CF1550
-:100AF000CF15CF159419CF15CF15CF15CF15CF150D
-:100B0000171D1D1DCF15CF15CF15211D661DCF1526
-:100B1000CF15CF15CF15111681169A16F7169F1BF4
-:100B2000CF15CF15681BCF156A1D091D131DCF15D5
-:100B3000CF15CF15CF15CF15CF15CF15CF15CF1595
-:100B4000CF15CF15CF15CF15CF15CF15CF15CF1585
-:100B5000CF15CF15CF15CF15CF15CF15CF15CF1575
-:100B6000CF15CF15CF15CF15CF15CF15CF15CF1565
-:100B7000CF15CF15CF15CA72C67101200640780077
-:100B8000C315CE73CA72C67101200040C2706800DE
-:100B9000C415612000001B600100912000509120CD
-:100BA00080407C00C37001407800C415C3700640CB
-:100BB0007800C41599204100A1204100A92005001A
-:100BC000A3537800C115C470C37004007A00780084
-:100BD000C1157800C1157800C1157800C1159120A4
-:100BE0000080C3700400C7705349CB702050CF7091
-:100BF0002020D370080001200F00D670792000005B
-:100C00001B780100312030005920001029201A04DF
-:100C10005120450461204704C1202000912000504C
-:100C20009120804078001804D875DC74DA75DE7481
-:100C300078001A16292000002025D071C872CC73C4
-:100C4000C470A020992030000370010007700600D6
-:100C50001A731E722274267521204000FF81400005
-:100C6000C11582A14000C8003416202106A008202A
-:100C70000384127007700400077001000870FCD034
-:100C800040003B160770020084A0E00140004916B6
-:100C9000C37002407800C415A824A55378002B1611
-:100CA0007800C115292000002025D071C872CC73AE
-:100CB000C4709820A1203000037000000770060067
-:100CC0001A731E72227426752120400007700600D8
-:100CD000FF814000C11582A14000C8006E1620218E
-:100CE00006A0082003841270A824A65307700100F0
-:100CF0000870FCD04000751684A0E0014000631627
-:100D0000C37002407800C415D875DC74DA75DE74DF
-:100D100078005216C471C87014219EA70400C00048
-:100D20008F160A20CA727800C015C7700800CB70F1
-:100D30000F00CF700B007800C115D875DC76DA751E
-:100D4000DE767800A316292000003025C470C87212
-:100D5000CC73D074C670CA72CE73D27405A0400032
-:100D6000F2160AA44000B316C800BC1601807278BF
-:100D700084A000FC4000C016AC7885C0AE7801208D
-:100D800005407800C3157E7B7A7A867E827D767CEC
-:100D90008CA400FF4000D8160784048004800C81D6
-:100DA0000C810F8118A191A20000B1A6000081A5BD
-:100DB00000007800E21607840480048018A391A242
-:100DC0000000B1A6000081A500001A731E722276F1
-:100DD000267005A64000EC16107AC5C2127AAC78CF
-:100DE00084A0FCFFAE787800F516AC7885C0AE78AC
-:100DF0007800C115D875DC76DA75DE7678000017D4
-:100E0000292000003025C470C872CC73D474C67019
-:100E1000CA72CE73D67405A040002F170AA44000F2
-:100E20001017C80019170180927884A000FC4000B8
-:100E30001D17AC78C5C0AE78012005407800C315F9
-:100E40009A7A9E7BA27DA67E002605A540002817E3
-:100E5000107AC5C2127A967CAC7884A0FFFCAE787A
-:100E600078003217AC78C5C0AE787800C11509207B
-:100E700000006C7865A040003E1708810060780093
-:100E80003717C47A7800BF150920484F0C21107815
-:100E9000ECD0C000C0151120884F14227800BF1577
-:100EA0000920494F0C211078ECD0C000C01511204A
-:100EB000894F14227800BF156120404F28612C62B1
-:100EC0001482148214821078ECD0C0006D17612057
-:100ED000804F2863DA732C631C831C831C83DE73AE
-:100EE0007800BF1509204C4F0C211078ECD0C000C1
-:100EF000C01511208C4F14227800BF151879780086
-:100F0000C01509204D4F0C211078ECD0C000C01541
-:100F100011208D4F14227800BF1509204E4F0C214F
-:100F20001078ECD0C000C01511208E4F142278002C
-:100F3000BF1520791078ECD0C000C015247A780055
-:100F4000BF15C471FCD1C000A6171120C053780092
-:100F5000A81711204054078184A00F00038003804C
-:100F6000038068A2006A04689CD04000B717086B31
-:100F70007800B8170C6BFCD1C000BF1721203B02D2
-:100F80007800C11721203B0124241479E4D14000CA
-:100F9000CD17C4D4C000CC17D5C47800CD17DDC49C
-:100FA000A4A4001CDE74C4717800BE15C477781048
-:100FB0002B1E912000801C6B146A91200180082751
-:100FC0007800BE156120404F18611078ECD0C00049
-:100FD000C0156120804F18627800BF15C477781063
-:100FE0002B1E912000800869186A106BDA77912017
-:100FF00001807800BE15C471102194A20F0082A256
-:101000001000C800B9157810C62784A3004040001E
-:10101000081895A220007800BE15C4710021BCC03C
-:1010200082A01000C800B915BCD1C0001918112049
-:10103000484F042278001D181120884F0422BDC09B
-:101040007E000021BCC01220781023277F01780089
-:10105000C015C4712120494F0424C6701920000016
-:1010600078003518C8712120894F0424CA70FDC347
-:1010700011205418A9200800042206A14000441899
-:101080001082F0003918C471C8727800B81592A2A5
-:1010900054187E0222217F01781044271078ECD06A
-:1010A000C0005218FCD340002F187800C115E80387
-:1010B000FA00F401EE0204000100020003006120C6
-:1010C000404F28612C62148214821482C4702A60FA
-:1010D000C8700380038003802E601078ECD0C000BD
-:1010E00082187E027E016120804F28612C6214826A
-:1010F00014821482D8702A60DC700380038003801D
-:101100002E60DA71DE727F017F027800BF156120E8
-:10111000404F3061C47032601078ECD0C000C01510
-:101120006120804F3062C87032607800BF15187936
-:101130007800C015C47184A1CFFF4000A3181078B7
-:10114000ECD0C000B915C8727800B81511204D4F09
-:10115000042212217E00192000007810AB2710789D
-:10116000ECD04000B3187F017800C015C87184A18D
-:10117000CFFF4000BC181021C4717800B8151120B1
-:101180008D4F042212217E00FDC37810AB277F0211
-:101190007F017800BF15C47182A110004800D418E7
-:1011A0001078ECD0C000B915C8727800B8151120BD
-:1011B0004E4F04227E00122119200000781089274A
-:1011C0001078ECD04000E4187F017800C015C87199
-:1011D00082A110004800ED181021C4717800B815E4
-:1011E00011208E4F04227E001221FDC37810892722
-:1011F0007F027F017800BF15C471C87284A1FDFF12
-:10120000C000B81584A2FDFFC000B81500212079E8
-:1012100022780022247A26787800BF15C471FCD188
-:10122000C00013191120C053780015191120405423
-:10123000078184A00F0003800380038068A2192027
-:101240000000C872BCD2400024199DA31000B4D283
-:10125000400029199DA308009120008000687E00AD
-:1012600026A240004819026AECD440003519A5C3F3
-:10127000E4D4400039199DC3F4D4400048190F81CB
-:10128000F4D24000441978100828780048197810E2
-:10129000E62778004819CC72086806A240006A194F
-:1012A000A4A2FF001478E4D0C0005B1982A4280037
-:1012B000480067194000671978005F1982A443004D
-:1012C00048006719C471C6717F02CA7291200180FB
-:1012D0007800BA150A6A9DA30A00046805A3066887
-:1012E0007F020C6BC471912001807800BE15C47719
-:1012F00078102B1E91200080146A1C6B91200180B5
-:10130000C8701668CC701E6808277800BE15C470B7
-:101310006120404F18611A601078ECD0C000C015F1
-:10132000C8706120804F18621A607800BF15C471C0
-:10133000C872CC7382A11000C800B91578102A2891
-:1013400084A300404000A31995A220007800BE1598
-:10135000C47778102B1E91200080086A8DC20A6A1B
-:101360009120018008277800BF15C47778102B1EC4
-:1013700091200080086A94A2F9FF0A6A046805A017
-:101380004000C11978106F2691200180082778004D
-:10139000BF15C47778102B1E91200080086A95C273
-:1013A0000A6A046805A04000D41978106F269120BD
-:1013B000018008277800BF15C4774120010049202B
-:1013C000050051202000912000807810461E9120B9
-:1013D00001800827086A7800BF15C4771478E4D024
-:1013E000C000FE19FCD74000F8197810AE1D40006F
-:1013F000FE197800C3157810A11D4000FE19780071
-:10140000C315C873CC72C677CA73CE727810CD1E5E
-:10141000C000281A186805A04000221A08277E0775
-:1014200078105A287F07C000221A01201500FCD727
-:10143000C0001B1A6120404F78001E1AFDC06120B9
-:10144000804F2A78912001807C009120018001202A
-:1014500005407800C315912001807800C115C4773C
-:101460001478E4D0C000401AFCD740003A1A781033
-:10147000AE1D4000401A7800C3157810A11D400031
-:10148000401A7800C315C677412021004920050085
-:1014900051202000912000807810461E092016005F
-:1014A000FCD7C000541A6120404F7800571A6120C1
-:1014B000804FFDC1676003007F6000007667836036
-:1014C0000F002A79D461DCC1D66178106F26912093
-:1014D00001807C00C877CA77C477C6771478E4D0D7
-:1014E000C0007E1AFCD74000781A7810AE1D40006C
-:1014F0007E1A7800C3157810A11D40007E1A78006E
-:10150000C315BCA700FF9120008009201700FCD75D
-:10151000C0008B1A6120404F78008E1A6120804FE6
-:10152000FDC17F60000067600200766783600F0086
-:101530002A79D461DCC1D66178106F2691200180B0
-:1015400041202100492005005120100091200080F9
-:10155000C87005A04000AC1AD460FDC0D6607810F9
-:10156000461EC8703668388784A71F00C000AC1AB2
-:10157000912001807C00192000001478E4D0C00084
-:10158000CE1AC87284D24000C81A7810AE1D40002E
-:10159000CE1A7800C3157810A11D4000CE1A78002D
-:1015A000C315C872CA72AC7884A00300C000F91ACF
-:1015B0003920000084D24000DB1AFDC74120210001
-:1015C000492004005120080078102B1E9120008033
-:1015D0000868D4C00DA80A6991200180388784A7C3
-:1015E0001F00C000E11ABCA700FF3F8738873F8774
-:1015F00084A7000FC000E11A91200080C87284D235
-:10160000C0000B1B1078ECD04000071B69200001C4
-:1016100078000D1B6920000278000D1B6920000175
-:10162000086884A0FDFF0A683068B4D040002D1B14
-:101630004B680400A9201400486894D040001F1B88
-:10164000F000191B4B680900A9201400486884D0D9
-:101650004000291BF000231BA920FA00F0002B1BDF
-:101660007920004F09201800C87284D2C000391BAD
-:101670006120404F78003C1B6120804FFDC17F609E
-:1016800000002A796760010083600F00A7600000F6
-:10169000A860B260B660D460B4D04000581BB4C03B
-:1016A000D6607E0CB86065A00860D4C00A6018607F
-:1016B00001801A607F0CD46084A0FF77D660AC787C
-:1016C0008DC0AE78FF834000631B7C001B68470021
-:1016D000912001807C00CC737810BA1AEC69486ABA
-:1016E00085A100184A6885A14000EE68CC732120CE
-:1016F0000400A920FF09F000781B2184C000761B9C
-:101700001983C000741BEE694A6A912001807C0035
-:10171000FCD7C0008C1B6920404F78008E1B6920CD
-:10172000804FC471C6711669FF81C000961BA768FF
-:101730000100AC788CC0AE7884D0C0009E1B7810BD
-:101740002D1F7C00D875DC74DA75DE747800A71B59
-:101750002EA02025C471C873CC72C671CA73CE7214
-:101760007920004FDE7DDA7CD67BD27A7810041E99
-:101770004000D11CA9200500A120144F9120008019
-:10178000A1419120018009204000781018204000DC
-:10179000CA1B78100D1E7800D11C04608CA0FF00BD
-:1017A0008EA10900C000D51B7E007810BF237F00EA
-:1017B00084A000FF078009804000611C7E0C682C1B
-:1017C0007810041E40001B1C002C9E680981C0007C
-:1017D000DC1B9F6000007F0C7E0CDC7DD87CD47B02
-:1017E000D07A90A2400099A30000A1A40000A9A56E
-:1017F0000000DE7DDA7CD67BD27A682C9C6865A0FE
-:101800004000601C0920400078101820C0003E1CD9
-:10181000046084A0FF0086A00200C0001B1C0460BE
-:1018200084A0FF0086A00A00C000171C7E0178106B
-:10183000BB237F01002D02607800EA1B7F0C7E0C29
-:101840009C607810901E7F0C9F6000007810D51C63
-:10185000092018000860CDC00A6004608660107816
-:101860007E00FF84C000341CFF854000361CC5C0CC
-:1018700012787810BB1D7F00127878100D1E78004A
-:10188000D11C7F0C7E0C9C607810901E7F0C9F609A
-:1018900000007810D51C09201800876003011B6028
-:1018A000030010787E00FF84C000561CFF854000B6
-:1018B000581CC5C012787810BB1D7F0012787810B4
-:1018C0000D1E7800D11C7F0C1478E4D0C0008F1C52
-:1018D0001461FCD140006F1C7810AE1D40008F1CBD
-:1018E0007800731C7810A11D40008F1C7810D51C47
-:1018F00009201800876003011B60210010787E001A
-:10190000FF84C000831CFF854000851CC5C0127881
-:101910007810BB1D7F00127878100D1E0120074043
-:101920007800C315C474C873CC7214609120008011
-:101930007E0E09201200FCD0C0009F1C7120404F79
-:101940007800A21C7120804FFDC12A7967700500C4
-:10195000D471DCC1D6716A736E72727476707B70EA
-:101960000000002C7E702EA030251C6184A1600038
-:101970004000B91C7810B6467F0E9665A6659A663B
-:10198000AA66AF600000B360000014672360000027
-:10199000246096A00100C000CC1C00802660781056
-:1019A0006F26912001807C00C37005407800C4152B
-:1019B000A92005009920144F912000800A539120FE
-:1019C0000180002110A299A30000A1A40000A9A5F4
-:1019D00000007C00C471C77000001E797800C1153A
-:1019E000C471C67168217800F41C692000100C696C
-:1019F00016A0042D10A2688D0981C000F61C85A2D6
-:101A00000000C000041DC37000407800061DC370B4
-:101A10000340CA707800C4156479C671C47182A18C
-:101A20000300C800B91566797800C1156479C671DC
-:101A30007800C1150079C671C47102797800C115AA
-:101A40000079C6717800C115C470112000008CA007
-:101A50000D004000361D0C814800321D10820C81A3
-:101A60000C814800321D10820C81FF81C000BA1524
-:101A700010820E7A8CD24000621D1079CDC112798D
-:101A8000092021001920030084D240005C1D088138
-:101A90001920410011204E97122319204200108274
-:101AA00012231920430010821223192046001082AD
-:101AB000122319204700108212231920060011203A
-:101AC0005397122111207397122304790678780016
-:101AD000C0150478C6707800C115C471FCD1C0006F
-:101AE000721D1120C0537800741D112040540781CD
-:101AF00084A00F0003800380038068A2146AB4D21C
-:101B00004000831D112001007800851D1120000078
-:101B10000C6B0068DA707800BE151478F4D04000C1
-:101B2000951D01200740DB70000005A07800A01D76
-:101B3000FCD040009F1D01200740DB70010005A084
-:101B40007800A01D06A07C001478F4D04000AC1DE5
-:101B500001200740DB70000005A07800AD1D06A045
-:101B60007C001478FCD04000B91D01200740DB70D8
-:101B7000010005A07800BA1D06A07C0012711A723F
-:101B80001E731078C4D04000C41D2274267580AC2A
-:101B9000010008810C81A9819880A1203000037088
-:101BA00000008460A220A65307700100747984A10C
-:101BB00000FF4000E11D0F810C810C810480048036
-:101BC000078000A17800E41D0781048004807C79EF
-:101BD00008A1787A06A011A2107DC4D54000F11D9D
-:101BE000847B19A3807C21A40870FCD04000F11DE7
-:101BF00003700100077006001A711E72107DC4D5B3
-:101C00004000011E2273267484A0E0017C00487805
-:101C100065A040000C1E042C4A78632000007C0064
-:101C20007E0F7920004F48786220002C05A0C0006C
-:101C3000181E7810B2294A787F0F7C001120009975
-:101C40004A7AC47B19834000281E80A232001220E9
-:101C5000102078001F1E132000007C007E017E02F1
-:101C6000FCD7C000341E1120C0547800361E11204D
-:101C7000C07484A7000F0B8084A71F004000411E82
-:101C8000038003800380038005A168A27F027F0197
-:101C90007C0078102B1E00292A68002A2E6808680C
-:101CA00084A0EFF90DA80A697E0EFCD7C0005B1E68
-:101CB0000920534F7120404F78005F1E0920934F39
-:101CC0007120804F0C21046805A040006F1E16A1F2
-:101CD000C0006F1E6020006006687E010B200000BF
-:101CE0007800721E092000007E01046865A0400093
-:101CF000871E006006687810A21E781064201068A5
-:101D0000087909810A7901801268C000721E107971
-:101D1000A5C112797F0102690669002D6020781043
-:101D2000132B7F0E7C0065A04000A11E08209C6044
-:101D300005A040009E1E62209F60000065A0780004
-:101D4000941E48784A7962207C00076003018F6006
-:101D50000000A9201C0080AC0500A020012000008C
-:101D6000A44028681A602C6822607C007E0EFCD794
-:101D7000C000BD1E7120404F3120C04F7800C11EF1
-:101D80007120804F3120C05150708CA00002C000E3
-:101D9000CB1E08A60A2D0080527006A07F0E7C0084
-:101DA0007E0FFCD7C000D51E7920404F7800D71E8B
-:101DB0007920804F78102B1E9120008004680A78CB
-:101DC00065A040002B1F7800E91E002C0A786020D7
-:101DD000006065A040002B1F106006A3C000E21E3B
-:101DE0000C6006A2C000E21E282C4C7806ACC00095
-:101DF000F81E7800281F046806ACC000061F0060AB
-:101E00006020066805A0C000061F03680000780077
-:101E1000101F006408786020026486A40000C000DF
-:101E2000101F002C026860257F0F7810A21E7E0F05
-:101E30001B600500236020007F0F781064207E0F58
-:101E4000087909810A79106801801268C000281F8A
-:101E50001078A5C012780120FFFF05A07F0F7C003D
-:101E60007E07002739200000FCD04000351FFDC749
-:101E700041202100492004005120080091200080C9
-:101E80007810461E388784A71F00C0003D1FBCA7DE
-:101E900000FF3F8738873F8784A7000FC0003D1FA2
-:101EA000912001807F077C006C78092074970C21B9
-:101EB0000DA140005B1F65A07800DC2361200000BD
-:101EC000186084D0C0007B1F10788CD040006C1F3D
-:101ED0008CC01278FCC76920404F7800711F8DC0FC
-:101EE00012786920804FFDC7912000801C681F6810
-:101EF00000009120018005A0C0007C1F7C008CA008
-:101F0000F0FF4000821F7810B2297900841F941FCF
-:101F1000971F9D1FA11F951FA51F951F951F951FFB
-:101F2000AB1FDC1FE01FE61FFB1F951F951F7C00EA
-:101F30007810B22978102D1F012001807800072029
-:101F4000012003807800072001200480780007200A
-:101F500078102D1F01200680780007209120008036
-:101F60007E07FCD7C000B71F6920404F3920090009
-:101F70007800BB1F6920804F39200900006886A0C7
-:101F800000004000C51F7F001E6F912001807C0073
-:101F900074687F07BCA000FF412021004920040095
-:101FA000512010007810461E388784A71F00C000FB
-:101FB000CF1F9120018001200A8078000720012096
-:101FC0000C807800072078102D1F01200D807800EC
-:101FD00007201478E4D0C000F91FECD04000F31FB4
-:101FE000FCD74000F31FE4787800F41FE078C67057
-:101FF00001200E80780007207800951FFCD7400054
-:102000000120EC7878000220E878C67001200F806B
-:1020100078000720C270FCD7C0000F20DB700000E2
-:1020200078001120DB700100612000001B600100BE
-:10203000912080407C0080AC0100FF814000432063
-:1020400099203000A0200C7084A0FF0340002520C0
-:1020500018707E001C707E0020707E0024707E0050
-:102060001271AC811A721E732274267503700100FE
-:102070000770010008700B80C8003720077002004D
-:102080008CA0E001C0004320A55306A0037000000F
-:10209000077004007F0026707F0022707F001E7092
-:1020A0007F001A707C0011202000092010000A6BAC
-:1020B0000E6C036800FD076818001A6A002DE8A07E
-:1020C000080090A204000981C00054207C00046034
-:1020D0008660082C63200000687805A06A794000BB
-:1020E0007120022C780072206E797C007E0C6120B9
-:1020F000004F87680301082D6B200000686005A071
-:102100006A6140008320022D780084206E617F0C7C
-:102110007C0091200080042C6E7805A0C0008E20E9
-:102120006A78912001809C6005A04000A7207E0C69
-:10213000602008209C6005A04000A32062209F60D2
-:10214000000065A09C6005A0C0009B2048784A79EB
-:1021500062207F0C487862209F60000085AC000000
-:10216000C000B1207810B2294A787C00A920100064
-:1021700006A0048086808E81C800BC2000A2F000EA
-:10218000B72086808E817C007E15A920100005A0D6
-:102190004000E2201AA1C800E22013828D8148008D
-:1021A000D5201AA1C800D620F000CA207800DA2075
-:1021B0001AA108231082F000CA207E00003284A0F9
-:1021C000FFF780207F007F157C007E00003285A015
-:1021D00000087800DE20747DD07006A54000CE2176
-:1021E0001078502000788CD040000A21ECDA4000B2
-:1021F0000A217E0E9120008071202000047005A02D
-:10220000C000072108707F0E86A0080040000A2148
-:102210007800CE217F0E7800CE217810041E400079
-:10222000CE2146A070790025008012A1092040002F
-:10223000C800192178002021D07206A24000202178
-:102240004088092080007E0C1271077001009920DF
-:102250003000A920200080AC0100A02061200000F7
-:10226000FF88400032217810041E0870FCD0400026
-:10227000322107700200912001808CA0E001C00093
-:102280006921A553FF8CC0004721FF884000B82179
-:1022900078005121002C8E78A920200080AC01000C
-:1022A000A020A5537800B82146A018721C73C4DA88
-:1022B000400059212074247592A240009BA3000085
-:1022C000A3A40000ABA500001A721E73C4DA40007C
-:1022D00069212274267506A0077004004000B82109
-:1022E000FF8C4000722178100D1E7F0C78100D1E9F
-:1022F00046A0887800808A7886A002004000982155
-:102300007C7A787BC4DA40008421847C807D747977
-:1023100007810480048010A299A30000A1A40000FA
-:10232000A9A500001A721E73C4DA4000CE212274DF
-:1023300026757800CE211460FCD0C000A021692051
-:10234000404F7800A2216920804F912000801F68B3
-:102350000200FF884000AE2146A08C786020780003
-:1023600098218B780000AC7885A00300AE7891208E
-:1023700001807800CE217F0C8B78000078108D23AF
-:10238000046084A00F007810CF21FF884000CC218A
-:102390008C786020046084A00F007810CF21780032
-:1023A000E8207C007900D121E121FF211D22E121DB
-:1023B0002E22F221E121E121E121FD211B22E12157
-:1023C000E121E121E121E12139200004BC7805A7C8
-:1023D000BE78086005A70A60781071229C60BA7800
-:1023E0009F600000781077237C00BC78C4D0400048
-:1023F000F8217800E1211C60BDC01E607800052234
-:102400007810BF23BC78C4D0400005227800E121B9
-:10241000BF7800000460078084A0FF00B2780180CC
-:10242000400018227810712240001822BC78C5C0E4
-:10243000BE7878001A22780090227C007810BB23A6
-:10244000BC788CA0000EC0002522C4D0C00027227A
-:102450007800E12178107122C0002D2278009022AE
-:102460007C00BC78C4D0400034227800E121BF78E1
-:102470000000146711200100A822186084A0FF004A
-:1024800005A040005422BCA700FFA92020008EA078
-:10249000010040005422BCA7008011200200A920A6
-:1024A00000018EA002004000542278006E227810B5
-:1024B0002B1E002D912000802B6800002F6800004B
-:1024C000086884A0DEFF0A68E8AD10009120018052
-:1024D000F0005722118240006E22A92000017800EE
-:1024E000572278100D1E7C009F600000B4786DA00C
-:1024F000002CB678C0007C22BA78780084229E68CE
-:10250000002D0260B87806ADC00084220260B07869
-:102510000180B278C0008F22BC78C4C0BE78B87881
-:10252000602006A07C007E0E2EA03025BA7DB67DF0
-:10253000AE65B2651C60A260482084A9FFE11E6000
-:1025400084A960004000A3227810B6469665A6656F
-:102550009A66AA6614677120804FFCD7C000AF222C
-:102560007120404F84A7000F0B8084A71F004000FC
-:10257000BA22038003800380038005A1C47168A18F
-:102580000027078084A00F00038003800380C871A8
-:1025900000A1C260912000801478C4D04000DF22E6
-:1025A000ECD04000DB22FCD7C000D822F4D0C00021
-:1025B000E6227800DF22FCD0C000E6221078F4D0BA
-:1025C000C000E622086E84D640001023FCD9C0006B
-:1025D0001023912001807810A21E91200080781095
-:1025E0006420912001801478E4D0C0007523147811
-:1025F000C4D040007523ECD040000823FCD7C000B5
-:102600000323F4D0C0000C2378007523FCD0C00055
-:102610000C23780075231078F4D0400075231B60DC
-:10262000210078007523246096A00100C0001723C4
-:1026300000802660106A146802A248002A23400025
-:102640002A2391200180392000029C60BA789F6083
-:1026500000007810772378007523082CFCD94000FF
-:102660005223006865A040005223046A007084A0D1
-:102670000200400048234C7006A2C0004823046BAF
-:1026800060210423026005A0C00044230269602287
-:10269000026178005E23002D60207810132B086EF5
-:1026A00060210262066978005E230068026965A005
-:1026B00040005A23026178005B23066960210360B1
-:1026C00000006021FCD940006523B4A6FCFF0A6E1F
-:1026D0001068087D28850A7D00801268912001809D
-:1026E000B4D640007523B6A640000A6E7810B31E1B
-:1026F0007F0E7C00086005A70A609120008078109A
-:10270000642091200180B87865A040008A239C60F5
-:10271000BA789F60000078007723B678BA787C009A
-:1027200070797478182884D340009723008012A110
-:1027300048009C23008012A1C800AC2384C37C7A8B
-:102740001A72787A1E72C4DA4000A723847A227241
-:10275000807A267206A084D34000AC23008076786D
-:10276000D2701C7805A04000BA2301801E78C000FA
-:10277000BA236800BA23912080407C003920D323FB
-:102780007800C1233920D923042705A04000D22393
-:1027900000AC68200869106812690A680C6914683E
-:1027A00016690E6838877800C1237C000300090091
-:1027B0000F0015001B00000015001B000000412049
-:1027C00000000C787900E123B3258625E5235E24FB
-:1027D000392074973427107D78000524846086A002
-:1027E0000301C00047241461186005A14000FA23CA
-:1027F000FF86C000162478004724038680A05597E2
-:102800000C6202220080106202227810862030863C
-:102810008EA60F004000D2246C7865A0C000EB2388
-:10282000087802A6C8001624ACD5C00016243A26A3
-:102830007C0082A60300C800D22491200080692079
-:102840000000186884D0C00042241120559704224B
-:10285000C67010820422CA7084D6C000322410824E
-:102860000422DA7010820422DE7085A62080C270F5
-:102870001B68010091208040107884A0CFFF12785F
-:10288000912001803B2000007C001078ADC01278C0
-:102890007800D2243A267810BD25C000E0256C7857
-:1028A00065A0C000EB2391200080107884A0CFFFAA
-:1028B000FF8640005924ADC0127891200180780035
-:1028C000E025392074973427107D78007A248460BD
-:1028D00086A00301C000BB241461186005A140005C
-:1028E0007324FF86C0008B247800BB2480A65597F4
-:1028F0000C6202227810862030868EA61E004000D0
-:10290000D2246C7865A0C0006424087802A6C800B0
-:102910008B24ACD5C0008B243A267C0082A606000E
-:10292000C800D2249120008069200000186884D05B
-:10293000C000B6241120559709204E97A8261C21C7
-:1029400004221A2008811082F0009C2485A6308081
-:10295000C2701B68010091208040107884A0CFFFD6
-:1029600012789120018006A0092075970A203A204C
-:102970007C001078ADC012787800D2243A26781006
-:10298000BD25C000E0256C7865A0C00064249120BE
-:102990000080107884A0CFFFFF864000CD24ADC01A
-:1029A0001278912001807800E02591200080077046
-:1029B00004009479D47002A14800E3244000ED247F
-:1029C000907B02A3C000ED247800E6240280C000C2
-:1029D000ED243A261078ADC01278912001807C0059
-:1029E00084A100FF4000FA240F810C810C81048037
-:1029F0000480078000A17800FD2407810480048002
-:102A00009C7A10A21A72987A06A011A21E72C4D4DF
-:102A100040000D25A47A11A22272A07A11A226727A
-:102A2000A120300003700000092054970A26098174
-:102A30009821042184D040001B253386B0A60200D3
-:102A4000A826A65303861270077001009079947827
-:102A500000800AA1C8002A2506A02820747984A134
-:102A600000FF400039250F810C810C810480048017
-:102A7000078000A178003C250781048004807C79D0
-:102A800008A1787A06A011A2C4D440004825847B0E
-:102A900019A3807C21A40870FCD04000482584A0A4
-:102AA000E00140006D25107D312054973426A87830
-:102AB0000080AA788CD0C0006225077006000470E0
-:102AC00094D0C0005C257800D4246920474F6B2047
-:102AD0000300AC7885A00003AE7806A078007625C8
-:102AE0003020D67591208040967D107DACA5CFFF1B
-:102AF000127D91200180AA78077006003A260370A3
-:102B000001001A711E72C4D54000852522732674F7
-:102B10007C00846086A00301C000A92514611860B0
-:102B200005A1C000A92569200000186884D0C00054
-:102B3000A9250C60C6701060CA70C37020801B6825
-:102B4000010091208040781086206800A8256C78CC
-:102B500065A0C00086257C007810BD25C000E0255A
-:102B60006C7865A0C00086257800E0257810BD252A
-:102B7000C000E0256C7865A0C000B3257800E02592
-:102B8000846086A00301C000D1251860FCC01A60D3
-:102B900086A00400C000D1250478A4D04000D1252F
-:102BA0007810862006A07C007810E625C000D82585
-:102BB00085A001007C007810F525C000DE254120AD
-:102BC0000100107D7C00FF884000E52591208040B9
-:102BD0007C00907B9479D47002A1C000EF2585A37E
-:102BE00000007C004800F32502A37C0002807C00EA
-:102BF0001078ECD040000D267E0E912000807120D0
-:102C00002000047005A0C0000A2608707F0E86A070
-:102C1000080040000D2678005E267F0E78005E26B4
-:102C200084A100FF40001A260F810C810C810480D2
-:102C30000480078000A178001D260781048004809D
-:102C40009C7A987BA47CA07D10A206A019A321A445
-:102C500029A509201800286005A040002E2609207B
-:102C600040007810BB1D40005026A8780080AA784C
-:102C70008CD0C0005E261460FCD0C00040266920C5
-:102C8000404F780042266920804F912000801F68C5
-:102C90000300AB780000AC7885A00003AE789120EB
-:102CA000018078005E26AB7800007810862090794D
-:102CB000947800800AA1C8005B2606A09678D6709A
-:102CC00006A071201000912001807C00FCD7C0007C
-:102CD0006A260920594F78006C260920994F9120C7
-:102CE00000800A207E0FFCD7C00083260920404FB9
-:102CF0000120044F0420ECD040007F267920000101
-:102D00007800872679200002780087260920804FE6
-:102D100079200001042186A00000C000A026FCD775
-:102D2000C00093260920454F780095260920854F3D
-:102D3000042105A0C000A026307884A0C000C000F7
-:102D4000A0261B7845007F0F7C0009200200692027
-:102D5000004F1068ECD0C0000F277120804F792001
-:102D600000012120BF514B780F001920A74484D1C6
-:102D70004000C3261068ECD04000BF26A1202B01E4
-:102D80007800C526A1202B027800C526A1202B01A2
-:102D9000042305A04000D2269A781883AC23188318
-:102DA0009823A65318337800C5269B782000A920C5
-:102DB00010001468E4D04000E226AF780000AF783D
-:102DC0002090F000DA267800E826AF780000AF788F
-:102DD0002080F000E226037000007E018CD10920E3
-:102DE00000004000F126BDC17810E2287F0120706C
-:102DF00084A00F007E001468E4D07F00C00001278B
-:102E000085A040637800032785A0C06206780F780C
-:102E100000924378D800537880000B7808005674ED
-:102E2000537000000981400022277120404F106834
-:102E3000ECD040001C277920000178001E27792063
-:102E400000022120BF4F7800B0267C007E01BCD15B
-:102E5000C00037277E000120044F0420ECD07F0003
-:102E60004000332711200101780039271120010289
-:102E700078003927112001018CA10F00042284A0C1
-:102E8000F0FF05A112207F017810E2287C00FCD31E
-:102E9000C00057277E000120044F0420ECD07F00A3
-:102EA0004000532711200101780059271120010209
-:102EB0007800592711200101A92009000B81F00099
-:102EC0005B278CA1000E042284A0FFF105A1122033
-:102ED0007C00192002000120044F0420ECD04000A7
-:102EE0007327198309200101780075270920010142
-:102EF000A92005001382F000772794A2E0000421A6
-:102F000084A01FFF05A20A201983400088270920FA
-:102F10000102780075277C00FCD3C0009C277E004E
-:102F20000120044F0420ECD07F004000982711209E
-:102F3000010178009E271120010278009E271120B0
-:102F40000101A9200C000B81F000A0278CA100F04A
-:102F5000042284A0FF0F05A112207C00FCD3C00036
-:102F6000BE277E000120044F0420ECD07F004000EB
-:102F7000BA27112002017800C02711200202780030
-:102F8000C02711200201042284A0CFFF05A1122036
-:102F90007C007E0CBCD1C000DA277E000120044FEB
-:102FA0000420ECD07F004000D6276120000178008B
-:102FB000DC27612000027800DC2761200001BCC111
-:102FC0000381038080A020009A60AC62AC637F0C18
-:102FD0007C007E0CBCD1C000FA277E000120044F8B
-:102FE0000420ECD07F004000F6276120000178002B
-:102FF000FC27612000027800FC2761200001BCC191
-:103000000381038080A022009A60A46084A0DFFF77
-:10301000AE607F0C7C007E0CBCD1C0001C287E0002
-:103020000120044F0420ECD07F00400018286120CC
-:10303000000178001E286120000278001E2861200F
-:103040000001BCC10381038080A022009A60A460BB
-:1030500085A02000AE607F0C7C007E0CBCD1C0003F
-:103060003E287E000120044F0420ECD07F00400069
-:103070003A28612000017800402861200002780091
-:10308000402861200001BCC10381038080A0200092
-:103090009A60A4608CA2200040004E28ACC29DA380
-:1030A0000040FCC3B4D3C0005328FDC3AE6210205F
-:1030B000A460AE6318207F0C7C00912000807E0C01
-:1030C0007E0E186805A04000C028FCD14000692889
-:1030D0006120D09678006B286120C0957810C828B0
-:1030E0004000A228A9200101FCD1400078286120DD
-:1030F000D09578007A286120C0947E0C7810C8287A
-:10310000400085287F0C608CF0007A287800C02869
-:103110007F00FCD140008F2882A0D0957120804F85
-:103120007800932882A0C0947120404F7A70767105
-:10313000382101200400667083700F00D471DCC157
-:10314000D671781063267800BC28FCD1C000A9286D
-:103150007120404F7800AB287120804F2060DDC087
-:10316000226076713821002C7E7001200600667086
-:1031700083700F00D471DCC1D671781063260120F2
-:1031800000007800C228012001009120018005A0E4
-:103190007F0E7F0C7C00042C05A04000DF286020FF
-:1031A000106006A3C000DC280C6006A2C000DC286A
-:1031B000146006A1C000DC2806A07800E1280060A9
-:1031C0007800C92885A001007C007E0F7E0E7E015C
-:1031D000BCD1C000FA287920404F7E000120044F66
-:1031E0000420ECD07F004000F62871200001780018
-:1031F000FE28712000027800FE287920804F71207F
-:10320000000120798CA10F00EC70C4D0C000082907
-:103210007F01780023290B810B810B810B817F00BB
-:10322000BCD0C00020297E000120044F0420ECD037
-:103230007F0040001C298DA1000F780022298DA15C
-:10324000000F780022298DA1000804217F0E7F0F36
-:103250007C007E0E0120014F0420ACD0C000A329C9
-:10326000E468ACD04000A32984A00600C000A329D4
-:103270001460FCD0C0003D297120C05378003F2964
-:1032800071204054078084A00F00038003800380D6
-:1032900070AE047084A00A00C000A329087194A134
-:1032A00000FF4000A3298CA1FF0001200A0006A115
-:1032B0004000722901200C0006A14000762901205F
-:1032C000120006A140007A290120140006A1400046
-:1032D0007E290120190006A1400082290120320028
-:1032E00006A14000862978008A2909200C00780070
-:1032F0008C290920120078008C29092014007800FC
-:103300008C290920190078008C29092020007800D8
-:103310008C2909203F0078008C2911200000002111
-:1033200005A20A707120004F0470BCD04000A32990
-:103330001460FCD0C0009E29EA707120404F7800D4
-:10334000A129EE707120804F1F700D007F0E7C0050
-:103350000120054F0420E4D0C000B129047884A0E6
-:103360001FFF85A0406306787C006800B229912089
-:103370000080712000007E00187084D0C000B92940
-:103380007F0071201000CA707F00C670C370028079
-:10339000DB700F08DF700B00712000001B70010054
-:1033A000912080407800CF293C7F587E307C387D4A
-:1033B000A0788E70927596749A769E7794A53F0049
-:1033C000F4D44000E62984A77D00C0001D44781095
-:1033D000B2299CA40F0082A304005000F129A6A3E7
-:1033E0000700C000B2291824078584A00F007900C7
-:1033F000F629713062318D31FF33E8376238173981
-:10340000A839963A853B092A062A422E652FB937F4
-:10341000062A7810B2297C0006A07800132A0878C2
-:103420008DC00A7806A002704E704670D27060702F
-:1034300005A0C000792B647084A0070079001D2AC4
-:10344000252A982AA12AAC2AB72A5F2BC22A982AB1
-:103450003078BCD0C000082AD471BCD1C000082A82
-:10346000B4D1C000752AA47086A001004000082ACB
-:10347000B4706DA0006865A055A09B7810000C6B1F
-:10348000AA7B086845A0106D04686DA05DA086A8A1
-:10349000010040004B2ABC69AA7DAA79C0684DA0F2
-:1034A0001C6E012010007800D32C607005A0C000B5
-:1034B000082A7E0C7E0DB4706DA0006865A055A032
-:1034C0009B7810000C6BAA7B086845A0106D0468FF
-:1034D0006DA05DA086A8010040006E2ABC69AA7D8F
-:1034E000AA79C0684DA01C6E012020007800D32C62
-:1034F0007810B043C000082A1B785B00BC706DA038
-:10350000B4685A789468D678DE789868D278DA7891
-:1035100008788DC00A78BC684270B4C1D671B870A2
-:1035200065A0C0685A7003700200002D4E7080AD17
-:10353000090046707C007810B043C000A02A1B78B8
-:103540004700037004007C007810B043C000AB2A31
-:1035500011200C007810D22A037004007C0078102F
-:10356000B043C000B62A112006007810D22A03709A
-:1035700004007C007810B043C000C12A11200D0067
-:103580007810D22A037004007C007810B043C00089
-:10359000D12A112006007810D22A7C707F7000009A
-:1035A00068204E70037001007C007471FCC10781BB
-:1035B00082789B78100086A20C00C000E12AAA7ACB
-:1035C000012001007800F62A8CA11F008DA1C00007
-:1035D000AA7986A20D004000EF2AAA7A01200200F3
-:1035E0007800F62AAB7820007871AA79AA7A0120AF
-:1035F00004009B786000AA785B7804001B781601B1
-:103600007810D34383700F00D470B4D04000122BD5
-:10361000B4C0D6707E0CB87065A0086084A0EFFBC3
-:103620000A60186001801A607F0C7C00147005A08D
-:10363000C000212BD470B4D04000222BB87006AC4F
-:10364000C000222B7810012B7C007E01A47186A182
-:1036500001004000542B7E0D7E020021112001004C
-:1036600012A2B4706820006806AC40003B2B1182A7
-:103670004000522B7810562B7800302B7E0C002106
-:103680001120010012A2B470682000686020086058
-:1036900084A0EFFB0A60118240004F2B7810562B5C
-:1036A0007800422BA77001007F0C7F027F0D7F0105
-:1036B0007C00E8AD0500AC7006ADC0005E2BA870C4
-:1036C00068207C007810B043C000082A7C70682015
-:1036D000747778104E42502C781092449B781000EA
-:1036E000146884A01F00BDC0AA781C6E4120010090
-:1036F000012004007800D92C7810B043C000082ABB
-:103700009B78100060706820146FD470B4D04000B3
-:10371000932BB4C0D6707E0CB87065A0086084A0EE
-:10372000EFFB0A60186001801A607F0C78104E422F
-:10373000502C78109244246805A04000A42B82A04D
-:1037400006004800A22B7800A42B27680500146807
-:1037500084A01F00BDC0AA783120200041200100B4
-:10376000012003007800D92C8DC2D672C07200A24D
-:1037700015A0547108812AA14800BC2BC071642196
-:103780000465FF85C000D32B56712184C000B72B80
-:10379000D4708CD04000CF2BD07005A0C000CF2BB0
-:1037A000D3700A007C0000227800C12BD4708CC03A
-:1037B000D670D3700000346005A0C000D02B08671D
-:1037C00084A73F074000022CD4D7C000D02B84A789
-:1037D0002100C000D02B84A702004000F32B84A757
-:1037E00004004000D02BBCA7FBFF0A6784A7180287
-:1037F000C000D02B84A700014000022C186005A057
-:10380000C000D02BBCA7FFFE0A6768252368000014
-:103810001C6E84A60E0018634000132C1C6002A3CB
-:103820004800162C4000162C7800D02BFF83C000D7
-:10383000D02B582D502C5671BCD7C0001F2C28708F
-:1038400022603A60BCC70A67C06865A04DA00061ED
-:10385000602A41200100146B9CA31F009DA3C0009F
-:10386000FCD14000332C84D64000352C9CA3BFFFF4
-:10387000A4D640003A2C9DA3200084A60E00C000D0
-:10388000852CA5C70A67002CC668A47786A7010007
-:10389000C000592CD470B4D0C000592C007082A044
-:1038A0000200C800592C3078BCD0C000592C9B783D
-:1038B0001000AA7B7800D12C3987A6775027B077E3
-:1038C000B0A70500AC7006A6C000642CA876B2763E
-:1038D0003A2C38873A2D38873A2838873A23388760
-:1038E0003A253078BCD040007C2C9120008091207B
-:1038F0003D30D47084A03D30912000809020D5AA26
-:1039000000004000842C21840022C000B62B7C00E3
-:10391000DCD14000493E292020009CD6C000922CDA
-:1039200028858CD6C000922C28854088146F0C61A5
-:1039300008818CA1FF00CC7060A1642CFF8C40003A
-:10394000B12C146006A7C0009A2CB8600180BA6040
-:10395000C000952C602A086085A000010A60002242
-:103960002184C000B62B7C00602A0E61BE69002C49
-:10397000C66840880860D5C00A60A47786A70100A1
-:10398000C000592CD470B4D0C000592C007082A053
-:103990000200C800592C3078BCD0C000592C9B784C
-:1039A0001000AA7BAA7DAA79012002007E0018607F
-:1039B00000801A607800DA2C7E0060290461602A99
-:1039C00084A118004000F62C84A110004000E92CCE
-:1039D00078105E40C0001B2D84A108004000F62C2A
-:1039E000A06984A10006C000F62C78103E3F780044
-:1039F0001B2DA06984A1001E4000262D84A1000873
-:103A000040000F2D7E0C6029006085A00020026020
-:103A100004618DA1100006617F0C78105E40C0002B
-:103A20001B2DA06984A100024000172D7810A13F32
-:103A300078001B2D84A10004C000F22CA06984A191
-:103A400000104000262D14698CA100FF0F81781012
-:103A5000E6277F028CA6E00084A660004000332D9C
-:103A600086A06000C000332D8DA100408DA104010F
-:103A7000B6699B7860000028AA781868FDC01A68AB
-:103A8000BCD640004E2DFCC0877000008AA00D00FF
-:103A900050004C2D8AA00C00867101200C000C8077
-:103AA0008A71AA781835403328340080AC8080AF02
-:103AB0002B00A0209B78000080AD0B009820A6531F
-:103AC000A8239828A02586A22000C000862DD470A7
-:103AD000B5C0D670002CBA70002DBE701468FCC042
-:103AE0000780827886A202004000BC2DA47000806E
-:103AF000A670B47498A40500AC7006A3C0007E2D17
-:103B0000A873B67386A210004000082A7F0D7F0CB0
-:103B10007C00007005A0C000642D86A20200C000D9
-:103B2000D62D7810B043C000642D1468FCC0078007
-:103B30008278912000801B785B00B4685A78946882
-:103B4000D678DE789868D278DA7891200180087883
-:103B50008DC00A787E127E0D7E0CD47084A0002762
-:103B600090207F0C7F0D7F1200295A70BC68427034
-:103B700003700200002D4E7080AD09004670307851
-:103B8000BCD04000C82D91203D30D47084A03D3081
-:103B9000912000809020A47005A0C000CD2D7C0055
-:103BA00021844000CC2D5072C07000A215A0780076
-:103BB000B62B86A21000C000072E7810B043C000BC
-:103BC000642D1468FCC0078082781B785B00B468A1
-:103BD0005A789468D678DE789868D278DA78087857
-:103BE0008DC00A78A4700080A670B47490A40500FB
-:103BF000AC7006A2C000FA2DA872B67200295A70E5
-:103C0000BC68427003700200002D4E7080AD090048
-:103C100046707C00B46B9DA300205A7B1468FCC0E6
-:103C200007808278946BD67BDE7B986ED27EDA7EBC
-:103C30001B785B0000295A70027208788DC00A78E0
-:103C4000002305A64000322ED47084A0002786A051
-:103C50000023C0002C2E0920000078002E2E092001
-:103C6000010084A20F007910382E80AD0900467043
-:103C7000002D4E707C00402E3F493F492C493F4962
-:103C8000402E402E402E7810B229087884A0FDFFE7
-:103C90000A787810A5297E0F7920004FAC787F0F25
-:103CA00084D040006A2E647086A00100C000582EA7
-:103CB00066707800412F647086A00500C000682EF1
-:103CC0007C7068201B68040017680000206884A0CE
-:103CD000FF009DC0226867700000A7700000A870F8
-:103CE000B270B6707810012B7E151120040064713B
-:103CF00086A1010040008A2E86A10700C000812E07
-:103D00001F70050078008A2E1F7001006770000088
-:103D1000D470DDC0D67078008C2E67700000012052
-:103D20000A4F042084A0FF0086A0180040009C2EAB
-:103D30001870167005A0C0009C2EA77001007E06AA
-:103D40007810D645A920100039200000781048418D
-:103D5000B8A70001F000A32E7F0600707900AD2EF9
-:103D6000E72EC22EC22EB72EE72EE72EE72EB52E57
-:103D70007810B229607005A04000E72E06ADC000A3
-:103D8000C22E006862707800D42E206884D0C000F3
-:103D9000D02E146F78104E420860D4C00A6078109C
-:103DA000193E7800D42E5C7060200068026084A602
-:103DB000005F1E681868FCD04000DC2E1A6A176885
-:103DC00000002B680000206884A0FF009DC02268CE
-:103DD0007810732084B200044000EF2E2120D0968A
-:103DE0007800F12E2120C0957810462F84B200046F
-:103DF0004000FB2E2120984F7800FD2E2120584FA7
-:103E00007810462FA920010184B200044000092F38
-:103E10002120D09578000B2F2120C0947810462FB8
-:103E20002084F0000B2F84B200034000182F612083
-:103E3000C05478001A2F6120C07421200200A920EC
-:103E400000011061FF814000372F18607E017E0065
-:103E50001120024F0C2202A112207F007F0102A13B
-:103E60005000372F1260C000372F1120044F04225A
-:103E7000A5C012201B600000E0AC1000F0001E2F57
-:103E80002184C0001C2F7F15037000004F700000BC
-:103E90007C007E04042405A04000612F6820006897
-:103EA0007E001A6A176800002B680000B46884A0BE
-:103EB000005F1E68206884A0FF009DC02268781003
-:103EC00073207F007800482F7F04232000007C00AF
-:103ED00082A2030050006B2F7810B22900237900D2
-:103EE0006E2F712FFC2F193082A202004000772F15
-:103EF0007810B22964706770000083700000790048
-:103F00007E2F862F862F882FC82F553E862FC82FAD
-:103F1000862F7810B2297477781048417477BCA73F
-:103F2000008F78104E42186005A04000BF2FFCD7CC
-:103F3000C0009B2F2120C09578009D2F2120D09676
-:103F40000920050011201000781034304000BF2FE8
-:103F50007E15A9200101FCD7C000AF2F2120C094FD
-:103F60007800B12F2120D0957E0409200500112072
-:103F70001000781034307F044000BE2F2084F00001
-:103F8000B12F7F15388784A71F00C0008E2F7800BF
-:103F90000C2A78000C2A747778104E42186005A01D
-:103FA0004000FA2FFCD7C000D62F2120C095780002
-:103FB000D82F2120D096092005001120200078104C
-:103FC00034304000FA2F7E15A9200101FCD7C00033
-:103FD000EA2F2120C0947800EC2F2120D0957E0478
-:103FE0000920050011202000781034307F044000A3
-:103FF000F92F2084F000EC2F7F1578000C2A002286
-:104000007900FF2F0230043004307810B2290920E3
-:104010001200647086A0020040000D3009200E00DE
-:104020001868FCD0400012301A6967700000D47024
-:10403000DDC0D67078005D43002279001C3021304D
-:1040400004301F307810B2297810D645007086A051
-:104050000200C000C73D7810363E086084A0EFFB28
-:104060000A607810B83D4000C73D78000C2A04244F
-:1040700005A040006D306820042D7E00146806A75E
-:1040800040004330202D7F00780035307F00222013
-:104090001A69176800002B680000B46884A0005FEC
-:1040A0001E68206884A0FF0005A222687810732093
-:1040B0002120024F1C2419832223106001801260EA
-:1040C000C00064302120044F0424A5C022200860D1
-:1040D00084A0EFF90A607810222B7810363E7C001D
-:1040E00085A0010078006C300023790074307930AD
-:1040F0007730F9307810B229E47805A0D000AF30DD
-:1041000008327E000120044F0420ECD07F004000E4
-:104110008A308CA1000378008C308CA10004400010
-:1041200092301800082A780094302800082A0820C5
-:1041300084A03000C0009B307800B937EC7884A0B0
-:10414000030040009930002184A007007900A530C9
-:10415000D930E330CE30AD30A543A543AD30EE309D
-:104160007810B229007086A00400C000C9306470C5
-:1041700086A00200C000BF301120020019200000FC
-:104180007800652F647086A006004000B930647026
-:1041900086A004004000B930E479012003007800D3
-:1041A00043341868FCD04000D4301B681D007810E0
-:1041B00018411B7864007C001868FCD04000DF3098
-:1041C0001B681D0078101841780081431868FCD0E6
-:1041D0004000E9301B681D00781018411B78F8007A
-:1041E0007C001868FCD04000F4301B681D0078107B
-:1041F00018411B78C8007C0084A50F00C00018314E
-:104200007810A5290070790002310C2A0A310C318E
-:10421000C73DC73DC73D0A310A317810B229781031
-:10422000363E086084A0EFFB0A607810B83D40007D
-:10423000C73D78000C2AE47805A0D000AF300832E2
-:104240007E000120044F0420ECD07F004000293183
-:104250008CA1000378002B318CA100044000313187
-:104260001800AF30780033312800AF30082084A028
-:104270003000C0003B311B785B007C00EC7884A0F0
-:10428000030040003831002184A107007900453146
-:10429000543158314F314D31A543A5434D319F43E2
-:1042A0007810B229781020411B7864007C007810C7
-:1042B000204178008143781020411B78F8007C0071
-:1042C000781020411B78C8007C00002379006531FC
-:1042D0006A3168316C317810B2297800A8391B68CE
-:1042E0001600A3780000E47984A130004000A839CA
-:1042F000EC7884A003004000A83984A100014000AC
-:10430000703184A10700790082318A315831CE3072
-:104310005D43A543A5435D439F43781069437C00FB
-:1043200082A20500500093317810B2290023790051
-:1043300096319931C933D433002279009C31B6319A
-:10434000A331B631A131AC337810B2299B78180073
-:10435000A87884A0FF0082A02000480007418AA01E
-:104360000400C80007417900B23107410741074105
-:10437000B1409B781800A87984A180004000C73123
-:1043800078000741007005A0C000BD311120040075
-:104390007800933B84A1FF008AA01000C800074169
-:1043A0007900CF31E131DF31F631FA31CD320741D9
-:1043B0000741CF3207410741A833A83307410741DE
-:1043C0000741AA337810B229E4D64000EC3101202D
-:1043D0000003008000803A781B78C3007C001868D6
-:1043E000FCD04000F4311B681D007800E4317800F7
-:1043F0005D431B681D00780011412069226984A675
-:104400000018C0005F32206884D0C0006532186890
-:1044100086A00800C0000B321B680000D4D6400004
-:10442000CA32BCD640004B3287700000186884A0A6
-:104430003F008AA00D0050004B328AA00C0086710C
-:1044400001200C000C808A719B786100AA787E158F
-:104450007E137E147E0108328CA1000340003D32A1
-:104460007E000120044F0420ECD07F004000393250
-:10447000A1202B0178003F32A1202B0278003F328F
-:10448000A1202B017F019B7800000080AC8080ADD3
-:104490000B009820A6537F147F137F15386005A06A
-:1044A000C0005A321C6884A00E00400011417810F0
-:1044B00027412B78083078005C3201803A601B7805
-:1044C00067007C00E4D6400065321B7879007C00F0
-:1044D00084A660004000C732DCD64000C732FCD65C
-:1044E000C000713278008832FCC65A7EB66EDC7A23
-:1044F000D879D0781B80C8007B32008084A03F0030
-:1045000008A191A20000986B002102A3B268946BED
-:10451000002203A3AE68F4D640008E32F4C65A7E61
-:10452000B66E007086A00300C0009C327E0078103A
-:10453000D64578103F497F001B7876007C0006A0A6
-:104540007810444AB06AAC69986C946B002205A15B
-:104550004000AB32002222A400211BA3AA6CD27C13
-:10456000DA7CA66BD67BDE7B002305A4C000BB32C1
-:10457000F5C65A7EB66E1B7876007C001B787600F6
-:10458000002215A1C000C43278103F497C00781089
-:1045900077497C001B7879007C001B7867007C00E1
-:1045A0007810B22978001B332069C4D14000E4326E
-:1045B000C4C122697E0C587060200060E4C00260B3
-:1045C000046084A0F5FF06607F0C78000F33CCD127
-:1045D00040000F33CCC122697E0C5870602000600F
-:1045E000ECC002600460A4C006600820482C7F0C68
-:1045F0009CD140000F3378104A4278103E3FFF882C
-:1046000040000F339B7860000028AA78587E95C63A
-:104610005A7ED4D6C0000C331B7864007C001B7813
-:1046200078007C00587ED4D6C00016331B78670013
-:104630007C001B7879007C0078000C411920000078
-:1046400090798CA10700C0002933206884A0000164
-:1046500040001933092008009B781000A87894A026
-:10466000FF0086A20100C00045330023A87C00A4FF
-:10467000182002A140003D3348003D3378003F330D
-:104680007800D132A824A87AF0003F3378002B3389
-:1046900084A2F00086A02000C000993318831883FC
-:1046A000002302A14000553348005533780096336B
-:1046B00086A22300400019331C6884A0F1FF1E6805
-:1046C000587E84A6F1FFA5C030205A7E0860A5C0A0
-:1046D0000A607E0C5870602004600820482C7F0C13
-:1046E000A4D14000763378104A4278105E407800BA
-:1046F00084337E0C5870602004600820482C7F0CA6
-:104700009CD140000F3378104A4278103E3FFF881A
-:1047100040000F339B7860000028AA7895C65A7E27
-:10472000D4D6C00093331B7864007C001B787800DB
-:104730007C00A87A78002B331883002302A1400064
-:10474000A2334800A23378002B3384A28000C0003B
-:10475000114178000C4178001141780007415870F0
-:104760004DA09B781800A87884A0FF008EA00100BF
-:104770004000B9337810B229A87A94A2FF00A87833
-:1047800084A0FF008AA00400C80007417900C53357
-:1047900007418F3E0741064082A20000C000CF3390
-:1047A0007810B229781018411B7878007C0082A21A
-:1047B0000300C000DA337810B229FCD4C000FA3309
-:1047C000647005A04000E3337810B229146F767747
-:1047D000BCA7008F78104E42086085A021000A60B7
-:1047E000388784A71F00C000E73378101C4167702A
-:1047F00002001F7009007800FC3378102B411B78F1
-:1048000078007C0082A20400500005347810B229A0
-:104810000023790008340B34CB350E3686A2030012
-:10482000400043340072D87CDC7DD07FD471BCD191
-:10483000C0003B34B4D140003B34687884A0FF0012
-:10484000C0003B3482A20200C8003B347E0D3B789E
-:1048500000831B784C00BC706DA0B4685A789468D3
-:10486000D678DE789868D278DA78B4C1D6710370D9
-:1048700030007F0D01200000780047343B780013A2
-:104880001B784A0001200000780047340072D87C71
-:10489000DC7DD07F4A70A068ECD040004F340860C7
-:1048A0008DC00A6084A20F0079005334AB356034A8
-:1048B0005D3411379D370C2A5B345B347810B22994
-:1048C0000860D4C00A60E4D640006834487086A00E
-:1048D0001400C00088347810D645092000001868FC
-:1048E000FCD040007134487086A01400400082342F
-:1048F000186886A00800C000633558789CD0400036
-:1049000063352068ACD0400063351B681400092073
-:1049100002007800C73468788CA0FF004000C734DC
-:1049200086A10800C0009E340860A4C00A60781008
-:10493000B83D4000C7347810363E7810D645780030
-:10494000AF3486A12800C000C734186005A040001D
-:1049500091340180400091340180400091341E6008
-:1049600078009134206884D040000C2A84C02268EA
-:104970007810132B5C707E0C6020006802607F0C46
-:104980000460026805A0002DC000C4340260066007
-:1049900078000C2A7E01FF81C0001135007086A0CE
-:1049A000300040001135D471BCD1C0001135B4D1F4
-:1049B000C000F834607005A0C0001135A47086A056
-:1049C000010040001135037000007E047E057E0763
-:1049D0007E067E0C7E0D7810352A7F0D7F0C7F06BB
-:1049E0007F077F057F04D471B4D1C00011350370F7
-:1049F0004000780011357810B043C00011351B78A5
-:104A00005B007E0DBC706DA0B4685A789468D6784F
-:104A1000DE789868D278DA78B4C1D6710370300045
-:104A200008788DC00A787F0D781048367F01FF81A5
-:104A30004000633584A600DF1E682B680000146FF9
-:104A400086A10200C0006435186886A01400C0006A
-:104A50002D350820E4D640002D3568788CA0FF0065
-:104A60007810012B7810222B2068DCD0C000643530
-:104A7000178794A20F0013821382138284B200035B
-:104A80004000433590A2C0537800453590A2405471
-:104A900090A200001C22C4D3C0004D3578005335CD
-:104AA0001082042285A0180012201182D4D3400065
-:104AB0005E35A068C4D0C0005E357810C23678007C
-:104AC0000C2A08608DC00A60780064352A6916696E
-:104AD0001868FCD040006B3548701A688CA600DF5F
-:104AE0001E691064FF84400080350920024F0421B4
-:104AF00001800A2021841264C00080352120044FE7
-:104B00000424A5C02220186005A04000883501803B
-:104B10001A60C0008B350860A4C00A60206884D089
-:104B2000C0009735006805A0C0009435026006609B
-:104B300078009B355C706020006802606120004F47
-:104B400087680301082D6B200000686005A06A617A
-:104B50004000AA35022D7800AB356E61007286A246
-:104B600030004000BB3586A24000C0000C2A037014
-:104B700002004C706820C46860207C000370020052
-:104B8000BC706DA0BC684270B87065A0C0685A70F7
-:104B9000002D4E7080AD090046707C0082A204009A
-:104BA0004800D1357810B22900227900D435D835A3
-:104BB000E935F635E93586A500134000E93586A5C7
-:104BC0000083C000CF3503700000186001801A60B8
-:104BD000086084A0EFFB0A60007086A0050040001A
-:104BE000F335781018411B7878007C001B78790029
-:104BF0007C0090780780018084A0070080A01800C6
-:104C00009A78A8798CA1FF0086A1030040000B369A
-:104C100086A1000040000B36780007411B78790020
-:104C20007C00206895C02268FF82C000183678108A
-:104C3000184178001F36118240001D367810B229C5
-:104C400078102B411B7878007C007810D3433078A3
-:104C500084A0C000C00045367E0108327E000120DD
-:104C6000044F0420ECD07F00400037368CA10003B5
-:104C7000780039368CA100047F01400040361800CE
-:104C8000453678004236280045361A7906A07C0061
-:104C900085A001007C0084A66000C00052362F6809
-:104CA0000000336800007800C136DCD6C0006A36E8
-:104CB000B468DCD0C0006A369869946A2E69326A9A
-:104CC000487005A0C0006736002205A14000D64507
-:104CD0004B7015007800D6457C00ACD6400090366D
-:104CE000F4D6400076362F68000033680000780064
-:104CF000D645B46884A0004035A6F4D6C00070360E
-:104D0000487005A0C00083364B701500DCD6C0008B
-:104D10008C36B468DCD040008C36A86CA46D2E6C48
-:104D2000326D7800D645F4D6400099362F680000E1
-:104D3000336800007800D645B46884A0004835A6E2
-:104D4000F4D6C0009336487005A0C000A6364B705C
-:104D50001500082410250027FB80C800AD36008010
-:104D600084A03F0008A191A200002E69326A0021B0
-:104D700005A2C000BA367800D645007086A00600AD
-:104D80004000C1367800D6457C0046690860CDC039
-:104D9000CCD34000C9368DC00A6018683A681B68D9
-:104DA00006008F68000093680000306A2C693E6A34
-:104DB00042692F6803003368000037682000976855
-:104DC00000009B68200000707900E3360C2AF5365D
-:104DD000ED36EB36EB36EB36EB36EB367810B229A8
-:104DE000206884D0C000F5367810193E7800FB3674
-:104DF0005C70502C602000680260602A08328CA130
-:104E00000003400004372120584F78000637212046
-:104E1000984F042405A040000D3720207800063765
-:104E2000222D6B2000007C007810203E7810363E4A
-:104E30000860CCC00A602B6800009B780E00146FDD
-:104E400038691A694469166908328CA10003400068
-:104E50002A370920000078002C370920010078103B
-:104E6000814ADCD6400034371C69EDC11E691868E0
-:104E7000FCD04000433768788CA0FF0040004137E9
-:104E80001B681E00780043371B68000084B20003D3
-:104E9000C0004B372120984F78004D372120584FC4
-:104EA000006822203C6A4069326A2E69C06860202E
-:104EB0000060A4D040008D3741202100492005002A
-:104EC000512020007E0D7E0F7E157E147920004F2C
-:104ED0007810461E7F147F157F0FCC70102009209C
-:104EE00001017E0204226DA040007D37146806A7F0
-:104EF00040007A370068780070372068D5C0226893
-:104F00007F0210820981C0006E377F0D6770030039
-:104F10007F700000767783700F00D471DCC1D6718A
-:104F2000186886A00200C0009937176800002B6837
-:104F300000001C68ECC01E687810732078000C2AF2
-:104F4000D87CDC7DD07F781048362B6800009B78B9
-:104F50000E00146F7810D7438CA0FF0016691868F4
-:104F6000FCD04000B23748701A688CA600DF1E697A
-:104F70006770000078000C2A007005A0C000BF37E1
-:104F800078000C2A06A07810D6452069ACD1C00064
-:104F9000C8371B6814008CA600DF1E692B68000050
-:104FA000206884A0FF00226800707900D4370C2AA2
-:104FB000DE37DE37E137E137E137DC37DC377810D1
-:104FC000B2291868780043340860A4C00A601768E2
-:104FD00000007800DE3D00237900EB37EE37F03734
-:104FE00060387810B229FCD6C000473800700DA098
-:104FF0007900F7370C2A0138013831380138443844
-:10500000FF37FF377810B22984A66000400031389E
-:1050100086A06000C0002E38ACC6F4C6EDC65A7E2D
-:10502000B66E1C68ACC01E6886A102004000203825
-:105030007810D645AC69B06815A1400020387810CA
-:1050400077497800223878103F491B787900D4716D
-:10505000B4D1C000082AA47086A00100C000522A62
-:105060007C00ECD640000B381868FCD04000443877
-:10507000F4D6C0003E381B6815001B787900780014
-:10508000082A1B6807002F680000336800007810AA
-:1050900069437C00FCC65A7EDC7AD879D0781B80C4
-:1050A000C8005038008084A03F0008A191A20000F1
-:1050B000986B002102A3B268946B002203A3AE6830
-:1050C0001B7879007C007810B229002379006538BC
-:1050D0006A388F38EF387810B229007079006D384F
-:1050E000753877388038753875387538753875384B
-:1050F0007810B229AC69B06815A1400080387810EA
-:1051000077497800823878103F491C68B4C01E681F
-:10511000D470B4D0C000082AA47086A00100C000DA
-:10512000522A7C00FCD6C000DF3800700DA0790048
-:1051300096380C2AA638A038D638A638DC389E38DF
-:105140009E387810B2299468D678DE789868D2783C
-:10515000DA7884A660004000D63886A06000C000DF
-:10516000D338B4A6BFBFEDC65A7EB66E86A1020084
-:105170004000C2387810D645AC69B06815A140002F
-:10518000C238781077497800C43878103F491B78C6
-:1051900079001C68B4C01E68D471B4D1C000082A5C
-:1051A000A47086A00100C000522A7C00ECD640000A
-:1051B000B0381868FCD04000DC381B6807001B784A
-:1051C000F9007C00FCC65A7EDC7AD879986B002105
-:1051D00002A3B268946B002203A3AE68D2791B7855
-:1051E00079007C00DCD64000F8382B7809301B7839
-:1051F00079007800082A8478ACC08678E47884A0A6
-:105200000800C0000B3984A4000240000539F5C62F
-:10521000DDC65A7E1B7879007800082A206895C080
-:1052200022687810E242DDC6781018411B787800B9
-:105230007800082A002379001A391D391F392139CD
-:105240007810B22978001141D4D6C0005C39E479D5
-:10525000ACD140002F39EC7884A0030040002F39F6
-:105260002B7809309B786000AB78000084A6FBFFA8
-:105270005A78E479ACD140003F39EC7884A003003F
-:10528000C00058390120044F0420E4D0C000543934
-:105290002068C4D0400054397E0C587060200460EF
-:1052A0009DC00660086084A0FF000A607F0C01209A
-:1052B00014007800433484A1070079009239907A71
-:1052C00094A207009B786000A879FF814000903984
-:1052D0009B781000A87B84A30100C0008339A87BC1
-:1052E000A87B86A30100C00076390920F7FF78006B
-:1052F0007C3986A30300C00083390920EFFF7E0CB0
-:1053000058706020046004A106607F0C9B786000E8
-:10531000AB78000084A6FBFF5A782B78093020690F
-:105320008CA1FFFC226978005D43D930E3309C39C1
-:10533000A2399A399A395D435D437810B2292069C0
-:105340008CA1FFFC22697800634320698CA1FFFCDB
-:10535000226978005D43E47984A130004000B239CD
-:10536000EC7884A00300C000E639007086A0040039
-:10537000C000CC39647086A00200C000C239112080
-:105380000200192000007800652F647086A00600D6
-:105390004000BC39647086A004004000BC39007035
-:1053A00086A000004000082A206984A12004400053
-:1053B000DB39D4C1226918687800433418688EA09C
-:1053C00002004000E439FDC01A6801201400780092
-:1053D000433484A107007900EA395D435D43F23923
-:1053E0005D43A543A5435D435D43BCD64000343ACD
-:1053F0008471FF814000343A82A10D00D000013A4F
-:10540000877000007800063A82A10C00867009209F
-:105410000C009B786100AA797E157E137E1488703B
-:10542000148110A28A7280A00B0000AD982084B273
-:1054300000034000283A7E000120044F0420ECD0F5
-:105440007F004000243AA1202B0178002A3AA120B5
-:105450002B0278002A3AA1202B019B7800000881BA
-:10546000AC81A6537F147F137F1578006343D4D695
-:10547000C000883A206884D0400063438CA6600056
-:1054800084A660004000463A86A06000C000463A0C
-:10549000F5C194C15A79B6699B786000AB78000079
-:1054A0009B7861001868FDC01A68AA7808800C8192
-:1054B00040004F3E8CA1F800C0004F3E7E157E1389
-:1054C0007E147E0108328CA100034000743A7E00F5
-:1054D0000120044F0420ECD07F004000703AA1204E
-:1054E0002B017800763AA1202B027800763AA12091
-:1054F0002B017F019B7800000080AC8080AD0B0009
-:105500009820A6537F147F137F151468FCC0078072
-:105510008278780063431868FCD040008E3A1B689C
-:1055200008002068ADC02268781020411B78EA008E
-:105530007C0000237900993A9E3A763B9C3A781099
-:10554000B229D87CDC7DD07FFF82C000C73A0072D0
-:1055500086A2030040001034D471BCD1C000CA3A06
-:10556000B4D14000CA3A7E0D3B7800881B784C00CD
-:10557000BC706DA0B468A5C05A789468D678DE78FF
-:105580009868D278DA78B4C1D671037030007F0D94
-:105590007800CE3A00727800CE3A3B7800181B783B
-:1055A0004A0084A20F007900D23A613B103BDC3AFA
-:1055B0003F34DA3A613BDA3ADA3A7810B2291C68B9
-:1055C000ECD04000E33A08608DC00A60206985C1D4
-:1055D00022690068066005A0C000EC3A026008601D
-:1055E000D4C00A601C6884A00E00C000003B84B2D6
-:1055F00000034000FC3A0920C0957800053B0920D3
-:10560000D0967800053B3070BA684071CC7008A124
-:10561000042102680A2D5E71DCD6C000103BFCC676
-:10562000B66E7800613BB66E84A66000C0001A3B7F
-:1056300084A6FF7FB6687800613BDCD6C000283BBB
-:1056400084A6FF7FB6689468A6689868AA687810F0
-:10565000D6457800613BACD64000343B06A07810BC
-:10566000D64508241025AA69A66A7800443B082478
-:10567000102500271B80C8003B3B008084A03F0012
-:1056800008A191A20000AA69A66A7810D645FCD6A6
-:105690004000613B84A6FF7FB66810250824ACD685
-:1056A000C000593B00271B80C800543B008084A0E9
-:1056B0003F0008A191A20000986B002102A3B268EC
-:1056C000946B002203A3AE68007086A03000C00077
-:1056D0000C2A03700200BC706DA0BC684270B870E8
-:1056E00065A0C0685A70002D4E7080AD09004670EC
-:1056F0007C0086A50088C000833B03700000186012
-:1057000001801A60086084A0EFFB0A6078001141F4
-:105710004770000082A2060050008D3B7810B2292D
-:1057200000237900903B933BA53BB13B00227900DD
-:10573000963B9C3B11419E3B9C3BEB3B403C781095
-:10574000B229807A94A2000F7810CA3C78000741F1
-:105750007810C23B7900A93B1141AF3BAF3BEB3B1B
-:10576000AF3B11417810B2297810C23B7900B53BAC
-:10577000BD3BBB3BBB3BBD3BBB3BBD3B7810B229FC
-:1057800078102B411B7878007C00007086A0020006
-:10579000C000D33B7810363E7800CD3B7810D6451C
-:1057A000086084A0EFFB0A607800D83B007086A0F8
-:1057B00003004000CB3B0370050084B200034000AF
-:1057C000E23B0120E0967800E43B0120129768203C
-:1057D0004E7080AD0900467000227C00007086A0EB
-:1057E0000200C000FD3BD470B5C0D670002CBA706A
-:1057F000002DBE707800023C7810D6457800023C3F
-:10580000007086A003004000F93B03700100807A1D
-:1058100094A2000F9B781800A87C84A41F0015A2F6
-:105820006920C09584B20003C000163CFDC2692007
-:10583000D096042D082D5E716DA04000233C1468A5
-:1058400006A24000253C00687800173C7810CA3C4E
-:10585000B46E5A7E206984A1000C4000F43C647050
-:1058600086A00600C000373C747006A2C000373C1A
-:1058700066707E701B680500ADC1D4C122697810C6
-:1058800020417800F43C007286A20200C000523C25
-:10589000D470B5C0D670002CBA70002DBE707800E0
-:1058A000563C7810D6457800563C86A2030040004E
-:1058B0004E3C03700100807A94A2000F9B78180080
-:1058C000A87C84A41F0015A284B20003C000663C1B
-:1058D000FDC2A879A8798CA1FF001821CC7068A11D
-:1058E000042D082D5E716DA040007A3C146806A25C
-:1058F0004000A33C006878006E3C0370050084B251
-:1059000000034000843C0120E0967800863C0120A2
-:10591000129768204E707E15A920320003200000E7
-:105920000080F0008B3C7F1584B200034000983C5F
-:10593000FCC27800993CFDC2166A80AD0900467031
-:10594000B76800072368000827680300B46E206961
-:1059500084A1000C4000F43CDCD04000BF3C6470EB
-:1059600086A00400C000BB3C747006A2C000BB3C13
-:10597000787006A3C000BB3C66707E70781027412B
-:105980007800F43C1B680500ADC1D4C122697810D1
-:1059900020417F7000007800F43C0370050084B261
-:1059A00000034000D43C0120E0967800D63C012062
-:1059B000129768204E707E15A92032000320000047
-:1059C0000080F000DB3C7F1584B200034000E83C1F
-:1059D000FCC27800E93CFDC2166A80AD0900467041
-:1059E000B768000723680008276803007C00ECC63E
-:1059F000ACA660004000463D986B946CAC69B06802
-:105A000005A1C000213DD27BDA7BD67CDE7C86A559
-:105A1000600040004B3DF4D6C0000C3DEDC6B4A67E
-:105A2000FFB75A7E092079009CD64000193D092015
-:105A300078001920000020231A79ECD64000563D4A
-:105A400078103F497800563DB0681AA3002123A47E
-:105A5000002405A340004D3DD27BDA7BD67CDE7C62
-:105A6000B068F4D6C000323DEDC6F4C65A7E1120AF
-:105A700079009CD640003E3D11207800192000009E
-:105A800020231A7AECD64000563D781077497800EA
-:105A9000563D19200000202378004D3DB4A6FFB7E5
-:105AA0005A7E092079009CD64000553D0920780097
-:105AB0001A79C0685A70002D4E70C4686020D47185
-:105AC0000120014F0420C4D0C000AB3DD8702DA0F0
-:105AD0004000843DBCD140009E3D807A94A2000FDE
-:105AE000DC7006A24000753DE07804A5C000AB3D27
-:105AF000DA70BCC1D6717800AB3D312001002C8535
-:105B00004800833D3386108278007C3D7C00E07D38
-:105B100094A500FF4000913D112008002F857810CA
-:105B20007A3D37867800933D78107A3D17828078E9
-:105B300084A0000F06A24000AB3DDE72DA7678004A
-:105B4000AB3D807A94A2000FDC7036A240009B3DF2
-:105B5000E07834A540009B3DBDC1D671B4D1C000F2
-:105B6000082A002305A44000082AA47086A001008A
-:105B7000C000522A7C00206005A04000C63D018084
-:105B80002260086085A008000A600F7000012C7078
-:105B900026607C0006A07810D645007086A0020022
-:105BA0004000D43D647086A00500C000DE3D2B6837
-:105BB0000000176800001B680100236840001F6890
-:105BC0000001007084A00F007900E33D0C2AF33D32
-:105BD000ED3D153EFD3D0C2AEB3DEB3D7810B22925
-:105BE0007810203E7810193E7800F93D7810203E5C
-:105BF0005C706020006802607810732078000C2AC6
-:105C0000647067700000837000007900043E113EEC
-:105C1000113E0C3E0C3E0C3E113E0C3E113ED47724
-:105C2000DDC7D67779007E2F6770000078000C2AD8
-:105C30001B68000078001137006805A0C0001E3EF8
-:105C4000026006607C001064FF844000323E092040
-:105C5000024F042101800A2021841264C000323ED8
-:105C60002120044F0424A5C022200860A4C00A609B
-:105C70007C00186005A040003C3E01801A607C005A
-:105C80007810D3431B68180078007D3E7810D3430A
-:105C90001B68190078007D3E7810D3431B681A00FA
-:105CA00078007D3E7810D3431B68030078007D3E6A
-:105CB000747778104E4278718CA1FF00103294A254
-:105CC00000034000643EE8A1C0947800663EE8A16D
-:105CD000D095042D082D682005A0C0006F3E7E7071
-:105CE00078000C2A1468747206A24000773E00689F
-:105CF0007800673E00680A201B6805007F7000007E
-:105D00007810203E206884D0C000853E7810193E6F
-:105D10007810363E1F68000023682000781073203A
-:105D200078000C2A82A20300C0000741A87DACA520
-:105D3000FF005A7EA87EB4A6FF002069BDC122697B
-:105D4000C4D14000EA3EC4C12269B4A6FF004000AD
-:105D5000D73E82A60C004800AE3E4000AE3E312049
-:105D60000C00002586A00A004000B53E2B852B853F
-:105D70007810E0414000BD3E7810BC3F7800E03E26
-:105D800078109B417E0C6029046084A0F5FF0660BA
-:105D90007810F23F7F0C2069C5C12269587E95C6F4
-:105DA0005A7ED4D6C000D43E1B7864007C001B7899
-:105DB00078007C007E0C6029046084A0F5FF0660FA
-:105DC0007810F23F7F0C587ED4D6C000E73E1B7897
-:105DD00067007C001B7879007C007E0C5870602086
-:105DE0000061E4D14000333F0862178294A2FF00B3
-:105DF00082A20C004800FD3E4000FD3E11200C0038
-:105E0000002602A2C800023F3022086294A2FF00CE
-:105E10000120054F0420E4D0C000173FEC78E4D007
-:105E20004000173F82A20A00C8001D3F11200A004F
-:105E300078001D3F82A20C00C8001D3F11200C00FD
-:105E4000002202A5C800223F282278109F41002589
-:105E500086A00A0040002B3F2B852B857810E0415F
-:105E60004000333F7810BC3F7800373F78109B41AB
-:105E70007810F23F587895C05A787F0C1B787800DC
-:105E80007C007E0C60290060E4D0C000583FB4D094
-:105E9000C000523F106084A00F00C000523F046158
-:105EA0008CA1F5FF06617F0C7C00112032001920C7
-:105EB00000007800833FA068CCD0C000523F086249
-:105EC00094A2FF000120054F0420E4D0C000713FE0
-:105ED000EC78E4D04000713F82A20B00C800713F13
-:105EE00011200A007800773F82A20C00C800773F9B
-:105EF00011200C0008631F839CA3FF0082A30C00E9
-:105F00004800833F4000833F19200C00AB7801001C
-:105F1000AB780300AB780100AA7AAA7BC0A8050081
-:105F20002068C5C02268D470B4D040009F3FB4C080
-:105F3000D670B87065A0086084A0EFFB0A60186096
-:105F400001801A607F0C7C007E0C602904618CA1AA
-:105F5000F5FF066111203200192000007800AD3FE6
-:105F6000AB780100AB780300AB780100AA7AAA7B7A
-:105F7000C0A805002068C5C022687F0C7C007E0C8C
-:105F80005871602118208CA020004000C53FACC093
-:105F9000082084A0F0FF35A6867E18609A78AE7E31
-:105FA0001266A47884A0F0FF8CA10F0005A1F4C0B4
-:105FB0009CA320004000DB3F85A00040FCC0B4D083
-:105FC000C000E03FFDC0A67816608A78B4A60F0036
-:105FD00037860482048084A0FF0005A60E6004605A
-:105FE00084A0F5FF06607F0C7C007E0C587060205A
-:105FF00018609A78A47884A0F0FFA678126084785C
-:1060000084A0F0FF86780C6084A0FF000E607F0CF7
-:106010007C0082A20200C0000741A87A2069BDC1AD
-:106020002269CCD140004140CCC1226994A2FF003A
-:1060300082A20200C8000741781094407810F23F15
-:1060400080A901000C2078104A4278103E3FFF885A
-:10605000400037409B7860000028AA78587E95C69B
-:106060005A7ED4D6C00034401B7864007C001B7874
-:1060700078007C00587ED4D6C0003E401B78670074
-:106080007C001B7879007C0082A20200C800494095
-:1060900084A2010040005240587188A100000C21E8
-:1060A000ECD1C00052401120000078107C417810E3
-:1060B00094407810F23F587895C05A781B78780051
-:1060C0007C007E0C7E026029006011200100ECD073
-:1060D000C0007540BCD0C00073401460B4D0C00094
-:1060E0007340A4C1066106A0780091401120000011
-:1060F000AB780100AB780200AB780300AA7AC0A8A5
-:106100000400D470B4D040008D40B4C0D670B870D4
-:1061100065A0086084A0EFFB0A60186001801A6027
-:10612000206885A0000222687F027F0C7C007E0C24
-:1061300058706020FF8240009C4011204000186091
-:1061400080A002009A78A47884A0BFFF05A2FCC0BA
-:10615000B4D0C000A940FDC0A67816608A7804605B
-:10616000A4C006607F0C7C007E00007086A0030047
-:106170004000BA407F007800BD407F0078000441B5
-:10618000ACD640000441887884A04000400004411F
-:10619000B87B84A33F001B83C800CC40008005A0CF
-:1061A0004000E1401B83C800D54001804000014110
-:1061B000F4D64000E140B8781B80C800DD40008084
-:1061C00084A03F00C0000141F4C65A7ED879DC7A31
-:1061D0000120010008A1C800EC4091A20000D27982
-:1061E000DA79D67ADE7A7810444A1B78760084B25F
-:1061F00000034000FC40012000007800FE40012028
-:1062000001007810CE487C001B7876007C001B785B
-:1062100079007C0078102F411B7878007C00781082
-:1062200018411B7878007C00276802007810204114
-:106230001B7878007C0001200500780031410120A6
-:106240000C00780031412068D5C02268012006008A
-:106250007800314101200D00780031410120090012
-:1062600078003141012007009B787E00AA789DC606
-:106270005A7ED470B4D040004741B4C0D6707E0C72
-:10628000B87065A0086084A0EFFB0A601860018008
-:106290001A607F0C7C007E073F87BCA70F003B87FE
-:1062A0003B8703877E018CB2000340005841E0A089
-:1062B000C05378005A41E0A040547F01B8A72000A5
-:1062C0009A7FA47984A10F0040006A4184A1F0FF65
-:1062D000A678126004609DC00660388738879A7F70
-:1062E000A47984A1400040007A4184A1BFFFFDC091
-:1062F000A67816600460A5C006607F077C009B78C6
-:106300001000AB780100AB780200AB780300AA7AEA
-:106310009B786000AB780400D470B4D040009A4100
-:10632000B4C0D6707E0CB87065A0086084A0EFFB86
-:106330000A60186001801A607F0C7C003120000028
-:10634000292032009B781000AB780100AB78030065
-:10635000AB780100AA7DAA7E9B786000AB7805002F
-:10636000D470B4D04000BE41B4C0D6707E0CB870BA
-:1063700065A0086084A0EFFB0A60186001801A60C5
-:106380007F0C7C007E15078084A0FF0003800380C3
-:1063900080A020009A78A4798CA1F0FF21203342BC
-:1063A00019201100A9200E0011203200042484A01D
-:1063B000F0FF06A14000DE412084002310A2F0007F
-:1063C000D3417F157C007E150120054F0420E4D0C9
-:1063D000C000114221204142A920090011202800BB
-:1063E00082A5190040002742480027422084A99531
-:1063F0001120320082A53200400027424800274287
-:106400002084A99519200A0011206400002202A509
-:1064100040002742480027422084002310A2F000B9
-:1064200003427F15780025422120334219201100B4
-:10643000A9200E0011203200002202A540002742B0
-:10644000480027422084002310A2F00019427F1543
-:1064500006A07C007F1582A56400C8003042087841
-:1064600085A070000A78042405A07C00091202307F
-:106470000232034203440454045605660568067854
-:10648000067A070C070C070EE1100A330558055A67
-:10649000066A066C077C077E000E9B78100046A0FB
-:1064A0007C0084A7000F0B8084A71F00038003805B
-:1064B0000380038005A1FCD740005F42E0A0C074C8
-:1064C00078006142E0A0C0547C007E0E7E0F84D034
-:1064D00040006F42792000010920804F7120804FD9
-:1064E00078007F420920404F7120404F0120044F27
-:1064F0000420ECD040007D427920000178007F42EA
-:106500007920000291200080042184A00F007900EE
-:1065100086429042904290429042904290428E42F7
-:106520008E427810B229B469F5C18CA19FFFB6697B
-:1065300005A04000DF42587884A09FFF85A000603E
-:106540005A78287886A01418C000DF424B780400DF
-:10655000487884A00400C000A5424B780800487821
-:1065600084A00800C000AC423078BCD0C000DF423C
-:106570007E000120044F0420ECD07F004000C14287
-:1065800084B200037800C34284B200044000C942D0
-:106590001800DF427800CB422800DF42E47984A172
-:1065A00030004000DF42EC7884A003004000DF426E
-:1065B0001C68ACD0C000DD42781069437800DF422F
-:1065C0001B78F9007F0F7F0E7C007E0C0120014FAD
-:1065D0000420ACD0C0005B431468078084A00F0087
-:1065E0000380038003808CB200034000F842E0A0E7
-:1065F000C0537800FA42E0A04054046084A00A002E
-:10660000C0005B43086194A100FF40005B438CA184
-:10661000FF0001200A0006A14000264301200C00D3
-:1066200006A140002A430120120006A140002E438B
-:106630000120140006A1400032430120190006A1E8
-:10664000400036430120320006A140003A43780062
-:106650003E4309200C0078004043092012007800D6
-:1066600040430920140078004043092019007800B5
-:106670004043092020007800404309203F00780073
-:10668000404311200000002105A20A60046085A09B
-:10669000020006606120004F0460BCD040005B43F4
-:1066A0001468FCD0C0005643EA606120404F780077
-:1066B0005943EE606120804F1F600F807F0C7C008B
-:1066C0001B7879007C001B7878007C001B786700C1
-:1066D0007C001B7864007C000920194F0C2186A1E6
-:1066E000000040007B4386A1010040007E431F70F4
-:1066F0000B00677001001B7847007C001B78F000DE
-:106700007C001F700A007C000920194F0C2186A113
-:1067100000004000964386A10100400093431F7093
-:106720000B00677001001B7847007C001F700A0097
-:106730007C001B78EF007C001B78F9007C001B7844
-:10674000F8007C001B78C9007C001B78C8007C0026
-:106750001868FCD04000AB431B681D006770010047
-:106760001B7847007C00307884A0C000C000D24372
-:1067700008788CC00A780500050005000500EC7853
-:1067800084A02100C000CF430120054F0420E4D0A5
-:10679000C000CD43047884A01FFF85A0E0000678E8
-:1067A00006A07C0008788DC00A787C0008788DC02F
-:1067B0000A787C00307884A04000C000D7430120D4
-:1067C000044F0420ECD04000E64384B2000378007C
-:1067D000E84384B200044000EE439800F24378009E
-:1067E000F043A800F243AC787C00087884A0FDFF59
-:1067F0000A780500050005000500EC7884A021005A
-:10680000400015447E000120044F0420ECD07F009E
-:1068100040000B4484B2000378000D4484B20004AD
-:106820004000134498000F4478001544A800134416
-:10683000AC787E00087885A002000A787F007C0092
-:1068400084A70100C000B93784A7700040002D4420
-:106850007E0C602D682F78102629782D682C7F0CEF
-:1068600084A7080040003A444B780800EC7884A0E4
-:1068700003004000B93778005D4384A7040040005E
-:106880006944B87884A00140400069444B7808000E
-:10689000EC7884A003004000B937E47884A00700B6
-:1068A00086A00100C0006944C07885A60048302059
-:1068B0005A7E1B78F9007C004B7808001868FCD0E1
-:1068C000400066441B681500F4D6400066441B680F
-:1068D0000700781069437C001B680300587884A087
-:1068E000003F1E682F680000336800004B780800E6
-:1068F000EC7884A003004000AF307E000120044FFC
-:106900000420ECD07F004000864484B2000378006D
-:10691000884484B2000440008E441800082A78009D
-:1069200090442800082A78000C41146B078384A047
-:106930000F00038003800380FCD34000A04480A0AC
-:1069400040547800A24480A0C053602048205A7070
-:10695000602A7C00200020000000200000002000B1
-:1069600000002000000020000000200000002000A7
-:106970000000200000002000000020000000200097
-:106980000000200000002000000020000000200087
-:106990000000200000002000620009001400140024
-:1069A0004898140014001499FD98140014008000F5
-:1069B000FF0000010204082080F818000AA2140059
-:1069C0000B300CA21400002513000025100010004D
-:1069D0001000100010001000100010001000100037
-:1069E000100010001000100000A2063802715F8035
-:1069F00081943988C420640856A80830C1281B9D9A
-:106A000001A20C30472861816A840080A484561852
-:106A10003A8808A8E228CB9CF3A8640844A80C3064
-:106A200001A80830E128CB9C21201DA805A20C87D5
-:106A3000DED8A064E06DC06FA463806C120205A272
-:106A40003D8842792080A1A42B8814183B88DF80E0
-:106A5000A1942770F28537A732A503F07685778653
-:106A600016A83E8814A8012012A804A2C064E06DF4
-:106A7000A067C06F42792080A1A41418DF80A19480
-:106A80003B8823707685778602A861783E886B20E4
-:106A9000C1281B9D44200321A2208120C3A807A256
-:106AA00004090EA209A803A20080A48572189A877F
-:106AB0003C88E21F01F608A26E856F8661711400A2
-:106AC00004070830CB9C140002A20080A485093082
-:106AD000A884E21944F86E853F88E608F5A861F8B5
-:106AE000EAA801F8140081F81600B285F08032950A
-:106AF000A2FAE21D1400328521F21400E21DA884DE
-:106B0000E0D6E61F1400083000804A281110FCA8C7
-:106B10000830339D008000A002281110FDA8399D87
-:106B2000BDA80830339D3B281110FDA809A20271B1
-:106B30005F80819417000C3009A20080A485E21DBB
-:106B400009A2C1DA1400100201A81400E0263A8755
-:106B5000A3FAF219E026F21814000BA214000DA2F9
-:106B600006381002259D040706A265687E812A84E6
-:106B7000C11D2388160042600880FAA80080A48402
-:106B800060812A8421F00830A884D6114270DD206B
-:106B90001100D420228816004479218420A032A537
-:106BA000A184160044792184DFA03295A1841600C7
-:106BB00000007E12D47084A00046048090200472ED
-:106BC00008709CC005A2C00002460C72FF82400003
-:106BD000ED45FF8AC0000246007284D2C000024622
-:106BE0000478CCD04000F3457810CC4A23700000E4
-:106BF00027700000007084D04000FD45077004003D
-:106C0000037008007F1200207C00007084A0030045
-:106C100002709CC684D040005B4608710500087075
-:106C200006A1C0000A4684A1030040008C4684A14E
-:106C3000E001C0008C46F4D1C0000A4684A10030B7
-:106C400086A0001040000A460120054F0420E4D031
-:106C500040003746112080010C71118240004546EA
-:106C60000870F4D0C0000A460C7006A140002A4605
-:106C700078002746112080010C71118240004546A2
-:106C80000870F4D0C0000A460C7006A140003A46D5
-:106C90000770120008710500087006A1C000474681
-:106CA00084A1030040008C4694D140004746F4D1B3
-:106CB00040008C460770020078000A460871FCD13B
-:106CC000400066467810ED47FF8A4000DC457800BA
-:106CD0005B460C708CA0FF0340009146047084D08A
-:106CE00040008346147005A0C0007F4610701073EA
-:106CF00006A3C0007346002305A04000834602A1FE
-:106D0000C8005B460770100078008C46FF8A400080
-:106D100091467810F249C000864640005B467810E4
-:106D200038477F1200207C00047208719CC10381E7
-:106D3000C800A04607700200780091460370080062
-:106D40007F1200207C0005A2C0008C46237000004A
-:106D500027700000037008007E000120014F04200E
-:106D6000CCD04000B2467810CC4A7F007F12002081
-:106D70007C002864FF844000E246702C0470BCA0B4
-:106D80000F00B8A7F2463C27FB87C000D04648005A
-:106D9000C8467810B2299C6075A04000E246780091
-:106DA000BB463920E746042768AE086830A60C6861
-:106DB00029A521844000E2463887042705A0C000A9
-:106DC000D1469C7075A0C000BB467C000000050049
-:106DD00009000D001100150019001D00000003003E
-:106DE00009000F0015001B0000000000E746E44604
-:106DF0000000000000800000E7460000EF46EC467F
-:106E00000000000000000000EF460000EA46EA46ED
-:106E10000000000000800000EA460000F046F04656
-:106E20000000000000000000F0467920004F7120B3
-:106E3000100007700A00077002000370010010784C
-:106E4000ECD0400026470920010071202000780086
-:106E50002A47092002007120500007700A000770BD
-:106E600002000370000009814000374771202000B4
-:106E700078002A477C0004700480C800C14708716C
-:106E8000087006A1C0003C4784A1E00140004947CA
-:106E9000781030487800E947077012001920000088
-:106EA0000871087006A1C0004D4784A1E0014000B0
-:106EB0005A47781030487800E9471078ECD0400005
-:106EC00074470120FD04042086A00300C000784719
-:106ED00084A1004040007C4782A30300C8007C4797
-:106EE00084A1040040004D47188378004D47147872
-:106EF000ECD0C0007C4784A10040C0004D479CA15D
-:106F00000C3086A304204000994786A30800400067
-:106F1000A447047084D0C00095470871087006A18A
-:106F2000C0008A4784A1030040009547780030489C
-:106F300086A30C20C0004D47007204824800A4477D
-:106F40000C7384A3FF034000A4477810B229087192
-:106F5000087006A1C000A44784A1E0014000B14729
-:106F6000781030487800E94707701200007084D02C
-:106F7000C000C1471073147005A34000C1470C71D5
-:106F800084A1FF03C00038470871087006A1C00043
-:106F9000C14784A1E0014000CE4778103048780016
-:106FA000E947077012000770080004709CD0C00009
-:106FB000D2470871087006A1C000D64784A1E0013D
-:106FC0004000E347781030487800E9470770120026
-:106FD000087103814800D647037008007C000871DF
-:106FE00084A1E001C0003048087184A1E001C00024
-:106FF000304884A107007900FA4704481448024841
-:10700000144802487248024870487810B229047047
-:1070100084A010008DC00670FF8AC0000F48492070
-:1070200000007C007810F249C0000F487C0004701A
-:1070300084A010008DC00670047084D0C000284861
-:107040000871087006A1C0001D4884A1030040001B
-:10705000284878003048FF8A40002F487810F249CD
-:10706000C0002B487C00077012000871E000334814
-:1070700091200060E0003748912000600770120006
-:107080000770080004709CD0C0003F4807701200D1
-:107090000871FCD1C000434803700000007005A0D7
-:1070A000C0005748047005A0C00057480C7005A0E8
-:1070B0004000594878003B484920000084B2000154
-:1070C000400063480120000078006548012001006D
-:1070D000781062421B680200512000007C0078108A
-:1070E000B2297810B2297810B948107214710C7056
-:1070F0009CA0FF03002800A311A289A10000781022
-:10710000B9480427582C60AC0863002222A30C6302
-:1071100000211BA3002405A340009548C800954802
-:10712000128410820A8389A10000602B78007C48B9
-:10713000602B078A7E0004609CD04000A048BAA75C
-:10714000EC467800A248BAA7E4467F003DA7002C91
-:1071500086688A6F926C8E6B0871087006A1C000F9
-:10716000A94884A1E0014000B44878103048077075
-:107170001200781038477C00508A3987042704A011
-:10718000C000CD48006064A0C000C448602D046009
-:1071900084A00F0080A002473C20FB874010B2294A
-:1071A0007C007E127E0DD47084A000460480902066
-:1071B0007F0D8468602088688C6B906C5780D4AA9F
-:1071C000FF0084A0FF007E00046884A008007F0008
-:1071D0004000EB48B8A0EC467800ED48B8A0E44683
-:1071E00084B200014000F448207E7800F548247EF7
-:1071F000B5A60C001C68B4D04000FC4885C600242D
-:1072000005A340002549582C0427046160AC0060A8
-:1072100000A41A70046001A31E709CD1400015499F
-:10722000106081A000002270146081A00000267010
-:107230000862002402A212700C62002303A21670DE
-:10724000027607700100602B78101C4A78002749ED
-:107250007810F249C00025497F1200207C007E1280
-:107260007E0DD47084A00046048090207F0D0770AE
-:107270000400047094D0C0003649037008007F12E7
-:1072800000207C007E127E0DD47084A00046048015
-:107290007E0090207F007F0D207E84B20001C00020
-:1072A0004F49247EB5A60C001C68ACD0C0005A49DA
-:1072B00085C6037000000770040028685020602D08
-:1072C0000460BCA00F00B8A7F2463C27FB87C000B3
-:1072D000704948006A497810B2299C6865A040004E
-:1072E000744978005D497810F249C00070497F12F6
-:1072F00000207C007E127E007E017E0DD47084A072
-:10730000004604807E0090207F00207E84B2000131
-:10731000C0008849247E7F0D7F037F04B5A60C0042
-:107320001C68B4D04000964985C603700000077001
-:10733000040049207749286855A07E0D4000EE4999
-:10734000702D602E0470BCA00F00B8A7F2463C2739
-:10735000FB87C000B3494800AC497810B2299C7043
-:1073600075A060204000EE4978009F49042768AE70
-:10737000086822A40C681BA34800CC49518AC000AD
-:10738000C0497810B2293887042705A0C000B44945
-:107390009C7075A060204000EE4978009F492284CF
-:1073A00020841A8399A300000869002422A10C6993
-:1073B00000231BA1C800DB497810B22984B2000168
-:1073C0004000E9490120044F0420ECD0C000E94905
-:1073D000712050007800EB49712020007F0D78006B
-:1073E000FC487F0D7F1200207C0008707E0084A086
-:1073F000E0017F004000FB4906A07C0084A0030060
-:1074000086A00300C000024A7C00042778AC007804
-:107410001A7004781E70087812700C781670046068
-:107420009CD04000144A107822701478267002769E
-:10743000047084A0100085C006707920004F388742
-:10744000518A4000404A042705A0C000324A9C608F
-:1074500005A04000414A6020046084A00F0080A085
-:10746000F2463C20FB874010B22908707E0084A0C1
-:10747000E0017F0040003C4A06A07800414A84A019
-:10748000030086A003007C00512000007C007E12D7
-:107490007E007E0DD47084A00046048090207F0D75
-:1074A0007F08087184A10300C000594A286805A01C
-:1074B0004000694A780002460871FCD14000614AE8
-:1074C0007810ED4778004E4A077010000871FCD123
-:1074D0004000634A7810ED47087086A00800C0009D
-:1074E0004E4A007005A0C0004E4A037000004920BB
-:1074F00000007E000478CCD040007D4A7810CC4A51
-:107500007F007F1200207C007E127E147E137E1589
-:107510007E0C7E0DD47084A00046048090207F0DE8
-:107520004920814A80AD1100A02084B200014000B2
-:10753000A44A0120044F0420ECD04000A04A992026
-:1075400031007800A64A992032007800A64A992096
-:1075500031000C7084A0FF032A68077008000770D0
-:107560000200037001004000B54A0080AC80A553C2
-:107570000C7084A0FF034000C14A0770040004702F
-:1075800084A00400C000BC4A7F0C492000000370A6
-:1075900000007F157F137F147F1200207C00146889
-:1075A000FCD04000114B007084D04000114B247E71
-:1075B000B5A6040007700400047084A00400C00095
-:1075C000D94A18717E011C717E0120717E012471DF
-:1075D0007E010EA01A711F70FF3F22712671137079
-:1075E000040016710276077001000120FFFF0920D8
-:1075F00031000A200A200871087006A1C000F84A6C
-:10760000FCD14000F84A7F0226727F0222727F027C
-:107610001E727F021A7207700200087086A00800AE
-:107620004000114B780030480770040003700000E0
-:107630007C009120008091200060AC7805A0C00003
-:107640002D4B7479D07006A1C0002D4B1C7805A07D
-:1076500040002D4B1F78000068002D4B912080408A
-:10766000307801803278C000B54B347832781078A9
-:10767000ECD0C000AE4B6120C0746920804FFDC7C4
-:10768000D06805A04000474B0180D268C000474B3E
-:107690007810834D006884A00F0040005C4B86A0EA
-:1076A000010040005C4B44680DA040005C4B04218D
-:1076B00005A040005C4B01800A204000F64C146895
-:1076C00005A04000814B01801668C000814BA7686F
-:1076D00001007E0FFCD7C000764B1078ECD0400044
-:1076E000724B792000017800784B792000027800F5
-:1076F000784B792000017810D3437F0F646805A090
-:107700004000814B78106F26806805A040008E4BAA
-:1077100001808268C0008E4B67680000D468DDC0BD
-:10772000D668D468FCD04000AB4BFCC0D668A9201A
-:107730000002346005A04000A74B01803660D46889
-:10774000FDC0D668C000A74B106005A04000A74B45
-:1077500078106F26E0AC1000F000964BFCD740008C
-:10776000B54B6120C0546920404FFCC778003D4BA9
-:107770007810F14B387801803A78C000D74B3C78CC
-:107780003A786120C0546920404FFCC70C6805A0BE
-:107790004000C94B78105B4CFCD7C000D74B107829
-:1077A000ECD0C000D74B6120C0746920804FFDC76A
-:1077B0007800C34B1478E4D0C000DB4B1078CCD0F9
-:1077C0004000EE4BACD0C000E74BA4D04000EE4BE5
-:1077D000ADC01278912001806800ED4B7810DC2359
-:1077E0007C00912001807C00407801804278C000BC
-:1077F0005A4C447842786920404FFCC71078792071
-:107800000002ECD04000034C79200001D86805A0AC
-:1078100040000F4CE07D04A5C0000F4CDA68D4682E
-:10782000BCC0D6687920004F106805A0C000174C76
-:107830000120010101801268FCD74000204C80A08B
-:10784000D0957800224C80A0C0944020042065A0F0
-:1078500040004C4C246005A04000484C018026604C
-:10786000C000484C006805A040003B4C4C6806AC8A
-:10787000C0003B4C7810F64C78004C4C646805A076
-:107880004000434C276001007800484C7810A94C18
-:1078900004287800244C0060402C7800244CFCD74D
-:1078A000C0005A4C1078ECD0C0005A4C6920804F70
-:1078B000FDC7792000017800034C7C0009200000FE
-:1078C000A920000208609CD04000954C246005A0CF
-:1078D00040006B4C018026607800934C08609CC08F
-:1078E00084D0C000734CACD040008D4C0A60046062
-:1078F00005A04000954C7E0D7E0C7E016820106036
-:10790000018012607810193E002D682C60207810DC
-:10791000A21E781064207F017F0C7F0D7800954CAB
-:10792000BDC00A608DA101007800954C8DA10001B9
-:10793000E0AC1000F0005F4C84A101004000A44CBA
-:107940008CA1FEFF0E6978106F267800A54C0E6999
-:107950007C00C000A54C6C78002C7E681467766FA4
-:10796000176000002B6000001B600600B46084A05C
-:10797000003F1E60206084A0FF0085A060002260A0
-:107980000060422078102B1E186805A04000C74CEC
-:1079900001801A680868A4C00A681068087909811B
-:1079A0000A790180D000D34C7810B2291268C00047
-:1079B000D94C1079A5C112792F6000003360000006
-:1079C000682C78107320FCD7C000E74C6920404F2A
-:1079D0007800E94C6920804F106984A100010120E2
-:1079E0000600C000F34C7A69012004007810632679
-:1079F0007C007E0D4C696021FCD7C000084D1078DA
-:107A0000ECD04000044D6920000178000A4D692047
-:107A1000000278000A4D69200001781026291B60B9
-:107A20000600586884A0003F1E60206084A0FF000C
-:107A300085A0480022602F600000336000000868C5
-:107A400084A0FDFF0A683068B4D040003C4D4B680C
-:107A50000400A9201400486894D040002E4DF00086
-:107A6000284D4B680900A9201400486884D04000C4
-:107A7000384DF000324DA920FA00F0003A4D1B6855
-:107A800047007F0D676807007C007920004F781061
-:107A9000764D78105C4D7810694D09200200692000
-:107AA000804F0F680000136800001768000009810C
-:107AB00040005B4D6920404F78004E4D7C001078AF
-:107AC000ECD04000644D1920CC007800664D1920A0
-:107AD0007B003A7B3E7B7C001478E4D0C000714D83
-:107AE000192040007800734D19202600427B467B08
-:107AF0007C001478E4D0C0007E4D1920943F7800BB
-:107B0000804D19202426327B367B7C00506A85A26A
-:107B100000004000AF4D5469C06B00A37E0C64218F
-:107B20000463FF83C0009B4D118240009F4D08817C
-:107B30001AA148008C4DC06978008C4DD3680A00AA
-:107B40007F0C7C005069C06A64222B6000002F60AB
-:107B500000000860B5C00A6010820981C000A14D14
-:107B600052697F0C7C00E000B04D91200060E00085
-:107B7000B44D91200060EC70DCD0C000C14DD4D079
-:107B80004000EA4D7800ED4D08201078ECD0400020
-:107B9000D44DC4D1C0000E4E1478C5C016781078EC
-:107BA000F5C01278ECD040000A4E7800064E8EAE3A
-:107BB00000014000E14D1478F5C0C5C01678D4D05E
-:107BC000C0000A4E7800064E1478FDC0C5C0167875
-:107BD000D4D0C0000A4E7800064EE4D040000C4ECF
-:107BE000E000ED4D9120006009200C00E000F34D15
-:107BF000912000600981C000F34DE47084A0FF0172
-:107C000086A0FF01C000044EEC707800C14D7810D2
-:107C10000F4E04788CD040000C4E1F680C00A070F2
-:107C2000A2707C001079ECD14000194E1478C4C0C9
-:107C3000F4C1127978002B4E8EAE00014000254E23
-:107C40001478F4C0FCD0C0002B4EC4C078002B4E7A
-:107C50001478FCC0F4D0C0002B4EC4C016787C0051
-:027C6000E3142B
-:00000001FF
-/*****************************************************************************
- * QLOGIC LINUX SOFTWARE
- *
- * QLogic ISP1280/ device driver for Linux 2.2.x and 2.4.x
- * Copyright (C) 2001 Qlogic Corporation (www.qlogic.com)
- *
- *****************************************************************************/
-
-/************************************************************************
- * --- ISP1240/1080/1280 Initiator Firmware --- *
- * 32 LUN Support *
- ************************************************************************/
-
-/*
- * Firmware Version 8.15.11 (10:20 Jan 02, 2002)
- */
diff --git a/firmware/qlogic/isp1000.bin.ihex b/firmware/qlogic/isp1000.bin.ihex
deleted file mode 100644
index a5c242cda220..000000000000
--- a/firmware/qlogic/isp1000.bin.ihex
+++ /dev/null
@@ -1,1158 +0,0 @@
-:1000000078003010000019240000FF124320504FE8
-:10001000525947495448312039392C313931323914
-:10002000312C39392C333931343951204F4C49472F
-:1000300020434F435052524F54414F49004E4920A4
-:1000400050533031303046207269776D72612065CF
-:100050005620726569736E6F30202E313133202047
-:10006000B9201212C120080071201000C3700400D2
-:10007000C920FF3F8920C810C7705349CB7020505A
-:10008000CF702020D3700100003FD67031203000A7
-:100090007920003563780000A02F09202703112064
-:1000A0000000A9204000A4420981C00051109B78A3
-:1000B00001010B7802000F7802004F78B80B69201D
-:1000C0004035A8006A101B683C0009201313B821B2
-:1000D00078006C101B682800076807000B68FA009E
-:1000E0000F680800136805001F68000023680600F9
-:1000F00017680800276800006920003611202000DA
-:10010000092010000B68190C0F681900036800DD46
-:1001100007681A001A6A002DE8A0080090A20400DF
-:100120000981C000821069208036A92080003768CC
-:1001300000000B684000176800011F686400E8AD0C
-:1001400010007000A510780097107810381A7810F9
-:100150003A2F781081167810BA33003285A00D003E
-:100160009020C37000009000BC10C07086A00200F8
-:10017000C000BC107810BA117810EC107810171865
-:100180007810A81978107D3278107D177800BC108F
-:10019000D010D210C31BC31B982F982FC31BC31B97
-:1001A0007800D0107800D2107800D4107800D610E3
-:1001B00008700C80C800E710077002008CA00C00CB
-:1001C000C000E81004800480C800E7107A087A09AB
-:1001D000C37002407800BD11147805A0C000F4106F
-:1001E0001000301178002F1109206835042105A076
-:1001F000C0002F11147886A00100C00001117810F2
-:1002000036151778000009206F35042165A04000DD
-:100210001D1109206A351C2108811421088104213F
-:1002200010A299A3000009201C008360030178102C
-:100230001116C00029117810781609206F350B208F
-:1002400000000920693504210B20000005A04000B2
-:100250002D11012005407800BC117800BA117C00F6
-:1002600061200000186084A00100400038117C006B
-:10027000C3700000C7700000CB700000CF7000009A
-:10028000C070BCA0C0FFC0008811382079004811A0
-:10029000BA110512D311051256125612CA11901531
-:1002A0006112C611D711D911DB11DD119515C611D7
-:1002B0006712831244158A15DF116B148D14A7146D
-:1002C000D0142414321446145A14EF12C6119F127B
-:1002D000A612AB12B012B612BB12C012C512CA12CD
-:1002E000CE12E312C611C611C611C611C611FB12F9
-:1002F00004131313391343134A1370137F138E130C
-:10030000A0130914C611C611C611C611C6111914BD
-:10031000BCA0A0FFC000C611382084A01F00790037
-:100320009111C611C611C611C611C611C611C6114A
-:10033000C611C611C611C611C611C611C611C61105
-:10034000C611C611C611C611C611C611C611C611F5
-:10035000C611C611C611ED15F715FB150916C61104
-:10036000C611CA72C671012006407800BC11CE7356
-:10037000CA72C67101200040C270612000001B607B
-:10038000010091200050912080407C00C37001400A
-:100390007800BD1199204100A1204100A92005004D
-:1003A000A3537800BA11C470C37004007A007800B7
-:1003B000BA117800BA117800BA117800BA119120F8
-:1003C0000080C3700000C7705349CB702050CF70BD
-:1003D0002020D3700100003FD670792000001B78E8
-:1003E00001003120300059200010292057045120ED
-:1003F000700461207204B920FFFFC1200000912029
-:1004000000509120804078005504D071C872CC73A0
-:10041000C470A020982031203000FF814000BA1124
-:10042000077004001A731E72512012004920341202
-:100430004120BA110370020086A70100C0002612F5
-:100440004920421241204E12037003001770000031
-:100450000B811271C8002E12177001000770010085
-:1004600086A70100400042120C7084A07F00048027
-:100470000920200002A142094A09A820A026A6536B
-:100480007800D8100C7084A07F0040004212AC802D
-:10049000480042129826A5537800D8100C7084A00A
-:1004A0007F00AC809826A5537800BA11C471C8703B
-:1004B00014219EA70400C0005E120A20CA727800B0
-:1004C000B911C7700100CB701F007800BA11C47059
-:1004D000C872CC73D074C670CA72CE73D27405A0C1
-:1004E00040007D12018072787A7A7E7B767C9878E3
-:1004F00084A0FCFF9A7878008112987885A001008A
-:100500009A787800BA11C470C872CC73D474C6706B
-:10051000CA72CE73D67405A0400099120180867805
-:100520008E7A927B8A7C987884A0FFFC9A787800F7
-:100530009D12987885A000019A787800BA11092058
-:1005400059350C21112010047800B81109204135CB
-:100550000C217800B911092042350C217800B9111D
-:10056000612040350C6110627800B81109204535D2
-:100570000C217800B911092046350C217800B911F9
-:10058000092047350C217800B911092048350C2184
-:100590007800B91108790C7A7800B811C471078114
-:1005A00084A00F00038003800380E8A00036006A67
-:1005B000046884A008004000E012086B7800E11293
-:1005C0000C6B7800B711C4777810921691200080D8
-:1005D0001C6B146A9120018008277800B711C4773A
-:1005E00078109216912000800869186A106B91208B
-:1005F00001807800B711C47182A11000C800B21147
-:100600007810BC1A7800B711C47182A11000C8001C
-:10061000B2111120413504227E0012217810751A82
-:100620007F017800B911C47111203113A92008008D
-:10063000042206A1400023131082700021137800C9
-:1006400018137800B21192A231137E0211204235A4
-:10065000042212217F017E007810811A7F01780028
-:10066000B911E803FA00F401EE0264001900320047
-:100670004B00612040350C611062C4700E60C87080
-:1006800012607800B811612040351461C4701660A2
-:100690007800B911C471112004001920121286A12A
-:1006A000280040006313112005001920121286A1B2
-:1006B000320040006313112006001920131386A195
-:1006C0003C00C000B2116120403518607E001A6104
-:1006D000B8237810921A7810BA337F017800B911D4
-:1006E000C47184A1CFFFC000B2111120473504228C
-:1006F00012217E007810B41A7F017800B911C471FC
-:1007000082A11000C800B2111120483504227E00D9
-:1007100012217810A31A7F017800B911C471C87230
-:1007200084A1FDFFC000B11184A2FDFFC000B11182
-:10073000002108790A7800220C7A0E787800B81126
-:10074000C471078184A00F00038003800380E8A0A8
-:10075000003619200000C87200687E0026A2400002
-:10076000CF13026A84A400204000B8139DA3100098
-:1007700084A400104000BE139DA3080084A4004080
-:100780004000CF130F8184A200404000CB137810AB
-:10079000D61A7800CF137810C81A7800CF13CC720D
-:1007A000FF8240000114086806A240000114A4A2C0
-:1007B000FF0061204035186186A128004000E81341
-:1007C00086A132004000EE1386A13C004000F413E5
-:1007D00082A464004800FE137800F81382A450003D
-:1007E0004800FE137800F81382A443004800FE136B
-:1007F000C471C6717F02CA727800B3110A6A9DA3E0
-:100800000A00046805A306687F020C6BC4717800B7
-:10081000B711C4777810921691200080146A1C6B6F
-:1008200091200180C8701668CC701E680827780077
-:10083000B711C471C872CC7382A11000C800B21184
-:100840007810E41A7800B711C477781092169120C6
-:100850000080086A95A202000A6A91200180082798
-:100860007800B811C4777810921691200080086A39
-:1008700094A2F9FF0A6A046805A0400041147810A8
-:10088000191A9120018008277800B811C4777810D0
-:10089000921691200080086A95A204000A6A0468F2
-:1008A00005A0400055147810191A912001800827DE
-:1008B0007800B811C477412001004920050051207B
-:1008C00020009120008078109F1691200180082739
-:1008D000086A7800B811C477C872CC73C677CA7238
-:1008E000CE7378101817C0008914186805A040004E
-:1008F000831408277810F41AC00083141778FFFFB8
-:10090000912001807C009120018001200540780029
-:10091000BC11912001807800BA11C477C6774120BC
-:1009200021004920050051202000912000807810EE
-:100930009F1661204035A3600300B667A7600000E2
-:100940001778FFFF912001807810191A7C00C87772
-:10095000CA77C477C677BCA700FF912000806120CA
-:100960004035A3600200A7600000B6671778FFFF5C
-:100970007810191A9120018041202100492004009B
-:10098000512010009120008078109F16C8703668A2
-:10099000388784A70700C000C414912001807C0020
-:1009A000987884A00300C000F4143920000041208E
-:1009B000210049200400512008007810921691204F
-:1009C000008008680DA80A6991200180388784A7F3
-:1009D0000700C000DD14BCA700FF3F8738873F87B2
-:1009E00084A7000FC000DD14912000806920000161
-:1009F000306884A0400040001D154B680400A92009
-:100A00001400486884A0040040000A1570000A150C
-:100A1000780001154B680900A9201400486884A0DB
-:100A20000100400017157000171578000E15A92059
-:100A3000FA0070001D157800191579200035177817
-:100A4000010061204035A3600100A7600000C36081
-:100A50000F00987885A002009A78086884A0FDFFAE
-:100A60000A681B684600912001807C00987884A069
-:100A7000FDFF9A7884A00100C0004015781060172F
-:100A8000C471C6714A797C00C474C873CC72C674D0
-:100A9000CA73CE72792000350920400078106F1695
-:100AA0004000861578103F1640005A1578107816C9
-:100AB000780086151060912001801778FFFF0920CB
-:100AC00068350B20050008810B20000008810A23EF
-:100AD00008810A2208810A2408810A2008810B2043
-:100AE000000008810A2C2EA030257E0E7810132FCE
-:100AF0007F0E9265A2659666A666AB600000AF6049
-:100B00000000912001807810191A7C00C370054004
-:100B10007800BD11C471C770000006797800BA1161
-:100B2000C471C671682178009715692000100C699E
-:100B300016A0042D10A2688D0981C000991585A208
-:100B40000000C000A715C37000407800A915C3704D
-:100B50000340CA707800BD11C471C872CC73002103
-:100B600084A1FCFFC000C61100217900B715CE1585
-:100B7000E315E515E715C3700340CE71D272D67345
-:100B80007800CA15C3700040CF700000D370000019
-:100B9000D7700000C677CA717800BA113120E91504
-:100BA000242630861224042246A4C000BB1584A447
-:100BB000FFFFC000D0153120E9151082198384A3EE
-:100BC000FFFFC000D0157800C2157800C21578006C
-:100BD000C2155555AAAAFFFF00006079C671C471FD
-:100BE00082A10300C800B21162797800BA1160795D
-:100BF000C6717800BA115479C671C47156795879A2
-:100C0000CA71C8715A795C79CE71CC715E797800FD
-:100C1000BA115479C6715879CA715C79CE7178006D
-:100C2000BA110C7084A07F0040001D1607700400EC
-:100C3000047084A00400C000181617700000127120
-:100C40001A721E7308810C81A981988CA120300032
-:100C50008060A220A6530C7885A000000270077067
-:100C6000010008710481C80031160770020084A1D8
-:100C70000C000C7184A10003037000007C000C7058
-:100C800084A07F0040004B1607700400047084A00D
-:100C90000400C00046161770000012711A721E730D
-:100CA000992030000881AC810C7885A00100027089
-:100CB0000770010008700C80C8005A160770020007
-:100CC0008CA00C00C0006C160C7184A10003C00045
-:100CD0006C16A02CA55306A0037000007C00507871
-:100CE00065A040007716042C5278632000007C0039
-:100CF0007E0F7920003550786220002C52787F0FCB
-:100D00007C0011200040527A192010041983400001
-:100D10008F1680A22F001220102078008616132034
-:100D200000007C0084A7000F0C8084A707000380CC
-:100D300003800380038005A1E8A080367C00781042
-:100D4000921600292A68002A2E68086884A0EFFFFE
-:100D50000DA80A6909204F350C21046805A0400040
-:100D6000BC1616A1C000BC166020006006687E019B
-:100D70000B2000007800BF16092000007E010468E7
-:100D800065A04000CE16006006687810DF16781067
-:100D9000CB17106801801268C000BF167F0102697E
-:100DA00006697C0065A04000DE1698609B6000002C
-:100DB00008207810781600217800D2167C00036095
-:100DC0000301A9201C0080AC0400A0200120000029
-:100DD000A440286816602C681E607C007E0E71207E
-:100DE000403540708CA08000C000FC1688A0803583
-:100DF0000A2D0080427006A07F0E7C007E0E7120BE
-:100E00004035092080354072218211824800161732
-:100E10000421088106ADC000051719811E21088133
-:100E200018831182C8000E17427406A07F0E7C0042
-:100E3000781092169120008004681E7865A040000A
-:100E40005F1778002917002C1E78006065A040000D
-:100E50005F170C6006A3C0002317086006A2C0003D
-:100E60002317282C01204F35042006AC40005F17C3
-:100E7000046806ACC000461700606020066805A044
-:100E8000C0004617036800007800501700641C7803
-:100E90006020026486A40000C0005017002C026885
-:100EA00060257810DF16176005001F60200078109D
-:100EB000CB171068018012680120FFFF05A07C009D
-:100EC0003920000041202100492004005120080061
-:100ED0009120008078109F16388784A70700C000F3
-:100EE0006A17BCA700FF3F8738873F8784A7000F9A
-:100EF000C0006A17912001807C006120000018600A
-:100F000084A00100C0008A17AC78AF78000005A06B
-:100F1000C0008B177C008CA0F0FF40009117781068
-:100F2000A51B79009317A317A517AB17AF17A31726
-:100F3000B317A317A317A317A317B917BD17A317A1
-:100F4000A317A317A3177810A51B7810601701200B
-:100F500001807800C317012003807800C3170120A7
-:100F600004807800C317781060170120068078008D
-:100F7000C31701200C807800C31778106017012078
-:100F80000D807800C317C270612000001B60010053
-:100F9000912080407C00042C8260082C632000009B
-:100FA000647800806678687805A06A794000DB176D
-:100FB000022C7800DC176E797C007E0C61200035F5
-:100FC00083680301082D6B20000064600080666068
-:100FD000686005A06A614000F017022D7800F117E3
-:100FE0006E617F0C7C0078100418400003187E0CA2
-:100FF000986065A04000FE177810D2167F0C9B60A9
-:101000000000781078167C006C7865A040001618F7
-:1010100091200080647801806678042C6E7805A0A9
-:10102000C00014186A780080912001807C009878B4
-:1010300005A0C00065187479D07005000500D07255
-:1010400006A2C0001C18002206A1C00033180478B4
-:1010500005A0400065180778000068006518912019
-:1010600080407800651878106F16400065187C7A0B
-:10107000787B07810480048010A299A300000920D6
-:10108000400078103F1640005C1878107816807881
-:101090000080827886A00200C00065189120008040
-:1010A000AF78020083780000987885A003009A78D2
-:1010B00091200180780065188378000078109219DB
-:1010C000006084A00700790066187C006E187D1807
-:1010D0009D186E18AF186E186E186E18392000041F
-:1010E000A87805A7AA78046005A706607810ED180F
-:1010F0001860A67878107A197C00A87884A000017E
-:101100004000841878006E18AB78000000600780FB
-:1011100084A0FF009E7801809B60000040009A1828
-:101120007810ED1840009A18A87885A00001AA78D8
-:1011300078009C18781011197C00A8788CA0000EFB
-:10114000C000A61884A00001C000A81878006E187E
-:101150007810ED18C000AE18781011197C00A8782E
-:1011600084A000014000B61878006E18AB7800002B
-:101170001067A9200100146084A0FF0005A04000B2
-:10118000D318BCA700FFA92008008EA001004000D2
-:10119000D31839200000A92080008EA00200400052
-:1011A000D3187800EA1878109216002D912000804C
-:1011B0002B6800002F680000086884A0DEFF0A6822
-:1011C000002D80A010006820912001807000EA1896
-:1011D0007800D618781078167C00A0786DA0C00032
-:1011E000F818002CA278A6789B60000078000419FB
-:1011F000002C9A689B600000A278002D0260A47801
-:1012000006ADC000041902609C7801809E78C00081
-:101210001019A87884A00000AA78A478602006A0FD
-:101220007C002EA03025186184A160009E614000E2
-:101230001D197E0E7810132F7F0E9265A26596669B
-:10124000A666AB600000AF600000106778109216D1
-:1012500091200080086884A0010040003F1991207F
-:1012600001807810DF16912000807810CB17912034
-:101270000180A3780000A778000078007919206029
-:1012800096A00100C000461900802260106A146810
-:101290009120018002A248005519400055193920BB
-:1012A000000278107A1978007919082C91200080B2
-:1012B000006865A040005D1902610269C000611903
-:1012C00006696021036000001068008012689120A8
-:1012D000018008688CA040004000731986A040007F
-:1012E0000A687810EE167810191AA7780000A3780B
-:1012F00000007C00046005A7066091200080781043
-:10130000CB1791200180A47865A040008D199860CA
-:10131000A6789B60000078007D19A3780000A7786C
-:1013200000007C007079747800800AA1C8009919C7
-:1013300006A07678D270047805A04000A719018035
-:101340000678C000A7196800A719912080407C008A
-:101350006800C219292000006C7865A04000BD1902
-:101360007810C3194000BD197E057810D9197F0582
-:10137000C000BD1928857800AC19FF854000C2194E
-:10138000912080407C00847B8879D4720500050020
-:10139000D47006A2C000C519002202A1C000D31952
-:1013A000002305A07C004800D71902A37C0002801E
-:1013B0007C0078100B1A09201C00246005A0400056
-:1013C000E31909204000781011164000FC199478A8
-:1013D0000080967886A00200C0000A1A9120008042
-:1013E000AF78030097780000987885A000039A787A
-:1013F0009120018078000A1A977800007810F3177E
-:101400008479887800800AA1C800071A06A08A7823
-:10141000D67006A07C00078104800480907A8C7BC3
-:1014200010A299A300007C0009206835912000805B
-:101430000A207E0F7920000109204035912000808C
-:10144000042186A00000C000341A092012350421AE
-:1014500005A0C000341A307884A0C000C000341A3F
-:101460001800341A1B784400912001807F0F7C0003
-:101470007E1291200023712040357920000119202F
-:10148000D82DA1202B01042305A04000501A9A78E2
-:101490001883AC2318839823A65318337800431A73
-:1014A0009B782000A9201000AF780000AF782002C0
-:1014B00070005C1A7800541A0370000078105B1BEF
-:1014C000047084A00F0085A0806206780F780092D7
-:1014D0004378D800537880000B78380047707F3508
-:1014E000437000007F1200207C008CA10F001120AF
-:1014F0000101042284A0F0FF05A1122078105B1BDB
-:101500007C0011200101A92009000B8170008A1ABA
-:101510007800851A8CA1000E042284A0FFF105A199
-:1015200012207C0009200101A9200500138270000F
-:101530009B1A7800961A94A2E000042184A01FFF51
-:1015400005A20A207C0011200101A9200C000B81BA
-:101550007000AC1A7800A71A8CA100F0042284A0B5
-:10156000FF0F05A112207C0011200201042284A09B
-:10157000CFFF05A112207C000381038080A0200002
-:101580007E0C612000019A60AC62AC637F0C7C0031
-:101590000381038080A022007E0C612000019A60FC
-:1015A000A46084A0DFFFAE607F0C7C000381038019
-:1015B00080A022007E0C612000019A60A46085A0BA
-:1015C0002000AE607F0C7C000381038080A020009F
-:1015D0007E0C612000019A60A460AE621020A460BD
-:1015E000AE6318207F0C7C00912000807E0C7E0E64
-:1015F000186805A04000391B6120803F7810411B0E
-:101600004000271BA92000006120803E7E0C78103E
-:10161000411B4000131B7F0C608C7000111B780075
-:10162000061B7800391B7F0082A0803E7120403568
-:10163000BA701C6085A000081E60B671A76000002B
-:1016400001200400A2707810141A7800351B712054
-:1016500040351C6085A000081E60B671A7600000C0
-:1016600001200600A2707810141A012000007800F2
-:101670003B1B012001009120018005A07F0E7F0C03
-:101680007C00042C05A04000581B60200C6006A3C1
-:10169000C000551B086006A2C000551B106006A1C3
-:1016A000C000551B06A078005A1B00607800421B42
-:1016B00085A001007C00112041350C228CA10F0077
-:1016C00011203B01042284A0000140006A1B21205C
-:1016D00080FF22217C007E0EE4688CA02000400068
-:1016E000A31B84A00600C000A31B1060078084A079
-:1016F0000F00038003800380F0A00036047084A0F4
-:101700000A00C000A31B087194A100FF4000A31BA6
-:101710008CA1FF000120190006A14000961B0120AA
-:10172000320006A140009A1B78009E1B0920200071
-:101730007800A01B09203F007800A01B11200000AA
-:10174000002105A20A707F0E7C006800A51B7E00A8
-:1017500071200000187084A00100C000AA1B7F0047
-:10176000082E71201000CA707F00C670C3700280FE
-:10177000712000001B700100912080407F007020CC
-:101780007F007800C11B7E107E007E129120002316
-:101790003C7F587E307C387D94A53F0084A4004077
-:1017A0004000D81B84A77C00C0009C2D7810A51B8E
-:1017B0009CA40F0082A304005000E01B7810A51B1E
-:1017C000078584A00F007900E51BEA1F9A20C0203E
-:1017D000E6226B25B325EA256526BF2644270B1C88
-:1017E000F51B531E1D1F4A25F51B7810A51B18005D
-:1017F000C81B7F12912001807F007F107C00037046
-:1018000000003F700000307005A04000091C3370DC
-:1018100000001800C81B5C7005A0C000B61CA070BA
-:1018200084A007007900141CD61C1C1C2A1C4B1C0D
-:10183000711C9D1C9B1C1C1C087884A0FDFF0A7851
-:101840000920460078101224C000281C03700400F0
-:101850007800F71B78105E2DC000491CB47007801B
-:101860009B787E00AA789B781000AB780C009B7860
-:101870006000AB7801005B7804000920F700781065
-:101880001024C000491C03700400C3700F003370A3
-:1018900070357800F71B78105E2DC0006F1CB47196
-:1018A00007819B787E00AA789B7810008CA10700A6
-:1018B0008DA1C000AA79AB7806009B786000AB7858
-:1018C00002005B7804000920F70078101024C000A3
-:1018D0006F1C03700400C3700F0033707035780004
-:1018E000F71B78105E2DC000991CB47107819B789E
-:1018F0007E00AA789B7810008CA107008DA1C00003
-:10190000AA79AB782000B871AA79AB780D009B78E2
-:101910006000AB7804005B7804000920F7007810C1
-:101920001024C000991C03700400C3700F003370B2
-:1019300070357800F71B78004B1C78105E2DC000C6
-:10194000F71BBC7068209B781000106F7810A12CDA
-:10195000502C106884A0070085A08000AA78186E1B
-:1019600041200100012004007800DE1D78105E2D6A
-:10197000C000F71B9B7810005C706820106F781017
-:10198000A12C502C086085A010000A60106884A06B
-:10199000070085A08000AA783120200041200100A6
-:1019A0007810C52D012003007800C91D1800C81B40
-:1019B000407485A400004000F01C80A080353020D9
-:1019C000447108812AA14800E71C09208035642160
-:1019D0000465FF85C000FD1C2184C000E11C467128
-:1019E000037000003F7000007800F71B4076B0A63F
-:1019F0008035447100267800EC1C46716825582516
-:101A00003E75502C346085A00000C000FA1C0867A9
-:101A1000367784A73F0140002F1D84A72100C00016
-:101A2000FA1C84A7020040001C1D84A7040040008B
-:101A3000FA1CBCA7FBFF0A6784A70800C000FA1CB9
-:101A400084A71000C000FA1C84A7000140002F1DCD
-:101A5000186005A0C000FA1CBCA7FFFE0A671F683B
-:101A60000000186E84A60E00186140003F1D1C6027
-:101A700002A14800421D4000421D7800F61CFF8173
-:101A8000C000F61C84A78000C000481D0C702260B6
-:101A9000BCA77FFF0A67106B078384A00F00038039
-:101AA0000380038080A00036602048204A700060D8
-:101AB0004E7004605270602A1800C81B9B7810009A
-:101AC00046A078105E2DC000F71B106B9CA307008A
-:101AD0009DA3C0004C7084A000804000731D84A6AC
-:101AE00001004000751D9CA3BFFF84A610004000AC
-:101AF0007B1D9DA32000AA7B408884A60E00C00009
-:101B0000861DBDA710000A677800C71D4C718CA107
-:101B100000084000022911202100048004804800B0
-:101B20009D1D11202200048048009D1D11202000D1
-:101B3000048048009D1D4000C71DAA7A4088781087
-:101B4000772D106A0C6108818CA1FF00E0A1803E16
-:101B5000642CFF8C4000BE1D106006A2C000A81DB2
-:101B6000B4600180B660C000A31D7E0C602A0860CE
-:101B700085A000010A607F0C7800D61C78105E2DCD
-:101B8000C000F71B602A0E61AA7940882E710120DF
-:101B900001007E00507184A118004000DD1D84A169
-:101BA00010004000D71D7810CC2AC000DD1D84A194
-:101BB00008004000DD1D7810E6297F0002708CA629
-:101BC0006000FF884000E61D8DA104005A79B269CB
-:101BD0009B7860000028AA789B786100146885A033
-:101BE00000801668AA787E157E137E14A1202C0131
-:101BF0009B7800000080AC8080AD0A009820A6533E
-:101C00007F147F137F15106807809B787E00AA7869
-:101C1000906DD67DDE7D946ED27EDA7E307884A0A3
-:101C2000C000C000151E98001D1E086084A0EFFFB4
-:101C30000A607810772D7800FF1B007284A20700DD
-:101C400086A00100C0002A1E1B7849007810772D5D
-:101C500078003B1EB06A95A200205A7A1B78490092
-:101C60007810772D0072002505A640003B1E84A247
-:101C700007007910491E80AD0800327084A2070069
-:101C800086A00100C000471E186000801A6078001E
-:101C9000F71B511EF030F030DF30F030511E511E76
-:101CA000511E7810A51B087884A0FDFF0A787E0FCE
-:101CB0007920003598787F0F84A001004000791EBC
-:101CC000A07086A00100C000681EA2707800011FED
-:101CD000A07086A00500C000771EBC706820176841
-:101CE0000400136800001C6885A008001E68A3702B
-:101CF00000007E1511200400A07186A101004000A3
-:101D00009B1E86A10700C0008B1E09202B350B20CF
-:101D1000050078009B1E0920133504210920123587
-:101D20000A2009202B350B200100A3700000A770AA
-:101D3000010078009D1EA37000007810C72EA92016
-:101D40001000392000007810A62BB8A70001700001
-:101D5000AB1E7800A31E007020207900AF1EDD1E90
-:101D6000C61EC61EB91EDD1EDD1EB71EB71E7810AC
-:101D7000A51B21205735042405A04000C61E06AD32
-:101D8000C000C61E006822207800D61E1C6884A0F1
-:101D90000100C000D21E106F7810A12C7810D92835
-:101DA0007800D61E5470602000680260166A1C68B5
-:101DB00085A008001E687810DD172120803F78106C
-:101DC000071F212057357810071FA9200000212068
-:101DD000803E7810071F20847000F01E7800E91EF6
-:101DE000A9208000612080361860106102A1126075
-:101DF0001B600000E0AC10007000001F7800F41EB3
-:101E00007F15037000003F7000007800F71B7E0410
-:101E1000042405A04000191F682000687E00166A8F
-:101E20001C6885A008001E687810DD177F00780008
-:101E3000091F7F04232000007C0082A203005000C1
-:101E4000231F7810A51B00237900261F291F9C1F24
-:101E5000AA1F82A2020040002F1F7810A51BA070AD
-:101E6000A3700000C37000007900361F3E1F3E1FA4
-:101E7000401F741F08293E1F741F3E1F7810A51BAA
-:101E8000B4777810A62BB477BCA7000F7810A12CDC
-:101E9000186005A040006B1F2120803F092004002E
-:101EA000112010007810C51F40006B1F7E15A9205F
-:101EB00000002120803E7E04092004001120100033
-:101EC0007810C51F7F0440006A1F208470006A1FBD
-:101ED00078005B1F7F15388784A70700C000461F66
-:101EE0007800FF1B7800FF1BB4777810A12C1860D6
-:101EF00005A040009A1F2120803F092005001120E5
-:101F000020007810C51F40009A1F7E15A9200000F0
-:101F10002120803E7E040920050011202000781039
-:101F2000C51F7F044000991F20847000991F78000E
-:101F30008A1F7F157800FF1B002279009F1FA21FB8
-:101F4000A41FA41F7810A51BA3700000A770010098
-:101F50007800F71B00227900AD1FB21FA41FB01F2D
-:101F60007810A51B78101F24007086A00100C00007
-:101F7000AF287810EF28086084A0EFFF0A6078107F
-:101F8000A2284000AF287800D61C042405A04000F9
-:101F9000E61F6820042D7E00106806A74000D41FAD
-:101FA000202D7F007800C61F7F00222016691C6844
-:101FB00005A21E687810DD171060018012600860AD
-:101FC00084A0EFFF0A607810EF287C0085A0010054
-:101FD0007800E51F00237900ED1FF21FF01F352068
-:101FE0007810A51BE47805A0D00015201800152056
-:101FF000082084A03000C00001201B784900780030
-:10200000F71BEC7884A003004000FD1F002184A092
-:10201000070079000B20232029201D201320582D94
-:10202000582D13202F207810A51B007005A040000C
-:10203000FF1B012003007800FA227810892B1B78FF
-:1020400055007800F71B7810892B1B78DC0078008E
-:10205000F71B7810892B1B78E3007800F71B7810AA
-:10206000892B1B789D007800F71B84A50F00C0000A
-:102070005F2078101F24007079003E2046205320F6
-:102080004620AF284820AF28462046207810A51BC0
-:10209000A071A370000086A10400C0005120780048
-:1020A00008297800AF287810EF28086084A0EFFF97
-:1020B0000A607810A2284000AF287800D61CE47887
-:1020C00005A0D000152018001520082084A030009D
-:1020D000C0006E201B7849007800F71BEC7884A0C4
-:1020E000030040006A20002184A1070079007820C5
-:1020F00088208E2082208020582D582D8020502D21
-:102100007810A51B7810912B1B7855007800F71BD1
-:102110007810912B1B78DC007800F71B7810912B3E
-:102120001B78E3007800F71B7810912B1B789D003B
-:102130007800F71B002379009D20A220A020A42076
-:102140007810A51B7800652617680800A3780000A2
-:10215000E47984A1300040006526EC7884A0030077
-:102160004000652684A107007900B620232029209D
-:102170001D20302D582D582DBE20502D7810A51B18
-:1021800082A205005000C6207810A51B002379000C
-:10219000C920CC20CE22DA2200227900CF20D42000
-:1021A000D620E920D420B3227810A51B9B781800F4
-:1021B000A87884A0FF0082A0200048006A2B8AA093
-:1021C0000400C8006A2B7900E5206A2B6A2B6A2B71
-:1021D0000C2B9B781800A87984A180004000FE2079
-:1021E00084A118004000FA2078006A2B007005A036
-:1021F000C000F420112003007800522784A1FF00C2
-:102200008AA01000C8006A2B790006211821162127
-:102210002E213021C2216A2B6A2BC4216A2B6A2B02
-:10222000AF22AF226A2B6A2B6A2BB1227810A51B32
-:1022300084A60010400025210120000300800080BA
-:102240003A781B789A007800F71B146884A0008005
-:1022500040002C21176803007800302D7810A51B52
-:102260001C691E6984A60018C0004A211C6884A04D
-:102270000100C0005221146886A00800C00042215D
-:102280001768000084A600044000BE211B78580097
-:102290007800F71B84A60010400052211B785800DC
-:1022A0007800F71B84A660004000BA2184A60008CD
-:1022B0004000BA2184A60080C000602178007A2105
-:1022C000B4A6FF7F5A7EB26E9B787400AC7AAC796C
-:1022D000AC781B80C8006D21008084A03F0008A15D
-:1022E00091A20000946B002102A3AE68906B0022C3
-:1022F00003A3AA6884A6004040008221B4A6FFBFC1
-:102300005A7EB26E007086A00300C0008F21781044
-:102310003A2F7810DF301B7867007800F71B06A093
-:1023200078109431AC6AA869946C906B002205A176
-:1023300040009E21002222A400211BA3D27CD67B38
-:10234000002305A4C000AC21B5A600405A7EB26EA1
-:102350001B7867007800F71B1B786700002215A127
-:10236000C000B6217810F0307800F71B78101D31CE
-:102370007800F71B1B786A007800F71B1B78580061
-:102380007800F71B7810A51B780021221C6984A116
-:1023900000014000DC218CA1FFFE1E697E0C48700C
-:1023A0006020006084A0FFEF0260046084A0F5FF5D
-:1023B00006607F0C7800102284A1000240001022E9
-:1023C0008CA1FFFD1E697E0C48706020006084A017
-:1023D000FFDF0260046084A0EFFF06600820482C45
-:1023E0007F0C84A108004000102278109D2C7810EA
-:1023F000E629FF88400010229B7860000028AA7818
-:10240000587EB5A604005A7E84A60004C0000C22A3
-:102410001B7855007800F71B1B7869007800F71BC4
-:10242000587E84A60004C00019221B78580078004A
-:10243000F71B1B786A007800F71B7800702B780078
-:10244000702B1920000090798CA1070040001F22FA
-:102450009B781000A87894A0FF0086A20100C0001D
-:1024600044220023A87C00A4182002A140003C22A2
-:1024700048003C2278003E227800C621A824A87A91
-:10248000F0003E2278002A2284A2F00086A02000DC
-:10249000C000A02218831883002302A14000542208
-:1024A0004800542278009D2286A2230040001F226B
-:1024B000186884A0F1FF1A68587E84A6F1FF85A0F1
-:1024C000100030205A7E086085A010000A607E0C43
-:1024D0004870602004600820482C7F0C84A1100004
-:1024E0004000782278109D2C7810CC2A7800872222
-:1024F0007E0C4870602004600820482C7F0C84A16A
-:1025000008004000102278109D2C7810E629FF88E2
-:10251000400010229B7860000028AA78B5A604002D
-:102520005A7E84A60004C00099221B7855007800CA
-:10253000F71B1B7869007800F71BA87A78002A221D
-:102540001883002302A14000A9224800A922780094
-:102550002A2284A28000C000762B7800702B78009D
-:10256000762B78006A2B9B781800A87884A0FF004F
-:102570008EA001004000BE227810A51BA87A94A26C
-:10258000FF00A87884A0FF008AA00400C8006A2B7E
-:102590007900CA226A2B39296A2B672A82A2000095
-:1025A000C000D4227810A51B7810892B1B786900F5
-:1025B0007800F71B82A20300C000E0227810A51B60
-:1025C0007810992B1B7869007800F71B82A2040011
-:1025D0005000EC227810A51B00237900EF22F22294
-:1025E000C923FA2386A203004000F8227810A51B15
-:1025F000012000003A70007084A0070079000023D9
-:1026000008230A230A2308253025D2240823082377
-:102610007810A51B84A60010C00012237810C72EC6
-:102620004000A32368788CA0FF0040005A2386A1B5
-:102630000800C00029237810EF28086084A0EFFF6D
-:102640000A607810A22840005A237810C72E78001C
-:10265000412386A12800C0005A237810C72E0860A5
-:1026600084A0EFFF0A60186005A0400041230180AC
-:102670001A6005A040004123018005A040004123CD
-:102680001E601C6884A001004000FF1B1C6884A021
-:10269000FEFF1E6854707E0C6020006802607F0C94
-:1026A0000460026805A0002DC00057230260066088
-:1026B0007800FF1B7E0178101F247F0184A600DFB5
-:1026C0001A6827680000106FFF814000A32386A1CD
-:1026D0000200C0009B2384A60008C000772384A6C4
-:1026E000600040007723D878DC7A2E682A6A178742
-:1026F00094A20F0013821382138290A2003690A23C
-:1027000000001C2284A30001C000882378008E23CF
-:102710001082042285A018001220118284A30004D4
-:1027200040009B239C6884A00001C0009B2378107C
-:1027300091247800FF1B86A118004000A32386A1E6
-:1027400014004000FF1B1269146884A00080400040
-:10275000AB23387016688CA600DF1A697810E02861
-:102760007810EF28C000B823086084A0EFFF0A604B
-:102770001C6884A00100C000C1237810D92878000B
-:10278000C52354706020006802607810DD1778005F
-:10279000FF1B82A204004800CF237810A51B002253
-:1027A0007900D223D623D823E523D8237810A51B7C
-:1027B000007086A005004000E1237810892B1B786B
-:1027C00069001B786A007800F71B90780780018009
-:1027D00084A0070080A018009A78A8798CA1FF0037
-:1027E00086A103004000F62378006A2B1B786A005C
-:1027F0007800F71B1C6885A004001E68FF82C000DB
-:1028000005247810892B78000C24118240000A24BA
-:102810007810A51B7810992B1B7869007800F71B9E
-:102820007810772D307884A0C000C0001C241800D8
-:102830001C241A7906A07C0085A001007C0084A6D7
-:102840006000C00029242F6800002B680000780079
-:10285000902484A60008C0003824B06884A00048F2
-:1028600035A684A60008C00038247810C72E7C0046
-:1028700084A6200040006224D0780380C80046244B
-:1028800006A078109431D4787810F93184A60040ED
-:10289000400050242F6800002B6800007800352489
-:1028A000B06884A0004835A684A60040C0004A2431
-:1028B000387005A0C0005C24D879DC7A2E692A6AB9
-:1028C0007800352484A6004040006C242F68000066
-:1028D0002B68000078003524B06884A0004835A635
-:1028E00084A60040C0006624387005A0C0007A2489
-:1028F0003B700700D879DC7AD078F380C800812457
-:10290000008084A03F0008A191A200002E692A6ADD
-:10291000002105A2C0008E2478003524781094315F
-:102920007C0084A3000240009924086085A0020076
-:102930000A6017680600286A2C693A6A3E692B68A3
-:1029400000032F6800003368002093680000976838
-:10295000200000707900AC24B424B624BF24B42431
-:10296000B424B424B424B4247810A51B1C6884A017
-:102970000100C000BF247810D9287800C524547005
-:10298000502C602000680260602A21205735042402
-:1029900005A04000CE2420207800C724222D6B20E3
-:1029A00000007C00B4777810A62BBCA7000F78102D
-:1029B000A12C186005A0400001257E0D0120903F4C
-:1029C00068207F0D2120803F092004001120100085
-:1029D0007810C51F400001257E15A9200000212088
-:1029E000803E7E0409200400112010007810C51FCD
-:1029F0007F04400000252084700000257800F12429
-:102A00007F15388784A70700C000D7247800FF1BF4
-:102A10007810E0287810EF28276800009B780E00D7
-:102A2000106F136802007810CA3184A600084000B5
-:102A30001D2518698DA100201A69146884A00080E2
-:102A40004000242517680000212057350068222007
-:102A5000386A3C692A6A2E697810DD177800FF1BF6
-:102A600078101F24276800009B780E00106F7810E4
-:102A70007C2D8CA0FF001269146884A000804000A7
-:102A80004325387016688CA600DF1A69A370000011
-:102A90007800FF1B06A07810C72E13680000176887
-:102AA00001008CA600DF1A69276800000070790019
-:102AB00059256125632563256525652565256125DE
-:102AC00061257810A51B7810EF28086084A0EFFF1F
-:102AD0000A607800BA28002379006E2571257325D5
-:102AE000B1257810A51B0070790076257E258025FC
-:102AF00080258B25802592257E257E257810A51B97
-:102B000084A60020C0008B25B5A600205A7E781030
-:102B1000F0307800302D146884A0008040009225A9
-:102B200017680700092018350C2186A10000400015
-:102B3000A72586A101004000AB2509202B350B20DD
-:102B40000B00A37001001B7846007800F71B1B7870
-:102B5000DD007800F71B09202B350B200A007800D8
-:102B6000F71B7810A51B00237900B625B925BB25D6
-:102B7000DE257810A51B00707900BE25C625C82566
-:102B8000C825D325C825DA25C625C6257810A51B56
-:102B900084A60020C000D325B5A600205A7E781058
-:102BA000F0307800302D146884A000804000DA25D1
-:102BB000176807001B78E4007800F71B1C6885A0E5
-:102BC00004001E68B5A600087810892B1B786900E0
-:102BD0007800F71B00237900ED25F025F225F42578
-:102BE0007810A51B7810A51B84A60004C00013262E
-:102BF0002B7809309B786000AB78000084A6FBFF3F
-:102C00005A78E47984A1200040000B26EC7884A057
-:102C10000300C0000F26012014007800FA2284A1CE
-:102C2000070079004B26907A94A207009B786000F9
-:102C3000A879FF81400049269B781000A87B84A3D7
-:102C40000100C0003A26A87BA87B86A30100C00033
-:102C50002D260920F7FF7800332686A30300C00045
-:102C60003A260920EFFF7E0C48706020046004A122
-:102C700006607F0C9B786000AB78000084A6FBFFA9
-:102C80005A782B7809301C698CA1FFFD8CA1FFFEBE
-:102C90001E697800302D2320292055265D265326D5
-:102CA00053265326302D7810A51B1C698CA1FFFDDF
-:102CB0008CA1FFFE1E697800382D1C698CA1FFFDD8
-:102CC0008CA1FFFE1E697800302DE47984A13000CC
-:102CD00040006F26EC7884A00300C00077261468BB
-:102CE00085A000801668012014007800FA2284A1D3
-:102CF000070079007B26302D302D8326302D582D6E
-:102D0000582D302D302D84A60004C000B4261C6838
-:102D100084A001004000382D8CA660208CA1FBFF10
-:102D20005A79B2699B786000AB7800009B786100AB
-:102D3000146885A000801668AA787E157E137E141C
-:102D4000A1202C019B7800000080AC8080AD0A009F
-:102D50009820A6537F147F137F15106807809B78F7
-:102D60007E00AA787800382D146884A00080400086
-:102D7000BB26176808001B78D8007800F71B0023D3
-:102D80007900C226C7264227C5267810A51B0070E9
-:102D900084A007007900CC26D426D626F226D42695
-:102DA000D426D224D426D4267810A51B1C698DA144
-:102DB00001001E690068066005A0C000E0260260F0
-:102DC000186884A00E004000EC261470B6682C71C0
-:102DD00088A1803E7800EE260920803F0421026809
-:102DE0000A2D5671B26E84A660004000402784A66A
-:102DF0000008C000042784A6FF7FB268906894682A
-:102E00007810C72E7800402784A62000400016279F
-:102E100006A078109431D0780380C8001227D478A7
-:102E20007810F931D879DC7A78001A277810AE2C2E
-:102E30007810943184A600804000402784A6FF7F4C
-:102E4000B2689B78740078107C2D102078107C2D4F
-:102E5000082084A62000C000382778107C2D1B8015
-:102E6000C8003327008084A03F0008A191A2000081
-:102E7000946B002102A3AE68906B002203A3AA68A2
-:102E80007800FF1B7800762B3370000082A20500CB
-:102E900050004C277810A51B002379004F2752279C
-:102EA0005C277F270022790055275A27762B5A273F
-:102EB000A827F9277810A51B007086A00100C00084
-:102EC00069277810EF287810C72E34700A607800D0
-:102ED0006E27007086A00300400063270370050082
-:102EE0000120903F68203E703270002279007827E0
-:102EF000762B7D27A8277D27762B7810A51B0070C1
-:102F000086A00100C0008C277810EF287810C72E0B
-:102F100034700A6078009127007086A0030040009A
-:102F20008627037005000120903F68203E703270B4
-:102F3000002279009B27A227A027A227A027A2274B
-:102F40007810A51B7810992B1B7869007800F71B67
-:102F5000007086A00100C000B5277810EF28781017
-:102F6000C72E34700A607800BA27007086A003006C
-:102F70004000AF2703700200807A94A2000F9B7874
-:102F80001800A87C84A4070015A26920803F042DA6
-:102F9000082D5671682005A04000D527106806A2AC
-:102FA0004000EE2700687800C82703700500012064
-:102FB000903F68203E7032707E15A9202F000320BC
-:102FC000000000807000E6277800DF277F15126A76
-:102FD000B36800071F68000823680300B06E5A7EBC
-:102FE0001C6884A0000C40004F287810912B7800BA
-:102FF0004F28007086A00100C00006287810EF2836
-:103000007810C72E34700A6078000B28007086A0F4
-:1030100003004000002803700200807A94A2000F91
-:103020009B781800A87C84A4070015A2A879A87929
-:103030008CA1FF00E8A1803E042D082D5671682068
-:1030400005A040002A28106806A240004328006816
-:1030500078001D28037005000120903F68203E7015
-:1030600032707E15A9202F00032000000080700020
-:103070003B28780034287F15126AB36800071F6860
-:10308000000823680300B06E5A7E1C6884A0000C00
-:1030900040004F2878108D2B587E78004F287E02F4
-:1030A000078284A00F0003800380038080A0003685
-:1030B00060204A7000604E700460527084A6600008
-:1030C00040008628946B906CA869AC6805A1C0008C
-:1030D0007428D27BDA7BD67CDE7CB4A6FFB75A7E1E
-:1030E0007810F03078008628AC681AA3002123A459
-:1030F000002405A340008628D27BDA7BD67CDE7CC8
-:10310000AC68B4A6FFBF5A7E78101D317F077810D7
-:10311000A12C09206A0084A60800400091280920FB
-:103120006900B5A600205A7E1A79002D3E700782EC
-:1031300084A00F0003800380038080A00036482015
-:103140007800F71B206005A04000AE2801802260B7
-:10315000086085A008000A60107026607C0006A048
-:103160007810C72E13680000176801001F68400020
-:103170001B680001007084A007007900BF28C728E1
-:10318000C928C928D528D128C728C728C728781012
-:10319000A51B7810E0287810D9287810DD17780062
-:1031A000FF1BA37000007800FF1B17680000780069
-:1031B0000825006805A0C000DE28026006607C00CB
-:1031C000106005A04000E9280180D000E9287810AF
-:1031D000A51B1260086084A0EFFF0A607C001860E5
-:1031E00005A04000F52801801A607C007810772D3A
-:1031F00017681800780026297810772D17681900AD
-:10320000780026297810772D17681A00780026296B
-:10321000B4777810A12CB8718CA1FF00E8A1803E92
-:10322000042D082D682005A0C00018297800FF1B78
-:103230001068B47206A240002029006878001129A5
-:1032400000680A2017680500BF7000007810E028A9
-:103250001C6884A00100C0002F297810D92878109C
-:10326000EF281B6800001F6820007810DD17780029
-:10327000FF1B82A20300C0006A2BA87DACA5FF0043
-:10328000A87EB4A6FF001C698DA180001E6984A1E0
-:103290000001400099298CA1FFFE1E69B4A6FF0021
-:1032A0004000832982A60F0048005A2940005A296D
-:1032B00031200F002B852B857810242C40006429A9
-:1032C0007810332A78008C297810DF2B7E0C602947
-:1032D000046084A0F5FF06607810572A7F0C1C69F3
-:1032E0008DA100011E69587EB5A604005A7E84A6F1
-:1032F0000004C0007F291B7855007800F71B1B785D
-:1033000069007800F71B7E0C6029046084A0F5FF3B
-:1033100006607810572A7F0C587E84A60004C000EF
-:1033200095291B7858007800F71B1B786A007800F5
-:10333000F71B7E0C4870602000618CA100104000DB
-:10334000D9290862178294A2FF0082A20F004800C8
-:10335000AD294000AD2911200F00002602A2C800AF
-:10336000B2293022086294A2FF00187086A02800BB
-:10337000C000C22982A21900C800C8291120190062
-:103380007800C82982A20C00C800C82911200C00AE
-:10339000002202A5C800CD2928227810E32B2B8516
-:1033A0002B857810242C4000D9297810332A7800F6
-:1033B000DD297810DF2B7810572A587885A0040073
-:1033C0005A787F0C1B7869007800F71B7E0C602907
-:1033D000006084A00010C000012A106084A00F00CB
-:1033E000C000FB298CA10200C000FB298CA1F5FFC5
-:1033F00006617F0C7C00112032001920000078004B
-:10340000232A086294A2FF00187086A02800C0003A
-:10341000112A82A21900C800172A11201900780069
-:10342000172A82A20C00C800172A11200C0008637A
-:103430001F839CA3FF0082A30F004800232A4000A3
-:10344000232A19200F00AB780100AB780300AB787A
-:103450000100AA7AAA7BC0A805001C6885A000010B
-:103460001E687F0C7C007E0C48716021082084A0BF
-:10347000F0FF35A6867E18609A78AE7E1266A47834
-:1034800084A0F8FF8CA1070005A1A67816608A78B1
-:10349000B4A60F0037860482048084A0FF0005A62E
-:1034A0000E60046084A0F5FF06607F0C7C007E0C3B
-:1034B0004870602018609A78A47884A0F0FFA678FD
-:1034C0001260847884A0F0FF86787F0C7C0082A252
-:1034D0000200C0006A2BA87A1C698DA180001E69B9
-:1034E00084A100024000AC2A8CA1FFFD1E6994A2B9
-:1034F000FF0082A20200C8006A2B7810F32A78101D
-:10350000572A80A901000C2078109D2C7810E629FC
-:10351000FF8840009F2A9B7860000028AA78587E88
-:10352000B5A604005A7E84A60004C0009B2A1B781E
-:1035300055007800F71B1B7869007800F71B587E50
-:1035400084A60004C000A82A1B7858007800F71B46
-:103550001B786A007800F71B82A20200C800B42A18
-:1035600084A201004000BE2A487188A100000C21FD
-:103570008CA10020C000BE2A112000007810D12BA1
-:103580007810F32A7810572A587885A004005A78C2
-:103590001B7869007800F71B7E0C7E0260290060B2
-:1035A0001120010084A00020C000E32A146084A040
-:1035B0004000C000E12A8CA1EFFF066106A0780060
-:1035C000F02A11200000AB780100AB780200AB7844
-:1035D0000300AA7AC0A804001C6885A000021E6827
-:1035E0007F027F0C7C007E0C48706020FF824000D0
-:1035F000FB2A11204000186080A002009A78A4786D
-:1036000084A0BFFF05A2A67816608A78046084A013
-:10361000EFFF06607F0C7C007E00007086A0030038
-:103620004000152B7F007800182B7F007800662B58
-:1036300084A620004000662B887884A040004000CB
-:10364000662BA87801804000252BB87B84A33F001F
-:103650001B83C8002C2B008005A040004D2B1B8332
-:10366000C800352B01804000622B06A078109431F1
-:10367000B4787810F9317800662B84A600404000B9
-:103680004D2BB8781B80C800462B008084A03F00DB
-:10369000C000622BB4A6FFBF5A7ED879DC7A012025
-:1036A000010008A1C800562B91A20000D279DA7956
-:1036B000D67ADE7A781094311B78670078105E3005
-:1036C0007800F71B1B7867007800F71B1B786A00EF
-:1036D0007800F71B78109D2B1B7869007800F71B8A
-:1036E0007810892B1B7869007800F71B236802008B
-:1036F0007810912B1C698DA120001E69146884A08C
-:1037000000804000852B176805001B786900780051
-:10371000F71B0120050078009F2B01200C0078008A
-:103720009F2B0120060078009F2B01200D007800C0
-:103730009F2B0120090078009F2B012007009B7818
-:103740007F00AA78B5A608005A7E7C007E073F87D6
-:10375000BCA70F003B873B870387E0A00036B8A7D4
-:1037600020009A7FA47984A10F004000BF2B84A180
-:10377000F0FFA6781260046085A008000660388714
-:1037800038879A7FA47984A140004000CF2B84A180
-:10379000BFFFA6781660046085A0100006607F0752
-:1037A0007C009B781000AB780100AB780200AB780E
-:1037B0000300AA7A9B786000AB7804007C0031207B
-:1037C0000000292032009B781000AB780100AB7814
-:1037D0000300AB780100AA7DAA7E9B786000AB78DD
-:1037E00005007C007E15078084A0FF000380038015
-:1037F00080A020009A78A4798CA1F0FF01204635A2
-:10380000042082A0280040000D2C2120842C1920A7
-:103810001400A9200C007800132C2120902C1920D2
-:103820001900A9200D0011206400042484A0F0FFD9
-:1038300006A14000222C2084002310A27000222C1C
-:103840007800152C7F157C007E151120463514223A
-:1038500082A232004800382C40003C2C2120762CDB
-:1038600019201100A9200E001120320078004C2CE4
-:1038700082A228004000442C2120842C192014000E
-:10388000A9200C0078004A2C2120902C1920190026
-:10389000A9200D0011206400002202A540005C2C2C
-:1038A00048005C2C2084002310A27000592C780062
-:1038B0004C2C7F1506A07C007F1582A56400C800F3
-:1038C000652C087885A070000A78EC7884A0000345
-:1038D0004000732C04249EA00112C000732C012010
-:1038E00001217800742C042405A07C000112023010
-:1038F0000232034203440454045605660568067800
-:10390000067A070A070C070E0232024202520262CE
-:103910000272056605760578057A057C057E057FC9
-:1039200002220232024202520454046404740476F5
-:103930000478047A047C047E047F9B78100046A0FF
-:103940007C0084A7000F0C8084A7070003800380FD
-:103950000380038005A1E0A080367C00D879DC7A62
-:10396000D0781B80C800B52C008084A03F0008A13F
-:1039700091A200007C007E0F7920000109204035D3
-:103980009120008004217900C52CF72CCF2CCF2C5E
-:10399000CF2CCF2CCF2CCD2CCD2C7810A51B4B7839
-:1039A0000400487884A00400C000D12C4B780800A3
-:1039B000487884A00800C000D82CB06885A00040DA
-:1039C000B268587885A000405A78307884A080008A
-:1039D000C000F72C1800F72C186884A02000C00045
-:1039E000F52C1B78DD007800F72C1B78E400912083
-:1039F00001807F0F7C007E0C1068078084A00F0080
-:103A0000038003800380E0A00036046084A00A00E5
-:103A1000C0002E2D086194A100FF40002E2D8CA126
-:103A2000FF000120190006A140001D2D01203200D9
-:103A300006A14000212D7800252D092020007800C6
-:103A4000272D09203F007800272D1120000000219C
-:103A500005A20A60046085A0020006607F0C7C005D
-:103A60001B786A007800F71B1B7869007800F71B49
-:103A70001B7858007800F71B1B7855007800F71B5F
-:103A80001B78DD007800F71B1B78DC007800F71B43
-:103A90001B78E4007800F71B1B78E3007800F71B25
-:103AA0001B789E007800F71B1B789D007800F71BA1
-:103AB000A37001001B7846007800F71B7E00307869
-:103AC00084A0C000C000752D087884A0FDFF0A788E
-:103AD0000500050005000500EC7884A021004000E9
-:103AE000752D087885A002000A787F007C00087890
-:103AF00085A002000A787C00307884A04000C000D5
-:103B00007C2D9800852DAC787C00087884A0FDFF82
-:103B10000A780500050005000500EC7884A0210066
-:103B20004000942D9800922DAC787E00087885A0F6
-:103B300002000A787F007C0084A770004000A82D56
-:103B40007E0C602D682F78106B1B782D682C7F0CF5
-:103B500017680300587884A0003F1A682F68000097
-:103B60002B6800004B780800E47805A0D0001520F1
-:103B700084A0200040001520EC7884A003004000C1
-:103B80001520180015207800702B7E0C1068078017
-:103B900084A00F0003800380038080A00036602093
-:103BA00048204A7000604E70046052707F0C7C00A8
-:103BB0002000200000002000000020000000200065
-:103BC0000000200000002000000020000000200075
-:103BD0000000200000002000000020000000200065
-:103BE0000000200000002000000020000000200055
-:103BF000000020006200090014001400479814001F
-:103C00001400F598E798140014008000BF0000012C
-:103C10000204082080F80AA214000B300CA2140041
-:103C200000A238887E812A84A08406383988C22878
-:103C3000C39C05A864083BA80830C128C39C01A206
-:103C40000C30472861816A840080A48456183A8821
-:103C500008A8E228A09CF3A8640829A80C3001A8B1
-:103C60000830E128A09C0D2804A2C064A067C06FA2
-:103C700014183B882370768577860FA86E783E8867
-:103C80000CA82B2805A2A064A067C06F14183B885D
-:103C900023707685778601A83E886920C128C39C59
-:103CA00044200321A2208120DCA807A2140003A243
-:103CB0000080A884A48572189A843C88E21F01F6CB
-:103CC00008A26E856F8604070830A09C140002A22B
-:103CD0000080A4850930A884E21948F87481EB8635
-:103CE000EB852E87A9873F88E608F1A861F8E8A848
-:103CF00001F8140081F81600B285F0803295A2FA1E
-:103D0000E21D1400328521F21400E21DA884E0D6E1
-:103D1000E61F140006A265687F812A84C11D2388DE
-:103D2000160042600880FAA80080A48460812A847A
-:103D300021F00830A884C61DD720228816000080F4
-:103D400048281110FCA80830008000A0022811109B
-:103D5000FDA887A808303D281110FDA809A217006A
-:103D60000C300080A485E21DC1DA1400E0263A87F9
-:103D7000A2FAF219E21F14000BA214000DA27E8118
-:103D80002A84A08406381002CD9C040700007E120D
-:103D9000912000224920C72E0070047205A20C72E7
-:103DA00015A2087084A0FDFF05A24000D92E78005E
-:103DB000DE2E037000007F1200207C00007084A0C3
-:103DC0000100C0000C2F08710481C800EB2E781090
-:103DD000A82F7800E32E0C708CA07F0040000C2FE1
-:103DE00004700480C800032F147005A0C000FF2ECB
-:103DF000107005A04000032F02A1C800E32E077039
-:103E0000100078000C2FFF8A40000C2F78106B31C7
-:103E1000C000062F4000E32E7810562F03700000DC
-:103E20007F1200207C002464FF844000302F702C1F
-:103E30003920352F042768AE0C6830A6086829A5FC
-:103E400021844000302F3887042705A0C0001B2F95
-:103E5000987075A04000302F3920322F78001A2F2B
-:103E60007C000000040008000C0010001400180082
-:103E70001C0000007E129120002279200035712064
-:103E8000100007700A000770020003700000712024
-:103E9000200007700A00077002000370000049202C
-:103EA0000000B37800007F1200207C004920562FCC
-:103EB00004700480C800822F077012000871087017
-:103EC00006A1C0005E2F84A1300040006B2F86A0A9
-:103ED0003000C0005E2F007084A00100C000822F5F
-:103EE000087084A00C00C000802F0C7184A1000316
-:103EF000C000802F84A17F00C000562F7800822F41
-:103F0000176803000770120007700800047084A08F
-:103F10000800C000862F0770120008710481480055
-:103F20008B2FB378000003700000492000007C0054
-:103F30007E107E007E127E1591200022087178107E
-:103F4000A82F7F157F12912001807F007F107C00B9
-:103F50000472182108710C7084A00003C000EA2FBD
-:103F600084A10C00C000EA2F1382138213821382F3
-:103F700084A200010DA10B810B810F8184A1070098
-:103F80007900C22FCC2FDC2FEA2FDC2FFE2FFE2F43
-:103F9000EA2FFC2F7810A51B07700200FF8AC000D3
-:103FA000D52F492000007800D92F78106B31C00040
-:103FB000D52FB37800007C0007700200FF8AC00094
-:103FC000E32F7800E72F78106B31C000E32FB37830
-:103FD00000007C00077002007810562F7810BB2C70
-:103FE000146884A000804000F72F176802007C004E
-:103FF0007810A51B7810A51B781050301072147122
-:104000000C709CA07F00002800A311A289A10000D1
-:10401000B07805A040001030B3780000780033304D
-:10402000781050300427582C60AC0C63002222A377
-:10403000086300211BA3002405A340002930C80009
-:104040002930128410820A8389A10000602B780035
-:104050001030602B078ABAA7322F3DA7002C826848
-:10406000866F8E6C8A6B077012007810562F7C005A
-:104070003887042705A0C0004430986005A04000A0
-:104080004D3060203920322F518A40004C3008706A
-:1040900084A0C00086A0C0007C00512000007C00ED
-:1040A000508A3987042704A0C0005D303920382F9A
-:1040B000006064A0C0005D30602D7C007E127E0D2B
-:1040C000912000227F0D806860208468886B8C6C52
-:1040D0005780D4AAFF0084A0FF00B8A0322F087E2A
-:1040E000B5A60C00186884A0400040007930B5A641
-:1040F00001007E0F7920000158787F0F84A04000D6
-:104100004000883084A60100C0008830B5A60100B8
-:1041100007700400047084A00400C0008A3000709E
-:1041200005A0400095307810A51B002405A3C00011
-:104130009B307800D830582C042760AC046000A471
-:104140007E001A70006001A31E700920FD04042186
-:1041500086A0FD047F00C000C83084A0010040009C
-:10416000C83084A60100C000C83013700100177069
-:104170000000027607700100B3780100A0A40100DE
-:1041800099A30000046000A41A70006001A31E70CF
-:104190000C62002402A212700862002303A21670AF
-:1041A000027607700100602B781038307800DA3022
-:1041B00078106B31C000D8307F1200207C007E1256
-:1041C0007E0D912000227F0D07700400047084A0F2
-:1041D0000400C000E630037008007F1200207C005D
-:1041E0007E127E0D912000227F0D4920F030077055
-:1041F0000400047084A00400C000F930007005A021
-:10420000400004317810A51B087EB5A60C00186884
-:1042100084A0400040000E31B5A60100246805A02E
-:1042200040001A3150203920352F602D78106B3125
-:10423000C00016317F1200207C007E127E007E01BD
-:104240007E0D912000227F0D7F037F04087EB5A69E
-:104250000C00186884A0400040003031B5A6010071
-:1042600049201D31246855A040006831702D602E12
-:104270003920352F042768AE0C6822A408681BA3D8
-:1042800048005531518AC00047317810A51B388746
-:10429000042705A0C0003B31987075A06020400045
-:1042A00068313920322F78003A31228420841A83F1
-:1042B00099A300000C69002422A1086900231BA116
-:1042C000C80064317810A51B712020007800883068
-:1042D0007F1200207C00087084A0C00086A0C0006F
-:1042E00040009331042708AC04211E70088104218A
-:1042F0001A700881042116700881042112707E0F43
-:104300007920000158787F0F84A0400040008E3152
-:1043100084A60100C0008E31B5A6010002760770A8
-:104320000100781038307C007E127E007E0D9120D6
-:104330000022492094317F0D7F08087184A1C000BC
-:10434000C000AA31246805A04000BA317800DE2EF2
-:104350007800BA3108710481C800B2317810A82FF2
-:1043600078009D310770100008710481C800B431D5
-:104370007810A82F087086A00200C0009D31007040
-:1043800005A0C0009D3103700000492000007F128D
-:1043900000207C007E127E147E137E157E0D9120FF
-:1043A00000227F0D4920CA3180AD1000A020992045
-:1043B00031000C7084A07F00266807700800077029
-:1043C0000200037001004000E8310080AC80A5537A
-:1043D00007700400047084A00400C000EA31492082
-:1043E0000000037000007F157F137F147F120020F0
-:1043F0007C007E127E007E0D912000227F0D4920E0
-:10440000F931806860208468886B8C6C5780D4AAEE
-:10441000FF0084A0FF00B8A0322F087EB5A60400DC
-:1044200007700400047084A00400C0001232582CED
-:10443000042760AC046000A41A70006001A31E7021
-:1044400013700100177000000276077001007F00F2
-:104450000780092031000A20A0002C320871077063
-:1044600002000C81C8002C320C81480039327800DF
-:10447000EA2FA0A4010099A300008A6B8E6C07703C
-:10448000040049200000037000007F1200207C001F
-:10449000A920100006A0048086808E81C8005132B9
-:1044A00000A2F0004C3286808E817C007E15A9200F
-:1044B000100005A0400077321AA1C800773213829D
-:1044C0008D8148006A321AA1C8006B32F0005F3259
-:1044D00078006F321AA108231082F0005F327E004C
-:1044E000003284A0FFF780207F007F157C007E00D3
-:1044F000003285A0000878007332E000BF329120BE
-:104500000060207801802278C000B93224782278B7
-:104510009120008069204035006884A00700400099
-:10452000A13286A002004000A13230680DA04000F8
-:10453000A132042105A04000A13201800A204000E0
-:104540006F3361208036A9208000346005A04000D0
-:10455000B33201803660C000B332106005A0400065
-:10456000B3327810191AE0AC10007000B93278003C
-:10457000A5327810D4327810C2327810F9329120F6
-:1045800001807C003C7801803E78C000D3324078C6
-:104590003E78487805A04000D33201804A78C000B8
-:1045A000D3327810191A7C00347801803678C00034
-:1045B000F8323878367891200080447805A0C00021
-:1045C000E332012001010180467880A0803E402036
-:1045D000042065A04000F832206005A04000F432BD
-:1045E00001802260400028330060402C7800E932CE
-:1045F0007C00287801802A78C00027332C782A781C
-:10460000307805A0C0000633012080000180327898
-:10461000038003800380038090A0803698A202006C
-:10462000042384A008004000273390A2090004223C
-:1046300005A040001F3301801220C000273304234F
-:1046400084A0F7FF85A080001A207810191A7C003A
-:1046500069204035006805A0400032333C6806AC54
-:1046600040006F3317600600B06084A0003F1A60FE
-:104670001C6084A0FF0085A060001E6000604220D6
-:104680001067B66F78109216186805A040004A337C
-:1046900001801A68086884A0EFFF0A68106801802A
-:1046A000D00054337810A51B12682F6000002B60D7
-:1046B0000000682C7810DD176920403501200600C5
-:1046C000A268447984A10001C0006A33BA6901205C
-:1046D0000400A2687810141A912001807C0009203F
-:1046E0004F3564216920000178106B1B17600600AC
-:1046F000586884A0003F1A601C6084A0FF0085A059
-:1047000048001E602F6000002B600000306884A00D
-:1047100040004000AB334B680400A92014004868F7
-:1047200084A00400400098337000983378008F33E1
-:104730004B680900A9201400486884A001004000CB
-:10474000A5337000A53378009C33A920FA007000CF
-:10475000AB337800A733086884A0FDFF0A681B68A4
-:104760004600092068350B2007004C784A789120D4
-:1047700001807C0079200035781003347810CB3329
-:104780007810E0337810F533337800004778000074
-:104790004B7800007C0019200A00112046350422C5
-:1047A00086A032004000DD3319200C00042286A0D0
-:1047B0003C004000DD33192008002A7B2E7B7C0062
-:1047C0001920300011204635042286A03200400016
-:1047D000F23319203900042286A03C004000F23355
-:1047E00019202700367B3A7B7C0019200D00112010
-:1047F0004635042286A03C004000003419200A00FF
-:104800003E7B427B7C001920AF2F112046350422CD
-:1048100086A032004000153419207139042286A088
-:104820003C004000153419202626227B267B7C0084
-:02483000A7924D
-:00000001FF
-/* Version 1.31.00 ISP1000 Initiator RISC firmware */
diff --git a/firmware/qlogic/sd7220.fw.ihex b/firmware/qlogic/sd7220.fw.ihex
deleted file mode 100644
index a33636319112..000000000000
--- a/firmware/qlogic/sd7220.fw.ihex
+++ /dev/null
@@ -1,513 +0,0 @@
-:10000000020A29020A87E5E630E6047F0180027FC2
-:1000100000E5E230E4047E0180027E00EE5F6008CD
-:1000200053F9F7E4F5FE80087F0A121731120EA289
-:1000300075FC08E4F5FDE5E720E70343F908220035
-:1000400001201100042000755101E4F552F553F52B
-:1000500052F57E7F04020438C2360552E552D3942D
-:100060000C4005755201D23690070C7407F0A3744A
-:10007000FFF0E4F50CA3F0900714F0A3F0750B204B
-:10008000F509E4F508E508D39430400302040412AE
-:100090000006150BE50870047F0180027F00E5096A
-:1000A00070047E0180027E00EE5F6005121871D23E
-:1000B0003553E1F7E5084509FFE50B25E025E02488
-:1000C00083F582E43407F583EFF085E220E552D32F
-:1000D0009401400D1219F3E054A064407003020330
-:1000E000FB53F9F8909470E4F0E0F510AF09121E9C
-:1000F000B3AF08EF4408F582758380E0F529EF443B
-:1001000007121A3CF5225440D39400401EE52954AE
-:10011000F070211219F3E04480F0E52254306508B4
-:1001200070091219F3E054BFF080091219F37440FA
-:10013000F00203FB121A127583AE74FFF0AF087E53
-:1001400000EF4407F582E0FDE50B25E025E0248182
-:10015000F582E43407F583EDF090070EE004F0EF4C
-:100160004407F582758398E0F528121A23400C1293
-:1001700019F3E04401121A320203F6AF087E00744C
-:1001800080CDEFCD8D82F583E030E00A1219F3E0E7
-:100190004420F00203FB1219F3E054DFF0EE44AE0A
-:1001A000121A4330E4030203FB749E121A0520E086
-:1001B000030203FB8F828E83E020E0030203FB1225
-:1001C00019F3E04410F0E5E320E708E508121A3AD5
-:1001D0004404F0AF087E00EF121A3A20E2341219FC
-:1001E000F3E04408F0E5E430E6047D0180027D00A0
-:1001F000E57EC3940450047C0180027C00EC4D60D9
-:1002000005C2350203FBEE44D2121A434440F00209
-:1002100003FB1219F3E054F7F0121A127583D2E0BF
-:1002200054BFF0900714E004F0E57E7003757E0182
-:10023000AF087E00121A2340121219F3E044011293
-:1002400019F2E05402121A320203FB1219F3E044CD
-:10025000021219F2E054FEF0C235EE448A8F82F5A4
-:1002600083E0F517548F4440F07490FCE508440790
-:10027000FDF5828C83E0543F900702F0E054C08D7E
-:10028000828C83F07492121A05900703121A197463
-:1002900082121A05900704121A1974B4121A0590E2
-:1002A0000705121A197494FEE5084406121A0AF595
-:1002B0001030E004D2378002C237E510547F8F82BD
-:1002C0008E83F0304430121A035480D394004004DB
-:1002D000D2398002C2398F828E83E04480F0121AB4
-:1002E000035440D394004004D23A8002C23A8F8231
-:1002F0008E83E04440F07492FEE5084406121A0A28
-:1003000030E704D2388002C2388F828E83E0547F77
-:10031000F0121E46E4F50A20030280033043031264
-:1003200019952002028003304203120C8F303006F0
-:10033000121995120C8F120D471219F3E054FBF0AD
-:10034000E50AC39401404643E1081219F3E044046E
-:10035000F0E5E420E72A121A127583D2E05408D39C
-:10036000940040047F0180027F00E50AC3940140AD
-:10037000047E0180027E00EF5E6005121DD78017AB
-:10038000121A127583D2E04408F00203FB121A120B
-:100390007583D2E054F7F0121E467F0812173174AD
-:1003A0008EFE121A128E83E0F51054FEF0E5104412
-:1003B00001FFE508FDED4407F582EFF0E51054FE7E
-:1003C000FFED4407F582EF121A11758386E04410A1
-:1003D000121A11E04410F01219F3E054FD4401FF29
-:1003E0001219F3EF121A3230320CE5084408F58284
-:1003F0007583827405F0AF0B1218D774102508F5B9
-:10040000080200850509E509D3940750030200821C
-:10041000E57ED3940040047F0180027F00E57EC327
-:1004200094FA50047E0180027E00EE5F6002057E39
-:1004300030350B43E1017F0912173102005853E1B7
-:10044000FE0200588E6A8F6B8C6C8D6D756E017517
-:100450006F01757001E4F573F574F57590072FF071
-:10046000F53CF53EF546F547F53DF53FF56FE56F93
-:10047000700FE56B456A12072A758380743AF08025
-:100480000912072A758380741AF0E4F56EC3743F6D
-:10049000956EFF120865758382EFF0121A4D1208EF
-:1004A000C6E533F01208FA1208B140E1E56F700BAF
-:1004B00012072A7583807436F0800912072A758323
-:1004C000807416F0756E0112072A7583B4E56EF01C
-:1004D000121A4D743F256EF582E43400F583E5333E
-:1004E000F074BF256EF582E434001208B140D8E400
-:1004F000F570F546F547F56E1208FAF583E0FE1241
-:1005000008C6E07C002400FFEC3EFEAD3BD3EF9D2F
-:10051000EE9C50047B0180027B00E57070047A0140
-:1005200080027A00EB5A6006856E46757001D3EF43
-:100530009DEE9C50047F0180027F00E570B40104B1
-:100540007E0180027E00EF5E6003856E47056EE5EA
-:100550006E647F70A3E5466005E547B47E0385467B
-:1005600047E56F7008854676854777800EC3747FB0
-:100570009546F578C3747F9547F579E56F7037E553
-:10058000466547700C757301757401F53CF53D8047
-:1005900035E4F54EC3E5479546F53CC313F57125A3
-:1005A00046F572C3943F4005E4F53D8040C3743F77
-:1005B0009572F53D8037E5466547700F7573017597
-:1005C0007501F53EF53F754E018022E4F54EC3E519
-:1005D000479546F53EC313F5712546F572D3943F12
-:1005E0005005E4F53F8006E57224C1F53F056FE54F
-:1005F0006FC39402500302046EE56D456C70028077
-:1006000004E574457590072FF07F01E53E6004E531
-:100610003C7014E4F53CF53DF53EF53F1208D27010
-:1006200004F00206A4807AE53CC3953E4007E53C11
-:10063000953EFF8006C3E53E953CFFE576D3957970
-:10064000400585767A800385797AE577C395785079
-:100650000585777B800385787BE57BD3957A403071
-:10066000E57B957AF53CF53EC3E57B957A900719D5
-:10067000F0E53CC313F571257AF572C3943F40054C
-:10068000E4F53D801FC3743F9572F53DF53F80143E
-:10069000E4F53CF53E900719F01208D27003F080A3
-:1006A000037401F01208657583D0E0540FFEAD3C71
-:1006B00070027E07BE0F027E80EEFBEFD39B74803C
-:1006C000F898401FE4F53CF53E1208D27003F08024
-:1006D000127401F0E508FBEB4407F5827583D2E064
-:1006E0004410F0E508FBEB4409F58275839EEDF0BC
-:1006F000EB4407F5827583CAEDF01208657583CC6B
-:10070000EFF022E5084407F5827583BCE054F0F071
-:10071000E5084407F5827583BEE054F0F0E508442F
-:1007200007F5827583C0E054F0F0E5084407F582D0
-:1007300022F0900728E0FEA3E0F5828E8322854216
-:100740004285414185404074C02FF58274023EF5D8
-:1007500083E542F074E02FF58274023EF58322E5D2
-:100760004229FDE433FCE53CC39DEC6480F87480D1
-:100770009822F583E0900722541FFDE0FAA3E0F5EC
-:10078000828A83EDF022900722E0FCA3E0F5828CC0
-:100790008322900724FFED4407CFF0A3EFF02285DA
-:1007A0003838853939853A3A74C02FF58274023E5B
-:1007B000F58322900726FFED4407CFF0A3EFF02248
-:1007C000F074A02FF58274023EF5832274C02511C7
-:1007D000F582E43401F5832274002511F582E434B6
-:1007E00002F5832274602511F582E43403F5832237
-:1007F00074802511F582E43403F5832274E0251119
-:10080000F582E43403F5832274402511F582E43443
-:1008100006F5832274802FF58274023EF58322AFA1
-:10082000087E00EF4407F58222F583E5824407F550
-:1008300082E540F02274402511F582E43402F5830C
-:100840002274C02511F582E43403F5832274002557
-:1008500011F582E43406F5832274202511F582E433
-:100860003406F58322E508FDED4407F58222E541D3
-:10087000F0E56564014564227E00FB7A00FD7C00A2
-:100880002274202511F582E434022274A02511F58A
-:1008900082E4340322853E42853F418F4022853CDD
-:1008A00042853D418F402275453F900720E4F0A3EB
-:1008B00022F583E532F0056EE56EC3944022F0E543
-:1008C000084406F582227400256EF582E43400F5B2
-:1008D0008322E56D456C90072F22E4F9E53CD39522
-:1008E0003E2274802EF582E43402F583E02274A067
-:1008F0002EF582E43402F583E0227480256EF582C1
-:10090000E43400222542FDE433FC22854242854145
-:100910004185404022ED4C60030209E5EF4E7037FF
-:10092000900726120789E0FD1207CCEDF09007280A
-:10093000120789E0FD1207D8EDF0120786E0541F78
-:10094000FD120881F583EDF0900724120789E05429
-:100950001FFD120835EDF0EF64044E703790072646
-:10096000120789E0FD1207E4EDF0900728120789CD
-:10097000E0FD1207F0EDF0120786E0541FFD1208AB
-:100980008BF583EDF0900724120789E0541FFD12C8
-:100990000841EDF0EF64014E70047D0180027D009E
-:1009A000EF64024E70047F0180027F00EF4D60789B
-:1009B000900726120735E0FF1207FCEF120731E01F
-:1009C000FF120808EFF0900722120735E0541FFFCE
-:1009D00012084DEFF0900724120735E0541FFF1264
-:1009E0000859EFF0221207CCE4F01207D8E4F01215
-:1009F0000881F583E4F01208357414F01207E4E47A
-:100A0000F01207F0E4F012088BF583E4F0120841CD
-:100A10007414F01207FCE4F0120808E4F012084D18
-:100A2000E4F01208597414F02253F9F775FC10E43D
-:100A3000F5FD75FE30F5FFE5E720E70343F908E52E
-:100A4000E620E70B78FFE4F6D8FD53E6FE80097850
-:100A500008E4F6D8FD53E6FE758180E4F5A8D2A837
-:100A6000C2A9D2AFE5E220E50520E602800343E11A
-:100A700002E5E220E00E9000007F007E08E4F0A393
-:100A8000DFFCDEFA020ADB43FA01C0E0C0F0C083FB
-:100A9000C082C0D0121CE7D0D0D082D083D0F0D09A
-:100AA000E053FAFE32021B55E493A3F8E493A3F655
-:100AB00008DFF98029E493A3F85407240CC8C33352
-:100AC000C4540F4420C8834004F456800146F6DF26
-:100AD000E4800B010204081020408090003FE47E77
-:100AE000019360C1A3FF543F30E509541FFEE49316
-:100AF000A360010ECF54C025E060AD40B880FE8CED
-:100B0000648D658A668B67E4F569EF4E7003021D9C
-:100B100055E4F568E5674566703212072A758390DB
-:100B2000E41207297583C2E41207297583C4E4120D
-:100B30000870702912072A758392E41207297583B9
-:100B4000C6E41207297583C8E4F0801190072612C5
-:100B50000735E41208707005120732E4F0121D55D3
-:100B6000121EBFE5674566703312072A758390E54C
-:100B7000411207297583C2E5411207297583C41202
-:100B8000086E702912072A758392E54012072975AD
-:100B900083C6E5401207297583C8800E9007261288
-:100BA000073512086E7006120732E540F0AF697E15
-:100BB00000AD67AC6612044412072A7583CAE0D3FD
-:100BC0009400500C0568E568C394055003020B14AB
-:100BD000228C608D611208DA7420400D2FF582742A
-:100BE000033EF583E53EF0800B2FF58274033EF55E
-:100BF00083E53CF0E53CD3953E403CE561456070C3
-:100C000010E9120904E53E120768403B120895807E
-:100C100018E53EC39538401D853E38E53E600585A4
-:100C20003F3980038539398F3A120814E53E12079F
-:100C3000C0E53FF0228043E5614560701912075F0F
-:100C4000400512089E802712090B120814E5421273
-:100C500007C0E541F022E53CC39538401D853C388E
-:100C6000E53C6005853D3980038539398F3A1208A6
-:100C700014E53C1207C0E53DF02285383885393946
-:100C8000853A3A120814E5381207C0E539F0227F98
-:100C900006121731121D23120E04120E33E0440AFD
-:100CA000F0748EFE120E04120E0BEFF0E52830E504
-:100CB00003D38001C3400575142080037514081206
-:100CC0000E0475838AE514F0B4FF05751280800662
-:100CD000E514C313F512E4F516F57F121936121355
-:100CE000A3E50AC3940150090516E516C394144000
-:100CF000EAE5E420E728120E047583D2E05408D315
-:100D0000940040047F0180027F00E50AC394014003
-:100D1000047E0180027E00EF5E6003121DD7E57F36
-:100D2000C394114014120E047583D2E04480F0E5A0
-:100D3000E420E70F121DD7800A120E047583D2E05B
-:100D4000547FF0121D2322748A850882F583E517EB
-:100D5000F0120E3AE4F0900702E0120E177583903D
-:100D6000EFF07492FEE5084407FFF5828E83E054AD
-:100D7000C0FD900703E0543F4D8F828E83F09007B3
-:100D800004E0120E17758382EFF0900705E0FFED87
-:100D90004407F5827583B4EF120E03758380E05427
-:100DA000BFF030370A120E91758394E04480F03022
-:100DB000380A120E91758392E04480F0E52830E401
-:100DC0001A20390A120E04758388E0547FF0203A05
-:100DD0000A120E04758388E054BFF0748CFE120E64
-:100DE000048E83E0540F120E03758386E054BFF027
-:100DF000E5084406120DFD75838AE4F022F582753C
-:100E00008382E4F0E5084407F582228E83E0F51042
-:100E100054FEF0E5104401FFE508FDED4407F582BE
-:100E200022E515C45407FFE508FDED4408F5827579
-:100E3000838222758380E04440F0E5084408F5820F
-:100E400075838A22E51625E025E024AFF582E43497
-:100E50001AF583E493F50D2243E11043E18053E159
-:100E6000FD85E11022E51625E025E024B2F582E4B7
-:100E7000341AF583E49322855582855483E515F071
-:100E800022E5E25420D3940022E5E25440D39400BA
-:100E900022E5084406F58222FDE508FBEB4407F550
-:100EA000822253F9F775FE3022EF4E70261207CCDE
-:100EB000E0FD90072612077B1207D8E0FD90072877
-:100EC00012077B120881120772120835E09007247E
-:100ED000120778EF64044E70291207E4E0FD9007D2
-:100EE0002612077B1207F0E0FD90072812077B12FD
-:100EF000088B120772120841E0541FFD900724125C
-:100F0000077BEF64014E70047D0180027D00EF6479
-:100F1000024E70047F0180027F00EF4D60351207A2
-:100F2000FCE0FF900726120789EFF0120808E0FFA7
-:100F3000900728120789EFF012084DE0541FFF12A6
-:100F40000786EFF0120859E0541FFF90072412079C
-:100F500089EFF022E4F553120E8140047F018002F4
-:100F60007F00120E8940047E0180027E00EE4F70E9
-:100F700003020FF685E11043E10253E10F85E11012
-:100F8000E4F551E5E3543FF552120E89401DAD5290
-:100F9000AF51121118EF600885E11043E140800B5A
-:100FA00053E1BF120E5812000680FBE5E3543FF5F3
-:100FB00051E5E4543FF552120E81401DAD52AF5140
-:100FC000121118EF600885E11043E120800B53E116
-:100FD000DF120E5812000680FB120E8140047F01C2
-:100FE00080027F00120E8940047E0180027E00EEA6
-:100FF0004F6003120E5B22120E21EFF012109122AD
-:1010000002110002104002109000000000000000D9
-:1010100001200120E4F5571216BD121644E4121007
-:10102000561214B7900726120735E4120731E4F080
-:101030001210561214B7900726120735E541120711
-:1010400031E540F0AF577E00AD567C00120444AF4E
-:10105000567E000211EEFF900720A3E0FDE4F55656
-:10106000F540FEFCAB56FA1211517F0F7D18E4F5E6
-:1010700056F540FEFCAB56FA121541AF567E0012F3
-:101080001AFFE4FFF5567D1FF540FEFCAB56FA2231
-:1010900022E4F555E508FD74A0F556ED4407F55733
-:1010A000E52830E503D38001C340057F28EF8004A5
-:1010B0007F14EFC313F554E4F9120E1875838EE014
-:1010C000F510CEEFCEEED394004026E51054FE127C
-:1010D0000E9875838EEDF0E5104401FDEB4407F5A5
-:1010E00082EDF0855782855683E030E301091E804A
-:1010F000D4C234E9C395544002D2342202000622FD
-:10110000303011901000E493F510901010E493F536
-:101110001012109012115022E4FCC3ED9FFAEFF56B
-:101120008375820079FFE493CC6CCCA3D9F8DAF60E
-:10113000E5E230E4028CE5ED24FFFFEF7582FFF578
-:1011400083E4936C70037F01227F00222211000050
-:10115000228E588F598C5A8D5B8A5C8B5D755E012F
-:10116000E4F55FF560F56212072A7583D0E0FFC4ED
-:10117000540FF561121EA585595ED3E55E955BE5BA
-:101180005A12076B504B1207037583BCE0455E1281
-:1011900007297583BEE0455E1207297583C0E045C7
-:1011A0005EF0AF5FE560120878120AFFAF627E0062
-:1011B000AD5DAC5C120444E561AF5E7E00B4030536
-:1011C000121E218007AD5DAC5C121317055E021183
-:1011D0007A1207037583BCE045401207297583BE68
-:1011E000E045401207297583C0E04540F0228E5843
-:1011F0008F59755A017901755B01E4FB12072A7555
-:1012000083AEE0541AFF120865E0C4135407FEEFE2
-:10121000700CEE6535700790072FE0B4010DAF3507
-:101220007E00120EA9CFEBCF021E60E55964024585
-:101230005870047F0180027F00E559455870047E94
-:101240000180027E00EE4F602385414985404BE5D9
-:10125000594558702CAF5AFECDE9CDFCAB59AA5870
-:10126000120AFFAF5B7E00121E608015AF5B7E002E
-:10127000121E60900726120735E549120731E54B2B
-:10128000F0E4FDAF35FEFC120915228C648D651269
-:1012900008DA403CE56545647010120904C3E53E78
-:1012A000120769403B1208958018E53EC395384007
-:1012B0001D853E38E53E6005853F39800385393917
-:1012C0008F3A1207A8E53E120753E53FF022803B14
-:1012D000E5654564701112075F400512089E801F86
-:1012E00012073EE541F022E53CC39538401D853CA0
-:1012F00038E53C6005853D3980038539398F3A12E0
-:1013000007A8E53C120753E53DF02212079FE53898
-:10131000120753E539F0228C638D641208DA403CE1
-:10132000E56445637010120904C3E53E1207694085
-:101330003B1208958018E53EC39538401D853E3820
-:10134000E53E6005853F3980038539398F3A1207BC
-:10135000A8E53E120753E53FF022803BE564456374
-:10136000701112075F400512089E801F12073EE5AC
-:1013700041F022E53CC39538401D853C38E53C6092
-:1013800005853D3980038539398F3A1207A8E53C38
-:10139000120753E53DF02212079FE538120753E587
-:1013A00039F022E50DFEE5088E544405F555751516
-:1013B0000FF582120E7A1217A320310575150380DE
-:1013C0000375150BE50AC39401503812142020311F
-:1013D0000605150515800415151515E50AC39401B4
-:1013E0005021121420203104051580021515E50A3C
-:1013F000C39401500E120E771217A3203105051564
-:10140000120E77E515B408047F0180027F00E51510
-:10141000B407047E0180027E00EE4F6002057F2249
-:10142000855582855483E515F01217A32212072AE9
-:101430007583AE74FF120729E0541AF534E0C41323
-:101440005407F53524FE602424FE603C24047063B8
-:1014500075312DE508FD74B612079274BC90072211
-:1014600012079574901207B37492803C75313AE577
-:1014700008FD74BA12079274C09007221207B6745E
-:10148000C41207B374C88020753135E508FD74B8FF
-:1014900012079274BEFFED4407900722CFF0A3EF2E
-:1014A000F074C21207B374C6FFED4407A3CFF0A3D4
-:1014B000EFF022753401228E588F598C5A8D5B8A39
-:1014C0005C8B5D755E01E4F55F121EA585595ED3E8
-:1014D000E55E955BE55A12076B5057E55D455C701C
-:1014E0003012072A758392E55E1207297583C6E5D7
-:1014F0005E1207297583C8E55E120729758390E59A
-:101500005E1207297583C2E55E1207297583C480C0
-:1015100003120732E55EF0AF5F7E00AD5DAC5C129A
-:101520000444AF5E7E00AD5DAC5C120BD1055E0283
-:1015300014CFAB5DAA5CAD5BAC5AAF59AE58021B81
-:10154000FB8C5C8D5D8A5E8B5F756001E4F561F5F7
-:1015500062F563121EA58F60D3E560955DE55C12B0
-:10156000076B5061E55F455E702712072A7583B6E9
-:10157000E5601207297583B8E5601207297583BAFB
-:10158000E560F0AF617E00E56212087A120AFF8022
-:1015900019900724120735E56012072975838EE438
-:1015A0001207297401120729E4F0AF637E00AD5FD2
-:1015B000AC5E120444AF607E00AD5FAC5E12128B75
-:1015C00005600215582290114DE49390072EF012F9
-:1015D000081F7583AEE0541AF5347067EF4407F5C1
-:1015E000827583CEE0FF1313135407F536540FD3DF
-:1015F0009400400612142D121BA9E536540F24FE48
-:10160000600C14600C146019240370378010021EE3
-:1016100091121E9112072A7583CEE054EFF0021D3D
-:10162000AE121014E4F555121D850555E555C39409
-:101630000540F412072A7583CEE054C7120729E04B
-:101640004408F022E4F558F559AF08EF4407F58255
-:101650007583D0E0FDC4540FF55AEF4407F5827549
-:1016600083807401F0120821758382E545F0EF4410
-:1016700007F58275838A74FFF0121A4D12072A75D6
-:1016800083BCE054EF1207297583BEE054EF1207C4
-:10169000297583C0E054EF1207297583BCE044101C
-:1016A0001207297583BEE044101207297583C0E034
-:1016B0004410F0AF58E559120878020AFFE4F558D3
-:1016C0007D01F559AF35FEFC12091512072A758305
-:1016D000B674101207297583B87410120729758320
-:1016E000BA74101207297583BC7410120729758308
-:1016F000BE74101207297583C074101207297583F0
-:1017000090E41207297583C2E41207297583C4E4A3
-:10171000120729758392E41207297583C6E412071C
-:10172000297583C8E4F0AF58FEE55912087A020A19
-:10173000FFE5E230E46CE5E754C064407064E5091D
-:10174000C45430FEE50825E025E054C04EFEEF54B9
-:101750003F4EFDE52BAE2A7802C333CE33CED8F907
-:10176000F5828E83EDF0E52BAE2A7802C333CE33BB
-:10177000CED8F9FFF5828E83A3E5FEF08F828E83AB
-:10178000A3A3E5FDF08F828E83A3A3A3E5FCF0C3A2
-:10179000E52B94FAE52A94005008052BE52B7002FE
-:1017A000052A22E4FFE4F558F556F5577482FC1239
-:1017B0000E048C83E0F510547FF0E5104480120E87
-:1017C00098EDF07E0A120E047583A0E020E026DE7C
-:1017D000F40557E55770020556E5142401FDE4337E
-:1017E000FCD3E5579DE5569C40D9E50A942050026C
-:1017F000050A43E108C231120E047583A6E05512B2
-:1018000065127003D23122C23122900726E0FAA37A
-:10181000E0F5828A83E0F541E539C395414026E54C
-:10182000399541C39FEE12076B40047C0180027C16
-:1018300000E541643F60047B0180027B00EC5B605B
-:101840002905418028C3E5419539C39FEE12076BF6
-:1018500040047F0180027F00E54160047E01800238
-:101860007E00EF5E600415418003853941853A4072
-:1018700022E5E230E460E5E130E25BE50970047FF7
-:101880000180027F00E50870047E0180027E00EE88
-:101890005F604353F9F8E5E230E43BE5E130E22EE6
-:1018A00043FA0253FAFBE4F510909470E510F0E56A
-:1018B000E130E2E7909470E06510600343FA0405BC
-:1018C00010909470E510F070E612000680E153FA73
-:1018D000FD53FAFB80C0228F54120006E5E130E090
-:1018E000047F0180027F00E57ED3940540047E01E1
-:1018F00080027E00EE4F603D855411E5E220E1322A
-:1019000074CE121A0530E7047D0180027D008F82BB
-:101910008E83E030E6047F0180027F00EF5D70156A
-:101920001215C674CE121A0530E607E04480F04363
-:10193000F98012187122120E44E51625E025E024E4
-:10194000B0F582E4341AF583E493F50FE51625E04B
-:1019500025E024B1F582E4341AF583E493F50E1200
-:101960000E65F510E50F54F0120E1775838CEFF02D
-:10197000E50F30E00C120E04758386E04440F080E1
-:101980000A120E04758386E054BFF0120E9175831F
-:1019900082E50EF0227F05121731120E04120E336B
-:1019A0007402F0748EFE120E04120E0BEFF0751519
-:1019B00070120FF72034057515108003751550123D
-:1019C0000FF72034047410800274F02515F51512F9
-:1019D0000E21EFF0121091203417E5156430600CE1
-:1019E00074102515F515B48003E4F515120E21EFDA
-:1019F000F022F0E50B25E025E02482F582E43407AF
-:101A0000F583227488FEE5084407FFF5828E83E0A3
-:101A100022F0E5084407F58222F0E054C08F828E60
-:101A200083F022EF4407F582758386E05410D39447
-:101A30000022F0900715E004F0224406F582758339
-:101A40009EE022FEEF4407F5828E83E022E49007B9
-:101A50002AF0A3F012072A758382E0547F12072927
-:101A6000E04480F01210FC12081F7583A0E020E013
-:101A70001A90072BE004F0700690072AE004F0901B
-:101A8000072AE0B410E1A3E0B400DCEE44A6FCEFCA
-:101A90004407F5828C83E0F532EE44A8FEEF44075C
-:101AA000F5828E83E0F5332201201100042000909E
-:101AB00000200F9200210F9400220F9600230F9810
-:101AC00000240F9A00250F9C00260F9E00270FA0D0
-:101AD000012001A2012101A4012201A6012301A8E4
-:101AE000012401AA012501AC012601AE012701B0A4
-:101AF000012801B400280FB640280FB8612801CB97
-:101B0000EFCBCAEECA7F01E4FDEB4A7024E508F58D
-:101B10008274B6120829E508F58274B8120829E51E
-:101B200008F58274BA1208297E007C00120AFF8030
-:101B300012900726120735E541F090072412073569
-:101B4000E540F012072A75838EE41207297401120A
-:101B50000729E4F022E4F526F52753E1FEF52A757E
-:101B60002B01F5087F0112173130301C901AA9E4BF
-:101B700093F510901FF9E493F510900041E493F56C
-:101B800010901ECAE493F5107F02121731120F5401
-:101B90007F03121731120006E5E230E70912100048
-:101BA00030300312110002004712081F7583D0E085
-:101BB000C4540FFD7543017544FF1208AA7404F064
-:101BC000753B01ED14600C14600B14600F2403705E
-:101BD0000B800980001208A704F080061208A77481
-:101BE00004F0EE4482FEEF4407F5828E83E5451251
-:101BF00008BE758382E531F002114C8E608F611250
-:101C00001EA5E4FFCEEDCEEED39561E56012076B25
-:101C1000403974202EF582E43403F583E07003FF2D
-:101C200080261208E2FDC39F401ECFEDCFEB4A7025
-:101C30000B8D421208EEF5418E40800C1208E2F541
-:101C4000381208EEF5398E3A1E80BC22755801E52F
-:101C500035700C1207CCE0F54A1207D8E0F54CE5D8
-:101C600035B4040C1207E4E0F54A1207F0E0F54C35
-:101C7000E535B401047F0180027F00E535B402043C
-:101C80007E0180027E00EE4F600C1207FCE0F54AF8
-:101C9000120808E0F54C85414985404B22755B01EF
-:101CA000900724120735E0541FFFD3940250048F8D
-:101CB000588005EF24FEF558EFC394184005755978
-:101CC000188004EF04F55985435AAF587E00AD598A
-:101CD0007C00AB5B7A00121541AF5A7E0012180AE5
-:101CE000AF5B7E00021AFFE5E230E70E121003C27E
-:101CF000303030031210FF203328E5E730E70512BB
-:101D00000EA2800DE5FEC394205006120EA243F9E8
-:101D100008E5F230E70353F97FE5F15470D39400FE
-:101D200050D822120E04758380E4F0E508440712AF
-:101D30000DFD758384120E02758386120E02758363
-:101D40008CE054F3120E0375838E120E0275839489
-:101D5000E054FBF02212072A75838EE412072974DF
-:101D600001120729E41208BE75838CE04420120892
-:101D7000BEE054DFF07484850882F583E0547FF080
-:101D8000E04480F022755601E4FDF557AF35FEFCC6
-:101D9000120915121C9D121E7A121C4CAF577E00A0
-:101DA000AD567C00120444AF567E000211EE75560B
-:101DB00001E4FDF557AF35FEFC120915121C9D120A
-:101DC0001E7A121C4CAF577E00AD567C00120444A4
-:101DD000AF567E000211EEE4F516120E44FEE50841
-:101DE0004405FF120E658F828E83F00516E516C33B
-:101DF000941440E6E508120E2BE4F022E4F558F5C1
-:101E000059F55AFFFEAD58FC1209157F047E00AD4E
-:101E1000587C001209157F027E00AD587C00020933
-:101E200015E53C253EFCE5422400FBE433FAECC317
-:101E30009BEA12076B400B8C42E53D253FF5418F35
-:101E4000402212090B227484F5188508198519821D
-:101E5000851883E0547FF0E04480F0E04480F02275
-:101E6000EF4E700B12072A7583D2E054DFF0221276
-:101E7000072A7583D2E04420F02275580190072686
-:101E8000120735E0543FF541120732E0543FF54068
-:101E900022755602E4F557121DFCAF577E00AD5671
-:101EA0007C00020444E4F542F541F540F538F5398B
-:101EB000F53A22EF5407FFE5F954F84FF5F9227F80
-:101EC00001E4FE0F0EBEFFFB2201200001042000F2
-:101ED0000000000000000000000000000000000002
-:101EE00000000000000000000000000000000000F2
-:101EF00000000000000000000000000000000000E2
-:101F000000000000000000000000000000000000D1
-:101F100000000000000000000000000000000000C1
-:101F200000000000000000000000000000000000B1
-:101F300000000000000000000000000000000000A1
-:101F40000000000000000000000000000000000091
-:101F50000000000000000000000000000000000081
-:101F60000000000000000000000000000000000071
-:101F70000000000000000000000000000000000061
-:101F80000000000000000000000000000000000051
-:101F90000000000000000000000000000000000041
-:101FA0000000000000000000000000000000000031
-:101FB0000000000000000000000000000000000021
-:101FC0000000000000000000000000000000000011
-:101FD0000000000000000000000000000000000001
-:101FE00000000000000000000000000000000000F1
-:101FF000000000000000000001201100042000810A
-:00000001FF
diff --git a/firmware/r128/r128_cce.bin.ihex b/firmware/r128/r128_cce.bin.ihex
deleted file mode 100644
index 4831315d7b99..000000000000
--- a/firmware/r128/r128_cce.bin.ihex
+++ /dev/null
@@ -1,129 +0,0 @@
-:1000000000000000108038000000000010003800E0
-:10001000000000020000008E0000000200000091BD
-:1000200000000000402E2423000000006062124FF8
-:10003000000000002E2B596D000000007677753E01
-:1000400000000000898984820000000023BC8B0D21
-:10005000000000002323232300000000238DABB405
-:1000600000000000232323230000000100B028002B
-:100070000000000100032800000000010004C0008F
-:100080000000000100030800000000023660300E8E
-:100090000000000B00040000000000000000000051
-:1000A000000000010200151D0000000100001D0EEF
-:1000B00000000001000039D900000001000019D73C
-:1000C0000000000C0000001C00000001000019D618
-:1000D0000000000C0000001C0000000200000017DF
-:1000E0000000000B01200000000000000100358A24
-:1000F0000000000100064000000000090000001E92
-:100100000000000108D015B4000000101910100004
-:100110000000000300002000000000000000280094
-:1001200000000001000308000000000100003D0E77
-:10013000000000010000C8000000000A0000882A3A
-:10014000000000090000002A000000010200150F55
-:1001500000000002000028240000000100003D65AE
-:100160000000000100003D66000000020000002BBE
-:100170000000000100F32DB4000000012200D8BFF0
-:100180000000000100E088BF0000000C1333383786
-:1001900000000001020615650000000C0000003799
-:1001A00000000001020015640000000100003D662F
-:1001B000000000020000002E000000040020083AA9
-:1001C0000000000100080800000000010006C0FF58
-:1001D000000000040040003D000000010007C800CE
-:1001E00000000001000700FF000000030000000005
-:1001F0000000000C0000005C000000020000002E67
-:100200000000000C000000B00000000100003D767E
-:100210000000000100032800000000010000480069
-:1002200000000001000208000000000106001D0E91
-:1002300000000001000248000000000100028800E8
-:100240000000000100F3C5F80000000100100000EC
-:10025000000000060030004E0000000100003D6379
-:100260000000001080303DF0000000021000384314
-:1002700000000002000028430000000C000000B055
-:100280000000000100003D760000000100003D7705
-:100290000000000100003D0E0000000100003D0FC5
-:1002A000000000010050280000000006003000524D
-:1002B0000000001080303DF00000000100003DF81B
-:1002C00000000002000000520000000100053D0E89
-:1002D0000000000100103D0F00000002003000553A
-:1002E0000000000100003D700000000100001E89B8
-:1002F0000000000100003D710000000300003D729D
-:100300000000000C0000005C000000020000006221
-:100310000000000100003F280000000100003F270E
-:100320000000000100003E820000000100003E8845
-:100330000000000100003E660000000100003E6772
-:100340000000000100003E760000000100003E6851
-:100350000000000100003E690000000100003E6C4A
-:100360000000000000003E6D0000000100002800B9
-:1003700000000001005028000000000100003D685E
-:100380000000000100030800000000060000006EED
-:10039000000000010002C0000000000106303D62C4
-:1003A0000000000200000070000000020030006F3A
-:1003B00000000000200038C0000000010001C0C0A3
-:1003C0000000000E0000007D0000000C0003287FEC
-:1003D00000000001020015BB0000000C00030880B3
-:1003E0000000000002003DBC0000000100003DBB19
-:1003F0000000000000003DBC00000003000480007D
-:100400000000000100048000000000030006C0029C
-:100410000000000100B0280000000000306038003B
-:100420000000000100C028000000000100B008002A
-:100430000000000100D600000000000712801086B6
-:10044000000000000000280000000001000039CC7E
-:1004500000000001000039CD00000001000039C992
-:1004600000000001000039CA00000000000039CB84
-:10047000000000011003B80000000001009000001F
-:100480000000000110003800000000010003080017
-:100490000000000100903D1B0000000140203D0ACB
-:1004A0000000000140203D0B00000001000880001A
-:1004B000000000010001C0C00000000E0000009F0D
-:1004C0000000000C000308800000000142203DBD38
-:1004D0000000000C0003087F0000000142003DBB4B
-:1004E0000000000C000308800000000142203DBC19
-:1004F00000000002000000A20000000140203DBDFD
-:100500000000000140003DBB0000000140203DBC58
-:1005100000000001000840000000000100A00000F1
-:1005200000000006003000A6000000101060380037
-:1005300000000009000000A80000000300400000C7
-:100540000000000300403D1D00000000000000000E
-:1005500000000000000001000000000E000000AEDE
-:10056000000000010001C0A900000001020015C741
-:100570000000000C000000B0000000000000280097
-:10058000000000010001C0AA00000001020015D215
-:10059000000000010001C0A900000003020015C70F
-:1005A0000000000100003E88000000010001C0BA08
-:1005B0000000000102001728000000010001C0BB7C
-:1005C000000000010200165A0000000000003E5B1F
-:1005D000000000000000010000000000000010000A
-:1005E000000000010006400B00000009000000BCF4
-:1005F00000000000000028000000000000000000D3
-:1006000000000000000000000000000000000000EA
-:1006100000000000000000000000000000000000DA
-:1006200000000000000000000000000000000000CA
-:1006300000000000000000000000000000000000BA
-:1006400000000000000000000000000000000000AA
-:10065000000000000000000000000000000000009A
-:10066000000000000000000000000000000000008A
-:10067000000000000000000000000000000000007A
-:10068000000000000000000000000000000000006A
-:10069000000000000000000000000000000000005A
-:1006A000000000000000000000000000000000004A
-:1006B000000000000000000000000000000000003A
-:1006C000000000000000000000000000000000002A
-:1006D000000000000000000000000000000000001A
-:1006E000000000000000000000000000000000000A
-:1006F00000000000000000000000000000000000FA
-:1007000000000000000000000000000000000000E9
-:1007100000000000000000000000000000000000D9
-:1007200000000000000000000000000000000000C9
-:1007300000000000000000000000000000000000B9
-:1007400000000000000000000000000000000000A9
-:100750000000000000000000000000000000000099
-:100760000000000000000000000000000000000089
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B0000000000000000000000000000000000039
-:1007C0000000000000000000000000000000000029
-:1007D0000000000000000000000000000000000019
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:00000001FF
diff --git a/firmware/radeon/R100_cp.bin.ihex b/firmware/radeon/R100_cp.bin.ihex
deleted file mode 100644
index 151647b04fc4..000000000000
--- a/firmware/radeon/R100_cp.bin.ihex
+++ /dev/null
@@ -1,130 +0,0 @@
-:1000000000000000210070000000000020007000CF
-:1000100000000004000000B400000004000000B86C
-:10002000000000006F5B4D4C000000004C4C427F14
-:10003000000000005B568A92000000004CA09C6DFE
-:1000400000000000AD4C4C4C000000004CE1AF3D06
-:1000500000000000D8AFAFAF00000000D64C4CDC71
-:10006000000000004CD10D1000000016000F000031
-:1000700000000000362F242D0000000400000012B4
-:1000800000000016000F000000000000362F282D91
-:1000900000000002000380E70000000204002C972B
-:1000A00000000016000F000100000000333A373056
-:1000B00000000002000077EF0000000200061000C0
-:1000C0000000001A000000210000001E0000400097
-:1000D00000000002000610000000001A00000021CD
-:1000E0000000001E0000400000000002000610009A
-:1000F0000000001A000000210000001E0000400067
-:100100000000000400000017000000020003802B24
-:1001100000000002040067E0000000040000001777
-:1001200000000002000077E000000002000650001E
-:1001300000000002000037E100000006040067E153
-:1001400000000002000077E000000002000077E1FC
-:1001500000000006000077E100000000FFFFFFFF45
-:100160000000000010000000000000020003802BCF
-:1001700000000006040067E0000000020000767541
-:100180000000000200007676000000020000767792
-:100190000000000600007678000000020003802CBA
-:1001A00000000002040026760000000200007677BE
-:1001B0000000000600007678000000180000002F04
-:1001C000000000180000002F0000000600000000E2
-:1001D000000000180000003000000018000000308F
-:1001E0000000000600000000000000020160500056
-:1001F000000000020006500000000002000980001C
-:1002000000000002000610000000000464C0603E10
-:1002100000000002000380E600000002040025C583
-:1002200000000016000800000000000000000000B0
-:10023000000000020400251D00000002000075807F
-:100240000000000200067581000000020400258005
-:100250000000000200067581000000040000004953
-:10026000000000000000500000000002000380E6D3
-:1002700000000002040025C5000000020006100076
-:10028000000000020000750E000000020001900056
-:10029000000000140001105500000012000000557D
-:1002A000000000020400250F000000040000504F71
-:1002B00000000002000380E600000002040025C5E3
-:1002C0000000000200007565000000020000756675
-:1002D000000000040000005800000002000380E657
-:1002E00000000002040025C50000000201E655B42C
-:1002F000000000024401B0E40000000201C110E46B
-:10030000000000182666706600000002040C2565D7
-:1003100000000018000000660000000204002564D0
-:100320000000000200007566000000040000005D8F
-:1003300000000008004010690000000200101000DA
-:1003400000000002000D80FF000000080080006C2B
-:1003500000000002000F900000000002000E00FFED
-:100360000000000600000000000000180000008FE0
-:10037000000000040000005B00000002000380E6B3
-:1003800000000002040025C5000000020000757690
-:100390000000000200065000000000020000900073
-:1003A0000000000200041000000000020C00350EE6
-:1003B0000000000200049000000000020005100090
-:1003C0000000000201E785F80000000200200000A4
-:1003D0000000000C0060007E000000020000756359
-:1003E00000000021006075F0000000042000707320
-:1003F000000000040000507300000002000380E6CB
-:1004000000000002040025C500000002000075760F
-:100410000000000200007577000000020000750E69
-:10042000000000020000750F0000000200A0500054
-:100430000000000C0060008300000021006075F0E7
-:1004400000000002000075F80000000400000083B6
-:1004500000000002000A750E00000002000380E6A2
-:1004600000000002040025C5000000020020750FF6
-:1004700000000004006000860000000200007570AB
-:100480000000000200007571000000060000757297
-:1004900000000002000380E600000002040025C501
-:1004A00000000002000050000000000200A0500008
-:1004B0000000000200007568000000020006100045
-:1004C0000000000C00000095000000020005800004
-:1004D000000000020C60756200000004000000973C
-:1004E00000000002000380E600000002040025C5B1
-:1004F000000000040060009600000000400070E56D
-:1005000000000002000380E600000002040025C590
-:1005100000000002000380E50000001C000000A8AD
-:1005200000000018000650AA00000002040025BBCD
-:1005300000000018000610AB00000000040075BCAD
-:1005400000000002000075BB00000000000075BC48
-:100550000000000600090000000000020009000081
-:1005600000000006000D800200000002000078324A
-:10057000000000020000500000000002000380E7BD
-:100580000000000204002C97000000020000782008
-:100590000000000200007821000000000000780048
-:1005A000000000020120000000000002200770008F
-:1005B0000000000201200000000000022000700086
-:1005C0000000000200061000000000020120751B60
-:1005D000000000028040750A000000028040750B98
-:1005E000000000020011000000000002000380E58E
-:1005F0000000001C000000C600000018000610AB40
-:1006000000000002844075BD00000018000610AA1A
-:1006100000000002840075BB00000018000610AB4B
-:1006200000000002844075BC00000004000000C906
-:1006300000000002804075BD00000002800075BB14
-:1006400000000002804075BC000000020010800025
-:1006500000000002014000000000000C006000CD1E
-:100660000000002020C0700000000012000000CF39
-:100670000000000600800000000000060080751DDC
-:100680000000000000000000000000020000775C95
-:100690000000000200A050000000000200661000F0
-:1006A000000000200460275D000000000000400002
-:1006B0000000000201E0083000000000210070008E
-:1006C000000000006464614D00000000696874204F
-:1006D00000000000000000730000000000000000A7
-:1006E000000000020000500000000002000380D063
-:1006F00000000002040025E000000000000075E199
-:10070000000000000000000100000002000380E083
-:1007100000000002040023940000000000005000CC
-:1007200000000000000000000000000000000000C9
-:1007300000000000000000080000000000000004AD
-:1007400000000000000000000000000000000000A9
-:100750000000000000000000000000000000000099
-:100760000000000000000000000000000000000089
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B0000000000000000000000000000000000039
-:1007C0000000000000000000000000000000000029
-:1007D0000000000000000000000000000000000019
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:00000001FF
-/* production radeon ucode r1xx-r6xx */
diff --git a/firmware/radeon/R200_cp.bin.ihex b/firmware/radeon/R200_cp.bin.ihex
deleted file mode 100644
index 3a0bd73111c4..000000000000
--- a/firmware/radeon/R200_cp.bin.ihex
+++ /dev/null
@@ -1,130 +0,0 @@
-:1000000000000000210070000000000020007000CF
-:1000100000000004000000BF00000004000000C356
-:10002000000000007A685E5D000000005D5D55889C
-:100030000000000068659197000000005DA19F78B6
-:10004000000000005D5D5D5D000000005DEE5D5044
-:1000500000000000F2ACACAC00000000E75DF9E984
-:1000600000000000B1DD0E1100000000E2AFAFAFF4
-:1000700000000016000F000000000000452F232D97
-:10008000000000040000001300000016000F000034
-:1000900000000000452F272D00000016000F000172
-:1000A000000000003E4D4A3700000002000077EFDC
-:1000B00000000002000610000000001A00000020EE
-:1000C0000000001E000040000000000200061000BA
-:1000D0000000001A000000200000001E0000400088
-:1000E00000000002000610000000001A00000020BE
-:1000F0000000001E00004000000000040000001688
-:10010000000000020003802A00000002040067E0F3
-:10011000000000040000001600000002000077E06C
-:10012000000000020006500000000002000037E15D
-:1001300000000006040067E100000002000077E014
-:1001400000000002000077E100000006000077E1F7
-:1001500000000000FFFFFFFF000000001000000093
-:100160000000000007F007F0000000020003802AF2
-:1001700000000006040067E0000000020003802C7D
-:100180000000000204002741000000020400274193
-:100190000000000204002743000000020000767502
-:1001A0000000000200007676000000020000767772
-:1001B0000000000600007678000000020003802C9A
-:1001C0000000000204002741000000020400274153
-:1001D00000000002040027430000000200007676C1
-:1001E000000000020000767700000006000076782C
-:1001F000000000020003802B0000000204002676AD
-:100200000000000200007677000000020003802C4E
-:100210000000000204002741000000020400274300
-:100220000000000600007678000000020003802C29
-:1002300000000002040027410000000204002741E2
-:10024000000000020400274300000006000076784A
-:10025000000000180000002F000000180000002F10
-:100260000000000600000000000000180000003739
-:100270000000001800000037000000060000000029
-:100280000000000201605000000000020006500063
-:1002900000000002000980000000000200061000BB
-:1002A0000000000464C06051000000160008000057
-:1002B0000000000000000000000000020400251DF6
-:1002C0000000000200007580000000020006758139
-:1002D0000000000204002580000000020006758175
-:1002E000000000040000005A000000000000500060
-:1002F0000000000200061000000000020000750E61
-:1003000000000002000190000000001400011064D1
-:100310000000001200000064000000020400250F2D
-:10032000000000040000505E00000002000075653F
-:100330000000000200007566000000040000006577
-:100340000000000201E655B4000000024401B0F0D4
-:100350000000000201C110F0000000182666707154
-:1003600000000002040C2565000000180000007168
-:100370000000000204002564000000020000756611
-:100380000000000400000068000000080040107435
-:10039000000000020010100000000002000D80FFAD
-:1003A000000000080080007700000002000F9000AD
-:1003B00000000002000E00FF000000060000000028
-:1003C0000000001800000094000000040000006815
-:1003D00000000002000075760000000200065000D8
-:1003E0000000000200009000000000020004100065
-:1003F000000000020C00350E000000020004900016
-:1004000000000002000510000000000201E785F86E
-:1004100000000002002000000000000C00600087C7
-:10042000000000020000756300000021006075F00C
-:10043000000000042000707C000000040000507CDC
-:1004400000000002000075760000000200007577D1
-:10045000000000020000750E000000020000750F91
-:100460000000000200A050000000000C0060008AA4
-:1004700000000021006075F000000002000075F827
-:10048000000000040000008A00000002000A750E4F
-:10049000000000020020750F000000040060008DC5
-:1004A000000000020000757000000002000075717D
-:1004B00000000006000075720000000200005000FD
-:1004C0000000000200A0500000000002000075685B
-:1004D00000000002000610000000000C0000009860
-:1004E0000000000200058000000000020C60756240
-:1004F000000000040000009A000000040060009961
-:1005000000000000400070F100000002000380F1D4
-:100510000000001C000000A700000018000650A901
-:1005200000000002040025BB00000018000610AA0D
-:1005300000000000040075BC00000002000075BB54
-:1005400000000000000075BC00000006000900006B
-:10055000000000020009000000000006000D8002FB
-:10056000000000020000500000000002000078219E
-:100570000000000000007800000000020000782168
-:10058000000000000000780000000002016650003A
-:1005900000000002000A000000000002000671CC0A
-:1005A000000000020286F1CD00000010000000B73C
-:1005B00000000000210070000000001C000000BED0
-:1005C000000000020006500000000002000A0000C7
-:1005D000000000020006100000000002000B0000F6
-:1005E000000000023806700000000004000A00BA93
-:1005F0000000000020007000000000020120000048
-:10060000000000022007700000000002012000002E
-:100610000000000020007000000000020006100032
-:10062000000000020120751B000000028040750AD6
-:10063000000000028040750B000000020011000065
-:1006400000000002000380F10000001C000000D147
-:1006500000000018000610AA00000002844075BDCA
-:1006600000000018000610A900000002840075BBFD
-:1006700000000018000610AA00000002844075BCAB
-:1006800000000004000000D400000002804075BD9E
-:1006900000000002800075BB00000002804075BCB5
-:1006A0000000000200108000000000020140000075
-:1006B0000000000C006000D80000002020C0700086
-:1006C00000000012000000DA0000000600800000B8
-:1006D000000000060080751D00000002000025BB20
-:1006E00000000004000040D4000000020000775C1D
-:1006F0000000000200A05000000000020066100090
-:10070000000000200460275D0000000000004000A1
-:1007100000000002000079990000000200A05000D3
-:100720000000000200661000000000200460299B09
-:1007300000000000000040000000000201E008305E
-:1007400000000000210070000000000200005000C6
-:10075000000000020003805600000002040025E0B3
-:1007600000000000000075E1000000000000000132
-:1007700000000002000380ED0000000004007394FC
-:100780000000000000000000000000000000000069
-:1007900000000002000078C400000002000078C5DC
-:1007A00000000002000078C600000002000079246A
-:1007B00000000002000079250000000200007926F8
-:1007C00000000004000000F2000000020000792494
-:1007D00000000002000079250000000200007926D8
-:1007E00000000004000000F900000000000000000C
-:1007F00000000000000000000000000000000000F9
-:00000001FF
-/* production radeon ucode r1xx-r6xx */
diff --git a/firmware/radeon/R300_cp.bin.ihex b/firmware/radeon/R300_cp.bin.ihex
deleted file mode 100644
index d307d56882c9..000000000000
--- a/firmware/radeon/R300_cp.bin.ihex
+++ /dev/null
@@ -1,130 +0,0 @@
-:10000000000000004200E000000000004000E000AE
-:1000100000000008000000AE00000008000000B270
-:100020000000000067554B4A000000004A4A447532
-:100030000000000055527D83000000004A8C8B6553
-:10004000000000004AEF4AF6000000004AE14A4A78
-:1000500000000000E497979700000000DB4AEBDD0A
-:10006000000000009CCC4A4A00000000D1989898FB
-:10007000000000004A0F9AD600000004000CA00007
-:1000800000000038000D0012000000040000E8B479
-:1000900000000038000D0014000000040000E8B665
-:1000A00000000038000D0016000000040000E854B5
-:1000B00000000038000D0018000000040000E855A2
-:1000C00000000038000D001A000000040000E8568F
-:1000D00000000038000D001C000000040000E8577C
-:1000E00000000038000D001E000000040000E8249D
-:1000F00000000038000D0020000000040000E8258A
-:1001000000000038000D0022000000040000E8306C
-:1001100000000038000D0024000000040000F0C0C2
-:1001200000000038000D0026000000040000F0C1AF
-:1001300000000038000D0028000000040000F0411D
-:1001400000000038000D002A000000040000F184C7
-:1001500000000038000D002C000000040000F185B4
-:1001600000000038000D002E000000040000F186A1
-:1001700000000038000D0030000000040000F1878E
-:1001800000000038000D0032000000040000F18083
-:1001900000000038000D0034000000040000F3935C
-:1001A00000000038000D0036000000040000F38A53
-:1001B00000000038000D0038000000040000F38E3D
-:1001C000000000040000E821000000040140A0003D
-:1001D00000000018000000430000000400CCE8000C
-:1001E00000000004001B000100000004080048009B
-:1001F00000000004001B000100000004080048008B
-:1002000000000004001B000100000004080048007A
-:10021000000000080000003A000000000000A000FC
-:10022000000000042000451D000000040000E580DF
-:1002300000000004000CE581000000040800458077
-:1002400000000004000CE5810000000800000047E9
-:10025000000000000000A00000000004000C2000CE
-:10026000000000040000E50E000000040003200070
-:10027000000000280002205100000024000000516E
-:10028000000000040800450F000000080000A04B1B
-:10029000000000040000E565000000040000E566C1
-:1002A00000000008000000520000000403CCA5B4C8
-:1002B00000000004054320000000000400022000AC
-:1002C000000000304CCCE05E0000000408274565CB
-:1002D000000000300000005E0000000408004564DB
-:1002E000000000040000E566000000080000005562
-:1002F00000000010008020610000000400202000A9
-:1003000000000004001B00FF00000010010000645A
-:1003100000000004001F200000000004001C00FF7B
-:100320000000000C00000000000000300000008011
-:100330000000000800000055000000040000E57601
-:1003400000000004000CA0000000000400012000D8
-:100350000000000400082000000000041800650EE2
-:10036000000000040009200000000004000A200032
-:1003700000000004000F0000000000040040000026
-:100380000000001800000074000000040000E56395
-:10039000000000C200C0E5F900000008000000698C
-:1003A000000000080000A069000000040000E576DD
-:1003B000000000040000E577000000040000E50EE6
-:1003C000000000040000E50F000000040140A00050
-:1003D0000000001800000077000000C200C0E5F92E
-:1003E0000000000800000077000000040014E50E83
-:1003F000000000040040E50F0000000800C0007A83
-:10040000000000040000E570000000040000E57139
-:100410000000000C0000E572000000040000A000D5
-:10042000000000040140A000000000040000E56896
-:1004300000000004000C20000000001800000084F0
-:1004400000000004000B00000000000418C0E5627A
-:1004500000000008000000860000000800C00085C1
-:1004600000000004000700E30000003800000092D4
-:1004700000000030000CA09400000004080045BB00
-:1004800000000030000C2095000000000800E5BCD2
-:10049000000000040000E5BB000000000000E5BC17
-:1004A0000000000C00120000000000040012000018
-:1004B0000000000C001B0002000000040000A0006F
-:1004C000000000040000E821000000000000E80037
-:1004D000000000040000E821000000000000E82EF9
-:1004E0000000000402CCA000000000040014000082
-:1004F00000000004000CE1CC00000004050DE1CD7B
-:10050000000000040040000000000018000000A4EB
-:100510000000000400C0A00000000008000000A1CE
-:1005200000000020000000A6000000004200E000E3
-:1005300000000038000000AD00000004000CA00026
-:10054000000000040014000000000004000C200063
-:10055000000000040016000000000004700CE00021
-:1005600000000008001400A9000000004000E000A6
-:10057000000000040240000000000004400EE00003
-:100580000000000402400000000000004000E00005
-:1005900000000004000C2000000000040240E51BE5
-:1005A000000000050080E50A000000050080E50B62
-:1005B000000000040022000000000004000700E327
-:1005C00000000038000000C000000030000C209542
-:1005D000000000050880E5BD00000030000C2094FC
-:1005E000000000050800E5BB00000030000C20956D
-:1005F000000000050880E5BC00000008000000C302
-:10060000000000050080E5BD000000050000E5BB1E
-:10061000000000050080E5BC00000004002100008F
-:1006200000000004028000000000001800C000C7A5
-:10063000000000404180E00000000024000000C9EC
-:100640000000000C010000000000000C0100E51D8E
-:1006500000000004000045BB00000008000080C34B
-:10066000000000040000F3CE000000040140A000E0
-:100670000000000400CC20000000004008C053CF60
-:100680000000000000008000000000040000F3D221
-:10069000000000040140A0000000000400CC200085
-:1006A0000000004008C053D300000000000080009C
-:1006B000000000040000F39D000000040140A000C1
-:1006C0000000000400CC20000000004008C0539E41
-:1006D00000000000000080000000000403C008309B
-:1006E000000000004200E000000000040000A00044
-:1006F00000000004200045E0000000000000E5E1EB
-:10070000000000000000000100000004000700E0FD
-:10071000000000000800E39400000000000000005A
-:10072000000000040000E8C4000000040000E8C568
-:10073000000000040000E8C6000000040000E928F2
-:10074000000000040000E929000000040000E92A7C
-:1007500000000008000000E4000000040000E92898
-:10076000000000040000E929000000040000E92A5C
-:1007700000000008000000EB0000000402C02000A0
-:10078000000000040006000000000034000000F338
-:1007900000000008000000F00000000400008000DD
-:1007A00000000000C000E0000000000000000000A9
-:1007B00000000004000C200000000004001D0018D0
-:1007C00000000004001A000100000034000000FBDB
-:1007D000000000080000004A000000080500A04AD0
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:00000001FF
-/* production radeon ucode r1xx-r6xx */
diff --git a/firmware/radeon/R420_cp.bin.ihex b/firmware/radeon/R420_cp.bin.ihex
deleted file mode 100644
index 3815891275f9..000000000000
--- a/firmware/radeon/R420_cp.bin.ihex
+++ /dev/null
@@ -1,130 +0,0 @@
-:10000000000000004200E000000000004000E000AE
-:100010000000000800000099000000080000009D9A
-:10002000000000004A554B4A000000004A4A44675D
-:100030000000000055526F75000000004A7E7D658B
-:1000400000000000D9D3DFF6000000004AC54A4A8C
-:1000500000000000C882828200000000BF4ACFC1B9
-:100060000000000087B04A4A00000000B583838387
-:10007000000000004A0F85BA00000004000CA00038
-:1000800000000038000D0012000000040000E8B479
-:1000900000000038000D0014000000040000E8B665
-:1000A00000000038000D0016000000040000E854B5
-:1000B00000000038000D0018000000040000E855A2
-:1000C00000000038000D001A000000040000E8568F
-:1000D00000000038000D001C000000040000E8577C
-:1000E00000000038000D001E000000040000E8249D
-:1000F00000000038000D0020000000040000E8258A
-:1001000000000038000D0022000000040000E8306C
-:1001100000000038000D0024000000040000F0C0C2
-:1001200000000038000D0026000000040000F0C1AF
-:1001300000000038000D0028000000040000F0411D
-:1001400000000038000D002A000000040000F184C7
-:1001500000000038000D002C000000040000F185B4
-:1001600000000038000D002E000000040000F186A1
-:1001700000000038000D0030000000040000F1878E
-:1001800000000038000D0032000000040000F18083
-:1001900000000038000D0034000000040000F3935C
-:1001A00000000038000D0036000000040000F38A53
-:1001B00000000038000D0038000000040000F38E3D
-:1001C000000000040000E821000000040140A0003D
-:1001D00000000018000000430000000400CCE8000C
-:1001E00000000004001B000100000004080048009B
-:1001F00000000004001B000100000004080048008B
-:1002000000000004001B000100000004080048007A
-:10021000000000080000003A000000000000A000FC
-:10022000000000042000451D000000040000E580DF
-:1002300000000004000CE581000000040800458077
-:1002400000000004000CE5810000000800000047E9
-:10025000000000000000A00000000004000C2000CE
-:10026000000000040000E50E000000040003200070
-:10027000000000280002205100000024000000516E
-:10028000000000040800450F000000080000A04B1B
-:10029000000000040000E565000000040000E566C1
-:1002A00000000008000000520000000403CCA5B4C8
-:1002B00000000004054320000000000400022000AC
-:1002C000000000304CCCE05E0000000408274565CB
-:1002D000000000300000005E0000000408004564DB
-:1002E000000000040000E566000000080000005562
-:1002F00000000010008020610000000400202000A9
-:1003000000000004001B00FF00000010010000645A
-:1003100000000004001F200000000004001C00FF7B
-:100320000000000C0000000000000030000000721F
-:100330000000000800000055000000040000E57601
-:10034000000000040000E577000000040000E50E56
-:10035000000000040000E50F000000040140A000C0
-:100360000000001800000069000000C200C0E5F9AC
-:100370000000000800000069000000040014E50E01
-:10038000000000040040E50F0000000800C0006C01
-:10039000000000040000E570000000040000E571AA
-:1003A0000000000C0000E572000000040000A00046
-:1003B000000000040140A000000000040000E56807
-:1003C00000000004000C200000000018000000766F
-:1003D00000000004000B00000000000418C0E562EB
-:1003E00000000008000000780000000800C000774E
-:1003F00000000004000700C7000000380000008073
-:10040000000000040000E5BB000000000000E5BCA7
-:10041000000000040000A000000000040000E8212B
-:10042000000000000000E800000000040000E821D7
-:10043000000000000000E82E0000000402CCA00034
-:10044000000000040014000000000004000CE1CCD7
-:1004500000000004050DE1CD000000040040000094
-:10046000000000180000008F0000000400C0A00081
-:10047000000000080000008C000000200000009137
-:10048000000000004200E00000000038000000987A
-:1004900000000004000CA000000000040014000094
-:1004A00000000004000C2000000000040016000002
-:1004B00000000004700CE00000000008001400942C
-:1004C000000000004000E0000000000402400000C6
-:1004D00000000004400EE0000000000402400000A4
-:1004E000000000004000E00000000004000C2000BC
-:1004F000000000040240E51B000000050080E50A42
-:10050000000000050080E50B000000040022000050
-:1005100000000004000700C700000038000000A42D
-:10052000000000050080E5BD000000050000E5BBFF
-:10053000000000050080E5BC000000040021000070
-:1005400000000004028000000000001800C000ABA2
-:10055000000000404180E00000000024000000ADE9
-:100560000000000C010000000000000C0100E51D6F
-:1005700000000004000045BB00000008000080A748
-:10058000000000040000F3CE000000040140A000C1
-:100590000000000400CC20000000004008C053CF41
-:1005A0000000000000008000000000040000F3D202
-:1005B000000000040140A0000000000400CC200066
-:1005C0000000004008C053D300000000000080007D
-:1005D000000000040000F39D000000040140A000A2
-:1005E0000000000400CC20000000004008C0539E22
-:1005F00000000000000080000000000403C008307C
-:10060000000000004200E000000000040000A00024
-:1006100000000004200045E0000000000000E5E1CB
-:10062000000000000000000100000004000700C4FA
-:10063000000000000800E39400000000000000003B
-:10064000000000040000E8C4000000040000E8C549
-:10065000000000040000E8C6000000040000E928D3
-:10066000000000040000E929000000040000E92A5D
-:1006700000000008000000C8000000040000E92895
-:10068000000000040000E929000000040000E92A3D
-:1006900000000008000000CF0000000402C020009D
-:1006A000000000040006000000000034000000D735
-:1006B00000000008000000D40000000400008000DA
-:1006C00000000000C000E000000000040000E1CCD9
-:1006D000000000040500E1CD00000004000CA000B3
-:1006E00000000034000000DE00000008000000DA16
-:1006F000000000000000A000000000040019E1CC90
-:1007000000000004001B0001000000040500A00020
-:1007100000000004080041CD00000004000CA0000F
-:1007200000000034000000FB000000080000004A48
-:1007300000000000000000000000000000000000B9
-:1007400000000000000000000000000000000000A9
-:100750000000000000000000000000000000000099
-:100760000000000000000000000000000000000089
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B00000000004000C200000000004001D0018D0
-:1007C00000000004001A000100000034000000FBDB
-:1007D000000000080000004A000000080500A04AD0
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:00000001FF
-/* production radeon ucode r1xx-r6xx */
diff --git a/firmware/radeon/R520_cp.bin.ihex b/firmware/radeon/R520_cp.bin.ihex
deleted file mode 100644
index 372ff82a0143..000000000000
--- a/firmware/radeon/R520_cp.bin.ihex
+++ /dev/null
@@ -1,130 +0,0 @@
-:10000000000000004200E000000000004000E000AE
-:100010000000000800000099000000080000009D9A
-:10002000000000004A554B4A000000004A4A44675D
-:100030000000000055526F75000000004A7E7D658B
-:1000400000000000E0DAE6F6000000004AC54A4A77
-:1000500000000000C882828200000000BF4ACFC1B9
-:100060000000000087B04AD500000000B5838383FC
-:10007000000000004A0F85BA00000004000CA00038
-:1000800000000038000D0012000000040000E8B479
-:1000900000000038000D0014000000040000E8B665
-:1000A00000000038000D0016000000040000E854B5
-:1000B00000000038000D0018000000040000E855A2
-:1000C00000000038000D001A000000040000E8568F
-:1000D00000000038000D001C000000040000E8577C
-:1000E00000000038000D001E000000040000E8249D
-:1000F00000000038000D0020000000040000E8258A
-:1001000000000038000D0022000000040000E8306C
-:1001100000000038000D0024000000040000F0C0C2
-:1001200000000038000D0026000000040000F0C1AF
-:1001300000000038000D0028000000040000E0006E
-:1001400000000038000D002A000000040000E0005C
-:1001500000000038000D002C000000040000E0004A
-:1001600000000038000D002E000000040000E00038
-:1001700000000038000D0030000000040000E00026
-:1001800000000038000D0032000000040000F18083
-:1001900000000038000D0034000000040000F3935C
-:1001A00000000038000D0036000000040000F38A53
-:1001B00000000038000D0038000000040000F38E3D
-:1001C000000000040000E821000000040140A0003D
-:1001D00000000018000000430000000400CCE8000C
-:1001E00000000004001B000100000004080048009B
-:1001F00000000004001B000100000004080048008B
-:1002000000000004001B000100000004080048007A
-:10021000000000080000003A000000000000A000FC
-:10022000000000042000451D000000040000E580DF
-:1002300000000004000CE581000000040800458077
-:1002400000000004000CE5810000000800000047E9
-:10025000000000000000A00000000004000C2000CE
-:10026000000000040000E50E000000040003200070
-:10027000000000280002205100000024000000516E
-:10028000000000040800450F000000080000A04B1B
-:10029000000000040000E565000000040000E566C1
-:1002A00000000008000000520000000403CCA5B4C8
-:1002B00000000004054320000000000400022000AC
-:1002C000000000304CCCE05E0000000408274565CB
-:1002D000000000300000005E0000000408004564DB
-:1002E000000000040000E566000000080000005562
-:1002F00000000010008020610000000400202000A9
-:1003000000000004001B00FF00000010010000645A
-:1003100000000004001F200000000004001C00FF7B
-:100320000000000C0000000000000030000000721F
-:100330000000000800000055000000040000E57601
-:10034000000000040000E577000000040000E50E56
-:10035000000000040000E50F000000040140A000C0
-:100360000000001800000069000000C200C0E5F9AC
-:100370000000000800000069000000040014E50E01
-:10038000000000040040E50F0000000800C0006C01
-:10039000000000040000E570000000040000E571AA
-:1003A0000000000C0000E572000000040000A00046
-:1003B000000000040140A000000000040000E56807
-:1003C00000000004000C200000000018000000766F
-:1003D00000000004000B00000000000418C0E562EB
-:1003E00000000008000000780000000800C000774E
-:1003F00000000004000700C7000000380000008073
-:10040000000000040000E5BB000000000000E5BCA7
-:10041000000000040000A000000000040000E8212B
-:10042000000000000000E800000000040000E821D7
-:10043000000000000000E82E0000000402CCA00034
-:10044000000000040014000000000004000CE1CCD7
-:1004500000000004050DE1CD000000040040000094
-:10046000000000180000008F0000000400C0A00081
-:10047000000000080000008C000000200000009137
-:10048000000000004200E00000000038000000987A
-:1004900000000004000CA000000000040014000094
-:1004A00000000004000C2000000000040016000002
-:1004B00000000004700CE00000000008001400942C
-:1004C000000000004000E0000000000402400000C6
-:1004D00000000004400EE0000000000402400000A4
-:1004E000000000004000E00000000004000C2000BC
-:1004F000000000040240E51B000000050080E50A42
-:10050000000000050080E50B000000040022000050
-:1005100000000004000700C700000038000000A42D
-:10052000000000050080E5BD000000050000E5BBFF
-:10053000000000050080E5BC000000040021000070
-:1005400000000004028000000000001800C000ABA2
-:10055000000000404180E00000000024000000ADE9
-:100560000000000C010000000000000C0100E51D6F
-:1005700000000004000045BB00000008000080A748
-:10058000000000040000F3CE000000040140A000C1
-:100590000000000400CC20000000004008C053CF41
-:1005A0000000000000008000000000040000F3D202
-:1005B000000000040140A0000000000400CC200066
-:1005C0000000004008C053D300000000000080007D
-:1005D000000000040000F39D000000040140A000A2
-:1005E0000000000400CC20000000004008C0539E22
-:1005F00000000000000080000000000403C008307C
-:10060000000000004200E000000000040000A00024
-:1006100000000004200045E0000000000000E5E1CB
-:10062000000000000000000100000004000700C4FA
-:10063000000000000800E39400000000000000003B
-:10064000000000040000E8C4000000040000E8C549
-:10065000000000040000E8C6000000040000E928D3
-:10066000000000040000E929000000040000E92A5D
-:1006700000000008000000C8000000040000E92895
-:10068000000000040000E929000000040000E92A3D
-:1006900000000008000000CF00000000DEADBEEF4B
-:1006A000000000000000011600000004000700D355
-:1006B00000000004080050E700000004000700D418
-:1006C000000000040800401C000000000000E01DC5
-:1006D0000000000402C0200000000004000600002A
-:1006E00000000034000000DE00000008000000DB15
-:1006F000000000040000800000000000C000E000D6
-:10070000000000040000E1CC000000040500E1CD81
-:1007100000000004000CA00000000034000000E510
-:1007200000000008000000E1000000000000A00040
-:10073000000000040019E1CC00000004001B0001CF
-:10074000000000040500A00000000004080041CDE6
-:1007500000000004000CA00000000034000000FBBA
-:10076000000000080000004A000000000000000037
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B00000000004000C200000000004001D0018D0
-:1007C00000000004001A000100000034000000FBDB
-:1007D000000000080000004A000000080500A04AD0
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:00000001FF
-/* production radeon ucode r1xx-r6xx */
diff --git a/firmware/radeon/R600_me.bin.ihex b/firmware/radeon/R600_me.bin.ihex
deleted file mode 100644
index 30d4c14a308d..000000000000
--- a/firmware/radeon/R600_me.bin.ihex
+++ /dev/null
@@ -1,1345 +0,0 @@
-:1000000000000000C020040000000000000000000C
-:1000100000A0000A000000000000FFFF00284621A9
-:100020000000000000000000D900480000000000AF
-:1000300000000000C02004000000000000000000DC
-:1000400000A0000A000000000000000000E0000026
-:100050000000000000010000C02946200000000050
-:1000600000000000D900480000000000000000006F
-:10007000C0200400000000000000000000A0000AF2
-:10008000000000008100000000204411000000007A
-:1000900000000001002048110000000000042004BE
-:1000A0000060441100000614000000000060000021
-:1000B000000005B20000000000600000000005C55F
-:1000C00000000000C02008000000000000000F0039
-:1000D000002816220000000000000008002116255C
-:1000E0000000000000000020002036250000000075
-:1000F0008D000000002044110000000000000004FA
-:10010000002F022500000000000000000CE00000AD
-:1001100000000018004120000040481100000019B4
-:100120000042200000204811000000008E00000066
-:1001300000204411000000000000003100204A2D82
-:1001400000000000900000000020441100000000AA
-:100150000000000000204805000000000000000C26
-:1001600000211622000000000000000300281625D0
-:10017000000000000000001900211A220000000009
-:100180000000000400281A26000000000000000003
-:10019000002914C5000000000000002100203625C1
-:1001A0000000000000000000003A140200000000FF
-:1001B00000000016002116250000000000000003CA
-:1001C00000281625000000000000001D00200E2D54
-:1001D00000000000FFFFFFFC00280E2300000000CD
-:1001E00000000000002914A3000000000000001D12
-:1001F00000203625000000000000800000280E22AC
-:10020000000000000000000700220E230000000094
-:10021000000000000029386E0000000020000000EF
-:1002200000280E22000000000000000600210E231E
-:1002300000000000000000000029386E00000000EF
-:100240000000000000220222000000000000000068
-:1002500014E0000000000038000000002EE0000064
-:1002600000000035000000002CE000000000003716
-:100270000000000000400E2D0000003900000008C2
-:1002800000200E2D00000000000000090040122D8B
-:10029000000000460000000100400E2D0000003963
-:1002A00000000000C0200C0000000000003FFFFC28
-:1002B0000028122300000000000000020022122487
-:1002C000000000000000001F00211E2300000000AD
-:1002D0000000000014E000000000003E00000008E4
-:1002E00000401C11000000410000000D00201E2DE8
-:1002F000000000000000000F00281E270000000082
-:100300000000000300221E27000000007FC0000044
-:1003100000281A23000000000000001400211A2603
-:10032000000000000000000100331A260000000059
-:100330000000000800221A26000000000000000053
-:1003400000290CC700000000000000300020362407
-:100350000000000000007F000028122100000000C3
-:1003600000001400002F0224000000000000000024
-:100370000CE000000000004B0000000100290E23EB
-:1003800000000000000000100020362300000000E4
-:100390000000E0000020441100000000FFF8000011
-:1003A00000294A230000000000000000003A2C024F
-:1003B000000000000000000200220E2B00000000E0
-:1003C000FC00000000280E230000000000000011C7
-:1003D000002036230000000000001FFF00294A23F0
-:1003E000000000000000003000204A2D0000000046
-:1003F0000000000000204811000000000000003252
-:1004000000200E2D00000000060A020000294A23E9
-:100410000000000000000000002048110000000063
-:100420000000000000204811000000000000000152
-:1004300000210222000000000000000014E0000083
-:1004400000000061000000002EE000000000005FDE
-:10045000000000002CE000000000005E0000000032
-:1004600000400E2D000000620000000100400E2D33
-:10047000000000620000000A00200E2D00000000B5
-:100480000000000B0040122D0000006A0000000078
-:10049000C0200C0000000000003FFFFC00281223D9
-:1004A00000000000000000020022122400000000F2
-:1004B0007FC0000000281623000000000000001488
-:1004C0000021162500000000000000010033162561
-:1004D000000000008000000000280E230000000043
-:1004E0000000000000290CA3000000003FFFFC00FA
-:1004F00000290E23000000000000001F00211E2321
-:10050000000000000000000014E000000000006D8A
-:100510000000010000401C11000000700000000DF0
-:1005200000201E2D00000000000000F000281E2703
-:10053000000000000000000400221E270000000050
-:100540008100000000204411000000000000000DA8
-:100550000020481100000000FFFFF0FF00281A30C3
-:10056000000000000000A02800204411000000004E
-:1005700000000000002948E6000000000000A0186C
-:1005800000204411000000003FFFFFFF00284A2325
-:10059000000000000000A010002044110000000036
-:1005A0000000000000204804000000000000002DB2
-:1005B0000020162D0000000000000000002F00A306
-:1005C00000000000000000000CC0000000000080DF
-:1005D0000000002E0020162D00000000000000008A
-:1005E000002F00A400000000000000000CC000006C
-:1005F00000000081000000000040000000000087B3
-:100600000000002D00203623000000000000002E16
-:1006100000203624000000000000001D00201E2DD8
-:10062000000000000000000200210227000000007E
-:100630000000000014E0000000000087000000003F
-:1006400000600000000005ED0000000000600000F8
-:10065000000005E10000000200210E220000000061
-:100660000000000014C000000000008A0000001814
-:10067000C040362000000090000000002EE0000086
-:100680000000008E000000002CE000000000008D43
-:100690000000000200400E2D0000008F000000034B
-:1006A00000400E2D0000008F0000000C00200E2DD9
-:1006B00000000000000000180020362300000000A9
-:1006C0000000000300210E220000000000000000D6
-:1006D00014C00000000000950000A00C0020441190
-:1006E0000000000000000000C020480000000000E2
-:1006F00000000000C04048000000009D0000A00C69
-:1007000000204411000000000000000000204811FB
-:1007100000000000000000002EE000000000009B30
-:10072000000000002CE000000000009A0000000221
-:1007300000400E2D0000009C0000000300400E2D24
-:100740000000009C0000000C00200E2D00000000A6
-:10075000000000000020480300000000000000002E
-:10076000003A0C0200000000003F000000280E23A9
-:10077000000000000000001000210E230000000017
-:100780000000001300203623000000000000001EBF
-:100790000021022B000000000000000014C0000037
-:1007A000000000A40000001CC02036200000000053
-:1007B0000000001F0021022B0000000000000000CC
-:1007C00014C00000000000A70000001BC02036205D
-:1007D000000000000000000800210E2B00000000B7
-:1007E0000000007F00280E23000000000000000031
-:1007F000002F022300000000000000000CE00000B9
-:10080000000000DB000000002700000000000000E6
-:1008100000000000006000000000028C8100000069
-:1008200000204411000000000000000600204811D4
-:10083000000000000000000C00221E30000000003C
-:100840009980000000204411000000000000000416
-:100850000020122D000000000000000800221224D9
-:10086000000000000000001000201811000000002F
-:100870000000000000291CE400000000000000004F
-:1008800000604807000001289B0000000020441180
-:1008900000000000000000000020480200000000EE
-:1008A0009C00000000204411000000000000000037
-:1008B0000033146F000000000000000100333E23ED
-:1008C0000000000000000000D90048000000000007
-:1008D0000000000000203C05000000008100000036
-:1008E00000204411000000000000000E002048110C
-:1008F00000000000000000000020101000000000B8
-:100900000000E00700204411000000000000000F7C
-:100910000021022B000000000000000014C00000B5
-:10092000000000C500F8FF0800204811000000008A
-:100930009800000000404811000000D6000000F0C0
-:1009400000280E2200000000000000A0002F02235B
-:1009500000000000000000000CC00000000000D4F7
-:100960000000001300200E2D000000000000000118
-:10097000002F022300000000000000000CE0000037
-:10098000000000CF00000002002F02230000000042
-:10099000000000000CE00000000000CE00003F005E
-:1009A00000400C11000000D000001F0000400C119E
-:1009B000000000D000000F0000200C11000000001B
-:1009C0000038000900294A23000000003F00000011
-:1009D00000280E2B000000000000000200220E2361
-:1009E000000000000000000700494A23000000D674
-:1009F00000380F09002048110000000068000007BF
-:100A000000204811000000000000000800214A27D3
-:100A1000000000000000000000204811000000005D
-:100A2000060A020000294A2400000000000000001D
-:100A300000204811000000000000000000204811C4
-:100A4000000000000000A20200204411000000008D
-:100A500000FF000000284A220000000000000030D3
-:100A600000200E2D000000000000002E0020122D9E
-:100A70000000000000000000002F008300000000C4
-:100A8000000000000CE00000000000E30000000097
-:100A900000600000000005E70000000000400000CA
-:100AA000000000E40000000000600000000005EA13
-:100AB000000000070020222D0000000000000005BB
-:100AC00000220E22000000000010000000280E236B
-:100AD0000000000000000000002920680000000065
-:100AE00000000000003A0C0200000000000000EFCF
-:100AF00000280E23000000000000000000292068EC
-:100B0000000000000000001D00200E2D000000006D
-:100B1000000000030021022300000000000000008C
-:100B200014E00000000000F10000000B002102288A
-:100B3000000000000000000014C00000000000F1F0
-:100B40000000040000292228000000000000001A14
-:100B500000203628000000000000001C00210E22AA
-:100B6000000000000000000014C00000000000F6BB
-:100B70000000A30C00204411000000000000000051
-:100B800000204811000000000000001E00210E227D
-:100B9000000000000000000014C00000000001047C
-:100BA0000000A30F0020441100000000000000130B
-:100BB00000200E2D0000000000000001002F022385
-:100BC00000000000000000000CC00000000000FD5C
-:100BD000FFFFFFFF00404811000001040000000279
-:100BE000002F022300000000000000000CC00000E5
-:100BF000000001000000FFFF004048110000010458
-:100C000000000004002F022300000000000000008C
-:100C10000CC0000000000103000000FF004048116C
-:100C20000000010400000001002048110000000045
-:100C30000002C40000204411000000000000001F5A
-:100C400000210E22000000000000000014C000007F
-:100C50000000010B0000001040210E2000000000E9
-:100C600000000019002036230000000000000018DA
-:100C700040224A200000000000000010C0424A202C
-:100C80000000010D0000000000200C110000000019
-:100C900000000019002036230000000000000000C2
-:100CA0000020481100000000000000000020481152
-:100CB000000000000000000A0020101100000000E9
-:100CC00000000000002F02240000000000000000CF
-:100CD0000CE000000000011400000000002048119A
-:100CE0000000000000000001005312240000011069
-:100CF000FFBFFFFF00283A2E000000000000001B8D
-:100D000000210222000000000000000014C00000CA
-:100D100000000127810000000020441100000000B5
-:100D20000000000D00204811000000000000001825
-:100D300000220E3000000000FC00000000280E23FE
-:100D400000000000810000000020441100000000AD
-:100D50000000000E0020481100000000000000000C
-:100D600000201010000000000000E00E00204411E0
-:100D70000000000007F8FF080020481100000000F4
-:100D80000000000000294A230000000000000024A9
-:100D900000201E2D000000000000000800214A274E
-:100DA00000000000000000000020481100000000CA
-:100DB000060A020000294A2400000000000000008A
-:100DC0000020481100000000000000000020481131
-:100DD0000000000000000000008000000000000093
-:100DE000810000000020441100000000000000010C
-:100DF00000204811000000000000217C0020441168
-:100E000000000000008000000020481100000000E9
-:100E1000000000000020480600000000000000085C
-:100E200000214A2700000000000000001700000019
-:100E3000000000000004217F00604411000006143F
-:100E40000000001F00210230000000000000000030
-:100E500014C00000000006130000000400404C1104
-:100E60000000012E00000000006000000000000BE8
-:100E70000000000000600411000002FE00000000FD
-:100E800000200411000000000000000000600811B4
-:100E90000000019F00000000006000000000015100
-:100EA0000000FFFF40280E2000000000000000109E
-:100EB000C0211220000000000000FFFF4028062093
-:100EC0000000000000000010C0210A200000000007
-:100ED0000000000000341461000000000000000069
-:100EE00000741882000002A40001A1FD00604411FA
-:100EF000000002C900003FFF002F022F0000000089
-:100F0000000000000CC000000000013800000000DC
-:100F1000C04004000000000100000000006000006C
-:100F20000000000B0000000000600411000002FE41
-:100F3000000000000020041100000000000000007C
-:100F4000006008110000019F00003FFF002F022FEA
-:100F500000000000000000000CE0000000000000A5
-:100F600000000000006000000000015100000010BF
-:100F700040210E20000000000000FFFFC0281220CA
-:100F800000000000000000104021162000000000BA
-:100F90000000FFFFC0681A20000002A40001A1FDAC
-:100FA00000604411000002C900003FFF002F022F23
-:100FB00000000000000000000CC00000000001491B
-:100FC00000000000C0400400000000010000225C9E
-:100FD00000204411000000000000000100300A2F32
-:100FE000000000000000000100210A2200000000B3
-:100FF0000000000300384A220000000000002256D2
-:1010000000204411000000000000001A00204811D8
-:10101000000000000000A1FC0020441100000000BE
-:1010200000000001008048110000000000000000E6
-:10103000006000000000000B0000000000600000E5
-:101040000000017C00000000006000000000018D35
-:1010500000003FFF002F022F0000000000000000F2
-:101060000CE00000000000000000000000202C0840
-:10107000000000000000000000202411000000001B
-:10108000000000000020281100000000000022568F
-:10109000002044110000000000000016002048114C
-:1010A000000000000000225C00204411000000004D
-:1010B00000000003002048110000000093800000A1
-:1010C00000204411000000000000000200221E2940
-:1010D0000000000000000000007048EB00000189E3
-:1010E0000000000000600000000002A400000001F9
-:1010F000403306200000000000000000C03024093A
-:101100000000000000003FFF002F022F0000000041
-:10111000000000000CE000000000000000000000E3
-:10112000006000000000028C9500000000204411C7
-:101130000000000000000000002F0221000000005D
-:10114000000000000CE0000000000173000000003F
-:10115000C0204800000000000000000100530621EC
-:101160000000016F92000000002044110000000008
-:1011700000000000C0604800000001840001A1FDE3
-:101180000020441100000000000000130020062D84
-:1011900000000000000000000078042A000002E4C3
-:1011A00000000000002028090000000000003FFFB0
-:1011B000002F022F00000000000000000CC0000003
-:1011C0000000016500000000C040040000000001B4
-:1011D0000000021000600411000002FE00003FFF4A
-:1011E000002F022F00000000000000000CE00000B3
-:1011F000000001810000001BC0203620000000001C
-:101200000000001CC0203620000000003F800000CD
-:1012100000200411000000004600000000600811DA
-:101220000000019F0000000000800000000000009E
-:101230000000A1FC002044110000000000003FFF5E
-:10124000002F022F00000000000000000CC0000072
-:10125000000001880000000100804811000000002B
-:101260000000002100804811000000000000FFFF86
-:1012700040280E200000000000000010C0211220B5
-:10128000000000000000FFFF4028162000000000C2
-:1012900000000010C0811A20000000008100000042
-:1012A000002044110000000000000006002048114A
-:1012B000000000000000000800221E3000000000B6
-:1012C0000000003200201A2D000000000000E000A5
-:1012D0000020441100000000FFFBFF09002048111E
-:1012E00000000000000000110020222D000000007E
-:1012F00000001FFF00294A2800000000000000062F
-:101300000020222D0000000000000000002920E83D
-:10131000000000000000000000204808000000005D
-:10132000000000000020481100000000060A020032
-:1013300000294A260000000000000000002048119B
-:101340000000000000000000002048110000000024
-:10135000000001000020181100000000000000083B
-:1013600000621E28000001280000000800822228D8
-:10137000000000000002C000002044110000000036
-:101380000000001B00600E2D000001AA0000001CE0
-:1013900000600E2D000001AA0000C00800204411CA
-:1013A000000000000000001D00200E2D00000000C5
-:1013B0000000000014C00000000001A600000000B2
-:1013C000002004110000000000000000002048017F
-:1013D000000000003900000000204811000000005B
-:1013E0000000000000204811000000000000000084
-:1013F00000804802000000000000002000202E2D88
-:101400000000000000000000003B0D630000000031
-:101410000000000800224A23000000000000001025
-:1014200000224A23000000000000001800224A2386
-:1014300000000000000000000080480300000000E1
-:1014400000000000006000000000000B0000100021
-:1014500000600411000002FE0000000000200411E2
-:101460000000000000000000006008110000019F63
-:10147000000000070021062F0000000000000019F6
-:1014800000200A2D000000000000000100202C11A7
-:10149000000000000000FFFF4028222000000000A4
-:1014A0000000000F002622280000000000000010AD
-:1014B00040212620000000000000000F0026262901
-:1014C00000000000000000000020280200000000D2
-:1014D0000000225600204411000000000000001B04
-:1014E000002048110000000000000000002F022131
-:1014F00000000000000000000CE00000000001CD32
-:101500000000225C00204411000000000000008167
-:1015100000204811000000000000A1FC0020441140
-:101520000000000000000001002048110000000041
-:101530000000008000201C110000000000000000DE
-:10154000002F022700000000000000000CE0000057
-:10155000000001C90000000000600000000001D68A
-:101560000000000100531E27000001C5000000011B
-:1015700000202C11000000000000001F00280A229B
-:10158000000000000000001F00282A2A00000000C0
-:101590000000000100530621000001BE0000225C93
-:1015A00000204411000000000000000200304A2F1B
-:1015B000000000000000A1FC002044110000000019
-:1015C00000000001002048110000000000000001A0
-:1015D00000301E2F0000000000000000002F022736
-:1015E00000000000000000000CE00000000000000F
-:1015F0000000000000600000000001D600000001B3
-:1016000000531E27000001D20000FFFF40280E20DB
-:10161000000000000000000F00260E230000000064
-:1016200000000010C0211220000000000000000F88
-:101630000026122400000000000000000020141109
-:10164000000000000000000000601811000002A46B
-:101650000001A1FD00204411000000000000000076
-:10166000002F022B00000000000000000CE0000032
-:10167000000001E500000010002216280000000014
-:10168000FFFF000000281625000000000000FFFFFB
-:1016900000281A290000000000000000002948C5A9
-:1016A00000000000000000000020480A00000000C8
-:1016B0000000000000202C110000000000000010BD
-:1016C0000022162300000000FFFF0000002816255E
-:1016D000000000000000FFFF00281A2400000000A6
-:1016E00000000000002948C50000000000000000C4
-:1016F00000731503000001F200000000002018052F
-:10170000000000000000000000731524000001F23A
-:1017100000000000002D14C50000000000000000C3
-:10172000003008A200000000000000000020480275
-:10173000000000000000000000202802000000005F
-:101740000000000000202003000000000000000056
-:1017500000802404000000000000000F002102258A
-:10176000000000000000000014C00000000006138C
-:1017700000000000002B1405000000000000000124
-:10178000009016250000000000000000006000002E
-:101790000000000B0000000000600411000002FEC9
-:1017A0000000000000200411000000000000000004
-:1017B000006008110000019F000022560020441123
-:1017C000000000000000001A00294A22000000006A
-:1017D00000000000C02000000000000000003FFFEB
-:1017E000002F022F00000000000000000CE00000AD
-:1017F0000000000000000000C02004000000000005
-:101800000000225C002044110000000000000003E2
-:1018100000384A21000000000000A1FC0020441113
-:10182000000000000000000100204811000000003E
-:101830000000FFFF40281220000000000000001000
-:10184000C0211A20000000000000FFFF40280E20E9
-:101850000000000000000010C02116200000000061
-:101860000000000000741465000002A40001A1FD46
-:1018700000604411000002C900000001003306218D
-:101880000000000000000000002F02210000000006
-:10189000000000000CC000000000020600003FFF36
-:1018A000002F022F00000000000000000CC000000C
-:1018B000000001FF00000000C04004000000000123
-:1018C0000000000000600000000005C500000000EE
-:1018D0000040040F00000200000000000060000053
-:1018E000000005B20000000000600000000005C517
-:1018F0000000021000600411000002FE0000000061
-:10190000006000000000018D000000000060000089
-:10191000000001890000000000600000000002A437
-:1019200000000000006000000000028C93800000B6
-:1019300000204411000000000000000000204808C2
-:10194000000000009500000000204411000000008D
-:1019500000000000002F022F000000000000000027
-:101960000CE000000000021F00000000C040480022
-:101970000000021C92000000002044110000000042
-:1019800000000000C02048000000000000002256B7
-:101990000020441100000000000000160020481143
-:1019A000000000000000225C002044110000000044
-:1019B0000000000300204811000000000000A1FC0E
-:1019C0000020441100000000000000010020481128
-:1019D000000000000001A1FD0020441100000000F3
-:1019E0000000000000600411000002E4000000009C
-:1019F000C040040000000001000000000060000082
-:101A0000000005B20000A00C0020441100000000FE
-:101A100000000000C020480000000000000000009E
-:101A2000C04048000000000000000000006000000E
-:101A30000000000B0000001840210A2000000000F8
-:101A400000000003002F0222000000000000000040
-:101A50000AE00000000002350000001A0020222DDC
-:101A600000000000000801010029222800000000F9
-:101A70000000001A00203628000000000000A30C1F
-:101A8000002044110000000000000000C0204800B9
-:101A90000000000000000000C0204800000000001E
-:101AA00000000000C04048000000023A00000000B2
-:101AB000006000000000000B000000100060041136
-:101AC000000002FE3F800000002004110000000022
-:101AD00000000000006008110000019F0000225C6F
-:101AE0000020441100000000000000030020481105
-:101AF000000000000000000000600000000002651F
-:101B00000000001D00201E2D00000000000000014C
-:101B100000211E27000000000000000014E000006B
-:101B2000000002530000001800201E2D00000000DD
-:101B30000000FFFF00281E2700000000000000003A
-:101B400000341C27000000000000000012C000004C
-:101B5000000002480000000000201C1100000000EE
-:101B600000000000002F00E5000000000000000061
-:101B700008C000000000024B000000000020140715
-:101B8000000000000000001800201E2D00000000D2
-:101B90000000001000211E270000000000000000CF
-:101BA00000341C47000000000000000012C00000CC
-:101BB000000002500000000000201C110000000086
-:101BC00000000000002F00E6000000000000000000
-:101BD00008C00000000002530000000000201807A9
-:101BE000000000000000000000600000000002AAE9
-:101BF00000002256002044110000000000000000F8
-:101C000000342023000000000000000012C000008B
-:101C10000000025B000000000034204400000000CF
-:101C20000000000012C000000000025A0000001670
-:101C3000004048110000025F0000001800404811F9
-:101C40000000025F0000000000342044000000009B
-:101C50000000000012C000000000025E000000173B
-:101C6000004048110000025F0000001900204811E8
-:101C7000000000000000A1FC002044110000000052
-:101C80000000000100204811000000000001A1FD3B
-:101C900000604411000002D200003FFF002F022F1D
-:101CA00000000000000000000CC000000000023F27
-:101CB00000000000C040040000000001000000100F
-:101CC00040210620000000000000FFFFC0280A207D
-:101CD000000000000000001040210E200000000065
-:101CE0000000FFFFC02812200000000000000010CC
-:101CF00040211620000000000000FFFFC0881A20CD
-:101D000000000000810000000020441100000000DD
-:101D10000000000100204811000000000004200421
-:101D20000060441100000614000000000060000084
-:101D3000000005B200000000C06000000000028C3E
-:101D40000000000500200A2D00000000000000082F
-:101D500000220A22000000000000003400201A2D9A
-:101D6000000000000000002400201E2D00000000E4
-:101D70000000700000281E27000000000000000086
-:101D800000311CE6000000000000003300201A2D86
-:101D9000000000000000000C00221A2600000000D5
-:101DA00000000000002F00E600000000000000001E
-:101DB00006E000000000027B0000000000201C1173
-:101DC000000000000000000000200C1100000000D6
-:101DD0000000003400203623000000000000001046
-:101DE00000201811000000000000000000691CE243
-:101DF0000000012893800000002044110000000032
-:101E000000000000002048070000000095000000CE
-:101E1000002044110000000000000000002F022FED
-:101E200000000000000000000CE00000000002863E
-:101E30000000000100333E2F000000000000000001
-:101E4000D90048000000000092000000002044116A
-:101E50000000000000000000C0204800000000005A
-:101E60000000002400403627000000000000000CA5
-:101E7000C0220A20000000000000003200203622AC
-:101E80000000000000000031C040362000000000CB
-:101E90000000A2A40020441100000000000000097E
-:101EA0000020481100000000A100000000204411A3
-:101EB0000000000000000001008048110000000048
-:101EC0000000002900201E2D00000000000000007E
-:101ED000002C1CE300000000000000290020362731
-:101EE000000000000000002A00201E2D000000005D
-:101EF00000000000002C1CE4000000000000002A8C
-:101F000000203627000000000000002B00201E2DBE
-:101F10000000000000000000003120A300000000CD
-:101F200000000000002D1D07000000000000002B35
-:101F300000203627000000000000002C00201E2D8D
-:101F40000000000000000000003120C4000000007C
-:101F500000000000002D1D07000000000000002C04
-:101F600000803627000000000000002900203623F2
-:101F7000000000000000002A0020362400000000BD
-:101F80000000000000311CA3000000000000002B36
-:101F900000203627000000000000000000311CC4B3
-:101FA000000000000000002C008036270000000028
-:101FB000000000220020362700000000000000235F
-:101FC00000203628000000000000001D00201E2D0B
-:101FD00000000000000000020021022700000000B5
-:101FE0000000000014C00000000002C50000000056
-:101FF00000400000000002C200000022002036273E
-:10200000000000000000002300203628000000002F
-:102010000000001D00201E2D000000000000000236
-:1020200000210227000000000000000014E0000072
-:10203000000002C20000000300210227000000008F
-:102040000000000014E00000000002C50000002BAA
-:1020500000201E2D0000000000000000002E00E106
-:10206000000000000000000002C00000000002C5E7
-:102070000000002900201E2D0000000000000000CC
-:10208000003120A10000000000000000002E00E848
-:10209000000000000000000006C00000000002C5B3
-:1020A0000000002C00201E2D000000000000000099
-:1020B000002E00E2000000000000000002C000004E
-:1020C000000002C50000002A00201E2D00000000B4
-:1020D00000000000003120C20000000000000000ED
-:1020E000002E00E8000000000000000006C0000014
-:1020F000000002C50000000000600000000005EDC7
-:1021000000000000006000000000029E00000000CF
-:1021100000400000000002C7000000000060000056
-:102120000000029E0000000000600000000005E4C6
-:102130000000000000400000000002C70000000096
-:10214000006000000000029000000000004000005D
-:10215000000002C70000002200201E2D0000000029
-:10216000000000230080222D00000000000000106D
-:1021700000221E2300000000000000000029488704
-:10218000000000000000000000311CA3000000005F
-:102190000000001000221E270000000000000000C8
-:1021A00000294887000000000000001000221E23C4
-:1021B0000000000000000000003120C4000000000A
-:1021C0000000FFFF0028222800000000000000009F
-:1021D00000894907000000000000001000221E23B3
-:1021E00000000000000000000029488700000000F7
-:1021F0000000001000221E2100000000000000006E
-:1022000000294847000000000000000000311CA326
-:10221000000000000000001000221E270000000047
-:1022200000000000002948870000000000000000B6
-:1022300000311CA1000000000000001000221E2739
-:1022400000000000000000000029484700000000D6
-:102250000000001000221E2300000000000000000B
-:10226000003120C4000000000000FFFF00282228E9
-:1022700000000000000000000029490700000000E5
-:102280000000001000221E210000000000000000DD
-:10229000003120C2000000000000FFFF00282228BB
-:1022A0000000000000000000008949070000000055
-:1022B0000000001000221E230000000000000000AB
-:1022C00000294887000000000000000100220A21C8
-:1022D0000000000000000000003308A20000000021
-:1022E0000000001000221E2200000000000000106C
-:1022F0000021222200000000000000000029490700
-:10230000000000000000000000311CA300000000DD
-:102310000000001000221E27000000000000000046
-:1023200000294887000000000000000100220A2167
-:102330000000000000000000003008A200000000C3
-:102340000000001000221E2200000000000000100B
-:10235000002122220000000000000000002949079F
-:10236000000000000000001000221E2300000000FA
-:1023700000000000003120C4000000000000FFFF4A
-:102380000028222800000000000000000029490762
-:102390000000000000000000003808C50000000038
-:1023A00000000000003008410000000000000001B3
-:1023B00000220A220000000000000000003308A2F2
-:1023C000000000000000001000221E22000000009B
-:1023D0000000001000212222000000000000000088
-:1023E00000894907000000000000001D0020222D88
-:1023F000000000000000000014C000000000030105
-:10240000FFFFFFEF00280621000000000000001A77
-:102410000020222D000000000000F8E00020441100
-:102420000000000000000000002949010000000039
-:1024300000000000008949010000000000000000C9
-:10244000002048110000000000000000002048119A
-:1024500000000000060A0200008048110000000091
-:1024600000000000C02000000000000097000000F5
-:10247000C02044110000000000000000C0204811EE
-:10248000000000008A00000000204411000000004D
-:102490000000000000204811000000000000225C45
-:1024A000002044110000000000000000C02048008F
-:1024B000000000000000A1FC00204411000000000A
-:1024C00000000000C02048000000000000000000E4
-:1024D000C0200400000000000000000000A0000A6E
-:1024E00000000000970000000020441100000000E0
-:1024F0000000000000204811000000008A000000D9
-:1025000000204411000000000000000000204811DD
-:10251000000000000000225C0020441100000000C8
-:1025200000000000C0204800000000000000A1FCE6
-:10253000002044110000000000000000C0204800FE
-:102540000000000000000000C020040000000000A7
-:102550000000000000A0000A00000000970000003A
-:10256000002044110000000000000000002048117D
-:10257000000000008A00000000204411000000005C
-:102580000000000000204811000000000000225C54
-:10259000002044110000000000000000C02048009E
-:1025A000000000000000A1FC002044110000000019
-:1025B00000000000C0204800000000000001A1FD54
-:1025C000002044110000000000000000D900480075
-:1025D0000000000000000000C02004000000000017
-:1025E0000000000000A0000A0000000000002257C8
-:1025F000002044110000000000000003C0484A20F1
-:10260000000000000000225D0020441100000000D6
-:1026100000000000C0404800000000000000000072
-:1026200000600000000005C500000000C020080098
-:10263000000000000000225C0020441100000000A7
-:102640000000000300384A22000000000000A1FC46
-:10265000002044110000000000000000C0204800DD
-:10266000000000000001A1FD002044110000000056
-:1026700000000000002F0222000000000000000007
-:102680000CE00000000000000000000040204800B6
-:10269000000000000000000140304A20000000005F
-:1026A00000000002C0304A200000000000000001CD
-:1026B00000530A22000003340000003FC0280A2013
-:1026C0000000000081000000002044110000000014
-:1026D000000000010020481100000000000021F867
-:1026E00000204411000000000000001700204811E5
-:1026F00000000000000421F90060441100000614ED
-:102700000000001100210230000000000000000065
-:1027100014E000000000033D00000014002F02221E
-:1027200000000000000000000CC000000000035189
-:102730000000201000204411000000000000800074
-:1027400000204811000000000001A2A40020441154
-:102750000000000000000000002048110000000000
-:1027600000000016006048110000035E0000210018
-:10277000002044110000000000000000C0204800BC
-:102780000000000000000000C02048000000000021
-:1027900000000000C0204800000000000000000011
-:1027A000C0204800000000000001A2A40020441145
-:1027B00000000000000000000020481100000000A0
-:1027C000000000000040480200000000000000047B
-:1027D000002F022200000000000000000CC00000DA
-:1027E00000000355000020100020441100000000EC
-:1027F000000080000040481100000349000000284C
-:10280000002F022200000000000000000CE0000089
-:1028100000000349000021040020441100000000D2
-:1028200000000000C0204800000000000000000080
-:10283000C02048000000000000000000C020480048
-:102840000000000000000000C02048000000000060
-:102850000000A2A4002044110000000000000000BD
-:10286000004048020000000000000035002036262D
-:1028700000000000000000490020181100000000C6
-:1028800000000000002048110000000000000001CE
-:1028900000331A260000000000000000002F02266E
-:1028A00000000000000000000CC0000000000360F9
-:1028B0000000003500801A2D000000000000003FDD
-:1028C000C0280A200000000000000015002F02228E
-:1028D00000000000000000000CE000000000037693
-:1028E0000000001E002F0222000000000000000077
-:1028F0000CE000000000038000000020002F0222F6
-:1029000000000000000000000CE000000000038C4C
-:102910000000000F002F0222000000000000000055
-:102920000CE000000000039800000010002F0222BD
-:1029300000000000000000000CE000000000039810
-:1029400000000006002F022200000000000000002E
-:102950000CE000000000039A00000016002F022285
-:1029600000000000000000000CE000000000039FD9
-:102970000000A2A40020441100000000000000009C
-:1029800000404802000000000800000000290A2260
-:10299000000000000000000340210E2000000000A5
-:1029A0000000000CC0211220000000000008000000
-:1029B000002812240000000000000014C02216208D
-:1029C0000000000000000000002914A40000000026
-:1029D0000000A2A40020441100000000000000003C
-:1029E000002948A2000000000000A1FE00204411C0
-:1029F000000000000000000000404803000000004C
-:102A000081000000002044110000000000000001CF
-:102A10000020481100000000000021F800204411AF
-:102A20000000000000000015002048110000000018
-:102A3000000421F900604411000006140000001594
-:102A400000210230000000000000000014E000003F
-:102A5000000003820000210E00204411000000004D
-:102A600000000000C020480000000000000000003E
-:102A7000C0204800000000000000A2A40020441173
-:102A800000000000000000000040480200000000BC
-:102A9000810000000020441100000000000000013F
-:102AA0000020481100000000000021F8002044111F
-:102AB0000000000000000016002048110000000087
-:102AC000000421F900604411000006140000000316
-:102AD00000210230000000000000000014E00000AF
-:102AE0000000038E000021080020441100000000B7
-:102AF00000000000C02048000000000000000000AE
-:102B0000C0204800000000000000A2A400204411E2
-:102B1000000000000000000000404802000000002B
-:102B20000000201000204411000000000000800080
-:102B30000040481100000000000020100020441157
-:102B4000000000000000800000204811000000008C
-:102B50000001A2A4002044110000000000000000B9
-:102B6000002048110000000000000006004048114D
-:102B700000000000000020100020441100000000B0
-:102B80000000800000204811000000000001A2A405
-:102B90000020441100000000000000000020481147
-:102BA0000000000000000016006048110000035EF5
-:102BB0000000001600404811000000000000000066
-:102BC000C02008000000000000000000C0200C0031
-:102BD000000000000000001D002102230000000092
-:102BE0000000000014E00000000003B981000000B4
-:102BF00000204411000000000000000100204811E6
-:102C000000000000000021F8002044110000000036
-:102C1000000000170020481100000000000421F906
-:102C20000060441100000614000000110021023071
-:102C3000000000000000000014E00000000003ABF2
-:102C400000002100002044110000000000000000EE
-:102C5000002048020000000000000000002048039F
-:102C600000000000BABECAFE0020481100000000AB
-:102C7000CAFEBABE0020481100000000000020106B
-:102C800000204411000000000000800000204811D6
-:102C9000000000000000A2A4002044110000000079
-:102CA00000000004004048110000000000002170F6
-:102CB0000020441100000000000000000020480235
-:102CC0000000000000000000002048030000000099
-:102CD0008100000000204411000000000000000AF4
-:102CE000002048110000000000000000002000103B
-:102CF000000000000000000014C00000000003BE3F
-:102D00008C0000000020441100000000CAFEBABE82
-:102D10000040481100000000810000000020441124
-:102D20000000000000000001002048110000000029
-:102D300000003FFF40280A20000000008000000043
-:102D400040280E200000000040000000C028122093
-:102D50000000000000040000006946220000061484
-:102D6000000000000020141000000000000000001F
-:102D7000002F022300000000000000000CC0000033
-:102D8000000003CC00000000C0401800000003CF8A
-:102D900000003FFFC0281A200000000000040000CF
-:102DA00000694626000006140000000000201810EC
-:102DB0000000000000000000002F022400000000BE
-:102DC000000000000CC00000000003D20000000062
-:102DD000C0401C00000003D500003FFFC0281E209B
-:102DE00000000000000400000069462700000614EF
-:102DF0000000000000201C10000000000000000087
-:102E0000002044020000000000000000002820C54F
-:102E10000000000000000000004948E80000000039
-:102E2000A580000000200811000000000000200024
-:102E300000200C110000000083000000006044111D
-:102E4000000003FD0000000000204402000000001C
-:102E500000000000C020480000000000000000004A
-:102E600040204800000000000000001FC021022098
-:102E7000000000000000000014C00000000003E299
-:102E8000000020100020441100000000000080001D
-:102E900000204811000000000000FFFFC048122081
-:102EA000000003EAA78000000020081100000000D5
-:102EB0000000A00000200C110000000083000000B2
-:102EC00000604411000003FD0000000000204402E7
-:102ED0000000000000000000C020480000000000CA
-:102EE00000000000C0204800000000000000FFFFBC
-:102EF000C0281220000000008300000000204411C0
-:102F000000000000000000000030488300000000C6
-:102F100084000000002044110000000000000000B8
-:102F2000C020480000000000000000001D0000005C
-:102F3000000000008300000000604411000003FD59
-:102F400000000000C040040000000001A980000053
-:102F500000200811000000000000C00000400C111B
-:102F6000000003E5AB800000002008110000000015
-:102F70000000F8E000400C11000003E5AD80000007
-:102F800000200811000000000000F88000400C1133
-:102F9000000003E5B38000000020081100000000DD
-:102FA0000000F3FC00400C11000003E5AF800000BE
-:102FB00000200811000000000000E00000400C119B
-:102FC000000003E5B18000000020081100000000AF
-:102FD0000000F00000400C11000003E58300000039
-:102FE000002044110000000000002148002048118A
-:102FF00000000000840000000020441100000000D8
-:1030000000000000C0204800000000000000000098
-:103010001D00000000000000000000000080000013
-:103020000000000000182000C03046200000000012
-:1030300000000000D900480000000000000000006F
-:10304000C0200400000000000000000000A0000AF2
-:10305000000000000018A000C03046200000000062
-:1030600000000000D900480000000000000000003F
-:10307000C0200400000000000000000000A0000AC2
-:10308000000000000018C000C03046200000000012
-:1030900000000000D900480000000000000000000F
-:1030A000C0200400000000000000000000A0000A92
-:1030B000000000000018F8E0C030462000000000CA
-:1030C00000000000D90048000000000000000000DF
-:1030D000C0200400000000000000000000A0000A62
-:1030E000000000000018F880C030462000000000FA
-:1030F00000000000D90048000000000000000000AF
-:10310000C0200400000000000000000000A0000A31
-:10311000000000000018E000C03046200000000061
-:1031200000000000D900480000000000000000007E
-:10313000C0200400000000000000000000A0000A01
-:10314000000000000018F000C03046200000000021
-:1031500000000000D900480000000000000000004E
-:10316000C0200400000000000000000000A0000AD1
-:10317000000000000018F3FCC030462000000000F2
-:1031800000000000D900480000000000000000001E
-:10319000C0200400000000000000000000A0000AA1
-:1031A0000000000086000000002044110000000024
-:1031B0000000000000404801000000008500000001
-:1031C0000020441100000000000000000040480101
-:1031D000000000000000217C0020441100000000DD
-:1031E00000000000C02048000000000000000000B7
-:1031F000C02048000000000000000000C02048007F
-:1032000000000000810000000020441100000000C8
-:103210000000000100204811000000000000000034
-:10322000C02008000000000000000000170000009F
-:10323000000000000004217F00604411000006141B
-:103240000000001F0021023000000000000000000C
-:1032500014C00000000000000000000000404C020C
-:103260000000042E00000000C0200C000000000040
-:1032700000000000C020100000000000000000005E
-:10328000C02014000000000000000000C020180052
-:103290000000000000000000C0201C000000000032
-:1032A00000007F0000280A21000000000000450007
-:1032B000002F022200000000000000000CE00000CF
-:1032C0000000043C00000000C020200000000000BE
-:1032D00000000000170000000000000000000010C7
-:1032E00000280A230000000000000010002F022226
-:1032F00000000000000000000CE00000000004449A
-:1033000081000000002044110000000000000001C6
-:10331000002048110000000000040000006946245D
-:103320000000061400000000004000000000044DF2
-:103330008100000000204411000000000000000097
-:1033400000204811000000000000216D0020441101
-:103350000000000000000000002048040000000001
-:1033600000000000002048050000000000000000F0
-:103370001AC00000000004499E0000000020441113
-:1033800000000000CAFEBABE002048110000000084
-:10339000000000001AE000000000044C00000000E3
-:1033A000002824F0000000000000000700280A2385
-:1033B0000000000000000001002F022200000000B9
-:1033C000000000000AE000000000045400000000BB
-:1033D000002F00C9000000000000000004E0000011
-:1033E0000000046D00000000004000000000047AAE
-:1033F00000000002002F0222000000000000000078
-:103400000AE000000000045900000000002F00C97D
-:10341000000000000000000002E000000000046D59
-:1034200000000000004000000000047A00000003DB
-:10343000002F022200000000000000000AE000004F
-:103440000000045E00000000002F00C90000000022
-:10345000000000000CE000000000046D000000000F
-:10346000004000000000047A00000004002F022247
-:1034700000000000000000000AE0000000000463FB
-:1034800000000000002F00C9000000000000000044
-:103490000AE000000000046D000000000040000091
-:1034A0000000047A00000005002F02220000000046
-:1034B000000000000AE000000000046800000000B6
-:1034C000002F00C9000000000000000006E000001E
-:1034D0000000046D00000000004000000000047ABD
-:1034E00000000006002F0222000000000000000083
-:1034F0000AE000000000046D00000000002F00C979
-:10350000000000000000000008E000000000046D62
-:1035100000000000004000000000047A00007F006E
-:1035200000280A210000000000004500002F0222B0
-:1035300000000000000000000AE0000000000000A1
-:103540000000000800210A23000000000000000025
-:1035500014C000000000047700002169002044111D
-:103560000000000000000000C02048000000000033
-:1035700000000000C0204800000000000000000023
-:10358000C020480000000000CAFEBABE004048113A
-:103590000000000000000000C02044000000000007
-:1035A00000000000C020000000000000000000003B
-:1035B000C04048000000000000007F0000280A21F1
-:1035C0000000000000004500002F02220000000063
-:1035D000000000000AE0000000000480000000007D
-:1035E000C02000000000000000000000C02000001B
-:1035F0000000000000000000C040000000000000CB
-:103600000000000000404C080000043C00000000E6
-:10361000C0200800000000000000001040210E2023
-:1036200000000000000000114021122000000000F6
-:103630000000001240211620000000000000216957
-:10364000002044110000000000000000002048029B
-:103650000000000000000000002102250000000022
-:103660000000000014E000000000048A00040000D4
-:10367000C0494A200000048BFFFBFFFFC0284A20FE
-:1036800000000000000000000021022300000000F4
-:103690000000000014E0000000000497000000009B
-:1036A000C02048000000000000000000C0204800CA
-:1036B00000000000000000000021022400000000C3
-:1036C0000000000014C000000000000081000000A5
-:1036D00000204411000000000000000C00204811F0
-:1036E00000000000000000000020001000000000AA
-:1036F0000000000014C0000000000493A0000000BF
-:103700000020441100000000CAFEBABE004048116B
-:1037100000000000810000000020441100000000B3
-:103720000000000400204811000000000000216B90
-:10373000002044110000000000000000C0204810DC
-:103740000000000081000000002044110000000083
-:103750000000000500204811000000000000216C5E
-:10376000002044110000000000000000C0204810AC
-:103770000000000000000000002F022400000000F4
-:10378000000000000CE0000000000000000000004D
-:10379000004000000000049100000000C0210A2049
-:1037A000000000000000000014C00000000004AE93
-:1037B0008100000000204411000000000000000013
-:1037C00000204811000000000000216D002044117D
-:1037D0000000000000000000C020480000000000C1
-:1037E00000000000C02048000000000000000000B1
-:1037F0001AC00000000004A99E000000002044112F
-:1038000000000000CAFEBABE0020481100000000FF
-:10381000000000001AE00000000004AC00000000FE
-:1038200000400000000004B28100000000204411AC
-:10383000000000000000000100204811000000000E
-:1038400000040000C0294620000000000000000025
-:10385000C0600000000006140000000100210222E8
-:10386000000000000000000014C00000000004B9C7
-:103870000000216900204411000000000000000049
-:10388000C02048000000000000000000C0204800E8
-:1038900000000000000000000020481000000000B0
-:1038A000CAFEBABE0040481100000000000000003F
-:1038B000C02044000000000000000000C04048108C
-:1038C0000000000081000000002044110000000002
-:1038D000000000010020481100000000000021F855
-:1038E00000204411000000000000000D00204811DD
-:1038F00000000000000421F90060441100000614DB
-:103900000000000000210230000000000000000064
-:1039100014C00000000004BB0000218000204411FE
-:103920000000000000000000C0204800000000006F
-:1039300000000000C02000000000000000000000A7
-:10394000C02048000000000000000000C02000006F
-:103950000000000000000000C0404800000000001F
-:103960000000000300333E2F0000000000000001B3
-:1039700000210221000000000000000014E000000F
-:10398000000004EB0000003500200A2D00000000BC
-:103990000004000018E00C11000004DA000000012F
-:1039A00000333E2F00000000000021690020441178
-:1039B000000000000000000000204802000000009D
-:1039C0000000000000204803000000000000000884
-:1039D00000300A220000000000000000C020480063
-:1039E0000000000000000000C020480000000000AF
-:1039F00000002169002044110000000000000000C8
-:103A000000204802000000000000000000204803E1
-:103A1000000000000000000800300A220000000042
-:103A200000000000C020480000000000000000006E
-:103A3000D8C04800000004CE0000216900204411D5
-:103A4000000000000000000000204802000000000C
-:103A500000000000002048030000000000000008F3
-:103A600000300A220000000000000000C0204800D2
-:103A70000000000000000000C0204800000000001E
-:103A8000000000360020122D0000000000000000A1
-:103A900000290C830000000000002169002044116F
-:103AA00000000000000000000020480200000000AC
-:103AB0000000000000204803000000000000000893
-:103AC00000300A220000000000000000C020480072
-:103AD0000000000000000000C020480000000000BE
-:103AE000000000110021022400000000000000007E
-:103AF00014C00000000000000000000000400000B2
-:103B00000000049100000035C020362000000000B5
-:103B100000000036C0403620000000000000304A9F
-:103B20000020441100000000E0000000C0484A20CE
-:103B3000000000000000000F002102210000000032
-:103B40000000000014C00000000004F200000000AB
-:103B5000006000000000000B00000000D900000021
-:103B60000000000000000000C04004000000000150
-:103B7000810000000020441100000000000000024D
-:103B80000020481100000000000000FF00280E3057
-:103B90000000000000000000002F022300000000D1
-:103BA000000000000CC00000000004F6000000004F
-:103BB000C0200800000000000000000014C0000049
-:103BC0000000050B0000000000200C1100000000A8
-:103BD0000000002400203623000000000000003414
-:103BE00000203623000000000000003200203623B1
-:103BF000000000000000003100203623000000001B
-:103C00000000001D00203623000000000000002DF1
-:103C100000203623000000000000002E0020362384
-:103C2000000000000000001B002036230000000000
-:103C30000000001C0020362300000000FFFFE00011
-:103C400000200C1100000000000000290020362395
-:103C5000000000000000002A0020362300000000C1
-:103C600000001FFF00200C11000000000000002BCE
-:103C700000203623000000000000002C0020362326
-:103C800000000000F1FFFFFF00283A2E00000000B6
-:103C90000000001AC0220E200000000000000000FA
-:103CA0000029386E0000000081000000002044114F
-:103CB0000000000000000006002048110000000085
-:103CC0000000003340203620000000008700000084
-:103CD000002044110000000000000000C020480047
-:103CE000000000000000A1F40020441100000000CA
-:103CF0000000000000204810000000009D000000AF
-:103D000000204411000000000000001F40214A2054
-:103D10000000000096000000002044110000000098
-:103D200000000000C020480000000000000000006B
-:103D3000C0200C000000000000000000C0201000A7
-:103D4000000000000000001F0021162400000000F9
-:103D50000000000014C0000000000000000000256A
-:103D600000203623000000000000000300281E236E
-:103D700000000000000000080022222300000000D4
-:103D8000FFFFF000002822280000000000000000D3
-:103D9000002920E80000000000000027002036284D
-:103DA000000000000000001800211E230000000099
-:103DB000000000280020362700000000000000025C
-:103DC000002216240000000000000000003014A8AB
-:103DD0000000000000000026002036250000000042
-:103DE0000000000300211A24000000001000000061
-:103DF00000281A2600000000EFFFFFFF00283A2EDF
-:103E00000000000000000000004938CE000006025B
-:103E10000000000140280A20000000000000000609
-:103E200040280E200000000000000300C0281220DF
-:103E30000000000000000008002112240000000023
-:103E400000000000C020162000000000000000005C
-:103E5000C0201A2000000000000000000021022203
-:103E6000000000000000000014C000000000054138
-:103E7000810000000020441100000000000000014B
-:103E800000204811000000000000225800300A24E1
-:103E90000000000000040000006946220000061433
-:103EA0000000216900204411000000000000000013
-:103EB00000204805000000000002000000294A26FA
-:103EC000000000000000000000204810000000007A
-:103ED000CAFEBABE00204811000000000000000227
-:103EE000002F022300000000000000000CC00000B2
-:103EF0000000054900000000C0201C100000000068
-:103F000000000000C04000000000055B000000024F
-:103F1000002F022300000000000000000CC0000081
-:103F2000000005498100000000204411000000004D
-:103F3000000000010020481100000000000022588D
-:103F400000300A240000000000040000006946223E
-:103F50000000061400000000C0201C10000000003B
-:103F600000000000C04000000000055B00000000F1
-:103F7000002F022300000000000000000CC0000021
-:103F80000000054D00000000C0201C0000000000E3
-:103F900000000000C04000000000055B00000004BD
-:103FA000002F022300000000000000000CC00000F1
-:103FB00000000559810000000020441100000000AD
-:103FC0000000000000204811000000000000216DEA
-:103FD000002044110000000000000000C020480044
-:103FE0000000000000000000C020480000000000A9
-:103FF000000000001AC00000000005549E000000F0
-:104000000020441100000000CAFEBABE0020481182
-:1040100000000000000000001AE00000000005574A
-:104020000000000000401C100000055B00000000C4
-:10403000C02000000000000000000000C0400000A0
-:1040400000000000000000000EE000000000055D20
-:104050000000000000600000000005A40000000057
-:10406000002F022400000000000000000CC000002F
-:104070000000056D0000A2B7002044110000000000
-:104080000000000000204807000000008100000040
-:104090000020441100000000000000010020481131
-:1040A000000000000004A2B60060441100000614E5
-:1040B0000000001A0021223000000000000000066D
-:1040C00000222630000000000000A2C4002044119D
-:1040D0000000000000000000003048E9000000007F
-:1040E0000000000000E000000000056B0000A2D10D
-:1040F00000204411000000000000000000404808BB
-:10410000000000000000A2D10020441100000000C7
-:104110000000000100504A280000000000000001DB
-:10412000002F022400000000000000000CC000006E
-:104130000000057D0000A2BB00204411000000002B
-:10414000000000000020480700000000810000007F
-:104150000020441100000000000000010020481170
-:10416000000000000004A2BA006044110000061420
-:104170000000001A002122300000000000000006AC
-:1041800000222630000000000000A2C500204411DB
-:104190000000000000000000003048E900000000BE
-:1041A0000000000000E000000000057B0000A2D23B
-:1041B00000204411000000000000000000404808FA
-:1041C000000000000000A2D2002044110000000006
-:1041D0000000000100504A2800000000000000021A
-:1041E000002F022400000000000000000CC00000AE
-:1041F0000000058D0000A2BF002044110000000057
-:1042000000000000002048070000000081000000BE
-:1042100000204411000000000000000100204811AF
-:10422000000000000004A2BE00604411000006145B
-:104230000000001A002122300000000000000006EB
-:1042400000222630000000000000A2C60020441119
-:104250000000000000000000003048E900000000FD
-:104260000000000000E000000000058B0000A2D369
-:104270000020441100000000000000000040480839
-:10428000000000000000A2D3002044110000000044
-:104290000000000100504A28000000000000A2C3F6
-:1042A000002044110000000000000000002048072A
-:1042B0000000000081000000002044110000000008
-:1042C0000000000100204811000000000004A2C20C
-:1042D00000604411000006140000001A0021223082
-:1042E0000000000000000006002226300000000050
-:1042F0000000A2C7002044110000000000000000E0
-:10430000003048E9000000000000000000E000006C
-:10431000000005990000A2D4002044110000000014
-:104320000000000000404808000000000000A2D487
-:1043300000204411000000000000000100504A2845
-:104340000000000085000000002044110000000073
-:104350000000000000204801000000000000304A7A
-:10436000002044110000000001000000002048115E
-:104370000000000000000000004000000000059F59
-:10438000A4000000C0204411000000000000000054
-:10439000C04048000000000000000000C0600000B5
-:1043A000000005A400000000C0400400000000015F
-:1043B0000001A2A400204411000000000000000041
-:1043C00000204811000000000000000000204811FB
-:1043D0000000000000000000002048110000000064
-:1043E000000000000020481100000000000000054F
-:1043F00000204811000000000000A1F4002044113A
-:104400000000000000000000002048110000000033
-:10441000880000000020441100000000000000019E
-:104420000020481100000000FF000000002044119F
-:104430000000000000000000002048110000000003
-:1044400000000001002048110000000000000002F0
-:104450000080481100000000000000000EE0000095
-:10446000000005B700001000002008110000000047
-:104470000000003400203622000000000000000090
-:1044800000600000000005BB0000000000600000AC
-:10449000000005A498000000002044110000000066
-:1044A0000000000000804811000000000000000033
-:1044B000C0600000000005BB00000000C040040018
-:1044C000000000010000A2A4002044110000000030
-:1044D00000000022002048110000000089000000B8
-:1044E00000204411000000000000000100204811DD
-:1044F00000000000FF000000002044110000000048
-:104500000000000000204811000000000000000131
-:104510000020481100000000000000020080481147
-:10452000000000000000217AC020441100000000BB
-:10453000000000000040481100000000970000004B
-:10454000002044110000000000000000002048117D
-:10455000000000008A00000000204411000000005C
-:10456000000000000020481100000000FF000000D3
-:10457000002044110000000000000000002048114D
-:1045800000000000000000010020481100000000B1
-:104590000000000200804811000000000000000040
-:1045A00000600000000005E1000020100020441120
-:1045B0000000000000008000002048110000000002
-:1045C0000001A2A4C020441100000000000000006F
-:1045D0000020481100000000000000160060481193
-:1045E0000000035E000000160020481100000000DB
-:1045F0000000201000204411000000000001000015
-:10460000002048110000000081000000002044113B
-:104610000000000000000001002048110000000020
-:104620000000217C002044110000000009800000EF
-:104630000020481100000000FFFFFFFF002048118C
-:1046400000000000000000000020481100000000F1
-:104650000000000017000000000000000004217F9F
-:1046600000604411000006140000001F0021023009
-:10467000000000000000000014C000000000000066
-:104680000000000400404C11000005DC0000001D8B
-:1046900000201E2D000000000000000400291E273D
-:1046A000000000000000001D008036270000000010
-:1046B0000000001D00201E2D00000000FFFFFFFB7A
-:1046C00000281E27000000000000001D0080362783
-:1046D000000000000000001D00201E2D0000000052
-:1046E0000000000800291E27000000000000001D37
-:1046F00000803627000000000000001D00201E2D55
-:1047000000000000FFFFFFF700281E270000000048
-:104710000000001D0080362700000000000020106F
-:10472000002044110000000000008000002048111B
-:10473000000000000001A2A40020441100000000BD
-:1047400000000000002048110000000000000016DA
-:10475000006048110000035E0000001600204811B0
-:1047600000000000000020100020441100000000A4
-:104770000001000000204811000000000000217C22
-:1047800000204411000000000180000000204811BA
-:104790000000000000FFFFFF0020481100000000A3
-:1047A0000000000000204811000000000000000090
-:1047B00017000000000000008100000000204411EC
-:1047C000000000000000000100204811000000006F
-:1047D0000004217F00604411000006140000000066
-:1047E00000200010000000000000000014C00000C5
-:1047F000000006130000001000404C11000005F9F5
-:1048000000000000C02004000000000000000000C4
-:1048100038C00000000000000000002500200A2D24
-:10482000000000000000002600200E2D0000000007
-:10483000000000270020122D0000000000000028CA
-:104840000020162D00000000000021690020441106
-:1048500000000000000000000020480400000000EC
-:1048600000000000002048050000000000000000DB
-:104870000020480100000000CAFEBABE0020481116
-:1048800000000000000000040030122400000000BE
-:1048900000000000002F0064000000000000000085
-:1048A0000CC00000000006120000000300281A22BD
-:1048B000000000000000000800221222000000009A
-:1048C000FFFFF0000028122400000000000000009C
-:1048D000002910C40000000000000027004036241A
-:1048E0000000000000000000008000000000000048
-:1048F000000000001AC00000000006149F00000025
-:104900000020441100000000CAFEBABE0020481179
-:1049100000000000000000001AE000000000061780
-:104920000000000000800000000000000000000007
-:10493000006000000000000B000010000060041187
-:10494000000002FE00000000002004110000000032
-:1049500000000000006008110000019F0000225CC0
-:104960000020441100000000000000030020481156
-:10497000000000000000225600204411000000004A
-:104980000000001B00204811000000000000A1FCF6
-:104990000020441100000000000000010020481128
-:1049A000000000000001A1FDC02044110000000033
-:1049B0000000002900201E2D000000000000001053
-:1049C00000221E27000000000000002C0020222DE5
-:1049D000000000000000FFFF002822280000000067
-:1049E000000000000029490700000000000000004E
-:1049F00000204811000000000000002A0020222DA5
-:104A0000000000000000FFFF002822280000000036
-:104A1000000000000029490700000000000000001D
-:104A200000204811000000000000002B00201E2D77
-:104A3000000000000000001000221E2700000000FF
-:104A400000000000002949070000000000000000ED
-:104A500000404811000000000000000000000000BD
-:104A60000000000000000000000000000000000046
-:104A70000000000000000000000000000000000036
-:104A80000000000000000000000000000000000026
-:104A90000000000000000000000000000000000016
-:104AA0000000000000000000000000000000000006
-:104AB00000000000000000000000000000000000F6
-:104AC00000000000000000000000000000000000E6
-:104AD00000000000000000000000000000000000D6
-:104AE00000000000000000000000000000000000C6
-:104AF00000000000000000000000000000000000B6
-:104B000000000000000000000000000000000000A5
-:104B10000000000000000000000000000000000095
-:104B20000000000000000000000000000000000085
-:104B30000000000000000000000000000000000075
-:104B40000000000000000000000000000000000065
-:104B50000000000000000000000000000000000055
-:104B60000000000000000000000000000000000045
-:104B70000000000000000000000000000000000035
-:104B80000000000000000000000000000000000025
-:104B90000000000000000000000000000000000015
-:104BA0000000000000000000000000000000000005
-:104BB00000000000000000000000000000000000F5
-:104BC00000000000000000000000000000000000E5
-:104BD00000000000000000000000000000000000D5
-:104BE00000000000000000000000000000000000C5
-:104BF00000000000000000000000000000000000B5
-:104C000000000000000000000000000000000000A4
-:104C10000000000000000000000000000000000094
-:104C20000000000000000000000000000000000084
-:104C30000000000000000000000000000000000074
-:104C40000000000000000000000000000000000064
-:104C50000000000000000000000000000000000054
-:104C60000000000000000000000000000000000044
-:104C70000000000000000000000000000000000034
-:104C80000000000000000000000000000000000024
-:104C90000000000000000000000000000000000014
-:104CA0000000000000000000000000000000000004
-:104CB00000000000000000000000000000000000F4
-:104CC00000000000000000000000000000000000E4
-:104CD00000000000000000000000000000000000D4
-:104CE00000000000000000000000000000000000C4
-:104CF00000000000000000000000000000000000B4
-:104D000000000000000000000000000000000000A3
-:104D10000000000000000000000000000000000093
-:104D20000000000000000000000000000000000083
-:104D30000000000000000000000000000000000073
-:104D40000000000000000000000000000000000063
-:104D50000000000000000000000000000000000053
-:104D60000000000000000000000000000000000043
-:104D70000000000000000000000000000000000033
-:104D80000000000000000000000000000000000023
-:104D90000000000000000000000000000000000013
-:104DA0000000000000000000000000000000000003
-:104DB00000000000000000000000000000000000F3
-:104DC00000000000000000000000000000000000E3
-:104DD00000000000000000000000000000000000D3
-:104DE00000000000000000000000000000000000C3
-:104DF00000000000000000000000000000000000B3
-:104E000000000000000000000000000000000000A2
-:104E10000000000000000000000000000000000092
-:104E20000000000000000000000000000000000082
-:104E30000000000000000000000000000000000072
-:104E40000000000000000000000000000000000062
-:104E50000000000000000000000000000000000052
-:104E60000000000000000000000000000000000042
-:104E70000000000000000000000000000000000032
-:104E80000000000000000000000000000000000022
-:104E90000000000000000000000000000000000012
-:104EA0000000000000000000000000000000000002
-:104EB00000000000000000000000000000000000F2
-:104EC00000000000000000000000000000000000E2
-:104ED00000000000000000000000000000000000D2
-:104EE00000000000000000000000000000000000C2
-:104EF00000000000000000000000000000000000B2
-:104F000000000000000000000000000000000000A1
-:104F10000000000000000000000000000000000091
-:104F20000000000000000000000000000000000081
-:104F30000000000000000000000000000000000071
-:104F40000000000000000000000000000000000061
-:104F50000000000000000000000000000000000051
-:104F60000000000000000000000000000000000041
-:104F70000000000000000000000000000000000031
-:104F80000000000000000000000000000000000021
-:104F90000000000000000000000000000000000011
-:104FA0000000000000000000000000000000000001
-:104FB00000000000000000000000000000000000F1
-:104FC00000000000000000000000000000000000E1
-:104FD00000000000000000000000000000000000D1
-:104FE00000000000000000000000000000000000C1
-:104FF00000000000000000000000000000000000B1
-:1050000000000000000000000000000000000000A0
-:105010000000000000000000000000000000000090
-:105020000000000000000000000000000000000080
-:105030000000000000000000000000000000000070
-:105040000000000000000000000000000000000060
-:105050000000000000000000000000000000000050
-:105060000000000000000000000000000000000040
-:105070000000000000000000000000000000000030
-:105080000000000000000000000000000000000020
-:105090000000000000000000000000000000000010
-:1050A0000000000000000000000000000000000000
-:1050B00000000000000000000000000000000000F0
-:1050C00000000000000000000000000000000000E0
-:1050D00000000000000000000000000000000000D0
-:1050E00000000000000000000000000000000000C0
-:1050F00000000000000000000000000000000000B0
-:10510000000000000000000000000000000000009F
-:10511000000000000000000000000000000000008F
-:10512000000000000000000000000000000000007F
-:10513000000000000000000000000000000000006F
-:10514000000000000000000000000000000000005F
-:10515000000000000000000000000000000000004F
-:10516000000000000000000000000000000000003F
-:10517000000000000000000000000000000000002F
-:10518000000000000000000000000000000000001F
-:10519000000000000000000000000000000000000F
-:1051A00000000000000000000000000000000000FF
-:1051B00000000000000000000000000000000000EF
-:1051C00000000000000000000000000000000000DF
-:1051D00000000000000000000000000000000000CF
-:1051E00000000000000000000000000000000000BF
-:1051F00000000000000000000000000000000000AF
-:10520000000000000000000000000000000000009E
-:10521000000000000000000000000000000000008E
-:10522000000000000000000000000000000000007E
-:10523000000000000000000000000000000000006E
-:10524000000000000000000000000000000000005E
-:10525000000000000000000000000000000000004E
-:10526000000000000000000000000000000000003E
-:10527000000000000000000000000000000000002E
-:10528000000000000000000000000000000000001E
-:10529000000000000000000000000000000000000E
-:1052A00000000000000000000000000000000000FE
-:1052B000013304EF059B02390000000001B00159E1
-:1052C0000425059B00000000021201F6023901428C
-:1052D000000000000210022E0289022A00000000D5
-:1052E00003C2059B059B059B0000000005CD05CE74
-:1052F0000308059B00000000059B05A00309032986
-:10530000000000000313026B032B031D00000000CC
-:10531000059B059B059B059B00000000059B052C3C
-:10532000059B059B0000000003A5059B04A2032D1F
-:1053300000000000048104330423059B00000000EA
-:1053400004BB04ED042704C800000000043304F487
-:10535000033A036500000000059B059B059B059B28
-:1053600000000000059B059B059B059B00000000BD
-:10537000059B059B05B905A200000000059B059B48
-:105380000007059B00000000059B059B059B059BF6
-:1053900000000000059B059B059B059B000000008D
-:1053A00003E303D803F303F10000000003F903F55E
-:1053B00003F703FB0000000004070403040F040BC1
-:1053C0000000000004170413041F041B0000000069
-:1053D000059B059B059B059B00000000059B059B0D
-:1053E000059B059B00000000059B059B059B059BFD
-:1053F0000000000000020600061900060000000080
-:00000001FF
diff --git a/firmware/radeon/R600_pfp.bin.ihex b/firmware/radeon/R600_pfp.bin.ihex
deleted file mode 100644
index 52361086c280..000000000000
--- a/firmware/radeon/R600_pfp.bin.ihex
+++ /dev/null
@@ -1,145 +0,0 @@
-:1000000000D4007100D4007200CA040000A00000F7
-:10001000007E828B0080000300CA040000D4401ED2
-:1000200000EE001E00CA040000A00000007E828BCB
-:1000300000C4183800CA240000CA2800009581A80E
-:1000400000C41C3A00C3C00000CA080000CA0C006B
-:10005000007C744B00C200050099C00000C41C3A2B
-:10006000007C744C00C0FFF000042C0400309002AF
-:10007000007D250000351402007D350B002554035A
-:10008000007CD58000259C030095C00400D5001B92
-:10009000007EDDC1007D9D8000D6801B00D5801BC9
-:1000A00000D4401E00D5401E00D6401E00D6801E43
-:1000B00000D4801E00D4C01E009783D400D5C01E7B
-:1000C00000CA08000080001B00CA0C0000E4011EEA
-:1000D00000D4001E0080000D00C4183800E4013E6A
-:1000E00000D4001E0080000D00C4183800D4401E4B
-:1000F00000EE001E00CA040000A00000007E828BFB
-:1001000000E4011E00D4001E00D4401E00EE001EBC
-:1001100000CA040000A00000007E828B00E4013EC3
-:1001200000D4001E00D4401E00EE001E00CA0400D1
-:1001300000A00000007E828B00CA180000D4401E80
-:1001400000D5801E0080005400D4007300D4401EEF
-:1001500000CA080000CA0C0000CA100000D48019B0
-:1001600000D4C01800D5001700D4801E00D4C01ED3
-:1001700000D5001E00E2001E00CA040000A000001E
-:10018000007E828B00CA080000D4806000D4401E2C
-:100190000080000200D4801E00CA080000D48061E4
-:1001A00000D4401E0080000200D4801E00CA080057
-:1001B00000CA0C0000D4401E00D4801600D4C01623
-:1001C00000D4801E008001B900D4C01E00C6083EC5
-:1001D00000CA0C0000CA10000094800400CA140079
-:1001E00000E420F300D4201300D5606500D4E01CA7
-:1001F00000D5201C00D5601C0080000200062001F4
-:1002000000C6083E00CA0C0000CA1000009483F724
-:1002100000CA140000E420F30080007A00D4201308
-:1002200000C6083E00CA0C0000CA1000009883EF08
-:1002300000CA140000D400640080008E000000009A
-:1002400000C4143200C6183E00C4082F00954005B3
-:1002500000C40C3000D4401E0080000200EE001EDE
-:10026000009583F500C4103100D4403300D52065DB
-:1002700000D4A01C00D4E01C00D5201C00D40073C6
-:1002800000E4015E00D4001E008001B900062001D8
-:10029000000A200100D6007400C4083600C61040D1
-:1002A0000098800700CC38350095010F00D4001F5E
-:1002B00000D460620080000200D4206200CC1433BD
-:1002C000008401BC00D4007000D5401E00800002F4
-:1002D00000EE001E00CA0C0000CA100000D4C01AB4
-:1002E000008401BC00D5001A00CC04430035101F67
-:1002F000002C9401007D098B00984005007D15CBF2
-:1003000000D4001A008001B900D4006D003444010B
-:1003100000CC0C440098403A00CC2C460095800458
-:1003200000CC0445008001B900D4001A00D4C01AE2
-:1003300000282801008400F300CC10030098801BE3
-:100340000004380C008400F300CC100300988017E0
-:1003500000043808008400F300CC100300988013D8
-:1003600000043804008400F300CC100300988014CB
-:1003700000CC1047009A800900CC1448009840DA5D
-:1003800000D4006D00CC184400D5001A00D5401AE6
-:10039000008000CC00D5801A0096C0D300D4006D38
-:1003A000008001B900D4006E009AC00300D4006D33
-:1003B00000D4006E0080000200EC007F009AC0CAEA
-:1003C00000D4006D008001B900D4006E00CC14038D
-:1003D00000CC180300CC1C03007D9103007DD58365
-:1003E000007D190C0035CC1F0035701F007CF0CB50
-:1003F000007CD08B00880000007E8E8B0095C004AE
-:1004000000D4006E008001B900D4001A00D4C01AD4
-:1004100000CC080300CC0C0300CC100300CC140368
-:1004200000CC180300CC1C0300CC240300CC280310
-:100430000035C41F0036B01F007C704B0034F01F25
-:10044000007C704B0035701F007C704B007D8881F4
-:10045000007DCCC1007E5101007E9541007C9082E0
-:10046000007CD4C2007C848B009AC003007C8C8BFF
-:10047000002C88010098809C00D4006D0098409A60
-:1004800000D4006E00CC084700CC0C4800CC1044CF
-:1004900000D4801A00D4C01A0080010400D5001ACC
-:1004A00000CC083200D40032009482D800CA0C007C
-:1004B00000D4401E0080000200D4001E00E4011E93
-:1004C00000D4001E00CA080000CA0C0000CA1000B8
-:1004D00000D4401E00CA140000D4801E00D4C01EE8
-:1004E00000D5001E00D5401E00D54034008000021B
-:1004F00000EE001E0028040400E2001A00E2001AC8
-:1005000000D4401A00CA380000CC080300CC0C0309
-:1005100000CC0C0300CC0C03009882BC000000004F
-:10052000008401BC00D7806F0080000200EE001F35
-:1005300000CA040000C2FF0000CC083400C13FFF25
-:10054000007C74CB007CC90B007D010F009902AFC9
-:10055000007C738B008401BC00D7806F0080000298
-:1005600000EE001F00CA080000281900007D898BDA
-:10057000009580140028140400CA0C0000CA100062
-:1005800000CA1C0000CA240000E2001F00D4C01AE8
-:1005900000D5001A00D5401A00CC180300CC2C035B
-:1005A00000CC2C0300CC2C03007DA58B007D9C4748
-:1005B00000984296000000000080016400D4C01A38
-:1005C00000D4401E00D4801E0080000200EE001EF9
-:1005D00000E4011E00D4001E00D4401E00EE001EE8
-:1005E00000CA040000A00000007E828B00E4013EEF
-:1005F00000D4001E00D4401E00EE001E00CA0400FD
-:1006000000A00000007E828B00CA080000248C0637
-:10061000000CCC060098C00600CC104900990004DC
-:1006200000D4007100E4011E00D4001E00D4401E5E
-:1006300000D4801E0080000200EE001E00CA0800E8
-:1006400000CA0C000034D018002510010095001FCE
-:1006500000C17FFF00CA100000CA140000CA1800C1
-:1006600000D4801D00D4C01D007DB18B00C14202AA
-:1006700000C2C00100D5801D0034DC0E007D5D4C41
-:10068000007F734C00D7401E00D5001E00D5401ED1
-:1006900000C1420000C2C00000099C010031DC1012
-:1006A000007F5F4C007F734C007D838000D5806F9E
-:1006B00000D5806600D7401E00EC005E00C8240212
-:1006C000008001B900D6007400D4401E00D4801E02
-:1006D00000D4C01E0080000200EE001E0080000258
-:1006E00000EE001F00D4001F0080000200D4001F95
-:1006F00000D4001F0088000000D4001F000000008C
-:1007000000000000000000000000000000000000E9
-:1007100000000000000000000000000000000000D9
-:1007200000000000000000000000000000000000C9
-:1007300000000000000000000000000000000000B9
-:1007400000000000000000000000000000000000A9
-:100750000000000000000000000000000000000099
-:100760000000000000000000000000000000000089
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B0000000000000000000000000000000000039
-:1007C0000000000000000000000000000000000029
-:1007D0000000000000000000000000000000000019
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:10080000000101740002017B0003009000040080DD
-:100810000005000500060040000700330008012F16
-:1008200000090047000A0037001001B7001700A4B4
-:100830000022013D0023014C002000B500240128C6
-:100840000027004E0028006B002A0061002B005397
-:10085000002F00660032008800340182003C0159FC
-:10086000003F00730041018F0044013100550176C3
-:100870000056017D0060000C006100350062003907
-:1008800000630039006400390065003900660039F2
-:10089000006700390068003B00690042006A0049B7
-:1008A000006B0049006C0049006D0049006E004972
-:1008B000006F0049007301B7000000070000000747
-:1008C000000000070000000700000007000000070C
-:1008D00000000007000000070000000700000007FC
-:1008E00000000007000000070000000700000007EC
-:1008F00000000007000000070000000700000007DC
-:00000001FF
diff --git a/firmware/radeon/RS600_cp.bin.ihex b/firmware/radeon/RS600_cp.bin.ihex
deleted file mode 100644
index 4a895016aca4..000000000000
--- a/firmware/radeon/RS600_cp.bin.ihex
+++ /dev/null
@@ -1,130 +0,0 @@
-:10000000000000004200E000000000004000E000AE
-:1000100000000008000000A000000008000000A48C
-:10002000000000004A554B4A000000004A4A44675D
-:100030000000000055526F75000000004A7E7D658B
-:10004000000000004AE74AF6000000004AD34A4A8E
-:1000500000000000D689898900000000CD4ADDCF6C
-:10006000000000008EBE4AE200000000C38A8A8AB7
-:10007000000000004A0F8CC800000004000CA00023
-:1000800000000038000D0012000000040000E8B479
-:1000900000000038000D0014000000040000E8B665
-:1000A00000000038000D0016000000040000E854B5
-:1000B00000000038000D0018000000040000E855A2
-:1000C00000000038000D001A000000040000E8568F
-:1000D00000000038000D001C000000040000E8577C
-:1000E00000000038000D001E000000040000E8249D
-:1000F00000000038000D0020000000040000E8258A
-:1001000000000038000D0022000000040000E8306C
-:1001100000000038000D0024000000040000F0C0C2
-:1001200000000038000D0026000000040000F0C1AF
-:1001300000000038000D0028000000040000F0411D
-:1001400000000038000D002A000000040000F184C7
-:1001500000000038000D002C000000040000F185B4
-:1001600000000038000D002E000000040000F186A1
-:1001700000000038000D0030000000040000F1878E
-:1001800000000038000D0032000000040000F18083
-:1001900000000038000D0034000000040000F3935C
-:1001A00000000038000D0036000000040000F38A53
-:1001B00000000038000D0038000000040000F38E3D
-:1001C000000000040000E821000000040140A0003D
-:1001D00000000018000000430000000400CCE8000C
-:1001E00000000004001B000100000004080048009B
-:1001F00000000004001B000100000004080048008B
-:1002000000000004001B000100000004080048007A
-:10021000000000080000003A000000000000A000FC
-:10022000000000042000451D000000040000E580DF
-:1002300000000004000CE581000000040800458077
-:1002400000000004000CE5810000000800000047E9
-:10025000000000000000A00000000004000C2000CE
-:10026000000000040000E50E000000040003200070
-:10027000000000280002205100000024000000516E
-:10028000000000040800450F000000080000A04B1B
-:10029000000000040000E565000000040000E566C1
-:1002A00000000008000000520000000403CCA5B4C8
-:1002B00000000004054320000000000400022000AC
-:1002C000000000304CCCE05E0000000408274565CB
-:1002D000000000300000005E0000000408004564DB
-:1002E000000000040000E566000000080000005562
-:1002F00000000010008020610000000400202000A9
-:1003000000000004001B00FF00000010010000645A
-:1003100000000004001F200000000004001C00FF7B
-:100320000000000C0000000000000030000000721F
-:100330000000000800000055000000040000E57601
-:10034000000000040000E577000000040000E50E56
-:10035000000000040000E50F000000040140A000C0
-:100360000000001800000069000000C200C0E5F9AC
-:100370000000000800000069000000040014E50E01
-:10038000000000040040E50F0000000800C0006C01
-:10039000000000040000E570000000040000E571AA
-:1003A0000000000C0000E572000000040000A00046
-:1003B000000000040140A000000000040000E56807
-:1003C00000000004000C200000000018000000766F
-:1003D00000000004000B00000000000418C0E562EB
-:1003E00000000008000000780000000800C000774E
-:1003F00000000004000700D5000000380000008461
-:1004000000000030000CA08600000004080045BB7E
-:1004100000000030000C2087000000000800E5BC50
-:10042000000000040000E5BB000000000000E5BC87
-:100430000000000C00120000000000040012000088
-:100440000000000C001B0002000000040000A000DF
-:10045000000000040000E821000000000000E800A7
-:10046000000000040000E821000000000000E82E69
-:100470000000000402CCA0000000000400140000F2
-:1004800000000004000CE1CC00000004050DE1CDEB
-:10049000000000040040000000000018000000966A
-:1004A0000000000400C0A00000000008000000934D
-:1004B0000000002000000098000000004200E00062
-:1004C000000000380000009F00000004000CA000A5
-:1004D000000000040014000000000004000C2000D4
-:1004E000000000040016000000000004700CE00092
-:1004F000000000080014009B000000004000E00025
-:10050000000000040240000000000004400EE00073
-:100510000000000402400000000000004000E00075
-:1005200000000004000C2000000000040240E51B55
-:10053000000000050080E50A000000050080E50BD2
-:10054000000000040022000000000004000700D5A5
-:1005500000000038000000B200000030000C2087CE
-:10056000000000050880E5BD00000030000C20867A
-:10057000000000050800E5BB00000030000C2087EB
-:10058000000000050880E5BC00000008000000B580
-:10059000000000050080E5BD000000050000E5BB8F
-:1005A000000000050080E5BC000000040021000000
-:1005B00000000004028000000000001800C000B924
-:1005C000000000404180E00000000024000000BB6B
-:1005D0000000000C010000000000000C0100E51DFF
-:1005E00000000004000045BB00000008000080B5CA
-:1005F000000000040000F3CE000000040140A00051
-:100600000000000400CC20000000004008C053CFD0
-:100610000000000000008000000000040000F3D291
-:10062000000000040140A0000000000400CC2000F5
-:100630000000004008C053D300000000000080000C
-:10064000000000040000F39D000000040140A00031
-:100650000000000400CC20000000004008C0539EB1
-:1006600000000000000080000000000403C008300B
-:10067000000000004200E000000000040000A000B4
-:1006800000000004200045E0000000000000E5E15B
-:10069000000000000000000100000004000700D27C
-:1006A000000000000800E3940000000000000000CB
-:1006B000000000040000E8C4000000040000E8C5D9
-:1006C000000000040000E8C6000000040000E92863
-:1006D000000000040000E929000000040000E92AED
-:1006E00000000008000000D6000000040000E92817
-:1006F000000000040000E929000000040000E92ACD
-:1007000000000008000000DD0000000000E001160D
-:1007100000000004000700E1000000040800401C85
-:1007200000000004200050E7000000040000E01D6D
-:1007300000000008000000E40000000402C02000E7
-:10074000000000040006000000000034000000EB80
-:1007500000000008000000E8000000040000800025
-:1007600000000000C000E0000000000000000000E9
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B00000000004000C200000000004001D0018D0
-:1007C00000000004001A000100000034000000FBDB
-:1007D000000000080000004A000000080500A04AD0
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:00000001FF
-/* production radeon ucode r1xx-r6xx */
diff --git a/firmware/radeon/RS690_cp.bin.ihex b/firmware/radeon/RS690_cp.bin.ihex
deleted file mode 100644
index 689627441d8b..000000000000
--- a/firmware/radeon/RS690_cp.bin.ihex
+++ /dev/null
@@ -1,130 +0,0 @@
-:1000000000000008000000DD00000008000000DF24
-:1000100000000008000000A000000008000000A48C
-:10002000000000004A554B4A000000004A4A44675D
-:100030000000000055526F75000000004A7E7D658B
-:10004000000000004AD74AF6000000004AC94A4AA8
-:1000500000000000CC89898900000000C34AD3C594
-:10006000000000008E4A4A4A000000004A8A8A8A3C
-:10007000000000004A0F8C4A00000004000CA000A1
-:1000800000000038000D0012000000040000E8B479
-:1000900000000038000D0014000000040000E8B665
-:1000A00000000038000D0016000000040000E854B5
-:1000B00000000038000D0018000000040000E855A2
-:1000C00000000038000D001A000000040000E8568F
-:1000D00000000038000D001C000000040000E8577C
-:1000E00000000038000D001E000000040000E8249D
-:1000F00000000038000D0020000000040000E8258A
-:1001000000000038000D0022000000040000E8306C
-:1001100000000038000D0024000000040000F0C0C2
-:1001200000000038000D0026000000040000F0C1AF
-:1001300000000038000D0028000000040000F0411D
-:1001400000000038000D002A000000040000F184C7
-:1001500000000038000D002C000000040000F185B4
-:1001600000000038000D002E000000040000F186A1
-:1001700000000038000D0030000000040000F1878E
-:1001800000000038000D0032000000040000F18083
-:1001900000000038000D0034000000040000F3935C
-:1001A00000000038000D0036000000040000F38A53
-:1001B00000000038000D0038000000040000F38E3D
-:1001C000000000040000E821000000040140A0003D
-:1001D00000000018000000430000000400CCE8000C
-:1001E00000000004001B000100000004080048009B
-:1001F00000000004001B000100000004080048008B
-:1002000000000004001B000100000004080048007A
-:10021000000000080000003A000000000000A000FC
-:10022000000000042000451D000000040000E580DF
-:1002300000000004000CE581000000040800458077
-:1002400000000004000CE5810000000800000047E9
-:10025000000000000000A00000000004000C2000CE
-:10026000000000040000E50E000000040003200070
-:10027000000000280002205100000024000000516E
-:10028000000000040800450F000000080000A04B1B
-:10029000000000040000E565000000040000E566C1
-:1002A00000000008000000520000000403CCA5B4C8
-:1002B00000000004054320000000000400022000AC
-:1002C000000000304CCCE05E0000000408274565CB
-:1002D000000000300000005E0000000408004564DB
-:1002E000000000040000E566000000080000005562
-:1002F00000000010008020610000000400202000A9
-:1003000000000004001B00FF00000010010000645A
-:1003100000000004001F200000000004001C00FF7B
-:100320000000000C0000000000000030000000721F
-:100330000000000800000055000000040000E57601
-:10034000000000040000E577000000040000E50E56
-:10035000000000040000E50F000000040140A000C0
-:100360000000001800000069000000C200C0E5F9AC
-:100370000000000800000069000000040014E50E01
-:10038000000000040040E50F0000000800C0006C01
-:10039000000000040000E570000000040000E571AA
-:1003A0000000000C0000E572000000040000A00046
-:1003B000000000040140A000000000040000E56807
-:1003C00000000004000C200000000018000000766F
-:1003D00000000004000B00000000000418C0E562EB
-:1003E00000000008000000780000000800C000774E
-:1003F00000000004000700CB00000038000000846B
-:1004000000000030000CA08600000004080045BB7E
-:1004100000000030000C2087000000000800E5BC50
-:10042000000000040000E5BB000000000000E5BC87
-:100430000000000C00120000000000040012000088
-:100440000000000C001B0002000000040000A000DF
-:10045000000000040000E821000000000000E800A7
-:10046000000000040000E821000000000000E82E69
-:100470000000000402CCA0000000000400140000F2
-:1004800000000004000CE1CC00000004050DE1CDEB
-:10049000000000040040000000000018000000966A
-:1004A0000000000400C0A00000000008000000934D
-:1004B0000000002000000098000000004200E00062
-:1004C000000000380000009F00000004000CA000A5
-:1004D000000000040014000000000004000C2000D4
-:1004E000000000040016000000000004700CE00092
-:1004F000000000080014009B000000004000E00025
-:10050000000000040240000000000004400EE00073
-:100510000000000402400000000000004000E00075
-:100520000000002C0010000000000000000040004F
-:1005300000000004080045C8000000040024000575
-:100540000000000408004D0B00000004000C200017
-:10055000000000040240E51B000000050080E50AE1
-:10056000000000050080E50B0000000400220000F0
-:1005700000000004000700CB00000038000000B7B6
-:1005800000000030000C2087000000050880E5BD59
-:1005900000000030000C2086000000050800E5BBCC
-:1005A00000000030000C2087000000050880E5BC3A
-:1005B00000000008000000BA000000050080E5BD52
-:1005C000000000050000E5BB000000050080E5BC60
-:1005D0000000000400210000000000040280000070
-:1005E0000000001800C000BE000000404180E00094
-:1005F00000000024000000C00000000C010000000A
-:100600000000000C0100E51D00000004000045BBD7
-:1006100000000008000080BA0000000403C0083099
-:10062000000000004200E000000000040000A00004
-:1006300000000004200045E0000000000000E5E1AB
-:10064000000000000000000100000004000700C8D6
-:10065000000000000800E39400000000000000001B
-:10066000000000040000E8C4000000040000E8C529
-:10067000000000040000E8C6000000040000E928B3
-:10068000000000040000E929000000040000E92A3D
-:1006900000000008000000CC000000040000E92871
-:1006A000000000040000E929000000040000E92A1D
-:1006B00000000008000000D30000000402C0200079
-:1006C000000000040006000000000034000000DB11
-:1006D00000000008000000D80000000400008000B6
-:1006E00000000000C000E00000000030000000E159
-:1006F000000000004200E00000000030000000E1C7
-:10070000000000004000E000000000040025001B85
-:100710000000000400230000000000040025000584
-:1007200000000034000000E60000000C00000000A3
-:10073000000000040024400000000004080045C838
-:1007400000000004002400050000000C08004D0B10
-:100750000000000000000000000000000000000099
-:100760000000000000000000000000000000000089
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B00000000004000C200000000004001D0018D0
-:1007C00000000004001A000100000034000000FBDB
-:1007D000000000080000004A000000080500A04AD0
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:00000001FF
-/* production radeon ucode r1xx-r6xx */
diff --git a/firmware/radeon/RS780_me.bin.ihex b/firmware/radeon/RS780_me.bin.ihex
deleted file mode 100644
index 6479c106b91f..000000000000
--- a/firmware/radeon/RS780_me.bin.ihex
+++ /dev/null
@@ -1,1345 +0,0 @@
-:1000000000000000C020040000000000000000000C
-:1000100000A0000A000000000000FFFF00284621A9
-:100020000000000000000000D900480000000000AF
-:1000300000000000C02004000000000000000000DC
-:1000400000A0000A000000000000000000E0000026
-:100050000000000000010000C02946200000000050
-:1000600000000000D900480000000000000000006F
-:10007000C0200400000000000000000000A0000AF2
-:10008000000000008100000000204411000000007A
-:1000900000000001002048110000000000042004BE
-:1000A0000060441100000622000000000060000013
-:1000B000000005D10000000000600000000005DE27
-:1000C00000000000C02008000000000000000F0039
-:1000D000002816220000000000000008002116255C
-:1000E000000000000000001800203625000000007D
-:1000F0008D000000002044110000000000000004FA
-:10010000002F022500000000000000000CE00000AD
-:1001100000000018004120000040481100000019B4
-:100120000042200000204811000000008E00000066
-:1001300000204411000000000000002800204A2D8B
-:1001400000000000900000000020441100000000AA
-:100150000000000000204805000000000000000C26
-:1001600000211622000000000000000300281625D0
-:10017000000000000000001900211A220000000009
-:100180000000000400281A26000000000000000003
-:10019000002914C5000000000000001900203625C9
-:1001A0000000000000000000003A140200000000FF
-:1001B00000000016002116250000000000000003CA
-:1001C00000281625000000000000001700200E2D5A
-:1001D00000000000FFFFFFFC00280E2300000000CD
-:1001E00000000000002914A3000000000000001718
-:1001F00000203625000000000000800000280E22AC
-:10020000000000000000000700220E230000000094
-:10021000000000000029386E0000000020000000EF
-:1002200000280E22000000000000000600210E231E
-:1002300000000000000000000029386E00000000EF
-:100240000000000000220222000000000000000068
-:1002500014E0000000000038000000002EE0000064
-:1002600000000035000000002CE000000000003716
-:100270000000000000400E2D0000003900000008C2
-:1002800000200E2D00000000000000090040122D8B
-:10029000000000460000000100400E2D0000003963
-:1002A00000000000C0200C0000000000003FFFFC28
-:1002B0000028122300000000000000020022122487
-:1002C000000000000000001F00211E2300000000AD
-:1002D0000000000014E000000000003E00000008E4
-:1002E00000401C11000000410000000D00201E2DE8
-:1002F000000000000000000F00281E270000000082
-:100300000000000300221E27000000007FC0000044
-:1003100000281A23000000000000001400211A2603
-:10032000000000000000000100331A260000000059
-:100330000000000800221A26000000000000000053
-:1003400000290CC700000000000000270020362410
-:100350000000000000007F000028122100000000C3
-:1003600000001400002F0224000000000000000024
-:100370000CE000000000004B0000000100290E23EB
-:10038000000000000000000E0020362300000000E6
-:100390000000E0000020441100000000FFF8000011
-:1003A00000294A230000000000000000003A2C024F
-:1003B000000000000000000200220E2B00000000E0
-:1003C000FC00000000280E23000000000000000FC9
-:1003D000002036230000000000001FFF00294A23F0
-:1003E000000000000000002700204A2D000000004F
-:1003F000000000000020481100000000000000295B
-:1004000000200E2D00000000060A020000294A23E9
-:100410000000000000000000002048110000000063
-:100420000000000000204811000000000000000152
-:1004300000210222000000000000000014E0000083
-:1004400000000061000000002EE000000000005FDE
-:10045000000000002CE000000000005E0000000032
-:1004600000400E2D000000620000000100400E2D33
-:10047000000000620000000A00200E2D00000000B5
-:100480000000000B0040122D0000006A0000000078
-:10049000C0200C0000000000003FFFFC00281223D9
-:1004A00000000000000000020022122400000000F2
-:1004B0007FC0000000281623000000000000001488
-:1004C0000021162500000000000000010033162561
-:1004D000000000008000000000280E230000000043
-:1004E0000000000000290CA3000000003FFFFC00FA
-:1004F00000290E23000000000000001F00211E2321
-:10050000000000000000000014E000000000006D8A
-:100510000000010000401C11000000700000000DF0
-:1005200000201E2D00000000000000F000281E2703
-:10053000000000000000000400221E270000000050
-:100540008100000000204411000000000000000DA8
-:100550000020481100000000FFFFF0FF00281A30C3
-:10056000000000000000A02800204411000000004E
-:1005700000000000002948E6000000000000A0186C
-:1005800000204411000000003FFFFFFF00284A2325
-:10059000000000000000A010002044110000000036
-:1005A00000000000002048040000000000000030AF
-:1005B0000020162D00000000000000020029162572
-:1005C0000000000000000030002036250000000080
-:1005D000000000250020162D000000000000000093
-:1005E000002F00A300000000000000000CC000006D
-:1005F00000000083000000260020162D00000000EF
-:1006000000000000002F00A4000000000000000017
-:100610000CC000000000008400000000004000004A
-:100620000000008A000000250020362300000000A2
-:100630000000002600203624000000000000001703
-:1006400000201E2D000000000000000200210227F3
-:10065000000000000000000014E000000000008A1C
-:100660000000000000600000000005FF0000000026
-:1006700000600000000005F30000000200210E22CF
-:10068000000000000000000014C000000000008D09
-:1006900000000012C040362000000093000000005F
-:1006A0002EE0000000000091000000002CE000009F
-:1006B000000000900000000200400E2D000000929B
-:1006C0000000000300400E2D000000920000000C0E
-:1006D00000200E2D00000000000000120020362334
-:1006E000000000000000000300210E2200000000B6
-:1006F0000000000014C00000000000980000A00CE2
-:10070000002044110000000000000000C02048004C
-:100710000000000000000000C0404800000000A0F1
-:100720000000A00C002044110000000000000000A8
-:100730000020481100000000000000002EE0000032
-:100740000000009E000000002CE000000000009D62
-:100750000000000200400E2D0000009F000000037A
-:1007600000400E2D0000009F0000000C00200E2D08
-:10077000000000000000000000204803000000000E
-:1007800000000000003A0C0200000000003F0000E2
-:1007900000280E23000000000000001000210E239E
-:1007A00000000000000000110020362300000000BF
-:1007B0000000001E0021022B0000000000000000CD
-:1007C00014C00000000000A700000016C020362062
-:1007D000000000000000001F0021022B00000000AC
-:1007E0000000000014C00000000000AA0000001576
-:1007F000C0203620000000000000000800210E2B61
-:10080000000000000000007F00280E230000000010
-:1008100000000000002F0223000000000000000084
-:100820000CE00000000000E10000000027000000D4
-:10083000000000000000000000600000000002A3B3
-:1008400000000001002F0223000000000000000053
-:100850000AE00000000000B300000000006000009B
-:100860000000013A81000000002044110000000057
-:100870000000000600204811000000000000000CED
-:1008800000221E300000000099800000002044116A
-:1008900000000000000000040020122D00000000F5
-:1008A00000000008002212240000000000000010D8
-:1008B00000201811000000000000000000291CE4C6
-:1008C0000000000000000000006048070000012F49
-:1008D0009B00000000204411000000000000000008
-:1008E00000204802000000009C000000002044118D
-:1008F00000000000000000000033146F0000000042
-:100900000000000100333E23000000000000000052
-:10091000D9004800000000000000000000203C0555
-:1009200000000000810000000020441100000000D1
-:100930000000000E00204811000000000000000030
-:1009400000201010000000000000E007002044110B
-:10095000000000000000000F0021022B000000003A
-:100960000000000014C00000000000CB00F8FF08E9
-:1009700000204811000000009800000000404811CD
-:10098000000000DC000000F000280E220000000043
-:10099000000000A0002F0223000000000000000063
-:1009A0000CC00000000000DA0000001100200E2D35
-:1009B0000000000000000001002F022300000000E2
-:1009C000000000000CE00000000000D50000000264
-:1009D000002F022300000000000000000CE00000D7
-:1009E000000000D400003F0000400C11000000D6C1
-:1009F00000001F0000400C11000000D600000F0096
-:100A000000200C11000000000038000900294A23D2
-:100A1000000000003F00000000280E2B0000000036
-:100A20000000000200220E2300000000000000076A
-:100A300000494A23000000DC00380F09002048115B
-:100A400000000000680000070020481100000000BE
-:100A50000000000800214A270000000000000000FC
-:100A60000020481100000000060A020000294A2464
-:100A700000000000000000000020481100000000FD
-:100A80000000000000204811000000000000A20249
-:100A9000002044110000000000FF000000280E228A
-:100AA000000000000000008000294A230000000030
-:100AB0000000002700200E2D00000000000000268E
-:100AC0000020122D0000000000000000002F008315
-:100AD00000000000000000000CE00000000000EA40
-:100AE0000000000000600000000005F900000000A8
-:100AF00000400000000000EB00000000006000006B
-:100B0000000005FC000000070020222D000000006E
-:100B10000000000500220E2200000000001000006E
-:100B200000280E23000000000000000000292068BB
-:100B30000000000000000000003A0C02000000006D
-:100B4000000000EF00280E2300000000000000005D
-:100B500000292068000000000000001700200E2D72
-:100B6000000000000000000300210223000000003C
-:100B70000000000014E00000000000F80000000B7E
-:100B800000210228000000000000000014C0000046
-:100B9000000000F8000004000029222800000000E6
-:100BA0000000001400203628000000000000001C97
-:100BB00000210E22000000000000000014C0000010
-:100BC000000000FD0000A30C002044110000000004
-:100BD0000000000000204811000000000000001E7E
-:100BE00000210E22000000000000000014C00000E0
-:100BF0000000010B0000A30F0020441100000000C2
-:100C00000000001100200E2D000000000000000177
-:100C1000002F022300000000000000000CC00000B4
-:100C200000000104FFFFFFFF004048110000010B1E
-:100C300000000002002F022300000000000000005E
-:100C40000CC00000000001070000FFFF0040481139
-:100C50000000010B00000004002F02230000000030
-:100C6000000000000CC000000000010A000000FFAE
-:100C7000004048110000010B000000010020481155
-:100C8000000000000002C400002044110000000029
-:100C90000000001F00210E220000000000000000E4
-:100CA00014C00000000001120000001040210E20BE
-:100CB00000000000000000130020362300000000A8
-:100CC0000000001840224A20000000000000001030
-:100CD000C0424A20000001140000000000200C1156
-:100CE0000000000000000013002036230000000078
-:100CF000000000000020481100000000000000007B
-:100D000000204811000000000000000A002010111F
-:100D10000000000000000000002F0224000000007E
-:100D2000000000000CE000000000011B00000000BB
-:100D300000204811000000000000000100531224B0
-:100D400000000117FFBFFFFF00283A2E000000003F
-:100D50000000001B00210222000000000000000033
-:100D600014C000000000012E81000000002044118A
-:100D7000000000000000000D0020481100000000ED
-:100D80000000001800220E3000000000FC000000EF
-:100D900000280E2300000000810000000020441104
-:100DA000000000000000000E0020481100000000BC
-:100DB0000000000000201010000000000000E00E05
-:100DC000002044110000000007F8FF08002048112F
-:100DD000000000000000000000294A23000000007D
-:100DE0000000001C00201E2D000000000000000874
-:100DF00000214A27000000000000000000204811E8
-:100E000000000000060A020000294A240000000039
-:100E10000000000000204811000000000000000059
-:100E200000204811000000000000000000800000C9
-:100E300000000000810000000020441100000000BC
-:100E40000000000100204811000000000000217C8B
-:100E50000020441100000000008000000020481124
-:100E60000000000000000000002048060000000014
-:100E70000000000800214A270000000000000000D8
-:100E800017000000000000000004217F00604411F2
-:100E9000000006220000001F0021023000000000B8
-:100EA0000000000014C00000000006210000000443
-:100EB00000404C1100000135810000000020441169
-:100EC00000000000000000010020481100000000A8
-:100ED000000021F800204411000000000000001C68
-:100EE0000020481100000000000421F900604411B6
-:100EF0000000062200000011002102300000000066
-:100F00000000000014E000000000013C00000000B0
-:100F100000800000000000000000000000600000F1
-:100F20000000000B00000000006004110000031529
-:100F3000000000000020041100000000000000007C
-:100F400000600811000001B2000000000060000015
-:100F5000000001600000FFFF40280E20000000009C
-:100F600000000010C0211220000000000000FFFF60
-:100F7000402806200000000000000010C0210A20C8
-:100F800000000000000000000034146100000000B8
-:100F90000000000000741882000002BB0001A1FDE7
-:100FA00000604411000002E000003FFF002F022F0C
-:100FB00000000000000000000CC00000000001471D
-:100FC00000000000C040040000000001000000001C
-:100FD000006000000000000B000000000060041131
-:100FE00000000315000000000020041100000000B4
-:100FF0000000000000600811000001B200003FFF87
-:10100000002F022F00000000000000000CE0000094
-:10101000000000000000000000600000000001600F
-:101020000000001040210E20000000000000FFFF23
-:10103000C0281220000000000000001040211620EF
-:10104000000000000000FFFFC0681A20000002BB83
-:101050000001A1FD00604411000002E000003FFF1C
-:10106000002F022F00000000000000000CC0000054
-:101070000000015800000000C04004000000000112
-:101080000000225C0020441100000000000000016C
-:1010900000300A2F000000000000000100210A2299
-:1010A000000000000000000300384A220000000099
-:1010B0000000225600204411000000000000001A29
-:1010C00000204811000000000000A1FC0020441195
-:1010D0000000000000000001008048110000000036
-:1010E00000000000006000000000000B0000000095
-:1010F000006000000000018F0000000000600000A0
-:10110000000001A000003FFF002F022F00000000A0
-:10111000000000000CE000000000000000000000E3
-:1011200000202C0800000000000000000020241116
-:101130000000000000000000002028110000000056
-:10114000000022560020441100000000000000169C
-:1011500000204811000000000000225C0020441123
-:101160000000000000000003002048110000000003
-:1011700093800000002044110000000000000002E5
-:1011800000221E290000000000000000007048EB53
-:101190000000019C0000000000600000000002BB95
-:1011A00000000001403306200000000000000000A5
-:1011B000C03024090000000000003FFF002F022F74
-:1011C00000000000000000000CE000000000000033
-:1011D0000000000000600000000002A3000000000A
-:1011E000002F022100000000000000000AE00000C3
-:1011F0000000018100000000006000000000013AD2
-:101200000000000000400000000001869500000082
-:10121000002044110000000000000000002F022107
-:1012200000000000000000000CE00000000001864B
-:1012300000000000C0204800000000000000000185
-:10124000005306210000018292000000002044119A
-:101250000000000000000000C0604800000001978E
-:101260000001A1FD00204411000000000000001159
-:101270000020062D00000000000000000078042A75
-:10128000000002FB00000000002028090000000010
-:1012900000003FFF002F022F0000000000000000B0
-:1012A0000CC000000000017400000000C0400400F9
-:1012B000000000010000021000600411000003158E
-:1012C00000003FFF002F022F000000000000000080
-:1012D0000CE000000000019400000015C020362042
-:1012E0000000000000000016C020362000000000B2
-:1012F0003F800000002004110000000046000000B4
-:1013000000600811000001B2000000000080000031
-:10131000000000000000A1FC0020441100000000BB
-:1013200000003FFF002F022F00000000000000001F
-:101330000CC000000000019B00000001008048116B
-:1013400000000000000000210080481100000000A3
-:101350000000FFFF40280E200000000000000010E9
-:10136000C0211220000000000000FFFF40281620CE
-:101370000000000000000010C0811A2000000000E2
-:101380008100000000204411000000000000000661
-:1013900000204811000000000000000800221E305C
-:1013A000000000000000002900201A2D00000000AD
-:1013B0000000E0000020441100000000FFFBFF09D6
-:1013C00000204811000000000000000F0020222D26
-:1013D0000000000000001FFF00294A280000000054
-:1013E000000000060020222D000000000000000088
-:1013F000002920E80000000000000000002048084C
-:101400000000000000000000002048110000000063
-:10141000060A020000294A26000000000000000021
-:1014200000204811000000000000000000204811CA
-:101430000000000000000100002018110000000062
-:101440000000000800621E280000012F00000008B4
-:1014500000822228000000000002C0000020441189
-:10146000000000000000001500600E2D000001BD0E
-:101470000000001600600E2D000001BD0000C00835
-:1014800000204411000000000000001700200E2D75
-:10149000000000000000000014C00000000001B9BE
-:1014A0000000000000200411000000000000000007
-:1014B0000020480100000000390000000020481111
-:1014C00000000000000000000020481100000000A3
-:1014D000000000000080480200000000000000182A
-:1014E00000202E2D0000000000000000003B0D63D6
-:1014F000000000000000000800224A230000000055
-:101500000000001000224A23000000000000001824
-:1015100000224A2300000000000000000080480371
-:101520000000000000000000006000000000000B50
-:10153000000010000060041100000315000000000E
-:1015400000200411000000000000000000600811ED
-:10155000000001B2000000070021062F000000007B
-:101560000000001300200A2D000000000000000110
-:1015700000202C11000000000000FFFF4028222066
-:10158000000000000000000F0026222800000000DC
-:101590000000001040212620000000000000000F85
-:1015A000002626290000000000000000002028027C
-:1015B000000000000000225600204411000000003E
-:1015C0000000001B00204811000000000000000087
-:1015D000002F022100000000000000000CE00000CD
-:1015E000000001E00000225C002044110000000027
-:1015F0000000008100204811000000000000A1FC54
-:1016000000204411000000000000000100204811EB
-:10161000000000000000008000201C1100000000FD
-:1016200000000000002F0227000000000000000062
-:101630000CE00000000001DC000000000060000081
-:10164000000001E90000000100531E27000001D83E
-:101650000000000100202C11000000000000001F0D
-:1016600000280A22000000000000001F00282A2A8B
-:10167000000000000000000100530621000001D11D
-:101680000000225C00204411000000000000000265
-:1016900000304A2F000000000000A1FC002044118F
-:1016A00000000000000000010020481100000000C0
-:1016B0000000000100301E2F0000000000000000AC
-:1016C000002F022700000000000000000CE00000D6
-:1016D000000000000000000000600000000001E9C0
-:1016E0000000000100531E27000001E50000FFFF7D
-:1016F00040280E20000000000000000F00260E23EE
-:101700000000000000000010C021122000000000B6
-:101710000000000F0026122400000000000000005E
-:1017200000201411000000000000000000601811EB
-:10173000000002BB0001A1FD0020441100000000D8
-:1017400000000000002F022B00000000000000003D
-:101750000CE00000000001F8000000100022162834
-:1017600000000000FFFF0000002816250000000018
-:101770000000FFFF00281A29000000000000000000
-:10178000002948C500000000000000000020480AB1
-:10179000000000000000000000202C1100000000EC
-:1017A000000000100022162300000000FFFF0000D0
-:1017B00000281625000000000000FFFF00281A2462
-:1017C0000000000000000000002948C500000000E3
-:1017D0000000000000731503000002050000000077
-:1017E0000020180500000000000000000073152410
-:1017F0000000020500000000002D14C500000000DC
-:1018000000000000003008A20000000000000000FE
-:101810000020480200000000000000000020280214
-:101820000000000000000000002020030000000075
-:101830000000000000802404000000000000000FF1
-:1018400000210225000000000000000014C000007C
-:101850000000062100000000002B1405000000001D
-:1018600000000001009016250000000000000000AC
-:10187000006000000000000B000000000060041188
-:10188000000003150000000000200411000000000B
-:101890000000000000600811000001B200002256A4
-:1018A00000204411000000000000001A00294A2214
-:1018B0000000000000000000C02000000000000048
-:1018C00000003FFF002F022F00000000000000007A
-:1018D0000CE000000000000000000000C020040038
-:1018E000000000000000225C002044110000000005
-:1018F0000000000300384A21000000000000A1FCA5
-:1019000000204411000000000000000100204811E8
-:10191000000000000000FFFF40281220000000002F
-:1019200000000010C0211A20000000000000FFFF8E
-:1019300040280E200000000000000010C0211620EA
-:10194000000000000000000000741465000002BBED
-:101950000001A1FD00604411000002E00000000150
-:10196000003306210000000000000000002F0221CB
-:1019700000000000000000000CC000000000021980
-:1019800000003FFF002F022F0000000000000000B9
-:101990000CC000000000021200000000C040040063
-:1019A000000000010000000000600000000005DEF3
-:1019B000000000000040040F0000021300000000BF
-:1019C00000600000000005D1000000000060000081
-:1019D000000005DE00000210006004110000031585
-:1019E0000000000000600000000001A000000000F6
-:1019F000006000000000019C00000000006000008A
-:101A0000000002BB0000000000600000000002A314
-:101A1000938000000020441100000000000000003E
-:101A2000002048080000000000000000002F022FE6
-:101A300000000000000000000AE000000000023288
-:101A400000000000006000000000013A00000000FB
-:101A50000040000000000236950000000020441104
-:101A60000000000000000000002F022F0000000016
-:101A7000000000000CE00000000002360000000042
-:101A8000C0404800000002339200000000204411D2
-:101A90000000000000000000C0204800000000001E
-:101AA0000000225600204411000000000000001633
-:101AB00000204811000000000000225C00204411BA
-:101AC000000000000000000300204811000000009A
-:101AD0000000A1FC002044110000000000000001F3
-:101AE00000204811000000000001A1FD0020441169
-:101AF000000000000000000000600411000002FB74
-:101B000000000000C04004000000000100000000D0
-:101B100000600000000005D10000A00C002044116E
-:101B20000000000000000000C0204800000000008D
-:101B300000000000C040480000000000000000005D
-:101B4000006000000000000B0000001840210A2087
-:101B50000000000000000003002F0222000000002F
-:101B6000000000000AE000000000024C0000001429
-:101B70000020222D00000000000801010029222879
-:101B800000000000000000140020362800000000C3
-:101B90000000A30C00204411000000000000000021
-:101BA000C02048000000000000000000C0204800E5
-:101BB0000000000000000000C0404800000002518A
-:101BC00000000000006000000000000B000000109A
-:101BD00000600411000003153F8000000020041184
-:101BE000000000000000000000600811000001B2C9
-:101BF0000000225C002044110000000000000003EF
-:101C000000204811000000000000000000600000FB
-:101C10000000027C0000001700201E2D00000000C4
-:101C20000000000100211E2700000000000000004D
-:101C300014E000000000026A0000001200201E2DC7
-:101C4000000000000000FFFF00281E270000000029
-:101C50000000000000341C2700000000000000000D
-:101C600012C000000000025F0000000000201C11F4
-:101C70000000000000000000002F00E50000000050
-:101C80000000000008C00000000002620000000028
-:101C900000201407000000000000001200201E2D8C
-:101CA000000000000000001000211E2700000000BE
-:101CB0000000000000341C4700000000000000008D
-:101CC00012C00000000002670000000000201C118C
-:101CD0000000000000000000002F00E600000000EF
-:101CE0000000000008C000000000026A00000000C0
-:101CF0000020180700000000000000000060000045
-:101D0000000002C100002256002044110000000023
-:101D1000000000000034202300000000000000004C
-:101D200012C00000000002720000000000342044D5
-:101D3000000000000000000012C00000000002715E
-:101D40000000001600404811000002760000001854
-:101D500000404811000002760000000000342044DA
-:101D6000000000000000000012C00000000002752A
-:101D70000000001700404811000002760000001922
-:101D800000204811000000000000A1FC00204411C8
-:101D900000000000000000010020481100000000C9
-:101DA0000001A1FD00604411000002E900003FFFB6
-:101DB000002F022F00000000000000000CC00000F7
-:101DC0000000025600000000C040040000000001B6
-:101DD0000000001040210620000000000000FFFF6E
-:101DE000C0280A20000000000000001040210E2042
-:101DF000000000000000FFFFC028122000000000CB
-:101E00000000001040211620000000000000FFFF2D
-:101E1000C0881A200000000081000000002044114A
-:101E20000000000000000001002048110000000038
-:101E3000000420040060441100000622000000009D
-:101E400000600000000005D100000000C06000003C
-:101E5000000002A30000000500200A2D0000000081
-:101E60000000000800220A22000000000000002BF1
-:101E700000201A2D000000000000001C00201E2D74
-:101E8000000000000000700000281E270000000075
-:101E90000000000000311CE6000000000000002AE5
-:101EA00000201A2D000000000000000C00221A265D
-:101EB0000000000000000000002F00E6000000000D
-:101EC0000000000006E00000000002920000000098
-:101ED00000201C11000000000000000000200C1178
-:101EE000000000000000002B00203623000000004E
-:101EF0000000001000201811000000000000000089
-:101F000000691CE20000012F9380000000204411B2
-:101F10000000000000000000002048070000000052
-:101F200095000000002044110000000000000000A7
-:101F3000002F022F00000000000000000CE0000055
-:101F40000000029D0000000100333E2F0000000051
-:101F500000000000D90048000000000092000000CE
-:101F6000002044110000000000000000C0204800D4
-:101F7000000000000000001C0040362700000000A8
-:101F80000000000CC0220A20000000000000002910
-:101F9000002036220000000000000028C04036204B
-:101FA000000000000000A2A4002044110000000076
-:101FB000000000090020481100000000A1000000FE
-:101FC00000204411000000000000000100804811C2
-:101FD000000000000000002100201E2D0000000075
-:101FE00000000000002C1CE30000000000000021A5
-:101FF00000203627000000000000002200201E2DD7
-:102000000000000000000000002C1CE400000000A4
-:1020100000000022002036270000000000000023FE
-:1020200000201E2D0000000000000000003120A351
-:102030000000000000000000002D1D07000000004F
-:1020400000000023002036270000000000000024CC
-:1020500000201E2D0000000000000000003120C400
-:102060000000000000000000002D1D07000000001F
-:10207000000000240080362700000000000000213E
-:10208000002036230000000000000022002036243B
-:10209000000000000000000000311CA30000000050
-:1020A0000000002300203627000000000000000090
-:1020B00000311CC40000000000000024008036270E
-:1020C000000000000000001A002036270000000079
-:1020D0000000001B00203628000000000000001750
-:1020E00000201E2D00000000000000020021022739
-:1020F000000000000000000014C00000000002DC2E
-:102100000000000000400000000002D90000001A9A
-:1021100000203627000000000000001B00203628A9
-:10212000000000000000001700201E2D000000002D
-:102130000000000200210227000000000000000053
-:1021400014E00000000002D9000000030021022773
-:10215000000000000000000014E00000000002DCAD
-:102160000000002300201E2D0000000000000000E1
-:10217000002E00E1000000000000000002C000008E
-:10218000000002DC0000002100201E2D00000000E5
-:1021900000000000003120A100000000000000004D
-:1021A000002E00E8000000000000000006C0000053
-:1021B000000002DC0000002400201E2D00000000B2
-:1021C00000000000002E00E20000000000000000FF
-:1021D00002C00000000002DC0000002200201E2DD2
-:1021E0000000000000000000003120C200000000DC
-:1021F00000000000002E00E80000000000000000C9
-:1022000006C00000000002DC0000000000600000CA
-:10221000000005FF0000000000600000000002B5A3
-:102220000000000000400000000002DE000000008E
-:1022300000600000000002B5000000000060000027
-:10224000000005F60000000000400000000002DE73
-:102250000000000000600000000002A70000000075
-:1022600000400000000002DE0000001A00201E2DC9
-:10227000000000000000001B0080222D0000000074
-:102280000000001000221E230000000000000000DB
-:1022900000294887000000000000000000311CA356
-:1022A000000000000000001000221E2700000000B7
-:1022B0000000000000294887000000000000001016
-:1022C00000221E230000000000000000003120C496
-:1022D000000000000000FFFF00282228000000008E
-:1022E0000000000000894907000000000000001005
-:1022F00000221E2300000000000000000029488783
-:10230000000000000000001000221E21000000005C
-:102310000000000000294847000000000000000005
-:1023200000311CA3000000000000001000221E2746
-:1023300000000000000000000029488700000000A5
-:102340000000000000311CA100000000000000108F
-:1023500000221E270000000000000000002948475E
-:10236000000000000000001000221E2300000000FA
-:1023700000000000003120C4000000000000FFFF4A
-:102380000028222800000000000000000029490762
-:10239000000000000000001000221E2100000000CC
-:1023A00000000000003120C2000000000000FFFF1C
-:1023B00000282228000000000000000000894907D2
-:1023C000000000000000001000221E23000000009A
-:1023D0000000000000294887000000000000000104
-:1023E00000220A210000000000000000003308A2C3
-:1023F000000000000000001000221E22000000006B
-:102400000000001000212222000000000000000057
-:1024100000294907000000000000000000311CA353
-:10242000000000000000001000221E270000000035
-:1024300000000000002948870000000000000001A3
-:1024400000220A210000000000000000003008A265
-:10245000000000000000001000221E22000000000A
-:1024600000000010002122220000000000000000F7
-:1024700000294907000000000000001000221E2370
-:102480000000000000000000003120C40000000037
-:102490000000FFFF002822280000000000000000CC
-:1024A000002949070000000000000000003808C5AE
-:1024B00000000000000000000030084100000000A3
-:1024C0000000000100220A220000000000000000BD
-:1024D000003308A2000000000000001000221E22AD
-:1024E0000000000000000010002122220000000077
-:1024F00000000000008949070000000000000017EC
-:102500000020222D000000000000000014C0000088
-:1025100000000318FFFFFFEF002806210000000065
-:10252000000000140020222D000000000000F8E050
-:1025300000204411000000000000000000294901B3
-:1025400000000000000000000089490100000000B8
-:102550000000000000204811000000000000000002
-:102560000020481100000000060A02000080481107
-:102570000000000000000000C0200000000000007B
-:1025800097000000C020441100000000000000007F
-:10259000C0204811000000008A0000000020441103
-:1025A00000000000000000000020481100000000B2
-:1025B0000000225C00204411000000000000000028
-:1025C000C0204800000000000000A1FC00204411D1
-:1025D0000000000000000000C020480000000000D3
-:1025E00000000000C0200400000000000000000007
-:1025F00000A0000A0000000097000000C020441165
-:102600000000000000000000C02048110000000091
-:102610008A000000C02044110000000000000000FB
-:1026200000204811000000000000225C002044113E
-:102630000000000000000000C02048000000000072
-:102640000000A1FC00204411000000000000000078
-:10265000C02048000000000000000000C02004006E
-:10266000000000000000000000A0000A00000000C0
-:10267000970000000020441100000000000000004E
-:1026800000204811000000008A00000000204411D2
-:1026900000000000000000000020481100000000C1
-:1026A0000000225C00204411000000000000000037
-:1026B000C0204800000000000000A1FC00204411E0
-:1026C0000000000000000000C020480000000000E2
-:1026D00000000000C0200400000000000000000016
-:1026E00000A0000A00000000970000000020441134
-:1026F0000000000000000000002048110000000061
-:102700008A000000002044110000000000000000CA
-:1027100000204811000000000000225C002044114D
-:102720000000000000000000C02048000000000081
-:102730000000A1FC00204411000000000000000087
-:10274000C0204800000000000001A1FD002044114D
-:102750000000000000000000D90048000000000058
-:1027600000000000C0200400000000000000000085
-:1027700000A0000A000000000000225700204411C1
-:102780000000000000000003C0484A2000000000D4
-:102790000000225D00204411000000000000000045
-:1027A000C040480000000000000000000060000081
-:1027B000000005DE00000000C0200800000000004E
-:1027C0000000225C00204411000000000000000313
-:1027D00000384A22000000000000A1FC0020441143
-:1027E0000000000000000000C020480000000000C1
-:1027F0000001A1FD002044110000000000000000C5
-:10280000002F022200000000000000000CE0000089
-:102810000000000000000000402048000000000010
-:102820000000000140304A200000000000000002CB
-:10283000C0304A20000000000000000100530A22BE
-:10284000000003550000003FC0280A2000000000DF
-:102850008100000000204411000000000000000181
-:102860000020481100000000000021F80020441161
-:1028700000000000000000180020481100000000C7
-:10288000000421F90060441100000622000000113C
-:1028900000210230000000000000000014E00000F1
-:1028A0000000035E00000014002F02220000000060
-:1028B000000000000CC000000000036C0001A2A496
-:1028C00000204411000000000000000000604802E9
-:1028D00000000374000021000020441100000000EB
-:1028E00000000000C02048000000000000000000C0
-:1028F000C02048000000000000000000C020480088
-:102900000000000000000000C0404800000000007F
-:1029100000000004002F0222000000000000000060
-:102920000CC00000000003700001A2A400204411AC
-:1029300000000000000000000040480200000367A3
-:1029400000000028002F022200000000000000000C
-:102950000CC00000000005BA0001A2A40020441130
-:102960000000000000000000004048020000036773
-:102970000000002C00203626000000000000004966
-:1029800000201811000000000000003F0020481146
-:10299000000000000000000100331A2600000000C3
-:1029A00000000000002F02260000000000000000D0
-:1029B0000CC00000000003760000002C00801A2DDF
-:1029C000000000000000003FC0280A2000000000B6
-:1029D00000000015002F022200000000000000008F
-:1029E0000CE000000000038C00000006002F022213
-:1029F00000000000000000000CE00000000003B731
-:102A000000000016002F022200000000000000005D
-:102A10000CE00000000003B900000020002F02229B
-:102A200000000000000000000CE00000000003A215
-:102A30000000000F002F0222000000000000000034
-:102A40000CE00000000003AE00000010002F022286
-:102A500000000000000000000CE00000000003AED9
-:102A60000000001E002F02220000000000000000F5
-:102A70000CE00000000003960000A2A40020441116
-:102A800000000000000000000040480200000000BC
-:102A90000800000000290A220000000000000003D6
-:102AA00040210E20000000000000000CC021122078
-:102AB00000000000000800000028122400000000B0
-:102AC00000000014C02216200000000000000000DA
-:102AD000002914A4000000000000A2A4002044115A
-:102AE0000000000000000000002948A200000000D3
-:102AF0000000A1FE002044110000000000000000C2
-:102B00000040480300000000810000000020441144
-:102B1000000000000000000100204811000000003B
-:102B2000000021F800204411000000000000001601
-:102B30000020481100000000000421F90060441149
-:102B400000000622000000150021023000000000F5
-:102B50000000000014E00000000003980000210EB7
-:102B6000002044110000000000000000C0204800C8
-:102B70000000000000000000C0204800000000002D
-:102B80000000A2A40020441100000000000000008A
-:102B900000404802000000008100000000204411B5
-:102BA00000000000000000010020481100000000AB
-:102BB000000021F800204411000000000000001770
-:102BC0000020481100000000000421F900604411B9
-:102BD0000000062200000003002102300000000077
-:102BE0000000000014E00000000003A40000210821
-:102BF000002044110000000000000000C020480038
-:102C00000000000000000000C0204800000000009C
-:102C10000000A2A4002044110000000000000000F9
-:102C200000404802000000000000A2A4002044115F
-:102C3000000000000000000000204802000000002A
-:102C4000800000000020441100000000000000008F
-:102C50000020481100000000810000000020441105
-:102C600000000000000000100020481100000000DB
-:102C70000000000000200010000000000000000024
-:102C800014C00000000003B4000000000040000079
-:102C9000000000000001A2A4002044110000000078
-:102CA0000000000600404811000000000001A2A43E
-:102CB00000204411000000000000001600604811D0
-:102CC000000003740000000000400000000000004D
-:102CD00000000000C020080000000000000000000C
-:102CE000C0200C00000000000000001D0021022395
-:102CF000000000000000000014E00000000003CE0F
-:102D000081000000002044110000000000000001CC
-:102D10000020481100000000000021F800204411AC
-:102D20000000000000000018002048110000000012
-:102D3000000421F900604411000006220000001187
-:102D400000210230000000000000000014E000003C
-:102D5000000003C200002100002044110000000018
-:102D600000000000002048020000000000000000F9
-:102D70000020480300000000BABECAFE002048112F
-:102D800000000000CAFEBABE00204811000000008A
-:102D90000000A2A400204411000000000000000474
-:102DA0000040481100000000000021700020441184
-:102DB00000000000000000000020480200000000A9
-:102DC0000000000000204803000000008100000017
-:102DD00000204411000000000000000A00204811FB
-:102DE00000000000000000000020001000000000B3
-:102DF0000000000014C00000000003D38C0000009D
-:102E00000020441100000000CAFEBABE0040481174
-:102E100000000000810000000020441100000000BC
-:102E200000000001002048110000000000003FFFEA
-:102E300040280A20000000008000000040280E20EA
-:102E40000000000040000000C02812200000000028
-:102E50000004000000694622000006220000000075
-:102E6000002014100000000000000000002F0223CA
-:102E700000000000000000000CC00000000003E1A2
-:102E800000000000C0401800000003E400003FFF05
-:102E9000C0281A2000000000000400000069462637
-:102EA00000000622000000000020181000000000B2
-:102EB00000000000002F02240000000000000000BD
-:102EC0000CC00000000003E700000000C0401C0030
-:102ED000000003EA00003FFFC0281E2000000000A1
-:102EE00000040000006946270000062200000000E0
-:102EF00000201C1000000000000000000020440220
-:102F00000000000000000000002820C500000000B4
-:102F100000000000004948E800000000A580000013
-:102F200000200811000000000000200000200C110B
-:102F30000000000083000000006044110000041243
-:102F4000000000000020440200000000000000001B
-:102F5000C0204800000000000000000040204800A1
-:102F6000000000000000001FC0210220000000003F
-:102F70000000000014C00000000003F70000201053
-:102F800000204411000000000000800000204811D3
-:102F9000000000000000FFFFC0481220000003FFF7
-:102FA000A780000000200811000000000000A00021
-:102FB00000200C110000000083000000006044119C
-:102FC0000000041200000000002044020000000085
-:102FD00000000000C02048000000000000000000C9
-:102FE000C0204800000000000000FFFFC0281220A1
-:102FF00000000000830000000020441100000000D9
-:103000000000000000304883000000008400000041
-:10301000002044110000000000000000C020480013
-:1030200000000000000000001D0000000000000083
-:103030008300000000604411000004120000000042
-:10304000C040040000000001A98000000020081119
-:10305000000000000000C00000400C11000003FA56
-:10306000AB80000000200811000000000000F8E024
-:1030700000400C11000003FAAD8000000020081190
-:10308000000000000000F88000400C11000003FA6E
-:10309000B380000000200811000000000000F3FCD5
-:1030A00000400C11000003FAAF800000002008115E
-:1030B000000000000000E00000400C11000003FAD6
-:1030C000B180000000200811000000000000F000A6
-:1030D00000400C11000003FA83000000002044119E
-:1030E00000000000000021480020481100000000FE
-:1030F00084000000002044110000000000000000D7
-:10310000C020480000000000000000001D0000007A
-:10311000000000000000000000800000000000002F
-:1031200001182000C0304620000000000000000010
-:10313000D90048000000000000000000C02004008A
-:10314000000000000000000000A0000A00000000D5
-:103150000218A000C030462000000000000000005F
-:10316000D90048000000000000000000C02004005A
-:10317000000000000000000000A0000A00000000A5
-:103180000318C000C030462000000000000000000E
-:10319000D90048000000000000000000C02004002A
-:1031A000000000000000000000A0000A0000000075
-:1031B0000418F8E0C03046200000000000000000C5
-:1031C000D90048000000000000000000C0200400FA
-:1031D000000000000000000000A0000A0000000045
-:1031E0000518F880C03046200000000000000000F4
-:1031F000D90048000000000000000000C0200400CA
-:10320000000000000000000000A0000A0000000014
-:103210000618E000C030462000000000000000005A
-:10322000D90048000000000000000000C020040099
-:10323000000000000000000000A0000A00000000E4
-:103240000718F000C0304620000000000000000019
-:10325000D90048000000000000000000C020040069
-:10326000000000000000000000A0000A00000000B4
-:103270000818F3FCC03046200000000000000000E9
-:10328000D90048000000000000000000C020040039
-:10329000000000000000000000A0000A0000000084
-:1032A00000000033C0300A200000000000000000D1
-:1032B000C0403440000000000000003000200A2D13
-:1032C0000000000000000000C0290C4000000000C9
-:1032D0000000003000203623000000000000000045
-:1032E000C0200400000000000000000000A0000A50
-:1032F00000000000860000000020441100000000D3
-:1033000000000000004048010000000085000000AF
-:10331000C0204411000000000000000000404801EF
-:10332000000000000000217C00204411000000008B
-:1033300000000018402102200000000000000000F2
-:1033400014C000000000044700800000C0494A206B
-:103350000000044800000000C020480000000000F9
-:1033600000000000C0204800000000000000000035
-:10337000C02048000000000081000000002044112F
-:1033800000000000000000010020481100000000C3
-:1033900000000000C0200800000000000000000441
-:1033A000002F0222000000000000000006E00000E4
-:1033B000000004500000000400200811000000007C
-:1033C0000000000017000000000000000004217F42
-:1033D00000604411000006220000001F002102309E
-:1033E000000000000000000014C000000000000009
-:1033F0000000000000404C020000045000000000EB
-:10340000C0200C000000000000000000C0201000E0
-:103410000000000000000000C020140000000000B8
-:1034200000000000C02018000000000000000000A4
-:10343000C0201C000000000000007F0000280A21BE
-:103440000000000000004500002F022200000000E4
-:10345000000000000CE0000000000461000000001B
-:10346000C02020000000000000000004002F0228FF
-:10347000000000000000000006E000000000046101
-:1034800000000004002020110000000000000000E7
-:1034900017000000000000000000001000280A23B0
-:1034A0000000000000000010002F022200000000B9
-:1034B000000000000CE00000000004698100000032
-:1034C000002044110000000000000001002048110D
-:1034D00000000000000400000069462400000622ED
-:1034E00000000000004000000000046E81000000A9
-:1034F00000204411000000000000000000204811DE
-:10350000000000000000216D0020441100000000B8
-:10351000000000000020480400000000000000003F
-:10352000006048050000062700000000002824F085
-:10353000000000000000000700280A23000000002F
-:1035400000000001002F0222000000000000000027
-:103550000AE000000000047500000000002F00C910
-:10356000000000000000000004E000000000048EE5
-:1035700000000000004000000000049B000000026A
-:10358000002F022200000000000000000AE00000FE
-:103590000000047A00000000002F00C900000000B5
-:1035A0000000000002E000000000048E00000000A7
-:1035B000004000000000049B00000003002F0222D6
-:1035C00000000000000000000AE000000000047F8E
-:1035D00000000000002F00C90000000000000000F3
-:1035E0000CE000000000048E00000000004000001D
-:1035F0000000049B00000004002F022200000000D5
-:10360000000000000AE00000000004840000000048
-:10361000002F00C900000000000000000AE00000C8
-:103620000000048E00000000004000000000049B29
-:1036300000000005002F0222000000000000000032
-:103640000AE000000000048900000000002F00C90B
-:10365000000000000000000006E000000000048EF2
-:1036600000000000004000000000049B0000000675
-:10367000002F022200000000000000000AE000000D
-:103680000000048E00000000002F00C900000000B0
-:103690000000000008E000000000048E00000000B0
-:1036A000004000000000049B00007F0000280A2169
-:1036B0000000000000004500002F02220000000072
-:1036C000000000000AE00000000000000000000808
-:1036D00000210A23000000000000000014C00000C8
-:1036E000000004980000216900204411000000003F
-:1036F00000000000C02048000000000000000000A2
-:10370000C02048000000000000000000C020480069
-:1037100000000000CAFEBABE0040481100000000D0
-:1037200000000000C0204400000000000000000075
-:10373000C02000000000000000000000C040480061
-:103740000000000000007F0000280A2100000000A7
-:1037500000004500002F02220000000000000000D1
-:103760000AE00000000004A100000000C0200000EA
-:103770000000000000000000C02000000000000069
-:1037800000000000C0400000000000000000000039
-:1037900000404C080000046100000000C020080048
-:1037A000000000000000001040210E20000000007A
-:1037B0000000001140211220000000000000001253
-:1037C0004021162000000000000021690020441163
-:1037D000000000000000000000204802000000007F
-:1037E0000000000000210225000000000000000091
-:1037F00014E00000000004AB00040000C0494A20AF
-:10380000000004ACFFFBFFFFC0284A2000000000BE
-:103810000000000000210223000000000000000062
-:1038200014E00000000004B800000000C0204800C0
-:103830000000000000000000C02048000000000060
-:103840000000000000210224000000000000000031
-:1038500014C000000000000081000000002044119E
-:10386000000000000000000C0020481100000000D3
-:103870000000000000200010000000000000000018
-:1038800014C00000000004B4A00000000020441197
-:1038900000000000CAFEBABE00404811000000004F
-:1038A000810000000020441100000000000000041E
-:1038B00000204811000000000000216B002044118E
-:1038C0000000000000000000C020481000000000C0
-:1038D00081000000002044110000000000000005ED
-:1038E00000204811000000000000216C002044115D
-:1038F0000000000000000000C02048100000000090
-:1039000000000000002F0224000000000000000062
-:103910000CE000000000000000000000004000007B
-:10392000000004B200000000C0210A2000000000D6
-:103930000000000014C00000000004CB8100000063
-:103940000020441100000000000000000020481189
-:10395000000000000000216D002044110000000064
-:1039600000000000C020480000000000000000002F
-:10397000C060480000000627000000000040000072
-:10398000000004CF8100000000204411000000006E
-:1039900000000001002048110000000000040000A9
-:1039A000C02946200000000000000000C0600000A8
-:1039B0000000062200000001002102220000000099
-:1039C0000000000014C00000000004D600002169BF
-:1039D000002044110000000000000000C02048004A
-:1039E0000000000000000000C020480000000000AF
-:1039F000000000000020481000000000CAFEBABE0F
-:103A0000004048110000000000000000C0204400F9
-:103A10000000000000000000C0404810000000004E
-:103A2000810000000020441100000000000000019F
-:103A30000020481100000000000021F8002044117F
-:103A4000000000000000000E0020481100000000EF
-:103A5000000421F90060441100000622000000006B
-:103A600000210230000000000000000014C000002F
-:103A7000000004D800002180002044110000000054
-:103A800000000000C020480000000000000000000E
-:103A9000C02000000000000000000000C02048001E
-:103AA0000000000000000000C02000000000000036
-:103AB00000000000C04048000000000000000003BB
-:103AC00000333E2F00000000000000010021022111
-:103AD000000000000000000014E0000000000508E5
-:103AE0000000002C00200A2D00000000000400004F
-:103AF00018E00C11000004F70000000100333E2F15
-:103B000000000000000021690020441100000000B6
-:103B1000000000000020480200000000000000003B
-:103B200000204803000000000000000800300A22C6
-:103B30000000000000000000C0204800000000005D
-:103B400000000000C02048000000000000002169C3
-:103B50000020441100000000000000000020480286
-:103B600000000000000000000020480300000000EA
-:103B70000000000800300A220000000000000000E1
-:103B8000C02048000000000000000000D8C048002D
-:103B9000000004EB00002169002044110000000037
-:103BA00000000000002048020000000000000000AB
-:103BB00000204803000000000000000800300A2236
-:103BC0000000000000000000C020480000000000CD
-:103BD00000000000C0204800000000000000002D90
-:103BE0000020122D000000000000000000290C83BE
-:103BF00000000000000021690020441100000000C6
-:103C0000000000000020480200000000000000004A
-:103C100000204803000000000000000800300A22D5
-:103C20000000000000000000C0204800000000006C
-:103C300000000000C020480000000000000000114B
-:103C400000210224000000000000000014C0000059
-:103C5000000000000000000000400000000004B26E
-:103C60000000002CC0203620000000000000002DC5
-:103C7000C0403620000000000000000F002102219B
-:103C8000000000000000000014C000000000050D4E
-:103C900000000000006000000000000B00000000B9
-:103CA000D90000000000000000000000C040040037
-:103CB00000000001B50000000020441100000000D9
-:103CC000000020000020481100000000B6000000A5
-:103CD00000204411000000000000A0000020481156
-:103CE00000000000B70000000020441100000000A8
-:103CF0000000C0000020481100000000B8000000D3
-:103D000000204411000000000000F8E000204811ED
-:103D100000000000B9000000002044110000000075
-:103D20000000F8800020481100000000BA000000E8
-:103D300000204411000000000000E00000204811B5
-:103D400000000000BB000000002044110000000043
-:103D50000000F0000020481100000000BC0000003E
-:103D600000204411000000000000F3FC0020481176
-:103D7000000000008100000000204411000000004D
-:103D8000000000020020481100000000000000FFB9
-:103D900000280E300000000000000000002F022369
-:103DA00000000000000000000CC000000000052121
-:103DB00000000000C020080000000000000000001B
-:103DC00014C00000000005360000000000200C11A7
-:103DD000000000000000001C00203623000000004E
-:103DE0000000002B00203623000000000000002906
-:103DF00000203623000000000000002800203623A9
-:103E00000000000000000017002036230000000022
-:103E100000000025002036230000000000000026DE
-:103E2000002036230000000000000015002036238B
-:103E300000000000000000160020362300000000F3
-:103E4000FFFFE00000200C11000000000000002136
-:103E5000002036230000000000000022002036234E
-:103E60000000000000001FFF00200C1100000000F7
-:103E70000000002300203623000000000000002482
-:103E80000020362300000000F1FFFFFF00283A2E3B
-:103E9000000000000000001AC0220E2000000000F8
-:103EA000000000000029386E0000000081000000C2
-:103EB000002044110000000000000006002048110E
-:103EC000000000000000002A402036200000000012
-:103ED00087000000002044110000000000000000E6
-:103EE000C0204800000000000000A1F400204411A0
-:103EF000000000000000000000204810000000004A
-:103F00009D00000000204411000000000000001F80
-:103F100040214A20000000009600000000204411CB
-:103F20000000000000000000C02048000000000069
-:103F300000000000C0200C00000000000000000095
-:103F4000C0201000000000000000001F0021162407
-:103F5000000000000000000014C00000000000008D
-:103F60000000001D002036230000000000000003B8
-:103F700000281E2300000000000000080022222369
-:103F800000000000FFFFF0000028222800000000D1
-:103F900000000000002920E8000000000000001FD1
-:103FA00000203628000000000000001800211E2319
-:103FB0000000000000000020002036270000000064
-:103FC0000000000200221624000000000000000093
-:103FD000003014A8000000000000001E002036255C
-:103FE000000000000000000300211A24000000006F
-:103FF0001000000000281A2600000000EFFFFFFF5D
-:1040000000283A2E0000000000000000004938CED1
-:10401000000006100000000140280A2000000000F7
-:104020000000000640280E200000000000000300F1
-:10403000C028122000000000000000080021122407
-:104040000000000000000000C0201620000000005A
-:1040500000000000C0201A20000000000000000046
-:1040600000210222000000000000000014C0000037
-:104070000000056C810000000020441100000000D9
-:10408000000000010020481100000000000022583C
-:1040900000300A24000000000004000000694622ED
-:1040A00000000622000021690020441100000000E9
-:1040B0000000000000204805000000000002000091
-:1040C00000294A26000000000000000000204810DF
-:1040D00000000000CAFEBABE002048110000000027
-:1040E00000000002002F022300000000000000007A
-:1040F0000CC000000000057400000000C0201C106F
-:104100000000000000000000C04000000000058228
-:1041100000000002002F0223000000000000000049
-:104120000CC0000000000574810000000020441154
-:104130000000000000000001002048110000000005
-:104140000000225800300A24000000000004000093
-:10415000006946220000062200000000C0201C105A
-:104160000000000000000000C040000000000582C8
-:1041700000000000002F02230000000000000000EB
-:104180000CC000000000057800000000C0201C00EA
-:104190000000000000000000C04000000000058298
-:1041A00000000004002F02230000000000000000B7
-:1041B0000CC00000000005808100000000204411B8
-:1041C0000000000000000000002048110000000076
-:1041D0000000216D002044110000000000000000DC
-:1041E000C02048000000000000000000C06048003F
-:1041F000000006270000000000401C10000005829F
-:1042000000000000C02000000000000000000000CE
-:10421000C040000000000000000000000EE00000B0
-:10422000000005840000000000600000000005C3DD
-:1042300000000000002F0224000000000000000029
-:104240000CC00000000005920000A2B7002044113D
-:1042500000000000000000000020480700000000EF
-:10426000000000330020262D000000000000001A8E
-:10427000002122290000000000000006002226295B
-:10428000000000000000A2C4002044110000000053
-:1042900000000000003048E90000000000000000BD
-:1042A00000E00000000005900000A2D100204411B1
-:1042B000000000000000000000404808000000006E
-:1042C0000000A2D100204411000000000000000105
-:1042D00000504A280000000000000001002F0224C6
-:1042E00000000000000000000CC00000000005A05D
-:1042F0000000A2BB002044110000000000000000EC
-:104300000020480700000000000000340020262D97
-:10431000000000000000001A002122290000000017
-:104320000000000600222629000000000000A2C5AF
-:10433000002044110000000000000000003048E9A7
-:10434000000000000000000000E000000000059EEA
-:104350000000A2D200204411000000000000000074
-:1043600000404808000000000000A2D200204411D4
-:10437000000000000000000100504A28000000007A
-:1043800000000002002F02240000000000000000D6
-:104390000CC00000000005AE0000A2BF00204411C8
-:1043A000000000000000000000204807000000009E
-:1043B000000000350020262D000000000000001A3B
-:1043C000002122290000000000000006002226290A
-:1043D000000000000000A2C6002044110000000000
-:1043E00000000000003048E900000000000000006C
-:1043F00000E00000000005AC0000A2D30020441142
-:10440000000000000000000000404808000000001C
-:104410000000A2D3002044110000000000000001B1
-:1044200000504A28000000000000A2C300204411F0
-:10443000000000000000000000204807000000000D
-:10444000000000360020262D000000000000001AA9
-:104450000021222900000000000000060022262979
-:10446000000000000000A2C700204411000000006E
-:1044700000000000003048E90000000000000000DB
-:1044800000E00000000005B80000A2D400204411A4
-:10449000000000000000000000404808000000008C
-:1044A0000000A2D400204411000000000000000120
-:1044B00000504A2800000000850000000020441140
-:1044C0000000000000000000002048010000000083
-:1044D0000000304A002044110000000001000000EC
-:1044E0000020481100000000000000000040000013
-:1044F000000005BEA4000000C02044110000000020
-:1045000000000000C0404800000000000000000063
-:10451000C0600000000005C300000000C0400400AF
-:10452000000000010001A2A40020441100000000CE
-:104530000000003F00204811000000000000003F84
-:1045400000204811000000000000003F002048113A
-:10455000000000000000003F0020481100000000A3
-:104560000000000500204811000000000000A1F438
-:10457000002044110000000000000000002048114D
-:10458000000000008800000000204411000000002E
-:10459000000000010020481100000000FF000000A2
-:1045A000002044110000000000000000002048111D
-:1045B0000000000000000001002048110000000081
-:1045C0000000000200804811000000000000000010
-:1045D0000EE00000000005D60000100000200811C9
-:1045E000000000000000002B002036220000000028
-:1045F0000000000000600000000005DA000000007C
-:1046000000600000000005C3980000000020441175
-:1046100000000000000000000080481100000000C1
-:1046200000000000C0600000000005DA000000008B
-:10463000C0400400000000010000A2A400204411BA
-:1046400000000000000000220020481100000000CF
-:10465000890000000020441100000000000000015B
-:1046600000404811000005CD9700000000204411D3
-:1046700000000000000000000020481100000000C1
-:104680008A0000000020441100000000000000002B
-:1046900000404811000005CD00000000006000004F
-:1046A000000005F30001A2A4C02044110000000096
-:1046B0000000001600604811000003740000201084
-:1046C00000204411000000000001000000204811FB
-:1046D00000000000810000000020441100000000E4
-:1046E0000000000100204811000000000000217CB3
-:1046F0000020441100000000098000000020481143
-:1047000000000000FFFFFFFF002048110000000034
-:104710000000000000204811000000000000000020
-:1047200017000000000000000004217F0060441119
-:10473000000006220000001F0021023000000000DF
-:104740000000000014C00000000000000000000491
-:1047500000404C11000005ED00000000004000008A
-:10476000000000000000001700201E2D00000000C7
-:104770000000000400291E270000000000000017B0
-:1047800000803627000000000000001700201E2DCA
-:1047900000000000FFFFFFFB00281E2700000000B4
-:1047A00000000017008036270000000000000017FE
-:1047B00000201E2D000000000000000800291E2718
-:1047C00000000000000000170080362700000000F5
-:1047D0000000001700201E2D00000000FFFFFFF763
-:1047E00000281E2700000000000000170080362768
-:1047F000000000000001A2A40020441100000000FD
-:104800000000001600604811000003740000201032
-:1048100000204411000000000001000000204811A9
-:10482000000000000000217C002044110000000076
-:10483000018000000020481100000000FFFFFFFF82
-:104840000020481100000000000000000020481176
-:104850000000000000000000170000000000000041
-:104860008100000000204411000000000000000151
-:1048700000204811000000000004217F0060441166
-:10488000000006220000001F00210230000000008E
-:104890000000000014C0000000000621000000100D
-:1048A00000404C110000060700000000C02004007A
-:1048B000000000000000000038C000000000000000
-:1048C0000000001D00200A2D000000000000001E56
-:1048D00000200E2D000000000000001F0020122DFF
-:1048E00000000000000000200020162D0000000045
-:1048F00000002169002044110000000000000000B9
-:1049000000204804000000000000000000204805CE
-:10491000000000000000000000204801000000002E
-:10492000CAFEBABE002048110000000000000004CA
-:10493000003012240000000000000000002F00647E
-:1049400000000000000000000CC000000000062075
-:104950000000000300281A220000000000000008E8
-:104960000022122200000000FFFFF00000281224A5
-:104970000000000000000000002910C4000000003A
-:104980000000001F0040362400000000000000006E
-:104990000080000000000000000000001AC00000BD
-:1049A000000006229F0000000020441100000000CB
-:1049B000CAFEBABE0020481100000000000000003E
-:1049C0001AE0000000000625000000000080000042
-:1049D00000000000000000001AC0000000000627D0
-:1049E0009E0000000020441100000000CAFEBABE74
-:1049F0000020481100000000000000001AE0000044
-:104A00000000062A000000000080000000000000F6
-:104A100000000000006000000000000B000010001B
-:104A200000600411000003150000000000200411C4
-:104A3000000000000000000000600811000001B24A
-:104A40000000225C00204411000000000000000370
-:104A500000204811000000000000225600204411F0
-:104A6000000000000000001B0020481100000000B2
-:104A70000000A1FC00204411000000000000000123
-:104A800000204811000000000001A1FDC0204411D9
-:104A9000000000000000002100201E2D000000008A
-:104AA0000000001000221E2700000000000000246B
-:104AB0000020222D000000000000FFFF0028222817
-:104AC000000000000000000000294907000000006D
-:104AD000000000000020481100000000000000223B
-:104AE0000020222D000000000000FFFF00282228E7
-:104AF000000000000000000000294907000000003D
-:104B00000000000000204811000000000000002309
-:104B100000201E2D000000000000001000221E27B3
-:104B2000000000000000000000294907000000000C
-:104B300000000000004048110000000000000000DC
-:104B40000000000000000000000000000000000065
-:104B50000000000000000000000000000000000055
-:104B60000000000000000000000000000000000045
-:104B70000000000000000000000000000000000035
-:104B80000000000000000000000000000000000025
-:104B90000000000000000000000000000000000015
-:104BA0000000000000000000000000000000000005
-:104BB00000000000000000000000000000000000F5
-:104BC00000000000000000000000000000000000E5
-:104BD00000000000000000000000000000000000D5
-:104BE00000000000000000000000000000000000C5
-:104BF00000000000000000000000000000000000B5
-:104C000000000000000000000000000000000000A4
-:104C10000000000000000000000000000000000094
-:104C20000000000000000000000000000000000084
-:104C30000000000000000000000000000000000074
-:104C40000000000000000000000000000000000064
-:104C50000000000000000000000000000000000054
-:104C60000000000000000000000000000000000044
-:104C70000000000000000000000000000000000034
-:104C80000000000000000000000000000000000024
-:104C90000000000000000000000000000000000014
-:104CA0000000000000000000000000000000000004
-:104CB00000000000000000000000000000000000F4
-:104CC00000000000000000000000000000000000E4
-:104CD00000000000000000000000000000000000D4
-:104CE00000000000000000000000000000000000C4
-:104CF00000000000000000000000000000000000B4
-:104D000000000000000000000000000000000000A3
-:104D10000000000000000000000000000000000093
-:104D20000000000000000000000000000000000083
-:104D30000000000000000000000000000000000073
-:104D40000000000000000000000000000000000063
-:104D50000000000000000000000000000000000053
-:104D60000000000000000000000000000000000043
-:104D70000000000000000000000000000000000033
-:104D80000000000000000000000000000000000023
-:104D90000000000000000000000000000000000013
-:104DA0000000000000000000000000000000000003
-:104DB00000000000000000000000000000000000F3
-:104DC00000000000000000000000000000000000E3
-:104DD00000000000000000000000000000000000D3
-:104DE00000000000000000000000000000000000C3
-:104DF00000000000000000000000000000000000B3
-:104E000000000000000000000000000000000000A2
-:104E10000000000000000000000000000000000092
-:104E20000000000000000000000000000000000082
-:104E30000000000000000000000000000000000072
-:104E40000000000000000000000000000000000062
-:104E50000000000000000000000000000000000052
-:104E60000000000000000000000000000000000042
-:104E70000000000000000000000000000000000032
-:104E80000000000000000000000000000000000022
-:104E90000000000000000000000000000000000012
-:104EA0000000000000000000000000000000000002
-:104EB00000000000000000000000000000000000F2
-:104EC00000000000000000000000000000000000E2
-:104ED00000000000000000000000000000000000D2
-:104EE00000000000000000000000000000000000C2
-:104EF00000000000000000000000000000000000B2
-:104F000000000000000000000000000000000000A1
-:104F10000000000000000000000000000000000091
-:104F20000000000000000000000000000000000081
-:104F30000000000000000000000000000000000071
-:104F40000000000000000000000000000000000061
-:104F50000000000000000000000000000000000051
-:104F60000000000000000000000000000000000041
-:104F70000000000000000000000000000000000031
-:104F80000000000000000000000000000000000021
-:104F90000000000000000000000000000000000011
-:104FA0000000000000000000000000000000000001
-:104FB00000000000000000000000000000000000F1
-:104FC00000000000000000000000000000000000E1
-:104FD00000000000000000000000000000000000D1
-:104FE00000000000000000000000000000000000C1
-:104FF00000000000000000000000000000000000B1
-:1050000000000000000000000000000000000000A0
-:105010000000000000000000000000000000000090
-:105020000000000000000000000000000000000080
-:105030000000000000000000000000000000000070
-:105040000000000000000000000000000000000060
-:105050000000000000000000000000000000000050
-:105060000000000000000000000000000000000040
-:105070000000000000000000000000000000000030
-:105080000000000000000000000000000000000020
-:105090000000000000000000000000000000000010
-:1050A0000000000000000000000000000000000000
-:1050B00000000000000000000000000000000000F0
-:1050C00000000000000000000000000000000000E0
-:1050D00000000000000000000000000000000000D0
-:1050E00000000000000000000000000000000000C0
-:1050F00000000000000000000000000000000000B0
-:10510000000000000000000000000000000000009F
-:10511000000000000000000000000000000000008F
-:10512000000000000000000000000000000000007F
-:10513000000000000000000000000000000000006F
-:10514000000000000000000000000000000000005F
-:10515000000000000000000000000000000000004F
-:10516000000000000000000000000000000000003F
-:10517000000000000000000000000000000000002F
-:10518000000000000000000000000000000000001F
-:10519000000000000000000000000000000000000F
-:1051A00000000000000000000000000000000000FF
-:1051B00000000000000000000000000000000000EF
-:1051C00000000000000000000000000000000000DF
-:1051D00000000000000000000000000000000000CF
-:1051E00000000000000000000000000000000000BF
-:1051F00000000000000000000000000000000000AF
-:10520000000000000000000000000000000000009E
-:10521000000000000000000000000000000000008E
-:10522000000000000000000000000000000000007E
-:10523000000000000000000000000000000000006E
-:10524000000000000000000000000000000000005E
-:10525000000000000000000000000000000000004E
-:10526000000000000000000000000000000000003E
-:10527000000000000000000000000000000000002E
-:10528000000000000000000000000000000000001E
-:10529000000000000000000000000000000000000E
-:1052A00000000000000000000000000000000000FE
-:1052B0000142050A05BA02500000000001C301685E
-:1052C000044105BA00000000022502090250015104
-:1052D000000000000223024502A00241000000007D
-:1052E00003D705BA05BA05BA0000000005E205E3D8
-:1052F000031F05BA00000000032005BF0320034A76
-:105300000000000003340282034C033E0000000052
-:1053100005BA05BA05BA05BA0000000005BA055776
-:1053200005BA032A0000000003BC05BA04C3034EFB
-:105330000000000004A20455043F05BA000000006C
-:1053400004D805BA044304E5000000000455050F25
-:10535000035B037B0000000005BA05BA05BA05BA75
-:105360000000000005BA05BA05BA05BA0000000041
-:1053700005BA05BA05D805C10000000005BA05BA8E
-:10538000000705BA0000000005BA05BA05BA05BA5B
-:105390000000000005BA05BA05BA05BA0000000011
-:1053A00003F803ED0408040600000000040E040ADC
-:1053B000040C041000000000041C04180424042041
-:1053C00000000000042C0428043404300000000015
-:1053D00005BA05BA043A04380000000005BA05BA57
-:1053E00005BA05BA0000000005BA05BA05BA05BA43
-:1053F000000000000002060E062C0006000000005F
-:00000001FF
diff --git a/firmware/radeon/RS780_pfp.bin.ihex b/firmware/radeon/RS780_pfp.bin.ihex
deleted file mode 100644
index 40880411e785..000000000000
--- a/firmware/radeon/RS780_pfp.bin.ihex
+++ /dev/null
@@ -1,145 +0,0 @@
-:1000000000CA040000A00000007E828B007C038BED
-:10001000008001DB007C038B00D4401E00EE001E3C
-:1000200000CA040000A00000007E828B00C41838C3
-:1000300000CA240000CA2800009581CB00C41C3AE5
-:1000400000C3C00000CA080000CA0C00007C744B4A
-:1000500000C200050099C00000C41C3A007C744C2A
-:1000600000C0FFE000042C0800309002007D250055
-:1000700000351402007D350B00255407007CD58027
-:1000800000259C070095C00400D5001B007EDDC143
-:10009000007D9D8000D6801B00D5801B00D4401EB3
-:1000A00000D5401E00D6401E00D6801E00D4801E03
-:1000B00000D4C01E009783D300D5C01E00CA08001C
-:1000C0000080001A00CA0C0000E4011E00D4001ECB
-:1000D0000080000C00C4183800E4013E00D4001E6B
-:1000E0000080000C00C4183800D4401E00EE001E32
-:1000F00000CA040000A00000007E828B00E4011E04
-:1001000000D4001E00D4401E00EE001E00CA0400F1
-:1001100000A00000007E828B00E4013E00D4001E9F
-:1001200000D4401E00EE001E00CA040000A0000023
-:10013000007E828B00CA080000CA0C00008001DB30
-:1001400000D4802400CA0800007C00C000C8142528
-:1001500000C81824007C9488007C988000C20003AA
-:1001600000D40075007C744C0080006400D4401EF4
-:1001700000CA180000D4401E00D5801E0080006216
-:1001800000D4007500D4401E00CA080000CA0C004C
-:1001900000CA100000D4801900D4C01800D5001780
-:1001A00000D4801E00D4C01E00D5001E00E2001E38
-:1001B00000CA040000A00000007E828B00D40075FD
-:1001C00000D4401E00CA080000CA0C0000CA10007B
-:1001D00000D4801900D4C01800D5001700D4801EA8
-:1001E00000D4C01E00D5001E00EE001E00CA040090
-:1001F00000A00000007E828B00CA080000248C0151
-:1002000000D480600094C0030004100100041002B8
-:1002100000D5002500D4401E0080000000D4801EC0
-:1002200000CA080000D4806100D4401E0080000095
-:1002300000D4801E00CA080000CA0C0000D4401E72
-:1002400000D4801600D4C01600D4801E008001DBCC
-:1002500000D4C01E00C6084300CA0C0000CA10002B
-:100260000094800400CA140000E420F300D420139A
-:1002700000D5606500D4E01C00D5201C00D5601CB2
-:10028000008000000006200100C6084300CA0C00E0
-:1002900000CA1000009483F700CA140000E420F3A1
-:1002A0000080009C00D4201300C6084300CA0C0044
-:1002B00000CA1000009883EF00CA140000D4006444
-:1002C000008000B00000000000C4143200C61843D3
-:1002D00000C4082F0095400500C40C3000D4401E17
-:1002E0000080000000EE001E009583F500C4103170
-:1002F00000D4403300D5206500D4A01C00D4E01CFD
-:1003000000D5201C00E4015E00D4001E0080000027
-:100310000006200100CA1800000A200100D600765D
-:1003200000C408360098800700C6104500950110EB
-:1003300000D4001F00D460620080000000D420625E
-:1003400000CC383500CC1433008401DE00D40072B8
-:1003500000D5401E0080000000EE001E00E2001AE2
-:10036000008401DE00E2001A00CC104B00CC0447F0
-:10037000002C9401007D098B00984005007D15CB71
-:1003800000D4001A008001DB00D4006D0034440169
-:1003900000CC0C480098403A00CC2C4A00958004D0
-:1003A00000CC0449008001DB00D4001A00D4C01A3C
-:1003B000002828010084011300CC10030098801B42
-:1003C0000004380C0084011300CC1003009880173F
-:1003D000000438080084011300CC10030098801337
-:1003E000000438040084011300CC1003009880142A
-:1003F00000CC104C009A800900CC144D009840DCD1
-:1004000000D4006D00CC184800D5001A00D5401A61
-:10041000008000EC00D5801A0096C0D500D4006D95
-:10042000008001DB00D4006E009AC00300D4006D90
-:1004300000D4006E0080000000EC007F009AC0CC69
-:1004400000D4006D008001DB00D4006E00CC1403EA
-:1004500000CC180300CC1C03007D9103007DD583E4
-:10046000007D190C0035CC1F0035701F007CF0CBCF
-:10047000007CD08B00880000007E8E8B0095C0042D
-:1004800000D4006E008001DB00D4001A00D4C01A32
-:1004900000CC080300CC0C0300CC100300CC1403E8
-:1004A00000CC180300CC1C0300CC240300CC280390
-:1004B0000035C41F0036B01F007C704B0034F01FA5
-:1004C000007C704B0035701F007C704B007D888174
-:1004D000007DCCC1007E5101007E9541007C908260
-:1004E000007CD4C2007C848B009AC003007C8C8B7F
-:1004F000002C88010098809E00D4006D0098409CDC
-:1005000000D4006E00CC084C00CC0C4D00CC104840
-:1005100000D4801A00D4C01A0080012400D5001A2B
-:1005200000CC083200D40032009482B600CA0C001D
-:1005300000D4401E0080000000D4001E00E4011E14
-:1005400000D4001E00CA080000CA0C0000CA100037
-:1005500000D4401E00CA140000D4801E00D4C01E67
-:1005600000D5001E00D5401E00D54034008000009C
-:1005700000EE001E0028040400E2001A00E2001A47
-:1005800000D4401A00CA380000CC080300CC0C0389
-:1005900000CC0C0300CC0C030098829A00000000F1
-:1005A000008401DE00D7A06F0080000000EE001F75
-:1005B00000CA040000C2FF0000CC083400C13FFFA5
-:1005C000007C74CB007CC90B007D010F0099028D6B
-:1005D000007C738B008401DE00D7A06F00800000D8
-:1005E00000EE001F00CA080000281900007D898B5A
-:1005F000009580140028140400CA0C0000CA1000E2
-:1006000000CA1C0000CA240000E2001F00D4C01A67
-:1006100000D5001A00D5401A00CC180300CC2C03DA
-:1006200000CC2C0300CC2C03007DA58B007D9C47C7
-:1006300000984274000000000080018400D4C01AB9
-:1006400000D4401E00D4801E0080000000EE001E7A
-:1006500000E4011E00D4001E00D4401E00EE001E67
-:1006600000CA040000A00000007E828B00E4013E6E
-:1006700000D4001E00D4401E00EE001E00CA04007C
-:1006800000A00000007E828B00CA080000248C06B7
-:10069000000CCC060098C00600CC104E0099000457
-:1006A00000D4007300E4011E00D4001E00D4401EDC
-:1006B00000D4801E0080000000EE001E00CA08006A
-:1006C00000CA0C000034D01800251001009500214C
-:1006D00000C17FFF00CA100000CA140000CA180041
-:1006E00000D4801D00D4C01D007DB18B00C142022A
-:1006F00000C2C00100D5801D0034DC0E007D5D4CC1
-:10070000007F734C00D7401E00D5001E00D5401E50
-:1007100000C1420000C2C00000099C010031DC1091
-:10072000007F5F4C007F734C00042802007D8380B3
-:1007300000D5A86F00D5806600D7401E00EC005E93
-:1007400000C8240200C82402008001DB00D6007625
-:1007500000D4401E00D4801E00D4C01E00800000C3
-:1007600000EE001E0080000000EE001F00D4001FFD
-:100770000080000000D4001F00D4001F008800008B
-:1007800000D4001F00000000000000000000000076
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B0000000000000000000000000000000000039
-:1007C0000000000000000000000000000000000029
-:1007D0000000000000000000000000000000000019
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:10080000000101940002019B000300B2000400A259
-:10081000000500030006003F000700320008014FFA
-:1008200000090046000A0036001001D9001700C573
-:100830000022015D0023016C002000D70024014844
-:100840000026004D0027005C0028008D0029005183
-:10085000002A007E002B0061002F0088003200AAD1
-:10086000003401A20036006F003C0179003F009582
-:10087000004101AF00440151005501960056019D11
-:100880000060000B00610034006200380063003833
-:1008900000640038006500380066003800670038E2
-:1008A0000068003A00690041006A0048006B004897
-:1008B000006C0048006D0048006E0048006F004862
-:1008C000007301D9000000060000000600000006C9
-:1008D0000000000600000006000000060000000600
-:1008E00000000006000000060000000600000006F0
-:1008F00000000006000000060000000600000006E0
-:00000001FF
diff --git a/firmware/radeon/RV610_me.bin.ihex b/firmware/radeon/RV610_me.bin.ihex
deleted file mode 100644
index ba19ed892920..000000000000
--- a/firmware/radeon/RV610_me.bin.ihex
+++ /dev/null
@@ -1,1345 +0,0 @@
-:1000000000000000C020040000000000000000000C
-:1000100000A0000A000000000000FFFF00284621A9
-:100020000000000000000000D900480000000000AF
-:1000300000000000C02004000000000000000000DC
-:1000400000A0000A000000000000000000E0000026
-:100050000000000000010000C02946200000000050
-:1000600000000000D900480000000000000000006F
-:10007000C0200400000000000000000000A0000AF2
-:10008000000000008100000000204411000000007A
-:1000900000000001002048110000000000042004BE
-:1000A000006044110000068D0000000000600000A8
-:1000B000000006310000000000600000000006455E
-:1000C00000000000C02008000000000000000F0039
-:1000D000002816220000000000000008002116255C
-:1000E000000000000000001800203625000000007D
-:1000F0008D000000002044110000000000000004FA
-:10010000002F022500000000000000000CE00000AD
-:1001100000000018004120000040481100000019B4
-:100120000042200000204811000000008E00000066
-:1001300000204411000000000000002800204A2D8B
-:1001400000000000900000000020441100000000AA
-:100150000000000000204805000000000000000C26
-:1001600000211622000000000000000300281625D0
-:10017000000000000000001900211A220000000009
-:100180000000000400281A26000000000000000003
-:10019000002914C5000000000000001900203625C9
-:1001A0000000000000000000003A140200000000FF
-:1001B00000000016002116250000000000000003CA
-:1001C00000281625000000000000001700200E2D5A
-:1001D00000000000FFFFFFFC00280E2300000000CD
-:1001E00000000000002914A3000000000000001718
-:1001F00000203625000000000000800000280E22AC
-:10020000000000000000000700220E230000000094
-:10021000000000000029386E0000000020000000EF
-:1002200000280E22000000000000000600210E231E
-:1002300000000000000000000029386E00000000EF
-:100240000000000000220222000000000000000068
-:1002500014E0000000000038000000002EE0000064
-:1002600000000035000000002CE000000000003716
-:100270000000000000400E2D0000003900000008C2
-:1002800000200E2D00000000000000090040122D8B
-:10029000000000460000000100400E2D0000003963
-:1002A00000000000C0200C0000000000003FFFFC28
-:1002B0000028122300000000000000020022122487
-:1002C000000000000000001F00211E2300000000AD
-:1002D0000000000014E000000000003E00000008E4
-:1002E00000401C11000000410000000D00201E2DE8
-:1002F000000000000000000F00281E270000000082
-:100300000000000300221E27000000007FC0000044
-:1003100000281A23000000000000001400211A2603
-:10032000000000000000000100331A260000000059
-:100330000000000800221A26000000000000000053
-:1003400000290CC700000000000000270020362410
-:100350000000000000007F000028122100000000C3
-:1003600000001400002F0224000000000000000024
-:100370000CE000000000004B0000000100290E23EB
-:10038000000000000000000E0020362300000000E6
-:100390000000E0000020441100000000FFF8000011
-:1003A00000294A230000000000000000003A2C024F
-:1003B000000000000000000200220E2B00000000E0
-:1003C000FC00000000280E23000000000000000FC9
-:1003D000002036230000000000001FFF00294A23F0
-:1003E000000000000000002700204A2D000000004F
-:1003F000000000000020481100000000000000295B
-:1004000000200E2D00000000060A020000294A23E9
-:100410000000000000000000002048110000000063
-:100420000000000000204811000000000000000152
-:1004300000210222000000000000000014E0000083
-:1004400000000061000000002EE000000000005FDE
-:10045000000000002CE000000000005E0000000032
-:1004600000400E2D000000620000000100400E2D33
-:10047000000000620000000A00200E2D00000000B5
-:100480000000000B0040122D0000006A0000000078
-:10049000C0200C0000000000003FFFFC00281223D9
-:1004A00000000000000000020022122400000000F2
-:1004B0007FC0000000281623000000000000001488
-:1004C0000021162500000000000000010033162561
-:1004D000000000008000000000280E230000000043
-:1004E0000000000000290CA3000000003FFFFC00FA
-:1004F00000290E23000000000000001F00211E2321
-:10050000000000000000000014E000000000006D8A
-:100510000000010000401C11000000700000000DF0
-:1005200000201E2D00000000000000F000281E2703
-:10053000000000000000000400221E270000000050
-:100540008100000000204411000000000000000DA8
-:100550000020481100000000FFFFF0FF00281A30C3
-:10056000000000000000A02800204411000000004E
-:1005700000000000002948E6000000000000A0186C
-:1005800000204411000000003FFFFFFF00284A2325
-:10059000000000000000A010002044110000000036
-:1005A00000000000002048040000000000000030AF
-:1005B0000020162D00000000000000020029162572
-:1005C0000000000000000030002036250000000080
-:1005D000000000250020162D000000000000000093
-:1005E000002F00A300000000000000000CC000006D
-:1005F00000000083000000260020162D00000000EF
-:1006000000000000002F00A4000000000000000017
-:100610000CC000000000008400000000004000004A
-:100620000000008A000000250020362300000000A2
-:100630000000002600203624000000000000001703
-:1006400000201E2D000000000000000200210227F3
-:10065000000000000000000014E000000000008A1C
-:1006600000000000006000000000066800000000BC
-:10067000006000000000065C0000000200210E2265
-:10068000000000000000000014C000000000008D09
-:1006900000000012C040362000000093000000005F
-:1006A0002EE0000000000091000000002CE000009F
-:1006B000000000900000000200400E2D000000929B
-:1006C0000000000300400E2D000000920000000C0E
-:1006D00000200E2D00000000000000120020362334
-:1006E000000000000000000300210E2200000000B6
-:1006F0000000000014C00000000000980000A00CE2
-:10070000002044110000000000000000C02048004C
-:100710000000000000000000C0404800000000A0F1
-:100720000000A00C002044110000000000000000A8
-:100730000020481100000000000000002EE0000032
-:100740000000009E000000002CE000000000009D62
-:100750000000000200400E2D0000009F000000037A
-:1007600000400E2D0000009F0000000C00200E2D08
-:10077000000000000000000000204803000000000E
-:1007800000000000003A0C0200000000003F0000E2
-:1007900000280E23000000000000001000210E239E
-:1007A00000000000000000110020362300000000BF
-:1007B0000000001E0021022B0000000000000000CD
-:1007C00014C00000000000A700000016C020362062
-:1007D000000000000000001F0021022B00000000AC
-:1007E0000000000014C00000000000AA0000001576
-:1007F000C0203620000000000000000800210E2B61
-:10080000000000000000007F00280E230000000010
-:1008100000000000002F0223000000000000000084
-:100820000CE00000000000E10000000027000000D4
-:10083000000000000000000000600000000002A3B3
-:1008400000000001002F0223000000000000000053
-:100850000AE00000000000B300000000006000009B
-:100860000000013A81000000002044110000000057
-:100870000000000600204811000000000000000CED
-:1008800000221E300000000099800000002044116A
-:1008900000000000000000040020122D00000000F5
-:1008A00000000008002212240000000000000010D8
-:1008B00000201811000000000000000000291CE4C6
-:1008C0000000000000000000006048070000012F49
-:1008D0009B00000000204411000000000000000008
-:1008E00000204802000000009C000000002044118D
-:1008F00000000000000000000033146F0000000042
-:100900000000000100333E23000000000000000052
-:10091000D9004800000000000000000000203C0555
-:1009200000000000810000000020441100000000D1
-:100930000000000E00204811000000000000000030
-:1009400000201010000000000000E007002044110B
-:10095000000000000000000F0021022B000000003A
-:100960000000000014C00000000000CB00F8FF08E9
-:1009700000204811000000009800000000404811CD
-:10098000000000DC000000F000280E220000000043
-:10099000000000A0002F0223000000000000000063
-:1009A0000CC00000000000DA0000001100200E2D35
-:1009B0000000000000000001002F022300000000E2
-:1009C000000000000CE00000000000D50000000264
-:1009D000002F022300000000000000000CE00000D7
-:1009E000000000D400003F0000400C11000000D6C1
-:1009F00000001F0000400C11000000D600000F0096
-:100A000000200C11000000000038000900294A23D2
-:100A1000000000003F00000000280E2B0000000036
-:100A20000000000200220E2300000000000000076A
-:100A300000494A23000000DC00380F09002048115B
-:100A400000000000680000070020481100000000BE
-:100A50000000000800214A270000000000000000FC
-:100A60000020481100000000060A020000294A2464
-:100A700000000000000000000020481100000000FD
-:100A80000000000000204811000000000000A20249
-:100A9000002044110000000000FF000000280E228A
-:100AA000000000000000008000294A230000000030
-:100AB0000000002700200E2D00000000000000268E
-:100AC0000020122D0000000000000000002F008315
-:100AD00000000000000000000CE00000000000EA40
-:100AE000000000000060000000000662000000003E
-:100AF00000400000000000EB00000000006000006B
-:100B000000000665000000070020222D0000000004
-:100B10000000000500220E2200000000001000006E
-:100B200000280E23000000000000000000292068BB
-:100B30000000000000000000003A0C02000000006D
-:100B4000000000EF00280E2300000000000000005D
-:100B500000292068000000000000001700200E2D72
-:100B6000000000000000000300210223000000003C
-:100B70000000000014E00000000000F80000000B7E
-:100B800000210228000000000000000014C0000046
-:100B9000000000F8000004000029222800000000E6
-:100BA0000000001400203628000000000000001C97
-:100BB00000210E22000000000000000014C0000010
-:100BC000000000FD0000A30C002044110000000004
-:100BD0000000000000204811000000000000001E7E
-:100BE00000210E22000000000000000014C00000E0
-:100BF0000000010B0000A30F0020441100000000C2
-:100C00000000001100200E2D000000000000000177
-:100C1000002F022300000000000000000CC00000B4
-:100C200000000104FFFFFFFF004048110000010B1E
-:100C300000000002002F022300000000000000005E
-:100C40000CC00000000001070000FFFF0040481139
-:100C50000000010B00000004002F02230000000030
-:100C6000000000000CC000000000010A000000FFAE
-:100C7000004048110000010B000000010020481155
-:100C8000000000000002C400002044110000000029
-:100C90000000001F00210E220000000000000000E4
-:100CA00014C00000000001120000001040210E20BE
-:100CB00000000000000000130020362300000000A8
-:100CC0000000001840224A20000000000000001030
-:100CD000C0424A20000001140000000000200C1156
-:100CE0000000000000000013002036230000000078
-:100CF000000000000020481100000000000000007B
-:100D000000204811000000000000000A002010111F
-:100D10000000000000000000002F0224000000007E
-:100D2000000000000CE000000000011B00000000BB
-:100D300000204811000000000000000100531224B0
-:100D400000000117FFBFFFFF00283A2E000000003F
-:100D50000000001B00210222000000000000000033
-:100D600014C000000000012E81000000002044118A
-:100D7000000000000000000D0020481100000000ED
-:100D80000000001800220E3000000000FC000000EF
-:100D900000280E2300000000810000000020441104
-:100DA000000000000000000E0020481100000000BC
-:100DB0000000000000201010000000000000E00E05
-:100DC000002044110000000007F8FF08002048112F
-:100DD000000000000000000000294A23000000007D
-:100DE0000000001C00201E2D000000000000000874
-:100DF00000214A27000000000000000000204811E8
-:100E000000000000060A020000294A240000000039
-:100E10000000000000204811000000000000000059
-:100E200000204811000000000000000000800000C9
-:100E300000000000810000000020441100000000BC
-:100E40000000000100204811000000000000217C8B
-:100E50000020441100000000008000000020481124
-:100E60000000000000000000002048060000000014
-:100E70000000000800214A270000000000000000D8
-:100E800017000000000000000004217F00604411F2
-:100E90000000068D0000001F00210230000000004D
-:100EA0000000000014C000000000068C00000004D8
-:100EB00000404C1100000135810000000020441169
-:100EC00000000000000000010020481100000000A8
-:100ED000000021F800204411000000000000001C68
-:100EE0000020481100000000000421F900604411B6
-:100EF0000000068D000000110021023000000000FB
-:100F00000000000014E000000000013C00000000B0
-:100F100000800000000000000000000000600000F1
-:100F20000000000B00000000006004110000031529
-:100F3000000000000020041100000000000000007C
-:100F400000600811000001B2000000000060000015
-:100F5000000001600000FFFF40280E20000000009C
-:100F600000000010C0211220000000000000FFFF60
-:100F7000402806200000000000000010C0210A20C8
-:100F800000000000000000000034146100000000B8
-:100F90000000000000741882000002BB0001A1FDE7
-:100FA00000604411000002E000003FFF002F022F0C
-:100FB00000000000000000000CC00000000001471D
-:100FC00000000000C040040000000001000000001C
-:100FD000006000000000000B000000000060041131
-:100FE00000000315000000000020041100000000B4
-:100FF0000000000000600811000001B200003FFF87
-:10100000002F022F00000000000000000CE0000094
-:10101000000000000000000000600000000001600F
-:101020000000001040210E20000000000000FFFF23
-:10103000C0281220000000000000001040211620EF
-:10104000000000000000FFFFC0681A20000002BB83
-:101050000001A1FD00604411000002E000003FFF1C
-:10106000002F022F00000000000000000CC0000054
-:101070000000015800000000C04004000000000112
-:101080000000225C0020441100000000000000016C
-:1010900000300A2F000000000000000100210A2299
-:1010A000000000000000000300384A220000000099
-:1010B0000000225600204411000000000000001A29
-:1010C00000204811000000000000A1FC0020441195
-:1010D0000000000000000001008048110000000036
-:1010E00000000000006000000000000B0000000095
-:1010F000006000000000018F0000000000600000A0
-:10110000000001A000003FFF002F022F00000000A0
-:10111000000000000CE000000000000000000000E3
-:1011200000202C0800000000000000000020241116
-:101130000000000000000000002028110000000056
-:10114000000022560020441100000000000000169C
-:1011500000204811000000000000225C0020441123
-:101160000000000000000003002048110000000003
-:1011700093800000002044110000000000000002E5
-:1011800000221E290000000000000000007048EB53
-:101190000000019C0000000000600000000002BB95
-:1011A00000000001403306200000000000000000A5
-:1011B000C03024090000000000003FFF002F022F74
-:1011C00000000000000000000CE000000000000033
-:1011D0000000000000600000000002A3000000000A
-:1011E000002F022100000000000000000AE00000C3
-:1011F0000000018100000000006000000000013AD2
-:101200000000000000400000000001869500000082
-:10121000002044110000000000000000002F022107
-:1012200000000000000000000CE00000000001864B
-:1012300000000000C0204800000000000000000185
-:10124000005306210000018292000000002044119A
-:101250000000000000000000C0604800000001978E
-:101260000001A1FD00204411000000000000001159
-:101270000020062D00000000000000000078042A75
-:10128000000002FB00000000002028090000000010
-:1012900000003FFF002F022F0000000000000000B0
-:1012A0000CC000000000017400000000C0400400F9
-:1012B000000000010000021000600411000003158E
-:1012C00000003FFF002F022F000000000000000080
-:1012D0000CE000000000019400000015C020362042
-:1012E0000000000000000016C020362000000000B2
-:1012F0003F800000002004110000000046000000B4
-:1013000000600811000001B2000000000080000031
-:10131000000000000000A1FC0020441100000000BB
-:1013200000003FFF002F022F00000000000000001F
-:101330000CC000000000019B00000001008048116B
-:1013400000000000000000210080481100000000A3
-:101350000000FFFF40280E200000000000000010E9
-:10136000C0211220000000000000FFFF40281620CE
-:101370000000000000000010C0811A2000000000E2
-:101380008100000000204411000000000000000661
-:1013900000204811000000000000000800221E305C
-:1013A000000000000000002900201A2D00000000AD
-:1013B0000000E0000020441100000000FFFBFF09D6
-:1013C00000204811000000000000000F0020222D26
-:1013D0000000000000001FFF00294A280000000054
-:1013E000000000060020222D000000000000000088
-:1013F000002920E80000000000000000002048084C
-:101400000000000000000000002048110000000063
-:10141000060A020000294A26000000000000000021
-:1014200000204811000000000000000000204811CA
-:101430000000000000000100002018110000000062
-:101440000000000800621E280000012F00000008B4
-:1014500000822228000000000002C0000020441189
-:10146000000000000000001500600E2D000001BD0E
-:101470000000001600600E2D000001BD0000C00835
-:1014800000204411000000000000001700200E2D75
-:10149000000000000000000014C00000000001B9BE
-:1014A0000000000000200411000000000000000007
-:1014B0000020480100000000390000000020481111
-:1014C00000000000000000000020481100000000A3
-:1014D000000000000080480200000000000000182A
-:1014E00000202E2D0000000000000000003B0D63D6
-:1014F000000000000000000800224A230000000055
-:101500000000001000224A23000000000000001824
-:1015100000224A2300000000000000000080480371
-:101520000000000000000000006000000000000B50
-:10153000000010000060041100000315000000000E
-:1015400000200411000000000000000000600811ED
-:10155000000001B2000000070021062F000000007B
-:101560000000001300200A2D000000000000000110
-:1015700000202C11000000000000FFFF4028222066
-:10158000000000000000000F0026222800000000DC
-:101590000000001040212620000000000000000F85
-:1015A000002626290000000000000000002028027C
-:1015B000000000000000225600204411000000003E
-:1015C0000000001B00204811000000000000000087
-:1015D000002F022100000000000000000CE00000CD
-:1015E000000001E00000225C002044110000000027
-:1015F0000000008100204811000000000000A1FC54
-:1016000000204411000000000000000100204811EB
-:10161000000000000000008000201C1100000000FD
-:1016200000000000002F0227000000000000000062
-:101630000CE00000000001DC000000000060000081
-:10164000000001E90000000100531E27000001D83E
-:101650000000000100202C11000000000000001F0D
-:1016600000280A22000000000000001F00282A2A8B
-:10167000000000000000000100530621000001D11D
-:101680000000225C00204411000000000000000265
-:1016900000304A2F000000000000A1FC002044118F
-:1016A00000000000000000010020481100000000C0
-:1016B0000000000100301E2F0000000000000000AC
-:1016C000002F022700000000000000000CE00000D6
-:1016D000000000000000000000600000000001E9C0
-:1016E0000000000100531E27000001E50000FFFF7D
-:1016F00040280E20000000000000000F00260E23EE
-:101700000000000000000010C021122000000000B6
-:101710000000000F0026122400000000000000005E
-:1017200000201411000000000000000000601811EB
-:10173000000002BB0001A1FD0020441100000000D8
-:1017400000000000002F022B00000000000000003D
-:101750000CE00000000001F8000000100022162834
-:1017600000000000FFFF0000002816250000000018
-:101770000000FFFF00281A29000000000000000000
-:10178000002948C500000000000000000020480AB1
-:10179000000000000000000000202C1100000000EC
-:1017A000000000100022162300000000FFFF0000D0
-:1017B00000281625000000000000FFFF00281A2462
-:1017C0000000000000000000002948C500000000E3
-:1017D0000000000000731503000002050000000077
-:1017E0000020180500000000000000000073152410
-:1017F0000000020500000000002D14C500000000DC
-:1018000000000000003008A20000000000000000FE
-:101810000020480200000000000000000020280214
-:101820000000000000000000002020030000000075
-:101830000000000000802404000000000000000FF1
-:1018400000210225000000000000000014C000007C
-:101850000000068C00000000002B140500000000B2
-:1018600000000001009016250000000000000000AC
-:10187000006000000000000B000000000060041188
-:10188000000003150000000000200411000000000B
-:101890000000000000600811000001B200002256A4
-:1018A00000204411000000000000001A00294A2214
-:1018B0000000000000000000C02000000000000048
-:1018C00000003FFF002F022F00000000000000007A
-:1018D0000CE000000000000000000000C020040038
-:1018E000000000000000225C002044110000000005
-:1018F0000000000300384A21000000000000A1FCA5
-:1019000000204411000000000000000100204811E8
-:10191000000000000000FFFF40281220000000002F
-:1019200000000010C0211A20000000000000FFFF8E
-:1019300040280E200000000000000010C0211620EA
-:10194000000000000000000000741465000002BBED
-:101950000001A1FD00604411000002E00000000150
-:10196000003306210000000000000000002F0221CB
-:1019700000000000000000000CC000000000021980
-:1019800000003FFF002F022F0000000000000000B9
-:101990000CC000000000021200000000C040040063
-:1019A000000000010000000000600000000006458B
-:1019B000000000000040040F0000021300000000BF
-:1019C0000060000000000631000000000060000020
-:1019D000000006450000021000600411000003151D
-:1019E0000000000000600000000001A000000000F6
-:1019F000006000000000019C00000000006000008A
-:101A0000000002BB0000000000600000000002A314
-:101A1000938000000020441100000000000000003E
-:101A2000002048080000000000000000002F022FE6
-:101A300000000000000000000AE000000000023288
-:101A400000000000006000000000013A00000000FB
-:101A50000040000000000236950000000020441104
-:101A60000000000000000000002F022F0000000016
-:101A7000000000000CE00000000002360000000042
-:101A8000C0404800000002339200000000204411D2
-:101A90000000000000000000C0204800000000001E
-:101AA0000000225600204411000000000000001633
-:101AB00000204811000000000000225C00204411BA
-:101AC000000000000000000300204811000000009A
-:101AD0000000A1FC002044110000000000000001F3
-:101AE00000204811000000000001A1FD0020441169
-:101AF000000000000000000000600411000002FB74
-:101B000000000000C04004000000000100000000D0
-:101B100000600000000006310000A00C002044110D
-:101B20000000000000000000C0204800000000008D
-:101B300000000000C040480000000000000000005D
-:101B4000006000000000000B0000001840210A2087
-:101B50000000000000000003002F0222000000002F
-:101B6000000000000AE000000000024C0000001429
-:101B70000020222D00000000000801010029222879
-:101B800000000000000000140020362800000000C3
-:101B90000000A30C00204411000000000000000021
-:101BA000C02048000000000000000000C0204800E5
-:101BB0000000000000000000C0404800000002518A
-:101BC00000000000006000000000000B000000109A
-:101BD00000600411000003153F8000000020041184
-:101BE000000000000000000000600811000001B2C9
-:101BF0000000225C002044110000000000000003EF
-:101C000000204811000000000000000000600000FB
-:101C10000000027C0000001700201E2D00000000C4
-:101C20000000000100211E2700000000000000004D
-:101C300014E000000000026A0000001200201E2DC7
-:101C4000000000000000FFFF00281E270000000029
-:101C50000000000000341C2700000000000000000D
-:101C600012C000000000025F0000000000201C11F4
-:101C70000000000000000000002F00E50000000050
-:101C80000000000008C00000000002620000000028
-:101C900000201407000000000000001200201E2D8C
-:101CA000000000000000001000211E2700000000BE
-:101CB0000000000000341C4700000000000000008D
-:101CC00012C00000000002670000000000201C118C
-:101CD0000000000000000000002F00E600000000EF
-:101CE0000000000008C000000000026A00000000C0
-:101CF0000020180700000000000000000060000045
-:101D0000000002C100002256002044110000000023
-:101D1000000000000034202300000000000000004C
-:101D200012C00000000002720000000000342044D5
-:101D3000000000000000000012C00000000002715E
-:101D40000000001600404811000002760000001854
-:101D500000404811000002760000000000342044DA
-:101D6000000000000000000012C00000000002752A
-:101D70000000001700404811000002760000001922
-:101D800000204811000000000000A1FC00204411C8
-:101D900000000000000000010020481100000000C9
-:101DA0000001A1FD00604411000002E900003FFFB6
-:101DB000002F022F00000000000000000CC00000F7
-:101DC0000000025600000000C040040000000001B6
-:101DD0000000001040210620000000000000FFFF6E
-:101DE000C0280A20000000000000001040210E2042
-:101DF000000000000000FFFFC028122000000000CB
-:101E00000000001040211620000000000000FFFF2D
-:101E1000C0881A200000000081000000002044114A
-:101E20000000000000000001002048110000000038
-:101E300000042004006044110000068D0000000032
-:101E4000006000000000063100000000C0600000DB
-:101E5000000002A30000000500200A2D0000000081
-:101E60000000000800220A22000000000000002BF1
-:101E700000201A2D000000000000001C00201E2D74
-:101E8000000000000000700000281E270000000075
-:101E90000000000000311CE6000000000000002AE5
-:101EA00000201A2D000000000000000C00221A265D
-:101EB0000000000000000000002F00E6000000000D
-:101EC0000000000006E00000000002920000000098
-:101ED00000201C11000000000000000000200C1178
-:101EE000000000000000002B00203623000000004E
-:101EF0000000001000201811000000000000000089
-:101F000000691CE20000012F9380000000204411B2
-:101F10000000000000000000002048070000000052
-:101F200095000000002044110000000000000000A7
-:101F3000002F022F00000000000000000CE0000055
-:101F40000000029D0000000100333E2F0000000051
-:101F500000000000D90048000000000092000000CE
-:101F6000002044110000000000000000C0204800D4
-:101F7000000000000000001C0040362700000000A8
-:101F80000000000CC0220A20000000000000002910
-:101F9000002036220000000000000028C04036204B
-:101FA000000000000000A2A4002044110000000076
-:101FB000000000090020481100000000A1000000FE
-:101FC00000204411000000000000000100804811C2
-:101FD000000000000000002100201E2D0000000075
-:101FE00000000000002C1CE30000000000000021A5
-:101FF00000203627000000000000002200201E2DD7
-:102000000000000000000000002C1CE400000000A4
-:1020100000000022002036270000000000000023FE
-:1020200000201E2D0000000000000000003120A351
-:102030000000000000000000002D1D07000000004F
-:1020400000000023002036270000000000000024CC
-:1020500000201E2D0000000000000000003120C400
-:102060000000000000000000002D1D07000000001F
-:10207000000000240080362700000000000000213E
-:10208000002036230000000000000022002036243B
-:10209000000000000000000000311CA30000000050
-:1020A0000000002300203627000000000000000090
-:1020B00000311CC40000000000000024008036270E
-:1020C000000000000000001A002036270000000079
-:1020D0000000001B00203628000000000000001750
-:1020E00000201E2D00000000000000020021022739
-:1020F000000000000000000014C00000000002DC2E
-:102100000000000000400000000002D90000001A9A
-:1021100000203627000000000000001B00203628A9
-:10212000000000000000001700201E2D000000002D
-:102130000000000200210227000000000000000053
-:1021400014E00000000002D9000000030021022773
-:10215000000000000000000014E00000000002DCAD
-:102160000000002300201E2D0000000000000000E1
-:10217000002E00E1000000000000000002C000008E
-:10218000000002DC0000002100201E2D00000000E5
-:1021900000000000003120A100000000000000004D
-:1021A000002E00E8000000000000000006C0000053
-:1021B000000002DC0000002400201E2D00000000B2
-:1021C00000000000002E00E20000000000000000FF
-:1021D00002C00000000002DC0000002200201E2DD2
-:1021E0000000000000000000003120C200000000DC
-:1021F00000000000002E00E80000000000000000C9
-:1022000006C00000000002DC0000000000600000CA
-:10221000000006680000000000600000000002B539
-:102220000000000000400000000002DE000000008E
-:1022300000600000000002B5000000000060000027
-:102240000000065F0000000000400000000002DE09
-:102250000000000000600000000002A70000000075
-:1022600000400000000002DE0000001A00201E2DC9
-:10227000000000000000001B0080222D0000000074
-:102280000000001000221E230000000000000000DB
-:1022900000294887000000000000000000311CA356
-:1022A000000000000000001000221E2700000000B7
-:1022B0000000000000294887000000000000001016
-:1022C00000221E230000000000000000003120C496
-:1022D000000000000000FFFF00282228000000008E
-:1022E0000000000000894907000000000000001005
-:1022F00000221E2300000000000000000029488783
-:10230000000000000000001000221E21000000005C
-:102310000000000000294847000000000000000005
-:1023200000311CA3000000000000001000221E2746
-:1023300000000000000000000029488700000000A5
-:102340000000000000311CA100000000000000108F
-:1023500000221E270000000000000000002948475E
-:10236000000000000000001000221E2300000000FA
-:1023700000000000003120C4000000000000FFFF4A
-:102380000028222800000000000000000029490762
-:10239000000000000000001000221E2100000000CC
-:1023A00000000000003120C2000000000000FFFF1C
-:1023B00000282228000000000000000000894907D2
-:1023C000000000000000001000221E23000000009A
-:1023D0000000000000294887000000000000000104
-:1023E00000220A210000000000000000003308A2C3
-:1023F000000000000000001000221E22000000006B
-:102400000000001000212222000000000000000057
-:1024100000294907000000000000000000311CA353
-:10242000000000000000001000221E270000000035
-:1024300000000000002948870000000000000001A3
-:1024400000220A210000000000000000003008A265
-:10245000000000000000001000221E22000000000A
-:1024600000000010002122220000000000000000F7
-:1024700000294907000000000000001000221E2370
-:102480000000000000000000003120C40000000037
-:102490000000FFFF002822280000000000000000CC
-:1024A000002949070000000000000000003808C5AE
-:1024B00000000000000000000030084100000000A3
-:1024C0000000000100220A220000000000000000BD
-:1024D000003308A2000000000000001000221E22AD
-:1024E0000000000000000010002122220000000077
-:1024F00000000000008949070000000000000017EC
-:102500000020222D000000000000000014C0000088
-:1025100000000318FFFFFFEF002806210000000065
-:10252000000000140020222D000000000000F8E050
-:1025300000204411000000000000000000294901B3
-:1025400000000000000000000089490100000000B8
-:102550000000000000204811000000000000000002
-:102560000020481100000000060A02000080481107
-:102570000000000000000000C0200000000000007B
-:1025800097000000C020441100000000000000007F
-:10259000C0204811000000008A0000000020441103
-:1025A00000000000000000000020481100000000B2
-:1025B0000000225C00204411000000000000000028
-:1025C000C0204800000000000000A1FC00204411D1
-:1025D0000000000000000000C020480000000000D3
-:1025E00000000000C0200400000000000000000007
-:1025F00000A0000A00000000970000000020441125
-:102600000000000000000000002048110000000051
-:102610008A000000002044110000000000000000BB
-:1026200000204811000000000000225C002044113E
-:102630000000000000000000C02048000000000072
-:102640000000A1FC00204411000000000000000078
-:10265000C02048000000000000000000C02004006E
-:10266000000000000000000000A0000A00000000C0
-:10267000970000000020441100000000000000004E
-:1026800000204811000000008A00000000204411D2
-:1026900000000000000000000020481100000000C1
-:1026A0000000225C00204411000000000000000037
-:1026B000C0204800000000000000A1FC00204411E0
-:1026C0000000000000000000C020480000000000E2
-:1026D0000001A1FD002044110000000000000000E6
-:1026E000D90048000000000000000000C0200400E5
-:1026F000000000000000000000A0000A0000000030
-:1027000000002257002044110000000000000003D8
-:10271000C0484A20000000000000225D0020441153
-:102720000000000000000000C04048000000000061
-:1027300000000000006000000000064500000000EE
-:10274000C0200800000000000000225C00204411AE
-:10275000000000000000000300384A2200000000D2
-:102760000000A1FC00204411000000000000000057
-:10277000C0204800000000000001A1FD002044111D
-:102780000000000000000000002F022200000000F6
-:10279000000000000CE0000000000000000000004D
-:1027A00040204800000000000000000140304A20A6
-:1027B0000000000000000002C0304A2000000000BD
-:1027C0000000000100530A220000034B0000003FFC
-:1027D000C0280A20000000008100000000204411F1
-:1027E000000000000000000100204811000000006F
-:1027F000000021F800204411000000000000001833
-:102800000020481100000000000421F9006044117C
-:102810000000068D000000110021023000000000C1
-:102820000000000014E00000000003540000001449
-:10283000002F022200000000000000000CC0000079
-:10284000000003640000201000204411000000007C
-:102850000000800000204811000000000001A2A438
-:102860000020441100000000000000000060480249
-:102870000000036E00002100002044110000000051
-:1028800000000000C0204800000000000000000020
-:10289000C02048000000000000000000C0204800E8
-:1028A0000000000000000000C040480000000000E0
-:1028B00000000004002F02220000000000000000C1
-:1028C0000CC000000000036A00002010002044112A
-:1028D00000000000000080000020481100000000FF
-:1028E0000001A2A40020441100000000000000002C
-:1028F000004048020000035F00000028002F022271
-:1029000000000000000000000CC00000000005C036
-:102910000001A2A4002044110000000000000000FB
-:10292000004048020000035F0000002C0020362613
-:102930000000000000000049002018110000000005
-:102940000000003F002048110000000000000001CE
-:1029500000331A260000000000000000002F0226AD
-:1029600000000000000000000CC000000000037028
-:102970000000002C00801A2D000000000000003F25
-:10298000C0280A200000000000000015002F0222CD
-:1029900000000000000000000CE0000000000386C2
-:1029A00000000006002F02220000000000000000CE
-:1029B0000CE00000000003B100000016002F02220E
-:1029C00000000000000000000CE00000000003B563
-:1029D00000000020002F0222000000000000000084
-:1029E0000CE000000000039C0000000F002F0222FA
-:1029F00000000000000000000CE00000000003A840
-:102A000000000010002F0222000000000000000063
-:102A10000CE00000000003A80000001E002F0222AE
-:102A200000000000000000000CE000000000039027
-:102A30000000A2A4002044110000000000000000DB
-:102A400000404802000000000800000000290A229F
-:102A5000000000000000000340210E2000000000E4
-:102A60000000000CC021122000000000000800003F
-:102A7000002812240000000000000014C0221620CC
-:102A80000000000000000000002914A40000000065
-:102A90000000A2A40020441100000000000000007B
-:102AA000002948A2000000000000A1FE00204411FF
-:102AB000000000000000000000404803000000008B
-:102AC000810000000020441100000000000000010F
-:102AD0000020481100000000000021F800204411EF
-:102AE0000000000000000016002048110000000057
-:102AF000000421F9006044110000068D000000155B
-:102B000000210230000000000000000014E000007E
-:102B1000000003920000210E00204411000000007C
-:102B200000000000C020480000000000000000007D
-:102B3000C0204800000000000000A2A400204411B2
-:102B400000000000000000000040480200000000FB
-:102B5000810000000020441100000000000000017E
-:102B60000020481100000000000021F8002044115E
-:102B700000000000000000170020481100000000C5
-:102B8000000421F9006044110000068D00000003DC
-:102B900000210230000000000000000014E00000EE
-:102BA0000000039E000021080020441100000000E6
-:102BB00000000000C02048000000000000000000ED
-:102BC000C0204800000000000000A2A40020441122
-:102BD000000000000000000000404802000000006B
-:102BE0000000A2A40020441100000000000000002A
-:102BF0000020480200000000800000000020441176
-:102C0000000000000000000000204811000000004B
-:102C100081000000002044110000000000000010AE
-:102C200000204811000000000000000000200010FB
-:102C3000000000000000000014C00000000003AE0F
-:102C40000000000000400000000000000000201014
-:102C50000020441100000000000080000020481106
-:102C6000000000000001A2A40020441100000000A8
-:102C70000000000600404811000000000000201085
-:102C800000204411000000000000800000204811D6
-:102C9000000000000001A2A4002044110000000078
-:102CA00000000016006048110000036E00000000E4
-:102CB000004000000000000000000000C0200800EC
-:102CC0000000000000000000C0200C000000000018
-:102CD0000000001D00210223000000000000000091
-:102CE00014E00000000003CE810000000020441129
-:102CF000000000000000000100204811000000005A
-:102D0000000021F80020441100000000000000181D
-:102D10000020481100000000000421F90060441167
-:102D20000000068D000000110021023000000000AC
-:102D30000000000014E00000000003C000002100BB
-:102D400000204411000000000000000000204802A4
-:102D50000000000000000000002048030000000008
-:102D6000BABECAFE0020481100000000CAFEBABE6A
-:102D70000020481100000000000020100020441135
-:102D8000000000000000800000204811000000004A
-:102D90000000A2A400204411000000000000000474
-:102DA0000040481100000000000021700020441184
-:102DB00000000000000000000020480200000000A9
-:102DC0000000000000204803000000008100000017
-:102DD00000204411000000000000000A00204811FB
-:102DE00000000000000000000020001000000000B3
-:102DF0000000000014C00000000003D38C0000009D
-:102E00000020441100000000CAFEBABE0040481174
-:102E100000000000810000000020441100000000BC
-:102E200000000001002048110000000000003FFFEA
-:102E300040280A20000000008000000040280E20EA
-:102E40000000000040000000C02812200000000028
-:102E500000040000006946220000068D000000000A
-:102E6000002014100000000000000000002F0223CA
-:102E700000000000000000000CC00000000003E1A2
-:102E800000000000C0401800000003E400003FFF05
-:102E9000C0281A2000000000000400000069462637
-:102EA0000000068D00000000002018100000000047
-:102EB00000000000002F02240000000000000000BD
-:102EC0000CC00000000003E700000000C0401C0030
-:102ED000000003EA00003FFFC0281E2000000000A1
-:102EE00000040000006946270000068D0000000075
-:102EF00000201C1000000000000000000020440220
-:102F00000000000000000000002820C500000000B4
-:102F100000000000004948E800000000A580000013
-:102F200000200811000000000000200000200C110B
-:102F30000000000083000000006044110000041243
-:102F4000000000000020440200000000000000001B
-:102F5000C0204800000000000000000040204800A1
-:102F6000000000000000001FC0210220000000003F
-:102F70000000000014C00000000003F70000201053
-:102F800000204411000000000000800000204811D3
-:102F9000000000000000FFFFC0481220000003FFF7
-:102FA000A780000000200811000000000000A00021
-:102FB00000200C110000000083000000006044119C
-:102FC0000000041200000000002044020000000085
-:102FD00000000000C02048000000000000000000C9
-:102FE000C0204800000000000000FFFFC0281220A1
-:102FF00000000000830000000020441100000000D9
-:103000000000000000304883000000008400000041
-:10301000002044110000000000000000C020480013
-:1030200000000000000000001D0000000000000083
-:103030008300000000604411000004120000000042
-:10304000C040040000000001A98000000020081119
-:10305000000000000000C00000400C11000003FA56
-:10306000AB80000000200811000000000000F8E024
-:1030700000400C11000003FAAD8000000020081190
-:10308000000000000000F88000400C11000003FA6E
-:10309000B380000000200811000000000000F3FCD5
-:1030A00000400C11000003FAAF800000002008115E
-:1030B000000000000000E00000400C11000003FAD6
-:1030C000B180000000200811000000000000F000A6
-:1030D00000400C11000003FA83000000002044119E
-:1030E00000000000000021480020481100000000FE
-:1030F00084000000002044110000000000000000D7
-:10310000C020480000000000000000001D0000007A
-:10311000000000000000000000800000000000002F
-:1031200001182000C0304620000000000000000010
-:10313000D90048000000000000000000C02004008A
-:10314000000000000000000000A0000A00000000D5
-:103150000218A000C030462000000000000000005F
-:10316000D90048000000000000000000C02004005A
-:10317000000000000000000000A0000A00000000A5
-:103180000318C000C030462000000000000000000E
-:10319000D90048000000000000000000C02004002A
-:1031A000000000000000000000A0000A0000000075
-:1031B0000418F8E0C03046200000000000000000C5
-:1031C000D90048000000000000000000C0200400FA
-:1031D000000000000000000000A0000A0000000045
-:1031E0000518F880C03046200000000000000000F4
-:1031F000D90048000000000000000000C0200400CA
-:10320000000000000000000000A0000A0000000014
-:103210000618E000C030462000000000000000005A
-:10322000D90048000000000000000000C020040099
-:10323000000000000000000000A0000A00000000E4
-:103240000718F000C0304620000000000000000019
-:10325000D90048000000000000000000C020040069
-:10326000000000000000000000A0000A00000000B4
-:103270000818F3FCC03046200000000000000000E9
-:10328000D90048000000000000000000C020040039
-:10329000000000000000000000A0000A0000000084
-:1032A0000000003000200A2D000000000000000097
-:1032B000C0290C4000000000000000300020362330
-:1032C0000000000000000000C0200400000000001A
-:1032D0000000000000A0000A0000000086000000BE
-:1032E00000204411000000000000000000404801E0
-:1032F0000000000085000000C02044110000000014
-:103300000000000000404801000000000000217C97
-:10331000002044110000000000000018402102209D
-:10332000000000000000000014C000000000044580
-:1033300000800000C0494A20000004460000000050
-:10334000C02048000000000000000000C02048002D
-:103350000000000000000000C02048000000000045
-:103360008100000000204411000000000000000166
-:10337000002048110000000000000000C0200800EC
-:103380000000000000000000170000000000000026
-:103390000004217F006044110000068D0000001F22
-:1033A00000210230000000000000000014C00000F6
-:1033B000000000000000000000404C020000044B30
-:1033C00000000000C0200C00000000000000000011
-:1033D000C02010000000000000000000C020140009
-:1033E0000000000000000000C020180000000000E5
-:1033F00000000000C0201C000000000000007F0052
-:1034000000280A210000000000004500002F0222D1
-:1034100000000000000000000CE000000000045963
-:1034200000000000C020200000000000000000009C
-:1034300017000000000000000000001000280A2310
-:103440000000000000000010002F02220000000019
-:10345000000000000CE0000000000461810000009A
-:10346000002044110000000000000001002048116D
-:103470000000000000040000006946240000068DE2
-:103480000000000000400000000004668100000011
-:10349000002044110000000000000000002048113E
-:1034A000000000000000216D002044110000000019
-:1034B00000000000002048040000000000000000A0
-:1034C000006048050000069200000000002824F07B
-:1034D000000000000000000700280A230000000090
-:1034E00000000001002F0222000000000000000088
-:1034F0000AE000000000046D00000000002F00C979
-:10350000000000000000000004E00000000004864D
-:1035100000000000004000000000049300000002D2
-:10352000002F022200000000000000000AE000005E
-:103530000000047200000000002F00C9000000001D
-:103540000000000002E0000000000486000000000F
-:10355000004000000000049300000003002F02223E
-:1035600000000000000000000AE0000000000477F6
-:1035700000000000002F00C9000000000000000053
-:103580000CE0000000000486000000000040000085
-:103590000000049300000004002F0222000000003D
-:1035A000000000000AE000000000047C00000000B1
-:1035B000002F00C900000000000000000AE0000029
-:1035C000000004860000000000400000000004939A
-:1035D00000000005002F0222000000000000000093
-:1035E0000AE000000000048100000000002F00C974
-:1035F000000000000000000006E00000000004865B
-:1036000000000000004000000000049300000006DD
-:10361000002F022200000000000000000AE000006D
-:103620000000048600000000002F00C90000000018
-:103630000000000008E00000000004860000000018
-:10364000004000000000049300007F0000280A21D1
-:103650000000000000004500002F022200000000D2
-:10366000000000000AE00000000000000000000868
-:1036700000210A23000000000000000014C0000028
-:1036800000000490000021690020441100000000A7
-:1036900000000000C0204800000000000000000002
-:1036A000C02048000000000000000000C0204800CA
-:1036B00000000000CAFEBABE004048110000000031
-:1036C00000000000C02044000000000000000000D6
-:1036D000C02000000000000000000000C0404800C2
-:1036E0000000000000007F0000280A210000000008
-:1036F00000004500002F0222000000000000000032
-:103700000AE000000000049900000000C020000052
-:103710000000000000000000C020000000000000C9
-:1037200000000000C0400000000000000000000099
-:1037300000404C080000045900000000C0200800B0
-:10374000000000000000001040210E2000000000DA
-:1037500000000011402112200000000000000012B3
-:1037600040211620000000000000216900204411C3
-:1037700000000000000000000020480200000000DF
-:1037800000000000002102250000000000000000F1
-:1037900014E00000000004A300040000C0494A2017
-:1037A000000004A4FFFBFFFFC0284A200000000027
-:1037B00000000000002102230000000000000000C3
-:1037C00014E00000000004B000000000C020480029
-:1037D0000000000000000000C020480000000000C1
-:1037E0000000000000210224000000000000000092
-:1037F00014C00000000000008100000000204411FF
-:10380000000000000000000C002048110000000033
-:103810000000000000200010000000000000000078
-:1038200014C00000000004ACA000000000204411FF
-:1038300000000000CAFEBABE0040481100000000AF
-:10384000810000000020441100000000000000047E
-:1038500000204811000000000000216B00204411EE
-:103860000000000000000000C02048100000000020
-:10387000810000000020441100000000000000054D
-:1038800000204811000000000000216C00204411BD
-:103890000000000000000000C020481000000000F0
-:1038A00000000000002F02240000000000000000C3
-:1038B0000CE00000000000000000000000400000DC
-:1038C000000004AA00000000C0210A20000000003F
-:1038D0000000000014C00000000004C381000000CC
-:1038E00000204411000000000000000000204811EA
-:1038F000000000000000216D0020441100000000C5
-:1039000000000000C020480000000000000000008F
-:10391000C060480000000692000000000040000067
-:10392000000004C7810000000020441100000000D6
-:103930000000000100204811000000000004000009
-:10394000C02946200000000000000000C060000008
-:103950000000068D0000000100210222000000008E
-:103960000000000014C00000000004CE0000216927
-:10397000002044110000000000000000C0204800AA
-:103980000000000000000000C0204800000000000F
-:10399000000000000020481000000000CAFEBABE6F
-:1039A000004048110000000000000000C02044005A
-:1039B0000000000000000000C040481000000000AF
-:1039C0008100000000204411000000000000000100
-:1039D0000020481100000000000021F800204411E0
-:1039E000000000000000000E002048110000000050
-:1039F000000421F9006044110000068D0000000061
-:103A000000210230000000000000000014C000008F
-:103A1000000004D0000021800020441100000000BC
-:103A200000000000C020480000000000000000006E
-:103A3000C02000000000000000000000C02048007E
-:103A40000000000000000000C02000000000000096
-:103A500000000000C040480000000000000000031B
-:103A600000333E2F00000000000000010021022171
-:103A7000000000000000000014E00000000005004D
-:103A80000000002C00200A2D0000000000040000AF
-:103A900018E00C11000004EF0000000100333E2F7D
-:103AA0000000000000002169002044110000000017
-:103AB000000000000020480200000000000000009C
-:103AC00000204803000000000000000800300A2227
-:103AD0000000000000000000C020480000000000BE
-:103AE00000000000C0204800000000000000216924
-:103AF00000204411000000000000000000204802E7
-:103B0000000000000000000000204803000000004A
-:103B10000000000800300A22000000000000000041
-:103B2000C02048000000000000000000D8C048008D
-:103B3000000004E30000216900204411000000009F
-:103B4000000000000020480200000000000000000B
-:103B500000204803000000000000000800300A2296
-:103B60000000000000000000C0204800000000002D
-:103B700000000000C0204800000000000000002DF0
-:103B80000020122D000000000000000000290C831E
-:103B90000000000000002169002044110000000026
-:103BA00000000000002048020000000000000000AB
-:103BB00000204803000000000000000800300A2236
-:103BC0000000000000000000C020480000000000CD
-:103BD00000000000C02048000000000000000011AC
-:103BE00000210224000000000000000014C00000BA
-:103BF000000000000000000000400000000004AAD7
-:103C00000000002CC0203620000000000000002D25
-:103C1000C0403620000000000000000F00210221FB
-:103C2000000000000000000014C0000000000505B6
-:103C300000000000006000000000000B0000000019
-:103C4000D90000000000000000000000C040040097
-:103C500000000001B5000000002044110000000039
-:103C6000000020000020481100000000B600000005
-:103C700000204411000000000000A00000204811B6
-:103C800000000000B7000000002044110000000008
-:103C90000000C0000020481100000000B800000033
-:103CA00000204411000000000000F8E0002048114E
-:103CB00000000000B90000000020441100000000D6
-:103CC0000000F8800020481100000000BA00000049
-:103CD00000204411000000000000E0000020481116
-:103CE00000000000BB0000000020441100000000A4
-:103CF0000000F0000020481100000000BC0000009F
-:103D000000204411000000000000F3FC00204811D6
-:103D100000000000810000000020441100000000AD
-:103D2000000000020020481100000000000000FF19
-:103D300000280E300000000000000000002F0223C9
-:103D400000000000000000000CC000000000051989
-:103D500000000000C020080000000000000000007B
-:103D600014C000000000052E0000000000200C110F
-:103D7000000000000000001C0020362300000000AE
-:103D80000000002B00203623000000000000002966
-:103D90000020362300000000000000280020362309
-:103DA0000000000000000017002036230000000083
-:103DB000000000250020362300000000000000263F
-:103DC00000203623000000000000001500203623EC
-:103DD0000000000000000016002036230000000054
-:103DE000FFFFE00000200C11000000000000002197
-:103DF00000203623000000000000002200203623AF
-:103E00000000000000001FFF00200C110000000057
-:103E100000000023002036230000000000000024E2
-:103E20000020362300000000F1FFFFFF00283A2E9B
-:103E3000000000000000001AC0220E200000000058
-:103E4000000000000029386E000000008100000022
-:103E5000002044110000000000000006002048116E
-:103E6000000000000000002A402036200000000072
-:103E70008700000000204411000000000000000046
-:103E8000C0204800000000000000A1F40020441100
-:103E900000000000000000000020481000000000AA
-:103EA0000000000000200C110000000000000030A5
-:103EB00000203623000000009D0000000020441177
-:103EC000000000000000001F40214A200000000008
-:103ED00096000000002044110000000000000000D7
-:103EE000C02048000000000000000000C0200C00BE
-:103EF0000000000000000000C020100000000000D2
-:103F00000000001F00211624000000000000000037
-:103F100014C00000000000000000001D0020362337
-:103F2000000000000000000300281E230000000025
-:103F3000000000080022222300000000FFFFF00024
-:103F4000002822280000000000000000002920E8CE
-:103F5000000000000000001F0020362800000000C4
-:103F60000000001800211E230000000000000020B7
-:103F70000020362700000000000000020022162466
-:103F80000000000000000000003014A80000000045
-:103F90000000001E00203625000000000000000385
-:103FA00000211A24000000001000000000281A263A
-:103FB00000000000EFFFFFFF00283A2E0000000085
-:103FC00000000000004938CE0000067B0000000120
-:103FD00040280A20000000000000000640280E20B3
-:103FE0000000000000000300C028122000000000B4
-:103FF0000000000800211224000000000000000062
-:10400000C02016200000000000000000C0201A2080
-:10401000000000000000000000210222000000005B
-:104020000000000014C000000000056681000000D0
-:104030000020441100000000000000010020481191
-:10404000000000000000225800300A240000000098
-:1040500000040000006946220000068D000021696E
-:10406000002044110000000000000000002048056E
-:10407000000000000002000000294A2600000000A5
-:10408000000000000020481000000000CAFEBABE78
-:10409000002048110000000000000002002F022351
-:1040A00000000000000000000CC000000000056ED1
-:1040B00000000000C0201C100000000000000000F4
-:1040C000C04000000000057C00000002002F022319
-:1040D00000000000000000000CC000000000056EA1
-:1040E00081000000002044110000000000000001D9
-:1040F00000204811000000000000225800300A246F
-:104100000000000000040000006946220000068D47
-:1041100000000000C0201C10000000000000000093
-:10412000C04000000000057C00000000002F0223BA
-:1041300000000000000000000CC00000000005723C
-:1041400000000000C0201C00000000000000000073
-:10415000C04000000000057C00000004002F022386
-:1041600000000000000000000CC000000000057A04
-:104170008100000000204411000000000000000049
-:1041800000204811000000000000216D00204411B3
-:104190000000000000000000C020480000000000F7
-:1041A00000000000C060480000000692000000000F
-:1041B00000401C100000057C00000000C020000032
-:1041C0000000000000000000C040000000000000EF
-:1041D000000000000EE000000000057E000000006E
-:1041E00000600000000005C900000000002F02244C
-:1041F00000000000000000000CC000000000058F5F
-:104200000000A2B7002044110000000000000000E0
-:104210000020480700000000810000000020441139
-:104220000000000000000001002048110000000014
-:104230000004A2B6006044110000068D0000001AC0
-:10424000002122300000000000000006002226307D
-:104250000000000000042004006044110000068DEE
-:104260000000A2C400204411000000000000000073
-:10427000003048E9000000000000000000E00000FD
-:104280000000058D0000A2D10020441100000000B4
-:104290000000000000404808000000000000A2D11B
-:1042A00000204411000000000000000100504A28D6
-:1042B0000000000000000001002F022400000000A8
-:1042C000000000000CC00000000005A00000A2BB20
-:1042D00000204411000000000000000000204807FA
-:1042E00000000000810000000020441100000000D8
-:1042F0000000000100204811000000000004A2BAE4
-:10430000006044110000068D0000001A00212230D8
-:10431000000000000000000600222630000000001F
-:1043200000042004006044110000068D0000A2C5B6
-:10433000002044110000000000000000003048E9A7
-:10434000000000000000000000E000000000059EEA
-:104350000000A2D200204411000000000000000074
-:1043600000404808000000000000A2D200204411D4
-:10437000000000000000000100504A28000000007A
-:1043800000000002002F02240000000000000000D6
-:104390000CC00000000005B10000A2BF00204411C5
-:1043A000000000000000000000204807000000009E
-:1043B0008100000000204411000000000000000106
-:1043C00000204811000000000004A2BE006044115B
-:1043D0000000068D0000001A0021223000000000BD
-:1043E0000000000600222630000000000004200427
-:1043F000006044110000068D0000A2C60020441198
-:104400000000000000000000003048E9000000004B
-:104410000000000000E00000000005AF0000A2D393
-:104420000020441100000000000000000040480887
-:10443000000000000000A2D3002044110000000092
-:104440000000000100504A28000000000000A2C344
-:104450000020441100000000000000000020480778
-:104460000000000081000000002044110000000056
-:104470000000000100204811000000000004A2C25A
-:10448000006044110000068D0000001A0021223057
-:10449000000000000000000600222630000000009E
-:1044A00000042004006044110000068D0000A2C733
-:1044B000002044110000000000000000003048E926
-:1044C000000000000000000000E00000000005BE49
-:1044D0000000A2D4002044110000000000000000F1
-:1044E00000404808000000000000A2D40020441151
-:1044F000000000000000000100504A2800000000F9
-:1045000085000000002044110000000000000000B1
-:1045100000204801000000000000304A0020441143
-:104520000000000001000000002048110000000011
-:104530000000000000400000000005C4A4000000CE
-:10454000C02044110000000000000000C0404800EE
-:104550000000000000000000C0600000000005C96D
-:1045600000000000C0400400000000010000002C1A
-:1045700000203621000000008100000000204411CE
-:1045800000000000000000060020481100000000AC
-:1045900000000000002F02300000000000000000BA
-:1045A0000CC00000000005D0000000000020041135
-:1045B000000000000000003000403621000005E34C
-:1045C000000000300020062D0000000000007E00EA
-:1045D000002806210000000000000000002F02213A
-:1045E00000000000000000000CE00000000005E3F7
-:1045F00081000000002044110000000000000001C4
-:1046000000204811000000000004A0920060441146
-:104610000000068D00000031002036300000000050
-:104620000004A093006044110000068D00000032D9
-:1046300000203630000000000004A2B600604411E3
-:104640000000068D0000003300203630000000001E
-:104650000004A2BA006044110000068D000000347E
-:1046600000203630000000000004A2BE00604411AB
-:104670000000068D000000350020363000000000EC
-:104680000004A2C2006044110000068D0000003644
-:1046900000203630000000000004200400604411B7
-:1046A0000000068D0001A2A40020441100000000BB
-:1046B0000000003F00204811000000000000003F03
-:1046C00000204811000000000000003F00204811B9
-:1046D000000000000000003F002048110000000022
-:1046E0000000000500204811000000000000A1F4B7
-:1046F00000204411000000000000000000204811CC
-:1047000000000000880000000020441100000000AC
-:10471000000000010020481100000000810000009E
-:104720000020441100000000000000060020481195
-:104730000000000000000001002F02300000000017
-:10474000000000000CE000000000062C000000301B
-:104750000020062D0000000000000000002F0221B4
-:1047600000000000000000000CE000000000062C2B
-:104770008100000000204411000000000000000142
-:10478000002048110000000000007E0000280621E3
-:104790000000000000000000002F022100000000C7
-:1047A000000000000CE00000000006050000A092E0
-:1047B00000204411000000000000003100204A2DBC
-:1047C000000000000000A093002044110000000041
-:1047D0000000003200204A2D000000000000A2B6B8
-:1047E00000204411000000000000003300204A2D8A
-:1047F000000000000000A2BA0020441100000000E8
-:104800000000003400204A2D000000000000A2BE7D
-:1048100000204411000000000000003500204A2D57
-:10482000000000000000A2C20020441100000000AF
-:104830000000003600204A2D00000000000000307B
-:104840000020062D00000000000001FF00280621C6
-:104850000000000000000000002F02210000000006
-:10486000000000000CE000000000062B000000002B
-:1048700000210221000000000000000014C0000020
-:104880000000060E0004A003006044110000068D25
-:104890000000A00300204411000000000000000000
-:1048A0000020481000000000000000010021062147
-:1048B000000000000000000014C00000000006130B
-:1048C0000004A010006044110000068D0000A0103C
-:1048D00000204411000000000000000000204810EB
-:1048E000000000000000000100210621000000007F
-:1048F00000000000002F0221000000000000000066
-:104900000CE000000000062B0004A0110060441120
-:104910000000068D0000A0110020441100000000DE
-:104920000000000000204810000000000004A01259
-:10493000006044110000068D0000A0120020441108
-:1049400000000000000000000020481000000000EF
-:104950000004A013006044110000068D0000A013A5
-:10496000002044110000000000000000002048105A
-:10497000000000000004A014006044110000068D37
-:104980000000A014002044110000000000000000FE
-:1049900000204810000000000004A0150060441131
-:1049A0000000068D0000A01500204411000000004A
-:1049B0000000000000204810000000000004A016C5
-:1049C000006044110000068D0000A0160020441174
-:1049D000000000000000000000204810000000005F
-:1049E0000004A017006044110000068D0000A0170D
-:1049F00000204411000000000000000000204810CA
-:104A00000000000000042004006044110000068D36
-:104A10000000002C0080062D00000000FF000000B8
-:104A20000020441100000000000000000020481198
-:104A300000000000000000010020481100000000FC
-:104A4000000000020080481100000000000000008B
-:104A50000EE000000000063D000000300020062DA2
-:104A600000000000000000020028062100000000F5
-:104A700000000000002F02210000000000000000E4
-:104A80000CE000000000063B810000000020441103
-:104A9000000000000000000100204811000000009C
-:104AA00000042004006044110000068D0000100086
-:104AB00000200811000000000000002B002036221A
-:104AC000000000000000000000600000000006413F
-:104AD0000000000000600000000005C99800000010
-:104AE0000020441100000000000000000080481178
-:104AF0000000000000000000C0600000000006414F
-:104B000000000000C0400400000000010000A2A45A
-:104B10000020441100000000000000220020481185
-:104B20000000000089000000002044110000000087
-:104B300000000001004048110000062D9700000011
-:104B40000020441100000000000000000020481177
-:104B5000000000008A000000002044110000000056
-:104B600000000000004048110000062D0000000079
-:104B7000006000000000065C0000201000204411CE
-:104B8000000000000000800000204811000000002C
-:104B90000001A2A4C0204411000000000000001683
-:104BA000006048110000036E000020100020441136
-:104BB000000000000001000000204811000000007B
-:104BC00081000000002044110000000000000001EE
-:104BD00000204811000000000000217C002044114A
-:104BE00000000000098000000020481100000000C3
-:104BF000FFFFFFFF00204811000000000000000040
-:104C00000020481100000000000000001700000014
-:104C1000000000000004217F006044110000068DA8
-:104C20000000001F00210230000000000000000012
-:104C300014C00000000000000000000400404C11FF
-:104C400000000656000000000040000000000000C8
-:104C50000000001700201E2D0000000000000004CE
-:104C600000291E27000000000000001700803627E2
-:104C7000000000000000001700201E2D00000000B2
-:104C8000FFFFFFFB00281E270000000000000017A8
-:104C900000803627000000000000001700201E2DB5
-:104CA000000000000000000800291E27000000008E
-:104CB00000000017008036270000000000000017E9
-:104CC00000201E2D00000000FFFFFFF700281E2718
-:104CD00000000000000000170080362700000000E0
-:104CE000000020100020441100000000000080009F
-:104CF00000204811000000000001A2A4002044117F
-:104D00000000000000000016006048110000036E63
-:104D100000002010002044110000000000010000ED
-:104D200000204811000000000000217C00204411F8
-:104D30000000000001800000002048110000000079
-:104D4000FFFFFFFF002048110000000000000000EE
-:104D500000204811000000000000000017000000C3
-:104D6000000000008100000000204411000000004D
-:104D70000000000100204811000000000004217F15
-:104D8000006044110000068D0000001F0021023069
-:104D9000000000000000000014C000000000068CAD
-:104DA0000000001000404C110000067200000000DE
-:104DB000C0200400000000000000000038C0000017
-:104DC000000000000000001D00200A2D000000006F
-:104DD0000000001E00200E2D000000000000001F3B
-:104DE0000020122D00000000000000200020162DE1
-:104DF00000000000000021690020441100000000B4
-:104E00000000000000204804000000000000000036
-:104E100000204805000000000000000000204801BC
-:104E200000000000CAFEBABE0020481100000000C9
-:104E30000000000400301224000000000000000008
-:104E4000002F006400000000000000000CC0000003
-:104E50000000068B0000000300281A22000000005A
-:104E6000000000080022122200000000FFFFF000F6
-:104E7000002812240000000000000000002910C4D7
-:104E8000000000000000001F004036240000000069
-:104E90000000000000800000000000000000000092
-:104EA0001AC000000000068D9F0000000020441181
-:104EB00000000000CAFEBABE002048110000000039
-:104EC000000000001AE00000000006900000000052
-:104ED0000080000000000000000000001AC0000078
-:104EE000000006929E000000002044110000000017
-:104EF000CAFEBABE002048110000000000000000F9
-:104F00001AE000000000069500000000008000008C
-:104F10000000000000000000006000000000000B26
-:104F200000001000006004110000031500000000E4
-:104F300000200411000000000000000000600811C3
-:104F4000000001B20000225C0020441100000000BB
-:104F5000000000030020481100000000000022565D
-:104F600000204411000000000000001B0020481138
-:104F7000000000000000A1FC00204411000000001F
-:104F80000000000100204811000000000001A1FD08
-:104F9000C0204411000000000000002100201E2D50
-:104FA000000000000000001000221E27000000008A
-:104FB000000000240020222D000000000000FFFF60
-:104FC00000282228000000000000000000294907F6
-:104FD0000000000000000000002048110000000058
-:104FE000000000220020222D000000000000FFFF32
-:104FF00000282228000000000000000000294907C6
-:105000000000000000000000002048110000000027
-:105010000000002300201E2D0000000000000010F2
-:1050200000221E27000000000000000000294907A0
-:1050300000000000000000000040481100000000D7
-:105040000000000000000000000000000000000060
-:105050000000000000000000000000000000000050
-:105060000000000000000000000000000000000040
-:105070000000000000000000000000000000000030
-:105080000000000000000000000000000000000020
-:105090000000000000000000000000000000000010
-:1050A0000000000000000000000000000000000000
-:1050B00000000000000000000000000000000000F0
-:1050C00000000000000000000000000000000000E0
-:1050D00000000000000000000000000000000000D0
-:1050E00000000000000000000000000000000000C0
-:1050F00000000000000000000000000000000000B0
-:10510000000000000000000000000000000000009F
-:10511000000000000000000000000000000000008F
-:10512000000000000000000000000000000000007F
-:10513000000000000000000000000000000000006F
-:10514000000000000000000000000000000000005F
-:10515000000000000000000000000000000000004F
-:10516000000000000000000000000000000000003F
-:10517000000000000000000000000000000000002F
-:10518000000000000000000000000000000000001F
-:10519000000000000000000000000000000000000F
-:1051A00000000000000000000000000000000000FF
-:1051B00000000000000000000000000000000000EF
-:1051C00000000000000000000000000000000000DF
-:1051D00000000000000000000000000000000000CF
-:1051E00000000000000000000000000000000000BF
-:1051F00000000000000000000000000000000000AF
-:10520000000000000000000000000000000000009E
-:10521000000000000000000000000000000000008E
-:10522000000000000000000000000000000000007E
-:10523000000000000000000000000000000000006E
-:10524000000000000000000000000000000000005E
-:10525000000000000000000000000000000000004E
-:10526000000000000000000000000000000000003E
-:10527000000000000000000000000000000000002E
-:10528000000000000000000000000000000000001E
-:10529000000000000000000000000000000000000E
-:1052A00000000000000000000000000000000000FE
-:1052B0000142050205C002500000000001C3016860
-:1052C000043F05C000000000022502090250015100
-:1052D000000000000223024502A00241000000007D
-:1052E00003D705C005C005C0000000000649064AF6
-:1052F000031F05C00000000005C005C503200340D2
-:1053000000000000032A0282034203340000000070
-:1053100005C005C005C005C00000000005C005515E
-:1053200005C005C00000000003BA05C004BB03446B
-:1053300000000000049A0450043D05C00000000075
-:1053400004D005C0044104DD00000000045005073E
-:10535000035103750000000005C005C005C005C06D
-:105360000000000005C005C005C005C00000000029
-:1053700005C005C0063F05C70000000005C005C008
-:10538000000705C00000000005C005C005C005C03D
-:105390000000000005C005C005C005C000000000F9
-:1053A00003F803ED0408040600000000040E040ADC
-:1053B000040C041000000000041C04180424042041
-:1053C00000000000042C0428043404300000000015
-:1053D00005C005C0043805C00000000005C005C0B8
-:1053E00005C005C00000000005C005C005C005C01F
-:1053F0000000000000020679069700060000000089
-:00000001FF
diff --git a/firmware/radeon/RV610_pfp.bin.ihex b/firmware/radeon/RV610_pfp.bin.ihex
deleted file mode 100644
index f55292c97b79..000000000000
--- a/firmware/radeon/RV610_pfp.bin.ihex
+++ /dev/null
@@ -1,145 +0,0 @@
-:1000000000CA040000A00000007E828B007C038BED
-:10001000008001B8007C038B00D4401E00EE001E5F
-:1000200000CA040000A00000007E828B00C41838C3
-:1000300000CA240000CA2800009581A800C41C3A08
-:1000400000C3C00000CA080000CA0C00007C744B4A
-:1000500000C200050099C00000C41C3A007C744C2A
-:1000600000C0FFF000042C0400309002007D250049
-:1000700000351402007D350B00255403007CD5802B
-:1000800000259C030095C00400D5001B007EDDC147
-:10009000007D9D8000D6801B00D5801B00D4401EB3
-:1000A00000D5401E00D6401E00D6801E00D4801E03
-:1000B00000D4C01E009783D300D5C01E00CA08001C
-:1000C0000080001A00CA0C0000E4011E00D4001ECB
-:1000D0000080000C00C4183800E4013E00D4001E6B
-:1000E0000080000C00C4183800D4401E00EE001E32
-:1000F00000CA040000A00000007E828B00E4011E04
-:1001000000D4001E00D4401E00EE001E00CA0400F1
-:1001100000A00000007E828B00E4013E00D4001E9F
-:1001200000D4401E00EE001E00CA040000A0000023
-:10013000007E828B00CA180000D4401E00D5801EAD
-:100140000080005300D4007500D4401E00CA08008F
-:1001500000CA0C0000CA100000D4801900D4C018D6
-:1001600000D5001700D4801E00D4C01E00D5001E8C
-:1001700000E2001E00CA040000A00000007E828B86
-:1001800000CA080000D4806000D4401E0080000037
-:1001900000D4801E00CA080000D4806100D4401E34
-:1001A0000080000000D4801E00CA080000CA0C00B5
-:1001B00000D4401E00D4801600D4C01600D4801E87
-:1001C000008001B800D4C01E00C6084300CA0C005D
-:1001D00000CA10000094800400CA140000E420F358
-:1001E00000D4201300D5606500D4E01C00D5201C8D
-:1001F00000D5601C008000000006200100C60843F6
-:1002000000CA0C0000CA1000009483F700CA140052
-:1002100000E420F30080007900D4201300C60843D6
-:1002200000CA0C0000CA1000009883EF00CA140036
-:1002300000D400640080008D0000000000C414326F
-:1002400000C6184300C4082F0095400500C40C30B8
-:1002500000D4401E0080000000EE001E009583F5D3
-:1002600000C4103100D4403300D5206500D4A01C58
-:1002700000D4E01C00D5201C00E4015E00D4001E68
-:10028000008000000006200100CA1800000A2001BA
-:1002900000D6007600C408360098800700C61045D6
-:1002A0000095011000D4001F00D46062008000009F
-:1002B00000D4206200CC383500CC1433008401BB5C
-:1002C00000D4007200D5401E0080000000EE001E29
-:1002D00000E2001A008401BB00E2001A00CC104BBF
-:1002E00000CC0447002C9401007D098B0098400548
-:1002F000007D15CB00D4001A008001B800D4006D39
-:100300000034440100CC0C480098403A00CC2C4A00
-:100310000095800400CC0449008001B800D4001A84
-:1003200000D4C01A00282801008400F000CC10037B
-:100330000098801B0004380C008400F000CC1003EF
-:100340000098801700043808008400F000CC1003E7
-:100350000098801300043804008400F000CC1003DF
-:100360000098801400CC104C009A800900CC144DE9
-:10037000009840DC00D4006D00CC184800D5001A6D
-:1003800000D5401A008000C900D5801A0096C0D55B
-:1003900000D4006D008001B800D4006E009AC00344
-:1003A00000D4006D00D4006E0080000000EC007FDF
-:1003B000009AC0CC00D4006D008001B800D4006E5B
-:1003C00000CC140300CC180300CC1C03007D910367
-:1003D000007DD583007D190C0035CC1F0035701FC2
-:1003E000007CF0CB007CD08B00880000007E8E8BE0
-:1003F0000095C00400D4006E008001B800D4001A3B
-:1004000000D4C01A00CC080300CC0C0300CC1003AD
-:1004100000CC140300CC180300CC1C0300CC240334
-:1004200000CC28030035C41F0036B01F007C704B81
-:100430000034F01F007C704B0035701F007C704B47
-:10044000007D8881007DCCC1007E5101007E9541F8
-:10045000007C9082007CD4C2007C848B009AC00314
-:10046000007C8C8B002C88010098809E00D4006D4D
-:100470000098409C00D4006E00CC084C00CC0C4D81
-:1004800000CC104800D4801A00D4C01A00800101AA
-:1004900000D5001A00CC083200D40032009482D972
-:1004A00000CA0C0000D4401E0080000000D4001ED2
-:1004B00000E4011E00D4001E00CA080000CA0C009F
-:1004C00000CA100000D4401E00CA140000D4801ED0
-:1004D00000D4C01E00D5001E00D5401E00D54034FB
-:1004E0000080000000EE001E0028040400E2001A54
-:1004F00000E2001A00D4401A00CA380000CC0803F9
-:1005000000CC0C0300CC0C0300CC0C03009882BD83
-:1005100000000000008401BB00D7A06F0080000035
-:1005200000EE001F00CA040000C2FF0000CC083427
-:1005300000C13FFF007C74CB007CC90B007D010F24
-:10054000009902B0007C738B008401BB00D7A06FC0
-:100550000080000000EE001F00CA080000281900FB
-:10056000007D898B009580140028140400CA0C00BB
-:1005700000CA100000CA1C0000CA240000E2001FCC
-:1005800000D4C01A00D5001A00D5401A00CC1803B8
-:1005900000CC2C0300CC2C0300CC2C03007DA58BBD
-:1005A000007D9C4700984297000000000080016198
-:1005B00000D4C01A00D4401E00D4801E0080000069
-:1005C00000EE001E00E4011E00D4001E00D4401EF8
-:1005D00000EE001E00CA040000A00000007E828B16
-:1005E00000E4013E00D4001E00D4401E00EE001EB8
-:1005F00000CA040000A00000007E828B00CA080030
-:1006000000248C06000CCC060098C00600CC104ECE
-:100610000099000400D4007300E4011E00D4001E01
-:1006200000D4401E00D4801E0080000000EE001E9A
-:1006300000CA080000CA0C000034D01800251001C0
-:100640000095002100C17FFF00CA100000CA1400FD
-:1006500000CA180000D4801D00D4C01D007DB18BDD
-:1006600000C1420200C2C00100D5801D0034DC0E72
-:10067000007D5D4C007F734C00D7401E00D5001EEE
-:1006800000D5401E00C1420000C2C00000099C010C
-:100690000031DC10007F5F4C007F734C00042802A7
-:1006A000007D838000D5A86F00D5806600D7401EEE
-:1006B00000EC005E00C8240200C82402008001B8DB
-:1006C00000D6007600D4401E00D4801E00D4C01E88
-:1006D0000080000000EE001E0080000000EE001F01
-:1006E00000D4001F0080000000D4001F00D4001FB1
-:1006F0000088000000D4001F00000000000000007F
-:1007000000000000000000000000000000000000E9
-:1007100000000000000000000000000000000000D9
-:1007200000000000000000000000000000000000C9
-:1007300000000000000000000000000000000000B9
-:1007400000000000000000000000000000000000A9
-:100750000000000000000000000000000000000099
-:100760000000000000000000000000000000000089
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B0000000000000000000000000000000000039
-:1007C0000000000000000000000000000000000029
-:1007D0000000000000000000000000000000000019
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:1008000000010171000201780003008F0004007FE5
-:10081000000500030006003F000700320008012C1D
-:1008200000090046000A0036001001B6001700A2B9
-:100830000022013A00230149002000B400240125D0
-:100840000027004D0028006A002A0060002B00529B
-:10085000002F0065003200870034017F003C015604
-:10086000003F00720041018C0044012E00550173CD
-:100870000056017A0060000B00610034006200380D
-:1008800000630038006400380065003800660038F6
-:10089000006700380068003A00690041006A0048BB
-:1008A000006B0048006C0048006D0048006E004876
-:1008B000006F00480000000600000006000000066F
-:1008C0000000000600000006000000060000000610
-:1008D0000000000600000006000000060000000600
-:1008E00000000006000000060000000600000006F0
-:1008F00000000006000000060000000600000006E0
-:00000001FF
diff --git a/firmware/radeon/RV620_me.bin.ihex b/firmware/radeon/RV620_me.bin.ihex
deleted file mode 100644
index ba19ed892920..000000000000
--- a/firmware/radeon/RV620_me.bin.ihex
+++ /dev/null
@@ -1,1345 +0,0 @@
-:1000000000000000C020040000000000000000000C
-:1000100000A0000A000000000000FFFF00284621A9
-:100020000000000000000000D900480000000000AF
-:1000300000000000C02004000000000000000000DC
-:1000400000A0000A000000000000000000E0000026
-:100050000000000000010000C02946200000000050
-:1000600000000000D900480000000000000000006F
-:10007000C0200400000000000000000000A0000AF2
-:10008000000000008100000000204411000000007A
-:1000900000000001002048110000000000042004BE
-:1000A000006044110000068D0000000000600000A8
-:1000B000000006310000000000600000000006455E
-:1000C00000000000C02008000000000000000F0039
-:1000D000002816220000000000000008002116255C
-:1000E000000000000000001800203625000000007D
-:1000F0008D000000002044110000000000000004FA
-:10010000002F022500000000000000000CE00000AD
-:1001100000000018004120000040481100000019B4
-:100120000042200000204811000000008E00000066
-:1001300000204411000000000000002800204A2D8B
-:1001400000000000900000000020441100000000AA
-:100150000000000000204805000000000000000C26
-:1001600000211622000000000000000300281625D0
-:10017000000000000000001900211A220000000009
-:100180000000000400281A26000000000000000003
-:10019000002914C5000000000000001900203625C9
-:1001A0000000000000000000003A140200000000FF
-:1001B00000000016002116250000000000000003CA
-:1001C00000281625000000000000001700200E2D5A
-:1001D00000000000FFFFFFFC00280E2300000000CD
-:1001E00000000000002914A3000000000000001718
-:1001F00000203625000000000000800000280E22AC
-:10020000000000000000000700220E230000000094
-:10021000000000000029386E0000000020000000EF
-:1002200000280E22000000000000000600210E231E
-:1002300000000000000000000029386E00000000EF
-:100240000000000000220222000000000000000068
-:1002500014E0000000000038000000002EE0000064
-:1002600000000035000000002CE000000000003716
-:100270000000000000400E2D0000003900000008C2
-:1002800000200E2D00000000000000090040122D8B
-:10029000000000460000000100400E2D0000003963
-:1002A00000000000C0200C0000000000003FFFFC28
-:1002B0000028122300000000000000020022122487
-:1002C000000000000000001F00211E2300000000AD
-:1002D0000000000014E000000000003E00000008E4
-:1002E00000401C11000000410000000D00201E2DE8
-:1002F000000000000000000F00281E270000000082
-:100300000000000300221E27000000007FC0000044
-:1003100000281A23000000000000001400211A2603
-:10032000000000000000000100331A260000000059
-:100330000000000800221A26000000000000000053
-:1003400000290CC700000000000000270020362410
-:100350000000000000007F000028122100000000C3
-:1003600000001400002F0224000000000000000024
-:100370000CE000000000004B0000000100290E23EB
-:10038000000000000000000E0020362300000000E6
-:100390000000E0000020441100000000FFF8000011
-:1003A00000294A230000000000000000003A2C024F
-:1003B000000000000000000200220E2B00000000E0
-:1003C000FC00000000280E23000000000000000FC9
-:1003D000002036230000000000001FFF00294A23F0
-:1003E000000000000000002700204A2D000000004F
-:1003F000000000000020481100000000000000295B
-:1004000000200E2D00000000060A020000294A23E9
-:100410000000000000000000002048110000000063
-:100420000000000000204811000000000000000152
-:1004300000210222000000000000000014E0000083
-:1004400000000061000000002EE000000000005FDE
-:10045000000000002CE000000000005E0000000032
-:1004600000400E2D000000620000000100400E2D33
-:10047000000000620000000A00200E2D00000000B5
-:100480000000000B0040122D0000006A0000000078
-:10049000C0200C0000000000003FFFFC00281223D9
-:1004A00000000000000000020022122400000000F2
-:1004B0007FC0000000281623000000000000001488
-:1004C0000021162500000000000000010033162561
-:1004D000000000008000000000280E230000000043
-:1004E0000000000000290CA3000000003FFFFC00FA
-:1004F00000290E23000000000000001F00211E2321
-:10050000000000000000000014E000000000006D8A
-:100510000000010000401C11000000700000000DF0
-:1005200000201E2D00000000000000F000281E2703
-:10053000000000000000000400221E270000000050
-:100540008100000000204411000000000000000DA8
-:100550000020481100000000FFFFF0FF00281A30C3
-:10056000000000000000A02800204411000000004E
-:1005700000000000002948E6000000000000A0186C
-:1005800000204411000000003FFFFFFF00284A2325
-:10059000000000000000A010002044110000000036
-:1005A00000000000002048040000000000000030AF
-:1005B0000020162D00000000000000020029162572
-:1005C0000000000000000030002036250000000080
-:1005D000000000250020162D000000000000000093
-:1005E000002F00A300000000000000000CC000006D
-:1005F00000000083000000260020162D00000000EF
-:1006000000000000002F00A4000000000000000017
-:100610000CC000000000008400000000004000004A
-:100620000000008A000000250020362300000000A2
-:100630000000002600203624000000000000001703
-:1006400000201E2D000000000000000200210227F3
-:10065000000000000000000014E000000000008A1C
-:1006600000000000006000000000066800000000BC
-:10067000006000000000065C0000000200210E2265
-:10068000000000000000000014C000000000008D09
-:1006900000000012C040362000000093000000005F
-:1006A0002EE0000000000091000000002CE000009F
-:1006B000000000900000000200400E2D000000929B
-:1006C0000000000300400E2D000000920000000C0E
-:1006D00000200E2D00000000000000120020362334
-:1006E000000000000000000300210E2200000000B6
-:1006F0000000000014C00000000000980000A00CE2
-:10070000002044110000000000000000C02048004C
-:100710000000000000000000C0404800000000A0F1
-:100720000000A00C002044110000000000000000A8
-:100730000020481100000000000000002EE0000032
-:100740000000009E000000002CE000000000009D62
-:100750000000000200400E2D0000009F000000037A
-:1007600000400E2D0000009F0000000C00200E2D08
-:10077000000000000000000000204803000000000E
-:1007800000000000003A0C0200000000003F0000E2
-:1007900000280E23000000000000001000210E239E
-:1007A00000000000000000110020362300000000BF
-:1007B0000000001E0021022B0000000000000000CD
-:1007C00014C00000000000A700000016C020362062
-:1007D000000000000000001F0021022B00000000AC
-:1007E0000000000014C00000000000AA0000001576
-:1007F000C0203620000000000000000800210E2B61
-:10080000000000000000007F00280E230000000010
-:1008100000000000002F0223000000000000000084
-:100820000CE00000000000E10000000027000000D4
-:10083000000000000000000000600000000002A3B3
-:1008400000000001002F0223000000000000000053
-:100850000AE00000000000B300000000006000009B
-:100860000000013A81000000002044110000000057
-:100870000000000600204811000000000000000CED
-:1008800000221E300000000099800000002044116A
-:1008900000000000000000040020122D00000000F5
-:1008A00000000008002212240000000000000010D8
-:1008B00000201811000000000000000000291CE4C6
-:1008C0000000000000000000006048070000012F49
-:1008D0009B00000000204411000000000000000008
-:1008E00000204802000000009C000000002044118D
-:1008F00000000000000000000033146F0000000042
-:100900000000000100333E23000000000000000052
-:10091000D9004800000000000000000000203C0555
-:1009200000000000810000000020441100000000D1
-:100930000000000E00204811000000000000000030
-:1009400000201010000000000000E007002044110B
-:10095000000000000000000F0021022B000000003A
-:100960000000000014C00000000000CB00F8FF08E9
-:1009700000204811000000009800000000404811CD
-:10098000000000DC000000F000280E220000000043
-:10099000000000A0002F0223000000000000000063
-:1009A0000CC00000000000DA0000001100200E2D35
-:1009B0000000000000000001002F022300000000E2
-:1009C000000000000CE00000000000D50000000264
-:1009D000002F022300000000000000000CE00000D7
-:1009E000000000D400003F0000400C11000000D6C1
-:1009F00000001F0000400C11000000D600000F0096
-:100A000000200C11000000000038000900294A23D2
-:100A1000000000003F00000000280E2B0000000036
-:100A20000000000200220E2300000000000000076A
-:100A300000494A23000000DC00380F09002048115B
-:100A400000000000680000070020481100000000BE
-:100A50000000000800214A270000000000000000FC
-:100A60000020481100000000060A020000294A2464
-:100A700000000000000000000020481100000000FD
-:100A80000000000000204811000000000000A20249
-:100A9000002044110000000000FF000000280E228A
-:100AA000000000000000008000294A230000000030
-:100AB0000000002700200E2D00000000000000268E
-:100AC0000020122D0000000000000000002F008315
-:100AD00000000000000000000CE00000000000EA40
-:100AE000000000000060000000000662000000003E
-:100AF00000400000000000EB00000000006000006B
-:100B000000000665000000070020222D0000000004
-:100B10000000000500220E2200000000001000006E
-:100B200000280E23000000000000000000292068BB
-:100B30000000000000000000003A0C02000000006D
-:100B4000000000EF00280E2300000000000000005D
-:100B500000292068000000000000001700200E2D72
-:100B6000000000000000000300210223000000003C
-:100B70000000000014E00000000000F80000000B7E
-:100B800000210228000000000000000014C0000046
-:100B9000000000F8000004000029222800000000E6
-:100BA0000000001400203628000000000000001C97
-:100BB00000210E22000000000000000014C0000010
-:100BC000000000FD0000A30C002044110000000004
-:100BD0000000000000204811000000000000001E7E
-:100BE00000210E22000000000000000014C00000E0
-:100BF0000000010B0000A30F0020441100000000C2
-:100C00000000001100200E2D000000000000000177
-:100C1000002F022300000000000000000CC00000B4
-:100C200000000104FFFFFFFF004048110000010B1E
-:100C300000000002002F022300000000000000005E
-:100C40000CC00000000001070000FFFF0040481139
-:100C50000000010B00000004002F02230000000030
-:100C6000000000000CC000000000010A000000FFAE
-:100C7000004048110000010B000000010020481155
-:100C8000000000000002C400002044110000000029
-:100C90000000001F00210E220000000000000000E4
-:100CA00014C00000000001120000001040210E20BE
-:100CB00000000000000000130020362300000000A8
-:100CC0000000001840224A20000000000000001030
-:100CD000C0424A20000001140000000000200C1156
-:100CE0000000000000000013002036230000000078
-:100CF000000000000020481100000000000000007B
-:100D000000204811000000000000000A002010111F
-:100D10000000000000000000002F0224000000007E
-:100D2000000000000CE000000000011B00000000BB
-:100D300000204811000000000000000100531224B0
-:100D400000000117FFBFFFFF00283A2E000000003F
-:100D50000000001B00210222000000000000000033
-:100D600014C000000000012E81000000002044118A
-:100D7000000000000000000D0020481100000000ED
-:100D80000000001800220E3000000000FC000000EF
-:100D900000280E2300000000810000000020441104
-:100DA000000000000000000E0020481100000000BC
-:100DB0000000000000201010000000000000E00E05
-:100DC000002044110000000007F8FF08002048112F
-:100DD000000000000000000000294A23000000007D
-:100DE0000000001C00201E2D000000000000000874
-:100DF00000214A27000000000000000000204811E8
-:100E000000000000060A020000294A240000000039
-:100E10000000000000204811000000000000000059
-:100E200000204811000000000000000000800000C9
-:100E300000000000810000000020441100000000BC
-:100E40000000000100204811000000000000217C8B
-:100E50000020441100000000008000000020481124
-:100E60000000000000000000002048060000000014
-:100E70000000000800214A270000000000000000D8
-:100E800017000000000000000004217F00604411F2
-:100E90000000068D0000001F00210230000000004D
-:100EA0000000000014C000000000068C00000004D8
-:100EB00000404C1100000135810000000020441169
-:100EC00000000000000000010020481100000000A8
-:100ED000000021F800204411000000000000001C68
-:100EE0000020481100000000000421F900604411B6
-:100EF0000000068D000000110021023000000000FB
-:100F00000000000014E000000000013C00000000B0
-:100F100000800000000000000000000000600000F1
-:100F20000000000B00000000006004110000031529
-:100F3000000000000020041100000000000000007C
-:100F400000600811000001B2000000000060000015
-:100F5000000001600000FFFF40280E20000000009C
-:100F600000000010C0211220000000000000FFFF60
-:100F7000402806200000000000000010C0210A20C8
-:100F800000000000000000000034146100000000B8
-:100F90000000000000741882000002BB0001A1FDE7
-:100FA00000604411000002E000003FFF002F022F0C
-:100FB00000000000000000000CC00000000001471D
-:100FC00000000000C040040000000001000000001C
-:100FD000006000000000000B000000000060041131
-:100FE00000000315000000000020041100000000B4
-:100FF0000000000000600811000001B200003FFF87
-:10100000002F022F00000000000000000CE0000094
-:10101000000000000000000000600000000001600F
-:101020000000001040210E20000000000000FFFF23
-:10103000C0281220000000000000001040211620EF
-:10104000000000000000FFFFC0681A20000002BB83
-:101050000001A1FD00604411000002E000003FFF1C
-:10106000002F022F00000000000000000CC0000054
-:101070000000015800000000C04004000000000112
-:101080000000225C0020441100000000000000016C
-:1010900000300A2F000000000000000100210A2299
-:1010A000000000000000000300384A220000000099
-:1010B0000000225600204411000000000000001A29
-:1010C00000204811000000000000A1FC0020441195
-:1010D0000000000000000001008048110000000036
-:1010E00000000000006000000000000B0000000095
-:1010F000006000000000018F0000000000600000A0
-:10110000000001A000003FFF002F022F00000000A0
-:10111000000000000CE000000000000000000000E3
-:1011200000202C0800000000000000000020241116
-:101130000000000000000000002028110000000056
-:10114000000022560020441100000000000000169C
-:1011500000204811000000000000225C0020441123
-:101160000000000000000003002048110000000003
-:1011700093800000002044110000000000000002E5
-:1011800000221E290000000000000000007048EB53
-:101190000000019C0000000000600000000002BB95
-:1011A00000000001403306200000000000000000A5
-:1011B000C03024090000000000003FFF002F022F74
-:1011C00000000000000000000CE000000000000033
-:1011D0000000000000600000000002A3000000000A
-:1011E000002F022100000000000000000AE00000C3
-:1011F0000000018100000000006000000000013AD2
-:101200000000000000400000000001869500000082
-:10121000002044110000000000000000002F022107
-:1012200000000000000000000CE00000000001864B
-:1012300000000000C0204800000000000000000185
-:10124000005306210000018292000000002044119A
-:101250000000000000000000C0604800000001978E
-:101260000001A1FD00204411000000000000001159
-:101270000020062D00000000000000000078042A75
-:10128000000002FB00000000002028090000000010
-:1012900000003FFF002F022F0000000000000000B0
-:1012A0000CC000000000017400000000C0400400F9
-:1012B000000000010000021000600411000003158E
-:1012C00000003FFF002F022F000000000000000080
-:1012D0000CE000000000019400000015C020362042
-:1012E0000000000000000016C020362000000000B2
-:1012F0003F800000002004110000000046000000B4
-:1013000000600811000001B2000000000080000031
-:10131000000000000000A1FC0020441100000000BB
-:1013200000003FFF002F022F00000000000000001F
-:101330000CC000000000019B00000001008048116B
-:1013400000000000000000210080481100000000A3
-:101350000000FFFF40280E200000000000000010E9
-:10136000C0211220000000000000FFFF40281620CE
-:101370000000000000000010C0811A2000000000E2
-:101380008100000000204411000000000000000661
-:1013900000204811000000000000000800221E305C
-:1013A000000000000000002900201A2D00000000AD
-:1013B0000000E0000020441100000000FFFBFF09D6
-:1013C00000204811000000000000000F0020222D26
-:1013D0000000000000001FFF00294A280000000054
-:1013E000000000060020222D000000000000000088
-:1013F000002920E80000000000000000002048084C
-:101400000000000000000000002048110000000063
-:10141000060A020000294A26000000000000000021
-:1014200000204811000000000000000000204811CA
-:101430000000000000000100002018110000000062
-:101440000000000800621E280000012F00000008B4
-:1014500000822228000000000002C0000020441189
-:10146000000000000000001500600E2D000001BD0E
-:101470000000001600600E2D000001BD0000C00835
-:1014800000204411000000000000001700200E2D75
-:10149000000000000000000014C00000000001B9BE
-:1014A0000000000000200411000000000000000007
-:1014B0000020480100000000390000000020481111
-:1014C00000000000000000000020481100000000A3
-:1014D000000000000080480200000000000000182A
-:1014E00000202E2D0000000000000000003B0D63D6
-:1014F000000000000000000800224A230000000055
-:101500000000001000224A23000000000000001824
-:1015100000224A2300000000000000000080480371
-:101520000000000000000000006000000000000B50
-:10153000000010000060041100000315000000000E
-:1015400000200411000000000000000000600811ED
-:10155000000001B2000000070021062F000000007B
-:101560000000001300200A2D000000000000000110
-:1015700000202C11000000000000FFFF4028222066
-:10158000000000000000000F0026222800000000DC
-:101590000000001040212620000000000000000F85
-:1015A000002626290000000000000000002028027C
-:1015B000000000000000225600204411000000003E
-:1015C0000000001B00204811000000000000000087
-:1015D000002F022100000000000000000CE00000CD
-:1015E000000001E00000225C002044110000000027
-:1015F0000000008100204811000000000000A1FC54
-:1016000000204411000000000000000100204811EB
-:10161000000000000000008000201C1100000000FD
-:1016200000000000002F0227000000000000000062
-:101630000CE00000000001DC000000000060000081
-:10164000000001E90000000100531E27000001D83E
-:101650000000000100202C11000000000000001F0D
-:1016600000280A22000000000000001F00282A2A8B
-:10167000000000000000000100530621000001D11D
-:101680000000225C00204411000000000000000265
-:1016900000304A2F000000000000A1FC002044118F
-:1016A00000000000000000010020481100000000C0
-:1016B0000000000100301E2F0000000000000000AC
-:1016C000002F022700000000000000000CE00000D6
-:1016D000000000000000000000600000000001E9C0
-:1016E0000000000100531E27000001E50000FFFF7D
-:1016F00040280E20000000000000000F00260E23EE
-:101700000000000000000010C021122000000000B6
-:101710000000000F0026122400000000000000005E
-:1017200000201411000000000000000000601811EB
-:10173000000002BB0001A1FD0020441100000000D8
-:1017400000000000002F022B00000000000000003D
-:101750000CE00000000001F8000000100022162834
-:1017600000000000FFFF0000002816250000000018
-:101770000000FFFF00281A29000000000000000000
-:10178000002948C500000000000000000020480AB1
-:10179000000000000000000000202C1100000000EC
-:1017A000000000100022162300000000FFFF0000D0
-:1017B00000281625000000000000FFFF00281A2462
-:1017C0000000000000000000002948C500000000E3
-:1017D0000000000000731503000002050000000077
-:1017E0000020180500000000000000000073152410
-:1017F0000000020500000000002D14C500000000DC
-:1018000000000000003008A20000000000000000FE
-:101810000020480200000000000000000020280214
-:101820000000000000000000002020030000000075
-:101830000000000000802404000000000000000FF1
-:1018400000210225000000000000000014C000007C
-:101850000000068C00000000002B140500000000B2
-:1018600000000001009016250000000000000000AC
-:10187000006000000000000B000000000060041188
-:10188000000003150000000000200411000000000B
-:101890000000000000600811000001B200002256A4
-:1018A00000204411000000000000001A00294A2214
-:1018B0000000000000000000C02000000000000048
-:1018C00000003FFF002F022F00000000000000007A
-:1018D0000CE000000000000000000000C020040038
-:1018E000000000000000225C002044110000000005
-:1018F0000000000300384A21000000000000A1FCA5
-:1019000000204411000000000000000100204811E8
-:10191000000000000000FFFF40281220000000002F
-:1019200000000010C0211A20000000000000FFFF8E
-:1019300040280E200000000000000010C0211620EA
-:10194000000000000000000000741465000002BBED
-:101950000001A1FD00604411000002E00000000150
-:10196000003306210000000000000000002F0221CB
-:1019700000000000000000000CC000000000021980
-:1019800000003FFF002F022F0000000000000000B9
-:101990000CC000000000021200000000C040040063
-:1019A000000000010000000000600000000006458B
-:1019B000000000000040040F0000021300000000BF
-:1019C0000060000000000631000000000060000020
-:1019D000000006450000021000600411000003151D
-:1019E0000000000000600000000001A000000000F6
-:1019F000006000000000019C00000000006000008A
-:101A0000000002BB0000000000600000000002A314
-:101A1000938000000020441100000000000000003E
-:101A2000002048080000000000000000002F022FE6
-:101A300000000000000000000AE000000000023288
-:101A400000000000006000000000013A00000000FB
-:101A50000040000000000236950000000020441104
-:101A60000000000000000000002F022F0000000016
-:101A7000000000000CE00000000002360000000042
-:101A8000C0404800000002339200000000204411D2
-:101A90000000000000000000C0204800000000001E
-:101AA0000000225600204411000000000000001633
-:101AB00000204811000000000000225C00204411BA
-:101AC000000000000000000300204811000000009A
-:101AD0000000A1FC002044110000000000000001F3
-:101AE00000204811000000000001A1FD0020441169
-:101AF000000000000000000000600411000002FB74
-:101B000000000000C04004000000000100000000D0
-:101B100000600000000006310000A00C002044110D
-:101B20000000000000000000C0204800000000008D
-:101B300000000000C040480000000000000000005D
-:101B4000006000000000000B0000001840210A2087
-:101B50000000000000000003002F0222000000002F
-:101B6000000000000AE000000000024C0000001429
-:101B70000020222D00000000000801010029222879
-:101B800000000000000000140020362800000000C3
-:101B90000000A30C00204411000000000000000021
-:101BA000C02048000000000000000000C0204800E5
-:101BB0000000000000000000C0404800000002518A
-:101BC00000000000006000000000000B000000109A
-:101BD00000600411000003153F8000000020041184
-:101BE000000000000000000000600811000001B2C9
-:101BF0000000225C002044110000000000000003EF
-:101C000000204811000000000000000000600000FB
-:101C10000000027C0000001700201E2D00000000C4
-:101C20000000000100211E2700000000000000004D
-:101C300014E000000000026A0000001200201E2DC7
-:101C4000000000000000FFFF00281E270000000029
-:101C50000000000000341C2700000000000000000D
-:101C600012C000000000025F0000000000201C11F4
-:101C70000000000000000000002F00E50000000050
-:101C80000000000008C00000000002620000000028
-:101C900000201407000000000000001200201E2D8C
-:101CA000000000000000001000211E2700000000BE
-:101CB0000000000000341C4700000000000000008D
-:101CC00012C00000000002670000000000201C118C
-:101CD0000000000000000000002F00E600000000EF
-:101CE0000000000008C000000000026A00000000C0
-:101CF0000020180700000000000000000060000045
-:101D0000000002C100002256002044110000000023
-:101D1000000000000034202300000000000000004C
-:101D200012C00000000002720000000000342044D5
-:101D3000000000000000000012C00000000002715E
-:101D40000000001600404811000002760000001854
-:101D500000404811000002760000000000342044DA
-:101D6000000000000000000012C00000000002752A
-:101D70000000001700404811000002760000001922
-:101D800000204811000000000000A1FC00204411C8
-:101D900000000000000000010020481100000000C9
-:101DA0000001A1FD00604411000002E900003FFFB6
-:101DB000002F022F00000000000000000CC00000F7
-:101DC0000000025600000000C040040000000001B6
-:101DD0000000001040210620000000000000FFFF6E
-:101DE000C0280A20000000000000001040210E2042
-:101DF000000000000000FFFFC028122000000000CB
-:101E00000000001040211620000000000000FFFF2D
-:101E1000C0881A200000000081000000002044114A
-:101E20000000000000000001002048110000000038
-:101E300000042004006044110000068D0000000032
-:101E4000006000000000063100000000C0600000DB
-:101E5000000002A30000000500200A2D0000000081
-:101E60000000000800220A22000000000000002BF1
-:101E700000201A2D000000000000001C00201E2D74
-:101E8000000000000000700000281E270000000075
-:101E90000000000000311CE6000000000000002AE5
-:101EA00000201A2D000000000000000C00221A265D
-:101EB0000000000000000000002F00E6000000000D
-:101EC0000000000006E00000000002920000000098
-:101ED00000201C11000000000000000000200C1178
-:101EE000000000000000002B00203623000000004E
-:101EF0000000001000201811000000000000000089
-:101F000000691CE20000012F9380000000204411B2
-:101F10000000000000000000002048070000000052
-:101F200095000000002044110000000000000000A7
-:101F3000002F022F00000000000000000CE0000055
-:101F40000000029D0000000100333E2F0000000051
-:101F500000000000D90048000000000092000000CE
-:101F6000002044110000000000000000C0204800D4
-:101F7000000000000000001C0040362700000000A8
-:101F80000000000CC0220A20000000000000002910
-:101F9000002036220000000000000028C04036204B
-:101FA000000000000000A2A4002044110000000076
-:101FB000000000090020481100000000A1000000FE
-:101FC00000204411000000000000000100804811C2
-:101FD000000000000000002100201E2D0000000075
-:101FE00000000000002C1CE30000000000000021A5
-:101FF00000203627000000000000002200201E2DD7
-:102000000000000000000000002C1CE400000000A4
-:1020100000000022002036270000000000000023FE
-:1020200000201E2D0000000000000000003120A351
-:102030000000000000000000002D1D07000000004F
-:1020400000000023002036270000000000000024CC
-:1020500000201E2D0000000000000000003120C400
-:102060000000000000000000002D1D07000000001F
-:10207000000000240080362700000000000000213E
-:10208000002036230000000000000022002036243B
-:10209000000000000000000000311CA30000000050
-:1020A0000000002300203627000000000000000090
-:1020B00000311CC40000000000000024008036270E
-:1020C000000000000000001A002036270000000079
-:1020D0000000001B00203628000000000000001750
-:1020E00000201E2D00000000000000020021022739
-:1020F000000000000000000014C00000000002DC2E
-:102100000000000000400000000002D90000001A9A
-:1021100000203627000000000000001B00203628A9
-:10212000000000000000001700201E2D000000002D
-:102130000000000200210227000000000000000053
-:1021400014E00000000002D9000000030021022773
-:10215000000000000000000014E00000000002DCAD
-:102160000000002300201E2D0000000000000000E1
-:10217000002E00E1000000000000000002C000008E
-:10218000000002DC0000002100201E2D00000000E5
-:1021900000000000003120A100000000000000004D
-:1021A000002E00E8000000000000000006C0000053
-:1021B000000002DC0000002400201E2D00000000B2
-:1021C00000000000002E00E20000000000000000FF
-:1021D00002C00000000002DC0000002200201E2DD2
-:1021E0000000000000000000003120C200000000DC
-:1021F00000000000002E00E80000000000000000C9
-:1022000006C00000000002DC0000000000600000CA
-:10221000000006680000000000600000000002B539
-:102220000000000000400000000002DE000000008E
-:1022300000600000000002B5000000000060000027
-:102240000000065F0000000000400000000002DE09
-:102250000000000000600000000002A70000000075
-:1022600000400000000002DE0000001A00201E2DC9
-:10227000000000000000001B0080222D0000000074
-:102280000000001000221E230000000000000000DB
-:1022900000294887000000000000000000311CA356
-:1022A000000000000000001000221E2700000000B7
-:1022B0000000000000294887000000000000001016
-:1022C00000221E230000000000000000003120C496
-:1022D000000000000000FFFF00282228000000008E
-:1022E0000000000000894907000000000000001005
-:1022F00000221E2300000000000000000029488783
-:10230000000000000000001000221E21000000005C
-:102310000000000000294847000000000000000005
-:1023200000311CA3000000000000001000221E2746
-:1023300000000000000000000029488700000000A5
-:102340000000000000311CA100000000000000108F
-:1023500000221E270000000000000000002948475E
-:10236000000000000000001000221E2300000000FA
-:1023700000000000003120C4000000000000FFFF4A
-:102380000028222800000000000000000029490762
-:10239000000000000000001000221E2100000000CC
-:1023A00000000000003120C2000000000000FFFF1C
-:1023B00000282228000000000000000000894907D2
-:1023C000000000000000001000221E23000000009A
-:1023D0000000000000294887000000000000000104
-:1023E00000220A210000000000000000003308A2C3
-:1023F000000000000000001000221E22000000006B
-:102400000000001000212222000000000000000057
-:1024100000294907000000000000000000311CA353
-:10242000000000000000001000221E270000000035
-:1024300000000000002948870000000000000001A3
-:1024400000220A210000000000000000003008A265
-:10245000000000000000001000221E22000000000A
-:1024600000000010002122220000000000000000F7
-:1024700000294907000000000000001000221E2370
-:102480000000000000000000003120C40000000037
-:102490000000FFFF002822280000000000000000CC
-:1024A000002949070000000000000000003808C5AE
-:1024B00000000000000000000030084100000000A3
-:1024C0000000000100220A220000000000000000BD
-:1024D000003308A2000000000000001000221E22AD
-:1024E0000000000000000010002122220000000077
-:1024F00000000000008949070000000000000017EC
-:102500000020222D000000000000000014C0000088
-:1025100000000318FFFFFFEF002806210000000065
-:10252000000000140020222D000000000000F8E050
-:1025300000204411000000000000000000294901B3
-:1025400000000000000000000089490100000000B8
-:102550000000000000204811000000000000000002
-:102560000020481100000000060A02000080481107
-:102570000000000000000000C0200000000000007B
-:1025800097000000C020441100000000000000007F
-:10259000C0204811000000008A0000000020441103
-:1025A00000000000000000000020481100000000B2
-:1025B0000000225C00204411000000000000000028
-:1025C000C0204800000000000000A1FC00204411D1
-:1025D0000000000000000000C020480000000000D3
-:1025E00000000000C0200400000000000000000007
-:1025F00000A0000A00000000970000000020441125
-:102600000000000000000000002048110000000051
-:102610008A000000002044110000000000000000BB
-:1026200000204811000000000000225C002044113E
-:102630000000000000000000C02048000000000072
-:102640000000A1FC00204411000000000000000078
-:10265000C02048000000000000000000C02004006E
-:10266000000000000000000000A0000A00000000C0
-:10267000970000000020441100000000000000004E
-:1026800000204811000000008A00000000204411D2
-:1026900000000000000000000020481100000000C1
-:1026A0000000225C00204411000000000000000037
-:1026B000C0204800000000000000A1FC00204411E0
-:1026C0000000000000000000C020480000000000E2
-:1026D0000001A1FD002044110000000000000000E6
-:1026E000D90048000000000000000000C0200400E5
-:1026F000000000000000000000A0000A0000000030
-:1027000000002257002044110000000000000003D8
-:10271000C0484A20000000000000225D0020441153
-:102720000000000000000000C04048000000000061
-:1027300000000000006000000000064500000000EE
-:10274000C0200800000000000000225C00204411AE
-:10275000000000000000000300384A2200000000D2
-:102760000000A1FC00204411000000000000000057
-:10277000C0204800000000000001A1FD002044111D
-:102780000000000000000000002F022200000000F6
-:10279000000000000CE0000000000000000000004D
-:1027A00040204800000000000000000140304A20A6
-:1027B0000000000000000002C0304A2000000000BD
-:1027C0000000000100530A220000034B0000003FFC
-:1027D000C0280A20000000008100000000204411F1
-:1027E000000000000000000100204811000000006F
-:1027F000000021F800204411000000000000001833
-:102800000020481100000000000421F9006044117C
-:102810000000068D000000110021023000000000C1
-:102820000000000014E00000000003540000001449
-:10283000002F022200000000000000000CC0000079
-:10284000000003640000201000204411000000007C
-:102850000000800000204811000000000001A2A438
-:102860000020441100000000000000000060480249
-:102870000000036E00002100002044110000000051
-:1028800000000000C0204800000000000000000020
-:10289000C02048000000000000000000C0204800E8
-:1028A0000000000000000000C040480000000000E0
-:1028B00000000004002F02220000000000000000C1
-:1028C0000CC000000000036A00002010002044112A
-:1028D00000000000000080000020481100000000FF
-:1028E0000001A2A40020441100000000000000002C
-:1028F000004048020000035F00000028002F022271
-:1029000000000000000000000CC00000000005C036
-:102910000001A2A4002044110000000000000000FB
-:10292000004048020000035F0000002C0020362613
-:102930000000000000000049002018110000000005
-:102940000000003F002048110000000000000001CE
-:1029500000331A260000000000000000002F0226AD
-:1029600000000000000000000CC000000000037028
-:102970000000002C00801A2D000000000000003F25
-:10298000C0280A200000000000000015002F0222CD
-:1029900000000000000000000CE0000000000386C2
-:1029A00000000006002F02220000000000000000CE
-:1029B0000CE00000000003B100000016002F02220E
-:1029C00000000000000000000CE00000000003B563
-:1029D00000000020002F0222000000000000000084
-:1029E0000CE000000000039C0000000F002F0222FA
-:1029F00000000000000000000CE00000000003A840
-:102A000000000010002F0222000000000000000063
-:102A10000CE00000000003A80000001E002F0222AE
-:102A200000000000000000000CE000000000039027
-:102A30000000A2A4002044110000000000000000DB
-:102A400000404802000000000800000000290A229F
-:102A5000000000000000000340210E2000000000E4
-:102A60000000000CC021122000000000000800003F
-:102A7000002812240000000000000014C0221620CC
-:102A80000000000000000000002914A40000000065
-:102A90000000A2A40020441100000000000000007B
-:102AA000002948A2000000000000A1FE00204411FF
-:102AB000000000000000000000404803000000008B
-:102AC000810000000020441100000000000000010F
-:102AD0000020481100000000000021F800204411EF
-:102AE0000000000000000016002048110000000057
-:102AF000000421F9006044110000068D000000155B
-:102B000000210230000000000000000014E000007E
-:102B1000000003920000210E00204411000000007C
-:102B200000000000C020480000000000000000007D
-:102B3000C0204800000000000000A2A400204411B2
-:102B400000000000000000000040480200000000FB
-:102B5000810000000020441100000000000000017E
-:102B60000020481100000000000021F8002044115E
-:102B700000000000000000170020481100000000C5
-:102B8000000421F9006044110000068D00000003DC
-:102B900000210230000000000000000014E00000EE
-:102BA0000000039E000021080020441100000000E6
-:102BB00000000000C02048000000000000000000ED
-:102BC000C0204800000000000000A2A40020441122
-:102BD000000000000000000000404802000000006B
-:102BE0000000A2A40020441100000000000000002A
-:102BF0000020480200000000800000000020441176
-:102C0000000000000000000000204811000000004B
-:102C100081000000002044110000000000000010AE
-:102C200000204811000000000000000000200010FB
-:102C3000000000000000000014C00000000003AE0F
-:102C40000000000000400000000000000000201014
-:102C50000020441100000000000080000020481106
-:102C6000000000000001A2A40020441100000000A8
-:102C70000000000600404811000000000000201085
-:102C800000204411000000000000800000204811D6
-:102C9000000000000001A2A4002044110000000078
-:102CA00000000016006048110000036E00000000E4
-:102CB000004000000000000000000000C0200800EC
-:102CC0000000000000000000C0200C000000000018
-:102CD0000000001D00210223000000000000000091
-:102CE00014E00000000003CE810000000020441129
-:102CF000000000000000000100204811000000005A
-:102D0000000021F80020441100000000000000181D
-:102D10000020481100000000000421F90060441167
-:102D20000000068D000000110021023000000000AC
-:102D30000000000014E00000000003C000002100BB
-:102D400000204411000000000000000000204802A4
-:102D50000000000000000000002048030000000008
-:102D6000BABECAFE0020481100000000CAFEBABE6A
-:102D70000020481100000000000020100020441135
-:102D8000000000000000800000204811000000004A
-:102D90000000A2A400204411000000000000000474
-:102DA0000040481100000000000021700020441184
-:102DB00000000000000000000020480200000000A9
-:102DC0000000000000204803000000008100000017
-:102DD00000204411000000000000000A00204811FB
-:102DE00000000000000000000020001000000000B3
-:102DF0000000000014C00000000003D38C0000009D
-:102E00000020441100000000CAFEBABE0040481174
-:102E100000000000810000000020441100000000BC
-:102E200000000001002048110000000000003FFFEA
-:102E300040280A20000000008000000040280E20EA
-:102E40000000000040000000C02812200000000028
-:102E500000040000006946220000068D000000000A
-:102E6000002014100000000000000000002F0223CA
-:102E700000000000000000000CC00000000003E1A2
-:102E800000000000C0401800000003E400003FFF05
-:102E9000C0281A2000000000000400000069462637
-:102EA0000000068D00000000002018100000000047
-:102EB00000000000002F02240000000000000000BD
-:102EC0000CC00000000003E700000000C0401C0030
-:102ED000000003EA00003FFFC0281E2000000000A1
-:102EE00000040000006946270000068D0000000075
-:102EF00000201C1000000000000000000020440220
-:102F00000000000000000000002820C500000000B4
-:102F100000000000004948E800000000A580000013
-:102F200000200811000000000000200000200C110B
-:102F30000000000083000000006044110000041243
-:102F4000000000000020440200000000000000001B
-:102F5000C0204800000000000000000040204800A1
-:102F6000000000000000001FC0210220000000003F
-:102F70000000000014C00000000003F70000201053
-:102F800000204411000000000000800000204811D3
-:102F9000000000000000FFFFC0481220000003FFF7
-:102FA000A780000000200811000000000000A00021
-:102FB00000200C110000000083000000006044119C
-:102FC0000000041200000000002044020000000085
-:102FD00000000000C02048000000000000000000C9
-:102FE000C0204800000000000000FFFFC0281220A1
-:102FF00000000000830000000020441100000000D9
-:103000000000000000304883000000008400000041
-:10301000002044110000000000000000C020480013
-:1030200000000000000000001D0000000000000083
-:103030008300000000604411000004120000000042
-:10304000C040040000000001A98000000020081119
-:10305000000000000000C00000400C11000003FA56
-:10306000AB80000000200811000000000000F8E024
-:1030700000400C11000003FAAD8000000020081190
-:10308000000000000000F88000400C11000003FA6E
-:10309000B380000000200811000000000000F3FCD5
-:1030A00000400C11000003FAAF800000002008115E
-:1030B000000000000000E00000400C11000003FAD6
-:1030C000B180000000200811000000000000F000A6
-:1030D00000400C11000003FA83000000002044119E
-:1030E00000000000000021480020481100000000FE
-:1030F00084000000002044110000000000000000D7
-:10310000C020480000000000000000001D0000007A
-:10311000000000000000000000800000000000002F
-:1031200001182000C0304620000000000000000010
-:10313000D90048000000000000000000C02004008A
-:10314000000000000000000000A0000A00000000D5
-:103150000218A000C030462000000000000000005F
-:10316000D90048000000000000000000C02004005A
-:10317000000000000000000000A0000A00000000A5
-:103180000318C000C030462000000000000000000E
-:10319000D90048000000000000000000C02004002A
-:1031A000000000000000000000A0000A0000000075
-:1031B0000418F8E0C03046200000000000000000C5
-:1031C000D90048000000000000000000C0200400FA
-:1031D000000000000000000000A0000A0000000045
-:1031E0000518F880C03046200000000000000000F4
-:1031F000D90048000000000000000000C0200400CA
-:10320000000000000000000000A0000A0000000014
-:103210000618E000C030462000000000000000005A
-:10322000D90048000000000000000000C020040099
-:10323000000000000000000000A0000A00000000E4
-:103240000718F000C0304620000000000000000019
-:10325000D90048000000000000000000C020040069
-:10326000000000000000000000A0000A00000000B4
-:103270000818F3FCC03046200000000000000000E9
-:10328000D90048000000000000000000C020040039
-:10329000000000000000000000A0000A0000000084
-:1032A0000000003000200A2D000000000000000097
-:1032B000C0290C4000000000000000300020362330
-:1032C0000000000000000000C0200400000000001A
-:1032D0000000000000A0000A0000000086000000BE
-:1032E00000204411000000000000000000404801E0
-:1032F0000000000085000000C02044110000000014
-:103300000000000000404801000000000000217C97
-:10331000002044110000000000000018402102209D
-:10332000000000000000000014C000000000044580
-:1033300000800000C0494A20000004460000000050
-:10334000C02048000000000000000000C02048002D
-:103350000000000000000000C02048000000000045
-:103360008100000000204411000000000000000166
-:10337000002048110000000000000000C0200800EC
-:103380000000000000000000170000000000000026
-:103390000004217F006044110000068D0000001F22
-:1033A00000210230000000000000000014C00000F6
-:1033B000000000000000000000404C020000044B30
-:1033C00000000000C0200C00000000000000000011
-:1033D000C02010000000000000000000C020140009
-:1033E0000000000000000000C020180000000000E5
-:1033F00000000000C0201C000000000000007F0052
-:1034000000280A210000000000004500002F0222D1
-:1034100000000000000000000CE000000000045963
-:1034200000000000C020200000000000000000009C
-:1034300017000000000000000000001000280A2310
-:103440000000000000000010002F02220000000019
-:10345000000000000CE0000000000461810000009A
-:10346000002044110000000000000001002048116D
-:103470000000000000040000006946240000068DE2
-:103480000000000000400000000004668100000011
-:10349000002044110000000000000000002048113E
-:1034A000000000000000216D002044110000000019
-:1034B00000000000002048040000000000000000A0
-:1034C000006048050000069200000000002824F07B
-:1034D000000000000000000700280A230000000090
-:1034E00000000001002F0222000000000000000088
-:1034F0000AE000000000046D00000000002F00C979
-:10350000000000000000000004E00000000004864D
-:1035100000000000004000000000049300000002D2
-:10352000002F022200000000000000000AE000005E
-:103530000000047200000000002F00C9000000001D
-:103540000000000002E0000000000486000000000F
-:10355000004000000000049300000003002F02223E
-:1035600000000000000000000AE0000000000477F6
-:1035700000000000002F00C9000000000000000053
-:103580000CE0000000000486000000000040000085
-:103590000000049300000004002F0222000000003D
-:1035A000000000000AE000000000047C00000000B1
-:1035B000002F00C900000000000000000AE0000029
-:1035C000000004860000000000400000000004939A
-:1035D00000000005002F0222000000000000000093
-:1035E0000AE000000000048100000000002F00C974
-:1035F000000000000000000006E00000000004865B
-:1036000000000000004000000000049300000006DD
-:10361000002F022200000000000000000AE000006D
-:103620000000048600000000002F00C90000000018
-:103630000000000008E00000000004860000000018
-:10364000004000000000049300007F0000280A21D1
-:103650000000000000004500002F022200000000D2
-:10366000000000000AE00000000000000000000868
-:1036700000210A23000000000000000014C0000028
-:1036800000000490000021690020441100000000A7
-:1036900000000000C0204800000000000000000002
-:1036A000C02048000000000000000000C0204800CA
-:1036B00000000000CAFEBABE004048110000000031
-:1036C00000000000C02044000000000000000000D6
-:1036D000C02000000000000000000000C0404800C2
-:1036E0000000000000007F0000280A210000000008
-:1036F00000004500002F0222000000000000000032
-:103700000AE000000000049900000000C020000052
-:103710000000000000000000C020000000000000C9
-:1037200000000000C0400000000000000000000099
-:1037300000404C080000045900000000C0200800B0
-:10374000000000000000001040210E2000000000DA
-:1037500000000011402112200000000000000012B3
-:1037600040211620000000000000216900204411C3
-:1037700000000000000000000020480200000000DF
-:1037800000000000002102250000000000000000F1
-:1037900014E00000000004A300040000C0494A2017
-:1037A000000004A4FFFBFFFFC0284A200000000027
-:1037B00000000000002102230000000000000000C3
-:1037C00014E00000000004B000000000C020480029
-:1037D0000000000000000000C020480000000000C1
-:1037E0000000000000210224000000000000000092
-:1037F00014C00000000000008100000000204411FF
-:10380000000000000000000C002048110000000033
-:103810000000000000200010000000000000000078
-:1038200014C00000000004ACA000000000204411FF
-:1038300000000000CAFEBABE0040481100000000AF
-:10384000810000000020441100000000000000047E
-:1038500000204811000000000000216B00204411EE
-:103860000000000000000000C02048100000000020
-:10387000810000000020441100000000000000054D
-:1038800000204811000000000000216C00204411BD
-:103890000000000000000000C020481000000000F0
-:1038A00000000000002F02240000000000000000C3
-:1038B0000CE00000000000000000000000400000DC
-:1038C000000004AA00000000C0210A20000000003F
-:1038D0000000000014C00000000004C381000000CC
-:1038E00000204411000000000000000000204811EA
-:1038F000000000000000216D0020441100000000C5
-:1039000000000000C020480000000000000000008F
-:10391000C060480000000692000000000040000067
-:10392000000004C7810000000020441100000000D6
-:103930000000000100204811000000000004000009
-:10394000C02946200000000000000000C060000008
-:103950000000068D0000000100210222000000008E
-:103960000000000014C00000000004CE0000216927
-:10397000002044110000000000000000C0204800AA
-:103980000000000000000000C0204800000000000F
-:10399000000000000020481000000000CAFEBABE6F
-:1039A000004048110000000000000000C02044005A
-:1039B0000000000000000000C040481000000000AF
-:1039C0008100000000204411000000000000000100
-:1039D0000020481100000000000021F800204411E0
-:1039E000000000000000000E002048110000000050
-:1039F000000421F9006044110000068D0000000061
-:103A000000210230000000000000000014C000008F
-:103A1000000004D0000021800020441100000000BC
-:103A200000000000C020480000000000000000006E
-:103A3000C02000000000000000000000C02048007E
-:103A40000000000000000000C02000000000000096
-:103A500000000000C040480000000000000000031B
-:103A600000333E2F00000000000000010021022171
-:103A7000000000000000000014E00000000005004D
-:103A80000000002C00200A2D0000000000040000AF
-:103A900018E00C11000004EF0000000100333E2F7D
-:103AA0000000000000002169002044110000000017
-:103AB000000000000020480200000000000000009C
-:103AC00000204803000000000000000800300A2227
-:103AD0000000000000000000C020480000000000BE
-:103AE00000000000C0204800000000000000216924
-:103AF00000204411000000000000000000204802E7
-:103B0000000000000000000000204803000000004A
-:103B10000000000800300A22000000000000000041
-:103B2000C02048000000000000000000D8C048008D
-:103B3000000004E30000216900204411000000009F
-:103B4000000000000020480200000000000000000B
-:103B500000204803000000000000000800300A2296
-:103B60000000000000000000C0204800000000002D
-:103B700000000000C0204800000000000000002DF0
-:103B80000020122D000000000000000000290C831E
-:103B90000000000000002169002044110000000026
-:103BA00000000000002048020000000000000000AB
-:103BB00000204803000000000000000800300A2236
-:103BC0000000000000000000C020480000000000CD
-:103BD00000000000C02048000000000000000011AC
-:103BE00000210224000000000000000014C00000BA
-:103BF000000000000000000000400000000004AAD7
-:103C00000000002CC0203620000000000000002D25
-:103C1000C0403620000000000000000F00210221FB
-:103C2000000000000000000014C0000000000505B6
-:103C300000000000006000000000000B0000000019
-:103C4000D90000000000000000000000C040040097
-:103C500000000001B5000000002044110000000039
-:103C6000000020000020481100000000B600000005
-:103C700000204411000000000000A00000204811B6
-:103C800000000000B7000000002044110000000008
-:103C90000000C0000020481100000000B800000033
-:103CA00000204411000000000000F8E0002048114E
-:103CB00000000000B90000000020441100000000D6
-:103CC0000000F8800020481100000000BA00000049
-:103CD00000204411000000000000E0000020481116
-:103CE00000000000BB0000000020441100000000A4
-:103CF0000000F0000020481100000000BC0000009F
-:103D000000204411000000000000F3FC00204811D6
-:103D100000000000810000000020441100000000AD
-:103D2000000000020020481100000000000000FF19
-:103D300000280E300000000000000000002F0223C9
-:103D400000000000000000000CC000000000051989
-:103D500000000000C020080000000000000000007B
-:103D600014C000000000052E0000000000200C110F
-:103D7000000000000000001C0020362300000000AE
-:103D80000000002B00203623000000000000002966
-:103D90000020362300000000000000280020362309
-:103DA0000000000000000017002036230000000083
-:103DB000000000250020362300000000000000263F
-:103DC00000203623000000000000001500203623EC
-:103DD0000000000000000016002036230000000054
-:103DE000FFFFE00000200C11000000000000002197
-:103DF00000203623000000000000002200203623AF
-:103E00000000000000001FFF00200C110000000057
-:103E100000000023002036230000000000000024E2
-:103E20000020362300000000F1FFFFFF00283A2E9B
-:103E3000000000000000001AC0220E200000000058
-:103E4000000000000029386E000000008100000022
-:103E5000002044110000000000000006002048116E
-:103E6000000000000000002A402036200000000072
-:103E70008700000000204411000000000000000046
-:103E8000C0204800000000000000A1F40020441100
-:103E900000000000000000000020481000000000AA
-:103EA0000000000000200C110000000000000030A5
-:103EB00000203623000000009D0000000020441177
-:103EC000000000000000001F40214A200000000008
-:103ED00096000000002044110000000000000000D7
-:103EE000C02048000000000000000000C0200C00BE
-:103EF0000000000000000000C020100000000000D2
-:103F00000000001F00211624000000000000000037
-:103F100014C00000000000000000001D0020362337
-:103F2000000000000000000300281E230000000025
-:103F3000000000080022222300000000FFFFF00024
-:103F4000002822280000000000000000002920E8CE
-:103F5000000000000000001F0020362800000000C4
-:103F60000000001800211E230000000000000020B7
-:103F70000020362700000000000000020022162466
-:103F80000000000000000000003014A80000000045
-:103F90000000001E00203625000000000000000385
-:103FA00000211A24000000001000000000281A263A
-:103FB00000000000EFFFFFFF00283A2E0000000085
-:103FC00000000000004938CE0000067B0000000120
-:103FD00040280A20000000000000000640280E20B3
-:103FE0000000000000000300C028122000000000B4
-:103FF0000000000800211224000000000000000062
-:10400000C02016200000000000000000C0201A2080
-:10401000000000000000000000210222000000005B
-:104020000000000014C000000000056681000000D0
-:104030000020441100000000000000010020481191
-:10404000000000000000225800300A240000000098
-:1040500000040000006946220000068D000021696E
-:10406000002044110000000000000000002048056E
-:10407000000000000002000000294A2600000000A5
-:10408000000000000020481000000000CAFEBABE78
-:10409000002048110000000000000002002F022351
-:1040A00000000000000000000CC000000000056ED1
-:1040B00000000000C0201C100000000000000000F4
-:1040C000C04000000000057C00000002002F022319
-:1040D00000000000000000000CC000000000056EA1
-:1040E00081000000002044110000000000000001D9
-:1040F00000204811000000000000225800300A246F
-:104100000000000000040000006946220000068D47
-:1041100000000000C0201C10000000000000000093
-:10412000C04000000000057C00000000002F0223BA
-:1041300000000000000000000CC00000000005723C
-:1041400000000000C0201C00000000000000000073
-:10415000C04000000000057C00000004002F022386
-:1041600000000000000000000CC000000000057A04
-:104170008100000000204411000000000000000049
-:1041800000204811000000000000216D00204411B3
-:104190000000000000000000C020480000000000F7
-:1041A00000000000C060480000000692000000000F
-:1041B00000401C100000057C00000000C020000032
-:1041C0000000000000000000C040000000000000EF
-:1041D000000000000EE000000000057E000000006E
-:1041E00000600000000005C900000000002F02244C
-:1041F00000000000000000000CC000000000058F5F
-:104200000000A2B7002044110000000000000000E0
-:104210000020480700000000810000000020441139
-:104220000000000000000001002048110000000014
-:104230000004A2B6006044110000068D0000001AC0
-:10424000002122300000000000000006002226307D
-:104250000000000000042004006044110000068DEE
-:104260000000A2C400204411000000000000000073
-:10427000003048E9000000000000000000E00000FD
-:104280000000058D0000A2D10020441100000000B4
-:104290000000000000404808000000000000A2D11B
-:1042A00000204411000000000000000100504A28D6
-:1042B0000000000000000001002F022400000000A8
-:1042C000000000000CC00000000005A00000A2BB20
-:1042D00000204411000000000000000000204807FA
-:1042E00000000000810000000020441100000000D8
-:1042F0000000000100204811000000000004A2BAE4
-:10430000006044110000068D0000001A00212230D8
-:10431000000000000000000600222630000000001F
-:1043200000042004006044110000068D0000A2C5B6
-:10433000002044110000000000000000003048E9A7
-:10434000000000000000000000E000000000059EEA
-:104350000000A2D200204411000000000000000074
-:1043600000404808000000000000A2D200204411D4
-:10437000000000000000000100504A28000000007A
-:1043800000000002002F02240000000000000000D6
-:104390000CC00000000005B10000A2BF00204411C5
-:1043A000000000000000000000204807000000009E
-:1043B0008100000000204411000000000000000106
-:1043C00000204811000000000004A2BE006044115B
-:1043D0000000068D0000001A0021223000000000BD
-:1043E0000000000600222630000000000004200427
-:1043F000006044110000068D0000A2C60020441198
-:104400000000000000000000003048E9000000004B
-:104410000000000000E00000000005AF0000A2D393
-:104420000020441100000000000000000040480887
-:10443000000000000000A2D3002044110000000092
-:104440000000000100504A28000000000000A2C344
-:104450000020441100000000000000000020480778
-:104460000000000081000000002044110000000056
-:104470000000000100204811000000000004A2C25A
-:10448000006044110000068D0000001A0021223057
-:10449000000000000000000600222630000000009E
-:1044A00000042004006044110000068D0000A2C733
-:1044B000002044110000000000000000003048E926
-:1044C000000000000000000000E00000000005BE49
-:1044D0000000A2D4002044110000000000000000F1
-:1044E00000404808000000000000A2D40020441151
-:1044F000000000000000000100504A2800000000F9
-:1045000085000000002044110000000000000000B1
-:1045100000204801000000000000304A0020441143
-:104520000000000001000000002048110000000011
-:104530000000000000400000000005C4A4000000CE
-:10454000C02044110000000000000000C0404800EE
-:104550000000000000000000C0600000000005C96D
-:1045600000000000C0400400000000010000002C1A
-:1045700000203621000000008100000000204411CE
-:1045800000000000000000060020481100000000AC
-:1045900000000000002F02300000000000000000BA
-:1045A0000CC00000000005D0000000000020041135
-:1045B000000000000000003000403621000005E34C
-:1045C000000000300020062D0000000000007E00EA
-:1045D000002806210000000000000000002F02213A
-:1045E00000000000000000000CE00000000005E3F7
-:1045F00081000000002044110000000000000001C4
-:1046000000204811000000000004A0920060441146
-:104610000000068D00000031002036300000000050
-:104620000004A093006044110000068D00000032D9
-:1046300000203630000000000004A2B600604411E3
-:104640000000068D0000003300203630000000001E
-:104650000004A2BA006044110000068D000000347E
-:1046600000203630000000000004A2BE00604411AB
-:104670000000068D000000350020363000000000EC
-:104680000004A2C2006044110000068D0000003644
-:1046900000203630000000000004200400604411B7
-:1046A0000000068D0001A2A40020441100000000BB
-:1046B0000000003F00204811000000000000003F03
-:1046C00000204811000000000000003F00204811B9
-:1046D000000000000000003F002048110000000022
-:1046E0000000000500204811000000000000A1F4B7
-:1046F00000204411000000000000000000204811CC
-:1047000000000000880000000020441100000000AC
-:10471000000000010020481100000000810000009E
-:104720000020441100000000000000060020481195
-:104730000000000000000001002F02300000000017
-:10474000000000000CE000000000062C000000301B
-:104750000020062D0000000000000000002F0221B4
-:1047600000000000000000000CE000000000062C2B
-:104770008100000000204411000000000000000142
-:10478000002048110000000000007E0000280621E3
-:104790000000000000000000002F022100000000C7
-:1047A000000000000CE00000000006050000A092E0
-:1047B00000204411000000000000003100204A2DBC
-:1047C000000000000000A093002044110000000041
-:1047D0000000003200204A2D000000000000A2B6B8
-:1047E00000204411000000000000003300204A2D8A
-:1047F000000000000000A2BA0020441100000000E8
-:104800000000003400204A2D000000000000A2BE7D
-:1048100000204411000000000000003500204A2D57
-:10482000000000000000A2C20020441100000000AF
-:104830000000003600204A2D00000000000000307B
-:104840000020062D00000000000001FF00280621C6
-:104850000000000000000000002F02210000000006
-:10486000000000000CE000000000062B000000002B
-:1048700000210221000000000000000014C0000020
-:104880000000060E0004A003006044110000068D25
-:104890000000A00300204411000000000000000000
-:1048A0000020481000000000000000010021062147
-:1048B000000000000000000014C00000000006130B
-:1048C0000004A010006044110000068D0000A0103C
-:1048D00000204411000000000000000000204810EB
-:1048E000000000000000000100210621000000007F
-:1048F00000000000002F0221000000000000000066
-:104900000CE000000000062B0004A0110060441120
-:104910000000068D0000A0110020441100000000DE
-:104920000000000000204810000000000004A01259
-:10493000006044110000068D0000A0120020441108
-:1049400000000000000000000020481000000000EF
-:104950000004A013006044110000068D0000A013A5
-:10496000002044110000000000000000002048105A
-:10497000000000000004A014006044110000068D37
-:104980000000A014002044110000000000000000FE
-:1049900000204810000000000004A0150060441131
-:1049A0000000068D0000A01500204411000000004A
-:1049B0000000000000204810000000000004A016C5
-:1049C000006044110000068D0000A0160020441174
-:1049D000000000000000000000204810000000005F
-:1049E0000004A017006044110000068D0000A0170D
-:1049F00000204411000000000000000000204810CA
-:104A00000000000000042004006044110000068D36
-:104A10000000002C0080062D00000000FF000000B8
-:104A20000020441100000000000000000020481198
-:104A300000000000000000010020481100000000FC
-:104A4000000000020080481100000000000000008B
-:104A50000EE000000000063D000000300020062DA2
-:104A600000000000000000020028062100000000F5
-:104A700000000000002F02210000000000000000E4
-:104A80000CE000000000063B810000000020441103
-:104A9000000000000000000100204811000000009C
-:104AA00000042004006044110000068D0000100086
-:104AB00000200811000000000000002B002036221A
-:104AC000000000000000000000600000000006413F
-:104AD0000000000000600000000005C99800000010
-:104AE0000020441100000000000000000080481178
-:104AF0000000000000000000C0600000000006414F
-:104B000000000000C0400400000000010000A2A45A
-:104B10000020441100000000000000220020481185
-:104B20000000000089000000002044110000000087
-:104B300000000001004048110000062D9700000011
-:104B40000020441100000000000000000020481177
-:104B5000000000008A000000002044110000000056
-:104B600000000000004048110000062D0000000079
-:104B7000006000000000065C0000201000204411CE
-:104B8000000000000000800000204811000000002C
-:104B90000001A2A4C0204411000000000000001683
-:104BA000006048110000036E000020100020441136
-:104BB000000000000001000000204811000000007B
-:104BC00081000000002044110000000000000001EE
-:104BD00000204811000000000000217C002044114A
-:104BE00000000000098000000020481100000000C3
-:104BF000FFFFFFFF00204811000000000000000040
-:104C00000020481100000000000000001700000014
-:104C1000000000000004217F006044110000068DA8
-:104C20000000001F00210230000000000000000012
-:104C300014C00000000000000000000400404C11FF
-:104C400000000656000000000040000000000000C8
-:104C50000000001700201E2D0000000000000004CE
-:104C600000291E27000000000000001700803627E2
-:104C7000000000000000001700201E2D00000000B2
-:104C8000FFFFFFFB00281E270000000000000017A8
-:104C900000803627000000000000001700201E2DB5
-:104CA000000000000000000800291E27000000008E
-:104CB00000000017008036270000000000000017E9
-:104CC00000201E2D00000000FFFFFFF700281E2718
-:104CD00000000000000000170080362700000000E0
-:104CE000000020100020441100000000000080009F
-:104CF00000204811000000000001A2A4002044117F
-:104D00000000000000000016006048110000036E63
-:104D100000002010002044110000000000010000ED
-:104D200000204811000000000000217C00204411F8
-:104D30000000000001800000002048110000000079
-:104D4000FFFFFFFF002048110000000000000000EE
-:104D500000204811000000000000000017000000C3
-:104D6000000000008100000000204411000000004D
-:104D70000000000100204811000000000004217F15
-:104D8000006044110000068D0000001F0021023069
-:104D9000000000000000000014C000000000068CAD
-:104DA0000000001000404C110000067200000000DE
-:104DB000C0200400000000000000000038C0000017
-:104DC000000000000000001D00200A2D000000006F
-:104DD0000000001E00200E2D000000000000001F3B
-:104DE0000020122D00000000000000200020162DE1
-:104DF00000000000000021690020441100000000B4
-:104E00000000000000204804000000000000000036
-:104E100000204805000000000000000000204801BC
-:104E200000000000CAFEBABE0020481100000000C9
-:104E30000000000400301224000000000000000008
-:104E4000002F006400000000000000000CC0000003
-:104E50000000068B0000000300281A22000000005A
-:104E6000000000080022122200000000FFFFF000F6
-:104E7000002812240000000000000000002910C4D7
-:104E8000000000000000001F004036240000000069
-:104E90000000000000800000000000000000000092
-:104EA0001AC000000000068D9F0000000020441181
-:104EB00000000000CAFEBABE002048110000000039
-:104EC000000000001AE00000000006900000000052
-:104ED0000080000000000000000000001AC0000078
-:104EE000000006929E000000002044110000000017
-:104EF000CAFEBABE002048110000000000000000F9
-:104F00001AE000000000069500000000008000008C
-:104F10000000000000000000006000000000000B26
-:104F200000001000006004110000031500000000E4
-:104F300000200411000000000000000000600811C3
-:104F4000000001B20000225C0020441100000000BB
-:104F5000000000030020481100000000000022565D
-:104F600000204411000000000000001B0020481138
-:104F7000000000000000A1FC00204411000000001F
-:104F80000000000100204811000000000001A1FD08
-:104F9000C0204411000000000000002100201E2D50
-:104FA000000000000000001000221E27000000008A
-:104FB000000000240020222D000000000000FFFF60
-:104FC00000282228000000000000000000294907F6
-:104FD0000000000000000000002048110000000058
-:104FE000000000220020222D000000000000FFFF32
-:104FF00000282228000000000000000000294907C6
-:105000000000000000000000002048110000000027
-:105010000000002300201E2D0000000000000010F2
-:1050200000221E27000000000000000000294907A0
-:1050300000000000000000000040481100000000D7
-:105040000000000000000000000000000000000060
-:105050000000000000000000000000000000000050
-:105060000000000000000000000000000000000040
-:105070000000000000000000000000000000000030
-:105080000000000000000000000000000000000020
-:105090000000000000000000000000000000000010
-:1050A0000000000000000000000000000000000000
-:1050B00000000000000000000000000000000000F0
-:1050C00000000000000000000000000000000000E0
-:1050D00000000000000000000000000000000000D0
-:1050E00000000000000000000000000000000000C0
-:1050F00000000000000000000000000000000000B0
-:10510000000000000000000000000000000000009F
-:10511000000000000000000000000000000000008F
-:10512000000000000000000000000000000000007F
-:10513000000000000000000000000000000000006F
-:10514000000000000000000000000000000000005F
-:10515000000000000000000000000000000000004F
-:10516000000000000000000000000000000000003F
-:10517000000000000000000000000000000000002F
-:10518000000000000000000000000000000000001F
-:10519000000000000000000000000000000000000F
-:1051A00000000000000000000000000000000000FF
-:1051B00000000000000000000000000000000000EF
-:1051C00000000000000000000000000000000000DF
-:1051D00000000000000000000000000000000000CF
-:1051E00000000000000000000000000000000000BF
-:1051F00000000000000000000000000000000000AF
-:10520000000000000000000000000000000000009E
-:10521000000000000000000000000000000000008E
-:10522000000000000000000000000000000000007E
-:10523000000000000000000000000000000000006E
-:10524000000000000000000000000000000000005E
-:10525000000000000000000000000000000000004E
-:10526000000000000000000000000000000000003E
-:10527000000000000000000000000000000000002E
-:10528000000000000000000000000000000000001E
-:10529000000000000000000000000000000000000E
-:1052A00000000000000000000000000000000000FE
-:1052B0000142050205C002500000000001C3016860
-:1052C000043F05C000000000022502090250015100
-:1052D000000000000223024502A00241000000007D
-:1052E00003D705C005C005C0000000000649064AF6
-:1052F000031F05C00000000005C005C503200340D2
-:1053000000000000032A0282034203340000000070
-:1053100005C005C005C005C00000000005C005515E
-:1053200005C005C00000000003BA05C004BB03446B
-:1053300000000000049A0450043D05C00000000075
-:1053400004D005C0044104DD00000000045005073E
-:10535000035103750000000005C005C005C005C06D
-:105360000000000005C005C005C005C00000000029
-:1053700005C005C0063F05C70000000005C005C008
-:10538000000705C00000000005C005C005C005C03D
-:105390000000000005C005C005C005C000000000F9
-:1053A00003F803ED0408040600000000040E040ADC
-:1053B000040C041000000000041C04180424042041
-:1053C00000000000042C0428043404300000000015
-:1053D00005C005C0043805C00000000005C005C0B8
-:1053E00005C005C00000000005C005C005C005C01F
-:1053F0000000000000020679069700060000000089
-:00000001FF
diff --git a/firmware/radeon/RV620_pfp.bin.ihex b/firmware/radeon/RV620_pfp.bin.ihex
deleted file mode 100644
index f55292c97b79..000000000000
--- a/firmware/radeon/RV620_pfp.bin.ihex
+++ /dev/null
@@ -1,145 +0,0 @@
-:1000000000CA040000A00000007E828B007C038BED
-:10001000008001B8007C038B00D4401E00EE001E5F
-:1000200000CA040000A00000007E828B00C41838C3
-:1000300000CA240000CA2800009581A800C41C3A08
-:1000400000C3C00000CA080000CA0C00007C744B4A
-:1000500000C200050099C00000C41C3A007C744C2A
-:1000600000C0FFF000042C0400309002007D250049
-:1000700000351402007D350B00255403007CD5802B
-:1000800000259C030095C00400D5001B007EDDC147
-:10009000007D9D8000D6801B00D5801B00D4401EB3
-:1000A00000D5401E00D6401E00D6801E00D4801E03
-:1000B00000D4C01E009783D300D5C01E00CA08001C
-:1000C0000080001A00CA0C0000E4011E00D4001ECB
-:1000D0000080000C00C4183800E4013E00D4001E6B
-:1000E0000080000C00C4183800D4401E00EE001E32
-:1000F00000CA040000A00000007E828B00E4011E04
-:1001000000D4001E00D4401E00EE001E00CA0400F1
-:1001100000A00000007E828B00E4013E00D4001E9F
-:1001200000D4401E00EE001E00CA040000A0000023
-:10013000007E828B00CA180000D4401E00D5801EAD
-:100140000080005300D4007500D4401E00CA08008F
-:1001500000CA0C0000CA100000D4801900D4C018D6
-:1001600000D5001700D4801E00D4C01E00D5001E8C
-:1001700000E2001E00CA040000A00000007E828B86
-:1001800000CA080000D4806000D4401E0080000037
-:1001900000D4801E00CA080000D4806100D4401E34
-:1001A0000080000000D4801E00CA080000CA0C00B5
-:1001B00000D4401E00D4801600D4C01600D4801E87
-:1001C000008001B800D4C01E00C6084300CA0C005D
-:1001D00000CA10000094800400CA140000E420F358
-:1001E00000D4201300D5606500D4E01C00D5201C8D
-:1001F00000D5601C008000000006200100C60843F6
-:1002000000CA0C0000CA1000009483F700CA140052
-:1002100000E420F30080007900D4201300C60843D6
-:1002200000CA0C0000CA1000009883EF00CA140036
-:1002300000D400640080008D0000000000C414326F
-:1002400000C6184300C4082F0095400500C40C30B8
-:1002500000D4401E0080000000EE001E009583F5D3
-:1002600000C4103100D4403300D5206500D4A01C58
-:1002700000D4E01C00D5201C00E4015E00D4001E68
-:10028000008000000006200100CA1800000A2001BA
-:1002900000D6007600C408360098800700C61045D6
-:1002A0000095011000D4001F00D46062008000009F
-:1002B00000D4206200CC383500CC1433008401BB5C
-:1002C00000D4007200D5401E0080000000EE001E29
-:1002D00000E2001A008401BB00E2001A00CC104BBF
-:1002E00000CC0447002C9401007D098B0098400548
-:1002F000007D15CB00D4001A008001B800D4006D39
-:100300000034440100CC0C480098403A00CC2C4A00
-:100310000095800400CC0449008001B800D4001A84
-:1003200000D4C01A00282801008400F000CC10037B
-:100330000098801B0004380C008400F000CC1003EF
-:100340000098801700043808008400F000CC1003E7
-:100350000098801300043804008400F000CC1003DF
-:100360000098801400CC104C009A800900CC144DE9
-:10037000009840DC00D4006D00CC184800D5001A6D
-:1003800000D5401A008000C900D5801A0096C0D55B
-:1003900000D4006D008001B800D4006E009AC00344
-:1003A00000D4006D00D4006E0080000000EC007FDF
-:1003B000009AC0CC00D4006D008001B800D4006E5B
-:1003C00000CC140300CC180300CC1C03007D910367
-:1003D000007DD583007D190C0035CC1F0035701FC2
-:1003E000007CF0CB007CD08B00880000007E8E8BE0
-:1003F0000095C00400D4006E008001B800D4001A3B
-:1004000000D4C01A00CC080300CC0C0300CC1003AD
-:1004100000CC140300CC180300CC1C0300CC240334
-:1004200000CC28030035C41F0036B01F007C704B81
-:100430000034F01F007C704B0035701F007C704B47
-:10044000007D8881007DCCC1007E5101007E9541F8
-:10045000007C9082007CD4C2007C848B009AC00314
-:10046000007C8C8B002C88010098809E00D4006D4D
-:100470000098409C00D4006E00CC084C00CC0C4D81
-:1004800000CC104800D4801A00D4C01A00800101AA
-:1004900000D5001A00CC083200D40032009482D972
-:1004A00000CA0C0000D4401E0080000000D4001ED2
-:1004B00000E4011E00D4001E00CA080000CA0C009F
-:1004C00000CA100000D4401E00CA140000D4801ED0
-:1004D00000D4C01E00D5001E00D5401E00D54034FB
-:1004E0000080000000EE001E0028040400E2001A54
-:1004F00000E2001A00D4401A00CA380000CC0803F9
-:1005000000CC0C0300CC0C0300CC0C03009882BD83
-:1005100000000000008401BB00D7A06F0080000035
-:1005200000EE001F00CA040000C2FF0000CC083427
-:1005300000C13FFF007C74CB007CC90B007D010F24
-:10054000009902B0007C738B008401BB00D7A06FC0
-:100550000080000000EE001F00CA080000281900FB
-:10056000007D898B009580140028140400CA0C00BB
-:1005700000CA100000CA1C0000CA240000E2001FCC
-:1005800000D4C01A00D5001A00D5401A00CC1803B8
-:1005900000CC2C0300CC2C0300CC2C03007DA58BBD
-:1005A000007D9C4700984297000000000080016198
-:1005B00000D4C01A00D4401E00D4801E0080000069
-:1005C00000EE001E00E4011E00D4001E00D4401EF8
-:1005D00000EE001E00CA040000A00000007E828B16
-:1005E00000E4013E00D4001E00D4401E00EE001EB8
-:1005F00000CA040000A00000007E828B00CA080030
-:1006000000248C06000CCC060098C00600CC104ECE
-:100610000099000400D4007300E4011E00D4001E01
-:1006200000D4401E00D4801E0080000000EE001E9A
-:1006300000CA080000CA0C000034D01800251001C0
-:100640000095002100C17FFF00CA100000CA1400FD
-:1006500000CA180000D4801D00D4C01D007DB18BDD
-:1006600000C1420200C2C00100D5801D0034DC0E72
-:10067000007D5D4C007F734C00D7401E00D5001EEE
-:1006800000D5401E00C1420000C2C00000099C010C
-:100690000031DC10007F5F4C007F734C00042802A7
-:1006A000007D838000D5A86F00D5806600D7401EEE
-:1006B00000EC005E00C8240200C82402008001B8DB
-:1006C00000D6007600D4401E00D4801E00D4C01E88
-:1006D0000080000000EE001E0080000000EE001F01
-:1006E00000D4001F0080000000D4001F00D4001FB1
-:1006F0000088000000D4001F00000000000000007F
-:1007000000000000000000000000000000000000E9
-:1007100000000000000000000000000000000000D9
-:1007200000000000000000000000000000000000C9
-:1007300000000000000000000000000000000000B9
-:1007400000000000000000000000000000000000A9
-:100750000000000000000000000000000000000099
-:100760000000000000000000000000000000000089
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B0000000000000000000000000000000000039
-:1007C0000000000000000000000000000000000029
-:1007D0000000000000000000000000000000000019
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:1008000000010171000201780003008F0004007FE5
-:10081000000500030006003F000700320008012C1D
-:1008200000090046000A0036001001B6001700A2B9
-:100830000022013A00230149002000B400240125D0
-:100840000027004D0028006A002A0060002B00529B
-:10085000002F0065003200870034017F003C015604
-:10086000003F00720041018C0044012E00550173CD
-:100870000056017A0060000B00610034006200380D
-:1008800000630038006400380065003800660038F6
-:10089000006700380068003A00690041006A0048BB
-:1008A000006B0048006C0048006D0048006E004876
-:1008B000006F00480000000600000006000000066F
-:1008C0000000000600000006000000060000000610
-:1008D0000000000600000006000000060000000600
-:1008E00000000006000000060000000600000006F0
-:1008F00000000006000000060000000600000006E0
-:00000001FF
diff --git a/firmware/radeon/RV630_me.bin.ihex b/firmware/radeon/RV630_me.bin.ihex
deleted file mode 100644
index ba3a7e632d97..000000000000
--- a/firmware/radeon/RV630_me.bin.ihex
+++ /dev/null
@@ -1,1345 +0,0 @@
-:1000000000000000C020040000000000000000000C
-:1000100000A0000A000000000000FFFF00284621A9
-:100020000000000000000000D900480000000000AF
-:1000300000000000C02004000000000000000000DC
-:1000400000A0000A000000000000000000E0000026
-:100050000000000000010000C02946200000000050
-:1000600000000000D900480000000000000000006F
-:10007000C0200400000000000000000000A0000AF2
-:10008000000000008100000000204411000000007A
-:1000900000000001002048110000000000042004BE
-:1000A000006044110000068A0000000000600000AB
-:1000B0000000062E00000000006000000000064264
-:1000C00000000000C02008000000000000000F0039
-:1000D000002816220000000000000008002116255C
-:1000E000000000000000001800203625000000007D
-:1000F0008D000000002044110000000000000004FA
-:10010000002F022500000000000000000CE00000AD
-:1001100000000018004120000040481100000019B4
-:100120000042200000204811000000008E00000066
-:1001300000204411000000000000002800204A2D8B
-:1001400000000000900000000020441100000000AA
-:100150000000000000204805000000000000000C26
-:1001600000211622000000000000000300281625D0
-:10017000000000000000001900211A220000000009
-:100180000000000400281A26000000000000000003
-:10019000002914C5000000000000001900203625C9
-:1001A0000000000000000000003A140200000000FF
-:1001B00000000016002116250000000000000003CA
-:1001C00000281625000000000000001700200E2D5A
-:1001D00000000000FFFFFFFC00280E2300000000CD
-:1001E00000000000002914A3000000000000001718
-:1001F00000203625000000000000800000280E22AC
-:10020000000000000000000700220E230000000094
-:10021000000000000029386E0000000020000000EF
-:1002200000280E22000000000000000600210E231E
-:1002300000000000000000000029386E00000000EF
-:100240000000000000220222000000000000000068
-:1002500014E0000000000038000000002EE0000064
-:1002600000000035000000002CE000000000003716
-:100270000000000000400E2D0000003900000008C2
-:1002800000200E2D00000000000000090040122D8B
-:10029000000000460000000100400E2D0000003963
-:1002A00000000000C0200C0000000000003FFFFC28
-:1002B0000028122300000000000000020022122487
-:1002C000000000000000001F00211E2300000000AD
-:1002D0000000000014E000000000003E00000008E4
-:1002E00000401C11000000410000000D00201E2DE8
-:1002F000000000000000000F00281E270000000082
-:100300000000000300221E27000000007FC0000044
-:1003100000281A23000000000000001400211A2603
-:10032000000000000000000100331A260000000059
-:100330000000000800221A26000000000000000053
-:1003400000290CC700000000000000270020362410
-:100350000000000000007F000028122100000000C3
-:1003600000001400002F0224000000000000000024
-:100370000CE000000000004B0000000100290E23EB
-:10038000000000000000000E0020362300000000E6
-:100390000000E0000020441100000000FFF8000011
-:1003A00000294A230000000000000000003A2C024F
-:1003B000000000000000000200220E2B00000000E0
-:1003C000FC00000000280E23000000000000000FC9
-:1003D000002036230000000000001FFF00294A23F0
-:1003E000000000000000002700204A2D000000004F
-:1003F000000000000020481100000000000000295B
-:1004000000200E2D00000000060A020000294A23E9
-:100410000000000000000000002048110000000063
-:100420000000000000204811000000000000000152
-:1004300000210222000000000000000014E0000083
-:1004400000000061000000002EE000000000005FDE
-:10045000000000002CE000000000005E0000000032
-:1004600000400E2D000000620000000100400E2D33
-:10047000000000620000000A00200E2D00000000B5
-:100480000000000B0040122D0000006A0000000078
-:10049000C0200C0000000000003FFFFC00281223D9
-:1004A00000000000000000020022122400000000F2
-:1004B0007FC0000000281623000000000000001488
-:1004C0000021162500000000000000010033162561
-:1004D000000000008000000000280E230000000043
-:1004E0000000000000290CA3000000003FFFFC00FA
-:1004F00000290E23000000000000001F00211E2321
-:10050000000000000000000014E000000000006D8A
-:100510000000010000401C11000000700000000DF0
-:1005200000201E2D00000000000000F000281E2703
-:10053000000000000000000400221E270000000050
-:100540008100000000204411000000000000000DA8
-:100550000020481100000000FFFFF0FF00281A30C3
-:10056000000000000000A02800204411000000004E
-:1005700000000000002948E6000000000000A0186C
-:1005800000204411000000003FFFFFFF00284A2325
-:10059000000000000000A010002044110000000036
-:1005A00000000000002048040000000000000030AF
-:1005B0000020162D00000000000000020029162572
-:1005C0000000000000000030002036250000000080
-:1005D000000000250020162D000000000000000093
-:1005E000002F00A300000000000000000CC000006D
-:1005F00000000083000000260020162D00000000EF
-:1006000000000000002F00A4000000000000000017
-:100610000CC000000000008400000000004000004A
-:100620000000008A000000250020362300000000A2
-:100630000000002600203624000000000000001703
-:1006400000201E2D000000000000000200210227F3
-:10065000000000000000000014E000000000008A1C
-:1006600000000000006000000000066500000000BF
-:1006700000600000000006590000000200210E2268
-:10068000000000000000000014C000000000008D09
-:1006900000000012C040362000000093000000005F
-:1006A0002EE0000000000091000000002CE000009F
-:1006B000000000900000000200400E2D000000929B
-:1006C0000000000300400E2D000000920000000C0E
-:1006D00000200E2D00000000000000120020362334
-:1006E000000000000000000300210E2200000000B6
-:1006F0000000000014C00000000000980000A00CE2
-:10070000002044110000000000000000C02048004C
-:100710000000000000000000C0404800000000A0F1
-:100720000000A00C002044110000000000000000A8
-:100730000020481100000000000000002EE0000032
-:100740000000009E000000002CE000000000009D62
-:100750000000000200400E2D0000009F000000037A
-:1007600000400E2D0000009F0000000C00200E2D08
-:10077000000000000000000000204803000000000E
-:1007800000000000003A0C0200000000003F0000E2
-:1007900000280E23000000000000001000210E239E
-:1007A00000000000000000110020362300000000BF
-:1007B0000000001E0021022B0000000000000000CD
-:1007C00014C00000000000A700000016C020362062
-:1007D000000000000000001F0021022B00000000AC
-:1007E0000000000014C00000000000AA0000001576
-:1007F000C0203620000000000000000800210E2B61
-:10080000000000000000007F00280E230000000010
-:1008100000000000002F0223000000000000000084
-:100820000CE00000000000E10000000027000000D4
-:10083000000000000000000000600000000002A3B3
-:1008400000000001002F0223000000000000000053
-:100850000AE00000000000B300000000006000009B
-:100860000000013A81000000002044110000000057
-:100870000000000600204811000000000000000CED
-:1008800000221E300000000099800000002044116A
-:1008900000000000000000040020122D00000000F5
-:1008A00000000008002212240000000000000010D8
-:1008B00000201811000000000000000000291CE4C6
-:1008C0000000000000000000006048070000012F49
-:1008D0009B00000000204411000000000000000008
-:1008E00000204802000000009C000000002044118D
-:1008F00000000000000000000033146F0000000042
-:100900000000000100333E23000000000000000052
-:10091000D9004800000000000000000000203C0555
-:1009200000000000810000000020441100000000D1
-:100930000000000E00204811000000000000000030
-:1009400000201010000000000000E007002044110B
-:10095000000000000000000F0021022B000000003A
-:100960000000000014C00000000000CB00F8FF08E9
-:1009700000204811000000009800000000404811CD
-:10098000000000DC000000F000280E220000000043
-:10099000000000A0002F0223000000000000000063
-:1009A0000CC00000000000DA0000001100200E2D35
-:1009B0000000000000000001002F022300000000E2
-:1009C000000000000CE00000000000D50000000264
-:1009D000002F022300000000000000000CE00000D7
-:1009E000000000D400003F0000400C11000000D6C1
-:1009F00000001F0000400C11000000D600000F0096
-:100A000000200C11000000000038000900294A23D2
-:100A1000000000003F00000000280E2B0000000036
-:100A20000000000200220E2300000000000000076A
-:100A300000494A23000000DC00380F09002048115B
-:100A400000000000680000070020481100000000BE
-:100A50000000000800214A270000000000000000FC
-:100A60000020481100000000060A020000294A2464
-:100A700000000000000000000020481100000000FD
-:100A80000000000000204811000000000000A20249
-:100A9000002044110000000000FF000000280E228A
-:100AA000000000000000008000294A230000000030
-:100AB0000000002700200E2D00000000000000268E
-:100AC0000020122D0000000000000000002F008315
-:100AD00000000000000000000CE00000000000EA40
-:100AE00000000000006000000000065F0000000041
-:100AF00000400000000000EB00000000006000006B
-:100B000000000662000000070020222D0000000007
-:100B10000000000500220E2200000000001000006E
-:100B200000280E23000000000000000000292068BB
-:100B30000000000000000000003A0C02000000006D
-:100B4000000000EF00280E2300000000000000005D
-:100B500000292068000000000000001700200E2D72
-:100B6000000000000000000300210223000000003C
-:100B70000000000014E00000000000F80000000B7E
-:100B800000210228000000000000000014C0000046
-:100B9000000000F8000004000029222800000000E6
-:100BA0000000001400203628000000000000001C97
-:100BB00000210E22000000000000000014C0000010
-:100BC000000000FD0000A30C002044110000000004
-:100BD0000000000000204811000000000000001E7E
-:100BE00000210E22000000000000000014C00000E0
-:100BF0000000010B0000A30F0020441100000000C2
-:100C00000000001100200E2D000000000000000177
-:100C1000002F022300000000000000000CC00000B4
-:100C200000000104FFFFFFFF004048110000010B1E
-:100C300000000002002F022300000000000000005E
-:100C40000CC00000000001070000FFFF0040481139
-:100C50000000010B00000004002F02230000000030
-:100C6000000000000CC000000000010A000000FFAE
-:100C7000004048110000010B000000010020481155
-:100C8000000000000002C400002044110000000029
-:100C90000000001F00210E220000000000000000E4
-:100CA00014C00000000001120000001040210E20BE
-:100CB00000000000000000130020362300000000A8
-:100CC0000000001840224A20000000000000001030
-:100CD000C0424A20000001140000000000200C1156
-:100CE0000000000000000013002036230000000078
-:100CF000000000000020481100000000000000007B
-:100D000000204811000000000000000A002010111F
-:100D10000000000000000000002F0224000000007E
-:100D2000000000000CE000000000011B00000000BB
-:100D300000204811000000000000000100531224B0
-:100D400000000117FFBFFFFF00283A2E000000003F
-:100D50000000001B00210222000000000000000033
-:100D600014C000000000012E81000000002044118A
-:100D7000000000000000000D0020481100000000ED
-:100D80000000001800220E3000000000FC000000EF
-:100D900000280E2300000000810000000020441104
-:100DA000000000000000000E0020481100000000BC
-:100DB0000000000000201010000000000000E00E05
-:100DC000002044110000000007F8FF08002048112F
-:100DD000000000000000000000294A23000000007D
-:100DE0000000001C00201E2D000000000000000874
-:100DF00000214A27000000000000000000204811E8
-:100E000000000000060A020000294A240000000039
-:100E10000000000000204811000000000000000059
-:100E200000204811000000000000000000800000C9
-:100E300000000000810000000020441100000000BC
-:100E40000000000100204811000000000000217C8B
-:100E50000020441100000000008000000020481124
-:100E60000000000000000000002048060000000014
-:100E70000000000800214A270000000000000000D8
-:100E800017000000000000000004217F00604411F2
-:100E90000000068A0000001F002102300000000050
-:100EA0000000000014C000000000068900000004DB
-:100EB00000404C1100000135810000000020441169
-:100EC00000000000000000010020481100000000A8
-:100ED000000021F800204411000000000000001C68
-:100EE0000020481100000000000421F900604411B6
-:100EF0000000068A000000110021023000000000FE
-:100F00000000000014E000000000013C00000000B0
-:100F100000800000000000000000000000600000F1
-:100F20000000000B00000000006004110000031529
-:100F3000000000000020041100000000000000007C
-:100F400000600811000001B2000000000060000015
-:100F5000000001600000FFFF40280E20000000009C
-:100F600000000010C0211220000000000000FFFF60
-:100F7000402806200000000000000010C0210A20C8
-:100F800000000000000000000034146100000000B8
-:100F90000000000000741882000002BB0001A1FDE7
-:100FA00000604411000002E000003FFF002F022F0C
-:100FB00000000000000000000CC00000000001471D
-:100FC00000000000C040040000000001000000001C
-:100FD000006000000000000B000000000060041131
-:100FE00000000315000000000020041100000000B4
-:100FF0000000000000600811000001B200003FFF87
-:10100000002F022F00000000000000000CE0000094
-:10101000000000000000000000600000000001600F
-:101020000000001040210E20000000000000FFFF23
-:10103000C0281220000000000000001040211620EF
-:10104000000000000000FFFFC0681A20000002BB83
-:101050000001A1FD00604411000002E000003FFF1C
-:10106000002F022F00000000000000000CC0000054
-:101070000000015800000000C04004000000000112
-:101080000000225C0020441100000000000000016C
-:1010900000300A2F000000000000000100210A2299
-:1010A000000000000000000300384A220000000099
-:1010B0000000225600204411000000000000001A29
-:1010C00000204811000000000000A1FC0020441195
-:1010D0000000000000000001008048110000000036
-:1010E00000000000006000000000000B0000000095
-:1010F000006000000000018F0000000000600000A0
-:10110000000001A000003FFF002F022F00000000A0
-:10111000000000000CE000000000000000000000E3
-:1011200000202C0800000000000000000020241116
-:101130000000000000000000002028110000000056
-:10114000000022560020441100000000000000169C
-:1011500000204811000000000000225C0020441123
-:101160000000000000000003002048110000000003
-:1011700093800000002044110000000000000002E5
-:1011800000221E290000000000000000007048EB53
-:101190000000019C0000000000600000000002BB95
-:1011A00000000001403306200000000000000000A5
-:1011B000C03024090000000000003FFF002F022F74
-:1011C00000000000000000000CE000000000000033
-:1011D0000000000000600000000002A3000000000A
-:1011E000002F022100000000000000000AE00000C3
-:1011F0000000018100000000006000000000013AD2
-:101200000000000000400000000001869500000082
-:10121000002044110000000000000000002F022107
-:1012200000000000000000000CE00000000001864B
-:1012300000000000C0204800000000000000000185
-:10124000005306210000018292000000002044119A
-:101250000000000000000000C0604800000001978E
-:101260000001A1FD00204411000000000000001159
-:101270000020062D00000000000000000078042A75
-:10128000000002FB00000000002028090000000010
-:1012900000003FFF002F022F0000000000000000B0
-:1012A0000CC000000000017400000000C0400400F9
-:1012B000000000010000021000600411000003158E
-:1012C00000003FFF002F022F000000000000000080
-:1012D0000CE000000000019400000015C020362042
-:1012E0000000000000000016C020362000000000B2
-:1012F0003F800000002004110000000046000000B4
-:1013000000600811000001B2000000000080000031
-:10131000000000000000A1FC0020441100000000BB
-:1013200000003FFF002F022F00000000000000001F
-:101330000CC000000000019B00000001008048116B
-:1013400000000000000000210080481100000000A3
-:101350000000FFFF40280E200000000000000010E9
-:10136000C0211220000000000000FFFF40281620CE
-:101370000000000000000010C0811A2000000000E2
-:101380008100000000204411000000000000000661
-:1013900000204811000000000000000800221E305C
-:1013A000000000000000002900201A2D00000000AD
-:1013B0000000E0000020441100000000FFFBFF09D6
-:1013C00000204811000000000000000F0020222D26
-:1013D0000000000000001FFF00294A280000000054
-:1013E000000000060020222D000000000000000088
-:1013F000002920E80000000000000000002048084C
-:101400000000000000000000002048110000000063
-:10141000060A020000294A26000000000000000021
-:1014200000204811000000000000000000204811CA
-:101430000000000000000100002018110000000062
-:101440000000000800621E280000012F00000008B4
-:1014500000822228000000000002C0000020441189
-:10146000000000000000001500600E2D000001BD0E
-:101470000000001600600E2D000001BD0000C00835
-:1014800000204411000000000000001700200E2D75
-:10149000000000000000000014C00000000001B9BE
-:1014A0000000000000200411000000000000000007
-:1014B0000020480100000000390000000020481111
-:1014C00000000000000000000020481100000000A3
-:1014D000000000000080480200000000000000182A
-:1014E00000202E2D0000000000000000003B0D63D6
-:1014F000000000000000000800224A230000000055
-:101500000000001000224A23000000000000001824
-:1015100000224A2300000000000000000080480371
-:101520000000000000000000006000000000000B50
-:10153000000010000060041100000315000000000E
-:1015400000200411000000000000000000600811ED
-:10155000000001B2000000070021062F000000007B
-:101560000000001300200A2D000000000000000110
-:1015700000202C11000000000000FFFF4028222066
-:10158000000000000000000F0026222800000000DC
-:101590000000001040212620000000000000000F85
-:1015A000002626290000000000000000002028027C
-:1015B000000000000000225600204411000000003E
-:1015C0000000001B00204811000000000000000087
-:1015D000002F022100000000000000000CE00000CD
-:1015E000000001E00000225C002044110000000027
-:1015F0000000008100204811000000000000A1FC54
-:1016000000204411000000000000000100204811EB
-:10161000000000000000008000201C1100000000FD
-:1016200000000000002F0227000000000000000062
-:101630000CE00000000001DC000000000060000081
-:10164000000001E90000000100531E27000001D83E
-:101650000000000100202C11000000000000001F0D
-:1016600000280A22000000000000001F00282A2A8B
-:10167000000000000000000100530621000001D11D
-:101680000000225C00204411000000000000000265
-:1016900000304A2F000000000000A1FC002044118F
-:1016A00000000000000000010020481100000000C0
-:1016B0000000000100301E2F0000000000000000AC
-:1016C000002F022700000000000000000CE00000D6
-:1016D000000000000000000000600000000001E9C0
-:1016E0000000000100531E27000001E50000FFFF7D
-:1016F00040280E20000000000000000F00260E23EE
-:101700000000000000000010C021122000000000B6
-:101710000000000F0026122400000000000000005E
-:1017200000201411000000000000000000601811EB
-:10173000000002BB0001A1FD0020441100000000D8
-:1017400000000000002F022B00000000000000003D
-:101750000CE00000000001F8000000100022162834
-:1017600000000000FFFF0000002816250000000018
-:101770000000FFFF00281A29000000000000000000
-:10178000002948C500000000000000000020480AB1
-:10179000000000000000000000202C1100000000EC
-:1017A000000000100022162300000000FFFF0000D0
-:1017B00000281625000000000000FFFF00281A2462
-:1017C0000000000000000000002948C500000000E3
-:1017D0000000000000731503000002050000000077
-:1017E0000020180500000000000000000073152410
-:1017F0000000020500000000002D14C500000000DC
-:1018000000000000003008A20000000000000000FE
-:101810000020480200000000000000000020280214
-:101820000000000000000000002020030000000075
-:101830000000000000802404000000000000000FF1
-:1018400000210225000000000000000014C000007C
-:101850000000068900000000002B140500000000B5
-:1018600000000001009016250000000000000000AC
-:10187000006000000000000B000000000060041188
-:10188000000003150000000000200411000000000B
-:101890000000000000600811000001B200002256A4
-:1018A00000204411000000000000001A00294A2214
-:1018B0000000000000000000C02000000000000048
-:1018C00000003FFF002F022F00000000000000007A
-:1018D0000CE000000000000000000000C020040038
-:1018E000000000000000225C002044110000000005
-:1018F0000000000300384A21000000000000A1FCA5
-:1019000000204411000000000000000100204811E8
-:10191000000000000000FFFF40281220000000002F
-:1019200000000010C0211A20000000000000FFFF8E
-:1019300040280E200000000000000010C0211620EA
-:10194000000000000000000000741465000002BBED
-:101950000001A1FD00604411000002E00000000150
-:10196000003306210000000000000000002F0221CB
-:1019700000000000000000000CC000000000021980
-:1019800000003FFF002F022F0000000000000000B9
-:101990000CC000000000021200000000C040040063
-:1019A000000000010000000000600000000006428E
-:1019B000000000000040040F0000021300000000BF
-:1019C000006000000000062E000000000060000023
-:1019D0000000064200000210006004110000031520
-:1019E0000000000000600000000001A000000000F6
-:1019F000006000000000019C00000000006000008A
-:101A0000000002BB0000000000600000000002A314
-:101A1000938000000020441100000000000000003E
-:101A2000002048080000000000000000002F022FE6
-:101A300000000000000000000AE000000000023288
-:101A400000000000006000000000013A00000000FB
-:101A50000040000000000236950000000020441104
-:101A60000000000000000000002F022F0000000016
-:101A7000000000000CE00000000002360000000042
-:101A8000C0404800000002339200000000204411D2
-:101A90000000000000000000C0204800000000001E
-:101AA0000000225600204411000000000000001633
-:101AB00000204811000000000000225C00204411BA
-:101AC000000000000000000300204811000000009A
-:101AD0000000A1FC002044110000000000000001F3
-:101AE00000204811000000000001A1FD0020441169
-:101AF000000000000000000000600411000002FB74
-:101B000000000000C04004000000000100000000D0
-:101B1000006000000000062E0000A00C0020441110
-:101B20000000000000000000C0204800000000008D
-:101B300000000000C040480000000000000000005D
-:101B4000006000000000000B0000001840210A2087
-:101B50000000000000000003002F0222000000002F
-:101B6000000000000AE000000000024C0000001429
-:101B70000020222D00000000000801010029222879
-:101B800000000000000000140020362800000000C3
-:101B90000000A30C00204411000000000000000021
-:101BA000C02048000000000000000000C0204800E5
-:101BB0000000000000000000C0404800000002518A
-:101BC00000000000006000000000000B000000109A
-:101BD00000600411000003153F8000000020041184
-:101BE000000000000000000000600811000001B2C9
-:101BF0000000225C002044110000000000000003EF
-:101C000000204811000000000000000000600000FB
-:101C10000000027C0000001700201E2D00000000C4
-:101C20000000000100211E2700000000000000004D
-:101C300014E000000000026A0000001200201E2DC7
-:101C4000000000000000FFFF00281E270000000029
-:101C50000000000000341C2700000000000000000D
-:101C600012C000000000025F0000000000201C11F4
-:101C70000000000000000000002F00E50000000050
-:101C80000000000008C00000000002620000000028
-:101C900000201407000000000000001200201E2D8C
-:101CA000000000000000001000211E2700000000BE
-:101CB0000000000000341C4700000000000000008D
-:101CC00012C00000000002670000000000201C118C
-:101CD0000000000000000000002F00E600000000EF
-:101CE0000000000008C000000000026A00000000C0
-:101CF0000020180700000000000000000060000045
-:101D0000000002C100002256002044110000000023
-:101D1000000000000034202300000000000000004C
-:101D200012C00000000002720000000000342044D5
-:101D3000000000000000000012C00000000002715E
-:101D40000000001600404811000002760000001854
-:101D500000404811000002760000000000342044DA
-:101D6000000000000000000012C00000000002752A
-:101D70000000001700404811000002760000001922
-:101D800000204811000000000000A1FC00204411C8
-:101D900000000000000000010020481100000000C9
-:101DA0000001A1FD00604411000002E900003FFFB6
-:101DB000002F022F00000000000000000CC00000F7
-:101DC0000000025600000000C040040000000001B6
-:101DD0000000001040210620000000000000FFFF6E
-:101DE000C0280A20000000000000001040210E2042
-:101DF000000000000000FFFFC028122000000000CB
-:101E00000000001040211620000000000000FFFF2D
-:101E1000C0881A200000000081000000002044114A
-:101E20000000000000000001002048110000000038
-:101E300000042004006044110000068A0000000035
-:101E4000006000000000062E00000000C0600000DE
-:101E5000000002A30000000500200A2D0000000081
-:101E60000000000800220A22000000000000002BF1
-:101E700000201A2D000000000000001C00201E2D74
-:101E8000000000000000700000281E270000000075
-:101E90000000000000311CE6000000000000002AE5
-:101EA00000201A2D000000000000000C00221A265D
-:101EB0000000000000000000002F00E6000000000D
-:101EC0000000000006E00000000002920000000098
-:101ED00000201C11000000000000000000200C1178
-:101EE000000000000000002B00203623000000004E
-:101EF0000000001000201811000000000000000089
-:101F000000691CE20000012F9380000000204411B2
-:101F10000000000000000000002048070000000052
-:101F200095000000002044110000000000000000A7
-:101F3000002F022F00000000000000000CE0000055
-:101F40000000029D0000000100333E2F0000000051
-:101F500000000000D90048000000000092000000CE
-:101F6000002044110000000000000000C0204800D4
-:101F7000000000000000001C0040362700000000A8
-:101F80000000000CC0220A20000000000000002910
-:101F9000002036220000000000000028C04036204B
-:101FA000000000000000A2A4002044110000000076
-:101FB000000000090020481100000000A1000000FE
-:101FC00000204411000000000000000100804811C2
-:101FD000000000000000002100201E2D0000000075
-:101FE00000000000002C1CE30000000000000021A5
-:101FF00000203627000000000000002200201E2DD7
-:102000000000000000000000002C1CE400000000A4
-:1020100000000022002036270000000000000023FE
-:1020200000201E2D0000000000000000003120A351
-:102030000000000000000000002D1D07000000004F
-:1020400000000023002036270000000000000024CC
-:1020500000201E2D0000000000000000003120C400
-:102060000000000000000000002D1D07000000001F
-:10207000000000240080362700000000000000213E
-:10208000002036230000000000000022002036243B
-:10209000000000000000000000311CA30000000050
-:1020A0000000002300203627000000000000000090
-:1020B00000311CC40000000000000024008036270E
-:1020C000000000000000001A002036270000000079
-:1020D0000000001B00203628000000000000001750
-:1020E00000201E2D00000000000000020021022739
-:1020F000000000000000000014C00000000002DC2E
-:102100000000000000400000000002D90000001A9A
-:1021100000203627000000000000001B00203628A9
-:10212000000000000000001700201E2D000000002D
-:102130000000000200210227000000000000000053
-:1021400014E00000000002D9000000030021022773
-:10215000000000000000000014E00000000002DCAD
-:102160000000002300201E2D0000000000000000E1
-:10217000002E00E1000000000000000002C000008E
-:10218000000002DC0000002100201E2D00000000E5
-:1021900000000000003120A100000000000000004D
-:1021A000002E00E8000000000000000006C0000053
-:1021B000000002DC0000002400201E2D00000000B2
-:1021C00000000000002E00E20000000000000000FF
-:1021D00002C00000000002DC0000002200201E2DD2
-:1021E0000000000000000000003120C200000000DC
-:1021F00000000000002E00E80000000000000000C9
-:1022000006C00000000002DC0000000000600000CA
-:10221000000006650000000000600000000002B53C
-:102220000000000000400000000002DE000000008E
-:1022300000600000000002B5000000000060000027
-:102240000000065C0000000000400000000002DE0C
-:102250000000000000600000000002A70000000075
-:1022600000400000000002DE0000001A00201E2DC9
-:10227000000000000000001B0080222D0000000074
-:102280000000001000221E230000000000000000DB
-:1022900000294887000000000000000000311CA356
-:1022A000000000000000001000221E2700000000B7
-:1022B0000000000000294887000000000000001016
-:1022C00000221E230000000000000000003120C496
-:1022D000000000000000FFFF00282228000000008E
-:1022E0000000000000894907000000000000001005
-:1022F00000221E2300000000000000000029488783
-:10230000000000000000001000221E21000000005C
-:102310000000000000294847000000000000000005
-:1023200000311CA3000000000000001000221E2746
-:1023300000000000000000000029488700000000A5
-:102340000000000000311CA100000000000000108F
-:1023500000221E270000000000000000002948475E
-:10236000000000000000001000221E2300000000FA
-:1023700000000000003120C4000000000000FFFF4A
-:102380000028222800000000000000000029490762
-:10239000000000000000001000221E2100000000CC
-:1023A00000000000003120C2000000000000FFFF1C
-:1023B00000282228000000000000000000894907D2
-:1023C000000000000000001000221E23000000009A
-:1023D0000000000000294887000000000000000104
-:1023E00000220A210000000000000000003308A2C3
-:1023F000000000000000001000221E22000000006B
-:102400000000001000212222000000000000000057
-:1024100000294907000000000000000000311CA353
-:10242000000000000000001000221E270000000035
-:1024300000000000002948870000000000000001A3
-:1024400000220A210000000000000000003008A265
-:10245000000000000000001000221E22000000000A
-:1024600000000010002122220000000000000000F7
-:1024700000294907000000000000001000221E2370
-:102480000000000000000000003120C40000000037
-:102490000000FFFF002822280000000000000000CC
-:1024A000002949070000000000000000003808C5AE
-:1024B00000000000000000000030084100000000A3
-:1024C0000000000100220A220000000000000000BD
-:1024D000003308A2000000000000001000221E22AD
-:1024E0000000000000000010002122220000000077
-:1024F00000000000008949070000000000000017EC
-:102500000020222D000000000000000014C0000088
-:1025100000000318FFFFFFEF002806210000000065
-:10252000000000140020222D000000000000F8E050
-:1025300000204411000000000000000000294901B3
-:1025400000000000000000000089490100000000B8
-:102550000000000000204811000000000000000002
-:102560000020481100000000060A02000080481107
-:102570000000000000000000C0200000000000007B
-:1025800097000000C020441100000000000000007F
-:10259000C0204811000000008A0000000020441103
-:1025A00000000000000000000020481100000000B2
-:1025B0000000225C00204411000000000000000028
-:1025C000C0204800000000000000A1FC00204411D1
-:1025D0000000000000000000C020480000000000D3
-:1025E00000000000C0200400000000000000000007
-:1025F00000A0000A00000000970000000020441125
-:102600000000000000000000002048110000000051
-:102610008A000000002044110000000000000000BB
-:1026200000204811000000000000225C002044113E
-:102630000000000000000000C02048000000000072
-:102640000000A1FC00204411000000000000000078
-:10265000C02048000000000000000000C02004006E
-:10266000000000000000000000A0000A00000000C0
-:10267000970000000020441100000000000000004E
-:1026800000204811000000008A00000000204411D2
-:1026900000000000000000000020481100000000C1
-:1026A0000000225C00204411000000000000000037
-:1026B000C0204800000000000000A1FC00204411E0
-:1026C0000000000000000000C020480000000000E2
-:1026D0000001A1FD002044110000000000000000E6
-:1026E000D90048000000000000000000C0200400E5
-:1026F000000000000000000000A0000A0000000030
-:1027000000002257002044110000000000000003D8
-:10271000C0484A20000000000000225D0020441153
-:102720000000000000000000C04048000000000061
-:1027300000000000006000000000064200000000F1
-:10274000C0200800000000000000225C00204411AE
-:10275000000000000000000300384A2200000000D2
-:102760000000A1FC00204411000000000000000057
-:10277000C0204800000000000001A1FD002044111D
-:102780000000000000000000002F022200000000F6
-:10279000000000000CE0000000000000000000004D
-:1027A00040204800000000000000000140304A20A6
-:1027B0000000000000000002C0304A2000000000BD
-:1027C0000000000100530A220000034B0000003FFC
-:1027D000C0280A20000000008100000000204411F1
-:1027E000000000000000000100204811000000006F
-:1027F000000021F800204411000000000000001833
-:102800000020481100000000000421F9006044117C
-:102810000000068A000000110021023000000000C4
-:102820000000000014E00000000003540000001449
-:10283000002F022200000000000000000CC0000079
-:10284000000003640000201000204411000000007C
-:102850000000800000204811000000000001A2A438
-:102860000020441100000000000000000060480249
-:102870000000036E00002100002044110000000051
-:1028800000000000C0204800000000000000000020
-:10289000C02048000000000000000000C0204800E8
-:1028A0000000000000000000C040480000000000E0
-:1028B00000000004002F02220000000000000000C1
-:1028C0000CC000000000036A00002010002044112A
-:1028D00000000000000080000020481100000000FF
-:1028E0000001A2A40020441100000000000000002C
-:1028F000004048020000035F00000028002F022271
-:1029000000000000000000000CC00000000005BD39
-:102910000001A2A4002044110000000000000000FB
-:10292000004048020000035F0000002C0020362613
-:102930000000000000000049002018110000000005
-:102940000000003F002048110000000000000001CE
-:1029500000331A260000000000000000002F0226AD
-:1029600000000000000000000CC000000000037028
-:102970000000002C00801A2D000000000000003F25
-:10298000C0280A200000000000000015002F0222CD
-:1029900000000000000000000CE0000000000386C2
-:1029A00000000006002F02220000000000000000CE
-:1029B0000CE00000000003B100000016002F02220E
-:1029C00000000000000000000CE00000000003B563
-:1029D00000000020002F0222000000000000000084
-:1029E0000CE000000000039C0000000F002F0222FA
-:1029F00000000000000000000CE00000000003A840
-:102A000000000010002F0222000000000000000063
-:102A10000CE00000000003A80000001E002F0222AE
-:102A200000000000000000000CE000000000039027
-:102A30000000A2A4002044110000000000000000DB
-:102A400000404802000000000800000000290A229F
-:102A5000000000000000000340210E2000000000E4
-:102A60000000000CC021122000000000000800003F
-:102A7000002812240000000000000014C0221620CC
-:102A80000000000000000000002914A40000000065
-:102A90000000A2A40020441100000000000000007B
-:102AA000002948A2000000000000A1FE00204411FF
-:102AB000000000000000000000404803000000008B
-:102AC000810000000020441100000000000000010F
-:102AD0000020481100000000000021F800204411EF
-:102AE0000000000000000016002048110000000057
-:102AF000000421F9006044110000068A000000155E
-:102B000000210230000000000000000014E000007E
-:102B1000000003920000210E00204411000000007C
-:102B200000000000C020480000000000000000007D
-:102B3000C0204800000000000000A2A400204411B2
-:102B400000000000000000000040480200000000FB
-:102B5000810000000020441100000000000000017E
-:102B60000020481100000000000021F8002044115E
-:102B700000000000000000170020481100000000C5
-:102B8000000421F9006044110000068A00000003DF
-:102B900000210230000000000000000014E00000EE
-:102BA0000000039E000021080020441100000000E6
-:102BB00000000000C02048000000000000000000ED
-:102BC000C0204800000000000000A2A40020441122
-:102BD000000000000000000000404802000000006B
-:102BE0000000A2A40020441100000000000000002A
-:102BF0000020480200000000800000000020441176
-:102C0000000000000000000000204811000000004B
-:102C100081000000002044110000000000000010AE
-:102C200000204811000000000000000000200010FB
-:102C3000000000000000000014C00000000003AE0F
-:102C40000000000000400000000000000000201014
-:102C50000020441100000000000080000020481106
-:102C6000000000000001A2A40020441100000000A8
-:102C70000000000600404811000000000000201085
-:102C800000204411000000000000800000204811D6
-:102C9000000000000001A2A4002044110000000078
-:102CA00000000016006048110000036E00000000E4
-:102CB000004000000000000000000000C0200800EC
-:102CC0000000000000000000C0200C000000000018
-:102CD0000000001D00210223000000000000000091
-:102CE00014E00000000003CE810000000020441129
-:102CF000000000000000000100204811000000005A
-:102D0000000021F80020441100000000000000181D
-:102D10000020481100000000000421F90060441167
-:102D20000000068A000000110021023000000000AF
-:102D30000000000014E00000000003C000002100BB
-:102D400000204411000000000000000000204802A4
-:102D50000000000000000000002048030000000008
-:102D6000BABECAFE0020481100000000CAFEBABE6A
-:102D70000020481100000000000020100020441135
-:102D8000000000000000800000204811000000004A
-:102D90000000A2A400204411000000000000000474
-:102DA0000040481100000000000021700020441184
-:102DB00000000000000000000020480200000000A9
-:102DC0000000000000204803000000008100000017
-:102DD00000204411000000000000000A00204811FB
-:102DE00000000000000000000020001000000000B3
-:102DF0000000000014C00000000003D38C0000009D
-:102E00000020441100000000CAFEBABE0040481174
-:102E100000000000810000000020441100000000BC
-:102E200000000001002048110000000000003FFFEA
-:102E300040280A20000000008000000040280E20EA
-:102E40000000000040000000C02812200000000028
-:102E500000040000006946220000068A000000000D
-:102E6000002014100000000000000000002F0223CA
-:102E700000000000000000000CC00000000003E1A2
-:102E800000000000C0401800000003E400003FFF05
-:102E9000C0281A2000000000000400000069462637
-:102EA0000000068A0000000000201810000000004A
-:102EB00000000000002F02240000000000000000BD
-:102EC0000CC00000000003E700000000C0401C0030
-:102ED000000003EA00003FFFC0281E2000000000A1
-:102EE00000040000006946270000068A0000000078
-:102EF00000201C1000000000000000000020440220
-:102F00000000000000000000002820C500000000B4
-:102F100000000000004948E800000000A580000013
-:102F200000200811000000000000200000200C110B
-:102F30000000000083000000006044110000041243
-:102F4000000000000020440200000000000000001B
-:102F5000C0204800000000000000000040204800A1
-:102F6000000000000000001FC0210220000000003F
-:102F70000000000014C00000000003F70000201053
-:102F800000204411000000000000800000204811D3
-:102F9000000000000000FFFFC0481220000003FFF7
-:102FA000A780000000200811000000000000A00021
-:102FB00000200C110000000083000000006044119C
-:102FC0000000041200000000002044020000000085
-:102FD00000000000C02048000000000000000000C9
-:102FE000C0204800000000000000FFFFC0281220A1
-:102FF00000000000830000000020441100000000D9
-:103000000000000000304883000000008400000041
-:10301000002044110000000000000000C020480013
-:1030200000000000000000001D0000000000000083
-:103030008300000000604411000004120000000042
-:10304000C040040000000001A98000000020081119
-:10305000000000000000C00000400C11000003FA56
-:10306000AB80000000200811000000000000F8E024
-:1030700000400C11000003FAAD8000000020081190
-:10308000000000000000F88000400C11000003FA6E
-:10309000B380000000200811000000000000F3FCD5
-:1030A00000400C11000003FAAF800000002008115E
-:1030B000000000000000E00000400C11000003FAD6
-:1030C000B180000000200811000000000000F000A6
-:1030D00000400C11000003FA83000000002044119E
-:1030E00000000000000021480020481100000000FE
-:1030F00084000000002044110000000000000000D7
-:10310000C020480000000000000000001D0000007A
-:10311000000000000000000000800000000000002F
-:1031200001182000C0304620000000000000000010
-:10313000D90048000000000000000000C02004008A
-:10314000000000000000000000A0000A00000000D5
-:103150000218A000C030462000000000000000005F
-:10316000D90048000000000000000000C02004005A
-:10317000000000000000000000A0000A00000000A5
-:103180000318C000C030462000000000000000000E
-:10319000D90048000000000000000000C02004002A
-:1031A000000000000000000000A0000A0000000075
-:1031B0000418F8E0C03046200000000000000000C5
-:1031C000D90048000000000000000000C0200400FA
-:1031D000000000000000000000A0000A0000000045
-:1031E0000518F880C03046200000000000000000F4
-:1031F000D90048000000000000000000C0200400CA
-:10320000000000000000000000A0000A0000000014
-:103210000618E000C030462000000000000000005A
-:10322000D90048000000000000000000C020040099
-:10323000000000000000000000A0000A00000000E4
-:103240000718F000C0304620000000000000000019
-:10325000D90048000000000000000000C020040069
-:10326000000000000000000000A0000A00000000B4
-:103270000818F3FCC03046200000000000000000E9
-:10328000D90048000000000000000000C020040039
-:10329000000000000000000000A0000A0000000084
-:1032A0000000003000200A2D000000000000000097
-:1032B000C0290C4000000000000000300020362330
-:1032C0000000000000000000C0200400000000001A
-:1032D0000000000000A0000A0000000086000000BE
-:1032E00000204411000000000000000000404801E0
-:1032F0000000000085000000C02044110000000014
-:103300000000000000404801000000000000217C97
-:10331000002044110000000000000000C020480010
-:103320000000000000000000C02048000000000075
-:1033300000000000C02048000000000081000000E4
-:10334000002044110000000000000001002048118E
-:103350000000000000000000C02008000000000085
-:103360000000000017000000000000000004217FA2
-:10337000006044110000068A0000001F0021023096
-:10338000000000000000000014C000000000000069
-:103390000000000000404C02000004480000000053
-:1033A000C0200C000000000000000000C020100041
-:1033B0000000000000000000C02014000000000019
-:1033C00000000000C0201800000000000000000005
-:1033D000C0201C000000000000007F0000280A211F
-:1033E0000000000000004500002F02220000000045
-:1033F000000000000CE00000000004560000000087
-:10340000C0202000000000000000000017000000A5
-:10341000000000000000001000280A230000000047
-:1034200000000010002F0222000000000000000039
-:103430000CE000000000045E810000000020441148
-:103440000000000000000001002048110000000002
-:1034500000040000006946240000068A0000000005
-:1034600000400000000004638100000000204411BF
-:1034700000000000000000000020481100000000D3
-:103480000000216D00204411000000000000000039
-:103490000020480400000000000000000060480513
-:1034A0000000068F00000000002824F0000000004B
-:1034B0000000000700280A230000000000000001AF
-:1034C000002F022200000000000000000AE00000BF
-:1034D0000000046A00000000002F00C90000000086
-:1034E0000000000004E00000000004830000000071
-:1034F000004000000000049000000002002F0222A3
-:1035000000000000000000000AE000000000046F5E
-:1035100000000000002F00C90000000000000000B3
-:1035200002E00000000004830000000000400000F2
-:103530000000049000000003002F022200000000A1
-:10354000000000000AE00000000004740000000019
-:10355000002F00C900000000000000000CE0000087
-:103560000000048300000000004000000000049000
-:1035700000000004002F02220000000000000000F4
-:103580000AE000000000047900000000002F00C9DC
-:1035900000000000000000000AE0000000000483BA
-:1035A0000000000000400000000004900000000542
-:1035B000002F022200000000000000000AE00000CE
-:1035C0000000047E00000000002F00C90000000081
-:1035D0000000000006E0000000000483000000007E
-:1035E000004000000000049000000006002F0222AE
-:1035F00000000000000000000AE00000000004835A
-:1036000000000000002F00C90000000000000000C2
-:1036100008E00000000004830000000000400000FB
-:103620000000049000007F0000280A210000000034
-:1036300000004500002F02220000000000000000F2
-:103640000AE00000000000000000000800210A233A
-:10365000000000000000000014C000000000048D05
-:10366000000021690020441100000000000000005B
-:10367000C02048000000000000000000C0204800FA
-:103680000000000000000000C02048000000000012
-:10369000CAFEBABE00404811000000000000000051
-:1036A000C02044000000000000000000C020000016
-:1036B0000000000000000000C040480000000000C2
-:1036C00000007F0000280A210000000000004500E3
-:1036D000002F022200000000000000000AE00000AD
-:1036E0000000049600000000C02000000000000060
-:1036F00000000000C02000000000000000000000EA
-:10370000C0400000000000000000000000404C0825
-:103710000000045600000000C02008000000000067
-:103720000000001040210E200000000000000011E9
-:10373000402112200000000000000012402116204D
-:10374000000000000000216900204411000000007A
-:1037500000000000002048020000000000000000FF
-:1037600000210225000000000000000014E000001D
-:10377000000004A000040000C0494A20000004A189
-:10378000FFFBFFFFC0284A200000000000000000EF
-:1037900000210223000000000000000014E00000EF
-:1037A000000004AD00000000C02048000000000040
-:1037B00000000000C02048000000000000000000E1
-:1037C00000210224000000000000000014C00000DE
-:1037D00000000000810000000020441100000000F3
-:1037E0000000000C00204811000000000000000054
-:1037F00000200010000000000000000014C00000C5
-:10380000000004A9A00000000020441100000000F6
-:10381000CAFEBABE0040481100000000810000004E
-:1038200000204411000000000000000400204811A6
-:10383000000000000000216B002044110000000087
-:1038400000000000C02048100000000081000000BF
-:103850000020441100000000000000050020481175
-:10386000000000000000216C002044110000000056
-:1038700000000000C0204810000000000000000010
-:10388000002F022400000000000000000CE00000F7
-:10389000000000000000000000400000000004A73D
-:1038A00000000000C0210A2000000000000000000D
-:1038B00014C00000000004C081000000002044117A
-:1038C000000000000000000000204811000000007F
-:1038D0000000216D002044110000000000000000E5
-:1038E000C02048000000000000000000C060480048
-:1038F0000000068F0000000000400000000004C42B
-:1039000081000000002044110000000000000001C0
-:10391000002048110000000000040000C0294620DB
-:103920000000000000000000C06000000000068AE7
-:103930000000000100210222000000000000000041
-:1039400014C00000000004CB0000216900204411D5
-:103950000000000000000000C0204800000000003F
-:1039600000000000C020480000000000000000002F
-:103970000020481000000000CAFEBABE00404811F6
-:103980000000000000000000C02044000000000013
-:1039900000000000C040481000000000810000004E
-:1039A0000020441100000000000000010020481128
-:1039B00000000000000021F8002044110000000079
-:1039C0000000000E0020481100000000000421F952
-:1039D000006044110000068A00000000002102304F
-:1039E000000000000000000014C00000000004CD32
-:1039F00000002180002044110000000000000000B1
-:103A0000C02048000000000000000000C0200000AE
-:103A10000000000000000000C0204800000000007E
-:103A200000000000C02000000000000000000000B6
-:103A3000C0404800000000000000000300333E2F9B
-:103A40000000000000000001002102210000000031
-:103A50000000000014E00000000004FD0000002C45
-:103A600000200A2D000000000004000018E00C11E6
-:103A7000000004EC0000000100333E2F00000000B5
-:103A80000000216900204411000000000000000037
-:103A90000020480200000000000000000020480351
-:103AA000000000000000000800300A2200000000B2
-:103AB00000000000C02048000000000000000000DE
-:103AC000C0204800000000000000216900204411CF
-:103AD000000000000000000000204802000000007C
-:103AE0000000000000204803000000000000000863
-:103AF00000300A220000000000000000C020480042
-:103B00000000000000000000D8C04800000004E0F1
-:103B100000002169002044110000000000000000A6
-:103B200000204802000000000000000000204803C0
-:103B3000000000000000000800300A220000000021
-:103B400000000000C020480000000000000000004D
-:103B5000C0204800000000000000002D0020122DB1
-:103B6000000000000000000000290C83000000009D
-:103B70000000216900204411000000000000000046
-:103B80000020480200000000000000000020480360
-:103B9000000000000000000800300A2200000000C1
-:103BA00000000000C02048000000000000000000ED
-:103BB000C020480000000000000000110021022485
-:103BC000000000000000000014C000000000000021
-:103BD0000000000000400000000004A70000002CCE
-:103BE000C0203620000000000000002DC04036201C
-:103BF000000000000000000F002102210000000072
-:103C00000000000014C000000000050200000000D9
-:103C1000006000000000000B00000000D900000060
-:103C20000000000000000000C0400400000000018F
-:103C3000B50000000020441100000000000020003A
-:103C40000020481100000000B600000000204411D0
-:103C5000000000000000A00000204811000000004B
-:103C6000B700000000204411000000000000C00068
-:103C70000020481100000000B8000000002044119E
-:103C8000000000000000F8E00020481100000000E3
-:103C9000B900000000204411000000000000F8807E
-:103CA0000020481100000000BA000000002044116C
-:103CB000000000000000E0000020481100000000AB
-:103CC000BB00000000204411000000000000F000D4
-:103CD0000020481100000000BC000000002044113A
-:103CE000000000000000F3FC00204811000000006C
-:103CF00081000000002044110000000000000002CC
-:103D00000020481100000000000000FF00280E30D5
-:103D10000000000000000000002F0223000000004F
-:103D2000000000000CC000000000051600000000AC
-:103D3000C0200800000000000000000014C00000C7
-:103D40000000052B0000000000200C110000000006
-:103D50000000001C00203623000000000000002BA3
-:103D60000020362300000000000000290020362338
-:103D700000000000000000280020362300000000A2
-:103D8000000000170020362300000000000000257E
-:103D9000002036230000000000000026002036230B
-:103DA0000000000000000015002036230000000085
-:103DB000000000160020362300000000FFFFE00096
-:103DC00000200C110000000000000021002036231C
-:103DD0000000000000000022002036230000000048
-:103DE00000001FFF00200C11000000000000002355
-:103DF00000203623000000000000002400203623AD
-:103E000000000000F1FFFFFF00283A2E0000000034
-:103E10000000001AC0220E20000000000000000078
-:103E20000029386E000000008100000000204411CD
-:103E30000000000000000006002048110000000003
-:103E40000000002A4020362000000000870000000B
-:103E5000002044110000000000000000C0204800C5
-:103E6000000000000000A1F4002044110000000048
-:103E700000000000002048100000000000000000CA
-:103E800000200C110000000000000030002036234C
-:103E9000000000009D000000002044110000000010
-:103EA0000000001F40214A20000000009600000092
-:103EB000002044110000000000000000C020480065
-:103EC0000000000000000000C0200C000000000006
-:103ED00000000000C0201000000000000000001FD3
-:103EE00000211624000000000000000014C00000A3
-:103EF000000000000000001D00203623000000002C
-:103F00000000000300281E2300000000000000083D
-:103F10000022222300000000FFFFF00000282228DA
-:103F20000000000000000000002920E80000000060
-:103F30000000001F002036280000000000000018CC
-:103F400000211E2300000000000000200020362772
-:103F50000000000000000002002216240000000003
-:103F600000000000003014A8000000000000001E47
-:103F700000203625000000000000000300211A2464
-:103F8000000000001000000000281A2600000000B9
-:103F9000EFFFFFFF00283A2E0000000000000000A5
-:103FA000004938CE000006780000000140280A20B1
-:103FB000000000000000000640280E200000000065
-:103FC00000000300C02812200000000000000008CC
-:103FD000002112240000000000000000C020162074
-:103FE0000000000000000000C0201A2000000000B7
-:103FF000000000000021022200000000000000007C
-:1040000014C000000000056381000000002044117E
-:104010000000000000000001002048110000000026
-:104020000000225800300A240000000000040000B4
-:10403000006946220000068A000021690020441120
-:104040000000000000000000002048050000000003
-:104050000002000000294A260000000000000000C5
-:104060000020481000000000CAFEBABE002048111F
-:104070000000000000000002002F022300000000EA
-:10408000000000000CC000000000056B00000000F4
-:10409000C0201C100000000000000000C040000014
-:1040A0000000057900000002002F0223000000003C
-:1040B000000000000CC000000000056B8100000043
-:1040C0000020441100000000000000010020481101
-:1040D000000000000000225800300A240000000008
-:1040E00000040000006946220000068A000000006B
-:1040F000C0201C100000000000000000C0400000B4
-:104100000000057900000000002F022300000000DD
-:10411000000000000CC000000000056F000000005F
-:10412000C0201C000000000000000000C040000093
-:104130000000057900000004002F022300000000A9
-:10414000000000000CC000000000057781000000A6
-:104150000020441100000000000000000020481171
-:10416000000000000000216D00204411000000004C
-:1041700000000000C0204800000000000000000017
-:10418000C06048000000068F0000000000401C10C6
-:104190000000057900000000C020000000000000C1
-:1041A00000000000C040000000000000000000000F
-:1041B0000EE000000000057B000000000060000031
-:1041C000000005C600000000002F022400000000CF
-:1041D000000000000CC000000000058C0000A2B729
-:1041E00000204411000000000000000000204807EB
-:1041F00000000000810000000020441100000000C9
-:104200000000000100204811000000000004A2B6D8
-:10421000006044110000068A0000001A00212230CC
-:104220000000000000000006002226300000000010
-:1042300000042004006044110000068A0000A2C4AB
-:10424000002044110000000000000000003048E998
-:10425000000000000000000000E000000000058AEF
-:104260000000A2D100204411000000000000000066
-:1042700000404808000000000000A2D100204411C6
-:10428000000000000000000100504A28000000006B
-:1042900000000001002F02240000000000000000C8
-:1042A0000CC000000000059D0000A2BB00204411CE
-:1042B000000000000000000000204807000000008F
-:1042C00081000000002044110000000000000001F7
-:1042D00000204811000000000004A2BA0060441150
-:1042E0000000068A0000001A0021223000000000B1
-:1042F0000000000600222630000000000004200418
-:10430000006044110000068A0000A2C5002044118C
-:104310000000000000000000003048E9000000003C
-:104320000000000000E000000000059B0000A2D299
-:104330000020441100000000000000000040480878
-:10434000000000000000A2D2002044110000000084
-:104350000000000100504A28000000000000000298
-:10436000002F022400000000000000000CC000002C
-:10437000000005AE0000A2BF0020441100000000B4
-:10438000000000000020480700000000810000003D
-:10439000002044110000000000000001002048112E
-:1043A000000000000004A2BE006044110000068A64
-:1043B0000000001A0021223000000000000000066A
-:1043C0000022263000000000000420040060441198
-:1043D0000000068A0000A2C6002044110000000070
-:1043E00000000000003048E900000000000000006C
-:1043F00000E00000000005AC0000A2D30020441142
-:10440000000000000000000000404808000000001C
-:104410000000A2D3002044110000000000000001B1
-:1044200000504A28000000000000A2C300204411F0
-:10443000000000000000000000204807000000000D
-:104440008100000000204411000000000000000175
-:1044500000204811000000000004A2C200604411C6
-:104460000000068A0000001A00212230000000002F
-:104470000000000600222630000000000004200496
-:10448000006044110000068A0000A2C70020441109
-:104490000000000000000000003048E900000000BB
-:1044A0000000000000E00000000005BB0000A2D4F6
-:1044B00000204411000000000000000000404808F7
-:1044C000000000000000A2D4002044110000000001
-:1044D0000000000100504A28000000008500000094
-:1044E00000204411000000000000000000204801EE
-:1044F000000000000000304A0020441100000000CD
-:104500000100000000204811000000000000000031
-:1045100000400000000005C1A4000000C0204411BC
-:104520000000000000000000C04048000000000043
-:1045300000000000C0600000000005C60000000090
-:10454000C0400400000000010000002C00203621C3
-:104550000000000081000000002044110000000065
-:1045600000000006002048110000000000000000CC
-:10457000002F023000000000000000000CC000000E
-:10458000000005CD00000000002004110000000024
-:104590000000003000403621000005E0000000303F
-:1045A0000020062D0000000000007E0000280621EB
-:1045B0000000000000000000002F022100000000A9
-:1045C000000000000CE00000000005E08100000099
-:1045D00000204411000000000000000100204811EC
-:1045E000000000000004A092006044110000068A50
-:1045F0000000003100203630000000000004A093CD
-:10460000006044110000068A0000003200203630AD
-:10461000000000000004A2B6006044110000068AF9
-:104620000000003300203630000000000004A2BA71
-:10463000006044110000068A00000034002036307B
-:10464000000000000004A2BE006044110000068AC1
-:104650000000003500203630000000000004A2C237
-:10466000006044110000068A000000360020363049
-:104670000000000000042004006044110000068ACD
-:104680000001A2A400204411000000000000003F2F
-:1046900000204811000000000000003F00204811E9
-:1046A000000000000000003F002048110000000052
-:1046B0000000003F0020481100000000000000053D
-:1046C00000204811000000000000A1F40020441167
-:1046D0000000000000000000002048110000000061
-:1046E00088000000002044110000000000000001CC
-:1046F000002048110000000081000000002044114B
-:10470000000000000000000600204811000000002A
-:1047100000000001002F0230000000000000000037
-:104720000CE0000000000629000000300020062DEB
-:104730000000000000000000002F02210000000027
-:10474000000000000CE000000000062981000000CD
-:10475000002044110000000000000001002048116A
-:104760000000000000007E0000280621000000007C
-:1047700000000000002F02210000000000000000E7
-:104780000CE00000000006020000A092002044118E
-:10479000000000000000003100204A2D0000000051
-:1047A0000000A0930020441100000000000000322F
-:1047B00000204A2D000000000000A2B60020441195
-:1047C000000000000000003300204A2D000000001F
-:1047D0000000A2BA002044110000000000000034D4
-:1047E00000204A2D000000000000A2BE002044115D
-:1047F000000000000000003500204A2D00000000ED
-:104800000000A2C200204411000000000000003699
-:1048100000204A2D00000000000000300020062D7E
-:1048200000000000000001FF002806210000000039
-:1048300000000000002F0221000000000000000026
-:104840000CE000000000062800000000002102210A
-:10485000000000000000000014C000000000060B73
-:104860000004A003006044110000068A0000A003B9
-:10487000002044110000000000000000002048104B
-:1048800000000000000000010021062100000000DF
-:104890000000000014C00000000006100004A0107A
-:1048A000006044110000068A0000A010002044119E
-:1048B0000000000000000000002048100000000080
-:1048C000000000010021062100000000000000009F
-:1048D000002F022100000000000000000CE000009A
-:1048E000000006280004A011006044110000068AA0
-:1048F0000000A01100204411000000000000000092
-:1049000000204810000000000004A01200604411C4
-:104910000000068A0000A0120020441100000000E0
-:104920000000000000204810000000000004A01358
-:10493000006044110000068A0000A013002044110A
-:1049400000000000000000000020481000000000EF
-:104950000004A014006044110000068A0000A014A6
-:10496000002044110000000000000000002048105A
-:10497000000000000004A015006044110000068A39
-:104980000000A015002044110000000000000000FD
-:1049900000204810000000000004A0160060441130
-:1049A0000000068A0000A01600204411000000004C
-:1049B0000000000000204810000000000004A017C4
-:1049C000006044110000068A0000A0170020441176
-:1049D000000000000000000000204810000000005F
-:1049E00000042004006044110000068A0000002C2E
-:1049F0000080062D00000000FF0000000020441190
-:104A0000000000000000000000204811000000002D
-:104A1000000000010020481100000000000000021A
-:104A20000080481100000000000000000EE00000BF
-:104A30000000063A000000300020062D00000000B3
-:104A40000000000200280621000000000000000015
-:104A5000002F022100000000000000000CE0000018
-:104A60000000063881000000002044110000000012
-:104A70000000000100204811000000000004200494
-:104A8000006044110000068A000010000020081198
-:104A9000000000000000002B002036220000000073
-:104AA00000000000006000000000063E0000000062
-:104AB00000600000000005C69800000000204411BE
-:104AC000000000000000000000804811000000000D
-:104AD00000000000C06000000000063E0000000072
-:104AE000C0400400000000010000A2A40020441106
-:104AF000000000000000002200204811000000001B
-:104B000089000000002044110000000000000001A6
-:104B1000004048110000062A9700000000204411C0
-:104B2000000000000000000000204811000000000C
-:104B30008A00000000204411000000000000000076
-:104B4000004048110000062A00000000006000003C
-:104B50000000065900002010002044110000000051
-:104B60000000800000204811000000000001A2A405
-:104B7000C020441100000000000000160060481131
-:104B80000000036E0000201000204411000000000F
-:104B9000000100000020481100000000810000001A
-:104BA0000020441100000000000000010020481116
-:104BB000000000000000217C0020441100000000E3
-:104BC000098000000020481100000000FFFFFFFFE7
-:104BD00000204811000000000000000000204811E3
-:104BE00000000000000000001700000000000000AE
-:104BF0000004217F006044110000068A0000001FAD
-:104C000000210230000000000000000014C000007D
-:104C1000000000000000000400404C11000006539A
-:104C2000000000000040000000000000000000172D
-:104C300000201E2D000000000000000400291E2797
-:104C40000000000000000017008036270000000070
-:104C50000000001700201E2D00000000FFFFFFFBDA
-:104C600000281E27000000000000001700803627E3
-:104C7000000000000000001700201E2D00000000B2
-:104C80000000000800291E27000000000000001797
-:104C900000803627000000000000001700201E2DB5
-:104CA00000000000FFFFFFF700281E2700000000A3
-:104CB00000000017008036270000000000002010D0
-:104CC0000020441100000000000080000020481176
-:104CD000000000000001A2A4002044110000000018
-:104CE00000000016006048110000036E0000201054
-:104CF00000204411000000000001000000204811C5
-:104D0000000000000000217C002044110000000091
-:104D1000018000000020481100000000FFFFFFFF9D
-:104D20000020481100000000000000000020481191
-:104D3000000000000000000017000000000000005C
-:104D4000810000000020441100000000000000016C
-:104D500000204811000000000004217F0060441181
-:104D60000000068A0000001F002102300000000041
-:104D70000000000014C000000000068900000010C0
-:104D800000404C110000066F00000000C02004002D
-:104D9000000000000000000038C00000000000001B
-:104DA0000000001D00200A2D000000000000001E71
-:104DB00000200E2D000000000000001F0020122D1A
-:104DC00000000000000000200020162D0000000060
-:104DD00000002169002044110000000000000000D4
-:104DE00000204804000000000000000000204805EA
-:104DF000000000000000000000204801000000004A
-:104E0000CAFEBABE002048110000000000000004E5
-:104E1000003012240000000000000000002F006499
-:104E200000000000000000000CC000000000068828
-:104E30000000000300281A22000000000000000803
-:104E40000022122200000000FFFFF00000281224C0
-:104E50000000000000000000002910C40000000055
-:104E60000000001F00403624000000000000000089
-:104E70000080000000000000000000001AC00000D8
-:104E80000000068A9F00000000204411000000007E
-:104E9000CAFEBABE00204811000000000000000059
-:104EA0001AE000000000068D0000000000800000F5
-:104EB00000000000000000001AC000000000068F83
-:104EC0009E0000000020441100000000CAFEBABE8F
-:104ED0000020481100000000000000001AE000005F
-:104EE00000000692000000000080000000000000AA
-:104EF00000000000006000000000000B0000100037
-:104F000000600411000003150000000000200411DF
-:104F1000000000000000000000600811000001B265
-:104F20000000225C0020441100000000000000038B
-:104F3000002048110000000000002256002044110B
-:104F4000000000000000001B0020481100000000CD
-:104F50000000A1FC0020441100000000000000013E
-:104F600000204811000000000001A1FDC0204411F4
-:104F7000000000000000002100201E2D00000000A5
-:104F80000000001000221E27000000000000002486
-:104F90000020222D000000000000FFFF0028222832
-:104FA0000000000000000000002949070000000088
-:104FB0000000000000204811000000000000002256
-:104FC0000020222D000000000000FFFF0028222802
-:104FD0000000000000000000002949070000000058
-:104FE0000000000000204811000000000000002325
-:104FF00000201E2D000000000000001000221E27CF
-:105000000000000000000000002949070000000027
-:1050100000000000004048110000000000000000F7
-:105020000000000000000000000000000000000080
-:105030000000000000000000000000000000000070
-:105040000000000000000000000000000000000060
-:105050000000000000000000000000000000000050
-:105060000000000000000000000000000000000040
-:105070000000000000000000000000000000000030
-:105080000000000000000000000000000000000020
-:105090000000000000000000000000000000000010
-:1050A0000000000000000000000000000000000000
-:1050B00000000000000000000000000000000000F0
-:1050C00000000000000000000000000000000000E0
-:1050D00000000000000000000000000000000000D0
-:1050E00000000000000000000000000000000000C0
-:1050F00000000000000000000000000000000000B0
-:10510000000000000000000000000000000000009F
-:10511000000000000000000000000000000000008F
-:10512000000000000000000000000000000000007F
-:10513000000000000000000000000000000000006F
-:10514000000000000000000000000000000000005F
-:10515000000000000000000000000000000000004F
-:10516000000000000000000000000000000000003F
-:10517000000000000000000000000000000000002F
-:10518000000000000000000000000000000000001F
-:10519000000000000000000000000000000000000F
-:1051A00000000000000000000000000000000000FF
-:1051B00000000000000000000000000000000000EF
-:1051C00000000000000000000000000000000000DF
-:1051D00000000000000000000000000000000000CF
-:1051E00000000000000000000000000000000000BF
-:1051F00000000000000000000000000000000000AF
-:10520000000000000000000000000000000000009E
-:10521000000000000000000000000000000000008E
-:10522000000000000000000000000000000000007E
-:10523000000000000000000000000000000000006E
-:10524000000000000000000000000000000000005E
-:10525000000000000000000000000000000000004E
-:10526000000000000000000000000000000000003E
-:10527000000000000000000000000000000000002E
-:10528000000000000000000000000000000000001E
-:10529000000000000000000000000000000000000E
-:1052A00000000000000000000000000000000000FE
-:1052B000014204FF05BD02500000000001C3016867
-:1052C000043F05BD00000000022502090250015103
-:1052D000000000000223024502A00241000000007D
-:1052E00003D705BD05BD05BD000000000646064705
-:1052F000031F05BD0000000005BD05C203200340DB
-:1053000000000000032A0282034203340000000070
-:1053100005BD05BD05BD05BD0000000005BD054E70
-:1053200005BD05BD0000000003BA05BD04B8034477
-:10533000000000000497044D043D05BD000000007E
-:1053400004CD05BD044104DA00000000044D05044D
-:10535000035103750000000005BD05BD05BD05BD79
-:105360000000000005BD05BD05BD05BD0000000035
-:1053700005BD05BD063C05C40000000005BD05BD1A
-:10538000000705BD0000000005BD05BD05BD05BD4C
-:105390000000000005BD05BD05BD05BD0000000005
-:1053A00003F803ED0408040600000000040E040ADC
-:1053B000040C041000000000041C04180424042041
-:1053C00000000000042C0428043404300000000015
-:1053D00005BD05BD043805BD0000000005BD05BDC7
-:1053E00005BD05BD0000000005BD05BD05BD05BD31
-:1053F000000000000002067606940006000000008F
-:00000001FF
diff --git a/firmware/radeon/RV630_pfp.bin.ihex b/firmware/radeon/RV630_pfp.bin.ihex
deleted file mode 100644
index f55292c97b79..000000000000
--- a/firmware/radeon/RV630_pfp.bin.ihex
+++ /dev/null
@@ -1,145 +0,0 @@
-:1000000000CA040000A00000007E828B007C038BED
-:10001000008001B8007C038B00D4401E00EE001E5F
-:1000200000CA040000A00000007E828B00C41838C3
-:1000300000CA240000CA2800009581A800C41C3A08
-:1000400000C3C00000CA080000CA0C00007C744B4A
-:1000500000C200050099C00000C41C3A007C744C2A
-:1000600000C0FFF000042C0400309002007D250049
-:1000700000351402007D350B00255403007CD5802B
-:1000800000259C030095C00400D5001B007EDDC147
-:10009000007D9D8000D6801B00D5801B00D4401EB3
-:1000A00000D5401E00D6401E00D6801E00D4801E03
-:1000B00000D4C01E009783D300D5C01E00CA08001C
-:1000C0000080001A00CA0C0000E4011E00D4001ECB
-:1000D0000080000C00C4183800E4013E00D4001E6B
-:1000E0000080000C00C4183800D4401E00EE001E32
-:1000F00000CA040000A00000007E828B00E4011E04
-:1001000000D4001E00D4401E00EE001E00CA0400F1
-:1001100000A00000007E828B00E4013E00D4001E9F
-:1001200000D4401E00EE001E00CA040000A0000023
-:10013000007E828B00CA180000D4401E00D5801EAD
-:100140000080005300D4007500D4401E00CA08008F
-:1001500000CA0C0000CA100000D4801900D4C018D6
-:1001600000D5001700D4801E00D4C01E00D5001E8C
-:1001700000E2001E00CA040000A00000007E828B86
-:1001800000CA080000D4806000D4401E0080000037
-:1001900000D4801E00CA080000D4806100D4401E34
-:1001A0000080000000D4801E00CA080000CA0C00B5
-:1001B00000D4401E00D4801600D4C01600D4801E87
-:1001C000008001B800D4C01E00C6084300CA0C005D
-:1001D00000CA10000094800400CA140000E420F358
-:1001E00000D4201300D5606500D4E01C00D5201C8D
-:1001F00000D5601C008000000006200100C60843F6
-:1002000000CA0C0000CA1000009483F700CA140052
-:1002100000E420F30080007900D4201300C60843D6
-:1002200000CA0C0000CA1000009883EF00CA140036
-:1002300000D400640080008D0000000000C414326F
-:1002400000C6184300C4082F0095400500C40C30B8
-:1002500000D4401E0080000000EE001E009583F5D3
-:1002600000C4103100D4403300D5206500D4A01C58
-:1002700000D4E01C00D5201C00E4015E00D4001E68
-:10028000008000000006200100CA1800000A2001BA
-:1002900000D6007600C408360098800700C61045D6
-:1002A0000095011000D4001F00D46062008000009F
-:1002B00000D4206200CC383500CC1433008401BB5C
-:1002C00000D4007200D5401E0080000000EE001E29
-:1002D00000E2001A008401BB00E2001A00CC104BBF
-:1002E00000CC0447002C9401007D098B0098400548
-:1002F000007D15CB00D4001A008001B800D4006D39
-:100300000034440100CC0C480098403A00CC2C4A00
-:100310000095800400CC0449008001B800D4001A84
-:1003200000D4C01A00282801008400F000CC10037B
-:100330000098801B0004380C008400F000CC1003EF
-:100340000098801700043808008400F000CC1003E7
-:100350000098801300043804008400F000CC1003DF
-:100360000098801400CC104C009A800900CC144DE9
-:10037000009840DC00D4006D00CC184800D5001A6D
-:1003800000D5401A008000C900D5801A0096C0D55B
-:1003900000D4006D008001B800D4006E009AC00344
-:1003A00000D4006D00D4006E0080000000EC007FDF
-:1003B000009AC0CC00D4006D008001B800D4006E5B
-:1003C00000CC140300CC180300CC1C03007D910367
-:1003D000007DD583007D190C0035CC1F0035701FC2
-:1003E000007CF0CB007CD08B00880000007E8E8BE0
-:1003F0000095C00400D4006E008001B800D4001A3B
-:1004000000D4C01A00CC080300CC0C0300CC1003AD
-:1004100000CC140300CC180300CC1C0300CC240334
-:1004200000CC28030035C41F0036B01F007C704B81
-:100430000034F01F007C704B0035701F007C704B47
-:10044000007D8881007DCCC1007E5101007E9541F8
-:10045000007C9082007CD4C2007C848B009AC00314
-:10046000007C8C8B002C88010098809E00D4006D4D
-:100470000098409C00D4006E00CC084C00CC0C4D81
-:1004800000CC104800D4801A00D4C01A00800101AA
-:1004900000D5001A00CC083200D40032009482D972
-:1004A00000CA0C0000D4401E0080000000D4001ED2
-:1004B00000E4011E00D4001E00CA080000CA0C009F
-:1004C00000CA100000D4401E00CA140000D4801ED0
-:1004D00000D4C01E00D5001E00D5401E00D54034FB
-:1004E0000080000000EE001E0028040400E2001A54
-:1004F00000E2001A00D4401A00CA380000CC0803F9
-:1005000000CC0C0300CC0C0300CC0C03009882BD83
-:1005100000000000008401BB00D7A06F0080000035
-:1005200000EE001F00CA040000C2FF0000CC083427
-:1005300000C13FFF007C74CB007CC90B007D010F24
-:10054000009902B0007C738B008401BB00D7A06FC0
-:100550000080000000EE001F00CA080000281900FB
-:10056000007D898B009580140028140400CA0C00BB
-:1005700000CA100000CA1C0000CA240000E2001FCC
-:1005800000D4C01A00D5001A00D5401A00CC1803B8
-:1005900000CC2C0300CC2C0300CC2C03007DA58BBD
-:1005A000007D9C4700984297000000000080016198
-:1005B00000D4C01A00D4401E00D4801E0080000069
-:1005C00000EE001E00E4011E00D4001E00D4401EF8
-:1005D00000EE001E00CA040000A00000007E828B16
-:1005E00000E4013E00D4001E00D4401E00EE001EB8
-:1005F00000CA040000A00000007E828B00CA080030
-:1006000000248C06000CCC060098C00600CC104ECE
-:100610000099000400D4007300E4011E00D4001E01
-:1006200000D4401E00D4801E0080000000EE001E9A
-:1006300000CA080000CA0C000034D01800251001C0
-:100640000095002100C17FFF00CA100000CA1400FD
-:1006500000CA180000D4801D00D4C01D007DB18BDD
-:1006600000C1420200C2C00100D5801D0034DC0E72
-:10067000007D5D4C007F734C00D7401E00D5001EEE
-:1006800000D5401E00C1420000C2C00000099C010C
-:100690000031DC10007F5F4C007F734C00042802A7
-:1006A000007D838000D5A86F00D5806600D7401EEE
-:1006B00000EC005E00C8240200C82402008001B8DB
-:1006C00000D6007600D4401E00D4801E00D4C01E88
-:1006D0000080000000EE001E0080000000EE001F01
-:1006E00000D4001F0080000000D4001F00D4001FB1
-:1006F0000088000000D4001F00000000000000007F
-:1007000000000000000000000000000000000000E9
-:1007100000000000000000000000000000000000D9
-:1007200000000000000000000000000000000000C9
-:1007300000000000000000000000000000000000B9
-:1007400000000000000000000000000000000000A9
-:100750000000000000000000000000000000000099
-:100760000000000000000000000000000000000089
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B0000000000000000000000000000000000039
-:1007C0000000000000000000000000000000000029
-:1007D0000000000000000000000000000000000019
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:1008000000010171000201780003008F0004007FE5
-:10081000000500030006003F000700320008012C1D
-:1008200000090046000A0036001001B6001700A2B9
-:100830000022013A00230149002000B400240125D0
-:100840000027004D0028006A002A0060002B00529B
-:10085000002F0065003200870034017F003C015604
-:10086000003F00720041018C0044012E00550173CD
-:100870000056017A0060000B00610034006200380D
-:1008800000630038006400380065003800660038F6
-:10089000006700380068003A00690041006A0048BB
-:1008A000006B0048006C0048006D0048006E004876
-:1008B000006F00480000000600000006000000066F
-:1008C0000000000600000006000000060000000610
-:1008D0000000000600000006000000060000000600
-:1008E00000000006000000060000000600000006F0
-:1008F00000000006000000060000000600000006E0
-:00000001FF
diff --git a/firmware/radeon/RV635_me.bin.ihex b/firmware/radeon/RV635_me.bin.ihex
deleted file mode 100644
index ba3a7e632d97..000000000000
--- a/firmware/radeon/RV635_me.bin.ihex
+++ /dev/null
@@ -1,1345 +0,0 @@
-:1000000000000000C020040000000000000000000C
-:1000100000A0000A000000000000FFFF00284621A9
-:100020000000000000000000D900480000000000AF
-:1000300000000000C02004000000000000000000DC
-:1000400000A0000A000000000000000000E0000026
-:100050000000000000010000C02946200000000050
-:1000600000000000D900480000000000000000006F
-:10007000C0200400000000000000000000A0000AF2
-:10008000000000008100000000204411000000007A
-:1000900000000001002048110000000000042004BE
-:1000A000006044110000068A0000000000600000AB
-:1000B0000000062E00000000006000000000064264
-:1000C00000000000C02008000000000000000F0039
-:1000D000002816220000000000000008002116255C
-:1000E000000000000000001800203625000000007D
-:1000F0008D000000002044110000000000000004FA
-:10010000002F022500000000000000000CE00000AD
-:1001100000000018004120000040481100000019B4
-:100120000042200000204811000000008E00000066
-:1001300000204411000000000000002800204A2D8B
-:1001400000000000900000000020441100000000AA
-:100150000000000000204805000000000000000C26
-:1001600000211622000000000000000300281625D0
-:10017000000000000000001900211A220000000009
-:100180000000000400281A26000000000000000003
-:10019000002914C5000000000000001900203625C9
-:1001A0000000000000000000003A140200000000FF
-:1001B00000000016002116250000000000000003CA
-:1001C00000281625000000000000001700200E2D5A
-:1001D00000000000FFFFFFFC00280E2300000000CD
-:1001E00000000000002914A3000000000000001718
-:1001F00000203625000000000000800000280E22AC
-:10020000000000000000000700220E230000000094
-:10021000000000000029386E0000000020000000EF
-:1002200000280E22000000000000000600210E231E
-:1002300000000000000000000029386E00000000EF
-:100240000000000000220222000000000000000068
-:1002500014E0000000000038000000002EE0000064
-:1002600000000035000000002CE000000000003716
-:100270000000000000400E2D0000003900000008C2
-:1002800000200E2D00000000000000090040122D8B
-:10029000000000460000000100400E2D0000003963
-:1002A00000000000C0200C0000000000003FFFFC28
-:1002B0000028122300000000000000020022122487
-:1002C000000000000000001F00211E2300000000AD
-:1002D0000000000014E000000000003E00000008E4
-:1002E00000401C11000000410000000D00201E2DE8
-:1002F000000000000000000F00281E270000000082
-:100300000000000300221E27000000007FC0000044
-:1003100000281A23000000000000001400211A2603
-:10032000000000000000000100331A260000000059
-:100330000000000800221A26000000000000000053
-:1003400000290CC700000000000000270020362410
-:100350000000000000007F000028122100000000C3
-:1003600000001400002F0224000000000000000024
-:100370000CE000000000004B0000000100290E23EB
-:10038000000000000000000E0020362300000000E6
-:100390000000E0000020441100000000FFF8000011
-:1003A00000294A230000000000000000003A2C024F
-:1003B000000000000000000200220E2B00000000E0
-:1003C000FC00000000280E23000000000000000FC9
-:1003D000002036230000000000001FFF00294A23F0
-:1003E000000000000000002700204A2D000000004F
-:1003F000000000000020481100000000000000295B
-:1004000000200E2D00000000060A020000294A23E9
-:100410000000000000000000002048110000000063
-:100420000000000000204811000000000000000152
-:1004300000210222000000000000000014E0000083
-:1004400000000061000000002EE000000000005FDE
-:10045000000000002CE000000000005E0000000032
-:1004600000400E2D000000620000000100400E2D33
-:10047000000000620000000A00200E2D00000000B5
-:100480000000000B0040122D0000006A0000000078
-:10049000C0200C0000000000003FFFFC00281223D9
-:1004A00000000000000000020022122400000000F2
-:1004B0007FC0000000281623000000000000001488
-:1004C0000021162500000000000000010033162561
-:1004D000000000008000000000280E230000000043
-:1004E0000000000000290CA3000000003FFFFC00FA
-:1004F00000290E23000000000000001F00211E2321
-:10050000000000000000000014E000000000006D8A
-:100510000000010000401C11000000700000000DF0
-:1005200000201E2D00000000000000F000281E2703
-:10053000000000000000000400221E270000000050
-:100540008100000000204411000000000000000DA8
-:100550000020481100000000FFFFF0FF00281A30C3
-:10056000000000000000A02800204411000000004E
-:1005700000000000002948E6000000000000A0186C
-:1005800000204411000000003FFFFFFF00284A2325
-:10059000000000000000A010002044110000000036
-:1005A00000000000002048040000000000000030AF
-:1005B0000020162D00000000000000020029162572
-:1005C0000000000000000030002036250000000080
-:1005D000000000250020162D000000000000000093
-:1005E000002F00A300000000000000000CC000006D
-:1005F00000000083000000260020162D00000000EF
-:1006000000000000002F00A4000000000000000017
-:100610000CC000000000008400000000004000004A
-:100620000000008A000000250020362300000000A2
-:100630000000002600203624000000000000001703
-:1006400000201E2D000000000000000200210227F3
-:10065000000000000000000014E000000000008A1C
-:1006600000000000006000000000066500000000BF
-:1006700000600000000006590000000200210E2268
-:10068000000000000000000014C000000000008D09
-:1006900000000012C040362000000093000000005F
-:1006A0002EE0000000000091000000002CE000009F
-:1006B000000000900000000200400E2D000000929B
-:1006C0000000000300400E2D000000920000000C0E
-:1006D00000200E2D00000000000000120020362334
-:1006E000000000000000000300210E2200000000B6
-:1006F0000000000014C00000000000980000A00CE2
-:10070000002044110000000000000000C02048004C
-:100710000000000000000000C0404800000000A0F1
-:100720000000A00C002044110000000000000000A8
-:100730000020481100000000000000002EE0000032
-:100740000000009E000000002CE000000000009D62
-:100750000000000200400E2D0000009F000000037A
-:1007600000400E2D0000009F0000000C00200E2D08
-:10077000000000000000000000204803000000000E
-:1007800000000000003A0C0200000000003F0000E2
-:1007900000280E23000000000000001000210E239E
-:1007A00000000000000000110020362300000000BF
-:1007B0000000001E0021022B0000000000000000CD
-:1007C00014C00000000000A700000016C020362062
-:1007D000000000000000001F0021022B00000000AC
-:1007E0000000000014C00000000000AA0000001576
-:1007F000C0203620000000000000000800210E2B61
-:10080000000000000000007F00280E230000000010
-:1008100000000000002F0223000000000000000084
-:100820000CE00000000000E10000000027000000D4
-:10083000000000000000000000600000000002A3B3
-:1008400000000001002F0223000000000000000053
-:100850000AE00000000000B300000000006000009B
-:100860000000013A81000000002044110000000057
-:100870000000000600204811000000000000000CED
-:1008800000221E300000000099800000002044116A
-:1008900000000000000000040020122D00000000F5
-:1008A00000000008002212240000000000000010D8
-:1008B00000201811000000000000000000291CE4C6
-:1008C0000000000000000000006048070000012F49
-:1008D0009B00000000204411000000000000000008
-:1008E00000204802000000009C000000002044118D
-:1008F00000000000000000000033146F0000000042
-:100900000000000100333E23000000000000000052
-:10091000D9004800000000000000000000203C0555
-:1009200000000000810000000020441100000000D1
-:100930000000000E00204811000000000000000030
-:1009400000201010000000000000E007002044110B
-:10095000000000000000000F0021022B000000003A
-:100960000000000014C00000000000CB00F8FF08E9
-:1009700000204811000000009800000000404811CD
-:10098000000000DC000000F000280E220000000043
-:10099000000000A0002F0223000000000000000063
-:1009A0000CC00000000000DA0000001100200E2D35
-:1009B0000000000000000001002F022300000000E2
-:1009C000000000000CE00000000000D50000000264
-:1009D000002F022300000000000000000CE00000D7
-:1009E000000000D400003F0000400C11000000D6C1
-:1009F00000001F0000400C11000000D600000F0096
-:100A000000200C11000000000038000900294A23D2
-:100A1000000000003F00000000280E2B0000000036
-:100A20000000000200220E2300000000000000076A
-:100A300000494A23000000DC00380F09002048115B
-:100A400000000000680000070020481100000000BE
-:100A50000000000800214A270000000000000000FC
-:100A60000020481100000000060A020000294A2464
-:100A700000000000000000000020481100000000FD
-:100A80000000000000204811000000000000A20249
-:100A9000002044110000000000FF000000280E228A
-:100AA000000000000000008000294A230000000030
-:100AB0000000002700200E2D00000000000000268E
-:100AC0000020122D0000000000000000002F008315
-:100AD00000000000000000000CE00000000000EA40
-:100AE00000000000006000000000065F0000000041
-:100AF00000400000000000EB00000000006000006B
-:100B000000000662000000070020222D0000000007
-:100B10000000000500220E2200000000001000006E
-:100B200000280E23000000000000000000292068BB
-:100B30000000000000000000003A0C02000000006D
-:100B4000000000EF00280E2300000000000000005D
-:100B500000292068000000000000001700200E2D72
-:100B6000000000000000000300210223000000003C
-:100B70000000000014E00000000000F80000000B7E
-:100B800000210228000000000000000014C0000046
-:100B9000000000F8000004000029222800000000E6
-:100BA0000000001400203628000000000000001C97
-:100BB00000210E22000000000000000014C0000010
-:100BC000000000FD0000A30C002044110000000004
-:100BD0000000000000204811000000000000001E7E
-:100BE00000210E22000000000000000014C00000E0
-:100BF0000000010B0000A30F0020441100000000C2
-:100C00000000001100200E2D000000000000000177
-:100C1000002F022300000000000000000CC00000B4
-:100C200000000104FFFFFFFF004048110000010B1E
-:100C300000000002002F022300000000000000005E
-:100C40000CC00000000001070000FFFF0040481139
-:100C50000000010B00000004002F02230000000030
-:100C6000000000000CC000000000010A000000FFAE
-:100C7000004048110000010B000000010020481155
-:100C8000000000000002C400002044110000000029
-:100C90000000001F00210E220000000000000000E4
-:100CA00014C00000000001120000001040210E20BE
-:100CB00000000000000000130020362300000000A8
-:100CC0000000001840224A20000000000000001030
-:100CD000C0424A20000001140000000000200C1156
-:100CE0000000000000000013002036230000000078
-:100CF000000000000020481100000000000000007B
-:100D000000204811000000000000000A002010111F
-:100D10000000000000000000002F0224000000007E
-:100D2000000000000CE000000000011B00000000BB
-:100D300000204811000000000000000100531224B0
-:100D400000000117FFBFFFFF00283A2E000000003F
-:100D50000000001B00210222000000000000000033
-:100D600014C000000000012E81000000002044118A
-:100D7000000000000000000D0020481100000000ED
-:100D80000000001800220E3000000000FC000000EF
-:100D900000280E2300000000810000000020441104
-:100DA000000000000000000E0020481100000000BC
-:100DB0000000000000201010000000000000E00E05
-:100DC000002044110000000007F8FF08002048112F
-:100DD000000000000000000000294A23000000007D
-:100DE0000000001C00201E2D000000000000000874
-:100DF00000214A27000000000000000000204811E8
-:100E000000000000060A020000294A240000000039
-:100E10000000000000204811000000000000000059
-:100E200000204811000000000000000000800000C9
-:100E300000000000810000000020441100000000BC
-:100E40000000000100204811000000000000217C8B
-:100E50000020441100000000008000000020481124
-:100E60000000000000000000002048060000000014
-:100E70000000000800214A270000000000000000D8
-:100E800017000000000000000004217F00604411F2
-:100E90000000068A0000001F002102300000000050
-:100EA0000000000014C000000000068900000004DB
-:100EB00000404C1100000135810000000020441169
-:100EC00000000000000000010020481100000000A8
-:100ED000000021F800204411000000000000001C68
-:100EE0000020481100000000000421F900604411B6
-:100EF0000000068A000000110021023000000000FE
-:100F00000000000014E000000000013C00000000B0
-:100F100000800000000000000000000000600000F1
-:100F20000000000B00000000006004110000031529
-:100F3000000000000020041100000000000000007C
-:100F400000600811000001B2000000000060000015
-:100F5000000001600000FFFF40280E20000000009C
-:100F600000000010C0211220000000000000FFFF60
-:100F7000402806200000000000000010C0210A20C8
-:100F800000000000000000000034146100000000B8
-:100F90000000000000741882000002BB0001A1FDE7
-:100FA00000604411000002E000003FFF002F022F0C
-:100FB00000000000000000000CC00000000001471D
-:100FC00000000000C040040000000001000000001C
-:100FD000006000000000000B000000000060041131
-:100FE00000000315000000000020041100000000B4
-:100FF0000000000000600811000001B200003FFF87
-:10100000002F022F00000000000000000CE0000094
-:10101000000000000000000000600000000001600F
-:101020000000001040210E20000000000000FFFF23
-:10103000C0281220000000000000001040211620EF
-:10104000000000000000FFFFC0681A20000002BB83
-:101050000001A1FD00604411000002E000003FFF1C
-:10106000002F022F00000000000000000CC0000054
-:101070000000015800000000C04004000000000112
-:101080000000225C0020441100000000000000016C
-:1010900000300A2F000000000000000100210A2299
-:1010A000000000000000000300384A220000000099
-:1010B0000000225600204411000000000000001A29
-:1010C00000204811000000000000A1FC0020441195
-:1010D0000000000000000001008048110000000036
-:1010E00000000000006000000000000B0000000095
-:1010F000006000000000018F0000000000600000A0
-:10110000000001A000003FFF002F022F00000000A0
-:10111000000000000CE000000000000000000000E3
-:1011200000202C0800000000000000000020241116
-:101130000000000000000000002028110000000056
-:10114000000022560020441100000000000000169C
-:1011500000204811000000000000225C0020441123
-:101160000000000000000003002048110000000003
-:1011700093800000002044110000000000000002E5
-:1011800000221E290000000000000000007048EB53
-:101190000000019C0000000000600000000002BB95
-:1011A00000000001403306200000000000000000A5
-:1011B000C03024090000000000003FFF002F022F74
-:1011C00000000000000000000CE000000000000033
-:1011D0000000000000600000000002A3000000000A
-:1011E000002F022100000000000000000AE00000C3
-:1011F0000000018100000000006000000000013AD2
-:101200000000000000400000000001869500000082
-:10121000002044110000000000000000002F022107
-:1012200000000000000000000CE00000000001864B
-:1012300000000000C0204800000000000000000185
-:10124000005306210000018292000000002044119A
-:101250000000000000000000C0604800000001978E
-:101260000001A1FD00204411000000000000001159
-:101270000020062D00000000000000000078042A75
-:10128000000002FB00000000002028090000000010
-:1012900000003FFF002F022F0000000000000000B0
-:1012A0000CC000000000017400000000C0400400F9
-:1012B000000000010000021000600411000003158E
-:1012C00000003FFF002F022F000000000000000080
-:1012D0000CE000000000019400000015C020362042
-:1012E0000000000000000016C020362000000000B2
-:1012F0003F800000002004110000000046000000B4
-:1013000000600811000001B2000000000080000031
-:10131000000000000000A1FC0020441100000000BB
-:1013200000003FFF002F022F00000000000000001F
-:101330000CC000000000019B00000001008048116B
-:1013400000000000000000210080481100000000A3
-:101350000000FFFF40280E200000000000000010E9
-:10136000C0211220000000000000FFFF40281620CE
-:101370000000000000000010C0811A2000000000E2
-:101380008100000000204411000000000000000661
-:1013900000204811000000000000000800221E305C
-:1013A000000000000000002900201A2D00000000AD
-:1013B0000000E0000020441100000000FFFBFF09D6
-:1013C00000204811000000000000000F0020222D26
-:1013D0000000000000001FFF00294A280000000054
-:1013E000000000060020222D000000000000000088
-:1013F000002920E80000000000000000002048084C
-:101400000000000000000000002048110000000063
-:10141000060A020000294A26000000000000000021
-:1014200000204811000000000000000000204811CA
-:101430000000000000000100002018110000000062
-:101440000000000800621E280000012F00000008B4
-:1014500000822228000000000002C0000020441189
-:10146000000000000000001500600E2D000001BD0E
-:101470000000001600600E2D000001BD0000C00835
-:1014800000204411000000000000001700200E2D75
-:10149000000000000000000014C00000000001B9BE
-:1014A0000000000000200411000000000000000007
-:1014B0000020480100000000390000000020481111
-:1014C00000000000000000000020481100000000A3
-:1014D000000000000080480200000000000000182A
-:1014E00000202E2D0000000000000000003B0D63D6
-:1014F000000000000000000800224A230000000055
-:101500000000001000224A23000000000000001824
-:1015100000224A2300000000000000000080480371
-:101520000000000000000000006000000000000B50
-:10153000000010000060041100000315000000000E
-:1015400000200411000000000000000000600811ED
-:10155000000001B2000000070021062F000000007B
-:101560000000001300200A2D000000000000000110
-:1015700000202C11000000000000FFFF4028222066
-:10158000000000000000000F0026222800000000DC
-:101590000000001040212620000000000000000F85
-:1015A000002626290000000000000000002028027C
-:1015B000000000000000225600204411000000003E
-:1015C0000000001B00204811000000000000000087
-:1015D000002F022100000000000000000CE00000CD
-:1015E000000001E00000225C002044110000000027
-:1015F0000000008100204811000000000000A1FC54
-:1016000000204411000000000000000100204811EB
-:10161000000000000000008000201C1100000000FD
-:1016200000000000002F0227000000000000000062
-:101630000CE00000000001DC000000000060000081
-:10164000000001E90000000100531E27000001D83E
-:101650000000000100202C11000000000000001F0D
-:1016600000280A22000000000000001F00282A2A8B
-:10167000000000000000000100530621000001D11D
-:101680000000225C00204411000000000000000265
-:1016900000304A2F000000000000A1FC002044118F
-:1016A00000000000000000010020481100000000C0
-:1016B0000000000100301E2F0000000000000000AC
-:1016C000002F022700000000000000000CE00000D6
-:1016D000000000000000000000600000000001E9C0
-:1016E0000000000100531E27000001E50000FFFF7D
-:1016F00040280E20000000000000000F00260E23EE
-:101700000000000000000010C021122000000000B6
-:101710000000000F0026122400000000000000005E
-:1017200000201411000000000000000000601811EB
-:10173000000002BB0001A1FD0020441100000000D8
-:1017400000000000002F022B00000000000000003D
-:101750000CE00000000001F8000000100022162834
-:1017600000000000FFFF0000002816250000000018
-:101770000000FFFF00281A29000000000000000000
-:10178000002948C500000000000000000020480AB1
-:10179000000000000000000000202C1100000000EC
-:1017A000000000100022162300000000FFFF0000D0
-:1017B00000281625000000000000FFFF00281A2462
-:1017C0000000000000000000002948C500000000E3
-:1017D0000000000000731503000002050000000077
-:1017E0000020180500000000000000000073152410
-:1017F0000000020500000000002D14C500000000DC
-:1018000000000000003008A20000000000000000FE
-:101810000020480200000000000000000020280214
-:101820000000000000000000002020030000000075
-:101830000000000000802404000000000000000FF1
-:1018400000210225000000000000000014C000007C
-:101850000000068900000000002B140500000000B5
-:1018600000000001009016250000000000000000AC
-:10187000006000000000000B000000000060041188
-:10188000000003150000000000200411000000000B
-:101890000000000000600811000001B200002256A4
-:1018A00000204411000000000000001A00294A2214
-:1018B0000000000000000000C02000000000000048
-:1018C00000003FFF002F022F00000000000000007A
-:1018D0000CE000000000000000000000C020040038
-:1018E000000000000000225C002044110000000005
-:1018F0000000000300384A21000000000000A1FCA5
-:1019000000204411000000000000000100204811E8
-:10191000000000000000FFFF40281220000000002F
-:1019200000000010C0211A20000000000000FFFF8E
-:1019300040280E200000000000000010C0211620EA
-:10194000000000000000000000741465000002BBED
-:101950000001A1FD00604411000002E00000000150
-:10196000003306210000000000000000002F0221CB
-:1019700000000000000000000CC000000000021980
-:1019800000003FFF002F022F0000000000000000B9
-:101990000CC000000000021200000000C040040063
-:1019A000000000010000000000600000000006428E
-:1019B000000000000040040F0000021300000000BF
-:1019C000006000000000062E000000000060000023
-:1019D0000000064200000210006004110000031520
-:1019E0000000000000600000000001A000000000F6
-:1019F000006000000000019C00000000006000008A
-:101A0000000002BB0000000000600000000002A314
-:101A1000938000000020441100000000000000003E
-:101A2000002048080000000000000000002F022FE6
-:101A300000000000000000000AE000000000023288
-:101A400000000000006000000000013A00000000FB
-:101A50000040000000000236950000000020441104
-:101A60000000000000000000002F022F0000000016
-:101A7000000000000CE00000000002360000000042
-:101A8000C0404800000002339200000000204411D2
-:101A90000000000000000000C0204800000000001E
-:101AA0000000225600204411000000000000001633
-:101AB00000204811000000000000225C00204411BA
-:101AC000000000000000000300204811000000009A
-:101AD0000000A1FC002044110000000000000001F3
-:101AE00000204811000000000001A1FD0020441169
-:101AF000000000000000000000600411000002FB74
-:101B000000000000C04004000000000100000000D0
-:101B1000006000000000062E0000A00C0020441110
-:101B20000000000000000000C0204800000000008D
-:101B300000000000C040480000000000000000005D
-:101B4000006000000000000B0000001840210A2087
-:101B50000000000000000003002F0222000000002F
-:101B6000000000000AE000000000024C0000001429
-:101B70000020222D00000000000801010029222879
-:101B800000000000000000140020362800000000C3
-:101B90000000A30C00204411000000000000000021
-:101BA000C02048000000000000000000C0204800E5
-:101BB0000000000000000000C0404800000002518A
-:101BC00000000000006000000000000B000000109A
-:101BD00000600411000003153F8000000020041184
-:101BE000000000000000000000600811000001B2C9
-:101BF0000000225C002044110000000000000003EF
-:101C000000204811000000000000000000600000FB
-:101C10000000027C0000001700201E2D00000000C4
-:101C20000000000100211E2700000000000000004D
-:101C300014E000000000026A0000001200201E2DC7
-:101C4000000000000000FFFF00281E270000000029
-:101C50000000000000341C2700000000000000000D
-:101C600012C000000000025F0000000000201C11F4
-:101C70000000000000000000002F00E50000000050
-:101C80000000000008C00000000002620000000028
-:101C900000201407000000000000001200201E2D8C
-:101CA000000000000000001000211E2700000000BE
-:101CB0000000000000341C4700000000000000008D
-:101CC00012C00000000002670000000000201C118C
-:101CD0000000000000000000002F00E600000000EF
-:101CE0000000000008C000000000026A00000000C0
-:101CF0000020180700000000000000000060000045
-:101D0000000002C100002256002044110000000023
-:101D1000000000000034202300000000000000004C
-:101D200012C00000000002720000000000342044D5
-:101D3000000000000000000012C00000000002715E
-:101D40000000001600404811000002760000001854
-:101D500000404811000002760000000000342044DA
-:101D6000000000000000000012C00000000002752A
-:101D70000000001700404811000002760000001922
-:101D800000204811000000000000A1FC00204411C8
-:101D900000000000000000010020481100000000C9
-:101DA0000001A1FD00604411000002E900003FFFB6
-:101DB000002F022F00000000000000000CC00000F7
-:101DC0000000025600000000C040040000000001B6
-:101DD0000000001040210620000000000000FFFF6E
-:101DE000C0280A20000000000000001040210E2042
-:101DF000000000000000FFFFC028122000000000CB
-:101E00000000001040211620000000000000FFFF2D
-:101E1000C0881A200000000081000000002044114A
-:101E20000000000000000001002048110000000038
-:101E300000042004006044110000068A0000000035
-:101E4000006000000000062E00000000C0600000DE
-:101E5000000002A30000000500200A2D0000000081
-:101E60000000000800220A22000000000000002BF1
-:101E700000201A2D000000000000001C00201E2D74
-:101E8000000000000000700000281E270000000075
-:101E90000000000000311CE6000000000000002AE5
-:101EA00000201A2D000000000000000C00221A265D
-:101EB0000000000000000000002F00E6000000000D
-:101EC0000000000006E00000000002920000000098
-:101ED00000201C11000000000000000000200C1178
-:101EE000000000000000002B00203623000000004E
-:101EF0000000001000201811000000000000000089
-:101F000000691CE20000012F9380000000204411B2
-:101F10000000000000000000002048070000000052
-:101F200095000000002044110000000000000000A7
-:101F3000002F022F00000000000000000CE0000055
-:101F40000000029D0000000100333E2F0000000051
-:101F500000000000D90048000000000092000000CE
-:101F6000002044110000000000000000C0204800D4
-:101F7000000000000000001C0040362700000000A8
-:101F80000000000CC0220A20000000000000002910
-:101F9000002036220000000000000028C04036204B
-:101FA000000000000000A2A4002044110000000076
-:101FB000000000090020481100000000A1000000FE
-:101FC00000204411000000000000000100804811C2
-:101FD000000000000000002100201E2D0000000075
-:101FE00000000000002C1CE30000000000000021A5
-:101FF00000203627000000000000002200201E2DD7
-:102000000000000000000000002C1CE400000000A4
-:1020100000000022002036270000000000000023FE
-:1020200000201E2D0000000000000000003120A351
-:102030000000000000000000002D1D07000000004F
-:1020400000000023002036270000000000000024CC
-:1020500000201E2D0000000000000000003120C400
-:102060000000000000000000002D1D07000000001F
-:10207000000000240080362700000000000000213E
-:10208000002036230000000000000022002036243B
-:10209000000000000000000000311CA30000000050
-:1020A0000000002300203627000000000000000090
-:1020B00000311CC40000000000000024008036270E
-:1020C000000000000000001A002036270000000079
-:1020D0000000001B00203628000000000000001750
-:1020E00000201E2D00000000000000020021022739
-:1020F000000000000000000014C00000000002DC2E
-:102100000000000000400000000002D90000001A9A
-:1021100000203627000000000000001B00203628A9
-:10212000000000000000001700201E2D000000002D
-:102130000000000200210227000000000000000053
-:1021400014E00000000002D9000000030021022773
-:10215000000000000000000014E00000000002DCAD
-:102160000000002300201E2D0000000000000000E1
-:10217000002E00E1000000000000000002C000008E
-:10218000000002DC0000002100201E2D00000000E5
-:1021900000000000003120A100000000000000004D
-:1021A000002E00E8000000000000000006C0000053
-:1021B000000002DC0000002400201E2D00000000B2
-:1021C00000000000002E00E20000000000000000FF
-:1021D00002C00000000002DC0000002200201E2DD2
-:1021E0000000000000000000003120C200000000DC
-:1021F00000000000002E00E80000000000000000C9
-:1022000006C00000000002DC0000000000600000CA
-:10221000000006650000000000600000000002B53C
-:102220000000000000400000000002DE000000008E
-:1022300000600000000002B5000000000060000027
-:102240000000065C0000000000400000000002DE0C
-:102250000000000000600000000002A70000000075
-:1022600000400000000002DE0000001A00201E2DC9
-:10227000000000000000001B0080222D0000000074
-:102280000000001000221E230000000000000000DB
-:1022900000294887000000000000000000311CA356
-:1022A000000000000000001000221E2700000000B7
-:1022B0000000000000294887000000000000001016
-:1022C00000221E230000000000000000003120C496
-:1022D000000000000000FFFF00282228000000008E
-:1022E0000000000000894907000000000000001005
-:1022F00000221E2300000000000000000029488783
-:10230000000000000000001000221E21000000005C
-:102310000000000000294847000000000000000005
-:1023200000311CA3000000000000001000221E2746
-:1023300000000000000000000029488700000000A5
-:102340000000000000311CA100000000000000108F
-:1023500000221E270000000000000000002948475E
-:10236000000000000000001000221E2300000000FA
-:1023700000000000003120C4000000000000FFFF4A
-:102380000028222800000000000000000029490762
-:10239000000000000000001000221E2100000000CC
-:1023A00000000000003120C2000000000000FFFF1C
-:1023B00000282228000000000000000000894907D2
-:1023C000000000000000001000221E23000000009A
-:1023D0000000000000294887000000000000000104
-:1023E00000220A210000000000000000003308A2C3
-:1023F000000000000000001000221E22000000006B
-:102400000000001000212222000000000000000057
-:1024100000294907000000000000000000311CA353
-:10242000000000000000001000221E270000000035
-:1024300000000000002948870000000000000001A3
-:1024400000220A210000000000000000003008A265
-:10245000000000000000001000221E22000000000A
-:1024600000000010002122220000000000000000F7
-:1024700000294907000000000000001000221E2370
-:102480000000000000000000003120C40000000037
-:102490000000FFFF002822280000000000000000CC
-:1024A000002949070000000000000000003808C5AE
-:1024B00000000000000000000030084100000000A3
-:1024C0000000000100220A220000000000000000BD
-:1024D000003308A2000000000000001000221E22AD
-:1024E0000000000000000010002122220000000077
-:1024F00000000000008949070000000000000017EC
-:102500000020222D000000000000000014C0000088
-:1025100000000318FFFFFFEF002806210000000065
-:10252000000000140020222D000000000000F8E050
-:1025300000204411000000000000000000294901B3
-:1025400000000000000000000089490100000000B8
-:102550000000000000204811000000000000000002
-:102560000020481100000000060A02000080481107
-:102570000000000000000000C0200000000000007B
-:1025800097000000C020441100000000000000007F
-:10259000C0204811000000008A0000000020441103
-:1025A00000000000000000000020481100000000B2
-:1025B0000000225C00204411000000000000000028
-:1025C000C0204800000000000000A1FC00204411D1
-:1025D0000000000000000000C020480000000000D3
-:1025E00000000000C0200400000000000000000007
-:1025F00000A0000A00000000970000000020441125
-:102600000000000000000000002048110000000051
-:102610008A000000002044110000000000000000BB
-:1026200000204811000000000000225C002044113E
-:102630000000000000000000C02048000000000072
-:102640000000A1FC00204411000000000000000078
-:10265000C02048000000000000000000C02004006E
-:10266000000000000000000000A0000A00000000C0
-:10267000970000000020441100000000000000004E
-:1026800000204811000000008A00000000204411D2
-:1026900000000000000000000020481100000000C1
-:1026A0000000225C00204411000000000000000037
-:1026B000C0204800000000000000A1FC00204411E0
-:1026C0000000000000000000C020480000000000E2
-:1026D0000001A1FD002044110000000000000000E6
-:1026E000D90048000000000000000000C0200400E5
-:1026F000000000000000000000A0000A0000000030
-:1027000000002257002044110000000000000003D8
-:10271000C0484A20000000000000225D0020441153
-:102720000000000000000000C04048000000000061
-:1027300000000000006000000000064200000000F1
-:10274000C0200800000000000000225C00204411AE
-:10275000000000000000000300384A2200000000D2
-:102760000000A1FC00204411000000000000000057
-:10277000C0204800000000000001A1FD002044111D
-:102780000000000000000000002F022200000000F6
-:10279000000000000CE0000000000000000000004D
-:1027A00040204800000000000000000140304A20A6
-:1027B0000000000000000002C0304A2000000000BD
-:1027C0000000000100530A220000034B0000003FFC
-:1027D000C0280A20000000008100000000204411F1
-:1027E000000000000000000100204811000000006F
-:1027F000000021F800204411000000000000001833
-:102800000020481100000000000421F9006044117C
-:102810000000068A000000110021023000000000C4
-:102820000000000014E00000000003540000001449
-:10283000002F022200000000000000000CC0000079
-:10284000000003640000201000204411000000007C
-:102850000000800000204811000000000001A2A438
-:102860000020441100000000000000000060480249
-:102870000000036E00002100002044110000000051
-:1028800000000000C0204800000000000000000020
-:10289000C02048000000000000000000C0204800E8
-:1028A0000000000000000000C040480000000000E0
-:1028B00000000004002F02220000000000000000C1
-:1028C0000CC000000000036A00002010002044112A
-:1028D00000000000000080000020481100000000FF
-:1028E0000001A2A40020441100000000000000002C
-:1028F000004048020000035F00000028002F022271
-:1029000000000000000000000CC00000000005BD39
-:102910000001A2A4002044110000000000000000FB
-:10292000004048020000035F0000002C0020362613
-:102930000000000000000049002018110000000005
-:102940000000003F002048110000000000000001CE
-:1029500000331A260000000000000000002F0226AD
-:1029600000000000000000000CC000000000037028
-:102970000000002C00801A2D000000000000003F25
-:10298000C0280A200000000000000015002F0222CD
-:1029900000000000000000000CE0000000000386C2
-:1029A00000000006002F02220000000000000000CE
-:1029B0000CE00000000003B100000016002F02220E
-:1029C00000000000000000000CE00000000003B563
-:1029D00000000020002F0222000000000000000084
-:1029E0000CE000000000039C0000000F002F0222FA
-:1029F00000000000000000000CE00000000003A840
-:102A000000000010002F0222000000000000000063
-:102A10000CE00000000003A80000001E002F0222AE
-:102A200000000000000000000CE000000000039027
-:102A30000000A2A4002044110000000000000000DB
-:102A400000404802000000000800000000290A229F
-:102A5000000000000000000340210E2000000000E4
-:102A60000000000CC021122000000000000800003F
-:102A7000002812240000000000000014C0221620CC
-:102A80000000000000000000002914A40000000065
-:102A90000000A2A40020441100000000000000007B
-:102AA000002948A2000000000000A1FE00204411FF
-:102AB000000000000000000000404803000000008B
-:102AC000810000000020441100000000000000010F
-:102AD0000020481100000000000021F800204411EF
-:102AE0000000000000000016002048110000000057
-:102AF000000421F9006044110000068A000000155E
-:102B000000210230000000000000000014E000007E
-:102B1000000003920000210E00204411000000007C
-:102B200000000000C020480000000000000000007D
-:102B3000C0204800000000000000A2A400204411B2
-:102B400000000000000000000040480200000000FB
-:102B5000810000000020441100000000000000017E
-:102B60000020481100000000000021F8002044115E
-:102B700000000000000000170020481100000000C5
-:102B8000000421F9006044110000068A00000003DF
-:102B900000210230000000000000000014E00000EE
-:102BA0000000039E000021080020441100000000E6
-:102BB00000000000C02048000000000000000000ED
-:102BC000C0204800000000000000A2A40020441122
-:102BD000000000000000000000404802000000006B
-:102BE0000000A2A40020441100000000000000002A
-:102BF0000020480200000000800000000020441176
-:102C0000000000000000000000204811000000004B
-:102C100081000000002044110000000000000010AE
-:102C200000204811000000000000000000200010FB
-:102C3000000000000000000014C00000000003AE0F
-:102C40000000000000400000000000000000201014
-:102C50000020441100000000000080000020481106
-:102C6000000000000001A2A40020441100000000A8
-:102C70000000000600404811000000000000201085
-:102C800000204411000000000000800000204811D6
-:102C9000000000000001A2A4002044110000000078
-:102CA00000000016006048110000036E00000000E4
-:102CB000004000000000000000000000C0200800EC
-:102CC0000000000000000000C0200C000000000018
-:102CD0000000001D00210223000000000000000091
-:102CE00014E00000000003CE810000000020441129
-:102CF000000000000000000100204811000000005A
-:102D0000000021F80020441100000000000000181D
-:102D10000020481100000000000421F90060441167
-:102D20000000068A000000110021023000000000AF
-:102D30000000000014E00000000003C000002100BB
-:102D400000204411000000000000000000204802A4
-:102D50000000000000000000002048030000000008
-:102D6000BABECAFE0020481100000000CAFEBABE6A
-:102D70000020481100000000000020100020441135
-:102D8000000000000000800000204811000000004A
-:102D90000000A2A400204411000000000000000474
-:102DA0000040481100000000000021700020441184
-:102DB00000000000000000000020480200000000A9
-:102DC0000000000000204803000000008100000017
-:102DD00000204411000000000000000A00204811FB
-:102DE00000000000000000000020001000000000B3
-:102DF0000000000014C00000000003D38C0000009D
-:102E00000020441100000000CAFEBABE0040481174
-:102E100000000000810000000020441100000000BC
-:102E200000000001002048110000000000003FFFEA
-:102E300040280A20000000008000000040280E20EA
-:102E40000000000040000000C02812200000000028
-:102E500000040000006946220000068A000000000D
-:102E6000002014100000000000000000002F0223CA
-:102E700000000000000000000CC00000000003E1A2
-:102E800000000000C0401800000003E400003FFF05
-:102E9000C0281A2000000000000400000069462637
-:102EA0000000068A0000000000201810000000004A
-:102EB00000000000002F02240000000000000000BD
-:102EC0000CC00000000003E700000000C0401C0030
-:102ED000000003EA00003FFFC0281E2000000000A1
-:102EE00000040000006946270000068A0000000078
-:102EF00000201C1000000000000000000020440220
-:102F00000000000000000000002820C500000000B4
-:102F100000000000004948E800000000A580000013
-:102F200000200811000000000000200000200C110B
-:102F30000000000083000000006044110000041243
-:102F4000000000000020440200000000000000001B
-:102F5000C0204800000000000000000040204800A1
-:102F6000000000000000001FC0210220000000003F
-:102F70000000000014C00000000003F70000201053
-:102F800000204411000000000000800000204811D3
-:102F9000000000000000FFFFC0481220000003FFF7
-:102FA000A780000000200811000000000000A00021
-:102FB00000200C110000000083000000006044119C
-:102FC0000000041200000000002044020000000085
-:102FD00000000000C02048000000000000000000C9
-:102FE000C0204800000000000000FFFFC0281220A1
-:102FF00000000000830000000020441100000000D9
-:103000000000000000304883000000008400000041
-:10301000002044110000000000000000C020480013
-:1030200000000000000000001D0000000000000083
-:103030008300000000604411000004120000000042
-:10304000C040040000000001A98000000020081119
-:10305000000000000000C00000400C11000003FA56
-:10306000AB80000000200811000000000000F8E024
-:1030700000400C11000003FAAD8000000020081190
-:10308000000000000000F88000400C11000003FA6E
-:10309000B380000000200811000000000000F3FCD5
-:1030A00000400C11000003FAAF800000002008115E
-:1030B000000000000000E00000400C11000003FAD6
-:1030C000B180000000200811000000000000F000A6
-:1030D00000400C11000003FA83000000002044119E
-:1030E00000000000000021480020481100000000FE
-:1030F00084000000002044110000000000000000D7
-:10310000C020480000000000000000001D0000007A
-:10311000000000000000000000800000000000002F
-:1031200001182000C0304620000000000000000010
-:10313000D90048000000000000000000C02004008A
-:10314000000000000000000000A0000A00000000D5
-:103150000218A000C030462000000000000000005F
-:10316000D90048000000000000000000C02004005A
-:10317000000000000000000000A0000A00000000A5
-:103180000318C000C030462000000000000000000E
-:10319000D90048000000000000000000C02004002A
-:1031A000000000000000000000A0000A0000000075
-:1031B0000418F8E0C03046200000000000000000C5
-:1031C000D90048000000000000000000C0200400FA
-:1031D000000000000000000000A0000A0000000045
-:1031E0000518F880C03046200000000000000000F4
-:1031F000D90048000000000000000000C0200400CA
-:10320000000000000000000000A0000A0000000014
-:103210000618E000C030462000000000000000005A
-:10322000D90048000000000000000000C020040099
-:10323000000000000000000000A0000A00000000E4
-:103240000718F000C0304620000000000000000019
-:10325000D90048000000000000000000C020040069
-:10326000000000000000000000A0000A00000000B4
-:103270000818F3FCC03046200000000000000000E9
-:10328000D90048000000000000000000C020040039
-:10329000000000000000000000A0000A0000000084
-:1032A0000000003000200A2D000000000000000097
-:1032B000C0290C4000000000000000300020362330
-:1032C0000000000000000000C0200400000000001A
-:1032D0000000000000A0000A0000000086000000BE
-:1032E00000204411000000000000000000404801E0
-:1032F0000000000085000000C02044110000000014
-:103300000000000000404801000000000000217C97
-:10331000002044110000000000000000C020480010
-:103320000000000000000000C02048000000000075
-:1033300000000000C02048000000000081000000E4
-:10334000002044110000000000000001002048118E
-:103350000000000000000000C02008000000000085
-:103360000000000017000000000000000004217FA2
-:10337000006044110000068A0000001F0021023096
-:10338000000000000000000014C000000000000069
-:103390000000000000404C02000004480000000053
-:1033A000C0200C000000000000000000C020100041
-:1033B0000000000000000000C02014000000000019
-:1033C00000000000C0201800000000000000000005
-:1033D000C0201C000000000000007F0000280A211F
-:1033E0000000000000004500002F02220000000045
-:1033F000000000000CE00000000004560000000087
-:10340000C0202000000000000000000017000000A5
-:10341000000000000000001000280A230000000047
-:1034200000000010002F0222000000000000000039
-:103430000CE000000000045E810000000020441148
-:103440000000000000000001002048110000000002
-:1034500000040000006946240000068A0000000005
-:1034600000400000000004638100000000204411BF
-:1034700000000000000000000020481100000000D3
-:103480000000216D00204411000000000000000039
-:103490000020480400000000000000000060480513
-:1034A0000000068F00000000002824F0000000004B
-:1034B0000000000700280A230000000000000001AF
-:1034C000002F022200000000000000000AE00000BF
-:1034D0000000046A00000000002F00C90000000086
-:1034E0000000000004E00000000004830000000071
-:1034F000004000000000049000000002002F0222A3
-:1035000000000000000000000AE000000000046F5E
-:1035100000000000002F00C90000000000000000B3
-:1035200002E00000000004830000000000400000F2
-:103530000000049000000003002F022200000000A1
-:10354000000000000AE00000000004740000000019
-:10355000002F00C900000000000000000CE0000087
-:103560000000048300000000004000000000049000
-:1035700000000004002F02220000000000000000F4
-:103580000AE000000000047900000000002F00C9DC
-:1035900000000000000000000AE0000000000483BA
-:1035A0000000000000400000000004900000000542
-:1035B000002F022200000000000000000AE00000CE
-:1035C0000000047E00000000002F00C90000000081
-:1035D0000000000006E0000000000483000000007E
-:1035E000004000000000049000000006002F0222AE
-:1035F00000000000000000000AE00000000004835A
-:1036000000000000002F00C90000000000000000C2
-:1036100008E00000000004830000000000400000FB
-:103620000000049000007F0000280A210000000034
-:1036300000004500002F02220000000000000000F2
-:103640000AE00000000000000000000800210A233A
-:10365000000000000000000014C000000000048D05
-:10366000000021690020441100000000000000005B
-:10367000C02048000000000000000000C0204800FA
-:103680000000000000000000C02048000000000012
-:10369000CAFEBABE00404811000000000000000051
-:1036A000C02044000000000000000000C020000016
-:1036B0000000000000000000C040480000000000C2
-:1036C00000007F0000280A210000000000004500E3
-:1036D000002F022200000000000000000AE00000AD
-:1036E0000000049600000000C02000000000000060
-:1036F00000000000C02000000000000000000000EA
-:10370000C0400000000000000000000000404C0825
-:103710000000045600000000C02008000000000067
-:103720000000001040210E200000000000000011E9
-:10373000402112200000000000000012402116204D
-:10374000000000000000216900204411000000007A
-:1037500000000000002048020000000000000000FF
-:1037600000210225000000000000000014E000001D
-:10377000000004A000040000C0494A20000004A189
-:10378000FFFBFFFFC0284A200000000000000000EF
-:1037900000210223000000000000000014E00000EF
-:1037A000000004AD00000000C02048000000000040
-:1037B00000000000C02048000000000000000000E1
-:1037C00000210224000000000000000014C00000DE
-:1037D00000000000810000000020441100000000F3
-:1037E0000000000C00204811000000000000000054
-:1037F00000200010000000000000000014C00000C5
-:10380000000004A9A00000000020441100000000F6
-:10381000CAFEBABE0040481100000000810000004E
-:1038200000204411000000000000000400204811A6
-:10383000000000000000216B002044110000000087
-:1038400000000000C02048100000000081000000BF
-:103850000020441100000000000000050020481175
-:10386000000000000000216C002044110000000056
-:1038700000000000C0204810000000000000000010
-:10388000002F022400000000000000000CE00000F7
-:10389000000000000000000000400000000004A73D
-:1038A00000000000C0210A2000000000000000000D
-:1038B00014C00000000004C081000000002044117A
-:1038C000000000000000000000204811000000007F
-:1038D0000000216D002044110000000000000000E5
-:1038E000C02048000000000000000000C060480048
-:1038F0000000068F0000000000400000000004C42B
-:1039000081000000002044110000000000000001C0
-:10391000002048110000000000040000C0294620DB
-:103920000000000000000000C06000000000068AE7
-:103930000000000100210222000000000000000041
-:1039400014C00000000004CB0000216900204411D5
-:103950000000000000000000C0204800000000003F
-:1039600000000000C020480000000000000000002F
-:103970000020481000000000CAFEBABE00404811F6
-:103980000000000000000000C02044000000000013
-:1039900000000000C040481000000000810000004E
-:1039A0000020441100000000000000010020481128
-:1039B00000000000000021F8002044110000000079
-:1039C0000000000E0020481100000000000421F952
-:1039D000006044110000068A00000000002102304F
-:1039E000000000000000000014C00000000004CD32
-:1039F00000002180002044110000000000000000B1
-:103A0000C02048000000000000000000C0200000AE
-:103A10000000000000000000C0204800000000007E
-:103A200000000000C02000000000000000000000B6
-:103A3000C0404800000000000000000300333E2F9B
-:103A40000000000000000001002102210000000031
-:103A50000000000014E00000000004FD0000002C45
-:103A600000200A2D000000000004000018E00C11E6
-:103A7000000004EC0000000100333E2F00000000B5
-:103A80000000216900204411000000000000000037
-:103A90000020480200000000000000000020480351
-:103AA000000000000000000800300A2200000000B2
-:103AB00000000000C02048000000000000000000DE
-:103AC000C0204800000000000000216900204411CF
-:103AD000000000000000000000204802000000007C
-:103AE0000000000000204803000000000000000863
-:103AF00000300A220000000000000000C020480042
-:103B00000000000000000000D8C04800000004E0F1
-:103B100000002169002044110000000000000000A6
-:103B200000204802000000000000000000204803C0
-:103B3000000000000000000800300A220000000021
-:103B400000000000C020480000000000000000004D
-:103B5000C0204800000000000000002D0020122DB1
-:103B6000000000000000000000290C83000000009D
-:103B70000000216900204411000000000000000046
-:103B80000020480200000000000000000020480360
-:103B9000000000000000000800300A2200000000C1
-:103BA00000000000C02048000000000000000000ED
-:103BB000C020480000000000000000110021022485
-:103BC000000000000000000014C000000000000021
-:103BD0000000000000400000000004A70000002CCE
-:103BE000C0203620000000000000002DC04036201C
-:103BF000000000000000000F002102210000000072
-:103C00000000000014C000000000050200000000D9
-:103C1000006000000000000B00000000D900000060
-:103C20000000000000000000C0400400000000018F
-:103C3000B50000000020441100000000000020003A
-:103C40000020481100000000B600000000204411D0
-:103C5000000000000000A00000204811000000004B
-:103C6000B700000000204411000000000000C00068
-:103C70000020481100000000B8000000002044119E
-:103C8000000000000000F8E00020481100000000E3
-:103C9000B900000000204411000000000000F8807E
-:103CA0000020481100000000BA000000002044116C
-:103CB000000000000000E0000020481100000000AB
-:103CC000BB00000000204411000000000000F000D4
-:103CD0000020481100000000BC000000002044113A
-:103CE000000000000000F3FC00204811000000006C
-:103CF00081000000002044110000000000000002CC
-:103D00000020481100000000000000FF00280E30D5
-:103D10000000000000000000002F0223000000004F
-:103D2000000000000CC000000000051600000000AC
-:103D3000C0200800000000000000000014C00000C7
-:103D40000000052B0000000000200C110000000006
-:103D50000000001C00203623000000000000002BA3
-:103D60000020362300000000000000290020362338
-:103D700000000000000000280020362300000000A2
-:103D8000000000170020362300000000000000257E
-:103D9000002036230000000000000026002036230B
-:103DA0000000000000000015002036230000000085
-:103DB000000000160020362300000000FFFFE00096
-:103DC00000200C110000000000000021002036231C
-:103DD0000000000000000022002036230000000048
-:103DE00000001FFF00200C11000000000000002355
-:103DF00000203623000000000000002400203623AD
-:103E000000000000F1FFFFFF00283A2E0000000034
-:103E10000000001AC0220E20000000000000000078
-:103E20000029386E000000008100000000204411CD
-:103E30000000000000000006002048110000000003
-:103E40000000002A4020362000000000870000000B
-:103E5000002044110000000000000000C0204800C5
-:103E6000000000000000A1F4002044110000000048
-:103E700000000000002048100000000000000000CA
-:103E800000200C110000000000000030002036234C
-:103E9000000000009D000000002044110000000010
-:103EA0000000001F40214A20000000009600000092
-:103EB000002044110000000000000000C020480065
-:103EC0000000000000000000C0200C000000000006
-:103ED00000000000C0201000000000000000001FD3
-:103EE00000211624000000000000000014C00000A3
-:103EF000000000000000001D00203623000000002C
-:103F00000000000300281E2300000000000000083D
-:103F10000022222300000000FFFFF00000282228DA
-:103F20000000000000000000002920E80000000060
-:103F30000000001F002036280000000000000018CC
-:103F400000211E2300000000000000200020362772
-:103F50000000000000000002002216240000000003
-:103F600000000000003014A8000000000000001E47
-:103F700000203625000000000000000300211A2464
-:103F8000000000001000000000281A2600000000B9
-:103F9000EFFFFFFF00283A2E0000000000000000A5
-:103FA000004938CE000006780000000140280A20B1
-:103FB000000000000000000640280E200000000065
-:103FC00000000300C02812200000000000000008CC
-:103FD000002112240000000000000000C020162074
-:103FE0000000000000000000C0201A2000000000B7
-:103FF000000000000021022200000000000000007C
-:1040000014C000000000056381000000002044117E
-:104010000000000000000001002048110000000026
-:104020000000225800300A240000000000040000B4
-:10403000006946220000068A000021690020441120
-:104040000000000000000000002048050000000003
-:104050000002000000294A260000000000000000C5
-:104060000020481000000000CAFEBABE002048111F
-:104070000000000000000002002F022300000000EA
-:10408000000000000CC000000000056B00000000F4
-:10409000C0201C100000000000000000C040000014
-:1040A0000000057900000002002F0223000000003C
-:1040B000000000000CC000000000056B8100000043
-:1040C0000020441100000000000000010020481101
-:1040D000000000000000225800300A240000000008
-:1040E00000040000006946220000068A000000006B
-:1040F000C0201C100000000000000000C0400000B4
-:104100000000057900000000002F022300000000DD
-:10411000000000000CC000000000056F000000005F
-:10412000C0201C000000000000000000C040000093
-:104130000000057900000004002F022300000000A9
-:10414000000000000CC000000000057781000000A6
-:104150000020441100000000000000000020481171
-:10416000000000000000216D00204411000000004C
-:1041700000000000C0204800000000000000000017
-:10418000C06048000000068F0000000000401C10C6
-:104190000000057900000000C020000000000000C1
-:1041A00000000000C040000000000000000000000F
-:1041B0000EE000000000057B000000000060000031
-:1041C000000005C600000000002F022400000000CF
-:1041D000000000000CC000000000058C0000A2B729
-:1041E00000204411000000000000000000204807EB
-:1041F00000000000810000000020441100000000C9
-:104200000000000100204811000000000004A2B6D8
-:10421000006044110000068A0000001A00212230CC
-:104220000000000000000006002226300000000010
-:1042300000042004006044110000068A0000A2C4AB
-:10424000002044110000000000000000003048E998
-:10425000000000000000000000E000000000058AEF
-:104260000000A2D100204411000000000000000066
-:1042700000404808000000000000A2D100204411C6
-:10428000000000000000000100504A28000000006B
-:1042900000000001002F02240000000000000000C8
-:1042A0000CC000000000059D0000A2BB00204411CE
-:1042B000000000000000000000204807000000008F
-:1042C00081000000002044110000000000000001F7
-:1042D00000204811000000000004A2BA0060441150
-:1042E0000000068A0000001A0021223000000000B1
-:1042F0000000000600222630000000000004200418
-:10430000006044110000068A0000A2C5002044118C
-:104310000000000000000000003048E9000000003C
-:104320000000000000E000000000059B0000A2D299
-:104330000020441100000000000000000040480878
-:10434000000000000000A2D2002044110000000084
-:104350000000000100504A28000000000000000298
-:10436000002F022400000000000000000CC000002C
-:10437000000005AE0000A2BF0020441100000000B4
-:10438000000000000020480700000000810000003D
-:10439000002044110000000000000001002048112E
-:1043A000000000000004A2BE006044110000068A64
-:1043B0000000001A0021223000000000000000066A
-:1043C0000022263000000000000420040060441198
-:1043D0000000068A0000A2C6002044110000000070
-:1043E00000000000003048E900000000000000006C
-:1043F00000E00000000005AC0000A2D30020441142
-:10440000000000000000000000404808000000001C
-:104410000000A2D3002044110000000000000001B1
-:1044200000504A28000000000000A2C300204411F0
-:10443000000000000000000000204807000000000D
-:104440008100000000204411000000000000000175
-:1044500000204811000000000004A2C200604411C6
-:104460000000068A0000001A00212230000000002F
-:104470000000000600222630000000000004200496
-:10448000006044110000068A0000A2C70020441109
-:104490000000000000000000003048E900000000BB
-:1044A0000000000000E00000000005BB0000A2D4F6
-:1044B00000204411000000000000000000404808F7
-:1044C000000000000000A2D4002044110000000001
-:1044D0000000000100504A28000000008500000094
-:1044E00000204411000000000000000000204801EE
-:1044F000000000000000304A0020441100000000CD
-:104500000100000000204811000000000000000031
-:1045100000400000000005C1A4000000C0204411BC
-:104520000000000000000000C04048000000000043
-:1045300000000000C0600000000005C60000000090
-:10454000C0400400000000010000002C00203621C3
-:104550000000000081000000002044110000000065
-:1045600000000006002048110000000000000000CC
-:10457000002F023000000000000000000CC000000E
-:10458000000005CD00000000002004110000000024
-:104590000000003000403621000005E0000000303F
-:1045A0000020062D0000000000007E0000280621EB
-:1045B0000000000000000000002F022100000000A9
-:1045C000000000000CE00000000005E08100000099
-:1045D00000204411000000000000000100204811EC
-:1045E000000000000004A092006044110000068A50
-:1045F0000000003100203630000000000004A093CD
-:10460000006044110000068A0000003200203630AD
-:10461000000000000004A2B6006044110000068AF9
-:104620000000003300203630000000000004A2BA71
-:10463000006044110000068A00000034002036307B
-:10464000000000000004A2BE006044110000068AC1
-:104650000000003500203630000000000004A2C237
-:10466000006044110000068A000000360020363049
-:104670000000000000042004006044110000068ACD
-:104680000001A2A400204411000000000000003F2F
-:1046900000204811000000000000003F00204811E9
-:1046A000000000000000003F002048110000000052
-:1046B0000000003F0020481100000000000000053D
-:1046C00000204811000000000000A1F40020441167
-:1046D0000000000000000000002048110000000061
-:1046E00088000000002044110000000000000001CC
-:1046F000002048110000000081000000002044114B
-:10470000000000000000000600204811000000002A
-:1047100000000001002F0230000000000000000037
-:104720000CE0000000000629000000300020062DEB
-:104730000000000000000000002F02210000000027
-:10474000000000000CE000000000062981000000CD
-:10475000002044110000000000000001002048116A
-:104760000000000000007E0000280621000000007C
-:1047700000000000002F02210000000000000000E7
-:104780000CE00000000006020000A092002044118E
-:10479000000000000000003100204A2D0000000051
-:1047A0000000A0930020441100000000000000322F
-:1047B00000204A2D000000000000A2B60020441195
-:1047C000000000000000003300204A2D000000001F
-:1047D0000000A2BA002044110000000000000034D4
-:1047E00000204A2D000000000000A2BE002044115D
-:1047F000000000000000003500204A2D00000000ED
-:104800000000A2C200204411000000000000003699
-:1048100000204A2D00000000000000300020062D7E
-:1048200000000000000001FF002806210000000039
-:1048300000000000002F0221000000000000000026
-:104840000CE000000000062800000000002102210A
-:10485000000000000000000014C000000000060B73
-:104860000004A003006044110000068A0000A003B9
-:10487000002044110000000000000000002048104B
-:1048800000000000000000010021062100000000DF
-:104890000000000014C00000000006100004A0107A
-:1048A000006044110000068A0000A010002044119E
-:1048B0000000000000000000002048100000000080
-:1048C000000000010021062100000000000000009F
-:1048D000002F022100000000000000000CE000009A
-:1048E000000006280004A011006044110000068AA0
-:1048F0000000A01100204411000000000000000092
-:1049000000204810000000000004A01200604411C4
-:104910000000068A0000A0120020441100000000E0
-:104920000000000000204810000000000004A01358
-:10493000006044110000068A0000A013002044110A
-:1049400000000000000000000020481000000000EF
-:104950000004A014006044110000068A0000A014A6
-:10496000002044110000000000000000002048105A
-:10497000000000000004A015006044110000068A39
-:104980000000A015002044110000000000000000FD
-:1049900000204810000000000004A0160060441130
-:1049A0000000068A0000A01600204411000000004C
-:1049B0000000000000204810000000000004A017C4
-:1049C000006044110000068A0000A0170020441176
-:1049D000000000000000000000204810000000005F
-:1049E00000042004006044110000068A0000002C2E
-:1049F0000080062D00000000FF0000000020441190
-:104A0000000000000000000000204811000000002D
-:104A1000000000010020481100000000000000021A
-:104A20000080481100000000000000000EE00000BF
-:104A30000000063A000000300020062D00000000B3
-:104A40000000000200280621000000000000000015
-:104A5000002F022100000000000000000CE0000018
-:104A60000000063881000000002044110000000012
-:104A70000000000100204811000000000004200494
-:104A8000006044110000068A000010000020081198
-:104A9000000000000000002B002036220000000073
-:104AA00000000000006000000000063E0000000062
-:104AB00000600000000005C69800000000204411BE
-:104AC000000000000000000000804811000000000D
-:104AD00000000000C06000000000063E0000000072
-:104AE000C0400400000000010000A2A40020441106
-:104AF000000000000000002200204811000000001B
-:104B000089000000002044110000000000000001A6
-:104B1000004048110000062A9700000000204411C0
-:104B2000000000000000000000204811000000000C
-:104B30008A00000000204411000000000000000076
-:104B4000004048110000062A00000000006000003C
-:104B50000000065900002010002044110000000051
-:104B60000000800000204811000000000001A2A405
-:104B7000C020441100000000000000160060481131
-:104B80000000036E0000201000204411000000000F
-:104B9000000100000020481100000000810000001A
-:104BA0000020441100000000000000010020481116
-:104BB000000000000000217C0020441100000000E3
-:104BC000098000000020481100000000FFFFFFFFE7
-:104BD00000204811000000000000000000204811E3
-:104BE00000000000000000001700000000000000AE
-:104BF0000004217F006044110000068A0000001FAD
-:104C000000210230000000000000000014C000007D
-:104C1000000000000000000400404C11000006539A
-:104C2000000000000040000000000000000000172D
-:104C300000201E2D000000000000000400291E2797
-:104C40000000000000000017008036270000000070
-:104C50000000001700201E2D00000000FFFFFFFBDA
-:104C600000281E27000000000000001700803627E3
-:104C7000000000000000001700201E2D00000000B2
-:104C80000000000800291E27000000000000001797
-:104C900000803627000000000000001700201E2DB5
-:104CA00000000000FFFFFFF700281E2700000000A3
-:104CB00000000017008036270000000000002010D0
-:104CC0000020441100000000000080000020481176
-:104CD000000000000001A2A4002044110000000018
-:104CE00000000016006048110000036E0000201054
-:104CF00000204411000000000001000000204811C5
-:104D0000000000000000217C002044110000000091
-:104D1000018000000020481100000000FFFFFFFF9D
-:104D20000020481100000000000000000020481191
-:104D3000000000000000000017000000000000005C
-:104D4000810000000020441100000000000000016C
-:104D500000204811000000000004217F0060441181
-:104D60000000068A0000001F002102300000000041
-:104D70000000000014C000000000068900000010C0
-:104D800000404C110000066F00000000C02004002D
-:104D9000000000000000000038C00000000000001B
-:104DA0000000001D00200A2D000000000000001E71
-:104DB00000200E2D000000000000001F0020122D1A
-:104DC00000000000000000200020162D0000000060
-:104DD00000002169002044110000000000000000D4
-:104DE00000204804000000000000000000204805EA
-:104DF000000000000000000000204801000000004A
-:104E0000CAFEBABE002048110000000000000004E5
-:104E1000003012240000000000000000002F006499
-:104E200000000000000000000CC000000000068828
-:104E30000000000300281A22000000000000000803
-:104E40000022122200000000FFFFF00000281224C0
-:104E50000000000000000000002910C40000000055
-:104E60000000001F00403624000000000000000089
-:104E70000080000000000000000000001AC00000D8
-:104E80000000068A9F00000000204411000000007E
-:104E9000CAFEBABE00204811000000000000000059
-:104EA0001AE000000000068D0000000000800000F5
-:104EB00000000000000000001AC000000000068F83
-:104EC0009E0000000020441100000000CAFEBABE8F
-:104ED0000020481100000000000000001AE000005F
-:104EE00000000692000000000080000000000000AA
-:104EF00000000000006000000000000B0000100037
-:104F000000600411000003150000000000200411DF
-:104F1000000000000000000000600811000001B265
-:104F20000000225C0020441100000000000000038B
-:104F3000002048110000000000002256002044110B
-:104F4000000000000000001B0020481100000000CD
-:104F50000000A1FC0020441100000000000000013E
-:104F600000204811000000000001A1FDC0204411F4
-:104F7000000000000000002100201E2D00000000A5
-:104F80000000001000221E27000000000000002486
-:104F90000020222D000000000000FFFF0028222832
-:104FA0000000000000000000002949070000000088
-:104FB0000000000000204811000000000000002256
-:104FC0000020222D000000000000FFFF0028222802
-:104FD0000000000000000000002949070000000058
-:104FE0000000000000204811000000000000002325
-:104FF00000201E2D000000000000001000221E27CF
-:105000000000000000000000002949070000000027
-:1050100000000000004048110000000000000000F7
-:105020000000000000000000000000000000000080
-:105030000000000000000000000000000000000070
-:105040000000000000000000000000000000000060
-:105050000000000000000000000000000000000050
-:105060000000000000000000000000000000000040
-:105070000000000000000000000000000000000030
-:105080000000000000000000000000000000000020
-:105090000000000000000000000000000000000010
-:1050A0000000000000000000000000000000000000
-:1050B00000000000000000000000000000000000F0
-:1050C00000000000000000000000000000000000E0
-:1050D00000000000000000000000000000000000D0
-:1050E00000000000000000000000000000000000C0
-:1050F00000000000000000000000000000000000B0
-:10510000000000000000000000000000000000009F
-:10511000000000000000000000000000000000008F
-:10512000000000000000000000000000000000007F
-:10513000000000000000000000000000000000006F
-:10514000000000000000000000000000000000005F
-:10515000000000000000000000000000000000004F
-:10516000000000000000000000000000000000003F
-:10517000000000000000000000000000000000002F
-:10518000000000000000000000000000000000001F
-:10519000000000000000000000000000000000000F
-:1051A00000000000000000000000000000000000FF
-:1051B00000000000000000000000000000000000EF
-:1051C00000000000000000000000000000000000DF
-:1051D00000000000000000000000000000000000CF
-:1051E00000000000000000000000000000000000BF
-:1051F00000000000000000000000000000000000AF
-:10520000000000000000000000000000000000009E
-:10521000000000000000000000000000000000008E
-:10522000000000000000000000000000000000007E
-:10523000000000000000000000000000000000006E
-:10524000000000000000000000000000000000005E
-:10525000000000000000000000000000000000004E
-:10526000000000000000000000000000000000003E
-:10527000000000000000000000000000000000002E
-:10528000000000000000000000000000000000001E
-:10529000000000000000000000000000000000000E
-:1052A00000000000000000000000000000000000FE
-:1052B000014204FF05BD02500000000001C3016867
-:1052C000043F05BD00000000022502090250015103
-:1052D000000000000223024502A00241000000007D
-:1052E00003D705BD05BD05BD000000000646064705
-:1052F000031F05BD0000000005BD05C203200340DB
-:1053000000000000032A0282034203340000000070
-:1053100005BD05BD05BD05BD0000000005BD054E70
-:1053200005BD05BD0000000003BA05BD04B8034477
-:10533000000000000497044D043D05BD000000007E
-:1053400004CD05BD044104DA00000000044D05044D
-:10535000035103750000000005BD05BD05BD05BD79
-:105360000000000005BD05BD05BD05BD0000000035
-:1053700005BD05BD063C05C40000000005BD05BD1A
-:10538000000705BD0000000005BD05BD05BD05BD4C
-:105390000000000005BD05BD05BD05BD0000000005
-:1053A00003F803ED0408040600000000040E040ADC
-:1053B000040C041000000000041C04180424042041
-:1053C00000000000042C0428043404300000000015
-:1053D00005BD05BD043805BD0000000005BD05BDC7
-:1053E00005BD05BD0000000005BD05BD05BD05BD31
-:1053F000000000000002067606940006000000008F
-:00000001FF
diff --git a/firmware/radeon/RV635_pfp.bin.ihex b/firmware/radeon/RV635_pfp.bin.ihex
deleted file mode 100644
index f55292c97b79..000000000000
--- a/firmware/radeon/RV635_pfp.bin.ihex
+++ /dev/null
@@ -1,145 +0,0 @@
-:1000000000CA040000A00000007E828B007C038BED
-:10001000008001B8007C038B00D4401E00EE001E5F
-:1000200000CA040000A00000007E828B00C41838C3
-:1000300000CA240000CA2800009581A800C41C3A08
-:1000400000C3C00000CA080000CA0C00007C744B4A
-:1000500000C200050099C00000C41C3A007C744C2A
-:1000600000C0FFF000042C0400309002007D250049
-:1000700000351402007D350B00255403007CD5802B
-:1000800000259C030095C00400D5001B007EDDC147
-:10009000007D9D8000D6801B00D5801B00D4401EB3
-:1000A00000D5401E00D6401E00D6801E00D4801E03
-:1000B00000D4C01E009783D300D5C01E00CA08001C
-:1000C0000080001A00CA0C0000E4011E00D4001ECB
-:1000D0000080000C00C4183800E4013E00D4001E6B
-:1000E0000080000C00C4183800D4401E00EE001E32
-:1000F00000CA040000A00000007E828B00E4011E04
-:1001000000D4001E00D4401E00EE001E00CA0400F1
-:1001100000A00000007E828B00E4013E00D4001E9F
-:1001200000D4401E00EE001E00CA040000A0000023
-:10013000007E828B00CA180000D4401E00D5801EAD
-:100140000080005300D4007500D4401E00CA08008F
-:1001500000CA0C0000CA100000D4801900D4C018D6
-:1001600000D5001700D4801E00D4C01E00D5001E8C
-:1001700000E2001E00CA040000A00000007E828B86
-:1001800000CA080000D4806000D4401E0080000037
-:1001900000D4801E00CA080000D4806100D4401E34
-:1001A0000080000000D4801E00CA080000CA0C00B5
-:1001B00000D4401E00D4801600D4C01600D4801E87
-:1001C000008001B800D4C01E00C6084300CA0C005D
-:1001D00000CA10000094800400CA140000E420F358
-:1001E00000D4201300D5606500D4E01C00D5201C8D
-:1001F00000D5601C008000000006200100C60843F6
-:1002000000CA0C0000CA1000009483F700CA140052
-:1002100000E420F30080007900D4201300C60843D6
-:1002200000CA0C0000CA1000009883EF00CA140036
-:1002300000D400640080008D0000000000C414326F
-:1002400000C6184300C4082F0095400500C40C30B8
-:1002500000D4401E0080000000EE001E009583F5D3
-:1002600000C4103100D4403300D5206500D4A01C58
-:1002700000D4E01C00D5201C00E4015E00D4001E68
-:10028000008000000006200100CA1800000A2001BA
-:1002900000D6007600C408360098800700C61045D6
-:1002A0000095011000D4001F00D46062008000009F
-:1002B00000D4206200CC383500CC1433008401BB5C
-:1002C00000D4007200D5401E0080000000EE001E29
-:1002D00000E2001A008401BB00E2001A00CC104BBF
-:1002E00000CC0447002C9401007D098B0098400548
-:1002F000007D15CB00D4001A008001B800D4006D39
-:100300000034440100CC0C480098403A00CC2C4A00
-:100310000095800400CC0449008001B800D4001A84
-:1003200000D4C01A00282801008400F000CC10037B
-:100330000098801B0004380C008400F000CC1003EF
-:100340000098801700043808008400F000CC1003E7
-:100350000098801300043804008400F000CC1003DF
-:100360000098801400CC104C009A800900CC144DE9
-:10037000009840DC00D4006D00CC184800D5001A6D
-:1003800000D5401A008000C900D5801A0096C0D55B
-:1003900000D4006D008001B800D4006E009AC00344
-:1003A00000D4006D00D4006E0080000000EC007FDF
-:1003B000009AC0CC00D4006D008001B800D4006E5B
-:1003C00000CC140300CC180300CC1C03007D910367
-:1003D000007DD583007D190C0035CC1F0035701FC2
-:1003E000007CF0CB007CD08B00880000007E8E8BE0
-:1003F0000095C00400D4006E008001B800D4001A3B
-:1004000000D4C01A00CC080300CC0C0300CC1003AD
-:1004100000CC140300CC180300CC1C0300CC240334
-:1004200000CC28030035C41F0036B01F007C704B81
-:100430000034F01F007C704B0035701F007C704B47
-:10044000007D8881007DCCC1007E5101007E9541F8
-:10045000007C9082007CD4C2007C848B009AC00314
-:10046000007C8C8B002C88010098809E00D4006D4D
-:100470000098409C00D4006E00CC084C00CC0C4D81
-:1004800000CC104800D4801A00D4C01A00800101AA
-:1004900000D5001A00CC083200D40032009482D972
-:1004A00000CA0C0000D4401E0080000000D4001ED2
-:1004B00000E4011E00D4001E00CA080000CA0C009F
-:1004C00000CA100000D4401E00CA140000D4801ED0
-:1004D00000D4C01E00D5001E00D5401E00D54034FB
-:1004E0000080000000EE001E0028040400E2001A54
-:1004F00000E2001A00D4401A00CA380000CC0803F9
-:1005000000CC0C0300CC0C0300CC0C03009882BD83
-:1005100000000000008401BB00D7A06F0080000035
-:1005200000EE001F00CA040000C2FF0000CC083427
-:1005300000C13FFF007C74CB007CC90B007D010F24
-:10054000009902B0007C738B008401BB00D7A06FC0
-:100550000080000000EE001F00CA080000281900FB
-:10056000007D898B009580140028140400CA0C00BB
-:1005700000CA100000CA1C0000CA240000E2001FCC
-:1005800000D4C01A00D5001A00D5401A00CC1803B8
-:1005900000CC2C0300CC2C0300CC2C03007DA58BBD
-:1005A000007D9C4700984297000000000080016198
-:1005B00000D4C01A00D4401E00D4801E0080000069
-:1005C00000EE001E00E4011E00D4001E00D4401EF8
-:1005D00000EE001E00CA040000A00000007E828B16
-:1005E00000E4013E00D4001E00D4401E00EE001EB8
-:1005F00000CA040000A00000007E828B00CA080030
-:1006000000248C06000CCC060098C00600CC104ECE
-:100610000099000400D4007300E4011E00D4001E01
-:1006200000D4401E00D4801E0080000000EE001E9A
-:1006300000CA080000CA0C000034D01800251001C0
-:100640000095002100C17FFF00CA100000CA1400FD
-:1006500000CA180000D4801D00D4C01D007DB18BDD
-:1006600000C1420200C2C00100D5801D0034DC0E72
-:10067000007D5D4C007F734C00D7401E00D5001EEE
-:1006800000D5401E00C1420000C2C00000099C010C
-:100690000031DC10007F5F4C007F734C00042802A7
-:1006A000007D838000D5A86F00D5806600D7401EEE
-:1006B00000EC005E00C8240200C82402008001B8DB
-:1006C00000D6007600D4401E00D4801E00D4C01E88
-:1006D0000080000000EE001E0080000000EE001F01
-:1006E00000D4001F0080000000D4001F00D4001FB1
-:1006F0000088000000D4001F00000000000000007F
-:1007000000000000000000000000000000000000E9
-:1007100000000000000000000000000000000000D9
-:1007200000000000000000000000000000000000C9
-:1007300000000000000000000000000000000000B9
-:1007400000000000000000000000000000000000A9
-:100750000000000000000000000000000000000099
-:100760000000000000000000000000000000000089
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B0000000000000000000000000000000000039
-:1007C0000000000000000000000000000000000029
-:1007D0000000000000000000000000000000000019
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:1008000000010171000201780003008F0004007FE5
-:10081000000500030006003F000700320008012C1D
-:1008200000090046000A0036001001B6001700A2B9
-:100830000022013A00230149002000B400240125D0
-:100840000027004D0028006A002A0060002B00529B
-:10085000002F0065003200870034017F003C015604
-:10086000003F00720041018C0044012E00550173CD
-:100870000056017A0060000B00610034006200380D
-:1008800000630038006400380065003800660038F6
-:10089000006700380068003A00690041006A0048BB
-:1008A000006B0048006C0048006D0048006E004876
-:1008B000006F00480000000600000006000000066F
-:1008C0000000000600000006000000060000000610
-:1008D0000000000600000006000000060000000600
-:1008E00000000006000000060000000600000006F0
-:1008F00000000006000000060000000600000006E0
-:00000001FF
diff --git a/firmware/radeon/RV670_me.bin.ihex b/firmware/radeon/RV670_me.bin.ihex
deleted file mode 100644
index 9fbfc0e4438c..000000000000
--- a/firmware/radeon/RV670_me.bin.ihex
+++ /dev/null
@@ -1,1345 +0,0 @@
-:1000000000000000C020040000000000000000000C
-:1000100000A0000A000000000000FFFF00284621A9
-:100020000000000000000000D900480000000000AF
-:1000300000000000C02004000000000000000000DC
-:1000400000A0000A000000000000000000E0000026
-:100050000000000000010000C02946200000000050
-:1000600000000000D900480000000000000000006F
-:10007000C0200400000000000000000000A0000AF2
-:10008000000000008100000000204411000000007A
-:1000900000000001002048110000000000042004BE
-:1000A000006044110000067C0000000000600000B9
-:1000B0000000062400000000006000000000063878
-:1000C00000000000C02008000000000000000F0039
-:1000D000002816220000000000000008002116255C
-:1000E000000000000000001800203625000000007D
-:1000F0008D000000002044110000000000000004FA
-:10010000002F022500000000000000000CE00000AD
-:1001100000000018004120000040481100000019B4
-:100120000042200000204811000000008E00000066
-:1001300000204411000000000000002800204A2D8B
-:1001400000000000900000000020441100000000AA
-:100150000000000000204805000000000000000C26
-:1001600000211622000000000000000300281625D0
-:10017000000000000000001900211A220000000009
-:100180000000000400281A26000000000000000003
-:10019000002914C5000000000000001900203625C9
-:1001A0000000000000000000003A140200000000FF
-:1001B00000000016002116250000000000000003CA
-:1001C00000281625000000000000001700200E2D5A
-:1001D00000000000FFFFFFFC00280E2300000000CD
-:1001E00000000000002914A3000000000000001718
-:1001F00000203625000000000000800000280E22AC
-:10020000000000000000000700220E230000000094
-:10021000000000000029386E0000000020000000EF
-:1002200000280E22000000000000000600210E231E
-:1002300000000000000000000029386E00000000EF
-:100240000000000000220222000000000000000068
-:1002500014E0000000000038000000002EE0000064
-:1002600000000035000000002CE000000000003716
-:100270000000000000400E2D0000003900000008C2
-:1002800000200E2D00000000000000090040122D8B
-:10029000000000460000000100400E2D0000003963
-:1002A00000000000C0200C0000000000003FFFFC28
-:1002B0000028122300000000000000020022122487
-:1002C000000000000000001F00211E2300000000AD
-:1002D0000000000014E000000000003E00000008E4
-:1002E00000401C11000000410000000D00201E2DE8
-:1002F000000000000000000F00281E270000000082
-:100300000000000300221E27000000007FC0000044
-:1003100000281A23000000000000001400211A2603
-:10032000000000000000000100331A260000000059
-:100330000000000800221A26000000000000000053
-:1003400000290CC700000000000000270020362410
-:100350000000000000007F000028122100000000C3
-:1003600000001400002F0224000000000000000024
-:100370000CE000000000004B0000000100290E23EB
-:10038000000000000000000E0020362300000000E6
-:100390000000E0000020441100000000FFF8000011
-:1003A00000294A230000000000000000003A2C024F
-:1003B000000000000000000200220E2B00000000E0
-:1003C000FC00000000280E23000000000000000FC9
-:1003D000002036230000000000001FFF00294A23F0
-:1003E000000000000000002700204A2D000000004F
-:1003F000000000000020481100000000000000295B
-:1004000000200E2D00000000060A020000294A23E9
-:100410000000000000000000002048110000000063
-:100420000000000000204811000000000000000152
-:1004300000210222000000000000000014E0000083
-:1004400000000061000000002EE000000000005FDE
-:10045000000000002CE000000000005E0000000032
-:1004600000400E2D000000620000000100400E2D33
-:10047000000000620000000A00200E2D00000000B5
-:100480000000000B0040122D0000006A0000000078
-:10049000C0200C0000000000003FFFFC00281223D9
-:1004A00000000000000000020022122400000000F2
-:1004B0007FC0000000281623000000000000001488
-:1004C0000021162500000000000000010033162561
-:1004D000000000008000000000280E230000000043
-:1004E0000000000000290CA3000000003FFFFC00FA
-:1004F00000290E23000000000000001F00211E2321
-:10050000000000000000000014E000000000006D8A
-:100510000000010000401C11000000700000000DF0
-:1005200000201E2D00000000000000F000281E2703
-:10053000000000000000000400221E270000000050
-:100540008100000000204411000000000000000DA8
-:100550000020481100000000FFFFF0FF00281A30C3
-:10056000000000000000A02800204411000000004E
-:1005700000000000002948E6000000000000A0186C
-:1005800000204411000000003FFFFFFF00284A2325
-:10059000000000000000A010002044110000000036
-:1005A00000000000002048040000000000000030AF
-:1005B0000020162D00000000000000020029162572
-:1005C0000000000000000030002036250000000080
-:1005D000000000250020162D000000000000000093
-:1005E000002F00A300000000000000000CC000006D
-:1005F00000000083000000260020162D00000000EF
-:1006000000000000002F00A4000000000000000017
-:100610000CC000000000008400000000004000004A
-:100620000000008A000000250020362300000000A2
-:100630000000002600203624000000000000001703
-:1006400000201E2D000000000000000200210227F3
-:10065000000000000000000014E000000000008A1C
-:1006600000000000006000000000065900000000CB
-:10067000006000000000064D0000000200210E2274
-:10068000000000000000000014C000000000008D09
-:1006900000000012C040362000000093000000005F
-:1006A0002EE0000000000091000000002CE000009F
-:1006B000000000900000000200400E2D000000929B
-:1006C0000000000300400E2D000000920000000C0E
-:1006D00000200E2D00000000000000120020362334
-:1006E000000000000000000300210E2200000000B6
-:1006F0000000000014C00000000000980000A00CE2
-:10070000002044110000000000000000C02048004C
-:100710000000000000000000C0404800000000A0F1
-:100720000000A00C002044110000000000000000A8
-:100730000020481100000000000000002EE0000032
-:100740000000009E000000002CE000000000009D62
-:100750000000000200400E2D0000009F000000037A
-:1007600000400E2D0000009F0000000C00200E2D08
-:10077000000000000000000000204803000000000E
-:1007800000000000003A0C0200000000003F0000E2
-:1007900000280E23000000000000001000210E239E
-:1007A00000000000000000110020362300000000BF
-:1007B0000000001E0021022B0000000000000000CD
-:1007C00014C00000000000A700000016C020362062
-:1007D000000000000000001F0021022B00000000AC
-:1007E0000000000014C00000000000AA0000001576
-:1007F000C0203620000000000000000800210E2B61
-:10080000000000000000007F00280E230000000010
-:1008100000000000002F0223000000000000000084
-:100820000CE00000000000E10000000027000000D4
-:10083000000000000000000000600000000002A3B3
-:1008400000000001002F0223000000000000000053
-:100850000AE00000000000B300000000006000009B
-:100860000000013A81000000002044110000000057
-:100870000000000600204811000000000000000CED
-:1008800000221E300000000099800000002044116A
-:1008900000000000000000040020122D00000000F5
-:1008A00000000008002212240000000000000010D8
-:1008B00000201811000000000000000000291CE4C6
-:1008C0000000000000000000006048070000012F49
-:1008D0009B00000000204411000000000000000008
-:1008E00000204802000000009C000000002044118D
-:1008F00000000000000000000033146F0000000042
-:100900000000000100333E23000000000000000052
-:10091000D9004800000000000000000000203C0555
-:1009200000000000810000000020441100000000D1
-:100930000000000E00204811000000000000000030
-:1009400000201010000000000000E007002044110B
-:10095000000000000000000F0021022B000000003A
-:100960000000000014C00000000000CB00F8FF08E9
-:1009700000204811000000009800000000404811CD
-:10098000000000DC000000F000280E220000000043
-:10099000000000A0002F0223000000000000000063
-:1009A0000CC00000000000DA0000001100200E2D35
-:1009B0000000000000000001002F022300000000E2
-:1009C000000000000CE00000000000D50000000264
-:1009D000002F022300000000000000000CE00000D7
-:1009E000000000D400003F0000400C11000000D6C1
-:1009F00000001F0000400C11000000D600000F0096
-:100A000000200C11000000000038000900294A23D2
-:100A1000000000003F00000000280E2B0000000036
-:100A20000000000200220E2300000000000000076A
-:100A300000494A23000000DC00380F09002048115B
-:100A400000000000680000070020481100000000BE
-:100A50000000000800214A270000000000000000FC
-:100A60000020481100000000060A020000294A2464
-:100A700000000000000000000020481100000000FD
-:100A80000000000000204811000000000000A20249
-:100A9000002044110000000000FF000000280E228A
-:100AA000000000000000008000294A230000000030
-:100AB0000000002700200E2D00000000000000268E
-:100AC0000020122D0000000000000000002F008315
-:100AD00000000000000000000CE00000000000EA40
-:100AE000000000000060000000000653000000004D
-:100AF00000400000000000EB00000000006000006B
-:100B000000000656000000070020222D0000000013
-:100B10000000000500220E2200000000001000006E
-:100B200000280E23000000000000000000292068BB
-:100B30000000000000000000003A0C02000000006D
-:100B4000000000EF00280E2300000000000000005D
-:100B500000292068000000000000001700200E2D72
-:100B6000000000000000000300210223000000003C
-:100B70000000000014E00000000000F80000000B7E
-:100B800000210228000000000000000014C0000046
-:100B9000000000F8000004000029222800000000E6
-:100BA0000000001400203628000000000000001C97
-:100BB00000210E22000000000000000014C0000010
-:100BC000000000FD0000A30C002044110000000004
-:100BD0000000000000204811000000000000001E7E
-:100BE00000210E22000000000000000014C00000E0
-:100BF0000000010B0000A30F0020441100000000C2
-:100C00000000001100200E2D000000000000000177
-:100C1000002F022300000000000000000CC00000B4
-:100C200000000104FFFFFFFF004048110000010B1E
-:100C300000000002002F022300000000000000005E
-:100C40000CC00000000001070000FFFF0040481139
-:100C50000000010B00000004002F02230000000030
-:100C6000000000000CC000000000010A000000FFAE
-:100C7000004048110000010B000000010020481155
-:100C8000000000000002C400002044110000000029
-:100C90000000001F00210E220000000000000000E4
-:100CA00014C00000000001120000001040210E20BE
-:100CB00000000000000000130020362300000000A8
-:100CC0000000001840224A20000000000000001030
-:100CD000C0424A20000001140000000000200C1156
-:100CE0000000000000000013002036230000000078
-:100CF000000000000020481100000000000000007B
-:100D000000204811000000000000000A002010111F
-:100D10000000000000000000002F0224000000007E
-:100D2000000000000CE000000000011B00000000BB
-:100D300000204811000000000000000100531224B0
-:100D400000000117FFBFFFFF00283A2E000000003F
-:100D50000000001B00210222000000000000000033
-:100D600014C000000000012E81000000002044118A
-:100D7000000000000000000D0020481100000000ED
-:100D80000000001800220E3000000000FC000000EF
-:100D900000280E2300000000810000000020441104
-:100DA000000000000000000E0020481100000000BC
-:100DB0000000000000201010000000000000E00E05
-:100DC000002044110000000007F8FF08002048112F
-:100DD000000000000000000000294A23000000007D
-:100DE0000000001C00201E2D000000000000000874
-:100DF00000214A27000000000000000000204811E8
-:100E000000000000060A020000294A240000000039
-:100E10000000000000204811000000000000000059
-:100E200000204811000000000000000000800000C9
-:100E300000000000810000000020441100000000BC
-:100E40000000000100204811000000000000217C8B
-:100E50000020441100000000008000000020481124
-:100E60000000000000000000002048060000000014
-:100E70000000000800214A270000000000000000D8
-:100E800017000000000000000004217F00604411F2
-:100E90000000067C0000001F00210230000000005E
-:100EA0000000000014C000000000067B00000004E9
-:100EB00000404C1100000135810000000020441169
-:100EC00000000000000000010020481100000000A8
-:100ED000000021F800204411000000000000001C68
-:100EE0000020481100000000000421F900604411B6
-:100EF0000000067C0000001100210230000000000C
-:100F00000000000014E000000000013C00000000B0
-:100F100000800000000000000000000000600000F1
-:100F20000000000B00000000006004110000031529
-:100F3000000000000020041100000000000000007C
-:100F400000600811000001B2000000000060000015
-:100F5000000001600000FFFF40280E20000000009C
-:100F600000000010C0211220000000000000FFFF60
-:100F7000402806200000000000000010C0210A20C8
-:100F800000000000000000000034146100000000B8
-:100F90000000000000741882000002BB0001A1FDE7
-:100FA00000604411000002E000003FFF002F022F0C
-:100FB00000000000000000000CC00000000001471D
-:100FC00000000000C040040000000001000000001C
-:100FD000006000000000000B000000000060041131
-:100FE00000000315000000000020041100000000B4
-:100FF0000000000000600811000001B200003FFF87
-:10100000002F022F00000000000000000CE0000094
-:10101000000000000000000000600000000001600F
-:101020000000001040210E20000000000000FFFF23
-:10103000C0281220000000000000001040211620EF
-:10104000000000000000FFFFC0681A20000002BB83
-:101050000001A1FD00604411000002E000003FFF1C
-:10106000002F022F00000000000000000CC0000054
-:101070000000015800000000C04004000000000112
-:101080000000225C0020441100000000000000016C
-:1010900000300A2F000000000000000100210A2299
-:1010A000000000000000000300384A220000000099
-:1010B0000000225600204411000000000000001A29
-:1010C00000204811000000000000A1FC0020441195
-:1010D0000000000000000001008048110000000036
-:1010E00000000000006000000000000B0000000095
-:1010F000006000000000018F0000000000600000A0
-:10110000000001A000003FFF002F022F00000000A0
-:10111000000000000CE000000000000000000000E3
-:1011200000202C0800000000000000000020241116
-:101130000000000000000000002028110000000056
-:10114000000022560020441100000000000000169C
-:1011500000204811000000000000225C0020441123
-:101160000000000000000003002048110000000003
-:1011700093800000002044110000000000000002E5
-:1011800000221E290000000000000000007048EB53
-:101190000000019C0000000000600000000002BB95
-:1011A00000000001403306200000000000000000A5
-:1011B000C03024090000000000003FFF002F022F74
-:1011C00000000000000000000CE000000000000033
-:1011D0000000000000600000000002A3000000000A
-:1011E000002F022100000000000000000AE00000C3
-:1011F0000000018100000000006000000000013AD2
-:101200000000000000400000000001869500000082
-:10121000002044110000000000000000002F022107
-:1012200000000000000000000CE00000000001864B
-:1012300000000000C0204800000000000000000185
-:10124000005306210000018292000000002044119A
-:101250000000000000000000C0604800000001978E
-:101260000001A1FD00204411000000000000001159
-:101270000020062D00000000000000000078042A75
-:10128000000002FB00000000002028090000000010
-:1012900000003FFF002F022F0000000000000000B0
-:1012A0000CC000000000017400000000C0400400F9
-:1012B000000000010000021000600411000003158E
-:1012C00000003FFF002F022F000000000000000080
-:1012D0000CE000000000019400000015C020362042
-:1012E0000000000000000016C020362000000000B2
-:1012F0003F800000002004110000000046000000B4
-:1013000000600811000001B2000000000080000031
-:10131000000000000000A1FC0020441100000000BB
-:1013200000003FFF002F022F00000000000000001F
-:101330000CC000000000019B00000001008048116B
-:1013400000000000000000210080481100000000A3
-:101350000000FFFF40280E200000000000000010E9
-:10136000C0211220000000000000FFFF40281620CE
-:101370000000000000000010C0811A2000000000E2
-:101380008100000000204411000000000000000661
-:1013900000204811000000000000000800221E305C
-:1013A000000000000000002900201A2D00000000AD
-:1013B0000000E0000020441100000000FFFBFF09D6
-:1013C00000204811000000000000000F0020222D26
-:1013D0000000000000001FFF00294A280000000054
-:1013E000000000060020222D000000000000000088
-:1013F000002920E80000000000000000002048084C
-:101400000000000000000000002048110000000063
-:10141000060A020000294A26000000000000000021
-:1014200000204811000000000000000000204811CA
-:101430000000000000000100002018110000000062
-:101440000000000800621E280000012F00000008B4
-:1014500000822228000000000002C0000020441189
-:10146000000000000000001500600E2D000001BD0E
-:101470000000001600600E2D000001BD0000C00835
-:1014800000204411000000000000001700200E2D75
-:10149000000000000000000014C00000000001B9BE
-:1014A0000000000000200411000000000000000007
-:1014B0000020480100000000390000000020481111
-:1014C00000000000000000000020481100000000A3
-:1014D000000000000080480200000000000000182A
-:1014E00000202E2D0000000000000000003B0D63D6
-:1014F000000000000000000800224A230000000055
-:101500000000001000224A23000000000000001824
-:1015100000224A2300000000000000000080480371
-:101520000000000000000000006000000000000B50
-:10153000000010000060041100000315000000000E
-:1015400000200411000000000000000000600811ED
-:10155000000001B2000000070021062F000000007B
-:101560000000001300200A2D000000000000000110
-:1015700000202C11000000000000FFFF4028222066
-:10158000000000000000000F0026222800000000DC
-:101590000000001040212620000000000000000F85
-:1015A000002626290000000000000000002028027C
-:1015B000000000000000225600204411000000003E
-:1015C0000000001B00204811000000000000000087
-:1015D000002F022100000000000000000CE00000CD
-:1015E000000001E00000225C002044110000000027
-:1015F0000000008100204811000000000000A1FC54
-:1016000000204411000000000000000100204811EB
-:10161000000000000000008000201C1100000000FD
-:1016200000000000002F0227000000000000000062
-:101630000CE00000000001DC000000000060000081
-:10164000000001E90000000100531E27000001D83E
-:101650000000000100202C11000000000000001F0D
-:1016600000280A22000000000000001F00282A2A8B
-:10167000000000000000000100530621000001D11D
-:101680000000225C00204411000000000000000265
-:1016900000304A2F000000000000A1FC002044118F
-:1016A00000000000000000010020481100000000C0
-:1016B0000000000100301E2F0000000000000000AC
-:1016C000002F022700000000000000000CE00000D6
-:1016D000000000000000000000600000000001E9C0
-:1016E0000000000100531E27000001E50000FFFF7D
-:1016F00040280E20000000000000000F00260E23EE
-:101700000000000000000010C021122000000000B6
-:101710000000000F0026122400000000000000005E
-:1017200000201411000000000000000000601811EB
-:10173000000002BB0001A1FD0020441100000000D8
-:1017400000000000002F022B00000000000000003D
-:101750000CE00000000001F8000000100022162834
-:1017600000000000FFFF0000002816250000000018
-:101770000000FFFF00281A29000000000000000000
-:10178000002948C500000000000000000020480AB1
-:10179000000000000000000000202C1100000000EC
-:1017A000000000100022162300000000FFFF0000D0
-:1017B00000281625000000000000FFFF00281A2462
-:1017C0000000000000000000002948C500000000E3
-:1017D0000000000000731503000002050000000077
-:1017E0000020180500000000000000000073152410
-:1017F0000000020500000000002D14C500000000DC
-:1018000000000000003008A20000000000000000FE
-:101810000020480200000000000000000020280214
-:101820000000000000000000002020030000000075
-:101830000000000000802404000000000000000FF1
-:1018400000210225000000000000000014C000007C
-:101850000000067B00000000002B140500000000C3
-:1018600000000001009016250000000000000000AC
-:10187000006000000000000B000000000060041188
-:10188000000003150000000000200411000000000B
-:101890000000000000600811000001B200002256A4
-:1018A00000204411000000000000001A00294A2214
-:1018B0000000000000000000C02000000000000048
-:1018C00000003FFF002F022F00000000000000007A
-:1018D0000CE000000000000000000000C020040038
-:1018E000000000000000225C002044110000000005
-:1018F0000000000300384A21000000000000A1FCA5
-:1019000000204411000000000000000100204811E8
-:10191000000000000000FFFF40281220000000002F
-:1019200000000010C0211A20000000000000FFFF8E
-:1019300040280E200000000000000010C0211620EA
-:10194000000000000000000000741465000002BBED
-:101950000001A1FD00604411000002E00000000150
-:10196000003306210000000000000000002F0221CB
-:1019700000000000000000000CC000000000021980
-:1019800000003FFF002F022F0000000000000000B9
-:101990000CC000000000021200000000C040040063
-:1019A0000000000100000000006000000000063898
-:1019B000000000000040040F0000021300000000BF
-:1019C000006000000000062400000000006000002D
-:1019D000000006380000021000600411000003152A
-:1019E0000000000000600000000001A000000000F6
-:1019F000006000000000019C00000000006000008A
-:101A0000000002BB0000000000600000000002A314
-:101A1000938000000020441100000000000000003E
-:101A2000002048080000000000000000002F022FE6
-:101A300000000000000000000AE000000000023288
-:101A400000000000006000000000013A00000000FB
-:101A50000040000000000236950000000020441104
-:101A60000000000000000000002F022F0000000016
-:101A7000000000000CE00000000002360000000042
-:101A8000C0404800000002339200000000204411D2
-:101A90000000000000000000C0204800000000001E
-:101AA0000000225600204411000000000000001633
-:101AB00000204811000000000000225C00204411BA
-:101AC000000000000000000300204811000000009A
-:101AD0000000A1FC002044110000000000000001F3
-:101AE00000204811000000000001A1FD0020441169
-:101AF000000000000000000000600411000002FB74
-:101B000000000000C04004000000000100000000D0
-:101B100000600000000006240000A00C002044111A
-:101B20000000000000000000C0204800000000008D
-:101B300000000000C040480000000000000000005D
-:101B4000006000000000000B0000001840210A2087
-:101B50000000000000000003002F0222000000002F
-:101B6000000000000AE000000000024C0000001429
-:101B70000020222D00000000000801010029222879
-:101B800000000000000000140020362800000000C3
-:101B90000000A30C00204411000000000000000021
-:101BA000C02048000000000000000000C0204800E5
-:101BB0000000000000000000C0404800000002518A
-:101BC00000000000006000000000000B000000109A
-:101BD00000600411000003153F8000000020041184
-:101BE000000000000000000000600811000001B2C9
-:101BF0000000225C002044110000000000000003EF
-:101C000000204811000000000000000000600000FB
-:101C10000000027C0000001700201E2D00000000C4
-:101C20000000000100211E2700000000000000004D
-:101C300014E000000000026A0000001200201E2DC7
-:101C4000000000000000FFFF00281E270000000029
-:101C50000000000000341C2700000000000000000D
-:101C600012C000000000025F0000000000201C11F4
-:101C70000000000000000000002F00E50000000050
-:101C80000000000008C00000000002620000000028
-:101C900000201407000000000000001200201E2D8C
-:101CA000000000000000001000211E2700000000BE
-:101CB0000000000000341C4700000000000000008D
-:101CC00012C00000000002670000000000201C118C
-:101CD0000000000000000000002F00E600000000EF
-:101CE0000000000008C000000000026A00000000C0
-:101CF0000020180700000000000000000060000045
-:101D0000000002C100002256002044110000000023
-:101D1000000000000034202300000000000000004C
-:101D200012C00000000002720000000000342044D5
-:101D3000000000000000000012C00000000002715E
-:101D40000000001600404811000002760000001854
-:101D500000404811000002760000000000342044DA
-:101D6000000000000000000012C00000000002752A
-:101D70000000001700404811000002760000001922
-:101D800000204811000000000000A1FC00204411C8
-:101D900000000000000000010020481100000000C9
-:101DA0000001A1FD00604411000002E900003FFFB6
-:101DB000002F022F00000000000000000CC00000F7
-:101DC0000000025600000000C040040000000001B6
-:101DD0000000001040210620000000000000FFFF6E
-:101DE000C0280A20000000000000001040210E2042
-:101DF000000000000000FFFFC028122000000000CB
-:101E00000000001040211620000000000000FFFF2D
-:101E1000C0881A200000000081000000002044114A
-:101E20000000000000000001002048110000000038
-:101E300000042004006044110000067C0000000043
-:101E4000006000000000062400000000C0600000E8
-:101E5000000002A30000000500200A2D0000000081
-:101E60000000000800220A22000000000000002BF1
-:101E700000201A2D000000000000001C00201E2D74
-:101E8000000000000000700000281E270000000075
-:101E90000000000000311CE6000000000000002AE5
-:101EA00000201A2D000000000000000C00221A265D
-:101EB0000000000000000000002F00E6000000000D
-:101EC0000000000006E00000000002920000000098
-:101ED00000201C11000000000000000000200C1178
-:101EE000000000000000002B00203623000000004E
-:101EF0000000001000201811000000000000000089
-:101F000000691CE20000012F9380000000204411B2
-:101F10000000000000000000002048070000000052
-:101F200095000000002044110000000000000000A7
-:101F3000002F022F00000000000000000CE0000055
-:101F40000000029D0000000100333E2F0000000051
-:101F500000000000D90048000000000092000000CE
-:101F6000002044110000000000000000C0204800D4
-:101F7000000000000000001C0040362700000000A8
-:101F80000000000CC0220A20000000000000002910
-:101F9000002036220000000000000028C04036204B
-:101FA000000000000000A2A4002044110000000076
-:101FB000000000090020481100000000A1000000FE
-:101FC00000204411000000000000000100804811C2
-:101FD000000000000000002100201E2D0000000075
-:101FE00000000000002C1CE30000000000000021A5
-:101FF00000203627000000000000002200201E2DD7
-:102000000000000000000000002C1CE400000000A4
-:1020100000000022002036270000000000000023FE
-:1020200000201E2D0000000000000000003120A351
-:102030000000000000000000002D1D07000000004F
-:1020400000000023002036270000000000000024CC
-:1020500000201E2D0000000000000000003120C400
-:102060000000000000000000002D1D07000000001F
-:10207000000000240080362700000000000000213E
-:10208000002036230000000000000022002036243B
-:10209000000000000000000000311CA30000000050
-:1020A0000000002300203627000000000000000090
-:1020B00000311CC40000000000000024008036270E
-:1020C000000000000000001A002036270000000079
-:1020D0000000001B00203628000000000000001750
-:1020E00000201E2D00000000000000020021022739
-:1020F000000000000000000014C00000000002DC2E
-:102100000000000000400000000002D90000001A9A
-:1021100000203627000000000000001B00203628A9
-:10212000000000000000001700201E2D000000002D
-:102130000000000200210227000000000000000053
-:1021400014E00000000002D9000000030021022773
-:10215000000000000000000014E00000000002DCAD
-:102160000000002300201E2D0000000000000000E1
-:10217000002E00E1000000000000000002C000008E
-:10218000000002DC0000002100201E2D00000000E5
-:1021900000000000003120A100000000000000004D
-:1021A000002E00E8000000000000000006C0000053
-:1021B000000002DC0000002400201E2D00000000B2
-:1021C00000000000002E00E20000000000000000FF
-:1021D00002C00000000002DC0000002200201E2DD2
-:1021E0000000000000000000003120C200000000DC
-:1021F00000000000002E00E80000000000000000C9
-:1022000006C00000000002DC0000000000600000CA
-:10221000000006590000000000600000000002B548
-:102220000000000000400000000002DE000000008E
-:1022300000600000000002B5000000000060000027
-:10224000000006500000000000400000000002DE18
-:102250000000000000600000000002A70000000075
-:1022600000400000000002DE0000001A00201E2DC9
-:10227000000000000000001B0080222D0000000074
-:102280000000001000221E230000000000000000DB
-:1022900000294887000000000000000000311CA356
-:1022A000000000000000001000221E2700000000B7
-:1022B0000000000000294887000000000000001016
-:1022C00000221E230000000000000000003120C496
-:1022D000000000000000FFFF00282228000000008E
-:1022E0000000000000894907000000000000001005
-:1022F00000221E2300000000000000000029488783
-:10230000000000000000001000221E21000000005C
-:102310000000000000294847000000000000000005
-:1023200000311CA3000000000000001000221E2746
-:1023300000000000000000000029488700000000A5
-:102340000000000000311CA100000000000000108F
-:1023500000221E270000000000000000002948475E
-:10236000000000000000001000221E2300000000FA
-:1023700000000000003120C4000000000000FFFF4A
-:102380000028222800000000000000000029490762
-:10239000000000000000001000221E2100000000CC
-:1023A00000000000003120C2000000000000FFFF1C
-:1023B00000282228000000000000000000894907D2
-:1023C000000000000000001000221E23000000009A
-:1023D0000000000000294887000000000000000104
-:1023E00000220A210000000000000000003308A2C3
-:1023F000000000000000001000221E22000000006B
-:102400000000001000212222000000000000000057
-:1024100000294907000000000000000000311CA353
-:10242000000000000000001000221E270000000035
-:1024300000000000002948870000000000000001A3
-:1024400000220A210000000000000000003008A265
-:10245000000000000000001000221E22000000000A
-:1024600000000010002122220000000000000000F7
-:1024700000294907000000000000001000221E2370
-:102480000000000000000000003120C40000000037
-:102490000000FFFF002822280000000000000000CC
-:1024A000002949070000000000000000003808C5AE
-:1024B00000000000000000000030084100000000A3
-:1024C0000000000100220A220000000000000000BD
-:1024D000003308A2000000000000001000221E22AD
-:1024E0000000000000000010002122220000000077
-:1024F00000000000008949070000000000000017EC
-:102500000020222D000000000000000014C0000088
-:1025100000000318FFFFFFEF002806210000000065
-:10252000000000140020222D000000000000F8E050
-:1025300000204411000000000000000000294901B3
-:1025400000000000000000000089490100000000B8
-:102550000000000000204811000000000000000002
-:102560000020481100000000060A02000080481107
-:102570000000000000000000C0200000000000007B
-:1025800097000000C020441100000000000000007F
-:10259000C0204811000000008A0000000020441103
-:1025A00000000000000000000020481100000000B2
-:1025B0000000225C00204411000000000000000028
-:1025C000C0204800000000000000A1FC00204411D1
-:1025D0000000000000000000C020480000000000D3
-:1025E00000000000C0200400000000000000000007
-:1025F00000A0000A00000000970000000020441125
-:102600000000000000000000002048110000000051
-:102610008A000000002044110000000000000000BB
-:1026200000204811000000000000225C002044113E
-:102630000000000000000000C02048000000000072
-:102640000000A1FC00204411000000000000000078
-:10265000C02048000000000000000000C02004006E
-:10266000000000000000000000A0000A00000000C0
-:10267000970000000020441100000000000000004E
-:1026800000204811000000008A00000000204411D2
-:1026900000000000000000000020481100000000C1
-:1026A0000000225C00204411000000000000000037
-:1026B000C0204800000000000000A1FC00204411E0
-:1026C0000000000000000000C020480000000000E2
-:1026D0000001A1FD002044110000000000000000E6
-:1026E000D90048000000000000000000C0200400E5
-:1026F000000000000000000000A0000A0000000030
-:1027000000002257002044110000000000000003D8
-:10271000C0484A20000000000000225D0020441153
-:102720000000000000000000C04048000000000061
-:1027300000000000006000000000063800000000FB
-:10274000C0200800000000000000225C00204411AE
-:10275000000000000000000300384A2200000000D2
-:102760000000A1FC00204411000000000000000057
-:10277000C0204800000000000001A1FD002044111D
-:102780000000000000000000002F022200000000F6
-:10279000000000000CE0000000000000000000004D
-:1027A00040204800000000000000000140304A20A6
-:1027B0000000000000000002C0304A2000000000BD
-:1027C0000000000100530A220000034B0000003FFC
-:1027D000C0280A20000000008100000000204411F1
-:1027E000000000000000000100204811000000006F
-:1027F000000021F800204411000000000000001833
-:102800000020481100000000000421F9006044117C
-:102810000000067C000000110021023000000000D2
-:102820000000000014E00000000003540000001449
-:10283000002F022200000000000000000CC0000079
-:10284000000003620001A2A4002044110000000067
-:1028500000000000006048020000036A0000210040
-:10286000002044110000000000000000C0204800CB
-:102870000000000000000000C02048000000000030
-:1028800000000000C0204800000000000000000020
-:10289000C04048000000000000000004002F022299
-:1028A00000000000000000000CC0000000000366F3
-:1028B0000001A2A40020441100000000000000005C
-:1028C000004048020000035D00000028002F0222A3
-:1028D00000000000000000000CC00000000005B374
-:1028E0000001A2A40020441100000000000000002C
-:1028F000004048020000035D0000002C0020362646
-:102900000000000000000049002018110000000035
-:102910000000003F002048110000000000000001FE
-:1029200000331A260000000000000000002F0226DD
-:1029300000000000000000000CC000000000036C5C
-:102940000000002C00801A2D000000000000003F55
-:10295000C0280A200000000000000015002F0222FD
-:1029600000000000000000000CE0000000000382F6
-:1029700000000006002F02220000000000000000FE
-:102980000CE00000000003AD00000016002F022242
-:1029900000000000000000000CE00000000003AF99
-:1029A00000000020002F02220000000000000000B4
-:1029B0000CE00000000003980000000F002F02222E
-:1029C00000000000000000000CE00000000003A474
-:1029D00000000010002F0222000000000000000094
-:1029E0000CE00000000003A40000001E002F0222E3
-:1029F00000000000000000000CE000000000038C5C
-:102A00000000A2A40020441100000000000000000B
-:102A100000404802000000000800000000290A22CF
-:102A2000000000000000000340210E200000000014
-:102A30000000000CC021122000000000000800006F
-:102A4000002812240000000000000014C0221620FC
-:102A50000000000000000000002914A40000000095
-:102A60000000A2A4002044110000000000000000AB
-:102A7000002948A2000000000000A1FE002044112F
-:102A800000000000000000000040480300000000BB
-:102A9000810000000020441100000000000000013F
-:102AA0000020481100000000000021F8002044111F
-:102AB0000000000000000016002048110000000087
-:102AC000000421F9006044110000067C000000159C
-:102AD00000210230000000000000000014E00000AF
-:102AE0000000038E0000210E0020441100000000B1
-:102AF00000000000C02048000000000000000000AE
-:102B0000C0204800000000000000A2A400204411E2
-:102B1000000000000000000000404802000000002B
-:102B200081000000002044110000000000000001AE
-:102B30000020481100000000000021F8002044118E
-:102B400000000000000000170020481100000000F5
-:102B5000000421F9006044110000067C000000031D
-:102B600000210230000000000000000014E000001E
-:102B70000000039A0000210800204411000000001A
-:102B800000000000C020480000000000000000001D
-:102B9000C0204800000000000000A2A40020441152
-:102BA000000000000000000000404802000000009B
-:102BB0000000A2A40020441100000000000000005A
-:102BC00000204802000000008000000000204411A6
-:102BD000000000000000000000204811000000007C
-:102BE00081000000002044110000000000000010DF
-:102BF000002048110000000000000000002000102C
-:102C0000000000000000000014C00000000003AA43
-:102C10000000000000400000000000000001A2A42D
-:102C20000020441100000000000000060040481190
-:102C3000000000000001A2A40020441100000000D8
-:102C400000000016006048110000036A0000000048
-:102C5000004000000000000000000000C02008004C
-:102C60000000000000000000C0200C000000000078
-:102C70000000001D002102230000000000000000F1
-:102C800014E00000000003C4810000000020441193
-:102C900000000000000000010020481100000000BA
-:102CA000000021F80020441100000000000000187E
-:102CB0000020481100000000000421F900604411C8
-:102CC0000000067C0000001100210230000000001E
-:102CD0000000000014E00000000003B80000210024
-:102CE0000020441100000000000000000020480205
-:102CF0000000000000000000002048030000000069
-:102D0000BABECAFE0020481100000000CAFEBABECA
-:102D100000204811000000000000A2A4002044117F
-:102D20000000000000000004004048110000000006
-:102D3000000021700020441100000000000000008D
-:102D400000204802000000000000000000204803AE
-:102D5000000000008100000000204411000000007D
-:102D60000000000A002048110000000000000000E0
-:102D700000200010000000000000000014C000004F
-:102D8000000003C98C000000002044110000000076
-:102D9000CAFEBABE004048110000000081000000D9
-:102DA0000020441100000000000000010020481134
-:102DB0000000000000003FFF40280A200000000043
-:102DC0008000000040280E200000000040000000AD
-:102DD000C028122000000000000400000069462204
-:102DE0000000067C0000000000201410000000001D
-:102DF00000000000002F022300000000000000007F
-:102E00000CC00000000003D700000000C040180004
-:102E1000000003DA00003FFFC0281A200000000075
-:102E200000040000006946260000067C0000000047
-:102E3000002018100000000000000000002F0224F5
-:102E400000000000000000000CC00000000003DDD6
-:102E500000000000C0401C00000003E000003FFF35
-:102E6000C0281E2000000000000400000069462762
-:102E70000000067C0000000000201C100000000084
-:102E800000000000002044020000000000000000DC
-:102E9000002820C50000000000000000004948E8AC
-:102EA00000000000A58000000020081100000000C4
-:102EB0000000200000200C11000000008300000032
-:102EC00000604411000004080000000000204402DB
-:102ED0000000000000000000C020480000000000CA
-:102EE0000000000040204800000000000000001F1B
-:102EF000C0210220000000000000000014C00000FB
-:102F0000000003ED0000201000204411000000002C
-:102F10000000800000204811000000000000FFFFBA
-:102F2000C0481220000003F5A7800000002008110F
-:102F3000000000000000A00000200C1100000000B4
-:102F4000830000000060441100000408000000003D
-:102F5000002044020000000000000000C0204800E3
-:102F60000000000000000000C02048000000000039
-:102F70000000FFFFC02812200000000083000000B6
-:102F800000204411000000000000000000304883D1
-:102F90000000000084000000002044110000000038
-:102FA00000000000C02048000000000000000000F9
-:102FB0001D000000000000008300000000604411BC
-:102FC0000000040800000000C040040000000001F0
-:102FD000A980000000200811000000000000C000CF
-:102FE00000400C11000003F0AB800000002008112D
-:102FF000000000000000F8E000400C11000003F0A9
-:10300000AD80000000200811000000000000F880E2
-:1030100000400C11000003F0B380000000200811F4
-:10302000000000000000F3FC00400C11000003F061
-:10303000AF80000000200811000000000000E00048
-:1030400000400C11000003F0B180000000200811C6
-:10305000000000000000F00000400C11000003F030
-:1030600083000000002044110000000000002148FF
-:1030700000204811000000008400000000204411DE
-:103080000000000000000000C02048000000000018
-:10309000000000001D000000000000000000000013
-:1030A000008000000000000001182000C030462011
-:1030B0000000000000000000D900480000000000EF
-:1030C00000000000C020040000000000000000001C
-:1030D00000A0000A000000000218A000C030462036
-:1030E0000000000000000000D900480000000000BF
-:1030F00000000000C02004000000000000000000EC
-:1031000000A0000A000000000318C000C0304620E4
-:103110000000000000000000D9004800000000008E
-:1031200000000000C02004000000000000000000BB
-:1031300000A0000A000000000418F8E0C03046209B
-:103140000000000000000000D9004800000000005E
-:1031500000000000C020040000000000000000008B
-:1031600000A0000A000000000518F880C0304620CA
-:103170000000000000000000D9004800000000002E
-:1031800000000000C020040000000000000000005B
-:1031900000A0000A000000000618E000C030462031
-:1031A0000000000000000000D900480000000000FE
-:1031B00000000000C020040000000000000000002B
-:1031C00000A0000A000000000718F000C0304620F0
-:1031D0000000000000000000D900480000000000CE
-:1031E00000000000C02004000000000000000000FB
-:1031F00000A0000A000000000818F3FCC0304620C0
-:103200000000000000000000D9004800000000009D
-:1032100000000000C02004000000000000000000CA
-:1032200000A0000A000000000000003000200A2D6D
-:103230000000000000000000C0290C400000000059
-:1032400000000030002036230000000000000000D5
-:10325000C0200400000000000000000000A0000AE0
-:103260000000000086000000002044110000000063
-:103270000000000000404801000000008500000040
-:10328000C020441100000000000000000040480180
-:10329000000000000000217C00204411000000001C
-:1032A00000000000C02048000000000000000000F6
-:1032B000C02048000000000000000000C0204800BE
-:1032C0000000000081000000002044110000000008
-:1032D0000000000100204811000000000000000074
-:1032E000C0200800000000000000000017000000DF
-:1032F000000000000004217F006044110000067CF3
-:103300000000001F0021023000000000000000004B
-:1033100014C00000000000000000000000404C024B
-:103320000000043E00000000C0200C00000000006F
-:1033300000000000C020100000000000000000009D
-:10334000C02014000000000000000000C020180091
-:103350000000000000000000C0201C000000000071
-:1033600000007F0000280A21000000000000450046
-:10337000002F022200000000000000000CE000000E
-:103380000000044C00000000C020200000000000ED
-:103390000000000017000000000000000000001006
-:1033A00000280A230000000000000010002F022265
-:1033B00000000000000000000CE0000000000454C9
-:1033C0008100000000204411000000000000000106
-:1033D000002048110000000000040000006946249D
-:1033E0000000067C000000000040000000000459BE
-:1033F00081000000002044110000000000000000D7
-:1034000000204811000000000000216D0020441140
-:103410000000000000000000002048040000000040
-:103420000000000000604805000006810000000068
-:10343000002824F0000000000000000700280A23F4
-:103440000000000000000001002F02220000000028
-:10345000000000000AE0000000000460000000001E
-:10346000002F00C9000000000000000004E0000080
-:103470000000047900000000004000000000048605
-:1034800000000002002F02220000000000000000E7
-:103490000AE000000000046500000000002F00C9E1
-:1034A000000000000000000002E0000000000479BD
-:1034B000000000000040000000000486000000033F
-:1034C000002F022200000000000000000AE00000BF
-:1034D0000000046A00000000002F00C90000000086
-:1034E000000000000CE00000000004790000000073
-:1034F000004000000000048600000004002F0222AB
-:1035000000000000000000000AE000000000046F5E
-:1035100000000000002F00C90000000000000000B3
-:103520000AE00000000004790000000000400000F4
-:103530000000048600000005002F022200000000A9
-:10354000000000000AE00000000004740000000019
-:10355000002F00C9000000000000000006E000008D
-:103560000000047900000000004000000000048614
-:1035700000000006002F02220000000000000000F2
-:103580000AE000000000047900000000002F00C9DC
-:10359000000000000000000008E0000000000479C6
-:1035A00000000000004000000000048600007F00D2
-:1035B00000280A210000000000004500002F022220
-:1035C00000000000000000000AE000000000000011
-:1035D0000000000800210A23000000000000000095
-:1035E00014C0000000000483000021690020441181
-:1035F0000000000000000000C020480000000000A3
-:1036000000000000C0204800000000000000000092
-:10361000C020480000000000CAFEBABE00404811A9
-:103620000000000000000000C02044000000000076
-:1036300000000000C02000000000000000000000AA
-:10364000C04048000000000000007F0000280A2160
-:103650000000000000004500002F022200000000D2
-:10366000000000000AE000000000048C00000000E0
-:10367000C02000000000000000000000C02000008A
-:103680000000000000000000C0400000000000003A
-:103690000000000000404C080000044C0000000046
-:1036A000C0200800000000000000001040210E2093
-:1036B0000000000000000011402112200000000066
-:1036C00000000012402116200000000000002169C7
-:1036D000002044110000000000000000002048020B
-:1036E0000000000000000000002102250000000092
-:1036F0000000000014E00000000004960004000038
-:10370000C0494A2000000497FFFBFFFFC0284A2061
-:103710000000000000000000002102230000000063
-:103720000000000014E00000000004A300000000FE
-:10373000C02048000000000000000000C020480039
-:103740000000000000000000002102240000000032
-:103750000000000014C00000000000008100000014
-:1037600000204411000000000000000C002048115F
-:103770000000000000000000002000100000000019
-:103780000000000014C000000000049FA000000022
-:103790000020441100000000CAFEBABE00404811DB
-:1037A0000000000081000000002044110000000023
-:1037B0000000000400204811000000000000216B00
-:1037C000002044110000000000000000C02048104C
-:1037D00000000000810000000020441100000000F3
-:1037E0000000000500204811000000000000216CCE
-:1037F000002044110000000000000000C02048101C
-:103800000000000000000000002F02240000000063
-:10381000000000000CE000000000000000000000BC
-:10382000004000000000049D00000000C0210A20AC
-:10383000000000000000000014C00000000004B6FA
-:103840008100000000204411000000000000000082
-:1038500000204811000000000000216D00204411EC
-:103860000000000000000000C02048000000000030
-:1038700000000000C0604800000006810000000059
-:1038800000400000000004BA810000000020441144
-:1038900000000000000000010020481100000000AE
-:1038A00000040000C02946200000000000000000C5
-:1038B000C06000000000067C000000010021022220
-:1038C000000000000000000014C00000000004C15F
-:1038D00000002169002044110000000000000000E9
-:1038E000C02048000000000000000000C020480088
-:1038F0000000000000000000002048100000000050
-:10390000CAFEBABE004048110000000000000000DE
-:10391000C02044000000000000000000C04048102B
-:1039200000000000810000000020441100000000A1
-:10393000000000010020481100000000000021F8F4
-:1039400000204411000000000000000E002048117B
-:1039500000000000000421F9006044110000067C12
-:103960000000000000210230000000000000000004
-:1039700014C00000000004C3000021800020441196
-:103980000000000000000000C0204800000000000F
-:1039900000000000C0200000000000000000000047
-:1039A000C02048000000000000000000C02000000F
-:1039B0000000000000000000C040480000000000BF
-:1039C0000000000300333E2F000000000000000153
-:1039D00000210221000000000000000014E00000AF
-:1039E000000004F30000002C00200A2D000000005D
-:1039F0000004000018E00C11000004E200000001C7
-:103A000000333E2F00000000000021690020441117
-:103A1000000000000000000000204802000000003C
-:103A20000000000000204803000000000000000823
-:103A300000300A220000000000000000C020480002
-:103A40000000000000000000C0204800000000004E
-:103A50000000216900204411000000000000000067
-:103A60000020480200000000000000000020480381
-:103A7000000000000000000800300A2200000000E2
-:103A800000000000C020480000000000000000000E
-:103A9000D8C04800000004D600002169002044116D
-:103AA00000000000000000000020480200000000AC
-:103AB0000000000000204803000000000000000893
-:103AC00000300A220000000000000000C020480072
-:103AD0000000000000000000C020480000000000BE
-:103AE0000000002D0020122D00000000000000004A
-:103AF00000290C830000000000002169002044110F
-:103B0000000000000000000000204802000000004B
-:103B10000000000000204803000000000000000832
-:103B200000300A220000000000000000C020480011
-:103B30000000000000000000C0204800000000005D
-:103B4000000000110021022400000000000000001D
-:103B500014C0000000000000000000000040000051
-:103B60000000049D0000002CC02036200000000052
-:103B70000000002DC0403620000000000000000FB3
-:103B800000210221000000000000000014C000001D
-:103B9000000004F800000000006000000000000BBE
-:103BA00000000000D900000000000000000000003C
-:103BB000C040040000000001B500000000204411D6
-:103BC000000000000000200000204811000000005C
-:103BD000B600000000204411000000000000A0001A
-:103BE0000020481100000000B70000000020441130
-:103BF000000000000000C00000204811000000008C
-:103C0000B800000000204411000000000000F8E0AF
-:103C10000020481100000000B900000000204411FD
-:103C2000000000000000F8800020481100000000A3
-:103C3000BA00000000204411000000000000E00075
-:103C40000020481100000000BB00000000204411CB
-:103C5000000000000000F0000020481100000000FB
-:103C6000BC00000000204411000000000000F3FC34
-:103C700000204811000000008100000000204411D5
-:103C800000000000000000020020481100000000B9
-:103C9000000000FF00280E300000000000000000BF
-:103CA000002F022300000000000000000CC00000F4
-:103CB0000000050C00000000C0200800000000000B
-:103CC0000000000014C000000000052100000000FA
-:103CD00000200C11000000000000001C0020362312
-:103CE000000000000000002B002036230000000030
-:103CF00000000029002036230000000000000028FA
-:103D000000203623000000000000001700203623AA
-:103D10000000000000000025002036230000000005
-:103D200000000026002036230000000000000015DF
-:103D3000002036230000000000000016002036237B
-:103D400000000000FFFFE00000200C110000000058
-:103D500000000021002036230000000000000022A7
-:103D6000002036230000000000001FFF00200C117F
-:103D700000000000000000230020362300000000A7
-:103D8000000000240020362300000000F1FFFFFFA8
-:103D900000283A2E000000000000001AC0220E2069
-:103DA00000000000000000000029386E0000000044
-:103DB0008100000000204411000000000000000607
-:103DC00000204811000000000000002A402036209A
-:103DD00000000000870000000020441100000000E7
-:103DE00000000000C0204800000000000000A1F416
-:103DF00000204411000000000000000000204810D6
-:103E0000000000000000000000200C110000000075
-:103E10000000003000203623000000009D0000005C
-:103E200000204411000000000000001F40214A2033
-:103E30000000000096000000002044110000000077
-:103E400000000000C020480000000000000000004A
-:103E5000C0200C000000000000000000C020100086
-:103E6000000000000000001F0021162400000000D8
-:103E70000000000014C00000000000000000001D51
-:103E800000203623000000000000000300281E234D
-:103E900000000000000000080022222300000000B3
-:103EA000FFFFF000002822280000000000000000B2
-:103EB000002920E8000000000000001F0020362834
-:103EC000000000000000001800211E230000000078
-:103ED0000000002000203627000000000000000243
-:103EE000002216240000000000000000003014A88A
-:103EF000000000000000001E002036250000000029
-:103F00000000000300211A2400000000100000003F
-:103F100000281A2600000000EFFFFFFF00283A2EBD
-:103F20000000000000000000004938CE0000066AD2
-:103F30000000000140280A200000000000000006E8
-:103F400040280E200000000000000300C0281220BE
-:103F50000000000000000008002112240000000002
-:103F600000000000C020162000000000000000003B
-:103F7000C0201A20000000000000000000210222E2
-:103F8000000000000000000014C0000000000559FF
-:103F9000810000000020441100000000000000012A
-:103FA00000204811000000000000225800300A24C0
-:103FB0000000000000040000006946220000067CAA
-:103FC00000002169002044110000000000000000F2
-:103FD00000204805000000000002000000294A26D9
-:103FE0000000000000000000002048100000000059
-:103FF000CAFEBABE00204811000000000000000206
-:10400000002F022300000000000000000CC0000090
-:104010000000056100000000C0201C10000000002E
-:1040200000000000C04000000000056F000000021A
-:10403000002F022300000000000000000CC0000060
-:104040000000056181000000002044110000000014
-:10405000000000010020481100000000000022586C
-:1040600000300A240000000000040000006946221D
-:104070000000067C00000000C0201C1000000000B2
-:1040800000000000C04000000000056F00000000BC
-:10409000002F022300000000000000000CC0000000
-:1040A0000000056500000000C0201C0000000000AA
-:1040B00000000000C04000000000056F0000000488
-:1040C000002F022300000000000000000CC00000D0
-:1040D0000000056D81000000002044110000000078
-:1040E0000000000000204811000000000000216DC9
-:1040F000002044110000000000000000C020480023
-:104100000000000000000000C060480000000681C0
-:104110000000000000401C100000056F00000000BF
-:10412000C02000000000000000000000C0400000AF
-:1041300000000000000000000EE00000000005711B
-:104140000000000000600000000005BC000000004E
-:10415000002F022400000000000000000CC000003E
-:10416000000005820000A2B70020441100000000FA
-:10417000000000000020480700000000810000004F
-:104180000020441100000000000000010020481140
-:10419000000000000004A2B6006044110000067C8C
-:1041A0000000001A0021223000000000000000067C
-:1041B00000222630000000000004200400604411AA
-:1041C0000000067C0000A2C4002044110000000092
-:1041D00000000000003048E900000000000000007E
-:1041E00000E00000000005800000A2D10020441182
-:1041F000000000000000000000404808000000002F
-:104200000000A2D1002044110000000000000001C5
-:1042100000504A280000000000000001002F022486
-:1042200000000000000000000CC00000000005932A
-:104230000000A2BB002044110000000000000000AC
-:104240000020480700000000810000000020441109
-:1042500000000000000000010020481100000000E4
-:104260000004A2BA006044110000067C0000001A9D
-:10427000002122300000000000000006002226304D
-:104280000000000000042004006044110000067CCF
-:104290000000A2C500204411000000000000000042
-:1042A000003048E9000000000000000000E00000CD
-:1042B000000005910000A2D200204411000000007F
-:1042C0000000000000404808000000000000A2D2EA
-:1042D00000204411000000000000000100504A28A6
-:1042E0000000000000000002002F02240000000077
-:1042F000000000000CC00000000005A40000A2BFE8
-:1043000000204411000000000000000000204807C9
-:1043100000000000810000000020441100000000A7
-:104320000000000100204811000000000004A2BEAF
-:10433000006044110000067C0000001A00212230B9
-:1043400000000000000000060022263000000000EF
-:1043500000042004006044110000067C0000A2C696
-:10436000002044110000000000000000003048E977
-:10437000000000000000000000E00000000005A2B6
-:104380000000A2D300204411000000000000000043
-:1043900000404808000000000000A2D300204411A3
-:1043A000000000000000000100504A28000000004A
-:1043B0000000A2C300204411000000000000000023
-:1043C0000020480700000000810000000020441188
-:1043D0000000000000000001002048110000000063
-:1043E0000004A2C2006044110000067C0000001A14
-:1043F00000212230000000000000000600222630CC
-:104400000000000000042004006044110000067C4D
-:104410000000A2C7002044110000000000000000BE
-:10442000003048E9000000000000000000E000004B
-:10443000000005B10000A2D40020441100000000DB
-:104440000000000000404808000000000000A2D466
-:1044500000204411000000000000000100504A2824
-:104460000000000085000000002044110000000052
-:104470000000000000204801000000000000304A59
-:10448000002044110000000001000000002048113D
-:10449000000000000000000000400000000005B720
-:1044A000A4000000C0204411000000000000000033
-:1044B000C04048000000000000000000C060000094
-:1044C000000005BC00000000C04004000000000126
-:1044D0000000002C002036210000000081000000B8
-:1044E00000204411000000000000000600204811D8
-:1044F0000000000000000000002F0230000000005B
-:10450000000000000CC00000000005C30000000017
-:10451000002004110000000000000030004036219F
-:10452000000005D6000000300020062D000000002D
-:1045300000007E00002806210000000000000000AE
-:10454000002F022100000000000000000CE000002D
-:10455000000005D68100000000204411000000008A
-:104560000000000100204811000000000004A0929B
-:10457000006044110000067C00000031002036304D
-:10458000000000000004A093006044110000067CBD
-:104590000000003200203630000000000004A2B607
-:1045A000006044110000067C00000033002036301B
-:1045B000000000000004A2BA006044110000067C64
-:1045C0000000003400203630000000000004A2BECD
-:1045D000006044110000067C0000003500203630E9
-:1045E000000000000004A2C2006044110000067C2C
-:1045F00000000036002036300000000000042004D7
-:10460000006044110000067C0001A2A400204411B7
-:10461000000000000000003F0020481100000000E2
-:104620000000003F00204811000000000000003F93
-:1046300000204811000000000000003F0020481149
-:1046400000000000000000050020481100000000EC
-:104650000000A1F400204411000000000000000050
-:1046600000204811000000008800000000204411D4
-:1046700000000000000000010020481100000000C0
-:10468000810000000020441100000000000000062E
-:10469000002048110000000000000001002F02303F
-:1046A00000000000000000000CE000000000061FF9
-:1046B000000000300020062D000000000000000077
-:1046C000002F022100000000000000000CE00000AC
-:1046D0000000061F810000000020441100000000BF
-:1046E00000000001002048110000000000007E00D2
-:1046F000002806210000000000000000002F022119
-:1047000000000000000000000CE00000000005F8C0
-:104710000000A092002044110000000000000031C1
-:1047200000204A2D000000000000A093002044114A
-:10473000000000000000003200204A2D00000000B0
-:104740000000A2B600204411000000000000003369
-:1047500000204A2D000000000000A2BA00204411F1
-:10476000000000000000003400204A2D000000007E
-:104770000000A2BE0020441100000000000000352F
-:1047800000204A2D000000000000A2C200204411B9
-:10479000000000000000003600204A2D000000004C
-:1047A000000000300020062D00000000000001FF86
-:1047B000002806210000000000000000002F022158
-:1047C00000000000000000000CE000000000061ED9
-:1047D0000000000000210221000000000000000095
-:1047E00014C00000000006010004A0030060441192
-:1047F0000000067C0000A00300204411000000001F
-:10480000000000000020481000000000000000012F
-:1048100000210621000000000000000014C000007C
-:10482000000006060004A010006044110000067C91
-:104830000000A01000204411000000000000000053
-:1048400000204810000000000000000100210621A7
-:104850000000000000000000002F02210000000006
-:10486000000000000CE000000000061E0004A01183
-:10487000006044110000067C0000A01100204411DB
-:1048800000000000000000000020481000000000B0
-:104890000004A012006044110000067C0000A01279
-:1048A000002044110000000000000000002048101B
-:1048B000000000000004A013006044110000067C0A
-:1048C0000000A013002044110000000000000000C0
-:1048D00000204810000000000004A01400604411F3
-:1048E0000000067C0000A01400204411000000001D
-:1048F0000000000000204810000000000004A01587
-:10490000006044110000067C0000A0150020441146
-:10491000000000000000000000204810000000001F
-:104920000004A016006044110000067C0000A016E0
-:10493000002044110000000000000000002048108A
-:10494000000000000004A017006044110000067C75
-:104950000000A0170020441100000000000000002B
-:1049600000204810000000000004200400604411F2
-:104970000000067C0000002C0080062D00000000D6
-:10498000FF000000002044110000000000000000B3
-:104990000020481100000000000000010020481124
-:1049A000000000000000000200804811000000002C
-:1049B000000000000EE000000000063000000030A3
-:1049C0000020062D00000000000000020028062143
-:1049D0000000000000000000002F02210000000085
-:1049E000000000000CE000000000062E8100000026
-:1049F00000204411000000000000000100204811C8
-:104A00000000000000042004006044110000067C47
-:104A10000000100000200811000000000000002B22
-:104A200000203622000000000000000000600000AE
-:104A3000000006340000000000600000000005BC1B
-:104A40009800000000204411000000000000000059
-:104A5000008048110000000000000000C06000005D
-:104A60000000063400000000C04004000000000107
-:104A70000000A2A400204411000000000000002259
-:104A800000204811000000008900000000204411AF
-:104A90000000000000000001004048110000062056
-:104AA00097000000002044110000000000000000FA
-:104AB00000204811000000008A000000002044117E
-:104AC0000000000000000000004048110000062027
-:104AD00000000000006000000000064D0001A2A4DC
-:104AE000C0204411000000000000001600604811C2
-:104AF0000000036A000020100020441100000000A4
-:104B000000010000002048110000000081000000AA
-:104B100000204411000000000000000100204811A6
-:104B2000000000000000217C002044110000000073
-:104B3000098000000020481100000000FFFFFFFF77
-:104B40000020481100000000000000000020481173
-:104B5000000000000000000017000000000000003E
-:104B60000004217F006044110000067C0000001F4B
-:104B700000210230000000000000000014C000000E
-:104B8000000000000000000400404C110000064737
-:104B900000000000004000000000000000000017BE
-:104BA00000201E2D000000000000000400291E2728
-:104BB0000000000000000017008036270000000001
-:104BC0000000001700201E2D00000000FFFFFFFB6B
-:104BD00000281E2700000000000000170080362774
-:104BE000000000000000001700201E2D0000000043
-:104BF0000000000800291E27000000000000001728
-:104C000000803627000000000000001700201E2D45
-:104C100000000000FFFFFFF700281E270000000033
-:104C20000000001700803627000000000001A2A449
-:104C30000020441100000000000000160060481130
-:104C40000000036A00002010002044110000000052
-:104C50000001000000204811000000000000217C3D
-:104C600000204411000000000180000000204811D5
-:104C700000000000FFFFFFFF0020481100000000BF
-:104C800000000000002048110000000000000000AB
-:104C90001700000000000000810000000020441107
-:104CA000000000000000000100204811000000008A
-:104CB0000004217F006044110000067C0000001FFA
-:104CC00000210230000000000000000014C00000BD
-:104CD0000000067B0000001000404C11000006613F
-:104CE00000000000C02004000000000000000000E0
-:104CF00038C00000000000000000001D00200A2D48
-:104D0000000000000000001E00200E2D000000002A
-:104D10000000001F0020122D0000000000000020F5
-:104D20000020162D00000000000021690020441121
-:104D30000000000000000000002048040000000007
-:104D400000000000002048050000000000000000F6
-:104D50000020480100000000CAFEBABE0020481131
-:104D600000000000000000040030122400000000D9
-:104D700000000000002F00640000000000000000A0
-:104D80000CC000000000067A0000000300281A2270
-:104D900000000000000000080022122200000000B5
-:104DA000FFFFF000002812240000000000000000B7
-:104DB000002910C4000000000000001F004036243D
-:104DC0000000000000000000008000000000000063
-:104DD000000000001AC000000000067C9F000000D8
-:104DE0000020441100000000CAFEBABE0020481195
-:104DF00000000000000000001AE000000000067F34
-:104E00000000000000800000000000000000000022
-:104E10001AC00000000006819E000000002044111E
-:104E200000000000CAFEBABE0020481100000000C9
-:104E3000000000001AE000000000068400000000EE
-:104E40000080000000000000000000000060000082
-:104E50000000000B000010000060041100000315AA
-:104E6000000000000020041100000000000000000D
-:104E700000600811000001B20000225C0020441113
-:104E800000000000000000030020481100000000A6
-:104E90000000225600204411000000000000001B0A
-:104EA00000204811000000000000A1FC0020441177
-:104EB0000000000000000001002048110000000078
-:104EC0000001A1FDC02044110000000000000021ED
-:104ED00000201E2D000000000000001000221E27F0
-:104EE00000000000000000240020222D000000002F
-:104EF0000000FFFF00282228000000000000000042
-:104F000000294907000000000000000000204811AF
-:104F100000000000000000220020222D0000000000
-:104F20000000FFFF00282228000000000000000011
-:104F3000002949070000000000000000002048117F
-:104F4000000000000000002300201E2D00000000D3
-:104F50000000001000221E270000000000000000DA
-:104F6000002949070000000000000000004048112F
-:104F70000000000000000000000000000000000031
-:104F80000000000000000000000000000000000021
-:104F90000000000000000000000000000000000011
-:104FA0000000000000000000000000000000000001
-:104FB00000000000000000000000000000000000F1
-:104FC00000000000000000000000000000000000E1
-:104FD00000000000000000000000000000000000D1
-:104FE00000000000000000000000000000000000C1
-:104FF00000000000000000000000000000000000B1
-:1050000000000000000000000000000000000000A0
-:105010000000000000000000000000000000000090
-:105020000000000000000000000000000000000080
-:105030000000000000000000000000000000000070
-:105040000000000000000000000000000000000060
-:105050000000000000000000000000000000000050
-:105060000000000000000000000000000000000040
-:105070000000000000000000000000000000000030
-:105080000000000000000000000000000000000020
-:105090000000000000000000000000000000000010
-:1050A0000000000000000000000000000000000000
-:1050B00000000000000000000000000000000000F0
-:1050C00000000000000000000000000000000000E0
-:1050D00000000000000000000000000000000000D0
-:1050E00000000000000000000000000000000000C0
-:1050F00000000000000000000000000000000000B0
-:10510000000000000000000000000000000000009F
-:10511000000000000000000000000000000000008F
-:10512000000000000000000000000000000000007F
-:10513000000000000000000000000000000000006F
-:10514000000000000000000000000000000000005F
-:10515000000000000000000000000000000000004F
-:10516000000000000000000000000000000000003F
-:10517000000000000000000000000000000000002F
-:10518000000000000000000000000000000000001F
-:10519000000000000000000000000000000000000F
-:1051A00000000000000000000000000000000000FF
-:1051B00000000000000000000000000000000000EF
-:1051C00000000000000000000000000000000000DF
-:1051D00000000000000000000000000000000000CF
-:1051E00000000000000000000000000000000000BF
-:1051F00000000000000000000000000000000000AF
-:10520000000000000000000000000000000000009E
-:10521000000000000000000000000000000000008E
-:10522000000000000000000000000000000000007E
-:10523000000000000000000000000000000000006E
-:10524000000000000000000000000000000000005E
-:10525000000000000000000000000000000000004E
-:10526000000000000000000000000000000000003E
-:10527000000000000000000000000000000000002E
-:10528000000000000000000000000000000000001E
-:10529000000000000000000000000000000000000E
-:1052A00000000000000000000000000000000000FE
-:1052B000014204F505B302500000000001C301687B
-:1052C000043505B300000000022502090250015117
-:1052D000000000000223024502A00241000000007D
-:1052E00003CD05B305B305B300000000063C063D41
-:1052F000031F05B30000000005B305B803200340F9
-:1053000000000000032A0282034203340000000070
-:1053100005B305B305B305B30000000005B30544AC
-:1053200005B305B30000000003B205B304AE0344A7
-:1053300000000000048D0443043305B300000000A6
-:1053400004C305B3043704D000000000044304FA8A
-:10535000035103710000000005B305B305B305B3A5
-:105360000000000005B305B305B305B3000000005D
-:1053700005B305B3063205BA0000000005B305B356
-:10538000000705B30000000005B305B305B305B37E
-:105390000000000005B305B305B305B3000000002D
-:1053A00003EE03E303FE03FC00000000040404001A
-:1053B00004020406000000000412040E041A04167D
-:1053C000000000000422041E042A0426000000003D
-:1053D00005B305B3042E05B30000000005B305B303
-:1053E00005B305B30000000005B305B305B305B36D
-:1053F00000000000000206680686000600000000AB
-:00000001FF
diff --git a/firmware/radeon/RV670_pfp.bin.ihex b/firmware/radeon/RV670_pfp.bin.ihex
deleted file mode 100644
index f55292c97b79..000000000000
--- a/firmware/radeon/RV670_pfp.bin.ihex
+++ /dev/null
@@ -1,145 +0,0 @@
-:1000000000CA040000A00000007E828B007C038BED
-:10001000008001B8007C038B00D4401E00EE001E5F
-:1000200000CA040000A00000007E828B00C41838C3
-:1000300000CA240000CA2800009581A800C41C3A08
-:1000400000C3C00000CA080000CA0C00007C744B4A
-:1000500000C200050099C00000C41C3A007C744C2A
-:1000600000C0FFF000042C0400309002007D250049
-:1000700000351402007D350B00255403007CD5802B
-:1000800000259C030095C00400D5001B007EDDC147
-:10009000007D9D8000D6801B00D5801B00D4401EB3
-:1000A00000D5401E00D6401E00D6801E00D4801E03
-:1000B00000D4C01E009783D300D5C01E00CA08001C
-:1000C0000080001A00CA0C0000E4011E00D4001ECB
-:1000D0000080000C00C4183800E4013E00D4001E6B
-:1000E0000080000C00C4183800D4401E00EE001E32
-:1000F00000CA040000A00000007E828B00E4011E04
-:1001000000D4001E00D4401E00EE001E00CA0400F1
-:1001100000A00000007E828B00E4013E00D4001E9F
-:1001200000D4401E00EE001E00CA040000A0000023
-:10013000007E828B00CA180000D4401E00D5801EAD
-:100140000080005300D4007500D4401E00CA08008F
-:1001500000CA0C0000CA100000D4801900D4C018D6
-:1001600000D5001700D4801E00D4C01E00D5001E8C
-:1001700000E2001E00CA040000A00000007E828B86
-:1001800000CA080000D4806000D4401E0080000037
-:1001900000D4801E00CA080000D4806100D4401E34
-:1001A0000080000000D4801E00CA080000CA0C00B5
-:1001B00000D4401E00D4801600D4C01600D4801E87
-:1001C000008001B800D4C01E00C6084300CA0C005D
-:1001D00000CA10000094800400CA140000E420F358
-:1001E00000D4201300D5606500D4E01C00D5201C8D
-:1001F00000D5601C008000000006200100C60843F6
-:1002000000CA0C0000CA1000009483F700CA140052
-:1002100000E420F30080007900D4201300C60843D6
-:1002200000CA0C0000CA1000009883EF00CA140036
-:1002300000D400640080008D0000000000C414326F
-:1002400000C6184300C4082F0095400500C40C30B8
-:1002500000D4401E0080000000EE001E009583F5D3
-:1002600000C4103100D4403300D5206500D4A01C58
-:1002700000D4E01C00D5201C00E4015E00D4001E68
-:10028000008000000006200100CA1800000A2001BA
-:1002900000D6007600C408360098800700C61045D6
-:1002A0000095011000D4001F00D46062008000009F
-:1002B00000D4206200CC383500CC1433008401BB5C
-:1002C00000D4007200D5401E0080000000EE001E29
-:1002D00000E2001A008401BB00E2001A00CC104BBF
-:1002E00000CC0447002C9401007D098B0098400548
-:1002F000007D15CB00D4001A008001B800D4006D39
-:100300000034440100CC0C480098403A00CC2C4A00
-:100310000095800400CC0449008001B800D4001A84
-:1003200000D4C01A00282801008400F000CC10037B
-:100330000098801B0004380C008400F000CC1003EF
-:100340000098801700043808008400F000CC1003E7
-:100350000098801300043804008400F000CC1003DF
-:100360000098801400CC104C009A800900CC144DE9
-:10037000009840DC00D4006D00CC184800D5001A6D
-:1003800000D5401A008000C900D5801A0096C0D55B
-:1003900000D4006D008001B800D4006E009AC00344
-:1003A00000D4006D00D4006E0080000000EC007FDF
-:1003B000009AC0CC00D4006D008001B800D4006E5B
-:1003C00000CC140300CC180300CC1C03007D910367
-:1003D000007DD583007D190C0035CC1F0035701FC2
-:1003E000007CF0CB007CD08B00880000007E8E8BE0
-:1003F0000095C00400D4006E008001B800D4001A3B
-:1004000000D4C01A00CC080300CC0C0300CC1003AD
-:1004100000CC140300CC180300CC1C0300CC240334
-:1004200000CC28030035C41F0036B01F007C704B81
-:100430000034F01F007C704B0035701F007C704B47
-:10044000007D8881007DCCC1007E5101007E9541F8
-:10045000007C9082007CD4C2007C848B009AC00314
-:10046000007C8C8B002C88010098809E00D4006D4D
-:100470000098409C00D4006E00CC084C00CC0C4D81
-:1004800000CC104800D4801A00D4C01A00800101AA
-:1004900000D5001A00CC083200D40032009482D972
-:1004A00000CA0C0000D4401E0080000000D4001ED2
-:1004B00000E4011E00D4001E00CA080000CA0C009F
-:1004C00000CA100000D4401E00CA140000D4801ED0
-:1004D00000D4C01E00D5001E00D5401E00D54034FB
-:1004E0000080000000EE001E0028040400E2001A54
-:1004F00000E2001A00D4401A00CA380000CC0803F9
-:1005000000CC0C0300CC0C0300CC0C03009882BD83
-:1005100000000000008401BB00D7A06F0080000035
-:1005200000EE001F00CA040000C2FF0000CC083427
-:1005300000C13FFF007C74CB007CC90B007D010F24
-:10054000009902B0007C738B008401BB00D7A06FC0
-:100550000080000000EE001F00CA080000281900FB
-:10056000007D898B009580140028140400CA0C00BB
-:1005700000CA100000CA1C0000CA240000E2001FCC
-:1005800000D4C01A00D5001A00D5401A00CC1803B8
-:1005900000CC2C0300CC2C0300CC2C03007DA58BBD
-:1005A000007D9C4700984297000000000080016198
-:1005B00000D4C01A00D4401E00D4801E0080000069
-:1005C00000EE001E00E4011E00D4001E00D4401EF8
-:1005D00000EE001E00CA040000A00000007E828B16
-:1005E00000E4013E00D4001E00D4401E00EE001EB8
-:1005F00000CA040000A00000007E828B00CA080030
-:1006000000248C06000CCC060098C00600CC104ECE
-:100610000099000400D4007300E4011E00D4001E01
-:1006200000D4401E00D4801E0080000000EE001E9A
-:1006300000CA080000CA0C000034D01800251001C0
-:100640000095002100C17FFF00CA100000CA1400FD
-:1006500000CA180000D4801D00D4C01D007DB18BDD
-:1006600000C1420200C2C00100D5801D0034DC0E72
-:10067000007D5D4C007F734C00D7401E00D5001EEE
-:1006800000D5401E00C1420000C2C00000099C010C
-:100690000031DC10007F5F4C007F734C00042802A7
-:1006A000007D838000D5A86F00D5806600D7401EEE
-:1006B00000EC005E00C8240200C82402008001B8DB
-:1006C00000D6007600D4401E00D4801E00D4C01E88
-:1006D0000080000000EE001E0080000000EE001F01
-:1006E00000D4001F0080000000D4001F00D4001FB1
-:1006F0000088000000D4001F00000000000000007F
-:1007000000000000000000000000000000000000E9
-:1007100000000000000000000000000000000000D9
-:1007200000000000000000000000000000000000C9
-:1007300000000000000000000000000000000000B9
-:1007400000000000000000000000000000000000A9
-:100750000000000000000000000000000000000099
-:100760000000000000000000000000000000000089
-:100770000000000000000000000000000000000079
-:100780000000000000000000000000000000000069
-:100790000000000000000000000000000000000059
-:1007A0000000000000000000000000000000000049
-:1007B0000000000000000000000000000000000039
-:1007C0000000000000000000000000000000000029
-:1007D0000000000000000000000000000000000019
-:1007E0000000000000000000000000000000000009
-:1007F00000000000000000000000000000000000F9
-:1008000000010171000201780003008F0004007FE5
-:10081000000500030006003F000700320008012C1D
-:1008200000090046000A0036001001B6001700A2B9
-:100830000022013A00230149002000B400240125D0
-:100840000027004D0028006A002A0060002B00529B
-:10085000002F0065003200870034017F003C015604
-:10086000003F00720041018C0044012E00550173CD
-:100870000056017A0060000B00610034006200380D
-:1008800000630038006400380065003800660038F6
-:10089000006700380068003A00690041006A0048BB
-:1008A000006B0048006C0048006D0048006E004876
-:1008B000006F00480000000600000006000000066F
-:1008C0000000000600000006000000060000000610
-:1008D0000000000600000006000000060000000600
-:1008E00000000006000000060000000600000006F0
-:1008F00000000006000000060000000600000006E0
-:00000001FF
diff --git a/firmware/radeon/RV710_me.bin.ihex b/firmware/radeon/RV710_me.bin.ihex
deleted file mode 100644
index 5cdfe306eea5..000000000000
--- a/firmware/radeon/RV710_me.bin.ihex
+++ /dev/null
@@ -1,341 +0,0 @@
-:10000000CC0003EA04080003CC8000437C4080005D
-:10001000A0000000CC80006280000003D040007F80
-:1000200080000003CC4000417C40C000C0160004AA
-:1000300030D03FFF7D15000CCC11000028D8001EE9
-:100040003198000128DC001FC820000495C000067C
-:100050007C424000CC0000627E56800CCC2900001F
-:10006000C82400047E26000B958000067C42C00058
-:10007000CC0000627ED7000CCC310000C82C0004FC
-:100080007E2E000CCC00006231103FFF8000000388
-:10009000CE1100007C40C00080000003CC40004036
-:1000A00080000003CC4122577C418000CC400045B9
-:1000B000CC400048CC41225CCC41A1FC7C4080007B
-:1000C000A0000000CC800062CC400045CC4000483D
-:1000D0007C40C000CC41225CCC41A1FC7C40800033
-:1000E000A0000000CC800062CC000045CC0000489D
-:1000F000CC41225CCC41A1FC7C408000A0000000EF
-:10010000CC800062040CA1FDC0120001CC000045AF
-:10011000CC0000487CD0C00CCC41225CCC41A1FC7E
-:10012000D04D00007C408000A0000000CC80006228
-:1001300080000003CC41225D7C4080007C40C000F8
-:10014000C02A00027C4100007D29000C309400018F
-:1001500030980006309C030029DC00087C42000037
-:100160007C4240009540000FC02E000405F022584C
-:100170007F2F000CCC310000C8280004CCC12169BD
-:10018000CD01216ACE81216B0DB40002CC01216C1E
-:100190009740000E0DB400008000007DC834000AB6
-:1001A0000DB40002974000090DB40000C02E0004F9
-:1001B00005F022587F2F000CCC310000C828000425
-:1001C0008000007DC834000A974000047E02800051
-:1001D0008000007DC834000A0DB400049740FF8CF5
-:1001E00000000000CE01216DCE41216EC828000321
-:1001F000C834000A9B400004043C00058400026DE2
-:10020000CC0000620DF400009740000BC82C03E600
-:10021000CE81A2B7C03000067EF34028C030002057
-:100220007F6B80207FB3C029CF81A2C480000003F0
-:10023000CFC1A2D10DF400019740000BC82C03E7F9
-:10024000CE81A2BBC03000067EF34028C030002023
-:100250007F6B80207FB3C029CF81A2C580000003BF
-:10026000CFC1A2D20DF400029740000BC82C03E8C6
-:10027000CE81A2BFC03000067EF34028C0300020EF
-:100280007F6B80207FB3C029CF81A2C6800000038E
-:10029000CFC1A2D3C82C03E9CE81A2C3C0300006CF
-:1002A0007EF34028C03000207F6B80207FB3C029C0
-:1002B000CF81A2C780000003CFC1A2D48000000379
-:1002C000CC4000427C40C0007C4100002914001D4D
-:1002D000315400019940000C31181000C81C001165
-:1002E00095C00000C81C0011CCC12100CD01210126
-:1002F000CCC12102CD012103041800048000037E3B
-:10030000CD81A2A4C02A00049580000836A821A3AC
-:10031000CC290000C8280004C81C00110DE40040CE
-:100320009640FFFFC81C0011CCC12170CD01217186
-:10033000C820001296000000C82000128000037E32
-:10034000CC0000647C40C0007C410000CC00004533
-:10035000CC00004840D40003CD41225CCD01A1FC7B
-:10036000C01A0001041CA1FD7DD9C00C7C42000014
-:1003700008CC00010624000106280002CE1D000062
-:10038000CE5D000098C0FFFACE9D00007C4080004A
-:10039000A0000000CC8000627C40C00030D0000192
-:1003A00028CC00017C414000950000067C41800083
-:1003B000CD41216DCD81216E800000F4C81C000369
-:1003C000C02200047E16000CCC210000C81C0004D2
-:1003D0007C42400098C000047C4280008000000302
-:1003E000CDE50000CE412169CE81216ACDC1216BCE
-:1003F00080000003CC01216C7C40C0007C410000E7
-:100400007C4140007C4180007C41C00028A4000861
-:10041000326400FF0E68003C9680000A7C020000F7
-:100420007C4200001E300003CC00006A9B000003E9
-:100430004220000504200040800001117C024000A1
-:100440007E0240009A4000000A64000130EC001077
-:100450009AC0000ACC000062C02A0004C82C002107
-:100460007E92800CCC000041CC290000CEC000213F
-:1004700080000121C8300004CD01216DCD41216EE5
-:10048000C83000037F1F000B30F4000727780001FD
-:100490009740002A07B801269F8000000000000056
-:1004A000800001367F1B80048000013A7F1B80059D
-:1004B0008000013E7F1B8002800001427F1B800381
-:1004C000800001467F1B80078000014A7F1B800659
-:1004D0008000014F28A400089B80001928A4000870
-:1004E0008000015F326400FF9B80001528A4000893
-:1004F0008000015F326400FF9B80001128A4000887
-:100500008000015F326400FF9B80000D28A400087A
-:100510008000015F326400FF9B80000928A400086E
-:100520008000015F326400FF9B80000528A4000862
-:100530008000015F326400FF28A40008326400FFDD
-:100540000E68003C9A80FEB228EC00087C43400014
-:100550007C4380007C43C00096C00007CC00006252
-:10056000CF412169CF81216ACFC1216B8000000377
-:10057000CC01216C80000003CFF50000CC00006BA3
-:10058000840003810E68003C9A800004C82800158E
-:1005900080000003D040007F9680FFAB7E024000C9
-:1005A0008400023BC00E0002CC00004180000239F2
-:1005B000CCC1304A7C40C0007C410000C01E00011C
-:1005C00029240012C022000296400005C026000423
-:1005D000C027FFFB7D25000BC02600007DD2800BCD
-:1005E0007E12C00B7D25000C7C4140007C418000C8
-:1005F000CCC121699A80000ACD01216ACD41216BCD
-:1006000096C0FE83CD81216CC83000189700000091
-:10061000C830001880000003CC000018840003815B
-:10062000CC00007FC8140013C8180014CD41216B02
-:1006300096C0FE77CD81216C80000183C830001800
-:10064000C80C000898C00000C80C00087C410000DD
-:1006500095000002000000007C414000C820000915
-:10066000CC400043CE01A1F4CC400044C00E800039
-:100670007C4240007C4280002AAC001F96C0FE6491
-:10068000C035F000CE4003E232780003267C00083B
-:100690007FF7C00B7FFBC00C2A780018CFC003E3A4
-:1006A000CF8003E426B000027F3F0000CF0003E5C7
-:1006B0008000031F7C80C0007C40C00028D0000860
-:1006C0003110000F9500000F2528000106A801B485
-:1006D0009E80000000000000800001D5C0120800CC
-:1006E000800001E3C814000F800001EAC814001064
-:1006F000800001F1CCC1A2A4800001FAC81400114D
-:1007000030D0003F0D2800159A8000120D28001EE1
-:100710009A80001E0D2800209A8000230D24000FCF
-:100720000D2800107E6A800C9A8000260D2000049F
-:100730000D2400140D2800287E62400C7EA6800C3B
-:100740009A80002AC814001180000003CCC1A2A422
-:10075000C01208007C4140007D0CC00CC012000893
-:1007600029580003295C000C7C4200007DD1C00B9D
-:10077000262000147E1E400C7E4E800CCE81A2A44A
-:1007800080000003CD81A1FEC814000F0410210ECB
-:1007900095400000C814000FD051000080000003F5
-:1007A000CCC1A2A4C8140010041021089540000078
-:1007B000C8140010D051000080000003CCC1A2A4D6
-:1007C000CCC1A2A404100001CD0000198400038153
-:1007D000CC00007FC810001999000000C810001953
-:1007E000800000047C40800004102100954000003F
-:1007F000C8140011D05100008000037ECCC1A2A417
-:100800007C40C000CC40000D94C0FE01CC40000EE6
-:100810007C4100009500000508CC0001C8140005CB
-:10082000994000140000000098C0FFFB7C410000CC
-:10083000800000047D008000C81400057C40C000DA
-:100840009940000CC818000C7C4100009580FDF018
-:10085000C820000EC81C000D662000207E1E002C43
-:10086000252400027E62402080000003CCE60000C8
-:100870007C410000CC00006CCC00006DC818001F4B
-:10088000C81C001E659800207DD9C02C7CD4C00CEB
-:10089000CCDE000045DC0004C82800179680000F5D
-:1008A000C00E0001286800082AAC001632A800FF1C
-:1008B0000EB000497F2F000B9700000600000000DB
-:1008C000C81400057C40C000800002237C41000069
-:1008D00080000226D040007F8400023BCC00004113
-:1008E000CCC1304A94000000C83C001A043C00050A
-:1008F000CFC1A2A4C0361F90C0387FFF7C03C010B8
-:100900007F7B400CCF41217CCFC1217DCC01217E5A
-:10091000C03A00040434217F7F7B400CCC350000BA
-:10092000C83C00042BFC001F0438002097C00005C1
-:10093000CC0000629B8000000BB8000180000247E1
-:10094000CC000071CC01A1F404380016C0360002BE
-:10095000CF81A2A488000000CF4120107C40C000BD
-:1009600028D0001C9500000504D40001CD4000658E
-:1009700080000003CD40006809540002800000039D
-:10098000CD4000668400026CC81803EA7C40C000B9
-:100990009980FD9FC814001608D000019940002BD3
-:1009A000CD0000687C408000A0000000CC80006288
-:1009B000043C0005CFC1A2A4CC01A1F484000381B2
-:1009C000CC00004688000000CC00007F8400027E3E
-:1009D000C81803EA7C40C0009980FD8DC814001639
-:1009E00008D0000199400019CD0000687C408000CB
-:1009F000A0000000CC800062043C0022CFC1A2A471
-:100A000084000381CC00004788000000CC00007FF8
-:100A1000C81000169900000DCC400067800000044B
-:100A20007C408000C81803EA9980FD797C40C000B2
-:100A300094C00003C810001699000004CCC00068E0
-:100A4000800000047C4080008400023BC0148000D1
-:100A5000CC000041CD41304AC01480009900000014
-:100A6000C8100016800000047C408000C012000105
-:100A70007C51400C80000003D05500007C40C00039
-:100A80007C4100007C4140007C418000291C001F0B
-:100A9000CCC0004ACD00004B95C00003C01C8000B4
-:100AA000CDC12010DD830000055C2000CC00006279
-:100AB00080000003D81F41007C40C0007C41000042
-:100AC0007C4140007C418000CCC0004CCD00004DFA
-:100AD000DD830000055CA00080000003D81F4100FA
-:100AE0007C40C0007C4100007C4140007C41800093
-:100AF000CCC0004ECD00004FDD830000055CC0007F
-:100B000080000003D81F41007C40C0007C410000F1
-:100B10007C4140007C418000CCC00050CD000051A1
-:100B2000DD830000055CF8E080000003D81F410071
-:100B30007C40C0007C4100007C4140007C41800042
-:100B4000CCC00052CD000053DD830000055CF8806E
-:100B500080000003D81F41007C40C0007C410000A1
-:100B60007C4140007C418000CCC00054CD00005549
-:100B7000DD830000055CE00080000003D81F410019
-:100B80007C40C0007C4100007C4140007C418000F2
-:100B9000CCC00056CD000057DD830000055CF0009E
-:100BA00080000003D81F41007C40C0007C41000051
-:100BB0007C4140007C418000CCC00058CD000059F1
-:100BC000DD830000055CF3FC80000003D81F4100BA
-:100BD000D04320007C408000A0000000CC80006258
-:100BE000D043A0007C408000A0000000CC800062C8
-:100BF000D043C0007C408000A0000000CC80006298
-:100C0000D043F8E07C408000A0000000CC8000626F
-:100C1000D043F8807C408000A0000000CC800062BF
-:100C2000D043E0007C408000A0000000CC80006247
-:100C3000D043F0007C408000A0000000CC80006227
-:100C4000D043F3FC7C408000A0000000CC80006218
-:100C5000C81403E0CC430000CC430000CC430000A8
-:100C60007D45C000CDC30000D04300007C40800023
-:100C7000A0000000CC8000627C40C000C81003E2ED
-:100C8000C81403E5C81803E3C81C03E4CD81216937
-:100C9000CDC1216ACCC1216BCC01216C04200004A0
-:100CA0007DA180007D9640029640FCD9CD8003E373
-:100CB00031280003C02DF000251800087DAD800B01
-:100CC0007DA9800C80000003CD8003E3308CFFFF02
-:100CD000D04D00007C408000A0000000CC8000626D
-:100CE000C8140020155800029580FFFFC81400208A
-:100CF000CC00006ECC4121807C40C000CCC1218D55
-:100D0000CC41218128D0001F34588000CD81218C16
-:100D10009500FCBFCC412182C81400209940FFFF00
-:100D2000C8140020800000047C4080007C40C0008B
-:100D300028D0001831100001C01600809500000373
-:100D4000C02A00047CD4C00CCCC1217CCC41217DC4
-:100D5000CC41217E7C4180001DB0000336A0217F64
-:100D60009B000003419C0005041C004099C000004A
-:100D700009DC0001CC210000C82400042A6C001FFB
-:100D8000419C00059AC0FFFACC80006280000004FC
-:100D90007C4080007C40C00004D403E68000000357
-:100DA000CC5400008000037ECC4003EAC01C8000CD
-:100DB000044CA000CDC120107C410000C8140009E3
-:100DC00004180000041C0008CD80007109DC00013B
-:100DD00005980001CD0D000099C0FFFCCC80006299
-:100DE0008000037ECD400071C00E0100CC000041A8
-:100DF000CCC1304AC83C007FCC00007F800000039B
-:100E0000CC00007FCC00007F88000000CC00007F79
-:100E100000000000000000000000000000000000D2
-:100E200000000000000000000000000000000000C2
-:100E300000000000000000000000000000000000B2
-:100E400000000000000000000000000000000000A2
-:100E50000000000000000000000000000000000092
-:100E60000000000000000000000000000000000082
-:100E70000000000000000000000000000000000072
-:100E80000000000000000000000000000000000062
-:100E90000000000000000000000000000000000052
-:100EA0000000000000000000000000000000000042
-:100EB0000000000000000000000000000000000032
-:100EC0000000000000000000000000000000000022
-:100ED0000000000000000000000000000000000012
-:100EE0000000000000000000000000000000000002
-:100EF00000000000000000000000000000000000F2
-:100F000000000000000000000000000000000000E1
-:100F100000000000000000000000000000000000D1
-:100F200000000000000000000000000000000000C1
-:100F300000000000000000000000000000000000B1
-:100F400000000000000000000000000000000000A1
-:100F50000000000000000000000000000000000091
-:100F60000000000000000000000000000000000081
-:100F70000000000000000000000000000000000071
-:100F80000000000000000000000000000000000061
-:100F90000000000000000000000000000000000051
-:100FA0000000000000000000000000000000000041
-:100FB0000000000000000000000000000000000031
-:100FC0000000000000000000000000000000000021
-:100FD0000000000000000000000000000000000011
-:100FE0000000000000000000000000000000000001
-:100FF00000000000000000000000000000000000F1
-:1010000000000000000000000000000000000000E0
-:1010100000000000000000000000000000000000D0
-:1010200000000000000000000000000000000000C0
-:1010300000000000000000000000000000000000B0
-:1010400000000000000000000000000000000000A0
-:101050000000000000000000000000000000000090
-:101060000000000000000000000000000000000080
-:101070000000000000000000000000000000000070
-:101080000000000000000000000000000000000060
-:101090000000000000000000000000000000000050
-:1010A0000000000000000000000000000000000040
-:1010B0000000000000000000000000000000000030
-:1010C0000000000000000000000000000000000020
-:1010D0000000000000000000000000000000000010
-:1010E0000000000000000000000000000000000000
-:1010F00000000000000000000000000000000000F0
-:1011000000000000000000000000000000000000DF
-:1011100000000000000000000000000000000000CF
-:1011200000000000000000000000000000000000BF
-:1011300000000000000000000000000000000000AF
-:10114000000000000000000000000000000000009F
-:10115000000000000000000000000000000000008F
-:10116000000000000000000000000000000000007F
-:10117000000000000000000000000000000000006F
-:10118000000000000000000000000000000000005F
-:10119000000000000000000000000000000000004F
-:1011A000000000000000000000000000000000003F
-:1011B000000000000000000000000000000000002F
-:1011C000000000000000000000000000000000001F
-:1011D000000000000000000000000000000000000F
-:1011E00000000000000000000000000000000000FF
-:1011F00000000000000000000000000000000000EF
-:1012000000000000000000000000000000000000DE
-:1012100000000000000000000000000000000000CE
-:1012200000000000000000000000000000000000BE
-:1012300000000000000000000000000000000000AE
-:10124000000000000000000000000000000000009E
-:10125000000000000000000000000000000000008E
-:10126000000000000000000000000000000000007E
-:10127000000000000000000000000000000000006E
-:10128000000000000000000000000000000000005E
-:10129000000000000000000000000000000000004E
-:1012A000000000000000000000000000000000003E
-:1012B000000000000000000000000000000000002E
-:1012C000000000000000000000000000000000001E
-:1012D000000000000000000000000000000000000E
-:1012E00000000000000000000000000000000000FE
-:1012F00000000000000000000000000000000000EE
-:1013000000000000000000000000000000000000DD
-:1013100000000000000000000000000000000000CD
-:1013200000000000000000000000000000000000BD
-:1013300000000000000000000000000000000000AD
-:10134000000000000000000000000000000000009D
-:10135000000000000000000000000000000000008D
-:10136000000000000000000000000000000000007D
-:10137000000000000000000000000000000000006D
-:10138000000000000000000000000000000000005D
-:10139000000000000000000000000000000000004D
-:1013A000000000000000000000000000000000003D
-:1013B000000000000000000000000000000000002D
-:1013C000000000000000000000000000000000001D
-:1013D000000000000000000000000000000000000D
-:1013E00000000000000000000000000000000000FD
-:1013F00000000000000000000000000000000000ED
-:101400000001033300100006001700080021000A45
-:101410000027002A002800250029002B002A002888
-:10142000002B002B002D003A002E0041002F004C15
-:101430000034004E00360032003900B1003A00D1CD
-:10144000003B00E6003C00FE003D016D003F00AFA8
-:10145000004103380043034B00440190004500FE67
-:10146000004601AE004701AE004802000049020EEE
-:10147000004A0257004B028400520261005302737B
-:10148000005402890057029B0060029F006102AE77
-:10149000006202B8006302C2006402CC006502D69A
-:1014A000006602E0006702EA006802F4006902F8E0
-:1014B000006A02FC006B0300006C0304006D03086B
-:1014C000006E030C006F03100070031400720365BC
-:1014D0000074036B00790369007C031E000F037A1C
-:1014E000000F037A000F037A000F037A000F037ACC
-:1014F000000F037A000F037A000F037A000F037ABC
-:10150000000F037A000F037A000F037A000F037AAB
-:10151000000F037A000F037A000F037A000F037A9B
-:10152000000F037A000F037A000F037A000F037A8B
-:10153000000F037A000F037A000F037A000F037A7B
-:00000001FF
diff --git a/firmware/radeon/RV710_pfp.bin.ihex b/firmware/radeon/RV710_pfp.bin.ihex
deleted file mode 100644
index 3d811ff0a1a8..000000000000
--- a/firmware/radeon/RV710_pfp.bin.ihex
+++ /dev/null
@@ -1,213 +0,0 @@
-:100000007C408000A00000007E82800B8000000009
-:10001000DC030000CC800040D04000407C408000E9
-:10002000A00000007E82800BC818000E31980001ED
-:100030007C4240009580023A7C428000C81C001C33
-:10004000C037C0007C40C0007C4100007CB4800B05
-:10005000C036000399C00000C81C001C7CB4800C92
-:1000600024D400027D654000CD400043CE80004393
-:10007000CD000043CC800040CE400040CE80004008
-:10008000CCC00040DC3A00009780FFDECD0000408D
-:100090007C40C000800000187C410000D400034078
-:1000A000D4000FC0D4000FA2C818000E8000000CAE
-:1000B00031980002D40003C0D4000FC0D4000FA2B6
-:1000C000C818000E288C000830CC000F3410000136
-:1000D0007D0D00088000000C7D91800BCC800040DD
-:1000E000D04000407C408000A00000007E82800B59
-:1000F000D4000340D4000FC0D4000FA2CC80004035
-:10010000D04000407C408000A00000007E82800B38
-:10011000D40003C0D4000FC0D4000FA2CC80004094
-:10012000D04000407C408000A00000007E82800B18
-:10013000CC4003F980000249CC4003F8C037FFFFF0
-:100140007C414000CF41A29EC82003F8C81C03F99F
-:1001500066200020C81803FB7DE1C02C7D58C00834
-:100160007CDCC02069100020C0360003CC000054A5
-:100170007CB4800C80000069CC8000407C41800011
-:10018000CD81A29ECC80004080000067CD800040E1
-:10019000C019FFFFCC800040CD81A29E7C40C000F2
-:1001A0007C4100007C414000CCC1A1FACD01A1F905
-:1001B000CD41A29DCCC00040CD000040CD400040CC
-:1001C000CC4000407C408000A00000007E82800B7C
-:1001D000CC000054CC8000407C40C0007C4100003A
-:1001E0007C414000CCC1A1FACD01A1F9CD41A29D35
-:1001F000CCC00040CD000040CD400040D040004089
-:100200007C408000A00000007E82800B7C40C0000B
-:1002100030D00001CCC1A29F95000003041400015E
-:1002200004140002CD4003FBCC800040800000009D
-:10023000CCC000407C40C000CC800040CCC1A2A219
-:1002400080000000CCC000407C40C00028D4001FCB
-:10025000CC800040954000037C410000CCC000579A
-:100260002918001FCCC0004095800003CD0000403D
-:10027000CD00005880000249CC00007FC820001744
-:10028000C83000229A0000060E280001C824001E73
-:100290000A640001D4001240CE400040C036C000C5
-:1002A0009680000737747900041C0001CF4000409D
-:1002B000CDC00040CF0003FA7C030000CA0C001040
-:1002C0007C41000094C000047C414000D42002C462
-:1002D000CDE000449B00000B7C418000CC00004B33
-:1002E000CDA00049CD200041CD600041CDA000410E
-:1002F00006200001CE00005680000249CC00007F9D
-:10030000C8280020C82C0021CC0000637EEA4001F0
-:10031000657400207F53402C269C00027DF5C02090
-:1003200069F80020CE80004BCE600049CDE000414E
-:10033000CFA00041CE600041271C00027DF5C02007
-:1003400069F800207DB24001CF00004BCE6000492B
-:10035000CDE00041CFA00041800000BCCE60004154
-:10036000C8200017C83000229A0000060E2800019D
-:10037000C824001E0A640001D4001240CE40004090
-:10038000CA0C00107C41000094C0000BC036C000B5
-:100390009680000737747900041C0001CF400040AC
-:1003A000CDC00040CF0003FA7C030000800000B500
-:1003B0007C414000CC000048800000EE00000000BE
-:1003C000C8200017C81C00230E24000299C0001585
-:1003D0007C4180000A200001CE000056D400044079
-:1003E000CC000040C036C000CA140013964000077D
-:1003F00037747900CF400040CC000040C83003FA89
-:1004000080000103CF000022CC000022954001466D
-:10041000CC00007FCCA0004680000000CC2000462D
-:1004200080000249CC000064C8200017C810001FDB
-:100430009600000509100001D4000440CD000040E2
-:10044000CD000022CC800040D0400040C80C0025E8
-:1004500094C0FEECC8100008CD000040D4000FC0CE
-:1004600080000000D4000FA27C40C0007C4100004E
-:10047000CCC003FDCD0003FCCCC00042CD00004247
-:100480002914001F29180010319800073B5C000157
-:100490007D76000B998000057D5E400BCC0000420C
-:1004A00080000249CC00004D29980001292C000849
-:1004B0009980003D32EC0001960000042930000CC8
-:1004C00080000249CC00004204140010CD400042DC
-:1004D00033300001342800018400015DC81400039A
-:1004E0009B40001B0438000C8400015DC81400030D
-:1004F0009B400017043800088400015DC814000305
-:100500009B400013043800048400015DC8140003FC
-:100510009B400015C80C03FD9A800009C81003FC1D
-:100520009B000101CC00004D04140010CCC000421F
-:10053000CD00004280000135CD40004296C000FA57
-:10054000CC00004D80000249CC00004E9AC0000350
-:10055000CC00004DCC00004EDF8300008000000086
-:10056000D80301FF9AC000F0CC00004D8000024982
-:10057000CC00004EC8180003C81C0003C8200003AC
-:100580007D5D40037DA1C0037D5D400C2A10001FEE
-:10059000299C001F7D1D000B7D17400B880000006B
-:1005A0007E92800B96400004CC00004E80000249F1
-:1005B000CC00004204380008CF800042C808000385
-:1005C000C80C0003C8100003C8140003C8180003B7
-:1005D000C81C0003C8240003C828000329FC001F0E
-:1005E0002AB0001F7FF3C00B28F0001F7FF3C00B61
-:1005F0002970001F7FF3C00B7D8880017DCCC00176
-:100600007E5100017E9540017C9080027CD4C00226
-:100610007CBC800B9AC000037C8F400B38B4000177
-:100620009B4000C1CC00004D9BC000BFCC00004EE1
-:10063000C80C03FDC81003FCCCC000428000016E52
-:10064000CD000042D4000340D4000FC0D4000FA25C
-:10065000CC800040CC400040CC400040CC4000402A
-:100660007C40C000CCC00040CCC0000D8000000029
-:10067000D04000407C40C0007C4100006514002058
-:100680007D4D402C245800027D5980207C41C000C3
-:10069000CD80004269980020CD800042CDC000424C
-:1006A000C023C00005E400027CA0800B266400107B
-:1006B0007CA4800CCC800040CDC00040CCC0004069
-:1006C00095C0000ECD00004009DC0001C8280003E1
-:1006D00096800008CE800040C834001D974000007E
-:1006E000C834001D26A800088400024CCC2B000052
-:1006F00099C0FFF709DC0001DC3A00009780000494
-:100700007C418000800001A225980002A00000002A
-:100710007D808000C818001D7C40C00064D00008A7
-:1007200095800000C818001DCC130000CC8000404C
-:10073000CCC0004080000000CC400040C810001F2A
-:100740007C40C000CC8000407CD1400CCD400040BB
-:100750000518000180000000CD8000227C40C00010
-:10076000645000208400024CCC0000617CD0C02C7E
-:10077000C8200017C8D60000994000087C438000BC
-:10078000DF830000CFA0004F8400024CCC00006249
-:1007900080000000D040007F80000249CC00006251
-:1007A0008400024CCC000061C82000177C40C000CF
-:1007B000C036FF00C810000DC0303FFF7CF5400B75
-:1007C0007D51800B7D81800F998000087CF3800B28
-:1007D000DF830000CFA0004F8400024CCC000062F9
-:1007E00080000000D040007F80000249CC00006201
-:1007F0008400024C7C40C00028DC000895C0001931
-:1008000030DC00107C41000099C0000464540020DA
-:1008100080000208C91D00007D15002CC91E0000C3
-:100820007C4200007C4240007C4180007DE5C00BA2
-:100830007DE280079A80000E41AC00059AC000005E
-:100840000AEC000130DC001099C000040000000038
-:100850008000020BC91D00008000020BC91E0000B1
-:10086000CC800040CCC00040D0400040C80C0025E7
-:1008700094C0FDE4C8100008CD000040D4000FC0B3
-:1008800080000000D4000FA2D4000340D4000FC0A9
-:10089000D4000FA2CC800040D04000407C408000BB
-:1008A000A00000007E82800BD40003C0D4000FC0E3
-:1008B000D4000FA2CC800040D04000407C4080009B
-:1008C000A00000007E82800B7C40C00030D000067B
-:1008D0000D10000699000007C81400159940000586
-:1008E000CC000052D4000340D4000FC0D4000FA2AB
-:1008F000CC800040CCC0004080000000D0400040D0
-:100900007C40C000CC4D0000DC3A00009780FDBD6B
-:1009100004CC000180000242CC4D000080000000A9
-:10092000D040007FCC00007F80000000CC00007F22
-:10093000CC00007F88000000CC00007F0000000099
-:1009400000000000000000000000000000000000A7
-:100950000000000000000000000000000000000097
-:100960000000000000000000000000000000000087
-:100970000000000000000000000000000000000077
-:100980000000000000000000000000000000000067
-:100990000000000000000000000000000000000057
-:1009A0000000000000000000000000000000000047
-:1009B0000000000000000000000000000000000037
-:1009C0000000000000000000000000000000000027
-:1009D0000000000000000000000000000000000017
-:1009E0000000000000000000000000000000000007
-:1009F00000000000000000000000000000000000F7
-:100A000000000000000000000000000000000000E6
-:100A100000000000000000000000000000000000D6
-:100A200000000000000000000000000000000000C6
-:100A300000000000000000000000000000000000B6
-:100A400000000000000000000000000000000000A6
-:100A50000000000000000000000000000000000096
-:100A60000000000000000000000000000000000086
-:100A70000000000000000000000000000000000076
-:100A80000000000000000000000000000000000066
-:100A90000000000000000000000000000000000056
-:100AA0000000000000000000000000000000000046
-:100AB0000000000000000000000000000000000036
-:100AC0000000000000000000000000000000000026
-:100AD0000000000000000000000000000000000016
-:100AE0000000000000000000000000000000000006
-:100AF00000000000000000000000000000000000F6
-:100B000000000000000000000000000000000000E5
-:100B100000000000000000000000000000000000D5
-:100B200000000000000000000000000000000000C5
-:100B300000000000000000000000000000000000B5
-:100B400000000000000000000000000000000000A5
-:100B50000000000000000000000000000000000095
-:100B60000000000000000000000000000000000085
-:100B70000000000000000000000000000000000075
-:100B80000000000000000000000000000000000065
-:100B90000000000000000000000000000000000055
-:100BA0000000000000000000000000000000000045
-:100BB0000000000000000000000000000000000035
-:100BC0000000000000000000000000000000000025
-:100BD0000000000000000000000000000000000015
-:100BE0000000000000000000000000000000000005
-:100BF00000000000000000000000000000000000F5
-:100C0000000302220004022A0005009F00020003E4
-:100C10000006003C0007002700080191000900447D
-:100C2000000A002D00100247001700F0002201D733
-:100C3000002301E80026004C0027005F0020011A75
-:100C4000002800920029004F002A0083002B006436
-:100C5000002F008D003200D80034023200360074BC
-:100C60000039010A003C01FC003F009F00410005E3
-:100C7000004401940048019D004901C5004A01CF8C
-:100C8000005502250056022D0060000A0061002A6E
-:100C90000062003000630030006400300065003006
-:100CA0000066003000670030006800370069003FD0
-:100CB000006A0047006B0047006C0047006D00476A
-:100CC000006E0047006F0047007000470073024746
-:100CD000007B024000000005000000050000000548
-:100CE00000000005000000050000000500000005F0
-:100CF00000000005000000050000000500000005E0
-:100D000000000005000000050000000500000005CF
-:100D100000000005000000050000000500000005BF
-:100D200000000005000000050000000500000005AF
-:100D3000000000050000000500000005000000059F
-:00000001FF
diff --git a/firmware/radeon/RV730_me.bin.ihex b/firmware/radeon/RV730_me.bin.ihex
deleted file mode 100644
index 390c18e7cef3..000000000000
--- a/firmware/radeon/RV730_me.bin.ihex
+++ /dev/null
@@ -1,341 +0,0 @@
-:10000000CC0003EA7C408000A0000000CC800062AD
-:1000100080000001D040007F80000001CC40004102
-:100020007C40C000C016000430D03FFF7D15000C9E
-:10003000CC11000028D8001E3198000128DC001FD8
-:10004000C820000495C000067C424000CC0000623D
-:100050007E56800CCC290000C82400047E26000BAC
-:10006000958000067C42C000CC0000627ED7000C68
-:10007000CC310000C82C00047E2E000CCC000062A5
-:1000800031103FFF80000001CE1100007C40C00015
-:1000900080000001CC40004080000001CC4122578C
-:1000A0007C418000CC400045CC400048CC41225CE3
-:1000B000CC41A1FC7C408000A0000000CC8000620C
-:1000C000CC400045CC4000487C40C000CC41225C84
-:1000D000CC41A1FC7C408000A0000000CC800062EC
-:1000E000CC000045CC000048CC41225CCC41A1FCB6
-:1000F0007C408000A0000000CC800062040CA1FDC8
-:10010000C0120001CC000045CC0000487CD0C00CDF
-:10011000CC41225CCC41A1FCD04D00007C40800051
-:10012000A0000000CC80006280000001CC41225D74
-:100130007C4080007C40C000C02A00027C4100005E
-:100140007D29000C3094000130980006309C03009B
-:1001500029DC00087C4200007C4240009540000FF2
-:10016000C02E000405F022587F2F000CCC31000077
-:10017000C8280004CCC12169CD01216ACE81216B40
-:100180000DB40002CC01216C9740000E0DB40000AC
-:100190008000007BC834000A0DB4000297400009BB
-:1001A0000DB40000C02E000405F022587F2F000C73
-:1001B000CC310000C82800048000007BC834000A4D
-:1001C000974000047E0280008000007BC834000A53
-:1001D0000DB400049740FF8C00000000CE01216D9B
-:1001E000CE41216EC8280003C834000A9B40000499
-:1001F000043C00058400026BCC0000620DF400009A
-:100200009740000BC82C03E6CE81A2B7C030000691
-:100210007EF34028C03000207F6B80207FB3C02950
-:10022000CF81A2C480000001CFC1A2D10DF4000192
-:100230009740000BC82C03E7CE81A2BBC03000065C
-:100240007EF34028C03000207F6B80207FB3C02920
-:10025000CF81A2C580000001CFC1A2D20DF400025F
-:100260009740000BC82C03E8CE81A2BFC030000627
-:100270007EF34028C03000207F6B80207FB3C029F0
-:10028000CF81A2C680000001CFC1A2D3C82C03E950
-:10029000CE81A2C3C03000067EF34028C0300020CB
-:1002A0007F6B80207FB3C029CF81A2C7800000016F
-:1002B000CFC1A2D480000001CC4000427C40C000ED
-:1002C0007C4100002914001D315400019940000CAC
-:1002D00031181000C81C001195C00000C81C001186
-:1002E000CCC12100CD012101CCC12102CD012103CE
-:1002F000041800048000037CCD81A2A4C02A00045D
-:100300009580000836A821A3CC290000C828000445
-:10031000C81C00110DE400409640FFFFC81C0011EE
-:10032000CCC12170CD012171C820001296000000BF
-:10033000C82000128000037CCC0000647C40C00018
-:100340007C410000CC000045CC00004840D40003B4
-:10035000CD41225CCD01A1FCC01A0001041CA1FD0D
-:100360007DD9C00C7C42000008CC000106240001AD
-:1003700006280002CE1D0000CE5D000098C0FFFAE6
-:10038000CE9D00007C408000A0000000CC80006278
-:100390007C40C00030D0000128CC00017C414000EE
-:1003A000950000067C418000CD41216DCD81216EFC
-:1003B000800000F2C81C0003C02200047E16000C5E
-:1003C000CC210000C81C00047C42400098C00004FE
-:1003D0007C42800080000001CDE50000CE41216913
-:1003E000CE81216ACDC1216B80000001CC01216C3E
-:1003F0007C40C0007C4100007C4140007C4180008A
-:100400007C41C00028A40008326400FF0E68003C54
-:100410009680000A7C0200007C4200001E3000032F
-:10042000CC00006A9B00000342200005042000402D
-:100430008000010F7C0240007E0240009A400000D4
-:100440000A64000130EC00109AC0000ACC0000627F
-:10045000C02A0004C82C00217E92800CCC000041F0
-:10046000CC290000CEC000218000011FC83000044C
-:10047000CD01216DCD41216EC83000037F1F000BDF
-:1004800030F40007277800019740002A07B80124BC
-:100490009F80000000000000800001347F1B80046A
-:1004A000800001387F1B80058000013C7F1B80029B
-:1004B000800001407F1B8003800001447F1B800778
-:1004C000800001487F1B80068000014D28A40008A1
-:1004D0009B80001928A400088000015D326400FFA1
-:1004E0009B80001528A400088000015D326400FF95
-:1004F0009B80001128A400088000015D326400FF89
-:100500009B80000D28A400088000015D326400FF7C
-:100510009B80000928A400088000015D326400FF70
-:100520009B80000528A400088000015D326400FF64
-:1005300028A40008326400FF0E68003C9A80FEB2D6
-:1005400028EC00087C4340007C4380007C43C000D2
-:1005500096C00007CC000062CF412169CF81216A9B
-:10056000CFC1216B80000001CC01216C8000000113
-:10057000CFF50000CC00006B8400037F0E68003CC8
-:100580009A800004C828001580000001D040007F38
-:100590009680FFAB7E02400084000239C00E00024C
-:1005A000CC00004180000237CCC1304A7C40C00002
-:1005B0007C410000C01E000129240012C02200025C
-:1005C00096400005C0260004C027FFFB7D25000BD8
-:1005D000C02600007DD2800B7E12C00B7D25000C52
-:1005E0007C4140007C418000CCC121699A80000A96
-:1005F000CD01216ACD41216B96C0FE83CD81216C56
-:10060000C830001897000000C830001880000001B2
-:10061000CC0000188400037FCC00007FC8140013B6
-:10062000C8180014CD41216B96C0FE77CD81216C96
-:1006300080000181C8300018C80C000898C0000074
-:10064000C80C00087C41000095000002000000007A
-:100650007C414000C8200009CC400043CE01A1F4F9
-:10066000CC400044C00E80007C4240007C428000B0
-:100670002AAC001F96C0FE64C035F000CE4003E2F5
-:1006800032780003267C00087FF7C00B7FFBC00C8C
-:100690002A780018CFC003E3CF8003E426B000021D
-:1006A0007F3F0000CF0003E58000031D7C80C00079
-:1006B0007C40C00028D000083110000F9500000FCA
-:1006C0002528000106A801B29E800000000000005D
-:1006D000800001D3C0120800800001E1C814000F9F
-:1006E000800001E8C8140010800001EFCCC1A2A472
-:1006F000800001F8C814001130D0003F0D2800150B
-:100700009A8000120D28001E9A80001E0D280020DD
-:100710009A8000230D24000F0D2800107E6A800CA3
-:100720009A8000260D2000040D2400140D280028B6
-:100730007E62400C7EA6800C9A80002AC8140011AC
-:1007400080000001CCC1A2A4C01208007C4140007E
-:100750007D0CC00CC012000829580003295C000C55
-:100760007C4200007DD1C00B262000147E1E400C70
-:100770007E4E800CCE81A2A480000001CD81A1FE1E
-:10078000C814000F0410210E95400000C814000F7B
-:10079000D051000080000001CCC1A2A4C8140010F8
-:1007A0000410210895400000C8140010D05100002A
-:1007B00080000001CCC1A2A4CCC1A2A404100001FD
-:1007C000CD0000198400037FCC00007FC810001901
-:1007D00099000000C8100019800000027C408000D1
-:1007E0000410210095400000C8140011D0510000F1
-:1007F0008000037CCCC1A2A47C40C000CC40000D92
-:1008000094C0FE01CC40000E7C4100009500000524
-:1008100008CC0001C8140005994000140000000035
-:1008200098C0FFFB7C410000800000027D0080003A
-:10083000C81400057C40C0009940000CC818000C8A
-:100840007C4100009580FDF0C820000EC81C000D02
-:10085000662000207E1E002C252400027E6240209F
-:1008600080000001CCE600007C410000CC00006C60
-:10087000CC00006DC818001FC81C001E6598002021
-:100880007DD9C02C7CD4C00CCCDE000045DC00043B
-:10089000C82800179680000FC00E000128680008C5
-:1008A0002AAC001632A800FF0EB000497F2F000BC3
-:1008B0009700000600000000C81400057C40C0003E
-:1008C000800002217C41000080000224D040007F93
-:1008D00084000239CC000041CCC1304A94000000B1
-:1008E000C83C001A043C0005CFC1A2A4C0361F902A
-:1008F000C0387FFF7C03C0107F7B400CCF41217C40
-:10090000CFC1217DCC01217EC03A00040434217F77
-:100910007F7B400CCC350000C83C00042BFC001F42
-:100920000438002097C00005CC0000629B800000C6
-:100930000BB8000180000245CC000071CC01A1F48D
-:1009400004380016C0360002CF81A2A4880000003F
-:10095000CF4120107C40C00028D0001C950000052D
-:1009600004D40001CD40006580000001CD40006846
-:100970000954000280000001CD4000668400026A34
-:10098000C81803EA7C40C0009980FD9FC814001677
-:1009900008D000019940002BCD0000687C40800009
-:1009A000A0000000CC800062043C0005CFC1A2A4DE
-:1009B000CC01A1F48400037FCC0000468800000035
-:1009C000CC00007F8400027CC81803EA7C40C00091
-:1009D0009980FD8DC814001608D0000199400019B7
-:1009E000CD0000687C408000A0000000CC80006248
-:1009F000043C0022CFC1A2A48400037FCC000047A6
-:100A000088000000CC00007FC81000169900000D7F
-:100A1000CC400067800000027C408000C81803EAD8
-:100A20009980FD797C40C00094C00003C810001676
-:100A300099000004CCC00068800000027C40800067
-:100A400084000239C0148000CC000041CD41304AFE
-:100A5000C014800099000000C81000168000000239
-:100A60007C408000C01200017C51400C80000001DD
-:100A7000D05500007C40C0007C4100007C4140001B
-:100A80007C418000291C001FCCC0004ACD00004BD7
-:100A900095C00003C01C8000CDC12010DD83000084
-:100AA000055C2000CC00006280000001D81F4100DE
-:100AB0007C40C0007C4100007C4140007C418000C3
-:100AC000CCC0004CCD00004DDD830000055CA000D3
-:100AD00080000001D81F41007C40C0007C41000024
-:100AE0007C4140007C418000CCC0004ECD00004FD6
-:100AF000DD830000055CC00080000001D81F4100BC
-:100B00007C40C0007C4100007C4140007C41800072
-:100B1000CCC00050CD000051DD830000055CF8E042
-:100B200080000001D81F41007C40C0007C410000D3
-:100B30007C4140007C418000CCC00052CD0000537D
-:100B4000DD830000055CF88080000001D81F4100B3
-:100B50007C40C0007C4100007C4140007C41800022
-:100B6000CCC00054CD000055DD830000055CE000E2
-:100B700080000001D81F41007C40C0007C41000083
-:100B80007C4140007C418000CCC00056CD00005725
-:100B9000DD830000055CF00080000001D81F4100EB
-:100BA0007C40C0007C4100007C4140007C418000D2
-:100BB000CCC00058CD000059DD830000055CF3FC7B
-:100BC00080000001D81F4100D04320007C408000FD
-:100BD000A0000000CC800062D043A0007C408000D8
-:100BE000A0000000CC800062D043C0007C408000A8
-:100BF000A0000000CC800062D043F8E07C40800080
-:100C0000A0000000CC800062D043F8807C408000CF
-:100C1000A0000000CC800062D043E0007C40800057
-:100C2000A0000000CC800062D043F0007C40800037
-:100C3000A0000000CC800062D043F3FC7C40800028
-:100C4000A0000000CC800062C81403E0CC43000088
-:100C5000CC430000CC4300007D45C000CDC3000064
-:100C6000D04300007C408000A0000000CC800062E7
-:100C70007C40C000C81003E2C81403E5C81803E3B1
-:100C8000C81C03E4CD812169CDC1216ACCC1216B8F
-:100C9000CC01216C042000047DA180007D964002DF
-:100CA0009640FCD9CD8003E331280003C02DF0002D
-:100CB000251800087DAD800B7DA9800C8000000107
-:100CC000CD8003E3308CFFFFD04D00007C408000DE
-:100CD000A0000000CC800062C8140020155800025B
-:100CE0009580FFFFC8140020CC00006ECC4121800D
-:100CF0007C40C000CCC1218DCC41218128D0001F77
-:100D000034588000CD81218C9500FCBFCC412182DC
-:100D1000C81400209940FFFFC81400208000000282
-:100D20007C4080007C40C00028D0001831100001B9
-:100D3000C016008095000003C02A00047CD4C00CBB
-:100D4000CCC1217CCC41217DCC41217E7C418000E5
-:100D50001DB0000336A0217F9B000003419C0005CD
-:100D6000041C004099C0000009DC0001CC210000F7
-:100D7000C82400042A6C001F419C00059AC0FFFA99
-:100D8000CC800062800000027C4080007C40C0007B
-:100D900004D403E680000001CC5400008000037CF2
-:100DA000CC4003EAC01C8000044CA000CDC1201040
-:100DB0007C410000C814000904180000041C00084D
-:100DC000CD80007109DC000105980001CD0D000007
-:100DD00099C0FFFCCC8000628000037CCD40007194
-:100DE000C00E0100CC000041CCC1304AC83C007F9D
-:100DF000CC00007F80000001CC00007FCC00007F91
-:100E000088000000CC00007F00000000000000000F
-:100E100000000000000000000000000000000000D2
-:100E200000000000000000000000000000000000C2
-:100E300000000000000000000000000000000000B2
-:100E400000000000000000000000000000000000A2
-:100E50000000000000000000000000000000000092
-:100E60000000000000000000000000000000000082
-:100E70000000000000000000000000000000000072
-:100E80000000000000000000000000000000000062
-:100E90000000000000000000000000000000000052
-:100EA0000000000000000000000000000000000042
-:100EB0000000000000000000000000000000000032
-:100EC0000000000000000000000000000000000022
-:100ED0000000000000000000000000000000000012
-:100EE0000000000000000000000000000000000002
-:100EF00000000000000000000000000000000000F2
-:100F000000000000000000000000000000000000E1
-:100F100000000000000000000000000000000000D1
-:100F200000000000000000000000000000000000C1
-:100F300000000000000000000000000000000000B1
-:100F400000000000000000000000000000000000A1
-:100F50000000000000000000000000000000000091
-:100F60000000000000000000000000000000000081
-:100F70000000000000000000000000000000000071
-:100F80000000000000000000000000000000000061
-:100F90000000000000000000000000000000000051
-:100FA0000000000000000000000000000000000041
-:100FB0000000000000000000000000000000000031
-:100FC0000000000000000000000000000000000021
-:100FD0000000000000000000000000000000000011
-:100FE0000000000000000000000000000000000001
-:100FF00000000000000000000000000000000000F1
-:1010000000000000000000000000000000000000E0
-:1010100000000000000000000000000000000000D0
-:1010200000000000000000000000000000000000C0
-:1010300000000000000000000000000000000000B0
-:1010400000000000000000000000000000000000A0
-:101050000000000000000000000000000000000090
-:101060000000000000000000000000000000000080
-:101070000000000000000000000000000000000070
-:101080000000000000000000000000000000000060
-:101090000000000000000000000000000000000050
-:1010A0000000000000000000000000000000000040
-:1010B0000000000000000000000000000000000030
-:1010C0000000000000000000000000000000000020
-:1010D0000000000000000000000000000000000010
-:1010E0000000000000000000000000000000000000
-:1010F00000000000000000000000000000000000F0
-:1011000000000000000000000000000000000000DF
-:1011100000000000000000000000000000000000CF
-:1011200000000000000000000000000000000000BF
-:1011300000000000000000000000000000000000AF
-:10114000000000000000000000000000000000009F
-:10115000000000000000000000000000000000008F
-:10116000000000000000000000000000000000007F
-:10117000000000000000000000000000000000006F
-:10118000000000000000000000000000000000005F
-:10119000000000000000000000000000000000004F
-:1011A000000000000000000000000000000000003F
-:1011B000000000000000000000000000000000002F
-:1011C000000000000000000000000000000000001F
-:1011D000000000000000000000000000000000000F
-:1011E00000000000000000000000000000000000FF
-:1011F00000000000000000000000000000000000EF
-:1012000000000000000000000000000000000000DE
-:1012100000000000000000000000000000000000CE
-:1012200000000000000000000000000000000000BE
-:1012300000000000000000000000000000000000AE
-:10124000000000000000000000000000000000009E
-:10125000000000000000000000000000000000008E
-:10126000000000000000000000000000000000007E
-:10127000000000000000000000000000000000006E
-:10128000000000000000000000000000000000005E
-:10129000000000000000000000000000000000004E
-:1012A000000000000000000000000000000000003E
-:1012B000000000000000000000000000000000002E
-:1012C000000000000000000000000000000000001E
-:1012D000000000000000000000000000000000000E
-:1012E00000000000000000000000000000000000FE
-:1012F00000000000000000000000000000000000EE
-:1013000000000000000000000000000000000000DD
-:1013100000000000000000000000000000000000CD
-:1013200000000000000000000000000000000000BD
-:1013300000000000000000000000000000000000AD
-:10134000000000000000000000000000000000009D
-:10135000000000000000000000000000000000008D
-:10136000000000000000000000000000000000007D
-:10137000000000000000000000000000000000006D
-:10138000000000000000000000000000000000005D
-:10139000000000000000000000000000000000004D
-:1013A000000000000000000000000000000000003D
-:1013B000000000000000000000000000000000002D
-:1013C000000000000000000000000000000000001D
-:1013D000000000000000000000000000000000000D
-:1013E00000000000000000000000000000000000FD
-:1013F00000000000000000000000000000000000ED
-:10140000000103310010000400170006002100084D
-:10141000002700280028002300290029002A002690
-:10142000002B0029002D0038002E003F002F004A1D
-:101430000034004C00360030003900AF003A00CFD5
-:10144000003B00E4003C00FC003D016B003F00ADB0
-:1014500000410336004303490044018E004500FC6F
-:10146000004601AC004701AC004801FE0049020CF7
-:10147000004A0255004B02820052025F0053027183
-:1014800000540287005702990060029D006102AC7F
-:10149000006202B6006302C0006402CA006502D4A2
-:1014A000006602DE006702E8006802F2006902F6E8
-:1014B000006A02FA006B02FE006C0302006D030674
-:1014C000006E030A006F030E0070031200720363C4
-:1014D0000074036900790367007C031C000F037824
-:1014E000000F0378000F0378000F0378000F0378D4
-:1014F000000F0378000F0378000F0378000F0378C4
-:10150000000F0378000F0378000F0378000F0378B3
-:10151000000F0378000F0378000F0378000F0378A3
-:10152000000F0378000F0378000F0378000F037893
-:10153000000F0378000F0378000F0378000F037883
-:00000001FF
diff --git a/firmware/radeon/RV730_pfp.bin.ihex b/firmware/radeon/RV730_pfp.bin.ihex
deleted file mode 100644
index 3d811ff0a1a8..000000000000
--- a/firmware/radeon/RV730_pfp.bin.ihex
+++ /dev/null
@@ -1,213 +0,0 @@
-:100000007C408000A00000007E82800B8000000009
-:10001000DC030000CC800040D04000407C408000E9
-:10002000A00000007E82800BC818000E31980001ED
-:100030007C4240009580023A7C428000C81C001C33
-:10004000C037C0007C40C0007C4100007CB4800B05
-:10005000C036000399C00000C81C001C7CB4800C92
-:1000600024D400027D654000CD400043CE80004393
-:10007000CD000043CC800040CE400040CE80004008
-:10008000CCC00040DC3A00009780FFDECD0000408D
-:100090007C40C000800000187C410000D400034078
-:1000A000D4000FC0D4000FA2C818000E8000000CAE
-:1000B00031980002D40003C0D4000FC0D4000FA2B6
-:1000C000C818000E288C000830CC000F3410000136
-:1000D0007D0D00088000000C7D91800BCC800040DD
-:1000E000D04000407C408000A00000007E82800B59
-:1000F000D4000340D4000FC0D4000FA2CC80004035
-:10010000D04000407C408000A00000007E82800B38
-:10011000D40003C0D4000FC0D4000FA2CC80004094
-:10012000D04000407C408000A00000007E82800B18
-:10013000CC4003F980000249CC4003F8C037FFFFF0
-:100140007C414000CF41A29EC82003F8C81C03F99F
-:1001500066200020C81803FB7DE1C02C7D58C00834
-:100160007CDCC02069100020C0360003CC000054A5
-:100170007CB4800C80000069CC8000407C41800011
-:10018000CD81A29ECC80004080000067CD800040E1
-:10019000C019FFFFCC800040CD81A29E7C40C000F2
-:1001A0007C4100007C414000CCC1A1FACD01A1F905
-:1001B000CD41A29DCCC00040CD000040CD400040CC
-:1001C000CC4000407C408000A00000007E82800B7C
-:1001D000CC000054CC8000407C40C0007C4100003A
-:1001E0007C414000CCC1A1FACD01A1F9CD41A29D35
-:1001F000CCC00040CD000040CD400040D040004089
-:100200007C408000A00000007E82800B7C40C0000B
-:1002100030D00001CCC1A29F95000003041400015E
-:1002200004140002CD4003FBCC800040800000009D
-:10023000CCC000407C40C000CC800040CCC1A2A219
-:1002400080000000CCC000407C40C00028D4001FCB
-:10025000CC800040954000037C410000CCC000579A
-:100260002918001FCCC0004095800003CD0000403D
-:10027000CD00005880000249CC00007FC820001744
-:10028000C83000229A0000060E280001C824001E73
-:100290000A640001D4001240CE400040C036C000C5
-:1002A0009680000737747900041C0001CF4000409D
-:1002B000CDC00040CF0003FA7C030000CA0C001040
-:1002C0007C41000094C000047C414000D42002C462
-:1002D000CDE000449B00000B7C418000CC00004B33
-:1002E000CDA00049CD200041CD600041CDA000410E
-:1002F00006200001CE00005680000249CC00007F9D
-:10030000C8280020C82C0021CC0000637EEA4001F0
-:10031000657400207F53402C269C00027DF5C02090
-:1003200069F80020CE80004BCE600049CDE000414E
-:10033000CFA00041CE600041271C00027DF5C02007
-:1003400069F800207DB24001CF00004BCE6000492B
-:10035000CDE00041CFA00041800000BCCE60004154
-:10036000C8200017C83000229A0000060E2800019D
-:10037000C824001E0A640001D4001240CE40004090
-:10038000CA0C00107C41000094C0000BC036C000B5
-:100390009680000737747900041C0001CF400040AC
-:1003A000CDC00040CF0003FA7C030000800000B500
-:1003B0007C414000CC000048800000EE00000000BE
-:1003C000C8200017C81C00230E24000299C0001585
-:1003D0007C4180000A200001CE000056D400044079
-:1003E000CC000040C036C000CA140013964000077D
-:1003F00037747900CF400040CC000040C83003FA89
-:1004000080000103CF000022CC000022954001466D
-:10041000CC00007FCCA0004680000000CC2000462D
-:1004200080000249CC000064C8200017C810001FDB
-:100430009600000509100001D4000440CD000040E2
-:10044000CD000022CC800040D0400040C80C0025E8
-:1004500094C0FEECC8100008CD000040D4000FC0CE
-:1004600080000000D4000FA27C40C0007C4100004E
-:10047000CCC003FDCD0003FCCCC00042CD00004247
-:100480002914001F29180010319800073B5C000157
-:100490007D76000B998000057D5E400BCC0000420C
-:1004A00080000249CC00004D29980001292C000849
-:1004B0009980003D32EC0001960000042930000CC8
-:1004C00080000249CC00004204140010CD400042DC
-:1004D00033300001342800018400015DC81400039A
-:1004E0009B40001B0438000C8400015DC81400030D
-:1004F0009B400017043800088400015DC814000305
-:100500009B400013043800048400015DC8140003FC
-:100510009B400015C80C03FD9A800009C81003FC1D
-:100520009B000101CC00004D04140010CCC000421F
-:10053000CD00004280000135CD40004296C000FA57
-:10054000CC00004D80000249CC00004E9AC0000350
-:10055000CC00004DCC00004EDF8300008000000086
-:10056000D80301FF9AC000F0CC00004D8000024982
-:10057000CC00004EC8180003C81C0003C8200003AC
-:100580007D5D40037DA1C0037D5D400C2A10001FEE
-:10059000299C001F7D1D000B7D17400B880000006B
-:1005A0007E92800B96400004CC00004E80000249F1
-:1005B000CC00004204380008CF800042C808000385
-:1005C000C80C0003C8100003C8140003C8180003B7
-:1005D000C81C0003C8240003C828000329FC001F0E
-:1005E0002AB0001F7FF3C00B28F0001F7FF3C00B61
-:1005F0002970001F7FF3C00B7D8880017DCCC00176
-:100600007E5100017E9540017C9080027CD4C00226
-:100610007CBC800B9AC000037C8F400B38B4000177
-:100620009B4000C1CC00004D9BC000BFCC00004EE1
-:10063000C80C03FDC81003FCCCC000428000016E52
-:10064000CD000042D4000340D4000FC0D4000FA25C
-:10065000CC800040CC400040CC400040CC4000402A
-:100660007C40C000CCC00040CCC0000D8000000029
-:10067000D04000407C40C0007C4100006514002058
-:100680007D4D402C245800027D5980207C41C000C3
-:10069000CD80004269980020CD800042CDC000424C
-:1006A000C023C00005E400027CA0800B266400107B
-:1006B0007CA4800CCC800040CDC00040CCC0004069
-:1006C00095C0000ECD00004009DC0001C8280003E1
-:1006D00096800008CE800040C834001D974000007E
-:1006E000C834001D26A800088400024CCC2B000052
-:1006F00099C0FFF709DC0001DC3A00009780000494
-:100700007C418000800001A225980002A00000002A
-:100710007D808000C818001D7C40C00064D00008A7
-:1007200095800000C818001DCC130000CC8000404C
-:10073000CCC0004080000000CC400040C810001F2A
-:100740007C40C000CC8000407CD1400CCD400040BB
-:100750000518000180000000CD8000227C40C00010
-:10076000645000208400024CCC0000617CD0C02C7E
-:10077000C8200017C8D60000994000087C438000BC
-:10078000DF830000CFA0004F8400024CCC00006249
-:1007900080000000D040007F80000249CC00006251
-:1007A0008400024CCC000061C82000177C40C000CF
-:1007B000C036FF00C810000DC0303FFF7CF5400B75
-:1007C0007D51800B7D81800F998000087CF3800B28
-:1007D000DF830000CFA0004F8400024CCC000062F9
-:1007E00080000000D040007F80000249CC00006201
-:1007F0008400024C7C40C00028DC000895C0001931
-:1008000030DC00107C41000099C0000464540020DA
-:1008100080000208C91D00007D15002CC91E0000C3
-:100820007C4200007C4240007C4180007DE5C00BA2
-:100830007DE280079A80000E41AC00059AC000005E
-:100840000AEC000130DC001099C000040000000038
-:100850008000020BC91D00008000020BC91E0000B1
-:10086000CC800040CCC00040D0400040C80C0025E7
-:1008700094C0FDE4C8100008CD000040D4000FC0B3
-:1008800080000000D4000FA2D4000340D4000FC0A9
-:10089000D4000FA2CC800040D04000407C408000BB
-:1008A000A00000007E82800BD40003C0D4000FC0E3
-:1008B000D4000FA2CC800040D04000407C4080009B
-:1008C000A00000007E82800B7C40C00030D000067B
-:1008D0000D10000699000007C81400159940000586
-:1008E000CC000052D4000340D4000FC0D4000FA2AB
-:1008F000CC800040CCC0004080000000D0400040D0
-:100900007C40C000CC4D0000DC3A00009780FDBD6B
-:1009100004CC000180000242CC4D000080000000A9
-:10092000D040007FCC00007F80000000CC00007F22
-:10093000CC00007F88000000CC00007F0000000099
-:1009400000000000000000000000000000000000A7
-:100950000000000000000000000000000000000097
-:100960000000000000000000000000000000000087
-:100970000000000000000000000000000000000077
-:100980000000000000000000000000000000000067
-:100990000000000000000000000000000000000057
-:1009A0000000000000000000000000000000000047
-:1009B0000000000000000000000000000000000037
-:1009C0000000000000000000000000000000000027
-:1009D0000000000000000000000000000000000017
-:1009E0000000000000000000000000000000000007
-:1009F00000000000000000000000000000000000F7
-:100A000000000000000000000000000000000000E6
-:100A100000000000000000000000000000000000D6
-:100A200000000000000000000000000000000000C6
-:100A300000000000000000000000000000000000B6
-:100A400000000000000000000000000000000000A6
-:100A50000000000000000000000000000000000096
-:100A60000000000000000000000000000000000086
-:100A70000000000000000000000000000000000076
-:100A80000000000000000000000000000000000066
-:100A90000000000000000000000000000000000056
-:100AA0000000000000000000000000000000000046
-:100AB0000000000000000000000000000000000036
-:100AC0000000000000000000000000000000000026
-:100AD0000000000000000000000000000000000016
-:100AE0000000000000000000000000000000000006
-:100AF00000000000000000000000000000000000F6
-:100B000000000000000000000000000000000000E5
-:100B100000000000000000000000000000000000D5
-:100B200000000000000000000000000000000000C5
-:100B300000000000000000000000000000000000B5
-:100B400000000000000000000000000000000000A5
-:100B50000000000000000000000000000000000095
-:100B60000000000000000000000000000000000085
-:100B70000000000000000000000000000000000075
-:100B80000000000000000000000000000000000065
-:100B90000000000000000000000000000000000055
-:100BA0000000000000000000000000000000000045
-:100BB0000000000000000000000000000000000035
-:100BC0000000000000000000000000000000000025
-:100BD0000000000000000000000000000000000015
-:100BE0000000000000000000000000000000000005
-:100BF00000000000000000000000000000000000F5
-:100C0000000302220004022A0005009F00020003E4
-:100C10000006003C0007002700080191000900447D
-:100C2000000A002D00100247001700F0002201D733
-:100C3000002301E80026004C0027005F0020011A75
-:100C4000002800920029004F002A0083002B006436
-:100C5000002F008D003200D80034023200360074BC
-:100C60000039010A003C01FC003F009F00410005E3
-:100C7000004401940048019D004901C5004A01CF8C
-:100C8000005502250056022D0060000A0061002A6E
-:100C90000062003000630030006400300065003006
-:100CA0000066003000670030006800370069003FD0
-:100CB000006A0047006B0047006C0047006D00476A
-:100CC000006E0047006F0047007000470073024746
-:100CD000007B024000000005000000050000000548
-:100CE00000000005000000050000000500000005F0
-:100CF00000000005000000050000000500000005E0
-:100D000000000005000000050000000500000005CF
-:100D100000000005000000050000000500000005BF
-:100D200000000005000000050000000500000005AF
-:100D3000000000050000000500000005000000059F
-:00000001FF
diff --git a/firmware/radeon/RV770_me.bin.ihex b/firmware/radeon/RV770_me.bin.ihex
deleted file mode 100644
index a0e16990a20a..000000000000
--- a/firmware/radeon/RV770_me.bin.ihex
+++ /dev/null
@@ -1,341 +0,0 @@
-:10000000CC0003EA7C408000A0000000CC800062AD
-:1000100080000001D040007F80000001CC40004102
-:100020007C40C000C016000430D03FFF7D15000C9E
-:10003000CC11000028D8001E3198000128DC001FD8
-:10004000C820000495C000067C424000CC0000623D
-:100050007E56800CCC290000C82400047E26000BAC
-:10006000958000067C42C000CC0000627ED7000C68
-:10007000CC310000C82C00047E2E000CCC000062A5
-:1000800031103FFF80000001CE1100007C40C00015
-:1000900080000001CC40004080000001CC4122578C
-:1000A0007C418000CC400045CC400048CC41225CE3
-:1000B000CC41A1FC7C408000A0000000CC8000620C
-:1000C000CC400045CC4000487C40C000CC41225C84
-:1000D000CC41A1FC7C408000A0000000CC800062EC
-:1000E000CC000045CC000048CC41225CCC41A1FCB6
-:1000F0007C408000A0000000CC800062040CA1FDC8
-:10010000C0120001CC000045CC0000487CD0C00CDF
-:10011000CC41225CCC41A1FCD04D00007C40800051
-:10012000A0000000CC80006280000001CC41225D74
-:100130007C4080007C40C000C02A00027C4100005E
-:100140007D29000C3094000130980006309C03009B
-:1001500029DC00087C4200007C4240009540000FF2
-:10016000C02E000405F022587F2F000CCC31000077
-:10017000C8280004CCC12169CD01216ACE81216B40
-:100180000DB40002CC01216C9740000E0DB40000AC
-:100190008000007BC834000A0DB4000297400009BB
-:1001A0000DB40000C02E000405F022587F2F000C73
-:1001B000CC310000C82800048000007BC834000A4D
-:1001C000974000047E0280008000007BC834000A53
-:1001D0000DB400049740FF8C00000000CE01216D9B
-:1001E000CE41216EC8280003C834000A9B40000499
-:1001F000043C00058400026DCC0000620DF4000098
-:100200009740000BC82C03E6CE81A2B7C030000691
-:100210007EF34028C03000207F6B80207FB3C02950
-:10022000CF81A2C480000001CFC1A2D10DF4000192
-:100230009740000BC82C03E7CE81A2BBC03000065C
-:100240007EF34028C03000207F6B80207FB3C02920
-:10025000CF81A2C580000001CFC1A2D20DF400025F
-:100260009740000BC82C03E8CE81A2BFC030000627
-:100270007EF34028C03000207F6B80207FB3C029F0
-:10028000CF81A2C680000001CFC1A2D3C82C03E950
-:10029000CE81A2C3C03000067EF34028C0300020CB
-:1002A0007F6B80207FB3C029CF81A2C7800000016F
-:1002B000CFC1A2D480000001CC4000427C40C000ED
-:1002C0007C4100002914001D315400019940000DAB
-:1002D00031181000C81C001109DC000195C0FFFF97
-:1002E000C81C0011CCC12100CD012101CCC12102CB
-:1002F000CD012103041800048000039FCD81A2A436
-:10030000C02A00049580000836A821A3CC2900004B
-:10031000C8280004C81C00110DE400409640FFFFEF
-:10032000C81C0011CCC12170CD012171C820001260
-:1003300096000000C82000128000039FCC000064DB
-:100340007C40C0007C410000CC000045CC0000484F
-:1003500040D40003CD41225CCD01A1FCC01A0001B4
-:10036000041CA1FD7DD9C00C7C42000008CC00011A
-:100370000624000106280002CE1D0000CE5D00000C
-:1003800098C0FFFACE9D00007C408000A0000000D5
-:10039000CC8000627C40C00030D0000128CC00013D
-:1003A0007C414000950000067C418000CD41216DDC
-:1003B000CD81216E800000F3C81C0003C022000420
-:1003C0007E16000CCC210000C81C00047C424000BA
-:1003D00098C000047C42800080000001CDE5000050
-:1003E000CE412169CE81216ACDC1216B80000001FF
-:1003F000CC01216C7C40C0007C4100007C4140006D
-:100400007C4180007C41C00028A40008326400FFC9
-:100410000E68003C9680000A7C0200007C420000CE
-:100420001E300003CC00006A9B0000034220000540
-:1004300004200040800001107C0240007E02400049
-:100440009A4000000A64000130EC00109AC0000AD3
-:10045000CC000062C02A0004C82C00217E92800CCF
-:10046000CC000041CC290000CEC00021800001203A
-:10047000C8300004CD01216DCD41216EC83000038C
-:100480007F1F000B30F40007277800019740002AF7
-:1004900007B801259F8000000000000080000135A2
-:1004A0007F1B8004800001397F1B80058000013D97
-:1004B0007F1B8002800001417F1B8003800001457B
-:1004C0007F1B8007800001497F1B80068000014E52
-:1004D00028A400089B80001928A400088000015E61
-:1004E000326400FF9B80001528A400088000015E94
-:1004F000326400FF9B80001128A400088000015E88
-:10050000326400FF9B80000D28A400088000015E7B
-:10051000326400FF9B80000928A400088000015E6F
-:10052000326400FF9B80000528A400088000015E63
-:10053000326400FF28A40008326400FF0E68003C0B
-:100540009A80FEB128EC00087C4340007C43800088
-:100550007C43C00096C00007CC000062CF412169F7
-:10056000CF81216ACFC1216B80000001CC01216CB9
-:1005700080000001CFF50000CC00006B840003A2D6
-:100580000E68003C9A800004C82800158000000115
-:10059000D040007F9680FFAB7E0240008400023B8B
-:1005A000C00E0002CC00004180000239CCC1304AAC
-:1005B0007C40C0007C410000C01E000129240012C4
-:1005C000C022000296400005C0260004C027FFFBA1
-:1005D0007D25000BC02600007DD2800B7E12C00B53
-:1005E0007D25000C7C4140007C418000CCC121690C
-:1005F0009A80000ACD01216ACD41216B96C0FE820E
-:10060000CD81216CC830001897000000C830001858
-:1006100080000001CC000018840003A2CC00007F01
-:10062000C8140013C8180014CD41216B96C0FE7683
-:10063000CD81216C80000182C8300018C80C0008F0
-:1006400098C00000C80C00087C4100009500000222
-:10065000000000007C414000C8200009CC4000435D
-:10066000CE01A1F4CC400044C00E80007C4240008A
-:100670007C4280002AAC001F96C0FE63C035F000AB
-:10068000CE4003E232780003267C00087FF7C00BDF
-:100690007FFBC00C2A780018CFC003E3CF8003E4AF
-:1006A00026B000027F3F0000CF0003E58000031F5B
-:1006B0007C80C0007C40C00028D000083110000FB2
-:1006C0009500000F2528000106A801B39E800000B8
-:1006D00000000000800001D4C0120800800001E288
-:1006E000C814000F800001E9C8140010800001F058
-:1006F000CCC1A2A4800001F9C814001130D0003F81
-:100700000D2800159A8000120D28001E9A80001EE8
-:100710000D2800209A8000230D24000F0D280010C2
-:100720007E6A800C9A8000260D2000040D2400149F
-:100730000D2800287E62400C7EA6800C9A80002A3C
-:10074000C814001180000001CCC1A2A4C01208008E
-:100750007C4140007D0CC00CC012000829580003E9
-:10076000295C000C7C4200007DD1C00B26200014C7
-:100770007E1E400C7E4E800CCE81A2A48000000123
-:10078000CD81A1FEC814000F0410210E9540000079
-:10079000C814000FD051000080000001CCC1A2A4F9
-:1007A000C81400100410210895400000C81400105F
-:1007B000D051000080000001CCC1A2A4CCC1A2A4F1
-:1007C00004100001CD000019840003A2CC00007FBA
-:1007D000C810001999000000C8100019800000021C
-:1007E0007C40800004102100095400019540FFFF67
-:1007F000C8140011D05100008000039FCCC1A2A4F6
-:100800007C40C000CC40000D94C0FDFFCC40000EE9
-:100810007C4100009500000508CC0001C8140005CB
-:10082000994000140000000098C0FFFB7C410000CC
-:10083000800000027D008000C81400057C40C000DC
-:100840009940000CC818000C7C4100009580FDEE1A
-:10085000C820000EC81C000D662000207E1E002C43
-:10086000252400027E62402080000001CCE60000CA
-:100870007C410000CC00006CCC00006DC818001F4B
-:10088000C81C001E659800207DD9C02C7CD4C00CEB
-:10089000CCDE000045DC0004C82800179680000F5D
-:1008A000C00E0001286800082AAC001632A800FF1C
-:1008B0000EB000497F2F000B9700000600000000DB
-:1008C000C81400057C40C000800002237C41000069
-:1008D00080000226D040007F8400023BCC00004113
-:1008E000CCC1304A94000000C83C001A043C00050A
-:1008F000CFC1A2A4C0361F90C0387FFF7C03C010B8
-:100900007F7B400CCF41217CCFC1217DCC01217E5A
-:10091000C03A00040434217F7F7B400CCC350000BA
-:10092000C83C00042BFC001F0438002097C00005C1
-:10093000CC0000629B8000000BB8000180000247E1
-:10094000CC000071CC01A1F404380016C0360002BE
-:10095000CF81A2A488000000CF4120107C40C000BD
-:1009600028D0001C9500000504D40001CD4000658E
-:1009700080000001CD4000680954000280000001A1
-:10098000CD4000668400026CC81803EA7C40C000B9
-:100990009980FD9DC814001608D000019940002BD5
-:1009A000CD0000687C408000A0000000CC80006288
-:1009B000043C0005CFC1A2A4CC01A1F4840003A291
-:1009C000CC00004688000000CC00007F8400027E3E
-:1009D000C81803EA7C40C0009980FD8BC81400163B
-:1009E00008D0000199400019CD0000687C408000CB
-:1009F000A0000000CC800062043C0022CFC1A2A471
-:100A0000840003A2CC00004788000000CC00007FD7
-:100A1000C81000169900000DCC400067800000024D
-:100A20007C408000C81803EA9980FD777C40C000B4
-:100A300094C00003C810001699000004CCC00068E0
-:100A4000800000027C4080008400023BC0148000D3
-:100A5000CC000041CD41304AC01480009900000014
-:100A6000C8100016800000027C408000C012000107
-:100A70007C51400C80000001D05500007C40C0003B
-:100A80007C4100007C4140007C418000291C001F0B
-:100A9000CCC0004ACD00004B95C00003C01C8000B4
-:100AA000CDC12010DD830000055C2000CC00006279
-:100AB00080000001D81F41007C40C0007C41000044
-:100AC0007C4140007C418000CCC0004CCD00004DFA
-:100AD000DD830000055CA00080000001D81F4100FC
-:100AE0007C40C0007C4100007C4140007C41800093
-:100AF000CCC0004ECD00004FDD830000055CC0007F
-:100B000080000001D81F41007C40C0007C410000F3
-:100B10007C4140007C418000CCC00050CD000051A1
-:100B2000DD830000055CF8E080000001D81F410073
-:100B30007C40C0007C4100007C4140007C41800042
-:100B4000CCC00052CD000053DD830000055CF8806E
-:100B500080000001D81F41007C40C0007C410000A3
-:100B60007C4140007C418000CCC00054CD00005549
-:100B7000DD830000055CE00080000001D81F41001B
-:100B80007C40C0007C4100007C4140007C418000F2
-:100B9000CCC00056CD000057DD830000055CF0009E
-:100BA00080000001D81F41007C40C0007C41000053
-:100BB0007C4140007C418000CCC00058CD000059F1
-:100BC000DD830000055CF3FC80000001D81F4100BC
-:100BD000D04320007C408000A0000000CC80006258
-:100BE000D043A0007C408000A0000000CC800062C8
-:100BF000D043C0007C408000A0000000CC80006298
-:100C0000D043F8E07C408000A0000000CC8000626F
-:100C1000D043F8807C408000A0000000CC800062BF
-:100C2000D043E0007C408000A0000000CC80006247
-:100C3000D043F0007C408000A0000000CC80006227
-:100C4000D043F3FC7C408000A0000000CC80006218
-:100C5000C81403E0CC430000CC430000CC430000A8
-:100C60007D45C000CDC30000D04300007C40800023
-:100C7000A0000000CC8000627C40C000C81003E2ED
-:100C8000C81403E5C81803E3C81C03E4CD81216937
-:100C9000CDC1216ACCC1216BCC01216C04200004A0
-:100CA0007DA180007D9640029640FCD7CD8003E375
-:100CB00031280003C02DF000251800087DAD800B01
-:100CC0007DA9800C80000001CD8003E3308CFFFF04
-:100CD000D04D00007C408000A0000000CC8000626D
-:100CE0007C40C0007C4100002924001832640001CF
-:100CF0009A400013C8140020155800029580FFFF89
-:100D0000C8140020CC00006ECCC12180CD01218D03
-:100D1000CC4121812914001F34588000CD81218CC1
-:100D20009540FCB9CC412182C81400209940FFFFB6
-:100D3000C8140020800000027C4080007C414000FC
-:100D40007C4180007C41C00065B400207F57402C6E
-:100D5000D437810047740004D437810047740004FD
-:100D6000D43781004774000409DC0004D4378100C3
-:100D700099C0FFF8477400042924001FC0380019E7
-:100D80009640FCA1C03E0004CF8121F837E021F954
-:100D9000CC210000C82000042A20001832200001C5
-:100DA0009A00FFFBCF8121F8800000027C40800088
-:100DB0007C40C00028D0001831100001C01600800F
-:100DC00095000003C02A00047CD4C00CCCC1217C57
-:100DD000CC41217DCC41217E7C4180001DB00003AF
-:100DE00036A0217F9B000003419C0005041C0040AD
-:100DF00099C0000009DC0001CC210000C8240004D7
-:100E00002A6C001F419C00059AC0FFFACC8000624A
-:100E1000800000027C4080007C40C00004D403E6D7
-:100E200080000001CC5400008000039FCC4003EA06
-:100E3000C01C8000044CA000CDC120107C410000EB
-:100E4000C814000904180000041C0008CD800071BB
-:100E500009DC000105980001CD0D000099C0FFFCE0
-:100E6000CC8000628000039FCD400071C00E010065
-:100E7000CC000041CCC1304AC83C007FCC00007F90
-:100E800080000001CC00007FCC00007F88000000C3
-:100E9000CC00007F00000000000000000000000007
-:100EA0000000000000000000000000000000000042
-:100EB0000000000000000000000000000000000032
-:100EC0000000000000000000000000000000000022
-:100ED0000000000000000000000000000000000012
-:100EE0000000000000000000000000000000000002
-:100EF00000000000000000000000000000000000F2
-:100F000000000000000000000000000000000000E1
-:100F100000000000000000000000000000000000D1
-:100F200000000000000000000000000000000000C1
-:100F300000000000000000000000000000000000B1
-:100F400000000000000000000000000000000000A1
-:100F50000000000000000000000000000000000091
-:100F60000000000000000000000000000000000081
-:100F70000000000000000000000000000000000071
-:100F80000000000000000000000000000000000061
-:100F90000000000000000000000000000000000051
-:100FA0000000000000000000000000000000000041
-:100FB0000000000000000000000000000000000031
-:100FC0000000000000000000000000000000000021
-:100FD0000000000000000000000000000000000011
-:100FE0000000000000000000000000000000000001
-:100FF00000000000000000000000000000000000F1
-:1010000000000000000000000000000000000000E0
-:1010100000000000000000000000000000000000D0
-:1010200000000000000000000000000000000000C0
-:1010300000000000000000000000000000000000B0
-:1010400000000000000000000000000000000000A0
-:101050000000000000000000000000000000000090
-:101060000000000000000000000000000000000080
-:101070000000000000000000000000000000000070
-:101080000000000000000000000000000000000060
-:101090000000000000000000000000000000000050
-:1010A0000000000000000000000000000000000040
-:1010B0000000000000000000000000000000000030
-:1010C0000000000000000000000000000000000020
-:1010D0000000000000000000000000000000000010
-:1010E0000000000000000000000000000000000000
-:1010F00000000000000000000000000000000000F0
-:1011000000000000000000000000000000000000DF
-:1011100000000000000000000000000000000000CF
-:1011200000000000000000000000000000000000BF
-:1011300000000000000000000000000000000000AF
-:10114000000000000000000000000000000000009F
-:10115000000000000000000000000000000000008F
-:10116000000000000000000000000000000000007F
-:10117000000000000000000000000000000000006F
-:10118000000000000000000000000000000000005F
-:10119000000000000000000000000000000000004F
-:1011A000000000000000000000000000000000003F
-:1011B000000000000000000000000000000000002F
-:1011C000000000000000000000000000000000001F
-:1011D000000000000000000000000000000000000F
-:1011E00000000000000000000000000000000000FF
-:1011F00000000000000000000000000000000000EF
-:1012000000000000000000000000000000000000DE
-:1012100000000000000000000000000000000000CE
-:1012200000000000000000000000000000000000BE
-:1012300000000000000000000000000000000000AE
-:10124000000000000000000000000000000000009E
-:10125000000000000000000000000000000000008E
-:10126000000000000000000000000000000000007E
-:10127000000000000000000000000000000000006E
-:10128000000000000000000000000000000000005E
-:10129000000000000000000000000000000000004E
-:1012A000000000000000000000000000000000003E
-:1012B000000000000000000000000000000000002E
-:1012C000000000000000000000000000000000001E
-:1012D000000000000000000000000000000000000E
-:1012E00000000000000000000000000000000000FE
-:1012F00000000000000000000000000000000000EE
-:1013000000000000000000000000000000000000DD
-:1013100000000000000000000000000000000000CD
-:1013200000000000000000000000000000000000BD
-:1013300000000000000000000000000000000000AD
-:10134000000000000000000000000000000000009D
-:10135000000000000000000000000000000000008D
-:10136000000000000000000000000000000000007D
-:10137000000000000000000000000000000000006D
-:10138000000000000000000000000000000000005D
-:10139000000000000000000000000000000000004D
-:1013A000000000000000000000000000000000003D
-:1013B000000000000000000000000000000000002D
-:1013C000000000000000000000000000000000001D
-:1013D000000000000000000000000000000000000D
-:1013E00000000000000000000000000000000000FD
-:1013F00000000000000000000000000000000000ED
-:10140000000103330010000400170006002100084B
-:10141000002700280028002300290029002A002690
-:10142000002B0029002D0038002E003F002F004A1D
-:101430000034004C00360030003900AF003A00D0D4
-:10144000003B00E5003C00FD003D016C003F00ADAD
-:10145000004103380043036C0044018F004500FD48
-:10146000004601AD004701AD004802000049020EF0
-:10147000004A0257004B028400520261005302737B
-:10148000005402890057029B0060029F006102AE77
-:10149000006202B8006302C2006402CC006502D69A
-:1014A000006602E0006702EA006802F4006902F8E0
-:1014B000006A02FC006B0300006C0304006D03086B
-:1014C000006E030C006F031000700314007203869B
-:1014D0000074038C0079038A007C031E000F039BB9
-:1014E000000F039B000F039B000F039B000F039B48
-:1014F000000F039B000F039B000F039B000F039B38
-:10150000000F039B000F039B000F039B000F039B27
-:10151000000F039B000F039B000F039B000F039B17
-:10152000000F039B000F039B000F039B000F039B07
-:10153000000F039B000F039B000F039B000F039BF7
-:00000001FF
diff --git a/firmware/radeon/RV770_pfp.bin.ihex b/firmware/radeon/RV770_pfp.bin.ihex
deleted file mode 100644
index a2d1619107de..000000000000
--- a/firmware/radeon/RV770_pfp.bin.ihex
+++ /dev/null
@@ -1,213 +0,0 @@
-:100000007C408000A00000007E82800B8000000009
-:10001000DC030000CC800040D04000407C408000E9
-:10002000A00000007E82800BC818000E31980001ED
-:100030007C424000958002527C428000C81C001C1B
-:10004000C037C0007C40C0007C4100007CB4800B05
-:10005000C036000399C00000C81C001C7CB4800C92
-:1000600024D400027D654000CD400043CE80004393
-:10007000CD000043CC800040CE400040CE80004008
-:10008000CCC00040DC3A00009780FFDECD0000408D
-:100090007C40C000800000187C410000D400034078
-:1000A000D4000FC0D4000FA2C818000E8000000CAE
-:1000B00031980002D40003C0D4000FC0D4000FA2B6
-:1000C000C818000E288C000830CC000F3410000136
-:1000D0007D0D00088000000C7D91800BCC800040DD
-:1000E000D04000407C408000A00000007E82800B59
-:1000F000D4000340D4000FC0D4000FA2CC80004035
-:10010000D04000407C408000A00000007E82800B38
-:10011000D40003C0D4000FC0D4000FA2CC80004094
-:10012000D04000407C408000A00000007E82800B18
-:10013000CC4003F980000261CC4003F8C82003F8EA
-:10014000C81C03F9C81803FBC037FFFF7C414000FF
-:10015000CF41A29E662000207DE1C02C7D58C008C2
-:100160007CDCC02068D00020C0360003CC000054E6
-:100170007CB4800C8000006ACC8000407C41800010
-:10018000CD81A29ECC800040CD80004080000068E0
-:10019000CC000054C019FFFFCC800040CD81A29E4E
-:1001A0007C40C0007C4100007C414000CCC1A1FAF1
-:1001B000CD01A1F9CD41A29DCCC00040CD000040B1
-:1001C000CD400040CC4000407C408000A0000000BA
-:1001D0007E82800BCC000054CC8000407C40C0006C
-:1001E0007C4100007C414000CCC1A1FACD01A1F9C5
-:1001F000CD41A29DCCC00040CD000040CD4000408C
-:10020000D04000407C408000A00000007E82800B37
-:100210007C40C00030D00001CCC1A29F95000003FB
-:100220000414000104140002CD4003FBCC80004004
-:1002300080000000CCC000407C40C000CC8000406A
-:10024000CCC1A2A280000000CCC000407C40C00015
-:1002500028D4001FCC800040954000037C41000062
-:10026000CCC000572918001FCCC000409580000367
-:10027000CD000040CD00005880000261CC00007F1E
-:10028000C8200017C83000229A0000060E2800017E
-:10029000C824001E0A640001D4001240CE40004071
-:1002A000C036C0009680000737747900041C000136
-:1002B000CF400040CDC00040CF0003FA7C030000D7
-:1002C000CA0C00107C41000094C000047C41400036
-:1002D000D42002C4CDE000449B00000B7C41800090
-:1002E000CC00004BCDA00049CD200041CD600041A5
-:1002F000CDA0004106200001CE0000568000026122
-:10030000CC00007FC8280020C82C0021CC0000634E
-:100310007EEA4001657400207F53402C269C000239
-:100320007DF5C02069F80020CE80004BCE600049EA
-:10033000CDE00041CFA00041CE600041271C00026B
-:100340007DF5C02069F800207DB24001CF00004B50
-:10035000CE600049CDE00041CFA00041800000BD4B
-:10036000CE600041C8200017C83000229A00000665
-:100370000E280001C824001E0A640001D4001240A7
-:10038000CE400040CA0C00107C41000094C0000B1D
-:10039000C036C0009680000737747900041C000145
-:1003A000CF400040CDC00040CF0003FA7C030000E6
-:1003B000800000B67C414000CC000048800000EF87
-:1003C00000000000C8200017C81C00230E240002F3
-:1003D00099C000157C4180000A200001CE00005623
-:1003E000D4000440CC000040C036C000CA14001342
-:1003F0009640000737747900CF400040CC000040A1
-:10040000C83003FA80000104CF000022CC00002293
-:100410009540015DCC00007FCCA00046800000002C
-:10042000CC20004680000261CC000064C820001788
-:10043000C810001F9600000509100001D4000440F8
-:10044000CD000040CD000022CC800040D0400040D4
-:10045000C80C002594C0FEEBC8100008CD00004079
-:10046000D4000FC080000000D4000FA27C40C00068
-:100470007C410000CCC003FDCD0003FCCCC0004299
-:10048000CD0000422914001F2918001031980007E0
-:100490003B5C00017D76000B998000057D5E400B82
-:1004A000CC00004280000261CC00004D2998000180
-:1004B000292C00089980003D32EC000196000004D0
-:1004C0002930000C80000261CC00004204140010AE
-:1004D000CD40004233300001342800018400015E29
-:1004E000C81400039B40001B0438000C8400015E0C
-:1004F000C81400039B400017043800088400015E04
-:10050000C81400039B400013043800048400015EFB
-:10051000C81400039B400015C80C03FD9A80000915
-:10052000C81003FC9B000118CC00004D04140010FF
-:10053000CCC00042CD00004280000136CD400042D8
-:1005400096C00111CC00004D80000261CC00004E2D
-:100550009AC00003CC00004DCC00004EDF830000A9
-:1005600080000000D80301FF9AC00107CC00004DB5
-:1005700080000261CC00004EC8180003C81C0003B4
-:10058000C82000037D5D40037DA1C0037D5D400C5C
-:100590002A10001F299C001F7D1D000B7D17400B9A
-:1005A000880000007E92800B96400004CC00004E34
-:1005B00080000261CC00004204380008CF80004275
-:1005C000C8080003C80C0003C8100003C8140003C7
-:1005D000C8180003C81C0003C8240003C82800036F
-:1005E00029FC001F2AB0001F7FF3C00B28F0001F5A
-:1005F0007FF3C00B2970001F7FF3C00B7D88800143
-:100600007DCCC0017E5100017E9540017C9080022E
-:100610007CD4C0027CBC800B9AC000037C8F400B52
-:1006200038B400019B4000D8CC00004D9BC000D6E0
-:10063000CC00004EC80C03FDC81003FCCCC0004227
-:100640008000016FCD000042D4000340D4000FC0F1
-:10065000D4000FA2CC800040CC400040CC400040F1
-:10066000CC4000407C40C000CCC00040CCC0000D5D
-:1006700080000000D04000407C40C0007C41000071
-:10068000651400207D4D402C245800027D598020A7
-:100690007C41C000CD80004269980020CD8000429E
-:1006A000CDC00042C023C00005E400027CA0800B46
-:1006B000266400107CA4800CCC800040CDC000409B
-:1006C000CCC0004095C0000ECD00004009DC000108
-:1006D000C828000396800008CE800040C834001D62
-:1006E00097400000C834001D26A80008840002645A
-:1006F000CC2B000099C0FFF709DC0001DC3A0000B8
-:10070000978000047C418000800001A325980002AE
-:10071000A00000007D808000C818001D7C40C00043
-:1007200064D0000895800000C818001DCC1300009C
-:10073000CC800040CCC0004080000000CC40004095
-:10074000C810001F7C40C000CC8000407CD1400C11
-:10075000CD4000400518000180000000CD8000223F
-:100760007C40C0006450002084000264CC00006122
-:100770007CD0C02CC8200017C8D6000099400008C3
-:100780007C438000DF830000CFA0004F8400026420
-:10079000CC00006280000000D040007F8000026139
-:1007A000CC00006284000264CC000061C820001705
-:1007B0007C40C000C036FF00C810000DC0303FFFB5
-:1007C0007CF5400B7D51800B7D81800F9980000866
-:1007D0007CF3800BDF830000CFA0004F8400026415
-:1007E000CC00006280000000D040007F80000261E9
-:1007F000CC000062840002647C40C00028DC000859
-:1008000095C0001930DC00107C41000099C0000444
-:100810006454002080000209C91D00007D15002CD1
-:10082000C91E00007C4200007C4240007C418000E8
-:100830007DE5C00B7DE280079A80000E41AC00058B
-:100840009AC000000AEC000130DC001099C00004DE
-:10085000000000008000020CC91D00008000020C96
-:10086000C91E0000CC800040CCC00040D0400040F9
-:10087000C80C002594C0FDE3C8100008CD0000405E
-:10088000D4000FC080000000D4000FA2D4000340A9
-:10089000D4000FC0D4000FA2CC800040D040004054
-:1008A0007C408000A00000007E82800BD40003C04A
-:1008B000D4000FC0D4000FA2CC800040D040004034
-:1008C0007C408000A00000007E82800B7C40C00045
-:1008D00030D000060D10000699000007C81400155E
-:1008E00099400005CC000052D4000340D4000FC052
-:1008F000D4000FA2CC800040CCC00040800000009B
-:10090000D04000407C40C000CC4D0000DC3A0000EC
-:100910009780FDBC04CC000180000243CC4D000058
-:100920007C40C0007C410000292400183264000192
-:100930009640000FCC8000407C4140007C4180000C
-:100940007C41C000CCC00043CD00004331DC7FFFC0
-:10095000CDC00043CCC00040CD000040CD400040A1
-:10096000CD80004080000000CDC00040CCC00040E1
-:10097000CD00004080000000D0400040800000001A
-:10098000D040007FCC00007F80000000CC00007FC2
-:10099000CC00007F88000000CC00007F0000000039
-:1009A0000000000000000000000000000000000047
-:1009B0000000000000000000000000000000000037
-:1009C0000000000000000000000000000000000027
-:1009D0000000000000000000000000000000000017
-:1009E0000000000000000000000000000000000007
-:1009F00000000000000000000000000000000000F7
-:100A000000000000000000000000000000000000E6
-:100A100000000000000000000000000000000000D6
-:100A200000000000000000000000000000000000C6
-:100A300000000000000000000000000000000000B6
-:100A400000000000000000000000000000000000A6
-:100A50000000000000000000000000000000000096
-:100A60000000000000000000000000000000000086
-:100A70000000000000000000000000000000000076
-:100A80000000000000000000000000000000000066
-:100A90000000000000000000000000000000000056
-:100AA0000000000000000000000000000000000046
-:100AB0000000000000000000000000000000000036
-:100AC0000000000000000000000000000000000026
-:100AD0000000000000000000000000000000000016
-:100AE0000000000000000000000000000000000006
-:100AF00000000000000000000000000000000000F6
-:100B000000000000000000000000000000000000E5
-:100B100000000000000000000000000000000000D5
-:100B200000000000000000000000000000000000C5
-:100B300000000000000000000000000000000000B5
-:100B400000000000000000000000000000000000A5
-:100B50000000000000000000000000000000000095
-:100B60000000000000000000000000000000000085
-:100B70000000000000000000000000000000000075
-:100B80000000000000000000000000000000000065
-:100B90000000000000000000000000000000000055
-:100BA0000000000000000000000000000000000045
-:100BB0000000000000000000000000000000000035
-:100BC0000000000000000000000000000000000025
-:100BD0000000000000000000000000000000000015
-:100BE0000000000000000000000000000000000005
-:100BF00000000000000000000000000000000000F5
-:100C0000000302230004022B000500A000020003E1
-:100C10000006003C0007002700080192000900447C
-:100C2000000A002D0010025F001700F1002201D819
-:100C3000002301E90026004C0027005F0020011B73
-:100C4000002800930029004F002A0084002B006533
-:100C5000002F008E003200D90034023300360075B8
-:100C60000039010B003C01FD003F00A0004102489B
-:100C7000004401950048019E004901C6004A01D088
-:100C8000005502260056022E0060000A0061002A6C
-:100C90000062003000630030006400300065003006
-:100CA0000066003000670030006800370069003FD0
-:100CB000006A0047006B0047006C0047006D00476A
-:100CC000006E0047006F0047007000470073025F2E
-:100CD000007B024100000005000000050000000547
-:100CE00000000005000000050000000500000005F0
-:100CF00000000005000000050000000500000005E0
-:100D000000000005000000050000000500000005CF
-:100D100000000005000000050000000500000005BF
-:100D200000000005000000050000000500000005AF
-:100D3000000000050000000500000005000000059F
-:00000001FF
diff --git a/firmware/sb16/alaw_main.csp.ihex b/firmware/sb16/alaw_main.csp.ihex
deleted file mode 100644
index 04502707c42a..000000000000
--- a/firmware/sb16/alaw_main.csp.ihex
+++ /dev/null
@@ -1,87 +0,0 @@
-:10000000001000440800004400B1004400610044B6
-:10001000085000440DF261A8440404190000404552
-:10002000404939AC5555718B500563800000063945
-:10003000FF2E2149FF0FD4492001090E2000718BAA
-:10004000A801A8808801A880A8000080D200718B38
-:100050008800A880A804B3802007B3808803B180FB
-:10006000C000095CC2010082A100718BCD0004199F
-:100070002120718BCF0004190000B180C200041947
-:100080000040001408400424000034490C4000449F
-:1000900044040439000040453200095C00000C397A
-:1000A00000004045404009EFFF2009CF000463A154
-:1000B000500333800004A38000FFC28B00D004549F
-:1000C00004E000C4200380C03000008800007A0AE9
-:1000D000D001008200600044C0000099006000442C
-:1000E00000FFC28B20000080000D428B083200C44C
-:1000F000000E428B00A200C4001E428B0CB200C452
-:10010000008E428B006200C4009E428B085200C4E5
-:1001100000BE428B085200C40004428B047200C42B
-:100120000024428B00D200C40055428B006000C402
-:1001300000004045200179800030428B088200C4D5
-:10014000000040450000718B4001008000600044C9
-:10015000FF00E2AB00B200C40FF2A8A82000B188F3
-:10016000000041024DF20039C001008200600044ED
-:100170000DF2A3A84DF2003900600044FF00E2AB8D
-:1001800020000088000061024DF204190060004464
-:10019000FF00E2ABA0000088000061104DF20419DE
-:1001A00000600044FF20E2AB60000088000071C0E6
-:1001B0004DF20419006000440000798000E20084E0
-:1001C0000303044904C20054006004640060004456
-:1001D0000000638000000619030004490060004429
-:1001E00020016380000006190020E28B0CF20084DD
-:1001F000BE00518BC020003908010044EC00518B37
-:10020000C02000390002E28B042100843F00518BA2
-:10021000C2200039001100443D00518BC22000393A
-:10022000E500718BCD0000390000B180C9200419B0
-:10023000CB200419C1200419C32004191000718BAC
-:10024000C7200419DE00518BCF0000390001B180B6
-:10025000C4200419C6200419C8200419CA2004198E
-:100260002000718BCC200419030004490060004475
-:10027000090461A8C10004190B0461A8CA0004198B
-:10028000046000D40D00610A9040098F0001004510
-:100290000F00610A0040098F000100458200092E0D
-:1002A000804009CF02006122432561224033008053
-:1002B0000848004420B1495C9200094E0203092E0F
-:1002C0000000A302C00071C02000EB800004C28BBC
-:1002D0002004618000047A02C00000820CC3084937
-:1002E000B001F3800000103920000C890C88084907
-:1002F0000300A81800001039BDFF628B20010080A8
-:10030000000063CB00007A024000015B2000008007
-:1003100000004ACB2000138020007A80E02100C03A
-:10032000080008491041098EAEAE628B00046122BC
-:1003300000030045220133802001A30200007A80DF
-:10034000C00000820720400A08A3008440210080EA
-:1003500040059310C7200039000040450720400A9F
-:100360000C930084080000820C246150400100803E
-:10037000C7200039000040450004638000000639B2
-:100380004201090E0220610A000100450C20600AAA
-:1003900000C300840004B180000006390C6104D45D
-:1003A000002471C0203333C0E001A38222037A020B
-:1003B000C301A3822001338000007A80C201B350C0
-:1003C000CC20003900007180000800440C20600A35
-:1003D00000F300840004B180000006390C6104D4ED
-:1003E000000071C000009310CC20003900080044C8
-:1003F000CC200039002000C0003071C0000800444B
-:1004000020010080AEAE628B20013380000083802B
-:1004100020007A8020A1495C8200096E804A098E02
-:10042000E001B3822004A38000007ACB2804EA1004
-:100430000C047A107000C08B00001039900300800B
-:100440004000215B900061800C8A084900001C1963
-:100450004000085B08000849200200800300A8183B
-:1004600000001419400021CB000041020000EB8085
-:10047000F2010082402133020820610AC4000419FD
-:10048000C70000990200610A0C0A04140100610A05
-:100490000300480A00580454C30004190C580044CF
-:1004A0000800C80A0C580454C80004190A00610A5C
-:1004B0000900480A00C80454C90004190CC80044C3
-:1004C0000B00C80A0CC80454CB0004190400610ACC
-:1004D0000600480A00D80454C60004190CD8004489
-:1004E0000500C80A0CD80454C50004190700610AA5
-:1004F0000C00480A000A0454CC0004190C0A0044F9
-:100500000E00C80A0C0A0454CE000419000040452D
-:080510002010718B0842060067
-:00000001FF
-/*
- * Copyright (c) 1994 Creative Technology Ltd.
- * Microcode files for SB16 Advanced Signal Processor
- */
diff --git a/firmware/sb16/ima_adpcm_capture.csp.ihex b/firmware/sb16/ima_adpcm_capture.csp.ihex
deleted file mode 100644
index 9a50a58564ae..000000000000
--- a/firmware/sb16/ima_adpcm_capture.csp.ihex
+++ /dev/null
@@ -1,121 +0,0 @@
-:1000000000100044080000440070004408D0004480
-:1000100000F000440DF261A84404041900004045BA
-:100020000004638000000639FF2E2149FF0CD449EB
-:10003000404939AC5555718B5001B1800000718B2E
-:10004000C2300419C0A00419C2A004198900718B20
-:10005000C83004197100718BCD000419CF00041948
-:100060008000718BCB2004192000718BC4200419EF
-:100070004700518BC020003900006380C1A00419E3
-:100080009300014FCD300009CF3000090C4000141F
-:1000900000600014000461A8020461A80C6004243C
-:1000A000000034490850004444040439000040452D
-:1000B0000830610A05B0E8180CC00454C8300419AF
-:1000C000090400A80B0400A800004045090461A829
-:1000D000C10004190B0461A8CA0004190D00610ACB
-:1000E000000100450F00610A0040098F0001004532
-:1000F000404009EFFF2009CF000463A15003338083
-:100100000004A38000FFC28B0C120454081200C428
-:10011000200380C03000008800007A0AD0010082ED
-:1001200004500044C00000990450004400FFC28BFA
-:1001300020000080000D428B044200C4000E428B60
-:10014000085200C4001E428B00E200C4008E428BA5
-:1001500008D200C4009E428B04F200C400BE428B51
-:1001600004F200C40004428B041100C40024428B3A
-:100170000C6100C40055428B045000C4003F428B08
-:100180000C0100C400004045200179800030428B02
-:10019000046200C4000040450000718B40010080F3
-:1001A00004500044FF00E2AB08C200C40FF2A8A84C
-:1001B0002000B188000041024DF20039C0010082E8
-:1001C000045000440DF2A3A84DF20039045000443D
-:1001D000FF00E2AB20000088000061024DF204192C
-:1001E00004500044FF00E2ABA00000880000611052
-:1001F0004DF2041904500044FF20E2AB6000008877
-:10020000000071C04DF204190450004400007A0A45
-:100210002001F08001A0410A001100C42001F080FB
-:10022000C130041904500044000079800C4100845E
-:100230008900718BC83004199700718BCD0000398B
-:100240000001B1808000041982000419C120041942
-:10025000C3200419C2300419CD100419CF10041999
-:10026000B000718B84000419860004198000718B22
-:10027000CB2004199300014FCD300009CF30000985
-:100280000302044908410014045000440000638044
-:100290000000061903000449045000442001638053
-:1002A000000006190020E28B00C100844700518B3A
-:1002B000C020003900006380C1A0041900E100449F
-:1002C000BD00518BC02000390000B180C1A00419CD
-:1002D00003000449045000440020610A0001004565
-:1002E0000230610A0C8300C40C780844045A0844A4
-:1002F000B200094F1042098E05B0E01804230084B3
-:100300000C01001108056110004908440048084428
-:10031000B200094F8000718BC00000820C013310C5
-:100320002801A31000017A808C0100800230610A4C
-:10033000200004190C8300C405B0C818084300C489
-:100340000130C80A0C3800C4088800440C780844FE
-:10035000045A08440000A318800004190B0461A883
-:10036000C3200039C33004190F10610ACA300419C0
-:10037000090441A8E1200039D100094F00046102BD
-:10038000086300440330410A20000039A300094FEC
-:100390000004610200480844088800440230610AF1
-:1003A000000800C40C780844045A0844B200090F3D
-:1003B0001040098E0000685B2004B1800200615B80
-:1003C00088037A80AC01008005B0E01800D3008477
-:1003D0000049084400480844B200090F8000718BAE
-:1003E000C00000820230610A000800C405B0C818CD
-:1003F0000C1800C40130C80A0C3800C40888004436
-:100400000C780844000061182005B180000068CB1A
-:10041000800004190D10610AC33004190B0441A8AF
-:10042000090441A8E1200039083800440330410A9A
-:100430002004B18000480844088800440000B180CE
-:10044000C23004190CB800D40F30610A0D30C80A4C
-:100450000CB800C49300014FE700016F0F30610A30
-:1004600020000088020061024104041902046102B4
-:1004700043040439CF3000092000094900590044E1
-:100480009300014FE700016F0D30610A2000618881
-:10049000C2000082C2030082CD3000092000094959
-:1004A0000F30610A0D30C80A0C5800840230610A0E
-:1004B00005B0A818C2300419000000469040098F0A
-:1004C0001204096E0300090E0001718220010080F0
-:1004D000000061CB8004B1800001E0600CD80414FE
-:1004E0000001EB804000521B80007980C00171C286
-:1004F0002000C080080A0454C004A8828000721B37
-:10050000800000800001F0802000C0800C2A04548C
-:10051000C004A8821000721B800000800001F080DF
-:100520002000C080083A0454C004A8822000721B36
-:1005300080000080C003F0822000A0800001001134
-:100540004000C28B00AA00C40000E98005B0A818D2
-:100550000001A822D0010082F000E21B0620A80AB8
-:100560002D10610AD100092E0001A8020E10C80A40
-:100570000CBA04140E10610A044A00440C10C80A94
-:10058000044A04540C10610AD00100820010A8181B
-:10059000A0000088000171820300090E9A0100602A
-:1005A0003200092E00000046000171822001008007
-:1005B000000061CB8024B1C00031E0600CCA04149B
-:1005C0000001EB804000521B80007980C00171C2A5
-:1005D0002000C08008DA0454C004A8828000721B86
-:1005E000800000800001F0802000C0800CFA0454DC
-:1005F000C004A8821000721B800000800001F080FF
-:100600002000C08008290454C004A8822000721B66
-:1006100080000080C003F0822000A0800001001153
-:100620004000C28B003900C40000E98005B0A81862
-:100630000001A822D0010082B000E21B0620A80A17
-:100640002F10610AF100092E0001A8020E10C80A3D
-:100650000CA904140E10610A049900440C10C80A75
-:10066000049904540C10610AD00100820010A818EB
-:10067000A0000088000171829F0100600000004618
-:10068000000033800000838020007A8020073380C0
-:100690000000838020047A80200100800000004652
-:1006A0000200610A041B04140100610A0300480AE5
-:1006B0000C790454C300041904C900440800C80A92
-:1006C00004C90454C80004190A00610A0900480A50
-:1006D0000CE90454C900041904D900440B00C80AE9
-:1006E00004D90454CB0004190400610A0600480A26
-:1006F0000CF90454C6000419040B00440500C80A90
-:10070000040B0454C50004190700610A0C00480AD0
-:100710000C2B0454CC000419041B00440E00C80A1E
-:10072000041B0454CE000419000040459220718B34
-:04073000A6C5110049
-:00000001FF
-/*
- * Copyright (c) 1994 Creative Technology Ltd.
- * Microcode files for SB16 Advanced Signal Processor
- */
diff --git a/firmware/sb16/ima_adpcm_init.csp.ihex b/firmware/sb16/ima_adpcm_init.csp.ihex
deleted file mode 100644
index a899a9e743f4..000000000000
--- a/firmware/sb16/ima_adpcm_init.csp.ihex
+++ /dev/null
@@ -1,70 +0,0 @@
-:10000000001000440000404500004045000040450D
-:1000100000004045AAAA718B440404190000404521
-:10002000FF6E2149FF0FD449404939AC5555718BBA
-:100030005005B1806200190E2100718B880000808C
-:10004000B000718B880000804000718B88000080B8
-:100050006000718B880000805000718B88000080E8
-:100060007000718B88000080C000718B8800008058
-:10007000E000718B88000080D000718B88000080C8
-:100080000200718B880000802200718B8800008044
-:100090003200718B88000080A200718B8800008084
-:1000A000B200718B880000806200718B8800008034
-:1000B000C200718B88000080F200718B8800008084
-:1000C0001100718B88000080A100718B8800008076
-:1000D0006100718B88000080E100718B88000080D6
-:1000E0001300718B88000080B300718B8800008042
-:1000F000C300718B880000801800718B880000801D
-:100100006800718B880000800A00718B8800008075
-:100110004A00718B880000802900718B8800008064
-:100120007900718B880000809B00718B88000080B3
-:100130001400718B88000080F400718B88000080AF
-:10014000E600718B88000080E500718B88000080DC
-:10015000D700718B880000802E00718B8800008092
-:100160009D00718B88000080EF00718B88000080FB
-:10017000B220718B880000803320718B8800008052
-:100180002A20718B880000803B20718B88000080C2
-:100190004620718B880000802C20718B88000080A5
-:1001A000DD20718B880000800110718B8800008039
-:1001B0009A10718B880000801610718B8800008067
-:1001C0008E10718B88000080C230718B8800008097
-:1001D000C930718B880000803C30718B88000080B2
-:1001E0008180718B88000080D480718B88000080B2
-:1001F00010A0718B8800008034A0718B8800008073
-:100200000290718B880000807590718B880000804F
-:100210009AB0718B880000801240718B880000803A
-:100220000D40718B880000803C60718B88000080DD
-:10023000E750718B880000800E70718B8800008001
-:10024000FFC0718B88000080C8D0718B880000804F
-:1002500057F0718B88000080C822718B8800008065
-:10026000B032718B88000080DD82718B8800008045
-:1002700090B2718B880000808A62718B8800008048
-:10028000CE72718B88000080A5D2718B88000080AF
-:100290009721718B88000080A2A1718B880000805B
-:1002A0005C41718B88000080FEC1718B88000080EA
-:1002B0007A23718B880000807893718B880000808E
-:1002C0006773718B880000801728718B880000800D
-:1002D0008848718B88000080DBF8718B8800008073
-:1002E0002BBA718B88000080F109718B8800008027
-:1002F000DC69718B88000080198B718B880000800D
-:10030000FFFB718B880000802000718B88000080CB
-:100310005200718BC2000082FFFF718BC20000820D
-:10032000C2000082C2000082C20000821000718BF5
-:10033000C20000828000718BC20000829000718B2D
-:10034000C20000824000718BC2000082FFFF718BEF
-:10035000C2000082C2000082C2000082C20000828D
-:100360001000718BC20000828000718BC20000827D
-:100370009000718BC20000824000718BC20000822D
-:10038000FFFB718BC20000820004718BC2000082EF
-:100390004A00718BC20000820000718BC200008293
-:1003A0000000718BC2000082C2000082C2300419BA
-:1003B0001000094FC2010082C2010082C201008206
-:1003C000C2010082C2010082C2010082C201008219
-:1003D000C2010082C2010082C2010082C201008209
-:1003E000C2010082C20100820010718BC130041969
-:1003F0009300014FCD300009CF300009000034498F
-:0804000000080044C85411007B
-:00000001FF
-/*
- * Copyright (c) 1994 Creative Technology Ltd.
- * Microcode files for SB16 Advanced Signal Processor
- */
diff --git a/firmware/sb16/ima_adpcm_playback.csp.ihex b/firmware/sb16/ima_adpcm_playback.csp.ihex
deleted file mode 100644
index f09f18cf35e2..000000000000
--- a/firmware/sb16/ima_adpcm_playback.csp.ihex
+++ /dev/null
@@ -1,122 +0,0 @@
-:1000000000100044080000440C50004400700044FC
-:10001000047000440DF261A8440404190000404536
-:100020000004638000000639FF2E2149FF0DD449EA
-:10003000404939AC5555718B5001B1800001B180F8
-:10004000C92004195100718BCD000419E420718B73
-:10005000CF0004198000718BCB2004191000718B24
-:10006000C42004196500518BC22000390000B18002
-:10007000C230041900006380C1A004199300014F2D
-:10008000CD300009CF300009044000140C400014AA
-:10009000000461A8020461A804600424000034493B
-:1000A000005000444404043900004045000040452D
-:1000B0000F00610A00010045404009EFFF2009CF11
-:1000C000000463A1500333800004A38000FFC28BAF
-:1000D00008F004540CD000C4200380C03000008815
-:1000E00000007A0AD001008208500044C000009944
-:1000F0000850004400FFC28B20000080000D428B9E
-:1001000000A200C4000E428B0C9200C4001E428B61
-:10011000046200C4008E428B0C5200C4009E428BCD
-:1001200000C200C400BE428B00C200C40004428B67
-:1001300000F200C40024428B009100C40055428BA1
-:10014000085000C4003F428B08E200C40000404554
-:10015000200179800030428B009200C400004045AD
-:100160000000718B4001008008500044FF00E2ABAA
-:100170000C4200C40FF2A8A82000B1880000410280
-:100180004DF20039C0010082085000440DF2A3A8CE
-:100190004DF2003908500044FF00E2AB2000008817
-:1001A000000061024DF2041908500044FF00E2AB68
-:1001B000A0000088000061104DF2041908500044AE
-:1001C000FF20E2AB60000088000071C04DF204190E
-:1001D0000850004400007A0A2001F08001A0410A82
-:1001E00004D200C42001F080C1300419085000443A
-:1001F0000000798000A10084B500518BCF00003948
-:100200000001B180880004198A000419C82004196B
-:10021000CA200419C2300419CD100419CF100419D2
-:10022000B000718B8C0004198E0004191000718BC2
-:10023000C42004199300014FCD300009CF300009CC
-:100240000303044904810054085004640850004426
-:1002500000006380000006190300044908500044B0
-:1002600020016380000006190002E28B084100842F
-:100270006500518BC220003900006380C1A00419C1
-:10028000086100442D00518BC22000390000B1806C
-:10029000C1A0041903000449085000440220610A67
-:1002A000000100450230610A040300C405B0C8180B
-:1002B000047100C4001300440079084400047980EC
-:1002C000004900C4CA2004194A040419FF00E28B43
-:1002D0000CF90844CF1004190C2B08448E000419A3
-:1002E0000330610AC8200039480400390A30610A25
-:1002F0000CF90844CD1004190C2B08448C00041987
-:100300000CD908440C5A0044007908440004798050
-:10031000004900C4C3300419CA3000990CD90844FC
-:10032000420A090E000133118C01A38000017A10EA
-:100330008005B18005B0E01800930084007908447E
-:1003400000047980004900C40C1B0844880004198B
-:100350008A0000990CD90844420A090E8000718B6A
-:10036000C004B1821000E00B004300840230610A37
-:100370000130C80A004300840000B180C230041973
-:100380000CA800440230610A00D300C405B0C818AC
-:10039000046300C408F30044007908440004798031
-:1003A000004900C420000419FF00E28B0CF9084446
-:1003B000CD100419CF1004190C2B08448C0004191B
-:1003C0008E0004190330610AC8200039CA200039A0
-:1003D000480400394A0400390CD908440C5A004436
-:1003E0000079084400047980004900C4C33004192E
-:1003F0000CD90844420A090E05B0E0180018008420
-:100400000079084400047980004900C40C1B0844AA
-:10041000800100800CD90844420A090E8000718BCB
-:10042000C004B1821000E00B008800840230610A31
-:100430000130C80A008800840000B180C23004196D
-:1004400000010011000FE28B000041CB8C00008006
-:10045000000048CB20007A8080010080820C096E69
-:100460000308090E804009CF000171C20008C21BB9
-:1004700004B800C42005A8802001F0800001C21B40
-:10048000044800C42005A8802001F0800002C21B9F
-:10049000046800C42005A8802001F0802003A88003
-:1004A000000100110004C28B087800C40000E9803C
-:1004B00005B0A81800004ACB2000A822D001008275
-:1004C00040010080C4000419B000E28B0620A80A95
-:1004D0002D10610AD108092E0001A8020CF9084468
-:1004E000CD1004190C2B08440308090E9A25B1609D
-:1004F000A20E096E0300090F000171822001008025
-:10050000000061CB800100800300090F000171C26F
-:100510000008C21B0C2A00C42005A8802001F0801E
-:100520000001C21B0C1A00C42005A8802001F08025
-:100530000002C21B0C3A00C42005A8802001F080F4
-:100540002003A880000100110004C28B04AA00C48B
-:100550000000E98005B0A81800004ACB2000A822BE
-:10056000D001008240010080C7000419B000E28B76
-:100570000620A80A2F10610AF108092E0001A8021E
-:100580000CF90844CF1004190C2B08449F35B160B6
-:100590000308090E0001718220010080000061CB78
-:1005A00080010080E420718B000100459040098F9C
-:1005B0000005638000000639081904D49300014F38
-:1005C000E700016F0D30610A200461A8C2000082BB
-:1005D000020461A8C2000082CD30000902000002BE
-:1005E00002000002C0800009200009490F30610AA2
-:1005F0000D30C80A002900C40080C80A002900C4C0
-:100600000004B18000000639C920043900390044D3
-:1006100000046380000006390004B180C920043959
-:10062000003900440920230A00000619C9200419D2
-:10063000000040450200610A0CB904140400610A7C
-:100640000600480A00A90454C60004190CA9004475
-:100650000500C80A0CA90454C50004190700610A62
-:100660000C00480A00B90454CC0004190CB9004429
-:100670000E00C80A0CB90454CE0004190C5A0044E8
-:10068000820D092E804009CF00DF718B8001008030
-:1006900002C1002203C1002200016580D2056582EB
-:1006A00040210080D3030082403300800C5A004474
-:1006B0000F30610A0D30C80A08D900C49300014FF9
-:1006C000E700016F0F30610A20000088020061021C
-:1006D00002000003CF3000092000094900046380B4
-:1006E00004D900440004B180000000460230610AD1
-:1006F00005B0A818C2300419000000460E10C80A40
-:100700000C0B04140E10610A042B00440C10C80AD0
-:10071000042B04540C10610A000000460010A818B5
-:10072000A0000088000171820000004600043380B0
-:100730000000838020047A802001338000008380C1
-:1007400020007A80200300800000004616CE1100B1
-:00000001FF
-/*
- * Copyright (c) 1994 Creative Technology Ltd.
- * Microcode files for SB16 Advanced Signal Processor
- */
diff --git a/firmware/sb16/mulaw_main.csp.ihex b/firmware/sb16/mulaw_main.csp.ihex
deleted file mode 100644
index b64b565f2296..000000000000
--- a/firmware/sb16/mulaw_main.csp.ihex
+++ /dev/null
@@ -1,84 +0,0 @@
-:10000000001000440800004400B1004400610044B6
-:10001000085000440DF261A8440404190000404552
-:10002000404939AC5555718B500563800000063945
-:10003000FF2E2149FF0FD4492001090E2000718BAA
-:10004000A801A8808801A880A8000080D200718B38
-:100050008800A880A804B3802007B3808803B180FB
-:10006000C000095CC2010082A100718BCD0004199F
-:10007000A220718BCF0004190000B180C2000419C6
-:100080000040001408400424000034490C4000449F
-:1000900044040439000040453200095C00000C397A
-:1000A00000004045404009EFFF2009CF000463A154
-:1000B000500333800004A38000FFC28B00D004549F
-:1000C00004E000C4200380C03000008800007A0AE9
-:1000D000D001008200600044C0000099006000442C
-:1000E00000FFC28B20000080000D428B083200C44C
-:1000F000000E428B00A200C4001E428B0CB200C452
-:10010000008E428B006200C4009E428B085200C4E5
-:1001100000BE428B085200C40004428B047200C42B
-:100120000024428B00D200C40055428B006000C402
-:1001300000004045200179800030428B088200C4D5
-:10014000000040450000718B4001008000600044C9
-:10015000FF00E2AB00B200C40FF2A8A82000B188F3
-:10016000000041024DF20039C001008200600044ED
-:100170000DF2A3A84DF2003900600044FF00E2AB8D
-:1001800020000088000061024DF204190060004464
-:10019000FF00E2ABA0000088000061104DF20419DE
-:1001A00000600044FF20E2AB60000088000071C0E6
-:1001B0004DF20419006000440000798000E20084E0
-:1001C0000303044908C20054006004640060004452
-:1001D0000000638000000619030004490060004429
-:1001E00020016380000006190020E28B0CF20084DD
-:1001F0003E00518BC0200039080100446C00518B37
-:10020000C02000390002E28B04210084FD00518BE4
-:10021000C220003900110044FE00518BC220003979
-:10022000E500718BCD0000390000B180C9200419B0
-:10023000CB200419C1200419C32004191000718BAC
-:10024000C72004195E00718BCF0000390000B18017
-:10025000C4200419C6200419C8200419CA2004198E
-:100260002000718BCC200419030004490060004475
-:10027000090461A8C10004190B0461A8CA0004198B
-:10028000046000D40D00610A9040098F0001004510
-:100290000F00610A0040098F000100458200092E0D
-:1002A000804009CF02006122432561224033008053
-:1002B00008A800442031495C9200094E0203092E2F
-:1002C0000000A302C00071C02000EB800004C28BBC
-:1002D0002004618000047A02CB00A858B005F380A6
-:1002E0002004A81000001039B000E08B200100802D
-:1002F000000063CB00007A024000015B2000008018
-:1003000000004ACB2000138020007A80E02100C04A
-:10031000080008491041098EFFFF628B000461222A
-:1003200000030045220133802001A30200007A80EF
-:10033000C00000820720400A08830084402100801A
-:1003400040059310C7200039000040450720400AAF
-:100350000CA30084080000820C246150400100803E
-:10036000C7200039000040450004638000000639C2
-:100370004201090E0220610A000100450C20600ABA
-:10038000007300840004B180000006390C6104D4BD
-:10039000002471C0203333C0E001A38222037A021B
-:1003A000C301A3822001338000007A80C201B350D0
-:1003B000CC2000390000718000F300440C20600A5A
-:1003C00000D300840004B180000006390C6104D41D
-:1003D0000000B310CC200039000071C000F30044CD
-:1003E000CC200039002071C0003071C000F30044FF
-:1003F00020010080FFFF628B20013380000083809A
-:1004000020007A8020E1095C8200092F804A098E51
-:10041000E001B3822004A38000007ACB0300A81877
-:10042000000010390804EA1008047A102000008047
-:10043000400021CB0C00E810000041020C00EB1042
-:10044000F2010082402133020820610AC40004192D
-:10045000C70000990200610A0CE804140100610A57
-:100460000300480A00B80454C30004190CB800443F
-:100470000800C80A0CB80454C80004190A00610A2C
-:100480000900480A00680454C90004190C680044B3
-:100490000B00C80A0C680454CB0004190400610A5C
-:1004A0000600480A00780454C60004190C78004479
-:1004B0000500C80A0C780454C50004190700610A35
-:1004C0000C00480A00E80454CC0004190CE800446D
-:1004D0000E00C80A0CE80454CE0004190000404580
-:0804E0002010718B093F070099
-:00000001FF
-/*
- * Copyright (c) 1994 Creative Technology Ltd.
- * Microcode files for SB16 Advanced Signal Processor
- */
diff --git a/firmware/sun/cassini.bin.ihex b/firmware/sun/cassini.bin.ihex
deleted file mode 100644
index 5cd7ae70e71f..000000000000
--- a/firmware/sun/cassini.bin.ihex
+++ /dev/null
@@ -1,143 +0,0 @@
-:1000000000827E82090000000000008E8EFFCE82FA
-:1000100025FF010FCE8426FF0111CE853DDFE58649
-:1000200039B78FF87EC3C2964784F38A009747CECC
-:100030008233FF010F9646840C8104270B96468479
-:100040000C810827577E8425964784F38A049747B6
-:10005000CE8254FF010F9646840C81042638B612D6
-:1000600020842026037E8425967BD67CFE8F56BD79
-:10007000F7B6FE8F4EBDEC8EBDFAF7BDF728CE82E7
-:1000800082FF010F9646840C8104260AB612208452
-:100090002027B57E8425BDF71F7E841F964784F3F5
-:1000A0008A089747DEE1AD00CE82AFFF010F7E8464
-:1000B00025964185102606962385402706BDED002E
-:1000C0007E83A2DE42BDEB8E9624840827037E83C6
-:1000D000DF967BD67CFE8F56BDF7B6FE8F50BDEC0B
-:1000E0008EBDFAF78611C649BDE412CE82EFFF013C
-:1000F0000F9646840C81002717C649BDE491240D54
-:10010000B612208520260CCE82C1FF010F7E8425E9
-:100110007E8416FE8F52BDEC8EBDFAF7866AC64904
-:10012000BDE412CE8327FF010F9646840C81002781
-:100130000AC649BDE49125067E84257E8416B6183C
-:1001400070BB19702A0481AF2E19967BF62007FA2E
-:100150002027C4388138270BF62007FA2027CB0840
-:100160007E82D3BDF7668674C649BDE412CE837124
-:10017000FF010F9646840C8108260AC649BDE4910A
-:1001800025067E84257E8416BDF73E260EBDE50934
-:100190002606CE82C1FF010F7E8425FE8F54BDEC62
-:1001A0008EBDFAF7BDF733860FC651BDE412CE837C
-:1001B000B2FF010F9646840C8108265CB61220849B
-:1001C0003F813A271C9623854027037E8425C6510C
-:1001D000BDE49125037E8425CE82C1FF010F7E847C
-:1001E00025BDF8377C007ACE83EEFF010F7E842593
-:1001F0009646840C81082620962484082629B61861
-:1002000082BB1982B1013B2209B6122084378132A8
-:100210002715BDF8447E82C1BDF71FBDF844BDFC63
-:1002200029CE8225FF010F39964784FC8A00974723
-:10023000CE8434FF011196468403810227037E8514
-:100240001E964784FC8A029747DEE1AD008601B71F
-:100250001251BDF714B6103184FDB71031BDF81E30
-:100260009681D682FE8F5ABDF7B6FE8F5CBDEC8EAE
-:10027000BDFAF78608D600C51026028B20C651BDF0
-:10028000E412CE8486FF011196468403810227037F
-:100290007E850FC651BDE49125037E851E9644855B
-:1002A00010260AB61250BA013C851027A8BDF76681
-:1002B000CE84B7FF01117E851E96468403810226F7
-:1002C00050B612308403810127037E851E96448533
-:1002D000102613B61250BA013C85102609CE84535D
-:1002E000FF01117E851EB610318A02B71031BD851F
-:1002F0001FBDF8377C0080CE84FEFF01117E851E75
-:100300009646840381022609B612308403810127B0
-:100310000FBDF844BDF70BBDFC29CE8426FF0111AB
-:1003200039D622C40FB61230BA12328404270D9681
-:100330002285042705CA107E853ACA20D72239862D
-:1003400000978318CE1C00BDEB4696578501270207
-:100350004F3985022701397F8F7D8604B7120486C5
-:1003600008B712078610B7120C8607B71206B68FA9
-:100370007DB712708601BA1204B71204010101019F
-:100380000101B6120484FE8A02B7120401010101C0
-:10039000010186FDB41204B71204B612008408816C
-:1003A000082716B68F7D810C27088B04B78F7D7EBA
-:1003B000856C860397407E896E8607B712065FF7C5
-:1003C0008F825FF78F7FF78F70F78F71F78F72F7DC
-:1003D0008F73F78F74F78F75F78F76F78F77F78FA7
-:1003E00078F78F79F78F7AF78F7BB612048A10B778
-:1003F000120486E4B71270B71207F71205F7120954
-:100400008608BA1204B7120486F7B41204B71204AD
-:10041000010101010101B61208277F8180260B86A8
-:1004200008CE8F79BD897B7E868E8140260B86041F
-:10043000CE8F76BD897B7E868E8120260B8602CE6E
-:100440008F73BD897B7E868E8110260B8601CE8FB1
-:1004500070BD897B7E868E8108260B8608CE8F79BB
-:10046000BD897F7E868E8104260B8604CE8F76BD65
-:10047000897F7E868E8102260B8A02CE8F73BD898C
-:100480007F7E868E810126088601CE8F70BD897F92
-:10049000B68F7F810F26037E8747B61209840381BA
-:1004A0000327067C12097E85FEB6120684078107A3
-:1004B00027088B01B712067E86D5B68F82260A7C66
-:1004C0008F824FB712067E85C0B61206843F813FE9
-:1004D00027108B08B71206B6120984FCB712097EE2
-:1004E00085FECE8F7018CE8F84C60CBD896FCE8FDF
-:1004F0008418CE8F70C60CBD896FD683C14F2D0373
-:100500007E8740B68F7F8107270F810B2715810DCE
-:10051000271B810E27217E8740F78F7B8602B78FAE
-:100520007A201CF78F788602B78F772012F78F75A5
-:100530008602B78F742008F78F728602B78F717E9C
-:100540008747860497407E896ECE8F72BD89F7CE2D
-:100550008F75BD89F7CE8F78BD89F7CE8F7BBD892A
-:10056000F74FB78F7DB78F81B68F7227477C8F7D0E
-:10057000B68F75273F7C8F7DB68F7827377C8F7D30
-:10058000B68F7B272F7F8F7D7C8F817A8F72271B81
-:100590007C8F7D7A8F7527167C8F7D7A8F782711D7
-:1005A0007C8F7D7A8F7B270C7E87837A8F757A8FFD
-:1005B000787A8F7BCEC1FCF68F7D3AA600B7127099
-:1005C000B68F7226037E87FAB68F75260A18CE8FED
-:1005D00073BD89D57E87FAB68F78260A18CE8F76B6
-:1005E000BD89D57E87FAB68F7B260A18CE8F79BD56
-:1005F00089D57E87FA860597407E8900B68F7581FA
-:10060000072EF2F61206C4F81BB71206B68F7881D1
-:10061000072EE2484848F61206C4C71BB71206B6B2
-:100620008F7B81072ECFF61205C4F81BB712058603
-:1006300000F68F71BD89948601F68F74BD8994860A
-:1006400002F68F77BD89948603F68F7ABD8994CEA2
-:100650008F70A60181012707810327037E8866A684
-:1006600000B88F818401260B8C8F792C0E08080826
-:100670007E8850B612048A40B71204B6120484FB76
-:1006800084EFB71204B6120736B68F7C4848B7120B
-:10069000078601BA1204B7120401010101010186A3
-:1006A000FEB41204B712048602BA1204B71204860A
-:1006B000FDB41204B7120432B71207B61200840850
-:1006C0008108270F7C82082607867697407E896EF0
-:1006D0007E86ECB68F7F810F273CBDE6C7B7120D33
-:1006E000BDE6CBB612048A20B71204CEFFFFB612C5
-:1006F00000810C26050926F6271CB6120484DFB7F4
-:100700001204968381072C057C0083200696838B38
-:100710000897837E85417F8F7E8680B7120C860185
-:10072000B78F7DB6120C847FB7120C8A80B7120C7B
-:10073000860ABD8A06B6120A2A09B6120CBA8F7D3D
-:10074000B7120CB68F7E8160271A8B20B78F7EB6CA
-:10075000120C849FBA8F7EB7120CB68F7D48B78F6C
-:100760007D7E8921B612048A20B71204BD8A0A4F01
-:1007700039A60018A7000818085A26F539366C0063
-:1007800032BA8F7FB78F7FB612098403A701B612E2
-:1007900006843FA70239368603B78F8032C1002610
-:1007A00006B78F7C7E89C9C1012718C102270CC1F9
-:1007B000032700F68F800505F78F80F68F800505EB
-:1007C000F78F80F68F800505F78F80F68F8053F4C2
-:1007D00012071BB7120739CE8F70A60018E6001853
-:1007E000A700E700A60118E60118A701E701A60285
-:1007F00018E60218A702E70239A6008407E600C43B
-:10080000385454541BA700394A26FD399622840FC8
-:1008100097228601B78F70B61207B78F71F6120C48
-:10082000C40FC80FF78F72F68F72B68F71840327CB
-:10083000148101271C81022724F48F70272A962215
-:100840008A807E8A64F48F70271E96228A107E8AA0
-:1008500064F48F70271296228A207E8A64F48F7047
-:10086000270696228A409722748F71748F71788F31
-:1008700070B68F70851027AFD622C41058B612708C
-:1008800081E4273681E1260C96228420441BD6225F
-:10089000C4CF20235881C6260D9622844044441B91
-:1008A000D622C4AF2011588127260F962284804477
-:1008B00044441BD622C46F1B972239270C7C820626
-:0D08C000BDD9EDB682077E8AB97F82063968
-:00000001FF
-/* firmware patch for NS_DP83065 */
diff --git a/firmware/tehuti/bdx.bin.ihex b/firmware/tehuti/bdx.bin.ihex
deleted file mode 100644
index b029e4c85795..000000000000
--- a/firmware/tehuti/bdx.bin.ihex
+++ /dev/null
@@ -1,2678 +0,0 @@
-:1000000002000F00008071402D000000000000C0C1
-:1000100002000F00018071002D000000000080C070
-:1000200002000F00028071002D000000000000C1DE
-:1000300002000F00038071002D000000000080C14D
-:1000400002000F00048071002D000000000000C2BB
-:1000500002000F00058071002D000000000080C22A
-:1000600002000F00068071002D000000000000C398
-:1000700002000F00078071002D000000000080C307
-:1000800002000F00088071002D000000000000C475
-:1000900002000F00098071002D000000000080C4E4
-:1000A00002000F000A8071002D000000000000C552
-:1000B00002000F000B8071002D000000000080C5C1
-:1000C00002000F000C8071002D000000000000C62F
-:1000D00002000F000D8071002D000000000080C69E
-:1000E00002000F000E8071002D000000000000C70C
-:1000F00002000F000F8071002D000000000080C77B
-:1001000002000F00108071002D000000000000C8E8
-:1001100002000F00118071002D000000000080C857
-:1001200002000F00128071002D000000000000C9C5
-:1001300002000F00138071002D000000000080C934
-:1001400002000F00148071002D000000000000CAA2
-:1001500002000F00158071002D000000000080CA11
-:1001600002000F00168071002D000000000000CB7F
-:1001700002000F00178071002D000000000080CBEE
-:1001800002000F00188071002D000000000000CC5C
-:1001900002000F00198071002D000000000080CCCB
-:1001A00002000F001A8071002D000000000000CD39
-:1001B00002000F001B8071002D000000000080CDA8
-:1001C00002000F001C8071002D000000000000CE16
-:1001D00002000F001D8071002D000000000080CE85
-:1001E00002000F001E8071002D000000000000CFF3
-:1001F00002000F001F8071002D000000000080CF62
-:1002000002000F00208071002D000000000000D0CF
-:1002100002000F00218071002D000000000080D03E
-:1002200002000F00228071002D000000000000D1AC
-:1002300002000F00238071002D000000000080D11B
-:1002400002000F00248071002D000000000000D289
-:1002500002000F00258071002D000000000080D2F8
-:1002600002000F00268071002D000000000000D366
-:1002700002000F00278071002D000000000080D3D5
-:1002800002000F00288071002D000000000000D443
-:1002900002000F00298071002D000000000080D4B2
-:1002A00002000F002A8071002D000000000000D520
-:1002B00002000F002B8071002D000000000080D58F
-:1002C00002000F002C8071002D000000000000D6FD
-:1002D00002000F002D8071002D000000000080D66C
-:1002E00002000F002E8071002D000000000000D7DA
-:1002F00002000F002F8071002D000000000080D749
-:1003000002000F00308071002D000000000000D8B6
-:1003100002000F00318071002D000000000080D825
-:1003200002000F00328071002D000000000000D993
-:1003300002000F00338071002D000000000080D902
-:1003400002000F00348071002D000000000000DA70
-:1003500002000F00358071002D000000000080DADF
-:1003600002000F00368071002D000000000000DB4D
-:1003700002000F00378071002D000000000080DBBC
-:1003800002000F00388071007B000000008060DDFB
-:1003900002000F00398071002D000000000000DD18
-:1003A00002000F003A8071002D000000000080DB89
-:1003B00002000F003B8071002D000000000000DDF6
-:1003C00002000F003C8071002D000000000000DDE5
-:1003D00002000F003D8071000000000000000000DE
-:1003E00002000F003E8071000000000000000000CD
-:1003F00002000F003F8071000000000000000000BC
-:1004000002000F00408071000000000000000000AA
-:1004100002000F0041807100000000000000000099
-:1004200002000F0042807100000000000000000088
-:1004300002000F0043807100000000000000000077
-:1004400002000F0044807100000000000000000066
-:1004500002000F0045807100000000000000000055
-:1004600002000F0046807100000000000000000044
-:1004700002000F0047807100000000000000000033
-:1004800002000F0048807100000000000000000022
-:1004900002000F0049807100000000000000000011
-:1004A00002000F004A807100000000000000000000
-:1004B00002000F004B8071000000000000000000EF
-:1004C00002000F004C8071000000000000000000DE
-:1004D00002000F004D8071000000000000000000CD
-:1004E00002000F004E8071000000000000000000BC
-:1004F00002000F004F8071000000000000000000AB
-:1005000002000F0050807100000000000000000099
-:1005100002000F0051807100000000000000000088
-:1005200002000F0052807100000000000000000077
-:1005300002000F0053807100000000000000000066
-:1005400002000F0054807100000000000000000055
-:1005500002000F0055807100000000000000000044
-:1005600002000F0056807100000000000000000033
-:1005700002000F0057807100000000000000000022
-:1005800002000F0058807100000000000000000011
-:1005900002000F0059807100000000000000000000
-:1005A00002000F005A8071000000000000000000EF
-:1005B00002000F005B8071000000000000000000DE
-:1005C00002000F005C8071000000000000000000CD
-:1005D00002000F005D8071000000000000000000BC
-:1005E00002000F005E8071000000000000000000AB
-:1005F00002000F005F80710000000000000000009A
-:1006000002000F0060807100000000000000000088
-:1006100002000F0061807100000000000000000077
-:1006200002000F0062807100000000000000000066
-:1006300002000F0063807100000000000000000055
-:1006400002000F00648071002D000000000000DB3C
-:1006500002000F00658071003F000000040100DD12
-:1006600002000F00668071003F000000010018DDED
-:1006700002000F0067807100690000007A3D00DD14
-:1006800002000F00688071003F000000040800DDD8
-:1006900002000F0069807100690000007A3D00DDF2
-:1006A00002000F006A8071003F000000043000DD8E
-:1006B00002000F006B8071003F000000010018DD98
-:1006C00002000F006C807100690000007A3D00DDBF
-:1006D00002000F006D8071003F000000040000DD8B
-:1006E00002000F006E807100690000007A3D00DD9D
-:1006F00002000F006F8071003F000000043D00DD2C
-:1007000002000F00708071003F000000010018DD42
-:1007100002000F0071807100690000007A3D00DD69
-:1007200002000F00728071003F000000040700DD2E
-:1007300002000F0073807100690000007A3D00DD47
-:1007400002000F00748071003F000000842800DD6B
-:1007500002000F00758071003F000000010018DDED
-:1007600002000F0076807100690000007A3D00DD14
-:1007700002000F00778071003F000000043700DDA9
-:1007800002000F0078807100690000007A3D00DDF2
-:1007900002000F00798071003F000000042900DD95
-:1007A00002000F007A8071003F000000010018DD98
-:1007B00002000F007B807100690000007A3D00DDBF
-:1007C00002000F007C8071003F00000004AA04DDDD
-:1007D00002000F007D807100690000007A3D00DD9D
-:1007E00002000F007E8071003F000000042800DD41
-:1007F00002000F007F8071003F000000010018DD43
-:1008000002000F0080807100690000007A3D00DD69
-:1008100002000F00818071003F000000043100DD04
-:1008200002000F0082807100690000007A3D00DD47
-:1008300002000F00838071003F000000842B00DD68
-:1008400002000F00848071003F000000010018DDED
-:1008500002000F0085807100690000007A3D00DD14
-:1008600002000F00868071003F00000004E401DDFB
-:1008700002000F0087807100690000007A3D00DDF2
-:1008800002000F00888071003F000000840080D7C4
-:1008900002000F00898071003F000000010098D71E
-:1008A00002000F008A80710059000000EF3780D7E6
-:1008B00002000F008B8071003D0000006F0080F788
-:1008C00002000F008C8071003D0000006F0080F777
-:1008D00002000F008D8071003D0000006F0080F766
-:1008E00002000F008E8071002D0000007F02D6D71D
-:1008F00002000F008F807100180000008100FF17B8
-:1009000002000F00908071003D0000006F0080F732
-:1009100002000F00918071003D0000006F0080F721
-:1009200002000F00928071002D000000B800D8D79F
-:1009300002000F0093807100180000008100EB1787
-:1009400002000F00948071003F000000042900DDC8
-:1009500002000F00958071003F000000010018DDCB
-:1009600002000F0096807100690000007A3D00DDF2
-:1009700002000F00978071003F00000084AA04DD90
-:1009800002000F0098807100690000007A3D00DDD0
-:1009900002000F00998071003F000000042B00DD71
-:1009A00002000F009A8071003F000000010018DD76
-:1009B00002000F009B807100690000007A3D00DD9D
-:1009C00002000F009C8071003F000000040000DD69
-:1009D00002000F009D807100690000007A3D00DD7B
-:1009E00002000F009E8071003F000000842900DD9E
-:1009F00002000F009F8071003F000000010018DD21
-:100A000002000F00A0807100690000007A3D00DD47
-:100A100002000F00A18071003F000000040000DD13
-:100A200002000F00A2807100690000007A3D00DD25
-:100A300002000F00A38071003F000000042A00DDC7
-:100A400002000F00A48071003F000000010018DDCB
-:100A500002000F00A5807100690000007A3D00DDF2
-:100A600002000F00A68071003F000000849100DDAD
-:100A700002000F00A7807100690000007A3D00DDD0
-:100A800002000F00A88071003F000000841980D68A
-:100A900002000F00A98071003F000000010080D615
-:100AA00002000F00AA80710035000000ED0080D622
-:100AB00002000F00AB807100180000008100FF37BA
-:100AC00002000F00AC8071003F000000042B00DD2D
-:100AD00002000F00AD8071003F000000010018DD32
-:100AE00002000F00AE807100690000007A3D00DD59
-:100AF00002000F00AF8071003F000000040000DD25
-:100B000002000F00B0807100690000007A3D00DD36
-:100B100002000F00B18071003F000000842A00DD58
-:100B200002000F00B28071003F000000010018DDDC
-:100B300002000F00B3807100690000007A3D00DD03
-:100B400002000F00B48071003F000000040000DDCF
-:100B500002000F00B5807100690000007A3D00DDE1
-:100B600002000F00B68071003F000000840C80D6A8
-:100B700002000F00B78071003F000000010080D626
-:100B800002000F00B880710035000000ED0080D633
-:100B900002000F00B9807100180000008100FF37CB
-:100BA00002000F00BA8071003F000000842A00DDBF
-:100BB00002000F00BB8071003F000000010018DD43
-:100BC00002000F00BC807100690000007A3D00DD6A
-:100BD00002000F00BD8071003F000000040000DD36
-:100BE00002000F00BE807100690000007A3D00DD48
-:100BF00002000F00BF8071003F000000840F80D60C
-:100C000002000F00C08071003F000000010080D68C
-:100C100002000F00C180710035000000ED0080D699
-:100C200002000F00C2807100180000008100FF3731
-:100C300002000F00C38071003F000000042A00DDA5
-:100C400002000F00C48071003F000000010018DDA9
-:100C500002000F00C5807100690000007A3D00DDD0
-:100C600002000F00C68071003F000000841100DD0B
-:100C700002000F00C7807100690000007A3D00DDAE
-:100C800002000F00C88071003F000000842800DDD2
-:100C900002000F00C98071003F000000010018DD54
-:100CA00002000F00CA807100690000007A3D00DD7B
-:100CB00002000F00CB8071003F000000843700DD90
-:100CC00002000F00CC807100690000007A3D00DD59
-:100CD00002000F00CD8071002D000000000080D3C5
-:100CE00002000F00CE8071003F000000803700D26C
-:100CF00002000F00CF8071003F000000040480D18B
-:100D000002000F00D08071003F000000010084D17C
-:100D100002000F00D180710069000000763B00DD09
-:100D200002000F00D280710069000000763B00DDF8
-:100D300002000F00D380710069000000763B00DDE7
-:100D400002000F00D48071003F00000084FF7FD1BB
-:100D500002000F00D58071003F00000081FF7FD1AD
-:100D600002000F00D680710069000000763B00DDB4
-:100D700002000F00D780710069000000763B00DDA3
-:100D800002000F00D880710069000000763B00DD92
-:100D900002000F00D980710069000000763B00DD81
-:100DA00002000F00DA80710069000000763B00DD70
-:100DB00002000F00DB80710069000000763B00DD5F
-:100DC00002000F00DC8071003F000000840780D625
-:100DD00002000F00DD8071003F000000010080D69E
-:100DE00002000F00DE80710035000000ED0080D6AB
-:100DF00002000F00DF807100180000008100FF3743
-:100E000002000F00E080710049000000633B00DD3C
-:100E100002000F00E180710059000000763B00DD08
-:100E200002000F00E28071003D0000006F0080F7BB
-:100E300002000F00E38071003D0000006F0080F7AA
-:100E400002000F00E48071003D0000006F0080F799
-:100E500002000F00E58071002D0000007F0206DD1A
-:100E600002000F00E6807100180000007A3D7F1D2F
-:100E700002000F00E780710045000000393100DDFD
-:100E800002000F00E8807100940000003B310B006D
-:100E900002000F00E9807100940000003D3109005C
-:100EA00002000F00EA807100940000003F3107004B
-:100EB00002000F00EB80710094000000763B0500FB
-:100EC00002000F00EC807100090000007A3DEDC1C6
-:100ED00002000F00ED8071003F00000080B700D2DB
-:100EE00002000F00EE8071003F000000842800DD4A
-:100EF00002000F00EF8071003F000000010018DDCC
-:100F000002000F00F080710069000000643200DD13
-:100F100002000F00F1807100690000007A3D00DDE1
-:100F200002000F00F28071003F000000840780D6AD
-:100F300002000F00F38071003F000000010080D626
-:100F400002000F00F480710035000000ED0080D633
-:100F500002000F00F5807100180000008100FF37CB
-:100F600002000F00F680710049000000633B00DDC5
-:100F700002000F00F780710059000000763B00DD91
-:100F800002000F00F88071003D0000006F0080F744
-:100F900002000F00F98071003D0000006F0080F733
-:100FA00002000F00FA8071003D0000006F0080F722
-:100FB00002000F00FB8071002D0000007F0206DDA3
-:100FC00002000F00FC807100180000007A3D7F1DB8
-:100FD00002000F00FD807100450000003A3100DD85
-:100FE00002000F00FE80710018000000763B2D1DEE
-:100FF00002000F00FF807100450000003C3100DD61
-:1010000002000F000081710018000000763B131DE4
-:1010100002000F0001817100450000003E3100DD3B
-:1010200002000F000281710018000000763B1B1DBA
-:1010300002000F00038171003F000000043000DD5A
-:1010400002000F00048171003F000000010018DD64
-:1010500002000F0005817100690000007A3D00DD8B
-:1010600002000F00068171003F000000040100DD56
-:1010700002000F0007817100690000007A3D00DD69
-:1010800002000F0008817100090000007A3D2DC5A3
-:1010900002000F000981710029000000640001D2E4
-:1010A00002000F000A8171003F000000842800DD6B
-:1010B00002000F000B8171003F000000010018DDED
-:1010C00002000F000C81710069000000643200DD35
-:1010D00002000F000D817100690000007A3D00DD03
-:1010E00002000F000E817100090000007A3D29C244
-:1010F00002000F000F81710029000000640000D27F
-:1011000002000F00108171003F000000842800DD04
-:1011100002000F00118171003F000000010018DD86
-:1011200002000F001281710069000000643200DDCE
-:1011300002000F0013817100690000007A3D00DD9C
-:1011400002000F001481710049000000633B00DDC4
-:1011500002000F001581710059000000763B00DD90
-:1011600002000F00168171003D0000006F0080F743
-:1011700002000F00178171003D0000006F0080F732
-:1011800002000F00188171003D0000006F0080F721
-:1011900002000F00198171002D0000007F0206DDA2
-:1011A00002000F001A817100180000007A3D7F1DB7
-:1011B00002000F001B817100450000003A3100DD84
-:1011C00002000F001C81710018000000763B0F1D0B
-:1011D00002000F001D8171003F000000043000DD9F
-:1011E00002000F001E8171003F000000010018DDA9
-:1011F00002000F001F817100690000007A3D00DDD0
-:1012000002000F00208171003F000000040100DD9A
-:1012100002000F0021817100690000007A3D00DDAD
-:1012200002000F0022817100090000007A3D2DC5E7
-:1012300002000F00238171002D000000820008D100
-:1012400002000F0024817100080000007A3DC323D2
-:1012500002000F0025817100490000000A3B00D602
-:1012600002000F00268171003F000000040000D33F
-:1012700002000F00278171003F000000010004D32D
-:1012800002000F00288171002F000000854081D6E8
-:1012900002000F00298171003F00000084FFFFD48D
-:1012A00002000F002A8171003F000000810780D4F6
-:1012B00002000F002B8171003F00000084FFFFD16E
-:1012C00002000F002C8171003F000000010080D15E
-:1012D00002000F002D81710049000000663600DD1C
-:1012E00002000F002E81710069000000763B00DDD6
-:1012F00002000F002F81710069000000763B00DDC5
-:1013000002000F003081710069000000763B00DDB3
-:1013100002000F003181710069000000693B00DDAF
-:1013200002000F003281710069000000763B00DD91
-:1013300002000F003381710069000000763B00DD80
-:1013400002000F003481710069000000763B00DD6F
-:1013500002000F003581710069000000693B00DD6B
-:1013600002000F0036817100610000006C0400F67D
-:1013700002000F003781710035000000ED0080D6BB
-:1013800002000F00388171001800000081006B3DE1
-:1013900002000F0039817100490000008B0500D662
-:1013A00002000F003A8171002F000000060181D673
-:1013B00002000F003B8171002D000000000000D2F0
-:1013C00002000F003C81710021000000E40000D207
-:1013D00002000F003D8171003D0000006F0080F7AA
-:1013E00002000F003E8171002D0000007F0106DD2C
-:1013F00002000F003F817100180000007A3D7F1D40
-:1014000002000F0040817100490000006C3600D8D6
-:1014100002000F004181710069000000E73300D82D
-:1014200002000F004281710069000000E73300D81C
-:1014300002000F004381710069000000EF3700D8FF
-:1014400002000F0044817100310000006C0100D6E1
-:1014500002000F00458171002D000000000000D146
-:1014600002000F004681710049000000E4337AD188
-:1014700002000F00478171002F000000620171D14E
-:1014800002000F00488171002F000000620161D14D
-:1014900002000F004981710049000000E33340D190
-:1014A00002000F004A8171003D0000006F0080F7CC
-:1014B00002000F004B8171002D0000007F0106DD4E
-:1014C00002000F004C817100180000007A3D7F1D62
-:1014D00002000F004D817100490000006C3600D8F9
-:1014E00002000F004E81710069000000E73300D850
-:1014F00002000F004F81710069000000623100D8C6
-:1015000002000F005081710069000000EF3700D821
-:1015100002000F0051817100310000006C0100D603
-:1015200002000F00528171003D0000006F0080F743
-:1015300002000F00538171002D0000007F0106DDC5
-:1015400002000F0054817100180000007A3D7F1DD9
-:1015500002000F0055817100490000006C3600D870
-:1015600002000F005681710069000000E73300D8C7
-:1015700002000F005781710069000000E73300D8B6
-:1015800002000F005881710069000000EF3700D899
-:1015900002000F0059817100310000006C0100D67B
-:1015A00002000F005A8171002D000000000000D1E0
-:1015B00002000F005B8171002D000000E4076CD178
-:1015C00002000F005C81710049000000E33340D14C
-:1015D00002000F005D8171003D0000006F0080F788
-:1015E00002000F005E8171002D0000007F0106DD0A
-:1015F00002000F005F817100180000007A3D7F1D1E
-:1016000002000F0060817100490000006C3600D8B4
-:1016100002000F006181710069000000E73300D80B
-:1016200002000F006281710069000000623100D881
-:1016300002000F006381710069000000EF3700D8DD
-:1016400002000F0064817100310000006C0100D6BF
-:1016500002000F00658171003D0000006F0080F7FF
-:1016600002000F00668171002D0000007F0106DD81
-:1016700002000F0067817100180000007A3D7F1D95
-:1016800002000F0068817100490000006C3600D82C
-:1016900002000F006981710069000000E73300D883
-:1016A00002000F006A81710069000000E73300D872
-:1016B00002000F006B81710069000000EF3700D855
-:1016C00002000F006C817100310000006C0100D637
-:1016D00002000F006D8171002D000000000000D19C
-:1016E00002000F006E81710049000000E43378D1E0
-:1016F00002000F006F8171002F000000620171D1A4
-:1017000002000F00708171002F000000620161D1A2
-:1017100002000F007181710049000000E33340D1E5
-:1017200002000F00728171003D0000006F0080F721
-:1017300002000F00738171002D0000007F0106DDA3
-:1017400002000F0074817100180000007A3D7F1DB7
-:1017500002000F0075817100490000006C3600D84E
-:1017600002000F007681710069000000E73300D8A5
-:1017700002000F007781710069000000623100D81B
-:1017800002000F007881710069000000EF3700D877
-:1017900002000F0079817100310000006C0100D659
-:1017A00002000F007A8171003D0000006F0080F799
-:1017B00002000F007B8171002D0000007F0106DD1B
-:1017C00002000F007C817100180000007A3D7F1D2F
-:1017D00002000F007D817100490000006C3600D8C6
-:1017E00002000F007E81710069000000E73300D81D
-:1017F00002000F007F81710069000000E73300D80C
-:1018000002000F008081710069000000EF3700D8EE
-:1018100002000F0081817100310000006C0100D6D0
-:1018200002000F00828171002D000000000000D135
-:1018300002000F00838171002D000000E40768D1D1
-:1018400002000F008481710049000000E33340D1A1
-:1018500002000F00858171003D0000006F0080F7DD
-:1018600002000F00868171002D0000007F0106DD5F
-:1018700002000F0087817100180000007A3D7F1D73
-:1018800002000F0088817100490000006C3600D80A
-:1018900002000F008981710069000000E73300D861
-:1018A00002000F008A81710069000000623100D8D7
-:1018B00002000F008B81710069000000EF3700D833
-:1018C00002000F008C817100310000006C0100D615
-:1018D00002000F008D81710035000000ED0080D600
-:1018E00002000F008E817100080000008100792243
-:1018F00002000F008F817100490000000C0600D625
-:1019000002000F00908171002F000000060181D6B7
-:1019100002000F00918171003F000000020080D49E
-:1019200002000F00928171003F000000840080D40B
-:1019300002000F00938171003F000000020100D5FA
-:1019400002000F00948171003F000000840100D567
-:1019500002000F00958171003F000000020280D557
-:1019600002000F00968171003F000000040280D544
-:1019700002000F00978171003D0000006F0080F7AA
-:1019800002000F00988171002D0000007F0106DD2C
-:1019900002000F0099817100180000007A3D7F1D40
-:1019A00002000F009A817100490000006C3600D8D7
-:1019B00002000F009B81710069000000E93400D82B
-:1019C00002000F009C817100690000006A3500D898
-:1019D00002000F009D81710069000000EF3700D800
-:1019E00002000F009E817100310000006C0100D6E2
-:1019F00002000F009F81710041000000EB3480D491
-:101A000002000F00A0817100410000006B3500D57D
-:101A100002000F00A181710035000000ED0080D6AA
-:101A200002000F00A2817100180000008100EB3756
-:101A300002000F00A3817100490000000D3B00D699
-:101A400002000F00A481710049000000073B80D60E
-:101A500002000F00A58171002D000000000000D1E0
-:101A600002000F00A681710049000000663600DD0B
-:101A700002000F00A781710069000000763B00DDC5
-:101A800002000F00A881710069000000763B00DDB4
-:101A900002000F00A981710069000000763B00DDA3
-:101AA00002000F00AA81710069000000763B00DD92
-:101AB00002000F00AB81710069000000763B00DD81
-:101AC00002000F00AC81710069000000763B00DD70
-:101AD00002000F00AD81710069000000763B00DD5F
-:101AE00002000F00AE81710069000000763B00DD4E
-:101AF00002000F00AF817100610000006C0400F66D
-:101B000002000F00B081710035000000ED0080D6AA
-:101B100002000F00B1817100180000008100EB3756
-:101B200002000F00B2817100490000000E3B00D698
-:101B300002000F00B381710049000000083B80D60D
-:101B400002000F00B481710049000000093B80D5FC
-:101B500002000F00B58171003D0000006F0080F7AA
-:101B600002000F00B68171002D0000007F0106DD2C
-:101B700002000F00B7817100180000007A3D7F1D40
-:101B800002000F00B8817100490000006C3600D8D7
-:101B900002000F00B981710069000000EB3500D828
-:101BA00002000F00BA81710069000000E73300D81D
-:101BB00002000F00BB81710069000000EF3700D800
-:101BC00002000F00BC81710041000000EC0700D64C
-:101BD00002000F00BD817100410000006B0880D53C
-:101BE00002000F00BE81710035000000ED0080D6BC
-:101BF00002000F00BF817100180000008100ED3766
-:101C000002000F00C08171003F00000080FFFFD480
-:101C100002000F00C18171003F000000040002D5E6
-:101C200002000F00C28171003F000000010018D5C2
-:101C300002000F00C3817100490000006A3B00DD13
-:101C400002000F00C481710069000000693B00DDE3
-:101C500002000F00C581710069000000693B00DDD2
-:101C600002000F00C681710021000000EA0000D5CB
-:101C700002000F00C7817100490000006A3B0EDDC1
-:101C800002000F00C8817100350000007A0004D105
-:101C900002000F00C9817100180000008100F537B3
-:101CA00002000F00CA8171003F00000080FFFFD4D6
-:101CB00002000F00CB8171003F000000040004D53A
-:101CC00002000F00CC8171003F000000010018D518
-:101CD00002000F00CD81710069000000693B00DD4A
-:101CE00002000F00CE81710069000000693B00DD39
-:101CF00002000F00CF817100490000006A3B00DD47
-:101D000002000F00D081710051000000EA0000F5D0
-:101D100002000F00D18171003D0000006F0080F7CC
-:101D200002000F00D28171003D0000006F0080F7BB
-:101D300002000F00D3817100490000006A3B0EDDF4
-:101D400002000F00D4817100350000007A8004D1B8
-:101D500002000F00D5817100180000008100F537E6
-:101D600002000F00D68171003F000000047F7FC792
-:101D700002000F00D78171003F000000017F7FC784
-:101D800002000F00D88171003F000000004080D6A3
-:101D900002000F00D98171003F00000000C003D194
-:101DA00002000F00DA81710025000000E20020DE51
-:101DB00002000F00DB817100490000004E2780DE29
-:101DC00002000F00DC8171003D0000006F0080F711
-:101DD00002000F00DD8171003D0000006F0080F700
-:101DE00002000F00DE81710035000000E20000D12A
-:101DF00002000F00DF81710035000000ED0080D689
-:101E000002000F00E0817100180000008100F5372A
-:101E100002000F00E18171003F000000043000DD8E
-:101E200002000F00E28171003F000000010018DD98
-:101E300002000F00E3817100690000003A1D00DD1F
-:101E400002000F00E4817100690000007A3D00DDAE
-:101E500002000F00E58171007D00000013A760C73C
-:101E600002000F00E681710031000000410080C0D7
-:101E700002000F00E781710031000000480000C43B
-:101E800002000F00E881710031000000450080C2AF
-:101E900002000F00E9817100000000000000000056
-:101EA00002000F00EA817100000000000000000045
-:101EB00002000F00EB817100000000000000000034
-:101EC00002000F00EC817100000000000000000023
-:101ED00002000F00ED817100000000000000000012
-:101EE00002000F00EE817100000000000000000001
-:101EF00002000F00EF8171000000000000000000F0
-:101F000002000F00F08171000000000000000000DE
-:101F100002000F00F18171000000000000000000CD
-:101F200002000F00F28171000000000000000000BC
-:101F300002000F00F38171000000000000000000AB
-:101F400002000F00F48171002D000000000000DB92
-:101F500002000F00F58171003F000000043000DD39
-:101F600002000F00F68171003F000000010018DD43
-:101F700002000F00F7817100690000007A3D00DD6A
-:101F800002000F00F88171003F000000040000DD36
-:101F900002000F00F9817100690000007A3D00DD48
-:101FA00002000F00FA8171002D000000000080D3B4
-:101FB00002000F00FB8171003F000000040400DDFF
-:101FC00002000F00FC8171003F000000010018DDDD
-:101FD00002000F00FD81710069000000140A00DD9D
-:101FE00002000F00FE817100690000007A3D00DDF3
-:101FF00002000F00FF81710049000000943304D1FA
-:1020000002000F00008271003F000000840400DD28
-:1020100002000F00018271003F000000010018DD86
-:1020200002000F000282710069000000623100DDD1
-:1020300002000F0003827100690000007A3D00DD9C
-:1020400002000F00048271003F000000040500DD63
-:1020500002000F00058271003F000000010018DD42
-:1020600002000F000682710069000000950A00DD81
-:1020700002000F0007827100690000007A3D00DD58
-:1020800002000F000882710049000000953304D15E
-:1020900002000F00098271003F000000840500DD8E
-:1020A00002000F000A8271003F000000010018DDED
-:1020B00002000F000B82710069000000623100DD38
-:1020C00002000F000C827100690000007A3D00DD03
-:1020D00002000F000D8271003F000000040600DDC9
-:1020E00002000F000E8271003F000000010018DDA9
-:1020F00002000F000F827100690000007A3D00DDD0
-:1021000002000F00108271003F000000840000DD1B
-:1021100002000F0011827100690000007A3D00DDAD
-:1021200002000F00128271003F000000040000DD79
-:1021300002000F00138271003F000000010018DD53
-:1021400002000F001482710069000000160B00DD10
-:1021500002000F0015827100690000007A3D00DD69
-:1021600002000F00168271003F000000041000DD25
-:1021700002000F00178271003F000000010018DD0F
-:1021800002000F0018827100690000007A3D00DD36
-:1021900002000F00198271003F000000040000DD02
-:1021A00002000F001A827100690000007A3D00DD14
-:1021B00002000F001B8271003F000000841000DD50
-:1021C00002000F001C8271003F000000010018DDBA
-:1021D00002000F001D827100690000007A3D00DDE1
-:1021E00002000F001E8271003F000000048001DD2C
-:1021F00002000F001F827100690000007A3D00DDBF
-:1022000002000F00208271003F000000041100DD79
-:1022100002000F00218271003F000000010018DD64
-:1022200002000F0022827100690000007A3D00DD8B
-:1022300002000F00238271003F000000040000DD57
-:1022400002000F0024827100690000007A3D00DD69
-:1022500002000F00258271003F000000841100DDA4
-:1022600002000F00268271003F000000010018DD0F
-:1022700002000F0027827100690000007A3D00DD36
-:1022800002000F00288271003F000000040016DDEC
-:1022900002000F0029827100690000007A3D00DD14
-:1022A00002000F002A8271003F000000041200DDCE
-:1022B00002000F002B8271003F000000010018DDBA
-:1022C00002000F002C827100690000007A3D00DDE1
-:1022D00002000F002D8271003F000000040000DDAD
-:1022E00002000F002E827100690000007A3D00DDBF
-:1022F00002000F002F8271003F000000841200DDF9
-:1023000002000F00308271003F000000010018DD64
-:1023100002000F0031827100690000007A3D00DD8B
-:1023200002000F00328271003F000000040000DD57
-:1023300002000F0033827100690000007A3D00DD69
-:1023400002000F00348271003F000000041300DD22
-:1023500002000F00358271003F000000010018DD0F
-:1023600002000F0036827100690000007A3D00DD36
-:1023700002000F00378271003F000000040000DD02
-:1023800002000F0038827100690000007A3D00DD14
-:1023900002000F00398271003F000000841300DD4D
-:1023A00002000F003A8271003F000000010018DDBA
-:1023B00002000F003B827100690000007A3D00DDE1
-:1023C00002000F003C8271003F000000040005DDA8
-:1023D00002000F003D827100690000007A3D00DDBF
-:1023E00002000F003E8271003F000000042000DD6B
-:1023F00002000F003F8271003F000000010018DD65
-:1024000002000F0040827100690000007A3D00DD8B
-:1024100002000F00418271003F000000040000DD57
-:1024200002000F0042827100690000007A3D00DD69
-:1024300002000F00438271003F000000842000DD95
-:1024400002000F00448271003F000000010018DD0F
-:1024500002000F0045827100690000007A3D00DD36
-:1024600002000F00468271003F000000049001DD71
-:1024700002000F0047827100690000007A3D00DD14
-:1024800002000F00488271003F000000042100DDBF
-:1024900002000F00498271003F000000010018DDBA
-:1024A00002000F004A827100690000007A3D00DDE1
-:1024B00002000F004B8271003F000000840000DD2D
-:1024C00002000F004C827100690000007A3D00DDBF
-:1024D00002000F004D8271003F000000842100DDEA
-:1024E00002000F004E8271003F000000010018DD65
-:1024F00002000F004F827100690000007A3D00DD8C
-:1025000002000F00508271003F000000040000DD57
-:1025100002000F0051827100690000007A3D00DD69
-:1025200002000F00528271003F000000042200DD13
-:1025300002000F00538271003F000000010018DD0F
-:1025400002000F0054827100690000007A3D00DD36
-:1025500002000F00558271003F000000840200DD80
-:1025600002000F0056827100690000007A3D00DD14
-:1025700002000F00578271003F000000842200DD3E
-:1025800002000F00588271003F000000010018DDBA
-:1025900002000F0059827100690000007A3D00DDE1
-:1025A00002000F005A8271003F000000040000DDAD
-:1025B00002000F005B827100690000007A3D00DDBF
-:1025C00002000F005C8271003F000000042300DD68
-:1025D00002000F005D8271003F000000010018DD65
-:1025E00002000F005E827100690000007A3D00DD8C
-:1025F00002000F005F8271003F000000040000DD58
-:1026000002000F0060827100690000007A3D00DD69
-:1026100002000F00618271003F000000041800DD1D
-:1026200002000F00628271003F000000010018DD0F
-:1026300002000F006382710069000000970B00DD4B
-:1026400002000F0064827100690000007A3D00DD25
-:1026500002000F006582710049000000973304D129
-:1026600002000F00668271003F000000841800DD48
-:1026700002000F00678271003F000000010018DDBA
-:1026800002000F006882710069000000623100DD05
-:1026900002000F0069827100690000007A3D00DDD0
-:1026A00002000F006A8271003F000000041900DD83
-:1026B00002000F006B8271003F000000010018DD76
-:1026C00002000F006C82710069000000180C00DD30
-:1026D00002000F006D827100690000007A3D00DD8C
-:1026E00002000F006E82710049000000983304D18F
-:1026F00002000F006F8271003F000000841900DDAE
-:1027000002000F00708271003F000000010018DD20
-:1027100002000F007182710069000000623100DD6B
-:1027200002000F0072827100690000007A3D00DD36
-:1027300002000F00738271003F000000041A00DDE8
-:1027400002000F00748271003F000000010018DDDC
-:1027500002000F0075827100690000007A3D00DD03
-:1027600002000F00768271003F000000040000DDCF
-:1027700002000F0077827100690000007A3D00DDE1
-:1027800002000F00788271003F000000841A00DD13
-:1027900002000F00798271003F000000010018DD87
-:1027A00002000F007A82710069000000160B00DD44
-:1027B00002000F007B827100690000007A3D00DD9D
-:1027C00002000F007C8271003F000000041C00DD4D
-:1027D00002000F007D8271003F000000010018DD43
-:1027E00002000F007E82710069000000990C00DD7C
-:1027F00002000F007F827100690000007A3D00DD59
-:1028000002000F00808271003F000000841C00DD88
-:1028100002000F00818271003F000000010018DDFE
-:1028200002000F0082827100690000001A0D00DDB5
-:1028300002000F0083827100690000007A3D00DD14
-:1028400002000F00848271003F000000041D00DDC3
-:1028500002000F00858271003F000000010018DDBA
-:1028600002000F0086827100690000009B0D00DDF0
-:1028700002000F0087827100690000007A3D00DDD0
-:1028800002000F0088827100490000009B3304D1D0
-:1028900002000F00898271003F000000841D00DDEE
-:1028A00002000F008A8271003F000000010018DD65
-:1028B00002000F008B82710069000000623100DDB0
-:1028C00002000F008C827100690000007A3D00DD7B
-:1028D00002000F008D8271003F000000041E00DD29
-:1028E00002000F008E8271003F000000010018DD21
-:1028F00002000F008F827100690000001C0E00DDD5
-:1029000002000F0090827100690000007A3D00DD36
-:1029100002000F00918271003F000000040100DD01
-:1029200002000F00928271003F000000010018DDDC
-:1029300002000F0093827100690000007A3D00DD03
-:1029400002000F00948271003F000000040F00DDC0
-:1029500002000F0095827100690000007A3D00DDE1
-:1029600002000F00968271007D00000013A760C76F
-:1029700002000F009782710031000000410080C00A
-:1029800002000F009882710031000000480000C46E
-:1029900002000F009982710031000000450080C2E2
-:1029A00002000F009A827100310000006D0080D695
-:1029B0000F000F0064007000000000000000000025
-:1029C00000000000400000000001000000040000C2
-:1029D000640000005400000000000000002400001B
-:1029E0000028000000040000802800008001000092
-:1029F00003000000000000000000000000000000D4
-:102A0000510000007D01000008000000510000009E
-:102A10005D00000000000000090000000050000000
-:102A200000000000000000000F000F00F401700023
-:102A30000000000000000000000000004000000056
-:102A400000010000000400006400000054000000C9
-:102A50000000000000240000002800000004000026
-:102A6000802800008001000003000000000000003A
-:102A70000000000000000000510000007D01000087
-:102A800008000000510000005D0000000000000090
-:102A900009000000005000000000000000000000DD
-:102AA00002000F00000070000100000000000000A4
-:102AB00002000F0000007000010000000000000094
-:102AC00002000F00008071002500000002000EDDF2
-:102AD00002000F000180710004000000763BD1016C
-:102AE00002000F00028071002500000082000EDD50
-:102AF00002000F000380710004000000763B890291
-:102B000002000F00048071002500000002010EDDAC
-:102B100002000F000580710004000000763B850272
-:102B200002000F00068071002500000082010EDD0A
-:102B300002000F000780710004000000763BFD03D7
-:102B400002000F000880710009000000763B81CF71
-:102B500002000F000980710000000000000000006A
-:102B600002000F000A807100000000000000000059
-:102B700002000F000B807100000000000000000048
-:102B800002000F000C807100000000000000000037
-:102B900002000F000D807100000000000000000026
-:102BA00002000F000E807100000000000000000015
-:102BB00002000F000F807100000000000000000004
-:102BC00002000F00108071000000000000000000F3
-:102BD00002000F00118071000000000000000000E2
-:102BE00002000F00128071000000000000000000D1
-:102BF00002000F00138071000000000000000000C0
-:102C000002000F00148071000000000000000000AE
-:102C100002000F001580710000000000000000009D
-:102C200002000F001680710000000000000000008C
-:102C300002000F001780710000000000000000007B
-:102C400002000F001880710000000000000000006A
-:102C500002000F0019807100000000000000000059
-:102C600002000F001A807100000000000000000048
-:102C700002000F001B807100000000000000000037
-:102C800002000F001C807100000000000000000026
-:102C900002000F001D807100000000000000000015
-:102CA00002000F001E807100000000000000000004
-:102CB00002000F001F8071000000000000000000F3
-:102CC00002000F00208071000000000000000000E2
-:102CD00002000F00218071000000000000000000D1
-:102CE00002000F00228071000000000000000000C0
-:102CF00002000F00238071000000000000000000AF
-:102D000002000F002480710000000000000000009D
-:102D100002000F002580710000000000000000008C
-:102D200002000F002680710000000000000000007B
-:102D300002000F002780710000000000000000006A
-:102D400002000F002880710049000000003B00C015
-:102D500002000F002980710049000000023B80C082
-:102D600002000F002A80710049000000033B00C1EF
-:102D700002000F002B80710049000000043B80C15D
-:102D800002000F002C80710029000000760060DF37
-:102D900002000F002D807100490000007D3B44DFE0
-:102DA00002000F002E80710079000000769060FD17
-:102DB00002000F002F8071003D0000006F0080F7BF
-:102DC00002000F00308071003D0000006F0080F7AE
-:102DD00002000F00318071003D0000006F0080F79D
-:102DE00002000F00328071003D0000006F0080F78C
-:102DF00002000F003380710000000000000000009E
-:102E000002000F003480710000000000000000008C
-:102E100002000F003580710000000000000000007B
-:102E200002000F003680710000000000000000006A
-:102E300002000F0037807100000000000000000059
-:102E400002000F0038807100000000000000000048
-:102E500002000F0039807100000000000000000037
-:102E600002000F003A807100000000000000000026
-:102E700002000F003B807100000000000000000015
-:102E800002000F003C807100000000000000000004
-:102E900002000F003D8071000000000000000000F3
-:102EA00002000F003E8071000000000000000000E2
-:102EB00002000F003F8071000000000000000000D1
-:102EC00002000F00408071000000000000000000C0
-:102ED00002000F00418071000000000000000000AF
-:102EE00002000F004280710000000000000000009E
-:102EF00002000F004380710000000000000000008D
-:102F000002000F004480710000000000000000007B
-:102F100002000F004580710000000000000000006A
-:102F200002000F0046807100000000000000000059
-:102F300002000F0047807100000000000000000048
-:102F400002000F0048807100000000000000000037
-:102F500002000F0049807100000000000000000026
-:102F600002000F004A807100000000000000000015
-:102F700002000F004B807100000000000000000004
-:102F800002000F004C8071000000000000000000F3
-:102F900002000F004D8071000000000000000000E2
-:102FA00002000F004E8071000000000000000000D1
-:102FB00002000F004F8071000000000000000000C0
-:102FC00002000F00508071000000000000000000AF
-:102FD00002000F005180710000000000000000009E
-:102FE00002000F005280710000000000000000008D
-:102FF00002000F005380710000000000000000007C
-:1030000002000F005480710000000000000000006A
-:1030100002000F0055807100000000000000000059
-:1030200002000F0056807100000000000000000048
-:1030300002000F0057807100000000000000000037
-:1030400002000F0058807100000000000000000026
-:1030500002000F0059807100000000000000000015
-:1030600002000F005A807100000000000000000004
-:1030700002000F005B8071000000000000000000F3
-:1030800002000F005C8071000000000000000000E2
-:1030900002000F005D8071000000000000000000D1
-:1030A00002000F005E8071000000000000000000C0
-:1030B00002000F005F8071000000000000000000AF
-:1030C00002000F00608071003F000000030000DF7D
-:1030D00002000F00618071002D000000810FE0DD13
-:1030E00002000F00628071003F000000830280DD5B
-:1030F00002000F00638071002D000000800104DDDC
-:1031000002000F00648071007D000000800015FD4A
-:1031100002000F00658071007A000000763B2010ED
-:1031200002000F00668071007A000000767B20307C
-:1031300002000F006780710021000000600024D0B1
-:1031400002000F00688071003F000000040100DDF4
-:1031500002000F00698071003F000000810240DD25
-:1031600002000F006A8071007900000003BB31DDAE
-:1031700002000F006B8071007900000004FB31DD5C
-:1031800002000F006C8071007900000076BB31DD19
-:1031900002000F006D8071007900000076FB31DDC8
-:1031A00002000F006E80710079000000010121FD16
-:1031B00002000F006F8071007D00000081402BFD38
-:1031C00002000F0070807100400000000230003DDE
-:1031D00002000F007180710048000000023B001DDA
-:1031E00002000F007280710079000000767B21DD03
-:1031F00002000F00738071002D0000007F0504DDC8
-:1032000002000F007480710018000000763B7F3DC3
-:1032100002000F00758071003D0000006F0080F714
-:1032200002000F00768071003D0000006F0080F703
-:1032300002000F00778071003D0000006F0080F7F2
-:1032400002000F007880710021000000761F37E334
-:1032500002000F007980710049000000793B00DD19
-:1032600002000F007A8071007900000076BB21DD3A
-:1032700002000F007B80710049000000793B00DDF7
-:1032800002000F007C8071007900000076BB21DD18
-:1032900002000F007D80710049000000793B00DDD5
-:1032A00002000F007E8071007900000076BB21DDF6
-:1032B00002000F007F80710079000000769060FDB1
-:1032C00002000F00808071007900000076FB21DD94
-:1032D00002000F00818071003F000000830000DFCA
-:1032E00002000F00828071003D0000006F0080F737
-:1032F00002000F0083807100000000000000000049
-:1033000002000F0084807100000000000000000037
-:1033100002000F0085807100000000000000000026
-:1033200002000F0086807100000000000000000015
-:1033300002000F0087807100000000000000000004
-:1033400002000F00888071000000000000000000F3
-:1033500002000F00898071000000000000000000E2
-:1033600002000F008A8071000000000000000000D1
-:1033700002000F008B8071000000000000000000C0
-:1033800002000F008C8071000000000000000000AF
-:1033900002000F008D80710000000000000000009E
-:1033A00002000F008E80710000000000000000008D
-:1033B00002000F008F80710000000000000000007C
-:1033C00002000F009080710000000000000000006B
-:1033D00002000F009180710000000000000000005A
-:1033E00002000F0092807100000000000000000049
-:1033F00002000F0093807100000000000000000038
-:1034000002000F0094807100000000000000000026
-:1034100002000F0095807100000000000000000015
-:1034200002000F0096807100000000000000000004
-:1034300002000F00978071000000000000000000F3
-:1034400002000F00988071000000000000000000E2
-:1034500002000F00998071000000000000000000D1
-:1034600002000F009A8071000000000000000000C0
-:1034700002000F009B8071000000000000000000AF
-:1034800002000F009C80710000000000000000009E
-:1034900002000F009D80710000000000000000008D
-:1034A00002000F009E80710000000000000000007C
-:1034B00002000F009F80710000000000000000006B
-:1034C00002000F00A08071002D000000030808D04A
-:1034D00002000F00A18071000800000076FBB521FA
-:1034E00002000F00A280710079000000810001DD60
-:1034F00002000F00A380710079000000028101DD4D
-:1035000002000F00A48071007D000000838001FD97
-:1035100002000F00A580710079000000763B90D07A
-:1035200002000F00A6807100490000007A3B58D0CD
-:1035300002000F00A780710049000000003B04D288
-:1035400002000F00A88071003D000000030040DD74
-:1035500002000F00A9807100240000006402003204
-:1035600002000F00AA8071003D00000003F87FDD1B
-:1035700002000F00AB807100290000007A0120D00A
-:1035800002000F00AC807100490000000E3BA4D087
-:1035900002000F00AD8071002D000000FF4204DD2D
-:1035A00002000F00AE80710018000000763B7F3DE6
-:1035B00002000F00AF8071002D000000820006DDC8
-:1035C00002000F00B080710038000000E001003000
-:1035D00002000F00B180710039000000600100D0CE
-:1035E00002000F00B2807100790000007C3BB1D175
-:1035F00002000F00B38071002D000000E30FE0DD3A
-:1036000002000F00B480710049000000E43080D057
-:1036100002000F00B5807100790000007C7B31DD75
-:1036200002000F00B6807100790000007C3B31DDA4
-:1036300002000F00B78071007D000000824037FD5E
-:1036400002000F00B880710008000000763B7D0189
-:1036500002000F00B98071003D0000006F0080F78C
-:1036600002000F00BA8071003D0000006F0080F77B
-:1036700002000F00BB80710049000000870300DDDD
-:1036800002000F00BC80710079000000080431DDE9
-:1036900002000F00BD807100790000007A7D31DDED
-:1036A00002000F00BE807100490000007C3B00D387
-:1036B00002000F00BF807100790000007CBB81D345
-:1036C00002000F00C08071007F0000007CB201D1B9
-:1036D00002000F00C18071004800000064320051F8
-:1036E00002000F00C28071003D000000030040DDB9
-:1036F00002000F00C38071000800000062319501D4
-:1037000002000F00C480710021000000660600D393
-:1037100002000F00C580710020000000E700805308
-:1037200002000F00C68071003F000000000800DDAD
-:1037300002000F00C78071007900000066B301DD50
-:1037400002000F00C880710079000000E7B301DDBE
-:1037500002000F00C980710075000000628601F14F
-:1037600002000F00CA8071007500000064B101D230
-:1037700002000F00CB80710078000000767B001DF6
-:1037800002000F00CC80710025000000E30100DD85
-:1037900002000F00CD807100080000006231B1010D
-:1037A00002000F00CE8071003D0000006F0080F726
-:1037B00002000F00CF8071003D0000006F0080F715
-:1037C00002000F00D08071003D0000006F0080F704
-:1037D00002000F00D180710021000000639F37E3D9
-:1037E00002000F00D2807100490000007C3B00D332
-:1037F00002000F00D3807100790000007CBB81D3F0
-:1038000002000F00D48071007F0000007CB201D163
-:1038100002000F00D58071004800000064320051A2
-:1038200002000F00D68071007500000064B101D263
-:1038300002000F00D780710078000000767B001D29
-:1038400002000F00D88071003F000000040000DD7E
-:1038500002000F00D98071007900000081C001DDF5
-:1038600002000F00DA80710079000000769060FDA0
-:1038700002000F00DB8071002D000000030808DD4E
-:1038800002000F00DC8071007800000081C0013D63
-:1038900002000F00DD8071003D0000006F0080F726
-:1038A00002000F00DE807100000000000000000038
-:1038B00002000F00DF807100000000000000000027
-:1038C00002000F00E0807100000000000000000016
-:1038D00002000F00E1807100000000000000000005
-:1038E00002000F00E28071000000000000000000F4
-:1038F00002000F00E38071000000000000000000E3
-:1039000002000F00E48071000000000000000000D1
-:1039100002000F00E58071000000000000000000C0
-:1039200002000F00E68071000000000000000000AF
-:1039300002000F00E780710000000000000000009E
-:1039400002000F00E880710049000000033B8ED1A7
-:1039500002000F00E98071002F000000E30081D118
-:1039600002000F00EA8071003F000000031880D1C0
-:1039700002000F00EB80710049000000033B04D1FE
-:1039800002000F00EC8071003F000000030280DDA8
-:1039900002000F00ED80710049000000023B04D2DC
-:1039A00002000F00EE80710049000000003B84D24D
-:1039B00002000F00EF80710025000000E20000DD32
-:1039C00002000F00F08071009400000062411300BB
-:1039D00002000F00F18071009400000062430B00B0
-:1039E00002000F00F280710094000000E248150010
-:1039F00002000F00F38071009400000062491B0078
-:103A000002000F00F48071009400000076402F0047
-:103A100002000F00F5807100090000007A3D81CF9F
-:103A200002000F00F68071001D000000E5802BFDF4
-:103A300002000F00F78071003000000063808331C6
-:103A400002000F00F88071003000000063808211D6
-:103A500002000F00F98071001D000000E58025FDC7
-:103A600002000F00FA807100300000006300833113
-:103A700002000F00FB807100300000006300821123
-:103A800002000F00FC8071002F000000E30081D1D4
-:103A900002000F00FD8071001D000000E58009FD9F
-:103AA00002000F00FE8071003000000063D38331FC
-:103AB00002000F00FF8071003000000063D283110C
-:103AC00002000F00008171002F000000E30081D18F
-:103AD00002000F00018171003F000000840180D6C8
-:103AE00002000F00028171003F000000010080D63B
-:103AF00002000F000381710035000000ED0080D648
-:103B000002000F0004817100180000008100FF37DF
-:103B100002000F000581710025000000640200D240
-:103B200002000F0006817100180000007AFD777D09
-:103B300002000F000781710049000000633B20DE96
-:103B400002000F000881710049000000793B80DE0F
-:103B500002000F000981710021000000E30080D104
-:103B600002000F000A817100090000007A3D81CF38
-:103B700002000F000B81710049000000E33100DDFD
-:103B800002000F000C81710069000000783B0EDD1F
-:103B900002000F000D81710061000000763B00DD26
-:103BA00002000F000E8171003F000000840100DD63
-:103BB00002000F000F8171003F000000010000DDD6
-:103BC00002000F001081710035000000FA0000DDD6
-:103BD00002000F001181710018000000763B7F3B4E
-:103BE00002000F00128171003D0000006F0080F79D
-:103BF00002000F00138171003D0000006F0080F78C
-:103C000002000F00148171003D0000006F0080F77A
-:103C100002000F001581710021000000E30080D137
-:103C200002000F001681710069000000793B04DD7D
-:103C300002000F001781710061000000E30080F1B5
-:103C400002000F00188171003F000000840180D63F
-:103C500002000F00198171003F000000010080D6B2
-:103C600002000F001A81710035000000ED0080D6BF
-:103C700002000F001B817100180000008100FF3757
-:103C800002000F001C81710025000000640200D2B8
-:103C900002000F001D8171009800000076BB5D607E
-:103CA00002000F001E817100090000007A3D81CFE3
-:103CB00002000F001F8171000000000000000000E2
-:103CC00002000F00208171000000000000000000D1
-:103CD00002000F00218171000000000000000000C0
-:103CE00002000F00228171000000000000000000AF
-:103CF00002000F002381710000000000000000009E
-:103D000002000F002481710000000000000000008C
-:103D100002000F002581710000000000000000007B
-:103D200002000F002681710000000000000000006A
-:103D300002000F0027817100000000000000000059
-:103D400002000F0028817100000000000000000048
-:103D500002000F0029817100000000000000000037
-:103D600002000F002A817100000000000000000026
-:103D700002000F002B817100000000000000000015
-:103D800002000F002C817100000000000000000004
-:103D900002000F002D8171000000000000000000F3
-:103DA00002000F002E8171000000000000000000E2
-:103DB00002000F002F8171000000000000000000D1
-:103DC00002000F00308171000000000000000000C0
-:103DD00002000F00318171000000000000000000AF
-:103DE00002000F003281710000000000000000009E
-:103DF00002000F003381710000000000000000008D
-:103E000002000F003481710000000000000000007B
-:103E100002000F003581710000000000000000006A
-:103E200002000F0036817100000000000000000059
-:103E300002000F0037817100000000000000000048
-:103E400002000F0038817100000000000000000037
-:103E500002000F0039817100000000000000000026
-:103E600002000F003A817100000000000000000015
-:103E700002000F003B817100000000000000000004
-:103E800002000F003C8171000000000000000000F3
-:103E900002000F003D8171000000000000000000E2
-:103EA00002000F003E8171000000000000000000D1
-:103EB00002000F003F8171000000000000000000C0
-:103EC00002000F004081710049000000013B08D44E
-:103ED00002000F0041817100090000007A3D8BC291
-:103EE00002000F00428171003F000000800300D4F7
-:103EF00002000F0043817100090000007A3D8BC26F
-:103F000002000F004481710049000000033B0ED401
-:103F100002000F00458171003F000000000042D602
-:103F200002000F00468171002F000000804081D206
-:103F300002000F00478171002D000000650384D24C
-:103F400002000F00488171003F000000800080D611
-:103F500002000F00498171003F000000040004DDF1
-:103F600002000F004A8171003F000000010018DDCF
-:103F700002000F004B817100690000006D3B00DD05
-:103F800002000F004C817100690000006D3B00DDF4
-:103F900002000F004D8171003100000065D203D393
-:103FA00002000F004E81710049000000663B40DEB8
-:103FB00002000F004F8171003F000000840180D695
-:103FC00002000F00508171003F000000010080D608
-:103FD00002000F005181710035000000ED0080D615
-:103FE00002000F0052817100180000008100FF37AD
-:103FF00002000F0053817100490000007E3B80D514
-:1040000002000F005481710021000000E60040DE34
-:1040100002000F00558171003F000000840180D62E
-:1040200002000F00568171003F000000010080D6A1
-:1040300002000F005781710035000000ED0080D6AE
-:1040400002000F0058817100180000008100FF3746
-:1040500002000F0059817100490000007E3B00D52D
-:1040600002000F005A81710079000000763B01DDEB
-:1040700002000F005B8171002D0000007F4004DD15
-:1040800002000F005C81710018000000763B7F3D4C
-:1040900002000F005D8171007900000076BB01DD38
-:1040A00002000F005E81710075000000E88001FDD4
-:1040B00002000F005F81710094000000684115004C
-:1040C00002000F006081710094000000E8442500A8
-:1040D00002000F006181710094000000E84123009C
-:1040E00002000F0062817100940000006845170013
-:1040F00002000F0063817100940000006842150007
-:1041000002000F006481710094000000E842270063
-:1041100002000F00658171009400000068432D00CB
-:1041200002000F00668171009400000068442D00B9
-:1041300002000F006781710094000000E843330023
-:1041400002000F006881710004000000763B9703B5
-:1041500002000F00698171000D00000065C10DE3D0
-:1041600002000F006A817100300000007600033207
-:1041700002000F006B817100300000007600021217
-:1041800002000F006C8171003F000000000080D42D
-:1041900002000F006D8171003F000000008080D19F
-:1041A00002000F006E8171000D00000065C13FE349
-:1041B00002000F006F817100300000007660043251
-:1041C00002000F0070817100300000007640041280
-:1041D00002000F00718171003F000000008082D456
-:1041E00002000F00728171003F000000008080D14A
-:1041F00002000F00738171000D00000065C13FE3F4
-:1042000002000F007481710030000000762004323B
-:1042100002000F007581710030000000760004126A
-:1042200002000F00768171003F000000000082D480
-:1042300002000F00778171000D00000065C163E38B
-:1042400002000F00788171003000000076200332F8
-:1042500002000F0079817100300000007600031227
-:1042600002000F007A8171003F000000000083D43B
-:1042700002000F007B81710049000000763B80D274
-:1042800002000F007C8171000D00000065C10DE38C
-:1042900002000F007D817100300000007680033243
-:1042A00002000F007E817100300000007680021253
-:1042B00002000F007F8171003F000000000081D4E8
-:1042C00002000F00808171003F000000000002D654
-:1042D00002000F00818171003F000000000081D1C9
-:1042E00002000F00828171000D00000065C13FE3F4
-:1042F00002000F008381710030000000762004323C
-:1043000002000F008481710030000000760004126A
-:1043100002000F00858171003F000000000082D480
-:1043200002000F008681710041000000EB3480D450
-:1043300002000F0087817100790000006ABB01DD77
-:1043400002000F00888171007900000076BB01DD5A
-:1043500002000F00898171003F000000031800D2A5
-:1043600002000F008A8171003F000000000081D12F
-:1043700002000F008B81710075000000638001FD59
-:1043800002000F008C81710098000000643B69807E
-:1043900002000F008D81710051000000E40000F266
-:1043A00002000F008E8171003F000000840180D662
-:1043B00002000F008F8171003F000000010080D6D5
-:1043C00002000F009081710035000000ED0080D6E2
-:1043D00002000F0091817100180000008100FF377A
-:1043E00002000F00928171002D0000007F4004DD6B
-:1043F00002000F009381710018000000763B7F3DA2
-:1044000002000F009481710049000000383BC0D3C6
-:1044100002000F009581710049000000643B00DD3F
-:1044200002000F009681710051000000E40000F2CC
-:1044300002000F00978171003F000000840180D6C8
-:1044400002000F00988171003F000000010080D63B
-:1044500002000F009981710035000000ED0080D648
-:1044600002000F009A817100180000008100FF37E0
-:1044700002000F009B81710049000000383BA0D36F
-:1044800002000F009C8171001900000076BB61DD05
-:1044900002000F009D81710049000000673B00DDB4
-:1044A00002000F009E81710075000000638281F19F
-:1044B00002000F009F81710041000000EB3480D4A6
-:1044C00002000F00A0817100790000006ABB01DDCD
-:1044D00002000F00A18171007900000076BB01DDB0
-:1044E00002000F00A28171003F000000031800D2FB
-:1044F00002000F00A38171003F000000008080D106
-:1045000002000F00A481710075000000638001FDAE
-:1045100002000F00A581710098000000643B378005
-:1045200002000F00A681710051000000E40000F2BB
-:1045300002000F00A78171003F000000840180D6B7
-:1045400002000F00A88171003F000000010080D62A
-:1045500002000F00A981710035000000ED0080D637
-:1045600002000F00AA817100180000008100FF37CF
-:1045700002000F00AB8171002D0000007F4004DDC0
-:1045800002000F00AC81710018000000763B7F3DF7
-:1045900002000F00AD81710049000000383B80D35C
-:1045A00002000F00AE8171001900000076BB6FDDC4
-:1045B00002000F00AF81710049000000673B00DD81
-:1045C00002000F00B081710075000000638281F16C
-:1045D00002000F00B181710041000000EB3480D473
-:1045E00002000F00B2817100790000006ABB01DD9A
-:1045F00002000F00B38171007900000063BB01DD90
-:1046000002000F00B481710075000000638001FD9D
-:1046100002000F00B581710098000000643B178014
-:1046200002000F00B681710049000000643B40DECB
-:1046300002000F00B78171003F000000840180D6A6
-:1046400002000F00B88171003F000000010080D619
-:1046500002000F00B981710035000000ED0080D626
-:1046600002000F00BA817100180000008100FF37BE
-:1046700002000F00BB8171002D0000007F4004DDAF
-:1046800002000F00BC81710018000000763B7F3DE6
-:1046900002000F00BD81710021000000E40000D283
-:1046A00002000F00BE817100190000007E7BEFD375
-:1046B00002000F00BF81710075000000638281F16C
-:1046C00002000F00C08171003F000000000080D692
-:1046D00002000F00C18171003F000000040004DDF2
-:1046E00002000F00C28171003F000000010018DDD0
-:1046F00002000F00C3817100690000006D3B00DD06
-:1047000002000F00C4817100690000006D3B00DDF4
-:1047100002000F00C58171003F000000000000DDB5
-:1047200002000F00C68171002D000000800154DDE1
-:1047300002000F00C7817100790000007680E0F36D
-:1047400002000F00C8817100490000007A3600D6CF
-:1047500002000F00C98171007900000076FB01DDC5
-:1047600002000F00CA8171003D0000006F0080F759
-:1047700002000F00CB81710049000000033B00DD07
-:1047800002000F00CC81710059000000763B00FD53
-:1047900002000F00CD8171003F000000031C80DD8E
-:1047A00002000F00CE8171003D0000006F0080F715
-:1047B00002000F00CF8171003D0000006F0080F704
-:1047C00002000F00D08171003D0000006F0080F7F3
-:1047D00002000F00D18171002D0000007F0206DD74
-:1047E00002000F00D2817100180000007A3D7F1D89
-:1047F00002000F00D3817100310000006B8883D468
-:1048000002000F00D4817100790000006ABB01DD55
-:1048100002000F00D581710079000000769081F1CF
-:1048200002000F00D681710075000000638001FD59
-:1048300002000F00D78171009800000076BB538002
-:1048400002000F00D881710019000000797B7FDD24
-:1048500002000F00D981710075000000638281F1B0
-:1048600002000F00DA81710000000000000000006B
-:1048700002000F00DB81710000000000000000005A
-:1048800002000F00DC817100000000000000000049
-:1048900002000F00DD817100000000000000000038
-:1048A00002000F00DE817100000000000000000027
-:1048B00002000F00DF817100000000000000000016
-:1048C00002000F00E0817100000000000000000005
-:1048D00002000F00E18171000000000000000000F4
-:1048E00002000F00E28171000000000000000000E3
-:1048F00002000F00E38171000000000000000000D2
-:1049000002000F00E48171000000000000000000C0
-:1049100002000F00E58171000000000000000000AF
-:1049200002000F00E681710000000000000000009E
-:1049300002000F00E781710000000000000000008D
-:1049400002000F00E881710000000000000000007C
-:1049500002000F00E981710000000000000000006B
-:1049600002000F00EA81710000000000000000005A
-:1049700002000F00EB817100000000000000000049
-:1049800002000F00EC817100000000000000000038
-:1049900002000F00ED817100000000000000000027
-:1049A00002000F00EE817100000000000000000016
-:1049B00002000F00EF817100000000000000000005
-:1049C00002000F00F08171000000000000000000F4
-:1049D00002000F00F18171000000000000000000E3
-:1049E00002000F00F28171000000000000000000D2
-:1049F00002000F00F38171000000000000000000C1
-:104A000002000F00F48171000000000000000000AF
-:104A100002000F00F581710000000000000000009E
-:104A200002000F00F681710000000000000000008D
-:104A300002000F00F781710000000000000000007C
-:104A400002000F00F881710000000000000000006B
-:104A500002000F00F981710000000000000000005A
-:104A600002000F00FA817100000000000000000049
-:104A700002000F00FB817100000000000000000038
-:104A800002000F00FC817100000000000000000027
-:104A900002000F00FD817100000000000000000016
-:104AA00002000F00FE8171003F000000030280DD64
-:104AB00002000F00FF81710049000000023B84D119
-:104AC00002000F000082710049000000033B00DD7E
-:104AD00002000F0001827100690000007A3B00DDD6
-:104AE00002000F000282710049000000793B00DDE6
-:104AF00002000F000382710065000000630280F174
-:104B000002000F000482710018000000763B7D7DDA
-:104B100002000F0005827100090000007A3D81CF7C
-:104B200002000F000682710000000000000000007B
-:104B300002000F000782710000000000000000006A
-:104B400002000F0008827100000000000000000059
-:104B500002000F0009827100000000000000000048
-:104B600002000F000A827100000000000000000037
-:104B700002000F000B827100000000000000000026
-:104B800002000F000C827100000000000000000015
-:104B900002000F000D827100000000000000000004
-:104BA00002000F000E8271000000000000000000F3
-:104BB00002000F000F8271000000000000000000E2
-:104BC00002000F00108271000000000000000000D1
-:104BD00002000F00118271000000000000000000C0
-:104BE00002000F00128271000000000000000000AF
-:104BF00002000F001382710000000000000000009E
-:104C000002000F001482710000000000000000008C
-:104C100002000F001582710000000000000000007B
-:104C200002000F001682710000000000000000006A
-:104C300002000F0017827100000000000000000059
-:104C400002000F0018827100000000000000000048
-:104C500002000F0019827100000000000000000037
-:104C600002000F001A827100000000000000000026
-:104C700002000F001B827100000000000000000015
-:104C800002000F001C827100000000000000000004
-:104C900002000F001D8271000000000000000000F3
-:104CA00002000F001E8271000000000000000000E2
-:104CB00002000F001F8271000000000000000000D1
-:104CC00002000F00208271000000000000000000C0
-:104CD00002000F00218271000000000000000000AF
-:104CE00002000F002282710000000000000000009E
-:104CF00002000F002382710000000000000000008D
-:104D000002000F002482710000000000000000007B
-:104D100002000F002582710000000000000000006A
-:104D200002000F0026827100000000000000000059
-:104D300002000F0027827100000000000000000048
-:104D400002000F0028827100000000000000000037
-:104D500002000F0029827100000000000000000026
-:104D600002000F002A827100000000000000000015
-:104D700002000F002B827100000000000000000004
-:104D800002000F002C8271000000000000000000F3
-:104D900002000F002D8271000000000000000000E2
-:104DA00002000F002E8271000000000000000000D1
-:104DB00002000F002F8271000000000000000000C0
-:104DC00002000F00308271000000000000000000AF
-:104DD00002000F003182710000000000000000009E
-:104DE00002000F003282710000000000000000008D
-:104DF00002000F003382710000000000000000007C
-:104E000002000F003482710000000000000000006A
-:104E100002000F0035827100000000000000000059
-:104E200002000F0036827100000000000000000048
-:104E300002000F0037827100000000000000000037
-:104E400002000F0038827100000000000000000026
-:104E500002000F0039827100000000000000000015
-:104E600002000F003A827100000000000000000004
-:104E700002000F003B8271000000000000000000F3
-:104E800002000F003C8271000000000000000000E2
-:104E900002000F003D8271000000000000000000D1
-:104EA00002000F003E8271000000000000000000C0
-:104EB00002000F003F8271000000000000000000AF
-:104EC00002000F004082710000000000000000009E
-:104ED00002000F004182710000000000000000008D
-:104EE00002000F004282710000000000000000007C
-:104EF00002000F004382710000000000000000006B
-:104F000002000F0044827100000000000000000059
-:104F100002000F0045827100000000000000000048
-:104F200002000F0046827100000000000000000037
-:104F300002000F0047827100000000000000000026
-:104F400002000F0048827100000000000000000015
-:104F500002000F0049827100000000000000000004
-:104F600002000F004A8271000000000000000000F3
-:104F700002000F004B8271000000000000000000E2
-:104F800002000F004C8271000000000000000000D1
-:104F900002000F004D8271000000000000000000C0
-:104FA00002000F004E8271000000000000000000AF
-:104FB00002000F004F82710000000000000000009E
-:104FC00002000F005082710000000000000000008D
-:104FD00002000F005182710000000000000000007C
-:104FE00002000F005282710000000000000000006B
-:104FF00002000F005382710000000000000000005A
-:1050000002000F0054827100000000000000000048
-:1050100002000F0055827100000000000000000037
-:1050200002000F0056827100000000000000000026
-:1050300002000F0057827100000000000000000015
-:1050400002000F0058827100000000000000000004
-:1050500002000F00598271000000000000000000F3
-:1050600002000F005A8271000000000000000000E2
-:1050700002000F005B8271000000000000000000D1
-:1050800002000F005C8271000000000000000000C0
-:1050900002000F005D8271000000000000000000AF
-:1050A00002000F005E82710000000000000000009E
-:1050B00002000F005F82710000000000000000008D
-:1050C00002000F006082710000000000000000007C
-:1050D00002000F006182710000000000000000006B
-:1050E00002000F006282710000000000000000005A
-:1050F00002000F0063827100000000000000000049
-:1051000002000F0064827100000000000000000037
-:1051100002000F0065827100000000000000000026
-:1051200002000F0066827100000000000000000015
-:1051300002000F0067827100000000000000000004
-:1051400002000F00688271000000000000000000F3
-:1051500002000F00698271000000000000000000E2
-:1051600002000F006A8271000000000000000000D1
-:1051700002000F006B8271000000000000000000C0
-:1051800002000F006C8271000000000000000000AF
-:1051900002000F006D82710000000000000000009E
-:1051A00002000F006E82710000000000000000008D
-:1051B00002000F006F82710000000000000000007C
-:1051C00002000F007082710000000000000000006B
-:1051D00002000F007182710000000000000000005A
-:1051E00002000F0072827100000000000000000049
-:1051F00002000F0073827100000000000000000038
-:1052000002000F0074827100000000000000000026
-:1052100002000F0075827100000000000000000015
-:1052200002000F0076827100000000000000000004
-:1052300002000F00778271000000000000000000F3
-:1052400002000F00788271000000000000000000E2
-:1052500002000F00798271000000000000000000D1
-:1052600002000F007A8271000000000000000000C0
-:1052700002000F007B8271000000000000000000AF
-:1052800002000F007C82710000000000000000009E
-:1052900002000F007D82710000000000000000008D
-:1052A00002000F007E82710000000000000000007C
-:1052B00002000F007F82710000000000000000006B
-:1052C00002000F008082710000000000000000005A
-:1052D00002000F0081827100000000000000000049
-:1052E00002000F0082827100000000000000000038
-:1052F00002000F0083827100000000000000000027
-:1053000002000F0084827100000000000000000015
-:1053100002000F0085827100000000000000000004
-:1053200002000F00868271000000000000000000F3
-:1053300002000F00878271000000000000000000E2
-:1053400002000F00888271000000000000000000D1
-:1053500002000F00898271000000000000000000C0
-:1053600002000F008A8271000000000000000000AF
-:1053700002000F008B82710000000000000000009E
-:1053800002000F008C82710000000000000000008D
-:1053900002000F008D82710000000000000000007C
-:1053A00002000F008E82710000000000000000006B
-:1053B00002000F008F82710000000000000000005A
-:1053C00002000F0090827100000000000000000049
-:1053D00002000F0091827100000000000000000038
-:1053E00002000F0092827100000000000000000027
-:1053F00002000F0093827100000000000000000016
-:1054000002000F0094827100000000000000000004
-:1054100002000F00958271000000000000000000F3
-:1054200002000F00968271000000000000000000E2
-:1054300002000F00978271000000000000000000D1
-:1054400002000F00988271000000000000000000C0
-:1054500002000F00998271000000000000000000AF
-:1054600002000F009A82710000000000000000009E
-:1054700002000F009B82710000000000000000008D
-:1054800002000F009C82710000000000000000007C
-:1054900002000F009D82710000000000000000006B
-:1054A00002000F009E82710000000000000000005A
-:1054B00002000F009F827100000000000000000049
-:1054C00002000F00A0827100000000000000000038
-:1054D00002000F00A1827100000000000000000027
-:1054E00002000F00A2827100000000000000000016
-:1054F00002000F00A3827100000000000000000005
-:1055000002000F00A48271000000000000000000F3
-:1055100002000F00A58271000000000000000000E2
-:1055200002000F00A68271000000000000000000D1
-:1055300002000F00A78271000000000000000000C0
-:1055400002000F00A88271000000000000000000AF
-:1055500002000F00A982710000000000000000009E
-:1055600002000F00AA82710000000000000000008D
-:1055700002000F00AB82710000000000000000007C
-:1055800002000F00AC82710000000000000000006B
-:1055900002000F00AD82710000000000000000005A
-:1055A00002000F00AE827100000000000000000049
-:1055B00002000F00AF827100000000000000000038
-:1055C00002000F00B0827100000000000000000027
-:1055D00002000F00B1827100000000000000000016
-:1055E00002000F00B2827100000000000000000005
-:1055F00002000F00B38271000000000000000000F4
-:1056000002000F00B48271000000000000000000E2
-:1056100002000F00B58271000000000000000000D1
-:1056200002000F00B68271000000000000000000C0
-:1056300002000F00B78271000000000000000000AF
-:1056400002000F00B882710000000000000000009E
-:1056500002000F00B982710000000000000000008D
-:1056600002000F00BA82710000000000000000007C
-:1056700002000F00BB82710000000000000000006B
-:1056800002000F00BC82710000000000000000005A
-:1056900002000F00BD827100000000000000000049
-:1056A00002000F00BE827100000000000000000038
-:1056B00002000F00BF827100000000000000000027
-:1056C00002000F00C0827100000000000000000016
-:1056D00002000F00C1827100000000000000000005
-:1056E00002000F00C28271000000000000000000F4
-:1056F00002000F00C38271000000000000000000E3
-:1057000002000F00C48271000000000000000000D1
-:1057100002000F00C58271000000000000000000C0
-:1057200002000F00C68271000000000000000000AF
-:1057300002000F00C782710000000000000000009E
-:1057400002000F00C882710000000000000000008D
-:1057500002000F00C982710000000000000000007C
-:1057600002000F00CA82710000000000000000006B
-:1057700002000F00CB82710000000000000000005A
-:1057800002000F00CC827100000000000000000049
-:1057900002000F00CD827100000000000000000038
-:1057A00002000F00CE827100000000000000000027
-:1057B00002000F00CF827100000000000000000016
-:1057C00002000F00D0827100000000000000000005
-:1057D00002000F00D18271000000000000000000F4
-:1057E00002000F00D28271000000000000000000E3
-:1057F00002000F00D38271000000000000000000D2
-:1058000002000F00D48271000000000000000000C0
-:1058100002000F00D58271000000000000000000AF
-:1058200002000F00D682710000000000000000009E
-:1058300002000F00D782710000000000000000008D
-:1058400002000F00D882710000000000000000007C
-:1058500002000F00D982710000000000000000006B
-:1058600002000F00DA82710000000000000000005A
-:1058700002000F00DB827100000000000000000049
-:1058800002000F00DC827100000000000000000038
-:1058900002000F00DD827100000000000000000027
-:1058A00002000F00DE827100000000000000000016
-:1058B00002000F00DF827100000000000000000005
-:1058C00002000F00E08271000000000000000000F4
-:1058D00002000F00E18271000000000000000000E3
-:1058E00002000F00E28271000000000000000000D2
-:1058F00002000F00E38271000000000000000000C1
-:1059000002000F00E48271000000000000000000AF
-:1059100002000F00E582710000000000000000009E
-:1059200002000F00E682710000000000000000008D
-:1059300002000F00E782710000000000000000007C
-:1059400002000F00E882710000000000000000006B
-:1059500002000F00E982710000000000000000005A
-:1059600002000F00EA827100000000000000000049
-:1059700002000F00EB827100000000000000000038
-:1059800002000F00EC827100000000000000000027
-:1059900002000F00ED827100000000000000000016
-:1059A00002000F00EE827100000000000000000005
-:1059B00002000F00EF8271000000000000000000F4
-:1059C00002000F00F08271000000000000000000E3
-:1059D00002000F00F18271000000000000000000D2
-:1059E00002000F00F28271000000000000000000C1
-:1059F00002000F00F38271000000000000000000B0
-:105A000002000F00F482710000000000000000009E
-:105A100002000F00F582710000000000000000008D
-:105A200002000F00F682710000000000000000007C
-:105A300002000F00F782710000000000000000006B
-:105A400002000F00F882710000000000000000005A
-:105A500002000F00F9827100000000000000000049
-:105A600002000F00FA827100000000000000000038
-:105A700002000F00FB827100000000000000000027
-:105A800002000F00FC827100000000000000000016
-:105A900002000F00FD827100000000000000000005
-:105AA00002000F00FE8271000000000000000000F4
-:105AB00002000F00FF8271000000000000000000E3
-:105AC00002000F00008371000000000000000000D1
-:105AD00002000F00018371000000000000000000C0
-:105AE00002000F00028371000000000000000000AF
-:105AF00002000F000383710000000000000000009E
-:105B000002000F000483710000000000000000008C
-:105B100002000F000583710000000000000000007B
-:105B200002000F000683710000000000000000006A
-:105B300002000F0007837100000000000000000059
-:105B400002000F0008837100000000000000000048
-:105B500002000F0009837100000000000000000037
-:105B600002000F000A837100000000000000000026
-:105B700002000F000B837100000000000000000015
-:105B800002000F000C837100000000000000000004
-:105B900002000F000D8371000000000000000000F3
-:105BA00002000F000E8371000000000000000000E2
-:105BB00002000F000F8371000000000000000000D1
-:105BC00002000F00108371000000000000000000C0
-:105BD00002000F00118371000000000000000000AF
-:105BE00002000F001283710000000000000000009E
-:105BF00002000F001383710000000000000000008D
-:105C000002000F001483710000000000000000007B
-:105C100002000F001583710000000000000000006A
-:105C200002000F0016837100000000000000000059
-:105C300002000F0017837100000000000000000048
-:105C400002000F0018837100000000000000000037
-:105C500002000F0019837100000000000000000026
-:105C600002000F001A837100000000000000000015
-:105C700002000F001B837100000000000000000004
-:105C800002000F001C8371000000000000000000F3
-:105C900002000F001D8371000000000000000000E2
-:105CA00002000F001E8371000000000000000000D1
-:105CB00002000F001F8371000000000000000000C0
-:105CC00002000F00208371000000000000000000AF
-:105CD00002000F002183710000000000000000009E
-:105CE00002000F002283710000000000000000008D
-:105CF00002000F002383710000000000000000007C
-:105D000002000F002483710000000000000000006A
-:105D100002000F0025837100000000000000000059
-:105D200002000F0026837100000000000000000048
-:105D300002000F0027837100000000000000000037
-:105D400002000F0028837100000000000000000026
-:105D500002000F0029837100000000000000000015
-:105D600002000F002A837100000000000000000004
-:105D700002000F002B8371000000000000000000F3
-:105D800002000F002C8371000000000000000000E2
-:105D900002000F002D8371000000000000000000D1
-:105DA00002000F002E8371000000000000000000C0
-:105DB00002000F002F8371000000000000000000AF
-:105DC00002000F003083710000000000000000009E
-:105DD00002000F003183710000000000000000008D
-:105DE00002000F003283710000000000000000007C
-:105DF00002000F003383710000000000000000006B
-:105E000002000F0034837100000000000000000059
-:105E100002000F0035837100000000000000000048
-:105E200002000F0036837100000000000000000037
-:105E300002000F0037837100000000000000000026
-:105E400002000F0038837100000000000000000015
-:105E500002000F0039837100000000000000000004
-:105E600002000F003A8371000000000000000000F3
-:105E700002000F003B8371000000000000000000E2
-:105E800002000F003C8371000000000000000000D1
-:105E900002000F003D8371000000000000000000C0
-:105EA00002000F003E8371000000000000000000AF
-:105EB00002000F003F83710000000000000000009E
-:105EC00002000F004083710000000000000000008D
-:105ED00002000F004183710000000000000000007C
-:105EE00002000F004283710000000000000000006B
-:105EF00002000F004383710000000000000000005A
-:105F000002000F0044837100000000000000000048
-:105F100002000F0045837100000000000000000037
-:105F200002000F0046837100000000000000000026
-:105F300002000F0047837100000000000000000015
-:105F400002000F0048837100000000000000000004
-:105F500002000F00498371000000000000000000F3
-:105F600002000F004A8371000000000000000000E2
-:105F700002000F004B8371000000000000000000D1
-:105F800002000F004C8371000000000000000000C0
-:105F900002000F004D8371000000000000000000AF
-:105FA00002000F004E83710000000000000000009E
-:105FB00002000F004F83710000000000000000008D
-:105FC00002000F005083710000000000000000007C
-:105FD00002000F005183710000000000000000006B
-:105FE00002000F005283710000000000000000005A
-:105FF00002000F0053837100000000000000000049
-:1060000002000F0054837100000000000000000037
-:1060100002000F0055837100000000000000000026
-:1060200002000F0056837100000000000000000015
-:1060300002000F0057837100000000000000000004
-:1060400002000F00588371000000000000000000F3
-:1060500002000F00598371000000000000000000E2
-:1060600002000F005A8371000000000000000000D1
-:1060700002000F005B8371000000000000000000C0
-:1060800002000F005C8371000000000000000000AF
-:1060900002000F005D83710000000000000000009E
-:1060A00002000F005E83710000000000000000008D
-:1060B00002000F005F83710000000000000000007C
-:1060C00002000F006083710000000000000000006B
-:1060D00002000F006183710000000000000000005A
-:1060E00002000F0062837100000000000000000049
-:1060F00002000F0063837100000000000000000038
-:1061000002000F0064837100000000000000000026
-:1061100002000F0065837100000000000000000015
-:1061200002000F0066837100000000000000000004
-:1061300002000F00678371000000000000000000F3
-:1061400002000F00688371000000000000000000E2
-:1061500002000F00698371000000000000000000D1
-:1061600002000F006A8371000000000000000000C0
-:1061700002000F006B8371000000000000000000AF
-:1061800002000F006C83710000000000000000009E
-:1061900002000F006D83710000000000000000008D
-:1061A00002000F006E83710000000000000000007C
-:1061B00002000F006F83710000000000000000006B
-:1061C00002000F007083710000000000000000005A
-:1061D00002000F0071837100000000000000000049
-:1061E00002000F0072837100000000000000000038
-:1061F00002000F0073837100000000000000000027
-:1062000002000F0074837100000000000000000015
-:1062100002000F0075837100000000000000000004
-:1062200002000F00768371000000000000000000F3
-:1062300002000F00778371000000000000000000E2
-:1062400002000F00788371000000000000000000D1
-:1062500002000F00798371000000000000000000C0
-:1062600002000F007A8371000000000000000000AF
-:1062700002000F007B83710000000000000000009E
-:1062800002000F007C83710000000000000000008D
-:1062900002000F007D83710000000000000000007C
-:1062A00002000F007E83710000000000000000006B
-:1062B00002000F007F83710000000000000000005A
-:1062C00002000F0080837100000000000000000049
-:1062D00002000F0081837100000000000000000038
-:1062E00002000F0082837100000000000000000027
-:1062F00002000F0083837100000000000000000016
-:1063000002000F0084837100000000000000000004
-:1063100002000F00858371000000000000000000F3
-:1063200002000F00868371000000000000000000E2
-:1063300002000F00878371000000000000000000D1
-:1063400002000F00888371000000000000000000C0
-:1063500002000F00898371000000000000000000AF
-:1063600002000F008A83710000000000000000009E
-:1063700002000F008B83710000000000000000008D
-:1063800002000F008C83710000000000000000007C
-:1063900002000F008D83710000000000000000006B
-:1063A00002000F008E83710000000000000000005A
-:1063B00002000F008F837100000000000000000049
-:1063C00002000F0090837100000000000000000038
-:1063D00002000F0091837100000000000000000027
-:1063E00002000F0092837100000000000000000016
-:1063F00002000F0093837100000000000000000005
-:1064000002000F00948371000000000000000000F3
-:1064100002000F00958371000000000000000000E2
-:1064200002000F00968371000000000000000000D1
-:1064300002000F00978371000000000000000000C0
-:1064400002000F00988371000000000000000000AF
-:1064500002000F009983710000000000000000009E
-:1064600002000F009A83710000000000000000008D
-:1064700002000F009B83710000000000000000007C
-:1064800002000F009C83710000000000000000006B
-:1064900002000F009D83710000000000000000005A
-:1064A00002000F009E837100000000000000000049
-:1064B00002000F009F837100000000000000000038
-:1064C00002000F00A0837100000000000000000027
-:1064D00002000F00A1837100000000000000000016
-:1064E00002000F00A2837100000000000000000005
-:1064F00002000F00A38371000000000000000000F4
-:1065000002000F00A48371000000000000000000E2
-:1065100002000F00A58371000000000000000000D1
-:1065200002000F00A68371000000000000000000C0
-:1065300002000F00A78371000000000000000000AF
-:1065400002000F00A883710000000000000000009E
-:1065500002000F00A983710000000000000000008D
-:1065600002000F00AA83710000000000000000007C
-:1065700002000F00AB83710000000000000000006B
-:1065800002000F00AC83710000000000000000005A
-:1065900002000F00AD837100000000000000000049
-:1065A00002000F00AE837100000000000000000038
-:1065B00002000F00AF837100000000000000000027
-:1065C00002000F00B0837100000000000000000016
-:1065D00002000F00B1837100000000000000000005
-:1065E00002000F00B28371000000000000000000F4
-:1065F00002000F00B38371000000000000000000E3
-:1066000002000F00B48371000000000000000000D1
-:1066100002000F00B58371000000000000000000C0
-:1066200002000F00B68371000000000000000000AF
-:1066300002000F00B783710000000000000000009E
-:1066400002000F00B883710000000000000000008D
-:1066500002000F00B983710000000000000000007C
-:1066600002000F00BA83710000000000000000006B
-:1066700002000F00BB83710000000000000000005A
-:1066800002000F00BC837100000000000000000049
-:1066900002000F00BD837100000000000000000038
-:1066A00002000F00BE837100000000000000000027
-:1066B00002000F00BF837100000000000000000016
-:1066C00002000F00C0837100000000000000000005
-:1066D00002000F00C18371000000000000000000F4
-:1066E00002000F00C28371000000000000000000E3
-:1066F00002000F00C38371000000000000000000D2
-:1067000002000F00C48371000000000000000000C0
-:1067100002000F00C58371000000000000000000AF
-:1067200002000F00C683710000000000000000009E
-:1067300002000F00C783710000000000000000008D
-:1067400002000F00C883710000000000000000007C
-:1067500002000F00C983710000000000000000006B
-:1067600002000F00CA83710000000000000000005A
-:1067700002000F00CB837100000000000000000049
-:1067800002000F00CC837100000000000000000038
-:1067900002000F00CD837100000000000000000027
-:1067A00002000F00CE837100000000000000000016
-:1067B00002000F00CF837100000000000000000005
-:1067C00002000F00D08371000000000000000000F4
-:1067D00002000F00D18371000000000000000000E3
-:1067E00002000F00D28371000000000000000000D2
-:1067F00002000F00D38371000000000000000000C1
-:1068000002000F00D48371000000000000000000AF
-:1068100002000F00D583710000000000000000009E
-:1068200002000F00D683710000000000000000008D
-:1068300002000F00D783710000000000000000007C
-:1068400002000F00D883710000000000000000006B
-:1068500002000F00D983710000000000000000005A
-:1068600002000F00DA837100000000000000000049
-:1068700002000F00DB837100000000000000000038
-:1068800002000F00DC837100000000000000000027
-:1068900002000F00DD837100000000000000000016
-:1068A00002000F00DE837100000000000000000005
-:1068B00002000F00DF8371000000000000000000F4
-:1068C00002000F00E08371000000000000000000E3
-:1068D00002000F00E18371000000000000000000D2
-:1068E00002000F00E28371000000000000000000C1
-:1068F00002000F00E38371000000000000000000B0
-:1069000002000F00E483710000000000000000009E
-:1069100002000F00E583710000000000000000008D
-:1069200002000F00E683710000000000000000007C
-:1069300002000F00E783710000000000000000006B
-:1069400002000F00E883710000000000000000005A
-:1069500002000F00E9837100000000000000000049
-:1069600002000F00EA837100000000000000000038
-:1069700002000F00EB837100000000000000000027
-:1069800002000F00EC837100000000000000000016
-:1069900002000F00ED837100000000000000000005
-:1069A00002000F00EE8371000000000000000000F4
-:1069B00002000F00EF8371000000000000000000E3
-:1069C00002000F00F08371000000000000000000D2
-:1069D00002000F00F18371000000000000000000C1
-:1069E00002000F00F28371000000000000000000B0
-:1069F00002000F00F383710000000000000000009F
-:106A000002000F00F483710000000000000000008D
-:106A100002000F00F583710000000000000000007C
-:106A200002000F00F683710000000000000000006B
-:106A300002000F00F783710000000000000000005A
-:106A400002000F00F8837100000000000000000049
-:106A500002000F00F9837100000000000000000038
-:106A600002000F00FA837100000000000000000027
-:106A700002000F00FB837100000000000000000016
-:106A800002000F00FC837100000000000000000005
-:106A900002000F00FD8371000000000000000000F4
-:106AA00002000F00FE8371000000000000000000E3
-:106AB00002000F00FF8371000000000000000000D2
-:106AC00002000F00008471000000000000000000C0
-:106AD00002000F00018471000000000000000000AF
-:106AE00002000F000284710000000000000000009E
-:106AF00002000F000384710000000000000000008D
-:106B000002000F000484710000000000000000007B
-:106B100002000F000584710000000000000000006A
-:106B200002000F0006847100000000000000000059
-:106B300002000F0007847100000000000000000048
-:106B400002000F0008847100000000000000000037
-:106B500002000F0009847100000000000000000026
-:106B600002000F000A847100000000000000000015
-:106B700002000F000B847100000000000000000004
-:106B800002000F000C8471000000000000000000F3
-:106B900002000F000D8471000000000000000000E2
-:106BA00002000F000E8471000000000000000000D1
-:106BB00002000F000F8471000000000000000000C0
-:106BC00002000F00108471000000000000000000AF
-:106BD00002000F001184710000000000000000009E
-:106BE00002000F001284710000000000000000008D
-:106BF00002000F001384710000000000000000007C
-:106C000002000F001484710000000000000000006A
-:106C100002000F0015847100000000000000000059
-:106C200002000F0016847100000000000000000048
-:106C300002000F0017847100000000000000000037
-:106C400002000F0018847100000000000000000026
-:106C500002000F0019847100000000000000000015
-:106C600002000F001A847100000000000000000004
-:106C700002000F001B8471000000000000000000F3
-:106C800002000F001C8471000000000000000000E2
-:106C900002000F001D8471000000000000000000D1
-:106CA00002000F001E8471000000000000000000C0
-:106CB00002000F001F8471000000000000000000AF
-:106CC00002000F002084710000000000000000009E
-:106CD00002000F002184710000000000000000008D
-:106CE00002000F002284710000000000000000007C
-:106CF00002000F002384710000000000000000006B
-:106D000002000F0024847100000000000000000059
-:106D100002000F0025847100000000000000000048
-:106D200002000F0026847100000000000000000037
-:106D300002000F0027847100000000000000000026
-:106D400002000F0028847100000000000000000015
-:106D500002000F0029847100000000000000000004
-:106D600002000F002A8471000000000000000000F3
-:106D700002000F002B8471000000000000000000E2
-:106D800002000F002C8471000000000000000000D1
-:106D900002000F002D8471000000000000000000C0
-:106DA00002000F002E8471000000000000000000AF
-:106DB00002000F002F84710000000000000000009E
-:106DC00002000F003084710000000000000000008D
-:106DD00002000F003184710000000000000000007C
-:106DE00002000F003284710000000000000000006B
-:106DF00002000F003384710000000000000000005A
-:106E000002000F0034847100000000000000000048
-:106E100002000F0035847100000000000000000037
-:106E200002000F0036847100000000000000000026
-:106E300002000F0037847100000000000000000015
-:106E400002000F0038847100000000000000000004
-:106E500002000F00398471000000000000000000F3
-:106E600002000F003A8471000000000000000000E2
-:106E700002000F003B8471000000000000000000D1
-:106E800002000F003C8471000000000000000000C0
-:106E900002000F003D8471000000000000000000AF
-:106EA00002000F003E84710000000000000000009E
-:106EB00002000F003F84710000000000000000008D
-:106EC00002000F004084710000000000000000007C
-:106ED00002000F004184710000000000000000006B
-:106EE00002000F004284710000000000000000005A
-:106EF00002000F0043847100000000000000000049
-:106F000002000F0044847100000000000000000037
-:106F100002000F0045847100000000000000000026
-:106F200002000F0046847100000000000000000015
-:106F300002000F0047847100000000000000000004
-:106F400002000F00488471000000000000000000F3
-:106F500002000F00498471000000000000000000E2
-:106F600002000F004A8471000000000000000000D1
-:106F700002000F004B8471000000000000000000C0
-:106F800002000F004C8471000000000000000000AF
-:106F900002000F004D84710000000000000000009E
-:106FA00002000F004E84710000000000000000008D
-:106FB00002000F004F84710000000000000000007C
-:106FC00002000F005084710000000000000000006B
-:106FD00002000F005184710000000000000000005A
-:106FE00002000F0052847100000000000000000049
-:106FF00002000F0053847100000000000000000038
-:1070000002000F0054847100000000000000000026
-:1070100002000F0055847100000000000000000015
-:1070200002000F0056847100000000000000000004
-:1070300002000F00578471000000000000000000F3
-:1070400002000F00588471000000000000000000E2
-:1070500002000F00598471000000000000000000D1
-:1070600002000F005A8471000000000000000000C0
-:1070700002000F005B8471000000000000000000AF
-:1070800002000F005C84710000000000000000009E
-:1070900002000F005D84710000000000000000008D
-:1070A00002000F005E84710000000000000000007C
-:1070B00002000F005F84710000000000000000006B
-:1070C00002000F006084710000000000000000005A
-:1070D00002000F0061847100000000000000000049
-:1070E00002000F0062847100000000000000000038
-:1070F00002000F0063847100000000000000000027
-:1071000002000F0064847100000000000000000015
-:1071100002000F0065847100000000000000000004
-:1071200002000F00668471000000000000000000F3
-:1071300002000F00678471000000000000000000E2
-:1071400002000F00688471000000000000000000D1
-:1071500002000F00698471000000000000000000C0
-:1071600002000F006A8471000000000000000000AF
-:1071700002000F006B84710000000000000000009E
-:1071800002000F006C84710000000000000000008D
-:1071900002000F006D84710000000000000000007C
-:1071A00002000F006E84710000000000000000006B
-:1071B00002000F006F84710000000000000000005A
-:1071C00002000F0070847100000000000000000049
-:1071D00002000F0071847100000000000000000038
-:1071E00002000F0072847100000000000000000027
-:1071F00002000F0073847100000000000000000016
-:1072000002000F0074847100000000000000000004
-:1072100002000F00758471000000000000000000F3
-:1072200002000F00768471000000000000000000E2
-:1072300002000F00778471000000000000000000D1
-:1072400002000F00788471000000000000000000C0
-:1072500002000F00798471000000000000000000AF
-:1072600002000F007A84710000000000000000009E
-:1072700002000F007B84710000000000000000008D
-:1072800002000F007C84710000000000000000007C
-:1072900002000F007D84710000000000000000006B
-:1072A00002000F007E84710000000000000000005A
-:1072B00002000F007F847100000000000000000049
-:1072C00002000F0080847100000000000000000038
-:1072D00002000F0081847100000000000000000027
-:1072E00002000F0082847100000000000000000016
-:1072F00002000F0083847100000000000000000005
-:1073000002000F00848471000000000000000000F3
-:1073100002000F00858471000000000000000000E2
-:1073200002000F00868471000000000000000000D1
-:1073300002000F00878471000000000000000000C0
-:1073400002000F00888471000000000000000000AF
-:1073500002000F008984710000000000000000009E
-:1073600002000F008A84710000000000000000008D
-:1073700002000F008B84710000000000000000007C
-:1073800002000F008C84710000000000000000006B
-:1073900002000F008D84710000000000000000005A
-:1073A00002000F008E847100000000000000000049
-:1073B00002000F008F847100000000000000000038
-:1073C00002000F0090847100000000000000000027
-:1073D00002000F0091847100000000000000000016
-:1073E00002000F0092847100000000000000000005
-:1073F00002000F00938471000000000000000000F4
-:1074000002000F00948471000000000000000000E2
-:1074100002000F00958471000000000000000000D1
-:1074200002000F00968471000000000000000000C0
-:1074300002000F00978471000000000000000000AF
-:1074400002000F009884710000000000000000009E
-:1074500002000F009984710000000000000000008D
-:1074600002000F009A84710000000000000000007C
-:1074700002000F009B84710000000000000000006B
-:1074800002000F009C84710000000000000000005A
-:1074900002000F009D847100000000000000000049
-:1074A00002000F009E847100000000000000000038
-:1074B00002000F009F847100000000000000000027
-:1074C00002000F00A0847100000000000000000016
-:1074D00002000F00A1847100000000000000000005
-:1074E00002000F00A28471000000000000000000F4
-:1074F00002000F00A38471000000000000000000E3
-:1075000002000F00A48471000000000000000000D1
-:1075100002000F00A58471000000000000000000C0
-:1075200002000F00A68471000000000000000000AF
-:1075300002000F00A784710000000000000000009E
-:1075400002000F00A884710000000000000000008D
-:1075500002000F00A984710000000000000000007C
-:1075600002000F00AA84710000000000000000006B
-:1075700002000F00AB84710000000000000000005A
-:1075800002000F00AC847100000000000000000049
-:1075900002000F00AD847100000000000000000038
-:1075A00002000F00AE847100000000000000000027
-:1075B00002000F00AF847100000000000000000016
-:1075C00002000F00B0847100000000000000000005
-:1075D00002000F00B18471000000000000000000F4
-:1075E00002000F00B28471000000000000000000E3
-:1075F00002000F00B38471000000000000000000D2
-:1076000002000F00B48471000000000000000000C0
-:1076100002000F00B58471000000000000000000AF
-:1076200002000F00B684710000000000000000009E
-:1076300002000F00B784710000000000000000008D
-:1076400002000F00B884710000000000000000007C
-:1076500002000F00B984710000000000000000006B
-:1076600002000F00BA84710000000000000000005A
-:1076700002000F00BB847100000000000000000049
-:1076800002000F00BC847100000000000000000038
-:1076900002000F00BD847100000000000000000027
-:1076A00002000F00BE847100000000000000000016
-:1076B00002000F00BF847100000000000000000005
-:1076C00002000F00C08471000000000000000000F4
-:1076D00002000F00C18471000000000000000000E3
-:1076E00002000F00C28471000000000000000000D2
-:1076F00002000F00C38471000000000000000000C1
-:1077000002000F00C48471000000000000000000AF
-:1077100002000F00C584710000000000000000009E
-:1077200002000F00C684710000000000000000008D
-:1077300002000F00C784710000000000000000007C
-:1077400002000F00C884710000000000000000006B
-:1077500002000F00C984710000000000000000005A
-:1077600002000F00CA847100000000000000000049
-:1077700002000F00CB847100000000000000000038
-:1077800002000F00CC847100000000000000000027
-:1077900002000F00CD847100000000000000000016
-:1077A00002000F00CE847100000000000000000005
-:1077B00002000F00CF8471000000000000000000F4
-:1077C00002000F00D08471000000000000000000E3
-:1077D00002000F00D18471000000000000000000D2
-:1077E00002000F00D28471000000000000000000C1
-:1077F00002000F00D38471000000000000000000B0
-:1078000002000F00D484710000000000000000009E
-:1078100002000F00D584710000000000000000008D
-:1078200002000F00D684710000000000000000007C
-:1078300002000F00D784710000000000000000006B
-:1078400002000F00D884710000000000000000005A
-:1078500002000F00D9847100000000000000000049
-:1078600002000F00DA847100000000000000000038
-:1078700002000F00DB847100000000000000000027
-:1078800002000F00DC847100000000000000000016
-:1078900002000F00DD847100000000000000000005
-:1078A00002000F00DE8471000000000000000000F4
-:1078B00002000F00DF8471000000000000000000E3
-:1078C00002000F00E08471000000000000000000D2
-:1078D00002000F00E18471000000000000000000C1
-:1078E00002000F00E28471000000000000000000B0
-:1078F00002000F00E384710000000000000000009F
-:1079000002000F00E484710000000000000000008D
-:1079100002000F00E584710000000000000000007C
-:1079200002000F00E684710000000000000000006B
-:1079300002000F00E784710000000000000000005A
-:1079400002000F00E8847100000000000000000049
-:1079500002000F00E9847100000000000000000038
-:1079600002000F00EA847100000000000000000027
-:1079700002000F00EB847100000000000000000016
-:1079800002000F00EC847100000000000000000005
-:1079900002000F00ED8471000000000000000000F4
-:1079A00002000F00EE8471000000000000000000E3
-:1079B00002000F00EF8471000000000000000000D2
-:1079C00002000F00F08471000000000000000000C1
-:1079D00002000F00F18471000000000000000000B0
-:1079E00002000F00F284710000000000000000009F
-:1079F00002000F00F384710000000000000000008E
-:107A000002000F00F484710000000000000000007C
-:107A100002000F00F584710000000000000000006B
-:107A200002000F00F684710000000000000000005A
-:107A300002000F00F7847100000000000000000049
-:107A400002000F00F8847100000000000000000038
-:107A500002000F00F9847100000000000000000027
-:107A600002000F00FA847100000000000000000016
-:107A700002000F00FB847100000000000000000005
-:107A800002000F00FC8471000000000000000000F4
-:107A900002000F00FD8471000000000000000000E3
-:107AA00002000F00FE8471000000000000000000D2
-:107AB00002000F00FF8471000000000000000000C1
-:107AC00002000F00008571000000000000000000AF
-:107AD00002000F000185710000000000000000009E
-:107AE00002000F000285710000000000000000008D
-:107AF00002000F000385710000000000000000007C
-:107B000002000F000485710000000000000000006A
-:107B100002000F0005857100000000000000000059
-:107B200002000F0006857100000000000000000048
-:107B300002000F0007857100000000000000000037
-:107B400002000F0008857100000000000000000026
-:107B500002000F0009857100000000000000000015
-:107B600002000F000A857100000000000000000004
-:107B700002000F000B8571000000000000000000F3
-:107B800002000F000C8571000000000000000000E2
-:107B900002000F000D8571000000000000000000D1
-:107BA00002000F000E8571000000000000000000C0
-:107BB00002000F000F8571000000000000000000AF
-:107BC00002000F001085710000000000000000009E
-:107BD00002000F001185710000000000000000008D
-:107BE00002000F001285710000000000000000007C
-:107BF00002000F001385710000000000000000006B
-:107C000002000F0014857100000000000000000059
-:107C100002000F0015857100000000000000000048
-:107C200002000F0016857100000000000000000037
-:107C300002000F0017857100000000000000000026
-:107C400002000F0018857100000000000000000015
-:107C500002000F0019857100000000000000000004
-:107C600002000F001A8571000000000000000000F3
-:107C700002000F001B8571000000000000000000E2
-:107C800002000F001C8571000000000000000000D1
-:107C900002000F001D8571000000000000000000C0
-:107CA00002000F001E8571000000000000000000AF
-:107CB00002000F001F85710000000000000000009E
-:107CC00002000F002085710000000000000000008D
-:107CD00002000F002185710000000000000000007C
-:107CE00002000F002285710000000000000000006B
-:107CF00002000F002385710000000000000000005A
-:107D000002000F0024857100000000000000000048
-:107D100002000F0025857100000000000000000037
-:107D200002000F0026857100000000000000000026
-:107D300002000F0027857100000000000000000015
-:107D400002000F0028857100000000000000000004
-:107D500002000F00298571000000000000000000F3
-:107D600002000F002A8571000000000000000000E2
-:107D700002000F002B8571000000000000000000D1
-:107D800002000F002C8571000000000000000000C0
-:107D900002000F002D8571000000000000000000AF
-:107DA00002000F002E85710000000000000000009E
-:107DB00002000F002F85710000000000000000008D
-:107DC00002000F003085710000000000000000007C
-:107DD00002000F003185710000000000000000006B
-:107DE00002000F003285710000000000000000005A
-:107DF00002000F0033857100000000000000000049
-:107E000002000F0034857100000000000000000037
-:107E100002000F0035857100000000000000000026
-:107E200002000F0036857100000000000000000015
-:107E300002000F0037857100000000000000000004
-:107E400002000F00388571000000000000000000F3
-:107E500002000F00398571000000000000000000E2
-:107E600002000F003A8571000000000000000000D1
-:107E700002000F003B8571000000000000000000C0
-:107E800002000F003C8571000000000000000000AF
-:107E900002000F003D85710000000000000000009E
-:107EA00002000F003E85710000000000000000008D
-:107EB00002000F003F85710000000000000000007C
-:107EC00002000F004085710000000000000000006B
-:107ED00002000F004185710000000000000000005A
-:107EE00002000F0042857100000000000000000049
-:107EF00002000F0043857100000000000000000038
-:107F000002000F0044857100000000000000000026
-:107F100002000F0045857100000000000000000015
-:107F200002000F0046857100000000000000000004
-:107F300002000F00478571000000000000000000F3
-:107F400002000F00488571000000000000000000E2
-:107F500002000F00498571000000000000000000D1
-:107F600002000F004A8571000000000000000000C0
-:107F700002000F004B8571000000000000000000AF
-:107F800002000F004C85710000000000000000009E
-:107F900002000F004D85710000000000000000008D
-:107FA00002000F004E85710000000000000000007C
-:107FB00002000F004F85710000000000000000006B
-:107FC00002000F005085710000000000000000005A
-:107FD00002000F0051857100000000000000000049
-:107FE00002000F0052857100000000000000000038
-:107FF00002000F0053857100000000000000000027
-:1080000002000F0054857100000000000000000015
-:1080100002000F0055857100000000000000000004
-:1080200002000F00568571000000000000000000F3
-:1080300002000F00578571000000000000000000E2
-:1080400002000F00588571000000000000000000D1
-:1080500002000F00598571000000000000000000C0
-:1080600002000F005A8571000000000000000000AF
-:1080700002000F005B85710000000000000000009E
-:1080800002000F005C85710000000000000000008D
-:1080900002000F005D85710000000000000000007C
-:1080A00002000F005E85710000000000000000006B
-:1080B00002000F005F85710000000000000000005A
-:1080C00002000F0060857100000000000000000049
-:1080D00002000F0061857100000000000000000038
-:1080E00002000F0062857100000000000000000027
-:1080F00002000F0063857100000000000000000016
-:1081000002000F0064857100000000000000000004
-:1081100002000F00658571000000000000000000F3
-:1081200002000F00668571000000000000000000E2
-:1081300002000F00678571000000000000000000D1
-:1081400002000F00688571000000000000000000C0
-:1081500002000F00698571000000000000000000AF
-:1081600002000F006A85710000000000000000009E
-:1081700002000F006B85710000000000000000008D
-:1081800002000F006C85710000000000000000007C
-:1081900002000F006D85710000000000000000006B
-:1081A00002000F006E85710000000000000000005A
-:1081B00002000F006F857100000000000000000049
-:1081C00002000F0070857100000000000000000038
-:1081D00002000F0071857100000000000000000027
-:1081E00002000F0072857100000000000000000016
-:1081F00002000F0073857100000000000000000005
-:1082000002000F00748571000000000000000000F3
-:1082100002000F00758571000000000000000000E2
-:1082200002000F00768571000000000000000000D1
-:1082300002000F00778571000000000000000000C0
-:1082400002000F00788571000000000000000000AF
-:1082500002000F007985710000000000000000009E
-:1082600002000F007A85710000000000000000008D
-:1082700002000F007B85710000000000000000007C
-:1082800002000F007C85710000000000000000006B
-:1082900002000F007D85710000000000000000005A
-:1082A00002000F007E857100000000000000000049
-:1082B00002000F007F857100000000000000000038
-:1082C00002000F0080857100000000000000000027
-:1082D00002000F0081857100000000000000000016
-:1082E00002000F0082857100000000000000000005
-:1082F00002000F00838571000000000000000000F4
-:1083000002000F00848571000000000000000000E2
-:1083100002000F00858571000000000000000000D1
-:1083200002000F00868571000000000000000000C0
-:1083300002000F00878571000000000000000000AF
-:1083400002000F008885710000000000000000009E
-:1083500002000F008985710000000000000000008D
-:1083600002000F008A85710000000000000000007C
-:1083700002000F008B85710000000000000000006B
-:1083800002000F008C85710000000000000000005A
-:1083900002000F008D857100000000000000000049
-:1083A00002000F008E857100000000000000000038
-:1083B00002000F008F857100000000000000000027
-:1083C00002000F0090857100000000000000000016
-:1083D00002000F0091857100000000000000000005
-:1083E00002000F00928571000000000000000000F4
-:1083F00002000F00938571000000000000000000E3
-:1084000002000F00948571000000000000000000D1
-:1084100002000F00958571000000000000000000C0
-:1084200002000F00968571000000000000000000AF
-:1084300002000F009785710000000000000000009E
-:1084400002000F009885710000000000000000008D
-:1084500002000F009985710000000000000000007C
-:1084600002000F009A85710000000000000000006B
-:1084700002000F009B85710000000000000000005A
-:1084800002000F009C857100000000000000000049
-:1084900002000F009D857100000000000000000038
-:1084A00002000F009E857100000000000000000027
-:1084B00002000F009F857100000000000000000016
-:1084C00002000F00A0857100000000000000000005
-:1084D00002000F00A18571000000000000000000F4
-:1084E00002000F00A28571000000000000000000E3
-:1084F00002000F00A38571000000000000000000D2
-:1085000002000F00A48571000000000000000000C0
-:1085100002000F00A58571000000000000000000AF
-:1085200002000F00A685710000000000000000009E
-:1085300002000F00A785710000000000000000008D
-:1085400002000F00A885710000000000000000007C
-:1085500002000F00A985710000000000000000006B
-:1085600002000F00AA85710000000000000000005A
-:1085700002000F00AB857100000000000000000049
-:1085800002000F00AC857100000000000000000038
-:1085900002000F00AD857100000000000000000027
-:1085A00002000F00AE857100000000000000000016
-:1085B00002000F00AF857100000000000000000005
-:1085C00002000F00B08571000000000000000000F4
-:1085D00002000F00B18571000000000000000000E3
-:1085E00002000F00B28571000000000000000000D2
-:1085F00002000F00B38571000000000000000000C1
-:1086000002000F00B48571000000000000000000AF
-:1086100002000F00B585710000000000000000009E
-:1086200002000F00B685710000000000000000008D
-:1086300002000F00B785710000000000000000007C
-:1086400002000F00B885710000000000000000006B
-:1086500002000F00B985710000000000000000005A
-:1086600002000F00BA857100000000000000000049
-:1086700002000F00BB857100000000000000000038
-:1086800002000F00BC857100000000000000000027
-:1086900002000F00BD857100000000000000000016
-:1086A00002000F00BE857100000000000000000005
-:1086B00002000F00BF8571000000000000000000F4
-:1086C00002000F00C08571000000000000000000E3
-:1086D00002000F00C18571000000000000000000D2
-:1086E00002000F00C28571000000000000000000C1
-:1086F00002000F00C38571000000000000000000B0
-:1087000002000F00C485710000000000000000009E
-:1087100002000F00C585710000000000000000008D
-:1087200002000F00C685710000000000000000007C
-:1087300002000F00C785710000000000000000006B
-:1087400002000F00C885710000000000000000005A
-:1087500002000F00C9857100000000000000000049
-:1087600002000F00CA857100000000000000000038
-:1087700002000F00CB857100000000000000000027
-:1087800002000F00CC857100000000000000000016
-:1087900002000F00CD857100000000000000000005
-:1087A00002000F00CE8571000000000000000000F4
-:1087B00002000F00CF8571000000000000000000E3
-:1087C00002000F00D08571000000000000000000D2
-:1087D00002000F00D18571000000000000000000C1
-:1087E00002000F00D28571000000000000000000B0
-:1087F00002000F00D385710000000000000000009F
-:1088000002000F00D485710000000000000000008D
-:1088100002000F00D585710000000000000000007C
-:1088200002000F00D685710000000000000000006B
-:1088300002000F00D785710000000000000000005A
-:1088400002000F00D8857100000000000000000049
-:1088500002000F00D9857100000000000000000038
-:1088600002000F00DA857100000000000000000027
-:1088700002000F00DB857100000000000000000016
-:1088800002000F00DC857100000000000000000005
-:1088900002000F00DD8571000000000000000000F4
-:1088A00002000F00DE8571000000000000000000E3
-:1088B00002000F00DF8571000000000000000000D2
-:1088C00002000F00E08571000000000000000000C1
-:1088D00002000F00E18571000000000000000000B0
-:1088E00002000F00E285710000000000000000009F
-:1088F00002000F00E385710000000000000000008E
-:1089000002000F00E485710000000000000000007C
-:1089100002000F00E585710000000000000000006B
-:1089200002000F00E685710000000000000000005A
-:1089300002000F00E7857100000000000000000049
-:1089400002000F00E8857100000000000000000038
-:1089500002000F00E9857100000000000000000027
-:1089600002000F00EA857100000000000000000016
-:1089700002000F00EB857100000000000000000005
-:1089800002000F00EC8571000000000000000000F4
-:1089900002000F00ED8571000000000000000000E3
-:1089A00002000F00EE8571000000000000000000D2
-:1089B00002000F00EF8571000000000000000000C1
-:1089C00002000F00F08571000000000000000000B0
-:1089D00002000F00F185710000000000000000009F
-:1089E00002000F00F285710000000000000000008E
-:1089F00002000F00F385710000000000000000007D
-:108A000002000F00F485710000000000000000006B
-:108A100002000F00F585710000000000000000005A
-:108A200002000F00F6857100000000000000000049
-:108A300002000F00F7857100000000000000000038
-:108A400002000F00F8857100000000000000000027
-:108A500002000F00F9857100000000000000000016
-:108A600002000F00FA857100000000000000000005
-:108A700002000F00FB8571000000000000000000F4
-:108A800002000F00FC8571000000000000000000E3
-:108A900002000F00FD8571000000000000000000D2
-:108AA00002000F00FE8571000000000000000000C1
-:108AB00002000F00FF8571000000000000000000B0
-:108AC00002000F000086710000000000000000009E
-:108AD00002000F000186710000000000000000008D
-:108AE00002000F000286710000000000000000007C
-:108AF00002000F000386710000000000000000006B
-:108B000002000F0004867100000000000000000059
-:108B100002000F0005867100000000000000000048
-:108B200002000F0006867100000000000000000037
-:108B300002000F0007867100000000000000000026
-:108B400002000F0008867100000000000000000015
-:108B500002000F0009867100000000000000000004
-:108B600002000F000A8671000000000000000000F3
-:108B700002000F000B8671000000000000000000E2
-:108B800002000F000C8671000000000000000000D1
-:108B900002000F000D8671000000000000000000C0
-:108BA00002000F000E8671000000000000000000AF
-:108BB00002000F000F86710000000000000000009E
-:108BC00002000F001086710000000000000000008D
-:108BD00002000F001186710000000000000000007C
-:108BE00002000F001286710000000000000000006B
-:108BF00002000F001386710000000000000000005A
-:108C000002000F0014867100000000000000000048
-:108C100002000F0015867100000000000000000037
-:108C200002000F0016867100000000000000000026
-:108C300002000F0017867100000000000000000015
-:108C400002000F0018867100000000000000000004
-:108C500002000F00198671000000000000000000F3
-:108C600002000F001A8671000000000000000000E2
-:108C700002000F001B8671000000000000000000D1
-:108C800002000F001C8671000000000000000000C0
-:108C900002000F001D8671000000000000000000AF
-:108CA00002000F001E86710000000000000000009E
-:108CB00002000F001F86710000000000000000008D
-:108CC00002000F002086710000000000000000007C
-:108CD00002000F002186710000000000000000006B
-:108CE00002000F002286710000000000000000005A
-:108CF00002000F0023867100000000000000000049
-:108D000002000F0024867100000000000000000037
-:108D100002000F0025867100000000000000000026
-:108D200002000F0026867100000000000000000015
-:108D300002000F0027867100000000000000000004
-:108D400002000F00288671000000000000000000F3
-:108D500002000F00298671000000000000000000E2
-:108D600002000F002A8671000000000000000000D1
-:108D700002000F002B8671000000000000000000C0
-:108D800002000F002C8671000000000000000000AF
-:108D900002000F002D86710000000000000000009E
-:108DA00002000F002E86710000000000000000008D
-:108DB00002000F002F86710000000000000000007C
-:108DC00002000F003086710000000000000000006B
-:108DD00002000F003186710000000000000000005A
-:108DE00002000F0032867100000000000000000049
-:108DF00002000F0033867100000000000000000038
-:108E000002000F0034867100000000000000000026
-:108E100002000F0035867100000000000000000015
-:108E200002000F0036867100000000000000000004
-:108E300002000F00378671000000000000000000F3
-:108E400002000F00388671000000000000000000E2
-:108E500002000F00398671000000000000000000D1
-:108E600002000F003A8671000000000000000000C0
-:108E700002000F003B8671000000000000000000AF
-:108E800002000F003C86710000000000000000009E
-:108E900002000F003D86710000000000000000008D
-:108EA00002000F003E86710000000000000000007C
-:108EB00002000F003F86710000000000000000006B
-:108EC00002000F004086710000000000000000005A
-:108ED00002000F0041867100000000000000000049
-:108EE00002000F0042867100000000000000000038
-:108EF00002000F0043867100000000000000000027
-:108F000002000F0044867100000000000000000015
-:108F100002000F0045867100000000000000000004
-:108F200002000F00468671000000000000000000F3
-:108F300002000F00478671000000000000000000E2
-:108F400002000F00488671000000000000000000D1
-:108F500002000F00498671000000000000000000C0
-:108F600002000F004A8671000000000000000000AF
-:108F700002000F004B86710000000000000000009E
-:108F800002000F004C86710000000000000000008D
-:108F900002000F004D86710000000000000000007C
-:108FA00002000F004E86710000000000000000006B
-:108FB00002000F004F86710000000000000000005A
-:108FC00002000F0050867100000000000000000049
-:108FD00002000F0051867100000000000000000038
-:108FE00002000F0052867100000000000000000027
-:108FF00002000F0053867100000000000000000016
-:1090000002000F0054867100000000000000000004
-:1090100002000F00558671000000000000000000F3
-:1090200002000F00568671000000000000000000E2
-:1090300002000F00578671000000000000000000D1
-:1090400002000F00588671000000000000000000C0
-:1090500002000F00598671000000000000000000AF
-:1090600002000F005A86710000000000000000009E
-:1090700002000F005B86710000000000000000008D
-:1090800002000F005C86710000000000000000007C
-:1090900002000F005D86710000000000000000006B
-:1090A00002000F005E86710000000000000000005A
-:1090B00002000F005F867100000000000000000049
-:1090C00002000F0060867100000000000000000038
-:1090D00002000F0061867100000000000000000027
-:1090E00002000F0062867100000000000000000016
-:1090F00002000F0063867100000000000000000005
-:1091000002000F00648671000000000000000000F3
-:1091100002000F00658671000000000000000000E2
-:1091200002000F00668671000000000000000000D1
-:1091300002000F00678671000000000000000000C0
-:1091400002000F00688671000000000000000000AF
-:1091500002000F006986710000000000000000009E
-:1091600002000F006A86710000000000000000008D
-:1091700002000F006B86710000000000000000007C
-:1091800002000F006C86710000000000000000006B
-:1091900002000F006D86710000000000000000005A
-:1091A00002000F006E867100000000000000000049
-:1091B00002000F006F867100000000000000000038
-:1091C00002000F0070867100000000000000000027
-:1091D00002000F0071867100000000000000000016
-:1091E00002000F0072867100000000000000000005
-:1091F00002000F00738671000000000000000000F4
-:1092000002000F00748671000000000000000000E2
-:1092100002000F00758671000000000000000000D1
-:1092200002000F00768671000000000000000000C0
-:1092300002000F00778671000000000000000000AF
-:1092400002000F007886710000000000000000009E
-:1092500002000F007986710000000000000000008D
-:1092600002000F007A86710000000000000000007C
-:1092700002000F007B86710000000000000000006B
-:1092800002000F007C86710000000000000000005A
-:1092900002000F007D867100000000000000000049
-:1092A00002000F007E867100000000000000000038
-:1092B00002000F007F867100000000000000000027
-:1092C00002000F0080867100000000000000000016
-:1092D00002000F0081867100000000000000000005
-:1092E00002000F00828671000000000000000000F4
-:1092F00002000F00838671000000000000000000E3
-:1093000002000F00848671000000000000000000D1
-:1093100002000F00858671000000000000000000C0
-:1093200002000F00868671000000000000000000AF
-:1093300002000F008786710000000000000000009E
-:1093400002000F008886710000000000000000008D
-:1093500002000F008986710000000000000000007C
-:1093600002000F008A86710000000000000000006B
-:1093700002000F008B86710000000000000000005A
-:1093800002000F008C867100000000000000000049
-:1093900002000F008D867100000000000000000038
-:1093A00002000F008E867100000000000000000027
-:1093B00002000F008F867100000000000000000016
-:1093C00002000F0090867100000000000000000005
-:1093D00002000F00918671000000000000000000F4
-:1093E00002000F00928671000000000000000000E3
-:1093F00002000F00938671000000000000000000D2
-:1094000002000F00948671000000000000000000C0
-:1094100002000F00958671000000000000000000AF
-:1094200002000F009686710000000000000000009E
-:1094300002000F009786710000000000000000008D
-:1094400002000F009886710000000000000000007C
-:1094500002000F009986710000000000000000006B
-:1094600002000F009A86710000000000000000005A
-:1094700002000F009B867100000000000000000049
-:1094800002000F009C867100000000000000000038
-:1094900002000F009D867100000000000000000027
-:1094A00002000F009E867100000000000000000016
-:1094B00002000F009F867100000000000000000005
-:1094C00002000F00A08671000000000000000000F4
-:1094D00002000F00A18671000000000000000000E3
-:1094E00002000F00A28671000000000000000000D2
-:1094F00002000F00A38671000000000000000000C1
-:1095000002000F00A48671000000000000000000AF
-:1095100002000F00A586710000000000000000009E
-:1095200002000F00A686710000000000000000008D
-:1095300002000F00A786710000000000000000007C
-:1095400002000F00A886710000000000000000006B
-:1095500002000F00A986710000000000000000005A
-:1095600002000F00AA867100000000000000000049
-:1095700002000F00AB867100000000000000000038
-:1095800002000F00AC867100000000000000000027
-:1095900002000F00AD867100000000000000000016
-:1095A00002000F00AE867100000000000000000005
-:1095B00002000F00AF8671000000000000000000F4
-:1095C00002000F00B08671000000000000000000E3
-:1095D00002000F00B18671000000000000000000D2
-:1095E00002000F00B28671000000000000000000C1
-:1095F00002000F00B38671000000000000000000B0
-:1096000002000F00B486710000000000000000009E
-:1096100002000F00B586710000000000000000008D
-:1096200002000F00B686710000000000000000007C
-:1096300002000F00B786710000000000000000006B
-:1096400002000F00B886710000000000000000005A
-:1096500002000F00B9867100000000000000000049
-:1096600002000F00BA867100000000000000000038
-:1096700002000F00BB867100000000000000000027
-:1096800002000F00BC867100000000000000000016
-:1096900002000F00BD867100000000000000000005
-:1096A00002000F00BE8671000000000000000000F4
-:1096B00002000F00BF8671000000000000000000E3
-:1096C00002000F00C08671000000000000000000D2
-:1096D00002000F00C18671000000000000000000C1
-:1096E00002000F00C28671000000000000000000B0
-:1096F00002000F00C386710000000000000000009F
-:1097000002000F00C486710000000000000000008D
-:1097100002000F00C586710000000000000000007C
-:1097200002000F00C686710000000000000000006B
-:1097300002000F00C786710000000000000000005A
-:1097400002000F00C8867100000000000000000049
-:1097500002000F00C9867100000000000000000038
-:1097600002000F00CA867100000000000000000027
-:1097700002000F00CB867100000000000000000016
-:1097800002000F00CC867100000000000000000005
-:1097900002000F00CD8671000000000000000000F4
-:1097A00002000F00CE8671000000000000000000E3
-:1097B00002000F00CF8671000000000000000000D2
-:1097C00002000F00D08671000000000000000000C1
-:1097D00002000F00D18671000000000000000000B0
-:1097E00002000F00D286710000000000000000009F
-:1097F00002000F00D386710000000000000000008E
-:1098000002000F00D486710000000000000000007C
-:1098100002000F00D586710000000000000000006B
-:1098200002000F00D686710000000000000000005A
-:1098300002000F00D7867100000000000000000049
-:1098400002000F00D8867100000000000000000038
-:1098500002000F00D9867100000000000000000027
-:1098600002000F00DA867100000000000000000016
-:1098700002000F00DB867100000000000000000005
-:1098800002000F00DC8671000000000000000000F4
-:1098900002000F00DD8671000000000000000000E3
-:1098A00002000F00DE8671000000000000000000D2
-:1098B00002000F00DF8671000000000000000000C1
-:1098C00002000F00E08671000000000000000000B0
-:1098D00002000F00E186710000000000000000009F
-:1098E00002000F00E286710000000000000000008E
-:1098F00002000F00E386710000000000000000007D
-:1099000002000F00E486710000000000000000006B
-:1099100002000F00E586710000000000000000005A
-:1099200002000F00E6867100000000000000000049
-:1099300002000F00E7867100000000000000000038
-:1099400002000F00E8867100000000000000000027
-:1099500002000F00E9867100000000000000000016
-:1099600002000F00EA867100000000000000000005
-:1099700002000F00EB8671000000000000000000F4
-:1099800002000F00EC8671000000000000000000E3
-:1099900002000F00ED8671000000000000000000D2
-:1099A00002000F00EE8671000000000000000000C1
-:1099B00002000F00EF8671000000000000000000B0
-:1099C00002000F00F086710000000000000000009F
-:1099D00002000F00F186710000000000000000008E
-:1099E00002000F00F286710000000000000000007D
-:1099F00002000F00F386710000000000000000006C
-:109A000002000F00F486710000000000000000005A
-:109A100002000F00F5867100000000000000000049
-:109A200002000F00F6867100000000000000000038
-:109A300002000F00F7867100000000000000000027
-:109A400002000F00F8867100000000000000000016
-:109A500002000F00F9867100000000000000000005
-:109A600002000F00FA8671000000000000000000F4
-:109A700002000F00FB8671000000000000000000E3
-:109A800002000F00FC8671000000000000000000D2
-:109A900002000F00FD8671000000000000000000C1
-:109AA00002000F00FE8671000000000000000000B0
-:109AB00002000F00FF86710000000000000000009F
-:109AC00002000F000087710000000000000000008D
-:109AD00002000F000187710000000000000000007C
-:109AE00002000F000287710000000000000000006B
-:109AF00002000F000387710000000000000000005A
-:109B000002000F0004877100000000000000000048
-:109B100002000F0005877100000000000000000037
-:109B200002000F0006877100000000000000000026
-:109B300002000F0007877100000000000000000015
-:109B400002000F0008877100000000000000000004
-:109B500002000F00098771000000000000000000F3
-:109B600002000F000A8771000000000000000000E2
-:109B700002000F000B8771000000000000000000D1
-:109B800002000F000C8771000000000000000000C0
-:109B900002000F000D8771000000000000000000AF
-:109BA00002000F000E87710000000000000000009E
-:109BB00002000F000F87710000000000000000008D
-:109BC00002000F001087710000000000000000007C
-:109BD00002000F001187710000000000000000006B
-:109BE00002000F001287710000000000000000005A
-:109BF00002000F0013877100000000000000000049
-:109C000002000F0014877100000000000000000037
-:109C100002000F0015877100000000000000000026
-:109C200002000F0016877100000000000000000015
-:109C300002000F0017877100000000000000000004
-:109C400002000F00188771000000000000000000F3
-:109C500002000F00198771000000000000000000E2
-:109C600002000F001A8771000000000000000000D1
-:109C700002000F001B8771000000000000000000C0
-:109C800002000F001C8771000000000000000000AF
-:109C900002000F001D87710000000000000000009E
-:109CA00002000F001E87710000000000000000008D
-:109CB00002000F001F87710000000000000000007C
-:109CC00002000F002087710000000000000000006B
-:109CD00002000F002187710000000000000000005A
-:109CE00002000F0022877100000000000000000049
-:109CF00002000F0023877100000000000000000038
-:109D000002000F0024877100000000000000000026
-:109D100002000F0025877100000000000000000015
-:109D200002000F0026877100000000000000000004
-:109D300002000F00278771000000000000000000F3
-:109D400002000F00288771000000000000000000E2
-:109D500002000F00298771000000000000000000D1
-:109D600002000F002A8771000000000000000000C0
-:109D700002000F002B8771000000000000000000AF
-:109D800002000F002C87710000000000000000009E
-:109D900002000F002D87710000000000000000008D
-:109DA00002000F002E87710000000000000000007C
-:109DB00002000F002F87710000000000000000006B
-:109DC00002000F003087710000000000000000005A
-:109DD00002000F0031877100000000000000000049
-:109DE00002000F0032877100000000000000000038
-:109DF00002000F0033877100000000000000000027
-:109E000002000F0034877100000000000000000015
-:109E100002000F0035877100000000000000000004
-:109E200002000F00368771000000000000000000F3
-:109E300002000F00378771000000000000000000E2
-:109E400002000F00388771000000000000000000D1
-:109E500002000F00398771000000000000000000C0
-:109E600002000F003A8771000000000000000000AF
-:109E700002000F003B87710000000000000000009E
-:109E800002000F003C87710000000000000000008D
-:109E900002000F003D87710000000000000000007C
-:109EA00002000F003E87710000000000000000006B
-:109EB00002000F003F87710000000000000000005A
-:109EC00002000F0040877100000000000000000049
-:109ED00002000F0041877100000000000000000038
-:109EE00002000F0042877100000000000000000027
-:109EF00002000F0043877100000000000000000016
-:109F000002000F0044877100000000000000000004
-:109F100002000F00458771000000000000000000F3
-:109F200002000F00468771000000000000000000E2
-:109F300002000F00478771000000000000000000D1
-:109F400002000F00488771000000000000000000C0
-:109F500002000F00498771000000000000000000AF
-:109F600002000F004A87710000000000000000009E
-:109F700002000F004B87710000000000000000008D
-:109F800002000F004C87710000000000000000007C
-:109F900002000F004D87710000000000000000006B
-:109FA00002000F004E87710000000000000000005A
-:109FB00002000F004F877100000000000000000049
-:109FC00002000F0050877100000000000000000038
-:109FD00002000F0051877100000000000000000027
-:109FE00002000F0052877100000000000000000016
-:109FF00002000F0053877100000000000000000005
-:10A0000002000F00548771000000000000000000F3
-:10A0100002000F00558771000000000000000000E2
-:10A0200002000F00568771000000000000000000D1
-:10A0300002000F00578771000000000000000000C0
-:10A0400002000F00588771000000000000000000AF
-:10A0500002000F005987710000000000000000009E
-:10A0600002000F005A87710000000000000000008D
-:10A0700002000F005B87710000000000000000007C
-:10A0800002000F005C87710000000000000000006B
-:10A0900002000F005D87710000000000000000005A
-:10A0A00002000F005E877100000000000000000049
-:10A0B00002000F005F877100000000000000000038
-:10A0C00002000F0060877100000000000000000027
-:10A0D00002000F0061877100000000000000000016
-:10A0E00002000F0062877100000000000000000005
-:10A0F00002000F00638771000000000000000000F4
-:10A1000002000F00648771000000000000000000E2
-:10A1100002000F00658771000000000000000000D1
-:10A1200002000F00668771000000000000000000C0
-:10A1300002000F00678771000000000000000000AF
-:10A1400002000F006887710000000000000000009E
-:10A1500002000F006987710000000000000000008D
-:10A1600002000F006A87710000000000000000007C
-:10A1700002000F006B87710000000000000000006B
-:10A1800002000F006C87710000000000000000005A
-:10A1900002000F006D877100000000000000000049
-:10A1A00002000F006E877100000000000000000038
-:10A1B00002000F006F877100000000000000000027
-:10A1C00002000F0070877100000000000000000016
-:10A1D00002000F0071877100000000000000000005
-:10A1E00002000F00728771000000000000000000F4
-:10A1F00002000F00738771000000000000000000E3
-:10A2000002000F00748771000000000000000000D1
-:10A2100002000F00758771000000000000000000C0
-:10A2200002000F00768771000000000000000000AF
-:10A2300002000F007787710000000000000000009E
-:10A2400002000F007887710000000000000000008D
-:10A2500002000F007987710000000000000000007C
-:10A2600002000F007A87710000000000000000006B
-:10A2700002000F007B87710000000000000000005A
-:10A2800002000F007C877100000000000000000049
-:10A2900002000F007D877100000000000000000038
-:10A2A00002000F007E877100000000000000000027
-:10A2B00002000F007F877100000000000000000016
-:10A2C00002000F0080877100000000000000000005
-:10A2D00002000F00818771000000000000000000F4
-:10A2E00002000F00828771000000000000000000E3
-:10A2F00002000F00838771000000000000000000D2
-:10A3000002000F00848771000000000000000000C0
-:10A3100002000F00858771000000000000000000AF
-:10A3200002000F008687710000000000000000009E
-:10A3300002000F008787710000000000000000008D
-:10A3400002000F008887710000000000000000007C
-:10A3500002000F008987710000000000000000006B
-:10A3600002000F008A87710000000000000000005A
-:10A3700002000F008B877100000000000000000049
-:10A3800002000F008C877100000000000000000038
-:10A3900002000F008D877100000000000000000027
-:10A3A00002000F008E877100000000000000000016
-:10A3B00002000F008F877100000000000000000005
-:10A3C00002000F00908771000000000000000000F4
-:10A3D00002000F00918771000000000000000000E3
-:10A3E00002000F00928771000000000000000000D2
-:10A3F00002000F00938771000000000000000000C1
-:10A4000002000F00948771000000000000000000AF
-:10A4100002000F009587710000000000000000009E
-:10A4200002000F009687710000000000000000008D
-:10A4300002000F009787710000000000000000007C
-:10A4400002000F009887710000000000000000006B
-:10A4500002000F009987710000000000000000005A
-:10A4600002000F009A877100000000000000000049
-:10A4700002000F009B877100000000000000000038
-:10A4800002000F009C877100000000000000000027
-:10A4900002000F009D877100000000000000000016
-:10A4A00002000F009E877100000000000000000005
-:10A4B00002000F009F8771000000000000000000F4
-:10A4C00002000F00A08771000000000000000000E3
-:10A4D00002000F00A18771000000000000000000D2
-:10A4E00002000F00A28771000000000000000000C1
-:10A4F00002000F00A38771000000000000000000B0
-:10A5000002000F00A487710000000000000000009E
-:10A5100002000F00A587710000000000000000008D
-:10A5200002000F00A687710000000000000000007C
-:10A5300002000F00A787710000000000000000006B
-:10A5400002000F00A887710000000000000000005A
-:10A5500002000F00A9877100000000000000000049
-:10A5600002000F00AA877100000000000000000038
-:10A5700002000F00AB877100000000000000000027
-:10A5800002000F00AC877100000000000000000016
-:10A5900002000F00AD877100000000000000000005
-:10A5A00002000F00AE8771000000000000000000F4
-:10A5B00002000F00AF8771000000000000000000E3
-:10A5C00002000F00B08771000000000000000000D2
-:10A5D00002000F00B18771000000000000000000C1
-:10A5E00002000F00B28771000000000000000000B0
-:10A5F00002000F00B387710000000000000000009F
-:10A6000002000F00B487710000000000000000008D
-:10A6100002000F00B587710000000000000000007C
-:10A6200002000F00B687710000000000000000006B
-:10A6300002000F00B787710000000000000000005A
-:10A6400002000F00B8877100000000000000000049
-:10A6500002000F00B9877100000000000000000038
-:10A6600002000F00BA877100000000000000000027
-:10A6700002000F00BB877100000000000000000016
-:10A6800002000F00BC877100000000000000000005
-:10A6900002000F00BD8771000000000000000000F4
-:10A6A00002000F00BE8771000000000000000000E3
-:10A6B00002000F00BF8771000000000000000000D2
-:10A6C00002000F00C087710079000000769060FDE5
-:10A6D00002000F00C18771003D0000006F0080F78D
-:10A6E00002000F00C28771003D0000006F0080F77C
-:10A6F00002000F00C38771003D0000006F0080F76B
-:10A7000002000F00C48771803D0000006F0080F7D9
-:00000001FF
-/* Loading Firmware */
-/* INT_MEM Ver */
- * Tehuti Networks(R) Network Driver
- * Copyright (C) 2007 Tehuti Networks Ltd. All rights reserved
diff --git a/firmware/ti_3410.fw.ihex b/firmware/ti_3410.fw.ihex
deleted file mode 100644
index b22c0425980e..000000000000
--- a/firmware/ti_3410.fw.ihex
+++ /dev/null
@@ -1,862 +0,0 @@
-:10000000C2350002001E021ADBFFFFFFFFFF0232B3
-:10001000CBFFFFFFFFFFFFFFFFFFFFFFFFFF0233ED
-:10002000767581CE90FDE88583A01234EAEC4D60B0
-:100030006A78AB8003760018B89CFA787F800376E4
-:100040000018B865FA78208003760018B820FA9076
-:10005000FDDDAE83AF8290FBF81200A16005E4F0F5
-:10006000A380F690FDE8A88290FDE8A982E8C399F4
-:10007000500576000880F69000FF1200AA90010358
-:100080001200AA9001071200AA90010B1200C8905A
-:1000900001111200C89001171200C875D000123368
-:1000A000C802011DEF65827003EE658322E493F8B8
-:1000B000740193F9740293FE740393F5828E83E8BE
-:1000C00069700122E493F6A30880F4E493FC7401C0
-:1000D00093FD740293FE740393FF740493F8740504
-:1000E00093F58288831200A1700122E493A3A88370
-:1000F000A9828C838D82F0A3AC83AD8288838982B0
-:1001000080E32121049280800492ACAE0492FDE849
-:1001100004940494FBF304990494FBF304F904F9A4
-:1001200080FED0F030F00920F303F68010F7800D48
-:1001300030F10920F303F28004F38001F020F4048D
-:10014000FCD0E0CC22CCC0E012015A02014BBC0032
-:1001500005D0F0ACF022C313DCFC020121BF000982
-:10016000ED258275F001F8E622BF010FED2582F53D
-:1001700082EE3583F58375F004E022ED258275F07B
-:1001800002F8E222D083D082F5F0C3E493A3C5F055
-:1001900095F0C0E0C3D0F0E493A395F04012A3A380
-:1001A000C3E5F033500205832582F58250020583B2
-:1001B000740193C0E0E493C0E022D083D082F5F0D4
-:1001C000E49370097401937004A3A3800C740293E8
-:1001D00065F06005A3A3A380E7740193C0E0E493F6
-:1001E000C0E02212025B0201F21202AF0201F2121F
-:1001F00002D30201F230E00720E302E622E72230D8
-:10020000E10720E302E222E32230E202E022E4936B
-:10021000221202D302021A1202AF02021AABF01229
-:100220000224CBC5F0CB2230E01020E306E6F5F047
-:1002300008E622E7F5F009E7192230E11020E3068D
-:10024000E2F5F008E222E3F5F009E3192230E206D4
-:10025000E0F5F0A3E022E493F5F074019322BB00F3
-:1002600003740922BB010789828A83740422BB02BA
-:100270000789828A83741022740A2202027BBB00DF
-:1002800007E92582F8740122BB010DE92582F58278
-:10029000EA3583F583740422BB020DE92582F582D9
-:1002A000EA3583F583741022E92582F8740222026C
-:1002B00002AFBF0005EDF8740122BF01078D828EE9
-:1002C00083740422BF02078D828E83741022EDF89E
-:1002D0007402220202D3BF0007ED2582F8740122C6
-:1002E000BF010DED2582F582EE3583F5837404227E
-:1002F000BF020DED2582F582EE3583F58374102261
-:10030000ED2582F8740222020307C0E012025B02AC
-:10031000031FC0E01202AF02031FC0E01202D302AB
-:10032000031F30E00B20E304D0E0F622D0E0F722F8
-:1003300030E10B20E304D0E0F222D0E0F322D0E061
-:10034000F022C9CDC9CACECACBCFCB120352EDF928
-:10035000EEFAEFFB22BB002FBF000AFAEDF8E7F63A
-:100360000809DAFA22BF01128D828E83F802036F28
-:1003700009A3E7F0D8FA2202037AFAEDF8E7F208C7
-:1003800009DAFA22020384BB014DBF001489828A74
-:1003900083F9EDF802039608A3E0F6D9FA220203E6
-:1003A000A7BF01228D828E83FB08C9C582C9CAC539
-:1003B00083CAE0A3C9C582C9CAC583CAF0A3DBEA60
-:1003C000D8E8220203CA8D828E83F9EDF8E0F208A4
-:1003D000A3D9FA220203D4BB024DBF001289828A3C
-:1003E00083F9EDF80203E608A3E493F6D9F922BFF6
-:1003F00001238D828E83FB08C9C582C9CAC583CA01
-:10040000E493A3C9C582C9CAC583CAF0A3DBE9D8EE
-:10041000E72202041989828A83F9EDF8E493F2084D
-:10042000A3D9F92202042ABF000DFAEDF8E3F60879
-:1004300009DAFA22020434BF01128D828E83F80297
-:10044000044109A3E3F0D8FA2202044CFAEDF8E3E0
-:10045000F20809DAFA22020456E6FB08E6FA08E690
-:10046000F904F61870010622E6FF08E6FE08E6FD2C
-:1004700022EFF0A3EEF0A3EDF022EBF0A3EAF0A35D
-:10048000E9F022E0FFA3E0FEA3E0FD22E0FBA3E011
-:10049000FAA3E0F9220000000000000004F9006166
-:1004A00005680026058F00330A0000610A6C0066AB
-:1004B000151D00610CF0006109A0006109D7006101
-:1004C0000DB700610BE800610A1300610A48006182
-:1004D00017150033172800341DF600431EA10044F1
-:1004E000200E00441FFC00471EC800471F6D004D32
-:1004F0001FBE004F1EEA0058325600617CCC7DFFC3
-:10050000121CA72290FFFCE020E72DC2AFAE59AF2E
-:1005100058755A20E55A14C55A6019E4FE7F05EE55
-:100520004FCE24FFCECF34FFCF6007E490FF92F090
-:1005300080ED80E08E598F58221205017D077CB72F
-:100540001232727D0F7C6E12328C789D7A06E4F640
-:1005500008DAFC7A061205C47C03120E4C12214AFA
-:10056000E4FEFF7C0F1231FBD2A8221230E6E490A9
-:10057000FC38F090FFF0E030E408740190FC39F0B2
-:100580008005E490FC39F07D0A7C001225261231AA
-:1005900069221230E690FC39E014700E90FFF0E012
-:1005A0004410F07C001225BF801990FC39E0700ED9
-:1005B00090FFF0E054EFF07C001225BF80057C171F
-:1005C0001225BF1231692290FFF0E054ABF090FF8A
-:1005D000F0E04420F0228C378D367882EDF608EC7E
-:1005E000F6EDFEECFD7F019000051201EC7880F63F
-:1005F0007882E6FD08E6FCEDFEECFD7F019000044C
-:100600001201EC540FFC7D801217467880E6700DC5
-:10061000AD3AAE39AF38E412030F7C082290FFF0F8
-:10062000E054FEF090FFF0E054FDF0801E7882E68A
-:10063000FD08E6FCEDFEECFD7F0190000812020EC5
-:1006400025E0440190FFF3F00206D07882E6FD0831
-:10065000E6FCEDFEECFD7F0190000612020E54FE5A
-:1006600090FFF3F0802B7882E6FD08E6FCEDFEECCF
-:10067000FD7F0190000812020EFAEB90FFF1F012DC
-:1006800008BF400DAD3AAE39AF38E412030F7C1805
-:10069000227882E6FD08E6FCEDFEECFD7F0190008D
-:1006A0000812020E90FFF1F01208BF400DAD3AAEF5
-:1006B00039AF38E412030F7C18227882E6FD08E691
-:1006C000FCEDFEECFD7F0190000612020E4401904D
-:1006D000FFF3F07883E62403F618E63400F678801A
-:1006E000E624FE500990FFF0E054FDF0800790FFF3
-:1006F000F0E04402F0E490FFF1F078817600788039
-:10070000E624FFFCE434FFFD7881E67F00FEECD3B5
-:100710009EEF6480CD64809D402F1208A4400F7826
-:1007200081E6AD3AAE39AF3812030F7C182290FF44
-:10073000F2E0FC78828683088682ECF0788106A35A
-:100740007882A68308A68280B51208A4400F78811B
-:10075000E6AD3AAE39AF3812030F7C182290FFF2A3
-:10076000E0FC78828683088682ECF07880E6AD3AF9
-:10077000AE39AF3812030F7C00228C378D36788269
-:10078000EDF608ECF6EDFEECFD7F019000051201A0
-:10079000EC7881F67882E6FD08E6FCEDFEECFD7F64
-:1007A000019000041201EC540FFC7D811217467871
-:1007B00081E670037C082290FFF0E054FEF090FF89
-:1007C000F0E054FDF0801B7882E6FD08E6FCEDFECB
-:1007D000ECFD7F0190000812020E25E090FFF3F07F
-:1007E000805B7882E6FD08E6FCEDFEECFD7F019083
-:1007F000000612020E54FE90FFF3F080217882E68C
-:10080000FD08E6FCEDFEECFD7F0190000812020EF3
-:10081000FAEB90FFF1F01208BF40037C18227882B7
-:10082000E6FD08E6FCEDFEECFD7F019000081202FB
-:100830000E90FFF1F01208BF40037C18227883E687
-:10084000240AF618E63400F6788076007881E624EB
-:10085000FFFCE434FFFD7880E67F00FEECD39EEFE2
-:100860006480CD64809D402178828683088682E002
-:1008700090FFF1F01208BF40037C182278800678C0
-:100880008306E61870010680C390FFF0E04401F093
-:1008900078828683088682E090FFF1F01208BF40DC
-:1008A000037C18227C002290FFF0E020E71290FFEA
-:1008B000F0E030E50990FFF0E04420F0C32280E74B
-:1008C000D32290FFF0E020E31290FFF0E030E50942
-:1008D00090FFF0E04420F0C32280E7D3228C428DC9
-:1008E000417C00ED54F0FDEC7003ED643070057553
-:1008F0003E038003753E04AC3E120F69758300858C
-:100900008340E541540FF53FE5407004E53F640343
-:100910007035E53E24FD75F00AA42402F582E43426
-:10092000FCF583E030E60512104B8019E53E249D6E
-:10093000F8C654FBF678A9E62405F58218E63400DB
-:10094000F583740FF08059E5407004E53F6404704E
-:1009500048E53E24FD75F00AA42402F582E434FC47
-:10096000F583E030E507AC42AD41121C3CE5423076
-:10097000E21578ADE630E00F78ADE630E109E4FF4E
-:1009800004FE7C041231FB78A9E62406F58218E601
-:100990003400F583740FF08007E4FC7DEE121C3CFC
-:1009A000C203221230E6120F6978A9E62406F58206
-:1009B00018E63400F583E090FC38F078A9E62405C9
-:1009C000F58218E63400F583E090FC39F0C2037D2F
-:1009D000027C00122526123169221230E67895EC4D
-:1009E000F6EC249DF8E630E1077C131225BF800F5A
-:1009F00090FC39E0FD7895E6FC1213C81225BF1271
-:100A00003169221230E67895ECF67D00120F09125A
-:100A100025BF123169221230E67895ECF6EC249D60
-:100A2000F8E630E2077C131225BF801B7895E62498
-:100A30009DF8E620E1077C121225BF800A7895E632
-:100A4000FC1213EC1225BF123169221230E67895A0
-:100A5000ECF6EC249DF8E620E2077C111225BF801D
-:100A60000A7895E6FC1214ED1225BF1231692212A4
-:100A700030E67895ECF6120F6978A9E62409F5823C
-:100A800018E63400F583E090FC3FF078A9E6240AEC
-:100A9000F58218E63400F583E090FC40F078A9E692
-:100AA0002403F58218E63400F583E0FC78A9E624F7
-:100AB00004F58218E63400F583E0F56278A9E624AF
-:100AC00002F58218E63400F583E0F5638C61E4EC0E
-:100AD000333354017895F66008E56230E103789588
-:100AE000067895E690FC41F078A7E62402F5821896
-:100AF000E63400F583E0FDA3E0540CFCED54E68CF5
-:100B000065F564E56130E503436501E56220E50EC6
-:100B1000E561547F7008E56120E703436502E56104
-:100B200030E303436510E56130E203436520E5618E
-:100B300054036003436540E56130E103436580E5AC
-:100B40006130E403436401E56130E603436408E592
-:100B50006220E40EE561547F7008E56120E70343FD
-:100B600064105365FB536479AD64E56590FC3ACD40
-:100B7000F0A3CDF0E56330E30DE5635430C4540FCA
-:100B800090FC3DF08005E490FC3DF0E5635403905B
-:100B9000FC3CF0E5635404C31390FC3EF090FC3C35
-:100BA000E0700E7D357EFC7F01740190000912011A
-:100BB0004278A9E62408F58218E63400F583E07C43
-:100BC00000FD78A9E62407F58218E63400F583E0F5
-:100BD0007F004CFEEF4D90FC38F0A3CEF0CEC20368
-:100BE0007D0A7C00122526123169221230E67895A2
-:100BF000ECF6789A76010876FC0876387897760CC9
-:100C0000789A1204651202147898CBF6CB08F67F16
-:100C100000EF24EA401FE4EF25E090352CFD93CD52
-:100C200004937899667003ED1866700678977600DD
-:100C300080030F80DC7896EFF6789A1204659000B6
-:100C40000212020E7898CBF6CB08F65404CB5486E9
-:100C50004B60047897760B7899E630E313789A1214
-:100C600004659000051201EC24FB50047897760D82
-:100C70007899E654C07D0064C04D70047897760B77
-:100C8000789A1204659000041201EC24FC50047858
-:100C900097760F789A1204659000061201EC24FDF5
-:100CA00050047897760E789A120465900009120124
-:100CB000EC24FD50047897760A7897E6702A7895A8
-:100CC000E6FC120F69789A12046578A7E6F978A60F
-:100CD000E6FA7B01740A780012033FC2037895E6B6
-:100CE000FC1211077897ECF67897E6FC1225BF12F4
-:100CF0003169221230E67895ECF6120F697895E6A4
-:100D000024FD75F00AA42414F582E434FCF583ACC8
-:100D100082AD8378A68683088682ECF9EDFA7B0A99
-:100D200078011203A7C2037895E6FC12110712316D
-:100D300069228D2B8C2AED60407527017529487535
-:100D400028FFE52A24FDFCE434FFFDEC7C0325E0CC
-:100D5000CD33CDDCF9FCE5292CF529E5283DF52836
-:100D6000AD29AE28AF277480900006120317748057
-:100D7000900002120317120FB7E52B14603B752782
-:100D8000017529087528FFE52A24FDFCE434FFFDE0
-:100D9000EC7C0325E0CD33CDDCF9FCE5292CF529ED
-:100DA000E5283DF528AD29AE28AF27E490000612CE
-:100DB0000317E4900002120317221230E67895EC34
-:100DC000F6EC249DF8E630E2097895E6FC1214ED85
-:100DD000D2007895E6FC120F697896760090FC397F
-:100DE000E030E704789676017896E6FD7895E6FCA3
-:100DF000120D2FC2033000077895E6FC1213EC7C2D
-:100E0000001225BF1231692278A9E62404F5821860
-:100E1000E63400F583E04401F078A9E62404F58285
-:100E200018E63400F583E030E00280ED78A9E6248E
-:100E30000BF58218E63400F583E054F8F078A9E663
-:100E40002402F58218E63400F583E04480F022C2E3
-:100E5000038C58120F6978A68683088682795D7A9A
-:100E6000357B0A78011203F5120E05AC587D02128B
-:100E70000D2FC203AC58121107228D538E528F5181
-:100E80008C50120F69754F0078A9E62405F5821879
-:100E9000E63400F583E020E41FE54F24F640190511
-:100EA0004FC2037C181232A990FF93E04401F0B2C4
-:100EB000B3AC50120F6980D078A9E62405F58218EA
-:100EC000E63400F583E020E405C2037C022278A921
-:100ED000E62405F58218E63400F583E0540F601629
-:100EE00078A9E62405F58218E63400F583E0540F6E
-:100EF000F0C2037C012278A88683088682E0AD5385
-:100F0000AE52AF5112030FC2037C00228D318C30E0
-:100F10001214EDE531600FE530B4030A7C011224B0
-:100F2000EE7C811224EEAC30120F69E531601A7844
-:100F3000AA8683088682E054E7F0A3A3A3A3E05423
-:100F4000E7F0AC307D02120D2F78A68683088682EA
-:100F500079677A357B0A78011203F5C203E53024FC
-:100F60009DF8C654FDF6AC30121107228C263003D2
-:100F70000512324880F87C0A12315BD203E5262440
-:100F8000FD78A3F6700778AA76FF0876E078A3E6E6
-:100F900075F010A4ADF0FC24A078A9F6ED34FF188C
-:100FA000F678A3E675F00AA42400FCE434FCFD788E
-:100FB000A6EDF608ECF61231F42278A9E62402F543
-:100FC0008218E63400F583E030E72278A9E62402AF
-:100FD000F58218E63400F583E0547FF078A9E62422
-:100FE00002F58218E63400F583E04480F02278AA06
-:100FF0008683088682E0547FF0AD83E5822404FC7A
-:10100000E43D8C82F583E0547FF078A9E6240BF56B
-:101010008218E63400F583E054F8F078ABE624015A
-:10102000F58218E63400F583E04403F078ABE6245B
-:1010300005F58218E63400F583E04403F078A9E66C
-:101040002405F58218E63400F583740FF02278AA9F
-:101050008683088682E0543FF0AD83E5822404FC59
-:10106000E43D8C82F583E0543FF078A3E624A4F8B5
-:10107000E6FC78ABE62401F58218E63400F583EC53
-:10108000F078A3E624A4F8E6FC78ABE62405F58224
-:1010900018E63400F583ECF078A9E6240BF5821805
-:1010A000E63400F583E054FB4402F52678A7E624F5
-:1010B00002F58218E63400F583E030E503432601AB
-:1010C00078A9E62405F58218E63400F583E030E0DF
-:1010D00003120FB7E526FC78A9E6240BF58218E683
-:1010E0003400F583ECF078A9E62405F58218E6349F
-:1010F00000F583740FF078AA8683088682E0448026
-:10110000F0A3A3A3A3E04480F0228C2A120F6978F5
-:10111000A7E62408F58218E63400F583E0FC78A9F8
-:10112000E6240AF58218E63400F583ECF078A7E6A9
-:101130002407F58218E63400F583E0FC78A9E6245C
-:1011400009F58218E63400F583ECF078A68683086A
-:101150008682E0FDA3E0FCEDFE78A9E62408F58296
-:1011600018E63400F583EEF0ECFE78A9E62407F5E6
-:101170008218E63400F583EEF08C298D28C3EC94B8
-:1011800005ED940C400575277C8033D3E529940147
-:10119000E5289403400575273C8023D3E5299481F5
-:1011A000E528940140057527188013D3E52994603C
-:1011B000E5289400400575270C8003752708AF27A4
-:1011C000E4EF547C4483FF8F27E527FC78ABE624CB
-:1011D00001F58218E63400F583ECF0E527FC78ABE6
-:1011E000E62405F58218E63400F583ECF0E527FCEB
-:1011F00078A3E624A4F8ECF678A9E62402F5821890
-:10120000E63400F583E0F52778A7E62402F5821896
-:10121000E63400F583A3E030E3175327C778A7E649
-:101220002405F58218E63400F583E09035589342A2
-:10123000275327FB78A7E62406F58218E63400F545
-:1012400083E060034327045327FC78A7E62404F5D2
-:101250008218E63400F583E04227432780E527FC27
-:1012600078A9E62402F58218E63400F583ECF078DC
-:10127000A9E62404F58218E63400F583E0F5277822
-:10128000A7E62402F58218E63400F583A3E030E1F6
-:10129000055327DF800343272078A7E62402F58241
-:1012A00018E63400F583E030E4055327EF8003436C
-:1012B000271078A7E62409F58218E63400F583E0C4
-:1012C000B40203432702E527FC78A9E62404F5824B
-:1012D00018E63400F583ECF078A9E62403F58218CB
-:1012E000E63400F583E0F52778A7E62409F58218AF
-:1012F000E63400F583E0700553277F8003432780A1
-:1013000078A7E62402F58218E63400F583A3E030DE
-:10131000E00543272080035327DF78A7E62402F562
-:101320008218E63400F583E030E30543274080036C
-:101330005327BF78A7E62402F58218E63400F58328
-:10134000E030E00543271080035327EF78A7E62419
-:1013500002F58218E63400F583A3E030E405432764
-:101360000880035327F778A7E62402F58218E634AD
-:1013700000F583A3E030E50543270480035327FBF2
-:1013800078A7E62402F58218E63400F583A3E0305E
-:10139000E60543270180035327FE78A7E62402F5DC
-:1013A0008218E63400F583A3E030E7054327028086
-:1013B000035327FDE527FC78A9E62403F58218E608
-:1013C0003400F583ECF0C2037C00228D278C26EDDF
-:1013D00054031460037C1022E527547C24FC400352
-:1013E0007C0B22E526249DF8C64402F67C00228C64
-:1013F00030120F69E530249DF8E620E24FAC307DD5
-:1014000002120D2FE53024FE4428FC78AA868308BA
-:101410008682ECF0AF83E5822404FEE43FFFEC8E8D
-:10142000828F83F07C038C2CE52CFC78ABE62401C6
-:10143000F58218E63400F583ECF0E52CFC78ABE699
-:101440002405F58218E63400F583ECF0752D01755E
-:101450002F48752EFFE53024FDFCE434FFFDEC7CC5
-:101460000325E0CD33CDDCF9FCE52F2CF52FE52E5F
-:101470003DF52E78ABE62404F58218E63400F583BA
-:10148000E054E7F52CAD2FAE2EAF2DE49000021204
-:101490000317E49000061203171201E630E5034338
-:1014A0002C10E52CFC78ABE62404F58218E6340019
-:1014B000F583ECF012104B78A9E62406F58218E6C5
-:1014C0003400F583E0C203FCE530249DF8C64404F3
-:1014D000F68C2CE530540FC454F07E00FFEEEF4440
-:1014E000047D00FFEC4EFCED4FFD121CA77C00229A
-:1014F0008C2F120F69120FEB78AA8683088682E080
-:101500005408F0A3A3A3A3E05408F0AC2F7D02126B
-:101510000D2FC203E52F249DF8C654FBF67C002254
-:101520001230E67896ECF6EC249DF8E630E10A7D80
-:10153000007C131225261231697896E6249DF8C6A0
-:101540004401F67896E6FC120F697896E624FD755C
-:10155000F00AA42414F582E434FCF58378A6E6FAB4
-:1015600008E6F97B0A78011203A778A68683088625
-:101570008279677A357B0A78011203F5120FB7C2B8
-:10158000037896E6FC1211077895ECF6EC600A7D7C
-:10159000007C081225261231697896E6FC120F6944
-:1015A00078A9E62404F58218E63400F583E04410B7
-:1015B00054DFFC78A9E62404F58218E63400F583AC
-:1015C000ECF07895ECF6C2037CC81232A97896E666
-:1015D000FC120F6978A9E62404F58218E63400F5B8
-:1015E00083E054EFF0C2037CC81232A97896E6FC7F
-:1015F000120F6978A9E62404F58218E63400F58311
-:10160000E04410F0C2037CC81232A97896E6FC12BE
-:101610000F6978A9E62404F58218E63400F583E022
-:101620004420F0C2037CF01232A97896E6FC120F37
-:101630006978A9E62405F58218E63400F583E030E0
-:10164000E415C2037896E644107F00FE7C07123151
-:10165000FB12316902171478A9E62404F58218E612
-:101660003400F583E054CFF0C2037CC81232A9786D
-:1016700096E6FC120F6978A9E62404F58218E63490
-:1016800000F583E04430F0C2037CF01232A9789672
-:10169000E6FC120F6978A9E62405F58218E6340005
-:1016A000F583E030E414C2037896E644107F00FE30
-:1016B0007C071231FB123169805D78A9E62404F5BC
-:1016C0008218E63400F583E054EFF078A9E62404AC
-:1016D000F58218E63400F583E054DFF07896E624CE
-:1016E000FD75F00AA42414F582E434FCF583AC8281
-:1016F000AD8378A68683088682ECF9EDFA7B0A78BA
-:10170000011203A7C2037896E6FC1211077D007C44
-:101710000B122526123169221230E6E490FC39F0D2
-:101720007D027C00122526123169221230E67C00EF
-:101730001225BF12316922743C90FBE0F0743E9098
-:10174000FBE0F0E490FC28F0228D358C34ECB40101
-:10175000028003D340028028B402028003D34008F1
-:10176000A835C625E0F68018B404028003D3400AE9
-:10177000A835C625E025E0F68006A835760080006D
-:10178000228C3C8D3BEDFEECFD7F01756606756796
-:101790000090FC2912046E1201E6B480028006D388
-:1017A000500302184790FC29120480900003120194
-:1017B000EC54F0B430028003D3405F90FC29120453
-:1017C0008090000812020EFAFDEBFE7F0190FC2CC7
-:1017D00012046EEECD903571FCE493FF740193FE1C
-:1017E000F9EFFA7B01EAFFE9FEECC39EED9F40258D
-:1017F000903573E493FD740193FCEDFEECFD7F01E5
-:10180000EECDFC90FC2EE0D39C90FC2DE09D50058D
-:101810007566808033121965802EB460028003D310
-:10182000400BAC3CAD3B1207778C66801BB41003B9
-:10183000B34010C3B42003B34009C3B440028003D3
-:10184000D3400075668180008075B481028003D327
-:10185000406B90FC291204809000031201EC54F0BC
-:10186000B430028003D3401D90FC29120480900004
-:101870000812020EFAFDEBFE7F0190FC2F12046E9F
-:101880001218CF8036B460028003D34013753A67D4
-:10189000E4F539F538AC3CAD3B1205D38C66801BC2
-:1018A000B41003B34010C3B42003B34009C3B44021
-:1018B000028003D34000756681800080028000E5CD
-:1018C00066FC90FC29120480EC900002120317AC15
-:1018D000672290FC291204809000041201EC60043D
-:1018E00074018001E4A2E0920190FC29120480EDD1
-:1018F0002403FD50010E90FC2C12046E90FC291262
-:1019000004809000051201ECF5679000041201ECD0
-:10191000540FFC7D67121746E56770047566082250
-:10192000756600788476007884E6C39567503890B1
-:10193000FC2F1204801201E6FC90FC2C120480ECB7
-:1019400012030F30010E90FC31E004F090FC307077
-:1019500003E004F078840690FC2EE004F090FC2D67
-:101960007003E004F080C02290FC2AE0FDA3E0FCBC
-:10197000EDFEECFD7F01ED240AFD50010E90FC32DE
-:1019800012046E90FC291204809000041201EC54A1
-:101990000FB401028003D3401790FC321204800D73
-:1019A000ED70010E90FC2F12046E78887601804E47
-:1019B000B402028003D3401990FC32120480ED245B
-:1019C00002FD50010E90FC2F12046E788876028082
-:1019D0002DB404028003D3401990FC32120480ED30
-:1019E0002404FD50010E90FC2F12046E78887604BA
-:1019F000800CB400028003D340007566082290FC7E
-:101A0000291204809000051201ECF56778857600B4
-:101A10007885E6C395674003021ACD78867600780C
-:101A200086E6C3788896507690FC2C1204801201CA
-:101A3000E6FC90FC321204891201E0F45CFC120115
-:101A4000E0F890FC2F120480E8C0E01201E6C8D054
-:101A5000E0C8584CFC90FC2C120480EC12030F7868
-:101A600087ECF690FC31E004F090FC307003E00469
-:101A7000F009E970010A90FC3212047790FC2912F7
-:101A800004809000041201EC30E40E90FC2EE0047F
-:101A9000F090FC2D7003E004F07886068081788851
-:101AA000E6FDE4FEFFEECDFC90FC31E02CF090FC76
-:101AB00030E03DF07888E6FDE4FEFFEECDFC90FCE2
-:101AC00034E02CF090FC33E03DF0788506021A0DEE
-:101AD00075660022E53D053D047002B2B022C0E00B
-:101AE000C0F0C082C083C0D0E8C0E0E9C0E0EAC076
-:101AF000E0EBC0E0ECC0E0EDC0E0EEC0E0EFC0E045
-:101B000090FF92E01201B71B29301B29321B383895
-:101B10001B4A3A1B5C3E1B74441B68461B80501BCF
-:101B2000C2521BA1541BE35600001C0490FF92E01C
-:101B30007F00FE7C011231FB021C14E4FF04FE7CDA
-:101B4000031231FB742090FFFEF0021C14E4FF042A
-:101B5000FE7C021231FB744090FFFEF0021C14E484
-:101B6000FF04FE7C041231FB021C14E4FF04FE7C23
-:101B7000051231FB021C14E4FF04FE7C061231FB4B
-:101B8000021C1490FFA5E07D0090FBF8CDF0A3CDE2
-:101B9000F090FBF9E0FCF58390FBF8E04433FD1294
-:101BA0001CA7807390FFB5E07D0090FBFACDF0A3F9
-:101BB000CDF090FBFBE0FCF58390FBFAE04443FDA5
-:101BC000121CA7805290FFA6E07D0090FBFCCDF098
-:101BD000A3CDF090FBFDE0FCF58390FBFCE04434EA
-:101BE000FD121CA7803190FFB6E07D0090FBFECD7A
-:101BF000F0A3CDF090FBFFE0FCF58390FBFEE0440A
-:101C000044FD121CA7801090FF92E07D00FCED4483
-:101C1000AAFD121CA78000E490FF92F0D0E0FFD054
-:101C2000E0FED0E0FDD0E0FCD0E0FBD0E0FAD0E078
-:101C3000F9D0E0F8D0D0D083D082D0F0D0E0320517
-:101C400081058105810581A881181818EDF608EC39
-:101C5000F690FF5AE020E70280F790FF59E07D0000
-:101C6000A88118CDF6CD08F67D03A881E618FCE61C
-:101C7000CC25E0CC33CCDDF9CCF6CC08F6A8811825
-:101C8000E644F8F6A881181818E6FD08E6FCA881D5
-:101C9000188683088682EDF0A3ECF0740290FF5A58
-:101CA000F0158115811581158122E5812405F581C5
-:101CB000E4A88118F6A88118181818EDF608ECF6B3
-:101CC00090FBF5E024F85003021DC8E4A881181821
-:101CD000F6A88118E6FEA88118181818E6FD08E68F
-:101CE000FC7F00EF24F8404DE4EF25E0247DF582F1
-:101CF000E434FCF583E0FBA3E06C7003FAEB6D7059
-:101D0000097401A8811818F6802BE4EF25E0247DE2
-:101D1000F582E434FCF5837A00E054F0CCF8CCCDC5
-:101D2000F9CDFB7800E954F0F9EA687002EB6970CC
-:101D3000010E0F80AEA88118EEF6A88118181818A9
-:101D4000EDF608ECF6A881EFF6A8811818E6707990
-:101D5000A88118E624F74071A88118181818E654CD
-:101D60000FA881F664046017A881E664036010A8D8
-:101D70008118181818E6FD08E6FC121C3C804A7C05
-:101D80000A12315BA88118181818E6FD08E6FC90C5
-:101D9000FBF4E025E0247DF582E434FCF583EDF0EE
-:101DA000A3ECF090FBF4E0FFE4EF045407FF90FB9A
-:101DB000F4F090FBF5E004F01231F490FBF6E070E3
-:101DC00008E4FEFF7C0F1231FB802790FBF7E00454
-:101DD000F0543F701D90FBF7E044FE7D00FC90FB4B
-:101DE000F4E025E0247DF582E434FCF583EDF0A3F6
-:101DF000ECF0E58124FBF58122788B7600788C76F7
-:101E000000740190FBF6F01230E690FBF5E06057AD
-:101E10007C0A12315B90FBF3E025E0247DF582E43F
-:101E200034FCF583E0FDA3E0FC90FBF3E025E02427
-:101E30007DF582E434FCF583E4F0A3F090FBF3E05D
-:101E4000FFE4EF045407FF90FBF3F090FBF5E01480
-:101E5000F07889EDF608ECF61231F47889E6FD08A1
-:101E6000E6FC1208DA80A312324890FF93E04401A6
-:101E7000F0B2B3788B06B60011788B7600788CE6DA
-:101E8000F40404A2E092B4788CF6021E07E490FBFE
-:101E9000F6F090FBF5E07D00FCED44CFFD121C3C1C
-:101EA000123169221230E6E5706449456F60159081
-:101EB000FF83E0540F7D00D39570ED956F500512B0
-:101EC0002F2F8003122FFF123169221230E6E570A6
-:101ED0006449456F6005123039800E90FF80E04400
-:101EE00008F090FF83E0547FF0123169221230E64F
-:101EF0008C54EC54F0B41015756A357569FC75682E
-:101F000001E56A2403F56AE5693400F569E4F557EB
-:101F1000F556E556C394015027E554540FFCAD6ABD
-:101F2000AE69AF68120E778C55EC60028012056ABC
-:101F3000E56A700205690557E5577002055680D2BB
-:101F4000E554540F249DF8C654FEF6E554540F7F13
-:101F500000FE7C121231FBE5551470097D007C09EE
-:101F60001225268007AD577C0012252612316922E2
-:101F70001230E690FFFCE04402F090FF00E030E712
-:101F80001390FF83E04480F0436D8090FFFCE044B9
-:101F900001F0801190FF82E04408F0536D7F90FFC4
-:101FA000FCE054FEF090FF81E04480F01225D990CF
-:101FB000FFFEE04405F090FFFCE054FDF0123169B3
-:101FC000221230E67C011232A978ADE64402F674A2
-:101FD000FEFC04FD121CA790FF5AE030E70280F7D8
-:101FE000E4F54E754D10AC4EAD4DE54E154E7002FC
-:101FF000154DEC4D600280EE4387011231692212CB
-:1020000030E67C0212317578ADE654FDF612316986
-:10201000221230E678ADE630E02C78ADE630E126ED
-:1020200078ADE6FCF58318E644F0FD121C3C90FF09
-:10203000FCE04420F07C021232A978ADE654FDF6B3
-:10204000741A90FFFEF078ADE6FCF58318E644F1D3
-:10205000FD121C3C12316922756D0090FFFFE0609B
-:1020600003436D01756E00E4F56CF56BE4F56F7577
-:102070007049748490FF82F0748490FF80F07480C3
-:1020800090FF58F0748090FF5AF0AD46AF457E0047
-:10209000EE24FE5003022124E4EE75F007A4247F11
-:1020A000F582E434F8F583E0FFE4EF5480FDE4EFDB
-:1020B000540F14FFED6038E4EF75F008A42448F5E0
-:1020C00082E434FFF5837490F0E4EF75F008A42403
-:1020D0004AF582E434FFF5837480F0E4EF75F0088C
-:1020E000A4244EF582E434FFF5837480F08034E458
-:1020F000EF75F008A42408F582E434FFF5837490AA
-:10210000F0E4EF75F008A4240AF582E434FFF583C7
-:10211000E4F0E4EF75F008A4240EF582E434FFF552
-:1021200083E4F00E02208D8D468E448F45747F909F
-:10213000FFFDF0749090FFFCF0228C58EC24F650D8
-:1021400006E5582437FC22E5582430FC22122523CA
-:10215000EC700302225E755C03AE5B7F00E55C15EC
-:102160005C6480247F5035EF2400F582E434FBF575
-:1021700083E0FE24FE501EEF7D00FCE4FB7474C37C
-:102180009CFAEB9DFBEE7D00FCEAC39CED6480CBEA
-:1021900064809B50028005EF2EFF80C18E5B8F5ABA
-:1021A000E55C6480247F500302225EE55A248E5051
-:1021B0000302225E855A5D755B00AE5AAF5B9035B7
-:1021C0009CE493F55CE55C155C6480247F5018EE1C
-:1021D0002400F582E434FBF583E0FCEF90359C931A
-:1021E0006C70040E0F80DE8E5A8F5BE55C64802479
-:1021F0007F406E755E017560E8755FFFE55D2402E6
-:10220000F55A755C07E55C334057AD60AE5FAF5E75
-:10221000E55CF5823395E0F5831201ECC4540FFCC4
-:10222000122137E55A2400F582E434FBF583ECF003
-:10223000055A055AAD60AE5FAF5EE55CF582339539
-:10224000E0F5831201EC540FFC122137E55A24000B
-:10225000F582E434FBF583ECF0055A055A155C80F1
-:10226000A4740290F851F090F86B79757A357B2759
-:1022700078011203F5756A357569FC756801E4909B
-:10228000FF83F0748090FF81F0755902E55975F075
-:1022900007A4247FF582E434F8F583E0788FF6FC18
-:1022A000540F14FC788FECF6E55975F007A42481DF
-:1022B000F582E434F8F583E0789276FD0876E8FC60
-:1022C000788FE675F008A42448F582E434FFF5839E
-:1022D000E4F0788FE675F008A4244FF582E434FF2B
-:1022E000F583ECF07892E6FF08E67E03CFC313CFC8
-:1022F00013DEF9FE788FE675F008A42449F582E430
-:1023000034FFF583EEF0788FE675F008A4244AF5E3
-:1023100082E434FFF5837480F07890ECF67D0078E9
-:1023200093E62CF618E63DF67892E6FD08E67C0387
-:10233000CDC313CD13DCF9FC788FE675F008A42427
-:102340004DF582E434FFF583ECF0788FE675F00804
-:10235000A4244EF582E434FFF583E4F07892E6FDA0
-:1023600008E6FC788FE6FF7E00EE24FE5003022490
-:10237000DDE4EE75F007A4247FF582E434F8F583FC
-:10238000E0FFE4EF5480FAE4EF540F14FFE4EE753D
-:10239000F007A42481F582E434F8F583E07890F620
-:1023A000E4EE1313548024F0F8E434FDF9E8FCE97A
-:1023B000FD8A5AEA700302244AE4EF75F008A42467
-:1023C00048F582E434FFF583E4F07890E6FAE4EF30
-:1023D00075F008A4244FF582E434FFF583EAF0EDAC
-:1023E000FBEC7A03CBC313CB13DAF9FAE4EF75F005
-:1023F00008A42449F582E434FFF583EAF07890E6F6
-:102400007B00FAEC2AFCED3BFDFBEC7A03CBC3131B
-:10241000CB13DAF9FAE4EF75F008A4244DF582E461
-:1024200034FFF583EAF0E4EF75F008A4244AF5825E
-:10243000E434FFF5837480F0E4EF75F008A4244ED3
-:10244000F582E434FFF5837480F00224D9E4EF755B
-:10245000F008A42408F582E434FFF583E4F07890D2
-:10246000E6FAE4EF75F008A4240FF582E434FFF5F2
-:1024700083EAF0EDFBEC7A03CBC313CB13DAF9FA62
-:10248000E4EF75F008A42409F582E434FFF583EA4B
-:10249000F07890E67B00FAEC2AFCED3BFDFBEC7A51
-:1024A00003CBC313CB13DAF9FAE4EF75F008A424D5
-:1024B0000DF582E434FFF583EAF0E4EF75F008A44B
-:1024C000240AF582E434FFF583E4F0E4EF75F008C4
-:1024D000A4240EF582E434FFF583E4F00E022366B3
-:1024E0008E597892EDF608ECF6788FEFF6122055BB
-:1024F000228C26EC30E718E526540F1475F008A45A
-:102500002448F582E434FFF583E054DFF08016E5DB
-:1025100026540F1475F008A42408F582E434FFF55E
-:1025200083E054DFF0227C0022EC90FC37F08C2416
-:10253000ED2403F5257D00D39572ED95714003855B
-:102540007225E52524B75009752503740290FC37E0
-:10255000F0AC2512302422E4F56CF56B12255D22D7
-:1025600090FC35E06573600E740490FC37F0E4F580
-:102570006B756C0380467D73E4FEFF79357AFC7BD6
-:10258000017405780012033FE56C2403F56CE56BDC
-:102590003400F56BE56CD39572E56B95714006855B
-:1025A000726C85716BD3E56C9448E56B9400400CBC
-:1025B000740290FC37F0E4F56B756C03AC6C123070
-:1025C0002422EC90FC37F0E4F56CF56B8C32EC6077
-:1025D0000512301580057C001230242290FF93E014
-:1025E0004401F0B2B390FF04E0F54A90FF06E0FD2D
-:1025F000A3E0ED7D00FC7D00FC90FF06E0FFA3E082
-:102600007E00FFE4FEEC4EFCED4FFDC3EC9448ED84
-:102610009400502290FF06E0FDA3E0ED7D00FC7DDC
-:1026200000FC90FF06E0FFA3E07E00FFE4FEEC4E1E
-:10263000FCED4FFD8004E4FD7C488C728D7190FFB1
-:1026400002E0FDA3E0ED7D00FC7D00FC90FF02E0D8
-:10265000FFA3E07E00FFE4FEEC4EF54CED4FF54BA2
-:10266000756A357569FC7568017D357EFC7F017979
-:1026700073E4FAFB7405780012033F754900E549DD
-:1026800024FE4019AD6AAE69AF68E412030F054934
-:102690000DED70010E8D6A8E698F6880E1756A3567
-:1026A0007569FC75680190FF00E05460B400028019
-:1026B00006D35003022C6DE54A540FF549E54A5400
-:1026C00080A2E0920290FF01E0120181000B2C68D1
-:1026D00026E528032C68290F2C6829F22A262B8D41
-:1026E0002B902BD02C112C3FE56D30E70EE54C459F
-:1026F0004B7008E572640245716003022C6A90FF1A
-:1027000000E0541FB400028003D34029E54A60036F
-:10271000022800AD6AAE69AF68740112030F78AD8C
-:10272000E630E00BAD6AAE69AF68740212030F7C4D
-:102730000212302422B401028003D3401BE56D2035
-:10274000E107E54A6003022800E54A24FE5003023F
-:1027500028007C0212302422B402028006D35003E7
-:102760000227FEE56D20E10DE54A6009E54A648037
-:102770006003022800AC4A1230AB4003022800E597
-:1027800049702530021190FF80E05408AD6AAE69AF
-:10279000AF6812030F800F90FF82E05408AD6AAE5D
-:1027A00069AF6812030F803D154930021DE5497578
-:1027B000F008A42448F582E434FFF583E05408AD22
-:1027C0006AAE69AF6812030F801BE54975F008A473
-:1027D0002408F582E434FFF583E05408AD6AAE695D
-:1027E000AF6812030FAD6AAE69AF681201E6600B05
-:1027F000AD6AAE69AF68740112030F7C0212302417
-:10280000228000022C6AE56D20E706E572457160C2
-:1028100003022C6A90FF00E0541FB400028003D32F
-:10282000401AE54C14454B7004E54A600302290C3C
-:1028300078ADE654FEF67C0012302422B40102800A
-:1028400003D3402AE56D20E108E56D20E00302296D
-:102850000CE56D30E004E54A700BE56D30E109E50B
-:102860004A24FE500302290C7C0012302422B402B8
-:10287000028006D3500302290AE54C454B6003024F
-:10288000290CAC4A1230AB400302290CE56D20E163
-:1028900007E56D20E0028077E56D30E006E54960F0
-:1028A00002806CE549700F90FF82E054F7F090FFD2
-:1028B00080E054F7F022E549B401028003D34009D7
-:1028C0007D017C03120F098011B402028003D34002
-:1028D000097D017C04120F0980001549300215E5BD
-:1028E0004975F008A42448F582E434FFF583E054E8
-:1028F000F7F08013E54975F008A42408F582E43464
-:10290000FFF583E054F7F07C0012302422800002AF
-:102910002C6AE56D20E706E57245716003022C6ABA
-:1029200090FF00E0541FB400028003D3401AE54C2E
-:1029300014454B7004E54A60030229EF78ADE64484
-:1029400001F67C0012302422B401028003D3402916
-:10295000E56D20E108E56D20E0030229EFE56D302B
-:10296000E004E549700BE56D30E108E54924FE50CF
-:1029700002807F7C0012302422B402028003D34004
-:102980006FE54C454B60028069AC4A1230AB4002A7
-:102990008060E56D20E107E56D20E0028054E549A7
-:1029A000701430020990FF80E04408F0800790FF27
-:1029B00082E04408F022E56D30E13315493002151C
-:1029C000E54975F008A42448F582E434FFF583E076
-:1029D0004408F08013E54975F008A42408F582E462
-:1029E00034FFF583E04408F07C001230242280029A
-:1029F0008000022C6AE56D20E712E5724571700CCB
-:102A0000E54A700890FF00E0541F6003022C6AE55D
-:102A10004C90FFFFF090FFFFE06005436D018003E5
-:102A2000536DFE7C0012302422E56D30E70EE57216
-:102A30004571600890FF00E0541F6003022C6AADEE
-:102A40004BE54CED7D00FC7D00FCBD0002800302E7
-:102A50002B88B401028003D34032E54A7005E54C6F
-:102A6000FC6003022B8A756A407569F8756801D3AA
-:102A7000E5729412E57194004006E4FD7C12800436
-:102A8000AC72AD718C708D6F12303922B40202803D
-:102A900003D34059E54A6003022B8AE54CFC7027BA
-:102AA000756A527569F8756801D3E5729419E57114
-:102AB00094004006E4FD7C198004AC72AD718C700A
-:102AC0008D6F1230398025756A6B7569F8756801EC
-:102AD000D3E5729427E57194004006E4FD7C2780DD
-:102AE00004AC72AD718C708D6F12303922B4030258
-:102AF0008006D35003022B88E54CF549700F90FFF8
-:102B000004E0FDA3E04D6003022B8A801890FB02D5
-:102B1000E0FDA3E0FC90FF05E06C700790FF04E08F
-:102B20006D60028068E4F570F56F7F00E54914C5BB
-:102B300049600FEF2400F582E434FBF583E02FFFBA
-:102B400080EA8F4AE54A2400F582E434FBF583E00D
-:102B50007D00D39572ED95714006AC72AD71800F1A
-:102B6000E54A2400F582E434FBF583E07D00FC8C2B
-:102B7000708D6FE54A2400FCE434FBFDFEECFD7F24
-:102B8000018D6A8E698F68123039228000022C6AAA
-:102B9000022C6AE56D30E719E5721445717012E593
-:102BA0004A700EE54C454B700890FF00E0541F60E2
-:102BB00003022C6AE56D20E008E56D20E103022C9C
-:102BC0006A756A6EE4F569F568E4F56F04F57012EC
-:102BD000303922E56D20E712E5724571700CE54A47
-:102BE000700890FF00E0541F6003022C6AE56D201E
-:102BF000E007E56D20E1028074854C6EE56E70089B
-:102C0000436D01536DFD8006536DFE436D027C00E4
-:102C100012302422E56D30E71AE572144571701305
-:102C2000E54A700FE54C454B700990FF00E0541FDA
-:102C30001460028038E56D20E10280317C011230A1
-:102C40002422E56D20E715E5724571700FE54C45CE
-:102C50004B700990FF00E0541F146002800FE56D77
-:102C600020E10280087C00123024228000022F2BF9
-:102C7000B440028006D35003022F2190FF01E09060
-:102C8000FC35F0E54A90FC36F0E490FC37F0E56A5C
-:102C90002403F56AE5693400F569AD4BE54C856AB6
-:102CA00082856983CDF0A3CDF090FF01E01201B7DA
-:102CB0002CD8012CFE022D28032D52042DA0052D09
-:102CC000DD062E03072E29082E55092E7B0B2EA17B
-:102CD0000C2EB0802EB08100002F0EE56D20E7068F
-:102CE0007C051225BF227D247E357F0279387AFC4F
-:102CF0007B017408780012033F7D087C00122526B2
-:102D000022E56D20E7067C051225BF22E54AB403C3
-:102D1000004010B40500500BE54A7F00FE7C101205
-:102D200031FB227D007C0712252622E56D20E70677
-:102D30007C051225BF22E54AB403004010B405000B
-:102D4000500BE54A7F00FE7C111231FB227D007C96
-:102D50000712252622E56D20E7067C051225BF22F5
-:102D6000E54AB405028003D3400AE4FF04FE7C0A6E
-:102D70001231FB22B401028003D3400AE4FF04FEB7
-:102D80007C081231FB22B403004010B40500500B44
-:102D9000E54A7F00FE7C131231FB227D007C071286
-:102DA000252622E56D20E734D3E5729448E5719439
-:102DB000005006E572457170067C021225BF22E5BF
-:102DC0004AB40103B3400BC3B403004009B4060086
-:102DD00050041230D1227C071225BF2212255D2219
-:102DE000E56D20E71DE54AB403004010B40500502E
-:102DF0000BE54A7F00FE7C161231FB227C07122570
-:102E0000BF2212255D22E56D20E71DE54AB40300CF
-:102E10004010B40500500BE54A7F00FE7C191231CA
-:102E2000FB227C071225BF2212255D22E56D20E7DB
-:102E300023748190FF93F0E54AB403004010B40579
-:102E400000500BE54A7F00FE7C171231FB227C0705
-:102E50001225BF2212255D22E56D20E71DE54AB44B
-:102E600003004010B40500500BE54A7F00FE7C18BB
-:102E70001231FB227C071225BF2212255D22E56D4F
-:102E800020E71DE54AB403004010B40500500BE5EF
-:102E90004A7F00FE7C151231FB227C071225BF22DF
-:102EA00012255D22E56D20E7067C071225BF221260
-:102EB000255D22E56D30E72090FF00E0541F701083
-:102EC00090FF01E0B48005122554800312255D2295
-:102ED0007D007C051225262290FF00E0541F60062D
-:102EE0007C051225BF22D3E5729448E57194005009
-:102EF0000BC3E5729407E571940050067C0312251C
-:102F0000BF22E54AB405041230D1227C071225BF46
-:102F100022E56D30E7087D007C05122526227C0520
-:102F20001225BF22B420028003D340008000122F5C
-:102F3000FF2275430090FF83E0540FD39543402454
-:102F4000E54324F0F582E434FEF583E0AD6AAE6932
-:102F5000AF6812030F05430DED70010E8D6A8E6987
-:102F60008F6880D1E5437D00FCC3E5709CF570E57A
-:102F70006F9DF56FE570456F6006E490FF83F0226A
-:102F800090FF82E04408F0E4F56F75704990FC35DD
-:102F9000E0B405028003D3404090FC36E0F543B432
-:102FA00005028003D3400AE4FF04FE7C0B1231FBD0
-:102FB00022B401028003D3400AE4FF04FE7C09121C
-:102FC00031FB22B403004010B40500500BE5437FF1
-:102FD00000FE7C141231FB2222B480004023B48214
-:102FE00000501E7C357DFC12177E7D008C6C8D6B35
-:102FF00090FC37E06005122FFF80057C0012302422
-:10300000222290FF83E0547FF090FF82E04408F09A
-:1030100090FF80E04408F02290FF82E04408F090A6
-:10302000FF80E04408F0228C237D008C708D6F754A
-:103030006A357569FC7568011230392290FF83E0AA
-:10304000547FF0E5706449456F700122C3E57094C8
-:1030500008E56F94004015752108E5217D00FCC34B
-:10306000E5709CF570E56F9DF56F8009857021E432
-:10307000F56F757049752200E522C395215026AD84
-:103080006AAE69AF681201E6FCE52224F8F582E435
-:1030900034FEF583ECF005220DED70010E8D6A8E85
-:1030A000698F6880D3E521547F90FF81F0228C489E
-:1030B0007F00EF24FD4019E4EF75F007A4247FF5AD
-:1030C00082E434F8F583E065487002D3220F80E291
-:1030D0008F47C32285727085716F90FF82E054F72D
-:1030E000F090FF83E0547FF022C000C001C002C016
-:1030F00006C007E5782408F8860653067F7CFF1291
-:10310000315B7C007D00E57B6046FF90FD95E054DF
-:103110007F6E700FC083C082A3E0FDA3E0FCA31507
-:103120007B8007A3A3A3DFE68026DF06D082D083BF
-:10313000801EE0F8A3E0F9A3E0FAD082D083E8F0A3
-:10314000A3E9F0A3EAF0A3C083C082A3A3A380DA1B
-:103150001231F4D007D006D002D001D0002285A8C9
-:103160007A75A888EC70027C3F8C7922E578240877
-:10317000F8760012324880FBC000C001C002C006D1
-:10318000C007AE047CFF12315BE57B6042FF90FD1F
-:1031900095E0547F6E700BC083C082A3A3A3157B00
-:1031A0008007A3A3A3DFEA8026DF06D082D0838036
-:1031B000D8E0F8A3E0F9A3E0FAD082D083E8F0A346
-:1031C000E9F0A3EAF0A3C083C082A3A3A380DA78C6
-:1031D00008087918097C01E6547F6E70067600773E
-:1031E00000800608090CBC08EE1231F4D007D006A6
-:1031F000D002D001D00022757900857AA822C0F0D3
-:10320000C082C083C3E57B24E8500512324880F4B5
-:10321000EC6031903523E493C39C4028C0047CFFCC
-:1032200012315BD004430480E57B75F003A4249540
-:10323000F582E434FDF583ECF0EFA3F0EEA3F005A6
-:103240007B1231F4D083D082D0F022C0047C20D213
-:103250008CD28DD504FDD0042275A8007588007528
-:10326000B80075F00075D000E4F8900000F608B8DA
-:1032700000FB020000C3ED940250047D037CE8ECE7
-:10328000F4FCEDF4FD0CBC00010D8C7F8D7E22C39F
-:10329000EC94BCED940250047D077CD0ECF4FCED82
-:1032A000F4FD0CBC00010D8C7D8D7C22EC700122A4
-:1032B000C000E5782418F8A604E5782408F8C65478
-:1032C0007FF6E630E703D0002212324880F4C28C49
-:1032D000857C8C857D8AD28CC0E0C0D0C0F0C08255
-:1032E000C083C000C001C002C003C004C005C00646
-:1032F000C007121AD1E5782408F8E66024E578249E
-:1033000010F8A681E57875F021A4248DF582E434C7
-:10331000FCF58378AEE58104C398F9E6F008A3D9FB
-:10332000FA74082578F8057808E65480700CE5787A
-:10333000B407F3780875780080EFE5782410F886F4
-:1033400081E57875F021A4248DF582E434FCF583C1
-:1033500078AEE58104C398F9E0F608A3D9FAD0075E
-:10336000D006D005D004D003D002D001D000D08345
-:10337000D082D0F0D0D0D0E032C0E0C0D0C000C009
-:1033800001C002C28E857E8D857F8BD28E781979A1
-:10339000097A07E77004A600800BE6600816E6705D
-:1033A00004E74480F70809DAEAE579601314F5794F
-:1033B000700EE5782408F876001231F4D28CD28DA4
-:1033C000D002D001D000D0D0D0E0327581AD742AC7
-:1033D00090FF93F0757F30757EF8757D60757CF099
-:1033E00012053612347C12173490FF93E04401F03A
-:1033F000B2B31234A612325680DA22C0007C01EC3D
-:103400002408F8E660090CBC08F512324880EED0BA
-:103410000022C0F0C082C083C000C006C007ED24F7
-:1034200010F876BCED75F021A4248DF582E434FC0F
-:10343000F583C082C083A3A3E4780DF0A3D8FCEC8D
-:10344000547F75F002A424EFF582E5F03434F5835F
-:10345000E493FE740193F5828E83E493FE740193EA
-:10346000FFD083D082EFF0A3EEF0ED2408F8EC4417
-:1034700080F6D007D006D000D083D082D0F022755D
-:103480007800757B007A087918780876007700084C
-:1034900009DAF8E478087480447FF674014410F582
-:1034A0008975B808D2ABD2A9227581ADD28ED28CE3
-:1034B000D2AFE57B6032FF90FD95E05480602478C8
-:1034C000087908E0547FFA7B00E6547FB502027B5E
-:1034D000FF08D9F5EB700CEAF01233F8AD04AC023A
-:1034E00012340FA3A3A3DFD212324880C57C017D22
-:1034F000002204F504E904ED04E104DD04D904E547
-:1035000004F1049D04A104CD04D104990499049903
-:1035100004D504B504AD04B104A904C104BD04B9C3
-:1035200004C504C904A5190103002200480200488B
-:103530000E301420C81AD0180A0C05060203010226
-:103540000001CE0181010000C00080006000300059
-:1035500018001000080004000200010008183828B4
-:103560000C05100A0200000000000301100A02000E
-:1035700000000000FBE0FBF209022700010200A0AE
-:10358000320904000003FF0000000705810240002B
-:103590000007050102400000070583030200012225
-:1035A0000354005500530042003300340031003012
-:1035B000002000200020002000200020002000200B
-:0535C000000000000006
-:00000001FF
diff --git a/firmware/ti_5052.fw.ihex b/firmware/ti_5052.fw.ihex
deleted file mode 100644
index b529e07cd6ec..000000000000
--- a/firmware/ti_5052.fw.ihex
+++ /dev/null
@@ -1,862 +0,0 @@
-:10000000C1350002001E021B32FFFFFFFFFF02325C
-:100010006AFFFFFFFFFFFFFFFFFFFFFFFFFF02334E
-:10002000157581C890FEF08583A012347DEC4D607B
-:100030006A78A58003760018B896FA7879800376F6
-:100040000018B85FFA78208003760018B820FA907C
-:10005000FEE5AE83AF8290FD001200A16005E4F0E2
-:10006000A380F690FEF0A88290FEF0A982E8C399E2
-:10007000500576000880F69000FF1200AA90010358
-:100080001200AA9001071200AA90010B1200C8905A
-:1000900001111200C89001171200C875D000123368
-:1000A0006702011DEF65827003EE658322E493F819
-:1000B000740193F9740293FE740393F5828E83E8BE
-:1000C00069700122E493F6A30880F4E493FC7401C0
-:1000D00093FD740293FE740393FF740493F8740504
-:1000E00093F58288831200A1700122E493A3A88370
-:1000F000A9828C838D82F0A3AC83AD8288838982B0
-:1001000080E3212104927A7A0492A6A80492FEF058
-:1001100004940494FBFB04990494FBFB04F904F994
-:1001200080FED0F030F00920F303F68010F7800D48
-:1001300030F10920F303F28004F38001F020F4048D
-:10014000FCD0E0CC22CCC0E012015A02014BBC0032
-:1001500005D0F0ACF022C313DCFC020121BF000982
-:10016000ED258275F001F8E622BF010FED2582F53D
-:1001700082EE3583F58375F004E022ED258275F07B
-:1001800002F8E222D083D082F5F0C3E493A3C5F055
-:1001900095F0C0E0C3D0F0E493A395F04012A3A380
-:1001A000C3E5F033500205832582F58250020583B2
-:1001B000740193C0E0E493C0E022D083D082F5F0D4
-:1001C000E49370097401937004A3A3800C740293E8
-:1001D00065F06005A3A3A380E7740193C0E0E493F6
-:1001E000C0E02212025B0201F21202AF0201F2121F
-:1001F00002D30201F230E00720E302E622E72230D8
-:10020000E10720E302E222E32230E202E022E4936B
-:10021000221202D302021A1202AF02021AABF01229
-:100220000224CBC5F0CB2230E01020E306E6F5F047
-:1002300008E622E7F5F009E7192230E11020E3068D
-:10024000E2F5F008E222E3F5F009E3192230E206D4
-:10025000E0F5F0A3E022E493F5F074019322BB00F3
-:1002600003740922BB010789828A83740422BB02BA
-:100270000789828A83741022740A2202027BBB00DF
-:1002800007E92582F8740122BB010DE92582F58278
-:10029000EA3583F583740422BB020DE92582F582D9
-:1002A000EA3583F583741022E92582F8740222026C
-:1002B00002AFBF0005EDF8740122BF01078D828EE9
-:1002C00083740422BF02078D828E83741022EDF89E
-:1002D0007402220202D3BF0007ED2582F8740122C6
-:1002E000BF010DED2582F582EE3583F5837404227E
-:1002F000BF020DED2582F582EE3583F58374102261
-:10030000ED2582F8740222020307C0E012025B02AC
-:10031000031FC0E01202AF02031FC0E01202D302AB
-:10032000031F30E00B20E304D0E0F622D0E0F722F8
-:1003300030E10B20E304D0E0F222D0E0F322D0E061
-:10034000F022C9CDC9CACECACBCFCB120352EDF928
-:10035000EEFAEFFB22BB002FBF000AFAEDF8E7F63A
-:100360000809DAFA22BF01128D828E83F802036F28
-:1003700009A3E7F0D8FA2202037AFAEDF8E7F208C7
-:1003800009DAFA22020384BB014DBF001489828A74
-:1003900083F9EDF802039608A3E0F6D9FA220203E6
-:1003A000A7BF01228D828E83FB08C9C582C9CAC539
-:1003B00083CAE0A3C9C582C9CAC583CAF0A3DBEA60
-:1003C000D8E8220203CA8D828E83F9EDF8E0F208A4
-:1003D000A3D9FA220203D4BB024DBF001289828A3C
-:1003E00083F9EDF80203E608A3E493F6D9F922BFF6
-:1003F00001238D828E83FB08C9C582C9CAC583CA01
-:10040000E493A3C9C582C9CAC583CAF0A3DBE9D8EE
-:10041000E72202041989828A83F9EDF8E493F2084D
-:10042000A3D9F92202042ABF000DFAEDF8E3F60879
-:1004300009DAFA22020434BF01128D828E83F80297
-:10044000044109A3E3F0D8FA2202044CFAEDF8E3E0
-:10045000F20809DAFA22020456E6FB08E6FA08E690
-:10046000F904F61870010622E6FF08E6FE08E6FD2C
-:1004700022EFF0A3EEF0A3EDF022EBF0A3EAF0A35D
-:10048000E9F022E0FFA3E0FEA3E0FD22E0FBA3E011
-:10049000FAA3E0F9220000000000000004F9005B6C
-:1004A00005730026059A00330A0B005B0A7700608B
-:1004B0001552005B0CFB005B09AB005B09E2005BC3
-:1004C0000DC2005B0BF3005B0A1E005B0A53005B6E
-:1004D000174A0033176000341E4D00431EF00044DD
-:1004E000205D0044204B00471F1700471FBC004DF4
-:1004F000200D004F1F39005831F5005B7CCC7DFF8B
-:10050000121CFE22749090FF91F090FFFCE020E717
-:100510002DC2AFAE59AF58755A20E55A14C55A606E
-:1005200019E4FE7F05EE4FCE24FFCECF34FFCF601F
-:1005300007E490FF92F080ED80E08E598F582212F0
-:1005400005017D077CB71232117D0F7C6E12322BB4
-:1005500078977A06E4F608DAFC7A061205CF7C036F
-:10056000120E577C04120E5712218BE4FEFF7C0FF3
-:1005700012319AD2A822123085E490FD40F090FF0B
-:10058000F0E030E408740190FD41F08005E490FD56
-:1005900041F07D0A7C001224B1123108221230850C
-:1005A00090FD41E014700E90FFF0E04410F07C00EC
-:1005B00012254A801990FD41E0700E90FFF0E05442
-:1005C000EFF07C0012254A80057C1712254A123173
-:1005D000082290FFF0E054ABF090FFF0E04420F0F0
-:1005E000228C378D36787CEDF608ECF6EDFEECFDCE
-:1005F0007F019000051201EC787AF6787CE6FD0820
-:10060000E6FCEDFEECFD7F019000041201EC540FBE
-:10061000FC7D7A12179D787AE6700DAD3AAE39AF4F
-:1006200038E412030F7C082290FFF0E054FEF090B3
-:10063000FFF0E054FDF0801E787CE6FD08E6FCED5E
-:10064000FEECFD7F0190000812020E25E0440190AF
-:10065000FFF3F00206DB787CE6FD08E6FCEDFEEC3D
-:10066000FD7F0190000612020E54FE90FFF3F08011
-:100670002B787CE6FD08E6FCEDFEECFD7F019000AA
-:100680000812020EFAEB90FFF1F01208CA400DAD0D
-:100690003AAE39AF38E412030F7C1822787CE6FDBD
-:1006A00008E6FCEDFEECFD7F0190000812020E90C2
-:1006B000FFF1F01208CA400DAD3AAE39AF38E4127E
-:1006C000030F7C1822787CE6FD08E6FCEDFEECFDCD
-:1006D0007F0190000612020E440190FFF3F0787D36
-:1006E000E62403F618E63400F6787AE624FE50098C
-:1006F00090FFF0E054FDF0800790FFF0E04402F03E
-:10070000E490FFF1F0787B7600787AE624FFFCE451
-:1007100034FFFD787BE67F00FEECD39EEF6480CD56
-:1007200064809D402F1208AF400F787BE6AD3AAE53
-:1007300039AF3812030F7C182290FFF2E0FC787C6E
-:100740008683088682ECF0787B06A3787CA68308F3
-:10075000A68280B51208AF400F787BE6AD3AAE397D
-:10076000AF3812030F7C182290FFF2E0FC787C86F1
-:1007700083088682ECF0787AE6AD3AAE39AF38126B
-:10078000030F7C00228C378D36787CEDF608ECF672
-:10079000EDFEECFD7F019000051201EC787BF67810
-:1007A0007CE6FD08E6FCEDFEECFD7F019000041206
-:1007B00001EC540FFC7D7B12179D787BE670037C67
-:1007C000082290FFF0E054FEF090FFF0E054FDF0BE
-:1007D000801B787CE6FD08E6FCEDFEECFD7F0190D9
-:1007E000000812020E25E090FFF3F0805B787CE6B3
-:1007F000FD08E6FCEDFEECFD7F0190000612020E06
-:1008000054FE90FFF3F08021787CE6FD08E6FCEDD5
-:10081000FEECFD7F0190000812020EFAEB90FFF152
-:10082000F01208CA40037C1822787CE6FD08E6FC3A
-:10083000EDFEECFD7F0190000812020E90FFF1F03A
-:100840001208CA40037C1822787DE6240AF618E6CE
-:100850003400F6787A7600787BE624FFFCE434FFF7
-:10086000FD787AE67F00FEECD39EEF6480CD648055
-:100870009D4021787C8683088682E090FFF1F0120B
-:1008800008CA40037C1822787A06787D06E618703C
-:10089000010680C390FFF0E04401F0787C86830875
-:1008A0008682E090FFF1F01208CA40037C18227C97
-:1008B000002290FFF0E020E71290FFF0E030E50921
-:1008C00090FFF0E04420F0C32280E7D32290FFF0B5
-:1008D000E020E31290FFF0E030E50990FFF0E04403
-:1008E00020F0C32280E7D3228C428D417C00ED545E
-:1008F000F0FDEC7003ED64307005753E0380037508
-:100900003E04AC3E120F7C758300858340E5415464
-:100910000FF53FE5407004E53F64037035E53E2484
-:10092000FD75F00AA4240AF582E434FDF583E03075
-:10093000E6051210678019E53E2497F8C654FBF6C9
-:1009400078A3E62405F58218E63400F583740FF0E9
-:100950008059E5407004E53F64047048E53E24FD9D
-:1009600075F00AA4240AF582E434FDF583E030E54D
-:1009700007AC42AD41121C93E54230E21578A7E680
-:1009800030E00F78A7E630E109E4FF04FE7C0412B2
-:10099000319A78A3E62406F58218E63400F58374CC
-:1009A0000FF08007E4FC7DEE121C93C2032212308C
-:1009B00085120F7C78A3E62406F58218E63400F54C
-:1009C00083E090FD40F078A3E62405F58218E63434
-:1009D00000F583E090FD41F0C2037D027C0012240B
-:1009E000B112310822123085788FECF6EC2497F89A
-:1009F000E630E1077C1312254A800F90FD41E0FDAF
-:100A0000788FE6FC1213FD12254A123108221230AB
-:100A100085788FECF67D00120F0B12254A123108F3
-:100A200022123085788FECF6EC2497F8E630E20756
-:100A30007C1312254A801B788FE62497F8E620E184
-:100A4000077C1212254A800A788FE6FC12142112C4
-:100A5000254A12310822123085788FECF6EC249763
-:100A6000F8E620E2077C1112254A800A788FE6FC1E
-:100A700012152212254A12310822123085788FEC85
-:100A8000F6120F7C78A3E62409F58218E63400F507
-:100A900083E090FD47F078A3E6240AF58218E63457
-:100AA00000F583E090FD48F078A3E62403F5821872
-:100AB000E63400F583E0FC78A3E62404F58218E62A
-:100AC0003400F583E0F55C78A3E62402F58218E6AD
-:100AD0003400F583E0F55D8C5BE4EC33335401784E
-:100AE0008FF66008E55C30E103788F06788FE6903A
-:100AF000FD49F078A1E62402F58218E63400F5837A
-:100B0000E0FDA3E0540CFCED54E68C5FF55EE55B84
-:100B100030E503435F01E55C20E50EE55B547F7043
-:100B200008E55B20E703435F02E55B30E303435FD7
-:100B300010E55B30E203435F20E55B540360034351
-:100B40005F40E55B30E103435F80E55B30E40343F6
-:100B50005E01E55B30E603435E08E55C20E40EE5FC
-:100B60005B547F7008E55B20E703435E10535FFB37
-:100B7000535EF9AD5EE55F90FD42CDF0A3CDF0E5AB
-:100B80005D30E30DE55D5430C4540F90FD45F080B9
-:100B900005E490FD45F0E55D540390FD44F0E55D0E
-:100BA0005404C31390FD46F090FD44E0700E7D3D6B
-:100BB0007EFD7F01740190000912014278A3E624B2
-:100BC00008F58218E63400F583E07C00FD78A3E6A2
-:100BD0002407F58218E63400F583E07F004CFEEF31
-:100BE0004D90FD40F0A3CEF0CEC2037D0A7C0012F2
-:100BF00024B112310822123085788FECF678947681
-:100C0000010876FD0876407891760C789412046598
-:100C10001202147892CBF6CB08F67F00EF24EB405B
-:100C20001FE4EF25E09034BFFD93CD0493789366E5
-:100C30007003ED186670067891760080030F80DCF3
-:100C40007890EFF6789412046590000212020E7804
-:100C500092CBF6CB08F65404CB54064B6004789143
-:100C6000760B7893E630E3137894120465900005D0
-:100C70001201EC24FB50047891760D7893E654C071
-:100C80007D0064C04D70047891760B7894120465F1
-:100C90009000041201EC24FC50047891760F7894B3
-:100CA0001204659000061201EC24FD500478917640
-:100CB0000E78941204659000091201EC24FD500492
-:100CC0007891760A7891E6702A788FE6FC120F7C8C
-:100CD000789412046578A1E6F978A0E6FA7B0174AD
-:100CE0000A780012033FC203788FE6FC12112378C2
-:100CF00091ECF67891E6FC12254A12310822123066
-:100D000085788FECF6120F7C788FE624FD75F00A5B
-:100D1000A4241CF582E434FDF583AC82AD8378A075
-:100D20008683088682ECF9EDFA7B0A78011203A724
-:100D3000C203788FE6FC121123123108228D2B8C0E
-:100D40002AED60407527017529487528FFE52A249A
-:100D5000FDFCE434FFFDEC7C0325E0CD33CDDCF974
-:100D6000FCE5292CF529E5283DF528AD29AE28AF6D
-:100D700027748090000612031774809000021203FB
-:100D800017120FD3E52B14603B75270175290875E1
-:100D900028FFE52A24FDFCE434FFFDEC7C0325E07C
-:100DA000CD33CDDCF9FCE5292CF529E5283DF528E6
-:100DB000AD29AE28AF27E4900006120317E4900097
-:100DC0000212031722123085788FECF6EC2497F884
-:100DD000E630E209788FE6FC121522D200788FE621
-:100DE000FC120F7C7890760090FD41E030E70478AB
-:100DF0009076017890E6FD788FE6FC120D3AC203FA
-:100E0000300007788FE6FC1214217C0012254A126C
-:100E100031082278A3E62404F58218E63400F5832D
-:100E2000E04401F078A3E62404F58218E63400F5E6
-:100E300083E030E00280ED78A3E6240BF58218E62B
-:100E40003400F583E054F8F078A3E62402F5821824
-:100E5000E63400F583E04480F022C2038C58120F80
-:100E60007C78A0868308868279EE7A347B0A7801C2
-:100E70001203F5120E10AC587D02120D3AC203ACEB
-:100E800058121123228D538E528F518C50120F7C89
-:100E9000754F0078A3E62405F58218E63400F58343
-:100EA000E020E416E54F24F64010054FC2037C18FD
-:100EB000123248AC50120F7C80D978A3E62405F595
-:100EC0008218E63400F583E020E405C2037C0222A8
-:100ED00078A3E62405F58218E63400F583E0540F84
-:100EE000601678A3E62405F58218E63400F583E061
-:100EF000540FF0C2037C012278A28683088682E028
-:100F0000AD53AE52AF5112030FC2037C00228D319C
-:100F10008C30121522E5316020E530B4030C7C01E1
-:100F200012247C7C8112247C800FE530B4040A7C7E
-:100F30000212247C7C8212247CAC30120F7CE531BE
-:100F4000601A78A48683088682E054E7F0A3A3A3FE
-:100F5000A3E054E7F0AC307D02120D3A78A086830E
-:100F600008868279F87A347B0A78011203F5C20385
-:100F7000E5302497F8C654FDF6AC30121123228CCC
-:100F8000263003051231E780F87C0A1230FAD203CA
-:100F9000E52624FD789DF6700978A476FF0876E0B2
-:100FA000800778A476FF0876E2789DE675F010A4B5
-:100FB000ADF0FC24A078A3F6ED34FF18F6789DE69A
-:100FC00075F00AA42408FCE434FDFD78A0EDF608D1
-:100FD000ECF61231932278A3E62402F58218E63467
-:100FE00000F583E030E72278A3E62402F58218E6D4
-:100FF0003400F583E0547FF078A3E62402F58218EC
-:10100000E63400F583E04480F02278A486830886E5
-:1010100082E0547FF0AD83E5822404FCE43D8C82C1
-:10102000F583E0547FF078A3E6240BF58218E634CC
-:1010300000F583E054F8F078A5E62401F58218E67F
-:101040003400F583E04403F078A5E62405F5821822
-:10105000E63400F583E04403F078A3E62405F58246
-:1010600018E63400F583740FF02278A4868308868E
-:1010700082E0543FF0AD83E5822404FCE43D8C82A1
-:10108000F583E0543FF0789DE6249EF8E6FC78A5D1
-:10109000E62401F58218E63400F583ECF0789DE64D
-:1010A000249EF8E6FC78A5E62405F58218E63400CF
-:1010B000F583ECF078A3E6240BF58218E63400F50E
-:1010C00083E054FB4402F52678A1E62402F5821859
-:1010D000E63400F583E030E50343260178A3E624F7
-:1010E00005F58218E63400F583E030E003120FD3F3
-:1010F000E526FC78A3E6240BF58218E63400F58398
-:10110000ECF078A3E62405F58218E63400F5837444
-:101110000FF078A48683088682E04480F0A3A3A31E
-:10112000A3E04480F0228C2A120F7C78A1E62408E8
-:10113000F58218E63400F583E0FC78A3E6240AF58E
-:101140008218E63400F583ECF078A1E62407F582F6
-:1011500018E63400F583E0FC78A3E62409F582184C
-:10116000E63400F583ECF078A08683088682E0FD03
-:10117000A3E0FCEDFE78A3E62408F58218E634002F
-:10118000F583EEF0ECFE78A3E62407F58218E6344A
-:1011900000F583EEF08C298D28C3EC9402ED9406C3
-:1011A000400575277C8033D3E5299481E528940197
-:1011B000400575273C8023D3E52994C0E528940099
-:1011C00040057527188013D3E5299430E52894004D
-:1011D000400575270C8003752708AF27E4EF547C82
-:1011E0004483FF8F27E527FC78A5E62401F58218C4
-:1011F000E63400F583ECF0E527FC78A5E62405F558
-:101200008218E63400F583ECF0E527FC789DE624AF
-:101210009EF8ECF678A3E62402F58218E63400F591
-:1012200083E0F52778A1E62402F58218E63400F57C
-:1012300083A3E030E3175327C778A1E62405F5829E
-:1012400018E63400F583E09034E993422778A1E66C
-:101250002402F58218E63400F583E030E7054327E1
-:101260004080035327BF5327FB78A1E62406F5826D
-:1012700018E63400F583E060034327045327FC7825
-:10128000A1E62404F58218E63400F583E042274302
-:101290002780E527FC78A3E62402F58218E63400CF
-:1012A000F583ECF078A3E62404F58218E63400F523
-:1012B00083E0F52778A1E62402F58218E63400F5EC
-:1012C00083A3E030E1055327DF800343272078A183
-:1012D000E62402F58218E63400F583E030E4055395
-:1012E00027EF800343271078A1E62409F58218E64A
-:1012F0003400F583E0B40203432702E527FC78A31A
-:10130000E62404F58218E63400F583ECF078A3E6D1
-:101310002403F58218E63400F583E0F52778A1E68A
-:101320002409F58218E63400F583E0700553277F21
-:10133000800343278078A1E62402F58218E6340072
-:10134000F583A3E030E00543272080035327DF78AF
-:10135000A1E62402F58218E63400F583E030E305C7
-:1013600043274080035327BF78A1E62402F5821863
-:10137000E63400F583E030E005432710800353276F
-:10138000EF78A1E62402F58218E63400F583A3E0A5
-:1013900030E40543270880035327F778A1E62402A9
-:1013A000F58218E63400F583A3E030E50543270411
-:1013B00080035327FB78A1E62402F58218E6340067
-:1013C000F583A3E030E60543270180035327FE7829
-:1013D000A1E62402F58218E63400F583A3E030E7A5
-:1013E0000543270280035327FDE527FC78A3E62465
-:1013F00003F58218E63400F583ECF0C2037C00228A
-:101400008D278C26ED54031460037C1022E52754AD
-:101410007C24FC40037C0B22E5262497F8C644027A
-:10142000F67C00228C30120F7CE5302497F8E62001
-:10143000E24FAC307D02120D3AE53024FE4428FC28
-:1014400078A48683088682ECF0AF83E5822404FECC
-:10145000E43FFFEC8E828F83F07C038C2CE52CFC28
-:1014600078A5E62401F58218E63400F583ECF0E572
-:101470002CFC78A5E62405F58218E63400F583EC0B
-:10148000F0752D01752F48752EFFE53024FDFCE425
-:1014900034FFFDEC7C0325E0CD33CDDCF9FCE52FFA
-:1014A0002CF52FE52E3DF52E78A5E62404F58218BF
-:1014B000E63400F583E054E7F52CAD2FAE2EAF2DCA
-:1014C000E4900002120317E49000061203171201C1
-:1014D000E630E503432C10E52CFC78A5E62404F562
-:1014E0008218E63400F583ECF012106778A3E62446
-:1014F00006F58218E63400F583E0C203FCE53024EB
-:1015000097F8C64404F68C2CE530540FC454F07E92
-:1015100000FFEEEF44047D00FFEC4EFCED4FFD12AA
-:101520001CFE7C00228C2F120F7C12100778A486E0
-:1015300083088682E05408F0A3A3A3A3E05408F034
-:10154000AC2F7D02120D3AC203E52F2497F8C65442
-:10155000FBF67C00221230857890ECF6EC2497F8AC
-:10156000E630E10A7D007C131224B1123108789034
-:10157000E62497F8C64401F67890E6FC120F7C78D2
-:1015800090E624FD75F00AA4241CF582E434FDF5F0
-:101590008378A0E6FA08E6F97B0A78011203A778B7
-:1015A000A0868308868279F87A347B0A7801120350
-:1015B000F5120FD3C2037890E6FC121123788FEC5A
-:1015C000F6EC600A7D007C081224B1123108789094
-:1015D000E6FC120F7C78A3E62404F58218E63400BA
-:1015E000F583E0441054DFFC78A3E62404F5821868
-:1015F000E63400F583ECF0788FECF6C2037CC81279
-:1016000032487890E6FC120F7C78A3E62404F58239
-:1016100018E63400F583E054EFF0C2037CC81232C0
-:10162000487890E6FC120F7C78A3E62404F5821833
-:10163000E63400F583E04410F0C2037CC81232485F
-:101640007890E6FC120F7C78A3E62404F58218E675
-:101650003400F583E04420F0C2037CF01232487875
-:1016600090E6FC120F7C78A3E62405F58218E63498
-:1016700000F583E030E415C2037890E644107F0063
-:10168000FE7C0712319A12310802174978A3E6242A
-:1016900004F58218E63400F583E054CFF0C2037CF1
-:1016A000C81232487890E6FC120F7C78A3E6240436
-:1016B000F58218E63400F583E04430F0C2037CF094
-:1016C0001232487890E6FC120F7C78A3E62405F5E8
-:1016D0008218E63400F583E030E414C2037890E623
-:1016E00044107F00FE7C0712319A123108805D7829
-:1016F000A3E62404F58218E63400F583E054EFF005
-:1017000078A3E62404F58218E63400F583E054DF7C
-:10171000F07890E624FD75F00AA4241CF582E434E8
-:10172000FDF583AC82AD8378A08683088682ECF9D0
-:10173000EDFA7B0A78011203A7C2037890E6FC1247
-:1017400011237D007C0B1224B11231082212308546
-:1017500090FF91E090FD41F07D027C001224B112D7
-:1017600031082212308590FD40E0F4FC90FF91E0BA
-:101770005CF53390FD41E0FC90FD40E05C4233E5D8
-:101780003390FF91F07C0012254A12310822743CFC
-:1017900090FBE8F0743E90FBE8F0E490FD30F0221E
-:1017A0008D358C34ECB401028003D340028028B420
-:1017B00002028003D34008A835C625E0F68018B49D
-:1017C00004028003D3400AA835C625E025E0F68050
-:1017D00006A83576008000228C3C8D3BEDFEECFDAA
-:1017E0007F0175600675610090FD3112046E120173
-:1017F000E6B480028006D3500302189E90FD311299
-:1018000004809000031201EC54F0B430028003D342
-:10181000405F90FD3112048090000812020EFAFD24
-:10182000EBFE7F0190FD3412046EEECD903502FC8C
-:10183000E493FF740193FEF9EFFA7B01EAFFE9FEFE
-:10184000ECC39EED9F4025903504E493FD74019315
-:10185000FCEDFEECFD7F01EECDFC90FD36E0D39C6F
-:1018600090FD35E09D500575608080331219BC8075
-:101870002EB460028003D3400BAC3CAD3B12078218
-:101880008C60801BB41003B34010C3B42003B3407A
-:1018900009C3B440028003D340007560818000809A
-:1018A00075B481028003D3406B90FD3112048090A7
-:1018B00000031201EC54F0B430028003D3401D90B9
-:1018C000FD3112048090000812020EFAFDEBFE7F3B
-:1018D0000190FD3712046E1219268036B460028022
-:1018E00003D34013753A61E4F539F538AC3CAD3BB0
-:1018F0001205DE8C60801BB41003B34010C3B4200B
-:1019000003B34009C3B440028003D3400075608133
-:10191000800080028000E560FC90FD31120480ECC4
-:10192000900002120317AC612290FD3112048090E6
-:1019300000041201EC600474018001E4A2E0920151
-:1019400090FD31120480ED2403FD50010E90FD3412
-:1019500012046E90FD311204809000051201ECF526
-:10196000619000041201EC540FFC7D6112179DE59B
-:1019700061700475600822756000787E7600787E5C
-:10198000E6C39561503890FD371204801201E6FCE1
-:1019900090FD34120480EC12030F30010E90FD39DB
-:1019A000E004F090FD387003E004F0787E0690FDCE
-:1019B00036E004F090FD357003E004F080C0229022
-:1019C000FD32E0FDA3E0FCEDFEECFD7F01ED240A1D
-:1019D000FD50010E90FD3A12046E90FD311204800C
-:1019E0009000041201EC540FB401028003D340179D
-:1019F00090FD3A1204800DED70010E90FD37120437
-:101A00006E78827601804EB402028003D340199032
-:101A1000FD3A120480ED2402FD50010E90FD3712B4
-:101A2000046E78827602802DB404028003D34019BC
-:101A300090FD3A120480ED2404FD50010E90FD3714
-:101A400012046E78827604800CB400028003D340C6
-:101A5000007560082290FD3112048090000512018B
-:101A6000ECF561787F7600787FE6C39561400302EC
-:101A70001B24788076007880E6C378829650769032
-:101A8000FD341204801201E6FC90FD3A1204891222
-:101A900001E0F45CFC1201E0F890FD37120480E8EC
-:101AA000C0E01201E6C8D0E0C8584CFC90FD3412EA
-:101AB0000480EC12030F7881ECF690FD39E004F01D
-:101AC00090FD387003E004F009E970010A90FD3AD6
-:101AD00012047790FD311204809000041201EC3062
-:101AE000E40E90FD36E004F090FD357003E004F064
-:101AF00078800680817882E6FDE4FEFFEECDFC90E2
-:101B0000FD39E02CF090FD38E03DF07882E6FDE410
-:101B1000FEFFEECDFC90FD3CE02CF090FD3BE03D67
-:101B2000F0787F06021A6475600022E53D053D04E9
-:101B30007002B2B022C0E0C0F0C082C083C0D0E862
-:101B4000C0E0E9C0E0EAC0E0EBC0E0ECC0E0EDC01E
-:101B5000E0EEC0E0EFC0E090FF92E01201B71B8022
-:101B6000301B80321B8F381BA13A1BB33E1BCB446A
-:101B70001BBF461BD7501C19521BF8541C3A560069
-:101B8000001C5B90FF92E07F00FE7C0112319A0204
-:101B90001C6BE4FF04FE7C0312319A742090FFFE5C
-:101BA000F0021C6BE4FF04FE7C0212319A74409038
-:101BB000FFFEF0021C6BE4FF04FE7C0412319A026B
-:101BC0001C6BE4FF04FE7C0512319A021C6BE4FFDF
-:101BD00004FE7C0612319A021C6B90FFA5E07D008A
-:101BE00090FD00CDF0A3CDF090FD01E0FCF58390D9
-:101BF000FD00E04433FD121CFE807390FFB5E07DD4
-:101C00000090FD02CDF0A3CDF090FD03E0FCF58344
-:101C100090FD02E04443FD121CFE805290FFA6E0BE
-:101C20007D0090FD04CDF0A3CDF090FD05E0FCF526
-:101C30008390FD04E04434FD121CFE803190FFB619
-:101C4000E07D0090FD06CDF0A3CDF090FD07E0FC17
-:101C5000F58390FD06E04444FD121CFE801090FFC9
-:101C600092E07D00FCED44AAFD121CFE8000E49091
-:101C7000FF92F0D0E0FFD0E0FED0E0FDD0E0FCD05D
-:101C8000E0FBD0E0FAD0E0F9D0E0F8D0D0D083D0BB
-:101C900082D0F0D0E0320581058105810581A881DF
-:101CA000181818EDF608ECF690FF6AE020E70280BD
-:101CB000F790FF69E07D00A88118CDF6CD08F67D8C
-:101CC00003A881E618FCE6CC25E0CC33CCDDF9CCCA
-:101CD000F6CC08F6A88118E644F8F6A8811818187A
-:101CE000E6FD08E6FCA881188683088682EDF0A34D
-:101CF000ECF0740290FF6AF0158115811581158151
-:101D000022E5812405F581E4A88118F6A881181838
-:101D10001818EDF608ECF690FBFDE024F8500302ED
-:101D20001E1FE4A8811818F6A88118E6FEA88118DD
-:101D3000181818E6FD08E6FC7F00EF24F8404DE493
-:101D4000EF25E02485F582E434FDF583E0FBA3E094
-:101D50006C7003FAEB6D70097401A8811818F68095
-:101D60002BE4EF25E02485F582E434FDF5837A0049
-:101D7000E054F0CCF8CCCDF9CDFB7800E954F0F983
-:101D8000EA687002EB6970010E0F80AEA88118EE50
-:101D9000F6A88118181818EDF608ECF6A881EFF6E9
-:101DA000A8811818E67079A88118E624F74071A870
-:101DB0008118181818E6540FA881F664046017A853
-:101DC00081E664036010A88118181818E6FD08E67B
-:101DD000FC121C93804A7C0A1230FAA88118181849
-:101DE00018E6FD08E6FC90FBFCE025E02485F58282
-:101DF000E434FDF583EDF0A3ECF090FBFCE0FFE4B0
-:101E0000EF045407FF90FBFCF090FBFDE004F012A0
-:101E1000319390FBFEE07008E4FEFF7C0F12319AD4
-:101E2000802790FBFFE004F0543F701D90FBFFE023
-:101E300044FE7D00FC90FBFCE025E02485F582E477
-:101E400034FDF583EDF0A3ECF0E58124FBF5812270
-:101E50007885760078867600740190FBFEF012306B
-:101E60008590FBFDE060597C0A1230FA90FBFBE0A4
-:101E700025E02485F582E434FDF583E0FDA3E0FC54
-:101E800090FBFBE025E02485F582E434FDF583E456
-:101E9000F0A3F090FBFBE0FFE4EF045407FF90FB9E
-:101EA000FBF090FBFDE014F07883EDF608ECF61201
-:101EB0003193B2B37883E6FD08E6FC1208E580A111
-:101EC0001231E7788506B60011788576007886E6C7
-:101ED000F40404A2E092B47886F68085E490FBFED8
-:101EE000F090FBFDE07D00FCED44CFFD121C931251
-:101EF000310822123085E56A64494569601590FF12
-:101F000083E0540F7D00D3956AED95695005122E3C
-:101F1000CE8003122F9E12310822123085E56A64AA
-:101F20004945696005122FD8800E90FF80E0440873
-:101F3000F090FF83E0547FF0123108221230858C3C
-:101F400054EC54F0B4101575643D7563FD75620171
-:101F5000E5642403F564E5633400F563E4F557F5BF
-:101F600056E556C394015027E554540FFCAD64AEBA
-:101F700063AF62120E828C55EC600280120564E53C
-:101F800064700205630557E5577002055680D2E577
-:101F900054540F2497F8C654FEF6E554540F7F00AE
-:101FA000FE7C1212319AE5551470097D007C0912ED
-:101FB00024B18007AD577C001224B11231082212DF
-:101FC000308590FFFCE04402F090FF00E030E71322
-:101FD00090FF83E04480F043678090FFFCE0440181
-:101FE000F0801190FF82E04408F053677F90FFFC7F
-:101FF000E054FEF090FF81E04480F012256490FFF1
-:10200000FEE04405F090FFFCE054FDF012310822A0
-:102010001230857C0112324878A7E64402F674FE3D
-:10202000FC04FD121CFE90FF6AE030E70280F7E43A
-:10203000F54E754D10AC4EAD4DE54E154E7002157A
-:102040004DEC4D600280EE438701123108221230C0
-:10205000857C0212311478A7E654FDF6123108226D
-:1020600012308578A7E630E02C78A7E630E12678B4
-:10207000A7E6FCF58318E644F0FD121C9390FFFCE4
-:10208000E04420F07C0212324878A7E654FDF67452
-:102090001A90FFFEF078A7E6FCF58318E644F1FD00
-:1020A000121C9312310822756700756800E4F5660A
-:1020B000F565E4F569756A49748490FF82F074846B
-:1020C00090FF80F0748090FF68F0748090FF6AF059
-:1020D000AD46AF457E00EE24FC500302216AE4EEDB
-:1020E00075F007A4243FF582E434FCF583E0FFE4B7
-:1020F000EF5480FDE4EF540F14FFED6038E4EF750A
-:10210000F008A42448F582E434FFF5837490F0E4E9
-:10211000EF75F008A4244AF582E434FFF583748057
-:10212000F0E4EF75F008A4244EF582E434FFF58363
-:102130007480F08034E4EF75F008A42408F582E49C
-:1021400034FFF5837490F0E4EF75F008A4240AF5E9
-:1021500082E434FFF583E4F0E4EF75F008A4240E84
-:10216000F582E434FFF583E4F00E0220D38D468E31
-:10217000448F45747F90FFFDF0749090FFFCF090C9
-:10218000FC19E030E60790FFFCE04404F02290FCEC
-:102190000DE014700490FC0CE0703990FC0079069E
-:1021A0007A357B1278011203F57F00EF334015EF8B
-:1021B00090354D93FCEF2480F582E434FCF583ECFC
-:1021C000F00F80E78F5990FC2B79187A357B3578A2
-:1021D000011203F5E490FFFFF0745190FFFAF074E0
-:1021E0000490FFFBF0745390FFF8F0745190FFF9E6
-:1021F000F0745590FFF7F0749390FFF6F0743290FE
-:10220000FFF5F075643D7563FD756201E490FF8331
-:10221000F0748090FF81F0755804E55875F007A4BC
-:10222000243FF582E434FCF583E07889F6FC540F12
-:1022300014FC7889ECF6E55875F007A42441F58282
-:10224000E434FCF583E0788C76F8087600FC788935
-:10225000E675F008A42448F582E434FFF583E4F041
-:102260007889E675F008A4244FF582E434FFF583FD
-:10227000ECF0788CE6FF08E67E03CFC313CF13DEC5
-:10228000F9FE7889E675F008A42449F582E434FF64
-:10229000F583EEF07889E675F008A4244AF582E427
-:1022A00034FFF5837480F0788AECF67D00788DE653
-:1022B0002CF618E63DF6788CE6FD08E67C03CDC3E7
-:1022C00013CD13DCF9FC7889E675F008A4244DF5EC
-:1022D00082E434FFF583ECF07889E675F008A424F5
-:1022E0004EF582E434FFF583E4F0788CE6FD08E6F1
-:1022F000FC7889E6FF7E00EE24FC500302246BE4A8
-:10230000EE75F007A4243FF582E434FCF583E0FF8A
-:10231000E4EF5480FAE4EF540F14FFE4EE75F00795
-:10232000A42441F582E434FCF583E0788AF6EE7566
-:10233000F080A42408F8E5F034F8F9E8FCE9FD8A17
-:1023400059EA70030223D8E4EF75F008A42448F595
-:1023500082E434FFF583E4F0788AE6FAE4EF75F07E
-:1023600008A4244FF582E434FFF583EAF0EDFBEC9A
-:102370007A03CBC313CB13DAF9FAE4EF75F008A4B0
-:102380002449F582E434FFF583EAF0788AE67B009D
-:10239000FAEC2AFCED3BFDFBEC7A03CBC313CB1329
-:1023A000DAF9FAE4EF75F008A4244DF582E434FF7D
-:1023B000F583EAF0E4EF75F008A4244AF582E434EA
-:1023C000FFF5837480F0E4EF75F008A4244EF582E5
-:1023D000E434FFF5837480F0022467E4EF75F008BD
-:1023E000A42408F582E434FFF583E4F0788AE6FA61
-:1023F000E4EF75F008A4240FF582E434FFF583EAD6
-:10240000F0EDFBEC7A03CBC313CB13DAF9FAE4EF6C
-:1024100075F008A42409F582E434FFF583EAF07826
-:102420008AE67B00FAEC2AFCED3BFDFBEC7A03CB61
-:10243000C313CB13DAF9FAE4EF75F008A4240DF511
-:1024400082E434FFF583EAF0E4EF75F008A4240A8F
-:10245000F582E434FFF583E4F0E4EF75F008A4249A
-:102460000EF582E434FFF583E4F00E0222F48E5878
-:10247000788CEDF608ECF67889EFF61220A4228C21
-:1024800026EC30E718E526540F1475F008A424480C
-:10249000F582E434FFF583E054DFF08016E526543E
-:1024A0000F1475F008A42408F582E434FFF583E0E6
-:1024B00054DFF022EC90FD3FF08C24ED2403F52551
-:1024C0007D00D3956CED956B4003856C25E5252447
-:1024D000B75009752503740290FD3FF0AC25122F0B
-:1024E000C322E4F566F5651224E82290FD3DE0651F
-:1024F0006D600E740490FD3FF0E4F5657566038031
-:10250000467D6DE4FEFF793D7AFD7B017405780020
-:1025100012033FE5662403F566E5653400F565E5DD
-:1025200066D3956CE565956B4006856C66856B6535
-:10253000D3E5669448E5659400400C740290FD3F35
-:10254000F0E4F565756603AC66122FC322EC90FDCE
-:102550003FF0E4F566F5658C32EC6005122FB4802F
-:10256000057C00122FC32290FF04E0F54A90FF067D
-:10257000E0FDA3E0ED7D00FC7D00FC90FF06E0FFA8
-:10258000A3E07E00FFE4FEEC4EFCED4FFDC3EC94B7
-:1025900048ED9400502290FF06E0FDA3E0ED7D00A1
-:1025A000FC7D00FC90FF06E0FFA3E07E00FFE4FE60
-:1025B000EC4EFCED4FFD8004E4FD7C488C6C8D6B93
-:1025C00090FF02E0FDA3E0ED7D00FC7D00FC90FFAC
-:1025D00002E0FFA3E07E00FFE4FEEC4EF54CED4F81
-:1025E000F54B75643D7563FD7562017D3D7EFD7F34
-:1025F00001796DE4FAFB7405780012033F75490018
-:10260000E54924FE4019AD64AE63AF62E412030FE6
-:1026100005490DED70010E8D648E638F6280E1754A
-:10262000643D7563FD75620190FF00E05460B40085
-:10263000028006D35003022C12E54A540FF549E5F7
-:102640004A5480A2E0920290FF01E0120181000B47
-:102650002C0D266727852C0D28912C0D297429A86F
-:102660002B0F2B122B522BB62BE4E56730E70EE530
-:102670004C454B7008E56C6402456B6003022C0FFF
-:1026800090FF00E0541FB400028003D34029E54AC4
-:102690006003022782AD64AE63AF62740112030F60
-:1026A00078A7E630E00BAD64AE63AF62740212034C
-:1026B0000F7C02122FC322B401028003D3401BE51A
-:1026C0006720E107E54A6003022782E54A24FE50BD
-:1026D000030227827C02122FC322B402028006D397
-:1026E0005003022780E56720E10DE54A6009E54ACD
-:1026F00064806003022782AC4A12304A40030227FA
-:1027000082E549702530021190FF80E05408AD64E5
-:10271000AE63AF6212030F800F90FF82E05408ADEA
-:1027200064AE63AF6212030F803D154930021DE5B0
-:102730004975F008A42448F582E434FFF583E05499
-:1027400008AD64AE63AF6212030F801BE54975F0FC
-:1027500008A42408F582E434FFF583E05408AD644E
-:10276000AE63AF6212030FAD64AE63AF621201E6F7
-:10277000600BAD64AE63AF62740112030F7C021292
-:102780002FC3228000022C0FE56720E706E56C4589
-:102790006B6003022C0F90FF00E0541FB400028016
-:1027A00003D3401AE54C14454B7004E54A6003021C
-:1027B000288E78A7E654FEF67C00122FC322B401BF
-:1027C000028003D3402AE56720E108E56720E003A3
-:1027D00002288EE56730E004E54A700BE56730E1DA
-:1027E00009E54A24FE500302288E7C00122FC322E2
-:1027F000B402028006D3500302288CE54C454B609E
-:102800000302288EAC4A12304A400302288EE56744
-:1028100020E107E56720E0028077E56730E006E524
-:10282000496002806CE549700F90FF82E054F7F038
-:1028300090FF80E054F7F022E549B401028003D311
-:1028400040097D017C03120F0B8011B4020280034A
-:10285000D340097D017C04120F0B80001549300222
-:1028600015E54975F008A42448F582E434FFF583A2
-:10287000E054F7F08013E54975F008A42408F582C8
-:10288000E434FFF583E054F7F07C00122FC322807C
-:1028900000022C0FE56720E706E56C456B6003023C
-:1028A0002C0F90FF00E0541FB400028003D3401AA5
-:1028B000E54C14454B7004E54A600302297178A782
-:1028C000E64401F67C00122FC322B401028003D338
-:1028D0004029E56720E108E56720E003022971E56A
-:1028E0006730E004E549700BE56730E108E549240D
-:1028F000FE5002807F7C00122FC322B402028003AC
-:10290000D3406FE54C454B60028069AC4A12304AB7
-:1029100040028060E56720E107E56720E00280541F
-:10292000E549701430020990FF80E04408F0800708
-:1029300090FF82E04408F022E56730E1331549302A
-:102940000215E54975F008A42448F582E434FFF542
-:1029500083E04408F08013E54975F008A42408F5E5
-:1029600082E434FFF583E04408F07C00122FC32298
-:1029700080028000022C0FE56720E712E56C456BB2
-:10298000700CE54A700890FF00E0541F6003022CB1
-:102990000FE54C90FFFFF090FFFFE06005436701FB
-:1029A00080035367FE7C00122FC322E56730E70ED9
-:1029B000E56C456B600890FF00E0541F6003022C3B
-:1029C0000FAD4BE54CED7D00FC7D00FCBD000280B1
-:1029D00003022B0AB401028003D34032E54A70059A
-:1029E000E54CFC6003022B0C7564007563FC75629A
-:1029F00001D3E56C9412E56B94004006E4FD7C1273
-:102A00008004AC6CAD6B8C6A8D69122FD822B40235
-:102A1000028003D34059E54A6003022B0CE54CFCCD
-:102A200070277564127563FC756201D3E56C9419A7
-:102A3000E56B94004006E4FD7C198004AC6CAD6B42
-:102A40008C6A8D69122FD8802575642B7563FC758F
-:102A50006201D3E56C9435E56B94004006E4FD7C9F
-:102A6000358004AC6CAD6B8C6A8D69122FD822B4A2
-:102A700003028006D35003022B0AE54CF549700F80
-:102A800090FF04E0FDA3E04D6003022B0C80189042
-:102A9000FC82E0FDA3E0FC90FF05E06C700790FF76
-:102AA00004E06D60028068E4F56AF5697F00E5493D
-:102AB00014C549600FEF2480F582E434FCF583E00F
-:102AC0002FFF80EA8F4AE54A2480F582E434FCF542
-:102AD00083E07D00D3956CED956B4006AC6CAD6BDF
-:102AE000800FE54A2480F582E434FCF583E07D0024
-:102AF000FC8C6A8D69E54A2480FCE434FCFDFEEC24
-:102B0000FD7F018D648E638F62122FD822800002B8
-:102B10002C0F022C0FE56730E719E56C14456B703C
-:102B200012E54A700EE54C454B700890FF00E054EA
-:102B30001F6003022C0FE56720E008E56720E10332
-:102B4000022C0F756468E4F563F562E4F56904F539
-:102B50006A122FD822E56720E727E56C456B7021C4
-:102B6000E54A701DE54C6402454B600DE54C14458B
-:102B70004B6006E54C454B700890FF00E0541F6029
-:102B800003022C0FE56720E008E56720E103022C33
-:102B90000F854C68E56870084367015367FD801333
-:102BA000E56864026007E56814600280655367FEAB
-:102BB0004367027C00122FC322E56730E71AE56CF9
-:102BC00014456B7013E54A700FE54C454B70099046
-:102BD000FF00E0541F1460028038E56720E10280A6
-:102BE000317C01122FC322E56720E715E56C456BA8
-:102BF000700FE54C454B700990FF00E0541F1460C6
-:102C000002800FE56720E10280087C00122FC322BA
-:102C10008000022ECAB440028006D35003022EC0A8
-:102C200090FF01E090FD3DF0E54A90FD3EF0E4901C
-:102C3000FD3FF0E5642403F564E5633400F563AD1E
-:102C40004BE54C856482856383CDF0A3CDF090FF86
-:102C500001E01201B72C7D012CA3022CCD032CF72F
-:102C6000042D45052D82062DA8072DCE082DF4092B
-:102C70002E1A0B2E400C2E4F802E4F8100002EADB1
-:102C8000E56720E7067C0512254A227DB77E347F62
-:102C90000279407AFD7B017408780012033F7D08B9
-:102CA0007C001224B122E56720E7067C0512254A44
-:102CB00022E54AB403004010B40500500BE54A7FFA
-:102CC00000FE7C1012319A227D007C071224B12272
-:102CD000E56720E7067C0512254A22E54AB4030091
-:102CE0004010B40500500BE54A7F00FE7C11123104
-:102CF0009A227D007C071224B122E56720E7067C3A
-:102D00000512254A22E54AB405028003D3400AE4AD
-:102D1000FF04FE7C0A12319A22B401028003D340E0
-:102D20000AE4FF04FE7C0812319A22B4030040102A
-:102D3000B40500500BE54A7F00FE7C1312319A2245
-:102D40007D007C071224B122E56720E734D3E56CCF
-:102D50009448E56B94005006E56C456B70067C0268
-:102D600012254A22E54AB40103B3400BC3B4030061
-:102D70004009B406005004123070227C0712254A24
-:102D8000221224E822E56720E71DE54AB40300404B
-:102D900010B40500500BE54A7F00FE7C1612319AF4
-:102DA000227C0712254A221224E822E56720E71D2B
-:102DB000E54AB403004010B40500500BE54A7F001B
-:102DC000FE7C1912319A227C0712254A221224E82D
-:102DD00022E56720E71DE54AB403004010B4050072
-:102DE000500BE54A7F00FE7C1712319A227C0712B5
-:102DF000254A221224E822E56720E71DE54AB403AC
-:102E0000004010B40500500BE54A7F00FE7C18120C
-:102E1000319A227C0712254A221224E822E56720F3
-:102E2000E71DE54AB403004010B40500500BE54A25
-:102E30007F00FE7C1512319A227C0712254A22124D
-:102E400024E822E56720E7067C0712254A2212249F
-:102E5000E822E56730E72090FF00E0541F701090F3
-:102E6000FF01E0B480051224DF80031224E8227DF4
-:102E7000007C051224B12290FF00E0541F60067C04
-:102E80000512254A22D3E56C9448E56B9400500B5B
-:102E9000C3E56C9407E56B940050067C0312254A49
-:102EA00022E54AB40504123070227C0712254A221A
-:102EB000E56730E7087D007C051224B1227C05120D
-:102EC000254A22B420028003D340008000122F9EA6
-:102ED0002275430090FF83E0540FD395434024E5CF
-:102EE0004324F0F582E434FEF583E0AD64AE63AFD5
-:102EF0006212030F05430DED70010E8D648E638F1A
-:102F00006280D1E5437D00FCC3E56A9CF56AE56912
-:102F10009DF569E56A45696006E490FF83F02290BB
-:102F2000FF82E04408F0E4F569756A4990FD3DE0F0
-:102F3000B405028003D3404090FD3EE0F543B40564
-:102F4000028003D3400AE4FF04FE7C0B12319A2274
-:102F5000B401028003D3400AE4FF04FE7C0912316D
-:102F60009A22B403004010B40500500BE5437F00E3
-:102F7000FE7C1412319A2222B480004023B48200D5
-:102F8000501E7C3D7DFD1217D57D008C668D6590B1
-:102F9000FD3FE06005122F9E80057C00122FC322AA
-:102FA0002290FF83E0547FF090FF82E04408F0908D
-:102FB000FF80E04408F02290FF82E04408F090FF98
-:102FC00080E04408F0228C237D008C6A8D69756452
-:102FD0003D7563FD756201122FD82290FF83E05486
-:102FE0007FF0E56A64494569700122C3E56A940887
-:102FF000E56994004015752108E5217D00FCC3E5D5
-:103000006A9CF56AE5699DF5698009856A21E4F5A0
-:1030100069756A49752200E522C395215026AD6481
-:10302000AE63AF621201E6FCE52224F8F582E434D7
-:10303000FEF583ECF005220DED70010E8D648E63BC
-:103040008F6280D3E521547F90FF81F0228C487FEE
-:1030500000EF24FB4019E4EF75F007A4243FF5824C
-:10306000E434FCF583E065487002D3220F80E28FE0
-:1030700047C322856C6A856B6990FF82E054F7F044
-:1030800090FF83E0547FF022C000C001C002C00660
-:10309000C007E5722408F8860653067F7CFF1230CD
-:1030A000FA7C007D00E5756046FF90FE9DE0547F50
-:1030B0006E700FC083C082A3E0FDA3E0FCA3157572
-:1030C0008007A3A3A3DFE68026DF06D082D083801B
-:1030D0001EE0F8A3E0F9A3E0FAD082D083E8F0A3E1
-:1030E000E9F0A3EAF0A3C083C082A3A3A380DA120D
-:1030F0003193D007D006D002D001D0002285A87429
-:1031000075A888EC70027C3F8C7322E5722408F865
-:1031100076001231E780FBC000C001C002C006C0CB
-:1031200007AE047CFF1230FAE5756042FF90FE9D09
-:10313000E0547F6E700BC083C082A3A3A31575807B
-:1031400007A3A3A3DFEA8026DF06D082D08380D83E
-:10315000E0F8A3E0F9A3E0FAD082D083E8F0A3E995
-:10316000F0A3EAF0A3C083C082A3A3A380DA780807
-:10317000087918097C01E6547F6E700676007700A6
-:10318000800608090CBC08EE123193D007D006D097
-:1031900002D001D000227573008574A822C0F0C04F
-:1031A00082C083C3E57524E850051231E780F4EC52
-:1031B00060319034B6E493C39C4028C0047CFF1275
-:1031C00030FAD004430480E57575F003A4249DF51E
-:1031D00082E434FEF583ECF0EFA3F0EEA3F0057586
-:1031E000123193D083D082D0F022C0047C20D28CC4
-:1031F000D28DD504FDD0042275A80075880075B85D
-:103200000075F00075D000E4F8900000F608B800F2
-:10321000FB020000C3ED940250047D037CE8ECF453
-:10322000FCEDF4FD0CBC00010D8C798D7822C3EC13
-:1032300094BCED940250047D077CD0ECF4FCEDF4DA
-:10324000FD0CBC00010D8C778D7622EC700122C044
-:1032500000E5722418F8A604E5722408F8C6547F25
-:10326000F6E630E703D000221231E780F4C28C8505
-:10327000768C85778AD28CC0E0C0D0C0F0C082C086
-:1032800083C000C001C002C003C004C005C006C0A6
-:1032900007121B28E5722408F8E66024E572241062
-:1032A000F8A681E57275F021A42495F582E434FD39
-:1032B000F58378A8E58104C398F9E6F008A3D9FA64
-:1032C00074082572F8057208E65480700CE572B433
-:1032D00007F3780875720080EFE5722410F8868194
-:1032E000E57275F021A42495F582E434FDF5837828
-:1032F000A8E58104C398F9E0F608A3D9FAD007D06D
-:1033000006D005D004D003D002D001D000D083D0A5
-:1033100082D0F0D0D0D0E032C0E0C0D0C000C00138
-:10332000C002C28E85788D85798BD28E7819790905
-:103330007A07E77004A600800BE6600816E67004C2
-:10334000E74480F70809DAEAE573601314F573704F
-:103350000EE5722408F87600123193D28CD28DD00B
-:1033600002D001D000D0D0D0E0327581A775900096
-:103370007579307578F87577607576F012053C12BE
-:10338000340F12178B1234391231F580E322C0004A
-:103390007C01EC2408F8E660090CBC08F51231E762
-:1033A00080EED00022C0F0C082C083C000C006C042
-:1033B00007ED2410F876B6ED75F021A42495F5827A
-:1033C000E434FDF583C082C083A3A3E4780DF0A3A9
-:1033D000D8FCEC547F75F002A42482F582E5F03429
-:1033E00034F583E493FE740193F5828E83E493FEB7
-:1033F000740193FFD083D082EFF0A3EEF0ED2408A8
-:10340000F8EC4480F6D007D006D000D083D082D02C
-:10341000F0227572007575007A08791878087600C0
-:1034200077000809DAF8E478087480447FF67401BC
-:103430004410F58975B808D2ABD2A9227581A7D2FC
-:103440008ED28CD2AFE5756032FF90FE9DE0548045
-:10345000602478087908E0547FFA7B00E6547FB551
-:1034600002027BFF08D9F5EB700CEAF012338BAD4A
-:1034700004AC021233A2A3A3A3DFD21231E780C5AA
-:103480007C017D002204F504E904ED04E104DD047F
-:10349000D904E504F1049D04A104CD04D1049904E8
-:1034A00099049904D504B504AD04B104A904C10478
-:1034B000BD04B904C504C904A519010300220048CC
-:1034C0000200240F180A10640D680C05060203019F
-:1034D0000181010000E700C0008000600040003072
-:1034E0000018000C00080004000200010008183851
-:1034F000280602100A0200000000000181100A02E2
-:103500000000000000FBE8FBFA12011001FF0000C0
-:103510000851045F50160101020002090235000142
-:103520000200E0000904000005FF0000000705811B
-:10353000024000000705010240000007058202402A
-:103540000000070502024000000705850302000194
-:10355000040309042403540065007800610073002B
-:10356000200049006E0073007400720075006D0049
-:1035700065006E00740073002A0354005500530068
-:103580004200350030003500320020005300650055
-:103590007200690061006C00200050006F00720032
-:1035A00074002203540055005300420035003000DF
-:1035B00035003200200020002000200020002000E4
-:0435C00020002000C7
-:00000001FF
diff --git a/firmware/tigon/tg3.bin.ihex b/firmware/tigon/tg3.bin.ihex
deleted file mode 100644
index d842d7cc91b5..000000000000
--- a/firmware/tigon/tg3.bin.ihex
+++ /dev/null
@@ -1,175 +0,0 @@
-:10000000000000000800000000000A80000000005E
-:1000100010000003000000000000000D0000000DB3
-:100020003C1D080037BD3FFC03A0F0213C10080038
-:10003000261000000E000018000000000000000D57
-:100040003C1D080037BD3FFC03A0F0213C10080018
-:10005000261000340E00021C000000000000000DFD
-:1000600000000000000000000000000027BDFFE0CD
-:100070003C1CC000AFBF0018AF80680C0E00004CE5
-:10008000241B210597850000978700029782002C8A
-:100090009783002E3C040800248409C0AFA00014FC
-:1000A000000214000062182500052C00AFA3001008
-:1000B0008F86001000E528250E000060240701024D
-:1000C0003C02AC00344201003C03AC01346301004B
-:1000D000AF8204903C02FFFFAF820494AF83049888
-:1000E000AF82049C24020001AF825CE00E00003F5E
-:1000F000AF825D000E000140000000008FBF0018BD
-:1001000003E0000827BD00202402FFFFAF82540453
-:100110008F83540034630400AF835400AF825404CF
-:100120003C02080024420034AF82541C03E0000863
-:10013000AF80540000000000000000003C020800F6
-:10014000344230003C030800346330003C040800B3
-:10015000348437FF3C010800AC220A6424020040CA
-:100160003C010800AC220A683C010800AC200A608F
-:10017000AC600000246300040083102B5040FFFD9E
-:10018000AC60000003E0000800000000008048218F
-:100190008FAA00103C0208008C420A603C04080050
-:1001A0008C840A688FAB0014244300010044102B98
-:1001B0003C010800AC230A60144000030000402109
-:1001C0003C010800AC200A603C0208008C420A6036
-:1001D0003C0308008C630A64912400000002114073
-:1001E000004310210048102125080001A044000010
-:1001F000290200081440FFF4252900013C020800F0
-:100200008C420A603C0308008C630A648F84680C8B
-:100210000002114000431021AC440008AC45000C22
-:10022000AC460010AC470014AC4A001803E00008CC
-:10023000AC4B001C000000000000000000000000AB
-:1002400000000000000000000000000000000000AE
-:10025000000000000000000000000000000000009E
-:10026000000000000000000000000000000000008E
-:10027000000000000000000000000000000000007E
-:10028000000000000000000000000000000000006E
-:10029000000000000000000000000000000000005E
-:1002A000000000000000000000000000000000004E
-:1002B000000000000000000000000000000000003E
-:1002C000000000000000000000000000000000002E
-:1002D000000000000000000000000000000000001E
-:1002E000000000000000000000000000000000000E
-:1002F00000000000000000000000000000000000FE
-:1003000000000000000000000000000002000008E3
-:10031000000000000A0001E33C0A00010A0001E3BA
-:100320003C0A00020A0001E3000000000A0001E3A9
-:10033000000000000A0001E3000000000A0001E3E1
-:10034000000000000A0001E3000000000A0001E3D1
-:10035000000000000A0001E3000000000A0001E3C1
-:10036000000000000A0001E3000000000A0001E3B1
-:100370003C0A00070A0001E33C0A00080A0001E306
-:100380003C0A00090A0001E3000000000A0001E342
-:10039000000000000A0001E33C0A000B0A0001E330
-:1003A0003C0A000C0A0001E33C0A000D0A0001E3CC
-:1003B000000000000A0001E3000000000A0001E361
-:1003C0003C0A000E0A0001E3000000000A0001E3FD
-:1003D000000000000A0001E3000000000A0001E341
-:1003E000000000000A0001E3000000000A0001E331
-:1003F000000000000A0001E3000000000A0001E321
-:10040000000000000A0001E33C0A00130A0001E3B7
-:100410003C0A001400000000000000000000000082
-:1004200000000000000000000000000000000000CC
-:1004300000000000000000000000000000000000BC
-:1004400000000000000000000000000000000000AC
-:10045000000000000000000000000000000000009C
-:10046000000000000000000000000000000000008C
-:10047000000000000000000000000000000000007C
-:10048000000000000000000000000000000000006C
-:10049000000000000000000000000000000000005C
-:1004A000000000000000000000000000000000004C
-:1004B000000000000000000000000000000000003C
-:1004C000000000000000000000000000000000002C
-:1004D000000000000000000000000000000000001C
-:1004E000000000000000000000000000000000000C
-:1004F00000000000000000000000000000000000FC
-:1005000000000000000000000000000027BDFFE028
-:100510000000182100001021AFBF0018AFB1001477
-:10052000AFB000103C01080000220821AC200A7086
-:100530003C01080000220821AC200A743C0108009C
-:1005400000220821AC200A78246300011860FFF51E
-:100550002442000C241100018F9068103202000424
-:1005600014400005240400013C0208008C420A7873
-:1005700018400003000020210E000182000000004E
-:100580003202000110400003000000000E0001696B
-:10059000000000000A000153AF9150288FBF0018DF
-:1005A0008FB100148FB0001003E0000827BD0020B9
-:1005B0003C0508008CA50A703C0608008CC60A8021
-:1005C0003C0708008CE70A7827BDFFE03C040800E0
-:1005D000248409D0AFBF0018AFA000100E00006047
-:1005E000AFA000140E00017B000020218FBF001877
-:1005F00003E0000827BD0020240200018F8368105B
-:1006000000821004000210270062182403E0000892
-:10061000AF83681027BDFFD8AFBF00241080002E25
-:10062000AFB000208F825CECAFA200188F825CEC30
-:100630003C10080026100A78AFA2001C340280008B
-:10064000AF825CEC8E020000184000160000000033
-:100650003C02080094420A748FA3001C000221C0CF
-:10066000AC8300048FA2001C3C0108000E000201B4
-:10067000AC220A7410400005000000008E02000049
-:10068000244200010A0001DFAE0200003C02080023
-:100690008C420A7000021C02000321C00A0001C53E
-:1006A000AFA2001C0E000201000000001040001F5D
-:1006B000000000008E0200008FA3001C24420001F5
-:1006C0003C010800AC230A703C010800AC230A740A
-:1006D0000A0001DFAE0200003C10080026100A7874
-:1006E0008E02000018400028000000000E000201E9
-:1006F0000000000014400024000000008E020000F2
-:100700003C0308008C630A702442FFFFAFA3001C67
-:1007100018400006AE02000000031402000221C0CF
-:100720008C8200043C010800AC220A7097A2001ED3
-:100730002442FF002C4203001440000B240240001E
-:100740003C040800248409DCAFA00010AFA0001412
-:100750008FA6001C240500080E0000600000382150
-:100760000A0001DF00000000AF825CF83C020800D4
-:100770008C420A408FA3001C24420001AF835CF826
-:100780003C010800AC220A408FBF00248FB000203B
-:1007900003E0000827BD002827BDFFE03C04080057
-:1007A000248409E8000028210000302100003821BD
-:1007B000AFBF0018AFA000100E000060AFA0001483
-:1007C0008FBF001803E0000827BD00208F82680C4F
-:1007D0008F85680C000218270003182B00031823CC
-:1007E000004310240044102100A2282B10A0000672
-:1007F00000000000004018218F82680C0043102B7D
-:100800001440FFFD0000000003E0000800000000AD
-:100810003C0408008C8400003C0308008C630A4000
-:100820000064102B54400002008310230064102346
-:100830002C42000803E000083842000127BDFFE019
-:10084000008028213C04080024840A000000302194
-:1008500000003821AFBF0018AFA000100E000060EC
-:10086000AFA000140A000216000000008FBF00189D
-:1008700003E0000827BD00200000000027BDFFE0C6
-:100880003C1CC000AFBF00180E00004CAF80680CCD
-:100890003C04080024840A10038028210000302131
-:1008A00000003821AFA000100E000060AFA00014BF
-:1008B0002402FFFFAF8254043C0200AA0E0002345F
-:1008C000AF8254348FBF001803E0000827BD00201A
-:1008D00000000000000000000000000027BDFFE84D
-:1008E000AFB0001024100001AFBF00143C01C003E2
-:1008F000AC2000008F8268103042200010400003BE
-:10090000000000000E000246000000000A00023A4B
-:10091000AF9054288FBF00148FB0001003E0000880
-:1009200027BD001827BDFFF88F845D0C3C0200FF37
-:100930003C0308008C630A503442FFF80082102404
-:100940001043001E3C0500FF34A5FFF83C06C00321
-:100950003C074000008518248C6200103C01080010
-:10096000AC230A50304200081040000500871025D3
-:100970008CC2000024420001ACC200000087102598
-:10098000AF825D0C8FA2000024420001AFA20000E4
-:100990008FA200008FA2000024420001AFA200003D
-:1009A0008FA200008F845D0C3C0308008C630A500A
-:1009B000008510241443FFE80085182427BD000893
-:1009C00003E000080000000000000000353730316F
-:1009D000726C734100000000000000005377457600
-:1009E000656E743000000000726C704576656E7440
-:1009F00031000000556E6B6E45766E74000000008D
-:100A0000000000000000000000000000666174614A
-:100A10006C45727200000000000000004D61696EBC
-:100A2000437075420000000000000000000000005C
-:100A300000000000000000000000000000000000B6
-:100A400000000000000000000000000000000000A6
-:100A50000000000000000000000000000000000096
-:0C0A60000000000000000000000000008A
-:00000001FF
- * Firmware is:
- * Derived from proprietary unpublished source code,
- * Copyright (C) 2000-2003 Broadcom Corporation.
- *
- * Permission is hereby granted for the distribution of this firmware
- * data in hexadecimal or equivalent format, provided this copyright
- * notice is accompanying it.
diff --git a/firmware/tigon/tg3_tso.bin.ihex b/firmware/tigon/tg3_tso.bin.ihex
deleted file mode 100644
index f10c4ef90513..000000000000
--- a/firmware/tigon/tg3_tso.bin.ihex
+++ /dev/null
@@ -1,446 +0,0 @@
-:100000000106000008000000000024140E00000398
-:100010000000000008001B24000000001000000386
-:10002000000000000000000D0000000D3C1D080055
-:1000300037BD400003A0F0213C100800261000004E
-:100040000E000010000000000000000D27BDFFE0C2
-:100050003C04FEFEAFBF00180E0005D83484000239
-:100060000E000668000000003C03080090631B6857
-:10007000240200023C04080024841AAC1462000329
-:10008000240500013C04080024841AA0240600066C
-:1000900000003821AFA000100E00067CAFA00014B5
-:1000A0008F625C5034420001AF625C508F625C90A2
-:1000B00034420001AF625C902402FFFF0E00003466
-:1000C000AF6254048FBF001803E0000827BD002072
-:1000D00000000000000000000000000027BDFFE05D
-:1000E000AFBF001CAFB20018AFB100140E00005B30
-:1000F000AFB0001024120002241100018F7068209C
-:100100003202010010400003000000000E0000BB9E
-:10011000000000008F7068203202200010400004B0
-:10012000320200010E0001F024040001320200013D
-:1001300010400003000000000E0000A300000000BB
-:100140003C02080090421B9814520003000000007B
-:100150000E0004C0000000000A00003CAF715028EF
-:100160008FBF001C8FB200188FB100148FB0001029
-:1001700003E0000827BD002027BDFFE03C04080085
-:1001800024841AC0000028210000302100003821FA
-:10019000AFBF0018AFA000100E00067CAFA0001487
-:1001A0003C040800248423D8A48000003C010800FB
-:1001B000A0201B983C010800AC201B9C3C010800BF
-:1001C000AC201BA03C010800AC201BA43C01080093
-:1001D000AC201BAC3C010800AC201BB83C01080063
-:1001E000AC201BBC8F6244343C010800AC221B884D
-:1001F0008F6244383C010800AC221B8C8F62441093
-:10020000AC80F7A83C010800AC201B843C0108002E
-:10021000AC2023E03C010800AC2023C83C010800CE
-:10022000AC2023CC3C010800AC2024003C01080099
-:10023000AC221B908F6200682403000700021702A3
-:1002400010430005000000008F62006800021702E2
-:1002500014400004240200013C0108000A00009739
-:10026000AC20240CAC8200343C04080024841ACC5A
-:100270003C0508008CA5240C00003021000038212A
-:10028000AFA000100E00067CAFA000148FBF0018B6
-:1002900003E0000827BD002027BDFFE03C04080064
-:1002A00024841AD8000028210000302100003821C1
-:1002B000AFBF0018AFA000100E00067CAFA0001466
-:1002C0000E00005B000000000E0000B400002021C2
-:1002D0008FBF001803E0000827BD002024020001A2
-:1002E0008F63682000821004000210270062182427
-:1002F00003E00008AF63682027BDFFD0AFBF002C2C
-:10030000AFB60028AFB50024AFB40020AFB3001CD7
-:10031000AFB20018AFB10014AFB000108F675C5CD3
-:100320003C03080024631BBC8C62000014470005DA
-:100330003C0200FF3C02080090421B981440011947
-:100340003C0200FF3442FFF800E28824AC67000062
-:1003500000111902306300FF30E20003000211C0F7
-:100360000062282500A04021000716023C03080077
-:1003700090631B983044000F1460003600804821C1
-:10038000240200013C010800A0221B980005110076
-:10039000008210253C010800AC201B9C3C01080099
-:1003A000AC201BA03C010800AC201BA43C010800B1
-:1003B000AC201BAC3C010800AC201BB83C01080081
-:1003C000AC201BB03C010800AC201BB43C01080071
-:1003D000A42223D89622000C30437FFF3C01080062
-:1003E000A4222410304280003C010800A4231BC634
-:1003F00010400005240200013C010800AC2223F457
-:100400000A0001022406003E240600363C010800D2
-:10041000AC2023F49622000A3C03080094631BC618
-:100420003C010800AC2023F03C010800AC2023F87C
-:10043000000213020002108000C210210062182185
-:100440003C010800A42223D03C0108000A00011549
-:10045000A4231B969622000C3C010800A42223EC46
-:100460003C04080024841B9C8C82000000021100C4
-:100470003C01080000220821AC311BC88C8200001E
-:10048000000211003C01080000220821AC271BCC0F
-:100490008C82000025030001306601FF000211007C
-:1004A0003C01080000220821AC261BD08C820000F1
-:1004B000000211003C01080000220821AC291BD4D5
-:1004C000962300083C0208008C421BAC0043282104
-:1004D0003C010800AC251BAC9622000A3042000407
-:1004E00014400018000611008F630C143063000FD5
-:1004F0002C6200021440000B3C02C0008F630C14FD
-:100500003C0208008C421B403063000F2442000173
-:100510003C010800AC221B402C6200021040FFF797
-:100520003C02C00000E21825AF635C5C8F625C5047
-:100530003042000210400014000000000A00014791
-:10054000000000003C0308008C631B803C04080092
-:1005500094841B94012210253C010800A42223DA74
-:10056000240200013C010800AC221BB824630001F6
-:100570000085202A3C01080010800003AC231B806A
-:100580003C010800A4251B943C06080024C61B9CC3
-:100590008CC2000024420001ACC20000284200804E
-:1005A00014400005000000000E000656240400025E
-:1005B0000A0001E6000000003C0208008C421BB863
-:1005C00010400078240200013C05080090A51B980B
-:1005D00014A20072000000003C15080096B51B969E
-:1005E0003C0408008C841BAC32A3FFFF0083102A5C
-:1005F0001440006C000000001483000300000000A1
-:100600003C010800AC2523F01060005C0000902144
-:1006100024D600040060A02124D300148EC2000060
-:10062000000281003C110800023088210E000625DE
-:100630008E311BC80040282110A00054000000008B
-:100640009628000A31020040104000052407180CCB
-:100650008E22000C2407188C00021400ACA2001893
-:100660003C030800007018218C631BD03C0208007A
-:10067000005010218C421BD400031D000002140006
-:1006800000621825ACA300148EC300049622000853
-:10069000004320233242FFFF3083FFFF004310213D
-:1006A0000282102A1440000202B23023008030215E
-:1006B0008E62000030C4FFFF00441021AE620000D3
-:1006C0008E220000ACA200008E2200048E63FFF494
-:1006D00000431021ACA20004A4A6000E8E62FFF419
-:1006E00000441021AE62FFF4962300080043102A54
-:1006F00014400005024690218E62FFF0AE60FFF4C8
-:1007000024420001AE62FFF0ACA000083242FFFFBD
-:1007100014540008240203053102008054400001F3
-:1007200034E7001024020905A4A2000C0A0001CB42
-:1007300034E70020A4A2000C3C0208008C4223F005
-:10074000104000033C024B650A0001D3344276544A
-:100750003C02B49A344289ABACA2001C30E2FFFFE9
-:10076000ACA200100E0005A200A020213242FFFF23
-:100770000054102B1440FFA90000000024020002C6
-:100780003C0108000A0001E6A0221B988EC2083C2A
-:10079000244200010A0001E6AEC2083C0E0004C07B
-:1007A000000000008FBF002C8FB600288FB50024FA
-:1007B0008FB400208FB3001C8FB200188FB10014CB
-:1007C0008FB0001003E0000827BD003027BDFFD028
-:1007D000AFBF0028AFB30024AFB20020AFB1001C00
-:1007E000AFB000188F725C9C3C0200FF3442FFF8EF
-:1007F0003C07080024E71BB4024288249623000E1D
-:100800008CE2000000431021ACE200008E220010B8
-:100810003042002014400011008098210E00063B59
-:10082000022020213C02C00002421825AF635C9CDC
-:100830008F625C90304200021040011E00000000F8
-:10084000AF635C9C8F625C903042000210400119E3
-:10085000000000000A00020D000000008E240008C5
-:100860008E23001400041402000231C0000315029C
-:10087000304201FF2442FFFF3042007F0003194253
-:1008800030637800000211002442400000624821D9
-:100890009522000A3084FFFF30420008104000B06B
-:1008A000000429C03C0208008C42240014400024AB
-:1008B00024C5000894C200143C010800A42223D0DF
-:1008C0008CC40010000414023C010800A42223D2AE
-:1008D0003C010800A42423D494C2000E3083FFFFFF
-:1008E000004310233C010800AC22240894C2001AE3
-:1008F0003C010800AC2624003C010800AC32240472
-:100900003C010800AC2223FC3C02C0000242182536
-:10091000AF635C9C8F625C9030420002104000E547
-:1009200000000000AF635C9C8F625C90304200026C
-:10093000104000E0000000000A0002460000000035
-:1009400094C2000E3C030800946323D40043402368
-:100950003103FFFF2C6200081040001C0000000063
-:1009600094C200142442002800A22821000310424F
-:100970001840000B0000202124E6084800403821E0
-:1009800094A300008CC200002484000100431021C5
-:10099000ACC200000087102A1440FFF924A5000211
-:1009A000310200011040001F3C0240003C040800DE
-:1009B000248423FCA0A0000194A300008C820000EA
-:1009C000004310210A000285AC8200008F6268009B
-:1009D0003C030010004310241040000900000000F8
-:1009E00094C2001A3C0308008C6323FC00431021CE
-:1009F0003C010800AC2223FC0A0002863C024000B5
-:100A000094C2001A94C4001C3C0308008C6323FCAD
-:100A100000441023006218213C010800AC2323FC91
-:100A20003C02400002421825AF635C9C8F625C90E0
-:100A3000304200021440FFFC000000009522000A32
-:100A4000304200101040009B000000003C030800F2
-:100A5000946323D43C07080024E724008CE40000BE
-:100A60008F62680024630030008328213C0300105B
-:100A7000004310241440000A0000000094A2000467
-:100A80003C0408008C8424083C0308008C6323FC8D
-:100A900000441023006218213C010800AC2323FC11
-:100AA0003C0408008C8423FC00041C023082FFFFFD
-:100AB000006220210004140200822021000410277B
-:100AC000A4A200063C0308008C6324043C0200FF3F
-:100AD0003442FFF8006288249622000824050001B1
-:100AE00024034000000231C000801021A4C2001A7B
-:100AF000A4C0001CACE000003C010800AC251B6059
-:100B0000AF635CB88F625CB03042000210400003FB
-:100B1000000000003C010800AC201B608E22000891
-:100B2000AF625CB88F625CB03042000210400003DC
-:100B3000000000003C010800AC201B603C020800E3
-:100B40008C421B601040FFEC000000003C040800D9
-:100B50000E00063B8C8424040A00032A00000000D7
-:100B60003C03080090631B982402000214620003F7
-:100B70003C034B650A0002E1000080218E22001C2C
-:100B80003463765410430002241000022410000144
-:100B900000C020210E000350020030212402000377
-:100BA0003C010800A0221B98240200021202000A45
-:100BB000240200013C0308008C6323F0106200064D
-:100BC000000000003C020800944223D800021400F8
-:100BD0000A00031FAE2200143C040800248423DA18
-:100BE0009482000000021400AE2200143C020800AF
-:100BF0008C421BBC3C03C0003C010800A0201B9899
-:100C000000431025AF625C5C8F625C503042000292
-:100C100010400009000000002484F7E28C820000EC
-:100C200000431025AF625C5C8F625C503042000272
-:100C30001440FFFA000000003C02080024421B841C
-:100C40008C43000024630001AC4300008F630C144C
-:100C50003063000F2C6200021440000C3C02400084
-:100C60008F630C143C0208008C421B403063000F61
-:100C7000244200013C010800AC221B402C6200020F
-:100C80001040FFF7000000003C024000024218251F
-:100C9000AF635C9C8F625C90304200021440FFFCAA
-:100CA0000000000012600003000000000E0004C0FD
-:100CB000000000008FBF00288FB300248FB20020F7
-:100CC0008FB1001C8FB0001803E0000827BD003072
-:100CD0008F6344503C04080024841B888C820000ED
-:100CE00000031C020043102B144000073C0380004B
-:100CF0008C8400048F62445000021C020083102B7D
-:100D00001040FFFC3C038000AF6344448F624444C6
-:100D1000004310241440FFFD000000008F6244488F
-:100D200003E000083042FFFF3C0240000082202523
-:100D3000AF645C388F625C30304200021440FFFCCC
-:100D40000000000003E000080000000027BDFFE0F5
-:100D50000080582114C00011256E00083C020800D4
-:100D60008C4223F410400007240200163C010800C6
-:100D7000A42223D22402002A3C0108000A000364B2
-:100D8000A42223D48D670010000714023C01080040
-:100D9000A42223D23C010800A42723D43C04080049
-:100DA000948423D43C030800946323D295CF000697
-:100DB0003C020800944223D00083202301E2C02398
-:100DC0003065FFFF24A2002801C248213082FFFFC6
-:100DD00014C0001A012260219582000C3042003FAD
-:100DE0003C010800A42223D69582000495830006C6
-:100DF0003C010800AC2023E43C010800AC2023E8BF
-:100E000000021400004310253C010800AC221BC066
-:100E1000952200043C010800A4221BC49523000273
-:100E200001E510230043102A1040001024020001A5
-:100E30003C0108000A000398AC2223F83C03080098
-:100E40008C6323E83C02080094421BC40043102139
-:100E5000A52200043C02080094421BC0A5820004A5
-:100E60003C0208008C421BC0A58200063C02080020
-:100E70008C4223F03C0D08008DAD23E43C0A0800B1
-:100E8000144000E58D4A23E83C02080094421BC44C
-:100E9000004A18213063FFFF0062182B2402000271
-:100EA00010C2000D014350233C020800944223D697
-:100EB0003042000910400008000000009582000C3C
-:100EC0003042FFF6A582000C3C020800944223D673
-:100ED0003042000901A268233C0208008C4223F83A
-:100EE0001040004A012038213C020800944223D2DD
-:100EF00000004021A520000A01E21023A5220002E3
-:100F00003082FFFF0002104218400008000030212C
-:100F10000040182194E200002508000100C23021A1
-:100F20000103102A1440FFFB24E7000200061C0204
-:100F300030C2FFFF006230210006140200C23021DF
-:100F400000C0282100061027A522000A0000302139
-:100F50002527000C0000402194E200002508000134
-:100F600000C230212D0200041440FFFB24E70002E0
-:100F70009522000200004021912300090044202313
-:100F8000018038213082FFFFA4E0001000621821A8
-:100F9000000210421840001000C3302100404821D8
-:100FA00094E2000024E7000200C2302130E2007F1A
-:100FB00014400006250800018D6300003C02007FFC
-:100FC0003442FF8000625824256700080109102A76
-:100FD0001440FFF3000000003082000110400005C3
-:100FE00000061C02A0E0000194E2000000C23021D3
-:100FF00000061C0230C2FFFF00623021000614020E
-:1010000000C230210A00047D30C6FFFF2402000226
-:1010100014C20081000000003C0208008C42240C35
-:1010200014400007000000003C020800944223D254
-:101030009523000201E210231062007700000000F7
-:101040003C020800944223D201E21023A5220002B0
-:101050003C0208008C42240C1040001A31E3FFFFD0
-:101060008DC700103C02080094421B9600E040210E
-:1010700000072C0200AA20210043102300823823FD
-:101080000007240230E2FFFF00823821000710270A
-:10109000A522000A3102FFFF3C040800948423D4F7
-:1010A0000045302300E0282100641823006D18213A
-:1010B00000C3302100061C0230C2FFFF0A00047D7D
-:1010C0000062302101203821000040213082FFFFE2
-:1010D0000002104218400008000030210040182192
-:1010E00094E200002508000100C230210103102A0B
-:1010F0001440FFFB24E7000200061C0230C2FFFF81
-:10110000006230210006140200C2302100C02821F4
-:1011100000061027A522000A000030212527000C18
-:101120000000402194E200002508000100C23021A7
-:101130002D0200041440FFFB24E700029522000268
-:101140000000402191230009004420230180382120
-:101150003082FFFFA4E000103C040800948423D4F4
-:101160000062182100C3302100061C0230C2FFFFBC
-:101170000062302100061C023C020800944223D089
-:1011800000C348210044102300021FC20043102165
-:1011900000021043184000100000302100402021C0
-:1011A00094E2000024E7000200C2302130E2007F18
-:1011B00014400006250800018D6300003C02007FFA
-:1011C0003442FF8000625824256700080104102A79
-:1011D0001440FFF3000000003C020800944223EC9E
-:1011E00000C230213122FFFF00C2302100061C0264
-:1011F00030C2FFFF006230210006140200C230211D
-:1012000000C0402100061027A5820010ADC00014C8
-:101210000A00049DADC000008DC7001000E0402111
-:101220001140000700072C0200AA3021000614021A
-:1012300030C3FFFF004330210006140200C2282102
-:1012400000051027A522000A3C030800946323D45C
-:101250003102FFFF01E210210043302300CD302195
-:1012600000061C0230C2FFFF00623021000614029B
-:1012700000C2302100C0402100061027A5820010C6
-:101280003102FFFF00051C0000431025ADC2001015
-:101290003C0208008C4223F4104000052DE205EBCF
-:1012A0001440000225E2FFF234028870A5C2003427
-:1012B0003C030800246323E88C6200002442000100
-:1012C000AC6200003C0408008C8423E43C0208006B
-:1012D0008C421BC03303FFFF0083202100431821F1
-:1012E0000062102B3C010800AC2423E410400003F2
-:1012F0002482FFFF3C010800AC2223E43C010800EB
-:10130000AC231BC003E0000827BD002027BDFFB8A9
-:101310003C05080024A51B96AFBF0044AFBE0040AB
-:10132000AFB7003CAFB60038AFB50034AFB4003053
-:10133000AFB3002CAFB20028AFB10024AFB0002093
-:1013400094A900003C020800944223D03C0308000A
-:101350008C631BB03C0408008C841BAC012210235E
-:101360000064182AA7A9001E106000BEA7A20016DC
-:1013700024BE002297B6001E24B3001A24B700161C
-:101380008FC2000014400008000000008FC2FFF868
-:1013900097A300168FC4FFF4004310210082202A77
-:1013A000148000B00000000097D5081832A2FFFF9B
-:1013B000104000A3000090210040A02100008821DF
-:1013C0000E000625000000000040302114C0000778
-:1013D000000000003C0208008C4223DC2442000193
-:1013E0003C0108000A000596AC2223DC3C100800F2
-:1013F000021180218E101BC89608000A310200409D
-:10140000104000052407180C8E02000C2407188CCD
-:1014100000021400ACC200183102008054400001E8
-:1014200034E700103C020800005110218C421BD010
-:101430003C030800007118218C631BD400021500C6
-:1014400000031C0000431025ACC2001496040008E1
-:101450003242FFFF008210210282102A1440000253
-:1014600002B22823008028218E020000024590212C
-:10147000ACC200008E02000400C020212631001002
-:10148000AC82000430E2FFFFAC800008A485000EAF
-:10149000AC820010240203050E0005A2A482000CF9
-:1014A0003242FFFF0054102B1440FFC53242FFFFB1
-:1014B0000A00058E000000008E6200008E63FFFCB3
-:1014C0000043102A10400067000000008E62FFF009
-:1014D000000289003C100800021180210E00062540
-:1014E0008E101BC80040302114C000050000000011
-:1014F0008E62082C244200010A000596AE62082C78
-:101500009608000A31020040104000052407180C1C
-:101510008E02000C2407188C00021400ACC20018C4
-:101520003C020800005110218C421BD03C030800F3
-:10153000007118218C631BD40002150000031C00ED
-:1015400000431025ACC200148E63FFF4960200081D
-:10155000004320233242FFFF3083FFFF004310216E
-:1015600002C2102A104000030080282197A9001E03
-:10157000013228238E62000030A4FFFF00441021B6
-:10158000AE620000A4C5000E8E020000ACC20000D6
-:101590008E0200048E63FFF400431021ACC20004ED
-:1015A0008E63FFF496020008006418210062102A7E
-:1015B00014400006024590218E62FFF0AE60FFF4F9
-:1015C000244200010A000571AE62FFF0AE63FFF431
-:1015D000ACC000083242FFFF105600033102000485
-:1015E000104000062402030531020080544000012F
-:1015F00034E7001034E7002024020905A4C2000CDF
-:101600008EE300008EE20004146200073C02B49AEC
-:101610008EE208605440000134E704003C024B6550
-:101620000A00058834427654344289ABACC2001CAF
-:1016300030E2FFFFACC200100E0005A200C0202166
-:101640003242FFFF0056102B1440FF9B00000000A9
-:101650008E6200008E63FFFC0043102A1440FF4896
-:10166000000000008FBF00448FBE00408FB7003CD9
-:101670008FB600388FB500348FB400308FB3002C94
-:101680008FB200288FB100248FB0002003E0000843
-:1016900027BD004827BDFFE8AFBF0014AFB0001062
-:1016A0008F6244508F6344100A0005B1008080218E
-:1016B0008F626820304220001040000300000000CC
-:1016C0000E0001F0000020218F6244508F6344100F
-:1016D0003042FFFF0043102B1440FFF500000000D4
-:1016E0008F630C143063000F2C6200021440000B57
-:1016F000000000008F630C143C0208008C421B4069
-:101700003063000F244200013C010800AC221B4062
-:101710002C6200021040FFF700000000AF705C1860
-:101720008F625C103042000210400009000000008F
-:101730008F626820304220001040FFF80000000057
-:101740000E0001F0000020210A0005C40000000086
-:101750008FBF00148FB0001003E0000827BD0018F1
-:1017600000000000000000000000000027BDFFE8AE
-:101770003C1BC000AFBF0014AFB00010AF60680CDE
-:101780008F62680434420082AF6268048F63400055
-:1017900024020B503C010800AC221B5424020B789D
-:1017A0003C010800AC221B6434630002AF634000BC
-:1017B0000E000605008080213C010800A0221B6865
-:1017C000304200FF24030002144300050000000023
-:1017D0003C0208008C421B540A0005F8AC5000C0C3
-:1017E0003C0208008C421B54AC5000BC8F62443455
-:1017F0008F6344388F6444103C010800AC221B5CAA
-:101800003C010800AC231B6C3C010800AC241B58B5
-:101810008FBF00148FB0001003E0000827BD001830
-:101820003C0408008C8700003C03AA553463AA5589
-:101830003C06C003AC8300008CC2000014430007C8
-:10184000240500023C0355AA346355AAAC8300006A
-:101850008CC2000050430001240500013C02080036
-:10186000AC47000003E0000800A0102127BDFFF8EE
-:1018700018800009000028218F63680C8F62680CB3
-:101880001043FFFE0000000024A5000100A4102A60
-:101890001440FFF90000000003E0000827BD000825
-:1018A0008F6344503C0208008C421B5C00031C0206
-:1018B0000043102B144000083C0380003C04080047
-:1018C0008C841B6C8F62445000021C020083102B1E
-:1018D0001040FFFC3C038000AF6344448F624444EB
-:1018E000004310241440FFFD000000008F624448B4
-:1018F00003E000083042FFFF3082FFFF2442E00097
-:101900002C422001144000033C0240000A0006481B
-:101910002402FFFF00822025AF645C388F625C30B8
-:10192000304200021440FFFC0000102103E00008D8
-:10193000000000008F6244503C0308008C631B5879
-:101940000A0006513042FFFF8F6244503042FFFFD1
-:101950000043102B1440FFFC0000000003E00008CF
-:101960000000000027BDFFE0008028213C040800A3
-:1019700024841AF00000302100003821AFBF001885
-:10198000AFA000100E00067CAFA000140A00066095
-:10199000000000008FBF001803E0000827BD0020F2
-:1019A0000000000000000000000000003C020800F1
-:1019B000344230003C030800346330003C0408002B
-:1019C000348437FF3C010800AC221B742402004021
-:1019D0003C010800AC221B783C010800AC201B70C5
-:1019E000AC600000246300040083102B5040FFFD16
-:1019F000AC60000003E00008000000000080482107
-:101A00008FAA00103C0208008C421B703C040800A6
-:101A10008C841B788FAB0014244300010044102BEE
-:101A20003C010800AC231B7014400003000040215F
-:101A30003C010800AC201B703C0208008C421B706B
-:101A40003C0308008C631B749124000000021140C9
-:101A5000004310210048102125080001A044000087
-:101A6000290200081440FFF4252900013C02080067
-:101A70008C421B703C0308008C631B748F64680CE1
-:101A80000002114000431021AC440008AC45000C9A
-:101A9000AC460010AC470014AC4A001803E0000844
-:101AA000AC4B001C00000000000000004D61696E9E
-:101AB00043707542000000004D61696E43707541CE
-:101AC00000000000000000000000000073746B6F55
-:101AD00066666C64496E000073746B6F66662A2AD2
-:101AE0000000000053774576656E743000000000FA
-:101AF000000000000000000000000000666174614A
-:101B00006C45727200000000000000000000000040
-:101B100000000000000000000000000000000000C5
-:101B200000000000000000000000000000000000B5
-:101B300073746B6F66666C645F76312E362E300080
-:101B40000000000000000000000000000000000095
-:0C1B500000000000000000000000000089
-:00000001FF
- * Firmware is:
- * Derived from proprietary unpublished source code,
- * Copyright (C) 2000-2003 Broadcom Corporation.
- *
- * Permission is hereby granted for the distribution of this firmware
- * data in hexadecimal or equivalent format, provided this copyright
- * notice is accompanying it.
diff --git a/firmware/tigon/tg3_tso5.bin.ihex b/firmware/tigon/tg3_tso5.bin.ihex
deleted file mode 100644
index 33672514eab3..000000000000
--- a/firmware/tigon/tg3_tso5.bin.ihex
+++ /dev/null
@@ -1,252 +0,0 @@
-:10000000010200000001000000000FD80C004003B6
-:100010000000000000010F040000000010000003B9
-:10002000000000000000000D0000000D3C1D00015C
-:1000300037BDE00003A0F0213C10000126100000B5
-:100040000C004010000000000000000D27BDFFE084
-:100050003C04FEFEAFBF00180C0042E834840002EE
-:100060000C004364000000003C03000190630F3467
-:10007000240200023C04000124840E9C146200034C
-:10008000240500013C04000124840E902406000293
-:1000900000003821AFA000100C004378AFA000147E
-:1000A0000C00402C000000008FBF001803E0000887
-:1000B00027BD0020000000000000000027BDFFE079
-:1000C000AFBF001CAFB20018AFB100140C0042D497
-:1000D000AFB000103C128000241100018F70681036
-:1000E0003202040010400007000000008F64100876
-:1000F0000092102414400003000000000C00406433
-:10010000000000003C02000190420F561051000315
-:10011000320202001040FFF1000000000C0041B468
-:100120000000000008004034000000008FBF001CE9
-:100130008FB200188FB100148FB0001003E00008D8
-:1001400027BD002027BDFFE03C04000124840EB041
-:10015000000028210000302100003821AFBF001826
-:10016000AFA000100C004378AFA000140000D02115
-:1001700024020130AF6250003C010001A4200F5066
-:100180003C010001A0200F578FBF001803E00008BA
-:1001900027BD002000000000000000003C0300011B
-:1001A00024630F609062000027BDFFF0144000033D
-:1001B0000080C02108004073000048213C0220005C
-:1001C00003021024104000032409000208004073B9
-:1001D000A0600000240900010018104030431F8077
-:1001E000346F80081520004B25EB00283C040001EB
-:1001F000008320218C8480103C05000124A50F7A07
-:1002000000041402A0A200003C010001A0240F7B06
-:100210003C02000100431021944280143C01000183
-:10022000A0220F7C3C0C0001018360218D8C801882
-:10023000304200FF24420008000220C324020001D3
-:100240003C010001A0220F600124102B1040000C83
-:100250000000382124A6000E016028218CA2000095
-:100260008CA3000424A5000824E70001ACC2000010
-:10027000ACC3000400E4102B1440FFF824C60008AF
-:10028000000038213C08000125080F7B9106000082
-:100290003C02000190420F7C2503000D00C3282181
-:1002A0000046102300021FC2004310210002104329
-:1002B0001840000C0000202191020001004610238C
-:1002C00000021FC2004310210002184394A2000044
-:1002D00024E700010082202100E3102A1440FFFBE4
-:1002E00024A5000200041C023082FFFF00622021CE
-:1002F00000041402008220213C02FFFF018210242E
-:100300003083FFFF004310253C010001080040FA44
-:10031000AC220F803C05000124A50F7C90A20000B8
-:100320003C0C0001018360218D8C8018000220C2EA
-:100330001080000E000038210160302124A5000C3F
-:100340008CA200008CA3000424A5000824E700016F
-:10035000ACC20000ACC3000400E4102B1440FFF852
-:1003600024C600083C05000124A50F7C90A20000D3
-:1003700030430007240200041062001128620005C7
-:10038000104000052402000210620008000710C09F
-:10039000080040FA00000000240200061062000E6F
-:1003A000000710C0080040FA0000000000A2182159
-:1003B0009463000C004B1021080040FAA443000095
-:1003C000000710C000A218218C63000C004B102104
-:1003D000080040FAAC43000000A218218C63000C16
-:1003E000004B202100A21021AC8300009442001099
-:1003F000A482000495E700063C02000190420F7CB5
-:100400003C03000190630F7A00E2C8233C02000124
-:1004100090420F7B2463002801E3402124420028FE
-:100420001520001201E2302194C2000C3C010001B1
-:10043000A4220F7894C2000494C300063C0100017A
-:10044000A4200F763C010001A4200F7200021400CA
-:10045000004310253C010001AC220F6C9502000402
-:100460003C01000108004124A4220F703C0200015D
-:1004700094420F703C03000194630F7200431021FB
-:10048000A50200043C02000194420F6CA4C20004C7
-:100490003C0200018C420F6CA4C200063C04000127
-:1004A00094840F723C02000194420F703C0A0001D8
-:1004B000954A0F76004418213063FFFF0062182A26
-:1004C000240200021122000B008320233C030001C0
-:1004D00094630F7830620009104000063062FFF626
-:1004E000A4C2000C3C02000194420F783042000983
-:1004F00001425023240200011122001B2922000284
-:1005000050400005240200021120000731A2FFFF25
-:1005100008004197000000001122001D240200166F
-:100520000800419731A2FFFF3C0E000195CE0F80DD
-:10053000108000050180682101C4202100041C02F4
-:100540003082FFFF00627021000E1027A502000A12
-:100550003C03000190630F7B31A2FFFF00E21021FA
-:100560000800418D004320233C02000194420F808B
-:100570000044202100041C023082FFFF0062202181
-:10058000008070210004102708004185A502000AA0
-:100590003C05000124A50F7A90A30000146200021C
-:1005A00024E2FFF2A5E2003490A2000000E2102352
-:1005B000A50200023C03000194630F803C0200018D
-:1005C00094420F5A30E5FFFF0064182100451023C4
-:1005D0000062202300041C023082FFFF0062202101
-:1005E00000041027A502000A3C03000190630F7C61
-:1005F0002462000114A20005008070210163102113
-:10060000904200000800418500026200246200025E
-:1006100014A20003306200FE004B1021944C000035
-:100620003C02000194420F823183FFFF3C04000131
-:1006300090840F7B0043102100E21021004420230E
-:10064000008A202100041C023082FFFF006220216A
-:100650000004140200822021008068210004102779
-:10066000A4C2001031A2FFFF000E1C0000431025A1
-:100670003C04000124840F72ADE20010948200005B
-:100680003C05000194A50F763C0300018C630F6CC0
-:100690002442000100B92821A48200003322FFFF78
-:1006A000006220210083182B3C010001A4250F7655
-:1006B0001060000324A2FFFF3C010001A4220F767A
-:1006C0003C024000030210253C010001AC240F6CE9
-:1006D000AF62100803E0000827BD00103C030001D2
-:1006E00090630F5627BDFFE824020001AFBF00143E
-:1006F00010620026AFB000108F620CF42442FFFF9E
-:100700003042007F000211008C4340003C01000198
-:10071000AC230F648C434008244440008C5C4004AC
-:1007200030620040144000022402008824020008C5
-:100730003C010001A4220F68306200041040000553
-:10074000240200013C010001A0220F57080041D5FE
-:10075000000314023C010001A0200F570003140203
-:100760003C010001A4220F549483000C24020001D8
-:100770003C010001A4200F503C010001A0220F56B3
-:100780003C010001A4230F62240200011342001E59
-:10079000000000001340000524020003134200671C
-:1007A00000000000080042CF000000003C020001F1
-:1007B00094420F62241A00013C010001A4200F5E44
-:1007C0003C010001A4200F52304407FF00021BC26D
-:1007D000000318233063003E3463003600021242E7
-:1007E0003042003C006218213C010001A4240F5853
-:1007F00000832021246300303C010001A4240F5A0F
-:100800003C010001A4230F5C3C06000124C60F52EA
-:1008100094C5000094C300023C04000194840F5A64
-:10082000006510210044102A104000133C10800085
-:1008300000A31021A4C200003C02A000AF620CF48F
-:100840003C010001A0200F568F6410080090102476
-:1008500014400003000000000C0040640000000091
-:100860008F620CF400501024104000B7000000000C
-:100870000800420F000000003C03000194630F5089
-:1008800000851023A4C40000006218213042FFFF3D
-:100890003C010001A4230F50AF620CE83C020001B0
-:1008A00094420F6834420024AF620CEC94C30002FF
-:1008B0003C02000194420F50146200123C0280007E
-:1008C0003C1080003C02A000AF620CF43C0100012F
-:1008D000A0200F568F6410080090102414400003CD
-:1008E000000000000C004064000000008F620CF467
-:1008F000005010241440FFF700000000080042CF11
-:10090000241A0003AF620CF43C1080008F641008BE
-:100910000090102414400003000000000C0040640C
-:10092000000000008F620CF4005010241440FFF708
-:1009300000000000080042CF241A00033C07000119
-:1009400024E70F5094E2000003821021AF620CE014
-:100950003C0200018C420F64AF620CE43C050001D4
-:1009600094A50F5494E300003C04000194840F58B4
-:100970003C02000194420F5E00A328230082202342
-:1009800030A6FFFF3083FFFF00C3102B144000434D
-:10099000000000003C02000194420F5C00021400C1
-:1009A00000621025AF620CE894E200003C030001F5
-:1009B00094630F5400441021A4E200003042FFFF72
-:1009C000144300213C0200083C02000190420F57F2
-:1009D000104000063C03000C3C02000194420F68EA
-:1009E000346306240800427C0000D0213C02000150
-:1009F00094420F683C03000834630624004310252A
-:100A0000AF620CEC3C1080003C02A000AF620CF422
-:100A10003C010001A0200F568F64100800901024A4
-:100A200014400003000000000C00406400000000BF
-:100A30008F620CF4005010241040001500000000DC
-:100A400008004283000000003C03000194630F682B
-:100A5000344206243C108000006218253C028000CD
-:100A6000AF630CECAF620CF48F641008009010249C
-:100A700014400003000000000C004064000000006F
-:100A80008F620CF4005010241440FFF700000000A7
-:100A90003C010001080042CFA4200F5E3C0200018F
-:100AA00094420F5C0002140000C21025AF620CE8F3
-:100AB0003C02000190420F57104000093C03000C1B
-:100AC0003C02000194420F68346306240000D021E8
-:100AD00000431025AF620CEC080042C13C108000BE
-:100AE0003C02000194420F683C0300083463060492
-:100AF00000431025AF620CEC3C02000194420F5EF3
-:100B0000004510213C010001A4220F5E3C10800032
-:100B10003C02A000AF620CF43C010001A0200F5683
-:100B20008F6410080090102414400003000000009F
-:100B30000C004064000000008F620CF40050102490
-:100B40001440FFF7000000008FBF00148FB00010AA
-:100B500003E0000827BD00180000000027BDFFE0EB
-:100B60003C04000124840EC0000028210000302134
-:100B700000003821AFBF0018AFA000100C00437870
-:100B8000AFA000140000D02124020130AF62500059
-:100B90003C010001A4200F503C010001A0200F5790
-:100BA0008FBF001803E0000827BD002027BDFFE825
-:100BB0003C1BC000AFBF0014AFB00010AF60680CAA
-:100BC0008F62680434420082AF6268048F63400021
-:100BD00024020B503C010001AC220F2024020B78B0
-:100BE0003C010001AC220F3034630002AF634000CF
-:100BF0000C004315008080213C010001A0220F342D
-:100C0000304200FF240300021443000500000000EE
-:100C10003C0200018C420F2008004308AC5000C089
-:100C20003C0200018C420F20AC5000BC8F62443467
-:100C30008F6344388F6444103C010001AC220F28BC
-:100C40003C010001AC230F383C010001AC240F240F
-:100C50008FBF00148FB0001003E0000827BD0018FC
-:100C600003E000082402000127BDFFF818800009F6
-:100C7000000028218F63680C8F62680C1043FFFE10
-:100C80000000000024A5000100A4102A1440FFF970
-:100C90000000000003E0000827BD00088F634450F7
-:100CA0003C0200018C420F2800031C020043102B61
-:100CB000144000083C0380003C0400018C840F3881
-:100CC0008F62445000021C020083102B1040FFFC76
-:100CD0003C038000AF6344448F62444400431024CB
-:100CE0001440FFFD000000008F62444803E000084C
-:100CF0003042FFFF3082FFFF2442E0002C422001FF
-:100D0000144000033C024000080043472402FFFF58
-:100D100000822025AF645C388F625C303042000274
-:100D20001440FFFC0000102103E000080000000058
-:100D30008F6244503C0300018C630F240800435031
-:100D40003042FFFF8F6244503042FFFF0043102BC0
-:100D50001440FFFC0000000003E000080000000059
-:100D600027BDFFE0008028213C04000124840ED030
-:100D70000000302100003821AFBF0018AFA00010E4
-:100D80000C004378AFA000140800435F000000008F
-:100D90008FBF001803E0000827BD00203C020001BF
-:100DA0003442D6003C0300013463D6003C04000109
-:100DB0003484DDFF3C010001AC220F4024020040DE
-:100DC0003C010001AC220F443C010001AC200F3C6F
-:100DD000AC600000246300040083102B5040FFFD32
-:100DE000AC60000003E00008000000000080482123
-:100DF0008FAA00103C0200018C420F3C3C04000111
-:100E00008C840F448FAB0014244300010044102B4A
-:100E10003C010001AC230F3C1440000300004021C2
-:100E20003C010001AC200F3C3C0200018C420F3C15
-:100E30003C0300018C630F4091240000000211402C
-:100E4000004310210048102125080001A0440000A3
-:100E5000290200081440FFF4252900013C0200018A
-:100E60008C420F3C3C0300018C630F408F64680C84
-:100E70000002114000431021AC440008AC45000CB6
-:100E8000AC460010AC470014AC4A001803E0000860
-:100E9000AC4B001C00000000000000004D61696EBA
-:100EA00043707542000000004D61696E43707541EA
-:100EB00000000000000000000000000073746B6F71
-:100EC00066666C64000000000000000073746B6FC5
-:100ED00066666C64000000000000000066617461DA
-:100EE0006C4572720000000000000000000000006D
-:100EF00000000000000000000000000000000000F2
-:100F000000000000000000000000000000000000E1
-:100F100073746B6F66666C645F76312E322E3000B0
-:0C0F2000000000000000000000000000C5
-:00000001FF
- * Firmware is:
- * Derived from proprietary unpublished source code,
- * Copyright (C) 2000-2003 Broadcom Corporation.
- *
- * Permission is hereby granted for the distribution of this firmware
- * data in hexadecimal or equivalent format, provided this copyright
- * notice is accompanying it.
-/* 5705 needs a special version of the TSO firmware. */
diff --git a/firmware/ttusb-budget/dspbootcode.bin.ihex b/firmware/ttusb-budget/dspbootcode.bin.ihex
deleted file mode 100644
index b4b2247077c4..000000000000
--- a/firmware/ttusb-budget/dspbootcode.bin.ihex
+++ /dev/null
@@ -1,820 +0,0 @@
-:1000000008AA001800030800001000000180185F13
-:100010000000018077182AEB6BF8001803FF68F8DE
-:100020000018FFFEF7B8F7BEF6B9F4A0F6B7F6B5BC
-:10003000F6B6F02019DFF1000001F84D01ABF6B87B
-:10004000F02019DFF07301A57EF80012F000000126
-:1000500047F800117E9200F80011F00000017EF8D0
-:100060000011F00000016C89019AF7B8EEFCF02055
-:10007000FFFFF1000001F84D01BFF27301B94E021C
-:10008000F495F5E356027E001100FA4C01B76B03BC
-:100090000001F6B8EE04F0740DA7F07401C54A1122
-:1000A0004A1672112AE610F80011FA4501DBF495A0
-:1000B000EEFF4811F0002AC68816F495F49510EE6C
-:1000C000FFFFF4E36CE9FFFF01D510F82AE7F845DC
-:1000D00001E210F82AE7F4E3F07401FFEE018A165A
-:1000E0008A11FC00F7B8E9204A1109F82AE6F84E0F
-:1000F00001F3F27301FDF495E80172112AE649114A
-:1001000080E12AC6F3000001E80081F82AE68A119E
-:10011000FC00F495F073020010F82A0FFC004A115D
-:10012000F074020280F82A107308000940F82A15BA
-:1001300082F80011F495771003E8F5A9F830022150
-:1001400071F82A102A1556F82A0CF0E34EF82A16F0
-:10015000E8004EF82A0C8A11FC004A064A074A1D9C
-:1001600068F800077D3F69F80007400068F8001D47
-:10017000FFFC6BF82A0F00018A1D8A078A06F4EB40
-:10018000EEFD76F82A0F000076000000FB80194C87
-:10019000F495E80080F82A11F980190780F82A0EF2
-:1001A000F980166676002A1210F82A11F98018E3F1
-:1001B00010F82A0EF980166610F82A0EF9801687B4
-:1001C000EE03FC004A11F6B8F495F020800011F817
-:1001D0002A5AF84D029311F82A9FF84C027C7712A4
-:1001E0002A39491201F82A9F8911F495F4957181F1
-:1001F00000116CE1FFAB02936BF82A9F0001E90547
-:1002000001E2000381F82AA0F073029572112A9F7F
-:10021000F49510E12A396BF82A9F000111F82A9F02
-:1002200009F82AA0F84C029376F82A5A000076F8CA
-:100230002A9F000076F82AA000008811F495481142
-:100240008A11FC004A11EEFE10F82A5AF84402B254
-:1002500076F82A5A0001F07402588811F495771044
-:100260008000F4A9F83002B24811F03000FF80009D
-:1002700010F82A5BF98018D6EE028A11FC00F4957A
-:100280004A084A094A0A4A0B4A0C4A0D4A104A11BE
-:100290004A124A134A144A154A164A174A174A1963
-:1002A0004A0E4A064A074A1A4A1D4A1B4A1C68F85F
-:1002B00000077D3F69F80007400068F8001DFFFC5B
-:1002C000481868F80018FFFEF495F4954A08EEFD0A
-:1002D000F07402588811F49577108000F4A9F83072
-:1002E00002EF4811F03000FF800010F82A5BF9801F
-:1002F00018D6EE038A18F4958A1C8A1B8A1D8A1A5E
-:100300008A078A068A0E8A198A178A178A168A1510
-:100310008A148A138A128A118A108A0D8A0C8A0B0F
-:100320008A0A8A098A08F4EB4A1177112A397681F8
-:10033000005577122A1810E2000180E1000110E256
-:10034000000280E1000276E10003000076E1000493
-:1003500000AAF07402988A11FC004A118811F495E1
-:10036000F49510816FF82A9E0C88E8FF18E10001CF
-:100370001AF82A9EF0301FFF80F82A9E8A11FC008E
-:100380004A1177112A397681005577122A1811E21D
-:10039000000181E1000111E2000281E1000276E149
-:1003A0000003000248086FE100040C98F03000FFE1
-:1003B00080E1000576E1000600AAF07402988A1137
-:1003C000FC004A1177112A397681005577122A18D4
-:1003D00010E2000180E1000110E2000280E1000271
-:1003E00076E1000300044811F00000048812F4953F
-:1003F00077132A76E900E598F3000001F6B8480B78
-:1004000008F82A3CF8430371768200AAF074029837
-:100410008A11FC004A11EEF08811F495F49571816F
-:10042000001471E1000100154911F3000002891167
-:10043000E7826DEA0004E7836DEB000A771A000596
-:10044000F07203AA1181F2E88082E9FF19E100014C
-:10045000F1A0819211E1000CF2E88083E9FF19E13B
-:10046000000DF1A081936DE9000248184918700051
-:100470000015F0000004F300000A80018102F2740C
-:100480000E54F4954814EE108A11FC004A11F074D1
-:100490000C5E80F82A5C77122A3976820055771133
-:1004A0002A1810E1000180E2000110E1000280E260
-:1004B000000276E20003001CF6B856F82A16F0F0A7
-:1004C000F0F880E2000756F82A16F1F0E8FFF28013
-:1004D00080E2000656F82A16F1F8E8FFF28080E282
-:1004E000000557F82A16E8FFF28080E2000456F86B
-:1004F000276CF0F0F0F880E2000B56F8276CF1F072
-:10050000E8FFF28080E2000A56F8276CF1F8E8FF75
-:10051000F28080E20009E8FF57F8276CF28080E261
-:10052000000856F8276AF0F0F0F880E2000F56F85D
-:10053000276AF1F0E8FFF28080E2000E56F8276AA1
-:10054000F1F8E8FFF28080E2000D57F8276AE8FF33
-:10055000F28080E2000C76E20013000076E20012E6
-:1005600000006FF82A5C0C5880E20011E8FF18F8D0
-:100570002A5C80E2001076E20017000076E20016A6
-:1005800000006FF82A9E0C5880E20015E8FF18F86A
-:100590002A9E80E2001476E2001B000076E2001A38
-:1005A000000076E20019000070E20018276E76E283
-:1005B000001F000076E2001E000076E2001D000031
-:1005C00076E2001C000076E2002000AAF074029897
-:1005D0008A11FC004A11EEFE10F82A38F84504EDA5
-:1005E00077122A1810E200028811F495771000089B
-:1005F0006DE9FFDFF6A9F8200475F073047DF010B3
-:100600000021F0001A8348087EF80008F4E2F07434
-:10061000030AF07304EA4812F2740323F0000004A2
-:10062000F2740336F495E800F07304EA77112A189F
-:10063000E8FF6FE100040D4818E10005F274096954
-:10064000F495F2A0F0740336F07304EA77112A18D7
-:10065000E8FF6FE100040D4818E10005F27409415C
-:10066000F495F2A0F0740336F07304EAF0740357C3
-:10067000F07304EA10F82A1CF07412A4F274033622
-:10068000F495E800F07304EA4812F2740380F00075
-:100690000004F2740336F495E800F07304EA10F8ED
-:1006A0002A1CF07412C5F2740336F495E800F07356
-:1006B00004EA77112A18E8FF6FE100060D4818E1F7
-:1006C000000771E100050012F2A070000012800125
-:1006D00010E10004F0740E7AF2740336F495E80029
-:1006E000F07304EAF07403BC76F82A380000EE02D6
-:1006F0008A11FC004A1177112A3976810055771248
-:100700002A1810E2000180E1000110E2000280E1FD
-:10071000000276E1000300094811F000000488128D
-:10072000F49577132A86E900E598F3000001F6B8FE
-:10073000480B08F82A3CF843050A768200AAF074B0
-:1007400002988A11FC004A1177112A3976810055E6
-:1007500077132A1810E3000180E1000110E3000282
-:1007600080E1000213E3000381E1000348117711E7
-:100770000000F84D0544F000000488124813F00012
-:1007800000048813F495F495E5986D91F6B8481136
-:1007900008F82A3CF843053AF0202A394911F500B7
-:1007A0008911F495F49576E1000400AAF07402989A
-:1007B0008A11FC004A1177112A3976810055771287
-:1007C0002A1810E2000180E1000110E2000280E13D
-:1007D000000276E10003000C4811F00000048812CA
-:1007E000F49577132A7AE900E598F3000001F6B84A
-:1007F000480B08F82A3CF843056A768200AAF07490
-:1008000002988A11FC004A1177112A397681005525
-:1008100077122A1810E2000180E1000110E20002C4
-:1008200080E1000276E1000300194811F0000004A5
-:100830008812F49577132A5DE900E598F30000012A
-:10084000F6B8480B08F82A3CF8430593768200AACC
-:10085000F07402988A11FC004A11881110F82A38A5
-:10086000F84405E310F82AA1F84405BA6CE1FF56F4
-:1008700005E372122AA1F49570E22A1800116BF8B0
-:100880002AA10001F07305E372122AA1F49570E227
-:100890002A18001110F82AA1F00000018812F4951E
-:1008A000F4956EE2FFFC05D173122AA14811F00005
-:1008B000000580F82AA210F82AA108F82AA2F84414
-:1008C00005E36CE1FFAB05DD76F82A38000176F828
-:1008D0002AA1000076F82AA200008A11FC00F495F3
-:1008E0004A084A094A0A4A0B4A0C4A0D4A104A1158
-:1008F0004A124A134A144A154A164A174A174A19FD
-:100900004A0E4A064A074A1A4A1D4A1B4A1C68F8F8
-:1009100000077D3F69F80007400068F8001DFFFCF4
-:10092000481868F80018FFFEF495F4954A08EEFFA1
-:1009300010F82A5BF9801804F07405A2EE018A18F9
-:10094000F4958A1C8A1B8A1D8A1A8A078A068A0ECF
-:100950008A198A178A178A168A158A148A138A129C
-:100960008A118A108A0D8A0C8A0B8A0A8A098A08D7
-:10097000F4EBEEFD76F82A38000076F82A5A0000EB
-:10098000E8014E00FB8017D6F495E80180F82A5B59
-:1009900076002A8FF98016AA10F82A5BF980175C76
-:1009A00010F82A5BF980176FFB801666F495E81A39
-:1009B000FB801687F495E81AFB801666F495E81B11
-:1009C000FB801687F495E81BEE03FC004A11F495B2
-:1009D00013028811E800F84D066AF3100001891A25
-:1009E000F495F07206691C918A11FC004A11881175
-:1009F00012031102F8450679F0100001881AF495E7
-:100A0000F072067881918A11FC004A11F495710206
-:100A10000011110361F800110001F8300691F6B8D9
-:100A20006FF800110C1F8811F3E8E8FF1881F1A09E
-:100A30008181F073069DF6B86FF800110C1F8811C4
-:100A4000F33000FFF020FF001881F1A081818A11AE
-:100A5000FC004A11F495110261F8000B0001F82026
-:100A600006B1490BF61F8811F495F4951081F273C5
-:100A700006B8F03000FF490BF61F8811F495F49585
-:100A80001281F4788A11FC004A11F4957102001267
-:100A900013038811E800F84D06CCF3100001891A01
-:100AA000F495F07206CB1192F2C081918A11FC008C
-:100AB0008812120271010013F84506DBF0100001E4
-:100AC000881AF495F07206DAE598FC004A11EEFEF9
-:100AD0008811110410067105001261F8001200015E
-:100AE000F82006EAF0000001F6B8F00000016FF807
-:100AF00000120F1F48088100F47F8001F27406BACB
-:100B0000F4954811EE028A11FC004A11EEFE88129B
-:100B1000110410067105001361F800130001F8209C
-:100B20000709F0000001F00000018811F6B86FF825
-:100B300000130F1F81004811F47F8001F27406CE6C
-:100B4000F49548124811F030FFFEEE028A11FC00C5
-:100B50004A114A164A17EEFCF495800271080016F5
-:100B60001009710B00178003710A00114817F8452E
-:100B7000073F700000111003F074069F80017000A1
-:100B800000161002F074067B6D916D966CEFFFFFFE
-:100B9000072FEE048A178A168A11FC004A11EEFE0E
-:100BA00010F82AE808F82AE9F845076476000001F9
-:100BB00062F82AE9005EF274120BF0003040721104
-:100BC0002AE97710000FF5A9F82007616BF82AE9E8
-:100BD0000001F073076476F82AE90000EE028A113A
-:100BE000FC004A118811E80075F800080008E800C8
-:100BF00075F800080009F6B8F495F020FC3F75F888
-:100C00000008000DF0200C3075F80008000C76F894
-:100C10002AE8000076F82AE900006C81079276F84D
-:100C20002AEA0000FB801676F495E810E80075F8D3
-:100C300000080000F07307A876F82AEA0001FB809C
-:100C40001666F495E810FB801687F495E810E80026
-:100C500075F800080000F6B8F495F020FFFF75F86D
-:100C6000000800008A11FC00F4954A084A094A0A63
-:100C70004A064A074A1D68F800077D3F69F80007E1
-:100C8000400068F8001DFFFC10F82AEAF84507E16B
-:100C900010F82AE8F0000001F030000F80F82AE890
-:100CA00010F82AE8F84407D6F6B8F495F020FC3F8F
-:100CB00075F80008000DF0200C3075F80008000CE5
-:100CC000E80075F800080000F6B8F495F020FFFF82
-:100CD00075F8000800008A1D8A078A068A0A8A09B0
-:100CE0008A08F4EBEEFFF2740767F495E801EE0171
-:100CF000FC004A074A1D68F800077D3F69F80007B5
-:100D0000400068F8001DFFFC8A1D8A07F4EB4A11B9
-:100D10007711002876812400E80075F800080001AA
-:100D2000F2740767F495E8007711001D6881007F71
-:100D3000F6B8F495F020FF807711001DF030010027
-:100D40001A818081F0740A33F07411ACF980132594
-:100D5000F9801653F9801782F074062FF98014B2C7
-:100D6000F9801910F0740DE3F07407E8F07402369E
-:100D70008A11FC004A1160F8277BFFFFF830083920
-:100D800071F8277B277960F82779FFFFF83008B2E0
-:100D900010F8298608F82779F0307FFF8811F4953C
-:100DA00077104000F6A9F830085810F8277908F8AD
-:100DB000277AF0307FFF8811F49577104000F6A96C
-:100DC000F820086376F82779FFFF76F8277BFFFF86
-:100DD000F7B8F27308D9F020FFFFF6B856F8277479
-:100DE000F0F9881156F82772F0F98812F495F49505
-:100DF000E720F4A9F830088FF120277C4811F6008D
-:100E00008813F495F495108308F82779F0307FFF64
-:100E10008813F49577104000F5ABF830088F6D918A
-:100E20004811F03001FF8811F495E720F7A9F83058
-:100E300008746D894811F03001FFF0E7F495480817
-:100E40004EF827744808F1F98911F495F49571E189
-:100E5000277C277A60F8277BFFFFF83008AB48082B
-:100E60004EF8277276F8277BFFFF76F82779FFFF89
-:100E7000F27308D9F495E80044F8277340F8277511
-:100E800082F80011F49577108000F6A9F82008D8B0
-:100E9000F6B810F82773F000800048084EF8277461
-:100EA0004808F0F98811F495F49571E1277C277AC8
-:100EB000F7B857F82774F062FFFFF040FF80F28028
-:100EC0004EF82774E8008A11FC004A114A16EEFB1E
-:100ED00011F8277109F8277389118810F495F49592
-:100EE000F6A9F82008EDF273090EF495E800F62053
-:100EF00076000041F07412EE8816F495F7B86D96FE
-:100F000010F80016F847090AE7617600000076013C
-:100F10000080760200FF76030000F2740CB9F495AD
-:100F2000E8006CE9FFFF08FB7316000EF066004155
-:100F3000EE058A168A11FC004A11F495710200131D
-:100F4000F6B877117FFF57F827724811F280F0004A
-:100F500080008811F640F0E0F1F1E801F28080F8BD
-:100F600027787712800057F827724812F28088128B
-:100F7000F495F4956C820938E80075F800080001D2
-:100F8000F073093DF020800175F8000800017081C0
-:100F900000138A11FC004A11F0307FFF11F82986F6
-:100FA000F520F3307FFF8911F49577104000F6A902
-:100FB000F8200954F2730967F495E8026FF8277A6C
-:100FC0000D20F3307FFF8911F49577104000F6A9CA
-:100FD000F8200964F2730967F495E80180F8277B2B
-:100FE000E8008A11FC004A1111F82986F520F33037
-:100FF0007FFF8911F49577104000F6A9F820097A4F
-:10100000F273098DF495E8026FF8277A0D20F3301A
-:101010007FFF8911F49577104000F6A9F820098A1E
-:10102000F273098DF495E80180F82779E8008A11B8
-:10103000FC004A11F495710200128811F6B857F8B5
-:101040002772F0207FFFF280F0008000808157F847
-:101050002772E801F3F1F28080F827787711800099
-:10106000481157F82772F2808811F495F4956C8135
-:1010700009B5E80075F800080001F07309BAF0201E
-:10108000800175F80008000145F8277143F82773BF
-:1010900083F80011F495E720F6A9F83009C9F27336
-:1010A00009E47712000057F82772F0207FFFF280E2
-:1010B0004912F500F300800061F8000B8000F83061
-:1010C00009DCF1208000F5208912F49548126FF8B0
-:1010D00027730D00F495490B4FF827728A11FE0013
-:1010E0004812F4954A114A164A17EEFCF495710815
-:1010F00000168817F0740830481870000016F27453
-:10110000098FF00000028811F495F4956C810A0AA9
-:10111000F27408DBF4954816481870000016F27453
-:10112000098FF00000028811100270010011800088
-:10113000F27406CEF495481749114817F60088173F
-:10114000E760F5A9F8200A2D4816F62088114818FE
-:1011500070000011F274098FF00000028811700114
-:10116000001110028000F27406CEF4954817EE04C8
-:1011700048168A178A168A11FC00EEFDE8004EF820
-:101180002770E8004EF82772E8004EF82774E80050
-:101190004EF8277676F82779FFFF76F8277A000051
-:1011A00076F8277BFFFF76F827780000E80075F8CF
-:1011B000000800017600000076010200F27412DCE3
-:1011C000F020277CEE03FC004A11EEFCF4954E0063
-:1011D00077127FFFF6B84912F180F3008000891280
-:1011E000F0E0F1F14F02E901F495480BF5405602A9
-:1011F000F18081F827787711800056004911F1803D
-:101200008911F495F4956C810A81E80075F800085D
-:101210000001F0730A86F020800175F800080001D3
-:101220001082EE048A11FC004A11EEFEF4954E0085
-:1012300077117FFFF6B84911F180F3008000891122
-:10124000F0E0F1F1E801F28080F827785600F12013
-:101250008000F180F495490BF84D0AABF020800135
-:1012600075F800080001F0730AAFE80075F800088F
-:101270000001EE0248118A11FC004A118812130283
-:1012800077110000F84D0ACBF3100001891AF4958C
-:10129000F0720ACA48111CF8297E881111F8297EBB
-:1012A000F200000180F8297E819248118A11FC0029
-:1012B0004A11F495710200118812F6B8F0207FFFF0
-:1012C00057F82770F280F0008000808257F827706E
-:1012D000E801F3F1F28080F8277877128000481255
-:1012E00057F82770F2808812F495F4956C820AF40E
-:1012F000E80075F800080001F0730AF9F020800199
-:1013000075F80008000145F82775E71043F82771C4
-:1013100083F800126DE800046D8AF6AAF8300B0A13
-:10132000F2730B257711000057F82770F0207FFF2C
-:10133000F2804911F500F300800061F8000B800095
-:10134000F8300B1DF1208000F5208911F49548112B
-:101350006FF827710D00F495490B4FF8277048116D
-:101360008A11FC004A114A164A17EEF08817101726
-:1013700080051016800610158007711400111005E5
-:10138000F030000188101006F0300001800849118B
-:101390001005F6018009100661F800080001F82028
-:1013A0000B4B1009F0000001800971080012F4AA2B
-:1013B000F8300B541009F00000018009120949119E
-:1013C000F47F8009F620800A56F827704E0C100929
-:1013D00080004818F2740ACEF00000048816F495D4
-:1013E000F4956C860B6DF2730C59F495E800F6B821
-:1013F000F495560CF0F98812F495F49570E2277C78
-:101400002986E800800E4811F8450BCC77100001C2
-:10141000F4A9F8300B896CE1FFFD0B8B10E700029B
-:10142000800EF0730B8B1087800EE710F5AEF8205E
-:101430000BB270000017700100161004F07406CE95
-:1014400048174916F60088174811F6208811100928
-:10145000F62080004818F2740ACEF00000048816C6
-:1014600010047000001770010011F07406CE4811CE
-:1014700000048004F0730BBC7000001770010011B1
-:101480001004F07406CE4811000480044911481677
-:10149000F6208816F495F4956C860BCC100A800023
-:1014A0004818F2740ACEF00000048816120AF845B3
-:1014B0000C33710A0010F4AEF8300C1C4816F0E141
-:1014C00088111208F8450BDB6D891207F8450BE906
-:1014D0001007800070020011100680011004F074E3
-:1014E00006DCF0730BEF48116F000C9F1004F074D2
-:1014F0000AB3110EF1C0810E10064911F6008006E4
-:101500001005F6208811F000000148086F000C9FBC
-:101510004818F2740ACEF00000041207F8450C11C6
-:101520001007800070020011100680011004F07492
-:1015300006DCF0730C1748116F000C9F1004F07458
-:101540000AB3110EF1C0810EF0730C331207F84587
-:101550000C2A10078000100680011005800210047C
-:10156000F07406DCF0730C3012056F000C9F100451
-:10157000F0740AB3110EF1C0810E76000001481814
-:10158000F2740ACEF0000004710400117081298603
-:10159000100E1CF82986800E760000014818F2749F
-:1015A0000ACEF0000004100E71040011808110F8C2
-:1015B0002986F0000001F0307FFF80F829861009AD
-:1015C000F00000028009EE108A178A168A11FC00CA
-:1015D00010F8277508F82771F01000014808FC0082
-:1015E0004A114A16EEFFF49571040016F00000014E
-:1015F00048084EF8297C6DEEFFFD4816F8450C9919
-:1016000056F8297CF0740A5A881110F8297DF000E8
-:10161000000148084EF8297C10F82982F0000001EA
-:101620008810F495F495F4A9FA300C9680F8298284
-:1016300056F82980F00000014EF8298073112982A4
-:101640006CEEFFFF0C76EE018A168A11FC004A113F
-:1016500076F82984000076F829850001E8004EF824
-:101660002A0C76F82986000076F829870000771181
-:1016700029887681AAAA76E10001AAAA76E1000269
-:1016800000008A11FC004A11EEFCF495710600146A
-:10169000710700137108001271090015771000FF1F
-:1016A000F4AAF8300D44491353F82A0C4FF82A0CC9
-:1016B0007312000EF166000D8911F4957710000188
-:1016C00071E124000011F4A9F8300D177710000221
-:1016D000F4A9F8300CEC7711298A76810000E80033
-:1016E0007714000077130000F0730D486C830CFA38
-:1016F0007711298A4812F0E8F04080008081E800E4
-:1017000077140000F0730D484913F340800081F80E
-:10171000298A61F800150001F8200D0769F8298A67
-:10172000400061F800140001F8200D0F69F8298AC3
-:1017300020007711298A4912F3E81B818181F07317
-:101740000D4811F82984F84C0D37771129887681D6
-:10175000AAAA11F82985F3100001F340AA0081E13B
-:101760000001760000028001700200147003001373
-:10177000F2740B28F495481171F829852984F073C7
-:101780000D737600000080017602000070030013E4
-:10179000F2740B28F495E800F0730D737711298A21
-:1017A0007081001311F82984F84C0D68771129888D
-:1017B0007681AAAA11F82985F3100001F340AA0046
-:1017C00081E10001760000038001700200147003C3
-:1017D0000013F2740B28F495481171F829852984B7
-:1017E000F0730D7376000001800170020014700325
-:1017F0000013F2740B28F49548116BF82984FFFF4D
-:10180000EE048A11FC004A11F540F495480BF47877
-:101810008811F495F4956CE1FFB90D88F2730DA56C
-:10182000F495E860F200000661F800110020F8303D
-:101830000D9861F8000B0001F8200DA3F2000007DD
-:10184000F0730DA361F8000B0001F8200DA1F273F5
-:101850000DA3F0000001F00000024808F47F8A1197
-:10186000FC00EEFFF07407FDF0740744F0740DB453
-:10187000F0740205F0740460F0730DAAEEFD10F828
-:101880002AA3F8440DCB10F82AA4F8450DD776000A
-:101890000200F27409E8F020220076F82AA4000081
-:1018A00076F82AA70000F0730DD776000200F274D4
-:1018B00009E8F020200076F82AA3000076F82AA78D
-:1018C0000001F0740C5EF0E0F0103A98F8470DE17A
-:1018D00076F8276E0000EE03FC004A11EEFE771149
-:1018E00020007600AAAA76010200F274066CF49534
-:1018F000481176005555760102004811F274066CC5
-:10190000F000020076F82AA3000076F82AA400006E
-:10191000E8004E00FB80153EF495E80480F82AA507
-:1019200076002AA8F980148776002AADFB8013621E
-:10193000F495E80210F82AA5F9801463FB80166676
-:10194000F495E81CFB801687F495E81CE8014E002E
-:10195000FB8017D6F495E80080F82AA676002AB70F
-:10196000F98016AA10F82AA6F980175C10F82AA6A2
-:10197000F980176FEE028A11FC00F4954A084A09B3
-:101980004A0A4A074A1D68F800077D3F69F80007C0
-:10199000400068F8001DFFFC10F82AA7F8440E4B21
-:1019A00076F82AA30001F0730E4E76F82AA40001FF
-:1019B0008A1D8A078A0A8A098A08F4EB4A114A169C
-:1019C0004A17EEFE880E71080016710600171107FF
-:1019D000F066000DF00025A0881176010006810058
-:1019E000F27406CEF00000017601000670000016C9
-:1019F0004811F27406CEF000000770810017EE0265
-:101A00008A178A168A11FC004A11880E7102001288
-:101A10001103F066000DF00024008811F495708128
-:101A200000126EE2FFFE0E8DF495E800E80180E101
-:101A3000000276E1000300FF76E10004000076E199
-:101A4000000B000076E1000C000081E100018A112A
-:101A5000FC004A11EEFC880EF495F166000DF300CF
-:101A600024008911F495F49576E1000C000076E1EC
-:101A7000000B000076E10002000176000000760114
-:101A80000000800276030000F2740CB9F495E800BF
-:101A9000EE048A11FC004A118819F4957319000E9E
-:101AA000F166000DF2002400771525A077140000E0
-:101AB000771A001FF0720F14F6B849190985F84C0F
-:101AC0000F13F100000589114915F3000001891376
-:101AD0004915F3000007891211931D91199289107D
-:101AE000F495F4956C800F1311931D911992891040
-:101AF000F495F4956C800F1311931D911992891030
-:101B0000F495F4956C800F1311931D91199289101F
-:101B1000F495F4956C800F1311931D91199289100F
-:101B2000F495F4956C800F1311931D9119928911FE
-:101B3000F495F4956C810F136D946DED000D4814C0
-:101B40008A11FC004A114A164A17EEF88817100D40
-:101B50008004100C8005710E00167317000EF066DD
-:101B6000000DF0002400881110F82763F8450F32AB
-:101B7000F2740E9FF495481710F82760F8440F3D53
-:101B800060E100020001F8200F6DF07311331004C2
-:101B900080001005F074069F1104F3000001810419
-:101BA0006D8E7710000171E100020012F4AAF83086
-:101BB0000F6277100002F4AAF8300F6D45E1000BB8
-:101BC000881043E1000C83F80012F495F495F4AA10
-:101BD000F8300F6DF0730F96F50081044916F5206B
-:101BE000891676E1000C000076E10004000048163A
-:101BF000F8451133F7B871E10002001210F8001235
-:101C0000F0100003F8460F8C10F80012F0100003DB
-:101C1000F845101677100001F4AAF8300F9C7710E1
-:101C20000002F4AAF8300FA8F0730F9677100004A2
-:101C3000F4AAF83010B777100005F4AAF83010BCF9
-:101C4000F2740E9FF4954817F073113176E1000C91
-:101C5000000076E1000B000076E10004000076E170
-:101C60000002000211E1000CE803F6208912F4954D
-:101C700077100003F5AAF8300FB66BF8276F000154
-:101C80008810F495F495F5AEF8200FBD481680063F
-:101C90008813F49577100003F6ABF8200FC86BF8A3
-:101CA000276F00011206F845100010E100048000C3
-:101CB0001005800110048002100680034811F274A0
-:101CC000071EF0000005100600E1000480E100049A
-:101CD000100600E1000C80E1000C881211061004CF
-:101CE000F60080044816F62088168913F4957710BC
-:101CF0000003F6ABF8200FF56BF8276F00017710A3
-:101D0000000C71E100040013F6ABF82010006BF832
-:101D1000276F00016CE2FFFD1131F6B86FE100059D
-:101D20000C486FE100060C18F0300FFFF0000003C4
-:101D300080E1000B76E1000200034816F8451133FC
-:101D400071E1000C001210E1000B4912F62088131B
-:101D5000E80CF6208810F495F495F5ABF8201027E0
-:101D6000481380068810F495F495F5AEF8201030ED
-:101D7000700600161206F845105F10E1000480009E
-:101D80001005800110048002100680034811F274CF
-:101D9000071EF0000005100600E1000480E10004C9
-:101DA000100600E1000C80E1000C881211061004FE
-:101DB000F60080044816F6208816F4957710000C7B
-:101DC00071E100040013F6ABF820105F6BF8276F89
-:101DD00000017710000CF6AAF820106BF2740E9F29
-:101DE000F495481771E1000C00127710000CF4AA6A
-:101DF000F830107C7710000C71E1000B0013F6AB8B
-:101E0000F83010B4E730F7AAF83010B4F2740EC10D
-:101E1000F49548178812F495F4956C82108D76E14C
-:101E20000004000076E100020005F07310B476E1D2
-:101E3000000200047710000C71E1000B0012F5AAFB
-:101E4000F820109AF073109C7712000C76000000B6
-:101E50007001001270020017760300014811F2743D
-:101E60000CB9F000000576E1000400007710000CCA
-:101E700071E1000B0012F6AAF820111C4816F84573
-:101E8000113360E100020005F82010DF10E1000BC3
-:101E900008E1000C11E10004F84D10C76BF8276F42
-:101EA00000018810F495F495F5AEF82010CF48168F
-:101EB000F4954808F84511166FE1000C0D0081E11A
-:101EC000000C1104F50081044916F5208916F07301
-:101ED000110E10E1000B71E1000C00128810F49556
-:101EE000F495F6AAF83011164912F6208810F495E8
-:101EF000F495F5AEF82010F3481680064808F8452A
-:101F000011161004700200178000760300001006FE
-:101F100080011005F0740CB9100600E1000C80E19E
-:101F2000000C11061004F60080044816F6208816EE
-:101F300010E1000C08E1000BF845111CF0731131A1
-:101F4000F2740E9FF4954817F073113376E1000C8C
-:101F5000000076E1000B000076E1000200011004B1
-:101F600080001005F074069F8812F495771000FF2A
-:101F7000F4AAF83011336C860F70EE088A178A16AF
-:101F80008A11FC004A11EEFCF495710600128811CA
-:101F90007312000EF166000DF30024008914138102
-:101FA000F77AF330000181F8276013E10001F77C34
-:101FB000F330000381F82761E90F19E1000181F88E
-:101FC000276271E400030013F6B84913F30000011F
-:101FD000F330000F490B09F82762F84D117577109F
-:101FE00000FFF4ABF830117557F8276CF3000001CF
-:101FF0004FF8276C76F827630001F073117876F8B4
-:102000002763000070E40003276276F8276400006D
-:1020100011F8276161F8000B0002F820118DE90129
-:102020006FE100020F1881F8276411F8276161F849
-:10203000000B0001F82011A910F82764F10000043A
-:102040008913E9B8F52081F8276560840002F8203B
-:1020500011A9700000117001001370022765F2745D
-:102060000F18F4954812EE048A11FC004A114A1622
-:102070004A17EEFCE8004EF82766E8004EF827689D
-:10208000E8004EF8276CE8004EF8276A77122740E0
-:1020900077112400771A001FF07211DB7092001183
-:1020A00076E10001FFFF7681000076E1000200008A
-:1020B00076E1000300FF76E1000C000076E1000B02
-:1020C000000076E1000400006DE9000DF02025A07D
-:1020D000F10000078911F100000181028816F495D2
-:1020E00077170020768600FF760000007601000654
-:1020F0001002F074066C7600000076010006F2749F
-:10210000066CF49548111002F000000D80026DE994
-:10211000000D6DEE000D6CEFFFFF11E8F0740C9DEB
-:10212000EE048A178A168A11FC004A114A164A17C9
-:10213000EEFA8811100A4911F84D129F4808F84527
-:10214000129F80041281F5788912F495F4956CE25F
-:10215000FFB9128A61F800080080F830128A13E192
-:102160000001F0E8F778F1A0F2301FFF8817F4952E
-:10217000771224007716000077130020F6B848176E
-:1021800008E20001F84512426DEA000D6D966CEB15
-:10219000FFFF1234F073129056F8276AF000000126
-:1021A0004EF8276A60820001F83012547000001661
-:1021B000F2741138F4954811F07312907000001603
-:1021C000F2741138F495481172102A9EF495F4AF08
-:1021D000F830126E76000000760100BC7002001626
-:1021E00076030000F2740CB9F4954811F073129064
-:1021F00010F8276EF844129076000000760100BCBB
-:102200007002001676030000F2740CB9F4954811C0
-:10221000F0740C5EF0E0F0101388F842129076F83B
-:10222000276E0001F073129056F82766F000000147
-:102230004EF827666DE9005E56F82768F000000149
-:102240004EF82768710400126EEAFFFF121870043E
-:102250000012EE068A178A168A11FC004A11EEFE59
-:10226000880EF495F066000DF00025A08811F49515
-:10227000F495768100FF7600000076010006F27486
-:10228000066CF0000001760000007601000648119F
-:10229000F274066CF0000007EE028A11FC004A118D
-:1022A000880EF495F066000DF00024008811F49576
-:1022B000F49576E10001FFFF7681000076E10002EF
-:1022C000000076E1000300FF8A11FC004A11F4953A
-:1022D00013038811FA4D12EC71020012F310000181
-:1022E000891AF495F07212EB709100128A11FC00B9
-:1022F000F4954A0B4A0C4A0DF7B8EEFE10F80008A8
-:102300001106F1C08300F4851106F7858106F6B841
-:10231000EC0F1E0661008000F8201305F484EE0225
-:102320008A0D8A0C8A0BFC00F4954A0B4A0C4A0D64
-:10233000EEFEF7B8800010F80008F4851106F78566
-:102340008106F6B8EC0F1E06F0F061008000F82060
-:102350001320F484EE028A0D8A0C8A0BFC004A11C9
-:102360007711007B76812EEC7711007BEEFF718177
-:102370000011EE0176E10001000076E100040000AA
-:1023800076E10006000076E10062000076E100766A
-:10239000000076E10092000076E10094000076E112
-:1023A00000B0000076E100B3000076E100BE00005E
-:1023B00076E100BF000076E100C1000076E100C3D5
-:1023C000000076E100C5000076E100C700007681DC
-:1023D00000008A11F495F4E44A114A164A17EEFFF8
-:1023E000F49571060016FB8016A28817F495F7B8CD
-:1023F00010F80017F0100002FA4613887711000059
-:1024000010F80017F0100002F84513F910F8001743
-:10241000F845143910F80017F0100001F845141FA2
-:10242000F073145210F80017F0100003F84513D39E
-:1024300010F80017F0100006F84414527712007BD1
-:102440007182001461E400070040F830145249140E
-:102450004817F6008812F495771300557711005746
-:102460006DEA003BE50110E600068081481400F8A3
-:1024700000178812F4957711005510E20040808112
-:102480007711005710E6000780817711005510E2A0
-:102490000045808110E60008771100578081771190
-:1024A000005510E2004A80817711005710E60009BC
-:1024B0008081F2731452771103C07712007B10826F
-:1024C000F00000078813F495F495961BF830145229
-:1024D00010E300357712005580827712005710E61E
-:1024E000000480827712005510E300378082771253
-:1024F000005710E6000580824811F0400010F2738A
-:102500001450F04000207712007B1082F00000078A
-:102510008812F495F495960DF830145210E20034B8
-:102520007713005580837713005710E600028083ED
-:1025300010E200367712005580827712005710E6BD
-:10254000000380824811F0400004F2731450F04000
-:1025500000087712007B1082F00000078812F495C3
-:10256000F495960EF830145210E2003377120055AD
-:1025700080827712005710E6000180824811F273C2
-:102580001450F04000027712007B1082F000000728
-:102590008812F495F495960FF830145210E2003238
-:1025A000771200557713005780824811E762F04098
-:1025B0000001E5018811F4957712007B48117182C2
-:1025C00000121AE2000780E20007F980169AEE0175
-:1025D0008A1748118A168A11F4E44A118811770E75
-:1025E000000577120055E804F6B828E10002EEFF76
-:1025F000808277120057F0208000EE011A82771255
-:1026000000578082E80132E10002F5827711005420
-:10261000F693188177110054F2A080818A11F49505
-:10262000F4E44A114A16F49571040011FB8016A2D5
-:102630008816F4957712005510E600038082771211
-:10264000005610E100027713005680827712005680
-:1026500010E10003808210E10004771200568082AE
-:102660007712005610E100018082E712E501F9803F
-:10267000169A8A168A11F4E44A114A164A17EEF994
-:102680007711007B76000016760100177602001A9B
-:102690007603001B7604001C7605001D718100176F
-:1026A00071E7000600111081F84414DFF980165319
-:1026B000F6B8FB801585F020FFFFF6B8FB80160802
-:1026C000F020FFFF7711007B7181001776E700068D
-:1026D00000014817771600007710000477150003F3
-:1026E0007714000277130001F000003976E7000844
-:1026F000001F76E700070000880E771A00054817CC
-:10270000F0000009881248188819E800F072152CAA
-:10271000731900117682000011917311001970E293
-:102720000003001670E20004001370E200050014BC
-:1027300081E2000170E20006001570E2000700105F
-:1027400080E20002730E0011F100001E6DEE000524
-:102750006DEB00056DEC00056DED00056DE8000505
-:10276000F000000181916DEA00087311000EEE0780
-:1027700076E70041002476E70046002576E7004B27
-:10278000002676E7005000278A178A168A11F4E49B
-:102790004A114A16EEFE881156064E00F98016A21E
-:1027A000F7B810F80011F010FFFFFA451560771622
-:1027B000FFFF7712007B49111082F603F000000939
-:1027C0008811F495F4951081F8441571F273157120
-:1027D000F495E7167711007B1081F000000988114D
-:1027E000F495771200061081F845155C6EEAFFFF3C
-:1027F00015696DE9000876860001E9015600F1804F
-:1028000010F8000BF845157EFB801585F4954816E9
-:10281000F980169AEE0248168A168A11F4E44A11D3
-:10282000EEFFFB8016A28811F4957710FFFFF4A944
-:10283000F83015C410E1000377120055808277123A
-:1028400000567682000077120056768200007712DA
-:1028500000567682000077120056768200007712CA
-:1028600000567682000010E10002F000000832F805
-:10287000000877120054E801F482F493188277126A
-:102880000054F0400000808210E10001F9801676CB
-:1028900010E10001F9801666F07316037711007BD2
-:1028A0007181001171E1000700127682000010E1D1
-:1028B0000009F98015857711007B7181001110E105
-:1028C0000009FB801585F00000087711007B7181FD
-:1028D000001110E10009FB801585F0000010771150
-:1028E000007B7181001110E10009FB801585F0006B
-:1028F00000187711007B7181001110E10009FB8045
-:102900001585F00000207711007B7181001110E126
-:102910000009FB801585F0000028F980169AEE0169
-:102920008A11F4E44A11EEFFFB8016A28811F49597
-:102930007710FFFFF4A9F830164177110055768122
-:10294000001E7711005676810000771100567681BF
-:1029500000007711005676810000771100567681CD
-:1029600000007711005676810000771100567681BD
-:1029700000007711005676810000771100567681AD
-:102980000000771100567681000077110056F2732F
-:10299000164E768100007711007B7181001171E184
-:1029A000000700127682000010E10039F980160855
-:1029B000F980169AEE018A11F4E44A117711007B2E
-:1029C0001081F00000048811F495F4951081FA4408
-:1029D0001663F495EEFF76810001EE018A11F4E4AE
-:1029E000F01000104A1132F80008EEFF77110001D4
-:1029F000E801EE01F4821A8180818A11F495F4E4F1
-:102A0000F01000104A1132F80008EEFFE8017711CB
-:102A10000000F482EE01F493188180818A11F4950C
-:102A2000F4E44A11F01000107711000032F80008A9
-:102A3000EEFF1181E801EE0177110000F482F2A0AF
-:102A400080818A11F495F4E4F273169EF6BBF49536
-:102A5000F495F495F495F4E4F27316A6F7BBF495A7
-:102A6000F495F495F495F4E44A114A16F49571043A
-:102A70000016FB8016A28811F49571E10005001282
-:102A80007682000E10E6000E71E1000600128082D0
-:102A900071E1000500127682000D71E1000600125E
-:102AA00010E6000D808271E1000500127682000CB4
-:102AB00010E6000C71E100060012808271E1000551
-:102AC00000127682000B10E6000B71E10006001286
-:102AD000808271E1000500127682000A71E1000631
-:102AE000001210E6000A808271E100050012768271
-:102AF000000910E6000971E100060012808271E110
-:102B0000000500127682000871E10006001210E64E
-:102B10000008808271E1000500127682000710E64D
-:102B2000000771E100060012808271E100050012C9
-:102B30007682000671E10006001210E6000680822F
-:102B400071E1000500127682000571E100060012B5
-:102B500010E60005808271E1000500127682000413
-:102B600071E10006001210E60004808271E10005A8
-:102B700000127682000371E10006001210E60003E5
-:102B8000808271E1000500127682000210E60002E8
-:102B900071E100060012808271E100050012768268
-:102BA000000110E6000171E100060012808271E16F
-:102BB000000500127682000071E100060013E76252
-:102BC000E501F980169A8A168A11F4E44A118811EF
-:102BD000F495F49571E100050012EEFF7682000095
-:102BE000EE0171E100060011698100018A11F4957E
-:102BF000F4E44A118811F495F49571E1000500128E
-:102C0000EEFF76820001EE0171E10006001169819C
-:102C100000018A11F495F4E44A117711007B1081C8
-:102C2000F00000948811F495F4951081FA44179CF3
-:102C3000F495EEFFF98016537711007B1081F000B8
-:102C400000948811F495F49576810001EE0176E107
-:102C50000001000076E10002002176E1000300207F
-:102C600076E10004002376E10005002276E100060B
-:102C7000003876E10007003976E10008001576E1BA
-:102C80000009001476E1000A000076E1000B004123
-:102C900076E1000C004076E1000D004376E1000E85
-:102CA000004276E1000F004876E10010004976E12D
-:102CB0000011001B76E10012001A8A11F495F4E469
-:102CC0004A11EEFD881156064E00F98016A27712C1
-:102CD000007B770E0009108228F80011F0000095A3
-:102CE0008811F495F4951081F84517F0F27317FDEB
-:102CF0007711FFFF76810001E9015600F18010F89D
-:102D0000000BF84517FDFB801810F4954811F98069
-:102D1000169AEE0348118A11F495F4E44A118811C9
-:102D2000F495EEFF71E100010011EE0110818A11AE
-:102D3000F495F4E44A11EEFFFB8016A28811F49595
-:102D40007710FFFFF4A9F83018C371E100050012F5
-:102D50007682000071E1000600127682000071E1C7
-:102D6000000500127682000171E1000600127682F1
-:102D7000000071E1000500127682000271E1000698
-:102D800000127682000071E10005001276820003D5
-:102D900071E1000600127682000071E10005001268
-:102DA0007682000471E1000600127682000071E173
-:102DB000000500127682000571E10006001276829D
-:102DC000000071E1000500127682000671E1000644
-:102DD00000127682000171E1000500127682000780
-:102DE00071E1000600127682200071E100050012F8
-:102DF0007682000871E1000600127682000071E11F
-:102E0000000500127682000971E100060012768248
-:102E1000000071E1000500127682000A71E10006EF
-:102E200000127682000071E1000500127682000B2C
-:102E300071E1000600127682000071E100050012C7
-:102E40007682000C71E1000600127682000071E1CA
-:102E5000000500127682000D71E1000600127682F4
-:102E6000000071E1000500127682000E71E100069B
-:102E700000127682000010E10007F980167610E15A
-:102E80000008F980167610E10007F980166610E157
-:102E90000008F9801666F07318D17711007B108155
-:102EA000FB801810F00000957711007B1081FB80EB
-:102EB0001810F000009EF980169AEE018A11F4E4D1
-:102EC0004A118811EEFFF495100471E1000300111E
-:102ED000EE0180818A11F495F4E44A114A16F495C2
-:102EE00071040016FB8016A28811F49571E10002AE
-:102EF00000127682001010E6000171E1000300125A
-:102F0000808271E10004001210E600028082E76214
-:102F100071E100020013E501F980169A8A168A1100
-:102F2000F4E44A118811EEFFEE0110E100018A116C
-:102F3000F495F4E44A117711007B1081F00000B39E
-:102F40008811F495F4951081FA44192AF495EEFF4E
-:102F5000F98016537711007B1081F00000B38811BF
-:102F6000F495F49576810001EE0176E10001000010
-:102F700076E10002001376E10003002676E100040A
-:102F8000002576E10005002476E10006000076E1E8
-:102F90000007001776E10008003276E100090031F1
-:102FA00076E1000A00308A11F495F4E44A114A16D9
-:102FB0004A17EEFFF49571060017FB8016A28811E0
-:102FC000F495F7B810F80011F010FFFFFA451973E7
-:102FD0007716FFFF7712007B770E0005108228F826
-:102FE0000011F00000B48811F495F4951081F844B4
-:102FF0001984F2731984F495E7167711007B108118
-:10300000F00000B48811F495771200021081F845A1
-:10301000196F6EEAFFFF197C6DE9000561F8001772
-:103020000001FA20198F76860001FB801997F4952C
-:103030004816F980169AEE018A1748168A168A11E0
-:10304000F4E44A11EEFFFB8016A28811F495771084
-:10305000FFFFF4A9F83019CC71E100020012698277
-:10306000001071E1000200126882F7FF71E10002B6
-:1030700000126882FBFF71E1000200126882FFF01B
-:1030800071E1000300127682FFFF71E1000400127B
-:103090007682FFFF71E1000200126982002071E177
-:1030A00000020011F27319DA6881FFEF7711007BDB
-:1030B0001081FB801997F00000B47711007B10811C
-:1030C000FB801997F00000B9F980169AEE018A1179
-:1030D000F4E400A4000019DF00012AE6000000016A
-:1030E0002AE7000000032A120C01C34F0000000170
-:1030F0002A15000000022A160000000000192A5DAF
-:103100000043006F0070007900720069006700687A
-:10311000007400200054006500630068006E006FBA
-:10312000005400720065006E0064002000410047FA
-:10313000000000042A760030002E00300000000C51
-:103140002A7A004600650062002000320037002025
-:103150000032003000300031000000092A860031C2
-:103160000034003A00330035003A003300330000E9
-:10317000000F2A8F00000000000000010000000185
-:10318000000000000000000000000000000000003F
-:10319000000000012A9E000000012A9F000000019B
-:1031A0002AA0000000012AA1000000012AA20000BC
-:1031B0000001297E000000022980000000000001BB
-:1031C0002982FFFF00012AA7000000052AA87141FB
-:1031D0002000200000230400000A2AAD00000000A7
-:1031E00000000000000000000000000000000000DF
-:1031F000000F2AB7000000000000004000A082403D
-:103200000008307F00800180000000000000000006
-:1032100000000001276E00000001276F0000000081
-:10322000000900001A8304E804CF04C504BA04B0FE
-:1032300004AC049C048C0481007800000100F2734B
-:1032400007EFF495F495F27307EFF495F495F273A4
-:1032500007EFF495F495F27307EFF495F495F27394
-:1032600007EFF495F495F27307EFF495F495F27384
-:1032700007EFF495F495F27307EFF495F495F27374
-:1032800007EFF495F495F27307EFF495F495F27364
-:1032900007EFF495F495F27307EFF495F495F27354
-:1032A00007EFF495F495F27307EFF495F495F27344
-:1032B00007EFF495F495F27307EFF495F495F27334
-:1032C00007AAF495F495F27307EFF495F495F27369
-:1032D00007EFF495F495F2730223F495F495F273E5
-:1032E00007EFF495F495F27307EFF495F495F27304
-:1032F00007EFF495F495F27307EFF495F495F273F4
-:1033000007EFF495F495F27307EFF495F495F273E3
-:1033100005E5F495F495F27302B5F495F495F2731E
-:103320000E33F495F495F27307EFF495F4950000DD
-:00000001FF
diff --git a/firmware/vicam/firmware.H16 b/firmware/vicam/firmware.H16
deleted file mode 100644
index cac0cba68cc7..000000000000
--- a/firmware/vicam/firmware.H16
+++ /dev/null
@@ -1,7 +0,0 @@
-:0026000000B6C31F000264E767FDFF0EC0E709DE008E00C0094003C01744034BAFC00700004BAF97CF00001D
-:000A000000B6C30300036418000000FB
-:0008000000B6C301000664000014
-:0696000000B6C38F060264E707000008C0E70700003EC0E7075401AA00E707C805B600E7074201D200E7077C001600E70756001800E707060092C0E70700001EC0E707FFFF22C0E707040024C0E707EC2728C0E70716018E00E78701000EC097CFD70900C0E777010092C009C1E709FE052401E70904062601E707070092C0E70500C0C0DF97CF170057001702D70900C0E777010092C00AC1E757FFFFFA050DC0E7570000FA050FC09FAFC600E70500C0C805C105C005C0DF97CF27DAFA05EF0701000B0673CF9FAF78019FAF1A036ECFE709FC052401E70902062601E707070092C0E709FC05FE05E70902060406E7090006FC05E709FE05000627DAFA05E7570100FA0502CA04C097CF9FAF660597CFE70740000206C809FC059FAFDA0297CFCF170200EF57810009069FA0B601EF57800009069FA04002EF5701000B069FA04603E70701000AC046AF47AF9FAF4002E7072E000AC0EF878000090697CF000E0100C05751009FC09E02C057500020C0C057550012C0C05756009FC072029FCFD602C10B080601D06F900806C0070800C10B08069FAF280597CF2F0E02000806C0070800C10B08069FAF28059FCFD6022F0E02000906EF87800009069FCFD602EF677FFF0906E767FFFD22C0E767EFFF24C0E787100028C09FAFB805E787E02124C09FAFA805E787080024C0E767DFFF24C0C8070A00C0070000C10701009FAF28059FAFB805C0079E009FAF4405E767FFFE24C0C00920C0E787000124C0C07700020FC1E767F7FF24C0E767F7FF24C0E787080024C008DA5EC1EF078000090697CFEF0701000A0697CFEF0700000B06EF0700000A06EF677FFF0906EF0700000D06E767EFFF28C0E76717D824C0E70700001EC0E707FFFF22C097CFC8070E069FAFDA02E7070000F205E7071000F605E7070E06F405E707D602F805C807F205C107008050AF97CF2F0C020007062F0C04000606E7070000F205E7071000F605E707E205F405E707CE02F805C807F205C107008051AF97CF9FAF66049FAF1A0359AF97CFC0070E00C10B0C0641D19FAF2805C0073C009FAF44056800C0073B009FAF44056F000C066800E0070401E80B0A06E8070000E0070002E007EC01E007FCFF97CFE707FFFFFA05EF0700000B06E7070E062401E7070E06FE05E70740002601E70740000406E707070092C097CFEF0702000B069FAF7801EF77800007069FC01404EF770100070637C0EF7701000D060FC1EF0701000D06C0070200C10730009FAF2805C0070100C10702009FAF2805C807FF4F9FAFA805C00738009FAF4405C177030002C108DA75C1C17701000AC1C0070100C10702009FAF2805EF07010006062CCFC0070100C10704009FAF2805EF070000060622CFEF0700000D06EF57010006061BC0C0070100C10701009FAF2805C0070200C10730009FAF2805C807FF4F9FAFA805C00738009FAF4405C1670300C157030002C008DA73C1C0070200C1071200EF570000060602C0C10723009FAF2805C0071400C10BEA059FAF2805C0073E009FAF0A05E709E405FA0527D8FA05E7070E06FC05E7074E060006E707400002069FAF66059FAFC60097CFC10BE20541D001D2C11723009FAFDC04C0070400C10BE3059FAF2805C0070600C109E6059FAF2805C0070700C109E605C1D19FAF2805C0070B00C109E8059FAF2805C0070C00C109E805C1D19FAF2805C0070D00C10709009FAF2805C0070300C10732009FAF2805C0070F00C10700009FAF280597CFE767FFD924C0C8070A004000C0670002278024C0E787000424C0E767FFF924C001D208DA72C1E787002024C097CF27001EC0E787FF0022C0E7677FFF24C0E787800024C0E787800024C097CF9FAF0A0567001EC0E767BFFF24C0E787400024C0E787400024C097CF9FAF0A05E76700FF22C0E767FFFE24C0E767FFFE24C0C10920C0E787000124C097CFC0074000C809FC05E76700FF22C0E767FFFE24C0E767BFFF24C0E767BFFF24C000DAE80920C0E787400024C0E787400024C000DAE80920C06DC1E787000124C097CFE707320012C0E777008012C07CC097CFE707204E12C0E777008012C07CC097CF0902190001010080960904000001000000000705810240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1
-:0136000000B6C32F0103640E0014001A00200026004A0064006A0092009A00A000B200B800BE00C200C800CE00DC00DA00E200E000E800E600EE00EC00F200F80002010A010E0112011E01220128012C0132013601440150015E01720176017A01800188018C0194019C01A001A401AA01B001B401BA01D001DA01F601FA01020234023C0244024A0250025602740278027E0284028A02880290028E029402A202A802AE02B402BA02B802C002BE02C402D002D402E002E602EE02F802FC0206031E032403280330032E033C034A034E03540358035E0366036E037A0386038E039603B203B803C603CC03D403DA03E803F403FC03040420042A04320436043E044404420448044E044C04540452045A045E046204680474047C04800488048C0494049A04A204A604AE04B404C004CC04D8042A0546056C0500005E
-:0008000000B6C301000664000014
-:0000000001FF
diff --git a/firmware/whiteheat.HEX b/firmware/whiteheat.HEX
deleted file mode 100644
index 8dae60295d55..000000000000
--- a/firmware/whiteheat.HEX
+++ /dev/null
@@ -1,1097 +0,0 @@
-:030000000297E381
-:03000300021312D3
-:03000B00020BB530
-:0300330002081CA4
-:03004300020A00AE
-:03005B0002833BE2
-:10037000907FE9E070030204731470030204E72421
-:10038000FE700302054F24FB700302046414700323
-:1003900002045214700302043A1470030204492444
-:1003A00005600302059E907FEBE024FE601614605A
-:1003B000362402707B7412907FD4F07400907FD545
-:1003C000F00205A5907FEAE0FF120A99EA49600D64
-:1003D000EA907FD4F0E9907FD5F00205A5907FB434
-:1003E000E04401F00205A5907FEAE0FF120A58EA16
-:1003F00049603312A23BF54E907FEEE0FFE54ED30D
-:100400009F4003E0F54EE54ED394404003754E40C7
-:10041000AE02AF017C7F7D00AB4E129137907FB56D
-:10042000E54EF00205A5907FB4E04401F00205A579
-:10043000907FB4E04401F00205A5907F00E521F033
-:10044000907FB57401F00205A5907FEAE0F52102E6
-:1004500005A5907FEAE0F535D202438810D2EBD2B1
-:10046000A80205A5907F00E535F0907FB57401F0F6
-:100470000205A5907FE8E0247F6024146031240207
-:10048000705BA200E433FF25E0FFA205E4334F9048
-:100490007F00F0E4A3F0907FB57402F00205A5E4BC
-:1004A000907F00F0A3F0907FB57402F00205A59054
-:1004B0007FECE0F45480FFC4540FFFE054072F2575
-:1004C000E024B4F582E4347FF583E05401907F00AA
-:1004D000F0E4A3F0907FB57402F00205A5907FB41C
-:1004E000E04401F00205A5907FE8E024FE601D24B1
-:1004F0000260030205A5907FEAE0B40105C2000294
-:1005000005A5907FB4E04401F00205A5907FEAE0E4
-:100510007034907FECE0FF5407FEF54EEF30E703B8
-:10052000434E10907FD7E54EF0E54E4420F0EFF4B7
-:100530005480FDC4540F2E25E024B4F582E4347FAA
-:10054000F583E4F0805F907FB4E04401F080569042
-:100550007FE8E024FE60182402704A907FEAE0B44D
-:100560000104D200803F907FB4E04401F0803690D7
-:100570007FEAE07020907FECE0F45480FFC4540FD9
-:10058000FFE054072F25E024B4F582E4347FF5839F
-:100590007401F08010907FB4E04401F08007907FF8
-:0C05A000B4E04401F0907FB4E04402F0AD
-:0105AC00222C
-:1005AD00754AFF7549FF75480F754700D203C2069E
-:1005BD00C202C200C205C2019003007419F0E4909A
-:1005CD0001BCF0C2049001C0F0A3F0C2AFC2A812EA
-:1005DD000C22E49002AFF09001BDF0900100F0A369
-:1005ED00F0A3F0A3F0A3F0A37410F0A37401F0A393
-:1005FD007408F07E017F001219C1754C12754D0AF9
-:10060D0090010BE0FF054DE54DAC4C7002054C140F
-:10061D00F5828C83EFF090010CE04480FF054DE5F1
-:10062D004DAC4C7002054C14F5828C83EFF09001AB
-:10063D000DE0FF054DE54DAC4C7002054C14F582F7
-:10064D008C83EFF090010EE0FF054DE54DAC4C7045
-:10065D0002054C14F5828C83EFF090120AE493FF9F
-:10066D0074019390011CCFF0A3EFF090011CE0FFFB
-:10067D00A3E0FEEF6EFF90011CF0A3E06FFFF09082
-:10068D00011CE06FF0E0FEA3E0FFE4FCFD755210ED
-:10069D007553027554127555AC129426754C12751E
-:1006AD004DB290010DE0FF054DE54DAC4C700205CE
-:1006BD004C14F5828C83EFF090010EE0FF054DE5B3
-:1006CD004DAC4C7002054C14F5828C83EFF0907F8D
-:1006DD0092E0FFC4540F2441FF054DE54DAC4C7025
-:1006ED0002054C14F5828C83EFF0054DE54DAE4CB3
-:1006FD007002054C14F5828E83E4F07582107583BB
-:10070D0001E0FCA3E0FDA3E0FEA3E0FF90011812C1
-:10071D00A3EE7E017F181286BE900118E0FCA3E0C7
-:10072D00FDA3E0FEA3E0FF75520A75530675541242
-:10073D007555B8129426D2E843D820907FAB74FF3C
-:10074D00F05391EF907FAFE04401F0907FAEE04425
-:10075D001FF0D2AF20012E20012BA2039207120908
-:10076D00C575465075456D7544337543002001E4DC
-:10077D007FFF7EFF7DFF7CFF784312A3D7EC4D4EAC
-:10078D004F60D180E8300105120370C20130060AB6
-:10079D001209FB5003120AE8C20612965E9001BDC3
-:1007AD00E0600C129201E49001BDF0907FD3F090C7
-:1007BD0002AFE0B40F031299B912A095E4FF7401D2
-:1007CD00A807088002C333D8FCFE9001BCE05E6030
-:1007DD001474282FF8E6D3940A40047E0180027E1B
-:1007ED00008E4B8003754B0174682FF582E4342025
-:1007FD00F583E54BF00FBF04C5E52CD3940A4004F7
-:0E080D007F0180027F0090206CEFF0020792C6
-:01081B0022BA
-:04081C0053D8EF328C
-:10082000E533C39401400E907F93E04430F0907F15
-:1008300095E044C0F07FF47E011209AE907F96E00F
-:1008400054FEF07F0A7E001209AE907F96E04408C5
-:10085000F07F057E001209AE907F96E054FBF07F9A
-:10086000057E001209AEE533C39401500E7F027D70
-:10087000FF1282EA7F057E001209AE907F96E04467
-:1008800002F0E0547FF07F057E001209AE907F9663
-:10089000E04440F07F057E001209AE907F96E05460
-:1008A000BFF07F327E001209AE907F96E04440F0A8
-:0808B0007F327E001209AE2226
-:1008B800907F96E054FDF0E04480F07F0A7E0012BD
-:1008C80009AEE533C39401500E7F02E4FD1282EABB
-:1008D8007F057E001209AE907F96E054BFF07F0539
-:1008E8007E001209AE907F96E04404F07F057E00FA
-:1008F8001209AE907F96E054F7F07F057E0012094A
-:10090800AE907F96E04401F07F057E001209AEE5C7
-:1009180033C39401400E907F93E054CFF0907F95BD
-:08092800E0543FF0120B002225
-:10093000900AF4E4937076907F937430F0907F94F3
-:10094000743CF0907F9574C6F07F0A7E001209AE69
-:10095000E4907F9CF0907F967408F0907F9C74CF19
-:10096000F07F0A7E001209AE902070E0FFC4540FA1
-:10097000F533C394015007907F96E04480F0E490F3
-:100980007F97F0907F9D7402F0E533C39401400B94
-:10099000E4907F98F0907F9E74C0F0907FE2741294
-:0E09A000F01208207582F475830A74FFF022AD
-:1009AE008E5D8F5EE55E155EAE5D7002155D4E600E
-:0709BE00051209EA80EE2298
-:1009C500907FD6E054FBF0E04408F0300704E044A3
-:1009D50002F07FD07E071209AE907FD6E054F7F083
-:0509E500E04404F022D3
-:1009EA007400F58690FDA57C05A3E582458370F920
-:0109FA0022DA
-:0509FB001208B8D32230
-:100A0000020C4E00020C8100020C6600020CC000B9
-:100A1000020CAA00020AED00020AEE00020AEF0030
-:100A2000020CDB00020DCB00020D1700020E2B00A2
-:100A3000020D5300020E8B00020D8F00020EEB0020
-:100A4000020AF000020AF200020AF100020AF300B0
-:080A5000020F4B00020F6100D0
-:020A58008F4FBE
-:100A5A00E4F5507551FF75521275536AAB51AA529B
-:100A6A00A95390000112A254B4031DAF500550EFD0
-:100A7A00B54F012212A23B7E0029FFEE3AA9077563
-:0E0A8A0051FFF552895380D47B007A00790029
-:010A9800223B
-:100A9900E4FE7551FF755212755312AB51AA52A952
-:100AA9005390000112A2546402702DAD060EEDB5EB
-:100AB90007012290000212A2AD85F04FF550624F56
-:100AC900E54F6250E550624F29FDE54F3AA905759A
-:0E0AD90051FFF552895380C37B007A007900EB
-:010AE70022EC
-:050AE800120820D322DA
-:010AED0032D6
-:010AEE0032D5
-:010AEF0032D4
-:010AF00032D3
-:010AF10032D2
-:010AF20032D1
-:010AF30032D0
-:030AF400000407F4
-:090B0000907FD6E04480F080747F
-:100B7D00438701000000000000000000000000227B
-:100B8D00538EF7E58954F14401F589758CB1D2A9DD
-:100B9D0075984075CBFF75CAF375C834E4FF7F05B2
-:070BAD007828E4F608DFFCE4
-:010BB400221E
-:100BB500C0E0C083C082C0D075D000C000C006C0F0
-:010BC5000728
-:100BC600300416758CF8758A307F2FAE071FEE60DD
-:100BD6003C9020007455F080F2758CB17F28EFD3DD
-:100BE600942C5009A807E66001160F80F1900300C7
-:100BF600E0600214F09001C0E07002A3E0600E9085
-:0D0C060001C1E024FFF09001C0E034FFF0D8
-:0F0C1300D007D006D000D0D0D082D083D0E0322E
-:100C2200D200758E10120930E533C394014008904A
-:100C32007F927402F08005E4907F92F0128000129D
-:0C0C42000F7D1294F7121B0C120B8D2278
-:100C4E00C0E0C083C082D2015391EF907FAB74019C
-:080C5E00F0D082D083D0E03217
-:100C6600C0E0C083C082907FC4E4F05391EF907FD0
-:0B0C7600AB7404F0D082D083D0E032D9
-:100C8100C0E0C083C0825391EF907FAB7402F090BB
-:100C91007FD8E0700D907FD9E07007E52C70037567
-:090CA1002C14D082D083D0E03283
-:100CAA00C0E0C083C0825391EF907FAB7410F0D044
-:060CBA0082D083D0E0327D
-:100CC000C0E0C083C082300202D2065391EF907F11
-:0B0CD000AB7408F0D082D083D0E0327B
-:100CDB00C0E0C083C082C0D075D0105391EF907F1D
-:100CEB00A97402F0E53430E013E53230E0079020D0
-:100CFB0004E04401F0902001E04401F0E52C700386
-:0C0D0B00752C14D0D0D082D083D0E03200
-:100D1700C0E0C083C082C0D075D0105391EF907FE0
-:100D2700A97404F0E53430E113E53230E10790208F
-:100D37000CE04401F0902009E04401F0E52C700339
-:0C0D4700752C14D0D0D082D083D0E032C4
-:100D5300C0E0C083C082C0D075D0105391EF907FA4
-:100D6300A97408F0E53430E213E53230E20790204D
-:100D730014E04401F0902011E04401F0E52C7003ED
-:0C0D8300752C14D0D0D082D083D0E03288
-:100D8F00C0E0C083C082C0D075D0105391EF907F68
-:100D9F00A97410F0E53430E313E53230E307902007
-:100DAF001CE04401F0902019E04401F0E52C7003A1
-:0C0DBF00752C14D0D0D082D083D0E0324C
-:100DCB00C0E0C083C082C085C084C086758600C069
-:100DDB00D075D0105391EF907FAA7402F0E53420B8
-:100DEB00E006907FC7F08022E53130E00A907FC7A4
-:100DFB00E09002F8F08013E52230E007902004E049
-:100E0B004402F0902001E04402F0E52C7003752CB5
-:100E1B0014D0D0D086D084D085D082D083D0E0328D
-:100E2B00C0E0C083C082C085C084C086758600C008
-:100E3B00D075D0105391EF907FAA7404F0E5342055
-:100E4B00E106907FC9F08022E53130E10A907FC93D
-:100E5B00E09002F9F08013E52230E10790200CE0DE
-:100E6B004402F0902009E04402F0E52C7003752C4D
-:100E7B0014D0D0D086D084D085D082D083D0E0322D
-:100E8B00C0E0C083C082C085C084C086758600C0A8
-:100E9B00D075D0105391EF907FAA7408F0E53420F1
-:100EAB00E206907FCBF08022E53130E20A907FCBD7
-:100EBB00E09002FAF08013E52230E207902014E074
-:100ECB004402F0902011E04402F0E52C7003752CE5
-:100EDB0014D0D0D086D084D085D082D083D0E032CD
-:100EEB00C0E0C083C082C085C084C086758600C048
-:100EFB00D075D0105391EF907FAA7410F0E5342089
-:100F0B00E306907FCDF08022E53130E30A907FCD70
-:100F1B00E09002FBF08013E52230E30790201CE009
-:100F2B004402F0902019E04402F0E52C7003752C7C
-:100F3B0014D0D0D086D084D085D082D083D0E0326C
-:100F4B00C0E0C083C0825391EF907FA97480F0D032
-:060F5B0082D083D0E032D9
-:100F6100C0E0C083C0825391EF907FAA7480F0905B
-:0C0F710001BD74FFF0D082D083D0E032CC
-:100F7D0090012012A3FA000025809001247408F03E
-:100F8D00A37401F0A3746EF0A3F0A37413F0A37413
-:100F9D0011F0E4A3F0A3F090011EF090011EE0FF0C
-:100FAD0004A3F0EF75F00DA42401F9740335F0A836
-:100FBD0001FC7D017B017A01791F7E007F0D12A25C
-:100FCD00127E017F1F1287A690011EE004F0E0C380
-:100FDD00940440C7E4F52790011EF090011EE0FF38
-:100FED00C39404501A74F82FF582E43402F583E4A7
-:100FFD00F074232FF8E4F690011EE004F080DCE499
-:10100D00F534E5C0602F90011E7401F090011EE0D3
-:10101D00FFD39404501FEF14FF7401A8070880023A
-:10102D00C333D8FC42347E017F1E12844190011ED1
-:10103D00E004F080D7E4F53EF522F531F53290016C
-:10104D001EF090011EE0FF75F008A42406F582E461
-:10105D003420F583E054F0FE74C52FF582E434019D
-:10106D00F583EEF0743A2FF8A60674362FF8E4F6F1
-:10107D00742D2FF8E4F674FC2FF582E43402F58319
-:10108D00E4F090011EE004F0E0B404B6902060E0BE
-:04109D00540FF54EA9
-:1010A1007003021126E490011EF090011EE0FFC3BF
-:1010B100940450E47401A807088002C333D8FC5596
-:1010C1004E605A90011EE0FE75F008A42402F582DC
-:1010D100E43420F583E0FFEE75F008A42405F582E1
-:1010E100E43420F583E0EE75F008A42406F582E4EB
-:1010F1003420F583E0FFAF06EE75F00DA42402F570
-:1011010082E43403F583E0FCA3E0FDA3E0FEA3E069
-:10111100F5668E658D648C637D061283DF90011EFA
-:06112100E004F0808522CD
-:02112700AC0713
-:10112900907FA5E04480F0EC25E04441907FA6F053
-:101139007B3CAF031BEF7016907FA5E04440F09015
-:101149007FA6E0FD7D32AF051DEF60D480F8907F6A
-:10115900A5E0FD30E0DC20E109E04440F07EFF7FBE
-:10116900F922ED30E20C907FA5E04440F07EFF7F4C
-:10117900FA22907FA5E04420F0907FA6E0FD7B1E37
-:10118900AF031BEF7016907FA5E04440F0907FA657
-:10119900E0FD7D32AF051DEF608680F8907FA5E008
-:1011A900FD20E0DC7B3CAF031BEF7019907FA5E0CD
-:1011B9004440F0907FA6E0FD7D32AF051DEF70033E
-:1011C90002112980F5907FA5E0FD30E0D930E209D0
-:1011D900E04440F07EFF7FFA22C2AF907FA5E04451
-:0C11E90040F0907FA6E0FDD2AFFF7E003A
-:0111F50022D7
-:1012000012010001FFFFFF401007018042000102B0
-:10121000030109025800010104803C090400000A8E
-:10122000FFFFFF050705810240000007050102409E
-:10123000000007058202400000070502024000008E
-:101240000705830240000007050302400000070570
-:1012500084024000000705040240000007058702E1
-:1012600040000007050702400000040309042403AE
-:1012700043006F006E006E00650063007400200084
-:101280005400650063006800200049006E006300A0
-:101290002E001803570068006900740065004800BC
-:1012A0004500410054002D0034001A035800580036
-:1012B0002D00580058002D005800580058005800C4
-:1012C000580058002A0343006F006E006600690052
-:1012D0006700750072006100740069006F006E00A5
-:1012E000200053007400720069006E006700220342
-:1012F00049006E00740065007200660061006300C2
-:101300006500200053007400720069006E006700E1
-:021310000000DB
-:10131200C0E0C0F0C083C082C085C084C086C0D097
-:1013220075860075D018902060E0540FF5F07011AA
-:10133200D0D0D086D084D085D082D083D0F0D0E0F7
-:101342003275860010F00B10F11210F21910F32012
-:1013520080D4E528700375281402137CE5297003F4
-:1013620075291402150DE52A7003752A1402169EBA
-:10137200E52B7003752B1402182F902002E0543FC6
-:1013820020E23A20E10B20E40B20E514600902136D
-:1013920043021465021343438204E0F53A02134305
-:1013A200438204E0432D010213435382F843820532
-:1013B200E042365382FBE054FBF002134330E10279
-:1013C20080E8F585E53230E00A5382F8438204E092
-:1013D20054FEF0E58520E3569020507400F09020F2
-:1013E200587401F0907FE2E04440F0907FE305867C
-:1013F200907E800586E585F0A3E584F00586907FE2
-:10140200E5E53FFD030303FEF0F0F0F0F0F0F0F04D
-:10141200DEF6907FE2E054BFF09020587400F09026
-:101422007FB7EDF0902001E054FEF00213437F40BD
-:10143200907E800586902000E584FE2405FD8D8443
-:10144200E08E8430E009E00586F0A30586DFEF0533
-:1014520086C374409F907FB7F00586A3E054FEF0E8
-:10146200021343532DFAE5236008752300D2E7FEE9
-:10147200800A907FC7E0FE70030214FF9020507430
-:1014820000F09020587401F0907FE2E04440F09028
-:101492007FE30586907E400586E585F0A3E584F02E
-:1014A2000586907FE5EE30E7080586E02438F005F2
-:1014B20086EE547FFE5407FBEE547860300303033C
-:1014C20030E30474077B08FDFCE0E0E0E0E0E0E0EC
-:1014D200E0DDF6EBFE6019EC640770118B23907F60
-:1014E200E2E054BFF09020587400F0801BE0DEFD73
-:1014F200907FE2E054BFF09020587400F0902001F9
-:10150200E054FDF0907FC7F002134390200AE054AC
-:101512003F20E23A20E10B20E40B20E514600902AF
-:1015220013430215F6021343438204E0F53B021310
-:1015320043438204E0432E010213435382F8438261
-:1015420005E042375382FBE054FBF002134330E1E3
-:101552000280E8F585E53230E10A5382F8438204DD
-:10156200E054FEF0E58520E3569020507401F0909F
-:1015720020587401F0907FE2E04440F0907FE30550
-:1015820086907E000586E585F0A3E584F0058690C9
-:101592007FE5E540FD030303FEF0F0F0F0F0F0F02C
-:1015A200F0DEF6907FE2E054BFF09020587400F035
-:1015B200907FB9EDF0902009E054FEF00213437FD2
-:1015C20040907E000586902008E584FE2405FD8D6E
-:1015D20084E08E8430E009E00586F0A30586DFEF23
-:1015E2000586C374409F907FB9F00586A3E054FE40
-:1015F200F0021343532EFAE5246008752400D2E763
-:10160200FE800A907FC9E0FE70030216909020507F
-:101612007401F09020587401F0907FE2E04440F0B1
-:10162200907FE30586907DC00586E585F0A3E5847D
-:10163200F00586907FE5EE30E7080586E02438F075
-:101642000586EE547FFE5407FBEE547860300303A8
-:101652000330E30474077B08FDFCE0E0E0E0E0E037
-:10166200E0E0DDF6EBFE6019EC640770118B24906C
-:101672007FE2E054BFF09020587400F0801BE0DE5F
-:0E168200FD907FE2E054BFF09020587400F01D
-:10169000902009E054FDF0907FC9F00213439020A0
-:1016A00012E0543F20E23A20E10B20E40B20E51445
-:1016B0006009021343021787021343438204E0F5D3
-:1016C0003C021343438204E0432F0102134353823D
-:1016D000F8438205E042385382FBE054FBF00213EA
-:1016E0004330E10280E8F585E53230E20A5382F8C2
-:1016F000438204E054FEF0E58520E35690205074C8
-:1017000002F09020587401F0907FE2E04440F090A5
-:101710007FE30586907D800586E585F0A3E584F06E
-:101720000586907FE5E541FD030303FEF0F0F0F050
-:10173000F0F0F0F0DEF6907FE2E054BFF090205839
-:101740007400F0907FBBEDF0902011E054FEF002A9
-:1017500013437F40907D800586902010E584FE2411
-:1017600005FD8D84E08E8430E009E00586F0A30558
-:1017700086DFEF0586C374409F907FBBF00586A38C
-:10178000E054FEF0021343532FFAE5256008752557
-:1017900000D2E7FE800A907FCBE0FE7003021821A2
-:1017A0009020507402F09020587401F0907FE2E095
-:1017B0004440F0907FE30586907D400586E585F006
-:1017C000A3E584F00586907FE5EE30E7080586E026
-:1017D0002438F00586EE547FFE5407FBEE54786003
-:1017E0003003030330E30474077B08FDFCE0E0E012
-:1017F000E0E0E0E0E0DDF6EBFE6019EC640770117C
-:101800008B25907FE2E054BFF09020587400F08068
-:101810001BE0DEFD907FE2E054BFF09020587400A2
-:10182000F0902011E054FDF0907FCBF00213439034
-:10183000201AE0543F20E23A20E10B20E40B20E59F
-:10184000146009021343021918021343438204E08F
-:10185000F53D021343438204E04330010213435336
-:1018600082F8438205E042395382FBE054FBF002E8
-:10187000134330E10280E8F585E53230E30A538214
-:10188000F8438204E054FEF0E58520E356902050B2
-:101890007403F09020587401F0907FE2E04440F02F
-:1018A000907FE30586907D000586E585F0A3E584BD
-:1018B000F00586907FE5E542FD030303FEF0F0F0BE
-:1018C000F0F0F0F0F0DEF6907FE2E054BFF0902010
-:1018D000587400F0907FBDEDF0902019E054FEF0B8
-:1018E0000213437F40907D000586902018E584FE1A
-:1018F0002405FD8D84E08E8430E009E00586F0A3A8
-:101900000586DFEF0586C374409F907FBDF0058696
-:10191000A3E054FEF00213435330FAE52660087545
-:101920002600D2E7FE800A907FCDE0FE7003021908
-:10193000B29020507403F09020587401F0907FE230
-:10194000E04440F0907FE30586907CC00586E58505
-:10195000F0A3E584F00586907FE5EE30E708058684
-:10196000E02438F00586EE547FFE5407FBEE5478F1
-:10197000603003030330E30474077B08FDFCE0E000
-:10198000E0E0E0E0E0E0DDF6EBFE6019EC6407701B
-:10199000118B26907FE2E054BFF09020587400F045
-:1019A000801BE0DEFD907FE2E054BFF09020587491
-:1019B00000F0902019E054FDF0907FCDF002134329
-:0119C00032F4
-:0419C100AD07AC06BC
-:1019C5007906ED2404F582E43CF583E0FAA3E0FB17
-:1019D5004A7003021B09E9B407004003021ADB90B1
-:1019E50019EBF8282873021AB9021A71021A5A0259
-:1019F5001A40021A2F021A1A021A00907FA5E04413
-:101A050080F08D828C83A3E0FF25E044A0907FA623
-:101A1500F019021ADB198D828C83E0C39420400AE9
-:101A2500A3A3E0907FA6F0021ADB8D828C83A3A38B
-:101A3500E0A3E0907FA6F019021ADB907FA5E044B1
-:101A450080F08D828C83A3E0FF25E044A1907FA6E2
-:101A5500F019021ADBEB64014A7008907FA5E04497
-:101A650020F019907FA6E0F55919806AED2404F558
-:101A750082E43CF583E0FEA3E064024E7008907FAB
-:101A8500A5E04420F019907FA6E0FFED2406F5823D
-:101A9500E43CF583E475F00112A29785F082F583A5
-:101AA500EFF0ED2404F582E43CF58374FFF5F012C4
-:101AB500A2818022907FA5E04440F0907FA6E0FFC0
-:101AC500ED2406F582E43CF583E0FAA3E0F5828A8D
-:101AD50083EFF07F0822907FA5E0F55930E0F730DD
-:101AE500E207E04440F07F0622E9D3940250030266
-:101AF50019C7E55930E1030219C7907FA5E04440B5
-:061B0500F07F07227F08BB
-:011B0B0022B7
-:101B0C00E533C39401501C7F057E001209AE7F02A1
-:101B1C007DFF1282EA7F057E001209AE7F037DFFF6
-:041B2C001282EA2215
-:108000007BFF7A12791B90000412A254FD8B5075ED
-:108010005112755224E4907FE1F0907FE0F0F54E2C
-:10802000F54F9002AEF0907FDFF0907FDEF0907F12
-:10803000A974FFF0907FAAF0E4FCEC25E024B4F5ED
-:1080400082E4347FF583E4F00CBC10EEE4907FDD35
-:10805000F0AF051DEF70030281C6AB50AA51A952C3
-:1080600090000112A254640560030281B5900003E0
-:1080700012A2546401600302813C90000212A254D7
-:10808000FF547FFCD394075003028116ECC3941075
-:108090004003028116EF30E742E54FAE4E7802CE44
-:1080A000C313CE13D8F9FF74F02CF582E4347FF5B6
-:1080B00083EFF0907FE0E0FFEC24F8FE7401A80667
-:1080C000088002C333D8FC4F907FE0F09002AEE00E
-:1080D00004F0907FDDE04480F0803EE54FAE4E78C6
-:1080E00002CEC313CE13D8F9FF74E82CF582E43422
-:1080F0007FF583EFF0907FE1E0FFEC24F8FE740160
-:10810000A806088002C333D8FC4F907FE1F09002AC
-:10811000AEE004F080037FFF2290000412A25425F9
-:108120004FF54FE4354EF54E90000512A254FEE493
-:10813000254FF54FEE354EF54E0281B8AB50AA51A2
-:10814000A95290000312A254FF64026005EF640379
-:10815000706090000212A254FF547FFCD394075029
-:108160004EEF30E71E907FDEE0FF7401A804088028
-:1081700002C333D8FCFE4F907FDEF0907FACE04E20
-:10818000F08035907FDFE0FF7401A804088002C30F
-:1081900033D8FCFE4F907FDFF0907FADE04EF0ECE7
-:1081A00025E024C5F582E4347FF583ECF080097F77
-:1081B000FF227FFF227FFF2274072552F552E4350C
-:1081C00051F55102805120030D9002AEE0600790FE
-:0881D0007FAEE04402F07F00E5
-:0181D8002284
-:0481D9008E598F5AD2
-:1081DD00755B03E55A2404F582E43559F583E0FE19
-:1081ED00A3E04E70030282E7E55B604E1460381425
-:1081FD00602014600302828B907FA5E04480F0859F
-:10820D005A82855983A3E0FF25E044A0907FA6F014
-:10821D00806C855A82855983E0C394204009A3A3BD
-:10822D00E0907FA6F08057155B855A82855983A310
-:10823D00A3E0A3E0907FA6F08044E55A2406F582E2
-:10824D00E43559F583E475F00112A29785F082F5B6
-:10825D0083E0907FA6F0907FA5E04440F0E55A249E
-:10826D0004F582E43559F58374FFF5F012A281858A
-:10827D005A82855983A3A3E475F00112A281907FE0
-:10828D00A5E0F55C30E0F730E207E04440F07F0612
-:10829D0022E55C20E10A907FA5E04440F07F0722B3
-:1082AD00E55B70317F017E001209AE907FA5E04441
-:1082BD0080F0855A82855983A3E0FF25E044A09084
-:1082CD007FA6F0907FA5E0F55C30E0F730E1D57545
-:0C82DD005B030281E0155B0281E07F087A
-:0182E9002272
-:0282EA00AE07DD
-:1082EC007C02EC14601514701E907FA5E04480F0A5
-:1082FC00EE25E04440907FA6F0800C907FA6EDF038
-:10830C00907FA5E04440F0907FA5E0FB30E0F8BC06
-:10831C00020A20E107E04440F07F0722EB30E20A3A
-:0E832C00907FA5E04440F07F0622DCB67F087B
-:01833A002220
-:10833B00C0E0C083C082C2A99003007419F0D2A917
-:0F834B0053917F9001C4E4F0D082D083D0E03210
-:10835A00EF75F008A42400F582E43420AB82FAF524
-:10836A0083A3E4F08B828A83A3A3A3E0F56174BF9D
-:10837A00F08B828A83A3A3E04410F08B828A83A3C2
-:10838A00A3A3E4F08B828A83A3F0F9ED601D740144
-:10839A007E00A807088005C333CE33CED8F9FFE4A0
-:1083AA00EF5531600479098002790D8B828A83A3A3
-:1083BA00A3A374BFF08B828A83A3A3E054EFF08B4C
-:1083CA00828A83A3A3A3E561F0AE02AF038F828EF4
-:0483DA0083A3E9F0A0
-:0183DE00227C
-:0483DF008F618D62BB
-:1083E300E4F567743F2FF876087F807E257D007C57
-:1083F30000AB66AA65A964A863D312A3B340267F22
-:10840300007E967D007C00A863D312A3B3500C7545
-:108413006740743F2561F87610800A756780743F62
-:108423002561F87638E56745624401FFE56175F03B
-:0D84330008A42402F582E43420F583EFF064
-:018440002219
-:108441008F828E83E014F557C3940440037FFF228B
-:10845100E55775F008A42400F582E43420AF82F5D5
-:10846100588F59E55725E024C6F582E4347FF5831A
-:10847100E020E10FE55725E024C7F582E4347FF5DC
-:1084810083E4F074232557F8E4F6E5592404F582D2
-:10849100E43558F583E04403F0E55775F00DA42465
-:1084A10002F582E43403F583E0FCA3E0FDA3E0FEE2
-:1084B100A3E0F5668E658D648C637D06AF571283EC
-:1084C100DFAF577D0112835A855982855883A3A353
-:1084D100E020E043E0FFE5592405F582E43558F555
-:1084E10083E0E5592406F582E43558F583E0FFE59C
-:1084F1005775F00DA42402F582E43403F583E0FC02
-:10850100A3E0FDA3E0FEA3E0F5668E658D648C63B8
-:108511007D06AF571283DF74F82557F582E43402E4
-:10852100F583E4F0E55725E0FFC3740C9F75F04037
-:10853100A42440F582E5F0347BAF82FEE55725E0C7
-:1085410024EFF582E43402F583EEF0A3EFF0AF57A8
-:0F8551007401A807088002C333D8FC42347F00AE
-:0185600022F8
-:108561008F828E83E014F557C3940440037FFF226A
-:10857100AF57E4FD12835A74F82557F582E43402AB
-:10858100F583E4F0E55775F008A42400F582E4349E
-:1085910020AF82F5598F5AF583E5822404F582E4F0
-:1085A1003583F583E054FCF0E55775F00DA4240CF8
-:1085B100F582E43403F583E4F0E55775F00DA42466
-:1085C10002F582E43403F583E0FCA3E0FDA3E0FEC1
-:1085D100A3E0F5668E658D648C637D06AF571283CB
-:1085E100DFE55A2405F582E43559F583E030E009E9
-:1085F100855A82855983E0F558AF577401A8070859
-:108601008002C333D8FCF45234E55725E024C6F583
-:1086110082E4347FF583E020E10FE55725E024C7AC
-:0B862100F582E4347FF583E4F07F0075
-:01862C00222B
-:04862D008E578F587D
-:108631008F828E83E014F559C3940440037FFF2297
-:10864100E55975F008A42401F582E43420F583E0AE
-:1086510054037066855882855783A3E030E028E58E
-:108661005975F00DA42402F582E43403F583E0FC8E
-:10867100A3E0FDA3E0FEA3E0F5668E658D648C6347
-:108681007D02AF591283DF855882855783A3E0307D
-:10869100E128E55975F00DA42402F582E43403F5CF
-:1086A10083E0FCA3E0FDA3E0FEA3E0F5668E658D0B
-:0C86B100648C637D04AF591283DF7F00EE
-:0186BD00229A
-:1086BE008F828E83C083C082E0FDA3A3A3E0FCED76
-:1086CE006CD082D083F08F828E83A3A3A3C083C08D
-:1086DE0082E0FD8F828E83E0FCED6CD082D083F041
-:1086EE008F828E83C083C082A3A3A3E0FDEC6DD0E6
-:1086FE0082D083F08F828E83A3C083C082E0FD8FF1
-:10870E00828E83A3A3E0FCED6CD082D083F08F82A7
-:10871E008E83A3A3C083C082E0FD8F828E83A3E0ED
-:10872E00FCED6CD082D083F08F828E83A3C083C089
-:10873E0082E0FD8F828E83A3A3E0FFED6FD082D007
-:03874E0083F02293
-:04875100AD07AC06BE
-:10875500790D8D828C83E014FEC3940440037FFF62
-:10876500228C578D58EE75F00DA42401F582E43462
-:1087750003AF82FEAD0119ED60240FEFAC06700169
-:108785000E14F5828C83E0FD0558E558AA57700252
-:10879500055714F5828A83E06D60D97F01227F0039
-:0187A50022B1
-:0487A6008E578F5803
-:1087AA008F828E83E014F55EC3940440037FFF2218
-:1087BA00E55E75F008A42400F582E43420AF82F562
-:1087CA005F8F60855882855783A3E0FCA3E0FDA3F1
-:1087DA00E0FEA3E0FF7B087A0079007800D312A3B9
-:1087EA00B34010855882855783A312A3FA0000006C
-:1087FA0008802E855882855783A3E0FCA3E0FDA359
-:10880A00E0FEA3E0FF7B007A0879077800C312A391
-:10881A00B3500E855882855783A312A3FA0007081E
-:10882A0000855882855783A3E0F8A3E0F9A3E0FA0C
-:10883A00A3E0FB7F007E507D467C0012A3218F5C63
-:10884A008E5B8D5A8C597B0A7A007900780012A3C4
-:10885A0021AF038F5DAF5CAE5BAD5AAC597B0A7A30
-:10886A00007900780012A3218F5C8E5B8D5A8C5997
-:10887A00E55DC394054015E55C2401F55CE4355BD0
-:10888A00F55BE4355AF55AE43559F5598560828520
-:10889A005F83A3E4F0856082855F83A3A3A3E0449A
-:1088AA0080F0856082855F83E55CF0AF5CAE5BAD8E
-:1088BA005AAC59780812A3C4856082855F83A3EFF6
-:1088CA00F0856082855F83A3A3A3E0547FF0E4F57B
-:1088DA005DE558240BF582E43557F583E0FF30E077
-:1088EA00235401F0E5602404F582E4355FF583E062
-:1088FA0054FDF0AF5E7401A807088002C333D8FCA8
-:10890A004222803674017E00A85E088005C333CEF9
-:10891A0033CED8F9FFE4EF5522601FE5602404F551
-:10892A0082E4355FF583E04402F0AF5E7401A80784
-:10893A00088002C333D8FCF45222E5582408F58291
-:10894A00E43557F583E0FFB46205435D0A801AEF08
-:10895A00B47205435D088011EFB47405435D02806B
-:10896A0008EF646E60037FFF22E558240BF582E46A
-:10897A003557F583E0FF30E303435D80EF30E712BC
-:10898A00435D40E5602404F582E4355FF583E04405
-:10899A0002F0E558240BF582E43557F583E030E11F
-:1089AA0020AF5E7401A807088002C333D8FC4232A4
-:1089BA00E5602404F582E4355FF583E04401F08044
-:1089CA0010AF5E7401A807088002C333D8FCF452C2
-:1089DA0032E558240BF582E43557F583E0FF30E49D
-:1089EA0011AE5E7401A806088002C333D8FC423176
-:1089FA008010AE5E7401A806088002C333D8FCF466
-:108A0A005231EF20E10330E403E4F55D85608285AD
-:108A1A005F83A3A3A374BFF0856082855F83A3A34A
-:108A2A00E4F0E55DF0E558240AF582E43557F5836C
-:108A3A00E0FFE5602404F582E4355FF583EFF0E5B5
-:108A4A0058240AF582E43557F583E0FFE5602405EA
-:108A5A00F582E4355FF583EFF0E5582409F582E401
-:108A6A003557F583E0FFE5602406F582E4355FF5C6
-:108A7A0083EFF0E5582409F582E43557F583E0FFE2
-:108A8A00E5602407F582E4355FF583EFF0856082BF
-:108A9A00855F83A3A3A3E4F0856082855F83A3A394
-:108AAA00F0855882855783A3E0FCA3E0FDA3E0FE8E
-:108ABA00A3E0F5668E658D648C637D06AF5E1283D6
-:108ACA00DF755D08E558240CF582E43557F583E037
-:108ADA006003435D10E5602404F582E4355FF583A5
-:108AEA00E05403455DF0E5582405F582E43557F571
-:108AFA0083E0FEC394054006EED3940840037FFF4B
-:108B0A0022E5582406F582E43557F583E0FDC3943F
-:108B1A00014006EDD3940240037FFF22ED14FF25A6
-:108B2A00E025E0FFEE24FB4FF55DE5582407F582CA
-:108B3A00E43557F583E024D0601814601A24C36022
-:108B4A001E146009240A7014435D188012435D08DC
-:108B5A00800D435D388008435D2880037FFF2285AE
-:108B6A006082855F83A3A3A3E55DF074017E00A8FC
-:108B7A005E088005C333CE33CED8F9FFE4EF55340F
-:108B8A006007AF5E7D0112835AAA57A9587B01C0BC
-:108B9A0003C001E55E75F00DA42401F9740335F0F4
-:108BAA00A801FCAD03D001D0037E007F0D12A212F2
-:028BBA007F003A
-:018BBC002296
-:108BBD008F828E83E014FEC3940440037FFF22EE68
-:108BCD0075F008A42400F582E43420AD82FC9001F8
-:108BDD002C7408F0EE04A3F0E4A3F08D828C83E5F1
-:108BED00822406F582E43583F583E090012FF08D24
-:108BFD00828C83E5822405F582E43583F583E05488
-:108C0D001E900130F0742D2EF8E6A3F0AF0674011E
-:108C1D00A807088002C333D8FCF557E533C3940188
-:108C2D00400D902078E0540F755800F55980097F5C
-:108C3D00021211278E588F59C3E5586480948040D5
-:108C4D00DAE5575559900132F07E017F2C7D0712E0
-:048C5D00916A7F0099
-:018C610022F0
-:108C62008F828E83E014FEC3940440037FFF22EEC2
-:108C720075F008A42400F582E43420AF82FE90014E
-:108C820033740AF08F828E83E5822404F582E43500
-:108C920083F583E0900134F07E017F337D021291EF
-:038CA2006A7F00E6
-:018CA50022AC
-:048CA6008E578F58FE
-:108CAA008F828E83E014FEC3940440037FFF22EE7A
-:108CBA0075F008A42400F582E43420AD82FC8558BE
-:108CCA0082855783A3E0600FED2404F582E43CF526
-:108CDA0083E04402F08043EE75F00DA4240CF58283
-:108CEA00E43403F583E030E020EE25E024C6F58283
-:108CFA00E4347FF583E030E1F07F60ED2405F5820E
-:108D0A00E43CF583E05FB507F2AE04AF05EF240457
-:0C8D1A00F582E43EF583E054FDF07F009C
-:018D2600222A
-:048D2700AD07AC06E2
-:108D2B008D828C83E014FEC3940440037FFF22EEFC
-:108D3B0075F008A42400F582E43420AF82FE8D8206
-:108D4B008C83A3E0600FEF2404F582E43EF583E00F
-:108D5B004401F0800DEF2404F582E43EF583E054EA
-:048D6B00FEF07F0097
-:018D6F0022E1
-:048D7000AD07AC0699
-:108D74008D828C83E014FEC3940440037FFF22EEB3
-:108D840075F008A42400F582E43420AF82FE8D82BD
-:108D94008C83A3E0600D8F828E83A3A3A3E0444061
-:108DA400F0800B8F828E83A3A3A3E054BFF07F00D7
-:018DB400229C
-:108DB5008F828E83E014FEC3940440037FFF22AFAD
-:108DC500067401A807088002C333D8FC423E7F0021
-:018DD500227B
-:048DD6008E578F58CD
-:108DDA008F828E83A3E0F55C8F828E83E0F559D370
-:108DEA00940440037FFF22E55924FE601614601F95
-:108DFA001460282403702E7E7E7F80755A7E755BF0
-:108E0A008080227E7E7F00755A7E755B0080167E8A
-:108E1A007D7F80755A7D755B80800A7E7D7F0075B7
-:108E2A005A7D755B00E55C701B855B82855A83748D
-:108E3A00FFF0E55925E024B5F582E4347FF5837423
-:108E4A0001F08048E5582402FFE43557FEE55C60EE
-:108E5A00230FEFAC0670010E14F5828C83E0FD053A
-:108E6A005BE55BAA5A7002055A14F5828A83EDF013
-:108E7A00155C80D9855882855783A3E0FFE559257B
-:0E8E8A00E024B5F582E4347FF583EFF07F003D
-:018E980022B7
-:108E9900EF2405F558E43EF5579001357407F09035
-:108EA900017A7401F0A37436F0855882855783A33B
-:108EB900A3A3E0FEA3E08E59F55A8558828557830E
-:108EC900E0249E606124F9600E24F17003028F7A18
-:108ED90024146003028FC8855882855783A3E0FE56
-:108EE900A3E0FFC3E49FF55C74019EF55BD3E55CE9
-:108EF900943FE55B94004006755B00755C3FD3E5E4
-:108F09005A955CE559955B5003028FCBAE5BAF5C1C
-:108F1900855882855783A3A3A3EEF0FEA3EFF08EB5
-:108F290059F55A028FCB855882855783A3E0FEA352
-:108F3900E0FFC374309FF55CE49EF55BD3E55C9478
-:108F490010E55B94004006755B00755C10D3E55A2B
-:108F5900955CE559955B406AAE5BAF5C8558828547
-:108F69005783A3A3A3EEF0FEA3EFF08E59F55A8021
-:108F790051855882855783A3E0FEA3E0FFC3E49F90
-:108F8900F55CE49EF55B455C600BD3E55C943FE5DD
-:108F99005B94004006755B00755C3FD3E55A955CB0
-:108FA900E559955B401CAE5BAF5C8558828557835C
-:108FB900A3A3A3EEF0FEA3EFF08E59F55A80037F29
-:108FC9000122855882855783E0249E700302908B85
-:108FD90024F9605824F170030290DB241460030221
-:108FE900911F855882855783A3E0FEA3E0FFD394A0
-:108FF900FFEE9400400302911F900175EFF0E55ACE
-:10900900155AAE59700215594E700302911F9001FD
-:1090190075E0FF04F0A807E6FF90017AE475F00116
-:1090290012A29785F082F583EFF080D28558828568
-:109039005783A3E0FEA3E0FFC39480EE940050039E
-:1090490002911FD3EF94FFEE9400400302911F9009
-:109059000176EFF0E55A155AAE59700215594E705E
-:109069000302911F900176E0FF04F0A807E6FF9044
-:10907900017AE475F00112A29785F082F583EFF089
-:1090890080D2855882855783A3E0FEA3E0FFC3946D
-:1090990020EE9400500302911FD3EF942FEE940019
-:1090A9005074900177EFF0E55A155AAE59700215D0
-:1090B900594E6062900177E0FF04F0A807E6FF903F
-:1090C900017AE475F00112A29785F082F583EFF039
-:1090D90080D5855882855783A3E0FFA3E090017866
-:1090E900CFF0A3EFF0E55A155AAE59700215594E53
-:1090F9006024900178E475F00112A29785F082F559
-:1091090083E0FF90017AE475F00112A29785F0825D
-:10911900F583EFF080CF7E017F35855882855783AF
-:0D912900A3A3A3E0A3E004FD12916A7F0060
-:019136002216
-:109137008E628F638C648D65AF031BEF60240563BC
-:10914700E563AE627002056214F5828E83E0FF0567
-:1091570065E565AC647002056414F5828C83EFF0F5
-:0391670080D6228D
-:06916A008D5DAB07AA06B3
-:1091700075614075600D755F03755E00907FC2E09C
-:1091800020E1F9AF61AE60AD5FAC5EEC4D4E4F706B
-:1091900008907FC27402F080D7907FC2E020E11671
-:1091A000AF03AE027C7B7D80AB5D129137907FC3B5
-:0891B000E55DF07F01227F0064
-:0191B8002294
-:1091B900900184740BF0A3E533F0900AF5E49390E1
-:1091C9000186F0900AF6E493900187F0E490017C1F
-:1091D900F0A3F0A3F0A3F0A3F0A37410F0A374011B
-:1091E900F0A37488F07E017F7C1219C17E017F840F
-:0791F9007D1412916A7F0052
-:01920000224B
-:109201007E7B7F40754E7B754F40907FD3E0FF851D
-:109211004E51854F52E5522401F556E43551F5552D
-:10922100E4F550855282855183E0FE14B40C005060
-:109231005B909239F828287302925D02925D029246
-:109241006702927102927102927102928502925D9D
-:1092510002927B02925D02928D02925DEF64026046
-:109261002B7550FF8026EF640E60217550FF801C26
-:10927100EF640360177550FF8012EF6403600D7592
-:1092810050FF8008EF640660037550FFE5506015DC
-:109291009001987411F0A3EEF07E017F987D021287
-:1092A100916AAF5022E4F550855282855183E014D2
-:1092B100B40F0040030293CF9092C0F828287302A4
-:1092C10092ED0292F902930502935302935E029387
-:1092D1006902937402937F02938A0293950293A089
-:1092E1000293A70293CF0293B20293BDAF56AE553C
-:1092F1001284418F500293D2AF56AE551285618FC1
-:10930100500293D2855553855654E5542401FFE408
-:109311003553FE1286BEAF54AE531287518F50EFB4
-:10932100640160030293D2AF54AE531287A68F50EB
-:10933100E55070030293D2855482855383E075F022
-:109341000DA424F4F582E43402AF82FE1287A60252
-:1093510093D2AF56AE55128CA68F508074AF56AED5
-:1093610055128D278F508069AF56AE55128D708F73
-:1093710050805EAF4FAE4E128E998F508053AF56D4
-:10938100AE55128BBD8F508048AF56AE5512862D0B
-:109391008F50803DAF56AE55128C628F5080321285
-:1093A10091B98F50802BAF56AE55128DB58F50802D
-:1093B10020AF56AE55128DD68F508015AF4FAE4EA1
-:1093C1007C027DAF7B40129137E4F55080037550EC
-:1093D100FFE550601D9001987411F085528285510E
-:1093E10083E0900199F07E017F987D0212916AAF2E
-:1093F1005022855282855183E0FF1424FA500424BF
-:10940100FE701F9001987410F0A3EFF085568285CD
-:109411005583E090019AF07E017F987D0312916A55
-:049421008F50AF5069
-:019425002224
-:089426008F518E508D4F8C4ECA
-:10942E0075580175599CE4F557AF531553EF7003FA
-:10943E000294C4AF52E4FCFDFEF8F9FAAB07AF514B
-:10944E00AE50AD4FAC4E12A321AF038F56AF51AEFF
-:10945E0050AD4FAC4EC004C005C006C007AF52E4BD
-:10946E00FCFDFEF8F9FAAB07D007D006D005D00404
-:10947E0012A3218F518E508D4F8C4EE5562430F510
-:10948E0056D39439400674072556F5560559E559B5
-:10949E00AE587002055814F5828E83E4F00559E536
-:1094AE0059AE587002055814F5828E83E556F005B4
-:1094BE00570557029437E559155970021558AF578D
-:1094CE001557EF6023E5591559AE5870021558F52A
-:1094DE00828E83E0FF0555E555AC54700205541499
-:0894EE00F5828C83EFF080D6BB
-:0194F6002253
-:1094F700E49001C9F07E017FCA9001BEEEF0A3EFB0
-:0A950700F09001C2EEF0A3EFF02295
-:10951100AA07A9059001C9E0C394405061AC027447
-:10952100017E00A804088005C333CE33CED8F9FFED
-:10953100E4EF55346045EA04FF9001C2E0FCA3E08A
-:10954100FDF5828C83EFF0A3E9F08D828C83A3A3D8
-:10955100EBF09001C2E475F00312A281FCD3E5F0B7
-:109561009487EC9402400A9001C27401F0A374CA7A
-:10957100F0C2AF9001C9E004F0D2AF7F01227F00B9
-:0195810022C7
-:109582009001C9E0D3940040559001BEE0FCA3E0F5
-:10959200AA04F97B01C003C002C001AA06A907A858
-:1095A20001AC02AD03D001D002D0037E007F0312D2
-:1095B200A2129001BEE475F00312A281FCD3E5F081
-:1095C2009487EC9402400A9001BE7401F0A374CA1D
-:1095D200F0C2AF9001C9E014F0D2AF7F01227F0048
-:0195E2002266
-:1095E300907FC2E020E1737E7B7F8075537B75544F
-:1095F30080E5542401FFE43553A9077B018B55F51E
-:10960300568957FE129582EF6050AB55AA56A9575B
-:1096130012A23B14FF90000112A254B40216C2AF6F
-:10962300EF75F008A42401F582E43420F583E044C7
-:1096330004F0D2AF74017E00A807088005C333CEBF
-:1096430033CED8F9FFE4EF5534600F855482855348
-:0A96530083740DF0907FC37404F0DF
-:01965D0022EA
-:10965E001295E3E4F54E743A254EF8E654F0F54FC4
-:10966E0074C5254EF582E43401F583E0654FFFC4E1
-:10967E00540FF550602274C5254EF582E43401F581
-:10968E0083E54FF0AF4E7D01E54F4550FB1295112E
-:10969E00EF70051295E380EC054EE54EC394044041
-:1096AE00B51295E3E53E6048E4F54EAF4E7401A861
-:1096BE0007088002C333D8FCF54F553E6029E54EAE
-:1096CE0075F008A42405F582E43420F583E030E635
-:1096DE0016AF4E7D047B80129511EF70051295E347
-:1096EE0080EFE54FF4523E054EE54EC3940440BB69
-:1096FE00900300E060030297DF7419F0E533C39422
-:10970E0001400D902078E0540F755100F5528009FC
-:10971E007F021211278E518F52C3E55164809480BF
-:10972E0040DA9001BCE06552F06037E4F54EAF4E82
-:10973E007401A807088002C333D8FCF54F9001BC12
-:10974E00E0554F6014AF4E7D08E54F5552FB129514
-:10975E0011EF70051295E380EC054EE54EC39404AF
-:10976E0040CC9001BCE552F0E4F54EC2AF74362504
-:10977E004EF8E6F54FE4F6D2AF534F1EE54F6011AB
-:10978E00AF4E7D02AB4F129511EF70051295E3802F
-:10979E00EF742D254EF8E6F54F74FC254EF582E458
-:1097AE003402F583E0654F6011AF4E7D04AB4F126E
-:1097BE009511EF70051295E380EF74FC254EF5823E
-:1097CE00E43402F583E54FF0054EE54EC3940440B4
-:0497DE009A1295E363
-:0197E2002264
-:0C97E300787FE4F6D8FD75816702982AB3
-:1097EF000205ADE493A3F8E493A34003F68001F2DE
-:1097FF0008DFF48029E493A3F85407240CC8C3337B
-:10980F00C4540F4420C8834004F456800146F6DF49
-:10981F00E4800B010204081020408090986FE47ED2
-:10982F00019360BCA3FF543F30E509541FFEE4933E
-:10983F00A360010ECF54C025E060A840B8E493A305
-:10984F00FAE493A3F8E493A3C8C582C8CAC583CA30
-:10985F00F0A3C8C582C8CAC583CADFE9DEE780BEE8
-:10986F006024028A010204081020408081828488CB
-:10987F0090A0C0C1C2C4C8D0E0E1E2E4E8F0F1F2C8
-:08988F00F4F8F9FAFCFDFEFFFC
-:0198970000D0
-:089898008B598A5A895B8D5C33
-:1098A000E4F55DF55EAF5C155CEF6036AB59055BCA
-:1098B000E55BAA5A7002055A14F912A23BFFE55D56
-:1098C000E55E6F25E0FFE433FE74952FF582EE34FC
-:1098D0009EF583E55DFFE493F55D7401936FF55E9E
-:0698E00080C3AE5DAF5E27
-:0198E600225F
-:0B98E700C0E0C083C082C0D075D01864
-:1098F200902060E0540FFE30E005902002E0FFEE81
-:1099020030E10590200AE0FFEE30E205902012E0FF
-:10991200FFEE30E30590201AE0FF9001C4E0B51E8F
-:0A99220004E4F080059001C4EEF0AB
-:09992C00D0D0D082D083D0E0320B
-:02993500A90384
-:10993700EF75F008A42400F582E43420AB82FAE541
-:109947005C455DF55EE960148A83E5822404F5824F
-:10995700E43583F583E04DF0E4FE8013EB2404F552
-:1099670082E43AF583E0FFEDF4FCEF5CF0AE5EEBEA
-:109977002406F582E43AF583E0555EFCB50603AFAD
-:109987000522E55C5CFEE55D5CFDE96016EE7004B2
-:109997007F0180027F00AE07ED70047F0180027FA8
-:1099A70000AD07EE6003AF5C22ED6003AF5D227F81
-:0199B70000AF
-:0199B800228C
-:1099B9007555027556B0900335740FF0855682853A
-:1099C9005583A3E0FF900337F0855682855583E0E0
-:1099D900900336F090033874FFF0755703755839C2
-:1099E900EF14B40B004003029E5D9099FAF8282801
-:1099F90073029A1B029ABA029BBF029BDE029BDE8C
-:109A0900029C94029CCF029CF4029DB2029DE20248
-:109A19009E0EE4F54EE54E75F008A42400F582E4A7
-:109A29003420AF82F5538F54E4FFE4FEEF601074E5
-:109A39008A2EF582E43402F583E0F4F54F800D7443
-:109A49008A2EF582E43402F583E0F54FE5542407C4
-:109A5900F582E43553F583E54FF0E0F550654F6045
-:109A690038E4900338F0E54E04FD0558E558AA5747
-:109A79007002055714F5828A83EDF00558E558AC54
-:109A8900577002055714F5828C83E54FF08558828B
-:109A9900855783E550F0029E630EBE248F0FEF6455
-:109AA900027087054EE54E64046003029A1E029E09
-:109AB90063E4F54EAF4EE4FD12835A054EE54ED3ED
-:109AC900940340F09000047498F0A374E7F0E4F56F
-:109AD900507E207F00755320755400F54EAF4E74AB
-:109AE90001A807088002C333D8FCF54F9001C4F0E0
-:109AF9009001C0E4F0A3740AF0855482855383A3CE
-:109B09007402F09001C4E0B54F349001C0E07002D6
-:109B1900A3E070EF900338F0E54E04FF0558E558CF
-:109B2900AC577002055714F5828C83EFF085588283
-:109B390085578374FFF0E49001C4F07550FF9001DC
-:109B4900C4E0FF6037E4900338F0E54E04FE0558A1
-:109B5900E558AC577002055714F5828C83EEF00571
-:109B690058E558AC577002055714F5828C83EFF00D
-:109B7900855882855783E54FF07550FFE55070167B
-:109B890074082554F554E43553F553054EE54E64F0
-:109B9900046003029AE6E4F54EAF4E7D0112835A42
-:109BA900054EE54ED3940340F09000047413F0A3DE
-:109BB9007412F0029E63855682855583E014FF7402
-:109BC90001A807088002C333D8FC9002F7F090017E
-:109BD900C4F0029E639001C07403F0A374E8F0E43A
-:109BE900F5509002F7E0FF9001C4E0B50719900124
-:109BF900C0E07002A3E070EA900338F085588285CE
-:109C0900578374FFF0F550E5506003029E6390019D
-:109C1900C0F0A37496F09001C0E07002A3E070F662
-:109C2900E533C39401400D902078E0540F7551003D
-:109C3900F55280097F021211278E518F52C3E551C7
-:109C49006480948040DAE552540FF5509002F7E0B1
-:109C5900555070047F0180027F008F4F85568285A1
-:109C69005583A3E0B4050CE54F70047F0180027FA2
-:109C7900008F4FE54F7003029E63E4900338F0852F
-:109C89005882855783E550F0029E63E4FFFD1283F5
-:109C99005A7E207F00755320755400855482855360
-:109CA90083A3A3A3E04480F0855482855383740180
-:109CB900F0A3E4F0855482855383A3A3A3E0547FE2
-:109CC900F0D204029E63C2047E207F007553207582
-:109CD9005400E5542405F582E43553F583E030E674
-:109CE900F1E4FF7D0112835A029E63E4F550F54EBB
-:109CF900AF4EE4FD12835AE54E75F008A42400F531
-:109D090082E43420AF82F5538F54F583E58224042D
-:109D1900F582E43583F583E054FCF0AF4E7D017B99
-:109D290001755C80755D401299358F50E550701151
-:109D3900AF4E7D027B01755C10755D201299358FE0
-:109D490050E5507010AF4E7D01FB755C80755D402C
-:109D59001299358F50E5507010AF4E7D02FB755C3E
-:109D690010755D201299358F50AF4E7D0112835ABF
-:109D7900E5506026E4900338F0E54E04FF0558E508
-:109D890058AC577002055714F5828C83EFF085584B
-:109D990082855783E550F0029E63054EE54ED394C4
-:109DA900035003029CF9029E63E4900359F0A3F067
-:109DB900A3F0A3F0A3F0A37410F0A3749EF0A3740E
-:109DC90085F07E037F591281D9EF64087003029EE2
-:109DD90063E4900338F0029E63E4900359F0A3F022
-:109DE900A3F0A3F0A3F0A37410F0A3E557F0A3E543
-:109DF90058F07E037F591219C1EF6408605CE49042
-:109E09000338F08055E5562402FFE43555FAA907D1
-:109E19007B017D10129898EF4E7032900359F0A390
-:109E2900F0A3F0A3F0A3F0A37410F0E55624029078
-:109E39000360F0E4355590035FF07E037F5912818A
-:109E4900D9EF64086014E4900338F0800DE49003BE
-:109E590038F080069003387401F09001C0E4F0A353
-:109E6900740AF09001C0E07002A3E070F67E037FEF
-:0B9E7900357D2412916AE49002AFF0E6
-:019E840022BB
-:109E8500FFFEFCF8F0E0C080000103070F1F3F7FD5
-:109E95000000C0C1C1810140C30103C00280C241AD
-:109EA500C60106C00780C7410500C5C1C48104407D
-:109EB500CC010CC00D80CD410F00CFC1CE810E402D
-:109EC5000A00CAC1CB810B40C90109C00880C8413D
-:109ED500D80118C01980D9411B00DBC1DA811A40AD
-:109EE5001E00DEC1DF811F40DD011DC01C80DC417D
-:109EF5001400D4C1D5811540D70117C01680D641AD
-:109F0500D20112C01380D3411100D1C1D0811040BC
-:109F1500F00130C03180F1413300F3C1F2813240AC
-:109F25003600F6C1F7813740F50135C03480F4417C
-:109F35003C00FCC1FD813D40FF013FC03E80FE412C
-:109F4500FA013AC03B80FB413900F9C1F88138403C
-:109F55002800E8C1E9812940EB012BC02A80EA41AC
-:109F6500EE012EC02F80EF412D00EDC1EC812C407C
-:109F7500E40124C02580E5412700E7C1E6812640AC
-:109F85002200E2C1E3812340E10121C02080E041BC
-:109F9500A00160C06180A1416300A3C1A2816240AC
-:109FA5006600A6C1A7816740A50165C06480A4417C
-:109FB5006C00ACC1AD816D40AF016FC06E80AE412C
-:109FC500AA016AC06B80AB416900A9C1A88168403C
-:109FD5007800B8C1B9817940BB017BC07A80BA41AC
-:109FE500BE017EC07F80BF417D00BDC1BC817C407C
-:109FF500B40174C07580B5417700B7C1B6817640AC
-:10A005007200B2C1B3817340B10171C07080B041BB
-:10A01500500090C191815140930153C052809241AB
-:10A02500960156C057809741550095C1948154407B
-:10A035009C015CC05D809D415F009FC19E815E402B
-:10A045005A009AC19B815B40990159C0588098413B
-:10A05500880148C0498089414B008BC18A814A40AB
-:10A065004E008EC18F814F408D014DC04C808C417B
-:10A07500440084C185814540870147C046808641AB
-:10A08500820142C043808341410081C180814040BB
-:10A09500E4FF74F82FF582E43402F583E0700302DF
-:10A0A500A138743A2FF8E620E50302A138EF75F0E0
-:10A0B50008A42400F582E43420AD82FCF583E58212
-:10A0C5002405F582E43583F583E0546064607063AC
-:10A0D500EF25E024EFF582E43402F583E475F00121
-:10A0E50012A29785F082F583E08D828C83F074F857
-:10A0F5002FF582E43402F583E014F07036EF25E0A5
-:10A1050024C7F582E4347FF583E4F0EF25E0FEC350
-:10A11500740C9E75F040A42440F582E5F0347BADC7
-:10A1250082FCEF25E024EFF582E43402F583ECF0C0
-:0CA13500A3EDF00FEF6404600302A0979C
-:01A1410022FB
-:10A14200E709F608DFFA8046E709F208DFFA803EFF
-:10A1520088828C83E709F0A3DFFA8032E309F608EC
-:10A16200DFFA8078E309F208DFFA807088828C8354
-:10A17200E309F0A3DFFA806489828A83E0A3F60808
-:10A18200DFFA805889828A83E0A3F208DFFA804CE2
-:10A1920080D280FA80C680D4806980F280338010B9
-:10A1A20080A680EA809A80A880DA80E280CA803322
-:10A1B20089828A83ECFAE493A3C8C582C8CCC5839A
-:10A1C200CCF0A3C8C582C8CCC583CCDFE9DEE7806A
-:10A1D2000D89828A83E493A3F608DFF9ECFAA9F0E9
-:10A1E200EDFB2289828A83ECFAE0A3C8C582C8CC3F
-:10A1F200C583CCF0A3C8C582C8CCC583CCDFEADE58
-:10A20200E880DB89828A83E493A3F208DFF980CCB9
-:10A2120088F0ED2402B4040050C2F582EB2402B4AB
-:10A22200040050B823234582F582EF4E60AEEF6002
-:09A23200010EE5822390A1927354
-:10A23B00BB010689828A83E0225002E722BBFE0221
-:09A24B00E32289828A83E4932254
-:10A25400BB010CE58229F582E5833AF583E02250BF
-:10A2640006E92582F8E622BBFE06E92582F8E22209
-:0DA27400E58229F582E5833AF583E4932223
-:10A28100C5F0F8A3E028F0C5F0F8E5821582700268
-:06A291001583E038F02205
-:10A29700A3F8E0C5F025F0F0E5821582700215837A
-:06A2A700E0C838F0E822D7
-:10A2AD00BB0110E58229F582E5833AF583E0F5F0EF
-:10A2BD00A3E0225009E92582F886F008E622BBFECC
-:10A2CD000AE92582F8E2F5F008E222E5832AF58312
-:08A2DD00E993F5F0A3E99322D7
-:10A2E50075F008758200EF2FFFEE33FECD33CDCC30
-:10A2F50033CCC58233C5829BED9AEC99E5829840B3
-:10A305000CF582EE9BFEED9AFDEC99FC0FD5F0D68F
-:10A31500E4CEFBE4CDFAE4CCF9A88222B800C1B9B9
-:10A325000059BA002DEC8BF084CFCECDFCE5F0CBF7
-:10A33500F97818EF2FFFEE33FEED33FDEC33FCEB30
-:10A3450033FB10D703994004EB99FB0FD8E5E4F9EB
-:10A35500FA227818EF2FFFEE33FEED33FDEC33FCD8
-:10A36500C933C910D7059BE99A4007EC9BFCE99ACC
-:10A37500F90FD8E0E4C9FAE4CCFB2275F010EF2F11
-:10A38500FFEE33FEED33FDCC33CCC833C810D70711
-:10A395009BEC9AE899400AED9BFDEC9AFCE899F84C
-:0EA3A5000FD5F0DAE4CDFBE4CCFAE4C8F922DF
-:10A3B300EB9FF5F0EA9E42F0E99D42F0E89C45F000
-:01A3C3002277
-:10A3C400E8600FECC313FCED13FDEE13FEEF13FF77
-:03A3D400D8F1229B
-:10A3D700080808E6CF2FF618E6CE3EF618E6CD3D7C
-:07A3E700F618E6CC3CF6225B
-:0CA3EE00ECF0A3EDF0A3EEF0A3EFF022E2
-:10A3FA00A8828583F0D083D08212A41112A41112EC
-:10A40A00A41112A411E473E493A3C583C5F0C58310
-:10A41A00C8C582C8F0A3C583C5F0C583C8C582C8AC
-:01A42A00220F
-:00000001FF
-/*****************************************************************************
- *
- * whiteheat.h -- ConnectTech WhiteHEAT Firmware.
- *
- * Copyright (C) 2000-2002 ConnectTech Inc (http://www.connecttech.com/)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- * Firmware 4.06
- *
- * (04/09/2000) gkh
- * Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- * Fixed my intel hex processing tool, so now the firmware actually
- * matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- * Added debug loader firmware if DEBUG is #defined:
- * Port 1 LED flashes when the vend_ax program is running
- * Port 2 LED flashes when any SETUP command arrives
- * Port 3 LED flashes when any valid VENDOR request occurs
- * Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- * Original firmware from ConnectTech massaged a little to be program
- * readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/firmware/whiteheat_loader.HEX b/firmware/whiteheat_loader.HEX
deleted file mode 100644
index 5f663f6a2849..000000000000
--- a/firmware/whiteheat_loader.HEX
+++ /dev/null
@@ -1,314 +0,0 @@
-:0300000002098D65
-:030033000208FBC5
-:03004300020B00AD
-:03004B000205AA01
-:10010000907FA5E05410FFC4540F4450F50F13E442
-:1001100033F511907FE9E0245EB407004003020349
-:1001200078900128F82828730201BC0201BC020162
-:100130009102013D02015302016F02019A907F007A
-:10014000E511F0907FB57401F0907FB4E04402F0C7
-:10015000020378907F92E0FFC4540F907F00F090EC
-:100160007FB57401F0907FB4E04402F0020378128E
-:100170000A895007E4907F00F08006907F00740F9A
-:10018000F0907FB57401F0907FB4E04402F0020378
-:1001900078907FEAE0F50F020378907F007407F013
-:1001A000907FB57401F0907FB4E04402F07FE87E68
-:1001B00003120D94D206120CCC020378907FEAE071
-:1001C000752800F529A3E0FEE4EE4228907FEEE0DA
-:1001D000752A00F52BA3E0FEE4EE422A907FE8E0CA
-:1001E00064C060030202C9E52B452A70030203784C
-:1001F000C3E52B9440E52A94005008852A2C852BD2
-:100200002D8006752C00752D40907FE9E064A37069
-:1002100034F530F531C3E531952DE530952C505C42
-:10022000E5292531F582E5303528F583E0FF7400B6
-:100230002531F582E4347FF583EFF00531E5317047
-:1002400002053080D0E4F530F531C3E531952DE578
-:1002500030952C501874002531F582E4347FF583F5
-:1002600074CDF00531E5317002053080DDAF29AE87
-:1002700028AD2D7A7F79007B00120BF4907FB5E5D5
-:100280002DF0E52D2529F529E52C3528F528C3E5A0
-:100290002B952DF52BE52A952CF52A907F92E0FFE2
-:1002A000C4540F752E00F52FD39400E52E94005002
-:1002B0000C907FB4E020E1030201E780F4907FB46A
-:1002C000E020E2030201E780F4907FE8E064406010
-:1002D00003020378E52B452A7003020378E4907F3C
-:1002E000C5F0907F92E0FFC4540F752E00F52FD318
-:1002F0009400E52E94005009907FC4E030E109801D
-:10030000F7907FB4E020E3F9907FC5E0752C00F50D
-:100310002D907FE9E064A37034F530F531C3E53109
-:10032000952DE530952C503474C02531F582E43498
-:010330007E4E
-:10033100F583E0FFE5292531F582E5303528F583A0
-:10034100EFF00531E5317002053080D0AF29AE28DC
-:10035100AD2D7A7E79C07BC0120C3FE52D2529F5A4
-:1003610029E52C3528F528C3E52B952DF52BE52A14
-:09037100952CF52A0202D4C322E6
-:10037A00907FE9E070030204521470030204CE2451
-:10038A00FE700302054224FB700302044C1470033E
-:10039A0002044614700302043A147003020440244F
-:1003AA00056003020596120E4440030205A2907FDF
-:1003BA00EBE024FE60161460402402706974119008
-:1003CA007FD4F07400907FD5F00205A2907FEAE016
-:1003DA00FF120B588B258A268927EA496011AE023B
-:1003EA00EE907FD4F0AF01EF907FD5F00205A29096
-:1003FA007FB4E04401F00205A2907FEAE0FF120810
-:10040A00BA8B258A268927EA496011AE02EE907FC7
-:10041A00D4F0AF01EF907FD5F00205A2907FB4E04F
-:10042A004401F00205A2907FB4E04401F00205A263
-:10043A00120E1F0205A2120E2D0205A2120AF702BF
-:10044A0005A2120E110205A2120E4640030205A2CF
-:10045A00907FE8E0247F60241460312402705BA25C
-:10046A0000E433FF25E0FFA202E4334F907F00F05F
-:10047A00E4A3F0907FB57402F00205A2E4907F0035
-:10048A00F0A3F0907FB57402F00205A2907FECE031
-:10049A00F45480FFC4540FFFE054072F25E024B41E
-:1004AA00F582E4347FF583E054FD907F00F0E4A305
-:1004BA00F0907FB57402F00205A2907FB4E0440187
-:1004CA00F00205A2120E4840030205A2907FE8E05E
-:1004DA0024FE601D240260030205A2907FEAE0B4B4
-:1004EA000105C2000205A2907FB4E04401F00205B2
-:1004FA00A2907FEAE07038907FECE0F45480FFC469
-:10050A00540FFFE054072F25E024B4F582E4347F2A
-:10051A00F583E4F0907FECE05480FF131313541F2B
-:10052A00FFE054072F907FD7F0E04420F0806990D5
-:10053A007FB4E04401F08060120E4A505B907FE87D
-:10054A00E024FE60182402704F907FEAE0B40104B0
-:10055A00D2008044907FB4E04401F0803B907FEA6F
-:10056A00E07020907FECE0F45480FFC4540FFFE069
-:10057A0054072F25E024B4F582E4347FF58374010F
-:10058A00F08015907FB4E04401F0800C1201005015
-:10059A0007907FB4E04401F0907FB4E04402F02277
-:1005AA00C0E0C083C082C085C084C086758600C092
-:1005BA00D0C000C001C002C003C006C007907FA51A
-:1005CA00E030E206750D06020676907FA5E020E18E
-:1005DA000CE50D64026006750D07020676AF0DEF95
-:1005EA0024FE604814602C24FE6077240460030211
-:1005FA000676AB09AA0AA90BAF0C050C8F82758384
-:10060A0000120822907FA6F0E50C6508705E750D51
-:10061A00058059907FA6E0AB09AA0AA90BAE0C8EF9
-:10062A008275830012084F750D028040E50824FE8A
-:10063A00B50C07907FA5E04420F0E50814B50C0A34
-:10064A00907FA5E04440F0E4F50D907FA6E0AB0969
-:10065A00AA0AA90BAE0C8E8275830012084F050CEC
-:10066A00800A907FA5E04440F0E4F50D5391DFD075
-:10067A0007D006D003D002D001D000D0D0D086D087
-:0A068A0084D085D082D083D0E03206
-:100694008C338D34907F95E044C0F0E4F535F53625
-:1006A400C3E5369534E53595335069EF2536F58243
-:1006B400E5353EF58374FFF0F46002C322EF25367E
-:1006C400F582E5353EF583E4F06002C322EF25367A
-:1006D400F582E5353EF58374AAF064AA6002C3226C
-:1006E400EF2536F582E5353EF5837455F0645560A3
-:1006F40002C322AD36E5362FF582E5353EF583EDAE
-:10070400F0FCAC05ED6C6002C3220536E5367002E0
-:100714000535808CE4F535F536C3E5369534E53595
-:1007240095335027EF2536F582E5353EF583E065B0
-:10073400366002C322EF2536F582E5353EF583E4C3
-:0D074400F00536E5367002053580CED32273
-:10075100C204D205C203C200C202C201120E3DD2BE
-:10076100E843D820907FAB74FFF0907FA9F0907F91
-:10077100AAF05391EF907F95E044C0F0907F93747D
-:1007810030F0120A19907FAFE04401F0907FAEE0A3
-:10079100440DF0D2AF120E352001427524007523AD
-:1007A100007522007521007F487E927D007C00ABA0
-:1007B10024AA23A922A821C31208A950DB2001D809
-:1007C1007A0079007800E5242401F524EA3523F53F
-:1007D10023E93522F522E83521F52180CA300105CA
-:1007E10012037AC20130041A120E4050131209008A
-:1007F100300007907FD6E030E7F3120D4A120E4227
-:08080100C2031208FF80D62299
-:10080900BB010689828A83E0225002E722BBFE02ED
-:09081900E32289828A83E4932220
-:10082200BB010CE58229F582E5833AF583E022508B
-:1008320006E92582F8E622BBFE06E92582F8E222D5
-:0D084200E58229F582E5833AF583E49322EF
-:10084F00F8BB010DE58229F582E5833AF583E8F0DF
-:10085F00225006E92582C8F622BBFE05E92582C88B
-:02086F00F22273
-:10087100BB0110E58229F582E5833AF583E0F5F0C5
-:10088100A3E0225009E92582F886F008E622BBFEA2
-:100891000AE92582F8E2F5F008E222E5832AF583E8
-:0808A100E993F5F0A3E99322AD
-:1008A900EB9FF5F0EA9E42F0E99D42F0E89C45F0A5
-:0108B900221C
-:0208BA008F2885
-:1008BC00E4F529752AFF752B11752C32AB2AAA2B5E
-:1008CC00A92C900001120822B4031DAF290529EFB1
-:1008DC00B52801221208097E0029FFEE3AA90775F6
-:0E08EC002AFFF52B892C80D47B007A0079003E
-:0108FA0022DB
-:0408FB0053D8EF32AD
-:0108FF0022D6
-:09090000907FD6E04480F0807481
-:10097D00438701000000000000000000000000227D
-:0C098D00787FE4F6D8FD7581390209D4AA
-:10099900020751E493A3F8E493A34003F68001F21C
-:1009A90008DFF48029E493A3F85407240CC8C3335F
-:1009B900C4540F4420C8834004F456800146F6DF2E
-:1009C900E4800B0102040810204080900DECE47EC5
-:1009D900019360BCA3FF543F30E509541FFEE49323
-:1009E900A360010ECF54C025E060A840B8E493A3EA
-:1009F900FAE493A3F8E493A3C8C582C8CAC583CA15
-:100A0900F0A3C8C582C8CAC583CADFE9DEE780BECC
-:100A1900E4907F9CF07F0AFE120D94907F96748972
-:100A2900F0907F9C74CFF07FF47E01120D94907F3B
-:100A390096E054FEF07F0A7E00120D947F057E0039
-:100A4900120D94907F96E04402F0E0547FF07F0508
-:100A59007E00120D94907F96E04440F07F057E0061
-:100A6900120D94907F96E054BFF07F327E00120DF4
-:100A790094907F96E04440F07F327E00120D9422DC
-:100A8900753201E532601B7F01120DD77F007E0EA2
-:100A99007D007C01120694E433F53270057F0F1254
-:100AA9000DD7E532601B7F02120DD77F007E807D56
-:100AB900007C80120694E433F53270057F0F120D25
-:100AC900D7E532601B7F03120DD77F007E207D4062
-:100AD9007C5B120694E433F53270057F0F120DD753
-:0E0AE900E5326005E4FF120DD7E53224FF224E
-:080AF700907FEAE0F510D32224
-:010AFF0032C4
-:100B0000020D6400020DAB00020D2F00020D7C00EF
-:100B1000020DC100020AFF00020E4C00020E4D0041
-:100B2000020E4E00020E4F00020E5000020E510047
-:100B3000020E5200020E5300020E5400020E550027
-:100B4000020E5600020E5700020E5800020E590007
-:080B5000020E5A00020E5B00C8
-:100B5800E4FE752AFF752B11752C12AB2AAA2BA956
-:100B68002C9000011208226402702DAD060EEDB51E
-:100B780007012290000212087185F028F5296228E1
-:100B8800E5286229E529622829FDE5283AA905759D
-:0E0B98002AFFF52B892C80C37B007A007900A0
-:010BA600222C
-:100BA700AB07AA06AC05E4FDE5116011EAFFAE0547
-:100BB7000DEE2410F582E4340FF583EFF0EBAE056C
-:100BC7000D74102EF582E4340FF583EBF0AF050DAD
-:100BD70074102FF582E4340FF583ECF0AF0F7A0F22
-:0D0BE7007B10120D107F0A7E00120D94226B
-:100BF4008E328F338D348A358B36E4FDF537E5112B
-:100C04006012E532FFAE050DEE2413F582E4340FD5
-:100C1400F583EFF0E533AE050D74132EF582E4345D
-:100C24000FF583E533F0AF0F7A0F7B13120D10AF7E
-:0B0C34000FAD34AB36AA35120CF122D4
-:100C3F008E328F338D348A358B36E4F537E537C3F3
-:100C4F00953450200533E533AE327002053214FF70
-:100C5F00E5362537F582E43535F583E0FD120BA730
-:050C6F00053780D922C9
-:100C7400A907E50D7025907FA5E04480F0E925E003
-:100C84004401907FA6F08D08AF03A9077509018A76
-:0D0C94000A890BE4F50C750D03D322C32271
-:100CA100A907E50D7023907FA5E04480F0E925E0D8
-:100CB100907FA6F08D08AF03A9077509018A0A89FB
-:0B0CC1000BE4F50C750D01D322C322DB
-:100CCC00907FD6E054FBF0E04408F0300604E0449A
-:100CDC0002F07FD07E07120D94907FD6E054F7F08F
-:050CEC00E04404F022C9
-:100CF100120C74E50D24FA6010146007240770F3D8
-:0F0D01007F0822E4F50D7F0722E4F50D7F06221F
-:100D1000120CA1E50D24FA6010146007240770F38B
-:0F0D20007F0822E4F50D7F0722E4F50D7F062200
-:100D2F00C0E0C083C082907FC4E4F05391EF907F06
-:0B0D3F00AB7404F0D082D083D0E0320F
-:100D4A00907FD6E030E712E04401F07F147E001273
-:0A0D5A000D94907FD6E054FEF022C5
-:100D6400C0E0C083C082D2015391EF907FAB740185
-:080D7400F0D082D083D0E03200
-:100D7C00C0E0C083C082D2035391EF907FAB740864
-:080D8C00F0D082D083D0E032E8
-:100D94008E388F39E5391539AE38700215384E6002
-:070DA40005120E0080EE2293
-:100DAB00C0E0C083C0825391EF907FAB7402F0D050
-:060DBB0082D083D0E0327B
-:100DC100C0E0C083C0825391EF907FAB7410F0D02C
-:060DD10082D083D0E03265
-:100DD700AE077F217D0174002EF582E4340FAB82CC
-:050DE700FA120D1022BC
-:100DEC00500F00C0F9A4B0999282F880988883C6FD
-:030DFC00A1868E3F
-:010DFF0000F3
-:100E00007400F58690FDA57C05A3E582458370F905
-:010E100022BF
-:0E0E1100907F00E510F0907FB57401F0D322C1
-:0E0E1F00907F00E50EF0907FB57401F0D322B5
-:080E2D00907FEAE0F50ED322EC
-:080E3500E4F50DD2E9D2AF2271
-:030E3D00D20022BE
-:020E4000D322BB
-:020E4200D322B9
-:020E4400D322B7
-:020E4600D322B5
-:020E4800D322B3
-:020E4A00D322B1
-:010E4C003273
-:010E4D003272
-:010E4E003271
-:010E4F003270
-:010E5000326F
-:010E5100326E
-:010E5200326D
-:010E5300326C
-:010E5400326B
-:010E5500326A
-:010E56003269
-:010E57003268
-:010E58003267
-:010E59003266
-:010E5A003265
-:010E5B003264
-:101100001201000100000040470510270100010204
-:10111000000109022000010103A0000904000002EF
-:10112000FF0000040705820240000007050202409C
-:10113000000004030904260341006E0063006800F8
-:101140006F007200200043006800690070007300A7
-:101150002C00200049006E0063002E00280346008A
-:10116000690072006D007700610072006500200068
-:101170004600720061006D00650057006F0072004C
-:101180006B0073002A0343006F006E006600690065
-:101190006700750072006100740069006F006E00E6
-:1011A000200053007400720069006E006700220383
-:1011B00049006E0074006500720066006100630003
-:1011C0006500200053007400720069006E00670023
-:0211D00000001D
-:00000001FF
-/*****************************************************************************
- *
- * whiteheat.h -- ConnectTech WhiteHEAT Firmware.
- *
- * Copyright (C) 2000-2002 ConnectTech Inc (http://www.connecttech.com/)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- * Firmware 4.06
- *
- * (04/09/2000) gkh
- * Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- * Fixed my intel hex processing tool, so now the firmware actually
- * matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- * Added debug loader firmware if DEBUG is #defined:
- * Port 1 LED flashes when the vend_ax program is running
- * Port 2 LED flashes when any SETUP command arrives
- * Port 3 LED flashes when any valid VENDOR request occurs
- * Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- * Original firmware from ConnectTech massaged a little to be program
- * readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/firmware/whiteheat_loader_debug.HEX b/firmware/whiteheat_loader_debug.HEX
deleted file mode 100644
index 5633d588613e..000000000000
--- a/firmware/whiteheat_loader_debug.HEX
+++ /dev/null
@@ -1,403 +0,0 @@
-:10000000000000000302098D0000003303020E709F
-:100010000000004303020B000000004B030205B385
-:100020000000010010907FA5E05410FFC4540F445D
-:1000300050F50F13E4000110000001101033F5110A
-:10004000907FE9E0245EB407004003020300012032
-:1000500000000120107C900128F82828730201BCC0
-:100060000201BC02010001300000013010910201C8
-:100070003D02015302016F02019A907F000001408E
-:100080000000014010E511F0907FB57401F0907F01
-:10009000B4E04402F0000150000001501002037C63
-:1000A000907F92E0FFC4540F907F00F090000160B9
-:1000B00000000160107FB57401F0907FB4E044024D
-:1000C000F002037C1200017000000170100A8950D8
-:1000D00007E4907F00F08006907F00740F0001809D
-:1000E0000000018010F0907FB57401F0907FB4E0C3
-:1000F0004402F0020300019000000190107C907F08
-:10010000EAE0F50F02037C907F007407F00001A085
-:10011000000001A010907FB57401F0907FB4E0441E
-:1001200002F07FE87E0001B0000001B01003120D64
-:10013000D5D206120D0D02037C907FEAE00001C0CB
-:10014000000001C010752900F52AA3E0FEE4EE428C
-:1001500029907FEEE00001D0000001D010752B0047
-:10016000F52CA3E0FEE4EE422B907FE8E00001E0F6
-:10017000000001E01064C060030202C9E52C452BB9
-:10018000700302037C0001F0000001F010C3E52CB5
-:100190009440E52B94005008852B2D852C000200FF
-:1001A00000000200102E8006752D00752E40907FF5
-:1001B000E9E064A370000210000002101034F53171
-:1001C000F532C3E532952EE531952D505C000220C5
-:1001D0000000022010E52A2532F582E5313529F5A7
-:1001E00083E0FF740000023000000230102532F579
-:1001F00082E4347FF583EFF00532E532700002408F
-:10020000000002401002053180D0E4F531F532C320
-:10021000E532952EE5000250000002501031952D78
-:10022000501874002532F582E4347FF583000260B3
-:10023000000002601074CDF00532E5327002053125
-:1002400080DDAF2AAE000270000002701029AD2ED2
-:100250007A7F79007B00120BF4907FB5E500028075
-:1002600000000280102EF0E52E252AF52AE52D3516
-:1002700029F529C3E500029000000290102C952E6C
-:10028000F52CE52B952DF52B907F92E0FF0002A039
-:10029000000002A010C4540F752F00F530D3940055
-:1002A000E52F9400500002B0000002B0100C907FC7
-:1002B000B4E020E1030201E780F4907FB40002C0C3
-:1002C000000002C010E020E2030201E780F4907F0A
-:1002D000E8E06440600002D0000002D01003020396
-:1002E0007CE52C452B700302037CE4907F0002E048
-:1002F000000002E010C5F0907F92E0FFC4540F753B
-:100300002F00F530D30002F0000002F0109400E559
-:100310002F94005009907FC4E030E1098000030071
-:100320000000030010F7907FB4E020E3F9907FC550
-:10033000E0752D00F500031000000310102E907FD3
-:10034000E9E064A3703890206BF0F531F5000320EC
-:10035000000003201032C3E532952EE531952D5073
-:100360003474C025320003300000033010F582E4FD
-:10037000347EF583E0FFE52A2532F582E50003406F
-:100380000000034010313529F583EFF00532E532E6
-:1003900070020531800003500000035010D0AF2AD6
-:1003A000AE29AD2E7A7E79C07BC0120C800003602E
-:1003B0000000036010E52E252AF52AE52D3529F5E4
-:1003C00029C3E52C95000370000003700D2EF52C59
-:1003D000E52B952DF52B0202D4C300000000037D10
-:1003E000012200000000037E10907FE9E07003020C
-:1003F00004561470030204D22400038E0000038EFE
-:1004000010FE700302054624FB70030204501470B2
-:100410000300039E0000039E1002044A14700302AE
-:10042000043E147003020444240003AE000003AE33
-:100430001005600302059A120E7B40030205AB9083
-:100440007F0003BE000003BE10EBE024FE60161424
-:100450006040240270697411900003CE000003CE46
-:10046000107FD4F07400907FD5F00205AB907FEA46
-:10047000E00003DE000003DE10FF120B588B268A1B
-:10048000278928EA496011AE020003EE000003EE5E
-:1004900010EE907FD4F0AF01EF907FD5F00205AB66
-:1004A000900003FE000003FE107FB4E04401F00260
-:1004B00005AB907FEAE0FF120C00040E0000040E72
-:1004C000103F8B268A278928EA496011AE02EE90F8
-:1004D0007F00041E0000041E10D4F0AF01EF907FD7
-:1004E000D5F00205AB907FB4E000042E0000042E8E
-:1004F000104401F00205AB907FB4E04401F0020526
-:10050000AB00043E0000043E10120E520205AB1276
-:100510000E600205AB120AF70200044E0000044E02
-:100520001005AB1208F10205AB120E7D4003020567
-:10053000AB00045E0000045E10907FE8E0247F6062
-:10054000241460312402705BA200046E0000046E6B
-:100550001000E433FF25E0FFA202E4334F907F0058
-:10056000F000047E0000047E10E4A3F0907FB574D8
-:1005700002F00205ABE4907F0000048E0000048EC0
-:1005800010F0A3F0907FB57402F00205AB907FEC01
-:10059000E000049E0000049E10F45480FFC4540F39
-:1005A000FFE054072F25E024B40004AE000004AEA1
-:1005B00010F582E4347FF583E054FD907F00F0E491
-:1005C000A30004BE000004BE10F0907FB57402F0DA
-:1005D0000205AB907FB4E044010004CE000004CEDD
-:1005E00010F00205AB120E7F40030205AB907FE8CE
-:1005F000E00004DE000004DE1024FE601D24026022
-:10060000030205AB907FEAE0B40004EE000004EEC4
-:10061000100105C2000205AB907FB4E04401F00276
-:10062000050004FE000004FE10AB907FEAE0703885
-:10063000907FECE0F45480FFC400050E0000050E2E
-:1006400010540FFFE054072F25E024B4F582E43462
-:100650007F00051E0000051E10F583E4F0907FEC7E
-:10066000E05480FF131313541F00052E0000052EC5
-:1006700010FFE054072F907FD7F0E04420F0806E09
-:100680009000053E0000053E107FB4E04401F0807C
-:1006900065120E815060907FE800054E0000054E07
-:1006A00010E024FE601824027054907FEAE0B40148
-:1006B0000400055E0000055E10D2008049907FB402
-:1006C000E04401F08040907FEA00056E0000056E76
-:1006D00010E07020907FECE0F45480FFC4540FFFD2
-:1006E000E000057E0000057E1054072F25E024B4AD
-:1006F000F582E4347FF583740100058E0000058ED9
-:1007000010F0801A907FB4E04401F08011E4902052
-:100710006A00059E0000059E10F01201005007902F
-:100720007FB4E04401F0907FB40005AE000005AE58
-:1007300004E04402F0000000000005B201220000C5
-:10074000000005B310C0E0C083C082C085C084C073
-:1007500086758600C00005C3000005C310D0C00028
-:10076000C001C002C003C006C007907FA50005D32A
-:10077000000005D310E030E206750D0602067F90FA
-:100780007FA5E020E10005E3000005E3100CE50D86
-:1007900064026006750D0702067FAF0DEF0005F3DA
-:1007A000000005F31024FE604814602C24FE6077DE
-:1007B00024046003020006030000060310067FAB5A
-:1007C00009AA0AA90BAF0C050C8F827583000613CA
-:1007D000000006131000120785907FA6F0E50C6557
-:1007E00008705E750D000623000006231005805971
-:1007F000907FA6E0AB09AA0AA90BAE0C8E000633C7
-:100800000000063310827583001207B2750D028056
-:1008100040E50824FE0006430000064310B50C071F
-:10082000907FA5E04420F0E50814B50C0A000653BB
-:100830000000065310907FA5E04440F0E4F50D90D1
-:100840007FA6E0AB090006630000066310AA0AA9B0
-:100850000BAE0C8E827583001207B2050C00067376
-:100860000000067310800A907FA5E04440F0E4F594
-:100870000D5391DFD0000683000006831007D006D9
-:10088000D003D002D001D000D0D0D086D0000693C3
-:10089000000006930A84D085D082D083D0E0320055
-:1008A0000000069D10C204D205E4F525C203C20073
-:1008B000C202C201120006AD000006AD100E74D2D5
-:1008C000E843D820907FAB74FFF0907FA90006BD6D
-:1008D000000006BD10F0907FAAF05391EF907F9535
-:1008E000E044C0F0900006CD000006CD107F937468
-:1008F00030F0120A1975244875239275220006DD1E
-:10090000000006DD1000752100E4FFFE7E0590204A
-:10091000687401F0A30006ED000006ED10DEFC7E19
-:10092000007F05907FAFE04401F0907FAE0006FDB0
-:10093000000006FD10E0440DF0D2AF120E68300149
-:100940000AE490206900070D0000070D10F0120363
-:100950007EC20130041A120E775013120900071DCF
-:100960000000071D1000300007907FD6E030E7F34D
-:10097000120D8B120E00072D0000072D1079C203F7
-:100980007FFF7EFF7DFF7CFF782112081D00073D61
-:100990000000073D107B007A0079007800C3120840
-:1009A0000C701B752400074D0000074D104875237F
-:1009B00092F522F5216325FF902068E52500075D6B
-:1009C0000000075D0EF0A37401F0A3F0A3F012087D
-:1009D000FF809B000000076B012200000000076CF5
-:1009E00010BB010689828A83E0225002E722BBFE07
-:1009F0000200077C0000077C09E32289828A83E4E5
-:100A0000932200000000078510BB010CE58229F548
-:100A100082E5833AF583E0225000079500000795B0
-:100A20001006E92582F8E622BBFE06E92582F8E2F7
-:100A3000220007A5000007A50DE58229F582E583C0
-:100A40003AF583E493220000000007B210F8BB01DE
-:100A50000DE58229F582E5833AF583E8F00007C2C7
-:100A6000000007C210225006E92582C8F622BBFE0C
-:100A700005E92582C80007D2000007D202F2220051
-:100A8000000007D410BB0110E58229F582E5833A06
-:100A9000F583E0F5F00007E4000007E410A3E0228E
-:100AA0005009E92582F886F008E622BBFE0007F42B
-:100AB000000007F4100AE92582F8E2F5F008E222C6
-:100AC000E5832AF5830008040000080408E993F58B
-:100AD000F0A3E993220000000000080C10EB9FF542
-:100AE000F0EA9E42F0E99D42F0E89C45F000081CC7
-:100AF0000000081C012200000000081D1008080862
-:100B0000E62FFFF618E63EFEF618E63DFD00082D3E
-:100B10000000082D07F618E63CFCF6220000083419
-:100B2000048C348D350000000000083810907F954B
-:100B3000E044C0F0E4F536F537C3E53795000848E2
-:100B4000000008481035E53695345069EF2537F533
-:100B500082E5363EF500085800000858108374FFFF
-:100B6000F0F46002C322EF2537F582E5360008680D
-:100B700000000868103EF583E4F06002C322EF2510
-:100B800037F582E53600087800000878103EF583D6
-:100B900074AAF064AA6002C322EF2537F500088822
-:100BA000000008881082E5363EF5837455F06455E0
-:100BB0006002C322AD000898000008981037E5379E
-:100BC0002FF582E5363EF583EDF0FCAC050008A874
-:100BD000000008A810ED6C6002C3220537E53770ED
-:100BE000020536808C0008B8000008B810E4F5361D
-:100BF000F537C3E5379535E536953450270008C8F5
-:100C0000000008C810EF2537F582E5363EF583E091
-:100C100065376002C30008D8000008D81022EF250D
-:100C200037F582E5363EF583E4F00537E50008E860
-:100C3000000008E808377002053680CED3000000B7
-:100C4000000008F001220000000008F10E907F0073
-:100C5000E510F0907FB57401F0D32200000008FF8A
-:100C6000012200000000090009907FD6E04480F0D6
-:100C7000807400000000097D10438701000000001F
-:100C800000000000000000002200098D0000098D16
-:100C90000C787FE4F6D8FD75813A0209D400000093
-:100CA000000009991002069DE493A3F8E493A34081
-:100CB00003F68001F20009A9000009A91008DFF479
-:100CC0008029E493A3F85407240CC8C3330009B95E
-:100CD000000009B910C4540F4420C8834004F456DE
-:100CE000800146F6DF0009C9000009C910E4800B45
-:100CF0000102040810204080900E2DE47E0009D9E6
-:100D0000000009D910019360BCA3FF543F30E509EE
-:100D1000541FFEE4930009E9000009E910A36001F3
-:100D20000ECF54C025E060A840B8E493A30009F9B1
-:100D3000000009F910FAE493A3F8E493A3C8C5826C
-:100D4000C8CAC583CA000A0900000A0910F0A3C86E
-:100D5000C582C8CAC583CADFE9DEE780BE000A19BA
-:100D600000000A1910E4907F9CF07F0AFE120DD556
-:100D7000907F967489000A2900000A2910F0907F5C
-:100D80009C74CFF07FF47E01120DD5907F000A395C
-:100D900000000A391096E054FEF07F0A7E00120D22
-:100DA000D57F057E00000A4900000A4910120DD5C2
-:100DB000907F96E04402F0E0547FF07F05000A59EE
-:100DC00000000A59107E00120DD5907F96E0444035
-:100DD000F07F057E00000A6900000A6910120DD537
-:100DE000907F96E054BFF07F327E00120D000A79AA
-:100DF00000000A7910D5907F96E04440F07F327E63
-:100E000000120DD522000A8900000A8910753301ED
-:100E1000E533601B7F01120E187F007E0E000A99D9
-:100E200000000A99107D007C01120834E433F53388
-:100E300070057F0F12000AA900000AA9100E18E51C
-:100E400033601B7F02120E187F007E807D000AB97E
-:100E500000000AB910007C80120834E433F53370C6
-:100E6000057F0F120E000AC900000AC91018E533E9
-:100E7000601B7F03120E187F007E207D40000AD980
-:100E800000000AD9107C5B120834E433F533700596
-:100E90007F0F120E18000AE900000AE90DE5336021
-:100EA00005E4FF120E18E53324FF000000000AF6E7
-:100EB0000122000000000AF708907FEAE0F510D355
-:100EC0002200000000000AFF0132000000000B00B9
-:100ED00010020DA500020DEC00020D7000020DBD08
-:100EE00000000B1000000B1010020E0200020AFF9F
-:100EF00000020E8300020E8400000B2000000B2075
-:100F000010020E8500020E8600020E8700020E8877
-:100F100000000B3000000B3010020E8900020E8A18
-:100F200000020E8B00020E8C00000B4000000B40F4
-:100F300010020E8D00020E8E00020E8F00020E9027
-:100F400000000B5000000B5008020E9100020E92A0
-:100F50000000000000000B5810E4FE752BFF752CFC
-:100F600011752D12AB2BAA2CA9000B6800000B6881
-:100F7000102D9000011207856402702DAD060EED54
-:100F8000B5000B7800000B781007012290000212C8
-:100F900007D485F029F52A6229000B8800000B8808
-:100FA00010E529622AE52A622929FDE5293AA905E1
-:100FB00075000B9800000B980E2BFFF52C892D80E7
-:100FC000C37B007A0079000000000BA6012200001C
-:100FD00000000BA706AB07AA06AC050000000BAD8E
-:100FE00010E4FDE5116011EAFFAE050DEE2410F5E9
-:100FF00082000BBD00000BBD10E4340FF583EFF051
-:10100000EBAE050D74102EF582000BCD00000BCD5C
-:1010100010E4340FF583EBF0AF050D74102FF5825B
-:10102000E4000BDD00000BDD10340FF583ECF0AFB6
-:101030000F7A0F7B10120D517F000BED00000BEDAE
-:10104000060A7E00120DD50000000BF301220000FD
-:1010500000000BF40A8E338F348D358A368B3700BF
-:1010600000000BFE10E4FDF538E5116012E533FFDA
-:10107000AE050DEE24000C0E00000C0E1013F582D0
-:10108000E4340FF583EFF0E534AE050D74000C1E6B
-:1010900000000C1E10132EF582E4340FF583E534A6
-:1010A000F0AF0F7A0F000C2E00000C2E107B1312E5
-:1010B0000D51AF0FAD35AB37AA36120D32000C3ED5
-:1010C00000000C3E0122000000000C3F028F2900AE
-:1010D00000000C4110E4F52A752BFF752C11752DBD
-:1010E00032AB2BAA2C000C5100000C5110A92D90F2
-:1010F0000001120785B4031DAF2A052AEF000C6119
-:1011000000000C6110B529012212076C7E0029FF36
-:10111000EE3AA90775000C7100000C710E2BFFF55B
-:101120002C892D80D47B007A0079000000000C7F90
-:101130000122000000000C800A8E338F348D358A26
-:10114000368B370000000C8A10E4F538E538C3957B
-:101150003550200534E534AE33000C9A00000C9A6B
-:10116000107002053314FFE5372538F582E4353673
-:10117000F5000CAA00000CAA0A83E0FD120BA705DB
-:101180003880D90000000CB40122000000000CB52A
-:1011900010A907E50D7025907FA5E04480F0E925B2
-:1011A000E0000CC500000CC5104401907FA6F08D36
-:1011B00008AF03A9077509018A000CD500000CD5FA
-:1011C0000D0A890BE4F50C750D03D322C322000030
-:1011D00000000CE210A907E50D7023907FA5E04404
-:1011E00080F0E925E0000CF200000CF210907FA6E0
-:1011F000F08D08AF03A9077509018A0A89000D025D
-:1012000000000D020B0BE4F50C750D01D322C32277
-:1012100000000D0D10907FD6E054FBF0E04408F084
-:10122000300604E044000D1D00000D1D1002F07F8B
-:10123000D07E07120DD5907FD6E054F7F0000D2D2B
-:1012400000000D2D05E04404F022000000000D32E6
-:1012500010120CB5E50D24FA601014600724077015
-:10126000F3000D4200000D420F7F0822E4F50D7FD0
-:101270000722E4F50D7F062200000D5110120CE24A
-:10128000E50D24FA6010146007240770F3000D6167
-:1012900000000D610F7F0822E4F50D7F0722E4F5C1
-:1012A0000D7F062200000D7010C0E0C083C0829048
-:1012B0007FC4E4F05391EF907F000D8000000D801B
-:1012C0000BAB7404F0D082D083D0E03200000D8BE1
-:1012D00010907FD6E030E712E04401F07F147E00EA
-:1012E00012000D9B00000D9B0A0DD5907FD6E05497
-:1012F000FEF0220000000DA510C0E0C083C082D225
-:10130000015391EF907FAB7401000DB500000DB556
-:1013100008F0D082D083D0E03200000000000DBD84
-:1013200010C0E0C083C082D2035391EF907FAB74B2
-:1013300008000DCD00000DCD08F0D082D083D0E0A4
-:101340003200000000000DD5108E398F3AE53A15B5
-:101350003AAE39700215394E60000DE500000DE51A
-:101360000705120E4180EE2200000DEC10C0E0C017
-:1013700083C0825391EF907FAB7402F0D0000DFCDC
-:1013800000000DFC0682D083D0E0320000000E0287
-:1013900010C0E0C083C0825391EF907FAB7410F017
-:1013A000D0000E1200000E120682D083D0E0320070
-:1013B00000000E1810AE077F217D0174002EF5820B
-:1013C000E4340FAB82000E2800000E2805FA120D3F
-:1013D0005122000000000E2D10500F00C0F9A4B0E3
-:1013E000999282F880988883C6000E3D00000E3DD9
-:1013F00003A1868E00000E400100000000000E4197
-:10140000107400F58690FDA57C05A3E582458370E8
-:10141000F9000E5100000E510122000000000E5292
-:101420000E907F00E50EF0907FB57401F0D322009E
-:1014300000000E6008907FEAE0F50ED32200000065
-:1014400000000E6808E4F50DD2E9D2AF22000000DA
-:1014500000000E700453D8EF3200000000000E743C
-:1014600003D2002200000E7702D3220000000E7982
-:1014700002D3220000000E7B02D3220000000E7D6A
-:1014800002D3220000000E7F02D3220000000E8152
-:1014900002D3220000000E830132000000000E84FF
-:1014A0000132000000000E850132000000000E86AF
-:1014B0000132000000000E870132000000000E889B
-:1014C0000132000000000E890132000000000E8A87
-:1014D0000132000000000E8B0132000000000E8C73
-:1014E0000132000000000E8D0132000000000E8E5F
-:1014F0000132000000000E8F0132000000000E904B
-:101500000132000000000E910132000000000E9236
-:101510000132000000001100101201000100000063
-:1015200040470510270100010200111000001110B2
-:1015300010000109022000010103A00009040000BD
-:10154000020011200000112010FF00000407058296
-:101550000240000007050202400011300000113077
-:1015600010000004030904260341006E00630068B4
-:101570000000114000001140106F00720020004375
-:1015800000680069007000730000115000001150E5
-:10159000102C00200049006E0063002E0028034636
-:1015A000000011600000116010690072006D00778A
-:1015B00000610072006500200000117000001170D1
-:1015C000104600720061006D00650057006F0072E8
-:1015D0000000118000001180106B0073002A03438B
-:1015E000006F006E0066006900001190000011900D
-:1015F000106700750072006100740069006F006E72
-:10160000000011A0000011A010200053007400720F
-:101610000069006E00670022030011B0000011B0E5
-:101620001049006E0074006500720066006100637E
-:10163000000011C0000011C01065002000530074AC
-:1016400000720069006E0067000011D0000011D028
-:091650000200000000000000008F
-:00000001FF
-/*****************************************************************************
- *
- * whiteheat.h -- ConnectTech WhiteHEAT Firmware.
- *
- * Copyright (C) 2000-2002 ConnectTech Inc (http://www.connecttech.com/)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- * Firmware 4.06
- *
- * (04/09/2000) gkh
- * Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- * Fixed my intel hex processing tool, so now the firmware actually
- * matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- * Added debug loader firmware if DEBUG is #defined:
- * Port 1 LED flashes when the vend_ax program is running
- * Port 2 LED flashes when any SETUP command arrives
- * Port 3 LED flashes when any valid VENDOR request occurs
- * Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- * Original firmware from ConnectTech massaged a little to be program
- * readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/firmware/yam/1200.bin.ihex b/firmware/yam/1200.bin.ihex
deleted file mode 100644
index 9d34e5680e38..000000000000
--- a/firmware/yam/1200.bin.ihex
+++ /dev/null
@@ -1,342 +0,0 @@
-:10000000FFF200A5ADFFFE9FFFEFF3CBFFDBFCF29D
-:10001000FFF6FF3CBFFDBFDF6E3F6FF17DB4FDBF5C
-:10002000DF6F3F6FF70BFFDBFDF2FFF6FFFFFFFF18
-:10003000F0CFFFFFFFFEFFFFDFFFFFFFEFFFFFFF40
-:10004000FDFFFFFFFEFFFFFFFFFFF1FFFFFFFFBF11
-:10005000FFFFF7FFFFFBFFFFFFFCFFFEFFFFFFF0CF
-:100060005FFFFFFFFEFFFFFFFFFFFFFFFFFFFFFF41
-:10007000FFFFFFFFFFF7FFFFFFF1FFFFFE7FBFFF67
-:10008000FFFFFFFFFFFFFFFFF7FFFBFFFFFFF09FFB
-:10009000FFFFFFFEFFFDFFFFFFFFDFFFFFFFF7FF9B
-:1000A000FFFFFBFFFBFFFFFFF0FFFFFFFFFFFFFF77
-:1000B000F7FFFFFBFFFFFFFEFFFFFFEFFFF05FFF1C
-:1000C000FFFFFEFFFFEFFFFFFBFFFFFFFFFFFFFF55
-:1000D000FFBFFFFFDFF7FFF1FFFFFFFFFFFFFFFFA6
-:1000E000FFFFFFFFFFFBFEFFFFFFFFFFF0FFFFFF34
-:1000F000FFFEFFFFFFFFFFFFFFFFFFFFFFFFFFEB25
-:10010000FFFFFFFDFFBFF1FFFFFFFFDFFFFFFFFB73
-:10011000FFFFFFFFFFFFFFFFFFFFFFF06FFFFFFF8E
-:10012000FEFFFFFFFFFFFFFFFFFFDFFFFFFFFFFF00
-:10013000FFFFF7FFFFF1FFFFF7BFE7FFFFFFFFFB49
-:10014000FFFFFFFFFFFF77FFFFFFF0FFFFFFFFFE57
-:10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
-:10016000FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFAD
-:10017000FFFFFFFFFFFFFFFFFFF01FFFFFFFFEDBA3
-:10018000FFFFF5A5FD4B6EEF3332DDD34AD692FE6D
-:10019000B33FBDF1FADBFEF7F696BDBDFFBDFFED47
-:1001A0007F6B7FFBDFFEFBFE90CFFFFFFFFEBEEF0E
-:1001B000FFFFDB5FF6FFF68FFDA5DDFFFFFFFF6FA3
-:1001C0007FDBF1FCBFFF6FFFEFFC5B5DDADFF4FF6D
-:1001D000F2FFFDBFFFFFFFD01FFFFFFFFEFFFFFF8E
-:1001E000FFFBEFB7FC33FFFBFF046AF33C36FFF085
-:1001F0000FF10FFFFFFFF315720FF16FFFFE943F3A
-:10020000FFFFFF7BFFFFF0FFFFFFFFFEFFFFFFF0A1
-:10021000F7EFB7FC33FFFFFF046AF33C36FFF00F44
-:10022000F10FFFFFFFF315738FF26FFFFE943FFF97
-:10023000FFFF7D9FFFF00FFFFFFFFEFFFFFFFF9E11
-:10024000FFFCEFD3FBFF7FF55FFE59FFFFFFFCF1E3
-:10025000FE7FFFFFFA17FFE7EFEFFFFF3FF1FFFF22
-:10026000FFFFFFFFF0FFFFFFFFFEF5FFBFFFFCEA10
-:10027000FFF0FFFFBFF93FB1EFFFD7FFFBFFF0FF3C
-:10028000FFF3FFDFFF7BFFFDFFF6FFBFFFFFBFFFB9
-:10029000FFFFDAF0FFFFFFFFFEF2C00100000202E5
-:1002A0000202004040401000000020000001000059
-:1002B000000000001900040400000000000000100D
-:1002C000003CF0AFFFFFFFFEFDBFFFFFFBFFFDFFA8
-:1002D000FF7FFFFFBFFFEFFFFFFDFFFFF1FFDFFF2E
-:1002E000FFFFFFFFFFBFFEFFFFFEFFFFFFFFFFDF80
-:1002F000DBF06FFFFFFFFEF0BFDFFF7FFFFFFFFFC1
-:10030000DFDFFFEFFF9EEFFFFF7FFFF1EFFFFFFF5C
-:10031000F7FABFFFFFFE47EFFFBDF6FFFFDFF5F087
-:10032000F0EFFFFFFFFEF8300000000400010208BC
-:1003300016000000800001020080010C0200000194
-:100340000000200000060020001000140004C1F08E
-:100350002FFFFFFFFEFFFFFFFFFFFFFFFBFFFF7F02
-:10036000ECFFFFFAFFBFFF6FFFE1FFFFFFFFBDFEE6
-:1003700046FFEF7FCDDFFFFFFDFFBDFF7F7FF04F2B
-:10038000FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7E
-:10039000FFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFF7B
-:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFF00FFF5C
-:1003B000FFFFFEFFFFFFFDA4BCCD6D6B6F5BDC3369
-:1003C0005AF6F7F6B33FBDC1FA5AF6F6B6F7FFBDD7
-:1003D000BB3CCECF34EF33BBCCFFFFFFF04FFFFF72
-:1003E000FFFEBFFFFFFFDBFFF6D6FFFDFDBFFFAD4A
-:1003F000BFF97F6FFCDBF1FDBFFF6FFFFFDADBFCB6
-:10040000DBFF768FF6FFCDABFEFBFFD0FFFFFFFFDC
-:10041000FEFF9FFFF420AF6D0BC17BFFFFFFCBFF03
-:100420003FF0EF7F0FF1C33CFFFFFFFFFFFFF80B33
-:100430001D6A64056B9901FFFDEFF02FFFFFFFFEC2
-:10044000FFFFFFF4002FCC0BC37FFFFFFF0ADFBFCE
-:10045000FD7FFFFFF1C3BFFFFFFFFFFFFFF04A0E6D
-:10046000966402979910FFFFFFF0DFFFFFFFFEFF8A
-:10047000FFFFFE84F9D527F17FFFF8EBDFF3CF3FD5
-:100480001FFFF711FFCFFFFE67FFFFFFFFC4FFFF56
-:10049000B3A1FFF9E0FFFFFFF0EFFFFFFFFEF5FF65
-:1004A000FFFB7FE0FFC7FE7F3FFFFD778D7F0FFFE4
-:1004B000C3FFF1BF8FCFFFFFDD7BFFF6FAF7FF40F1
-:1004C0009FF97FD8FFFFFAF01FFFFFFFFEF1C0008A
-:1004D00000030000000000000000400010000010B9
-:1004E00000010010202000001000040105000000A1
-:1004F00000404000003CF01FFFFFFFFEFDBFFFFF7C
-:10050000FFFFFE7F7FFFEFFFFFDFFFFFDFFFEFF764
-:10051000F1FFFFFFFFDFFFFFF7FFFFFFFCFDFF7FA6
-:100520007EFFFFFFDBF06FFFFFFFFEF0BBFFFFFF73
-:10053000FFFFFEEBFD6FFFF7FEF57FFFFF7FBFB113
-:10054000FFFF9FBFFBFFFEFFFEFFF7EBDFBF5FDD9F
-:10055000FFDBFDD0F06FFFFFFFFEF8302000420010
-:100560000000301804080921828002000800010000
-:1005700000000C2010001100448400202084800022
-:100580000000C1F0DFFFFFFFFEFFF7FFFBDDF9FF1B
-:10059000DAFFDCDDFCFBFFBFFB3ED796FE61F7FF19
-:1005A0007FFF3FFDFFDFCFF7DFF7BFFDFFFEEFEF80
-:1005B000FEFFF07FFFFFFFFEFFFFFFFFFFFFFFFFDC
-:1005C000FFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFF49
-:1005D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
-:1005E000FFF02FFFFFFFFEFFFFFFF3BDFD4B74CFBA
-:1005F000735BCB3BDFFEF7FED375ACA1FBDFFEF7F1
-:100600007696B524BDA5AD492F692B525BBDFFFF82
-:10061000F0CFFFFFFFFEBFFFFFFFDBFFF6FEFFCCCB
-:10062000A7FBADFF7F6FFF6D7FDBF1FDBFFF6FFFAE
-:100630006FFFDBFFDBFFF697F6FFB5B5FFFFFFD0DF
-:10064000EFFFFFFFFEFFFFFFFDA5BC43FC7C03E7C0
-:10065000FFFF20FFFFFFCCFD7DF1FFFFFFFFD5591E
-:10066000BA56666AAD9AA99A97A5AABBFFFFF00F82
-:10067000FFFFFFFEFEFBFFFDF7FD43FFFD6BE7FF06
-:10068000FFDFFFFFFFFFFF3FF1FFFFFFFFD559B582
-:10069000A6666AAD9AA9996B5AAAFFFFB7F03FFF09
-:1006A000FFFFFEFFFFFFFE9CF7FDD241FFFFF27F41
-:1006B0008FFFFF3DF3FF17F1FFFFFFFFFF7FDFFC21
-:1006C0008F38FFEF23FFFBF7C8FFFFFFF09FFFFF0F
-:1006D000FFFEF57FFFFDFFE4FFEBFFCFBFFAFFABAF
-:1006E000EFFFFBFFF3FD61FFFFFFFFFAFFFBFD0DD7
-:1006F000FFFEFF437FFEBFD0FDFFFAF03FFFFFFF8D
-:10070000FEF3C0000000020002010060C0400000D3
-:100710000000340400010000000000000008880010
-:100720000003000040004000003CF03FFFFFFFFEE0
-:10073000FD3FFFFFFFFFFFFF7F7FBFFFFFFFFFFFCB
-:10074000FFFFFFF7F1FFFFFFFFFFF7FFFFFFFDFFD9
-:10075000FFFFFFFEFE5FFFFFCBF0DFFFFFFFFEF0BE
-:10076000FFFFFDFFEFE3DEEED9C593FFFFFEFEFFC7
-:10077000FBEEFEF1FFFFFFFFFFFDFFBFF7FFFF7F77
-:10078000AFBDDFDFFBF3F3F0F0AFFFFFFFFEF834A8
-:10079000000661001801A0051700200528200000B0
-:1007A0000500410000400009000120868208400346
-:1007B000803070081402C1F0CFFFFFFFFEFFFFFF83
-:1007C000FFFFBDEFFBFFFFFB9C7FEFDFFFBFEBDE1B
-:1007D000FFC17FFFFB7FFFFFFF5FFFFFFFDFBFEF7B
-:1007E0003FF78FEF7FFFF07FFFFFFFFEFFFFFFFF71
-:1007F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
-:10080000F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
-:10081000FFFFFFFFFFF03FFFFFFFFEFFFFFFFFBDFA
-:10082000DFEF7D6D2B5A5DD2DFF692B6B2B3ACA18D
-:10083000FBDFFEF1EEF5F6BC6BBD7DAF1AEF5F6B33
-:10084000C6FFFFFFF05FFFFFFFFEBFFFFFFFDBFF05
-:10085000F6FFF6B7FDADFDBFF36FFF6FFFDBD1FD18
-:10086000BFFF6FF56BBC5B3CDAEF16AF16FFCDAB8D
-:10087000FF6FFFD0FFFFFFFFFEFFFFFFFCBFFFFF8B
-:10088000FF6C0310C1F3FFF33AF3CAFFAFF1FFFFB0
-:10089000FFFFD996A665A6666A9569696A5A5AFFE6
-:1008A000FF5FF01FFFFFFFFEFFFFFFFFBFFFFFFF28
-:1008B000EA0F50C3F37FFFF3F3C3FFAFF1FFFFFF76
-:1008C000FFD996A665A6666A9569696A5A5AFFFFB6
-:1008D000FFF03FFFFFFFFEFFFFFFFFD7FFFF5FC1FE
-:1008E0003FF75EF5CE9E5F3F17FFF3E1FFFFFFFF8F
-:1008F000D8FFFAFE67FFFEBF5AFFFFAFF5FFFFFF0D
-:10090000F02FFFFFFFFEF5FFFFFDFFF7FFFD4E3D60
-:100910003FE70BBF8FF9FFEBE3FFE1FFFFFCFFC7F2
-:100920009FFF3E39E5FFCF9BF9FFFFC5FFFFFAF0C0
-:100930005FFFFFFFFEF3C00000000000000040006A
-:100940000000006000000000000100000020002006
-:10095000000110080000000000000000003CF04F03
-:10096000FFFFFFFEFDBFFFFFFFFFFFFFFEFFFFBF1B
-:100970003FFFFFBFFFFFFFFBF1FFFFFFFFF7FFF7A9
-:10098000FFEDFFFBFEFF7FFF7FDFFFFFDDF03FFF9F
-:10099000FFFFFEF0FFFFF3FFF7FFFE5FFFF7FFFF34
-:1009A000DFFFFFFFF7FE7BF1FFFDFDFFDFDFFF7DD8
-:1009B00073F9FFC37EFEFFEFD7FFCFD0F06FFFFFCD
-:1009C000FFFEF83000004004000141200004000256
-:1009D000D50900028002010000000A04000700019E
-:1009E000500180026140410C1408C1F09FFFFFFFDD
-:1009F000FEFFFFFFFEFFFFFFFEDFCB5FFEEFFFFE10
-:100A0000FF3FFF7FFDC1FFFF7FFFDFFDFCFDF7EE36
-:100A1000FFFF4EFFDFCFDBEBFFFFF01FFFFFFFFE0F
-:100A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
-:100A3000FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFD4
-:100A4000FFFFFFFFFFFFFFFFFFF02FFFFFFFFE7F16
-:100A5000FFFFFFFDFFFFFFFFFFFFFFFFDFFFFFFFC8
-:100A6000F7FBFFF1FFFFFFFFFFFFFFFFFFFFFFFFB0
-:100A7000FFFF7FFFFFFF7FFFF01FFFFFFFFEDDFF98
-:100A8000FFFFA5FF6F6BE96FDACAFBDDEEF7F6B289
-:100A9000B3A4A15B5BF6D7F4F77BBDBDADCFEF7F11
-:100AA0006B7F3BDFDBFFFF30CFFFFFFFFEBFFFFFB2
-:100AB000FFFFFFF6FE96FFFDB5FDBFAD7FFF6FFFA9
-:100AC000DED1ADADE9FFF1ECEFDE3FCBFFF6FF325B
-:100AD000FFC5BDFFFFFFD0BFFFFFFFFEFEFBFFF422
-:100AE00028BFFFFDFBD3FFFF42FFFFFFEAB3FCC3BC
-:100AF000C1FF33FFC0156B70FFF0F24FFFFC3E9754
-:100B00003CFFFFFDEFF0BFFFFFFFFEFFFFFFFE78A2
-:100B1000BFFFFDF3EF55FF7EFFFFFFEAB3FCC3C14C
-:100B2000FF33FFC0156FFF0FF0F00FFFFC3D6BC3ED
-:100B3000FFFFFEF7F0CFFFFFFFFEFFFFFFFFFCFF11
-:100B4000FF23F87FFF4EFFFFFFFBF917FFF6F1FFD2
-:100B5000CFEFFFFF13DFE62FC7FFFFE7C1FDFFFE6B
-:100B6000FFFFFFF04FFFFFFFFEF5FFFFFFFEAEFFB1
-:100B7000FF7F3B3FFC7FFCEFFFFCE27BFFF1FDEDE5
-:100B8000EFFFFF3573FFFFFEFAFFFFFFFEBFFFFF22
-:100B9000FFFAF08FFFFFFFFEF1C000000000000031
-:100BA000000000800000400000000C0401404000F4
-:100BB00000302804000800000001000100000000CF
-:100BC00038F00FFFFFFFFEFDBFFFFFFFFFFBFF7FC2
-:100BD000FFFF9FFFFFFFFFFFFFFFFFF1FFDFDFFFD3
-:100BE000FFFFFFEDFFFDFFFFFFFFFFBFBFFFFFC3E5
-:100BF000F03FFFFFFFFEF0BFFDFFBFFFFFFDFFFF68
-:100C0000FFFFFFFD7BFF7FFFBDFFF1EFFFFFFDDF7C
-:100C1000FDFBFFFFBFBEFFCD7FFCF7F76FBFD8F036
-:100C2000EFFFFFFFFEF830000000040000A000000E
-:100C3000C0000020340000000C810020A42000101F
-:100C400008044808004093001000381820C1F03F05
-:100C5000FFFFFFFEFFFBFFFFB9DFFEB3FFFFE7FD76
-:100C6000FFFF3BFF7FFFBFFFC1FFFCFFFF3F77FEA2
-:100C7000FECFFFBFFDBFFFFEEDF2FDF7FFF02FFF40
-:100C8000FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFF75
-:100C9000FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFF72
-:100CA000FFFFFFFFFFFFFFFFFFFFFFFFF0BFFFFFA3
-:100CB000FFFEFFFFFFF3ADCFEF70C9733BDF5B4A71
-:100CC000F6B7FED7F5BCC133CAD6B76EF7FBBDC5C4
-:100CD00024CF6F2F4D2BBA5AFFFFFFF0AFFFFFFF5E
-:100CE000FEBFFFFFFFFFF6F6D7FFFFADBDFFFFFF23
-:100CF000EFF77FFC5BB1FDBD756FEF6AFD5BFBDB62
-:100D00003ABF8E9FFFBFFDFF6FFFD06FFFFFFFFE5B
-:100D1000FFBBFFF03FFFFFFDFB7FDEFFFF5AD6BFAB
-:100D2000D82ABFBFF1E5FFCCC0A970FFF33C3CFD62
-:100D300057FD980300C3FFFFFFF0AFFFFFFFFEFF6B
-:100D4000FFFFFF3DBFFFFDFBFFDBFFFF0FFC3FD8B9
-:100D50002ABFBFF1EFFFCCC096BEFFF33FFFFD57A8
-:100D6000FD990FFFC3FFFFFFF04FFFFFFFFEFFFFE7
-:100D7000FFF1E7FFFFF38E7BFFA8FFDF7F8E787325
-:100D8000FFF15162FFFC4BFFF3FF7ECFF9FFFDFF48
-:100D9000FF7FFFE0FFFFFFF04FFFFFFFFEF5FFFFCC
-:100DA000FBFDAEFFFCFE6F3FF8FD77AFFE37FE7B2D
-:100DB000FFB18CFFEFFDF8E7BFFFF1FE3EF7FE95B8
-:100DC0003EBFFFFFFFFAF0BFFFFFFFFEF1C00000D4
-:100DD0000104000000008002000010001000100854
-:100DE0004180100000081084000C040261000081A2
-:100DF000000000003DF07FFFFFFFFEFDBFFFFFFF93
-:100E0000FFFF7FFFFEFDBFFFFFFFFFFFFFFFFFF1C3
-:100E10007FBFF77FEFFFEFFFF7FDFFFFFD7FFFBE17
-:100E2000DFFFFFD9F0BFFFFFFFFEF0BBFF7FFBFF3F
-:100E3000FBFFBFFFF37FFBFDEB7FDFFAFFDEF0ED93
-:100E4000FFB1F7F91FB55BFE7EF7BEFD7F5FB5F71B
-:100E5000FFFFD0F04FFFFFFFFEF830010007420117
-:100E6000006A185080000002400101200101241492
-:100E700021100208070800401080580084801810D4
-:100E800040C1F0BFFFFFFFFEFFFFFFF7FFDBB7F33F
-:100E9000DF7CF874FFFF6F7D3F7EEC7FC1F5FFCFF5
-:100EA0006F9FF9DFBEE5E7FFD7F3DDFBFFFCFFBF78
-:100EB000FFF0FFFFFFFFFEFFFFFFFFFFFFFFFFFF52
-:100EC000FFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFF40
-:100ED000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
-:100EE000F02FFFFFFFFED7FFFFFFB4CFEF776F7349
-:100EF0003A4A3ACBD4F72ED6BDBDA13BDFD6F7EEAA
-:100F0000D335BDFBBDCEEB2B4D2FBBDAFFFFFEB0C3
-:100F10005FFFFFFFFEBFFFFFFFDF5F36AF3FEDB7B5
-:100F2000F5FDF32BEF77FFFBDAB1BDA377697F4FB8
-:100F3000FFDBFA5BFFF2FEFF96FFFFFEDFFFD0AFA5
-:100F4000FFFFFFFEFFFFFFFD8FFD406F9E835A0FE7
-:100F5000FAC3FFFFFCE97FF301D000FEBFCD3FF0F5
-:100F6000EFFCC50C3FFD680BFFFFFFFEDFF0FFFF4E
-:100F7000FFFFFEFFBBFFFD85FFD46F9FC35A0FFF2E
-:100F8000FFFFFFFCE97FF301F0FBC2BFFC0037EF7E
-:100F9000FCCDBC3FFF0CBFFFFFFFFFFFF05FFFFF7B
-:100FA000FFFEFFFFFFFFD9F7D1B77E7FF1E4FDFF22
-:100FB000FBFBFF5FFF7FB1BC0F67EBB83FFFE2FFBA
-:100FC000E9FFFDE3FF3F9FC2FFFFFFF09FFFFFFF31
-:100FD000FEF57FFFF03FBCFFD5F5CE3FFEFFFE6D77
-:100FE000FFF1BF7BFFF1FDFF4FFF87FFAEFFB1F8C1
-:100FF000FEFFFF7801B9FFFFFFFAF02FFFFFFFFEB2
-:10100000F3C00000000402130200804000901000B2
-:1010100010000200012080121000400800040000AF
-:1010200002000140008000003CF0EFFFFFFFFEFDEA
-:101030001FFFFFFF7FFFFFFFFF7FFF7FF7DFF7FF50
-:10104000F7FBEBD1FFFFFFFFEFF7FFFFFBFFFEFF1B
-:10105000FF7EFFFBFFFFFFDBF0FFFFFFFFFEF0FF68
-:10106000FFB7EBF7DFFFFEF56BE7EDF73EECFF5464
-:10107000EF6FF1F5AF6FF6FDFFDD7BFFEFBF7FFF99
-:10108000FFF7FFF35FF7D0F0CFFFFFFFFEF8300070
-:1010900080400400812C0424000201C802000224C4
-:1010A0000001B442DC4402159002034839100224C6
-:1010B000A0BA000040C1F0BFFFFFFFFEFFFFFFFF2F
-:1010C000FEFCF7F0EEB65DFDF5FFDBF77F7FBEFFC0
-:1010D000C1FEBFFAFA5FFFADFFEFFF7FDF7FFEBF0C
-:1010E000B794BFFFFFF09FFFFFFFFEFFFFFFFFFF73
-:1010F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10E
-:10110000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
-:10111000FFFFFFFFF08FFFFFFFFED7FFFFFBB5FFD5
-:10112000EF7CEB2B525B3BDAD4F33696B5BDF1FB8B
-:10113000DAEEF6FED335BDDFADCFEF7ECD6BBBDF94
-:10114000FFFFFDB0EFFFFFFFFEBFFFFFFFD35FF626
-:10115000FFF6FFFDADFDFF7FEFFF6F7FDBF1A5A386
-:101160007F6F6B4FFFDBFBCBFFF6FFF4D7FDBFFEBE
-:10117000DFFFD0CFFFFFFFFEFFFFFFF7DFFFFFFF27
-:101180003F7FFCE5FF20FEFFFFDF7FFFF17FFFFEDB
-:10119000FFF07C3D4FF3C33FFFFF6FC3FF0FFFFF27
-:1011A000AFF02FFFFFFFFEFFFFFBB7E00FFFFF2BAE
-:1011B000FF7DBFFFDFFFFFF89F7FFFF155FFFFFFC0
-:1011C000FD7C3CFFF3C33FFFFFEFC3FFDFFFFFFFEB
-:1011D000F09FFFFFFFFEFFFFFFFFEFFFFF9FBF7FBF
-:1011E000F919478EE79F3F17FFFC81C17EF3D9F9BC
-:1011F00073DFF47FFAFFFFFFFB7F77C7FFFFFFF08E
-:101200002FFFFFFFFEF5F7FFFBFFF73FFCBF3E3F61
-:10121000ECFF81AFFE4FF3BBFFF07EFF6FFF87FF58
-:10122000BBFFD5FCFF7FFC6FFFEFE7FFFFFAF03F4E
-:10123000FFFFFFFEF3C00000000000000000008080
-:101240000030106020000800012080001000040021
-:101250000000000000020080400008203CF06FFF0A
-:10126000FFFFFEF5BFFFFFFEFFFFFFFF7FFE3FFF1B
-:10127000FFFFFFFFEFFFFFF1DFDFFFFFFF7FDFFF7C
-:10128000FDBDFFFFFFFBDFFFFFFFFF5BF0FFFFFF89
-:10129000FFFEF0BFBFBFFFF7FBFFFEEEFAFFFFFF51
-:1012A0003D3BFFFFFEFBF1FFBF7BFFFFEFFFBFFFFB
-:1012B000FFFFFFFFFEFFF7EFFFFBD0F0DFFFFFFFB9
-:1012C000FEF83000000000000B10050100080002CD
-:1012D000010100001001C8080000000042020000E7
-:1012E000008002000040248000C1F03FFFFFFFFEAD
-:1012F000FFFFFFFFF7FDF7FAEFEEF9FDFFF7FEBF87
-:101300001FFD9EFDD1EFFFF77F9FFFEFFFF6FFFE72
-:10131000FE7BFFBDFF7EFFFFFFF03FFFFFFFFEFFF5
-:10132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
-:10133000FFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFCB
-:10134000FFFFFFFFFFFFFFFFF0AFFFFFFFFEFFFF0D
-:10135000FFF7FFFFFFFF7FFFFFFFDFFDFFFFDFFF67
-:10136000FF5FF1BFFFFFFFFFFFFFFFFFFFFFFFFF7B
-:10137000FFFFFFFFFFFFFFF0DFFFFFFFFEFFEFFFBD
-:10138000F7FFFFFFFFFFFFFFFF3FFBFFFFEFFBFD4F
-:10139000FFF1FFFFFBFFFFFFFFFFFFFFFFFFFFFF6F
-:1013A000FFFFFFFFFFFFF02FFFFFFFFEF7FFFFFF35
-:1013B000FFFFFFFFFDFFFFFFFFFFFF7FFFFFE7FFD7
-:1013C000F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
-:1013D000FFFFFFFFFFF0FFFFFFFFFEFFFFFFFFFF2D
-:1013E000FFFFFFFFFFFFFFFFFFFFCFFFFBFFFBF153
-:1013F000FFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFF01
-:10140000FFFFFFFFF02FFFFFFFFEFFFFFFFFFFFFCC
-:10141000FFFFFFFFFFFFFFFF7BFFFFFF7FFFF1FFEE
-:10142000FFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
-:10143000FFFFFFF07FFFFFFFFEFFFFFFEFFFFFFF5C
-:10144000FFFFFFFFFFFFFFDF57FFFEBFFBF1FFFFC7
-:10145000FDF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
-:10146000D7FFF07FFFFFFFFEFFFFFFF7DBFFDBFD96
-:10147000F6FFF6FF3CBCBCBFDF6FEF2FF13CBFBCFB
-:10148000BFDF6FFF6FF7DBFFDBFDF6FFF6FFFFFF50
-:1014900001E2EFFFFFFFFEFFFFFFFFFFFFFFFFFF88
-:1014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
-:0614B000FFFFFFFFFFFF3C
-:00000001FF
-/*
- *
- * File yam1k2b5.mcs converted to h format by mcs2h
- *
- * (C) F6FBB 1998
- *
- * Tue Aug 25 20:24:08 1998
- *
- */
diff --git a/firmware/yam/9600.bin.ihex b/firmware/yam/9600.bin.ihex
deleted file mode 100644
index 817a34be22cc..000000000000
--- a/firmware/yam/9600.bin.ihex
+++ /dev/null
@@ -1,342 +0,0 @@
-:10000000FFF200A5ADFFFE9FFFEFFBCBFFDBFEF293
-:10001000FFF6FF9CBFFDBFEF2E3F6FF1FDB4FDBFAC
-:10002000FF6FFF6FFF0BFFDBFFF2FFF6FFFFFFFF2E
-:10003000F06FFFFFFFFEFFFDDFFFFFFFF7FFFFFF9A
-:10004000FBFFFFF7FFFFFFFEFF7FF1FFFEFFBFBFDC
-:10005000FFFFFFFFFFF7FFFFFFFEFFFEFFFFFFF0C9
-:10006000EFFFFFFFFEFFFFFFFFFFFFBFFFFFFFF7F9
-:10007000FFFFF7EFFFFFFFFFFFF1FFFFFF7EFFFF37
-:10008000FFFFFFFFDFFFFFFFFFFFFDFFFFFFF0DFD1
-:10009000FFFFFFFEFFFFDFFFFFFFFFFFFFFFFFFF91
-:1000A000FFFFEFFFF3FBFEFFF1FFFDFFFFFFFFFF91
-:1000B000FFFFFFFFFFFFFFFEFFFFFFDFFFF07FFF00
-:1000C000FFFFFEFFFFEFFFFFFFFFFFFFFFFFFFFF51
-:1000D000FFFFDFFFFFFFF7F1FFFFFFDFFFFFFFFF86
-:1000E000FFFFFFFFFFFFFFFEFFFFFFFFF00FFFFF20
-:1000F000FFFEFFFFFFFFFFFFFFFFFFFFFFFF7FFF91
-:10010000FFFFFFFFFFFFF1FFFFFFFFFFFFFFFFF517
-:10011000FFFFFFFFFFFFFFFFFFFFFFF02FFFFFFFCE
-:10012000FEFFFFFFFFFFFFFBFFFFFFEFFF7FFFEF84
-:10013000FFEFFF7FEFF1FFEFFF7FFFFFFFFFFFFF0D
-:10014000FFFFFFFFFFFEFFFFFFFFF09FFFFFFFFE30
-:10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
-:10016000FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFAD
-:10017000FFFFFFFFFFFFFFFFFFF0BFFFFFFFFEFFDF
-:10018000FFFFFFBDFFEF7FEF7FFBDFD35AFED7D628
-:10019000F77FBDF1BB5DD6F7FE96FFBDAFADBFEFFC
-:1001A0007F6B7FFBD6FEF7FF10EFFFFFFFFEBEEF7A
-:1001B000FFFFDBFFF6FFF6FFFDBFFDBFFF7FFF7F09
-:1001C000DFDBF1FD35FF6FFF6FFFDBFFCBFFF6FFDE
-:1001D000F2FDFDBFFFFFFFD0EFFFFFFFFEFFFFFFC0
-:1001E000FFFFFFFFFFFFFFFFFFFF55FFCCC03FFFFB
-:1001F000FFF124F0FFFFCFEF3FFFF0FFFFFFFC3FD9
-:10020000FFFFFFFFFFFFF0CFFFFFFFFEFFFFFFFF3E
-:10021000FFFFFFFFFFFFFFFFFF55FFCCC03FFFFFCA
-:10022000F100F0FFFFCFDFFFFFF0FFFFFFFC3FFF1C
-:10023000FFFF7DFFFFF0FFFFFFFFFEFFFFFFFFFF60
-:10024000FFFFFFFFFFFFFFFFDFFE7FDFFFFFFFF18D
-:10025000FFCFFFF3FF97FFFF8FE7FFFFFC71FFFF6B
-:10026000FFFFFFFFF0EFFFFFFFFEF5FFBFFFFFFF08
-:10027000FFFFFFFFFFFFE3F7EFFFFFFC7BFFF13F17
-:10028000FFEFFFCFE3E3FFFFFFFF3FFFFFFFBFFFF6
-:10029000BFFFDAF07FFFFFFFFEF2C00000000000AA
-:1002A000000000000000000000000000000100004D
-:1002B000000000000000000100000200000000003B
-:1002C000013CF0AFFFFFFFFEFDBFFFFFFFFFFFFFA1
-:1002D000FFFFFFFFFFDBFFFFFFFFFFFFF1FF9FFFC0
-:1002E000FFFFF7FFEFFFFFFFFFFFFFFFFFFFFFFF36
-:1002F000DBF07FFFFFFFFEF0BBDFFFFFFFFFFFFF35
-:10030000FFFFFFFFFFFFFFEFFBDFBFF1FEFDF7FF8A
-:10031000FFFFFFFFFEFFFFFFFFFFFFFFFF77FDF285
-:10032000F01FFFFFFFFEF838000000000000000390
-:100330000000000200900000000C010000042400F6
-:100340004001000000400000000002000001C0F079
-:100350004FFFFFFFFEFFFFFFFFFFFFFFFFFFFFFF5E
-:10036000FFFFBFFFFF6FFFDFFFD1FFFEFFFFFFFFBC
-:10037000FFFFDFFFFBFFFBEFFFFFEEFFFF7FF0DF85
-:10038000FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7E
-:10039000FFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFF7B
-:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFF08FFFDC
-:1003B000FFFFFEFFFFFFF5ADFF692AED6BFBDF3AA4
-:1003C000DCF496EEB33D35C1BBDDFEF6FED6B5AD31
-:1003D000BFA5AD492F4F2BDA5FFFFFFFF02FFFFFC7
-:1003E000FFFEBFFFFFFB5BF7F6FFF6FFFDBFFDA5BE
-:1003F000F36FF36EFA7BD1FDB5776FE96FFFDBFB2F
-:10040000DBDFF6FFF6FFFD3FFEF7FFD04FFFFFFFFC
-:10041000FEFF9FFFFF0FFFC03F9C03FFFF8BA5FE6A
-:10042000803EC2BFACB124FFFFFFFFFFFF0FFFA361
-:10043000FFFD6BFFFFF0A5FFFFFFF0AFFFFFFFFE2B
-:10044000FFFFFFFF0FFFC03FD46BFFFFDBFFFE8608
-:10045000BFC2BF30A124FFFFFFFFCCFF0FFFA3FFF0
-:10046000056BFFFFF0A5FFFFFFF07FFFFFFFFEFF23
-:10047000FFFFFBC7FFC4FFFF7FFFECFE7FDFD8B9A4
-:1004800047FC36C1DFFFFFF9FFF3FFF7FFFCFFFD7D
-:100490003FFFFFFF3FFFFFFFF07FFFFFFFFEF5FF86
-:1004A000FFFFFFFEFFFF7EBD3FFF2BFE2FF5A3FCEE
-:1004B0005BFE619F7FEFFFFFA7FBFFFFFAFEFF33AD
-:1004C000F1FFBFFFFFFFFAF07FFFFFFFFEF1C0006B
-:1004D0000000000000000000000000400030240484
-:1004E000000100804000080000000201010002003D
-:1004F00000000000013DF02FFFFFFFFEFDBDFFFDEE
-:10050000FFFFFFFFFFFBFFFF7FF6EFBFF7FF73EB80
-:10051000F1FFFFFFDFFFFFFFFFFFF9FFFDFEFFFF22
-:10052000FFFFFFFFD9F0DFFFFFFFFEF0BF7FFFFF00
-:10053000FF7FFFFFDEFFFFEFDDDE77F2FBEDE7F190
-:1005400073FDFDDFFF7DBEDFFFFBFFEFFFEFFFFF72
-:10055000FFFFFFD0F0BFFFFFFFFEF83020020022B8
-:1005600040C0000000080002410212002187810003
-:100570000080040B2801B000820040000000000051
-:100580000000C1F0DFFFFFFFFEFFFFFFFFFFFDFFE9
-:10059000F7FFFE7FED79FFDEEB7F74F7F7E1F9FF00
-:1005A000F65F7FFFFFFFD7DBEFFFBBFFFFFFCCFF57
-:1005B000FFFFF0CFFFFFFFFEFFFFFFFFFFFFFFFF8B
-:1005C000FFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFF49
-:1005D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
-:1005E000FFF00FFFFFFFFEFFFFFFFD3DCD497F6FD7
-:1005F0002BBA5CD2DAF6F33EF7FFBDF1FADFFEF775
-:10060000CCF6BBA5B3ADBF6F7D6F6BDBDFBDFFFE6F
-:10061000B05FFFFFFFFEBFFFFFFBDB57F6FE9FD57E
-:10062000B7FFAFE53FFFFF6FFFDBF1FDBFFF6F6976
-:100630006CDFDADFCBFFF6FF76FDFDBFFFFFFFD0FB
-:100640003FFFFFFFFEFFFFFFFFFDBD0803894F5A7D
-:100650000FF0FFF8BFFFFFFFFFF15AFFFFFFFFF3AF
-:10066000FAA0F0F2BFFFFFFFFFFFFFFFFFFFF0FF69
-:10067000FFFFFFFEFFFFFFFFFCFD006BFFFF5A0FB8
-:10068000F0FFFFFFFFFFFFFFF15AFFFFFFFFB3F592
-:1006900050F0F0FFFFFFD7FFFFFFFFFFFFF07FFFEE
-:1006A000FFFFFEFFFFFFFDBCFFE4E771FFF9C4F4AD
-:1006B0007F7FCFFFFFFFFFF1FFFFFFFBF773BF144B
-:1006C000FFE6FFFFE17DFFFFE7FFFFFFF03FFFFFDA
-:1006D000FFFEF5FFFFFED2FAFFC4F45CBFFAFFFF96
-:1006E000EC7EBFFFFFFFF1FFFFEFFFFF6BDBFFDFE4
-:1006F000F9FBBFFFF1FFBFFFFFFFFBF0BFFFFFFFF5
-:10070000FEF3C00002000000008200000000800034
-:10071000000000400001000000010820000000006F
-:100720000100010000800200013CF05FFFFFFFFEBE
-:10073000FDBFFFFFFFDFFFFFFFFF7FFFDFFFEFFFDB
-:10074000FFFFFFFFF1FFFFFFFFFFF7FFFBFFFDFFD5
-:10075000FFFFFFFFFFFDFFFFC3F0AFFFFFFFFEF056
-:10076000FFDFFFFFF723FFFFFDFFEFFFFE7F7DF7BA
-:10077000FEFF7F71FFFB7FFFFFFF6EFDF7FDFFBFF9
-:10078000FFBFF9FDFFDFEFF0F0AFFFFFFFFEF83036
-:10079000400100830000000C060804262600000625
-:1007A0000300010000000004007008800020012008
-:1007B000000200300000C1F05FFFFFFFFEFFFFFFFF
-:1007C000FFFF7B3FF7FFD7FEFEFBFE3BFEBDFF2F8B
-:1007D000FF71FFFB7FE7FFF9EFFFD7FAFFB7BBFE23
-:1007E000FFFF74FFF7FFF0CFFFFFFFFEFFFFFFFFEC
-:1007F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
-:10080000F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
-:10081000FFFFFFFFFFF08FFFFFFFFEFFFFFFFFB5B2
-:10082000BD6F7CEB7FFBDBD34BEED6F6B7FDACA107
-:10083000FBDFFEF7F496BDB4C5A5AF6F694F7FBA75
-:10084000DBFFFFFFF03FFFFFFFFEBFFFFFFFDBFF10
-:10085000F6FFF6FFBDBFA5BFFF7D7FEFFFFBF1FDFC
-:10086000BFFF6FFF6B7ADBFFDBDFF6FEB6FDFDBF80
-:10087000FEF7FFD0EFFFFFFFFEFFFFFFFFF42FFFAC
-:10088000FC436BFFFFFF0DFFFC333FF05FF1FFFF09
-:10089000FFFFF9DEF04CFE77AFFFFFEFFFF0FFDB6D
-:1008A000FF5FF0EFFFFFFFFEFFFEF7FFF02FFFFD02
-:1008B000437FFFFFF10FFFFC333FFFAFF1FFFFFF6F
-:1008C000FFF6D7FFBCFDBDFFFFFFFFFFF0FFFFFFFF
-:1008D000FFF0EFFFFFFFFEFFFFFFFFFCFFFFFBF15D
-:1008E000BFFFF9FDCFF270FF1F9FF3F1FFFFFFFF86
-:1008F000FCF7FF139FFCFFFF84F7FFFF47FFFFFF9D
-:10090000F0BFFFFFFFFEF5FFFFFFF1FCFFFEFE79EA
-:100910003FFF1D46CFFFCFFC7BFFF1FFFFFFFFED49
-:10092000F3ABFFCBFFF8FFFCF5FFBFFFFFFFFAF0D3
-:100930008FFFFFFFFEF3C200000000000000010077
-:10094000000020002000000408010000000000203A
-:100950000C0000040100010000800000013CF07F59
-:10096000FFFFFFFEFDBFFFFFFDFEFFFFFFFFFEFFDE
-:10097000DFFFFFF7FFFFFFEFF1FFFFFFFFFFFFEBE1
-:10098000FFDFFFFFFBF77FFFFEFFFFBFDBF0FFFF97
-:10099000FFFFFEF0FFFFFFFFFFDFFFFFFF7FF7FF1F
-:1009A000BFBFCFFFFFFF3EF17FFFFFEFFFFFFFFE67
-:1009B000FFFDFFBFBDFEFFFBF7DFFBD0F09FFFFF9A
-:1009C000FFFEF8302000400180C030000020001001
-:1009D00050882000001301000000000000100000FB
-:1009E00000000180080000A00010C1F0EFFFFFFF31
-:1009F000FEFDEF7FFFFFBFFFF7FFEFFBFD77EFBFD0
-:100A0000F77FFFFFBFD17FFFFFF7FFFFFFFFAFFFC4
-:100A1000DFF7FBFFFDFFFCFFFDFFF0FFFFFFFFFE29
-:100A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
-:100A3000FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFD4
-:100A4000FFFFFFFFFFFFFFFFFFF05FFFFFFFFEFF66
-:100A5000FFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFC6
-:100A6000FFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFA4
-:100A7000FFFFFFFFFFFFFFFFE03FFFFFFFFEDDFF88
-:100A8000FFFFA5FD6F7D6D7F52DF5A4BEEB6EEF294
-:100A9000BBACA15B4DD6F7FEB2BD35B5B5DD6F7F02
-:100AA000E95F52DFBDFFFFF0DFFFFFFFFEBFFFFF8B
-:100AB000FFDBFEF6FFF6FFFDBFFDB5BFF97F6FFF61
-:100AC000DBF1FDBFFF6FFF697FDBFFD3FFF6FEF2B7
-:100AD000FFADBFFFFFFFD0DFFFFFFFFEFFFFFFF512
-:100AE000300FFFFFFD6BCAFFF00FD6BFCF3FFFFFF8
-:100AF000F1FFFFFFCAFEBFFFF005AF0FFFFCF0CF15
-:100B0000F0FFFFFFFFF0EFFFFFFFFEFFFFFFF530FD
-:100B10000FFFFFFC3FCAFF0F0FD6BFFFFFF55FF1CE
-:100B2000FF8BFFC3FFFFFFFFFFFF0FFFFCF0CFF0C6
-:100B3000FFFFFFFFF03FFFFFFFFEFFFFFFFFCFFFC5
-:100B4000FFBF9F3FFEFCFF4FFFFFFFFFFFF7F1FFDF
-:100B5000DFFE7E3F9FF4FC7FFCFFFF3FFF3FFE3F39
-:100B6000FFFFFFF04FFFFFFFFEF5FFFFFBFFFEFF64
-:100B7000FFFFFFBFFBFFF8EDFF8FFFBBFFB1F3EF00
-:100B80008FF7FFFFDBFFFFFFEFBFFD79BFBFFFFF69
-:100B9000FFFBF0DFFFFFFFFEF3C0000000040000DA
-:100BA000000000000000008000040808010100901F
-:100BB000000000040008000000000800040000011C
-:100BC0003CF0DFFFFFFFFEFDBFFFFFFFFFFFFFFF6A
-:100BD000FFFFFFFF9FFFAFDFFFFFFFF1FFFFFFFF03
-:100BE000BFEFFFFFFFEDFFFFFFEFFFBFFFFFFFC303
-:100BF000F03FFFFFFFFEF0FFFDFFFFFFFBFFBBFF2E
-:100C0000FFFF7FF6FF7FFBFDEDFFF1FFFE7FFFFFA4
-:100C1000FF5FFFF7FF7EFFFDFFEFFFFFFFEFF0F04D
-:100C20008FFFFFFFFEF83080000400004002000349
-:100C300000050420000001D0008100200404000011
-:100C4000810408801000C0000000200008C1F06F7F
-:100C5000FFFFFFFEFFFF7FFFFFFFFFF3FDFFEDFC48
-:100C6000FFFF9FFBFDFFFFFFF1FFFF7FFB3EFF9FAD
-:100C7000FFFFFFFFFDF9FFFFFFFDFFFFFFF06FFF2D
-:100C8000FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFF75
-:100C9000FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFF72
-:100CA000FFFFFFFFFFFFFFFFFFFFFFFFF0CFFFFF93
-:100CB000FFFEFFFFFFFDBDFFEF7CEB7FFBDBFADC00
-:100CC000EEF7F6D7F52DA1BBDDEEF754F7FB2CB50B
-:100CD000B4BD6B6FEF6FBBDFFFFFFFF01FFFFFFFC8
-:100CE000FEBFFFFFFFFBFFF6FFF6FFFDBFFFBFEFFD
-:100CF0006FFF6FFADBF1C5BDF56FFF6FCADBFFDB7E
-:100D0000FBF697F6FFFDBFFEF7FFD09FFFFFFFFE4C
-:100D1000FFFFFFFFFFFFFFFF8B7FFFFFE763FFFF8B
-:100D2000FFFC77DFF1DBFFD6A83FFFFF082FF0FFC6
-:100D3000C3FFEBFFFFFFFFFF5FF0EFFFFFFFFEFFD3
-:100D4000FFFFFFFFFFFFFF8BFFFFFFFFFFFFFFFF27
-:100D5000FCFFCFF1DBFFD6A83FFFFF082FF0FFC35A
-:100D6000FFEBFFFFFFFFFFFFF05FFFFFFFFEFFFF57
-:100D7000FFFFFFFFFFFFF5BFFFCAFF9FFFFAB9E7C5
-:100D80009FF381FFFFFC73D7FFFF77FFFDFFFCFFA1
-:100D9000FFFFFFCFFFFFFFF01FFFFFFFFEF5FFFF8D
-:100DA000FFF7DEFFFE7EFFBFFFBFF1B3FFFFE3FBF8
-:100DB000FFE11F7FFFF878FFFB1EFFF7FEE7FFFF55
-:100DC000FFBFFFFFFFFAF04FFFFFFFFEF3C0000081
-:100DD00000000000000000000000500000000400BF
-:100DE00001804040200000080000000003000000D7
-:100DF000800000013CF0AFFFFFFFFEFDBFFFFBFFE7
-:100E0000FFFFFFFFFFFEFFFFFFFFFFFFFFEFF7F119
-:100E1000FDFFFFFFDFFFEFFFFFFFFFFFFFFF7FFF94
-:100E2000FFFFFFDBF08FFFFFFFFEF0FFDFFFFF7F25
-:100E3000FFFFFFBED7FFEDBD7EBFFEF67FBF71FF98
-:100E4000FFDAFFF9FFBF7FFEFF6F7FFFFFFFFFFFAE
-:100E50007FFFD0F0CFFFFFFFFEF830420000000020
-:100E600080C100009000C400001220432281840051
-:100E700000140001000880000200020004020000CB
-:100E800010C1F01FFFFFFFFEFFFFFDFFFFDDFEFFB4
-:100E9000B676E5BCF9F7AF5FBFFCDFCFF1FFEF79C6
-:100EA000FFBDFFEFFFFFF76F5FFFFFFDEFEFBFFF3E
-:100EB000FFF09FFFFFFFFEFFFFFFFFFFFFFFFFFFB2
-:100EC000FFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFF40
-:100ED000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
-:100EE000F0FFFFFFFFFEDBFFFFFD2DFF692AEF771D
-:100EF000BBDD5ADFF6F6D6F77DBDD1B24AD6B2BE1B
-:100F000097F5BDB3ADFFEF7F696BFBDFFFFFFFF030
-:100F10002FFFFFFFFEBFFFFFFFDBFFF6FE9FD4BFEB
-:100F2000EDAFFF6B6FF7FFDDDB31FDBFFF6F7FFFC5
-:100F3000FFDBFFCBDFF6FFF6FFFDBFFEF7FFD08F35
-:100F4000FFFFFFFEFFFFFFFD1FFF462F9FFFFFFF7D
-:100F5000A5FFFFFFDFB7FFFFF1FFFFFFF7E96ABF64
-:100F6000FFFFFDFFFFFD5557FFFFFFFFAFF04FFFF6
-:100F7000FFFFFEFEDFFFFD1FFF462F9FFFFFFFA5C8
-:100F8000FFFFFFC037FFFFF1998EDC7FE96ABFFFEB
-:100F9000F00FFFFFFD5557FFFFFFFFFFF00FFFFFB3
-:100FA000FFFEFFFFFFFF07FFC0BEFFFFCFEF9FFF6A
-:100FB000FFFBFFE7FFFFA1E3CE3C583FF3FFFDEF50
-:100FC000F9FFFFF7F17FFFCBFFFFFFF02FFFFFFFE0
-:100FD000FEF57FFFF0FFFEFFC475E7B9FFFFFFEFEF
-:100FE000FFC7373BFFF0139E0FF4FFFEFBFFFFF937
-:100FF000FCFFFFFFFFBFFFFFFFFAF0EFFFFFFFFE69
-:10100000F3C0010000020002220000C040004000C6
-:101010000408040A0101102020000004080804004C
-:1010200000000000010000013CF0CFFFFFFFFEFDCB
-:101030003FFFFFFFFFFFFF7FFF7FFF7FFFCF9DFF92
-:10104000FFF7FDF1FFFFFFEEBFFFFFFFFFFEFFFF1A
-:10105000FFFFFFFFFFFFFFDBF06FFFFFFFFEF0FF73
-:10106000FFFFF7F7FFFFFEBFF7FFFF5BFFBFF7FFD5
-:10107000FD7F71FDFFEDF7FEEFFFFF7FFFFFFFFF3D
-:10108000FFFFEFFF7FFFD0F0FFFFFFFFFEF8301103
-:10109000004860408260246000CC008004010000B1
-:1010A00014010C0400300000000808000100C20018
-:1010B0000002008000C1F05FFFFFFFFEFFFFFFFFA7
-:1010C000F77BFFF3EBBFFFF7FFFFFFE75D3FFFF6A7
-:1010D000D1FDFFEBF73DFFFFFF5FFF7F7FF3FFFFDA
-:1010E000EFFDBFFFFFF05FFFFFFFFEFFFFFFFFFF12
-:1010F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10E
-:10110000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
-:10111000FFFFFFFFF0DFFFFFFFFEFFFFFFF5B5DF83
-:101120006F7D697FFBDF525FF6F7FEF6F3BDB1DA44
-:10113000CDFEF6EED2BDA5AFBDFF6F7CEB2BFADA8C
-:10114000FFFEDFF04FFFFFFFFEBFFFFFFFDBFFF6FD
-:10115000FFF6FFBDBFCDBFEB6FF76FDFDB51FDBD0E
-:10116000FF6FFF6FFB5BFFDBFFF6FEF6FDFDBFFED3
-:10117000F7FFD0FFFFFFFFFEFFFFFFFA50FFFFFF6B
-:10118000F06FFFFFF096FFFFC62BFFFFF1FCFFFFA4
-:10119000F7DBC3FF00FFFFFFFFFFC14FC3FFFFFFF0
-:1011A000AFF09FFFFFFFFEFFFFFFF5A0FFFFFFF087
-:1011B0006FFFFFF096FFFFC62BFFFFF15AFFFFFF07
-:1011C000F3C3FF00FFFFFFFFFFC14FC3FFFFFFFFA0
-:1011D000F0CFFFFFFFFEFFFFFFFFFCFFFF9FF07F51
-:1011E000FFF9FC4FF3FF27EBFFFC81FC7FFE7BFF49
-:1011F000F7FF127FFFFFFFFF18FFFFFFFFFFFFF06A
-:101200007FFFFFFFFEF5FFFFFFDFFEFFFC7E7FBFDE
-:10121000FFFFAFEFFFDFDFFBFFF1C3FE6FF1CF3F5B
-:10122000FBFFFFCFFEFFFFFE7FBFFFFFBFFAF0DF38
-:10123000FFFFFFFEF3C000000100000000010000FE
-:10124000200001001000000001000200000000006A
-:101250000000000200008000028000023CF02FFF2E
-:10126000FFFFFEFDBFFFFBFDFFFFFFFFFFFFFFFFD7
-:10127000FFFFFFFFFFFFF5F1FF7FFFFFFFFFEFFF26
-:10128000FFFFFFFFFEFFFFFFFFFFFFDBF02FFFFF72
-:10129000FFFEF0FFFFFFFBFFBFFFFFFFFFF7BFFBFE
-:1012A000FFFFFFDFF7FFF1F7BFFBFFFFFF7FDEFF71
-:1012B000FFFFFFFFFFEDF7FFFF7FD0F03FFFFFFFD6
-:1012C000FEF830000000004000000000E000008058
-:1012D0002001019200010100E01C6020300808009C
-:1012E000000000000000008000C1F06FFFFFFFFE63
-:1012F000FFFFFFFFFFDBFEFFFFDFFFFC7FFBBFFF0A
-:10130000FFFFFFFFF1F6FFF77E3FFF7FFFFFFFF7D5
-:10131000FFFFFFEDFFDFFFB7FFF03FFFFFFFFEFF27
-:10132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
-:10133000FFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFCB
-:10134000FFFFFFFFFFFFFFFFF0FFFFFFFFFEFFFFBD
-:10135000FFFFFFFFDFFFFFFFDFFFFFFFFFBFFFDF3D
-:1013600057EFF1FDFE7FFFFFFFFFFFFFFFDFFBFFFA
-:10137000FFFFFFFFFFFFFFF07FFFFFFFFEFFFFFF0D
-:10138000FFFFFF7FFFFFFFFFFFFFFFFFFBFFDFFF11
-:10139000FFF1FDFF7FBFFFFFFFFFFFFFFFFFFFFF2D
-:1013A000FFFEFFFFFFFFF09FFFFFFFFEF7FDFFFFC8
-:1013B000FFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFF7D
-:1013C000F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
-:1013D000FFFFFFFFFFF06FFFFFFFFEFFFFFFFFFFBD
-:1013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11B
-:1013F000FFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-:10140000FFFFFFFFF0CFFFFFFFFEFFFFFFFFFFFF2C
-:10141000FFFBFFFFFFFEFFFFFB6FFFFEBFFFF1FFC4
-:10142000F7FFFF7FFFFFFFFFFFFFFFFFFFFFFFFD56
-:10143000FFFFFFF0EFFFFFFFFEFFFFFFFFFFFFFFDC
-:10144000FBFFFFFFFEFFFFFF57FFFDBFFFF1FFEFB9
-:10145000FEFFBFFFFFFFFFFFFFFFFFFFFFFFFEFFDE
-:10146000DEFFF0CFFFFFFFFEFFFFFFF7DBFFDBFD3F
-:10147000F6FFF6FF3CBCBCBFDF6FE72FF13CBFFDC2
-:10148000BFDF6FFF6FF7DBFFDBFDF6FFF6FFFFFF50
-:101490000201DFFFFFFFFEFFFFFFFFFFFFFFFFFF78
-:1014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
-:0614B000FFFFFFFFFFFF3C
-:00000001FF
-/*
- *
- * File yam111.mcs converted to h format by mcs2h
- *
- * (C) F6FBB 1998
- *
- * Tue Aug 25 20:23:03 1998
- *
- */
diff --git a/firmware/yamaha/ds1_ctrl.fw.ihex b/firmware/yamaha/ds1_ctrl.fw.ihex
deleted file mode 100644
index aa9b1d7dcb0b..000000000000
--- a/firmware/yamaha/ds1_ctrl.fw.ihex
+++ /dev/null
@@ -1,769 +0,0 @@
-:10000000070000000700240007000C0007001C0088
-:1000100007000600020070002000000040000300FE
-:100020000471000086420000400003000D0F000034
-:10003000100800003A042000820200000D020000B7
-:10004000100800003A04200082120000820E2000F6
-:10005000821A00000D2D0300100800003A04100061
-:100060008DD30200100800003A0418000D010000B2
-:1000700015000200FD000000200000006088030061
-:100080006090030060800300408003004080030014
-:1000900040800300408001007D0A00004080030092
-:1000A000408003004080010002042000820800001C
-:1000B0001A0008000409000086590100070000002A
-:1000C000070026000700000007000000068A010064
-:1000D000070000008D0C0300100800003A0418000F
-:1000E000070026007D080000428001000A1600007B
-:1000F00006A20400070000008D2100001008000087
-:100100003A04080006C2210007000000FD070000B5
-:10011000428001000A0008000409000086930200E2
-:1001200095010000040D09000700000020080000F0
-:10013000F50000007D0B000060F00100FD000000F4
-:1001400006220300408001007D0A00004280030077
-:100150004A8013000A001800201800006090050073
-:100160006088050040800100FD0000004280010021
-:100170000A007000150100004411070086230300E7
-:100180000000030020700000064A030040800100C8
-:100190008D340000100800003A04080006EA21002F
-:1001A000070000008DD30200100800003A04180078
-:1001B0000682010007000000070024008D0F0000E8
-:1001C000100800003A16000002240000025C000043
-:1001D000FD28000020000000408001000D00080004
-:1001E0001508000084095100070000004D000000C0
-:1001F0005D0E0000020E00008D410000100800009E
-:100200003A040800068A2C00070000008D00000058
-:1002100024090000020F00008D45000010080000B6
-:100220003A040800068A2C00070000007D38000010
-:10023000428001000A000800151000008409010036
-:10024000868301000700000006AA010007000000E5
-:10025000FD080000428001000A0018000419000097
-:100260008680210007002800101800003A042800AA
-:10027000020C28000D000000100800003A142800AD
-:100280008D80080020080000FD0200004080010071
-:10029000070020000D02000004991800070000006C
-:1002A0002D400000BD000000FD0200004280010062
-:1002B0000A00080004090000865A05000700000033
-:1002C00000010000200A00007D04000040800100C1
-:1002D000428001000A002000153000004421010086
-:1002E000864903000700000004210000864903003E
-:1002F000070000008D0F0000100800003A0C2800D5
-:100300004439020086C906000700000010180000EA
-:100310003A0428000D81080020080000FD020000BA
-:100320004080010007002000102800003A007800FB
-:100330008D680000100800003A040800068A2800B2
-:10034000070000000D40000015100000049918007F
-:1003500004292900043939000700000006020600BC
-:1003600007000000F50400007D00000020000000F0
-:100370008D00000060080100408001007D04000045
-:10038000428003004A8021000A001800441902003C
-:1003900086582100070000007540000004F171003C
-:1003A00007000000420001000A00280004290000A4
-:1003B00086202100070000000D3C000004A9300049
-:1003C000070000007D070000428001000A000800CD
-:1003D0000409000086DA07007D05000020280000DF
-:1003E00060B0030006F207004080010020300000EA
-:1003F00060A8030040800100FD020000428001006F
-:100400000A0008000409000086FA0700070000003F
-:100410007D050000428001000A0428008D0E0000C6
-:10042000100800003A0C28000D0000001008000021
-:100430003A1428000D00090020080000FD02000009
-:100440004080010007002000FD3D0000200000006A
-:10045000408001007D1000008D8D0000100800001C
-:100460003A040800068A280007000000150800006A
-:100470001A00080084090100865109007D1300005C
-:1004800000052000200F2800608F3300608F3B00A4
-:10049000608F4300608F4B00608F5300608F5B0064
-:1004A000608A030040800100BD7F0000C43D380029
-:1004B000070000007D1A0000751300004280010053
-:1004C0004A0009000A001000048D0B000495130077
-:1004D00007000000200800006090010004110000E7
-:1004E0008620210040000100FD170000428001002D
-:1004F0000A0008000409000086222100070000000D
-:100500007D190000428003004A8009000A001000A3
-:100510002409000064160000FD1100004280030061
-:100520004A802B004A8019008D0000004489210078
-:10053000070000004422000086E10A0007000000D6
-:10054000641A0000242A00007D190000020108003E
-:10055000220110002008000060900300408001008C
-:10056000FD3D00008D0000002008000040800100DB
-:10057000751300007D1A0000420001004A80090046
-:100580000A0010001D020000E4890100E492290025
-:1005900044913000070000000D060000150A00001D
-:1005A0001D0C000025100000E4A90000E42B010050
-:1005B00064040000E4B30100E432020064040000BB
-:1005C0006404000064040000640400000D040000E2
-:1005D000C4B108000700000020080000F50B00006F
-:1005E000400003007D190000428003004A8009009A
-:1005F000240A00000A000800640E0800070000003A
-:1006000022011000200800006010030040000100DB
-:10061000AC6400007D02000020000000408001006A
-:100620007D10000042800100FD1100004A803B0067
-:100630004A8009000A0020009500000044111A00B9
-:1006400044A1000086200D000D04000084B90000C4
-:1006500086210D00FD18000042800100FD10000001
-:100660004A8009000A0028009500000024090100C2
-:10067000642A000086110D00070000000429000014
-:1006800086220D0007000000062A0D000200080067
-:100690008D0000007D38000020080000408001002F
-:1006A0007D120000428001000A00100004390000A1
-:1006B00086D10D000D080000B5FF7F0084B9000051
-:1006C00086A10D0025000000067A0E002D00000016
-:1006D000150000002D0800008DC702002008000052
-:1006E00006C20E000D00000035807F0084B90000B6
-:1006F00086710E00250040008D00000044091100A5
-:10070000070000008D0100000495100007000000A4
-:10071000649100002404000024040000240400006C
-:1007200002011000020028008DC60200200800000F
-:1007300006C20E008D0100002D0400008D00000097
-:1007400004951000070000000D02000084911000C5
-:10075000070000000DC70200200800008D00000007
-:10076000FD38000040800100FD3B0000201000002B
-:1007700060A80300150800008431310084212100A5
-:100780000700000060B0030060A00300408001008B
-:10079000FD2200009500000024090100240400004F
-:1007A0002404000064120000020110002008000070
-:1007B0006090030040800100241900008DFB0000C0
-:1007C0007D390000200800004080050042800300C1
-:1007D0004A840900060600000A04080024040000F8
-:1007E000240400007D110000428001000A0008007E
-:1007F000240A000002052800020C28000D800900D0
-:1008000020080000FD0200004080010007002000D9
-:10081000FD220000428001000A000800950000004F
-:10082000C40D2800241901007D1900004280010038
-:10083000FD1100004A8009000A001000B500000008
-:1008400044311100048D0A0007000000440A08002A
-:100850000495120007000000FD2300002010000096
-:100860004080030044121000070000002008000030
-:100870006090030040800100FD0200004280010002
-:100880000A0008000409000086FA100007000000B2
-:10089000FD3B000000010000100A00007A800B0000
-:1008A0004A80130084090900070000009500000039
-:1008B000043D0100868011000A00100002001000B3
-:1008C0008409090007000000428003004A801100EB
-:1008D000040D0900070000000A001000840D090043
-:1008E000070000007D250000200800004080010076
-:1008F0000D010000100800003A1428007D120000CD
-:10090000428001000A0020007D19000042800100A1
-:100910007D1100004A8031000A00100024310000DF
-:100920000D2801007D3900002008000040800500EE
-:10093000428003004A840900060600000A040800F9
-:1009400002013000243100002404000024040000CF
-:1009500024120000020528004C1A00008601130032
-:10096000020070002D000000000003007D38000030
-:10097000428001000A001000062A13002421000012
-:10098000AD000000020010000D010000240900006D
-:10099000246B00008D3601007D3900002008000026
-:1009A00040800500428003004A84090006060000DA
-:1009B0000A040800643200008D000000240A0000D0
-:1009C000201000007D220000408001000D3C01004D
-:1009D000100800003A04080006D2290007000000B1
-:1009E000202800007D200000408001007D110000D3
-:1009F000428003004A8013000A8033007D380000E3
-:100A0000428001000A00080004090000863A16002E
-:100A1000070000008D000000640903008D470100FD
-:100A20007D3900002008000040800500428003005E
-:100A30004A840900060600000A0408000201380082
-:100A4000240400002404000024120000FD02000021
-:100A5000428001000A0008000409000086A2140078
-:100A600007000000020528004C1A00008639160015
-:100A700007000000642103002C630000FD3D00001E
-:100A8000428001000A0008009500000004090900E6
-:100A900007000000200800004C1A000086611500C5
-:100AA0004080010000000300067A150024210000A8
-:100AB0000D01000024090000246B00008D5B010083
-:100AC0007D390000200800004080050042800300BE
-:100AD0004A840900060600000A040800643A00007F
-:100AE0009500000024120000FD0200004280010079
-:100AF0000A0008000409000086DA1500070000005B
-:100B00008D620100100800003A04080006D2290096
-:100B10000700000006D2140007000000207000004B
-:100B20000A0108002A011000FD200000608803006F
-:100B300060900300408001007D220000428001009F
-:100B4000FD3D00000A0008004A843100040900004D
-:100B500086D816008B0018008D000000049918003C
-:100B60002C31000006AA1700070000004C320000DC
-:100B700086331700070000000419000086301700B4
-:100B80000700000095000000449119002C2200008D
-:100B9000243100006C6300003D0E0000751300005E
-:100BA000FD0B0000420001004A8009000A0010000D
-:100BB000EC8A0300EC9303004C22000086A9170086
-:100BC000070000008D000000049918006C2200004E
-:100BD0002C3200000A053000AB1D300083200000DD
-:100BE000FD180000428001000A000800248901006D
-:100BF000020530008310000075180000420001005B
-:100C00000A0010008D000000240901007513000087
-:100C100042053300CB0C3300CB2C3300CB343300F4
-:100C2000CB3C3300CB443300CB4C3300CB543300AC
-:100C30008B5C300083600000F50200004200010080
-:100C40000A00080004090000867A18000700000066
-:100C50002D1E0000FD050000428001000A00080072
-:100C600024890200020528000D060000100800007B
-:100C70003A0C28008D000000100800003A142800EB
-:100C80008D800A0020080000F502000040000100ED
-:100C90000700220075120000420003004A002100F4
-:100CA0008D00000044091A00070000000D980100A3
-:100CB000100800003A04080006222B00070000007C
-:100CC000F5010000420003004A000D000A00100078
-:100CD00044910800070000002008000040000100C7
-:100CE000F525000044310A0007000000200800003C
-:100CF00060280300400003007D21000042800300C3
-:100D00004A800B000A001000200800006010030059
-:100D1000400003008D000000240100002C010000B1
-:100D2000640E0000641A00006C6300000A010800F1
-:100D30002A0110002008000060100300400003009A
-:100D4000FD200000428001000A0008007D22000012
-:100D5000428001000A00100020080000601003001B
-:100D6000400003007D190000428001000A000800D5
-:100D7000FD220000428003000A001000200800004D
-:100D80006010030040000300040D0900070000008C
-:100D90002008000040000300428003004A800B004E
-:100DA0000A0010002008000060100300400003004B
-:100DB000428003004A8013004A801900040D11008C
-:100DC000048D1900070000000A0008002010000030
-:100DD0006018030060080300400003008D0000005D
-:100DE00044090B000700000020080000400001003B
-:100DF000F5050000420003000A000800200800007A
-:100E000040000100F5000000420001000A00080057
-:100E10000409000086601C00751E000042000300EB
-:100E20004A0401000A0C000006721C0007000000C2
-:100E300002040000020C00007D170000F51A0000FB
-:100E4000428001004A1403004A1C03004A240300A4
-:100E50004A2C03004A3403004A3C03004A4403007E
-:100E60000A4C00003D040000F5130000FD1A0000CC
-:100E7000420003004A000B004A801B004A80130016
-:100E80000A0020004491080044A11900E4890300ED
-:100E9000EC990300025500000A5D000042000300C7
-:100EA0004A000B004A801B004A8013000A00200001
-:100EB0004491080044A11900E4890300EC9903005F
-:100EC000026500000A6D0000420003004A000B00AA
-:100ED0004A0019004A802B004A8013004A802100F2
-:100EE0000A0030004491080044A1190044B12A00CE
-:100EF000E4890300EC990300027500000A7D0000FC
-:100F0000E4A90300020700007D10000015040000A2
-:100F1000428001000A000800E4090100020F0000FD
-:100F2000F52A0000FD190000420001004A80090076
-:100F30000A0010003409000074160000F5290000B2
-:100F4000420001000A0010007C91000075200000A2
-:100F5000420001000A0008000409000086D21E00B9
-:100F6000F5260000F5270000420003004A000900B2
-:100F70000A0010003C0A00007C160000751A0000F0
-:100F8000FD0B0000420001004A8051000A004800A9
-:100F90000700160075100000420001000A2C28000E
-:100FA000121D280012252800321F000007001E0015
-:100FB00007000E007519000042000100F52D000029
-:100FC0004A000D000A0010004491000086B21F0084
-:100FD000420001000A3428005D0E00008D00000070
-:100FE000750300002008000040000100F4D2050055
-:100FF00004D154005C7300008653200007000000F9
-:1010000007000C000700080007000A000D0402009A
-:10101000100800003A040800062233000700000010
-:10102000065A200007000000070008007522000093
-:10103000420001000A002000042100008620210057
-:101040002D1E0000F5020000420001000A00080009
-:101050000409000086922000070000001020000014
-:101060003A0430007D050000C38001000A0008003A
-:101070002489020002052800020C28000D810A00C4
-:1010800020080000F50200004000010007002200D7
-:10109000FD040000428001000A007000000003000F
-:1010A0002070000006FA0600408001000D180200C2
-:1010B000100800003A04080006222B000700000078
-:1010C000FD020000428001000A000800040900003F
-:1010D000868A21000700000006F2010007000000D8
-:1010E00075080000FD0900000D010000060A22003D
-:1010F00095020000750B00007D0900000D00000046
-:1011000015050000420001000A0018000419000043
-:1011100086782800F506000020100000400001003D
-:10112000F5040000200800004000010075070000E1
-:10113000420001004A8009000A001000241100004A
-:101140000409000086BA2200150800000201080008
-:101150000412100006DA22007505000004120800CF
-:1011600007000000020110007505000025040000C2
-:10117000241102000201100020080000601003008A
-:101180004000010024190000867828008D0000002E
-:1011900064040000049D00008688270002011800F6
-:1011A00075050000420001000A0428008D010000BE
-:1011B00024090000020D28000D0000002409000091
-:1011C000021528000D00100020080000F5020000A4
-:1011D000400001000700200075110000FD02000022
-:1011E000428001000A0008000409000086C22300B2
-:1011F0000700000000010000200B0800600B130036
-:10120000600B1B00600A0300400001004200050063
-:101210004A003D004A0035004A002D000A00200027
-:10122000F5060000420001000A142800F504000041
-:10123000420001000A00080015030000040D01002F
-:1012400086CA24001540000095000000040D01002E
-:1012500086B82400220010002A00100006E22400B4
-:10126000070000000431330004A92A000700000031
-:10127000242103000205280024110000240400009A
-:1012800024040000243200002C2900006C630000BC
-:1012900086F325000700000064B10200640400002A
-:1012A000640400008D000000640A0000020D2800A4
-:1012B0008D00100020080000F50200004000010031
-:1012C000070022008D00000004B93800070000006C
-:1012D0006C2903000A013000F50200004200010001
-:1012E0000A0008000409000086BA25000700000073
-:1012F0002C3102000A0528008D0000006C09010055
-:101300000A0D28000D01100020080000F502000061
-:101310004000010007002200241100002404000006
-:10132000240400002432000002013000442903009C
-:10133000867A26000700000002003000F504000055
-:10134000420001000A00080015030000040D01001E
-:1013500086C0260024310000640400000201300031
-:10136000F5020000420001000A0008000409000024
-:1013700086CA260007000000243100000205300064
-:10138000243900008305300083080000F5050000C3
-:10139000420001000A0428008D00000024810000A2
-:1013A000020D28008D000000248100000215280095
-:1013B0008D01100020080000F5020000400001002F
-:1013C0000700220025100000750500004200030000
-:1013D0004A0009000A00100004090A000411120062
-:1013E0000700000020100000600805004000050014
-:1013F000FD060000428001004A0009000A001000BA
-:10140000A500000004090A000411120007000000F2
-:10141000200800006090010040000100F50200007B
-:10142000420001000A00080004090000864228006A
-:1014300007000000060A230007000000060600005F
-:1014400007000000F5020000420001000A00080049
-:101450000409000086922800070000000001000037
-:10146000200B0800608B1300608B1B00608B230037
-:10147000608B2B00608B3300608B3B00608B4300E4
-:10148000608B4B00608B5300608B5B00608B630054
-:10149000608B6B00608B7300608B7B00608F030040
-:1014A000608F0B00608F1300608F1B00608F230024
-:1014B000608F2B00608F3300608F3B00608F430094
-:1014C000608F4B00608F5300608F5B00608F630004
-:1014D000608F6B00608F7300608F7B00608A0300F9
-:1014E00006060000408001008D000000640A000034
-:1014F000020D2800240A00007D0200004280010045
-:101500000A00100024120000FD03000042800100C8
-:101510000A0008000409000086822A000700000073
-:101520008D010000240A000064040000640400002F
-:101530000201080024090000240400002404000023
-:10154000020110000D0002004491000086D92A001B
-:1015500007000000FD010000428001000A000800B1
-:10156000440A000086BB2A00428001000D000A00E8
-:1015700020080000FD02000040800100070020005C
-:101580007D020000201000000606000040800100DF
-:10159000F5020000420001000A00080004090000F2
-:1015A000862A2B00070000007D0300004280010016
-:1015B0000A00080004090000865A2B0007000000FA
-:1015C000750000007D2E0000420001004A800B00E3
-:1015D0002000000004090000860600004000010011
-:1015E0004A8431008B043000830800008D00000025
-:1015F000100800003A1428008D00000010080000B8
-:101600003A0C280075060000420001000A0008009C
-:101610001538000024090100020528000D000B0008
-:1016200020080000F502000040000100060600004E
-:1016300007002200640400006404000006060000A5
-:1016400007000000340100008D7F00003C0900000D
-:10165000121D280012252800321F000007000E006E
-:101660000D0100007D030000200800004080010003
-:10167000F4D2050007000000070008007D03000009
-:10168000428001000A0008000409000086022D00C3
-:101690000700000006060000070000000700000029
-:1016A0001200000007001000070032000700600071
-:1016B000800010001A0048000449000086612D00D7
-:1016C00007000000101200003A0058004501000019
-:1016D000045D5C0007000000800000001A00480064
-:1016E0000449000086B12D00070000001012000020
-:1016F0003A0050000459000086082E004500000002
-:10170000C5000000F5FF7F007DFF7F0024D50700A6
-:101710002442000002015000020520008200000067
-:101720001A0040000441000086392E000700000026
-:10173000653800001A004000204000004D100000F5
-:1017400084C10400861B3000400000000700040034
-:10175000650100004501000020400000400000003D
-:1017600065070000800008001A00400004410000E6
-:1017700086C92E0007000000101200003A00400049
-:101780000441000086222F004D000000CD00000023
-:10179000104800003A042000820800001A004000AF
-:1017A0000441000086312F0007000000204800009F
-:1017B000045900008608300040000000E5070000E2
-:1017C00080042000A0162800E0163200E0163A003F
-:1017D000E0164200601202004000000032000000EB
-:1017E000750040007D00000074D507001205200040
-:1017F000820000001A0040000441000086E12F0032
-:1018000007000000067203000700640007000600DE
-:10181000E50000002000000040000000650A000014
-:1018200020000000400002004000020040000000D4
-:1018300065010000420000000A0070000471000011
-:1018400086A2300007000000068201000700640045
-:101850000000050020700000400000000672030038
-:1018600007006400070000006D300000608802007F
-:10187000609002000A0008006088020040800000BA
-:10188000120010000D10000084910000864131000C
-:101890000D0E000084910000865132000700000008
-:1018A00007003000201000006D3B00004080000069
-:1018B000800000001A000800040900008661310061
-:1018C0000700000020120000ED0D00004080000025
-:1018D000428000000A0010000D00400044951000F6
-:1018E0000700000020100000ED0D00004080000007
-:1018F000428000000A042000820000001A00080054
-:101900000409000086F13100070000006D3B000073
-:10191000428000000A000800150E00008409010042
-:10192000869B3200070060001A000800150C0000BA
-:1019300084090100868332002000000007001A009D
-:10194000ED02000040800000070062006D300000E2
-:10195000428002004A800A00200800004A800A00F3
-:10196000060600004A80100007000000122528002B
-:10197000321F0000F4D2050004D154005C73000053
-:10198000860700000700000007000C0007000A009F
-:1019900007001C00653400004000020020480000E1
-:1019A000605002000A004000604002004000000059
-:1019B000444945000700000020400000E53A0000CF
-:1019C00040000000E5280000420000000A00480036
-:1019D0000449000086683800652C000042000000C1
-:1019E0000A004000D5000000044145000700000047
-:1019F000550600000445050086F23400D5010000BC
-:101A00000445050086F03400652B0000420000000C
-:101A1000E53A00004A0050000A004000D4C34500E7
-:101A2000070000000445450007000000CD0000004D
-:101A30004449440007000000044545000700000039
-:101A40004D010000444955000700000044510400C6
-:101A500086E93400652C0000420000000A004800BE
-:101A600004D14C000700000044C1040086F3340098
-:101A70000700000007001600E52C000042000400EB
-:101A80000A004000204000004000000065290000DE
-:101A9000420000000A00400004410000866035005A
-:101AA000070000000224000006A23600025C0000CD
-:101AB000E5250000420000000A00400074420000DA
-:101AC000E52A0000420000000A00400074420000C5
-:101AD00012015000E5290000420000000A00400009
-:101AE000344200000441450007000000204000008F
-:101AF00040000000E53E0000200000004000000023
-:101B0000E52D0000520140000A005000445104003D
-:101B1000864A3600C5000000E53E00002040000077
-:101B200040000000E52B0000420000000A004000D9
-:101B30005442400007000000E52A00002040000059
-:101B400040000000320150003401040074560000CF
-:101B5000E5290000420002000A00420042000000A5
-:101B60000A0050007C410500E5280000420000000A
-:101B70000A004800C500000044C14C008610370030
-:101B8000E5260000E5270000420002004A00400070
-:101B90000A0050003C4200007C560000E52800008E
-:101BA0002048000040000000121D280012252800D7
-:101BB000721F000065290000420000000A0040007A
-:101BC0000441000086AA370007000E000700160037
-:101BD00007001E00E53E0000420000000A00400031
-:101BE0000441000086E83700652D00004200000037
-:101BF0000A34280065340000420002004A00420016
-:101C0000204000004A004A004A005000F4D205007B
-:101C100004D154005C7300008651380007000000B6
-:101C2000060600000700080007000C000700080077
-:101C300007000A00E5010000450002002040000006
-:101C4000600000006503000040000000652E0000F9
-:101C5000201A0000601A0A004000000065340000ED
-:101C6000420002004A004200204000004A004A00B0
-:101C7000060600004A0050000000000000000000BE
-:101C80000000000000000000000000000000000054
-:101C90000000000000000000000000000000000044
-:101CA0000000000000000000000000000000000034
-:101CB0000000000000000000000000000000000024
-:101CC0000000000000000000000000000000000014
-:101CD0000000000000000000000000000000000004
-:101CE00000000000000000000000000000000000F4
-:101CF00000000000000000000000000000000000E4
-:101D000000000000000000000000000000000000D3
-:101D100000000000000000000000000000000000C3
-:101D200000000000000000000000000000000000B3
-:101D300000000000000000000000000000000000A3
-:101D40000000000000000000000000000000000093
-:101D50000000000000000000000000000000000083
-:101D60000000000000000000000000000000000073
-:101D70000000000000000000000000000000000063
-:101D80000000000000000000000000000000000053
-:101D90000000000000000000000000000000000043
-:101DA0000000000000000000000000000000000033
-:101DB0000000000000000000000000000000000023
-:101DC0000000000000000000000000000000000013
-:101DD0000000000000000000000000000000000003
-:101DE00000000000000000000000000000000000F3
-:101DF00000000000000000000000000000000000E3
-:101E000000000000000000000000000000000000D2
-:101E100000000000000000000000000000000000C2
-:101E200000000000000000000000000000000000B2
-:101E300000000000000000000000000000000000A2
-:101E40000000000000000000000000000000000092
-:101E50000000000000000000000000000000000082
-:101E60000000000000000000000000000000000072
-:101E70000000000000000000000000000000000062
-:101E80000000000000000000000000000000000052
-:101E90000000000000000000000000000000000042
-:101EA0000000000000000000000000000000000032
-:101EB0000000000000000000000000000000000022
-:101EC0000000000000000000000000000000000012
-:101ED0000000000000000000000000000000000002
-:101EE00000000000000000000000000000000000F2
-:101EF00000000000000000000000000000000000E2
-:101F000000000000000000000000000000000000D1
-:101F100000000000000000000000000000000000C1
-:101F200000000000000000000000000000000000B1
-:101F300000000000000000000000000000000000A1
-:101F40000000000000000000000000000000000091
-:101F50000000000000000000000000000000000081
-:101F60000000000000000000000000000000000071
-:101F70000000000000000000000000000000000061
-:101F80000000000000000000000000000000000051
-:101F90000000000000000000000000000000000041
-:101FA0000000000000000000000000000000000031
-:101FB0000000000000000000000000000000000021
-:101FC0000000000000000000000000000000000011
-:101FD0000000000000000000000000000000000001
-:101FE00000000000000000000000000000000000F1
-:101FF00000000000000000000000000000000000E1
-:1020000000000000000000000000000000000000D0
-:1020100000000000000000000000000000000000C0
-:1020200000000000000000000000000000000000B0
-:1020300000000000000000000000000000000000A0
-:102040000000000000000000000000000000000090
-:102050000000000000000000000000000000000080
-:102060000000000000000000000000000000000070
-:102070000000000000000000000000000000000060
-:102080000000000000000000000000000000000050
-:102090000000000000000000000000000000000040
-:1020A0000000000000000000000000000000000030
-:1020B0000000000000000000000000000000000020
-:1020C0000000000000000000000000000000000010
-:1020D0000000000000000000000000000000000000
-:1020E00000000000000000000000000000000000F0
-:1020F00000000000000000000000000000000000E0
-:1021000000000000000000000000000000000000CF
-:1021100000000000000000000000000000000000BF
-:1021200000000000000000000000000000000000AF
-:10213000000000000000000000000000000000009F
-:10214000000000000000000000000000000000008F
-:10215000000000000000000000000000000000007F
-:10216000000000000000000000000000000000006F
-:10217000000000000000000000000000000000005F
-:10218000000000000000000000000000000000004F
-:10219000000000000000000000000000000000003F
-:1021A000000000000000000000000000000000002F
-:1021B000000000000000000000000000000000001F
-:1021C000000000000000000000000000000000000F
-:1021D00000000000000000000000000000000000FF
-:1021E00000000000000000000000000000000000EF
-:1021F00000000000000000000000000000000000DF
-:1022000000000000000000000000000000000000CE
-:1022100000000000000000000000000000000000BE
-:1022200000000000000000000000000000000000AE
-:10223000000000000000000000000000000000009E
-:10224000000000000000000000000000000000008E
-:10225000000000000000000000000000000000007E
-:10226000000000000000000000000000000000006E
-:10227000000000000000000000000000000000005E
-:10228000000000000000000000000000000000004E
-:10229000000000000000000000000000000000003E
-:1022A000000000000000000000000000000000002E
-:1022B000000000000000000000000000000000001E
-:1022C000000000000000000000000000000000000E
-:1022D00000000000000000000000000000000000FE
-:1022E00000000000000000000000000000000000EE
-:1022F00000000000000000000000000000000000DE
-:1023000000000000000000000000000000000000CD
-:1023100000000000000000000000000000000000BD
-:1023200000000000000000000000000000000000AD
-:10233000000000000000000000000000000000009D
-:10234000000000000000000000000000000000008D
-:10235000000000000000000000000000000000007D
-:10236000000000000000000000000000000000006D
-:10237000000000000000000000000000000000005D
-:10238000000000000000000000000000000000004D
-:10239000000000000000000000000000000000003D
-:1023A000000000000000000000000000000000002D
-:1023B000000000000000000000000000000000001D
-:1023C000000000000000000000000000000000000D
-:1023D00000000000000000000000000000000000FD
-:1023E00000000000000000000000000000000000ED
-:1023F00000000000000000000000000000000000DD
-:1024000000000000000000000000000000000000CC
-:1024100000000000000000000000000000000000BC
-:1024200000000000000000000000000000000000AC
-:10243000000000000000000000000000000000009C
-:10244000000000000000000000000000000000008C
-:10245000000000000000000000000000000000007C
-:10246000000000000000000000000000000000006C
-:10247000000000000000000000000000000000005C
-:10248000000000000000000000000000000000004C
-:10249000000000000000000000000000000000003C
-:1024A000000000000000000000000000000000002C
-:1024B000000000000000000000000000000000001C
-:1024C000000000000000000000000000000000000C
-:1024D00000000000000000000000000000000000FC
-:1024E00000000000000000000000000000000000EC
-:1024F00000000000000000000000000000000000DC
-:1025000000000000000000000000000000000000CB
-:1025100000000000000000000000000000000000BB
-:1025200000000000000000000000000000000000AB
-:10253000000000000000000000000000000000009B
-:10254000000000000000000000000000000000008B
-:10255000000000000000000000000000000000007B
-:10256000000000000000000000000000000000006B
-:10257000000000000000000000000000000000005B
-:10258000000000000000000000000000000000004B
-:10259000000000000000000000000000000000003B
-:1025A000000000000000000000000000000000002B
-:1025B000000000000000000000000000000000001B
-:1025C000000000000000000000000000000000000B
-:1025D00000000000000000000000000000000000FB
-:1025E00000000000000000000000000000000000EB
-:1025F00000000000000000000000000000000000DB
-:1026000000000000000000000000000000000000CA
-:1026100000000000000000000000000000000000BA
-:1026200000000000000000000000000000000000AA
-:10263000000000000000000000000000000000009A
-:10264000000000000000000000000000000000008A
-:10265000000000000000000000000000000000007A
-:10266000000000000000000000000000000000006A
-:10267000000000000000000000000000000000005A
-:10268000000000000000000000000000000000004A
-:10269000000000000000000000000000000000003A
-:1026A000000000000000000000000000000000002A
-:1026B000000000000000000000000000000000001A
-:1026C000000000000000000000000000000000000A
-:1026D00000000000000000000000000000000000FA
-:1026E00000000000000000000000000000000000EA
-:1026F00000000000000000000000000000000000DA
-:1027000000000000000000000000000000000000C9
-:1027100000000000000000000000000000000000B9
-:1027200000000000000000000000000000000000A9
-:102730000000000000000000000000000000000099
-:102740000000000000000000000000000000000089
-:102750000000000000000000000000000000000079
-:102760000000000000000000000000000000000069
-:102770000000000000000000000000000000000059
-:102780000000000000000000000000000000000049
-:102790000000000000000000000000000000000039
-:1027A0000000000000000000000000000000000029
-:1027B0000000000000000000000000000000000019
-:1027C0000000000000000000000000000000000009
-:1027D00000000000000000000000000000000000F9
-:1027E00000000000000000000000000000000000E9
-:1027F00000000000000000000000000000000000D9
-:1028000000000000000000000000000000000000C8
-:1028100000000000000000000000000000000000B8
-:1028200000000000000000000000000000000000A8
-:102830000000000000000000000000000000000098
-:102840000000000000000000000000000000000088
-:102850000000000000000000000000000000000078
-:102860000000000000000000000000000000000068
-:102870000000000000000000000000000000000058
-:102880000000000000000000000000000000000048
-:102890000000000000000000000000000000000038
-:1028A0000000000000000000000000000000000028
-:1028B0000000000000000000000000000000000018
-:1028C0000000000000000000000000000000000008
-:1028D00000000000000000000000000000000000F8
-:1028E00000000000000000000000000000000000E8
-:1028F00000000000000000000000000000000000D8
-:1029000000000000000000000000000000000000C7
-:1029100000000000000000000000000000000000B7
-:1029200000000000000000000000000000000000A7
-:102930000000000000000000000000000000000097
-:102940000000000000000000000000000000000087
-:102950000000000000000000000000000000000077
-:102960000000000000000000000000000000000067
-:102970000000000000000000000000000000000057
-:102980000000000000000000000000000000000047
-:102990000000000000000000000000000000000037
-:1029A0000000000000000000000000000000000027
-:1029B0000000000000000000000000000000000017
-:1029C0000000000000000000000000000000000007
-:1029D00000000000000000000000000000000000F7
-:1029E00000000000000000000000000000000000E7
-:1029F00000000000000000000000000000000000D7
-:102A000000000000000000000000000000000000C6
-:102A100000000000000000000000000000000000B6
-:102A200000000000000000000000000000000000A6
-:102A30000000000000000000000000000000000096
-:102A40000000000000000000000000000000000086
-:102A50000000000000000000000000000000000076
-:102A60000000000000000000000000000000000066
-:102A70000000000000000000000000000000000056
-:102A80000000000000000000000000000000000046
-:102A90000000000000000000000000000000000036
-:102AA0000000000000000000000000000000000026
-:102AB0000000000000000000000000000000000016
-:102AC0000000000000000000000000000000000006
-:102AD00000000000000000000000000000000000F6
-:102AE00000000000000000000000000000000000E6
-:102AF00000000000000000000000000000000000D6
-:102B000000000000000000000000000000000000C5
-:102B100000000000000000000000000000000000B5
-:102B200000000000000000000000000000000000A5
-:102B30000000000000000000000000000000000095
-:102B40000000000000000000000000000000000085
-:102B50000000000000000000000000000000000075
-:102B60000000000000000000000000000000000065
-:102B70000000000000000000000000000000000055
-:102B80000000000000000000000000000000000045
-:102B90000000000000000000000000000000000035
-:102BA0000000000000000000000000000000000025
-:102BB0000000000000000000000000000000000015
-:102BC0000000000000000000000000000000000005
-:102BD00000000000000000000000000000000000F5
-:102BE00000000000000000000000000000000000E5
-:102BF00000000000000000000000000000000000D5
-:102C000000000000000000000000000000000000C4
-:102C100000000000000000000000000000000000B4
-:102C200000000000000000000000000000000000A4
-:102C30000000000000000000000000000000000094
-:102C40000000000000000000000000000000000084
-:102C50000000000000000000000000000000000074
-:102C60000000000000000000000000000000000064
-:102C70000000000000000000000000000000000054
-:102C80000000000000000000000000000000000044
-:102C90000000000000000000000000000000000034
-:102CA0000000000000000000000000000000000024
-:102CB0000000000000000000000000000000000014
-:102CC0000000000000000000000000000000000004
-:102CD00000000000000000000000000000000000F4
-:102CE00000000000000000000000000000000000E4
-:102CF00000000000000000000000000000000000D4
-:102D000000000000000000000000000000000000C3
-:102D100000000000000000000000000000000000B3
-:102D200000000000000000000000000000000000A3
-:102D30000000000000000000000000000000000093
-:102D40000000000000000000000000000000000083
-:102D50000000000000000000000000000000000073
-:102D60000000000000000000000000000000000063
-:102D70000000000000000000000000000000000053
-:102D80000000000000000000000000000000000043
-:102D90000000000000000000000000000000000033
-:102DA0000000000000000000000000000000000023
-:102DB0000000000000000000000000000000000013
-:102DC0000000000000000000000000000000000003
-:102DD00000000000000000000000000000000000F3
-:102DE00000000000000000000000000000000000E3
-:102DF00000000000000000000000000000000000D3
-:102E000000000000000000000000000000000000C2
-:102E100000000000000000000000000000000000B2
-:102E200000000000000000000000000000000000A2
-:102E30000000000000000000000000000000000092
-:102E40000000000000000000000000000000000082
-:102E50000000000000000000000000000000000072
-:102E60000000000000000000000000000000000062
-:102E70000000000000000000000000000000000052
-:102E80000000000000000000000000000000000042
-:102E90000000000000000000000000000000000032
-:102EA0000000000000000000000000000000000022
-:102EB0000000000000000000000000000000000012
-:102EC0000000000000000000000000000000000002
-:102ED00000000000000000000000000000000000F2
-:102EE00000000000000000000000000000000000E2
-:102EF00000000000000000000000000000000000D2
-:102F000000000000000000000000000000000000C1
-:102F100000000000000000000000000000000000B1
-:102F200000000000000000000000000000000000A1
-:102F30000000000000000000000000000000000091
-:102F40000000000000000000000000000000000081
-:102F50000000000000000000000000000000000071
-:102F60000000000000000000000000000000000061
-:102F70000000000000000000000000000000000051
-:102F80000000000000000000000000000000000041
-:102F90000000000000000000000000000000000031
-:102FA0000000000000000000000000000000000021
-:102FB0000000000000000000000000000000000011
-:102FC0000000000000000000000000000000000001
-:102FD00000000000000000000000000000000000F1
-:102FE00000000000000000000000000000000000E1
-:102FF00000000000000000000000000000000000D1
-:00000001FF
diff --git a/firmware/yamaha/ds1_dsp.fw.ihex b/firmware/yamaha/ds1_dsp.fw.ihex
deleted file mode 100644
index acb0ba48f112..000000000000
--- a/firmware/yamaha/ds1_dsp.fw.ihex
+++ /dev/null
@@ -1,9 +0,0 @@
-:1000000081000000A40100000A0000002F00000091
-:1000100053020800170380017B4000003F8400006A
-:100020003C4801003C9401003CD805003C1C000009
-:100030007BC000003F0C05003C5021010000000087
-:1000400000000000000000000000000000000000B0
-:1000500000000000000000000000000000000000A0
-:100060000000000000000000000000000000000090
-:100070000000000000000000000000000000000080
-:00000001FF
diff --git a/firmware/yamaha/ds1e_ctrl.fw.ihex b/firmware/yamaha/ds1e_ctrl.fw.ihex
deleted file mode 100644
index 597f429ee31a..000000000000
--- a/firmware/yamaha/ds1e_ctrl.fw.ihex
+++ /dev/null
@@ -1,769 +0,0 @@
-:10000000070000000700240007000C0007001C0088
-:1000100007000600020070002000000040000300FE
-:100020000471000086420000400003000D0F000034
-:10003000100800003A042000820200000D020000B7
-:10004000100800003A04200082120000820E2000F6
-:100050000D800000100800003A042000821A000001
-:100060000D460300100800003A0410000DEC0200D9
-:10007000100800003A0418000D01000015000200ED
-:10008000FD00000020000000608803006090030075
-:100090006080030040800300408003004080030034
-:1000A000408001007D0A0000408003004080030082
-:1000B0004080010002042000820800001A000800AD
-:1000C00004090000867101000700000007002600F7
-:1000D00007004000070000008D2503001008000005
-:1000E0003A04180007002600024428007D0800009A
-:1000F000428001000A16000006A205000700000069
-:10010000070044000D230000100800003A04080016
-:1001100006FA220007000000FD07000042800100EF
-:100120000A0008000409000086AB020095010000E7
-:10013000040D09000700000020080000F500000081
-:100140007D0B000060F00100FD000000063A030096
-:10015000408001007D0A0000428003004A801300B5
-:100160000A00180020180000609005006088050053
-:1001700040800100FD000000428001000A00700084
-:100180001501000044110700863B03000000030036
-:100190002070000006620300408001000D36000060
-:1001A000100800003A04080006222300070000009F
-:1001B0000DEC0200100800003A041800069A010035
-:1001C00007000000070024008D0F00001008000049
-:1001D0003A16000002240000025C0000FD28000026
-:1001E00020000000408001000D00080015080000FC
-:1001F00084095100070000004D0000005D0E000062
-:10020000020E00000D430000100800003A04080030
-:1002100006122E00070000008D00000024090000D7
-:10022000020F00000D470000100800003A0408000B
-:1002300006122E0007000000800448001012000083
-:100240003A0428008D770000100800003A0C2800BE
-:100250008D060000100800003A142800024428000F
-:100260008D250300100800003A0418008DFF0700D8
-:1002700020080000FD020000408001000700260069
-:1002800007002000FD020000428001000A00080073
-:100290000409000086120500070000000700240082
-:1002A0000DEC0200100800003A0418007D38000030
-:1002B000428001000A0008001510000084090100B6
-:1002C000869B01000700000006B201000700000045
-:1002D000FD080000428001000A0018000419000017
-:1002E00086B8220007002800101800003A042800F1
-:1002F000020C28000D000000100800003A1428002D
-:100300008D80080020080000FD02000040800100F0
-:10031000070020000D0200000499180007000000EB
-:100320002D400000BD000000FD02000042800100E1
-:100330000A00080004090000865A060007000000B1
-:1003400000010000200A00007D0400004080010040
-:10035000428001000A002000153000004421010005
-:10036000866103000700000004210000866103008D
-:10037000070000008D0F0000100800003A0C280054
-:100380004439020086C90700070000001018000069
-:100390003A0428000D81080020080000FD0200003A
-:1003A0004080010007002000102800003A0078007B
-:1003B0008D780000100800003A04080006122A0098
-:1003C000070000000D4000001510000004991800FF
-:1003D000042929000439390007000000060207003B
-:1003E00007000000F50400007D0000002000000070
-:1003F0008D00000060080100408001007D040000C5
-:10040000428003004A8021000A00180044190200BB
-:1004100086902200070000007540000004F1710082
-:1004200007000000420001000A0028000429000023
-:1004300086582200070000000D3C000004A930008F
-:10044000070000007D070000428001000A0008004C
-:100450000409000086DA08007D050000202800005D
-:1004600060B0030006F20800408001002030000068
-:1004700060A8030040800100FD02000042800100EE
-:100480000A0008000409000086FA080007000000BE
-:100490007D050000428001000A0428008D0E000046
-:1004A000100800003A0C28000D00000010080000A1
-:1004B0003A1428000D00090020080000FD02000089
-:1004C0004080010007002000FD3D000020000000EA
-:1004D000408001007D1000008D9D0000100800008C
-:1004E0003A04080006122A00070000001508000060
-:1004F0001A0008008409010086510A007D130000DB
-:1005000000052000200F2800608F3300608F3B0023
-:10051000608F4300608F4B00608F5300608F5B00E3
-:10052000608A0300408001007D10000042800100CD
-:100530000A000800150200008409010086813A00C3
-:1005400007000000BD7F0000C43D38000700000028
-:100550007D1A000075130000428001004A00090066
-:100560000A001000048D0B00049513000700000022
-:10057000200800006090010004110000865822004D
-:1005800040000100FD170000428001000A00080041
-:1005900004090000865A2200070000007D190000AF
-:1005A000428003004A8009000A001000240900006C
-:1005B00064160000FD110000428003004A802B00F9
-:1005C0004A8019008D0000004489210007000000C6
-:1005D0004422000086190C0007000000641A000085
-:1005E000242A00007D1900000201080022011000E9
-:1005F000200800006090030040800100FD3D0000E5
-:100600008D000000200800004080010075130000EC
-:100610007D1A0000420001004A8009000A00100013
-:100620001D020000E4890100E49229004491300099
-:10063000070000000D060000150A00001D0C000058
-:1006400025100000E4A90000E42B01006404000070
-:10065000E4B30100E432020064040000640400001A
-:1006600064040000640400000D040000C4B108002C
-:100670000700000020080000F50B00004000030008
-:100680007D190000428003004A800900240A00000E
-:100690000A000800640E0800070000002201100094
-:1006A000200800006010030040000100AC6400005E
-:1006B0007D02000020000000408001007D1000004D
-:1006C00042800100FD1100004A803B004A80090081
-:1006D0000A0020009500000044111A0044A1000007
-:1006E00086580E000D04000084B9000086590E00E3
-:1006F000FD18000042800100FD1000004A80090042
-:100700000A0028009500000024090100642A000066
-:1007100086490E000700000004290000865A0E00DA
-:100720000700000006620E00020008008D000000B5
-:100730007D38000020080000408001007D1200008C
-:10074000428001000A0010000439000086090F00F1
-:100750000D080000B5FF7F0084B9000086D90E00A7
-:100760002500000006B20F002D000000150000005B
-:100770002D0800000DE002002008000006FA0F001E
-:100780000D00000035807F0084B9000086A90F00AD
-:10079000250040008D000000440911000700000002
-:1007A0008D01000004951000070000006491000016
-:1007B00024040000240400002404000002011000AE
-:1007C000020028000DDF02002008000006FA0F00DA
-:1007D0008D0100002D0400008D0000000495100024
-:1007E000070000000D0200008491100007000000C7
-:1007F0008DDF0200200800008D000000FD380000A1
-:1008000040800100FD3B00002010000060A80300B4
-:100810001508000084313100842121000700000008
-:1008200060B0030060A0030040800100FD220000D2
-:1008300095000000240901002404000024040000A5
-:100840006412000002011000200800006090030004
-:1008500040800100241900000D0F01007D390000C7
-:100860002008000040800500428003004A840900FF
-:10087000060600000A040800240400002404000006
-:100880007D110000428001000A000800240A0000D7
-:1008900002052800020C28000D8009002008000035
-:1008A000FD0200004080010007002000FD22000042
-:1008B000428001000A00080095000000C40D2800D5
-:1008C000241901007D19000042800100FD11000083
-:1008D0004A8009000A001000B500000044311100F0
-:1008E000048D0A0007000000440A08000495120065
-:1008F00007000000FD2300002010000040800300DE
-:10090000441210000700000020080000609003005F
-:1009100040800100FD020000428001000A00080042
-:10092000040900008632120007000000FD3B0000B1
-:1009300000010000100A00007A800B004A801300BA
-:10094000840909000700000095000000043D010033
-:1009500086B812000A001000020010008409090085
-:1009600007000000428003004A801100040D0900C6
-:10097000070000000A001000840D090007000000B5
-:100980007D25000020080000408001000D010000CE
-:10099000100800003A1428007D1200004280010077
-:1009A0000A0020007D190000428001007D11000036
-:1009B0004A8031000A001000243100008D3B010004
-:1009C0007D390000200800004080050042800300BF
-:1009D0004A840900060600000A04080002013000EB
-:1009E000243100002404000024040000241200002C
-:1009F000020528004C1A000086391400020070001D
-:100A00002D000000000003007D380000428001003E
-:100A10000A0010000662140024210000AD0000004E
-:100A2000020010000D01000024090000246B0000EA
-:100A30000D4A01007D3900002008000040800500BB
-:100A4000428003004A840900060600000A040800E8
-:100A5000643200008D000000240A00002010000015
-:100A60007D220000408001008D4F01001008000031
-:100A70003A040800065A2B00070000002028000056
-:100A80007D200000408001007D11000042800300B5
-:100A90004A8013000A8033007D3800004280010044
-:100AA0000A00080004090000867217000700000011
-:100AB0008D000000640903000D5B01007D3900001A
-:100AC0002008000040800500428003004A8409009D
-:100AD000060600000A040800020138002404000091
-:100AE0002404000024120000FD02000042800100E6
-:100AF0000A0008000409000086DA1500070000005B
-:100B0000020528004C1A000086711700070000003B
-:100B1000642103002C630000FD3D000042800100C1
-:100B20000A00080095000000040909000700000001
-:100B3000200800004C1A0000869916004080010031
-:100B40000000030006B21600242100000D01000081
-:100B500024090000246B00000D6F01007D390000A6
-:100B60002008000040800500428003004A840900FC
-:100B7000060600000A040800643A00009500000020
-:100B800024120000FD020000428001000A0008005B
-:100B90000409000086121700070000000D7601000E
-:100BA000100800003A040800065A2B000700000055
-:100BB000060A160007000000207000000A01080065
-:100BC0002A011000FD2000006088030060900300EF
-:100BD000408001007D22000042800100FD3D0000B8
-:100BE0000A0008004A843100040900008610180039
-:100BF0008B0018008D000000049918002C310000B3
-:100C000006E21800070000004C320000866B180056
-:100C100007000000041900008668180007000000A3
-:100C200095000000449119002C220000243100009E
-:100C30006C6300003D0E000075130000FD0B00000A
-:100C4000420001004A8009000A001000EC8A0300FB
-:100C5000EC9303004C22000086E11800070000001E
-:100C60008D000000049918006C2200002C32000056
-:100C70000A053000AB1D300083200000FD18000085
-:100C8000428001000A0008002489010002053000AA
-:100C90008310000075180000420001000A001000D7
-:100CA0008D00000024090100751300004205330087
-:100CB000CB0C3300CB2C3300CB343300CB3C330094
-:100CC000CB443300CB4C3300CB5433008B5C30002F
-:100CD00083600000F5020000420001000A000800E5
-:100CE0000409000086B21900070000002D1E000054
-:100CF000FD050000428001000A000800248902006E
-:100D0000020528000D060000100800003A0C28001B
-:100D10008D000000100800003A1428008D800A00A1
-:100D200020080000F502000040000100070022003A
-:100D300075120000420003004A0021008D000000EF
-:100D400044091A00070000008DAB010010080000E4
-:100D50003A04080006AA2C0007000000F501000074
-:100D6000420003004A000D000A00100044910800F0
-:100D7000070000002008000040000100F5250000E9
-:100D800044310A000700000020080000602803002A
-:100D9000400003007D210000428003004A800B00D8
-:100DA0000A0010002008000060100300400003004B
-:100DB0008D000000240100002C010000640E0000E2
-:100DC000641A00006C6300000A0108002A01100088
-:100DD000200800006010030040000300FD20000018
-:100DE000428001000A0008007D22000042800100CC
-:100DF0000A001000200800006010030040000300FB
-:100E00007D190000428001000A000800FD22000058
-:100E1000428003000A001000200800006010030058
-:100E200040000300040D0900070000002008000036
-:100E300040000300428003004A800B000A001000BB
-:100E400020080000601003004000030042800300FF
-:100E50004A8013004A801900040D1100048D190006
-:100E6000070000000A0008002010000060180300BE
-:100E700060080300400003008D00000044090B00DF
-:100E8000070000002008000040000100F5050000F8
-:100E9000420003000A000800200800004000010092
-:100EA000F5000000420001000A00080004090000EB
-:100EB00086981D00751E0000420003004A040100D0
-:100EC0000A0C000006AA1D00070000000204000032
-:100ED000020C00007D170000F51A0000428001009E
-:100EE0004A1403004A1C03004A2403004A2C03004E
-:100EF0004A3403004A3C03004A4403000A4C000001
-:100F00003D040000F5130000FD1A0000420003003C
-:100F10004A000B004A801B004A8013000A00200090
-:100F20004491080044A11900E4890300EC990300EE
-:100F3000025500000A5D0000420003004A000B0059
-:100F40004A801B004A8013000A00200044910800D8
-:100F500044A11900E4890300EC9903000265000034
-:100F60000A6D0000420003004A000B004A0019000D
-:100F70004A802B004A8013004A8021000A0030007A
-:100F80004491080044A1190044B12A00E4890300F7
-:100F9000EC990300027500000A7D0000E4A903003B
-:100FA000020700007D1000001504000042800100CF
-:100FB0000A000800E4090100020F0000F52A000001
-:100FC000FD190000420001004A8009000A001000DB
-:100FD0003409000074160000F529000042000100E9
-:100FE0000A0010007C910000752000004200010002
-:100FF0000A00080004090000860A2000F526000007
-:10100000F5270000420003004A0009000A00100012
-:101010003C0A00007C160000751A0000FD0B000061
-:10102000420001004A8051000A00480007001600F3
-:1010300075100000420001000A2C2800121D280033
-:1010400012252800321F000007001E0007000E00B6
-:101050007519000042000100F52D00004A000D0046
-:101060000A0010004491000086EA200042000100BE
-:101070000A3428005D0E00008D000000750300009A
-:101080002008000040000100F4D2050004D1540003
-:101090005C730000868B21000700000007000C0035
-:1010A0000700080007000A008D1702001008000062
-:1010B0003A04080006B2340007000000069221003E
-:1010C0000700000007000800752200004200010030
-:1010D0000A00200004210000865822002D1E000076
-:1010E000F5020000420001000A00080004090000A7
-:1010F00086CA210007000000102000003A043000DA
-:101100007D050000C38001000A0008002489020058
-:1011100002052800020C28000D810A0020080000AA
-:10112000F50200004000010007002200FD0400005D
-:10113000428001000A0070000000030020700000DF
-:1011400006FA0700408001008D2B02001008000005
-:101150003A04080006AA2C0007000000FD02000067
-:10116000428001000A0008000409000086C2220033
-:1011700007000000060202000700000075080000DA
-:10118000FD0900000D010000064223009502000049
-:10119000750B00007D0900000D0000001505000022
-:1011A000420001000A0018000419000086002A000D
-:1011B000F50600002010000040000100F5040000CA
-:1011C00020080000400001007507000042000100F7
-:1011D0004A8009000A0010002411000004090000E0
-:1011E00086F2230015080000020108000412100016
-:1011F0000612240075050000041208000700000014
-:1012000002011000750500002504000024110200F1
-:1012100002011000200800006010030040000100DF
-:101220002419000086002A008D00000064040000DC
-:10123000049D0000861029000201180075050000B9
-:10124000420001000A0428008D010000240900006A
-:10125000020D28000D0000002409000002152800DE
-:101260000D00100020080000F50200004000010001
-:101270000700200075110000FD02000042800100FF
-:101280000A0008000409000086FA24000700000094
-:1012900000010000200B0800600B1300600B1B0016
-:1012A000600A030040000100420005004A003D00C2
-:1012B0004A0035004A002D000A002000F506000013
-:1012C000420001000A142800F50400004200010059
-:1012D0000A00080015030000040D01008602260024
-:1012E0001540000095000000040D010086F0250067
-:1012F000220010002A001000061A26000700000035
-:101300000431330004A92A0007000000242103004F
-:1013100002052800024428002411000002014000B8
-:101320002404000024040000243200002C290000C2
-:101330006C630000867327000700000064B10200A0
-:1013400064040000640400008D000000640A0000D2
-:10135000020D28008D00100020080000F50200009A
-:1013600040000100070022008D00000004B9380091
-:10137000070000006C2903000A013000F50200009C
-:10138000420001000A00080004090000860227004C
-:10139000070000002C2100000A0528006C31000025
-:1013A0006C0400006C0400000A45280024110000B1
-:1013B000646B0000020110008D0000006C09010048
-:1013C0000A0D28000D01100020080000F5020000A1
-:1013D0004000010007002200244100002404000016
-:1013E00024040000243200000201300044290300DC
-:1013F00086FA27000700000002003000F504000014
-:10140000420001000A00080015030000040D01005D
-:1014100086402800243100006404000002013000EE
-:10142000F5020000420001000A0008000409000063
-:10143000864A2800070000000244280024310000EA
-:1014400002053000243900008305300083080000C5
-:10145000F5050000420001000A0428008D0000008C
-:1014600024810000020D28008D000000248100006E
-:10147000021528008D01100020080000F502000070
-:101480004000010007002200251000007505000043
-:10149000420003004A0009000A00100004090A0083
-:1014A0000411120007000000201000006008050071
-:1014B00040000500FD060000428001004A000900CE
-:1014C0000A001000A500000004090A00041112001F
-:1014D00007000000200800006090010040000100AB
-:1014E000F5020000420001000A00080004090000A3
-:1014F00086CA2900070000000642240007000000F9
-:101500000606000007000000F5020000420001008E
-:101510000A00080004090000861A2A0007000000DB
-:1015200000010000200B0800608B1300608B1B0083
-:10153000608B2300608B2B00608B3300608B3B0043
-:10154000608B4300608B4B00608B5300608B5B00B3
-:10155000608B6300608B6B00608B7300608B7B0023
-:10156000608F0300608F0B00608F1300608F1B0083
-:10157000608F2300608F2B00608F3300608F3B00F3
-:10158000608F4300608F4B00608F5300608F5B0063
-:10159000608F6300608F6B00608F7300608F7B00D3
-:1015A000608A030006060000408001008D000000F4
-:1015B000640A0000020D2800240A00007D020000D9
-:1015C000428001000A00100024120000FD03000008
-:1015D000428001000A00080004090000860A2C006D
-:1015E000070000008D010000240A000064040000D0
-:1015F0006404000002010800240900002404000023
-:1016000024040000020110000D00020044910000BB
-:1016100086612C0007000000FD01000042800100EF
-:101620000A000800440A000086432C0042800100A2
-:101630000D000A0020080000FD02000040800100AB
-:10164000070020007D0200002010000006060000B8
-:1016500040800100F5020000420001000A0008007D
-:101660000409000086B22C00070000007D03000082
-:10167000428001000A0008000409000086E22C00F4
-:1016800007000000750000007D2E000042000100F0
-:101690004A800B00200000000409000086060000BC
-:1016A000400001004A8431008B04300083080000B0
-:1016B0008D000000100800003A1428008D00000082
-:1016C000100800003A0C28007506000042000100D6
-:1016D0000A0008001538000024090100020528004E
-:1016E0000D000B0020080000F50200004000010082
-:1016F00006060000070022006404000064040000E5
-:101700000606000007000000340100008D7F000085
-:101710003C090000121D280012252800321F00007D
-:1017200007000E000D0100007D03000020080000EE
-:1017300040800100F4D20500070000000700080007
-:101740007D030000428001000A0008000409000037
-:10175000868A2E0007000000060600000700000031
-:101760000700000012000000070010000700320010
-:101770000700600007004600800010001A004800C3
-:101780000449000086F12E0007000000101200003E
-:101790003A00580045010000045D5C0007000000AD
-:1017A000800000001A0048000449000086412F0014
-:1017B00007000000101200003A0050000459000019
-:1017C00086982F0045000000C5000000F5FF7F004F
-:1017D0007DFF7F0024D50700244200000201500055
-:1017E00002052000820000001A00400004410000B1
-:1017F00086C92F0007000000653800001A0040006D
-:10180000204000004D10000084C1040086AB310070
-:1018100040000000070004006501000045010000D1
-:101820002040000040000000650700008000080024
-:101830001A004000044100008659300007000000F3
-:10184000101200003A0040000441000086B230004F
-:101850004D000000CD000000104800003A042000B8
-:10186000820800001A0040000441000086C13000D8
-:10187000070000002048000004590000869831004D
-:1018800040000000E507000080042000A0162800AA
-:10189000E0163200E0163A00E01642006012020044
-:1018A0004000000032000000750040007D00000094
-:1018B00074D5070012052000820000001A004000C5
-:1018C000044100008671310007000000068A030011
-:1018D00007006400E5000000200000004000000058
-:1018E000650A0000200000004000020040000200E5
-:1018F0004000000065010000420000000A00700086
-:101900000471000086323200070000000700060064
-:10191000069A010007006400000005002070000026
-:1019200040000000068A0300070064000700000072
-:101930006D30000060880200609002000A0008001C
-:101940006088020040800000120010000D100000AE
-:101950008491000086D132000D0E000084910000B9
-:1019600086E133000700000007003000201000006F
-:101970006D3B000040800000800000001A0008005D
-:101980000409000086F13200070000002012000068
-:10199000ED0D000040800000428000000A001000B1
-:1019A0000D004000449510000700000020100000CA
-:1019B000ED0D000040800000428000000A0420007D
-:1019C000820000001A00080004090000868133002C
-:1019D000070000006D3B0000428000000A00080084
-:1019E000150E000084090100862B340007006000FA
-:1019F0001A000800150C0000840901008613340049
-:101A00002000000007001A00ED02000040800000E6
-:101A1000070062006D300000428002004A800A0028
-:101A2000200800004A800A00060600004A801000D4
-:101A30000700000012252800321F0000F4D2050024
-:101A400004D154005C73000086070000070000000A
-:101A500007000C0007000A0007001C0065340000A6
-:101A60004000020020480000605002000A004000D0
-:101A700060400200400000004449450007000000AB
-:101A800020400000E53A000040000000E52800008A
-:101A9000420000000A0048000449000086F83900AE
-:101AA000652C0000420000000A004000D500000044
-:101AB00004414500070000005506000004450500EC
-:101AC00086823600D5010000044505008680360078
-:101AD000652B000042000000E53A00004A0050007B
-:101AE0000A004000D4C3450007000000044545003B
-:101AF00007000000CD00000044494400070000003A
-:101B000004454500070000004D0100004449550010
-:101B1000070000004451040086793600652C00005F
-:101B2000420000000A00480004D14C0007000000F9
-:101B300044C1040086833600070000000700160039
-:101B4000E52C0000420004000A0040002040000094
-:101B50004000000065290000420000000A0040002B
-:101B60000441000086F03600070000000224000057
-:101B700006323800025C0000E5250000420000004B
-:101B80000A00400074420000E52A00004200000004
-:101B90000A0040007442000012015000E5290000D4
-:101BA000420000000A0040003442000004414500A9
-:101BB000070000002040000040000000E53E00005B
-:101BC0002000000040000000E52D00005201400010
-:101BD0000A0050004451040086DA3700C5000000B6
-:101BE000E53E00002040000040000000E52B000022
-:101BF000420000000A00400054424000070000007C
-:101C0000E52A0000204000004000000032015000A2
-:101C10003401040074560000E5290000420002006F
-:101C20000A004200420000000A0050007C4105000A
-:101C3000E5280000420000000A004800C50000003E
-:101C400044C14C0086A03800E5260000E5270000CE
-:101C5000420002004A0040000A0050003C420000DE
-:101C60007C560000E52800002048000040000000ED
-:101C7000121D280012252800721F0000652900008F
-:101C8000420000000A00400004410000863A39008A
-:101C900007000E000700160007001E00E53E0000CA
-:101CA000420000000A00400004410000867839002C
-:101CB000652D0000420000000A3428006534000051
-:101CC000420002004A004200204000004A004A0050
-:101CD0004A005000F4D2050004D154005C730000A7
-:101CE00086E1390007000000060600000700080032
-:101CF00007000C000700080007000A00E5010000CB
-:101D00004500020020400000600000006503000064
-:101D100040000000652E0000201A0000601A0A0032
-:101D20004000000065340000420002004A0042000A
-:101D3000204000004A004A00060600004A00500009
-:101D4000FD170000428001000A000800040900009D
-:101D5000865A2200070000007D100000428001002A
-:101D6000FD1100004A8033004A8019000A0020005B
-:101D70009500000044112A0044A1010086903B0018
-:101D80000D04000084B1000086913B00FD180000A6
-:101D900042800100FD1000004A8009000A0038005E
-:101DA0009500000024090100643A000086813B0090
-:101DB000070000000439000086923B000700000085
-:101DC000069A3B000D0000008D0000002008000076
-:101DD0007D38000040800100020070007D1100008D
-:101DE000428001007D1900004A8029000A0030006D
-:101DF0000200380024310000240400002404000004
-:101E0000242A0000020528008D06000010080000AA
-:101E10003A1428000D75000024B10000642200006F
-:101E200086033D0002442800100800003A0C2800F8
-:101E30000D800B0020080000FD0200004080010022
-:101E4000070020008D75000024B100000201100081
-:101E50004421010086493E00101800003A0010009D
-:101E60007D380000428001000A00080004090000DB
-:101E700086483E0000000300064A3E00BD00000008
-:101E80008D00000064310200640A0000020D280089
-:101E90008D800B0020080000FD0200004080010042
-:101EA000070020007D380000428001000A00080081
-:101EB0000409000086323E0000000300FD0200001D
-:101EC000428001000A0008000409000086823D00EB
-:101ED00007000000102800003A0428000D750000DB
-:101EE0002409030064220000020D28006C31020066
-:101EF0000A4528000D810B0020080000FD020000AB
-:101F000040800100070020008D000000240A00002E
-:101F1000064A3E0002011000101800003A001000AE
-:101F2000BD000000103800003A0430007D180000A9
-:101F300042800100FD1800004A8009000A002000CC
-:101F4000AD000000248902002C21070010100000C1
-:101F5000830530008B0D3000BB143000831C300033
-:101F6000832000007D130000428003004A84330078
-:101F7000CBAC3300CBB43300CBBC3300CBC4330089
-:101F8000CBCC3300CBD433008B5C300083600000BB
-:101F90000D1E0000FD050000428001000A00200027
-:101FA000240902008D0600006CA900009D000000BD
-:101FB000FD020000428001000A0008000409000040
-:101FC000866A3F0007000000020528000A0D28006D
-:101FD00002442800101800003A1428008D000C005C
-:101FE00020080000FD0200004080010007002200E0
-:101FF00004390000865822000D1E00007D050000F7
-:10200000428001000A00200024090200A50000000F
-:10201000FD020000428001000A00080004090000DF
-:10202000862A40000700000002052800020C280054
-:10203000102000003A1428000D010C0020080000B8
-:10204000FD02000040800100065A22000700220025
-:102050000000000000000000000000000000000080
-:102060000000000000000000000000000000000070
-:102070000000000000000000000000000000000060
-:102080000000000000000000000000000000000050
-:102090000000000000000000000000000000000040
-:1020A0000000000000000000000000000000000030
-:1020B0000000000000000000000000000000000020
-:1020C0000000000000000000000000000000000010
-:1020D0000000000000000000000000000000000000
-:1020E00000000000000000000000000000000000F0
-:1020F00000000000000000000000000000000000E0
-:1021000000000000000000000000000000000000CF
-:1021100000000000000000000000000000000000BF
-:1021200000000000000000000000000000000000AF
-:10213000000000000000000000000000000000009F
-:10214000000000000000000000000000000000008F
-:10215000000000000000000000000000000000007F
-:10216000000000000000000000000000000000006F
-:10217000000000000000000000000000000000005F
-:10218000000000000000000000000000000000004F
-:10219000000000000000000000000000000000003F
-:1021A000000000000000000000000000000000002F
-:1021B000000000000000000000000000000000001F
-:1021C000000000000000000000000000000000000F
-:1021D00000000000000000000000000000000000FF
-:1021E00000000000000000000000000000000000EF
-:1021F00000000000000000000000000000000000DF
-:1022000000000000000000000000000000000000CE
-:1022100000000000000000000000000000000000BE
-:1022200000000000000000000000000000000000AE
-:10223000000000000000000000000000000000009E
-:10224000000000000000000000000000000000008E
-:10225000000000000000000000000000000000007E
-:10226000000000000000000000000000000000006E
-:10227000000000000000000000000000000000005E
-:10228000000000000000000000000000000000004E
-:10229000000000000000000000000000000000003E
-:1022A000000000000000000000000000000000002E
-:1022B000000000000000000000000000000000001E
-:1022C000000000000000000000000000000000000E
-:1022D00000000000000000000000000000000000FE
-:1022E00000000000000000000000000000000000EE
-:1022F00000000000000000000000000000000000DE
-:1023000000000000000000000000000000000000CD
-:1023100000000000000000000000000000000000BD
-:1023200000000000000000000000000000000000AD
-:10233000000000000000000000000000000000009D
-:10234000000000000000000000000000000000008D
-:10235000000000000000000000000000000000007D
-:10236000000000000000000000000000000000006D
-:10237000000000000000000000000000000000005D
-:10238000000000000000000000000000000000004D
-:10239000000000000000000000000000000000003D
-:1023A000000000000000000000000000000000002D
-:1023B000000000000000000000000000000000001D
-:1023C000000000000000000000000000000000000D
-:1023D00000000000000000000000000000000000FD
-:1023E00000000000000000000000000000000000ED
-:1023F00000000000000000000000000000000000DD
-:1024000000000000000000000000000000000000CC
-:1024100000000000000000000000000000000000BC
-:1024200000000000000000000000000000000000AC
-:10243000000000000000000000000000000000009C
-:10244000000000000000000000000000000000008C
-:10245000000000000000000000000000000000007C
-:10246000000000000000000000000000000000006C
-:10247000000000000000000000000000000000005C
-:10248000000000000000000000000000000000004C
-:10249000000000000000000000000000000000003C
-:1024A000000000000000000000000000000000002C
-:1024B000000000000000000000000000000000001C
-:1024C000000000000000000000000000000000000C
-:1024D00000000000000000000000000000000000FC
-:1024E00000000000000000000000000000000000EC
-:1024F00000000000000000000000000000000000DC
-:1025000000000000000000000000000000000000CB
-:1025100000000000000000000000000000000000BB
-:1025200000000000000000000000000000000000AB
-:10253000000000000000000000000000000000009B
-:10254000000000000000000000000000000000008B
-:10255000000000000000000000000000000000007B
-:10256000000000000000000000000000000000006B
-:10257000000000000000000000000000000000005B
-:10258000000000000000000000000000000000004B
-:10259000000000000000000000000000000000003B
-:1025A000000000000000000000000000000000002B
-:1025B000000000000000000000000000000000001B
-:1025C000000000000000000000000000000000000B
-:1025D00000000000000000000000000000000000FB
-:1025E00000000000000000000000000000000000EB
-:1025F00000000000000000000000000000000000DB
-:1026000000000000000000000000000000000000CA
-:1026100000000000000000000000000000000000BA
-:1026200000000000000000000000000000000000AA
-:10263000000000000000000000000000000000009A
-:10264000000000000000000000000000000000008A
-:10265000000000000000000000000000000000007A
-:10266000000000000000000000000000000000006A
-:10267000000000000000000000000000000000005A
-:10268000000000000000000000000000000000004A
-:10269000000000000000000000000000000000003A
-:1026A000000000000000000000000000000000002A
-:1026B000000000000000000000000000000000001A
-:1026C000000000000000000000000000000000000A
-:1026D00000000000000000000000000000000000FA
-:1026E00000000000000000000000000000000000EA
-:1026F00000000000000000000000000000000000DA
-:1027000000000000000000000000000000000000C9
-:1027100000000000000000000000000000000000B9
-:1027200000000000000000000000000000000000A9
-:102730000000000000000000000000000000000099
-:102740000000000000000000000000000000000089
-:102750000000000000000000000000000000000079
-:102760000000000000000000000000000000000069
-:102770000000000000000000000000000000000059
-:102780000000000000000000000000000000000049
-:102790000000000000000000000000000000000039
-:1027A0000000000000000000000000000000000029
-:1027B0000000000000000000000000000000000019
-:1027C0000000000000000000000000000000000009
-:1027D00000000000000000000000000000000000F9
-:1027E00000000000000000000000000000000000E9
-:1027F00000000000000000000000000000000000D9
-:1028000000000000000000000000000000000000C8
-:1028100000000000000000000000000000000000B8
-:1028200000000000000000000000000000000000A8
-:102830000000000000000000000000000000000098
-:102840000000000000000000000000000000000088
-:102850000000000000000000000000000000000078
-:102860000000000000000000000000000000000068
-:102870000000000000000000000000000000000058
-:102880000000000000000000000000000000000048
-:102890000000000000000000000000000000000038
-:1028A0000000000000000000000000000000000028
-:1028B0000000000000000000000000000000000018
-:1028C0000000000000000000000000000000000008
-:1028D00000000000000000000000000000000000F8
-:1028E00000000000000000000000000000000000E8
-:1028F00000000000000000000000000000000000D8
-:1029000000000000000000000000000000000000C7
-:1029100000000000000000000000000000000000B7
-:1029200000000000000000000000000000000000A7
-:102930000000000000000000000000000000000097
-:102940000000000000000000000000000000000087
-:102950000000000000000000000000000000000077
-:102960000000000000000000000000000000000067
-:102970000000000000000000000000000000000057
-:102980000000000000000000000000000000000047
-:102990000000000000000000000000000000000037
-:1029A0000000000000000000000000000000000027
-:1029B0000000000000000000000000000000000017
-:1029C0000000000000000000000000000000000007
-:1029D00000000000000000000000000000000000F7
-:1029E00000000000000000000000000000000000E7
-:1029F00000000000000000000000000000000000D7
-:102A000000000000000000000000000000000000C6
-:102A100000000000000000000000000000000000B6
-:102A200000000000000000000000000000000000A6
-:102A30000000000000000000000000000000000096
-:102A40000000000000000000000000000000000086
-:102A50000000000000000000000000000000000076
-:102A60000000000000000000000000000000000066
-:102A70000000000000000000000000000000000056
-:102A80000000000000000000000000000000000046
-:102A90000000000000000000000000000000000036
-:102AA0000000000000000000000000000000000026
-:102AB0000000000000000000000000000000000016
-:102AC0000000000000000000000000000000000006
-:102AD00000000000000000000000000000000000F6
-:102AE00000000000000000000000000000000000E6
-:102AF00000000000000000000000000000000000D6
-:102B000000000000000000000000000000000000C5
-:102B100000000000000000000000000000000000B5
-:102B200000000000000000000000000000000000A5
-:102B30000000000000000000000000000000000095
-:102B40000000000000000000000000000000000085
-:102B50000000000000000000000000000000000075
-:102B60000000000000000000000000000000000065
-:102B70000000000000000000000000000000000055
-:102B80000000000000000000000000000000000045
-:102B90000000000000000000000000000000000035
-:102BA0000000000000000000000000000000000025
-:102BB0000000000000000000000000000000000015
-:102BC0000000000000000000000000000000000005
-:102BD00000000000000000000000000000000000F5
-:102BE00000000000000000000000000000000000E5
-:102BF00000000000000000000000000000000000D5
-:102C000000000000000000000000000000000000C4
-:102C100000000000000000000000000000000000B4
-:102C200000000000000000000000000000000000A4
-:102C30000000000000000000000000000000000094
-:102C40000000000000000000000000000000000084
-:102C50000000000000000000000000000000000074
-:102C60000000000000000000000000000000000064
-:102C70000000000000000000000000000000000054
-:102C80000000000000000000000000000000000044
-:102C90000000000000000000000000000000000034
-:102CA0000000000000000000000000000000000024
-:102CB0000000000000000000000000000000000014
-:102CC0000000000000000000000000000000000004
-:102CD00000000000000000000000000000000000F4
-:102CE00000000000000000000000000000000000E4
-:102CF00000000000000000000000000000000000D4
-:102D000000000000000000000000000000000000C3
-:102D100000000000000000000000000000000000B3
-:102D200000000000000000000000000000000000A3
-:102D30000000000000000000000000000000000093
-:102D40000000000000000000000000000000000083
-:102D50000000000000000000000000000000000073
-:102D60000000000000000000000000000000000063
-:102D70000000000000000000000000000000000053
-:102D80000000000000000000000000000000000043
-:102D90000000000000000000000000000000000033
-:102DA0000000000000000000000000000000000023
-:102DB0000000000000000000000000000000000013
-:102DC0000000000000000000000000000000000003
-:102DD00000000000000000000000000000000000F3
-:102DE00000000000000000000000000000000000E3
-:102DF00000000000000000000000000000000000D3
-:102E000000000000000000000000000000000000C2
-:102E100000000000000000000000000000000000B2
-:102E200000000000000000000000000000000000A2
-:102E30000000000000000000000000000000000092
-:102E40000000000000000000000000000000000082
-:102E50000000000000000000000000000000000072
-:102E60000000000000000000000000000000000062
-:102E70000000000000000000000000000000000052
-:102E80000000000000000000000000000000000042
-:102E90000000000000000000000000000000000032
-:102EA0000000000000000000000000000000000022
-:102EB0000000000000000000000000000000000012
-:102EC0000000000000000000000000000000000002
-:102ED00000000000000000000000000000000000F2
-:102EE00000000000000000000000000000000000E2
-:102EF00000000000000000000000000000000000D2
-:102F000000000000000000000000000000000000C1
-:102F100000000000000000000000000000000000B1
-:102F200000000000000000000000000000000000A1
-:102F30000000000000000000000000000000000091
-:102F40000000000000000000000000000000000081
-:102F50000000000000000000000000000000000071
-:102F60000000000000000000000000000000000061
-:102F70000000000000000000000000000000000051
-:102F80000000000000000000000000000000000041
-:102F90000000000000000000000000000000000031
-:102FA0000000000000000000000000000000000021
-:102FB0000000000000000000000000000000000011
-:102FC0000000000000000000000000000000000001
-:102FD00000000000000000000000000000000000F1
-:102FE00000000000000000000000000000000000E1
-:102FF00000000000000000000000000000000000D1
-:00000001FF
diff --git a/firmware/yamaha/yss225_registers.bin.ihex b/firmware/yamaha/yss225_registers.bin.ihex
deleted file mode 100644
index 6dd3d8c4de2b..000000000000
--- a/firmware/yamaha/yss225_registers.bin.ihex
+++ /dev/null
@@ -1,998 +0,0 @@
-:10000000FF000E100F00FF000E110F00FF000E1278
-:100010000F00FF000E130F00FF000E140F00FF0073
-:100020000E150F00FF000E160F00FF000E170F0039
-:10003000FF000E180F00FF000E190F00FF000E1A30
-:100040000F00FF000E1B0F00FF000E1C0F00FF0033
-:100050000E1D0F00FF000E1E0F00FF000E1F0F00F1
-:10006000FF000E200F00FF000E210F00FF000E22E8
-:100070000F00FF000E230F00FF000E240F00FF00F3
-:100080000E250F00FF000E260F00FF000E270F00A9
-:10009000FF000E280F00FF000E290F00FF000E2AA0
-:1000A0000F00FF000E2B0F00FF000E2C0F00FF00B3
-:1000B0000E2D0F00FF000E2E0F00FF000E2F0F0061
-:1000C000FF000E300F00FF000E310F00FF000E3258
-:1000D0000F00FF000E330F00FF000E340F00FF0073
-:1000E0000E350F00FF000E360F00FF000E370F0019
-:1000F000FF000E380F00FF000E390F00FF000E3A10
-:100100000F00FF000E3B0F00FF000E3C0F00FF0032
-:100110000E3D0F00FF000E3E0F00FF000E3F0F00D0
-:10012000FF000E400F00FF000E410F00FF000E42C7
-:100130000F00FF000E430F00FF000E440F00FF00F2
-:100140000E450F00FF000E460F00FF000E470F0088
-:10015000FF000E480F00FF000E490F00FF000E4A7F
-:100160000F00FF000E4B0F00FF000E4C0F00FF00B2
-:100170000E4D0F00FF000E4E0F00FF000E4F0F0040
-:10018000FF000E500F00FF000E510F00FF000E5237
-:100190000F00FF000E530F00FF000E540F00FF0072
-:1001A0000E550F00FF000E560F00FF000E570F00F8
-:1001B000FF000E580F00FF000E590F00FF000E5AEF
-:1001C0000F00FF000E5B0F00FF000E5C0F00FF0032
-:1001D0000E5D0F00FF000E5E0F00FF000E5F0F00B0
-:1001E000FF000E600F00FF000E610F00FF000E62A7
-:1001F0000F00FF000E630F00FF000E640F00FF00F2
-:100200000E650F00FF000E660F00FF000E670F0067
-:10021000FF000E680F00FF000E690F00FF000E6A5E
-:100220000F00FF000E6B0F00FF000E6C0F00FF00B1
-:100230000E6D0F00FF000E6E0F00FF000E6F0F001F
-:10024000FF000E700F00FF000E710F00FF000E7216
-:100250000F00FF000E730F00FF000E740F00FF0071
-:100260000E750F00FF000E760F00FF000E770F00D7
-:10027000FF000E780F00FF000E790F00FF000E7ACE
-:100280000F00FF000E7B0F00FF000E7C0F00FF0031
-:100290000E7D0F00FF000E7E0F00FF000E7F0F008F
-:1002A000FF000E800F00FF000E810F00FF000E8286
-:1002B0000F00FF000E830F00FF000E840F00FF00F1
-:1002C0000E850F00FF000E860F00FF000E870F0047
-:1002D000FF000E880F00FF000E890F00FF000E8A3E
-:1002E0000F00FF000E8B0F00FF000E8C0F00FF00B1
-:1002F0000E8D0F00FF000E8E0F00FF000E8F0F00FF
-:10030000FF000E900F00FF000E910F00FF000E92F5
-:100310000F00FF000E930F00FF000E940F00FF0070
-:100320000E950F00FF000E960F00FF000E970F00B6
-:10033000FF000E980F00FF000E990F00FF000E9AAD
-:100340000F00FF000E9B0F00FF000E9C0F00FF0030
-:100350000E9D0F00FF000E9E0F00FF000E9F0F006E
-:10036000FF000EA00F00FF000EA10F00FF000EA265
-:100370000F00FF000EA30F00FF000EA40F00FF00F0
-:100380000EA50F00FF000EA60F00FF000EA70F0026
-:10039000FF000EA80F00FF000EA90F00FF000EAA1D
-:1003A0000F00FF000EAB0F00FF000EAC0F00FF00B0
-:1003B0000EAD0F00FF000EAE0F00FF000EAF0F00DE
-:1003C000FF000EB00F00FF000EB10F00FF000EB2D5
-:1003D0000F00FF000EB30F00FF000EB40F00FF0070
-:1003E0000EB50F00FF000EB60F00FF000EB70F0096
-:1003F000FF000EB80F00FF000EB90F00FF000EBA8D
-:100400000F00FF000EBB0F00FF000EBC0F00FF002F
-:100410000EBD0F00FF000EBE0F00FF000EBF0F004D
-:10042000FF000EC00F00FF000EC10F00FF000EC244
-:100430000F00FF000EC30F00FF000EC40F00FF00EF
-:100440000EC50F00FF000EC60F00FF000EC70F0005
-:10045000FF000EC80F00FF000EC90F00FF000ECAFC
-:100460000F00FF000ECB0F00FF000ECC0F00FF00AF
-:100470000ECD0F00FF000ECE0F00FF000ECF0F00BD
-:10048000FF000ED00F00FF000ED10F00FF000ED2B4
-:100490000F00FF000ED30F00FF000ED40F00FF006F
-:1004A0000ED50F00FF000ED60F00FF000ED70F0075
-:1004B000FF000ED80F00FF000ED90F00FF000EDA6C
-:1004C0000F00FF000EDB0F00FF000EDC0F00FF002F
-:1004D0000EDD0F00FF000EDE0F00FF000EDF0F002D
-:1004E000FF000EE00F00FF000EE10F00FF000EE224
-:1004F0000F00FF000EE30F00FF000EE40F00FF00EF
-:100500000EE50F00FF000EE60F00FF000EE70F00E4
-:10051000FF000EE80F00FF000EE90F00FF000EEADB
-:100520000F00FF000EEB0F00FF000EEC0F00FF00AE
-:100530000EED0F00FF000EEE0F00FF000EEF0F009C
-:10054000FF000EF00F00FF000EF10F00FF000EF293
-:100550000F00FF000EF30F00FF000EF40F00FF006E
-:100560000EF50F00FF000EF60F00FF000EF70F0054
-:10057000FF000EF80F00FF000EF90F00FF000EFA4B
-:100580000F00FF000EFB0F00FF000EFC0F00FF002E
-:100590000EFD0F00FF000EFE0F00FF000EFF0F000C
-:1005A000FF000E100F00FF000E110F00FF000E12D3
-:1005B0000F00FF000E130F00FF000E140F00FF00CE
-:1005C0000E150F00FF000E160F00FF000E170F0094
-:1005D000FF000E180F00FF000E190F00FF000E1A8B
-:1005E0000F00FF000E1B0F00FF000E1C0F00FF008E
-:1005F0000E1D0F00FF000E1E0F00FF000E1F0F004C
-:10060000FF000E200F00FF000E210F00FF000E2242
-:100610000F00FF000E230F00FF000E240F00FF004D
-:100620000E250F00FF000E260F00FF000E270F0003
-:10063000FF000E280F00FF000E290F00FF000E2AFA
-:100640000F00FF000E2B0F00FF000E2C0F00FF000D
-:100650000E2D0F00FF000E2E0F00FF000E2F0F00BB
-:10066000FF000E300F00FF000E310F00FF000E32B2
-:100670000F00FF000E330F00FF000E340F00FF00CD
-:100680000E350F00FF000E360F00FF000E370F0073
-:10069000FF000E380F00FF000E390F00FF000E3A6A
-:1006A0000F00FF000E3B0F00FF000E3C0F00FF008D
-:1006B0000E3D0F00FF000E3E0F00FF000E3F0F002B
-:1006C000FF000E400F00FF000E410F00FF000E4222
-:1006D0000F00FF000E430F00FF000E440F00FF004D
-:1006E0000E450F00FF000E460F00FF000E470F00E3
-:1006F000FF000E480F00FF000E490F00FF000E4ADA
-:100700000F00FF000E4B0F00FF000E4C0F00FF000C
-:100710000E4D0F00FF000E4E0F00FF000E4F0F009A
-:10072000FF000E500F00FF000E510F00FF000E5291
-:100730000F00FF000E530F00FF000E540F00FF00CC
-:100740000E550F00FF000E560F00FF000E570F0052
-:10075000FF000E580F00FF000E590F00FF000E5A49
-:100760000F00FF000E5B0F00FF000E5C0F00FF008C
-:100770000E5D0F00FF000E5E0F00FF000E5F0F000A
-:10078000FF000E600F00FF000E610F00FF000E6201
-:100790000F00FF000E630F00FF000E640F00FF004C
-:1007A0000E650F00FF000E660F00FF000E670F00C2
-:1007B000FF000E680F00FF000E690F00FF000E6AB9
-:1007C0000F00FF000E6B0F00FF000E6C0F00FF000C
-:1007D0000E6D0F00FF000E6E0F00FF000E6F0F007A
-:1007E000FF000E700F00FF000E710F00FF000E7271
-:1007F0000F00FF000E730F00FF000E740F00FF00CC
-:100800000E750F00FF000E760F00FF000E770F0031
-:10081000FF000E780F00FF000E790F00FF000E7A28
-:100820000F00FF000E7B0F00FF000E7C0F00FF008B
-:100830000E7D0F00FF000E7E0F00FF000E7F0F00E9
-:10084000FF000E800F00FF000E810F00FF000E82E0
-:100850000F00FF000E830F00FF000E840F00FF004B
-:100860000E850F00FF000E860F00FF000E870F00A1
-:10087000FF000E880F00FF000E890F00FF000E8A98
-:100880000F00FF000E8B0F00FF000E8C0F00FF000B
-:100890000E8D0F00FF000E8E0F00FF000E8F0F0059
-:1008A000FF000E900F00FF000E910F00FF000E9250
-:1008B0000F00FF000E930F00FF000E940F00FF00CB
-:1008C0000E950F00FF000E960F00FF000E970F0011
-:1008D000FF000E980F00FF000E990F00FF000E9A08
-:1008E0000F00FF000E9B0F00FF000E9C0F00FF008B
-:1008F0000E9D0F00FF000E9E0F00FF000E9F0F00C9
-:10090000FF000EA00F00FF000EA10F00FF000EA2BF
-:100910000F00FF000EA30F00FF000EA40F00FF004A
-:100920000EA50F00FF000EA60F00FF000EA70F0080
-:10093000FF000EA80F00FF000EA90F00FF000EAA77
-:100940000F00FF000EAB0F00FF000EAC0F00FF000A
-:100950000EAD0F00FF000EAE0F00FF000EAF0F0038
-:10096000FF000EB00F00FF000EB10F00FF000EB22F
-:100970000F00FF000EB30F00FF000EB40F00FF00CA
-:100980000EB50F00FF000EB60F00FF000EB70F00F0
-:10099000FF000EB80F00FF000EB90F00FF000EBAE7
-:1009A0000F00FF000EBB0F00FF000EBC0F00FF008A
-:1009B0000EBD0F00FF000EBE0F00FF000EBF0F00A8
-:1009C000FF000EC00F00FF000EC10F00FF000EC29F
-:1009D0000F00FF000EC30F00FF000EC40F00FF004A
-:1009E0000EC50F00FF000EC60F00FF000EC70F0060
-:1009F000FF000EC80F00FF000EC90F00FF000ECA57
-:100A00000F00FF000ECB0F00FF000ECC0F00FF0009
-:100A10000ECD0F00FF000ECE0F00FF000ECF0F0017
-:100A2000FF000ED00F00FF000ED10F00FF000ED20E
-:100A30000F00FF000ED30F00FF000ED40F00FF00C9
-:100A40000ED50F00FF000ED60F00FF000ED70F00CF
-:100A5000FF000ED80F00FF000ED90F00FF000EDAC6
-:100A60000F00FF000EDB0F00FF000EDC0F00FF0089
-:100A70000EDD0F00FF000EDE0F00FF000EDF0F0087
-:100A8000FF000EE00F00FF000EE10F00FF000EE27E
-:100A90000F00FF000EE30F00FF000EE40F00FF0049
-:100AA0000EE50F00FF000EE60F00FF000EE70F003F
-:100AB000FF000EE80F00FF000EE90F00FF000EEA36
-:100AC0000F00FF000EEB0F00FF000EEC0F00FF0009
-:100AD0000EED0F00FF000EEE0F00FF000EEF0F00F7
-:100AE000FF000EF00F00FF000EF10F00FF000EF2EE
-:100AF0000F00FF000EF30F00FF000EF40F00FF00C9
-:100B00000EF50F00FF000EF60F00FF000EF70F00AE
-:100B1000FF000EF80F00FF000EF90F00FF000EFAA5
-:100B20000F00FF000EFB0F00FF000EFC0F00FF0088
-:100B30000EFD0F00FF000EFE0F00FF000EFF0F0066
-:100B4000FF000802FF000B070A440D000C00FF0025
-:100B50000B070A420D000C00FF000B070A430D00B3
-:100B60000C00FF000B070A7C0D000C00FF000B07B8
-:100B70000A7E0D000C00FF000B070A460D000C005A
-:100B8000FF000B070A490D000C00FF000B070A4786
-:100B90000D000C00FF000B070A4A0D000C00FF00BF
-:100BA0000E100F00FF000E110F00FF000E120F00BD
-:100BB000FF000E130F00FF000E140F00FF000E15B4
-:100BC0000F00FF000E160F00FF000E170F00FF00B2
-:100BD0000E180F00FF000E190F00FF000E1A0F0075
-:100BE000FF000E1B0F00FF000E1C0F00FF000E1D6C
-:100BF0000F00FF000E1E0F00FF000E1F0F00FF0072
-:100C00000E200F00FF000E210F00FF000E220F002C
-:100C1000FF000E230F00FF000E240F00FF000E2523
-:100C20000F00FF000E260F00FF000E270F00FF0031
-:100C30000E280F00FF000E290F00FF000E2A0F00E4
-:100C4000FF000E2B0F00FF000E2C0F00FF000E2DDB
-:100C50000F00FF000E2E0F00FF000E2F0F00FF00F1
-:100C60000E300F00FF000E310F00FF000E320F009C
-:100C7000FF000E330F00FF000E340F00FF000E3593
-:100C80000F00FF000E360F00FF000E370F00FF00B1
-:100C90000E380F00FF000E390F00FF000E3A0F0054
-:100CA000FF000E3B0F00FF000E3C0F00FF000E3D4B
-:100CB0000F00FF000E3E0F00FF000E3F0F00FF0071
-:100CC0000E400F00FF000E410F00FF000E420F000C
-:100CD000FF000E430F00FF000E440F00FF000E4503
-:100CE0000F00FF000E460F00FF000E470F00FF0031
-:100CF0000E480F00FF000E490F00FF000E4A0F00C4
-:100D0000FF000E4B0F00FF000E4C0F00FF000E4DBA
-:100D10000F00FF000E4E0F00FF000E4F0F00FF00F0
-:100D20000E500F00FF000E510F00FF000E520F007B
-:100D3000FF000E530F00FF000E540F00FF000E5572
-:100D40000F00FF000E560F00FF000E570F00FF00B0
-:100D50000E580F00FF000E590F00FF000E5A0F0033
-:100D6000FF000E5B0F00FF000E5C0F00FF000E5D2A
-:100D70000F00FF000E5E0F00FF000E5F0F00FF0070
-:100D80000E600F00FF000E610F00FF000E620F00EB
-:100D9000FF000E630F00FF000E640F00FF000E65E2
-:100DA0000F00FF000E660F00FF000E670F00FF0030
-:100DB0000E680F00FF000E690F00FF000E6A0F00A3
-:100DC000FF000E6B0F00FF000E6C0F00FF000E6D9A
-:100DD0000F00FF000E6E0F00FF000E6F0F00FF00F0
-:100DE0000E700F00FF000E710F00FF000E720F005B
-:100DF000FF000E730F00FF000E740F00FF000E7552
-:100E00000F00FF000E760F00FF000E770F00FF00AF
-:100E10000E780F00FF000E790F00FF000E7A0F0012
-:100E2000FF000E7B0F00FF000E7C0F00FF000E7D09
-:100E30000F00FF000E7E0F00FF000E7F0F00FF006F
-:100E40000E800F00FF000E810F00FF000E820F00CA
-:100E5000FF000E830F00FF000E840F00FF000E85C1
-:100E60000F00FF000E860F00FF000E870F00FF002F
-:100E70000E880F00FF000E890F00FF000E8A0F0082
-:100E8000FF000E8B0F00FF000E8C0F00FF000E8D79
-:100E90000F00FF000E8E0F00FF000E8F0F00FF00EF
-:100EA0000E900F00FF000E910F00FF000E920F003A
-:100EB000FF000E930F00FF000E940F00FF000E9531
-:100EC0000F00FF000E960F00FF000E970F00FF00AF
-:100ED0000E980F00FF000E990F00FF000E9A0F00F2
-:100EE000FF000E9B0F00FF000E9C0F00FF000E9DE9
-:100EF0000F00FF000E9E0F00FF000E9F0F00FF006F
-:100F00000EA00F00FF000EA10F00FF000EA20F00A9
-:100F1000FF000EA30F00FF000EA40F00FF000EA5A0
-:100F20000F00FF000EA60F00FF000EA70F00FF002E
-:100F30000EA80F00FF000EA90F00FF000EAA0F0061
-:100F4000FF000EAB0F00FF000EAC0F00FF000EAD58
-:100F50000F00FF000EAE0F00FF000EAF0F00FF00EE
-:100F60000EB00F00FF000EB10F00FF000EB20F0019
-:100F7000FF000EB30F00FF000EB40F00FF000EB510
-:100F80000F00FF000EB60F00FF000EB70F00FF00AE
-:100F90000EB80F00FF000EB90F00FF000EBA0F00D1
-:100FA000FF000EBB0F00FF000EBC0F00FF000EBDC8
-:100FB0000F00FF000EBE0F00FF000EBF0F00FF006E
-:100FC0000EC00F00FF000EC10F00FF000EC20F0089
-:100FD000FF000EC30F00FF000EC40F00FF000EC580
-:100FE0000F00FF000EC60F00FF000EC70F00FF002E
-:100FF0000EC80F00FF000EC90F00FF000ECA0F0041
-:10100000FF000ECB0F00FF000ECC0F00FF000ECD37
-:101010000F00FF000ECE0F00FF000ECF0F00FF00ED
-:101020000ED00F00FF000ED10F00FF000ED20F00F8
-:10103000FF000ED30F00FF000ED40F00FF000ED5EF
-:101040000F00FF000ED60F00FF000ED70F00FF00AD
-:101050000ED80F00FF000ED90F00FF000EDA0F00B0
-:10106000FF000EDB0F00FF000EDC0F00FF000EDDA7
-:101070000F00FF000EDE0F00FF000EDF0F00FF006D
-:101080000EE00F00FF000EE10F00FF000EE20F0068
-:10109000FF000EE30F00FF000EE40F00FF000EE55F
-:1010A0000F00FF000EE60F00FF000EE70F00FF002D
-:1010B0000EE80F00FF000EE90F00FF000EEA0F0020
-:1010C000FF000EEB0F00FF000EEC0F00FF000EED17
-:1010D0000F00FF000EEE0F00FF000EEF0F00FF00ED
-:1010E0000EF00F00FF000EF10F00FF000EF20F00D8
-:1010F000FF000EF30F00FF000EF40F00FF000EF5CF
-:101100000F00FF000EF60F00FF000EF70F00FF00AC
-:101110000EF80F00FF000EF90F00FF000EFA0F008F
-:10112000FF000EFB0F00FF000EFC0F00FF000EFD86
-:101130000F00FF000EFE0F00FF000EFF0F0009055D
-:101140000B000A000D010C7CFF000D000C1EFF00BF
-:101150000D000C00FF000D000C00FF000D000CF551
-:10116000FF000D000C11FF000D000C20FF000D0012
-:101170000C32FF000D000C40FF000D000C13FF00AF
-:101180000D000C00FF000D000C14FF000D020C768A
-:10119000FF000D000C60FF000D000C80FF000D0231
-:1011A0000C00FF000D000C00FF000D000C00FF0004
-:1011B0000D020C00FF000D000C00FF000D000C00E4
-:1011C000FF000D000C00FF000D000C00FF000D00E3
-:1011D0000C00FF000D000C00FF000D000C00FF00D4
-:1011E0000D000C00FF000D000C00FF000D000C00B6
-:1011F000FF000D000C00FF000D000C00FF000D00B3
-:101200000C00FF000D000C00FF000D000C00FF00A3
-:101210000D000C00FF000D000C00FF000D000C0085
-:10122000FF000D000C00FF000D000C00FF000D0082
-:101230000C00FF000D000C00FF000D000C00FF0073
-:101240000D000C00FF000D000C00FF000D000C0055
-:10125000FF000D000C00FF000D000C00FF000D0052
-:101260000C00FF000D000C00FF000D000C00FF0043
-:101270000D000C00FF000D000C00FF000D000C0025
-:10128000FF000D000C00FF000D000C00FF000D0022
-:101290000C00FF000D000C00FF000D000C00FF0013
-:1012A0000D000C00FF000D000C00FF000D000C00F5
-:1012B000FF000D000C00FF000D000C00FF000D00F2
-:1012C0000C00FF000D000C18FF000D000C19FF00B2
-:1012D0000D010C1AFF000D010C20FF000D010C4048
-:1012E000FF000D010C17FF000D000C00FF000D01A9
-:1012F0000C80FF000D010C20FF000D000C10FF0002
-:101300000D010CA0FF000D030CD1FF000D000C001F
-:10131000FF000D010CF2FF000D020C00FF000D009C
-:101320000C13FF000D000C00FF000D000CF4FF007B
-:101330000D020CE0FF000D000C15FF000D000C006D
-:10134000FF000D000C16FF000D000C00FF000D004B
-:101350000C17FF000D000C20FF000D000C00FF001B
-:101360000D000C20FF000D000C50FF000D000C00C4
-:10137000FF000D000C40FF000D000C00FF000D00F1
-:101380000C71FF000D020C00FF000D000C60FF004F
-:101390000D000C00FF000D000C92FF000D000C0072
-:1013A000FF000D000C80FF000D000C00FF000D0081
-:1013B0000CB3FF000D020C00FF000D000CA0FF009D
-:1013C0000D000C00FF000D000CD4FF000D000C0000
-:1013D000FF000D000C40FF000D000C80FF000D0011
-:1013E0000CF5FF000D000C20FF000D000C70FF003D
-:1013F0000D000CA0FF000D020C11FF000D000C16DB
-:10140000FF000D000C00FF000D000C00FF000D00A0
-:101410000C00FF000D000C20FF000D020C00FF006F
-:101420000D000C20FF000D000C10FF000D000C172C
-:10143000FF000D000C1BFF000D000C1DFF000D0236
-:101440000CDFFF0009050B010A000D000C00FF0076
-:101450000D000C00FF000D000C00FF000D020C0041
-:10146000FF000D000C19FF000D000C1FFF000D0008
-:101470000C00FF000D000C00FF000D000C00FF0031
-:101480000D030CD8FF000D000C00FF000D020C2016
-:10149000FF000D000C19FF000D000C00FF000D00F7
-:1014A0000C00FF000D000C18FF000D010CC0FF0028
-:1014B0000D010CFAFF000D000C1AFF000D000C00CE
-:1014C000FF000D000C00FF000D000C00FF000D00E0
-:1014D0000C00FF000D000C00FF000D000C00FF00D1
-:1014E0000D000C00FF000D000C00FF000D000C00B3
-:1014F000FF000D000C00FF000D000C00FF000D00B0
-:101500000C00FF000D000C00FF000D000C00FF00A0
-:101510000D000C00FF000D000C00FF000D000C0082
-:10152000FF000D000C00FF000D000C00FF000D007F
-:101530000C00FF000D000C00FF000D000C00FF0070
-:101540000D000C00FF000D000C00FF000D000C0052
-:10155000FF000D000C00FF000D000C00FF000D004F
-:101560000C00FF000D000C00FF000D000C00FF0040
-:101570000D000C00FF000D000C00FF000D000C0022
-:10158000FF000D000C00FF000D000C00FF000D001F
-:101590000C00FF000D000C00FF000D000C00FF0010
-:1015A0000D000C00FF000D000C00FF000D000C00F2
-:1015B000FF000D000C00FF000D000C00FF000D00EF
-:1015C0000C00FF000D000C00FF000D020C40FF009E
-:1015D0000D020C60FF000D000C00FF000D000C0060
-:1015E000FF000D000C00FF000D020CC0FF000D02FB
-:1015F0000C80FF000D000C00FF000D020CFBFF0033
-:101600000D020CA0FF000D000C00FF000D000C1BD4
-:10161000FF000D020CD7FF000D000C00FF000D02B3
-:101620000CF7FF000D030C20FF000D030C00FF0062
-:101630000D000C00FF000D000C1CFF000D030C3C06
-:10164000FF000D000C00FF000D030C3FFF000D001C
-:101650000C00FF000D030CC0FF000D000C00FF008C
-:101660000D030CDFFF000D000C00FF000D000C004F
-:10167000FF000D030C5DFF000D000C00FF000D03CB
-:101680000CC0FF000D000C00FF000D030C7DFF00DF
-:101690000D000C00FF000D030CC0FF000D000C003E
-:1016A000FF000D030C9EFF000D000C00FF000D035A
-:1016B0000CC0FF000D000C00FF000D030CBEFF006E
-:1016C0000D000C00FF000D030CC0FF000D000C000E
-:1016D000FF000D000C00FF000D000C00FF000D00CE
-:1016E0000C00FF000D000C1BFF000D000C00FF00A4
-:1016F0000D000C00FF000D000C00FF000D020CDBC4
-:10170000FF000D000C00FF000D020CDBFF000D00C0
-:101710000C00FF000D020CE0FF000D000C00FF00AC
-:101720000D020CFBFF000D000C00FF000D020CC0B1
-:10173000FF000D020C40FF000D020CFBFF000D022C
-:101740000C60FF000D000C1BFF0009050B020A00D6
-:101750000CC4FF000C00FF000C44FF000C07FF004E
-:101760000C44FF000C00FF000C40FF000C25FF00A4
-:101770000C01FF000C06FF000CC4FF000C07FF006B
-:101780000C40FF000C25FF000C01FF000C00FF00C7
-:101790000C46FF000C46FF000C00FF000C00FF0091
-:1017A0000C00FF000C00FF000C00FF000C00FF000D
-:1017B0000C00FF000C00FF000C00FF000C00FF00FD
-:1017C0000C00FF000C00FF000C00FF000C00FF00ED
-:1017D0000C00FF000C00FF000C00FF000C00FF00DD
-:1017E0000C00FF000C00FF000C00FF000C00FF00CD
-:1017F0000C00FF000C00FF000C00FF000C00FF00BD
-:101800000C00FF000C00FF000C00FF000C00FF00AC
-:101810000C00FF000C00FF000C00FF000C00FF009C
-:101820000C00FF000C00FF000C00FF000C00FF008C
-:101830000C00FF000C00FF000C00FF000C00FF007C
-:101840000C00FF000C00FF000C00FF000C00FF006C
-:101850000C46FF000C07FF000C05FF000C05FF0005
-:101860000C05FF000C04FF000C07FF000C05FF0037
-:101870000C04FF000C07FF000C05FF000C44FF00E8
-:101880000C46FF000C44FF000C46FF000C46FF0016
-:101890000C07FF000C05FF000C44FF000C46FF0086
-:1018A0000C05FF000C46FF000C05FF000C46FF0076
-:1018B0000C05FF000C46FF000C05FF000C44FF0068
-:1018C0000C46FF000C05FF000C07FF000C44FF0056
-:1018D0000C46FF000C05FF000C07FF000C44FF0046
-:1018E0000C46FF000C05FF000C07FF000C44FF0036
-:1018F0000C46FF000C05FF000C07FF000C44FF0026
-:101900000C05FF000C05FF000C05FF000C44FF0058
-:101910000C05FF000C05FF000C05FF000C46FF0046
-:101920000C05FF000C46FF000C05FF000C46FF00F5
-:101930000C05FF000C46FF000C05FF000C46FF00E5
-:101940000C07FF000C46FF000C07FF000C44FF00D3
-:1019500009050B030A000C07FF000C40FF000C00F8
-:10196000FF000C00FF000C00FF000C47FF000C0004
-:10197000FF000C40FF000C00FF000C40FF000C06B5
-:10198000FF000C40FF000C00FF000C00FF000C00EB
-:10199000FF000C00FF000C00FF000C00FF000C001B
-:1019A000FF000C00FF000C00FF000C00FF000C000B
-:1019B000FF000C00FF000C00FF000C00FF000C00FB
-:1019C000FF000C00FF000C00FF000C00FF000C00EB
-:1019D000FF000C00FF000C00FF000C00FF000C00DB
-:1019E000FF000C00FF000C00FF000C00FF000C00CB
-:1019F000FF000C00FF000C00FF000C00FF000C00BB
-:101A0000FF000C00FF000C00FF000C00FF000C00AA
-:101A1000FF000C00FF000C00FF000C00FF000C009A
-:101A2000FF000C00FF000C00FF000C00FF000C008A
-:101A3000FF000C00FF000C00FF000C00FF000C007A
-:101A4000FF000C00FF000C00FF000C00FF000C006A
-:101A5000FF000C00FF000C80FF000C80FF000CC09A
-:101A6000FF000C00FF000C00FF000C40FF000C000A
-:101A7000FF000C00FF000C00FF000C40FF000C00FA
-:101A8000FF000C40FF000C00FF000C60FF000C008A
-:101A9000FF000C70FF000C00FF000C40FF000C006A
-:101AA000FF000C40FF000C00FF000C42FF000C0088
-:101AB000FF000C40FF000C00FF000C02FF000C00B8
-:101AC000FF000C40FF000C00FF000C00FF000C00AA
-:101AD000FF000C40FF000C00FF000C00FF000C009A
-:101AE000FF000C40FF000C00FF000C00FF000C008A
-:101AF000FF000C40FF000C00FF000C00FF000C007A
-:101B0000FF000C40FF000C00FF000C00FF000C0069
-:101B1000FF000C42FF000C00FF000C40FF000C0017
-:101B2000FF000C42FF000C00FF000C02FF000C0045
-:101B3000FF000C02FF000C00FF000C02FF000C0075
-:101B4000FF000C42FF000C00FF000CC0FF000C0067
-:101B5000FF000C40FF0009050B040A000C63FF00A6
-:101B60000C03FF000C26FF000C02FF000C2CFF00F2
-:101B70000C00FF000C24FF000C00FF000C2EFF00E7
-:101B80000C02FF000C02FF000C02FF000C00FF0023
-:101B90000C00FF000C00FF000C00FF000C00FF0019
-:101BA0000C00FF000C00FF000C00FF000C00FF0009
-:101BB0000C00FF000C00FF000C00FF000C00FF00F9
-:101BC0000C00FF000C00FF000C00FF000C00FF00E9
-:101BD0000C00FF000C00FF000C00FF000C00FF00D9
-:101BE0000C00FF000C00FF000C00FF000C00FF00C9
-:101BF0000C00FF000C00FF000C00FF000C00FF00B9
-:101C00000C00FF000C00FF000C00FF000C00FF00A8
-:101C10000C00FF000C00FF000C00FF000C00FF0098
-:101C20000C00FF000C00FF000C00FF000C00FF0088
-:101C30000C00FF000C00FF000C00FF000C00FF0078
-:101C40000C00FF000C00FF000C00FF000C00FF0068
-:101C50000C00FF000C00FF000C00FF000C00FF0058
-:101C60000C01FF000C20FF000C00FF000C60FF00C7
-:101C70000C00FF000C20FF000C00FF000C20FF00F8
-:101C80000C00FF000C20FF000C00FF000C20FF00E8
-:101C90000C00FF000C20FF000C00FF000C20FF00D8
-:101CA0000C00FF000C20FF000C00FF000C20FF00C8
-:101CB0000C00FF000C60FF000C00FF000C20FF0078
-:101CC0000C00FF000C60FF000C00FF000C20FF0068
-:101CD0000C00FF000C60FF000C00FF000C20FF0058
-:101CE0000C00FF000C60FF000C00FF000C20FF0048
-:101CF0000C00FF000C60FF000C00FF000C20FF0038
-:101D00000C00FF000C60FF000C00FF000C20FF0027
-:101D10000C00FF000C20FF000C00FF000C22FF0055
-:101D20000C02FF000C22FF000C02FF000C20FF0041
-:101D30000C00FF000C60FF000C00FF000C22FF00F5
-:101D40000C02FF000C62FF000C02FF000C20FF00E1
-:101D50000C01FF000C21FF000C01FF0009010B0624
-:101D60000A000D000C00FF000A020D000C00FF002D
-:101D70000A040D000C00FF000A060D000C00FF0015
-:101D80000A080D000C00FF000A0A0D000C00FF00FD
-:101D90000A0C0D000C00FF000A0E0D000C00FF00E5
-:101DA0000A100D000C00FF000A120D000C00FF00CD
-:101DB0000A140D000C00FF000A160D000C00FF00B5
-:101DC0000A180D000C00FF000A1A0D000C00FF009D
-:101DD0000A1C0D000C00FF000A1E0D000C00FF0085
-:101DE0000A200D000C00FF000A220D000C00FF006D
-:101DF0000A240D000C00FF000A260D000C00FF0055
-:101E00000A280D000C00FF000A2A0D000C00FF003C
-:101E10000A2C0D000C00FF000A2E0D000C00FF0024
-:101E20000A300D000C00FF000A320D000C00FF000C
-:101E30000A340D000C00FF000A360D000C00FF00F4
-:101E40000A380D000C00FF000A3A0D000C00FF00DC
-:101E50000A3C0D000C00FF000A3E0D000C00FF00C4
-:101E60000A400D000C00FF000A420D030C00FF00A9
-:101E70000A440D010C00FF000A460D0A0C21FF0068
-:101E80000A480D0D0C23FF000A4A0D230C1BFF000E
-:101E90000A4C0D370C8FFF000A4E0D450C77FF00E2
-:101EA0000A500D520CE2FF000A520D1C0C92FF006A
-:101EB0000A540D1C0C52FF000A560D070C00FF00BF
-:101EC0000A580D2F0CC6FF000A5A0D0B0C00FF001C
-:101ED0000A5C0D300C06FF000A5E0D170C00FF00B7
-:101EE0000A600D3D0CDAFF000A620D290C00FF00AC
-:101EF0000A640D3E0C41FF000A660D390C00FF001C
-:101F00000A680D4C0C48FF000A6A0D490C00FF00DE
-:101F10000A6C0D4C0C6CFF000A6E0D110CD2FF0008
-:101F20000A700D160C0CFF000A720D000C00FF0069
-:101F30000A740D000C80FF000A760D0F0C00FF00E4
-:101F40000A780D000C80FF000A7A0D130C00FF00C8
-:101F50000A7C0D800C00FF000A7E0D800C80FF00C3
-:101F600009050B070A000D0F0CFFFF000D000C0008
-:101F7000FF000D080C00FF000D080C00FF000D0213
-:101F80000C00FF000D000C00FF000D000C00FF0016
-:101F90000D0F0CFFFF000D000C00FF000D000C00EA
-:101FA000FF000D080C00FF000D080C00FF000D00E5
-:101FB0000C00FF000D0F0CFFFF000D000C00FF00D8
-:101FC0000D000C00FF000D0F0CFFFF000D0F0CFFAC
-:101FD000FF000D000C00FF000D000C00FF000D00C5
-:101FE0000C00FF000D000C00FF000D000C00FF00B6
-:101FF0000D000C00FF000D000C00FF000D000C0098
-:10200000FF000D000C00FF000D000C00FF000D0094
-:102010000C00FF000D000C00FF000D000C00FF0085
-:102020000D000C00FF000D000C00FF000D000C0067
-:10203000FF000D000C00FF000D000C00FF000D0064
-:102040000C00FF000D000C00FF000D000C00FF0055
-:102050000D000C00FF000D000C00FF000D000C0037
-:10206000FF000D000C00FF000D000C00FF000D0034
-:102070000C00FF000D000C00FF000D000C00FF0025
-:102080000D000C00FF000D000C00FF000D000C0007
-:10209000FF000D000C00FF000D000C00FF000D0004
-:1020A0000C00FF000D000C00FF000D000C00FF00F5
-:1020B0000D000C00FF000D000C00FF000D000C00D7
-:1020C000FF000D000C00FF000D000C00FF000D00D4
-:1020D0000C00FF000D000C00FF000D000C00FF00C5
-:1020E0000D000C00FF000D000C00FF000D000C00A7
-:1020F000FF000D000C00FF000D000C00FF000D00A4
-:102100000C00FF000D000C00FF000D000C00FF0094
-:102110000D000C00FF000D000C00FF000D000C0076
-:10212000FF000D000C00FF000D0F0CFFFF000D0F56
-:102130000CFFFF000D0F0CFFFF000D0F0CFFFF0049
-:102140000D020CE9FF000D060C8CFF000D060C8C37
-:10215000FF000D0F0CFFFF000D1A0C75FF000D0D99
-:102160000C8BFF000D040CE9FF000D0B0C16FF009B
-:102170000D1A0C38FF000D0D0CC8FF000D040C6F7C
-:10218000FF000D0B0C91FF000D0F0CFFFF000D0663
-:102190000C40FF000D060C40FF000D020C8FFF00ED
-:1021A0000D0F0CFFFF000D060C62FF000D060C6208
-:1021B000FF000D020C7BFF000D0F0CFFFF000D0652
-:1021C0000C97FF000D060C97FF000D020C52FF004C
-:1021D0000D0F0CFFFF000D060CF6FF000D060CF6B0
-:1021E000FF000D020C19FF000D050C55FF000D0539
-:1021F0000C55FF000D050C55FF000D050C55FF009B
-:102200000D050C55FF000D050C55FF000D050C5577
-:10221000FF000D050C55FF000D140CDAFF000D0D2D
-:102220000C93FF000D040CDAFF000D050C93FF006A
-:102230000D140CDAFF000D0D0C93FF000D040CDAE9
-:10224000FF000D050C93FF000D000C00FF000D00BA
-:102250000C00FF000D000C00FF000D000C00FF0043
-:102260000D020C00FF000E010F00FF000E020F0018
-:10227000FF000E010F01FF000E020F00FF000E0114
-:102280000F02FF000E020F00FF000E010F03FF0000
-:102290000E020F00FF000E010F04FF000E020F00E0
-:1022A000FF000E010F05FF000E020F00FF000E01E0
-:1022B0000F06FF000E020F00FF000E010F07FF00C8
-:1022C0000E020F00FF000E010F08FF000E020F00AC
-:1022D000FF000E010F09FF000E020F00FF000E01AC
-:1022E0000F0AFF000E020F00FF000E010F0BFF0090
-:1022F0000E020F00FF000E010F0CFF000E020F0078
-:10230000FF000E010F0DFF000E020F00FF000E0177
-:102310000F0EFF000E020F00FF000E010F0FFF0057
-:102320000E020F00FF000EB00F20FF000EB10F20B5
-:10233000FF000EB20F20FF000EB30F20FF000EB4FF
-:102340000F20FF000EB50F20FF000EB60F20FF007C
-:102350000EB70F20FF000EB80F20FF000EB90F20A0
-:10236000FF000EBA0F20FF000EBB0F20FF000EBCB7
-:102370000F20FF000EBD0F20FF000EBE0F20FF003C
-:102380000EBF0F20FF000EF00F20FF000EF10F20F8
-:10239000FF000EF20F20FF000EF30F20FF000EF4DF
-:1023A0000F20FF000EF50F20FF000EF60F20FF009C
-:1023B0000EF70F20FF000EF80F20FF000EF90F2080
-:1023C000FF000EFA0F20FF000EFB0F20FF000EFC97
-:1023D0000F20FF000EFD0F20FF000EFE0F20FF005C
-:1023E0000EFF0F20FF000E100FFFFF000E110FFF5A
-:1023F000FF000E120FFFFF000E130FFFFF000E1461
-:102400000FFFFF000E150FFFFF000E160FFFFF005E
-:102410000E170FFFFF000E180FFFFF000E190FFF22
-:10242000FF000E1A0FFFFF000E1B0FFFFF000E1C18
-:102430000FFFFF000E1D0FFFFF000E1E0F40FF00DD
-:102440000E1F0FFFFF000E200FFFFF000E210FFFDA
-:10245000FF000E220FFFFF000E230FFFFF000E24D0
-:102460000FFFFF000E250FFFFF000E260FFFFF00DE
-:102470000E270FFFFF000E280FFFFF000E290FFF92
-:10248000FF000E2A0FFFFF000E2B0FFFFF000E2C88
-:102490000FFFFF000E2D0FFFFF000E2E0F00FF009D
-:1024A0000E2F0F00FF000E300F00FF000E310F0047
-:1024B000FF000E320F00FF000E330F00FF000E343E
-:1024C0000F00FF000E350F00FF000E360F00FF005B
-:1024D0000E370F00FF000E380F00FF000E390F00FF
-:1024E000FF000E3A0F00FF000E3B0F00FF000E3CF6
-:1024F0000F00FF000E3D0F00FF000E3E0F00FF001B
-:102500000E3F0F20FF000E400F00FF000E410F0096
-:10251000FF000E420F00FF000E430F00FF000E44AD
-:102520000F00FF000E450F00FF000E460F00FF00DA
-:102530000E470F00FF000E480F00FF000E490F006E
-:10254000FF000E4A0F00FF000E4B0F00FF000E4C65
-:102550000F00FF000E4D0F00FF000E4E0F0EFF008C
-:102560000E4F0F0EFF000E500F00FF000E510F0018
-:10257000FF000E520F00FF000E530F00FF000E541D
-:102580000F00FF000E550F00FF000E560F00FF005A
-:102590000E570F00FF000E580F00FF000E590F00DE
-:1025A000FF000E5A0F00FF000E5B0F00FF000E5CD5
-:1025B0000F00FF000E5D0F00FF000E5E0F00FF001A
-:1025C0000E5F0F00FF000E600F00FF000E610F0096
-:1025D000FF000E620F00FF000E630F00FF000E648D
-:1025E0000F00FF000E650F00FF000E660F00FF00DA
-:1025F0000E670F00FF000E680F00FF000E690F004E
-:10260000FF000E6A0F00FF000E6B0F00FF000E6C44
-:102610000F40FF000E6D0F00FF000E6E0F40FF0019
-:102620000E6F0F40FF000E700FC0FF000E710FC045
-:10263000FF000E720FC0FF000E730FC0FF000E747C
-:102640000FC0FF000E750FC0FF000E760FC0FF0019
-:102650000E770FC0FF000E780FC0FF000E790FC07D
-:10266000FF000E7A0FC0FF000E7B0FC0FF000E7C34
-:102670000FC0FF000E7D0FC0FF000E7E0FC0FF00D9
-:102680000E7F0FC0FF000E800F00FF000E810F00B5
-:10269000FF000E820F00FF000E830F00FF000E846C
-:1026A0000F00FF000E850F00FF000E860F00FF00D9
-:1026B0000E870F00FF000E880F00FF000E890F002D
-:1026C000FF000E8A0F00FF000E8B0F00FF000E8C24
-:1026D0000F00FF000E8D0F00FF000E8E0F00FF0099
-:1026E0000E8F0F00FF000E900F00FF000E910F00E5
-:1026F000FF000E920F00FF000E930F00FF000E94DC
-:102700000F00FF000E950F00FF000E960F00FF0058
-:102710000E970F00FF000E980F00FF000E990F009C
-:10272000FF000E9A0F00FF000E9B0F00FF000E9C93
-:102730000F00FF000E9D0F00FF000E9E0F00FF0018
-:102740000E9F0F00FF000EA00F00FF000EA10F0054
-:10275000FF000EA20F00FF000EA30F00FF000EA44B
-:102760000F00FF000EA50F00FF000EA60F00FF00D8
-:102770000EA70F00FF000EA80F00FF000EA90F000C
-:10278000FF000EAA0F00FF000EAB0F00FF000EAC03
-:102790000F00FF000EAD0F00FF000EAE0F00FF0098
-:1027A0000EAF0F00FF000EC00F00FF000EC10F00A4
-:1027B000FF000EC20F00FF000EC30F00FF000EC48B
-:1027C0000F00FF000EC50F00FF000EC60F00FF0038
-:1027D0000EC70F00FF000EC80F00FF000EC90F004C
-:1027E000FF000ECA0F00FF000ECB0F00FF000ECC43
-:1027F0000F00FF000ECD0F00FF000ECE0F00FF00F8
-:102800000ECF0F00FF000ED00F00FF000ED10F0003
-:10281000FF000ED20F00FF000ED30F00FF000ED4FA
-:102820000F00FF000ED50F00FF000ED60F00FF00B7
-:102830000ED70F00FF000ED80F00FF000ED90F00BB
-:10284000FF000EDA0F00FF000EDB0F00FF000EDCB2
-:102850000F00FF000EDD0F00FF000EDE0F10FF0067
-:102860000EDF0F10FF000EE00F00FF000EE10F0063
-:10287000FF000EE20F00FF000EE30F00FF000EE46A
-:102880000F00FF000EE50F00FF000EE60F00FF0037
-:102890000EE70F00FF000EE80F00FF000EE90F002B
-:1028A000FF000EEA0F00FF000EEB0F00FF000EEC22
-:1028B0000F00FF000EED0F00FF000EEE0F00FF00F7
-:1028C0000EEF0F00FF000E010F000E020F01FF00C0
-:1028D0000E010F010E020F01FF000E010F020E028A
-:1028E0000F01FF000E010F030E020F01FF000E018A
-:1028F0000F040E020F01FF000E010F050E020F0163
-:10290000FF000E010F060E020F01FF000E010F0760
-:102910000E020F01FF000E010F080E020F01FF0053
-:102920000E010F090E020F01FF000E010F0A0E0229
-:102930000F01FF000E010F0B0E020F01FF000E0131
-:102940000F0C0E020F01FF000E010F0D0E020F0102
-:10295000FF000E010F0E0E020F01FF000E010F0F00
-:102960000E020F01FF0008020B070A460D000C00C3
-:10297000FF000B070A490D000C00FF000B000A4B7B
-:102980000D030C11FF000B000A4D0D010C32FF006E
-:102990000B070A460D000C00FF000B070A490D004B
-:1029A0000C00FF000B070A400D000C00FF000B0796
-:1029B0000A410D000C00FF000B010A400D020C4003
-:1029C000FF000B010A410D020C60FF000B070A40DB
-:1029D0000D000C00FF000B070A410D000C00FF006A
-:1029E0000B070A470D000C00FF000B070A4A0D00F9
-:1029F0000C00FF000B000A470D010C00FF000B004C
-:102A00000A4A0D010C20FF000B070A470D000C00BD
-:102A1000FF000B070A4A0D000C00FF000B070A7CA1
-:102A20000D000C00FF000B070A7E0D000C00FF00DC
-:102A30000B000A000D010C1CFF000B070A7C0D00A7
-:102A40000C00FF000B070A7E0D000C00FF000B07B7
-:102A50000A440D000C00FF000B000A440D010C009D
-:102A6000FF000B070A440D000C00FF000B070A4291
-:102A70000D000C00FF000B070A430D000C00FF00C7
-:102A80000B000A420D010C1AFF000B000A430D0156
-:102A90000C20FF000B070A420D000C00FF000B0783
-:102AA0000A430D000C00FF000B070A400D000C004C
-:102AB000FF000B070A410D000C00FF000B010A404C
-:102AC0000D020C40FF000B010A410D020C60FF00DB
-:102AD0000B070A400D000C00FF000B070A410D0018
-:102AE0000C00FF000B070A440D0F0CFFFF000B0743
-:102AF0000A420D000C00FF000B070A430D000C00FA
-:102B0000FF000B070A400D000C00FF000B070A41F5
-:102B10000D000C00FF000B070A510D060C40FF00D2
-:102B20000B070A500D060C40FF000B070A4F0D0360
-:102B30000C81FF000B070A530D1A0C76FF000B07E0
-:102B40000A540D0D0C8BFF000B070A550D040CE900
-:102B5000FF000B070A560D0B0C17FF000B070A5757
-:102B60000D1A0C38FF000B070A580D0D0CC9FF0099
-:102B70000B070A590D040C6FFF000B070A5A0D0BC7
-:102B80000C91FF000B070A730D140CDAFF000B0702
-:102B90000A740D0D0C93FF000B070A750D040CD978
-:102BA000FF000B070A760D050C93FF000B070A7751
-:102BB0000D140CDAFF000B070A780D0D0C93FF00C3
-:102BC0000B070A790D040CD9FF000B070A7A0D05D3
-:102BD0000C93FF000B070A5E0D030C68FF000B0748
-:102BE0000A5C0D040C31FF000B070A5D0D040C316B
-:102BF000FF000B070A620D030C52FF000B070A606F
-:102C00000D040C76FF000B070A610D040C76FF0023
-:102C10000B070A660D030C2EFF000B070A640D0458
-:102C20000CDAFF000B070A650D040CDAFF000B0736
-:102C30000A6A0D020CF6FF000B070A680D050C620C
-:102C4000FF000B070A690D050C62FF000B060A4620
-:102C50000D0A0C22FF000B060A480D0D0C24FF0084
-:102C60000B060A6E0D110CD3FF000B060A700D1532
-:102C70000CCBFF000B060A520D200C93FF000B0635
-:102C80000A540D200C54FF000B060A4A0D270C1D98
-:102C9000FF000B060A580D2F0CC8FF000B060A5C3C
-:102CA0000D300C07FF000B060A4C0D370C90FF008F
-:102CB0000B060A600D3D0CDBFF000B060A640D3E9F
-:102CC0000C42FF000B060A4E0D450C78FF000B0668
-:102CD0000A680D4C0C48FF000B060A6C0D4C0C6C7E
-:102CE000FF000B060A500D520CE2FF000B060A42D1
-:102CF0000D020CBAFF00FF000E1E0F14FF000EDEC7
-:102D00000F20FF000EDF0F20FF000B060A780D00DA
-:102D10000C40FF000B070A030D0F0CFFFF000B0711
-:102D20000A0B0D0F0CFFFF000B070A020D000C0031
-:102D3000FF000B070A0A0D000C00FF000B070A46F4
-:102D40000D000C00FF000B070A490D000C000905DF
-:102D50000B000A100D000C00FF000D000C00FF001E
-:102D60000D020C00FF000D000C00FF000D000C0018
-:102D7000FF000D000C00FF000D000C00FF000D0017
-:102D80000C00FF000D000C00FF000D000C00FF0008
-:102D90000D000C00FF000D000C00FF000D000C00EA
-:102DA000FF000D000C00FF000D000C00FF000D00E7
-:102DB0000C00FF000D000C00FF000D000C00FF00D8
-:102DC0000D000C00FF000D000C00FF000D000C00BA
-:102DD000FF000D000C00FF000D000C00FF000D00B7
-:102DE0000C00FF000D000C00FF000D000C00FF00A8
-:102DF0000D000C00FF000D000C00FF000D000C008A
-:102E0000FF000D000C00FF000D000C00FF000D0086
-:102E10000C00FF000D000C00FF000D000C00FF0077
-:102E20000D000C00FF000D000C00FF000D000C0059
-:102E3000FF000D000C00FF000D000C00FF000D0056
-:102E40000C00FF000D000C00FF000D000C00FF0047
-:102E50000D000C00FF000D000C00FF000D000C0029
-:102E6000FF000D000C00FF000D000C00FF000D0026
-:102E70000C00FF0009050B010A100D010CC0FF003A
-:102E80000D010CFAFF000D000C1AFF000D000C00E4
-:102E9000FF000D000C00FF000D000C00FF000D00F6
-:102EA0000C00FF000D000C00FF000D000C00FF00E7
-:102EB0000D000C00FF000D000C00FF000D000C00C9
-:102EC000FF000D000C00FF000D000C00FF000D00C6
-:102ED0000C00FF000D000C00FF000D000C00FF00B7
-:102EE0000D000C00FF000D000C00FF000D000C0099
-:102EF000FF000D000C00FF000D000C00FF000D0096
-:102F00000C00FF000D000C00FF000D000C00FF0086
-:102F10000D000C00FF000D000C00FF000D000C0068
-:102F2000FF000D000C00FF000D000C00FF000D0065
-:102F30000C00FF000D000C00FF000D000C00FF0056
-:102F40000D000C00FF000D000C00FF000D000C0038
-:102F5000FF000D000C00FF000D000C00FF000D0035
-:102F60000C00FF000D000C00FF000D000C00FF0026
-:102F70000D000C00FF000D000C00FF000D000C0008
-:102F8000FF000D000C00FF000D000C00FF000D0005
-:102F90000C00FF000D000C00FF00FF00FF00090502
-:102FA0000B020A100C46FF000C46FF000C00FF004D
-:102FB0000C00FF000C00FF000C00FF000C00FF00E5
-:102FC0000C00FF000C00FF000C00FF000C00FF00D5
-:102FD0000C00FF000C00FF000C00FF000C00FF00C5
-:102FE0000C00FF000C00FF000C00FF000C00FF00B5
-:102FF0000C00FF000C00FF000C00FF000C00FF00A5
-:103000000C00FF000C00FF000C00FF000C00FF0094
-:103010000C00FF000C00FF000C00FF000C00FF0084
-:103020000C00FF000C00FF000C00FF000C00FF0074
-:103030000C00FF000C00FF000C00FF000C00FF0064
-:103040000C00FF000C00FF000C00FF000C00FF0054
-:103050000C00FF000C00FF000C00FF000C00FF0044
-:103060000C00FF0009050B030A100C00FF000C0008
-:10307000FF000C00FF000C00FF000C00FF000C0024
-:10308000FF000C00FF000C00FF000C00FF000C0014
-:10309000FF000C00FF000C00FF000C00FF000C0004
-:1030A000FF000C00FF000C00FF000C00FF000C00F4
-:1030B000FF000C00FF000C00FF000C00FF000C00E4
-:1030C000FF000C00FF000C00FF000C00FF000C00D4
-:1030D000FF000C00FF000C00FF000C00FF000C00C4
-:1030E000FF000C00FF000C00FF000C00FF000C00B4
-:1030F000FF000C00FF000C00FF000C00FF000C00A4
-:10310000FF000C00FF000C00FF000C00FF000C0093
-:10311000FF000C00FF000C00FF000C00FF000C0083
-:10312000FF000C00FF000C00FF0009050B040A1053
-:103130000C00FF000C00FF000C00FF000C00FF0063
-:103140000C00FF000C00FF000C00FF000C00FF0053
-:103150000C00FF000C00FF000C00FF000C00FF0043
-:103160000C00FF000C00FF000C00FF000C00FF0033
-:103170000C00FF000C00FF000C00FF000C00FF0023
-:103180000C00FF000C00FF000C00FF000C00FF0013
-:103190000C00FF000C00FF000C00FF000C00FF0003
-:1031A0000C00FF000C00FF000C00FF000C00FF00F3
-:1031B0000C00FF000C00FF000C00FF000C00FF00E3
-:1031C0000C00FF000C00FF000C00FF000C00FF00D3
-:1031D0000C00FF000C00FF000C00FF000C00FF00C3
-:1031E0000C00FF000C00FF000C00FF000C00FF00B3
-:1031F00009010B060A100D000C00FF000A120D0059
-:103200000C00FF000A140D000C00FF000A160D0050
-:103210000C00FF000A180D000C00FF000A1A0D0038
-:103220000C00FF000A1C0D000C00FF000A1E0D0020
-:103230000C00FF000A200D000C00FF000A220D0008
-:103240000C00FF000A240D000C00FF000A260D00F0
-:103250000C00FF000A280D000C00FF000A2A0D00D8
-:103260000C00FF000A2C0D000C00FF000A2E0D00C0
-:103270000C00FF000A300D000C00FF000A320D00A8
-:103280000C00FF000A340D000C00FF000A360D0090
-:103290000C00FF000A380D000C00FF000A3A0D0078
-:1032A0000C00FF000A3C0D000C00FF000A3E0D0060
-:1032B0000C00FF0009050B070A100D0F0CFFFF00A3
-:1032C0000D0F0CFFFF000D000C00FF000D000C00A7
-:1032D000FF000D000C00FF000D000C00FF000D00B2
-:1032E0000C00FF000D000C00FF000D000C00FF00A3
-:1032F0000D000C00FF000D000C00FF000D000C0085
-:10330000FF000D000C00FF000D000C00FF000D0081
-:103310000C00FF000D000C00FF000D000C00FF0072
-:103320000D000C00FF000D000C00FF000D000C0054
-:10333000FF000D000C00FF000D000C00FF000D0051
-:103340000C00FF000D000C00FF000D000C00FF0042
-:103350000D000C00FF000D000C00FF000D000C0024
-:10336000FF000D000C00FF000D000C00FF000D0021
-:103370000C00FF000D000C00FF000D000C00FF0012
-:103380000D000C00FF000D000C00FF000D000C00F4
-:10339000FF000D000C00FF000D000C00FF000D00F1
-:1033A0000C00FF000D000C00FF000D000C00FF00E2
-:1033B0000D000C00FF000D000C00FF000D000C00C4
-:1033C000FF000D000C00FF000D000C00FF000D00C1
-:1033D0000C00FF000D000C00FF000E010F00FF00AD
-:1033E0000E020F00FF000E010F01FF000E020F0082
-:1033F000FF000E010F02FF000E020F00FF000E0182
-:103400000F03FF000E020F00FF000E010F04FF006C
-:103410000E020F00FF000E010F05FF000E020F004D
-:10342000FF000E010F06FF000E020F00FF000E014D
-:103430000F07FF000E020F00FF000EB00F20FF006D
-:103440000EB10F20FF000EB20F20FF000EB30F20B1
-:10345000FF000EB40F20FF000EB50F20FF000EB6C8
-:103460000F20FF000EB70F20FF000EF00F20FF000F
-:103470000EF10F20FF000EF20F20FF000EF30F20C1
-:10348000FF000EF40F20FF000EF50F20FF000EF6D8
-:103490000F20FF000EF70F20FF000E100FFFFF00A0
-:1034A0000E110FFFFF000E120FFFFF000E130FFF94
-:1034B000FF000E140FFFFF000E150FFFFF000E168A
-:1034C0000FFFFF000E170FFFFF000E200FFFFF0082
-:1034D0000E210FFFFF000E220FFFFF000E230FFF34
-:1034E000FF000E240FFFFF000E250FFFFF000E262A
-:1034F0000FFFFF000E270FFFFF000E300F00FF0031
-:103500000E310F00FF000E320F00FF000E330F00D0
-:10351000FF000E340F00FF000E350F00FF000E36C7
-:103520000F00FF000E370F00FF000E400F00FF00DE
-:103530000E410F00FF000E420F00FF000E430F0070
-:10354000FF000E440F00FF000E450F00FF000E4667
-:103550000F00FF000E470F00FF000E500F00FF008E
-:103560000E510F00FF000E520F00FF000E530F0010
-:10357000FF000E540F00FF000E550F00FF000E5607
-:103580000F00FF000E570F00FF000E600F00FF003E
-:103590000E610F00FF000E620F00FF000E630F00B0
-:1035A000FF000E640F00FF000E650F00FF000E66A7
-:1035B0000F00FF000E670F00FF000E700FC0FF002E
-:1035C0000E710FC0FF000E720FC0FF000E730FC010
-:1035D000FF000E740FC0FF000E750FC0FF000E76C7
-:1035E0000FC0FF000E770FC0FF000E800F00FF001E
-:1035F0000E810F00FF000E820F00FF000E830F00F0
-:10360000FF000E840F00FF000E850F00FF000E86E6
-:103610000F00FF000E870F00FF000E900F00FF004D
-:103620000E910F00FF000E920F00FF000E930F008F
-:10363000FF000E940F00FF000E950F00FF000E9686
-:103640000F00FF000E970F00FF000EA00F00FF00FD
-:103650000EA10F00FF000EA20F00FF000EA30F002F
-:10366000FF000EA40F00FF000EA50F00FF000EA626
-:103670000F00FF000EA70F00FF000EC00F00FF009D
-:103680000EC10F00FF000EC20F00FF000EC30F009F
-:10369000FF000EC40F00FF000EC50F00FF000EC696
-:1036A0000F00FF000EC70F00FF000ED00F00FF003D
-:1036B0000ED10F00FF000ED20F00FF000ED30F003F
-:1036C000FF000ED40F00FF000ED50F00FF000ED636
-:1036D0000F00FF000ED70F00FF000EE00F00FF00ED
-:1036E0000EE10F00FF000EE20F00FF000EE30F00DF
-:1036F000FF000EE40F00FF000EE50F00FF000EE6D6
-:103700000F00FF000EE70F00FF000E010F00FF008B
-:103710000E020F01FF000E010F01FF000E020F014C
-:10372000FF000E010F02FF000E020F01FF000E014D
-:103730000F03FF000E020F01FF000E010F04FF0038
-:103740000E020F01FF000E010F05FF000E020F0118
-:10375000FF000E010F06FF000E020F01FF000E0119
-:103760000F07FF000E020F01FF000B070A460D00B6
-:103770000C00FF000B070A490D000C00FF000B07AF
-:103780000A450D0F0CFFFF000B070A480D0F0CFF39
-:10379000FF000B070A7B0D040CCCFF000B070A7D12
-:1037A0000D040CCCFF000B070A7C0D000C00FF0081
-:1037B0000B070A7E0D000C00FF000B070A460D00E8
-:1037C0000C00FF000B070A490D000C00FF000B075F
-:1037D0000A470D000C00FF000B070A4A0D000C0001
-:1037E000FF000B070A4C0D000C00FF000B070A4EF0
-:1037F0000D000C00FF000B070A4C0D000C000B071E
-:103800000A4E0D000C000B070A4C0D000C280B078C
-:103810000A4E0D000C280B070A4C0D000C510B072B
-:103820000A4E0D000C510B070A4C0D000C7A0B07C9
-:103830000A4E0D000C7A0B070A4C0D000CA30B0767
-:103840000A4E0D000CA30B070A4C0D000CCC0B0705
-:103850000A4E0D000CCC0B070A4C0D000CF50B07A3
-:103860000A4E0D000CF50B070A4C0D010C1E0B0740
-:103870000A4E0D010C1E0B070A4C0D010C470B07DD
-:103880000A4E0D010C470B070A4C0D010C700B077B
-:103890000A4E0D010C700B070A4C0D010C990B0719
-:1038A0000A4E0D010C990B070A4C0D010CC20B07B7
-:1038B0000A4E0D010CC20B070A4C0D010CEB0B0755
-:1038C0000A4E0D010CEB0B070A4C0D020C140B07F2
-:1038D0000A4E0D020C140B070A4C0D020C3D0B078F
-:1038E0000A4E0D020C3D0B070A4C0D020C660B072D
-:1038F0000A4E0D020C660B070A4C0D020C8F0B07CB
-:103900000A4E0D020C8F0B070A4C0D020CB80B0768
-:103910000A4E0D020CB80B070A4C0D020CE10B0706
-:103920000A4E0D020CE10B070A4C0D030C0A0B07A3
-:103930000A4E0D030C0A0B070A4C0D030C330B0740
-:103940000A4E0D030C330B070A4C0D030C5C0B07DE
-:103950000A4E0D030C5C0B070A4C0D030C850B077C
-:103960000A4E0D030C850B070A4C0D030CAE0B071A
-:103970000A4E0D030CAE0B070A4C0D030CD70B07B8
-:103980000A4E0D030CD70B070A4C0D040C000B0755
-:103990000A4E0D040C000B070A4C0D040C280B07F3
-:1039A0000A4E0D040C280B070A4C0D040C510B0792
-:1039B0000A4E0D040C510B070A4C0D040C7A0B0730
-:1039C0000A4E0D040C7A0B070A4C0D040CA30B07CE
-:1039D0000A4E0D040CA30B070A4C0D040CCC0B076C
-:1039E0000A4E0D040CCC0B070A4C0D040CF50B070A
-:1039F0000A4E0D040CF50B070A4C0D050C1E0B07A7
-:103A00000A4E0D050C1E0B070A4C0D050C470B0743
-:103A10000A4E0D050C470B070A4C0D050C700B07E1
-:103A20000A4E0D050C700B070A4C0D050C990B077F
-:103A30000A4E0D050C990B070A4C0D050CC20B071D
-:103A40000A4E0D050CC20B070A4C0D050CEB0B07BB
-:103A50000A4E0D050CEB0B070A4C0D060C140B0758
-:103A60000A4E0D060C140B070A4C0D060C3D0B07F5
-:103A70000A4E0D060C3D0B070A4C0D060C660B0793
-:103A80000A4E0D060C660B070A4C0D060C8F0B0731
-:103A90000A4E0D060C8F0B070A4C0D060CB80B07CF
-:103AA0000A4E0D060CB80B070A4C0D060CE10B076D
-:103AB0000A4E0D060CE10B070A4C0D070C0A0B070A
-:103AC0000A4E0D070C0A0B070A4C0D070C330B07A7
-:103AD0000A4E0D070C330B070A4C0D070C5C0B0745
-:103AE0000A4E0D070C5C0B070A4C0D070C850B07E3
-:103AF0000A4E0D070C850B070A4C0D070CAE0B0781
-:103B00000A4E0D070CAE0B070A4C0D070CD70B071E
-:103B10000A4E0D070CD70B070A4C0D080C000B07BB
-:103B20000A4E0D080C000B070A4C0D080C280B0759
-:103B30000A4E0D080C280B070A4C0D080C510B07F8
-:103B40000A4E0D080C510B070A4C0D080C7A0B0796
-:103B50000A4E0D080C7A0B070A4C0D080CA30B0734
-:103B60000A4E0D080CA30B070A4C0D080CCC0B07D2
-:103B70000A4E0D080CCC0B070A4C0D080CF50B0770
-:103B80000A4E0D080CF50B070A4C0D090C1E0B070D
-:103B90000A4E0D090C1E0B070A4C0D090C470B07AA
-:103BA0000A4E0D090C470B070A4C0D090C700B0748
-:103BB0000A4E0D090C700B070A4C0D090C990B07E6
-:103BC0000A4E0D090C990B070A4C0D090CC20B0784
-:103BD0000A4E0D090CC20B070A4C0D090CEB0B0722
-:103BE0000A4E0D090CEB0B070A4C0D0A0C140B07BF
-:103BF0000A4E0D0A0C140B070A4C0D0A0C3D0B075C
-:103C00000A4E0D0A0C3D0B070A4C0D0A0C660B07F9
-:103C10000A4E0D0A0C660B070A4C0D0A0C8F0B0797
-:103C20000A4E0D0A0C8F0B070A4C0D0A0CB80B0735
-:103C30000A4E0D0A0CB80B070A4C0D0A0CE10B07D3
-:103C40000A4E0D0A0CE10B070A4C0D0B0C0A0B0770
-:103C50000A4E0D0B0C0A0B070A4C0D0B0C330B070D
-:103C60000A4E0D0B0C330B070A4C0D0B0C5C0B07AB
-:103C70000A4E0D0B0C5C0B070A4C0D0B0C850B0749
-:103C80000A4E0D0B0C850B070A4C0D0B0CAE0B07E7
-:103C90000A4E0D0B0CAE0B070A4C0D0B0CD70B0785
-:103CA0000A4E0D0B0CD70B070A4C0D0C0C000B0722
-:103CB0000A4E0D0C0C000B070A4C0D0C0C280B07C0
-:103CC0000A4E0D0C0C280B070A4C0D0C0C510B075F
-:103CD0000A4E0D0C0C510B070A4C0D0C0C7A0B07FD
-:103CE0000A4E0D0C0C7A0B070A4C0D0C0CA30B079B
-:103CF0000A4E0D0C0CA30B070A4C0D0C0CCC0B0739
-:103D00000A4E0D0C0CCC0B070A4C0D0C0CF50B07D6
-:103D10000A4E0D0C0CF50B070A4C0D0D0C1E0B0773
-:103D20000A4E0D0D0C1E0B070A4C0D0D0C470B0710
-:103D30000A4E0D0D0C470B070A4C0D0D0C700B07AE
-:103D40000A4E0D0D0C700B070A4C0D0D0C990B074C
-:103D50000A4E0D0D0C990B070A4C0D0D0CC20B07EA
-:103D60000A4E0D0D0CC20B070A4C0D0D0CEB0B0788
-:103D70000A4E0D0D0CEB0B070A4C0D0E0C140B0725
-:103D80000A4E0D0E0C140B070A4C0D0E0C3D0B07C2
-:103D90000A4E0D0E0C3D0B070A4C0D0E0C660B0760
-:103DA0000A4E0D0E0C660B070A4C0D0E0C8F0B07FE
-:103DB0000A4E0D0E0C8F0B070A4C0D0E0CB80B079C
-:103DC0000A4E0D0E0CB80B070A4C0D0E0CE10B073A
-:103DD0000A4E0D0E0CE10B070A4C0D0F0C0A0B07D7
-:103DE0000A4E0D0F0C0A0B070A4C0D0F0C330B0774
-:103DF0000A4E0D0F0C330B070A4C0D0F0C5C0B0712
-:103E00000A4E0D0F0C5C0B070A4C0D0F0C850B07AF
-:103E10000A4E0D0F0C850B070A4C0D0F0CAE0B074D
-:103E20000A4E0D0F0CAE0B070A4C0D0F0CD70B07EB
-:103E30000A4E0D0F0CD70B070A4C0D0F0CFF0B078A
-:0A3E40000A4E0D0F0CFF0800FF00F2
-:00000001FF
diff --git a/fs/9p/Makefile b/fs/9p/Makefile
index 9619ccadd2fc..e7800a5c7395 100644
--- a/fs/9p/Makefile
+++ b/fs/9p/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_9P_FS) := 9p.o
9p-objs := \
diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c
index adaf6f6dd858..e1cbdfdb7c68 100644
--- a/fs/9p/vfs_addr.c
+++ b/fs/9p/vfs_addr.c
@@ -310,9 +310,13 @@ static int v9fs_write_end(struct file *filp, struct address_space *mapping,
p9_debug(P9_DEBUG_VFS, "filp %p, mapping %p\n", filp, mapping);
- if (unlikely(copied < len && !PageUptodate(page))) {
- copied = 0;
- goto out;
+ if (!PageUptodate(page)) {
+ if (unlikely(copied < len)) {
+ copied = 0;
+ goto out;
+ } else if (len == PAGE_SIZE) {
+ SetPageUptodate(page);
+ }
}
/*
* No need to use i_size_read() here, the i_size
diff --git a/fs/Makefile b/fs/Makefile
index 7bbaca9c67b1..ef772f1eaff8 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux filesystems.
#
diff --git a/fs/adfs/adfs.h b/fs/adfs/adfs.h
index fadf408bdd46..c76db75f02aa 100644
--- a/fs/adfs/adfs.h
+++ b/fs/adfs/adfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/fs.h>
#include <linux/adfs_fs.h>
diff --git a/fs/adfs/file.c b/fs/adfs/file.c
index 46c0d5671cd5..754afb14a6ff 100644
--- a/fs/adfs/file.c
+++ b/fs/adfs/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/adfs/file.c
*
diff --git a/fs/affs/affs.h b/fs/affs/affs.h
index 773749be8290..a92eb6ae2ae2 100644
--- a/fs/affs/affs.h
+++ b/fs/affs/affs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef pr_fmt
#undef pr_fmt
#endif
diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c
index b573c3b9a328..185d5ab7e986 100644
--- a/fs/affs/amigaffs.c
+++ b/fs/affs/amigaffs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/affs/amigaffs.c
*
@@ -450,7 +451,7 @@ affs_error(struct super_block *sb, const char *function, const char *fmt, ...)
vaf.fmt = fmt;
vaf.va = &args;
pr_crit("error (device %s): %s(): %pV\n", sb->s_id, function, &vaf);
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
pr_warn("Remounting filesystem read-only\n");
sb->s_flags |= MS_RDONLY;
va_end(args);
diff --git a/fs/affs/amigaffs.h b/fs/affs/amigaffs.h
index 43b41c06aa37..f9bef9056659 100644
--- a/fs/affs/amigaffs.h
+++ b/fs/affs/amigaffs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef AMIGAFFS_H
#define AMIGAFFS_H
diff --git a/fs/affs/bitmap.c b/fs/affs/bitmap.c
index 675148950fed..2b1399611d9e 100644
--- a/fs/affs/bitmap.c
+++ b/fs/affs/bitmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/affs/bitmap.c
*
@@ -19,7 +20,7 @@ affs_count_free_blocks(struct super_block *sb)
pr_debug("%s()\n", __func__);
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return 0;
mutex_lock(&AFFS_SB(sb)->s_bmlock);
diff --git a/fs/affs/dir.c b/fs/affs/dir.c
index 591ecd7f3063..a105e77df2c1 100644
--- a/fs/affs/dir.c
+++ b/fs/affs/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/affs/dir.c
*
diff --git a/fs/affs/file.c b/fs/affs/file.c
index 00331810f690..a85817f54483 100644
--- a/fs/affs/file.c
+++ b/fs/affs/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/affs/file.c
*
diff --git a/fs/affs/inode.c b/fs/affs/inode.c
index fd4ef3c40e40..73598bff8506 100644
--- a/fs/affs/inode.c
+++ b/fs/affs/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/affs/inode.c
*
diff --git a/fs/affs/namei.c b/fs/affs/namei.c
index 46d3ace6761d..d8aa0ae3d037 100644
--- a/fs/affs/namei.c
+++ b/fs/affs/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/affs/namei.c
*
diff --git a/fs/affs/super.c b/fs/affs/super.c
index 7bf47a41cb4f..884bedab7266 100644
--- a/fs/affs/super.c
+++ b/fs/affs/super.c
@@ -80,7 +80,7 @@ void affs_mark_sb_dirty(struct super_block *sb)
struct affs_sb_info *sbi = AFFS_SB(sb);
unsigned long delay;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return;
spin_lock(&sbi->work_lock);
@@ -464,7 +464,7 @@ got_root:
* not recommended.
*/
if ((chksum == FS_DCFFS || chksum == MUFS_DCFFS || chksum == FS_DCOFS
- || chksum == MUFS_DCOFS) && !(sb->s_flags & MS_RDONLY)) {
+ || chksum == MUFS_DCOFS) && !sb_rdonly(sb)) {
pr_notice("Dircache FS - mounting %s read only\n", sb->s_id);
sb->s_flags |= MS_RDONLY;
}
@@ -596,7 +596,7 @@ affs_remount(struct super_block *sb, int *flags, char *data)
memcpy(sbi->s_volume, volume, 32);
spin_unlock(&sbi->symlink_lock);
- if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
+ if ((bool)(*flags & MS_RDONLY) == sb_rdonly(sb))
return 0;
if (*flags & MS_RDONLY)
diff --git a/fs/affs/symlink.c b/fs/affs/symlink.c
index ae622cdce142..a7531b26e8f0 100644
--- a/fs/affs/symlink.c
+++ b/fs/affs/symlink.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/affs/symlink.c
*
diff --git a/fs/afs/Makefile b/fs/afs/Makefile
index 095c54165dfd..641148208e90 100644
--- a/fs/afs/Makefile
+++ b/fs/afs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Red Hat Linux AFS client.
#
diff --git a/fs/afs/netdevices.c b/fs/afs/netdevices.c
index 40b2bab3e401..50bd5bb1c4fb 100644
--- a/fs/afs/netdevices.c
+++ b/fs/afs/netdevices.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* AFS network device helpers
*
* Copyright (c) 2007 Patrick McHardy <kaber@trash.net>
diff --git a/fs/aio.c b/fs/aio.c
index b5d69f28d8b1..5a2487217072 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1606,12 +1606,6 @@ static int io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb,
goto out_put_req;
}
- if ((req->common.ki_flags & IOCB_NOWAIT) &&
- !(req->common.ki_flags & IOCB_DIRECT)) {
- ret = -EOPNOTSUPP;
- goto out_put_req;
- }
-
ret = put_user(KIOCB_KEY, &user_iocb->aio_key);
if (unlikely(ret)) {
pr_debug("EFAULT: aio_key\n");
diff --git a/fs/attr.c b/fs/attr.c
index 135304146120..12ffdb6fb63c 100644
--- a/fs/attr.c
+++ b/fs/attr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/attr.c
*
diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
index 24a58bf9ca72..4ac49d038bf3 100644
--- a/fs/autofs4/waitq.c
+++ b/fs/autofs4/waitq.c
@@ -56,19 +56,14 @@ static int autofs4_write(struct autofs_sb_info *sbi,
struct file *file, const void *addr, int bytes)
{
unsigned long sigpipe, flags;
- mm_segment_t fs;
const char *data = (const char *)addr;
ssize_t wr = 0;
sigpipe = sigismember(&current->pending.signal, SIGPIPE);
- /* Save pointer to user space and point back to kernel space */
- fs = get_fs();
- set_fs(KERNEL_DS);
-
mutex_lock(&sbi->pipe_mutex);
while (bytes) {
- wr = __vfs_write(file, data, bytes, &file->f_pos);
+ wr = __kernel_write(file, data, bytes, &file->f_pos);
if (wr <= 0)
break;
data += wr;
@@ -76,8 +71,6 @@ static int autofs4_write(struct autofs_sb_info *sbi,
}
mutex_unlock(&sbi->pipe_mutex);
- set_fs(fs);
-
/* Keep the currently executing process from receiving a
* SIGPIPE unless it was already supposed to get one
*/
diff --git a/fs/bad_inode.c b/fs/bad_inode.c
index bb53728c7a31..213b51dbbb60 100644
--- a/fs/bad_inode.c
+++ b/fs/bad_inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/bad_inode.c
*
diff --git a/fs/befs/befs.h b/fs/befs/befs.h
index b914cfb03820..7cd47245694d 100644
--- a/fs/befs/befs.h
+++ b/fs/befs/befs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* befs.h
*
diff --git a/fs/befs/befs_fs_types.h b/fs/befs/befs_fs_types.h
index 69c9d8cde955..8019fde814b7 100644
--- a/fs/befs/befs_fs_types.h
+++ b/fs/befs/befs_fs_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fs/befs/befs_fs_types.h
*
diff --git a/fs/befs/btree.h b/fs/befs/btree.h
index 60c6c728e64e..a253a6276d8e 100644
--- a/fs/befs/btree.h
+++ b/fs/befs/btree.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* btree.h
*
diff --git a/fs/befs/datastream.c b/fs/befs/datastream.c
index 720b3bc5c16a..97719a7c7e40 100644
--- a/fs/befs/datastream.c
+++ b/fs/befs/datastream.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/befs/datastream.c
*
diff --git a/fs/befs/datastream.h b/fs/befs/datastream.h
index 7ff9ff09ec6e..39b1d4766ccf 100644
--- a/fs/befs/datastream.h
+++ b/fs/befs/datastream.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* datastream.h
*
diff --git a/fs/befs/debug.c b/fs/befs/debug.c
index 36656c86f50e..eb7bd6c692c7 100644
--- a/fs/befs/debug.c
+++ b/fs/befs/debug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/befs/debug.c
*
diff --git a/fs/befs/endian.h b/fs/befs/endian.h
index 27223878ba9f..bb55a54c24c0 100644
--- a/fs/befs/endian.h
+++ b/fs/befs/endian.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/befs/endian.h
*
diff --git a/fs/befs/inode.c b/fs/befs/inode.c
index 5367a6470a69..791b46a6f2f9 100644
--- a/fs/befs/inode.c
+++ b/fs/befs/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* inode.c
*
diff --git a/fs/befs/io.c b/fs/befs/io.c
index 227cb86e07fe..2caf50a4abbe 100644
--- a/fs/befs/io.c
+++ b/fs/befs/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/befs/io.c
*
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
index 4a4a5a366158..a92355cc453b 100644
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -838,7 +838,7 @@ befs_fill_super(struct super_block *sb, void *data, int silent)
befs_debug(sb, "---> %s", __func__);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
befs_warning(sb,
"No write support. Marking filesystem read-only");
sb->s_flags |= MS_RDONLY;
diff --git a/fs/bfs/bfs.h b/fs/bfs/bfs.h
index f40006db36df..67aef3bb89e4 100644
--- a/fs/bfs/bfs.h
+++ b/fs/bfs/bfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fs/bfs/bfs.h
* Copyright (C) 1999 Tigran Aivazian <tigran@veritas.com>
diff --git a/fs/bfs/dir.c b/fs/bfs/dir.c
index 3e5ac30e8b6f..ee832ca5f734 100644
--- a/fs/bfs/dir.c
+++ b/fs/bfs/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/bfs/dir.c
* BFS directory operations.
diff --git a/fs/bfs/file.c b/fs/bfs/file.c
index 97f1b5160155..1476cdd90cfb 100644
--- a/fs/bfs/file.c
+++ b/fs/bfs/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/bfs/file.c
* BFS file operations.
diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
index 9be82c4e14a4..ce1824f47ba6 100644
--- a/fs/binfmt_aout.c
+++ b/fs/binfmt_aout.c
@@ -341,11 +341,12 @@ static int load_aout_library(struct file *file)
unsigned long error;
int retval;
struct exec ex;
+ loff_t pos = 0;
inode = file_inode(file);
retval = -ENOEXEC;
- error = kernel_read(file, 0, (char *) &ex, sizeof(ex));
+ error = kernel_read(file, &ex, sizeof(ex), &pos);
if (error != sizeof(ex))
goto out;
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index ec45d24875b1..73b01e474fdc 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -409,6 +409,7 @@ static struct elf_phdr *load_elf_phdrs(struct elfhdr *elf_ex,
{
struct elf_phdr *elf_phdata = NULL;
int retval, size, err = -1;
+ loff_t pos = elf_ex->e_phoff;
/*
* If the size of this structure has changed, then punt, since
@@ -432,8 +433,7 @@ static struct elf_phdr *load_elf_phdrs(struct elfhdr *elf_ex,
goto out;
/* Read in the program headers */
- retval = kernel_read(elf_file, elf_ex->e_phoff,
- (char *)elf_phdata, size);
+ retval = kernel_read(elf_file, elf_phdata, size, &pos);
if (retval != size) {
err = (retval < 0) ? retval : -EIO;
goto out;
@@ -698,6 +698,7 @@ static int load_elf_binary(struct linux_binprm *bprm)
struct elfhdr interp_elf_ex;
} *loc;
struct arch_elf_state arch_state = INIT_ARCH_ELF_STATE;
+ loff_t pos;
loc = kmalloc(sizeof(*loc), GFP_KERNEL);
if (!loc) {
@@ -750,9 +751,9 @@ static int load_elf_binary(struct linux_binprm *bprm)
if (!elf_interpreter)
goto out_free_ph;
- retval = kernel_read(bprm->file, elf_ppnt->p_offset,
- elf_interpreter,
- elf_ppnt->p_filesz);
+ pos = elf_ppnt->p_offset;
+ retval = kernel_read(bprm->file, elf_interpreter,
+ elf_ppnt->p_filesz, &pos);
if (retval != elf_ppnt->p_filesz) {
if (retval >= 0)
retval = -EIO;
@@ -776,9 +777,9 @@ static int load_elf_binary(struct linux_binprm *bprm)
would_dump(bprm, interpreter);
/* Get the exec headers */
- retval = kernel_read(interpreter, 0,
- (void *)&loc->interp_elf_ex,
- sizeof(loc->interp_elf_ex));
+ pos = 0;
+ retval = kernel_read(interpreter, &loc->interp_elf_ex,
+ sizeof(loc->interp_elf_ex), &pos);
if (retval != sizeof(loc->interp_elf_ex)) {
if (retval >= 0)
retval = -EIO;
@@ -1175,9 +1176,10 @@ static int load_elf_library(struct file *file)
unsigned long elf_bss, bss, len;
int retval, error, i, j;
struct elfhdr elf_ex;
+ loff_t pos = 0;
error = -ENOEXEC;
- retval = kernel_read(file, 0, (char *)&elf_ex, sizeof(elf_ex));
+ retval = kernel_read(file, &elf_ex, sizeof(elf_ex), &pos);
if (retval != sizeof(elf_ex))
goto out;
@@ -1201,7 +1203,8 @@ static int load_elf_library(struct file *file)
eppnt = elf_phdata;
error = -ENOEXEC;
- retval = kernel_read(file, elf_ex.e_phoff, (char *)eppnt, j);
+ pos = elf_ex.e_phoff;
+ retval = kernel_read(file, eppnt, j, &pos);
if (retval != j)
goto out_free_ph;
diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c
index 5aa9199dfb13..e70c039ac190 100644
--- a/fs/binfmt_elf_fdpic.c
+++ b/fs/binfmt_elf_fdpic.c
@@ -145,6 +145,7 @@ static int elf_fdpic_fetch_phdrs(struct elf_fdpic_params *params,
struct elf32_phdr *phdr;
unsigned long size;
int retval, loop;
+ loff_t pos = params->hdr.e_phoff;
if (params->hdr.e_phentsize != sizeof(struct elf_phdr))
return -ENOMEM;
@@ -156,8 +157,7 @@ static int elf_fdpic_fetch_phdrs(struct elf_fdpic_params *params,
if (!params->phdrs)
return -ENOMEM;
- retval = kernel_read(file, params->hdr.e_phoff,
- (char *) params->phdrs, size);
+ retval = kernel_read(file, params->phdrs, size, &pos);
if (unlikely(retval != size))
return retval < 0 ? retval : -ENOEXEC;
@@ -199,6 +199,7 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm)
char *interpreter_name = NULL;
int executable_stack;
int retval, i;
+ loff_t pos;
kdebug("____ LOAD %d ____", current->pid);
@@ -246,10 +247,9 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm)
if (!interpreter_name)
goto error;
- retval = kernel_read(bprm->file,
- phdr->p_offset,
- interpreter_name,
- phdr->p_filesz);
+ pos = phdr->p_offset;
+ retval = kernel_read(bprm->file, interpreter_name,
+ phdr->p_filesz, &pos);
if (unlikely(retval != phdr->p_filesz)) {
if (retval >= 0)
retval = -ENOEXEC;
@@ -277,8 +277,9 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm)
*/
would_dump(bprm, interpreter);
- retval = kernel_read(interpreter, 0, bprm->buf,
- BINPRM_BUF_SIZE);
+ pos = 0;
+ retval = kernel_read(interpreter, bprm->buf,
+ BINPRM_BUF_SIZE, &pos);
if (unlikely(retval != BINPRM_BUF_SIZE)) {
if (retval >= 0)
retval = -ENOEXEC;
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
index ce6537c50ec1..5d6b94475f27 100644
--- a/fs/binfmt_flat.c
+++ b/fs/binfmt_flat.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/****************************************************************************/
/*
* linux/fs/binfmt_flat.c
@@ -176,19 +177,14 @@ static int create_flat_tables(struct linux_binprm *bprm, unsigned long arg_start
#define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */
#define RESERVED 0xC0 /* bit 6,7: reserved */
-static int decompress_exec(
- struct linux_binprm *bprm,
- unsigned long offset,
- char *dst,
- long len,
- int fd)
+static int decompress_exec(struct linux_binprm *bprm, loff_t fpos, char *dst,
+ long len, int fd)
{
unsigned char *buf;
z_stream strm;
- loff_t fpos;
int ret, retval;
- pr_debug("decompress_exec(offset=%lx,buf=%p,len=%lx)\n", offset, dst, len);
+ pr_debug("decompress_exec(offset=%llx,buf=%p,len=%lx)\n", fpos, dst, len);
memset(&strm, 0, sizeof(strm));
strm.workspace = kmalloc(zlib_inflate_workspacesize(), GFP_KERNEL);
@@ -202,13 +198,11 @@ static int decompress_exec(
}
/* Read in first chunk of data and parse gzip header. */
- fpos = offset;
- ret = kernel_read(bprm->file, offset, buf, LBUFSIZE);
+ ret = kernel_read(bprm->file, buf, LBUFSIZE, &fpos);
strm.next_in = buf;
strm.avail_in = ret;
strm.total_in = 0;
- fpos += ret;
retval = -ENOEXEC;
@@ -274,7 +268,7 @@ static int decompress_exec(
}
while ((ret = zlib_inflate(&strm, Z_NO_FLUSH)) == Z_OK) {
- ret = kernel_read(bprm->file, fpos, buf, LBUFSIZE);
+ ret = kernel_read(bprm->file, buf, LBUFSIZE, &fpos);
if (ret <= 0)
break;
len -= ret;
@@ -282,7 +276,6 @@ static int decompress_exec(
strm.next_in = buf;
strm.avail_in = ret;
strm.total_in = 0;
- fpos += ret;
}
if (ret < 0) {
diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c
index f4718098ac31..a7c5a9861bef 100644
--- a/fs/binfmt_misc.c
+++ b/fs/binfmt_misc.c
@@ -54,7 +54,7 @@ typedef struct {
int size; /* size of magic/mask */
char *magic; /* magic or filename extension */
char *mask; /* mask, NULL for exact match */
- char *interpreter; /* filename of interpreter */
+ const char *interpreter; /* filename of interpreter */
char *name;
struct dentry *dentry;
struct file *interp_file;
@@ -131,27 +131,26 @@ static int load_misc_binary(struct linux_binprm *bprm)
{
Node *fmt;
struct file *interp_file = NULL;
- char iname[BINPRM_BUF_SIZE];
- const char *iname_addr = iname;
int retval;
int fd_binary = -1;
retval = -ENOEXEC;
if (!enabled)
- goto ret;
+ return retval;
/* to keep locking time low, we copy the interpreter string */
read_lock(&entries_lock);
fmt = check_file(bprm);
if (fmt)
- strlcpy(iname, fmt->interpreter, BINPRM_BUF_SIZE);
+ dget(fmt->dentry);
read_unlock(&entries_lock);
if (!fmt)
- goto ret;
+ return retval;
/* Need to be able to load the file after exec */
+ retval = -ENOENT;
if (bprm->interp_flags & BINPRM_FLAGS_PATH_INACCESSIBLE)
- return -ENOENT;
+ goto ret;
if (!(fmt->flags & MISC_FMT_PRESERVE_ARGV0)) {
retval = remove_arg_zero(bprm);
@@ -195,22 +194,22 @@ static int load_misc_binary(struct linux_binprm *bprm)
bprm->argc++;
/* add the interp as argv[0] */
- retval = copy_strings_kernel(1, &iname_addr, bprm);
+ retval = copy_strings_kernel(1, &fmt->interpreter, bprm);
if (retval < 0)
goto error;
bprm->argc++;
/* Update interp in case binfmt_script needs it. */
- retval = bprm_change_interp(iname, bprm);
+ retval = bprm_change_interp(fmt->interpreter, bprm);
if (retval < 0)
goto error;
- if (fmt->flags & MISC_FMT_OPEN_FILE && fmt->interp_file) {
+ if (fmt->flags & MISC_FMT_OPEN_FILE) {
interp_file = filp_clone_open(fmt->interp_file);
if (!IS_ERR(interp_file))
deny_write_access(interp_file);
} else {
- interp_file = open_exec(iname);
+ interp_file = open_exec(fmt->interpreter);
}
retval = PTR_ERR(interp_file);
if (IS_ERR(interp_file))
@@ -218,12 +217,15 @@ static int load_misc_binary(struct linux_binprm *bprm)
bprm->file = interp_file;
if (fmt->flags & MISC_FMT_CREDENTIALS) {
+ loff_t pos = 0;
+
/*
* No need to call prepare_binprm(), it's already been
* done. bprm->buf is stale, update from interp_file.
*/
memset(bprm->buf, 0, BINPRM_BUF_SIZE);
- retval = kernel_read(bprm->file, 0, bprm->buf, BINPRM_BUF_SIZE);
+ retval = kernel_read(bprm->file, bprm->buf, BINPRM_BUF_SIZE,
+ &pos);
} else
retval = prepare_binprm(bprm);
@@ -235,6 +237,7 @@ static int load_misc_binary(struct linux_binprm *bprm)
goto error;
ret:
+ dput(fmt->dentry);
return retval;
error:
if (fd_binary > 0)
@@ -591,8 +594,13 @@ static struct inode *bm_get_inode(struct super_block *sb, int mode)
static void bm_evict_inode(struct inode *inode)
{
+ Node *e = inode->i_private;
+
+ if (e && e->flags & MISC_FMT_OPEN_FILE)
+ filp_close(e->interp_file, NULL);
+
clear_inode(inode);
- kfree(inode->i_private);
+ kfree(e);
}
static void kill_node(Node *e)
@@ -600,24 +608,14 @@ static void kill_node(Node *e)
struct dentry *dentry;
write_lock(&entries_lock);
- dentry = e->dentry;
- if (dentry) {
- list_del_init(&e->list);
- e->dentry = NULL;
- }
+ list_del_init(&e->list);
write_unlock(&entries_lock);
- if ((e->flags & MISC_FMT_OPEN_FILE) && e->interp_file) {
- filp_close(e->interp_file, NULL);
- e->interp_file = NULL;
- }
-
- if (dentry) {
- drop_nlink(d_inode(dentry));
- d_drop(dentry);
- dput(dentry);
- simple_release_fs(&bm_mnt, &entry_count);
- }
+ dentry = e->dentry;
+ drop_nlink(d_inode(dentry));
+ d_drop(dentry);
+ dput(dentry);
+ simple_release_fs(&bm_mnt, &entry_count);
}
/* /<entry> */
@@ -662,7 +660,8 @@ static ssize_t bm_entry_write(struct file *file, const char __user *buffer,
root = file_inode(file)->i_sb->s_root;
inode_lock(d_inode(root));
- kill_node(e);
+ if (!list_empty(&e->list))
+ kill_node(e);
inode_unlock(d_inode(root));
break;
@@ -791,7 +790,7 @@ static ssize_t bm_status_write(struct file *file, const char __user *buffer,
inode_lock(d_inode(root));
while (!list_empty(&entries))
- kill_node(list_entry(entries.next, Node, list));
+ kill_node(list_first_entry(&entries, Node, list));
inode_unlock(d_inode(root));
break;
diff --git a/fs/binfmt_script.c b/fs/binfmt_script.c
index afdf4e3cafc2..7cde3f46ad26 100644
--- a/fs/binfmt_script.c
+++ b/fs/binfmt_script.c
@@ -19,7 +19,6 @@ static int load_script(struct linux_binprm *bprm)
const char *i_arg, *i_name;
char *cp;
struct file *file;
- char interp[BINPRM_BUF_SIZE];
int retval;
if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!'))
@@ -55,7 +54,7 @@ static int load_script(struct linux_binprm *bprm)
break;
}
for (cp = bprm->buf+2; (*cp == ' ') || (*cp == '\t'); cp++);
- if (*cp == '\0')
+ if (*cp == '\0')
return -ENOEXEC; /* No interpreter name found */
i_name = cp;
i_arg = NULL;
@@ -65,7 +64,6 @@ static int load_script(struct linux_binprm *bprm)
*cp++ = '\0';
if (*cp)
i_arg = cp;
- strcpy (interp, i_name);
/*
* OK, we've parsed out the interpreter name and
* (optional) argument.
@@ -80,24 +78,27 @@ static int load_script(struct linux_binprm *bprm)
if (retval)
return retval;
retval = copy_strings_kernel(1, &bprm->interp, bprm);
- if (retval < 0) return retval;
+ if (retval < 0)
+ return retval;
bprm->argc++;
if (i_arg) {
retval = copy_strings_kernel(1, &i_arg, bprm);
- if (retval < 0) return retval;
+ if (retval < 0)
+ return retval;
bprm->argc++;
}
retval = copy_strings_kernel(1, &i_name, bprm);
- if (retval) return retval;
+ if (retval)
+ return retval;
bprm->argc++;
- retval = bprm_change_interp(interp, bprm);
+ retval = bprm_change_interp(i_name, bprm);
if (retval < 0)
return retval;
/*
* OK, now restart the process with the interpreter's dentry.
*/
- file = open_exec(interp);
+ file = open_exec(i_name);
if (IS_ERR(file))
return PTR_ERR(file);
diff --git a/fs/block_dev.c b/fs/block_dev.c
index bb715b2fcfb8..789f55e851ae 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -716,10 +716,12 @@ int bdev_write_page(struct block_device *bdev, sector_t sector,
set_page_writeback(page);
result = ops->rw_page(bdev, sector + get_start_sect(bdev), page, true);
- if (result)
+ if (result) {
end_page_writeback(page);
- else
+ } else {
+ clean_page_buffers(page);
unlock_page(page);
+ }
blk_queue_exit(bdev->bd_queue);
return result;
}
@@ -1740,6 +1742,8 @@ static int blkdev_open(struct inode * inode, struct file * filp)
*/
filp->f_flags |= O_LARGEFILE;
+ filp->f_mode |= FMODE_NOWAIT;
+
if (filp->f_flags & O_NDELAY)
filp->f_mode |= FMODE_NDELAY;
if (filp->f_flags & O_EXCL)
@@ -1892,6 +1896,9 @@ ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
if (iocb->ki_pos >= size)
return -ENOSPC;
+ if ((iocb->ki_flags & (IOCB_NOWAIT | IOCB_DIRECT)) == IOCB_NOWAIT)
+ return -EOPNOTSUPP;
+
iov_iter_truncate(from, size - iocb->ki_pos);
blk_start_plug(&plug);
diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig
index 80e9c18ea64f..a26c63b4ad68 100644
--- a/fs/btrfs/Kconfig
+++ b/fs/btrfs/Kconfig
@@ -6,6 +6,8 @@ config BTRFS_FS
select ZLIB_DEFLATE
select LZO_COMPRESS
select LZO_DECOMPRESS
+ select ZSTD_COMPRESS
+ select ZSTD_DECOMPRESS
select RAID6_PQ
select XOR_BLOCKS
select SRCU
diff --git a/fs/btrfs/Makefile b/fs/btrfs/Makefile
index 128ce17a80b0..f2cd9dedb037 100644
--- a/fs/btrfs/Makefile
+++ b/fs/btrfs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_BTRFS_FS) := btrfs.o
@@ -6,7 +7,7 @@ btrfs-y += super.o ctree.o extent-tree.o print-tree.o root-tree.o dir-item.o \
transaction.o inode.o file.o tree-defrag.o \
extent_map.o sysfs.o struct-funcs.o xattr.o ordered-data.o \
extent_io.o volumes.o async-thread.o ioctl.o locking.o orphan.o \
- export.o tree-log.o free-space-cache.o zlib.o lzo.o \
+ export.o tree-log.o free-space-cache.o zlib.o lzo.o zstd.o \
compression.o delayed-ref.o relocation.o delayed-inode.o scrub.o \
reada.o backref.o ulist.o qgroup.o send.o dev-replace.o raid56.o \
uuid-tree.o props.o hash.o free-space-tree.o
diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
index 883ecc58fd0d..280384bf34f1 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -107,7 +107,8 @@ static void end_compressed_bio_read(struct bio *bio)
struct inode *inode;
struct page *page;
unsigned long index;
- int ret;
+ unsigned int mirror = btrfs_io_bio(bio)->mirror_num;
+ int ret = 0;
if (bio->bi_status)
cb->errors = 1;
@@ -118,6 +119,21 @@ static void end_compressed_bio_read(struct bio *bio)
if (!refcount_dec_and_test(&cb->pending_bios))
goto out;
+ /*
+ * Record the correct mirror_num in cb->orig_bio so that
+ * read-repair can work properly.
+ */
+ ASSERT(btrfs_io_bio(cb->orig_bio));
+ btrfs_io_bio(cb->orig_bio)->mirror_num = mirror;
+ cb->mirror_num = mirror;
+
+ /*
+ * Some IO in this cb have failed, just skip checksum as there
+ * is no way it could be correct.
+ */
+ if (cb->errors == 1)
+ goto csum_failed;
+
inode = cb->inode;
ret = check_compressed_csum(BTRFS_I(inode), cb,
(u64)bio->bi_iter.bi_sector << 9);
@@ -704,6 +720,7 @@ static struct {
static const struct btrfs_compress_op * const btrfs_compress_op[] = {
&btrfs_zlib_compress,
&btrfs_lzo_compress,
+ &btrfs_zstd_compress,
};
void __init btrfs_init_compress(void)
diff --git a/fs/btrfs/compression.h b/fs/btrfs/compression.h
index 3b1b0ac15fdc..d2781ff8f994 100644
--- a/fs/btrfs/compression.h
+++ b/fs/btrfs/compression.h
@@ -99,7 +99,8 @@ enum btrfs_compression_type {
BTRFS_COMPRESS_NONE = 0,
BTRFS_COMPRESS_ZLIB = 1,
BTRFS_COMPRESS_LZO = 2,
- BTRFS_COMPRESS_TYPES = 2,
+ BTRFS_COMPRESS_ZSTD = 3,
+ BTRFS_COMPRESS_TYPES = 3,
};
struct btrfs_compress_op {
@@ -127,6 +128,7 @@ struct btrfs_compress_op {
extern const struct btrfs_compress_op btrfs_zlib_compress;
extern const struct btrfs_compress_op btrfs_lzo_compress;
+extern const struct btrfs_compress_op btrfs_zstd_compress;
int btrfs_compress_heuristic(struct inode *inode, u64 start, u64 end);
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 2add002662f4..8fc690384c58 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -270,6 +270,7 @@ struct btrfs_super_block {
BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS | \
BTRFS_FEATURE_INCOMPAT_BIG_METADATA | \
BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO | \
+ BTRFS_FEATURE_INCOMPAT_COMPRESS_ZSTD | \
BTRFS_FEATURE_INCOMPAT_RAID56 | \
BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF | \
BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA | \
@@ -708,7 +709,6 @@ struct btrfs_delayed_root;
#define BTRFS_FS_OPEN 5
#define BTRFS_FS_QUOTA_ENABLED 6
#define BTRFS_FS_QUOTA_ENABLING 7
-#define BTRFS_FS_QUOTA_DISABLING 8
#define BTRFS_FS_UPDATE_UUID_TREE_GEN 9
#define BTRFS_FS_CREATING_FREE_SPACE_TREE 10
#define BTRFS_FS_BTREE_ERR 11
@@ -722,7 +722,7 @@ struct btrfs_delayed_root;
* Indicate that a whole-filesystem exclusive operation is running
* (device replace, resize, device add/delete, balance)
*/
-#define BTRFS_FS_EXCL_OP 14
+#define BTRFS_FS_EXCL_OP 16
struct btrfs_fs_info {
u8 fsid[BTRFS_FSID_SIZE];
diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c
index 7a93a3e1a847..7c655f9a7a50 100644
--- a/fs/btrfs/dev-replace.c
+++ b/fs/btrfs/dev-replace.c
@@ -704,7 +704,7 @@ static u64 __btrfs_dev_replace_cancel(struct btrfs_fs_info *fs_info)
u64 result;
int ret;
- if (fs_info->sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(fs_info->sb))
return -EROFS;
mutex_lock(&dev_replace->lock_finishing_cancel_unmount);
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 46329524dd5f..dfdab849037b 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -2478,7 +2478,7 @@ static int btrfs_replay_log(struct btrfs_fs_info *fs_info,
return ret;
}
- if (fs_info->sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(fs_info->sb)) {
ret = btrfs_commit_super(fs_info);
if (ret)
return ret;
@@ -2828,6 +2828,8 @@ int open_ctree(struct super_block *sb,
features |= BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF;
if (fs_info->compress_type == BTRFS_COMPRESS_LZO)
features |= BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO;
+ else if (fs_info->compress_type == BTRFS_COMPRESS_ZSTD)
+ features |= BTRFS_FEATURE_INCOMPAT_COMPRESS_ZSTD;
if (features & BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA)
btrfs_info(fs_info, "has skinny extents");
@@ -2874,7 +2876,7 @@ int open_ctree(struct super_block *sb,
features = btrfs_super_compat_ro_flags(disk_super) &
~BTRFS_FEATURE_COMPAT_RO_SUPP;
- if (!(sb->s_flags & MS_RDONLY) && features) {
+ if (!sb_rdonly(sb) && features) {
btrfs_err(fs_info,
"cannot mount read-write because of unsupported optional features (%llx)",
features);
@@ -3036,7 +3038,7 @@ retry_root_backup:
goto fail_sysfs;
}
- if (!(sb->s_flags & MS_RDONLY) && !btrfs_check_rw_degradable(fs_info)) {
+ if (!sb_rdonly(sb) && !btrfs_check_rw_degradable(fs_info)) {
btrfs_warn(fs_info,
"writeable mount is not allowed due to too many missing devices");
goto fail_sysfs;
@@ -3095,7 +3097,7 @@ retry_root_backup:
if (ret)
goto fail_qgroup;
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
ret = btrfs_cleanup_fs_roots(fs_info);
if (ret)
goto fail_qgroup;
@@ -3121,7 +3123,7 @@ retry_root_backup:
goto fail_qgroup;
}
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return 0;
if (btrfs_test_opt(fs_info, CLEAR_CACHE) &&
@@ -3641,7 +3643,14 @@ int write_all_supers(struct btrfs_fs_info *fs_info, int max_mirrors)
u64 flags;
do_barriers = !btrfs_test_opt(fs_info, NOBARRIER);
- backup_super_roots(fs_info);
+
+ /*
+ * max_mirrors == 0 indicates we're from commit_transaction,
+ * not from fsync where the tree roots in fs_info have not
+ * been consistent on disk.
+ */
+ if (max_mirrors == 0)
+ backup_super_roots(fs_info);
sb = fs_info->super_for_commit;
dev_item = &sb->dev_item;
@@ -3876,7 +3885,7 @@ void close_ctree(struct btrfs_fs_info *fs_info)
cancel_work_sync(&fs_info->async_reclaim_work);
- if (!(fs_info->sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(fs_info->sb)) {
/*
* If the cleaner thread is stopped and there are
* block groups queued for removal, the deletion will be
diff --git a/fs/btrfs/export.c b/fs/btrfs/export.c
index fa66980726c9..3aeb5770f896 100644
--- a/fs/btrfs/export.c
+++ b/fs/btrfs/export.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/types.h>
#include "ctree.h"
diff --git a/fs/btrfs/export.h b/fs/btrfs/export.h
index 074348a95841..91b3908e7c54 100644
--- a/fs/btrfs/export.h
+++ b/fs/btrfs/export.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BTRFS_EXPORT_H
#define BTRFS_EXPORT_H
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 0f077c5db58e..7fa50e12f18e 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bitops.h>
#include <linux/slab.h>
#include <linux/bio.h>
@@ -2060,7 +2061,7 @@ int repair_eb_io_failure(struct btrfs_fs_info *fs_info,
unsigned long i, num_pages = num_extent_pages(eb->start, eb->len);
int ret = 0;
- if (fs_info->sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(fs_info->sb))
return -EROFS;
for (i = 0; i < num_pages; i++) {
@@ -2110,7 +2111,7 @@ int clean_io_failure(struct btrfs_fs_info *fs_info,
failrec->start);
goto out;
}
- if (fs_info->sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(fs_info->sb))
goto out;
spin_lock(&io_tree->lock);
@@ -2801,7 +2802,7 @@ static int submit_extent_page(unsigned int opf, struct extent_io_tree *tree,
}
}
- bio = btrfs_bio_alloc(bdev, sector << 9);
+ bio = btrfs_bio_alloc(bdev, (u64)sector << 9);
bio_add_page(bio, page, page_size, offset);
bio->bi_end_io = end_io_func;
bio->bi_private = tree;
@@ -3471,8 +3472,7 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
unsigned int write_flags = 0;
unsigned long nr_written = 0;
- if (wbc->sync_mode == WB_SYNC_ALL)
- write_flags = REQ_SYNC;
+ write_flags = wbc_to_write_flags(wbc);
trace___extent_writepage(page, inode, wbc);
@@ -3718,7 +3718,7 @@ static noinline_for_stack int write_one_eb(struct extent_buffer *eb,
unsigned long i, num_pages;
unsigned long bio_flags = 0;
unsigned long start, end;
- unsigned int write_flags = (epd->sync_io ? REQ_SYNC : 0) | REQ_META;
+ unsigned int write_flags = wbc_to_write_flags(wbc) | REQ_META;
int ret = 0;
clear_bit(EXTENT_BUFFER_WRITE_ERR, &eb->bflags);
@@ -4063,9 +4063,6 @@ static void flush_epd_write_bio(struct extent_page_data *epd)
if (epd->bio) {
int ret;
- bio_set_op_attrs(epd->bio, REQ_OP_WRITE,
- epd->sync_io ? REQ_SYNC : 0);
-
ret = submit_one_bio(epd->bio, 0, epd->bio_flags);
BUG_ON(ret < 0); /* -ENOMEM */
epd->bio = NULL;
diff --git a/fs/btrfs/extent_io.h b/fs/btrfs/extent_io.h
index faffa28ba707..e5535bbe6953 100644
--- a/fs/btrfs/extent_io.h
+++ b/fs/btrfs/extent_io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __EXTENTIO__
#define __EXTENTIO__
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c
index 69850155870c..2e348fb0b280 100644
--- a/fs/btrfs/extent_map.c
+++ b/fs/btrfs/extent_map.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/err.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
diff --git a/fs/btrfs/extent_map.h b/fs/btrfs/extent_map.h
index a67b2def5413..64365bbc9b16 100644
--- a/fs/btrfs/extent_map.h
+++ b/fs/btrfs/extent_map.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __EXTENTMAP__
#define __EXTENTMAP__
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 74fd7756cff3..aafcc785f840 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1886,6 +1886,10 @@ static ssize_t btrfs_file_write_iter(struct kiocb *iocb,
loff_t oldsize;
int clean_page = 0;
+ if (!(iocb->ki_flags & IOCB_DIRECT) &&
+ (iocb->ki_flags & IOCB_NOWAIT))
+ return -EOPNOTSUPP;
+
if (!inode_trylock(inode)) {
if (iocb->ki_flags & IOCB_NOWAIT)
return -EAGAIN;
@@ -3112,7 +3116,7 @@ out:
static int btrfs_file_open(struct inode *inode, struct file *filp)
{
- filp->f_mode |= FMODE_AIO_NOWAIT;
+ filp->f_mode |= FMODE_NOWAIT;
return generic_file_open(inode, filp);
}
diff --git a/fs/btrfs/inode-map.h b/fs/btrfs/inode-map.h
index c8e864b2d530..6734ec92a1e9 100644
--- a/fs/btrfs/inode-map.h
+++ b/fs/btrfs/inode-map.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BTRFS_INODE_MAP
#define __BTRFS_INODE_MAP
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 17ad018da0a2..d94e3f68b9b1 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -135,6 +135,18 @@ static inline void btrfs_cleanup_ordered_extents(struct inode *inode,
const u64 offset,
const u64 bytes)
{
+ unsigned long index = offset >> PAGE_SHIFT;
+ unsigned long end_index = (offset + bytes - 1) >> PAGE_SHIFT;
+ struct page *page;
+
+ while (index <= end_index) {
+ page = find_get_page(inode->i_mapping, index);
+ index++;
+ if (!page)
+ continue;
+ ClearPagePrivate2(page);
+ put_page(page);
+ }
return __endio_write_update_ordered(inode, offset + PAGE_SIZE,
bytes - PAGE_SIZE, false);
}
@@ -5821,7 +5833,7 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry)
if (!IS_ERR(inode) && root != sub_root) {
down_read(&fs_info->cleanup_work_sem);
- if (!(inode->i_sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(inode->i_sb))
ret = btrfs_orphan_cleanup(sub_root);
up_read(&fs_info->cleanup_work_sem);
if (ret) {
@@ -8357,11 +8369,8 @@ static void btrfs_endio_direct_read(struct bio *bio)
struct btrfs_io_bio *io_bio = btrfs_io_bio(bio);
blk_status_t err = bio->bi_status;
- if (dip->flags & BTRFS_DIO_ORIG_BIO_SUBMITTED) {
+ if (dip->flags & BTRFS_DIO_ORIG_BIO_SUBMITTED)
err = btrfs_subio_endio_read(inode, io_bio, err);
- if (!err)
- bio->bi_status = 0;
- }
unlock_extent(&BTRFS_I(inode)->io_tree, dip->logical_offset,
dip->logical_offset + dip->bytes - 1);
@@ -8369,7 +8378,7 @@ static void btrfs_endio_direct_read(struct bio *bio)
kfree(dip);
- dio_bio->bi_status = bio->bi_status;
+ dio_bio->bi_status = err;
dio_end_io(dio_bio);
if (io_bio->end_io)
@@ -8387,6 +8396,7 @@ static void __endio_write_update_ordered(struct inode *inode,
btrfs_work_func_t func;
u64 ordered_offset = offset;
u64 ordered_bytes = bytes;
+ u64 last_offset;
int ret;
if (btrfs_is_free_space_inode(BTRFS_I(inode))) {
@@ -8398,6 +8408,7 @@ static void __endio_write_update_ordered(struct inode *inode,
}
again:
+ last_offset = ordered_offset;
ret = btrfs_dec_test_first_ordered_pending(inode, &ordered,
&ordered_offset,
ordered_bytes,
@@ -8409,6 +8420,12 @@ again:
btrfs_queue_work(wq, &ordered->work);
out_test:
/*
+ * If btrfs_dec_test_ordered_pending does not find any ordered extent
+ * in the range, we can exit.
+ */
+ if (ordered_offset == last_offset)
+ return;
+ /*
* our bio might span multiple ordered extents. If we haven't
* completed the accounting for the whole dio, go back and try again
*/
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index ae8fbf9d3de2..6c7a49faf4e0 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -296,8 +296,10 @@ static int btrfs_ioctl_setflags(struct file *file, void __user *arg)
if (fs_info->compress_type == BTRFS_COMPRESS_LZO)
comp = "lzo";
- else
+ else if (fs_info->compress_type == BTRFS_COMPRESS_ZLIB)
comp = "zlib";
+ else
+ comp = "zstd";
ret = btrfs_set_prop(inode, "btrfs.compression",
comp, strlen(comp), 0);
if (ret)
@@ -1435,6 +1437,8 @@ int btrfs_defrag_file(struct inode *inode, struct file *file,
if (range->compress_type == BTRFS_COMPRESS_LZO) {
btrfs_set_fs_incompat(fs_info, COMPRESS_LZO);
+ } else if (range->compress_type == BTRFS_COMPRESS_ZSTD) {
+ btrfs_set_fs_incompat(fs_info, COMPRESS_ZSTD);
}
ret = defrag_count;
@@ -2769,9 +2773,9 @@ static long btrfs_ioctl_fs_info(struct btrfs_fs_info *fs_info,
}
mutex_unlock(&fs_devices->device_list_mutex);
- fi_args->nodesize = fs_info->super_copy->nodesize;
- fi_args->sectorsize = fs_info->super_copy->sectorsize;
- fi_args->clone_alignment = fs_info->super_copy->sectorsize;
+ fi_args->nodesize = fs_info->nodesize;
+ fi_args->sectorsize = fs_info->sectorsize;
+ fi_args->clone_alignment = fs_info->sectorsize;
if (copy_to_user(arg, fi_args, sizeof(*fi_args)))
ret = -EFAULT;
@@ -3028,7 +3032,7 @@ static int btrfs_cmp_data_prepare(struct inode *src, u64 loff,
out:
if (ret)
btrfs_cmp_data_free(cmp);
- return 0;
+ return ret;
}
static int btrfs_cmp_data(u64 len, struct cmp_pages *cmp)
@@ -4057,6 +4061,10 @@ static long btrfs_ioctl_default_subvol(struct file *file, void __user *argp)
ret = PTR_ERR(new_root);
goto out;
}
+ if (!is_fstree(new_root->objectid)) {
+ ret = -ENOENT;
+ goto out;
+ }
path = btrfs_alloc_path();
if (!path) {
@@ -4422,7 +4430,7 @@ static long btrfs_ioctl_dev_replace(struct btrfs_fs_info *fs_info,
switch (p->cmd) {
case BTRFS_IOCTL_DEV_REPLACE_CMD_START:
- if (fs_info->sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(fs_info->sb)) {
ret = -EROFS;
goto out;
}
diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
index 09c0266f248d..f6a05f836629 100644
--- a/fs/btrfs/props.c
+++ b/fs/btrfs/props.c
@@ -390,6 +390,8 @@ static int prop_compression_validate(const char *value, size_t len)
return 0;
else if (!strncmp("zlib", value, len))
return 0;
+ else if (!strncmp("zstd", value, len))
+ return 0;
return -EINVAL;
}
@@ -412,6 +414,8 @@ static int prop_compression_apply(struct inode *inode,
type = BTRFS_COMPRESS_LZO;
else if (!strncmp("zlib", value, 4))
type = BTRFS_COMPRESS_ZLIB;
+ else if (!strncmp("zstd", value, len))
+ type = BTRFS_COMPRESS_ZSTD;
else
return -EINVAL;
@@ -429,6 +433,8 @@ static const char *prop_compression_extract(struct inode *inode)
return "zlib";
case BTRFS_COMPRESS_LZO:
return "lzo";
+ case BTRFS_COMPRESS_ZSTD:
+ return "zstd";
}
return NULL;
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 5c8b61c86e61..e172d4843eae 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -807,7 +807,6 @@ static int btrfs_clean_quota_tree(struct btrfs_trans_handle *trans,
}
ret = 0;
out:
- set_bit(BTRFS_FS_QUOTA_DISABLING, &root->fs_info->flags);
btrfs_free_path(path);
return ret;
}
@@ -953,7 +952,6 @@ int btrfs_quota_disable(struct btrfs_trans_handle *trans,
if (!fs_info->quota_root)
goto out;
clear_bit(BTRFS_FS_QUOTA_ENABLED, &fs_info->flags);
- set_bit(BTRFS_FS_QUOTA_DISABLING, &fs_info->flags);
btrfs_qgroup_wait_for_completion(fs_info, false);
spin_lock(&fs_info->qgroup_lock);
quota_root = fs_info->quota_root;
@@ -1307,6 +1305,8 @@ int btrfs_remove_qgroup(struct btrfs_trans_handle *trans,
}
}
ret = del_qgroup_item(trans, quota_root, qgroupid);
+ if (ret && ret != -ENOENT)
+ goto out;
while (!list_empty(&qgroup->groups)) {
list = list_first_entry(&qgroup->groups,
@@ -2086,8 +2086,6 @@ int btrfs_run_qgroups(struct btrfs_trans_handle *trans,
if (test_and_clear_bit(BTRFS_FS_QUOTA_ENABLING, &fs_info->flags))
set_bit(BTRFS_FS_QUOTA_ENABLED, &fs_info->flags);
- if (test_and_clear_bit(BTRFS_FS_QUOTA_DISABLING, &fs_info->flags))
- clear_bit(BTRFS_FS_QUOTA_ENABLED, &fs_info->flags);
spin_lock(&fs_info->qgroup_lock);
while (!list_empty(&fs_info->dirty_qgroups)) {
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 3a49a3c2fca4..9841faef08ea 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -2400,11 +2400,11 @@ void free_reloc_roots(struct list_head *list)
while (!list_empty(list)) {
reloc_root = list_entry(list->next, struct btrfs_root,
root_list);
+ __del_reloc_root(reloc_root);
free_extent_buffer(reloc_root->node);
free_extent_buffer(reloc_root->commit_root);
reloc_root->node = NULL;
reloc_root->commit_root = NULL;
- __del_reloc_root(reloc_root);
}
}
diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c
index 9fb9896610e0..95bcc3cce78f 100644
--- a/fs/btrfs/root-tree.c
+++ b/fs/btrfs/root-tree.c
@@ -228,7 +228,7 @@ int btrfs_find_orphan_roots(struct btrfs_fs_info *fs_info)
int ret;
bool can_recover = true;
- if (fs_info->sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(fs_info->sb))
can_recover = false;
path = btrfs_alloc_path();
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index 8f1d3d6e7087..8fd195cfe81b 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -539,33 +539,23 @@ static struct btrfs_path *alloc_path_for_send(void)
static int write_buf(struct file *filp, const void *buf, u32 len, loff_t *off)
{
int ret;
- mm_segment_t old_fs;
u32 pos = 0;
- old_fs = get_fs();
- set_fs(KERNEL_DS);
-
while (pos < len) {
- ret = vfs_write(filp, (__force const char __user *)buf + pos,
- len - pos, off);
+ ret = kernel_write(filp, buf + pos, len - pos, off);
/* TODO handle that correctly */
/*if (ret == -ERESTARTSYS) {
continue;
}*/
if (ret < 0)
- goto out;
+ return ret;
if (ret == 0) {
- ret = -EIO;
- goto out;
+ return -EIO;
}
pos += ret;
}
- ret = 0;
-
-out:
- set_fs(old_fs);
- return ret;
+ return 0;
}
static int tlv_put(struct send_ctx *sctx, u16 attr, const void *data, int len)
@@ -2640,7 +2630,7 @@ static int send_create_inode(struct send_ctx *sctx, u64 ino)
} else {
btrfs_warn(sctx->send_root->fs_info, "unexpected inode type %o",
(int)(mode & S_IFMT));
- ret = -ENOTSUPP;
+ ret = -EOPNOTSUPP;
goto out;
}
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 0b7a1d8cd08b..161694b66038 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -103,7 +103,7 @@ static void btrfs_handle_error(struct btrfs_fs_info *fs_info)
{
struct super_block *sb = fs_info->sb;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return;
if (test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) {
@@ -139,7 +139,7 @@ void __btrfs_handle_fs_error(struct btrfs_fs_info *fs_info, const char *function
* Special case: if the error is EROFS, and we're already
* under MS_RDONLY, then it is safe here.
*/
- if (errno == -EROFS && (sb->s_flags & MS_RDONLY))
+ if (errno == -EROFS && sb_rdonly(sb))
return;
#ifdef CONFIG_PRINTK
@@ -514,6 +514,14 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options,
btrfs_clear_opt(info->mount_opt, NODATASUM);
btrfs_set_fs_incompat(info, COMPRESS_LZO);
no_compress = 0;
+ } else if (strcmp(args[0].from, "zstd") == 0) {
+ compress_type = "zstd";
+ info->compress_type = BTRFS_COMPRESS_ZSTD;
+ btrfs_set_opt(info->mount_opt, COMPRESS);
+ btrfs_clear_opt(info->mount_opt, NODATACOW);
+ btrfs_clear_opt(info->mount_opt, NODATASUM);
+ btrfs_set_fs_incompat(info, COMPRESS_ZSTD);
+ no_compress = 0;
} else if (strncmp(args[0].from, "no", 2) == 0) {
compress_type = "no";
btrfs_clear_opt(info->mount_opt, COMPRESS);
@@ -1127,7 +1135,7 @@ static int btrfs_fill_super(struct super_block *sb,
#ifdef CONFIG_BTRFS_FS_POSIX_ACL
sb->s_flags |= MS_POSIXACL;
#endif
- sb->s_flags |= MS_I_VERSION;
+ sb->s_flags |= SB_I_VERSION;
sb->s_iflags |= SB_I_CGROUPWB;
err = super_setup_bdi(sb);
@@ -1230,8 +1238,10 @@ static int btrfs_show_options(struct seq_file *seq, struct dentry *dentry)
if (btrfs_test_opt(info, COMPRESS)) {
if (info->compress_type == BTRFS_COMPRESS_ZLIB)
compress_type = "zlib";
- else
+ else if (info->compress_type == BTRFS_COMPRESS_LZO)
compress_type = "lzo";
+ else
+ compress_type = "zstd";
if (btrfs_test_opt(info, FORCE_COMPRESS))
seq_printf(seq, ",compress-force=%s", compress_type);
else
@@ -1691,8 +1701,7 @@ static inline void btrfs_remount_cleanup(struct btrfs_fs_info *fs_info,
* close or the filesystem is read only.
*/
if (btrfs_raw_test_opt(old_opts, AUTO_DEFRAG) &&
- (!btrfs_raw_test_opt(fs_info->mount_opt, AUTO_DEFRAG) ||
- (fs_info->sb->s_flags & MS_RDONLY))) {
+ (!btrfs_raw_test_opt(fs_info->mount_opt, AUTO_DEFRAG) || sb_rdonly(fs_info->sb))) {
btrfs_cleanup_defrag_inodes(fs_info);
}
@@ -1739,7 +1748,7 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data)
btrfs_resize_thread_pool(fs_info,
fs_info->thread_pool_size, old_thread_pool_size);
- if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
+ if ((bool)(*flags & MS_RDONLY) == sb_rdonly(sb))
goto out;
if (*flags & MS_RDONLY) {
@@ -1840,7 +1849,7 @@ out:
restore:
/* We've hit an error - don't reset MS_RDONLY */
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
old_flags |= MS_RDONLY;
sb->s_flags = old_flags;
fs_info->mount_opt = old_opts;
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
index c2d5f3580b4c..883881b16c86 100644
--- a/fs/btrfs/sysfs.c
+++ b/fs/btrfs/sysfs.c
@@ -120,7 +120,7 @@ static ssize_t btrfs_feature_attr_store(struct kobject *kobj,
if (!fs_info)
return -EPERM;
- if (fs_info->sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(fs_info->sb))
return -EROFS;
ret = kstrtoul(skip_spaces(buf), 0, &val);
@@ -200,6 +200,7 @@ BTRFS_FEAT_ATTR_INCOMPAT(mixed_backref, MIXED_BACKREF);
BTRFS_FEAT_ATTR_INCOMPAT(default_subvol, DEFAULT_SUBVOL);
BTRFS_FEAT_ATTR_INCOMPAT(mixed_groups, MIXED_GROUPS);
BTRFS_FEAT_ATTR_INCOMPAT(compress_lzo, COMPRESS_LZO);
+BTRFS_FEAT_ATTR_INCOMPAT(compress_zstd, COMPRESS_ZSTD);
BTRFS_FEAT_ATTR_INCOMPAT(big_metadata, BIG_METADATA);
BTRFS_FEAT_ATTR_INCOMPAT(extended_iref, EXTENDED_IREF);
BTRFS_FEAT_ATTR_INCOMPAT(raid56, RAID56);
@@ -212,6 +213,7 @@ static struct attribute *btrfs_supported_feature_attrs[] = {
BTRFS_FEAT_ATTR_PTR(default_subvol),
BTRFS_FEAT_ATTR_PTR(mixed_groups),
BTRFS_FEAT_ATTR_PTR(compress_lzo),
+ BTRFS_FEAT_ATTR_PTR(compress_zstd),
BTRFS_FEAT_ATTR_PTR(big_metadata),
BTRFS_FEAT_ATTR_PTR(extended_iref),
BTRFS_FEAT_ATTR_PTR(raid56),
@@ -388,7 +390,7 @@ static ssize_t btrfs_label_store(struct kobject *kobj,
if (!fs_info)
return -EPERM;
- if (fs_info->sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(fs_info->sb))
return -EROFS;
/*
diff --git a/fs/btrfs/sysfs.h b/fs/btrfs/sysfs.h
index d7da1a4c2f6c..4cb908305e5d 100644
--- a/fs/btrfs/sysfs.h
+++ b/fs/btrfs/sysfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BTRFS_SYSFS_H_
#define _BTRFS_SYSFS_H_
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index ad7f4bab640b..c800d067fcbf 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -4181,6 +4181,7 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans,
struct extent_map *em, *n;
struct list_head extents;
struct extent_map_tree *tree = &inode->extent_tree;
+ u64 logged_start, logged_end;
u64 test_gen;
int ret = 0;
int num = 0;
@@ -4190,10 +4191,11 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans,
down_write(&inode->dio_sem);
write_lock(&tree->lock);
test_gen = root->fs_info->last_trans_committed;
+ logged_start = start;
+ logged_end = end;
list_for_each_entry_safe(em, n, &tree->modified_extents, list) {
list_del_init(&em->list);
-
/*
* Just an arbitrary number, this can be really CPU intensive
* once we start getting a lot of extents, and really once we
@@ -4208,6 +4210,12 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans,
if (em->generation <= test_gen)
continue;
+
+ if (em->start < logged_start)
+ logged_start = em->start;
+ if ((em->start + em->len - 1) > logged_end)
+ logged_end = em->start + em->len - 1;
+
/* Need a ref to keep it from getting evicted from cache */
refcount_inc(&em->refs);
set_bit(EXTENT_FLAG_LOGGING, &em->flags);
@@ -4216,7 +4224,7 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans,
}
list_sort(NULL, &extents, extent_cmp);
- btrfs_get_logged_extents(inode, logged_list, start, end);
+ btrfs_get_logged_extents(inode, logged_list, logged_start, logged_end);
/*
* Some ordered extents started by fsync might have completed
* before we could collect them into the list logged_list, which
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index c188256a367c..b39737568c22 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -2324,7 +2324,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
int seeding_dev = 0;
int ret = 0;
- if ((sb->s_flags & MS_RDONLY) && !fs_info->fs_devices->seeding)
+ if (sb_rdonly(sb) && !fs_info->fs_devices->seeding)
return -EROFS;
bdev = blkdev_get_by_path(device_path, FMODE_WRITE | FMODE_EXCL,
@@ -4053,7 +4053,7 @@ int btrfs_pause_balance(struct btrfs_fs_info *fs_info)
int btrfs_cancel_balance(struct btrfs_fs_info *fs_info)
{
- if (fs_info->sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(fs_info->sb))
return -EROFS;
mutex_lock(&fs_info->balance_mutex);
@@ -6166,7 +6166,7 @@ blk_status_t btrfs_map_bio(struct btrfs_fs_info *fs_info, struct bio *bio,
map_length = length;
btrfs_bio_counter_inc_blocked(fs_info);
- ret = __btrfs_map_block(fs_info, bio_op(bio), logical,
+ ret = __btrfs_map_block(fs_info, btrfs_op(bio), logical,
&map_length, &bbio, mirror_num, 1);
if (ret) {
btrfs_bio_counter_dec(fs_info);
diff --git a/fs/btrfs/zstd.c b/fs/btrfs/zstd.c
new file mode 100644
index 000000000000..607ce47b483a
--- /dev/null
+++ b/fs/btrfs/zstd.c
@@ -0,0 +1,432 @@
+/*
+ * Copyright (c) 2016-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License v2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ */
+#include <linux/bio.h>
+#include <linux/err.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/mm.h>
+#include <linux/pagemap.h>
+#include <linux/refcount.h>
+#include <linux/sched.h>
+#include <linux/slab.h>
+#include <linux/zstd.h>
+#include "compression.h"
+
+#define ZSTD_BTRFS_MAX_WINDOWLOG 17
+#define ZSTD_BTRFS_MAX_INPUT (1 << ZSTD_BTRFS_MAX_WINDOWLOG)
+#define ZSTD_BTRFS_DEFAULT_LEVEL 3
+
+static ZSTD_parameters zstd_get_btrfs_parameters(size_t src_len)
+{
+ ZSTD_parameters params = ZSTD_getParams(ZSTD_BTRFS_DEFAULT_LEVEL,
+ src_len, 0);
+
+ if (params.cParams.windowLog > ZSTD_BTRFS_MAX_WINDOWLOG)
+ params.cParams.windowLog = ZSTD_BTRFS_MAX_WINDOWLOG;
+ WARN_ON(src_len > ZSTD_BTRFS_MAX_INPUT);
+ return params;
+}
+
+struct workspace {
+ void *mem;
+ size_t size;
+ char *buf;
+ struct list_head list;
+};
+
+static void zstd_free_workspace(struct list_head *ws)
+{
+ struct workspace *workspace = list_entry(ws, struct workspace, list);
+
+ kvfree(workspace->mem);
+ kfree(workspace->buf);
+ kfree(workspace);
+}
+
+static struct list_head *zstd_alloc_workspace(void)
+{
+ ZSTD_parameters params =
+ zstd_get_btrfs_parameters(ZSTD_BTRFS_MAX_INPUT);
+ struct workspace *workspace;
+
+ workspace = kzalloc(sizeof(*workspace), GFP_KERNEL);
+ if (!workspace)
+ return ERR_PTR(-ENOMEM);
+
+ workspace->size = max_t(size_t,
+ ZSTD_CStreamWorkspaceBound(params.cParams),
+ ZSTD_DStreamWorkspaceBound(ZSTD_BTRFS_MAX_INPUT));
+ workspace->mem = kvmalloc(workspace->size, GFP_KERNEL);
+ workspace->buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
+ if (!workspace->mem || !workspace->buf)
+ goto fail;
+
+ INIT_LIST_HEAD(&workspace->list);
+
+ return &workspace->list;
+fail:
+ zstd_free_workspace(&workspace->list);
+ return ERR_PTR(-ENOMEM);
+}
+
+static int zstd_compress_pages(struct list_head *ws,
+ struct address_space *mapping,
+ u64 start,
+ struct page **pages,
+ unsigned long *out_pages,
+ unsigned long *total_in,
+ unsigned long *total_out)
+{
+ struct workspace *workspace = list_entry(ws, struct workspace, list);
+ ZSTD_CStream *stream;
+ int ret = 0;
+ int nr_pages = 0;
+ struct page *in_page = NULL; /* The current page to read */
+ struct page *out_page = NULL; /* The current page to write to */
+ ZSTD_inBuffer in_buf = { NULL, 0, 0 };
+ ZSTD_outBuffer out_buf = { NULL, 0, 0 };
+ unsigned long tot_in = 0;
+ unsigned long tot_out = 0;
+ unsigned long len = *total_out;
+ const unsigned long nr_dest_pages = *out_pages;
+ unsigned long max_out = nr_dest_pages * PAGE_SIZE;
+ ZSTD_parameters params = zstd_get_btrfs_parameters(len);
+
+ *out_pages = 0;
+ *total_out = 0;
+ *total_in = 0;
+
+ /* Initialize the stream */
+ stream = ZSTD_initCStream(params, len, workspace->mem,
+ workspace->size);
+ if (!stream) {
+ pr_warn("BTRFS: ZSTD_initCStream failed\n");
+ ret = -EIO;
+ goto out;
+ }
+
+ /* map in the first page of input data */
+ in_page = find_get_page(mapping, start >> PAGE_SHIFT);
+ in_buf.src = kmap(in_page);
+ in_buf.pos = 0;
+ in_buf.size = min_t(size_t, len, PAGE_SIZE);
+
+
+ /* Allocate and map in the output buffer */
+ out_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
+ if (out_page == NULL) {
+ ret = -ENOMEM;
+ goto out;
+ }
+ pages[nr_pages++] = out_page;
+ out_buf.dst = kmap(out_page);
+ out_buf.pos = 0;
+ out_buf.size = min_t(size_t, max_out, PAGE_SIZE);
+
+ while (1) {
+ size_t ret2;
+
+ ret2 = ZSTD_compressStream(stream, &out_buf, &in_buf);
+ if (ZSTD_isError(ret2)) {
+ pr_debug("BTRFS: ZSTD_compressStream returned %d\n",
+ ZSTD_getErrorCode(ret2));
+ ret = -EIO;
+ goto out;
+ }
+
+ /* Check to see if we are making it bigger */
+ if (tot_in + in_buf.pos > 8192 &&
+ tot_in + in_buf.pos <
+ tot_out + out_buf.pos) {
+ ret = -E2BIG;
+ goto out;
+ }
+
+ /* We've reached the end of our output range */
+ if (out_buf.pos >= max_out) {
+ tot_out += out_buf.pos;
+ ret = -E2BIG;
+ goto out;
+ }
+
+ /* Check if we need more output space */
+ if (out_buf.pos == out_buf.size) {
+ tot_out += PAGE_SIZE;
+ max_out -= PAGE_SIZE;
+ kunmap(out_page);
+ if (nr_pages == nr_dest_pages) {
+ out_page = NULL;
+ ret = -E2BIG;
+ goto out;
+ }
+ out_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
+ if (out_page == NULL) {
+ ret = -ENOMEM;
+ goto out;
+ }
+ pages[nr_pages++] = out_page;
+ out_buf.dst = kmap(out_page);
+ out_buf.pos = 0;
+ out_buf.size = min_t(size_t, max_out, PAGE_SIZE);
+ }
+
+ /* We've reached the end of the input */
+ if (in_buf.pos >= len) {
+ tot_in += in_buf.pos;
+ break;
+ }
+
+ /* Check if we need more input */
+ if (in_buf.pos == in_buf.size) {
+ tot_in += PAGE_SIZE;
+ kunmap(in_page);
+ put_page(in_page);
+
+ start += PAGE_SIZE;
+ len -= PAGE_SIZE;
+ in_page = find_get_page(mapping, start >> PAGE_SHIFT);
+ in_buf.src = kmap(in_page);
+ in_buf.pos = 0;
+ in_buf.size = min_t(size_t, len, PAGE_SIZE);
+ }
+ }
+ while (1) {
+ size_t ret2;
+
+ ret2 = ZSTD_endStream(stream, &out_buf);
+ if (ZSTD_isError(ret2)) {
+ pr_debug("BTRFS: ZSTD_endStream returned %d\n",
+ ZSTD_getErrorCode(ret2));
+ ret = -EIO;
+ goto out;
+ }
+ if (ret2 == 0) {
+ tot_out += out_buf.pos;
+ break;
+ }
+ if (out_buf.pos >= max_out) {
+ tot_out += out_buf.pos;
+ ret = -E2BIG;
+ goto out;
+ }
+
+ tot_out += PAGE_SIZE;
+ max_out -= PAGE_SIZE;
+ kunmap(out_page);
+ if (nr_pages == nr_dest_pages) {
+ out_page = NULL;
+ ret = -E2BIG;
+ goto out;
+ }
+ out_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
+ if (out_page == NULL) {
+ ret = -ENOMEM;
+ goto out;
+ }
+ pages[nr_pages++] = out_page;
+ out_buf.dst = kmap(out_page);
+ out_buf.pos = 0;
+ out_buf.size = min_t(size_t, max_out, PAGE_SIZE);
+ }
+
+ if (tot_out >= tot_in) {
+ ret = -E2BIG;
+ goto out;
+ }
+
+ ret = 0;
+ *total_in = tot_in;
+ *total_out = tot_out;
+out:
+ *out_pages = nr_pages;
+ /* Cleanup */
+ if (in_page) {
+ kunmap(in_page);
+ put_page(in_page);
+ }
+ if (out_page)
+ kunmap(out_page);
+ return ret;
+}
+
+static int zstd_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
+{
+ struct workspace *workspace = list_entry(ws, struct workspace, list);
+ struct page **pages_in = cb->compressed_pages;
+ u64 disk_start = cb->start;
+ struct bio *orig_bio = cb->orig_bio;
+ size_t srclen = cb->compressed_len;
+ ZSTD_DStream *stream;
+ int ret = 0;
+ unsigned long page_in_index = 0;
+ unsigned long total_pages_in = DIV_ROUND_UP(srclen, PAGE_SIZE);
+ unsigned long buf_start;
+ unsigned long total_out = 0;
+ ZSTD_inBuffer in_buf = { NULL, 0, 0 };
+ ZSTD_outBuffer out_buf = { NULL, 0, 0 };
+
+ stream = ZSTD_initDStream(
+ ZSTD_BTRFS_MAX_INPUT, workspace->mem, workspace->size);
+ if (!stream) {
+ pr_debug("BTRFS: ZSTD_initDStream failed\n");
+ ret = -EIO;
+ goto done;
+ }
+
+ in_buf.src = kmap(pages_in[page_in_index]);
+ in_buf.pos = 0;
+ in_buf.size = min_t(size_t, srclen, PAGE_SIZE);
+
+ out_buf.dst = workspace->buf;
+ out_buf.pos = 0;
+ out_buf.size = PAGE_SIZE;
+
+ while (1) {
+ size_t ret2;
+
+ ret2 = ZSTD_decompressStream(stream, &out_buf, &in_buf);
+ if (ZSTD_isError(ret2)) {
+ pr_debug("BTRFS: ZSTD_decompressStream returned %d\n",
+ ZSTD_getErrorCode(ret2));
+ ret = -EIO;
+ goto done;
+ }
+ buf_start = total_out;
+ total_out += out_buf.pos;
+ out_buf.pos = 0;
+
+ ret = btrfs_decompress_buf2page(out_buf.dst, buf_start,
+ total_out, disk_start, orig_bio);
+ if (ret == 0)
+ break;
+
+ if (in_buf.pos >= srclen)
+ break;
+
+ /* Check if we've hit the end of a frame */
+ if (ret2 == 0)
+ break;
+
+ if (in_buf.pos == in_buf.size) {
+ kunmap(pages_in[page_in_index++]);
+ if (page_in_index >= total_pages_in) {
+ in_buf.src = NULL;
+ ret = -EIO;
+ goto done;
+ }
+ srclen -= PAGE_SIZE;
+ in_buf.src = kmap(pages_in[page_in_index]);
+ in_buf.pos = 0;
+ in_buf.size = min_t(size_t, srclen, PAGE_SIZE);
+ }
+ }
+ ret = 0;
+ zero_fill_bio(orig_bio);
+done:
+ if (in_buf.src)
+ kunmap(pages_in[page_in_index]);
+ return ret;
+}
+
+static int zstd_decompress(struct list_head *ws, unsigned char *data_in,
+ struct page *dest_page,
+ unsigned long start_byte,
+ size_t srclen, size_t destlen)
+{
+ struct workspace *workspace = list_entry(ws, struct workspace, list);
+ ZSTD_DStream *stream;
+ int ret = 0;
+ size_t ret2;
+ ZSTD_inBuffer in_buf = { NULL, 0, 0 };
+ ZSTD_outBuffer out_buf = { NULL, 0, 0 };
+ unsigned long total_out = 0;
+ unsigned long pg_offset = 0;
+ char *kaddr;
+
+ stream = ZSTD_initDStream(
+ ZSTD_BTRFS_MAX_INPUT, workspace->mem, workspace->size);
+ if (!stream) {
+ pr_warn("BTRFS: ZSTD_initDStream failed\n");
+ ret = -EIO;
+ goto finish;
+ }
+
+ destlen = min_t(size_t, destlen, PAGE_SIZE);
+
+ in_buf.src = data_in;
+ in_buf.pos = 0;
+ in_buf.size = srclen;
+
+ out_buf.dst = workspace->buf;
+ out_buf.pos = 0;
+ out_buf.size = PAGE_SIZE;
+
+ ret2 = 1;
+ while (pg_offset < destlen && in_buf.pos < in_buf.size) {
+ unsigned long buf_start;
+ unsigned long buf_offset;
+ unsigned long bytes;
+
+ /* Check if the frame is over and we still need more input */
+ if (ret2 == 0) {
+ pr_debug("BTRFS: ZSTD_decompressStream ended early\n");
+ ret = -EIO;
+ goto finish;
+ }
+ ret2 = ZSTD_decompressStream(stream, &out_buf, &in_buf);
+ if (ZSTD_isError(ret2)) {
+ pr_debug("BTRFS: ZSTD_decompressStream returned %d\n",
+ ZSTD_getErrorCode(ret2));
+ ret = -EIO;
+ goto finish;
+ }
+
+ buf_start = total_out;
+ total_out += out_buf.pos;
+ out_buf.pos = 0;
+
+ if (total_out <= start_byte)
+ continue;
+
+ if (total_out > start_byte && buf_start < start_byte)
+ buf_offset = start_byte - buf_start;
+ else
+ buf_offset = 0;
+
+ bytes = min_t(unsigned long, destlen - pg_offset,
+ out_buf.size - buf_offset);
+
+ kaddr = kmap_atomic(dest_page);
+ memcpy(kaddr + pg_offset, out_buf.dst + buf_offset, bytes);
+ kunmap_atomic(kaddr);
+
+ pg_offset += bytes;
+ }
+ ret = 0;
+finish:
+ if (pg_offset < destlen) {
+ kaddr = kmap_atomic(dest_page);
+ memset(kaddr + pg_offset, 0, destlen - pg_offset);
+ kunmap_atomic(kaddr);
+ }
+ return ret;
+}
+
+const struct btrfs_compress_op btrfs_zstd_compress = {
+ .alloc_workspace = zstd_alloc_workspace,
+ .free_workspace = zstd_free_workspace,
+ .compress_pages = zstd_compress_pages,
+ .decompress_bio = zstd_decompress_bio,
+ .decompress = zstd_decompress,
+};
diff --git a/fs/cachefiles/Makefile b/fs/cachefiles/Makefile
index 32cbab0ffce3..891dedda5905 100644
--- a/fs/cachefiles/Makefile
+++ b/fs/cachefiles/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for caching in a mounted filesystem
#
diff --git a/fs/cachefiles/bind.c b/fs/cachefiles/bind.c
index 3ff867f87d73..d9f001078e08 100644
--- a/fs/cachefiles/bind.c
+++ b/fs/cachefiles/bind.c
@@ -133,7 +133,7 @@ static int cachefiles_daemon_add_cache(struct cachefiles_cache *cache)
goto error_unsupported;
ret = -EROFS;
- if (root->d_sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(root->d_sb))
goto error_unsupported;
/* determine the security of the on-disk cache as this governs
diff --git a/fs/ceph/Makefile b/fs/ceph/Makefile
index 85a4230b9bff..174f5709e508 100644
--- a/fs/ceph/Makefile
+++ b/fs/ceph/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for CEPH filesystem.
#
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index b3e3edc09d80..4d622654bfbc 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/backing-dev.h>
diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index 157fe59fbabe..ff5d32cf9578 100644
--- a/fs/ceph/caps.c
+++ b/fs/ceph/caps.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/fs.h>
@@ -1991,6 +1992,7 @@ static int try_flush_caps(struct inode *inode, u64 *ptid)
retry:
spin_lock(&ci->i_ceph_lock);
if (ci->i_ceph_flags & CEPH_I_NOFLUSH) {
+ spin_unlock(&ci->i_ceph_lock);
dout("try_flush_caps skipping %p I_NOFLUSH set\n", inode);
goto out;
}
@@ -2008,8 +2010,10 @@ retry:
mutex_lock(&session->s_mutex);
goto retry;
}
- if (cap->session->s_state < CEPH_MDS_SESSION_OPEN)
+ if (cap->session->s_state < CEPH_MDS_SESSION_OPEN) {
+ spin_unlock(&ci->i_ceph_lock);
goto out;
+ }
flushing = __mark_caps_flushing(inode, session, true,
&flush_tid, &oldest_flush_tid);
diff --git a/fs/ceph/ceph_frag.c b/fs/ceph/ceph_frag.c
index bdce8b1fbd06..6f67d5b884a0 100644
--- a/fs/ceph/ceph_frag.c
+++ b/fs/ceph/ceph_frag.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Ceph 'frag' type
*/
diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c
index d635496ea189..644def813754 100644
--- a/fs/ceph/debugfs.c
+++ b/fs/ceph/debugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/device.h>
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index 019c2036d36f..8a5266699b67 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/spinlock.h>
diff --git a/fs/ceph/export.c b/fs/ceph/export.c
index 7df550c13d7f..3c59ad180ef0 100644
--- a/fs/ceph/export.c
+++ b/fs/ceph/export.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/exportfs.h>
diff --git a/fs/ceph/file.c b/fs/ceph/file.c
index 65a6fa12c857..5c17125f45c7 100644
--- a/fs/ceph/file.c
+++ b/fs/ceph/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/module.h>
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
index 373dab5173ca..f2550a076edc 100644
--- a/fs/ceph/inode.c
+++ b/fs/ceph/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/module.h>
diff --git a/fs/ceph/ioctl.c b/fs/ceph/ioctl.c
index 4c9c72f26eb9..851aa69ec8f0 100644
--- a/fs/ceph/ioctl.c
+++ b/fs/ceph/ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/in.h>
diff --git a/fs/ceph/ioctl.h b/fs/ceph/ioctl.h
index c77028afb1e1..51f7f1d39a94 100644
--- a/fs/ceph/ioctl.h
+++ b/fs/ceph/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef FS_CEPH_IOCTL_H
#define FS_CEPH_IOCTL_H
diff --git a/fs/ceph/locks.c b/fs/ceph/locks.c
index 8cd63e8123d8..e7cce412f2cf 100644
--- a/fs/ceph/locks.c
+++ b/fs/ceph/locks.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/file.h>
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index 9dd6b836ac9e..0687ab3c3267 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/fs.h>
@@ -7,7 +8,6 @@
#include <linux/sched.h>
#include <linux/debugfs.h>
#include <linux/seq_file.h>
-#include <linux/utsname.h>
#include <linux/ratelimit.h>
#include "super.h"
@@ -735,12 +735,13 @@ static int __choose_mds(struct ceph_mds_client *mdsc,
inode = req->r_inode;
ihold(inode);
} else {
- /* req->r_dentry is non-null for LSSNAP request.
- * fall-thru */
- WARN_ON_ONCE(!req->r_dentry);
+ /* req->r_dentry is non-null for LSSNAP request */
+ rcu_read_lock();
+ inode = get_nonsnap_parent(req->r_dentry);
+ rcu_read_unlock();
+ dout("__choose_mds using snapdir's parent %p\n", inode);
}
- }
- if (!inode && req->r_dentry) {
+ } else if (req->r_dentry) {
/* ignore race with rename; old or new d_parent is okay */
struct dentry *parent;
struct inode *dir;
@@ -884,8 +885,8 @@ static struct ceph_msg *create_session_open_msg(struct ceph_mds_client *mdsc, u6
void *p;
const char* metadata[][2] = {
- {"hostname", utsname()->nodename},
- {"kernel_version", utsname()->release},
+ {"hostname", mdsc->nodename},
+ {"kernel_version", init_utsname()->release},
{"entity_id", opt->name ? : ""},
{"root", fsopt->server_path ? : "/"},
{NULL, NULL}
@@ -3539,6 +3540,8 @@ int ceph_mdsc_init(struct ceph_fs_client *fsc)
init_rwsem(&mdsc->pool_perm_rwsem);
mdsc->pool_perm_tree = RB_ROOT;
+ strncpy(mdsc->nodename, utsname()->nodename,
+ sizeof(mdsc->nodename) - 1);
return 0;
}
diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h
index db57ae98ed34..837ac4b087a0 100644
--- a/fs/ceph/mds_client.h
+++ b/fs/ceph/mds_client.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_MDS_CLIENT_H
#define _FS_CEPH_MDS_CLIENT_H
@@ -8,6 +9,7 @@
#include <linux/rbtree.h>
#include <linux/spinlock.h>
#include <linux/refcount.h>
+#include <linux/utsname.h>
#include <linux/ceph/types.h>
#include <linux/ceph/messenger.h>
@@ -368,6 +370,8 @@ struct ceph_mds_client {
struct rw_semaphore pool_perm_rwsem;
struct rb_root pool_perm_tree;
+
+ char nodename[__NEW_UTS_LEN + 1];
};
extern const char *ceph_mds_op_name(int op);
diff --git a/fs/ceph/mdsmap.c b/fs/ceph/mdsmap.c
index 33ced4c22732..44e53abeb32a 100644
--- a/fs/ceph/mdsmap.c
+++ b/fs/ceph/mdsmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/bug.h>
diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c
index 1ffc8b426c1c..8a2ca41e4b97 100644
--- a/fs/ceph/snap.c
+++ b/fs/ceph/snap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/sort.h>
@@ -374,12 +375,10 @@ static int build_snap_context(struct ceph_snap_realm *realm,
realm->ino, realm, snapc, snapc->seq,
(unsigned int) snapc->num_snaps);
- if (realm->cached_context) {
- ceph_put_snap_context(realm->cached_context);
- /* queue realm for cap_snap creation */
- list_add_tail(&realm->dirty_item, dirty_realms);
- }
+ ceph_put_snap_context(realm->cached_context);
realm->cached_context = snapc;
+ /* queue realm for cap_snap creation */
+ list_add_tail(&realm->dirty_item, dirty_realms);
return 0;
fail:
diff --git a/fs/ceph/strings.c b/fs/ceph/strings.c
index 913dea163d5c..4a79f3632260 100644
--- a/fs/ceph/strings.c
+++ b/fs/ceph/strings.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Ceph fs string constants
*/
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index 279a2f401cf5..3e27a28aa44a 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_SUPER_H
#define _FS_CEPH_SUPER_H
diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c
index 3542b2c364cf..e1c4e0b12b4c 100644
--- a/fs/ceph/xattr.c
+++ b/fs/ceph/xattr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/ceph/ceph_debug.h>
#include <linux/ceph/pagelist.h>
diff --git a/fs/char_dev.c b/fs/char_dev.c
index ebcc8fb3fa66..a65e4a56318c 100644
--- a/fs/char_dev.c
+++ b/fs/char_dev.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/char_dev.c
*
diff --git a/fs/cifs/Kconfig b/fs/cifs/Kconfig
index f7243617316c..d5b2e12b5d02 100644
--- a/fs/cifs/Kconfig
+++ b/fs/cifs/Kconfig
@@ -5,9 +5,14 @@ config CIFS
select CRYPTO
select CRYPTO_MD4
select CRYPTO_MD5
+ select CRYPTO_SHA256
+ select CRYPTO_CMAC
select CRYPTO_HMAC
select CRYPTO_ARC4
+ select CRYPTO_AEAD2
+ select CRYPTO_CCM
select CRYPTO_ECB
+ select CRYPTO_AES
select CRYPTO_DES
help
This is the client VFS module for the SMB3 family of NAS protocols,
diff --git a/fs/cifs/Makefile b/fs/cifs/Makefile
index 5e853a395b92..7134f182720b 100644
--- a/fs/cifs/Makefile
+++ b/fs/cifs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Linux CIFS VFS client
#
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index 9727e1dcacd5..cbb9534b89b4 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -160,8 +160,13 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
if ((ses->serverDomain == NULL) ||
(ses->serverOS == NULL) ||
(ses->serverNOS == NULL)) {
- seq_printf(m, "\n%d) entry for %s not fully "
- "displayed\n\t", i, ses->serverName);
+ seq_printf(m, "\n%d) Name: %s Uses: %d Capability: 0x%x\tSession Status: %d\t",
+ i, ses->serverName, ses->ses_count,
+ ses->capabilities, ses->status);
+ if (ses->session_flags & SMB2_SESSION_FLAG_IS_GUEST)
+ seq_printf(m, "Guest\t");
+ else if (ses->session_flags & SMB2_SESSION_FLAG_IS_NULL)
+ seq_printf(m, "Anonymous\t");
} else {
seq_printf(m,
"\n%d) Name: %s Domain: %s Uses: %d OS:"
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 180b3356ff86..8c8b75d33f31 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -461,6 +461,8 @@ cifs_show_options(struct seq_file *s, struct dentry *root)
seq_puts(s, ",nocase");
if (tcon->retry)
seq_puts(s, ",hard");
+ else
+ seq_puts(s, ",soft");
if (tcon->use_persistent)
seq_puts(s, ",persistenthandles");
else if (tcon->use_resilient)
@@ -1447,7 +1449,7 @@ exit_cifs(void)
exit_cifs_idmap();
#endif
#ifdef CONFIG_CIFS_UPCALL
- unregister_key_type(&cifs_spnego_key_type);
+ exit_cifs_spnego();
#endif
cifs_destroy_request_bufs();
cifs_destroy_mids();
diff --git a/fs/cifs/cifsfs.h b/fs/cifs/cifsfs.h
index 30bf89b1fd9a..5a10e566f0e6 100644
--- a/fs/cifs/cifsfs.h
+++ b/fs/cifs/cifsfs.h
@@ -149,5 +149,5 @@ extern long cifs_ioctl(struct file *filep, unsigned int cmd, unsigned long arg);
extern const struct export_operations cifs_export_ops;
#endif /* CONFIG_CIFS_NFSD_EXPORT */
-#define CIFS_VERSION "2.09"
+#define CIFS_VERSION "2.10"
#endif /* _CIFSFS_H */
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index 808486c29f0d..e185b2853eab 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -188,6 +188,8 @@ enum smb_version {
#ifdef CONFIG_CIFS_SMB311
Smb_311,
#endif /* SMB311 */
+ Smb_3any,
+ Smb_default,
Smb_version_err
};
@@ -659,7 +661,9 @@ struct TCP_Server_Info {
#endif
unsigned int max_read;
unsigned int max_write;
- __u8 preauth_hash[512];
+#ifdef CONFIG_CIFS_SMB311
+ __u8 preauth_sha_hash[64]; /* save initital negprot hash */
+#endif /* 3.1.1 */
struct delayed_work reconnect; /* reconnect workqueue job */
struct mutex reconnect_mutex; /* prevent simultaneous reconnects */
unsigned long echo_interval;
@@ -847,7 +851,9 @@ struct cifs_ses {
__u8 smb3signingkey[SMB3_SIGN_KEY_SIZE];
__u8 smb3encryptionkey[SMB3_SIGN_KEY_SIZE];
__u8 smb3decryptionkey[SMB3_SIGN_KEY_SIZE];
- __u8 preauth_hash[512];
+#ifdef CONFIG_CIFS_SMB311
+ __u8 preauth_sha_hash[64];
+#endif /* 3.1.1 */
};
static inline bool
@@ -1701,6 +1707,10 @@ extern struct smb_version_values smb20_values;
#define SMB21_VERSION_STRING "2.1"
extern struct smb_version_operations smb21_operations;
extern struct smb_version_values smb21_values;
+#define SMBDEFAULT_VERSION_STRING "default"
+extern struct smb_version_values smbdefault_values;
+#define SMB3ANY_VERSION_STRING "3"
+extern struct smb_version_values smb3any_values;
#define SMB30_VERSION_STRING "3.0"
extern struct smb_version_operations smb30_operations;
extern struct smb_version_values smb30_values;
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 5aa2d278ca84..0bfc2280436d 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -301,6 +301,8 @@ static const match_table_t cifs_smb_version_tokens = {
{ Smb_311, SMB311_VERSION_STRING },
{ Smb_311, ALT_SMB311_VERSION_STRING },
#endif /* SMB311 */
+ { Smb_3any, SMB3ANY_VERSION_STRING },
+ { Smb_default, SMBDEFAULT_VERSION_STRING },
{ Smb_version_err, NULL }
};
@@ -1148,6 +1150,14 @@ cifs_parse_smb_version(char *value, struct smb_vol *vol)
vol->vals = &smb311_values;
break;
#endif /* SMB311 */
+ case Smb_3any:
+ vol->ops = &smb30_operations; /* currently identical with 3.0 */
+ vol->vals = &smb3any_values;
+ break;
+ case Smb_default:
+ vol->ops = &smb30_operations; /* currently identical with 3.0 */
+ vol->vals = &smbdefault_values;
+ break;
default:
cifs_dbg(VFS, "Unknown vers= option specified: %s\n", value);
return 1;
@@ -1274,9 +1284,9 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
vol->actimeo = CIFS_DEF_ACTIMEO;
- /* FIXME: add autonegotiation for SMB3 or later rather than just SMB3 */
- vol->ops = &smb30_operations; /* both secure and accepted widely */
- vol->vals = &smb30_values;
+ /* offer SMB2.1 and later (SMB3 etc). Secure and widely accepted */
+ vol->ops = &smb30_operations;
+ vol->vals = &smbdefault_values;
vol->echo_interval = SMB_ECHO_INTERVAL_DEFAULT;
@@ -1988,11 +1998,10 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
if (got_version == false)
pr_warn("No dialect specified on mount. Default has changed to "
- "a more secure dialect, SMB3 (vers=3.0), from CIFS "
+ "a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS "
"(SMB1). To use the less secure SMB1 dialect to access "
- "old servers which do not support SMB3 specify vers=1.0"
- " on mount. For somewhat newer servers such as Windows "
- "7 try vers=2.1.\n");
+ "old servers which do not support SMB3 (or SMB2.1) specify vers=1.0"
+ " on mount.\n");
kfree(mountdata_copy);
return 0;
@@ -2133,6 +2142,7 @@ static int match_server(struct TCP_Server_Info *server, struct smb_vol *vol)
if (vol->nosharesock)
return 0;
+ /* BB update this for smb3any and default case */
if ((server->vals != vol->vals) || (server->ops != vol->ops))
return 0;
@@ -4144,6 +4154,14 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses,
cifs_dbg(FYI, "Security Mode: 0x%x Capabilities: 0x%x TimeAdjust: %d\n",
server->sec_mode, server->capabilities, server->timeAdj);
+ if (ses->auth_key.response) {
+ cifs_dbg(VFS, "Free previous auth_key.response = %p\n",
+ ses->auth_key.response);
+ kfree(ses->auth_key.response);
+ ses->auth_key.response = NULL;
+ ses->auth_key.len = 0;
+ }
+
if (server->ops->sess_setup)
rc = server->ops->sess_setup(xid, ses, nls_info);
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
index e702d48bd023..81ba6e0d88d8 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -204,7 +204,8 @@ check_name(struct dentry *direntry, struct cifs_tcon *tcon)
struct cifs_sb_info *cifs_sb = CIFS_SB(direntry->d_sb);
int i;
- if (unlikely(direntry->d_name.len >
+ if (unlikely(tcon->fsAttrInfo.MaxPathNameComponentLength &&
+ direntry->d_name.len >
le32_to_cpu(tcon->fsAttrInfo.MaxPathNameComponentLength)))
return -ENAMETOOLONG;
@@ -520,7 +521,7 @@ cifs_atomic_open(struct inode *inode, struct dentry *direntry,
rc = check_name(direntry, tcon);
if (rc)
- goto out_free_xid;
+ goto out;
server = tcon->ses->server;
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 0786f19d288f..92fdf9c35de2 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -224,6 +224,13 @@ cifs_nt_open(char *full_path, struct inode *inode, struct cifs_sb_info *cifs_sb,
if (backup_cred(cifs_sb))
create_options |= CREATE_OPEN_BACKUP_INTENT;
+ /* O_SYNC also has bit for O_DSYNC so following check picks up either */
+ if (f_flags & O_SYNC)
+ create_options |= CREATE_WRITE_THROUGH;
+
+ if (f_flags & O_DIRECT)
+ create_options |= CREATE_NO_BUFFER;
+
oparms.tcon = tcon;
oparms.cifs_sb = cifs_sb;
oparms.desired_access = desired_access;
@@ -1102,8 +1109,10 @@ cifs_push_mandatory_locks(struct cifsFileInfo *cfile)
struct cifs_tcon *tcon;
unsigned int num, max_num, max_buf;
LOCKING_ANDX_RANGE *buf, *cur;
- int types[] = {LOCKING_ANDX_LARGE_FILES,
- LOCKING_ANDX_SHARED_LOCK | LOCKING_ANDX_LARGE_FILES};
+ static const int types[] = {
+ LOCKING_ANDX_LARGE_FILES,
+ LOCKING_ANDX_SHARED_LOCK | LOCKING_ANDX_LARGE_FILES
+ };
int i;
xid = get_xid();
@@ -1434,8 +1443,10 @@ cifs_unlock_range(struct cifsFileInfo *cfile, struct file_lock *flock,
unsigned int xid)
{
int rc = 0, stored_rc;
- int types[] = {LOCKING_ANDX_LARGE_FILES,
- LOCKING_ANDX_SHARED_LOCK | LOCKING_ANDX_LARGE_FILES};
+ static const int types[] = {
+ LOCKING_ANDX_LARGE_FILES,
+ LOCKING_ANDX_SHARED_LOCK | LOCKING_ANDX_LARGE_FILES
+ };
unsigned int i;
unsigned int max_num, num, max_buf;
LOCKING_ANDX_RANGE *buf, *cur;
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index a8693632235f..7c732cb44164 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -234,6 +234,8 @@ cifs_unix_basic_to_fattr(struct cifs_fattr *fattr, FILE_UNIX_BASIC_INFO *info,
fattr->cf_atime = cifs_NTtimeToUnix(info->LastAccessTime);
fattr->cf_mtime = cifs_NTtimeToUnix(info->LastModificationTime);
fattr->cf_ctime = cifs_NTtimeToUnix(info->LastStatusChange);
+ /* old POSIX extensions don't get create time */
+
fattr->cf_mode = le64_to_cpu(info->Permissions);
/*
@@ -2024,6 +2026,19 @@ int cifs_getattr(const struct path *path, struct kstat *stat,
stat->blksize = CIFS_MAX_MSGSIZE;
stat->ino = CIFS_I(inode)->uniqueid;
+ /* old CIFS Unix Extensions doesn't return create time */
+ if (CIFS_I(inode)->createtime) {
+ stat->result_mask |= STATX_BTIME;
+ stat->btime =
+ cifs_NTtimeToUnix(cpu_to_le64(CIFS_I(inode)->createtime));
+ }
+
+ stat->attributes_mask |= (STATX_ATTR_COMPRESSED | STATX_ATTR_ENCRYPTED);
+ if (CIFS_I(inode)->cifsAttrs & FILE_ATTRIBUTE_COMPRESSED)
+ stat->attributes |= STATX_ATTR_COMPRESSED;
+ if (CIFS_I(inode)->cifsAttrs & FILE_ATTRIBUTE_ENCRYPTED)
+ stat->attributes |= STATX_ATTR_ENCRYPTED;
+
/*
* If on a multiuser mount without unix extensions or cifsacl being
* enabled, and the admin hasn't overridden them, set the ownership
diff --git a/fs/cifs/smb2maperror.c b/fs/cifs/smb2maperror.c
index 7ca9808a0daa..62c88dfed57b 100644
--- a/fs/cifs/smb2maperror.c
+++ b/fs/cifs/smb2maperror.c
@@ -214,7 +214,7 @@ static const struct status_to_posix_error smb2_error_map_table[] = {
{STATUS_DATATYPE_MISALIGNMENT, -EIO, "STATUS_DATATYPE_MISALIGNMENT"},
{STATUS_BREAKPOINT, -EIO, "STATUS_BREAKPOINT"},
{STATUS_SINGLE_STEP, -EIO, "STATUS_SINGLE_STEP"},
- {STATUS_BUFFER_OVERFLOW, -EIO, "STATUS_BUFFER_OVERFLOW"},
+ {STATUS_BUFFER_OVERFLOW, -E2BIG, "STATUS_BUFFER_OVERFLOW"},
{STATUS_NO_MORE_FILES, -ENODATA, "STATUS_NO_MORE_FILES"},
{STATUS_WAKE_SYSTEM_DEBUGGER, -EIO, "STATUS_WAKE_SYSTEM_DEBUGGER"},
{STATUS_HANDLES_CLOSED, -EIO, "STATUS_HANDLES_CLOSED"},
diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
index fb2934b9b97c..bdb963d0ba32 100644
--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -426,6 +426,7 @@ smb2_query_file_info(const unsigned int xid, struct cifs_tcon *tcon,
return rc;
}
+#ifdef CONFIG_CIFS_XATTR
static ssize_t
move_smb2_ea_to_cifs(char *dst, size_t dst_size,
struct smb2_file_full_ea_info *src, size_t src_size,
@@ -521,6 +522,7 @@ smb2_query_eas(const unsigned int xid, struct cifs_tcon *tcon,
struct cifs_open_parms oparms;
struct cifs_fid fid;
struct smb2_file_full_ea_info *smb2_data;
+ int ea_buf_size = SMB2_MIN_EA_BUF;
utf16_path = cifs_convert_path_to_utf16(path, cifs_sb);
if (!utf16_path)
@@ -540,14 +542,32 @@ smb2_query_eas(const unsigned int xid, struct cifs_tcon *tcon,
return rc;
}
- smb2_data = kzalloc(SMB2_MAX_EA_BUF, GFP_KERNEL);
- if (smb2_data == NULL) {
- SMB2_close(xid, tcon, fid.persistent_fid, fid.volatile_fid);
- return -ENOMEM;
+ while (1) {
+ smb2_data = kzalloc(ea_buf_size, GFP_KERNEL);
+ if (smb2_data == NULL) {
+ SMB2_close(xid, tcon, fid.persistent_fid,
+ fid.volatile_fid);
+ return -ENOMEM;
+ }
+
+ rc = SMB2_query_eas(xid, tcon, fid.persistent_fid,
+ fid.volatile_fid,
+ ea_buf_size, smb2_data);
+
+ if (rc != -E2BIG)
+ break;
+
+ kfree(smb2_data);
+ ea_buf_size <<= 1;
+
+ if (ea_buf_size > SMB2_MAX_EA_BUF) {
+ cifs_dbg(VFS, "EA size is too large\n");
+ SMB2_close(xid, tcon, fid.persistent_fid,
+ fid.volatile_fid);
+ return -ENOMEM;
+ }
}
- rc = SMB2_query_eas(xid, tcon, fid.persistent_fid, fid.volatile_fid,
- smb2_data);
SMB2_close(xid, tcon, fid.persistent_fid, fid.volatile_fid);
if (!rc)
@@ -613,6 +633,7 @@ smb2_set_ea(const unsigned int xid, struct cifs_tcon *tcon,
return rc;
}
+#endif
static bool
smb2_can_echo(struct TCP_Server_Info *server)
@@ -3110,6 +3131,46 @@ struct smb_version_values smb21_values = {
.create_lease_size = sizeof(struct create_lease),
};
+struct smb_version_values smb3any_values = {
+ .version_string = SMB3ANY_VERSION_STRING,
+ .protocol_id = SMB302_PROT_ID, /* doesn't matter, send protocol array */
+ .req_capabilities = SMB2_GLOBAL_CAP_DFS | SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_LARGE_MTU | SMB2_GLOBAL_CAP_PERSISTENT_HANDLES | SMB2_GLOBAL_CAP_ENCRYPTION,
+ .large_lock_type = 0,
+ .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE_LOCK,
+ .shared_lock_type = SMB2_LOCKFLAG_SHARED_LOCK,
+ .unlock_lock_type = SMB2_LOCKFLAG_UNLOCK,
+ .header_size = sizeof(struct smb2_hdr),
+ .max_header_size = MAX_SMB2_HDR_SIZE,
+ .read_rsp_size = sizeof(struct smb2_read_rsp) - 1,
+ .lock_cmd = SMB2_LOCK,
+ .cap_unix = 0,
+ .cap_nt_find = SMB2_NT_FIND,
+ .cap_large_files = SMB2_LARGE_FILES,
+ .signing_enabled = SMB2_NEGOTIATE_SIGNING_ENABLED | SMB2_NEGOTIATE_SIGNING_REQUIRED,
+ .signing_required = SMB2_NEGOTIATE_SIGNING_REQUIRED,
+ .create_lease_size = sizeof(struct create_lease_v2),
+};
+
+struct smb_version_values smbdefault_values = {
+ .version_string = SMBDEFAULT_VERSION_STRING,
+ .protocol_id = SMB302_PROT_ID, /* doesn't matter, send protocol array */
+ .req_capabilities = SMB2_GLOBAL_CAP_DFS | SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_LARGE_MTU | SMB2_GLOBAL_CAP_PERSISTENT_HANDLES | SMB2_GLOBAL_CAP_ENCRYPTION,
+ .large_lock_type = 0,
+ .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE_LOCK,
+ .shared_lock_type = SMB2_LOCKFLAG_SHARED_LOCK,
+ .unlock_lock_type = SMB2_LOCKFLAG_UNLOCK,
+ .header_size = sizeof(struct smb2_hdr),
+ .max_header_size = MAX_SMB2_HDR_SIZE,
+ .read_rsp_size = sizeof(struct smb2_read_rsp) - 1,
+ .lock_cmd = SMB2_LOCK,
+ .cap_unix = 0,
+ .cap_nt_find = SMB2_NT_FIND,
+ .cap_large_files = SMB2_LARGE_FILES,
+ .signing_enabled = SMB2_NEGOTIATE_SIGNING_ENABLED | SMB2_NEGOTIATE_SIGNING_REQUIRED,
+ .signing_required = SMB2_NEGOTIATE_SIGNING_REQUIRED,
+ .create_lease_size = sizeof(struct create_lease_v2),
+};
+
struct smb_version_values smb30_values = {
.version_string = SMB30_VERSION_STRING,
.protocol_id = SMB30_PROT_ID,
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index 5531e7ee1210..5331631386a2 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -439,7 +439,7 @@ assemble_neg_contexts(struct smb2_negotiate_req *req)
build_encrypt_ctxt((struct smb2_encryption_neg_context *)pneg_ctxt);
req->NegotiateContextOffset = cpu_to_le32(OFFSET_OF_NEG_CONTEXT);
req->NegotiateContextCount = cpu_to_le16(2);
- inc_rfc1001_len(req, 4 + sizeof(struct smb2_preauth_neg_context) + 2
+ inc_rfc1001_len(req, 4 + sizeof(struct smb2_preauth_neg_context)
+ sizeof(struct smb2_encryption_neg_context)); /* calculate hash */
}
#else
@@ -491,10 +491,25 @@ SMB2_negotiate(const unsigned int xid, struct cifs_ses *ses)
req->hdr.sync_hdr.SessionId = 0;
- req->Dialects[0] = cpu_to_le16(ses->server->vals->protocol_id);
-
- req->DialectCount = cpu_to_le16(1); /* One vers= at a time for now */
- inc_rfc1001_len(req, 2);
+ if (strcmp(ses->server->vals->version_string,
+ SMB3ANY_VERSION_STRING) == 0) {
+ req->Dialects[0] = cpu_to_le16(SMB30_PROT_ID);
+ req->Dialects[1] = cpu_to_le16(SMB302_PROT_ID);
+ req->DialectCount = cpu_to_le16(2);
+ inc_rfc1001_len(req, 4);
+ } else if (strcmp(ses->server->vals->version_string,
+ SMBDEFAULT_VERSION_STRING) == 0) {
+ req->Dialects[0] = cpu_to_le16(SMB21_PROT_ID);
+ req->Dialects[1] = cpu_to_le16(SMB30_PROT_ID);
+ req->Dialects[2] = cpu_to_le16(SMB302_PROT_ID);
+ req->DialectCount = cpu_to_le16(3);
+ inc_rfc1001_len(req, 6);
+ } else {
+ /* otherwise send specific dialect */
+ req->Dialects[0] = cpu_to_le16(ses->server->vals->protocol_id);
+ req->DialectCount = cpu_to_le16(1);
+ inc_rfc1001_len(req, 2);
+ }
/* only one of SMB2 signing flags may be set in SMB2 request */
if (ses->sign)
@@ -528,16 +543,43 @@ SMB2_negotiate(const unsigned int xid, struct cifs_ses *ses)
*/
if (rc == -EOPNOTSUPP) {
cifs_dbg(VFS, "Dialect not supported by server. Consider "
- "specifying vers=1.0 or vers=2.1 on mount for accessing"
+ "specifying vers=1.0 or vers=2.0 on mount for accessing"
" older servers\n");
goto neg_exit;
} else if (rc != 0)
goto neg_exit;
+ if (strcmp(ses->server->vals->version_string,
+ SMB3ANY_VERSION_STRING) == 0) {
+ if (rsp->DialectRevision == cpu_to_le16(SMB20_PROT_ID)) {
+ cifs_dbg(VFS,
+ "SMB2 dialect returned but not requested\n");
+ return -EIO;
+ } else if (rsp->DialectRevision == cpu_to_le16(SMB21_PROT_ID)) {
+ cifs_dbg(VFS,
+ "SMB2.1 dialect returned but not requested\n");
+ return -EIO;
+ }
+ } else if (strcmp(ses->server->vals->version_string,
+ SMBDEFAULT_VERSION_STRING) == 0) {
+ if (rsp->DialectRevision == cpu_to_le16(SMB20_PROT_ID)) {
+ cifs_dbg(VFS,
+ "SMB2 dialect returned but not requested\n");
+ return -EIO;
+ } else if (rsp->DialectRevision == cpu_to_le16(SMB21_PROT_ID)) {
+ /* ops set to 3.0 by default for default so update */
+ ses->server->ops = &smb21_operations;
+ }
+ } else if (le16_to_cpu(rsp->DialectRevision) !=
+ ses->server->vals->protocol_id) {
+ /* if requested single dialect ensure returned dialect matched */
+ cifs_dbg(VFS, "Illegal 0x%x dialect returned: not requested\n",
+ le16_to_cpu(rsp->DialectRevision));
+ return -EIO;
+ }
+
cifs_dbg(FYI, "mode 0x%x\n", rsp->SecurityMode);
- /* BB we may eventually want to match the negotiated vs. requested
- dialect, even though we are only requesting one at a time */
if (rsp->DialectRevision == cpu_to_le16(SMB20_PROT_ID))
cifs_dbg(FYI, "negotiated smb2.0 dialect\n");
else if (rsp->DialectRevision == cpu_to_le16(SMB21_PROT_ID))
@@ -558,6 +600,8 @@ SMB2_negotiate(const unsigned int xid, struct cifs_ses *ses)
}
server->dialect = le16_to_cpu(rsp->DialectRevision);
+ /* BB: add check that dialect was valid given dialect(s) we asked for */
+
/* SMB2 only has an extended negflavor */
server->negflavor = CIFS_NEGFLAVOR_EXTENDED;
/* set it to the maximum buffer size value we can send with 1 credit */
@@ -604,22 +648,30 @@ int smb3_validate_negotiate(const unsigned int xid, struct cifs_tcon *tcon)
{
int rc = 0;
struct validate_negotiate_info_req vneg_inbuf;
- struct validate_negotiate_info_rsp *pneg_rsp;
+ struct validate_negotiate_info_rsp *pneg_rsp = NULL;
u32 rsplen;
+ u32 inbuflen; /* max of 4 dialects */
cifs_dbg(FYI, "validate negotiate\n");
/*
* validation ioctl must be signed, so no point sending this if we
- * can not sign it. We could eventually change this to selectively
+ * can not sign it (ie are not known user). Even if signing is not
+ * required (enabled but not negotiated), in those cases we selectively
* sign just this, the first and only signed request on a connection.
- * This is good enough for now since a user who wants better security
- * would also enable signing on the mount. Having validation of
- * negotiate info for signed connections helps reduce attack vectors
+ * Having validation of negotiate info helps reduce attack vectors.
*/
- if (tcon->ses->server->sign == false)
+ if (tcon->ses->session_flags & SMB2_SESSION_FLAG_IS_GUEST)
return 0; /* validation requires signing */
+ if (tcon->ses->user_name == NULL) {
+ cifs_dbg(FYI, "Can't validate negotiate: null user mount\n");
+ return 0; /* validation requires signing */
+ }
+
+ if (tcon->ses->session_flags & SMB2_SESSION_FLAG_IS_NULL)
+ cifs_dbg(VFS, "Unexpected null user (anonymous) auth flag sent by server\n");
+
vneg_inbuf.Capabilities =
cpu_to_le32(tcon->ses->server->vals->req_capabilities);
memcpy(vneg_inbuf.Guid, tcon->ses->server->client_guid,
@@ -634,9 +686,30 @@ int smb3_validate_negotiate(const unsigned int xid, struct cifs_tcon *tcon)
else
vneg_inbuf.SecurityMode = 0;
- vneg_inbuf.DialectCount = cpu_to_le16(1);
- vneg_inbuf.Dialects[0] =
- cpu_to_le16(tcon->ses->server->vals->protocol_id);
+
+ if (strcmp(tcon->ses->server->vals->version_string,
+ SMB3ANY_VERSION_STRING) == 0) {
+ vneg_inbuf.Dialects[0] = cpu_to_le16(SMB30_PROT_ID);
+ vneg_inbuf.Dialects[1] = cpu_to_le16(SMB302_PROT_ID);
+ vneg_inbuf.DialectCount = cpu_to_le16(2);
+ /* structure is big enough for 3 dialects, sending only 2 */
+ inbuflen = sizeof(struct validate_negotiate_info_req) - 2;
+ } else if (strcmp(tcon->ses->server->vals->version_string,
+ SMBDEFAULT_VERSION_STRING) == 0) {
+ vneg_inbuf.Dialects[0] = cpu_to_le16(SMB21_PROT_ID);
+ vneg_inbuf.Dialects[1] = cpu_to_le16(SMB30_PROT_ID);
+ vneg_inbuf.Dialects[2] = cpu_to_le16(SMB302_PROT_ID);
+ vneg_inbuf.DialectCount = cpu_to_le16(3);
+ /* structure is big enough for 3 dialects */
+ inbuflen = sizeof(struct validate_negotiate_info_req);
+ } else {
+ /* otherwise specific dialect was requested */
+ vneg_inbuf.Dialects[0] =
+ cpu_to_le16(tcon->ses->server->vals->protocol_id);
+ vneg_inbuf.DialectCount = cpu_to_le16(1);
+ /* structure is big enough for 3 dialects, sending only 1 */
+ inbuflen = sizeof(struct validate_negotiate_info_req) - 4;
+ }
rc = SMB2_ioctl(xid, tcon, NO_FILE_ID, NO_FILE_ID,
FSCTL_VALIDATE_NEGOTIATE_INFO, true /* is_fsctl */,
@@ -654,8 +727,9 @@ int smb3_validate_negotiate(const unsigned int xid, struct cifs_tcon *tcon)
rsplen);
/* relax check since Mac returns max bufsize allowed on ioctl */
- if (rsplen > CIFSMaxBufSize)
- return -EIO;
+ if ((rsplen > CIFSMaxBufSize)
+ || (rsplen < sizeof(struct validate_negotiate_info_rsp)))
+ goto err_rsp_free;
}
/* check validate negotiate info response matches what we got earlier */
@@ -674,10 +748,13 @@ int smb3_validate_negotiate(const unsigned int xid, struct cifs_tcon *tcon)
/* validate negotiate successful */
cifs_dbg(FYI, "validate negotiate info successful\n");
+ kfree(pneg_rsp);
return 0;
vneg_out:
cifs_dbg(VFS, "protocol revalidation - security settings mismatch\n");
+err_rsp_free:
+ kfree(pneg_rsp);
return -EIO;
}
@@ -1110,6 +1187,8 @@ SMB2_sess_setup(const unsigned int xid, struct cifs_ses *ses,
while (sess_data->func)
sess_data->func(sess_data);
+ if ((ses->session_flags & SMB2_SESSION_FLAG_IS_GUEST) && (ses->sign))
+ cifs_dbg(VFS, "signing requested but authenticated as guest\n");
rc = sess_data->result;
out:
kfree(sess_data);
@@ -1180,7 +1259,7 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
struct smb2_tree_connect_req *req;
struct smb2_tree_connect_rsp *rsp = NULL;
struct kvec iov[2];
- struct kvec rsp_iov;
+ struct kvec rsp_iov = { NULL, 0 };
int rc = 0;
int resp_buftype;
int unc_path_len;
@@ -1297,7 +1376,7 @@ tcon_exit:
return rc;
tcon_error_exit:
- if (rsp->hdr.sync_hdr.Status == STATUS_BAD_NETWORK_NAME) {
+ if (rsp && rsp->hdr.sync_hdr.Status == STATUS_BAD_NETWORK_NAME) {
cifs_dbg(VFS, "BAD_NETWORK_NAME: %s\n", tree);
}
goto tcon_exit;
@@ -1634,7 +1713,7 @@ SMB2_open(const unsigned int xid, struct cifs_open_parms *oparms, __le16 *path,
struct cifs_tcon *tcon = oparms->tcon;
struct cifs_ses *ses = tcon->ses;
struct kvec iov[4];
- struct kvec rsp_iov;
+ struct kvec rsp_iov = {NULL, 0};
int resp_buftype;
int uni_path_len;
__le16 *copy_path = NULL;
@@ -1763,7 +1842,7 @@ SMB2_open(const unsigned int xid, struct cifs_open_parms *oparms, __le16 *path,
if (rc != 0) {
cifs_stats_fail_inc(tcon, SMB2_CREATE_HE);
- if (err_buf)
+ if (err_buf && rsp)
*err_buf = kmemdup(rsp, get_rfc1002_length(rsp) + 4,
GFP_KERNEL);
goto creat_exit;
@@ -1900,6 +1979,9 @@ SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
} else
iov[0].iov_len = get_rfc1002_length(req) + 4;
+ /* validate negotiate request must be signed - see MS-SMB2 3.2.5.5 */
+ if (opcode == FSCTL_VALIDATE_NEGOTIATE_INFO)
+ req->hdr.sync_hdr.Flags |= SMB2_FLAGS_SIGNED;
rc = SendReceive2(xid, ses, iov, n_iov, &resp_buftype, flags, &rsp_iov);
cifs_small_buf_release(req);
@@ -2116,9 +2198,13 @@ query_info(const unsigned int xid, struct cifs_tcon *tcon,
req->PersistentFileId = persistent_fid;
req->VolatileFileId = volatile_fid;
req->AdditionalInformation = cpu_to_le32(additional_info);
- /* 4 for rfc1002 length field and 1 for Buffer */
- req->InputBufferOffset =
- cpu_to_le16(sizeof(struct smb2_query_info_req) - 1 - 4);
+
+ /*
+ * We do not use the input buffer (do not send extra byte)
+ */
+ req->InputBufferOffset = 0;
+ inc_rfc1001_len(req, -1);
+
req->OutputBufferLength = cpu_to_le32(output_len);
iov[0].iov_base = (char *)req;
@@ -2158,12 +2244,12 @@ qinf_exit:
}
int SMB2_query_eas(const unsigned int xid, struct cifs_tcon *tcon,
- u64 persistent_fid, u64 volatile_fid,
- struct smb2_file_full_ea_info *data)
+ u64 persistent_fid, u64 volatile_fid,
+ int ea_buf_size, struct smb2_file_full_ea_info *data)
{
return query_info(xid, tcon, persistent_fid, volatile_fid,
FILE_FULL_EA_INFORMATION, SMB2_O_INFO_FILE, 0,
- SMB2_MAX_EA_BUF,
+ ea_buf_size,
sizeof(struct smb2_file_full_ea_info),
(void **)&data,
NULL);
diff --git a/fs/cifs/smb2pdu.h b/fs/cifs/smb2pdu.h
index 393ed5f4e1b6..c2ec934be968 100644
--- a/fs/cifs/smb2pdu.h
+++ b/fs/cifs/smb2pdu.h
@@ -716,7 +716,7 @@ struct validate_negotiate_info_req {
__u8 Guid[SMB2_CLIENT_GUID_SIZE];
__le16 SecurityMode;
__le16 DialectCount;
- __le16 Dialects[1]; /* dialect (someday maybe list) client asked for */
+ __le16 Dialects[3]; /* BB expand this if autonegotiate > 3 dialects */
} __packed;
struct validate_negotiate_info_rsp {
@@ -832,7 +832,7 @@ struct smb2_flush_rsp {
/* Channel field for read and write: exactly one of following flags can be set*/
#define SMB2_CHANNEL_NONE 0x00000000
#define SMB2_CHANNEL_RDMA_V1 0x00000001 /* SMB3 or later */
-#define SMB2_CHANNEL_RDMA_V1_INVALIDATE 0x00000001 /* SMB3.02 or later */
+#define SMB2_CHANNEL_RDMA_V1_INVALIDATE 0x00000002 /* SMB3.02 or later */
/* SMB2 read request without RFC1001 length at the beginning */
struct smb2_read_plain_req {
@@ -1178,7 +1178,8 @@ struct smb2_file_link_info { /* encoding of request for level 11 */
char FileName[0]; /* Name to be assigned to new link */
} __packed; /* level 11 Set */
-#define SMB2_MAX_EA_BUF 2048
+#define SMB2_MIN_EA_BUF 2048
+#define SMB2_MAX_EA_BUF 65536
struct smb2_file_full_ea_info { /* encoding of response for level 15 */
__le32 next_entry_offset;
diff --git a/fs/cifs/smb2proto.h b/fs/cifs/smb2proto.h
index 003217099ef3..e9ab5227e7a8 100644
--- a/fs/cifs/smb2proto.h
+++ b/fs/cifs/smb2proto.h
@@ -134,6 +134,7 @@ extern int SMB2_flush(const unsigned int xid, struct cifs_tcon *tcon,
u64 persistent_file_id, u64 volatile_file_id);
extern int SMB2_query_eas(const unsigned int xid, struct cifs_tcon *tcon,
u64 persistent_file_id, u64 volatile_file_id,
+ int ea_buf_size,
struct smb2_file_full_ea_info *data);
extern int SMB2_query_info(const unsigned int xid, struct cifs_tcon *tcon,
u64 persistent_file_id, u64 volatile_file_id,
diff --git a/fs/cifs/smb2transport.c b/fs/cifs/smb2transport.c
index 67367cf1f8cd..99493946e2f9 100644
--- a/fs/cifs/smb2transport.c
+++ b/fs/cifs/smb2transport.c
@@ -390,6 +390,7 @@ generate_smb30signingkey(struct cifs_ses *ses)
return generate_smb3signingkey(ses, &triplet);
}
+#ifdef CONFIG_CIFS_SMB311
int
generate_smb311signingkey(struct cifs_ses *ses)
@@ -398,25 +399,26 @@ generate_smb311signingkey(struct cifs_ses *ses)
struct derivation *d;
d = &triplet.signing;
- d->label.iov_base = "SMB2AESCMAC";
- d->label.iov_len = 12;
- d->context.iov_base = "SmbSign";
- d->context.iov_len = 8;
+ d->label.iov_base = "SMBSigningKey";
+ d->label.iov_len = 14;
+ d->context.iov_base = ses->preauth_sha_hash;
+ d->context.iov_len = 64;
d = &triplet.encryption;
- d->label.iov_base = "SMB2AESCCM";
- d->label.iov_len = 11;
- d->context.iov_base = "ServerIn ";
- d->context.iov_len = 10;
+ d->label.iov_base = "SMBC2SCipherKey";
+ d->label.iov_len = 16;
+ d->context.iov_base = ses->preauth_sha_hash;
+ d->context.iov_len = 64;
d = &triplet.decryption;
- d->label.iov_base = "SMB2AESCCM";
- d->label.iov_len = 11;
- d->context.iov_base = "ServerOut";
- d->context.iov_len = 10;
+ d->label.iov_base = "SMBS2CCipherKey";
+ d->label.iov_len = 16;
+ d->context.iov_base = ses->preauth_sha_hash;
+ d->context.iov_len = 64;
return generate_smb3signingkey(ses, &triplet);
}
+#endif /* 311 */
int
smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server)
diff --git a/fs/coda/cache.c b/fs/coda/cache.c
index 5bb630a769e0..201fc08a8b4f 100644
--- a/fs/coda/cache.c
+++ b/fs/coda/cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Cache operations for Coda.
* For Linux 2.1: (C) 1997 Carnegie Mellon University
diff --git a/fs/coda/cnode.c b/fs/coda/cnode.c
index f13e09057c6b..845b5a66952a 100644
--- a/fs/coda/cnode.c
+++ b/fs/coda/cnode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* cnode related routines for the coda kernel code
(C) 1996 Peter Braam
*/
diff --git a/fs/coda/coda_cache.h b/fs/coda/coda_cache.h
index c910b5eb1ceb..c9f7a77c013e 100644
--- a/fs/coda/coda_cache.h
+++ b/fs/coda/coda_cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Coda filesystem -- Linux Minicache
*
* Copyright (C) 1989 - 1997 Carnegie Mellon University
diff --git a/fs/coda/coda_fs_i.h b/fs/coda/coda_fs_i.h
index c64075213218..d702ba1a2bf9 100644
--- a/fs/coda/coda_fs_i.h
+++ b/fs/coda/coda_fs_i.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* coda_fs_i.h
*
diff --git a/fs/coda/coda_int.h b/fs/coda/coda_int.h
index 381c993b1427..bb0b3e0ed6c2 100644
--- a/fs/coda/coda_int.h
+++ b/fs/coda/coda_int.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CODA_INT_
#define _CODA_INT_
diff --git a/fs/coda/coda_linux.c b/fs/coda/coda_linux.c
index f1714cfb589c..ca599df0dcb1 100644
--- a/fs/coda/coda_linux.c
+++ b/fs/coda/coda_linux.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Inode operations for Coda filesystem
* Original version: (C) 1996 P. Braam and M. Callahan
diff --git a/fs/coda/coda_linux.h b/fs/coda/coda_linux.h
index d3c361883c28..126155cadfa9 100644
--- a/fs/coda/coda_linux.h
+++ b/fs/coda/coda_linux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Coda File System, Linux Kernel module
*
diff --git a/fs/coda/dir.c b/fs/coda/dir.c
index c0474ac6cbf2..00876ddadb43 100644
--- a/fs/coda/dir.c
+++ b/fs/coda/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Directory operations for Coda filesystem
@@ -368,9 +369,10 @@ static int coda_venus_readdir(struct file *coda_file, struct dir_context *ctx)
goto out;
while (1) {
+ loff_t pos = ctx->pos - 2;
+
/* read entries from the directory file */
- ret = kernel_read(host_file, ctx->pos - 2, (char *)vdir,
- sizeof(*vdir));
+ ret = kernel_read(host_file, vdir, sizeof(*vdir), &pos);
if (ret < 0) {
pr_err("%s: read dir %s failed %d\n",
__func__, coda_f2s(&cii->c_fid), ret);
diff --git a/fs/coda/file.c b/fs/coda/file.c
index 363402fcb3ed..1cbc1f2298ee 100644
--- a/fs/coda/file.c
+++ b/fs/coda/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* File operations for Coda.
* Original version: (C) 1996 Peter Braam
diff --git a/fs/coda/inode.c b/fs/coda/inode.c
index 6058df380cc0..6f0a6a4d5faa 100644
--- a/fs/coda/inode.c
+++ b/fs/coda/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Super block/filesystem wide operations
*
diff --git a/fs/coda/pioctl.c b/fs/coda/pioctl.c
index b0b9cda41928..e0c17b7dccce 100644
--- a/fs/coda/pioctl.c
+++ b/fs/coda/pioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Pioctl operations for Coda.
* Original version: (C) 1996 Peter Braam
diff --git a/fs/coda/symlink.c b/fs/coda/symlink.c
index 03736e20d720..202297d156df 100644
--- a/fs/coda/symlink.c
+++ b/fs/coda/symlink.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Symlink inode operations for Coda filesystem
* Original version: (C) 1996 P. Braam and M. Callahan
diff --git a/fs/coda/sysctl.c b/fs/coda/sysctl.c
index 34218a8a28cd..0301d45000a8 100644
--- a/fs/coda/sysctl.c
+++ b/fs/coda/sysctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Sysctl operations for Coda filesystem
* Original version: (C) 1996 P. Braam and M. Callahan
diff --git a/fs/coda/upcall.c b/fs/coda/upcall.c
index e82357c89979..a37f003530d7 100644
--- a/fs/coda/upcall.c
+++ b/fs/coda/upcall.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Mostly platform independent upcall operations to Venus:
* -- upcalls
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index d27b326d96f4..bd5d91e119ca 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ioctl32.c: Conversion between 32bit and 64bit native ioctls.
*
diff --git a/fs/coredump.c b/fs/coredump.c
index 592683711c64..52c63d6c9143 100644
--- a/fs/coredump.c
+++ b/fs/coredump.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/slab.h>
#include <linux/file.h>
#include <linux/fdtable.h>
@@ -161,7 +162,7 @@ static int cn_print_exe_file(struct core_name *cn)
if (!exe_file)
return cn_esc_printf(cn, "%s (path unknown)", current->comm);
- pathbuf = kmalloc(PATH_MAX, GFP_TEMPORARY);
+ pathbuf = kmalloc(PATH_MAX, GFP_KERNEL);
if (!pathbuf) {
ret = -ENOMEM;
goto put_exe_file;
diff --git a/fs/cramfs/uncompress.c b/fs/cramfs/uncompress.c
index ec4f1d4fdad0..975d98fc26b5 100644
--- a/fs/cramfs/uncompress.c
+++ b/fs/cramfs/uncompress.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* uncompress.c
*
diff --git a/fs/crypto/bio.c b/fs/crypto/bio.c
index 483784d5eb73..0d5e6a569d58 100644
--- a/fs/crypto/bio.c
+++ b/fs/crypto/bio.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This contains encryption functions for per-file encryption.
*
diff --git a/fs/crypto/fname.c b/fs/crypto/fname.c
index ad9f814fdead..8606da1df0aa 100644
--- a/fs/crypto/fname.c
+++ b/fs/crypto/fname.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This contains functions for filename crypto management
*
diff --git a/fs/crypto/fscrypt_private.h b/fs/crypto/fscrypt_private.h
index a1d5021c31ef..092e9dad1414 100644
--- a/fs/crypto/fscrypt_private.h
+++ b/fs/crypto/fscrypt_private.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fscrypt_private.h
*
diff --git a/fs/crypto/keyinfo.c b/fs/crypto/keyinfo.c
index 018c588c7ac3..a38630214058 100644
--- a/fs/crypto/keyinfo.c
+++ b/fs/crypto/keyinfo.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* key management facility for FS encryption support.
*
@@ -109,6 +110,11 @@ static int validate_user_key(struct fscrypt_info *crypt_info,
goto out;
}
ukp = user_key_payload_locked(keyring_key);
+ if (!ukp) {
+ /* key was revoked before we acquired its semaphore */
+ res = -EKEYREVOKED;
+ goto out;
+ }
if (ukp->datalen != sizeof(struct fscrypt_key)) {
res = -EINVAL;
goto out;
diff --git a/fs/crypto/policy.c b/fs/crypto/policy.c
index ce07a86200f3..a120649beeca 100644
--- a/fs/crypto/policy.c
+++ b/fs/crypto/policy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Encryption policy functions for per-file encryption support.
*
diff --git a/fs/dax.c b/fs/dax.c
index 6afcacb3a87b..f001d8c72a06 100644
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -734,7 +734,7 @@ static int dax_writeback_one(struct block_device *bdev,
}
dax_mapping_entry_mkclean(mapping, index, pfn_t_to_pfn(pfn));
- dax_flush(dax_dev, pgoff, kaddr, size);
+ dax_flush(dax_dev, kaddr, size);
/*
* After we have flushed the cache, we can clear the dirty tag. There
* cannot be new dirty data in the pfn after the flush has completed as
@@ -929,7 +929,7 @@ int __dax_zero_page_range(struct block_device *bdev,
return rc;
}
memset(kaddr + offset, 0, size);
- dax_flush(dax_dev, pgoff, kaddr + offset, size);
+ dax_flush(dax_dev, kaddr + offset, size);
dax_read_unlock(id);
}
return 0;
diff --git a/fs/direct-io.c b/fs/direct-io.c
index 5fa2211e49ae..b53e66d9abd7 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -45,6 +45,12 @@
#define DIO_PAGES 64
/*
+ * Flags for dio_complete()
+ */
+#define DIO_COMPLETE_ASYNC 0x01 /* This is async IO */
+#define DIO_COMPLETE_INVALIDATE 0x02 /* Can invalidate pages */
+
+/*
* This code generally works in units of "dio_blocks". A dio_block is
* somewhere between the hard sector size and the filesystem block size. it
* is determined on a per-invocation basis. When talking to the filesystem
@@ -225,10 +231,11 @@ static inline struct page *dio_get_page(struct dio *dio,
* filesystems can use it to hold additional state between get_block calls and
* dio_complete.
*/
-static ssize_t dio_complete(struct dio *dio, ssize_t ret, bool is_async)
+static ssize_t dio_complete(struct dio *dio, ssize_t ret, unsigned int flags)
{
loff_t offset = dio->iocb->ki_pos;
ssize_t transferred = 0;
+ int err;
/*
* AIO submission can race with bio completion to get here while
@@ -259,18 +266,37 @@ static ssize_t dio_complete(struct dio *dio, ssize_t ret, bool is_async)
ret = transferred;
if (dio->end_io) {
- int err;
-
// XXX: ki_pos??
err = dio->end_io(dio->iocb, offset, ret, dio->private);
if (err)
ret = err;
}
+ /*
+ * Try again to invalidate clean pages which might have been cached by
+ * non-direct readahead, or faulted in by get_user_pages() if the source
+ * of the write was an mmap'ed region of the file we're writing. Either
+ * one is a pretty crazy thing to do, so we don't support it 100%. If
+ * this invalidation fails, tough, the write still worked...
+ *
+ * And this page cache invalidation has to be after dio->end_io(), as
+ * some filesystems convert unwritten extents to real allocations in
+ * end_io() when necessary, otherwise a racing buffer read would cache
+ * zeros from unwritten extents.
+ */
+ if (flags & DIO_COMPLETE_INVALIDATE &&
+ ret > 0 && dio->op == REQ_OP_WRITE &&
+ dio->inode->i_mapping->nrpages) {
+ err = invalidate_inode_pages2_range(dio->inode->i_mapping,
+ offset >> PAGE_SHIFT,
+ (offset + ret - 1) >> PAGE_SHIFT);
+ WARN_ON_ONCE(err);
+ }
+
if (!(dio->flags & DIO_SKIP_DIO_COUNT))
inode_dio_end(dio->inode);
- if (is_async) {
+ if (flags & DIO_COMPLETE_ASYNC) {
/*
* generic_write_sync expects ki_pos to have been updated
* already, but the submission path only does this for
@@ -291,7 +317,7 @@ static void dio_aio_complete_work(struct work_struct *work)
{
struct dio *dio = container_of(work, struct dio, complete_work);
- dio_complete(dio, 0, true);
+ dio_complete(dio, 0, DIO_COMPLETE_ASYNC | DIO_COMPLETE_INVALIDATE);
}
static blk_status_t dio_bio_complete(struct dio *dio, struct bio *bio);
@@ -304,6 +330,7 @@ static void dio_bio_end_aio(struct bio *bio)
struct dio *dio = bio->bi_private;
unsigned long remaining;
unsigned long flags;
+ bool defer_completion = false;
/* cleanup the bio */
dio_bio_complete(dio, bio);
@@ -315,12 +342,24 @@ static void dio_bio_end_aio(struct bio *bio)
spin_unlock_irqrestore(&dio->bio_lock, flags);
if (remaining == 0) {
- if (dio->result && dio->defer_completion) {
+ /*
+ * Defer completion when defer_completion is set or
+ * when the inode has pages mapped and this is AIO write.
+ * We need to invalidate those pages because there is a
+ * chance they contain stale data in the case buffered IO
+ * went in between AIO submission and completion into the
+ * same region.
+ */
+ if (dio->result)
+ defer_completion = dio->defer_completion ||
+ (dio->op == REQ_OP_WRITE &&
+ dio->inode->i_mapping->nrpages);
+ if (defer_completion) {
INIT_WORK(&dio->complete_work, dio_aio_complete_work);
queue_work(dio->inode->i_sb->s_dio_done_wq,
&dio->complete_work);
} else {
- dio_complete(dio, 0, true);
+ dio_complete(dio, 0, DIO_COMPLETE_ASYNC);
}
}
}
@@ -838,7 +877,8 @@ out:
*/
if (sdio->boundary) {
ret = dio_send_cur_page(dio, sdio, map_bh);
- dio_bio_submit(dio, sdio);
+ if (sdio->bio)
+ dio_bio_submit(dio, sdio);
put_page(sdio->cur_page);
sdio->cur_page = NULL;
}
@@ -1210,10 +1250,19 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
* For AIO O_(D)SYNC writes we need to defer completions to a workqueue
* so that we can call ->fsync.
*/
- if (dio->is_async && iov_iter_rw(iter) == WRITE &&
- ((iocb->ki_filp->f_flags & O_DSYNC) ||
- IS_SYNC(iocb->ki_filp->f_mapping->host))) {
- retval = dio_set_defer_completion(dio);
+ if (dio->is_async && iov_iter_rw(iter) == WRITE) {
+ retval = 0;
+ if ((iocb->ki_filp->f_flags & O_DSYNC) ||
+ IS_SYNC(iocb->ki_filp->f_mapping->host))
+ retval = dio_set_defer_completion(dio);
+ else if (!dio->inode->i_sb->s_dio_done_wq) {
+ /*
+ * In case of AIO write racing with buffered read we
+ * need to defer completion. We can't decide this now,
+ * however the workqueue needs to be initialized here.
+ */
+ retval = sb_init_dio_done_wq(dio->inode->i_sb);
+ }
if (retval) {
/*
* We grab i_mutex only for reads so we don't have
@@ -1322,7 +1371,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
dio_await_completion(dio);
if (drop_refcount(dio) == 0) {
- retval = dio_complete(dio, retval, false);
+ retval = dio_complete(dio, retval, DIO_COMPLETE_INVALIDATE);
} else
BUG_ON(retval != -EIOCBQUEUED);
diff --git a/fs/dlm/Makefile b/fs/dlm/Makefile
index ca1c9124c8ce..3545fdafc6fb 100644
--- a/fs/dlm/Makefile
+++ b/fs/dlm/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_DLM) += dlm.o
dlm-y := ast.o \
config.o \
diff --git a/fs/drop_caches.c b/fs/drop_caches.c
index d72d52b90433..82377017130f 100644
--- a/fs/drop_caches.c
+++ b/fs/drop_caches.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Implement the manual drop-all-pagecache function
*/
diff --git a/fs/ecryptfs/ecryptfs_kernel.h b/fs/ecryptfs/ecryptfs_kernel.h
index 9c351bf757b2..3fbc0ff79699 100644
--- a/fs/ecryptfs/ecryptfs_kernel.h
+++ b/fs/ecryptfs/ecryptfs_kernel.h
@@ -84,11 +84,16 @@ struct ecryptfs_page_crypt_context {
static inline struct ecryptfs_auth_tok *
ecryptfs_get_encrypted_key_payload_data(struct key *key)
{
- if (key->type == &key_type_encrypted)
- return (struct ecryptfs_auth_tok *)
- (&((struct encrypted_key_payload *)key->payload.data[0])->payload_data);
- else
+ struct encrypted_key_payload *payload;
+
+ if (key->type != &key_type_encrypted)
return NULL;
+
+ payload = key->payload.data[0];
+ if (!payload)
+ return ERR_PTR(-EKEYREVOKED);
+
+ return (struct ecryptfs_auth_tok *)payload->payload_data;
}
static inline struct key *ecryptfs_get_encrypted_key(char *sig)
@@ -114,12 +119,17 @@ static inline struct ecryptfs_auth_tok *
ecryptfs_get_key_payload_data(struct key *key)
{
struct ecryptfs_auth_tok *auth_tok;
+ struct user_key_payload *ukp;
auth_tok = ecryptfs_get_encrypted_key_payload_data(key);
- if (!auth_tok)
- return (struct ecryptfs_auth_tok *)user_key_payload_locked(key)->data;
- else
+ if (auth_tok)
return auth_tok;
+
+ ukp = user_key_payload_locked(key);
+ if (!ukp)
+ return ERR_PTR(-EKEYREVOKED);
+
+ return (struct ecryptfs_auth_tok *)ukp->data;
}
#define ECRYPTFS_MAX_KEYSET_SIZE 1024
diff --git a/fs/ecryptfs/keystore.c b/fs/ecryptfs/keystore.c
index 3cf1546dca82..fa218cd64f74 100644
--- a/fs/ecryptfs/keystore.c
+++ b/fs/ecryptfs/keystore.c
@@ -459,7 +459,8 @@ out:
* @auth_tok_key: key containing the authentication token
* @auth_tok: authentication token
*
- * Returns zero on valid auth tok; -EINVAL otherwise
+ * Returns zero on valid auth tok; -EINVAL if the payload is invalid; or
+ * -EKEYREVOKED if the key was revoked before we acquired its semaphore.
*/
static int
ecryptfs_verify_auth_tok_from_key(struct key *auth_tok_key,
@@ -468,6 +469,12 @@ ecryptfs_verify_auth_tok_from_key(struct key *auth_tok_key,
int rc = 0;
(*auth_tok) = ecryptfs_get_key_payload_data(auth_tok_key);
+ if (IS_ERR(*auth_tok)) {
+ rc = PTR_ERR(*auth_tok);
+ *auth_tok = NULL;
+ goto out;
+ }
+
if (ecryptfs_verify_version((*auth_tok)->version)) {
printk(KERN_ERR "Data structure version mismatch. Userspace "
"tools must match eCryptfs kernel module with major "
diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c
index 9014479d0160..6b801186baa5 100644
--- a/fs/ecryptfs/main.c
+++ b/fs/ecryptfs/main.c
@@ -568,8 +568,7 @@ static struct dentry *ecryptfs_mount(struct file_system_type *fs_type, int flags
* 1) The lower mount is ro
* 2) The ecryptfs_encrypted_view mount option is specified
*/
- if (path.dentry->d_sb->s_flags & MS_RDONLY ||
- mount_crypt_stat->flags & ECRYPTFS_ENCRYPTED_VIEW_ENABLED)
+ if (sb_rdonly(path.dentry->d_sb) || mount_crypt_stat->flags & ECRYPTFS_ENCRYPTED_VIEW_ENABLED)
s->s_flags |= MS_RDONLY;
s->s_maxbytes = path.dentry->d_sb->s_maxbytes;
diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c
index 039e627194a9..c596e7c03424 100644
--- a/fs/ecryptfs/read_write.c
+++ b/fs/ecryptfs/read_write.c
@@ -47,7 +47,7 @@ int ecryptfs_write_lower(struct inode *ecryptfs_inode, char *data,
lower_file = ecryptfs_inode_to_private(ecryptfs_inode)->lower_file;
if (!lower_file)
return -EIO;
- rc = kernel_write(lower_file, data, size, offset);
+ rc = kernel_write(lower_file, data, size, &offset);
mark_inode_dirty_sync(ecryptfs_inode);
return rc;
}
@@ -237,7 +237,7 @@ int ecryptfs_read_lower(char *data, loff_t offset, size_t size,
lower_file = ecryptfs_inode_to_private(ecryptfs_inode)->lower_file;
if (!lower_file)
return -EIO;
- return kernel_read(lower_file, offset, data, size);
+ return kernel_read(lower_file, data, size, &offset);
}
/**
diff --git a/fs/efs/dir.c b/fs/efs/dir.c
index a7be96e5f1cb..f892ac7c2a35 100644
--- a/fs/efs/dir.c
+++ b/fs/efs/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dir.c
*
diff --git a/fs/efs/efs.h b/fs/efs/efs.h
index 70f5d4f9a945..13a4d9622633 100644
--- a/fs/efs/efs.h
+++ b/fs/efs/efs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 1999 Al Smith
*
diff --git a/fs/efs/file.c b/fs/efs/file.c
index a37dcee46866..9e641da6fab2 100644
--- a/fs/efs/file.c
+++ b/fs/efs/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* file.c
*
diff --git a/fs/efs/namei.c b/fs/efs/namei.c
index d34a40edcdb2..38961ee1d1af 100644
--- a/fs/efs/namei.c
+++ b/fs/efs/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* namei.c
*
diff --git a/fs/efs/super.c b/fs/efs/super.c
index 368f7dd21c61..65b59009555b 100644
--- a/fs/efs/super.c
+++ b/fs/efs/super.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* super.c
*
@@ -306,7 +307,7 @@ static int efs_fill_super(struct super_block *s, void *d, int silent)
}
brelse(bh);
- if (!(s->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(s)) {
#ifdef DEBUG
pr_info("forcing read-only mode\n");
#endif
diff --git a/fs/efs/symlink.c b/fs/efs/symlink.c
index 4870cc82deb0..923eb91654d5 100644
--- a/fs/efs/symlink.c
+++ b/fs/efs/symlink.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* symlink.c
*
diff --git a/fs/exec.c b/fs/exec.c
index 01a9fb9d8ac3..3e14ba25f678 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -885,23 +885,6 @@ struct file *open_exec(const char *name)
}
EXPORT_SYMBOL(open_exec);
-int kernel_read(struct file *file, loff_t offset,
- char *addr, unsigned long count)
-{
- mm_segment_t old_fs;
- loff_t pos = offset;
- int result;
-
- old_fs = get_fs();
- set_fs(get_ds());
- /* The cast to a user pointer is valid due to the set_fs() */
- result = vfs_read(file, (void __user *)addr, count, &pos);
- set_fs(old_fs);
- return result;
-}
-
-EXPORT_SYMBOL(kernel_read);
-
int kernel_read_file(struct file *file, void **buf, loff_t *size,
loff_t max_size, enum kernel_read_file_id id)
{
@@ -939,8 +922,7 @@ int kernel_read_file(struct file *file, void **buf, loff_t *size,
pos = 0;
while (pos < i_size) {
- bytes = kernel_read(file, pos, (char *)(*buf) + pos,
- i_size - pos);
+ bytes = kernel_read(file, *buf + pos, i_size - pos, &pos);
if (bytes < 0) {
ret = bytes;
goto out;
@@ -948,7 +930,6 @@ int kernel_read_file(struct file *file, void **buf, loff_t *size,
if (bytes == 0)
break;
- pos += bytes;
}
if (pos != i_size) {
@@ -974,7 +955,7 @@ out:
}
EXPORT_SYMBOL_GPL(kernel_read_file);
-int kernel_read_file_from_path(char *path, void **buf, loff_t *size,
+int kernel_read_file_from_path(const char *path, void **buf, loff_t *size,
loff_t max_size, enum kernel_read_file_id id)
{
struct file *file;
@@ -1429,7 +1410,7 @@ static void free_bprm(struct linux_binprm *bprm)
kfree(bprm);
}
-int bprm_change_interp(char *interp, struct linux_binprm *bprm)
+int bprm_change_interp(const char *interp, struct linux_binprm *bprm)
{
/* If a binfmt changed the interp, free it first. */
if (bprm->interp != bprm->filename)
@@ -1567,6 +1548,7 @@ static void bprm_fill_uid(struct linux_binprm *bprm)
int prepare_binprm(struct linux_binprm *bprm)
{
int retval;
+ loff_t pos = 0;
bprm_fill_uid(bprm);
@@ -1577,7 +1559,7 @@ int prepare_binprm(struct linux_binprm *bprm)
bprm->called_set_creds = 1;
memset(bprm->buf, 0, BINPRM_BUF_SIZE);
- return kernel_read(bprm->file, 0, bprm->buf, BINPRM_BUF_SIZE);
+ return kernel_read(bprm->file, bprm->buf, BINPRM_BUF_SIZE, &pos);
}
EXPORT_SYMBOL(prepare_binprm);
@@ -1763,9 +1745,9 @@ static int do_execveat_common(int fd, struct filename *filename,
bprm->filename = filename->name;
} else {
if (filename->name[0] == '\0')
- pathbuf = kasprintf(GFP_TEMPORARY, "/dev/fd/%d", fd);
+ pathbuf = kasprintf(GFP_KERNEL, "/dev/fd/%d", fd);
else
- pathbuf = kasprintf(GFP_TEMPORARY, "/dev/fd/%d/%s",
+ pathbuf = kasprintf(GFP_KERNEL, "/dev/fd/%d/%s",
fd, filename->name);
if (!pathbuf) {
retval = -ENOMEM;
@@ -1820,6 +1802,7 @@ static int do_execveat_common(int fd, struct filename *filename,
/* execve succeeded */
current->fs->in_exec = 0;
current->in_execve = 0;
+ membarrier_execve(current);
acct_update_integrals(current);
task_numa_free(current);
free_bprm(bprm);
diff --git a/fs/ext2/Makefile b/fs/ext2/Makefile
index 445b0e996a12..311479d864a7 100644
--- a/fs/ext2/Makefile
+++ b/fs/ext2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux ext2-filesystem routines.
#
diff --git a/fs/ext2/acl.c b/fs/ext2/acl.c
index 51f0aea70cb4..224c04abb2e5 100644
--- a/fs/ext2/acl.c
+++ b/fs/ext2/acl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/acl.c
*
diff --git a/fs/ext2/acl.h b/fs/ext2/acl.h
index 44937f9fcf32..0f01c759daac 100644
--- a/fs/ext2/acl.h
+++ b/fs/ext2/acl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
File: fs/ext2/acl.h
diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c
index d0bdb74f0e15..e1b3724bebf2 100644
--- a/fs/ext2/balloc.c
+++ b/fs/ext2/balloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/balloc.c
*
diff --git a/fs/ext2/dir.c b/fs/ext2/dir.c
index e2709695b177..987647986f47 100644
--- a/fs/ext2/dir.c
+++ b/fs/ext2/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/dir.c
*
diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index 28de3edd4f4d..032295e1d386 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1992, 1993, 1994, 1995
* Remy Card (card@masi.ibp.fr)
diff --git a/fs/ext2/file.c b/fs/ext2/file.c
index ff3a3636a5ca..c67b486488fd 100644
--- a/fs/ext2/file.c
+++ b/fs/ext2/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/file.c
*
diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c
index 395fc074c0db..a1fc3dabca41 100644
--- a/fs/ext2/ialloc.c
+++ b/fs/ext2/ialloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/ialloc.c
*
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
index 4dca6f348714..1442a4c734c8 100644
--- a/fs/ext2/inode.c
+++ b/fs/ext2/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/inode.c
*
diff --git a/fs/ext2/ioctl.c b/fs/ext2/ioctl.c
index 087f122cca42..0367c0039e68 100644
--- a/fs/ext2/ioctl.c
+++ b/fs/ext2/ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/ioctl.c
*
diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c
index 814e405a2da6..e078075dc66f 100644
--- a/fs/ext2/namei.c
+++ b/fs/ext2/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/namei.c
*
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index fc18edd81815..1458706bd2ec 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -52,7 +52,7 @@ void ext2_error(struct super_block *sb, const char *function,
struct ext2_sb_info *sbi = EXT2_SB(sb);
struct ext2_super_block *es = sbi->s_es;
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
spin_lock(&sbi->s_lock);
sbi->s_mount_state |= EXT2_ERROR_FS;
es->s_state |= cpu_to_le16(EXT2_ERROR_FS);
@@ -151,7 +151,7 @@ static void ext2_put_super (struct super_block * sb)
ext2_xattr_destroy_cache(sbi->s_ea_block_cache);
sbi->s_ea_block_cache = NULL;
}
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
struct ext2_super_block *es = sbi->s_es;
spin_lock(&sbi->s_lock);
@@ -943,8 +943,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
le32_to_cpu(features));
goto failed_mount;
}
- if (!(sb->s_flags & MS_RDONLY) &&
- (features = EXT2_HAS_RO_COMPAT_FEATURE(sb, ~EXT2_FEATURE_RO_COMPAT_SUPP))){
+ if (!sb_rdonly(sb) && (features = EXT2_HAS_RO_COMPAT_FEATURE(sb, ~EXT2_FEATURE_RO_COMPAT_SUPP))){
ext2_msg(sb, KERN_ERR, "error: couldn't mount RDWR because of "
"unsupported optional features (%x)",
le32_to_cpu(features));
@@ -1173,7 +1172,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
if (EXT2_HAS_COMPAT_FEATURE(sb, EXT3_FEATURE_COMPAT_HAS_JOURNAL))
ext2_msg(sb, KERN_WARNING,
"warning: mounting ext3 filesystem as ext2");
- if (ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY))
+ if (ext2_setup_super (sb, es, sb_rdonly(sb)))
sb->s_flags |= MS_RDONLY;
ext2_write_super(sb);
return 0;
@@ -1305,7 +1304,7 @@ static int ext2_unfreeze(struct super_block *sb)
static void ext2_write_super(struct super_block *sb)
{
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
ext2_sync_fs(sb, 1);
}
@@ -1343,7 +1342,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
"dax flag with busy inodes while remounting");
sbi->s_mount_opt ^= EXT2_MOUNT_DAX;
}
- if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) {
+ if ((bool)(*flags & MS_RDONLY) == sb_rdonly(sb)) {
spin_unlock(&sbi->s_lock);
return 0;
}
diff --git a/fs/ext2/symlink.c b/fs/ext2/symlink.c
index eeffb0138a17..d5589ddcc281 100644
--- a/fs/ext2/symlink.c
+++ b/fs/ext2/symlink.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/symlink.c
*
diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
index 1b9b1268d418..62d9a659a8ff 100644
--- a/fs/ext2/xattr.c
+++ b/fs/ext2/xattr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/xattr.c
*
diff --git a/fs/ext2/xattr.h b/fs/ext2/xattr.h
index 6f82ab1b00ca..cee888cdc235 100644
--- a/fs/ext2/xattr.h
+++ b/fs/ext2/xattr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
File: linux/ext2_xattr.h
diff --git a/fs/ext2/xattr_security.c b/fs/ext2/xattr_security.c
index 7b9e9c1842d5..9a682e440acb 100644
--- a/fs/ext2/xattr_security.c
+++ b/fs/ext2/xattr_security.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/xattr_security.c
* Handler for storing security labels as extended attributes.
diff --git a/fs/ext2/xattr_trusted.c b/fs/ext2/xattr_trusted.c
index 65049b71af13..49add1107850 100644
--- a/fs/ext2/xattr_trusted.c
+++ b/fs/ext2/xattr_trusted.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/xattr_trusted.c
* Handler for trusted extended attributes.
diff --git a/fs/ext2/xattr_user.c b/fs/ext2/xattr_user.c
index fb2f992ae763..c243a3b4d69d 100644
--- a/fs/ext2/xattr_user.c
+++ b/fs/ext2/xattr_user.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext2/xattr_user.c
* Handler for extended user attributes.
diff --git a/fs/ext4/Makefile b/fs/ext4/Makefile
index d9beca1653c5..8fdfcd3c3e04 100644
--- a/fs/ext4/Makefile
+++ b/fs/ext4/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux ext4-filesystem routines.
#
diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c
index 46ff2229ff5e..fb50f9aa6ead 100644
--- a/fs/ext4/acl.c
+++ b/fs/ext4/acl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/acl.c
*
diff --git a/fs/ext4/acl.h b/fs/ext4/acl.h
index da2c79577d72..a48fc5ae2701 100644
--- a/fs/ext4/acl.h
+++ b/fs/ext4/acl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
File: fs/ext4/acl.h
diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
index e04ec868e37e..d5ddfb96c83c 100644
--- a/fs/ext4/balloc.c
+++ b/fs/ext4/balloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/balloc.c
*
diff --git a/fs/ext4/bitmap.c b/fs/ext4/bitmap.c
index 4a606afb171f..f63e028c638c 100644
--- a/fs/ext4/bitmap.c
+++ b/fs/ext4/bitmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/bitmap.c
*
diff --git a/fs/ext4/block_validity.c b/fs/ext4/block_validity.c
index fdb19543af1e..bee888e0e2db 100644
--- a/fs/ext4/block_validity.c
+++ b/fs/ext4/block_validity.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/block_validity.c
*
diff --git a/fs/ext4/dir.c b/fs/ext4/dir.c
index b04e882179c6..d5babc9f222b 100644
--- a/fs/ext4/dir.c
+++ b/fs/ext4/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/dir.c
*
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index e2abe01c8c6b..58a0304566db 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ext4.h
*
diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c
index dd106b1d5d89..2d593201cf7a 100644
--- a/fs/ext4/ext4_jbd2.c
+++ b/fs/ext4/ext4_jbd2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Interface between ext4 and JBD
*/
@@ -47,7 +48,7 @@ static int ext4_journal_check_start(struct super_block *sb)
if (unlikely(ext4_forced_shutdown(EXT4_SB(sb))))
return -EIO;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return -EROFS;
WARN_ON(sb->s_writers.frozen == SB_FREEZE_COMPLETE);
journal = EXT4_SB(sb)->s_journal;
diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c
index e7f12a204cbc..763ef185dd17 100644
--- a/fs/ext4/extents_status.c
+++ b/fs/ext4/extents_status.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/ext4/extents_status.c
*
diff --git a/fs/ext4/extents_status.h b/fs/ext4/extents_status.h
index f7aa24f4642d..ca90fc96f47e 100644
--- a/fs/ext4/extents_status.h
+++ b/fs/ext4/extents_status.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fs/ext4/extents_status.h
*
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 57dcaea762c3..5cb9aa3ad249 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/file.c
*
@@ -223,6 +224,8 @@ ext4_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
if (IS_DAX(inode))
return ext4_dax_write_iter(iocb, from);
#endif
+ if (!o_direct && (iocb->ki_flags & IOCB_NOWAIT))
+ return -EOPNOTSUPP;
if (!inode_trylock(inode)) {
if (iocb->ki_flags & IOCB_NOWAIT)
@@ -371,7 +374,7 @@ static int ext4_file_open(struct inode * inode, struct file * filp)
return -EIO;
if (unlikely(!(sbi->s_mount_flags & EXT4_MF_MNTDIR_SAMPLED) &&
- !(sb->s_flags & MS_RDONLY))) {
+ !sb_rdonly(sb))) {
sbi->s_mount_flags |= EXT4_MF_MNTDIR_SAMPLED;
/*
* Sample where the filesystem has been mounted and
@@ -431,9 +434,7 @@ static int ext4_file_open(struct inode * inode, struct file * filp)
return ret;
}
- /* Set the flags to support nowait AIO */
- filp->f_mode |= FMODE_AIO_NOWAIT;
-
+ filp->f_mode |= FMODE_NOWAIT;
return dquot_file_open(inode, filp);
}
diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c
index aae2c3971cef..26a7fe5c4fd3 100644
--- a/fs/ext4/fsync.c
+++ b/fs/ext4/fsync.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/fsync.c
*
@@ -107,7 +108,7 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
trace_ext4_sync_file_enter(file, datasync);
- if (inode->i_sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(inode->i_sb)) {
/* Make sure that we read updated s_mount_flags value */
smp_rmb();
if (EXT4_SB(inode->i_sb)->s_mount_flags & EXT4_MF_FS_ABORTED)
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
index 71e93a23cec3..c5f697a3fad4 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/ialloc.c
*
@@ -1382,7 +1383,7 @@ int ext4_init_inode_table(struct super_block *sb, ext4_group_t group,
int num, ret = 0, used_blks = 0;
/* This should not happen, but just to be sure check this */
- if (sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(sb)) {
ret = 1;
goto out;
}
diff --git a/fs/ext4/indirect.c b/fs/ext4/indirect.c
index 7ffa290cbb8e..c32802c956d5 100644
--- a/fs/ext4/indirect.c
+++ b/fs/ext4/indirect.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/indirect.c
*
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 31db875bc7a1..90afeb7293a6 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/inode.c
*
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
index afb66d4ab5cf..75d83471f65c 100644
--- a/fs/ext4/ioctl.c
+++ b/fs/ext4/ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/ioctl.c
*
diff --git a/fs/ext4/mballoc.h b/fs/ext4/mballoc.h
index 009300ee1561..dcf52540f379 100644
--- a/fs/ext4/mballoc.h
+++ b/fs/ext4/mballoc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fs/ext4/mballoc.h
*
diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c
index 77cdce1f17ce..27b9a76a0dfa 100644
--- a/fs/ext4/mmp.c
+++ b/fs/ext4/mmp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/random.h>
#include <linux/buffer_head.h>
@@ -185,7 +186,7 @@ static int kmmpd(void *data)
goto exit_thread;
}
- if (sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(sb)) {
ext4_warning(sb, "kmmpd being stopped since filesystem "
"has been remounted as readonly.");
goto exit_thread;
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index c1cf020d1889..bd48a8d83961 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/namei.c
*
diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
index 55ad7dd149d0..db7590178dfc 100644
--- a/fs/ext4/page-io.c
+++ b/fs/ext4/page-io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/page-io.c
*
diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c
index 04c90643af7a..9ffa6fad18db 100644
--- a/fs/ext4/readpage.c
+++ b/fs/ext4/readpage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/readpage.c
*
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index 035cd3f4785e..1dac59c24792 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/resize.c
*
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 71b9a667e1bc..b0915b734a38 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -405,7 +405,7 @@ static void ext4_journal_commit_callback(journal_t *journal, transaction_t *txn)
static void ext4_handle_error(struct super_block *sb)
{
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return;
if (!test_opt(sb, ERRORS_CONT)) {
@@ -587,8 +587,7 @@ void __ext4_std_error(struct super_block *sb, const char *function,
/* Special case: if the error is EROFS, and we're not already
* inside a transaction, then there's really no point in logging
* an error. */
- if (errno == -EROFS && journal_current_handle() == NULL &&
- (sb->s_flags & MS_RDONLY))
+ if (errno == -EROFS && journal_current_handle() == NULL && sb_rdonly(sb))
return;
if (ext4_error_ratelimit(sb)) {
@@ -628,7 +627,7 @@ void __ext4_abort(struct super_block *sb, const char *function,
sb->s_id, function, line, &vaf);
va_end(args);
- if ((sb->s_flags & MS_RDONLY) == 0) {
+ if (sb_rdonly(sb) == 0) {
ext4_msg(sb, KERN_CRIT, "Remounting filesystem read-only");
EXT4_SB(sb)->s_mount_flags |= EXT4_MF_FS_ABORTED;
/*
@@ -889,11 +888,11 @@ static void ext4_put_super(struct super_block *sb)
ext4_mb_release(sb);
ext4_ext_release(sb);
- if (!(sb->s_flags & MS_RDONLY) && !aborted) {
+ if (!sb_rdonly(sb) && !aborted) {
ext4_clear_feature_journal_needs_recovery(sb);
es->s_state = cpu_to_le16(sbi->s_mount_state);
}
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
ext4_commit_super(sb, 1);
for (i = 0; i < sbi->s_gdb_count; i++)
@@ -1678,7 +1677,7 @@ static int handle_mount_opt(struct super_block *sb, char *opt, int token,
sbi->s_mount_flags |= EXT4_MF_FS_ABORTED;
return 1;
case Opt_i_version:
- sb->s_flags |= MS_I_VERSION;
+ sb->s_flags |= SB_I_VERSION;
return 1;
case Opt_lazytime:
sb->s_flags |= MS_LAZYTIME;
@@ -2061,7 +2060,7 @@ static int _ext4_show_options(struct seq_file *seq, struct super_block *sb,
SEQ_OPTS_PRINT("min_batch_time=%u", sbi->s_min_batch_time);
if (nodefs || sbi->s_max_batch_time != EXT4_DEF_MAX_BATCH_TIME)
SEQ_OPTS_PRINT("max_batch_time=%u", sbi->s_max_batch_time);
- if (sb->s_flags & MS_I_VERSION)
+ if (sb->s_flags & SB_I_VERSION)
SEQ_OPTS_PUTS("i_version");
if (nodefs || sbi->s_stripe)
SEQ_OPTS_PRINT("stripe=%lu", sbi->s_stripe);
@@ -2100,7 +2099,7 @@ int ext4_seq_options_show(struct seq_file *seq, void *offset)
struct super_block *sb = seq->private;
int rc;
- seq_puts(seq, (sb->s_flags & MS_RDONLY) ? "ro" : "rw");
+ seq_puts(seq, sb_rdonly(sb) ? "ro" : "rw");
rc = _ext4_show_options(seq, sb, 1);
seq_puts(seq, "\n");
return rc;
@@ -2368,7 +2367,7 @@ static int ext4_check_descriptors(struct super_block *sb,
"Checksum for group %u failed (%u!=%u)",
i, le16_to_cpu(ext4_group_desc_csum(sb, i,
gdp)), le16_to_cpu(gdp->bg_checksum));
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
ext4_unlock_group(sb, i);
return 0;
}
@@ -3136,8 +3135,7 @@ int ext4_register_li_request(struct super_block *sb,
goto out;
}
- if (first_not_zeroed == ngroups ||
- (sb->s_flags & MS_RDONLY) ||
+ if (first_not_zeroed == ngroups || sb_rdonly(sb) ||
!test_opt(sb, INIT_INODE_TABLE))
goto out;
@@ -3683,7 +3681,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
* previously didn't change the revision level when setting the flags,
* so there is a chance incompat flags are set on a rev 0 filesystem.
*/
- if (!ext4_feature_set_ok(sb, (sb->s_flags & MS_RDONLY)))
+ if (!ext4_feature_set_ok(sb, (sb_rdonly(sb))))
goto failed_mount;
blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size);
@@ -3812,12 +3810,12 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
sbi->s_hash_unsigned = 3;
else if ((i & EXT2_FLAGS_SIGNED_HASH) == 0) {
#ifdef __CHAR_UNSIGNED__
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
es->s_flags |=
cpu_to_le32(EXT2_FLAGS_UNSIGNED_HASH);
sbi->s_hash_unsigned = 3;
#else
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
es->s_flags |=
cpu_to_le32(EXT2_FLAGS_SIGNED_HASH);
#endif
@@ -4017,7 +4015,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
needs_recovery = (es->s_last_orphan != 0 ||
ext4_has_feature_journal_needs_recovery(sb));
- if (ext4_has_feature_mmp(sb) && !(sb->s_flags & MS_RDONLY))
+ if (ext4_has_feature_mmp(sb) && !sb_rdonly(sb))
if (ext4_multi_mount_protect(sb, le64_to_cpu(es->s_mmp_block)))
goto failed_mount3a;
@@ -4029,7 +4027,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
err = ext4_load_journal(sb, es, journal_devnum);
if (err)
goto failed_mount3a;
- } else if (test_opt(sb, NOLOAD) && !(sb->s_flags & MS_RDONLY) &&
+ } else if (test_opt(sb, NOLOAD) && !sb_rdonly(sb) &&
ext4_has_feature_journal_needs_recovery(sb)) {
ext4_msg(sb, KERN_ERR, "required journal recovery "
"suppressed and not mounted read-only");
@@ -4143,7 +4141,7 @@ no_journal:
goto failed_mount_wq;
}
- if (DUMMY_ENCRYPTION_ENABLED(sbi) && !(sb->s_flags & MS_RDONLY) &&
+ if (DUMMY_ENCRYPTION_ENABLED(sbi) && !sb_rdonly(sb) &&
!ext4_has_feature_encrypt(sb)) {
ext4_set_feature_encrypt(sb);
ext4_commit_super(sb, 1);
@@ -4197,7 +4195,7 @@ no_journal:
goto failed_mount4;
}
- if (ext4_setup_super(sb, es, sb->s_flags & MS_RDONLY))
+ if (ext4_setup_super(sb, es, sb_rdonly(sb)))
sb->s_flags |= MS_RDONLY;
/* determine the minimum size of new large inodes, if present */
@@ -4285,7 +4283,7 @@ no_journal:
#ifdef CONFIG_QUOTA
/* Enable quota usage during mount. */
- if (ext4_has_feature_quota(sb) && !(sb->s_flags & MS_RDONLY)) {
+ if (ext4_has_feature_quota(sb) && !sb_rdonly(sb)) {
err = ext4_enable_quotas(sb);
if (err)
goto failed_mount8;
@@ -4609,7 +4607,7 @@ static int ext4_load_journal(struct super_block *sb,
* can get read-write access to the device.
*/
if (ext4_has_feature_journal_needs_recovery(sb)) {
- if (sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(sb)) {
ext4_msg(sb, KERN_INFO, "INFO: recovery "
"required on readonly filesystem");
if (really_read_only) {
@@ -4764,8 +4762,7 @@ static void ext4_mark_recovery_complete(struct super_block *sb,
if (jbd2_journal_flush(journal) < 0)
goto out;
- if (ext4_has_feature_journal_needs_recovery(sb) &&
- sb->s_flags & MS_RDONLY) {
+ if (ext4_has_feature_journal_needs_recovery(sb) && sb_rdonly(sb)) {
ext4_clear_feature_journal_needs_recovery(sb);
ext4_commit_super(sb, 1);
}
@@ -4821,7 +4818,7 @@ int ext4_force_commit(struct super_block *sb)
{
journal_t *journal;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return 0;
journal = EXT4_SB(sb)->s_journal;
@@ -4886,7 +4883,7 @@ static int ext4_freeze(struct super_block *sb)
int error = 0;
journal_t *journal;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return 0;
journal = EXT4_SB(sb)->s_journal;
@@ -4921,7 +4918,7 @@ out:
*/
static int ext4_unfreeze(struct super_block *sb)
{
- if ((sb->s_flags & MS_RDONLY) || ext4_forced_shutdown(EXT4_SB(sb)))
+ if (sb_rdonly(sb) || ext4_forced_shutdown(EXT4_SB(sb)))
return 0;
if (EXT4_SB(sb)->s_journal) {
@@ -5059,7 +5056,7 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data)
if (*flags & MS_LAZYTIME)
sb->s_flags |= MS_LAZYTIME;
- if ((*flags & MS_RDONLY) != (sb->s_flags & MS_RDONLY)) {
+ if ((bool)(*flags & MS_RDONLY) != sb_rdonly(sb)) {
if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED) {
err = -EROFS;
goto restore_opts;
@@ -5154,7 +5151,7 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data)
* Reinitialize lazy itable initialization thread based on
* current settings
*/
- if ((sb->s_flags & MS_RDONLY) || !test_opt(sb, INIT_INODE_TABLE))
+ if (sb_rdonly(sb) || !test_opt(sb, INIT_INODE_TABLE))
ext4_unregister_li_request(sb);
else {
ext4_group_t first_not_zeroed;
@@ -5731,7 +5728,7 @@ static inline int ext2_feature_set_ok(struct super_block *sb)
{
if (ext4_has_unknown_ext2_incompat_features(sb))
return 0;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return 1;
if (ext4_has_unknown_ext2_ro_compat_features(sb))
return 0;
@@ -5762,7 +5759,7 @@ static inline int ext3_feature_set_ok(struct super_block *sb)
return 0;
if (!ext4_has_feature_journal(sb))
return 0;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return 1;
if (ext4_has_unknown_ext3_ro_compat_features(sb))
return 0;
diff --git a/fs/ext4/symlink.c b/fs/ext4/symlink.c
index 5c8fc53cb0e5..a2006c9af1d9 100644
--- a/fs/ext4/symlink.c
+++ b/fs/ext4/symlink.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/symlink.c
*
diff --git a/fs/ext4/sysfs.c b/fs/ext4/sysfs.c
index 48c7a7d55ed3..e21afd52e7d7 100644
--- a/fs/ext4/sysfs.c
+++ b/fs/ext4/sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/sysfs.c
*
diff --git a/fs/ext4/truncate.h b/fs/ext4/truncate.h
index c70d06a383e2..b64a9fa0ff41 100644
--- a/fs/ext4/truncate.h
+++ b/fs/ext4/truncate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/ext4/truncate.h
*
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
index 3b69330a4250..218a7ba57819 100644
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/xattr.c
*
diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h
index 0d2dde1fa87a..f8cc07588ac9 100644
--- a/fs/ext4/xattr.h
+++ b/fs/ext4/xattr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
File: fs/ext4/xattr.h
diff --git a/fs/ext4/xattr_security.c b/fs/ext4/xattr_security.c
index a8921112030d..629001b28632 100644
--- a/fs/ext4/xattr_security.c
+++ b/fs/ext4/xattr_security.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/xattr_security.c
* Handler for storing security labels as extended attributes.
diff --git a/fs/ext4/xattr_trusted.c b/fs/ext4/xattr_trusted.c
index c7765c735714..e9389e5d75c3 100644
--- a/fs/ext4/xattr_trusted.c
+++ b/fs/ext4/xattr_trusted.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/xattr_trusted.c
* Handler for trusted extended attributes.
diff --git a/fs/ext4/xattr_user.c b/fs/ext4/xattr_user.c
index ca20e423034b..d4546184b34b 100644
--- a/fs/ext4/xattr_user.c
+++ b/fs/ext4/xattr_user.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ext4/xattr_user.c
* Handler for extended user attributes.
diff --git a/fs/f2fs/Makefile b/fs/f2fs/Makefile
index a0dc559b1b47..776c4b936504 100644
--- a/fs/f2fs/Makefile
+++ b/fs/f2fs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_F2FS_FS) += f2fs.o
f2fs-y := dir.o file.o inode.o namei.o hash.o super.o inline.o
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 9a7c90386947..4b4a72f392be 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -2525,7 +2525,7 @@ void invalidate_blocks(struct f2fs_sb_info *sbi, block_t addr);
bool is_checkpointed_data(struct f2fs_sb_info *sbi, block_t blkaddr);
void refresh_sit_entry(struct f2fs_sb_info *sbi, block_t old, block_t new);
void stop_discard_thread(struct f2fs_sb_info *sbi);
-void f2fs_wait_discard_bios(struct f2fs_sb_info *sbi);
+void f2fs_wait_discard_bios(struct f2fs_sb_info *sbi, bool umount);
void clear_prefree_segments(struct f2fs_sb_info *sbi, struct cp_control *cpc);
void release_discard_addrs(struct f2fs_sb_info *sbi);
int npages_for_summary_flush(struct f2fs_sb_info *sbi, bool for_ra);
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 621b9b3d320b..c695ff462ee6 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1210,11 +1210,11 @@ void stop_discard_thread(struct f2fs_sb_info *sbi)
}
/* This comes from f2fs_put_super and f2fs_trim_fs */
-void f2fs_wait_discard_bios(struct f2fs_sb_info *sbi)
+void f2fs_wait_discard_bios(struct f2fs_sb_info *sbi, bool umount)
{
__issue_discard_cmd(sbi, false);
__drop_discard_cmd(sbi);
- __wait_discard_cmd(sbi, false);
+ __wait_discard_cmd(sbi, !umount);
}
static void mark_discard_range_all(struct f2fs_sb_info *sbi)
@@ -2244,7 +2244,7 @@ int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range)
}
/* It's time to issue all the filed discards */
mark_discard_range_all(sbi);
- f2fs_wait_discard_bios(sbi);
+ f2fs_wait_discard_bios(sbi, false);
out:
range->len = F2FS_BLK_TO_BYTES(cpc.trimmed);
return err;
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 89f61eb3d167..933c3d529e65 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -801,7 +801,7 @@ static void f2fs_put_super(struct super_block *sb)
}
/* be sure to wait for any on-going discard commands */
- f2fs_wait_discard_bios(sbi);
+ f2fs_wait_discard_bios(sbi, true);
if (f2fs_discard_en(sbi) && !sbi->discard_blks) {
struct cp_control cpc = {
diff --git a/fs/fat/Makefile b/fs/fat/Makefile
index 964b634f6667..70645ce2f7fc 100644
--- a/fs/fat/Makefile
+++ b/fs/fat/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux fat filesystem support.
#
diff --git a/fs/fat/cache.c b/fs/fat/cache.c
index 5d384921524d..e9bed49df6b7 100644
--- a/fs/fat/cache.c
+++ b/fs/fat/cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/fat/cache.c
*
diff --git a/fs/fat/fat.h b/fs/fat/fat.h
index 051dac1ce3be..8fc1093da47d 100644
--- a/fs/fat/fat.h
+++ b/fs/fat/fat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FAT_H
#define _FAT_H
diff --git a/fs/fat/fatent.c b/fs/fat/fatent.c
index 1d9a8c4e9de0..48b2336692f9 100644
--- a/fs/fat/fatent.c
+++ b/fs/fat/fatent.c
@@ -309,7 +309,7 @@ static void mark_fsinfo_dirty(struct super_block *sb)
{
struct msdos_sb_info *sbi = MSDOS_SB(sb);
- if (sb->s_flags & MS_RDONLY || sbi->fat_bits != 32)
+ if (sb_rdonly(sb) || sbi->fat_bits != 32)
return;
__mark_inode_dirty(sbi->fsinfo_inode, I_DIRTY_SYNC);
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index a2c05f2ada6d..30c52394a7ad 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -657,7 +657,7 @@ static void fat_set_state(struct super_block *sb,
struct msdos_sb_info *sbi = MSDOS_SB(sb);
/* do not change any thing if mounted read only */
- if ((sb->s_flags & MS_RDONLY) && !force)
+ if (sb_rdonly(sb) && !force)
return;
/* do not change state if fs was dirty */
@@ -787,7 +787,7 @@ static int fat_remount(struct super_block *sb, int *flags, char *data)
/* make sure we update state on remount. */
new_rdonly = *flags & MS_RDONLY;
- if (new_rdonly != (sb->s_flags & MS_RDONLY)) {
+ if (new_rdonly != sb_rdonly(sb)) {
if (new_rdonly)
fat_set_state(sb, 0, 0);
else
diff --git a/fs/fat/misc.c b/fs/fat/misc.c
index 8a8698119ff7..acc3aa30ee54 100644
--- a/fs/fat/misc.c
+++ b/fs/fat/misc.c
@@ -32,7 +32,7 @@ void __fat_fs_error(struct super_block *sb, int report, const char *fmt, ...)
if (opts->errors == FAT_ERRORS_PANIC)
panic("FAT-fs (%s): fs panic from previous error\n", sb->s_id);
- else if (opts->errors == FAT_ERRORS_RO && !(sb->s_flags & MS_RDONLY)) {
+ else if (opts->errors == FAT_ERRORS_RO && !sb_rdonly(sb)) {
sb->s_flags |= MS_RDONLY;
fat_msg(sb, KERN_ERR, "Filesystem has been set read-only");
}
diff --git a/fs/fcntl.c b/fs/fcntl.c
index 0491da3b28c3..8d78ffd7b399 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/fcntl.c
*
@@ -749,7 +750,7 @@ static void send_sigio_to_task(struct task_struct *p,
* specific si_codes. In that case use SI_SIGIO instead
* to remove the ambiguity.
*/
- if (sig_specific_sicodes(signum))
+ if ((signum != SIGPOLL) && sig_specific_sicodes(signum))
si.si_code = SI_SIGIO;
/* Make sure we are called with one of the POLL_*
diff --git a/fs/fhandle.c b/fs/fhandle.c
index 58a61f55e0d0..474adc8d2a3a 100644
--- a/fs/fhandle.c
+++ b/fs/fhandle.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/syscalls.h>
#include <linux/slab.h>
#include <linux/fs.h>
diff --git a/fs/file.c b/fs/file.c
index 1fc7fbbb4510..4eecbf4244a5 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/file.c
*
diff --git a/fs/file_table.c b/fs/file_table.c
index 72e861a35a7f..61517f57f8ef 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -233,12 +233,10 @@ static LLIST_HEAD(delayed_fput_list);
static void delayed_fput(struct work_struct *unused)
{
struct llist_node *node = llist_del_all(&delayed_fput_list);
- struct llist_node *next;
+ struct file *f, *t;
- for (; node; node = next) {
- next = llist_next(node);
- __fput(llist_entry(node, struct file, f_u.fu_llist));
- }
+ llist_for_each_entry_safe(f, t, node, f_u.fu_llist)
+ __fput(f);
}
static void ____fput(struct callback_head *work)
@@ -312,7 +310,7 @@ void put_filp(struct file *file)
}
void __init files_init(void)
-{
+{
filp_cachep = kmem_cache_create("filp", sizeof(struct file), 0,
SLAB_HWCACHE_ALIGN | SLAB_PANIC, NULL);
percpu_counter_init(&nr_files, 0, GFP_KERNEL);
@@ -331,4 +329,4 @@ void __init files_maxfiles_init(void)
n = ((totalram_pages - memreserve) * (PAGE_SIZE / 1024)) / 10;
files_stat.max_files = max_t(unsigned long, n, NR_FILE);
-}
+}
diff --git a/fs/filesystems.c b/fs/filesystems.c
index a920ad2629ac..f2728a4a03a1 100644
--- a/fs/filesystems.c
+++ b/fs/filesystems.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/filesystems.c
*
diff --git a/fs/fs_pin.c b/fs/fs_pin.c
index e747b3d720ee..0d285fd5b44a 100644
--- a/fs/fs_pin.c
+++ b/fs/fs_pin.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/sched.h>
#include <linux/slab.h>
diff --git a/fs/fscache/Makefile b/fs/fscache/Makefile
index 6d561531cb36..79e08e05ef84 100644
--- a/fs/fscache/Makefile
+++ b/fs/fscache/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for general filesystem caching code
#
diff --git a/fs/fscache/object-list.c b/fs/fscache/object-list.c
index 67f940892ef8..0438d4cd91ef 100644
--- a/fs/fscache/object-list.c
+++ b/fs/fscache/object-list.c
@@ -262,7 +262,8 @@ static int fscache_objlist_show(struct seq_file *m, void *v)
type = "DT";
break;
default:
- sprintf(_type, "%02u", cookie->def->type);
+ snprintf(_type, sizeof(_type), "%02u",
+ cookie->def->type);
type = _type;
break;
}
@@ -330,6 +331,13 @@ static void fscache_objlist_config(struct fscache_objlist_data *data)
rcu_read_lock();
confkey = user_key_payload_rcu(key);
+ if (!confkey) {
+ /* key was revoked */
+ rcu_read_unlock();
+ key_put(key);
+ goto no_config;
+ }
+
buf = confkey->data;
for (len = confkey->datalen - 1; len >= 0; len--) {
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 622081b97426..24967382a7b1 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -1308,7 +1308,8 @@ static int parse_dirplusfile(char *buf, size_t nbytes, struct file *file,
*/
over = !dir_emit(ctx, dirent->name, dirent->namelen,
dirent->ino, dirent->type);
- ctx->pos = dirent->off;
+ if (!over)
+ ctx->pos = dirent->off;
}
buf += reclen;
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 65c88379a3a1..94a745acaef8 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -1059,7 +1059,7 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
if (sb->s_flags & MS_MANDLOCK)
goto err;
- sb->s_flags &= ~(MS_NOSEC | MS_I_VERSION);
+ sb->s_flags &= ~(MS_NOSEC | SB_I_VERSION);
if (!parse_fuse_opt(data, &d, is_bdev))
goto err;
diff --git a/fs/gfs2/Makefile b/fs/gfs2/Makefile
index 86128202384f..41b2aa4bc3bf 100644
--- a/fs/gfs2/Makefile
+++ b/fs/gfs2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -I$(src)
obj-$(CONFIG_GFS2_FS) += gfs2.o
gfs2-y := acl.o bmap.o dir.o xattr.o glock.o \
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index 98e845b7841b..11066d8647d2 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -1945,13 +1945,9 @@ static void *gfs2_glock_seq_start(struct seq_file *seq, loff_t *pos)
{
struct gfs2_glock_iter *gi = seq->private;
loff_t n = *pos;
- int ret;
-
- if (gi->last_pos <= *pos)
- n = (*pos - gi->last_pos);
- ret = rhashtable_walk_start(&gi->hti);
- if (ret)
+ rhashtable_walk_enter(&gl_hash_table, &gi->hti);
+ if (rhashtable_walk_start(&gi->hti) != 0)
return NULL;
do {
@@ -1959,6 +1955,7 @@ static void *gfs2_glock_seq_start(struct seq_file *seq, loff_t *pos)
} while (gi->gl && n--);
gi->last_pos = *pos;
+
return gi->gl;
}
@@ -1970,6 +1967,7 @@ static void *gfs2_glock_seq_next(struct seq_file *seq, void *iter_ptr,
(*pos)++;
gi->last_pos = *pos;
gfs2_glock_iter_next(gi);
+
return gi->gl;
}
@@ -1980,6 +1978,7 @@ static void gfs2_glock_seq_stop(struct seq_file *seq, void *iter_ptr)
gi->gl = NULL;
rhashtable_walk_stop(&gi->hti);
+ rhashtable_walk_exit(&gi->hti);
}
static int gfs2_glock_seq_show(struct seq_file *seq, void *iter_ptr)
@@ -2042,12 +2041,10 @@ static int __gfs2_glocks_open(struct inode *inode, struct file *file,
struct gfs2_glock_iter *gi = seq->private;
gi->sdp = inode->i_private;
- gi->last_pos = 0;
seq->buf = kmalloc(GFS2_SEQ_GOODSIZE, GFP_KERNEL | __GFP_NOWARN);
if (seq->buf)
seq->size = GFS2_SEQ_GOODSIZE;
gi->gl = NULL;
- rhashtable_walk_enter(&gl_hash_table, &gi->hti);
}
return ret;
}
@@ -2063,7 +2060,6 @@ static int gfs2_glocks_release(struct inode *inode, struct file *file)
struct gfs2_glock_iter *gi = seq->private;
gi->gl = NULL;
- rhashtable_walk_exit(&gi->hti);
return seq_release_private(inode, file);
}
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
index dac6559e2195..cdd1c5f06f45 100644
--- a/fs/gfs2/glops.c
+++ b/fs/gfs2/glops.c
@@ -554,7 +554,7 @@ static void iopen_go_callback(struct gfs2_glock *gl, bool remote)
struct gfs2_inode *ip = gl->gl_object;
struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
- if (!remote || (sdp->sd_vfs->s_flags & MS_RDONLY))
+ if (!remote || sb_rdonly(sdp->sd_vfs))
return;
if (gl->gl_demote_state == LM_ST_UNLOCKED &&
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index 84593587691d..a3711f543405 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -1037,7 +1037,7 @@ void gfs2_online_uevent(struct gfs2_sbd *sdp)
char ro[20];
char spectator[20];
char *envp[] = { ro, spectator, NULL };
- sprintf(ro, "RDONLY=%d", (sb->s_flags & MS_RDONLY) ? 1 : 0);
+ sprintf(ro, "RDONLY=%d", sb_rdonly(sb));
sprintf(spectator, "SPECTATOR=%d", sdp->sd_args.ar_spectator ? 1 : 0);
kobject_uevent_env(&sdp->sd_kobj, KOBJ_ONLINE, envp);
}
@@ -1179,7 +1179,7 @@ static int fill_super(struct super_block *sb, struct gfs2_args *args, int silent
goto fail_per_node;
}
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
error = gfs2_make_fs_rw(sdp);
if (error) {
fs_err(sdp, "can't make FS RW: %d\n", error);
diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c
index e647938432bd..e700fb162664 100644
--- a/fs/gfs2/quota.c
+++ b/fs/gfs2/quota.c
@@ -452,7 +452,7 @@ static int qd_fish(struct gfs2_sbd *sdp, struct gfs2_quota_data **qdp)
*qdp = NULL;
- if (sdp->sd_vfs->s_flags & MS_RDONLY)
+ if (sb_rdonly(sdp->sd_vfs))
return 0;
spin_lock(&qd_lock);
diff --git a/fs/gfs2/recovery.c b/fs/gfs2/recovery.c
index 113b6095a58d..9395a3db1a60 100644
--- a/fs/gfs2/recovery.c
+++ b/fs/gfs2/recovery.c
@@ -522,7 +522,7 @@ void gfs2_recover_func(struct work_struct *work)
if (!test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags))
ro = 1;
} else {
- if (sdp->sd_vfs->s_flags & MS_RDONLY) {
+ if (sb_rdonly(sdp->sd_vfs)) {
/* check if device itself is read-only */
ro = bdev_read_only(sdp->sd_vfs->s_bdev);
if (!ro) {
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index 769841185ce5..8e54f2e3a304 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -893,7 +893,7 @@ restart:
}
spin_unlock(&sdp->sd_jindex_spin);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
error = gfs2_make_fs_ro(sdp);
if (error)
gfs2_io_error(sdp);
@@ -1569,7 +1569,7 @@ static void gfs2_evict_inode(struct inode *inode)
return;
}
- if (inode->i_nlink || (sb->s_flags & MS_RDONLY))
+ if (inode->i_nlink || sb_rdonly(sb))
goto out;
if (test_bit(GIF_ALLOC_FAILED, &ip->i_flags)) {
diff --git a/fs/gfs2/sys.c b/fs/gfs2/sys.c
index ca1f97ff898c..9eb9d0a1abd9 100644
--- a/fs/gfs2/sys.c
+++ b/fs/gfs2/sys.c
@@ -645,7 +645,7 @@ int gfs2_sys_fs_add(struct gfs2_sbd *sdp)
char *envp[] = { ro, spectator, NULL };
int sysfs_frees_sdp = 0;
- sprintf(ro, "RDONLY=%d", (sb->s_flags & MS_RDONLY) ? 1 : 0);
+ sprintf(ro, "RDONLY=%d", sb_rdonly(sb));
sprintf(spectator, "SPECTATOR=%d", sdp->sd_args.ar_spectator ? 1 : 0);
sdp->sd_kobj.kset = gfs2_kset;
diff --git a/fs/gfs2/trace_gfs2.h b/fs/gfs2/trace_gfs2.h
index 49ac55da4e33..2f159265693b 100644
--- a/fs/gfs2/trace_gfs2.h
+++ b/fs/gfs2/trace_gfs2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM gfs2
diff --git a/fs/hfs/attr.c b/fs/hfs/attr.c
index 0933600e11c8..74fa62643136 100644
--- a/fs/hfs/attr.c
+++ b/fs/hfs/attr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfs/attr.c
*
diff --git a/fs/hfs/bfind.c b/fs/hfs/bfind.c
index de69d8a24f6d..4af318fbda77 100644
--- a/fs/hfs/bfind.c
+++ b/fs/hfs/bfind.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfs/bfind.c
*
diff --git a/fs/hfs/bnode.c b/fs/hfs/bnode.c
index d77d844b668b..8aec5e732abf 100644
--- a/fs/hfs/bnode.c
+++ b/fs/hfs/bnode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfs/bnode.c
*
diff --git a/fs/hfs/brec.c b/fs/hfs/brec.c
index 6fc766df0461..ad04a5741016 100644
--- a/fs/hfs/brec.c
+++ b/fs/hfs/brec.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfs/brec.c
*
diff --git a/fs/hfs/btree.c b/fs/hfs/btree.c
index 37cdd955eceb..374b5688e29e 100644
--- a/fs/hfs/btree.c
+++ b/fs/hfs/btree.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfs/btree.c
*
diff --git a/fs/hfs/btree.h b/fs/hfs/btree.h
index f6bd266d70b5..c8b252dbb26c 100644
--- a/fs/hfs/btree.h
+++ b/fs/hfs/btree.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/hfs/btree.h
*
diff --git a/fs/hfs/mdb.c b/fs/hfs/mdb.c
index 482081bcdf70..894994d2c885 100644
--- a/fs/hfs/mdb.c
+++ b/fs/hfs/mdb.c
@@ -210,7 +210,7 @@ int hfs_mdb_get(struct super_block *sb)
pr_warn("filesystem is marked locked, mounting read-only.\n");
sb->s_flags |= MS_RDONLY;
}
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
/* Mark the volume uncleanly unmounted in case we crash */
attrib &= cpu_to_be16(~HFS_SB_ATTRIB_UNMNT);
attrib |= cpu_to_be16(HFS_SB_ATTRIB_INCNSTNT);
@@ -259,7 +259,7 @@ void hfs_mdb_commit(struct super_block *sb)
{
struct hfs_mdb *mdb = HFS_SB(sb)->mdb;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return;
lock_buffer(HFS_SB(sb)->mdb_bh);
@@ -334,7 +334,7 @@ void hfs_mdb_commit(struct super_block *sb)
void hfs_mdb_close(struct super_block *sb)
{
/* update volume attributes */
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return;
HFS_SB(sb)->mdb->drAtrb |= cpu_to_be16(HFS_SB_ATTRIB_UNMNT);
HFS_SB(sb)->mdb->drAtrb &= cpu_to_be16(~HFS_SB_ATTRIB_INCNSTNT);
diff --git a/fs/hfs/super.c b/fs/hfs/super.c
index bf6304a350a6..7e0d65e9586c 100644
--- a/fs/hfs/super.c
+++ b/fs/hfs/super.c
@@ -71,7 +71,7 @@ void hfs_mark_mdb_dirty(struct super_block *sb)
struct hfs_sb_info *sbi = HFS_SB(sb);
unsigned long delay;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return;
spin_lock(&sbi->work_lock);
@@ -115,7 +115,7 @@ static int hfs_remount(struct super_block *sb, int *flags, char *data)
{
sync_filesystem(sb);
*flags |= MS_NODIRATIME;
- if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
+ if ((bool)(*flags & MS_RDONLY) == sb_rdonly(sb))
return 0;
if (!(*flags & MS_RDONLY)) {
if (!(HFS_SB(sb)->mdb->drAtrb & cpu_to_be16(HFS_SB_ATTRIB_UNMNT))) {
diff --git a/fs/hfsplus/Makefile b/fs/hfsplus/Makefile
index 683fca2e5e65..f6a56542f8d7 100644
--- a/fs/hfsplus/Makefile
+++ b/fs/hfsplus/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
## Makefile for the linux hfsplus filesystem routines.
#
diff --git a/fs/hfsplus/acl.h b/fs/hfsplus/acl.h
index 95c8ed9ec17f..488c2b75cf41 100644
--- a/fs/hfsplus/acl.h
+++ b/fs/hfsplus/acl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/hfsplus/acl.h
*
diff --git a/fs/hfsplus/attributes.c b/fs/hfsplus/attributes.c
index e5b221de7de6..2bab6b3cdba4 100644
--- a/fs/hfsplus/attributes.c
+++ b/fs/hfsplus/attributes.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/attributes.c
*
diff --git a/fs/hfsplus/bfind.c b/fs/hfsplus/bfind.c
index 528e38b5af7f..ca2ba8c9f82e 100644
--- a/fs/hfsplus/bfind.c
+++ b/fs/hfsplus/bfind.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/bfind.c
*
diff --git a/fs/hfsplus/bitmap.c b/fs/hfsplus/bitmap.c
index c0ae274c0a22..cebce0cfe340 100644
--- a/fs/hfsplus/bitmap.c
+++ b/fs/hfsplus/bitmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/bitmap.c
*
diff --git a/fs/hfsplus/bnode.c b/fs/hfsplus/bnode.c
index ce014ceb89ef..d77015c3f22c 100644
--- a/fs/hfsplus/bnode.c
+++ b/fs/hfsplus/bnode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/bnode.c
*
diff --git a/fs/hfsplus/brec.c b/fs/hfsplus/brec.c
index 754fdf8c6356..808f4d8c859c 100644
--- a/fs/hfsplus/brec.c
+++ b/fs/hfsplus/brec.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/brec.c
*
diff --git a/fs/hfsplus/btree.c b/fs/hfsplus/btree.c
index d9d1a36ba826..de14b2b6881b 100644
--- a/fs/hfsplus/btree.c
+++ b/fs/hfsplus/btree.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/btree.c
*
diff --git a/fs/hfsplus/catalog.c b/fs/hfsplus/catalog.c
index a5e00f7a4c14..a196369ba779 100644
--- a/fs/hfsplus/catalog.c
+++ b/fs/hfsplus/catalog.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/catalog.c
*
diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c
index 31d5e3f1fe17..e8120a282435 100644
--- a/fs/hfsplus/dir.c
+++ b/fs/hfsplus/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/dir.c
*
diff --git a/fs/hfsplus/extents.c b/fs/hfsplus/extents.c
index a3eb640b4f8f..e8770935ce6d 100644
--- a/fs/hfsplus/extents.c
+++ b/fs/hfsplus/extents.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/extents.c
*
diff --git a/fs/hfsplus/hfsplus_fs.h b/fs/hfsplus/hfsplus_fs.h
index a3f03b247463..a015044daa05 100644
--- a/fs/hfsplus/hfsplus_fs.h
+++ b/fs/hfsplus/hfsplus_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/hfsplus_fs.h
*
diff --git a/fs/hfsplus/hfsplus_raw.h b/fs/hfsplus/hfsplus_raw.h
index 8298d0985f81..456e87aec7fd 100644
--- a/fs/hfsplus/hfsplus_raw.h
+++ b/fs/hfsplus/hfsplus_raw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/hfsplus_raw.h
*
diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c
index 4f26b6877130..190c60efbc99 100644
--- a/fs/hfsplus/inode.c
+++ b/fs/hfsplus/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/inode.c
*
diff --git a/fs/hfsplus/ioctl.c b/fs/hfsplus/ioctl.c
index 0a156d84e67d..5e6502ef7415 100644
--- a/fs/hfsplus/ioctl.c
+++ b/fs/hfsplus/ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/ioctl.c
*
diff --git a/fs/hfsplus/options.c b/fs/hfsplus/options.c
index bb806e58c977..047e05c57560 100644
--- a/fs/hfsplus/options.c
+++ b/fs/hfsplus/options.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/options.c
*
diff --git a/fs/hfsplus/posix_acl.c b/fs/hfsplus/posix_acl.c
index 6bb5d7c42888..066114dcc3a2 100644
--- a/fs/hfsplus/posix_acl.c
+++ b/fs/hfsplus/posix_acl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/posix_acl.c
*
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c
index 67aedf4c2e7c..e5bb2de2262a 100644
--- a/fs/hfsplus/super.c
+++ b/fs/hfsplus/super.c
@@ -264,7 +264,7 @@ void hfsplus_mark_mdb_dirty(struct super_block *sb)
struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb);
unsigned long delay;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return;
spin_lock(&sbi->work_lock);
@@ -284,7 +284,7 @@ static void hfsplus_put_super(struct super_block *sb)
cancel_delayed_work_sync(&sbi->sync_work);
- if (!(sb->s_flags & MS_RDONLY) && sbi->s_vhdr) {
+ if (!sb_rdonly(sb) && sbi->s_vhdr) {
struct hfsplus_vh *vhdr = sbi->s_vhdr;
vhdr->modify_date = hfsp_now2mt();
@@ -329,7 +329,7 @@ static int hfsplus_statfs(struct dentry *dentry, struct kstatfs *buf)
static int hfsplus_remount(struct super_block *sb, int *flags, char *data)
{
sync_filesystem(sb);
- if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
+ if ((bool)(*flags & MS_RDONLY) == sb_rdonly(sb))
return 0;
if (!(*flags & MS_RDONLY)) {
struct hfsplus_vh *vhdr = HFSPLUS_SB(sb)->s_vhdr;
@@ -462,7 +462,7 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent)
pr_warn("Filesystem is marked locked, mounting read-only.\n");
sb->s_flags |= MS_RDONLY;
} else if ((vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_JOURNALED)) &&
- !(sb->s_flags & MS_RDONLY)) {
+ !sb_rdonly(sb)) {
pr_warn("write access to a journaled filesystem is not supported, use the force option at your own risk, mounting read-only.\n");
sb->s_flags |= MS_RDONLY;
}
@@ -535,7 +535,7 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent)
} else
hfs_find_exit(&fd);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
/*
* H+LX == hfsplusutils, H+Lx == this driver, H+lx is unused
* all three are registered with Apple for our use
diff --git a/fs/hfsplus/tables.c b/fs/hfsplus/tables.c
index 1b911730a0c1..a5fb8ee7d019 100644
--- a/fs/hfsplus/tables.c
+++ b/fs/hfsplus/tables.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/tables.c
*
diff --git a/fs/hfsplus/unicode.c b/fs/hfsplus/unicode.c
index e563939882f3..dfa90c21948f 100644
--- a/fs/hfsplus/unicode.c
+++ b/fs/hfsplus/unicode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/unicode.c
*
diff --git a/fs/hfsplus/wrapper.c b/fs/hfsplus/wrapper.c
index 10032b919a85..08c1580bdf7a 100644
--- a/fs/hfsplus/wrapper.c
+++ b/fs/hfsplus/wrapper.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/wrapper.c
*
diff --git a/fs/hfsplus/xattr.c b/fs/hfsplus/xattr.c
index d37bb88dc746..e538b758c448 100644
--- a/fs/hfsplus/xattr.c
+++ b/fs/hfsplus/xattr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/xattr.c
*
diff --git a/fs/hfsplus/xattr.h b/fs/hfsplus/xattr.h
index 68f6b539371f..a4e611d69710 100644
--- a/fs/hfsplus/xattr.h
+++ b/fs/hfsplus/xattr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/hfsplus/xattr.h
*
diff --git a/fs/hfsplus/xattr_security.c b/fs/hfsplus/xattr_security.c
index 37b3efa733ef..f5550b006e88 100644
--- a/fs/hfsplus/xattr_security.c
+++ b/fs/hfsplus/xattr_security.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/xattr_trusted.c
*
diff --git a/fs/hfsplus/xattr_trusted.c b/fs/hfsplus/xattr_trusted.c
index 94519d6c627d..fbad91e1dada 100644
--- a/fs/hfsplus/xattr_trusted.c
+++ b/fs/hfsplus/xattr_trusted.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/xattr_trusted.c
*
diff --git a/fs/hfsplus/xattr_user.c b/fs/hfsplus/xattr_user.c
index fae6c0ea0030..74d19faf255e 100644
--- a/fs/hfsplus/xattr_user.c
+++ b/fs/hfsplus/xattr_user.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hfsplus/xattr_user.c
*
diff --git a/fs/hostfs/hostfs.h b/fs/hostfs/hostfs.h
index 91e19f9dffe5..ffaec2e7526c 100644
--- a/fs/hostfs/hostfs.h
+++ b/fs/hostfs/hostfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UM_FS_HOSTFS
#define __UM_FS_HOSTFS
diff --git a/fs/hpfs/alloc.c b/fs/hpfs/alloc.c
index d6a4b55d2ab0..66617b1557c6 100644
--- a/fs/hpfs/alloc.c
+++ b/fs/hpfs/alloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/alloc.c
*
@@ -538,7 +539,7 @@ int hpfs_trim_fs(struct super_block *s, u64 start, u64 end, u64 minlen, unsigned
return 0;
if (start < sbi->sb_dirband_start + sbi->sb_dirband_size && end > sbi->sb_dirband_start) {
hpfs_lock(s);
- if (s->s_flags & MS_RDONLY) {
+ if (sb_rdonly(s)) {
err = -EROFS;
goto unlock_1;
}
@@ -559,7 +560,7 @@ unlock_1:
end_bmp = (end + 0x3fff) >> 14;
while (start_bmp < end_bmp && !err) {
hpfs_lock(s);
- if (s->s_flags & MS_RDONLY) {
+ if (sb_rdonly(s)) {
err = -EROFS;
goto unlock_2;
}
diff --git a/fs/hpfs/anode.c b/fs/hpfs/anode.c
index 2d5b254ad9e2..c14c9a035ee0 100644
--- a/fs/hpfs/anode.c
+++ b/fs/hpfs/anode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/anode.c
*
diff --git a/fs/hpfs/buffer.c b/fs/hpfs/buffer.c
index f626114449e4..e285d6b3bba4 100644
--- a/fs/hpfs/buffer.c
+++ b/fs/hpfs/buffer.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/buffer.c
*
diff --git a/fs/hpfs/dentry.c b/fs/hpfs/dentry.c
index bb87d65f0d97..89a36fdc68cb 100644
--- a/fs/hpfs/dentry.c
+++ b/fs/hpfs/dentry.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/dentry.c
*
diff --git a/fs/hpfs/dir.c b/fs/hpfs/dir.c
index 7b9150c2e75c..8d6b7e35faf9 100644
--- a/fs/hpfs/dir.c
+++ b/fs/hpfs/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/dir.c
*
@@ -264,7 +265,7 @@ struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, unsigned in
hpfs_result = hpfs_i(result);
if (!de->directory) hpfs_result->i_parent_dir = dir->i_ino;
- if (de->has_acl || de->has_xtd_perm) if (!(dir->i_sb->s_flags & MS_RDONLY)) {
+ if (de->has_acl || de->has_xtd_perm) if (!sb_rdonly(dir->i_sb)) {
hpfs_error(result->i_sb, "ACLs or XPERM found. This is probably HPFS386. This driver doesn't support it now. Send me some info on these structures");
goto bail1;
}
diff --git a/fs/hpfs/dnode.c b/fs/hpfs/dnode.c
index 86ab7e790b4e..3b834563b1f1 100644
--- a/fs/hpfs/dnode.c
+++ b/fs/hpfs/dnode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/dnode.c
*
diff --git a/fs/hpfs/ea.c b/fs/hpfs/ea.c
index ce3f98ba993a..102ba18e561f 100644
--- a/fs/hpfs/ea.c
+++ b/fs/hpfs/ea.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/ea.c
*
diff --git a/fs/hpfs/file.c b/fs/hpfs/file.c
index f26138425b16..1ecec124e76f 100644
--- a/fs/hpfs/file.c
+++ b/fs/hpfs/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/file.c
*
diff --git a/fs/hpfs/hpfs.h b/fs/hpfs/hpfs.h
index cce025aff1b1..823a328791c0 100644
--- a/fs/hpfs/hpfs.h
+++ b/fs/hpfs/hpfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/hpfs/hpfs.h
*
diff --git a/fs/hpfs/hpfs_fn.h b/fs/hpfs/hpfs_fn.h
index d352f3a6af7f..2577ef1034ef 100644
--- a/fs/hpfs/hpfs_fn.h
+++ b/fs/hpfs/hpfs_fn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/hpfs/hpfs_fn.h
*
diff --git a/fs/hpfs/inode.c b/fs/hpfs/inode.c
index b9c724ed1e7e..eb8b4baf0f2e 100644
--- a/fs/hpfs/inode.c
+++ b/fs/hpfs/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/inode.c
*
diff --git a/fs/hpfs/map.c b/fs/hpfs/map.c
index a136929189f0..e0e60b148400 100644
--- a/fs/hpfs/map.c
+++ b/fs/hpfs/map.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/map.c
*
diff --git a/fs/hpfs/name.c b/fs/hpfs/name.c
index b00d396d22c6..ef7ba77f36b8 100644
--- a/fs/hpfs/name.c
+++ b/fs/hpfs/name.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/name.c
*
diff --git a/fs/hpfs/namei.c b/fs/hpfs/namei.c
index f30c14414518..a3615e4c730d 100644
--- a/fs/hpfs/namei.c
+++ b/fs/hpfs/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/hpfs/namei.c
*
diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c
index 82067ca22f2b..1516fb4e28f4 100644
--- a/fs/hpfs/super.c
+++ b/fs/hpfs/super.c
@@ -21,7 +21,7 @@
static void mark_dirty(struct super_block *s, int remount)
{
- if (hpfs_sb(s)->sb_chkdsk && (remount || !(s->s_flags & MS_RDONLY))) {
+ if (hpfs_sb(s)->sb_chkdsk && (remount || !sb_rdonly(s))) {
struct buffer_head *bh;
struct hpfs_spare_block *sb;
if ((sb = hpfs_map_sector(s, 17, &bh, 0))) {
@@ -41,7 +41,7 @@ static void unmark_dirty(struct super_block *s)
{
struct buffer_head *bh;
struct hpfs_spare_block *sb;
- if (s->s_flags & MS_RDONLY) return;
+ if (sb_rdonly(s)) return;
sync_blockdev(s->s_bdev);
if ((sb = hpfs_map_sector(s, 17, &bh, 0))) {
sb->dirty = hpfs_sb(s)->sb_chkdsk > 1 - hpfs_sb(s)->sb_was_error;
@@ -73,14 +73,14 @@ void hpfs_error(struct super_block *s, const char *fmt, ...)
mark_dirty(s, 0);
panic("HPFS panic");
} else if (hpfs_sb(s)->sb_err == 1) {
- if (s->s_flags & MS_RDONLY)
+ if (sb_rdonly(s))
pr_cont("; already mounted read-only\n");
else {
pr_cont("; remounting read-only\n");
mark_dirty(s, 0);
s->s_flags |= MS_RDONLY;
}
- } else if (s->s_flags & MS_RDONLY)
+ } else if (sb_rdonly(s))
pr_cont("; going on - but anything won't be destroyed because it's read-only\n");
else
pr_cont("; corrupted filesystem mounted read/write - your computer will explode within 20 seconds ... but you wanted it so!\n");
@@ -607,8 +607,7 @@ static int hpfs_fill_super(struct super_block *s, void *options, int silent)
}
/* Check version */
- if (!(s->s_flags & MS_RDONLY) &&
- superblock->funcversion != 2 && superblock->funcversion != 3) {
+ if (!sb_rdonly(s) && superblock->funcversion != 2 && superblock->funcversion != 3) {
pr_err("Bad version %d,%d. Mount readonly to go around\n",
(int)superblock->version, (int)superblock->funcversion);
pr_err("please try recent version of HPFS driver at http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi and if it still can't understand this format, contact author - mikulas@artax.karlin.mff.cuni.cz\n");
@@ -666,7 +665,7 @@ static int hpfs_fill_super(struct super_block *s, void *options, int silent)
hpfs_error(s, "improperly stopped");
}
- if (!(s->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(s)) {
spareblock->dirty = 1;
spareblock->old_wrote = 0;
mark_buffer_dirty(bh2);
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 59073e9f01a4..ed113ea17aff 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -842,9 +842,12 @@ static int hugetlbfs_error_remove_page(struct address_space *mapping,
struct page *page)
{
struct inode *inode = mapping->host;
+ pgoff_t index = page->index;
remove_huge_page(page);
- hugetlb_fix_reserve_counts(inode);
+ if (unlikely(hugetlb_unreserve_pages(inode, index, index + 1, 1)))
+ hugetlb_fix_reserve_counts(inode);
+
return 0;
}
diff --git a/fs/ioctl.c b/fs/ioctl.c
index 569db68d02b3..5ace7efb0d04 100644
--- a/fs/ioctl.c
+++ b/fs/ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ioctl.c
*
diff --git a/fs/iomap.c b/fs/iomap.c
index 269b24a01f32..d4801f8dd4fd 100644
--- a/fs/iomap.c
+++ b/fs/iomap.c
@@ -713,6 +713,8 @@ struct iomap_dio {
static ssize_t iomap_dio_complete(struct iomap_dio *dio)
{
struct kiocb *iocb = dio->iocb;
+ struct inode *inode = file_inode(iocb->ki_filp);
+ loff_t offset = iocb->ki_pos;
ssize_t ret;
if (dio->end_io) {
@@ -726,12 +728,33 @@ static ssize_t iomap_dio_complete(struct iomap_dio *dio)
if (likely(!ret)) {
ret = dio->size;
/* check for short read */
- if (iocb->ki_pos + ret > dio->i_size &&
+ if (offset + ret > dio->i_size &&
!(dio->flags & IOMAP_DIO_WRITE))
- ret = dio->i_size - iocb->ki_pos;
+ ret = dio->i_size - offset;
iocb->ki_pos += ret;
}
+ /*
+ * Try again to invalidate clean pages which might have been cached by
+ * non-direct readahead, or faulted in by get_user_pages() if the source
+ * of the write was an mmap'ed region of the file we're writing. Either
+ * one is a pretty crazy thing to do, so we don't support it 100%. If
+ * this invalidation fails, tough, the write still worked...
+ *
+ * And this page cache invalidation has to be after dio->end_io(), as
+ * some filesystems convert unwritten extents to real allocations in
+ * end_io() when necessary, otherwise a racing buffer read would cache
+ * zeros from unwritten extents.
+ */
+ if (!dio->error &&
+ (dio->flags & IOMAP_DIO_WRITE) && inode->i_mapping->nrpages) {
+ int err;
+ err = invalidate_inode_pages2_range(inode->i_mapping,
+ offset >> PAGE_SHIFT,
+ (offset + dio->size - 1) >> PAGE_SHIFT);
+ WARN_ON_ONCE(err);
+ }
+
inode_dio_end(file_inode(iocb->ki_filp));
kfree(dio);
@@ -993,6 +1016,13 @@ iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter,
WARN_ON_ONCE(ret);
ret = 0;
+ if (iov_iter_rw(iter) == WRITE && !is_sync_kiocb(iocb) &&
+ !inode->i_sb->s_dio_done_wq) {
+ ret = sb_init_dio_done_wq(inode->i_sb);
+ if (ret < 0)
+ goto out_free_dio;
+ }
+
inode_dio_begin(inode);
blk_start_plug(&plug);
@@ -1015,13 +1045,6 @@ iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter,
if (ret < 0)
iomap_dio_set_error(dio, ret);
- if (ret >= 0 && iov_iter_rw(iter) == WRITE && !is_sync_kiocb(iocb) &&
- !inode->i_sb->s_dio_done_wq) {
- ret = sb_init_dio_done_wq(inode->i_sb);
- if (ret < 0)
- iomap_dio_set_error(dio, ret);
- }
-
if (!atomic_dec_and_test(&dio->ref)) {
if (!is_sync_kiocb(iocb))
return -EIOCBQUEUED;
@@ -1042,19 +1065,6 @@ iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter,
ret = iomap_dio_complete(dio);
- /*
- * Try again to invalidate clean pages which might have been cached by
- * non-direct readahead, or faulted in by get_user_pages() if the source
- * of the write was an mmap'ed region of the file we're writing. Either
- * one is a pretty crazy thing to do, so we don't support it 100%. If
- * this invalidation fails, tough, the write still worked...
- */
- if (iov_iter_rw(iter) == WRITE) {
- int err = invalidate_inode_pages2_range(mapping,
- start >> PAGE_SHIFT, end >> PAGE_SHIFT);
- WARN_ON_ONCE(err);
- }
-
return ret;
out_free_dio:
diff --git a/fs/isofs/Makefile b/fs/isofs/Makefile
index bf162f0942d5..6498fd2b0f60 100644
--- a/fs/isofs/Makefile
+++ b/fs/isofs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux isofs filesystem routines.
#
diff --git a/fs/isofs/dir.c b/fs/isofs/dir.c
index e7599615e4e0..947ce22f5b3c 100644
--- a/fs/isofs/dir.c
+++ b/fs/isofs/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/isofs/dir.c
*
diff --git a/fs/isofs/export.c b/fs/isofs/export.c
index 0c5f721b4e91..85a9093769a9 100644
--- a/fs/isofs/export.c
+++ b/fs/isofs/export.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/isofs/export.c
*
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
index f1ed935322db..447a24d77b89 100644
--- a/fs/isofs/inode.c
+++ b/fs/isofs/inode.c
@@ -514,9 +514,11 @@ static int isofs_show_options(struct seq_file *m, struct dentry *root)
if (sbi->s_fmode != ISOFS_INVALID_MODE)
seq_printf(m, ",fmode=%o", sbi->s_fmode);
+#ifdef CONFIG_JOLIET
if (sbi->s_nls_iocharset &&
strcmp(sbi->s_nls_iocharset->charset, CONFIG_NLS_DEFAULT) != 0)
seq_printf(m, ",iocharset=%s", sbi->s_nls_iocharset->charset);
+#endif
return 0;
}
@@ -737,7 +739,7 @@ static int isofs_fill_super(struct super_block *s, void *data, int silent)
root_found:
/* We don't support read-write mounts */
- if (!(s->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(s)) {
error = -EACCES;
goto out_freebh;
}
diff --git a/fs/isofs/isofs.h b/fs/isofs/isofs.h
index 133a456b0425..57d4c3e2e94a 100644
--- a/fs/isofs/isofs.h
+++ b/fs/isofs/isofs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/fs.h>
#include <linux/buffer_head.h>
#include <linux/exportfs.h>
diff --git a/fs/isofs/joliet.c b/fs/isofs/joliet.c
index a048de81c093..be8b6a9d0b92 100644
--- a/fs/isofs/joliet.c
+++ b/fs/isofs/joliet.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/isofs/joliet.c
*
diff --git a/fs/isofs/namei.c b/fs/isofs/namei.c
index aee592767f1d..cac468f04820 100644
--- a/fs/isofs/namei.c
+++ b/fs/isofs/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/isofs/namei.c
*
diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c
index 0ec137310320..94ef92fe806c 100644
--- a/fs/isofs/rock.c
+++ b/fs/isofs/rock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/isofs/rock.c
*
diff --git a/fs/isofs/rock.h b/fs/isofs/rock.h
index ed09e2b08637..ef03625431bb 100644
--- a/fs/isofs/rock.h
+++ b/fs/isofs/rock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* These structs are used by the system-use-sharing protocol, in which the
* Rock Ridge extensions are embedded. It is quite possible that other
diff --git a/fs/isofs/util.c b/fs/isofs/util.c
index 005a15cfd30a..42544bf0e222 100644
--- a/fs/isofs/util.c
+++ b/fs/isofs/util.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/isofs/util.c
*/
diff --git a/fs/jffs2/Makefile b/fs/jffs2/Makefile
index 60e5d49ca03e..5294969d5bf9 100644
--- a/fs/jffs2/Makefile
+++ b/fs/jffs2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux Journalling Flash File System v2 (JFFS2)
#
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c
index 76fa814df3d1..e96c6b05e43e 100644
--- a/fs/jffs2/fs.c
+++ b/fs/jffs2/fs.c
@@ -395,14 +395,14 @@ int jffs2_do_remount_fs(struct super_block *sb, int *flags, char *data)
{
struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
- if (c->flags & JFFS2_SB_FLAG_RO && !(sb->s_flags & MS_RDONLY))
+ if (c->flags & JFFS2_SB_FLAG_RO && !sb_rdonly(sb))
return -EROFS;
/* We stop if it was running, then restart if it needs to.
This also catches the case where it was stopped and this
is just a remount to restart it.
Flush the writebuffer, if neccecary, else we loose it */
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
jffs2_stop_garbage_collect_thread(c);
mutex_lock(&c->alloc_sem);
jffs2_flush_wbuf_pad(c);
@@ -590,7 +590,7 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)
sb->s_blocksize = PAGE_SIZE;
sb->s_blocksize_bits = PAGE_SHIFT;
sb->s_magic = JFFS2_SUPER_MAGIC;
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
jffs2_start_garbage_collect_thread(c);
return 0;
diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c
index 5ef21f4c4c77..153f1c6eb169 100644
--- a/fs/jffs2/super.c
+++ b/fs/jffs2/super.c
@@ -342,7 +342,7 @@ static void jffs2_put_super (struct super_block *sb)
static void jffs2_kill_sb(struct super_block *sb)
{
struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
jffs2_stop_garbage_collect_thread(c);
kill_mtd_super(sb);
kfree(c);
diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c
index 48d9522e209c..2cfe487708e0 100644
--- a/fs/jffs2/wbuf.c
+++ b/fs/jffs2/wbuf.c
@@ -1162,7 +1162,7 @@ static void delayed_wbuf_sync(struct work_struct *work)
struct jffs2_sb_info *c = work_to_sb(work);
struct super_block *sb = OFNI_BS_2SFFJ(c);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
jffs2_dbg(1, "%s()\n", __func__);
jffs2_flush_wbuf_gc(c, 0);
}
@@ -1173,7 +1173,7 @@ void jffs2_dirty_trigger(struct jffs2_sb_info *c)
struct super_block *sb = OFNI_BS_2SFFJ(c);
unsigned long delay;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return;
delay = msecs_to_jiffies(dirty_writeback_interval * 10);
diff --git a/fs/jfs/Makefile b/fs/jfs/Makefile
index d20d4737b3ef..285ec189ed5c 100644
--- a/fs/jfs/Makefile
+++ b/fs/jfs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux JFS filesystem routines.
#
diff --git a/fs/jfs/ioctl.c b/fs/jfs/ioctl.c
index 5c5ac5b3aec3..ba34dae8bd9f 100644
--- a/fs/jfs/ioctl.c
+++ b/fs/jfs/ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/jfs/ioctl.c
*
diff --git a/fs/jfs/jfs_mount.c b/fs/jfs/jfs_mount.c
index 9895595fd2f2..d8658607bf46 100644
--- a/fs/jfs/jfs_mount.c
+++ b/fs/jfs/jfs_mount.c
@@ -362,7 +362,7 @@ static int chkSuper(struct super_block *sb)
/* validate fs state */
if (j_sb->s_state != cpu_to_le32(FM_CLEAN) &&
- !(sb->s_flags & MS_RDONLY)) {
+ !sb_rdonly(sb)) {
jfs_err("jfs_mount: Mount Failure: File System Dirty.");
rc = -EINVAL;
goto out;
diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index 60726ae7cf26..2f14677169c3 100644
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -76,7 +76,7 @@ static void jfs_handle_error(struct super_block *sb)
{
struct jfs_sb_info *sbi = JFS_SBI(sb);
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return;
updateSuper(sb, FM_DIRTY);
@@ -468,7 +468,7 @@ static int jfs_remount(struct super_block *sb, int *flags, char *data)
return -EINVAL;
if (newLVSize) {
- if (sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(sb)) {
pr_err("JFS: resize requires volume to be mounted read-write\n");
return -EROFS;
}
@@ -477,7 +477,7 @@ static int jfs_remount(struct super_block *sb, int *flags, char *data)
return rc;
}
- if ((sb->s_flags & MS_RDONLY) && !(*flags & MS_RDONLY)) {
+ if (sb_rdonly(sb) && !(*flags & MS_RDONLY)) {
/*
* Invalidate any previously read metadata. fsck may have
* changed the on-disk data since we mounted r/o
@@ -493,7 +493,7 @@ static int jfs_remount(struct super_block *sb, int *flags, char *data)
dquot_resume(sb, -1);
return ret;
}
- if ((!(sb->s_flags & MS_RDONLY)) && (*flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb) && (*flags & MS_RDONLY)) {
rc = dquot_suspend(sb, -1);
if (rc < 0)
return rc;
@@ -502,7 +502,7 @@ static int jfs_remount(struct super_block *sb, int *flags, char *data)
return rc;
}
if ((JFS_SBI(sb)->flag & JFS_NOINTEGRITY) != (flag & JFS_NOINTEGRITY))
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
rc = jfs_umount_rw(sb);
if (rc)
return rc;
@@ -592,7 +592,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
jfs_err("jfs_mount failed w/return code = %d", rc);
goto out_mount_failed;
}
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
sbi->log = NULL;
else {
rc = jfs_mount_rw(sb, 0);
@@ -652,7 +652,7 @@ static int jfs_freeze(struct super_block *sb)
struct jfs_log *log = sbi->log;
int rc = 0;
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
txQuiesce(sb);
rc = lmLogShutdown(log);
if (rc) {
@@ -682,7 +682,7 @@ static int jfs_unfreeze(struct super_block *sb)
struct jfs_log *log = sbi->log;
int rc = 0;
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
rc = updateSuper(sb, FM_MOUNT);
if (rc) {
jfs_error(sb, "updateSuper failed\n");
diff --git a/fs/lockd/Makefile b/fs/lockd/Makefile
index 9b320cc2a8cf..6d5e83ed4476 100644
--- a/fs/lockd/Makefile
+++ b/fs/lockd/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux lock manager stuff
#
diff --git a/fs/lockd/clnt4xdr.c b/fs/lockd/clnt4xdr.c
index c349fc0f9b80..00d5ef5f99f7 100644
--- a/fs/lockd/clnt4xdr.c
+++ b/fs/lockd/clnt4xdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/lockd/clnt4xdr.c
*
diff --git a/fs/lockd/clntxdr.c b/fs/lockd/clntxdr.c
index 3b4724a6c4ee..2c6176387143 100644
--- a/fs/lockd/clntxdr.c
+++ b/fs/lockd/clntxdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/lockd/clntxdr.c
*
diff --git a/fs/lockd/host.c b/fs/lockd/host.c
index d716c9993a26..0d4e590e0549 100644
--- a/fs/lockd/host.c
+++ b/fs/lockd/host.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/lockd/host.c
*
diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
index 9d8166c39c54..9fbbd11f9ecb 100644
--- a/fs/lockd/mon.c
+++ b/fs/lockd/mon.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/lockd/mon.c
*
diff --git a/fs/lockd/netns.h b/fs/lockd/netns.h
index fb8cac88251a..5bec78c8e431 100644
--- a/fs/lockd/netns.h
+++ b/fs/lockd/netns.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LOCKD_NETNS_H__
#define __LOCKD_NETNS_H__
diff --git a/fs/lockd/procfs.c b/fs/lockd/procfs.c
index 8f72cb237ef3..ca9228a56d65 100644
--- a/fs/lockd/procfs.c
+++ b/fs/lockd/procfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Procfs support for lockd
*
diff --git a/fs/lockd/procfs.h b/fs/lockd/procfs.h
index 184a15edd18d..ba9a82f4ce28 100644
--- a/fs/lockd/procfs.h
+++ b/fs/lockd/procfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Procfs support for lockd
*
diff --git a/fs/lockd/svc4proc.c b/fs/lockd/svc4proc.c
index 82925f17ec45..1bddf70d9656 100644
--- a/fs/lockd/svc4proc.c
+++ b/fs/lockd/svc4proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/lockd/svc4proc.c
*
diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c
index 3507c80d1d4b..3701bccab478 100644
--- a/fs/lockd/svclock.c
+++ b/fs/lockd/svclock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/lockd/svclock.c
*
diff --git a/fs/lockd/svcproc.c b/fs/lockd/svcproc.c
index 07915162581d..0d670c5c378f 100644
--- a/fs/lockd/svcproc.c
+++ b/fs/lockd/svcproc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/lockd/svcproc.c
*
diff --git a/fs/lockd/svcshare.c b/fs/lockd/svcshare.c
index b0ae07008700..ade4931b2da2 100644
--- a/fs/lockd/svcshare.c
+++ b/fs/lockd/svcshare.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/lockd/svcshare.c
*
diff --git a/fs/lockd/xdr.c b/fs/lockd/xdr.c
index 442bbd0b0b29..7147e4aebecc 100644
--- a/fs/lockd/xdr.c
+++ b/fs/lockd/xdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/lockd/xdr.c
*
diff --git a/fs/lockd/xdr4.c b/fs/lockd/xdr4.c
index 2a0cd5679c49..7ed9edf9aed4 100644
--- a/fs/lockd/xdr4.c
+++ b/fs/lockd/xdr4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/lockd/xdr4.c
*
diff --git a/fs/minix/bitmap.c b/fs/minix/bitmap.c
index c2c3fd3277b5..f4e5e5181a14 100644
--- a/fs/minix/bitmap.c
+++ b/fs/minix/bitmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/minix/bitmap.c
*
diff --git a/fs/minix/dir.c b/fs/minix/dir.c
index baa9721f1299..dcfe5b25378b 100644
--- a/fs/minix/dir.c
+++ b/fs/minix/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/minix/dir.c
*
diff --git a/fs/minix/file.c b/fs/minix/file.c
index a6a4797aa0d4..c50b0a20fcd9 100644
--- a/fs/minix/file.c
+++ b/fs/minix/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/minix/file.c
*
diff --git a/fs/minix/inode.c b/fs/minix/inode.c
index 6ac76b0434e9..b6829d679643 100644
--- a/fs/minix/inode.c
+++ b/fs/minix/inode.c
@@ -42,7 +42,7 @@ static void minix_put_super(struct super_block *sb)
int i;
struct minix_sb_info *sbi = minix_sb(sb);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (sbi->s_version != MINIX_V3) /* s_state is now out from V3 sb */
sbi->s_ms->s_state = sbi->s_mount_state;
mark_buffer_dirty(sbi->s_sbh);
@@ -125,7 +125,7 @@ static int minix_remount (struct super_block * sb, int * flags, char * data)
sync_filesystem(sb);
ms = sbi->s_ms;
- if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
+ if ((bool)(*flags & MS_RDONLY) == sb_rdonly(sb))
return 0;
if (*flags & MS_RDONLY) {
if (ms->s_state & MINIX_VALID_FS ||
@@ -293,7 +293,7 @@ static int minix_fill_super(struct super_block *s, void *data, int silent)
if (!s->s_root)
goto out_no_root;
- if (!(s->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(s)) {
if (sbi->s_version != MINIX_V3) /* s_state is now out from V3 sb */
ms->s_state &= ~MINIX_VALID_FS;
mark_buffer_dirty(bh);
diff --git a/fs/minix/itree_common.c b/fs/minix/itree_common.c
index 2d1ca08870f7..043c3fdbc8e7 100644
--- a/fs/minix/itree_common.c
+++ b/fs/minix/itree_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Generic part */
typedef struct {
diff --git a/fs/minix/itree_v1.c b/fs/minix/itree_v1.c
index 46ca39d6c735..046cc96ee7ad 100644
--- a/fs/minix/itree_v1.c
+++ b/fs/minix/itree_v1.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/buffer_head.h>
#include <linux/slab.h>
#include "minix.h"
diff --git a/fs/minix/itree_v2.c b/fs/minix/itree_v2.c
index 1ee101352586..f7fc7ecccccc 100644
--- a/fs/minix/itree_v2.c
+++ b/fs/minix/itree_v2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/buffer_head.h>
#include "minix.h"
diff --git a/fs/minix/minix.h b/fs/minix/minix.h
index 663d66138d06..df081e8afcc3 100644
--- a/fs/minix/minix.h
+++ b/fs/minix/minix.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef FS_MINIX_H
#define FS_MINIX_H
diff --git a/fs/minix/namei.c b/fs/minix/namei.c
index 1e0f11f5dac9..ccf0f00030bf 100644
--- a/fs/minix/namei.c
+++ b/fs/minix/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/minix/namei.c
*
diff --git a/fs/mount.h b/fs/mount.h
index 6790767d1883..f39bc9da4d73 100644
--- a/fs/mount.h
+++ b/fs/mount.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/mount.h>
#include <linux/seq_file.h>
#include <linux/poll.h>
diff --git a/fs/mpage.c b/fs/mpage.c
index 37bb77c1302c..b7e7f570733a 100644
--- a/fs/mpage.c
+++ b/fs/mpage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/mpage.c
*
@@ -468,6 +469,16 @@ static void clean_buffers(struct page *page, unsigned first_unmapped)
try_to_free_buffers(page);
}
+/*
+ * For situations where we want to clean all buffers attached to a page.
+ * We don't need to calculate how many buffers are attached to the page,
+ * we just need to specify a number larger than the maximum number of buffers.
+ */
+void clean_page_buffers(struct page *page)
+{
+ clean_buffers(page, ~0U);
+}
+
static int __mpage_writepage(struct page *page, struct writeback_control *wbc,
void *data)
{
@@ -605,10 +616,8 @@ alloc_new:
if (bio == NULL) {
if (first_unmapped == blocks_per_page) {
if (!bdev_write_page(bdev, blocks[0] << (blkbits - 9),
- page, wbc)) {
- clean_buffers(page, first_unmapped);
+ page, wbc))
goto out;
- }
}
bio = mpage_alloc(bdev, blocks[0] << (blkbits - 9),
BIO_MAX_PAGES, GFP_NOFS|__GFP_HIGH);
diff --git a/fs/namei.c b/fs/namei.c
index 1180f9c58093..ed8b9488a890 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/namei.c
*
@@ -447,8 +448,7 @@ static int sb_permission(struct super_block *sb, struct inode *inode, int mask)
umode_t mode = inode->i_mode;
/* Nobody gets write access to a read-only fs. */
- if ((sb->s_flags & MS_RDONLY) &&
- (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)))
+ if (sb_rdonly(sb) && (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)))
return -EROFS;
}
return 0;
diff --git a/fs/namespace.c b/fs/namespace.c
index df0f7521979a..d18deb4c410b 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -275,7 +275,7 @@ int __mnt_is_readonly(struct vfsmount *mnt)
{
if (mnt->mnt_flags & MNT_READONLY)
return 1;
- if (mnt->mnt_sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(mnt->mnt_sb))
return 1;
return 0;
}
@@ -468,7 +468,9 @@ static inline int may_write_real(struct file *file)
/* File refers to upper, writable layer? */
upperdentry = d_real(dentry, NULL, 0, D_REAL_UPPER);
- if (upperdentry && file_inode(file) == d_inode(upperdentry))
+ if (upperdentry &&
+ (file_inode(file) == d_inode(upperdentry) ||
+ file_inode(file) == d_inode(dentry)))
return 0;
/* Lower layer: can't write to real file, sorry... */
@@ -1029,7 +1031,7 @@ vfs_kern_mount(struct file_system_type *type, int flags, const char *name, void
if (!mnt)
return ERR_PTR(-ENOMEM);
- if (flags & MS_KERNMOUNT)
+ if (flags & SB_KERNMOUNT)
mnt->mnt.mnt_flags = MNT_INTERNAL;
root = mount_fs(type, flags, name, data);
@@ -1061,7 +1063,7 @@ vfs_submount(const struct dentry *mountpoint, struct file_system_type *type,
if (mountpoint->d_sb->s_user_ns != &init_user_ns)
return ERR_PTR(-EPERM);
- return vfs_kern_mount(type, MS_SUBMOUNT, name, data);
+ return vfs_kern_mount(type, SB_SUBMOUNT, name, data);
}
EXPORT_SYMBOL_GPL(vfs_submount);
@@ -1182,12 +1184,10 @@ static LLIST_HEAD(delayed_mntput_list);
static void delayed_mntput(struct work_struct *unused)
{
struct llist_node *node = llist_del_all(&delayed_mntput_list);
- struct llist_node *next;
+ struct mount *m, *t;
- for (; node; node = next) {
- next = llist_next(node);
- cleanup_mnt(llist_entry(node, struct mount, mnt_llist));
- }
+ llist_for_each_entry_safe(m, t, node, mnt_llist)
+ cleanup_mnt(m);
}
static DECLARE_DELAYED_WORK(delayed_mntput_work, delayed_mntput);
@@ -1592,8 +1592,8 @@ static int do_umount(struct mount *mnt, int flags)
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
down_write(&sb->s_umount);
- if (!(sb->s_flags & MS_RDONLY))
- retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);
+ if (!sb_rdonly(sb))
+ retval = do_remount_sb(sb, SB_RDONLY, NULL, 0);
up_write(&sb->s_umount);
return retval;
}
@@ -2117,7 +2117,7 @@ static void unlock_mount(struct mountpoint *where)
static int graft_tree(struct mount *mnt, struct mount *p, struct mountpoint *mp)
{
- if (mnt->mnt.mnt_sb->s_flags & MS_NOUSER)
+ if (mnt->mnt.mnt_sb->s_flags & SB_NOUSER)
return -EINVAL;
if (d_is_dir(mp->m_dentry) !=
@@ -2131,9 +2131,9 @@ static int graft_tree(struct mount *mnt, struct mount *p, struct mountpoint *mp)
* Sanity check the flags to change_mnt_propagation.
*/
-static int flags_to_propagation_type(int flags)
+static int flags_to_propagation_type(int ms_flags)
{
- int type = flags & ~(MS_REC | MS_SILENT);
+ int type = ms_flags & ~(MS_REC | MS_SILENT);
/* Fail if any non-propagation flags are set */
if (type & ~(MS_SHARED | MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE))
@@ -2147,18 +2147,18 @@ static int flags_to_propagation_type(int flags)
/*
* recursively change the type of the mountpoint.
*/
-static int do_change_type(struct path *path, int flag)
+static int do_change_type(struct path *path, int ms_flags)
{
struct mount *m;
struct mount *mnt = real_mount(path->mnt);
- int recurse = flag & MS_REC;
+ int recurse = ms_flags & MS_REC;
int type;
int err = 0;
if (path->dentry != path->mnt->mnt_root)
return -EINVAL;
- type = flags_to_propagation_type(flag);
+ type = flags_to_propagation_type(ms_flags);
if (!type)
return -EINVAL;
@@ -2280,8 +2280,8 @@ static int change_mount_flags(struct vfsmount *mnt, int ms_flags)
* If you've mounted a non-root directory somewhere and want to do remount
* on it - tough luck.
*/
-static int do_remount(struct path *path, int flags, int mnt_flags,
- void *data)
+static int do_remount(struct path *path, int ms_flags, int sb_flags,
+ int mnt_flags, void *data)
{
int err;
struct super_block *sb = path->mnt->mnt_sb;
@@ -2325,12 +2325,12 @@ static int do_remount(struct path *path, int flags, int mnt_flags,
return err;
down_write(&sb->s_umount);
- if (flags & MS_BIND)
- err = change_mount_flags(path->mnt, flags);
+ if (ms_flags & MS_BIND)
+ err = change_mount_flags(path->mnt, ms_flags);
else if (!capable(CAP_SYS_ADMIN))
err = -EPERM;
else
- err = do_remount_sb(sb, flags, data, 0);
+ err = do_remount_sb(sb, sb_flags, data, 0);
if (!err) {
lock_mount_hash();
mnt_flags |= mnt->mnt.mnt_flags & ~MNT_USER_SETTABLE_MASK;
@@ -2495,7 +2495,7 @@ static bool mount_too_revealing(struct vfsmount *mnt, int *new_mnt_flags);
* create a new mount for userspace and request it to be added into the
* namespace's tree
*/
-static int do_new_mount(struct path *path, const char *fstype, int flags,
+static int do_new_mount(struct path *path, const char *fstype, int sb_flags,
int mnt_flags, const char *name, void *data)
{
struct file_system_type *type;
@@ -2509,7 +2509,7 @@ static int do_new_mount(struct path *path, const char *fstype, int flags,
if (!type)
return -ENODEV;
- mnt = vfs_kern_mount(type, flags, name, data);
+ mnt = vfs_kern_mount(type, sb_flags, name, data);
if (!IS_ERR(mnt) && (type->fs_flags & FS_HAS_SUBTYPE) &&
!mnt->mnt_sb->s_subtype)
mnt = fs_set_subtype(mnt, fstype);
@@ -2764,8 +2764,8 @@ long do_mount(const char *dev_name, const char __user *dir_name,
const char *type_page, unsigned long flags, void *data_page)
{
struct path path;
+ unsigned int mnt_flags = 0, sb_flags;
int retval = 0;
- int mnt_flags = 0;
/* Discard magic */
if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
@@ -2775,6 +2775,9 @@ long do_mount(const char *dev_name, const char __user *dir_name,
if (data_page)
((char *)data_page)[PAGE_SIZE - 1] = 0;
+ if (flags & MS_NOUSER)
+ return -EINVAL;
+
/* ... and get the mountpoint */
retval = user_path(dir_name, &path);
if (retval)
@@ -2784,7 +2787,7 @@ long do_mount(const char *dev_name, const char __user *dir_name,
type_page, flags, data_page);
if (!retval && !may_mount())
retval = -EPERM;
- if (!retval && (flags & MS_MANDLOCK) && !may_mandlock())
+ if (!retval && (flags & SB_MANDLOCK) && !may_mandlock())
retval = -EPERM;
if (retval)
goto dput_out;
@@ -2806,7 +2809,7 @@ long do_mount(const char *dev_name, const char __user *dir_name,
mnt_flags |= MNT_NODIRATIME;
if (flags & MS_STRICTATIME)
mnt_flags &= ~(MNT_RELATIME | MNT_NOATIME);
- if (flags & MS_RDONLY)
+ if (flags & SB_RDONLY)
mnt_flags |= MNT_READONLY;
/* The default atime for remount is preservation */
@@ -2817,12 +2820,16 @@ long do_mount(const char *dev_name, const char __user *dir_name,
mnt_flags |= path.mnt->mnt_flags & MNT_ATIME_MASK;
}
- flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE | MS_BORN |
- MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT |
- MS_STRICTATIME | MS_NOREMOTELOCK | MS_SUBMOUNT);
+ sb_flags = flags & (SB_RDONLY |
+ SB_SYNCHRONOUS |
+ SB_MANDLOCK |
+ SB_DIRSYNC |
+ SB_SILENT |
+ SB_POSIXACL |
+ SB_I_VERSION);
if (flags & MS_REMOUNT)
- retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
+ retval = do_remount(&path, flags, sb_flags, mnt_flags,
data_page);
else if (flags & MS_BIND)
retval = do_loopback(&path, dev_name, flags & MS_REC);
@@ -2831,7 +2838,7 @@ long do_mount(const char *dev_name, const char __user *dir_name,
else if (flags & MS_MOVE)
retval = do_move_mount(&path, dev_name);
else
- retval = do_new_mount(&path, type_page, flags, mnt_flags,
+ retval = do_new_mount(&path, type_page, sb_flags, mnt_flags,
dev_name, data_page);
dput_out:
path_put(&path);
@@ -3281,7 +3288,7 @@ void put_mnt_ns(struct mnt_namespace *ns)
struct vfsmount *kern_mount_data(struct file_system_type *type, void *data)
{
struct vfsmount *mnt;
- mnt = vfs_kern_mount(type, MS_KERNMOUNT, type->name, data);
+ mnt = vfs_kern_mount(type, SB_KERNMOUNT, type->name, data);
if (!IS_ERR(mnt)) {
/*
* it is a longterm mount, don't release mnt until
@@ -3358,7 +3365,7 @@ static bool mnt_already_visible(struct mnt_namespace *ns, struct vfsmount *new,
mnt_flags = mnt->mnt.mnt_flags;
/* Don't miss readonly hidden in the superblock flags */
- if (mnt->mnt.mnt_sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(mnt->mnt.mnt_sb))
mnt_flags |= MNT_LOCK_READONLY;
/* Verify the mount flags are equal to or more permissive
diff --git a/fs/ncpfs/Makefile b/fs/ncpfs/Makefile
index c66af563f2ce..66fe5f878817 100644
--- a/fs/ncpfs/Makefile
+++ b/fs/ncpfs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux ncp filesystem routines.
#
diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c
index 088f52484d6e..b5ec1d980dc9 100644
--- a/fs/ncpfs/dir.c
+++ b/fs/ncpfs/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* dir.c
*
diff --git a/fs/ncpfs/file.c b/fs/ncpfs/file.c
index a06c07619ee6..8f8cc0334ddd 100644
--- a/fs/ncpfs/file.c
+++ b/fs/ncpfs/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* file.c
*
diff --git a/fs/ncpfs/getopt.c b/fs/ncpfs/getopt.c
index 344889cd120e..5c941bef14c4 100644
--- a/fs/ncpfs/getopt.c
+++ b/fs/ncpfs/getopt.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* getopt.c
*/
diff --git a/fs/ncpfs/getopt.h b/fs/ncpfs/getopt.h
index cccc007dcaf9..30f0da317670 100644
--- a/fs/ncpfs/getopt.h
+++ b/fs/ncpfs/getopt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_GETOPT_H
#define _LINUX_GETOPT_H
diff --git a/fs/ncpfs/ioctl.c b/fs/ncpfs/ioctl.c
index 12550c2320cc..d378b98cd7b6 100644
--- a/fs/ncpfs/ioctl.c
+++ b/fs/ncpfs/ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ioctl.c
*
diff --git a/fs/ncpfs/mmap.c b/fs/ncpfs/mmap.c
index 6719c0be674d..a5c5cf2ff007 100644
--- a/fs/ncpfs/mmap.c
+++ b/fs/ncpfs/mmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* mmap.c
*
diff --git a/fs/ncpfs/ncp_fs.h b/fs/ncpfs/ncp_fs.h
index b9f69e1b1f43..bdd262b6c198 100644
--- a/fs/ncpfs/ncp_fs.h
+++ b/fs/ncpfs/ncp_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/ncp_fs.h>
#include "ncp_fs_i.h"
#include "ncp_fs_sb.h"
diff --git a/fs/ncpfs/ncp_fs_i.h b/fs/ncpfs/ncp_fs_i.h
index c4794504f843..3432bafb53a5 100644
--- a/fs/ncpfs/ncp_fs_i.h
+++ b/fs/ncpfs/ncp_fs_i.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ncp_fs_i.h
*
diff --git a/fs/ncpfs/ncp_fs_sb.h b/fs/ncpfs/ncp_fs_sb.h
index 366fd63cc506..89031d7e3ae1 100644
--- a/fs/ncpfs/ncp_fs_sb.h
+++ b/fs/ncpfs/ncp_fs_sb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ncp_fs_sb.h
*
diff --git a/fs/ncpfs/ncplib_kernel.c b/fs/ncpfs/ncplib_kernel.c
index 88dbbc9fcf4d..804adfebba2f 100644
--- a/fs/ncpfs/ncplib_kernel.c
+++ b/fs/ncpfs/ncplib_kernel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ncplib_kernel.c
*
diff --git a/fs/ncpfs/ncplib_kernel.h b/fs/ncpfs/ncplib_kernel.h
index b4c87cfcee95..aaae8aa9bf7d 100644
--- a/fs/ncpfs/ncplib_kernel.h
+++ b/fs/ncpfs/ncplib_kernel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ncplib_kernel.h
*
diff --git a/fs/ncpfs/ncpsign_kernel.c b/fs/ncpfs/ncpsign_kernel.c
index 08907599dcd2..8085b1a3ba47 100644
--- a/fs/ncpfs/ncpsign_kernel.c
+++ b/fs/ncpfs/ncpsign_kernel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* ncpsign_kernel.c
*
diff --git a/fs/ncpfs/ncpsign_kernel.h b/fs/ncpfs/ncpsign_kernel.h
index d9a1438bb1f6..57ff0a0650b8 100644
--- a/fs/ncpfs/ncpsign_kernel.h
+++ b/fs/ncpfs/ncpsign_kernel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ncpsign_kernel.h
*
diff --git a/fs/ncpfs/sock.c b/fs/ncpfs/sock.c
index 98b6db0ed63e..7dd7170d6cdf 100644
--- a/fs/ncpfs/sock.c
+++ b/fs/ncpfs/sock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ncpfs/sock.c
*
diff --git a/fs/ncpfs/symlink.c b/fs/ncpfs/symlink.c
index a6d26b46fc05..b6e16da4837a 100644
--- a/fs/ncpfs/symlink.c
+++ b/fs/ncpfs/symlink.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ncpfs/symlink.c
*
diff --git a/fs/nfs/Makefile b/fs/nfs/Makefile
index 1fb118902d57..c587e3c4c6a6 100644
--- a/fs/nfs/Makefile
+++ b/fs/nfs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux nfs filesystem routines.
#
diff --git a/fs/nfs/blocklayout/dev.c b/fs/nfs/blocklayout/dev.c
index a69ef4e9c24c..95f74bd2c067 100644
--- a/fs/nfs/blocklayout/dev.c
+++ b/fs/nfs/blocklayout/dev.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2014-2016 Christoph Hellwig.
*/
diff --git a/fs/nfs/blocklayout/extent_tree.c b/fs/nfs/blocklayout/extent_tree.c
index c85fbfd2d0d9..7a57ff2528af 100644
--- a/fs/nfs/blocklayout/extent_tree.c
+++ b/fs/nfs/blocklayout/extent_tree.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2014-2016 Christoph Hellwig.
*/
diff --git a/fs/nfs/cache_lib.c b/fs/nfs/cache_lib.c
index 2ae676f93e6b..b60627bcfc62 100644
--- a/fs/nfs/cache_lib.c
+++ b/fs/nfs/cache_lib.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/cache_lib.c
*
diff --git a/fs/nfs/cache_lib.h b/fs/nfs/cache_lib.h
index 4116d2c3f52f..4e6236a86cf7 100644
--- a/fs/nfs/cache_lib.h
+++ b/fs/nfs/cache_lib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Helper routines for the NFS client caches
*
diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
index 2cddf7f437e6..cd9d992feb2e 100644
--- a/fs/nfs/callback.c
+++ b/fs/nfs/callback.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/callback.c
*
diff --git a/fs/nfs/callback.h b/fs/nfs/callback.h
index 3dc54d7cb19c..a20a0bce40a4 100644
--- a/fs/nfs/callback.h
+++ b/fs/nfs/callback.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/nfs/callback.h
*
diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c
index 14358de173fb..19151f6c0e97 100644
--- a/fs/nfs/callback_proc.c
+++ b/fs/nfs/callback_proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/callback_proc.c
*
diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c
index 681dd642f119..123c069429a7 100644
--- a/fs/nfs/callback_xdr.c
+++ b/fs/nfs/callback_xdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/callback_xdr.c
*
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index efebe6cf4378..22880ef6d8dd 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -218,7 +218,6 @@ static void nfs_cb_idr_remove_locked(struct nfs_client *clp)
static void pnfs_init_server(struct nfs_server *server)
{
rpc_init_wait_queue(&server->roc_rpcwaitq, "pNFS ROC");
- rpc_init_wait_queue(&server->uoc_rpcwaitq, "NFS UOC");
}
#else
@@ -888,6 +887,7 @@ struct nfs_server *nfs_alloc_server(void)
ida_init(&server->openowner_id);
ida_init(&server->lockowner_id);
pnfs_init_server(server);
+ rpc_init_wait_queue(&server->uoc_rpcwaitq, "NFS UOC");
return server;
}
diff --git a/fs/nfs/delegation.h b/fs/nfs/delegation.h
index e9d555796873..ddaf2644cf13 100644
--- a/fs/nfs/delegation.h
+++ b/fs/nfs/delegation.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/nfs/delegation.h
*
diff --git a/fs/nfs/dns_resolve.c b/fs/nfs/dns_resolve.c
index d25f10fb4926..060c658eab66 100644
--- a/fs/nfs/dns_resolve.c
+++ b/fs/nfs/dns_resolve.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/dns_resolve.c
*
diff --git a/fs/nfs/dns_resolve.h b/fs/nfs/dns_resolve.h
index 2e4f596d2923..576ff4b54c82 100644
--- a/fs/nfs/dns_resolve.h
+++ b/fs/nfs/dns_resolve.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Resolve DNS hostnames into valid ip addresses
*/
diff --git a/fs/nfs/export.c b/fs/nfs/export.c
index 249cb96cc5b5..83fd09fc8f77 100644
--- a/fs/nfs/export.c
+++ b/fs/nfs/export.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2015, Primary Data, Inc. All rights reserved.
*
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index a385d1c3f146..0214dd1e1060 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -208,21 +208,19 @@ EXPORT_SYMBOL_GPL(nfs_file_mmap);
* fall back to doing a synchronous write.
*/
static int
-nfs_file_fsync_commit(struct file *file, loff_t start, loff_t end, int datasync)
+nfs_file_fsync_commit(struct file *file, int datasync)
{
struct nfs_open_context *ctx = nfs_file_open_context(file);
struct inode *inode = file_inode(file);
- int have_error, do_resend, status;
+ int do_resend, status;
int ret = 0;
dprintk("NFS: fsync file(%pD2) datasync %d\n", file, datasync);
nfs_inc_stats(inode, NFSIOS_VFSFSYNC);
do_resend = test_and_clear_bit(NFS_CONTEXT_RESEND_WRITES, &ctx->flags);
- have_error = test_and_clear_bit(NFS_CONTEXT_ERROR_WRITE, &ctx->flags);
status = nfs_commit_inode(inode, FLUSH_SYNC);
- have_error |= test_bit(NFS_CONTEXT_ERROR_WRITE, &ctx->flags);
- if (have_error) {
+ if (test_bit(NFS_CONTEXT_ERROR_WRITE, &ctx->flags)) {
ret = xchg(&ctx->error, 0);
if (ret)
goto out;
@@ -247,10 +245,16 @@ nfs_file_fsync(struct file *file, loff_t start, loff_t end, int datasync)
trace_nfs_fsync_enter(inode);
do {
+ struct nfs_open_context *ctx = nfs_file_open_context(file);
ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
+ if (test_and_clear_bit(NFS_CONTEXT_ERROR_WRITE, &ctx->flags)) {
+ int ret2 = xchg(&ctx->error, 0);
+ if (ret2)
+ ret = ret2;
+ }
if (ret != 0)
break;
- ret = nfs_file_fsync_commit(file, start, end, datasync);
+ ret = nfs_file_fsync_commit(file, datasync);
if (!ret)
ret = pnfs_sync_inode(inode, !!datasync);
/*
diff --git a/fs/nfs/filelayout/filelayout.c b/fs/nfs/filelayout/filelayout.c
index 44c638b7876c..508126eb49f9 100644
--- a/fs/nfs/filelayout/filelayout.c
+++ b/fs/nfs/filelayout/filelayout.c
@@ -745,7 +745,8 @@ filelayout_free_lseg(struct pnfs_layout_segment *lseg)
struct nfs4_filelayout_segment *fl = FILELAYOUT_LSEG(lseg);
dprintk("--> %s\n", __func__);
- nfs4_fl_put_deviceid(fl->dsaddr);
+ if (fl->dsaddr != NULL)
+ nfs4_fl_put_deviceid(fl->dsaddr);
/* This assumes a single RW lseg */
if (lseg->pls_range.iomode == IOMODE_RW) {
struct nfs4_filelayout *flo;
diff --git a/fs/nfs/flexfilelayout/flexfilelayout.h b/fs/nfs/flexfilelayout/flexfilelayout.h
index 98b34c9b0564..679cb087ef3f 100644
--- a/fs/nfs/flexfilelayout/flexfilelayout.h
+++ b/fs/nfs/flexfilelayout/flexfilelayout.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NFSv4 flexfile layout driver data structures.
*
diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
index f32c58bbe556..d62279d3fc5d 100644
--- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
+++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Device operations for the pnfs nfs4 file layout driver.
*
diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
index 68cc22083639..f9a4a5524bd5 100644
--- a/fs/nfs/internal.h
+++ b/fs/nfs/internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NFS internal definitions
*/
@@ -768,3 +769,10 @@ static inline bool nfs_error_is_fatal(int err)
return false;
}
}
+
+static inline void nfs_context_set_write_error(struct nfs_open_context *ctx, int error)
+{
+ ctx->error = error;
+ smp_wmb();
+ set_bit(NFS_CONTEXT_ERROR_WRITE, &ctx->flags);
+}
diff --git a/fs/nfs/io.c b/fs/nfs/io.c
index 1fc5d1ce327e..20fef85d2bb1 100644
--- a/fs/nfs/io.c
+++ b/fs/nfs/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2016 Trond Myklebust
*
diff --git a/fs/nfs/iostat.h b/fs/nfs/iostat.h
index 0cb806fbd4c4..2ddaab1ac653 100644
--- a/fs/nfs/iostat.h
+++ b/fs/nfs/iostat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/nfs/iostat.h
*
diff --git a/fs/nfs/mount_clnt.c b/fs/nfs/mount_clnt.c
index 60bad882c123..d979ff4fee7e 100644
--- a/fs/nfs/mount_clnt.c
+++ b/fs/nfs/mount_clnt.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* In-kernel MOUNT protocol client
*
diff --git a/fs/nfs/netns.h b/fs/nfs/netns.h
index 5fbd2bde91ba..fc9978c58265 100644
--- a/fs/nfs/netns.h
+++ b/fs/nfs/netns.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NFS-private data for each "struct net". Accessed with net_generic().
*/
diff --git a/fs/nfs/nfs.h b/fs/nfs/nfs.h
index 43679df56cd0..5ba00610aede 100644
--- a/fs/nfs/nfs.h
+++ b/fs/nfs/nfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2012 Netapp, Inc. All rights reserved.
*
diff --git a/fs/nfs/nfs2xdr.c b/fs/nfs/nfs2xdr.c
index fe68dabfbde6..85e4b4a233f9 100644
--- a/fs/nfs/nfs2xdr.c
+++ b/fs/nfs/nfs2xdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/nfs2xdr.c
*
diff --git a/fs/nfs/nfs3_fs.h b/fs/nfs/nfs3_fs.h
index e134d6548ab7..f82e11c4cb56 100644
--- a/fs/nfs/nfs3_fs.h
+++ b/fs/nfs/nfs3_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2014 Anna Schumaker.
*
diff --git a/fs/nfs/nfs3acl.c b/fs/nfs/nfs3acl.c
index 720d92f5abfb..7173a4ee862c 100644
--- a/fs/nfs/nfs3acl.c
+++ b/fs/nfs/nfs3acl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/gfp.h>
#include <linux/nfs.h>
diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c
index d1e87ec0df84..bc673fb47fb3 100644
--- a/fs/nfs/nfs3proc.c
+++ b/fs/nfs/nfs3proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/nfs3proc.c
*
diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c
index e82c9e553224..6cd33bd5da87 100644
--- a/fs/nfs/nfs3xdr.c
+++ b/fs/nfs/nfs3xdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/nfs3xdr.c
*
diff --git a/fs/nfs/nfs42.h b/fs/nfs/nfs42.h
index b6cd15314bab..19ec38f85ce0 100644
--- a/fs/nfs/nfs42.h
+++ b/fs/nfs/nfs42.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2014 Anna Schumaker <Anna.Schumaker@Netapp.com>
*/
diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
index 6c2db51e67a7..9c374441f660 100644
--- a/fs/nfs/nfs42proc.c
+++ b/fs/nfs/nfs42proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2014 Anna Schumaker <Anna.Schumaker@Netapp.com>
*/
diff --git a/fs/nfs/nfs42xdr.c b/fs/nfs/nfs42xdr.c
index 5ee1b0f0d904..5966e1e7b1f5 100644
--- a/fs/nfs/nfs42xdr.c
+++ b/fs/nfs/nfs42xdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2014 Anna Schumaker <Anna.Schumaker@Netapp.com>
*/
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index ac4f10b7f6c1..dcfcf7fd7438 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/nfs/nfs4_fs.h
*
diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c
index 0efba77789b9..626d1382002e 100644
--- a/fs/nfs/nfs4file.c
+++ b/fs/nfs/nfs4file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/file.c
*
diff --git a/fs/nfs/nfs4getroot.c b/fs/nfs/nfs4getroot.c
index ac8406018962..1a69479a3a59 100644
--- a/fs/nfs/nfs4getroot.c
+++ b/fs/nfs/nfs4getroot.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
* Written by David Howells (dhowells@redhat.com)
diff --git a/fs/nfs/nfs4idmap.c b/fs/nfs/nfs4idmap.c
index dd5d27da8c0c..30426c1a1bbd 100644
--- a/fs/nfs/nfs4idmap.c
+++ b/fs/nfs/nfs4idmap.c
@@ -274,7 +274,7 @@ static struct key *nfs_idmap_request_key(const char *name, size_t namelen,
ssize_t ret;
ret = nfs_idmap_get_desc(name, namelen, type, strlen(type), &desc);
- if (ret <= 0)
+ if (ret < 0)
return ERR_PTR(ret);
rkey = request_key(&key_type_id_resolver, desc, "");
diff --git a/fs/nfs/nfs4namespace.c b/fs/nfs/nfs4namespace.c
index 7d531da1bae3..8c3f327d858d 100644
--- a/fs/nfs/nfs4namespace.c
+++ b/fs/nfs/nfs4namespace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/nfs4namespace.c
*
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 6c61e2b99635..f90090e8c959 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -8399,8 +8399,7 @@ nfs4_layoutget_handle_exception(struct rpc_task *task,
lo = NFS_I(inode)->layout;
/* If the open stateid was bad, then recover it. */
if (!lo || test_bit(NFS_LAYOUT_INVALID_STID, &lo->plh_flags) ||
- nfs4_stateid_match_other(&lgp->args.stateid,
- &lgp->args.ctx->state->stateid)) {
+ !nfs4_stateid_match_other(&lgp->args.stateid, &lo->plh_stateid)) {
spin_unlock(&inode->i_lock);
exception->state = lgp->args.ctx->state;
exception->stateid = &lgp->args.stateid;
diff --git a/fs/nfs/nfs4session.h b/fs/nfs/nfs4session.h
index dfae4880eacb..3c550f297561 100644
--- a/fs/nfs/nfs4session.h
+++ b/fs/nfs/nfs4session.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fs/nfs/nfs4session.h
*
diff --git a/fs/nfs/nfs4sysctl.c b/fs/nfs/nfs4sysctl.c
index 8693d77c45ea..0d91d84e5822 100644
--- a/fs/nfs/nfs4sysctl.c
+++ b/fs/nfs/nfs4sysctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/nfs4sysctl.c
*
diff --git a/fs/nfs/nfs4trace.c b/fs/nfs/nfs4trace.c
index 2850bce19244..e9fb3e50a999 100644
--- a/fs/nfs/nfs4trace.c
+++ b/fs/nfs/nfs4trace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2013 Trond Myklebust <Trond.Myklebust@netapp.com>
*/
diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h
index be1da19c65d6..e7c6275519b0 100644
--- a/fs/nfs/nfs4trace.h
+++ b/fs/nfs/nfs4trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2013 Trond Myklebust <Trond.Myklebust@netapp.com>
*/
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index 37c8af003275..14ed9791ec9c 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -1842,8 +1842,8 @@ static void encode_create_session(struct xdr_stream *xdr,
* Assumes OPEN is the biggest non-idempotent compound.
* 2 is the verifier.
*/
- max_resp_sz_cached = (NFS4_dec_open_sz + RPC_REPHDRSIZE +
- RPC_MAX_AUTH_SIZE + 2) * XDR_UNIT;
+ max_resp_sz_cached = (NFS4_dec_open_sz + RPC_REPHDRSIZE + 2)
+ * XDR_UNIT + RPC_MAX_AUTH_SIZE;
encode_op_hdr(xdr, OP_CREATE_SESSION, decode_create_session_maxsz, hdr);
p = reserve_space(xdr, 16 + 2*28 + 20 + clnt->cl_nodelen + 12);
diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c
index 89a15dbe5efc..effaa4247b91 100644
--- a/fs/nfs/nfsroot.c
+++ b/fs/nfs/nfsroot.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 1995, 1996 Gero Kuhlmann <gero@gkminix.han.de>
*
diff --git a/fs/nfs/nfstrace.c b/fs/nfs/nfstrace.c
index c74f7af23d77..b60d5fbd7727 100644
--- a/fs/nfs/nfstrace.c
+++ b/fs/nfs/nfstrace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2013 Trond Myklebust <Trond.Myklebust@netapp.com>
*/
diff --git a/fs/nfs/nfstrace.h b/fs/nfs/nfstrace.h
index 2ca9167bc97d..093290c42d7c 100644
--- a/fs/nfs/nfstrace.h
+++ b/fs/nfs/nfstrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2013 Trond Myklebust <Trond.Myklebust@netapp.com>
*/
@@ -719,6 +720,254 @@ TRACE_EVENT(nfs_sillyrename_unlink,
__get_str(name)
)
);
+
+TRACE_EVENT(nfs_initiate_read,
+ TP_PROTO(
+ const struct inode *inode,
+ loff_t offset, unsigned long count
+ ),
+
+ TP_ARGS(inode, offset, count),
+
+ TP_STRUCT__entry(
+ __field(loff_t, offset)
+ __field(unsigned long, count)
+ __field(dev_t, dev)
+ __field(u32, fhandle)
+ __field(u64, fileid)
+ ),
+
+ TP_fast_assign(
+ const struct nfs_inode *nfsi = NFS_I(inode);
+
+ __entry->offset = offset;
+ __entry->count = count;
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->fileid = nfsi->fileid;
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
+ ),
+
+ TP_printk(
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
+ "offset=%lld count=%lu",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ (unsigned long long)__entry->fileid,
+ __entry->fhandle,
+ __entry->offset, __entry->count
+ )
+);
+
+TRACE_EVENT(nfs_readpage_done,
+ TP_PROTO(
+ const struct inode *inode,
+ int status, loff_t offset, bool eof
+ ),
+
+ TP_ARGS(inode, status, offset, eof),
+
+ TP_STRUCT__entry(
+ __field(int, status)
+ __field(loff_t, offset)
+ __field(bool, eof)
+ __field(dev_t, dev)
+ __field(u32, fhandle)
+ __field(u64, fileid)
+ ),
+
+ TP_fast_assign(
+ const struct nfs_inode *nfsi = NFS_I(inode);
+
+ __entry->status = status;
+ __entry->offset = offset;
+ __entry->eof = eof;
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->fileid = nfsi->fileid;
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
+ ),
+
+ TP_printk(
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
+ "offset=%lld status=%d%s",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ (unsigned long long)__entry->fileid,
+ __entry->fhandle,
+ __entry->offset, __entry->status,
+ __entry->eof ? " eof" : ""
+ )
+);
+
+/*
+ * XXX: I tried using NFS_UNSTABLE and friends in this table, but they
+ * all evaluate to 0 for some reason, even if I include linux/nfs.h.
+ */
+#define nfs_show_stable(stable) \
+ __print_symbolic(stable, \
+ { 0, " (UNSTABLE)" }, \
+ { 1, " (DATA_SYNC)" }, \
+ { 2, " (FILE_SYNC)" })
+
+TRACE_EVENT(nfs_initiate_write,
+ TP_PROTO(
+ const struct inode *inode,
+ loff_t offset, unsigned long count,
+ enum nfs3_stable_how stable
+ ),
+
+ TP_ARGS(inode, offset, count, stable),
+
+ TP_STRUCT__entry(
+ __field(loff_t, offset)
+ __field(unsigned long, count)
+ __field(enum nfs3_stable_how, stable)
+ __field(dev_t, dev)
+ __field(u32, fhandle)
+ __field(u64, fileid)
+ ),
+
+ TP_fast_assign(
+ const struct nfs_inode *nfsi = NFS_I(inode);
+
+ __entry->offset = offset;
+ __entry->count = count;
+ __entry->stable = stable;
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->fileid = nfsi->fileid;
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
+ ),
+
+ TP_printk(
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
+ "offset=%lld count=%lu stable=%d%s",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ (unsigned long long)__entry->fileid,
+ __entry->fhandle,
+ __entry->offset, __entry->count,
+ __entry->stable, nfs_show_stable(__entry->stable)
+ )
+);
+
+TRACE_EVENT(nfs_writeback_done,
+ TP_PROTO(
+ const struct inode *inode,
+ int status,
+ loff_t offset,
+ struct nfs_writeverf *writeverf
+ ),
+
+ TP_ARGS(inode, status, offset, writeverf),
+
+ TP_STRUCT__entry(
+ __field(int, status)
+ __field(loff_t, offset)
+ __field(enum nfs3_stable_how, stable)
+ __field(unsigned long long, verifier)
+ __field(dev_t, dev)
+ __field(u32, fhandle)
+ __field(u64, fileid)
+ ),
+
+ TP_fast_assign(
+ const struct nfs_inode *nfsi = NFS_I(inode);
+
+ __entry->status = status;
+ __entry->offset = offset;
+ __entry->stable = writeverf->committed;
+ memcpy(&__entry->verifier, &writeverf->verifier,
+ sizeof(__entry->verifier));
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->fileid = nfsi->fileid;
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
+ ),
+
+ TP_printk(
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
+ "offset=%lld status=%d stable=%d%s "
+ "verifier 0x%016llx",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ (unsigned long long)__entry->fileid,
+ __entry->fhandle,
+ __entry->offset, __entry->status,
+ __entry->stable, nfs_show_stable(__entry->stable),
+ __entry->verifier
+ )
+);
+
+TRACE_EVENT(nfs_initiate_commit,
+ TP_PROTO(
+ const struct nfs_commit_data *data
+ ),
+
+ TP_ARGS(data),
+
+ TP_STRUCT__entry(
+ __field(loff_t, offset)
+ __field(unsigned long, count)
+ __field(dev_t, dev)
+ __field(u32, fhandle)
+ __field(u64, fileid)
+ ),
+
+ TP_fast_assign(
+ const struct inode *inode = data->inode;
+ const struct nfs_inode *nfsi = NFS_I(inode);
+
+ __entry->offset = data->args.offset;
+ __entry->count = data->args.count;
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->fileid = nfsi->fileid;
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
+ ),
+
+ TP_printk(
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
+ "offset=%lld count=%lu",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ (unsigned long long)__entry->fileid,
+ __entry->fhandle,
+ __entry->offset, __entry->count
+ )
+);
+
+TRACE_EVENT(nfs_commit_done,
+ TP_PROTO(
+ const struct nfs_commit_data *data
+ ),
+
+ TP_ARGS(data),
+
+ TP_STRUCT__entry(
+ __field(int, status)
+ __field(loff_t, offset)
+ __field(unsigned long long, verifier)
+ __field(dev_t, dev)
+ __field(u32, fhandle)
+ __field(u64, fileid)
+ ),
+
+ TP_fast_assign(
+ const struct inode *inode = data->inode;
+ const struct nfs_inode *nfsi = NFS_I(inode);
+
+ __entry->status = data->res.op_status;
+ __entry->offset = data->args.offset;
+ memcpy(&__entry->verifier, &data->verf.verifier,
+ sizeof(__entry->verifier));
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->fileid = nfsi->fileid;
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
+ ),
+
+ TP_printk(
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
+ "offset=%lld status=%d verifier 0x%016llx",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ (unsigned long long)__entry->fileid,
+ __entry->fhandle,
+ __entry->offset, __entry->status,
+ __entry->verifier
+ )
+);
+
#endif /* _TRACE_NFS_H */
#undef TRACE_INCLUDE_PATH
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index bec120ec1967..d0543e19098a 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -1170,8 +1170,8 @@ out_failed:
/* remember fatal errors */
if (nfs_error_is_fatal(desc->pg_error))
- mapping_set_error(desc->pg_inode->i_mapping,
- desc->pg_error);
+ nfs_context_set_write_error(req->wb_context,
+ desc->pg_error);
func = desc->pg_completion_ops->error_cleanup;
for (midx = 0; midx < desc->pg_mirror_count; midx++) {
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 7879ed8ceb76..3bcd669a3152 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -1664,7 +1664,7 @@ pnfs_update_layout(struct inode *ino,
.offset = pos,
.length = count,
};
- unsigned pg_offset, seq;
+ unsigned pg_offset;
struct nfs_server *server = NFS_SERVER(ino);
struct nfs_client *clp = server->nfs_client;
struct pnfs_layout_hdr *lo = NULL;
@@ -1754,10 +1754,14 @@ lookup_again:
}
first = true;
- do {
- seq = read_seqbegin(&ctx->state->seqlock);
- nfs4_stateid_copy(&stateid, &ctx->state->stateid);
- } while (read_seqretry(&ctx->state->seqlock, seq));
+ if (nfs4_select_rw_stateid(ctx->state,
+ iomode == IOMODE_RW ? FMODE_WRITE : FMODE_READ,
+ NULL, &stateid, NULL) != 0) {
+ trace_pnfs_update_layout(ino, pos, count,
+ iomode, lo, lseg,
+ PNFS_UPDATE_LAYOUT_INVALID_OPEN);
+ goto out_unlock;
+ }
} else {
nfs4_stateid_copy(&stateid, &lo->plh_stateid);
}
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c
index 7962e49097c3..f7fd9192d4bc 100644
--- a/fs/nfs/proc.c
+++ b/fs/nfs/proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/proc.c
*
diff --git a/fs/nfs/read.c b/fs/nfs/read.c
index 0d42573d423d..48d7277c60a9 100644
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -25,6 +25,7 @@
#include "iostat.h"
#include "fscache.h"
#include "pnfs.h"
+#include "nfstrace.h"
#define NFSDBG_FACILITY NFSDBG_PAGECACHE
@@ -200,6 +201,7 @@ static void nfs_initiate_read(struct nfs_pgio_header *hdr,
task_setup_data->flags |= swap_flags;
rpc_ops->read_setup(hdr, msg);
+ trace_nfs_initiate_read(inode, hdr->io_start, hdr->good_bytes);
}
static void
@@ -232,6 +234,8 @@ static int nfs_readpage_done(struct rpc_task *task,
return status;
nfs_add_stats(inode, NFSIOS_SERVERREADBYTES, hdr->res.count);
+ trace_nfs_readpage_done(inode, task->tk_status,
+ hdr->args.offset, hdr->res.eof);
if (task->tk_status == -ESTALE) {
set_bit(NFS_INO_STALE, &NFS_I(inode)->flags);
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 6b179af59b92..c9d24bae3025 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -812,7 +812,7 @@ int nfs_show_stats(struct seq_file *m, struct dentry *root)
* Display all mount option settings
*/
seq_printf(m, "\n\topts:\t");
- seq_puts(m, root->d_sb->s_flags & MS_RDONLY ? "ro" : "rw");
+ seq_puts(m, sb_rdonly(root->d_sb) ? "ro" : "rw");
seq_puts(m, root->d_sb->s_flags & MS_SYNCHRONOUS ? ",sync" : "");
seq_puts(m, root->d_sb->s_flags & MS_NOATIME ? ",noatime" : "");
seq_puts(m, root->d_sb->s_flags & MS_NODIRATIME ? ",nodiratime" : "");
diff --git a/fs/nfs/symlink.c b/fs/nfs/symlink.c
index 5a1d0ded8979..06eb44b47885 100644
--- a/fs/nfs/symlink.c
+++ b/fs/nfs/symlink.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/symlink.c
*
diff --git a/fs/nfs/sysctl.c b/fs/nfs/sysctl.c
index bb6ed810fa6f..7aea195ddb35 100644
--- a/fs/nfs/sysctl.c
+++ b/fs/nfs/sysctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/sysctl.c
*
diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c
index e3949d93085c..630b4a3c1a93 100644
--- a/fs/nfs/unlink.c
+++ b/fs/nfs/unlink.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/nfs/unlink.c
*
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index f68083db63c8..babebbccae2a 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -145,13 +145,6 @@ static void nfs_io_completion_put(struct nfs_io_completion *ioc)
kref_put(&ioc->refcount, nfs_io_completion_release);
}
-static void nfs_context_set_write_error(struct nfs_open_context *ctx, int error)
-{
- ctx->error = error;
- smp_wmb();
- set_bit(NFS_CONTEXT_ERROR_WRITE, &ctx->flags);
-}
-
static struct nfs_page *
nfs_page_private_request(struct page *page)
{
@@ -1383,6 +1376,8 @@ static void nfs_initiate_write(struct nfs_pgio_header *hdr,
task_setup_data->priority = priority;
rpc_ops->write_setup(hdr, msg);
+ trace_nfs_initiate_write(hdr->inode, hdr->io_start, hdr->good_bytes,
+ hdr->args.stable);
nfs4_state_protect_write(NFS_SERVER(hdr->inode)->nfs_client,
&task_setup_data->rpc_client, msg, hdr);
@@ -1540,7 +1535,10 @@ static int nfs_writeback_done(struct rpc_task *task,
status = NFS_PROTO(inode)->write_done(task, hdr);
if (status != 0)
return status;
+
nfs_add_stats(inode, NFSIOS_SERVERWRITTENBYTES, hdr->res.count);
+ trace_nfs_writeback_done(inode, task->tk_status,
+ hdr->args.offset, hdr->res.verf);
if (hdr->res.verf->committed < hdr->args.stable &&
task->tk_status >= 0) {
@@ -1669,6 +1667,7 @@ int nfs_initiate_commit(struct rpc_clnt *clnt, struct nfs_commit_data *data,
};
/* Set up the initial task struct. */
nfs_ops->commit_setup(data, &msg);
+ trace_nfs_initiate_commit(data);
dprintk("NFS: initiated commit call\n");
@@ -1793,6 +1792,7 @@ static void nfs_commit_done(struct rpc_task *task, void *calldata)
/* Call the NFS version-specific code */
NFS_PROTO(data->inode)->commit_done(task, data);
+ trace_nfs_commit_done(data);
}
static void nfs_commit_release_pages(struct nfs_commit_data *data)
diff --git a/fs/nfsd/Makefile b/fs/nfsd/Makefile
index 5f5d3a76980c..2bfb58eefad1 100644
--- a/fs/nfsd/Makefile
+++ b/fs/nfsd/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux nfs server
#
diff --git a/fs/nfsd/auth.c b/fs/nfsd/auth.c
index 62469c60be23..697f8ae7792d 100644
--- a/fs/nfsd/auth.c
+++ b/fs/nfsd/auth.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/* Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de> */
#include <linux/sched.h>
diff --git a/fs/nfsd/auth.h b/fs/nfsd/auth.h
index 53325a12ba62..dbd66424f600 100644
--- a/fs/nfsd/auth.h
+++ b/fs/nfsd/auth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* nfsd-specific authentication stuff.
*
diff --git a/fs/nfsd/blocklayout.c b/fs/nfsd/blocklayout.c
index c862c2489df0..3f880ae0966b 100644
--- a/fs/nfsd/blocklayout.c
+++ b/fs/nfsd/blocklayout.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2014-2016 Christoph Hellwig.
*/
diff --git a/fs/nfsd/blocklayoutxdr.c b/fs/nfsd/blocklayoutxdr.c
index ac6f54546fdd..442543304930 100644
--- a/fs/nfsd/blocklayoutxdr.c
+++ b/fs/nfsd/blocklayoutxdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2014-2016 Christoph Hellwig.
*/
diff --git a/fs/nfsd/blocklayoutxdr.h b/fs/nfsd/blocklayoutxdr.h
index 397bc7563a49..bc5166bfe46b 100644
--- a/fs/nfsd/blocklayoutxdr.h
+++ b/fs/nfsd/blocklayoutxdr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFSD_BLOCKLAYOUTXDR_H
#define _NFSD_BLOCKLAYOUTXDR_H 1
diff --git a/fs/nfsd/cache.h b/fs/nfsd/cache.h
index dd96a3830004..046b3f048757 100644
--- a/fs/nfsd/cache.h
+++ b/fs/nfsd/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Request reply cache. This was heavily inspired by the
* implementation in 4.3BSD/4.4BSD.
diff --git a/fs/nfsd/current_stateid.h b/fs/nfsd/current_stateid.h
index 34075cee573a..c28540d86742 100644
--- a/fs/nfsd/current_stateid.h
+++ b/fs/nfsd/current_stateid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFSD4_CURRENT_STATE_H
#define _NFSD4_CURRENT_STATE_H
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
index 3bc08c394a3f..46b48dbbdd32 100644
--- a/fs/nfsd/export.c
+++ b/fs/nfsd/export.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* NFS exporting and validation.
*
diff --git a/fs/nfsd/export.h b/fs/nfsd/export.h
index 730f15eeb7ed..c8b74126ddaa 100644
--- a/fs/nfsd/export.h
+++ b/fs/nfsd/export.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de>
*/
diff --git a/fs/nfsd/fault_inject.c b/fs/nfsd/fault_inject.c
index 34c1c449fddf..6dfede6d172a 100644
--- a/fs/nfsd/fault_inject.c
+++ b/fs/nfsd/fault_inject.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2011 Bryan Schumaker <bjschuma@netapp.com>
*
diff --git a/fs/nfsd/flexfilelayout.c b/fs/nfsd/flexfilelayout.c
index b67287383010..db7ef07ae50c 100644
--- a/fs/nfsd/flexfilelayout.c
+++ b/fs/nfsd/flexfilelayout.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2016 Tom Haynes <loghyr@primarydata.com>
*
diff --git a/fs/nfsd/flexfilelayoutxdr.c b/fs/nfsd/flexfilelayoutxdr.c
index 5e3fd7fc1a9f..e81d2a5cf381 100644
--- a/fs/nfsd/flexfilelayoutxdr.c
+++ b/fs/nfsd/flexfilelayoutxdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2016 Tom Haynes <loghyr@primarydata.com>
*/
diff --git a/fs/nfsd/flexfilelayoutxdr.h b/fs/nfsd/flexfilelayoutxdr.h
index 467defd4e563..8e195aeca023 100644
--- a/fs/nfsd/flexfilelayoutxdr.h
+++ b/fs/nfsd/flexfilelayoutxdr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2016 Tom Haynes <loghyr@primarydata.com>
*/
diff --git a/fs/nfsd/lockd.c b/fs/nfsd/lockd.c
index 1a03bc3059e8..3f5b3d7b62b7 100644
--- a/fs/nfsd/lockd.c
+++ b/fs/nfsd/lockd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file contains all the stubs needed when communicating with lockd.
* This level of indirection is necessary so we can run nfsd+lockd without
diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c
index 6276ec8608b0..cbab1d2d8a75 100644
--- a/fs/nfsd/nfs2acl.c
+++ b/fs/nfsd/nfs2acl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Process version 2 NFSACL requests.
*
diff --git a/fs/nfsd/nfs3acl.c b/fs/nfsd/nfs3acl.c
index 01976529f042..13bca4a2f89d 100644
--- a/fs/nfsd/nfs3acl.c
+++ b/fs/nfsd/nfs3acl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Process version 3 NFSACL requests.
*
diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c
index 2cb56a0d6625..1d0ce3c57d93 100644
--- a/fs/nfsd/nfs3proc.c
+++ b/fs/nfsd/nfs3proc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Process version 3 NFS requests.
*
diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
index bf444b664011..f38acd905441 100644
--- a/fs/nfsd/nfs3xdr.c
+++ b/fs/nfsd/nfs3xdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* XDR support for nfsd/protocol version 3.
*
diff --git a/fs/nfsd/nfs4layouts.c b/fs/nfsd/nfs4layouts.c
index e122da696f1b..ea45d954e8d7 100644
--- a/fs/nfsd/nfs4layouts.c
+++ b/fs/nfsd/nfs4layouts.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2014 Christoph Hellwig.
*/
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index 3c69db7d4905..8487486ec496 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -927,6 +927,13 @@ nfsd4_secinfo_release(union nfsd4_op_u *u)
exp_put(u->secinfo.si_exp);
}
+static void
+nfsd4_secinfo_no_name_release(union nfsd4_op_u *u)
+{
+ if (u->secinfo_no_name.sin_exp)
+ exp_put(u->secinfo_no_name.sin_exp);
+}
+
static __be32
nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
union nfsd4_op_u *u)
@@ -2375,7 +2382,7 @@ static const struct nfsd4_operation nfsd4_ops[] = {
},
[OP_SECINFO_NO_NAME] = {
.op_func = nfsd4_secinfo_no_name,
- .op_release = nfsd4_secinfo_release,
+ .op_release = nfsd4_secinfo_no_name_release,
.op_flags = OP_HANDLES_WRONGSEC,
.op_name = "OP_SECINFO_NO_NAME",
.op_rsize_bop = nfsd4_secinfo_rsize,
diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
index 96fd15979cbd..334f2ad60704 100644
--- a/fs/nfsd/nfscache.c
+++ b/fs/nfsd/nfscache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Request reply cache. This is currently a global cache, but this may
* change in the future and be a per-client cache.
diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
index b9c538ab7a59..3fce905d0365 100644
--- a/fs/nfsd/nfsd.h
+++ b/fs/nfsd/nfsd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Hodge-podge collection of knfsd-related stuff.
* I will sort this out later.
diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c
index cfe7500d5847..8aa011820c4a 100644
--- a/fs/nfsd/nfsfh.c
+++ b/fs/nfsd/nfsfh.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* NFS server file handle treatment.
*
diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h
index e47cf6c2ac28..43f31cf49bae 100644
--- a/fs/nfsd/nfsfh.h
+++ b/fs/nfsd/nfsfh.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de>
*
diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c
index 5076ae2b8258..43c0419b8ddb 100644
--- a/fs/nfsd/nfsproc.c
+++ b/fs/nfsd/nfsproc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Process version 2 NFS requests.
*
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 7e3af3ef0917..e02bd2783124 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Central processing for nfsd.
*
diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c
index e4da2717982d..644a0342f0e0 100644
--- a/fs/nfsd/nfsxdr.c
+++ b/fs/nfsd/nfsxdr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* XDR support for nfsd
*
diff --git a/fs/nfsd/pnfs.h b/fs/nfsd/pnfs.h
index d27a5aa60022..4f4282d4eeca 100644
--- a/fs/nfsd/pnfs.h
+++ b/fs/nfsd/pnfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_NFSD_PNFS_H
#define _FS_NFSD_PNFS_H 1
diff --git a/fs/nfsd/stats.c b/fs/nfsd/stats.c
index d97338bb6a39..9bce3b913189 100644
--- a/fs/nfsd/stats.c
+++ b/fs/nfsd/stats.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* procfs-based user access to knfsd statistics
*
diff --git a/fs/nfsd/stats.h b/fs/nfsd/stats.h
index a5c944b771c6..b23fdac69820 100644
--- a/fs/nfsd/stats.h
+++ b/fs/nfsd/stats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Statistics for NFS server.
*
diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h
index 3287041905da..8b2f1d92c579 100644
--- a/fs/nfsd/trace.h
+++ b/fs/nfsd/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2014 Christoph Hellwig.
*/
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index bc69d40c4e8b..a3c9bfa77def 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* File operations used by nfsd. Some of these have been ripped from
* other parts of the kernel because they weren't exported, others
diff --git a/fs/nfsd/vfs.h b/fs/nfsd/vfs.h
index 1bbdccecbf3d..be6d8e00453f 100644
--- a/fs/nfsd/vfs.h
+++ b/fs/nfsd/vfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de>
*/
diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h
index 457ce45e5084..2f4f22e6b8cb 100644
--- a/fs/nfsd/xdr.h
+++ b/fs/nfsd/xdr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* XDR types for nfsd. This is mainly a typing exercise. */
#ifndef LINUX_NFSD_H
diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h
index 80d7da620e91..056bf8a7364e 100644
--- a/fs/nfsd/xdr3.h
+++ b/fs/nfsd/xdr3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* XDR types for NFSv3 in nfsd.
*
diff --git a/fs/nfsd/xdr4cb.h b/fs/nfsd/xdr4cb.h
index 49b719dfef95..517239af0302 100644
--- a/fs/nfsd/xdr4cb.h
+++ b/fs/nfsd/xdr4cb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define NFS4_MAXTAGLEN 20
#define NFS4_enc_cb_null_sz 0
diff --git a/fs/nilfs2/Makefile b/fs/nilfs2/Makefile
index fc603e0431bb..43b60b8a4d07 100644
--- a/fs/nilfs2/Makefile
+++ b/fs/nilfs2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_NILFS2_FS) += nilfs2.o
nilfs2-y := inode.o file.o dir.o super.o namei.o page.o mdt.o \
btnode.o bmap.o btree.o direct.o dat.o recovery.o \
diff --git a/fs/nilfs2/export.h b/fs/nilfs2/export.h
index 00107fdb9343..d29fd837c42c 100644
--- a/fs/nilfs2/export.h
+++ b/fs/nilfs2/export.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef NILFS_EXPORT_H
#define NILFS_EXPORT_H
diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
index 7ffe71a8dfb9..6a612d832e7d 100644
--- a/fs/nilfs2/inode.c
+++ b/fs/nilfs2/inode.c
@@ -174,7 +174,7 @@ static int nilfs_writepages(struct address_space *mapping,
struct inode *inode = mapping->host;
int err = 0;
- if (inode->i_sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(inode->i_sb)) {
nilfs_clear_dirty_pages(mapping, false);
return -EROFS;
}
@@ -191,7 +191,7 @@ static int nilfs_writepage(struct page *page, struct writeback_control *wbc)
struct inode *inode = page->mapping->host;
int err;
- if (inode->i_sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(inode->i_sb)) {
/*
* It means that filesystem was remounted in read-only
* mode because of error or metadata corruption. But we
diff --git a/fs/nilfs2/mdt.c b/fs/nilfs2/mdt.c
index 98835ed6bef4..c6bc1033e7d2 100644
--- a/fs/nilfs2/mdt.c
+++ b/fs/nilfs2/mdt.c
@@ -413,7 +413,7 @@ nilfs_mdt_write_page(struct page *page, struct writeback_control *wbc)
struct super_block *sb;
int err = 0;
- if (inode && (inode->i_sb->s_flags & MS_RDONLY)) {
+ if (inode && sb_rdonly(inode->i_sb)) {
/*
* It means that filesystem was remounted in read-only
* mode because of error or metadata corruption. But we
diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
index 926682981d61..4fc018dfcfae 100644
--- a/fs/nilfs2/super.c
+++ b/fs/nilfs2/super.c
@@ -136,7 +136,7 @@ void __nilfs_error(struct super_block *sb, const char *function,
va_end(args);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
nilfs_set_error(sb);
if (nilfs_test_opt(nilfs, ERRORS_RO)) {
@@ -478,7 +478,7 @@ static void nilfs_put_super(struct super_block *sb)
nilfs_detach_log_writer(sb);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
down_write(&nilfs->ns_sem);
nilfs_cleanup_super(sb);
up_write(&nilfs->ns_sem);
@@ -578,7 +578,7 @@ static int nilfs_freeze(struct super_block *sb)
struct the_nilfs *nilfs = sb->s_fs_info;
int err;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return 0;
/* Mark super block clean */
@@ -592,7 +592,7 @@ static int nilfs_unfreeze(struct super_block *sb)
{
struct the_nilfs *nilfs = sb->s_fs_info;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return 0;
down_write(&nilfs->ns_sem);
@@ -898,7 +898,7 @@ int nilfs_check_feature_compatibility(struct super_block *sb,
}
features = le64_to_cpu(sbp->s_feature_compat_ro) &
~NILFS_FEATURE_COMPAT_RO_SUPP;
- if (!(sb->s_flags & MS_RDONLY) && features) {
+ if (!sb_rdonly(sb) && features) {
nilfs_msg(sb, KERN_ERR,
"couldn't mount RDWR because of unsupported optional features (%llx)",
(unsigned long long)features);
@@ -1083,7 +1083,7 @@ nilfs_fill_super(struct super_block *sb, void *data, int silent)
goto failed_unload;
}
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
err = nilfs_attach_log_writer(sb, fsroot);
if (err)
goto failed_checkpoint;
@@ -1095,7 +1095,7 @@ nilfs_fill_super(struct super_block *sb, void *data, int silent)
nilfs_put_root(fsroot);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
down_write(&nilfs->ns_sem);
nilfs_setup_super(sb, true);
up_write(&nilfs->ns_sem);
@@ -1144,7 +1144,7 @@ static int nilfs_remount(struct super_block *sb, int *flags, char *data)
goto restore_opts;
}
- if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
+ if ((bool)(*flags & MS_RDONLY) == sb_rdonly(sb))
goto out;
if (*flags & MS_RDONLY) {
/* Shutting down log writer */
@@ -1338,8 +1338,7 @@ nilfs_mount(struct file_system_type *fs_type, int flags,
if ((flags ^ s->s_flags) & MS_RDONLY) {
nilfs_msg(s, KERN_ERR,
"the device already has a %s mount.",
- (s->s_flags & MS_RDONLY) ?
- "read-only" : "read/write");
+ sb_rdonly(s) ? "read-only" : "read/write");
err = -EBUSY;
goto failed_super;
}
diff --git a/fs/nls/Makefile b/fs/nls/Makefile
index 8ae37c1b5249..ac54db297128 100644
--- a/fs/nls/Makefile
+++ b/fs/nls/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for native language support
#
diff --git a/fs/notify/Makefile b/fs/notify/Makefile
index 3e969ae91b60..63a4b8828df4 100644
--- a/fs/notify/Makefile
+++ b/fs/notify/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_FSNOTIFY) += fsnotify.o notification.o group.o mark.o \
fdinfo.o
diff --git a/fs/notify/fanotify/fanotify.c b/fs/notify/fanotify/fanotify.c
index 2fa99aeaa095..09640b546363 100644
--- a/fs/notify/fanotify/fanotify.c
+++ b/fs/notify/fanotify/fanotify.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fanotify.h>
#include <linux/fdtable.h>
#include <linux/fsnotify_backend.h>
diff --git a/fs/notify/fanotify/fanotify.h b/fs/notify/fanotify/fanotify.h
index 4eb6f5efa282..7dacb7d80727 100644
--- a/fs/notify/fanotify/fanotify.h
+++ b/fs/notify/fanotify/fanotify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/fsnotify_backend.h>
#include <linux/path.h>
#include <linux/slab.h>
diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
index 907a481ac781..9752e7270e61 100644
--- a/fs/notify/fanotify/fanotify_user.c
+++ b/fs/notify/fanotify/fanotify_user.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fanotify.h>
#include <linux/fcntl.h>
#include <linux/file.h>
diff --git a/fs/notify/fdinfo.c b/fs/notify/fdinfo.c
index dd63aa9a6f9a..517f88c1dbe5 100644
--- a/fs/notify/fdinfo.c
+++ b/fs/notify/fdinfo.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/file.h>
#include <linux/fs.h>
#include <linux/fsnotify_backend.h>
diff --git a/fs/notify/fdinfo.h b/fs/notify/fdinfo.h
index 9664c4904d6b..5c9937e02e21 100644
--- a/fs/notify/fdinfo.h
+++ b/fs/notify/fdinfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __FSNOTIFY_FDINFO_H__
#define __FSNOTIFY_FDINFO_H__
diff --git a/fs/notify/fsnotify.h b/fs/notify/fsnotify.h
index bf012e8ecd14..60f365dc1408 100644
--- a/fs/notify/fsnotify.h
+++ b/fs/notify/fsnotify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __FS_NOTIFY_FSNOTIFY_H_
#define __FS_NOTIFY_FSNOTIFY_H_
diff --git a/fs/notify/inotify/inotify.h b/fs/notify/inotify/inotify.h
index 9ff67b61da8a..c00d2caca894 100644
--- a/fs/notify/inotify/inotify.h
+++ b/fs/notify/inotify/inotify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/fsnotify_backend.h>
#include <linux/inotify.h>
#include <linux/slab.h> /* struct kmem_cache */
diff --git a/fs/nsfs.c b/fs/nsfs.c
index 08127a2b8559..ef243e14b6eb 100644
--- a/fs/nsfs.c
+++ b/fs/nsfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mount.h>
#include <linux/file.h>
#include <linux/fs.h>
diff --git a/fs/ntfs/Makefile b/fs/ntfs/Makefile
index 2ff263e6d363..3e736572ed00 100644
--- a/fs/ntfs/Makefile
+++ b/fs/ntfs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
# Rules for making the NTFS driver.
obj-$(CONFIG_NTFS_FS) += ntfs.o
diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
index ecb49870a680..3f70f041dbe9 100644
--- a/fs/ntfs/super.c
+++ b/fs/ntfs/super.c
@@ -487,7 +487,7 @@ static int ntfs_remount(struct super_block *sb, int *flags, char *opt)
* When remounting read-only, mark the volume clean if no volume errors
* have occurred.
*/
- if ((sb->s_flags & MS_RDONLY) && !(*flags & MS_RDONLY)) {
+ if (sb_rdonly(sb) && !(*flags & MS_RDONLY)) {
static const char *es = ". Cannot remount read-write.";
/* Remounting read-write. */
@@ -548,7 +548,7 @@ static int ntfs_remount(struct super_block *sb, int *flags, char *opt)
NVolSetErrors(vol);
return -EROFS;
}
- } else if (!(sb->s_flags & MS_RDONLY) && (*flags & MS_RDONLY)) {
+ } else if (!sb_rdonly(sb) && (*flags & MS_RDONLY)) {
/* Remounting read-only. */
if (!NVolErrors(vol)) {
if (ntfs_clear_volume_flags(vol, VOLUME_IS_DIRTY))
@@ -732,7 +732,7 @@ hotfix_primary_boot_sector:
* on a large sector device contains the whole boot loader or
* just the first 512 bytes).
*/
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
ntfs_warning(sb, "Hot-fix: Recovering invalid primary "
"boot sector from backup copy.");
memcpy(bh_primary->b_data, bh_backup->b_data,
@@ -1789,7 +1789,7 @@ static bool load_system_files(ntfs_volume *vol)
static const char *es3 = ". Run ntfsfix and/or chkdsk.";
/* If a read-write mount, convert it to a read-only mount. */
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
ON_ERRORS_CONTINUE))) {
ntfs_error(sb, "%s and neither on_errors="
@@ -1928,7 +1928,7 @@ get_ctx_vol_failed:
(unsigned)le16_to_cpu(vol->vol_flags));
}
/* If a read-write mount, convert it to a read-only mount. */
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
ON_ERRORS_CONTINUE))) {
ntfs_error(sb, "%s and neither on_errors="
@@ -1961,7 +1961,7 @@ get_ctx_vol_failed:
es1 = !vol->logfile_ino ? es1a : es1b;
/* If a read-write mount, convert it to a read-only mount. */
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
ON_ERRORS_CONTINUE))) {
ntfs_error(sb, "%s and neither on_errors="
@@ -2010,7 +2010,7 @@ get_ctx_vol_failed:
es1 = err < 0 ? es1a : es1b;
/* If a read-write mount, convert it to a read-only mount. */
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
ON_ERRORS_CONTINUE))) {
ntfs_error(sb, "%s and neither on_errors="
@@ -2028,8 +2028,7 @@ get_ctx_vol_failed:
NVolSetErrors(vol);
}
/* If (still) a read-write mount, mark the volume dirty. */
- if (!(sb->s_flags & MS_RDONLY) &&
- ntfs_set_volume_flags(vol, VOLUME_IS_DIRTY)) {
+ if (!sb_rdonly(sb) && ntfs_set_volume_flags(vol, VOLUME_IS_DIRTY)) {
static const char *es1 = "Failed to set dirty bit in volume "
"information flags";
static const char *es2 = ". Run chkdsk.";
@@ -2075,8 +2074,7 @@ get_ctx_vol_failed:
}
#endif
/* If (still) a read-write mount, empty the logfile. */
- if (!(sb->s_flags & MS_RDONLY) &&
- !ntfs_empty_logfile(vol->logfile_ino)) {
+ if (!sb_rdonly(sb) && !ntfs_empty_logfile(vol->logfile_ino)) {
static const char *es1 = "Failed to empty $LogFile";
static const char *es2 = ". Mount in Windows.";
@@ -2121,7 +2119,7 @@ get_ctx_vol_failed:
static const char *es2 = ". Run chkdsk.";
/* If a read-write mount, convert it to a read-only mount. */
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
ON_ERRORS_CONTINUE))) {
ntfs_error(sb, "%s and neither on_errors="
@@ -2139,8 +2137,7 @@ get_ctx_vol_failed:
NVolSetErrors(vol);
}
/* If (still) a read-write mount, mark the quotas out of date. */
- if (!(sb->s_flags & MS_RDONLY) &&
- !ntfs_mark_quotas_out_of_date(vol)) {
+ if (!sb_rdonly(sb) && !ntfs_mark_quotas_out_of_date(vol)) {
static const char *es1 = "Failed to mark quotas out of date";
static const char *es2 = ". Run chkdsk.";
@@ -2165,7 +2162,7 @@ get_ctx_vol_failed:
static const char *es2 = ". Run chkdsk.";
/* If a read-write mount, convert it to a read-only mount. */
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!(vol->on_errors & (ON_ERRORS_REMOUNT_RO |
ON_ERRORS_CONTINUE))) {
ntfs_error(sb, "%s and neither on_errors="
@@ -2183,7 +2180,7 @@ get_ctx_vol_failed:
NVolSetErrors(vol);
}
/* If (still) a read-write mount, stamp the transaction log. */
- if (!(sb->s_flags & MS_RDONLY) && !ntfs_stamp_usnjrnl(vol)) {
+ if (!sb_rdonly(sb) && !ntfs_stamp_usnjrnl(vol)) {
static const char *es1 = "Failed to stamp transaction log "
"($UsnJrnl)";
static const char *es2 = ". Run chkdsk.";
@@ -2314,7 +2311,7 @@ static void ntfs_put_super(struct super_block *sb)
* If a read-write mount and no volume errors have occurred, mark the
* volume clean. Also, re-commit all affected inodes.
*/
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!NVolErrors(vol)) {
if (ntfs_clear_volume_flags(vol, VOLUME_IS_DIRTY))
ntfs_warning(sb, "Failed to clear dirty bit "
diff --git a/fs/ocfs2/Makefile b/fs/ocfs2/Makefile
index 4342c7ee7d20..99ee093182cb 100644
--- a/fs/ocfs2/Makefile
+++ b/fs/ocfs2/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
ccflags-y := -Ifs/ocfs2
obj-$(CONFIG_OCFS2_FS) += \
diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c
index a177eae3aa1a..addd7c5f2d3e 100644
--- a/fs/ocfs2/alloc.c
+++ b/fs/ocfs2/alloc.c
@@ -7304,13 +7304,24 @@ out:
static int ocfs2_trim_extent(struct super_block *sb,
struct ocfs2_group_desc *gd,
- u32 start, u32 count)
+ u64 group, u32 start, u32 count)
{
u64 discard, bcount;
+ struct ocfs2_super *osb = OCFS2_SB(sb);
bcount = ocfs2_clusters_to_blocks(sb, count);
- discard = le64_to_cpu(gd->bg_blkno) +
- ocfs2_clusters_to_blocks(sb, start);
+ discard = ocfs2_clusters_to_blocks(sb, start);
+
+ /*
+ * For the first cluster group, the gd->bg_blkno is not at the start
+ * of the group, but at an offset from the start. If we add it while
+ * calculating discard for first group, we will wrongly start fstrim a
+ * few blocks after the desried start block and the range can cross
+ * over into the next cluster group. So, add it only if this is not
+ * the first cluster group.
+ */
+ if (group != osb->first_cluster_group_blkno)
+ discard += le64_to_cpu(gd->bg_blkno);
trace_ocfs2_trim_extent(sb, (unsigned long long)discard, bcount);
@@ -7318,7 +7329,7 @@ static int ocfs2_trim_extent(struct super_block *sb,
}
static int ocfs2_trim_group(struct super_block *sb,
- struct ocfs2_group_desc *gd,
+ struct ocfs2_group_desc *gd, u64 group,
u32 start, u32 max, u32 minbits)
{
int ret = 0, count = 0, next;
@@ -7337,7 +7348,7 @@ static int ocfs2_trim_group(struct super_block *sb,
next = ocfs2_find_next_bit(bitmap, max, start);
if ((next - start) >= minbits) {
- ret = ocfs2_trim_extent(sb, gd,
+ ret = ocfs2_trim_extent(sb, gd, group,
start, next - start);
if (ret < 0) {
mlog_errno(ret);
@@ -7435,7 +7446,8 @@ int ocfs2_trim_fs(struct super_block *sb, struct fstrim_range *range)
}
gd = (struct ocfs2_group_desc *)gd_bh->b_data;
- cnt = ocfs2_trim_group(sb, gd, first_bit, last_bit, minlen);
+ cnt = ocfs2_trim_group(sb, gd, group,
+ first_bit, last_bit, minlen);
brelse(gd_bh);
gd_bh = NULL;
if (cnt < 0) {
diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c
index 4506ec5ec2ea..ab30c005cc4b 100644
--- a/fs/ocfs2/ioctl.c
+++ b/fs/ocfs2/ioctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ocfs2/ioctl.c
*
diff --git a/fs/ocfs2/ioctl.h b/fs/ocfs2/ioctl.h
index 0cd5323bd3f0..9f5e4d95e37f 100644
--- a/fs/ocfs2/ioctl.h
+++ b/fs/ocfs2/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ioctl.h
*
diff --git a/fs/ocfs2/mmap.h b/fs/ocfs2/mmap.h
index 1274ee0f1fe2..1051507cc684 100644
--- a/fs/ocfs2/mmap.h
+++ b/fs/ocfs2/mmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef OCFS2_MMAP_H
#define OCFS2_MMAP_H
diff --git a/fs/ocfs2/ocfs2_trace.h b/fs/ocfs2/ocfs2_trace.h
index 0b58abcf1c6d..a0b5d00ef0a9 100644
--- a/fs/ocfs2/ocfs2_trace.h
+++ b/fs/ocfs2/ocfs2_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM ocfs2
diff --git a/fs/ocfs2/quota.h b/fs/ocfs2/quota.h
index d153e6e31529..ebb5c99f490e 100644
--- a/fs/ocfs2/quota.h
+++ b/fs/ocfs2/quota.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* quota.h for OCFS2
*
diff --git a/fs/ocfs2/quota_global.c b/fs/ocfs2/quota_global.c
index c94b6baaa551..b39d14cbfa34 100644
--- a/fs/ocfs2/quota_global.c
+++ b/fs/ocfs2/quota_global.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Implementation of operations over global quota file
*/
diff --git a/fs/ocfs2/quota_local.c b/fs/ocfs2/quota_local.c
index aa700fd10610..16c42ed0dca8 100644
--- a/fs/ocfs2/quota_local.c
+++ b/fs/ocfs2/quota_local.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Implementation of operations over local quota file
*/
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index 3f936be379a9..80733496b22a 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -675,7 +675,7 @@ static int ocfs2_remount(struct super_block *sb, int *flags, char *data)
}
/* We're going to/from readonly mode. */
- if ((*flags & MS_RDONLY) != (sb->s_flags & MS_RDONLY)) {
+ if ((bool)(*flags & MS_RDONLY) != sb_rdonly(sb)) {
/* Disable quota accounting before remounting RO */
if (*flags & MS_RDONLY) {
ret = ocfs2_susp_quotas(osb, 0);
@@ -1063,7 +1063,7 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent)
/* Hard readonly mode only if: bdev_read_only, MS_RDONLY,
* heartbeat=none */
if (bdev_read_only(sb->s_bdev)) {
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
status = -EACCES;
mlog(ML_ERROR, "Readonly device detected but readonly "
"mount was not specified.\n");
@@ -1098,7 +1098,7 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent)
}
if (!ocfs2_is_hard_readonly(osb)) {
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
ocfs2_set_ro_flag(osb, 0);
}
@@ -1179,7 +1179,7 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent)
/* Now we can initialize quotas because we can afford to wait
* for cluster locks recovery now. That also means that truncation
* log recovery can happen but that waits for proper quota setup */
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
status = ocfs2_enable_quotas(osb);
if (status < 0) {
/* We have to err-out specially here because
@@ -2180,8 +2180,7 @@ static int ocfs2_initialize_super(struct super_block *sb,
status = -EINVAL;
goto bail;
}
- if (!(osb->sb->s_flags & MS_RDONLY) &&
- (i = OCFS2_HAS_RO_COMPAT_FEATURE(osb->sb, ~OCFS2_FEATURE_RO_COMPAT_SUPP))) {
+ if (!sb_rdonly(osb->sb) && (i = OCFS2_HAS_RO_COMPAT_FEATURE(osb->sb, ~OCFS2_FEATURE_RO_COMPAT_SUPP))) {
mlog(ML_ERROR, "couldn't mount RDWR because of "
"unsupported optional features (%x).\n", i);
status = -EINVAL;
@@ -2567,9 +2566,7 @@ static int ocfs2_handle_error(struct super_block *sb)
rv = -EIO;
} else { /* default option */
rv = -EROFS;
- if (sb->s_flags & MS_RDONLY &&
- (ocfs2_is_soft_readonly(osb) ||
- ocfs2_is_hard_readonly(osb)))
+ if (sb_rdonly(sb) && (ocfs2_is_soft_readonly(osb) || ocfs2_is_hard_readonly(osb)))
return rv;
pr_crit("OCFS2: File system is now read-only.\n");
diff --git a/fs/omfs/bitmap.c b/fs/omfs/bitmap.c
index 83f4e76511c2..7147ba6a6afc 100644
--- a/fs/omfs/bitmap.c
+++ b/fs/omfs/bitmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/buffer_head.h>
diff --git a/fs/omfs/omfs.h b/fs/omfs/omfs.h
index f0f8bc75e609..4008be73de54 100644
--- a/fs/omfs/omfs.h
+++ b/fs/omfs/omfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _OMFS_H
#define _OMFS_H
diff --git a/fs/omfs/omfs_fs.h b/fs/omfs/omfs_fs.h
index 83a98330ed66..caecb3d5a344 100644
--- a/fs/omfs/omfs_fs.h
+++ b/fs/omfs/omfs_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _OMFS_FS_H
#define _OMFS_FS_H
diff --git a/fs/orangefs/Makefile b/fs/orangefs/Makefile
index a9d6a968fe6d..9b6c50bb173b 100644
--- a/fs/orangefs/Makefile
+++ b/fs/orangefs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the ORANGEFS filesystem.
#
diff --git a/fs/orangefs/acl.c b/fs/orangefs/acl.c
index 7a3754488312..c2d8233b1e82 100644
--- a/fs/orangefs/acl.c
+++ b/fs/orangefs/acl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
@@ -35,7 +36,7 @@ struct posix_acl *orangefs_get_acl(struct inode *inode, int type)
* I don't do that for now.
*/
value = kmalloc(ORANGEFS_MAX_XATTR_VALUELEN, GFP_KERNEL);
- if (value == NULL)
+ if (!value)
return ERR_PTR(-ENOMEM);
gossip_debug(GOSSIP_ACL_DEBUG,
@@ -61,9 +62,9 @@ struct posix_acl *orangefs_get_acl(struct inode *inode, int type)
return acl;
}
-int orangefs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
+static int __orangefs_set_acl(struct inode *inode, struct posix_acl *acl,
+ int type)
{
- struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode);
int error = 0;
void *value = NULL;
size_t size = 0;
@@ -72,22 +73,6 @@ int orangefs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
switch (type) {
case ACL_TYPE_ACCESS:
name = XATTR_NAME_POSIX_ACL_ACCESS;
- if (acl) {
- umode_t mode;
-
- error = posix_acl_update_mode(inode, &mode, &acl);
- if (error) {
- gossip_err("%s: posix_acl_update_mode err: %d\n",
- __func__,
- error);
- return error;
- }
-
- if (inode->i_mode != mode)
- SetModeFlag(orangefs_inode);
- inode->i_mode = mode;
- mark_inode_dirty_sync(inode);
- }
break;
case ACL_TYPE_DEFAULT:
name = XATTR_NAME_POSIX_ACL_DEFAULT;
@@ -132,6 +117,42 @@ out:
return error;
}
+int orangefs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
+{
+ int error;
+ struct iattr iattr;
+ int rc;
+
+ if (type == ACL_TYPE_ACCESS && acl) {
+ /*
+ * posix_acl_update_mode checks to see if the permissions
+ * described by the ACL can be encoded into the
+ * object's mode. If so, it sets "acl" to NULL
+ * and "mode" to the new desired value. It is up to
+ * us to propagate the new mode back to the server...
+ */
+ error = posix_acl_update_mode(inode, &iattr.ia_mode, &acl);
+ if (error) {
+ gossip_err("%s: posix_acl_update_mode err: %d\n",
+ __func__,
+ error);
+ return error;
+ }
+
+ if (acl) {
+ rc = __orangefs_set_acl(inode, acl, type);
+ } else {
+ iattr.ia_valid = ATTR_MODE;
+ rc = orangefs_inode_setattr(inode, &iattr);
+ }
+
+ return rc;
+
+ } else {
+ return -EINVAL;
+ }
+}
+
int orangefs_init_acl(struct inode *inode, struct inode *dir)
{
struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode);
@@ -146,13 +167,14 @@ int orangefs_init_acl(struct inode *inode, struct inode *dir)
return error;
if (default_acl) {
- error = orangefs_set_acl(inode, default_acl, ACL_TYPE_DEFAULT);
+ error = __orangefs_set_acl(inode, default_acl,
+ ACL_TYPE_DEFAULT);
posix_acl_release(default_acl);
}
if (acl) {
if (!error)
- error = orangefs_set_acl(inode, acl, ACL_TYPE_ACCESS);
+ error = __orangefs_set_acl(inode, acl, ACL_TYPE_ACCESS);
posix_acl_release(acl);
}
diff --git a/fs/orangefs/dcache.c b/fs/orangefs/dcache.c
index 5355efba4bc8..ae782df5c063 100644
--- a/fs/orangefs/dcache.c
+++ b/fs/orangefs/dcache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/devorangefs-req.c b/fs/orangefs/devorangefs-req.c
index c19f0787c9c6..ded456f17de6 100644
--- a/fs/orangefs/devorangefs-req.c
+++ b/fs/orangefs/devorangefs-req.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
@@ -461,13 +462,10 @@ static ssize_t orangefs_devreq_write_iter(struct kiocb *iocb,
if (op->downcall.type != ORANGEFS_VFS_OP_READDIR)
goto wakeup;
- op->downcall.trailer_buf =
- vmalloc(op->downcall.trailer_size);
- if (op->downcall.trailer_buf == NULL) {
- gossip_err("%s: failed trailer vmalloc.\n",
- __func__);
+ op->downcall.trailer_buf = vmalloc(op->downcall.trailer_size);
+ if (!op->downcall.trailer_buf)
goto Enomem;
- }
+
memset(op->downcall.trailer_buf, 0, op->downcall.trailer_size);
if (!copy_from_iter_full(op->downcall.trailer_buf,
op->downcall.trailer_size, iter)) {
diff --git a/fs/orangefs/dir.c b/fs/orangefs/dir.c
index d327cbd17756..a8cc588d6224 100644
--- a/fs/orangefs/dir.c
+++ b/fs/orangefs/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright 2017 Omnibond Systems, L.L.C.
*/
diff --git a/fs/orangefs/downcall.h b/fs/orangefs/downcall.h
index 163001c95501..ea2332e16af9 100644
--- a/fs/orangefs/downcall.h
+++ b/fs/orangefs/downcall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c
index 28f38d813ad2..e4a8e6a7eb17 100644
--- a/fs/orangefs/file.c
+++ b/fs/orangefs/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
@@ -646,14 +647,11 @@ static int orangefs_fsync(struct file *file,
loff_t end,
int datasync)
{
- int ret = -EINVAL;
+ int ret;
struct orangefs_inode_s *orangefs_inode =
ORANGEFS_I(file_inode(file));
struct orangefs_kernel_op_s *new_op = NULL;
- /* required call */
- filemap_write_and_wait_range(file->f_mapping, start, end);
-
new_op = op_alloc(ORANGEFS_VFS_OP_FSYNC);
if (!new_op)
return -ENOMEM;
diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c
index 9428ea0aac16..28825a5b6d09 100644
--- a/fs/orangefs/inode.c
+++ b/fs/orangefs/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/namei.c b/fs/orangefs/namei.c
index 478e88bd7f9d..7e9e5d0ea3bc 100644
--- a/fs/orangefs/namei.c
+++ b/fs/orangefs/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/orangefs-bufmap.c b/fs/orangefs/orangefs-bufmap.c
index 038d67545d9f..59f444dced9b 100644
--- a/fs/orangefs/orangefs-bufmap.c
+++ b/fs/orangefs/orangefs-bufmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
@@ -244,20 +245,14 @@ orangefs_bufmap_alloc(struct ORANGEFS_dev_map_desc *user_desc)
bufmap->buffer_index_array =
kzalloc(DIV_ROUND_UP(bufmap->desc_count, BITS_PER_LONG), GFP_KERNEL);
- if (!bufmap->buffer_index_array) {
- gossip_err("orangefs: could not allocate %d buffer indices\n",
- bufmap->desc_count);
+ if (!bufmap->buffer_index_array)
goto out_free_bufmap;
- }
bufmap->desc_array =
kcalloc(bufmap->desc_count, sizeof(struct orangefs_bufmap_desc),
GFP_KERNEL);
- if (!bufmap->desc_array) {
- gossip_err("orangefs: could not allocate %d descriptors\n",
- bufmap->desc_count);
+ if (!bufmap->desc_array)
goto out_free_index_array;
- }
bufmap->page_count = bufmap->total_size / PAGE_SIZE;
diff --git a/fs/orangefs/orangefs-bufmap.h b/fs/orangefs/orangefs-bufmap.h
index 71f64f4057b5..c2c3c5a0eeab 100644
--- a/fs/orangefs/orangefs-bufmap.h
+++ b/fs/orangefs/orangefs-bufmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/orangefs-cache.c b/fs/orangefs/orangefs-cache.c
index aa3830b741c7..3b6982bf6bcf 100644
--- a/fs/orangefs/orangefs-cache.c
+++ b/fs/orangefs/orangefs-cache.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/orangefs-debug.h b/fs/orangefs/orangefs-debug.h
index 387db17cde2b..b6001bb28f5a 100644
--- a/fs/orangefs/orangefs-debug.h
+++ b/fs/orangefs/orangefs-debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/orangefs-debugfs.c b/fs/orangefs/orangefs-debugfs.c
index 716ed337f166..1c59dff530de 100644
--- a/fs/orangefs/orangefs-debugfs.c
+++ b/fs/orangefs/orangefs-debugfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* What: /sys/kernel/debug/orangefs/debug-help
* Date: June 2015
@@ -571,11 +572,8 @@ static int orangefs_prepare_cdm_array(char *debug_array_string)
goto out;
}
- cdm_array =
- kzalloc(cdm_element_count * sizeof(struct client_debug_mask),
- GFP_KERNEL);
+ cdm_array = kcalloc(cdm_element_count, sizeof(*cdm_array), GFP_KERNEL);
if (!cdm_array) {
- pr_info("malloc failed for cdm_array!\n");
rc = -ENOMEM;
goto out;
}
diff --git a/fs/orangefs/orangefs-debugfs.h b/fs/orangefs/orangefs-debugfs.h
index 803517269ba6..b5fd9cd4960f 100644
--- a/fs/orangefs/orangefs-debugfs.h
+++ b/fs/orangefs/orangefs-debugfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
int orangefs_debugfs_init(int);
void orangefs_debugfs_cleanup(void);
int orangefs_client_debug_init(void);
diff --git a/fs/orangefs/orangefs-dev-proto.h b/fs/orangefs/orangefs-dev-proto.h
index efe08c763e56..dc6609824965 100644
--- a/fs/orangefs/orangefs-dev-proto.h
+++ b/fs/orangefs/orangefs-dev-proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h
index ea0ce507a6ab..004af348fb80 100644
--- a/fs/orangefs/orangefs-kernel.h
+++ b/fs/orangefs/orangefs-kernel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/orangefs-mod.c b/fs/orangefs/orangefs-mod.c
index c1b5174cb5a9..85ef87245a87 100644
--- a/fs/orangefs/orangefs-mod.c
+++ b/fs/orangefs/orangefs-mod.c
@@ -98,7 +98,6 @@ static int __init orangefs_init(void)
orangefs_htable_ops_in_progress =
kcalloc(hash_table_size, sizeof(struct list_head), GFP_KERNEL);
if (!orangefs_htable_ops_in_progress) {
- gossip_err("Failed to initialize op hashtable");
ret = -ENOMEM;
goto cleanup_inode;
}
diff --git a/fs/orangefs/orangefs-sysfs.c b/fs/orangefs/orangefs-sysfs.c
index afd2f523b283..079a465796f3 100644
--- a/fs/orangefs/orangefs-sysfs.c
+++ b/fs/orangefs/orangefs-sysfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Documentation/ABI/stable/orangefs-sysfs:
*
diff --git a/fs/orangefs/orangefs-utils.c b/fs/orangefs/orangefs-utils.c
index aab6f1842963..f82336496311 100644
--- a/fs/orangefs/orangefs-utils.c
+++ b/fs/orangefs/orangefs-utils.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/protocol.h b/fs/orangefs/protocol.h
index 48bcc1bbe415..e0bf5e4dce0d 100644
--- a/fs/orangefs/protocol.h
+++ b/fs/orangefs/protocol.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/spinlock_types.h>
diff --git a/fs/orangefs/super.c b/fs/orangefs/super.c
index 5a1bed6c8c6a..47ebd9bfd1a1 100644
--- a/fs/orangefs/super.c
+++ b/fs/orangefs/super.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
@@ -107,10 +108,8 @@ static struct inode *orangefs_alloc_inode(struct super_block *sb)
struct orangefs_inode_s *orangefs_inode;
orangefs_inode = kmem_cache_alloc(orangefs_inode_cache, GFP_KERNEL);
- if (orangefs_inode == NULL) {
- gossip_err("Failed to allocate orangefs_inode\n");
+ if (!orangefs_inode)
return NULL;
- }
/*
* We want to clear everything except for rw_semaphore and the
diff --git a/fs/orangefs/symlink.c b/fs/orangefs/symlink.c
index 02b1bbdbcc42..d856cdf91763 100644
--- a/fs/orangefs/symlink.c
+++ b/fs/orangefs/symlink.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/upcall.h b/fs/orangefs/upcall.h
index b8249f8fdd80..16118452aa12 100644
--- a/fs/orangefs/upcall.h
+++ b/fs/orangefs/upcall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* (C) 2001 Clemson University and The University of Chicago
*
diff --git a/fs/orangefs/waitqueue.c b/fs/orangefs/waitqueue.c
index 61e2ca7fec55..835c6e148afc 100644
--- a/fs/orangefs/waitqueue.c
+++ b/fs/orangefs/waitqueue.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
* (C) 2011 Omnibond Systems
diff --git a/fs/orangefs/xattr.c b/fs/orangefs/xattr.c
index 237c9c04dc3b..03bcb871544d 100644
--- a/fs/orangefs/xattr.c
+++ b/fs/orangefs/xattr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* (C) 2001 Clemson University and The University of Chicago
*
@@ -76,7 +77,7 @@ ssize_t orangefs_inode_getxattr(struct inode *inode, const char *name,
if (S_ISLNK(inode->i_mode))
return -EOPNOTSUPP;
- if (strlen(name) > ORANGEFS_MAX_XATTR_NAMELEN)
+ if (strlen(name) >= ORANGEFS_MAX_XATTR_NAMELEN)
return -EINVAL;
fsuid = from_kuid(&init_user_ns, current_fsuid());
@@ -169,7 +170,7 @@ static int orangefs_inode_removexattr(struct inode *inode, const char *name,
struct orangefs_kernel_op_s *new_op = NULL;
int ret = -ENOMEM;
- if (strlen(name) > ORANGEFS_MAX_XATTR_NAMELEN)
+ if (strlen(name) >= ORANGEFS_MAX_XATTR_NAMELEN)
return -EINVAL;
down_write(&orangefs_inode->xattr_sem);
@@ -233,13 +234,13 @@ int orangefs_inode_setxattr(struct inode *inode, const char *name,
if (size > ORANGEFS_MAX_XATTR_VALUELEN)
return -EINVAL;
- if (strlen(name) > ORANGEFS_MAX_XATTR_NAMELEN)
+ if (strlen(name) >= ORANGEFS_MAX_XATTR_NAMELEN)
return -EINVAL;
internal_flag = convert_to_internal_xattr_flags(flags);
/* This is equivalent to a removexattr */
- if (size == 0 && value == NULL) {
+ if (size == 0 && !value) {
gossip_debug(GOSSIP_XATTR_DEBUG,
"removing xattr (%s)\n",
name);
@@ -311,7 +312,7 @@ ssize_t orangefs_listxattr(struct dentry *dentry, char *buffer, size_t size)
int i = 0;
int returned_count = 0;
- if (size > 0 && buffer == NULL) {
+ if (size > 0 && !buffer) {
gossip_err("%s: bogus NULL pointers\n", __func__);
return -EINVAL;
}
@@ -442,7 +443,7 @@ static int orangefs_xattr_get_default(const struct xattr_handler *handler,
}
-static struct xattr_handler orangefs_xattr_default_handler = {
+static const struct xattr_handler orangefs_xattr_default_handler = {
.prefix = "", /* match any name => handlers called with full name */
.get = orangefs_xattr_get_default,
.set = orangefs_xattr_set_default,
diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c
index acb6f97deb97..c441f9387a1b 100644
--- a/fs/overlayfs/copy_up.c
+++ b/fs/overlayfs/copy_up.c
@@ -241,7 +241,7 @@ struct ovl_fh *ovl_encode_fh(struct dentry *lower, bool is_upper)
int buflen = MAX_HANDLE_SZ;
uuid_t *uuid = &lower->d_sb->s_uuid;
- buf = kmalloc(buflen, GFP_TEMPORARY);
+ buf = kmalloc(buflen, GFP_KERNEL);
if (!buf)
return ERR_PTR(-ENOMEM);
@@ -561,10 +561,8 @@ static int ovl_do_copy_up(struct ovl_copy_up_ctx *c)
c->tmpfile = true;
err = ovl_copy_up_locked(c);
} else {
- err = -EIO;
- if (lock_rename(c->workdir, c->destdir) != NULL) {
- pr_err("overlayfs: failed to lock workdir+upperdir\n");
- } else {
+ err = ovl_lock_rename_workdir(c->workdir, c->destdir);
+ if (!err) {
err = ovl_copy_up_locked(c);
unlock_rename(c->workdir, c->destdir);
}
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
index 9cb0c80e5967..cc961a3bd3bd 100644
--- a/fs/overlayfs/dir.c
+++ b/fs/overlayfs/dir.c
@@ -216,26 +216,6 @@ out_unlock:
return err;
}
-static int ovl_lock_rename_workdir(struct dentry *workdir,
- struct dentry *upperdir)
-{
- /* Workdir should not be the same as upperdir */
- if (workdir == upperdir)
- goto err;
-
- /* Workdir should not be subdir of upperdir and vice versa */
- if (lock_rename(workdir, upperdir) != NULL)
- goto err_unlock;
-
- return 0;
-
-err_unlock:
- unlock_rename(workdir, upperdir);
-err:
- pr_err("overlayfs: failed to lock workdir+upperdir\n");
- return -EIO;
-}
-
static struct dentry *ovl_clear_empty(struct dentry *dentry,
struct list_head *list)
{
@@ -833,7 +813,7 @@ static char *ovl_get_redirect(struct dentry *dentry, bool samedir)
goto out;
}
- buf = ret = kmalloc(buflen, GFP_TEMPORARY);
+ buf = ret = kmalloc(buflen, GFP_KERNEL);
if (!buf)
goto out;
diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
index a619addecafc..321511ed8c42 100644
--- a/fs/overlayfs/inode.c
+++ b/fs/overlayfs/inode.c
@@ -598,18 +598,30 @@ static bool ovl_verify_inode(struct inode *inode, struct dentry *lowerdentry,
return true;
}
-struct inode *ovl_get_inode(struct dentry *dentry, struct dentry *upperdentry)
+struct inode *ovl_get_inode(struct dentry *dentry, struct dentry *upperdentry,
+ struct dentry *index)
{
struct dentry *lowerdentry = ovl_dentry_lower(dentry);
struct inode *realinode = upperdentry ? d_inode(upperdentry) : NULL;
struct inode *inode;
+ /* Already indexed or could be indexed on copy up? */
+ bool indexed = (index || (ovl_indexdir(dentry->d_sb) && !upperdentry));
+
+ if (WARN_ON(upperdentry && indexed && !lowerdentry))
+ return ERR_PTR(-EIO);
if (!realinode)
realinode = d_inode(lowerdentry);
- if (!S_ISDIR(realinode->i_mode) &&
- (upperdentry || (lowerdentry && ovl_indexdir(dentry->d_sb)))) {
- struct inode *key = d_inode(lowerdentry ?: upperdentry);
+ /*
+ * Copy up origin (lower) may exist for non-indexed upper, but we must
+ * not use lower as hash key in that case.
+ * Hash inodes that are or could be indexed by origin inode and
+ * non-indexed upper inodes that could be hard linked by upper inode.
+ */
+ if (!S_ISDIR(realinode->i_mode) && (upperdentry || indexed)) {
+ struct inode *key = d_inode(indexed ? lowerdentry :
+ upperdentry);
unsigned int nlink;
inode = iget5_locked(dentry->d_sb, (unsigned long) key,
diff --git a/fs/overlayfs/namei.c b/fs/overlayfs/namei.c
index 8aef2b304b2d..a12dc10bf726 100644
--- a/fs/overlayfs/namei.c
+++ b/fs/overlayfs/namei.c
@@ -38,7 +38,7 @@ static int ovl_check_redirect(struct dentry *dentry, struct ovl_lookup_data *d,
return 0;
goto fail;
}
- buf = kzalloc(prelen + res + strlen(post) + 1, GFP_TEMPORARY);
+ buf = kzalloc(prelen + res + strlen(post) + 1, GFP_KERNEL);
if (!buf)
return -ENOMEM;
@@ -103,7 +103,7 @@ static struct ovl_fh *ovl_get_origin_fh(struct dentry *dentry)
if (res == 0)
return NULL;
- fh = kzalloc(res, GFP_TEMPORARY);
+ fh = kzalloc(res, GFP_KERNEL);
if (!fh)
return ERR_PTR(-ENOMEM);
@@ -309,7 +309,7 @@ static int ovl_check_origin(struct dentry *upperdentry,
BUG_ON(*ctrp);
if (!*stackp)
- *stackp = kmalloc(sizeof(struct path), GFP_TEMPORARY);
+ *stackp = kmalloc(sizeof(struct path), GFP_KERNEL);
if (!*stackp) {
dput(origin);
return -ENOMEM;
@@ -405,20 +405,19 @@ int ovl_verify_index(struct dentry *index, struct path *lowerstack,
* be treated as stale (i.e. after unlink of the overlay inode).
* We don't know the verification rules for directory and whiteout
* index entries, because they have not been implemented yet, so return
- * EROFS if those entries are found to avoid corrupting an index that
- * was created by a newer kernel.
+ * EINVAL if those entries are found to abort the mount to avoid
+ * corrupting an index that was created by a newer kernel.
*/
- err = -EROFS;
+ err = -EINVAL;
if (d_is_dir(index) || ovl_is_whiteout(index))
goto fail;
- err = -EINVAL;
if (index->d_name.len < sizeof(struct ovl_fh)*2)
goto fail;
err = -ENOMEM;
len = index->d_name.len / 2;
- fh = kzalloc(len, GFP_TEMPORARY);
+ fh = kzalloc(len, GFP_KERNEL);
if (!fh)
goto fail;
@@ -478,7 +477,7 @@ int ovl_get_index_name(struct dentry *origin, struct qstr *name)
return PTR_ERR(fh);
err = -ENOMEM;
- n = kzalloc(fh->len * 2, GFP_TEMPORARY);
+ n = kzalloc(fh->len * 2, GFP_KERNEL);
if (n) {
s = bin2hex(n, fh, fh->len);
*name = (struct qstr) QSTR_INIT(n, s - n);
@@ -506,6 +505,11 @@ static struct dentry *ovl_lookup_index(struct dentry *dentry,
index = lookup_one_len_unlocked(name.name, ofs->indexdir, name.len);
if (IS_ERR(index)) {
+ err = PTR_ERR(index);
+ if (err == -ENOENT) {
+ index = NULL;
+ goto out;
+ }
pr_warn_ratelimited("overlayfs: failed inode index lookup (ino=%lu, key=%*s, err=%i);\n"
"overlayfs: mount with '-o index=off' to disable inodes index.\n",
d_inode(origin)->i_ino, name.len, name.name,
@@ -515,18 +519,9 @@ static struct dentry *ovl_lookup_index(struct dentry *dentry,
inode = d_inode(index);
if (d_is_negative(index)) {
- if (upper && d_inode(origin)->i_nlink > 1) {
- pr_warn_ratelimited("overlayfs: hard link with origin but no index (ino=%lu).\n",
- d_inode(origin)->i_ino);
- goto fail;
- }
-
- dput(index);
- index = NULL;
+ goto out_dput;
} else if (upper && d_inode(upper) != inode) {
- pr_warn_ratelimited("overlayfs: wrong index found (index=%pd2, ino=%lu, upper ino=%lu).\n",
- index, inode->i_ino, d_inode(upper)->i_ino);
- goto fail;
+ goto out_dput;
} else if (ovl_dentry_weird(index) || ovl_is_whiteout(index) ||
((inode->i_mode ^ d_inode(origin)->i_mode) & S_IFMT)) {
/*
@@ -546,6 +541,11 @@ out:
kfree(name.name);
return index;
+out_dput:
+ dput(index);
+ index = NULL;
+ goto out;
+
fail:
dput(index);
index = ERR_PTR(-EIO);
@@ -634,6 +634,7 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
}
if (d.redirect) {
+ err = -ENOMEM;
upperredirect = kstrdup(d.redirect, GFP_KERNEL);
if (!upperredirect)
goto out_put_upper;
@@ -646,7 +647,7 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
if (!d.stop && poe->numlower) {
err = -ENOMEM;
stack = kcalloc(ofs->numlower, sizeof(struct path),
- GFP_TEMPORARY);
+ GFP_KERNEL);
if (!stack)
goto out_put_upper;
}
@@ -708,7 +709,7 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
upperdentry = dget(index);
if (upperdentry || ctr) {
- inode = ovl_get_inode(dentry, upperdentry);
+ inode = ovl_get_inode(dentry, upperdentry, index);
err = PTR_ERR(inode);
if (IS_ERR(inode))
goto out_free_oe;
diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h
index d4e8c1a08fb0..d9a0edd4e57e 100644
--- a/fs/overlayfs/overlayfs.h
+++ b/fs/overlayfs/overlayfs.h
@@ -235,6 +235,7 @@ bool ovl_inuse_trylock(struct dentry *dentry);
void ovl_inuse_unlock(struct dentry *dentry);
int ovl_nlink_start(struct dentry *dentry, bool *locked);
void ovl_nlink_end(struct dentry *dentry, bool locked);
+int ovl_lock_rename_workdir(struct dentry *workdir, struct dentry *upperdir);
static inline bool ovl_is_impuredir(struct dentry *dentry)
{
@@ -285,7 +286,8 @@ int ovl_update_time(struct inode *inode, struct timespec *ts, int flags);
bool ovl_is_private_xattr(const char *name);
struct inode *ovl_new_inode(struct super_block *sb, umode_t mode, dev_t rdev);
-struct inode *ovl_get_inode(struct dentry *dentry, struct dentry *upperdentry);
+struct inode *ovl_get_inode(struct dentry *dentry, struct dentry *upperdentry,
+ struct dentry *index);
static inline void ovl_copyattr(struct inode *from, struct inode *to)
{
to->i_uid = from->i_uid;
diff --git a/fs/overlayfs/ovl_entry.h b/fs/overlayfs/ovl_entry.h
index 878a750986dd..25d9b5adcd42 100644
--- a/fs/overlayfs/ovl_entry.h
+++ b/fs/overlayfs/ovl_entry.h
@@ -37,6 +37,9 @@ struct ovl_fs {
bool noxattr;
/* sb common to all layers */
struct super_block *same_sb;
+ /* Did we take the inuse lock? */
+ bool upperdir_locked;
+ bool workdir_locked;
};
/* private information held for every overlayfs dentry */
diff --git a/fs/overlayfs/readdir.c b/fs/overlayfs/readdir.c
index 62e9b22a2077..698b74dd750e 100644
--- a/fs/overlayfs/readdir.c
+++ b/fs/overlayfs/readdir.c
@@ -988,6 +988,7 @@ int ovl_indexdir_cleanup(struct dentry *dentry, struct vfsmount *mnt,
struct path *lowerstack, unsigned int numlower)
{
int err;
+ struct dentry *index = NULL;
struct inode *dir = dentry->d_inode;
struct path path = { .mnt = mnt, .dentry = dentry };
LIST_HEAD(list);
@@ -1007,8 +1008,6 @@ int ovl_indexdir_cleanup(struct dentry *dentry, struct vfsmount *mnt,
inode_lock_nested(dir, I_MUTEX_PARENT);
list_for_each_entry(p, &list, l_node) {
- struct dentry *index;
-
if (p->name[0] == '.') {
if (p->len == 1)
continue;
@@ -1018,18 +1017,20 @@ int ovl_indexdir_cleanup(struct dentry *dentry, struct vfsmount *mnt,
index = lookup_one_len(p->name, dentry, p->len);
if (IS_ERR(index)) {
err = PTR_ERR(index);
+ index = NULL;
break;
}
err = ovl_verify_index(index, lowerstack, numlower);
- if (err) {
- if (err == -EROFS)
- break;
+ /* Cleanup stale and orphan index entries */
+ if (err && (err == -ESTALE || err == -ENOENT))
err = ovl_cleanup(dir, index);
- if (err)
- break;
- }
+ if (err)
+ break;
+
dput(index);
+ index = NULL;
}
+ dput(index);
inode_unlock(dir);
out:
ovl_cache_free(&list);
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index cd49c0298ddf..f5738e96a052 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -174,6 +174,9 @@ static struct inode *ovl_alloc_inode(struct super_block *sb)
{
struct ovl_inode *oi = kmem_cache_alloc(ovl_inode_cachep, GFP_KERNEL);
+ if (!oi)
+ return NULL;
+
oi->cache = NULL;
oi->redirect = NULL;
oi->version = 0;
@@ -211,9 +214,10 @@ static void ovl_put_super(struct super_block *sb)
dput(ufs->indexdir);
dput(ufs->workdir);
- ovl_inuse_unlock(ufs->workbasedir);
+ if (ufs->workdir_locked)
+ ovl_inuse_unlock(ufs->workbasedir);
dput(ufs->workbasedir);
- if (ufs->upper_mnt)
+ if (ufs->upper_mnt && ufs->upperdir_locked)
ovl_inuse_unlock(ufs->upper_mnt->mnt_root);
mntput(ufs->upper_mnt);
for (i = 0; i < ufs->numlower; i++)
@@ -870,7 +874,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
goto out_free_config;
/* Upper fs should not be r/o */
- if (upperpath.mnt->mnt_sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(upperpath.mnt->mnt_sb)) {
pr_err("overlayfs: upper fs is r/o, try multi-lower layers mount\n");
err = -EINVAL;
goto out_put_upperpath;
@@ -881,9 +885,13 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
goto out_put_upperpath;
err = -EBUSY;
- if (!ovl_inuse_trylock(upperpath.dentry)) {
- pr_err("overlayfs: upperdir is in-use by another mount\n");
+ if (ovl_inuse_trylock(upperpath.dentry)) {
+ ufs->upperdir_locked = true;
+ } else if (ufs->config.index) {
+ pr_err("overlayfs: upperdir is in-use by another mount, mount with '-o index=off' to override exclusive upperdir protection.\n");
goto out_put_upperpath;
+ } else {
+ pr_warn("overlayfs: upperdir is in-use by another mount, accessing files from both mounts will result in undefined behavior.\n");
}
err = ovl_mount_dir(ufs->config.workdir, &workpath);
@@ -901,9 +909,13 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
}
err = -EBUSY;
- if (!ovl_inuse_trylock(workpath.dentry)) {
- pr_err("overlayfs: workdir is in-use by another mount\n");
+ if (ovl_inuse_trylock(workpath.dentry)) {
+ ufs->workdir_locked = true;
+ } else if (ufs->config.index) {
+ pr_err("overlayfs: workdir is in-use by another mount, mount with '-o index=off' to override exclusive workdir protection.\n");
goto out_put_workpath;
+ } else {
+ pr_warn("overlayfs: workdir is in-use by another mount, accessing files from both mounts will result in undefined behavior.\n");
}
ufs->workbasedir = workpath.dentry;
@@ -1156,11 +1168,13 @@ out_put_lowerpath:
out_free_lowertmp:
kfree(lowertmp);
out_unlock_workdentry:
- ovl_inuse_unlock(workpath.dentry);
+ if (ufs->workdir_locked)
+ ovl_inuse_unlock(workpath.dentry);
out_put_workpath:
path_put(&workpath);
out_unlock_upperdentry:
- ovl_inuse_unlock(upperpath.dentry);
+ if (ufs->upperdir_locked)
+ ovl_inuse_unlock(upperpath.dentry);
out_put_upperpath:
path_put(&upperpath);
out_free_config:
diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c
index 117794582f9f..b9b239fa5cfd 100644
--- a/fs/overlayfs/util.c
+++ b/fs/overlayfs/util.c
@@ -430,7 +430,7 @@ void ovl_inuse_unlock(struct dentry *dentry)
}
}
-/* Called must hold OVL_I(inode)->oi_lock */
+/* Caller must hold OVL_I(inode)->lock */
static void ovl_cleanup_index(struct dentry *dentry)
{
struct inode *dir = ovl_indexdir(dentry->d_sb)->d_inode;
@@ -469,6 +469,9 @@ static void ovl_cleanup_index(struct dentry *dentry)
err = PTR_ERR(index);
if (!IS_ERR(index))
err = ovl_cleanup(dir, index);
+ else
+ index = NULL;
+
inode_unlock(dir);
if (err)
goto fail;
@@ -557,3 +560,22 @@ void ovl_nlink_end(struct dentry *dentry, bool locked)
mutex_unlock(&OVL_I(d_inode(dentry))->lock);
}
}
+
+int ovl_lock_rename_workdir(struct dentry *workdir, struct dentry *upperdir)
+{
+ /* Workdir should not be the same as upperdir */
+ if (workdir == upperdir)
+ goto err;
+
+ /* Workdir should not be subdir of upperdir and vice versa */
+ if (lock_rename(workdir, upperdir) != NULL)
+ goto err_unlock;
+
+ return 0;
+
+err_unlock:
+ unlock_rename(workdir, upperdir);
+err:
+ pr_err("overlayfs: failed to lock workdir+upperdir\n");
+ return -EIO;
+}
diff --git a/fs/pipe.c b/fs/pipe.c
index 97e5be897753..349c9d56d4b3 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/pipe.c
*
diff --git a/fs/proc/Makefile b/fs/proc/Makefile
index 12c6922c913c..f7456c4e7d0f 100644
--- a/fs/proc/Makefile
+++ b/fs/proc/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the Linux proc filesystem routines.
#
diff --git a/fs/proc/array.c b/fs/proc/array.c
index 88c355574aa0..9390032a11e1 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/proc/array.c
*
@@ -62,6 +63,7 @@
#include <linux/mman.h>
#include <linux/sched/mm.h>
#include <linux/sched/numa_balancing.h>
+#include <linux/sched/task_stack.h>
#include <linux/sched/task.h>
#include <linux/sched/cputime.h>
#include <linux/proc_fs.h>
@@ -118,30 +120,25 @@ static inline void task_name(struct seq_file *m, struct task_struct *p)
* simple bit tests.
*/
static const char * const task_state_array[] = {
- "R (running)", /* 0 */
- "S (sleeping)", /* 1 */
- "D (disk sleep)", /* 2 */
- "T (stopped)", /* 4 */
- "t (tracing stop)", /* 8 */
- "X (dead)", /* 16 */
- "Z (zombie)", /* 32 */
+
+ /* states in TASK_REPORT: */
+ "R (running)", /* 0x00 */
+ "S (sleeping)", /* 0x01 */
+ "D (disk sleep)", /* 0x02 */
+ "T (stopped)", /* 0x04 */
+ "t (tracing stop)", /* 0x08 */
+ "X (dead)", /* 0x10 */
+ "Z (zombie)", /* 0x20 */
+ "P (parked)", /* 0x40 */
+
+ /* states beyond TASK_REPORT: */
+ "I (idle)", /* 0x80 */
};
static inline const char *get_task_state(struct task_struct *tsk)
{
- unsigned int state = (tsk->state | tsk->exit_state) & TASK_REPORT;
-
- /*
- * Parked tasks do not run; they sit in __kthread_parkme().
- * Without this check, we would report them as running, which is
- * clearly wrong, so we report them as sleeping instead.
- */
- if (tsk->state == TASK_PARKED)
- state = TASK_INTERRUPTIBLE;
-
- BUILD_BUG_ON(1 + ilog2(TASK_REPORT) != ARRAY_SIZE(task_state_array)-1);
-
- return task_state_array[fls(state)];
+ BUILD_BUG_ON(1 + ilog2(TASK_REPORT_MAX) != ARRAY_SIZE(task_state_array));
+ return task_state_array[__get_task_state(tsk)];
}
static inline int get_task_umask(struct task_struct *tsk)
@@ -421,7 +418,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
* esp and eip are intentionally zeroed out. There is no
* non-racy way to read them without freezing the task.
* Programs that need reliable values can use ptrace(2).
+ *
+ * The only exception is if the task is core dumping because
+ * a program is not able to use ptrace(2) in that case. It is
+ * safe because the task has stopped executing permanently.
*/
+ if (permitted && (task->flags & PF_DUMPCORE)) {
+ eip = KSTK_EIP(task);
+ esp = KSTK_ESP(task);
+ }
}
get_task_comm(tcomm, task);
diff --git a/fs/proc/base.c b/fs/proc/base.c
index e5d89a0d0b8a..9d357b2ea6cb 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/proc/base.c
*
@@ -232,7 +233,7 @@ static ssize_t proc_pid_cmdline_read(struct file *file, char __user *buf,
goto out_mmput;
}
- page = (char *)__get_free_page(GFP_TEMPORARY);
+ page = (char *)__get_free_page(GFP_KERNEL);
if (!page) {
rv = -ENOMEM;
goto out_mmput;
@@ -813,7 +814,7 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
if (!mm)
return 0;
- page = (char *)__get_free_page(GFP_TEMPORARY);
+ page = (char *)__get_free_page(GFP_KERNEL);
if (!page)
return -ENOMEM;
@@ -918,7 +919,7 @@ static ssize_t environ_read(struct file *file, char __user *buf,
if (!mm || !mm->env_end)
return 0;
- page = (char *)__get_free_page(GFP_TEMPORARY);
+ page = (char *)__get_free_page(GFP_KERNEL);
if (!page)
return -ENOMEM;
@@ -1630,7 +1631,7 @@ out:
static int do_proc_readlink(struct path *path, char __user *buffer, int buflen)
{
- char *tmp = (char*)__get_free_page(GFP_TEMPORARY);
+ char *tmp = (char *)__get_free_page(GFP_KERNEL);
char *pathname;
int len;
diff --git a/fs/proc/cmdline.c b/fs/proc/cmdline.c
index cbd82dff7e81..403cbb12a6e9 100644
--- a/fs/proc/cmdline.c
+++ b/fs/proc/cmdline.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
diff --git a/fs/proc/cpuinfo.c b/fs/proc/cpuinfo.c
index 06f4d31e0396..e0f867cd8553 100644
--- a/fs/proc/cpuinfo.c
+++ b/fs/proc/cpuinfo.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
diff --git a/fs/proc/devices.c b/fs/proc/devices.c
index e5709343feb7..2c7f22b14489 100644
--- a/fs/proc/devices.c
+++ b/fs/proc/devices.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
diff --git a/fs/proc/fd.c b/fs/proc/fd.c
index c330495c3115..96fc70225e54 100644
--- a/fs/proc/fd.c
+++ b/fs/proc/fd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/sched/signal.h>
#include <linux/errno.h>
#include <linux/dcache.h>
diff --git a/fs/proc/fd.h b/fs/proc/fd.h
index 46dafadd0083..f371a602bf58 100644
--- a/fs/proc/fd.h
+++ b/fs/proc/fd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PROCFS_FD_H__
#define __PROCFS_FD_H__
diff --git a/fs/proc/inode.c b/fs/proc/inode.c
index e250910cffc8..225f541f7078 100644
--- a/fs/proc/inode.c
+++ b/fs/proc/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/proc/inode.c
*
diff --git a/fs/proc/interrupts.c b/fs/proc/interrupts.c
index a352d5703b41..6a6bee9c603c 100644
--- a/fs/proc/interrupts.c
+++ b/fs/proc/interrupts.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/interrupt.h>
diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c
index 45629f4b5402..4bc85cb8be6a 100644
--- a/fs/proc/kcore.c
+++ b/fs/proc/kcore.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/proc/kcore.c kernel ELF core dumper
*
diff --git a/fs/proc/kmsg.c b/fs/proc/kmsg.c
index f9387bb7631b..e0f8774acd65 100644
--- a/fs/proc/kmsg.c
+++ b/fs/proc/kmsg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/proc/kmsg.c
*
diff --git a/fs/proc/loadavg.c b/fs/proc/loadavg.c
index 983fce5c2418..9bc5c58c00ee 100644
--- a/fs/proc/loadavg.c
+++ b/fs/proc/loadavg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/pid_namespace.h>
diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
index cdd979724c74..6bb20f864259 100644
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/kernel.h>
diff --git a/fs/proc/namespaces.c b/fs/proc/namespaces.c
index 3803b24ca220..59b17e509f46 100644
--- a/fs/proc/namespaces.c
+++ b/fs/proc/namespaces.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/proc_fs.h>
#include <linux/nsproxy.h>
#include <linux/ptrace.h>
diff --git a/fs/proc/page.c b/fs/proc/page.c
index 2726536489b1..1491918a33c3 100644
--- a/fs/proc/page.c
+++ b/fs/proc/page.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/bootmem.h>
#include <linux/compiler.h>
#include <linux/fs.h>
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index 8f479229b349..c5cbbdff3c3d 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* /proc/sys support
*/
diff --git a/fs/proc/proc_tty.c b/fs/proc/proc_tty.c
index 901bd06f437d..2da657848cfc 100644
--- a/fs/proc/proc_tty.c
+++ b/fs/proc/proc_tty.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* proc_tty.c -- handles /proc/tty
*
diff --git a/fs/proc/root.c b/fs/proc/root.c
index 926fb27f4ca2..4e42aba97f2e 100644
--- a/fs/proc/root.c
+++ b/fs/proc/root.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/proc/root.c
*
diff --git a/fs/proc/self.c b/fs/proc/self.c
index 39857f6db5cf..31326bb23b8b 100644
--- a/fs/proc/self.c
+++ b/fs/proc/self.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/pid_namespace.h>
diff --git a/fs/proc/softirqs.c b/fs/proc/softirqs.c
index ad8a77f94beb..24072cc06e65 100644
--- a/fs/proc/softirqs.c
+++ b/fs/proc/softirqs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/kernel_stat.h>
#include <linux/proc_fs.h>
diff --git a/fs/proc/stat.c b/fs/proc/stat.c
index bd4e55f4aa20..59749dfaef67 100644
--- a/fs/proc/stat.c
+++ b/fs/proc/stat.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/cpumask.h>
#include <linux/fs.h>
#include <linux/init.h>
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index 7b40e11ede9b..6744bd706ecf 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <linux/vmacache.h>
#include <linux/hugetlb.h>
@@ -1310,13 +1311,15 @@ static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned long end,
pmd_t pmd = *pmdp;
struct page *page = NULL;
- if ((vma->vm_flags & VM_SOFTDIRTY) || pmd_soft_dirty(pmd))
+ if (vma->vm_flags & VM_SOFTDIRTY)
flags |= PM_SOFT_DIRTY;
if (pmd_present(pmd)) {
page = pmd_page(pmd);
flags |= PM_PRESENT;
+ if (pmd_soft_dirty(pmd))
+ flags |= PM_SOFT_DIRTY;
if (pm->show_pfn)
frame = pmd_pfn(pmd) +
((addr & ~PMD_MASK) >> PAGE_SHIFT);
@@ -1328,6 +1331,8 @@ static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned long end,
frame = swp_type(entry) |
(swp_offset(entry) << MAX_SWAPFILES_SHIFT);
flags |= PM_SWAP;
+ if (pmd_swp_soft_dirty(pmd))
+ flags |= PM_SOFT_DIRTY;
VM_BUG_ON(!is_pmd_migration_entry(pmd));
page = migration_entry_to_page(entry);
}
@@ -1474,7 +1479,7 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
pm.show_pfn = file_ns_capable(file, &init_user_ns, CAP_SYS_ADMIN);
pm.len = (PAGEMAP_WALK_SIZE >> PAGE_SHIFT);
- pm.buffer = kmalloc(pm.len * PM_ENTRY_BYTES, GFP_TEMPORARY);
+ pm.buffer = kmalloc(pm.len * PM_ENTRY_BYTES, GFP_KERNEL);
ret = -ENOMEM;
if (!pm.buffer)
goto out_mm;
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
index dea90b566a6e..5b62f57bd9bc 100644
--- a/fs/proc/task_nommu.c
+++ b/fs/proc/task_nommu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/mm.h>
#include <linux/file.h>
@@ -145,7 +146,6 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
int is_pid)
{
struct mm_struct *mm = vma->vm_mm;
- struct proc_maps_private *priv = m->private;
unsigned long ino = 0;
struct file *file;
dev_t dev = 0;
diff --git a/fs/proc/thread_self.c b/fs/proc/thread_self.c
index 20614b62a9b7..b813e3b529f2 100644
--- a/fs/proc/thread_self.c
+++ b/fs/proc/thread_self.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/pid_namespace.h>
diff --git a/fs/proc/uptime.c b/fs/proc/uptime.c
index 7981c4ffe787..95a708d83721 100644
--- a/fs/proc/uptime.c
+++ b/fs/proc/uptime.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
diff --git a/fs/proc/version.c b/fs/proc/version.c
index d2154eb6d78f..94901e8e700d 100644
--- a/fs/proc/version.c
+++ b/fs/proc/version.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/kernel.h>
diff --git a/fs/proc_namespace.c b/fs/proc_namespace.c
index b5713fefb4c1..7626ee11b06c 100644
--- a/fs/proc_namespace.c
+++ b/fs/proc_namespace.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/proc_namespace.c - handling of /proc/<pid>/{mounts,mountinfo,mountstats}
*
@@ -178,7 +179,7 @@ static int show_mountinfo(struct seq_file *m, struct vfsmount *mnt)
} else {
mangle(m, r->mnt_devname ? r->mnt_devname : "none");
}
- seq_puts(m, sb->s_flags & MS_RDONLY ? " ro" : " rw");
+ seq_puts(m, sb_rdonly(sb) ? " ro" : " rw");
err = show_sb_opts(m, sb);
if (err)
goto out;
diff --git a/fs/pstore/Makefile b/fs/pstore/Makefile
index b8803cc07fce..967b5891f325 100644
--- a/fs/pstore/Makefile
+++ b/fs/pstore/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux pstorefs routines.
#
diff --git a/fs/pstore/internal.h b/fs/pstore/internal.h
index 7f4e48c8d188..c029314478fa 100644
--- a/fs/pstore/internal.h
+++ b/fs/pstore/internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PSTORE_INTERNAL_H__
#define __PSTORE_INTERNAL_H__
diff --git a/fs/qnx4/bitmap.c b/fs/qnx4/bitmap.c
index 76a7a697b778..163afc4ba4b2 100644
--- a/fs/qnx4/bitmap.c
+++ b/fs/qnx4/bitmap.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* QNX4 file system, Linux implementation.
*
diff --git a/fs/qnx4/dir.c b/fs/qnx4/dir.c
index 781056a0480f..a6ee23aadd28 100644
--- a/fs/qnx4/dir.c
+++ b/fs/qnx4/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* QNX4 file system, Linux implementation.
*
diff --git a/fs/qnx4/namei.c b/fs/qnx4/namei.c
index e62c8183777a..eca27878079d 100644
--- a/fs/qnx4/namei.c
+++ b/fs/qnx4/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* QNX4 file system, Linux implementation.
*
diff --git a/fs/qnx4/qnx4.h b/fs/qnx4/qnx4.h
index c9b1be2c164d..6283705466a4 100644
--- a/fs/qnx4/qnx4.h
+++ b/fs/qnx4/qnx4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/fs.h>
#include <linux/qnx4_fs.h>
diff --git a/fs/qnx6/dir.c b/fs/qnx6/dir.c
index 27637e0bdc9f..c1cfb8a19e9d 100644
--- a/fs/qnx6/dir.c
+++ b/fs/qnx6/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* QNX6 file system, Linux implementation.
*
diff --git a/fs/qnx6/namei.c b/fs/qnx6/namei.c
index 6c1a323137dd..72c2770830be 100644
--- a/fs/qnx6/namei.c
+++ b/fs/qnx6/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* QNX6 file system, Linux implementation.
*
diff --git a/fs/qnx6/qnx6.h b/fs/qnx6/qnx6.h
index f23b5c4a66ad..34a6b126a3a9 100644
--- a/fs/qnx6/qnx6.h
+++ b/fs/qnx6/qnx6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* QNX6 file system, Linux implementation.
*
diff --git a/fs/qnx6/super_mmi.c b/fs/qnx6/super_mmi.c
index 62aaf3e3126a..d282c2c73404 100644
--- a/fs/qnx6/super_mmi.c
+++ b/fs/qnx6/super_mmi.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* QNX6 file system, Linux implementation.
*
diff --git a/fs/quota/Makefile b/fs/quota/Makefile
index c66c37cdaa39..f2b49d0f0287 100644
--- a/fs/quota/Makefile
+++ b/fs/quota/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_QUOTA) += dquot.o
obj-$(CONFIG_QFMT_V1) += quota_v1.o
obj-$(CONFIG_QFMT_V2) += quota_v2.o
diff --git a/fs/quota/compat.c b/fs/quota/compat.c
index fb1892fe3e56..779caed4f078 100644
--- a/fs/quota/compat.c
+++ b/fs/quota/compat.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/syscalls.h>
#include <linux/compat.h>
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index 8381db9db6d9..9f78b5015f2e 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Implementation of the diskquota system for the LINUX operating system. QUOTA
* is implemented using the BSD system call interface as the means of
@@ -1297,21 +1298,18 @@ static int dquot_add_space(struct dquot *dquot, qsize_t space,
spin_lock(&dquot->dq_dqb_lock);
if (!sb_has_quota_limits_enabled(sb, dquot->dq_id.type) ||
test_bit(DQ_FAKE_B, &dquot->dq_flags))
- goto add;
+ goto finish;
tspace = dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace
+ space + rsv_space;
- if (flags & DQUOT_SPACE_NOFAIL)
- goto add;
-
if (dquot->dq_dqb.dqb_bhardlimit &&
tspace > dquot->dq_dqb.dqb_bhardlimit &&
!ignore_hardlimit(dquot)) {
if (flags & DQUOT_SPACE_WARN)
prepare_warning(warn, dquot, QUOTA_NL_BHARDWARN);
ret = -EDQUOT;
- goto out;
+ goto finish;
}
if (dquot->dq_dqb.dqb_bsoftlimit &&
@@ -1322,7 +1320,7 @@ static int dquot_add_space(struct dquot *dquot, qsize_t space,
if (flags & DQUOT_SPACE_WARN)
prepare_warning(warn, dquot, QUOTA_NL_BSOFTLONGWARN);
ret = -EDQUOT;
- goto out;
+ goto finish;
}
if (dquot->dq_dqb.dqb_bsoftlimit &&
@@ -1338,13 +1336,21 @@ static int dquot_add_space(struct dquot *dquot, qsize_t space,
* be always printed
*/
ret = -EDQUOT;
- goto out;
+ goto finish;
}
}
-add:
- dquot->dq_dqb.dqb_rsvspace += rsv_space;
- dquot->dq_dqb.dqb_curspace += space;
-out:
+finish:
+ /*
+ * We have to be careful and go through warning generation & grace time
+ * setting even if DQUOT_SPACE_NOFAIL is set. That's why we check it
+ * only here...
+ */
+ if (flags & DQUOT_SPACE_NOFAIL)
+ ret = 0;
+ if (!ret) {
+ dquot->dq_dqb.dqb_rsvspace += rsv_space;
+ dquot->dq_dqb.dqb_curspace += space;
+ }
spin_unlock(&dquot->dq_dqb_lock);
return ret;
}
@@ -1980,7 +1986,9 @@ int __dquot_transfer(struct inode *inode, struct dquot **transfer_to)
ret = dquot_add_space(transfer_to[cnt], cur_space, rsv_space, 0,
&warn_to[cnt]);
if (ret) {
+ spin_lock(&transfer_to[cnt]->dq_dqb_lock);
dquot_decr_inodes(transfer_to[cnt], inode_usage);
+ spin_unlock(&transfer_to[cnt]->dq_dqb_lock);
goto over_quota;
}
}
diff --git a/fs/quota/kqid.c b/fs/quota/kqid.c
index ebc5e6285800..f814fa90af38 100644
--- a/fs/quota/kqid.c
+++ b/fs/quota/kqid.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/quota.h>
#include <linux/export.h>
diff --git a/fs/quota/netlink.c b/fs/quota/netlink.c
index e99b1a72d9a7..95acdae391b4 100644
--- a/fs/quota/netlink.c
+++ b/fs/quota/netlink.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/cred.h>
#include <linux/init.h>
#include <linux/kernel.h>
diff --git a/fs/quota/quota.c b/fs/quota/quota.c
index 07e08c7d05ca..43612e2a73af 100644
--- a/fs/quota/quota.c
+++ b/fs/quota/quota.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Quota code necessary even when VFS quota support is not compiled
* into the kernel. The interesting stuff is over in dquot.c, here
@@ -753,7 +754,7 @@ static int do_quotactl(struct super_block *sb, int type, int cmd, qid_t id,
case Q_XGETNEXTQUOTA:
return quota_getnextxquota(sb, type, id, addr);
case Q_XQUOTASYNC:
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return -EROFS;
/* XFS quotas are fully coherent now, making this call a noop */
return 0;
diff --git a/fs/quota/quota_tree.h b/fs/quota/quota_tree.h
index a1ab8db81a51..31cf27e0e9e0 100644
--- a/fs/quota/quota_tree.h
+++ b/fs/quota/quota_tree.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions of structures for vfsv0 quota format
*/
diff --git a/fs/quota/quota_v2.c b/fs/quota/quota_v2.c
index c0187cda2c1e..a73e5b34db41 100644
--- a/fs/quota/quota_v2.c
+++ b/fs/quota/quota_v2.c
@@ -328,12 +328,16 @@ static int v2_write_dquot(struct dquot *dquot)
if (!dquot->dq_off) {
alloc = true;
down_write(&dqopt->dqio_sem);
+ } else {
+ down_read(&dqopt->dqio_sem);
}
ret = qtree_write_dquot(
sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv,
dquot);
if (alloc)
up_write(&dqopt->dqio_sem);
+ else
+ up_read(&dqopt->dqio_sem);
return ret;
}
diff --git a/fs/quota/quotaio_v1.h b/fs/quota/quotaio_v1.h
index 746654b5de70..bd11e2c08119 100644
--- a/fs/quota/quotaio_v1.h
+++ b/fs/quota/quotaio_v1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_QUOTAIO_V1_H
#define _LINUX_QUOTAIO_V1_H
diff --git a/fs/quota/quotaio_v2.h b/fs/quota/quotaio_v2.h
index 4e95430093d9..43cf0f0e2902 100644
--- a/fs/quota/quotaio_v2.h
+++ b/fs/quota/quotaio_v2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions of structures for vfsv0 quota format
*/
diff --git a/fs/read_write.c b/fs/read_write.c
index 61b58c7b6531..0046d72efe94 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/read_write.c
*
@@ -112,7 +113,7 @@ generic_file_llseek_size(struct file *file, loff_t offset, int whence,
* In the generic case the entire file is data, so as long as
* offset isn't at the end of the file then the offset is data.
*/
- if (offset >= eof)
+ if ((unsigned long long)offset >= eof)
return -ENXIO;
break;
case SEEK_HOLE:
@@ -120,7 +121,7 @@ generic_file_llseek_size(struct file *file, loff_t offset, int whence,
* There is a virtual hole at the end of the file, so as long as
* offset isn't i_size or larger, return i_size.
*/
- if (offset >= eof)
+ if ((unsigned long long)offset >= eof)
return -ENXIO;
offset = eof;
break;
@@ -413,7 +414,20 @@ ssize_t __vfs_read(struct file *file, char __user *buf, size_t count,
else
return -EINVAL;
}
-EXPORT_SYMBOL(__vfs_read);
+
+ssize_t kernel_read(struct file *file, void *buf, size_t count, loff_t *pos)
+{
+ mm_segment_t old_fs;
+ ssize_t result;
+
+ old_fs = get_fs();
+ set_fs(get_ds());
+ /* The cast to a user pointer is valid due to the set_fs() */
+ result = vfs_read(file, (void __user *)buf, count, pos);
+ set_fs(old_fs);
+ return result;
+}
+EXPORT_SYMBOL(kernel_read);
ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
{
@@ -441,8 +455,6 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
return ret;
}
-EXPORT_SYMBOL(vfs_read);
-
static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos)
{
struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len };
@@ -471,9 +483,8 @@ ssize_t __vfs_write(struct file *file, const char __user *p, size_t count,
else
return -EINVAL;
}
-EXPORT_SYMBOL(__vfs_write);
-ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
+ssize_t __kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos)
{
mm_segment_t old_fs;
const char __user *p;
@@ -496,9 +507,24 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t
inc_syscw(current);
return ret;
}
-
EXPORT_SYMBOL(__kernel_write);
+ssize_t kernel_write(struct file *file, const void *buf, size_t count,
+ loff_t *pos)
+{
+ mm_segment_t old_fs;
+ ssize_t res;
+
+ old_fs = get_fs();
+ set_fs(get_ds());
+ /* The cast to a user pointer is valid due to the set_fs() */
+ res = vfs_write(file, (__force const char __user *)buf, count, pos);
+ set_fs(old_fs);
+
+ return res;
+}
+EXPORT_SYMBOL(kernel_write);
+
ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos)
{
ssize_t ret;
@@ -527,8 +553,6 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
return ret;
}
-EXPORT_SYMBOL(vfs_write);
-
static inline loff_t file_pos_read(struct file *file)
{
return file->f_pos;
@@ -959,9 +983,8 @@ ssize_t vfs_readv(struct file *file, const struct iovec __user *vec,
return ret;
}
-EXPORT_SYMBOL(vfs_readv);
-ssize_t vfs_writev(struct file *file, const struct iovec __user *vec,
+static ssize_t vfs_writev(struct file *file, const struct iovec __user *vec,
unsigned long vlen, loff_t *pos, rwf_t flags)
{
struct iovec iovstack[UIO_FASTIOV];
@@ -978,7 +1001,6 @@ ssize_t vfs_writev(struct file *file, const struct iovec __user *vec,
}
return ret;
}
-EXPORT_SYMBOL(vfs_writev);
static ssize_t do_readv(unsigned long fd, const struct iovec __user *vec,
unsigned long vlen, rwf_t flags)
diff --git a/fs/readdir.c b/fs/readdir.c
index 89659549c09d..d336db65a33e 100644
--- a/fs/readdir.c
+++ b/fs/readdir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/readdir.c
*
diff --git a/fs/reiserfs/Makefile b/fs/reiserfs/Makefile
index 3c3b00165114..a39a562c1c10 100644
--- a/fs/reiserfs/Makefile
+++ b/fs/reiserfs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux reiser-filesystem routines.
#
diff --git a/fs/reiserfs/acl.h b/fs/reiserfs/acl.h
index 4a211f5b34b8..0c1c847f992f 100644
--- a/fs/reiserfs/acl.h
+++ b/fs/reiserfs/acl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/init.h>
#include <linux/posix_acl.h>
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
index 873fc04e9403..11a48affa882 100644
--- a/fs/reiserfs/inode.c
+++ b/fs/reiserfs/inode.c
@@ -1776,7 +1776,7 @@ int reiserfs_write_inode(struct inode *inode, struct writeback_control *wbc)
struct reiserfs_transaction_handle th;
int jbegin_count = 1;
- if (inode->i_sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(inode->i_sb))
return -EROFS;
/*
* memory pressure can sometimes initiate write_inode calls with
diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c
index 0c882a0e2a6e..69ff280bdfe8 100644
--- a/fs/reiserfs/journal.c
+++ b/fs/reiserfs/journal.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Write ahead logging implementation copyright Chris Mason 2000
*
@@ -1918,7 +1919,7 @@ static int do_journal_release(struct reiserfs_transaction_handle *th,
* we only want to flush out transactions if we were
* called with error == 0
*/
- if (!error && !(sb->s_flags & MS_RDONLY)) {
+ if (!error && !sb_rdonly(sb)) {
/* end the current trans */
BUG_ON(!th->t_trans_id);
do_journal_end(th, FLUSH_ALL);
diff --git a/fs/reiserfs/lock.c b/fs/reiserfs/lock.c
index 045b83ef9fd9..46bd7bd63a71 100644
--- a/fs/reiserfs/lock.c
+++ b/fs/reiserfs/lock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "reiserfs.h"
#include <linux/mutex.h>
diff --git a/fs/reiserfs/prints.c b/fs/reiserfs/prints.c
index 4f3f928076f3..64f49cafbc5b 100644
--- a/fs/reiserfs/prints.c
+++ b/fs/reiserfs/prints.c
@@ -386,7 +386,7 @@ void __reiserfs_error(struct super_block *sb, const char *id,
printk(KERN_CRIT "REISERFS error (device %s): %s: %s\n",
sb->s_id, function, error_buf);
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return;
reiserfs_info(sb, "Remounting filesystem read-only\n");
diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h
index 1d34377fef97..48835a659948 100644
--- a/fs/reiserfs/reiserfs.h
+++ b/fs/reiserfs/reiserfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 1996, 1997, 1998 Hans Reiser, see reiserfs/README for
* licensing and copyright details
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
index 306e4e9d172d..5464ec517702 100644
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
@@ -121,7 +121,7 @@ void reiserfs_schedule_old_flush(struct super_block *s)
* Avoid scheduling flush when sb is being shut down. It can race
* with journal shutdown and free still queued delayed work.
*/
- if (s->s_flags & MS_RDONLY || !(s->s_flags & MS_ACTIVE))
+ if (sb_rdonly(s) || !(s->s_flags & MS_ACTIVE))
return;
spin_lock(&sbi->old_work_lock);
@@ -151,7 +151,7 @@ static int reiserfs_freeze(struct super_block *s)
reiserfs_cancel_old_flush(s);
reiserfs_write_lock(s);
- if (!(s->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(s)) {
int err = journal_begin(&th, s, 1);
if (err) {
reiserfs_block_writes(&th);
@@ -599,7 +599,7 @@ static void reiserfs_put_super(struct super_block *s)
* change file system state to current state if it was mounted
* with read-write permissions
*/
- if (!(s->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(s)) {
if (!journal_begin(&th, s, 10)) {
reiserfs_prepare_for_journal(s, SB_BUFFER_WITH_SB(s),
1);
@@ -700,7 +700,7 @@ static void reiserfs_dirty_inode(struct inode *inode, int flags)
int err = 0;
- if (inode->i_sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(inode->i_sb)) {
reiserfs_warning(inode->i_sb, "clm-6006",
"writing inode %lu on readonly FS",
inode->i_ino);
@@ -1525,7 +1525,7 @@ static int reiserfs_remount(struct super_block *s, int *mount_flags, char *arg)
reiserfs_write_unlock(s);
reiserfs_xattr_init(s, *mount_flags);
/* remount read-only */
- if (s->s_flags & MS_RDONLY)
+ if (sb_rdonly(s))
/* it is read-only already */
goto out_ok_unlocked;
@@ -1551,7 +1551,7 @@ static int reiserfs_remount(struct super_block *s, int *mount_flags, char *arg)
journal_mark_dirty(&th, SB_BUFFER_WITH_SB(s));
} else {
/* remount read-write */
- if (!(s->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(s)) {
reiserfs_write_unlock(s);
reiserfs_xattr_init(s, *mount_flags);
goto out_ok_unlocked; /* We are read-write already */
@@ -1855,7 +1855,7 @@ static int what_hash(struct super_block *s)
* the super
*/
if (code != UNSET_HASH &&
- !(s->s_flags & MS_RDONLY) &&
+ !sb_rdonly(s) &&
code != sb_hash_function_code(SB_DISK_SUPER_BLOCK(s))) {
set_sb_hash_function_code(SB_DISK_SUPER_BLOCK(s), code);
}
@@ -2052,7 +2052,7 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent)
if (replay_only(s))
goto error_unlocked;
- if (bdev_read_only(s->s_bdev) && !(s->s_flags & MS_RDONLY)) {
+ if (bdev_read_only(s->s_bdev) && !sb_rdonly(s)) {
SWARN(silent, s, "clm-7000",
"Detected readonly device, marking FS readonly");
s->s_flags |= MS_RDONLY;
@@ -2101,7 +2101,7 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent)
else
set_bit(REISERFS_3_6, &sbi->s_properties);
- if (!(s->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(s)) {
errval = journal_begin(&th, s, 1);
if (errval) {
diff --git a/fs/reiserfs/tail_conversion.c b/fs/reiserfs/tail_conversion.c
index 2d5489b0a269..b0ae088dffc7 100644
--- a/fs/reiserfs/tail_conversion.c
+++ b/fs/reiserfs/tail_conversion.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright 1999 Hans Reiser, see reiserfs/README for licensing and copyright
* details
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
index e87aa21c30de..46492fb37a4c 100644
--- a/fs/reiserfs/xattr.c
+++ b/fs/reiserfs/xattr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/reiserfs/xattr.c
*
diff --git a/fs/reiserfs/xattr.h b/fs/reiserfs/xattr.h
index 613ff5aef94e..c764352447ba 100644
--- a/fs/reiserfs/xattr.h
+++ b/fs/reiserfs/xattr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/reiserfs_xattr.h>
#include <linux/init.h>
#include <linux/list.h>
diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c
index 54415f0e3d18..aa9380bac196 100644
--- a/fs/reiserfs/xattr_acl.c
+++ b/fs/reiserfs/xattr_acl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/capability.h>
#include <linux/fs.h>
#include <linux/posix_acl.h>
diff --git a/fs/reiserfs/xattr_security.c b/fs/reiserfs/xattr_security.c
index e4cbb7719906..20be9a0e5870 100644
--- a/fs/reiserfs/xattr_security.c
+++ b/fs/reiserfs/xattr_security.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "reiserfs.h"
#include <linux/errno.h>
#include <linux/fs.h>
diff --git a/fs/reiserfs/xattr_trusted.c b/fs/reiserfs/xattr_trusted.c
index f15a5f9e84ce..5ed48da3d02b 100644
--- a/fs/reiserfs/xattr_trusted.c
+++ b/fs/reiserfs/xattr_trusted.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "reiserfs.h"
#include <linux/capability.h>
#include <linux/errno.h>
diff --git a/fs/reiserfs/xattr_user.c b/fs/reiserfs/xattr_user.c
index dc59df43b2db..a573ca45bacc 100644
--- a/fs/reiserfs/xattr_user.c
+++ b/fs/reiserfs/xattr_user.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "reiserfs.h"
#include <linux/errno.h>
#include <linux/fs.h>
diff --git a/fs/romfs/Makefile b/fs/romfs/Makefile
index 420beb7d495c..844928f15711 100644
--- a/fs/romfs/Makefile
+++ b/fs/romfs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux RomFS filesystem routines.
#
diff --git a/fs/select.c b/fs/select.c
index c6362e38ae92..063067e606ca 100644
--- a/fs/select.c
+++ b/fs/select.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* This file contains the procedures for the handling of select and poll
*
diff --git a/fs/seq_file.c b/fs/seq_file.c
index dc7c2be963ed..4be761c1a03d 100644
--- a/fs/seq_file.c
+++ b/fs/seq_file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/seq_file.c
*
diff --git a/fs/signalfd.c b/fs/signalfd.c
index d2c434112f42..1c667af86da5 100644
--- a/fs/signalfd.c
+++ b/fs/signalfd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/signalfd.c
*
diff --git a/fs/splice.c b/fs/splice.c
index ae41201d0325..f3084cce0ea6 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -364,22 +364,6 @@ static ssize_t kernel_readv(struct file *file, const struct kvec *vec,
return res;
}
-ssize_t kernel_write(struct file *file, const char *buf, size_t count,
- loff_t pos)
-{
- mm_segment_t old_fs;
- ssize_t res;
-
- old_fs = get_fs();
- set_fs(get_ds());
- /* The cast to a user pointer is valid due to the set_fs() */
- res = vfs_write(file, (__force const char __user *)buf, count, &pos);
- set_fs(old_fs);
-
- return res;
-}
-EXPORT_SYMBOL(kernel_write);
-
static ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
struct pipe_inode_info *pipe, size_t len,
unsigned int flags)
diff --git a/fs/squashfs/Kconfig b/fs/squashfs/Kconfig
index ffb093e72b6c..1adb3346b9d6 100644
--- a/fs/squashfs/Kconfig
+++ b/fs/squashfs/Kconfig
@@ -165,6 +165,20 @@ config SQUASHFS_XZ
If unsure, say N.
+config SQUASHFS_ZSTD
+ bool "Include support for ZSTD compressed file systems"
+ depends on SQUASHFS
+ select ZSTD_DECOMPRESS
+ help
+ Saying Y here includes support for reading Squashfs file systems
+ compressed with ZSTD compression. ZSTD gives better compression than
+ the default ZLIB compression, while using less CPU.
+
+ ZSTD is not the standard compression used in Squashfs and so most
+ file systems will be readable without selecting this option.
+
+ If unsure, say N.
+
config SQUASHFS_4K_DEVBLK_SIZE
bool "Use 4K device block size?"
depends on SQUASHFS
diff --git a/fs/squashfs/Makefile b/fs/squashfs/Makefile
index 246a6f329d89..7bd9b8b856d0 100644
--- a/fs/squashfs/Makefile
+++ b/fs/squashfs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the linux squashfs routines.
#
@@ -15,3 +16,4 @@ squashfs-$(CONFIG_SQUASHFS_LZ4) += lz4_wrapper.o
squashfs-$(CONFIG_SQUASHFS_LZO) += lzo_wrapper.o
squashfs-$(CONFIG_SQUASHFS_XZ) += xz_wrapper.o
squashfs-$(CONFIG_SQUASHFS_ZLIB) += zlib_wrapper.o
+squashfs-$(CONFIG_SQUASHFS_ZSTD) += zstd_wrapper.o
diff --git a/fs/squashfs/decompressor.c b/fs/squashfs/decompressor.c
index d2bc13636f79..836639810ea0 100644
--- a/fs/squashfs/decompressor.c
+++ b/fs/squashfs/decompressor.c
@@ -65,6 +65,12 @@ static const struct squashfs_decompressor squashfs_zlib_comp_ops = {
};
#endif
+#ifndef CONFIG_SQUASHFS_ZSTD
+static const struct squashfs_decompressor squashfs_zstd_comp_ops = {
+ NULL, NULL, NULL, NULL, ZSTD_COMPRESSION, "zstd", 0
+};
+#endif
+
static const struct squashfs_decompressor squashfs_unknown_comp_ops = {
NULL, NULL, NULL, NULL, 0, "unknown", 0
};
@@ -75,6 +81,7 @@ static const struct squashfs_decompressor *decompressor[] = {
&squashfs_lzo_comp_ops,
&squashfs_xz_comp_ops,
&squashfs_lzma_unsupported_comp_ops,
+ &squashfs_zstd_comp_ops,
&squashfs_unknown_comp_ops
};
diff --git a/fs/squashfs/decompressor.h b/fs/squashfs/decompressor.h
index a25713c031a5..0f5a8e4e58da 100644
--- a/fs/squashfs/decompressor.h
+++ b/fs/squashfs/decompressor.h
@@ -58,4 +58,8 @@ extern const struct squashfs_decompressor squashfs_lzo_comp_ops;
extern const struct squashfs_decompressor squashfs_zlib_comp_ops;
#endif
+#ifdef CONFIG_SQUASHFS_ZSTD
+extern const struct squashfs_decompressor squashfs_zstd_comp_ops;
+#endif
+
#endif
diff --git a/fs/squashfs/squashfs_fs.h b/fs/squashfs/squashfs_fs.h
index 506f4ba5b983..24d12fd14177 100644
--- a/fs/squashfs/squashfs_fs.h
+++ b/fs/squashfs/squashfs_fs.h
@@ -241,6 +241,7 @@ struct meta_index {
#define LZO_COMPRESSION 3
#define XZ_COMPRESSION 4
#define LZ4_COMPRESSION 5
+#define ZSTD_COMPRESSION 6
struct squashfs_super_block {
__le32 s_magic;
diff --git a/fs/squashfs/zstd_wrapper.c b/fs/squashfs/zstd_wrapper.c
new file mode 100644
index 000000000000..eeaabf881159
--- /dev/null
+++ b/fs/squashfs/zstd_wrapper.c
@@ -0,0 +1,151 @@
+/*
+ * Squashfs - a compressed read only filesystem for Linux
+ *
+ * Copyright (c) 2016-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * zstd_wrapper.c
+ */
+
+#include <linux/mutex.h>
+#include <linux/buffer_head.h>
+#include <linux/slab.h>
+#include <linux/zstd.h>
+#include <linux/vmalloc.h>
+
+#include "squashfs_fs.h"
+#include "squashfs_fs_sb.h"
+#include "squashfs.h"
+#include "decompressor.h"
+#include "page_actor.h"
+
+struct workspace {
+ void *mem;
+ size_t mem_size;
+ size_t window_size;
+};
+
+static void *zstd_init(struct squashfs_sb_info *msblk, void *buff)
+{
+ struct workspace *wksp = kmalloc(sizeof(*wksp), GFP_KERNEL);
+
+ if (wksp == NULL)
+ goto failed;
+ wksp->window_size = max_t(size_t,
+ msblk->block_size, SQUASHFS_METADATA_SIZE);
+ wksp->mem_size = ZSTD_DStreamWorkspaceBound(wksp->window_size);
+ wksp->mem = vmalloc(wksp->mem_size);
+ if (wksp->mem == NULL)
+ goto failed;
+
+ return wksp;
+
+failed:
+ ERROR("Failed to allocate zstd workspace\n");
+ kfree(wksp);
+ return ERR_PTR(-ENOMEM);
+}
+
+
+static void zstd_free(void *strm)
+{
+ struct workspace *wksp = strm;
+
+ if (wksp)
+ vfree(wksp->mem);
+ kfree(wksp);
+}
+
+
+static int zstd_uncompress(struct squashfs_sb_info *msblk, void *strm,
+ struct buffer_head **bh, int b, int offset, int length,
+ struct squashfs_page_actor *output)
+{
+ struct workspace *wksp = strm;
+ ZSTD_DStream *stream;
+ size_t total_out = 0;
+ size_t zstd_err;
+ int k = 0;
+ ZSTD_inBuffer in_buf = { NULL, 0, 0 };
+ ZSTD_outBuffer out_buf = { NULL, 0, 0 };
+
+ stream = ZSTD_initDStream(wksp->window_size, wksp->mem, wksp->mem_size);
+
+ if (!stream) {
+ ERROR("Failed to initialize zstd decompressor\n");
+ goto out;
+ }
+
+ out_buf.size = PAGE_SIZE;
+ out_buf.dst = squashfs_first_page(output);
+
+ do {
+ if (in_buf.pos == in_buf.size && k < b) {
+ int avail = min(length, msblk->devblksize - offset);
+
+ length -= avail;
+ in_buf.src = bh[k]->b_data + offset;
+ in_buf.size = avail;
+ in_buf.pos = 0;
+ offset = 0;
+ }
+
+ if (out_buf.pos == out_buf.size) {
+ out_buf.dst = squashfs_next_page(output);
+ if (out_buf.dst == NULL) {
+ /* Shouldn't run out of pages
+ * before stream is done.
+ */
+ squashfs_finish_page(output);
+ goto out;
+ }
+ out_buf.pos = 0;
+ out_buf.size = PAGE_SIZE;
+ }
+
+ total_out -= out_buf.pos;
+ zstd_err = ZSTD_decompressStream(stream, &out_buf, &in_buf);
+ total_out += out_buf.pos; /* add the additional data produced */
+
+ if (in_buf.pos == in_buf.size && k < b)
+ put_bh(bh[k++]);
+ } while (zstd_err != 0 && !ZSTD_isError(zstd_err));
+
+ squashfs_finish_page(output);
+
+ if (ZSTD_isError(zstd_err)) {
+ ERROR("zstd decompression error: %d\n",
+ (int)ZSTD_getErrorCode(zstd_err));
+ goto out;
+ }
+
+ if (k < b)
+ goto out;
+
+ return (int)total_out;
+
+out:
+ for (; k < b; k++)
+ put_bh(bh[k]);
+
+ return -EIO;
+}
+
+const struct squashfs_decompressor squashfs_zstd_comp_ops = {
+ .init = zstd_init,
+ .free = zstd_free,
+ .decompress = zstd_uncompress,
+ .id = ZSTD_COMPRESSION,
+ .name = "zstd",
+ .supported = 1
+};
diff --git a/fs/stat.c b/fs/stat.c
index 8a6aa8caf891..873785dae022 100644
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/stat.c
*
diff --git a/fs/statfs.c b/fs/statfs.c
index fab9b6a3c116..c25dd9a26cc1 100644
--- a/fs/statfs.c
+++ b/fs/statfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/syscalls.h>
#include <linux/export.h>
#include <linux/fs.h>
diff --git a/fs/super.c b/fs/super.c
index 221cfa1f4e92..994db21f59bf 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/super.c
*
@@ -360,7 +361,7 @@ static int grab_super(struct super_block *s) __releases(sb_lock)
s->s_count++;
spin_unlock(&sb_lock);
down_write(&s->s_umount);
- if ((s->s_flags & MS_BORN) && atomic_inc_not_zero(&s->s_active)) {
+ if ((s->s_flags & SB_BORN) && atomic_inc_not_zero(&s->s_active)) {
put_super(s);
return 1;
}
@@ -390,7 +391,7 @@ bool trylock_super(struct super_block *sb)
{
if (down_read_trylock(&sb->s_umount)) {
if (!hlist_unhashed(&sb->s_instances) &&
- sb->s_root && (sb->s_flags & MS_BORN))
+ sb->s_root && (sb->s_flags & SB_BORN))
return true;
up_read(&sb->s_umount);
}
@@ -419,7 +420,7 @@ void generic_shutdown_super(struct super_block *sb)
if (sb->s_root) {
shrink_dcache_for_umount(sb);
sync_filesystem(sb);
- sb->s_flags &= ~MS_ACTIVE;
+ sb->s_flags &= ~SB_ACTIVE;
fsnotify_unmount_inodes(sb);
cgroup_writeback_umount();
@@ -472,7 +473,7 @@ struct super_block *sget_userns(struct file_system_type *type,
struct super_block *old;
int err;
- if (!(flags & (MS_KERNMOUNT|MS_SUBMOUNT)) &&
+ if (!(flags & (SB_KERNMOUNT|SB_SUBMOUNT)) &&
!(type->fs_flags & FS_USERNS_MOUNT) &&
!capable(CAP_SYS_ADMIN))
return ERR_PTR(-EPERM);
@@ -502,7 +503,7 @@ retry:
}
if (!s) {
spin_unlock(&sb_lock);
- s = alloc_super(type, (flags & ~MS_SUBMOUNT), user_ns);
+ s = alloc_super(type, (flags & ~SB_SUBMOUNT), user_ns);
if (!s)
return ERR_PTR(-ENOMEM);
goto retry;
@@ -547,11 +548,11 @@ struct super_block *sget(struct file_system_type *type,
* mount through to here so always use &init_user_ns
* until that changes.
*/
- if (flags & MS_SUBMOUNT)
+ if (flags & SB_SUBMOUNT)
user_ns = &init_user_ns;
/* Ensure the requestor has permissions over the target filesystem */
- if (!(flags & (MS_KERNMOUNT|MS_SUBMOUNT)) && !ns_capable(user_ns, CAP_SYS_ADMIN))
+ if (!(flags & (SB_KERNMOUNT|SB_SUBMOUNT)) && !ns_capable(user_ns, CAP_SYS_ADMIN))
return ERR_PTR(-EPERM);
return sget_userns(type, test, set, flags, user_ns, data);
@@ -594,7 +595,7 @@ void iterate_supers(void (*f)(struct super_block *, void *), void *arg)
spin_unlock(&sb_lock);
down_read(&sb->s_umount);
- if (sb->s_root && (sb->s_flags & MS_BORN))
+ if (sb->s_root && (sb->s_flags & SB_BORN))
f(sb, arg);
up_read(&sb->s_umount);
@@ -628,7 +629,7 @@ void iterate_supers_type(struct file_system_type *type,
spin_unlock(&sb_lock);
down_read(&sb->s_umount);
- if (sb->s_root && (sb->s_flags & MS_BORN))
+ if (sb->s_root && (sb->s_flags & SB_BORN))
f(sb, arg);
up_read(&sb->s_umount);
@@ -664,7 +665,7 @@ rescan:
else
down_write(&sb->s_umount);
/* still alive? */
- if (sb->s_root && (sb->s_flags & MS_BORN))
+ if (sb->s_root && (sb->s_flags & SB_BORN))
return sb;
if (!excl)
up_read(&sb->s_umount);
@@ -785,7 +786,7 @@ rescan:
spin_unlock(&sb_lock);
down_read(&sb->s_umount);
/* still alive? */
- if (sb->s_root && (sb->s_flags & MS_BORN))
+ if (sb->s_root && (sb->s_flags & SB_BORN))
return sb;
up_read(&sb->s_umount);
/* nope, got unmounted */
@@ -801,13 +802,13 @@ rescan:
/**
* do_remount_sb - asks filesystem to change mount options.
* @sb: superblock in question
- * @flags: numeric part of options
+ * @sb_flags: revised superblock flags
* @data: the rest of options
* @force: whether or not to force the change
*
* Alters the mount options of a mounted file system.
*/
-int do_remount_sb(struct super_block *sb, int flags, void *data, int force)
+int do_remount_sb(struct super_block *sb, int sb_flags, void *data, int force)
{
int retval;
int remount_ro;
@@ -816,11 +817,11 @@ int do_remount_sb(struct super_block *sb, int flags, void *data, int force)
return -EBUSY;
#ifdef CONFIG_BLOCK
- if (!(flags & MS_RDONLY) && bdev_read_only(sb->s_bdev))
+ if (!(sb_flags & SB_RDONLY) && bdev_read_only(sb->s_bdev))
return -EACCES;
#endif
- remount_ro = (flags & MS_RDONLY) && !(sb->s_flags & MS_RDONLY);
+ remount_ro = (sb_flags & SB_RDONLY) && !sb_rdonly(sb);
if (remount_ro) {
if (!hlist_empty(&sb->s_pins)) {
@@ -831,7 +832,7 @@ int do_remount_sb(struct super_block *sb, int flags, void *data, int force)
return 0;
if (sb->s_writers.frozen != SB_UNFROZEN)
return -EBUSY;
- remount_ro = (flags & MS_RDONLY) && !(sb->s_flags & MS_RDONLY);
+ remount_ro = (sb_flags & SB_RDONLY) && !sb_rdonly(sb);
}
}
shrink_dcache_sb(sb);
@@ -850,7 +851,7 @@ int do_remount_sb(struct super_block *sb, int flags, void *data, int force)
}
if (sb->s_op->remount_fs) {
- retval = sb->s_op->remount_fs(sb, &flags, data);
+ retval = sb->s_op->remount_fs(sb, &sb_flags, data);
if (retval) {
if (!force)
goto cancel_readonly;
@@ -859,7 +860,7 @@ int do_remount_sb(struct super_block *sb, int flags, void *data, int force)
sb->s_type->name, retval);
}
}
- sb->s_flags = (sb->s_flags & ~MS_RMT_MASK) | (flags & MS_RMT_MASK);
+ sb->s_flags = (sb->s_flags & ~MS_RMT_MASK) | (sb_flags & MS_RMT_MASK);
/* Needs to be ordered wrt mnt_is_readonly() */
smp_wmb();
sb->s_readonly_remount = 0;
@@ -892,12 +893,12 @@ static void do_emergency_remount(struct work_struct *work)
sb->s_count++;
spin_unlock(&sb_lock);
down_write(&sb->s_umount);
- if (sb->s_root && sb->s_bdev && (sb->s_flags & MS_BORN) &&
- !(sb->s_flags & MS_RDONLY)) {
+ if (sb->s_root && sb->s_bdev && (sb->s_flags & SB_BORN) &&
+ !sb_rdonly(sb)) {
/*
* What lock protects sb->s_flags??
*/
- do_remount_sb(sb, MS_RDONLY, NULL, 1);
+ do_remount_sb(sb, SB_RDONLY, NULL, 1);
}
up_write(&sb->s_umount);
spin_lock(&sb_lock);
@@ -1023,7 +1024,7 @@ struct dentry *mount_ns(struct file_system_type *fs_type,
/* Don't allow mounting unless the caller has CAP_SYS_ADMIN
* over the namespace.
*/
- if (!(flags & MS_KERNMOUNT) && !ns_capable(user_ns, CAP_SYS_ADMIN))
+ if (!(flags & SB_KERNMOUNT) && !ns_capable(user_ns, CAP_SYS_ADMIN))
return ERR_PTR(-EPERM);
sb = sget_userns(fs_type, ns_test_super, ns_set_super, flags,
@@ -1033,13 +1034,13 @@ struct dentry *mount_ns(struct file_system_type *fs_type,
if (!sb->s_root) {
int err;
- err = fill_super(sb, data, flags & MS_SILENT ? 1 : 0);
+ err = fill_super(sb, data, flags & SB_SILENT ? 1 : 0);
if (err) {
deactivate_locked_super(sb);
return ERR_PTR(err);
}
- sb->s_flags |= MS_ACTIVE;
+ sb->s_flags |= SB_ACTIVE;
}
return dget(sb->s_root);
@@ -1071,7 +1072,7 @@ struct dentry *mount_bdev(struct file_system_type *fs_type,
fmode_t mode = FMODE_READ | FMODE_EXCL;
int error = 0;
- if (!(flags & MS_RDONLY))
+ if (!(flags & SB_RDONLY))
mode |= FMODE_WRITE;
bdev = blkdev_get_by_path(dev_name, mode, fs_type);
@@ -1089,14 +1090,14 @@ struct dentry *mount_bdev(struct file_system_type *fs_type,
error = -EBUSY;
goto error_bdev;
}
- s = sget(fs_type, test_bdev_super, set_bdev_super, flags | MS_NOSEC,
+ s = sget(fs_type, test_bdev_super, set_bdev_super, flags | SB_NOSEC,
bdev);
mutex_unlock(&bdev->bd_fsfreeze_mutex);
if (IS_ERR(s))
goto error_s;
if (s->s_root) {
- if ((flags ^ s->s_flags) & MS_RDONLY) {
+ if ((flags ^ s->s_flags) & SB_RDONLY) {
deactivate_locked_super(s);
error = -EBUSY;
goto error_bdev;
@@ -1116,13 +1117,13 @@ struct dentry *mount_bdev(struct file_system_type *fs_type,
s->s_mode = mode;
snprintf(s->s_id, sizeof(s->s_id), "%pg", bdev);
sb_set_blocksize(s, block_size(bdev));
- error = fill_super(s, data, flags & MS_SILENT ? 1 : 0);
+ error = fill_super(s, data, flags & SB_SILENT ? 1 : 0);
if (error) {
deactivate_locked_super(s);
goto error;
}
- s->s_flags |= MS_ACTIVE;
+ s->s_flags |= SB_ACTIVE;
bdev->bd_super = s;
}
@@ -1162,12 +1163,12 @@ struct dentry *mount_nodev(struct file_system_type *fs_type,
if (IS_ERR(s))
return ERR_CAST(s);
- error = fill_super(s, data, flags & MS_SILENT ? 1 : 0);
+ error = fill_super(s, data, flags & SB_SILENT ? 1 : 0);
if (error) {
deactivate_locked_super(s);
return ERR_PTR(error);
}
- s->s_flags |= MS_ACTIVE;
+ s->s_flags |= SB_ACTIVE;
return dget(s->s_root);
}
EXPORT_SYMBOL(mount_nodev);
@@ -1188,12 +1189,12 @@ struct dentry *mount_single(struct file_system_type *fs_type,
if (IS_ERR(s))
return ERR_CAST(s);
if (!s->s_root) {
- error = fill_super(s, data, flags & MS_SILENT ? 1 : 0);
+ error = fill_super(s, data, flags & SB_SILENT ? 1 : 0);
if (error) {
deactivate_locked_super(s);
return ERR_PTR(error);
}
- s->s_flags |= MS_ACTIVE;
+ s->s_flags |= SB_ACTIVE;
} else {
do_remount_sb(s, flags, data, 0);
}
@@ -1227,7 +1228,7 @@ mount_fs(struct file_system_type *type, int flags, const char *name, void *data)
sb = root->d_sb;
BUG_ON(!sb);
WARN_ON(!sb->s_bdi);
- sb->s_flags |= MS_BORN;
+ sb->s_flags |= SB_BORN;
error = security_sb_kern_mount(sb, flags, secdata);
if (error)
@@ -1434,12 +1435,12 @@ int freeze_super(struct super_block *sb)
return -EBUSY;
}
- if (!(sb->s_flags & MS_BORN)) {
+ if (!(sb->s_flags & SB_BORN)) {
up_write(&sb->s_umount);
return 0; /* sic - it's "nothing to do" */
}
- if (sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(sb)) {
/* Nothing to do really... */
sb->s_writers.frozen = SB_FREEZE_COMPLETE;
up_write(&sb->s_umount);
@@ -1502,7 +1503,7 @@ int thaw_super(struct super_block *sb)
return -EINVAL;
}
- if (sb->s_flags & MS_RDONLY) {
+ if (sb_rdonly(sb)) {
sb->s_writers.frozen = SB_UNFROZEN;
goto out;
}
diff --git a/fs/sync.c b/fs/sync.c
index 2e3fd7d94d2d..83ac79a960dd 100644
--- a/fs/sync.c
+++ b/fs/sync.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* High-level sync()-related operations
*/
@@ -57,7 +58,7 @@ int sync_filesystem(struct super_block *sb)
/*
* No point in syncing out anything if the filesystem is read-only.
*/
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return 0;
ret = __sync_filesystem(sb, 0);
@@ -69,13 +70,13 @@ EXPORT_SYMBOL(sync_filesystem);
static void sync_inodes_one_sb(struct super_block *sb, void *arg)
{
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
sync_inodes_sb(sb);
}
static void sync_fs_one_sb(struct super_block *sb, void *arg)
{
- if (!(sb->s_flags & MS_RDONLY) && sb->s_op->sync_fs)
+ if (!sb_rdonly(sb) && sb->s_op->sync_fs)
sb->s_op->sync_fs(sb, *(int *)arg);
}
diff --git a/fs/sysv/balloc.c b/fs/sysv/balloc.c
index 921c053fc052..0e69dbdf7277 100644
--- a/fs/sysv/balloc.c
+++ b/fs/sysv/balloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/sysv/balloc.c
*
@@ -231,7 +232,7 @@ trust_sb:
Ecount:
printk("sysv_count_free_blocks: free block count was %d, "
"correcting to %d\n", sb_count, count);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
*sbi->s_free_blocks = cpu_to_fs32(sbi, count);
dirty_sb(sb);
}
diff --git a/fs/sysv/dir.c b/fs/sysv/dir.c
index f5191cb2c947..88e38cd8f5c9 100644
--- a/fs/sysv/dir.c
+++ b/fs/sysv/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/sysv/dir.c
*
diff --git a/fs/sysv/file.c b/fs/sysv/file.c
index 7ba997e31aeb..45fc79a18594 100644
--- a/fs/sysv/file.c
+++ b/fs/sysv/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/sysv/file.c
*
diff --git a/fs/sysv/ialloc.c b/fs/sysv/ialloc.c
index 53f1b78996dd..6c9801986af6 100644
--- a/fs/sysv/ialloc.c
+++ b/fs/sysv/ialloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/sysv/ialloc.c
*
@@ -220,7 +221,7 @@ Einval:
printk("sysv_count_free_inodes: "
"free inode count was %d, correcting to %d\n",
sb_count, count);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
*sbi->s_sb_total_free_inodes = cpu_to_fs16(SYSV_SB(sb), count);
dirty_sb(sb);
}
diff --git a/fs/sysv/inode.c b/fs/sysv/inode.c
index 858fb72f9e0f..3c47b7d5d4cf 100644
--- a/fs/sysv/inode.c
+++ b/fs/sysv/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/sysv/inode.c
*
@@ -70,7 +71,7 @@ static void sysv_put_super(struct super_block *sb)
{
struct sysv_sb_info *sbi = SYSV_SB(sb);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
/* XXX ext2 also updates the state here */
mark_buffer_dirty(sbi->s_bh1);
if (sbi->s_bh1 != sbi->s_bh2)
diff --git a/fs/sysv/itree.c b/fs/sysv/itree.c
index 83809f5b5eca..bcb67b0cabe7 100644
--- a/fs/sysv/itree.c
+++ b/fs/sysv/itree.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/sysv/itree.c
*
diff --git a/fs/sysv/namei.c b/fs/sysv/namei.c
index d8817f139763..250b0755b908 100644
--- a/fs/sysv/namei.c
+++ b/fs/sysv/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/sysv/namei.c
*
diff --git a/fs/sysv/super.c b/fs/sysv/super.c
index eda10959714f..0d56e486b392 100644
--- a/fs/sysv/super.c
+++ b/fs/sysv/super.c
@@ -216,7 +216,7 @@ static int detect_sysv(struct sysv_sb_info *sbi, struct buffer_head *bh)
if (fs16_to_cpu(sbi, sbd->s_nfree) == 0xffff) {
sbi->s_type = FSTYPE_AFS;
sbi->s_forced_ro = 1;
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
printk("SysV FS: SCO EAFS on %s detected, "
"forcing read-only mode.\n",
sb->s_id);
diff --git a/fs/sysv/sysv.h b/fs/sysv/sysv.h
index 1e7e27c729af..e913698779c0 100644
--- a/fs/sysv/sysv.h
+++ b/fs/sysv/sysv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SYSV_H
#define _SYSV_H
diff --git a/fs/timerfd.c b/fs/timerfd.c
index ece0c02d7e63..040612ec9598 100644
--- a/fs/timerfd.c
+++ b/fs/timerfd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* fs/timerfd.c
*
diff --git a/fs/ubifs/Makefile b/fs/ubifs/Makefile
index 6f3251c2bf08..9758f709c736 100644
--- a/fs/ubifs/Makefile
+++ b/fs/ubifs/Makefile
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_UBIFS_FS) += ubifs.o
ubifs-y += shrinker.o journal.o file.o dir.o super.o sb.o io.o
diff --git a/fs/ubifs/crypto.c b/fs/ubifs/crypto.c
index 114ba455bac3..16a5d5c82073 100644
--- a/fs/ubifs/crypto.c
+++ b/fs/ubifs/crypto.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include "ubifs.h"
static int ubifs_crypt_get_context(struct inode *inode, void *ctx, size_t len)
diff --git a/fs/ubifs/misc.c b/fs/ubifs/misc.c
index 486a2844949f..586fd5b578a7 100644
--- a/fs/ubifs/misc.c
+++ b/fs/ubifs/misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include "ubifs.h"
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index bffadbb67e47..5496b17b959c 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -1159,7 +1159,7 @@ static int mount_ubifs(struct ubifs_info *c)
long long x, y;
size_t sz;
- c->ro_mount = !!(c->vfs_sb->s_flags & MS_RDONLY);
+ c->ro_mount = !!sb_rdonly(c->vfs_sb);
/* Suppress error messages while probing if MS_SILENT is set */
c->probing = !!(c->vfs_sb->s_flags & MS_SILENT);
diff --git a/fs/udf/super.c b/fs/udf/super.c
index 93c59630512b..99cb81d0077f 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -673,7 +673,7 @@ static int udf_remount_fs(struct super_block *sb, int *flags, char *options)
sbi->s_dmode = uopt.dmode;
write_unlock(&sbi->s_cred_lock);
- if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
+ if ((bool)(*flags & MS_RDONLY) == sb_rdonly(sb))
goto out_unlock;
if (*flags & MS_RDONLY)
@@ -1017,7 +1017,7 @@ static int udf_load_metadata_files(struct super_block *sb, int partition,
fe = udf_iget_special(sb, &addr);
if (IS_ERR(fe)) {
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
udf_warn(sb, "bitmap inode efe not found but it's ok since the disc is mounted read-only\n");
else {
udf_err(sb, "bitmap inode efe not found and attempted read-write mount\n");
@@ -1341,7 +1341,7 @@ static int udf_load_partdesc(struct super_block *sb, sector_t block)
* writing to it (we overwrite blocks instead of relocating
* them).
*/
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
ret = -EACCES;
goto out_bh;
}
@@ -2205,7 +2205,7 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent)
ret = -EINVAL;
goto error_out;
} else if (minUDFWriteRev > UDF_MAX_WRITE_VERSION &&
- !(sb->s_flags & MS_RDONLY)) {
+ !sb_rdonly(sb)) {
ret = -EACCES;
goto error_out;
}
@@ -2226,7 +2226,7 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent)
if (sbi->s_partmaps[sbi->s_partition].s_partition_flags &
UDF_PART_FLAG_READ_ONLY &&
- !(sb->s_flags & MS_RDONLY)) {
+ !sb_rdonly(sb)) {
ret = -EACCES;
goto error_out;
}
@@ -2245,7 +2245,7 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent)
le16_to_cpu(ts.year), ts.month, ts.day,
ts.hour, ts.minute, le16_to_cpu(ts.typeAndTimezone));
}
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
udf_open_lvid(sb);
lvid_open = true;
}
@@ -2332,7 +2332,7 @@ static void udf_put_super(struct super_block *sb)
if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP))
unload_nls(sbi->s_nls_map);
#endif
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
udf_close_lvid(sb);
brelse(sbi->s_lvid_bh);
udf_sb_free_partitions(sb);
diff --git a/fs/udf/udf_i.h b/fs/udf/udf_i.h
index b1b9a63d8cf3..630426ffb775 100644
--- a/fs/udf/udf_i.h
+++ b/fs/udf/udf_i.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _UDF_I_H
#define _UDF_I_H
diff --git a/fs/udf/udf_sb.h b/fs/udf/udf_sb.h
index c13875d669c0..68c9f1d618f5 100644
--- a/fs/udf/udf_sb.h
+++ b/fs/udf/udf_sb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_UDF_SB_H
#define __LINUX_UDF_SB_H
diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h
index 63b034984378..fa206558128d 100644
--- a/fs/udf/udfdecl.h
+++ b/fs/udf/udfdecl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UDF_DECL_H
#define __UDF_DECL_H
diff --git a/fs/udf/udfend.h b/fs/udf/udfend.h
index 6a9f3a9cc428..a4363ac2cfeb 100644
--- a/fs/udf/udfend.h
+++ b/fs/udf/udfend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __UDF_ENDIAN_H
#define __UDF_ENDIAN_H
diff --git a/fs/ufs/balloc.c b/fs/ufs/balloc.c
index f80be4c5df9d..b5cd79065ef9 100644
--- a/fs/ufs/balloc.c
+++ b/fs/ufs/balloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ufs/balloc.c
*
diff --git a/fs/ufs/cylinder.c b/fs/ufs/cylinder.c
index b4676322ddb6..1abe5454de47 100644
--- a/fs/ufs/cylinder.c
+++ b/fs/ufs/cylinder.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ufs/cylinder.c
*
diff --git a/fs/ufs/dir.c b/fs/ufs/dir.c
index 48609f1d9580..2edc1755b7c5 100644
--- a/fs/ufs/dir.c
+++ b/fs/ufs/dir.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ufs/ufs_dir.c
*
diff --git a/fs/ufs/file.c b/fs/ufs/file.c
index 042ddbf110cc..7e087581be7e 100644
--- a/fs/ufs/file.c
+++ b/fs/ufs/file.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ufs/file.c
*
diff --git a/fs/ufs/ialloc.c b/fs/ufs/ialloc.c
index d1dd8cc33179..916b4a428933 100644
--- a/fs/ufs/ialloc.c
+++ b/fs/ufs/ialloc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ufs/ialloc.c
*
diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index f36d6a53687d..afb601c0dda0 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ufs/inode.c
*
diff --git a/fs/ufs/namei.c b/fs/ufs/namei.c
index 8eca4eda8450..32545cd00ceb 100644
--- a/fs/ufs/namei.c
+++ b/fs/ufs/namei.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ufs/namei.c
*
diff --git a/fs/ufs/super.c b/fs/ufs/super.c
index 0a4f58a5073c..6440003f8ddc 100644
--- a/fs/ufs/super.c
+++ b/fs/ufs/super.c
@@ -278,7 +278,7 @@ void ufs_error (struct super_block * sb, const char * function,
uspi = UFS_SB(sb)->s_uspi;
usb1 = ubh_get_usb_first(uspi);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
usb1->fs_clean = UFS_FSBAD;
ubh_mark_buffer_dirty(USPI_UBH(uspi));
ufs_mark_sb_dirty(sb);
@@ -312,7 +312,7 @@ void ufs_panic (struct super_block * sb, const char * function,
uspi = UFS_SB(sb)->s_uspi;
usb1 = ubh_get_usb_first(uspi);
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
usb1->fs_clean = UFS_FSBAD;
ubh_mark_buffer_dirty(USPI_UBH(uspi));
ufs_mark_sb_dirty(sb);
@@ -742,7 +742,7 @@ static void ufs_put_super(struct super_block *sb)
UFSD("ENTER\n");
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
ufs_put_super_internal(sb);
cancel_delayed_work_sync(&sbi->sync_work);
@@ -793,7 +793,7 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
UFSD("ENTER\n");
#ifndef CONFIG_UFS_FS_WRITE
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
pr_err("ufs was compiled with read-only support, can't be mounted as read-write\n");
return -EROFS;
}
@@ -805,7 +805,7 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
sb->s_fs_info = sbi;
sbi->sb = sb;
- UFSD("flag %u\n", (int)(sb->s_flags & MS_RDONLY));
+ UFSD("flag %u\n", (int)(sb_rdonly(sb)));
mutex_init(&sbi->s_lock);
spin_lock_init(&sbi->work_lock);
@@ -902,7 +902,7 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
uspi->s_sbsize = super_block_size = 2048;
uspi->s_sbbase = 0;
flags |= UFS_DE_OLD | UFS_UID_OLD | UFS_ST_OLD | UFS_CG_OLD;
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!silent)
pr_info("ufstype=old is supported read-only\n");
sb->s_flags |= MS_RDONLY;
@@ -918,7 +918,7 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
uspi->s_sbbase = 0;
uspi->s_dirblksize = 1024;
flags |= UFS_DE_OLD | UFS_UID_OLD | UFS_ST_OLD | UFS_CG_OLD;
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!silent)
pr_info("ufstype=nextstep is supported read-only\n");
sb->s_flags |= MS_RDONLY;
@@ -934,7 +934,7 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
uspi->s_sbbase = 0;
uspi->s_dirblksize = 1024;
flags |= UFS_DE_OLD | UFS_UID_OLD | UFS_ST_OLD | UFS_CG_OLD;
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!silent)
pr_info("ufstype=nextstep-cd is supported read-only\n");
sb->s_flags |= MS_RDONLY;
@@ -950,7 +950,7 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
uspi->s_sbbase = 0;
uspi->s_dirblksize = 1024;
flags |= UFS_DE_44BSD | UFS_UID_44BSD | UFS_ST_44BSD | UFS_CG_44BSD;
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!silent)
pr_info("ufstype=openstep is supported read-only\n");
sb->s_flags |= MS_RDONLY;
@@ -965,7 +965,7 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
uspi->s_sbsize = super_block_size = 2048;
uspi->s_sbbase = 0;
flags |= UFS_DE_OLD | UFS_UID_OLD | UFS_ST_OLD | UFS_CG_OLD;
- if (!(sb->s_flags & MS_RDONLY)) {
+ if (!sb_rdonly(sb)) {
if (!silent)
pr_info("ufstype=hp is supported read-only\n");
sb->s_flags |= MS_RDONLY;
@@ -1273,7 +1273,7 @@ magic_found:
/*
* Read cylinder group structures
*/
- if (!(sb->s_flags & MS_RDONLY))
+ if (!sb_rdonly(sb))
if (!ufs_read_cylinder_structures(sb))
goto failed;
@@ -1328,7 +1328,7 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
return -EINVAL;
}
- if ((*mount_flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) {
+ if ((bool)(*mount_flags & MS_RDONLY) == sb_rdonly(sb)) {
UFS_SB(sb)->s_mount_opt = new_mount_opt;
mutex_unlock(&UFS_SB(sb)->s_lock);
return 0;
diff --git a/fs/ufs/swab.h b/fs/ufs/swab.h
index 8d974c4fd18b..a0e1d8c827f4 100644
--- a/fs/ufs/swab.h
+++ b/fs/ufs/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/ufs/swab.h
*
diff --git a/fs/ufs/ufs.h b/fs/ufs/ufs.h
index c87f4c3fa9dd..b49e0efdf3d7 100644
--- a/fs/ufs/ufs.h
+++ b/fs/ufs/ufs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _UFS_UFS_H
#define _UFS_UFS_H 1
diff --git a/fs/ufs/ufs_fs.h b/fs/ufs/ufs_fs.h
index 150eef6f1233..ef9ead44776a 100644
--- a/fs/ufs/ufs_fs.h
+++ b/fs/ufs/ufs_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/ufs_fs.h
*
diff --git a/fs/ufs/util.c b/fs/ufs/util.c
index 02497a492eb2..4fa633f84274 100644
--- a/fs/ufs/util.c
+++ b/fs/ufs/util.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* linux/fs/ufs/util.c
*
diff --git a/fs/ufs/util.h b/fs/ufs/util.h
index 9fc7119a1551..1907be6d5808 100644
--- a/fs/ufs/util.h
+++ b/fs/ufs/util.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/fs/ufs/util.h
*
diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
index ef4b48d1ea42..1c713fd5b3e6 100644
--- a/fs/userfaultfd.c
+++ b/fs/userfaultfd.c
@@ -588,6 +588,12 @@ static void userfaultfd_event_wait_completion(struct userfaultfd_ctx *ctx,
break;
if (ACCESS_ONCE(ctx->released) ||
fatal_signal_pending(current)) {
+ /*
+ * &ewq->wq may be queued in fork_event, but
+ * __remove_wait_queue ignores the head
+ * parameter. It would be a problem if it
+ * didn't.
+ */
__remove_wait_queue(&ctx->event_wqh, &ewq->wq);
if (ewq->msg.event == UFFD_EVENT_FORK) {
struct userfaultfd_ctx *new;
@@ -1061,6 +1067,12 @@ static ssize_t userfaultfd_ctx_read(struct userfaultfd_ctx *ctx, int no_wait,
(unsigned long)
uwq->msg.arg.reserved.reserved1;
list_move(&uwq->wq.entry, &fork_event);
+ /*
+ * fork_nctx can be freed as soon as
+ * we drop the lock, unless we take a
+ * reference on it.
+ */
+ userfaultfd_ctx_get(fork_nctx);
spin_unlock(&ctx->event_wqh.lock);
ret = 0;
break;
@@ -1091,19 +1103,53 @@ static ssize_t userfaultfd_ctx_read(struct userfaultfd_ctx *ctx, int no_wait,
if (!ret && msg->event == UFFD_EVENT_FORK) {
ret = resolve_userfault_fork(ctx, fork_nctx, msg);
+ spin_lock(&ctx->event_wqh.lock);
+ if (!list_empty(&fork_event)) {
+ /*
+ * The fork thread didn't abort, so we can
+ * drop the temporary refcount.
+ */
+ userfaultfd_ctx_put(fork_nctx);
+
+ uwq = list_first_entry(&fork_event,
+ typeof(*uwq),
+ wq.entry);
+ /*
+ * If fork_event list wasn't empty and in turn
+ * the event wasn't already released by fork
+ * (the event is allocated on fork kernel
+ * stack), put the event back to its place in
+ * the event_wq. fork_event head will be freed
+ * as soon as we return so the event cannot
+ * stay queued there no matter the current
+ * "ret" value.
+ */
+ list_del(&uwq->wq.entry);
+ __add_wait_queue(&ctx->event_wqh, &uwq->wq);
- if (!ret) {
- spin_lock(&ctx->event_wqh.lock);
- if (!list_empty(&fork_event)) {
- uwq = list_first_entry(&fork_event,
- typeof(*uwq),
- wq.entry);
- list_del(&uwq->wq.entry);
- __add_wait_queue(&ctx->event_wqh, &uwq->wq);
+ /*
+ * Leave the event in the waitqueue and report
+ * error to userland if we failed to resolve
+ * the userfault fork.
+ */
+ if (likely(!ret))
userfaultfd_event_complete(ctx, uwq);
- }
- spin_unlock(&ctx->event_wqh.lock);
+ } else {
+ /*
+ * Here the fork thread aborted and the
+ * refcount from the fork thread on fork_nctx
+ * has already been released. We still hold
+ * the reference we took before releasing the
+ * lock above. If resolve_userfault_fork
+ * failed we've to drop it because the
+ * fork_nctx has to be freed in such case. If
+ * it succeeded we'll hold it because the new
+ * uffd references it.
+ */
+ if (ret)
+ userfaultfd_ctx_put(fork_nctx);
}
+ spin_unlock(&ctx->event_wqh.lock);
}
return ret;
diff --git a/fs/utimes.c b/fs/utimes.c
index 6571d8c848a0..e4b3d7c2c9f5 100644
--- a/fs/utimes.c
+++ b/fs/utimes.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
#include <linux/file.h>
#include <linux/mount.h>
#include <linux/namei.h>
@@ -22,7 +23,7 @@
*/
SYSCALL_DEFINE2(utime, char __user *, filename, struct utimbuf __user *, times)
{
- struct timespec tv[2];
+ struct timespec64 tv[2];
if (times) {
if (get_user(tv[0].tv_sec, &times->actime) ||
@@ -44,7 +45,7 @@ static bool nsec_valid(long nsec)
return nsec >= 0 && nsec <= 999999999;
}
-static int utimes_common(const struct path *path, struct timespec *times)
+static int utimes_common(const struct path *path, struct timespec64 *times)
{
int error;
struct iattr newattrs;
@@ -115,7 +116,7 @@ out:
* must be owner or have write permission.
* Else, update from *times, must be owner or super user.
*/
-long do_utimes(int dfd, const char __user *filename, struct timespec *times,
+long do_utimes(int dfd, const char __user *filename, struct timespec64 *times,
int flags)
{
int error = -EINVAL;
@@ -167,10 +168,11 @@ out:
SYSCALL_DEFINE4(utimensat, int, dfd, const char __user *, filename,
struct timespec __user *, utimes, int, flags)
{
- struct timespec tstimes[2];
+ struct timespec64 tstimes[2];
if (utimes) {
- if (copy_from_user(&tstimes, utimes, sizeof(tstimes)))
+ if ((get_timespec64(&tstimes[0], &utimes[0]) ||
+ get_timespec64(&tstimes[1], &utimes[1])))
return -EFAULT;
/* Nothing to do, we must not even check the path. */
@@ -186,7 +188,7 @@ SYSCALL_DEFINE3(futimesat, int, dfd, const char __user *, filename,
struct timeval __user *, utimes)
{
struct timeval times[2];
- struct timespec tstimes[2];
+ struct timespec64 tstimes[2];
if (utimes) {
if (copy_from_user(&times, utimes, sizeof(times)))
@@ -224,7 +226,7 @@ SYSCALL_DEFINE2(utimes, char __user *, filename,
COMPAT_SYSCALL_DEFINE2(utime, const char __user *, filename,
struct compat_utimbuf __user *, t)
{
- struct timespec tv[2];
+ struct timespec64 tv[2];
if (t) {
if (get_user(tv[0].tv_sec, &t->actime) ||
@@ -238,11 +240,11 @@ COMPAT_SYSCALL_DEFINE2(utime, const char __user *, filename,
COMPAT_SYSCALL_DEFINE4(utimensat, unsigned int, dfd, const char __user *, filename, struct compat_timespec __user *, t, int, flags)
{
- struct timespec tv[2];
+ struct timespec64 tv[2];
if (t) {
- if (compat_get_timespec(&tv[0], &t[0]) ||
- compat_get_timespec(&tv[1], &t[1]))
+ if (compat_get_timespec64(&tv[0], &t[0]) ||
+ compat_get_timespec64(&tv[1], &t[1]))
return -EFAULT;
if (tv[0].tv_nsec == UTIME_OMIT && tv[1].tv_nsec == UTIME_OMIT)
@@ -253,7 +255,7 @@ COMPAT_SYSCALL_DEFINE4(utimensat, unsigned int, dfd, const char __user *, filena
COMPAT_SYSCALL_DEFINE3(futimesat, unsigned int, dfd, const char __user *, filename, struct compat_timeval __user *, t)
{
- struct timespec tv[2];
+ struct timespec64 tv[2];
if (t) {
if (get_user(tv[0].tv_sec, &t[0].tv_sec) ||
diff --git a/fs/xattr.c b/fs/xattr.c
index 4424f7fecf14..61cd28ba25f3 100644
--- a/fs/xattr.c
+++ b/fs/xattr.c
@@ -250,7 +250,7 @@ xattr_getsecurity(struct inode *inode, const char *name, void *value,
}
memcpy(value, buffer, len);
out:
- security_release_secctx(buffer, len);
+ kfree(buffer);
out_noalloc:
return len;
}
diff --git a/fs/xfs/libxfs/xfs_ag_resv.c b/fs/xfs/libxfs/xfs_ag_resv.c
index b008ff3250eb..df3e600835e8 100644
--- a/fs/xfs/libxfs/xfs_ag_resv.c
+++ b/fs/xfs/libxfs/xfs_ag_resv.c
@@ -156,7 +156,8 @@ __xfs_ag_resv_free(
trace_xfs_ag_resv_free(pag, type, 0);
resv = xfs_perag_resv(pag, type);
- pag->pag_mount->m_ag_max_usable += resv->ar_asked;
+ if (pag->pag_agno == 0)
+ pag->pag_mount->m_ag_max_usable += resv->ar_asked;
/*
* AGFL blocks are always considered "free", so whatever
* was reserved at mount time must be given back at umount.
@@ -216,7 +217,14 @@ __xfs_ag_resv_init(
return error;
}
- mp->m_ag_max_usable -= ask;
+ /*
+ * Reduce the maximum per-AG allocation length by however much we're
+ * trying to reserve for an AG. Since this is a filesystem-wide
+ * counter, we only make the adjustment for AG 0. This assumes that
+ * there aren't any AGs hungrier for per-AG reservation than AG 0.
+ */
+ if (pag->pag_agno == 0)
+ mp->m_ag_max_usable -= ask;
resv = xfs_perag_resv(pag, type);
resv->ar_asked = ask;
diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c
index 744dcaec34cc..f965ce832bc0 100644
--- a/fs/xfs/libxfs/xfs_alloc.c
+++ b/fs/xfs/libxfs/xfs_alloc.c
@@ -1584,6 +1584,10 @@ xfs_alloc_ag_vextent_small(
bp = xfs_btree_get_bufs(args->mp, args->tp,
args->agno, fbno, 0);
+ if (!bp) {
+ error = -EFSCORRUPTED;
+ goto error0;
+ }
xfs_trans_binval(args->tp, bp);
}
args->len = 1;
@@ -2141,6 +2145,10 @@ xfs_alloc_fix_freelist(
if (error)
goto out_agbp_relse;
bp = xfs_btree_get_bufs(mp, tp, args->agno, bno, 0);
+ if (!bp) {
+ error = -EFSCORRUPTED;
+ goto out_agbp_relse;
+ }
xfs_trans_binval(tp, bp);
}
diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
index 459f4b4f08fe..89263797cf32 100644
--- a/fs/xfs/libxfs/xfs_bmap.c
+++ b/fs/xfs/libxfs/xfs_bmap.c
@@ -49,7 +49,6 @@
#include "xfs_rmap.h"
#include "xfs_ag_resv.h"
#include "xfs_refcount.h"
-#include "xfs_rmap_btree.h"
#include "xfs_icache.h"
@@ -192,12 +191,8 @@ xfs_bmap_worst_indlen(
int maxrecs; /* maximum record count at this level */
xfs_mount_t *mp; /* mount structure */
xfs_filblks_t rval; /* return value */
- xfs_filblks_t orig_len;
mp = ip->i_mount;
-
- /* Calculate the worst-case size of the bmbt. */
- orig_len = len;
maxrecs = mp->m_bmap_dmxr[0];
for (level = 0, rval = 0;
level < XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK);
@@ -205,20 +200,12 @@ xfs_bmap_worst_indlen(
len += maxrecs - 1;
do_div(len, maxrecs);
rval += len;
- if (len == 1) {
- rval += XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK) -
+ if (len == 1)
+ return rval + XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK) -
level - 1;
- break;
- }
if (level == 0)
maxrecs = mp->m_bmap_dmxr[1];
}
-
- /* Calculate the worst-case size of the rmapbt. */
- if (xfs_sb_version_hasrmapbt(&mp->m_sb))
- rval += 1 + xfs_rmapbt_calc_size(mp, orig_len) +
- mp->m_rmap_maxlevels;
-
return rval;
}
@@ -1490,14 +1477,14 @@ xfs_bmap_isaeof(
int is_empty;
int error;
- bma->aeof = 0;
+ bma->aeof = false;
error = xfs_bmap_last_extent(NULL, bma->ip, whichfork, &rec,
&is_empty);
if (error)
return error;
if (is_empty) {
- bma->aeof = 1;
+ bma->aeof = true;
return 0;
}
@@ -3865,6 +3852,17 @@ xfs_trim_extent(
}
}
+/* trim extent to within eof */
+void
+xfs_trim_extent_eof(
+ struct xfs_bmbt_irec *irec,
+ struct xfs_inode *ip)
+
+{
+ xfs_trim_extent(irec, 0, XFS_B_TO_FSB(ip->i_mount,
+ i_size_read(VFS_I(ip))));
+}
+
/*
* Trim the returned map to the required bounds
*/
diff --git a/fs/xfs/libxfs/xfs_bmap.h b/fs/xfs/libxfs/xfs_bmap.h
index 851982a5dfbc..502e0d8fb4ff 100644
--- a/fs/xfs/libxfs/xfs_bmap.h
+++ b/fs/xfs/libxfs/xfs_bmap.h
@@ -208,6 +208,7 @@ void xfs_bmap_trace_exlist(struct xfs_inode *ip, xfs_extnum_t cnt,
void xfs_trim_extent(struct xfs_bmbt_irec *irec, xfs_fileoff_t bno,
xfs_filblks_t len);
+void xfs_trim_extent_eof(struct xfs_bmbt_irec *, struct xfs_inode *);
int xfs_bmap_add_attrfork(struct xfs_inode *ip, int size, int rsvd);
void xfs_bmap_local_to_extents_empty(struct xfs_inode *ip, int whichfork);
void xfs_bmap_add_free(struct xfs_mount *mp, struct xfs_defer_ops *dfops,
diff --git a/fs/xfs/libxfs/xfs_cksum.h b/fs/xfs/libxfs/xfs_cksum.h
index 8211f48b98e6..999a290cfd72 100644
--- a/fs/xfs/libxfs/xfs_cksum.h
+++ b/fs/xfs/libxfs/xfs_cksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XFS_CKSUM_H
#define _XFS_CKSUM_H 1
diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c
index 988bb3f31446..dfd643909f85 100644
--- a/fs/xfs/libxfs/xfs_ialloc.c
+++ b/fs/xfs/libxfs/xfs_ialloc.c
@@ -1962,7 +1962,7 @@ xfs_difree_inobt(
if (!(mp->m_flags & XFS_MOUNT_IKEEP) &&
rec.ir_free == XFS_INOBT_ALL_FREE &&
mp->m_sb.sb_inopblock <= XFS_INODES_PER_CHUNK) {
- xic->deleted = 1;
+ xic->deleted = true;
xic->first_ino = XFS_AGINO_TO_INO(mp, agno, rec.ir_startino);
xic->alloc = xfs_inobt_irec_to_allocmask(&rec);
@@ -1989,7 +1989,7 @@ xfs_difree_inobt(
xfs_difree_inode_chunk(mp, agno, &rec, dfops);
} else {
- xic->deleted = 0;
+ xic->deleted = false;
error = xfs_inobt_update(cur, &rec);
if (error) {
diff --git a/fs/xfs/libxfs/xfs_log_format.h b/fs/xfs/libxfs/xfs_log_format.h
index 8372e9bcd7b6..71de185735e0 100644
--- a/fs/xfs/libxfs/xfs_log_format.h
+++ b/fs/xfs/libxfs/xfs_log_format.h
@@ -270,6 +270,7 @@ typedef struct xfs_inode_log_format {
uint32_t ilf_fields; /* flags for fields logged */
uint16_t ilf_asize; /* size of attr d/ext/root */
uint16_t ilf_dsize; /* size of data/ext/root */
+ uint32_t ilf_pad; /* pad for 64 bit boundary */
uint64_t ilf_ino; /* inode number */
union {
uint32_t ilfu_rdev; /* rdev value for dev inode*/
@@ -280,29 +281,17 @@ typedef struct xfs_inode_log_format {
int32_t ilf_boffset; /* off of inode in buffer */
} xfs_inode_log_format_t;
-typedef struct xfs_inode_log_format_32 {
- uint16_t ilf_type; /* inode log item type */
- uint16_t ilf_size; /* size of this item */
- uint32_t ilf_fields; /* flags for fields logged */
- uint16_t ilf_asize; /* size of attr d/ext/root */
- uint16_t ilf_dsize; /* size of data/ext/root */
- uint64_t ilf_ino; /* inode number */
- union {
- uint32_t ilfu_rdev; /* rdev value for dev inode*/
- uuid_t ilfu_uuid; /* mount point value */
- } ilf_u;
- int64_t ilf_blkno; /* blkno of inode buffer */
- int32_t ilf_len; /* len of inode buffer */
- int32_t ilf_boffset; /* off of inode in buffer */
-} __attribute__((packed)) xfs_inode_log_format_32_t;
-
-typedef struct xfs_inode_log_format_64 {
+/*
+ * Old 32 bit systems will log in this format without the 64 bit
+ * alignment padding. Recovery will detect this and convert it to the
+ * correct format.
+ */
+struct xfs_inode_log_format_32 {
uint16_t ilf_type; /* inode log item type */
uint16_t ilf_size; /* size of this item */
uint32_t ilf_fields; /* flags for fields logged */
uint16_t ilf_asize; /* size of attr d/ext/root */
uint16_t ilf_dsize; /* size of data/ext/root */
- uint32_t ilf_pad; /* pad for 64 bit boundary */
uint64_t ilf_ino; /* inode number */
union {
uint32_t ilfu_rdev; /* rdev value for dev inode*/
@@ -311,7 +300,7 @@ typedef struct xfs_inode_log_format_64 {
int64_t ilf_blkno; /* blkno of inode buffer */
int32_t ilf_len; /* len of inode buffer */
int32_t ilf_boffset; /* off of inode in buffer */
-} xfs_inode_log_format_64_t;
+} __attribute__((packed));
/*
diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c
index 7034e17535de..3354140de07e 100644
--- a/fs/xfs/xfs_acl.c
+++ b/fs/xfs/xfs_acl.c
@@ -247,6 +247,8 @@ xfs_set_mode(struct inode *inode, umode_t mode)
int
xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
{
+ umode_t mode;
+ bool set_mode = false;
int error = 0;
if (!acl)
@@ -257,16 +259,24 @@ xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
return error;
if (type == ACL_TYPE_ACCESS) {
- umode_t mode;
-
error = posix_acl_update_mode(inode, &mode, &acl);
if (error)
return error;
- error = xfs_set_mode(inode, mode);
- if (error)
- return error;
+ set_mode = true;
}
set_acl:
- return __xfs_set_acl(inode, acl, type);
+ error = __xfs_set_acl(inode, acl, type);
+ if (error)
+ return error;
+
+ /*
+ * We set the mode after successfully updating the ACL xattr because the
+ * xattr update can fail at ENOSPC and we don't want to change the mode
+ * if the ACL update hasn't been applied.
+ */
+ if (set_mode)
+ error = xfs_set_mode(inode, mode);
+
+ return error;
}
diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
index 29172609f2a3..a3eeaba156c5 100644
--- a/fs/xfs/xfs_aops.c
+++ b/fs/xfs/xfs_aops.c
@@ -343,7 +343,8 @@ xfs_end_io(
error = xfs_reflink_end_cow(ip, offset, size);
break;
case XFS_IO_UNWRITTEN:
- error = xfs_iomap_write_unwritten(ip, offset, size);
+ /* writeback should never update isize */
+ error = xfs_iomap_write_unwritten(ip, offset, size, false);
break;
default:
ASSERT(!xfs_ioend_is_append(ioend) || ioend->io_append_trans);
@@ -445,6 +446,19 @@ xfs_imap_valid(
{
offset >>= inode->i_blkbits;
+ /*
+ * We have to make sure the cached mapping is within EOF to protect
+ * against eofblocks trimming on file release leaving us with a stale
+ * mapping. Otherwise, a page for a subsequent file extending buffered
+ * write could get picked up by this writeback cycle and written to the
+ * wrong blocks.
+ *
+ * Note that what we really want here is a generic mapping invalidation
+ * mechanism to protect us from arbitrary extent modifying contexts, not
+ * just eofblocks.
+ */
+ xfs_trim_extent_eof(imap, XFS_I(inode));
+
return offset >= imap->br_startoff &&
offset < imap->br_startoff + imap->br_blockcount;
}
@@ -734,6 +748,14 @@ xfs_vm_invalidatepage(
{
trace_xfs_invalidatepage(page->mapping->host, page, offset,
length);
+
+ /*
+ * If we are invalidating the entire page, clear the dirty state from it
+ * so that we can check for attempts to release dirty cached pages in
+ * xfs_vm_releasepage().
+ */
+ if (offset == 0 && length >= PAGE_SIZE)
+ cancel_dirty_page(page);
block_invalidatepage(page, offset, length);
}
@@ -1189,25 +1211,27 @@ xfs_vm_releasepage(
* mm accommodates an old ext3 case where clean pages might not have had
* the dirty bit cleared. Thus, it can send actual dirty pages to
* ->releasepage() via shrink_active_list(). Conversely,
- * block_invalidatepage() can send pages that are still marked dirty
- * but otherwise have invalidated buffers.
+ * block_invalidatepage() can send pages that are still marked dirty but
+ * otherwise have invalidated buffers.
*
* We want to release the latter to avoid unnecessary buildup of the
- * LRU, skip the former and warn if we've left any lingering
- * delalloc/unwritten buffers on clean pages. Skip pages with delalloc
- * or unwritten buffers and warn if the page is not dirty. Otherwise
- * try to release the buffers.
+ * LRU, so xfs_vm_invalidatepage() clears the page dirty flag on pages
+ * that are entirely invalidated and need to be released. Hence the
+ * only time we should get dirty pages here is through
+ * shrink_active_list() and so we can simply skip those now.
+ *
+ * warn if we've left any lingering delalloc/unwritten buffers on clean
+ * or invalidated pages we are about to release.
*/
+ if (PageDirty(page))
+ return 0;
+
xfs_count_page_state(page, &delalloc, &unwritten);
- if (delalloc) {
- WARN_ON_ONCE(!PageDirty(page));
+ if (WARN_ON_ONCE(delalloc))
return 0;
- }
- if (unwritten) {
- WARN_ON_ONCE(!PageDirty(page));
+ if (WARN_ON_ONCE(unwritten))
return 0;
- }
return try_to_free_buffers(page);
}
diff --git a/fs/xfs/xfs_attr_inactive.c b/fs/xfs/xfs_attr_inactive.c
index ebd66b19fbfc..e3a950ed35a8 100644
--- a/fs/xfs/xfs_attr_inactive.c
+++ b/fs/xfs/xfs_attr_inactive.c
@@ -302,6 +302,8 @@ xfs_attr3_node_inactive(
&bp, XFS_ATTR_FORK);
if (error)
return error;
+ node = bp->b_addr;
+ btree = dp->d_ops->node_tree_p(node);
child_fsb = be32_to_cpu(btree[i + 1].before);
xfs_trans_brelse(*trans, bp);
}
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
index cd9a5400ba4f..6503cfa44262 100644
--- a/fs/xfs/xfs_bmap_util.c
+++ b/fs/xfs/xfs_bmap_util.c
@@ -84,6 +84,7 @@ xfs_zero_extent(
GFP_NOFS, 0);
}
+#ifdef CONFIG_XFS_RT
int
xfs_bmap_rtalloc(
struct xfs_bmalloca *ap) /* bmap alloc argument struct */
@@ -190,6 +191,7 @@ xfs_bmap_rtalloc(
}
return 0;
}
+#endif /* CONFIG_XFS_RT */
/*
* Check if the endoff is outside the last extent. If so the caller will grow
@@ -1459,7 +1461,19 @@ xfs_shift_file_space(
return error;
/*
- * The extent shiting code works on extent granularity. So, if
+ * Clean out anything hanging around in the cow fork now that
+ * we've flushed all the dirty data out to disk to avoid having
+ * CoW extents at the wrong offsets.
+ */
+ if (xfs_is_reflink_inode(ip)) {
+ error = xfs_reflink_cancel_cow_range(ip, offset, NULLFILEOFF,
+ true);
+ if (error)
+ return error;
+ }
+
+ /*
+ * The extent shifting code works on extent granularity. So, if
* stop_fsb is not the starting block of extent, we need to split
* the extent at stop_fsb.
*/
@@ -2110,11 +2124,31 @@ xfs_swap_extents(
ip->i_d.di_flags2 |= tip->i_d.di_flags2 & XFS_DIFLAG2_REFLINK;
tip->i_d.di_flags2 &= ~XFS_DIFLAG2_REFLINK;
tip->i_d.di_flags2 |= f & XFS_DIFLAG2_REFLINK;
+ }
+
+ /* Swap the cow forks. */
+ if (xfs_sb_version_hasreflink(&mp->m_sb)) {
+ xfs_extnum_t extnum;
+
+ ASSERT(ip->i_cformat == XFS_DINODE_FMT_EXTENTS);
+ ASSERT(tip->i_cformat == XFS_DINODE_FMT_EXTENTS);
+
+ extnum = ip->i_cnextents;
+ ip->i_cnextents = tip->i_cnextents;
+ tip->i_cnextents = extnum;
+
cowfp = ip->i_cowfp;
ip->i_cowfp = tip->i_cowfp;
tip->i_cowfp = cowfp;
- xfs_inode_set_cowblocks_tag(ip);
- xfs_inode_set_cowblocks_tag(tip);
+
+ if (ip->i_cowfp && ip->i_cnextents)
+ xfs_inode_set_cowblocks_tag(ip);
+ else
+ xfs_inode_clear_cowblocks_tag(ip);
+ if (tip->i_cowfp && tip->i_cnextents)
+ xfs_inode_set_cowblocks_tag(tip);
+ else
+ xfs_inode_clear_cowblocks_tag(tip);
}
xfs_trans_log_inode(tp, ip, src_log_flags);
diff --git a/fs/xfs/xfs_bmap_util.h b/fs/xfs/xfs_bmap_util.h
index 0eaa81dc49be..7d330b3c77c3 100644
--- a/fs/xfs/xfs_bmap_util.h
+++ b/fs/xfs/xfs_bmap_util.h
@@ -28,7 +28,20 @@ struct xfs_mount;
struct xfs_trans;
struct xfs_bmalloca;
+#ifdef CONFIG_XFS_RT
int xfs_bmap_rtalloc(struct xfs_bmalloca *ap);
+#else /* !CONFIG_XFS_RT */
+/*
+ * Attempts to allocate RT extents when RT is disable indicates corruption and
+ * should trigger a shutdown.
+ */
+static inline int
+xfs_bmap_rtalloc(struct xfs_bmalloca *ap)
+{
+ return -EFSCORRUPTED;
+}
+#endif /* CONFIG_XFS_RT */
+
int xfs_bmap_eof(struct xfs_inode *ip, xfs_fileoff_t endoff,
int whichfork, int *eof);
int xfs_bmap_punch_delalloc_range(struct xfs_inode *ip,
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
index da14658da310..2f97c12ca75e 100644
--- a/fs/xfs/xfs_buf.c
+++ b/fs/xfs/xfs_buf.c
@@ -1258,8 +1258,6 @@ xfs_buf_ioapply_map(
int size;
int offset;
- total_nr_pages = bp->b_page_count;
-
/* skip the pages in the buffer before the start offset */
page_index = 0;
offset = *buf_offset;
diff --git a/fs/xfs/xfs_discard.h b/fs/xfs/xfs_discard.h
index 0f070f9e44e1..de92d9cc958f 100644
--- a/fs/xfs/xfs_discard.h
+++ b/fs/xfs/xfs_discard.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef XFS_DISCARD_H
#define XFS_DISCARD_H 1
diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c
index bd786a9ac2c3..eaf86f55b7f2 100644
--- a/fs/xfs/xfs_error.c
+++ b/fs/xfs/xfs_error.c
@@ -347,7 +347,7 @@ xfs_verifier_error(
{
struct xfs_mount *mp = bp->b_target->bt_mount;
- xfs_alert(mp, "Metadata %s detected at %pF, %s block 0x%llx",
+ xfs_alert(mp, "Metadata %s detected at %pS, %s block 0x%llx",
bp->b_error == -EFSBADCRC ? "CRC error" : "corruption",
__return_address, bp->b_ops->name, bp->b_bn);
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index ec3e44fcf771..6526ef0e2a23 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -58,7 +58,7 @@ xfs_zero_range(
xfs_off_t count,
bool *did_zero)
{
- return iomap_zero_range(VFS_I(ip), pos, count, NULL, &xfs_iomap_ops);
+ return iomap_zero_range(VFS_I(ip), pos, count, did_zero, &xfs_iomap_ops);
}
int
@@ -237,11 +237,13 @@ xfs_file_dax_read(
if (!count)
return 0; /* skip atime */
- if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED)) {
- if (iocb->ki_flags & IOCB_NOWAIT)
+ if (iocb->ki_flags & IOCB_NOWAIT) {
+ if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED))
return -EAGAIN;
+ } else {
xfs_ilock(ip, XFS_IOLOCK_SHARED);
}
+
ret = dax_iomap_rw(iocb, to, &xfs_iomap_ops);
xfs_iunlock(ip, XFS_IOLOCK_SHARED);
@@ -259,7 +261,12 @@ xfs_file_buffered_aio_read(
trace_xfs_file_buffered_read(ip, iov_iter_count(to), iocb->ki_pos);
- xfs_ilock(ip, XFS_IOLOCK_SHARED);
+ if (iocb->ki_flags & IOCB_NOWAIT) {
+ if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED))
+ return -EAGAIN;
+ } else {
+ xfs_ilock(ip, XFS_IOLOCK_SHARED);
+ }
ret = generic_file_read_iter(iocb, to);
xfs_iunlock(ip, XFS_IOLOCK_SHARED);
@@ -373,8 +380,6 @@ restart:
*/
spin_lock(&ip->i_flags_lock);
if (iocb->ki_pos > i_size_read(inode)) {
- bool zero = false;
-
spin_unlock(&ip->i_flags_lock);
if (!drained_dio) {
if (*iolock == XFS_IOLOCK_SHARED) {
@@ -395,7 +400,7 @@ restart:
drained_dio = true;
goto restart;
}
- error = xfs_zero_eof(ip, iocb->ki_pos, i_size_read(inode), &zero);
+ error = xfs_zero_eof(ip, iocb->ki_pos, i_size_read(inode), NULL);
if (error)
return error;
} else
@@ -432,7 +437,6 @@ xfs_dio_write_end_io(
struct inode *inode = file_inode(iocb->ki_filp);
struct xfs_inode *ip = XFS_I(inode);
loff_t offset = iocb->ki_pos;
- bool update_size = false;
int error = 0;
trace_xfs_end_io_direct_write(ip, offset, size);
@@ -443,6 +447,21 @@ xfs_dio_write_end_io(
if (size <= 0)
return size;
+ if (flags & IOMAP_DIO_COW) {
+ error = xfs_reflink_end_cow(ip, offset, size);
+ if (error)
+ return error;
+ }
+
+ /*
+ * Unwritten conversion updates the in-core isize after extent
+ * conversion but before updating the on-disk size. Updating isize any
+ * earlier allows a racing dio read to find unwritten extents before
+ * they are converted.
+ */
+ if (flags & IOMAP_DIO_UNWRITTEN)
+ return xfs_iomap_write_unwritten(ip, offset, size, true);
+
/*
* We need to update the in-core inode size here so that we don't end up
* with the on-disk inode size being outside the in-core inode size. We
@@ -457,20 +476,11 @@ xfs_dio_write_end_io(
spin_lock(&ip->i_flags_lock);
if (offset + size > i_size_read(inode)) {
i_size_write(inode, offset + size);
- update_size = true;
- }
- spin_unlock(&ip->i_flags_lock);
-
- if (flags & IOMAP_DIO_COW) {
- error = xfs_reflink_end_cow(ip, offset, size);
- if (error)
- return error;
- }
-
- if (flags & IOMAP_DIO_UNWRITTEN)
- error = xfs_iomap_write_unwritten(ip, offset, size);
- else if (update_size)
+ spin_unlock(&ip->i_flags_lock);
error = xfs_setfilesize(ip, offset, size);
+ } else {
+ spin_unlock(&ip->i_flags_lock);
+ }
return error;
}
@@ -545,9 +555,10 @@ xfs_file_dio_aio_write(
iolock = XFS_IOLOCK_SHARED;
}
- if (!xfs_ilock_nowait(ip, iolock)) {
- if (iocb->ki_flags & IOCB_NOWAIT)
+ if (iocb->ki_flags & IOCB_NOWAIT) {
+ if (!xfs_ilock_nowait(ip, iolock))
return -EAGAIN;
+ } else {
xfs_ilock(ip, iolock);
}
@@ -599,9 +610,10 @@ xfs_file_dax_write(
size_t count;
loff_t pos;
- if (!xfs_ilock_nowait(ip, iolock)) {
- if (iocb->ki_flags & IOCB_NOWAIT)
+ if (iocb->ki_flags & IOCB_NOWAIT) {
+ if (!xfs_ilock_nowait(ip, iolock))
return -EAGAIN;
+ } else {
xfs_ilock(ip, iolock);
}
@@ -636,6 +648,9 @@ xfs_file_buffered_aio_write(
int enospc = 0;
int iolock;
+ if (iocb->ki_flags & IOCB_NOWAIT)
+ return -EOPNOTSUPP;
+
write_retry:
iolock = XFS_IOLOCK_EXCL;
xfs_ilock(ip, iolock);
@@ -754,7 +769,7 @@ xfs_file_fallocate(
enum xfs_prealloc_flags flags = 0;
uint iolock = XFS_IOLOCK_EXCL;
loff_t new_size = 0;
- bool do_file_insert = 0;
+ bool do_file_insert = false;
if (!S_ISREG(inode->i_mode))
return -EINVAL;
@@ -815,7 +830,7 @@ xfs_file_fallocate(
error = -EINVAL;
goto out_unlock;
}
- do_file_insert = 1;
+ do_file_insert = true;
} else {
flags |= XFS_PREALLOC_SET;
@@ -912,7 +927,7 @@ xfs_file_open(
return -EFBIG;
if (XFS_FORCED_SHUTDOWN(XFS_M(inode->i_sb)))
return -EIO;
- file->f_mode |= FMODE_AIO_NOWAIT;
+ file->f_mode |= FMODE_NOWAIT;
return 0;
}
diff --git a/fs/xfs/xfs_fsmap.c b/fs/xfs/xfs_fsmap.c
index 814ed729881d..43cfc07996a4 100644
--- a/fs/xfs/xfs_fsmap.c
+++ b/fs/xfs/xfs_fsmap.c
@@ -367,29 +367,6 @@ xfs_getfsmap_datadev_helper(
return xfs_getfsmap_helper(cur->bc_tp, info, rec, rec_daddr);
}
-/* Transform a rtbitmap "record" into a fsmap */
-STATIC int
-xfs_getfsmap_rtdev_rtbitmap_helper(
- struct xfs_trans *tp,
- struct xfs_rtalloc_rec *rec,
- void *priv)
-{
- struct xfs_mount *mp = tp->t_mountp;
- struct xfs_getfsmap_info *info = priv;
- struct xfs_rmap_irec irec;
- xfs_daddr_t rec_daddr;
-
- rec_daddr = XFS_FSB_TO_BB(mp, rec->ar_startblock);
-
- irec.rm_startblock = rec->ar_startblock;
- irec.rm_blockcount = rec->ar_blockcount;
- irec.rm_owner = XFS_RMAP_OWN_NULL; /* "free" */
- irec.rm_offset = 0;
- irec.rm_flags = 0;
-
- return xfs_getfsmap_helper(tp, info, &irec, rec_daddr);
-}
-
/* Transform a bnobt irec into a fsmap */
STATIC int
xfs_getfsmap_datadev_bnobt_helper(
@@ -475,6 +452,30 @@ xfs_getfsmap_logdev(
return xfs_getfsmap_helper(tp, info, &rmap, 0);
}
+#ifdef CONFIG_XFS_RT
+/* Transform a rtbitmap "record" into a fsmap */
+STATIC int
+xfs_getfsmap_rtdev_rtbitmap_helper(
+ struct xfs_trans *tp,
+ struct xfs_rtalloc_rec *rec,
+ void *priv)
+{
+ struct xfs_mount *mp = tp->t_mountp;
+ struct xfs_getfsmap_info *info = priv;
+ struct xfs_rmap_irec irec;
+ xfs_daddr_t rec_daddr;
+
+ rec_daddr = XFS_FSB_TO_BB(mp, rec->ar_startblock);
+
+ irec.rm_startblock = rec->ar_startblock;
+ irec.rm_blockcount = rec->ar_blockcount;
+ irec.rm_owner = XFS_RMAP_OWN_NULL; /* "free" */
+ irec.rm_offset = 0;
+ irec.rm_flags = 0;
+
+ return xfs_getfsmap_helper(tp, info, &irec, rec_daddr);
+}
+
/* Execute a getfsmap query against the realtime device. */
STATIC int
__xfs_getfsmap_rtdev(
@@ -561,6 +562,7 @@ xfs_getfsmap_rtdev_rtbitmap(
return __xfs_getfsmap_rtdev(tp, keys, xfs_getfsmap_rtdev_rtbitmap_query,
info);
}
+#endif /* CONFIG_XFS_RT */
/* Execute a getfsmap query against the regular data device. */
STATIC int
@@ -795,7 +797,15 @@ xfs_getfsmap_check_keys(
return false;
}
+/*
+ * There are only two devices if we didn't configure RT devices at build time.
+ */
+#ifdef CONFIG_XFS_RT
#define XFS_GETFSMAP_DEVS 3
+#else
+#define XFS_GETFSMAP_DEVS 2
+#endif /* CONFIG_XFS_RT */
+
/*
* Get filesystem's extents as described in head, and format for
* output. Calls formatter to fill the user's buffer until all
@@ -853,10 +863,12 @@ xfs_getfsmap(
handlers[1].dev = new_encode_dev(mp->m_logdev_targp->bt_dev);
handlers[1].fn = xfs_getfsmap_logdev;
}
+#ifdef CONFIG_XFS_RT
if (mp->m_rtdev_targp) {
handlers[2].dev = new_encode_dev(mp->m_rtdev_targp->bt_dev);
handlers[2].fn = xfs_getfsmap_rtdev_rtbitmap;
}
+#endif /* CONFIG_XFS_RT */
xfs_sort(handlers, XFS_GETFSMAP_DEVS, sizeof(struct xfs_getfsmap_dev),
xfs_getfsmap_dev_compare);
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index 5599dda4727a..4ec5b7f45401 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -1624,10 +1624,12 @@ xfs_itruncate_extents(
goto out;
/*
- * Clear the reflink flag if we truncated everything.
+ * Clear the reflink flag if there are no data fork blocks and
+ * there are no extents staged in the cow fork.
*/
- if (ip->i_d.di_nblocks == 0 && xfs_is_reflink_inode(ip)) {
- ip->i_d.di_flags2 &= ~XFS_DIFLAG2_REFLINK;
+ if (xfs_is_reflink_inode(ip) && ip->i_cnextents == 0) {
+ if (ip->i_d.di_nblocks == 0)
+ ip->i_d.di_flags2 &= ~XFS_DIFLAG2_REFLINK;
xfs_inode_clear_cowblocks_tag(ip);
}
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c
index 6d0f74ec31e8..9bbc2d7cc8cb 100644
--- a/fs/xfs/xfs_inode_item.c
+++ b/fs/xfs/xfs_inode_item.c
@@ -364,6 +364,9 @@ xfs_inode_to_log_dinode(
to->di_dmstate = from->di_dmstate;
to->di_flags = from->di_flags;
+ /* log a dummy value to ensure log structure is fully initialised */
+ to->di_next_unlinked = NULLAGINO;
+
if (from->di_version == 3) {
to->di_changecount = inode->i_version;
to->di_crtime.t_sec = from->di_crtime.t_sec;
@@ -404,6 +407,11 @@ xfs_inode_item_format_core(
* the second with the on-disk inode structure, and a possible third and/or
* fourth with the inode data/extents/b-tree root and inode attributes
* data/extents/b-tree root.
+ *
+ * Note: Always use the 64 bit inode log format structure so we don't
+ * leave an uninitialised hole in the format item on 64 bit systems. Log
+ * recovery on 32 bit systems handles this just fine, so there's no reason
+ * for not using an initialising the properly padded structure all the time.
*/
STATIC void
xfs_inode_item_format(
@@ -412,8 +420,8 @@ xfs_inode_item_format(
{
struct xfs_inode_log_item *iip = INODE_ITEM(lip);
struct xfs_inode *ip = iip->ili_inode;
- struct xfs_inode_log_format *ilf;
struct xfs_log_iovec *vecp = NULL;
+ struct xfs_inode_log_format *ilf;
ASSERT(ip->i_d.di_version > 1);
@@ -425,7 +433,17 @@ xfs_inode_item_format(
ilf->ilf_boffset = ip->i_imap.im_boffset;
ilf->ilf_fields = XFS_ILOG_CORE;
ilf->ilf_size = 2; /* format + core */
- xlog_finish_iovec(lv, vecp, sizeof(struct xfs_inode_log_format));
+
+ /*
+ * make sure we don't leak uninitialised data into the log in the case
+ * when we don't log every field in the inode.
+ */
+ ilf->ilf_dsize = 0;
+ ilf->ilf_asize = 0;
+ ilf->ilf_pad = 0;
+ uuid_copy(&ilf->ilf_u.ilfu_uuid, &uuid_null);
+
+ xlog_finish_iovec(lv, vecp, sizeof(*ilf));
xfs_inode_item_format_core(ip, lv, &vecp);
xfs_inode_item_format_data_fork(iip, ilf, lv, &vecp);
@@ -745,7 +763,7 @@ xfs_iflush_done(
*/
iip = INODE_ITEM(blip);
if ((iip->ili_logged && blip->li_lsn == iip->ili_flush_lsn) ||
- lip->li_flags & XFS_LI_FAILED)
+ (blip->li_flags & XFS_LI_FAILED))
need_ail++;
blip = next;
@@ -855,44 +873,29 @@ xfs_istale_done(
}
/*
- * convert an xfs_inode_log_format struct from either 32 or 64 bit versions
- * (which can have different field alignments) to the native version
+ * convert an xfs_inode_log_format struct from the old 32 bit version
+ * (which can have different field alignments) to the native 64 bit version
*/
int
xfs_inode_item_format_convert(
- xfs_log_iovec_t *buf,
- xfs_inode_log_format_t *in_f)
+ struct xfs_log_iovec *buf,
+ struct xfs_inode_log_format *in_f)
{
- if (buf->i_len == sizeof(xfs_inode_log_format_32_t)) {
- xfs_inode_log_format_32_t *in_f32 = buf->i_addr;
-
- in_f->ilf_type = in_f32->ilf_type;
- in_f->ilf_size = in_f32->ilf_size;
- in_f->ilf_fields = in_f32->ilf_fields;
- in_f->ilf_asize = in_f32->ilf_asize;
- in_f->ilf_dsize = in_f32->ilf_dsize;
- in_f->ilf_ino = in_f32->ilf_ino;
- /* copy biggest field of ilf_u */
- uuid_copy(&in_f->ilf_u.ilfu_uuid, &in_f32->ilf_u.ilfu_uuid);
- in_f->ilf_blkno = in_f32->ilf_blkno;
- in_f->ilf_len = in_f32->ilf_len;
- in_f->ilf_boffset = in_f32->ilf_boffset;
- return 0;
- } else if (buf->i_len == sizeof(xfs_inode_log_format_64_t)){
- xfs_inode_log_format_64_t *in_f64 = buf->i_addr;
-
- in_f->ilf_type = in_f64->ilf_type;
- in_f->ilf_size = in_f64->ilf_size;
- in_f->ilf_fields = in_f64->ilf_fields;
- in_f->ilf_asize = in_f64->ilf_asize;
- in_f->ilf_dsize = in_f64->ilf_dsize;
- in_f->ilf_ino = in_f64->ilf_ino;
- /* copy biggest field of ilf_u */
- uuid_copy(&in_f->ilf_u.ilfu_uuid, &in_f64->ilf_u.ilfu_uuid);
- in_f->ilf_blkno = in_f64->ilf_blkno;
- in_f->ilf_len = in_f64->ilf_len;
- in_f->ilf_boffset = in_f64->ilf_boffset;
- return 0;
- }
- return -EFSCORRUPTED;
+ struct xfs_inode_log_format_32 *in_f32 = buf->i_addr;
+
+ if (buf->i_len != sizeof(*in_f32))
+ return -EFSCORRUPTED;
+
+ in_f->ilf_type = in_f32->ilf_type;
+ in_f->ilf_size = in_f32->ilf_size;
+ in_f->ilf_fields = in_f32->ilf_fields;
+ in_f->ilf_asize = in_f32->ilf_asize;
+ in_f->ilf_dsize = in_f32->ilf_dsize;
+ in_f->ilf_ino = in_f32->ilf_ino;
+ /* copy biggest field of ilf_u */
+ uuid_copy(&in_f->ilf_u.ilfu_uuid, &in_f32->ilf_u.ilfu_uuid);
+ in_f->ilf_blkno = in_f32->ilf_blkno;
+ in_f->ilf_len = in_f32->ilf_len;
+ in_f->ilf_boffset = in_f32->ilf_boffset;
+ return 0;
}
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
index 5049e8ab6e30..aa75389be8cf 100644
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -1088,6 +1088,7 @@ xfs_ioctl_setattr_dax_invalidate(
int *join_flags)
{
struct inode *inode = VFS_I(ip);
+ struct super_block *sb = inode->i_sb;
int error;
*join_flags = 0;
@@ -1100,7 +1101,7 @@ xfs_ioctl_setattr_dax_invalidate(
if (fa->fsx_xflags & FS_XFLAG_DAX) {
if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)))
return -EINVAL;
- if (ip->i_mount->m_sb.sb_blocksize != PAGE_SIZE)
+ if (bdev_dax_supported(sb, sb->s_blocksize) < 0)
return -EINVAL;
}
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index a1909bc064e9..f179bdf1644d 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -829,7 +829,8 @@ int
xfs_iomap_write_unwritten(
xfs_inode_t *ip,
xfs_off_t offset,
- xfs_off_t count)
+ xfs_off_t count,
+ bool update_isize)
{
xfs_mount_t *mp = ip->i_mount;
xfs_fileoff_t offset_fsb;
@@ -840,6 +841,7 @@ xfs_iomap_write_unwritten(
xfs_trans_t *tp;
xfs_bmbt_irec_t imap;
struct xfs_defer_ops dfops;
+ struct inode *inode = VFS_I(ip);
xfs_fsize_t i_size;
uint resblks;
int error;
@@ -899,7 +901,8 @@ xfs_iomap_write_unwritten(
i_size = XFS_FSB_TO_B(mp, offset_fsb + count_fsb);
if (i_size > offset + count)
i_size = offset + count;
-
+ if (update_isize && i_size > i_size_read(inode))
+ i_size_write(inode, i_size);
i_size = xfs_new_eof(ip, i_size);
if (i_size) {
ip->i_d.di_size = i_size;
diff --git a/fs/xfs/xfs_iomap.h b/fs/xfs/xfs_iomap.h
index 00db3ecea084..ee535065c5d0 100644
--- a/fs/xfs/xfs_iomap.h
+++ b/fs/xfs/xfs_iomap.h
@@ -27,7 +27,7 @@ int xfs_iomap_write_direct(struct xfs_inode *, xfs_off_t, size_t,
struct xfs_bmbt_irec *, int);
int xfs_iomap_write_allocate(struct xfs_inode *, int, xfs_off_t,
struct xfs_bmbt_irec *);
-int xfs_iomap_write_unwritten(struct xfs_inode *, xfs_off_t, xfs_off_t);
+int xfs_iomap_write_unwritten(struct xfs_inode *, xfs_off_t, xfs_off_t, bool);
void xfs_bmbt_to_iomap(struct xfs_inode *, struct iomap *,
struct xfs_bmbt_irec *);
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
index c5107c7bc4bf..dc95a49d62e7 100644
--- a/fs/xfs/xfs_log.c
+++ b/fs/xfs/xfs_log.c
@@ -2515,7 +2515,7 @@ next_lv:
if (lv)
vecp = lv->lv_iovecp;
}
- if (record_cnt == 0 && ordered == false) {
+ if (record_cnt == 0 && !ordered) {
if (!lv)
return 0;
break;
diff --git a/fs/xfs/xfs_message.h b/fs/xfs/xfs_message.h
index 85401155750e..34447dca97d1 100644
--- a/fs/xfs/xfs_message.h
+++ b/fs/xfs/xfs_message.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __XFS_MESSAGE_H
#define __XFS_MESSAGE_H 1
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index ea7d4b4e50d0..e9727d0a541a 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -704,7 +704,7 @@ xfs_mountfs(
xfs_set_maxicount(mp);
/* enable fail_at_unmount as default */
- mp->m_fail_unmount = 1;
+ mp->m_fail_unmount = true;
error = xfs_sysfs_init(&mp->m_kobj, &xfs_mp_ktype, NULL, mp->m_fsname);
if (error)
diff --git a/fs/xfs/xfs_ondisk.h b/fs/xfs/xfs_ondisk.h
index 0c381d71b242..0492436a053f 100644
--- a/fs/xfs/xfs_ondisk.h
+++ b/fs/xfs/xfs_ondisk.h
@@ -134,7 +134,7 @@ xfs_check_ondisk_structs(void)
XFS_CHECK_STRUCT_SIZE(struct xfs_icreate_log, 28);
XFS_CHECK_STRUCT_SIZE(struct xfs_ictimestamp, 8);
XFS_CHECK_STRUCT_SIZE(struct xfs_inode_log_format_32, 52);
- XFS_CHECK_STRUCT_SIZE(struct xfs_inode_log_format_64, 56);
+ XFS_CHECK_STRUCT_SIZE(struct xfs_inode_log_format, 56);
XFS_CHECK_STRUCT_SIZE(struct xfs_qoff_logformat, 20);
XFS_CHECK_STRUCT_SIZE(struct xfs_trans_header, 16);
}
diff --git a/fs/xfs/xfs_pnfs.c b/fs/xfs/xfs_pnfs.c
index 2f2dc3c09ad0..aa6c5c193f45 100644
--- a/fs/xfs/xfs_pnfs.c
+++ b/fs/xfs/xfs_pnfs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2014 Christoph Hellwig.
*/
@@ -274,7 +275,7 @@ xfs_fs_commit_blocks(
(end - 1) >> PAGE_SHIFT);
WARN_ON_ONCE(error);
- error = xfs_iomap_write_unwritten(ip, start, length);
+ error = xfs_iomap_write_unwritten(ip, start, length, false);
if (error)
goto out_drop_iolock;
}
diff --git a/fs/xfs/xfs_pnfs.h b/fs/xfs/xfs_pnfs.h
index b587cb99b2b7..bf45951e28fe 100644
--- a/fs/xfs/xfs_pnfs.h
+++ b/fs/xfs/xfs_pnfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XFS_PNFS_H
#define _XFS_PNFS_H 1
diff --git a/fs/xfs/xfs_quotaops.c b/fs/xfs/xfs_quotaops.c
index de9493253edf..a65108594a07 100644
--- a/fs/xfs/xfs_quotaops.c
+++ b/fs/xfs/xfs_quotaops.c
@@ -125,7 +125,7 @@ xfs_fs_set_info(
struct xfs_mount *mp = XFS_M(sb);
struct qc_dqblk newlim;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return -EROFS;
if (!XFS_IS_QUOTA_RUNNING(mp))
return -ENOSYS;
@@ -175,7 +175,7 @@ xfs_quota_enable(
{
struct xfs_mount *mp = XFS_M(sb);
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return -EROFS;
if (!XFS_IS_QUOTA_RUNNING(mp))
return -ENOSYS;
@@ -190,7 +190,7 @@ xfs_quota_disable(
{
struct xfs_mount *mp = XFS_M(sb);
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return -EROFS;
if (!XFS_IS_QUOTA_RUNNING(mp))
return -ENOSYS;
@@ -208,7 +208,7 @@ xfs_fs_rm_xquota(
struct xfs_mount *mp = XFS_M(sb);
unsigned int flags = 0;
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return -EROFS;
if (XFS_IS_QUOTA_ON(mp))
@@ -279,7 +279,7 @@ xfs_fs_set_dqblk(
{
struct xfs_mount *mp = XFS_M(sb);
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
return -EROFS;
if (!XFS_IS_QUOTA_RUNNING(mp))
return -ENOSYS;
diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c
index 3246815c24d6..37e603bf1591 100644
--- a/fs/xfs/xfs_reflink.c
+++ b/fs/xfs/xfs_reflink.c
@@ -736,7 +736,13 @@ xfs_reflink_end_cow(
/* If there is a hole at end_fsb - 1 go to the previous extent */
if (!xfs_iext_lookup_extent(ip, ifp, end_fsb - 1, &idx, &got) ||
got.br_startoff > end_fsb) {
- ASSERT(idx > 0);
+ /*
+ * In case of racing, overlapping AIO writes no COW extents
+ * might be left by the time I/O completes for the loser of
+ * the race. In that case we are done.
+ */
+ if (idx <= 0)
+ goto out_cancel;
xfs_iext_get_extent(ifp, --idx, &got);
}
@@ -809,6 +815,7 @@ next_extent:
out_defer:
xfs_defer_cancel(&dfops);
+out_cancel:
xfs_trans_cancel(tp);
xfs_iunlock(ip, XFS_ILOCK_EXCL);
out:
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 3008f31753df..f663022353c0 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -210,7 +210,7 @@ xfs_parseargs(
/*
* Copy binary VFS mount flags we are interested in.
*/
- if (sb->s_flags & MS_RDONLY)
+ if (sb_rdonly(sb))
mp->m_flags |= XFS_MOUNT_RDONLY;
if (sb->s_flags & MS_DIRSYNC)
mp->m_flags |= XFS_MOUNT_DIRSYNC;
@@ -1637,7 +1637,7 @@ xfs_fs_fill_super(
/* version 5 superblocks support inode version counters. */
if (XFS_SB_VERSION_NUM(&mp->m_sb) == XFS_SB_VERSION_5)
- sb->s_flags |= MS_I_VERSION;
+ sb->s_flags |= SB_I_VERSION;
if (mp->m_flags & XFS_MOUNT_DAX) {
xfs_warn(mp,
@@ -1654,6 +1654,16 @@ xfs_fs_fill_super(
"DAX and reflink have not been tested together!");
}
+ if (mp->m_flags & XFS_MOUNT_DISCARD) {
+ struct request_queue *q = bdev_get_queue(sb->s_bdev);
+
+ if (!blk_queue_discard(q)) {
+ xfs_warn(mp, "mounting with \"discard\" option, but "
+ "the device does not support discard");
+ mp->m_flags &= ~XFS_MOUNT_DISCARD;
+ }
+ }
+
if (xfs_sb_version_hasrmapbt(&mp->m_sb)) {
if (mp->m_sb.sb_rblocks) {
xfs_alert(mp,
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index dedf9d789166..fa1505292f6c 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -399,17 +399,12 @@ extern const struct fwnode_operations acpi_device_fwnode_ops;
extern const struct fwnode_operations acpi_data_fwnode_ops;
extern const struct fwnode_operations acpi_static_fwnode_ops;
+bool is_acpi_device_node(const struct fwnode_handle *fwnode);
+bool is_acpi_data_node(const struct fwnode_handle *fwnode);
+
static inline bool is_acpi_node(const struct fwnode_handle *fwnode)
{
- return !IS_ERR_OR_NULL(fwnode) &&
- (fwnode->ops == &acpi_device_fwnode_ops
- || fwnode->ops == &acpi_data_fwnode_ops);
-}
-
-static inline bool is_acpi_device_node(const struct fwnode_handle *fwnode)
-{
- return !IS_ERR_OR_NULL(fwnode) &&
- fwnode->ops == &acpi_device_fwnode_ops;
+ return (is_acpi_device_node(fwnode) || is_acpi_data_node(fwnode));
}
#define to_acpi_device_node(__fwnode) \
@@ -422,11 +417,6 @@ static inline bool is_acpi_device_node(const struct fwnode_handle *fwnode)
NULL; \
})
-static inline bool is_acpi_data_node(const struct fwnode_handle *fwnode)
-{
- return !IS_ERR_OR_NULL(fwnode) && fwnode->ops == &acpi_data_fwnode_ops;
-}
-
#define to_acpi_data_node(__fwnode) \
({ \
typeof(__fwnode) __to_acpi_data_node_fwnode = __fwnode; \
diff --git a/include/acpi/acpi_io.h b/include/acpi/acpi_io.h
index 303315b9693f..d0633fc1fc15 100644
--- a/include/acpi/acpi_io.h
+++ b/include/acpi/acpi_io.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ACPI_IO_H_
#define _ACPI_IO_H_
diff --git a/include/acpi/acpi_numa.h b/include/acpi/acpi_numa.h
index 1e3a74f94131..fdebcfc6c8df 100644
--- a/include/acpi/acpi_numa.h
+++ b/include/acpi/acpi_numa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ACPI_NUMA_H
#define __ACPI_NUMA_H
diff --git a/include/acpi/apei.h b/include/acpi/apei.h
index c46694abea28..1797e81a3204 100644
--- a/include/acpi/apei.h
+++ b/include/acpi/apei.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* apei.h - ACPI Platform Error Interface
*/
diff --git a/include/acpi/button.h b/include/acpi/button.h
index 1cad8b2d460c..3a2b8535dec6 100644
--- a/include/acpi/button.h
+++ b/include/acpi/button.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ACPI_BUTTON_H
#define ACPI_BUTTON_H
diff --git a/include/acpi/ghes.h b/include/acpi/ghes.h
index 9061c5c743b3..8feb0c866ee0 100644
--- a/include/acpi/ghes.h
+++ b/include/acpi/ghes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef GHES_H
#define GHES_H
diff --git a/include/acpi/pdc_intel.h b/include/acpi/pdc_intel.h
index 552637b0d051..967c552d1cd3 100644
--- a/include/acpi/pdc_intel.h
+++ b/include/acpi/pdc_intel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* _PDC bit definition for Intel processors */
diff --git a/include/acpi/processor.h b/include/acpi/processor.h
index c1ba00fc4888..d591bb77f592 100644
--- a/include/acpi/processor.h
+++ b/include/acpi/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ACPI_PROCESSOR_H
#define __ACPI_PROCESSOR_H
diff --git a/include/acpi/reboot.h b/include/acpi/reboot.h
index 0419184ce886..14122fc55bbe 100644
--- a/include/acpi/reboot.h
+++ b/include/acpi/reboot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ACPI_REBOOT_H
#define __ACPI_REBOOT_H
diff --git a/include/acpi/video.h b/include/acpi/video.h
index bfe484da55d2..db8548ff03ce 100644
--- a/include/acpi/video.h
+++ b/include/acpi/video.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ACPI_VIDEO_H
#define __ACPI_VIDEO_H
diff --git a/include/asm-generic/4level-fixup.h b/include/asm-generic/4level-fixup.h
index 928fd66b1271..89f3b03b1445 100644
--- a/include/asm-generic/4level-fixup.h
+++ b/include/asm-generic/4level-fixup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _4LEVEL_FIXUP_H
#define _4LEVEL_FIXUP_H
diff --git a/include/asm-generic/5level-fixup.h b/include/asm-generic/5level-fixup.h
index b5ca82dc4175..dfbd9d990637 100644
--- a/include/asm-generic/5level-fixup.h
+++ b/include/asm-generic/5level-fixup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _5LEVEL_FIXUP_H
#define _5LEVEL_FIXUP_H
diff --git a/include/asm-generic/asm-prototypes.h b/include/asm-generic/asm-prototypes.h
index 939869c772b1..2fa2bc208383 100644
--- a/include/asm-generic/asm-prototypes.h
+++ b/include/asm-generic/asm-prototypes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/bitops.h>
#undef __memset
extern void *__memset(void *, int, __kernel_size_t);
diff --git a/include/asm-generic/atomic-long.h b/include/asm-generic/atomic-long.h
index 288cc9e96395..49be4bba1e96 100644
--- a/include/asm-generic/atomic-long.h
+++ b/include/asm-generic/atomic-long.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_ATOMIC_LONG_H
#define _ASM_GENERIC_ATOMIC_LONG_H
/*
diff --git a/include/asm-generic/audit_change_attr.h b/include/asm-generic/audit_change_attr.h
index a1865537339b..331670807cf0 100644
--- a/include/asm-generic/audit_change_attr.h
+++ b/include/asm-generic/audit_change_attr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __NR_chmod
__NR_chmod,
#endif
diff --git a/include/asm-generic/audit_dir_write.h b/include/asm-generic/audit_dir_write.h
index 7b61db4fe72b..8fb83b43006a 100644
--- a/include/asm-generic/audit_dir_write.h
+++ b/include/asm-generic/audit_dir_write.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __NR_rename
__NR_rename,
#endif
diff --git a/include/asm-generic/audit_read.h b/include/asm-generic/audit_read.h
index 3b249cb857dc..7bb7b5a83ae2 100644
--- a/include/asm-generic/audit_read.h
+++ b/include/asm-generic/audit_read.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef __NR_readlink
__NR_readlink,
#endif
diff --git a/include/asm-generic/audit_write.h b/include/asm-generic/audit_write.h
index 274575d7129f..dfc52b3c103f 100644
--- a/include/asm-generic/audit_write.h
+++ b/include/asm-generic/audit_write.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/audit_dir_write.h>
__NR_acct,
#ifdef __NR_swapon
diff --git a/include/asm-generic/bitops.h b/include/asm-generic/bitops.h
index dcdcacf2fd2b..bfc96bf6606e 100644
--- a/include/asm-generic/bitops.h
+++ b/include/asm-generic/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_BITOPS_H
#define __ASM_GENERIC_BITOPS_H
diff --git a/include/asm-generic/bitops/__ffs.h b/include/asm-generic/bitops/__ffs.h
index 937d7c435575..39e56e1c7203 100644
--- a/include/asm-generic/bitops/__ffs.h
+++ b/include/asm-generic/bitops/__ffs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS___FFS_H_
#define _ASM_GENERIC_BITOPS___FFS_H_
diff --git a/include/asm-generic/bitops/__fls.h b/include/asm-generic/bitops/__fls.h
index a60a7ccb6782..03f721a8a2b1 100644
--- a/include/asm-generic/bitops/__fls.h
+++ b/include/asm-generic/bitops/__fls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS___FLS_H_
#define _ASM_GENERIC_BITOPS___FLS_H_
diff --git a/include/asm-generic/bitops/arch_hweight.h b/include/asm-generic/bitops/arch_hweight.h
index 6a211f40665c..c2705e1d220d 100644
--- a/include/asm-generic/bitops/arch_hweight.h
+++ b/include/asm-generic/bitops/arch_hweight.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_ARCH_HWEIGHT_H_
#define _ASM_GENERIC_BITOPS_ARCH_HWEIGHT_H_
diff --git a/include/asm-generic/bitops/atomic.h b/include/asm-generic/bitops/atomic.h
index 49673510b484..04deffaf5f7d 100644
--- a/include/asm-generic/bitops/atomic.h
+++ b/include/asm-generic/bitops/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_ATOMIC_H_
#define _ASM_GENERIC_BITOPS_ATOMIC_H_
diff --git a/include/asm-generic/bitops/builtin-__ffs.h b/include/asm-generic/bitops/builtin-__ffs.h
index 90041e3a41f0..87024da44d10 100644
--- a/include/asm-generic/bitops/builtin-__ffs.h
+++ b/include/asm-generic/bitops/builtin-__ffs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_BUILTIN___FFS_H_
#define _ASM_GENERIC_BITOPS_BUILTIN___FFS_H_
diff --git a/include/asm-generic/bitops/builtin-__fls.h b/include/asm-generic/bitops/builtin-__fls.h
index 0248f386635f..43a5aa9afbdb 100644
--- a/include/asm-generic/bitops/builtin-__fls.h
+++ b/include/asm-generic/bitops/builtin-__fls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_BUILTIN___FLS_H_
#define _ASM_GENERIC_BITOPS_BUILTIN___FLS_H_
diff --git a/include/asm-generic/bitops/builtin-ffs.h b/include/asm-generic/bitops/builtin-ffs.h
index 064825829e1c..458c85ebcd15 100644
--- a/include/asm-generic/bitops/builtin-ffs.h
+++ b/include/asm-generic/bitops/builtin-ffs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_BUILTIN_FFS_H_
#define _ASM_GENERIC_BITOPS_BUILTIN_FFS_H_
diff --git a/include/asm-generic/bitops/builtin-fls.h b/include/asm-generic/bitops/builtin-fls.h
index eda652d0ac7f..62daf940989d 100644
--- a/include/asm-generic/bitops/builtin-fls.h
+++ b/include/asm-generic/bitops/builtin-fls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_BUILTIN_FLS_H_
#define _ASM_GENERIC_BITOPS_BUILTIN_FLS_H_
diff --git a/include/asm-generic/bitops/const_hweight.h b/include/asm-generic/bitops/const_hweight.h
index 0a7e06623470..149faeeeeaf2 100644
--- a/include/asm-generic/bitops/const_hweight.h
+++ b/include/asm-generic/bitops/const_hweight.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_CONST_HWEIGHT_H_
#define _ASM_GENERIC_BITOPS_CONST_HWEIGHT_H_
diff --git a/include/asm-generic/bitops/ext2-atomic-setbit.h b/include/asm-generic/bitops/ext2-atomic-setbit.h
index 5a0997857b34..b041cbf0d899 100644
--- a/include/asm-generic/bitops/ext2-atomic-setbit.h
+++ b/include/asm-generic/bitops/ext2-atomic-setbit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_EXT2_ATOMIC_SETBIT_H_
#define _ASM_GENERIC_BITOPS_EXT2_ATOMIC_SETBIT_H_
diff --git a/include/asm-generic/bitops/ext2-atomic.h b/include/asm-generic/bitops/ext2-atomic.h
index 87f0f109d7f1..0cfc3180b074 100644
--- a/include/asm-generic/bitops/ext2-atomic.h
+++ b/include/asm-generic/bitops/ext2-atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_EXT2_ATOMIC_H_
#define _ASM_GENERIC_BITOPS_EXT2_ATOMIC_H_
diff --git a/include/asm-generic/bitops/ffs.h b/include/asm-generic/bitops/ffs.h
index fbbb43af7dc0..e81868b2c0f0 100644
--- a/include/asm-generic/bitops/ffs.h
+++ b/include/asm-generic/bitops/ffs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_FFS_H_
#define _ASM_GENERIC_BITOPS_FFS_H_
diff --git a/include/asm-generic/bitops/ffz.h b/include/asm-generic/bitops/ffz.h
index 6744bd4cdf46..0d010085fdec 100644
--- a/include/asm-generic/bitops/ffz.h
+++ b/include/asm-generic/bitops/ffz.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_FFZ_H_
#define _ASM_GENERIC_BITOPS_FFZ_H_
diff --git a/include/asm-generic/bitops/find.h b/include/asm-generic/bitops/find.h
index 998d4d544f18..1ba611e16fa0 100644
--- a/include/asm-generic/bitops/find.h
+++ b/include/asm-generic/bitops/find.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_FIND_H_
#define _ASM_GENERIC_BITOPS_FIND_H_
diff --git a/include/asm-generic/bitops/fls.h b/include/asm-generic/bitops/fls.h
index 0576d1f42f43..753aecaab641 100644
--- a/include/asm-generic/bitops/fls.h
+++ b/include/asm-generic/bitops/fls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_FLS_H_
#define _ASM_GENERIC_BITOPS_FLS_H_
diff --git a/include/asm-generic/bitops/fls64.h b/include/asm-generic/bitops/fls64.h
index b097cf8444e3..866f2b2304ff 100644
--- a/include/asm-generic/bitops/fls64.h
+++ b/include/asm-generic/bitops/fls64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_FLS64_H_
#define _ASM_GENERIC_BITOPS_FLS64_H_
diff --git a/include/asm-generic/bitops/hweight.h b/include/asm-generic/bitops/hweight.h
index a94d6519c7ed..6bf1bba83589 100644
--- a/include/asm-generic/bitops/hweight.h
+++ b/include/asm-generic/bitops/hweight.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_HWEIGHT_H_
#define _ASM_GENERIC_BITOPS_HWEIGHT_H_
diff --git a/include/asm-generic/bitops/le.h b/include/asm-generic/bitops/le.h
index 61731543c00e..188d3eba3ace 100644
--- a/include/asm-generic/bitops/le.h
+++ b/include/asm-generic/bitops/le.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_LE_H_
#define _ASM_GENERIC_BITOPS_LE_H_
diff --git a/include/asm-generic/bitops/lock.h b/include/asm-generic/bitops/lock.h
index 8ef0ccbf8167..bc397573c43a 100644
--- a/include/asm-generic/bitops/lock.h
+++ b/include/asm-generic/bitops/lock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_LOCK_H_
#define _ASM_GENERIC_BITOPS_LOCK_H_
diff --git a/include/asm-generic/bitops/non-atomic.h b/include/asm-generic/bitops/non-atomic.h
index 697cc2b7e0f0..7e10c4b50c5d 100644
--- a/include/asm-generic/bitops/non-atomic.h
+++ b/include/asm-generic/bitops/non-atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_NON_ATOMIC_H_
#define _ASM_GENERIC_BITOPS_NON_ATOMIC_H_
diff --git a/include/asm-generic/bitops/sched.h b/include/asm-generic/bitops/sched.h
index 604fab7031a6..86470cfcef60 100644
--- a/include/asm-generic/bitops/sched.h
+++ b/include/asm-generic/bitops/sched.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BITOPS_SCHED_H_
#define _ASM_GENERIC_BITOPS_SCHED_H_
diff --git a/include/asm-generic/bitsperlong.h b/include/asm-generic/bitsperlong.h
index d1d70aa19021..3905c1c93dc2 100644
--- a/include/asm-generic/bitsperlong.h
+++ b/include/asm-generic/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_BITS_PER_LONG
#define __ASM_GENERIC_BITS_PER_LONG
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
index 87191357d303..af2cc94a61bf 100644
--- a/include/asm-generic/bug.h
+++ b/include/asm-generic/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_BUG_H
#define _ASM_GENERIC_BUG_H
diff --git a/include/asm-generic/bugs.h b/include/asm-generic/bugs.h
index 6c4f62ea714d..69021830f078 100644
--- a/include/asm-generic/bugs.h
+++ b/include/asm-generic/bugs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_BUGS_H
#define __ASM_GENERIC_BUGS_H
/*
diff --git a/include/asm-generic/cache.h b/include/asm-generic/cache.h
index 1bfcfe5c2237..60386e164246 100644
--- a/include/asm-generic/cache.h
+++ b/include/asm-generic/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_CACHE_H
#define __ASM_GENERIC_CACHE_H
/*
diff --git a/include/asm-generic/cacheflush.h b/include/asm-generic/cacheflush.h
index 87bc536ccde3..0dd47a6db2cf 100644
--- a/include/asm-generic/cacheflush.h
+++ b/include/asm-generic/cacheflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_CACHEFLUSH_H
#define __ASM_CACHEFLUSH_H
diff --git a/include/asm-generic/checksum.h b/include/asm-generic/checksum.h
index 3150cbd8eb21..34785c0f57b0 100644
--- a/include/asm-generic/checksum.h
+++ b/include/asm-generic/checksum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_CHECKSUM_H
#define __ASM_GENERIC_CHECKSUM_H
diff --git a/include/asm-generic/cmpxchg-local.h b/include/asm-generic/cmpxchg-local.h
index 70bef78912b7..f17f14f84d09 100644
--- a/include/asm-generic/cmpxchg-local.h
+++ b/include/asm-generic/cmpxchg-local.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_CMPXCHG_LOCAL_H
#define __ASM_GENERIC_CMPXCHG_LOCAL_H
diff --git a/include/asm-generic/cmpxchg.h b/include/asm-generic/cmpxchg.h
index e5f9080e8e86..9a24510cd8c1 100644
--- a/include/asm-generic/cmpxchg.h
+++ b/include/asm-generic/cmpxchg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Generic UP xchg and cmpxchg using interrupt disablement. Does not
* support SMP.
diff --git a/include/asm-generic/current.h b/include/asm-generic/current.h
index 5e86f6ae7cab..3a2e224b9fa0 100644
--- a/include/asm-generic/current.h
+++ b/include/asm-generic/current.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_CURRENT_H
#define __ASM_GENERIC_CURRENT_H
diff --git a/include/asm-generic/delay.h b/include/asm-generic/delay.h
index 0f79054ce7cd..e448ac61430c 100644
--- a/include/asm-generic/delay.h
+++ b/include/asm-generic/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_DELAY_H
#define __ASM_GENERIC_DELAY_H
diff --git a/include/asm-generic/div64.h b/include/asm-generic/div64.h
index 163f77999ea4..d2013064dc69 100644
--- a/include/asm-generic/div64.h
+++ b/include/asm-generic/div64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_DIV64_H
#define _ASM_GENERIC_DIV64_H
/*
diff --git a/include/asm-generic/dma-contiguous.h b/include/asm-generic/dma-contiguous.h
index 292c571750f0..f24b0f9a4f05 100644
--- a/include/asm-generic/dma-contiguous.h
+++ b/include/asm-generic/dma-contiguous.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_DMA_CONTIGUOUS_H
#define _ASM_GENERIC_DMA_CONTIGUOUS_H
diff --git a/include/asm-generic/dma.h b/include/asm-generic/dma.h
index 9dfc3a7f36d2..43d0c8af8058 100644
--- a/include/asm-generic/dma.h
+++ b/include/asm-generic/dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_DMA_H
#define __ASM_GENERIC_DMA_H
/*
diff --git a/include/asm-generic/early_ioremap.h b/include/asm-generic/early_ioremap.h
index 2edef8d7fa6b..9def22e6e2b3 100644
--- a/include/asm-generic/early_ioremap.h
+++ b/include/asm-generic/early_ioremap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_EARLY_IOREMAP_H_
#define _ASM_EARLY_IOREMAP_H_
diff --git a/include/asm-generic/emergency-restart.h b/include/asm-generic/emergency-restart.h
index 0d68a1eae985..445de38b795e 100644
--- a/include/asm-generic/emergency-restart.h
+++ b/include/asm-generic/emergency-restart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_EMERGENCY_RESTART_H
#define _ASM_GENERIC_EMERGENCY_RESTART_H
diff --git a/include/asm-generic/extable.h b/include/asm-generic/extable.h
index ca14c6664027..f9618bd0723a 100644
--- a/include/asm-generic/extable.h
+++ b/include/asm-generic/extable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_EXTABLE_H
#define __ASM_GENERIC_EXTABLE_H
diff --git a/include/asm-generic/fb.h b/include/asm-generic/fb.h
index fe8ca7fcea00..f9f18101ed36 100644
--- a/include/asm-generic/fb.h
+++ b/include/asm-generic/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_FB_H_
#define __ASM_GENERIC_FB_H_
#include <linux/fb.h>
diff --git a/include/asm-generic/futex.h b/include/asm-generic/futex.h
index f0d8b1c51343..fcb61b4659b3 100644
--- a/include/asm-generic/futex.h
+++ b/include/asm-generic/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_FUTEX_H
#define _ASM_GENERIC_FUTEX_H
diff --git a/include/asm-generic/getorder.h b/include/asm-generic/getorder.h
index 65e4468ac53d..c64bea7a52be 100644
--- a/include/asm-generic/getorder.h
+++ b/include/asm-generic/getorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_GETORDER_H
#define __ASM_GENERIC_GETORDER_H
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
index 8ca627dcea11..19eadac415c4 100644
--- a/include/asm-generic/gpio.h
+++ b/include/asm-generic/gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_GPIO_H
#define _ASM_GENERIC_GPIO_H
diff --git a/include/asm-generic/hardirq.h b/include/asm-generic/hardirq.h
index 04d0a977cd43..d14214dfc10b 100644
--- a/include/asm-generic/hardirq.h
+++ b/include/asm-generic/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_HARDIRQ_H
#define __ASM_GENERIC_HARDIRQ_H
diff --git a/include/asm-generic/hugetlb.h b/include/asm-generic/hugetlb.h
index 540354f94f83..9d0cde8ab716 100644
--- a/include/asm-generic/hugetlb.h
+++ b/include/asm-generic/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_HUGETLB_H
#define _ASM_GENERIC_HUGETLB_H
diff --git a/include/asm-generic/ide_iops.h b/include/asm-generic/ide_iops.h
index 1b91d0681914..81dfa3ee5e06 100644
--- a/include/asm-generic/ide_iops.h
+++ b/include/asm-generic/ide_iops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Generic I/O and MEMIO string operations. */
#define __ide_insw insw
diff --git a/include/asm-generic/int-ll64.h b/include/asm-generic/int-ll64.h
index 4cd84855cb46..ffb68d67be5f 100644
--- a/include/asm-generic/int-ll64.h
+++ b/include/asm-generic/int-ll64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* asm-generic/int-ll64.h
*
diff --git a/include/asm-generic/ioctl.h b/include/asm-generic/ioctl.h
index 297fb0d7cd6c..9fda9ed000cd 100644
--- a/include/asm-generic/ioctl.h
+++ b/include/asm-generic/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_IOCTL_H
#define _ASM_GENERIC_IOCTL_H
diff --git a/include/asm-generic/iomap.h b/include/asm-generic/iomap.h
index 650fede33c25..5b63b94ef6b5 100644
--- a/include/asm-generic/iomap.h
+++ b/include/asm-generic/iomap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GENERIC_IO_H
#define __GENERIC_IO_H
diff --git a/include/asm-generic/irq.h b/include/asm-generic/irq.h
index b90ec0bc485f..da21de991e84 100644
--- a/include/asm-generic/irq.h
+++ b/include/asm-generic/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_IRQ_H
#define __ASM_GENERIC_IRQ_H
diff --git a/include/asm-generic/irq_work.h b/include/asm-generic/irq_work.h
index a44f452c6590..d5dce06f74b8 100644
--- a/include/asm-generic/irq_work.h
+++ b/include/asm-generic/irq_work.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_IRQ_WORK_H
#define __ASM_IRQ_WORK_H
diff --git a/include/asm-generic/irqflags.h b/include/asm-generic/irqflags.h
index 1f40d0024cf3..19ccbf483a24 100644
--- a/include/asm-generic/irqflags.h
+++ b/include/asm-generic/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_IRQFLAGS_H
#define __ASM_GENERIC_IRQFLAGS_H
diff --git a/include/asm-generic/kdebug.h b/include/asm-generic/kdebug.h
index d1814497bcdb..2b10b31b02d0 100644
--- a/include/asm-generic/kdebug.h
+++ b/include/asm-generic/kdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_KDEBUG_H
#define _ASM_GENERIC_KDEBUG_H
diff --git a/include/asm-generic/kmap_types.h b/include/asm-generic/kmap_types.h
index 90f99c74dd38..9f95b7b63d19 100644
--- a/include/asm-generic/kmap_types.h
+++ b/include/asm-generic/kmap_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_KMAP_TYPES_H
#define _ASM_GENERIC_KMAP_TYPES_H
diff --git a/include/asm-generic/kprobes.h b/include/asm-generic/kprobes.h
index 57af9f21d148..4a982089c95c 100644
--- a/include/asm-generic/kprobes.h
+++ b/include/asm-generic/kprobes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_KPROBES_H
#define _ASM_GENERIC_KPROBES_H
diff --git a/include/asm-generic/kvm_para.h b/include/asm-generic/kvm_para.h
index fa25becbdcaf..18c6abe81fbd 100644
--- a/include/asm-generic/kvm_para.h
+++ b/include/asm-generic/kvm_para.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_KVM_PARA_H
#define _ASM_GENERIC_KVM_PARA_H
diff --git a/include/asm-generic/local.h b/include/asm-generic/local.h
index 9ceb03b4f466..fca7f1d84818 100644
--- a/include/asm-generic/local.h
+++ b/include/asm-generic/local.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_LOCAL_H
#define _ASM_GENERIC_LOCAL_H
diff --git a/include/asm-generic/local64.h b/include/asm-generic/local64.h
index 5980002b8b7b..765be0b7d883 100644
--- a/include/asm-generic/local64.h
+++ b/include/asm-generic/local64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_LOCAL64_H
#define _ASM_GENERIC_LOCAL64_H
diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h
index 5148150cc80b..7637fb46ba4f 100644
--- a/include/asm-generic/memory_model.h
+++ b/include/asm-generic/memory_model.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MEMORY_MODEL_H
#define __ASM_MEMORY_MODEL_H
diff --git a/include/asm-generic/mm_hooks.h b/include/asm-generic/mm_hooks.h
index 41e5b6784b97..ea189d88a3cc 100644
--- a/include/asm-generic/mm_hooks.h
+++ b/include/asm-generic/mm_hooks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Define generic no-op hooks for arch_dup_mmap, arch_exit_mmap
* and arch_unmap to be included in asm-FOO/mmu_context.h for any
diff --git a/include/asm-generic/mmu.h b/include/asm-generic/mmu.h
index 0ed3f1cfb854..061838037542 100644
--- a/include/asm-generic/mmu.h
+++ b/include/asm-generic/mmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_MMU_H
#define __ASM_GENERIC_MMU_H
diff --git a/include/asm-generic/mmu_context.h b/include/asm-generic/mmu_context.h
index a7eec910ba6c..6be9106fb6fb 100644
--- a/include/asm-generic/mmu_context.h
+++ b/include/asm-generic/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_MMU_CONTEXT_H
#define __ASM_GENERIC_MMU_CONTEXT_H
diff --git a/include/asm-generic/module.h b/include/asm-generic/module.h
index 14dc41d185a7..98e1541b72b7 100644
--- a/include/asm-generic/module.h
+++ b/include/asm-generic/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_MODULE_H
#define __ASM_GENERIC_MODULE_H
diff --git a/include/asm-generic/msi.h b/include/asm-generic/msi.h
index 61c58d8878ce..e6795f088bdd 100644
--- a/include/asm-generic/msi.h
+++ b/include/asm-generic/msi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_MSI_H
#define __ASM_GENERIC_MSI_H
diff --git a/include/asm-generic/page.h b/include/asm-generic/page.h
index 67cfb7dbc284..27bf3377b0cb 100644
--- a/include/asm-generic/page.h
+++ b/include/asm-generic/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_PAGE_H
#define __ASM_GENERIC_PAGE_H
/*
diff --git a/include/asm-generic/param.h b/include/asm-generic/param.h
index 04e715bccceb..8d3009dd28ff 100644
--- a/include/asm-generic/param.h
+++ b/include/asm-generic/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_PARAM_H
#define __ASM_GENERIC_PARAM_H
diff --git a/include/asm-generic/parport.h b/include/asm-generic/parport.h
index 2c9f9d4336ca..483991d619a7 100644
--- a/include/asm-generic/parport.h
+++ b/include/asm-generic/parport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_PARPORT_H
#define __ASM_GENERIC_PARPORT_H
diff --git a/include/asm-generic/pci.h b/include/asm-generic/pci.h
index f24bc519bf31..830d7659289b 100644
--- a/include/asm-generic/pci.h
+++ b/include/asm-generic/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/asm-generic/pci.h
*
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h
index 0504ef8f3aa3..1817a8415a5e 100644
--- a/include/asm-generic/percpu.h
+++ b/include/asm-generic/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_PERCPU_H_
#define _ASM_GENERIC_PERCPU_H_
@@ -115,15 +116,35 @@ do { \
(__ret); \
})
-#define this_cpu_generic_read(pcp) \
+#define __this_cpu_generic_read_nopreempt(pcp) \
({ \
typeof(pcp) __ret; \
preempt_disable_notrace(); \
- __ret = raw_cpu_generic_read(pcp); \
+ __ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
preempt_enable_notrace(); \
__ret; \
})
+#define __this_cpu_generic_read_noirq(pcp) \
+({ \
+ typeof(pcp) __ret; \
+ unsigned long __flags; \
+ raw_local_irq_save(__flags); \
+ __ret = raw_cpu_generic_read(pcp); \
+ raw_local_irq_restore(__flags); \
+ __ret; \
+})
+
+#define this_cpu_generic_read(pcp) \
+({ \
+ typeof(pcp) __ret; \
+ if (__native_word(pcp)) \
+ __ret = __this_cpu_generic_read_nopreempt(pcp); \
+ else \
+ __ret = __this_cpu_generic_read_noirq(pcp); \
+ __ret; \
+})
+
#define this_cpu_generic_to_op(pcp, val, op) \
do { \
unsigned long __flags; \
diff --git a/include/asm-generic/pgalloc.h b/include/asm-generic/pgalloc.h
index 9e429d08b1f8..948714c1535a 100644
--- a/include/asm-generic/pgalloc.h
+++ b/include/asm-generic/pgalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_PGALLOC_H
#define __ASM_GENERIC_PGALLOC_H
/*
diff --git a/include/asm-generic/pgtable-nop4d-hack.h b/include/asm-generic/pgtable-nop4d-hack.h
index 752fb7511750..0c34215263b8 100644
--- a/include/asm-generic/pgtable-nop4d-hack.h
+++ b/include/asm-generic/pgtable-nop4d-hack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PGTABLE_NOP4D_HACK_H
#define _PGTABLE_NOP4D_HACK_H
diff --git a/include/asm-generic/pgtable-nop4d.h b/include/asm-generic/pgtable-nop4d.h
index de364ecb8df6..8f22f55de17a 100644
--- a/include/asm-generic/pgtable-nop4d.h
+++ b/include/asm-generic/pgtable-nop4d.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PGTABLE_NOP4D_H
#define _PGTABLE_NOP4D_H
diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgtable-nopmd.h
index 725612b793ce..f35f6e8149e4 100644
--- a/include/asm-generic/pgtable-nopmd.h
+++ b/include/asm-generic/pgtable-nopmd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PGTABLE_NOPMD_H
#define _PGTABLE_NOPMD_H
diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgtable-nopud.h
index c2b9b96d6268..e950b9c50f34 100644
--- a/include/asm-generic/pgtable-nopud.h
+++ b/include/asm-generic/pgtable-nopud.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PGTABLE_NOPUD_H
#define _PGTABLE_NOPUD_H
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
index 8e0243036564..757dc6ffc7ba 100644
--- a/include/asm-generic/pgtable.h
+++ b/include/asm-generic/pgtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_PGTABLE_H
#define _ASM_GENERIC_PGTABLE_H
diff --git a/include/asm-generic/preempt.h b/include/asm-generic/preempt.h
index c1cde3577551..c3046c920063 100644
--- a/include/asm-generic/preempt.h
+++ b/include/asm-generic/preempt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_PREEMPT_H
#define __ASM_PREEMPT_H
diff --git a/include/asm-generic/qrwlock_types.h b/include/asm-generic/qrwlock_types.h
index 0abc6b6062fb..d93573eff162 100644
--- a/include/asm-generic/qrwlock_types.h
+++ b/include/asm-generic/qrwlock_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_QRWLOCK_TYPES_H
#define __ASM_GENERIC_QRWLOCK_TYPES_H
diff --git a/include/asm-generic/resource.h b/include/asm-generic/resource.h
index 5e752b959054..8874f681b056 100644
--- a/include/asm-generic/resource.h
+++ b/include/asm-generic/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_RESOURCE_H
#define _ASM_GENERIC_RESOURCE_H
diff --git a/include/asm-generic/rwsem.h b/include/asm-generic/rwsem.h
index 6c6a2141f271..bdbe43bac230 100644
--- a/include/asm-generic/rwsem.h
+++ b/include/asm-generic/rwsem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_RWSEM_H
#define _ASM_GENERIC_RWSEM_H
diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h
index e5da44eddd2f..6d9576931084 100644
--- a/include/asm-generic/sections.h
+++ b/include/asm-generic/sections.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_SECTIONS_H_
#define _ASM_GENERIC_SECTIONS_H_
diff --git a/include/asm-generic/serial.h b/include/asm-generic/serial.h
index 5e291090fe04..ca9f7b6be3f0 100644
--- a/include/asm-generic/serial.h
+++ b/include/asm-generic/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_SERIAL_H
#define __ASM_GENERIC_SERIAL_H
diff --git a/include/asm-generic/set_memory.h b/include/asm-generic/set_memory.h
index 83e81f8996b2..c86abf6bc7ba 100644
--- a/include/asm-generic/set_memory.h
+++ b/include/asm-generic/set_memory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SET_MEMORY_H
#define __ASM_SET_MEMORY_H
diff --git a/include/asm-generic/signal.h b/include/asm-generic/signal.h
index d840c90a157a..c53984fa9761 100644
--- a/include/asm-generic/signal.h
+++ b/include/asm-generic/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_SIGNAL_H
#define __ASM_GENERIC_SIGNAL_H
diff --git a/include/asm-generic/simd.h b/include/asm-generic/simd.h
index f57eb7b5c23b..d0343d58a74a 100644
--- a/include/asm-generic/simd.h
+++ b/include/asm-generic/simd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/hardirq.h>
diff --git a/include/asm-generic/spinlock.h b/include/asm-generic/spinlock.h
index 1547a03ac50f..adaf6acab172 100644
--- a/include/asm-generic/spinlock.h
+++ b/include/asm-generic/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_SPINLOCK_H
#define __ASM_GENERIC_SPINLOCK_H
/*
diff --git a/include/asm-generic/statfs.h b/include/asm-generic/statfs.h
index 4b934e9ec970..f88dcd8ed9dd 100644
--- a/include/asm-generic/statfs.h
+++ b/include/asm-generic/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _GENERIC_STATFS_H
#define _GENERIC_STATFS_H
diff --git a/include/asm-generic/syscalls.h b/include/asm-generic/syscalls.h
index 1f74be5113b2..933ca6581aba 100644
--- a/include/asm-generic/syscalls.h
+++ b/include/asm-generic/syscalls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_SYSCALLS_H
#define __ASM_GENERIC_SYSCALLS_H
diff --git a/include/asm-generic/termios-base.h b/include/asm-generic/termios-base.h
index 157bbf6f4510..59c5a3bd4a6e 100644
--- a/include/asm-generic/termios-base.h
+++ b/include/asm-generic/termios-base.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* termios.h: generic termios/termio user copying/translation
*/
diff --git a/include/asm-generic/termios.h b/include/asm-generic/termios.h
index 8c13a16b074e..b1398d0d4a1d 100644
--- a/include/asm-generic/termios.h
+++ b/include/asm-generic/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_TERMIOS_H
#define _ASM_GENERIC_TERMIOS_H
diff --git a/include/asm-generic/timex.h b/include/asm-generic/timex.h
index b2243cb8d6f6..50ba9b5ce983 100644
--- a/include/asm-generic/timex.h
+++ b/include/asm-generic/timex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_TIMEX_H
#define __ASM_GENERIC_TIMEX_H
diff --git a/include/asm-generic/tlbflush.h b/include/asm-generic/tlbflush.h
index d6d0a88430fe..dc2669289faf 100644
--- a/include/asm-generic/tlbflush.h
+++ b/include/asm-generic/tlbflush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_TLBFLUSH_H
#define __ASM_GENERIC_TLBFLUSH_H
/*
diff --git a/include/asm-generic/trace_clock.h b/include/asm-generic/trace_clock.h
index 6726f1bafb5e..cbbca295931a 100644
--- a/include/asm-generic/trace_clock.h
+++ b/include/asm-generic/trace_clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_GENERIC_TRACE_CLOCK_H
#define _ASM_GENERIC_TRACE_CLOCK_H
/*
diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h
index 723e81a6c162..6b2e63df2739 100644
--- a/include/asm-generic/uaccess.h
+++ b/include/asm-generic/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_UACCESS_H
#define __ASM_GENERIC_UACCESS_H
@@ -75,10 +76,10 @@ static inline int __access_ok(unsigned long addr, unsigned long size)
#define put_user(x, ptr) \
({ \
- void *__p = (ptr); \
+ void __user *__p = (ptr); \
might_fault(); \
access_ok(VERIFY_WRITE, __p, sizeof(*ptr)) ? \
- __put_user((x), ((__typeof__(*(ptr)) *)__p)) : \
+ __put_user((x), ((__typeof__(*(ptr)) __user *)__p)) : \
-EFAULT; \
})
@@ -137,10 +138,10 @@ extern int __put_user_bad(void) __attribute__((noreturn));
#define get_user(x, ptr) \
({ \
- const void *__p = (ptr); \
+ const void __user *__p = (ptr); \
might_fault(); \
access_ok(VERIFY_READ, __p, sizeof(*ptr)) ? \
- __get_user((x), (__typeof__(*(ptr)) *)__p) : \
+ __get_user((x), (__typeof__(*(ptr)) __user *)__p) :\
((x) = (__typeof__(*(ptr)))0,-EFAULT); \
})
diff --git a/include/asm-generic/unaligned.h b/include/asm-generic/unaligned.h
index 1ac097279db1..374c940e9be1 100644
--- a/include/asm-generic/unaligned.h
+++ b/include/asm-generic/unaligned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_UNALIGNED_H
#define __ASM_GENERIC_UNALIGNED_H
diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h
index cccc86ecfeaa..cdf904265caf 100644
--- a/include/asm-generic/unistd.h
+++ b/include/asm-generic/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <uapi/asm-generic/unistd.h>
#include <linux/export.h>
diff --git a/include/asm-generic/vga.h b/include/asm-generic/vga.h
index 36c8ff52016b..adf91a783b5c 100644
--- a/include/asm-generic/vga.h
+++ b/include/asm-generic/vga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Access to VGA videoram
*
diff --git a/include/asm-generic/word-at-a-time.h b/include/asm-generic/word-at-a-time.h
index 011dde083f23..20c93f08c993 100644
--- a/include/asm-generic/word-at-a-time.h
+++ b/include/asm-generic/word-at-a-time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_WORD_AT_A_TIME_H
#define _ASM_WORD_AT_A_TIME_H
diff --git a/include/clocksource/timer-sp804.h b/include/clocksource/timer-sp804.h
index 7654d71243dd..a5b41f31a1c2 100644
--- a/include/clocksource/timer-sp804.h
+++ b/include/clocksource/timer-sp804.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CLKSOURCE_TIMER_SP804_H
#define __CLKSOURCE_TIMER_SP804_H
diff --git a/include/crypto/ablk_helper.h b/include/crypto/ablk_helper.h
index 4f93df50c23e..4e655c2a4e15 100644
--- a/include/crypto/ablk_helper.h
+++ b/include/crypto/ablk_helper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Shared async block cipher helpers
*/
diff --git a/include/crypto/aes.h b/include/crypto/aes.h
index 7524ba3b6f3c..852eaa9cd4db 100644
--- a/include/crypto/aes.h
+++ b/include/crypto/aes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common values for AES algorithms
*/
diff --git a/include/crypto/blowfish.h b/include/crypto/blowfish.h
index 1450d4a27980..9b384670b356 100644
--- a/include/crypto/blowfish.h
+++ b/include/crypto/blowfish.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common values for blowfish algorithms
*/
diff --git a/include/crypto/cast5.h b/include/crypto/cast5.h
index 14fbf39d6380..3d4ed4ea9c3b 100644
--- a/include/crypto/cast5.h
+++ b/include/crypto/cast5.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYPTO_CAST5_H
#define _CRYPTO_CAST5_H
diff --git a/include/crypto/cast6.h b/include/crypto/cast6.h
index 32b60eb8bd24..c71f6ef47f0f 100644
--- a/include/crypto/cast6.h
+++ b/include/crypto/cast6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYPTO_CAST6_H
#define _CRYPTO_CAST6_H
diff --git a/include/crypto/cast_common.h b/include/crypto/cast_common.h
index b7df35cd9f0a..b90090244164 100644
--- a/include/crypto/cast_common.h
+++ b/include/crypto/cast_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYPTO_CAST_COMMON_H
#define _CRYPTO_CAST_COMMON_H
diff --git a/include/crypto/chacha20.h b/include/crypto/chacha20.h
index 445fc45f4b5b..caaa470389e0 100644
--- a/include/crypto/chacha20.h
+++ b/include/crypto/chacha20.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common values for the ChaCha20 algorithm
*/
diff --git a/include/crypto/cryptd.h b/include/crypto/cryptd.h
index 94418cbf9013..1e64f354c2b8 100644
--- a/include/crypto/cryptd.h
+++ b/include/crypto/cryptd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Software async crypto daemon
*
diff --git a/include/crypto/crypto_wq.h b/include/crypto/crypto_wq.h
index a7d252daf91b..23114746ac08 100644
--- a/include/crypto/crypto_wq.h
+++ b/include/crypto/crypto_wq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef CRYPTO_WQ_H
#define CRYPTO_WQ_H
diff --git a/include/crypto/des.h b/include/crypto/des.h
index fc6274c6bb26..d4094d58ac54 100644
--- a/include/crypto/des.h
+++ b/include/crypto/des.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* DES & Triple DES EDE Cipher Algorithms.
*/
diff --git a/include/crypto/ghash.h b/include/crypto/ghash.h
index 2a61c9bbab8f..9136301062a5 100644
--- a/include/crypto/ghash.h
+++ b/include/crypto/ghash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common values for GHASH algorithms
*/
diff --git a/include/crypto/hmac.h b/include/crypto/hmac.h
index ef09f7938204..66774132a7b6 100644
--- a/include/crypto/hmac.h
+++ b/include/crypto/hmac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYPTO_HMAC_H
#define _CRYPTO_HMAC_H
diff --git a/include/crypto/internal/simd.h b/include/crypto/internal/simd.h
index 429509968f68..32ceb6929885 100644
--- a/include/crypto/internal/simd.h
+++ b/include/crypto/internal/simd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Shared crypto simd helpers
*/
diff --git a/include/crypto/lrw.h b/include/crypto/lrw.h
index 25a2c8716375..a9d44c06d081 100644
--- a/include/crypto/lrw.h
+++ b/include/crypto/lrw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYPTO_LRW_H
#define _CRYPTO_LRW_H
diff --git a/include/crypto/mcryptd.h b/include/crypto/mcryptd.h
index 4a53c0d38cd2..cceafa01f907 100644
--- a/include/crypto/mcryptd.h
+++ b/include/crypto/mcryptd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Software async multibuffer crypto daemon headers
*
diff --git a/include/crypto/md5.h b/include/crypto/md5.h
index 327deac963c0..cf9e9dec3d21 100644
--- a/include/crypto/md5.h
+++ b/include/crypto/md5.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYPTO_MD5_H
#define _CRYPTO_MD5_H
diff --git a/include/crypto/null.h b/include/crypto/null.h
index 3f0c59fb0a61..5757c0a4b321 100644
--- a/include/crypto/null.h
+++ b/include/crypto/null.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Values for NULL algorithms */
#ifndef _CRYPTO_NULL_H
diff --git a/include/crypto/poly1305.h b/include/crypto/poly1305.h
index 894df59b74e4..c65567d01e8e 100644
--- a/include/crypto/poly1305.h
+++ b/include/crypto/poly1305.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common values for the Poly1305 algorithm
*/
diff --git a/include/crypto/serpent.h b/include/crypto/serpent.h
index b7e0941eb6fc..7dd780c5d058 100644
--- a/include/crypto/serpent.h
+++ b/include/crypto/serpent.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common values for serpent algorithms
*/
diff --git a/include/crypto/sha.h b/include/crypto/sha.h
index c94d3eb1cefd..0555b571dd34 100644
--- a/include/crypto/sha.h
+++ b/include/crypto/sha.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common values for SHA algorithms
*/
diff --git a/include/crypto/sha3.h b/include/crypto/sha3.h
index f4c9f68f5ffe..b9d9bd553b48 100644
--- a/include/crypto/sha3.h
+++ b/include/crypto/sha3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common values for SHA-3 algorithms
*/
diff --git a/include/crypto/twofish.h b/include/crypto/twofish.h
index 095c901a8af3..2e2c09673d88 100644
--- a/include/crypto/twofish.h
+++ b/include/crypto/twofish.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYPTO_TWOFISH_H
#define _CRYPTO_TWOFISH_H
diff --git a/include/crypto/xts.h b/include/crypto/xts.h
index c0bde308b28a..322aab6e78a7 100644
--- a/include/crypto/xts.h
+++ b/include/crypto/xts.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYPTO_XTS_H
#define _CRYPTO_XTS_H
diff --git a/include/drm/ati_pcigart.h b/include/drm/ati_pcigart.h
index 5765648b5ef7..a728a1364e66 100644
--- a/include/drm/ati_pcigart.h
+++ b/include/drm/ati_pcigart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DRM_ATI_PCIGART_H
#define DRM_ATI_PCIGART_H
diff --git a/include/drm/drm_agpsupport.h b/include/drm/drm_agpsupport.h
index b2d912670a7f..b05e462276d5 100644
--- a/include/drm/drm_agpsupport.h
+++ b/include/drm/drm_agpsupport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DRM_AGPSUPPORT_H_
#define _DRM_AGPSUPPORT_H_
diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
index a323781afc3f..1df291d11710 100644
--- a/include/drm/drm_fb_cma_helper.h
+++ b/include/drm/drm_fb_cma_helper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRM_FB_CMA_HELPER_H__
#define __DRM_FB_CMA_HELPER_H__
diff --git a/include/drm/drm_gem_cma_helper.h b/include/drm/drm_gem_cma_helper.h
index 58a739bf15f1..520e3feb502c 100644
--- a/include/drm/drm_gem_cma_helper.h
+++ b/include/drm/drm_gem_cma_helper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRM_GEM_CMA_HELPER_H__
#define __DRM_GEM_CMA_HELPER_H__
diff --git a/include/drm/drm_of.h b/include/drm/drm_of.h
index 104dd517fdbe..4f835490d77a 100644
--- a/include/drm/drm_of.h
+++ b/include/drm/drm_of.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRM_OF_H__
#define __DRM_OF_H__
diff --git a/include/drm/drm_os_linux.h b/include/drm/drm_os_linux.h
index 10122353b744..ee8d61b64f29 100644
--- a/include/drm/drm_os_linux.h
+++ b/include/drm/drm_os_linux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/**
* \file drm_os_linux.h
* OS abstraction macros.
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
index 8bc073d297db..683742826511 100644
--- a/include/drm/drm_pciids.h
+++ b/include/drm/drm_pciids.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define radeon_PCI_IDS \
{0x1002, 0x1304, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KAVERI|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
{0x1002, 0x1305, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KAVERI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
diff --git a/include/drm/drm_sysfs.h b/include/drm/drm_sysfs.h
index 70c9a1074aca..4f311e836cdc 100644
--- a/include/drm/drm_sysfs.h
+++ b/include/drm/drm_sysfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DRM_SYSFS_H_
#define _DRM_SYSFS_H_
diff --git a/include/drm/i2c/tda998x.h b/include/drm/i2c/tda998x.h
index a25483090cd5..3cb25ccbe5e6 100644
--- a/include/drm/i2c/tda998x.h
+++ b/include/drm/i2c/tda998x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DRM_I2C_TDA998X_H__
#define __DRM_I2C_TDA998X_H__
diff --git a/include/drm/intel-gtt.h b/include/drm/intel-gtt.h
index b3bf717cfc45..c5db7975c640 100644
--- a/include/drm/intel-gtt.h
+++ b/include/drm/intel-gtt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Common header for intel-gtt.ko and i915.ko */
#ifndef _DRM_INTEL_GTT_H
diff --git a/include/dt-bindings/clock/berlin2.h b/include/dt-bindings/clock/berlin2.h
index 0c30800175df..b07b8efab075 100644
--- a/include/dt-bindings/clock/berlin2.h
+++ b/include/dt-bindings/clock/berlin2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Berlin2 BG2/BG2CD clock tree IDs
*/
diff --git a/include/dt-bindings/clock/berlin2q.h b/include/dt-bindings/clock/berlin2q.h
index 72eaf91c9ca6..44b4ac382850 100644
--- a/include/dt-bindings/clock/berlin2q.h
+++ b/include/dt-bindings/clock/berlin2q.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Berlin2 BG2Q clock tree IDs
*/
diff --git a/include/dt-bindings/clock/cortina,gemini-clock.h b/include/dt-bindings/clock/cortina,gemini-clock.h
index acf5cd550b0c..04c3404b2d33 100644
--- a/include/dt-bindings/clock/cortina,gemini-clock.h
+++ b/include/dt-bindings/clock/cortina,gemini-clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DT_BINDINGS_CORTINA_GEMINI_CLOCK_H
#define DT_BINDINGS_CORTINA_GEMINI_CLOCK_H
diff --git a/include/dt-bindings/clock/efm32-cmu.h b/include/dt-bindings/clock/efm32-cmu.h
index b21b91e736af..4b48d15fe194 100644
--- a/include/dt-bindings/clock/efm32-cmu.h
+++ b/include/dt-bindings/clock/efm32-cmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_BINDINGS_CLOCK_EFM32_CMU_H
#define __DT_BINDINGS_CLOCK_EFM32_CMU_H
diff --git a/include/dt-bindings/clock/exynos-audss-clk.h b/include/dt-bindings/clock/exynos-audss-clk.h
index 0ae6f5a75d2a..eee9fcc6e6af 100644
--- a/include/dt-bindings/clock/exynos-audss-clk.h
+++ b/include/dt-bindings/clock/exynos-audss-clk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for Samsung audio subsystem
* clock controller.
diff --git a/include/dt-bindings/clock/gxbb-clkc.h b/include/dt-bindings/clock/gxbb-clkc.h
index c04a76d8facf..8c92528aa48a 100644
--- a/include/dt-bindings/clock/gxbb-clkc.h
+++ b/include/dt-bindings/clock/gxbb-clkc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* GXBB clock tree IDs
*/
diff --git a/include/dt-bindings/clock/jz4740-cgu.h b/include/dt-bindings/clock/jz4740-cgu.h
index 43153d3e9bd2..6ed83f926ae7 100644
--- a/include/dt-bindings/clock/jz4740-cgu.h
+++ b/include/dt-bindings/clock/jz4740-cgu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides clock numbers for the ingenic,jz4740-cgu DT binding.
*
diff --git a/include/dt-bindings/clock/jz4780-cgu.h b/include/dt-bindings/clock/jz4780-cgu.h
index 467165e3cfee..1859ce53ee38 100644
--- a/include/dt-bindings/clock/jz4780-cgu.h
+++ b/include/dt-bindings/clock/jz4780-cgu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides clock numbers for the ingenic,jz4780-cgu DT binding.
*
diff --git a/include/dt-bindings/clock/marvell,mmp2.h b/include/dt-bindings/clock/marvell,mmp2.h
index 7a510384a82a..228a5e234af0 100644
--- a/include/dt-bindings/clock/marvell,mmp2.h
+++ b/include/dt-bindings/clock/marvell,mmp2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DTS_MARVELL_MMP2_CLOCK_H
#define __DTS_MARVELL_MMP2_CLOCK_H
diff --git a/include/dt-bindings/clock/marvell,pxa168.h b/include/dt-bindings/clock/marvell,pxa168.h
index 3e45bdfe1aa4..caf90436b848 100644
--- a/include/dt-bindings/clock/marvell,pxa168.h
+++ b/include/dt-bindings/clock/marvell,pxa168.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DTS_MARVELL_PXA168_CLOCK_H
#define __DTS_MARVELL_PXA168_CLOCK_H
diff --git a/include/dt-bindings/clock/marvell,pxa1928.h b/include/dt-bindings/clock/marvell,pxa1928.h
index d4f2e18919ff..5dca4820297f 100644
--- a/include/dt-bindings/clock/marvell,pxa1928.h
+++ b/include/dt-bindings/clock/marvell,pxa1928.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DTS_MARVELL_PXA1928_CLOCK_H
#define __DTS_MARVELL_PXA1928_CLOCK_H
diff --git a/include/dt-bindings/clock/marvell,pxa910.h b/include/dt-bindings/clock/marvell,pxa910.h
index 135082a0b62f..7bf46238946e 100644
--- a/include/dt-bindings/clock/marvell,pxa910.h
+++ b/include/dt-bindings/clock/marvell,pxa910.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DTS_MARVELL_PXA910_CLOCK_H
#define __DTS_MARVELL_PXA910_CLOCK_H
diff --git a/include/dt-bindings/clock/meson8b-clkc.h b/include/dt-bindings/clock/meson8b-clkc.h
index a9c0306330b6..dea9d46d4fa7 100644
--- a/include/dt-bindings/clock/meson8b-clkc.h
+++ b/include/dt-bindings/clock/meson8b-clkc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Meson8b clock tree IDs
*/
diff --git a/include/dt-bindings/clock/mpc512x-clock.h b/include/dt-bindings/clock/mpc512x-clock.h
index 4f94919327ce..13c316bf2796 100644
--- a/include/dt-bindings/clock/mpc512x-clock.h
+++ b/include/dt-bindings/clock/mpc512x-clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for MPC512x clock specs in DT bindings.
*/
diff --git a/include/dt-bindings/clock/rockchip,rk808.h b/include/dt-bindings/clock/rockchip,rk808.h
index 1a873432f965..75dabfc6adc1 100644
--- a/include/dt-bindings/clock/rockchip,rk808.h
+++ b/include/dt-bindings/clock/rockchip,rk808.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants clk index RK808 pmic clkout
*/
diff --git a/include/dt-bindings/clock/ste-ab8500.h b/include/dt-bindings/clock/ste-ab8500.h
index 6731f1f00a84..fb42dd0cab5f 100644
--- a/include/dt-bindings/clock/ste-ab8500.h
+++ b/include/dt-bindings/clock/ste-ab8500.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __STE_CLK_AB8500_H__
#define __STE_CLK_AB8500_H__
diff --git a/include/dt-bindings/clock/stih407-clks.h b/include/dt-bindings/clock/stih407-clks.h
index 082edd9badfa..f0936c133772 100644
--- a/include/dt-bindings/clock/stih407-clks.h
+++ b/include/dt-bindings/clock/stih407-clks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants clk index STMicroelectronics
* STiH407 SoC.
diff --git a/include/dt-bindings/clock/stih410-clks.h b/include/dt-bindings/clock/stih410-clks.h
index 2097a4bbe155..90cbe6154c39 100644
--- a/include/dt-bindings/clock/stih410-clks.h
+++ b/include/dt-bindings/clock/stih410-clks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants clk index STMicroelectronics
* STiH410 SoC.
diff --git a/include/dt-bindings/clock/stih416-clks.h b/include/dt-bindings/clock/stih416-clks.h
index f9bdbd13568d..74302278024e 100644
--- a/include/dt-bindings/clock/stih416-clks.h
+++ b/include/dt-bindings/clock/stih416-clks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants clk index STMicroelectronics
* STiH416 SoC.
diff --git a/include/dt-bindings/clock/stih418-clks.h b/include/dt-bindings/clock/stih418-clks.h
index b62aa0b20217..0e7fba0c52b3 100644
--- a/include/dt-bindings/clock/stih418-clks.h
+++ b/include/dt-bindings/clock/stih418-clks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants clk index STMicroelectronics
* STiH418 SoC.
diff --git a/include/dt-bindings/clock/tegra114-car.h b/include/dt-bindings/clock/tegra114-car.h
index ed5ca218c857..bb5c2c999c05 100644
--- a/include/dt-bindings/clock/tegra114-car.h
+++ b/include/dt-bindings/clock/tegra114-car.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for binding nvidia,tegra114-car.
*
diff --git a/include/dt-bindings/clock/tegra124-car-common.h b/include/dt-bindings/clock/tegra124-car-common.h
index 9352c7e2ce0b..4331f1df6ebe 100644
--- a/include/dt-bindings/clock/tegra124-car-common.h
+++ b/include/dt-bindings/clock/tegra124-car-common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for binding nvidia,tegra124-car or
* nvidia,tegra132-car.
diff --git a/include/dt-bindings/clock/tegra124-car.h b/include/dt-bindings/clock/tegra124-car.h
index 2860737f0443..c520ee231950 100644
--- a/include/dt-bindings/clock/tegra124-car.h
+++ b/include/dt-bindings/clock/tegra124-car.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides Tegra124-specific constants for binding
* nvidia,tegra124-car.
diff --git a/include/dt-bindings/clock/tegra186-clock.h b/include/dt-bindings/clock/tegra186-clock.h
index f73d32098f99..d6b525f4566f 100644
--- a/include/dt-bindings/clock/tegra186-clock.h
+++ b/include/dt-bindings/clock/tegra186-clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/** @file */
#ifndef _MACH_T186_CLK_T186_H
diff --git a/include/dt-bindings/clock/tegra20-car.h b/include/dt-bindings/clock/tegra20-car.h
index 04500b243a4d..b21a0eb32921 100644
--- a/include/dt-bindings/clock/tegra20-car.h
+++ b/include/dt-bindings/clock/tegra20-car.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for binding nvidia,tegra20-car.
*
diff --git a/include/dt-bindings/clock/tegra210-car.h b/include/dt-bindings/clock/tegra210-car.h
index 46689cd3750b..a9dc1457cb00 100644
--- a/include/dt-bindings/clock/tegra210-car.h
+++ b/include/dt-bindings/clock/tegra210-car.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for binding nvidia,tegra210-car.
*
diff --git a/include/dt-bindings/clock/tegra30-car.h b/include/dt-bindings/clock/tegra30-car.h
index 7213354b9652..3c90f1535551 100644
--- a/include/dt-bindings/clock/tegra30-car.h
+++ b/include/dt-bindings/clock/tegra30-car.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for binding nvidia,tegra30-car.
*
diff --git a/include/dt-bindings/display/tda998x.h b/include/dt-bindings/display/tda998x.h
index 34757a3847ef..746831ff396c 100644
--- a/include/dt-bindings/display/tda998x.h
+++ b/include/dt-bindings/display/tda998x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_TDA998X_H
#define _DT_BINDINGS_TDA998X_H
diff --git a/include/dt-bindings/gpio/gpio.h b/include/dt-bindings/gpio/gpio.h
index c5074584561d..32dd58a3d13c 100644
--- a/include/dt-bindings/gpio/gpio.h
+++ b/include/dt-bindings/gpio/gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for most GPIO bindings.
*
diff --git a/include/dt-bindings/gpio/tegra-gpio.h b/include/dt-bindings/gpio/tegra-gpio.h
index a1c09e88e80b..7625dbc577c2 100644
--- a/include/dt-bindings/gpio/tegra-gpio.h
+++ b/include/dt-bindings/gpio/tegra-gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for binding nvidia,tegra*-gpio.
*
diff --git a/include/dt-bindings/gpio/tegra186-gpio.h b/include/dt-bindings/gpio/tegra186-gpio.h
index 38001c7023f1..463ad398fe3e 100644
--- a/include/dt-bindings/gpio/tegra186-gpio.h
+++ b/include/dt-bindings/gpio/tegra186-gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for binding nvidia,tegra186-gpio*.
*
diff --git a/include/dt-bindings/iio/adc/fsl-imx25-gcq.h b/include/dt-bindings/iio/adc/fsl-imx25-gcq.h
index 87abdd4a7674..08ef4d298b94 100644
--- a/include/dt-bindings/iio/adc/fsl-imx25-gcq.h
+++ b/include/dt-bindings/iio/adc/fsl-imx25-gcq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for configuring the I.MX25 ADC
*/
diff --git a/include/dt-bindings/iio/adi,ad5592r.h b/include/dt-bindings/iio/adi,ad5592r.h
index c48aca1dcade..9f8c7b808cd1 100644
--- a/include/dt-bindings/iio/adi,ad5592r.h
+++ b/include/dt-bindings/iio/adi,ad5592r.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_ADI_AD5592R_H
#define _DT_BINDINGS_ADI_AD5592R_H
diff --git a/include/dt-bindings/input/input.h b/include/dt-bindings/input/input.h
index a21413324a3f..bcf0ae100f21 100644
--- a/include/dt-bindings/input/input.h
+++ b/include/dt-bindings/input/input.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for most input bindings.
*
diff --git a/include/dt-bindings/interrupt-controller/arm-gic.h b/include/dt-bindings/interrupt-controller/arm-gic.h
index d4110d5caa3e..0c85f65c81c7 100644
--- a/include/dt-bindings/interrupt-controller/arm-gic.h
+++ b/include/dt-bindings/interrupt-controller/arm-gic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the ARM GIC.
*/
diff --git a/include/dt-bindings/interrupt-controller/irq.h b/include/dt-bindings/interrupt-controller/irq.h
index 33a1003c55aa..a8b310555f14 100644
--- a/include/dt-bindings/interrupt-controller/irq.h
+++ b/include/dt-bindings/interrupt-controller/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for most IRQ bindings.
*
diff --git a/include/dt-bindings/interrupt-controller/mips-gic.h b/include/dt-bindings/interrupt-controller/mips-gic.h
index cf35a577e371..bd45cee0c3f0 100644
--- a/include/dt-bindings/interrupt-controller/mips-gic.h
+++ b/include/dt-bindings/interrupt-controller/mips-gic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_INTERRUPT_CONTROLLER_MIPS_GIC_H
#define _DT_BINDINGS_INTERRUPT_CONTROLLER_MIPS_GIC_H
diff --git a/include/dt-bindings/interrupt-controller/mvebu-icu.h b/include/dt-bindings/interrupt-controller/mvebu-icu.h
index 8249558545c7..bb5217c64206 100644
--- a/include/dt-bindings/interrupt-controller/mvebu-icu.h
+++ b/include/dt-bindings/interrupt-controller/mvebu-icu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the MVEBU ICU driver.
*/
diff --git a/include/dt-bindings/leds/common.h b/include/dt-bindings/leds/common.h
index 7958bec7de8c..e171d0a6beb2 100644
--- a/include/dt-bindings/leds/common.h
+++ b/include/dt-bindings/leds/common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides macros for the common LEDs device tree bindings.
*
diff --git a/include/dt-bindings/leds/leds-ns2.h b/include/dt-bindings/leds/leds-ns2.h
index 491c5f974a92..fd615749e703 100644
--- a/include/dt-bindings/leds/leds-ns2.h
+++ b/include/dt-bindings/leds/leds-ns2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_LEDS_NS2_H
#define _DT_BINDINGS_LEDS_NS2_H
diff --git a/include/dt-bindings/mailbox/tegra186-hsp.h b/include/dt-bindings/mailbox/tegra186-hsp.h
index f5d66e5f5f10..bcab5b7ca785 100644
--- a/include/dt-bindings/mailbox/tegra186-hsp.h
+++ b/include/dt-bindings/mailbox/tegra186-hsp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for binding nvidia,tegra186-hsp.
*/
diff --git a/include/dt-bindings/media/c8sectpfe.h b/include/dt-bindings/media/c8sectpfe.h
index a0b5c7be683c..6b1fb6f5413b 100644
--- a/include/dt-bindings/media/c8sectpfe.h
+++ b/include/dt-bindings/media/c8sectpfe.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_C8SECTPFE_H
#define __DT_C8SECTPFE_H
diff --git a/include/dt-bindings/memory/tegra114-mc.h b/include/dt-bindings/memory/tegra114-mc.h
index 8f48985a3139..27c8386987ff 100644
--- a/include/dt-bindings/memory/tegra114-mc.h
+++ b/include/dt-bindings/memory/tegra114-mc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DT_BINDINGS_MEMORY_TEGRA114_MC_H
#define DT_BINDINGS_MEMORY_TEGRA114_MC_H
diff --git a/include/dt-bindings/memory/tegra124-mc.h b/include/dt-bindings/memory/tegra124-mc.h
index 7d8ee798f34e..f534d7c06019 100644
--- a/include/dt-bindings/memory/tegra124-mc.h
+++ b/include/dt-bindings/memory/tegra124-mc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DT_BINDINGS_MEMORY_TEGRA124_MC_H
#define DT_BINDINGS_MEMORY_TEGRA124_MC_H
diff --git a/include/dt-bindings/memory/tegra210-mc.h b/include/dt-bindings/memory/tegra210-mc.h
index d1731bc14dbc..4490f7cf4772 100644
--- a/include/dt-bindings/memory/tegra210-mc.h
+++ b/include/dt-bindings/memory/tegra210-mc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DT_BINDINGS_MEMORY_TEGRA210_MC_H
#define DT_BINDINGS_MEMORY_TEGRA210_MC_H
diff --git a/include/dt-bindings/memory/tegra30-mc.h b/include/dt-bindings/memory/tegra30-mc.h
index 502beb03d777..3cac81919023 100644
--- a/include/dt-bindings/memory/tegra30-mc.h
+++ b/include/dt-bindings/memory/tegra30-mc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DT_BINDINGS_MEMORY_TEGRA30_MC_H
#define DT_BINDINGS_MEMORY_TEGRA30_MC_H
diff --git a/include/dt-bindings/mfd/as3722.h b/include/dt-bindings/mfd/as3722.h
index e66c0898c58e..9ef0cba90407 100644
--- a/include/dt-bindings/mfd/as3722.h
+++ b/include/dt-bindings/mfd/as3722.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides macros for ams AS3722 device bindings.
*
diff --git a/include/dt-bindings/mfd/dbx500-prcmu.h b/include/dt-bindings/mfd/dbx500-prcmu.h
index 552a2d174f01..0404bcc47dd4 100644
--- a/include/dt-bindings/mfd/dbx500-prcmu.h
+++ b/include/dt-bindings/mfd/dbx500-prcmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the PRCMU bindings.
*
diff --git a/include/dt-bindings/mfd/max77620.h b/include/dt-bindings/mfd/max77620.h
index b911a0720ccd..1e19c5f908d7 100644
--- a/include/dt-bindings/mfd/max77620.h
+++ b/include/dt-bindings/mfd/max77620.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides macros for MAXIM MAX77620 device bindings.
*
diff --git a/include/dt-bindings/mfd/palmas.h b/include/dt-bindings/mfd/palmas.h
index cdb075aae4e1..c4f1d57ff4ff 100644
--- a/include/dt-bindings/mfd/palmas.h
+++ b/include/dt-bindings/mfd/palmas.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides macros for Palmas device bindings.
*
diff --git a/include/dt-bindings/mfd/qcom-rpm.h b/include/dt-bindings/mfd/qcom-rpm.h
index 54aef5e21763..c9204c4df520 100644
--- a/include/dt-bindings/mfd/qcom-rpm.h
+++ b/include/dt-bindings/mfd/qcom-rpm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the Qualcomm RPM bindings.
*/
diff --git a/include/dt-bindings/mfd/st-lpc.h b/include/dt-bindings/mfd/st-lpc.h
index d05894afa7e7..88a7f56843bc 100644
--- a/include/dt-bindings/mfd/st-lpc.h
+++ b/include/dt-bindings/mfd/st-lpc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides shared DT/Driver defines for ST's LPC device
*
diff --git a/include/dt-bindings/mfd/stm32f4-rcc.h b/include/dt-bindings/mfd/stm32f4-rcc.h
index 082a81c94298..309e8c79f27b 100644
--- a/include/dt-bindings/mfd/stm32f4-rcc.h
+++ b/include/dt-bindings/mfd/stm32f4-rcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the STM32F4 RCC IP
*/
diff --git a/include/dt-bindings/mfd/stm32f7-rcc.h b/include/dt-bindings/mfd/stm32f7-rcc.h
index e36cc69959c7..8b7b7197ffd7 100644
--- a/include/dt-bindings/mfd/stm32f7-rcc.h
+++ b/include/dt-bindings/mfd/stm32f7-rcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the STM32F7 RCC IP
*/
diff --git a/include/dt-bindings/mips/lantiq_rcu_gphy.h b/include/dt-bindings/mips/lantiq_rcu_gphy.h
new file mode 100644
index 000000000000..fa1a63773342
--- /dev/null
+++ b/include/dt-bindings/mips/lantiq_rcu_gphy.h
@@ -0,0 +1,15 @@
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ *
+ * Copyright (C) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+ * Copyright (C) 2017 Hauke Mehrtens <hauke@hauke-m.de>
+ */
+#ifndef _DT_BINDINGS_MIPS_LANTIQ_RCU_GPHY_H
+#define _DT_BINDINGS_MIPS_LANTIQ_RCU_GPHY_H
+
+#define GPHY_MODE_GE 1
+#define GPHY_MODE_FE 2
+
+#endif /* _DT_BINDINGS_MIPS_LANTIQ_RCU_GPHY_H */
diff --git a/include/dt-bindings/mux/mux.h b/include/dt-bindings/mux/mux.h
index c8e855c4a609..042719218dbf 100644
--- a/include/dt-bindings/mux/mux.h
+++ b/include/dt-bindings/mux/mux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for most Multiplexer bindings.
*
diff --git a/include/dt-bindings/pinctrl/am33xx.h b/include/dt-bindings/pinctrl/am33xx.h
index 226f77246a70..7d947a597220 100644
--- a/include/dt-bindings/pinctrl/am33xx.h
+++ b/include/dt-bindings/pinctrl/am33xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants specific to AM33XX pinctrl bindings.
*/
diff --git a/include/dt-bindings/pinctrl/am43xx.h b/include/dt-bindings/pinctrl/am43xx.h
index 344bd1eb3386..46789157660b 100644
--- a/include/dt-bindings/pinctrl/am43xx.h
+++ b/include/dt-bindings/pinctrl/am43xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants specific to AM43XX pinctrl bindings.
*/
diff --git a/include/dt-bindings/pinctrl/dm814x.h b/include/dt-bindings/pinctrl/dm814x.h
index 0f484273da0d..afbabbc4ddbb 100644
--- a/include/dt-bindings/pinctrl/dm814x.h
+++ b/include/dt-bindings/pinctrl/dm814x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants specific to DM814X pinctrl bindings.
*/
diff --git a/include/dt-bindings/pinctrl/mt6397-pinfunc.h b/include/dt-bindings/pinctrl/mt6397-pinfunc.h
index 85739b308c2f..f393fbd68905 100644
--- a/include/dt-bindings/pinctrl/mt6397-pinfunc.h
+++ b/include/dt-bindings/pinctrl/mt6397-pinfunc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DTS_MT6397_PINFUNC_H
#define __DTS_MT6397_PINFUNC_H
diff --git a/include/dt-bindings/pinctrl/mt7623-pinfunc.h b/include/dt-bindings/pinctrl/mt7623-pinfunc.h
index 436a87be864a..2d6a7b1d7be2 100644
--- a/include/dt-bindings/pinctrl/mt7623-pinfunc.h
+++ b/include/dt-bindings/pinctrl/mt7623-pinfunc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DTS_MT7623_PINFUNC_H
#define __DTS_MT7623_PINFUNC_H
diff --git a/include/dt-bindings/pinctrl/omap.h b/include/dt-bindings/pinctrl/omap.h
index fbd6f7202476..49b5dea2b388 100644
--- a/include/dt-bindings/pinctrl/omap.h
+++ b/include/dt-bindings/pinctrl/omap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for OMAP pinctrl bindings.
*
diff --git a/include/dt-bindings/pinctrl/pinctrl-tegra-xusb.h b/include/dt-bindings/pinctrl/pinctrl-tegra-xusb.h
index 914d56da9324..ac63c399b4b6 100644
--- a/include/dt-bindings/pinctrl/pinctrl-tegra-xusb.h
+++ b/include/dt-bindings/pinctrl/pinctrl-tegra-xusb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H
#define _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H 1
diff --git a/include/dt-bindings/pinctrl/qcom,pmic-gpio.h b/include/dt-bindings/pinctrl/qcom,pmic-gpio.h
index b8ff8824e21b..e5df5ce45a0f 100644
--- a/include/dt-bindings/pinctrl/qcom,pmic-gpio.h
+++ b/include/dt-bindings/pinctrl/qcom,pmic-gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the Qualcomm PMIC GPIO binding.
*/
diff --git a/include/dt-bindings/pinctrl/qcom,pmic-mpp.h b/include/dt-bindings/pinctrl/qcom,pmic-mpp.h
index 2e360d8f7801..32e66ee7e830 100644
--- a/include/dt-bindings/pinctrl/qcom,pmic-mpp.h
+++ b/include/dt-bindings/pinctrl/qcom,pmic-mpp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the Qualcomm PMIC's
* Multi-Purpose Pin binding.
diff --git a/include/dt-bindings/pinctrl/r7s72100-pinctrl.h b/include/dt-bindings/pinctrl/r7s72100-pinctrl.h
index 6b609fe10910..cdb950246880 100644
--- a/include/dt-bindings/pinctrl/r7s72100-pinctrl.h
+++ b/include/dt-bindings/pinctrl/r7s72100-pinctrl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Defines macros and constants for Renesas RZ/A1 pin controller pin
* muxing functions.
diff --git a/include/dt-bindings/pinctrl/stm32f429-pinfunc.h b/include/dt-bindings/pinctrl/stm32f429-pinfunc.h
index 26f18798d949..9a5a028f0d00 100644
--- a/include/dt-bindings/pinctrl/stm32f429-pinfunc.h
+++ b/include/dt-bindings/pinctrl/stm32f429-pinfunc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_STM32F429_PINFUNC_H
#define _DT_BINDINGS_STM32F429_PINFUNC_H
diff --git a/include/dt-bindings/pinctrl/stm32f746-pinfunc.h b/include/dt-bindings/pinctrl/stm32f746-pinfunc.h
index 6348c6a830e9..4c28f8f41621 100644
--- a/include/dt-bindings/pinctrl/stm32f746-pinfunc.h
+++ b/include/dt-bindings/pinctrl/stm32f746-pinfunc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_STM32F746_PINFUNC_H
#define _DT_BINDINGS_STM32F746_PINFUNC_H
diff --git a/include/dt-bindings/pinctrl/stm32h7-pinfunc.h b/include/dt-bindings/pinctrl/stm32h7-pinfunc.h
index cb673b5e8e1e..06d99a8ddbc6 100644
--- a/include/dt-bindings/pinctrl/stm32h7-pinfunc.h
+++ b/include/dt-bindings/pinctrl/stm32h7-pinfunc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_STM32H7_PINFUNC_H
#define _DT_BINDINGS_STM32H7_PINFUNC_H
diff --git a/include/dt-bindings/power/mt8173-power.h b/include/dt-bindings/power/mt8173-power.h
index b34cee95aa89..15d531aa6e78 100644
--- a/include/dt-bindings/power/mt8173-power.h
+++ b/include/dt-bindings/power/mt8173-power.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_POWER_MT8183_POWER_H
#define _DT_BINDINGS_POWER_MT8183_POWER_H
diff --git a/include/dt-bindings/power/rk3288-power.h b/include/dt-bindings/power/rk3288-power.h
index b8b1045f3daa..f710b56ccd81 100644
--- a/include/dt-bindings/power/rk3288-power.h
+++ b/include/dt-bindings/power/rk3288-power.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_BINDINGS_POWER_RK3288_POWER_H__
#define __DT_BINDINGS_POWER_RK3288_POWER_H__
diff --git a/include/dt-bindings/power/rk3328-power.h b/include/dt-bindings/power/rk3328-power.h
index 10c3c3715334..02e3d7fc1cce 100644
--- a/include/dt-bindings/power/rk3328-power.h
+++ b/include/dt-bindings/power/rk3328-power.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_BINDINGS_POWER_RK3328_POWER_H__
#define __DT_BINDINGS_POWER_RK3328_POWER_H__
diff --git a/include/dt-bindings/power/rk3368-power.h b/include/dt-bindings/power/rk3368-power.h
index 93633d57ed84..5e602dbd64ec 100644
--- a/include/dt-bindings/power/rk3368-power.h
+++ b/include/dt-bindings/power/rk3368-power.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_BINDINGS_POWER_RK3368_POWER_H__
#define __DT_BINDINGS_POWER_RK3368_POWER_H__
diff --git a/include/dt-bindings/power/rk3399-power.h b/include/dt-bindings/power/rk3399-power.h
index 168b3bfbd6f5..aedd8b180fe4 100644
--- a/include/dt-bindings/power/rk3399-power.h
+++ b/include/dt-bindings/power/rk3399-power.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_BINDINGS_POWER_RK3399_POWER_H__
#define __DT_BINDINGS_POWER_RK3399_POWER_H__
diff --git a/include/dt-bindings/pwm/pwm.h b/include/dt-bindings/pwm/pwm.h
index 96f49e82253e..ab9a077e3c7d 100644
--- a/include/dt-bindings/pwm/pwm.h
+++ b/include/dt-bindings/pwm/pwm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for most PWM bindings.
*
diff --git a/include/dt-bindings/reset/cortina,gemini-reset.h b/include/dt-bindings/reset/cortina,gemini-reset.h
index 0b886aee65e3..f48aff23847a 100644
--- a/include/dt-bindings/reset/cortina,gemini-reset.h
+++ b/include/dt-bindings/reset/cortina,gemini-reset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_RESET_CORTINA_GEMINI_H
#define _DT_BINDINGS_RESET_CORTINA_GEMINI_H
diff --git a/include/dt-bindings/reset/hisi,hi6220-resets.h b/include/dt-bindings/reset/hisi,hi6220-resets.h
index 322ec5335b65..e7c362a81a97 100644
--- a/include/dt-bindings/reset/hisi,hi6220-resets.h
+++ b/include/dt-bindings/reset/hisi,hi6220-resets.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/**
* This header provides index for the reset controller
* based on hi6220 SoC.
diff --git a/include/dt-bindings/reset/pistachio-resets.h b/include/dt-bindings/reset/pistachio-resets.h
index 60a189b1faef..5bb4dd0d6377 100644
--- a/include/dt-bindings/reset/pistachio-resets.h
+++ b/include/dt-bindings/reset/pistachio-resets.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the reset controller
* present in the Pistachio SoC
diff --git a/include/dt-bindings/reset/snps,hsdk-reset.h b/include/dt-bindings/reset/snps,hsdk-reset.h
new file mode 100644
index 000000000000..e1a643e4bc91
--- /dev/null
+++ b/include/dt-bindings/reset/snps,hsdk-reset.h
@@ -0,0 +1,17 @@
+/**
+ * This header provides index for the HSDK reset controller.
+ */
+#ifndef _DT_BINDINGS_RESET_CONTROLLER_SNPS_HSDK
+#define _DT_BINDINGS_RESET_CONTROLLER_SNPS_HSDK
+
+#define HSDK_APB_RESET 0
+#define HSDK_AXI_RESET 1
+#define HSDK_ETH_RESET 2
+#define HSDK_USB_RESET 3
+#define HSDK_SDIO_RESET 4
+#define HSDK_HDMI_RESET 5
+#define HSDK_GFX_RESET 6
+#define HSDK_DMAC_RESET 7
+#define HSDK_EBI_RESET 8
+
+#endif /*_DT_BINDINGS_RESET_CONTROLLER_SNPS_HSDK*/
diff --git a/include/dt-bindings/reset/snps,hsdk-v1-reset.h b/include/dt-bindings/reset/snps,hsdk-v1-reset.h
deleted file mode 100644
index d898c89b7123..000000000000
--- a/include/dt-bindings/reset/snps,hsdk-v1-reset.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * This header provides index for the HSDK v1 reset controller.
- */
-#ifndef _DT_BINDINGS_RESET_CONTROLLER_HSDK_V1
-#define _DT_BINDINGS_RESET_CONTROLLER_HSDK_V1
-
-#define HSDK_V1_APB_RESET 0
-#define HSDK_V1_AXI_RESET 1
-#define HSDK_V1_ETH_RESET 2
-#define HSDK_V1_USB_RESET 3
-#define HSDK_V1_SDIO_RESET 4
-#define HSDK_V1_HDMI_RESET 5
-#define HSDK_V1_GFX_RESET 6
-#define HSDK_V1_DMAC_RESET 7
-#define HSDK_V1_EBI_RESET 8
-
-#endif /*_DT_BINDINGS_RESET_CONTROLLER_HSDK_V1*/
diff --git a/include/dt-bindings/reset/stih407-resets.h b/include/dt-bindings/reset/stih407-resets.h
index 4ab3a1c94958..f2a2c4f7f06a 100644
--- a/include/dt-bindings/reset/stih407-resets.h
+++ b/include/dt-bindings/reset/stih407-resets.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the reset controller
* based peripheral powerdown requests on the STMicroelectronics
diff --git a/include/dt-bindings/reset/stih415-resets.h b/include/dt-bindings/reset/stih415-resets.h
index c2329fe29cf6..96f7831a1db0 100644
--- a/include/dt-bindings/reset/stih415-resets.h
+++ b/include/dt-bindings/reset/stih415-resets.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the reset controller
* based peripheral powerdown requests on the STMicroelectronics
diff --git a/include/dt-bindings/reset/stih416-resets.h b/include/dt-bindings/reset/stih416-resets.h
index fcf9af1ac0b2..f682c906ed5a 100644
--- a/include/dt-bindings/reset/stih416-resets.h
+++ b/include/dt-bindings/reset/stih416-resets.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the reset controller
* based peripheral powerdown requests on the STMicroelectronics
diff --git a/include/dt-bindings/reset/tegra124-car.h b/include/dt-bindings/reset/tegra124-car.h
index 070e4f6e7486..97d2f3db82bf 100644
--- a/include/dt-bindings/reset/tegra124-car.h
+++ b/include/dt-bindings/reset/tegra124-car.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides Tegra124-specific constants for binding
* nvidia,tegra124-car.
diff --git a/include/dt-bindings/reset/tegra210-car.h b/include/dt-bindings/reset/tegra210-car.h
index 296ec6e3f8c0..9dc84ec76301 100644
--- a/include/dt-bindings/reset/tegra210-car.h
+++ b/include/dt-bindings/reset/tegra210-car.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides Tegra210-specific constants for binding
* nvidia,tegra210-car.
diff --git a/include/dt-bindings/soc/rockchip,boot-mode.h b/include/dt-bindings/soc/rockchip,boot-mode.h
index ae7c867e736a..4b0914c0989d 100644
--- a/include/dt-bindings/soc/rockchip,boot-mode.h
+++ b/include/dt-bindings/soc/rockchip,boot-mode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ROCKCHIP_BOOT_MODE_H
#define __ROCKCHIP_BOOT_MODE_H
diff --git a/include/dt-bindings/sound/apq8016-lpass.h b/include/dt-bindings/sound/apq8016-lpass.h
index 499076e980a3..3c3e16c0aadb 100644
--- a/include/dt-bindings/sound/apq8016-lpass.h
+++ b/include/dt-bindings/sound/apq8016-lpass.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_APQ8016_LPASS_H
#define __DT_APQ8016_LPASS_H
diff --git a/include/dt-bindings/sound/audio-jack-events.h b/include/dt-bindings/sound/audio-jack-events.h
index 378349f28069..1b29b295126a 100644
--- a/include/dt-bindings/sound/audio-jack-events.h
+++ b/include/dt-bindings/sound/audio-jack-events.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __AUDIO_JACK_EVENTS_H
#define __AUDIO_JACK_EVENTS_H
diff --git a/include/dt-bindings/sound/cs35l32.h b/include/dt-bindings/sound/cs35l32.h
index 0c6d6a3c15a2..7549d5019e8b 100644
--- a/include/dt-bindings/sound/cs35l32.h
+++ b/include/dt-bindings/sound/cs35l32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_CS35L32_H
#define __DT_CS35L32_H
diff --git a/include/dt-bindings/sound/fsl-imx-audmux.h b/include/dt-bindings/sound/fsl-imx-audmux.h
index 50b09e96f247..751fe1416f95 100644
--- a/include/dt-bindings/sound/fsl-imx-audmux.h
+++ b/include/dt-bindings/sound/fsl-imx-audmux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_FSL_IMX_AUDMUX_H
#define __DT_FSL_IMX_AUDMUX_H
diff --git a/include/dt-bindings/sound/samsung-i2s.h b/include/dt-bindings/sound/samsung-i2s.h
index 0c69818d530c..77545f14c379 100644
--- a/include/dt-bindings/sound/samsung-i2s.h
+++ b/include/dt-bindings/sound/samsung-i2s.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DT_BINDINGS_SAMSUNG_I2S_H
#define _DT_BINDINGS_SAMSUNG_I2S_H
diff --git a/include/dt-bindings/sound/tas2552.h b/include/dt-bindings/sound/tas2552.h
index a4e1a079980b..0daeb8385837 100644
--- a/include/dt-bindings/sound/tas2552.h
+++ b/include/dt-bindings/sound/tas2552.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_TAS2552_H
#define __DT_TAS2552_H
diff --git a/include/dt-bindings/sound/tlv320aic31xx-micbias.h b/include/dt-bindings/sound/tlv320aic31xx-micbias.h
index f5cb772ab9c8..c6895a18a455 100644
--- a/include/dt-bindings/sound/tlv320aic31xx-micbias.h
+++ b/include/dt-bindings/sound/tlv320aic31xx-micbias.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_TLV320AIC31XX_MICBIAS_H
#define __DT_TLV320AIC31XX_MICBIAS_H
diff --git a/include/dt-bindings/thermal/lm90.h b/include/dt-bindings/thermal/lm90.h
index 8c2e3095f704..eed91a16c32f 100644
--- a/include/dt-bindings/thermal/lm90.h
+++ b/include/dt-bindings/thermal/lm90.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for the LM90 thermal bindings.
*/
diff --git a/include/dt-bindings/thermal/tegra124-soctherm.h b/include/dt-bindings/thermal/tegra124-soctherm.h
index 2a99f1d52bb5..c15e8b709a0d 100644
--- a/include/dt-bindings/thermal/tegra124-soctherm.h
+++ b/include/dt-bindings/thermal/tegra124-soctherm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header provides constants for binding nvidia,tegra124-soctherm.
*/
diff --git a/include/keys/ceph-type.h b/include/keys/ceph-type.h
index f69c4ac197a0..aa6d3e050cc7 100644
--- a/include/keys/ceph-type.h
+++ b/include/keys/ceph-type.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _KEYS_CEPH_TYPE_H
#define _KEYS_CEPH_TYPE_H
diff --git a/include/linux/8250_pci.h b/include/linux/8250_pci.h
index b24ff086a662..9c777d2c98f5 100644
--- a/include/linux/8250_pci.h
+++ b/include/linux/8250_pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for PCI support.
*/
diff --git a/include/linux/a.out.h b/include/linux/a.out.h
index ee884168989f..600cf45645c6 100644
--- a/include/linux/a.out.h
+++ b/include/linux/a.out.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __A_OUT_GNU_H__
#define __A_OUT_GNU_H__
diff --git a/include/linux/acct.h b/include/linux/acct.h
index dccc2d4fe7de..18e1955f81f5 100644
--- a/include/linux/acct.h
+++ b/include/linux/acct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* BSD Process Accounting for Linux - Definitions
*
diff --git a/include/linux/acpi_pmtmr.h b/include/linux/acpi_pmtmr.h
index 1d0ef1ae8036..50d88bf1498d 100644
--- a/include/linux/acpi_pmtmr.h
+++ b/include/linux/acpi_pmtmr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ACPI_PMTMR_H_
#define _ACPI_PMTMR_H_
diff --git a/include/linux/adb.h b/include/linux/adb.h
index cde41300c7ad..f6306fc86015 100644
--- a/include/linux/adb.h
+++ b/include/linux/adb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for ADB (Apple Desktop Bus) support.
*/
diff --git a/include/linux/adfs_fs.h b/include/linux/adfs_fs.h
index 0d991071a9d4..4836e382ad52 100644
--- a/include/linux/adfs_fs.h
+++ b/include/linux/adfs_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ADFS_FS_H
#define _ADFS_FS_H
diff --git a/include/linux/aer.h b/include/linux/aer.h
index 43799bd17a02..8f87bbeceef4 100644
--- a/include/linux/aer.h
+++ b/include/linux/aer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2006 Intel Corp.
* Tom Long Nguyen (tom.l.nguyen@intel.com)
diff --git a/include/linux/ahci-remap.h b/include/linux/ahci-remap.h
index 62be3a40239d..230c871ba084 100644
--- a/include/linux/ahci-remap.h
+++ b/include/linux/ahci-remap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_AHCI_REMAP_H
#define _LINUX_AHCI_REMAP_H
diff --git a/include/linux/aio.h b/include/linux/aio.h
index fdd0a343f455..9d8aabecfe2d 100644
--- a/include/linux/aio.h
+++ b/include/linux/aio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX__AIO_H
#define __LINUX__AIO_H
diff --git a/include/linux/alarmtimer.h b/include/linux/alarmtimer.h
index c70aac13244a..0760ca1cb009 100644
--- a/include/linux/alarmtimer.h
+++ b/include/linux/alarmtimer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ALARMTIMER_H
#define _LINUX_ALARMTIMER_H
diff --git a/include/linux/altera_jtaguart.h b/include/linux/altera_jtaguart.h
index 953b178a1650..527a142cd530 100644
--- a/include/linux/altera_jtaguart.h
+++ b/include/linux/altera_jtaguart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* altera_jtaguart.h -- Altera JTAG UART driver defines.
*/
diff --git a/include/linux/altera_uart.h b/include/linux/altera_uart.h
index c022c82db7ca..3eb73b8c49c8 100644
--- a/include/linux/altera_uart.h
+++ b/include/linux/altera_uart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* altera_uart.h -- Altera UART driver defines.
*/
diff --git a/include/linux/amba/mmci.h b/include/linux/amba/mmci.h
index 8c98113069ce..da8357ba11bc 100644
--- a/include/linux/amba/mmci.h
+++ b/include/linux/amba/mmci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/amba/mmci.h
*/
diff --git a/include/linux/amifd.h b/include/linux/amifd.h
index 346993268b45..202a77dbe46d 100644
--- a/include/linux/amifd.h
+++ b/include/linux/amifd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _AMIFD_H
#define _AMIFD_H
diff --git a/include/linux/amifdreg.h b/include/linux/amifdreg.h
index 76188bf48d3b..9b514d05ec70 100644
--- a/include/linux/amifdreg.h
+++ b/include/linux/amifdreg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_AMIFDREG_H
#define _LINUX_AMIFDREG_H
diff --git a/include/linux/anon_inodes.h b/include/linux/anon_inodes.h
index 8013a45242fe..d0d7d96261ad 100644
--- a/include/linux/anon_inodes.h
+++ b/include/linux/anon_inodes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/anon_inodes.h
*
diff --git a/include/linux/apple_bl.h b/include/linux/apple_bl.h
index 0a95e730fcea..445af2e3cc21 100644
--- a/include/linux/apple_bl.h
+++ b/include/linux/apple_bl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* apple_bl exported symbols
*/
diff --git a/include/linux/arch_topology.h b/include/linux/arch_topology.h
index 716ce587247e..d4fcb0efb896 100644
--- a/include/linux/arch_topology.h
+++ b/include/linux/arch_topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/arch_topology.h - arch specific cpu topology information
*/
diff --git a/include/linux/ata_platform.h b/include/linux/ata_platform.h
index 619d9e78e644..ff2120215dec 100644
--- a/include/linux/ata_platform.h
+++ b/include/linux/ata_platform.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_ATA_PLATFORM_H
#define __LINUX_ATA_PLATFORM_H
diff --git a/include/linux/atalk.h b/include/linux/atalk.h
index 73fd8b7e9534..4d356e168692 100644
--- a/include/linux/atalk.h
+++ b/include/linux/atalk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_ATALK_H__
#define __LINUX_ATALK_H__
diff --git a/include/linux/atm.h b/include/linux/atm.h
index 30006c435951..4b50fd0a6eab 100644
--- a/include/linux/atm.h
+++ b/include/linux/atm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* atm.h - general ATM declarations */
#ifndef _LINUX_ATM_H
#define _LINUX_ATM_H
diff --git a/include/linux/atm_tcp.h b/include/linux/atm_tcp.h
index db6b65fc0aec..c8ecf6f68fb5 100644
--- a/include/linux/atm_tcp.h
+++ b/include/linux/atm_tcp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* atm_tcp.h - Driver-specific declarations of the ATMTCP driver (for use by
driver-specific utilities) */
diff --git a/include/linux/atmdev.h b/include/linux/atmdev.h
index 0ec9bdb1cc9f..0c27515d2cf6 100644
--- a/include/linux/atmdev.h
+++ b/include/linux/atmdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* atmdev.h - ATM device driver declarations and various related items */
#ifndef LINUX_ATMDEV_H
#define LINUX_ATMDEV_H
diff --git a/include/linux/atmel-mci.h b/include/linux/atmel-mci.h
index 42a9e1884842..1491af38cc6e 100644
--- a/include/linux/atmel-mci.h
+++ b/include/linux/atmel-mci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_ATMEL_MCI_H
#define __LINUX_ATMEL_MCI_H
diff --git a/include/linux/atmel-ssc.h b/include/linux/atmel-ssc.h
index fdb545101ede..6091d2abc1eb 100644
--- a/include/linux/atmel-ssc.h
+++ b/include/linux/atmel-ssc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __INCLUDE_ATMEL_SSC_H
#define __INCLUDE_ATMEL_SSC_H
diff --git a/include/linux/atomic.h b/include/linux/atomic.h
index 40d6bfec0e0d..cd18203d6ff3 100644
--- a/include/linux/atomic.h
+++ b/include/linux/atomic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Atomic operations usable in machine independent code */
#ifndef _LINUX_ATOMIC_H
#define _LINUX_ATOMIC_H
diff --git a/include/linux/audit.h b/include/linux/audit.h
index 2150bdccfbab..cb708eb8accc 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -314,11 +314,7 @@ void audit_core_dumps(long signr);
static inline void audit_seccomp(unsigned long syscall, long signr, int code)
{
- if (!audit_enabled)
- return;
-
- /* Force a record to be reported if a signal was delivered. */
- if (signr || unlikely(!audit_dummy_context()))
+ if (audit_enabled && unlikely(!audit_dummy_context()))
__audit_seccomp(syscall, signr, code);
}
@@ -351,7 +347,7 @@ extern int __audit_socketcall(int nargs, unsigned long *args);
extern int __audit_sockaddr(int len, void *addr);
extern void __audit_fd_pair(int fd1, int fd2);
extern void __audit_mq_open(int oflag, umode_t mode, struct mq_attr *attr);
-extern void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec *abs_timeout);
+extern void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec64 *abs_timeout);
extern void __audit_mq_notify(mqd_t mqdes, const struct sigevent *notification);
extern void __audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat);
extern int __audit_log_bprm_fcaps(struct linux_binprm *bprm,
@@ -412,7 +408,7 @@ static inline void audit_mq_open(int oflag, umode_t mode, struct mq_attr *attr)
if (unlikely(!audit_dummy_context()))
__audit_mq_open(oflag, mode, attr);
}
-static inline void audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec *abs_timeout)
+static inline void audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec64 *abs_timeout)
{
if (unlikely(!audit_dummy_context()))
__audit_mq_sendrecv(mqdes, msg_len, msg_prio, abs_timeout);
@@ -549,7 +545,7 @@ static inline void audit_mq_open(int oflag, umode_t mode, struct mq_attr *attr)
{ }
static inline void audit_mq_sendrecv(mqd_t mqdes, size_t msg_len,
unsigned int msg_prio,
- const struct timespec *abs_timeout)
+ const struct timespec64 *abs_timeout)
{ }
static inline void audit_mq_notify(mqd_t mqdes,
const struct sigevent *notification)
diff --git a/include/linux/auxvec.h b/include/linux/auxvec.h
index 3e0fbe441763..f68d0ec2d740 100644
--- a/include/linux/auxvec.h
+++ b/include/linux/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_AUXVEC_H
#define _LINUX_AUXVEC_H
diff --git a/include/linux/average.h b/include/linux/average.h
index 7ddaf340d2ac..1b6f5560c264 100644
--- a/include/linux/average.h
+++ b/include/linux/average.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_AVERAGE_H
#define _LINUX_AVERAGE_H
diff --git a/include/linux/backing-dev-defs.h b/include/linux/backing-dev-defs.h
index 866c433e7d32..fff4cfa0c21d 100644
--- a/include/linux/backing-dev-defs.h
+++ b/include/linux/backing-dev-defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_BACKING_DEV_DEFS_H
#define __LINUX_BACKING_DEV_DEFS_H
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h
index 854e1bdd0b2a..16621579a3db 100644
--- a/include/linux/backing-dev.h
+++ b/include/linux/backing-dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/backing-dev.h
*
diff --git a/include/linux/backlight.h b/include/linux/backlight.h
index 5f2fd61ef4fb..af7003548593 100644
--- a/include/linux/backlight.h
+++ b/include/linux/backlight.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Backlight Lowlevel Control Abstraction
*
diff --git a/include/linux/badblocks.h b/include/linux/badblocks.h
index c3bdf8c59480..2426276b9bd3 100644
--- a/include/linux/badblocks.h
+++ b/include/linux/badblocks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BADBLOCKS_H
#define _LINUX_BADBLOCKS_H
diff --git a/include/linux/balloon_compaction.h b/include/linux/balloon_compaction.h
index 79542b2698ec..fbbe6da40fed 100644
--- a/include/linux/balloon_compaction.h
+++ b/include/linux/balloon_compaction.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/balloon_compaction.h
*
diff --git a/include/linux/bcd.h b/include/linux/bcd.h
index 18fff11fb3ea..118bea36d7d4 100644
--- a/include/linux/bcd.h
+++ b/include/linux/bcd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCD_H
#define _BCD_H
diff --git a/include/linux/bcm47xx_wdt.h b/include/linux/bcm47xx_wdt.h
index 8d9d07ec22a5..fc9dcdb4b979 100644
--- a/include/linux/bcm47xx_wdt.h
+++ b/include/linux/bcm47xx_wdt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCM47XX_WDT_H_
#define LINUX_BCM47XX_WDT_H_
diff --git a/include/linux/bcm963xx_nvram.h b/include/linux/bcm963xx_nvram.h
index 290c231b8cf1..c8c7f01159fe 100644
--- a/include/linux/bcm963xx_nvram.h
+++ b/include/linux/bcm963xx_nvram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_BCM963XX_NVRAM_H__
#define __LINUX_BCM963XX_NVRAM_H__
diff --git a/include/linux/bcm963xx_tag.h b/include/linux/bcm963xx_tag.h
index 161c7b37a77b..b87945cb6946 100644
--- a/include/linux/bcm963xx_tag.h
+++ b/include/linux/bcm963xx_tag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_BCM963XX_TAG_H__
#define __LINUX_BCM963XX_TAG_H__
diff --git a/include/linux/bcma/bcma.h b/include/linux/bcma/bcma.h
index 8eeedb2db924..ef61f3607e99 100644
--- a/include/linux/bcma/bcma.h
+++ b/include/linux/bcma/bcma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCMA_H_
#define LINUX_BCMA_H_
diff --git a/include/linux/bcma/bcma_driver_arm_c9.h b/include/linux/bcma/bcma_driver_arm_c9.h
index 93bd73d670d5..688cf590c99b 100644
--- a/include/linux/bcma/bcma_driver_arm_c9.h
+++ b/include/linux/bcma/bcma_driver_arm_c9.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCMA_DRIVER_ARM_C9_H_
#define LINUX_BCMA_DRIVER_ARM_C9_H_
diff --git a/include/linux/bcma/bcma_driver_chipcommon.h b/include/linux/bcma/bcma_driver_chipcommon.h
index 2f1c690a3e66..d35b9206096d 100644
--- a/include/linux/bcma/bcma_driver_chipcommon.h
+++ b/include/linux/bcma/bcma_driver_chipcommon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCMA_DRIVER_CC_H_
#define LINUX_BCMA_DRIVER_CC_H_
diff --git a/include/linux/bcma/bcma_driver_gmac_cmn.h b/include/linux/bcma/bcma_driver_gmac_cmn.h
index 4354d4ea6713..420e222d7a22 100644
--- a/include/linux/bcma/bcma_driver_gmac_cmn.h
+++ b/include/linux/bcma/bcma_driver_gmac_cmn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCMA_DRIVER_GMAC_CMN_H_
#define LINUX_BCMA_DRIVER_GMAC_CMN_H_
diff --git a/include/linux/bcma/bcma_driver_mips.h b/include/linux/bcma/bcma_driver_mips.h
index 8eea7f9e33b4..798013fab54f 100644
--- a/include/linux/bcma/bcma_driver_mips.h
+++ b/include/linux/bcma/bcma_driver_mips.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCMA_DRIVER_MIPS_H_
#define LINUX_BCMA_DRIVER_MIPS_H_
diff --git a/include/linux/bcma/bcma_driver_pci.h b/include/linux/bcma/bcma_driver_pci.h
index bca6a5e4ca3d..68da8dba5162 100644
--- a/include/linux/bcma/bcma_driver_pci.h
+++ b/include/linux/bcma/bcma_driver_pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCMA_DRIVER_PCI_H_
#define LINUX_BCMA_DRIVER_PCI_H_
diff --git a/include/linux/bcma/bcma_driver_pcie2.h b/include/linux/bcma/bcma_driver_pcie2.h
index 31e6d17ab798..91ce515e3a77 100644
--- a/include/linux/bcma/bcma_driver_pcie2.h
+++ b/include/linux/bcma/bcma_driver_pcie2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCMA_DRIVER_PCIE2_H_
#define LINUX_BCMA_DRIVER_PCIE2_H_
diff --git a/include/linux/bcma/bcma_regs.h b/include/linux/bcma/bcma_regs.h
index 9986f8288d01..944105cbd671 100644
--- a/include/linux/bcma/bcma_regs.h
+++ b/include/linux/bcma/bcma_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCMA_REGS_H_
#define LINUX_BCMA_REGS_H_
diff --git a/include/linux/bcma/bcma_soc.h b/include/linux/bcma/bcma_soc.h
index 1b5fc0c3b1b5..7cca5f859a90 100644
--- a/include/linux/bcma/bcma_soc.h
+++ b/include/linux/bcma/bcma_soc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_BCMA_SOC_H_
#define LINUX_BCMA_SOC_H_
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
index fb44d6180ca0..b0abe21d6cc9 100644
--- a/include/linux/binfmts.h
+++ b/include/linux/binfmts.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BINFMTS_H
#define _LINUX_BINFMTS_H
@@ -131,7 +132,7 @@ extern int setup_arg_pages(struct linux_binprm * bprm,
int executable_stack);
extern int transfer_args_to_stack(struct linux_binprm *bprm,
unsigned long *sp_location);
-extern int bprm_change_interp(char *interp, struct linux_binprm *bprm);
+extern int bprm_change_interp(const char *interp, struct linux_binprm *bprm);
extern int copy_strings_kernel(int argc, const char *const *argv,
struct linux_binprm *bprm);
extern int prepare_bprm_creds(struct linux_binprm *bprm);
diff --git a/include/linux/bit_spinlock.h b/include/linux/bit_spinlock.h
index 3b5bafce4337..bbc4730a6505 100644
--- a/include/linux/bit_spinlock.h
+++ b/include/linux/bit_spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_BIT_SPINLOCK_H
#define __LINUX_BIT_SPINLOCK_H
diff --git a/include/linux/bitfield.h b/include/linux/bitfield.h
index 8b9d6fff002d..f2deb71958b2 100644
--- a/include/linux/bitfield.h
+++ b/include/linux/bitfield.h
@@ -92,7 +92,7 @@
/**
* FIELD_GET() - extract a bitfield element
* @_mask: shifted mask defining the field's length and position
- * @_reg: 32bit value of entire bitfield
+ * @_reg: value of entire bitfield
*
* FIELD_GET() extracts the field specified by @_mask from the
* bitfield passed in as @_reg by masking and shifting it down.
diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h
index 700cf5f67118..19748a5b0e77 100644
--- a/include/linux/bitmap.h
+++ b/include/linux/bitmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_BITMAP_H
#define __LINUX_BITMAP_H
diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index 8fbe259b197c..d03c5dd6185d 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BITOPS_H
#define _LINUX_BITOPS_H
#include <asm/types.h>
diff --git a/include/linux/bitrev.h b/include/linux/bitrev.h
index b97be27e5a85..50fb0dee23e8 100644
--- a/include/linux/bitrev.h
+++ b/include/linux/bitrev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BITREV_H
#define _LINUX_BITREV_H
diff --git a/include/linux/blk-cgroup.h b/include/linux/blk-cgroup.h
index 9d92153dd856..8bbc3716507a 100644
--- a/include/linux/blk-cgroup.h
+++ b/include/linux/blk-cgroup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BLK_CGROUP_H
#define _BLK_CGROUP_H
/*
diff --git a/include/linux/blk-mq-pci.h b/include/linux/blk-mq-pci.h
index 6ab595259112..6338551e0fb9 100644
--- a/include/linux/blk-mq-pci.h
+++ b/include/linux/blk-mq-pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BLK_MQ_PCI_H
#define _LINUX_BLK_MQ_PCI_H
diff --git a/include/linux/blk-mq-virtio.h b/include/linux/blk-mq-virtio.h
index b1ef6e14744f..69b4da262c45 100644
--- a/include/linux/blk-mq-virtio.h
+++ b/include/linux/blk-mq-virtio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BLK_MQ_VIRTIO_H
#define _LINUX_BLK_MQ_VIRTIO_H
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index 50c6485cb04f..994cbb0f7ffc 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BLK_MQ_H
#define BLK_MQ_H
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index a2d2aa709cef..96ac3815542c 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Block data types and constants. Directly include this file only to
* break include dependency loop.
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 460294bb0fa5..8da66379f7ea 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BLKDEV_H
#define _LINUX_BLKDEV_H
@@ -551,6 +552,7 @@ struct request_queue {
int node;
#ifdef CONFIG_BLK_DEV_IO_TRACE
struct blk_trace *blk_trace;
+ struct mutex blk_trace_mutex;
#endif
/*
* for flush operations
diff --git a/include/linux/blkpg.h b/include/linux/blkpg.h
index bef124fde61e..1c91753c3c28 100644
--- a/include/linux/blkpg.h
+++ b/include/linux/blkpg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BLKPG_H
#define _LINUX_BLKPG_H
diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h
index 67b4d4dfc19c..8804753805ac 100644
--- a/include/linux/blktrace_api.h
+++ b/include/linux/blktrace_api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BLKTRACE_H
#define BLKTRACE_H
diff --git a/include/linux/blockgroup_lock.h b/include/linux/blockgroup_lock.h
index 225bdb7daec7..511ab123a822 100644
--- a/include/linux/blockgroup_lock.h
+++ b/include/linux/blockgroup_lock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BLOCKGROUP_LOCK_H
#define _LINUX_BLOCKGROUP_LOCK_H
/*
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
index e223d91b6439..fdf40ca04b3c 100644
--- a/include/linux/bootmem.h
+++ b/include/linux/bootmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Discontiguous memory support, Kanoj Sarcar, SGI, Nov 1999
*/
diff --git a/include/linux/bottom_half.h b/include/linux/bottom_half.h
index 8fdcb783197d..a19519f4241d 100644
--- a/include/linux/bottom_half.h
+++ b/include/linux/bottom_half.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BH_H
#define _LINUX_BH_H
diff --git a/include/linux/bpf-cgroup.h b/include/linux/bpf-cgroup.h
index d41d40ac3efd..44dfae288fcf 100644
--- a/include/linux/bpf-cgroup.h
+++ b/include/linux/bpf-cgroup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BPF_CGROUP_H
#define _BPF_CGROUP_H
diff --git a/include/linux/bpf.h b/include/linux/bpf.h
index 8390859e79e7..f1af7d63d678 100644
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -368,6 +368,11 @@ static inline void __bpf_prog_uncharge(struct user_struct *user, u32 pages)
{
}
+static inline int bpf_obj_get_user(const char __user *pathname)
+{
+ return -EOPNOTSUPP;
+}
+
static inline struct net_device *__dev_map_lookup_elem(struct bpf_map *map,
u32 key)
{
diff --git a/include/linux/bpf_trace.h b/include/linux/bpf_trace.h
index b22efbdd2eb4..e6fe98ae3794 100644
--- a/include/linux/bpf_trace.h
+++ b/include/linux/bpf_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_BPF_TRACE_H__
#define __LINUX_BPF_TRACE_H__
diff --git a/include/linux/bpf_types.h b/include/linux/bpf_types.h
index 6f1a567667b8..e1149327a0c0 100644
--- a/include/linux/bpf_types.h
+++ b/include/linux/bpf_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* internal file - do not include directly */
#ifdef CONFIG_NET
diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h
index abcda9b458ab..4f087f86a741 100644
--- a/include/linux/brcmphy.h
+++ b/include/linux/brcmphy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BRCMPHY_H
#define _LINUX_BRCMPHY_H
diff --git a/include/linux/bsearch.h b/include/linux/bsearch.h
index 90b1aa867224..62b1eb348858 100644
--- a/include/linux/bsearch.h
+++ b/include/linux/bsearch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BSEARCH_H
#define _LINUX_BSEARCH_H
diff --git a/include/linux/bsg.h b/include/linux/bsg.h
index 7173f6e9d2dd..2a202e41a3af 100644
--- a/include/linux/bsg.h
+++ b/include/linux/bsg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BSG_H
#define BSG_H
diff --git a/include/linux/btree-128.h b/include/linux/btree-128.h
index 0b3414c4c928..22c09f5c3c39 100644
--- a/include/linux/btree-128.h
+++ b/include/linux/btree-128.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
extern struct btree_geo btree_geo128;
struct btree_head128 { struct btree_head h; };
diff --git a/include/linux/btree-type.h b/include/linux/btree-type.h
index 9a1147ef8563..fb34a52c788b 100644
--- a/include/linux/btree-type.h
+++ b/include/linux/btree-type.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define __BTREE_TP(pfx, type, sfx) pfx ## type ## sfx
#define _BTREE_TP(pfx, type, sfx) __BTREE_TP(pfx, type, sfx)
#define BTREE_TP(pfx) _BTREE_TP(pfx, BTREE_TYPE_SUFFIX,)
diff --git a/include/linux/btree.h b/include/linux/btree.h
index 65b5bb058324..68f858c831b1 100644
--- a/include/linux/btree.h
+++ b/include/linux/btree.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef BTREE_H
#define BTREE_H
diff --git a/include/linux/btrfs.h b/include/linux/btrfs.h
index 22d799147db2..9a37a45ec801 100644
--- a/include/linux/btrfs.h
+++ b/include/linux/btrfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BTRFS_H
#define _LINUX_BTRFS_H
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
index c8dae555eccf..afa37f807f12 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/buffer_head.h
*
@@ -232,6 +233,7 @@ int generic_write_end(struct file *, struct address_space *,
loff_t, unsigned, unsigned,
struct page *, void *);
void page_zero_new_buffers(struct page *page, unsigned from, unsigned to);
+void clean_page_buffers(struct page *page);
int cont_write_begin(struct file *, struct address_space *, loff_t,
unsigned, unsigned, struct page **, void **,
get_block_t *, loff_t *);
diff --git a/include/linux/bug.h b/include/linux/bug.h
index 5d5554c874fd..da4231c905c8 100644
--- a/include/linux/bug.h
+++ b/include/linux/bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BUG_H
#define _LINUX_BUG_H
diff --git a/include/linux/build_bug.h b/include/linux/build_bug.h
index b7d22d60008a..3efed0d742a0 100644
--- a/include/linux/build_bug.h
+++ b/include/linux/build_bug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BUILD_BUG_H
#define _LINUX_BUILD_BUG_H
diff --git a/include/linux/byteorder/big_endian.h b/include/linux/byteorder/big_endian.h
index ffd215988392..d64a524d3cfb 100644
--- a/include/linux/byteorder/big_endian.h
+++ b/include/linux/byteorder/big_endian.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BYTEORDER_BIG_ENDIAN_H
#define _LINUX_BYTEORDER_BIG_ENDIAN_H
diff --git a/include/linux/byteorder/generic.h b/include/linux/byteorder/generic.h
index 89f67c1c3160..133b76d0d2c0 100644
--- a/include/linux/byteorder/generic.h
+++ b/include/linux/byteorder/generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BYTEORDER_GENERIC_H
#define _LINUX_BYTEORDER_GENERIC_H
diff --git a/include/linux/byteorder/little_endian.h b/include/linux/byteorder/little_endian.h
index ba910bb9aad0..1ec650ff76cb 100644
--- a/include/linux/byteorder/little_endian.h
+++ b/include/linux/byteorder/little_endian.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_BYTEORDER_LITTLE_ENDIAN_H
#define _LINUX_BYTEORDER_LITTLE_ENDIAN_H
diff --git a/include/linux/cache.h b/include/linux/cache.h
index 1be04f8c563a..750621e41d1c 100644
--- a/include/linux/cache.h
+++ b/include/linux/cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_CACHE_H
#define __LINUX_CACHE_H
diff --git a/include/linux/cacheinfo.h b/include/linux/cacheinfo.h
index 6a524bf6a06d..3d9805297cda 100644
--- a/include/linux/cacheinfo.h
+++ b/include/linux/cacheinfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CACHEINFO_H
#define _LINUX_CACHEINFO_H
diff --git a/include/linux/can/core.h b/include/linux/can/core.h
index c9a17bb1221c..6099bc18bd0c 100644
--- a/include/linux/can/core.h
+++ b/include/linux/can/core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/can/core.h
*
diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h
index 141b05aade81..61f1cf2d9f44 100644
--- a/include/linux/can/dev.h
+++ b/include/linux/can/dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/can/dev.h
*
diff --git a/include/linux/can/platform/cc770.h b/include/linux/can/platform/cc770.h
index 78b2d44f04cf..9587d6882906 100644
--- a/include/linux/can/platform/cc770.h
+++ b/include/linux/can/platform/cc770.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CAN_PLATFORM_CC770_H
#define _CAN_PLATFORM_CC770_H
diff --git a/include/linux/can/platform/mcp251x.h b/include/linux/can/platform/mcp251x.h
index d44fcae274ff..9e5ac27fb6c1 100644
--- a/include/linux/can/platform/mcp251x.h
+++ b/include/linux/can/platform/mcp251x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CAN_PLATFORM_MCP251X_H
#define _CAN_PLATFORM_MCP251X_H
diff --git a/include/linux/can/platform/rcar_can.h b/include/linux/can/platform/rcar_can.h
index 0f4a2f3df504..a43dcd0cf79e 100644
--- a/include/linux/can/platform/rcar_can.h
+++ b/include/linux/can/platform/rcar_can.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CAN_PLATFORM_RCAR_CAN_H_
#define _CAN_PLATFORM_RCAR_CAN_H_
diff --git a/include/linux/can/platform/sja1000.h b/include/linux/can/platform/sja1000.h
index 93570b61ec6c..5755ae5a4712 100644
--- a/include/linux/can/platform/sja1000.h
+++ b/include/linux/can/platform/sja1000.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CAN_PLATFORM_SJA1000_H
#define _CAN_PLATFORM_SJA1000_H
diff --git a/include/linux/can/skb.h b/include/linux/can/skb.h
index 51bb6532785c..b3379a97245c 100644
--- a/include/linux/can/skb.h
+++ b/include/linux/can/skb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/can/skb.h
*
diff --git a/include/linux/capability.h b/include/linux/capability.h
index b52e278e4744..f640dcbc880c 100644
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is <linux/capability.h>
*
diff --git a/include/linux/cciss_ioctl.h b/include/linux/cciss_ioctl.h
index 84b6e2d0f44d..1d5229200a71 100644
--- a/include/linux/cciss_ioctl.h
+++ b/include/linux/cciss_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef CCISS_IOCTLH
#define CCISS_IOCTLH
diff --git a/include/linux/cdev.h b/include/linux/cdev.h
index cb28eb21e3ca..0e8cd6293deb 100644
--- a/include/linux/cdev.h
+++ b/include/linux/cdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CDEV_H
#define _LINUX_CDEV_H
diff --git a/include/linux/cdrom.h b/include/linux/cdrom.h
index 6e8f209a6dff..e75dfd1f1dec 100644
--- a/include/linux/cdrom.h
+++ b/include/linux/cdrom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* -- <linux/cdrom.h>
* General header file for linux CD-ROM drivers
diff --git a/include/linux/ceph/auth.h b/include/linux/ceph/auth.h
index a6747789fe5c..e931da8424a4 100644
--- a/include/linux/ceph/auth.h
+++ b/include/linux/ceph/auth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_AUTH_H
#define _FS_CEPH_AUTH_H
diff --git a/include/linux/ceph/buffer.h b/include/linux/ceph/buffer.h
index 07ca15e76100..5e58bb29b1a3 100644
--- a/include/linux/ceph/buffer.h
+++ b/include/linux/ceph/buffer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __FS_CEPH_BUFFER_H
#define __FS_CEPH_BUFFER_H
diff --git a/include/linux/ceph/ceph_debug.h b/include/linux/ceph/ceph_debug.h
index 51c5bd64bd00..d5a5da838caf 100644
--- a/include/linux/ceph/ceph_debug.h
+++ b/include/linux/ceph/ceph_debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_DEBUG_H
#define _FS_CEPH_DEBUG_H
diff --git a/include/linux/ceph/ceph_features.h b/include/linux/ceph/ceph_features.h
index 040dd105c3e7..59042d5ac520 100644
--- a/include/linux/ceph/ceph_features.h
+++ b/include/linux/ceph/ceph_features.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CEPH_FEATURES
#define __CEPH_FEATURES
diff --git a/include/linux/ceph/ceph_frag.h b/include/linux/ceph/ceph_frag.h
index 146507df8650..97bab0adc58a 100644
--- a/include/linux/ceph/ceph_frag.h
+++ b/include/linux/ceph/ceph_frag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef FS_CEPH_FRAG_H
#define FS_CEPH_FRAG_H
diff --git a/include/linux/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h
index b422170b791a..88dd51381aaf 100644
--- a/include/linux/ceph/ceph_fs.h
+++ b/include/linux/ceph/ceph_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ceph_fs.h - Ceph constants and data types to share between kernel and
* user space.
diff --git a/include/linux/ceph/ceph_hash.h b/include/linux/ceph/ceph_hash.h
index d099c3f90236..fda474c7a5d6 100644
--- a/include/linux/ceph/ceph_hash.h
+++ b/include/linux/ceph/ceph_hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef FS_CEPH_HASH_H
#define FS_CEPH_HASH_H
diff --git a/include/linux/ceph/cls_lock_client.h b/include/linux/ceph/cls_lock_client.h
index 0594d3bba774..bea6c77d2093 100644
--- a/include/linux/ceph/cls_lock_client.h
+++ b/include/linux/ceph/cls_lock_client.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CEPH_CLS_LOCK_CLIENT_H
#define _LINUX_CEPH_CLS_LOCK_CLIENT_H
diff --git a/include/linux/ceph/debugfs.h b/include/linux/ceph/debugfs.h
index 29cf897cc5cd..fa5f9b7f5dbb 100644
--- a/include/linux/ceph/debugfs.h
+++ b/include/linux/ceph/debugfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_DEBUGFS_H
#define _FS_CEPH_DEBUGFS_H
diff --git a/include/linux/ceph/decode.h b/include/linux/ceph/decode.h
index 14af9b70d301..d143ac8879c6 100644
--- a/include/linux/ceph/decode.h
+++ b/include/linux/ceph/decode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CEPH_DECODE_H
#define __CEPH_DECODE_H
diff --git a/include/linux/ceph/libceph.h b/include/linux/ceph/libceph.h
index 4c846aabd9f6..c2ec44cf5098 100644
--- a/include/linux/ceph/libceph.h
+++ b/include/linux/ceph/libceph.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_LIBCEPH_H
#define _FS_CEPH_LIBCEPH_H
diff --git a/include/linux/ceph/mdsmap.h b/include/linux/ceph/mdsmap.h
index d5f783f3226a..0067d767c9ae 100644
--- a/include/linux/ceph/mdsmap.h
+++ b/include/linux/ceph/mdsmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_MDSMAP_H
#define _FS_CEPH_MDSMAP_H
diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h
index fbd94d9fa5dd..ead9d85f1c11 100644
--- a/include/linux/ceph/messenger.h
+++ b/include/linux/ceph/messenger.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __FS_CEPH_MESSENGER_H
#define __FS_CEPH_MESSENGER_H
diff --git a/include/linux/ceph/mon_client.h b/include/linux/ceph/mon_client.h
index 0fa990bf867a..3a4688af7455 100644
--- a/include/linux/ceph/mon_client.h
+++ b/include/linux/ceph/mon_client.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_MON_CLIENT_H
#define _FS_CEPH_MON_CLIENT_H
diff --git a/include/linux/ceph/msgpool.h b/include/linux/ceph/msgpool.h
index ddd0d48d0384..76c98a512758 100644
--- a/include/linux/ceph/msgpool.h
+++ b/include/linux/ceph/msgpool.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_MSGPOOL
#define _FS_CEPH_MSGPOOL
diff --git a/include/linux/ceph/msgr.h b/include/linux/ceph/msgr.h
index 0fe2656ac415..73ae2a926548 100644
--- a/include/linux/ceph/msgr.h
+++ b/include/linux/ceph/msgr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef CEPH_MSGR_H
#define CEPH_MSGR_H
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h
index adf670ecaf94..52fb37d1c2a5 100644
--- a/include/linux/ceph/osd_client.h
+++ b/include/linux/ceph/osd_client.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_OSD_CLIENT_H
#define _FS_CEPH_OSD_CLIENT_H
diff --git a/include/linux/ceph/osdmap.h b/include/linux/ceph/osdmap.h
index af3444a5bfdd..d41fad99c0fa 100644
--- a/include/linux/ceph/osdmap.h
+++ b/include/linux/ceph/osdmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_OSDMAP_H
#define _FS_CEPH_OSDMAP_H
diff --git a/include/linux/ceph/pagelist.h b/include/linux/ceph/pagelist.h
index 75a7db21457d..7edcded07641 100644
--- a/include/linux/ceph/pagelist.h
+++ b/include/linux/ceph/pagelist.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __FS_CEPH_PAGELIST_H
#define __FS_CEPH_PAGELIST_H
diff --git a/include/linux/ceph/rados.h b/include/linux/ceph/rados.h
index 01408841c9c4..f1988387c5ad 100644
--- a/include/linux/ceph/rados.h
+++ b/include/linux/ceph/rados.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef CEPH_RADOS_H
#define CEPH_RADOS_H
diff --git a/include/linux/ceph/string_table.h b/include/linux/ceph/string_table.h
index 1b02c96daf75..a4a9962d1e14 100644
--- a/include/linux/ceph/string_table.h
+++ b/include/linux/ceph/string_table.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_STRING_TABLE_H
#define _FS_CEPH_STRING_TABLE_H
diff --git a/include/linux/ceph/types.h b/include/linux/ceph/types.h
index d3ff1cf2d27e..27cd973d3881 100644
--- a/include/linux/ceph/types.h
+++ b/include/linux/ceph/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_TYPES_H
#define _FS_CEPH_TYPES_H
diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h
index ade4a78a54c2..1dff0a478b45 100644
--- a/include/linux/cgroup-defs.h
+++ b/include/linux/cgroup-defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/cgroup-defs.h - basic definitions for cgroup
*
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index d023ac5e377f..dddbc29e2009 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CGROUP_H
#define _LINUX_CGROUP_H
/*
diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h
index d0e597c44585..acb77dcff3b4 100644
--- a/include/linux/cgroup_subsys.h
+++ b/include/linux/cgroup_subsys.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* List of cgroup subsystems.
*
diff --git a/include/linux/circ_buf.h b/include/linux/circ_buf.h
index 90f2471dc6f2..7cf262a421c3 100644
--- a/include/linux/circ_buf.h
+++ b/include/linux/circ_buf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* See Documentation/circular-buffers.txt for more information.
*/
diff --git a/include/linux/cleancache.h b/include/linux/cleancache.h
index bbb3712dd892..5f5730c1d324 100644
--- a/include/linux/cleancache.h
+++ b/include/linux/cleancache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CLEANCACHE_H
#define _LINUX_CLEANCACHE_H
diff --git a/include/linux/clk/mmp.h b/include/linux/clk/mmp.h
index 607321fa2c2b..445130460380 100644
--- a/include/linux/clk/mmp.h
+++ b/include/linux/clk/mmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CLK_MMP_H
#define __CLK_MMP_H
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h
index a116926598fd..8ae9a95ebf5b 100644
--- a/include/linux/clockchips.h
+++ b/include/linux/clockchips.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/include/linux/clockchips.h
*
* This file contains the structure definitions for clockchips.
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h
index a78cb1848e65..7dff1963c185 100644
--- a/include/linux/clocksource.h
+++ b/include/linux/clocksource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/include/linux/clocksource.h
*
* This file contains the structure definitions for clocksources.
diff --git a/include/linux/cm4000_cs.h b/include/linux/cm4000_cs.h
index 88bee3a33090..ea4958e07a14 100644
--- a/include/linux/cm4000_cs.h
+++ b/include/linux/cm4000_cs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CM4000_H_
#define _CM4000_H_
diff --git a/include/linux/cma.h b/include/linux/cma.h
index 3e8fbf5a5c73..bf90f0bb42bd 100644
--- a/include/linux/cma.h
+++ b/include/linux/cma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CMA_H__
#define __CMA_H__
diff --git a/include/linux/cmdline-parser.h b/include/linux/cmdline-parser.h
index 2e6dce6e5c2a..68a541807bdf 100644
--- a/include/linux/cmdline-parser.h
+++ b/include/linux/cmdline-parser.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Parsing command line, get the partitions information.
*
diff --git a/include/linux/coda_psdev.h b/include/linux/coda_psdev.h
index 31e4e1f1547c..15170954aa2b 100644
--- a/include/linux/coda_psdev.h
+++ b/include/linux/coda_psdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CODA_PSDEV_H
#define __CODA_PSDEV_H
diff --git a/include/linux/compaction.h b/include/linux/compaction.h
index 0d8415820fc3..68250a57aace 100644
--- a/include/linux/compaction.h
+++ b/include/linux/compaction.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_COMPACTION_H
#define _LINUX_COMPACTION_H
diff --git a/include/linux/compat.h b/include/linux/compat.h
index 3fc433303d7a..3e838a828459 100644
--- a/include/linux/compat.h
+++ b/include/linux/compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_COMPAT_H
#define _LINUX_COMPAT_H
/*
@@ -171,15 +172,6 @@ extern int get_compat_itimerspec64(struct itimerspec64 *its,
extern int put_compat_itimerspec64(const struct itimerspec64 *its,
struct compat_itimerspec __user *uits);
-/*
- * This function convert a timespec if necessary and returns a *user
- * space* pointer. If no conversion is necessary, it returns the
- * initial pointer. NULL is a legitimate argument and will always
- * output NULL.
- */
-extern int compat_convert_timespec(struct timespec __user **,
- const void __user *);
-
struct compat_iovec {
compat_uptr_t iov_base;
compat_size_t iov_len;
diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h
index de179993e039..54dfef70a072 100644
--- a/include/linux/compiler-clang.h
+++ b/include/linux/compiler-clang.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_COMPILER_H
#error "Please don't include <linux/compiler-clang.h> directly, include <linux/compiler.h> instead."
#endif
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index 16d41de92ee3..bb78e5bdff26 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_COMPILER_H
#error "Please don't include <linux/compiler-gcc.h> directly, include <linux/compiler.h> instead."
#endif
diff --git a/include/linux/compiler-intel.h b/include/linux/compiler-intel.h
index d4c71132d07f..523d1b74550f 100644
--- a/include/linux/compiler-intel.h
+++ b/include/linux/compiler-intel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_COMPILER_H
#error "Please don't include <linux/compiler-intel.h> directly, include <linux/compiler.h> instead."
#endif
diff --git a/include/linux/compiler.h b/include/linux/compiler.h
index e95a2631e545..fd8697aa4f73 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_COMPILER_H
#define __LINUX_COMPILER_H
diff --git a/include/linux/completion.h b/include/linux/completion.h
index cae5400022a3..7828451e161a 100644
--- a/include/linux/completion.h
+++ b/include/linux/completion.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_COMPLETION_H
#define __LINUX_COMPLETION_H
diff --git a/include/linux/component.h b/include/linux/component.h
index a559eebc0e0f..e71fbbbc74e2 100644
--- a/include/linux/component.h
+++ b/include/linux/component.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef COMPONENT_H
#define COMPONENT_H
diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h
index 6fd3c908a340..c0ec478ea5bf 100644
--- a/include/linux/console_struct.h
+++ b/include/linux/console_struct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* console_struct.h
*
diff --git a/include/linux/consolemap.h b/include/linux/consolemap.h
index c4811da1338b..254246673390 100644
--- a/include/linux/consolemap.h
+++ b/include/linux/consolemap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* consolemap.h
*
diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h
index c78fc27418f2..d05609ad329d 100644
--- a/include/linux/context_tracking.h
+++ b/include/linux/context_tracking.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CONTEXT_TRACKING_H
#define _LINUX_CONTEXT_TRACKING_H
diff --git a/include/linux/context_tracking_state.h b/include/linux/context_tracking_state.h
index 1d34fe68f48a..f128dc3be0df 100644
--- a/include/linux/context_tracking_state.h
+++ b/include/linux/context_tracking_state.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CONTEXT_TRACKING_STATE_H
#define _LINUX_CONTEXT_TRACKING_STATE_H
diff --git a/include/linux/coredump.h b/include/linux/coredump.h
index 28ffa94aed6b..207aed96a5b7 100644
--- a/include/linux/coredump.h
+++ b/include/linux/coredump.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_COREDUMP_H
#define _LINUX_COREDUMP_H
diff --git a/include/linux/coresight-stm.h b/include/linux/coresight-stm.h
index a978bb85599a..74714b59f9d2 100644
--- a/include/linux/coresight-stm.h
+++ b/include/linux/coresight-stm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_CORESIGHT_STM_H_
#define __LINUX_CORESIGHT_STM_H_
diff --git a/include/linux/cpu.h b/include/linux/cpu.h
index ca73bc1563f4..938ea8ae0ba4 100644
--- a/include/linux/cpu.h
+++ b/include/linux/cpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/cpu.h - generic cpu definition
*
diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
index f24bfb2b9a2d..2477a5cb5bd5 100644
--- a/include/linux/cpuhotplug.h
+++ b/include/linux/cpuhotplug.h
@@ -1,10 +1,30 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CPUHOTPLUG_H
#define __CPUHOTPLUG_H
#include <linux/types.h>
+/*
+ * CPU-up CPU-down
+ *
+ * BP AP BP AP
+ *
+ * OFFLINE OFFLINE
+ * | ^
+ * v |
+ * BRINGUP_CPU->AP_OFFLINE BRINGUP_CPU <- AP_IDLE_DEAD (idle thread/play_dead)
+ * | AP_OFFLINE
+ * v (IRQ-off) ,---------------^
+ * AP_ONLNE | (stop_machine)
+ * | TEARDOWN_CPU <- AP_ONLINE_IDLE
+ * | ^
+ * v |
+ * AP_ACTIVE AP_ACTIVE
+ */
+
enum cpuhp_state {
- CPUHP_OFFLINE,
+ CPUHP_INVALID = -1,
+ CPUHP_OFFLINE = 0,
CPUHP_CREATE_THREADS,
CPUHP_PERF_PREPARE,
CPUHP_PERF_X86_PREPARE,
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index cd415b733c2a..8d3125c493b2 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_CPUMASK_H
#define __LINUX_CPUMASK_H
diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h
index a1e6a33a4b03..1b8e41597ef5 100644
--- a/include/linux/cpuset.h
+++ b/include/linux/cpuset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CPUSET_H
#define _LINUX_CPUSET_H
/*
diff --git a/include/linux/crash_core.h b/include/linux/crash_core.h
index 2df2118fbe13..06097ef30449 100644
--- a/include/linux/crash_core.h
+++ b/include/linux/crash_core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_CRASH_CORE_H
#define LINUX_CRASH_CORE_H
diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h
index 3873697ba21c..a992e6ca2f1c 100644
--- a/include/linux/crash_dump.h
+++ b/include/linux/crash_dump.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_CRASH_DUMP_H
#define LINUX_CRASH_DUMP_H
diff --git a/include/linux/crc-ccitt.h b/include/linux/crc-ccitt.h
index f52696a1ff0d..cd4f420231ba 100644
--- a/include/linux/crc-ccitt.h
+++ b/include/linux/crc-ccitt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CRC_CCITT_H
#define _LINUX_CRC_CCITT_H
diff --git a/include/linux/crc-t10dif.h b/include/linux/crc-t10dif.h
index d81961e9e37d..1fe0cfcdea30 100644
--- a/include/linux/crc-t10dif.h
+++ b/include/linux/crc-t10dif.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CRC_T10DIF_H
#define _LINUX_CRC_T10DIF_H
diff --git a/include/linux/crc32c.h b/include/linux/crc32c.h
index bd8b44d96bdc..357ae4611a45 100644
--- a/include/linux/crc32c.h
+++ b/include/linux/crc32c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CRC32C_H
#define _LINUX_CRC32C_H
diff --git a/include/linux/crc4.h b/include/linux/crc4.h
index 8f739f1d794f..bd2c90556a06 100644
--- a/include/linux/crc4.h
+++ b/include/linux/crc4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CRC4_H
#define _LINUX_CRC4_H
diff --git a/include/linux/crc7.h b/include/linux/crc7.h
index d590765106f3..b462842f3c32 100644
--- a/include/linux/crc7.h
+++ b/include/linux/crc7.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CRC7_H
#define _LINUX_CRC7_H
#include <linux/types.h>
diff --git a/include/linux/crush/crush.h b/include/linux/crush/crush.h
index 07eed95e10c7..54741295c70b 100644
--- a/include/linux/crush/crush.h
+++ b/include/linux/crush/crush.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef CEPH_CRUSH_CRUSH_H
#define CEPH_CRUSH_CRUSH_H
diff --git a/include/linux/crush/hash.h b/include/linux/crush/hash.h
index d1d90258242e..904df41f7847 100644
--- a/include/linux/crush/hash.h
+++ b/include/linux/crush/hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef CEPH_CRUSH_HASH_H
#define CEPH_CRUSH_HASH_H
diff --git a/include/linux/crush/mapper.h b/include/linux/crush/mapper.h
index 141edabb947e..f9b99232f5a1 100644
--- a/include/linux/crush/mapper.h
+++ b/include/linux/crush/mapper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef CEPH_CRUSH_MAPPER_H
#define CEPH_CRUSH_MAPPER_H
diff --git a/include/linux/cryptohash.h b/include/linux/cryptohash.h
index df4d3e943d28..f6ba4c3e60d7 100644
--- a/include/linux/cryptohash.h
+++ b/include/linux/cryptohash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __CRYPTOHASH_H
#define __CRYPTOHASH_H
diff --git a/include/linux/ctype.h b/include/linux/ctype.h
index f13e4ff6835a..363b004426db 100644
--- a/include/linux/ctype.h
+++ b/include/linux/ctype.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CTYPE_H
#define _LINUX_CTYPE_H
diff --git a/include/linux/cuda.h b/include/linux/cuda.h
index b72332823807..056867f09a01 100644
--- a/include/linux/cuda.h
+++ b/include/linux/cuda.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for talking to the CUDA. The CUDA is a microcontroller
* which controls the ADB, system power, RTC, and various other things.
diff --git a/include/linux/cyclades.h b/include/linux/cyclades.h
index 19ae518f5471..83925bd12c0b 100644
--- a/include/linux/cyclades.h
+++ b/include/linux/cyclades.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Revision: 3.0 $$Date: 1998/11/02 14:20:59 $
* linux/include/linux/cyclades.h
*
diff --git a/include/linux/dax.h b/include/linux/dax.h
index 46cad1d0f129..895e16fcc62d 100644
--- a/include/linux/dax.h
+++ b/include/linux/dax.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_DAX_H
#define _LINUX_DAX_H
@@ -19,8 +20,6 @@ struct dax_operations {
/* copy_from_iter: required operation for fs-dax direct-i/o */
size_t (*copy_from_iter)(struct dax_device *, pgoff_t, void *, size_t,
struct iov_iter *);
- /* flush: optional driver-specific cache management after writes */
- void (*flush)(struct dax_device *, pgoff_t, void *, size_t);
};
extern struct attribute_group dax_attribute_group;
@@ -90,8 +89,7 @@ long dax_direct_access(struct dax_device *dax_dev, pgoff_t pgoff, long nr_pages,
void **kaddr, pfn_t *pfn);
size_t dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
size_t bytes, struct iov_iter *i);
-void dax_flush(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
- size_t size);
+void dax_flush(struct dax_device *dax_dev, void *addr, size_t size);
void dax_write_cache(struct dax_device *dax_dev, bool wc);
bool dax_write_cache_enabled(struct dax_device *dax_dev);
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index ed1a7cf6923a..f05a659cdf34 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_DCACHE_H
#define __LINUX_DCACHE_H
diff --git a/include/linux/dccp.h b/include/linux/dccp.h
index 68449293c4b6..6b64b6cc2175 100644
--- a/include/linux/dccp.h
+++ b/include/linux/dccp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_DCCP_H
#define _LINUX_DCCP_H
diff --git a/include/linux/dcookies.h b/include/linux/dcookies.h
index 699b6c499c4f..ddfdac20cad0 100644
--- a/include/linux/dcookies.h
+++ b/include/linux/dcookies.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* dcookies.h
*
diff --git a/include/linux/debug_locks.h b/include/linux/debug_locks.h
index 822c1354f3a6..120225e9a366 100644
--- a/include/linux/debug_locks.h
+++ b/include/linux/debug_locks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_DEBUG_LOCKING_H
#define __LINUX_DEBUG_LOCKING_H
diff --git a/include/linux/debugobjects.h b/include/linux/debugobjects.h
index d82bf1994485..afc416e5dcab 100644
--- a/include/linux/debugobjects.h
+++ b/include/linux/debugobjects.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_DEBUGOBJECTS_H
#define _LINUX_DEBUGOBJECTS_H
diff --git a/include/linux/decompress/bunzip2.h b/include/linux/decompress/bunzip2.h
index 4d683df898e6..5860163942a4 100644
--- a/include/linux/decompress/bunzip2.h
+++ b/include/linux/decompress/bunzip2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DECOMPRESS_BUNZIP2_H
#define DECOMPRESS_BUNZIP2_H
diff --git a/include/linux/decompress/generic.h b/include/linux/decompress/generic.h
index 1fcfd64b5076..207d80138db5 100644
--- a/include/linux/decompress/generic.h
+++ b/include/linux/decompress/generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DECOMPRESS_GENERIC_H
#define DECOMPRESS_GENERIC_H
diff --git a/include/linux/decompress/inflate.h b/include/linux/decompress/inflate.h
index e4f411fdbd24..b65f24e7d442 100644
--- a/include/linux/decompress/inflate.h
+++ b/include/linux/decompress/inflate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_DECOMPRESS_INFLATE_H
#define LINUX_DECOMPRESS_INFLATE_H
diff --git a/include/linux/decompress/mm.h b/include/linux/decompress/mm.h
index 7925bf0ee836..868e9eacd69e 100644
--- a/include/linux/decompress/mm.h
+++ b/include/linux/decompress/mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/compr_mm.h
*
diff --git a/include/linux/decompress/unlz4.h b/include/linux/decompress/unlz4.h
index 3273c2f36496..5a235f605d5f 100644
--- a/include/linux/decompress/unlz4.h
+++ b/include/linux/decompress/unlz4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DECOMPRESS_UNLZ4_H
#define DECOMPRESS_UNLZ4_H
diff --git a/include/linux/decompress/unlzma.h b/include/linux/decompress/unlzma.h
index 8a891a193840..1c930f125182 100644
--- a/include/linux/decompress/unlzma.h
+++ b/include/linux/decompress/unlzma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DECOMPRESS_UNLZMA_H
#define DECOMPRESS_UNLZMA_H
diff --git a/include/linux/decompress/unlzo.h b/include/linux/decompress/unlzo.h
index af18f95d6570..550ae8783d1b 100644
--- a/include/linux/decompress/unlzo.h
+++ b/include/linux/decompress/unlzo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DECOMPRESS_UNLZO_H
#define DECOMPRESS_UNLZO_H
diff --git a/include/linux/delay.h b/include/linux/delay.h
index 2ecb3c46b20a..b78bab4395d8 100644
--- a/include/linux/delay.h
+++ b/include/linux/delay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_DELAY_H
#define _LINUX_DELAY_H
diff --git a/include/linux/delayed_call.h b/include/linux/delayed_call.h
index f7fa76ae1a9b..a26c3b95b5cf 100644
--- a/include/linux/delayed_call.h
+++ b/include/linux/delayed_call.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DELAYED_CALL_H
#define _DELAYED_CALL_H
diff --git a/include/linux/dell-led.h b/include/linux/dell-led.h
index 3f033c48071e..92521471517f 100644
--- a/include/linux/dell-led.h
+++ b/include/linux/dell-led.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DELL_LED_H__
#define __DELL_LED_H__
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h
index 4f2b3b2076c4..a5538433c927 100644
--- a/include/linux/device-mapper.h
+++ b/include/linux/device-mapper.h
@@ -134,8 +134,6 @@ typedef long (*dm_dax_direct_access_fn) (struct dm_target *ti, pgoff_t pgoff,
long nr_pages, void **kaddr, pfn_t *pfn);
typedef size_t (*dm_dax_copy_from_iter_fn)(struct dm_target *ti, pgoff_t pgoff,
void *addr, size_t bytes, struct iov_iter *i);
-typedef void (*dm_dax_flush_fn)(struct dm_target *ti, pgoff_t pgoff, void *addr,
- size_t size);
#define PAGE_SECTORS (PAGE_SIZE / 512)
void dm_error(const char *message);
@@ -186,7 +184,6 @@ struct target_type {
dm_io_hints_fn io_hints;
dm_dax_direct_access_fn direct_access;
dm_dax_copy_from_iter_fn dax_copy_from_iter;
- dm_dax_flush_fn dax_flush;
/* For internal device-mapper use. */
struct list_head list;
@@ -387,7 +384,7 @@ struct dm_arg {
* Validate the next argument, either returning it as *value or, if invalid,
* returning -EINVAL and setting *error.
*/
-int dm_read_arg(struct dm_arg *arg, struct dm_arg_set *arg_set,
+int dm_read_arg(const struct dm_arg *arg, struct dm_arg_set *arg_set,
unsigned *value, char **error);
/*
@@ -395,7 +392,7 @@ int dm_read_arg(struct dm_arg *arg, struct dm_arg_set *arg_set,
* arg->min and arg->max further arguments. Either return the size as
* *num_args or, if invalid, return -EINVAL and set *error.
*/
-int dm_read_arg_group(struct dm_arg *arg, struct dm_arg_set *arg_set,
+int dm_read_arg_group(const struct dm_arg *arg, struct dm_arg_set *arg_set,
unsigned *num_args, char **error);
/*
diff --git a/include/linux/device.h b/include/linux/device.h
index c6f27207dbe8..66fe271c2544 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -307,8 +307,6 @@ struct driver_attribute {
size_t count);
};
-#define DRIVER_ATTR(_name, _mode, _show, _store) \
- struct driver_attribute driver_attr_##_name = __ATTR(_name, _mode, _show, _store)
#define DRIVER_ATTR_RW(_name) \
struct driver_attribute driver_attr_##_name = __ATTR_RW(_name)
#define DRIVER_ATTR_RO(_name) \
@@ -838,7 +836,7 @@ struct dev_links_info {
* @driver_data: Private pointer for driver specific info.
* @links: Links to suppliers and consumers of this device.
* @power: For device power management.
- * See Documentation/power/admin-guide/devices.rst for details.
+ * See Documentation/driver-api/pm/devices.rst for details.
* @pm_domain: Provide callbacks that are executed during system suspend,
* hibernation, system resume and during runtime PM transitions
* along with subsystem-level and driver-level callbacks.
diff --git a/include/linux/device_cgroup.h b/include/linux/device_cgroup.h
index 8b64221b432b..cdbc344a92e4 100644
--- a/include/linux/device_cgroup.h
+++ b/include/linux/device_cgroup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/fs.h>
#ifdef CONFIG_CGROUP_DEVICE
diff --git a/include/linux/dio.h b/include/linux/dio.h
index 2cc0fd00463f..1470d1d943b4 100644
--- a/include/linux/dio.h
+++ b/include/linux/dio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* header file for DIO boards for the HP300 architecture.
* Maybe this should handle DIO-II later?
* The general structure of this is vaguely based on how
diff --git a/include/linux/dirent.h b/include/linux/dirent.h
index f072fb8d10a3..fc61f3cff72f 100644
--- a/include/linux/dirent.h
+++ b/include/linux/dirent.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_DIRENT_H
#define _LINUX_DIRENT_H
diff --git a/include/linux/dma-direction.h b/include/linux/dma-direction.h
index 95b6a82f5951..3649a031893a 100644
--- a/include/linux/dma-direction.h
+++ b/include/linux/dma-direction.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_DMA_DIRECTION_H
#define _LINUX_DMA_DIRECTION_H
/*
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index 29ce9815da87..7653ea66874d 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_DMA_MAPPING_H
#define _LINUX_DMA_MAPPING_H
diff --git a/include/linux/dma/mmp-pdma.h b/include/linux/dma/mmp-pdma.h
index 2dc9b2bc18fc..25cab62a28c4 100644
--- a/include/linux/dma/mmp-pdma.h
+++ b/include/linux/dma/mmp-pdma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MMP_PDMA_H_
#define _MMP_PDMA_H_
diff --git a/include/linux/dma/pxa-dma.h b/include/linux/dma/pxa-dma.h
index 3edc99294bf6..e56ec7af4fd7 100644
--- a/include/linux/dma/pxa-dma.h
+++ b/include/linux/dma/pxa-dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PXA_DMA_H_
#define _PXA_DMA_H_
diff --git a/include/linux/dma_remapping.h b/include/linux/dma_remapping.h
index 90884072fa73..21b3e7d33d68 100644
--- a/include/linux/dma_remapping.h
+++ b/include/linux/dma_remapping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DMA_REMAPPING_H
#define _DMA_REMAPPING_H
diff --git a/include/linux/dmi.h b/include/linux/dmi.h
index 9bbf21a516e4..46e151172d95 100644
--- a/include/linux/dmi.h
+++ b/include/linux/dmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DMI_H__
#define __DMI_H__
diff --git a/include/linux/dnotify.h b/include/linux/dnotify.h
index 3290555a52ee..0aad774beaec 100644
--- a/include/linux/dnotify.h
+++ b/include/linux/dnotify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_DNOTIFY_H
#define _LINUX_DNOTIFY_H
/*
diff --git a/include/linux/dqblk_qtree.h b/include/linux/dqblk_qtree.h
index 0de21e935976..100d22a46b82 100644
--- a/include/linux/dqblk_qtree.h
+++ b/include/linux/dqblk_qtree.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions of structures and functions for quota formats using trie
*/
diff --git a/include/linux/dqblk_v1.h b/include/linux/dqblk_v1.h
index c0d4d1e2a45c..85d837a14838 100644
--- a/include/linux/dqblk_v1.h
+++ b/include/linux/dqblk_v1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File with in-memory structures of old quota format
*/
diff --git a/include/linux/dqblk_v2.h b/include/linux/dqblk_v2.h
index 18000a542677..da95932ad9e7 100644
--- a/include/linux/dqblk_v2.h
+++ b/include/linux/dqblk_v2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for vfsv0 quota format
*/
diff --git a/include/linux/drbd_genl.h b/include/linux/drbd_genl.h
index 4e6d4d4c7056..53f44b8cd75f 100644
--- a/include/linux/drbd_genl.h
+++ b/include/linux/drbd_genl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* General overview:
* full generic netlink message:
diff --git a/include/linux/drbd_genl_api.h b/include/linux/drbd_genl_api.h
index 9ef50d51e34e..bd62efc29002 100644
--- a/include/linux/drbd_genl_api.h
+++ b/include/linux/drbd_genl_api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef DRBD_GENL_STRUCT_H
#define DRBD_GENL_STRUCT_H
diff --git a/include/linux/drbd_limits.h b/include/linux/drbd_limits.h
index 24ae1b9b76c7..9e33f7038bea 100644
--- a/include/linux/drbd_limits.h
+++ b/include/linux/drbd_limits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
drbd_limits.h
This file is part of DRBD by Philipp Reisner and Lars Ellenberg.
diff --git a/include/linux/ds2782_battery.h b/include/linux/ds2782_battery.h
index b4e281f65c15..fb6c97e10956 100644
--- a/include/linux/ds2782_battery.h
+++ b/include/linux/ds2782_battery.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_DS2782_BATTERY_H
#define __LINUX_DS2782_BATTERY_H
diff --git a/include/linux/dtlk.h b/include/linux/dtlk.h
index 22a7b9a5f5d1..27b95e70bde3 100644
--- a/include/linux/dtlk.h
+++ b/include/linux/dtlk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define DTLK_MINOR 0
#define DTLK_IO_EXTENT 0x02
diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h
index 546d68057e3b..2fd8006153c3 100644
--- a/include/linux/dynamic_debug.h
+++ b/include/linux/dynamic_debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DYNAMIC_DEBUG_H
#define _DYNAMIC_DEBUG_H
diff --git a/include/linux/dynamic_queue_limits.h b/include/linux/dynamic_queue_limits.h
index a4be70398ce1..34c0a5464c74 100644
--- a/include/linux/dynamic_queue_limits.h
+++ b/include/linux/dynamic_queue_limits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Dynamic queue limits (dql) - Definitions
*
diff --git a/include/linux/earlycpio.h b/include/linux/earlycpio.h
index 111f46d83d00..c70519267c77 100644
--- a/include/linux/earlycpio.h
+++ b/include/linux/earlycpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_EARLYCPIO_H
#define _LINUX_EARLYCPIO_H
diff --git a/include/linux/ecryptfs.h b/include/linux/ecryptfs.h
index 8d5ab998a222..91e142abf7e8 100644
--- a/include/linux/ecryptfs.h
+++ b/include/linux/ecryptfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ECRYPTFS_H
#define _LINUX_ECRYPTFS_H
diff --git a/include/linux/eeprom_93xx46.h b/include/linux/eeprom_93xx46.h
index 915898759280..eec7928ff8fe 100644
--- a/include/linux/eeprom_93xx46.h
+++ b/include/linux/eeprom_93xx46.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Module: eeprom_93xx46
* platform description for 93xx46 EEPROMs.
diff --git a/include/linux/efi-bgrt.h b/include/linux/efi-bgrt.h
index e6f624b53c3d..e6cd51005633 100644
--- a/include/linux/efi-bgrt.h
+++ b/include/linux/efi-bgrt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_EFI_BGRT_H
#define _LINUX_EFI_BGRT_H
diff --git a/include/linux/efi.h b/include/linux/efi.h
index 66f4a4e79f4b..d813f7b04da7 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_EFI_H
#define _LINUX_EFI_H
diff --git a/include/linux/efs_vh.h b/include/linux/efs_vh.h
index 8a11150c61fe..206c5270f7b8 100644
--- a/include/linux/efs_vh.h
+++ b/include/linux/efs_vh.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* efs_vh.h
*
diff --git a/include/linux/eisa.h b/include/linux/eisa.h
index 6925249a5ac6..b012e30afebd 100644
--- a/include/linux/eisa.h
+++ b/include/linux/eisa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_EISA_H
#define _LINUX_EISA_H
diff --git a/include/linux/elevator.h b/include/linux/elevator.h
index 5bc8f8682a3e..ddb7632d73b9 100644
--- a/include/linux/elevator.h
+++ b/include/linux/elevator.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ELEVATOR_H
#define _LINUX_ELEVATOR_H
diff --git a/include/linux/elf-randomize.h b/include/linux/elf-randomize.h
index b5f0bda9472e..da0dbb7b6be3 100644
--- a/include/linux/elf-randomize.h
+++ b/include/linux/elf-randomize.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ELF_RANDOMIZE_H
#define _ELF_RANDOMIZE_H
diff --git a/include/linux/elf.h b/include/linux/elf.h
index ba069e8f4f78..e3649b3e970e 100644
--- a/include/linux/elf.h
+++ b/include/linux/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ELF_H
#define _LINUX_ELF_H
diff --git a/include/linux/elfcore-compat.h b/include/linux/elfcore-compat.h
index 0a90e1c3a422..b5f2efdd05e0 100644
--- a/include/linux/elfcore-compat.h
+++ b/include/linux/elfcore-compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ELFCORE_COMPAT_H
#define _LINUX_ELFCORE_COMPAT_H
diff --git a/include/linux/elfcore.h b/include/linux/elfcore.h
index c8240a12c42d..4cad0e784b28 100644
--- a/include/linux/elfcore.h
+++ b/include/linux/elfcore.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ELFCORE_H
#define _LINUX_ELFCORE_H
diff --git a/include/linux/elfnote.h b/include/linux/elfnote.h
index 278e3ef05336..f236f5b931b2 100644
--- a/include/linux/elfnote.h
+++ b/include/linux/elfnote.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ELFNOTE_H
#define _LINUX_ELFNOTE_H
/*
diff --git a/include/linux/err.h b/include/linux/err.h
index 1e3558845e4c..87be24350e91 100644
--- a/include/linux/err.h
+++ b/include/linux/err.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ERR_H
#define _LINUX_ERR_H
diff --git a/include/linux/errno.h b/include/linux/errno.h
index 7ce9fb1b7d28..3cba627577d6 100644
--- a/include/linux/errno.h
+++ b/include/linux/errno.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ERRNO_H
#define _LINUX_ERRNO_H
diff --git a/include/linux/errqueue.h b/include/linux/errqueue.h
index 6fdfc884fdeb..be1cf7291d6c 100644
--- a/include/linux/errqueue.h
+++ b/include/linux/errqueue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ERRQUEUE_H
#define _LINUX_ERRQUEUE_H 1
diff --git a/include/linux/errseq.h b/include/linux/errseq.h
index f746bd8fe4d0..6ffae9c5052d 100644
--- a/include/linux/errseq.h
+++ b/include/linux/errseq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* See Documentation/errseq.rst and lib/errseq.c
*/
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 4587a4c36923..0c0146e7e274 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ethtool.h: Defines for Linux ethtool.
*
diff --git a/include/linux/eventfd.h b/include/linux/eventfd.h
index 9e4befd95bc7..60b2985e8a18 100644
--- a/include/linux/eventfd.h
+++ b/include/linux/eventfd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/eventfd.h
*
diff --git a/include/linux/evm.h b/include/linux/evm.h
index 35ed9a8a403a..8302bc29bb35 100644
--- a/include/linux/evm.h
+++ b/include/linux/evm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* evm.h
*
diff --git a/include/linux/exportfs.h b/include/linux/exportfs.h
index 5ab958cdc50b..0d3037419bc7 100644
--- a/include/linux/exportfs.h
+++ b/include/linux/exportfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_EXPORTFS_H
#define LINUX_EXPORTFS_H 1
diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h
index 2723e715f67a..1fef88569037 100644
--- a/include/linux/ext2_fs.h
+++ b/include/linux/ext2_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/ext2_fs.h
*
diff --git a/include/linux/extable.h b/include/linux/extable.h
index 28addad0dda7..41c5b3a25f67 100644
--- a/include/linux/extable.h
+++ b/include/linux/extable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_EXTABLE_H
#define _LINUX_EXTABLE_H
diff --git a/include/linux/falloc.h b/include/linux/falloc.h
index 7494dc67c66f..674d59f4d6ce 100644
--- a/include/linux/falloc.h
+++ b/include/linux/falloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FALLOC_H_
#define _FALLOC_H_
diff --git a/include/linux/fanotify.h b/include/linux/fanotify.h
index cef93ddcc5a0..096c96f4f16a 100644
--- a/include/linux/fanotify.h
+++ b/include/linux/fanotify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FANOTIFY_H
#define _LINUX_FANOTIFY_H
diff --git a/include/linux/fault-inject.h b/include/linux/fault-inject.h
index 728d4e0292aa..c3c95d18bf43 100644
--- a/include/linux/fault-inject.h
+++ b/include/linux/fault-inject.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FAULT_INJECT_H
#define _LINUX_FAULT_INJECT_H
diff --git a/include/linux/fb.h b/include/linux/fb.h
index a964d076b4dc..bc24e48e396d 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FB_H
#define _LINUX_FB_H
@@ -400,7 +401,7 @@ struct fb_tile_ops {
#endif /* CONFIG_FB_TILEBLITTING */
/* FBINFO_* = fb_info.flags bit flags */
-#define FBINFO_MODULE 0x0001 /* Low-level driver is a module */
+#define FBINFO_DEFAULT 0
#define FBINFO_HWACCEL_DISABLED 0x0002
/* When FBINFO_HWACCEL_DISABLED is set:
* Hardware acceleration is turned off. Software implementations
@@ -533,14 +534,6 @@ static inline struct apertures_struct *alloc_apertures(unsigned int max_num) {
return a;
}
-#ifdef MODULE
-#define FBINFO_DEFAULT FBINFO_MODULE
-#else
-#define FBINFO_DEFAULT 0
-#endif
-
-// This will go away
-#define FBINFO_FLAG_MODULE FBINFO_MODULE
#define FBINFO_FLAG_DEFAULT FBINFO_DEFAULT
/* This will go away
diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h
new file mode 100644
index 000000000000..f68a7db14165
--- /dev/null
+++ b/include/linux/fbcon.h
@@ -0,0 +1,12 @@
+#ifndef _LINUX_FBCON_H
+#define _LINUX_FBCON_H
+
+#ifdef CONFIG_FRAMEBUFFER_CONSOLE
+void __init fb_console_init(void);
+void __exit fb_console_exit(void);
+#else
+static inline void fb_console_init(void) {}
+static inline void fb_console_exit(void) {}
+#endif
+
+#endif /* _LINUX_FBCON_H */
diff --git a/include/linux/fcntl.h b/include/linux/fcntl.h
index 1b48d9c9a561..27dc7a60693e 100644
--- a/include/linux/fcntl.h
+++ b/include/linux/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FCNTL_H
#define _LINUX_FCNTL_H
diff --git a/include/linux/fd.h b/include/linux/fd.h
index 69275bccc3e4..ece5ea53205b 100644
--- a/include/linux/fd.h
+++ b/include/linux/fd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FD_H
#define _LINUX_FD_H
diff --git a/include/linux/fdtable.h b/include/linux/fdtable.h
index 6e84b2cae6ad..1c65817673db 100644
--- a/include/linux/fdtable.h
+++ b/include/linux/fdtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* descriptor table internals; you almost certainly want file.h instead.
*/
diff --git a/include/linux/file.h b/include/linux/file.h
index 61eb82cbafba..279720db984a 100644
--- a/include/linux/file.h
+++ b/include/linux/file.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Wrapper functions for accessing the file_struct fd array.
*/
diff --git a/include/linux/filter.h b/include/linux/filter.h
index d29e58fde364..48ec57e70f9f 100644
--- a/include/linux/filter.h
+++ b/include/linux/filter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linux Socket Filter Data Structures
*/
@@ -728,7 +729,7 @@ void xdp_do_flush_map(void);
void bpf_warn_invalid_xdp_action(u32 act);
void bpf_warn_invalid_xdp_redirect(u32 ifindex);
-struct sock *do_sk_redirect_map(void);
+struct sock *do_sk_redirect_map(struct sk_buff *skb);
#ifdef CONFIG_BPF_JIT
extern int bpf_jit_enable;
diff --git a/include/linux/fips.h b/include/linux/fips.h
index f8fb07b0b6b8..afeeece92302 100644
--- a/include/linux/fips.h
+++ b/include/linux/fips.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FIPS_H
#define _FIPS_H
diff --git a/include/linux/firewire.h b/include/linux/firewire.h
index d4b7683c722d..aec8f30ab200 100644
--- a/include/linux/firewire.h
+++ b/include/linux/firewire.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FIREWIRE_H
#define _LINUX_FIREWIRE_H
diff --git a/include/linux/firmware.h b/include/linux/firmware.h
index b1f9f0ccb8ac..d4508080348d 100644
--- a/include/linux/firmware.h
+++ b/include/linux/firmware.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FIRMWARE_H
#define _LINUX_FIRMWARE_H
diff --git a/include/linux/flat.h b/include/linux/flat.h
index 7d542dfd0def..569b67d64d5c 100644
--- a/include/linux/flat.h
+++ b/include/linux/flat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2002-2003 David McCullough <davidm@snapgear.com>
* Copyright (C) 1998 Kenneth Albanowski <kjahds@kjahds.com>
diff --git a/include/linux/flex_array.h b/include/linux/flex_array.h
index 11366b3ff0b4..b94fa61b51fb 100644
--- a/include/linux/flex_array.h
+++ b/include/linux/flex_array.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FLEX_ARRAY_H
#define _FLEX_ARRAY_H
diff --git a/include/linux/flex_proportions.h b/include/linux/flex_proportions.h
index 0d348e011a6e..c12df59d3f5f 100644
--- a/include/linux/flex_proportions.h
+++ b/include/linux/flex_proportions.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Floating proportions with flexible aging period
*
diff --git a/include/linux/fmc-sdb.h b/include/linux/fmc-sdb.h
index 599bd6bab56d..bec899f0867c 100644
--- a/include/linux/fmc-sdb.h
+++ b/include/linux/fmc-sdb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file is separate from sdb.h, because I want that one to remain
* unchanged (as far as possible) from the official sdb distribution
diff --git a/include/linux/fpga/fpga-bridge.h b/include/linux/fpga/fpga-bridge.h
index dba6e3c697c7..aa66c87c120b 100644
--- a/include/linux/fpga/fpga-bridge.h
+++ b/include/linux/fpga/fpga-bridge.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/device.h>
#include <linux/fpga/fpga-mgr.h>
diff --git a/include/linux/frame.h b/include/linux/frame.h
index d772c61c31da..02d3ca2d9598 100644
--- a/include/linux/frame.h
+++ b/include/linux/frame.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FRAME_H
#define _LINUX_FRAME_H
diff --git a/include/linux/freezer.h b/include/linux/freezer.h
index dd03e837ebb7..3995df1d068f 100644
--- a/include/linux/freezer.h
+++ b/include/linux/freezer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Freezer declarations */
#ifndef FREEZER_H_INCLUDED
diff --git a/include/linux/frontswap.h b/include/linux/frontswap.h
index 1d18af034554..011965c08b93 100644
--- a/include/linux/frontswap.h
+++ b/include/linux/frontswap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FRONTSWAP_H
#define _LINUX_FRONTSWAP_H
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 33d8e45cd874..885266aae2d7 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FS_H
#define _LINUX_FS_H
@@ -148,8 +149,8 @@ typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
/* File was opened by fanotify and shouldn't generate fanotify events */
#define FMODE_NONOTIFY ((__force fmode_t)0x4000000)
-/* File is capable of returning -EAGAIN if AIO will block */
-#define FMODE_AIO_NOWAIT ((__force fmode_t)0x8000000)
+/* File is capable of returning -EAGAIN if I/O will block */
+#define FMODE_NOWAIT ((__force fmode_t)0x8000000)
/*
* Flag for rw_copy_check_uvector and compat_rw_copy_check_uvector
@@ -403,7 +404,7 @@ struct address_space {
unsigned long flags; /* error bits */
spinlock_t private_lock; /* for use by the address_space */
gfp_t gfp_mask; /* implicit gfp mask for allocations */
- struct list_head private_list; /* ditto */
+ struct list_head private_list; /* for use by the address_space */
void *private_data; /* ditto */
errseq_t wb_err;
} __attribute__((aligned(sizeof(long)))) __randomize_layout;
@@ -1271,6 +1272,33 @@ extern pid_t f_getown(struct file *filp);
extern int send_sigurg(struct fown_struct *fown);
/*
+ * sb->s_flags. Note that these mirror the equivalent MS_* flags where
+ * represented in both.
+ */
+#define SB_RDONLY 1 /* Mount read-only */
+#define SB_NOSUID 2 /* Ignore suid and sgid bits */
+#define SB_NODEV 4 /* Disallow access to device special files */
+#define SB_NOEXEC 8 /* Disallow program execution */
+#define SB_SYNCHRONOUS 16 /* Writes are synced at once */
+#define SB_MANDLOCK 64 /* Allow mandatory locks on an FS */
+#define SB_DIRSYNC 128 /* Directory modifications are synchronous */
+#define SB_NOATIME 1024 /* Do not update access times. */
+#define SB_NODIRATIME 2048 /* Do not update directory access times */
+#define SB_SILENT 32768
+#define SB_POSIXACL (1<<16) /* VFS does not apply the umask */
+#define SB_KERNMOUNT (1<<22) /* this is a kern_mount call */
+#define SB_I_VERSION (1<<23) /* Update inode I_version field */
+#define SB_LAZYTIME (1<<25) /* Update the on-disk [acm]times lazily */
+
+/* These sb flags are internal to the kernel */
+#define SB_SUBMOUNT (1<<26)
+#define SB_NOREMOTELOCK (1<<27)
+#define SB_NOSEC (1<<28)
+#define SB_BORN (1<<29)
+#define SB_ACTIVE (1<<30)
+#define SB_NOUSER (1<<31)
+
+/*
* Umount options
*/
@@ -1754,13 +1782,10 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
struct iovec **ret_pointer);
extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *);
-extern ssize_t __vfs_write(struct file *, const char __user *, size_t, loff_t *);
extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
extern ssize_t vfs_readv(struct file *, const struct iovec __user *,
unsigned long, loff_t *, rwf_t);
-extern ssize_t vfs_writev(struct file *, const struct iovec __user *,
- unsigned long, loff_t *, rwf_t);
extern ssize_t vfs_copy_file_range(struct file *, loff_t , struct file *,
loff_t, size_t, unsigned int);
extern int vfs_clone_file_prep_inodes(struct inode *inode_in, loff_t pos_in,
@@ -1836,7 +1861,7 @@ struct super_operations {
* possible to override it selectively if you really wanted to with some
* ioctl() that is not currently implemented.
*
- * Exception: MS_RDONLY is always applied to the entire file system.
+ * Exception: SB_RDONLY is always applied to the entire file system.
*
* Unfortunately, it is possible to change a filesystems flags with it mounted
* with files in use. This means that all of the inodes will not have their
@@ -1845,19 +1870,20 @@ struct super_operations {
*/
#define __IS_FLG(inode, flg) ((inode)->i_sb->s_flags & (flg))
-#define IS_RDONLY(inode) ((inode)->i_sb->s_flags & MS_RDONLY)
-#define IS_SYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS) || \
+static inline bool sb_rdonly(const struct super_block *sb) { return sb->s_flags & MS_RDONLY; }
+#define IS_RDONLY(inode) sb_rdonly((inode)->i_sb)
+#define IS_SYNC(inode) (__IS_FLG(inode, SB_SYNCHRONOUS) || \
((inode)->i_flags & S_SYNC))
-#define IS_DIRSYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS|MS_DIRSYNC) || \
+#define IS_DIRSYNC(inode) (__IS_FLG(inode, SB_SYNCHRONOUS|SB_DIRSYNC) || \
((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
-#define IS_MANDLOCK(inode) __IS_FLG(inode, MS_MANDLOCK)
-#define IS_NOATIME(inode) __IS_FLG(inode, MS_RDONLY|MS_NOATIME)
-#define IS_I_VERSION(inode) __IS_FLG(inode, MS_I_VERSION)
+#define IS_MANDLOCK(inode) __IS_FLG(inode, SB_MANDLOCK)
+#define IS_NOATIME(inode) __IS_FLG(inode, SB_RDONLY|SB_NOATIME)
+#define IS_I_VERSION(inode) __IS_FLG(inode, SB_I_VERSION)
#define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA)
#define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
#define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
-#define IS_POSIXACL(inode) __IS_FLG(inode, MS_POSIXACL)
+#define IS_POSIXACL(inode) __IS_FLG(inode, SB_POSIXACL)
#define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD)
#define IS_NOCMTIME(inode) ((inode)->i_flags & S_NOCMTIME)
@@ -2178,7 +2204,7 @@ static inline int __mandatory_lock(struct inode *ino)
}
/*
- * ... and these candidates should be on MS_MANDLOCK mounted fs,
+ * ... and these candidates should be on SB_MANDLOCK mounted fs,
* otherwise these will be advisory locks
*/
@@ -2788,15 +2814,15 @@ static inline const char *kernel_read_file_id_str(enum kernel_read_file_id id)
return kernel_read_file_str[id];
}
-extern int kernel_read(struct file *, loff_t, char *, unsigned long);
extern int kernel_read_file(struct file *, void **, loff_t *, loff_t,
enum kernel_read_file_id);
-extern int kernel_read_file_from_path(char *, void **, loff_t *, loff_t,
+extern int kernel_read_file_from_path(const char *, void **, loff_t *, loff_t,
enum kernel_read_file_id);
extern int kernel_read_file_from_fd(int, void **, loff_t *, loff_t,
enum kernel_read_file_id);
-extern ssize_t kernel_write(struct file *, const char *, size_t, loff_t);
-extern ssize_t __kernel_write(struct file *, const char *, size_t, loff_t *);
+extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
+extern ssize_t kernel_write(struct file *, const void *, size_t, loff_t *);
+extern ssize_t __kernel_write(struct file *, const void *, size_t, loff_t *);
extern struct file * open_exec(const char *);
/* fs/dcache.c -- generic fs support functions */
@@ -3169,7 +3195,7 @@ static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags)
return -EOPNOTSUPP;
if (flags & RWF_NOWAIT) {
- if (!(ki->ki_filp->f_mode & FMODE_AIO_NOWAIT))
+ if (!(ki->ki_filp->f_mode & FMODE_NOWAIT))
return -EOPNOTSUPP;
ki->ki_flags |= IOCB_NOWAIT;
}
@@ -3294,7 +3320,7 @@ static inline int check_sticky(struct inode *dir, struct inode *inode)
static inline void inode_has_no_xattr(struct inode *inode)
{
- if (!is_sxid(inode->i_mode) && (inode->i_sb->s_flags & MS_NOSEC))
+ if (!is_sxid(inode->i_mode) && (inode->i_sb->s_flags & SB_NOSEC))
inode->i_flags |= S_NOSEC;
}
diff --git a/include/linux/fs_pin.h b/include/linux/fs_pin.h
index 3886b3bffd7f..7cab74d66f85 100644
--- a/include/linux/fs_pin.h
+++ b/include/linux/fs_pin.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/wait.h>
struct fs_pin {
diff --git a/include/linux/fs_stack.h b/include/linux/fs_stack.h
index da317c7163ab..54210a42c30d 100644
--- a/include/linux/fs_stack.h
+++ b/include/linux/fs_stack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FS_STACK_H
#define _LINUX_FS_STACK_H
diff --git a/include/linux/fs_struct.h b/include/linux/fs_struct.h
index 7a026240cbb1..cf1015abfbf2 100644
--- a/include/linux/fs_struct.h
+++ b/include/linux/fs_struct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FS_STRUCT_H
#define _LINUX_FS_STRUCT_H
diff --git a/include/linux/fscrypt_common.h b/include/linux/fscrypt_common.h
index 97f738628b36..854d724978fa 100644
--- a/include/linux/fscrypt_common.h
+++ b/include/linux/fscrypt_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fscrypt_common.h: common declarations for per-file encryption
*
diff --git a/include/linux/fscrypt_notsupp.h b/include/linux/fscrypt_notsupp.h
index ec406aed2f2f..19609ceea350 100644
--- a/include/linux/fscrypt_notsupp.h
+++ b/include/linux/fscrypt_notsupp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fscrypt_notsupp.h
*
diff --git a/include/linux/fscrypt_supp.h b/include/linux/fscrypt_supp.h
index 32e2fcf13b01..5153dce22f09 100644
--- a/include/linux/fscrypt_supp.h
+++ b/include/linux/fscrypt_supp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* fscrypt_supp.h
*
diff --git a/include/linux/fsl/edac.h b/include/linux/fsl/edac.h
index 90d64d4ec1a9..148a297d7587 100644
--- a/include/linux/fsl/edac.h
+++ b/include/linux/fsl/edac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef FSL_EDAC_H
#define FSL_EDAC_H
diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h
index b78aa7ac77ce..bdaf22582f6e 100644
--- a/include/linux/fsnotify.h
+++ b/include/linux/fsnotify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FS_NOTIFY_H
#define _LINUX_FS_NOTIFY_H
diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h
index c6c69318752b..3597ef78df4d 100644
--- a/include/linux/fsnotify_backend.h
+++ b/include/linux/fsnotify_backend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Filesystem access notification for Linux
*
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 2e028854bac7..e54d257983f2 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Ftrace header. For implementation details beyond the random comments
* scattered below, see: Documentation/trace/ftrace-design.txt
diff --git a/include/linux/ftrace_irq.h b/include/linux/ftrace_irq.h
index 4ec2c9b205f2..ccda97dc7f8b 100644
--- a/include/linux/ftrace_irq.h
+++ b/include/linux/ftrace_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FTRACE_IRQ_H
#define _LINUX_FTRACE_IRQ_H
diff --git a/include/linux/futex.h b/include/linux/futex.h
index f36bfd26f998..c0fb9a24bbd2 100644
--- a/include/linux/futex.h
+++ b/include/linux/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_FUTEX_H
#define _LINUX_FUTEX_H
diff --git a/include/linux/gcd.h b/include/linux/gcd.h
index 69f5e8a01bad..cb572677fd7f 100644
--- a/include/linux/gcd.h
+++ b/include/linux/gcd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _GCD_H
#define _GCD_H
diff --git a/include/linux/genetlink.h b/include/linux/genetlink.h
index a4c61cbce777..b96dd4e1e663 100644
--- a/include/linux/genetlink.h
+++ b/include/linux/genetlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_GENERIC_NETLINK_H
#define __LINUX_GENERIC_NETLINK_H
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index ea652bfcd675..44790523057f 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_GENHD_H
#define _LINUX_GENHD_H
diff --git a/include/linux/genl_magic_func.h b/include/linux/genl_magic_func.h
index 377257d8f7e3..604967609e55 100644
--- a/include/linux/genl_magic_func.h
+++ b/include/linux/genl_magic_func.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef GENL_MAGIC_FUNC_H
#define GENL_MAGIC_FUNC_H
diff --git a/include/linux/genl_magic_struct.h b/include/linux/genl_magic_struct.h
index 6270a56e5edc..5972e4969197 100644
--- a/include/linux/genl_magic_struct.h
+++ b/include/linux/genl_magic_struct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef GENL_MAGIC_STRUCT_H
#define GENL_MAGIC_STRUCT_H
diff --git a/include/linux/getcpu.h b/include/linux/getcpu.h
index c7372d7a97be..c304dcdb4eac 100644
--- a/include/linux/getcpu.h
+++ b/include/linux/getcpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_GETCPU_H
#define _LINUX_GETCPU_H 1
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index bcfb9f7c46f5..710143741eb5 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_GFP_H
#define __LINUX_GFP_H
@@ -288,8 +289,6 @@ struct vm_area_struct;
#define GFP_NOWAIT (__GFP_KSWAPD_RECLAIM)
#define GFP_NOIO (__GFP_RECLAIM)
#define GFP_NOFS (__GFP_RECLAIM | __GFP_IO)
-#define GFP_TEMPORARY (__GFP_RECLAIM | __GFP_IO | __GFP_FS | \
- __GFP_RECLAIMABLE)
#define GFP_USER (__GFP_RECLAIM | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
#define GFP_DMA __GFP_DMA
#define GFP_DMA32 __GFP_DMA32
diff --git a/include/linux/glob.h b/include/linux/glob.h
index 861d8347d08e..861327b33e41 100644
--- a/include/linux/glob.h
+++ b/include/linux/glob.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_GLOB_H
#define _LINUX_GLOB_H
diff --git a/include/linux/goldfish.h b/include/linux/goldfish.h
index 93e080b39cf6..2835c150c3ff 100644
--- a/include/linux/goldfish.h
+++ b/include/linux/goldfish.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_GOLDFISH_H
#define __LINUX_GOLDFISH_H
diff --git a/include/linux/gpio-pxa.h b/include/linux/gpio-pxa.h
index d90ebbe02ca4..1e1fa0160480 100644
--- a/include/linux/gpio-pxa.h
+++ b/include/linux/gpio-pxa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GPIO_PXA_H
#define __GPIO_PXA_H
diff --git a/include/linux/gpio.h b/include/linux/gpio.h
index d12b5d566e4b..8ef7fc0ce0f0 100644
--- a/include/linux/gpio.h
+++ b/include/linux/gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_GPIO_H
#define __LINUX_GPIO_H
diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h
index 8f702fcbe485..c4a350d83578 100644
--- a/include/linux/gpio/consumer.h
+++ b/include/linux/gpio/consumer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_GPIO_CONSUMER_H
#define __LINUX_GPIO_CONSUMER_H
diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h
index c97f8325e8bf..424e5139ff10 100644
--- a/include/linux/gpio/driver.h
+++ b/include/linux/gpio/driver.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_GPIO_DRIVER_H
#define __LINUX_GPIO_DRIVER_H
diff --git a/include/linux/gpio/gpio-reg.h b/include/linux/gpio/gpio-reg.h
index 90e0b9060e6d..5c6efd394cb0 100644
--- a/include/linux/gpio/gpio-reg.h
+++ b/include/linux/gpio/gpio-reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef GPIO_REG_H
#define GPIO_REG_H
diff --git a/include/linux/gpio/machine.h b/include/linux/gpio/machine.h
index ba4ccfd900f9..b7225369e568 100644
--- a/include/linux/gpio/machine.h
+++ b/include/linux/gpio/machine.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_GPIO_MACHINE_H
#define __LINUX_GPIO_MACHINE_H
diff --git a/include/linux/gpio_keys.h b/include/linux/gpio_keys.h
index 0b71024c082c..d06bf77400f1 100644
--- a/include/linux/gpio_keys.h
+++ b/include/linux/gpio_keys.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _GPIO_KEYS_H
#define _GPIO_KEYS_H
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h
index c683996110b1..0fbbcdf0c178 100644
--- a/include/linux/hardirq.h
+++ b/include/linux/hardirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_HARDIRQ_H
#define LINUX_HARDIRQ_H
diff --git a/include/linux/hashtable.h b/include/linux/hashtable.h
index 082dc1bd0801..417d2c4bc60d 100644
--- a/include/linux/hashtable.h
+++ b/include/linux/hashtable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Statically sized hash table implementation
* (C) 2012 Sasha Levin <levinsasha928@gmail.com>
diff --git a/include/linux/hdlcdrv.h b/include/linux/hdlcdrv.h
index be3be25bb898..d4d633a49d36 100644
--- a/include/linux/hdlcdrv.h
+++ b/include/linux/hdlcdrv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* hdlcdrv.h -- HDLC packet radio network driver.
* The Linux soundcard driver for 1200 baud and 9600 baud packet radio
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index bb3f3297062a..776f90f3a1cd 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_HIGHMEM_H
#define _LINUX_HIGHMEM_H
diff --git a/include/linux/highuid.h b/include/linux/highuid.h
index 434e56246f67..50d383fd674d 100644
--- a/include/linux/highuid.h
+++ b/include/linux/highuid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_HIGHUID_H
#define _LINUX_HIGHUID_H
diff --git a/include/linux/hpet.h b/include/linux/hpet.h
index 9427ab4e01c3..8604564b985d 100644
--- a/include/linux/hpet.h
+++ b/include/linux/hpet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __HPET__
#define __HPET__ 1
diff --git a/include/linux/htcpld.h b/include/linux/htcpld.h
index ab3f6cb4dddc..842fce69ac06 100644
--- a/include/linux/htcpld.h
+++ b/include/linux/htcpld.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_HTCPLD_H
#define __LINUX_HTCPLD_H
diff --git a/include/linux/htirq.h b/include/linux/htirq.h
index d4a527e58434..127c39d815ba 100644
--- a/include/linux/htirq.h
+++ b/include/linux/htirq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_HTIRQ_H
#define LINUX_HTIRQ_H
diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index 14bc21c2ee7f..87067d23a48b 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_HUGE_MM_H
#define _LINUX_HUGE_MM_H
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index 8bbbd37ab105..fbf5b31d47ee 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_HUGETLB_H
#define _LINUX_HUGETLB_H
diff --git a/include/linux/hugetlb_inline.h b/include/linux/hugetlb_inline.h
index a4e7ca0f3585..0660a03d37d9 100644
--- a/include/linux/hugetlb_inline.h
+++ b/include/linux/hugetlb_inline.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_HUGETLB_INLINE_H
#define _LINUX_HUGETLB_INLINE_H
diff --git a/include/linux/hw_breakpoint.h b/include/linux/hw_breakpoint.h
index 0464c85e63fd..cf045885a499 100644
--- a/include/linux/hw_breakpoint.h
+++ b/include/linux/hw_breakpoint.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_HW_BREAKPOINT_H
#define _LINUX_HW_BREAKPOINT_H
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
index c458d7b7ad19..6431087816ba 100644
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -1403,7 +1403,7 @@ extern bool vmbus_prep_negotiate_resp(struct icmsg_hdr *icmsghdrp, u8 *buf,
const int *srv_version, int srv_vercnt,
int *nego_fw_version, int *nego_srv_version);
-void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid);
+void hv_process_channel_removal(u32 relid);
void vmbus_setevent(struct vmbus_channel *channel);
/*
diff --git a/include/linux/hypervisor.h b/include/linux/hypervisor.h
index 3fa5ef2b3759..b4054fd5b6f6 100644
--- a/include/linux/hypervisor.h
+++ b/include/linux/hypervisor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_HYPEVISOR_H
#define __LINUX_HYPEVISOR_H
diff --git a/include/linux/i2c-algo-pca.h b/include/linux/i2c-algo-pca.h
index a3c3ecd59f08..d03071732db4 100644
--- a/include/linux/i2c-algo-pca.h
+++ b/include/linux/i2c-algo-pca.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_I2C_ALGO_PCA_H
#define _LINUX_I2C_ALGO_PCA_H
diff --git a/include/linux/i2c-omap.h b/include/linux/i2c-omap.h
index babe0cf6d56b..3444265ee8ee 100644
--- a/include/linux/i2c-omap.h
+++ b/include/linux/i2c-omap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __I2C_OMAP_H__
#define __I2C_OMAP_H__
diff --git a/include/linux/i2c-pca-platform.h b/include/linux/i2c-pca-platform.h
index aba33759dec4..0e5f7c77d1d8 100644
--- a/include/linux/i2c-pca-platform.h
+++ b/include/linux/i2c-pca-platform.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef I2C_PCA9564_PLATFORM_H
#define I2C_PCA9564_PLATFORM_H
diff --git a/include/linux/i2c-pxa.h b/include/linux/i2c-pxa.h
index 41dcdfe7f625..a897e2b507b6 100644
--- a/include/linux/i2c-pxa.h
+++ b/include/linux/i2c-pxa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_I2C_ALGO_PXA_H
#define _LINUX_I2C_ALGO_PXA_H
diff --git a/include/linux/i7300_idle.h b/include/linux/i7300_idle.h
index 1587b7dec505..4dbe651f71f5 100644
--- a/include/linux/i7300_idle.h
+++ b/include/linux/i7300_idle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef I7300_IDLE_H
#define I7300_IDLE_H
diff --git a/include/linux/icmpv6.h b/include/linux/icmpv6.h
index 57086e9fc64c..a8f888976137 100644
--- a/include/linux/icmpv6.h
+++ b/include/linux/icmpv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ICMPV6_H
#define _LINUX_ICMPV6_H
diff --git a/include/linux/ide.h b/include/linux/ide.h
index dc152e4b7f73..70db3af04541 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IDE_H
#define _IDE_H
/*
diff --git a/include/linux/if_link.h b/include/linux/if_link.h
index 0b17c585b5cd..4c54611e03e9 100644
--- a/include/linux/if_link.h
+++ b/include/linux/if_link.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IF_LINK_H
#define _LINUX_IF_LINK_H
diff --git a/include/linux/if_ltalk.h b/include/linux/if_ltalk.h
index 81e434c50790..4cc1c0b77870 100644
--- a/include/linux/if_ltalk.h
+++ b/include/linux/if_ltalk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_LTALK_H
#define __LINUX_LTALK_H
diff --git a/include/linux/if_macvlan.h b/include/linux/if_macvlan.h
index c9ec1343d187..0e2c60efad2d 100644
--- a/include/linux/if_macvlan.h
+++ b/include/linux/if_macvlan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IF_MACVLAN_H
#define _LINUX_IF_MACVLAN_H
diff --git a/include/linux/if_phonet.h b/include/linux/if_phonet.h
index bbcdb0a767d8..3b5c60da2e2a 100644
--- a/include/linux/if_phonet.h
+++ b/include/linux/if_phonet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File: if_phonet.h
*
diff --git a/include/linux/if_tap.h b/include/linux/if_tap.h
index 4837157da0dc..13edf19ce9fb 100644
--- a/include/linux/if_tap.h
+++ b/include/linux/if_tap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IF_TAP_H_
#define _LINUX_IF_TAP_H_
@@ -73,8 +74,8 @@ void tap_del_queues(struct tap_dev *tap);
int tap_get_minor(dev_t major, struct tap_dev *tap);
void tap_free_minor(dev_t major, struct tap_dev *tap);
int tap_queue_resize(struct tap_dev *tap);
-int tap_create_cdev(struct cdev *tap_cdev,
- dev_t *tap_major, const char *device_name);
+int tap_create_cdev(struct cdev *tap_cdev, dev_t *tap_major,
+ const char *device_name, struct module *module);
void tap_destroy_cdev(dev_t major, struct cdev *tap_cdev);
#endif /*_LINUX_IF_TAP_H_*/
diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h
index 712710bc0580..26606523eca4 100644
--- a/include/linux/if_tunnel.h
+++ b/include/linux/if_tunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IF_TUNNEL_H_
#define _IF_TUNNEL_H_
diff --git a/include/linux/ihex.h b/include/linux/ihex.h
index 31d8629e75a1..75c194391869 100644
--- a/include/linux/ihex.h
+++ b/include/linux/ihex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Compact binary representation of ihex records. Some devices need their
* firmware loaded in strange orders rather than a single big blob, but
diff --git a/include/linux/iio/adc/ad_sigma_delta.h b/include/linux/iio/adc/ad_sigma_delta.h
index 5ba430cc9a87..1fc7abd28b0b 100644
--- a/include/linux/iio/adc/ad_sigma_delta.h
+++ b/include/linux/iio/adc/ad_sigma_delta.h
@@ -111,6 +111,9 @@ int ad_sd_write_reg(struct ad_sigma_delta *sigma_delta, unsigned int reg,
int ad_sd_read_reg(struct ad_sigma_delta *sigma_delta, unsigned int reg,
unsigned int size, unsigned int *val);
+int ad_sd_reset(struct ad_sigma_delta *sigma_delta,
+ unsigned int reset_length);
+
int ad_sigma_delta_single_conversion(struct iio_dev *indio_dev,
const struct iio_chan_spec *chan, int *val);
int ad_sd_calibrate_all(struct ad_sigma_delta *sigma_delta,
diff --git a/include/linux/iio/buffer_impl.h b/include/linux/iio/buffer_impl.h
index 8daba198fafa..b9e22b7e2f28 100644
--- a/include/linux/iio/buffer_impl.h
+++ b/include/linux/iio/buffer_impl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IIO_BUFFER_GENERIC_IMPL_H_
#define _IIO_BUFFER_GENERIC_IMPL_H_
#include <linux/sysfs.h>
diff --git a/include/linux/iio/dac/ad5421.h b/include/linux/iio/dac/ad5421.h
index 8fd8f057a890..d8ee9a7f8a6a 100644
--- a/include/linux/iio/dac/ad5421.h
+++ b/include/linux/iio/dac/ad5421.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IIO_DAC_AD5421_H__
#define __IIO_DAC_AD5421_H__
diff --git a/include/linux/iio/kfifo_buf.h b/include/linux/iio/kfifo_buf.h
index 027cfa9c3703..764659e01b68 100644
--- a/include/linux/iio/kfifo_buf.h
+++ b/include/linux/iio/kfifo_buf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_IIO_KFIFO_BUF_H__
#define __LINUX_IIO_KFIFO_BUF_H__
diff --git a/include/linux/iio/magnetometer/ak8975.h b/include/linux/iio/magnetometer/ak8975.h
index c8400959d197..ac9366f807cb 100644
--- a/include/linux/iio/magnetometer/ak8975.h
+++ b/include/linux/iio/magnetometer/ak8975.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IIO_MAGNETOMETER_AK8975_H__
#define __IIO_MAGNETOMETER_AK8975_H__
diff --git a/include/linux/iio/triggered_buffer.h b/include/linux/iio/triggered_buffer.h
index 30145616773d..238ad30ce166 100644
--- a/include/linux/iio/triggered_buffer.h
+++ b/include/linux/iio/triggered_buffer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IIO_TRIGGERED_BUFFER_H_
#define _LINUX_IIO_TRIGGERED_BUFFER_H_
diff --git a/include/linux/iio/triggered_event.h b/include/linux/iio/triggered_event.h
index 8fe8537085bb..13250fd99745 100644
--- a/include/linux/iio/triggered_event.h
+++ b/include/linux/iio/triggered_event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IIO_TRIGGERED_EVENT_H_
#define _LINUX_IIO_TRIGGERED_EVENT_H_
diff --git a/include/linux/inet_diag.h b/include/linux/inet_diag.h
index ee251c585854..39faaaf843e1 100644
--- a/include/linux/inet_diag.h
+++ b/include/linux/inet_diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INET_DIAG_H_
#define _INET_DIAG_H_ 1
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h
index fb3f809e34e4..5058f061cb2b 100644
--- a/include/linux/inetdevice.h
+++ b/include/linux/inetdevice.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_INETDEVICE_H
#define _LINUX_INETDEVICE_H
diff --git a/include/linux/init.h b/include/linux/init.h
index 94769d687cf0..f38b993edacb 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_INIT_H
#define _LINUX_INIT_H
diff --git a/include/linux/init_ohci1394_dma.h b/include/linux/init_ohci1394_dma.h
index 3c03a4bba5e4..228afca432ac 100644
--- a/include/linux/init_ohci1394_dma.h
+++ b/include/linux/init_ohci1394_dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
extern int __initdata init_ohci1394_dma_early;
extern void __init init_ohci1394_dma_on_all_controllers(void);
diff --git a/include/linux/init_task.h b/include/linux/init_task.h
index 3c07ace5b431..8062e6cc607c 100644
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX__INIT_TASK_H
#define _LINUX__INIT_TASK_H
diff --git a/include/linux/initrd.h b/include/linux/initrd.h
index bc67b767f9ce..84b423044088 100644
--- a/include/linux/initrd.h
+++ b/include/linux/initrd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#define INITRD_MINOR 250 /* shouldn't collide with /dev/ram* too soon ... */
diff --git a/include/linux/inotify.h b/include/linux/inotify.h
index 23aede0b5843..44f9ffe72c87 100644
--- a/include/linux/inotify.h
+++ b/include/linux/inotify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Inode based directory notification for Linux
*
diff --git a/include/linux/input.h b/include/linux/input.h
index a65e3b24fb18..7c7516eb7d76 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -234,6 +234,10 @@ struct input_dev {
#error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match"
#endif
+#if INPUT_PROP_MAX != INPUT_DEVICE_ID_PROP_MAX
+#error "INPUT_PROP_MAX and INPUT_DEVICE_ID_PROP_MAX do not match"
+#endif
+
#define INPUT_DEVICE_ID_MATCH_DEVICE \
(INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
@@ -469,6 +473,9 @@ int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke);
int input_set_keycode(struct input_dev *dev,
const struct input_keymap_entry *ke);
+bool input_match_device_id(const struct input_dev *dev,
+ const struct input_device_id *id);
+
void input_enable_softrepeat(struct input_dev *dev, int delay, int period);
extern struct class input_class;
@@ -529,6 +536,7 @@ int input_ff_event(struct input_dev *dev, unsigned int type, unsigned int code,
int input_ff_upload(struct input_dev *dev, struct ff_effect *effect, struct file *file);
int input_ff_erase(struct input_dev *dev, int effect_id, struct file *file);
+int input_ff_flush(struct input_dev *dev, struct file *file);
int input_ff_create_memless(struct input_dev *dev, void *data,
int (*play_effect)(struct input_dev *, void *, struct ff_effect *));
diff --git a/include/linux/input/cy8ctmg110_pdata.h b/include/linux/input/cy8ctmg110_pdata.h
index 09522cb59910..77582ae1745a 100644
--- a/include/linux/input/cy8ctmg110_pdata.h
+++ b/include/linux/input/cy8ctmg110_pdata.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CY8CTMG110_PDATA_H
#define _LINUX_CY8CTMG110_PDATA_H
diff --git a/include/linux/input/gp2ap002a00f.h b/include/linux/input/gp2ap002a00f.h
index aad2fd44a61a..3614a13a8297 100644
--- a/include/linux/input/gp2ap002a00f.h
+++ b/include/linux/input/gp2ap002a00f.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _GP2AP002A00F_H_
#define _GP2AP002A00F_H_
diff --git a/include/linux/input/gpio_tilt.h b/include/linux/input/gpio_tilt.h
index c1cc52d380e0..f9d932476a80 100644
--- a/include/linux/input/gpio_tilt.h
+++ b/include/linux/input/gpio_tilt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INPUT_GPIO_TILT_H
#define _INPUT_GPIO_TILT_H
diff --git a/include/linux/input/ili210x.h b/include/linux/input/ili210x.h
index a5471245a13c..b76e7c1404cd 100644
--- a/include/linux/input/ili210x.h
+++ b/include/linux/input/ili210x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ILI210X_H
#define _ILI210X_H
diff --git a/include/linux/input/matrix_keypad.h b/include/linux/input/matrix_keypad.h
index 6174733a57eb..9476768c3b90 100644
--- a/include/linux/input/matrix_keypad.h
+++ b/include/linux/input/matrix_keypad.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MATRIX_KEYPAD_H
#define _MATRIX_KEYPAD_H
diff --git a/include/linux/input/sh_keysc.h b/include/linux/input/sh_keysc.h
index 5d253cd93691..b3c4f3b6679c 100644
--- a/include/linux/input/sh_keysc.h
+++ b/include/linux/input/sh_keysc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SH_KEYSC_H__
#define __SH_KEYSC_H__
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 59ba11661b6e..baeb872283d9 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* interrupt.h */
#ifndef _LINUX_INTERRUPT_H
#define _LINUX_INTERRUPT_H
diff --git a/include/linux/interval_tree.h b/include/linux/interval_tree.h
index 202ee1283f4b..288c26f50732 100644
--- a/include/linux/interval_tree.h
+++ b/include/linux/interval_tree.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_INTERVAL_TREE_H
#define _LINUX_INTERVAL_TREE_H
diff --git a/include/linux/io-64-nonatomic-hi-lo.h b/include/linux/io-64-nonatomic-hi-lo.h
index defcc4644ce3..862d786a904f 100644
--- a/include/linux/io-64-nonatomic-hi-lo.h
+++ b/include/linux/io-64-nonatomic-hi-lo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IO_64_NONATOMIC_HI_LO_H_
#define _LINUX_IO_64_NONATOMIC_HI_LO_H_
diff --git a/include/linux/io-64-nonatomic-lo-hi.h b/include/linux/io-64-nonatomic-lo-hi.h
index 084461a4e5ab..d042e7bb5adb 100644
--- a/include/linux/io-64-nonatomic-lo-hi.h
+++ b/include/linux/io-64-nonatomic-lo-hi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IO_64_NONATOMIC_LO_HI_H_
#define _LINUX_IO_64_NONATOMIC_LO_HI_H_
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h
index df38db2ef45b..dba15ca8e60b 100644
--- a/include/linux/iocontext.h
+++ b/include/linux/iocontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef IOCONTEXT_H
#define IOCONTEXT_H
diff --git a/include/linux/iomap.h b/include/linux/iomap.h
index f64dc6ce5161..8a7c6d26b147 100644
--- a/include/linux/iomap.h
+++ b/include/linux/iomap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_IOMAP_H
#define LINUX_IOMAP_H 1
diff --git a/include/linux/iommu-common.h b/include/linux/iommu-common.h
index 376a27c9cc6a..802c90c79d1f 100644
--- a/include/linux/iommu-common.h
+++ b/include/linux/iommu-common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IOMMU_COMMON_H
#define _LINUX_IOMMU_COMMON_H
diff --git a/include/linux/iommu-helper.h b/include/linux/iommu-helper.h
index 86bdeffe43ad..cb9a9248c8c0 100644
--- a/include/linux/iommu-helper.h
+++ b/include/linux/iommu-helper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IOMMU_HELPER_H
#define _LINUX_IOMMU_HELPER_H
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index a7f2ac689d29..41b8c5757859 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -167,11 +167,11 @@ struct iommu_resv_region {
* @map: map a physically contiguous memory region to an iommu domain
* @unmap: unmap a physically contiguous memory region from an iommu domain
* @map_sg: map a scatter-gather list of physically contiguous memory chunks
+ * to an iommu domain
* @flush_tlb_all: Synchronously flush all hardware TLBs for this domain
* @tlb_range_add: Add a given iova range to the flush queue for this domain
* @tlb_sync: Flush all queued ranges from the hardware TLBs and empty flush
* queue
- * to an iommu domain
* @iova_to_phys: translate iova to physical address
* @add_device: add device to iommu grouping
* @remove_device: remove device from iommu grouping
diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index f5cf32e80041..83c8d6530f0f 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ioport.h Definitions of routines for detecting, reserving and
* allocating system resources.
diff --git a/include/linux/ioprio.h b/include/linux/ioprio.h
index 8c1239020d79..2cdd74809899 100644
--- a/include/linux/ioprio.h
+++ b/include/linux/ioprio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef IOPRIO_H
#define IOPRIO_H
diff --git a/include/linux/ipc.h b/include/linux/ipc.h
index 92a2ccff80c5..821b2f260992 100644
--- a/include/linux/ipc.h
+++ b/include/linux/ipc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IPC_H
#define _LINUX_IPC_H
diff --git a/include/linux/ipc_namespace.h b/include/linux/ipc_namespace.h
index 83f0bf7a587d..474812abe773 100644
--- a/include/linux/ipc_namespace.h
+++ b/include/linux/ipc_namespace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IPC_NAMESPACE_H__
#define __IPC_NAMESPACE_H__
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index ac2da4e11d5e..ea04ca024f0d 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IPV6_H
#define _IPV6_H
diff --git a/include/linux/irq.h b/include/linux/irq.h
index b99a784635ff..4536286cc4d2 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IRQ_H
#define _LINUX_IRQ_H
@@ -783,10 +784,7 @@ static inline struct cpumask *irq_data_get_affinity_mask(struct irq_data *d)
static inline
struct cpumask *irq_data_get_effective_affinity_mask(struct irq_data *d)
{
- if (!cpumask_empty(d->common->effective_affinity))
- return d->common->effective_affinity;
-
- return d->common->affinity;
+ return d->common->effective_affinity;
}
static inline void irq_data_update_effective_affinity(struct irq_data *d,
const struct cpumask *m)
@@ -1012,7 +1010,7 @@ void irq_gc_mask_clr_bit(struct irq_data *d);
void irq_gc_unmask_enable_reg(struct irq_data *d);
void irq_gc_ack_set_bit(struct irq_data *d);
void irq_gc_ack_clr_bit(struct irq_data *d);
-void irq_gc_mask_disable_reg_and_ack(struct irq_data *d);
+void irq_gc_mask_disable_and_ack_set(struct irq_data *d);
void irq_gc_eoi(struct irq_data *d);
int irq_gc_set_wake(struct irq_data *d, unsigned int on);
diff --git a/include/linux/irq_cpustat.h b/include/linux/irq_cpustat.h
index 77e4bac29287..4954948d1973 100644
--- a/include/linux/irq_cpustat.h
+++ b/include/linux/irq_cpustat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __irq_cpustat_h
#define __irq_cpustat_h
diff --git a/include/linux/irq_poll.h b/include/linux/irq_poll.h
index 3e8c1b8fb9be..16aaeccb65cb 100644
--- a/include/linux/irq_poll.h
+++ b/include/linux/irq_poll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef IRQ_POLL_H
#define IRQ_POLL_H
diff --git a/include/linux/irq_work.h b/include/linux/irq_work.h
index 47b9ebd4a74f..9270d73ea682 100644
--- a/include/linux/irq_work.h
+++ b/include/linux/irq_work.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IRQ_WORK_H
#define _LINUX_IRQ_WORK_H
diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h
index 1ea576c8126f..14b74f22d43c 100644
--- a/include/linux/irqchip/arm-gic-v3.h
+++ b/include/linux/irqchip/arm-gic-v3.h
@@ -372,6 +372,8 @@
#define GITS_BASER_ENTRY_SIZE_SHIFT (48)
#define GITS_BASER_ENTRY_SIZE(r) ((((r) >> GITS_BASER_ENTRY_SIZE_SHIFT) & 0x1f) + 1)
#define GITS_BASER_ENTRY_SIZE_MASK GENMASK_ULL(52, 48)
+#define GITS_BASER_PHYS_52_to_48(phys) \
+ (((phys) & GENMASK_ULL(47, 16)) | (((phys) >> 48) & 0xf) << 12)
#define GITS_BASER_SHAREABILITY_SHIFT (10)
#define GITS_BASER_InnerShareable \
GIC_BASER_SHAREABILITY(GITS_BASER, InnerShareable)
diff --git a/include/linux/irqchip/metag-ext.h b/include/linux/irqchip/metag-ext.h
index 697af0fe7c5a..d120496370b9 100644
--- a/include/linux/irqchip/metag-ext.h
+++ b/include/linux/irqchip/metag-ext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2012 Imagination Technologies
*/
diff --git a/include/linux/irqchip/metag.h b/include/linux/irqchip/metag.h
index 4ebdfb3101ab..0adcf449e4e4 100644
--- a/include/linux/irqchip/metag.h
+++ b/include/linux/irqchip/metag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2011 Imagination Technologies
*/
diff --git a/include/linux/irqchip/mips-gic.h b/include/linux/irqchip/mips-gic.h
deleted file mode 100644
index 2b0e56619e53..000000000000
--- a/include/linux/irqchip/mips-gic.h
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 2000, 07 MIPS Technologies, Inc.
- */
-#ifndef __LINUX_IRQCHIP_MIPS_GIC_H
-#define __LINUX_IRQCHIP_MIPS_GIC_H
-
-#include <linux/clocksource.h>
-#include <linux/ioport.h>
-
-#define GIC_MAX_INTRS 256
-
-/* Constants */
-#define GIC_POL_POS 1
-#define GIC_POL_NEG 0
-#define GIC_TRIG_EDGE 1
-#define GIC_TRIG_LEVEL 0
-#define GIC_TRIG_DUAL_ENABLE 1
-#define GIC_TRIG_DUAL_DISABLE 0
-
-#define MSK(n) ((1 << (n)) - 1)
-
-/* Accessors */
-#define GIC_REG(segment, offset) (segment##_##SECTION_OFS + offset##_##OFS)
-
-/* GIC Address Space */
-#define SHARED_SECTION_OFS 0x0000
-#define SHARED_SECTION_SIZE 0x8000
-#define VPE_LOCAL_SECTION_OFS 0x8000
-#define VPE_LOCAL_SECTION_SIZE 0x4000
-#define VPE_OTHER_SECTION_OFS 0xc000
-#define VPE_OTHER_SECTION_SIZE 0x4000
-#define USM_VISIBLE_SECTION_OFS 0x10000
-#define USM_VISIBLE_SECTION_SIZE 0x10000
-
-/* Register Map for Shared Section */
-
-#define GIC_SH_CONFIG_OFS 0x0000
-
-/* Shared Global Counter */
-#define GIC_SH_COUNTER_31_00_OFS 0x0010
-/* 64-bit counter register for CM3 */
-#define GIC_SH_COUNTER_OFS GIC_SH_COUNTER_31_00_OFS
-#define GIC_SH_COUNTER_63_32_OFS 0x0014
-#define GIC_SH_REVISIONID_OFS 0x0020
-
-/* Convert an interrupt number to a byte offset/bit for multi-word registers */
-#define GIC_INTR_OFS(intr) ({ \
- unsigned bits = mips_cm_is64 ? 64 : 32; \
- unsigned reg_idx = (intr) / bits; \
- unsigned reg_width = bits / 8; \
- \
- reg_idx * reg_width; \
-})
-#define GIC_INTR_BIT(intr) ((intr) % (mips_cm_is64 ? 64 : 32))
-
-/* Polarity : Reset Value is always 0 */
-#define GIC_SH_SET_POLARITY_OFS 0x0100
-
-/* Triggering : Reset Value is always 0 */
-#define GIC_SH_SET_TRIGGER_OFS 0x0180
-
-/* Dual edge triggering : Reset Value is always 0 */
-#define GIC_SH_SET_DUAL_OFS 0x0200
-
-/* Set/Clear corresponding bit in Edge Detect Register */
-#define GIC_SH_WEDGE_OFS 0x0280
-
-/* Mask manipulation */
-#define GIC_SH_RMASK_OFS 0x0300
-#define GIC_SH_SMASK_OFS 0x0380
-
-/* Global Interrupt Mask Register (RO) - Bit Set == Interrupt enabled */
-#define GIC_SH_MASK_OFS 0x0400
-
-/* Pending Global Interrupts (RO) */
-#define GIC_SH_PEND_OFS 0x0480
-
-/* Maps Interrupt X to a Pin */
-#define GIC_SH_INTR_MAP_TO_PIN_BASE_OFS 0x0500
-#define GIC_SH_MAP_TO_PIN(intr) (4 * (intr))
-
-/* Maps Interrupt X to a VPE */
-#define GIC_SH_INTR_MAP_TO_VPE_BASE_OFS 0x2000
-#define GIC_SH_MAP_TO_VPE_REG_OFF(intr, vpe) \
- ((32 * (intr)) + (((vpe) / 32) * 4))
-#define GIC_SH_MAP_TO_VPE_REG_BIT(vpe) (1 << ((vpe) % 32))
-
-/* Register Map for Local Section */
-#define GIC_VPE_CTL_OFS 0x0000
-#define GIC_VPE_PEND_OFS 0x0004
-#define GIC_VPE_MASK_OFS 0x0008
-#define GIC_VPE_RMASK_OFS 0x000c
-#define GIC_VPE_SMASK_OFS 0x0010
-#define GIC_VPE_WD_MAP_OFS 0x0040
-#define GIC_VPE_COMPARE_MAP_OFS 0x0044
-#define GIC_VPE_TIMER_MAP_OFS 0x0048
-#define GIC_VPE_FDC_MAP_OFS 0x004c
-#define GIC_VPE_PERFCTR_MAP_OFS 0x0050
-#define GIC_VPE_SWINT0_MAP_OFS 0x0054
-#define GIC_VPE_SWINT1_MAP_OFS 0x0058
-#define GIC_VPE_OTHER_ADDR_OFS 0x0080
-#define GIC_VP_IDENT_OFS 0x0088
-#define GIC_VPE_WD_CONFIG0_OFS 0x0090
-#define GIC_VPE_WD_COUNT0_OFS 0x0094
-#define GIC_VPE_WD_INITIAL0_OFS 0x0098
-#define GIC_VPE_COMPARE_LO_OFS 0x00a0
-/* 64-bit Compare register on CM3 */
-#define GIC_VPE_COMPARE_OFS GIC_VPE_COMPARE_LO_OFS
-#define GIC_VPE_COMPARE_HI_OFS 0x00a4
-
-#define GIC_VPE_EIC_SHADOW_SET_BASE_OFS 0x0100
-#define GIC_VPE_EIC_SS(intr) (4 * (intr))
-
-#define GIC_VPE_EIC_VEC_BASE_OFS 0x0800
-#define GIC_VPE_EIC_VEC(intr) (4 * (intr))
-
-#define GIC_VPE_TENABLE_NMI_OFS 0x1000
-#define GIC_VPE_TENABLE_YQ_OFS 0x1004
-#define GIC_VPE_TENABLE_INT_31_0_OFS 0x1080
-#define GIC_VPE_TENABLE_INT_63_32_OFS 0x1084
-
-/* User Mode Visible Section Register Map */
-#define GIC_UMV_SH_COUNTER_31_00_OFS 0x0000
-#define GIC_UMV_SH_COUNTER_63_32_OFS 0x0004
-
-/* Masks */
-#define GIC_SH_CONFIG_COUNTSTOP_SHF 28
-#define GIC_SH_CONFIG_COUNTSTOP_MSK (MSK(1) << GIC_SH_CONFIG_COUNTSTOP_SHF)
-
-#define GIC_SH_CONFIG_COUNTBITS_SHF 24
-#define GIC_SH_CONFIG_COUNTBITS_MSK (MSK(4) << GIC_SH_CONFIG_COUNTBITS_SHF)
-
-#define GIC_SH_CONFIG_NUMINTRS_SHF 16
-#define GIC_SH_CONFIG_NUMINTRS_MSK (MSK(8) << GIC_SH_CONFIG_NUMINTRS_SHF)
-
-#define GIC_SH_CONFIG_NUMVPES_SHF 0
-#define GIC_SH_CONFIG_NUMVPES_MSK (MSK(8) << GIC_SH_CONFIG_NUMVPES_SHF)
-
-#define GIC_SH_WEDGE_SET(intr) ((intr) | (0x1 << 31))
-#define GIC_SH_WEDGE_CLR(intr) ((intr) & ~(0x1 << 31))
-
-#define GIC_MAP_TO_PIN_SHF 31
-#define GIC_MAP_TO_PIN_MSK (MSK(1) << GIC_MAP_TO_PIN_SHF)
-#define GIC_MAP_TO_NMI_SHF 30
-#define GIC_MAP_TO_NMI_MSK (MSK(1) << GIC_MAP_TO_NMI_SHF)
-#define GIC_MAP_TO_YQ_SHF 29
-#define GIC_MAP_TO_YQ_MSK (MSK(1) << GIC_MAP_TO_YQ_SHF)
-#define GIC_MAP_SHF 0
-#define GIC_MAP_MSK (MSK(6) << GIC_MAP_SHF)
-
-/* GIC_VPE_CTL Masks */
-#define GIC_VPE_CTL_FDC_RTBL_SHF 4
-#define GIC_VPE_CTL_FDC_RTBL_MSK (MSK(1) << GIC_VPE_CTL_FDC_RTBL_SHF)
-#define GIC_VPE_CTL_SWINT_RTBL_SHF 3
-#define GIC_VPE_CTL_SWINT_RTBL_MSK (MSK(1) << GIC_VPE_CTL_SWINT_RTBL_SHF)
-#define GIC_VPE_CTL_PERFCNT_RTBL_SHF 2
-#define GIC_VPE_CTL_PERFCNT_RTBL_MSK (MSK(1) << GIC_VPE_CTL_PERFCNT_RTBL_SHF)
-#define GIC_VPE_CTL_TIMER_RTBL_SHF 1
-#define GIC_VPE_CTL_TIMER_RTBL_MSK (MSK(1) << GIC_VPE_CTL_TIMER_RTBL_SHF)
-#define GIC_VPE_CTL_EIC_MODE_SHF 0
-#define GIC_VPE_CTL_EIC_MODE_MSK (MSK(1) << GIC_VPE_CTL_EIC_MODE_SHF)
-
-/* GIC_VPE_PEND Masks */
-#define GIC_VPE_PEND_WD_SHF 0
-#define GIC_VPE_PEND_WD_MSK (MSK(1) << GIC_VPE_PEND_WD_SHF)
-#define GIC_VPE_PEND_CMP_SHF 1
-#define GIC_VPE_PEND_CMP_MSK (MSK(1) << GIC_VPE_PEND_CMP_SHF)
-#define GIC_VPE_PEND_TIMER_SHF 2
-#define GIC_VPE_PEND_TIMER_MSK (MSK(1) << GIC_VPE_PEND_TIMER_SHF)
-#define GIC_VPE_PEND_PERFCOUNT_SHF 3
-#define GIC_VPE_PEND_PERFCOUNT_MSK (MSK(1) << GIC_VPE_PEND_PERFCOUNT_SHF)
-#define GIC_VPE_PEND_SWINT0_SHF 4
-#define GIC_VPE_PEND_SWINT0_MSK (MSK(1) << GIC_VPE_PEND_SWINT0_SHF)
-#define GIC_VPE_PEND_SWINT1_SHF 5
-#define GIC_VPE_PEND_SWINT1_MSK (MSK(1) << GIC_VPE_PEND_SWINT1_SHF)
-#define GIC_VPE_PEND_FDC_SHF 6
-#define GIC_VPE_PEND_FDC_MSK (MSK(1) << GIC_VPE_PEND_FDC_SHF)
-
-/* GIC_VPE_RMASK Masks */
-#define GIC_VPE_RMASK_WD_SHF 0
-#define GIC_VPE_RMASK_WD_MSK (MSK(1) << GIC_VPE_RMASK_WD_SHF)
-#define GIC_VPE_RMASK_CMP_SHF 1
-#define GIC_VPE_RMASK_CMP_MSK (MSK(1) << GIC_VPE_RMASK_CMP_SHF)
-#define GIC_VPE_RMASK_TIMER_SHF 2
-#define GIC_VPE_RMASK_TIMER_MSK (MSK(1) << GIC_VPE_RMASK_TIMER_SHF)
-#define GIC_VPE_RMASK_PERFCNT_SHF 3
-#define GIC_VPE_RMASK_PERFCNT_MSK (MSK(1) << GIC_VPE_RMASK_PERFCNT_SHF)
-#define GIC_VPE_RMASK_SWINT0_SHF 4
-#define GIC_VPE_RMASK_SWINT0_MSK (MSK(1) << GIC_VPE_RMASK_SWINT0_SHF)
-#define GIC_VPE_RMASK_SWINT1_SHF 5
-#define GIC_VPE_RMASK_SWINT1_MSK (MSK(1) << GIC_VPE_RMASK_SWINT1_SHF)
-#define GIC_VPE_RMASK_FDC_SHF 6
-#define GIC_VPE_RMASK_FDC_MSK (MSK(1) << GIC_VPE_RMASK_FDC_SHF)
-
-/* GIC_VPE_SMASK Masks */
-#define GIC_VPE_SMASK_WD_SHF 0
-#define GIC_VPE_SMASK_WD_MSK (MSK(1) << GIC_VPE_SMASK_WD_SHF)
-#define GIC_VPE_SMASK_CMP_SHF 1
-#define GIC_VPE_SMASK_CMP_MSK (MSK(1) << GIC_VPE_SMASK_CMP_SHF)
-#define GIC_VPE_SMASK_TIMER_SHF 2
-#define GIC_VPE_SMASK_TIMER_MSK (MSK(1) << GIC_VPE_SMASK_TIMER_SHF)
-#define GIC_VPE_SMASK_PERFCNT_SHF 3
-#define GIC_VPE_SMASK_PERFCNT_MSK (MSK(1) << GIC_VPE_SMASK_PERFCNT_SHF)
-#define GIC_VPE_SMASK_SWINT0_SHF 4
-#define GIC_VPE_SMASK_SWINT0_MSK (MSK(1) << GIC_VPE_SMASK_SWINT0_SHF)
-#define GIC_VPE_SMASK_SWINT1_SHF 5
-#define GIC_VPE_SMASK_SWINT1_MSK (MSK(1) << GIC_VPE_SMASK_SWINT1_SHF)
-#define GIC_VPE_SMASK_FDC_SHF 6
-#define GIC_VPE_SMASK_FDC_MSK (MSK(1) << GIC_VPE_SMASK_FDC_SHF)
-
-/* GIC_VP_IDENT fields */
-#define GIC_VP_IDENT_VCNUM_SHF 0
-#define GIC_VP_IDENT_VCNUM_MSK (MSK(6) << GIC_VP_IDENT_VCNUM_SHF)
-
-/* GIC nomenclature for Core Interrupt Pins. */
-#define GIC_CPU_INT0 0 /* Core Interrupt 2 */
-#define GIC_CPU_INT1 1 /* . */
-#define GIC_CPU_INT2 2 /* . */
-#define GIC_CPU_INT3 3 /* . */
-#define GIC_CPU_INT4 4 /* . */
-#define GIC_CPU_INT5 5 /* Core Interrupt 7 */
-
-/* Add 2 to convert GIC CPU pin to core interrupt */
-#define GIC_CPU_PIN_OFFSET 2
-
-/* Add 2 to convert non-EIC hardware interrupt to EIC vector number. */
-#define GIC_CPU_TO_VEC_OFFSET 2
-
-/* Mapped interrupt to pin X, then GIC will generate the vector (X+1). */
-#define GIC_PIN_TO_VEC_OFFSET 1
-
-/* Local GIC interrupts. */
-#define GIC_LOCAL_INT_WD 0 /* GIC watchdog */
-#define GIC_LOCAL_INT_COMPARE 1 /* GIC count and compare timer */
-#define GIC_LOCAL_INT_TIMER 2 /* CPU timer interrupt */
-#define GIC_LOCAL_INT_PERFCTR 3 /* CPU performance counter */
-#define GIC_LOCAL_INT_SWINT0 4 /* CPU software interrupt 0 */
-#define GIC_LOCAL_INT_SWINT1 5 /* CPU software interrupt 1 */
-#define GIC_LOCAL_INT_FDC 6 /* CPU fast debug channel */
-#define GIC_NUM_LOCAL_INTRS 7
-
-/* Convert between local/shared IRQ number and GIC HW IRQ number. */
-#define GIC_LOCAL_HWIRQ_BASE 0
-#define GIC_LOCAL_TO_HWIRQ(x) (GIC_LOCAL_HWIRQ_BASE + (x))
-#define GIC_HWIRQ_TO_LOCAL(x) ((x) - GIC_LOCAL_HWIRQ_BASE)
-#define GIC_SHARED_HWIRQ_BASE GIC_NUM_LOCAL_INTRS
-#define GIC_SHARED_TO_HWIRQ(x) (GIC_SHARED_HWIRQ_BASE + (x))
-#define GIC_HWIRQ_TO_SHARED(x) ((x) - GIC_SHARED_HWIRQ_BASE)
-
-#ifdef CONFIG_MIPS_GIC
-
-extern unsigned int gic_present;
-
-extern void gic_init(unsigned long gic_base_addr,
- unsigned long gic_addrspace_size, unsigned int cpu_vec,
- unsigned int irqbase);
-extern u64 gic_read_count(void);
-extern unsigned int gic_get_count_width(void);
-extern u64 gic_read_compare(void);
-extern void gic_write_compare(u64 cnt);
-extern void gic_write_cpu_compare(u64 cnt, int cpu);
-extern void gic_start_count(void);
-extern void gic_stop_count(void);
-extern int gic_get_c0_compare_int(void);
-extern int gic_get_c0_perfcount_int(void);
-extern int gic_get_c0_fdc_int(void);
-extern int gic_get_usm_range(struct resource *gic_usm_res);
-
-#else /* CONFIG_MIPS_GIC */
-
-#define gic_present 0
-
-static inline int gic_get_usm_range(struct resource *gic_usm_res)
-{
- /* Shouldn't be called. */
- return -1;
-}
-
-#endif /* CONFIG_MIPS_GIC */
-
-/**
- * gic_read_local_vp_id() - read the local VPs VCNUM
- *
- * Read the VCNUM of the local VP from the GIC_VP_IDENT register and
- * return it to the caller. This ID should be used to refer to the VP
- * via the GICs VP-other region, or when calculating an offset to a
- * bit representing the VP in interrupt masks.
- *
- * Return: The VCNUM value for the local VP.
- */
-extern unsigned gic_read_local_vp_id(void);
-
-#endif /* __LINUX_IRQCHIP_MIPS_GIC_H */
diff --git a/include/linux/irqchip/mmp.h b/include/linux/irqchip/mmp.h
index c78a8921185d..cb8455c87c8a 100644
--- a/include/linux/irqchip/mmp.h
+++ b/include/linux/irqchip/mmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IRQCHIP_MMP_H
#define __IRQCHIP_MMP_H
diff --git a/include/linux/irqchip/versatile-fpga.h b/include/linux/irqchip/versatile-fpga.h
index 1fac9651d3ca..a978fc8c7996 100644
--- a/include/linux/irqchip/versatile-fpga.h
+++ b/include/linux/irqchip/versatile-fpga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef PLAT_FPGA_IRQ_H
#define PLAT_FPGA_IRQ_H
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index 3e90a094798d..b6084898d330 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IRQDESC_H
#define _LINUX_IRQDESC_H
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 81e4889ca6dd..b1037dfc47e4 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* irq_domain - IRQ translation domains
*
diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
index 5fdd93bb9300..46cb57d5eb13 100644
--- a/include/linux/irqflags.h
+++ b/include/linux/irqflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/irqflags.h
*
diff --git a/include/linux/irqhandler.h b/include/linux/irqhandler.h
index 661bed0ed1f3..1e6f4e7123d6 100644
--- a/include/linux/irqhandler.h
+++ b/include/linux/irqhandler.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IRQHANDLER_H
#define _LINUX_IRQHANDLER_H
diff --git a/include/linux/irqnr.h b/include/linux/irqnr.h
index 9669bf9d4f48..3496baa0b07f 100644
--- a/include/linux/irqnr.h
+++ b/include/linux/irqnr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IRQNR_H
#define _LINUX_IRQNR_H
diff --git a/include/linux/irqreturn.h b/include/linux/irqreturn.h
index eb1bdcf95f2e..bd4c066ad39b 100644
--- a/include/linux/irqreturn.h
+++ b/include/linux/irqreturn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IRQRETURN_H
#define _LINUX_IRQRETURN_H
diff --git a/include/linux/isa.h b/include/linux/isa.h
index f2d0258414cf..41336da0f4e7 100644
--- a/include/linux/isa.h
+++ b/include/linux/isa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ISA bus.
*/
diff --git a/include/linux/isicom.h b/include/linux/isicom.h
index b92e05650639..7de6822d7b1a 100644
--- a/include/linux/isicom.h
+++ b/include/linux/isicom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ISICOM_H
#define _LINUX_ISICOM_H
diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
index 734377ad42e9..9385aa57497b 100644
--- a/include/linux/jiffies.h
+++ b/include/linux/jiffies.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_JIFFIES_H
#define _LINUX_JIFFIES_H
diff --git a/include/linux/journal-head.h b/include/linux/journal-head.h
index 98cd41bb39c8..9fb870524314 100644
--- a/include/linux/journal-head.h
+++ b/include/linux/journal-head.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/journal-head.h
*
diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h
index cd5861651b17..3b7675bcca64 100644
--- a/include/linux/jump_label.h
+++ b/include/linux/jump_label.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_JUMP_LABEL_H
#define _LINUX_JUMP_LABEL_H
diff --git a/include/linux/jump_label_ratelimit.h b/include/linux/jump_label_ratelimit.h
index 23da3af459fe..fc13ff289903 100644
--- a/include/linux/jump_label_ratelimit.h
+++ b/include/linux/jump_label_ratelimit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_JUMP_LABEL_RATELIMIT_H
#define _LINUX_JUMP_LABEL_RATELIMIT_H
diff --git a/include/linux/jz4740-adc.h b/include/linux/jz4740-adc.h
index 8184578fbfa4..19d995c8bf06 100644
--- a/include/linux/jz4740-adc.h
+++ b/include/linux/jz4740-adc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_JZ4740_ADC
#define __LINUX_JZ4740_ADC
diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h
index 6883e197acb9..11dd93e42580 100644
--- a/include/linux/kallsyms.h
+++ b/include/linux/kallsyms.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Rewritten and vastly simplified by Rusty Russell for in-kernel
* module loader:
* Copyright 2002 Rusty Russell <rusty@rustcorp.com.au> IBM Corporation
diff --git a/include/linux/kasan-checks.h b/include/linux/kasan-checks.h
index 41960fecf783..d314150658a4 100644
--- a/include/linux/kasan-checks.h
+++ b/include/linux/kasan-checks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KASAN_CHECKS_H
#define _LINUX_KASAN_CHECKS_H
diff --git a/include/linux/kasan.h b/include/linux/kasan.h
index a5c7046f26b4..5017269e3f04 100644
--- a/include/linux/kasan.h
+++ b/include/linux/kasan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KASAN_H
#define _LINUX_KASAN_H
diff --git a/include/linux/kbd_diacr.h b/include/linux/kbd_diacr.h
index 7274ec68c246..738c7340c151 100644
--- a/include/linux/kbd_diacr.h
+++ b/include/linux/kbd_diacr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _DIACR_H
#define _DIACR_H
#include <linux/kd.h>
diff --git a/include/linux/kbd_kern.h b/include/linux/kbd_kern.h
index cbfb171bbcba..bb2246c8ec13 100644
--- a/include/linux/kbd_kern.h
+++ b/include/linux/kbd_kern.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _KBD_KERN_H
#define _KBD_KERN_H
diff --git a/include/linux/kbuild.h b/include/linux/kbuild.h
index 4e80f3a9ad58..e7be517aaaf6 100644
--- a/include/linux/kbuild.h
+++ b/include/linux/kbuild.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_KBUILD_H
#define __LINUX_KBUILD_H
diff --git a/include/linux/kconfig.h b/include/linux/kconfig.h
index 4d748603e818..fec5076eda91 100644
--- a/include/linux/kconfig.h
+++ b/include/linux/kconfig.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_KCONFIG_H
#define __LINUX_KCONFIG_H
diff --git a/include/linux/kcore.h b/include/linux/kcore.h
index d92762286645..7ff25a808fef 100644
--- a/include/linux/kcore.h
+++ b/include/linux/kcore.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* /proc/kcore definitions
*/
diff --git a/include/linux/kcov.h b/include/linux/kcov.h
index 2883ac98c280..f5d8ce4f4f86 100644
--- a/include/linux/kcov.h
+++ b/include/linux/kcov.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KCOV_H
#define _LINUX_KCOV_H
diff --git a/include/linux/kd.h b/include/linux/kd.h
index 25bd17fad239..b130a18f860f 100644
--- a/include/linux/kd.h
+++ b/include/linux/kd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KD_H
#define _LINUX_KD_H
diff --git a/include/linux/kdebug.h b/include/linux/kdebug.h
index ed815090b3bc..fd311565fabf 100644
--- a/include/linux/kdebug.h
+++ b/include/linux/kdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KDEBUG_H
#define _LINUX_KDEBUG_H
diff --git a/include/linux/kdev_t.h b/include/linux/kdev_t.h
index 8e9e288b08c1..85b5151911cf 100644
--- a/include/linux/kdev_t.h
+++ b/include/linux/kdev_t.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KDEV_T_H
#define _LINUX_KDEV_T_H
diff --git a/include/linux/kern_levels.h b/include/linux/kern_levels.h
index f282d4e87258..d237fe854ad9 100644
--- a/include/linux/kern_levels.h
+++ b/include/linux/kern_levels.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __KERN_LEVELS_H__
#define __KERN_LEVELS_H__
diff --git a/include/linux/kernel-page-flags.h b/include/linux/kernel-page-flags.h
index f65ce09784f1..abd20ef93c98 100644
--- a/include/linux/kernel-page-flags.h
+++ b/include/linux/kernel-page-flags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_KERNEL_PAGE_FLAGS_H
#define LINUX_KERNEL_PAGE_FLAGS_H
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 0ad4c3044cf9..4b484ab9e163 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KERNEL_H
#define _LINUX_KERNEL_H
@@ -44,6 +45,12 @@
#define STACK_MAGIC 0xdeadbeef
+/**
+ * REPEAT_BYTE - repeat the value @x multiple times as an unsigned long value
+ * @x: value to repeat
+ *
+ * NOTE: @x is not checked for > 0xff; larger values produce odd results.
+ */
#define REPEAT_BYTE(x) ((~0ul / 0xff) * (x))
/* @a is a power of 2 value */
@@ -57,6 +64,10 @@
#define READ 0
#define WRITE 1
+/**
+ * ARRAY_SIZE - get the number of elements in array @arr
+ * @arr: array to be sized
+ */
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
#define u64_to_user_ptr(x) ( \
@@ -76,7 +87,15 @@
#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
#define round_down(x, y) ((x) & ~__round_mask(x, y))
+/**
+ * FIELD_SIZEOF - get the size of a struct's field
+ * @t: the target struct
+ * @f: the target struct's field
+ * Return: the size of @f in the struct definition without having a
+ * declared instance of @t.
+ */
#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
+
#define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP
#define DIV_ROUND_DOWN_ULL(ll, d) \
@@ -107,7 +126,7 @@
/*
* Divide positive or negative dividend by positive or negative divisor
* and round to closest integer. Result is undefined for negative
- * divisors if he dividend variable type is unsigned and for negative
+ * divisors if the dividend variable type is unsigned and for negative
* dividends if the divisor variable type is unsigned.
*/
#define DIV_ROUND_CLOSEST(x, divisor)( \
@@ -247,13 +266,13 @@ extern int _cond_resched(void);
* @ep_ro: right open interval endpoint
*
* Perform a "reciprocal multiplication" in order to "scale" a value into
- * range [0, ep_ro), where the upper interval endpoint is right-open.
+ * range [0, @ep_ro), where the upper interval endpoint is right-open.
* This is useful, e.g. for accessing a index of an array containing
- * ep_ro elements, for example. Think of it as sort of modulus, only that
+ * @ep_ro elements, for example. Think of it as sort of modulus, only that
* the result isn't that of modulo. ;) Note that if initial input is a
* small value, then result will return 0.
*
- * Return: a result based on val in interval [0, ep_ro).
+ * Return: a result based on @val in interval [0, @ep_ro).
*/
static inline u32 reciprocal_scale(u32 val, u32 ep_ro)
{
@@ -618,8 +637,8 @@ do { \
* trace_printk - printf formatting in the ftrace buffer
* @fmt: the printf format for printing
*
- * Note: __trace_printk is an internal function for trace_printk and
- * the @ip is passed in via the trace_printk macro.
+ * Note: __trace_printk is an internal function for trace_printk() and
+ * the @ip is passed in via the trace_printk() macro.
*
* This function allows a kernel developer to debug fast path sections
* that printk is not appropriate for. By scattering in various
@@ -629,7 +648,7 @@ do { \
* This is intended as a debugging tool for the developer only.
* Please refrain from leaving trace_printks scattered around in
* your code. (Extra memory is used for special buffers that are
- * allocated when trace_printk() is used)
+ * allocated when trace_printk() is used.)
*
* A little optization trick is done here. If there's only one
* argument, there's no need to scan the string for printf formats.
@@ -681,7 +700,7 @@ int __trace_printk(unsigned long ip, const char *fmt, ...);
* the @ip is passed in via the trace_puts macro.
*
* This is similar to trace_printk() but is made for those really fast
- * paths that a developer wants the least amount of "Heisenbug" affects,
+ * paths that a developer wants the least amount of "Heisenbug" effects,
* where the processing of the print format is still too much.
*
* This function allows a kernel developer to debug fast path sections
@@ -692,7 +711,7 @@ int __trace_printk(unsigned long ip, const char *fmt, ...);
* This is intended as a debugging tool for the developer only.
* Please refrain from leaving trace_puts scattered around in
* your code. (Extra memory is used for special buffers that are
- * allocated when trace_puts() is used)
+ * allocated when trace_puts() is used.)
*
* Returns: 0 if nothing was written, positive # if string was.
* (1 when __trace_bputs is used, strlen(str) when __trace_puts is used)
@@ -771,6 +790,12 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
t2 min2 = (y); \
(void) (&min1 == &min2); \
min1 < min2 ? min1 : min2; })
+
+/**
+ * min - return minimum of two values of the same or compatible types
+ * @x: first value
+ * @y: second value
+ */
#define min(x, y) \
__min(typeof(x), typeof(y), \
__UNIQUE_ID(min1_), __UNIQUE_ID(min2_), \
@@ -781,12 +806,31 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
t2 max2 = (y); \
(void) (&max1 == &max2); \
max1 > max2 ? max1 : max2; })
+
+/**
+ * max - return maximum of two values of the same or compatible types
+ * @x: first value
+ * @y: second value
+ */
#define max(x, y) \
__max(typeof(x), typeof(y), \
__UNIQUE_ID(max1_), __UNIQUE_ID(max2_), \
x, y)
+/**
+ * min3 - return minimum of three values
+ * @x: first value
+ * @y: second value
+ * @z: third value
+ */
#define min3(x, y, z) min((typeof(x))min(x, y), z)
+
+/**
+ * max3 - return maximum of three values
+ * @x: first value
+ * @y: second value
+ * @z: third value
+ */
#define max3(x, y, z) max((typeof(x))max(x, y), z)
/**
@@ -805,8 +849,8 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
* @lo: lowest allowable value
* @hi: highest allowable value
*
- * This macro does strict typechecking of lo/hi to make sure they are of the
- * same type as val. See the unnecessary pointer comparisons.
+ * This macro does strict typechecking of @lo/@hi to make sure they are of the
+ * same type as @val. See the unnecessary pointer comparisons.
*/
#define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi)
@@ -816,11 +860,24 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
*
* Or not use min/max/clamp at all, of course.
*/
+
+/**
+ * min_t - return minimum of two values, using the specified type
+ * @type: data type to use
+ * @x: first value
+ * @y: second value
+ */
#define min_t(type, x, y) \
__min(type, type, \
__UNIQUE_ID(min1_), __UNIQUE_ID(min2_), \
x, y)
+/**
+ * max_t - return maximum of two values, using the specified type
+ * @type: data type to use
+ * @x: first value
+ * @y: second value
+ */
#define max_t(type, x, y) \
__max(type, type, \
__UNIQUE_ID(min1_), __UNIQUE_ID(min2_), \
@@ -834,7 +891,7 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
* @hi: maximum allowable value
*
* This macro does no typechecking and uses temporary variables of type
- * 'type' to make all the comparisons.
+ * @type to make all the comparisons.
*/
#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
@@ -845,15 +902,17 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
* @hi: maximum allowable value
*
* This macro does no typechecking and uses temporary variables of whatever
- * type the input argument 'val' is. This is useful when val is an unsigned
- * type and min and max are literals that will otherwise be assigned a signed
+ * type the input argument @val is. This is useful when @val is an unsigned
+ * type and @lo and @hi are literals that will otherwise be assigned a signed
* integer type.
*/
#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
-/*
- * swap - swap value of @a and @b
+/**
+ * swap - swap values of @a and @b
+ * @a: first value
+ * @b: second value
*/
#define swap(a, b) \
do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
diff --git a/include/linux/kernel_stat.h b/include/linux/kernel_stat.h
index 66be8b6beceb..7ee2bb43b251 100644
--- a/include/linux/kernel_stat.h
+++ b/include/linux/kernel_stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KERNEL_STAT_H
#define _LINUX_KERNEL_STAT_H
diff --git a/include/linux/kernelcapi.h b/include/linux/kernelcapi.h
index e985ba679c4a..075fab5f92e1 100644
--- a/include/linux/kernelcapi.h
+++ b/include/linux/kernelcapi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* $Id: kernelcapi.h,v 1.8.6.2 2001/02/07 11:31:31 kai Exp $
*
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index 2b7590f5483a..1c08c925cefb 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_KEXEC_H
#define LINUX_KEXEC_H
diff --git a/include/linux/key.h b/include/linux/key.h
index 044114185120..8a15cabe928d 100644
--- a/include/linux/key.h
+++ b/include/linux/key.h
@@ -138,6 +138,11 @@ struct key_restriction {
struct key_type *keytype;
};
+enum key_state {
+ KEY_IS_UNINSTANTIATED,
+ KEY_IS_POSITIVE, /* Positively instantiated */
+};
+
/*****************************************************************************/
/*
* authentication token / access credential / keyring
@@ -169,6 +174,7 @@ struct key {
* - may not match RCU dereferenced payload
* - payload should contain own length
*/
+ short state; /* Key state (+) or rejection error (-) */
#ifdef KEY_DEBUGGING
unsigned magic;
@@ -176,17 +182,16 @@ struct key {
#endif
unsigned long flags; /* status flags (change with bitops) */
-#define KEY_FLAG_INSTANTIATED 0 /* set if key has been instantiated */
-#define KEY_FLAG_DEAD 1 /* set if key type has been deleted */
-#define KEY_FLAG_REVOKED 2 /* set if key had been revoked */
-#define KEY_FLAG_IN_QUOTA 3 /* set if key consumes quota */
-#define KEY_FLAG_USER_CONSTRUCT 4 /* set if key is being constructed in userspace */
-#define KEY_FLAG_NEGATIVE 5 /* set if key is negative */
-#define KEY_FLAG_ROOT_CAN_CLEAR 6 /* set if key can be cleared by root without permission */
-#define KEY_FLAG_INVALIDATED 7 /* set if key has been invalidated */
-#define KEY_FLAG_BUILTIN 8 /* set if key is built in to the kernel */
-#define KEY_FLAG_ROOT_CAN_INVAL 9 /* set if key can be invalidated by root without permission */
-#define KEY_FLAG_KEEP 10 /* set if key should not be removed */
+#define KEY_FLAG_DEAD 0 /* set if key type has been deleted */
+#define KEY_FLAG_REVOKED 1 /* set if key had been revoked */
+#define KEY_FLAG_IN_QUOTA 2 /* set if key consumes quota */
+#define KEY_FLAG_USER_CONSTRUCT 3 /* set if key is being constructed in userspace */
+#define KEY_FLAG_ROOT_CAN_CLEAR 4 /* set if key can be cleared by root without permission */
+#define KEY_FLAG_INVALIDATED 5 /* set if key has been invalidated */
+#define KEY_FLAG_BUILTIN 6 /* set if key is built in to the kernel */
+#define KEY_FLAG_ROOT_CAN_INVAL 7 /* set if key can be invalidated by root without permission */
+#define KEY_FLAG_KEEP 8 /* set if key should not be removed */
+#define KEY_FLAG_UID_KEYRING 9 /* set if key is a user or user session keyring */
/* the key type and key description string
* - the desc is used to match a key against search criteria
@@ -212,7 +217,6 @@ struct key {
struct list_head name_link;
struct assoc_array keys;
};
- int reject_error;
};
/* This is set on a keyring to restrict the addition of a link to a key
@@ -243,6 +247,7 @@ extern struct key *key_alloc(struct key_type *type,
#define KEY_ALLOC_NOT_IN_QUOTA 0x0002 /* not in quota */
#define KEY_ALLOC_BUILT_IN 0x0004 /* Key is built into kernel */
#define KEY_ALLOC_BYPASS_RESTRICTION 0x0008 /* Override the check on restricted keyrings */
+#define KEY_ALLOC_UID_KEYRING 0x0010 /* allocating a user or user session keyring */
extern void key_revoke(struct key *key);
extern void key_invalidate(struct key *key);
@@ -351,17 +356,27 @@ extern void key_set_timeout(struct key *, unsigned);
#define KEY_NEED_SETATTR 0x20 /* Require permission to change attributes */
#define KEY_NEED_ALL 0x3f /* All the above permissions */
+static inline short key_read_state(const struct key *key)
+{
+ /* Barrier versus mark_key_instantiated(). */
+ return smp_load_acquire(&key->state);
+}
+
/**
- * key_is_instantiated - Determine if a key has been positively instantiated
+ * key_is_positive - Determine if a key has been positively instantiated
* @key: The key to check.
*
* Return true if the specified key has been positively instantiated, false
* otherwise.
*/
-static inline bool key_is_instantiated(const struct key *key)
+static inline bool key_is_positive(const struct key *key)
+{
+ return key_read_state(key) == KEY_IS_POSITIVE;
+}
+
+static inline bool key_is_negative(const struct key *key)
{
- return test_bit(KEY_FLAG_INSTANTIATED, &key->flags) &&
- !test_bit(KEY_FLAG_NEGATIVE, &key->flags);
+ return key_read_state(key) < 0;
}
#define dereference_key_rcu(KEY) \
diff --git a/include/linux/keyboard.h b/include/linux/keyboard.h
index 131ed5146521..73d11e4090cf 100644
--- a/include/linux/keyboard.h
+++ b/include/linux/keyboard.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_KEYBOARD_H
#define __LINUX_KEYBOARD_H
diff --git a/include/linux/khugepaged.h b/include/linux/khugepaged.h
index f0d7335336cd..082d1d2a5216 100644
--- a/include/linux/khugepaged.h
+++ b/include/linux/khugepaged.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KHUGEPAGED_H
#define _LINUX_KHUGEPAGED_H
diff --git a/include/linux/kmemcheck.h b/include/linux/kmemcheck.h
index 39f8453239f7..7b1d7bead7d9 100644
--- a/include/linux/kmemcheck.h
+++ b/include/linux/kmemcheck.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_KMEMCHECK_H
#define LINUX_KMEMCHECK_H
diff --git a/include/linux/kobj_map.h b/include/linux/kobj_map.h
index 18ca75ffcc5a..c9919f8b2293 100644
--- a/include/linux/kobj_map.h
+++ b/include/linux/kobj_map.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* kobj_map.h
*/
diff --git a/include/linux/ksm.h b/include/linux/ksm.h
index 78b44a024eaa..44368b19b27e 100644
--- a/include/linux/ksm.h
+++ b/include/linux/ksm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_KSM_H
#define __LINUX_KSM_H
/*
diff --git a/include/linux/kthread.h b/include/linux/kthread.h
index 82e197eeac91..4e26609c77d4 100644
--- a/include/linux/kthread.h
+++ b/include/linux/kthread.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KTHREAD_H
#define _LINUX_KTHREAD_H
/* Simple interface for creating and stopping kernel threads without mess. */
diff --git a/include/linux/kvm_para.h b/include/linux/kvm_para.h
index 35e568f04b1e..51f6ef2c2ff4 100644
--- a/include/linux/kvm_para.h
+++ b/include/linux/kvm_para.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_KVM_PARA_H
#define __LINUX_KVM_PARA_H
diff --git a/include/linux/l2tp.h b/include/linux/l2tp.h
index bffdb962f1a6..0402eda1a94e 100644
--- a/include/linux/l2tp.h
+++ b/include/linux/l2tp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* L2TP-over-IP socket for L2TPv3.
*
diff --git a/include/linux/lapb.h b/include/linux/lapb.h
index 873c1eb635e4..eb56472f23b2 100644
--- a/include/linux/lapb.h
+++ b/include/linux/lapb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* These are the public elements of the Linux LAPB module.
*/
diff --git a/include/linux/latencytop.h b/include/linux/latencytop.h
index 59ccab297ae0..7c560e0dc8f4 100644
--- a/include/linux/latencytop.h
+++ b/include/linux/latencytop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* latencytop.h: Infrastructure for displaying latency
*
diff --git a/include/linux/lcd.h b/include/linux/lcd.h
index 504f6246f38f..851eee8fff25 100644
--- a/include/linux/lcd.h
+++ b/include/linux/lcd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* LCD Lowlevel Control Abstraction
*
diff --git a/include/linux/lcm.h b/include/linux/lcm.h
index 1ce79a7f1daa..0db3efd56efb 100644
--- a/include/linux/lcm.h
+++ b/include/linux/lcm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LCM_H
#define _LCM_H
diff --git a/include/linux/leds_pwm.h b/include/linux/leds_pwm.h
index a65e9646e4b1..93d101d28943 100644
--- a/include/linux/leds_pwm.h
+++ b/include/linux/leds_pwm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PWM LED driver data - see drivers/leds/leds-pwm.c
*/
diff --git a/include/linux/libfdt.h b/include/linux/libfdt.h
index 4c0306c69b4e..27ba06e5d117 100644
--- a/include/linux/libfdt.h
+++ b/include/linux/libfdt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INCLUDE_LIBFDT_H_
#define _INCLUDE_LIBFDT_H_
diff --git a/include/linux/libfdt_env.h b/include/linux/libfdt_env.h
index 2a663c6bb428..14997285e53d 100644
--- a/include/linux/libfdt_env.h
+++ b/include/linux/libfdt_env.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LIBFDT_ENV_H
#define _LIBFDT_ENV_H
diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h
index 7dfa56ebbc6d..a29a8db5cc2f 100644
--- a/include/linux/lightnvm.h
+++ b/include/linux/lightnvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef NVM_H
#define NVM_H
diff --git a/include/linux/linkage.h b/include/linux/linkage.h
index a6a42dd02466..2e6f90bd52aa 100644
--- a/include/linux/linkage.h
+++ b/include/linux/linkage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_LINKAGE_H
#define _LINUX_LINKAGE_H
diff --git a/include/linux/linux_logo.h b/include/linux/linux_logo.h
index ca5bd91d12e1..5e3581d76c7f 100644
--- a/include/linux/linux_logo.h
+++ b/include/linux/linux_logo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_LINUX_LOGO_H
#define _LINUX_LINUX_LOGO_H
diff --git a/include/linux/lis3lv02d.h b/include/linux/lis3lv02d.h
index f1664c636af0..b72b8cdba765 100644
--- a/include/linux/lis3lv02d.h
+++ b/include/linux/lis3lv02d.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LIS3LV02D_H_
#define __LIS3LV02D_H_
diff --git a/include/linux/list.h b/include/linux/list.h
index ae537fa46216..4b129df4d46b 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_LIST_H
#define _LINUX_LIST_H
diff --git a/include/linux/list_bl.h b/include/linux/list_bl.h
index cb483305e1f5..3fc2cc57ba1b 100644
--- a/include/linux/list_bl.h
+++ b/include/linux/list_bl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_LIST_BL_H
#define _LINUX_LIST_BL_H
diff --git a/include/linux/list_lru.h b/include/linux/list_lru.h
index fa7fd03cb5f9..bb8129a3474d 100644
--- a/include/linux/list_lru.h
+++ b/include/linux/list_lru.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2013 Red Hat, Inc. and Parallels Inc. All rights reserved.
* Authors: David Chinner and Glauber Costa
diff --git a/include/linux/list_nulls.h b/include/linux/list_nulls.h
index 87ff4f58a2f0..3ef96743db8d 100644
--- a/include/linux/list_nulls.h
+++ b/include/linux/list_nulls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_LIST_NULLS_H
#define _LINUX_LIST_NULLS_H
diff --git a/include/linux/list_sort.h b/include/linux/list_sort.h
index 1a2df2efb771..ba79956e848d 100644
--- a/include/linux/list_sort.h
+++ b/include/linux/list_sort.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_LIST_SORT_H
#define _LINUX_LIST_SORT_H
diff --git a/include/linux/lockd/bind.h b/include/linux/lockd/bind.h
index 05728396a1a1..053a4ef3d431 100644
--- a/include/linux/lockd/bind.h
+++ b/include/linux/lockd/bind.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/lockd/bind.h
*
diff --git a/include/linux/lockd/debug.h b/include/linux/lockd/debug.h
index 0ca8109934e4..e536c579827f 100644
--- a/include/linux/lockd/debug.h
+++ b/include/linux/lockd/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/lockd/debug.h
*
diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h
index 3eca67728366..d7d313fb9cd4 100644
--- a/include/linux/lockd/lockd.h
+++ b/include/linux/lockd/lockd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/lockd/lockd.h
*
diff --git a/include/linux/lockd/nlm.h b/include/linux/lockd/nlm.h
index d9d46e442538..6e343ef760dc 100644
--- a/include/linux/lockd/nlm.h
+++ b/include/linux/lockd/nlm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/lockd/nlm.h
*
diff --git a/include/linux/lockd/share.h b/include/linux/lockd/share.h
index 630c5bf69b07..1f18a9faf645 100644
--- a/include/linux/lockd/share.h
+++ b/include/linux/lockd/share.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/lockd/share.h
*
diff --git a/include/linux/lockd/xdr.h b/include/linux/lockd/xdr.h
index 7acbecc21a40..7ab9f264313f 100644
--- a/include/linux/lockd/xdr.h
+++ b/include/linux/lockd/xdr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/lockd/xdr.h
*
diff --git a/include/linux/lockd/xdr4.h b/include/linux/lockd/xdr4.h
index bf1645609225..e709fe5924f2 100644
--- a/include/linux/lockd/xdr4.h
+++ b/include/linux/lockd/xdr4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/lockd/xdr4.h
*
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
index bfa8e0b0d6f1..f301d31b473c 100644
--- a/include/linux/lockdep.h
+++ b/include/linux/lockdep.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Runtime locking correctness validator
*
diff --git a/include/linux/lockref.h b/include/linux/lockref.h
index b10b122dd099..ef3c9342e119 100644
--- a/include/linux/lockref.h
+++ b/include/linux/lockref.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_LOCKREF_H
#define __LINUX_LOCKREF_H
diff --git a/include/linux/lp.h b/include/linux/lp.h
index 0dd276af9e4e..be8a07eb2083 100644
--- a/include/linux/lp.h
+++ b/include/linux/lp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* usr/include/linux/lp.h c.1991-1992 James Wiegand
* many modifications copyright (C) 1992 Michael K. Johnson
diff --git a/include/linux/lsm_audit.h b/include/linux/lsm_audit.h
index d1c2901f1542..915330abf6e5 100644
--- a/include/linux/lsm_audit.h
+++ b/include/linux/lsm_audit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common LSM logging functions
* Heavily borrowed from selinux/avc.h
diff --git a/include/linux/lzo.h b/include/linux/lzo.h
index a0848d9377e5..2ae27cb89927 100644
--- a/include/linux/lzo.h
+++ b/include/linux/lzo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LZO_H__
#define __LZO_H__
/*
diff --git a/include/linux/mISDNdsp.h b/include/linux/mISDNdsp.h
index 41d1eeb9b3bd..00758f45fddc 100644
--- a/include/linux/mISDNdsp.h
+++ b/include/linux/mISDNdsp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __mISDNdsp_H__
#define __mISDNdsp_H__
diff --git a/include/linux/maple.h b/include/linux/maple.h
index c37288b23e0c..9b140272ee16 100644
--- a/include/linux/maple.h
+++ b/include/linux/maple.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_MAPLE_H
#define __LINUX_MAPLE_H
diff --git a/include/linux/marvell_phy.h b/include/linux/marvell_phy.h
index 4055cf8cc978..4f5f8c21e283 100644
--- a/include/linux/marvell_phy.h
+++ b/include/linux/marvell_phy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MARVELL_PHY_H
#define _MARVELL_PHY_H
diff --git a/include/linux/math64.h b/include/linux/math64.h
index 80690c96c734..082de345b73c 100644
--- a/include/linux/math64.h
+++ b/include/linux/math64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MATH64_H
#define _LINUX_MATH64_H
diff --git a/include/linux/mbcache.h b/include/linux/mbcache.h
index e1bc73414983..20f1e3ff6013 100644
--- a/include/linux/mbcache.h
+++ b/include/linux/mbcache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MBCACHE_H
#define _LINUX_MBCACHE_H
diff --git a/include/linux/mbus.h b/include/linux/mbus.h
index 0d3f14fd2621..4773145246ed 100644
--- a/include/linux/mbus.h
+++ b/include/linux/mbus.h
@@ -31,8 +31,8 @@ struct mbus_dram_target_info
struct mbus_dram_window {
u8 cs_index;
u8 mbus_attr;
- u32 base;
- u32 size;
+ u64 base;
+ u64 size;
} cs[4];
};
diff --git a/include/linux/mc6821.h b/include/linux/mc6821.h
index 28e301e295da..8dffab19b4ac 100644
--- a/include/linux/mc6821.h
+++ b/include/linux/mc6821.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MC6821_H_
#define _MC6821_H_
diff --git a/include/linux/mdio-bitbang.h b/include/linux/mdio-bitbang.h
index 76f52bbbb2f4..a8ac9cfa014c 100644
--- a/include/linux/mdio-bitbang.h
+++ b/include/linux/mdio-bitbang.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_MDIO_BITBANG_H
#define __LINUX_MDIO_BITBANG_H
diff --git a/include/linux/mei_cl_bus.h b/include/linux/mei_cl_bus.h
index a0d274fe08f1..7fde40e17c8b 100644
--- a/include/linux/mei_cl_bus.h
+++ b/include/linux/mei_cl_bus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MEI_CL_BUS_H
#define _LINUX_MEI_CL_BUS_H
diff --git a/include/linux/memory.h b/include/linux/memory.h
index b723a686fc10..f71e732c77b2 100644
--- a/include/linux/memory.h
+++ b/include/linux/memory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/memory.h - generic memory definition
*
diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
index 0995e1a2b458..58e110aee7ab 100644
--- a/include/linux/memory_hotplug.h
+++ b/include/linux/memory_hotplug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_MEMORY_HOTPLUG_H
#define __LINUX_MEMORY_HOTPLUG_H
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h
index 3a58b4be1b0c..5228c62af416 100644
--- a/include/linux/mempolicy.h
+++ b/include/linux/mempolicy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NUMA memory policies for Linux.
* Copyright 2003,2004 Andi Kleen SuSE Labs
diff --git a/include/linux/mempool.h b/include/linux/mempool.h
index b1086c936507..b51f5c430c26 100644
--- a/include/linux/mempool.h
+++ b/include/linux/mempool.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* memory buffer pool support
*/
diff --git a/include/linux/memremap.h b/include/linux/memremap.h
index 79f8ba7c3894..10d23c367048 100644
--- a/include/linux/memremap.h
+++ b/include/linux/memremap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MEMREMAP_H_
#define _LINUX_MEMREMAP_H_
#include <linux/mm.h>
diff --git a/include/linux/mfd/da903x.h b/include/linux/mfd/da903x.h
index 0aa3a1a49ee3..d1c57b8dbba4 100644
--- a/include/linux/mfd/da903x.h
+++ b/include/linux/mfd/da903x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PMIC_DA903X_H
#define __LINUX_PMIC_DA903X_H
diff --git a/include/linux/mfd/dln2.h b/include/linux/mfd/dln2.h
index 004b24576da8..4cade9aa8edb 100644
--- a/include/linux/mfd/dln2.h
+++ b/include/linux/mfd/dln2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_USB_DLN2_H
#define __LINUX_USB_DLN2_H
diff --git a/include/linux/mfd/ds1wm.h b/include/linux/mfd/ds1wm.h
index 2227c6a75d84..43dfca1c9702 100644
--- a/include/linux/mfd/ds1wm.h
+++ b/include/linux/mfd/ds1wm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* MFD cell driver data for the DS1WM driver
*
* to be defined in the MFD device that is
diff --git a/include/linux/mfd/ezx-pcap.h b/include/linux/mfd/ezx-pcap.h
index 32a1b5cfeba1..ffde195e12b7 100644
--- a/include/linux/mfd/ezx-pcap.h
+++ b/include/linux/mfd/ezx-pcap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2009 Daniel Ribeiro <drwyrm@gmail.com>
*
diff --git a/include/linux/mfd/imx25-tsadc.h b/include/linux/mfd/imx25-tsadc.h
index 7fe4b8c3baac..21f8adfefd1d 100644
--- a/include/linux/mfd/imx25-tsadc.h
+++ b/include/linux/mfd/imx25-tsadc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_INCLUDE_MFD_IMX25_TSADC_H_
#define _LINUX_INCLUDE_MFD_IMX25_TSADC_H_
diff --git a/include/linux/mfd/ipaq-micro.h b/include/linux/mfd/ipaq-micro.h
index 5c4d29f6674f..ee48a4321c57 100644
--- a/include/linux/mfd/ipaq-micro.h
+++ b/include/linux/mfd/ipaq-micro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Header file for the compaq Micro MFD
*/
diff --git a/include/linux/mfd/menelaus.h b/include/linux/mfd/menelaus.h
index 9e85ac06da89..ce489aba88ec 100644
--- a/include/linux/mfd/menelaus.h
+++ b/include/linux/mfd/menelaus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Functions to access Menelaus power management chip
*/
diff --git a/include/linux/mfd/pcf50633/pmic.h b/include/linux/mfd/pcf50633/pmic.h
index 2d3dbe53b235..eac0c3d8e984 100644
--- a/include/linux/mfd/pcf50633/pmic.h
+++ b/include/linux/mfd/pcf50633/pmic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_MFD_PCF50633_PMIC_H
#define __LINUX_MFD_PCF50633_PMIC_H
diff --git a/include/linux/mfd/qcom_rpm.h b/include/linux/mfd/qcom_rpm.h
index 742ebf1b76ca..4b6b644f1108 100644
--- a/include/linux/mfd/qcom_rpm.h
+++ b/include/linux/mfd/qcom_rpm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __QCOM_RPM_H__
#define __QCOM_RPM_H__
diff --git a/include/linux/mfd/rdc321x.h b/include/linux/mfd/rdc321x.h
index 442743a8f915..697933b2227b 100644
--- a/include/linux/mfd/rdc321x.h
+++ b/include/linux/mfd/rdc321x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RDC321X_MFD_H
#define __RDC321X_MFD_H
diff --git a/include/linux/mfd/tmio.h b/include/linux/mfd/tmio.h
index 15646740e2a8..e1cfe9194129 100644
--- a/include/linux/mfd/tmio.h
+++ b/include/linux/mfd/tmio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef MFD_TMIO_H
#define MFD_TMIO_H
diff --git a/include/linux/mfd/tps6586x.h b/include/linux/mfd/tps6586x.h
index 96187ed9f9bb..2fe68e481230 100644
--- a/include/linux/mfd/tps6586x.h
+++ b/include/linux/mfd/tps6586x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_MFD_TPS6586X_H
#define __LINUX_MFD_TPS6586X_H
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 643c7ae7d7b4..895ec0c4942e 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MIGRATE_H
#define _LINUX_MIGRATE_H
diff --git a/include/linux/migrate_mode.h b/include/linux/migrate_mode.h
index bdf66af9b937..883c99249033 100644
--- a/include/linux/migrate_mode.h
+++ b/include/linux/migrate_mode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef MIGRATE_MODE_H_INCLUDED
#define MIGRATE_MODE_H_INCLUDED
/*
diff --git a/include/linux/mii.h b/include/linux/mii.h
index e870bfa6abfe..55000ee5c6ad 100644
--- a/include/linux/mii.h
+++ b/include/linux/mii.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/mii.h: definitions for MII-compatible transceivers
* Originally drivers/net/sunhme.h.
diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h
index 58751eae5f77..4de703d9e21f 100644
--- a/include/linux/miscdevice.h
+++ b/include/linux/miscdevice.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MISCDEVICE_H
#define _LINUX_MISCDEVICE_H
#include <linux/major.h>
diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h
index eaf4ad209c8f..e32dbc4934db 100644
--- a/include/linux/mlx5/device.h
+++ b/include/linux/mlx5/device.h
@@ -980,7 +980,6 @@ enum mlx5_cap_type {
MLX5_CAP_RESERVED,
MLX5_CAP_VECTOR_CALC,
MLX5_CAP_QOS,
- MLX5_CAP_FPGA,
/* NUM OF CAP Types */
MLX5_CAP_NUM
};
@@ -1110,10 +1109,10 @@ enum mlx5_mcam_feature_groups {
MLX5_GET(mcam_reg, (mdev)->caps.mcam, mng_feature_cap_mask.enhanced_features.fld)
#define MLX5_CAP_FPGA(mdev, cap) \
- MLX5_GET(fpga_cap, (mdev)->caps.hca_cur[MLX5_CAP_FPGA], cap)
+ MLX5_GET(fpga_cap, (mdev)->caps.fpga, cap)
#define MLX5_CAP64_FPGA(mdev, cap) \
- MLX5_GET64(fpga_cap, (mdev)->caps.hca_cur[MLX5_CAP_FPGA], cap)
+ MLX5_GET64(fpga_cap, (mdev)->caps.fpga, cap)
enum {
MLX5_CMD_STAT_OK = 0x0,
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
index 02ff700e4f30..401c8972cc3a 100644
--- a/include/linux/mlx5/driver.h
+++ b/include/linux/mlx5/driver.h
@@ -774,6 +774,7 @@ struct mlx5_core_dev {
u32 hca_max[MLX5_CAP_NUM][MLX5_UN_SZ_DW(hca_cap_union)];
u32 pcam[MLX5_ST_SZ_DW(pcam_reg)];
u32 mcam[MLX5_ST_SZ_DW(mcam_reg)];
+ u32 fpga[MLX5_ST_SZ_DW(fpga_cap)];
} caps;
phys_addr_t iseg_base;
struct mlx5_init_seg __iomem *iseg;
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h
index a528b35a022e..69772347f866 100644
--- a/include/linux/mlx5/mlx5_ifc.h
+++ b/include/linux/mlx5/mlx5_ifc.h
@@ -327,7 +327,8 @@ struct mlx5_ifc_flow_table_prop_layout_bits {
u8 reserved_at_80[0x18];
u8 log_max_destination[0x8];
- u8 reserved_at_a0[0x18];
+ u8 log_max_flow_counter[0x8];
+ u8 reserved_at_a8[0x10];
u8 log_max_flow[0x8];
u8 reserved_at_c0[0x40];
diff --git a/include/linux/mlx5/port.h b/include/linux/mlx5/port.h
index c57d4b7de3a8..c59af8ab753a 100644
--- a/include/linux/mlx5/port.h
+++ b/include/linux/mlx5/port.h
@@ -157,6 +157,8 @@ int mlx5_set_port_prio_tc(struct mlx5_core_dev *mdev, u8 *prio_tc);
int mlx5_query_port_prio_tc(struct mlx5_core_dev *mdev,
u8 prio, u8 *tc);
int mlx5_set_port_tc_group(struct mlx5_core_dev *mdev, u8 *tc_group);
+int mlx5_query_port_tc_group(struct mlx5_core_dev *mdev,
+ u8 tc, u8 *tc_group);
int mlx5_set_port_tc_bw_alloc(struct mlx5_core_dev *mdev, u8 *tc_bw);
int mlx5_query_port_tc_bw_alloc(struct mlx5_core_dev *mdev,
u8 tc, u8 *bw_pct);
diff --git a/include/linux/mm.h b/include/linux/mm.h
index f8c10d336e42..43edf659453b 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MM_H
#define _LINUX_MM_H
@@ -240,7 +241,7 @@ extern unsigned int kobjsize(const void *objp);
#if defined(CONFIG_X86_INTEL_MPX)
/* MPX specific bounds table or bounds directory */
-# define VM_MPX VM_HIGH_ARCH_BIT_4
+# define VM_MPX VM_HIGH_ARCH_4
#else
# define VM_MPX VM_NONE
#endif
diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h
index 25438b2b6f22..c30b32e3c862 100644
--- a/include/linux/mm_inline.h
+++ b/include/linux/mm_inline.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_MM_INLINE_H
#define LINUX_MM_INLINE_H
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 46f4ecf5479a..c85f11dafd56 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MM_TYPES_H
#define _LINUX_MM_TYPES_H
@@ -445,6 +446,9 @@ struct mm_struct {
unsigned long flags; /* Must use atomic bitops to access the bits */
struct core_state *core_state; /* coredumping support */
+#ifdef CONFIG_MEMBARRIER
+ atomic_t membarrier_state;
+#endif
#ifdef CONFIG_AIO
spinlock_t ioctx_lock;
struct kioctx_table __rcu *ioctx_table;
diff --git a/include/linux/mm_types_task.h b/include/linux/mm_types_task.h
index fc412fbd80bd..5fe87687664c 100644
--- a/include/linux/mm_types_task.h
+++ b/include/linux/mm_types_task.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MM_TYPES_TASK_H
#define _LINUX_MM_TYPES_TASK_H
diff --git a/include/linux/mman.h b/include/linux/mman.h
index c8367041fafd..7c87b6652244 100644
--- a/include/linux/mman.h
+++ b/include/linux/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MMAN_H
#define _LINUX_MMAN_H
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index f3f2d07feb2a..9a43763a68ad 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -316,7 +316,7 @@ struct mmc_host {
#define MMC_CAP_UHS_SDR50 (1 << 18) /* Host supports UHS SDR50 mode */
#define MMC_CAP_UHS_SDR104 (1 << 19) /* Host supports UHS SDR104 mode */
#define MMC_CAP_UHS_DDR50 (1 << 20) /* Host supports UHS DDR50 mode */
-#define MMC_CAP_NO_BOUNCE_BUFF (1 << 21) /* Disable bounce buffers on host */
+/* (1 << 21) is free for reuse */
#define MMC_CAP_DRIVER_TYPE_A (1 << 23) /* Host supports Driver Type A */
#define MMC_CAP_DRIVER_TYPE_C (1 << 24) /* Host supports Driver Type C */
#define MMC_CAP_DRIVER_TYPE_D (1 << 25) /* Host supports Driver Type D */
diff --git a/include/linux/mmc/sdhci-pci-data.h b/include/linux/mmc/sdhci-pci-data.h
index fda15b6d4135..36f986d4a59a 100644
--- a/include/linux/mmc/sdhci-pci-data.h
+++ b/include/linux/mmc/sdhci-pci-data.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_MMC_SDHCI_PCI_DATA_H
#define LINUX_MMC_SDHCI_PCI_DATA_H
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
index abacd5484bc0..cdd66a5fbd5e 100644
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* SDIO Classes, Interface Types, Manufacturer IDs, etc.
*/
diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h
index 451a811f48f2..57b0030d3800 100644
--- a/include/linux/mmdebug.h
+++ b/include/linux/mmdebug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_MM_DEBUG_H
#define LINUX_MM_DEBUG_H 1
diff --git a/include/linux/mmiotrace.h b/include/linux/mmiotrace.h
index 3ba327af055c..88236849894d 100644
--- a/include/linux/mmiotrace.h
+++ b/include/linux/mmiotrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MMIOTRACE_H
#define _LINUX_MMIOTRACE_H
diff --git a/include/linux/mmu_context.h b/include/linux/mmu_context.h
index a4441784503b..d9a543a9e1cc 100644
--- a/include/linux/mmu_context.h
+++ b/include/linux/mmu_context.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MMU_CONTEXT_H
#define _LINUX_MMU_CONTEXT_H
diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h
index 7b2e31b1745a..2cf1c3c807f6 100644
--- a/include/linux/mmu_notifier.h
+++ b/include/linux/mmu_notifier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MMU_NOTIFIER_H
#define _LINUX_MMU_NOTIFIER_H
@@ -400,6 +401,11 @@ extern void mmu_notifier_synchronize(void);
#else /* CONFIG_MMU_NOTIFIER */
+static inline int mm_has_notifiers(struct mm_struct *mm)
+{
+ return 0;
+}
+
static inline void mmu_notifier_release(struct mm_struct *mm)
{
}
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 356a814e7c8e..c9c4a81b9767 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MMZONE_H
#define _LINUX_MMZONE_H
@@ -1094,8 +1095,14 @@ static inline unsigned long early_pfn_to_nid(unsigned long pfn)
#error Allocator MAX_ORDER exceeds SECTION_SIZE
#endif
-#define pfn_to_section_nr(pfn) ((pfn) >> PFN_SECTION_SHIFT)
-#define section_nr_to_pfn(sec) ((sec) << PFN_SECTION_SHIFT)
+static inline unsigned long pfn_to_section_nr(unsigned long pfn)
+{
+ return pfn >> PFN_SECTION_SHIFT;
+}
+static inline unsigned long section_nr_to_pfn(unsigned long sec)
+{
+ return sec << PFN_SECTION_SHIFT;
+}
#define SECTION_ALIGN_UP(pfn) (((pfn) + PAGES_PER_SECTION - 1) & PAGE_SECTION_MASK)
#define SECTION_ALIGN_DOWN(pfn) ((pfn) & PAGE_SECTION_MASK)
diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h
index 12b2ab510323..35942084cd40 100644
--- a/include/linux/mnt_namespace.h
+++ b/include/linux/mnt_namespace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NAMESPACE_H_
#define _NAMESPACE_H_
#ifdef __KERNEL__
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index 694cebb50f72..1c2e8d6b7274 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Device tables which are exported to userspace via
* scripts/mod/file2alias.c. You must keep that file in sync with this
@@ -293,6 +294,7 @@ struct pcmcia_device_id {
#define INPUT_DEVICE_ID_SND_MAX 0x07
#define INPUT_DEVICE_ID_FF_MAX 0x7f
#define INPUT_DEVICE_ID_SW_MAX 0x0f
+#define INPUT_DEVICE_ID_PROP_MAX 0x1f
#define INPUT_DEVICE_ID_MATCH_BUS 1
#define INPUT_DEVICE_ID_MATCH_VENDOR 2
@@ -308,6 +310,7 @@ struct pcmcia_device_id {
#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400
#define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800
#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
+#define INPUT_DEVICE_ID_MATCH_PROPBIT 0x2000
struct input_device_id {
@@ -327,6 +330,7 @@ struct input_device_id {
kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
+ kernel_ulong_t propbit[INPUT_DEVICE_ID_PROP_MAX / BITS_PER_LONG + 1];
kernel_ulong_t driver_info;
};
diff --git a/include/linux/module.h b/include/linux/module.h
index e7bdd549e527..fe5aa3736707 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -209,7 +209,7 @@ extern void cleanup_module(void);
#ifdef MODULE
/* Creates an alias so file2alias.c can find device table. */
#define MODULE_DEVICE_TABLE(type, name) \
-extern const typeof(name) __mod_##type##__##name##_device_table \
+extern typeof(name) __mod_##type##__##name##_device_table \
__attribute__ ((unused, alias(__stringify(name))))
#else /* !MODULE */
#define MODULE_DEVICE_TABLE(type, name)
diff --git a/include/linux/moduleloader.h b/include/linux/moduleloader.h
index 4d0cb9bba93e..31013c2effd3 100644
--- a/include/linux/moduleloader.h
+++ b/include/linux/moduleloader.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MODULELOADER_H
#define _LINUX_MODULELOADER_H
/* The stuff needed for archs to support modules. */
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
index 1ee7b30dafec..1d7140fef154 100644
--- a/include/linux/moduleparam.h
+++ b/include/linux/moduleparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MODULE_PARAMS_H
#define _LINUX_MODULE_PARAMS_H
/* (C) Copyright 2001, 2002 Rusty Russell IBM Corporation */
diff --git a/include/linux/mount.h b/include/linux/mount.h
index 1ce85e6fd95f..45b1f56c6c2f 100644
--- a/include/linux/mount.h
+++ b/include/linux/mount.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Definitions for mount interface. This describes the in the kernel build
diff --git a/include/linux/mpage.h b/include/linux/mpage.h
index 068a0c9946af..001f1fcf9836 100644
--- a/include/linux/mpage.h
+++ b/include/linux/mpage.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/mpage.h
*
diff --git a/include/linux/mpls.h b/include/linux/mpls.h
index 384fb22b6c43..ae1a188c011b 100644
--- a/include/linux/mpls.h
+++ b/include/linux/mpls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MPLS_H
#define _LINUX_MPLS_H
diff --git a/include/linux/mpls_iptunnel.h b/include/linux/mpls_iptunnel.h
index ef29eb2d6dfd..140c56954fbe 100644
--- a/include/linux/mpls_iptunnel.h
+++ b/include/linux/mpls_iptunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MPLS_IPTUNNEL_H
#define _LINUX_MPLS_IPTUNNEL_H
diff --git a/include/linux/mroute.h b/include/linux/mroute.h
index d7f63339ef0b..65a70a7c51c1 100644
--- a/include/linux/mroute.h
+++ b/include/linux/mroute.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_MROUTE_H
#define __LINUX_MROUTE_H
diff --git a/include/linux/mroute6.h b/include/linux/mroute6.h
index ce44e3e96d27..3014c52bfd86 100644
--- a/include/linux/mroute6.h
+++ b/include/linux/mroute6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_MROUTE6_H
#define __LINUX_MROUTE6_H
diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h
index e1b163f912fb..b7a5d4c72f56 100644
--- a/include/linux/msdos_fs.h
+++ b/include/linux/msdos_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MSDOS_FS_H
#define _LINUX_MSDOS_FS_H
diff --git a/include/linux/msg.h b/include/linux/msg.h
index a001305f5a79..0a7eefeee0d1 100644
--- a/include/linux/msg.h
+++ b/include/linux/msg.h
@@ -1,7 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MSG_H
#define _LINUX_MSG_H
#include <linux/list.h>
+#include <linux/time64.h>
#include <uapi/linux/msg.h>
/* one msg_msg structure for each message */
@@ -17,9 +19,9 @@ struct msg_msg {
/* one msq_queue structure for each present queue on the system */
struct msg_queue {
struct kern_ipc_perm q_perm;
- time_t q_stime; /* last msgsnd time */
- time_t q_rtime; /* last msgrcv time */
- time_t q_ctime; /* last change time */
+ time64_t q_stime; /* last msgsnd time */
+ time64_t q_rtime; /* last msgrcv time */
+ time64_t q_ctime; /* last change time */
unsigned long q_cbytes; /* current number of bytes on queue */
unsigned long q_qnum; /* number of messages in queue */
unsigned long q_qbytes; /* max number of bytes on queue */
@@ -31,12 +33,4 @@ struct msg_queue {
struct list_head q_senders;
} __randomize_layout;
-/* Helper routines for sys_msgsnd and sys_msgrcv */
-extern long do_msgsnd(int msqid, long mtype, void __user *mtext,
- size_t msgsz, int msgflg);
-extern long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp,
- int msgflg,
- long (*msg_fill)(void __user *, struct msg_msg *,
- size_t));
-
#endif /* _LINUX_MSG_H */
diff --git a/include/linux/msi.h b/include/linux/msi.h
index 80e3b562bef6..cdd069cf9ed8 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_MSI_H
#define LINUX_MSI_H
diff --git a/include/linux/mtd/inftl.h b/include/linux/mtd/inftl.h
index 8255118be0f0..fdfff87066a9 100644
--- a/include/linux/mtd/inftl.h
+++ b/include/linux/mtd/inftl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* inftl.h -- defines to support the Inverse NAND Flash Translation Layer
*
diff --git a/include/linux/mtd/mtdram.h b/include/linux/mtd/mtdram.h
index 628a6a21ddf0..ee8f95643f9b 100644
--- a/include/linux/mtd/mtdram.h
+++ b/include/linux/mtd/mtdram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MTD_MTDRAM_H__
#define __MTD_MTDRAM_H__
diff --git a/include/linux/mtd/nand-gpio.h b/include/linux/mtd/nand-gpio.h
index be4f45d89be2..fdef72d6e198 100644
--- a/include/linux/mtd/nand-gpio.h
+++ b/include/linux/mtd/nand-gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_MTD_NAND_GPIO_H
#define __LINUX_MTD_NAND_GPIO_H
diff --git a/include/linux/mtd/pfow.h b/include/linux/mtd/pfow.h
index 42ff7ff09bf5..122f3439e1af 100644
--- a/include/linux/mtd/pfow.h
+++ b/include/linux/mtd/pfow.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Primary function overlay window definitions
* and service functions used by LPDDR chips
*/
diff --git a/include/linux/mtd/qinfo.h b/include/linux/mtd/qinfo.h
index b532ce524dae..df5b9fddea16 100644
--- a/include/linux/mtd/qinfo.h
+++ b/include/linux/mtd/qinfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_MTD_QINFO_H
#define __LINUX_MTD_QINFO_H
diff --git a/include/linux/mutex.h b/include/linux/mutex.h
index ffcba1f337da..153274f78402 100644
--- a/include/linux/mutex.h
+++ b/include/linux/mutex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Mutexes: blocking mutual exclusion locks
*
diff --git a/include/linux/mv643xx_eth.h b/include/linux/mv643xx_eth.h
index 61a0da38d0cb..3682ae75c7aa 100644
--- a/include/linux/mv643xx_eth.h
+++ b/include/linux/mv643xx_eth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* MV-643XX ethernet platform device data definition file.
*/
diff --git a/include/linux/namei.h b/include/linux/namei.h
index 8b4794e83196..a982bb7cd480 100644
--- a/include/linux/namei.h
+++ b/include/linux/namei.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NAMEI_H
#define _LINUX_NAMEI_H
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index f535779d9dc1..2eaac7d75af4 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -3694,6 +3694,9 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
unsigned char name_assign_type,
void (*setup)(struct net_device *),
unsigned int txqs, unsigned int rxqs);
+int dev_get_valid_name(struct net *net, struct net_device *dev,
+ const char *name);
+
#define alloc_netdev(sizeof_priv, name, name_assign_type, setup) \
alloc_netdev_mqs(sizeof_priv, name, name_assign_type, setup, 1, 1)
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
index f84bca1703cd..b24e9b101651 100644
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_NETFILTER_H
#define __LINUX_NETFILTER_H
diff --git a/include/linux/netfilter/ipset/ip_set_bitmap.h b/include/linux/netfilter/ipset/ip_set_bitmap.h
index 366d6c0ea04f..2dddbc6dcac7 100644
--- a/include/linux/netfilter/ipset/ip_set_bitmap.h
+++ b/include/linux/netfilter/ipset/ip_set_bitmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IP_SET_BITMAP_H
#define __IP_SET_BITMAP_H
diff --git a/include/linux/netfilter/ipset/ip_set_getport.h b/include/linux/netfilter/ipset/ip_set_getport.h
index 90d09300e954..ac6a11d38a19 100644
--- a/include/linux/netfilter/ipset/ip_set_getport.h
+++ b/include/linux/netfilter/ipset/ip_set_getport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IP_SET_GETPORT_H
#define _IP_SET_GETPORT_H
diff --git a/include/linux/netfilter/ipset/ip_set_hash.h b/include/linux/netfilter/ipset/ip_set_hash.h
index f98ddfb094cb..838abab672af 100644
--- a/include/linux/netfilter/ipset/ip_set_hash.h
+++ b/include/linux/netfilter/ipset/ip_set_hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IP_SET_HASH_H
#define __IP_SET_HASH_H
diff --git a/include/linux/netfilter/ipset/ip_set_list.h b/include/linux/netfilter/ipset/ip_set_list.h
index fe2622a00151..a61fe2a7e655 100644
--- a/include/linux/netfilter/ipset/ip_set_list.h
+++ b/include/linux/netfilter/ipset/ip_set_list.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IP_SET_LIST_H
#define __IP_SET_LIST_H
diff --git a/include/linux/netfilter/ipset/pfxlen.h b/include/linux/netfilter/ipset/pfxlen.h
index 1afbb94b4b65..f59094e6158b 100644
--- a/include/linux/netfilter/ipset/pfxlen.h
+++ b/include/linux/netfilter/ipset/pfxlen.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PFXLEN_H
#define _PFXLEN_H
diff --git a/include/linux/netfilter/nf_conntrack_amanda.h b/include/linux/netfilter/nf_conntrack_amanda.h
index 4b59a1584959..34345e543ba2 100644
--- a/include/linux/netfilter/nf_conntrack_amanda.h
+++ b/include/linux/netfilter/nf_conntrack_amanda.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_AMANDA_H
#define _NF_CONNTRACK_AMANDA_H
/* AMANDA tracking. */
diff --git a/include/linux/netfilter/nf_conntrack_common.h b/include/linux/netfilter/nf_conntrack_common.h
index 1d1ef4e20512..03097fa70975 100644
--- a/include/linux/netfilter/nf_conntrack_common.h
+++ b/include/linux/netfilter/nf_conntrack_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_COMMON_H
#define _NF_CONNTRACK_COMMON_H
diff --git a/include/linux/netfilter/nf_conntrack_dccp.h b/include/linux/netfilter/nf_conntrack_dccp.h
index ff721d7325cf..ace0f952d50f 100644
--- a/include/linux/netfilter/nf_conntrack_dccp.h
+++ b/include/linux/netfilter/nf_conntrack_dccp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_DCCP_H
#define _NF_CONNTRACK_DCCP_H
diff --git a/include/linux/netfilter/nf_conntrack_ftp.h b/include/linux/netfilter/nf_conntrack_ftp.h
index 5f818b01e035..73a296dfd019 100644
--- a/include/linux/netfilter/nf_conntrack_ftp.h
+++ b/include/linux/netfilter/nf_conntrack_ftp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_FTP_H
#define _NF_CONNTRACK_FTP_H
diff --git a/include/linux/netfilter/nf_conntrack_h323.h b/include/linux/netfilter/nf_conntrack_h323.h
index 858d9b214053..f76ed373a2a5 100644
--- a/include/linux/netfilter/nf_conntrack_h323.h
+++ b/include/linux/netfilter/nf_conntrack_h323.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_H323_H
#define _NF_CONNTRACK_H323_H
diff --git a/include/linux/netfilter/nf_conntrack_irc.h b/include/linux/netfilter/nf_conntrack_irc.h
index 4bb9bae67176..00c2b74206e1 100644
--- a/include/linux/netfilter/nf_conntrack_irc.h
+++ b/include/linux/netfilter/nf_conntrack_irc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_IRC_H
#define _NF_CONNTRACK_IRC_H
diff --git a/include/linux/netfilter/nf_conntrack_pptp.h b/include/linux/netfilter/nf_conntrack_pptp.h
index 2ab2830316b7..833a5b2255ea 100644
--- a/include/linux/netfilter/nf_conntrack_pptp.h
+++ b/include/linux/netfilter/nf_conntrack_pptp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* PPTP constants and structs */
#ifndef _NF_CONNTRACK_PPTP_H
#define _NF_CONNTRACK_PPTP_H
diff --git a/include/linux/netfilter/nf_conntrack_proto_gre.h b/include/linux/netfilter/nf_conntrack_proto_gre.h
index dee0acd0dd31..b8d95564bd53 100644
--- a/include/linux/netfilter/nf_conntrack_proto_gre.h
+++ b/include/linux/netfilter/nf_conntrack_proto_gre.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CONNTRACK_PROTO_GRE_H
#define _CONNTRACK_PROTO_GRE_H
#include <asm/byteorder.h>
diff --git a/include/linux/netfilter/nf_conntrack_sane.h b/include/linux/netfilter/nf_conntrack_sane.h
index 4767d6e23e97..7d2de44edce3 100644
--- a/include/linux/netfilter/nf_conntrack_sane.h
+++ b/include/linux/netfilter/nf_conntrack_sane.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_SANE_H
#define _NF_CONNTRACK_SANE_H
/* SANE tracking. */
diff --git a/include/linux/netfilter/nf_conntrack_sctp.h b/include/linux/netfilter/nf_conntrack_sctp.h
index 22a16a23cd8a..9a33f171aa82 100644
--- a/include/linux/netfilter/nf_conntrack_sctp.h
+++ b/include/linux/netfilter/nf_conntrack_sctp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_SCTP_H
#define _NF_CONNTRACK_SCTP_H
/* SCTP tracking. */
diff --git a/include/linux/netfilter/nf_conntrack_sip.h b/include/linux/netfilter/nf_conntrack_sip.h
index d5af3c27fb7d..c7fc38807a33 100644
--- a/include/linux/netfilter/nf_conntrack_sip.h
+++ b/include/linux/netfilter/nf_conntrack_sip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NF_CONNTRACK_SIP_H__
#define __NF_CONNTRACK_SIP_H__
#ifdef __KERNEL__
diff --git a/include/linux/netfilter/nf_conntrack_snmp.h b/include/linux/netfilter/nf_conntrack_snmp.h
index 064bc63a5346..818088c47475 100644
--- a/include/linux/netfilter/nf_conntrack_snmp.h
+++ b/include/linux/netfilter/nf_conntrack_snmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_SNMP_H
#define _NF_CONNTRACK_SNMP_H
diff --git a/include/linux/netfilter/nf_conntrack_tcp.h b/include/linux/netfilter/nf_conntrack_tcp.h
index 22db9614b584..f9e3a663037b 100644
--- a/include/linux/netfilter/nf_conntrack_tcp.h
+++ b/include/linux/netfilter/nf_conntrack_tcp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_TCP_H
#define _NF_CONNTRACK_TCP_H
diff --git a/include/linux/netfilter/nf_conntrack_tftp.h b/include/linux/netfilter/nf_conntrack_tftp.h
index c78d38fdb050..5769e12dd0a2 100644
--- a/include/linux/netfilter/nf_conntrack_tftp.h
+++ b/include/linux/netfilter/nf_conntrack_tftp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_TFTP_H
#define _NF_CONNTRACK_TFTP_H
diff --git a/include/linux/netfilter/nf_conntrack_zones_common.h b/include/linux/netfilter/nf_conntrack_zones_common.h
index 5d7cf36d4766..8f3905e12a64 100644
--- a/include/linux/netfilter/nf_conntrack_zones_common.h
+++ b/include/linux/netfilter/nf_conntrack_zones_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_ZONES_COMMON_H
#define _NF_CONNTRACK_ZONES_COMMON_H
diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h
index 41d04e9d088a..414a5e769fde 100644
--- a/include/linux/netfilter/nfnetlink.h
+++ b/include/linux/netfilter/nfnetlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFNETLINK_H
#define _NFNETLINK_H
diff --git a/include/linux/netfilter/nfnetlink_acct.h b/include/linux/netfilter/nfnetlink_acct.h
index 664da0048625..b4d741195c28 100644
--- a/include/linux/netfilter/nfnetlink_acct.h
+++ b/include/linux/netfilter/nfnetlink_acct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFNL_ACCT_H_
#define _NFNL_ACCT_H_
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h
index b3044c2c62cb..33f7530f96b9 100644
--- a/include/linux/netfilter/x_tables.h
+++ b/include/linux/netfilter/x_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _X_TABLES_H
#define _X_TABLES_H
diff --git a/include/linux/netfilter/xt_hashlimit.h b/include/linux/netfilter/xt_hashlimit.h
index 0fc458bde80b..169d03983589 100644
--- a/include/linux/netfilter/xt_hashlimit.h
+++ b/include/linux/netfilter/xt_hashlimit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XT_HASHLIMIT_H
#define _XT_HASHLIMIT_H
diff --git a/include/linux/netfilter/xt_physdev.h b/include/linux/netfilter/xt_physdev.h
index 5b5e41716d69..4ca0593949cd 100644
--- a/include/linux/netfilter/xt_physdev.h
+++ b/include/linux/netfilter/xt_physdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XT_PHYSDEV_H
#define _XT_PHYSDEV_H
diff --git a/include/linux/netfilter_arp/arp_tables.h b/include/linux/netfilter_arp/arp_tables.h
index 029b95e8924e..e98028f00e47 100644
--- a/include/linux/netfilter_arp/arp_tables.h
+++ b/include/linux/netfilter_arp/arp_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Format of an ARP firewall descriptor
*
diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h
index 2ed40c402b5e..b671fdfd212b 100644
--- a/include/linux/netfilter_bridge.h
+++ b/include/linux/netfilter_bridge.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_BRIDGE_NETFILTER_H
#define __LINUX_BRIDGE_NETFILTER_H
diff --git a/include/linux/netfilter_bridge/ebt_802_3.h b/include/linux/netfilter_bridge/ebt_802_3.h
index e17e8bfb4e8b..c6147f9c0d80 100644
--- a/include/linux/netfilter_bridge/ebt_802_3.h
+++ b/include/linux/netfilter_bridge/ebt_802_3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_BRIDGE_EBT_802_3_H
#define __LINUX_BRIDGE_EBT_802_3_H
diff --git a/include/linux/netfilter_bridge/ebtables.h b/include/linux/netfilter_bridge/ebtables.h
index 2c2a5514b0df..0773b5a032f1 100644
--- a/include/linux/netfilter_bridge/ebtables.h
+++ b/include/linux/netfilter_bridge/ebtables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ebtables
*
@@ -108,9 +109,10 @@ struct ebt_table {
#define EBT_ALIGN(s) (((s) + (__alignof__(struct _xt_align)-1)) & \
~(__alignof__(struct _xt_align)-1))
-extern struct ebt_table *ebt_register_table(struct net *net,
- const struct ebt_table *table,
- const struct nf_hook_ops *);
+extern int ebt_register_table(struct net *net,
+ const struct ebt_table *table,
+ const struct nf_hook_ops *ops,
+ struct ebt_table **res);
extern void ebt_unregister_table(struct net *net, struct ebt_table *table,
const struct nf_hook_ops *);
extern unsigned int ebt_do_table(struct sk_buff *skb,
diff --git a/include/linux/netfilter_defs.h b/include/linux/netfilter_defs.h
index d3a7f8597e82..dc6111adea06 100644
--- a/include/linux/netfilter_defs.h
+++ b/include/linux/netfilter_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_NETFILTER_CORE_H_
#define __LINUX_NETFILTER_CORE_H_
diff --git a/include/linux/netfilter_ingress.h b/include/linux/netfilter_ingress.h
index 8d5dae1e2ff8..554c920691dd 100644
--- a/include/linux/netfilter_ingress.h
+++ b/include/linux/netfilter_ingress.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NETFILTER_INGRESS_H_
#define _NETFILTER_INGRESS_H_
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h
index 7bfc5893ec31..d026e63a5aa4 100644
--- a/include/linux/netfilter_ipv4/ip_tables.h
+++ b/include/linux/netfilter_ipv4/ip_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* 25-Jul-1998 Major changes to allow for ip chain table
*
diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/linux/netfilter_ipv6/ip6_tables.h
index b21c392d6012..99cbfd3add40 100644
--- a/include/linux/netfilter_ipv6/ip6_tables.h
+++ b/include/linux/netfilter_ipv6/ip6_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* 25-Jul-1998 Major changes to allow for ip chain table
*
diff --git a/include/linux/netlink.h b/include/linux/netlink.h
index 8664fd26eb5d..6ddb4a5da371 100644
--- a/include/linux/netlink.h
+++ b/include/linux/netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_NETLINK_H
#define __LINUX_NETLINK_H
diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h
index 27c0aaa22cb0..67662d01130a 100644
--- a/include/linux/netpoll.h
+++ b/include/linux/netpoll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common code for low-level network console, dump, and debugger code
*
diff --git a/include/linux/nfs.h b/include/linux/nfs.h
index 610af5155ef2..0dc7ad38a0da 100644
--- a/include/linux/nfs.h
+++ b/include/linux/nfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NFS protocol definitions
*
diff --git a/include/linux/nfs3.h b/include/linux/nfs3.h
index a778ad8e3afd..404b8f724fc9 100644
--- a/include/linux/nfs3.h
+++ b/include/linux/nfs3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* NFSv3 protocol definitions
*/
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
index 47239c336688..47adac640191 100644
--- a/include/linux/nfs4.h
+++ b/include/linux/nfs4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/nfs4.h
*
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index a0282ceaa48b..f0015f801a78 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/nfs_fs.h
*
diff --git a/include/linux/nfs_fs_i.h b/include/linux/nfs_fs_i.h
index a5c50d97341e..98f9268fcfc2 100644
--- a/include/linux/nfs_fs_i.h
+++ b/include/linux/nfs_fs_i.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFS_FS_I
#define _NFS_FS_I
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h
index 74c44665e6d3..286b71c418b4 100644
--- a/include/linux/nfs_fs_sb.h
+++ b/include/linux/nfs_fs_sb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFS_FS_SB
#define _NFS_FS_SB
diff --git a/include/linux/nfs_iostat.h b/include/linux/nfs_iostat.h
index 9dcbbe9a51fb..027874c36c88 100644
--- a/include/linux/nfs_iostat.h
+++ b/include/linux/nfs_iostat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* User-space visible declarations for NFS client per-mount
* point statistics
diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h
index d117120c9b6e..e27572d30d97 100644
--- a/include/linux/nfs_page.h
+++ b/include/linux/nfs_page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/nfs_page.h
*
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index 164d5359d4ab..6959968dc36a 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NFS_XDR_H
#define _LINUX_NFS_XDR_H
diff --git a/include/linux/nfsacl.h b/include/linux/nfsacl.h
index 5e69e67b31ab..103d44695323 100644
--- a/include/linux/nfsacl.h
+++ b/include/linux/nfsacl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File: linux/nfsacl.h
*
diff --git a/include/linux/nls.h b/include/linux/nls.h
index 520681b68208..499e486b3722 100644
--- a/include/linux/nls.h
+++ b/include/linux/nls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NLS_H
#define _LINUX_NLS_H
diff --git a/include/linux/nmi.h b/include/linux/nmi.h
index a36abe2da13e..b8d868d23e79 100644
--- a/include/linux/nmi.h
+++ b/include/linux/nmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/nmi.h
*/
@@ -12,11 +13,31 @@
#ifdef CONFIG_LOCKUP_DETECTOR
void lockup_detector_init(void);
+void lockup_detector_soft_poweroff(void);
+void lockup_detector_cleanup(void);
+bool is_hardlockup(void);
+
+extern int watchdog_user_enabled;
+extern int nmi_watchdog_user_enabled;
+extern int soft_watchdog_user_enabled;
+extern int watchdog_thresh;
+extern unsigned long watchdog_enabled;
+
+extern struct cpumask watchdog_cpumask;
+extern unsigned long *watchdog_cpumask_bits;
+#ifdef CONFIG_SMP
+extern int sysctl_softlockup_all_cpu_backtrace;
+extern int sysctl_hardlockup_all_cpu_backtrace;
#else
-static inline void lockup_detector_init(void)
-{
-}
-#endif
+#define sysctl_softlockup_all_cpu_backtrace 0
+#define sysctl_hardlockup_all_cpu_backtrace 0
+#endif /* !CONFIG_SMP */
+
+#else /* CONFIG_LOCKUP_DETECTOR */
+static inline void lockup_detector_init(void) { }
+static inline void lockup_detector_soft_poweroff(void) { }
+static inline void lockup_detector_cleanup(void) { }
+#endif /* !CONFIG_LOCKUP_DETECTOR */
#ifdef CONFIG_SOFTLOCKUP_DETECTOR
extern void touch_softlockup_watchdog_sched(void);
@@ -24,29 +45,17 @@ extern void touch_softlockup_watchdog(void);
extern void touch_softlockup_watchdog_sync(void);
extern void touch_all_softlockup_watchdogs(void);
extern unsigned int softlockup_panic;
-extern int soft_watchdog_enabled;
-extern atomic_t watchdog_park_in_progress;
#else
-static inline void touch_softlockup_watchdog_sched(void)
-{
-}
-static inline void touch_softlockup_watchdog(void)
-{
-}
-static inline void touch_softlockup_watchdog_sync(void)
-{
-}
-static inline void touch_all_softlockup_watchdogs(void)
-{
-}
+static inline void touch_softlockup_watchdog_sched(void) { }
+static inline void touch_softlockup_watchdog(void) { }
+static inline void touch_softlockup_watchdog_sync(void) { }
+static inline void touch_all_softlockup_watchdogs(void) { }
#endif
#ifdef CONFIG_DETECT_HUNG_TASK
void reset_hung_task_detector(void);
#else
-static inline void reset_hung_task_detector(void)
-{
-}
+static inline void reset_hung_task_detector(void) { }
#endif
/*
@@ -54,12 +63,12 @@ static inline void reset_hung_task_detector(void)
* 'watchdog_enabled' variable. Each lockup detector has its dedicated bit -
* bit 0 for the hard lockup detector and bit 1 for the soft lockup detector.
*
- * 'watchdog_user_enabled', 'nmi_watchdog_enabled' and 'soft_watchdog_enabled'
- * are variables that are only used as an 'interface' between the parameters
- * in /proc/sys/kernel and the internal state bits in 'watchdog_enabled'. The
- * 'watchdog_thresh' variable is handled differently because its value is not
- * boolean, and the lockup detectors are 'suspended' while 'watchdog_thresh'
- * is equal zero.
+ * 'watchdog_user_enabled', 'nmi_watchdog_user_enabled' and
+ * 'soft_watchdog_user_enabled' are variables that are only used as an
+ * 'interface' between the parameters in /proc/sys/kernel and the internal
+ * state bits in 'watchdog_enabled'. The 'watchdog_thresh' variable is
+ * handled differently because its value is not boolean, and the lockup
+ * detectors are 'suspended' while 'watchdog_thresh' is equal zero.
*/
#define NMI_WATCHDOG_ENABLED_BIT 0
#define SOFT_WATCHDOG_ENABLED_BIT 1
@@ -73,17 +82,41 @@ extern unsigned int hardlockup_panic;
static inline void hardlockup_detector_disable(void) {}
#endif
+#if defined(CONFIG_HAVE_NMI_WATCHDOG) || defined(CONFIG_HARDLOCKUP_DETECTOR)
+# define NMI_WATCHDOG_SYSCTL_PERM 0644
+#else
+# define NMI_WATCHDOG_SYSCTL_PERM 0444
+#endif
+
#if defined(CONFIG_HARDLOCKUP_DETECTOR_PERF)
extern void arch_touch_nmi_watchdog(void);
+extern void hardlockup_detector_perf_stop(void);
+extern void hardlockup_detector_perf_restart(void);
+extern void hardlockup_detector_perf_disable(void);
+extern void hardlockup_detector_perf_enable(void);
+extern void hardlockup_detector_perf_cleanup(void);
+extern int hardlockup_detector_perf_init(void);
#else
-#if !defined(CONFIG_HAVE_NMI_WATCHDOG)
+static inline void hardlockup_detector_perf_stop(void) { }
+static inline void hardlockup_detector_perf_restart(void) { }
+static inline void hardlockup_detector_perf_disable(void) { }
+static inline void hardlockup_detector_perf_enable(void) { }
+static inline void hardlockup_detector_perf_cleanup(void) { }
+# if !defined(CONFIG_HAVE_NMI_WATCHDOG)
+static inline int hardlockup_detector_perf_init(void) { return -ENODEV; }
static inline void arch_touch_nmi_watchdog(void) {}
+# else
+static inline int hardlockup_detector_perf_init(void) { return 0; }
+# endif
#endif
-#endif
+
+void watchdog_nmi_stop(void);
+void watchdog_nmi_start(void);
+int watchdog_nmi_probe(void);
/**
* touch_nmi_watchdog - restart NMI watchdog timeout.
- *
+ *
* If the architecture supports the NMI watchdog, touch_nmi_watchdog()
* may be used to reset the timeout - for code which intentionally
* disables interrupts for a long time. This call is stateless.
@@ -153,22 +186,6 @@ static inline bool trigger_single_cpu_backtrace(int cpu)
u64 hw_nmi_get_sample_period(int watchdog_thresh);
#endif
-#ifdef CONFIG_LOCKUP_DETECTOR
-extern int nmi_watchdog_enabled;
-extern int watchdog_user_enabled;
-extern int watchdog_thresh;
-extern unsigned long watchdog_enabled;
-extern struct cpumask watchdog_cpumask;
-extern unsigned long *watchdog_cpumask_bits;
-extern int __read_mostly watchdog_suspended;
-#ifdef CONFIG_SMP
-extern int sysctl_softlockup_all_cpu_backtrace;
-extern int sysctl_hardlockup_all_cpu_backtrace;
-#else
-#define sysctl_softlockup_all_cpu_backtrace 0
-#define sysctl_hardlockup_all_cpu_backtrace 0
-#endif
-
#if defined(CONFIG_HARDLOCKUP_CHECK_TIMESTAMP) && \
defined(CONFIG_HARDLOCKUP_DETECTOR)
void watchdog_update_hrtimer_threshold(u64 period);
@@ -176,7 +193,6 @@ void watchdog_update_hrtimer_threshold(u64 period);
static inline void watchdog_update_hrtimer_threshold(u64 period) { }
#endif
-extern bool is_hardlockup(void);
struct ctl_table;
extern int proc_watchdog(struct ctl_table *, int ,
void __user *, size_t *, loff_t *);
@@ -188,18 +204,6 @@ extern int proc_watchdog_thresh(struct ctl_table *, int ,
void __user *, size_t *, loff_t *);
extern int proc_watchdog_cpumask(struct ctl_table *, int,
void __user *, size_t *, loff_t *);
-extern int lockup_detector_suspend(void);
-extern void lockup_detector_resume(void);
-#else
-static inline int lockup_detector_suspend(void)
-{
- return 0;
-}
-
-static inline void lockup_detector_resume(void)
-{
-}
-#endif
#ifdef CONFIG_HAVE_ACPI_APEI_NMI
#include <asm/nmi.h>
diff --git a/include/linux/node.h b/include/linux/node.h
index d1751beb462c..4ece0fee0ffc 100644
--- a/include/linux/node.h
+++ b/include/linux/node.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/node.h - generic node definition
*
diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h
index cf0b91c3ec12..de1c50b93c61 100644
--- a/include/linux/nodemask.h
+++ b/include/linux/nodemask.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_NODEMASK_H
#define __LINUX_NODEMASK_H
diff --git a/include/linux/notifier.h b/include/linux/notifier.h
index 4149868de4e6..6d731110e0db 100644
--- a/include/linux/notifier.h
+++ b/include/linux/notifier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Routines to manage notifier chains for passing status changes to any
* interested routines. We need this instead of hard coded call lists so
diff --git a/include/linux/ns_common.h b/include/linux/ns_common.h
index 85a5c8c16be9..5fbc4000358f 100644
--- a/include/linux/ns_common.h
+++ b/include/linux/ns_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NS_COMMON_H
#define _LINUX_NS_COMMON_H
diff --git a/include/linux/nsc_gpio.h b/include/linux/nsc_gpio.h
index 7da0cf3702ee..d7a04a6e3783 100644
--- a/include/linux/nsc_gpio.h
+++ b/include/linux/nsc_gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/**
nsc_gpio.c
diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h
index ac0d65bef5d0..2ae1b1a4d84d 100644
--- a/include/linux/nsproxy.h
+++ b/include/linux/nsproxy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NSPROXY_H
#define _LINUX_NSPROXY_H
diff --git a/include/linux/nubus.h b/include/linux/nubus.h
index 6165b2c62040..11ce6b1117a8 100644
--- a/include/linux/nubus.h
+++ b/include/linux/nubus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
nubus.h: various definitions and prototypes for NuBus drivers to use.
diff --git a/include/linux/numa.h b/include/linux/numa.h
index 3aaa31603a86..110b0e5d0fb0 100644
--- a/include/linux/numa.h
+++ b/include/linux/numa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NUMA_H
#define _LINUX_NUMA_H
diff --git a/include/linux/nvme-fc-driver.h b/include/linux/nvme-fc-driver.h
index 9c5cb4480806..a726f96010d5 100644
--- a/include/linux/nvme-fc-driver.h
+++ b/include/linux/nvme-fc-driver.h
@@ -346,11 +346,6 @@ struct nvme_fc_remote_port {
* indicating an FC transport Aborted status.
* Entrypoint is Mandatory.
*
- * @defer_rcv: Called by the transport to signal the LLLD that it has
- * begun processing of a previously received NVME CMD IU. The LLDD
- * is now free to re-use the rcv buffer associated with the
- * nvmefc_tgt_fcp_req.
- *
* @max_hw_queues: indicates the maximum number of hw queues the LLDD
* supports for cpu affinitization.
* Value is Mandatory. Must be at least 1.
@@ -806,11 +801,19 @@ struct nvmet_fc_target_port {
* outstanding operation (if there was one) to complete, then will
* call the fcp_req_release() callback to return the command's
* exchange context back to the LLDD.
+ * Entrypoint is Mandatory.
*
* @fcp_req_release: Called by the transport to return a nvmefc_tgt_fcp_req
* to the LLDD after all operations on the fcp operation are complete.
* This may be due to the command completing or upon completion of
* abort cleanup.
+ * Entrypoint is Mandatory.
+ *
+ * @defer_rcv: Called by the transport to signal the LLLD that it has
+ * begun processing of a previously received NVME CMD IU. The LLDD
+ * is now free to re-use the rcv buffer associated with the
+ * nvmefc_tgt_fcp_req.
+ * Entrypoint is Optional.
*
* @max_hw_queues: indicates the maximum number of hw queues the LLDD
* supports for cpu affinitization.
diff --git a/include/linux/nvme.h b/include/linux/nvme.h
index 87723c86f136..9310ce77d8e1 100644
--- a/include/linux/nvme.h
+++ b/include/linux/nvme.h
@@ -471,12 +471,14 @@ enum nvme_opcode {
*
* @NVME_SGL_FMT_ADDRESS: absolute address of the data block
* @NVME_SGL_FMT_OFFSET: relative offset of the in-capsule data block
+ * @NVME_SGL_FMT_TRANSPORT_A: transport defined format, value 0xA
* @NVME_SGL_FMT_INVALIDATE: RDMA transport specific remote invalidation
* request subtype
*/
enum {
NVME_SGL_FMT_ADDRESS = 0x00,
NVME_SGL_FMT_OFFSET = 0x01,
+ NVME_SGL_FMT_TRANSPORT_A = 0x0A,
NVME_SGL_FMT_INVALIDATE = 0x0f,
};
@@ -490,12 +492,16 @@ enum {
*
* For struct nvme_keyed_sgl_desc:
* @NVME_KEY_SGL_FMT_DATA_DESC: keyed data block descriptor
+ *
+ * Transport-specific SGL types:
+ * @NVME_TRANSPORT_SGL_DATA_DESC: Transport SGL data dlock descriptor
*/
enum {
NVME_SGL_FMT_DATA_DESC = 0x00,
NVME_SGL_FMT_SEG_DESC = 0x02,
NVME_SGL_FMT_LAST_SEG_DESC = 0x03,
NVME_KEY_SGL_FMT_DATA_DESC = 0x04,
+ NVME_TRANSPORT_SGL_DATA_DESC = 0x05,
};
struct nvme_sgl_desc {
@@ -1127,19 +1133,6 @@ enum {
NVME_SC_UNWRITTEN_BLOCK = 0x287,
NVME_SC_DNR = 0x4000,
-
-
- /*
- * FC Transport-specific error status values for NVME commands
- *
- * Transport-specific status code values must be in the range 0xB0..0xBF
- */
-
- /* Generic FC failure - catchall */
- NVME_SC_FC_TRANSPORT_ERROR = 0x00B0,
-
- /* I/O failure due to FC ABTS'd */
- NVME_SC_FC_TRANSPORT_ABORTED = 0x00B1,
};
struct nvme_completion {
diff --git a/include/linux/nvram.h b/include/linux/nvram.h
index cf0ff555a6ac..28bfb9ab94ca 100644
--- a/include/linux/nvram.h
+++ b/include/linux/nvram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NVRAM_H
#define _LINUX_NVRAM_H
diff --git a/include/linux/of.h b/include/linux/of.h
index cfc34117fc92..b240ed69dc96 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -734,6 +734,16 @@ static inline struct device_node *of_get_cpu_node(int cpu,
return NULL;
}
+static inline int of_n_addr_cells(struct device_node *np)
+{
+ return 0;
+
+}
+static inline int of_n_size_cells(struct device_node *np)
+{
+ return 0;
+}
+
static inline int of_property_read_u64(const struct device_node *np,
const char *propname, u64 *out_value)
{
diff --git a/include/linux/of_address.h b/include/linux/of_address.h
index 37864734ca50..b8ac44c9748e 100644
--- a/include/linux/of_address.h
+++ b/include/linux/of_address.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __OF_ADDRESS_H
#define __OF_ADDRESS_H
#include <linux/ioport.h>
diff --git a/include/linux/of_device.h b/include/linux/of_device.h
index 611502524425..8da5a1b31ece 100644
--- a/include/linux/of_device.h
+++ b/include/linux/of_device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_OF_DEVICE_H
#define _LINUX_OF_DEVICE_H
diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h
index 13394ac83c66..cddfaff4d0b7 100644
--- a/include/linux/of_iommu.h
+++ b/include/linux/of_iommu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __OF_IOMMU_H
#define __OF_IOMMU_H
diff --git a/include/linux/of_irq.h b/include/linux/of_irq.h
index 1e0deb8e8494..1214cabb2247 100644
--- a/include/linux/of_irq.h
+++ b/include/linux/of_irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __OF_IRQ_H
#define __OF_IRQ_H
diff --git a/include/linux/of_pci.h b/include/linux/of_pci.h
index 518c8d20647a..bf588a05d0d0 100644
--- a/include/linux/of_pci.h
+++ b/include/linux/of_pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __OF_PCI_H
#define __OF_PCI_H
diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h
index e0d1946270f3..fb908e598348 100644
--- a/include/linux/of_platform.h
+++ b/include/linux/of_platform.h
@@ -57,7 +57,14 @@ extern const struct of_device_id of_default_bus_match_table[];
extern struct platform_device *of_device_alloc(struct device_node *np,
const char *bus_id,
struct device *parent);
+#ifdef CONFIG_OF
extern struct platform_device *of_find_device_by_node(struct device_node *np);
+#else
+static inline struct platform_device *of_find_device_by_node(struct device_node *np)
+{
+ return NULL;
+}
+#endif
/* Platform devices and busses creation */
extern struct platform_device *of_platform_device_create(struct device_node *np,
diff --git a/include/linux/of_reserved_mem.h b/include/linux/of_reserved_mem.h
index f8e1992d6423..bb4fda7317be 100644
--- a/include/linux/of_reserved_mem.h
+++ b/include/linux/of_reserved_mem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __OF_RESERVED_MEM_H
#define __OF_RESERVED_MEM_H
diff --git a/include/linux/olpc-ec.h b/include/linux/olpc-ec.h
index 2925df3ce78a..79bdc6328c52 100644
--- a/include/linux/olpc-ec.h
+++ b/include/linux/olpc-ec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_OLPC_EC_H
#define _LINUX_OLPC_EC_H
diff --git a/include/linux/omap-dma.h b/include/linux/omap-dma.h
index 290081620b3e..840ce551e773 100644
--- a/include/linux/omap-dma.h
+++ b/include/linux/omap-dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_OMAP_DMA_H
#define __LINUX_OMAP_DMA_H
#include <linux/omap-dmaengine.h>
diff --git a/include/linux/once.h b/include/linux/once.h
index 9c98aaa87cbc..6790884d3c57 100644
--- a/include/linux/once.h
+++ b/include/linux/once.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ONCE_H
#define _LINUX_ONCE_H
diff --git a/include/linux/oom.h b/include/linux/oom.h
index 76aac4ce39bc..01c91d874a57 100644
--- a/include/linux/oom.h
+++ b/include/linux/oom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __INCLUDE_LINUX_OOM_H
#define __INCLUDE_LINUX_OOM_H
diff --git a/include/linux/osq_lock.h b/include/linux/osq_lock.h
index 703ea5c30a33..5581dbd3bd34 100644
--- a/include/linux/osq_lock.h
+++ b/include/linux/osq_lock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_OSQ_LOCK_H
#define __LINUX_OSQ_LOCK_H
diff --git a/include/linux/oxu210hp.h b/include/linux/oxu210hp.h
index 0bf96eae5389..94cd25165c08 100644
--- a/include/linux/oxu210hp.h
+++ b/include/linux/oxu210hp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* platform data for the OXU210HP HCD */
struct oxu210hp_platform_data {
diff --git a/include/linux/page-flags-layout.h b/include/linux/page-flags-layout.h
index 77b078c103b2..7ec86bf31ce4 100644
--- a/include/linux/page-flags-layout.h
+++ b/include/linux/page-flags-layout.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef PAGE_FLAGS_LAYOUT_H
#define PAGE_FLAGS_LAYOUT_H
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index ba2d470d2d0a..584b14c774c1 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Macros for manipulating and testing page->flags
*/
diff --git a/include/linux/page-isolation.h b/include/linux/page-isolation.h
index d4cd2014fa6f..05a04e603686 100644
--- a/include/linux/page-isolation.h
+++ b/include/linux/page-isolation.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PAGEISOLATION_H
#define __LINUX_PAGEISOLATION_H
diff --git a/include/linux/page_counter.h b/include/linux/page_counter.h
index 7e62920a3a94..c15ab80ad32d 100644
--- a/include/linux/page_counter.h
+++ b/include/linux/page_counter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PAGE_COUNTER_H
#define _LINUX_PAGE_COUNTER_H
diff --git a/include/linux/page_ext.h b/include/linux/page_ext.h
index 9298c393ddaa..ca5461efae2f 100644
--- a/include/linux/page_ext.h
+++ b/include/linux/page_ext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PAGE_EXT_H
#define __LINUX_PAGE_EXT_H
diff --git a/include/linux/page_idle.h b/include/linux/page_idle.h
index fec40271339f..1e894d34bdce 100644
--- a/include/linux/page_idle.h
+++ b/include/linux/page_idle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MM_PAGE_IDLE_H
#define _LINUX_MM_PAGE_IDLE_H
diff --git a/include/linux/page_owner.h b/include/linux/page_owner.h
index 2be728d156b5..8679ccd722e8 100644
--- a/include/linux/page_owner.h
+++ b/include/linux/page_owner.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PAGE_OWNER_H
#define __LINUX_PAGE_OWNER_H
diff --git a/include/linux/page_ref.h b/include/linux/page_ref.h
index 1fd71733aa68..760d74a0e9a9 100644
--- a/include/linux/page_ref.h
+++ b/include/linux/page_ref.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PAGE_REF_H
#define _LINUX_PAGE_REF_H
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index 5bbd6780f205..e08b5339023c 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PAGEMAP_H
#define _LINUX_PAGEMAP_H
diff --git a/include/linux/pagevec.h b/include/linux/pagevec.h
index 4dcd5506f1ed..2636c0c0f279 100644
--- a/include/linux/pagevec.h
+++ b/include/linux/pagevec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/pagevec.h
*
diff --git a/include/linux/parport_pc.h b/include/linux/parport_pc.h
index cc1767f5cca8..3d6fc576d6a1 100644
--- a/include/linux/parport_pc.h
+++ b/include/linux/parport_pc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PARPORT_PC_H
#define __LINUX_PARPORT_PC_H
diff --git a/include/linux/parser.h b/include/linux/parser.h
index 884c1e6eb3fe..12fc3482f5fc 100644
--- a/include/linux/parser.h
+++ b/include/linux/parser.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/parser.h
*
diff --git a/include/linux/patchkey.h b/include/linux/patchkey.h
index 97a919fc9927..f581defb2df0 100644
--- a/include/linux/patchkey.h
+++ b/include/linux/patchkey.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* <linux/patchkey.h> -- definition of _PATCHKEY macro
*
diff --git a/include/linux/path.h b/include/linux/path.h
index cde895cc4af4..81e65a5be7ce 100644
--- a/include/linux/path.h
+++ b/include/linux/path.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PATH_H
#define _LINUX_PATH_H
diff --git a/include/linux/pci-acpi.h b/include/linux/pci-acpi.h
index dd86c97f2454..8082b612f561 100644
--- a/include/linux/pci-acpi.h
+++ b/include/linux/pci-acpi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File pci-acpi.h
*
diff --git a/include/linux/pci-aspm.h b/include/linux/pci-aspm.h
index 207c561fb40e..3cc06b059017 100644
--- a/include/linux/pci-aspm.h
+++ b/include/linux/pci-aspm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* aspm.h
*
diff --git a/include/linux/pci-ats.h b/include/linux/pci-ats.h
index 782fb8e0755f..7c4b8e27268c 100644
--- a/include/linux/pci-ats.h
+++ b/include/linux/pci-ats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_PCI_ATS_H
#define LINUX_PCI_ATS_H
diff --git a/include/linux/pci-dma-compat.h b/include/linux/pci-dma-compat.h
index 39726caef5b1..d1f9fdade1e0 100644
--- a/include/linux/pci-dma-compat.h
+++ b/include/linux/pci-dma-compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* include this file if the platform implements the dma_ DMA Mapping API
* and wants to provide the pci_ DMA Mapping API in terms of it */
diff --git a/include/linux/pci-dma.h b/include/linux/pci-dma.h
index 549a041f9c08..0f7aa7353ca3 100644
--- a/include/linux/pci-dma.h
+++ b/include/linux/pci-dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PCI_DMA_H
#define _LINUX_PCI_DMA_H
diff --git a/include/linux/pci.h b/include/linux/pci.h
index f68c58a93dd0..d16a7c037ec0 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* pci.h
*
@@ -1685,6 +1686,8 @@ static inline int pci_get_new_domain_nr(void) { return -ENOSYS; }
#define dev_is_pci(d) (false)
#define dev_is_pf(d) (false)
+static inline bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags)
+{ return false; }
#endif /* CONFIG_PCI */
/* Include architecture-dependent settings and functions */
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 4adf6161ec77..ab20dc5db423 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* PCI Class, Vendor and Device IDs
*
diff --git a/include/linux/pcieport_if.h b/include/linux/pcieport_if.h
index e8f3f7479224..b69769dbf659 100644
--- a/include/linux/pcieport_if.h
+++ b/include/linux/pcieport_if.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* File: pcieport_if.h
* Purpose: PCI Express Port Bus Driver's IF Data Structure
diff --git a/include/linux/percpu-refcount.h b/include/linux/percpu-refcount.h
index c13dceb87b60..6658d9ee5257 100644
--- a/include/linux/percpu-refcount.h
+++ b/include/linux/percpu-refcount.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Percpu refcounts:
* (C) 2012 Google, Inc.
diff --git a/include/linux/percpu-rwsem.h b/include/linux/percpu-rwsem.h
index 93664f022ecf..b1f37a89e368 100644
--- a/include/linux/percpu-rwsem.h
+++ b/include/linux/percpu-rwsem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PERCPU_RWSEM_H
#define _LINUX_PERCPU_RWSEM_H
diff --git a/include/linux/percpu.h b/include/linux/percpu.h
index 6a5fb939d3e5..296bbe49d5d1 100644
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PERCPU_H
#define __LINUX_PERCPU_H
diff --git a/include/linux/percpu_counter.h b/include/linux/percpu_counter.h
index ec065387f443..73a7bf30fe9a 100644
--- a/include/linux/percpu_counter.h
+++ b/include/linux/percpu_counter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PERCPU_COUNTER_H
#define _LINUX_PERCPU_COUNTER_H
/*
diff --git a/include/linux/percpu_ida.h b/include/linux/percpu_ida.h
index f5cfdd6a5539..07d78e4653bc 100644
--- a/include/linux/percpu_ida.h
+++ b/include/linux/percpu_ida.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PERCPU_IDA_H__
#define __PERCPU_IDA_H__
diff --git a/include/linux/perf_regs.h b/include/linux/perf_regs.h
index 9b7dd59fe28d..476747456bca 100644
--- a/include/linux/perf_regs.h
+++ b/include/linux/perf_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PERF_REGS_H
#define _LINUX_PERF_REGS_H
diff --git a/include/linux/personality.h b/include/linux/personality.h
index aeb7892b2468..fc16fbc659c7 100644
--- a/include/linux/personality.h
+++ b/include/linux/personality.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PERSONALITY_H
#define _LINUX_PERSONALITY_H
diff --git a/include/linux/pfn.h b/include/linux/pfn.h
index 1132953235c0..14bc053c53d8 100644
--- a/include/linux/pfn.h
+++ b/include/linux/pfn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PFN_H_
#define _LINUX_PFN_H_
diff --git a/include/linux/pfn_t.h b/include/linux/pfn_t.h
index a49b3259cad7..43b1d7648e82 100644
--- a/include/linux/pfn_t.h
+++ b/include/linux/pfn_t.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PFN_T_H_
#define _LINUX_PFN_T_H_
#include <linux/mm.h>
diff --git a/include/linux/phy/ulpi_phy.h b/include/linux/phy/ulpi_phy.h
index f2ebe490a4bc..7054b440347c 100644
--- a/include/linux/phy/ulpi_phy.h
+++ b/include/linux/phy/ulpi_phy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/phy/phy.h>
/**
diff --git a/include/linux/phy_fixed.h b/include/linux/phy_fixed.h
index 1d41ec44e39d..cf6392de6eb0 100644
--- a/include/linux/phy_fixed.h
+++ b/include/linux/phy_fixed.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PHY_FIXED_H
#define __PHY_FIXED_H
diff --git a/include/linux/pid.h b/include/linux/pid.h
index 719582744a2e..dfd684ce0787 100644
--- a/include/linux/pid.h
+++ b/include/linux/pid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PID_H
#define _LINUX_PID_H
diff --git a/include/linux/pid_namespace.h b/include/linux/pid_namespace.h
index b09136f88cf4..c78af6061644 100644
--- a/include/linux/pid_namespace.h
+++ b/include/linux/pid_namespace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PID_NS_H
#define _LINUX_PID_NS_H
diff --git a/include/linux/pim.h b/include/linux/pim.h
index 0e81b2778ae0..290d4d2ed9b9 100644
--- a/include/linux/pim.h
+++ b/include/linux/pim.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PIM_H
#define __LINUX_PIM_H
diff --git a/include/linux/pinctrl/pinctrl-state.h b/include/linux/pinctrl/pinctrl-state.h
index 23073519339f..a0e785815a64 100644
--- a/include/linux/pinctrl/pinctrl-state.h
+++ b/include/linux/pinctrl/pinctrl-state.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Standard pin control state definitions
*/
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
index e7497c9dde7f..6a80cfc63e0c 100644
--- a/include/linux/pipe_fs_i.h
+++ b/include/linux/pipe_fs_i.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PIPE_FS_I_H
#define _LINUX_PIPE_FS_I_H
diff --git a/include/linux/pkeys.h b/include/linux/pkeys.h
index a1bacf1150b2..0794ca78c379 100644
--- a/include/linux/pkeys.h
+++ b/include/linux/pkeys.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PKEYS_H
#define _LINUX_PKEYS_H
diff --git a/include/linux/platform_data/ad7291.h b/include/linux/platform_data/ad7291.h
index bbd89fa51188..b1fd1530c9a5 100644
--- a/include/linux/platform_data/ad7291.h
+++ b/include/linux/platform_data/ad7291.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __IIO_AD7291_H__
#define __IIO_AD7291_H__
diff --git a/include/linux/platform_data/ad7791.h b/include/linux/platform_data/ad7791.h
index f9e4db1b82ae..cc7533049b5b 100644
--- a/include/linux/platform_data/ad7791.h
+++ b/include/linux/platform_data/ad7791.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PLATFORM_DATA_AD7791__
#define __LINUX_PLATFORM_DATA_AD7791__
diff --git a/include/linux/platform_data/ad7879.h b/include/linux/platform_data/ad7879.h
index 69e2e1fd2bc8..6655cc8453ac 100644
--- a/include/linux/platform_data/ad7879.h
+++ b/include/linux/platform_data/ad7879.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/platform_data/ad7879.h */
/* Touchscreen characteristics vary between boards and models. The
diff --git a/include/linux/platform_data/asoc-imx-ssi.h b/include/linux/platform_data/asoc-imx-ssi.h
index 92c7fd72f636..902851aeb0b4 100644
--- a/include/linux/platform_data/asoc-imx-ssi.h
+++ b/include/linux/platform_data/asoc-imx-ssi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_SSI_H
#define __MACH_SSI_H
diff --git a/include/linux/platform_data/asoc-kirkwood.h b/include/linux/platform_data/asoc-kirkwood.h
index d6a55bd2e578..d442cefa3928 100644
--- a/include/linux/platform_data/asoc-kirkwood.h
+++ b/include/linux/platform_data/asoc-kirkwood.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PLAT_AUDIO_H
#define __PLAT_AUDIO_H
diff --git a/include/linux/platform_data/asoc-mx27vis.h b/include/linux/platform_data/asoc-mx27vis.h
index 409adcd04d04..2107d0d992dd 100644
--- a/include/linux/platform_data/asoc-mx27vis.h
+++ b/include/linux/platform_data/asoc-mx27vis.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PLATFORM_DATA_ASOC_MX27VIS_H
#define __PLATFORM_DATA_ASOC_MX27VIS_H
diff --git a/include/linux/platform_data/asoc-palm27x.h b/include/linux/platform_data/asoc-palm27x.h
index 58afb30d5298..22b69a393a57 100644
--- a/include/linux/platform_data/asoc-palm27x.h
+++ b/include/linux/platform_data/asoc-palm27x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INCLUDE_PALMASOC_H_
#define _INCLUDE_PALMASOC_H_
diff --git a/include/linux/platform_data/bcmgenet.h b/include/linux/platform_data/bcmgenet.h
index 26af54321958..d8f8738629d2 100644
--- a/include/linux/platform_data/bcmgenet.h
+++ b/include/linux/platform_data/bcmgenet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PLATFORM_DATA_BCMGENET_H__
#define __LINUX_PLATFORM_DATA_BCMGENET_H__
diff --git a/include/linux/platform_data/crypto-atmel.h b/include/linux/platform_data/crypto-atmel.h
index b46e0d9062a0..0471aaf6999b 100644
--- a/include/linux/platform_data/crypto-atmel.h
+++ b/include/linux/platform_data/crypto-atmel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_CRYPTO_ATMEL_H
#define __LINUX_CRYPTO_ATMEL_H
diff --git a/include/linux/platform_data/dma-ep93xx.h b/include/linux/platform_data/dma-ep93xx.h
index e82c642fa53c..f8f1f6b952a6 100644
--- a/include/linux/platform_data/dma-ep93xx.h
+++ b/include/linux/platform_data/dma-ep93xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_DMA_H
#define __ASM_ARCH_DMA_H
diff --git a/include/linux/platform_data/dma-imx-sdma.h b/include/linux/platform_data/dma-imx-sdma.h
index 2d08816720f6..6eaa53cef0bd 100644
--- a/include/linux/platform_data/dma-imx-sdma.h
+++ b/include/linux/platform_data/dma-imx-sdma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_MXC_SDMA_H__
#define __MACH_MXC_SDMA_H__
diff --git a/include/linux/platform_data/dma-mv_xor.h b/include/linux/platform_data/dma-mv_xor.h
index 92ffd3245f76..6867a7ea329b 100644
--- a/include/linux/platform_data/dma-mv_xor.h
+++ b/include/linux/platform_data/dma-mv_xor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Marvell XOR platform device data definition file.
*/
diff --git a/include/linux/platform_data/ds620.h b/include/linux/platform_data/ds620.h
index 736bb87ac0fc..6ef58bb77e46 100644
--- a/include/linux/platform_data/ds620.h
+++ b/include/linux/platform_data/ds620.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_DS620_H
#define _LINUX_DS620_H
diff --git a/include/linux/platform_data/efm32-spi.h b/include/linux/platform_data/efm32-spi.h
index 31b19ca1d73a..a2c56fcd0534 100644
--- a/include/linux/platform_data/efm32-spi.h
+++ b/include/linux/platform_data/efm32-spi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PLATFORM_DATA_EFM32_SPI_H__
#define __LINUX_PLATFORM_DATA_EFM32_SPI_H__
diff --git a/include/linux/platform_data/efm32-uart.h b/include/linux/platform_data/efm32-uart.h
index ed0e975b3c54..ccbb8f11db75 100644
--- a/include/linux/platform_data/efm32-uart.h
+++ b/include/linux/platform_data/efm32-uart.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
*
diff --git a/include/linux/platform_data/gpio-htc-egpio.h b/include/linux/platform_data/gpio-htc-egpio.h
index b4201c971367..b7baf1e42c55 100644
--- a/include/linux/platform_data/gpio-htc-egpio.h
+++ b/include/linux/platform_data/gpio-htc-egpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* HTC simple EGPIO irq and gpio extender
*/
diff --git a/include/linux/platform_data/i2c-nuc900.h b/include/linux/platform_data/i2c-nuc900.h
index 9ffb12d06e91..23036273a97e 100644
--- a/include/linux/platform_data/i2c-nuc900.h
+++ b/include/linux/platform_data/i2c-nuc900.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_NUC900_I2C_H
#define __ASM_ARCH_NUC900_I2C_H
diff --git a/include/linux/platform_data/irda-pxaficp.h b/include/linux/platform_data/irda-pxaficp.h
index 3cd41f77dda4..bd35ddcf3068 100644
--- a/include/linux/platform_data/irda-pxaficp.h
+++ b/include/linux/platform_data/irda-pxaficp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASMARM_ARCH_IRDA_H
#define ASMARM_ARCH_IRDA_H
diff --git a/include/linux/platform_data/itco_wdt.h b/include/linux/platform_data/itco_wdt.h
index 0e95527edf25..2ccdce6a4e27 100644
--- a/include/linux/platform_data/itco_wdt.h
+++ b/include/linux/platform_data/itco_wdt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Platform data for the Intel TCO Watchdog
*/
diff --git a/include/linux/platform_data/keyboard-pxa930_rotary.h b/include/linux/platform_data/keyboard-pxa930_rotary.h
index 053587caffdd..3271aa01cbe8 100644
--- a/include/linux/platform_data/keyboard-pxa930_rotary.h
+++ b/include/linux/platform_data/keyboard-pxa930_rotary.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_PXA930_ROTARY_H
#define __ASM_ARCH_PXA930_ROTARY_H
diff --git a/include/linux/platform_data/keypad-ep93xx.h b/include/linux/platform_data/keypad-ep93xx.h
index adccee25b162..0e36818e3680 100644
--- a/include/linux/platform_data/keypad-ep93xx.h
+++ b/include/linux/platform_data/keypad-ep93xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __KEYPAD_EP93XX_H
#define __KEYPAD_EP93XX_H
diff --git a/include/linux/platform_data/keypad-pxa27x.h b/include/linux/platform_data/keypad-pxa27x.h
index 24625569d16d..a376442b9935 100644
--- a/include/linux/platform_data/keypad-pxa27x.h
+++ b/include/linux/platform_data/keypad-pxa27x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_PXA27x_KEYPAD_H
#define __ASM_ARCH_PXA27x_KEYPAD_H
diff --git a/include/linux/platform_data/keypad-w90p910.h b/include/linux/platform_data/keypad-w90p910.h
index 556778e8ddaa..206ca4ecd93f 100644
--- a/include/linux/platform_data/keypad-w90p910.h
+++ b/include/linux/platform_data/keypad-w90p910.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_W90P910_KEYPAD_H
#define __ASM_ARCH_W90P910_KEYPAD_H
diff --git a/include/linux/platform_data/lcd-mipid.h b/include/linux/platform_data/lcd-mipid.h
index 8e52c6572281..63f05eb23827 100644
--- a/include/linux/platform_data/lcd-mipid.h
+++ b/include/linux/platform_data/lcd-mipid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LCD_MIPID_H
#define __LCD_MIPID_H
diff --git a/include/linux/platform_data/max3421-hcd.h b/include/linux/platform_data/max3421-hcd.h
index 0303d1970084..5947a6f43d60 100644
--- a/include/linux/platform_data/max3421-hcd.h
+++ b/include/linux/platform_data/max3421-hcd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2014 eGauge Systems LLC
* Contributed by David Mosberger-Tang <davidm@egauge.net>
diff --git a/include/linux/platform_data/max6639.h b/include/linux/platform_data/max6639.h
index 6011c42034da..65bfdb4fdc15 100644
--- a/include/linux/platform_data/max6639.h
+++ b/include/linux/platform_data/max6639.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_MAX6639_H
#define _LINUX_MAX6639_H
diff --git a/include/linux/platform_data/max732x.h b/include/linux/platform_data/max732x.h
index c04bac8bf2fe..f231c635faec 100644
--- a/include/linux/platform_data/max732x.h
+++ b/include/linux/platform_data/max732x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_I2C_MAX732X_H
#define __LINUX_I2C_MAX732X_H
diff --git a/include/linux/platform_data/media/ir-rx51.h b/include/linux/platform_data/media/ir-rx51.h
index 2c94ab568bfa..9d127aa648e7 100644
--- a/include/linux/platform_data/media/ir-rx51.h
+++ b/include/linux/platform_data/media/ir-rx51.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IR_RX51_H
#define _IR_RX51_H
diff --git a/include/linux/platform_data/media/mmp-camera.h b/include/linux/platform_data/media/mmp-camera.h
index 7611963a257f..83804028115c 100644
--- a/include/linux/platform_data/media/mmp-camera.h
+++ b/include/linux/platform_data/media/mmp-camera.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Information for the Marvell Armada MMP camera
*/
diff --git a/include/linux/platform_data/media/omap4iss.h b/include/linux/platform_data/media/omap4iss.h
index 0d7620db5e32..2a511a8fcda7 100644
--- a/include/linux/platform_data/media/omap4iss.h
+++ b/include/linux/platform_data/media/omap4iss.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ARCH_ARM_PLAT_OMAP4_ISS_H
#define ARCH_ARM_PLAT_OMAP4_ISS_H
diff --git a/include/linux/platform_data/mmc-davinci.h b/include/linux/platform_data/mmc-davinci.h
index 9cea4ee377b5..87a8bed3b6cb 100644
--- a/include/linux/platform_data/mmc-davinci.h
+++ b/include/linux/platform_data/mmc-davinci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Board-specific MMC configuration
*/
diff --git a/include/linux/platform_data/mmc-mxcmmc.h b/include/linux/platform_data/mmc-mxcmmc.h
index b0fdaa9bd185..ac677351316a 100644
--- a/include/linux/platform_data/mmc-mxcmmc.h
+++ b/include/linux/platform_data/mmc-mxcmmc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASMARM_ARCH_MMC_H
#define ASMARM_ARCH_MMC_H
diff --git a/include/linux/platform_data/mmc-pxamci.h b/include/linux/platform_data/mmc-pxamci.h
index 1706b3597ce0..752f97c62ef2 100644
--- a/include/linux/platform_data/mmc-pxamci.h
+++ b/include/linux/platform_data/mmc-pxamci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASMARM_ARCH_MMC_H
#define ASMARM_ARCH_MMC_H
diff --git a/include/linux/platform_data/mmc-s3cmci.h b/include/linux/platform_data/mmc-s3cmci.h
index c42d31711944..b68d9f0bdd9e 100644
--- a/include/linux/platform_data/mmc-s3cmci.h
+++ b/include/linux/platform_data/mmc-s3cmci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ARCH_MCI_H
#define _ARCH_MCI_H
diff --git a/include/linux/platform_data/mmc-sdhci-s3c.h b/include/linux/platform_data/mmc-sdhci-s3c.h
index 249f02387a35..74a54eeb27b1 100644
--- a/include/linux/platform_data/mmc-sdhci-s3c.h
+++ b/include/linux/platform_data/mmc-sdhci-s3c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PLATFORM_DATA_SDHCI_S3C_H
#define __PLATFORM_DATA_SDHCI_S3C_H
diff --git a/include/linux/platform_data/mouse-pxa930_trkball.h b/include/linux/platform_data/mouse-pxa930_trkball.h
index 5e0789bc4729..ba0ac7a30d8c 100644
--- a/include/linux/platform_data/mouse-pxa930_trkball.h
+++ b/include/linux/platform_data/mouse-pxa930_trkball.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_PXA930_TRKBALL_H
#define __ASM_ARCH_PXA930_TRKBALL_H
diff --git a/include/linux/platform_data/mtd-nand-pxa3xx.h b/include/linux/platform_data/mtd-nand-pxa3xx.h
index 394d15597dc7..b42ad83cbc20 100644
--- a/include/linux/platform_data/mtd-nand-pxa3xx.h
+++ b/include/linux/platform_data/mtd-nand-pxa3xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_ARCH_PXA3XX_NAND_H
#define __ASM_ARCH_PXA3XX_NAND_H
diff --git a/include/linux/platform_data/omap1_bl.h b/include/linux/platform_data/omap1_bl.h
index 881a8e92d605..5e8b17d77a5f 100644
--- a/include/linux/platform_data/omap1_bl.h
+++ b/include/linux/platform_data/omap1_bl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __OMAP1_BL_H__
#define __OMAP1_BL_H__
diff --git a/include/linux/platform_data/pca953x.h b/include/linux/platform_data/pca953x.h
index 3c98dd4f901f..4eb53e023997 100644
--- a/include/linux/platform_data/pca953x.h
+++ b/include/linux/platform_data/pca953x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PCA953X_H
#define _LINUX_PCA953X_H
diff --git a/include/linux/platform_data/pcf857x.h b/include/linux/platform_data/pcf857x.h
index 0767a2a6b2f1..11d4ed78c7f4 100644
--- a/include/linux/platform_data/pcf857x.h
+++ b/include/linux/platform_data/pcf857x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PCF857X_H
#define __LINUX_PCF857X_H
diff --git a/include/linux/platform_data/pcmcia-pxa2xx_viper.h b/include/linux/platform_data/pcmcia-pxa2xx_viper.h
index d428be4db44c..a23b58aff9e1 100644
--- a/include/linux/platform_data/pcmcia-pxa2xx_viper.h
+++ b/include/linux/platform_data/pcmcia-pxa2xx_viper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCOM_PCMCIA_H
#define __ARCOM_PCMCIA_H
diff --git a/include/linux/platform_data/pinctrl-single.h b/include/linux/platform_data/pinctrl-single.h
index 72eacda9b360..1cf36fdf9510 100644
--- a/include/linux/platform_data/pinctrl-single.h
+++ b/include/linux/platform_data/pinctrl-single.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/**
* irq: optional wake-up interrupt
* rearm: optional soc specific rearm function
diff --git a/include/linux/platform_data/pixcir_i2c_ts.h b/include/linux/platform_data/pixcir_i2c_ts.h
index 646af6f8b838..4ab3cd6f1cc2 100644
--- a/include/linux/platform_data/pixcir_i2c_ts.h
+++ b/include/linux/platform_data/pixcir_i2c_ts.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PIXCIR_I2C_TS_H
#define _PIXCIR_I2C_TS_H
diff --git a/include/linux/platform_data/pxa2xx_udc.h b/include/linux/platform_data/pxa2xx_udc.h
index c6c5e98b5b82..ff9c35dca59d 100644
--- a/include/linux/platform_data/pxa2xx_udc.h
+++ b/include/linux/platform_data/pxa2xx_udc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This supports machine-specific differences in how the PXA2xx
* USB Device Controller (UDC) is wired.
diff --git a/include/linux/platform_data/sa11x0-serial.h b/include/linux/platform_data/sa11x0-serial.h
index 009e1d83fe39..8b79ab08af45 100644
--- a/include/linux/platform_data/sa11x0-serial.h
+++ b/include/linux/platform_data/sa11x0-serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Author: Nicolas Pitre
*
diff --git a/include/linux/platform_data/si5351.h b/include/linux/platform_data/si5351.h
index 533d9807e543..818c5c6e203f 100644
--- a/include/linux/platform_data/si5351.h
+++ b/include/linux/platform_data/si5351.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Si5351A/B/C programmable clock generator platform_data.
*/
diff --git a/include/linux/platform_data/spi-ep93xx.h b/include/linux/platform_data/spi-ep93xx.h
index 171a271c2cbd..eb16c6739ac2 100644
--- a/include/linux/platform_data/spi-ep93xx.h
+++ b/include/linux/platform_data/spi-ep93xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_EP93XX_SPI_H
#define __ASM_MACH_EP93XX_SPI_H
diff --git a/include/linux/platform_data/spi-imx.h b/include/linux/platform_data/spi-imx.h
index 08be445e8eb8..6f012fefa1a2 100644
--- a/include/linux/platform_data/spi-imx.h
+++ b/include/linux/platform_data/spi-imx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MACH_SPI_H_
#define __MACH_SPI_H_
diff --git a/include/linux/platform_data/spi-omap2-mcspi.h b/include/linux/platform_data/spi-omap2-mcspi.h
index c100456eab17..13c83a25958a 100644
--- a/include/linux/platform_data/spi-omap2-mcspi.h
+++ b/include/linux/platform_data/spi-omap2-mcspi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _OMAP2_MCSPI_H
#define _OMAP2_MCSPI_H
diff --git a/include/linux/platform_data/st1232_pdata.h b/include/linux/platform_data/st1232_pdata.h
index cac3e7b4c454..1dcd23bee24e 100644
--- a/include/linux/platform_data/st1232_pdata.h
+++ b/include/linux/platform_data/st1232_pdata.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ST1232_PDATA_H
#define _LINUX_ST1232_PDATA_H
diff --git a/include/linux/platform_data/syscon.h b/include/linux/platform_data/syscon.h
index 2354c6fa3726..2c089dd3e2bd 100644
--- a/include/linux/platform_data/syscon.h
+++ b/include/linux/platform_data/syscon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef PLATFORM_DATA_SYSCON_H
#define PLATFORM_DATA_SYSCON_H
diff --git a/include/linux/platform_data/tsc2007.h b/include/linux/platform_data/tsc2007.h
index c2d3aa1dadd4..a0ca52c41ccb 100644
--- a/include/linux/platform_data/tsc2007.h
+++ b/include/linux/platform_data/tsc2007.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_I2C_TSC2007_H
#define __LINUX_I2C_TSC2007_H
diff --git a/include/linux/platform_data/tsl2563.h b/include/linux/platform_data/tsl2563.h
index c90d7a09dda7..9cf9309c3f24 100644
--- a/include/linux/platform_data/tsl2563.h
+++ b/include/linux/platform_data/tsl2563.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_TSL2563_H
#define __LINUX_TSL2563_H
diff --git a/include/linux/platform_data/usb-ehci-mxc.h b/include/linux/platform_data/usb-ehci-mxc.h
index 157e71f79f99..ad9794d09bc8 100644
--- a/include/linux/platform_data/usb-ehci-mxc.h
+++ b/include/linux/platform_data/usb-ehci-mxc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __INCLUDE_ASM_ARCH_MXC_EHCI_H
#define __INCLUDE_ASM_ARCH_MXC_EHCI_H
diff --git a/include/linux/platform_data/usb-ohci-pxa27x.h b/include/linux/platform_data/usb-ohci-pxa27x.h
index 95b6e2a6e514..69adea7694f3 100644
--- a/include/linux/platform_data/usb-ohci-pxa27x.h
+++ b/include/linux/platform_data/usb-ohci-pxa27x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ASMARM_ARCH_OHCI_H
#define ASMARM_ARCH_OHCI_H
diff --git a/include/linux/platform_data/usb3503.h b/include/linux/platform_data/usb3503.h
index 1d1b6ef871f6..e049d51c1353 100644
--- a/include/linux/platform_data/usb3503.h
+++ b/include/linux/platform_data/usb3503.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __USB3503_H__
#define __USB3503_H__
diff --git a/include/linux/platform_data/video-clcd-versatile.h b/include/linux/platform_data/video-clcd-versatile.h
index 09ccf182af4d..305ebaec3afd 100644
--- a/include/linux/platform_data/video-clcd-versatile.h
+++ b/include/linux/platform_data/video-clcd-versatile.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef PLAT_CLCD_H
#define PLAT_CLCD_H
diff --git a/include/linux/platform_data/video-ep93xx.h b/include/linux/platform_data/video-ep93xx.h
index 699ac4109366..a6f3ccdec1cb 100644
--- a/include/linux/platform_data/video-ep93xx.h
+++ b/include/linux/platform_data/video-ep93xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __VIDEO_EP93XX_H
#define __VIDEO_EP93XX_H
diff --git a/include/linux/platform_data/video-imxfb.h b/include/linux/platform_data/video-imxfb.h
index cf9348b376ac..02812651af7d 100644
--- a/include/linux/platform_data/video-imxfb.h
+++ b/include/linux/platform_data/video-imxfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This structure describes the machine which we are running on.
*/
diff --git a/include/linux/platform_data/video_s3c.h b/include/linux/platform_data/video_s3c.h
index 48883995f47f..dd7747ba3269 100644
--- a/include/linux/platform_data/video_s3c.h
+++ b/include/linux/platform_data/video_s3c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PLATFORM_DATA_VIDEO_S3C
#define __PLATFORM_DATA_VIDEO_S3C
diff --git a/include/linux/pm-trace.h b/include/linux/pm-trace.h
index 7b78793f07d7..b8604f8847d9 100644
--- a/include/linux/pm-trace.h
+++ b/include/linux/pm-trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef PM_TRACE_H
#define PM_TRACE_H
diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h
index 032b55909145..2a3acf4dba9a 100644
--- a/include/linux/pm_qos.h
+++ b/include/linux/pm_qos.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PM_QOS_H
#define _LINUX_PM_QOS_H
/* interface for the pm_qos_power infrastructure of the linux kernel.
diff --git a/include/linux/pmu.h b/include/linux/pmu.h
index 99b400b8a241..9ac8fc60ad49 100644
--- a/include/linux/pmu.h
+++ b/include/linux/pmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for talking to the PMU. The PMU is a microcontroller
* which controls battery charging and system power on PowerBook 3400
diff --git a/include/linux/pnp.h b/include/linux/pnp.h
index 2588ca6a9028..3b12fd28af78 100644
--- a/include/linux/pnp.h
+++ b/include/linux/pnp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Linux Plug and Play Support
* Copyright by Adam Belay <ambx1@neo.rr.com>
diff --git a/include/linux/poison.h b/include/linux/poison.h
index a39540326417..15927ebc22f2 100644
--- a/include/linux/poison.h
+++ b/include/linux/poison.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_POISON_H
#define _LINUX_POISON_H
diff --git a/include/linux/poll.h b/include/linux/poll.h
index 2889f09a1c60..d384f12abdd5 100644
--- a/include/linux/poll.h
+++ b/include/linux/poll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_POLL_H
#define _LINUX_POLL_H
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h
index 62839fd04dce..672c4f32311e 100644
--- a/include/linux/posix-timers.h
+++ b/include/linux/posix-timers.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _linux_POSIX_TIMERS_H
#define _linux_POSIX_TIMERS_H
diff --git a/include/linux/posix_acl.h b/include/linux/posix_acl.h
index 5a9a739acdd5..b2b7255ec7f5 100644
--- a/include/linux/posix_acl.h
+++ b/include/linux/posix_acl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
File: linux/posix_acl.h
diff --git a/include/linux/posix_acl_xattr.h b/include/linux/posix_acl_xattr.h
index 8b867e3bf3aa..2387709991b5 100644
--- a/include/linux/posix_acl_xattr.h
+++ b/include/linux/posix_acl_xattr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
File: linux/posix_acl_xattr.h
diff --git a/include/linux/power/bq27xxx_battery.h b/include/linux/power/bq27xxx_battery.h
index 43194e02c1ee..e6187f524f2c 100644
--- a/include/linux/power/bq27xxx_battery.h
+++ b/include/linux/power/bq27xxx_battery.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_BQ27X00_BATTERY_H__
#define __LINUX_BQ27X00_BATTERY_H__
diff --git a/include/linux/pr.h b/include/linux/pr.h
index 65c01c10b335..94ceec713afe 100644
--- a/include/linux/pr.h
+++ b/include/linux/pr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_PR_H
#define LINUX_PR_H
diff --git a/include/linux/preempt.h b/include/linux/preempt.h
index cae461224948..5bd3f151da78 100644
--- a/include/linux/preempt.h
+++ b/include/linux/preempt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PREEMPT_H
#define __LINUX_PREEMPT_H
diff --git a/include/linux/prefetch.h b/include/linux/prefetch.h
index a3bfbdf63d32..13eafebf3549 100644
--- a/include/linux/prefetch.h
+++ b/include/linux/prefetch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Generic cache management functions. Everything is arch-specific,
* but this header exists to make sure the defines/functions can be
diff --git a/include/linux/prime_numbers.h b/include/linux/prime_numbers.h
index 14ec4f567342..2b8e99c948d3 100644
--- a/include/linux/prime_numbers.h
+++ b/include/linux/prime_numbers.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PRIME_NUMBERS_H
#define __LINUX_PRIME_NUMBERS_H
diff --git a/include/linux/printk.h b/include/linux/printk.h
index e10f27468322..335926039adc 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __KERNEL_PRINTK__
#define __KERNEL_PRINTK__
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
index 76124dd4e36d..928ef9e4d912 100644
--- a/include/linux/proc_fs.h
+++ b/include/linux/proc_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* The proc filesystem constants/structures
*/
diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h
index 06844b54dfc1..2ff18c9840a7 100644
--- a/include/linux/proc_ns.h
+++ b/include/linux/proc_ns.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* procfs namespace bits
*/
diff --git a/include/linux/processor.h b/include/linux/processor.h
index da0c5e56ca02..dbc952eec869 100644
--- a/include/linux/processor.h
+++ b/include/linux/processor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Misc low level processor primitives */
#ifndef _LINUX_PROCESSOR_H
#define _LINUX_PROCESSOR_H
diff --git a/include/linux/profile.h b/include/linux/profile.h
index b537a25ffa17..bad18ca43150 100644
--- a/include/linux/profile.h
+++ b/include/linux/profile.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PROFILE_H
#define _LINUX_PROFILE_H
diff --git a/include/linux/projid.h b/include/linux/projid.h
index 8c1f2c55226d..613730622a1a 100644
--- a/include/linux/projid.h
+++ b/include/linux/projid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PROJID_H
#define _LINUX_PROJID_H
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h
index 0e5fcc11b1b8..919b2a0b0307 100644
--- a/include/linux/ptrace.h
+++ b/include/linux/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PTRACE_H
#define _LINUX_PTRACE_H
diff --git a/include/linux/purgatory.h b/include/linux/purgatory.h
index d60d4e278609..b950e961cfa8 100644
--- a/include/linux/purgatory.h
+++ b/include/linux/purgatory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PURGATORY_H
#define _LINUX_PURGATORY_H
diff --git a/include/linux/pvclock_gtod.h b/include/linux/pvclock_gtod.h
index a71d2dbd3610..f63549581f3e 100644
--- a/include/linux/pvclock_gtod.h
+++ b/include/linux/pvclock_gtod.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PVCLOCK_GTOD_H
#define _PVCLOCK_GTOD_H
diff --git a/include/linux/pwm.h b/include/linux/pwm.h
index 08fad7c6a471..56518adc31dd 100644
--- a/include/linux/pwm.h
+++ b/include/linux/pwm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_PWM_H
#define __LINUX_PWM_H
diff --git a/include/linux/pwm_backlight.h b/include/linux/pwm_backlight.h
index efdd9227a49c..e8afbd71a140 100644
--- a/include/linux/pwm_backlight.h
+++ b/include/linux/pwm_backlight.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Generic PWM backlight driver data - see drivers/video/backlight/pwm_bl.c
*/
diff --git a/include/linux/pxa168_eth.h b/include/linux/pxa168_eth.h
index e1ab6e86cdb3..fb09c2c7cb75 100644
--- a/include/linux/pxa168_eth.h
+++ b/include/linux/pxa168_eth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*pxa168 ethernet platform device data definition file.
*/
diff --git a/include/linux/qed/qed_fcoe_if.h b/include/linux/qed/qed_fcoe_if.h
index 1e015c50e6b8..46082480a2c3 100644
--- a/include/linux/qed/qed_fcoe_if.h
+++ b/include/linux/qed/qed_fcoe_if.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _QED_FCOE_IF_H
#define _QED_FCOE_IF_H
#include <linux/types.h>
diff --git a/include/linux/qnx6_fs.h b/include/linux/qnx6_fs.h
index 26049eab9010..13373d437cf2 100644
--- a/include/linux/qnx6_fs.h
+++ b/include/linux/qnx6_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Name : qnx6_fs.h
* Author : Kai Bankett
diff --git a/include/linux/quicklist.h b/include/linux/quicklist.h
index 3bdfa70bc642..034982c98c8b 100644
--- a/include/linux/quicklist.h
+++ b/include/linux/quicklist.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_QUICKLIST_H
#define LINUX_QUICKLIST_H
/*
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
index 0ce6fc49962e..2fb6fb11132e 100644
--- a/include/linux/quotaops.h
+++ b/include/linux/quotaops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for diskquota-operations. When diskquota is configured these
* macros expand to the right source-code.
diff --git a/include/linux/raid/xor.h b/include/linux/raid/xor.h
index 5a210959e3f8..2a9fee8ddae3 100644
--- a/include/linux/raid/xor.h
+++ b/include/linux/raid/xor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XOR_H
#define _XOR_H
diff --git a/include/linux/ramfs.h b/include/linux/ramfs.h
index ecc730977a5a..5ef7d54caac2 100644
--- a/include/linux/ramfs.h
+++ b/include/linux/ramfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RAMFS_H
#define _LINUX_RAMFS_H
diff --git a/include/linux/random.h b/include/linux/random.h
index eafea6a09361..4024f7d9c77d 100644
--- a/include/linux/random.h
+++ b/include/linux/random.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/random.h
*
diff --git a/include/linux/range.h b/include/linux/range.h
index bd184a5db791..d1fbeb664012 100644
--- a/include/linux/range.h
+++ b/include/linux/range.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RANGE_H
#define _LINUX_RANGE_H
diff --git a/include/linux/ras.h b/include/linux/ras.h
index be5338a35d57..7c3debb47c87 100644
--- a/include/linux/ras.h
+++ b/include/linux/ras.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __RAS_H__
#define __RAS_H__
diff --git a/include/linux/ratelimit.h b/include/linux/ratelimit.h
index 56375edf2ed2..8ddf79e9207a 100644
--- a/include/linux/ratelimit.h
+++ b/include/linux/ratelimit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RATELIMIT_H
#define _LINUX_RATELIMIT_H
diff --git a/include/linux/rational.h b/include/linux/rational.h
index bfa6a2bcfb32..33f5f5fc3e36 100644
--- a/include/linux/rational.h
+++ b/include/linux/rational.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* rational fractions
*
diff --git a/include/linux/rbtree_latch.h b/include/linux/rbtree_latch.h
index 4f3432c61d12..ece43e882b56 100644
--- a/include/linux/rbtree_latch.h
+++ b/include/linux/rbtree_latch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Latched RB-trees
*
diff --git a/include/linux/rculist.h b/include/linux/rculist.h
index b1fd8bf85fdc..c2cdd45a880a 100644
--- a/include/linux/rculist.h
+++ b/include/linux/rculist.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RCULIST_H
#define _LINUX_RCULIST_H
@@ -276,7 +277,7 @@ static inline void list_splice_tail_init_rcu(struct list_head *list,
#define list_entry_rcu(ptr, type, member) \
container_of(lockless_dereference(ptr), type, member)
-/**
+/*
* Where are list_empty_rcu() and list_first_entry_rcu()?
*
* Implementing those functions following their counterparts list_empty() and
diff --git a/include/linux/rculist_bl.h b/include/linux/rculist_bl.h
index 4f216c59e7db..66e73ec1aa99 100644
--- a/include/linux/rculist_bl.h
+++ b/include/linux/rculist_bl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RCULIST_BL_H
#define _LINUX_RCULIST_BL_H
diff --git a/include/linux/rculist_nulls.h b/include/linux/rculist_nulls.h
index a23a33153180..a328e8181e49 100644
--- a/include/linux/rculist_nulls.h
+++ b/include/linux/rculist_nulls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RCULIST_NULLS_H
#define _LINUX_RCULIST_NULLS_H
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index de50d8a4cf41..1a9f70d44af9 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -523,7 +523,7 @@ static inline void rcu_preempt_sleep_check(void) { }
* Return the value of the specified RCU-protected pointer, but omit
* both the smp_read_barrier_depends() and the READ_ONCE(). This
* is useful in cases where update-side locks prevent the value of the
- * pointer from changing. Please note that this primitive does -not-
+ * pointer from changing. Please note that this primitive does *not*
* prevent the compiler from repeating this reference or combining it
* with other references, so it should not be used without protection
* of appropriate locks.
@@ -568,7 +568,7 @@ static inline void rcu_preempt_sleep_check(void) { }
* is handed off from RCU to some other synchronization mechanism, for
* example, reference counting or locking. In C11, it would map to
* kill_dependency(). It could be used as follows:
- *
+ * ``
* rcu_read_lock();
* p = rcu_dereference(gp);
* long_lived = is_long_lived(p);
@@ -579,6 +579,7 @@ static inline void rcu_preempt_sleep_check(void) { }
* p = rcu_pointer_handoff(p);
* }
* rcu_read_unlock();
+ *``
*/
#define rcu_pointer_handoff(p) (p)
@@ -778,18 +779,21 @@ static inline notrace void rcu_read_unlock_sched_notrace(void)
/**
* RCU_INIT_POINTER() - initialize an RCU protected pointer
+ * @p: The pointer to be initialized.
+ * @v: The value to initialized the pointer to.
*
* Initialize an RCU-protected pointer in special cases where readers
* do not need ordering constraints on the CPU or the compiler. These
* special cases are:
*
- * 1. This use of RCU_INIT_POINTER() is NULLing out the pointer -or-
+ * 1. This use of RCU_INIT_POINTER() is NULLing out the pointer *or*
* 2. The caller has taken whatever steps are required to prevent
- * RCU readers from concurrently accessing this pointer -or-
+ * RCU readers from concurrently accessing this pointer *or*
* 3. The referenced data structure has already been exposed to
- * readers either at compile time or via rcu_assign_pointer() -and-
- * a. You have not made -any- reader-visible changes to
- * this structure since then -or-
+ * readers either at compile time or via rcu_assign_pointer() *and*
+ *
+ * a. You have not made *any* reader-visible changes to
+ * this structure since then *or*
* b. It is OK for readers accessing this structure from its
* new location to see the old state of the structure. (For
* example, the changes were to statistical counters or to
@@ -805,7 +809,7 @@ static inline notrace void rcu_read_unlock_sched_notrace(void)
* by a single external-to-structure RCU-protected pointer, then you may
* use RCU_INIT_POINTER() to initialize the internal RCU-protected
* pointers, but you must use rcu_assign_pointer() to initialize the
- * external-to-structure pointer -after- you have completely initialized
+ * external-to-structure pointer *after* you have completely initialized
* the reader-accessible portions of the linked structure.
*
* Note that unlike rcu_assign_pointer(), RCU_INIT_POINTER() provides no
@@ -819,6 +823,8 @@ static inline notrace void rcu_read_unlock_sched_notrace(void)
/**
* RCU_POINTER_INITIALIZER() - statically initialize an RCU protected pointer
+ * @p: The pointer to be initialized.
+ * @v: The value to initialized the pointer to.
*
* GCC-style initialization for an RCU-protected pointer in a structure field.
*/
diff --git a/include/linux/rcupdate_wait.h b/include/linux/rcupdate_wait.h
index e774b4f5f220..57f371344152 100644
--- a/include/linux/rcupdate_wait.h
+++ b/include/linux/rcupdate_wait.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_RCUPDATE_WAIT_H
#define _LINUX_SCHED_RCUPDATE_WAIT_H
diff --git a/include/linux/rcuwait.h b/include/linux/rcuwait.h
index a4ede51b3e7c..90bfa3279a01 100644
--- a/include/linux/rcuwait.h
+++ b/include/linux/rcuwait.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RCUWAIT_H_
#define _LINUX_RCUWAIT_H_
diff --git a/include/linux/reboot-mode.h b/include/linux/reboot-mode.h
index 75f7fe5c881f..4a2abb38d1d6 100644
--- a/include/linux/reboot-mode.h
+++ b/include/linux/reboot-mode.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __REBOOT_MODE_H__
#define __REBOOT_MODE_H__
diff --git a/include/linux/reboot.h b/include/linux/reboot.h
index a7ff409f386d..d03da0eb95ca 100644
--- a/include/linux/reboot.h
+++ b/include/linux/reboot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_REBOOT_H
#define _LINUX_REBOOT_H
diff --git a/include/linux/reciprocal_div.h b/include/linux/reciprocal_div.h
index 8c5a3fb6c6c5..e031e9f2f9d8 100644
--- a/include/linux/reciprocal_div.h
+++ b/include/linux/reciprocal_div.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RECIPROCAL_DIV_H
#define _LINUX_RECIPROCAL_DIV_H
diff --git a/include/linux/refcount.h b/include/linux/refcount.h
index 48b7c9c68c4d..e8286585e149 100644
--- a/include/linux/refcount.h
+++ b/include/linux/refcount.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_REFCOUNT_H
#define _LINUX_REFCOUNT_H
diff --git a/include/linux/regulator/of_regulator.h b/include/linux/regulator/of_regulator.h
index 763953f7e3b8..df7f154a2ed5 100644
--- a/include/linux/regulator/of_regulator.h
+++ b/include/linux/regulator/of_regulator.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* OpenFirmware regulator support routines
*
diff --git a/include/linux/regulator/userspace-consumer.h b/include/linux/regulator/userspace-consumer.h
index b4554ce9d4bb..b5dba0628951 100644
--- a/include/linux/regulator/userspace-consumer.h
+++ b/include/linux/regulator/userspace-consumer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __REGULATOR_PLATFORM_CONSUMER_H_
#define __REGULATOR_PLATFORM_CONSUMER_H_
diff --git a/include/linux/relay.h b/include/linux/relay.h
index 68c1448e56bb..e1bdf01a86e2 100644
--- a/include/linux/relay.h
+++ b/include/linux/relay.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/relay.h
*
diff --git a/include/linux/reset-controller.h b/include/linux/reset-controller.h
index db1fe6772ad5..adb88f8cefbc 100644
--- a/include/linux/reset-controller.h
+++ b/include/linux/reset-controller.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RESET_CONTROLLER_H_
#define _LINUX_RESET_CONTROLLER_H_
diff --git a/include/linux/reset.h b/include/linux/reset.h
index 56463f37f3e6..4c7871ddf3c6 100644
--- a/include/linux/reset.h
+++ b/include/linux/reset.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RESET_H_
#define _LINUX_RESET_H_
diff --git a/include/linux/resource.h b/include/linux/resource.h
index 277afdad6589..bdf491cbcab7 100644
--- a/include/linux/resource.h
+++ b/include/linux/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RESOURCE_H
#define _LINUX_RESOURCE_H
diff --git a/include/linux/restart_block.h b/include/linux/restart_block.h
index 19df8422606c..bcfdb918cd81 100644
--- a/include/linux/restart_block.h
+++ b/include/linux/restart_block.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Common syscall restarting data
*/
diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
index ee9b461af095..fa6ace66fea5 100644
--- a/include/linux/ring_buffer.h
+++ b/include/linux/ring_buffer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RING_BUFFER_H
#define _LINUX_RING_BUFFER_H
diff --git a/include/linux/rmap.h b/include/linux/rmap.h
index 733d3d8181e2..988d176472df 100644
--- a/include/linux/rmap.h
+++ b/include/linux/rmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RMAP_H
#define _LINUX_RMAP_H
/*
diff --git a/include/linux/rndis.h b/include/linux/rndis.h
index 93c0a64aefa6..882587c2b15e 100644
--- a/include/linux/rndis.h
+++ b/include/linux/rndis.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Remote Network Driver Interface Specification (RNDIS)
* definitions of the magic numbers used by this protocol
diff --git a/include/linux/root_dev.h b/include/linux/root_dev.h
index ed241aad7c17..bab671b0782f 100644
--- a/include/linux/root_dev.h
+++ b/include/linux/root_dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ROOT_DEV_H_
#define _ROOT_DEV_H_
diff --git a/include/linux/rpmsg/qcom_smd.h b/include/linux/rpmsg/qcom_smd.h
index f27917e0a101..2e92d7407a85 100644
--- a/include/linux/rpmsg/qcom_smd.h
+++ b/include/linux/rpmsg/qcom_smd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_RPMSG_QCOM_SMD_H
#define _LINUX_RPMSG_QCOM_SMD_H
diff --git a/include/linux/rtc.h b/include/linux/rtc.h
index e6d0f9c1cafd..f6d7ee98d93c 100644
--- a/include/linux/rtc.h
+++ b/include/linux/rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Generic RTC interface.
* This version contains the part of the user interface to the Real Time Clock
diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h
index 53fcbe9de7fd..1b92a28dd672 100644
--- a/include/linux/rtmutex.h
+++ b/include/linux/rtmutex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* RT Mutexes: blocking mutual exclusion locks with PI support
*
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
index dea59c8eec54..ff3dd2ec44b4 100644
--- a/include/linux/rtnetlink.h
+++ b/include/linux/rtnetlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_RTNETLINK_H
#define __LINUX_RTNETLINK_H
diff --git a/include/linux/rwsem-spinlock.h b/include/linux/rwsem-spinlock.h
index e784761a4443..e47568363e5e 100644
--- a/include/linux/rwsem-spinlock.h
+++ b/include/linux/rwsem-spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* rwsem-spinlock.h: fallback C implementation
*
* Copyright (c) 2001 David Howells (dhowells@redhat.com).
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
index 0ad7318ff299..dfa34d803439 100644
--- a/include/linux/rwsem.h
+++ b/include/linux/rwsem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* rwsem.h: R/W semaphores, public interface
*
* Written by David Howells (dhowells@redhat.com).
diff --git a/include/linux/s3c_adc_battery.h b/include/linux/s3c_adc_battery.h
index 99dadbffdd4f..833871dcf6fd 100644
--- a/include/linux/s3c_adc_battery.h
+++ b/include/linux/s3c_adc_battery.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _S3C_ADC_BATTERY_H
#define _S3C_ADC_BATTERY_H
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h
index 4b3286ac60c8..d87dfa41142d 100644
--- a/include/linux/scatterlist.h
+++ b/include/linux/scatterlist.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCATTERLIST_H
#define _LINUX_SCATTERLIST_H
diff --git a/include/linux/scc.h b/include/linux/scc.h
index c5a004962679..745eabd17c10 100644
--- a/include/linux/scc.h
+++ b/include/linux/scc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: scc.h,v 1.29 1997/04/02 14:56:45 jreuter Exp jreuter $ */
#ifndef _SCC_H
#define _SCC_H
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 92fb8dd5a9e4..fdf74f27acf1 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_H
#define _LINUX_SCHED_H
@@ -65,25 +66,23 @@ struct task_group;
*/
/* Used in tsk->state: */
-#define TASK_RUNNING 0
-#define TASK_INTERRUPTIBLE 1
-#define TASK_UNINTERRUPTIBLE 2
-#define __TASK_STOPPED 4
-#define __TASK_TRACED 8
+#define TASK_RUNNING 0x0000
+#define TASK_INTERRUPTIBLE 0x0001
+#define TASK_UNINTERRUPTIBLE 0x0002
+#define __TASK_STOPPED 0x0004
+#define __TASK_TRACED 0x0008
/* Used in tsk->exit_state: */
-#define EXIT_DEAD 16
-#define EXIT_ZOMBIE 32
+#define EXIT_DEAD 0x0010
+#define EXIT_ZOMBIE 0x0020
#define EXIT_TRACE (EXIT_ZOMBIE | EXIT_DEAD)
/* Used in tsk->state again: */
-#define TASK_DEAD 64
-#define TASK_WAKEKILL 128
-#define TASK_WAKING 256
-#define TASK_PARKED 512
-#define TASK_NOLOAD 1024
-#define TASK_NEW 2048
-#define TASK_STATE_MAX 4096
-
-#define TASK_STATE_TO_CHAR_STR "RSDTtXZxKWPNn"
+#define TASK_PARKED 0x0040
+#define TASK_DEAD 0x0080
+#define TASK_WAKEKILL 0x0100
+#define TASK_WAKING 0x0200
+#define TASK_NOLOAD 0x0400
+#define TASK_NEW 0x0800
+#define TASK_STATE_MAX 0x1000
/* Convenience macros for the sake of set_current_state: */
#define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE)
@@ -99,7 +98,8 @@ struct task_group;
/* get_task_state(): */
#define TASK_REPORT (TASK_RUNNING | TASK_INTERRUPTIBLE | \
TASK_UNINTERRUPTIBLE | __TASK_STOPPED | \
- __TASK_TRACED | EXIT_ZOMBIE | EXIT_DEAD)
+ __TASK_TRACED | EXIT_DEAD | EXIT_ZOMBIE | \
+ TASK_PARKED)
#define task_is_traced(task) ((task->state & __TASK_TRACED) != 0)
@@ -1243,17 +1243,34 @@ static inline pid_t task_pgrp_nr(struct task_struct *tsk)
return task_pgrp_nr_ns(tsk, &init_pid_ns);
}
-static inline char task_state_to_char(struct task_struct *task)
+#define TASK_REPORT_IDLE (TASK_REPORT + 1)
+#define TASK_REPORT_MAX (TASK_REPORT_IDLE << 1)
+
+static inline unsigned int __get_task_state(struct task_struct *tsk)
+{
+ unsigned int tsk_state = READ_ONCE(tsk->state);
+ unsigned int state = (tsk_state | tsk->exit_state) & TASK_REPORT;
+
+ BUILD_BUG_ON_NOT_POWER_OF_2(TASK_REPORT_MAX);
+
+ if (tsk_state == TASK_IDLE)
+ state = TASK_REPORT_IDLE;
+
+ return fls(state);
+}
+
+static inline char __task_state_to_char(unsigned int state)
{
- const char stat_nam[] = TASK_STATE_TO_CHAR_STR;
- unsigned long state = task->state;
+ static const char state_char[] = "RSDTtXZPI";
- state = state ? __ffs(state) + 1 : 0;
+ BUILD_BUG_ON(1 + ilog2(TASK_REPORT_MAX) != sizeof(state_char) - 1);
- /* Make sure the string lines up properly with the number of task states: */
- BUILD_BUG_ON(sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1);
+ return state_char[state];
+}
- return state < sizeof(stat_nam) - 1 ? stat_nam[state] : '?';
+static inline char task_state_to_char(struct task_struct *tsk)
+{
+ return __task_state_to_char(__get_task_state(tsk));
}
/**
diff --git a/include/linux/sched/autogroup.h b/include/linux/sched/autogroup.h
index 55cd496df884..704391cc1d20 100644
--- a/include/linux/sched/autogroup.h
+++ b/include/linux/sched/autogroup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_AUTOGROUP_H
#define _LINUX_SCHED_AUTOGROUP_H
diff --git a/include/linux/sched/clock.h b/include/linux/sched/clock.h
index a55600ffdf4b..867d588314e0 100644
--- a/include/linux/sched/clock.h
+++ b/include/linux/sched/clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_CLOCK_H
#define _LINUX_SCHED_CLOCK_H
diff --git a/include/linux/sched/coredump.h b/include/linux/sched/coredump.h
index 98ae0d05aa32..9c8847395b5e 100644
--- a/include/linux/sched/coredump.h
+++ b/include/linux/sched/coredump.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_COREDUMP_H
#define _LINUX_SCHED_COREDUMP_H
diff --git a/include/linux/sched/cpufreq.h b/include/linux/sched/cpufreq.h
index d2be2ccbb372..d1ad3d825561 100644
--- a/include/linux/sched/cpufreq.h
+++ b/include/linux/sched/cpufreq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_CPUFREQ_H
#define _LINUX_SCHED_CPUFREQ_H
diff --git a/include/linux/sched/cputime.h b/include/linux/sched/cputime.h
index 4c5b9735c1ae..d0677f6739f6 100644
--- a/include/linux/sched/cputime.h
+++ b/include/linux/sched/cputime.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_CPUTIME_H
#define _LINUX_SCHED_CPUTIME_H
diff --git a/include/linux/sched/deadline.h b/include/linux/sched/deadline.h
index 975be862e083..a5bc8728ead7 100644
--- a/include/linux/sched/deadline.h
+++ b/include/linux/sched/deadline.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_DEADLINE_H
#define _LINUX_SCHED_DEADLINE_H
diff --git a/include/linux/sched/debug.h b/include/linux/sched/debug.h
index 5d58d49e9f87..95fb9e025247 100644
--- a/include/linux/sched/debug.h
+++ b/include/linux/sched/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_DEBUG_H
#define _LINUX_SCHED_DEBUG_H
diff --git a/include/linux/sched/hotplug.h b/include/linux/sched/hotplug.h
index 752ac7e628d7..9a62ffdd296f 100644
--- a/include/linux/sched/hotplug.h
+++ b/include/linux/sched/hotplug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_HOTPLUG_H
#define _LINUX_SCHED_HOTPLUG_H
diff --git a/include/linux/sched/idle.h b/include/linux/sched/idle.h
index 5ca63ebad6b4..22873d276be6 100644
--- a/include/linux/sched/idle.h
+++ b/include/linux/sched/idle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_IDLE_H
#define _LINUX_SCHED_IDLE_H
diff --git a/include/linux/sched/init.h b/include/linux/sched/init.h
index 127215045285..03542575fd33 100644
--- a/include/linux/sched/init.h
+++ b/include/linux/sched/init.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_INIT_H
#define _LINUX_SCHED_INIT_H
diff --git a/include/linux/sched/jobctl.h b/include/linux/sched/jobctl.h
index 016afa0fb3bb..98228bd48aee 100644
--- a/include/linux/sched/jobctl.h
+++ b/include/linux/sched/jobctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_JOBCTL_H
#define _LINUX_SCHED_JOBCTL_H
diff --git a/include/linux/sched/loadavg.h b/include/linux/sched/loadavg.h
index 4264bc6b2c27..80bc84ba5d2a 100644
--- a/include/linux/sched/loadavg.h
+++ b/include/linux/sched/loadavg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_LOADAVG_H
#define _LINUX_SCHED_LOADAVG_H
diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h
index 3a19c253bdb1..3d49b91b674d 100644
--- a/include/linux/sched/mm.h
+++ b/include/linux/sched/mm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_MM_H
#define _LINUX_SCHED_MM_H
@@ -84,6 +85,12 @@ static inline bool mmget_not_zero(struct mm_struct *mm)
/* mmput gets rid of the mappings and all user-space */
extern void mmput(struct mm_struct *);
+#ifdef CONFIG_MMU
+/* same as above but performs the slow path from the async context. Can
+ * be called from the atomic context as well
+ */
+void mmput_async(struct mm_struct *);
+#endif
/* Grab a reference to a task's mm, if it is not already going away */
extern struct mm_struct *get_task_mm(struct task_struct *task);
@@ -205,4 +212,20 @@ static inline void memalloc_noreclaim_restore(unsigned int flags)
current->flags = (current->flags & ~PF_MEMALLOC) | flags;
}
+#ifdef CONFIG_MEMBARRIER
+enum {
+ MEMBARRIER_STATE_PRIVATE_EXPEDITED_READY = (1U << 0),
+ MEMBARRIER_STATE_SWITCH_MM = (1U << 1),
+};
+
+static inline void membarrier_execve(struct task_struct *t)
+{
+ atomic_set(&t->mm->membarrier_state, 0);
+}
+#else
+static inline void membarrier_execve(struct task_struct *t)
+{
+}
+#endif
+
#endif /* _LINUX_SCHED_MM_H */
diff --git a/include/linux/sched/nohz.h b/include/linux/sched/nohz.h
index 028d17b918a7..3d3a97d9399d 100644
--- a/include/linux/sched/nohz.h
+++ b/include/linux/sched/nohz.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_NOHZ_H
#define _LINUX_SCHED_NOHZ_H
diff --git a/include/linux/sched/numa_balancing.h b/include/linux/sched/numa_balancing.h
index 35d5fc77b4be..e7dd04a84ba8 100644
--- a/include/linux/sched/numa_balancing.h
+++ b/include/linux/sched/numa_balancing.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_NUMA_BALANCING_H
#define _LINUX_SCHED_NUMA_BALANCING_H
diff --git a/include/linux/sched/prio.h b/include/linux/sched/prio.h
index 2cc450f6ec54..7d64feafc408 100644
--- a/include/linux/sched/prio.h
+++ b/include/linux/sched/prio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_PRIO_H
#define _LINUX_SCHED_PRIO_H
diff --git a/include/linux/sched/rt.h b/include/linux/sched/rt.h
index f93329aba31a..db865ed25ef3 100644
--- a/include/linux/sched/rt.h
+++ b/include/linux/sched/rt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_RT_H
#define _LINUX_SCHED_RT_H
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h
index 2a0dd40b15db..0aa4548fb492 100644
--- a/include/linux/sched/signal.h
+++ b/include/linux/sched/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_SIGNAL_H
#define _LINUX_SCHED_SIGNAL_H
diff --git a/include/linux/sched/stat.h b/include/linux/sched/stat.h
index 141b74c53fad..04f1321d14c4 100644
--- a/include/linux/sched/stat.h
+++ b/include/linux/sched/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_STAT_H
#define _LINUX_SCHED_STAT_H
diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
index 0f5ecd4d298e..d6a18a3839cc 100644
--- a/include/linux/sched/sysctl.h
+++ b/include/linux/sched/sysctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_SYSCTL_H
#define _LINUX_SCHED_SYSCTL_H
diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h
index 79a2a744648d..05b8650f06f5 100644
--- a/include/linux/sched/task.h
+++ b/include/linux/sched/task.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_TASK_H
#define _LINUX_SCHED_TASK_H
diff --git a/include/linux/sched/task_stack.h b/include/linux/sched/task_stack.h
index df6ea6665b31..cb4828aaa34f 100644
--- a/include/linux/sched/task_stack.h
+++ b/include/linux/sched/task_stack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_TASK_STACK_H
#define _LINUX_SCHED_TASK_STACK_H
diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h
index d7b6dab956ec..cf257c2e728d 100644
--- a/include/linux/sched/topology.h
+++ b/include/linux/sched/topology.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_TOPOLOGY_H
#define _LINUX_SCHED_TOPOLOGY_H
@@ -71,14 +72,6 @@ struct sched_domain_shared {
atomic_t ref;
atomic_t nr_busy_cpus;
int has_idle_cores;
-
- /*
- * Some variables from the most recent sd_lb_stats for this domain,
- * used by wake_affine().
- */
- unsigned long nr_running;
- unsigned long load;
- unsigned long capacity;
};
struct sched_domain {
diff --git a/include/linux/sched/user.h b/include/linux/sched/user.h
index 3c07e4135127..0dcf4e480ef7 100644
--- a/include/linux/sched/user.h
+++ b/include/linux/sched/user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_USER_H
#define _LINUX_SCHED_USER_H
diff --git a/include/linux/sched/wake_q.h b/include/linux/sched/wake_q.h
index d03d8a9047dc..10b19a192b2d 100644
--- a/include/linux/sched/wake_q.h
+++ b/include/linux/sched/wake_q.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_WAKE_Q_H
#define _LINUX_SCHED_WAKE_Q_H
diff --git a/include/linux/sched/xacct.h b/include/linux/sched/xacct.h
index a28156a0d34a..c078f0a94cec 100644
--- a/include/linux/sched/xacct.h
+++ b/include/linux/sched/xacct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SCHED_XACCT_H
#define _LINUX_SCHED_XACCT_H
diff --git a/include/linux/screen_info.h b/include/linux/screen_info.h
index f0f8bad54be9..eab7081392d5 100644
--- a/include/linux/screen_info.h
+++ b/include/linux/screen_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCREEN_INFO_H
#define _SCREEN_INFO_H
diff --git a/include/linux/sctp.h b/include/linux/sctp.h
index 82b171e1aa0b..da803dfc7a39 100644
--- a/include/linux/sctp.h
+++ b/include/linux/sctp.h
@@ -231,7 +231,7 @@ struct sctp_datahdr {
__be32 tsn;
__be16 stream;
__be16 ssn;
- __be32 ppid;
+ __u32 ppid;
__u8 payload[0];
};
@@ -716,28 +716,28 @@ struct sctp_reconf_chunk {
struct sctp_strreset_outreq {
struct sctp_paramhdr param_hdr;
- __u32 request_seq;
- __u32 response_seq;
- __u32 send_reset_at_tsn;
- __u16 list_of_streams[0];
+ __be32 request_seq;
+ __be32 response_seq;
+ __be32 send_reset_at_tsn;
+ __be16 list_of_streams[0];
};
struct sctp_strreset_inreq {
struct sctp_paramhdr param_hdr;
- __u32 request_seq;
- __u16 list_of_streams[0];
+ __be32 request_seq;
+ __be16 list_of_streams[0];
};
struct sctp_strreset_tsnreq {
struct sctp_paramhdr param_hdr;
- __u32 request_seq;
+ __be32 request_seq;
};
struct sctp_strreset_addstrm {
struct sctp_paramhdr param_hdr;
- __u32 request_seq;
- __u16 number_of_streams;
- __u16 reserved;
+ __be32 request_seq;
+ __be16 number_of_streams;
+ __be16 reserved;
};
enum {
@@ -752,16 +752,16 @@ enum {
struct sctp_strreset_resp {
struct sctp_paramhdr param_hdr;
- __u32 response_seq;
- __u32 result;
+ __be32 response_seq;
+ __be32 result;
};
struct sctp_strreset_resptsn {
struct sctp_paramhdr param_hdr;
- __u32 response_seq;
- __u32 result;
- __u32 senders_next_tsn;
- __u32 receivers_next_tsn;
+ __be32 response_seq;
+ __be32 result;
+ __be32 senders_next_tsn;
+ __be32 receivers_next_tsn;
};
#endif /* __LINUX_SCTP_H__ */
diff --git a/include/linux/scx200.h b/include/linux/scx200.h
index de466e11e271..652ec1a45f7c 100644
--- a/include/linux/scx200.h
+++ b/include/linux/scx200.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/include/linux/scx200.h
Copyright (c) 2001,2002 Christer Weinigel <wingel@nano-system.com>
diff --git a/include/linux/scx200_gpio.h b/include/linux/scx200_gpio.h
index ece4e553e9ac..6386ddbb6b70 100644
--- a/include/linux/scx200_gpio.h
+++ b/include/linux/scx200_gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
u32 scx200_gpio_configure(unsigned index, u32 set, u32 clear);
extern unsigned scx200_gpio_base;
diff --git a/include/linux/sdb.h b/include/linux/sdb.h
index fbb76a46c8a5..a2404a2bbd10 100644
--- a/include/linux/sdb.h
+++ b/include/linux/sdb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is the official version 1.1 of sdb.h
*/
diff --git a/include/linux/seccomp.h b/include/linux/seccomp.h
index ecc296c137cd..10f25f7e4304 100644
--- a/include/linux/seccomp.h
+++ b/include/linux/seccomp.h
@@ -1,9 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SECCOMP_H
#define _LINUX_SECCOMP_H
#include <uapi/linux/seccomp.h>
-#define SECCOMP_FILTER_FLAG_MASK (SECCOMP_FILTER_FLAG_TSYNC)
+#define SECCOMP_FILTER_FLAG_MASK (SECCOMP_FILTER_FLAG_TSYNC | \
+ SECCOMP_FILTER_FLAG_LOG)
#ifdef CONFIG_SECCOMP
diff --git a/include/linux/securebits.h b/include/linux/securebits.h
index da1b33b33af7..656528673983 100644
--- a/include/linux/securebits.h
+++ b/include/linux/securebits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SECUREBITS_H
#define _LINUX_SECUREBITS_H 1
diff --git a/include/linux/seg6.h b/include/linux/seg6.h
index 7a66d2b4c5a6..369066a33ab9 100644
--- a/include/linux/seg6.h
+++ b/include/linux/seg6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SEG6_H
#define _LINUX_SEG6_H
diff --git a/include/linux/seg6_genl.h b/include/linux/seg6_genl.h
index d6c3fb4f3734..2f25a3cd7cb3 100644
--- a/include/linux/seg6_genl.h
+++ b/include/linux/seg6_genl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SEG6_GENL_H
#define _LINUX_SEG6_GENL_H
diff --git a/include/linux/seg6_hmac.h b/include/linux/seg6_hmac.h
index da437ebdc6cd..16e59595e870 100644
--- a/include/linux/seg6_hmac.h
+++ b/include/linux/seg6_hmac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SEG6_HMAC_H
#define _LINUX_SEG6_HMAC_H
diff --git a/include/linux/seg6_iptunnel.h b/include/linux/seg6_iptunnel.h
index 5377cf6a5a02..d07df7fc9dee 100644
--- a/include/linux/seg6_iptunnel.h
+++ b/include/linux/seg6_iptunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SEG6_IPTUNNEL_H
#define _LINUX_SEG6_IPTUNNEL_H
diff --git a/include/linux/selection.h b/include/linux/selection.h
index 8e4624efdb6f..5b278ce99d8d 100644
--- a/include/linux/selection.h
+++ b/include/linux/selection.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* selection.h
*
diff --git a/include/linux/sem.h b/include/linux/sem.h
index de2deb8676bd..9badd322dcee 100644
--- a/include/linux/sem.h
+++ b/include/linux/sem.h
@@ -1,9 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SEM_H
#define _LINUX_SEM_H
#include <linux/atomic.h>
#include <linux/rcupdate.h>
#include <linux/cache.h>
+#include <linux/time64.h>
#include <uapi/linux/sem.h>
struct task_struct;
@@ -30,7 +32,7 @@ struct sem {
/* One sem_array data structure for each set of semaphores in the system. */
struct sem_array {
struct kern_ipc_perm sem_perm; /* permissions .. see ipc.h */
- time_t sem_ctime; /* create/last semctl() time */
+ time64_t sem_ctime; /* create/last semctl() time */
struct list_head pending_alter; /* pending operations */
/* that alter the array */
struct list_head pending_const; /* pending complex operations */
diff --git a/include/linux/seq_buf.h b/include/linux/seq_buf.h
index fb7eb9ccb1cd..aa5deb041c25 100644
--- a/include/linux/seq_buf.h
+++ b/include/linux/seq_buf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SEQ_BUF_H
#define _LINUX_SEQ_BUF_H
diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h
index e305b66a9fb9..09c6e28746f9 100644
--- a/include/linux/seq_file.h
+++ b/include/linux/seq_file.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SEQ_FILE_H
#define _LINUX_SEQ_FILE_H
diff --git a/include/linux/seq_file_net.h b/include/linux/seq_file_net.h
index 32c89bbe24a2..43ccd84127b6 100644
--- a/include/linux/seq_file_net.h
+++ b/include/linux/seq_file_net.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SEQ_FILE_NET_H__
#define __SEQ_FILE_NET_H__
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
index ead97654c4e9..f189a8a3bbb8 100644
--- a/include/linux/seqlock.h
+++ b/include/linux/seqlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SEQLOCK_H
#define __LINUX_SEQLOCK_H
/*
diff --git a/include/linux/serial_bcm63xx.h b/include/linux/serial_bcm63xx.h
index 570e964dc899..b5e48ef89736 100644
--- a/include/linux/serial_bcm63xx.h
+++ b/include/linux/serial_bcm63xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SERIAL_BCM63XX_H
#define _LINUX_SERIAL_BCM63XX_H
diff --git a/include/linux/serial_sci.h b/include/linux/serial_sci.h
index e598eaef3962..c0e795d95477 100644
--- a/include/linux/serial_sci.h
+++ b/include/linux/serial_sci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SERIAL_SCI_H
#define __LINUX_SERIAL_SCI_H
diff --git a/include/linux/sh_clk.h b/include/linux/sh_clk.h
index 645896b81244..7bed5be886c6 100644
--- a/include/linux/sh_clk.h
+++ b/include/linux/sh_clk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SH_CLOCK_H
#define __SH_CLOCK_H
diff --git a/include/linux/sh_eth.h b/include/linux/sh_eth.h
index f2e27e078362..ff3642d267f7 100644
--- a/include/linux/sh_eth.h
+++ b/include/linux/sh_eth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_ETH_H__
#define __ASM_SH_ETH_H__
diff --git a/include/linux/sh_intc.h b/include/linux/sh_intc.h
index 32383285da68..c255273b0281 100644
--- a/include/linux/sh_intc.h
+++ b/include/linux/sh_intc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SH_INTC_H
#define __SH_INTC_H
diff --git a/include/linux/sh_timer.h b/include/linux/sh_timer.h
index 64638b058076..74fd5140bb7a 100644
--- a/include/linux/sh_timer.h
+++ b/include/linux/sh_timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SH_TIMER_H__
#define __SH_TIMER_H__
diff --git a/include/linux/shm.h b/include/linux/shm.h
index 21a5e6c43385..2bbafacfbfc9 100644
--- a/include/linux/shm.h
+++ b/include/linux/shm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SHM_H_
#define _LINUX_SHM_H_
@@ -12,9 +13,9 @@ struct shmid_kernel /* private to the kernel */
struct file *shm_file;
unsigned long shm_nattch;
unsigned long shm_segsz;
- time_t shm_atim;
- time_t shm_dtim;
- time_t shm_ctim;
+ time64_t shm_atim;
+ time64_t shm_dtim;
+ time64_t shm_ctim;
pid_t shm_cprid;
pid_t shm_lprid;
struct user_struct *mlock_user;
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h
index b6c3540e07bc..ed91ce57c428 100644
--- a/include/linux/shmem_fs.h
+++ b/include/linux/shmem_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SHMEM_FS_H
#define __SHMEM_FS_H
diff --git a/include/linux/shrinker.h b/include/linux/shrinker.h
index 51d189615bda..388ff2936a87 100644
--- a/include/linux/shrinker.h
+++ b/include/linux/shrinker.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SHRINKER_H
#define _LINUX_SHRINKER_H
diff --git a/include/linux/signal.h b/include/linux/signal.h
index 38564e3e54c7..042968dd98f0 100644
--- a/include/linux/signal.h
+++ b/include/linux/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SIGNAL_H
#define _LINUX_SIGNAL_H
diff --git a/include/linux/signal_types.h b/include/linux/signal_types.h
index 16d862a3d8f3..222ae696000b 100644
--- a/include/linux/signal_types.h
+++ b/include/linux/signal_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SIGNAL_TYPES_H
#define _LINUX_SIGNAL_TYPES_H
diff --git a/include/linux/signalfd.h b/include/linux/signalfd.h
index 4985048640a7..9a47c380bda8 100644
--- a/include/linux/signalfd.h
+++ b/include/linux/signalfd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/signalfd.h
*
diff --git a/include/linux/sirfsoc_dma.h b/include/linux/sirfsoc_dma.h
index 29d959333d81..50161b6afb61 100644
--- a/include/linux/sirfsoc_dma.h
+++ b/include/linux/sirfsoc_dma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SIRFSOC_DMA_H_
#define _SIRFSOC_DMA_H_
diff --git a/include/linux/slab.h b/include/linux/slab.h
index 41473df6dfb0..af5aa65c7c18 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Written by Mark Hemment, 1996 (markhe@nextd.demon.co.uk).
*
diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h
index 4ad2c5a26399..8f7d2b1656d2 100644
--- a/include/linux/slab_def.h
+++ b/include/linux/slab_def.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SLAB_DEF_H
#define _LINUX_SLAB_DEF_H
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
index 0783b622311e..39fa09bcde23 100644
--- a/include/linux/slub_def.h
+++ b/include/linux/slub_def.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SLUB_DEF_H
#define _LINUX_SLUB_DEF_H
diff --git a/include/linux/smc911x.h b/include/linux/smc911x.h
index 521f37143fae..8cace8189e74 100644
--- a/include/linux/smc911x.h
+++ b/include/linux/smc911x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SMC911X_H__
#define __SMC911X_H__
diff --git a/include/linux/smc91x.h b/include/linux/smc91x.h
index 129bc674dcf5..f3b195fa78b9 100644
--- a/include/linux/smc91x.h
+++ b/include/linux/smc91x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SMC91X_H__
#define __SMC91X_H__
diff --git a/include/linux/smp.h b/include/linux/smp.h
index 98b1fe027fc9..9fb239e12b82 100644
--- a/include/linux/smp.h
+++ b/include/linux/smp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SMP_H
#define __LINUX_SMP_H
diff --git a/include/linux/smpboot.h b/include/linux/smpboot.h
index 12910cf19869..c174844cf663 100644
--- a/include/linux/smpboot.h
+++ b/include/linux/smpboot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SMPBOOT_H
#define _LINUX_SMPBOOT_H
@@ -55,7 +56,7 @@ smpboot_register_percpu_thread(struct smp_hotplug_thread *plug_thread)
}
void smpboot_unregister_percpu_thread(struct smp_hotplug_thread *plug_thread);
-int smpboot_update_cpumask_percpu_thread(struct smp_hotplug_thread *plug_thread,
- const struct cpumask *);
+void smpboot_update_cpumask_percpu_thread(struct smp_hotplug_thread *plug_thread,
+ const struct cpumask *);
#endif
diff --git a/include/linux/smscphy.h b/include/linux/smscphy.h
index f4bf16e16e16..1a136271ba6a 100644
--- a/include/linux/smscphy.h
+++ b/include/linux/smscphy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SMSCPHY_H__
#define __LINUX_SMSCPHY_H__
diff --git a/include/linux/soc/brcmstb/brcmstb.h b/include/linux/soc/brcmstb/brcmstb.h
index 337ce414e898..003f3dd5b192 100644
--- a/include/linux/soc/brcmstb/brcmstb.h
+++ b/include/linux/soc/brcmstb/brcmstb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BRCMSTB_SOC_H
#define __BRCMSTB_SOC_H
diff --git a/include/linux/soc/dove/pmu.h b/include/linux/soc/dove/pmu.h
index 765386972b55..1955c01deec5 100644
--- a/include/linux/soc/dove/pmu.h
+++ b/include/linux/soc/dove/pmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SOC_DOVE_PMU_H
#define LINUX_SOC_DOVE_PMU_H
diff --git a/include/linux/soc/mediatek/infracfg.h b/include/linux/soc/mediatek/infracfg.h
index a0182ec2a621..e8d9f0d52933 100644
--- a/include/linux/soc/mediatek/infracfg.h
+++ b/include/linux/soc/mediatek/infracfg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SOC_MEDIATEK_INFRACFG_H
#define __SOC_MEDIATEK_INFRACFG_H
diff --git a/include/linux/soc/qcom/mdt_loader.h b/include/linux/soc/qcom/mdt_loader.h
index f423001db3a9..bd8e0864b059 100644
--- a/include/linux/soc/qcom/mdt_loader.h
+++ b/include/linux/soc/qcom/mdt_loader.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __QCOM_MDT_LOADER_H__
#define __QCOM_MDT_LOADER_H__
diff --git a/include/linux/soc/qcom/smd-rpm.h b/include/linux/soc/qcom/smd-rpm.h
index 2a53dcaeeeed..4eff6e68600d 100644
--- a/include/linux/soc/qcom/smd-rpm.h
+++ b/include/linux/soc/qcom/smd-rpm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __QCOM_SMD_RPM_H__
#define __QCOM_SMD_RPM_H__
diff --git a/include/linux/soc/qcom/smem.h b/include/linux/soc/qcom/smem.h
index 785e196ee2ca..c1657ed27b30 100644
--- a/include/linux/soc/qcom/smem.h
+++ b/include/linux/soc/qcom/smem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __QCOM_SMEM_H__
#define __QCOM_SMEM_H__
diff --git a/include/linux/soc/qcom/smem_state.h b/include/linux/soc/qcom/smem_state.h
index b8478ee7a71f..63ad8cddad14 100644
--- a/include/linux/soc/qcom/smem_state.h
+++ b/include/linux/soc/qcom/smem_state.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __QCOM_SMEM_STATE__
#define __QCOM_SMEM_STATE__
diff --git a/include/linux/soc/qcom/wcnss_ctrl.h b/include/linux/soc/qcom/wcnss_ctrl.h
index a4dd4d7c711d..bbeb6b9c0221 100644
--- a/include/linux/soc/qcom/wcnss_ctrl.h
+++ b/include/linux/soc/qcom/wcnss_ctrl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __WCNSS_CTRL_H__
#define __WCNSS_CTRL_H__
diff --git a/include/linux/soc/renesas/rcar-rst.h b/include/linux/soc/renesas/rcar-rst.h
index 2c231f2280a6..7899a5b8c247 100644
--- a/include/linux/soc/renesas/rcar-rst.h
+++ b/include/linux/soc/renesas/rcar-rst.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SOC_RENESAS_RCAR_RST_H__
#define __LINUX_SOC_RENESAS_RCAR_RST_H__
diff --git a/include/linux/soc/renesas/rcar-sysc.h b/include/linux/soc/renesas/rcar-sysc.h
index 7b8b280c181b..8a6086d2e9c3 100644
--- a/include/linux/soc/renesas/rcar-sysc.h
+++ b/include/linux/soc/renesas/rcar-sysc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SOC_RENESAS_RCAR_SYSC_H__
#define __LINUX_SOC_RENESAS_RCAR_SYSC_H__
diff --git a/include/linux/sock_diag.h b/include/linux/sock_diag.h
index a2f8109bb215..15fe980a27ea 100644
--- a/include/linux/sock_diag.h
+++ b/include/linux/sock_diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SOCK_DIAG_H__
#define __SOCK_DIAG_H__
diff --git a/include/linux/socket.h b/include/linux/socket.h
index 8ad963cdc88c..9286a5a8c60c 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SOCKET_H
#define _LINUX_SOCKET_H
diff --git a/include/linux/sonet.h b/include/linux/sonet.h
index 680f9a31df25..2b802b6d12ad 100644
--- a/include/linux/sonet.h
+++ b/include/linux/sonet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* sonet.h - SONET/SHD physical layer control */
#ifndef LINUX_SONET_H
#define LINUX_SONET_H
diff --git a/include/linux/sony-laptop.h b/include/linux/sony-laptop.h
index e2e036d94e4a..1a4b77317fa1 100644
--- a/include/linux/sony-laptop.h
+++ b/include/linux/sony-laptop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SONYLAPTOP_H_
#define _SONYLAPTOP_H_
diff --git a/include/linux/sort.h b/include/linux/sort.h
index d534da2b5575..2b99a5dd073d 100644
--- a/include/linux/sort.h
+++ b/include/linux/sort.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SORT_H
#define _LINUX_SORT_H
diff --git a/include/linux/sound.h b/include/linux/sound.h
index 73ded040f1d7..3c6d393c7f29 100644
--- a/include/linux/sound.h
+++ b/include/linux/sound.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SOUND_H
#define _LINUX_SOUND_H
diff --git a/include/linux/spi/ad7877.h b/include/linux/spi/ad7877.h
index cdbed816f25e..b7be843c88e2 100644
--- a/include/linux/spi/ad7877.h
+++ b/include/linux/spi/ad7877.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/spi/ad7877.h */
/* Touchscreen characteristics vary between boards and models. The
diff --git a/include/linux/spi/ads7846.h b/include/linux/spi/ads7846.h
index 2f694f3846a9..1a5eaef3b7f2 100644
--- a/include/linux/spi/ads7846.h
+++ b/include/linux/spi/ads7846.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/spi/ads7846.h */
/* Touchscreen characteristics vary between boards and models. The
diff --git a/include/linux/spi/at73c213.h b/include/linux/spi/at73c213.h
index 0f20a70e5eb4..cbca6654aa31 100644
--- a/include/linux/spi/at73c213.h
+++ b/include/linux/spi/at73c213.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Board-specific data used to set up AT73c213 audio DAC driver.
*/
diff --git a/include/linux/spi/corgi_lcd.h b/include/linux/spi/corgi_lcd.h
index 6692b3418ccf..edf4beccdadb 100644
--- a/include/linux/spi/corgi_lcd.h
+++ b/include/linux/spi/corgi_lcd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SPI_CORGI_LCD_H
#define __LINUX_SPI_CORGI_LCD_H
diff --git a/include/linux/spi/ds1305.h b/include/linux/spi/ds1305.h
index 287ec830eab7..82db6cd152dc 100644
--- a/include/linux/spi/ds1305.h
+++ b/include/linux/spi/ds1305.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SPI_DS1305_H
#define __LINUX_SPI_DS1305_H
diff --git a/include/linux/spi/eeprom.h b/include/linux/spi/eeprom.h
index e34e169f9dcb..aceccf9c71fb 100644
--- a/include/linux/spi/eeprom.h
+++ b/include/linux/spi/eeprom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SPI_EEPROM_H
#define __LINUX_SPI_EEPROM_H
diff --git a/include/linux/spi/flash.h b/include/linux/spi/flash.h
index f4199e758f97..2401a0887209 100644
--- a/include/linux/spi/flash.h
+++ b/include/linux/spi/flash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SPI_FLASH_H
#define LINUX_SPI_FLASH_H
diff --git a/include/linux/spi/ifx_modem.h b/include/linux/spi/ifx_modem.h
index 394fec9e7722..694268c78d5d 100644
--- a/include/linux/spi/ifx_modem.h
+++ b/include/linux/spi/ifx_modem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_IFX_MODEM_H
#define LINUX_IFX_MODEM_H
diff --git a/include/linux/spi/max7301.h b/include/linux/spi/max7301.h
index bcaa2f762cc1..433c20e2f46e 100644
--- a/include/linux/spi/max7301.h
+++ b/include/linux/spi/max7301.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SPI_MAX7301_H
#define LINUX_SPI_MAX7301_H
diff --git a/include/linux/spi/mc33880.h b/include/linux/spi/mc33880.h
index 82ffccd6fbe5..205a49cb99db 100644
--- a/include/linux/spi/mc33880.h
+++ b/include/linux/spi/mc33880.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SPI_MC33880_H
#define LINUX_SPI_MC33880_H
diff --git a/include/linux/spi/mcp23s08.h b/include/linux/spi/mcp23s08.h
index 82d96a346e6f..738a45b435f2 100644
--- a/include/linux/spi/mcp23s08.h
+++ b/include/linux/spi/mcp23s08.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
struct mcp23s08_platform_data {
/* For mcp23s08, up to 4 slaves (numbered 0..3) can share one SPI
* chipselect, each providing 1 gpio_chip instance with 8 gpios.
diff --git a/include/linux/spi/mmc_spi.h b/include/linux/spi/mmc_spi.h
index 274bc0fa00af..bfde741a543d 100644
--- a/include/linux/spi/mmc_spi.h
+++ b/include/linux/spi/mmc_spi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SPI_MMC_SPI_H
#define __LINUX_SPI_MMC_SPI_H
diff --git a/include/linux/spi/sh_msiof.h b/include/linux/spi/sh_msiof.h
index f74b581f242f..dc2a0cbd210d 100644
--- a/include/linux/spi/sh_msiof.h
+++ b/include/linux/spi/sh_msiof.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPI_SH_MSIOF_H__
#define __SPI_SH_MSIOF_H__
diff --git a/include/linux/spi/spi_bitbang.h b/include/linux/spi/spi_bitbang.h
index 154788ed218c..51d8c060e513 100644
--- a/include/linux/spi/spi_bitbang.h
+++ b/include/linux/spi/spi_bitbang.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SPI_BITBANG_H
#define __SPI_BITBANG_H
diff --git a/include/linux/spi/spi_gpio.h b/include/linux/spi/spi_gpio.h
index 1634ce31c06d..e7bd89a59cd1 100644
--- a/include/linux/spi/spi_gpio.h
+++ b/include/linux/spi/spi_gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SPI_GPIO_H
#define __LINUX_SPI_GPIO_H
diff --git a/include/linux/spi/spi_oc_tiny.h b/include/linux/spi/spi_oc_tiny.h
index 1ac529cf4f06..a3ecf2feadf2 100644
--- a/include/linux/spi/spi_oc_tiny.h
+++ b/include/linux/spi/spi_oc_tiny.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SPI_SPI_OC_TINY_H
#define _LINUX_SPI_SPI_OC_TINY_H
diff --git a/include/linux/spi/tdo24m.h b/include/linux/spi/tdo24m.h
index 7572d4e1fe76..48dd58ac5383 100644
--- a/include/linux/spi/tdo24m.h
+++ b/include/linux/spi/tdo24m.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __TDO24M_H__
#define __TDO24M_H__
diff --git a/include/linux/spi/xilinx_spi.h b/include/linux/spi/xilinx_spi.h
index 333ecdfee0d9..c15d69d28e68 100644
--- a/include/linux/spi/xilinx_spi.h
+++ b/include/linux/spi/xilinx_spi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SPI_XILINX_SPI_H
#define __LINUX_SPI_XILINX_SPI_H
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h
index 69e079c5ff98..341e1a12bfc7 100644
--- a/include/linux/spinlock.h
+++ b/include/linux/spinlock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SPINLOCK_H
#define __LINUX_SPINLOCK_H
diff --git a/include/linux/splice.h b/include/linux/splice.h
index db42746bdfea..74b4911ac16d 100644
--- a/include/linux/splice.h
+++ b/include/linux/splice.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Function declerations and data structures related to the splice
* implementation.
diff --git a/include/linux/srcu.h b/include/linux/srcu.h
index 39af9bc0f653..62be8966e837 100644
--- a/include/linux/srcu.h
+++ b/include/linux/srcu.h
@@ -78,6 +78,7 @@ void synchronize_srcu(struct srcu_struct *sp);
/**
* srcu_read_lock_held - might we be in SRCU read-side critical section?
+ * @sp: The srcu_struct structure to check
*
* If CONFIG_DEBUG_LOCK_ALLOC is selected, returns nonzero iff in an SRCU
* read-side critical section. In absence of CONFIG_DEBUG_LOCK_ALLOC,
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h
index 26a0b3c3ce5f..3b43655cabe6 100644
--- a/include/linux/ssb/ssb.h
+++ b/include/linux/ssb/ssb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SSB_H_
#define LINUX_SSB_H_
diff --git a/include/linux/ssb/ssb_driver_gige.h b/include/linux/ssb/ssb_driver_gige.h
index 0688472500bb..31593b34608e 100644
--- a/include/linux/ssb/ssb_driver_gige.h
+++ b/include/linux/ssb/ssb_driver_gige.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SSB_DRIVER_GIGE_H_
#define LINUX_SSB_DRIVER_GIGE_H_
diff --git a/include/linux/ssb/ssb_driver_mips.h b/include/linux/ssb/ssb_driver_mips.h
index 6535e4718fde..bef6bba32dff 100644
--- a/include/linux/ssb/ssb_driver_mips.h
+++ b/include/linux/ssb/ssb_driver_mips.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SSB_MIPSCORE_H_
#define LINUX_SSB_MIPSCORE_H_
diff --git a/include/linux/ssb/ssb_driver_pci.h b/include/linux/ssb/ssb_driver_pci.h
index 41e330e51c2a..42824bdfe16e 100644
--- a/include/linux/ssb/ssb_driver_pci.h
+++ b/include/linux/ssb/ssb_driver_pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SSB_PCICORE_H_
#define LINUX_SSB_PCICORE_H_
diff --git a/include/linux/ssb/ssb_embedded.h b/include/linux/ssb/ssb_embedded.h
index 8d8dedff059d..49604ac3db82 100644
--- a/include/linux/ssb/ssb_embedded.h
+++ b/include/linux/ssb/ssb_embedded.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SSB_EMBEDDED_H_
#define LINUX_SSB_EMBEDDED_H_
diff --git a/include/linux/ssb/ssb_regs.h b/include/linux/ssb/ssb_regs.h
index c0f707ac192b..210f46494065 100644
--- a/include/linux/ssb/ssb_regs.h
+++ b/include/linux/ssb/ssb_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_SSB_REGS_H_
#define LINUX_SSB_REGS_H_
diff --git a/include/linux/stackprotector.h b/include/linux/stackprotector.h
index 6f3e54c704c0..03696c729fb4 100644
--- a/include/linux/stackprotector.h
+++ b/include/linux/stackprotector.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_STACKPROTECTOR_H
#define _LINUX_STACKPROTECTOR_H 1
diff --git a/include/linux/stacktrace.h b/include/linux/stacktrace.h
index 4205f71a5f0e..ba29a0613e66 100644
--- a/include/linux/stacktrace.h
+++ b/include/linux/stacktrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_STACKTRACE_H
#define __LINUX_STACKTRACE_H
diff --git a/include/linux/start_kernel.h b/include/linux/start_kernel.h
index d3e5f2756545..4b268d86a784 100644
--- a/include/linux/start_kernel.h
+++ b/include/linux/start_kernel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_START_KERNEL_H
#define _LINUX_START_KERNEL_H
diff --git a/include/linux/stat.h b/include/linux/stat.h
index 64b6b3aece21..22484e44544d 100644
--- a/include/linux/stat.h
+++ b/include/linux/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_STAT_H
#define _LINUX_STAT_H
diff --git a/include/linux/statfs.h b/include/linux/statfs.h
index 0166d320a75d..3142e98546ac 100644
--- a/include/linux/statfs.h
+++ b/include/linux/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_STATFS_H
#define _LINUX_STATFS_H
diff --git a/include/linux/stddef.h b/include/linux/stddef.h
index 9c61c7cda936..2181719fd907 100644
--- a/include/linux/stddef.h
+++ b/include/linux/stddef.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_STDDEF_H
#define _LINUX_STDDEF_H
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
index 108739ff9223..32feac5bbd75 100644
--- a/include/linux/stmmac.h
+++ b/include/linux/stmmac.h
@@ -126,14 +126,14 @@ struct stmmac_axi {
struct stmmac_rxq_cfg {
u8 mode_to_use;
- u8 chan;
+ u32 chan;
u8 pkt_route;
bool use_prio;
u32 prio;
};
struct stmmac_txq_cfg {
- u8 weight;
+ u32 weight;
u8 mode_to_use;
/* Credit Base Shaper parameters */
u32 send_slope;
@@ -168,8 +168,8 @@ struct plat_stmmacenet_data {
int unicast_filter_entries;
int tx_fifo_size;
int rx_fifo_size;
- u8 rx_queues_to_use;
- u8 tx_queues_to_use;
+ u32 rx_queues_to_use;
+ u32 tx_queues_to_use;
u8 rx_sched_algorithm;
u8 tx_sched_algorithm;
struct stmmac_rxq_cfg rx_queues_cfg[MTL_MAX_RX_QUEUES];
diff --git a/include/linux/stop_machine.h b/include/linux/stop_machine.h
index 3d60275e3ba9..6d3635c86dbe 100644
--- a/include/linux/stop_machine.h
+++ b/include/linux/stop_machine.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_STOP_MACHINE
#define _LINUX_STOP_MACHINE
diff --git a/include/linux/string.h b/include/linux/string.h
index 54d21783e18d..410ecf17de3c 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_STRING_H_
#define _LINUX_STRING_H_
diff --git a/include/linux/string_helpers.h b/include/linux/string_helpers.h
index 5ce9538f290e..4397c52ec4a4 100644
--- a/include/linux/string_helpers.h
+++ b/include/linux/string_helpers.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_STRING_HELPERS_H_
#define _LINUX_STRING_HELPERS_H_
diff --git a/include/linux/stringhash.h b/include/linux/stringhash.h
index 7c2d95170d01..e8f0f852968f 100644
--- a/include/linux/stringhash.h
+++ b/include/linux/stringhash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_STRINGHASH_H
#define __LINUX_STRINGHASH_H
diff --git a/include/linux/sungem_phy.h b/include/linux/sungem_phy.h
index bd9be9f59d3a..3a11fa41a131 100644
--- a/include/linux/sungem_phy.h
+++ b/include/linux/sungem_phy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SUNGEM_PHY_H__
#define __SUNGEM_PHY_H__
diff --git a/include/linux/sunrpc/addr.h b/include/linux/sunrpc/addr.h
index 5c9c6cd08d3b..07d454873b6d 100644
--- a/include/linux/sunrpc/addr.h
+++ b/include/linux/sunrpc/addr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/addr.h
*
diff --git a/include/linux/sunrpc/auth.h b/include/linux/sunrpc/auth.h
index 8fd3504946ad..d9af474a857d 100644
--- a/include/linux/sunrpc/auth.h
+++ b/include/linux/sunrpc/auth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/auth.h
*
diff --git a/include/linux/sunrpc/auth_gss.h b/include/linux/sunrpc/auth_gss.h
index cebdf8745901..0c9eac351aab 100644
--- a/include/linux/sunrpc/auth_gss.h
+++ b/include/linux/sunrpc/auth_gss.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/auth_gss.h
*
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
index 55ef67bea06b..71c237e8240e 100644
--- a/include/linux/sunrpc/clnt.h
+++ b/include/linux/sunrpc/clnt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/clnt.h
*
diff --git a/include/linux/sunrpc/debug.h b/include/linux/sunrpc/debug.h
index 8da0f37f3bdc..f6aeed07fe04 100644
--- a/include/linux/sunrpc/debug.h
+++ b/include/linux/sunrpc/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/debug.h
*
diff --git a/include/linux/sunrpc/gss_api.h b/include/linux/sunrpc/gss_api.h
index 68ec78c1aa48..5ac5db4d295f 100644
--- a/include/linux/sunrpc/gss_api.h
+++ b/include/linux/sunrpc/gss_api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/gss_api.h
*
diff --git a/include/linux/sunrpc/metrics.h b/include/linux/sunrpc/metrics.h
index 694eecb2f1b5..9baed7b355b2 100644
--- a/include/linux/sunrpc/metrics.h
+++ b/include/linux/sunrpc/metrics.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/metrics.h
*
diff --git a/include/linux/sunrpc/msg_prot.h b/include/linux/sunrpc/msg_prot.h
index 59cbf16eaeb5..4722b28ec36a 100644
--- a/include/linux/sunrpc/msg_prot.h
+++ b/include/linux/sunrpc/msg_prot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/msg_prot.h
*
diff --git a/include/linux/sunrpc/rpc_pipe_fs.h b/include/linux/sunrpc/rpc_pipe_fs.h
index 7f490bef9e99..a5704daf5df9 100644
--- a/include/linux/sunrpc/rpc_pipe_fs.h
+++ b/include/linux/sunrpc/rpc_pipe_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SUNRPC_RPC_PIPE_FS_H
#define _LINUX_SUNRPC_RPC_PIPE_FS_H
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h
index c1768f9d993b..d96e74e114c0 100644
--- a/include/linux/sunrpc/sched.h
+++ b/include/linux/sunrpc/sched.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/sched.h
*
diff --git a/include/linux/sunrpc/stats.h b/include/linux/sunrpc/stats.h
index edc64219f92b..84b92b4ad1c0 100644
--- a/include/linux/sunrpc/stats.h
+++ b/include/linux/sunrpc/stats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/stats.h
*
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
index 38f561b2dda3..3b9f0d1dbb80 100644
--- a/include/linux/sunrpc/svc.h
+++ b/include/linux/sunrpc/svc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/svc.h
*
diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h
index 6a2ad38f5458..1caf7bc83306 100644
--- a/include/linux/sunrpc/svc_xprt.h
+++ b/include/linux/sunrpc/svc_xprt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/svc_xprt.h
*
diff --git a/include/linux/sunrpc/svcauth.h b/include/linux/sunrpc/svcauth.h
index d03932055328..7c3656505847 100644
--- a/include/linux/sunrpc/svcauth.h
+++ b/include/linux/sunrpc/svcauth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/svcauth.h
*
diff --git a/include/linux/sunrpc/svcauth_gss.h b/include/linux/sunrpc/svcauth_gss.h
index 726aff1a5201..a4528b26c8aa 100644
--- a/include/linux/sunrpc/svcauth_gss.h
+++ b/include/linux/sunrpc/svcauth_gss.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/svcauth_gss.h
*
diff --git a/include/linux/sunrpc/svcsock.h b/include/linux/sunrpc/svcsock.h
index 2e780134f449..119718a922f2 100644
--- a/include/linux/sunrpc/svcsock.h
+++ b/include/linux/sunrpc/svcsock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/svcsock.h
*
diff --git a/include/linux/sunrpc/timer.h b/include/linux/sunrpc/timer.h
index 697d6e69d61f..242dbe00b5ff 100644
--- a/include/linux/sunrpc/timer.h
+++ b/include/linux/sunrpc/timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/timer.h
*
diff --git a/include/linux/sunrpc/types.h b/include/linux/sunrpc/types.h
index 11a7536c0fd2..bd3c8e05632b 100644
--- a/include/linux/sunrpc/types.h
+++ b/include/linux/sunrpc/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/types.h
*
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h
index 86b59e3525a5..d950223c64b1 100644
--- a/include/linux/sunrpc/xdr.h
+++ b/include/linux/sunrpc/xdr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* XDR standard data types and function declarations
*
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
index 5a7bff41f6b7..7fad83881ce1 100644
--- a/include/linux/sunrpc/xprt.h
+++ b/include/linux/sunrpc/xprt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/xprt.h
*
diff --git a/include/linux/sunrpc/xprtmultipath.h b/include/linux/sunrpc/xprtmultipath.h
index 507418c1c69e..af1257c030d2 100644
--- a/include/linux/sunrpc/xprtmultipath.h
+++ b/include/linux/sunrpc/xprtmultipath.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* RPC client multipathing definitions
*
diff --git a/include/linux/sunrpc/xprtsock.h b/include/linux/sunrpc/xprtsock.h
index c9959d7e3579..ae0f99b9b965 100644
--- a/include/linux/sunrpc/xprtsock.h
+++ b/include/linux/sunrpc/xprtsock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/include/linux/sunrpc/xprtsock.h
*
diff --git a/include/linux/sunserialcore.h b/include/linux/sunserialcore.h
index dbe4d7fca1b8..c12d1c7fa42b 100644
--- a/include/linux/sunserialcore.h
+++ b/include/linux/sunserialcore.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* sunserialcore.h
*
* Generic SUN serial/kbd/ms layer. Based entirely
diff --git a/include/linux/suspend.h b/include/linux/suspend.h
index d10b7980799d..d60b0f5c38d5 100644
--- a/include/linux/suspend.h
+++ b/include/linux/suspend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SUSPEND_H
#define _LINUX_SUSPEND_H
diff --git a/include/linux/svga.h b/include/linux/svga.h
index bfa68e837d6a..3bfe4626953d 100644
--- a/include/linux/svga.h
+++ b/include/linux/svga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SVGA_H
#define _LINUX_SVGA_H
diff --git a/include/linux/sw842.h b/include/linux/sw842.h
index 109ba041c2ae..3e29f5dcc62b 100644
--- a/include/linux/sw842.h
+++ b/include/linux/sw842.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SW842_H__
#define __SW842_H__
diff --git a/include/linux/swab.h b/include/linux/swab.h
index 9ad3c60f6cae..e466fd159c85 100644
--- a/include/linux/swab.h
+++ b/include/linux/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SWAB_H
#define _LINUX_SWAB_H
diff --git a/include/linux/swait.h b/include/linux/swait.h
index 4a4e180d0a35..c98aaf677466 100644
--- a/include/linux/swait.h
+++ b/include/linux/swait.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SWAIT_H
#define _LINUX_SWAIT_H
@@ -9,13 +10,16 @@
/*
* Simple wait queues
*
- * While these are very similar to the other/complex wait queues (wait.h) the
- * most important difference is that the simple waitqueue allows for
- * deterministic behaviour -- IOW it has strictly bounded IRQ and lock hold
- * times.
+ * While these are very similar to regular wait queues (wait.h) the most
+ * important difference is that the simple waitqueue allows for deterministic
+ * behaviour -- IOW it has strictly bounded IRQ and lock hold times.
*
- * In order to make this so, we had to drop a fair number of features of the
- * other waitqueue code; notably:
+ * Mainly, this is accomplished by two things. Firstly not allowing swake_up_all
+ * from IRQ disabled, and dropping the lock upon every wakeup, giving a higher
+ * priority task a chance to run.
+ *
+ * Secondly, we had to drop a fair number of features of the other waitqueue
+ * code; notably:
*
* - mixing INTERRUPTIBLE and UNINTERRUPTIBLE sleeps on the same waitqueue;
* all wakeups are TASK_NORMAL in order to avoid O(n) lookups for the right
@@ -24,12 +28,14 @@
* - the exclusive mode; because this requires preserving the list order
* and this is hard.
*
- * - custom wake functions; because you cannot give any guarantees about
- * random code.
- *
- * As a side effect of this; the data structures are slimmer.
+ * - custom wake callback functions; because you cannot give any guarantees
+ * about random code. This also allows swait to be used in RT, such that
+ * raw spinlock can be used for the swait queue head.
*
- * One would recommend using this wait queue where possible.
+ * As a side effect of these; the data structures are slimmer albeit more ad-hoc.
+ * For all the above, note that simple wait queues should _only_ be used under
+ * very specific realtime constraints -- it is best to stick with the regular
+ * wait queues in most cases.
*/
struct task_struct;
@@ -79,9 +85,63 @@ extern void __init_swait_queue_head(struct swait_queue_head *q, const char *name
DECLARE_SWAIT_QUEUE_HEAD(name)
#endif
-static inline int swait_active(struct swait_queue_head *q)
+/**
+ * swait_active -- locklessly test for waiters on the queue
+ * @wq: the waitqueue to test for waiters
+ *
+ * returns true if the wait list is not empty
+ *
+ * NOTE: this function is lockless and requires care, incorrect usage _will_
+ * lead to sporadic and non-obvious failure.
+ *
+ * NOTE2: this function has the same above implications as regular waitqueues.
+ *
+ * Use either while holding swait_queue_head::lock or when used for wakeups
+ * with an extra smp_mb() like:
+ *
+ * CPU0 - waker CPU1 - waiter
+ *
+ * for (;;) {
+ * @cond = true; prepare_to_swait(&wq_head, &wait, state);
+ * smp_mb(); // smp_mb() from set_current_state()
+ * if (swait_active(wq_head)) if (@cond)
+ * wake_up(wq_head); break;
+ * schedule();
+ * }
+ * finish_swait(&wq_head, &wait);
+ *
+ * Because without the explicit smp_mb() it's possible for the
+ * swait_active() load to get hoisted over the @cond store such that we'll
+ * observe an empty wait list while the waiter might not observe @cond.
+ * This, in turn, can trigger missing wakeups.
+ *
+ * Also note that this 'optimization' trades a spin_lock() for an smp_mb(),
+ * which (when the lock is uncontended) are of roughly equal cost.
+ */
+static inline int swait_active(struct swait_queue_head *wq)
+{
+ return !list_empty(&wq->task_list);
+}
+
+/**
+ * swq_has_sleeper - check if there are any waiting processes
+ * @wq: the waitqueue to test for waiters
+ *
+ * Returns true if @wq has waiting processes
+ *
+ * Please refer to the comment for swait_active.
+ */
+static inline bool swq_has_sleeper(struct swait_queue_head *wq)
{
- return !list_empty(&q->task_list);
+ /*
+ * We need to be sure we are in sync with the list_add()
+ * modifications to the wait queue (task_list).
+ *
+ * This memory barrier should be paired with one on the
+ * waiting side.
+ */
+ smp_mb();
+ return swait_active(wq);
}
extern void swake_up(struct swait_queue_head *q);
diff --git a/include/linux/swap.h b/include/linux/swap.h
index 8a807292037f..f02fb5db8914 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SWAP_H
#define _LINUX_SWAP_H
@@ -265,6 +266,10 @@ struct swap_info_struct {
* both locks need hold, hold swap_lock
* first.
*/
+ spinlock_t cont_lock; /*
+ * protect swap count continuation page
+ * list.
+ */
struct work_struct discard_work; /* discard worker */
struct swap_cluster_list discard_clusters; /* discard clusters list */
};
diff --git a/include/linux/swap_cgroup.h b/include/linux/swap_cgroup.h
index b2b8ec7bda3f..a12dd1c3966c 100644
--- a/include/linux/swap_cgroup.h
+++ b/include/linux/swap_cgroup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SWAP_CGROUP_H
#define __LINUX_SWAP_CGROUP_H
diff --git a/include/linux/swap_slots.h b/include/linux/swap_slots.h
index 6ef92d17633d..e36b200c2a77 100644
--- a/include/linux/swap_slots.h
+++ b/include/linux/swap_slots.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SWAP_SLOTS_H
#define _LINUX_SWAP_SLOTS_H
diff --git a/include/linux/swapfile.h b/include/linux/swapfile.h
index 388293a91e8c..06bd7b096167 100644
--- a/include/linux/swapfile.h
+++ b/include/linux/swapfile.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SWAPFILE_H
#define _LINUX_SWAPFILE_H
diff --git a/include/linux/swapops.h b/include/linux/swapops.h
index 291c4b534658..9c5a2628d6ce 100644
--- a/include/linux/swapops.h
+++ b/include/linux/swapops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SWAPOPS_H
#define _LINUX_SWAPOPS_H
diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
index 15e7160751a8..24ed817082ee 100644
--- a/include/linux/swiotlb.h
+++ b/include/linux/swiotlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_SWIOTLB_H
#define __LINUX_SWIOTLB_H
diff --git a/include/linux/sys.h b/include/linux/sys.h
index daa6008bfdc8..3ebd9812f2e6 100644
--- a/include/linux/sys.h
+++ b/include/linux/sys.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SYS_H
#define _LINUX_SYS_H
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 88951b795ee3..a78186d826d7 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -200,6 +200,8 @@ static inline int is_syscall_trace_event(struct trace_event_call *tp_event)
#define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
+#define SYSCALL_DEFINE_MAXARGS 6
+
#define SYSCALL_DEFINEx(x, sname, ...) \
SYSCALL_METADATA(sname, x, __VA_ARGS__) \
__SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
@@ -219,21 +221,25 @@ static inline int is_syscall_trace_event(struct trace_event_call *tp_event)
} \
static inline long SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__))
-#ifdef TIF_FSCHECK
/*
* Called before coming back to user-mode. Returning to user-mode with an
* address limit different than USER_DS can allow to overwrite kernel memory.
*/
static inline void addr_limit_user_check(void)
{
-
+#ifdef TIF_FSCHECK
if (!test_thread_flag(TIF_FSCHECK))
return;
+#endif
- BUG_ON(!segment_eq(get_fs(), USER_DS));
+ if (CHECK_DATA_CORRUPTION(!segment_eq(get_fs(), USER_DS),
+ "Invalid address limit on user-mode return"))
+ force_sig(SIGKILL, current);
+
+#ifdef TIF_FSCHECK
clear_thread_flag(TIF_FSCHECK);
-}
#endif
+}
asmlinkage long sys32_quotactl(unsigned int cmd, const char __user *special,
qid_t id, void __user *addr);
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 1d4dba490fb6..74f91eefeccf 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* sysctl.h: General linux system control interface
*
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
index aa02c328dff5..e32dfe098e82 100644
--- a/include/linux/sysfs.h
+++ b/include/linux/sysfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* sysfs.h - definitions for the device driver filesystem
*
diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h
index 387fa7d05c98..8c71874e8485 100644
--- a/include/linux/sysrq.h
+++ b/include/linux/sysrq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* -*- linux-c -*-
*
* $Id: sysrq.h,v 1.3 1997/07/17 11:54:33 mj Exp $
diff --git a/include/linux/sysv_fs.h b/include/linux/sysv_fs.h
index e47d6d90023d..5cf77dbb8d86 100644
--- a/include/linux/sysv_fs.h
+++ b/include/linux/sysv_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_SYSV_FS_H
#define _LINUX_SYSV_FS_H
diff --git a/include/linux/t10-pi.h b/include/linux/t10-pi.h
index 635a3c5706bd..c6aa8a3c42ed 100644
--- a/include/linux/t10-pi.h
+++ b/include/linux/t10-pi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_T10_PI_H
#define _LINUX_T10_PI_H
diff --git a/include/linux/task_io_accounting.h b/include/linux/task_io_accounting.h
index bdf855c2856f..6f6acce064de 100644
--- a/include/linux/task_io_accounting.h
+++ b/include/linux/task_io_accounting.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* task_io_accounting: a structure which is used for recording a single task's
* IO statistics.
diff --git a/include/linux/task_io_accounting_ops.h b/include/linux/task_io_accounting_ops.h
index 4d090f9ee608..bb5498bcdd96 100644
--- a/include/linux/task_io_accounting_ops.h
+++ b/include/linux/task_io_accounting_ops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Task I/O accounting operations
*/
diff --git a/include/linux/task_work.h b/include/linux/task_work.h
index ca5a1cf27dae..bd9a6a91c097 100644
--- a/include/linux/task_work.h
+++ b/include/linux/task_work.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TASK_WORK_H
#define _LINUX_TASK_WORK_H
diff --git a/include/linux/taskstats_kern.h b/include/linux/taskstats_kern.h
index e2a5daf8d14f..dbb4d124c7d7 100644
--- a/include/linux/taskstats_kern.h
+++ b/include/linux/taskstats_kern.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* taskstats_kern.h - kernel header for per-task statistics interface
*
* Copyright (C) Shailabh Nagar, IBM Corp. 2006
diff --git a/include/linux/textsearch.h b/include/linux/textsearch.h
index cfaee869146f..0494db3fd9e8 100644
--- a/include/linux/textsearch.h
+++ b/include/linux/textsearch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_TEXTSEARCH_H
#define __LINUX_TEXTSEARCH_H
diff --git a/include/linux/textsearch_fsm.h b/include/linux/textsearch_fsm.h
index fdfa078c66e5..b57231ff652f 100644
--- a/include/linux/textsearch_fsm.h
+++ b/include/linux/textsearch_fsm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_TEXTSEARCH_FSM_H
#define __LINUX_TEXTSEARCH_FSM_H
diff --git a/include/linux/thinkpad_acpi.h b/include/linux/thinkpad_acpi.h
index 361de59a2285..9fb317970c01 100644
--- a/include/linux/thinkpad_acpi.h
+++ b/include/linux/thinkpad_acpi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __THINKPAD_ACPI_H__
#define __THINKPAD_ACPI_H__
diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h
index 905d769d8ddc..4bcdf00c110f 100644
--- a/include/linux/thread_info.h
+++ b/include/linux/thread_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* thread_info.h: common low-level thread information accessors
*
* Copyright (C) 2002 David Howells (dhowells@redhat.com)
@@ -42,7 +43,7 @@ enum {
#define THREAD_ALIGN THREAD_SIZE
#endif
-#ifdef CONFIG_DEBUG_STACK_USAGE
+#if IS_ENABLED(CONFIG_DEBUG_STACK_USAGE) || IS_ENABLED(CONFIG_DEBUG_KMEMLEAK)
# define THREADINFO_GFP (GFP_KERNEL_ACCOUNT | __GFP_NOTRACK | \
__GFP_ZERO)
#else
diff --git a/include/linux/threads.h b/include/linux/threads.h
index 383ab9592bec..3086dba525e2 100644
--- a/include/linux/threads.h
+++ b/include/linux/threads.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_THREADS_H
#define _LINUX_THREADS_H
diff --git a/include/linux/tick.h b/include/linux/tick.h
index fe01e68bf520..cf413b344ddb 100644
--- a/include/linux/tick.h
+++ b/include/linux/tick.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Tick related global functions
*/
diff --git a/include/linux/time.h b/include/linux/time.h
index 3877136bbdf8..87c36cf1cec2 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TIME_H
#define _LINUX_TIME_H
@@ -178,7 +179,7 @@ extern int do_setitimer(int which, struct itimerval *value,
struct itimerval *ovalue);
extern int do_getitimer(int which, struct itimerval *value);
-extern long do_utimes(int dfd, const char __user *filename, struct timespec *times, int flags);
+extern long do_utimes(int dfd, const char __user *filename, struct timespec64 *times, int flags);
/*
* Similar to the struct tm in userspace <time.h>, but it needs to be here so
diff --git a/include/linux/time64.h b/include/linux/time64.h
index 980c71b3001a..ad33260618f7 100644
--- a/include/linux/time64.h
+++ b/include/linux/time64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TIME64_H
#define _LINUX_TIME64_H
diff --git a/include/linux/timekeeper_internal.h b/include/linux/timekeeper_internal.h
index 0a0a53daf2a2..97154c61e5d2 100644
--- a/include/linux/timekeeper_internal.h
+++ b/include/linux/timekeeper_internal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* You SHOULD NOT be including this unless you're vsyscall
* handling code or timekeeping internal code!
diff --git a/include/linux/timekeeping.h b/include/linux/timekeeping.h
index ddc229ff6d1e..0021575fe871 100644
--- a/include/linux/timekeeping.h
+++ b/include/linux/timekeeping.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TIMEKEEPING_H
#define _LINUX_TIMEKEEPING_H
diff --git a/include/linux/timer.h b/include/linux/timer.h
index e6789b8757d5..ac66f29c6916 100644
--- a/include/linux/timer.h
+++ b/include/linux/timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TIMER_H
#define _LINUX_TIMER_H
@@ -168,6 +169,20 @@ static inline void init_timer_on_stack_key(struct timer_list *timer,
#define setup_pinned_deferrable_timer_on_stack(timer, fn, data) \
__setup_timer_on_stack((timer), (fn), (data), TIMER_DEFERRABLE | TIMER_PINNED)
+#define TIMER_DATA_TYPE unsigned long
+#define TIMER_FUNC_TYPE void (*)(TIMER_DATA_TYPE)
+
+static inline void timer_setup(struct timer_list *timer,
+ void (*callback)(struct timer_list *),
+ unsigned int flags)
+{
+ __setup_timer(timer, (TIMER_FUNC_TYPE)callback,
+ (TIMER_DATA_TYPE)timer, flags);
+}
+
+#define from_timer(var, callback_timer, timer_fieldname) \
+ container_of(callback_timer, typeof(*var), timer_fieldname)
+
/**
* timer_pending - is a timer pending?
* @timer: the timer in question
diff --git a/include/linux/timerfd.h b/include/linux/timerfd.h
index bab0b1ad0613..0c33260e5dfb 100644
--- a/include/linux/timerfd.h
+++ b/include/linux/timerfd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/timerfd.h
*
diff --git a/include/linux/timerqueue.h b/include/linux/timerqueue.h
index 7eec17ad7fa1..78b8cc73f12f 100644
--- a/include/linux/timerqueue.h
+++ b/include/linux/timerqueue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TIMERQUEUE_H
#define _LINUX_TIMERQUEUE_H
diff --git a/include/linux/tpm_command.h b/include/linux/tpm_command.h
index 727512e249b5..f5c03e9c3913 100644
--- a/include/linux/tpm_command.h
+++ b/include/linux/tpm_command.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_TPM_COMMAND_H__
#define __LINUX_TPM_COMMAND_H__
diff --git a/include/linux/trace.h b/include/linux/trace.h
index 9330a58e2651..d24991c1fef3 100644
--- a/include/linux/trace.h
+++ b/include/linux/trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TRACE_H
#define _LINUX_TRACE_H
diff --git a/include/linux/trace_clock.h b/include/linux/trace_clock.h
index 1d7ca2739272..00e8f98c940f 100644
--- a/include/linux/trace_clock.h
+++ b/include/linux/trace_clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TRACE_CLOCK_H
#define _LINUX_TRACE_CLOCK_H
diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h
index 7f11050746ae..2bcb4dc6df1a 100644
--- a/include/linux/trace_events.h
+++ b/include/linux/trace_events.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TRACE_EVENT_H
#define _LINUX_TRACE_EVENT_H
@@ -272,6 +273,7 @@ struct trace_event_call {
int perf_refcount;
struct hlist_head __percpu *perf_events;
struct bpf_prog *prog;
+ struct perf_event *bpf_prog_owner;
int (*perf_perm)(struct trace_event_call *,
struct perf_event *);
diff --git a/include/linux/trace_seq.h b/include/linux/trace_seq.h
index cfaf5a1d4bad..6609b39a7232 100644
--- a/include/linux/trace_seq.h
+++ b/include/linux/trace_seq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TRACE_SEQ_H
#define _LINUX_TRACE_SEQ_H
diff --git a/include/linux/tracepoint-defs.h b/include/linux/tracepoint-defs.h
index a03192052066..64ed7064f1fa 100644
--- a/include/linux/tracepoint-defs.h
+++ b/include/linux/tracepoint-defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TRACEPOINT_DEFS_H
#define TRACEPOINT_DEFS_H 1
diff --git a/include/linux/tsacct_kern.h b/include/linux/tsacct_kern.h
index 3251965bf4cc..d8ddce26e1f1 100644
--- a/include/linux/tsacct_kern.h
+++ b/include/linux/tsacct_kern.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* tsacct_kern.h - kernel header for system accounting over taskstats interface
*
diff --git a/include/linux/tty.h b/include/linux/tty.h
index cf53eb539f6e..7ac8ba208b1f 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TTY_H
#define _LINUX_TTY_H
diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
index fcdc0f5d9098..31c2b5b166de 100644
--- a/include/linux/tty_driver.h
+++ b/include/linux/tty_driver.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TTY_DRIVER_H
#define _LINUX_TTY_DRIVER_H
diff --git a/include/linux/tty_flip.h b/include/linux/tty_flip.h
index d43837f2ce3a..767f62086bd9 100644
--- a/include/linux/tty_flip.h
+++ b/include/linux/tty_flip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TTY_FLIP_H
#define _LINUX_TTY_FLIP_H
diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h
index 3971cf0eb467..3bc5144b1c7e 100644
--- a/include/linux/tty_ldisc.h
+++ b/include/linux/tty_ldisc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TTY_LDISC_H
#define _LINUX_TTY_LDISC_H
diff --git a/include/linux/typecheck.h b/include/linux/typecheck.h
index eb5b74a575be..20d310331eb5 100644
--- a/include/linux/typecheck.h
+++ b/include/linux/typecheck.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TYPECHECK_H_INCLUDED
#define TYPECHECK_H_INCLUDED
diff --git a/include/linux/types.h b/include/linux/types.h
index 258099a4ed82..34fce54e4f1b 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TYPES_H
#define _LINUX_TYPES_H
diff --git a/include/linux/u64_stats_sync.h b/include/linux/u64_stats_sync.h
index 650f3dd6b800..5bdbd9f49395 100644
--- a/include/linux/u64_stats_sync.h
+++ b/include/linux/u64_stats_sync.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_U64_STATS_SYNC_H
#define _LINUX_U64_STATS_SYNC_H
diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
index 20ef8e6ec2db..251e655d407f 100644
--- a/include/linux/uaccess.h
+++ b/include/linux/uaccess.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_UACCESS_H__
#define __LINUX_UACCESS_H__
diff --git a/include/linux/ucs2_string.h b/include/linux/ucs2_string.h
index bb679b48f408..cf3ada3e820e 100644
--- a/include/linux/ucs2_string.h
+++ b/include/linux/ucs2_string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UCS2_STRING_H_
#define _LINUX_UCS2_STRING_H_
diff --git a/include/linux/uidgid.h b/include/linux/uidgid.h
index 25e9d9216340..b0542cd11aeb 100644
--- a/include/linux/uidgid.h
+++ b/include/linux/uidgid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UIDGID_H
#define _LINUX_UIDGID_H
diff --git a/include/linux/ulpi/driver.h b/include/linux/ulpi/driver.h
index a7af21a55248..c7a1810373e3 100644
--- a/include/linux/ulpi/driver.h
+++ b/include/linux/ulpi/driver.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_ULPI_DRIVER_H
#define __LINUX_ULPI_DRIVER_H
diff --git a/include/linux/ulpi/interface.h b/include/linux/ulpi/interface.h
index a2011a919eb6..e93cfa36c3f7 100644
--- a/include/linux/ulpi/interface.h
+++ b/include/linux/ulpi/interface.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_ULPI_INTERFACE_H
#define __LINUX_ULPI_INTERFACE_H
diff --git a/include/linux/ulpi/regs.h b/include/linux/ulpi/regs.h
index b5b8b8804560..9f607872b2f8 100644
--- a/include/linux/ulpi/regs.h
+++ b/include/linux/ulpi/regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_ULPI_REGS_H
#define __LINUX_ULPI_REGS_H
diff --git a/include/linux/unaligned/access_ok.h b/include/linux/unaligned/access_ok.h
index 33383ca23837..167aa849c0ce 100644
--- a/include/linux/unaligned/access_ok.h
+++ b/include/linux/unaligned/access_ok.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UNALIGNED_ACCESS_OK_H
#define _LINUX_UNALIGNED_ACCESS_OK_H
diff --git a/include/linux/unaligned/be_byteshift.h b/include/linux/unaligned/be_byteshift.h
index 9356b24223ac..8bdb8fa01bd4 100644
--- a/include/linux/unaligned/be_byteshift.h
+++ b/include/linux/unaligned/be_byteshift.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UNALIGNED_BE_BYTESHIFT_H
#define _LINUX_UNALIGNED_BE_BYTESHIFT_H
diff --git a/include/linux/unaligned/be_memmove.h b/include/linux/unaligned/be_memmove.h
index c2a76c5c9ed0..7164214a4ba1 100644
--- a/include/linux/unaligned/be_memmove.h
+++ b/include/linux/unaligned/be_memmove.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UNALIGNED_BE_MEMMOVE_H
#define _LINUX_UNALIGNED_BE_MEMMOVE_H
diff --git a/include/linux/unaligned/be_struct.h b/include/linux/unaligned/be_struct.h
index 132415836c50..15ea503a13fc 100644
--- a/include/linux/unaligned/be_struct.h
+++ b/include/linux/unaligned/be_struct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UNALIGNED_BE_STRUCT_H
#define _LINUX_UNALIGNED_BE_STRUCT_H
diff --git a/include/linux/unaligned/generic.h b/include/linux/unaligned/generic.h
index 02d97ff3df70..57d3114656e5 100644
--- a/include/linux/unaligned/generic.h
+++ b/include/linux/unaligned/generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UNALIGNED_GENERIC_H
#define _LINUX_UNALIGNED_GENERIC_H
diff --git a/include/linux/unaligned/le_byteshift.h b/include/linux/unaligned/le_byteshift.h
index be376fb79b64..1628b75866f0 100644
--- a/include/linux/unaligned/le_byteshift.h
+++ b/include/linux/unaligned/le_byteshift.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UNALIGNED_LE_BYTESHIFT_H
#define _LINUX_UNALIGNED_LE_BYTESHIFT_H
diff --git a/include/linux/unaligned/le_memmove.h b/include/linux/unaligned/le_memmove.h
index 269849bee4ec..9202e864d026 100644
--- a/include/linux/unaligned/le_memmove.h
+++ b/include/linux/unaligned/le_memmove.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UNALIGNED_LE_MEMMOVE_H
#define _LINUX_UNALIGNED_LE_MEMMOVE_H
diff --git a/include/linux/unaligned/le_struct.h b/include/linux/unaligned/le_struct.h
index 088c4572faa8..9977987883a6 100644
--- a/include/linux/unaligned/le_struct.h
+++ b/include/linux/unaligned/le_struct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UNALIGNED_LE_STRUCT_H
#define _LINUX_UNALIGNED_LE_STRUCT_H
diff --git a/include/linux/unaligned/memmove.h b/include/linux/unaligned/memmove.h
index eeb5a779a4fd..ac71b53bc6dc 100644
--- a/include/linux/unaligned/memmove.h
+++ b/include/linux/unaligned/memmove.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UNALIGNED_MEMMOVE_H
#define _LINUX_UNALIGNED_MEMMOVE_H
diff --git a/include/linux/usb.h b/include/linux/usb.h
index cb9fbd54386e..9c63792a8134 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_USB_H
#define __LINUX_USB_H
diff --git a/include/linux/usb/atmel_usba_udc.h b/include/linux/usb/atmel_usba_udc.h
index ba99af275a31..9bb00df3b53f 100644
--- a/include/linux/usb/atmel_usba_udc.h
+++ b/include/linux/usb/atmel_usba_udc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Platform data definitions for Atmel USBA gadget driver.
*/
diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h
index 6cc96bb12ddc..523aa088f6ab 100644
--- a/include/linux/usb/ch9.h
+++ b/include/linux/usb/ch9.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file holds USB constants and structures that are needed for
* USB device APIs. These are used by the USB device model, which is
diff --git a/include/linux/usb/chipidea.h b/include/linux/usb/chipidea.h
index d725cff7268d..07f99362bc90 100644
--- a/include/linux/usb/chipidea.h
+++ b/include/linux/usb/chipidea.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Platform data for the chipidea USB dual role controller
*/
diff --git a/include/linux/usb/ehci-dbgp.h b/include/linux/usb/ehci-dbgp.h
index 7344d9e591cc..62ab3805172d 100644
--- a/include/linux/usb/ehci-dbgp.h
+++ b/include/linux/usb/ehci-dbgp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Standalone EHCI usb debug driver
*
diff --git a/include/linux/usb/ezusb.h b/include/linux/usb/ezusb.h
index 639ee45779fb..487047162ca8 100644
--- a/include/linux/usb/ezusb.h
+++ b/include/linux/usb/ezusb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __EZUSB_H
#define __EZUSB_H
diff --git a/include/linux/usb/functionfs.h b/include/linux/usb/functionfs.h
index 71190663f1ee..570578cc9861 100644
--- a/include/linux/usb/functionfs.h
+++ b/include/linux/usb/functionfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_FUNCTIONFS_H__
#define __LINUX_FUNCTIONFS_H__ 1
diff --git a/include/linux/usb/gadget_configfs.h b/include/linux/usb/gadget_configfs.h
index c36e95730de1..d61aebd68128 100644
--- a/include/linux/usb/gadget_configfs.h
+++ b/include/linux/usb/gadget_configfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GADGET_CONFIGFS__
#define __GADGET_CONFIGFS__
diff --git a/include/linux/usb/iowarrior.h b/include/linux/usb/iowarrior.h
index 4fd6513d564c..56559bc53214 100644
--- a/include/linux/usb/iowarrior.h
+++ b/include/linux/usb/iowarrior.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_USB_IOWARRIOR_H
#define __LINUX_USB_IOWARRIOR_H
diff --git a/include/linux/usb/irda.h b/include/linux/usb/irda.h
index e345ceaf72d6..396d2b043e64 100644
--- a/include/linux/usb/irda.h
+++ b/include/linux/usb/irda.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* USB IrDA Bridge Device Definition
*/
diff --git a/include/linux/usb/isp116x.h b/include/linux/usb/isp116x.h
index 96ca114e88d0..1f331c28bfe3 100644
--- a/include/linux/usb/isp116x.h
+++ b/include/linux/usb/isp116x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Board initialization code should put one of these into dev->platform_data
* and place the isp116x onto platform_bus.
diff --git a/include/linux/usb/isp1362.h b/include/linux/usb/isp1362.h
index 642684bb9292..5356c4ae386e 100644
--- a/include/linux/usb/isp1362.h
+++ b/include/linux/usb/isp1362.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* board initialization code should put one of these into dev->platform_data
* and place the isp1362 onto platform_bus.
diff --git a/include/linux/usb/isp1760.h b/include/linux/usb/isp1760.h
index de7de53c5531..b75ded28db81 100644
--- a/include/linux/usb/isp1760.h
+++ b/include/linux/usb/isp1760.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* board initialization should put one of these into dev->platform_data
* and place the isp1760 onto platform_bus named "isp1760-hcd".
diff --git a/include/linux/usb/musb.h b/include/linux/usb/musb.h
index d315c8907869..5d19e6730475 100644
--- a/include/linux/usb/musb.h
+++ b/include/linux/usb/musb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This is used to for host and peripheral modes of the driver for
* Inventra (Multidrop) Highspeed Dual-Role Controllers: (M)HDRC.
diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h
index 67929df86df5..69f1b6328532 100644
--- a/include/linux/usb/otg.h
+++ b/include/linux/usb/otg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* USB OTG (On The Go) defines */
/*
*
diff --git a/include/linux/usb/phy.h b/include/linux/usb/phy.h
index 8c6914873a16..b7a2625947f5 100644
--- a/include/linux/usb/phy.h
+++ b/include/linux/usb/phy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* USB PHY defines
*
diff --git a/include/linux/usb/quirks.h b/include/linux/usb/quirks.h
index de2a722fe3cf..7cd553a3ce05 100644
--- a/include/linux/usb/quirks.h
+++ b/include/linux/usb/quirks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file holds the definitions of quirks found in USB devices.
* Only quirks that affect the whole device, not an interface,
diff --git a/include/linux/usb/sl811.h b/include/linux/usb/sl811.h
index 3afe4d16fcef..6c97f8e66492 100644
--- a/include/linux/usb/sl811.h
+++ b/include/linux/usb/sl811.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* board initialization should put one of these into dev->platform_data
* and place the sl811hs onto platform_bus named "sl811-hcd".
diff --git a/include/linux/usb/typec.h b/include/linux/usb/typec.h
index ffe7487886ca..0d44ce6af08f 100644
--- a/include/linux/usb/typec.h
+++ b/include/linux/usb/typec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_USB_TYPEC_H
#define __LINUX_USB_TYPEC_H
diff --git a/include/linux/usb/uas.h b/include/linux/usb/uas.h
index 3fc8e8b9f043..aa3ad39d39dc 100644
--- a/include/linux/usb/uas.h
+++ b/include/linux/usb/uas.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __USB_UAS_H__
#define __USB_UAS_H__
diff --git a/include/linux/usb/usb_phy_generic.h b/include/linux/usb/usb_phy_generic.h
index c13632d5292e..7408cf52c710 100644
--- a/include/linux/usb/usb_phy_generic.h
+++ b/include/linux/usb/usb_phy_generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_USB_NOP_XCEIV_H
#define __LINUX_USB_NOP_XCEIV_H
diff --git a/include/linux/usb_usual.h b/include/linux/usb_usual.h
index 0aae1b2ee931..000a5954b2e8 100644
--- a/include/linux/usb_usual.h
+++ b/include/linux/usb_usual.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Interface to the libusual.
*
diff --git a/include/linux/user-return-notifier.h b/include/linux/user-return-notifier.h
index 9c4a445bb43c..c07b386a9e93 100644
--- a/include/linux/user-return-notifier.h
+++ b/include/linux/user-return-notifier.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_USER_RETURN_NOTIFIER_H
#define _LINUX_USER_RETURN_NOTIFIER_H
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
index c18e01252346..3fe714da7f5a 100644
--- a/include/linux/user_namespace.h
+++ b/include/linux/user_namespace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_USER_NAMESPACE_H
#define _LINUX_USER_NAMESPACE_H
diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h
index 48a3483dccb1..f2f3b68ba910 100644
--- a/include/linux/userfaultfd_k.h
+++ b/include/linux/userfaultfd_k.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/userfaultfd_k.h
*
diff --git a/include/linux/util_macros.h b/include/linux/util_macros.h
index f9b2ce58039b..72299f261b25 100644
--- a/include/linux/util_macros.h
+++ b/include/linux/util_macros.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_HELPER_MACROS_H_
#define _LINUX_HELPER_MACROS_H_
diff --git a/include/linux/uts.h b/include/linux/uts.h
index 6ddbd86377de..d62829530c2f 100644
--- a/include/linux/uts.h
+++ b/include/linux/uts.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UTS_H
#define _LINUX_UTS_H
diff --git a/include/linux/utsname.h b/include/linux/utsname.h
index da826ed059cf..c8060c2ecd04 100644
--- a/include/linux/utsname.h
+++ b/include/linux/utsname.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UTSNAME_H
#define _LINUX_UTSNAME_H
diff --git a/include/linux/vermagic.h b/include/linux/vermagic.h
index af6c03f7f986..bae807eb2933 100644
--- a/include/linux/vermagic.h
+++ b/include/linux/vermagic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <generated/utsrelease.h>
/* Simply sanity version stamp for modules. */
diff --git a/include/linux/vfs.h b/include/linux/vfs.h
index e701d0541405..33952ac00a19 100644
--- a/include/linux/vfs.h
+++ b/include/linux/vfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_VFS_H
#define _LINUX_VFS_H
diff --git a/include/linux/via.h b/include/linux/via.h
index 86ae3bcdb2ba..38ea9a77426a 100644
--- a/include/linux/via.h
+++ b/include/linux/via.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Miscellaneous definitions for VIA chipsets
Currently used only by drivers/parport/parport_pc.c */
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index 28b0e965360f..988c7355bc22 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_VIRTIO_H
#define _LINUX_VIRTIO_H
/* Everything a virtio driver needs to work with any particular virtio
diff --git a/include/linux/virtio_byteorder.h b/include/linux/virtio_byteorder.h
index ce63a2c3a612..825aaefac9b1 100644
--- a/include/linux/virtio_byteorder.h
+++ b/include/linux/virtio_byteorder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_VIRTIO_BYTEORDER_H
#define _LINUX_VIRTIO_BYTEORDER_H
#include <linux/types.h>
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
index 0133d8a12ccd..5559a2d31c46 100644
--- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_VIRTIO_CONFIG_H
#define _LINUX_VIRTIO_CONFIG_H
diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h
index 32fb046f2173..210034c896e3 100644
--- a/include/linux/virtio_net.h
+++ b/include/linux/virtio_net.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_VIRTIO_NET_H
#define _LINUX_VIRTIO_NET_H
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
index 270cfa81830e..bbf32524ab27 100644
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_VIRTIO_RING_H
#define _LINUX_VIRTIO_RING_H
diff --git a/include/linux/virtio_vsock.h b/include/linux/virtio_vsock.h
index ab13f0743da8..e223e2632edd 100644
--- a/include/linux/virtio_vsock.h
+++ b/include/linux/virtio_vsock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_VIRTIO_VSOCK_H
#define _LINUX_VIRTIO_VSOCK_H
diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h
index d77bc35278b0..5c7f010676a7 100644
--- a/include/linux/vm_event_item.h
+++ b/include/linux/vm_event_item.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef VM_EVENT_ITEM_H_INCLUDED
#define VM_EVENT_ITEM_H_INCLUDED
diff --git a/include/linux/vmacache.h b/include/linux/vmacache.h
index 1081db987391..a5b3aa8d281f 100644
--- a/include/linux/vmacache.h
+++ b/include/linux/vmacache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_VMACACHE_H
#define __LINUX_VMACACHE_H
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
index 2d92dd002abd..1e5d8c392f15 100644
--- a/include/linux/vmalloc.h
+++ b/include/linux/vmalloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_VMALLOC_H
#define _LINUX_VMALLOC_H
diff --git a/include/linux/vme.h b/include/linux/vme.h
index 25874da3f2e1..7e82bf500f01 100644
--- a/include/linux/vme.h
+++ b/include/linux/vme.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VME_H_
#define _VME_H_
diff --git a/include/linux/vmpressure.h b/include/linux/vmpressure.h
index 3347cc3ec0ab..61e6fddfb26f 100644
--- a/include/linux/vmpressure.h
+++ b/include/linux/vmpressure.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_VMPRESSURE_H
#define __LINUX_VMPRESSURE_H
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
index ade7cb5f1359..1e0cb72e0598 100644
--- a/include/linux/vmstat.h
+++ b/include/linux/vmstat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_VMSTAT_H
#define _LINUX_VMSTAT_H
diff --git a/include/linux/vt.h b/include/linux/vt.h
index b186e0435239..9820ae4f99ab 100644
--- a/include/linux/vt.h
+++ b/include/linux/vt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_VT_H
#define _LINUX_VT_H
diff --git a/include/linux/vt_buffer.h b/include/linux/vt_buffer.h
index 30b6e0d2a942..848db1b1569f 100644
--- a/include/linux/vt_buffer.h
+++ b/include/linux/vt_buffer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/vt_buffer.h -- Access to VT screen buffer
*
diff --git a/include/linux/vt_kern.h b/include/linux/vt_kern.h
index 833fdd4794a0..3fd07912909c 100644
--- a/include/linux/vt_kern.h
+++ b/include/linux/vt_kern.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VT_KERN_H
#define _VT_KERN_H
diff --git a/include/linux/vtime.h b/include/linux/vtime.h
index 18b405e3cd93..a26ed10a4eac 100644
--- a/include/linux/vtime.h
+++ b/include/linux/vtime.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KERNEL_VTIME_H
#define _LINUX_KERNEL_VTIME_H
diff --git a/include/linux/wait.h b/include/linux/wait.h
index dc19880c02f5..158715445ffb 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_WAIT_H
#define _LINUX_WAIT_H
/*
@@ -18,6 +19,7 @@ int default_wake_function(struct wait_queue_entry *wq_entry, unsigned mode, int
/* wait_queue_entry::flags */
#define WQ_FLAG_EXCLUSIVE 0x01
#define WQ_FLAG_WOKEN 0x02
+#define WQ_FLAG_BOOKMARK 0x04
/*
* A single wait-queue entry structure:
@@ -184,6 +186,8 @@ __remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq
void __wake_up(struct wait_queue_head *wq_head, unsigned int mode, int nr, void *key);
void __wake_up_locked_key(struct wait_queue_head *wq_head, unsigned int mode, void *key);
+void __wake_up_locked_key_bookmark(struct wait_queue_head *wq_head,
+ unsigned int mode, void *key, wait_queue_entry_t *bookmark);
void __wake_up_sync_key(struct wait_queue_head *wq_head, unsigned int mode, int nr, void *key);
void __wake_up_locked(struct wait_queue_head *wq_head, unsigned int mode, int nr);
void __wake_up_sync(struct wait_queue_head *wq_head, unsigned int mode, int nr);
diff --git a/include/linux/wait_bit.h b/include/linux/wait_bit.h
index 12b26660d7e9..af0d495430d7 100644
--- a/include/linux/wait_bit.h
+++ b/include/linux/wait_bit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_WAIT_BIT_H
#define _LINUX_WAIT_BIT_H
diff --git a/include/linux/wanrouter.h b/include/linux/wanrouter.h
index 8198a63cf459..f6358558f9f5 100644
--- a/include/linux/wanrouter.h
+++ b/include/linux/wanrouter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* wanrouter.h Legacy declarations kept around until X25 is removed
*/
diff --git a/include/linux/watchdog.h b/include/linux/watchdog.h
index a786e5e8973b..44985c4a1e86 100644
--- a/include/linux/watchdog.h
+++ b/include/linux/watchdog.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Generic watchdog defines. Derived from..
*
diff --git a/include/linux/win_minmax.h b/include/linux/win_minmax.h
index 56569604278f..4ca2842d2842 100644
--- a/include/linux/win_minmax.h
+++ b/include/linux/win_minmax.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/**
* lib/minmax.c: windowed min/max tracker by Kathleen Nichols.
*
diff --git a/include/linux/wireless.h b/include/linux/wireless.h
index 4ea4c6e2383d..2d1b54556eff 100644
--- a/include/linux/wireless.h
+++ b/include/linux/wireless.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file define a set of standard wireless extensions
*
diff --git a/include/linux/wm97xx.h b/include/linux/wm97xx.h
index fd98bb968219..58e082dadc68 100644
--- a/include/linux/wm97xx.h
+++ b/include/linux/wm97xx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Register bits and API for Wolfson WM97xx series of codecs
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index 1c49431f3121..0eae11fc7a23 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* workqueue.h --- work queue handling for Linux.
*/
diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index d5815794416c..e12d92808e98 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* include/linux/writeback.h
*/
diff --git a/include/linux/ww_mutex.h b/include/linux/ww_mutex.h
index 5dd9a7682227..39fda195bf78 100644
--- a/include/linux/ww_mutex.h
+++ b/include/linux/ww_mutex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Wound/Wait Mutexes: blocking mutual exclusion locks with deadlock avoidance
*
diff --git a/include/linux/xattr.h b/include/linux/xattr.h
index e77605a0c8da..d70f77a4b62a 100644
--- a/include/linux/xattr.h
+++ b/include/linux/xattr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
File: linux/xattr.h
diff --git a/include/linux/xxhash.h b/include/linux/xxhash.h
new file mode 100644
index 000000000000..9e1f42cb57e9
--- /dev/null
+++ b/include/linux/xxhash.h
@@ -0,0 +1,236 @@
+/*
+ * xxHash - Extremely Fast Hash algorithm
+ * Copyright (C) 2012-2016, Yann Collet.
+ *
+ * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License version 2 as published by the
+ * Free Software Foundation. This program is dual-licensed; you may select
+ * either version 2 of the GNU General Public License ("GPL") or BSD license
+ * ("BSD").
+ *
+ * You can contact the author at:
+ * - xxHash homepage: http://cyan4973.github.io/xxHash/
+ * - xxHash source repository: https://github.com/Cyan4973/xxHash
+ */
+
+/*
+ * Notice extracted from xxHash homepage:
+ *
+ * xxHash is an extremely fast Hash algorithm, running at RAM speed limits.
+ * It also successfully passes all tests from the SMHasher suite.
+ *
+ * Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2
+ * Duo @3GHz)
+ *
+ * Name Speed Q.Score Author
+ * xxHash 5.4 GB/s 10
+ * CrapWow 3.2 GB/s 2 Andrew
+ * MumurHash 3a 2.7 GB/s 10 Austin Appleby
+ * SpookyHash 2.0 GB/s 10 Bob Jenkins
+ * SBox 1.4 GB/s 9 Bret Mulvey
+ * Lookup3 1.2 GB/s 9 Bob Jenkins
+ * SuperFastHash 1.2 GB/s 1 Paul Hsieh
+ * CityHash64 1.05 GB/s 10 Pike & Alakuijala
+ * FNV 0.55 GB/s 5 Fowler, Noll, Vo
+ * CRC32 0.43 GB/s 9
+ * MD5-32 0.33 GB/s 10 Ronald L. Rivest
+ * SHA1-32 0.28 GB/s 10
+ *
+ * Q.Score is a measure of quality of the hash function.
+ * It depends on successfully passing SMHasher test set.
+ * 10 is a perfect score.
+ *
+ * A 64-bits version, named xxh64 offers much better speed,
+ * but for 64-bits applications only.
+ * Name Speed on 64 bits Speed on 32 bits
+ * xxh64 13.8 GB/s 1.9 GB/s
+ * xxh32 6.8 GB/s 6.0 GB/s
+ */
+
+#ifndef XXHASH_H
+#define XXHASH_H
+
+#include <linux/types.h>
+
+/*-****************************
+ * Simple Hash Functions
+ *****************************/
+
+/**
+ * xxh32() - calculate the 32-bit hash of the input with a given seed.
+ *
+ * @input: The data to hash.
+ * @length: The length of the data to hash.
+ * @seed: The seed can be used to alter the result predictably.
+ *
+ * Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s
+ *
+ * Return: The 32-bit hash of the data.
+ */
+uint32_t xxh32(const void *input, size_t length, uint32_t seed);
+
+/**
+ * xxh64() - calculate the 64-bit hash of the input with a given seed.
+ *
+ * @input: The data to hash.
+ * @length: The length of the data to hash.
+ * @seed: The seed can be used to alter the result predictably.
+ *
+ * This function runs 2x faster on 64-bit systems, but slower on 32-bit systems.
+ *
+ * Return: The 64-bit hash of the data.
+ */
+uint64_t xxh64(const void *input, size_t length, uint64_t seed);
+
+/*-****************************
+ * Streaming Hash Functions
+ *****************************/
+
+/*
+ * These definitions are only meant to allow allocation of XXH state
+ * statically, on stack, or in a struct for example.
+ * Do not use members directly.
+ */
+
+/**
+ * struct xxh32_state - private xxh32 state, do not use members directly
+ */
+struct xxh32_state {
+ uint32_t total_len_32;
+ uint32_t large_len;
+ uint32_t v1;
+ uint32_t v2;
+ uint32_t v3;
+ uint32_t v4;
+ uint32_t mem32[4];
+ uint32_t memsize;
+};
+
+/**
+ * struct xxh32_state - private xxh64 state, do not use members directly
+ */
+struct xxh64_state {
+ uint64_t total_len;
+ uint64_t v1;
+ uint64_t v2;
+ uint64_t v3;
+ uint64_t v4;
+ uint64_t mem64[4];
+ uint32_t memsize;
+};
+
+/**
+ * xxh32_reset() - reset the xxh32 state to start a new hashing operation
+ *
+ * @state: The xxh32 state to reset.
+ * @seed: Initialize the hash state with this seed.
+ *
+ * Call this function on any xxh32_state to prepare for a new hashing operation.
+ */
+void xxh32_reset(struct xxh32_state *state, uint32_t seed);
+
+/**
+ * xxh32_update() - hash the data given and update the xxh32 state
+ *
+ * @state: The xxh32 state to update.
+ * @input: The data to hash.
+ * @length: The length of the data to hash.
+ *
+ * After calling xxh32_reset() call xxh32_update() as many times as necessary.
+ *
+ * Return: Zero on success, otherwise an error code.
+ */
+int xxh32_update(struct xxh32_state *state, const void *input, size_t length);
+
+/**
+ * xxh32_digest() - produce the current xxh32 hash
+ *
+ * @state: Produce the current xxh32 hash of this state.
+ *
+ * A hash value can be produced at any time. It is still possible to continue
+ * inserting input into the hash state after a call to xxh32_digest(), and
+ * generate new hashes later on, by calling xxh32_digest() again.
+ *
+ * Return: The xxh32 hash stored in the state.
+ */
+uint32_t xxh32_digest(const struct xxh32_state *state);
+
+/**
+ * xxh64_reset() - reset the xxh64 state to start a new hashing operation
+ *
+ * @state: The xxh64 state to reset.
+ * @seed: Initialize the hash state with this seed.
+ */
+void xxh64_reset(struct xxh64_state *state, uint64_t seed);
+
+/**
+ * xxh64_update() - hash the data given and update the xxh64 state
+ * @state: The xxh64 state to update.
+ * @input: The data to hash.
+ * @length: The length of the data to hash.
+ *
+ * After calling xxh64_reset() call xxh64_update() as many times as necessary.
+ *
+ * Return: Zero on success, otherwise an error code.
+ */
+int xxh64_update(struct xxh64_state *state, const void *input, size_t length);
+
+/**
+ * xxh64_digest() - produce the current xxh64 hash
+ *
+ * @state: Produce the current xxh64 hash of this state.
+ *
+ * A hash value can be produced at any time. It is still possible to continue
+ * inserting input into the hash state after a call to xxh64_digest(), and
+ * generate new hashes later on, by calling xxh64_digest() again.
+ *
+ * Return: The xxh64 hash stored in the state.
+ */
+uint64_t xxh64_digest(const struct xxh64_state *state);
+
+/*-**************************
+ * Utils
+ ***************************/
+
+/**
+ * xxh32_copy_state() - copy the source state into the destination state
+ *
+ * @src: The source xxh32 state.
+ * @dst: The destination xxh32 state.
+ */
+void xxh32_copy_state(struct xxh32_state *dst, const struct xxh32_state *src);
+
+/**
+ * xxh64_copy_state() - copy the source state into the destination state
+ *
+ * @src: The source xxh64 state.
+ * @dst: The destination xxh64 state.
+ */
+void xxh64_copy_state(struct xxh64_state *dst, const struct xxh64_state *src);
+
+#endif /* XXHASH_H */
diff --git a/include/linux/z2_battery.h b/include/linux/z2_battery.h
index 7b9750404d22..eaba53ff387c 100644
--- a/include/linux/z2_battery.h
+++ b/include/linux/z2_battery.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_Z2_BATTERY_H
#define _LINUX_Z2_BATTERY_H
diff --git a/include/linux/zbud.h b/include/linux/zbud.h
index e183a0a65ac1..b1eaf6e31735 100644
--- a/include/linux/zbud.h
+++ b/include/linux/zbud.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ZBUD_H_
#define _ZBUD_H_
diff --git a/include/linux/zpool.h b/include/linux/zpool.h
index 2e97b7707dff..004ba807df96 100644
--- a/include/linux/zpool.h
+++ b/include/linux/zpool.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* zpool memory storage api
*
diff --git a/include/linux/zstd.h b/include/linux/zstd.h
new file mode 100644
index 000000000000..249575e2485f
--- /dev/null
+++ b/include/linux/zstd.h
@@ -0,0 +1,1157 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of https://github.com/facebook/zstd.
+ * An additional grant of patent rights can be found in the PATENTS file in the
+ * same directory.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License version 2 as published by the
+ * Free Software Foundation. This program is dual-licensed; you may select
+ * either version 2 of the GNU General Public License ("GPL") or BSD license
+ * ("BSD").
+ */
+
+#ifndef ZSTD_H
+#define ZSTD_H
+
+/* ====== Dependency ======*/
+#include <linux/types.h> /* size_t */
+
+
+/*-*****************************************************************************
+ * Introduction
+ *
+ * zstd, short for Zstandard, is a fast lossless compression algorithm,
+ * targeting real-time compression scenarios at zlib-level and better
+ * compression ratios. The zstd compression library provides in-memory
+ * compression and decompression functions. The library supports compression
+ * levels from 1 up to ZSTD_maxCLevel() which is 22. Levels >= 20, labeled
+ * ultra, should be used with caution, as they require more memory.
+ * Compression can be done in:
+ * - a single step, reusing a context (described as Explicit memory management)
+ * - unbounded multiple steps (described as Streaming compression)
+ * The compression ratio achievable on small data can be highly improved using
+ * compression with a dictionary in:
+ * - a single step (described as Simple dictionary API)
+ * - a single step, reusing a dictionary (described as Fast dictionary API)
+ ******************************************************************************/
+
+/*====== Helper functions ======*/
+
+/**
+ * enum ZSTD_ErrorCode - zstd error codes
+ *
+ * Functions that return size_t can be checked for errors using ZSTD_isError()
+ * and the ZSTD_ErrorCode can be extracted using ZSTD_getErrorCode().
+ */
+typedef enum {
+ ZSTD_error_no_error,
+ ZSTD_error_GENERIC,
+ ZSTD_error_prefix_unknown,
+ ZSTD_error_version_unsupported,
+ ZSTD_error_parameter_unknown,
+ ZSTD_error_frameParameter_unsupported,
+ ZSTD_error_frameParameter_unsupportedBy32bits,
+ ZSTD_error_frameParameter_windowTooLarge,
+ ZSTD_error_compressionParameter_unsupported,
+ ZSTD_error_init_missing,
+ ZSTD_error_memory_allocation,
+ ZSTD_error_stage_wrong,
+ ZSTD_error_dstSize_tooSmall,
+ ZSTD_error_srcSize_wrong,
+ ZSTD_error_corruption_detected,
+ ZSTD_error_checksum_wrong,
+ ZSTD_error_tableLog_tooLarge,
+ ZSTD_error_maxSymbolValue_tooLarge,
+ ZSTD_error_maxSymbolValue_tooSmall,
+ ZSTD_error_dictionary_corrupted,
+ ZSTD_error_dictionary_wrong,
+ ZSTD_error_dictionaryCreation_failed,
+ ZSTD_error_maxCode
+} ZSTD_ErrorCode;
+
+/**
+ * ZSTD_maxCLevel() - maximum compression level available
+ *
+ * Return: Maximum compression level available.
+ */
+int ZSTD_maxCLevel(void);
+/**
+ * ZSTD_compressBound() - maximum compressed size in worst case scenario
+ * @srcSize: The size of the data to compress.
+ *
+ * Return: The maximum compressed size in the worst case scenario.
+ */
+size_t ZSTD_compressBound(size_t srcSize);
+/**
+ * ZSTD_isError() - tells if a size_t function result is an error code
+ * @code: The function result to check for error.
+ *
+ * Return: Non-zero iff the code is an error.
+ */
+static __attribute__((unused)) unsigned int ZSTD_isError(size_t code)
+{
+ return code > (size_t)-ZSTD_error_maxCode;
+}
+/**
+ * ZSTD_getErrorCode() - translates an error function result to a ZSTD_ErrorCode
+ * @functionResult: The result of a function for which ZSTD_isError() is true.
+ *
+ * Return: The ZSTD_ErrorCode corresponding to the functionResult or 0
+ * if the functionResult isn't an error.
+ */
+static __attribute__((unused)) ZSTD_ErrorCode ZSTD_getErrorCode(
+ size_t functionResult)
+{
+ if (!ZSTD_isError(functionResult))
+ return (ZSTD_ErrorCode)0;
+ return (ZSTD_ErrorCode)(0 - functionResult);
+}
+
+/**
+ * enum ZSTD_strategy - zstd compression search strategy
+ *
+ * From faster to stronger.
+ */
+typedef enum {
+ ZSTD_fast,
+ ZSTD_dfast,
+ ZSTD_greedy,
+ ZSTD_lazy,
+ ZSTD_lazy2,
+ ZSTD_btlazy2,
+ ZSTD_btopt,
+ ZSTD_btopt2
+} ZSTD_strategy;
+
+/**
+ * struct ZSTD_compressionParameters - zstd compression parameters
+ * @windowLog: Log of the largest match distance. Larger means more
+ * compression, and more memory needed during decompression.
+ * @chainLog: Fully searched segment. Larger means more compression, slower,
+ * and more memory (useless for fast).
+ * @hashLog: Dispatch table. Larger means more compression,
+ * slower, and more memory.
+ * @searchLog: Number of searches. Larger means more compression and slower.
+ * @searchLength: Match length searched. Larger means faster decompression,
+ * sometimes less compression.
+ * @targetLength: Acceptable match size for optimal parser (only). Larger means
+ * more compression, and slower.
+ * @strategy: The zstd compression strategy.
+ */
+typedef struct {
+ unsigned int windowLog;
+ unsigned int chainLog;
+ unsigned int hashLog;
+ unsigned int searchLog;
+ unsigned int searchLength;
+ unsigned int targetLength;
+ ZSTD_strategy strategy;
+} ZSTD_compressionParameters;
+
+/**
+ * struct ZSTD_frameParameters - zstd frame parameters
+ * @contentSizeFlag: Controls whether content size will be present in the frame
+ * header (when known).
+ * @checksumFlag: Controls whether a 32-bit checksum is generated at the end
+ * of the frame for error detection.
+ * @noDictIDFlag: Controls whether dictID will be saved into the frame header
+ * when using dictionary compression.
+ *
+ * The default value is all fields set to 0.
+ */
+typedef struct {
+ unsigned int contentSizeFlag;
+ unsigned int checksumFlag;
+ unsigned int noDictIDFlag;
+} ZSTD_frameParameters;
+
+/**
+ * struct ZSTD_parameters - zstd parameters
+ * @cParams: The compression parameters.
+ * @fParams: The frame parameters.
+ */
+typedef struct {
+ ZSTD_compressionParameters cParams;
+ ZSTD_frameParameters fParams;
+} ZSTD_parameters;
+
+/**
+ * ZSTD_getCParams() - returns ZSTD_compressionParameters for selected level
+ * @compressionLevel: The compression level from 1 to ZSTD_maxCLevel().
+ * @estimatedSrcSize: The estimated source size to compress or 0 if unknown.
+ * @dictSize: The dictionary size or 0 if a dictionary isn't being used.
+ *
+ * Return: The selected ZSTD_compressionParameters.
+ */
+ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel,
+ unsigned long long estimatedSrcSize, size_t dictSize);
+
+/**
+ * ZSTD_getParams() - returns ZSTD_parameters for selected level
+ * @compressionLevel: The compression level from 1 to ZSTD_maxCLevel().
+ * @estimatedSrcSize: The estimated source size to compress or 0 if unknown.
+ * @dictSize: The dictionary size or 0 if a dictionary isn't being used.
+ *
+ * The same as ZSTD_getCParams() except also selects the default frame
+ * parameters (all zero).
+ *
+ * Return: The selected ZSTD_parameters.
+ */
+ZSTD_parameters ZSTD_getParams(int compressionLevel,
+ unsigned long long estimatedSrcSize, size_t dictSize);
+
+/*-*************************************
+ * Explicit memory management
+ **************************************/
+
+/**
+ * ZSTD_CCtxWorkspaceBound() - amount of memory needed to initialize a ZSTD_CCtx
+ * @cParams: The compression parameters to be used for compression.
+ *
+ * If multiple compression parameters might be used, the caller must call
+ * ZSTD_CCtxWorkspaceBound() for each set of parameters and use the maximum
+ * size.
+ *
+ * Return: A lower bound on the size of the workspace that is passed to
+ * ZSTD_initCCtx().
+ */
+size_t ZSTD_CCtxWorkspaceBound(ZSTD_compressionParameters cParams);
+
+/**
+ * struct ZSTD_CCtx - the zstd compression context
+ *
+ * When compressing many times it is recommended to allocate a context just once
+ * and reuse it for each successive compression operation.
+ */
+typedef struct ZSTD_CCtx_s ZSTD_CCtx;
+/**
+ * ZSTD_initCCtx() - initialize a zstd compression context
+ * @workspace: The workspace to emplace the context into. It must outlive
+ * the returned context.
+ * @workspaceSize: The size of workspace. Use ZSTD_CCtxWorkspaceBound() to
+ * determine how large the workspace must be.
+ *
+ * Return: A compression context emplaced into workspace.
+ */
+ZSTD_CCtx *ZSTD_initCCtx(void *workspace, size_t workspaceSize);
+
+/**
+ * ZSTD_compressCCtx() - compress src into dst
+ * @ctx: The context. Must have been initialized with a workspace at
+ * least as large as ZSTD_CCtxWorkspaceBound(params.cParams).
+ * @dst: The buffer to compress src into.
+ * @dstCapacity: The size of the destination buffer. May be any size, but
+ * ZSTD_compressBound(srcSize) is guaranteed to be large enough.
+ * @src: The data to compress.
+ * @srcSize: The size of the data to compress.
+ * @params: The parameters to use for compression. See ZSTD_getParams().
+ *
+ * Return: The compressed size or an error, which can be checked using
+ * ZSTD_isError().
+ */
+size_t ZSTD_compressCCtx(ZSTD_CCtx *ctx, void *dst, size_t dstCapacity,
+ const void *src, size_t srcSize, ZSTD_parameters params);
+
+/**
+ * ZSTD_DCtxWorkspaceBound() - amount of memory needed to initialize a ZSTD_DCtx
+ *
+ * Return: A lower bound on the size of the workspace that is passed to
+ * ZSTD_initDCtx().
+ */
+size_t ZSTD_DCtxWorkspaceBound(void);
+
+/**
+ * struct ZSTD_DCtx - the zstd decompression context
+ *
+ * When decompressing many times it is recommended to allocate a context just
+ * once and reuse it for each successive decompression operation.
+ */
+typedef struct ZSTD_DCtx_s ZSTD_DCtx;
+/**
+ * ZSTD_initDCtx() - initialize a zstd decompression context
+ * @workspace: The workspace to emplace the context into. It must outlive
+ * the returned context.
+ * @workspaceSize: The size of workspace. Use ZSTD_DCtxWorkspaceBound() to
+ * determine how large the workspace must be.
+ *
+ * Return: A decompression context emplaced into workspace.
+ */
+ZSTD_DCtx *ZSTD_initDCtx(void *workspace, size_t workspaceSize);
+
+/**
+ * ZSTD_decompressDCtx() - decompress zstd compressed src into dst
+ * @ctx: The decompression context.
+ * @dst: The buffer to decompress src into.
+ * @dstCapacity: The size of the destination buffer. Must be at least as large
+ * as the decompressed size. If the caller cannot upper bound the
+ * decompressed size, then it's better to use the streaming API.
+ * @src: The zstd compressed data to decompress. Multiple concatenated
+ * frames and skippable frames are allowed.
+ * @srcSize: The exact size of the data to decompress.
+ *
+ * Return: The decompressed size or an error, which can be checked using
+ * ZSTD_isError().
+ */
+size_t ZSTD_decompressDCtx(ZSTD_DCtx *ctx, void *dst, size_t dstCapacity,
+ const void *src, size_t srcSize);
+
+/*-************************
+ * Simple dictionary API
+ **************************/
+
+/**
+ * ZSTD_compress_usingDict() - compress src into dst using a dictionary
+ * @ctx: The context. Must have been initialized with a workspace at
+ * least as large as ZSTD_CCtxWorkspaceBound(params.cParams).
+ * @dst: The buffer to compress src into.
+ * @dstCapacity: The size of the destination buffer. May be any size, but
+ * ZSTD_compressBound(srcSize) is guaranteed to be large enough.
+ * @src: The data to compress.
+ * @srcSize: The size of the data to compress.
+ * @dict: The dictionary to use for compression.
+ * @dictSize: The size of the dictionary.
+ * @params: The parameters to use for compression. See ZSTD_getParams().
+ *
+ * Compression using a predefined dictionary. The same dictionary must be used
+ * during decompression.
+ *
+ * Return: The compressed size or an error, which can be checked using
+ * ZSTD_isError().
+ */
+size_t ZSTD_compress_usingDict(ZSTD_CCtx *ctx, void *dst, size_t dstCapacity,
+ const void *src, size_t srcSize, const void *dict, size_t dictSize,
+ ZSTD_parameters params);
+
+/**
+ * ZSTD_decompress_usingDict() - decompress src into dst using a dictionary
+ * @ctx: The decompression context.
+ * @dst: The buffer to decompress src into.
+ * @dstCapacity: The size of the destination buffer. Must be at least as large
+ * as the decompressed size. If the caller cannot upper bound the
+ * decompressed size, then it's better to use the streaming API.
+ * @src: The zstd compressed data to decompress. Multiple concatenated
+ * frames and skippable frames are allowed.
+ * @srcSize: The exact size of the data to decompress.
+ * @dict: The dictionary to use for decompression. The same dictionary
+ * must've been used to compress the data.
+ * @dictSize: The size of the dictionary.
+ *
+ * Return: The decompressed size or an error, which can be checked using
+ * ZSTD_isError().
+ */
+size_t ZSTD_decompress_usingDict(ZSTD_DCtx *ctx, void *dst, size_t dstCapacity,
+ const void *src, size_t srcSize, const void *dict, size_t dictSize);
+
+/*-**************************
+ * Fast dictionary API
+ ***************************/
+
+/**
+ * ZSTD_CDictWorkspaceBound() - memory needed to initialize a ZSTD_CDict
+ * @cParams: The compression parameters to be used for compression.
+ *
+ * Return: A lower bound on the size of the workspace that is passed to
+ * ZSTD_initCDict().
+ */
+size_t ZSTD_CDictWorkspaceBound(ZSTD_compressionParameters cParams);
+
+/**
+ * struct ZSTD_CDict - a digested dictionary to be used for compression
+ */
+typedef struct ZSTD_CDict_s ZSTD_CDict;
+
+/**
+ * ZSTD_initCDict() - initialize a digested dictionary for compression
+ * @dictBuffer: The dictionary to digest. The buffer is referenced by the
+ * ZSTD_CDict so it must outlive the returned ZSTD_CDict.
+ * @dictSize: The size of the dictionary.
+ * @params: The parameters to use for compression. See ZSTD_getParams().
+ * @workspace: The workspace. It must outlive the returned ZSTD_CDict.
+ * @workspaceSize: The workspace size. Must be at least
+ * ZSTD_CDictWorkspaceBound(params.cParams).
+ *
+ * When compressing multiple messages / blocks with the same dictionary it is
+ * recommended to load it just once. The ZSTD_CDict merely references the
+ * dictBuffer, so it must outlive the returned ZSTD_CDict.
+ *
+ * Return: The digested dictionary emplaced into workspace.
+ */
+ZSTD_CDict *ZSTD_initCDict(const void *dictBuffer, size_t dictSize,
+ ZSTD_parameters params, void *workspace, size_t workspaceSize);
+
+/**
+ * ZSTD_compress_usingCDict() - compress src into dst using a ZSTD_CDict
+ * @ctx: The context. Must have been initialized with a workspace at
+ * least as large as ZSTD_CCtxWorkspaceBound(cParams) where
+ * cParams are the compression parameters used to initialize the
+ * cdict.
+ * @dst: The buffer to compress src into.
+ * @dstCapacity: The size of the destination buffer. May be any size, but
+ * ZSTD_compressBound(srcSize) is guaranteed to be large enough.
+ * @src: The data to compress.
+ * @srcSize: The size of the data to compress.
+ * @cdict: The digested dictionary to use for compression.
+ * @params: The parameters to use for compression. See ZSTD_getParams().
+ *
+ * Compression using a digested dictionary. The same dictionary must be used
+ * during decompression.
+ *
+ * Return: The compressed size or an error, which can be checked using
+ * ZSTD_isError().
+ */
+size_t ZSTD_compress_usingCDict(ZSTD_CCtx *cctx, void *dst, size_t dstCapacity,
+ const void *src, size_t srcSize, const ZSTD_CDict *cdict);
+
+
+/**
+ * ZSTD_DDictWorkspaceBound() - memory needed to initialize a ZSTD_DDict
+ *
+ * Return: A lower bound on the size of the workspace that is passed to
+ * ZSTD_initDDict().
+ */
+size_t ZSTD_DDictWorkspaceBound(void);
+
+/**
+ * struct ZSTD_DDict - a digested dictionary to be used for decompression
+ */
+typedef struct ZSTD_DDict_s ZSTD_DDict;
+
+/**
+ * ZSTD_initDDict() - initialize a digested dictionary for decompression
+ * @dictBuffer: The dictionary to digest. The buffer is referenced by the
+ * ZSTD_DDict so it must outlive the returned ZSTD_DDict.
+ * @dictSize: The size of the dictionary.
+ * @workspace: The workspace. It must outlive the returned ZSTD_DDict.
+ * @workspaceSize: The workspace size. Must be at least
+ * ZSTD_DDictWorkspaceBound().
+ *
+ * When decompressing multiple messages / blocks with the same dictionary it is
+ * recommended to load it just once. The ZSTD_DDict merely references the
+ * dictBuffer, so it must outlive the returned ZSTD_DDict.
+ *
+ * Return: The digested dictionary emplaced into workspace.
+ */
+ZSTD_DDict *ZSTD_initDDict(const void *dictBuffer, size_t dictSize,
+ void *workspace, size_t workspaceSize);
+
+/**
+ * ZSTD_decompress_usingDDict() - decompress src into dst using a ZSTD_DDict
+ * @ctx: The decompression context.
+ * @dst: The buffer to decompress src into.
+ * @dstCapacity: The size of the destination buffer. Must be at least as large
+ * as the decompressed size. If the caller cannot upper bound the
+ * decompressed size, then it's better to use the streaming API.
+ * @src: The zstd compressed data to decompress. Multiple concatenated
+ * frames and skippable frames are allowed.
+ * @srcSize: The exact size of the data to decompress.
+ * @ddict: The digested dictionary to use for decompression. The same
+ * dictionary must've been used to compress the data.
+ *
+ * Return: The decompressed size or an error, which can be checked using
+ * ZSTD_isError().
+ */
+size_t ZSTD_decompress_usingDDict(ZSTD_DCtx *dctx, void *dst,
+ size_t dstCapacity, const void *src, size_t srcSize,
+ const ZSTD_DDict *ddict);
+
+
+/*-**************************
+ * Streaming
+ ***************************/
+
+/**
+ * struct ZSTD_inBuffer - input buffer for streaming
+ * @src: Start of the input buffer.
+ * @size: Size of the input buffer.
+ * @pos: Position where reading stopped. Will be updated.
+ * Necessarily 0 <= pos <= size.
+ */
+typedef struct ZSTD_inBuffer_s {
+ const void *src;
+ size_t size;
+ size_t pos;
+} ZSTD_inBuffer;
+
+/**
+ * struct ZSTD_outBuffer - output buffer for streaming
+ * @dst: Start of the output buffer.
+ * @size: Size of the output buffer.
+ * @pos: Position where writing stopped. Will be updated.
+ * Necessarily 0 <= pos <= size.
+ */
+typedef struct ZSTD_outBuffer_s {
+ void *dst;
+ size_t size;
+ size_t pos;
+} ZSTD_outBuffer;
+
+
+
+/*-*****************************************************************************
+ * Streaming compression - HowTo
+ *
+ * A ZSTD_CStream object is required to track streaming operation.
+ * Use ZSTD_initCStream() to initialize a ZSTD_CStream object.
+ * ZSTD_CStream objects can be reused multiple times on consecutive compression
+ * operations. It is recommended to re-use ZSTD_CStream in situations where many
+ * streaming operations will be achieved consecutively. Use one separate
+ * ZSTD_CStream per thread for parallel execution.
+ *
+ * Use ZSTD_compressStream() repetitively to consume input stream.
+ * The function will automatically update both `pos` fields.
+ * Note that it may not consume the entire input, in which case `pos < size`,
+ * and it's up to the caller to present again remaining data.
+ * It returns a hint for the preferred number of bytes to use as an input for
+ * the next function call.
+ *
+ * At any moment, it's possible to flush whatever data remains within internal
+ * buffer, using ZSTD_flushStream(). `output->pos` will be updated. There might
+ * still be some content left within the internal buffer if `output->size` is
+ * too small. It returns the number of bytes left in the internal buffer and
+ * must be called until it returns 0.
+ *
+ * ZSTD_endStream() instructs to finish a frame. It will perform a flush and
+ * write frame epilogue. The epilogue is required for decoders to consider a
+ * frame completed. Similar to ZSTD_flushStream(), it may not be able to flush
+ * the full content if `output->size` is too small. In which case, call again
+ * ZSTD_endStream() to complete the flush. It returns the number of bytes left
+ * in the internal buffer and must be called until it returns 0.
+ ******************************************************************************/
+
+/**
+ * ZSTD_CStreamWorkspaceBound() - memory needed to initialize a ZSTD_CStream
+ * @cParams: The compression parameters to be used for compression.
+ *
+ * Return: A lower bound on the size of the workspace that is passed to
+ * ZSTD_initCStream() and ZSTD_initCStream_usingCDict().
+ */
+size_t ZSTD_CStreamWorkspaceBound(ZSTD_compressionParameters cParams);
+
+/**
+ * struct ZSTD_CStream - the zstd streaming compression context
+ */
+typedef struct ZSTD_CStream_s ZSTD_CStream;
+
+/*===== ZSTD_CStream management functions =====*/
+/**
+ * ZSTD_initCStream() - initialize a zstd streaming compression context
+ * @params: The zstd compression parameters.
+ * @pledgedSrcSize: If params.fParams.contentSizeFlag == 1 then the caller must
+ * pass the source size (zero means empty source). Otherwise,
+ * the caller may optionally pass the source size, or zero if
+ * unknown.
+ * @workspace: The workspace to emplace the context into. It must outlive
+ * the returned context.
+ * @workspaceSize: The size of workspace.
+ * Use ZSTD_CStreamWorkspaceBound(params.cParams) to determine
+ * how large the workspace must be.
+ *
+ * Return: The zstd streaming compression context.
+ */
+ZSTD_CStream *ZSTD_initCStream(ZSTD_parameters params,
+ unsigned long long pledgedSrcSize, void *workspace,
+ size_t workspaceSize);
+
+/**
+ * ZSTD_initCStream_usingCDict() - initialize a streaming compression context
+ * @cdict: The digested dictionary to use for compression.
+ * @pledgedSrcSize: Optionally the source size, or zero if unknown.
+ * @workspace: The workspace to emplace the context into. It must outlive
+ * the returned context.
+ * @workspaceSize: The size of workspace. Call ZSTD_CStreamWorkspaceBound()
+ * with the cParams used to initialize the cdict to determine
+ * how large the workspace must be.
+ *
+ * Return: The zstd streaming compression context.
+ */
+ZSTD_CStream *ZSTD_initCStream_usingCDict(const ZSTD_CDict *cdict,
+ unsigned long long pledgedSrcSize, void *workspace,
+ size_t workspaceSize);
+
+/*===== Streaming compression functions =====*/
+/**
+ * ZSTD_resetCStream() - reset the context using parameters from creation
+ * @zcs: The zstd streaming compression context to reset.
+ * @pledgedSrcSize: Optionally the source size, or zero if unknown.
+ *
+ * Resets the context using the parameters from creation. Skips dictionary
+ * loading, since it can be reused. If `pledgedSrcSize` is non-zero the frame
+ * content size is always written into the frame header.
+ *
+ * Return: Zero or an error, which can be checked using ZSTD_isError().
+ */
+size_t ZSTD_resetCStream(ZSTD_CStream *zcs, unsigned long long pledgedSrcSize);
+/**
+ * ZSTD_compressStream() - streaming compress some of input into output
+ * @zcs: The zstd streaming compression context.
+ * @output: Destination buffer. `output->pos` is updated to indicate how much
+ * compressed data was written.
+ * @input: Source buffer. `input->pos` is updated to indicate how much data was
+ * read. Note that it may not consume the entire input, in which case
+ * `input->pos < input->size`, and it's up to the caller to present
+ * remaining data again.
+ *
+ * The `input` and `output` buffers may be any size. Guaranteed to make some
+ * forward progress if `input` and `output` are not empty.
+ *
+ * Return: A hint for the number of bytes to use as the input for the next
+ * function call or an error, which can be checked using
+ * ZSTD_isError().
+ */
+size_t ZSTD_compressStream(ZSTD_CStream *zcs, ZSTD_outBuffer *output,
+ ZSTD_inBuffer *input);
+/**
+ * ZSTD_flushStream() - flush internal buffers into output
+ * @zcs: The zstd streaming compression context.
+ * @output: Destination buffer. `output->pos` is updated to indicate how much
+ * compressed data was written.
+ *
+ * ZSTD_flushStream() must be called until it returns 0, meaning all the data
+ * has been flushed. Since ZSTD_flushStream() causes a block to be ended,
+ * calling it too often will degrade the compression ratio.
+ *
+ * Return: The number of bytes still present within internal buffers or an
+ * error, which can be checked using ZSTD_isError().
+ */
+size_t ZSTD_flushStream(ZSTD_CStream *zcs, ZSTD_outBuffer *output);
+/**
+ * ZSTD_endStream() - flush internal buffers into output and end the frame
+ * @zcs: The zstd streaming compression context.
+ * @output: Destination buffer. `output->pos` is updated to indicate how much
+ * compressed data was written.
+ *
+ * ZSTD_endStream() must be called until it returns 0, meaning all the data has
+ * been flushed and the frame epilogue has been written.
+ *
+ * Return: The number of bytes still present within internal buffers or an
+ * error, which can be checked using ZSTD_isError().
+ */
+size_t ZSTD_endStream(ZSTD_CStream *zcs, ZSTD_outBuffer *output);
+
+/**
+ * ZSTD_CStreamInSize() - recommended size for the input buffer
+ *
+ * Return: The recommended size for the input buffer.
+ */
+size_t ZSTD_CStreamInSize(void);
+/**
+ * ZSTD_CStreamOutSize() - recommended size for the output buffer
+ *
+ * When the output buffer is at least this large, it is guaranteed to be large
+ * enough to flush at least one complete compressed block.
+ *
+ * Return: The recommended size for the output buffer.
+ */
+size_t ZSTD_CStreamOutSize(void);
+
+
+
+/*-*****************************************************************************
+ * Streaming decompression - HowTo
+ *
+ * A ZSTD_DStream object is required to track streaming operations.
+ * Use ZSTD_initDStream() to initialize a ZSTD_DStream object.
+ * ZSTD_DStream objects can be re-used multiple times.
+ *
+ * Use ZSTD_decompressStream() repetitively to consume your input.
+ * The function will update both `pos` fields.
+ * If `input->pos < input->size`, some input has not been consumed.
+ * It's up to the caller to present again remaining data.
+ * If `output->pos < output->size`, decoder has flushed everything it could.
+ * Returns 0 iff a frame is completely decoded and fully flushed.
+ * Otherwise it returns a suggested next input size that will never load more
+ * than the current frame.
+ ******************************************************************************/
+
+/**
+ * ZSTD_DStreamWorkspaceBound() - memory needed to initialize a ZSTD_DStream
+ * @maxWindowSize: The maximum window size allowed for compressed frames.
+ *
+ * Return: A lower bound on the size of the workspace that is passed to
+ * ZSTD_initDStream() and ZSTD_initDStream_usingDDict().
+ */
+size_t ZSTD_DStreamWorkspaceBound(size_t maxWindowSize);
+
+/**
+ * struct ZSTD_DStream - the zstd streaming decompression context
+ */
+typedef struct ZSTD_DStream_s ZSTD_DStream;
+/*===== ZSTD_DStream management functions =====*/
+/**
+ * ZSTD_initDStream() - initialize a zstd streaming decompression context
+ * @maxWindowSize: The maximum window size allowed for compressed frames.
+ * @workspace: The workspace to emplace the context into. It must outlive
+ * the returned context.
+ * @workspaceSize: The size of workspace.
+ * Use ZSTD_DStreamWorkspaceBound(maxWindowSize) to determine
+ * how large the workspace must be.
+ *
+ * Return: The zstd streaming decompression context.
+ */
+ZSTD_DStream *ZSTD_initDStream(size_t maxWindowSize, void *workspace,
+ size_t workspaceSize);
+/**
+ * ZSTD_initDStream_usingDDict() - initialize streaming decompression context
+ * @maxWindowSize: The maximum window size allowed for compressed frames.
+ * @ddict: The digested dictionary to use for decompression.
+ * @workspace: The workspace to emplace the context into. It must outlive
+ * the returned context.
+ * @workspaceSize: The size of workspace.
+ * Use ZSTD_DStreamWorkspaceBound(maxWindowSize) to determine
+ * how large the workspace must be.
+ *
+ * Return: The zstd streaming decompression context.
+ */
+ZSTD_DStream *ZSTD_initDStream_usingDDict(size_t maxWindowSize,
+ const ZSTD_DDict *ddict, void *workspace, size_t workspaceSize);
+
+/*===== Streaming decompression functions =====*/
+/**
+ * ZSTD_resetDStream() - reset the context using parameters from creation
+ * @zds: The zstd streaming decompression context to reset.
+ *
+ * Resets the context using the parameters from creation. Skips dictionary
+ * loading, since it can be reused.
+ *
+ * Return: Zero or an error, which can be checked using ZSTD_isError().
+ */
+size_t ZSTD_resetDStream(ZSTD_DStream *zds);
+/**
+ * ZSTD_decompressStream() - streaming decompress some of input into output
+ * @zds: The zstd streaming decompression context.
+ * @output: Destination buffer. `output.pos` is updated to indicate how much
+ * decompressed data was written.
+ * @input: Source buffer. `input.pos` is updated to indicate how much data was
+ * read. Note that it may not consume the entire input, in which case
+ * `input.pos < input.size`, and it's up to the caller to present
+ * remaining data again.
+ *
+ * The `input` and `output` buffers may be any size. Guaranteed to make some
+ * forward progress if `input` and `output` are not empty.
+ * ZSTD_decompressStream() will not consume the last byte of the frame until
+ * the entire frame is flushed.
+ *
+ * Return: Returns 0 iff a frame is completely decoded and fully flushed.
+ * Otherwise returns a hint for the number of bytes to use as the input
+ * for the next function call or an error, which can be checked using
+ * ZSTD_isError(). The size hint will never load more than the frame.
+ */
+size_t ZSTD_decompressStream(ZSTD_DStream *zds, ZSTD_outBuffer *output,
+ ZSTD_inBuffer *input);
+
+/**
+ * ZSTD_DStreamInSize() - recommended size for the input buffer
+ *
+ * Return: The recommended size for the input buffer.
+ */
+size_t ZSTD_DStreamInSize(void);
+/**
+ * ZSTD_DStreamOutSize() - recommended size for the output buffer
+ *
+ * When the output buffer is at least this large, it is guaranteed to be large
+ * enough to flush at least one complete decompressed block.
+ *
+ * Return: The recommended size for the output buffer.
+ */
+size_t ZSTD_DStreamOutSize(void);
+
+
+/* --- Constants ---*/
+#define ZSTD_MAGICNUMBER 0xFD2FB528 /* >= v0.8.0 */
+#define ZSTD_MAGIC_SKIPPABLE_START 0x184D2A50U
+
+#define ZSTD_CONTENTSIZE_UNKNOWN (0ULL - 1)
+#define ZSTD_CONTENTSIZE_ERROR (0ULL - 2)
+
+#define ZSTD_WINDOWLOG_MAX_32 27
+#define ZSTD_WINDOWLOG_MAX_64 27
+#define ZSTD_WINDOWLOG_MAX \
+ ((unsigned int)(sizeof(size_t) == 4 \
+ ? ZSTD_WINDOWLOG_MAX_32 \
+ : ZSTD_WINDOWLOG_MAX_64))
+#define ZSTD_WINDOWLOG_MIN 10
+#define ZSTD_HASHLOG_MAX ZSTD_WINDOWLOG_MAX
+#define ZSTD_HASHLOG_MIN 6
+#define ZSTD_CHAINLOG_MAX (ZSTD_WINDOWLOG_MAX+1)
+#define ZSTD_CHAINLOG_MIN ZSTD_HASHLOG_MIN
+#define ZSTD_HASHLOG3_MAX 17
+#define ZSTD_SEARCHLOG_MAX (ZSTD_WINDOWLOG_MAX-1)
+#define ZSTD_SEARCHLOG_MIN 1
+/* only for ZSTD_fast, other strategies are limited to 6 */
+#define ZSTD_SEARCHLENGTH_MAX 7
+/* only for ZSTD_btopt, other strategies are limited to 4 */
+#define ZSTD_SEARCHLENGTH_MIN 3
+#define ZSTD_TARGETLENGTH_MIN 4
+#define ZSTD_TARGETLENGTH_MAX 999
+
+/* for static allocation */
+#define ZSTD_FRAMEHEADERSIZE_MAX 18
+#define ZSTD_FRAMEHEADERSIZE_MIN 6
+static const size_t ZSTD_frameHeaderSize_prefix = 5;
+static const size_t ZSTD_frameHeaderSize_min = ZSTD_FRAMEHEADERSIZE_MIN;
+static const size_t ZSTD_frameHeaderSize_max = ZSTD_FRAMEHEADERSIZE_MAX;
+/* magic number + skippable frame length */
+static const size_t ZSTD_skippableHeaderSize = 8;
+
+
+/*-*************************************
+ * Compressed size functions
+ **************************************/
+
+/**
+ * ZSTD_findFrameCompressedSize() - returns the size of a compressed frame
+ * @src: Source buffer. It should point to the start of a zstd encoded frame
+ * or a skippable frame.
+ * @srcSize: The size of the source buffer. It must be at least as large as the
+ * size of the frame.
+ *
+ * Return: The compressed size of the frame pointed to by `src` or an error,
+ * which can be check with ZSTD_isError().
+ * Suitable to pass to ZSTD_decompress() or similar functions.
+ */
+size_t ZSTD_findFrameCompressedSize(const void *src, size_t srcSize);
+
+/*-*************************************
+ * Decompressed size functions
+ **************************************/
+/**
+ * ZSTD_getFrameContentSize() - returns the content size in a zstd frame header
+ * @src: It should point to the start of a zstd encoded frame.
+ * @srcSize: The size of the source buffer. It must be at least as large as the
+ * frame header. `ZSTD_frameHeaderSize_max` is always large enough.
+ *
+ * Return: The frame content size stored in the frame header if known.
+ * `ZSTD_CONTENTSIZE_UNKNOWN` if the content size isn't stored in the
+ * frame header. `ZSTD_CONTENTSIZE_ERROR` on invalid input.
+ */
+unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize);
+
+/**
+ * ZSTD_findDecompressedSize() - returns decompressed size of a series of frames
+ * @src: It should point to the start of a series of zstd encoded and/or
+ * skippable frames.
+ * @srcSize: The exact size of the series of frames.
+ *
+ * If any zstd encoded frame in the series doesn't have the frame content size
+ * set, `ZSTD_CONTENTSIZE_UNKNOWN` is returned. But frame content size is always
+ * set when using ZSTD_compress(). The decompressed size can be very large.
+ * If the source is untrusted, the decompressed size could be wrong or
+ * intentionally modified. Always ensure the result fits within the
+ * application's authorized limits. ZSTD_findDecompressedSize() handles multiple
+ * frames, and so it must traverse the input to read each frame header. This is
+ * efficient as most of the data is skipped, however it does mean that all frame
+ * data must be present and valid.
+ *
+ * Return: Decompressed size of all the data contained in the frames if known.
+ * `ZSTD_CONTENTSIZE_UNKNOWN` if the decompressed size is unknown.
+ * `ZSTD_CONTENTSIZE_ERROR` if an error occurred.
+ */
+unsigned long long ZSTD_findDecompressedSize(const void *src, size_t srcSize);
+
+/*-*************************************
+ * Advanced compression functions
+ **************************************/
+/**
+ * ZSTD_checkCParams() - ensure parameter values remain within authorized range
+ * @cParams: The zstd compression parameters.
+ *
+ * Return: Zero or an error, which can be checked using ZSTD_isError().
+ */
+size_t ZSTD_checkCParams(ZSTD_compressionParameters cParams);
+
+/**
+ * ZSTD_adjustCParams() - optimize parameters for a given srcSize and dictSize
+ * @srcSize: Optionally the estimated source size, or zero if unknown.
+ * @dictSize: Optionally the estimated dictionary size, or zero if unknown.
+ *
+ * Return: The optimized parameters.
+ */
+ZSTD_compressionParameters ZSTD_adjustCParams(
+ ZSTD_compressionParameters cParams, unsigned long long srcSize,
+ size_t dictSize);
+
+/*--- Advanced decompression functions ---*/
+
+/**
+ * ZSTD_isFrame() - returns true iff the buffer starts with a valid frame
+ * @buffer: The source buffer to check.
+ * @size: The size of the source buffer, must be at least 4 bytes.
+ *
+ * Return: True iff the buffer starts with a zstd or skippable frame identifier.
+ */
+unsigned int ZSTD_isFrame(const void *buffer, size_t size);
+
+/**
+ * ZSTD_getDictID_fromDict() - returns the dictionary id stored in a dictionary
+ * @dict: The dictionary buffer.
+ * @dictSize: The size of the dictionary buffer.
+ *
+ * Return: The dictionary id stored within the dictionary or 0 if the
+ * dictionary is not a zstd dictionary. If it returns 0 the
+ * dictionary can still be loaded as a content-only dictionary.
+ */
+unsigned int ZSTD_getDictID_fromDict(const void *dict, size_t dictSize);
+
+/**
+ * ZSTD_getDictID_fromDDict() - returns the dictionary id stored in a ZSTD_DDict
+ * @ddict: The ddict to find the id of.
+ *
+ * Return: The dictionary id stored within `ddict` or 0 if the dictionary is not
+ * a zstd dictionary. If it returns 0 `ddict` will be loaded as a
+ * content-only dictionary.
+ */
+unsigned int ZSTD_getDictID_fromDDict(const ZSTD_DDict *ddict);
+
+/**
+ * ZSTD_getDictID_fromFrame() - returns the dictionary id stored in a zstd frame
+ * @src: Source buffer. It must be a zstd encoded frame.
+ * @srcSize: The size of the source buffer. It must be at least as large as the
+ * frame header. `ZSTD_frameHeaderSize_max` is always large enough.
+ *
+ * Return: The dictionary id required to decompress the frame stored within
+ * `src` or 0 if the dictionary id could not be decoded. It can return
+ * 0 if the frame does not require a dictionary, the dictionary id
+ * wasn't stored in the frame, `src` is not a zstd frame, or `srcSize`
+ * is too small.
+ */
+unsigned int ZSTD_getDictID_fromFrame(const void *src, size_t srcSize);
+
+/**
+ * struct ZSTD_frameParams - zstd frame parameters stored in the frame header
+ * @frameContentSize: The frame content size, or 0 if not present.
+ * @windowSize: The window size, or 0 if the frame is a skippable frame.
+ * @dictID: The dictionary id, or 0 if not present.
+ * @checksumFlag: Whether a checksum was used.
+ */
+typedef struct {
+ unsigned long long frameContentSize;
+ unsigned int windowSize;
+ unsigned int dictID;
+ unsigned int checksumFlag;
+} ZSTD_frameParams;
+
+/**
+ * ZSTD_getFrameParams() - extracts parameters from a zstd or skippable frame
+ * @fparamsPtr: On success the frame parameters are written here.
+ * @src: The source buffer. It must point to a zstd or skippable frame.
+ * @srcSize: The size of the source buffer. `ZSTD_frameHeaderSize_max` is
+ * always large enough to succeed.
+ *
+ * Return: 0 on success. If more data is required it returns how many bytes
+ * must be provided to make forward progress. Otherwise it returns
+ * an error, which can be checked using ZSTD_isError().
+ */
+size_t ZSTD_getFrameParams(ZSTD_frameParams *fparamsPtr, const void *src,
+ size_t srcSize);
+
+/*-*****************************************************************************
+ * Buffer-less and synchronous inner streaming functions
+ *
+ * This is an advanced API, giving full control over buffer management, for
+ * users which need direct control over memory.
+ * But it's also a complex one, with many restrictions (documented below).
+ * Prefer using normal streaming API for an easier experience
+ ******************************************************************************/
+
+/*-*****************************************************************************
+ * Buffer-less streaming compression (synchronous mode)
+ *
+ * A ZSTD_CCtx object is required to track streaming operations.
+ * Use ZSTD_initCCtx() to initialize a context.
+ * ZSTD_CCtx object can be re-used multiple times within successive compression
+ * operations.
+ *
+ * Start by initializing a context.
+ * Use ZSTD_compressBegin(), or ZSTD_compressBegin_usingDict() for dictionary
+ * compression,
+ * or ZSTD_compressBegin_advanced(), for finer parameter control.
+ * It's also possible to duplicate a reference context which has already been
+ * initialized, using ZSTD_copyCCtx()
+ *
+ * Then, consume your input using ZSTD_compressContinue().
+ * There are some important considerations to keep in mind when using this
+ * advanced function :
+ * - ZSTD_compressContinue() has no internal buffer. It uses externally provided
+ * buffer only.
+ * - Interface is synchronous : input is consumed entirely and produce 1+
+ * (or more) compressed blocks.
+ * - Caller must ensure there is enough space in `dst` to store compressed data
+ * under worst case scenario. Worst case evaluation is provided by
+ * ZSTD_compressBound().
+ * ZSTD_compressContinue() doesn't guarantee recover after a failed
+ * compression.
+ * - ZSTD_compressContinue() presumes prior input ***is still accessible and
+ * unmodified*** (up to maximum distance size, see WindowLog).
+ * It remembers all previous contiguous blocks, plus one separated memory
+ * segment (which can itself consists of multiple contiguous blocks)
+ * - ZSTD_compressContinue() detects that prior input has been overwritten when
+ * `src` buffer overlaps. In which case, it will "discard" the relevant memory
+ * section from its history.
+ *
+ * Finish a frame with ZSTD_compressEnd(), which will write the last block(s)
+ * and optional checksum. It's possible to use srcSize==0, in which case, it
+ * will write a final empty block to end the frame. Without last block mark,
+ * frames will be considered unfinished (corrupted) by decoders.
+ *
+ * `ZSTD_CCtx` object can be re-used (ZSTD_compressBegin()) to compress some new
+ * frame.
+ ******************************************************************************/
+
+/*===== Buffer-less streaming compression functions =====*/
+size_t ZSTD_compressBegin(ZSTD_CCtx *cctx, int compressionLevel);
+size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx *cctx, const void *dict,
+ size_t dictSize, int compressionLevel);
+size_t ZSTD_compressBegin_advanced(ZSTD_CCtx *cctx, const void *dict,
+ size_t dictSize, ZSTD_parameters params,
+ unsigned long long pledgedSrcSize);
+size_t ZSTD_copyCCtx(ZSTD_CCtx *cctx, const ZSTD_CCtx *preparedCCtx,
+ unsigned long long pledgedSrcSize);
+size_t ZSTD_compressBegin_usingCDict(ZSTD_CCtx *cctx, const ZSTD_CDict *cdict,
+ unsigned long long pledgedSrcSize);
+size_t ZSTD_compressContinue(ZSTD_CCtx *cctx, void *dst, size_t dstCapacity,
+ const void *src, size_t srcSize);
+size_t ZSTD_compressEnd(ZSTD_CCtx *cctx, void *dst, size_t dstCapacity,
+ const void *src, size_t srcSize);
+
+
+
+/*-*****************************************************************************
+ * Buffer-less streaming decompression (synchronous mode)
+ *
+ * A ZSTD_DCtx object is required to track streaming operations.
+ * Use ZSTD_initDCtx() to initialize a context.
+ * A ZSTD_DCtx object can be re-used multiple times.
+ *
+ * First typical operation is to retrieve frame parameters, using
+ * ZSTD_getFrameParams(). It fills a ZSTD_frameParams structure which provide
+ * important information to correctly decode the frame, such as the minimum
+ * rolling buffer size to allocate to decompress data (`windowSize`), and the
+ * dictionary ID used.
+ * Note: content size is optional, it may not be present. 0 means unknown.
+ * Note that these values could be wrong, either because of data malformation,
+ * or because an attacker is spoofing deliberate false information. As a
+ * consequence, check that values remain within valid application range,
+ * especially `windowSize`, before allocation. Each application can set its own
+ * limit, depending on local restrictions. For extended interoperability, it is
+ * recommended to support at least 8 MB.
+ * Frame parameters are extracted from the beginning of the compressed frame.
+ * Data fragment must be large enough to ensure successful decoding, typically
+ * `ZSTD_frameHeaderSize_max` bytes.
+ * Result: 0: successful decoding, the `ZSTD_frameParams` structure is filled.
+ * >0: `srcSize` is too small, provide at least this many bytes.
+ * errorCode, which can be tested using ZSTD_isError().
+ *
+ * Start decompression, with ZSTD_decompressBegin() or
+ * ZSTD_decompressBegin_usingDict(). Alternatively, you can copy a prepared
+ * context, using ZSTD_copyDCtx().
+ *
+ * Then use ZSTD_nextSrcSizeToDecompress() and ZSTD_decompressContinue()
+ * alternatively.
+ * ZSTD_nextSrcSizeToDecompress() tells how many bytes to provide as 'srcSize'
+ * to ZSTD_decompressContinue().
+ * ZSTD_decompressContinue() requires this _exact_ amount of bytes, or it will
+ * fail.
+ *
+ * The result of ZSTD_decompressContinue() is the number of bytes regenerated
+ * within 'dst' (necessarily <= dstCapacity). It can be zero, which is not an
+ * error; it just means ZSTD_decompressContinue() has decoded some metadata
+ * item. It can also be an error code, which can be tested with ZSTD_isError().
+ *
+ * ZSTD_decompressContinue() needs previous data blocks during decompression, up
+ * to `windowSize`. They should preferably be located contiguously, prior to
+ * current block. Alternatively, a round buffer of sufficient size is also
+ * possible. Sufficient size is determined by frame parameters.
+ * ZSTD_decompressContinue() is very sensitive to contiguity, if 2 blocks don't
+ * follow each other, make sure that either the compressor breaks contiguity at
+ * the same place, or that previous contiguous segment is large enough to
+ * properly handle maximum back-reference.
+ *
+ * A frame is fully decoded when ZSTD_nextSrcSizeToDecompress() returns zero.
+ * Context can then be reset to start a new decompression.
+ *
+ * Note: it's possible to know if next input to present is a header or a block,
+ * using ZSTD_nextInputType(). This information is not required to properly
+ * decode a frame.
+ *
+ * == Special case: skippable frames ==
+ *
+ * Skippable frames allow integration of user-defined data into a flow of
+ * concatenated frames. Skippable frames will be ignored (skipped) by a
+ * decompressor. The format of skippable frames is as follows:
+ * a) Skippable frame ID - 4 Bytes, Little endian format, any value from
+ * 0x184D2A50 to 0x184D2A5F
+ * b) Frame Size - 4 Bytes, Little endian format, unsigned 32-bits
+ * c) Frame Content - any content (User Data) of length equal to Frame Size
+ * For skippable frames ZSTD_decompressContinue() always returns 0.
+ * For skippable frames ZSTD_getFrameParams() returns fparamsPtr->windowLog==0
+ * what means that a frame is skippable.
+ * Note: If fparamsPtr->frameContentSize==0, it is ambiguous: the frame might
+ * actually be a zstd encoded frame with no content. For purposes of
+ * decompression, it is valid in both cases to skip the frame using
+ * ZSTD_findFrameCompressedSize() to find its size in bytes.
+ * It also returns frame size as fparamsPtr->frameContentSize.
+ ******************************************************************************/
+
+/*===== Buffer-less streaming decompression functions =====*/
+size_t ZSTD_decompressBegin(ZSTD_DCtx *dctx);
+size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx *dctx, const void *dict,
+ size_t dictSize);
+void ZSTD_copyDCtx(ZSTD_DCtx *dctx, const ZSTD_DCtx *preparedDCtx);
+size_t ZSTD_nextSrcSizeToDecompress(ZSTD_DCtx *dctx);
+size_t ZSTD_decompressContinue(ZSTD_DCtx *dctx, void *dst, size_t dstCapacity,
+ const void *src, size_t srcSize);
+typedef enum {
+ ZSTDnit_frameHeader,
+ ZSTDnit_blockHeader,
+ ZSTDnit_block,
+ ZSTDnit_lastBlock,
+ ZSTDnit_checksum,
+ ZSTDnit_skippableFrame
+} ZSTD_nextInputType_e;
+ZSTD_nextInputType_e ZSTD_nextInputType(ZSTD_DCtx *dctx);
+
+/*-*****************************************************************************
+ * Block functions
+ *
+ * Block functions produce and decode raw zstd blocks, without frame metadata.
+ * Frame metadata cost is typically ~18 bytes, which can be non-negligible for
+ * very small blocks (< 100 bytes). User will have to take in charge required
+ * information to regenerate data, such as compressed and content sizes.
+ *
+ * A few rules to respect:
+ * - Compressing and decompressing require a context structure
+ * + Use ZSTD_initCCtx() and ZSTD_initDCtx()
+ * - It is necessary to init context before starting
+ * + compression : ZSTD_compressBegin()
+ * + decompression : ZSTD_decompressBegin()
+ * + variants _usingDict() are also allowed
+ * + copyCCtx() and copyDCtx() work too
+ * - Block size is limited, it must be <= ZSTD_getBlockSizeMax()
+ * + If you need to compress more, cut data into multiple blocks
+ * + Consider using the regular ZSTD_compress() instead, as frame metadata
+ * costs become negligible when source size is large.
+ * - When a block is considered not compressible enough, ZSTD_compressBlock()
+ * result will be zero. In which case, nothing is produced into `dst`.
+ * + User must test for such outcome and deal directly with uncompressed data
+ * + ZSTD_decompressBlock() doesn't accept uncompressed data as input!!!
+ * + In case of multiple successive blocks, decoder must be informed of
+ * uncompressed block existence to follow proper history. Use
+ * ZSTD_insertBlock() in such a case.
+ ******************************************************************************/
+
+/* Define for static allocation */
+#define ZSTD_BLOCKSIZE_ABSOLUTEMAX (128 * 1024)
+/*===== Raw zstd block functions =====*/
+size_t ZSTD_getBlockSizeMax(ZSTD_CCtx *cctx);
+size_t ZSTD_compressBlock(ZSTD_CCtx *cctx, void *dst, size_t dstCapacity,
+ const void *src, size_t srcSize);
+size_t ZSTD_decompressBlock(ZSTD_DCtx *dctx, void *dst, size_t dstCapacity,
+ const void *src, size_t srcSize);
+size_t ZSTD_insertBlock(ZSTD_DCtx *dctx, const void *blockStart,
+ size_t blockSize);
+
+#endif /* ZSTD_H */
diff --git a/include/media/blackfin/bfin_capture.h b/include/media/blackfin/bfin_capture.h
index 56b9ce4472fc..a999a3970c69 100644
--- a/include/media/blackfin/bfin_capture.h
+++ b/include/media/blackfin/bfin_capture.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BFIN_CAPTURE_H_
#define _BFIN_CAPTURE_H_
diff --git a/include/media/drv-intf/saa7146.h b/include/media/drv-intf/saa7146.h
index 45294328614d..769c6cf7eb4c 100644
--- a/include/media/drv-intf/saa7146.h
+++ b/include/media/drv-intf/saa7146.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SAA7146__
#define __SAA7146__
diff --git a/include/media/drv-intf/saa7146_vv.h b/include/media/drv-intf/saa7146_vv.h
index 0da6ccc0615b..4e89e9f12a1e 100644
--- a/include/media/drv-intf/saa7146_vv.h
+++ b/include/media/drv-intf/saa7146_vv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SAA7146_VV__
#define __SAA7146_VV__
diff --git a/include/media/drv-intf/sh_mobile_ceu.h b/include/media/drv-intf/sh_mobile_ceu.h
index 2f43f7d9e28d..555f0ecc0fde 100644
--- a/include/media/drv-intf/sh_mobile_ceu.h
+++ b/include/media/drv-intf/sh_mobile_ceu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_MOBILE_CEU_H__
#define __ASM_SH_MOBILE_CEU_H__
diff --git a/include/media/i2c-addr.h b/include/media/i2c-addr.h
index 5d0f56054d26..1b6872f5e970 100644
--- a/include/media/i2c-addr.h
+++ b/include/media/i2c-addr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* V4L I2C address list
*
diff --git a/include/media/i2c/ir-kbd-i2c.h b/include/media/i2c/ir-kbd-i2c.h
index ac8c55617a79..76491c62c254 100644
--- a/include/media/i2c/ir-kbd-i2c.h
+++ b/include/media/i2c/ir-kbd-i2c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IR_I2C
#define _IR_I2C
diff --git a/include/media/i2c/mt9p031.h b/include/media/i2c/mt9p031.h
index 1ba361205af1..7c29c53aa988 100644
--- a/include/media/i2c/mt9p031.h
+++ b/include/media/i2c/mt9p031.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef MT9P031_H
#define MT9P031_H
diff --git a/include/media/i2c/mt9t001.h b/include/media/i2c/mt9t001.h
index 03fd63edd133..4b1090554270 100644
--- a/include/media/i2c/mt9t001.h
+++ b/include/media/i2c/mt9t001.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MEDIA_MT9T001_H
#define _MEDIA_MT9T001_H
diff --git a/include/media/i2c/mt9v032.h b/include/media/i2c/mt9v032.h
index 12175a63c5b2..83a37ccfb649 100644
--- a/include/media/i2c/mt9v032.h
+++ b/include/media/i2c/mt9v032.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _MEDIA_MT9V032_H
#define _MEDIA_MT9V032_H
diff --git a/include/media/tuner-types.h b/include/media/tuner-types.h
index aed539068d2d..78f0654d9c3d 100644
--- a/include/media/tuner-types.h
+++ b/include/media/tuner-types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* descriptions for simple tuners.
*/
diff --git a/include/media/tveeprom.h b/include/media/tveeprom.h
index 630bcf3d8885..b56eaee82aa5 100644
--- a/include/media/tveeprom.h
+++ b/include/media/tveeprom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* tveeprom - Contains structures and functions to work with Hauppauge
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
index e657614521e3..28a686eb7d09 100644
--- a/include/media/v4l2-dev.h
+++ b/include/media/v4l2-dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* V 4 L 2 D R I V E R H E L P E R A P I
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
index bd5312118013..a7b3f7c75d62 100644
--- a/include/media/v4l2-ioctl.h
+++ b/include/media/v4l2-ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* V 4 L 2 D R I V E R H E L P E R A P I
diff --git a/include/media/videobuf-dvb.h b/include/media/videobuf-dvb.h
index c3bfa473c3aa..a14ac7711c92 100644
--- a/include/media/videobuf-dvb.h
+++ b/include/media/videobuf-dvb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <dvbdev.h>
#include <dmxdev.h>
#include <dvb_demux.h>
diff --git a/include/media/videobuf2-dvb.h b/include/media/videobuf2-dvb.h
index 87b559024b4a..5a31faa24f1a 100644
--- a/include/media/videobuf2-dvb.h
+++ b/include/media/videobuf2-dvb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VIDEOBUF2_DVB_H_
#define _VIDEOBUF2_DVB_H_
diff --git a/include/net/Space.h b/include/net/Space.h
index 8a32771e4215..27fb5c937c4f 100644
--- a/include/net/Space.h
+++ b/include/net/Space.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* A unified ethernet device probe. This is the easiest way to have every
* ethernet adaptor have the name "eth[0123...]".
*/
diff --git a/include/net/act_api.h b/include/net/act_api.h
index 8f3d5d8b5ae0..1e6df0eb058f 100644
--- a/include/net/act_api.h
+++ b/include/net/act_api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_ACT_API_H
#define __NET_ACT_API_H
@@ -13,6 +14,7 @@
struct tcf_idrinfo {
spinlock_t lock;
struct idr action_idr;
+ struct net *net;
};
struct tc_action_ops;
@@ -34,7 +36,6 @@ struct tc_action {
struct gnet_stats_queue tcfa_qstats;
struct net_rate_estimator __rcu *tcfa_rate_est;
spinlock_t tcfa_lock;
- struct rcu_head tcfa_rcu;
struct gnet_stats_basic_cpu __percpu *cpu_bstats;
struct gnet_stats_queue __percpu *cpu_qstats;
struct tc_cookie *act_cookie;
@@ -50,7 +51,6 @@ struct tc_action {
#define tcf_qstats common.tcfa_qstats
#define tcf_rate_est common.tcfa_rate_est
#define tcf_lock common.tcfa_lock
-#define tcf_rcu common.tcfa_rcu
/* Update lastuse only if needed, to avoid dirtying a cache line.
* We use a temp variable to avoid fetching jiffies twice.
@@ -106,7 +106,7 @@ struct tc_action_net {
static inline
int tc_action_net_init(struct tc_action_net *tn,
- const struct tc_action_ops *ops)
+ const struct tc_action_ops *ops, struct net *net)
{
int err = 0;
@@ -114,6 +114,7 @@ int tc_action_net_init(struct tc_action_net *tn,
if (!tn->idrinfo)
return -ENOMEM;
tn->ops = ops;
+ tn->idrinfo->net = net;
spin_lock_init(&tn->idrinfo->lock);
idr_init(&tn->idrinfo->action_idr);
return err;
@@ -124,7 +125,9 @@ void tcf_idrinfo_destroy(const struct tc_action_ops *ops,
static inline void tc_action_net_exit(struct tc_action_net *tn)
{
+ rtnl_lock();
tcf_idrinfo_destroy(tn->ops, tn->idrinfo);
+ rtnl_unlock();
kfree(tn->idrinfo);
}
diff --git a/include/net/addrconf.h b/include/net/addrconf.h
index f44ff2476758..35f5aabd432f 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ADDRCONF_H
#define _ADDRCONF_H
diff --git a/include/net/af_unix.h b/include/net/af_unix.h
index afb37f835449..a5ba41b3b867 100644
--- a/include/net/af_unix.h
+++ b/include/net/af_unix.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_NET_AFUNIX_H
#define __LINUX_NET_AFUNIX_H
diff --git a/include/net/ah.h b/include/net/ah.h
index 4e2dfa474a7e..2d2dea521169 100644
--- a/include/net/ah.h
+++ b/include/net/ah.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_AH_H
#define _NET_AH_H
diff --git a/include/net/arp.h b/include/net/arp.h
index 17d90e4e8dc5..dc8cd47f883b 100644
--- a/include/net/arp.h
+++ b/include/net/arp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* linux/net/inet/arp.h */
#ifndef _ARP_H
#define _ARP_H
diff --git a/include/net/atmclip.h b/include/net/atmclip.h
index 5865924d4aac..70e350e0db3d 100644
--- a/include/net/atmclip.h
+++ b/include/net/atmclip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* net/atm/atmarp.h - RFC1577 ATM ARP */
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/include/net/ax25.h b/include/net/ax25.h
index c4a0cf6f0810..76fb39c272a7 100644
--- a/include/net/ax25.h
+++ b/include/net/ax25.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Declarations of AX.25 type objects.
*
diff --git a/include/net/compat.h b/include/net/compat.h
index 13de0ccaa059..a91bea80b9fc 100644
--- a/include/net/compat.h
+++ b/include/net/compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef NET_COMPAT_H
#define NET_COMPAT_H
diff --git a/include/net/datalink.h b/include/net/datalink.h
index 93cb18f729b5..a9663229b913 100644
--- a/include/net/datalink.h
+++ b/include/net/datalink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_INET_DATALINK_H_
#define _NET_INET_DATALINK_H_
diff --git a/include/net/dn.h b/include/net/dn.h
index 913b73d239f5..fc0036228d20 100644
--- a/include/net/dn.h
+++ b/include/net/dn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_DN_H
#define _NET_DN_H
diff --git a/include/net/dn_dev.h b/include/net/dn_dev.h
index 197886cd7bdd..595b4f6c1eb1 100644
--- a/include/net/dn_dev.h
+++ b/include/net/dn_dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_DN_DEV_H
#define _NET_DN_DEV_H
diff --git a/include/net/dn_fib.h b/include/net/dn_fib.h
index 81210a8b8d7c..6dd2213c5eb2 100644
--- a/include/net/dn_fib.h
+++ b/include/net/dn_fib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_DN_FIB_H
#define _NET_DN_FIB_H
diff --git a/include/net/dn_neigh.h b/include/net/dn_neigh.h
index 5e902fc3f4eb..2e3e7793973a 100644
--- a/include/net/dn_neigh.h
+++ b/include/net/dn_neigh.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_DN_NEIGH_H
#define _NET_DN_NEIGH_H
diff --git a/include/net/dsfield.h b/include/net/dsfield.h
index e1ad903a8d6a..1a245ee10c95 100644
--- a/include/net/dsfield.h
+++ b/include/net/dsfield.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* include/net/dsfield.h - Manipulation of the Differentiated Services field */
/* Written 1998-2000 by Werner Almesberger, EPFL ICA */
diff --git a/include/net/dst.h b/include/net/dst.h
index 93568bd0a352..694c2e6ae618 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* net/dst.h Protocol independent destination cache definitions.
*
@@ -271,7 +272,7 @@ static inline void dst_use_noref(struct dst_entry *dst, unsigned long time)
static inline struct dst_entry *dst_clone(struct dst_entry *dst)
{
if (dst)
- atomic_inc(&dst->__refcnt);
+ dst_hold(dst);
return dst;
}
@@ -312,21 +313,6 @@ static inline void skb_dst_copy(struct sk_buff *nskb, const struct sk_buff *oskb
}
/**
- * skb_dst_force - makes sure skb dst is refcounted
- * @skb: buffer
- *
- * If dst is not yet refcounted, let's do it
- */
-static inline void skb_dst_force(struct sk_buff *skb)
-{
- if (skb_dst_is_noref(skb)) {
- WARN_ON(!rcu_read_lock_held());
- skb->_skb_refdst &= ~SKB_DST_NOREF;
- dst_clone(skb_dst(skb));
- }
-}
-
-/**
* dst_hold_safe - Take a reference on a dst if possible
* @dst: pointer to dst entry
*
@@ -339,16 +325,17 @@ static inline bool dst_hold_safe(struct dst_entry *dst)
}
/**
- * skb_dst_force_safe - makes sure skb dst is refcounted
+ * skb_dst_force - makes sure skb dst is refcounted
* @skb: buffer
*
* If dst is not yet refcounted and not destroyed, grab a ref on it.
*/
-static inline void skb_dst_force_safe(struct sk_buff *skb)
+static inline void skb_dst_force(struct sk_buff *skb)
{
if (skb_dst_is_noref(skb)) {
struct dst_entry *dst = skb_dst(skb);
+ WARN_ON(!rcu_read_lock_held());
if (!dst_hold_safe(dst))
dst = NULL;
diff --git a/include/net/dst_cache.h b/include/net/dst_cache.h
index 151accae708b..72fd5067c353 100644
--- a/include/net/dst_cache.h
+++ b/include/net/dst_cache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_DST_CACHE_H
#define _NET_DST_CACHE_H
diff --git a/include/net/dst_metadata.h b/include/net/dst_metadata.h
index a803129a4849..91bc7bdf6bf5 100644
--- a/include/net/dst_metadata.h
+++ b/include/net/dst_metadata.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_DST_METADATA_H
#define __NET_DST_METADATA_H 1
diff --git a/include/net/dst_ops.h b/include/net/dst_ops.h
index c84b3287e38b..5ec645f27ee3 100644
--- a/include/net/dst_ops.h
+++ b/include/net/dst_ops.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_DST_OPS_H
#define _NET_DST_OPS_H
#include <linux/types.h>
diff --git a/include/net/esp.h b/include/net/esp.h
index c41994d1bfef..117652eb6ea3 100644
--- a/include/net/esp.h
+++ b/include/net/esp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_ESP_H
#define _NET_ESP_H
diff --git a/include/net/fib_rules.h b/include/net/fib_rules.h
index 3d7f1cefc6f5..648caf90ec07 100644
--- a/include/net/fib_rules.h
+++ b/include/net/fib_rules.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_FIB_RULES_H
#define __NET_FIB_RULES_H
diff --git a/include/net/firewire.h b/include/net/firewire.h
index 31bcbfe7a220..299e5df38552 100644
--- a/include/net/firewire.h
+++ b/include/net/firewire.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_FIREWIRE_H
#define _NET_FIREWIRE_H
diff --git a/include/net/flow.h b/include/net/flow.h
index eb60cee30b44..f1624fd5b1d0 100644
--- a/include/net/flow.h
+++ b/include/net/flow.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
*
* Generic internet FLOW.
diff --git a/include/net/flow_dissector.h b/include/net/flow_dissector.h
index fc3dce730a6b..22aba321282d 100644
--- a/include/net/flow_dissector.h
+++ b/include/net/flow_dissector.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_FLOW_DISSECTOR_H
#define _NET_FLOW_DISSECTOR_H
diff --git a/include/net/fou.h b/include/net/fou.h
index f5cc6910a27e..80f56e275b08 100644
--- a/include/net/fou.h
+++ b/include/net/fou.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_FOU_H
#define __NET_FOU_H
diff --git a/include/net/fq_impl.h b/include/net/fq_impl.h
index 4e6131cd3f43..ac1a2317941e 100644
--- a/include/net/fq_impl.h
+++ b/include/net/fq_impl.h
@@ -146,6 +146,7 @@ static void fq_tin_enqueue(struct fq *fq,
fq_flow_get_default_t get_default_func)
{
struct fq_flow *flow;
+ bool oom;
lockdep_assert_held(&fq->lock);
@@ -167,8 +168,8 @@ static void fq_tin_enqueue(struct fq *fq,
}
__skb_queue_tail(&flow->queue, skb);
-
- if (fq->backlog > fq->limit || fq->memory_usage > fq->memory_limit) {
+ oom = (fq->memory_usage > fq->memory_limit);
+ while (fq->backlog > fq->limit || oom) {
flow = list_first_entry_or_null(&fq->backlogs,
struct fq_flow,
backlogchain);
@@ -183,8 +184,10 @@ static void fq_tin_enqueue(struct fq *fq,
flow->tin->overlimit++;
fq->overlimit++;
- if (fq->memory_usage > fq->memory_limit)
+ if (oom) {
fq->overmemory++;
+ oom = (fq->memory_usage > fq->memory_limit);
+ }
}
}
diff --git a/include/net/garp.h b/include/net/garp.h
index abf33bbd2e6a..c41833bd4590 100644
--- a/include/net/garp.h
+++ b/include/net/garp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_GARP_H
#define _NET_GARP_H
diff --git a/include/net/gen_stats.h b/include/net/gen_stats.h
index 8b7aa370e7a4..304f7aa9cc01 100644
--- a/include/net/gen_stats.h
+++ b/include/net/gen_stats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_GEN_STATS_H
#define __NET_GEN_STATS_H
diff --git a/include/net/genetlink.h b/include/net/genetlink.h
index c59a098221db..5ac169a735f4 100644
--- a/include/net/genetlink.h
+++ b/include/net/genetlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_GENERIC_NETLINK_H
#define __NET_GENERIC_NETLINK_H
diff --git a/include/net/geneve.h b/include/net/geneve.h
index ec0327d4331b..a7600ed55ea3 100644
--- a/include/net/geneve.h
+++ b/include/net/geneve.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_GENEVE_H
#define __NET_GENEVE_H 1
diff --git a/include/net/gre.h b/include/net/gre.h
index d25d836c129b..f90585decbce 100644
--- a/include/net/gre.h
+++ b/include/net/gre.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_GRE_H
#define __LINUX_GRE_H
diff --git a/include/net/gro_cells.h b/include/net/gro_cells.h
index fcaf8f479130..596688b67a2a 100644
--- a/include/net/gro_cells.h
+++ b/include/net/gro_cells.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_GRO_CELLS_H
#define _NET_GRO_CELLS_H
diff --git a/include/net/gtp.h b/include/net/gtp.h
index 6398891b99ba..0e16ebb2a82d 100644
--- a/include/net/gtp.h
+++ b/include/net/gtp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _GTP_H_
#define _GTP_H_
diff --git a/include/net/gue.h b/include/net/gue.h
index 3f28ec7f1c7f..2fdb29ca74c2 100644
--- a/include/net/gue.h
+++ b/include/net/gue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_GUE_H
#define __NET_GUE_H
diff --git a/include/net/hwbm.h b/include/net/hwbm.h
index 47d08662501b..89085e2e2da5 100644
--- a/include/net/hwbm.h
+++ b/include/net/hwbm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _HWBM_H
#define _HWBM_H
diff --git a/include/net/ife.h b/include/net/ife.h
index 2d87d6898b0a..44b9c00f7223 100644
--- a/include/net/ife.h
+++ b/include/net/ife.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_IFE_H
#define __NET_IFE_H
diff --git a/include/net/inet_common.h b/include/net/inet_common.h
index f39ae697347f..5a54c9570977 100644
--- a/include/net/inet_common.h
+++ b/include/net/inet_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INET_COMMON_H
#define _INET_COMMON_H
diff --git a/include/net/inet_ecn.h b/include/net/inet_ecn.h
index dce2d586d9ce..d30e4c869438 100644
--- a/include/net/inet_ecn.h
+++ b/include/net/inet_ecn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INET_ECN_H_
#define _INET_ECN_H_
diff --git a/include/net/inet_frag.h b/include/net/inet_frag.h
index fc59e0775e00..a6e4edd8d4a2 100644
--- a/include/net/inet_frag.h
+++ b/include/net/inet_frag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_FRAG_H__
#define __NET_FRAG_H__
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h
index aa95053dfc78..db8162dd8c0b 100644
--- a/include/net/inet_sock.h
+++ b/include/net/inet_sock.h
@@ -96,7 +96,7 @@ struct inet_request_sock {
kmemcheck_bitfield_end(flags);
u32 ir_mark;
union {
- struct ip_options_rcu *opt;
+ struct ip_options_rcu __rcu *ireq_opt;
#if IS_ENABLED(CONFIG_IPV6)
struct {
struct ipv6_txoptions *ipv6_opt;
@@ -132,6 +132,12 @@ static inline int inet_request_bound_dev_if(const struct sock *sk,
return sk->sk_bound_dev_if;
}
+static inline struct ip_options_rcu *ireq_opt_deref(const struct inet_request_sock *ireq)
+{
+ return rcu_dereference_check(ireq->ireq_opt,
+ refcount_read(&ireq->req.rsk_refcnt) > 0);
+}
+
struct inet_cork {
unsigned int flags;
__be32 addr;
diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h
index 950ed182f62f..00b5e7825508 100644
--- a/include/net/inetpeer.h
+++ b/include/net/inetpeer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* INETPEER - A storage for permanent information about peers
*
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h
index ee96f402cb75..bee528135cf1 100644
--- a/include/net/ip6_route.h
+++ b/include/net/ip6_route.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_IP6_ROUTE_H
#define _NET_IP6_ROUTE_H
diff --git a/include/net/ip6_tunnel.h b/include/net/ip6_tunnel.h
index 08fbc7f7d8d7..d66f70f63734 100644
--- a/include/net/ip6_tunnel.h
+++ b/include/net/ip6_tunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_IP6_TUNNEL_H
#define _NET_IP6_TUNNEL_H
diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h
index 992652856fe8..eb2321a13506 100644
--- a/include/net/ip_tunnels.h
+++ b/include/net/ip_tunnels.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_IP_TUNNELS_H
#define __NET_IP_TUNNELS_H 1
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
index 4f4f786255ef..5d08c1950e7d 100644
--- a/include/net/ip_vs.h
+++ b/include/net/ip_vs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* IP Virtual Server
* data structure and functionality definitions
*/
diff --git a/include/net/ipcomp.h b/include/net/ipcomp.h
index cc4f30cd7315..fee6fc451597 100644
--- a/include/net/ipcomp.h
+++ b/include/net/ipcomp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_IPCOMP_H
#define _NET_IPCOMP_H
diff --git a/include/net/ipconfig.h b/include/net/ipconfig.h
index c74cc1bd5a02..e3534299bd2a 100644
--- a/include/net/ipconfig.h
+++ b/include/net/ipconfig.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 1997 Martin Mares
*
diff --git a/include/net/ipx.h b/include/net/ipx.h
index af32b97b5ddd..baf090390998 100644
--- a/include/net/ipx.h
+++ b/include/net/ipx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_INET_IPX_H_
#define _NET_INET_IPX_H_
/*
diff --git a/include/net/iucv/af_iucv.h b/include/net/iucv/af_iucv.h
index 714cc9a54a4c..070e93a17c59 100644
--- a/include/net/iucv/af_iucv.h
+++ b/include/net/iucv/af_iucv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2006 IBM Corporation
* IUCV protocol stack for Linux on zSeries
diff --git a/include/net/iucv/iucv.h b/include/net/iucv/iucv.h
index b867b0cf79e8..f9e88401d7da 100644
--- a/include/net/iucv/iucv.h
+++ b/include/net/iucv/iucv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* drivers/s390/net/iucv.h
* IUCV base support.
diff --git a/include/net/iw_handler.h b/include/net/iw_handler.h
index 2509728650bd..725282095840 100644
--- a/include/net/iw_handler.h
+++ b/include/net/iw_handler.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file define the new driver API for Wireless Extensions
*
diff --git a/include/net/lapb.h b/include/net/lapb.h
index 85e773742f4e..ccc3d1f020b0 100644
--- a/include/net/lapb.h
+++ b/include/net/lapb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LAPB_H
#define _LAPB_H
#include <linux/lapb.h>
diff --git a/include/net/lib80211.h b/include/net/lib80211.h
index aab0f427edb5..8b47d3a51cf8 100644
--- a/include/net/lib80211.h
+++ b/include/net/lib80211.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* lib80211.h -- common bits for IEEE802.11 wireless drivers
*
diff --git a/include/net/lwtunnel.h b/include/net/lwtunnel.h
index 7c26863b8cf4..d747ef975cd8 100644
--- a/include/net/lwtunnel.h
+++ b/include/net/lwtunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_LWTUNNEL_H
#define __NET_LWTUNNEL_H 1
diff --git a/include/net/mld.h b/include/net/mld.h
index 01d751303498..b0f5b3105ef0 100644
--- a/include/net/mld.h
+++ b/include/net/mld.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_MLD_H
#define LINUX_MLD_H
diff --git a/include/net/mrp.h b/include/net/mrp.h
index 31912c3be772..ef58b4a07190 100644
--- a/include/net/mrp.h
+++ b/include/net/mrp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_MRP_H
#define _NET_MRP_H
diff --git a/include/net/ncsi.h b/include/net/ncsi.h
index fdc60ff2511d..fbefe80361ee 100644
--- a/include/net/ncsi.h
+++ b/include/net/ncsi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_NCSI_H
#define __NET_NCSI_H
diff --git a/include/net/ndisc.h b/include/net/ndisc.h
index 31b1bb11ba3f..ddfbb591e2c5 100644
--- a/include/net/ndisc.h
+++ b/include/net/ndisc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NDISC_H
#define _NDISC_H
diff --git a/include/net/neighbour.h b/include/net/neighbour.h
index 9816df225af3..a964366a7ef5 100644
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_NEIGHBOUR_H
#define _NET_NEIGHBOUR_H
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
index 57faa375eab9..10f99dafd5ac 100644
--- a/include/net/net_namespace.h
+++ b/include/net/net_namespace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Operations on the network namespace
*/
diff --git a/include/net/net_ratelimit.h b/include/net/net_ratelimit.h
index 7727b4247daf..93c1bd5133c2 100644
--- a/include/net/net_ratelimit.h
+++ b/include/net/net_ratelimit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NET_RATELIMIT_H
#define _LINUX_NET_RATELIMIT_H
diff --git a/include/net/netevent.h b/include/net/netevent.h
index f440df172b56..f728d9cad170 100644
--- a/include/net/netevent.h
+++ b/include/net/netevent.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_EVENT_H
#define _NET_EVENT_H
diff --git a/include/net/netfilter/br_netfilter.h b/include/net/netfilter/br_netfilter.h
index 925524ede6c8..74af19c3a8f7 100644
--- a/include/net/netfilter/br_netfilter.h
+++ b/include/net/netfilter/br_netfilter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BR_NETFILTER_H_
#define _BR_NETFILTER_H_
diff --git a/include/net/netfilter/ipv4/nf_conntrack_ipv4.h b/include/net/netfilter/ipv4/nf_conntrack_ipv4.h
index 919e4e8af327..2cc728ef8cd0 100644
--- a/include/net/netfilter/ipv4/nf_conntrack_ipv4.h
+++ b/include/net/netfilter/ipv4/nf_conntrack_ipv4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* IPv4 support for nf_conntrack.
*
diff --git a/include/net/netfilter/ipv4/nf_defrag_ipv4.h b/include/net/netfilter/ipv4/nf_defrag_ipv4.h
index db405f70e538..bcbd724cc048 100644
--- a/include/net/netfilter/ipv4/nf_defrag_ipv4.h
+++ b/include/net/netfilter/ipv4/nf_defrag_ipv4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_DEFRAG_IPV4_H
#define _NF_DEFRAG_IPV4_H
diff --git a/include/net/netfilter/ipv4/nf_dup_ipv4.h b/include/net/netfilter/ipv4/nf_dup_ipv4.h
index 0a14733e8b82..c962e0be3549 100644
--- a/include/net/netfilter/ipv4/nf_dup_ipv4.h
+++ b/include/net/netfilter/ipv4/nf_dup_ipv4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_DUP_IPV4_H_
#define _NF_DUP_IPV4_H_
diff --git a/include/net/netfilter/ipv4/nf_nat_masquerade.h b/include/net/netfilter/ipv4/nf_nat_masquerade.h
index a9c001c646da..ebd869473603 100644
--- a/include/net/netfilter/ipv4/nf_nat_masquerade.h
+++ b/include/net/netfilter/ipv4/nf_nat_masquerade.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_NAT_MASQUERADE_IPV4_H_
#define _NF_NAT_MASQUERADE_IPV4_H_
diff --git a/include/net/netfilter/ipv4/nf_reject.h b/include/net/netfilter/ipv4/nf_reject.h
index df7ecd806aba..2eb43fcefc50 100644
--- a/include/net/netfilter/ipv4/nf_reject.h
+++ b/include/net/netfilter/ipv4/nf_reject.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IPV4_NF_REJECT_H
#define _IPV4_NF_REJECT_H
diff --git a/include/net/netfilter/ipv6/nf_conntrack_icmpv6.h b/include/net/netfilter/ipv6/nf_conntrack_icmpv6.h
index 67edd50a398a..c86895bc5eb6 100644
--- a/include/net/netfilter/ipv6/nf_conntrack_icmpv6.h
+++ b/include/net/netfilter/ipv6/nf_conntrack_icmpv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ICMPv6 tracking.
*
diff --git a/include/net/netfilter/ipv6/nf_conntrack_ipv6.h b/include/net/netfilter/ipv6/nf_conntrack_ipv6.h
index eaea968f8657..79a335c0d8b8 100644
--- a/include/net/netfilter/ipv6/nf_conntrack_ipv6.h
+++ b/include/net/netfilter/ipv6/nf_conntrack_ipv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_IPV6_H
#define _NF_CONNTRACK_IPV6_H
diff --git a/include/net/netfilter/ipv6/nf_defrag_ipv6.h b/include/net/netfilter/ipv6/nf_defrag_ipv6.h
index 7664efe37974..9d7e28736da9 100644
--- a/include/net/netfilter/ipv6/nf_defrag_ipv6.h
+++ b/include/net/netfilter/ipv6/nf_defrag_ipv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_DEFRAG_IPV6_H
#define _NF_DEFRAG_IPV6_H
diff --git a/include/net/netfilter/ipv6/nf_dup_ipv6.h b/include/net/netfilter/ipv6/nf_dup_ipv6.h
index fa6237b382a3..caf0c2dd8ee7 100644
--- a/include/net/netfilter/ipv6/nf_dup_ipv6.h
+++ b/include/net/netfilter/ipv6/nf_dup_ipv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_DUP_IPV6_H_
#define _NF_DUP_IPV6_H_
diff --git a/include/net/netfilter/ipv6/nf_nat_masquerade.h b/include/net/netfilter/ipv6/nf_nat_masquerade.h
index 0a13396cd390..1ed4f2631ed6 100644
--- a/include/net/netfilter/ipv6/nf_nat_masquerade.h
+++ b/include/net/netfilter/ipv6/nf_nat_masquerade.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_NAT_MASQUERADE_IPV6_H_
#define _NF_NAT_MASQUERADE_IPV6_H_
diff --git a/include/net/netfilter/ipv6/nf_reject.h b/include/net/netfilter/ipv6/nf_reject.h
index 0ea4fa37db16..3a5a9a36a0b2 100644
--- a/include/net/netfilter/ipv6/nf_reject.h
+++ b/include/net/netfilter/ipv6/nf_reject.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IPV6_NF_REJECT_H
#define _IPV6_NF_REJECT_H
diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h
index 8f3bd30511de..792c3f6d30ce 100644
--- a/include/net/netfilter/nf_conntrack.h
+++ b/include/net/netfilter/nf_conntrack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Connection state tracking for netfilter. This is separated from,
* but required by, the (future) NAT layer; it can also be used by an iptables
diff --git a/include/net/netfilter/nf_conntrack_core.h b/include/net/netfilter/nf_conntrack_core.h
index 81d7f8a30945..9b5e7634713e 100644
--- a/include/net/netfilter/nf_conntrack_core.h
+++ b/include/net/netfilter/nf_conntrack_core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header is used to share core functionality between the
* standalone connection tracking module, and the compatibility layer's use
diff --git a/include/net/netfilter/nf_conntrack_ecache.h b/include/net/netfilter/nf_conntrack_ecache.h
index 2a10c6570fcc..3f1ce9a8776e 100644
--- a/include/net/netfilter/nf_conntrack_ecache.h
+++ b/include/net/netfilter/nf_conntrack_ecache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* connection tracking event cache.
*/
diff --git a/include/net/netfilter/nf_conntrack_expect.h b/include/net/netfilter/nf_conntrack_expect.h
index 818def011110..006e430d1cdf 100644
--- a/include/net/netfilter/nf_conntrack_expect.h
+++ b/include/net/netfilter/nf_conntrack_expect.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* connection tracking expectations.
*/
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h
index 4944bc9153cf..21f887c5058c 100644
--- a/include/net/netfilter/nf_conntrack_extend.h
+++ b/include/net/netfilter/nf_conntrack_extend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_EXTEND_H
#define _NF_CONNTRACK_EXTEND_H
diff --git a/include/net/netfilter/nf_conntrack_helper.h b/include/net/netfilter/nf_conntrack_helper.h
index c519bb5b5bb8..fc39bbaf107c 100644
--- a/include/net/netfilter/nf_conntrack_helper.h
+++ b/include/net/netfilter/nf_conntrack_helper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* connection tracking helpers.
*
diff --git a/include/net/netfilter/nf_conntrack_l3proto.h b/include/net/netfilter/nf_conntrack_l3proto.h
index 6269deecbee7..d5808f3e2715 100644
--- a/include/net/netfilter/nf_conntrack_l3proto.h
+++ b/include/net/netfilter/nf_conntrack_l3proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C)2003,2004 USAGI/WIDE Project
*
diff --git a/include/net/netfilter/nf_conntrack_l4proto.h b/include/net/netfilter/nf_conntrack_l4proto.h
index 738a0307a96b..510192eb7e9d 100644
--- a/include/net/netfilter/nf_conntrack_l4proto.h
+++ b/include/net/netfilter/nf_conntrack_l4proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Header for use in defining a given L4 protocol for connection tracking.
*
diff --git a/include/net/netfilter/nf_conntrack_labels.h b/include/net/netfilter/nf_conntrack_labels.h
index 1723a67c0b0a..4eacce6f3bcc 100644
--- a/include/net/netfilter/nf_conntrack_labels.h
+++ b/include/net/netfilter/nf_conntrack_labels.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/types.h>
#include <net/net_namespace.h>
#include <linux/netfilter/nf_conntrack_common.h>
diff --git a/include/net/netfilter/nf_conntrack_seqadj.h b/include/net/netfilter/nf_conntrack_seqadj.h
index 4b3362991a25..0a10b50537ae 100644
--- a/include/net/netfilter/nf_conntrack_seqadj.h
+++ b/include/net/netfilter/nf_conntrack_seqadj.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_SEQADJ_H
#define _NF_CONNTRACK_SEQADJ_H
diff --git a/include/net/netfilter/nf_conntrack_synproxy.h b/include/net/netfilter/nf_conntrack_synproxy.h
index a2fcb5271726..2c7559a54092 100644
--- a/include/net/netfilter/nf_conntrack_synproxy.h
+++ b/include/net/netfilter/nf_conntrack_synproxy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_SYNPROXY_H
#define _NF_CONNTRACK_SYNPROXY_H
diff --git a/include/net/netfilter/nf_conntrack_timeout.h b/include/net/netfilter/nf_conntrack_timeout.h
index 483d104fa254..9468ab4ad12d 100644
--- a/include/net/netfilter/nf_conntrack_timeout.h
+++ b/include/net/netfilter/nf_conntrack_timeout.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_TIMEOUT_H
#define _NF_CONNTRACK_TIMEOUT_H
diff --git a/include/net/netfilter/nf_conntrack_timestamp.h b/include/net/netfilter/nf_conntrack_timestamp.h
index 300ae2209f25..3b661986be8f 100644
--- a/include/net/netfilter/nf_conntrack_timestamp.h
+++ b/include/net/netfilter/nf_conntrack_timestamp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_TSTAMP_H
#define _NF_CONNTRACK_TSTAMP_H
diff --git a/include/net/netfilter/nf_conntrack_tuple.h b/include/net/netfilter/nf_conntrack_tuple.h
index aea3f8221be0..bf0444e111a6 100644
--- a/include/net/netfilter/nf_conntrack_tuple.h
+++ b/include/net/netfilter/nf_conntrack_tuple.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions and Declarations for tuple.
*
diff --git a/include/net/netfilter/nf_conntrack_zones.h b/include/net/netfilter/nf_conntrack_zones.h
index 64a718b60839..52950baa3ab5 100644
--- a/include/net/netfilter/nf_conntrack_zones.h
+++ b/include/net/netfilter/nf_conntrack_zones.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_ZONES_H
#define _NF_CONNTRACK_ZONES_H
diff --git a/include/net/netfilter/nf_dup_netdev.h b/include/net/netfilter/nf_dup_netdev.h
index 3e919356bedf..2a6f6dcad3d9 100644
--- a/include/net/netfilter/nf_dup_netdev.h
+++ b/include/net/netfilter/nf_dup_netdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_DUP_NETDEV_H_
#define _NF_DUP_NETDEV_H_
diff --git a/include/net/netfilter/nf_log.h b/include/net/netfilter/nf_log.h
index 42e0696f38d8..e811ac07ea94 100644
--- a/include/net/netfilter/nf_log.h
+++ b/include/net/netfilter/nf_log.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_LOG_H
#define _NF_LOG_H
diff --git a/include/net/netfilter/nf_nat.h b/include/net/netfilter/nf_nat.h
index b71701302e61..207a467e7ca6 100644
--- a/include/net/netfilter/nf_nat.h
+++ b/include/net/netfilter/nf_nat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_NAT_H
#define _NF_NAT_H
#include <linux/netfilter_ipv4.h>
diff --git a/include/net/netfilter/nf_nat_core.h b/include/net/netfilter/nf_nat_core.h
index 186c54138f35..235bd0e9a5aa 100644
--- a/include/net/netfilter/nf_nat_core.h
+++ b/include/net/netfilter/nf_nat_core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_NAT_CORE_H
#define _NF_NAT_CORE_H
#include <linux/list.h>
diff --git a/include/net/netfilter/nf_nat_helper.h b/include/net/netfilter/nf_nat_helper.h
index fbfa5acf4f14..97d7033e93a4 100644
--- a/include/net/netfilter/nf_nat_helper.h
+++ b/include/net/netfilter/nf_nat_helper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_NAT_HELPER_H
#define _NF_NAT_HELPER_H
/* NAT protocol helper routines. */
diff --git a/include/net/netfilter/nf_nat_l3proto.h b/include/net/netfilter/nf_nat_l3proto.h
index aef3e5fc9fd9..ce7c2b4e64bb 100644
--- a/include/net/netfilter/nf_nat_l3proto.h
+++ b/include/net/netfilter/nf_nat_l3proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_NAT_L3PROTO_H
#define _NF_NAT_L3PROTO_H
diff --git a/include/net/netfilter/nf_nat_l4proto.h b/include/net/netfilter/nf_nat_l4proto.h
index 3923150f2a1e..67835ff8a2d9 100644
--- a/include/net/netfilter/nf_nat_l4proto.h
+++ b/include/net/netfilter/nf_nat_l4proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Header for use in defining a given protocol. */
#ifndef _NF_NAT_L4PROTO_H
#define _NF_NAT_L4PROTO_H
diff --git a/include/net/netfilter/nf_nat_redirect.h b/include/net/netfilter/nf_nat_redirect.h
index 73b729543309..5ddabb08c472 100644
--- a/include/net/netfilter/nf_nat_redirect.h
+++ b/include/net/netfilter/nf_nat_redirect.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_NAT_REDIRECT_H_
#define _NF_NAT_REDIRECT_H_
diff --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h
index 39468720fc19..814058d0f167 100644
--- a/include/net/netfilter/nf_queue.h
+++ b/include/net/netfilter/nf_queue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_QUEUE_H
#define _NF_QUEUE_H
diff --git a/include/net/netfilter/nf_socket.h b/include/net/netfilter/nf_socket.h
index f2fc39c97d43..8230fefff9f5 100644
--- a/include/net/netfilter/nf_socket.h
+++ b/include/net/netfilter/nf_socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_SOCK_H_
#define _NF_SOCK_H_
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index 0f5b12a4ad09..079c69cae2f6 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_NF_TABLES_H
#define _NET_NF_TABLES_H
diff --git a/include/net/netfilter/nf_tables_core.h b/include/net/netfilter/nf_tables_core.h
index 424684c33771..ea5aab568be8 100644
--- a/include/net/netfilter/nf_tables_core.h
+++ b/include/net/netfilter/nf_tables_core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_NF_TABLES_CORE_H
#define _NET_NF_TABLES_CORE_H
diff --git a/include/net/netfilter/nf_tables_ipv4.h b/include/net/netfilter/nf_tables_ipv4.h
index 25e33aee91e7..f0896ba456c4 100644
--- a/include/net/netfilter/nf_tables_ipv4.h
+++ b/include/net/netfilter/nf_tables_ipv4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_TABLES_IPV4_H_
#define _NF_TABLES_IPV4_H_
diff --git a/include/net/netfilter/nf_tables_ipv6.h b/include/net/netfilter/nf_tables_ipv6.h
index 97983d1c05e4..b8065b72f56e 100644
--- a/include/net/netfilter/nf_tables_ipv6.h
+++ b/include/net/netfilter/nf_tables_ipv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_TABLES_IPV6_H_
#define _NF_TABLES_IPV6_H_
diff --git a/include/net/netfilter/nfnetlink_log.h b/include/net/netfilter/nfnetlink_log.h
index 5ca3f14f0998..612cfb63ac68 100644
--- a/include/net/netfilter/nfnetlink_log.h
+++ b/include/net/netfilter/nfnetlink_log.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _KER_NFNETLINK_LOG_H
#define _KER_NFNETLINK_LOG_H
diff --git a/include/net/netfilter/nft_dup.h b/include/net/netfilter/nft_dup.h
index 6b84cf6491a2..4d9d512984b2 100644
--- a/include/net/netfilter/nft_dup.h
+++ b/include/net/netfilter/nft_dup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFT_DUP_H_
#define _NFT_DUP_H_
diff --git a/include/net/netfilter/nft_fib.h b/include/net/netfilter/nft_fib.h
index 381af9469e6a..a88f92737308 100644
--- a/include/net/netfilter/nft_fib.h
+++ b/include/net/netfilter/nft_fib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFT_FIB_H_
#define _NFT_FIB_H_
diff --git a/include/net/netfilter/nft_masq.h b/include/net/netfilter/nft_masq.h
index a3f3c11b2526..e51ab3815797 100644
--- a/include/net/netfilter/nft_masq.h
+++ b/include/net/netfilter/nft_masq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFT_MASQ_H_
#define _NFT_MASQ_H_
diff --git a/include/net/netfilter/nft_meta.h b/include/net/netfilter/nft_meta.h
index 1139cde0fdc5..5c69e9b09388 100644
--- a/include/net/netfilter/nft_meta.h
+++ b/include/net/netfilter/nft_meta.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFT_META_H_
#define _NFT_META_H_
diff --git a/include/net/netfilter/nft_redir.h b/include/net/netfilter/nft_redir.h
index a2d67546afab..4a970737c03c 100644
--- a/include/net/netfilter/nft_redir.h
+++ b/include/net/netfilter/nft_redir.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFT_REDIR_H_
#define _NFT_REDIR_H_
diff --git a/include/net/netfilter/nft_reject.h b/include/net/netfilter/nft_reject.h
index 02e28c529b29..de80c50761f0 100644
--- a/include/net/netfilter/nft_reject.h
+++ b/include/net/netfilter/nft_reject.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NFT_REJECT_H_
#define _NFT_REJECT_H_
diff --git a/include/net/netfilter/xt_rateest.h b/include/net/netfilter/xt_rateest.h
index 130e58361f99..b1db13772554 100644
--- a/include/net/netfilter/xt_rateest.h
+++ b/include/net/netfilter/xt_rateest.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XT_RATEEST_H
#define _XT_RATEEST_H
diff --git a/include/net/netlink.h b/include/net/netlink.h
index e51cf5f81597..0c154f98e987 100644
--- a/include/net/netlink.h
+++ b/include/net/netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_NETLINK_H
#define __NET_NETLINK_H
@@ -773,7 +774,10 @@ static inline int nla_parse_nested(struct nlattr *tb[], int maxtype,
*/
static inline int nla_put_u8(struct sk_buff *skb, int attrtype, u8 value)
{
- return nla_put(skb, attrtype, sizeof(u8), &value);
+ /* temporary variables to work around GCC PR81715 with asan-stack=1 */
+ u8 tmp = value;
+
+ return nla_put(skb, attrtype, sizeof(u8), &tmp);
}
/**
@@ -784,7 +788,9 @@ static inline int nla_put_u8(struct sk_buff *skb, int attrtype, u8 value)
*/
static inline int nla_put_u16(struct sk_buff *skb, int attrtype, u16 value)
{
- return nla_put(skb, attrtype, sizeof(u16), &value);
+ u16 tmp = value;
+
+ return nla_put(skb, attrtype, sizeof(u16), &tmp);
}
/**
@@ -795,7 +801,9 @@ static inline int nla_put_u16(struct sk_buff *skb, int attrtype, u16 value)
*/
static inline int nla_put_be16(struct sk_buff *skb, int attrtype, __be16 value)
{
- return nla_put(skb, attrtype, sizeof(__be16), &value);
+ __be16 tmp = value;
+
+ return nla_put(skb, attrtype, sizeof(__be16), &tmp);
}
/**
@@ -806,7 +814,9 @@ static inline int nla_put_be16(struct sk_buff *skb, int attrtype, __be16 value)
*/
static inline int nla_put_net16(struct sk_buff *skb, int attrtype, __be16 value)
{
- return nla_put_be16(skb, attrtype | NLA_F_NET_BYTEORDER, value);
+ __be16 tmp = value;
+
+ return nla_put_be16(skb, attrtype | NLA_F_NET_BYTEORDER, tmp);
}
/**
@@ -817,7 +827,9 @@ static inline int nla_put_net16(struct sk_buff *skb, int attrtype, __be16 value)
*/
static inline int nla_put_le16(struct sk_buff *skb, int attrtype, __le16 value)
{
- return nla_put(skb, attrtype, sizeof(__le16), &value);
+ __le16 tmp = value;
+
+ return nla_put(skb, attrtype, sizeof(__le16), &tmp);
}
/**
@@ -828,7 +840,9 @@ static inline int nla_put_le16(struct sk_buff *skb, int attrtype, __le16 value)
*/
static inline int nla_put_u32(struct sk_buff *skb, int attrtype, u32 value)
{
- return nla_put(skb, attrtype, sizeof(u32), &value);
+ u32 tmp = value;
+
+ return nla_put(skb, attrtype, sizeof(u32), &tmp);
}
/**
@@ -839,7 +853,9 @@ static inline int nla_put_u32(struct sk_buff *skb, int attrtype, u32 value)
*/
static inline int nla_put_be32(struct sk_buff *skb, int attrtype, __be32 value)
{
- return nla_put(skb, attrtype, sizeof(__be32), &value);
+ __be32 tmp = value;
+
+ return nla_put(skb, attrtype, sizeof(__be32), &tmp);
}
/**
@@ -850,7 +866,9 @@ static inline int nla_put_be32(struct sk_buff *skb, int attrtype, __be32 value)
*/
static inline int nla_put_net32(struct sk_buff *skb, int attrtype, __be32 value)
{
- return nla_put_be32(skb, attrtype | NLA_F_NET_BYTEORDER, value);
+ __be32 tmp = value;
+
+ return nla_put_be32(skb, attrtype | NLA_F_NET_BYTEORDER, tmp);
}
/**
@@ -861,7 +879,9 @@ static inline int nla_put_net32(struct sk_buff *skb, int attrtype, __be32 value)
*/
static inline int nla_put_le32(struct sk_buff *skb, int attrtype, __le32 value)
{
- return nla_put(skb, attrtype, sizeof(__le32), &value);
+ __le32 tmp = value;
+
+ return nla_put(skb, attrtype, sizeof(__le32), &tmp);
}
/**
@@ -874,7 +894,9 @@ static inline int nla_put_le32(struct sk_buff *skb, int attrtype, __le32 value)
static inline int nla_put_u64_64bit(struct sk_buff *skb, int attrtype,
u64 value, int padattr)
{
- return nla_put_64bit(skb, attrtype, sizeof(u64), &value, padattr);
+ u64 tmp = value;
+
+ return nla_put_64bit(skb, attrtype, sizeof(u64), &tmp, padattr);
}
/**
@@ -887,7 +909,9 @@ static inline int nla_put_u64_64bit(struct sk_buff *skb, int attrtype,
static inline int nla_put_be64(struct sk_buff *skb, int attrtype, __be64 value,
int padattr)
{
- return nla_put_64bit(skb, attrtype, sizeof(__be64), &value, padattr);
+ __be64 tmp = value;
+
+ return nla_put_64bit(skb, attrtype, sizeof(__be64), &tmp, padattr);
}
/**
@@ -900,7 +924,9 @@ static inline int nla_put_be64(struct sk_buff *skb, int attrtype, __be64 value,
static inline int nla_put_net64(struct sk_buff *skb, int attrtype, __be64 value,
int padattr)
{
- return nla_put_be64(skb, attrtype | NLA_F_NET_BYTEORDER, value,
+ __be64 tmp = value;
+
+ return nla_put_be64(skb, attrtype | NLA_F_NET_BYTEORDER, tmp,
padattr);
}
@@ -914,7 +940,9 @@ static inline int nla_put_net64(struct sk_buff *skb, int attrtype, __be64 value,
static inline int nla_put_le64(struct sk_buff *skb, int attrtype, __le64 value,
int padattr)
{
- return nla_put_64bit(skb, attrtype, sizeof(__le64), &value, padattr);
+ __le64 tmp = value;
+
+ return nla_put_64bit(skb, attrtype, sizeof(__le64), &tmp, padattr);
}
/**
@@ -925,7 +953,9 @@ static inline int nla_put_le64(struct sk_buff *skb, int attrtype, __le64 value,
*/
static inline int nla_put_s8(struct sk_buff *skb, int attrtype, s8 value)
{
- return nla_put(skb, attrtype, sizeof(s8), &value);
+ s8 tmp = value;
+
+ return nla_put(skb, attrtype, sizeof(s8), &tmp);
}
/**
@@ -936,7 +966,9 @@ static inline int nla_put_s8(struct sk_buff *skb, int attrtype, s8 value)
*/
static inline int nla_put_s16(struct sk_buff *skb, int attrtype, s16 value)
{
- return nla_put(skb, attrtype, sizeof(s16), &value);
+ s16 tmp = value;
+
+ return nla_put(skb, attrtype, sizeof(s16), &tmp);
}
/**
@@ -947,7 +979,9 @@ static inline int nla_put_s16(struct sk_buff *skb, int attrtype, s16 value)
*/
static inline int nla_put_s32(struct sk_buff *skb, int attrtype, s32 value)
{
- return nla_put(skb, attrtype, sizeof(s32), &value);
+ s32 tmp = value;
+
+ return nla_put(skb, attrtype, sizeof(s32), &tmp);
}
/**
@@ -960,7 +994,9 @@ static inline int nla_put_s32(struct sk_buff *skb, int attrtype, s32 value)
static inline int nla_put_s64(struct sk_buff *skb, int attrtype, s64 value,
int padattr)
{
- return nla_put_64bit(skb, attrtype, sizeof(s64), &value, padattr);
+ s64 tmp = value;
+
+ return nla_put_64bit(skb, attrtype, sizeof(s64), &tmp, padattr);
}
/**
@@ -1010,7 +1046,9 @@ static inline int nla_put_msecs(struct sk_buff *skb, int attrtype,
static inline int nla_put_in_addr(struct sk_buff *skb, int attrtype,
__be32 addr)
{
- return nla_put_be32(skb, attrtype, addr);
+ __be32 tmp = addr;
+
+ return nla_put_be32(skb, attrtype, tmp);
}
/**
diff --git a/include/net/netns/can.h b/include/net/netns/can.h
index b106e6ae2e5b..ecf238b8862c 100644
--- a/include/net/netns/can.h
+++ b/include/net/netns/can.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* can in net namespaces
*/
diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h
index 17724c62de97..9795d628a127 100644
--- a/include/net/netns/conntrack.h
+++ b/include/net/netns/conntrack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NETNS_CONNTRACK_H
#define __NETNS_CONNTRACK_H
diff --git a/include/net/netns/core.h b/include/net/netns/core.h
index 78eb1ff75475..0ad4d0c71228 100644
--- a/include/net/netns/core.h
+++ b/include/net/netns/core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NETNS_CORE_H__
#define __NETNS_CORE_H__
diff --git a/include/net/netns/dccp.h b/include/net/netns/dccp.h
index 98d2a7ce1f71..cdbc4f5b8390 100644
--- a/include/net/netns/dccp.h
+++ b/include/net/netns/dccp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NETNS_DCCP_H__
#define __NETNS_DCCP_H__
diff --git a/include/net/netns/generic.h b/include/net/netns/generic.h
index f15daaa89385..8a1ab47c3fb3 100644
--- a/include/net/netns/generic.h
+++ b/include/net/netns/generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* generic net pointers
*/
diff --git a/include/net/netns/hash.h b/include/net/netns/hash.h
index 69a6715d9f3f..24c78183a4c2 100644
--- a/include/net/netns/hash.h
+++ b/include/net/netns/hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_NS_HASH_H__
#define __NET_NS_HASH_H__
diff --git a/include/net/netns/ieee802154_6lowpan.h b/include/net/netns/ieee802154_6lowpan.h
index 8170f8d7052b..736aeac52f56 100644
--- a/include/net/netns/ieee802154_6lowpan.h
+++ b/include/net/netns/ieee802154_6lowpan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ieee802154 6lowpan in net namespaces
*/
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
index 20d061c805e3..8fcff2837484 100644
--- a/include/net/netns/ipv4.h
+++ b/include/net/netns/ipv4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ipv4 in net namespaces
*/
diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h
index 2544f9760a42..dc825a5ddd7f 100644
--- a/include/net/netns/ipv6.h
+++ b/include/net/netns/ipv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* ipv6 in net namespaces
*/
diff --git a/include/net/netns/mib.h b/include/net/netns/mib.h
index d542a4b28cca..830bdf345b17 100644
--- a/include/net/netns/mib.h
+++ b/include/net/netns/mib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NETNS_MIB_H__
#define __NETNS_MIB_H__
diff --git a/include/net/netns/mpls.h b/include/net/netns/mpls.h
index 6608b3693385..a7bdcfbb0b28 100644
--- a/include/net/netns/mpls.h
+++ b/include/net/netns/mpls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* mpls in net namespaces
*/
diff --git a/include/net/netns/netfilter.h b/include/net/netns/netfilter.h
index 72d66c8763d0..cc00af2ac2d7 100644
--- a/include/net/netns/netfilter.h
+++ b/include/net/netns/netfilter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NETNS_NETFILTER_H
#define __NETNS_NETFILTER_H
diff --git a/include/net/netns/nftables.h b/include/net/netns/nftables.h
index c80781146019..4109b5f3010f 100644
--- a/include/net/netns/nftables.h
+++ b/include/net/netns/nftables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NETNS_NFTABLES_H_
#define _NETNS_NFTABLES_H_
diff --git a/include/net/netns/packet.h b/include/net/netns/packet.h
index 17ec2b95c062..aae69bb43cde 100644
--- a/include/net/netns/packet.h
+++ b/include/net/netns/packet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Packet network namespace
*/
diff --git a/include/net/netns/sctp.h b/include/net/netns/sctp.h
index b7871d018354..ebc813277662 100644
--- a/include/net/netns/sctp.h
+++ b/include/net/netns/sctp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NETNS_SCTP_H__
#define __NETNS_SCTP_H__
diff --git a/include/net/netns/unix.h b/include/net/netns/unix.h
index 284649d4dfb4..91a3d7e39198 100644
--- a/include/net/netns/unix.h
+++ b/include/net/netns/unix.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Unix network namespace
*/
diff --git a/include/net/netns/x_tables.h b/include/net/netns/x_tables.h
index c8a7681efa6a..9bc5a12fdbb0 100644
--- a/include/net/netns/x_tables.h
+++ b/include/net/netns/x_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NETNS_X_TABLES_H
#define __NETNS_X_TABLES_H
diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h
index 611521646dd4..9991e5ef52cc 100644
--- a/include/net/netns/xfrm.h
+++ b/include/net/netns/xfrm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NETNS_XFRM_H
#define __NETNS_XFRM_H
diff --git a/include/net/netrom.h b/include/net/netrom.h
index 443a4ffca7aa..0dad2dd5f9d7 100644
--- a/include/net/netrom.h
+++ b/include/net/netrom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Declarations of NET/ROM type objects.
*
diff --git a/include/net/nexthop.h b/include/net/nexthop.h
index 3334dbfa5aa4..36bb794f5cd6 100644
--- a/include/net/nexthop.h
+++ b/include/net/nexthop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_NEXTHOP_H
#define __NET_NEXTHOP_H
diff --git a/include/net/p8022.h b/include/net/p8022.h
index 05e41383856b..c2bacc66bfbc 100644
--- a/include/net/p8022.h
+++ b/include/net/p8022.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_P8022_H
#define _NET_P8022_H
struct datalink_proto *
diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h
index e80edd8879ef..70ca2437740e 100644
--- a/include/net/pkt_cls.h
+++ b/include/net/pkt_cls.h
@@ -1,7 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_PKT_CLS_H
#define __NET_PKT_CLS_H
#include <linux/pkt_cls.h>
+#include <linux/workqueue.h>
#include <net/sch_generic.h>
#include <net/act_api.h>
@@ -17,6 +19,8 @@ struct tcf_walker {
int register_tcf_proto_ops(struct tcf_proto_ops *ops);
int unregister_tcf_proto_ops(struct tcf_proto_ops *ops);
+bool tcf_queue_work(struct work_struct *work);
+
#ifdef CONFIG_NET_CLS
struct tcf_chain *tcf_chain_get(struct tcf_block *block, u32 chain_index,
bool create);
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h
index 259bc191ba59..b3869f97d37d 100644
--- a/include/net/pkt_sched.h
+++ b/include/net/pkt_sched.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_PKT_SCHED_H
#define __NET_PKT_SCHED_H
diff --git a/include/net/pptp.h b/include/net/pptp.h
index 92e9f1fe2628..383e25ca53a7 100644
--- a/include/net/pptp.h
+++ b/include/net/pptp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_PPTP_H
#define _NET_PPTP_H
diff --git a/include/net/protocol.h b/include/net/protocol.h
index 65ba335b0e7e..4fc75f7ae23b 100644
--- a/include/net/protocol.h
+++ b/include/net/protocol.h
@@ -39,8 +39,8 @@
/* This is used to register protocols. */
struct net_protocol {
- void (*early_demux)(struct sk_buff *skb);
- void (*early_demux_handler)(struct sk_buff *skb);
+ int (*early_demux)(struct sk_buff *skb);
+ int (*early_demux_handler)(struct sk_buff *skb);
int (*handler)(struct sk_buff *skb);
void (*err_handler)(struct sk_buff *skb, u32 info);
unsigned int no_policy:1,
diff --git a/include/net/psample.h b/include/net/psample.h
index 8888b0e1a82e..9b80f814ab04 100644
--- a/include/net/psample.h
+++ b/include/net/psample.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_PSAMPLE_H
#define __NET_PSAMPLE_H
diff --git a/include/net/psnap.h b/include/net/psnap.h
index 78db4cc1306a..7cb0c8ab4171 100644
--- a/include/net/psnap.h
+++ b/include/net/psnap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_PSNAP_H
#define _NET_PSNAP_H
diff --git a/include/net/rawv6.h b/include/net/rawv6.h
index 4addc5c988e0..53d86b6055e8 100644
--- a/include/net/rawv6.h
+++ b/include/net/rawv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_RAWV6_H
#define _NET_RAWV6_H
diff --git a/include/net/red.h b/include/net/red.h
index 208e718e16b9..9a9347710701 100644
--- a/include/net/red.h
+++ b/include/net/red.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_SCHED_RED_H
#define __NET_SCHED_RED_H
diff --git a/include/net/rose.h b/include/net/rose.h
index 50811fe2c585..04b72681f2ab 100644
--- a/include/net/rose.h
+++ b/include/net/rose.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Declarations of Rose type objects.
*
diff --git a/include/net/route.h b/include/net/route.h
index 1b09a9368c68..d538e6db1afe 100644
--- a/include/net/route.h
+++ b/include/net/route.h
@@ -175,7 +175,9 @@ static inline struct rtable *ip_route_output_gre(struct net *net, struct flowi4
fl4->fl4_gre_key = gre_key;
return ip_route_output_key(net, fl4);
}
-
+int ip_mc_validate_source(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+ u8 tos, struct net_device *dev,
+ struct in_device *in_dev, u32 *itag);
int ip_route_input_noref(struct sk_buff *skb, __be32 dst, __be32 src,
u8 tos, struct net_device *devin);
int ip_route_input_rcu(struct sk_buff *skb, __be32 dst, __be32 src,
@@ -190,7 +192,7 @@ static inline int ip_route_input(struct sk_buff *skb, __be32 dst, __be32 src,
rcu_read_lock();
err = ip_route_input_noref(skb, dst, src, tos, devin);
if (!err) {
- skb_dst_force_safe(skb);
+ skb_dst_force(skb);
if (!skb_dst(skb))
err = -EINVAL;
}
diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h
index 21837ca68ecc..7b938fbeebc1 100644
--- a/include/net/rtnetlink.h
+++ b/include/net/rtnetlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_RTNETLINK_H
#define __NET_RTNETLINK_H
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index 135f5a2dd931..236bfe5b2ffe 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_SCHED_GENERIC_H
#define __NET_SCHED_GENERIC_H
@@ -10,6 +11,7 @@
#include <linux/dynamic_queue_limits.h>
#include <linux/list.h>
#include <linux/refcount.h>
+#include <linux/workqueue.h>
#include <net/gen_stats.h>
#include <net/rtnetlink.h>
@@ -271,6 +273,7 @@ struct tcf_chain {
struct tcf_block {
struct list_head chain_list;
+ struct work_struct work;
};
static inline void qdisc_cb_private_validate(const struct sk_buff *skb, int sz)
diff --git a/include/net/scm.h b/include/net/scm.h
index 142ea9e7a6d0..903771c8d4e3 100644
--- a/include/net/scm.h
+++ b/include/net/scm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_NET_SCM_H
#define __LINUX_NET_SCM_H
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
index 06b4f515e157..d7d8cba01469 100644
--- a/include/net/sctp/sctp.h
+++ b/include/net/sctp/sctp.h
@@ -127,7 +127,8 @@ int sctp_transport_lookup_process(int (*cb)(struct sctp_transport *, void *),
const union sctp_addr *laddr,
const union sctp_addr *paddr, void *p);
int sctp_for_each_transport(int (*cb)(struct sctp_transport *, void *),
- struct net *net, int pos, void *p);
+ int (*cb_done)(struct sctp_transport *, void *),
+ struct net *net, int *pos, void *p);
int sctp_for_each_endpoint(int (*cb)(struct sctp_endpoint *, void *), void *p);
int sctp_get_sctp_info(struct sock *sk, struct sctp_association *asoc,
struct sctp_info *info);
diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h
index 2db3d3a9ce1d..88233cf8b8d4 100644
--- a/include/net/sctp/sm.h
+++ b/include/net/sctp/sm.h
@@ -261,7 +261,7 @@ struct sctp_chunk *sctp_make_fwdtsn(const struct sctp_association *asoc,
struct sctp_fwdtsn_skip *skiplist);
struct sctp_chunk *sctp_make_auth(const struct sctp_association *asoc);
struct sctp_chunk *sctp_make_strreset_req(const struct sctp_association *asoc,
- __u16 stream_num, __u16 *stream_list,
+ __u16 stream_num, __be16 *stream_list,
bool out, bool in);
struct sctp_chunk *sctp_make_strreset_tsnreq(
const struct sctp_association *asoc);
diff --git a/include/net/sctp/ulpevent.h b/include/net/sctp/ulpevent.h
index 1060494ac230..231dc42f1da6 100644
--- a/include/net/sctp/ulpevent.h
+++ b/include/net/sctp/ulpevent.h
@@ -130,7 +130,7 @@ struct sctp_ulpevent *sctp_ulpevent_make_sender_dry_event(
struct sctp_ulpevent *sctp_ulpevent_make_stream_reset_event(
const struct sctp_association *asoc, __u16 flags,
- __u16 stream_num, __u16 *stream_list, gfp_t gfp);
+ __u16 stream_num, __be16 *stream_list, gfp_t gfp);
struct sctp_ulpevent *sctp_ulpevent_make_assoc_reset_event(
const struct sctp_association *asoc, __u16 flags,
@@ -153,8 +153,12 @@ __u16 sctp_ulpevent_get_notification_type(const struct sctp_ulpevent *event);
static inline int sctp_ulpevent_type_enabled(__u16 sn_type,
struct sctp_event_subscribe *mask)
{
+ int offset = sn_type - SCTP_SN_TYPE_BASE;
char *amask = (char *) mask;
- return amask[sn_type - SCTP_SN_TYPE_BASE];
+
+ if (offset >= sizeof(struct sctp_event_subscribe))
+ return 0;
+ return amask[offset];
}
/* Given an event subscription, is this event enabled? */
diff --git a/include/net/secure_seq.h b/include/net/secure_seq.h
index 031bf16d1521..d7d2495f83c2 100644
--- a/include/net/secure_seq.h
+++ b/include/net/secure_seq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_SECURE_SEQ
#define _NET_SECURE_SEQ
diff --git a/include/net/smc.h b/include/net/smc.h
index 12d26358ad9f..8381d163fefa 100644
--- a/include/net/smc.h
+++ b/include/net/smc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Shared Memory Communications over RDMA (SMC-R) and RoCE
*
diff --git a/include/net/sock.h b/include/net/sock.h
index 03a362568357..a6b9a8d1a6df 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -856,7 +856,7 @@ void sk_stream_write_space(struct sock *sk);
static inline void __sk_add_backlog(struct sock *sk, struct sk_buff *skb)
{
/* dont let skb dst not refcounted, we are going to leave rcu lock */
- skb_dst_force_safe(skb);
+ skb_dst_force(skb);
if (!sk->sk_backlog.tail)
sk->sk_backlog.head = skb;
diff --git a/include/net/sock_reuseport.h b/include/net/sock_reuseport.h
index aecd30308d50..0054b3a9b923 100644
--- a/include/net/sock_reuseport.h
+++ b/include/net/sock_reuseport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SOCK_REUSEPORT_H
#define _SOCK_REUSEPORT_H
diff --git a/include/net/stp.h b/include/net/stp.h
index 3af174d70d9e..2914e6d53490 100644
--- a/include/net/stp.h
+++ b/include/net/stp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_STP_H
#define _NET_STP_H
diff --git a/include/net/strparser.h b/include/net/strparser.h
index 7dc131d62ad5..d96b59f45eba 100644
--- a/include/net/strparser.h
+++ b/include/net/strparser.h
@@ -74,10 +74,9 @@ struct strparser {
u32 unrecov_intr : 1;
struct sk_buff **skb_nextp;
- struct timer_list msg_timer;
struct sk_buff *skb_head;
unsigned int need_bytes;
- struct delayed_work delayed_work;
+ struct delayed_work msg_timer_work;
struct work_struct work;
struct strp_stats stats;
struct strp_callbacks cb;
diff --git a/include/net/tc_act/tc_connmark.h b/include/net/tc_act/tc_connmark.h
index 59b515d32bb4..1f4cb477bb5d 100644
--- a/include/net/tc_act/tc_connmark.h
+++ b/include/net/tc_act/tc_connmark.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_TC_CONNMARK_H
#define __NET_TC_CONNMARK_H
diff --git a/include/net/tc_act/tc_csum.h b/include/net/tc_act/tc_csum.h
index 3248beaf16b0..781f3433a0be 100644
--- a/include/net/tc_act/tc_csum.h
+++ b/include/net/tc_act/tc_csum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_TC_CSUM_H
#define __NET_TC_CSUM_H
diff --git a/include/net/tc_act/tc_defact.h b/include/net/tc_act/tc_defact.h
index d47f040a3bdf..d7ba0402a732 100644
--- a/include/net/tc_act/tc_defact.h
+++ b/include/net/tc_act/tc_defact.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_TC_DEF_H
#define __NET_TC_DEF_H
diff --git a/include/net/tc_act/tc_gact.h b/include/net/tc_act/tc_gact.h
index 41afe1ce7b16..e82d93346b63 100644
--- a/include/net/tc_act/tc_gact.h
+++ b/include/net/tc_act/tc_gact.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_TC_GACT_H
#define __NET_TC_GACT_H
diff --git a/include/net/tc_act/tc_ife.h b/include/net/tc_act/tc_ife.h
index 30ba459ddd34..ba6667125bcd 100644
--- a/include/net/tc_act/tc_ife.h
+++ b/include/net/tc_act/tc_ife.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_TC_IFE_H
#define __NET_TC_IFE_H
diff --git a/include/net/tc_act/tc_ipt.h b/include/net/tc_act/tc_ipt.h
index 31309766e379..4225fcb1c6ba 100644
--- a/include/net/tc_act/tc_ipt.h
+++ b/include/net/tc_act/tc_ipt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_TC_IPT_H
#define __NET_TC_IPT_H
diff --git a/include/net/tc_act/tc_mirred.h b/include/net/tc_act/tc_mirred.h
index 604bc31e23ab..b2dbbfaefd22 100644
--- a/include/net/tc_act/tc_mirred.h
+++ b/include/net/tc_act/tc_mirred.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_TC_MIR_H
#define __NET_TC_MIR_H
diff --git a/include/net/tc_act/tc_nat.h b/include/net/tc_act/tc_nat.h
index 56681a320612..c14407160812 100644
--- a/include/net/tc_act/tc_nat.h
+++ b/include/net/tc_act/tc_nat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_TC_NAT_H
#define __NET_TC_NAT_H
diff --git a/include/net/tc_act/tc_pedit.h b/include/net/tc_act/tc_pedit.h
index a46c3f2ace70..227a6f1d02f4 100644
--- a/include/net/tc_act/tc_pedit.h
+++ b/include/net/tc_act/tc_pedit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_TC_PED_H
#define __NET_TC_PED_H
diff --git a/include/net/tc_act/tc_sample.h b/include/net/tc_act/tc_sample.h
index 89e9305be880..524cee4f4c81 100644
--- a/include/net/tc_act/tc_sample.h
+++ b/include/net/tc_act/tc_sample.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_TC_SAMPLE_H
#define __NET_TC_SAMPLE_H
diff --git a/include/net/tcp.h b/include/net/tcp.h
index b510f284427a..e6d0002a1b0b 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -345,7 +345,7 @@ void tcp_v4_err(struct sk_buff *skb, u32);
void tcp_shutdown(struct sock *sk, int how);
-void tcp_v4_early_demux(struct sk_buff *skb);
+int tcp_v4_early_demux(struct sk_buff *skb);
int tcp_v4_rcv(struct sk_buff *skb);
int tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw);
@@ -544,7 +544,6 @@ u32 tcp_tso_autosize(const struct sock *sk, unsigned int mss_now,
int min_tso_segs);
void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss,
int nonagle);
-bool tcp_may_send_now(struct sock *sk);
int __tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb, int segs);
int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb, int segs);
void tcp_retransmit_timer(struct sock *sk);
@@ -841,6 +840,12 @@ struct tcp_skb_cb {
struct inet6_skb_parm h6;
#endif
} header; /* For incoming skbs */
+ struct {
+ __u32 key;
+ __u32 flags;
+ struct bpf_map *map;
+ void *data_end;
+ } bpf;
};
};
@@ -1766,12 +1771,12 @@ static inline void tcp_highest_sack_reset(struct sock *sk)
tcp_sk(sk)->highest_sack = tcp_write_queue_head(sk);
}
-/* Called when old skb is about to be deleted (to be combined with new skb) */
-static inline void tcp_highest_sack_combine(struct sock *sk,
+/* Called when old skb is about to be deleted and replaced by new skb */
+static inline void tcp_highest_sack_replace(struct sock *sk,
struct sk_buff *old,
struct sk_buff *new)
{
- if (tcp_sk(sk)->sacked_out && (old == tcp_sk(sk)->highest_sack))
+ if (old == tcp_highest_sack(sk))
tcp_sk(sk)->highest_sack = new;
}
diff --git a/include/net/transp_v6.h b/include/net/transp_v6.h
index 276f9760ab56..c4f5caaf3778 100644
--- a/include/net/transp_v6.h
+++ b/include/net/transp_v6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _TRANSP_V6_H
#define _TRANSP_V6_H
diff --git a/include/net/tso.h b/include/net/tso.h
index 9a56c39e6d0a..7e166a570349 100644
--- a/include/net/tso.h
+++ b/include/net/tso.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _TSO_H
#define _TSO_H
diff --git a/include/net/udp.h b/include/net/udp.h
index 12dfbfe2e2d7..6c759c8594e2 100644
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -259,7 +259,7 @@ static inline struct sk_buff *skb_recv_udp(struct sock *sk, unsigned int flags,
return __skb_recv_udp(sk, flags, noblock, &peeked, &off, err);
}
-void udp_v4_early_demux(struct sk_buff *skb);
+int udp_v4_early_demux(struct sk_buff *skb);
bool udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst);
int udp_get_port(struct sock *sk, unsigned short snum,
int (*saddr_cmp)(const struct sock *,
diff --git a/include/net/udp_tunnel.h b/include/net/udp_tunnel.h
index 10cce0dd4450..b95a6927c718 100644
--- a/include/net/udp_tunnel.h
+++ b/include/net/udp_tunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_UDP_TUNNEL_H
#define __NET_UDP_TUNNEL_H
diff --git a/include/net/udplite.h b/include/net/udplite.h
index b7a18f63d86d..81bdbf97319b 100644
--- a/include/net/udplite.h
+++ b/include/net/udplite.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Definitions for the UDP-Lite (RFC 3828) code.
*/
diff --git a/include/net/vxlan.h b/include/net/vxlan.h
index 4e3876dde295..13223396dc64 100644
--- a/include/net/vxlan.h
+++ b/include/net/vxlan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_VXLAN_H
#define __NET_VXLAN_H 1
diff --git a/include/net/wext.h b/include/net/wext.h
index 454ff763eeba..e51f067fdb3a 100644
--- a/include/net/wext.h
+++ b/include/net/wext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NET_WEXT_H
#define __NET_WEXT_H
diff --git a/include/net/x25.h b/include/net/x25.h
index 2609b57bd459..ed1acc3044ac 100644
--- a/include/net/x25.h
+++ b/include/net/x25.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Declarations of X.25 Packet Layer type objects.
*
diff --git a/include/net/x25device.h b/include/net/x25device.h
index 1fa08b49f1c2..cf749efca24d 100644
--- a/include/net/x25device.h
+++ b/include/net/x25device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _X25DEVICE_H
#define _X25DEVICE_H
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index f002a2c5e33c..e015e164bac0 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NET_XFRM_H
#define _NET_XFRM_H
diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h
index 429f46fb61e4..9c689868eb4d 100644
--- a/include/ras/ras_event.h
+++ b/include/ras/ras_event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM ras
#define TRACE_INCLUDE_FILE ras_event
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index bdb1279a415b..e8608b2dc844 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -285,7 +285,7 @@ enum ib_tm_cap_flags {
IB_TM_CAP_RC = 1 << 0,
};
-struct ib_xrq_caps {
+struct ib_tm_caps {
/* Max size of RNDV header */
u32 max_rndv_hdr_size;
/* Max number of entries in tag matching list */
@@ -358,7 +358,7 @@ struct ib_device_attr {
struct ib_rss_caps rss_caps;
u32 max_wq_type_rq;
u32 raw_packet_caps; /* Use ib_raw_packet_caps enum */
- struct ib_xrq_caps xrq_caps;
+ struct ib_tm_caps tm_caps;
};
enum ib_mtu {
@@ -1739,7 +1739,7 @@ struct ib_mr {
u32 lkey;
u32 rkey;
u64 iova;
- u32 length;
+ u64 length;
unsigned int page_size;
bool need_inval;
union {
diff --git a/include/rdma/rdma_netlink.h b/include/rdma/rdma_netlink.h
index 2d878596b1e0..c369703fcd69 100644
--- a/include/rdma/rdma_netlink.h
+++ b/include/rdma/rdma_netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RDMA_NETLINK_H
#define _RDMA_NETLINK_H
diff --git a/include/scsi/osd_attributes.h b/include/scsi/osd_attributes.h
index 303ba1118a4d..8a6acd054e4e 100644
--- a/include/scsi/osd_attributes.h
+++ b/include/scsi/osd_attributes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __OSD_ATTRIBUTES_H__
#define __OSD_ATTRIBUTES_H__
diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h
index a1e1930b7a87..cb85eddb47ea 100644
--- a/include/scsi/scsi.h
+++ b/include/scsi/scsi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header file contains public constants and structures used by
* the SCSI initiator code.
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
index 3d3f8b342e05..7fb57e905526 100644
--- a/include/scsi/scsi_cmnd.h
+++ b/include/scsi/scsi_cmnd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_SCSI_CMND_H
#define _SCSI_SCSI_CMND_H
diff --git a/include/scsi/scsi_common.h b/include/scsi/scsi_common.h
index 20bf7eaef05a..731ac09ed231 100644
--- a/include/scsi/scsi_common.h
+++ b/include/scsi/scsi_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Functions used by both the SCSI initiator code and the SCSI target code.
*/
diff --git a/include/scsi/scsi_dbg.h b/include/scsi/scsi_dbg.h
index 56710e03101c..04e0679767f6 100644
--- a/include/scsi/scsi_dbg.h
+++ b/include/scsi/scsi_dbg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_SCSI_DBG_H
#define _SCSI_SCSI_DBG_H
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
index 67c5a9f223f7..571ddb49b926 100644
--- a/include/scsi/scsi_device.h
+++ b/include/scsi/scsi_device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_SCSI_DEVICE_H
#define _SCSI_SCSI_DEVICE_H
diff --git a/include/scsi/scsi_devinfo.h b/include/scsi/scsi_devinfo.h
index 36b03013d629..3575693bb628 100644
--- a/include/scsi/scsi_devinfo.h
+++ b/include/scsi/scsi_devinfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_SCSI_DEVINFO_H
#define _SCSI_SCSI_DEVINFO_H
/*
diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h
index a5534ccad859..fae8b465233e 100644
--- a/include/scsi/scsi_driver.h
+++ b/include/scsi/scsi_driver.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_SCSI_DRIVER_H
#define _SCSI_SCSI_DRIVER_H
diff --git a/include/scsi/scsi_eh.h b/include/scsi/scsi_eh.h
index 64d30d80dadb..2b7e227960e1 100644
--- a/include/scsi/scsi_eh.h
+++ b/include/scsi/scsi_eh.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_SCSI_EH_H
#define _SCSI_SCSI_EH_H
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
index 0a804b1a4726..a8b7bf879ced 100644
--- a/include/scsi/scsi_host.h
+++ b/include/scsi/scsi_host.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_SCSI_HOST_H
#define _SCSI_SCSI_HOST_H
diff --git a/include/scsi/scsi_ioctl.h b/include/scsi/scsi_ioctl.h
index 8d19d1d233c3..5101e987c0ef 100644
--- a/include/scsi/scsi_ioctl.h
+++ b/include/scsi/scsi_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_IOCTL_H
#define _SCSI_IOCTL_H
diff --git a/include/scsi/scsi_proto.h b/include/scsi/scsi_proto.h
index 8c285d9a06d8..1c41dbcfcb35 100644
--- a/include/scsi/scsi_proto.h
+++ b/include/scsi/scsi_proto.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* This header file contains public constants and structures used by
* both the SCSI initiator and the SCSI target code.
diff --git a/include/scsi/scsi_request.h b/include/scsi/scsi_request.h
index e0afa445ee4e..b06f28c74908 100644
--- a/include/scsi/scsi_request.h
+++ b/include/scsi/scsi_request.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_SCSI_REQUEST_H
#define _SCSI_SCSI_REQUEST_H
diff --git a/include/scsi/scsi_tcq.h b/include/scsi/scsi_tcq.h
index 5b416debf101..e192a0caa850 100644
--- a/include/scsi/scsi_tcq.h
+++ b/include/scsi/scsi_tcq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_SCSI_TCQ_H
#define _SCSI_SCSI_TCQ_H
diff --git a/include/scsi/scsi_transport_sas.h b/include/scsi/scsi_transport_sas.h
index a23304b7fb2e..62895b405933 100644
--- a/include/scsi/scsi_transport_sas.h
+++ b/include/scsi/scsi_transport_sas.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SCSI_TRANSPORT_SAS_H
#define SCSI_TRANSPORT_SAS_H
diff --git a/include/scsi/scsi_transport_srp.h b/include/scsi/scsi_transport_srp.h
index 56ae198acc73..d22df12584f9 100644
--- a/include/scsi/scsi_transport_srp.h
+++ b/include/scsi/scsi_transport_srp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef SCSI_TRANSPORT_SRP_H
#define SCSI_TRANSPORT_SRP_H
diff --git a/include/scsi/scsicam.h b/include/scsi/scsicam.h
index 24ede474752e..57c729254569 100644
--- a/include/scsi/scsicam.h
+++ b/include/scsi/scsicam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* scsicam.h - SCSI CAM support functions, use for HDIO_GETGEO, etc.
*
diff --git a/include/scsi/sg.h b/include/scsi/sg.h
index 20bc71c3e0b8..f91bcca604e4 100644
--- a/include/scsi/sg.h
+++ b/include/scsi/sg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCSI_GENERIC_H
#define _SCSI_GENERIC_H
diff --git a/include/sound/aci.h b/include/sound/aci.h
index ee639d355ef0..6ebbd4223f12 100644
--- a/include/sound/aci.h
+++ b/include/sound/aci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ACI_H_
#define _ACI_H_
diff --git a/include/sound/alc5623.h b/include/sound/alc5623.h
index 422c97d43df3..0ebb0f6fce54 100644
--- a/include/sound/alc5623.h
+++ b/include/sound/alc5623.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _INCLUDE_SOUND_ALC5623_H
#define _INCLUDE_SOUND_ALC5623_H
struct alc5623_platform_data {
diff --git a/include/sound/control.h b/include/sound/control.h
index bd7246de58e7..a1f1152bc687 100644
--- a/include/sound/control.h
+++ b/include/sound/control.h
@@ -248,6 +248,9 @@ int snd_ctl_add_vmaster_hook(struct snd_kcontrol *kctl,
void *private_data);
void snd_ctl_sync_vmaster(struct snd_kcontrol *kctl, bool hook_only);
#define snd_ctl_sync_vmaster_hook(kctl) snd_ctl_sync_vmaster(kctl, true)
+int snd_ctl_apply_vmaster_slaves(struct snd_kcontrol *kctl,
+ int (*func)(struct snd_kcontrol *, void *),
+ void *arg);
/*
* Helper functions for jack-detection controls
diff --git a/include/sound/hda_chmap.h b/include/sound/hda_chmap.h
index babd445c7505..e508f3192294 100644
--- a/include/sound/hda_chmap.h
+++ b/include/sound/hda_chmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* For multichannel support
*/
diff --git a/include/sound/hda_i915.h b/include/sound/hda_i915.h
index 5ab972e116ec..a94f5b6f92ac 100644
--- a/include/sound/hda_i915.h
+++ b/include/sound/hda_i915.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* HD-Audio helpers to sync with i915 driver
*/
diff --git a/include/sound/hda_register.h b/include/sound/hda_register.h
index 15fc6daf9096..2ab39fb52d7a 100644
--- a/include/sound/hda_register.h
+++ b/include/sound/hda_register.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* HD-audio controller (Azalia) registers and helpers
*
diff --git a/include/sound/hda_regmap.h b/include/sound/hda_regmap.h
index ca64f0f50b45..5141f8ffbb12 100644
--- a/include/sound/hda_regmap.h
+++ b/include/sound/hda_regmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* HD-audio regmap helpers
*/
diff --git a/include/sound/hda_verbs.h b/include/sound/hda_verbs.h
index d0509db6d0ec..2a8573a00ea6 100644
--- a/include/sound/hda_verbs.h
+++ b/include/sound/hda_verbs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* HD-audio codec verbs
*/
@@ -95,6 +96,7 @@ enum {
#define AC_VERB_SET_EAPD_BTLENABLE 0x70c
#define AC_VERB_SET_DIGI_CONVERT_1 0x70d
#define AC_VERB_SET_DIGI_CONVERT_2 0x70e
+#define AC_VERB_SET_DIGI_CONVERT_3 0x73e
#define AC_VERB_SET_VOLUME_KNOB_CONTROL 0x70f
#define AC_VERB_SET_GPIO_DATA 0x715
#define AC_VERB_SET_GPIO_MASK 0x716
diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h
index 96546b30e900..d8afd8a5bd76 100644
--- a/include/sound/hdaudio.h
+++ b/include/sound/hdaudio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* HD-audio core stuff
*/
diff --git a/include/sound/hdaudio_ext.h b/include/sound/hdaudio_ext.h
index 8660a7f10851..ca00130cb028 100644
--- a/include/sound/hdaudio_ext.h
+++ b/include/sound/hdaudio_ext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SOUND_HDAUDIO_EXT_H
#define __SOUND_HDAUDIO_EXT_H
diff --git a/include/sound/l3.h b/include/sound/l3.h
index 1471da22adad..b6f58072237a 100644
--- a/include/sound/l3.h
+++ b/include/sound/l3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _L3_H_
#define _L3_H_ 1
diff --git a/include/sound/pcm_drm_eld.h b/include/sound/pcm_drm_eld.h
index 93357b25d2e2..28a55a8beb28 100644
--- a/include/sound/pcm_drm_eld.h
+++ b/include/sound/pcm_drm_eld.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SOUND_PCM_DRM_ELD_H
#define __SOUND_PCM_DRM_ELD_H
diff --git a/include/sound/pcm_iec958.h b/include/sound/pcm_iec958.h
index 36f023acb201..0939aa45e2fe 100644
--- a/include/sound/pcm_iec958.h
+++ b/include/sound/pcm_iec958.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SOUND_PCM_IEC958_H
#define __SOUND_PCM_IEC958_H
diff --git a/include/sound/pxa2xx-lib.h b/include/sound/pxa2xx-lib.h
index 6ef629bde164..5e710d848bd3 100644
--- a/include/sound/pxa2xx-lib.h
+++ b/include/sound/pxa2xx-lib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef PXA2XX_LIB_H
#define PXA2XX_LIB_H
diff --git a/include/sound/s3c24xx_uda134x.h b/include/sound/s3c24xx_uda134x.h
index ffaf1f098c8e..0232b80ff486 100644
--- a/include/sound/s3c24xx_uda134x.h
+++ b/include/sound/s3c24xx_uda134x.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _S3C24XX_UDA134X_H_
#define _S3C24XX_UDA134X_H_ 1
diff --git a/include/sound/seq_virmidi.h b/include/sound/seq_virmidi.h
index a03acd0d398a..695257ae64ac 100644
--- a/include/sound/seq_virmidi.h
+++ b/include/sound/seq_virmidi.h
@@ -60,6 +60,7 @@ struct snd_virmidi_dev {
int port; /* created/attached port */
unsigned int flags; /* SNDRV_VIRMIDI_* */
rwlock_t filelist_lock;
+ struct rw_semaphore filelist_sem;
struct list_head filelist;
};
diff --git a/include/sound/snd_wavefront.h b/include/sound/snd_wavefront.h
index cd0bab1ef6f1..6231eb57361f 100644
--- a/include/sound/snd_wavefront.h
+++ b/include/sound/snd_wavefront.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __SOUND_SND_WAVEFRONT_H__
#define __SOUND_SND_WAVEFRONT_H__
diff --git a/include/sound/tas5086.h b/include/sound/tas5086.h
index aac481b7db8f..a0a1c380f359 100644
--- a/include/sound/tas5086.h
+++ b/include/sound/tas5086.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SND_SOC_CODEC_TAS5086_H_
#define _SND_SOC_CODEC_TAS5086_H_
diff --git a/include/target/iscsi/iscsi_target_core.h b/include/target/iscsi/iscsi_target_core.h
index fb87d32f5e51..cf5f3fff1f1a 100644
--- a/include/target/iscsi/iscsi_target_core.h
+++ b/include/target/iscsi/iscsi_target_core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_CORE_H
#define ISCSI_TARGET_CORE_H
diff --git a/include/target/iscsi/iscsi_target_stat.h b/include/target/iscsi/iscsi_target_stat.h
index c27dd471656d..b77d579e3ecf 100644
--- a/include/target/iscsi/iscsi_target_stat.h
+++ b/include/target/iscsi/iscsi_target_stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef ISCSI_TARGET_STAT_H
#define ISCSI_TARGET_STAT_H
diff --git a/include/target/iscsi/iscsi_transport.h b/include/target/iscsi/iscsi_transport.h
index ff1a4f4cd66d..91948bc5b185 100644
--- a/include/target/iscsi/iscsi_transport.h
+++ b/include/target/iscsi/iscsi_transport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include "iscsi_target_core.h" /* struct iscsi_cmd */
struct sockaddr_storage;
diff --git a/include/target/target_core_backend.h b/include/target/target_core_backend.h
index e150e391878b..b6b3fb444a92 100644
--- a/include/target/target_core_backend.h
+++ b/include/target/target_core_backend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_BACKEND_H
#define TARGET_CORE_BACKEND_H
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
index 516764febeb7..f5db145e68ec 100644
--- a/include/target/target_core_base.h
+++ b/include/target/target_core_base.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_BASE_H
#define TARGET_CORE_BASE_H
diff --git a/include/target/target_core_fabric.h b/include/target/target_core_fabric.h
index 33d2e3e5773c..b297aa0d9651 100644
--- a/include/target/target_core_fabric.h
+++ b/include/target/target_core_fabric.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TARGET_CORE_FABRIC_H
#define TARGET_CORE_FABRIC_H
diff --git a/include/trace/define_trace.h b/include/trace/define_trace.h
index 6e3945f64102..d9e3d4aa3f6e 100644
--- a/include/trace/define_trace.h
+++ b/include/trace/define_trace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Trace files that want to automate creation of all tracepoints defined
* in their file should include this file. The following are macros that the
diff --git a/include/trace/events/9p.h b/include/trace/events/9p.h
index 633ee9ee9778..78c5608a1648 100644
--- a/include/trace/events/9p.h
+++ b/include/trace/events/9p.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM 9p
diff --git a/include/trace/events/alarmtimer.h b/include/trace/events/alarmtimer.h
index ae4f358dd8e9..13483c7ca70b 100644
--- a/include/trace/events/alarmtimer.h
+++ b/include/trace/events/alarmtimer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM alarmtimer
diff --git a/include/trace/events/asoc.h b/include/trace/events/asoc.h
index 9130dd5a184a..ccd1a3bdff46 100644
--- a/include/trace/events/asoc.h
+++ b/include/trace/events/asoc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM asoc
diff --git a/include/trace/events/bcache.h b/include/trace/events/bcache.h
index daf749138ff8..2cbd6e42ad83 100644
--- a/include/trace/events/bcache.h
+++ b/include/trace/events/bcache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM bcache
diff --git a/include/trace/events/block.h b/include/trace/events/block.h
index 1fd7ff1a46f7..81b43f5bdf23 100644
--- a/include/trace/events/block.h
+++ b/include/trace/events/block.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM block
diff --git a/include/trace/events/bpf.h b/include/trace/events/bpf.h
index 52c8425d144b..cc749d7099fb 100644
--- a/include/trace/events/bpf.h
+++ b/include/trace/events/bpf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM bpf
diff --git a/include/trace/events/btrfs.h b/include/trace/events/btrfs.h
index dc1d0df91e0b..32d0c1fe2bfa 100644
--- a/include/trace/events/btrfs.h
+++ b/include/trace/events/btrfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM btrfs
diff --git a/include/trace/events/cgroup.h b/include/trace/events/cgroup.h
index c226f50e88fa..d74722c2ac8b 100644
--- a/include/trace/events/cgroup.h
+++ b/include/trace/events/cgroup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM cgroup
diff --git a/include/trace/events/cma.h b/include/trace/events/cma.h
index d7cd961720a7..5017a8829270 100644
--- a/include/trace/events/cma.h
+++ b/include/trace/events/cma.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM cma
diff --git a/include/trace/events/compaction.h b/include/trace/events/compaction.h
index 0a18ab6483ff..6074eff3d766 100644
--- a/include/trace/events/compaction.h
+++ b/include/trace/events/compaction.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM compaction
diff --git a/include/trace/events/context_tracking.h b/include/trace/events/context_tracking.h
index ce8007cf29cf..0aa6fd68fdf9 100644
--- a/include/trace/events/context_tracking.h
+++ b/include/trace/events/context_tracking.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM context_tracking
diff --git a/include/trace/events/cpuhp.h b/include/trace/events/cpuhp.h
index 996953db91d7..fe1d6e8cd99d 100644
--- a/include/trace/events/cpuhp.h
+++ b/include/trace/events/cpuhp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM cpuhp
diff --git a/include/trace/events/devlink.h b/include/trace/events/devlink.h
index 09f1df228f2c..44acfbca1266 100644
--- a/include/trace/events/devlink.h
+++ b/include/trace/events/devlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if IS_ENABLED(CONFIG_NET_DEVLINK)
#undef TRACE_SYSTEM
diff --git a/include/trace/events/dma_fence.h b/include/trace/events/dma_fence.h
index 1157cb4c3c6f..d61bfddcc621 100644
--- a/include/trace/events/dma_fence.h
+++ b/include/trace/events/dma_fence.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM dma_fence
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h
index 9c3bc3883d2f..4d0e3af4e561 100644
--- a/include/trace/events/ext4.h
+++ b/include/trace/events/ext4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM ext4
diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
index 5d216f7fb05a..7ab40491485b 100644
--- a/include/trace/events/f2fs.h
+++ b/include/trace/events/f2fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM f2fs
diff --git a/include/trace/events/fib.h b/include/trace/events/fib.h
index 833cfcb6750d..81b7e985bb45 100644
--- a/include/trace/events/fib.h
+++ b/include/trace/events/fib.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM fib
diff --git a/include/trace/events/fib6.h b/include/trace/events/fib6.h
index d60096cddb2a..d46e24702765 100644
--- a/include/trace/events/fib6.h
+++ b/include/trace/events/fib6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM fib6
diff --git a/include/trace/events/filelock.h b/include/trace/events/filelock.h
index 63a7680347cb..d1faf3597b9d 100644
--- a/include/trace/events/filelock.h
+++ b/include/trace/events/filelock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Events for filesystem locks
*
diff --git a/include/trace/events/filemap.h b/include/trace/events/filemap.h
index ff91325b8123..ee05db7ee8d2 100644
--- a/include/trace/events/filemap.h
+++ b/include/trace/events/filemap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM filemap
diff --git a/include/trace/events/fs_dax.h b/include/trace/events/fs_dax.h
index fbc4a06f7310..8a8df5423dca 100644
--- a/include/trace/events/fs_dax.h
+++ b/include/trace/events/fs_dax.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM fs_dax
diff --git a/include/trace/events/fsi.h b/include/trace/events/fsi.h
index 697ee6678892..92e5e89e52ed 100644
--- a/include/trace/events/fsi.h
+++ b/include/trace/events/fsi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM fsi
diff --git a/include/trace/events/fsi_master_gpio.h b/include/trace/events/fsi_master_gpio.h
index 11b36c119048..f95cf3264bf9 100644
--- a/include/trace/events/fsi_master_gpio.h
+++ b/include/trace/events/fsi_master_gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM fsi_master_gpio
diff --git a/include/trace/events/gpio.h b/include/trace/events/gpio.h
index 2da73b92d47e..5c189a22c489 100644
--- a/include/trace/events/gpio.h
+++ b/include/trace/events/gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM gpio
diff --git a/include/trace/events/hswadsp.h b/include/trace/events/hswadsp.h
index 0f78bbb02002..939d7a09d73f 100644
--- a/include/trace/events/hswadsp.h
+++ b/include/trace/events/hswadsp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM hswadsp
diff --git a/include/trace/events/huge_memory.h b/include/trace/events/huge_memory.h
index 04f58acda8e8..dd4db334bd63 100644
--- a/include/trace/events/huge_memory.h
+++ b/include/trace/events/huge_memory.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM huge_memory
diff --git a/include/trace/events/intel-sst.h b/include/trace/events/intel-sst.h
index edc24e6dea1b..0416e91f8181 100644
--- a/include/trace/events/intel-sst.h
+++ b/include/trace/events/intel-sst.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM intel-sst
diff --git a/include/trace/events/intel_ish.h b/include/trace/events/intel_ish.h
index 92f7d5b23177..e6d7ff55ee8c 100644
--- a/include/trace/events/intel_ish.h
+++ b/include/trace/events/intel_ish.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM intel_ish
diff --git a/include/trace/events/iommu.h b/include/trace/events/iommu.h
index 99254ed89212..72b4582322ff 100644
--- a/include/trace/events/iommu.h
+++ b/include/trace/events/iommu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* iommu trace points
*
diff --git a/include/trace/events/ipi.h b/include/trace/events/ipi.h
index 834a7362a610..0be71dad6ec0 100644
--- a/include/trace/events/ipi.h
+++ b/include/trace/events/ipi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM ipi
diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
index 1c41b74581f7..eeceafaaea4c 100644
--- a/include/trace/events/irq.h
+++ b/include/trace/events/irq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM irq
diff --git a/include/trace/events/jbd2.h b/include/trace/events/jbd2.h
index c1d1f3eb242d..2310b259329f 100644
--- a/include/trace/events/jbd2.h
+++ b/include/trace/events/jbd2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM jbd2
diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h
index 6b2e154fd23a..285feeadac39 100644
--- a/include/trace/events/kmem.h
+++ b/include/trace/events/kmem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM kmem
diff --git a/include/trace/events/kvm.h b/include/trace/events/kvm.h
index 8ade3eb6c640..e4b0b8e09932 100644
--- a/include/trace/events/kvm.h
+++ b/include/trace/events/kvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(_TRACE_KVM_MAIN_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_KVM_MAIN_H
@@ -14,7 +15,9 @@
ERSN(SHUTDOWN), ERSN(FAIL_ENTRY), ERSN(INTR), ERSN(SET_TPR), \
ERSN(TPR_ACCESS), ERSN(S390_SIEIC), ERSN(S390_RESET), ERSN(DCR),\
ERSN(NMI), ERSN(INTERNAL_ERROR), ERSN(OSI), ERSN(PAPR_HCALL), \
- ERSN(S390_UCONTROL), ERSN(WATCHDOG), ERSN(S390_TSCH)
+ ERSN(S390_UCONTROL), ERSN(WATCHDOG), ERSN(S390_TSCH), ERSN(EPR),\
+ ERSN(SYSTEM_EVENT), ERSN(S390_STSI), ERSN(IOAPIC_EOI), \
+ ERSN(HYPERV)
TRACE_EVENT(kvm_userspace_exit,
TP_PROTO(__u32 reason, int errno),
diff --git a/include/trace/events/libata.h b/include/trace/events/libata.h
index 2fbbf990e4b3..ab69434e2329 100644
--- a/include/trace/events/libata.h
+++ b/include/trace/events/libata.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM libata
diff --git a/include/trace/events/lock.h b/include/trace/events/lock.h
index 2821b86de63b..d7512129a324 100644
--- a/include/trace/events/lock.h
+++ b/include/trace/events/lock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM lock
diff --git a/include/trace/events/mce.h b/include/trace/events/mce.h
index 70f02149808c..1391ada0da3b 100644
--- a/include/trace/events/mce.h
+++ b/include/trace/events/mce.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM mce
diff --git a/include/trace/events/mdio.h b/include/trace/events/mdio.h
index 00d85f5f54e4..0f241cbe00ab 100644
--- a/include/trace/events/mdio.h
+++ b/include/trace/events/mdio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM mdio
diff --git a/include/trace/events/migrate.h b/include/trace/events/migrate.h
index 539b25a76111..bcf4daccd6be 100644
--- a/include/trace/events/migrate.h
+++ b/include/trace/events/migrate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM migrate
diff --git a/include/trace/events/mmc.h b/include/trace/events/mmc.h
index f30a99ac65b6..200f731be557 100644
--- a/include/trace/events/mmc.h
+++ b/include/trace/events/mmc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM mmc
diff --git a/include/trace/events/mmflags.h b/include/trace/events/mmflags.h
index 4c2e4737d7bc..648cbf603736 100644
--- a/include/trace/events/mmflags.h
+++ b/include/trace/events/mmflags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/node.h>
#include <linux/mmzone.h>
#include <linux/compaction.h>
@@ -18,7 +19,6 @@
{(unsigned long)GFP_HIGHUSER_MOVABLE, "GFP_HIGHUSER_MOVABLE"},\
{(unsigned long)GFP_HIGHUSER, "GFP_HIGHUSER"}, \
{(unsigned long)GFP_USER, "GFP_USER"}, \
- {(unsigned long)GFP_TEMPORARY, "GFP_TEMPORARY"}, \
{(unsigned long)GFP_KERNEL_ACCOUNT, "GFP_KERNEL_ACCOUNT"}, \
{(unsigned long)GFP_KERNEL, "GFP_KERNEL"}, \
{(unsigned long)GFP_NOFS, "GFP_NOFS"}, \
diff --git a/include/trace/events/module.h b/include/trace/events/module.h
index 28c45997e451..097485c73c01 100644
--- a/include/trace/events/module.h
+++ b/include/trace/events/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Because linux/module.h has tracepoints in the header, and ftrace.h
* used to include this file, define_trace.h includes linux/module.h
diff --git a/include/trace/events/napi.h b/include/trace/events/napi.h
index 0b9e5136a2a3..f3a12566bed0 100644
--- a/include/trace/events/napi.h
+++ b/include/trace/events/napi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM napi
diff --git a/include/trace/events/net.h b/include/trace/events/net.h
index 49cc7c3de252..9c886739246a 100644
--- a/include/trace/events/net.h
+++ b/include/trace/events/net.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM net
diff --git a/include/trace/events/nilfs2.h b/include/trace/events/nilfs2.h
index c7805818fcc6..84ee31fc04cc 100644
--- a/include/trace/events/nilfs2.h
+++ b/include/trace/events/nilfs2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM nilfs2
diff --git a/include/trace/events/nmi.h b/include/trace/events/nmi.h
index da3ee96b8d03..18e0411398ba 100644
--- a/include/trace/events/nmi.h
+++ b/include/trace/events/nmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM nmi
diff --git a/include/trace/events/oom.h b/include/trace/events/oom.h
index c3c19d47ae5e..26a11e4a2c36 100644
--- a/include/trace/events/oom.h
+++ b/include/trace/events/oom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM oom
diff --git a/include/trace/events/page_isolation.h b/include/trace/events/page_isolation.h
index 8738a78e6bf4..bf4c42e8d6a4 100644
--- a/include/trace/events/page_isolation.h
+++ b/include/trace/events/page_isolation.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM page_isolation
diff --git a/include/trace/events/page_ref.h b/include/trace/events/page_ref.h
index 81001f8b0db4..5d2ea93956ce 100644
--- a/include/trace/events/page_ref.h
+++ b/include/trace/events/page_ref.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM page_ref
diff --git a/include/trace/events/pagemap.h b/include/trace/events/pagemap.h
index ce0803b8d05f..8fd1babae761 100644
--- a/include/trace/events/pagemap.h
+++ b/include/trace/events/pagemap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM pagemap
diff --git a/include/trace/events/percpu.h b/include/trace/events/percpu.h
index ad34b1bae047..df112a64f6c9 100644
--- a/include/trace/events/percpu.h
+++ b/include/trace/events/percpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM percpu
diff --git a/include/trace/events/power.h b/include/trace/events/power.h
index 54e3aad32806..908977d69783 100644
--- a/include/trace/events/power.h
+++ b/include/trace/events/power.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM power
diff --git a/include/trace/events/power_cpu_migrate.h b/include/trace/events/power_cpu_migrate.h
index f76dd4de625e..e338810639b4 100644
--- a/include/trace/events/power_cpu_migrate.h
+++ b/include/trace/events/power_cpu_migrate.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM power
diff --git a/include/trace/events/printk.h b/include/trace/events/printk.h
index f350170059c6..13d405b2fd8b 100644
--- a/include/trace/events/printk.h
+++ b/include/trace/events/printk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM printk
diff --git a/include/trace/events/random.h b/include/trace/events/random.h
index 4684de344c5d..0560dfc33f1c 100644
--- a/include/trace/events/random.h
+++ b/include/trace/events/random.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM random
diff --git a/include/trace/events/rcu.h b/include/trace/events/rcu.h
index e91ae1f2290d..59d40c454aa0 100644
--- a/include/trace/events/rcu.h
+++ b/include/trace/events/rcu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM rcu
diff --git a/include/trace/events/regulator.h b/include/trace/events/regulator.h
index 37502a7404b7..b70583c32c08 100644
--- a/include/trace/events/regulator.h
+++ b/include/trace/events/regulator.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM regulator
diff --git a/include/trace/events/rpm.h b/include/trace/events/rpm.h
index 33f85b68c22c..26927a560eab 100644
--- a/include/trace/events/rpm.h
+++ b/include/trace/events/rpm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM rpm
diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h
index ae1409ffe99a..da10aa21bebc 100644
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM sched
@@ -114,7 +115,10 @@ static inline long __trace_sched_switch_state(bool preempt, struct task_struct *
* Preemption ignores task state, therefore preempted tasks are always
* RUNNING (we will not have dequeued if state != RUNNING).
*/
- return preempt ? TASK_RUNNING | TASK_STATE_MAX : p->state;
+ if (preempt)
+ return TASK_STATE_MAX;
+
+ return __get_task_state(p);
}
#endif /* CREATE_TRACE_POINTS */
@@ -152,12 +156,14 @@ TRACE_EVENT(sched_switch,
TP_printk("prev_comm=%s prev_pid=%d prev_prio=%d prev_state=%s%s ==> next_comm=%s next_pid=%d next_prio=%d",
__entry->prev_comm, __entry->prev_pid, __entry->prev_prio,
- __entry->prev_state & (TASK_STATE_MAX-1) ?
- __print_flags(__entry->prev_state & (TASK_STATE_MAX-1), "|",
- { 1, "S"} , { 2, "D" }, { 4, "T" }, { 8, "t" },
- { 16, "Z" }, { 32, "X" }, { 64, "x" },
- { 128, "K" }, { 256, "W" }, { 512, "P" },
- { 1024, "N" }) : "R",
+
+ (__entry->prev_state & (TASK_REPORT_MAX - 1)) ?
+ __print_flags(__entry->prev_state & (TASK_REPORT_MAX - 1), "|",
+ { 0x01, "S" }, { 0x02, "D" }, { 0x04, "T" },
+ { 0x08, "t" }, { 0x10, "X" }, { 0x20, "Z" },
+ { 0x40, "P" }, { 0x80, "I" }) :
+ "R",
+
__entry->prev_state & TASK_STATE_MAX ? "+" : "",
__entry->next_comm, __entry->next_pid, __entry->next_prio)
);
diff --git a/include/trace/events/scsi.h b/include/trace/events/scsi.h
index 9a9b3e2550af..f624969a4f14 100644
--- a/include/trace/events/scsi.h
+++ b/include/trace/events/scsi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM scsi
diff --git a/include/trace/events/signal.h b/include/trace/events/signal.h
index 39a8a430d90f..86582923d51c 100644
--- a/include/trace/events/signal.h
+++ b/include/trace/events/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM signal
diff --git a/include/trace/events/skb.h b/include/trace/events/skb.h
index 0c68ae22da22..9e92f22eb086 100644
--- a/include/trace/events/skb.h
+++ b/include/trace/events/skb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM skb
diff --git a/include/trace/events/sock.h b/include/trace/events/sock.h
index 779abb91df81..6d31c0520ef3 100644
--- a/include/trace/events/sock.h
+++ b/include/trace/events/sock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM sock
diff --git a/include/trace/events/spi.h b/include/trace/events/spi.h
index f9f702b6ae2e..277bb9d25779 100644
--- a/include/trace/events/spi.h
+++ b/include/trace/events/spi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM spi
diff --git a/include/trace/events/spmi.h b/include/trace/events/spmi.h
index 62f005ef4c7e..8b60efe18ba6 100644
--- a/include/trace/events/spmi.h
+++ b/include/trace/events/spmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM spmi
diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h
index 8a707f8a41c3..25a7739514cd 100644
--- a/include/trace/events/sunrpc.h
+++ b/include/trace/events/sunrpc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM sunrpc
diff --git a/include/trace/events/sunvnet.h b/include/trace/events/sunvnet.h
index eb080b267e55..8d444f1bb10d 100644
--- a/include/trace/events/sunvnet.h
+++ b/include/trace/events/sunvnet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM sunvnet
diff --git a/include/trace/events/swiotlb.h b/include/trace/events/swiotlb.h
index 288c0c54a2b4..705be43b71ab 100644
--- a/include/trace/events/swiotlb.h
+++ b/include/trace/events/swiotlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM swiotlb
diff --git a/include/trace/events/syscalls.h b/include/trace/events/syscalls.h
index b35533b94277..44a3259ed4a5 100644
--- a/include/trace/events/syscalls.h
+++ b/include/trace/events/syscalls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM raw_syscalls
#undef TRACE_INCLUDE_FILE
diff --git a/include/trace/events/target.h b/include/trace/events/target.h
index 50fea660c0f8..914a872dd343 100644
--- a/include/trace/events/target.h
+++ b/include/trace/events/target.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM target
diff --git a/include/trace/events/task.h b/include/trace/events/task.h
index 2cca6cd342d8..64d160930b0d 100644
--- a/include/trace/events/task.h
+++ b/include/trace/events/task.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM task
diff --git a/include/trace/events/thermal.h b/include/trace/events/thermal.h
index 6cde5b3514c2..466c09d882ad 100644
--- a/include/trace/events/thermal.h
+++ b/include/trace/events/thermal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM thermal
diff --git a/include/trace/events/thermal_power_allocator.h b/include/trace/events/thermal_power_allocator.h
index 5afae8fe3795..1c8fb95544f9 100644
--- a/include/trace/events/thermal_power_allocator.h
+++ b/include/trace/events/thermal_power_allocator.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM thermal_power_allocator
diff --git a/include/trace/events/thp.h b/include/trace/events/thp.h
index b59b065e9e5d..d7fbbe551841 100644
--- a/include/trace/events/thp.h
+++ b/include/trace/events/thp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM thp
diff --git a/include/trace/events/timer.h b/include/trace/events/timer.h
index 80787eafba99..16e305e69f34 100644
--- a/include/trace/events/timer.h
+++ b/include/trace/events/timer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM timer
diff --git a/include/trace/events/tlb.h b/include/trace/events/tlb.h
index 9d14b1992108..b4d8e7dc38f8 100644
--- a/include/trace/events/tlb.h
+++ b/include/trace/events/tlb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM tlb
diff --git a/include/trace/events/udp.h b/include/trace/events/udp.h
index a664bb940973..336fe272889f 100644
--- a/include/trace/events/udp.h
+++ b/include/trace/events/udp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM udp
diff --git a/include/trace/events/v4l2.h b/include/trace/events/v4l2.h
index b3a85b3df53e..83860de120e3 100644
--- a/include/trace/events/v4l2.h
+++ b/include/trace/events/v4l2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM v4l2
diff --git a/include/trace/events/vb2.h b/include/trace/events/vb2.h
index c1a22416ed05..a40146dea83d 100644
--- a/include/trace/events/vb2.h
+++ b/include/trace/events/vb2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM vb2
diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h
index 27e8a5c77579..dc23cf032403 100644
--- a/include/trace/events/vmscan.h
+++ b/include/trace/events/vmscan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM vmscan
diff --git a/include/trace/events/vsock_virtio_transport_common.h b/include/trace/events/vsock_virtio_transport_common.h
index b7f1d6278280..6782213778be 100644
--- a/include/trace/events/vsock_virtio_transport_common.h
+++ b/include/trace/events/vsock_virtio_transport_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM vsock
diff --git a/include/trace/events/wbt.h b/include/trace/events/wbt.h
index 3c518e455680..b048694070e2 100644
--- a/include/trace/events/wbt.h
+++ b/include/trace/events/wbt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM wbt
diff --git a/include/trace/events/workqueue.h b/include/trace/events/workqueue.h
index bf0e18ba6cfb..2f057a494d93 100644
--- a/include/trace/events/workqueue.h
+++ b/include/trace/events/workqueue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM workqueue
diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
index 9b57f014d79d..2e1fa7910306 100644
--- a/include/trace/events/writeback.h
+++ b/include/trace/events/writeback.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM writeback
diff --git a/include/trace/events/xdp.h b/include/trace/events/xdp.h
index 862575ac8da9..810e94160c12 100644
--- a/include/trace/events/xdp.h
+++ b/include/trace/events/xdp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM xdp
@@ -138,11 +139,11 @@ DEFINE_EVENT_PRINT(xdp_redirect_template, xdp_redirect_map_err,
#define _trace_xdp_redirect_map(dev, xdp, fwd, map, idx) \
trace_xdp_redirect_map(dev, xdp, fwd ? fwd->ifindex : 0, \
- 0, map, idx);
+ 0, map, idx)
#define _trace_xdp_redirect_map_err(dev, xdp, fwd, map, idx, err) \
trace_xdp_redirect_map_err(dev, xdp, fwd ? fwd->ifindex : 0, \
- err, map, idx);
+ err, map, idx)
#endif /* _TRACE_XDP_H */
diff --git a/include/trace/events/xen.h b/include/trace/events/xen.h
index 1b4fed72f573..a7c8b452aab9 100644
--- a/include/trace/events/xen.h
+++ b/include/trace/events/xen.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM xen
diff --git a/include/trace/perf.h b/include/trace/perf.h
index 04fe68bbe767..e4b249821684 100644
--- a/include/trace/perf.h
+++ b/include/trace/perf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM_VAR
diff --git a/include/trace/syscall.h b/include/trace/syscall.h
index 7434f0f5d3f6..dc8ac27d27c1 100644
--- a/include/trace/syscall.h
+++ b/include/trace/syscall.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _TRACE_SYSCALL_H
#define _TRACE_SYSCALL_H
diff --git a/include/trace/trace_events.h b/include/trace/trace_events.h
index 3976fa1f6e42..bfda803b0a09 100644
--- a/include/trace/trace_events.h
+++ b/include/trace/trace_events.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* Stage 1 of the trace events.
*
diff --git a/include/uapi/asm-generic/bitsperlong.h b/include/uapi/asm-generic/bitsperlong.h
index 23e6c416b85f..693d9a40eb7b 100644
--- a/include/uapi/asm-generic/bitsperlong.h
+++ b/include/uapi/asm-generic/bitsperlong.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ASM_GENERIC_BITS_PER_LONG
#define _UAPI__ASM_GENERIC_BITS_PER_LONG
diff --git a/include/uapi/asm-generic/errno-base.h b/include/uapi/asm-generic/errno-base.h
index 65115978510f..9653140bff92 100644
--- a/include/uapi/asm-generic/errno-base.h
+++ b/include/uapi/asm-generic/errno-base.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_GENERIC_ERRNO_BASE_H
#define _ASM_GENERIC_ERRNO_BASE_H
diff --git a/include/uapi/asm-generic/errno.h b/include/uapi/asm-generic/errno.h
index 88e0914cf2d9..cf9c51ac49f9 100644
--- a/include/uapi/asm-generic/errno.h
+++ b/include/uapi/asm-generic/errno.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_GENERIC_ERRNO_H
#define _ASM_GENERIC_ERRNO_H
diff --git a/include/uapi/asm-generic/fcntl.h b/include/uapi/asm-generic/fcntl.h
index e063effe0cc1..9dc0bf0c5a6e 100644
--- a/include/uapi/asm-generic/fcntl.h
+++ b/include/uapi/asm-generic/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_GENERIC_FCNTL_H
#define _ASM_GENERIC_FCNTL_H
diff --git a/include/uapi/asm-generic/int-l64.h b/include/uapi/asm-generic/int-l64.h
index 978f21cae2f4..ed8bcd99c34d 100644
--- a/include/uapi/asm-generic/int-l64.h
+++ b/include/uapi/asm-generic/int-l64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* asm-generic/int-l64.h
*
diff --git a/include/uapi/asm-generic/int-ll64.h b/include/uapi/asm-generic/int-ll64.h
index a8658b2423ba..1ed06964257c 100644
--- a/include/uapi/asm-generic/int-ll64.h
+++ b/include/uapi/asm-generic/int-ll64.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* asm-generic/int-ll64.h
*
diff --git a/include/uapi/asm-generic/ioctl.h b/include/uapi/asm-generic/ioctl.h
index 749b32fe5623..a84f4db8a250 100644
--- a/include/uapi/asm-generic/ioctl.h
+++ b/include/uapi/asm-generic/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_GENERIC_IOCTL_H
#define _UAPI_ASM_GENERIC_IOCTL_H
diff --git a/include/uapi/asm-generic/ioctls.h b/include/uapi/asm-generic/ioctls.h
index 14baf9f23a14..040651735662 100644
--- a/include/uapi/asm-generic/ioctls.h
+++ b/include/uapi/asm-generic/ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_IOCTLS_H
#define __ASM_GENERIC_IOCTLS_H
diff --git a/include/uapi/asm-generic/ipcbuf.h b/include/uapi/asm-generic/ipcbuf.h
index 3dbcc1e771c0..7d80dbd336fb 100644
--- a/include/uapi/asm-generic/ipcbuf.h
+++ b/include/uapi/asm-generic/ipcbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_IPCBUF_H
#define __ASM_GENERIC_IPCBUF_H
diff --git a/include/uapi/asm-generic/mman-common.h b/include/uapi/asm-generic/mman-common.h
index 203268f9231e..6d319c46fd90 100644
--- a/include/uapi/asm-generic/mman-common.h
+++ b/include/uapi/asm-generic/mman-common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_MMAN_COMMON_H
#define __ASM_GENERIC_MMAN_COMMON_H
diff --git a/include/uapi/asm-generic/mman.h b/include/uapi/asm-generic/mman.h
index 7162cd4cca73..2dffcbf705b3 100644
--- a/include/uapi/asm-generic/mman.h
+++ b/include/uapi/asm-generic/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_MMAN_H
#define __ASM_GENERIC_MMAN_H
diff --git a/include/uapi/asm-generic/msgbuf.h b/include/uapi/asm-generic/msgbuf.h
index f55ecc43c60f..fb306ebdb36f 100644
--- a/include/uapi/asm-generic/msgbuf.h
+++ b/include/uapi/asm-generic/msgbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_MSGBUF_H
#define __ASM_GENERIC_MSGBUF_H
diff --git a/include/uapi/asm-generic/param.h b/include/uapi/asm-generic/param.h
index 5becc84396b8..baad02ea7f93 100644
--- a/include/uapi/asm-generic/param.h
+++ b/include/uapi/asm-generic/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ASM_GENERIC_PARAM_H
#define _UAPI__ASM_GENERIC_PARAM_H
diff --git a/include/uapi/asm-generic/poll.h b/include/uapi/asm-generic/poll.h
index a9694982689f..fefb3d2c3fac 100644
--- a/include/uapi/asm-generic/poll.h
+++ b/include/uapi/asm-generic/poll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_POLL_H
#define __ASM_GENERIC_POLL_H
diff --git a/include/uapi/asm-generic/posix_types.h b/include/uapi/asm-generic/posix_types.h
index fe74fccf18db..5e6ea22bd525 100644
--- a/include/uapi/asm-generic/posix_types.h
+++ b/include/uapi/asm-generic/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_POSIX_TYPES_H
#define __ASM_GENERIC_POSIX_TYPES_H
diff --git a/include/uapi/asm-generic/resource.h b/include/uapi/asm-generic/resource.h
index c6d10af50123..f12db7a0da64 100644
--- a/include/uapi/asm-generic/resource.h
+++ b/include/uapi/asm-generic/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_GENERIC_RESOURCE_H
#define _UAPI_ASM_GENERIC_RESOURCE_H
diff --git a/include/uapi/asm-generic/sembuf.h b/include/uapi/asm-generic/sembuf.h
index 4cb2c13e5090..cbf9cfe977d6 100644
--- a/include/uapi/asm-generic/sembuf.h
+++ b/include/uapi/asm-generic/sembuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_SEMBUF_H
#define __ASM_GENERIC_SEMBUF_H
diff --git a/include/uapi/asm-generic/setup.h b/include/uapi/asm-generic/setup.h
index 6fc26a51003c..88ac5100df35 100644
--- a/include/uapi/asm-generic/setup.h
+++ b/include/uapi/asm-generic/setup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_SETUP_H
#define __ASM_GENERIC_SETUP_H
diff --git a/include/uapi/asm-generic/shmbuf.h b/include/uapi/asm-generic/shmbuf.h
index 7e9fb2f0853b..2b6c3bb97f97 100644
--- a/include/uapi/asm-generic/shmbuf.h
+++ b/include/uapi/asm-generic/shmbuf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_SHMBUF_H
#define __ASM_GENERIC_SHMBUF_H
diff --git a/include/uapi/asm-generic/shmparam.h b/include/uapi/asm-generic/shmparam.h
index 51a3852de733..8b78c0ba08b1 100644
--- a/include/uapi/asm-generic/shmparam.h
+++ b/include/uapi/asm-generic/shmparam.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_SHMPARAM_H
#define __ASM_GENERIC_SHMPARAM_H
diff --git a/include/uapi/asm-generic/siginfo.h b/include/uapi/asm-generic/siginfo.h
index e5aa6794cea4..e447283b8f52 100644
--- a/include/uapi/asm-generic/siginfo.h
+++ b/include/uapi/asm-generic/siginfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_GENERIC_SIGINFO_H
#define _UAPI_ASM_GENERIC_SIGINFO_H
diff --git a/include/uapi/asm-generic/signal-defs.h b/include/uapi/asm-generic/signal-defs.h
index 00f95df54297..e9304c95ceea 100644
--- a/include/uapi/asm-generic/signal-defs.h
+++ b/include/uapi/asm-generic/signal-defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_SIGNAL_DEFS_H
#define __ASM_GENERIC_SIGNAL_DEFS_H
diff --git a/include/uapi/asm-generic/signal.h b/include/uapi/asm-generic/signal.h
index 3094618d382f..5c716a952cbe 100644
--- a/include/uapi/asm-generic/signal.h
+++ b/include/uapi/asm-generic/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__ASM_GENERIC_SIGNAL_H
#define _UAPI__ASM_GENERIC_SIGNAL_H
diff --git a/include/uapi/asm-generic/socket.h b/include/uapi/asm-generic/socket.h
index e47c9e436221..0ae758c90e54 100644
--- a/include/uapi/asm-generic/socket.h
+++ b/include/uapi/asm-generic/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_SOCKET_H
#define __ASM_GENERIC_SOCKET_H
diff --git a/include/uapi/asm-generic/sockios.h b/include/uapi/asm-generic/sockios.h
index 9a61a369b901..64f658c7cec2 100644
--- a/include/uapi/asm-generic/sockios.h
+++ b/include/uapi/asm-generic/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_SOCKIOS_H
#define __ASM_GENERIC_SOCKIOS_H
diff --git a/include/uapi/asm-generic/stat.h b/include/uapi/asm-generic/stat.h
index bd8cad21998e..0d962ecd1663 100644
--- a/include/uapi/asm-generic/stat.h
+++ b/include/uapi/asm-generic/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_STAT_H
#define __ASM_GENERIC_STAT_H
diff --git a/include/uapi/asm-generic/statfs.h b/include/uapi/asm-generic/statfs.h
index cb89cc730f0b..bd35c7619ca2 100644
--- a/include/uapi/asm-generic/statfs.h
+++ b/include/uapi/asm-generic/statfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_GENERIC_STATFS_H
#define _UAPI_GENERIC_STATFS_H
diff --git a/include/uapi/asm-generic/swab.h b/include/uapi/asm-generic/swab.h
index a8e9029d9eba..f2da4e4fd4d1 100644
--- a/include/uapi/asm-generic/swab.h
+++ b/include/uapi/asm-generic/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_GENERIC_SWAB_H
#define _ASM_GENERIC_SWAB_H
diff --git a/include/uapi/asm-generic/termbits.h b/include/uapi/asm-generic/termbits.h
index 232b4781aef3..2fbaf9ae89dd 100644
--- a/include/uapi/asm-generic/termbits.h
+++ b/include/uapi/asm-generic/termbits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_TERMBITS_H
#define __ASM_GENERIC_TERMBITS_H
diff --git a/include/uapi/asm-generic/termios.h b/include/uapi/asm-generic/termios.h
index 088176062133..cf892933a363 100644
--- a/include/uapi/asm-generic/termios.h
+++ b/include/uapi/asm-generic/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_GENERIC_TERMIOS_H
#define _UAPI_ASM_GENERIC_TERMIOS_H
/*
diff --git a/include/uapi/asm-generic/types.h b/include/uapi/asm-generic/types.h
index a3877926b0d4..dfaa50d99d8f 100644
--- a/include/uapi/asm-generic/types.h
+++ b/include/uapi/asm-generic/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_GENERIC_TYPES_H
#define _ASM_GENERIC_TYPES_H
/*
diff --git a/include/uapi/asm-generic/ucontext.h b/include/uapi/asm-generic/ucontext.h
index ad77343e8a9a..351868a72168 100644
--- a/include/uapi/asm-generic/ucontext.h
+++ b/include/uapi/asm-generic/ucontext.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_UCONTEXT_H
#define __ASM_GENERIC_UCONTEXT_H
diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
index 061185a5eb51..8b87de067bc7 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <asm/bitsperlong.h>
/*
diff --git a/include/uapi/drm/armada_drm.h b/include/uapi/drm/armada_drm.h
index 0cb932416cfe..af1c14c837c5 100644
--- a/include/uapi/drm/armada_drm.h
+++ b/include/uapi/drm/armada_drm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2012 Russell King
* With inspiration from the i915 driver
diff --git a/include/uapi/drm/etnaviv_drm.h b/include/uapi/drm/etnaviv_drm.h
index 76f6f78a352b..d4463f3fa427 100644
--- a/include/uapi/drm/etnaviv_drm.h
+++ b/include/uapi/drm/etnaviv_drm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2015 Etnaviv Project
*
diff --git a/include/uapi/drm/exynos_drm.h b/include/uapi/drm/exynos_drm.h
index cb3e9f9d029f..d01087b2a651 100644
--- a/include/uapi/drm/exynos_drm.h
+++ b/include/uapi/drm/exynos_drm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* exynos_drm.h
*
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
diff --git a/include/uapi/drm/i810_drm.h b/include/uapi/drm/i810_drm.h
index 6e6cf86b75b0..d285d5e72e6a 100644
--- a/include/uapi/drm/i810_drm.h
+++ b/include/uapi/drm/i810_drm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _I810_DRM_H_
#define _I810_DRM_H_
diff --git a/include/uapi/drm/omap_drm.h b/include/uapi/drm/omap_drm.h
index fd5e3ea53f2b..1fccffef9e27 100644
--- a/include/uapi/drm/omap_drm.h
+++ b/include/uapi/drm/omap_drm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/uapi/drm/omap_drm.h
*
diff --git a/include/uapi/linux/a.out.h b/include/uapi/linux/a.out.h
index 295cd3ef6330..5fafde3798e5 100644
--- a/include/uapi/linux/a.out.h
+++ b/include/uapi/linux/a.out.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__A_OUT_GNU_H__
#define _UAPI__A_OUT_GNU_H__
diff --git a/include/uapi/linux/acct.h b/include/uapi/linux/acct.h
index df2f9a0bba6a..0e72172cd23a 100644
--- a/include/uapi/linux/acct.h
+++ b/include/uapi/linux/acct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* BSD Process Accounting for Linux - Definitions
*
diff --git a/include/uapi/linux/adb.h b/include/uapi/linux/adb.h
index 0ea1075fc4a0..12b6db148ea9 100644
--- a/include/uapi/linux/adb.h
+++ b/include/uapi/linux/adb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Definitions for ADB (Apple Desktop Bus) support.
*/
diff --git a/include/uapi/linux/adfs_fs.h b/include/uapi/linux/adfs_fs.h
index a1bf43754ddd..151d93e27ed4 100644
--- a/include/uapi/linux/adfs_fs.h
+++ b/include/uapi/linux/adfs_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ADFS_FS_H
#define _UAPI_ADFS_FS_H
diff --git a/include/uapi/linux/affs_hardblocks.h b/include/uapi/linux/affs_hardblocks.h
index f1b948c1f592..5e2fb8481252 100644
--- a/include/uapi/linux/affs_hardblocks.h
+++ b/include/uapi/linux/affs_hardblocks.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef AFFS_HARDBLOCKS_H
#define AFFS_HARDBLOCKS_H
diff --git a/include/uapi/linux/am437x-vpfe.h b/include/uapi/linux/am437x-vpfe.h
index d75774317b9b..beae3521ca91 100644
--- a/include/uapi/linux/am437x-vpfe.h
+++ b/include/uapi/linux/am437x-vpfe.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2013 - 2014 Texas Instruments, Inc.
*
diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h
index 84a9a0944e13..bfaec6903b8b 100644
--- a/include/uapi/linux/android/binder.h
+++ b/include/uapi/linux/android/binder.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2008 Google, Inc.
*
diff --git a/include/uapi/linux/apm_bios.h b/include/uapi/linux/apm_bios.h
index df79bca1b898..37ee11dba94c 100644
--- a/include/uapi/linux/apm_bios.h
+++ b/include/uapi/linux/apm_bios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Include file for the interface to an APM BIOS
* Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au)
diff --git a/include/uapi/linux/arcfb.h b/include/uapi/linux/arcfb.h
index 721e7654daeb..7a9008b365df 100644
--- a/include/uapi/linux/arcfb.h
+++ b/include/uapi/linux/arcfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_ARCFB_H__
#define __LINUX_ARCFB_H__
diff --git a/include/uapi/linux/aspeed-lpc-ctrl.h b/include/uapi/linux/aspeed-lpc-ctrl.h
index c328c976c684..53abffcde3c6 100644
--- a/include/uapi/linux/aspeed-lpc-ctrl.h
+++ b/include/uapi/linux/aspeed-lpc-ctrl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2017 IBM Corp.
*
diff --git a/include/uapi/linux/atalk.h b/include/uapi/linux/atalk.h
index 4bcd596e6388..8b96460b46b1 100644
--- a/include/uapi/linux/atalk.h
+++ b/include/uapi/linux/atalk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_ATALK_H__
#define _UAPI__LINUX_ATALK_H__
diff --git a/include/uapi/linux/atm.h b/include/uapi/linux/atm.h
index 88399db602ac..95ebdcf4fe88 100644
--- a/include/uapi/linux/atm.h
+++ b/include/uapi/linux/atm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atm.h - general ATM declarations */
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/include/uapi/linux/atm_eni.h b/include/uapi/linux/atm_eni.h
index 34f317972551..cf5bfd1a2691 100644
--- a/include/uapi/linux/atm_eni.h
+++ b/include/uapi/linux/atm_eni.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atm_eni.h - Driver-specific declarations of the ENI driver (for use by
driver-specific utilities) */
diff --git a/include/uapi/linux/atm_he.h b/include/uapi/linux/atm_he.h
index 2a7713b597cf..9f4b43293988 100644
--- a/include/uapi/linux/atm_he.h
+++ b/include/uapi/linux/atm_he.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atm_he.h */
#ifndef LINUX_ATM_HE_H
diff --git a/include/uapi/linux/atm_idt77105.h b/include/uapi/linux/atm_idt77105.h
index 8b724000aa50..f0fd6912a14b 100644
--- a/include/uapi/linux/atm_idt77105.h
+++ b/include/uapi/linux/atm_idt77105.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atm_idt77105.h - Driver-specific declarations of the IDT77105 driver (for
* use by driver-specific utilities) */
diff --git a/include/uapi/linux/atm_nicstar.h b/include/uapi/linux/atm_nicstar.h
index 577b79f33e8d..880d368b5b9a 100644
--- a/include/uapi/linux/atm_nicstar.h
+++ b/include/uapi/linux/atm_nicstar.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/******************************************************************************
*
* atm_nicstar.h
diff --git a/include/uapi/linux/atm_tcp.h b/include/uapi/linux/atm_tcp.h
index 914e821da64d..7309e1bc8867 100644
--- a/include/uapi/linux/atm_tcp.h
+++ b/include/uapi/linux/atm_tcp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atm_tcp.h - Driver-specific declarations of the ATMTCP driver (for use by
driver-specific utilities) */
diff --git a/include/uapi/linux/atm_zatm.h b/include/uapi/linux/atm_zatm.h
index 9c9c6ad55f14..5135027b93c1 100644
--- a/include/uapi/linux/atm_zatm.h
+++ b/include/uapi/linux/atm_zatm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atm_zatm.h - Driver-specific declarations of the ZATM driver (for use by
driver-specific utilities) */
diff --git a/include/uapi/linux/atmapi.h b/include/uapi/linux/atmapi.h
index 8fe54d90d95b..c9bf5c23a71f 100644
--- a/include/uapi/linux/atmapi.h
+++ b/include/uapi/linux/atmapi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atmapi.h - ATM API user space/kernel compatibility */
/* Written 1999,2000 by Werner Almesberger, EPFL ICA */
diff --git a/include/uapi/linux/atmarp.h b/include/uapi/linux/atmarp.h
index 231f4bdec730..8e44d121fde1 100644
--- a/include/uapi/linux/atmarp.h
+++ b/include/uapi/linux/atmarp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atmarp.h - ATM ARP protocol and kernel-demon interface definitions */
/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/include/uapi/linux/atmbr2684.h b/include/uapi/linux/atmbr2684.h
index fdb2629b6189..a9e2250cd720 100644
--- a/include/uapi/linux/atmbr2684.h
+++ b/include/uapi/linux/atmbr2684.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_ATMBR2684_H
#define _LINUX_ATMBR2684_H
diff --git a/include/uapi/linux/atmclip.h b/include/uapi/linux/atmclip.h
index 02c94c448dd6..c818bb82b4e6 100644
--- a/include/uapi/linux/atmclip.h
+++ b/include/uapi/linux/atmclip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atmclip.h - Classical IP over ATM */
/* Written 1995-1998 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/include/uapi/linux/atmdev.h b/include/uapi/linux/atmdev.h
index 93e0ec008ca8..a5c15cf23bd7 100644
--- a/include/uapi/linux/atmdev.h
+++ b/include/uapi/linux/atmdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atmdev.h - ATM device driver declarations and various related items */
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/include/uapi/linux/atmioc.h b/include/uapi/linux/atmioc.h
index 37f67aa8f1c1..cd7655e40c77 100644
--- a/include/uapi/linux/atmioc.h
+++ b/include/uapi/linux/atmioc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atmioc.h - ranges for ATM-related ioctl numbers */
/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/include/uapi/linux/atmlec.h b/include/uapi/linux/atmlec.h
index 302791e3ab2b..c68346bb40e6 100644
--- a/include/uapi/linux/atmlec.h
+++ b/include/uapi/linux/atmlec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ATM Lan Emulation Daemon driver interface
*
diff --git a/include/uapi/linux/atmmpc.h b/include/uapi/linux/atmmpc.h
index 2aba5787fa63..cc17f4304839 100644
--- a/include/uapi/linux/atmmpc.h
+++ b/include/uapi/linux/atmmpc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ATMMPC_H_
#define _ATMMPC_H_
diff --git a/include/uapi/linux/atmppp.h b/include/uapi/linux/atmppp.h
index 300dcce0c83f..504b9989675b 100644
--- a/include/uapi/linux/atmppp.h
+++ b/include/uapi/linux/atmppp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atmppp.h - RFC2364 PPPoATM */
/* Written 2000 by Mitchell Blank Jr */
diff --git a/include/uapi/linux/atmsap.h b/include/uapi/linux/atmsap.h
index 799b104515d7..fc052481eae0 100644
--- a/include/uapi/linux/atmsap.h
+++ b/include/uapi/linux/atmsap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atmsap.h - ATM Service Access Point addressing definitions */
/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/include/uapi/linux/atmsvc.h b/include/uapi/linux/atmsvc.h
index aa71583b8da7..137b5f853449 100644
--- a/include/uapi/linux/atmsvc.h
+++ b/include/uapi/linux/atmsvc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* atmsvc.h - ATM signaling kernel-demon interface definitions */
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/include/uapi/linux/audit.h b/include/uapi/linux/audit.h
index 0714a66f0e0c..7668582db6ba 100644
--- a/include/uapi/linux/audit.h
+++ b/include/uapi/linux/audit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* audit.h -- Auditing support
*
* Copyright 2003-2004 Red Hat Inc., Durham, North Carolina.
diff --git a/include/uapi/linux/auto_dev-ioctl.h b/include/uapi/linux/auto_dev-ioctl.h
index 5558db8e6646..374742651c30 100644
--- a/include/uapi/linux/auto_dev-ioctl.h
+++ b/include/uapi/linux/auto_dev-ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2008 Red Hat, Inc. All rights reserved.
* Copyright 2008 Ian Kent <raven@themaw.net>
diff --git a/include/uapi/linux/auto_fs.h b/include/uapi/linux/auto_fs.h
index aa63451ef20a..2a4432c7a4b4 100644
--- a/include/uapi/linux/auto_fs.h
+++ b/include/uapi/linux/auto_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 1997 Transmeta Corporation - All Rights Reserved
*
diff --git a/include/uapi/linux/auto_fs4.h b/include/uapi/linux/auto_fs4.h
index 9453e9a07c9d..1f608e27a06f 100644
--- a/include/uapi/linux/auto_fs4.h
+++ b/include/uapi/linux/auto_fs4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
*
diff --git a/include/uapi/linux/auxvec.h b/include/uapi/linux/auxvec.h
index 835c065cc7e1..abe5f2b6581b 100644
--- a/include/uapi/linux/auxvec.h
+++ b/include/uapi/linux/auxvec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_AUXVEC_H
#define _UAPI_LINUX_AUXVEC_H
diff --git a/include/uapi/linux/ax25.h b/include/uapi/linux/ax25.h
index 74c89a41732d..b496b9d8452f 100644
--- a/include/uapi/linux/ax25.h
+++ b/include/uapi/linux/ax25.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* These are the public elements of the Linux kernel AX.25 code. A similar
* file netrom.h exists for the NET/ROM protocol.
diff --git a/include/uapi/linux/b1lli.h b/include/uapi/linux/b1lli.h
index 713f712685d3..4ae6ac9950df 100644
--- a/include/uapi/linux/b1lli.h
+++ b/include/uapi/linux/b1lli.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Id: b1lli.h,v 1.8.8.3 2001/09/23 22:25:05 kai Exp $
*
* ISDN lowlevel-module for AVM B1-card.
diff --git a/include/uapi/linux/baycom.h b/include/uapi/linux/baycom.h
index 81249e029dad..478cb565ae52 100644
--- a/include/uapi/linux/baycom.h
+++ b/include/uapi/linux/baycom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* The Linux BAYCOM driver for the Baycom serial 1200 baud modem
* and the parallel 9600 baud modem
diff --git a/include/uapi/linux/bcache.h b/include/uapi/linux/bcache.h
index e3bb0635e94a..90fc490f973f 100644
--- a/include/uapi/linux/bcache.h
+++ b/include/uapi/linux/bcache.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_BCACHE_H
#define _LINUX_BCACHE_H
diff --git a/include/uapi/linux/bcm933xx_hcs.h b/include/uapi/linux/bcm933xx_hcs.h
index d22821831549..f9fccf3c3654 100644
--- a/include/uapi/linux/bcm933xx_hcs.h
+++ b/include/uapi/linux/bcm933xx_hcs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Broadcom Cable Modem firmware format
*/
diff --git a/include/uapi/linux/bfs_fs.h b/include/uapi/linux/bfs_fs.h
index 1c0b355aa515..73445ef07dda 100644
--- a/include/uapi/linux/bfs_fs.h
+++ b/include/uapi/linux/bfs_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/linux/bfs_fs.h - BFS data structures on disk.
* Copyright (C) 1999 Tigran Aivazian <tigran@veritas.com>
diff --git a/include/uapi/linux/binfmts.h b/include/uapi/linux/binfmts.h
index 4eb5972867c0..4abad03a8853 100644
--- a/include/uapi/linux/binfmts.h
+++ b/include/uapi/linux/binfmts.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_BINFMTS_H
#define _UAPI_LINUX_BINFMTS_H
diff --git a/include/uapi/linux/blkpg.h b/include/uapi/linux/blkpg.h
index 63739a035085..ac6474e4f29d 100644
--- a/include/uapi/linux/blkpg.h
+++ b/include/uapi/linux/blkpg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_BLKPG_H
#define _UAPI__LINUX_BLKPG_H
diff --git a/include/uapi/linux/blktrace_api.h b/include/uapi/linux/blktrace_api.h
index 9cdaedeadb84..20d1490d6377 100644
--- a/include/uapi/linux/blktrace_api.h
+++ b/include/uapi/linux/blktrace_api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPIBLKTRACE_H
#define _UAPIBLKTRACE_H
diff --git a/include/uapi/linux/blkzoned.h b/include/uapi/linux/blkzoned.h
index 40d1d7bff537..e3c70fe6bf0f 100644
--- a/include/uapi/linux/blkzoned.h
+++ b/include/uapi/linux/blkzoned.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Zoned block devices handling.
*
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 43ab5c402f98..30f2ce76b517 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com
*
* This program is free software; you can redistribute it and/or
@@ -312,7 +313,7 @@ union bpf_attr {
* jump into another BPF program
* @ctx: context pointer passed to next program
* @prog_array_map: pointer to map which type is BPF_MAP_TYPE_PROG_ARRAY
- * @index: index inside array that selects specific program to run
+ * @index: 32-bit index inside array that selects specific program to run
* Return: 0 on success or negative error
*
* int bpf_clone_redirect(skb, ifindex, flags)
@@ -575,7 +576,7 @@ union bpf_attr {
* @map: pointer to sockmap
* @key: key to lookup sock in map
* @flags: reserved for future use
- * Return: SK_REDIRECT
+ * Return: SK_PASS
*
* int bpf_sock_map_update(skops, map, key, flags)
* @skops: pointer to bpf_sock_ops
@@ -786,9 +787,8 @@ struct xdp_md {
};
enum sk_action {
- SK_ABORTED = 0,
- SK_DROP,
- SK_REDIRECT,
+ SK_DROP = 0,
+ SK_PASS,
};
#define BPF_TAG_SIZE 8
diff --git a/include/uapi/linux/bpf_common.h b/include/uapi/linux/bpf_common.h
index a5c220e0828f..18be90725ab0 100644
--- a/include/uapi/linux/bpf_common.h
+++ b/include/uapi/linux/bpf_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_BPF_COMMON_H__
#define _UAPI__LINUX_BPF_COMMON_H__
diff --git a/include/uapi/linux/bpf_perf_event.h b/include/uapi/linux/bpf_perf_event.h
index 067427259820..af549d4ecf1b 100644
--- a/include/uapi/linux/bpf_perf_event.h
+++ b/include/uapi/linux/bpf_perf_event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* Copyright (c) 2016 Facebook
*
* This program is free software; you can redistribute it and/or
diff --git a/include/uapi/linux/bpqether.h b/include/uapi/linux/bpqether.h
index 05865edaefda..d1d63e2acdeb 100644
--- a/include/uapi/linux/bpqether.h
+++ b/include/uapi/linux/bpqether.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __BPQETHER_H
#define __BPQETHER_H
diff --git a/include/uapi/linux/bsg.h b/include/uapi/linux/bsg.h
index 02986cf8b6f1..cd6302def5ed 100644
--- a/include/uapi/linux/bsg.h
+++ b/include/uapi/linux/bsg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPIBSG_H
#define _UAPIBSG_H
diff --git a/include/uapi/linux/bt-bmc.h b/include/uapi/linux/bt-bmc.h
index d9ec766a63d0..2ffdccfccc1d 100644
--- a/include/uapi/linux/bt-bmc.h
+++ b/include/uapi/linux/bt-bmc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) 2015-2016, IBM Corporation.
*
diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h
index 9aa74f317747..6cdfd12cd14c 100644
--- a/include/uapi/linux/btrfs.h
+++ b/include/uapi/linux/btrfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2007 Oracle. All rights reserved.
*
@@ -255,13 +256,7 @@ struct btrfs_ioctl_fs_info_args {
#define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
#define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
#define BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO (1ULL << 3)
-/*
- * some patches floated around with a second compression method
- * lets save that incompat here for when they do get in
- * Note we don't actually support it, we're just reserving the
- * number
- */
-#define BTRFS_FEATURE_INCOMPAT_COMPRESS_LZOv2 (1ULL << 4)
+#define BTRFS_FEATURE_INCOMPAT_COMPRESS_ZSTD (1ULL << 4)
/*
* older kernels tried to do bigger metadata blocks, but the
diff --git a/include/uapi/linux/btrfs_tree.h b/include/uapi/linux/btrfs_tree.h
index 10689e1fdf11..8f659bb7badc 100644
--- a/include/uapi/linux/btrfs_tree.h
+++ b/include/uapi/linux/btrfs_tree.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _BTRFS_CTREE_H_
#define _BTRFS_CTREE_H_
diff --git a/include/uapi/linux/byteorder/big_endian.h b/include/uapi/linux/byteorder/big_endian.h
index cdab17ab907c..2199adc6a6c2 100644
--- a/include/uapi/linux/byteorder/big_endian.h
+++ b/include/uapi/linux/byteorder/big_endian.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_BYTEORDER_BIG_ENDIAN_H
#define _UAPI_LINUX_BYTEORDER_BIG_ENDIAN_H
diff --git a/include/uapi/linux/byteorder/little_endian.h b/include/uapi/linux/byteorder/little_endian.h
index 4b93f2b260dd..601c904fd5cd 100644
--- a/include/uapi/linux/byteorder/little_endian.h
+++ b/include/uapi/linux/byteorder/little_endian.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_BYTEORDER_LITTLE_ENDIAN_H
#define _UAPI_LINUX_BYTEORDER_LITTLE_ENDIAN_H
diff --git a/include/uapi/linux/caif/caif_socket.h b/include/uapi/linux/caif/caif_socket.h
index 586e9f98184f..10ec1d1cf68e 100644
--- a/include/uapi/linux/caif/caif_socket.h
+++ b/include/uapi/linux/caif/caif_socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* linux/caif_socket.h
* CAIF Definitions for CAIF socket and network layer
* Copyright (C) ST-Ericsson AB 2010
diff --git a/include/uapi/linux/caif/if_caif.h b/include/uapi/linux/caif/if_caif.h
index 7618aabe8c6b..74bca19403fa 100644
--- a/include/uapi/linux/caif/if_caif.h
+++ b/include/uapi/linux/caif/if_caif.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) ST-Ericsson AB 2010
* Author: Sjur Brendeland
diff --git a/include/uapi/linux/can.h b/include/uapi/linux/can.h
index c48d93a28d1a..d7f97ac197a9 100644
--- a/include/uapi/linux/can.h
+++ b/include/uapi/linux/can.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* linux/can.h
*
diff --git a/include/uapi/linux/can/bcm.h b/include/uapi/linux/can/bcm.h
index cefb304414ba..0fb328d93148 100644
--- a/include/uapi/linux/can/bcm.h
+++ b/include/uapi/linux/can/bcm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* linux/can/bcm.h
*
diff --git a/include/uapi/linux/can/error.h b/include/uapi/linux/can/error.h
index 1c508be9687f..bfc4b5d22a5e 100644
--- a/include/uapi/linux/can/error.h
+++ b/include/uapi/linux/can/error.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* linux/can/error.h
*
diff --git a/include/uapi/linux/can/gw.h b/include/uapi/linux/can/gw.h
index 5079b9d57e31..7bee7a0b9800 100644
--- a/include/uapi/linux/can/gw.h
+++ b/include/uapi/linux/can/gw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* linux/can/gw.h
*
diff --git a/include/uapi/linux/can/netlink.h b/include/uapi/linux/can/netlink.h
index fdf75f74fdaf..96710e76d5ce 100644
--- a/include/uapi/linux/can/netlink.h
+++ b/include/uapi/linux/can/netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/can/netlink.h
*
diff --git a/include/uapi/linux/can/raw.h b/include/uapi/linux/can/raw.h
index 8735f1080385..be3b36e7ff61 100644
--- a/include/uapi/linux/can/raw.h
+++ b/include/uapi/linux/can/raw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* linux/can/raw.h
*
diff --git a/include/uapi/linux/can/vxcan.h b/include/uapi/linux/can/vxcan.h
index ffb0b7156f7e..066812d118a2 100644
--- a/include/uapi/linux/can/vxcan.h
+++ b/include/uapi/linux/can/vxcan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_CAN_VXCAN_H
#define _UAPI_CAN_VXCAN_H
diff --git a/include/uapi/linux/capability.h b/include/uapi/linux/capability.h
index 230e05d35191..240fdb9a60f6 100644
--- a/include/uapi/linux/capability.h
+++ b/include/uapi/linux/capability.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This is <linux/capability.h>
*
diff --git a/include/uapi/linux/capi.h b/include/uapi/linux/capi.h
index 7b145fd7afb6..31f946f8a88d 100644
--- a/include/uapi/linux/capi.h
+++ b/include/uapi/linux/capi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Id: capi.h,v 1.4.6.1 2001/09/23 22:25:05 kai Exp $
*
* CAPI 2.0 Interface for Linux
diff --git a/include/uapi/linux/cciss_defs.h b/include/uapi/linux/cciss_defs.h
index 316b670d4e33..5cbdfe993365 100644
--- a/include/uapi/linux/cciss_defs.h
+++ b/include/uapi/linux/cciss_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef CCISS_DEFS_H
#define CCISS_DEFS_H
diff --git a/include/uapi/linux/cciss_ioctl.h b/include/uapi/linux/cciss_ioctl.h
index bb0b9ddf7eeb..562230199461 100644
--- a/include/uapi/linux/cciss_ioctl.h
+++ b/include/uapi/linux/cciss_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPICCISS_IOCTLH
#define _UAPICCISS_IOCTLH
diff --git a/include/uapi/linux/cdrom.h b/include/uapi/linux/cdrom.h
index bd17ad5aa06d..2817230148fd 100644
--- a/include/uapi/linux/cdrom.h
+++ b/include/uapi/linux/cdrom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* -- <linux/cdrom.h>
* General header file for linux CD-ROM drivers
diff --git a/include/uapi/linux/cec-funcs.h b/include/uapi/linux/cec-funcs.h
index 270b251a3d9b..28e8a2a86e16 100644
--- a/include/uapi/linux/cec-funcs.h
+++ b/include/uapi/linux/cec-funcs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* cec - HDMI Consumer Electronics Control message functions
*
diff --git a/include/uapi/linux/cec.h b/include/uapi/linux/cec.h
index 4351c3481aea..c3114c989e91 100644
--- a/include/uapi/linux/cec.h
+++ b/include/uapi/linux/cec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* cec - HDMI Consumer Electronics Control public header
*
diff --git a/include/uapi/linux/cgroupstats.h b/include/uapi/linux/cgroupstats.h
index 3753c33160d1..aa306e4cd6c1 100644
--- a/include/uapi/linux/cgroupstats.h
+++ b/include/uapi/linux/cgroupstats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1 WITH Linux-syscall-note */
/* cgroupstats.h - exporting per-cgroup statistics
*
* Copyright IBM Corporation, 2007
diff --git a/include/uapi/linux/chio.h b/include/uapi/linux/chio.h
index d9bac7f97282..689fc93fafda 100644
--- a/include/uapi/linux/chio.h
+++ b/include/uapi/linux/chio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ioctl interface for the scsi media changer driver
*/
diff --git a/include/uapi/linux/cifs/cifs_mount.h b/include/uapi/linux/cifs/cifs_mount.h
index d7e4c6ce6171..69829205fdb5 100644
--- a/include/uapi/linux/cifs/cifs_mount.h
+++ b/include/uapi/linux/cifs/cifs_mount.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* include/uapi/linux/cifs/cifs_mount.h
*
diff --git a/include/uapi/linux/cm4000_cs.h b/include/uapi/linux/cm4000_cs.h
index 1217f751a1bc..c70a62ec8a49 100644
--- a/include/uapi/linux/cm4000_cs.h
+++ b/include/uapi/linux/cm4000_cs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_CM4000_H_
#define _UAPI_CM4000_H_
diff --git a/include/uapi/linux/cn_proc.h b/include/uapi/linux/cn_proc.h
index f6c271035bbd..68ff25414700 100644
--- a/include/uapi/linux/cn_proc.h
+++ b/include/uapi/linux/cn_proc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1 WITH Linux-syscall-note */
/*
* cn_proc.h - process events connector
*
diff --git a/include/uapi/linux/coda_psdev.h b/include/uapi/linux/coda_psdev.h
index 79d05981fc4b..aa6623efd2dd 100644
--- a/include/uapi/linux/coda_psdev.h
+++ b/include/uapi/linux/coda_psdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__CODA_PSDEV_H
#define _UAPI__CODA_PSDEV_H
diff --git a/include/uapi/linux/coff.h b/include/uapi/linux/coff.h
index 6354a7fe22b2..e4a79f80b9a0 100644
--- a/include/uapi/linux/coff.h
+++ b/include/uapi/linux/coff.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* This file is derived from the GAS 2.1.4 assembler control file.
The GAS product is under the GNU General Public License, version 2 or later.
As such, this file is also under that license.
diff --git a/include/uapi/linux/connector.h b/include/uapi/linux/connector.h
index 4cb283505e45..3738936149a2 100644
--- a/include/uapi/linux/connector.h
+++ b/include/uapi/linux/connector.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* connector.h
*
diff --git a/include/uapi/linux/const.h b/include/uapi/linux/const.h
index c872bfd25e13..92537757590a 100644
--- a/include/uapi/linux/const.h
+++ b/include/uapi/linux/const.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* const.h: Macros for dealing with constants. */
#ifndef _LINUX_CONST_H
diff --git a/include/uapi/linux/coresight-stm.h b/include/uapi/linux/coresight-stm.h
index 7e4272cf1fb2..aac550a52f80 100644
--- a/include/uapi/linux/coresight-stm.h
+++ b/include/uapi/linux/coresight-stm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __UAPI_CORESIGHT_STM_H_
#define __UAPI_CORESIGHT_STM_H_
diff --git a/include/uapi/linux/cramfs_fs.h b/include/uapi/linux/cramfs_fs.h
index e4611a9b9243..5519504199e6 100644
--- a/include/uapi/linux/cramfs_fs.h
+++ b/include/uapi/linux/cramfs_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__CRAMFS_H
#define _UAPI__CRAMFS_H
diff --git a/include/uapi/linux/cryptouser.h b/include/uapi/linux/cryptouser.h
index fdcbb3c29083..19bf0ca6d635 100644
--- a/include/uapi/linux/cryptouser.h
+++ b/include/uapi/linux/cryptouser.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Crypto user configuration API.
*
diff --git a/include/uapi/linux/cuda.h b/include/uapi/linux/cuda.h
index 286f9f10fce8..28182557748d 100644
--- a/include/uapi/linux/cuda.h
+++ b/include/uapi/linux/cuda.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Definitions for talking to the CUDA. The CUDA is a microcontroller
* which controls the ADB, system power, RTC, and various other things.
diff --git a/include/uapi/linux/cyclades.h b/include/uapi/linux/cyclades.h
index 12b587aa361c..8279bc3d60ca 100644
--- a/include/uapi/linux/cyclades.h
+++ b/include/uapi/linux/cyclades.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Revision: 3.0 $$Date: 1998/11/02 14:20:59 $
* linux/include/linux/cyclades.h
*
diff --git a/include/uapi/linux/cycx_cfm.h b/include/uapi/linux/cycx_cfm.h
index 032d26ed8384..51f541942ff9 100644
--- a/include/uapi/linux/cycx_cfm.h
+++ b/include/uapi/linux/cycx_cfm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* cycx_cfm.h Cyclom 2X WAN Link Driver.
* Definitions for the Cyclom 2X Firmware Module (CFM).
diff --git a/include/uapi/linux/dcbnl.h b/include/uapi/linux/dcbnl.h
index 3ea470f35e40..b6170a6af7c2 100644
--- a/include/uapi/linux/dcbnl.h
+++ b/include/uapi/linux/dcbnl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2008-2011, Intel Corporation.
*
diff --git a/include/uapi/linux/dccp.h b/include/uapi/linux/dccp.h
index 52a9cd7307e7..6e1978dbcf7c 100644
--- a/include/uapi/linux/dccp.h
+++ b/include/uapi/linux/dccp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_DCCP_H
#define _UAPI_LINUX_DCCP_H
diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h
index 0cbca96c66b9..6665df69e26a 100644
--- a/include/uapi/linux/devlink.h
+++ b/include/uapi/linux/devlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* include/uapi/linux/devlink.h - Network physical device Netlink interface
* Copyright (c) 2016 Mellanox Technologies. All rights reserved.
diff --git a/include/uapi/linux/dlm.h b/include/uapi/linux/dlm.h
index 1f73cc06168f..0d2eca287567 100644
--- a/include/uapi/linux/dlm.h
+++ b/include/uapi/linux/dlm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/******************************************************************************
*******************************************************************************
**
diff --git a/include/uapi/linux/dlm_device.h b/include/uapi/linux/dlm_device.h
index df56c8ff0769..f880d2831160 100644
--- a/include/uapi/linux/dlm_device.h
+++ b/include/uapi/linux/dlm_device.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/******************************************************************************
*******************************************************************************
**
diff --git a/include/uapi/linux/dlm_netlink.h b/include/uapi/linux/dlm_netlink.h
index ef1e2e08769a..5dc3a67d353d 100644
--- a/include/uapi/linux/dlm_netlink.h
+++ b/include/uapi/linux/dlm_netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2007 Red Hat, Inc. All rights reserved.
*
diff --git a/include/uapi/linux/dlm_plock.h b/include/uapi/linux/dlm_plock.h
index 6ae692c909cb..63b6c1fd9169 100644
--- a/include/uapi/linux/dlm_plock.h
+++ b/include/uapi/linux/dlm_plock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2005-2008 Red Hat, Inc. All rights reserved.
*
diff --git a/include/uapi/linux/dlmconstants.h b/include/uapi/linux/dlmconstants.h
index 2857bdc5b27b..a8ae47c32a37 100644
--- a/include/uapi/linux/dlmconstants.h
+++ b/include/uapi/linux/dlmconstants.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/******************************************************************************
*******************************************************************************
**
diff --git a/include/uapi/linux/dm-ioctl.h b/include/uapi/linux/dm-ioctl.h
index 412c06a624c8..14c44ec8b622 100644
--- a/include/uapi/linux/dm-ioctl.h
+++ b/include/uapi/linux/dm-ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2001 - 2003 Sistina Software (UK) Limited.
* Copyright (C) 2004 - 2009 Red Hat, Inc. All rights reserved.
@@ -269,9 +270,9 @@ enum {
#define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
#define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 36
+#define DM_VERSION_MINOR 37
#define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl (2017-06-09)"
+#define DM_VERSION_EXTRA "-ioctl (2017-09-20)"
/* Status bits */
#define DM_READONLY_FLAG (1 << 0) /* In/Out */
diff --git a/include/uapi/linux/dm-log-userspace.h b/include/uapi/linux/dm-log-userspace.h
index 05e91e14c501..5c47a8603376 100644
--- a/include/uapi/linux/dm-log-userspace.h
+++ b/include/uapi/linux/dm-log-userspace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2006-2009 Red Hat, Inc.
*
diff --git a/include/uapi/linux/dma-buf.h b/include/uapi/linux/dma-buf.h
index fb0dedb7c121..d75df5210a4a 100644
--- a/include/uapi/linux/dma-buf.h
+++ b/include/uapi/linux/dma-buf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Framework for buffer objects that can be shared across devices/subsystems.
*
diff --git a/include/uapi/linux/dn.h b/include/uapi/linux/dn.h
index 4295c745f342..36ca71bd8bbe 100644
--- a/include/uapi/linux/dn.h
+++ b/include/uapi/linux/dn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_DN_H
#define _LINUX_DN_H
diff --git a/include/uapi/linux/dqblk_xfs.h b/include/uapi/linux/dqblk_xfs.h
index 11b3b31faf14..03d890b80ebc 100644
--- a/include/uapi/linux/dqblk_xfs.h
+++ b/include/uapi/linux/dqblk_xfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* Copyright (c) 1995-2001,2004 Silicon Graphics, Inc. All Rights Reserved.
*
diff --git a/include/uapi/linux/dvb/audio.h b/include/uapi/linux/dvb/audio.h
index d47bccd604e4..69f7a85d81b1 100644
--- a/include/uapi/linux/dvb/audio.h
+++ b/include/uapi/linux/dvb/audio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* audio.h
*
diff --git a/include/uapi/linux/dvb/ca.h b/include/uapi/linux/dvb/ca.h
index cb150029fdff..dffa59e95ebb 100644
--- a/include/uapi/linux/dvb/ca.h
+++ b/include/uapi/linux/dvb/ca.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* ca.h
*
diff --git a/include/uapi/linux/dvb/dmx.h b/include/uapi/linux/dvb/dmx.h
index 4aa5f6a1815a..c10f1324b4ca 100644
--- a/include/uapi/linux/dvb/dmx.h
+++ b/include/uapi/linux/dvb/dmx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* dmx.h
*
diff --git a/include/uapi/linux/dvb/frontend.h b/include/uapi/linux/dvb/frontend.h
index 861cacd5711f..f46de499b51b 100644
--- a/include/uapi/linux/dvb/frontend.h
+++ b/include/uapi/linux/dvb/frontend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* frontend.h
*
diff --git a/include/uapi/linux/dvb/net.h b/include/uapi/linux/dvb/net.h
index 89d805f9a5a6..0c550ef93f2c 100644
--- a/include/uapi/linux/dvb/net.h
+++ b/include/uapi/linux/dvb/net.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* net.h
*
diff --git a/include/uapi/linux/dvb/osd.h b/include/uapi/linux/dvb/osd.h
index 880e68435832..e163508b9ae8 100644
--- a/include/uapi/linux/dvb/osd.h
+++ b/include/uapi/linux/dvb/osd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* osd.h
*
diff --git a/include/uapi/linux/dvb/version.h b/include/uapi/linux/dvb/version.h
index e53e2ad4444f..02e32ea83984 100644
--- a/include/uapi/linux/dvb/version.h
+++ b/include/uapi/linux/dvb/version.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* version.h
*
diff --git a/include/uapi/linux/dvb/video.h b/include/uapi/linux/dvb/video.h
index c83d40b8a8a4..4d51f98182bb 100644
--- a/include/uapi/linux/dvb/video.h
+++ b/include/uapi/linux/dvb/video.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* video.h
*
diff --git a/include/uapi/linux/edd.h b/include/uapi/linux/edd.h
index 89240a04e4c8..0fe3e02aec65 100644
--- a/include/uapi/linux/edd.h
+++ b/include/uapi/linux/edd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/include/linux/edd.h
* Copyright (C) 2002, 2003, 2004 Dell Inc.
diff --git a/include/uapi/linux/efs_fs_sb.h b/include/uapi/linux/efs_fs_sb.h
index a01be90c58cc..6bad29a10faa 100644
--- a/include/uapi/linux/efs_fs_sb.h
+++ b/include/uapi/linux/efs_fs_sb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* efs_fs_sb.h
*
diff --git a/include/uapi/linux/elf-em.h b/include/uapi/linux/elf-em.h
index 9cd1de954c0a..31aa10178335 100644
--- a/include/uapi/linux/elf-em.h
+++ b/include/uapi/linux/elf-em.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_ELF_EM_H
#define _LINUX_ELF_EM_H
diff --git a/include/uapi/linux/elf-fdpic.h b/include/uapi/linux/elf-fdpic.h
index 3921e33aec8e..4fcc6cfebe18 100644
--- a/include/uapi/linux/elf-fdpic.h
+++ b/include/uapi/linux/elf-fdpic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* elf-fdpic.h: FDPIC ELF load map
*
* Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h
index b5280db9ef6a..c58627c0d6fb 100644
--- a/include/uapi/linux/elf.h
+++ b/include/uapi/linux/elf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_ELF_H
#define _UAPI_LINUX_ELF_H
diff --git a/include/uapi/linux/elfcore.h b/include/uapi/linux/elfcore.h
index 569737cfb557..0b2c9e16e345 100644
--- a/include/uapi/linux/elfcore.h
+++ b/include/uapi/linux/elfcore.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_ELFCORE_H
#define _UAPI_LINUX_ELFCORE_H
diff --git a/include/uapi/linux/errqueue.h b/include/uapi/linux/errqueue.h
index 78fdf52d6b2f..dc64cfaf13da 100644
--- a/include/uapi/linux/errqueue.h
+++ b/include/uapi/linux/errqueue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_ERRQUEUE_H
#define _UAPI_LINUX_ERRQUEUE_H
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index 9c041dae8e2c..ac71559314e7 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ethtool.h: Defines for Linux ethtool.
*
@@ -1753,6 +1754,8 @@ enum ethtool_reset_flags {
* %ethtool_link_mode_bit_indices for the link modes, and other
* link features that the link partner advertised through
* autonegotiation; 0 if unknown or not applicable. Read-only.
+ * @transceiver: Used to distinguish different possible PHY types,
+ * reported consistently by PHYLIB. Read-only.
*
* If autonegotiation is disabled, the speed and @duplex represent the
* fixed link mode and are writable if the driver supports multiple
@@ -1804,7 +1807,9 @@ struct ethtool_link_settings {
__u8 eth_tp_mdix;
__u8 eth_tp_mdix_ctrl;
__s8 link_mode_masks_nwords;
- __u32 reserved[8];
+ __u8 transceiver;
+ __u8 reserved1[3];
+ __u32 reserved[7];
__u32 link_mode_masks[0];
/* layout of link_mode_masks fields:
* __u32 map_supported[link_mode_masks_nwords];
diff --git a/include/uapi/linux/eventpoll.h b/include/uapi/linux/eventpoll.h
index f4d5c998cc2b..63e21be30f15 100644
--- a/include/uapi/linux/eventpoll.h
+++ b/include/uapi/linux/eventpoll.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* include/linux/eventpoll.h ( Efficient event polling implementation )
* Copyright (C) 2001,...,2006 Davide Libenzi
diff --git a/include/uapi/linux/fadvise.h b/include/uapi/linux/fadvise.h
index e8e747139b9a..0862b87434c2 100644
--- a/include/uapi/linux/fadvise.h
+++ b/include/uapi/linux/fadvise.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef FADVISE_H_INCLUDED
#define FADVISE_H_INCLUDED
diff --git a/include/uapi/linux/falloc.h b/include/uapi/linux/falloc.h
index b075f601919b..51398fa57f6c 100644
--- a/include/uapi/linux/falloc.h
+++ b/include/uapi/linux/falloc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_FALLOC_H_
#define _UAPI_FALLOC_H_
diff --git a/include/uapi/linux/fanotify.h b/include/uapi/linux/fanotify.h
index 030508d195d3..f79c4e1a84b9 100644
--- a/include/uapi/linux/fanotify.h
+++ b/include/uapi/linux/fanotify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_FANOTIFY_H
#define _UAPI_LINUX_FANOTIFY_H
diff --git a/include/uapi/linux/fb.h b/include/uapi/linux/fb.h
index fb795c3b3c17..6cd9b198b7c6 100644
--- a/include/uapi/linux/fb.h
+++ b/include/uapi/linux/fb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_FB_H
#define _UAPI_LINUX_FB_H
diff --git a/include/uapi/linux/fcntl.h b/include/uapi/linux/fcntl.h
index ec69d55bcec7..6448cdd9a350 100644
--- a/include/uapi/linux/fcntl.h
+++ b/include/uapi/linux/fcntl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_FCNTL_H
#define _UAPI_LINUX_FCNTL_H
diff --git a/include/uapi/linux/fd.h b/include/uapi/linux/fd.h
index 84c517cbce90..90fb94712c41 100644
--- a/include/uapi/linux/fd.h
+++ b/include/uapi/linux/fd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_FD_H
#define _UAPI_LINUX_FD_H
diff --git a/include/uapi/linux/fdreg.h b/include/uapi/linux/fdreg.h
index 61ce64169004..5e2981d5c523 100644
--- a/include/uapi/linux/fdreg.h
+++ b/include/uapi/linux/fdreg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_FDREG_H
#define _LINUX_FDREG_H
/*
diff --git a/include/uapi/linux/fib_rules.h b/include/uapi/linux/fib_rules.h
index bbf02a63a011..2b642bf9b5a0 100644
--- a/include/uapi/linux/fib_rules.h
+++ b/include/uapi/linux/fib_rules.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_FIB_RULES_H
#define __LINUX_FIB_RULES_H
diff --git a/include/uapi/linux/fiemap.h b/include/uapi/linux/fiemap.h
index 0c51d617dae9..8c0bc24d5d95 100644
--- a/include/uapi/linux/fiemap.h
+++ b/include/uapi/linux/fiemap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* FS_IOC_FIEMAP ioctl infrastructure.
*
diff --git a/include/uapi/linux/filter.h b/include/uapi/linux/filter.h
index c97340e43dd6..13f5b65a888f 100644
--- a/include/uapi/linux/filter.h
+++ b/include/uapi/linux/filter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Linux Socket Filter Data Structures
*/
diff --git a/include/uapi/linux/flat.h b/include/uapi/linux/flat.h
index 88cd6baba8f3..27e595e44fb7 100644
--- a/include/uapi/linux/flat.h
+++ b/include/uapi/linux/flat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2002-2003 David McCullough <davidm@snapgear.com>
* Copyright (C) 1998 Kenneth Albanowski <kjahds@kjahds.com>
diff --git a/include/uapi/linux/fou.h b/include/uapi/linux/fou.h
index d2947c52dc67..f2ea833a2812 100644
--- a/include/uapi/linux/fou.h
+++ b/include/uapi/linux/fou.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* fou.h - FOU Interface */
#ifndef _UAPI_LINUX_FOU_H
diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h
index 56235dddea7d..4199f8acbce5 100644
--- a/include/uapi/linux/fs.h
+++ b/include/uapi/linux/fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_FS_H
#define _UAPI_LINUX_FS_H
diff --git a/include/uapi/linux/fsl_hypervisor.h b/include/uapi/linux/fsl_hypervisor.h
index 1bf04967fec4..1e237fba951f 100644
--- a/include/uapi/linux/fsl_hypervisor.h
+++ b/include/uapi/linux/fsl_hypervisor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* Freescale hypervisor ioctl and kernel interface
*
diff --git a/include/uapi/linux/fsmap.h b/include/uapi/linux/fsmap.h
index e5213c3e38b2..91fd519a3f7d 100644
--- a/include/uapi/linux/fsmap.h
+++ b/include/uapi/linux/fsmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* FS_IOC_GETFSMAP ioctl infrastructure.
*
diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
index 42fa977e3b14..4b5001c57f46 100644
--- a/include/uapi/linux/fuse.h
+++ b/include/uapi/linux/fuse.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
This file defines the kernel interface of FUSE
Copyright (C) 2001-2008 Miklos Szeredi <miklos@szeredi.hu>
diff --git a/include/uapi/linux/futex.h b/include/uapi/linux/futex.h
index 0b1f716373c7..a89eb0accd5e 100644
--- a/include/uapi/linux/futex.h
+++ b/include/uapi/linux/futex.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_FUTEX_H
#define _UAPI_LINUX_FUTEX_H
diff --git a/include/uapi/linux/gameport.h b/include/uapi/linux/gameport.h
index 49b29b068f40..8fb40b4930ac 100644
--- a/include/uapi/linux/gameport.h
+++ b/include/uapi/linux/gameport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 1999-2002 Vojtech Pavlik
*
diff --git a/include/uapi/linux/gen_stats.h b/include/uapi/linux/gen_stats.h
index 52deccc2128e..24a861c0d29d 100644
--- a/include/uapi/linux/gen_stats.h
+++ b/include/uapi/linux/gen_stats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_GEN_STATS_H
#define __LINUX_GEN_STATS_H
diff --git a/include/uapi/linux/genetlink.h b/include/uapi/linux/genetlink.h
index adc899381e0d..877f7fa95466 100644
--- a/include/uapi/linux/genetlink.h
+++ b/include/uapi/linux/genetlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_GENERIC_NETLINK_H
#define _UAPI__LINUX_GENERIC_NETLINK_H
diff --git a/include/uapi/linux/genwqe/genwqe_card.h b/include/uapi/linux/genwqe/genwqe_card.h
index baa93fb4cd4f..bc779a5d258d 100644
--- a/include/uapi/linux/genwqe/genwqe_card.h
+++ b/include/uapi/linux/genwqe/genwqe_card.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __GENWQE_CARD_H__
#define __GENWQE_CARD_H__
diff --git a/include/uapi/linux/gfs2_ondisk.h b/include/uapi/linux/gfs2_ondisk.h
index 7c4be7711c81..5156bad77b47 100644
--- a/include/uapi/linux/gfs2_ondisk.h
+++ b/include/uapi/linux/gfs2_ondisk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
* Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
diff --git a/include/uapi/linux/gigaset_dev.h b/include/uapi/linux/gigaset_dev.h
index 258ba82937e7..279551af8ebf 100644
--- a/include/uapi/linux/gigaset_dev.h
+++ b/include/uapi/linux/gigaset_dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* interface to user space for the gigaset driver
*
diff --git a/include/uapi/linux/gpio.h b/include/uapi/linux/gpio.h
index 333d3544c964..1bf6e6df084b 100644
--- a/include/uapi/linux/gpio.h
+++ b/include/uapi/linux/gpio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* <linux/gpio.h> - userspace ABI for the GPIO character devices
*
diff --git a/include/uapi/linux/gsmmux.h b/include/uapi/linux/gsmmux.h
index ab055d8cddef..101d3c469acb 100644
--- a/include/uapi/linux/gsmmux.h
+++ b/include/uapi/linux/gsmmux.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_GSMMUX_H
#define _LINUX_GSMMUX_H
diff --git a/include/uapi/linux/gtp.h b/include/uapi/linux/gtp.h
index 57d1edb8efd9..c7d66755d212 100644
--- a/include/uapi/linux/gtp.h
+++ b/include/uapi/linux/gtp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_GTP_H_
#define _UAPI_LINUX_GTP_H_
diff --git a/include/uapi/linux/hash_info.h b/include/uapi/linux/hash_info.h
index ebf8fd885dd5..eea5d02c58de 100644
--- a/include/uapi/linux/hash_info.h
+++ b/include/uapi/linux/hash_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Hash Info: Hash algorithms information
*
diff --git a/include/uapi/linux/hdlc.h b/include/uapi/linux/hdlc.h
index 2c5f0aff4cf9..d89cb3ee7c70 100644
--- a/include/uapi/linux/hdlc.h
+++ b/include/uapi/linux/hdlc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Generic HDLC support routines for Linux
*
diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
index 04bc0274a189..0fe4238e8246 100644
--- a/include/uapi/linux/hdlc/ioctl.h
+++ b/include/uapi/linux/hdlc/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __HDLC_IOCTL_H__
#define __HDLC_IOCTL_H__
diff --git a/include/uapi/linux/hdlcdrv.h b/include/uapi/linux/hdlcdrv.h
index ffc79c0b44a8..9fe9499403a6 100644
--- a/include/uapi/linux/hdlcdrv.h
+++ b/include/uapi/linux/hdlcdrv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* hdlcdrv.h -- HDLC packet radio network driver.
* The Linux soundcard driver for 1200 baud and 9600 baud packet radio
diff --git a/include/uapi/linux/hdreg.h b/include/uapi/linux/hdreg.h
index 29ee2873f4a8..aeee62ebf83c 100644
--- a/include/uapi/linux/hdreg.h
+++ b/include/uapi/linux/hdreg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_HDREG_H
#define _LINUX_HDREG_H
diff --git a/include/uapi/linux/hid.h b/include/uapi/linux/hid.h
index b60f4842bd97..b34492a87a8a 100644
--- a/include/uapi/linux/hid.h
+++ b/include/uapi/linux/hid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) 1999 Andreas Gal
* Copyright (c) 2000-2001 Vojtech Pavlik
diff --git a/include/uapi/linux/hiddev.h b/include/uapi/linux/hiddev.h
index 7df7884bf5c4..53d6cad7a999 100644
--- a/include/uapi/linux/hiddev.h
+++ b/include/uapi/linux/hiddev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) 1999-2000 Vojtech Pavlik
*
diff --git a/include/uapi/linux/hidraw.h b/include/uapi/linux/hidraw.h
index f5b732979a7c..98e2c493de85 100644
--- a/include/uapi/linux/hidraw.h
+++ b/include/uapi/linux/hidraw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2007 Jiri Kosina
*/
diff --git a/include/uapi/linux/hpet.h b/include/uapi/linux/hpet.h
index 8af3c70abc8c..30e535644b43 100644
--- a/include/uapi/linux/hpet.h
+++ b/include/uapi/linux/hpet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__HPET__
#define _UAPI__HPET__
diff --git a/include/uapi/linux/hsi/cs-protocol.h b/include/uapi/linux/hsi/cs-protocol.h
index f153d6ea7c62..c7f6e7672cb5 100644
--- a/include/uapi/linux/hsi/cs-protocol.h
+++ b/include/uapi/linux/hsi/cs-protocol.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* cmt-speech interface definitions
*
diff --git a/include/uapi/linux/hsi/hsi_char.h b/include/uapi/linux/hsi/hsi_char.h
index c00a463d55f9..91623b0398b1 100644
--- a/include/uapi/linux/hsi/hsi_char.h
+++ b/include/uapi/linux/hsi/hsi_char.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Part of the HSI character device driver.
*
diff --git a/include/uapi/linux/hsr_netlink.h b/include/uapi/linux/hsr_netlink.h
index 2475cb8a53af..c218ef9c35dd 100644
--- a/include/uapi/linux/hsr_netlink.h
+++ b/include/uapi/linux/hsr_netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2011-2013 Autronica Fire and Security AS
*
diff --git a/include/uapi/linux/hw_breakpoint.h b/include/uapi/linux/hw_breakpoint.h
index 2b65efd19a46..965e4d8606d8 100644
--- a/include/uapi/linux/hw_breakpoint.h
+++ b/include/uapi/linux/hw_breakpoint.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_HW_BREAKPOINT_H
#define _UAPI_LINUX_HW_BREAKPOINT_H
diff --git a/include/uapi/linux/hyperv.h b/include/uapi/linux/hyperv.h
index e347b24ef9fb..991b2b7ada7a 100644
--- a/include/uapi/linux/hyperv.h
+++ b/include/uapi/linux/hyperv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
* Copyright (c) 2011, Microsoft Corporation.
diff --git a/include/uapi/linux/hysdn_if.h b/include/uapi/linux/hysdn_if.h
index 00236ae3b04e..99f77c517e6d 100644
--- a/include/uapi/linux/hysdn_if.h
+++ b/include/uapi/linux/hysdn_if.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Id: hysdn_if.h,v 1.1.8.3 2001/09/23 22:25:05 kai Exp $
*
* Linux driver for HYSDN cards
diff --git a/include/uapi/linux/i2c-dev.h b/include/uapi/linux/i2c-dev.h
index 2f05e66de01e..85f8047afcf2 100644
--- a/include/uapi/linux/i2c-dev.h
+++ b/include/uapi/linux/i2c-dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
i2c-dev.h - i2c-bus driver, char device interface
diff --git a/include/uapi/linux/i2c.h b/include/uapi/linux/i2c.h
index 009e27bb9abe..fe648032d6b9 100644
--- a/include/uapi/linux/i2c.h
+++ b/include/uapi/linux/i2c.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* ------------------------------------------------------------------------- */
/* */
/* i2c.h - definitions for the i2c-bus interface */
diff --git a/include/uapi/linux/i2o-dev.h b/include/uapi/linux/i2o-dev.h
index a8093bfec3a6..b1cd407c47d5 100644
--- a/include/uapi/linux/i2o-dev.h
+++ b/include/uapi/linux/i2o-dev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* I2O user space accessible structures/APIs
*
diff --git a/include/uapi/linux/i8k.h b/include/uapi/linux/i8k.h
index 133d02f03c25..268e6268f6c8 100644
--- a/include/uapi/linux/i8k.h
+++ b/include/uapi/linux/i8k.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* i8k.h -- Linux driver for accessing the SMM BIOS on Dell laptops
*
diff --git a/include/uapi/linux/icmp.h b/include/uapi/linux/icmp.h
index fddd9d736284..5589eeb791ca 100644
--- a/include/uapi/linux/icmp.h
+++ b/include/uapi/linux/icmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/icmpv6.h b/include/uapi/linux/icmpv6.h
index 590beda78ea0..caf8dc019250 100644
--- a/include/uapi/linux/icmpv6.h
+++ b/include/uapi/linux/icmpv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_ICMPV6_H
#define _UAPI_LINUX_ICMPV6_H
diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
index 259617a551f2..7fea0fd7d6f5 100644
--- a/include/uapi/linux/if.h
+++ b/include/uapi/linux/if.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/if_addr.h b/include/uapi/linux/if_addr.h
index 4318ab1635ce..2ef053d265de 100644
--- a/include/uapi/linux/if_addr.h
+++ b/include/uapi/linux/if_addr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_IF_ADDR_H
#define __LINUX_IF_ADDR_H
diff --git a/include/uapi/linux/if_addrlabel.h b/include/uapi/linux/if_addrlabel.h
index 54580c298187..d1f5974c76e1 100644
--- a/include/uapi/linux/if_addrlabel.h
+++ b/include/uapi/linux/if_addrlabel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* if_addrlabel.h - netlink interface for address labels
*
diff --git a/include/uapi/linux/if_alg.h b/include/uapi/linux/if_alg.h
index f2acd2fde1f3..bc2bcdec377b 100644
--- a/include/uapi/linux/if_alg.h
+++ b/include/uapi/linux/if_alg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* if_alg: User-space algorithm interface
*
diff --git a/include/uapi/linux/if_arcnet.h b/include/uapi/linux/if_arcnet.h
index cfb642f8e7bd..683878036d76 100644
--- a/include/uapi/linux/if_arcnet.h
+++ b/include/uapi/linux/if_arcnet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/if_arp.h b/include/uapi/linux/if_arp.h
index a2a635620600..4605527ca41b 100644
--- a/include/uapi/linux/if_arp.h
+++ b/include/uapi/linux/if_arp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/if_bonding.h b/include/uapi/linux/if_bonding.h
index 9635a62f6f89..61a1bf6e865e 100644
--- a/include/uapi/linux/if_bonding.h
+++ b/include/uapi/linux/if_bonding.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/*
* Bond several ethernet interfaces into a Cisco, running 'Etherchannel'.
*
diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h
index a9e6244ce438..e41eda3c71f1 100644
--- a/include/uapi/linux/if_bridge.h
+++ b/include/uapi/linux/if_bridge.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Linux ethernet bridge
*
diff --git a/include/uapi/linux/if_cablemodem.h b/include/uapi/linux/if_cablemodem.h
index ee6b3c442baf..1f65130bf2a6 100644
--- a/include/uapi/linux/if_cablemodem.h
+++ b/include/uapi/linux/if_cablemodem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _LINUX_CABLEMODEM_H_
#define _LINUX_CABLEMODEM_H_
/*
diff --git a/include/uapi/linux/if_eql.h b/include/uapi/linux/if_eql.h
index 06e818c9e7cb..d6865a2d8cdd 100644
--- a/include/uapi/linux/if_eql.h
+++ b/include/uapi/linux/if_eql.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Equalizer Load-balancer for serial network interfaces.
*
diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
index 9037065e23d0..3ee3bf7c8526 100644
--- a/include/uapi/linux/if_ether.h
+++ b/include/uapi/linux/if_ether.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/if_fc.h b/include/uapi/linux/if_fc.h
index 6ed7f1bf35c8..3e3173282cc3 100644
--- a/include/uapi/linux/if_fc.h
+++ b/include/uapi/linux/if_fc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/if_fddi.h b/include/uapi/linux/if_fddi.h
index 1086cd9f6754..75eed8b62823 100644
--- a/include/uapi/linux/if_fddi.h
+++ b/include/uapi/linux/if_fddi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/if_frad.h b/include/uapi/linux/if_frad.h
index f25b08d5eb6b..3c6ee85f6262 100644
--- a/include/uapi/linux/if_frad.h
+++ b/include/uapi/linux/if_frad.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* DLCI/FRAD Definitions for Frame Relay Access Devices. DLCI devices are
* created for each DLCI associated with a FRAD. The FRAD driver
diff --git a/include/uapi/linux/if_hippi.h b/include/uapi/linux/if_hippi.h
index cdc049f1829a..785a1452a66c 100644
--- a/include/uapi/linux/if_hippi.h
+++ b/include/uapi/linux/if_hippi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/if_infiniband.h b/include/uapi/linux/if_infiniband.h
index 7d958475d4ac..050b92dcf8cf 100644
--- a/include/uapi/linux/if_infiniband.h
+++ b/include/uapi/linux/if_infiniband.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index 8d062c58d5cb..1f00f0cd6790 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_IF_LINK_H
#define _UAPI_LINUX_IF_LINK_H
diff --git a/include/uapi/linux/if_ltalk.h b/include/uapi/linux/if_ltalk.h
index b92c1fb6ac16..fa61e776f598 100644
--- a/include/uapi/linux/if_ltalk.h
+++ b/include/uapi/linux/if_ltalk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_LTALK_H
#define _UAPI__LINUX_LTALK_H
diff --git a/include/uapi/linux/if_macsec.h b/include/uapi/linux/if_macsec.h
index 02fc49cb72d8..719d243471f4 100644
--- a/include/uapi/linux/if_macsec.h
+++ b/include/uapi/linux/if_macsec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* include/uapi/linux/if_macsec.h - MACsec device
*
diff --git a/include/uapi/linux/if_packet.h b/include/uapi/linux/if_packet.h
index 4df96a7dd4fa..67b61d91d89b 100644
--- a/include/uapi/linux/if_packet.h
+++ b/include/uapi/linux/if_packet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_IF_PACKET_H
#define __LINUX_IF_PACKET_H
diff --git a/include/uapi/linux/if_phonet.h b/include/uapi/linux/if_phonet.h
index f7ad9e24eb3d..9c22c969ec69 100644
--- a/include/uapi/linux/if_phonet.h
+++ b/include/uapi/linux/if_phonet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* File: if_phonet.h
*
diff --git a/include/uapi/linux/if_plip.h b/include/uapi/linux/if_plip.h
index 6298c7e88b2b..495a366112f2 100644
--- a/include/uapi/linux/if_plip.h
+++ b/include/uapi/linux/if_plip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* NET3 PLIP tuning facilities for the new Niibe PLIP.
*
diff --git a/include/uapi/linux/if_pppol2tp.h b/include/uapi/linux/if_pppol2tp.h
index 6418c4d10241..060b4d1f3129 100644
--- a/include/uapi/linux/if_pppol2tp.h
+++ b/include/uapi/linux/if_pppol2tp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/***************************************************************************
* Linux PPP over L2TP (PPPoL2TP) Socket Implementation (RFC 2661)
*
diff --git a/include/uapi/linux/if_pppox.h b/include/uapi/linux/if_pppox.h
index d37bbb17a007..e7a693c28f16 100644
--- a/include/uapi/linux/if_pppox.h
+++ b/include/uapi/linux/if_pppox.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/***************************************************************************
* Linux PPP over X - Generic PPP transport layer sockets
* Linux PPP over Ethernet (PPPoE) Socket Implementation (RFC 2516)
diff --git a/include/uapi/linux/if_slip.h b/include/uapi/linux/if_slip.h
index 1eb4e3a8397a..65937be53103 100644
--- a/include/uapi/linux/if_slip.h
+++ b/include/uapi/linux/if_slip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Swansea University Computer Society NET3
*
diff --git a/include/uapi/linux/if_team.h b/include/uapi/linux/if_team.h
index 7b8fa339de30..13c61fecb78b 100644
--- a/include/uapi/linux/if_team.h
+++ b/include/uapi/linux/if_team.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* include/linux/if_team.h - Network team device driver header
* Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
diff --git a/include/uapi/linux/if_tun.h b/include/uapi/linux/if_tun.h
index 3cb5e1d85ddd..47ab4bc62e31 100644
--- a/include/uapi/linux/if_tun.h
+++ b/include/uapi/linux/if_tun.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Universal TUN/TAP device driver.
* Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
index 2e520883c054..383b850aeb88 100644
--- a/include/uapi/linux/if_tunnel.h
+++ b/include/uapi/linux/if_tunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_IF_TUNNEL_H_
#define _UAPI_IF_TUNNEL_H_
diff --git a/include/uapi/linux/if_vlan.h b/include/uapi/linux/if_vlan.h
index 7e5e6b397332..7a0e8bd65b6b 100644
--- a/include/uapi/linux/if_vlan.h
+++ b/include/uapi/linux/if_vlan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* VLAN An implementation of 802.1Q VLAN tagging.
*
diff --git a/include/uapi/linux/if_x25.h b/include/uapi/linux/if_x25.h
index 897765f5feb8..5d962448345f 100644
--- a/include/uapi/linux/if_x25.h
+++ b/include/uapi/linux/if_x25.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Linux X.25 packet to device interface
*
diff --git a/include/uapi/linux/ife.h b/include/uapi/linux/ife.h
index 2954da32e012..bdd953c67db1 100644
--- a/include/uapi/linux/ife.h
+++ b/include/uapi/linux/ife.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __UAPI_IFE_H
#define __UAPI_IFE_H
diff --git a/include/uapi/linux/igmp.h b/include/uapi/linux/igmp.h
index a97f9a7568cf..7e44ac02ca18 100644
--- a/include/uapi/linux/igmp.h
+++ b/include/uapi/linux/igmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Linux NET3: Internet Group Management Protocol [IGMP]
*
diff --git a/include/uapi/linux/iio/events.h b/include/uapi/linux/iio/events.h
index 00bbdaed2f97..6ef413452dce 100644
--- a/include/uapi/linux/iio/events.h
+++ b/include/uapi/linux/iio/events.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* The industrial I/O - event passing to userspace
*
* Copyright (c) 2008-2011 Jonathan Cameron
diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h
index ffafd6c25a48..4213cdf88e3c 100644
--- a/include/uapi/linux/iio/types.h
+++ b/include/uapi/linux/iio/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* industrial I/O data types needed both in and out of kernel
*
* Copyright (c) 2008 Jonathan Cameron
diff --git a/include/uapi/linux/ila.h b/include/uapi/linux/ila.h
index 948c0a91e11b..f54853288f99 100644
--- a/include/uapi/linux/ila.h
+++ b/include/uapi/linux/ila.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* ila.h - ILA Interface */
#ifndef _UAPI_LINUX_ILA_H
diff --git a/include/uapi/linux/in.h b/include/uapi/linux/in.h
index 4e557f4e9553..48e8a225b985 100644
--- a/include/uapi/linux/in.h
+++ b/include/uapi/linux/in.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/in6.h b/include/uapi/linux/in6.h
index 46444f8fbee4..2c002ffa9d6f 100644
--- a/include/uapi/linux/in6.h
+++ b/include/uapi/linux/in6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Types and definitions for AF_INET6
* Linux INET6 implementation
diff --git a/include/uapi/linux/in_route.h b/include/uapi/linux/in_route.h
index b261b8c915f0..0cc2c23b47f8 100644
--- a/include/uapi/linux/in_route.h
+++ b/include/uapi/linux/in_route.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_IN_ROUTE_H
#define _LINUX_IN_ROUTE_H
diff --git a/include/uapi/linux/inet_diag.h b/include/uapi/linux/inet_diag.h
index f52ff62bfabe..817d807e9481 100644
--- a/include/uapi/linux/inet_diag.h
+++ b/include/uapi/linux/inet_diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_INET_DIAG_H_
#define _UAPI_INET_DIAG_H_
diff --git a/include/uapi/linux/inotify.h b/include/uapi/linux/inotify.h
index e6bf35b2dd34..5474461683db 100644
--- a/include/uapi/linux/inotify.h
+++ b/include/uapi/linux/inotify.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Inode based directory notification for Linux
*
diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index 179891074b3c..f4058bd4c373 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Input event codes
*
diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
index f561c0eb7d63..8c5a0bf6ee35 100644
--- a/include/uapi/linux/input.h
+++ b/include/uapi/linux/input.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 1999-2002 Vojtech Pavlik
*
diff --git a/include/uapi/linux/ioctl.h b/include/uapi/linux/ioctl.h
index aa91eb3951ef..b292e8093b24 100644
--- a/include/uapi/linux/ioctl.h
+++ b/include/uapi/linux/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_IOCTL_H
#define _LINUX_IOCTL_H
diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h
index f291569768dd..b24a742beae5 100644
--- a/include/uapi/linux/ip.h
+++ b/include/uapi/linux/ip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/ip6_tunnel.h b/include/uapi/linux/ip6_tunnel.h
index 425926c467d7..51f29308ac6d 100644
--- a/include/uapi/linux/ip6_tunnel.h
+++ b/include/uapi/linux/ip6_tunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IP6_TUNNEL_H
#define _IP6_TUNNEL_H
diff --git a/include/uapi/linux/ip_vs.h b/include/uapi/linux/ip_vs.h
index 22d69894bc92..1c916b2f89dc 100644
--- a/include/uapi/linux/ip_vs.h
+++ b/include/uapi/linux/ip_vs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* IP Virtual Server
* data structure and functionality definitions
diff --git a/include/uapi/linux/ipc.h b/include/uapi/linux/ipc.h
index de08dd46ddae..5995fc9d675e 100644
--- a/include/uapi/linux/ipc.h
+++ b/include/uapi/linux/ipc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_IPC_H
#define _UAPI_LINUX_IPC_H
diff --git a/include/uapi/linux/ipmi.h b/include/uapi/linux/ipmi.h
index b9095a27a08a..b076f7a47407 100644
--- a/include/uapi/linux/ipmi.h
+++ b/include/uapi/linux/ipmi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* ipmi.h
*
diff --git a/include/uapi/linux/ipmi_msgdefs.h b/include/uapi/linux/ipmi_msgdefs.h
index df97e6e31e87..17f349459587 100644
--- a/include/uapi/linux/ipmi_msgdefs.h
+++ b/include/uapi/linux/ipmi_msgdefs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* ipmi_smi.h
*
diff --git a/include/uapi/linux/ipsec.h b/include/uapi/linux/ipsec.h
index d17a6302a0e9..50d8ee1791e2 100644
--- a/include/uapi/linux/ipsec.h
+++ b/include/uapi/linux/ipsec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_IPSEC_H
#define _LINUX_IPSEC_H
diff --git a/include/uapi/linux/ipv6.h b/include/uapi/linux/ipv6.h
index 2ae59178189d..b22a9c4e1b12 100644
--- a/include/uapi/linux/ipv6.h
+++ b/include/uapi/linux/ipv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_IPV6_H
#define _UAPI_IPV6_H
diff --git a/include/uapi/linux/ipv6_route.h b/include/uapi/linux/ipv6_route.h
index d496c02e14bc..a96eb17ad6fc 100644
--- a/include/uapi/linux/ipv6_route.h
+++ b/include/uapi/linux/ipv6_route.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Linux INET6 implementation
*
diff --git a/include/uapi/linux/ipx.h b/include/uapi/linux/ipx.h
index 30f031db12f6..3168137adae8 100644
--- a/include/uapi/linux/ipx.h
+++ b/include/uapi/linux/ipx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IPX_H_
#define _IPX_H_
#include <linux/libc-compat.h> /* for compatibility with glibc netipx/ipx.h */
diff --git a/include/uapi/linux/irda.h b/include/uapi/linux/irda.h
index a014c3252311..2105c266aa6e 100644
--- a/include/uapi/linux/irda.h
+++ b/include/uapi/linux/irda.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*********************************************************************
*
* Filename: irda.h
diff --git a/include/uapi/linux/isdn.h b/include/uapi/linux/isdn.h
index eb1995fffc39..f371fd52ed75 100644
--- a/include/uapi/linux/isdn.h
+++ b/include/uapi/linux/isdn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Id: isdn.h,v 1.125.2.3 2004/02/10 01:07:14 keil Exp $
*
* Main header for the Linux ISDN subsystem (linklevel).
diff --git a/include/uapi/linux/isdn/capicmd.h b/include/uapi/linux/isdn/capicmd.h
index b58635f722da..4941628a4fb9 100644
--- a/include/uapi/linux/isdn/capicmd.h
+++ b/include/uapi/linux/isdn/capicmd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Id: capicmd.h,v 1.2.6.2 2001/09/23 22:24:33 kai Exp $
*
* CAPI 2.0 Interface for Linux
diff --git a/include/uapi/linux/isdn_divertif.h b/include/uapi/linux/isdn_divertif.h
index 3e3c2d898416..0a17bb1bcb1b 100644
--- a/include/uapi/linux/isdn_divertif.h
+++ b/include/uapi/linux/isdn_divertif.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Id: isdn_divertif.h,v 1.4.6.1 2001/09/23 22:25:05 kai Exp $
*
* Header for the diversion supplementary interface for i4l.
diff --git a/include/uapi/linux/isdn_ppp.h b/include/uapi/linux/isdn_ppp.h
index e7d7bd2aed3f..0bdc4efaacb2 100644
--- a/include/uapi/linux/isdn_ppp.h
+++ b/include/uapi/linux/isdn_ppp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/* Linux ISDN subsystem, sync PPP, interface to ipppd
*
* Copyright 1994-1999 by Fritz Elfert (fritz@isdn4linux.de)
diff --git a/include/uapi/linux/isdnif.h b/include/uapi/linux/isdnif.h
index 246138c01c4d..611a69196738 100644
--- a/include/uapi/linux/isdnif.h
+++ b/include/uapi/linux/isdnif.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/* $Id: isdnif.h,v 1.43.2.2 2004/01/12 23:08:35 keil Exp $
*
* Linux ISDN subsystem
diff --git a/include/uapi/linux/iso_fs.h b/include/uapi/linux/iso_fs.h
index 4688ac4284e2..78b4ebcf8ab0 100644
--- a/include/uapi/linux/iso_fs.h
+++ b/include/uapi/linux/iso_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ISOFS_FS_H
#define _ISOFS_FS_H
diff --git a/include/uapi/linux/ivtv.h b/include/uapi/linux/ivtv.h
index 42bf725751af..e74f18642b11 100644
--- a/include/uapi/linux/ivtv.h
+++ b/include/uapi/linux/ivtv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
Public ivtv API header
Copyright (C) 2003-2004 Kevin Thayer <nufan_wfk at yahoo.com>
diff --git a/include/uapi/linux/ivtvfb.h b/include/uapi/linux/ivtvfb.h
index e8b92f67f10d..9e9b072375de 100644
--- a/include/uapi/linux/ivtvfb.h
+++ b/include/uapi/linux/ivtvfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
On Screen Display cx23415 Framebuffer driver
diff --git a/include/uapi/linux/ixjuser.h b/include/uapi/linux/ixjuser.h
index 94ab5e942e53..ba245007cfe7 100644
--- a/include/uapi/linux/ixjuser.h
+++ b/include/uapi/linux/ixjuser.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef __LINUX_IXJUSER_H
#define __LINUX_IXJUSER_H
diff --git a/include/uapi/linux/joystick.h b/include/uapi/linux/joystick.h
index b856fd11c70e..64aabb84a66d 100644
--- a/include/uapi/linux/joystick.h
+++ b/include/uapi/linux/joystick.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 1996-2000 Vojtech Pavlik
*
diff --git a/include/uapi/linux/kcm.h b/include/uapi/linux/kcm.h
index a5a530940b99..01361ea359c4 100644
--- a/include/uapi/linux/kcm.h
+++ b/include/uapi/linux/kcm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Kernel Connection Multiplexor
*
diff --git a/include/uapi/linux/kcmp.h b/include/uapi/linux/kcmp.h
index 481e103da78e..ef1305010925 100644
--- a/include/uapi/linux/kcmp.h
+++ b/include/uapi/linux/kcmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_KCMP_H
#define _UAPI_LINUX_KCMP_H
diff --git a/include/uapi/linux/kcov.h b/include/uapi/linux/kcov.h
index 574e22ec640d..33eabbb8ada1 100644
--- a/include/uapi/linux/kcov.h
+++ b/include/uapi/linux/kcov.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_KCOV_IOCTLS_H
#define _LINUX_KCOV_IOCTLS_H
diff --git a/include/uapi/linux/kd.h b/include/uapi/linux/kd.h
index 87b7cc439d7c..4616b31f84da 100644
--- a/include/uapi/linux/kd.h
+++ b/include/uapi/linux/kd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_KD_H
#define _UAPI_LINUX_KD_H
#include <linux/types.h>
diff --git a/include/uapi/linux/kdev_t.h b/include/uapi/linux/kdev_t.h
index 0d881fa7eb9c..e1990f2e9777 100644
--- a/include/uapi/linux/kdev_t.h
+++ b/include/uapi/linux/kdev_t.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_KDEV_T_H
#define _UAPI_LINUX_KDEV_T_H
#ifndef __KERNEL__
diff --git a/include/uapi/linux/kernel-page-flags.h b/include/uapi/linux/kernel-page-flags.h
index 5da5f8751ce7..fa139841ec18 100644
--- a/include/uapi/linux/kernel-page-flags.h
+++ b/include/uapi/linux/kernel-page-flags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPILINUX_KERNEL_PAGE_FLAGS_H
#define _UAPILINUX_KERNEL_PAGE_FLAGS_H
diff --git a/include/uapi/linux/kernel.h b/include/uapi/linux/kernel.h
index 466073f0ce46..0ff8f7477847 100644
--- a/include/uapi/linux/kernel.h
+++ b/include/uapi/linux/kernel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_KERNEL_H
#define _UAPI_LINUX_KERNEL_H
diff --git a/include/uapi/linux/kernelcapi.h b/include/uapi/linux/kernelcapi.h
index 89bf40d36d2a..325a856e0e20 100644
--- a/include/uapi/linux/kernelcapi.h
+++ b/include/uapi/linux/kernelcapi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* $Id: kernelcapi.h,v 1.8.6.2 2001/02/07 11:31:31 kai Exp $
*
diff --git a/include/uapi/linux/kexec.h b/include/uapi/linux/kexec.h
index aae5ebf2022b..6d112868272d 100644
--- a/include/uapi/linux/kexec.h
+++ b/include/uapi/linux/kexec.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPILINUX_KEXEC_H
#define _UAPILINUX_KEXEC_H
diff --git a/include/uapi/linux/keyboard.h b/include/uapi/linux/keyboard.h
index 5a6849721ab6..ab4108c83186 100644
--- a/include/uapi/linux/keyboard.h
+++ b/include/uapi/linux/keyboard.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_KEYBOARD_H
#define _UAPI__LINUX_KEYBOARD_H
diff --git a/include/uapi/linux/keyctl.h b/include/uapi/linux/keyctl.h
index ef16df06642a..7b8c9e19bad1 100644
--- a/include/uapi/linux/keyctl.h
+++ b/include/uapi/linux/keyctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* keyctl.h: keyctl command IDs
*
* Copyright (C) 2004, 2008 Red Hat, Inc. All Rights Reserved.
diff --git a/include/uapi/linux/kfd_ioctl.h b/include/uapi/linux/kfd_ioctl.h
index 7b4567bacfc2..26283fefdf5f 100644
--- a/include/uapi/linux/kfd_ioctl.h
+++ b/include/uapi/linux/kfd_ioctl.h
@@ -23,15 +23,15 @@
#ifndef KFD_IOCTL_H_INCLUDED
#define KFD_IOCTL_H_INCLUDED
-#include <linux/types.h>
+#include <drm/drm.h>
#include <linux/ioctl.h>
#define KFD_IOCTL_MAJOR_VERSION 1
#define KFD_IOCTL_MINOR_VERSION 1
struct kfd_ioctl_get_version_args {
- uint32_t major_version; /* from KFD */
- uint32_t minor_version; /* from KFD */
+ __u32 major_version; /* from KFD */
+ __u32 minor_version; /* from KFD */
};
/* For kfd_ioctl_create_queue_args.queue_type. */
@@ -43,36 +43,36 @@ struct kfd_ioctl_get_version_args {
#define KFD_MAX_QUEUE_PRIORITY 15
struct kfd_ioctl_create_queue_args {
- uint64_t ring_base_address; /* to KFD */
- uint64_t write_pointer_address; /* from KFD */
- uint64_t read_pointer_address; /* from KFD */
- uint64_t doorbell_offset; /* from KFD */
-
- uint32_t ring_size; /* to KFD */
- uint32_t gpu_id; /* to KFD */
- uint32_t queue_type; /* to KFD */
- uint32_t queue_percentage; /* to KFD */
- uint32_t queue_priority; /* to KFD */
- uint32_t queue_id; /* from KFD */
-
- uint64_t eop_buffer_address; /* to KFD */
- uint64_t eop_buffer_size; /* to KFD */
- uint64_t ctx_save_restore_address; /* to KFD */
- uint64_t ctx_save_restore_size; /* to KFD */
+ __u64 ring_base_address; /* to KFD */
+ __u64 write_pointer_address; /* from KFD */
+ __u64 read_pointer_address; /* from KFD */
+ __u64 doorbell_offset; /* from KFD */
+
+ __u32 ring_size; /* to KFD */
+ __u32 gpu_id; /* to KFD */
+ __u32 queue_type; /* to KFD */
+ __u32 queue_percentage; /* to KFD */
+ __u32 queue_priority; /* to KFD */
+ __u32 queue_id; /* from KFD */
+
+ __u64 eop_buffer_address; /* to KFD */
+ __u64 eop_buffer_size; /* to KFD */
+ __u64 ctx_save_restore_address; /* to KFD */
+ __u64 ctx_save_restore_size; /* to KFD */
};
struct kfd_ioctl_destroy_queue_args {
- uint32_t queue_id; /* to KFD */
- uint32_t pad;
+ __u32 queue_id; /* to KFD */
+ __u32 pad;
};
struct kfd_ioctl_update_queue_args {
- uint64_t ring_base_address; /* to KFD */
+ __u64 ring_base_address; /* to KFD */
- uint32_t queue_id; /* to KFD */
- uint32_t ring_size; /* to KFD */
- uint32_t queue_percentage; /* to KFD */
- uint32_t queue_priority; /* to KFD */
+ __u32 queue_id; /* to KFD */
+ __u32 ring_size; /* to KFD */
+ __u32 queue_percentage; /* to KFD */
+ __u32 queue_priority; /* to KFD */
};
/* For kfd_ioctl_set_memory_policy_args.default_policy and alternate_policy */
@@ -80,13 +80,13 @@ struct kfd_ioctl_update_queue_args {
#define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
struct kfd_ioctl_set_memory_policy_args {
- uint64_t alternate_aperture_base; /* to KFD */
- uint64_t alternate_aperture_size; /* to KFD */
+ __u64 alternate_aperture_base; /* to KFD */
+ __u64 alternate_aperture_size; /* to KFD */
- uint32_t gpu_id; /* to KFD */
- uint32_t default_policy; /* to KFD */
- uint32_t alternate_policy; /* to KFD */
- uint32_t pad;
+ __u32 gpu_id; /* to KFD */
+ __u32 default_policy; /* to KFD */
+ __u32 alternate_policy; /* to KFD */
+ __u32 pad;
};
/*
@@ -97,26 +97,26 @@ struct kfd_ioctl_set_memory_policy_args {
*/
struct kfd_ioctl_get_clock_counters_args {
- uint64_t gpu_clock_counter; /* from KFD */
- uint64_t cpu_clock_counter; /* from KFD */
- uint64_t system_clock_counter; /* from KFD */
- uint64_t system_clock_freq; /* from KFD */
+ __u64 gpu_clock_counter; /* from KFD */
+ __u64 cpu_clock_counter; /* from KFD */
+ __u64 system_clock_counter; /* from KFD */
+ __u64 system_clock_freq; /* from KFD */
- uint32_t gpu_id; /* to KFD */
- uint32_t pad;
+ __u32 gpu_id; /* to KFD */
+ __u32 pad;
};
#define NUM_OF_SUPPORTED_GPUS 7
struct kfd_process_device_apertures {
- uint64_t lds_base; /* from KFD */
- uint64_t lds_limit; /* from KFD */
- uint64_t scratch_base; /* from KFD */
- uint64_t scratch_limit; /* from KFD */
- uint64_t gpuvm_base; /* from KFD */
- uint64_t gpuvm_limit; /* from KFD */
- uint32_t gpu_id; /* from KFD */
- uint32_t pad;
+ __u64 lds_base; /* from KFD */
+ __u64 lds_limit; /* from KFD */
+ __u64 scratch_base; /* from KFD */
+ __u64 scratch_limit; /* from KFD */
+ __u64 gpuvm_base; /* from KFD */
+ __u64 gpuvm_limit; /* from KFD */
+ __u32 gpu_id; /* from KFD */
+ __u32 pad;
};
struct kfd_ioctl_get_process_apertures_args {
@@ -124,8 +124,8 @@ struct kfd_ioctl_get_process_apertures_args {
process_apertures[NUM_OF_SUPPORTED_GPUS];/* from KFD */
/* from KFD, should be in the range [1 - NUM_OF_SUPPORTED_GPUS] */
- uint32_t num_of_nodes;
- uint32_t pad;
+ __u32 num_of_nodes;
+ __u32 pad;
};
#define MAX_ALLOWED_NUM_POINTS 100
@@ -133,25 +133,25 @@ struct kfd_ioctl_get_process_apertures_args {
#define MAX_ALLOWED_WAC_BUFF_SIZE 128
struct kfd_ioctl_dbg_register_args {
- uint32_t gpu_id; /* to KFD */
- uint32_t pad;
+ __u32 gpu_id; /* to KFD */
+ __u32 pad;
};
struct kfd_ioctl_dbg_unregister_args {
- uint32_t gpu_id; /* to KFD */
- uint32_t pad;
+ __u32 gpu_id; /* to KFD */
+ __u32 pad;
};
struct kfd_ioctl_dbg_address_watch_args {
- uint64_t content_ptr; /* a pointer to the actual content */
- uint32_t gpu_id; /* to KFD */
- uint32_t buf_size_in_bytes; /*including gpu_id and buf_size */
+ __u64 content_ptr; /* a pointer to the actual content */
+ __u32 gpu_id; /* to KFD */
+ __u32 buf_size_in_bytes; /*including gpu_id and buf_size */
};
struct kfd_ioctl_dbg_wave_control_args {
- uint64_t content_ptr; /* a pointer to the actual content */
- uint32_t gpu_id; /* to KFD */
- uint32_t buf_size_in_bytes; /*including gpu_id and buf_size */
+ __u64 content_ptr; /* a pointer to the actual content */
+ __u32 gpu_id; /* to KFD */
+ __u32 buf_size_in_bytes; /*including gpu_id and buf_size */
};
/* Matching HSA_EVENTTYPE */
@@ -172,44 +172,44 @@ struct kfd_ioctl_dbg_wave_control_args {
#define KFD_SIGNAL_EVENT_LIMIT 256
struct kfd_ioctl_create_event_args {
- uint64_t event_page_offset; /* from KFD */
- uint32_t event_trigger_data; /* from KFD - signal events only */
- uint32_t event_type; /* to KFD */
- uint32_t auto_reset; /* to KFD */
- uint32_t node_id; /* to KFD - only valid for certain
+ __u64 event_page_offset; /* from KFD */
+ __u32 event_trigger_data; /* from KFD - signal events only */
+ __u32 event_type; /* to KFD */
+ __u32 auto_reset; /* to KFD */
+ __u32 node_id; /* to KFD - only valid for certain
event types */
- uint32_t event_id; /* from KFD */
- uint32_t event_slot_index; /* from KFD */
+ __u32 event_id; /* from KFD */
+ __u32 event_slot_index; /* from KFD */
};
struct kfd_ioctl_destroy_event_args {
- uint32_t event_id; /* to KFD */
- uint32_t pad;
+ __u32 event_id; /* to KFD */
+ __u32 pad;
};
struct kfd_ioctl_set_event_args {
- uint32_t event_id; /* to KFD */
- uint32_t pad;
+ __u32 event_id; /* to KFD */
+ __u32 pad;
};
struct kfd_ioctl_reset_event_args {
- uint32_t event_id; /* to KFD */
- uint32_t pad;
+ __u32 event_id; /* to KFD */
+ __u32 pad;
};
struct kfd_memory_exception_failure {
- uint32_t NotPresent; /* Page not present or supervisor privilege */
- uint32_t ReadOnly; /* Write access to a read-only page */
- uint32_t NoExecute; /* Execute access to a page marked NX */
- uint32_t pad;
+ __u32 NotPresent; /* Page not present or supervisor privilege */
+ __u32 ReadOnly; /* Write access to a read-only page */
+ __u32 NoExecute; /* Execute access to a page marked NX */
+ __u32 pad;
};
/* memory exception data*/
struct kfd_hsa_memory_exception_data {
struct kfd_memory_exception_failure failure;
- uint64_t va;
- uint32_t gpu_id;
- uint32_t pad;
+ __u64 va;
+ __u32 gpu_id;
+ __u32 pad;
};
/* Event data*/
@@ -217,19 +217,19 @@ struct kfd_event_data {
union {
struct kfd_hsa_memory_exception_data memory_exception_data;
}; /* From KFD */
- uint64_t kfd_event_data_ext; /* pointer to an extension structure
+ __u64 kfd_event_data_ext; /* pointer to an extension structure
for future exception types */
- uint32_t event_id; /* to KFD */
- uint32_t pad;
+ __u32 event_id; /* to KFD */
+ __u32 pad;
};
struct kfd_ioctl_wait_events_args {
- uint64_t events_ptr; /* pointed to struct
+ __u64 events_ptr; /* pointed to struct
kfd_event_data array, to KFD */
- uint32_t num_events; /* to KFD */
- uint32_t wait_for_all; /* to KFD */
- uint32_t timeout; /* to KFD */
- uint32_t wait_result; /* from KFD */
+ __u32 num_events; /* to KFD */
+ __u32 wait_for_all; /* to KFD */
+ __u32 timeout; /* to KFD */
+ __u32 wait_result; /* from KFD */
};
struct kfd_ioctl_set_scratch_backing_va_args {
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 838887587411..7e99999d6236 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_KVM_H
#define __LINUX_KVM_H
diff --git a/include/uapi/linux/kvm_para.h b/include/uapi/linux/kvm_para.h
index fed506aeff62..dcf629dd2889 100644
--- a/include/uapi/linux/kvm_para.h
+++ b/include/uapi/linux/kvm_para.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_KVM_PARA_H
#define _UAPI__LINUX_KVM_PARA_H
diff --git a/include/uapi/linux/l2tp.h b/include/uapi/linux/l2tp.h
index b23c1914a182..d84ce5c1c9aa 100644
--- a/include/uapi/linux/l2tp.h
+++ b/include/uapi/linux/l2tp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* L2TP-over-IP socket for L2TPv3.
*
diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
index 44b8a6bd5fe1..282875cf8056 100644
--- a/include/uapi/linux/libc-compat.h
+++ b/include/uapi/linux/libc-compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Compatibility interface for userspace libc header coordination:
*
diff --git a/include/uapi/linux/lightnvm.h b/include/uapi/linux/lightnvm.h
index c8aec4b9e73b..42d1a434af29 100644
--- a/include/uapi/linux/lightnvm.h
+++ b/include/uapi/linux/lightnvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2015 CNEX Labs. All rights reserved.
*
diff --git a/include/uapi/linux/limits.h b/include/uapi/linux/limits.h
index 2d0f94162fb3..c3547f07605c 100644
--- a/include/uapi/linux/limits.h
+++ b/include/uapi/linux/limits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_LIMITS_H
#define _LINUX_LIMITS_H
diff --git a/include/uapi/linux/lirc.h b/include/uapi/linux/lirc.h
index 991ab4570b8e..c3aef4316fbf 100644
--- a/include/uapi/linux/lirc.h
+++ b/include/uapi/linux/lirc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* lirc.h - linux infrared remote control header file
* last modified 2010/07/13 by Jarod Wilson
diff --git a/include/uapi/linux/llc.h b/include/uapi/linux/llc.h
index a6c17f66ee94..cf8806b14d5f 100644
--- a/include/uapi/linux/llc.h
+++ b/include/uapi/linux/llc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/*
* IEEE 802.2 User Interface SAPs for Linux, data structures and indicators.
*
diff --git a/include/uapi/linux/loop.h b/include/uapi/linux/loop.h
index 23158dbe2424..080a8df134ef 100644
--- a/include/uapi/linux/loop.h
+++ b/include/uapi/linux/loop.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/*
* include/linux/loop.h
*
diff --git a/include/uapi/linux/lp.h b/include/uapi/linux/lp.h
index a3406a51f196..dafcfe4e4834 100644
--- a/include/uapi/linux/lp.h
+++ b/include/uapi/linux/lp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* usr/include/linux/lp.h c.1991-1992 James Wiegand
* many modifications copyright (C) 1992 Michael K. Johnson
diff --git a/include/uapi/linux/lwtunnel.h b/include/uapi/linux/lwtunnel.h
index 7fdd19ca7511..de696ca12f2c 100644
--- a/include/uapi/linux/lwtunnel.h
+++ b/include/uapi/linux/lwtunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LWTUNNEL_H_
#define _UAPI_LWTUNNEL_H_
diff --git a/include/uapi/linux/magic.h b/include/uapi/linux/magic.h
index e439565df838..aa50113ebe5b 100644
--- a/include/uapi/linux/magic.h
+++ b/include/uapi/linux/magic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_MAGIC_H__
#define __LINUX_MAGIC_H__
diff --git a/include/uapi/linux/major.h b/include/uapi/linux/major.h
index 19e195bee990..7e5fa8e15c43 100644
--- a/include/uapi/linux/major.h
+++ b/include/uapi/linux/major.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_MAJOR_H
#define _LINUX_MAJOR_H
diff --git a/include/uapi/linux/map_to_7segment.h b/include/uapi/linux/map_to_7segment.h
index 12d62a54d470..f9ed18134b83 100644
--- a/include/uapi/linux/map_to_7segment.h
+++ b/include/uapi/linux/map_to_7segment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) 2005 Henk Vergonet <Henk.Vergonet@gmail.com>
*
diff --git a/include/uapi/linux/matroxfb.h b/include/uapi/linux/matroxfb.h
index 8c22a8938642..23e025b7e362 100644
--- a/include/uapi/linux/matroxfb.h
+++ b/include/uapi/linux/matroxfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_MATROXFB_H__
#define __LINUX_MATROXFB_H__
diff --git a/include/uapi/linux/max2175.h b/include/uapi/linux/max2175.h
index 3ef5d264440f..daedc4eb9b6b 100644
--- a/include/uapi/linux/max2175.h
+++ b/include/uapi/linux/max2175.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* max2175.h
*
diff --git a/include/uapi/linux/mdio.h b/include/uapi/linux/mdio.h
index c94a510a577e..d435b00d64ad 100644
--- a/include/uapi/linux/mdio.h
+++ b/include/uapi/linux/mdio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/mdio.h: definitions for MDIO (clause 45) transceivers
* Copyright 2006-2009 Solarflare Communications Inc.
diff --git a/include/uapi/linux/media-bus-format.h b/include/uapi/linux/media-bus-format.h
index ef6fb307d2ce..9e3511742fdc 100644
--- a/include/uapi/linux/media-bus-format.h
+++ b/include/uapi/linux/media-bus-format.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Media Bus API header
*
diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h
index 4865f1e71339..b9b9446095e9 100644
--- a/include/uapi/linux/media.h
+++ b/include/uapi/linux/media.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Multimedia device API
*
diff --git a/include/uapi/linux/mei.h b/include/uapi/linux/mei.h
index 7c3b64f6a215..0f681cbd38d3 100644
--- a/include/uapi/linux/mei.h
+++ b/include/uapi/linux/mei.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/******************************************************************************
* Intel Management Engine Interface (Intel MEI) Linux driver
* Intel MEI Interface Header
diff --git a/include/uapi/linux/membarrier.h b/include/uapi/linux/membarrier.h
index 6d47b3249d8a..4e01ad7ffe98 100644
--- a/include/uapi/linux/membarrier.h
+++ b/include/uapi/linux/membarrier.h
@@ -52,21 +52,30 @@
* (non-running threads are de facto in such a
* state). This only covers threads from the
* same processes as the caller thread. This
- * command returns 0. The "expedited" commands
- * complete faster than the non-expedited ones,
- * they never block, but have the downside of
- * causing extra overhead.
+ * command returns 0 on success. The
+ * "expedited" commands complete faster than
+ * the non-expedited ones, they never block,
+ * but have the downside of causing extra
+ * overhead. A process needs to register its
+ * intent to use the private expedited command
+ * prior to using it, otherwise this command
+ * returns -EPERM.
+ * @MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED:
+ * Register the process intent to use
+ * MEMBARRIER_CMD_PRIVATE_EXPEDITED. Always
+ * returns 0.
*
* Command to be passed to the membarrier system call. The commands need to
* be a single bit each, except for MEMBARRIER_CMD_QUERY which is assigned to
* the value 0.
*/
enum membarrier_cmd {
- MEMBARRIER_CMD_QUERY = 0,
- MEMBARRIER_CMD_SHARED = (1 << 0),
+ MEMBARRIER_CMD_QUERY = 0,
+ MEMBARRIER_CMD_SHARED = (1 << 0),
/* reserved for MEMBARRIER_CMD_SHARED_EXPEDITED (1 << 1) */
/* reserved for MEMBARRIER_CMD_PRIVATE (1 << 2) */
- MEMBARRIER_CMD_PRIVATE_EXPEDITED = (1 << 3),
+ MEMBARRIER_CMD_PRIVATE_EXPEDITED = (1 << 3),
+ MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = (1 << 4),
};
#endif /* _UAPI_LINUX_MEMBARRIER_H */
diff --git a/include/uapi/linux/memfd.h b/include/uapi/linux/memfd.h
index 7f3a722dbd72..015a4c0bbb47 100644
--- a/include/uapi/linux/memfd.h
+++ b/include/uapi/linux/memfd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_MEMFD_H
#define _UAPI_LINUX_MEMFD_H
diff --git a/include/uapi/linux/mempolicy.h b/include/uapi/linux/mempolicy.h
index 2a4d89508fec..3354774af61e 100644
--- a/include/uapi/linux/mempolicy.h
+++ b/include/uapi/linux/mempolicy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* NUMA memory policies for Linux.
* Copyright 2003,2004 Andi Kleen SuSE Labs
diff --git a/include/uapi/linux/meye.h b/include/uapi/linux/meye.h
index 8ff50fe9e481..de9e3a954f3d 100644
--- a/include/uapi/linux/meye.h
+++ b/include/uapi/linux/meye.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Motion Eye video4linux driver for Sony Vaio PictureBook
*
diff --git a/include/uapi/linux/mic_common.h b/include/uapi/linux/mic_common.h
index e9686372029d..504e523f702c 100644
--- a/include/uapi/linux/mic_common.h
+++ b/include/uapi/linux/mic_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Intel MIC Platform Software Stack (MPSS)
*
diff --git a/include/uapi/linux/mic_ioctl.h b/include/uapi/linux/mic_ioctl.h
index feb0b4c0814c..687b9cd9d3e2 100644
--- a/include/uapi/linux/mic_ioctl.h
+++ b/include/uapi/linux/mic_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Intel MIC Platform Software Stack (MPSS)
*
diff --git a/include/uapi/linux/mii.h b/include/uapi/linux/mii.h
index 15d8510cdae0..b5c2fdcf23fd 100644
--- a/include/uapi/linux/mii.h
+++ b/include/uapi/linux/mii.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/mii.h: definitions for MII-compatible transceivers
* Originally drivers/net/sunhme.h.
diff --git a/include/uapi/linux/minix_fs.h b/include/uapi/linux/minix_fs.h
index 13fe09e0576a..95dbcb17eacd 100644
--- a/include/uapi/linux/minix_fs.h
+++ b/include/uapi/linux/minix_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_MINIX_FS_H
#define _LINUX_MINIX_FS_H
diff --git a/include/uapi/linux/mman.h b/include/uapi/linux/mman.h
index a937480d7cd3..bfd5938fede6 100644
--- a/include/uapi/linux/mman.h
+++ b/include/uapi/linux/mman.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_MMAN_H
#define _UAPI_LINUX_MMAN_H
diff --git a/include/uapi/linux/mmc/ioctl.h b/include/uapi/linux/mmc/ioctl.h
index 700a55156eee..45f369dc0a42 100644
--- a/include/uapi/linux/mmc/ioctl.h
+++ b/include/uapi/linux/mmc/ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef LINUX_MMC_IOCTL_H
#define LINUX_MMC_IOCTL_H
diff --git a/include/uapi/linux/mmtimer.h b/include/uapi/linux/mmtimer.h
index 884cabf16088..409fae1de383 100644
--- a/include/uapi/linux/mmtimer.h
+++ b/include/uapi/linux/mmtimer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Intel Multimedia Timer device interface
*
diff --git a/include/uapi/linux/module.h b/include/uapi/linux/module.h
index 38da4258b12f..50d98ec5e866 100644
--- a/include/uapi/linux/module.h
+++ b/include/uapi/linux/module.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_MODULE_H
#define _UAPI_LINUX_MODULE_H
diff --git a/include/uapi/linux/mpls.h b/include/uapi/linux/mpls.h
index 77a19dfe3990..1ef5d6002a4a 100644
--- a/include/uapi/linux/mpls.h
+++ b/include/uapi/linux/mpls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_MPLS_H
#define _UAPI_MPLS_H
diff --git a/include/uapi/linux/mpls_iptunnel.h b/include/uapi/linux/mpls_iptunnel.h
index f5e45095b0bb..521f2e605f13 100644
--- a/include/uapi/linux/mpls_iptunnel.h
+++ b/include/uapi/linux/mpls_iptunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* mpls tunnel api
*
diff --git a/include/uapi/linux/mqueue.h b/include/uapi/linux/mqueue.h
index bbd5116ea739..b516b66840ad 100644
--- a/include/uapi/linux/mqueue.h
+++ b/include/uapi/linux/mqueue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/* Copyright (C) 2003 Krzysztof Benedyczak & Michal Wronski
This program is free software; you can redistribute it and/or
diff --git a/include/uapi/linux/mroute.h b/include/uapi/linux/mroute.h
index e8e5041dea8e..10f9ff9426a2 100644
--- a/include/uapi/linux/mroute.h
+++ b/include/uapi/linux/mroute.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_MROUTE_H
#define _UAPI__LINUX_MROUTE_H
diff --git a/include/uapi/linux/mroute6.h b/include/uapi/linux/mroute6.h
index e4746816c855..9999cc006390 100644
--- a/include/uapi/linux/mroute6.h
+++ b/include/uapi/linux/mroute6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_MROUTE6_H
#define _UAPI__LINUX_MROUTE6_H
diff --git a/include/uapi/linux/msdos_fs.h b/include/uapi/linux/msdos_fs.h
index e956704f5fb1..a45d0754102e 100644
--- a/include/uapi/linux/msdos_fs.h
+++ b/include/uapi/linux/msdos_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_MSDOS_FS_H
#define _UAPI_LINUX_MSDOS_FS_H
diff --git a/include/uapi/linux/msg.h b/include/uapi/linux/msg.h
index f51c8001dbe5..5d5ab81dc9be 100644
--- a/include/uapi/linux/msg.h
+++ b/include/uapi/linux/msg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_MSG_H
#define _UAPI_LINUX_MSG_H
diff --git a/include/uapi/linux/mtio.h b/include/uapi/linux/mtio.h
index 18543e2db06f..a1191fecc592 100644
--- a/include/uapi/linux/mtio.h
+++ b/include/uapi/linux/mtio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/mtio.h header file for Linux. Written by H. Bergman
*
diff --git a/include/uapi/linux/n_r3964.h b/include/uapi/linux/n_r3964.h
index 81337cbf40b7..6bbd18520f30 100644
--- a/include/uapi/linux/n_r3964.h
+++ b/include/uapi/linux/n_r3964.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/* r3964 linediscipline for linux
*
* -----------------------------------------------------------
diff --git a/include/uapi/linux/nbd-netlink.h b/include/uapi/linux/nbd-netlink.h
index 6f7ca3d63a65..c5d0ef7aa7d5 100644
--- a/include/uapi/linux/nbd-netlink.h
+++ b/include/uapi/linux/nbd-netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2017 Facebook. All rights reserved.
*
diff --git a/include/uapi/linux/nbd.h b/include/uapi/linux/nbd.h
index a50527ebf671..85a3fb65e40a 100644
--- a/include/uapi/linux/nbd.h
+++ b/include/uapi/linux/nbd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/*
* 1999 Copyright (C) Pavel Machek, pavel@ucw.cz. This code is GPL.
* 1999/11/04 Copyright (C) 1999 VMware, Inc. (Regis "HPReg" Duchesne)
diff --git a/include/uapi/linux/ncp.h b/include/uapi/linux/ncp.h
index 99f0adeeb3f3..ca6f3d42c88f 100644
--- a/include/uapi/linux/ncp.h
+++ b/include/uapi/linux/ncp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ncp.h
*
diff --git a/include/uapi/linux/ncp_fs.h b/include/uapi/linux/ncp_fs.h
index e13eefef0653..e76a44229d2f 100644
--- a/include/uapi/linux/ncp_fs.h
+++ b/include/uapi/linux/ncp_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ncp_fs.h
*
diff --git a/include/uapi/linux/ncp_mount.h b/include/uapi/linux/ncp_mount.h
index dfcbea2d889f..9bdbcd68c329 100644
--- a/include/uapi/linux/ncp_mount.h
+++ b/include/uapi/linux/ncp_mount.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ncp_mount.h
*
diff --git a/include/uapi/linux/ncp_no.h b/include/uapi/linux/ncp_no.h
index cddaa48fb182..654d7c7f5d92 100644
--- a/include/uapi/linux/ncp_no.h
+++ b/include/uapi/linux/ncp_no.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _NCP_NO
#define _NCP_NO
diff --git a/include/uapi/linux/neighbour.h b/include/uapi/linux/neighbour.h
index 3199d28980b3..904db6148476 100644
--- a/include/uapi/linux/neighbour.h
+++ b/include/uapi/linux/neighbour.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_NEIGHBOUR_H
#define __LINUX_NEIGHBOUR_H
diff --git a/include/uapi/linux/net.h b/include/uapi/linux/net.h
index 9457239ed219..4dabec6bd957 100644
--- a/include/uapi/linux/net.h
+++ b/include/uapi/linux/net.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* NET An implementation of the SOCKET network access protocol.
* This is the master header file for the Linux NET layer,
diff --git a/include/uapi/linux/net_dropmon.h b/include/uapi/linux/net_dropmon.h
index 2a739462caeb..5edbd0a675fd 100644
--- a/include/uapi/linux/net_dropmon.h
+++ b/include/uapi/linux/net_dropmon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __NET_DROPMON_H
#define __NET_DROPMON_H
diff --git a/include/uapi/linux/net_namespace.h b/include/uapi/linux/net_namespace.h
index 778cd2c3ebf4..0187c74d8889 100644
--- a/include/uapi/linux/net_namespace.h
+++ b/include/uapi/linux/net_namespace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* Copyright (c) 2015 6WIND S.A.
* Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
*
diff --git a/include/uapi/linux/net_tstamp.h b/include/uapi/linux/net_tstamp.h
index 3d421d912193..4fe104b2411f 100644
--- a/include/uapi/linux/net_tstamp.h
+++ b/include/uapi/linux/net_tstamp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Userspace API for hardware time stamping of network packets
*
diff --git a/include/uapi/linux/netconf.h b/include/uapi/linux/netconf.h
index 7e5f0f3e31bf..c84fcdfca862 100644
--- a/include/uapi/linux/netconf.h
+++ b/include/uapi/linux/netconf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_NETCONF_H_
#define _UAPI_LINUX_NETCONF_H_
diff --git a/include/uapi/linux/netdevice.h b/include/uapi/linux/netdevice.h
index 55818543342d..f3770c5b0fac 100644
--- a/include/uapi/linux/netdevice.h
+++ b/include/uapi/linux/netdevice.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/netfilter.h b/include/uapi/linux/netfilter.h
index c111a91adcc0..cca10e767cd8 100644
--- a/include/uapi/linux/netfilter.h
+++ b/include/uapi/linux/netfilter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_NETFILTER_H
#define _UAPI__LINUX_NETFILTER_H
diff --git a/include/uapi/linux/netfilter/ipset/ip_set.h b/include/uapi/linux/netfilter/ipset/ip_set.h
index ebb5154976de..60236f694143 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
* Patrick Schaaf <bof@bof.de>
* Martin Josefsson <gandalf@wlug.westbo.se>
diff --git a/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h b/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
index fd5024d26269..c6b146db9693 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__IP_SET_BITMAP_H
#define _UAPI__IP_SET_BITMAP_H
diff --git a/include/uapi/linux/netfilter/ipset/ip_set_hash.h b/include/uapi/linux/netfilter/ipset/ip_set_hash.h
index 82deeb883ac4..880749ace798 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set_hash.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set_hash.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__IP_SET_HASH_H
#define _UAPI__IP_SET_HASH_H
diff --git a/include/uapi/linux/netfilter/ipset/ip_set_list.h b/include/uapi/linux/netfilter/ipset/ip_set_list.h
index 84d430368266..e6d7feb522cd 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set_list.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set_list.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__IP_SET_LIST_H
#define _UAPI__IP_SET_LIST_H
diff --git a/include/uapi/linux/netfilter/nf_conntrack_common.h b/include/uapi/linux/netfilter/nf_conntrack_common.h
index dc947e59d03a..3fea7709a441 100644
--- a/include/uapi/linux/netfilter/nf_conntrack_common.h
+++ b/include/uapi/linux/netfilter/nf_conntrack_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_NF_CONNTRACK_COMMON_H
#define _UAPI_NF_CONNTRACK_COMMON_H
/* Connection state tracking for netfilter. This is separated from,
diff --git a/include/uapi/linux/netfilter/nf_conntrack_ftp.h b/include/uapi/linux/netfilter/nf_conntrack_ftp.h
index 1030315a41b5..8eb6b9ef2071 100644
--- a/include/uapi/linux/netfilter/nf_conntrack_ftp.h
+++ b/include/uapi/linux/netfilter/nf_conntrack_ftp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_NF_CONNTRACK_FTP_H
#define _UAPI_NF_CONNTRACK_FTP_H
/* FTP tracking. */
diff --git a/include/uapi/linux/netfilter/nf_conntrack_sctp.h b/include/uapi/linux/netfilter/nf_conntrack_sctp.h
index 2cbc366c3fb4..edc6ddab0de6 100644
--- a/include/uapi/linux/netfilter/nf_conntrack_sctp.h
+++ b/include/uapi/linux/netfilter/nf_conntrack_sctp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_NF_CONNTRACK_SCTP_H
#define _UAPI_NF_CONNTRACK_SCTP_H
/* SCTP tracking. */
diff --git a/include/uapi/linux/netfilter/nf_conntrack_tcp.h b/include/uapi/linux/netfilter/nf_conntrack_tcp.h
index ef9f80f0f529..74b91151d494 100644
--- a/include/uapi/linux/netfilter/nf_conntrack_tcp.h
+++ b/include/uapi/linux/netfilter/nf_conntrack_tcp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_NF_CONNTRACK_TCP_H
#define _UAPI_NF_CONNTRACK_TCP_H
/* TCP tracking. */
diff --git a/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h b/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h
index 526b42496b78..64390fac6f7e 100644
--- a/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h
+++ b/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _NF_CONNTRACK_TUPLE_COMMON_H
#define _NF_CONNTRACK_TUPLE_COMMON_H
diff --git a/include/uapi/linux/netfilter/nf_log.h b/include/uapi/linux/netfilter/nf_log.h
index d0b5fa91ff54..2ae00932d3d2 100644
--- a/include/uapi/linux/netfilter/nf_log.h
+++ b/include/uapi/linux/netfilter/nf_log.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _NETFILTER_NF_LOG_H
#define _NETFILTER_NF_LOG_H
diff --git a/include/uapi/linux/netfilter/nf_nat.h b/include/uapi/linux/netfilter/nf_nat.h
index 0880781ad7b6..a33000da7229 100644
--- a/include/uapi/linux/netfilter/nf_nat.h
+++ b/include/uapi/linux/netfilter/nf_nat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _NETFILTER_NF_NAT_H
#define _NETFILTER_NF_NAT_H
diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h
index 871afa4871bf..a3ee277b17a1 100644
--- a/include/uapi/linux/netfilter/nf_tables.h
+++ b/include/uapi/linux/netfilter/nf_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_NF_TABLES_H
#define _LINUX_NF_TABLES_H
diff --git a/include/uapi/linux/netfilter/nf_tables_compat.h b/include/uapi/linux/netfilter/nf_tables_compat.h
index 8310f5f76551..0e2b9fcb71b7 100644
--- a/include/uapi/linux/netfilter/nf_tables_compat.h
+++ b/include/uapi/linux/netfilter/nf_tables_compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _NFT_COMPAT_NFNETLINK_H_
#define _NFT_COMPAT_NFNETLINK_H_
diff --git a/include/uapi/linux/netfilter/nfnetlink.h b/include/uapi/linux/netfilter/nfnetlink.h
index a09906a30d77..5bc960f220b3 100644
--- a/include/uapi/linux/netfilter/nfnetlink.h
+++ b/include/uapi/linux/netfilter/nfnetlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_NFNETLINK_H
#define _UAPI_NFNETLINK_H
#include <linux/types.h>
diff --git a/include/uapi/linux/netfilter/nfnetlink_acct.h b/include/uapi/linux/netfilter/nfnetlink_acct.h
index 36047ec70f37..7cb66d3218fc 100644
--- a/include/uapi/linux/netfilter/nfnetlink_acct.h
+++ b/include/uapi/linux/netfilter/nfnetlink_acct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_NFNL_ACCT_H_
#define _UAPI_NFNL_ACCT_H_
diff --git a/include/uapi/linux/netfilter/nfnetlink_compat.h b/include/uapi/linux/netfilter/nfnetlink_compat.h
index ffb95036bbd4..93bcdccef81d 100644
--- a/include/uapi/linux/netfilter/nfnetlink_compat.h
+++ b/include/uapi/linux/netfilter/nfnetlink_compat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _NFNETLINK_COMPAT_H
#define _NFNETLINK_COMPAT_H
diff --git a/include/uapi/linux/netfilter/nfnetlink_conntrack.h b/include/uapi/linux/netfilter/nfnetlink_conntrack.h
index 6deb8867c5fc..7397e022ce6e 100644
--- a/include/uapi/linux/netfilter/nfnetlink_conntrack.h
+++ b/include/uapi/linux/netfilter/nfnetlink_conntrack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IPCONNTRACK_NETLINK_H
#define _IPCONNTRACK_NETLINK_H
#include <linux/netfilter/nfnetlink.h>
diff --git a/include/uapi/linux/netfilter/nfnetlink_cthelper.h b/include/uapi/linux/netfilter/nfnetlink_cthelper.h
index 33659f6fad3e..a13137afc429 100644
--- a/include/uapi/linux/netfilter/nfnetlink_cthelper.h
+++ b/include/uapi/linux/netfilter/nfnetlink_cthelper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _NFNL_CTHELPER_H_
#define _NFNL_CTHELPER_H_
diff --git a/include/uapi/linux/netfilter/nfnetlink_cttimeout.h b/include/uapi/linux/netfilter/nfnetlink_cttimeout.h
index f2c10dc140d6..6b20fb22717b 100644
--- a/include/uapi/linux/netfilter/nfnetlink_cttimeout.h
+++ b/include/uapi/linux/netfilter/nfnetlink_cttimeout.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _CTTIMEOUT_NETLINK_H
#define _CTTIMEOUT_NETLINK_H
#include <linux/netfilter/nfnetlink.h>
diff --git a/include/uapi/linux/netfilter/nfnetlink_log.h b/include/uapi/linux/netfilter/nfnetlink_log.h
index fb21f0c717a1..20983cb195a0 100644
--- a/include/uapi/linux/netfilter/nfnetlink_log.h
+++ b/include/uapi/linux/netfilter/nfnetlink_log.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _NFNETLINK_LOG_H
#define _NFNETLINK_LOG_H
diff --git a/include/uapi/linux/netfilter/nfnetlink_queue.h b/include/uapi/linux/netfilter/nfnetlink_queue.h
index d42f0396fe30..bcb2cb5d40b9 100644
--- a/include/uapi/linux/netfilter/nfnetlink_queue.h
+++ b/include/uapi/linux/netfilter/nfnetlink_queue.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _NFNETLINK_QUEUE_H
#define _NFNETLINK_QUEUE_H
diff --git a/include/uapi/linux/netfilter/x_tables.h b/include/uapi/linux/netfilter/x_tables.h
index c36969b91533..a8283f7dbc51 100644
--- a/include/uapi/linux/netfilter/x_tables.h
+++ b/include/uapi/linux/netfilter/x_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_X_TABLES_H
#define _UAPI_X_TABLES_H
#include <linux/kernel.h>
diff --git a/include/uapi/linux/netfilter/xt_AUDIT.h b/include/uapi/linux/netfilter/xt_AUDIT.h
index 38751d2ea52b..1b314e2f84ac 100644
--- a/include/uapi/linux/netfilter/xt_AUDIT.h
+++ b/include/uapi/linux/netfilter/xt_AUDIT.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Header file for iptables xt_AUDIT target
*
diff --git a/include/uapi/linux/netfilter/xt_CHECKSUM.h b/include/uapi/linux/netfilter/xt_CHECKSUM.h
index 9a2e4661654e..c578088e61b9 100644
--- a/include/uapi/linux/netfilter/xt_CHECKSUM.h
+++ b/include/uapi/linux/netfilter/xt_CHECKSUM.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* Header file for iptables ipt_CHECKSUM target
*
* (C) 2002 by Harald Welte <laforge@gnumonks.org>
diff --git a/include/uapi/linux/netfilter/xt_CLASSIFY.h b/include/uapi/linux/netfilter/xt_CLASSIFY.h
index a813bf14dd63..fe059a98c1d3 100644
--- a/include/uapi/linux/netfilter/xt_CLASSIFY.h
+++ b/include/uapi/linux/netfilter/xt_CLASSIFY.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_CLASSIFY_H
#define _XT_CLASSIFY_H
diff --git a/include/uapi/linux/netfilter/xt_CONNMARK.h b/include/uapi/linux/netfilter/xt_CONNMARK.h
index 2f2e48ec8023..36cc956ead1a 100644
--- a/include/uapi/linux/netfilter/xt_CONNMARK.h
+++ b/include/uapi/linux/netfilter/xt_CONNMARK.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_CONNMARK_H_target
#define _XT_CONNMARK_H_target
diff --git a/include/uapi/linux/netfilter/xt_CONNSECMARK.h b/include/uapi/linux/netfilter/xt_CONNSECMARK.h
index b973ff80fa1e..ca078bb3c584 100644
--- a/include/uapi/linux/netfilter/xt_CONNSECMARK.h
+++ b/include/uapi/linux/netfilter/xt_CONNSECMARK.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_CONNSECMARK_H_target
#define _XT_CONNSECMARK_H_target
diff --git a/include/uapi/linux/netfilter/xt_CT.h b/include/uapi/linux/netfilter/xt_CT.h
index 9e520418b858..868fa08e1fbb 100644
--- a/include/uapi/linux/netfilter/xt_CT.h
+++ b/include/uapi/linux/netfilter/xt_CT.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_CT_H
#define _XT_CT_H
diff --git a/include/uapi/linux/netfilter/xt_DSCP.h b/include/uapi/linux/netfilter/xt_DSCP.h
index 648e0b3bed29..223d635e8b6f 100644
--- a/include/uapi/linux/netfilter/xt_DSCP.h
+++ b/include/uapi/linux/netfilter/xt_DSCP.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* x_tables module for setting the IPv4/IPv6 DSCP field
*
* (C) 2002 Harald Welte <laforge@gnumonks.org>
diff --git a/include/uapi/linux/netfilter/xt_HMARK.h b/include/uapi/linux/netfilter/xt_HMARK.h
index 3fb48c8d8d78..2d4b751a7115 100644
--- a/include/uapi/linux/netfilter/xt_HMARK.h
+++ b/include/uapi/linux/netfilter/xt_HMARK.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef XT_HMARK_H_
#define XT_HMARK_H_
diff --git a/include/uapi/linux/netfilter/xt_IDLETIMER.h b/include/uapi/linux/netfilter/xt_IDLETIMER.h
index 208ae9387331..3c586a19baea 100644
--- a/include/uapi/linux/netfilter/xt_IDLETIMER.h
+++ b/include/uapi/linux/netfilter/xt_IDLETIMER.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/include/linux/netfilter/xt_IDLETIMER.h
*
diff --git a/include/uapi/linux/netfilter/xt_LED.h b/include/uapi/linux/netfilter/xt_LED.h
index f5509e7524d3..4fe0f1395807 100644
--- a/include/uapi/linux/netfilter/xt_LED.h
+++ b/include/uapi/linux/netfilter/xt_LED.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_LED_H
#define _XT_LED_H
diff --git a/include/uapi/linux/netfilter/xt_LOG.h b/include/uapi/linux/netfilter/xt_LOG.h
index cac079095305..167d4ddd2476 100644
--- a/include/uapi/linux/netfilter/xt_LOG.h
+++ b/include/uapi/linux/netfilter/xt_LOG.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_LOG_H
#define _XT_LOG_H
diff --git a/include/uapi/linux/netfilter/xt_MARK.h b/include/uapi/linux/netfilter/xt_MARK.h
index 41c456deba22..f1fe2b4be933 100644
--- a/include/uapi/linux/netfilter/xt_MARK.h
+++ b/include/uapi/linux/netfilter/xt_MARK.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_MARK_H_target
#define _XT_MARK_H_target
diff --git a/include/uapi/linux/netfilter/xt_NFLOG.h b/include/uapi/linux/netfilter/xt_NFLOG.h
index f33070730fc8..517809771909 100644
--- a/include/uapi/linux/netfilter/xt_NFLOG.h
+++ b/include/uapi/linux/netfilter/xt_NFLOG.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_NFLOG_TARGET
#define _XT_NFLOG_TARGET
diff --git a/include/uapi/linux/netfilter/xt_NFQUEUE.h b/include/uapi/linux/netfilter/xt_NFQUEUE.h
index 8bb5fe657d34..bb767fd73ed1 100644
--- a/include/uapi/linux/netfilter/xt_NFQUEUE.h
+++ b/include/uapi/linux/netfilter/xt_NFQUEUE.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* iptables module for using NFQUEUE mechanism
*
* (C) 2005 Harald Welte <laforge@netfilter.org>
diff --git a/include/uapi/linux/netfilter/xt_RATEEST.h b/include/uapi/linux/netfilter/xt_RATEEST.h
index ec1b57047e03..2b87a71e6266 100644
--- a/include/uapi/linux/netfilter/xt_RATEEST.h
+++ b/include/uapi/linux/netfilter/xt_RATEEST.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_RATEEST_TARGET_H
#define _XT_RATEEST_TARGET_H
diff --git a/include/uapi/linux/netfilter/xt_SECMARK.h b/include/uapi/linux/netfilter/xt_SECMARK.h
index 989092bd6274..1f2a708413f5 100644
--- a/include/uapi/linux/netfilter/xt_SECMARK.h
+++ b/include/uapi/linux/netfilter/xt_SECMARK.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_SECMARK_H_target
#define _XT_SECMARK_H_target
diff --git a/include/uapi/linux/netfilter/xt_SYNPROXY.h b/include/uapi/linux/netfilter/xt_SYNPROXY.h
index ca67e61d2a61..ea5eba15d4c1 100644
--- a/include/uapi/linux/netfilter/xt_SYNPROXY.h
+++ b/include/uapi/linux/netfilter/xt_SYNPROXY.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_SYNPROXY_H
#define _XT_SYNPROXY_H
diff --git a/include/uapi/linux/netfilter/xt_TCPMSS.h b/include/uapi/linux/netfilter/xt_TCPMSS.h
index 9a6960afc134..65ea6c9dab4b 100644
--- a/include/uapi/linux/netfilter/xt_TCPMSS.h
+++ b/include/uapi/linux/netfilter/xt_TCPMSS.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_TCPMSS_H
#define _XT_TCPMSS_H
diff --git a/include/uapi/linux/netfilter/xt_TCPOPTSTRIP.h b/include/uapi/linux/netfilter/xt_TCPOPTSTRIP.h
index 7157318499c2..6bd51cd6f8da 100644
--- a/include/uapi/linux/netfilter/xt_TCPOPTSTRIP.h
+++ b/include/uapi/linux/netfilter/xt_TCPOPTSTRIP.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_TCPOPTSTRIP_H
#define _XT_TCPOPTSTRIP_H
diff --git a/include/uapi/linux/netfilter/xt_TEE.h b/include/uapi/linux/netfilter/xt_TEE.h
index 01092023404b..eb854917f828 100644
--- a/include/uapi/linux/netfilter/xt_TEE.h
+++ b/include/uapi/linux/netfilter/xt_TEE.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_TEE_TARGET_H
#define _XT_TEE_TARGET_H
diff --git a/include/uapi/linux/netfilter/xt_TPROXY.h b/include/uapi/linux/netfilter/xt_TPROXY.h
index 8d693eefdc1f..348957b02a82 100644
--- a/include/uapi/linux/netfilter/xt_TPROXY.h
+++ b/include/uapi/linux/netfilter/xt_TPROXY.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_TPROXY_H
#define _XT_TPROXY_H
diff --git a/include/uapi/linux/netfilter/xt_addrtype.h b/include/uapi/linux/netfilter/xt_addrtype.h
index b156baa9d55e..2102dff74c31 100644
--- a/include/uapi/linux/netfilter/xt_addrtype.h
+++ b/include/uapi/linux/netfilter/xt_addrtype.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_ADDRTYPE_H
#define _XT_ADDRTYPE_H
diff --git a/include/uapi/linux/netfilter/xt_bpf.h b/include/uapi/linux/netfilter/xt_bpf.h
index b97725af2ac0..a05adda26d3e 100644
--- a/include/uapi/linux/netfilter/xt_bpf.h
+++ b/include/uapi/linux/netfilter/xt_bpf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_BPF_H
#define _XT_BPF_H
@@ -23,6 +24,7 @@ enum xt_bpf_modes {
XT_BPF_MODE_FD_PINNED,
XT_BPF_MODE_FD_ELF,
};
+#define XT_BPF_MODE_PATH_PINNED XT_BPF_MODE_FD_PINNED
struct xt_bpf_info_v1 {
__u16 mode;
diff --git a/include/uapi/linux/netfilter/xt_cgroup.h b/include/uapi/linux/netfilter/xt_cgroup.h
index 1e4b37b93bef..e96dfa1b34f7 100644
--- a/include/uapi/linux/netfilter/xt_cgroup.h
+++ b/include/uapi/linux/netfilter/xt_cgroup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_XT_CGROUP_H
#define _UAPI_XT_CGROUP_H
diff --git a/include/uapi/linux/netfilter/xt_cluster.h b/include/uapi/linux/netfilter/xt_cluster.h
index 9b883c8fbf54..ed8e0561f99c 100644
--- a/include/uapi/linux/netfilter/xt_cluster.h
+++ b/include/uapi/linux/netfilter/xt_cluster.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_CLUSTER_MATCH_H
#define _XT_CLUSTER_MATCH_H
diff --git a/include/uapi/linux/netfilter/xt_comment.h b/include/uapi/linux/netfilter/xt_comment.h
index 0ea5e79f5bd7..85d284082542 100644
--- a/include/uapi/linux/netfilter/xt_comment.h
+++ b/include/uapi/linux/netfilter/xt_comment.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_COMMENT_H
#define _XT_COMMENT_H
diff --git a/include/uapi/linux/netfilter/xt_connbytes.h b/include/uapi/linux/netfilter/xt_connbytes.h
index f1d6c15bd9e3..0bae507db23e 100644
--- a/include/uapi/linux/netfilter/xt_connbytes.h
+++ b/include/uapi/linux/netfilter/xt_connbytes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_CONNBYTES_H
#define _XT_CONNBYTES_H
diff --git a/include/uapi/linux/netfilter/xt_connlabel.h b/include/uapi/linux/netfilter/xt_connlabel.h
index c4bc9ee9b330..2312f0ec07b2 100644
--- a/include/uapi/linux/netfilter/xt_connlabel.h
+++ b/include/uapi/linux/netfilter/xt_connlabel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <linux/types.h>
#define XT_CONNLABEL_MAXBIT 127
diff --git a/include/uapi/linux/netfilter/xt_connlimit.h b/include/uapi/linux/netfilter/xt_connlimit.h
index f1656096121e..07e5e9d47882 100644
--- a/include/uapi/linux/netfilter/xt_connlimit.h
+++ b/include/uapi/linux/netfilter/xt_connlimit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_CONNLIMIT_H
#define _XT_CONNLIMIT_H
diff --git a/include/uapi/linux/netfilter/xt_connmark.h b/include/uapi/linux/netfilter/xt_connmark.h
index efc17a8305fb..408a9654f05c 100644
--- a/include/uapi/linux/netfilter/xt_connmark.h
+++ b/include/uapi/linux/netfilter/xt_connmark.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _XT_CONNMARK_H
#define _XT_CONNMARK_H
diff --git a/include/uapi/linux/netfilter/xt_conntrack.h b/include/uapi/linux/netfilter/xt_conntrack.h
index e5bd3083a843..cdd14a83d29d 100644
--- a/include/uapi/linux/netfilter/xt_conntrack.h
+++ b/include/uapi/linux/netfilter/xt_conntrack.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/* Header file for kernel module to match connection tracking information.
* GPL (C) 2001 Marc Boucher (marc@mbsi.ca).
*/
diff --git a/include/uapi/linux/netfilter/xt_cpu.h b/include/uapi/linux/netfilter/xt_cpu.h
index 93c7f11d8f42..b442e1f6f598 100644
--- a/include/uapi/linux/netfilter/xt_cpu.h
+++ b/include/uapi/linux/netfilter/xt_cpu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_CPU_H
#define _XT_CPU_H
diff --git a/include/uapi/linux/netfilter/xt_dccp.h b/include/uapi/linux/netfilter/xt_dccp.h
index a579e1b6f040..564e61c5703f 100644
--- a/include/uapi/linux/netfilter/xt_dccp.h
+++ b/include/uapi/linux/netfilter/xt_dccp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_DCCP_H_
#define _XT_DCCP_H_
diff --git a/include/uapi/linux/netfilter/xt_devgroup.h b/include/uapi/linux/netfilter/xt_devgroup.h
index 1babde0ec900..79ed351a4525 100644
--- a/include/uapi/linux/netfilter/xt_devgroup.h
+++ b/include/uapi/linux/netfilter/xt_devgroup.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_DEVGROUP_H
#define _XT_DEVGROUP_H
diff --git a/include/uapi/linux/netfilter/xt_dscp.h b/include/uapi/linux/netfilter/xt_dscp.h
index 15f8932ad5ce..7594e4df8587 100644
--- a/include/uapi/linux/netfilter/xt_dscp.h
+++ b/include/uapi/linux/netfilter/xt_dscp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* x_tables module for matching the IPv4/IPv6 DSCP field
*
* (C) 2002 Harald Welte <laforge@gnumonks.org>
diff --git a/include/uapi/linux/netfilter/xt_ecn.h b/include/uapi/linux/netfilter/xt_ecn.h
index 7158fca364f2..2c301c1cbff2 100644
--- a/include/uapi/linux/netfilter/xt_ecn.h
+++ b/include/uapi/linux/netfilter/xt_ecn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* iptables module for matching the ECN header in IPv4 and TCP header
*
* (C) 2002 Harald Welte <laforge@gnumonks.org>
diff --git a/include/uapi/linux/netfilter/xt_esp.h b/include/uapi/linux/netfilter/xt_esp.h
index ee6882408000..fa57a208f684 100644
--- a/include/uapi/linux/netfilter/xt_esp.h
+++ b/include/uapi/linux/netfilter/xt_esp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_ESP_H
#define _XT_ESP_H
diff --git a/include/uapi/linux/netfilter/xt_hashlimit.h b/include/uapi/linux/netfilter/xt_hashlimit.h
index aa98573248b1..721a8de6c5b3 100644
--- a/include/uapi/linux/netfilter/xt_hashlimit.h
+++ b/include/uapi/linux/netfilter/xt_hashlimit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_XT_HASHLIMIT_H
#define _UAPI_XT_HASHLIMIT_H
diff --git a/include/uapi/linux/netfilter/xt_helper.h b/include/uapi/linux/netfilter/xt_helper.h
index 6b42763f999d..53aa1458d6b7 100644
--- a/include/uapi/linux/netfilter/xt_helper.h
+++ b/include/uapi/linux/netfilter/xt_helper.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_HELPER_H
#define _XT_HELPER_H
diff --git a/include/uapi/linux/netfilter/xt_ipcomp.h b/include/uapi/linux/netfilter/xt_ipcomp.h
index 45c7e40eb8e1..69b12e76eaf7 100644
--- a/include/uapi/linux/netfilter/xt_ipcomp.h
+++ b/include/uapi/linux/netfilter/xt_ipcomp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_IPCOMP_H
#define _XT_IPCOMP_H
diff --git a/include/uapi/linux/netfilter/xt_iprange.h b/include/uapi/linux/netfilter/xt_iprange.h
index 25fd7cf851f0..551bec7a22fc 100644
--- a/include/uapi/linux/netfilter/xt_iprange.h
+++ b/include/uapi/linux/netfilter/xt_iprange.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_NETFILTER_XT_IPRANGE_H
#define _LINUX_NETFILTER_XT_IPRANGE_H 1
diff --git a/include/uapi/linux/netfilter/xt_ipvs.h b/include/uapi/linux/netfilter/xt_ipvs.h
index e03b9c31a39d..925c76996dc4 100644
--- a/include/uapi/linux/netfilter/xt_ipvs.h
+++ b/include/uapi/linux/netfilter/xt_ipvs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_IPVS_H
#define _XT_IPVS_H
diff --git a/include/uapi/linux/netfilter/xt_l2tp.h b/include/uapi/linux/netfilter/xt_l2tp.h
index 7dccfa0acbfa..990b52a49fab 100644
--- a/include/uapi/linux/netfilter/xt_l2tp.h
+++ b/include/uapi/linux/netfilter/xt_l2tp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_NETFILTER_XT_L2TP_H
#define _LINUX_NETFILTER_XT_L2TP_H
diff --git a/include/uapi/linux/netfilter/xt_length.h b/include/uapi/linux/netfilter/xt_length.h
index b82ed7c4b1e0..513f653e2f6b 100644
--- a/include/uapi/linux/netfilter/xt_length.h
+++ b/include/uapi/linux/netfilter/xt_length.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_LENGTH_H
#define _XT_LENGTH_H
diff --git a/include/uapi/linux/netfilter/xt_limit.h b/include/uapi/linux/netfilter/xt_limit.h
index bb47fc4d2ade..1d6e4ce9a646 100644
--- a/include/uapi/linux/netfilter/xt_limit.h
+++ b/include/uapi/linux/netfilter/xt_limit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_RATE_H
#define _XT_RATE_H
diff --git a/include/uapi/linux/netfilter/xt_mac.h b/include/uapi/linux/netfilter/xt_mac.h
index 9a19a08a9181..c4dd5185cfc4 100644
--- a/include/uapi/linux/netfilter/xt_mac.h
+++ b/include/uapi/linux/netfilter/xt_mac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_MAC_H
#define _XT_MAC_H
diff --git a/include/uapi/linux/netfilter/xt_mark.h b/include/uapi/linux/netfilter/xt_mark.h
index ecadc40d5cde..9d0526ced8f0 100644
--- a/include/uapi/linux/netfilter/xt_mark.h
+++ b/include/uapi/linux/netfilter/xt_mark.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_MARK_H
#define _XT_MARK_H
diff --git a/include/uapi/linux/netfilter/xt_multiport.h b/include/uapi/linux/netfilter/xt_multiport.h
index 5b7e72dfffc5..ffecf696454b 100644
--- a/include/uapi/linux/netfilter/xt_multiport.h
+++ b/include/uapi/linux/netfilter/xt_multiport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_MULTIPORT_H
#define _XT_MULTIPORT_H
diff --git a/include/uapi/linux/netfilter/xt_nfacct.h b/include/uapi/linux/netfilter/xt_nfacct.h
index 3e19c8a86576..5c8a4d760ee3 100644
--- a/include/uapi/linux/netfilter/xt_nfacct.h
+++ b/include/uapi/linux/netfilter/xt_nfacct.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_NFACCT_MATCH_H
#define _XT_NFACCT_MATCH_H
diff --git a/include/uapi/linux/netfilter/xt_osf.h b/include/uapi/linux/netfilter/xt_osf.h
index e6159958b2fb..dad197e2ab99 100644
--- a/include/uapi/linux/netfilter/xt_osf.h
+++ b/include/uapi/linux/netfilter/xt_osf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) 2003+ Evgeniy Polyakov <johnpol@2ka.mxt.ru>
*
diff --git a/include/uapi/linux/netfilter/xt_owner.h b/include/uapi/linux/netfilter/xt_owner.h
index 2081761714b5..fa3ad84957d5 100644
--- a/include/uapi/linux/netfilter/xt_owner.h
+++ b/include/uapi/linux/netfilter/xt_owner.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_OWNER_MATCH_H
#define _XT_OWNER_MATCH_H
diff --git a/include/uapi/linux/netfilter/xt_physdev.h b/include/uapi/linux/netfilter/xt_physdev.h
index ccdde87da214..06ae115e9a91 100644
--- a/include/uapi/linux/netfilter/xt_physdev.h
+++ b/include/uapi/linux/netfilter/xt_physdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_XT_PHYSDEV_H
#define _UAPI_XT_PHYSDEV_H
diff --git a/include/uapi/linux/netfilter/xt_pkttype.h b/include/uapi/linux/netfilter/xt_pkttype.h
index f265cf52faea..c31f29d2e723 100644
--- a/include/uapi/linux/netfilter/xt_pkttype.h
+++ b/include/uapi/linux/netfilter/xt_pkttype.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_PKTTYPE_H
#define _XT_PKTTYPE_H
diff --git a/include/uapi/linux/netfilter/xt_policy.h b/include/uapi/linux/netfilter/xt_policy.h
index d8a9800dce61..323bfa3074c5 100644
--- a/include/uapi/linux/netfilter/xt_policy.h
+++ b/include/uapi/linux/netfilter/xt_policy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_POLICY_H
#define _XT_POLICY_H
diff --git a/include/uapi/linux/netfilter/xt_quota.h b/include/uapi/linux/netfilter/xt_quota.h
index 9314723f39ca..f3ba5d9e58b6 100644
--- a/include/uapi/linux/netfilter/xt_quota.h
+++ b/include/uapi/linux/netfilter/xt_quota.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_QUOTA_H
#define _XT_QUOTA_H
diff --git a/include/uapi/linux/netfilter/xt_rateest.h b/include/uapi/linux/netfilter/xt_rateest.h
index 13fe50d4e4b3..52a37bdc1837 100644
--- a/include/uapi/linux/netfilter/xt_rateest.h
+++ b/include/uapi/linux/netfilter/xt_rateest.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_RATEEST_MATCH_H
#define _XT_RATEEST_MATCH_H
diff --git a/include/uapi/linux/netfilter/xt_realm.h b/include/uapi/linux/netfilter/xt_realm.h
index d4a82ee56a02..252aa9f79cf8 100644
--- a/include/uapi/linux/netfilter/xt_realm.h
+++ b/include/uapi/linux/netfilter/xt_realm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_REALM_H
#define _XT_REALM_H
diff --git a/include/uapi/linux/netfilter/xt_recent.h b/include/uapi/linux/netfilter/xt_recent.h
index 955d562031cc..e2c33996a802 100644
--- a/include/uapi/linux/netfilter/xt_recent.h
+++ b/include/uapi/linux/netfilter/xt_recent.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_NETFILTER_XT_RECENT_H
#define _LINUX_NETFILTER_XT_RECENT_H 1
diff --git a/include/uapi/linux/netfilter/xt_rpfilter.h b/include/uapi/linux/netfilter/xt_rpfilter.h
index 8358d4f71952..9b3d0f25a39c 100644
--- a/include/uapi/linux/netfilter/xt_rpfilter.h
+++ b/include/uapi/linux/netfilter/xt_rpfilter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_RPATH_H
#define _XT_RPATH_H
diff --git a/include/uapi/linux/netfilter/xt_sctp.h b/include/uapi/linux/netfilter/xt_sctp.h
index 58ffcfb7978e..4bc6d1a08781 100644
--- a/include/uapi/linux/netfilter/xt_sctp.h
+++ b/include/uapi/linux/netfilter/xt_sctp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_SCTP_H_
#define _XT_SCTP_H_
diff --git a/include/uapi/linux/netfilter/xt_set.h b/include/uapi/linux/netfilter/xt_set.h
index d4e02348384c..8c1ca66c8a06 100644
--- a/include/uapi/linux/netfilter/xt_set.h
+++ b/include/uapi/linux/netfilter/xt_set.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_SET_H
#define _XT_SET_H
diff --git a/include/uapi/linux/netfilter/xt_socket.h b/include/uapi/linux/netfilter/xt_socket.h
index 87644f832494..a7bdc9d882b0 100644
--- a/include/uapi/linux/netfilter/xt_socket.h
+++ b/include/uapi/linux/netfilter/xt_socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_SOCKET_H
#define _XT_SOCKET_H
diff --git a/include/uapi/linux/netfilter/xt_state.h b/include/uapi/linux/netfilter/xt_state.h
index 7b32de886613..fe5670ef6aad 100644
--- a/include/uapi/linux/netfilter/xt_state.h
+++ b/include/uapi/linux/netfilter/xt_state.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_STATE_H
#define _XT_STATE_H
diff --git a/include/uapi/linux/netfilter/xt_statistic.h b/include/uapi/linux/netfilter/xt_statistic.h
index 4e983ef0c968..bbce6fcb26e3 100644
--- a/include/uapi/linux/netfilter/xt_statistic.h
+++ b/include/uapi/linux/netfilter/xt_statistic.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_STATISTIC_H
#define _XT_STATISTIC_H
diff --git a/include/uapi/linux/netfilter/xt_string.h b/include/uapi/linux/netfilter/xt_string.h
index 235347c02eab..bedb015d54dd 100644
--- a/include/uapi/linux/netfilter/xt_string.h
+++ b/include/uapi/linux/netfilter/xt_string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_STRING_H
#define _XT_STRING_H
diff --git a/include/uapi/linux/netfilter/xt_tcpmss.h b/include/uapi/linux/netfilter/xt_tcpmss.h
index fbac56b9e667..2268f58b4dec 100644
--- a/include/uapi/linux/netfilter/xt_tcpmss.h
+++ b/include/uapi/linux/netfilter/xt_tcpmss.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_TCPMSS_MATCH_H
#define _XT_TCPMSS_MATCH_H
diff --git a/include/uapi/linux/netfilter/xt_tcpudp.h b/include/uapi/linux/netfilter/xt_tcpudp.h
index 38aa7b399021..658c16999819 100644
--- a/include/uapi/linux/netfilter/xt_tcpudp.h
+++ b/include/uapi/linux/netfilter/xt_tcpudp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_TCPUDP_H
#define _XT_TCPUDP_H
diff --git a/include/uapi/linux/netfilter/xt_time.h b/include/uapi/linux/netfilter/xt_time.h
index 095886019396..7f707c7ec858 100644
--- a/include/uapi/linux/netfilter/xt_time.h
+++ b/include/uapi/linux/netfilter/xt_time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_TIME_H
#define _XT_TIME_H 1
diff --git a/include/uapi/linux/netfilter/xt_u32.h b/include/uapi/linux/netfilter/xt_u32.h
index 04d1bfea03c2..a88505ca72f8 100644
--- a/include/uapi/linux/netfilter/xt_u32.h
+++ b/include/uapi/linux/netfilter/xt_u32.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _XT_U32_H
#define _XT_U32_H 1
diff --git a/include/uapi/linux/netfilter_arp.h b/include/uapi/linux/netfilter_arp.h
index 92bc6ddcbf73..81b6a4cbcb72 100644
--- a/include/uapi/linux/netfilter_arp.h
+++ b/include/uapi/linux/netfilter_arp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
#ifndef __LINUX_ARP_NETFILTER_H
#define __LINUX_ARP_NETFILTER_H
diff --git a/include/uapi/linux/netfilter_arp/arp_tables.h b/include/uapi/linux/netfilter_arp/arp_tables.h
index ece3ad4eecda..a2a0927d9bd6 100644
--- a/include/uapi/linux/netfilter_arp/arp_tables.h
+++ b/include/uapi/linux/netfilter_arp/arp_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Format of an ARP firewall descriptor
*
diff --git a/include/uapi/linux/netfilter_arp/arpt_mangle.h b/include/uapi/linux/netfilter_arp/arpt_mangle.h
index 8c2b16a1f5a0..60135d5cc223 100644
--- a/include/uapi/linux/netfilter_arp/arpt_mangle.h
+++ b/include/uapi/linux/netfilter_arp/arpt_mangle.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ARPT_MANGLE_H
#define _ARPT_MANGLE_H
#include <linux/netfilter_arp/arp_tables.h>
diff --git a/include/uapi/linux/netfilter_bridge.h b/include/uapi/linux/netfilter_bridge.h
index 514519b47651..12fb77633f83 100644
--- a/include/uapi/linux/netfilter_bridge.h
+++ b/include/uapi/linux/netfilter_bridge.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_BRIDGE_NETFILTER_H
#define _UAPI__LINUX_BRIDGE_NETFILTER_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_802_3.h b/include/uapi/linux/netfilter_bridge/ebt_802_3.h
index f37522aade24..03463e4b0246 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_802_3.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_802_3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_BRIDGE_EBT_802_3_H
#define _UAPI__LINUX_BRIDGE_EBT_802_3_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_among.h b/include/uapi/linux/netfilter_bridge/ebt_among.h
index bd4e3ad0b706..9acf757bc1f7 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_among.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_AMONG_H
#define __LINUX_BRIDGE_EBT_AMONG_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_arp.h b/include/uapi/linux/netfilter_bridge/ebt_arp.h
index dd4df25330e8..628b4fdae542 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_arp.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_arp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_ARP_H
#define __LINUX_BRIDGE_EBT_ARP_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_arpreply.h b/include/uapi/linux/netfilter_bridge/ebt_arpreply.h
index 6fee3402e307..ed41ae053597 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_arpreply.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_arpreply.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_ARPREPLY_H
#define __LINUX_BRIDGE_EBT_ARPREPLY_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_ip.h b/include/uapi/linux/netfilter_bridge/ebt_ip.h
index c4bbc41b0ea4..8e462fb1983f 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_ip.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_ip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ebt_ip
*
diff --git a/include/uapi/linux/netfilter_bridge/ebt_ip6.h b/include/uapi/linux/netfilter_bridge/ebt_ip6.h
index a062f0ce95f9..057945dd66bc 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_ip6.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_ip6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ebt_ip6
*
diff --git a/include/uapi/linux/netfilter_bridge/ebt_limit.h b/include/uapi/linux/netfilter_bridge/ebt_limit.h
index 66d80b30ba0e..c2ac02e1fab6 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_limit.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_limit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_LIMIT_H
#define __LINUX_BRIDGE_EBT_LIMIT_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_log.h b/include/uapi/linux/netfilter_bridge/ebt_log.h
index 7e7f1d1fe494..f6724155af91 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_log.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_log.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_LOG_H
#define __LINUX_BRIDGE_EBT_LOG_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_mark_m.h b/include/uapi/linux/netfilter_bridge/ebt_mark_m.h
index 410f9e5a71d4..098ac78cd1e6 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_mark_m.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_mark_m.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_MARK_M_H
#define __LINUX_BRIDGE_EBT_MARK_M_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_mark_t.h b/include/uapi/linux/netfilter_bridge/ebt_mark_t.h
index 7d5a268a4311..8810f1c12af3 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_mark_t.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_mark_t.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_MARK_T_H
#define __LINUX_BRIDGE_EBT_MARK_T_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_nat.h b/include/uapi/linux/netfilter_bridge/ebt_nat.h
index c990d74ee966..49da2f9be021 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_nat.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_nat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_NAT_H
#define __LINUX_BRIDGE_EBT_NAT_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_nflog.h b/include/uapi/linux/netfilter_bridge/ebt_nflog.h
index df829fce9125..f5cdc068c264 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_nflog.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_nflog.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_NFLOG_H
#define __LINUX_BRIDGE_EBT_NFLOG_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_pkttype.h b/include/uapi/linux/netfilter_bridge/ebt_pkttype.h
index c241badcd036..32c5d08b31d3 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_pkttype.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_pkttype.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_PKTTYPE_H
#define __LINUX_BRIDGE_EBT_PKTTYPE_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_redirect.h b/include/uapi/linux/netfilter_bridge/ebt_redirect.h
index dd9622ce8488..dc7a7ce25902 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_redirect.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_redirect.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_REDIRECT_H
#define __LINUX_BRIDGE_EBT_REDIRECT_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_stp.h b/include/uapi/linux/netfilter_bridge/ebt_stp.h
index 1025b9f5fb7d..94f68dedc3f6 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_stp.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_stp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_STP_H
#define __LINUX_BRIDGE_EBT_STP_H
diff --git a/include/uapi/linux/netfilter_bridge/ebt_vlan.h b/include/uapi/linux/netfilter_bridge/ebt_vlan.h
index 967d1d5cf98d..fb0d8f604c23 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_vlan.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_vlan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_BRIDGE_EBT_VLAN_H
#define __LINUX_BRIDGE_EBT_VLAN_H
diff --git a/include/uapi/linux/netfilter_bridge/ebtables.h b/include/uapi/linux/netfilter_bridge/ebtables.h
index e3cdf9f1a259..9ff57c0a0199 100644
--- a/include/uapi/linux/netfilter_bridge/ebtables.h
+++ b/include/uapi/linux/netfilter_bridge/ebtables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ebtables
*
diff --git a/include/uapi/linux/netfilter_decnet.h b/include/uapi/linux/netfilter_decnet.h
index 0b09732aacd5..9089c38f6abe 100644
--- a/include/uapi/linux/netfilter_decnet.h
+++ b/include/uapi/linux/netfilter_decnet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_DECNET_NETFILTER_H
#define __LINUX_DECNET_NETFILTER_H
diff --git a/include/uapi/linux/netfilter_ipv4.h b/include/uapi/linux/netfilter_ipv4.h
index 91ddd1f6fd4b..e6b1a84f5dd3 100644
--- a/include/uapi/linux/netfilter_ipv4.h
+++ b/include/uapi/linux/netfilter_ipv4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* IPv4-specific defines for netfilter.
* (C)1998 Rusty Russell -- This code is GPL.
*/
diff --git a/include/uapi/linux/netfilter_ipv4/ip_tables.h b/include/uapi/linux/netfilter_ipv4/ip_tables.h
index d0da53d96d93..6aaeb14bfce1 100644
--- a/include/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/include/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* 25-Jul-1998 Major changes to allow for ip chain table
*
diff --git a/include/uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h b/include/uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h
index eac0f6548f47..ff6599494fe6 100644
--- a/include/uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h
+++ b/include/uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IPT_CLUSTERIP_H_target
#define _IPT_CLUSTERIP_H_target
diff --git a/include/uapi/linux/netfilter_ipv4/ipt_ECN.h b/include/uapi/linux/netfilter_ipv4/ipt_ECN.h
index bb88d5315a4d..e3630fd045b8 100644
--- a/include/uapi/linux/netfilter_ipv4/ipt_ECN.h
+++ b/include/uapi/linux/netfilter_ipv4/ipt_ECN.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* Header file for iptables ipt_ECN target
*
* (C) 2002 by Harald Welte <laforge@gnumonks.org>
diff --git a/include/uapi/linux/netfilter_ipv4/ipt_LOG.h b/include/uapi/linux/netfilter_ipv4/ipt_LOG.h
index 5d8152077d71..6dec14ba851b 100644
--- a/include/uapi/linux/netfilter_ipv4/ipt_LOG.h
+++ b/include/uapi/linux/netfilter_ipv4/ipt_LOG.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IPT_LOG_H
#define _IPT_LOG_H
diff --git a/include/uapi/linux/netfilter_ipv4/ipt_REJECT.h b/include/uapi/linux/netfilter_ipv4/ipt_REJECT.h
index 4293a1ad1b01..ae61ddd328b0 100644
--- a/include/uapi/linux/netfilter_ipv4/ipt_REJECT.h
+++ b/include/uapi/linux/netfilter_ipv4/ipt_REJECT.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IPT_REJECT_H
#define _IPT_REJECT_H
diff --git a/include/uapi/linux/netfilter_ipv4/ipt_TTL.h b/include/uapi/linux/netfilter_ipv4/ipt_TTL.h
index f6ac169d92f9..57d2fc67a943 100644
--- a/include/uapi/linux/netfilter_ipv4/ipt_TTL.h
+++ b/include/uapi/linux/netfilter_ipv4/ipt_TTL.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* TTL modification module for IP tables
* (C) 2000 by Harald Welte <laforge@netfilter.org> */
diff --git a/include/uapi/linux/netfilter_ipv4/ipt_ah.h b/include/uapi/linux/netfilter_ipv4/ipt_ah.h
index 4e02bb0119e3..606ce90dbf83 100644
--- a/include/uapi/linux/netfilter_ipv4/ipt_ah.h
+++ b/include/uapi/linux/netfilter_ipv4/ipt_ah.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IPT_AH_H
#define _IPT_AH_H
diff --git a/include/uapi/linux/netfilter_ipv4/ipt_ecn.h b/include/uapi/linux/netfilter_ipv4/ipt_ecn.h
index 0e0c063dbf60..8121bec47026 100644
--- a/include/uapi/linux/netfilter_ipv4/ipt_ecn.h
+++ b/include/uapi/linux/netfilter_ipv4/ipt_ecn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IPT_ECN_H
#define _IPT_ECN_H
diff --git a/include/uapi/linux/netfilter_ipv4/ipt_ttl.h b/include/uapi/linux/netfilter_ipv4/ipt_ttl.h
index 37bee4442486..ad0226a8629b 100644
--- a/include/uapi/linux/netfilter_ipv4/ipt_ttl.h
+++ b/include/uapi/linux/netfilter_ipv4/ipt_ttl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* IP tables module for matching the value of the TTL
* (C) 2000 by Harald Welte <laforge@gnumonks.org> */
diff --git a/include/uapi/linux/netfilter_ipv6.h b/include/uapi/linux/netfilter_ipv6.h
index 12497c6c7949..2f9724611cc2 100644
--- a/include/uapi/linux/netfilter_ipv6.h
+++ b/include/uapi/linux/netfilter_ipv6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* IPv6-specific defines for netfilter.
* (C)1998 Rusty Russell -- This code is GPL.
* (C)1999 David Jeffery
diff --git a/include/uapi/linux/netfilter_ipv6/ip6_tables.h b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
index d1b22653daf2..031d0a43bed2 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* 25-Jul-1998 Major changes to allow for ip chain table
*
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_HL.h b/include/uapi/linux/netfilter_ipv6/ip6t_HL.h
index ebd8ead1bb63..eaed56a287b4 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_HL.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_HL.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* Hop Limit modification module for ip6tables
* Maciej Soltysiak <solt@dns.toxicfilms.tv>
* Based on HW's TTL module */
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_LOG.h b/include/uapi/linux/netfilter_ipv6/ip6t_LOG.h
index 3dd0bc4e0735..7553a434e4da 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_LOG.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_LOG.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IP6T_LOG_H
#define _IP6T_LOG_H
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_NPT.h b/include/uapi/linux/netfilter_ipv6/ip6t_NPT.h
index f763355481b5..422aef07657a 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_NPT.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_NPT.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __NETFILTER_IP6T_NPT
#define __NETFILTER_IP6T_NPT
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_REJECT.h b/include/uapi/linux/netfilter_ipv6/ip6t_REJECT.h
index cd2e940c8bf5..158ffa5f45b7 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_REJECT.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_REJECT.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IP6T_REJECT_H
#define _IP6T_REJECT_H
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_ah.h b/include/uapi/linux/netfilter_ipv6/ip6t_ah.h
index 5da2b65cb3ad..9a4174e08f9c 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_ah.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_ah.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IP6T_AH_H
#define _IP6T_AH_H
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_frag.h b/include/uapi/linux/netfilter_ipv6/ip6t_frag.h
index dfd8bc2268cf..9acac816bba3 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_frag.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_frag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IP6T_FRAG_H
#define _IP6T_FRAG_H
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_hl.h b/include/uapi/linux/netfilter_ipv6/ip6t_hl.h
index 6e76dbc6c19a..6b62f9418eb2 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_hl.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_hl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* ip6tables module for matching the Hop Limit value
* Maciej Soltysiak <solt@dns.toxicfilms.tv>
* Based on HW's ttl module */
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_ipv6header.h b/include/uapi/linux/netfilter_ipv6/ip6t_ipv6header.h
index efae3a20c214..5a5196914764 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_ipv6header.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_ipv6header.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* ipv6header match - matches IPv6 packets based
on whether they contain certain headers */
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_mh.h b/include/uapi/linux/netfilter_ipv6/ip6t_mh.h
index a7729a5025cd..906196283185 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_mh.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_mh.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IP6T_MH_H
#define _IP6T_MH_H
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_opts.h b/include/uapi/linux/netfilter_ipv6/ip6t_opts.h
index 17d419a811fd..79f9a477c5ac 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_opts.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_opts.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IP6T_OPTS_H
#define _IP6T_OPTS_H
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_rt.h b/include/uapi/linux/netfilter_ipv6/ip6t_rt.h
index 558f81e46fb9..9c23e8ad20b9 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_rt.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_rt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _IP6T_RT_H
#define _IP6T_RT_H
diff --git a/include/uapi/linux/netlink.h b/include/uapi/linux/netlink.h
index e8af60a7c56d..776bc92e9118 100644
--- a/include/uapi/linux/netlink.h
+++ b/include/uapi/linux/netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_NETLINK_H
#define _UAPI__LINUX_NETLINK_H
diff --git a/include/uapi/linux/netlink_diag.h b/include/uapi/linux/netlink_diag.h
index 6dcd4de3397b..dfa61be43d2f 100644
--- a/include/uapi/linux/netlink_diag.h
+++ b/include/uapi/linux/netlink_diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __NETLINK_DIAG_H__
#define __NETLINK_DIAG_H__
diff --git a/include/uapi/linux/netrom.h b/include/uapi/linux/netrom.h
index af7313cc9cb6..7498ea3c3940 100644
--- a/include/uapi/linux/netrom.h
+++ b/include/uapi/linux/netrom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* These are the public elements of the Linux kernel NET/ROM implementation.
* For kernel AX.25 see the file ax25.h. This file requires ax25.h for the
diff --git a/include/uapi/linux/nfs.h b/include/uapi/linux/nfs.h
index 5e6296160361..057d22a48416 100644
--- a/include/uapi/linux/nfs.h
+++ b/include/uapi/linux/nfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* NFS protocol definitions
*
diff --git a/include/uapi/linux/nfs2.h b/include/uapi/linux/nfs2.h
index fde24b30cc9e..e0237e0985b9 100644
--- a/include/uapi/linux/nfs2.h
+++ b/include/uapi/linux/nfs2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* NFS protocol definitions
*
diff --git a/include/uapi/linux/nfs3.h b/include/uapi/linux/nfs3.h
index 231ef4e69829..37e4b34e6b43 100644
--- a/include/uapi/linux/nfs3.h
+++ b/include/uapi/linux/nfs3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* NFSv3 protocol definitions
*/
diff --git a/include/uapi/linux/nfs4.h b/include/uapi/linux/nfs4.h
index 4ae62796bfde..8572930cf5b0 100644
--- a/include/uapi/linux/nfs4.h
+++ b/include/uapi/linux/nfs4.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/linux/nfs4.h
*
diff --git a/include/uapi/linux/nfs4_mount.h b/include/uapi/linux/nfs4_mount.h
index a0dcf6655657..d20bb869bb99 100644
--- a/include/uapi/linux/nfs4_mount.h
+++ b/include/uapi/linux/nfs4_mount.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_NFS4_MOUNT_H
#define _LINUX_NFS4_MOUNT_H
diff --git a/include/uapi/linux/nfs_fs.h b/include/uapi/linux/nfs_fs.h
index 49142287999c..7bcc8cd6831d 100644
--- a/include/uapi/linux/nfs_fs.h
+++ b/include/uapi/linux/nfs_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/include/linux/nfs_fs.h
*
diff --git a/include/uapi/linux/nfs_mount.h b/include/uapi/linux/nfs_mount.h
index 64b0f22f5c4c..e44e00616ab5 100644
--- a/include/uapi/linux/nfs_mount.h
+++ b/include/uapi/linux/nfs_mount.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_NFS_MOUNT_H
#define _LINUX_NFS_MOUNT_H
diff --git a/include/uapi/linux/nfsacl.h b/include/uapi/linux/nfsacl.h
index 552726631162..ca9a8501ff30 100644
--- a/include/uapi/linux/nfsacl.h
+++ b/include/uapi/linux/nfsacl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* File: linux/nfsacl.h
*
diff --git a/include/uapi/linux/nfsd/cld.h b/include/uapi/linux/nfsd/cld.h
index ec260274be0c..f8f5cccad749 100644
--- a/include/uapi/linux/nfsd/cld.h
+++ b/include/uapi/linux/nfsd/cld.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Upcall description for nfsdcld communication
*
diff --git a/include/uapi/linux/nfsd/debug.h b/include/uapi/linux/nfsd/debug.h
index 28ec6c9c421a..7301cdc79a33 100644
--- a/include/uapi/linux/nfsd/debug.h
+++ b/include/uapi/linux/nfsd/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/include/linux/nfsd/debug.h
*
diff --git a/include/uapi/linux/nfsd/export.h b/include/uapi/linux/nfsd/export.h
index c3be256107c6..2124ba904779 100644
--- a/include/uapi/linux/nfsd/export.h
+++ b/include/uapi/linux/nfsd/export.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/linux/nfsd/export.h
*
diff --git a/include/uapi/linux/nfsd/nfsfh.h b/include/uapi/linux/nfsd/nfsfh.h
index 20391235d088..ff0ca88b1c8f 100644
--- a/include/uapi/linux/nfsd/nfsfh.h
+++ b/include/uapi/linux/nfsd/nfsfh.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file describes the layout of the file handles as passed
* over the wire.
diff --git a/include/uapi/linux/nfsd/stats.h b/include/uapi/linux/nfsd/stats.h
index 9fb7a0644263..b1a38ae14a02 100644
--- a/include/uapi/linux/nfsd/stats.h
+++ b/include/uapi/linux/nfsd/stats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/include/linux/nfsd/stats.h
*
diff --git a/include/uapi/linux/nilfs2_api.h b/include/uapi/linux/nilfs2_api.h
index ef4c1de89b11..8b9b89104f3d 100644
--- a/include/uapi/linux/nilfs2_api.h
+++ b/include/uapi/linux/nilfs2_api.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* nilfs2_api.h - NILFS2 user space API
*
diff --git a/include/uapi/linux/nilfs2_ondisk.h b/include/uapi/linux/nilfs2_ondisk.h
index 2a8a3addb675..a7e66ab11d1d 100644
--- a/include/uapi/linux/nilfs2_ondisk.h
+++ b/include/uapi/linux/nilfs2_ondisk.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* nilfs2_ondisk.h - NILFS2 on-disk structures
*
diff --git a/include/uapi/linux/nsfs.h b/include/uapi/linux/nsfs.h
index 1a3ca79f466b..a0c8552b64ee 100644
--- a/include/uapi/linux/nsfs.h
+++ b/include/uapi/linux/nsfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_NSFS_H
#define __LINUX_NSFS_H
diff --git a/include/uapi/linux/nubus.h b/include/uapi/linux/nubus.h
index ac516064f0ee..f3776cc80f4d 100644
--- a/include/uapi/linux/nubus.h
+++ b/include/uapi/linux/nubus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
nubus.h: various definitions and prototypes for NuBus drivers to use.
diff --git a/include/uapi/linux/nvme_ioctl.h b/include/uapi/linux/nvme_ioctl.h
index 50ff21f748b6..6e74b1eaf541 100644
--- a/include/uapi/linux/nvme_ioctl.h
+++ b/include/uapi/linux/nvme_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Definitions for the NVM Express ioctl interface
* Copyright (c) 2011-2014, Intel Corporation.
diff --git a/include/uapi/linux/nvram.h b/include/uapi/linux/nvram.h
index 0986c4337383..4bee8e72dab4 100644
--- a/include/uapi/linux/nvram.h
+++ b/include/uapi/linux/nvram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_NVRAM_H
#define _UAPI_LINUX_NVRAM_H
diff --git a/include/uapi/linux/omap3isp.h b/include/uapi/linux/omap3isp.h
index c090cf9249bb..1a920145db04 100644
--- a/include/uapi/linux/omap3isp.h
+++ b/include/uapi/linux/omap3isp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* omap3isp.h
*
diff --git a/include/uapi/linux/omapfb.h b/include/uapi/linux/omapfb.h
index 7c97bc00ac6d..44f43af4c699 100644
--- a/include/uapi/linux/omapfb.h
+++ b/include/uapi/linux/omapfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* File: include/linux/omapfb.h
*
diff --git a/include/uapi/linux/oom.h b/include/uapi/linux/oom.h
index b29272d621ce..750b1c5a4dec 100644
--- a/include/uapi/linux/oom.h
+++ b/include/uapi/linux/oom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__INCLUDE_LINUX_OOM_H
#define _UAPI__INCLUDE_LINUX_OOM_H
diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index 156ee4cab82e..36d0b161e066 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2007-2017 Nicira, Inc.
diff --git a/include/uapi/linux/packet_diag.h b/include/uapi/linux/packet_diag.h
index 0c5d5dd61b6a..349ddf0a96af 100644
--- a/include/uapi/linux/packet_diag.h
+++ b/include/uapi/linux/packet_diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __PACKET_DIAG_H__
#define __PACKET_DIAG_H__
diff --git a/include/uapi/linux/param.h b/include/uapi/linux/param.h
index 092e92f67b50..94e0c57a75b7 100644
--- a/include/uapi/linux/param.h
+++ b/include/uapi/linux/param.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_PARAM_H
#define _LINUX_PARAM_H
diff --git a/include/uapi/linux/patchkey.h b/include/uapi/linux/patchkey.h
index 1bda0e56bc5e..3eb246e94733 100644
--- a/include/uapi/linux/patchkey.h
+++ b/include/uapi/linux/patchkey.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* <linux/patchkey.h> -- definition of _PATCHKEY macro
*
diff --git a/include/uapi/linux/pci.h b/include/uapi/linux/pci.h
index 3c292bc0d1c1..a769eefc5139 100644
--- a/include/uapi/linux/pci.h
+++ b/include/uapi/linux/pci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* pci.h
*
diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h
index f8d58045926f..87c2c840b27d 100644
--- a/include/uapi/linux/pci_regs.h
+++ b/include/uapi/linux/pci_regs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* pci_regs.h
*
diff --git a/include/uapi/linux/pcitest.h b/include/uapi/linux/pcitest.h
index a6aa10c45ad1..953cf036cb26 100644
--- a/include/uapi/linux/pcitest.h
+++ b/include/uapi/linux/pcitest.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/**
* pcitest.h - PCI test uapi defines
*
diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h
index 140ae638cfd6..362493a2f950 100644
--- a/include/uapi/linux/perf_event.h
+++ b/include/uapi/linux/perf_event.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Performance events:
*
diff --git a/include/uapi/linux/personality.h b/include/uapi/linux/personality.h
index aa169c4339d2..49796b7756af 100644
--- a/include/uapi/linux/personality.h
+++ b/include/uapi/linux/personality.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_PERSONALITY_H
#define _UAPI_LINUX_PERSONALITY_H
diff --git a/include/uapi/linux/pfkeyv2.h b/include/uapi/linux/pfkeyv2.h
index ada7f0171ccc..d65b11785260 100644
--- a/include/uapi/linux/pfkeyv2.h
+++ b/include/uapi/linux/pfkeyv2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* PF_KEY user interface, this is defined by rfc2367 so
* do not make arbitrary modifications or else this header
* file will not be compliant.
diff --git a/include/uapi/linux/pg.h b/include/uapi/linux/pg.h
index db994bb0c794..364c350e85cd 100644
--- a/include/uapi/linux/pg.h
+++ b/include/uapi/linux/pg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/* pg.h (c) 1998 Grant R. Guenther <grant@torque.net>
Under the terms of the GNU General Public License
diff --git a/include/uapi/linux/phantom.h b/include/uapi/linux/phantom.h
index 94dd6645c60a..dbef708ab3b4 100644
--- a/include/uapi/linux/phantom.h
+++ b/include/uapi/linux/phantom.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2005-2007 Jiri Slaby <jirislaby@gmail.com>
*
diff --git a/include/uapi/linux/phonet.h b/include/uapi/linux/phonet.h
index a3e1d65b3ed9..a2f6b37a5937 100644
--- a/include/uapi/linux/phonet.h
+++ b/include/uapi/linux/phonet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/**
* file phonet.h
*
diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
index d5e2bf68d0d4..46c506615f4a 100644
--- a/include/uapi/linux/pkt_cls.h
+++ b/include/uapi/linux/pkt_cls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_PKT_CLS_H
#define __LINUX_PKT_CLS_H
diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h
index 099bf5528fed..703cd9df6cef 100644
--- a/include/uapi/linux/pkt_sched.h
+++ b/include/uapi/linux/pkt_sched.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_PKT_SCHED_H
#define __LINUX_PKT_SCHED_H
diff --git a/include/uapi/linux/pktcdvd.h b/include/uapi/linux/pktcdvd.h
index 2640b9d4e243..9cbb55d21c94 100644
--- a/include/uapi/linux/pktcdvd.h
+++ b/include/uapi/linux/pktcdvd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2000 Jens Axboe <axboe@suse.de>
* Copyright (C) 2001-2004 Peter Osterlund <petero2@telia.com>
diff --git a/include/uapi/linux/pmu.h b/include/uapi/linux/pmu.h
index caead364b6eb..89cb1acea93a 100644
--- a/include/uapi/linux/pmu.h
+++ b/include/uapi/linux/pmu.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Definitions for talking to the PMU. The PMU is a microcontroller
* which controls battery charging and system power on PowerBook 3400
diff --git a/include/uapi/linux/posix_acl.h b/include/uapi/linux/posix_acl.h
index 1037cb19aa17..217e4e26ab60 100644
--- a/include/uapi/linux/posix_acl.h
+++ b/include/uapi/linux/posix_acl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* Copyright (C) 2002 Andreas Gruenbacher <a.gruenbacher@computer.org>
* Copyright (C) 2016 Red Hat, Inc.
diff --git a/include/uapi/linux/posix_acl_xattr.h b/include/uapi/linux/posix_acl_xattr.h
index 8b579844109b..506380f0b91b 100644
--- a/include/uapi/linux/posix_acl_xattr.h
+++ b/include/uapi/linux/posix_acl_xattr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
/*
* Copyright (C) 2002 Andreas Gruenbacher <a.gruenbacher@computer.org>
* Copyright (C) 2016 Red Hat, Inc.
diff --git a/include/uapi/linux/posix_types.h b/include/uapi/linux/posix_types.h
index 988f76e636e3..9a7a740b35a2 100644
--- a/include/uapi/linux/posix_types.h
+++ b/include/uapi/linux/posix_types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_POSIX_TYPES_H
#define _LINUX_POSIX_TYPES_H
diff --git a/include/uapi/linux/ppdev.h b/include/uapi/linux/ppdev.h
index dc18c5d23ebe..8fe3c64d149e 100644
--- a/include/uapi/linux/ppdev.h
+++ b/include/uapi/linux/ppdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* linux/include/linux/ppdev.h
*
diff --git a/include/uapi/linux/ppp-comp.h b/include/uapi/linux/ppp-comp.h
index 0a15bbb04e19..0fb7623e9548 100644
--- a/include/uapi/linux/ppp-comp.h
+++ b/include/uapi/linux/ppp-comp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ppp-comp.h - Definitions for doing PPP packet compression.
*
diff --git a/include/uapi/linux/ppp-ioctl.h b/include/uapi/linux/ppp-ioctl.h
index 63a23a3b8bb7..b19a9c249b15 100644
--- a/include/uapi/linux/ppp-ioctl.h
+++ b/include/uapi/linux/ppp-ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ppp-ioctl.h - PPP ioctl definitions.
*
diff --git a/include/uapi/linux/ppp_defs.h b/include/uapi/linux/ppp_defs.h
index 283fc05dbbda..fff51b91b409 100644
--- a/include/uapi/linux/ppp_defs.h
+++ b/include/uapi/linux/ppp_defs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ppp_defs.h - PPP definitions.
*
diff --git a/include/uapi/linux/pps.h b/include/uapi/linux/pps.h
index c29d6b791c08..009ebcd8ced5 100644
--- a/include/uapi/linux/pps.h
+++ b/include/uapi/linux/pps.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* PPS API header
*
diff --git a/include/uapi/linux/pr.h b/include/uapi/linux/pr.h
index 645ef3cf3dd0..ccc78cbf1221 100644
--- a/include/uapi/linux/pr.h
+++ b/include/uapi/linux/pr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_PR_H
#define _UAPI_PR_H
diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h
index a8d0759a9e40..b640071421f7 100644
--- a/include/uapi/linux/prctl.h
+++ b/include/uapi/linux/prctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_PRCTL_H
#define _LINUX_PRCTL_H
diff --git a/include/uapi/linux/psample.h b/include/uapi/linux/psample.h
index ed48996ec0e8..ce1116cff53d 100644
--- a/include/uapi/linux/psample.h
+++ b/include/uapi/linux/psample.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __UAPI_PSAMPLE_H
#define __UAPI_PSAMPLE_H
diff --git a/include/uapi/linux/psci.h b/include/uapi/linux/psci.h
index 3d7a0fc021a7..760e52a9640f 100644
--- a/include/uapi/linux/psci.h
+++ b/include/uapi/linux/psci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* ARM Power State and Coordination Interface (PSCI) header
*
diff --git a/include/uapi/linux/ptp_clock.h b/include/uapi/linux/ptp_clock.h
index ac6dded80ffa..3039bf6a742e 100644
--- a/include/uapi/linux/ptp_clock.h
+++ b/include/uapi/linux/ptp_clock.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* PTP 1588 clock support - user space interface
*
diff --git a/include/uapi/linux/ptrace.h b/include/uapi/linux/ptrace.h
index fb8106509000..e3939e00980b 100644
--- a/include/uapi/linux/ptrace.h
+++ b/include/uapi/linux/ptrace.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_PTRACE_H
#define _UAPI_LINUX_PTRACE_H
/* ptrace.h */
diff --git a/include/uapi/linux/qnx4_fs.h b/include/uapi/linux/qnx4_fs.h
index 8b9aee1a9ce3..31487325d265 100644
--- a/include/uapi/linux/qnx4_fs.h
+++ b/include/uapi/linux/qnx4_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Name : qnx4_fs.h
* Author : Richard Frowijn
diff --git a/include/uapi/linux/qnxtypes.h b/include/uapi/linux/qnxtypes.h
index bebbe5cc4fb8..eacfab10e821 100644
--- a/include/uapi/linux/qnxtypes.h
+++ b/include/uapi/linux/qnxtypes.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Name : qnxtypes.h
* Author : Richard Frowijn
diff --git a/include/uapi/linux/qrtr.h b/include/uapi/linux/qrtr.h
index 9d76c566f66e..5d9aab1f1893 100644
--- a/include/uapi/linux/qrtr.h
+++ b/include/uapi/linux/qrtr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_QRTR_H
#define _LINUX_QRTR_H
diff --git a/include/uapi/linux/radeonfb.h b/include/uapi/linux/radeonfb.h
index 8c4bbdecc44f..86eafb805ed9 100644
--- a/include/uapi/linux/radeonfb.h
+++ b/include/uapi/linux/radeonfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_RADEONFB_H__
#define __LINUX_RADEONFB_H__
diff --git a/include/uapi/linux/raid/md_p.h b/include/uapi/linux/raid/md_p.h
index b9197976b660..b0d15c73f6d7 100644
--- a/include/uapi/linux/raid/md_p.h
+++ b/include/uapi/linux/raid/md_p.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
md_p.h : physical layout of Linux RAID devices
Copyright (C) 1996-98 Ingo Molnar, Gadi Oxman
diff --git a/include/uapi/linux/raid/md_u.h b/include/uapi/linux/raid/md_u.h
index 36cd8210a5d1..105307244961 100644
--- a/include/uapi/linux/raid/md_u.h
+++ b/include/uapi/linux/raid/md_u.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
md_u.h : user <=> kernel API between Linux raidtools and RAID drivers
Copyright (C) 1998 Ingo Molnar
diff --git a/include/uapi/linux/random.h b/include/uapi/linux/random.h
index 3f93d1695e7f..c34f4490d025 100644
--- a/include/uapi/linux/random.h
+++ b/include/uapi/linux/random.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/linux/random.h
*
diff --git a/include/uapi/linux/raw.h b/include/uapi/linux/raw.h
index 62d543e70603..dc96dda479d6 100644
--- a/include/uapi/linux/raw.h
+++ b/include/uapi/linux/raw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_RAW_H
#define __LINUX_RAW_H
diff --git a/include/uapi/linux/rds.h b/include/uapi/linux/rds.h
index 198892b95f09..e71d4491f225 100644
--- a/include/uapi/linux/rds.h
+++ b/include/uapi/linux/rds.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2008 Oracle. All rights reserved.
*
diff --git a/include/uapi/linux/reboot.h b/include/uapi/linux/reboot.h
index 09d056d4fc50..58e64398efc5 100644
--- a/include/uapi/linux/reboot.h
+++ b/include/uapi/linux/reboot.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_REBOOT_H
#define _UAPI_LINUX_REBOOT_H
diff --git a/include/uapi/linux/reiserfs_fs.h b/include/uapi/linux/reiserfs_fs.h
index ea3700cd7367..5bb921409f2b 100644
--- a/include/uapi/linux/reiserfs_fs.h
+++ b/include/uapi/linux/reiserfs_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright 1996, 1997, 1998 Hans Reiser, see reiserfs/README for licensing and copyright details
*/
diff --git a/include/uapi/linux/reiserfs_xattr.h b/include/uapi/linux/reiserfs_xattr.h
index 38fdd648be21..28f10842f047 100644
--- a/include/uapi/linux/reiserfs_xattr.h
+++ b/include/uapi/linux/reiserfs_xattr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
File: linux/reiserfs_xattr.h
*/
diff --git a/include/uapi/linux/resource.h b/include/uapi/linux/resource.h
index 36fb3b5fb181..cc00fd079631 100644
--- a/include/uapi/linux/resource.h
+++ b/include/uapi/linux/resource.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_RESOURCE_H
#define _UAPI_LINUX_RESOURCE_H
diff --git a/include/uapi/linux/rio_cm_cdev.h b/include/uapi/linux/rio_cm_cdev.h
index 6edb900d318d..d05dc3226f8e 100644
--- a/include/uapi/linux/rio_cm_cdev.h
+++ b/include/uapi/linux/rio_cm_cdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* Copyright (c) 2015, Integrated Device Technology Inc.
* Copyright (c) 2015, Prodrive Technologies
diff --git a/include/uapi/linux/rio_mport_cdev.h b/include/uapi/linux/rio_mport_cdev.h
index 5796bf1d06ad..9bc9f98e353a 100644
--- a/include/uapi/linux/rio_mport_cdev.h
+++ b/include/uapi/linux/rio_mport_cdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* Copyright (c) 2015-2016, Integrated Device Technology Inc.
* Copyright (c) 2015, Prodrive Technologies
diff --git a/include/uapi/linux/romfs_fs.h b/include/uapi/linux/romfs_fs.h
index 5f57f93b284f..a7f1585accef 100644
--- a/include/uapi/linux/romfs_fs.h
+++ b/include/uapi/linux/romfs_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_ROMFS_FS_H
#define __LINUX_ROMFS_FS_H
diff --git a/include/uapi/linux/rose.h b/include/uapi/linux/rose.h
index 1fcfe95893b8..19aa4693c8fc 100644
--- a/include/uapi/linux/rose.h
+++ b/include/uapi/linux/rose.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* These are the public elements of the Linux kernel Rose implementation.
* For kernel AX.25 see the file ax25.h. This file requires ax25.h for the
diff --git a/include/uapi/linux/route.h b/include/uapi/linux/route.h
index 6600708311c8..a0de9a7331a2 100644
--- a/include/uapi/linux/route.h
+++ b/include/uapi/linux/route.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/rpmsg.h b/include/uapi/linux/rpmsg.h
index dedc226e0d3f..225eb38705dc 100644
--- a/include/uapi/linux/rpmsg.h
+++ b/include/uapi/linux/rpmsg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2016, Linaro Ltd.
*
diff --git a/include/uapi/linux/rtc.h b/include/uapi/linux/rtc.h
index f8c82e6f25d5..2ad1788968d0 100644
--- a/include/uapi/linux/rtc.h
+++ b/include/uapi/linux/rtc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Generic RTC interface.
* This version contains the part of the user interface to the Real Time Clock
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
index dab7dad9e01a..a6d37c2ea355 100644
--- a/include/uapi/linux/rtnetlink.h
+++ b/include/uapi/linux/rtnetlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_RTNETLINK_H
#define _UAPI__LINUX_RTNETLINK_H
diff --git a/include/uapi/linux/scc.h b/include/uapi/linux/scc.h
index 72b6b8153374..c5bc7f747755 100644
--- a/include/uapi/linux/scc.h
+++ b/include/uapi/linux/scc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* $Id: scc.h,v 1.29 1997/04/02 14:56:45 jreuter Exp jreuter $ */
#ifndef _UAPI_SCC_H
diff --git a/include/uapi/linux/sched.h b/include/uapi/linux/sched.h
index e2a6c7b3510b..30a9e51bbb1e 100644
--- a/include/uapi/linux/sched.h
+++ b/include/uapi/linux/sched.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SCHED_H
#define _UAPI_LINUX_SCHED_H
diff --git a/include/uapi/linux/sched/types.h b/include/uapi/linux/sched/types.h
index 34b81aa1a2f7..10fbb8031930 100644
--- a/include/uapi/linux/sched/types.h
+++ b/include/uapi/linux/sched/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SCHED_TYPES_H
#define _UAPI_LINUX_SCHED_TYPES_H
diff --git a/include/uapi/linux/scif_ioctl.h b/include/uapi/linux/scif_ioctl.h
index d9048918be52..862a4cc908f7 100644
--- a/include/uapi/linux/scif_ioctl.h
+++ b/include/uapi/linux/scif_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* Intel MIC Platform Software Stack (MPSS)
*
diff --git a/include/uapi/linux/screen_info.h b/include/uapi/linux/screen_info.h
index 8b8d39dfb67f..87e5c086938e 100644
--- a/include/uapi/linux/screen_info.h
+++ b/include/uapi/linux/screen_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_SCREEN_INFO_H
#define _UAPI_SCREEN_INFO_H
diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
index 6217ff8500a1..cfe971296835 100644
--- a/include/uapi/linux/sctp.h
+++ b/include/uapi/linux/sctp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* SCTP kernel implementation
* (C) Copyright IBM Corp. 2001, 2004
* Copyright (c) 1999-2000 Cisco, Inc.
@@ -376,7 +377,7 @@ struct sctp_remote_error {
__u16 sre_type;
__u16 sre_flags;
__u32 sre_length;
- __u16 sre_error;
+ __be16 sre_error;
sctp_assoc_t sre_assoc_id;
__u8 sre_data[0];
};
diff --git a/include/uapi/linux/sdla.h b/include/uapi/linux/sdla.h
index 95eaff9c9e49..1e3735be6511 100644
--- a/include/uapi/linux/sdla.h
+++ b/include/uapi/linux/sdla.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/seccomp.h b/include/uapi/linux/seccomp.h
index 0f238a43ff1e..2a0bd9dd104d 100644
--- a/include/uapi/linux/seccomp.h
+++ b/include/uapi/linux/seccomp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SECCOMP_H
#define _UAPI_LINUX_SECCOMP_H
@@ -11,27 +12,34 @@
#define SECCOMP_MODE_FILTER 2 /* uses user-supplied filter. */
/* Valid operations for seccomp syscall. */
-#define SECCOMP_SET_MODE_STRICT 0
-#define SECCOMP_SET_MODE_FILTER 1
+#define SECCOMP_SET_MODE_STRICT 0
+#define SECCOMP_SET_MODE_FILTER 1
+#define SECCOMP_GET_ACTION_AVAIL 2
/* Valid flags for SECCOMP_SET_MODE_FILTER */
#define SECCOMP_FILTER_FLAG_TSYNC 1
+#define SECCOMP_FILTER_FLAG_LOG 2
/*
* All BPF programs must return a 32-bit value.
* The bottom 16-bits are for optional return data.
- * The upper 16-bits are ordered from least permissive values to most.
+ * The upper 16-bits are ordered from least permissive values to most,
+ * as a signed value (so 0x8000000 is negative).
*
* The ordering ensures that a min_t() over composed return values always
* selects the least permissive choice.
*/
-#define SECCOMP_RET_KILL 0x00000000U /* kill the task immediately */
-#define SECCOMP_RET_TRAP 0x00030000U /* disallow and force a SIGSYS */
-#define SECCOMP_RET_ERRNO 0x00050000U /* returns an errno */
-#define SECCOMP_RET_TRACE 0x7ff00000U /* pass to a tracer or disallow */
-#define SECCOMP_RET_ALLOW 0x7fff0000U /* allow */
+#define SECCOMP_RET_KILL_PROCESS 0x80000000U /* kill the process */
+#define SECCOMP_RET_KILL_THREAD 0x00000000U /* kill the thread */
+#define SECCOMP_RET_KILL SECCOMP_RET_KILL_THREAD
+#define SECCOMP_RET_TRAP 0x00030000U /* disallow and force a SIGSYS */
+#define SECCOMP_RET_ERRNO 0x00050000U /* returns an errno */
+#define SECCOMP_RET_TRACE 0x7ff00000U /* pass to a tracer or disallow */
+#define SECCOMP_RET_LOG 0x7ffc0000U /* allow after logging */
+#define SECCOMP_RET_ALLOW 0x7fff0000U /* allow */
/* Masks for the return value sections. */
+#define SECCOMP_RET_ACTION_FULL 0xffff0000U
#define SECCOMP_RET_ACTION 0x7fff0000U
#define SECCOMP_RET_DATA 0x0000ffffU
diff --git a/include/uapi/linux/securebits.h b/include/uapi/linux/securebits.h
index 35ac35cef217..d6d98877ff1a 100644
--- a/include/uapi/linux/securebits.h
+++ b/include/uapi/linux/securebits.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SECUREBITS_H
#define _UAPI_LINUX_SECUREBITS_H
diff --git a/include/uapi/linux/sed-opal.h b/include/uapi/linux/sed-opal.h
index c72e0735532d..627624d35030 100644
--- a/include/uapi/linux/sed-opal.h
+++ b/include/uapi/linux/sed-opal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright © 2016 Intel Corporation
*
diff --git a/include/uapi/linux/seg6.h b/include/uapi/linux/seg6.h
index 7278511d339e..2f6fb0dd613c 100644
--- a/include/uapi/linux/seg6.h
+++ b/include/uapi/linux/seg6.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* SR-IPv6 implementation
*
diff --git a/include/uapi/linux/seg6_genl.h b/include/uapi/linux/seg6_genl.h
index fcf1c60d7df3..d995d48daebb 100644
--- a/include/uapi/linux/seg6_genl.h
+++ b/include/uapi/linux/seg6_genl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SEG6_GENL_H
#define _UAPI_LINUX_SEG6_GENL_H
diff --git a/include/uapi/linux/seg6_hmac.h b/include/uapi/linux/seg6_hmac.h
index e691c753fc3f..b877c782158a 100644
--- a/include/uapi/linux/seg6_hmac.h
+++ b/include/uapi/linux/seg6_hmac.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SEG6_HMAC_H
#define _UAPI_LINUX_SEG6_HMAC_H
diff --git a/include/uapi/linux/seg6_iptunnel.h b/include/uapi/linux/seg6_iptunnel.h
index b23df9f58354..09fb608a35ec 100644
--- a/include/uapi/linux/seg6_iptunnel.h
+++ b/include/uapi/linux/seg6_iptunnel.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* SR-IPv6 implementation
*
diff --git a/include/uapi/linux/selinux_netlink.h b/include/uapi/linux/selinux_netlink.h
index d239797785cf..2fc0542171cd 100644
--- a/include/uapi/linux/selinux_netlink.h
+++ b/include/uapi/linux/selinux_netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Netlink event notifications for SELinux.
*
diff --git a/include/uapi/linux/sem.h b/include/uapi/linux/sem.h
index 67eb90361692..9c3e745b0656 100644
--- a/include/uapi/linux/sem.h
+++ b/include/uapi/linux/sem.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SEM_H
#define _UAPI_LINUX_SEM_H
diff --git a/include/uapi/linux/serial.h b/include/uapi/linux/serial.h
index d2667ecd54ac..3fdd0dee8b41 100644
--- a/include/uapi/linux/serial.h
+++ b/include/uapi/linux/serial.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/*
* include/linux/serial.h
*
diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h
index 50d71c436323..1c8413f93e3d 100644
--- a/include/uapi/linux/serial_core.h
+++ b/include/uapi/linux/serial_core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* linux/drivers/char/serial_core.h
*
diff --git a/include/uapi/linux/serial_reg.h b/include/uapi/linux/serial_reg.h
index 5db76880b4ad..619fe6111dc9 100644
--- a/include/uapi/linux/serial_reg.h
+++ b/include/uapi/linux/serial_reg.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/*
* include/linux/serial_reg.h
*
diff --git a/include/uapi/linux/serio.h b/include/uapi/linux/serio.h
index ac217c6f0151..a0cac1d8670d 100644
--- a/include/uapi/linux/serio.h
+++ b/include/uapi/linux/serio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 1999-2002 Vojtech Pavlik
*
diff --git a/include/uapi/linux/shm.h b/include/uapi/linux/shm.h
index cf23c873719d..4de12a39b075 100644
--- a/include/uapi/linux/shm.h
+++ b/include/uapi/linux/shm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SHM_H_
#define _UAPI_LINUX_SHM_H_
diff --git a/include/uapi/linux/signal.h b/include/uapi/linux/signal.h
index cd0804b6bfa2..e03238f8d478 100644
--- a/include/uapi/linux/signal.h
+++ b/include/uapi/linux/signal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SIGNAL_H
#define _UAPI_LINUX_SIGNAL_H
diff --git a/include/uapi/linux/signalfd.h b/include/uapi/linux/signalfd.h
index 492c6def340d..6f0da42fc5ef 100644
--- a/include/uapi/linux/signalfd.h
+++ b/include/uapi/linux/signalfd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/linux/signalfd.h
*
diff --git a/include/uapi/linux/smc.h b/include/uapi/linux/smc.h
index ab1dea8e53ee..0e11ca421ca4 100644
--- a/include/uapi/linux/smc.h
+++ b/include/uapi/linux/smc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Shared Memory Communications over RDMA (SMC-R) and RoCE
*
diff --git a/include/uapi/linux/smc_diag.h b/include/uapi/linux/smc_diag.h
index 87712bfaa9dd..0ae5d4685ba3 100644
--- a/include/uapi/linux/smc_diag.h
+++ b/include/uapi/linux/smc_diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_SMC_DIAG_H_
#define _UAPI_SMC_DIAG_H_
diff --git a/include/uapi/linux/smiapp.h b/include/uapi/linux/smiapp.h
index 53938f4412ee..50438f8d9647 100644
--- a/include/uapi/linux/smiapp.h
+++ b/include/uapi/linux/smiapp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/uapi/linux/smiapp.h
*
diff --git a/include/uapi/linux/snmp.h b/include/uapi/linux/snmp.h
index 758f12b58541..0d941cdd8e8c 100644
--- a/include/uapi/linux/snmp.h
+++ b/include/uapi/linux/snmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Definitions for MIBs
*
diff --git a/include/uapi/linux/sock_diag.h b/include/uapi/linux/sock_diag.h
index 7ff505d8a47b..e5925009a652 100644
--- a/include/uapi/linux/sock_diag.h
+++ b/include/uapi/linux/sock_diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__SOCK_DIAG_H__
#define _UAPI__SOCK_DIAG_H__
diff --git a/include/uapi/linux/socket.h b/include/uapi/linux/socket.h
index 76ab0c68561e..8eb96021709c 100644
--- a/include/uapi/linux/socket.h
+++ b/include/uapi/linux/socket.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SOCKET_H
#define _UAPI_LINUX_SOCKET_H
diff --git a/include/uapi/linux/sockios.h b/include/uapi/linux/sockios.h
index 79d029d25310..d393e9ed3964 100644
--- a/include/uapi/linux/sockios.h
+++ b/include/uapi/linux/sockios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/sonet.h b/include/uapi/linux/sonet.h
index cc54acee81ba..9d02357c6c6f 100644
--- a/include/uapi/linux/sonet.h
+++ b/include/uapi/linux/sonet.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* sonet.h - SONET/SHD physical layer control */
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
diff --git a/include/uapi/linux/sonypi.h b/include/uapi/linux/sonypi.h
index 85078a283573..88f122451776 100644
--- a/include/uapi/linux/sonypi.h
+++ b/include/uapi/linux/sonypi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Sony Programmable I/O Control Device driver for VAIO
*
diff --git a/include/uapi/linux/sound.h b/include/uapi/linux/sound.h
index 014c9117c224..a62d74042f47 100644
--- a/include/uapi/linux/sound.h
+++ b/include/uapi/linux/sound.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SOUND_H
#define _UAPI_LINUX_SOUND_H
diff --git a/include/uapi/linux/spi/spidev.h b/include/uapi/linux/spi/spidev.h
index dd5f21e75805..c4253f0090d8 100644
--- a/include/uapi/linux/spi/spidev.h
+++ b/include/uapi/linux/spi/spidev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* include/linux/spi/spidev.h
*
@@ -23,6 +24,7 @@
#define SPIDEV_H
#include <linux/types.h>
+#include <linux/ioctl.h>
/* User space versions of kernel symbols for SPI clocking modes,
* matching <linux/spi/spi.h>
diff --git a/include/uapi/linux/stat.h b/include/uapi/linux/stat.h
index 17b10304c393..7b35e98d3c58 100644
--- a/include/uapi/linux/stat.h
+++ b/include/uapi/linux/stat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_STAT_H
#define _UAPI_LINUX_STAT_H
diff --git a/include/uapi/linux/stddef.h b/include/uapi/linux/stddef.h
index 621fa8ac4425..f65b92e0e1f9 100644
--- a/include/uapi/linux/stddef.h
+++ b/include/uapi/linux/stddef.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <linux/compiler.h>
#ifndef __always_inline
diff --git a/include/uapi/linux/stm.h b/include/uapi/linux/stm.h
index 626a8d3f63b5..dbffdc23d804 100644
--- a/include/uapi/linux/stm.h
+++ b/include/uapi/linux/stm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* System Trace Module (STM) userspace interfaces
* Copyright (c) 2014, Intel Corporation.
diff --git a/include/uapi/linux/string.h b/include/uapi/linux/string.h
index e32e545cff5a..9d129c13fe9d 100644
--- a/include/uapi/linux/string.h
+++ b/include/uapi/linux/string.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_STRING_H_
#define _UAPI_LINUX_STRING_H_
diff --git a/include/uapi/linux/sunrpc/debug.h b/include/uapi/linux/sunrpc/debug.h
index 830e34493a8c..ae54af3d3fd6 100644
--- a/include/uapi/linux/sunrpc/debug.h
+++ b/include/uapi/linux/sunrpc/debug.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/include/linux/sunrpc/debug.h
*
diff --git a/include/uapi/linux/suspend_ioctls.h b/include/uapi/linux/suspend_ioctls.h
index 0b30382984fe..bcce04e21c0d 100644
--- a/include/uapi/linux/suspend_ioctls.h
+++ b/include/uapi/linux/suspend_ioctls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_SUSPEND_IOCTLS_H
#define _LINUX_SUSPEND_IOCTLS_H
diff --git a/include/uapi/linux/swab.h b/include/uapi/linux/swab.h
index 8f3a8f606fd9..23cd84868cc3 100644
--- a/include/uapi/linux/swab.h
+++ b/include/uapi/linux/swab.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_SWAB_H
#define _UAPI_LINUX_SWAB_H
diff --git a/include/uapi/linux/switchtec_ioctl.h b/include/uapi/linux/switchtec_ioctl.h
index 5e392968bad2..75df44373034 100644
--- a/include/uapi/linux/switchtec_ioctl.h
+++ b/include/uapi/linux/switchtec_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Microsemi Switchtec PCIe Driver
* Copyright (c) 2017, Microsemi Corporation
diff --git a/include/uapi/linux/sync_file.h b/include/uapi/linux/sync_file.h
index 5b287d6970b3..ee2dcfb3d660 100644
--- a/include/uapi/linux/sync_file.h
+++ b/include/uapi/linux/sync_file.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2012 Google, Inc.
*
diff --git a/include/uapi/linux/synclink.h b/include/uapi/linux/synclink.h
index 7dcb065a5f76..62f32d4e1021 100644
--- a/include/uapi/linux/synclink.h
+++ b/include/uapi/linux/synclink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
/*
* SyncLink Multiprotocol Serial Adapter Driver
*
diff --git a/include/uapi/linux/sysctl.h b/include/uapi/linux/sysctl.h
index e13d48058b8d..0f272818a4d2 100644
--- a/include/uapi/linux/sysctl.h
+++ b/include/uapi/linux/sysctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* sysctl.h: General linux system control interface
*
diff --git a/include/uapi/linux/sysinfo.h b/include/uapi/linux/sysinfo.h
index 934335a22522..435d5c23f0c0 100644
--- a/include/uapi/linux/sysinfo.h
+++ b/include/uapi/linux/sysinfo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_SYSINFO_H
#define _LINUX_SYSINFO_H
diff --git a/include/uapi/linux/target_core_user.h b/include/uapi/linux/target_core_user.h
index 24a1c4ec2248..0be80f72646b 100644
--- a/include/uapi/linux/target_core_user.h
+++ b/include/uapi/linux/target_core_user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __TARGET_CORE_USER_H
#define __TARGET_CORE_USER_H
diff --git a/include/uapi/linux/taskstats.h b/include/uapi/linux/taskstats.h
index 2466e550a41d..b7aa7bb2349f 100644
--- a/include/uapi/linux/taskstats.h
+++ b/include/uapi/linux/taskstats.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1 WITH Linux-syscall-note */
/* taskstats.h - exporting per-task statistics
*
* Copyright (C) Shailabh Nagar, IBM Corp. 2006
diff --git a/include/uapi/linux/tc_act/tc_bpf.h b/include/uapi/linux/tc_act/tc_bpf.h
index 8dc2ac05eecf..6e89a5df49a4 100644
--- a/include/uapi/linux/tc_act/tc_bpf.h
+++ b/include/uapi/linux/tc_act/tc_bpf.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) 2015 Jiri Pirko <jiri@resnulli.us>
*
diff --git a/include/uapi/linux/tc_act/tc_connmark.h b/include/uapi/linux/tc_act/tc_connmark.h
index 62a5e944c554..80caa47b1933 100644
--- a/include/uapi/linux/tc_act/tc_connmark.h
+++ b/include/uapi/linux/tc_act/tc_connmark.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __UAPI_TC_CONNMARK_H
#define __UAPI_TC_CONNMARK_H
diff --git a/include/uapi/linux/tc_act/tc_csum.h b/include/uapi/linux/tc_act/tc_csum.h
index a11bb355dbfb..0ecf4d29e2f3 100644
--- a/include/uapi/linux/tc_act/tc_csum.h
+++ b/include/uapi/linux/tc_act/tc_csum.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_CSUM_H
#define __LINUX_TC_CSUM_H
diff --git a/include/uapi/linux/tc_act/tc_defact.h b/include/uapi/linux/tc_act/tc_defact.h
index d2a3abb77aeb..e3ecd8bf37de 100644
--- a/include/uapi/linux/tc_act/tc_defact.h
+++ b/include/uapi/linux/tc_act/tc_defact.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_DEF_H
#define __LINUX_TC_DEF_H
diff --git a/include/uapi/linux/tc_act/tc_gact.h b/include/uapi/linux/tc_act/tc_gact.h
index 70b536a8f8b2..94273c3b81b0 100644
--- a/include/uapi/linux/tc_act/tc_gact.h
+++ b/include/uapi/linux/tc_act/tc_gact.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_GACT_H
#define __LINUX_TC_GACT_H
diff --git a/include/uapi/linux/tc_act/tc_ife.h b/include/uapi/linux/tc_act/tc_ife.h
index 7c2817866c97..2f48490ef386 100644
--- a/include/uapi/linux/tc_act/tc_ife.h
+++ b/include/uapi/linux/tc_act/tc_ife.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __UAPI_TC_IFE_H
#define __UAPI_TC_IFE_H
diff --git a/include/uapi/linux/tc_act/tc_ipt.h b/include/uapi/linux/tc_act/tc_ipt.h
index 7c6e155dd981..b743c8bddd13 100644
--- a/include/uapi/linux/tc_act/tc_ipt.h
+++ b/include/uapi/linux/tc_act/tc_ipt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_IPT_H
#define __LINUX_TC_IPT_H
diff --git a/include/uapi/linux/tc_act/tc_mirred.h b/include/uapi/linux/tc_act/tc_mirred.h
index 3d7a2b352a62..020696e07345 100644
--- a/include/uapi/linux/tc_act/tc_mirred.h
+++ b/include/uapi/linux/tc_act/tc_mirred.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_MIR_H
#define __LINUX_TC_MIR_H
diff --git a/include/uapi/linux/tc_act/tc_nat.h b/include/uapi/linux/tc_act/tc_nat.h
index 923457c9ebf0..086be842587b 100644
--- a/include/uapi/linux/tc_act/tc_nat.h
+++ b/include/uapi/linux/tc_act/tc_nat.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_NAT_H
#define __LINUX_TC_NAT_H
diff --git a/include/uapi/linux/tc_act/tc_pedit.h b/include/uapi/linux/tc_act/tc_pedit.h
index 143d2b31a316..162d1094c41c 100644
--- a/include/uapi/linux/tc_act/tc_pedit.h
+++ b/include/uapi/linux/tc_act/tc_pedit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_PED_H
#define __LINUX_TC_PED_H
diff --git a/include/uapi/linux/tc_act/tc_sample.h b/include/uapi/linux/tc_act/tc_sample.h
index edc9058bb30d..bd7e9f03abd2 100644
--- a/include/uapi/linux/tc_act/tc_sample.h
+++ b/include/uapi/linux/tc_act/tc_sample.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_SAMPLE_H
#define __LINUX_TC_SAMPLE_H
diff --git a/include/uapi/linux/tc_act/tc_skbedit.h b/include/uapi/linux/tc_act/tc_skbedit.h
index 2884425738ce..fbcfe27a4e6c 100644
--- a/include/uapi/linux/tc_act/tc_skbedit.h
+++ b/include/uapi/linux/tc_act/tc_skbedit.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2008, Intel Corporation.
*
diff --git a/include/uapi/linux/tc_act/tc_skbmod.h b/include/uapi/linux/tc_act/tc_skbmod.h
index 10fc07da6c69..38c072f66f2f 100644
--- a/include/uapi/linux/tc_act/tc_skbmod.h
+++ b/include/uapi/linux/tc_act/tc_skbmod.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) 2016, Jamal Hadi Salim
*
diff --git a/include/uapi/linux/tc_act/tc_tunnel_key.h b/include/uapi/linux/tc_act/tc_tunnel_key.h
index afcd4be953e2..72bbefe5d1d1 100644
--- a/include/uapi/linux/tc_act/tc_tunnel_key.h
+++ b/include/uapi/linux/tc_act/tc_tunnel_key.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) 2016, Amir Vadai <amir@vadai.me>
* Copyright (c) 2016, Mellanox Technologies. All rights reserved.
diff --git a/include/uapi/linux/tc_act/tc_vlan.h b/include/uapi/linux/tc_act/tc_vlan.h
index bddb272b843f..0d7b5fd6605b 100644
--- a/include/uapi/linux/tc_act/tc_vlan.h
+++ b/include/uapi/linux/tc_act/tc_vlan.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us>
*
diff --git a/include/uapi/linux/tc_ematch/tc_em_cmp.h b/include/uapi/linux/tc_ematch/tc_em_cmp.h
index f34bb1bae083..2549d9d6e031 100644
--- a/include/uapi/linux/tc_ematch/tc_em_cmp.h
+++ b/include/uapi/linux/tc_ematch/tc_em_cmp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_EM_CMP_H
#define __LINUX_TC_EM_CMP_H
diff --git a/include/uapi/linux/tc_ematch/tc_em_meta.h b/include/uapi/linux/tc_ematch/tc_em_meta.h
index b11f8ce2d3c0..cf30b5bc4eaf 100644
--- a/include/uapi/linux/tc_ematch/tc_em_meta.h
+++ b/include/uapi/linux/tc_ematch/tc_em_meta.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_EM_META_H
#define __LINUX_TC_EM_META_H
diff --git a/include/uapi/linux/tc_ematch/tc_em_nbyte.h b/include/uapi/linux/tc_ematch/tc_em_nbyte.h
index 7172cfb999c1..c76333f7f6f2 100644
--- a/include/uapi/linux/tc_ematch/tc_em_nbyte.h
+++ b/include/uapi/linux/tc_ematch/tc_em_nbyte.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_EM_NBYTE_H
#define __LINUX_TC_EM_NBYTE_H
diff --git a/include/uapi/linux/tc_ematch/tc_em_text.h b/include/uapi/linux/tc_ematch/tc_em_text.h
index 5aac4045ba88..b0a92257964e 100644
--- a/include/uapi/linux/tc_ematch/tc_em_text.h
+++ b/include/uapi/linux/tc_ematch/tc_em_text.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_TC_EM_TEXT_H
#define __LINUX_TC_EM_TEXT_H
diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
index 15c25eccab2b..6a64beeecfad 100644
--- a/include/uapi/linux/tcp.h
+++ b/include/uapi/linux/tcp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/tcp_metrics.h b/include/uapi/linux/tcp_metrics.h
index 80ad90d0cfc2..7cb4a172feed 100644
--- a/include/uapi/linux/tcp_metrics.h
+++ b/include/uapi/linux/tcp_metrics.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* tcp_metrics.h - TCP Metrics Interface */
#ifndef _LINUX_TCP_METRICS_H
diff --git a/include/uapi/linux/telephony.h b/include/uapi/linux/telephony.h
index f63afe330add..d2c9f7105f4b 100644
--- a/include/uapi/linux/telephony.h
+++ b/include/uapi/linux/telephony.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/******************************************************************************
*
* telephony.h
diff --git a/include/uapi/linux/termios.h b/include/uapi/linux/termios.h
index 2acd0c1f8a2a..33961d4e4de0 100644
--- a/include/uapi/linux/termios.h
+++ b/include/uapi/linux/termios.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_TERMIOS_H
#define _LINUX_TERMIOS_H
diff --git a/include/uapi/linux/thermal.h b/include/uapi/linux/thermal.h
index ac5535855982..96218378dda8 100644
--- a/include/uapi/linux/thermal.h
+++ b/include/uapi/linux/thermal.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_THERMAL_H
#define _UAPI_LINUX_THERMAL_H
diff --git a/include/uapi/linux/time.h b/include/uapi/linux/time.h
index 09299fcb842a..53f8dd84beb5 100644
--- a/include/uapi/linux/time.h
+++ b/include/uapi/linux/time.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_TIME_H
#define _UAPI_LINUX_TIME_H
diff --git a/include/uapi/linux/timerfd.h b/include/uapi/linux/timerfd.h
index 6fcfaa8da173..dd469944db02 100644
--- a/include/uapi/linux/timerfd.h
+++ b/include/uapi/linux/timerfd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/linux/timerfd.h
*
diff --git a/include/uapi/linux/times.h b/include/uapi/linux/times.h
index 87b62615cedd..9c72df662f5f 100644
--- a/include/uapi/linux/times.h
+++ b/include/uapi/linux/times.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_TIMES_H
#define _LINUX_TIMES_H
diff --git a/include/uapi/linux/tiocl.h b/include/uapi/linux/tiocl.h
index 4756862c4ed4..b32acc229024 100644
--- a/include/uapi/linux/tiocl.h
+++ b/include/uapi/linux/tiocl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_TIOCL_H
#define _LINUX_TIOCL_H
diff --git a/include/uapi/linux/tipc.h b/include/uapi/linux/tipc.h
index 5351b08c897a..77123614e973 100644
--- a/include/uapi/linux/tipc.h
+++ b/include/uapi/linux/tipc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* include/uapi/linux/tipc.h: Header for TIPC socket interface
*
diff --git a/include/uapi/linux/tipc_config.h b/include/uapi/linux/tipc_config.h
index 087b0ef82c07..3f29e3c8ed06 100644
--- a/include/uapi/linux/tipc_config.h
+++ b/include/uapi/linux/tipc_config.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* include/uapi/linux/tipc_config.h: Header for TIPC configuration interface
*
diff --git a/include/uapi/linux/tipc_netlink.h b/include/uapi/linux/tipc_netlink.h
index f9edd20fe9ba..469aa67a5ecb 100644
--- a/include/uapi/linux/tipc_netlink.h
+++ b/include/uapi/linux/tipc_netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* Copyright (c) 2014, Ericsson AB
* All rights reserved.
diff --git a/include/uapi/linux/tls.h b/include/uapi/linux/tls.h
index cc1d21db35d8..d5e0682ab837 100644
--- a/include/uapi/linux/tls.h
+++ b/include/uapi/linux/tls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2016-2017, Mellanox Technologies. All rights reserved.
*
diff --git a/include/uapi/linux/toshiba.h b/include/uapi/linux/toshiba.h
index c58bf4b5bb26..7f1941935f98 100644
--- a/include/uapi/linux/toshiba.h
+++ b/include/uapi/linux/toshiba.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/* toshiba.h -- Linux driver for accessing the SMM on Toshiba laptops
*
* Copyright (c) 1996-2000 Jonathan A. Buzzard (jonathan@buzzard.org.uk)
diff --git a/include/uapi/linux/tty.h b/include/uapi/linux/tty.h
index cf1455396df0..376cccf397be 100644
--- a/include/uapi/linux/tty.h
+++ b/include/uapi/linux/tty.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_TTY_H
#define _UAPI_LINUX_TTY_H
diff --git a/include/uapi/linux/tty_flags.h b/include/uapi/linux/tty_flags.h
index 66e4d8bcb16f..6ac609a00dea 100644
--- a/include/uapi/linux/tty_flags.h
+++ b/include/uapi/linux/tty_flags.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_TTY_FLAGS_H
#define _LINUX_TTY_FLAGS_H
diff --git a/include/uapi/linux/types.h b/include/uapi/linux/types.h
index 41e5914f0a8e..e3d1d0c78f3c 100644
--- a/include/uapi/linux/types.h
+++ b/include/uapi/linux/types.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_TYPES_H
#define _UAPI_LINUX_TYPES_H
diff --git a/include/uapi/linux/udf_fs_i.h b/include/uapi/linux/udf_fs_i.h
index 3536965913b0..c50863080399 100644
--- a/include/uapi/linux/udf_fs_i.h
+++ b/include/uapi/linux/udf_fs_i.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* udf_fs_i.h
*
diff --git a/include/uapi/linux/udp.h b/include/uapi/linux/udp.h
index 2c8180f9156f..efb7b5991c2f 100644
--- a/include/uapi/linux/udp.h
+++ b/include/uapi/linux/udp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff --git a/include/uapi/linux/uhid.h b/include/uapi/linux/uhid.h
index aaa86d6bd1dd..cef7534d2d19 100644
--- a/include/uapi/linux/uhid.h
+++ b/include/uapi/linux/uhid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef __UHID_H_
#define __UHID_H_
diff --git a/include/uapi/linux/uinput.h b/include/uapi/linux/uinput.h
index dc652e224b67..c9e677e3af1d 100644
--- a/include/uapi/linux/uinput.h
+++ b/include/uapi/linux/uinput.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* User level driver support for input subsystem
*
diff --git a/include/uapi/linux/uio.h b/include/uapi/linux/uio.h
index 2731d56a5484..059b1a9147f4 100644
--- a/include/uapi/linux/uio.h
+++ b/include/uapi/linux/uio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Berkeley style UIO structures - Alan Cox 1994.
*
diff --git a/include/uapi/linux/uleds.h b/include/uapi/linux/uleds.h
index 95186578c46e..4d32a39965f8 100644
--- a/include/uapi/linux/uleds.h
+++ b/include/uapi/linux/uleds.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Userspace driver support for the LED subsystem
*
diff --git a/include/uapi/linux/ultrasound.h b/include/uapi/linux/ultrasound.h
index 71339dc531c5..73305bd1dc5a 100644
--- a/include/uapi/linux/ultrasound.h
+++ b/include/uapi/linux/ultrasound.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ULTRASOUND_H_
#define _ULTRASOUND_H_
/*
diff --git a/include/uapi/linux/un.h b/include/uapi/linux/un.h
index 4f0ab3a548ad..0ad59dc8b686 100644
--- a/include/uapi/linux/un.h
+++ b/include/uapi/linux/un.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_UN_H
#define _LINUX_UN_H
diff --git a/include/uapi/linux/unistd.h b/include/uapi/linux/unistd.h
index aa8d5b5e2e3e..a92361f5d32d 100644
--- a/include/uapi/linux/unistd.h
+++ b/include/uapi/linux/unistd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_UNISTD_H_
#define _LINUX_UNISTD_H_
diff --git a/include/uapi/linux/unix_diag.h b/include/uapi/linux/unix_diag.h
index 1eb0b8dd1830..5c502fdf7a42 100644
--- a/include/uapi/linux/unix_diag.h
+++ b/include/uapi/linux/unix_diag.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __UNIX_DIAG_H__
#define __UNIX_DIAG_H__
diff --git a/include/uapi/linux/usb/audio.h b/include/uapi/linux/usb/audio.h
index a4680a5bf5dd..17a022c5b414 100644
--- a/include/uapi/linux/usb/audio.h
+++ b/include/uapi/linux/usb/audio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* <linux/usb/audio.h> -- USB Audio definitions.
*
diff --git a/include/uapi/linux/usb/cdc-wdm.h b/include/uapi/linux/usb/cdc-wdm.h
index 0dc132e75030..a927c7f6f68a 100644
--- a/include/uapi/linux/usb/cdc-wdm.h
+++ b/include/uapi/linux/usb/cdc-wdm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* USB CDC Device Management userspace API definitions
*
diff --git a/include/uapi/linux/usb/cdc.h b/include/uapi/linux/usb/cdc.h
index e2bc417b243b..6d61550959ef 100644
--- a/include/uapi/linux/usb/cdc.h
+++ b/include/uapi/linux/usb/cdc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* USB Communications Device Class (CDC) definitions
*
diff --git a/include/uapi/linux/usb/ch11.h b/include/uapi/linux/usb/ch11.h
index 576c704e3fb8..29c120c88747 100644
--- a/include/uapi/linux/usb/ch11.h
+++ b/include/uapi/linux/usb/ch11.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file holds Hub protocol constants and data structures that are
* defined in chapter 11 (Hub Specification) of the USB 2.0 specification.
diff --git a/include/uapi/linux/usb/ch9.h b/include/uapi/linux/usb/ch9.h
index ce1169af39d7..cec06625f407 100644
--- a/include/uapi/linux/usb/ch9.h
+++ b/include/uapi/linux/usb/ch9.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file holds USB constants and structures that are needed for
* USB device APIs. These are used by the USB device model, which is
@@ -780,6 +781,7 @@ struct usb_interface_assoc_descriptor {
__u8 iFunction;
} __attribute__ ((packed));
+#define USB_DT_INTERFACE_ASSOCIATION_SIZE 8
/*-------------------------------------------------------------------------*/
diff --git a/include/uapi/linux/usb/functionfs.h b/include/uapi/linux/usb/functionfs.h
index f913d08ab7bb..d77ee6b65328 100644
--- a/include/uapi/linux/usb/functionfs.h
+++ b/include/uapi/linux/usb/functionfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_FUNCTIONFS_H__
#define _UAPI__LINUX_FUNCTIONFS_H__
diff --git a/include/uapi/linux/usb/g_printer.h b/include/uapi/linux/usb/g_printer.h
index 6178fde50f74..7fc20e4b82f5 100644
--- a/include/uapi/linux/usb/g_printer.h
+++ b/include/uapi/linux/usb/g_printer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* g_printer.h -- Header file for USB Printer gadget driver
*
diff --git a/include/uapi/linux/usb/gadgetfs.h b/include/uapi/linux/usb/gadgetfs.h
index 0bb12e0d4f8f..835473910a49 100644
--- a/include/uapi/linux/usb/gadgetfs.h
+++ b/include/uapi/linux/usb/gadgetfs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Filesystem based user-mode API to USB Gadget controller hardware
*
diff --git a/include/uapi/linux/usb/midi.h b/include/uapi/linux/usb/midi.h
index c8c52e3c91de..de6941ef70ad 100644
--- a/include/uapi/linux/usb/midi.h
+++ b/include/uapi/linux/usb/midi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* <linux/usb/midi.h> -- USB MIDI definitions.
*
diff --git a/include/uapi/linux/usb/tmc.h b/include/uapi/linux/usb/tmc.h
index 2e59d9c50b8d..03f6adc8f35b 100644
--- a/include/uapi/linux/usb/tmc.h
+++ b/include/uapi/linux/usb/tmc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (C) 2007 Stefan Kopp, Gechingen, Germany
* Copyright (C) 2008 Novell, Inc.
diff --git a/include/uapi/linux/usb/video.h b/include/uapi/linux/usb/video.h
index 69ab695fad2e..ff6cc6cb4227 100644
--- a/include/uapi/linux/usb/video.h
+++ b/include/uapi/linux/usb/video.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* USB Video Class definitions.
*
diff --git a/include/uapi/linux/usbdevice_fs.h b/include/uapi/linux/usbdevice_fs.h
index 0bbfd4abd2e3..70ed5338d447 100644
--- a/include/uapi/linux/usbdevice_fs.h
+++ b/include/uapi/linux/usbdevice_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*****************************************************************************/
/*
diff --git a/include/uapi/linux/usbip.h b/include/uapi/linux/usbip.h
index fa5db30ede36..fd393d908d8a 100644
--- a/include/uapi/linux/usbip.h
+++ b/include/uapi/linux/usbip.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* usbip.h
*
diff --git a/include/uapi/linux/userfaultfd.h b/include/uapi/linux/userfaultfd.h
index d6d1f65cb3c3..48f1a7c2f1f0 100644
--- a/include/uapi/linux/userfaultfd.h
+++ b/include/uapi/linux/userfaultfd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* include/linux/userfaultfd.h
*
diff --git a/include/uapi/linux/userio.h b/include/uapi/linux/userio.h
index 37d147f0a13a..74c9951d2cd0 100644
--- a/include/uapi/linux/userio.h
+++ b/include/uapi/linux/userio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.0+ WITH Linux-syscall-note */
/*
* userio: virtual serio device support
* Copyright (C) 2015 Red Hat
diff --git a/include/uapi/linux/utime.h b/include/uapi/linux/utime.h
index 5cdf673afbdb..fd9aa26b6860 100644
--- a/include/uapi/linux/utime.h
+++ b/include/uapi/linux/utime.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_UTIME_H
#define _LINUX_UTIME_H
diff --git a/include/uapi/linux/utsname.h b/include/uapi/linux/utsname.h
index 872c2df10de7..c99edc662536 100644
--- a/include/uapi/linux/utsname.h
+++ b/include/uapi/linux/utsname.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_UTSNAME_H
#define _UAPI_LINUX_UTSNAME_H
diff --git a/include/uapi/linux/uuid.h b/include/uapi/linux/uuid.h
index 8ef82f433877..5c04130bb524 100644
--- a/include/uapi/linux/uuid.h
+++ b/include/uapi/linux/uuid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* UUID/GUID definition
*
diff --git a/include/uapi/linux/uvcvideo.h b/include/uapi/linux/uvcvideo.h
index 3b081862b9e8..e80b4655d8cd 100644
--- a/include/uapi/linux/uvcvideo.h
+++ b/include/uapi/linux/uvcvideo.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_UVCVIDEO_H_
#define __LINUX_UVCVIDEO_H_
diff --git a/include/uapi/linux/v4l2-common.h b/include/uapi/linux/v4l2-common.h
index 5b3f685a2d50..4f7b892377cd 100644
--- a/include/uapi/linux/v4l2-common.h
+++ b/include/uapi/linux/v4l2-common.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* include/linux/v4l2-common.h
*
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
index 31bfc68f86d6..a692623e0236 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* Video for Linux Two controls header file
*
diff --git a/include/uapi/linux/v4l2-dv-timings.h b/include/uapi/linux/v4l2-dv-timings.h
index da2955154381..b52b67c62562 100644
--- a/include/uapi/linux/v4l2-dv-timings.h
+++ b/include/uapi/linux/v4l2-dv-timings.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* V4L2 DV timings header.
*
diff --git a/include/uapi/linux/v4l2-mediabus.h b/include/uapi/linux/v4l2-mediabus.h
index 9cac6325cc7e..6e20de63ec59 100644
--- a/include/uapi/linux/v4l2-mediabus.h
+++ b/include/uapi/linux/v4l2-mediabus.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Media Bus API header
*
diff --git a/include/uapi/linux/v4l2-subdev.h b/include/uapi/linux/v4l2-subdev.h
index dbce2b554e02..c95a53e6743c 100644
--- a/include/uapi/linux/v4l2-subdev.h
+++ b/include/uapi/linux/v4l2-subdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* V4L2 subdev userspace API
*
diff --git a/include/uapi/linux/veth.h b/include/uapi/linux/veth.h
index 3354c1eb424e..52b58e587e23 100644
--- a/include/uapi/linux/veth.h
+++ b/include/uapi/linux/veth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __NET_VETH_H_
#define __NET_VETH_H_
diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
index ae461050661a..e3301dbd27d4 100644
--- a/include/uapi/linux/vfio.h
+++ b/include/uapi/linux/vfio.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* VFIO API definition
*
diff --git a/include/uapi/linux/vfio_ccw.h b/include/uapi/linux/vfio_ccw.h
index 34a7f6f9e065..2ec5f367ff78 100644
--- a/include/uapi/linux/vfio_ccw.h
+++ b/include/uapi/linux/vfio_ccw.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Interfaces for vfio-ccw
*
diff --git a/include/uapi/linux/vhost.h b/include/uapi/linux/vhost.h
index 60180c0b5dc6..c51f8e5cc608 100644
--- a/include/uapi/linux/vhost.h
+++ b/include/uapi/linux/vhost.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_VHOST_H
#define _LINUX_VHOST_H
/* Userspace interface for in-kernel virtio accelerators. */
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 185d6a0acc06..1c095b5a99c5 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
* Video for Linux Two header file
*
diff --git a/include/uapi/linux/vm_sockets.h b/include/uapi/linux/vm_sockets.h
index b4ed5d895699..68d57c5e99bc 100644
--- a/include/uapi/linux/vm_sockets.h
+++ b/include/uapi/linux/vm_sockets.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* VMware vSockets Driver
*
diff --git a/include/uapi/linux/vsockmon.h b/include/uapi/linux/vsockmon.h
index a08b522ef597..4a03b893a957 100644
--- a/include/uapi/linux/vsockmon.h
+++ b/include/uapi/linux/vsockmon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_VSOCKMON_H
#define _UAPI_VSOCKMON_H
diff --git a/include/uapi/linux/vt.h b/include/uapi/linux/vt.h
index f69034887e68..e9d39c48520a 100644
--- a/include/uapi/linux/vt.h
+++ b/include/uapi/linux/vt.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_VT_H
#define _UAPI_LINUX_VT_H
diff --git a/include/uapi/linux/vtpm_proxy.h b/include/uapi/linux/vtpm_proxy.h
index 58ac73cd38fe..31a30f33ac46 100644
--- a/include/uapi/linux/vtpm_proxy.h
+++ b/include/uapi/linux/vtpm_proxy.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Definitions for the VTPM proxy driver
* Copyright (c) 2015, 2016, IBM Corporation
diff --git a/include/uapi/linux/wait.h b/include/uapi/linux/wait.h
index 9393eead23e2..ac49a220cf2a 100644
--- a/include/uapi/linux/wait.h
+++ b/include/uapi/linux/wait.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_WAIT_H
#define _UAPI_LINUX_WAIT_H
diff --git a/include/uapi/linux/wanrouter.h b/include/uapi/linux/wanrouter.h
index 498d6c12c666..2f1216d00caa 100644
--- a/include/uapi/linux/wanrouter.h
+++ b/include/uapi/linux/wanrouter.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* wanrouter.h Legacy declarations kept around until X25 is removed
*/
diff --git a/include/uapi/linux/watchdog.h b/include/uapi/linux/watchdog.h
index 2babe72870ba..b15cde5c9054 100644
--- a/include/uapi/linux/watchdog.h
+++ b/include/uapi/linux/watchdog.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Generic watchdog defines. Derived from..
*
diff --git a/include/uapi/linux/wireless.h b/include/uapi/linux/wireless.h
index d9ecd7c6d691..86eca3208b6b 100644
--- a/include/uapi/linux/wireless.h
+++ b/include/uapi/linux/wireless.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* This file define a set of standard wireless extensions
*
diff --git a/include/uapi/linux/x25.h b/include/uapi/linux/x25.h
index 810cce6737ea..034b7dc5593a 100644
--- a/include/uapi/linux/x25.h
+++ b/include/uapi/linux/x25.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* These are the public elements of the Linux kernel X.25 implementation.
*
diff --git a/include/uapi/linux/xattr.h b/include/uapi/linux/xattr.h
index 1590c49cae57..a92be0f492a9 100644
--- a/include/uapi/linux/xattr.h
+++ b/include/uapi/linux/xattr.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
File: linux/xattr.h
diff --git a/include/uapi/linux/xfrm.h b/include/uapi/linux/xfrm.h
index 5fe7370a2bef..e3af2859188b 100644
--- a/include/uapi/linux/xfrm.h
+++ b/include/uapi/linux/xfrm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_XFRM_H
#define _LINUX_XFRM_H
diff --git a/include/uapi/linux/xilinx-v4l2-controls.h b/include/uapi/linux/xilinx-v4l2-controls.h
index fb495b91e800..b6441fe705c5 100644
--- a/include/uapi/linux/xilinx-v4l2-controls.h
+++ b/include/uapi/linux/xilinx-v4l2-controls.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Xilinx Controls Header
*
diff --git a/include/uapi/linux/zorro.h b/include/uapi/linux/zorro.h
index 59d021b242ed..9798d1864fd9 100644
--- a/include/uapi/linux/zorro.h
+++ b/include/uapi/linux/zorro.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* linux/zorro.h -- Amiga AutoConfig (Zorro) Bus Definitions
*
diff --git a/include/uapi/linux/zorro_ids.h b/include/uapi/linux/zorro_ids.h
index 74bc53bcfdcf..6e574d7b7d79 100644
--- a/include/uapi/linux/zorro_ids.h
+++ b/include/uapi/linux/zorro_ids.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Zorro board IDs
*
diff --git a/include/uapi/misc/cxl.h b/include/uapi/misc/cxl.h
index 180d526a55c3..49e8fd08855a 100644
--- a/include/uapi/misc/cxl.h
+++ b/include/uapi/misc/cxl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright 2014 IBM Corp.
*
diff --git a/include/uapi/mtd/inftl-user.h b/include/uapi/mtd/inftl-user.h
index 8376bd1a9e01..8d5044e32e53 100644
--- a/include/uapi/mtd/inftl-user.h
+++ b/include/uapi/mtd/inftl-user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Parts of INFTL headers shared with userspace
*
diff --git a/include/uapi/mtd/mtd-abi.h b/include/uapi/mtd/mtd-abi.h
index 0ec1da2ef652..aff5b5e59845 100644
--- a/include/uapi/mtd/mtd-abi.h
+++ b/include/uapi/mtd/mtd-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org> et al.
*
diff --git a/include/uapi/mtd/mtd-user.h b/include/uapi/mtd/mtd-user.h
index e71d5558cc23..7eca1b3f6b43 100644
--- a/include/uapi/mtd/mtd-user.h
+++ b/include/uapi/mtd/mtd-user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org>
*
diff --git a/include/uapi/mtd/nftl-user.h b/include/uapi/mtd/nftl-user.h
index bdeabd86ad99..b23bdc91c9f1 100644
--- a/include/uapi/mtd/nftl-user.h
+++ b/include/uapi/mtd/nftl-user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org>
*
diff --git a/include/uapi/mtd/ubi-user.h b/include/uapi/mtd/ubi-user.h
index 1927b0d78a99..5b04a494d139 100644
--- a/include/uapi/mtd/ubi-user.h
+++ b/include/uapi/mtd/ubi-user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright © International Business Machines Corp., 2006
*
diff --git a/include/uapi/rdma/bnxt_re-abi.h b/include/uapi/rdma/bnxt_re-abi.h
index 74018bd18d72..398a514ee446 100644
--- a/include/uapi/rdma/bnxt_re-abi.h
+++ b/include/uapi/rdma/bnxt_re-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Broadcom NetXtreme-E RoCE driver.
*
diff --git a/include/uapi/rdma/cxgb3-abi.h b/include/uapi/rdma/cxgb3-abi.h
index d24eee12128f..d5745e43ae85 100644
--- a/include/uapi/rdma/cxgb3-abi.h
+++ b/include/uapi/rdma/cxgb3-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2006 Chelsio, Inc. All rights reserved.
*
diff --git a/include/uapi/rdma/cxgb4-abi.h b/include/uapi/rdma/cxgb4-abi.h
index 472b15990894..05f71f1bc119 100644
--- a/include/uapi/rdma/cxgb4-abi.h
+++ b/include/uapi/rdma/cxgb4-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2009-2010 Chelsio, Inc. All rights reserved.
*
diff --git a/include/uapi/rdma/hfi/hfi1_ioctl.h b/include/uapi/rdma/hfi/hfi1_ioctl.h
index 4791cc8cb09b..9de78c5ee913 100644
--- a/include/uapi/rdma/hfi/hfi1_ioctl.h
+++ b/include/uapi/rdma/hfi/hfi1_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
*
* This file is provided under a dual BSD/GPLv2 license. When using or
diff --git a/include/uapi/rdma/hfi/hfi1_user.h b/include/uapi/rdma/hfi/hfi1_user.h
index 3f4ee93ae5eb..791bea2f8297 100644
--- a/include/uapi/rdma/hfi/hfi1_user.h
+++ b/include/uapi/rdma/hfi/hfi1_user.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/*
*
* This file is provided under a dual BSD/GPLv2 license. When using or
diff --git a/include/uapi/rdma/hns-abi.h b/include/uapi/rdma/hns-abi.h
index 5d7401963e35..a9c03b0eed57 100644
--- a/include/uapi/rdma/hns-abi.h
+++ b/include/uapi/rdma/hns-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2016 Hisilicon Limited.
*
diff --git a/include/uapi/rdma/ib_user_cm.h b/include/uapi/rdma/ib_user_cm.h
index f79014aa28f9..f4041bdc4d08 100644
--- a/include/uapi/rdma/ib_user_cm.h
+++ b/include/uapi/rdma/ib_user_cm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2005 Topspin Communications. All rights reserved.
* Copyright (c) 2005 Intel Corporation. All rights reserved.
diff --git a/include/uapi/rdma/ib_user_mad.h b/include/uapi/rdma/ib_user_mad.h
index 5c7abd859e0f..330a3c5f1aa8 100644
--- a/include/uapi/rdma/ib_user_mad.h
+++ b/include/uapi/rdma/ib_user_mad.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2004 Topspin Communications. All rights reserved.
* Copyright (c) 2005 Voltaire, Inc. All rights reserved.
diff --git a/include/uapi/rdma/ib_user_sa.h b/include/uapi/rdma/ib_user_sa.h
index cfc7c9ba781e..0d2607f0cd20 100644
--- a/include/uapi/rdma/ib_user_sa.h
+++ b/include/uapi/rdma/ib_user_sa.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2005 Intel Corporation. All rights reserved.
*
diff --git a/include/uapi/rdma/ib_user_verbs.h b/include/uapi/rdma/ib_user_verbs.h
index 9a0b6479fe0c..e0e83a105953 100644
--- a/include/uapi/rdma/ib_user_verbs.h
+++ b/include/uapi/rdma/ib_user_verbs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2005 Topspin Communications. All rights reserved.
* Copyright (c) 2005, 2006 Cisco Systems. All rights reserved.
@@ -261,7 +262,7 @@ struct ib_uverbs_ex_query_device_resp {
struct ib_uverbs_rss_caps rss_caps;
__u32 max_wq_type_rq;
__u32 raw_packet_caps;
- struct ib_uverbs_tm_caps xrq_caps;
+ struct ib_uverbs_tm_caps tm_caps;
};
struct ib_uverbs_query_port {
diff --git a/include/uapi/rdma/mlx4-abi.h b/include/uapi/rdma/mlx4-abi.h
index c55f60e05f86..224b52b6279c 100644
--- a/include/uapi/rdma/mlx4-abi.h
+++ b/include/uapi/rdma/mlx4-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2007, 2008 Mellanox Technologies. All rights reserved.
diff --git a/include/uapi/rdma/mlx5-abi.h b/include/uapi/rdma/mlx5-abi.h
index 1791bf123ba9..23dba2d40907 100644
--- a/include/uapi/rdma/mlx5-abi.h
+++ b/include/uapi/rdma/mlx5-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
*
diff --git a/include/uapi/rdma/mthca-abi.h b/include/uapi/rdma/mthca-abi.h
index bcbf4ff2f6d1..3020d8a907a7 100644
--- a/include/uapi/rdma/mthca-abi.h
+++ b/include/uapi/rdma/mthca-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2005 Topspin Communications. All rights reserved.
* Copyright (c) 2005, 2006 Cisco Systems. All rights reserved.
diff --git a/include/uapi/rdma/nes-abi.h b/include/uapi/rdma/nes-abi.h
index 6eb3734394a2..f5b2437aab28 100644
--- a/include/uapi/rdma/nes-abi.h
+++ b/include/uapi/rdma/nes-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2006 - 2011 Intel Corporation. All rights reserved.
* Copyright (c) 2005 Topspin Communications. All rights reserved.
diff --git a/include/uapi/rdma/ocrdma-abi.h b/include/uapi/rdma/ocrdma-abi.h
index 9f28191bef4d..ad64a3cea1cd 100644
--- a/include/uapi/rdma/ocrdma-abi.h
+++ b/include/uapi/rdma/ocrdma-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/* This file is part of the Emulex RoCE Device Driver for
* RoCE (RDMA over Converged Ethernet) adapters.
* Copyright (C) 2012-2015 Emulex. All rights reserved.
diff --git a/include/uapi/rdma/qedr-abi.h b/include/uapi/rdma/qedr-abi.h
index 54b64357ab24..261c6db4623e 100644
--- a/include/uapi/rdma/qedr-abi.h
+++ b/include/uapi/rdma/qedr-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/* QLogic qedr NIC Driver
* Copyright (c) 2015-2016 QLogic Corporation
*
diff --git a/include/uapi/rdma/rdma_netlink.h b/include/uapi/rdma/rdma_netlink.h
index 861440a87e7c..cc002e316d09 100644
--- a/include/uapi/rdma/rdma_netlink.h
+++ b/include/uapi/rdma/rdma_netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_RDMA_NETLINK_H
#define _UAPI_RDMA_NETLINK_H
diff --git a/include/uapi/rdma/rdma_user_cm.h b/include/uapi/rdma/rdma_user_cm.h
index d71da36e3cd6..c83ef0026079 100644
--- a/include/uapi/rdma/rdma_user_cm.h
+++ b/include/uapi/rdma/rdma_user_cm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2005-2006 Intel Corporation. All rights reserved.
*
diff --git a/include/uapi/rdma/rdma_user_ioctl.h b/include/uapi/rdma/rdma_user_ioctl.h
index 165a27e969d5..03557b5f9aa6 100644
--- a/include/uapi/rdma/rdma_user_ioctl.h
+++ b/include/uapi/rdma/rdma_user_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2016 Mellanox Technologies, LTD. All rights reserved.
*
diff --git a/include/uapi/rdma/rdma_user_rxe.h b/include/uapi/rdma/rdma_user_rxe.h
index 1de99cfdaf7d..bdeea948b2f3 100644
--- a/include/uapi/rdma/rdma_user_rxe.h
+++ b/include/uapi/rdma/rdma_user_rxe.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
*
diff --git a/include/uapi/rdma/vmw_pvrdma-abi.h b/include/uapi/rdma/vmw_pvrdma-abi.h
index c6569b0032ec..912ea1556a0b 100644
--- a/include/uapi/rdma/vmw_pvrdma-abi.h
+++ b/include/uapi/rdma/vmw_pvrdma-abi.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
/*
* Copyright (c) 2012-2016 VMware, Inc. All rights reserved.
*
diff --git a/include/uapi/scsi/cxlflash_ioctl.h b/include/uapi/scsi/cxlflash_ioctl.h
index 48d107e75cf2..513da47aa5ab 100644
--- a/include/uapi/scsi/cxlflash_ioctl.h
+++ b/include/uapi/scsi/cxlflash_ioctl.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* CXL Flash Device Driver
*
diff --git a/include/uapi/scsi/fc/fc_els.h b/include/uapi/scsi/fc/fc_els.h
index 481abbd48e39..b7e0a5ed40de 100644
--- a/include/uapi/scsi/fc/fc_els.h
+++ b/include/uapi/scsi/fc/fc_els.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright(c) 2007 Intel Corporation. All rights reserved.
*
diff --git a/include/uapi/scsi/fc/fc_fs.h b/include/uapi/scsi/fc/fc_fs.h
index dcf314dc2a27..8c0a292a61ed 100644
--- a/include/uapi/scsi/fc/fc_fs.h
+++ b/include/uapi/scsi/fc/fc_fs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright(c) 2007 Intel Corporation. All rights reserved.
*
diff --git a/include/uapi/scsi/fc/fc_gs.h b/include/uapi/scsi/fc/fc_gs.h
index a37346d47eb1..2153f3524555 100644
--- a/include/uapi/scsi/fc/fc_gs.h
+++ b/include/uapi/scsi/fc/fc_gs.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright(c) 2007 Intel Corporation. All rights reserved.
*
diff --git a/include/uapi/scsi/fc/fc_ns.h b/include/uapi/scsi/fc/fc_ns.h
index f7751d53f1d3..015e5e1ce8f1 100644
--- a/include/uapi/scsi/fc/fc_ns.h
+++ b/include/uapi/scsi/fc/fc_ns.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright(c) 2007 Intel Corporation. All rights reserved.
*
diff --git a/include/uapi/scsi/scsi_bsg_fc.h b/include/uapi/scsi/scsi_bsg_fc.h
index 3031b900b087..62597d86beed 100644
--- a/include/uapi/scsi/scsi_bsg_fc.h
+++ b/include/uapi/scsi/scsi_bsg_fc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* FC Transport BSG Interface
*
diff --git a/include/uapi/scsi/scsi_netlink.h b/include/uapi/scsi/scsi_netlink.h
index 62b4edab15d3..5ccc2333acab 100644
--- a/include/uapi/scsi/scsi_netlink.h
+++ b/include/uapi/scsi/scsi_netlink.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* SCSI Transport Netlink Interface
* Used for the posting of outbound SCSI transport events
diff --git a/include/uapi/scsi/scsi_netlink_fc.h b/include/uapi/scsi/scsi_netlink_fc.h
index cbf76e479761..060f563c38a2 100644
--- a/include/uapi/scsi/scsi_netlink_fc.h
+++ b/include/uapi/scsi/scsi_netlink_fc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* FC Transport Netlink Interface
*
diff --git a/include/uapi/sound/asequencer.h b/include/uapi/sound/asequencer.h
index 7b7659a79ac4..a75e14edc957 100644
--- a/include/uapi/sound/asequencer.h
+++ b/include/uapi/sound/asequencer.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Main header file for the ALSA sequencer
* Copyright (c) 1998-1999 by Frank van de Pol <fvdpol@coil.demon.nl>
diff --git a/include/uapi/sound/asoc.h b/include/uapi/sound/asoc.h
index 78014ec56357..69c37ecbff7e 100644
--- a/include/uapi/sound/asoc.h
+++ b/include/uapi/sound/asoc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* uapi/sound/asoc.h -- ALSA SoC Firmware Controls and DAPM
*
diff --git a/include/uapi/sound/asound.h b/include/uapi/sound/asound.h
index 1949923a40bf..299a822d2c4e 100644
--- a/include/uapi/sound/asound.h
+++ b/include/uapi/sound/asound.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Advanced Linux Sound Architecture - ALSA - Driver
* Copyright (c) 1994-2003 by Jaroslav Kysela <perex@perex.cz>,
diff --git a/include/uapi/sound/asound_fm.h b/include/uapi/sound/asound_fm.h
index c2a4b967d5be..8471f404ff0b 100644
--- a/include/uapi/sound/asound_fm.h
+++ b/include/uapi/sound/asound_fm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef __SOUND_ASOUND_FM_H
#define __SOUND_ASOUND_FM_H
diff --git a/include/uapi/sound/compress_offload.h b/include/uapi/sound/compress_offload.h
index e00d8cbfc628..56d95673ce0f 100644
--- a/include/uapi/sound/compress_offload.h
+++ b/include/uapi/sound/compress_offload.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* compress_offload.h - compress offload header definations
*
diff --git a/include/uapi/sound/compress_params.h b/include/uapi/sound/compress_params.h
index 9625484a4a2a..3d4d6de66a17 100644
--- a/include/uapi/sound/compress_params.h
+++ b/include/uapi/sound/compress_params.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) AND MIT) */
/*
* compress_params.h - codec types and parameters for compressed data
* streaming interface
diff --git a/include/uapi/sound/emu10k1.h b/include/uapi/sound/emu10k1.h
index 5175e166987d..042c5a6f16ee 100644
--- a/include/uapi/sound/emu10k1.h
+++ b/include/uapi/sound/emu10k1.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) by Jaroslav Kysela <perex@perex.cz>,
* Creative Labs, Inc.
diff --git a/include/uapi/sound/firewire.h b/include/uapi/sound/firewire.h
index 622900488bdc..f0a547d86679 100644
--- a/include/uapi/sound/firewire.h
+++ b/include/uapi/sound/firewire.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_SOUND_FIREWIRE_H_INCLUDED
#define _UAPI_SOUND_FIREWIRE_H_INCLUDED
diff --git a/include/uapi/sound/hdsp.h b/include/uapi/sound/hdsp.h
index 0909a3843479..5dc0c3db0a4c 100644
--- a/include/uapi/sound/hdsp.h
+++ b/include/uapi/sound/hdsp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef __SOUND_HDSP_H
#define __SOUND_HDSP_H
diff --git a/include/uapi/sound/hdspm.h b/include/uapi/sound/hdspm.h
index c4db6f5b306e..a38f3f79beb7 100644
--- a/include/uapi/sound/hdspm.h
+++ b/include/uapi/sound/hdspm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef __SOUND_HDSPM_H
#define __SOUND_HDSPM_H
/*
diff --git a/include/uapi/sound/sb16_csp.h b/include/uapi/sound/sb16_csp.h
index 3b96907e2afb..e64851481d88 100644
--- a/include/uapi/sound/sb16_csp.h
+++ b/include/uapi/sound/sb16_csp.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (c) 1999 by Uros Bizjak <uros@kss-loka.si>
* Takashi Iwai <tiwai@suse.de>
diff --git a/include/uapi/sound/sfnt_info.h b/include/uapi/sound/sfnt_info.h
index 1bce7fd1725f..c9a810a6ef48 100644
--- a/include/uapi/sound/sfnt_info.h
+++ b/include/uapi/sound/sfnt_info.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef __SOUND_SFNT_INFO_H
#define __SOUND_SFNT_INFO_H
diff --git a/include/uapi/sound/snd_sst_tokens.h b/include/uapi/sound/snd_sst_tokens.h
index f691e421f5e8..326054a72bc7 100644
--- a/include/uapi/sound/snd_sst_tokens.h
+++ b/include/uapi/sound/snd_sst_tokens.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* snd_sst_tokens.h - Intel SST tokens definition
*
diff --git a/include/uapi/sound/tlv.h b/include/uapi/sound/tlv.h
index b4df440c015b..be5371f09a62 100644
--- a/include/uapi/sound/tlv.h
+++ b/include/uapi/sound/tlv.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/include/uapi/sound/usb_stream.h b/include/uapi/sound/usb_stream.h
index cfe8fba00714..95419d8bbc16 100644
--- a/include/uapi/sound/usb_stream.h
+++ b/include/uapi/sound/usb_stream.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Copyright (C) 2007, 2008 Karsten Wiese <fzu@wemgehoertderstaat.de>
*
diff --git a/include/uapi/video/edid.h b/include/uapi/video/edid.h
index 8c0f032014c9..c6030dc10d6b 100644
--- a/include/uapi/video/edid.h
+++ b/include/uapi/video/edid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__linux_video_edid_h__
#define _UAPI__linux_video_edid_h__
diff --git a/include/uapi/video/sisfb.h b/include/uapi/video/sisfb.h
index 9250b22b10f8..f1e811951288 100644
--- a/include/uapi/video/sisfb.h
+++ b/include/uapi/video/sisfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* sisfb.h - definitions for the SiS framebuffer driver
*
diff --git a/include/uapi/video/uvesafb.h b/include/uapi/video/uvesafb.h
index cee063d723ad..a0d5c9213e92 100644
--- a/include/uapi/video/uvesafb.h
+++ b/include/uapi/video/uvesafb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_UVESAFB_H
#define _UAPI_UVESAFB_H
diff --git a/include/uapi/xen/evtchn.h b/include/uapi/xen/evtchn.h
index cb4aa4bb905e..7fbf732f168f 100644
--- a/include/uapi/xen/evtchn.h
+++ b/include/uapi/xen/evtchn.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR MIT) */
/******************************************************************************
* evtchn.h
*
diff --git a/include/uapi/xen/gntdev.h b/include/uapi/xen/gntdev.h
index d0661977667e..6d1163456c03 100644
--- a/include/uapi/xen/gntdev.h
+++ b/include/uapi/xen/gntdev.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR MIT) */
/******************************************************************************
* gntdev.h
*
diff --git a/include/uapi/xen/privcmd.h b/include/uapi/xen/privcmd.h
index 63ee95c9dabb..39d3e7b8e993 100644
--- a/include/uapi/xen/privcmd.h
+++ b/include/uapi/xen/privcmd.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR MIT) */
/******************************************************************************
* privcmd.h
*
diff --git a/include/video/aty128.h b/include/video/aty128.h
index f0851e3bb7cc..cb6721ebfd34 100644
--- a/include/video/aty128.h
+++ b/include/video/aty128.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: aty128.h,v 1.1 1999/10/12 11:00:40 geert Exp $
* linux/drivers/video/aty128.h
* Register definitions for ATI Rage128 boards
diff --git a/include/video/edid.h b/include/video/edid.h
index 0cb8b2a92b75..f614371e9116 100644
--- a/include/video/edid.h
+++ b/include/video/edid.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __linux_video_edid_h__
#define __linux_video_edid_h__
diff --git a/include/video/iga.h b/include/video/iga.h
index 5a48f16578f8..83ca18492e00 100644
--- a/include/video/iga.h
+++ b/include/video/iga.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: iga.h,v 1.2 1999/09/11 22:56:31 zaitcev Exp $
* iga1682.h: Sparc/PCI iga1682 driver constants etc.
*
diff --git a/include/video/mbxfb.h b/include/video/mbxfb.h
index ea18961fc5e7..35921cb6d1e5 100644
--- a/include/video/mbxfb.h
+++ b/include/video/mbxfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MBX_FB_H
#define __MBX_FB_H
diff --git a/include/video/newport.h b/include/video/newport.h
index de980a3b60c9..bcbb3d1b6bf9 100644
--- a/include/video/newport.h
+++ b/include/video/newport.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* $Id: newport.h,v 1.5 1999/08/04 06:01:51 ulfc Exp $
*
* newport.h: Defines and register layout for NEWPORT graphics
diff --git a/include/video/radeon.h b/include/video/radeon.h
index 56b188abfb54..005eae19ec09 100644
--- a/include/video/radeon.h
+++ b/include/video/radeon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RADEON_H
#define _RADEON_H
diff --git a/include/video/sh_mobile_lcdc.h b/include/video/sh_mobile_lcdc.h
index 2605fa8adb9c..f706b0fed399 100644
--- a/include/video/sh_mobile_lcdc.h
+++ b/include/video/sh_mobile_lcdc.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_MOBILE_LCDC_H__
#define __ASM_SH_MOBILE_LCDC_H__
diff --git a/include/video/sh_mobile_meram.h b/include/video/sh_mobile_meram.h
index 062e6e7f955c..f4efc21e205d 100644
--- a/include/video/sh_mobile_meram.h
+++ b/include/video/sh_mobile_meram.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __VIDEO_SH_MOBILE_MERAM_H__
#define __VIDEO_SH_MOBILE_MERAM_H__
diff --git a/include/video/sstfb.h b/include/video/sstfb.h
index c449eace12cd..28384f354773 100644
--- a/include/video/sstfb.h
+++ b/include/video/sstfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/*
* linux/drivers/video/sstfb.h -- voodoo graphics frame buffer
*
diff --git a/include/video/tdfx.h b/include/video/tdfx.h
index 69674b94bb68..6144633acc47 100644
--- a/include/video/tdfx.h
+++ b/include/video/tdfx.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _TDFX_H
#define _TDFX_H
diff --git a/include/video/trident.h b/include/video/trident.h
index b6ce19d1b61b..5ccc0d6a070c 100644
--- a/include/video/trident.h
+++ b/include/video/trident.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef TRIDENTFB_DEBUG
#define TRIDENTFB_DEBUG 0
diff --git a/include/video/udlfb.h b/include/video/udlfb.h
index 3ea90aea5617..1252a7a89bc0 100644
--- a/include/video/udlfb.h
+++ b/include/video/udlfb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef UDLFB_H
#define UDLFB_H
diff --git a/include/video/uvesafb.h b/include/video/uvesafb.h
index 30f53625415c..8d2a3bfc8dac 100644
--- a/include/video/uvesafb.h
+++ b/include/video/uvesafb.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _UVESAFB_H
#define _UVESAFB_H
diff --git a/include/xen/arm/hypervisor.h b/include/xen/arm/hypervisor.h
index 44b587b49904..2982571f7cc1 100644
--- a/include/xen/arm/hypervisor.h
+++ b/include/xen/arm/hypervisor.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_XEN_HYPERVISOR_H
#define _ASM_ARM_XEN_HYPERVISOR_H
diff --git a/include/xen/arm/interface.h b/include/xen/arm/interface.h
index 75d596862892..c3eada2642aa 100644
--- a/include/xen/arm/interface.h
+++ b/include/xen/arm/interface.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/******************************************************************************
* Guest OS interface to ARM Xen.
*
diff --git a/include/xen/arm/page-coherent.h b/include/xen/arm/page-coherent.h
index b1b4ecdf329a..59a260712a56 100644
--- a/include/xen/arm/page-coherent.h
+++ b/include/xen/arm/page-coherent.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_XEN_PAGE_COHERENT_H
#define _ASM_ARM_XEN_PAGE_COHERENT_H
diff --git a/include/xen/arm/page.h b/include/xen/arm/page.h
index 415dbc6e43fd..f77dcbcba5a6 100644
--- a/include/xen/arm/page.h
+++ b/include/xen/arm/page.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_ARM_XEN_PAGE_H
#define _ASM_ARM_XEN_PAGE_H
@@ -84,16 +85,6 @@ static inline xmaddr_t arbitrary_virt_to_machine(void *vaddr)
BUG();
}
-/* TODO: this shouldn't be here but it is because the frontend drivers
- * are using it (its rolled in headers) even though we won't hit the code path.
- * So for right now just punt with this.
- */
-static inline pte_t *lookup_address(unsigned long address, unsigned int *level)
-{
- BUG();
- return NULL;
-}
-
extern int set_foreign_p2m_mapping(struct gnttab_map_grant_ref *map_ops,
struct gnttab_map_grant_ref *kmap_ops,
struct page **pages, unsigned int count);
diff --git a/include/xen/balloon.h b/include/xen/balloon.h
index 8906361bb50c..4914b93a23f2 100644
--- a/include/xen/balloon.h
+++ b/include/xen/balloon.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/******************************************************************************
* Xen balloon functionality
*/
diff --git a/include/xen/events.h b/include/xen/events.h
index f442ca5fcd82..c3e6bc643a7b 100644
--- a/include/xen/events.h
+++ b/include/xen/events.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _XEN_EVENTS_H
#define _XEN_EVENTS_H
diff --git a/include/xen/features.h b/include/xen/features.h
index 27292d4d2a6a..e4cb464386a9 100644
--- a/include/xen/features.h
+++ b/include/xen/features.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/******************************************************************************
* features.h
*
diff --git a/include/xen/hvc-console.h b/include/xen/hvc-console.h
index b62dfef15f61..d8949d5e227d 100644
--- a/include/xen/hvc-console.h
+++ b/include/xen/hvc-console.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef XEN_HVC_CONSOLE_H
#define XEN_HVC_CONSOLE_H
diff --git a/include/xen/hvm.h b/include/xen/hvm.h
index 63917a8de3b0..0b15f8cb17fc 100644
--- a/include/xen/hvm.h
+++ b/include/xen/hvm.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
/* Simple wrappers around HVM functions */
#ifndef XEN_HVM_H__
#define XEN_HVM_H__
diff --git a/include/xen/interface/event_channel.h b/include/xen/interface/event_channel.h
index 7e6acef5415b..45650c9a06d5 100644
--- a/include/xen/interface/event_channel.h
+++ b/